vips-8.2.2/0000775000175000017500000000000012651721507007515 500000000000000vips-8.2.2/aclocal.m40000664000175000017500000135275212651721154011312 00000000000000# generated automatically by aclocal 1.15 -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 1995-2002 Free Software Foundation, Inc. # Copyright (C) 2001-2003,2004 Red Hat, Inc. # # This file is free software, distributed under the terms of the GNU # General Public License. As a special exception to the GNU General # Public License, this file may be distributed as part of a program # that contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # # Macro to add for using GNU gettext. # Ulrich Drepper , 1995, 1996 # # Modified to never use included libintl. # Owen Taylor , 12/15/1998 # # Major rework to remove unused code # Owen Taylor , 12/11/2002 # # Added better handling of ALL_LINGUAS from GNU gettext version # written by Bruno Haible, Owen Taylor 5/30/3002 # # Modified to require ngettext # Matthias Clasen 08/06/2004 # # We need this here as well, since someone might use autoconf-2.5x # to configure GLib then an older version to configure a package # using AM_GLIB_GNU_GETTEXT AC_PREREQ(2.53) dnl dnl We go to great lengths to make sure that aclocal won't dnl try to pull in the installed version of these macros dnl when running aclocal in the glib directory. dnl m4_copy([AC_DEFUN],[glib_DEFUN]) m4_copy([AC_REQUIRE],[glib_REQUIRE]) dnl dnl At the end, if we're not within glib, we'll define the public dnl definitions in terms of our private definitions. dnl # GLIB_LC_MESSAGES #-------------------- glib_DEFUN([GLIB_LC_MESSAGES], [AC_CHECK_HEADERS([locale.h]) if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi fi]) # GLIB_PATH_PROG_WITH_TEST #---------------------------- dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) glib_DEFUN([GLIB_PATH_PROG_WITH_TEST], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # GLIB_WITH_NLS #----------------- glib_DEFUN([GLIB_WITH_NLS], dnl NLS is obligatory [USE_NLS=yes AC_SUBST(USE_NLS) gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= AC_CHECK_HEADER(libintl.h, [gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, [AC_TRY_LINK([ #include ], [return !ngettext ("","", 1)], gt_cv_func_ngettext_libc=yes, gt_cv_func_ngettext_libc=no) ]) if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, [AC_TRY_LINK([ #include ], [return !dgettext ("","")], gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no) ]) fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CHECK_FUNCS(bind_textdomain_codeset) fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then AC_CHECK_LIB(intl, bindtextdomain, [AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dgettext, gt_cv_func_dgettext_libintl=yes)])]) if test "$gt_cv_func_dgettext_libintl" != "yes" ; then AC_MSG_CHECKING([if -liconv is needed to use gettext]) AC_MSG_RESULT([]) AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dcgettext, [gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv], :,-liconv)], :,-liconv) fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset AC_CHECK_FUNCS(bind_textdomain_codeset) LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then AC_DEFINE(HAVE_GETTEXT,1, [Define if the GNU gettext() function is already present or preinstalled.]) GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" AC_CHECK_FUNCS(dcgettext) MSGFMT_OPTS= AC_MSG_CHECKING([if msgfmt accepts -c]) GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" ], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) AC_SUBST(MSGFMT_OPTS) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr], [CATOBJEXT=.gmo DATADIRNAME=share], [case $host in *-*-solaris*) dnl On Solaris, if bind_textdomain_codeset is in libc, dnl GNU format message catalog is always supported, dnl since both are added to the libc all together. dnl Hence, we'd like to go with DATADIRNAME=share and dnl and CATOBJEXT=.gmo in this case. AC_CHECK_FUNC(bind_textdomain_codeset, [CATOBJEXT=.gmo DATADIRNAME=share], [CATOBJEXT=.mo DATADIRNAME=lib]) ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac]) LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi ]) if test "$gt_cv_have_gettext" = "yes" ; then AC_DEFINE(ENABLE_NLS, 1, [always defined to indicate that i18n is enabled]) fi dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is not GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po AC_OUTPUT_COMMANDS( [case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac]) dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs dnl in configure.ac. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done dnl Make all variables we use known to autoconf. AC_SUBST(CATALOGS) AC_SUBST(CATOBJEXT) AC_SUBST(DATADIRNAME) AC_SUBST(GMOFILES) AC_SUBST(INSTOBJEXT) AC_SUBST(INTLLIBS) AC_SUBST(PO_IN_DATADIR_TRUE) AC_SUBST(PO_IN_DATADIR_FALSE) AC_SUBST(POFILES) AC_SUBST(POSUB) ]) # AM_GLIB_GNU_GETTEXT # ------------------- # Do checks necessary for use of gettext. If a suitable implementation # of gettext is found in either in libintl or in the C library, # it will set INTLLIBS to the libraries needed for use of gettext # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() # on various variables needed by the Makefile.in.in installed by # glib-gettextize. dnl glib_DEFUN([GLIB_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_CC])dnl GLIB_LC_MESSAGES GLIB_WITH_NLS if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS AC_MSG_RESULT($LINGUAS) fi dnl Construct list of names of catalog files to be constructed. if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but ($top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) dnl Generate list of files to be processed by xgettext which will dnl be included in po/Makefile. test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ]) # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) # ------------------------------- # Define VARIABLE to the location where catalog files will # be installed by po/Makefile. glib_DEFUN([GLIB_DEFINE_LOCALEDIR], [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl glib_save_prefix="$prefix" glib_save_exec_prefix="$exec_prefix" glib_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` if test "x$CATOBJEXT" = "x.mo" ; then localedir=`eval echo "${libdir}/locale"` else localedir=`eval echo "${datadir}/locale"` fi prefix="$glib_save_prefix" exec_prefix="$glib_save_exec_prefix" datarootdir="$glib_save_datarootdir" AC_DEFINE_UNQUOTED($1, "$localedir", [Define the location where the catalogs will be installed]) ]) dnl dnl Now the definitions that aclocal will find dnl ifdef(glib_configure_ac,[],[ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl # GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL]) # # Create a temporary file with TEST-FILE as its contents and pass the # file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with # 0 and perform ACTION-IF-FAIL for any other exit status. AC_DEFUN([GLIB_RUN_PROG], [cat >conftest.foo <<_ACEOF $2 _ACEOF if AC_RUN_LOG([$1 conftest.foo]); then m4_ifval([$3], [$3], [:]) m4_ifvaln([$4], [else $4])dnl echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD fi]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # PKG_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable pkgconfigdir as the location where a module # should install pkg-config .pc files. By default the directory is # $libdir/pkgconfig, but the default can be changed by passing # DIRECTORY. The user can override through the --with-pkgconfigdir # parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_INSTALLDIR # PKG_NOARCH_INSTALLDIR(DIRECTORY) # ------------------------- # Substitutes the variable noarch_pkgconfigdir as the location where a # module should install arch-independent pkg-config .pc files. By # default the directory is $datadir/pkgconfig, but the default can be # changed by passing DIRECTORY. The user can override through the # --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ]) dnl PKG_NOARCH_INSTALLDIR # PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # ------------------------------------------- # Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])# PKG_CHECK_VAR # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([AM_WITH_DMALLOC], [AC_MSG_CHECKING([if malloc debugging is wanted]) AC_ARG_WITH([dmalloc], [AS_HELP_STRING([--with-dmalloc], [use dmalloc, as in http://www.dmalloc.com])], [if test "$withval" = yes; then AC_MSG_RESULT([yes]) AC_DEFINE([WITH_DMALLOC], [1], [Define if using the dmalloc debugging malloc package]) LIBS="$LIBS -ldmalloc" LDFLAGS="$LDFLAGS -g" else AC_MSG_RESULT([no]) fi], [AC_MSG_RESULT([no])]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) AC_ARG_VAR([PYTHON], [the Python interpreter]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version is >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_ERROR([Python interpreter is too old])]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) # Just factor out some code duplication. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': can_use_sysconfig = 0 except ImportError: pass" dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/gtk-doc.m4]) m4_include([m4/introspection.m4]) m4_include([acinclude.m4]) vips-8.2.2/TODO0000664000175000017500000002536412651663124010137 00000000000000- look for FCLIP / FABS use ... VIPS_ABS() on float type - write a shrinker that does two 1D shrinks, vertical and horizontal, with bicubic interpolation should be much quicker than affine + bicubic vips_resize() can use this, for the default path at least - get some brightly coloured spots with nohalo / vsqbs on wobble.ws ... very odd, the interpolation shouldn't change between bands - still not happy about float->int mask conversion in im_vips2mask.c - need to follow up on https://github.com/jcupitt/libvips/issues/347 trying new shrinker, also try resize change, should be fixed - colour needs to split _build() into preprocess / process / postprocess phases in icc_import, for example, we want to check that the supplied profile is compatible with the input image as it will be when unpacked and ready for process_line see vips_image_expected_bands() in icc_transform.c for the current hacky solution - does ruby need to unpack RefString as well? what about C++? - are the mosaic functions calling vips_fastcor()? it must be very slow add vips_fastcor_direct() nope .. it's im_chkpair.c:im_correl() im_extract_area(main) im_extract_area(sub) im_extract_band(main) im_extract_band(sub) im_spcor(sub) im_maxpos(sub) then im__chkpair() runs that 20 times, then loops ... oh dear - perhaps im_maxpos_subpel() / im_minpos_subpel() should be undeprecated, useful with vips_fastcor() - support orientation tag in tiff images see http://www.awaresystems.be/imaging/tiff/tifftags/orientation.html seems to be the same values used for exif jpg uses "exif-ifd0-Orientation", see conversion/autorot.c instead, standardize on "orientation" and give it an int value jpg load and save need to use this in preference to the exif value tiff load and save need to set and recover this value tiff load needs an autorot flag don't touch parse_header() on header-only read, just swap width/height and delete the tag on full image read, use read_jpeg_rotate(), broken out into a separate func see https://github.com/jcupitt/libvips/issues/243 - why can't we do im = Vips.Image.new_from_file(sys.argv[1], access = "sequential") ValueError: invalid literal for int() with base 10: 'sequential' no idea ... this works fine: im.embed(10, 10, 100, 100, extend = "copy") what about im = Vips.Image.jpegload(sys.argv[1], access = "sequential") nope, fails too ... mysterious! - test other cpp arg types input int works input double input enum works input image works input doublevec input imagevec input blob output int output double works output enum output image works output doublevec output imagevec output blob - fix up aconv - rewrite im_conv() etc. as vips_conv(), also the mosaicing functions finally finish --disable-deprecated option - can we use postbuild elsewhere? look at use of "preclose" / "written", etc. - test draw_mask on labq images we probably need to unpack the ink back to double before blending - ink to vec etc must have a way to give a complex constant eg. drawink needs a --ink_imag option with the imaginary components of the ink look for uses of vips__vector_to_ink() and add extra params to other places too, eg. vips_embed(), vips_insert() etc. - vips__ink_to_vector() needs an optional imag return - vips_getpoint() needs an optional imag return - add porter-duff compositing, see https://github.com/jcupitt/ruby-vips/issues/28 - now vips_linear() has uchar output, can we do something with orc? - do restrict on some more packages, we've just done arithmetic so far also resample, colour, some of conversion, create, - maybe avg? but avg doesn't subclass arithmetic, so we can't - for interpolate, we'd need to be able to unroll the vector, so the interpolator would need to be built for the bands / stride / type of the image need new API For this since interpolators currently work for any image - vips_gaussblur() should switch to float prec if given a float image? same for vips_conv()? maybe precision is a dumb thing - support --strip for other writers - vipsthumbnail could shrink-on-load openslide and pyr tiff as well? we have "shrink" for jpegload, move this into the base loader support it for tiff and openslide as well use it from nip2 for zooming? only if the partial flag is set though, we don't want to use it on jpg files - use the webp advanced encoding api to set a write function for webp save to file - use g_log() instead of vips_info()? - quadratic doesn't work for order 3 start to get jaggies on lines --- the 3rd differential isn't being initialised correctly for the sub-region? seems fine vertically, only get errors on horizontal tile boundaries because we step across tiles left to right: y doesn't change, only x does not sure it works for order 2 either, we are seeing interpolation errors on image edges mosaic ====== - balance should use new meta stuff - histogram balance option? resample ======== - check mosaic1, global_balance, similarity etc. use of im__affine how can we move them to im_affinei ? - perspective transform with a matrix ... base it on the Lenz transformer, but partial foreign ======= - magick2vips should spot ICC profiles and attach them as meta - interlaced jpg needs massive memory, we should have two jpg read modes, like png - add more sequential mode readers $ grep -l write_line *.c csv.c matlab.c openexr2vips.c ppm.c radiance.c - foreign docs come up as "VipsForeignSave", annoying, why? - add nifti support http://niftilib.sourceforge.net/ - add matlab write - im_exr2vips can now use c++ api see TODO notes in openexr read (though they all need more openexr C API) consider openexr write - magick should set some header field for n_frames and frame_height? see also analyze - im_csv2vips() could use "-" for filename to mean stdin but then we'd have to read to a malloced buffer of some sort rather than an image, since we might need to grow it during the read, since we couldn't then seek packaging ========= - test _O_TEMPORARY thing on Windows convolution =========== - revisit orc conv use an 8.8 accumulator ... build the scale into the 8.8 coeffs ... no div at the end, just a shift need 8 x 8.8 -> 8.8 for each coeff though - im_conv()/im_morph() could have more than 10 programs? try 20 and see if we still have a speedup make a base class for vector area operations with a matrix with three vfuncs for init / generate code for one element / end and a gslist of programs, use that as the base for morph and conv wait for vipsobject for this - we have aconv and aconvsep test timing, make sure it;s worth having a separate aconvsep version if it is, make im_aconvsep an optimisation: call im_aconvsep_raw() from vips_conv() if mask width or height == 1 and prec == APPROX now we can get rid of im_aconvsep() since it's just vips_convsep() with prec set to approx aconv needs some more work, get it going at least with gaussian arithmetic ========== - HAVE_HYPOT could define a hypot() macro? - fix a better NaN policy should we not generate images containing NaN (eg. divide tries to avoid /0), or should vips_max() etc. try to avoid NaN in images (eg. vips_max() takes a lot a care to skip NaN, though vips_stats() does not)? iofuncs ======= - need vips_image_invalidate_area() - look at libpeas for plugin support http://live.gnome.org/Libpeas - how about vips max add[babe.jpg,babe2.jpg] does that make any sense? vips copy add[babe.jpg,add[babe2.jpg,babe3.jpg]] sum.v perhaps use curly brackets for code? vips max add{babe.jpg,babe2.jpg} no brackets or square brackets for options - transform_g_string_array_image() can't handle quoted strings, so filenames with spaces will break is there an easy fix? can we reuse code from the csv parser? the csv parser just parses FILE* streams, we'd need to break it out - note member free stuff in vipsobject docs should boxed get freed in finalise rather than dispose? vipsobject has few docs atm :( - vips_object_set_argument_from_string() needs more arg types must be some way to make this more automatic - generate the code for vips_add() etc. automatically? it might be nice to have them all in one place at least - what does G_UNLIKELY() do? can we use it? - look into G_GNUC_DEPRECATED for back compat in vips8 - should im_rwcheck() copy to disc? maybe im_rwcheck_disc() copies to im->filename and maps that rather awkward to do atm with the way check.c is structured swig ==== - swig is not wrapping im_project() correctly ... returns an extra VImage via a param - doc strings would be nice, read the SWIG notes on this new bindings ============ - new binding is still missing constants how do boxed types work? confusing we need to be able to make a VipsArrayDouble - Vips.Image has members like chain, __subclasshook__ etc etc, are we really subclassing it correctly? - add __add__ etc overloads freq_filt ========= - fft with odd width or height is broken ... DC ends up in the wrong place libvipsCC ========= - need new C++ API - need an im_init_world() for C++ which does cmd-line args too, so C++ progs can get --vips-progress and stuff automatically tools ===== - need a way to make the vips.1 etc. man pages gtk has things like docs/reference/gtk/gtk-update-icon-cache.xml and man pages are made from that with xslt - get rid of a lot of the command-line programs, who wants to write a man page for batch_image_convert etc yuk - can we make man pages for the API as well? probably not from googling a bit - rename header, edvips as vipsheader, vipsedit maybe have back compat links? new operations ============== - bilateral filtering, see: http://en.wikipedia.org/wiki/Bilateral_filter http://www.shellandslate.com/fastmedian.html http://people.csail.mit.edu/sparis/bf_course/ also a mail from Martin Breidt has links to several fast free C implementations - http://en.wikipedia.org/wiki/Otsu%27s_method - non-linear sharpen: replace each pixel by the lightest or darkest neighbour depending on which is closer in value - look at There is an order 1 algorithm for doing medians over boxes (truly O(1) per pixel: I checked it carefully; it's like doing means over boxes in order 1 per pixel) in OpenCV since February 2012 I think, due to Perreault (and Hebert). It appears to be well respected, at least for 8-bit medians. Very memory intensive. Simple and elegant. No clue if it fits VIPS well (probably not?). Article: nomis80.org/ctmf.pdf - check CMC equations against web http://en.wikipedia.org/wiki/Color_difference#CMC_l:c_.281984.29 - see http://www.dentistry.bham.ac.uk/landinig/software/cdeconv/cdeconv.html sounds useful for BM? vips-8.2.2/cplusplus/0000775000175000017500000000000012651721506011546 500000000000000vips-8.2.2/cplusplus/gen-operators.py0000775000175000017500000001155312644220226014630 00000000000000#!/usr/bin/python # walk vips and generate member definitions for all operators # sample member definition: # VImage VImage::invert( VOption *options ) # { # VImage out; # # call( "invert", # (options ? options : VImage::option())-> # set( "in", *this )-> # set( "out", &out ) ); # # return( out ); # } import sys import re import logging #logging.basicConfig(level = logging.DEBUG) from gi.repository import Vips, GObject vips_type_image = GObject.GType.from_name("VipsImage") vips_type_operation = GObject.GType.from_name("VipsOperation") param_enum = GObject.GType.from_name("GParamEnum") # turn a GType into a C++ type gtype_to_cpp = { "VipsImage" : "VImage", "gint" : "int", "gdouble" : "double", "gboolean" : "bool", "gchararray" : "char *", "VipsArrayDouble" : "std::vector", "VipsArrayImage" : "std::vector", "VipsBlob" : "VipsBlob *" } def get_ctype(prop): # enum params use the C name as their name if GObject.type_is_a(param_enum, prop): return prop.value_type.name return gtype_to_cpp[prop.value_type.name] def find_required(op): required = [] for prop in op.props: flags = op.get_argument_flags(prop.name) if not flags & Vips.ArgumentFlags.REQUIRED: continue if flags & Vips.ArgumentFlags.DEPRECATED: continue required.append(prop) def priority_sort(a, b): pa = op.get_argument_priority(a.name) pb = op.get_argument_priority(b.name) return pa - pb required.sort(priority_sort) return required # find the first input image ... this will be used as "this" def find_first_input_image(op, required): found = False for prop in required: flags = op.get_argument_flags(prop.name) if not flags & Vips.ArgumentFlags.INPUT: continue if GObject.type_is_a(vips_type_image, prop.value_type): found = True break if not found: return None return prop # find the first output arg ... this will be used as the result def find_first_output(op, required): found = False for prop in required: flags = op.get_argument_flags(prop.name) if not flags & Vips.ArgumentFlags.OUTPUT: continue found = True break if not found: return None return prop # swap any "-" for "_" def cppize(name): return re.sub('-', '_', name) def gen_arg_list(op, required): first = True for prop in required: if not first: print ',', else: first = False print get_ctype(prop), # output params are passed by reference flags = op.get_argument_flags(prop.name) if flags & Vips.ArgumentFlags.OUTPUT: print '*', print cppize(prop.name), if not first: print ',', print 'VOption *options', def gen_operation(cls): op = Vips.Operation.new(cls.name) gtype = Vips.type_find("VipsOperation", cls.name) nickname = Vips.nickname_find(gtype) all_required = find_required(op) result = find_first_output(op, all_required) this = find_first_input_image(op, all_required) # shallow copy required = all_required[:] if result != None: required.remove(result) if this != None: required.remove(this) if result == None: print 'void', else: print '%s' % gtype_to_cpp[result.value_type.name], print 'VImage::%s(' % nickname, gen_arg_list(op, required) print ')' print '{' if result != None: print ' %s %s;' % (get_ctype(result), cppize(result.name)) print '' print ' call( "%s"' % nickname, first = True for prop in all_required: if first: print ',' print ' (options ? options : VImage::option())', first = False print '->' print ' ', if prop == this: print 'set( "%s", *this )' % prop.name, else: flags = op.get_argument_flags(prop.name) arg = cppize(prop.name) if flags & Vips.ArgumentFlags.OUTPUT and prop == result: arg = '&' + arg print 'set( "%s", %s )' % (prop.name, arg), print ');' if result != None: print '' print ' return( %s );' % cppize(result.name) print '}' print '' # we have a few synonyms ... don't generate twice generated = {} def find_class_methods(cls): if not cls.is_abstract(): gtype = Vips.type_find("VipsOperation", cls.name) nickname = Vips.nickname_find(gtype) if not nickname in generated: gen_operation(cls) generated[nickname] = True if len(cls.children) > 0: for child in cls.children: find_class_methods(child) if __name__ == '__main__': find_class_methods(vips_type_operation) vips-8.2.2/cplusplus/README0000664000175000017500000000021012530402247012331 00000000000000This is the vips8 C++ binding. The old vips7 binding is still there, but this one is better. See the vips API docs for documentation. vips-8.2.2/cplusplus/VError.cpp0000664000175000017500000000240612644516112013410 00000000000000// Code for error type /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include VIPS_NAMESPACE_START std::ostream &operator<<( std::ostream &file, const VError &err ) { err.ostream_print( file ); return( file ); } void VError::ostream_print( std::ostream &file ) const { file << _what; } VIPS_NAMESPACE_END vips-8.2.2/cplusplus/VInterpolate.cpp0000664000175000017500000000327412644220226014607 00000000000000/* Object part of VInterpolate class */ /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* #define VIPS_DEBUG #define VIPS_DEBUG_VERBOSE */ VIPS_NAMESPACE_START VInterpolate VInterpolate::new_from_name( const char *name, VOption *options ) { VipsInterpolate *interp; if( !(interp = vips_interpolate_new( name )) ) { delete options; throw VError(); } delete options; VInterpolate out( interp ); return( out ); } VOption * VOption::set( const char *name, VInterpolate value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, VIPS_TYPE_INTERPOLATE ); g_value_set_object( &pair->value, value.get_interpolate() ); options.push_back( pair ); return( this ); } VIPS_NAMESPACE_END vips-8.2.2/cplusplus/VImage.cpp0000664000175000017500000003627612645230552013357 00000000000000/* Object part of VImage class * * 30/12/14 * - allow set enum value from string */ /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* #define VIPS_DEBUG #define VIPS_DEBUG_VERBOSE */ VIPS_NAMESPACE_START std::vector to_vectorv( int n, ... ) { std::vector vector( n ); va_list ap; va_start( ap, n ); for( int i = 0; i < n; i++ ) vector[i] = va_arg( ap, double ); va_end( ap ); return( vector ); } std::vector to_vector( double value ) { return( to_vectorv( 1, value ) ); } std::vector to_vector( int n, double array[] ) { std::vector vector( n ); for( int i = 0; i < n; i++ ) vector[i] = array[i]; return( vector ); } std::vector negate( std::vector vector ) { std::vector new_vector( vector.size() ); for( unsigned int i = 0; i < vector.size(); i++ ) new_vector[i] = vector[i] * -1; return( new_vector ); } std::vector invert( std::vector vector ) { std::vector new_vector( vector.size() ); for( unsigned int i = 0; i < vector.size(); i++ ) new_vector[i] = 1.0 / vector[i]; return( new_vector ); } VOption::~VOption() { std::list::iterator i; for( i = options.begin(); i != options.end(); ++i ) delete *i; } // input bool VOption * VOption::set( const char *name, bool value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, G_TYPE_BOOLEAN ); g_value_set_boolean( &pair->value, value ); options.push_back( pair ); return( this ); } // input int ... this path is used for enums as well VOption * VOption::set( const char *name, int value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, G_TYPE_INT ); g_value_set_int( &pair->value, value ); options.push_back( pair ); return( this ); } // input double VOption * VOption::set( const char *name, double value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, G_TYPE_DOUBLE ); g_value_set_double( &pair->value, value ); options.push_back( pair ); return( this ); } VOption * VOption::set( const char *name, const char *value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, G_TYPE_STRING ); g_value_set_string( &pair->value, value ); options.push_back( pair ); return( this ); } // input image VOption * VOption::set( const char *name, VImage value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, VIPS_TYPE_IMAGE ); g_value_set_object( &pair->value, value.get_image() ); options.push_back( pair ); return( this ); } // input double array VOption * VOption::set( const char *name, std::vector value ) { Pair *pair = new Pair( name ); double *array; unsigned int i; pair->input = true; g_value_init( &pair->value, VIPS_TYPE_ARRAY_DOUBLE ); vips_value_set_array_double( &pair->value, NULL, static_cast< int >( value.size() ) ); array = vips_value_get_array_double( &pair->value, NULL ); for( i = 0; i < value.size(); i++ ) array[i] = value[i]; options.push_back( pair ); return( this ); } // input image array VOption * VOption::set( const char *name, std::vector value ) { Pair *pair = new Pair( name ); VipsImage **array; unsigned int i; pair->input = true; g_value_init( &pair->value, VIPS_TYPE_ARRAY_IMAGE ); vips_value_set_array_image( &pair->value, static_cast< int >( value.size() ) ); array = vips_value_get_array_image( &pair->value, NULL ); for( i = 0; i < value.size(); i++ ) { VipsImage *vips_image = value[i].get_image(); array[i] = vips_image; g_object_ref( vips_image ); } options.push_back( pair ); return( this ); } // input blob VOption * VOption::set( const char *name, VipsBlob *value ) { Pair *pair = new Pair( name ); pair->input = true; g_value_init( &pair->value, VIPS_TYPE_BLOB ); g_value_set_boxed( &pair->value, value ); options.push_back( pair ); return( this ); } // output bool VOption * VOption::set( const char *name, bool *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vbool = value; g_value_init( &pair->value, G_TYPE_BOOLEAN ); options.push_back( pair ); return( this ); } // output int VOption * VOption::set( const char *name, int *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vint = value; g_value_init( &pair->value, G_TYPE_INT ); options.push_back( pair ); return( this ); } // output double VOption * VOption::set( const char *name, double *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vdouble = value; g_value_init( &pair->value, G_TYPE_DOUBLE ); options.push_back( pair ); return( this ); } // output image VOption * VOption::set( const char *name, VImage *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vimage = value; g_value_init( &pair->value, VIPS_TYPE_IMAGE ); options.push_back( pair ); return( this ); } // output doublearray VOption * VOption::set( const char *name, std::vector *value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vvector = value; g_value_init( &pair->value, VIPS_TYPE_ARRAY_DOUBLE ); options.push_back( pair ); return( this ); } // output blob VOption * VOption::set( const char *name, VipsBlob **value ) { Pair *pair = new Pair( name ); pair->input = false; pair->vblob = value; g_value_init( &pair->value, VIPS_TYPE_BLOB ); options.push_back( pair ); return( this ); } // just g_object_set_property(), except we allow set enum from string static void set_property( VipsObject *object, const char *name, const GValue *value ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); GType type = G_VALUE_TYPE( value ); GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) { vips_warn( NULL, "%s", vips_error_buffer() ); vips_error_clear(); return; } if( G_IS_PARAM_SPEC_ENUM( pspec ) && type == G_TYPE_STRING ) { GType pspec_type = G_PARAM_SPEC_VALUE_TYPE( pspec ); int enum_value; GValue value2 = { 0 }; if( (enum_value = vips_enum_from_nick( object_class->nickname, pspec_type, g_value_get_string( value ) )) < 0 ) { vips_warn( NULL, "%s", vips_error_buffer() ); vips_error_clear(); return; } g_value_init( &value2, pspec_type ); g_value_set_enum( &value2, enum_value ); g_object_set_property( G_OBJECT( object ), name, &value2 ); g_value_unset( &value2 ); } else g_object_set_property( G_OBJECT( object ), name, value ); } // walk the options and set props on the operation void VOption::set_operation( VipsOperation *operation ) { std::list::iterator i; for( i = options.begin(); i != options.end(); ++i ) if( (*i)->input ) { #ifdef VIPS_DEBUG_VERBOSE printf( "set_operation: " ); vips_object_print_name( VIPS_OBJECT( operation ) ); char *str_value = g_strdup_value_contents( &(*i)->value ); printf( ".%s = %s\n", (*i)->name, str_value ); g_free( str_value ); #endif /*VIPS_DEBUG_VERBOSE*/ set_property( VIPS_OBJECT( operation ), (*i)->name, &(*i)->value ); } } // walk the options and fetch any requested outputs void VOption::get_operation( VipsOperation *operation ) { std::list::iterator i; for( i = options.begin(); i != options.end(); ++i ) if( ! (*i)->input ) { const char *name = (*i)->name; g_object_get_property( G_OBJECT( operation ), name, &(*i)->value ); #ifdef VIPS_DEBUG_VERBOSE printf( "get_operation: " ); vips_object_print_name( VIPS_OBJECT( operation ) ); char *str_value = g_strdup_value_contents( &(*i)->value ); printf( ".%s = %s\n", name, str_value ); g_free( str_value ); #endif /*VIPS_DEBUG_VERBOSE*/ GValue *value = &(*i)->value; GType type = G_VALUE_TYPE( value ); if( type == VIPS_TYPE_IMAGE ) { // rebox object VipsImage *image = VIPS_IMAGE( g_value_get_object( value ) ); *((*i)->vimage) = VImage( image ); } else if( type == G_TYPE_INT ) *((*i)->vint) = g_value_get_int( value ); else if( type == G_TYPE_BOOLEAN ) *((*i)->vbool) = g_value_get_boolean( value ); else if( type == G_TYPE_DOUBLE ) *((*i)->vdouble) = g_value_get_double( value ); else if( type == VIPS_TYPE_ARRAY_DOUBLE ) { int length; double *array = vips_value_get_array_double( value, &length ); int j; ((*i)->vvector)->resize( length ); for( j = 0; j < length; j++ ) (*((*i)->vvector))[j] = array[j]; } else if( type == VIPS_TYPE_BLOB ) { // our caller gets a reference *((*i)->vblob) = (VipsBlob *) g_value_dup_boxed( value ); } } } void VImage::call_option_string( const char *operation_name, const char *option_string, VOption *options ) { VipsOperation *operation; VIPS_DEBUG_MSG( "vips_call_by_name: starting for %s ...\n", operation_name ); if( !(operation = vips_operation_new( operation_name )) ) { if( options ) delete options; throw( VError() ); } /* Set str options before vargs options, so the user can't * override things we set deliberately. */ if( option_string && vips_object_set_from_string( VIPS_OBJECT( operation ), option_string ) ) { vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); delete options; throw( VError() ); } if( options ) options->set_operation( operation ); /* Build from cache. */ if( vips_cache_operation_buildp( &operation ) ) { vips_object_unref_outputs( VIPS_OBJECT( operation ) ); delete options; throw( VError() ); } /* Walk args again, writing output. */ if( options ) options->get_operation( operation ); /* We're done with options! */ delete options; /* The operation we have built should now have been reffed by * one of its arguments or have finished its work. Either * way, we can unref. */ g_object_unref( operation ); } void VImage::call( const char *operation_name, VOption *options ) { call_option_string( operation_name, NULL, options ); } VImage VImage::new_from_file( const char *name, VOption *options ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; VImage out; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_load( filename )) ) { delete options; throw VError(); } call_option_string( operation_name, option_string, (options ? options : VImage::option())-> set( "filename", filename )-> set( "out", &out ) ); return( out ); } VImage VImage::new_from_buffer( void *buf, size_t len, const char *option_string, VOption *options ) { const char *operation_name; VipsBlob *blob; VImage out; if( !(operation_name = vips_foreign_find_load_buffer( buf, len )) ) { delete options; throw( VError() ); } /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); options = (options ? options : VImage::option())-> set( "buffer", blob )-> set( "out", &out ); vips_area_unref( VIPS_AREA( blob ) ); call_option_string( operation_name, option_string, options ); return( out ); } VImage VImage::new_from_image( std::vector pixel ) { VImage onepx = VImage::black( 1, 1, VImage::option()->set( "bands", bands() ) ); onepx = onepx.linear( to_vectorv( 1, 1.0 ), pixel ).cast( format() ); VImage big = onepx.embed( 0, 0, width(), height(), VImage::option()->set( "extend", VIPS_EXTEND_COPY ) ); big = big.copy( VImage::option()-> set( "interpretation", interpretation() )-> set( "xres", xres() )-> set( "yres", yres() )-> set( "xoffset", xres() )-> set( "yoffset", yres() ) ); return( big ); } VImage VImage::new_from_image( double pixel ) { return( new_from_image( to_vectorv( 1, pixel ) ) ); } VImage VImage::new_matrix( int width, int height ) { return( VImage( vips_image_new_matrix( width, height ) ) ); } VImage VImage::new_matrixv( int width, int height, ... ) { VImage matrix = new_matrix( width, height ); VipsImage *vips_matrix = matrix.get_image(); va_list ap; va_start( ap, height ); for( int y = 0; y < height; y++ ) for( int x = 0; x < width; x++ ) *VIPS_MATRIX( vips_matrix, x, y ) = va_arg( ap, double ); va_end( ap ); return( matrix ); } void VImage::write_to_file( const char *name, VOption *options ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_save( filename )) ) { delete options; throw VError(); } call_option_string( operation_name, option_string, (options ? options : VImage::option())-> set( "in", *this )-> set( "filename", filename ) ); } void VImage::write_to_buffer( const char *suffix, void **buf, size_t *size, VOption *options ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; VipsBlob *blob; vips__filename_split8( suffix, filename, option_string ); if( !(operation_name = vips_foreign_find_save_buffer( filename )) ) { delete options; throw VError(); } call_option_string( operation_name, option_string, (options ? options : VImage::option())-> set( "in", *this )-> set( "buffer", &blob ) ); if( blob ) { if( buf ) { *buf = VIPS_AREA( blob )->data; VIPS_AREA( blob )->free_fn = NULL; } if( size ) *size = VIPS_AREA( blob )->length; vips_area_unref( VIPS_AREA( blob ) ); } } #include "vips-operators.cpp" std::vector VImage::bandsplit( VOption *options ) { std::vector b; for( int i = 0; i < bands(); i++ ) b.push_back( extract_band( i ) ); return( b ); } VImage VImage::bandjoin( VImage other, VOption *options ) { VImage v[2] = { *this, other }; std::vector vec( v, v + VIPS_NUMBER( v ) ); return( bandjoin( vec, options ) ); } std::complex VImage::minpos( VOption *options ) { double x, y; (void) min( (options ? options : VImage::option()) -> set( "x", &x ) -> set( "y", &y ) ); return( std::complex( x, y ) ); } std::complex VImage::maxpos( VOption *options ) { double x, y; (void) max( (options ? options : VImage::option()) -> set( "x", &x ) -> set( "y", &y ) ); return( std::complex( x, y ) ); } VIPS_NAMESPACE_END vips-8.2.2/cplusplus/Makefile.am0000664000175000017500000000144612530402247013521 00000000000000SUBDIRS = \ include AM_CPPFLAGS = \ -I$(top_srcdir)/libvips/include \ -I$(top_srcdir)/cplusplus/include \ @VIPS_CFLAGS@ lib_LTLIBRARIES = libvips-cpp.la libvips_cpp_la_SOURCES = \ VImage.cpp \ VInterpolate.cpp \ VError.cpp libvips_cpp_la_LDFLAGS = \ -no-undefined \ -version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ libvips_cpp_la_LIBADD = \ $(top_builddir)/libvips/libvips.la @VIPS_LIBS@ vips-operators.cpp: echo "// bodies for vips operations" > vips-operators.cpp; \ echo -n "// " >> vips-operators.cpp; \ date >> vips-operators.cpp; \ echo "// this file is generated automatically, do not edit!" >> vips-operators.cpp; \ echo "" >> vips-operators.cpp; \ ./gen-operators.py >> vips-operators.cpp EXTRA_DIST = \ README \ vips-operators.cpp \ gen-operators.py vips-8.2.2/cplusplus/include/0000775000175000017500000000000012651721506013171 500000000000000vips-8.2.2/cplusplus/include/vips/0000775000175000017500000000000012651721506014152 500000000000000vips-8.2.2/cplusplus/include/vips/VImage8.h0000664000175000017500000006052112645230552015506 00000000000000// VIPS image wrapper /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VIMAGE_H #define VIPS_VIMAGE_H #include #include #include #include #include VIPS_NAMESPACE_START /* Small utility things. */ VIPS_CPLUSPLUS_API std::vector to_vectorv( int n, ... ); VIPS_CPLUSPLUS_API std::vector to_vector( double value ); VIPS_CPLUSPLUS_API std::vector to_vector( int n, double array[] ); VIPS_CPLUSPLUS_API std::vector negate( std::vector value ); VIPS_CPLUSPLUS_API std::vector invert( std::vector value ); enum VSteal { NOSTEAL = 0, STEAL = 1 }; /* A smart VipsObject pointer class ... use g_object_ref()/_unref() for * lifetime management. */ class VObject { private: // can be NULL, see eg. VObject() VipsObject *vobject; public: VObject( VipsObject *new_vobject, VSteal steal = STEAL ) : vobject( new_vobject ) { // we allow NULL init, eg. "VImage a;" g_assert( !new_vobject || VIPS_IS_OBJECT( new_vobject ) ); #ifdef VIPS_DEBUG_VERBOSE printf( "VObject constructor, obj = %p, steal = %d\n", new_vobject, steal ); if( new_vobject ) { printf( " obj " ); vips_object_print_name( VIPS_OBJECT( new_vobject ) ); printf( "\n" ); } #endif /*VIPS_DEBUG_VERBOSE*/ if( !steal ) { #ifdef VIPS_DEBUG_VERBOSE printf( " reffing object\n" ); #endif /*VIPS_DEBUG_VERBOSE*/ g_object_ref( vobject ); } } VObject() : vobject( 0 ) { } // copy constructor VObject( const VObject &a ) : vobject( a.vobject ) { g_assert( VIPS_IS_OBJECT( a.vobject ) ); #ifdef VIPS_DEBUG_VERBOSE printf( "VObject copy constructor, obj = %p\n", vobject ); printf( " reffing object\n" ); #endif /*VIPS_DEBUG_VERBOSE*/ g_object_ref( vobject ); } // assignment ... we must delete the old ref // old can be NULL, new must not be NULL VObject &operator=( const VObject &a ) { VipsObject *old_vobject; #ifdef VIPS_DEBUG_VERBOSE printf( "VObject assignment\n" ); printf( " reffing %p\n", a.vobject ); printf( " unreffing %p\n", vobject ); #endif /*VIPS_DEBUG_VERBOSE*/ g_assert( !vobject || VIPS_IS_OBJECT( vobject ) ); g_assert( a.vobject && VIPS_IS_OBJECT( a.vobject ) ); // delete the old ref at the end ... otherwise "a = a;" could // unref before reffing again old_vobject = vobject; vobject = a.vobject; g_object_ref( vobject ); if( old_vobject ) g_object_unref( old_vobject ); return( *this ); } // this mustn't be virtual: we want this class to only be a pointer, // no vtable allowed ~VObject() { #ifdef VIPS_DEBUG_VERBOSE printf( "VObject destructor\n" ); printf( " unreffing %p\n", vobject ); #endif /*VIPS_DEBUG_VERBOSE*/ g_assert( !vobject || VIPS_IS_OBJECT( vobject ) ); if( vobject ) g_object_unref( vobject ); } VipsObject *get_object() { g_assert( !vobject || VIPS_IS_OBJECT( vobject ) ); return( vobject ); } }; class VIPS_CPLUSPLUS_API VImage; class VIPS_CPLUSPLUS_API VInterpolate; class VIPS_CPLUSPLUS_API VOption; class VOption { private: struct Pair { const char *name; // the thing we pass to and from our caller GValue value; // an input or output parameter ... we guess the direction // from the arg to set() bool input; // the pointer we write output values to union { bool *vbool; int *vint; double *vdouble; VImage *vimage; std::vector *vvector; VipsBlob **vblob; }; Pair( const char *name ) : name( name ), input( false ), vimage( 0 ) { // argh = {0} won't work wil vanilla C++ memset( &value, 0, sizeof( GValue ) ); } ~Pair() { g_value_unset( &value ); } }; std::list options; public: VOption() { } virtual ~VOption(); VOption *set( const char *name, bool value ); VOption *set( const char *name, int value ); VOption *set( const char *name, double value ); VOption *set( const char *name, const char *value ); VOption *set( const char *name, VImage value ); VOption *set( const char *name, VInterpolate value ); VOption *set( const char *name, std::vector value ); VOption *set( const char *name, std::vector value ); VOption *set( const char *name, VipsBlob *value ); VOption *set( const char *name, bool *value ); VOption *set( const char *name, int *value ); VOption *set( const char *name, double *value ); VOption *set( const char *name, VImage *value ); VOption *set( const char *name, std::vector *value ); VOption *set( const char *name, VipsBlob **blob ); void set_operation( VipsOperation *operation ); void get_operation( VipsOperation *operation ); }; class VImage : VObject { public: VImage( VipsImage *image, VSteal steal = STEAL ) : VObject( (VipsObject *) image, steal ) { } // an empty (NULL) VImage, eg. "VImage a;" VImage() : VObject( 0 ) { } VipsImage * get_image() { return( (VipsImage *) VObject::get_object() ); } int width() { return( vips_image_get_width( get_image() ) ); } int height() { return( vips_image_get_height( get_image() ) ); } int bands() { return( vips_image_get_bands( get_image() ) ); } VipsBandFormat format() { return( vips_image_get_format( get_image() ) ); } VipsCoding coding() { return( vips_image_get_coding( get_image() ) ); } VipsInterpretation interpretation() { return( vips_image_get_interpretation( get_image() ) ); } VipsInterpretation guess_interpretation() { return( vips_image_guess_interpretation( get_image() ) ); } double xres() { return( vips_image_get_xres( get_image() ) ); } double yres() { return( vips_image_get_yres( get_image() ) ); } double xoffset() { return( vips_image_get_xoffset( get_image() ) ); } double yoffset() { return( vips_image_get_yoffset( get_image() ) ); } const char * filename() { return( vips_image_get_filename( get_image() ) ); } const void * data() { return( vips_image_get_data( get_image() ) ); } void set( const char *field, int value ) { vips_image_set_int( this->get_image(), field, value ); } void set( const char *field, double value ) { vips_image_set_double( this->get_image(), field, value ); } void set( const char *field, const char *value ) { vips_image_set_string( this->get_image(), field, value ); } void set( const char *field, VipsCallbackFn free_fn, void *data, size_t length ) { vips_image_set_blob( this->get_image(), field, free_fn, data, length ); } GType get_typeof( const char *field ) { return( vips_image_get_typeof( this->get_image(), field ) ); } int get_int( const char *field ) { int value; if( vips_image_get_int( this->get_image(), field, &value ) ) throw( VError() ); return( value ); } double get_double( const char *field ) { double value; if( vips_image_get_double( this->get_image(), field, &value ) ) throw( VError() ); return( value ); } const char * get_string( const char *field ) { const char *value; if( vips_image_get_string( this->get_image(), field, &value ) ) throw( VError() ); return( value ); } const void * get_blob( const char *field, size_t *length ) { void *value; if( vips_image_get_blob( this->get_image(), field, &value, length ) ) throw( VError() ); return( value ); } static VOption * option() { return( new VOption() ); } static void call_option_string( const char *operation_name, const char *option_string, VOption *options = 0 ); static void call( const char *operation_name, VOption *options = 0 ); static VImage new_memory() { return( VImage( vips_image_new_memory() ) ); } static VImage new_temp_file( const char *file_format = ".v" ) { VipsImage *image; if( !(image = vips_image_new_temp_file( file_format )) ) throw( VError() ); return( VImage( image ) ); } static VImage new_from_file( const char *name, VOption *options = 0 ); static VImage new_from_memory( void *data, size_t size, int width, int height, int bands, VipsBandFormat format ) { VipsImage *image; if( !(image = vips_image_new_from_memory( data, size, width, height, bands, format )) ) throw( VError() ); return( VImage( image ) ); } static VImage new_from_buffer( void *buf, size_t len, const char *option_string, VOption *options = 0 ); static VImage new_matrix( int width, int height ); static VImage new_matrix( int width, int height, double *array, int size ) { VipsImage *image; if( !(image = vips_image_new_matrix_from_array( width, height, array, size )) ) throw( VError() ); return( VImage( image ) ); } static VImage new_matrixv( int width, int height, ... ); VImage new_from_image( std::vector pixel ); VImage new_from_image( double pixel ); void write( VImage out ); void write_to_file( const char *name, VOption *options = 0 ); void write_to_buffer( const char *suffix, void **buf, size_t *size, VOption *options = 0 ); void *write_to_memory( size_t *size ) { void *result; if( !(result = vips_image_write_to_memory( this->get_image(), size )) ) throw( VError() ); return( result ); } #include "vips-operators.h" // a few useful things VImage linear( double a, double b, VOption *options = 0 ) { return( this->linear( to_vector( a ), to_vector( b ), options ) ); } VImage linear( std::vector a, double b, VOption *options = 0 ) { return( this->linear( a, to_vector( b ), options ) ); } VImage linear( double a, std::vector b, VOption *options = 0 ) { return( this->linear( to_vector( a ), b, options ) ); } std::vector bandsplit( VOption *options = 0 ); VImage bandjoin( VImage other, VOption *options = 0 ); VImage bandjoin( double other, VOption *options = 0 ) { return( bandjoin( this->new_from_image( other ), options ) ); } VImage bandjoin( std::vector other, VOption *options = 0 ) { return( bandjoin( this->new_from_image( other ), options ) ); } std::complex minpos( VOption *options = 0 ); std::complex maxpos( VOption *options = 0 ); VImage fliphor( VOption *options = 0 ) { return( flip( VIPS_DIRECTION_HORIZONTAL, options ) ); } VImage flipver( VOption *options = 0 ) { return( flip( VIPS_DIRECTION_VERTICAL, options ) ); } VImage rot90( VOption *options = 0 ) { return( rot( VIPS_ANGLE_D90, options ) ); } VImage rot180( VOption *options = 0 ) { return( rot( VIPS_ANGLE_D180, options ) ); } VImage rot270( VOption *options = 0 ) { return( rot( VIPS_ANGLE_D270, options ) ); } VImage dilate( VImage mask, VOption *options = 0 ) { return( morph( mask, VIPS_OPERATION_MORPHOLOGY_DILATE, options ) ); } VImage erode( VImage mask, VOption *options = 0 ) { return( morph( mask, VIPS_OPERATION_MORPHOLOGY_ERODE, options ) ); } VImage median( int size = 3, VOption *options = 0 ) { return( rank( size, size, (size * size) / 2, options ) ); } VImage floor( VOption *options = 0 ) { return( round( VIPS_OPERATION_ROUND_FLOOR, options ) ); } VImage ceil( VOption *options = 0 ) { return( round( VIPS_OPERATION_ROUND_CEIL, options ) ); } VImage rint( VOption *options = 0 ) { return( round( VIPS_OPERATION_ROUND_RINT, options ) ); } VImage real( VOption *options = 0 ) { return( complexget( VIPS_OPERATION_COMPLEXGET_REAL, options ) ); } VImage imag( VOption *options = 0 ) { return( complexget( VIPS_OPERATION_COMPLEXGET_IMAG, options ) ); } VImage polar( VOption *options = 0 ) { return( complex( VIPS_OPERATION_COMPLEX_POLAR, options ) ); } VImage rect( VOption *options = 0 ) { return( complex( VIPS_OPERATION_COMPLEX_RECT, options ) ); } VImage conj( VOption *options = 0 ) { return( complex( VIPS_OPERATION_COMPLEX_CONJ, options ) ); } VImage sin( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_SIN, options ) ); } VImage cos( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_COS, options ) ); } VImage tan( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_TAN, options ) ); } VImage asin( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_ASIN, options ) ); } VImage acos( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_ACOS, options ) ); } VImage atan( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_ATAN, options ) ); } VImage log( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_LOG, options ) ); } VImage log10( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_LOG10, options ) ); } VImage exp( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_EXP, options ) ); } VImage exp10( VOption *options = 0 ) { return( math( VIPS_OPERATION_MATH_EXP10, options ) ); } VImage pow( VImage other, VOption *options = 0 ) { return( math2( other, VIPS_OPERATION_MATH2_POW, options ) ); } VImage pow( double other, VOption *options = 0 ) { return( math2_const( to_vector( other ), VIPS_OPERATION_MATH2_POW, options ) ); } VImage pow( std::vector other, VOption *options = 0 ) { return( math2_const( other, VIPS_OPERATION_MATH2_POW, options ) ); } VImage wop( VImage other, VOption *options = 0 ) { return( math2( other, VIPS_OPERATION_MATH2_WOP, options ) ); } VImage wop( double other, VOption *options = 0 ) { return( math2_const( to_vector( other ), VIPS_OPERATION_MATH2_WOP, options ) ); } VImage wop( std::vector other, VOption *options = 0 ) { return( math2_const( other, VIPS_OPERATION_MATH2_WOP, options ) ); } VImage ifthenelse( std::vector th, VImage el, VOption *options = 0 ) { return( ifthenelse( el.new_from_image( th ), el, options ) ); } VImage ifthenelse( VImage th, std::vector el, VOption *options = 0 ) { return( ifthenelse( th, th.new_from_image( el ), options ) ); } VImage ifthenelse( std::vector th, std::vector el, VOption *options = 0 ) { return( ifthenelse( new_from_image( th ), new_from_image( el ), options ) ); } VImage ifthenelse( double th, VImage el, VOption *options ) { return( ifthenelse( to_vector( th ), el, options ) ); } VImage ifthenelse( VImage th, double el, VOption *options ) { return( ifthenelse( th, to_vector( el ), options ) ); } VImage ifthenelse( double th, double el, VOption *options ) { return( ifthenelse( to_vector( th ), to_vector( el ), options ) ); } // Operator overloads VImage operator[]( int index ) { return( this->extract_band( index ) ); } std::vector operator()( int x, int y ) { return( this->getpoint( x, y ) ); } friend VImage operator+( VImage a, VImage b ) { return( a.add( b ) ); } friend VImage operator+( double a, VImage b ) { return( b.linear( 1.0, a ) ); } friend VImage operator+( VImage a, double b ) { return( a.linear( 1.0, b ) ); } friend VImage operator+( std::vector a, VImage b ) { return( b.linear( 1.0, a ) ); } friend VImage operator+( VImage a, std::vector b ) { return( a.linear( 1.0, b ) ); } friend VImage operator-( VImage a, VImage b ) { return( a.subtract( b ) ); } friend VImage operator-( double a, VImage b ) { return( b.linear( -1.0, a ) ); } friend VImage operator-( VImage a, double b ) { return( a.linear( 1.0, -b ) ); } friend VImage operator-( std::vector a, VImage b ) { return( b.linear( -1.0, a ) ); } friend VImage operator-( VImage a, std::vector b ) { return( a.linear( 1.0, vips::negate( b ) ) ); } friend VImage operator*( VImage a, VImage b ) { return( a.multiply( b ) ); } friend VImage operator*( double a, VImage b ) { return( b.linear( a, 0.0 ) ); } friend VImage operator*( VImage a, double b ) { return( a.linear( b, 0.0 ) ); } friend VImage operator*( std::vector a, VImage b ) { return( b.linear( a, 0.0 ) ); } friend VImage operator*( VImage a, std::vector b ) { return( a.linear( b, 0.0 ) ); } friend VImage operator/( VImage a, VImage b ) { return( a.divide( b ) ); } friend VImage operator/( double a, VImage b ) { return( b.pow( -1.0 ).linear( a, 0.0 ) ); } friend VImage operator/( VImage a, double b ) { return( a.linear( 1.0 / b, 0.0 ) ); } friend VImage operator/( std::vector a, VImage b ) { return( b.pow( -1.0 ).linear( a, 0.0 ) ); } friend VImage operator/( VImage a, std::vector b ) { return( a.linear( vips::invert( b ), 0.0 ) ); } friend VImage operator%( VImage a, VImage b ) { return( a.remainder( b ) ); } friend VImage operator%( VImage a, double b ) { return( a.remainder_const( to_vector( b ) ) ); } friend VImage operator%( VImage a, std::vector b ) { return( a.remainder_const( b ) ); } friend VImage operator<( VImage a, VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_LESS ) ); } friend VImage operator<( double a, VImage b ) { return( b.relational_const( to_vector( a ), VIPS_OPERATION_RELATIONAL_MORE ) ); } friend VImage operator<( VImage a, double b ) { return( a.relational_const( to_vector( b ), VIPS_OPERATION_RELATIONAL_LESS ) ); } friend VImage operator<( std::vector a, VImage b ) { return( b.relational_const( a, VIPS_OPERATION_RELATIONAL_MORE ) ); } friend VImage operator<( VImage a, std::vector b ) { return( a.relational_const( b, VIPS_OPERATION_RELATIONAL_LESS ) ); } friend VImage operator<=( VImage a, VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_LESSEQ ) ); } friend VImage operator<=( double a, VImage b ) { return( b.relational_const( to_vector( a ), VIPS_OPERATION_RELATIONAL_MOREEQ ) ); } friend VImage operator<=( VImage a, double b ) { return( a.relational_const( to_vector( b ), VIPS_OPERATION_RELATIONAL_LESSEQ ) ); } friend VImage operator<=( std::vector a, VImage b ) { return( b.relational_const( a, VIPS_OPERATION_RELATIONAL_MOREEQ ) ); } friend VImage operator<=( VImage a, std::vector b ) { return( a.relational_const( b, VIPS_OPERATION_RELATIONAL_LESSEQ ) ); } friend VImage operator>( VImage a, VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_MORE ) ); } friend VImage operator>( double a, VImage b ) { return( b.relational_const( to_vector( a ), VIPS_OPERATION_RELATIONAL_LESS ) ); } friend VImage operator>( VImage a, double b ) { return( a.relational_const( to_vector( b ), VIPS_OPERATION_RELATIONAL_MORE ) ); } friend VImage operator>( std::vector a, VImage b ) { return( b.relational_const( a, VIPS_OPERATION_RELATIONAL_LESS ) ); } friend VImage operator>( VImage a, std::vector b ) { return( a.relational_const( b, VIPS_OPERATION_RELATIONAL_MORE ) ); } friend VImage operator>=( VImage a, VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_MOREEQ ) ); } friend VImage operator>=( double a, VImage b ) { return( b.relational_const( to_vector( a ), VIPS_OPERATION_RELATIONAL_LESSEQ ) ); } friend VImage operator>=( VImage a, double b ) { return( a.relational_const( to_vector( b ), VIPS_OPERATION_RELATIONAL_MOREEQ ) ); } friend VImage operator>=( std::vector a, VImage b ) { return( b.relational_const( a, VIPS_OPERATION_RELATIONAL_LESSEQ ) ); } friend VImage operator>=( VImage a, std::vector b ) { return( a.relational_const( b, VIPS_OPERATION_RELATIONAL_MOREEQ ) ); } friend VImage operator==( VImage a, VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_EQUAL ) ); } friend VImage operator==( double a, VImage b ) { return( b.relational_const( to_vector( a ), VIPS_OPERATION_RELATIONAL_EQUAL ) ); } friend VImage operator==( VImage a, double b ) { return( a.relational_const( to_vector( b ), VIPS_OPERATION_RELATIONAL_EQUAL ) ); } friend VImage operator==( std::vector a, VImage b ) { return( b.relational_const( a, VIPS_OPERATION_RELATIONAL_EQUAL ) ); } friend VImage operator==( VImage a, std::vector b ) { return( a.relational_const( b, VIPS_OPERATION_RELATIONAL_EQUAL ) ); } friend VImage operator!=( VImage a, VImage b ) { return( a.relational( b, VIPS_OPERATION_RELATIONAL_NOTEQ ) ); } friend VImage operator!=( double a, VImage b ) { return( b.relational_const( to_vector( a ), VIPS_OPERATION_RELATIONAL_NOTEQ ) ); } friend VImage operator!=( VImage a, double b ) { return( a.relational_const( to_vector( b ), VIPS_OPERATION_RELATIONAL_NOTEQ ) ); } friend VImage operator!=( std::vector a, VImage b ) { return( b.relational_const( a, VIPS_OPERATION_RELATIONAL_NOTEQ ) ); } friend VImage operator!=( VImage a, std::vector b ) { return( a.relational_const( b, VIPS_OPERATION_RELATIONAL_NOTEQ ) ); } friend VImage operator&( VImage a, VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_AND ) ); } friend VImage operator&( double a, VImage b ) { return( b.boolean_const( to_vector( a ), VIPS_OPERATION_BOOLEAN_AND ) ); } friend VImage operator&( VImage a, double b ) { return( a.boolean_const( to_vector( b ), VIPS_OPERATION_BOOLEAN_AND ) ); } friend VImage operator&( std::vector a, VImage b ) { return( b.boolean_const( a, VIPS_OPERATION_BOOLEAN_AND ) ); } friend VImage operator&( VImage a, std::vector b ) { return( a.boolean_const( b, VIPS_OPERATION_BOOLEAN_AND ) ); } friend VImage operator|( VImage a, VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_OR ) ); } friend VImage operator|( double a, VImage b ) { return( b.boolean_const( to_vector( a ), VIPS_OPERATION_BOOLEAN_OR ) ); } friend VImage operator|( VImage a, double b ) { return( a.boolean_const( to_vector( b ), VIPS_OPERATION_BOOLEAN_OR ) ); } friend VImage operator|( std::vector a, VImage b ) { return( b.boolean_const( a, VIPS_OPERATION_BOOLEAN_OR ) ); } friend VImage operator|( VImage a, std::vector b ) { return( a.boolean_const( b, VIPS_OPERATION_BOOLEAN_OR ) ); } friend VImage operator^( VImage a, VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_EOR ) ); } friend VImage operator^( double a, VImage b ) { return( b.boolean_const( to_vector( a ), VIPS_OPERATION_BOOLEAN_EOR ) ); } friend VImage operator^( VImage a, double b ) { return( a.boolean_const( to_vector( b ), VIPS_OPERATION_BOOLEAN_EOR ) ); } friend VImage operator^( std::vector a, VImage b ) { return( b.boolean_const( a, VIPS_OPERATION_BOOLEAN_EOR ) ); } friend VImage operator^( VImage a, std::vector b ) { return( a.boolean_const( b, VIPS_OPERATION_BOOLEAN_EOR ) ); } friend VImage operator<<( VImage a, VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_LSHIFT ) ); } friend VImage operator<<( VImage a, double b ) { return( a.boolean_const( to_vector( b ), VIPS_OPERATION_BOOLEAN_LSHIFT ) ); } friend VImage operator<<( VImage a, std::vector b ) { return( a.boolean_const( b, VIPS_OPERATION_BOOLEAN_LSHIFT ) ); } friend VImage operator>>( VImage a, VImage b ) { return( a.boolean( b, VIPS_OPERATION_BOOLEAN_RSHIFT ) ); } friend VImage operator>>( VImage a, double b ) { return( a.boolean_const( to_vector( b ), VIPS_OPERATION_BOOLEAN_RSHIFT ) ); } friend VImage operator>>( VImage a, std::vector b ) { return( a.boolean_const( b, VIPS_OPERATION_BOOLEAN_RSHIFT ) ); } friend VImage operator-( VImage a ) { return( a * -1 ); } }; VIPS_NAMESPACE_END #endif /*VIPS_VIMAGE_H*/ vips-8.2.2/cplusplus/include/vips/VInterpolate8.h0000664000175000017500000000270212644220226016743 00000000000000// VIPS interpolate wrapper /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VINTERPOLATE_H #define VIPS_VINTERPOLATE_H #include #include #include #include #include VIPS_NAMESPACE_START class VInterpolate : VObject { public: VInterpolate( VipsInterpolate *interpolate, VSteal steal = STEAL ) : VObject( (VipsObject *) interpolate, steal ) { } static VInterpolate new_from_name( const char *name, VOption *options = 0 ); VipsInterpolate * get_interpolate() { return( (VipsInterpolate *) VObject::get_object() ); } }; VIPS_NAMESPACE_END #endif /*VIPS_VIMAGE_H*/ vips-8.2.2/cplusplus/include/vips/VError8.h0000664000175000017500000000263712645230552015561 00000000000000// Header for error type /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VERROR_H #define VIPS_VERROR_H #include #include #include #include VIPS_NAMESPACE_START class VIPS_CPLUSPLUS_API VError : public std::exception { std::string _what; public: VError( std::string what ) : _what( what ) {} VError() : _what( vips_error_buffer() ) {} virtual ~VError() throw() {} // Extract string virtual const char *what() const throw() { return _what.c_str(); } void ostream_print( std::ostream & ) const; }; VIPS_NAMESPACE_END #endif /*VIPS_VERROR_H*/ vips-8.2.2/cplusplus/include/vips/vips80000664000175000017500000000267212645230552015074 00000000000000// Include file to get vips C++ binding /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_CPLUSPLUS #define VIPS_CPLUSPLUS #include #include /* Define VIPS_CPLUSPLUS_EXPORTS to build a DLL using MSVC */ #ifdef _MSC_VER # ifdef VIPS_CPLUSPLUS_EXPORTS # define VIPS_CPLUSPLUS_API __declspec(dllexport) # else # define VIPS_CPLUSPLUS_API __declspec(dllimport) # endif #else # define VIPS_CPLUSPLUS_API #endif #define VIPS_NAMESPACE_START namespace vips { #define VIPS_NAMESPACE_END } #include "VError8.h" #include "VImage8.h" #include "VInterpolate8.h" #endif /*VIPS_CPLUSPLUS*/ vips-8.2.2/cplusplus/include/vips/gen-operators-h.py0000775000175000017500000000765012644220226017464 00000000000000#!/usr/bin/python # walk vips and generate headers for all operators # sample member declaration : # VImage invert( VOption *options = 0 ) import sys import re import logging #logging.basicConfig(level = logging.DEBUG) from gi.repository import Vips, GObject vips_type_image = GObject.GType.from_name("VipsImage") vips_type_operation = GObject.GType.from_name("VipsOperation") param_enum = GObject.GType.from_name("GParamEnum") # turn a GType into a C++ type gtype_to_cpp = { "VipsImage" : "VImage", "gint" : "int", "gdouble" : "double", "gboolean" : "bool", "gchararray" : "char *", "VipsArrayDouble" : "std::vector", "VipsArrayImage" : "std::vector", "VipsBlob" : "VipsBlob *" } def get_ctype(prop): # enum params use the C name as their name if GObject.type_is_a(param_enum, prop): return prop.value_type.name return gtype_to_cpp[prop.value_type.name] def find_required(op): required = [] for prop in op.props: flags = op.get_argument_flags(prop.name) if not flags & Vips.ArgumentFlags.REQUIRED: continue if flags & Vips.ArgumentFlags.DEPRECATED: continue required.append(prop) def priority_sort(a, b): pa = op.get_argument_priority(a.name) pb = op.get_argument_priority(b.name) return pa - pb required.sort(priority_sort) return required # find the first input image ... this will be used as "this" def find_first_input_image(op, required): found = False for prop in required: flags = op.get_argument_flags(prop.name) if not flags & Vips.ArgumentFlags.INPUT: continue if GObject.type_is_a(vips_type_image, prop.value_type): found = True break if not found: return None return prop # find the first output arg ... this will be used as the result def find_first_output(op, required): found = False for prop in required: flags = op.get_argument_flags(prop.name) if not flags & Vips.ArgumentFlags.OUTPUT: continue found = True break if not found: return None return prop # swap any "-" for "_" def cppize(name): return re.sub('-', '_', name) def gen_arg_list(op, required): first = True for prop in required: if not first: print ',', else: first = False print get_ctype(prop), # output params are passed by reference flags = op.get_argument_flags(prop.name) if flags & Vips.ArgumentFlags.OUTPUT: print '*', print cppize(prop.name), if not first: print ',', print 'VOption *options = 0', def gen_operation(cls): op = Vips.Operation.new(cls.name) gtype = Vips.type_find("VipsOperation", cls.name) nickname = Vips.nickname_find(gtype) all_required = find_required(op) result = find_first_output(op, all_required) this = find_first_input_image(op, all_required) # shallow copy required = all_required[:] if result != None: required.remove(result) if this != None: required.remove(this) # no "this" available, it's a class method if this == None: print 'static', if result == None: print 'void', else: print '%s' % gtype_to_cpp[result.value_type.name], print '%s(' % nickname, gen_arg_list(op, required) print ');' # we have a few synonyms ... don't generate twice generated = {} def find_class_methods(cls): if not cls.is_abstract(): gtype = Vips.type_find("VipsOperation", cls.name) nickname = Vips.nickname_find(gtype) if not nickname in generated: gen_operation(cls) generated[nickname] = True if len(cls.children) > 0: for child in cls.children: find_class_methods(child) if __name__ == '__main__': find_class_methods(vips_type_operation) vips-8.2.2/cplusplus/include/vips/vips-operators.h0000664000175000017500000003314512644221000017230 00000000000000// headers for vips operations // Sat Jan 9 15:06:40 GMT 2016 // this file is generated automatically, do not edit! static void system( char * cmd_format , VOption *options = 0 ); VImage add( VImage right , VOption *options = 0 ); VImage subtract( VImage right , VOption *options = 0 ); VImage multiply( VImage right , VOption *options = 0 ); VImage divide( VImage right , VOption *options = 0 ); VImage relational( VImage right , VipsOperationRelational relational , VOption *options = 0 ); VImage remainder( VImage right , VOption *options = 0 ); VImage boolean( VImage right , VipsOperationBoolean boolean , VOption *options = 0 ); VImage math2( VImage right , VipsOperationMath2 math2 , VOption *options = 0 ); VImage complex2( VImage right , VipsOperationComplex2 cmplx , VOption *options = 0 ); VImage complexform( VImage right , VOption *options = 0 ); static VImage sum( std::vector in , VOption *options = 0 ); VImage invert( VOption *options = 0 ); VImage linear( std::vector a , std::vector b , VOption *options = 0 ); VImage math( VipsOperationMath math , VOption *options = 0 ); VImage abs( VOption *options = 0 ); VImage sign( VOption *options = 0 ); VImage round( VipsOperationRound round , VOption *options = 0 ); VImage relational_const( std::vector c , VipsOperationRelational relational , VOption *options = 0 ); VImage remainder_const( std::vector c , VOption *options = 0 ); VImage boolean_const( std::vector c , VipsOperationBoolean boolean , VOption *options = 0 ); VImage math2_const( std::vector c , VipsOperationMath2 math2 , VOption *options = 0 ); VImage complex( VipsOperationComplex cmplx , VOption *options = 0 ); VImage complexget( VipsOperationComplexget get , VOption *options = 0 ); double avg( VOption *options = 0 ); double min( VOption *options = 0 ); double max( VOption *options = 0 ); double deviate( VOption *options = 0 ); VImage stats( VOption *options = 0 ); VImage hist_find( VOption *options = 0 ); VImage hist_find_ndim( VOption *options = 0 ); VImage hist_find_indexed( VImage index , VOption *options = 0 ); VImage hough_line( VOption *options = 0 ); VImage hough_circle( VOption *options = 0 ); VImage project( VImage * rows , VOption *options = 0 ); VImage profile( VImage * rows , VOption *options = 0 ); VImage measure( int h , int v , VOption *options = 0 ); std::vector getpoint( int x , int y , VOption *options = 0 ); VImage copy( VOption *options = 0 ); VImage tilecache( VOption *options = 0 ); VImage linecache( VOption *options = 0 ); VImage sequential( VOption *options = 0 ); VImage cache( VOption *options = 0 ); VImage embed( int x , int y , int width , int height , VOption *options = 0 ); VImage flip( VipsDirection direction , VOption *options = 0 ); VImage insert( VImage sub , int x , int y , VOption *options = 0 ); VImage join( VImage in2 , VipsDirection direction , VOption *options = 0 ); static VImage arrayjoin( std::vector in , VOption *options = 0 ); VImage extract_area( int left , int top , int width , int height , VOption *options = 0 ); VImage extract_band( int band , VOption *options = 0 ); static VImage bandjoin( std::vector in , VOption *options = 0 ); VImage bandjoin_const( std::vector c , VOption *options = 0 ); static VImage bandrank( std::vector in , VOption *options = 0 ); VImage bandmean( VOption *options = 0 ); VImage bandbool( VipsOperationBoolean boolean , VOption *options = 0 ); VImage replicate( int across , int down , VOption *options = 0 ); VImage cast( VipsBandFormat format , VOption *options = 0 ); VImage rot( VipsAngle angle , VOption *options = 0 ); VImage rot45( VOption *options = 0 ); VImage autorot( VOption *options = 0 ); VImage ifthenelse( VImage in1 , VImage in2 , VOption *options = 0 ); VImage recomb( VImage m , VOption *options = 0 ); VImage bandfold( VOption *options = 0 ); VImage bandunfold( VOption *options = 0 ); VImage flatten( VOption *options = 0 ); VImage premultiply( VOption *options = 0 ); VImage unpremultiply( VOption *options = 0 ); VImage grid( int tile_height , int across , int down , VOption *options = 0 ); VImage scale( VOption *options = 0 ); VImage wrap( VOption *options = 0 ); VImage zoom( int xfac , int yfac , VOption *options = 0 ); VImage subsample( int xfac , int yfac , VOption *options = 0 ); VImage msb( VOption *options = 0 ); VImage byteswap( VOption *options = 0 ); VImage falsecolour( VOption *options = 0 ); VImage gamma( VOption *options = 0 ); static VImage black( int width , int height , VOption *options = 0 ); static VImage gaussnoise( int width , int height , VOption *options = 0 ); static VImage text( char * text , VOption *options = 0 ); static VImage xyz( int width , int height , VOption *options = 0 ); static VImage gaussmat( double sigma , double min_ampl , VOption *options = 0 ); static VImage logmat( double sigma , double min_ampl , VOption *options = 0 ); static VImage eye( int width , int height , VOption *options = 0 ); static VImage grey( int width , int height , VOption *options = 0 ); static VImage zone( int width , int height , VOption *options = 0 ); static VImage sines( int width , int height , VOption *options = 0 ); static VImage mask_ideal( int width , int height , double frequency_cutoff , VOption *options = 0 ); static VImage mask_ideal_ring( int width , int height , double frequency_cutoff , double ringwidth , VOption *options = 0 ); static VImage mask_ideal_band( int width , int height , double frequency_cutoff_x , double frequency_cutoff_y , double radius , VOption *options = 0 ); static VImage mask_butterworth( int width , int height , double order , double frequency_cutoff , double amplitude_cutoff , VOption *options = 0 ); static VImage mask_butterworth_ring( int width , int height , double order , double frequency_cutoff , double amplitude_cutoff , double ringwidth , VOption *options = 0 ); static VImage mask_butterworth_band( int width , int height , double order , double frequency_cutoff_x , double frequency_cutoff_y , double radius , double amplitude_cutoff , VOption *options = 0 ); static VImage mask_gaussian( int width , int height , double frequency_cutoff , double amplitude_cutoff , VOption *options = 0 ); static VImage mask_gaussian_ring( int width , int height , double frequency_cutoff , double amplitude_cutoff , double ringwidth , VOption *options = 0 ); static VImage mask_gaussian_band( int width , int height , double frequency_cutoff_x , double frequency_cutoff_y , double radius , double amplitude_cutoff , VOption *options = 0 ); static VImage mask_fractal( int width , int height , double fractal_dimension , VOption *options = 0 ); VImage buildlut( VOption *options = 0 ); VImage invertlut( VOption *options = 0 ); static VImage tonelut( VOption *options = 0 ); static VImage identity( VOption *options = 0 ); static VImage fractsurf( int width , int height , double fractal_dimension , VOption *options = 0 ); static VImage radload( char * filename , VOption *options = 0 ); static VImage ppmload( char * filename , VOption *options = 0 ); static VImage csvload( char * filename , VOption *options = 0 ); static VImage matrixload( char * filename , VOption *options = 0 ); static VImage analyzeload( char * filename , VOption *options = 0 ); static VImage rawload( char * filename , int width , int height , int bands , VOption *options = 0 ); static VImage vipsload( char * filename , VOption *options = 0 ); static VImage pngload( char * filename , VOption *options = 0 ); static VImage pngload_buffer( VipsBlob * buffer , VOption *options = 0 ); static VImage matload( char * filename , VOption *options = 0 ); static VImage jpegload( char * filename , VOption *options = 0 ); static VImage jpegload_buffer( VipsBlob * buffer , VOption *options = 0 ); static VImage webpload( char * filename , VOption *options = 0 ); static VImage webpload_buffer( VipsBlob * buffer , VOption *options = 0 ); static VImage tiffload( char * filename , VOption *options = 0 ); static VImage tiffload_buffer( VipsBlob * buffer , VOption *options = 0 ); static VImage openslideload( char * filename , VOption *options = 0 ); static VImage magickload( char * filename , VOption *options = 0 ); static VImage magickload_buffer( VipsBlob * buffer , VOption *options = 0 ); static VImage fitsload( char * filename , VOption *options = 0 ); static VImage openexrload( char * filename , VOption *options = 0 ); void radsave( char * filename , VOption *options = 0 ); void ppmsave( char * filename , VOption *options = 0 ); void csvsave( char * filename , VOption *options = 0 ); void matrixsave( char * filename , VOption *options = 0 ); void matrixprint( VOption *options = 0 ); void rawsave( char * filename , VOption *options = 0 ); void rawsave_fd( int fd , VOption *options = 0 ); void vipssave( char * filename , VOption *options = 0 ); void dzsave( char * filename , VOption *options = 0 ); void pngsave( char * filename , VOption *options = 0 ); VipsBlob * pngsave_buffer( VOption *options = 0 ); void jpegsave( char * filename , VOption *options = 0 ); VipsBlob * jpegsave_buffer( VOption *options = 0 ); void jpegsave_mime( VOption *options = 0 ); void webpsave( char * filename , VOption *options = 0 ); VipsBlob * webpsave_buffer( VOption *options = 0 ); void tiffsave( char * filename , VOption *options = 0 ); void fitssave( char * filename , VOption *options = 0 ); VImage mapim( VImage index , VOption *options = 0 ); VImage shrink( double xshrink , double yshrink , VOption *options = 0 ); VImage shrinkh( int xshrink , VOption *options = 0 ); VImage shrinkv( int yshrink , VOption *options = 0 ); VImage shrink2( double xshrink , double yshrink , VOption *options = 0 ); VImage quadratic( VImage coeff , VOption *options = 0 ); VImage affine( std::vector matrix , VOption *options = 0 ); VImage similarity( VOption *options = 0 ); VImage resize( double scale , VOption *options = 0 ); VImage colourspace( VipsInterpretation space , VOption *options = 0 ); VImage Lab2XYZ( VOption *options = 0 ); VImage XYZ2Lab( VOption *options = 0 ); VImage Lab2LCh( VOption *options = 0 ); VImage LCh2Lab( VOption *options = 0 ); VImage LCh2CMC( VOption *options = 0 ); VImage CMC2LCh( VOption *options = 0 ); VImage XYZ2Yxy( VOption *options = 0 ); VImage Yxy2XYZ( VOption *options = 0 ); VImage scRGB2XYZ( VOption *options = 0 ); VImage XYZ2scRGB( VOption *options = 0 ); VImage LabQ2Lab( VOption *options = 0 ); VImage Lab2LabQ( VOption *options = 0 ); VImage LabQ2LabS( VOption *options = 0 ); VImage LabS2LabQ( VOption *options = 0 ); VImage LabS2Lab( VOption *options = 0 ); VImage Lab2LabS( VOption *options = 0 ); VImage rad2float( VOption *options = 0 ); VImage float2rad( VOption *options = 0 ); VImage LabQ2sRGB( VOption *options = 0 ); VImage sRGB2HSV( VOption *options = 0 ); VImage HSV2sRGB( VOption *options = 0 ); VImage icc_import( VOption *options = 0 ); VImage icc_export( VOption *options = 0 ); VImage icc_transform( char * output_profile , VOption *options = 0 ); VImage dE76( VImage right , VOption *options = 0 ); VImage dE00( VImage right , VOption *options = 0 ); VImage dECMC( VImage right , VOption *options = 0 ); VImage sRGB2scRGB( VOption *options = 0 ); VImage scRGB2BW( VOption *options = 0 ); VImage scRGB2sRGB( VOption *options = 0 ); VImage maplut( VImage lut , VOption *options = 0 ); int percent( double percent , VOption *options = 0 ); VImage stdif( int width , int height , VOption *options = 0 ); VImage hist_cum( VOption *options = 0 ); VImage hist_match( VImage ref , VOption *options = 0 ); VImage hist_norm( VOption *options = 0 ); VImage hist_equal( VOption *options = 0 ); VImage hist_plot( VOption *options = 0 ); VImage hist_local( int width , int height , VOption *options = 0 ); bool hist_ismonotonic( VOption *options = 0 ); double hist_entropy( VOption *options = 0 ); VImage conv( VImage mask , VOption *options = 0 ); VImage compass( VImage mask , VOption *options = 0 ); VImage convsep( VImage mask , VOption *options = 0 ); VImage fastcor( VImage ref , VOption *options = 0 ); VImage spcor( VImage ref , VOption *options = 0 ); VImage sharpen( VOption *options = 0 ); VImage gaussblur( double sigma , VOption *options = 0 ); VImage fwfft( VOption *options = 0 ); VImage invfft( VOption *options = 0 ); VImage freqmult( VImage mask , VOption *options = 0 ); VImage spectrum( VOption *options = 0 ); VImage phasecor( VImage in2 , VOption *options = 0 ); VImage morph( VImage mask , VipsOperationMorphology morph , VOption *options = 0 ); VImage rank( int width , int height , int index , VOption *options = 0 ); double countlines( VipsDirection direction , VOption *options = 0 ); VImage labelregions( VOption *options = 0 ); void draw_rect( std::vector ink , int left , int top , int width , int height , VOption *options = 0 ); void draw_mask( std::vector ink , VImage mask , int x , int y , VOption *options = 0 ); void draw_line( std::vector ink , int x1 , int y1 , int x2 , int y2 , VOption *options = 0 ); void draw_circle( std::vector ink , int cx , int cy , int radius , VOption *options = 0 ); void draw_flood( std::vector ink , int x , int y , VOption *options = 0 ); void draw_image( VImage sub , int x , int y , VOption *options = 0 ); void draw_smudge( int left , int top , int width , int height , VOption *options = 0 ); VImage merge( VImage sec , VipsDirection direction , int dx , int dy , VOption *options = 0 ); VImage mosaic( VImage sec , VipsDirection direction , int xref , int yref , int xsec , int ysec , VOption *options = 0 ); VImage mosaic1( VImage sec , VipsDirection direction , int xr1 , int yr1 , int xs1 , int ys1 , int xr2 , int yr2 , int xs2 , int ys2 , VOption *options = 0 ); VImage match( VImage sec , int xr1 , int yr1 , int xs1 , int ys1 , int xr2 , int yr2 , int xs2 , int ys2 , VOption *options = 0 ); VImage globalbalance( VOption *options = 0 ); vips-8.2.2/cplusplus/include/vips/Makefile.am0000664000175000017500000000067412530402247016127 00000000000000pkginclude_HEADERS = \ VError8.h \ VImage8.h \ VInterpolate8.h \ vips8 \ vips-operators.h vips-operators.h: echo "// headers for vips operations" > vips-operators.h; \ echo -n "// " >> vips-operators.h; \ date >> vips-operators.h; \ echo "// this file is generated automatically, do not edit!" >> vips-operators.h; \ echo "" >> vips-operators.h; \ ./gen-operators-h.py >> vips-operators.h EXTRA_DIST = \ gen-operators-h.py vips-8.2.2/cplusplus/include/vips/Makefile.in0000664000175000017500000005023112651721156016141 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = cplusplus/include/vips ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(pkginclude_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgincludedir)" HEADERS = $(pkginclude_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ pkginclude_HEADERS = \ VError8.h \ VImage8.h \ VInterpolate8.h \ vips8 \ vips-operators.h EXTRA_DIST = \ gen-operators-h.py all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cplusplus/include/vips/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cplusplus/include/vips/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(pkgincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgincludeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgincludeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgincludeHEADERS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-pkgincludeHEADERS .PRECIOUS: Makefile vips-operators.h: echo "// headers for vips operations" > vips-operators.h; \ echo -n "// " >> vips-operators.h; \ date >> vips-operators.h; \ echo "// this file is generated automatically, do not edit!" >> vips-operators.h; \ echo "" >> vips-operators.h; \ ./gen-operators-h.py >> vips-operators.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/cplusplus/include/Makefile.am0000664000175000017500000000002012530402247015127 00000000000000 SUBDIRS = vips vips-8.2.2/cplusplus/include/Makefile.in0000664000175000017500000005321012651721156015160 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = cplusplus/include ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ SUBDIRS = vips all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cplusplus/include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cplusplus/include/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/cplusplus/vips-operators.cpp0000664000175000017500000017053012644220727015176 00000000000000// bodies for vips operations // Sat Jan 9 15:05:58 GMT 2016 // this file is generated automatically, do not edit! void VImage::system( char * cmd_format , VOption *options ) { call( "system" , (options ? options : VImage::option()) -> set( "cmd-format", cmd_format ) ); } VImage VImage::add( VImage right , VOption *options ) { VImage out; call( "add" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) ); return( out ); } VImage VImage::subtract( VImage right , VOption *options ) { VImage out; call( "subtract" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) ); return( out ); } VImage VImage::multiply( VImage right , VOption *options ) { VImage out; call( "multiply" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) ); return( out ); } VImage VImage::divide( VImage right , VOption *options ) { VImage out; call( "divide" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) ); return( out ); } VImage VImage::relational( VImage right , VipsOperationRelational relational , VOption *options ) { VImage out; call( "relational" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) -> set( "relational", relational ) ); return( out ); } VImage VImage::remainder( VImage right , VOption *options ) { VImage out; call( "remainder" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) ); return( out ); } VImage VImage::boolean( VImage right , VipsOperationBoolean boolean , VOption *options ) { VImage out; call( "boolean" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) -> set( "boolean", boolean ) ); return( out ); } VImage VImage::math2( VImage right , VipsOperationMath2 math2 , VOption *options ) { VImage out; call( "math2" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) -> set( "math2", math2 ) ); return( out ); } VImage VImage::complex2( VImage right , VipsOperationComplex2 cmplx , VOption *options ) { VImage out; call( "complex2" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) -> set( "cmplx", cmplx ) ); return( out ); } VImage VImage::complexform( VImage right , VOption *options ) { VImage out; call( "complexform" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) ); return( out ); } VImage VImage::sum( std::vector in , VOption *options ) { VImage out; call( "sum" , (options ? options : VImage::option()) -> set( "in", in ) -> set( "out", &out ) ); return( out ); } VImage VImage::invert( VOption *options ) { VImage out; call( "invert" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::linear( std::vector a , std::vector b , VOption *options ) { VImage out; call( "linear" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "a", a ) -> set( "b", b ) ); return( out ); } VImage VImage::math( VipsOperationMath math , VOption *options ) { VImage out; call( "math" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "math", math ) ); return( out ); } VImage VImage::abs( VOption *options ) { VImage out; call( "abs" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::sign( VOption *options ) { VImage out; call( "sign" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::round( VipsOperationRound round , VOption *options ) { VImage out; call( "round" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "round", round ) ); return( out ); } VImage VImage::relational_const( std::vector c , VipsOperationRelational relational , VOption *options ) { VImage out; call( "relational_const" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "c", c ) -> set( "relational", relational ) ); return( out ); } VImage VImage::remainder_const( std::vector c , VOption *options ) { VImage out; call( "remainder_const" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "c", c ) ); return( out ); } VImage VImage::boolean_const( std::vector c , VipsOperationBoolean boolean , VOption *options ) { VImage out; call( "boolean_const" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "c", c ) -> set( "boolean", boolean ) ); return( out ); } VImage VImage::math2_const( std::vector c , VipsOperationMath2 math2 , VOption *options ) { VImage out; call( "math2_const" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "c", c ) -> set( "math2", math2 ) ); return( out ); } VImage VImage::complex( VipsOperationComplex cmplx , VOption *options ) { VImage out; call( "complex" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "cmplx", cmplx ) ); return( out ); } VImage VImage::complexget( VipsOperationComplexget get , VOption *options ) { VImage out; call( "complexget" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "get", get ) ); return( out ); } double VImage::avg( VOption *options ) { double out; call( "avg" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } double VImage::min( VOption *options ) { double out; call( "min" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } double VImage::max( VOption *options ) { double out; call( "max" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } double VImage::deviate( VOption *options ) { double out; call( "deviate" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::stats( VOption *options ) { VImage out; call( "stats" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::hist_find( VOption *options ) { VImage out; call( "hist_find" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::hist_find_ndim( VOption *options ) { VImage out; call( "hist_find_ndim" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::hist_find_indexed( VImage index , VOption *options ) { VImage out; call( "hist_find_indexed" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "index", index ) -> set( "out", &out ) ); return( out ); } VImage VImage::hough_line( VOption *options ) { VImage out; call( "hough_line" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::hough_circle( VOption *options ) { VImage out; call( "hough_circle" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::project( VImage * rows , VOption *options ) { VImage columns; call( "project" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "columns", &columns ) -> set( "rows", rows ) ); return( columns ); } VImage VImage::profile( VImage * rows , VOption *options ) { VImage columns; call( "profile" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "columns", &columns ) -> set( "rows", rows ) ); return( columns ); } VImage VImage::measure( int h , int v , VOption *options ) { VImage out; call( "measure" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "h", h ) -> set( "v", v ) ); return( out ); } std::vector VImage::getpoint( int x , int y , VOption *options ) { std::vector out_array; call( "getpoint" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out-array", &out_array ) -> set( "x", x ) -> set( "y", y ) ); return( out_array ); } VImage VImage::copy( VOption *options ) { VImage out; call( "copy" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::tilecache( VOption *options ) { VImage out; call( "tilecache" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::linecache( VOption *options ) { VImage out; call( "linecache" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::sequential( VOption *options ) { VImage out; call( "sequential" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::cache( VOption *options ) { VImage out; call( "cache" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::embed( int x , int y , int width , int height , VOption *options ) { VImage out; call( "embed" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "x", x ) -> set( "y", y ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::flip( VipsDirection direction , VOption *options ) { VImage out; call( "flip" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) -> set( "direction", direction ) ); return( out ); } VImage VImage::insert( VImage sub , int x , int y , VOption *options ) { VImage out; call( "insert" , (options ? options : VImage::option()) -> set( "main", *this ) -> set( "sub", sub ) -> set( "out", &out ) -> set( "x", x ) -> set( "y", y ) ); return( out ); } VImage VImage::join( VImage in2 , VipsDirection direction , VOption *options ) { VImage out; call( "join" , (options ? options : VImage::option()) -> set( "in1", *this ) -> set( "in2", in2 ) -> set( "out", &out ) -> set( "direction", direction ) ); return( out ); } VImage VImage::arrayjoin( std::vector in , VOption *options ) { VImage out; call( "arrayjoin" , (options ? options : VImage::option()) -> set( "in", in ) -> set( "out", &out ) ); return( out ); } VImage VImage::extract_area( int left , int top , int width , int height , VOption *options ) { VImage out; call( "extract_area" , (options ? options : VImage::option()) -> set( "input", *this ) -> set( "out", &out ) -> set( "left", left ) -> set( "top", top ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::extract_band( int band , VOption *options ) { VImage out; call( "extract_band" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "band", band ) ); return( out ); } VImage VImage::bandjoin( std::vector in , VOption *options ) { VImage out; call( "bandjoin" , (options ? options : VImage::option()) -> set( "in", in ) -> set( "out", &out ) ); return( out ); } VImage VImage::bandjoin_const( std::vector c , VOption *options ) { VImage out; call( "bandjoin_const" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "c", c ) ); return( out ); } VImage VImage::bandrank( std::vector in , VOption *options ) { VImage out; call( "bandrank" , (options ? options : VImage::option()) -> set( "in", in ) -> set( "out", &out ) ); return( out ); } VImage VImage::bandmean( VOption *options ) { VImage out; call( "bandmean" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::bandbool( VipsOperationBoolean boolean , VOption *options ) { VImage out; call( "bandbool" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "boolean", boolean ) ); return( out ); } VImage VImage::replicate( int across , int down , VOption *options ) { VImage out; call( "replicate" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "across", across ) -> set( "down", down ) ); return( out ); } VImage VImage::cast( VipsBandFormat format , VOption *options ) { VImage out; call( "cast" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) -> set( "format", format ) ); return( out ); } VImage VImage::rot( VipsAngle angle , VOption *options ) { VImage out; call( "rot" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) -> set( "angle", angle ) ); return( out ); } VImage VImage::rot45( VOption *options ) { VImage out; call( "rot45" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::autorot( VOption *options ) { VImage out; call( "autorot" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::ifthenelse( VImage in1 , VImage in2 , VOption *options ) { VImage out; call( "ifthenelse" , (options ? options : VImage::option()) -> set( "cond", *this ) -> set( "in1", in1 ) -> set( "in2", in2 ) -> set( "out", &out ) ); return( out ); } VImage VImage::recomb( VImage m , VOption *options ) { VImage out; call( "recomb" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "m", m ) ); return( out ); } VImage VImage::bandfold( VOption *options ) { VImage out; call( "bandfold" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::bandunfold( VOption *options ) { VImage out; call( "bandunfold" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::flatten( VOption *options ) { VImage out; call( "flatten" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::premultiply( VOption *options ) { VImage out; call( "premultiply" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::unpremultiply( VOption *options ) { VImage out; call( "unpremultiply" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::grid( int tile_height , int across , int down , VOption *options ) { VImage out; call( "grid" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) -> set( "tile-height", tile_height ) -> set( "across", across ) -> set( "down", down ) ); return( out ); } VImage VImage::scale( VOption *options ) { VImage out; call( "scale" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::wrap( VOption *options ) { VImage out; call( "wrap" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::zoom( int xfac , int yfac , VOption *options ) { VImage out; call( "zoom" , (options ? options : VImage::option()) -> set( "input", *this ) -> set( "out", &out ) -> set( "xfac", xfac ) -> set( "yfac", yfac ) ); return( out ); } VImage VImage::subsample( int xfac , int yfac , VOption *options ) { VImage out; call( "subsample" , (options ? options : VImage::option()) -> set( "input", *this ) -> set( "out", &out ) -> set( "xfac", xfac ) -> set( "yfac", yfac ) ); return( out ); } VImage VImage::msb( VOption *options ) { VImage out; call( "msb" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::byteswap( VOption *options ) { VImage out; call( "byteswap" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "in", *this ) ); return( out ); } VImage VImage::falsecolour( VOption *options ) { VImage out; call( "falsecolour" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::gamma( VOption *options ) { VImage out; call( "gamma" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::black( int width , int height , VOption *options ) { VImage out; call( "black" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::gaussnoise( int width , int height , VOption *options ) { VImage out; call( "gaussnoise" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::text( char * text , VOption *options ) { VImage out; call( "text" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "text", text ) ); return( out ); } VImage VImage::xyz( int width , int height , VOption *options ) { VImage out; call( "xyz" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::gaussmat( double sigma , double min_ampl , VOption *options ) { VImage out; call( "gaussmat" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "sigma", sigma ) -> set( "min-ampl", min_ampl ) ); return( out ); } VImage VImage::logmat( double sigma , double min_ampl , VOption *options ) { VImage out; call( "logmat" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "sigma", sigma ) -> set( "min-ampl", min_ampl ) ); return( out ); } VImage VImage::eye( int width , int height , VOption *options ) { VImage out; call( "eye" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::grey( int width , int height , VOption *options ) { VImage out; call( "grey" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::zone( int width , int height , VOption *options ) { VImage out; call( "zone" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::sines( int width , int height , VOption *options ) { VImage out; call( "sines" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::mask_ideal( int width , int height , double frequency_cutoff , VOption *options ) { VImage out; call( "mask_ideal" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "frequency-cutoff", frequency_cutoff ) ); return( out ); } VImage VImage::mask_ideal_ring( int width , int height , double frequency_cutoff , double ringwidth , VOption *options ) { VImage out; call( "mask_ideal_ring" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "frequency-cutoff", frequency_cutoff ) -> set( "ringwidth", ringwidth ) ); return( out ); } VImage VImage::mask_ideal_band( int width , int height , double frequency_cutoff_x , double frequency_cutoff_y , double radius , VOption *options ) { VImage out; call( "mask_ideal_band" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "frequency-cutoff-x", frequency_cutoff_x ) -> set( "frequency-cutoff-y", frequency_cutoff_y ) -> set( "radius", radius ) ); return( out ); } VImage VImage::mask_butterworth( int width , int height , double order , double frequency_cutoff , double amplitude_cutoff , VOption *options ) { VImage out; call( "mask_butterworth" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "order", order ) -> set( "frequency-cutoff", frequency_cutoff ) -> set( "amplitude-cutoff", amplitude_cutoff ) ); return( out ); } VImage VImage::mask_butterworth_ring( int width , int height , double order , double frequency_cutoff , double amplitude_cutoff , double ringwidth , VOption *options ) { VImage out; call( "mask_butterworth_ring" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "order", order ) -> set( "frequency-cutoff", frequency_cutoff ) -> set( "amplitude-cutoff", amplitude_cutoff ) -> set( "ringwidth", ringwidth ) ); return( out ); } VImage VImage::mask_butterworth_band( int width , int height , double order , double frequency_cutoff_x , double frequency_cutoff_y , double radius , double amplitude_cutoff , VOption *options ) { VImage out; call( "mask_butterworth_band" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "order", order ) -> set( "frequency-cutoff-x", frequency_cutoff_x ) -> set( "frequency-cutoff-y", frequency_cutoff_y ) -> set( "radius", radius ) -> set( "amplitude-cutoff", amplitude_cutoff ) ); return( out ); } VImage VImage::mask_gaussian( int width , int height , double frequency_cutoff , double amplitude_cutoff , VOption *options ) { VImage out; call( "mask_gaussian" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "frequency-cutoff", frequency_cutoff ) -> set( "amplitude-cutoff", amplitude_cutoff ) ); return( out ); } VImage VImage::mask_gaussian_ring( int width , int height , double frequency_cutoff , double amplitude_cutoff , double ringwidth , VOption *options ) { VImage out; call( "mask_gaussian_ring" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "frequency-cutoff", frequency_cutoff ) -> set( "amplitude-cutoff", amplitude_cutoff ) -> set( "ringwidth", ringwidth ) ); return( out ); } VImage VImage::mask_gaussian_band( int width , int height , double frequency_cutoff_x , double frequency_cutoff_y , double radius , double amplitude_cutoff , VOption *options ) { VImage out; call( "mask_gaussian_band" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "frequency-cutoff-x", frequency_cutoff_x ) -> set( "frequency-cutoff-y", frequency_cutoff_y ) -> set( "radius", radius ) -> set( "amplitude-cutoff", amplitude_cutoff ) ); return( out ); } VImage VImage::mask_fractal( int width , int height , double fractal_dimension , VOption *options ) { VImage out; call( "mask_fractal" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "fractal-dimension", fractal_dimension ) ); return( out ); } VImage VImage::buildlut( VOption *options ) { VImage out; call( "buildlut" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::invertlut( VOption *options ) { VImage out; call( "invertlut" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::tonelut( VOption *options ) { VImage out; call( "tonelut" , (options ? options : VImage::option()) -> set( "out", &out ) ); return( out ); } VImage VImage::identity( VOption *options ) { VImage out; call( "identity" , (options ? options : VImage::option()) -> set( "out", &out ) ); return( out ); } VImage VImage::fractsurf( int width , int height , double fractal_dimension , VOption *options ) { VImage out; call( "fractsurf" , (options ? options : VImage::option()) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "fractal-dimension", fractal_dimension ) ); return( out ); } VImage VImage::radload( char * filename , VOption *options ) { VImage out; call( "radload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::ppmload( char * filename , VOption *options ) { VImage out; call( "ppmload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::csvload( char * filename , VOption *options ) { VImage out; call( "csvload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::matrixload( char * filename , VOption *options ) { VImage out; call( "matrixload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::analyzeload( char * filename , VOption *options ) { VImage out; call( "analyzeload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::rawload( char * filename , int width , int height , int bands , VOption *options ) { VImage out; call( "rawload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "bands", bands ) ); return( out ); } VImage VImage::vipsload( char * filename , VOption *options ) { VImage out; call( "vipsload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::pngload( char * filename , VOption *options ) { VImage out; call( "pngload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::pngload_buffer( VipsBlob * buffer , VOption *options ) { VImage out; call( "pngload_buffer" , (options ? options : VImage::option()) -> set( "buffer", buffer ) -> set( "out", &out ) ); return( out ); } VImage VImage::matload( char * filename , VOption *options ) { VImage out; call( "matload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::jpegload( char * filename , VOption *options ) { VImage out; call( "jpegload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::jpegload_buffer( VipsBlob * buffer , VOption *options ) { VImage out; call( "jpegload_buffer" , (options ? options : VImage::option()) -> set( "buffer", buffer ) -> set( "out", &out ) ); return( out ); } VImage VImage::webpload( char * filename , VOption *options ) { VImage out; call( "webpload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::webpload_buffer( VipsBlob * buffer , VOption *options ) { VImage out; call( "webpload_buffer" , (options ? options : VImage::option()) -> set( "buffer", buffer ) -> set( "out", &out ) ); return( out ); } VImage VImage::tiffload( char * filename , VOption *options ) { VImage out; call( "tiffload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::tiffload_buffer( VipsBlob * buffer , VOption *options ) { VImage out; call( "tiffload_buffer" , (options ? options : VImage::option()) -> set( "buffer", buffer ) -> set( "out", &out ) ); return( out ); } VImage VImage::openslideload( char * filename , VOption *options ) { VImage out; call( "openslideload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::magickload( char * filename , VOption *options ) { VImage out; call( "magickload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::magickload_buffer( VipsBlob * buffer , VOption *options ) { VImage out; call( "magickload_buffer" , (options ? options : VImage::option()) -> set( "buffer", buffer ) -> set( "out", &out ) ); return( out ); } VImage VImage::fitsload( char * filename , VOption *options ) { VImage out; call( "fitsload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } VImage VImage::openexrload( char * filename , VOption *options ) { VImage out; call( "openexrload" , (options ? options : VImage::option()) -> set( "filename", filename ) -> set( "out", &out ) ); return( out ); } void VImage::radsave( char * filename , VOption *options ) { call( "radsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } void VImage::ppmsave( char * filename , VOption *options ) { call( "ppmsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } void VImage::csvsave( char * filename , VOption *options ) { call( "csvsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } void VImage::matrixsave( char * filename , VOption *options ) { call( "matrixsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } void VImage::matrixprint( VOption *options ) { call( "matrixprint" , (options ? options : VImage::option()) -> set( "in", *this ) ); } void VImage::rawsave( char * filename , VOption *options ) { call( "rawsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } void VImage::rawsave_fd( int fd , VOption *options ) { call( "rawsave_fd" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "fd", fd ) ); } void VImage::vipssave( char * filename , VOption *options ) { call( "vipssave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } void VImage::dzsave( char * filename , VOption *options ) { call( "dzsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } void VImage::pngsave( char * filename , VOption *options ) { call( "pngsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } VipsBlob * VImage::pngsave_buffer( VOption *options ) { VipsBlob * buffer; call( "pngsave_buffer" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "buffer", &buffer ) ); return( buffer ); } void VImage::jpegsave( char * filename , VOption *options ) { call( "jpegsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } VipsBlob * VImage::jpegsave_buffer( VOption *options ) { VipsBlob * buffer; call( "jpegsave_buffer" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "buffer", &buffer ) ); return( buffer ); } void VImage::jpegsave_mime( VOption *options ) { call( "jpegsave_mime" , (options ? options : VImage::option()) -> set( "in", *this ) ); } void VImage::webpsave( char * filename , VOption *options ) { call( "webpsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } VipsBlob * VImage::webpsave_buffer( VOption *options ) { VipsBlob * buffer; call( "webpsave_buffer" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "buffer", &buffer ) ); return( buffer ); } void VImage::tiffsave( char * filename , VOption *options ) { call( "tiffsave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } void VImage::fitssave( char * filename , VOption *options ) { call( "fitssave" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "filename", filename ) ); } VImage VImage::mapim( VImage index , VOption *options ) { VImage out; call( "mapim" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "index", index ) ); return( out ); } VImage VImage::shrink( double xshrink , double yshrink , VOption *options ) { VImage out; call( "shrink" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "xshrink", xshrink ) -> set( "yshrink", yshrink ) ); return( out ); } VImage VImage::shrinkh( int xshrink , VOption *options ) { VImage out; call( "shrinkh" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "xshrink", xshrink ) ); return( out ); } VImage VImage::shrinkv( int yshrink , VOption *options ) { VImage out; call( "shrinkv" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "yshrink", yshrink ) ); return( out ); } VImage VImage::shrink2( double xshrink , double yshrink , VOption *options ) { VImage out; call( "shrink2" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "xshrink", xshrink ) -> set( "yshrink", yshrink ) ); return( out ); } VImage VImage::quadratic( VImage coeff , VOption *options ) { VImage out; call( "quadratic" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "coeff", coeff ) ); return( out ); } VImage VImage::affine( std::vector matrix , VOption *options ) { VImage out; call( "affine" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "matrix", matrix ) ); return( out ); } VImage VImage::similarity( VOption *options ) { VImage out; call( "similarity" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::resize( double scale , VOption *options ) { VImage out; call( "resize" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "scale", scale ) ); return( out ); } VImage VImage::colourspace( VipsInterpretation space , VOption *options ) { VImage out; call( "colourspace" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "space", space ) ); return( out ); } VImage VImage::Lab2XYZ( VOption *options ) { VImage out; call( "Lab2XYZ" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::XYZ2Lab( VOption *options ) { VImage out; call( "XYZ2Lab" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::Lab2LCh( VOption *options ) { VImage out; call( "Lab2LCh" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::LCh2Lab( VOption *options ) { VImage out; call( "LCh2Lab" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::LCh2CMC( VOption *options ) { VImage out; call( "LCh2CMC" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::CMC2LCh( VOption *options ) { VImage out; call( "CMC2LCh" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::XYZ2Yxy( VOption *options ) { VImage out; call( "XYZ2Yxy" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::Yxy2XYZ( VOption *options ) { VImage out; call( "Yxy2XYZ" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::scRGB2XYZ( VOption *options ) { VImage out; call( "scRGB2XYZ" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::XYZ2scRGB( VOption *options ) { VImage out; call( "XYZ2scRGB" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::LabQ2Lab( VOption *options ) { VImage out; call( "LabQ2Lab" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::Lab2LabQ( VOption *options ) { VImage out; call( "Lab2LabQ" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::LabQ2LabS( VOption *options ) { VImage out; call( "LabQ2LabS" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::LabS2LabQ( VOption *options ) { VImage out; call( "LabS2LabQ" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::LabS2Lab( VOption *options ) { VImage out; call( "LabS2Lab" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::Lab2LabS( VOption *options ) { VImage out; call( "Lab2LabS" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::rad2float( VOption *options ) { VImage out; call( "rad2float" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::float2rad( VOption *options ) { VImage out; call( "float2rad" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::LabQ2sRGB( VOption *options ) { VImage out; call( "LabQ2sRGB" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::sRGB2HSV( VOption *options ) { VImage out; call( "sRGB2HSV" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::HSV2sRGB( VOption *options ) { VImage out; call( "HSV2sRGB" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::icc_import( VOption *options ) { VImage out; call( "icc_import" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::icc_export( VOption *options ) { VImage out; call( "icc_export" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::icc_transform( char * output_profile , VOption *options ) { VImage out; call( "icc_transform" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "output-profile", output_profile ) ); return( out ); } VImage VImage::dE76( VImage right , VOption *options ) { VImage out; call( "dE76" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) ); return( out ); } VImage VImage::dE00( VImage right , VOption *options ) { VImage out; call( "dE00" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) ); return( out ); } VImage VImage::dECMC( VImage right , VOption *options ) { VImage out; call( "dECMC" , (options ? options : VImage::option()) -> set( "left", *this ) -> set( "right", right ) -> set( "out", &out ) ); return( out ); } VImage VImage::sRGB2scRGB( VOption *options ) { VImage out; call( "sRGB2scRGB" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::scRGB2BW( VOption *options ) { VImage out; call( "scRGB2BW" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::scRGB2sRGB( VOption *options ) { VImage out; call( "scRGB2sRGB" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::maplut( VImage lut , VOption *options ) { VImage out; call( "maplut" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "lut", lut ) ); return( out ); } int VImage::percent( double percent , VOption *options ) { int threshold; call( "percent" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "percent", percent ) -> set( "threshold", &threshold ) ); return( threshold ); } VImage VImage::stdif( int width , int height , VOption *options ) { VImage out; call( "stdif" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } VImage VImage::hist_cum( VOption *options ) { VImage out; call( "hist_cum" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::hist_match( VImage ref , VOption *options ) { VImage out; call( "hist_match" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "ref", ref ) -> set( "out", &out ) ); return( out ); } VImage VImage::hist_norm( VOption *options ) { VImage out; call( "hist_norm" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::hist_equal( VOption *options ) { VImage out; call( "hist_equal" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::hist_plot( VOption *options ) { VImage out; call( "hist_plot" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::hist_local( int width , int height , VOption *options ) { VImage out; call( "hist_local" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) ); return( out ); } bool VImage::hist_ismonotonic( VOption *options ) { bool monotonic; call( "hist_ismonotonic" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "monotonic", &monotonic ) ); return( monotonic ); } double VImage::hist_entropy( VOption *options ) { double out; call( "hist_entropy" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::conv( VImage mask , VOption *options ) { VImage out; call( "conv" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "mask", mask ) ); return( out ); } VImage VImage::compass( VImage mask , VOption *options ) { VImage out; call( "compass" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "mask", mask ) ); return( out ); } VImage VImage::convsep( VImage mask , VOption *options ) { VImage out; call( "convsep" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "mask", mask ) ); return( out ); } VImage VImage::fastcor( VImage ref , VOption *options ) { VImage out; call( "fastcor" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "ref", ref ) -> set( "out", &out ) ); return( out ); } VImage VImage::spcor( VImage ref , VOption *options ) { VImage out; call( "spcor" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "ref", ref ) -> set( "out", &out ) ); return( out ); } VImage VImage::sharpen( VOption *options ) { VImage out; call( "sharpen" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::gaussblur( double sigma , VOption *options ) { VImage out; call( "gaussblur" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "sigma", sigma ) ); return( out ); } VImage VImage::fwfft( VOption *options ) { VImage out; call( "fwfft" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::invfft( VOption *options ) { VImage out; call( "invfft" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::freqmult( VImage mask , VOption *options ) { VImage out; call( "freqmult" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "mask", mask ) -> set( "out", &out ) ); return( out ); } VImage VImage::spectrum( VOption *options ) { VImage out; call( "spectrum" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } VImage VImage::phasecor( VImage in2 , VOption *options ) { VImage out; call( "phasecor" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "in2", in2 ) -> set( "out", &out ) ); return( out ); } VImage VImage::morph( VImage mask , VipsOperationMorphology morph , VOption *options ) { VImage out; call( "morph" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "mask", mask ) -> set( "morph", morph ) ); return( out ); } VImage VImage::rank( int width , int height , int index , VOption *options ) { VImage out; call( "rank" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) -> set( "width", width ) -> set( "height", height ) -> set( "index", index ) ); return( out ); } double VImage::countlines( VipsDirection direction , VOption *options ) { double nolines; call( "countlines" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "nolines", &nolines ) -> set( "direction", direction ) ); return( nolines ); } VImage VImage::labelregions( VOption *options ) { VImage mask; call( "labelregions" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "mask", &mask ) ); return( mask ); } void VImage::draw_rect( std::vector ink , int left , int top , int width , int height , VOption *options ) { call( "draw_rect" , (options ? options : VImage::option()) -> set( "image", *this ) -> set( "ink", ink ) -> set( "left", left ) -> set( "top", top ) -> set( "width", width ) -> set( "height", height ) ); } void VImage::draw_mask( std::vector ink , VImage mask , int x , int y , VOption *options ) { call( "draw_mask" , (options ? options : VImage::option()) -> set( "image", *this ) -> set( "ink", ink ) -> set( "mask", mask ) -> set( "x", x ) -> set( "y", y ) ); } void VImage::draw_line( std::vector ink , int x1 , int y1 , int x2 , int y2 , VOption *options ) { call( "draw_line" , (options ? options : VImage::option()) -> set( "image", *this ) -> set( "ink", ink ) -> set( "x1", x1 ) -> set( "y1", y1 ) -> set( "x2", x2 ) -> set( "y2", y2 ) ); } void VImage::draw_circle( std::vector ink , int cx , int cy , int radius , VOption *options ) { call( "draw_circle" , (options ? options : VImage::option()) -> set( "image", *this ) -> set( "ink", ink ) -> set( "cx", cx ) -> set( "cy", cy ) -> set( "radius", radius ) ); } void VImage::draw_flood( std::vector ink , int x , int y , VOption *options ) { call( "draw_flood" , (options ? options : VImage::option()) -> set( "image", *this ) -> set( "ink", ink ) -> set( "x", x ) -> set( "y", y ) ); } void VImage::draw_image( VImage sub , int x , int y , VOption *options ) { call( "draw_image" , (options ? options : VImage::option()) -> set( "image", *this ) -> set( "sub", sub ) -> set( "x", x ) -> set( "y", y ) ); } void VImage::draw_smudge( int left , int top , int width , int height , VOption *options ) { call( "draw_smudge" , (options ? options : VImage::option()) -> set( "image", *this ) -> set( "left", left ) -> set( "top", top ) -> set( "width", width ) -> set( "height", height ) ); } VImage VImage::merge( VImage sec , VipsDirection direction , int dx , int dy , VOption *options ) { VImage out; call( "merge" , (options ? options : VImage::option()) -> set( "ref", *this ) -> set( "sec", sec ) -> set( "out", &out ) -> set( "direction", direction ) -> set( "dx", dx ) -> set( "dy", dy ) ); return( out ); } VImage VImage::mosaic( VImage sec , VipsDirection direction , int xref , int yref , int xsec , int ysec , VOption *options ) { VImage out; call( "mosaic" , (options ? options : VImage::option()) -> set( "ref", *this ) -> set( "sec", sec ) -> set( "out", &out ) -> set( "direction", direction ) -> set( "xref", xref ) -> set( "yref", yref ) -> set( "xsec", xsec ) -> set( "ysec", ysec ) ); return( out ); } VImage VImage::mosaic1( VImage sec , VipsDirection direction , int xr1 , int yr1 , int xs1 , int ys1 , int xr2 , int yr2 , int xs2 , int ys2 , VOption *options ) { VImage out; call( "mosaic1" , (options ? options : VImage::option()) -> set( "ref", *this ) -> set( "sec", sec ) -> set( "out", &out ) -> set( "direction", direction ) -> set( "xr1", xr1 ) -> set( "yr1", yr1 ) -> set( "xs1", xs1 ) -> set( "ys1", ys1 ) -> set( "xr2", xr2 ) -> set( "yr2", yr2 ) -> set( "xs2", xs2 ) -> set( "ys2", ys2 ) ); return( out ); } VImage VImage::match( VImage sec , int xr1 , int yr1 , int xs1 , int ys1 , int xr2 , int yr2 , int xs2 , int ys2 , VOption *options ) { VImage out; call( "match" , (options ? options : VImage::option()) -> set( "ref", *this ) -> set( "sec", sec ) -> set( "out", &out ) -> set( "xr1", xr1 ) -> set( "yr1", yr1 ) -> set( "xs1", xs1 ) -> set( "ys1", ys1 ) -> set( "xr2", xr2 ) -> set( "yr2", yr2 ) -> set( "xs2", xs2 ) -> set( "ys2", ys2 ) ); return( out ); } VImage VImage::globalbalance( VOption *options ) { VImage out; call( "globalbalance" , (options ? options : VImage::option()) -> set( "in", *this ) -> set( "out", &out ) ); return( out ); } vips-8.2.2/cplusplus/Makefile.in0000664000175000017500000007143212651721156013543 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = cplusplus ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libvips_cpp_la_DEPENDENCIES = $(top_builddir)/libvips/libvips.la am_libvips_cpp_la_OBJECTS = VImage.lo VInterpolate.lo VError.lo libvips_cpp_la_OBJECTS = $(am_libvips_cpp_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libvips_cpp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(libvips_cpp_la_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(libvips_cpp_la_SOURCES) DIST_SOURCES = $(libvips_cpp_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ SUBDIRS = \ include AM_CPPFLAGS = \ -I$(top_srcdir)/libvips/include \ -I$(top_srcdir)/cplusplus/include \ @VIPS_CFLAGS@ lib_LTLIBRARIES = libvips-cpp.la libvips_cpp_la_SOURCES = \ VImage.cpp \ VInterpolate.cpp \ VError.cpp libvips_cpp_la_LDFLAGS = \ -no-undefined \ -version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ libvips_cpp_la_LIBADD = \ $(top_builddir)/libvips/libvips.la @VIPS_LIBS@ EXTRA_DIST = \ README \ vips-operators.cpp \ gen-operators.py all: all-recursive .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cplusplus/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign cplusplus/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libvips-cpp.la: $(libvips_cpp_la_OBJECTS) $(libvips_cpp_la_DEPENDENCIES) $(EXTRA_libvips_cpp_la_DEPENDENCIES) $(AM_V_CXXLD)$(libvips_cpp_la_LINK) -rpath $(libdir) $(libvips_cpp_la_OBJECTS) $(libvips_cpp_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VError.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VImage.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VInterpolate.Plo@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libLTLIBRARIES \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile vips-operators.cpp: echo "// bodies for vips operations" > vips-operators.cpp; \ echo -n "// " >> vips-operators.cpp; \ date >> vips-operators.cpp; \ echo "// this file is generated automatically, do not edit!" >> vips-operators.cpp; \ echo "" >> vips-operators.cpp; \ ./gen-operators.py >> vips-operators.cpp # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/vips-cpp.pc.in0000664000175000017500000000034512530402247012122 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: vips-cpp Description: C++ API for vips8 image processing library Version: @VERSION@ Requires: vips gobject-2.0 Libs: -L${libdir} -lvips-cpp vips-8.2.2/acinclude.m40000664000175000017500000003415212605241561011627 00000000000000dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_ZIP[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl ------------------------------------------------ dnl dnl Find ZIP libraries and headers dnl dnl Put includes stuff in ZIP_INCLUDES dnl Put link stuff in ZIP_LIBS dnl Define HAVE_ZIP if found dnl AC_DEFUN([FIND_ZIP], [ AC_REQUIRE([AC_PATH_XTRA]) ZIP_INCLUDES="" ZIP_LIBS="" AC_ARG_WITH(zip, AS_HELP_STRING([--without-zip], [build without libx (default: test)])) # Treat --without-zip like --without-zip-includes --without-zip-libraries. if test "$with_zip" = "no"; then ZIP_INCLUDES=no ZIP_LIBS=no fi AC_ARG_WITH(zip-includes, AS_HELP_STRING([--with-zip-includes=DIR], [libz includes are in DIR]), ZIP_INCLUDES="-I$withval") AC_ARG_WITH(zip-libraries, AS_HELP_STRING([--with-zip-libraries=DIR], [libz libraries are in DIR]), ZIP_LIBS="-L$withval -lz") AC_MSG_CHECKING(for ZIP) # Look for zlib.h if test "$ZIP_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include ],[int a;],[ ZIP_INCLUDES="" ], [ # zlib.h is not in the standard search path, try # $prefix zip_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" AC_TRY_COMPILE([#include ],[int a;],[ ZIP_INCLUDES="-I${prefix}/include" ], [ ZIP_INCLUDES="no" ]) INCLUDES=$zip_save_INCLUDES ]) fi # Now for the libraries if test "$ZIP_LIBS" = ""; then zip_save_LIBS="$LIBS" zip_save_INCLUDES="$INCLUDES" LIBS="-lz $LIBS" INCLUDES="$ZIP_INCLUDES $INCLUDES" # Try the standard search path first AC_TRY_LINK([#include ],[zlibVersion()], [ ZIP_LIBS="-lz" ], [ # libz is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include ],[zlibVersion()], [ ZIP_LIBS="-L${prefix}/lib -lz" ], [ ZIP_LIBS=no ]) ]) LIBS="$zip_save_LIBS" INCLUDES="$zip_save_INCLUDES" fi AC_SUBST(ZIP_LIBS) AC_SUBST(ZIP_INCLUDES) # Print a helpful message zip_libraries_result="$ZIP_LIBS" zip_includes_result="$ZIP_INCLUDES" if test x"$zip_libraries_result" = x""; then zip_libraries_result="in default path" fi if test x"$zip_includes_result" = x""; then zip_includes_result="in default path" fi if test "$zip_libraries_result" = "no"; then zip_libraries_result="(none)" fi if test "$zip_includes_result" = "no"; then zip_includes_result="(none)" fi AC_MSG_RESULT([libraries $zip_libraries_result, headers $zip_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$ZIP_INCLUDES" != "no" && test "$ZIP_LIBS" != "no"; then AC_DEFINE(HAVE_ZIP,1,[Define if you have libz libraries and header files.]) $1 else ZIP_LIBS="" ZIP_INCLUDES="" $2 fi ])dnl dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_TIFF[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl ------------------------------------------------ dnl dnl Find TIFF libraries and headers dnl dnl Put compile stuff in TIFF_INCLUDES dnl Put link stuff in TIFF_LIBS dnl Define HAVE_TIFF if found dnl AC_DEFUN([FIND_TIFF], [ AC_REQUIRE([AC_PATH_XTRA]) TIFF_INCLUDES="" TIFF_LIBS="" AC_ARG_WITH(tiff, AS_HELP_STRING([--without-tiff], [build without libtiff (default: test)])) # Treat --without-tiff like --without-tiff-includes --without-tiff-libraries. if test "$with_tiff" = "no"; then TIFF_INCLUDES=no TIFF_LIBS=no fi AC_ARG_WITH(tiff-includes, AS_HELP_STRING([--with-tiff-includes=DIR], [libtiff includes are in DIR]), TIFF_INCLUDES="-I$withval") AC_ARG_WITH(tiff-libraries, AS_HELP_STRING([--with-tiff-libraries=DIR], [libtiff libraries are in DIR]), TIFF_LIBS="-L$withval -ltiff") AC_MSG_CHECKING(for TIFF) # Look for tiff.h if test "$TIFF_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include ],[int a;],[ TIFF_INCLUDES="" ], [ # tiff.h is not in the standard search path, try # $prefix tiff_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" AC_TRY_COMPILE([#include ],[int a;],[ TIFF_INCLUDES="-I${prefix}/include" ], [ TIFF_INCLUDES="no" ]) INCLUDES=$tiff_save_INCLUDES ]) fi # Now for the libraries if test "$TIFF_LIBS" = ""; then tiff_save_LIBS="$LIBS" tiff_save_INCLUDES="$INCLUDES" LIBS="-ltiff -lm $LIBS" INCLUDES="$TIFF_INCLUDES $INCLUDES" # Try the standard search path first AC_TRY_LINK([#include ],[TIFFGetVersion()], [ TIFF_LIBS="-ltiff" ], [ # libtiff is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include ],[TIFFGetVersion()], [ TIFF_LIBS="-L${prefix}/lib -ltiff" ], [ TIFF_LIBS=no ]) ]) LIBS="$tiff_save_LIBS" INCLUDES="$tiff_save_INCLUDES" fi AC_SUBST(TIFF_LIBS) AC_SUBST(TIFF_INCLUDES) # Print a helpful message tiff_libraries_result="$TIFF_LIBS" tiff_includes_result="$TIFF_INCLUDES" if test x"$tiff_libraries_result" = x""; then tiff_libraries_result="in default path" fi if test x"$tiff_includes_result" = x""; then tiff_includes_result="in default path" fi if test "$tiff_libraries_result" = "no"; then tiff_libraries_result="(none)" fi if test "$tiff_includes_result" = "no"; then tiff_includes_result="(none)" fi AC_MSG_RESULT([libraries $tiff_libraries_result, headers $tiff_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$TIFF_INCLUDES" != "no" && test "$TIFF_LIBS" != "no"; then AC_DEFINE(HAVE_TIFF,1,[Define if you have tiff libraries and header files.]) $1 else TIFF_INCLUDES="" TIFF_LIBS="" $2 fi ])dnl dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_JPEG[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl ------------------------------------------------ dnl dnl Find JPEG libraries and headers dnl dnl Put compile stuff in JPEG_INCLUDES dnl Put link stuff in JPEG_LIBS dnl Define HAVE_JPEG if found dnl AC_DEFUN([FIND_JPEG], [ AC_REQUIRE([AC_PATH_XTRA]) JPEG_INCLUDES="" JPEG_LIBS="" AC_ARG_WITH(jpeg, AS_HELP_STRING([--without-jpeg], [build without libjpeg (default: test)])) # Treat --without-jpeg like --without-jpeg-includes --without-jpeg-libraries. if test "$with_jpeg" = "no"; then JPEG_INCLUDES=no JPEG_LIBS=no fi AC_ARG_WITH(jpeg-includes, AS_HELP_STRING([--with-jpeg-includes=DIR], [libjpeg includes are in DIR]), JPEG_INCLUDES="-I$withval") AC_ARG_WITH(jpeg-libraries, AS_HELP_STRING([--with-jpeg-libraries=DIR], [libjpeg libraries are in DIR]), JPEG_LIBS="-L$withval -ljpeg") AC_MSG_CHECKING(for JPEG) # Look for jpeglib.h if test "$JPEG_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include #include ],[int a;],[ JPEG_INCLUDES="" ], [ # jpeglib.h is not in the standard search path, try # $prefix jpeg_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" AC_TRY_COMPILE([#include #include ],[int a;],[ JPEG_INCLUDES="-I${prefix}/include" ], [ JPEG_INCLUDES="no" ]) INCLUDES=$jpeg_save_INCLUDES ]) fi # Now for the libraries if test "$JPEG_LIBS" = ""; then jpeg_save_LIBS="$LIBS" jpeg_save_INCLUDES="$INCLUDES" LIBS="-ljpeg $LIBS" INCLUDES="$JPEG_INCLUDES $INCLUDES" # Try the standard search path first AC_TRY_LINK([#include #include ],[jpeg_abort((void*)0)], [ JPEG_LIBS="-ljpeg" ], [ # libjpeg is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include #include ],[jpeg_abort((void*)0)], [ JPEG_LIBS="-L${prefix}/lib -ljpeg" ], [ JPEG_LIBS=no ]) ]) LIBS="$jpeg_save_LIBS" INCLUDES="$jpeg_save_INCLUDES" fi AC_SUBST(JPEG_LIBS) AC_SUBST(JPEG_INCLUDES) # Print a helpful message jpeg_libraries_result="$JPEG_LIBS" jpeg_includes_result="$JPEG_INCLUDES" if test x"$jpeg_libraries_result" = x""; then jpeg_libraries_result="in default path" fi if test x"$jpeg_includes_result" = x""; then jpeg_includes_result="in default path" fi if test "$jpeg_libraries_result" = "no"; then jpeg_libraries_result="(none)" fi if test "$jpeg_includes_result" = "no"; then jpeg_includes_result="(none)" fi AC_MSG_RESULT([libraries $jpeg_libraries_result, headers $jpeg_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$JPEG_INCLUDES" != "no" && test "$JPEG_LIBS" != "no"; then AC_DEFINE(HAVE_JPEG,1,[Define if you have jpeg libraries and header files.]) $1 else JPEG_INCLUDES="" JPEG_LIBS="" $2 fi ])dnl dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding dnl dnl FIND_PNG[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]] dnl ------------------------------------------------ dnl dnl Find PNG libraries and headers dnl dnl Put compile stuff in PNG_INCLUDES dnl Put link stuff in PNG_LIBS dnl Define HAVE_PNG if found. dnl AC_DEFUN([FIND_PNG], [ AC_REQUIRE([AC_PATH_XTRA]) PNG_INCLUDES="" PNG_LIBS="" AC_ARG_WITH(png, AS_HELP_STRING([--without-png], [build without libpng (default: test)])) # Treat --without-png like --without-png-includes --without-png-libraries. if test "$with_png" = "no"; then PNG_INCLUDES=no PNG_LIBS=no fi AC_ARG_WITH(png-includes, AS_HELP_STRING([--with-png-includes=DIR], [libpng includes are in DIR]), PNG_INCLUDES="-I$withval") AC_ARG_WITH(png-libraries, AS_HELP_STRING([--with-png-libraries=DIR], [libpng libraries are in DIR]), PNG_LIBS="-L$withval -lpng") AC_MSG_CHECKING(for libpng) # Look for png.h if test "$PNG_INCLUDES" = ""; then # Check the standard search path AC_TRY_COMPILE([#include ],[int a;],[ PNG_INCLUDES="" ], [ # png.h is not in the standard search path, try # $prefix png_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" AC_TRY_COMPILE([#include ],[int a;],[ PNG_INCLUDES="-I${prefix}/include" ], [ PNG_INCLUDES="no" ]) INCLUDES=$png_save_INCLUDES ]) fi # Now for the libraries if test "$PNG_LIBS" = ""; then png_save_LIBS="$LIBS" png_save_INCLUDES="$INCLUDES" LIBS="-lpng $LIBS" INCLUDES="$PNG_INCLUDES $INCLUDES" # Try the standard search path first AC_TRY_LINK([#include ],[png_access_version_number()], [ PNG_LIBS="-lpng" ], [ # libpng is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" AC_TRY_LINK([#include ],[png_access_version_number()], [ PNG_LIBS="-L${prefix}/lib -lpng" ], [ PNG_LIBS=no ]) ]) LIBS="$png_save_LIBS" INCLUDES="$png_save_INCLUDES" fi AC_SUBST(PNG_LIBS) AC_SUBST(PNG_INCLUDES) # Print a helpful message png_libraries_result="$PNG_LIBS" png_includes_result="$PNG_INCLUDES" if test x"$png_libraries_result" = x""; then png_libraries_result="in default path" fi if test x"$png_includes_result" = x""; then png_includes_result="in default path" fi if test "$png_libraries_result" = "no"; then png_libraries_result="(none)" fi if test "$png_includes_result" = "no"; then png_includes_result="(none)" fi AC_MSG_RESULT([libraries $png_libraries_result, headers $png_includes_result]) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$PNG_INCLUDES" != "no" && test "$PNG_LIBS" != "no"; then AC_DEFINE(HAVE_PNG,1,[Define if you have png libraries and header files.]) $1 else PNG_INCLUDES="" PNG_LIBS="" $2 fi ])dnl dnl a macro to check for ability to create python extensions dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) dnl function also defines PYTHON_INCLUDES AC_DEFUN([AM_CHECK_PYTHON_HEADERS], [AC_REQUIRE([AM_PATH_PYTHON]) AC_MSG_CHECKING(for headers required to compile python extensions) dnl deduce PYTHON_INCLUDES py_prefix=`$PYTHON -c "import sys; print(sys.prefix)"` py_exec_prefix=`$PYTHON -c "import sys; print(sys.exec_prefix)"` PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" if test "$py_prefix" != "$py_exec_prefix"; then PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" fi AC_SUBST(PYTHON_INCLUDES) dnl check if the headers exist: save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" AC_TRY_CPP([#include ],dnl [AC_MSG_RESULT(found) $1],dnl [AC_MSG_RESULT(not found) $2]) CPPFLAGS="$save_CPPFLAGS" ]) dnl @synopsis AC_FUNC_MKDIR dnl dnl Check whether mkdir() is mkdir or _mkdir, and whether it takes one dnl or two arguments. dnl dnl This macro can define HAVE_MKDIR, HAVE__MKDIR, and dnl MKDIR_TAKES_ONE_ARG, which are expected to be used as follows: dnl dnl #if HAVE_MKDIR dnl # if MKDIR_TAKES_ONE_ARG dnl /* MinGW32 */ dnl # define mkdir(a, b) mkdir(a) dnl # endif dnl #else dnl # if HAVE__MKDIR dnl /* plain Windows 32 */ dnl # define mkdir(a, b) _mkdir(a) dnl # else dnl # error "Don't know how to create a directory on this system." dnl # endif dnl #endif dnl dnl @category C dnl @author Alexandre Duret-Lutz dnl @version 2003-12-28 dnl @license GPLWithACException AC_DEFUN([AC_FUNC_MKDIR], [AC_CHECK_FUNCS([mkdir _mkdir]) AC_CACHE_CHECK([whether mkdir takes one argument], [ac_cv_mkdir_takes_one_arg], [AC_TRY_COMPILE([ #include #if HAVE_UNISTD_H # include #endif ], [mkdir (".");], [ac_cv_mkdir_takes_one_arg=yes], [ac_cv_mkdir_takes_one_arg=no])]) if test x"$ac_cv_mkdir_takes_one_arg" = xyes; then AC_DEFINE([MKDIR_TAKES_ONE_ARG], 1, [Define if mkdir takes only one argument.]) fi ]) dnl Note: dnl ===== dnl I have not implemented the following suggestion because I don't have dnl access to such a broken environment to test the macro. So I'm just dnl appending the comments here in case you have, and want to fix dnl AC_FUNC_MKDIR that way. dnl dnl |Thomas E. Dickey (dickey@herndon4.his.com) said: dnl | it doesn't cover the problem areas (compilers that mistreat mkdir dnl | may prototype it in dir.h and dirent.h, for instance). dnl | dnl |Alexandre: dnl | Would it be sufficient to check for these headers and #include dnl | them in the AC_TRY_COMPILE block? (and is AC_HEADER_DIRENT dnl | suitable for this?) dnl | dnl |Thomas: dnl | I think that might be a good starting point (with the set of recommended dnl | ifdef's and includes for AC_HEADER_DIRENT, of course). vips-8.2.2/AUTHORS0000664000175000017500000000172212530402247010500 00000000000000Authors of VIPS See also the files THANKS and ChangeLog Nicos Dessipris and Kirk Martinez started VIPS in 1990. John Cupitt started ip in late 1990, and took over maintenance of the VIPS library in 1995. Ruven Pillay, Steve Perry, Lars Raffelt, David Saunders, Jean-Philippe Laurant, Ahmed Abood, Helene Chahine, Joe Padfield, Andrey Kiselev, Lev Serebryakov, Simon Goodall, Konrad Lang, Markus Wollgarten, Jesper Friis, Tom Vajzovic, Chris Leick and others contributed patches for the library and ip. Hans Breuer contributed many win32 compatibility fixes and a win32 build system. Dennis Lubert cleaned up the C++ API. Jose Manuel Menendez Garcia, Javier Alejandre Arenas, and Juan Torres Arjona contributed the tmake VIPS.DLL build system and the MSVC project files. Nicolas Robidoux contributed optimized bilinear and bicubic code to the VipsInterpolate class and, with Chantal Racette and Adam Turcotte, contributed the novel LBB, Nohalo and VSQBS interpolators. vips-8.2.2/ltmain.sh0000644000175000017500000105203012651721155011253 00000000000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.2 Debian-2.4.2-1.11" TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 vips-8.2.2/NEWS0000664000175000017500000002216312530402247010131 00000000000000VIPS changed from 7.10 to 7.12 (not exhaustive, see ChangeLog for details) Non-backwards compatible changes ================================ - IMAGE->Hist is deprecated, use im_history_get() instead - im_append_Hist() removed - IMAGE->Bbits is deprecated (now ignored) - im_region_local() replaced by im_region_buffer() VIPS enhancements ================= - new backwards and forwards compatible VIPS file format: it has a new metadata system that efficiently shares and propogates ICC profiles, EXIF data, etc. & whatever - speed ups: new pixel buffer cache saves and reuses computations, uses liboil where possible for a small speedup - SMP scaling: simplified lock system improves SMP scaling, double-buffered image writes overlap computation - lower mem use: new mmap window cache shares file mappings, history buffers share and reuse image history metadata - built-in support for new image formats: OpenEXR, Analyze7, CSV - RGB16 and GREY16 image hints - uses GOption for much better command-line argument handling - better C++ binding: namespaces, VError derives from std::exception, image and number vector constants - python binding - gcc sentinel attributes added - added GValue as an arg type - added im_benchmark() and friends for testing - new functions: im_analyze2vips(), im_benchmark*(), im_buildlut(), im_concurrency_get/set(), im_contrast_surface(), im_contrast_surface_raw(), im_copy_from(), im_copy_morph(), im_cp_desc_array(), im_cp_descv(), im_extract_areabands(), im_flood_blob_copy(), im_get_option_group(), im_grid(), im_header_exists(), im_header_map(), im_history_get(), im_invalidate(), im_isscalar(), im_lineset(), im_linreg(), im_meta*(), im_msb(), im_norm_dmask(), im_project(), im_raw2vips(), IM_REGION_ADDR_TOPLEFT(), im_tile_cache(), im_video_test() VIPS changed from 7.8 to 7.10 (not exhaustive, see ChangeLog for details) Non-backwards compatible changes ================================ - no longer generates vips-config script, instead it makes .pc files for pkg-config ... replace any "vips-config" with "pkg-config vips-7.10" - origin hint semantics changed ... it now records the position in the output image of the origin of the input image - all float to int casts on pixel values are now floor() rather than rint(), for consistency with C casting semantics VIPS enhancements ================= - nip reworked for gtk+-2.4, now called nip2 - now based on glib, so VIPS no longer has it's own thread, plugin and data structure libraries - i18n support, although not quite complete yet - new error message API to make i18n possible (compatibility macros mean the old API still works) - new 'start up VIPS' call, im_init_world(), sets up i18n and threads (optional to call it, but i18n won't fully work unless you do) - C programs now just need "#include ", no other includes required - wraps the Pango font rendering library, see im_text() - new function flag: NOCACHE ... means the result of the call should not be cached, useful for video grab functions and paintbox functions - im_embed() now supports a wider range of embedding styles, including a fast edge stretch - all area operations use the new embed style to expand their input rather than their output, so there are no more black borders on filtered images - other new functions: im_render(), im_cache(), im_extract_bands(), im_copy_swap(), im_rint(), im_make_xy(), im_init_world(), im_error(), im_warn(), im_diag(), im_rank_image(), im_replicate() - many fixes and improvements to old funcs - configure and portability improvements Bug fixes ========= - all serious bug fixes got back-ported to 7.8, I think VIPS changes from 7.6 to 7.8 (again, not exhaustive, see ChangeLog for details) Non-backwards compatible changes ================================ - output format options specified in filenames: new prototypes for load and save tiff and jpeg - C++ API name changes ... error => VError - include path change - C includes - C++ includes - im_extract*() numbers bands from zero, not from 1 ... also other funcs which refer to bands (eg. im_lrmosaic() etc.) - mosaic funcs have extra max blend width parameter VIPS enhancements ================= - rewritten and much fancier ip (see separate docs), now called nip ... old ip (slightly fixed) still there - mmap windows remove 2GB image size limit - images have an origin hint field - icc transforms supported via wrapping of Little CMS - much, much faster Fourier transforms via wrapping of libfwfft - ppm/pgm/pbm read/write - C++ API enhancements: new constructors, more operator equivalences - new colourspace: Yxy - support for D50 colour temperature images - new functions: im_image(), im_system(), im_version*(), im_blend(), im_copy_set(), im_flood_blob(), im_icc_*(), im_open_local_array(), im_header_*(), im_sign(), im_ceil(), im_floor(), im_remainderconst*(), im_print(), im_guess_prefix(), im_remosaic(), im_invertlut(), Yxy funcs, color temperature funcs, im_clip2fmt(), im_blend(), im_lab_morph(), im_histnorm(), im_histcum(), im_video_v4l(), im_LabS2Lab(), im_Lab2LabS() - new type: IMAGEVEC - header is much faster - ip/nip split to separate packages - better vips2dj - better cygwin support, mingw support too - Mac OS X and Windows build support - new set of sensible #define names, old names can be turned off with -DIM_NO_VIPS7_COMPAT - many configure improvements Bug fixes ========= - speed ups - fixes to implicit image format conversions - im_zoom() spots integer overflow - im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0 - fixes to refcounting in C++ API - mask casts in C++ were broken VIPS Changes for 7.4 to 7.6 Non-backwards compatible changes ================================ - im_histplot() has new (and better) rules - im_andconst(), im_orconst() and im_eorconst() now take a double, not an unsigned char, as their constant argument type - im_global_balance_float() renamed as im_global_balancef() to be more consistent with other functions - im_global_balance_search() removed ... you can do this efficiently with an ip macro now - new parameter "gamma" to im_global_balance() and im_global_balancef() ... sets the gamma for the input device with which the images were captured, set to 1.0 for old behaviour - im_malloc() now returns void *, not char * Bug fixes ========= - tiny memory leak in im_list_remove() fixed - oops, the value for sRGB in the header was wrong, now 22 - missing function descriptor for im_rank_raw() - im_dECMC_fromLab() was broken - im_erode() and im_dilate() output incorrect error messages if mask elements were not one of 0, 128, 255 - im_rotate_*mask*() functions were not preserving scale and offset values Package enhancements ==================== The whole thing is now GPL, with GNU configure ip changes ========== - better display control bar - matrix operations now appear in the workspace - new UI elements: input options and toggles - better LUT optimisation --- arithmetic operations on UCHAR images should be much faster - new macro language --- same as old one, but faster and much more powerful - all standard menus rewritten in new macro language, much nicer! - batch operations with Group/Ungroup - now uses GDK for drawing in image windows, much better colour handling on 8/16-bit graphics cards - image repaint is now threaded for an about-linear speedup as you add more CPUs - many interface improvements and polishes VIPS enhancements ================= - VIPS now uses POSIX threads (7.4 used Solaris threads) and has been rejigged to provide a nice threading API to functions which call the library - im_open() now knows about LSB- and MSB- first VIPS images, and silently converts them to native order ... it also now ignores case when deciding what format to write - new parameter type IM_INPUT_REALVEC, a vector of doubles - new set of functions with vector constants: im_lintra_vec(), im_powtra_vec(), im_expntra_vec(), all relational (im_equal_vec(), im_notequal_vec(), etc.), all boolean (im_and_vec() etc.) - new flag for function descriptors: "IM_FN_PTOP" set for point-to-point functions ... makes ip use LUTs for operation - im_tiff2vips() now reads and writes 16-bit images, and knows about zip (deflate) compression - convenience functions im_extract_band() extracts a band from an image; im_extract_area() extracts an area - im_list_member() tests for list contains object - new functions im_write_*mask_name(), im_create_*maskv() _ new functions im_remainder() and im_profile() - fourier filtering, forward transform, reverse transform, make power spectrum all free memory more quickly, making them suitable for very large images - new functions im_isMSBfirst() and im_amiMSBfirst() test images and this processor for MSB first byte order - im_malloc() now prints low-on-memory warnings to stderr with im_warning() for easier bug catching - D65_X0 updated for latest recommedations, D60, D93, D55, D50, A, B, C added - minor fixes to the C++ interface to bring it in line with the newer ANSI standards - more and more comprehensive prototypes in "proto.h" to aid C++ (use of "const" etc.) - im_and*(), im_or*() and im_eor*() can now work on any integer image vips-8.2.2/config.guess0000755000175000017500000012355012651721156011761 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-03-23' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: vips-8.2.2/bootstrap.sh0000775000175000017500000000401512530402247012002 00000000000000#!/bin/sh # set -x # a bunch of cleaning up ... make certain everything will be regenerated rm -f Makefile Makefile.in aclocal.m4 rm -rf autom4te.cache rm -f m4/* rm -f config.* configure depcomp rm -f install-sh intltool-* libtool ltmain.sh missing mkinstalldirs rm -f stamp-* vipsCC-7.19.pc vips-7.19.spec vips-7.19.pc rm -f swig/vipsCC/*.cxx rm -f swig/vipsCC/VImage.h rm -f swig/vipsCC/VImage.py python/vipsCC/VError.py python/vipsCC/VMask.py python/vipsCC/Display.py rm -f benchmark/temp* ( mkdir poop ; \ mv doc/libvips-docs.xml.in poop ; \ mv doc/Makefile.am poop ; \ mv doc/images poop ; \ mv doc/*.xml poop ; \ mv doc/*.py poop ; \ rm -rf doc/* ; \ mv poop/* doc ; \ rmdir poop \ ) # glib-gettextize asks us to copy these files to m4 if they aren't there # I don't have $ACDIR/isc-posix.m4, how mysterious ACDIR=`aclocal --print-ac-dir` # OS X with brew sets ACDIR to # /usr/local/Cellar/automake/1.13.1/share/aclocal, the staging area, which is # totally wrong argh if [ ! -d $ACDIR ]; then ACDIR=/usr/local/share/aclocal fi mkdir -p m4 cp $ACDIR/codeset.m4 m4 cp $ACDIR/gettext.m4 m4 cp $ACDIR/glibc21.m4 m4 cp $ACDIR/iconv.m4 m4 cp $ACDIR/lcmessage.m4 m4 cp $ACDIR/progtest.m4 m4 cp $ACDIR/introspection.m4 m4 gtkdocize --copy --docdir doc --flavour no-tmpl || exit 1 # some systems need libtoolize, some glibtoolize ... how annoying echo testing for glibtoolize ... if glibtoolize --version >/dev/null 2>&1; then LIBTOOLIZE=glibtoolize echo using glibtoolize else LIBTOOLIZE=libtoolize echo using libtoolize fi test -r aclocal.m4 || touch aclocal.m4 # gettextize produces quite a bit of benign and misleading text output, hide # it ... hopefully any errors will go to stderr and not be hidden glib-gettextize --force --copy > /dev/null test -r aclocal.m4 && chmod u+w aclocal.m4 # intltoolize --copy --force --automake aclocal autoconf autoheader $LIBTOOLIZE --copy --force --automake automake --add-missing --copy swig -version > /dev/null if [ $? -ne 0 ]; then echo you need swig to build from source control fi vips-8.2.2/vipsCC.pc.in0000664000175000017500000000035312530402247011547 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: vipsCC Description: deprecated C++ API for vips image processing library Version: @VERSION@ Requires: vips = @VERSION@ Libs: -L${libdir} -lvipsCC vips-8.2.2/libvips/0000775000175000017500000000000012651721506011164 500000000000000vips-8.2.2/libvips/create/0000775000175000017500000000000012651721506012427 500000000000000vips-8.2.2/libvips/create/sines.c0000664000175000017500000001060212530402247013625 00000000000000/* creates a 2d sinewave * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/02/1990 * Modified on: * 22/7/93 JC * - externs removed * - im_outcheck() added * 1/2/11 * - gtk-doc * 13/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" typedef struct _VipsSines { VipsPoint parent_instance; double hfreq; double vfreq; double c; double sintheta; double costheta; } VipsSines; typedef VipsPointClass VipsSinesClass; G_DEFINE_TYPE( VipsSines, vips_sines, VIPS_TYPE_POINT ); static float vips_sines_point( VipsPoint *point, int x, int y ) { VipsSines *sines = (VipsSines *) point; return( cos( sines->c * (x * sines->costheta - y * sines->sintheta) ) ); } static int vips_sines_build( VipsObject *object ) { VipsPoint *point = VIPS_POINT( object ); VipsSines *sines = (VipsSines *) object; double theta; double factor; if( VIPS_OBJECT_CLASS( vips_sines_parent_class )->build( object ) ) return( -1 ); theta = sines->hfreq == 0.0 ? VIPS_PI / 2.0 : atan( sines->vfreq / sines->hfreq ); factor = sqrt( sines->hfreq * sines->hfreq + sines->vfreq * sines->vfreq ); sines->costheta = cos( theta ); sines->sintheta = sin( theta ); sines->c = factor * VIPS_PI * 2.0 / point->width; return( 0 ); } static void vips_sines_class_init( VipsSinesClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "sines"; vobject_class->description = _( "make a 2D sine wave" ); vobject_class->build = vips_sines_build; point_class->point = vips_sines_point; VIPS_ARG_DOUBLE( class, "hfreq", 6, _( "hfreq" ), _( "Horizontal spatial frequency" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSines, hfreq ), 0.0, 10000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "vfreq", 7, _( "vfreq" ), _( "Vertical spatial frequency" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSines, vfreq ), 0.0, 10000.0, 0.5 ); } static void vips_sines_init( VipsSines *sines ) { sines->hfreq = 0.5; sines->vfreq = 0.5; } /** * vips_sines: * @out: output image * @width: image size * @height: image size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @hfreq: horizontal frequency * @vreq: vertical frequency * @uchar: output a uchar image * * Creates a float one band image of the a sine waveform in two * dimensions. * * The number of horizontal and vertical spatial frequencies are * determined by the variables @hfreq and @vfreq respectively. The * function is useful for creating displayable sine waves and * square waves in two dimensions. * * If horfreq and verfreq are integers the resultant image is periodical * and therfore the Fourier transform does not present spikes * * Pixels are normally in [-1, +1], set @uchar to output [0, 255]. * * See also: vips_grey(), vips_xyz(). * * Returns: 0 on success, -1 on error */ int vips_sines( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "sines", ap, out, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/pmask.h0000664000175000017500000001116712530402247013633 00000000000000/* base class for mask generators */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PMASK_H #define VIPS_PMASK_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* vips7compat.h defines VIPS_MASK(), an old compat macro. */ #ifdef VIPS_MASK #undef VIPS_MASK #endif /*VIPS_MASK*/ #define VIPS_TYPE_MASK (vips_mask_get_type()) #define VIPS_MASK( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MASK, VipsMask )) #define VIPS_MASK_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MASK, VipsMaskClass)) #define VIPS_IS_MASK( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MASK )) #define VIPS_IS_MASK_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MASK )) #define VIPS_MASK_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MASK, VipsMaskClass )) typedef struct _VipsMask { VipsPoint parent_instance; gboolean optical; gboolean reject; gboolean nodc; } VipsMask; typedef struct _VipsMaskClass { VipsPointClass parent_class; double (*point)( VipsMask *, double, double ); } VipsMaskClass; GType vips_mask_get_type( void ); #define VIPS_TYPE_MASK_IDEAL (vips_mask_ideal_get_type()) #define VIPS_MASK_IDEAL( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MASK_IDEAL, VipsMaskIdeal )) #define VIPS_MASK_IDEAL_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MASK_IDEAL, VipsMaskIdealClass)) #define VIPS_IS_MASK_IDEAL( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MASK_IDEAL )) #define VIPS_IS_MASK_IDEAL_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MASK_IDEAL )) #define VIPS_MASK_IDEAL_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MASK_IDEAL, VipsMaskIdealClass )) typedef struct _VipsMaskIdeal { VipsMask parent_instance; double frequency_cutoff; } VipsMaskIdeal; typedef VipsMaskClass VipsMaskIdealClass; GType vips_mask_ideal_get_type( void ); #define VIPS_TYPE_MASK_BUTTERWORTH (vips_mask_butterworth_get_type()) #define VIPS_MASK_BUTTERWORTH( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MASK_BUTTERWORTH, VipsMaskButterworth )) #define VIPS_MASK_BUTTERWORTH_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MASK_BUTTERWORTH, VipsMaskButterworthClass)) #define VIPS_IS_MASK_BUTTERWORTH( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MASK_BUTTERWORTH )) #define VIPS_IS_MASK_BUTTERWORTH_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MASK_BUTTERWORTH )) #define VIPS_MASK_BUTTERWORTH_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MASK_BUTTERWORTH, VipsMaskButterworthClass )) typedef struct _VipsMaskButterworth { VipsMask parent_instance; double order; double frequency_cutoff; double amplitude_cutoff; } VipsMaskButterworth; typedef VipsMaskClass VipsMaskButterworthClass; GType vips_mask_butterworth_get_type( void ); #define VIPS_TYPE_MASK_GAUSSIAN (vips_mask_gaussian_get_type()) #define VIPS_MASK_GAUSSIAN( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MASK_GAUSSIAN, VipsMaskGaussian )) #define VIPS_MASK_GAUSSIAN_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MASK_GAUSSIAN, VipsMaskGaussianClass)) #define VIPS_IS_MASK_GAUSSIAN( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MASK_GAUSSIAN )) #define VIPS_IS_MASK_GAUSSIAN_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MASK_GAUSSIAN )) #define VIPS_MASK_GAUSSIAN_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MASK_GAUSSIAN, VipsMaskGaussianClass )) typedef struct _VipsMaskGaussian { VipsMask parent_instance; double frequency_cutoff; double amplitude_cutoff; } VipsMaskGaussian; typedef VipsMaskClass VipsMaskGaussianClass; GType vips_mask_gaussian_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PMASK_H*/ vips-8.2.2/libvips/create/grey.c0000664000175000017500000000562512530402247013463 00000000000000/* grey ramps * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/02/1990 * Modified on: * 22/7/93 JC * - im_outcheck() added * - externs removed * 8/2/95 JC * - ANSIfied * - im_fgrey() made from im_grey() * 31/8/95 JC * - now makes [0,1], rather than [0,256) * - im_grey() now defined in terms of im_fgrey() * 2/3/98 JC * - partialed * 1/2/11 * - gtk-doc * 13/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" typedef VipsPoint VipsGrey; typedef VipsPointClass VipsGreyClass; G_DEFINE_TYPE( VipsGrey, vips_grey, VIPS_TYPE_POINT ); static float vips_grey_point( VipsPoint *point, int x, int y ) { return( (double) x / (point->width - 1) ); } static void vips_grey_class_init( VipsGreyClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); vobject_class->nickname = "grey"; vobject_class->description = _( "make a grey ramp image" ); point_class->point = vips_grey_point; point_class->min = 0.0; point_class->max = 1.0; } static void vips_grey_init( VipsGrey *grey ) { } /** * vips_grey: * @out: output image * @width: image size * @height: image size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @uchar: output a uchar image * * Create a one-band float image with the left-most column zero and the * right-most 1. Intermediate pixels are a linear ramp. * * Set @uchar to output a uchar image with the leftmost pixel 0 and the * rightmost 255. * * See also: vips_xyz(), vips_identity(). * * Returns: 0 on success, -1 on error */ int vips_grey( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "grey", ap, out, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/point.h0000664000175000017500000000371712530402247013653 00000000000000/* base class for point generators */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_POINT_H #define VIPS_POINT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_POINT (vips_point_get_type()) #define VIPS_POINT( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_POINT, VipsPoint )) #define VIPS_POINT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_POINT, VipsPointClass)) #define VIPS_IS_POINT( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_POINT )) #define VIPS_IS_POINT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_POINT )) #define VIPS_POINT_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_POINT, VipsPointClass )) typedef struct _VipsPoint { VipsCreate parent_instance; int width; int height; gboolean uchar; } VipsPoint; typedef struct _VipsPointClass { VipsCreateClass parent_class; float (*point)( VipsPoint *, int, int ); float min; float max; VipsInterpretation interpretation; } VipsPointClass; GType vips_point_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_POINT_H*/ vips-8.2.2/libvips/create/mask_ideal.c0000664000175000017500000001025112530402247014575 00000000000000/* creates an ideal filter. * * 02/01/14 * - from ideal.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" G_DEFINE_TYPE( VipsMaskIdeal, vips_mask_ideal, VIPS_TYPE_MASK ); static double vips_mask_ideal_point( VipsMask *mask, double dx, double dy ) { VipsMaskIdeal *ideal = (VipsMaskIdeal *) mask; double fc = ideal->frequency_cutoff; double dist2 = dx * dx + dy * dy; double fc2 = fc * fc; return( dist2 <= fc2 ? 0.0 : 1.0 ); } static void vips_mask_ideal_class_init( VipsMaskIdealClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_ideal"; vobject_class->description = _( "make an ideal filter" ); mask_class->point = vips_mask_ideal_point; VIPS_ARG_DOUBLE( class, "frequency_cutoff", 6, _( "Frequency cutoff" ), _( "Frequency cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdeal, frequency_cutoff ), 0.0, 1000000.0, 0.5 ); } static void vips_mask_ideal_init( VipsMaskIdeal *ideal ) { ideal->frequency_cutoff = 0.5; } /** * vips_mask_ideal: * @out: output image * @width: image size * @height: image size * @frequency_cutoff: threshold at which filter ends * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * Make an ideal high- or low-pass filter, that is, one with a sharp cutoff * positioned at @frequency_cutoff, where @frequency_cutoff is in * the range 0 - 1. * * This operation creates a one-band float image of the specified size. * The image has * values in the range [0, 1] and is typically used for multiplying against * frequency domain images to filter them. * Masks are created with the DC component at (0, 0). The DC pixel always * has the value 1.0. * * Set @nodc to not set the DC pixel. * * Set @optical to position the DC component in the centre of the image. This * makes the mask suitable for multiplying against optical Fourier transforms. * See vips_wrap(). * * Set @reject to invert the sense of * the filter. For example, low-pass becomes low-reject. * * Set @uchar to output an 8-bit unsigned char image rather than a * float image. In this case, pixels are in the range [0 - 255]. * * See also: vips_mask_ideal(), vips_mask_ideal_ring(), * vips_mask_ideal_band(), vips_mask_butterworth(), * vips_mask_butterworth_ring(), vips_mask_butterworth_band(), * vips_mask_gaussian(), vips_mask_gaussian_ring(), * vips_mask_gaussian_band(). * * Returns: 0 on success, -1 on error */ int vips_mask_ideal( VipsImage **out, int width, int height, double frequency_cutoff, ... ) { va_list ap; int result; va_start( ap, frequency_cutoff ); result = vips_call_split( "mask_ideal", ap, out, width, height, frequency_cutoff ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/create.c0000664000175000017500000001134612530402247013755 00000000000000/* base class for all create operations * * properties: * - single output image we build */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" /** * SECTION: create * @short_description: create images in various ways * @stability: Stable * @include: vips/vips.h * * These functions generate various test images. You can combine them with * the arithmetic and rotate functions to build more complicated images. * * The im_benchmark() operations are for testing the VIPS SMP system. */ G_DEFINE_ABSTRACT_TYPE( VipsCreate, vips_create, VIPS_TYPE_OPERATION ); static int vips_create_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); #ifdef DEBUG printf( "vips_create_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_set( create, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_create_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_create_class_init( VipsCreateClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "create"; vobject_class->description = _( "create operations" ); vobject_class->build = vips_create_build; VIPS_ARG_IMAGE( class, "out", 1, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsCreate, out ) ); } static void vips_create_init( VipsCreate *create ) { } void vips_create_operation_init( void ) { extern GType vips_black_get_type( void ); extern GType vips_gaussmat_get_type( void ); extern GType vips_logmat_get_type( void ); extern GType vips_gaussnoise_get_type( void ); #ifdef HAVE_PANGOFT2 extern GType vips_text_get_type( void ); #endif /*HAVE_PANGOFT2*/ extern GType vips_xyz_get_type( void ); extern GType vips_eye_get_type( void ); extern GType vips_grey_get_type( void ); extern GType vips_zone_get_type( void ); extern GType vips_sines_get_type( void ); extern GType vips_buildlut_get_type( void ); extern GType vips_invertlut_get_type( void ); extern GType vips_tonelut_get_type( void ); extern GType vips_identity_get_type( void ); extern GType vips_mask_butterworth_get_type( void ); extern GType vips_mask_butterworth_ring_get_type( void ); extern GType vips_mask_butterworth_band_get_type( void ); extern GType vips_mask_gaussian_get_type( void ); extern GType vips_mask_gaussian_ring_get_type( void ); extern GType vips_mask_gaussian_band_get_type( void ); extern GType vips_mask_ideal_get_type( void ); extern GType vips_mask_ideal_ring_get_type( void ); extern GType vips_mask_ideal_band_get_type( void ); extern GType vips_mask_fractal_get_type( void ); extern GType vips_fractsurf_get_type( void ); vips_black_get_type(); vips_gaussmat_get_type(); vips_logmat_get_type(); vips_gaussnoise_get_type(); #ifdef HAVE_PANGOFT2 vips_text_get_type(); #endif /*HAVE_PANGOFT2*/ vips_xyz_get_type(); vips_eye_get_type(); vips_grey_get_type(); vips_zone_get_type(); vips_sines_get_type(); vips_buildlut_get_type(); vips_invertlut_get_type(); vips_tonelut_get_type(); vips_identity_get_type(); vips_mask_ideal_get_type(); vips_mask_ideal_ring_get_type(); vips_mask_ideal_band_get_type(); vips_mask_butterworth_get_type(); vips_mask_butterworth_ring_get_type(); vips_mask_butterworth_band_get_type(); vips_mask_gaussian_get_type(); vips_mask_gaussian_ring_get_type(); vips_mask_gaussian_band_get_type(); vips_mask_fractal_get_type(); vips_fractsurf_get_type(); } vips-8.2.2/libvips/create/mask_gaussian.c0000664000175000017500000000716712530402247015345 00000000000000/* creates a gaussian filter. * * 02/01/14 * - from gaussian.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" G_DEFINE_TYPE( VipsMaskGaussian, vips_mask_gaussian, VIPS_TYPE_MASK ); static double vips_mask_gaussian_point( VipsMask *mask, double dx, double dy ) { VipsMaskGaussian *gaussian = (VipsMaskGaussian *) mask; double fc = gaussian->frequency_cutoff; double ac = gaussian->amplitude_cutoff; double cnst = log( ac ); double fc2 = fc * fc; double dist2 = (dx * dx + dy * dy) / fc2; return( 1.0 - exp( cnst * dist2 ) ); } static void vips_mask_gaussian_class_init( VipsMaskGaussianClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_gaussian"; vobject_class->description = _( "make a gaussian filter" ); mask_class->point = vips_mask_gaussian_point; VIPS_ARG_DOUBLE( class, "frequency_cutoff", 7, _( "Frequency cutoff" ), _( "Frequency cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussian, frequency_cutoff ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "amplitude_cutoff", 8, _( "Amplitude cutoff" ), _( "Amplitude cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussian, amplitude_cutoff ), 0.0, 1.0, 0.5 ); } static void vips_mask_gaussian_init( VipsMaskGaussian *gaussian ) { gaussian->frequency_cutoff = 0.5; gaussian->amplitude_cutoff = 0.5; } /** * vips_mask_gaussian: * @out: output image * @width: image size * @height: image size * @frequency_cutoff: frequency threshold * @amplitude_cutoff: amplitude threshold * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * Make a gaussian high- or low-pass filter, that is, one with a variable, * smooth transition positioned at @frequency_cutoff. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_gaussian( VipsImage **out, int width, int height, double frequency_cutoff, double amplitude_cutoff, ... ) { va_list ap; int result; va_start( ap, amplitude_cutoff ); result = vips_call_split( "mask_gaussian", ap, out, width, height, frequency_cutoff, amplitude_cutoff ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/xyz.c0000664000175000017500000001434012630030144013333 00000000000000/* make an xy index image * * 21/4/04 * - from im_grey * 1/2/11 * - gtk-doc * 31/10/11 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsXyz { VipsCreate parent_instance; int width; int height; int csize; int dsize; int esize; int dimensions; } VipsXyz; typedef VipsCreateClass VipsXyzClass; G_DEFINE_TYPE( VipsXyz, vips_xyz, VIPS_TYPE_CREATE ); static int vips_xyz_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsXyz *xyz = (VipsXyz *) a; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int ri = VIPS_RECT_RIGHT( r ); int bo = VIPS_RECT_BOTTOM( r ); int x, y, i; for( y = to; y < bo; y++ ) { unsigned int *q = (unsigned int *) VIPS_REGION_ADDR( or, le, y ); unsigned int dims[5]; int r; int h; h = xyz->height * xyz->csize * xyz->dsize; dims[4] = y / h; r = y % h; h /= xyz->dsize; dims[3] = r / h; r %= h; h /= xyz->csize; dims[2] = r / h; r %= h; dims[1] = r; for( x = le; x < ri; x++ ) { dims[0] = x; for( i = 0; i < xyz->dimensions; i++ ) q[i] = dims[i]; q += xyz->dimensions; } } return( 0 ); } static int vips_xyz_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsXyz *xyz = (VipsXyz *) object; double d; int ysize; if( VIPS_OBJECT_CLASS( vips_xyz_parent_class )->build( object ) ) return( -1 ); if( (vips_object_argument_isset( object, "dsize" ) && !vips_object_argument_isset( object, "csize" )) || (vips_object_argument_isset( object, "esize" ) && !vips_object_argument_isset( object, "dsize" )) ) { vips_error( class->nickname, "%s", _( "lower dimensions not set" ) ); return( -1 ); } if( vips_object_argument_isset( object, "csize" ) ) { xyz->dimensions += 1; if( vips_object_argument_isset( object, "dsize" ) ) { xyz->dimensions += 1; if( vips_object_argument_isset( object, "esize" ) ) xyz->dimensions += 1; } } d = (double) xyz->height * xyz->csize * xyz->dsize * xyz->esize; if( d > INT_MAX ) { vips_error( class->nickname, "%s", _( "image too large" ) ); return( -1 ); } ysize = d; vips_image_init_fields( create->out, xyz->width, ysize, xyz->dimensions, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( create->out, NULL, vips_xyz_gen, NULL, xyz, NULL ) ) return( -1 ); return( 0 ); } static void vips_xyz_class_init( VipsXyzClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_xyz_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "xyz"; vobject_class->description = _( "make an image where pixel values are coordinates" ); vobject_class->build = vips_xyz_build; VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsXyz, width ), 1, VIPS_MAX_COORD, 64 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsXyz, height ), 1, VIPS_MAX_COORD, 64 ); VIPS_ARG_INT( class, "csize", 6, _( "csize" ), _( "Size of third dimension" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsXyz, csize ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "dsize", 7, _( "dsize" ), _( "Size of fourth dimension" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsXyz, dsize ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "esize", 8, _( "esize" ), _( "Size of fifth dimension" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsXyz, esize ), 1, VIPS_MAX_COORD, 1 ); } static void vips_xyz_init( VipsXyz *xyz ) { xyz->width = 64; xyz->height = 64; xyz->dimensions = 2; xyz->csize = 1; xyz->dsize = 1; xyz->esize = 1; } /** * vips_xyz: * @out: output image * @width: horizontal size * @height: vertical size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @csize: size for third dimension * @dsize: size for fourth dimension * @esize: size for fifth dimension * * Create a two-band uint32 image where the elements in the first band have the * value of their x coordinate and elements in the second band have their y * coordinate. * * You can make any image where the value of a pixel is a function of its (x, * y) coordinate by combining this operator with the arithmetic operators. * * Set @csize, @dsize, @esize to generate higher dimensions and add more * bands. The extra dimensions are placed down the vertical axis. Use * vips_grid() to change the layout. * * See also: vips_grey(), vips_grid(), vips_identity(). * * Returns: 0 on success, -1 on error */ int vips_xyz( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "xyz", ap, out, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/invertlut.c0000664000175000017500000002141012530402247014537 00000000000000/* invert a lut * * Written on: 5/6/01 * Modified on : * * 7/7/03 JC * - generate image rather than doublemask (arrg) * 23/3/10 * - gtkdoc * 23/5/13 * - fix 1 high input matrices * - fix file output * 4/9/13 * - convert to a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcreate.h" /* #define DEBUG */ /* Our state. */ typedef struct _VipsInvertlut { VipsCreate parent_instance; /* Input image. */ VipsImage *in; /* .. and cast to a matrix. */ VipsImage *mat; int size; /* Number of output elements to generate */ double **data; /* Rows of unpacked matrix */ double *buf; /* Output buffer */ } VipsInvertlut; typedef VipsCreateClass VipsInvertlutClass; G_DEFINE_TYPE( VipsInvertlut, vips_invertlut, VIPS_TYPE_CREATE ); static void vips_invertlut_dispose( GObject *gobject ) { VipsInvertlut *lut = (VipsInvertlut *) gobject; VIPS_FREE( lut->data ); VIPS_FREE( lut->buf ); VIPS_UNREF( lut->mat ); G_OBJECT_CLASS( vips_invertlut_parent_class )->dispose( gobject ); } /* Use this to sort our input rows by the first column. */ static int compare( const void *a, const void *b ) { double **r1 = (double **) a; double **r2 = (double **) b; double diff = r1[0][0] - r2[0][0]; if( diff > 0 ) return( 1 ); else if( diff == 0 ) return( 0 ); else return( -1 ); } static int vips_invertlut_build_init( VipsInvertlut *lut ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( lut ); int x, y; if( !lut->mat || lut->mat->Xsize < 2 || lut->mat->Ysize < 1 ) { vips_error( class->nickname, "%s", _( "bad input matrix" ) ); return( -1 ); } if( lut->size < 1 || lut->size > 65536 ) { vips_error( class->nickname, "%s", _( "bad size" ) ); return( -1 ); } if( !(lut->buf = VIPS_ARRAY( NULL, lut->size * (lut->mat->Xsize - 1), double )) ) return( -1 ); if( !(lut->data = VIPS_ARRAY( NULL, lut->mat->Ysize, double * )) ) return( -1 ); for( y = 0; y < lut->mat->Ysize; y++ ) lut->data[y] = VIPS_MATRIX( lut->mat, 0, y ); /* Sanity check for data range. */ for( y = 0; y < lut->mat->Ysize; y++ ) for( x = 0; x < lut->mat->Xsize; x++ ) if( lut->data[y][x] > 1.0 || lut->data[y][x] < 0.0 ) { vips_error( class->nickname, _( "element (%d, %d) is %g, " "outside range [0,1]" ), x, y, lut->data[y][x] ); return( -1 ); } /* Sort by 1st column in input. */ qsort( lut->data, lut->mat->Ysize, sizeof( double * ), compare ); #ifdef DEBUG printf( "Input table, sorted by 1st column\n" ); for( y = 0; y < lut->mat->Ysize; y++ ) { printf( "%.4d ", y ); for( x = 0; x < lut->mat->Xsize; x++ ) printf( "%.9f ", lut->data[y][x] ); printf( "\n" ); } #endif /*DEBUG*/ return( 0 ); } static int vips_invertlut_build_create( VipsInvertlut *lut ) { int bands = lut->mat->Xsize - 1; int height = lut->mat->Ysize; int b; /* Do each output channel separately. */ for( b = 0; b < bands; b++ ) { /* The first and last lut positions we know real values for. */ int first = lut->data[0][b + 1] * (lut->size - 1); int last = lut->data[height - 1][b + 1] * (lut->size - 1); int k; /* Extrapolate bottom and top segments to (0,0) and (1,1). */ for( k = 0; k < first; k++ ) { /* Have this inside the loop to avoid /0 errors if * first == 0. */ double fac = lut->data[0][0] / first; lut->buf[b + k * bands] = k * fac; } for( k = last; k < lut->size; k++ ) { /* Inside the loop to avoid /0 errors for last == * (size - 1). */ double fac = (1 - lut->data[height - 1][0]) / ((lut->size - 1) - last); lut->buf[b + k * bands] = lut->data[height - 1][0] + (k - last) * fac; } /* Interpolate the data sections. */ for( k = first; k < last; k++ ) { /* Where we're at in the [0,1] range. */ double ki = (double) k / (lut->size - 1); double irange, orange; int j; /* Search for the lowest real value < ki. There may * not be one: if not, just use 0. Tiny error. */ for( j = height - 1; j >= 0; j-- ) if( lut->data[j][b + 1] < ki ) break; if( j == -1 ) j = 0; /* Interpolate k as being between row data[j] and row * data[j + 1]. */ irange = lut->data[j + 1][b + 1] - lut->data[j][b + 1]; orange = lut->data[j + 1][0] - lut->data[j][0]; lut->buf[b + k * bands] = lut->data[j][0] + orange * ((ki - lut->data[j][b + 1]) / irange); } } return( 0 ); } static int vips_invertlut_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsInvertlut *lut = (VipsInvertlut *) object; if( VIPS_OBJECT_CLASS( vips_invertlut_parent_class )->build( object ) ) return( -1 ); if( vips_check_matrix( class->nickname, lut->in, &lut->mat ) ) return( -1 ); if( vips_invertlut_build_init( lut ) || vips_invertlut_build_create( lut ) ) return( -1 ); vips_image_init_fields( create->out, lut->size, 1, lut->mat->Xsize - 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( vips_image_write_line( create->out, 0, (VipsPel *) lut->buf ) ) return( -1 ); return( 0 ); } static void vips_invertlut_class_init( VipsInvertlutClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->dispose = vips_invertlut_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "invertlut"; vobject_class->description = _( "build an inverted look-up table" ); vobject_class->build = vips_invertlut_build; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Matrix of XY coordinates" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInvertlut, in ) ); VIPS_ARG_INT( class, "size", 5, _( "Size" ), _( "LUT size to generate" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsInvertlut, size ), 1, 1000000, 256 ); } static void vips_invertlut_init( VipsInvertlut *lut ) { lut->size = 256; } /** * vips_invertlut: * @in: input mask * @out: output LUT * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @size: generate this much * * Given a mask of target values and real values, generate a LUT which * will map reals to targets. Handy for linearising images from * measurements of a colour chart. All values in [0,1]. Piecewise linear * interpolation, extrapolate head and tail to 0 and 1. * * Eg. input like this: * * * * * 4 * 3 * * * 0.1 * 0.2 * 0.3 * 0.1 * * * 0.2 * 0.4 * 0.4 * 0.2 * * * 0.7 * 0.5 * 0.6 * 0.3 * * * * * Means a patch with 10% reflectance produces an image with 20% in * channel 1, 30% in channel 2, and 10% in channel 3, and so on. * * Inputs don't need to be sorted (we do that). Generate any precision * LUT, default to 256 elements. * * It won't work too well for non-monotonic camera responses * (we should fix this). Interpolation is simple piecewise linear; we ought to * do something better really. * * See also: vips_buildlut(). * * Returns: 0 on success, -1 on error */ int vips_invertlut( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "invertlut", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/mask_butterworth_ring.c0000664000175000017500000001041712530402247017133 00000000000000/* creates an butterworth filter. * * 02/01/14 * - from butterworth.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskButterworthRing { VipsMaskButterworth parent_instance; double ringwidth; } VipsMaskButterworthRing; typedef VipsMaskButterworthClass VipsMaskButterworthRingClass; G_DEFINE_TYPE( VipsMaskButterworthRing, vips_mask_butterworth_ring, VIPS_TYPE_MASK_BUTTERWORTH ); static double vips_mask_butterworth_ring_point( VipsMask *mask, double dx, double dy ) { VipsMaskButterworth *butterworth = (VipsMaskButterworth *) mask; VipsMaskButterworthRing *butterworth_ring = (VipsMaskButterworthRing *) mask; double order = butterworth->order; double fc = butterworth->frequency_cutoff; double ac = butterworth->amplitude_cutoff; double ringwidth = butterworth_ring->ringwidth; double df = ringwidth / 2.0; double cnst = (1.0 / ac) - 1.0; double df2 = df * df; double dist = sqrt( dx * dx + dy * dy ); return( 1.0 / (1.0 + cnst * pow( (dist - fc) * (dist - fc) / df2, order )) ); } static void vips_mask_butterworth_ring_class_init( VipsMaskButterworthRingClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_butterworth_ring"; vobject_class->description = _( "make a butterworth ring filter" ); mask_class->point = vips_mask_butterworth_ring_point; VIPS_ARG_DOUBLE( class, "ringwidth", 20, _( "Ringwidth" ), _( "Ringwidth" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthRing, ringwidth ), 0.0, 1000000.0, 0.1 ); } static void vips_mask_butterworth_ring_init( VipsMaskButterworthRing *butterworth_ring ) { butterworth_ring->ringwidth = 0.1; } /** * vips_mask_butterworth_ring: * @out: output image * @width: image size * @height: image size * @order: filter order * @frequency_cutoff: frequency threshold * @amplitude_cutoff: amplitude threshold * @ringwidth: ringwidth * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * Make a butterworth ring-pass or ring-reject filter, that is, one with a * variable, * smooth transition * positioned at @frequency_cutoff of width @width, where @frequency_cutoff is * in the range 0 - 1. The shape of the curve is controlled by * @order --- higher values give a sharper transition. See Gonzalez and Wintz, * Digital Image Processing, 1987. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_butterworth_ring( VipsImage **out, int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, double ringwidth, ... ) { va_list ap; int result; va_start( ap, ringwidth ); result = vips_call_split( "mask_butterworth_ring", ap, out, width, height, order, frequency_cutoff, amplitude_cutoff, ringwidth ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/logmat.c0000664000175000017500000001735512651663124014012 00000000000000/* laplacian of logmatian * * Written on: 30/11/1989 * Updated on: 6/12/1991 * 7/8/96 JC * - ansified, mem leaks plugged * 20/11/98 JC * - mask too large check added * 26/3/02 JC * - ahem, was broken since '96, thanks matt * 16/7/03 JC * - makes mask out to zero, not out to minimum, thanks again matt * 22/10/10 * - gtkdoc * 20/10/13 * - redone as a class from logmat.c * 16/12/14 * - default to int output to match vips_conv() * - use @precision, not @integer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsLogmat { VipsCreate parent_instance; double sigma; double min_ampl; gboolean separable; gboolean integer; /* Deprecated */ VipsPrecision precision; } VipsLogmat; typedef struct _VipsLogmatClass { VipsCreateClass parent_class; } VipsLogmatClass; G_DEFINE_TYPE( VipsLogmat, vips_logmat, VIPS_TYPE_CREATE ); static int vips_logmat_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsLogmat *logmat = (VipsLogmat *) object; double sig2 = logmat->sigma * logmat->sigma; double last; int x, y; int width, height; double sum; if( VIPS_OBJECT_CLASS( vips_logmat_parent_class )->build( object ) ) return( -1 ); /* The old, deprecated @integer property has been deliberately set to * FALSE and they've not used the new @precision property ... switch * to float to help them out. */ if( vips_object_argument_isset( object, "integer" ) && !vips_object_argument_isset( object, "precision" ) && !logmat->integer ) logmat->precision = VIPS_PRECISION_FLOAT; if( vips_check_precision_intfloat( class->nickname, logmat->precision ) ) return( -1 ); /* Find the size of the mask. We want to eval the mask out to the * flat zero part, ie. beyond the minimum and to the point where it * comes back up towards zero. */ last = 0.0; for( x = 0; x < 5000; x++ ) { const double distance = x * x; double val; /* Handbook of Pattern Recognition and image processing * by Young and Fu AP 1986 pp 220-221 * temp = (1.0 / (2.0 * IM_PI * sig4)) * (2.0 - (distance / sig2)) * exp( (-1.0) * distance / (2.0 * sig2) ) .. use 0.5 to normalise */ val = 0.5 * (2.0 - (distance / sig2)) * exp( -distance / (2.0 * sig2) ); /* Stop when change in value (ie. difference from the last * point) is positive (ie. we are going up) and absolute value * is less than the min. */ if( val - last >= 0 && VIPS_FABS( val ) < logmat->min_ampl ) break; last = val; } if( x == 5000 ) { vips_error( class->nickname, "%s", _( "mask too large" ) ); return( -1 ); } width = x * 2 + 1; height = logmat->separable ? 1 : width; vips_image_init_fields( create->out, width, height, 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_write_prepare( create->out ) ) return( -1 ); sum = 0.0; for( y = 0; y < height; y++ ) { for( x = 0; x < width; x++ ) { int xo = x - width / 2; int yo = y - height / 2; double distance = xo * xo + yo * yo; double v = 0.5 * (2.0 - (distance / sig2)) * exp( -distance / (2.0 * sig2) ); if( logmat->precision == VIPS_PRECISION_INTEGER ) v = VIPS_RINT( 20 * v ); *VIPS_MATRIX( create->out, x, y ) = v; sum += v; } } vips_image_set_double( create->out, "scale", sum ); vips_image_set_double( create->out, "offset", 0.0 ); return( 0 ); } static void vips_logmat_class_init( VipsLogmatClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "logmat"; vobject_class->description = _( "make a laplacian of gaussian image" ); vobject_class->build = vips_logmat_build; VIPS_ARG_DOUBLE( class, "sigma", 2, _( "Radius" ), _( "Radius of Logmatian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsLogmat, sigma ), 0.000001, 10000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "min_ampl", 3, _( "Width" ), _( "Minimum amplitude of Logmatian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsLogmat, min_ampl ), 0.000001, 10000.0, 0.1 ); VIPS_ARG_BOOL( class, "separable", 4, _( "Separable" ), _( "Generate separable Logmatian" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsLogmat, separable ), FALSE ); VIPS_ARG_BOOL( class, "integer", 5, _( "Integer" ), _( "Generate integer Logmatian" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsLogmat, integer ), FALSE ); VIPS_ARG_ENUM( class, "precision", 6, _( "Precision" ), _( "Generate with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsLogmat, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_INTEGER ); } static void vips_logmat_init( VipsLogmat *logmat ) { logmat->sigma = 1; logmat->min_ampl = 0.1; logmat->precision = VIPS_PRECISION_INTEGER; } /** * vips_logmat: * @out: output image * @sigma: standard deviation of mask * @min_ampl: minimum amplitude * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @separable: generate a separable mask * @precision: #VipsPrecision for @out * * Creates a circularly symmetric Laplacian of Gaussian mask * of radius * @sigma. The size of the mask is determined by the variable @min_ampl; * if for instance the value .1 is entered this means that the produced mask * is clipped at values within 10 persent of zero, and where the change * between mask elements is less than 10%. * * The program uses the following equation: (from Handbook of Pattern * Recognition and image processing by Young and Fu, AP 1986 pages 220-221): * * H(r) = (1 / (2 * M_PI * s4)) * * (2 - (r2 / s2)) * * exp(-r2 / (2 * s2)) * * where s2 = @sigma * @sigma, s4 = s2 * s2, r2 = r * r. * * The generated mask has odd size and its maximum value is normalised to * 1.0, unless @precision is #VIPS_PRECISION_INTEGER. * * If @separable is set, only the centre horizontal is generated. This is * useful for separable convolutions. * * If @precision is #VIPS_PRECISION_INTEGER, an integer mask is generated. * This is useful for integer convolutions. * * "scale" is set to the sum of all the mask elements. * * See also: vips_gaussmat(), vips_conv(). * * Returns: 0 on success, -1 on error */ int vips_logmat( VipsImage **out, double sigma, double min_ampl, ... ) { va_list ap; int result; va_start( ap, min_ampl ); result = vips_call_split( "logmat", ap, out, sigma, min_ampl ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/gaussmat.c0000664000175000017500000001564312530402247014342 00000000000000/* generate gaussian images * * Written on: 30/11/1989 by Nicos * Updated on: 6/12/1991 * 7/8/96 JC * - ansified, mem leaks plugged * 20/11/98 JC * - mask too large check added * 18/3/09 * - bumped max mask size *40 * - added _sep variant * 30/3/09 * - set scale in _sep variant, why not * 21/10/10 * - gtkdoc * 20/10/13 * - redone as a class * 16/12/14 * - default to int output to match vips_conv() * - use @precision, not @integer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsGaussmat { VipsCreate parent_instance; double sigma; double min_ampl; gboolean separable; gboolean integer; /* Deprecated */ VipsPrecision precision; } VipsGaussmat; typedef struct _VipsGaussmatClass { VipsCreateClass parent_class; } VipsGaussmatClass; G_DEFINE_TYPE( VipsGaussmat, vips_gaussmat, VIPS_TYPE_CREATE ); static int vips_gaussmat_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsGaussmat *gaussmat = (VipsGaussmat *) object; double sig2 = 2. * gaussmat->sigma * gaussmat->sigma; int max_x = 8 * gaussmat->sigma > 5000 ? 5000 : 8 * gaussmat->sigma ; int x, y; int width, height; double sum; if( VIPS_OBJECT_CLASS( vips_gaussmat_parent_class )->build( object ) ) return( -1 ); /* The old, deprecated @integer property has been deliberately set to * FALSE and they've not used the new @precision property ... switch * to float to help them out. */ if( vips_object_argument_isset( object, "integer" ) && !vips_object_argument_isset( object, "precision" ) && !gaussmat->integer ) gaussmat->precision = VIPS_PRECISION_FLOAT; if( vips_check_precision_intfloat( class->nickname, gaussmat->precision ) ) return( -1 ); /* Find the size of the mask. Limit the mask size to 10k x 10k for * sanity. */ for( x = 0; x < max_x; x++ ) { double v = exp( - ((double)(x * x)) / sig2 ); if( v < gaussmat->min_ampl ) break; } if( x == max_x ) { vips_error( class->nickname, "%s", _( "mask too large" ) ); return( -1 ); } width = x * 2 + 1; height = gaussmat->separable ? 1 : width; vips_image_init_fields( create->out, width, height, 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_write_prepare( create->out ) ) return( -1 ); sum = 0.0; for( y = 0; y < height; y++ ) { for( x = 0; x < width; x++ ) { int xo = x - width / 2; int yo = y - height / 2; double distance = xo * xo + yo * yo; double v = exp( -distance / sig2 ); if( gaussmat->precision == VIPS_PRECISION_INTEGER ) v = VIPS_RINT( 20 * v ); *VIPS_MATRIX( create->out, x, y ) = v; sum += v; } } vips_image_set_double( create->out, "scale", sum ); vips_image_set_double( create->out, "offset", 0.0 ); return( 0 ); } static void vips_gaussmat_class_init( VipsGaussmatClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "gaussmat"; vobject_class->description = _( "make a gaussian image" ); vobject_class->build = vips_gaussmat_build; VIPS_ARG_DOUBLE( class, "sigma", 2, _( "Sigma" ), _( "Sigma of Gaussian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussmat, sigma ), 0.000001, 10000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "min_ampl", 3, _( "Minimum amplitude" ), _( "Minimum amplitude of Gaussian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussmat, min_ampl ), 0.000001, 10000.0, 0.1 ); VIPS_ARG_BOOL( class, "separable", 4, _( "Separable" ), _( "Generate separable Gaussian" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussmat, separable ), FALSE ); VIPS_ARG_BOOL( class, "integer", 5, _( "Integer" ), _( "Generate integer Gaussian" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsGaussmat, integer ), FALSE ); VIPS_ARG_ENUM( class, "precision", 6, _( "Precision" ), _( "Generate with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussmat, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_INTEGER ); } static void vips_gaussmat_init( VipsGaussmat *gaussmat ) { gaussmat->sigma = 1; gaussmat->min_ampl = 0.1; gaussmat->precision = VIPS_PRECISION_INTEGER; } /** * vips_gaussmat: * @out: output image * @sigma: standard deviation of mask * @min_ampl: minimum amplitude * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @separable: generate a separable gaussian * @precision: #VipsPrecision for @out * * Creates a circularly symmetric Gaussian image of radius * @sigma. The size of the mask is determined by the variable @min_ampl; * if for instance the value .1 is entered this means that the produced mask * is clipped at values less than 10 percent of the maximum amplitude. * * The program uses the following equation: * * H(r) = exp( -(r * r) / (2 * @sigma * @sigma) ) * * The generated image has odd size and its maximum value is normalised to * 1.0, unless @precision is #VIPS_PRECISION_INTEGER. * * If @separable is set, only the centre horizontal is generated. This is * useful for separable convolutions. * * If @precision is #VIPS_PRECISION_INTEGER, an integer gaussian is generated. * This is useful for integer convolutions. * * "scale" is set to the sum of all the mask elements. * * See also: vips_logmat(), vips_conv(). * * Returns: 0 on success, -1 on error */ int vips_gaussmat( VipsImage **out, double sigma, double min_ampl, ... ) { va_list ap; int result; va_start( ap, min_ampl ); result = vips_call_split( "gaussmat", ap, out, sigma, min_ampl ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/mask_gaussian_ring.c0000664000175000017500000000755612530402247016366 00000000000000/* creates a gaussian_ring filter. * * 02/01/14 * - from gaussian_ring.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskGaussianRing { VipsMaskGaussian parent_instance; double ringwidth; } VipsMaskGaussianRing; typedef VipsMaskGaussianClass VipsMaskGaussianRingClass; G_DEFINE_TYPE( VipsMaskGaussianRing, vips_mask_gaussian_ring, VIPS_TYPE_MASK_GAUSSIAN ); static double vips_mask_gaussian_ring_point( VipsMask *mask, double dx, double dy ) { VipsMaskGaussian *gaussian = (VipsMaskGaussian *) mask; VipsMaskGaussianRing *gaussian_ring = (VipsMaskGaussianRing *) mask; double fc = gaussian->frequency_cutoff; double ac = gaussian->amplitude_cutoff; double ringwidth = gaussian_ring->ringwidth; double df = ringwidth / 2.0; double df2 = df * df; double cnst = log( ac ); double dist = sqrt( dx * dx + dy * dy ); return( exp( cnst * (dist - fc) * (dist - fc) / df2 ) ); } static void vips_mask_gaussian_ring_class_init( VipsMaskGaussianRingClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_gaussian_ring"; vobject_class->description = _( "make a gaussian ring filter" ); mask_class->point = vips_mask_gaussian_ring_point; VIPS_ARG_DOUBLE( class, "ringwidth", 20, _( "Ringwidth" ), _( "Ringwidth" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianRing, ringwidth ), 0.0, 1000000.0, 0.5 ); } static void vips_mask_gaussian_ring_init( VipsMaskGaussianRing *gaussian_ring ) { gaussian_ring->ringwidth = 0.5; } /** * vips_mask_gaussian_ring: * @out: output image * @width: image size * @height: image size * @frequency_cutoff: frequency threshold * @amplitude_cutoff: amplitude threshold * @ringwidth: ringwidth * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * Make a gaussian ring-pass or ring-reject filter, that is, one with a * variable, smooth transition positioned at @frequency_cutoff of width * @ringwidth. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_gaussian_ring( VipsImage **out, int width, int height, double frequency_cutoff, double amplitude_cutoff, double ringwidth, ... ) { va_list ap; int result; va_start( ap, ringwidth ); result = vips_call_split( "mask_gaussian_ring", ap, out, width, height, frequency_cutoff, amplitude_cutoff, ringwidth ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/gaussnoise.c0000664000175000017500000001232612630030006014660 00000000000000/* im_gaussnoise * * Copyright 1990, N. Dessipris. * * File written on 2/12/1986 * Author : N. Dessipris * Updated : 6/6/1991 * 21/7/93 JC * - im_outcheck() call added * 1/2/95 JC * - declaration for drand48() added * - partialised, adapting im_gaussnoise() * 23/10/98 JC * - drand48() chaged to random() for portability * 21/10/02 JC * - tries rand() if random() is not available * - uses RAND_MAX, d'oh * 29/1/10 * - cleanups * - gtkdoc * 29/5/13 * - redo as a class * 8/11/14 * - use g_random_double() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcreate.h" typedef struct _VipsGaussnoise { VipsCreate parent_instance; int width; int height; double mean; double sigma; } VipsGaussnoise; typedef VipsCreateClass VipsGaussnoiseClass; G_DEFINE_TYPE( VipsGaussnoise, vips_gaussnoise, VIPS_TYPE_CREATE ); static int vips_gaussnoise_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsGaussnoise *gaussnoise = (VipsGaussnoise *) a; int sz = VIPS_REGION_N_ELEMENTS( or ); int y; for( y = 0; y < or->valid.height; y++ ) { float *q = (float *) VIPS_REGION_ADDR( or, or->valid.left, y + or->valid.top ); int x; for( x = 0; x < sz; x++ ) { double sum; int i; sum = 0.0; for( i = 0; i < 12; i++ ) sum += g_random_double(); q[x] = (sum - 6.0) * gaussnoise->sigma + gaussnoise->mean; } } return( 0 ); } static int vips_gaussnoise_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsGaussnoise *gaussnoise = (VipsGaussnoise *) object; if( VIPS_OBJECT_CLASS( vips_gaussnoise_parent_class )->build( object ) ) return( -1 ); vips_image_init_fields( create->out, gaussnoise->width, gaussnoise->height, 1, VIPS_FORMAT_FLOAT, VIPS_CODING_NONE, VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( create->out, NULL, vips_gaussnoise_gen, NULL, gaussnoise, NULL ) ) return( -1 ); return( 0 ); } static void vips_gaussnoise_class_init( VipsGaussnoiseClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = (VipsOperationClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "gaussnoise"; vobject_class->description = _( "make a gaussnoise image" ); vobject_class->build = vips_gaussnoise_build; /* We want a new set of numbers each time. */ operation_class->flags |= VIPS_OPERATION_NOCACHE; VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussnoise, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussnoise, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_DOUBLE( class, "mean", 6, _( "Mean" ), _( "Mean of pixels in generated image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussnoise, mean ), -10000000, 1000000, 128 ); VIPS_ARG_DOUBLE( class, "sigma", 6, _( "Sigma" ), _( "Standard deviation of pixels in generated image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussnoise, sigma ), 0, 100000, 30 ); } static void vips_gaussnoise_init( VipsGaussnoise *gaussnoise ) { gaussnoise->mean = 128.0; gaussnoise->sigma = 30.0; } /** * vips_gaussnoise: * @out: output image * @width: output width * @height: output height * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @mean: mean of generated pixels * @sigma: standard deviation of generated pixels * * Make a one band float image of gaussian noise with the specified * distribution. The noise distribution is created by averaging 12 random * numbers with the appropriate weights. * * See also: vips_black(), vips_xyz(), vips_text(). * * Returns: 0 on success, -1 on error */ int vips_gaussnoise( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "gaussnoise", ap, out, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/pcreate.h0000664000175000017500000000362612530402247014144 00000000000000/* base class for all create operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCREATE_H #define VIPS_PCREATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_CREATE (vips_create_get_type()) #define VIPS_CREATE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_CREATE, VipsCreate )) #define VIPS_CREATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_CREATE, VipsCreateClass)) #define VIPS_IS_CREATE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CREATE )) #define VIPS_IS_CREATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CREATE )) #define VIPS_CREATE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_CREATE, VipsCreateClass )) typedef struct _VipsCreate { VipsOperation parent_instance; /* All have an output image. */ VipsImage *out; } VipsCreate; typedef struct _VipsCreateClass { VipsOperationClass parent_class; } VipsCreateClass; GType vips_create_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCREATE_H*/ vips-8.2.2/libvips/create/zone.c0000664000175000017500000000543412530402247013466 00000000000000/* square zone plate of size * * N. Dessipris 01/02/1991 * * 22/7/93 JC * - externs removed * - im_outcheck() added * 30/8/95 JC * - modernized * - memory leaks fixed * - split into im_zone() and im_fzone() * 1/2/11 * - gtk-doc * 13/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" typedef VipsPoint VipsZone; typedef VipsPointClass VipsZoneClass; G_DEFINE_TYPE( VipsZone, vips_zone, VIPS_TYPE_POINT ); static float vips_zone_point( VipsPoint *point, int x, int y ) { VipsZone *zone = (VipsZone *) point; int hwidth = point->width / 2; int hheight = point->height / 2; int h2 = (x - hwidth) * (x - hwidth); int v2 = (y - hheight) * (y - hheight); double c = VIPS_PI / zone->width; return( cos( c * (v2 + h2) ) ); } static void vips_zone_class_init( VipsZoneClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); vobject_class->nickname = "zone"; vobject_class->description = _( "make a zone plate" ); point_class->point = vips_zone_point; } static void vips_zone_init( VipsZone *zone ) { } /** * vips_zone: * @out: output image * @width: image size * @height: image size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @uchar: output a uchar image * * Create a one-band image of a zone plate. * * Pixels are normally in [-1, +1], set @uchar to output [0, 255]. * * See also: vips_eye(), vips_xyz(). * * Returns: 0 on success, -1 on error */ int vips_zone( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "zone", ap, out, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/tonelut.c0000664000175000017500000001771512530402247014212 00000000000000/* Build a tone curve. * * Author: John Cupitt * Written on: 18/7/1995 * 17/9/96 JC * - restrictions on Ps, Pm, Ph relaxed * - restrictions on S, M, H relaxed * 25/7/01 JC * - patched for im_extract_band() change * 11/7/04 * - generalised to im_tone_build_range() ... so you can use it for any * image, not just LabS * 26/3/10 * - cleanups * - gtkdoc * 20/9/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcreate.h" typedef struct _VipsTonelut { VipsCreate parent_instance; /* Parameters for tone curve formation. */ double Lb, Lw; double Ps, Pm, Ph; double S, M, H; /* Range we process. */ int in_max; int out_max; /* Derived values. */ double Ls, Lm, Lh; } VipsTonelut; typedef VipsCreateClass VipsTonelutClass; G_DEFINE_TYPE( VipsTonelut, vips_tonelut, VIPS_TYPE_CREATE ); /* Calculate shadow curve. */ static double shad( VipsTonelut *lut, double x ) { double x1 = (x - lut->Lb) / (lut->Ls - lut->Lb); double x2 = (x - lut->Ls) / (lut->Lm - lut->Ls); double out; if( x < lut->Lb ) out = 0; else if( x < lut->Ls ) out = 3.0 * x1 * x1 - 2.0 * x1 * x1 * x1; else if( x < lut->Lm ) out = 1.0 - 3.0 * x2 * x2 + 2.0 * x2 * x2 * x2; else out = 0; return( out ); } /* Calculate mid-tone curve. */ static double mid( VipsTonelut *lut, double x ) { double x1 = (x - lut->Ls) / (lut->Lm - lut->Ls); double x2 = (x - lut->Lm) / (lut->Lh - lut->Lm); double out; if( x < lut->Ls ) out = 0; else if( x < lut->Lm ) out = 3.0 * x1 * x1 - 2.0 * x1 * x1 * x1; else if( x < lut->Lh ) out = 1.0 - 3.0 * x2 * x2 + 2.0 * x2 * x2 * x2; else out = 0; return( out ); } /* Calculate highlight curve. */ static double high( VipsTonelut *lut, double x ) { double x1 = (x - lut->Lm) / (lut->Lh - lut->Lm); double x2 = (x - lut->Lh) / (lut->Lw - lut->Lh); double out; if( x < lut->Lm ) out = 0; else if( x < lut->Lh ) out = 3.0 * x1 * x1 - 2.0 * x1 * x1 * x1; else if( x < lut->Lw ) out = 1.0 - 3.0 * x2 * x2 + 2.0 * x2 * x2 * x2; else out = 0; return( out ); } /* Generate a point on the tone curve. Everything is 0-100. */ static double tone_curve( VipsTonelut *lut, double x ) { double out; out = x + lut->S * shad( lut, x ) + lut->M * mid( lut, x ) + lut->H * high( lut, x ); return( out ); } static int vips_tonelut_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsTonelut *lut = (VipsTonelut *) object; int i; unsigned short buf[65536]; if( VIPS_OBJECT_CLASS( vips_tonelut_parent_class )->build( object ) ) return( -1 ); g_assert( lut->in_max > 0 && lut->in_max < 65536 ); g_assert( lut->out_max > 0 && lut->out_max < 65536 ); /* Note derived params. */ lut->Ls = lut->Lb + lut->Ps * (lut->Lw - lut->Lb); lut->Lm = lut->Lb + lut->Pm * (lut->Lw - lut->Lb); lut->Lh = lut->Lb + lut->Ph * (lut->Lw - lut->Lb); /* Generate curve. */ for( i = 0; i <= lut->in_max; i++ ) { int v = (lut->out_max / 100.0) * tone_curve( lut, 100.0 * i / lut->in_max ); if( v < 0 ) v = 0; else if( v > lut->out_max ) v = lut->out_max; buf[i] = v; } /* Make the output image. */ vips_image_init_fields( create->out, lut->in_max + 1, 1, 1, VIPS_FORMAT_USHORT, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( vips_image_write_line( create->out, 0, (VipsPel *) buf ) ) return( -1 ); return( 0 ); } static void vips_tonelut_class_init( VipsTonelutClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "tonelut"; vobject_class->description = _( "build a look-up table" ); vobject_class->build = vips_tonelut_build; VIPS_ARG_INT( class, "in_max", 4, _( "In-max" ), _( "Size of LUT to build" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, in_max ), 1, 65535, 32767 ); VIPS_ARG_INT( class, "out_max", 5, _( "Out-max" ), _( "Maximum value in output LUT" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, out_max ), 1, 65535, 32767 ); VIPS_ARG_DOUBLE( class, "Lb", 6, _( "Black point" ), _( "Lowest value in output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Lb ), 0, 100, 0 ); VIPS_ARG_DOUBLE( class, "Lw", 7, _( "White point" ), _( "Highest value in output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Lw ), 0, 100, 100 ); VIPS_ARG_DOUBLE( class, "Ps", 8, _( "Shadow point" ), _( "Position of shadow" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Ps ), 0, 1, 0.2 ); VIPS_ARG_DOUBLE( class, "Pm", 9, _( "Mid-tone point" ), _( "Position of mid-tones" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Pm ), 0, 1, 0.5 ); VIPS_ARG_DOUBLE( class, "Ph", 10, _( "Highlight point" ), _( "Position of highlights" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, Ph ), 0, 1, 0.8 ); VIPS_ARG_DOUBLE( class, "S", 11, _( "Shadow adjust" ), _( "Adjust shadows by this much" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, S ), -30, 30, 0 ); VIPS_ARG_DOUBLE( class, "M", 12, _( "Mid-tone adjust" ), _( "Adjust mid-tones by this much" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, M ), -30, 30, 0 ); VIPS_ARG_DOUBLE( class, "H", 13, _( "Highlight adjust" ), _( "Adjust highlights by this much" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsTonelut, H ), -30, 30, 0 ); } static void vips_tonelut_init( VipsTonelut *lut ) { lut->in_max = 32767; lut->out_max = 32767; lut->Lb = 0.0; lut->Lw = 100.0; lut->Ps = 0.2; lut->Pm = 0.5; lut->Ph = 0.8; lut->S = 0.0; lut->M = 0.0; lut->H = 0.0; } /** * vips_tonelut: * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @in_max: input range * @out_max: output range * @Lb: black-point [0-100] * @Lw: white-point [0-100] * @Ps: shadow point (eg. 0.2) * @Pm: mid-tone point (eg. 0.5) * @Ph: highlight point (eg. 0.8) * @S: shadow adjustment (+/- 30) * @M: mid-tone adjustment (+/- 30) * @H: highlight adjustment (+/- 30) * * vips_tonelut() generates a tone curve for the adjustment of image * levels. It is mostly designed for adjusting the L* part of a LAB image in * a way suitable for print work, but you can use it for other things too. * * The curve is an unsigned 16-bit image with (@in_max + 1) entries, * each in the range [0, @out_max]. * * @Lb, @Lw are expressed as 0-100, as in LAB colour space. You * specify the scaling for the input and output images with the @in_max and * @out_max parameters. * * Returns: 0 on success, -1 on error */ int vips_tonelut( VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "tonelut", ap, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/point.c0000664000175000017500000000765412630030105013641 00000000000000/* base class for point-wise creators * * 13/6/13 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" G_DEFINE_ABSTRACT_TYPE( VipsPoint, vips_point, VIPS_TYPE_CREATE ); static int vips_point_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsPoint *point = (VipsPoint *) a; VipsPointClass *class = VIPS_POINT_GET_CLASS( point ); VipsRect *r = &or->valid; int x, y; for( y = 0; y < r->height; y++ ) { int ay = r->top + y; float *q = (float *) VIPS_REGION_ADDR( or, r->left, ay ); for( x = 0; x < r->width; x++ ) q[x] = class->point( point, r->left + x, ay ); } return( 0 ); } static int vips_point_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsPoint *point = VIPS_POINT( object ); VipsPointClass *class = VIPS_POINT_GET_CLASS( point ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_point_parent_class )->build( object ) ) return( -1 ); t[0] = vips_image_new(); vips_image_init_fields( t[0], point->width, point->height, 1, VIPS_FORMAT_FLOAT, VIPS_CODING_NONE, class->interpretation, 1.0, 1.0 ); vips_image_pipelinev( t[0], VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( t[0], NULL, vips_point_gen, NULL, point, NULL ) ) return( -1 ); in = t[0]; if( point->uchar ) { float min = class->min; float max = class->max; float range = max - min; if( vips_linear1( in, &t[2], 255.0 / range, -min * 255.0 / range, "uchar", TRUE, NULL ) ) return( -1 ); in = t[2]; /* uchar mode always does B_W. We don't want FOURIER or * whatever in this case. */ in->Type = VIPS_INTERPRETATION_B_W; } if( vips_image_write( in, create->out ) ) return( -1 ); return( 0 ); } static void vips_point_class_init( VipsPointClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "point"; vobject_class->description = _( "make a point image" ); vobject_class->build = vips_point_build; class->point = NULL; class->min = -1.0; class->max = 1.0; class->interpretation = VIPS_INTERPRETATION_B_W; VIPS_ARG_INT( class, "width", 2, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPoint, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 3, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPoint, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_BOOL( class, "uchar", 4, _( "Uchar" ), _( "Output an unsigned char image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsPoint, uchar ), FALSE ); } static void vips_point_init( VipsPoint *point ) { } vips-8.2.2/libvips/create/mask.c0000664000175000017500000000643712530402247013452 00000000000000/* base class for frequency filter create operations * * 02/01/14 * - from sines.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" G_DEFINE_ABSTRACT_TYPE( VipsMask, vips_mask, VIPS_TYPE_POINT ); static float vips_mask_point( VipsPoint *point, int x, int y ) { VipsMask *mask = VIPS_MASK( point ); VipsMaskClass *class = VIPS_MASK_GET_CLASS( point ); int half_width = point->width / 2; int half_height = point->height / 2; double result; /* Move centre for an optical transform mask. */ if( !mask->optical ) { x = (x + half_width) % point->width; y = (y + half_height) % point->height; } x = x - half_width; y = y - half_height; if( !mask->nodc && x == 0 && y == 0 ) /* DC component is always 1. */ result = 1.0; else { double dx, dy; dx = (double) x / half_width; dy = (double) y / half_height; result = class->point( mask, dx, dy ); /* Invert filter sense for a highpass filter, or to swap * band-pass for band-reject. */ if( mask->reject ) result = 1.0 - result; } return( result ); } static void vips_mask_class_init( VipsMaskClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask"; vobject_class->description = _( "base class for frequency filters" ); point_class->point = vips_mask_point; point_class->min = 0.0; point_class->max = 1.0; point_class->interpretation = VIPS_INTERPRETATION_FOURIER; VIPS_ARG_BOOL( class, "optical", 5, _( "Optical" ), _( "Rotate quadrants to optical space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMask, optical ), FALSE ); VIPS_ARG_BOOL( class, "reject", 5, _( "Reject" ), _( "Invert the sense of the filter" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMask, reject ), FALSE ); VIPS_ARG_BOOL( class, "nodc", 5, _( "Nodc" ), _( "Remove DC component" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMask, nodc ), FALSE ); } static void vips_mask_init( VipsMask *mask ) { } vips-8.2.2/libvips/create/mask_butterworth_band.c0000664000175000017500000001322512530402247017100 00000000000000/* creates an butterworth_band filter. * * 02/01/14 * - from butterworth_band.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskButterworthBand { VipsMask parent_instance; double order; double frequency_cutoff_x; double frequency_cutoff_y; double radius; double amplitude_cutoff; } VipsMaskButterworthBand; typedef VipsMaskClass VipsMaskButterworthBandClass; G_DEFINE_TYPE( VipsMaskButterworthBand, vips_mask_butterworth_band, VIPS_TYPE_MASK ); static double vips_mask_butterworth_band_point( VipsMask *mask, double dx, double dy ) { VipsMaskButterworthBand *butterworth_band = (VipsMaskButterworthBand *) mask; double order = butterworth_band->order; double fcx = butterworth_band->frequency_cutoff_x; double fcy = butterworth_band->frequency_cutoff_y; double r2 = butterworth_band->radius * butterworth_band->radius; double ac = butterworth_band->amplitude_cutoff; double cnst = (1.0 / ac) - 1.0; /* Normalise the amplitude at (fcx, fcy) to 1.0. */ double cnsta = 1.0 / (1.0 + 1.0 / (1.0 + cnst * pow( 4.0 * (fcx * fcx + fcy * fcy) / r2, order ))); double d1 = (dx - fcx) * (dx - fcx) + (dy - fcy) * (dy - fcy); double d2 = (dx + fcx) * (dx + fcx) + (dy + fcy) * (dy + fcy); return( cnsta * (1.0 / (1.0 + cnst * pow( d1 / r2, order )) + 1.0 / (1.0 + cnst * pow( d2 / r2, order ))) ); } static void vips_mask_butterworth_band_class_init( VipsMaskButterworthBandClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_butterworth_band"; vobject_class->description = _( "make a butterworth_band filter" ); mask_class->point = vips_mask_butterworth_band_point; VIPS_ARG_DOUBLE( class, "order", 6, _( "Order" ), _( "Filter order" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, order ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff_x", 7, _( "Frequency cutoff x" ), _( "Frequency cutoff x" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, frequency_cutoff_x ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff_y", 8, _( "Frequency cutoff y" ), _( "Frequency cutoff y" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, frequency_cutoff_y ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "radius", 9, _( "radius" ), _( "radius of circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, radius ), 0.0, 1000000.0, 0.1 ); VIPS_ARG_DOUBLE( class, "amplitude_cutoff", 10, _( "Amplitude cutoff" ), _( "Amplitude cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworthBand, amplitude_cutoff ), 0.0, 1.0, 0.5 ); } static void vips_mask_butterworth_band_init( VipsMaskButterworthBand *butterworth_band ) { butterworth_band->order = 1.0; butterworth_band->frequency_cutoff_x = 0.5; butterworth_band->frequency_cutoff_y = 0.5; butterworth_band->radius = 0.1; butterworth_band->amplitude_cutoff = 0.5; } /** * vips_mask_butterworth_band: * @out: output image * @width: image size * @height: image size * @order: filter order * @frequency_cutoff_x: band position * @frequency_cutoff_y: band position * @radius: band radius * @amplitude_cutoff: amplitude threshold * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * Make an butterworth band-pass or band-reject filter, that is, one with a * variable, smooth transition positioned at @frequency_cutoff_x, * @frequency_cutoff_y, of radius @radius. * The shape of the curve is controlled by * @order --- higher values give a sharper transition. See Gonzalez and Wintz, * Digital Image Processing, 1987. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_butterworth_band( VipsImage **out, int width, int height, double order, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, ... ) { va_list ap; int result; va_start( ap, amplitude_cutoff ); result = vips_call_split( "mask_butterworth_band", ap, out, width, height, order, frequency_cutoff_x, frequency_cutoff_y, radius, amplitude_cutoff ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/mask_ideal_ring.c0000664000175000017500000000731712530402247015625 00000000000000/* creates an ideal ringpass filter. * * 02/01/14 * - from ideal.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskIdealRing { VipsMaskIdeal parent_instance; double ringwidth; } VipsMaskIdealRing; typedef VipsMaskIdealClass VipsMaskIdealRingClass; G_DEFINE_TYPE( VipsMaskIdealRing, vips_mask_ideal_ring, VIPS_TYPE_MASK_IDEAL ); static double vips_mask_ideal_ring_point( VipsMask *mask, double dx, double dy ) { VipsMaskIdeal *ideal = (VipsMaskIdeal *) mask; VipsMaskIdealRing *ideal_ring = (VipsMaskIdealRing *) mask; double fc = ideal->frequency_cutoff; double ringwidth = ideal_ring->ringwidth; double df = ringwidth / 2.0; double dist2 = dx * dx + dy * dy; double fc2_1 = (fc - df) * (fc - df); double fc2_2 = (fc + df) * (fc + df); return( dist2 > fc2_1 && dist2 < fc2_2 ? 1.0 : 0.0 ); } static void vips_mask_ideal_ring_class_init( VipsMaskIdealClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_ideal_ring"; vobject_class->description = _( "make an ideal ring filter" ); mask_class->point = vips_mask_ideal_ring_point; VIPS_ARG_DOUBLE( class, "ringwidth", 20, _( "Ringwidth" ), _( "Ringwidth" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdealRing, ringwidth ), 0.0, 1000000.0, 0.5 ); } static void vips_mask_ideal_ring_init( VipsMaskIdealRing *ideal_ring ) { ideal_ring->ringwidth = 0.5; } /** * vips_mask_ideal_ring: * @out: output image * @width: image size * @height: image size * @frequency_cutoff: threshold at which filter ends * @ringwidth: ring width * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * Make an ideal ring-pass or ring-reject filter, that is, one with a sharp * ring positioned at @frequency_cutoff of width @width, where * @frequency_cutoff and @width are expressed as the range 0 - 1. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_ideal_ring( VipsImage **out, int width, int height, double frequency_cutoff, double ringwidth, ... ) { va_list ap; int result; va_start( ap, ringwidth ); result = vips_call_split( "mask_ideal_ring", ap, out, width, height, frequency_cutoff, ringwidth ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/mask_butterworth.c0000664000175000017500000001032212530402247016107 00000000000000/* creates an butterworth filter. * * 02/01/14 * - from butterworth.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" G_DEFINE_TYPE( VipsMaskButterworth, vips_mask_butterworth, VIPS_TYPE_MASK ); static double vips_mask_butterworth_point( VipsMask *mask, double dx, double dy ) { VipsMaskButterworth *butterworth = (VipsMaskButterworth *) mask; double order = butterworth->order; double fc = butterworth->frequency_cutoff; double ac = butterworth->amplitude_cutoff; double cnst = (1.0 / ac) - 1.0; double fc2 = fc * fc; double dist2 = fc2 / (dx * dx + dy * dy); return( 1.0 / (1.0 + cnst * pow( dist2, order )) ); } static void vips_mask_butterworth_class_init( VipsMaskButterworthClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_butterworth"; vobject_class->description = _( "make a butterworth filter" ); mask_class->point = vips_mask_butterworth_point; VIPS_ARG_DOUBLE( class, "order", 6, _( "Order" ), _( "Filter order" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworth, order ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff", 7, _( "Frequency cutoff" ), _( "Frequency cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworth, frequency_cutoff ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "amplitude_cutoff", 8, _( "Amplitude cutoff" ), _( "Amplitude cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskButterworth, amplitude_cutoff ), 0.0, 1.0, 0.5 ); } static void vips_mask_butterworth_init( VipsMaskButterworth *butterworth ) { butterworth->order = 1.0; butterworth->frequency_cutoff = 0.5; butterworth->amplitude_cutoff = 0.5; } /** * vips_mask_butterworth: * @out: output image * @width: image size * @height: image size * @order: filter order * @frequency_cutoff: frequency threshold * @amplitude_cutoff: amplitude threshold * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * Make an butterworth high- or low-pass filter, that is, one with a variable, * smooth transition * positioned at @frequency_cutoff, where @frequency_cutoff is in * range 0 - 1. The shape of the curve is controlled by * @order --- higher values give a sharper transition. See Gonzalez and Wintz, * Digital Image Processing, 1987. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_butterworth( VipsImage **out, int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, ... ) { va_list ap; int result; va_start( ap, amplitude_cutoff ); result = vips_call_split( "mask_butterworth", ap, out, width, height, order, frequency_cutoff, amplitude_cutoff ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/mask_gaussian_band.c0000664000175000017500000001174312530402247016324 00000000000000/* creates a gaussian filter. * * 02/01/14 * - from gaussian.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskGaussianBand { VipsMask parent_instance; double frequency_cutoff_x; double frequency_cutoff_y; double radius; double amplitude_cutoff; } VipsMaskGaussianBand; typedef VipsMaskClass VipsMaskGaussianBandClass; G_DEFINE_TYPE( VipsMaskGaussianBand, vips_mask_gaussian_band, VIPS_TYPE_MASK ); static double vips_mask_gaussian_band_point( VipsMask *mask, double dx, double dy ) { VipsMaskGaussianBand *gaussian_band = (VipsMaskGaussianBand *) mask; double fcx = gaussian_band->frequency_cutoff_x; double fcy = gaussian_band->frequency_cutoff_y; double r2 = gaussian_band->radius * gaussian_band->radius; double ac = gaussian_band->amplitude_cutoff; double cnst = log( ac ); double d1 = (dx - fcx) * (dx - fcx) + (dy - fcy) * (dy - fcy); double d2 = (dx + fcx) * (dx + fcx) + (dy + fcy) * (dy + fcy); /* Normalise the amplitude at (fcx, fcy) to 1.0. */ double cnsta = 1.0 / (1.0 + exp( cnst * 4.0 * (fcx * fcx + fcy * fcy) / r2 )); return( cnsta * (exp( cnst * d1 / r2 ) + exp( cnst * d2 / r2 )) ); } static void vips_mask_gaussian_band_class_init( VipsMaskGaussianBandClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_gaussian_band"; vobject_class->description = _( "make a gaussian filter" ); mask_class->point = vips_mask_gaussian_band_point; VIPS_ARG_DOUBLE( class, "frequency_cutoff_x", 7, _( "Frequency cutoff x" ), _( "Frequency cutoff x" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianBand, frequency_cutoff_x ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff_y", 8, _( "Frequency cutoff y" ), _( "Frequency cutoff y" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianBand, frequency_cutoff_y ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "radius", 9, _( "radius" ), _( "radius of circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianBand, radius ), 0.0, 1000000.0, 0.1 ); VIPS_ARG_DOUBLE( class, "amplitude_cutoff", 10, _( "Amplitude cutoff" ), _( "Amplitude cutoff" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskGaussianBand, amplitude_cutoff ), 0.0, 1.0, 0.5 ); } static void vips_mask_gaussian_band_init( VipsMaskGaussianBand *gaussian_band ) { gaussian_band->frequency_cutoff_x = 0.5; gaussian_band->frequency_cutoff_x = 0.5; gaussian_band->radius = 0.1; gaussian_band->amplitude_cutoff = 0.5; } /** * vips_mask_gaussian_band: * @out: output image * @width: image size * @height: image size * @frequency_cutoff_x: band position * @frequency_cutoff_y: band position * @radius: band radius * @amplitude_cutoff: amplitude threshold * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * Make a gaussian band-pass or band-reject filter, that is, one with a * variable, smooth transition positioned at @frequency_cutoff_x, * @frequency_cutoff_y, of radius @radius. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_gaussian_band( VipsImage **out, int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, ... ) { va_list ap; int result; va_start( ap, amplitude_cutoff ); result = vips_call_split( "mask_gaussian_band", ap, out, width, height, frequency_cutoff_x, frequency_cutoff_y, radius, amplitude_cutoff ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/fractsurf.c0000664000175000017500000000772312630027745014524 00000000000000/* fractal surface * * Author: N. Dessipris * Written on: 10/09/1991 * Modified on: * 20/9/95 JC * - modernised, a little * 7/2/10 * - cleanups * - gtkdoc * 4/1/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcreate.h" typedef struct _VipsFractsurf { VipsCreate parent_instance; int width; int height; double fractal_dimension; } VipsFractsurf; typedef VipsCreateClass VipsFractsurfClass; G_DEFINE_TYPE( VipsFractsurf, vips_fractsurf, VIPS_TYPE_CREATE ); static int vips_fractsurf_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsFractsurf *fractsurf = (VipsFractsurf *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); if( VIPS_OBJECT_CLASS( vips_fractsurf_parent_class )->build( object ) ) return( -1 ); if( vips_gaussnoise( &t[0], fractsurf->width, fractsurf->height, 0.0, 1.0, NULL ) || vips_mask_fractal( &t[1], fractsurf->width, fractsurf->height, fractsurf->fractal_dimension, NULL ) || vips_freqmult( t[0], t[1], &t[2], NULL ) || vips_image_write( t[2], create->out ) ) return( -1 ); return( 0 ); } static void vips_fractsurf_class_init( VipsFractsurfClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "fractsurf"; vobject_class->description = _( "make a fractal surface" ); vobject_class->build = vips_fractsurf_build; VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFractsurf, width ), 1, VIPS_MAX_COORD, 64 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFractsurf, height ), 1, VIPS_MAX_COORD, 64 ); VIPS_ARG_DOUBLE( class, "fractal_dimension", 8, _( "Fractal dimension" ), _( "Fractal dimension" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFractsurf, fractal_dimension ), 2.0, 3.0, 2.5 ); } static void vips_fractsurf_init( VipsFractsurf *fractsurf ) { fractsurf->width = 64; fractsurf->height = 64; fractsurf->fractal_dimension = 2.5; } /** * vips_fractsurf: * @out: output image * @width: output width * @height: output height * @fractal_dimension: fractal dimension * @...: %NULL-terminated list of optional named arguments * * Generate an image of size @width by @height and fractal dimension * @fractal_dimension. The dimension should be between 2 and 3. * * See also: vips_gaussnoise(), vips_mask_fractal(). * * Returns: 0 on success, -1 on error */ int vips_fractsurf( VipsImage **out, int width, int height, double fractal_dimension, ... ) { va_list ap; int result; va_start( ap, fractal_dimension ); result = vips_call_split( "fractsurf", ap, out, width, height, fractal_dimension ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/identity.c0000664000175000017500000001150612530402247014341 00000000000000/* identity LUTs * * Copyright 1991, N. Dessipris. * * Author N. Dessipris * Written on 11/03/1991 * Updated on: * 18/6/93 JC * - im_outcheck() call added * - ANSIfied * 24/8/94 JC * - im_identity_ushort() added * 24/3/10 * - gtkdoc * 3/7/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcreate.h" typedef struct _VipsIdentity { VipsCreate parent_instance; int bands; gboolean ushort; int size; } VipsIdentity; typedef VipsCreateClass VipsIdentityClass; G_DEFINE_TYPE( VipsIdentity, vips_identity, VIPS_TYPE_CREATE ); #define IDENTITY( TYPE ) { \ TYPE *q = (TYPE *) VIPS_REGION_ADDR( or, le, 0 ); \ \ for( x = le; x < ri; x++ ) { \ for( i = 0; i < identity->bands; i++ ) \ q[i] = x; \ \ q += identity->bands; \ } \ } static int vips_identity_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsIdentity *identity = (VipsIdentity *) a; VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT( r ); int x, i; if( identity->ushort ) { IDENTITY( unsigned short ); } else { IDENTITY( unsigned char ); } return( 0 ); } static int vips_identity_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsIdentity *identity = (VipsIdentity *) object; if( VIPS_OBJECT_CLASS( vips_identity_parent_class )->build( object ) ) return( -1 ); vips_image_init_fields( create->out, identity->ushort ? identity->size : 256, 1, identity->bands, identity->ushort ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( create->out, NULL, vips_identity_gen, NULL, identity, NULL ) ) return( -1 ); return( 0 ); } static void vips_identity_class_init( VipsIdentityClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "identity"; vobject_class->description = _( "make a 1D image where pixel values are indexes" ); vobject_class->build = vips_identity_build; VIPS_ARG_INT( class, "bands", 3, _( "Bands" ), _( "Number of bands in LUT" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIdentity, bands ), 1, 100000, 1 ); VIPS_ARG_BOOL( class, "ushort", 4, _( "Ushort" ), _( "Create a 16-bit LUT" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIdentity, ushort ), FALSE ); VIPS_ARG_INT( class, "size", 5, _( "Size" ), _( "Size of 16-bit LUT" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIdentity, size ), 1, 65536, 65536 ); } static void vips_identity_init( VipsIdentity *identity ) { identity->bands = 1; identity->ushort = FALSE; identity->size = 65536; } /** * vips_identity: * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @bands: number of bands to create * @ushort: %TRUE for an unsigned short identity * @size: number of LUT elements for a ushort image * * Creates an identity lookup table, ie. one which will leave an image * unchanged when applied with vips_maplut(). Each entry in the table has a * value equal to its position. * * Use the arithmetic operations on these tables to make LUTs representing * arbitrary functions. * * Normally LUTs are 8-bit. Set @ushort to create a 16-bit table. * * Normally 16-bit tables have 65536 entries. You can set this smaller with * @size. * * See also: vips_xyz(), vips_maplut(). * * Returns: 0 on success, -1 on error */ int vips_identity( VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "identity", ap, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/text.c0000664000175000017500000002307412651703761013510 00000000000000/* vips_text * * Written on: 20/5/04 * 29/7/04 * - !HAVE_PANGOFT2 was broken, thanks Kenneth * 15/11/04 * - gah, still broken, thanks Stefan * 5/4/06 * - return an error for im_text( "" ) rather than trying to make an * empty image * 2/2/10 * - gtkdoc * 3/6/13 * - rewrite as a class * 20/9/15 leiyangyou * - add @spacing */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #ifdef HAVE_PANGOFT2 #include #include #include "pcreate.h" typedef struct _VipsText { VipsCreate parent_instance; char *text; char *font; int width; int spacing; VipsAlign align; int dpi; FT_Bitmap bitmap; PangoContext *context; PangoLayout *layout; } VipsText; typedef VipsCreateClass VipsTextClass; G_DEFINE_TYPE( VipsText, vips_text, VIPS_TYPE_CREATE ); /* Just have one of these and reuse it. * * This does not unref cleanly on many platforms, so we will leak horribly * unless we reuse it. Sadly this means vips_text() needs to use a lock * internally to single-thread text rendering. */ static PangoFontMap *vips_text_fontmap = NULL; /* ... single-thread the body of vips_text() with this. */ static GMutex *vips_text_lock = NULL; static void vips_text_dispose( GObject *gobject ) { VipsText *text = (VipsText *) gobject; VIPS_UNREF( text->layout ); VIPS_UNREF( text->context ); VIPS_FREE( text->bitmap.buffer ); G_OBJECT_CLASS( vips_text_parent_class )->dispose( gobject ); } static PangoLayout * text_layout_new( PangoContext *context, const char *text, const char *font, int width, int spacing, VipsAlign align, int dpi ) { PangoLayout *layout; PangoFontDescription *font_description; PangoAlignment palign; layout = pango_layout_new( context ); pango_layout_set_markup( layout, text, -1 ); font_description = pango_font_description_from_string( font ); pango_layout_set_font_description( layout, font_description ); pango_font_description_free( font_description ); if( width > 0 ) pango_layout_set_width( layout, width * PANGO_SCALE ); if( spacing > 0 ) pango_layout_set_spacing( layout, spacing * PANGO_SCALE ); switch( align ) { case VIPS_ALIGN_LOW: palign = PANGO_ALIGN_LEFT; break; case VIPS_ALIGN_CENTRE: palign = PANGO_ALIGN_CENTER; break; case VIPS_ALIGN_HIGH: palign = PANGO_ALIGN_RIGHT; break; default: palign = PANGO_ALIGN_LEFT; break; } pango_layout_set_alignment( layout, palign ); return( layout ); } static int vips_text_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsText *text = (VipsText *) object; PangoRectangle logical_rect; int left; int top; int width; int height; int y; if( VIPS_OBJECT_CLASS( vips_text_parent_class )->build( object ) ) return( -1 ); if( !pango_parse_markup( text->text, -1, 0, NULL, NULL, NULL, NULL ) ) { vips_error( class->nickname, "%s", _( "invalid markup in text" ) ); return( -1 ); } if( !text->font ) g_object_set( text, "font", "sans 12", NULL ); g_mutex_lock( vips_text_lock ); if( !vips_text_fontmap ) vips_text_fontmap = pango_ft2_font_map_new(); pango_ft2_font_map_set_resolution( PANGO_FT2_FONT_MAP( vips_text_fontmap ), text->dpi, text->dpi ); text->context = pango_font_map_create_context( PANGO_FONT_MAP( vips_text_fontmap ) ); if( !(text->layout = text_layout_new( text->context, text->text, text->font, text->width, text->spacing, text->align, text->dpi )) ) { g_mutex_unlock( vips_text_lock ); return( -1 ); } pango_layout_get_extents( text->layout, NULL, &logical_rect ); #ifdef DEBUG printf( "logical left = %d, top = %d, width = %d, height = %d\n", PANGO_PIXELS( logical_rect.x ), PANGO_PIXELS( logical_rect.y ), PANGO_PIXELS( logical_rect.width ), PANGO_PIXELS( logical_rect.height ) ); #endif /*DEBUG*/ left = PANGO_PIXELS( logical_rect.x ); top = PANGO_PIXELS( logical_rect.y ); width = PANGO_PIXELS( logical_rect.width ); height = PANGO_PIXELS( logical_rect.height ); /* Can happen for "", for example. */ if( width == 0 || height == 0 ) { vips_error( class->nickname, "%s", _( "no text to render" ) ); g_mutex_unlock( vips_text_lock ); return( -1 ); } text->bitmap.width = width; text->bitmap.pitch = (text->bitmap.width + 3) & ~3; text->bitmap.rows = height; if( !(text->bitmap.buffer = VIPS_ARRAY( NULL, text->bitmap.pitch * text->bitmap.rows, VipsPel )) ) { g_mutex_unlock( vips_text_lock ); return( -1 ); } text->bitmap.num_grays = 256; text->bitmap.pixel_mode = ft_pixel_mode_grays; memset( text->bitmap.buffer, 0x00, text->bitmap.pitch * text->bitmap.rows ); if( pango_layout_get_width( text->layout ) != -1 ) pango_ft2_render_layout( &text->bitmap, text->layout, -left, -top ); else pango_ft2_render_layout( &text->bitmap, text->layout, 0, 0 ); g_mutex_unlock( vips_text_lock ); vips_image_init_fields( create->out, text->bitmap.width, text->bitmap.rows, 1, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); for( y = 0; y < text->bitmap.rows; y++ ) if( vips_image_write_line( create->out, y, (VipsPel *) text->bitmap.buffer + y * text->bitmap.pitch ) ) return( -1 ); return( 0 ); } static void * vips_text_make_lock( void *client ) { if( !vips_text_lock ) vips_text_lock = vips_g_mutex_new(); return( NULL ); } static void vips_text_class_init( VipsTextClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); static GOnce once = G_ONCE_INIT; (void) g_once( &once, vips_text_make_lock, NULL ); gobject_class->dispose = vips_text_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "text"; vobject_class->description = _( "make a text image" ); vobject_class->build = vips_text_build; VIPS_ARG_STRING( class, "text", 4, _( "Text" ), _( "Text to render" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsText, text ), NULL ); VIPS_ARG_STRING( class, "font", 5, _( "Font" ), _( "Font to render with" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, font ), NULL ); VIPS_ARG_INT( class, "width", 6, _( "Width" ), _( "Maximum image width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, width ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_ENUM( class, "align", 7, _( "Align" ), _( "Align on the low, centre or high edge" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, align ), VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW ); VIPS_ARG_INT( class, "dpi", 8, _( "DPI" ), _( "DPI to render at" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, dpi ), 1, 1000000, 72 ); VIPS_ARG_INT( class, "spacing", 9, _( "Spacing" ), _( "Line spacing" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsText, spacing ), 0, 1000000, 0 ); } static void vips_text_init( VipsText *text ) { text->align = VIPS_ALIGN_LOW; text->dpi = 72; text->bitmap.buffer = NULL; } #endif /*HAVE_PANGOFT2*/ /** * vips_text: * @out: output image * @text: utf-8 text string to render * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @font: font to render with * @width: render within this many pixels across * @alignment: left/centre/right alignment * @dpi: render at this resolution * @spacing: space lines by this in points * * Draw the string @text to an image. @out is a one-band 8-bit * unsigned char image, with 0 for no text and 255 for text. Values inbetween * are used for anti-aliasing. * * @text is the text to render as a UTF-8 string. It can contain Pango markup, * for example "<i>The</i>Guardian". * * @font is the font to render with, as a fontconfig name. Examples might be * "sans 12" or perhaps "bitstream charter bold 10". * * @width is the maximum number of pixels across to draw within. If the * generated text is wider than this, it will wrap to a new line. In this * case, @alignment can be used to set the alignment style for multi-line * text. * * @dpi sets the resolution to render at. "sans 12" at 72 dpi draws characters * approximately 12 pixels high. * * @spacing sets the line spacing, in points. It would typicallly be something * like font size times 1.2. * * See also: vips_xyz(), vips_text(), vips_gaussnoise(). * * Returns: 0 on success, -1 on error */ int vips_text( VipsImage **out, const char *text, ... ) { va_list ap; int result; va_start( ap, text ); result = vips_call_split( "text", ap, out, text ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/Makefile.am0000664000175000017500000000113712530402247014377 00000000000000noinst_LTLIBRARIES = libcreate.la libcreate_la_SOURCES = \ create.c \ pcreate.h \ gaussmat.c \ logmat.c \ buildlut.c \ invertlut.c \ tonelut.c \ identity.c \ point.c \ point.h \ mask.c \ pmask.h \ mask_ideal.c \ mask_ideal_ring.c \ mask_ideal_band.c \ mask_butterworth.c \ mask_butterworth_ring.c \ mask_butterworth_band.c \ mask_gaussian.c \ mask_gaussian_ring.c \ mask_gaussian_band.c \ mask_fractal.c \ fractsurf.c \ eye.c \ grey.c \ xyz.c \ black.c \ text.c \ gaussnoise.c \ sines.c \ zone.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/create/Makefile.in0000664000175000017500000005751012651721156014425 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/create ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libcreate_la_LIBADD = am_libcreate_la_OBJECTS = create.lo gaussmat.lo logmat.lo buildlut.lo \ invertlut.lo tonelut.lo identity.lo point.lo mask.lo \ mask_ideal.lo mask_ideal_ring.lo mask_ideal_band.lo \ mask_butterworth.lo mask_butterworth_ring.lo \ mask_butterworth_band.lo mask_gaussian.lo \ mask_gaussian_ring.lo mask_gaussian_band.lo mask_fractal.lo \ fractsurf.lo eye.lo grey.lo xyz.lo black.lo text.lo \ gaussnoise.lo sines.lo zone.lo libcreate_la_OBJECTS = $(am_libcreate_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libcreate_la_SOURCES) DIST_SOURCES = $(libcreate_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libcreate.la libcreate_la_SOURCES = \ create.c \ pcreate.h \ gaussmat.c \ logmat.c \ buildlut.c \ invertlut.c \ tonelut.c \ identity.c \ point.c \ point.h \ mask.c \ pmask.h \ mask_ideal.c \ mask_ideal_ring.c \ mask_ideal_band.c \ mask_butterworth.c \ mask_butterworth_ring.c \ mask_butterworth_band.c \ mask_gaussian.c \ mask_gaussian_ring.c \ mask_gaussian_band.c \ mask_fractal.c \ fractsurf.c \ eye.c \ grey.c \ xyz.c \ black.c \ text.c \ gaussnoise.c \ sines.c \ zone.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/create/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/create/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libcreate.la: $(libcreate_la_OBJECTS) $(libcreate_la_DEPENDENCIES) $(EXTRA_libcreate_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libcreate_la_OBJECTS) $(libcreate_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/black.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buildlut.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/create.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eye.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fractsurf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaussmat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaussnoise.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grey.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/identity.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/invertlut.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logmat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_butterworth.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_butterworth_band.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_butterworth_ring.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_fractal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_gaussian.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_gaussian_band.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_gaussian_ring.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_ideal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_ideal_band.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_ideal_ring.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/point.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sines.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tonelut.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xyz.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zone.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/create/mask_fractal.c0000664000175000017500000000652712530402247015146 00000000000000/* creates a fractal filter. * * 02/01/14 * - from ideal.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskFractal { VipsMask parent_instance; double fractal_dimension; } VipsMaskFractal; typedef VipsMaskClass VipsMaskFractalClass; G_DEFINE_TYPE( VipsMaskFractal, vips_mask_fractal, VIPS_TYPE_MASK ); static double vips_mask_fractal_point( VipsMask *mask, double dx, double dy ) { VipsMaskFractal *fractal = (VipsMaskFractal *) mask; double fd = (fractal->fractal_dimension - 4.0) / 2.0; double d2 = dx * dx + dy * dy; return( pow( d2, fd ) ); } static void vips_mask_fractal_class_init( VipsMaskFractalClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_fractal"; vobject_class->description = _( "make fractal filter" ); mask_class->point = vips_mask_fractal_point; VIPS_ARG_DOUBLE( class, "fractal_dimension", 8, _( "Fractal dimension" ), _( "Fractal dimension" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskFractal, fractal_dimension ), 2.0, 3.0, 2.5 ); } static void vips_mask_fractal_init( VipsMaskFractal *fractal ) { fractal->fractal_dimension = 2.5; } /** * vips_mask_fractal: * @out: output image * @width: image size * @height: image size * @fractal_dimension: fractal dimension * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * This operation should be used to create fractal images by filtering the * power spectrum of Gaussian white noise. See vips_gaussnoise(). * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_fractal( VipsImage **out, int width, int height, double fractal_dimension, ... ) { va_list ap; int result; va_start( ap, fractal_dimension ); result = vips_call_split( "mask_fractal", ap, out, width, height, fractal_dimension ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/eye.c0000664000175000017500000000652012530402247013272 00000000000000/* make a test pattern to show the eye's frequency response * * Copyright: 1990, 1991, N.Dessipris. * * Author N. Dessipris * Written on 30/05/1990 * Updated on: 27/01/1991, 07/03/1991, * 22/7/93 JC * - im_outcheck() added * 30/8/95 JC * - modernized * 1/2/11 * - gtk-doc * 13/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" typedef struct _VipsEye { VipsPoint parent_instance; double factor; } VipsEye; typedef VipsPointClass VipsEyeClass; G_DEFINE_TYPE( VipsEye, vips_eye, VIPS_TYPE_POINT ); static float vips_eye_point( VipsPoint *point, int x, int y ) { VipsEye *eye = (VipsEye *) point; double c = eye->factor * VIPS_PI / (2 * (point->width - 1)); double h = ((point->height - 1) * (point->height - 1)); return( y * y * cos( c * x * x ) / h ); } static void vips_eye_class_init( VipsEyeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsPointClass *point_class = VIPS_POINT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "eye"; vobject_class->description = _( "make an image showing the eye's spatial response" ); point_class->point = vips_eye_point; VIPS_ARG_DOUBLE( class, "factor", 6, _( "Factor" ), _( "Maximum spatial frequency" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsEye, factor ), 0.0, 1.0, 0.5 ); } static void vips_eye_init( VipsEye *eye ) { eye->factor = 0.5; } /** * vips_eye: * @out: output image * @width: image size * @height: image size * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @factor: maximum spatial frequency * @uchar: output a uchar image * * Create a test pattern with increasing spatial frequence in X and * amplitude in Y. @factor should be between 0 and 1 and determines the * maximum spatial frequency. * * Set @uchar to output a uchar image. * * See also: vips_zone(). * * Returns: 0 on success, -1 on error */ int vips_eye( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "eye", ap, out, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/black.c0000664000175000017500000001011712630027767013574 00000000000000/* black.c * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/08/1990 * Modified on : 16/04/1991 by N. Dessipris to work on a line by line basis * 15/8/94 JC * - adapted for partials * - ANSIfied * - memory leaks fixed! * 2/3/98 JC * - IM_ANY added * 18/1/09 * - gtkdoc * 31/10/11 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pcreate.h" typedef struct _VipsBlack { VipsCreate parent_instance; int width; int height; int bands; } VipsBlack; typedef VipsCreateClass VipsBlackClass; G_DEFINE_TYPE( VipsBlack, vips_black, VIPS_TYPE_CREATE ); static int vips_black_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { vips_region_black( or ); return( 0 ); } static int vips_black_build( VipsObject *object ) { VipsCreate *create = VIPS_CREATE( object ); VipsBlack *black = (VipsBlack *) object; if( VIPS_OBJECT_CLASS( vips_black_parent_class )->build( object ) ) return( -1 ); vips_image_init_fields( create->out, black->width, black->height, black->bands, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, black->bands == 1 ? VIPS_INTERPRETATION_B_W : VIPS_INTERPRETATION_MULTIBAND, 1.0, 1.0 ); vips_image_pipelinev( create->out, VIPS_DEMAND_STYLE_ANY, NULL ); if( vips_image_generate( create->out, NULL, vips_black_gen, NULL, NULL, NULL ) ) return( -1 ); return( 0 ); } static void vips_black_class_init( VipsBlackClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_black_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "black"; vobject_class->description = _( "make a black image" ); vobject_class->build = vips_black_build; VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBlack, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBlack, height ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "bands", 6, _( "Bands" ), _( "Number of bands in image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlack, bands ), 1, VIPS_MAX_COORD, 1 ); } static void vips_black_init( VipsBlack *black ) { black->bands = 1; } /** * vips_black: * @out: output image * @width: output width * @height: output height * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @bands: output bands * * Make a black unsigned char image of a specified size. * * See also: vips_xyz(), vips_text(), vips_gaussnoise(). * * Returns: 0 on success, -1 on error */ int vips_black( VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "black", ap, out, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/mask_ideal_band.c0000664000175000017500000001042712530402247015566 00000000000000/* creates an ideal filter. * * 02/01/14 * - from ideal.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcreate.h" #include "point.h" #include "pmask.h" typedef struct _VipsMaskIdealBand { VipsMask parent_instance; double frequency_cutoff_x; double frequency_cutoff_y; double radius; } VipsMaskIdealBand; typedef VipsMaskClass VipsMaskIdealBandClass; G_DEFINE_TYPE( VipsMaskIdealBand, vips_mask_ideal_band, VIPS_TYPE_MASK ); static double vips_mask_ideal_band_point( VipsMask *mask, double dx, double dy ) { VipsMaskIdealBand *ideal_band = (VipsMaskIdealBand *) mask; double fcx = ideal_band->frequency_cutoff_x; double fcy = ideal_band->frequency_cutoff_y; double r2 = ideal_band->radius * ideal_band->radius; double d1 = (dx - fcx) * (dx - fcx) + (dy - fcy) * (dy - fcy); double d2 = (dx + fcx) * (dx + fcx) + (dy + fcy) * (dy + fcy); return( (d1 < r2 || d2 < r2) ? 1.0 : 0.0 ); } static void vips_mask_ideal_band_class_init( VipsMaskIdealBandClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsMaskClass *mask_class = VIPS_MASK_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mask_ideal_band"; vobject_class->description = _( "make an ideal band filter" ); mask_class->point = vips_mask_ideal_band_point; VIPS_ARG_DOUBLE( class, "frequency_cutoff_x", 6, _( "Frequency cutoff x" ), _( "Frequency cutoff x" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdealBand, frequency_cutoff_x ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "frequency_cutoff_y", 7, _( "Frequency cutoff y" ), _( "Frequency cutoff y" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdealBand, frequency_cutoff_y ), 0.0, 1000000.0, 0.5 ); VIPS_ARG_DOUBLE( class, "radius", 8, _( "radius" ), _( "radius of circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaskIdealBand, radius ), 0.0, 1000000.0, 0.1 ); } static void vips_mask_ideal_band_init( VipsMaskIdealBand *ideal_band ) { ideal_band->frequency_cutoff_x = 0.5; ideal_band->frequency_cutoff_y = 0.5; ideal_band->radius = 0.1; } /** * vips_mask_ideal_band: * @out: output image * @width: image size * @height: image size * @frequency_cutoff_x: position of band * @frequency_cutoff_y: position of band * @radius: size of band * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @nodc: don't set the DC pixel * @reject: invert the filter sense * @optical: coordinates in optical space * @uchar: output a uchar image * * Make an ideal band-pass or band-reject filter, that is, one with a * sharp cutoff around the point @frequency_cutoff_x, @frequency_cutoff_y, * of size @radius. * * See also: vips_mask_ideal(). * * Returns: 0 on success, -1 on error */ int vips_mask_ideal_band( VipsImage **out, int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, ... ) { va_list ap; int result; va_start( ap, radius ); result = vips_call_split( "mask_ideal_band", ap, out, width, height, frequency_cutoff_x, frequency_cutoff_y, radius ); va_end( ap ); return( result ); } vips-8.2.2/libvips/create/buildlut.c0000664000175000017500000002012212651663124014335 00000000000000/* Build a LUT from a set of x/y points. * * Written on: 26/9/06 * - from im_invertlut() * 9/10/06 * - don't output x values * 18/3/09 * - saner limit and rounding behaviour * 30/3/09 * - argh, fixed again * 22/6/09 * - more fixes for tables that don't start at zero (thanks Jack) * 23/3/10 * - gtkdoc * 2/7/13 * - convert to a class * 10/12/13 * - be more forgiving about x vales not quite integers */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcreate.h" typedef struct _VipsBuildlut { VipsCreate parent_instance; /* Input image. */ VipsImage *in; /* .. and cast to a matrix. */ VipsImage *mat; int xlow; /* Index 0 in output is this x */ int lut_size; /* Number of output elements to generate */ double **data; /* Matrix row pointers */ double *buf; /* Output buffer */ } VipsBuildlut; typedef VipsCreateClass VipsBuildlutClass; G_DEFINE_TYPE( VipsBuildlut, vips_buildlut, VIPS_TYPE_CREATE ); static void vips_buildlut_dispose( GObject *gobject ) { VipsBuildlut *lut = (VipsBuildlut *) gobject; VIPS_FREE( lut->data ); VIPS_FREE( lut->buf ); VIPS_UNREF( lut->mat ); G_OBJECT_CLASS( vips_buildlut_parent_class )->dispose( gobject ); } /* Use this to sort our input rows by the first column. */ static int vips_buildlut_compare( const void *a, const void *b ) { double **r1 = (double **) a; double **r2 = (double **) b; double diff = r1[0][0] - r2[0][0]; if( diff > 0 ) return( 1 ); else if( diff == 0 ) return( 0 ); else return( -1 ); } static int vips_buildlut_build_init( VipsBuildlut *lut ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( lut ); int y; int xlow, xhigh; /* Need xlow and xhigh to get the size of the LUT we build. */ xlow = xhigh = *VIPS_MATRIX( lut->mat, 0, 0 ); for( y = 0; y < lut->mat->Ysize; y++ ) { double v = *VIPS_MATRIX( lut->mat, 0, y ); /* Allow for being a bit off. */ if( VIPS_FABS( v - VIPS_RINT( v ) ) > 0.001 ) { vips_error( class->nickname, _( "x value row %d not an int" ), y ); return( -1 ); } v = VIPS_RINT( v ); if( v < xlow ) xlow = v; if( v > xhigh ) xhigh = v; } lut->xlow = xlow; lut->lut_size = xhigh - xlow + 1; if( lut->lut_size < 1 ) { vips_error( class->nickname, "%s", _( "x range too small" ) ); return( -1 ); } if( !(lut->data = VIPS_ARRAY( NULL, lut->mat->Ysize, double * )) ) return( -1 ); for( y = 0; y < lut->mat->Ysize; y++ ) lut->data[y] = VIPS_MATRIX( lut->mat, 0, y ); if( !(lut->buf = VIPS_ARRAY( NULL, lut->lut_size * (lut->mat->Xsize - 1), double )) ) return( -1 ); /* Sort by 1st column in input. */ qsort( lut->data, lut->mat->Ysize, sizeof( double * ), vips_buildlut_compare ); #ifdef DEBUG printf( "Input table, sorted by 1st column\n" ); for( y = 0; y < lut->mat->Ysize; y++ ) { printf( "%.4d ", y ); for( x = 0; x < lut->mat->Xsize; x++ ) printf( "%.9f ", lut->data[y][x] ); printf( "\n" ); } #endif /*DEBUG*/ return( 0 ); } static int vips_buildlut_build_create( VipsBuildlut *lut ) { const int xlow = lut->xlow; const VipsImage *mat = lut->mat; const int xsize = mat->Xsize; const int ysize = mat->Ysize; const int bands = xsize - 1; const int xlast = lut->data[ysize - 1][0]; int b, i, x; /* Do each output channel separately. */ for( b = 0; b < bands; b++ ) { for( i = 0; i < ysize - 1; i++ ) { const int x1 = VIPS_RINT( lut->data[i][0] ); const int x2 = VIPS_RINT( lut->data[i + 1][0] ); const int dx = x2 - x1; const double y1 = lut->data[i][b + 1]; const double y2 = lut->data[i + 1][b + 1]; const double dy = y2 - y1; for( x = 0; x < dx; x++ ) lut->buf[b + (x + x1 - xlow) * bands] = y1 + x * dy / dx; } /* We are inclusive: pop the final value in by hand. */ lut->buf[b + (xlast - xlow) * bands] = lut->data[ysize - 1][b + 1]; } return( 0 ); } static int vips_buildlut_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCreate *create = VIPS_CREATE( object ); VipsBuildlut *lut = (VipsBuildlut *) object; if( VIPS_OBJECT_CLASS( vips_buildlut_parent_class )->build( object ) ) return( -1 ); if( vips_check_matrix( class->nickname, lut->in, &lut->mat ) ) return( -1 ); if( vips_buildlut_build_init( lut ) || vips_buildlut_build_create( lut ) ) return( -1 ); vips_image_init_fields( create->out, lut->lut_size, 1, lut->mat->Xsize - 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( vips_image_write_line( create->out, 0, (VipsPel *) lut->buf ) ) return( -1 ); return( 0 ); } static void vips_buildlut_class_init( VipsBuildlutClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->dispose = vips_buildlut_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "buildlut"; vobject_class->description = _( "build a look-up table" ); vobject_class->build = vips_buildlut_build; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Matrix of XY coordinates" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBuildlut, in ) ); } static void vips_buildlut_init( VipsBuildlut *lut ) { } /** * vips_buildlut: * @in: input matrix * @out: output image * @...: %NULL-terminated list of optional named arguments * * This operation builds a lookup table from a set of points. Intermediate * values are generated by piecewise linear interpolation. * * For example, consider this 2 x 2 matrix of (x, y) coordinates: * * * * * 0 * 0 * * * 255 * 100 * * * * * We then generate: * * * * * Index * Value * * * * * 0 * 0 * * * 1 * 0.4 * * * ... * etc. by linear interpolation * * * 255 * 100 * * * * * This is then written as the output image, with the left column giving the * index in the image to place the value. * * The (x, y) points don't need to be sorted: we do that. You can have * several Ys, each becomes a band in the output LUT. You don't need to * start at zero, any integer will do, including negatives. * * See also: vips_identity(), vips_invertlut(). * * Returns: 0 on success, -1 on error */ int vips_buildlut( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "buildlut", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/resample/0000775000175000017500000000000012651721505012773 500000000000000vips-8.2.2/libvips/resample/shrink2.c0000664000175000017500000002722612651124107014443 00000000000000/* shrink with a box filter * * Copyright: 1990, N. Dessipris. * * Authors: Nicos Dessipris and Kirk Martinez * Written on: 29/04/1991 * Modified on: 2/11/92, 22/2/93 Kirk Martinez - Xres Yres & cleanup incredibly inefficient for box filters as LUTs are used instead of + Needs converting to a smoother filter: eg Gaussian! KM * 15/7/93 JC * - rewritten for partial v2 * - ANSIfied * - now shrinks any non-complex type * - no longer cloned from im_convsub() * - could be much better! see km comments above * 3/8/93 JC * - rounding bug fixed * 11/1/94 JC * - problems with .000001 and round up/down ignored! Try shrink 3738 * pixel image by 9.345000000001 * 7/10/94 JC * - IM_NEW and IM_ARRAY added * - more typedef * 3/7/95 JC * - IM_CODING_LABQ handling added here * 20/12/08 * - fall back to im_copy() for 1/1 shrink * 2/2/11 * - gtk-doc * 10/2/12 * - shrink in chunks to reduce peak memuse for large shrinks * - simpler * 12/6/12 * - redone as a class * - warn about non-int shrinks * - some tuning .. tried an int coordinate path, not worthwhile * 16/11/12 * - don't change xres/yres, see comment below * 8/4/13 * - oops demand_hint was incorrect, thanks Jan * 6/6/13 * - don't chunk horizontally, fixes seq problems with large shrink * factors */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsShrink2 { VipsResample parent_instance; double xshrink; /* Shrink factors */ double yshrink; int mw; /* Size of area we average */ int mh; int np; /* Number of pels we average */ } VipsShrink2; typedef VipsResampleClass VipsShrink2Class; G_DEFINE_TYPE( VipsShrink2, vips_shrink2, VIPS_TYPE_RESAMPLE ); /* Our per-sequence parameter struct. Somewhere to sum band elements. */ typedef struct { VipsRegion *ir; VipsPel *sum; } VipsShrink2Sequence; /* Free a sequence value. */ static int vips_shrink2_stop( void *vseq, void *a, void *b ) { VipsShrink2Sequence *seq = (VipsShrink2Sequence *) vseq; VIPS_FREEF( g_object_unref, seq->ir ); return( 0 ); } /* Make a sequence value. */ static void * vips_shrink2_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsShrink2 *shrink = (VipsShrink2 *) b; VipsShrink2Sequence *seq; if( !(seq = VIPS_NEW( out, VipsShrink2Sequence )) ) return( NULL ); seq->ir = vips_region_new( in ); if( !(seq->sum = (VipsPel *) VIPS_ARRAY( out, in->Bands, double )) ) { vips_shrink2_stop( seq, in, shrink ); return( NULL ); } return( (void *) seq ); } /* Integer shrink. */ #define ISHRINK( TYPE ) { \ int *sum = (int *) seq->sum; \ TYPE *p = (TYPE *) in; \ TYPE *q = (TYPE *) out; \ \ for( b = 0; b < bands; b++ ) \ sum[b] = 0; \ \ for( y1 = 0; y1 < shrink->mh; y1++ ) { \ for( i = 0, x1 = 0; x1 < shrink->mw; x1++ ) \ for( b = 0; b < bands; b++, i++ ) \ sum[b] += p[i]; \ \ p += ls; \ } \ \ for( b = 0; b < bands; b++ ) \ q[b] = (sum[b] + shrink->np / 2) / shrink->np; \ } /* Float shrink. */ #define FSHRINK( TYPE ) { \ double *sum = (double *) seq->sum; \ TYPE *p = (TYPE *) in; \ TYPE *q = (TYPE *) out; \ \ for( b = 0; b < bands; b++ ) \ sum[b] = 0.0; \ \ for( y1 = 0; y1 < shrink->mh; y1++ ) { \ for( i = 0, x1 = 0; x1 < shrink->mw; x1++ ) \ for( b = 0; b < bands; b++, i++ ) \ sum[b] += p[i]; \ \ p += ls; \ } \ \ for( b = 0; b < bands; b++ ) \ q[b] = sum[b] / shrink->np; \ } /* Generate an area of @or. @ir is large enough. */ static void vips_shrink2_gen2( VipsShrink2 *shrink, VipsShrink2Sequence *seq, VipsRegion *or, VipsRegion *ir, int left, int top, int width, int height ) { VipsResample *resample = VIPS_RESAMPLE( shrink ); const int bands = resample->in->Bands; const int sizeof_pixel = VIPS_IMAGE_SIZEOF_PEL( resample->in ); const int ls = VIPS_REGION_LSKIP( ir ) / VIPS_IMAGE_SIZEOF_ELEMENT( resample->in ); int x, y, i; int x1, y1, b; for( y = 0; y < height; y++ ) { VipsPel *out = VIPS_REGION_ADDR( or, left, top + y ); for( x = 0; x < width; x++ ) { int ix = (left + x) * shrink->xshrink; int iy = (top + y) * shrink->yshrink; VipsPel *in = VIPS_REGION_ADDR( ir, ix, iy ); switch( resample->in->BandFmt ) { case VIPS_FORMAT_UCHAR: ISHRINK( unsigned char ); break; case VIPS_FORMAT_CHAR: ISHRINK( char ); break; case VIPS_FORMAT_USHORT: ISHRINK( unsigned short ); break; case VIPS_FORMAT_SHORT: ISHRINK( short ); break; case VIPS_FORMAT_UINT: ISHRINK( unsigned int ); break; case VIPS_FORMAT_INT: ISHRINK( int ); break; case VIPS_FORMAT_FLOAT: FSHRINK( float ); break; case VIPS_FORMAT_DOUBLE: FSHRINK( double ); break; default: g_assert_not_reached(); } out += sizeof_pixel; } } } static int vips_shrink2_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsShrink2Sequence *seq = (VipsShrink2Sequence *) vseq; VipsShrink2 *shrink = (VipsShrink2 *) b; VipsRegion *ir = seq->ir; VipsRect *r = &or->valid; /* How do we chunk up the image? We don't want to prepare the whole of * the input region corresponding to *r since it could be huge. * * Each pixel of *r will depend on roughly mw x mh * pixels, so we walk *r in chunks which map to the tile size. * * Make sure we can't ask for a zero step. * * We don't chunk horizontally. We want "vips shrink x.jpg b.jpg 100 * 100" to run sequentially. If we chunk horizontally, we will fetch * 100x100 lines from the top of the image, then 100x100 100 lines * down, etc. for each thread, then when they've finished, fetch * 100x100, 100 pixels across from the top of the image. This will * break sequentiality. */ int ystep = shrink->mh > VIPS__TILE_HEIGHT ? 1 : VIPS__TILE_HEIGHT / shrink->mh; int y; #ifdef DEBUG printf( "vips_shrink2_gen: generating %d x %d at %d x %d\n", r->width, r->height, r->left, r->top ); #endif /*DEBUG*/ for( y = 0; y < r->height; y += ystep ) { /* Clip the this rect against the demand size. */ int height = VIPS_MIN( ystep, r->height - y ); VipsRect s; s.left = r->left * shrink->xshrink; s.top = (r->top + y) * shrink->yshrink; s.width = VIPS_CEIL( r->width * shrink->xshrink ); s.height = VIPS_CEIL( height * shrink->yshrink ); #ifdef DEBUG printf( "shrink_gen: requesting %d x %d at %d x %d\n", s.width, s.height, s.left, s.top ); #endif /*DEBUG*/ if( vips_region_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "vips_shrink2_gen: work" ); vips_shrink2_gen2( shrink, seq, or, ir, r->left, r->top + y, r->width, height ); VIPS_GATE_STOP( "vips_shrink2_gen: work" ); } return( 0 ); } static int vips_shrink2_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsShrink2 *shrink = (VipsShrink2 *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_shrink2_parent_class )->build( object ) ) return( -1 ); shrink->mw = VIPS_CEIL( shrink->xshrink ); shrink->mh = VIPS_CEIL( shrink->yshrink ); shrink->np = shrink->mw * shrink->mh; in = resample->in; if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( shrink->xshrink < 1.0 || shrink->yshrink < 1.0 ) { vips_error( class->nickname, "%s", _( "shrink factors should be >= 1" ) ); return( -1 ); } if( (int) shrink->xshrink != shrink->xshrink || (int) shrink->yshrink != shrink->yshrink ) vips_warn( class->nickname, "%s", _( "not integer shrink factors, " "expect poor results" ) ); if( shrink->xshrink == 1.0 && shrink->yshrink == 1.0 ) return( vips_image_write( in, resample->out ) ); /* Unpack for processing. */ if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* THINSTRIP will work, anything else will break seq mode. If you * combine shrink with conv you'll need to use a line cache to maintain * sequentiality. */ if( vips_image_pipelinev( resample->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); /* Size output. Note: we round the output width down! * * Don't change xres/yres, leave that to the application layer. For * example, vipsthumbnail knows the true shrink factor (including the * fractional part), we just see the integer part here. */ resample->out->Xsize = in->Xsize / shrink->xshrink; resample->out->Ysize = in->Ysize / shrink->yshrink; if( resample->out->Xsize <= 0 || resample->out->Ysize <= 0 ) { vips_error( class->nickname, "%s", _( "image has shrunk to nothing" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_shrink2_build: shrinking %d x %d image to %d x %d\n", in->Xsize, in->Ysize, resample->out->Xsize, resample->out->Ysize ); printf( "vips_shrink2_build: %d x %d block average\n", shrink->mw, shrink->mh ); #endif /*DEBUG*/ if( vips_image_generate( resample->out, vips_shrink2_start, vips_shrink2_gen, vips_shrink2_stop, in, shrink ) ) return( -1 ); return( 0 ); } static void vips_shrink2_class_init( VipsShrink2Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_shrink2_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "shrink2"; vobject_class->description = _( "shrink an image" ); vobject_class->build = vips_shrink2_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_DOUBLE( class, "xshrink", 8, _( "Xshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrink2, xshrink ), 1.0, 1000000, 1 ); VIPS_ARG_DOUBLE( class, "yshrink", 9, _( "Yshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrink2, yshrink ), 1.0, 1000000, 1 ); } static void vips_shrink2_init( VipsShrink2 *shrink ) { } /** * vips_shrink2: * @in: input image * @out: output image * @xshrink: horizontal shrink * @yshrink: vertical shrink * @...: %NULL-terminated list of optional named arguments * * Shrink @in by a pair of factors with a simple box filter. * * This is an old version of vips_shrink() kept around for testing. Use * vips_shrink() in preference. * * See also: vips_resize(), vips_affine(). * * Returns: 0 on success, -1 on error */ int vips_shrink2( VipsImage *in, VipsImage **out, double xshrink, double yshrink, ... ) { va_list ap; int result; va_start( ap, yshrink ); result = vips_call_split( "shrink2", ap, in, out, xshrink, yshrink ); va_end( ap ); return( result ); } vips-8.2.2/libvips/resample/templates.h0000664000175000017500000001671112650644205015070 00000000000000/* various interpolation templates */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * Various casts which assume that the data is already in range. (That * is, they are to be used with monotone samplers.) */ template static T inline to_fptypes( const double val ) { const T newval = val; return( newval ); } template static T inline to_withsign( const double val ) { const int sign_of_val = 2 * ( val >= 0. ) - 1; const int rounded_abs_val = .5 + sign_of_val * val; const T newval = sign_of_val * rounded_abs_val; return( newval ); } template static T inline to_nosign( const double val ) { const T newval = .5 + val; return( newval ); } /* * Various bilinear implementation templates. Note that no clampling * is used: There is an assumption that the data is such that * over/underflow is not an issue: */ /* * Bilinear interpolation for float and double types. The first four * inputs are weights, the last four are the corresponding pixel * values: */ template static T inline bilinear_fptypes( const double w_times_z, const double x_times_z, const double w_times_y, const double x_times_y, const double tre_thr, const double tre_thrfou, const double trequa_thr, const double trequa_thrfou ) { const T newval = w_times_z * tre_thr + x_times_z * tre_thrfou + w_times_y * trequa_thr + x_times_y * trequa_thrfou; return( newval ); } /* * Bilinear interpolation for signed integer types: */ template static T inline bilinear_withsign( const double w_times_z, const double x_times_z, const double w_times_y, const double x_times_y, const double tre_thr, const double tre_thrfou, const double trequa_thr, const double trequa_thrfou ) { const double val = w_times_z * tre_thr + x_times_z * tre_thrfou + w_times_y * trequa_thr + x_times_y * trequa_thrfou; const int sign_of_val = 2 * ( val >= 0. ) - 1; const int rounded_abs_val = .5 + sign_of_val * val; const T newval = sign_of_val * rounded_abs_val; return( newval ); } /* * Bilinear Interpolation for unsigned integer types: */ template static T inline bilinear_nosign( const double w_times_z, const double x_times_z, const double w_times_y, const double x_times_y, const double tre_thr, const double tre_thrfou, const double trequa_thr, const double trequa_thrfou ) { const T newval = w_times_z * tre_thr + x_times_z * tre_thrfou + w_times_y * trequa_thr + x_times_y * trequa_thrfou + 0.5; return( newval ); } /* * Bicubic (Catmull-Rom) interpolation templates: */ static int inline unsigned_fixed_round( int v ) { const int round_by = VIPS_INTERPOLATE_SCALE >> 1; return( (v + round_by) >> VIPS_INTERPOLATE_SHIFT ); } /* Fixed-point integer bicubic, used for 8 and 16-bit types. */ template static int inline bicubic_unsigned_int( const T uno_one, const T uno_two, const T uno_thr, const T uno_fou, const T dos_one, const T dos_two, const T dos_thr, const T dos_fou, const T tre_one, const T tre_two, const T tre_thr, const T tre_fou, const T qua_one, const T qua_two, const T qua_thr, const T qua_fou, const int* restrict cx, const int* restrict cy ) { const int r0 = unsigned_fixed_round( cx[0] * uno_one + cx[1] * uno_two + cx[2] * uno_thr + cx[3] * uno_fou ); const int r1 = unsigned_fixed_round( cx[0] * dos_one + cx[1] * dos_two + cx[2] * dos_thr + cx[3] * dos_fou ); const int r2 = unsigned_fixed_round( cx[0] * tre_one + cx[1] * tre_two + cx[2] * tre_thr + cx[3] * tre_fou ); const int r3 = unsigned_fixed_round( cx[0] * qua_one + cx[1] * qua_two + cx[2] * qua_thr + cx[3] * qua_fou ); return( unsigned_fixed_round( cy[0] * r0 + cy[1] * r1 + cy[2] * r2 + cy[3] * r3 ) ); } static int inline signed_fixed_round( int v ) { const int sign_of_v = 2 * (v > 0) - 1; const int round_by = sign_of_v * (VIPS_INTERPOLATE_SCALE >> 1); return( (v + round_by) >> VIPS_INTERPOLATE_SHIFT ); } /* Fixed-point integer bicubic, used for 8 and 16-bit types. */ template static int inline bicubic_signed_int( const T uno_one, const T uno_two, const T uno_thr, const T uno_fou, const T dos_one, const T dos_two, const T dos_thr, const T dos_fou, const T tre_one, const T tre_two, const T tre_thr, const T tre_fou, const T qua_one, const T qua_two, const T qua_thr, const T qua_fou, const int* restrict cx, const int* restrict cy ) { const int r0 = signed_fixed_round( cx[0] * uno_one + cx[1] * uno_two + cx[2] * uno_thr + cx[3] * uno_fou ); const int r1 = signed_fixed_round( cx[0] * dos_one + cx[1] * dos_two + cx[2] * dos_thr + cx[3] * dos_fou ); const int r2 = signed_fixed_round( cx[0] * tre_one + cx[1] * tre_two + cx[2] * tre_thr + cx[3] * tre_fou ); const int r3 = signed_fixed_round( cx[0] * qua_one + cx[1] * qua_two + cx[2] * qua_thr + cx[3] * qua_fou ); return( signed_fixed_round( cy[0] * r0 + cy[1] * r1 + cy[2] * r2 + cy[3] * r3 ) ); } /* Floating-point bicubic, used for int/float/double types. */ template static T inline bicubic_float( const T uno_one, const T uno_two, const T uno_thr, const T uno_fou, const T dos_one, const T dos_two, const T dos_thr, const T dos_fou, const T tre_one, const T tre_two, const T tre_thr, const T tre_fou, const T qua_one, const T qua_two, const T qua_thr, const T qua_fou, const double* restrict cx, const double* restrict cy ) { return( cy[0] * (cx[0] * uno_one + cx[1] * uno_two + cx[2] * uno_thr + cx[3] * uno_fou) + cy[1] * (cx[0] * dos_one + cx[1] * dos_two + cx[2] * dos_thr + cx[3] * dos_fou) + cy[2] * (cx[0] * tre_one + cx[1] * tre_two + cx[2] * tre_thr + cx[3] * tre_fou) + cy[3] * (cx[0] * qua_one + cx[1] * qua_two + cx[2] * qua_thr + cx[3] * qua_fou) ); } /* Given an offset in [0,1] (we can have x == 1 when building tables), * calculate c0, c1, c2, c3, the catmull-rom coefficients. This is called * from the interpolator as well as from the table builder. */ static void inline calculate_coefficients_catmull( const double x, double c[4] ) { /* Nicolas believes that the following is an hitherto unknown * hyper-efficient method of computing Catmull-Rom coefficients. It * only uses 4* & 1+ & 5- for a total of only 10 flops to compute * four coefficients. */ const double cr1 = 1. - x; const double cr2 = -.5 * x; const double cr3 = cr1 * cr2; const double cone = cr1 * cr3; const double cfou = x * cr3; const double cr4 = cfou - cone; const double ctwo = cr1 - cone + cr4; const double cthr = x - cfou - cr4; g_assert( x >= 0. && x <= 1. ); c[0] = cone; c[3] = cfou; c[1] = ctwo; c[2] = cthr; } vips-8.2.2/libvips/resample/affine.c0000664000175000017500000004476312650646750014334 00000000000000/* affine transform with a supplied interpolator. * * * Copyright N. Dessipris * Written on: 01/11/1991 * Modified on: 12/3/92 JC * - rounding error in interpolation routine fixed * - test for scale=1, angle=0 case fixed * - clipping of output removed: redundant * - various little tidies * - problems remain with scale>20, size<10 * * Re-written on: 20/08/92, J.Ph Laurent * * 21/02/93, JC * - speed-ups * - simplifications * - im_similarity now calculates a window and calls this routine * 6/7/93 JC * - rewritten for partials * - ANSIfied * - now rotates any non-complex type * 3/6/94 JC * - C revised in bug search * 9/6/94 JC * - im_prepare() was preparing too small an area! oops * 22/5/95 JC * - added code to detect all-black output area case - helps lazy ip * 3/7/95 JC * - IM_CODING_LABQ handling moved to here * 31/7/97 JC * - dx/dy sign reversed to be less confusing ... now follows comment at * top ... ax - by + dx etc. * - tiny speed up, replaced the *++ on interpolation with [z] * - im_similarity() moved in here * - args swapped: was whxy, now xywh * - didn't agree with dispatch fns before :( * 3/3/98 JC * - im_demand_hint() added * 20/12/99 JC * - im_affine() made from im_similarity_area() * - transform stuff cleaned up a bit * 14/4/01 JC * - oops, invert_point() had a rounding problem * 23/2/02 JC * - pre-calculate interpolation matricies * - integer interpolation for int8/16 types, double for * int32/float/double * - faster transformation * 15/8/02 JC * - records Xoffset/Yoffset * 14/4/04 * - rounding, clipping and transforming revised, now pixel-perfect (or * better than gimp, anyway) * 22/6/05 * - all revised again, simpler and more reliable now * 30/3/06 * - gah, still an occasional clipping problem * 12/7/06 * - still more tweaking, gah again * 7/10/06 * - set THINSTRIP for no-rotate affines * 20/10/08 * - version with interpolate parameter, from im_affine() * 30/10/08 * - allow complex image types * 4/11/08 * - take an interpolator as a param * - replace im_affine with this, provide an im_affine() compat wrapper * - break transform stuff out to transform.c * - revise clipping / transform stuff, again * - now do corner rather than centre: this way the identity transform * returns the input exactly * 12/8/10 * - revise window_size / window_offset stuff again, see also * interpolate.c * 2/2/11 * - gtk-doc * 14/12/12 * - redone as a class * - added input space translation * 22/1/14 * - auto RAD decode * 1/8/14 * - revise transform ... again * - see new stress test in nip2/test/extras */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsAffine { VipsResample parent_instance; VipsArea *matrix; VipsInterpolate *interpolate; VipsArea *oarea; double odx; double ody; double idx; double idy; VipsTransformation trn; } VipsAffine; typedef VipsResampleClass VipsAffineClass; G_DEFINE_TYPE( VipsAffine, vips_affine, VIPS_TYPE_RESAMPLE ); /* We have five (!!) coordinate systems. Working forward through them, these * are: * * 1. The original input image. iarea is defined on this image. * * 2. This is embedded in a larger image to provide borders for the * interpolator. window_offset and window_size control the embedding. * These are the coordinates we pass to VIPS_REGION_ADDR()/ * vips_region_prepare() and the interpolator. * * The borders are sized by the interpolator's window_size property and offset * by the interpolator's window_offset property. For example, * for bilinear (window_size 2, window_offset 0) we add a single line * of extra pixels along the bottom and right (window_size - 1). For * bicubic (window_size 4, window_offset 1) we add a single line top and left * (window_offset), and two lines bottom and right (window_size - 1 - * window_offset). * * 3. We need point (0, 0) in (1) to be at (0, 0) for the transformation. So * shift everything up and left to make the displaced input image. This is the * space that the transformation maps from, and can have negative pixels * (up and left of the image, for interpolation). iarea works here too. * * 4. Output transform space. This is the where the transform maps to. Pixels * can be negative, since a rotated image can go up and left of the origin. * * 5. Output image space. This is the wh of the xywh passed to vips_affine() * below. These are the coordinates we pass to VIPS_REGION_ADDR() for the * output image, and that affinei_gen() is asked for. */ static int vips_affine_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; const VipsAffine *affine = (VipsAffine *) b; const VipsImage *in = (VipsImage *) a; const int window_size = vips_interpolate_get_window_size( affine->interpolate ); const int window_offset = vips_interpolate_get_window_offset( affine->interpolate ); const VipsInterpolateMethod interpolate = vips_interpolate_get_method( affine->interpolate ); /* Area we generate in the output image. */ const VipsRect *r = &or->valid; const int le = r->left; const int ri = VIPS_RECT_RIGHT( r ); const int to = r->top; const int bo = VIPS_RECT_BOTTOM( r ); const VipsRect *iarea = &affine->trn.iarea; const VipsRect *oarea = &affine->trn.oarea; int ps = VIPS_IMAGE_SIZEOF_PEL( in ); int x, y, z; VipsRect image, want, need, clipped; #ifdef DEBUG_VERBOSE printf( "vips_affine_gen: " "generating left=%d, top=%d, width=%d, height=%d\n", r->left, r->top, r->width, r->height ); #endif /*DEBUG_VERBOSE*/ /* We are generating this chunk of the transformed image. This takes * us to space 4. */ want = *r; want.left += oarea->left; want.top += oarea->top; /* Find the area of the input image we need. This takes us to space 3. */ vips__transform_invert_rect( &affine->trn, &want, &need ); /* That does round-to-nearest, because it has to stop rounding errors * growing images unexpectedly. We need round-down, so we must * add half a pixel along the left and top. But we are int :( so add 1 * pixel. * * Add an extra line along the right and bottom as well, for rounding. */ vips_rect_marginadjust( &need, 1 ); /* We need to fetch a larger area for the interpolator. */ need.left -= window_offset; need.top -= window_offset; need.width += window_size - 1; need.height += window_size - 1; /* Now go to space 2, the expanded input image. This is the one we * read pixels from. */ need.left += window_offset; need.top += window_offset; /* Clip against the size of (2). */ image.left = 0; image.top = 0; image.width = in->Xsize; image.height = in->Ysize; vips_rect_intersectrect( &need, &image, &clipped ); #ifdef DEBUG_VERBOSE printf( "vips_affine_gen: " "preparing left=%d, top=%d, width=%d, height=%d\n", clipped.left, clipped.top, clipped.width, clipped.height ); #endif /*DEBUG_VERBOSE*/ if( vips_rect_isempty( &clipped ) ) { vips_region_black( or ); return( 0 ); } if( vips_region_prepare( ir, &clipped ) ) return( -1 ); VIPS_GATE_START( "vips_affine_gen: work" ); /* Resample! x/y loop over pixels in the output image (5). */ for( y = to; y < bo; y++ ) { /* Input clipping rectangle. We offset this so we can clip in * space 2. */ const int ile = iarea->left + window_offset; const int ito = iarea->top + window_offset; const int iri = ile + iarea->width; const int ibo = ito + iarea->height; /* Derivative of matrix. */ const double ddx = affine->trn.ia; const double ddy = affine->trn.ic; /* Continuous cods in transformed space. */ const double ox = le + oarea->left - affine->trn.odx; const double oy = y + oarea->top - affine->trn.ody; /* Continuous cods in input space. */ double ix, iy; VipsPel *q; /* To (3). */ ix = affine->trn.ia * ox + affine->trn.ib * oy; iy = affine->trn.ic * ox + affine->trn.id * oy; /* And the input offset in (3). */ ix -= affine->trn.idx; iy -= affine->trn.idy; /* Finally to 2. */ ix += window_offset; iy += window_offset; q = VIPS_REGION_ADDR( or, le, y ); for( x = le; x < ri; x++ ) { int fx, fy; fx = VIPS_FLOOR( ix ); fy = VIPS_FLOOR( iy ); /* Clip against iarea. */ if( fx >= ile && fx < iri && fy >= ito && fy < ibo ) { /* Verify that we can read the whole stencil. * With DEBUG on this will range-check. */ g_assert( VIPS_REGION_ADDR( ir, (int) ix - window_offset, (int) iy - window_offset ) ); g_assert( VIPS_REGION_ADDR( ir, (int) ix - window_offset + window_size - 1, (int) iy - window_offset + window_size - 1 ) ); interpolate( affine->interpolate, q, ir, ix, iy ); } else { for( z = 0; z < ps; z++ ) q[z] = 0; } ix += ddx; iy += ddy; q += ps; } } VIPS_GATE_STOP( "vips_affine_gen: work" ); return( 0 ); } static int vips_affine_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsAffine *affine = (VipsAffine *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; VipsDemandStyle hint; int window_size; int window_offset; double edge; if( VIPS_OBJECT_CLASS( vips_affine_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, resample->in ) ) return( -1 ); if( vips_check_vector_length( class->nickname, affine->matrix->n, 4 ) ) return( -1 ); if( vips_object_argument_isset( object, "oarea" ) && vips_check_vector_length( class->nickname, affine->oarea->n, 4 ) ) return( -1 ); /* We can't use vips_object_argument_isset(), since it may have been * set to NULL, see vips_similarity(). */ if( !affine->interpolate ) { VipsInterpolate *interpolate; interpolate = vips_interpolate_new( "bilinear" ); g_object_set( object, "interpolate", interpolate, NULL ); g_object_unref( interpolate ); /* coverity gets confused by this, it thinks * affine->interpolate may still be null. Assign ourselves, * even though we don't need to. */ affine->interpolate = interpolate; } in = resample->in; /* Set up transform. */ window_size = vips_interpolate_get_window_size( affine->interpolate ); window_offset = vips_interpolate_get_window_offset( affine->interpolate ); affine->trn.iarea.left = 0; affine->trn.iarea.top = 0; affine->trn.iarea.width = in->Xsize; affine->trn.iarea.height = in->Ysize; affine->trn.a = ((double *) affine->matrix->data)[0]; affine->trn.b = ((double *) affine->matrix->data)[1]; affine->trn.c = ((double *) affine->matrix->data)[2]; affine->trn.d = ((double *) affine->matrix->data)[3]; affine->trn.idx = 0; affine->trn.idy = 0; affine->trn.odx = 0; affine->trn.ody = 0; if( vips__transform_calc_inverse( &affine->trn ) ) return( -1 ); /* Set the default value for oarea. */ vips__transform_set_area( &affine->trn ); if( vips_object_argument_isset( object, "oarea" ) ) { affine->trn.oarea.left = ((int *) affine->oarea->data)[0]; affine->trn.oarea.top = ((int *) affine->oarea->data)[1]; affine->trn.oarea.width = ((int *) affine->oarea->data)[2]; affine->trn.oarea.height = ((int *) affine->oarea->data)[3]; } if( vips_object_argument_isset( object, "odx" ) ) affine->trn.odx = affine->odx; if( vips_object_argument_isset( object, "ody" ) ) affine->trn.ody = affine->ody; if( vips_object_argument_isset( object, "idx" ) ) affine->trn.idx = affine->idx; if( vips_object_argument_isset( object, "idy" ) ) affine->trn.idy = affine->idy; #ifdef DEBUG printf( "vips_affine_build: copy on identity transform disabled\n" ); #else /*!DEBUG*/ if( vips__transform_isidentity( &affine->trn ) && affine->trn.oarea.left == 0 && affine->trn.oarea.top == 0 && affine->trn.oarea.width == in->Xsize && affine->trn.oarea.height == in->Ysize ) return( vips_image_write( in, resample->out ) ); #endif /*!DEBUG*/ /* Check for coordinate overflow ... we want to be able to hold the * output space inside INT_MAX / TRANSFORM_SCALE. */ edge = (int) (INT_MAX / VIPS_TRANSFORM_SCALE); if( affine->trn.oarea.left < -edge || affine->trn.oarea.top < -edge || VIPS_RECT_RIGHT( &affine->trn.oarea ) > edge || VIPS_RECT_BOTTOM( &affine->trn.oarea ) > edge ) { vips_error( class->nickname, "%s", _( "output coordinates out of range" ) ); return( -1 ); } if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Add new pixels around the input so we can interpolate at the edges. */ if( vips_embed( in, &t[2], window_offset, window_offset, in->Xsize + window_size - 1, in->Ysize + window_size - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[2]; /* Normally SMALLTILE ... except if this is strictly a size * up/down affine. */ if( affine->trn.b == 0.0 && affine->trn.c == 0.0 ) hint = VIPS_DEMAND_STYLE_FATSTRIP; else hint = VIPS_DEMAND_STYLE_SMALLTILE; if( vips_image_pipelinev( resample->out, hint, in, NULL ) ) return( -1 ); resample->out->Xsize = affine->trn.oarea.width; resample->out->Ysize = affine->trn.oarea.height; #ifdef DEBUG printf( "vips_affine_build: transform: " ); vips__transform_print( &affine->trn ); printf( " window_offset = %d, window_size = %d\n", window_offset, window_size ); printf( " input image width = %d, height = %d\n", in->Xsize, in->Ysize ); printf( " output image width = %d, height = %d\n", resample->out->Xsize, resample->out->Ysize ); #endif /*DEBUG*/ /* Generate! */ if( vips_image_generate( resample->out, vips_start_one, vips_affine_gen, vips_stop_one, in, affine ) ) return( -1 ); /* Finally: can now set Xoffset/Yoffset. */ resample->out->Xoffset = affine->trn.odx - affine->trn.oarea.left; resample->out->Yoffset = affine->trn.ody - affine->trn.oarea.top; return( 0 ); } static void vips_affine_class_init( VipsAffineClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_affine_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "affine"; vobject_class->description = _( "affine transform of an image" ); vobject_class->build = vips_affine_build; VIPS_ARG_BOXED( class, "matrix", 110, _( "Matrix" ), _( "Transformation matrix" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsAffine, matrix ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_INTERPOLATE( class, "interpolate", 2, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, interpolate ) ); VIPS_ARG_BOXED( class, "oarea", 111, _( "Output rect" ), _( "Area of output to generate" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, oarea ), VIPS_TYPE_ARRAY_INT ); VIPS_ARG_DOUBLE( class, "odx", 112, _( "Output offset" ), _( "Horizontal output displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, odx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "ody", 113, _( "Output offset" ), _( "Vertical output displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, ody ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idx", 114, _( "Input offset" ), _( "Horizontal input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, idx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idy", 115, _( "Input offset" ), _( "Vertical input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsAffine, idy ), -10000000, 10000000, 0 ); } static void vips_affine_init( VipsAffine *affine ) { } /** * vips_affine: * @in: input image * @out: output image * @a: transformation matrix coefficient * @b: transformation matrix coefficient * @c: transformation matrix coefficient * @d: transformation matrix coefficient * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @interpolate: interpolate pixels with this * @oarea: output rectangle * @idx: input horizontal offset * @idy: input vertical offset * @odx: output horizontal offset * @ody: output vertical offset * * This operator performs an affine transform on an image using @interpolate. * * The transform is: * * X = @a * (x + @idx) + @b * (y + @idy) + @odx * Y = @c * (x + @idx) + @d * (y + @idy) + @doy * * x and y are the coordinates in input image. * X and Y are the coordinates in output image. * (0,0) is the upper left corner. * * The section of the output space defined by @oarea is written to * @out. @oarea is a four-element int array of left, top, width, height. * By default @oarea is just large enough to cover the whole of the * transformed input image. * * @interpolate defaults to bilinear. * * @idx, @idy, @odx, @ody default to zero. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrink(), vips_resize(), #VipsInterpolate. * * Returns: 0 on success, -1 on error */ int vips_affine( VipsImage *in, VipsImage **out, double a, double b, double c, double d, ... ) { va_list ap; VipsArea *matrix; int result; matrix = (VipsArea *) vips_array_double_newv( 4, a, b, c, d ); va_start( ap, d ); result = vips_call_split( "affine", ap, in, out, matrix ); va_end( ap ); vips_area_unref( matrix ); return( result ); } vips-8.2.2/libvips/resample/shrinkv.c0000664000175000017500000002724512651124144014551 00000000000000/* shrink with a box filter * * Copyright: 1990, N. Dessipris. * * Authors: Nicos Dessipris and Kirk Martinez * Written on: 29/04/1991 * Modified on: 2/11/92, 22/2/93 Kirk Martinez - Xres Yres & cleanup incredibly inefficient for box filters as LUTs are used instead of + Needs converting to a smoother filter: eg Gaussian! KM * 15/7/93 JC * - rewritten for partial v2 * - ANSIfied * - now shrinks any non-complex type * - no longer cloned from im_convsub() * - could be much better! see km comments above * 3/8/93 JC * - rounding bug fixed * 11/1/94 JC * - problems with .000001 and round up/down ignored! Try shrink 3738 * pixel image by 9.345000000001 * 7/10/94 JC * - IM_NEW and IM_ARRAY added * - more typedef * 3/7/95 JC * - IM_CODING_LABQ handling added here * 20/12/08 * - fall back to im_copy() for 1/1 shrink * 2/2/11 * - gtk-doc * 10/2/12 * - shrink in chunks to reduce peak memuse for large shrinks * - simpler * 12/6/12 * - redone as a class * - warn about non-int shrinks * - some tuning .. tried an int coordinate path, not worthwhile * 16/11/12 * - don't change xres/yres, see comment below * 8/4/13 * - oops demand_hint was incorrect, thanks Jan * 6/6/13 * - don't chunk horizontally, fixes seq problems with large shrink * factors */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsShrinkv { VipsResample parent_instance; int yshrink; size_t sizeof_line_buffer; } VipsShrinkv; typedef VipsResampleClass VipsShrinkvClass; G_DEFINE_TYPE( VipsShrinkv, vips_shrinkv, VIPS_TYPE_RESAMPLE ); /* Our per-sequence parameter struct. Somewhere to sum band elements. */ typedef struct { VipsRegion *ir; VipsPel *sum; } VipsShrinkvSequence; /* Free a sequence value. */ static int vips_shrinkv_stop( void *vseq, void *a, void *b ) { VipsShrinkvSequence *seq = (VipsShrinkvSequence *) vseq; VIPS_FREEF( g_object_unref, seq->ir ); return( 0 ); } /* Make a sequence value. */ static void * vips_shrinkv_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsShrinkv *shrink = (VipsShrinkv *) b; VipsShrinkvSequence *seq; if( !(seq = VIPS_NEW( out, VipsShrinkvSequence )) ) return( NULL ); seq->ir = vips_region_new( in ); /* Big enough for the largest intermediate .. a whole scanline. */ seq->sum = VIPS_ARRAY( out, shrink->sizeof_line_buffer, VipsPel ); return( (void *) seq ); } #define ADD( ACC_TYPE, TYPE ) { \ ACC_TYPE * restrict sum = (ACC_TYPE *) seq->sum; \ TYPE * restrict p = (TYPE *) in; \ \ for( x = 0; x < sz; x++ ) \ sum[x] += p[x]; \ } /* Add a line of pixels to sum. */ static void vips_shrinkv_add_line( VipsShrinkv *shrink, VipsShrinkvSequence *seq, VipsRegion *ir, int left, int top, int width ) { VipsResample *resample = VIPS_RESAMPLE( shrink ); const int bands = resample->in->Bands * (vips_band_format_iscomplex( resample->in->BandFmt ) ? 2 : 1); const int sz = bands * width; int x; VipsPel *in = VIPS_REGION_ADDR( ir, left, top ); switch( resample->in->BandFmt ) { case VIPS_FORMAT_UCHAR: ADD( int, unsigned char ); break; case VIPS_FORMAT_CHAR: ADD( int, char ); break; case VIPS_FORMAT_USHORT: ADD( int, unsigned short ); break; case VIPS_FORMAT_SHORT: ADD( int, short ); break; case VIPS_FORMAT_UINT: ADD( int, unsigned int ); break; case VIPS_FORMAT_INT: ADD( int, int ); break; case VIPS_FORMAT_FLOAT: ADD( double, float ); break; case VIPS_FORMAT_DOUBLE: ADD( double, double ); break; case VIPS_FORMAT_COMPLEX: ADD( double, float ); break; case VIPS_FORMAT_DPCOMPLEX: ADD( double, double ); break; default: g_assert_not_reached(); } } /* Integer average. */ #define IAVG( TYPE ) { \ int * restrict sum = (int *) seq->sum; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = (sum[x] + shrink->yshrink / 2) / shrink->yshrink; \ } /* Float average. */ #define FAVG( TYPE ) { \ double * restrict sum = (double *) seq->sum; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = sum[x] / shrink->yshrink; \ } /* Average the line of sums to out. */ static void vips_shrinkv_write_line( VipsShrinkv *shrink, VipsShrinkvSequence *seq, VipsRegion *or, int left, int top, int width ) { VipsResample *resample = VIPS_RESAMPLE( shrink ); const int bands = resample->in->Bands * (vips_band_format_iscomplex( resample->in->BandFmt ) ? 2 : 1); const int sz = bands * width; int x; VipsPel *out = VIPS_REGION_ADDR( or, left, top ); switch( resample->in->BandFmt ) { case VIPS_FORMAT_UCHAR: IAVG( unsigned char ); break; case VIPS_FORMAT_CHAR: IAVG( char ); break; case VIPS_FORMAT_USHORT: IAVG( unsigned short ); break; case VIPS_FORMAT_SHORT: IAVG( short ); break; case VIPS_FORMAT_UINT: IAVG( unsigned int ); break; case VIPS_FORMAT_INT: IAVG( int ); break; case VIPS_FORMAT_FLOAT: FAVG( float ); break; case VIPS_FORMAT_DOUBLE: FAVG( double ); break; case VIPS_FORMAT_COMPLEX: FAVG( float ); break; case VIPS_FORMAT_DPCOMPLEX: FAVG( double ); break; default: g_assert_not_reached(); } } static int vips_shrinkv_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsShrinkvSequence *seq = (VipsShrinkvSequence *) vseq; VipsShrinkv *shrink = (VipsShrinkv *) b; VipsRegion *ir = seq->ir; VipsRect *r = &or->valid; int y, y1; /* How do we chunk up the image? We don't want to prepare the whole of * the input region corresponding to *r since it could be huge. * * Request input a line at a time, average to a line buffer. * * We don't chunk horizontally. We want "vips shrink x.jpg b.jpg 100 * 100" to run sequentially. If we chunk horizontally, we will fetch * 100x100 lines from the top of the image, then 100x100 100 lines * down, etc. for each thread, then when they've finished, fetch * 100x100, 100 pixels across from the top of the image. This will * break sequentiality. */ #ifdef DEBUG printf( "vips_shrinkv_gen: generating %d x %d at %d x %d\n", r->width, r->height, r->left, r->top ); #endif /*DEBUG*/ for( y = 0; y < r->height; y++ ) { memset( seq->sum, 0, shrink->sizeof_line_buffer ); for( y1 = 0; y1 < shrink->yshrink; y1++ ) { VipsRect s; s.left = r->left; s.top = y1 + (y + r->top) * shrink->yshrink; s.width = r->width; s.height = 1; #ifdef DEBUG printf( "shrink_gen: requesting line %d\n", s.top ); #endif /*DEBUG*/ if( vips_region_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "vips_shrinkv_gen: work" ); vips_shrinkv_add_line( shrink, seq, ir, s.left, s.top, s.width ); VIPS_GATE_STOP( "vips_shrinkv_gen: work" ); } VIPS_GATE_START( "vips_shrinkv_gen: work" ); vips_shrinkv_write_line( shrink, seq, or, r->left, r->top + y, r->width ); VIPS_GATE_STOP( "vips_shrinkv_gen: work" ); } return( 0 ); } static int vips_shrinkv_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsShrinkv *shrink = (VipsShrinkv *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_shrinkv_parent_class )->build( object ) ) return( -1 ); in = resample->in; if( shrink->yshrink < 1 ) { vips_error( class->nickname, "%s", _( "shrink factors should be >= 1" ) ); return( -1 ); } if( shrink->yshrink == 1 ) return( vips_image_write( in, resample->out ) ); /* Unpack for processing. */ if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* We have to keep a line buffer as we sum columns. */ shrink->sizeof_line_buffer = in->Xsize * in->Bands * vips_format_sizeof( VIPS_FORMAT_DPCOMPLEX ); /* THINSTRIP will work, anything else will break seq mode. If you * combine shrink with conv you'll need to use a line cache to maintain * sequentiality. */ if( vips_image_pipelinev( resample->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); /* Size output. Note: we round the output width down! * * Don't change xres/yres, leave that to the application layer. For * example, vipsthumbnail knows the true shrink factor (including the * fractional part), we just see the integer part here. */ resample->out->Ysize = in->Ysize / shrink->yshrink; if( resample->out->Ysize <= 0 ) { vips_error( class->nickname, "%s", _( "image has shrunk to nothing" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_shrinkv_build: shrinking %d x %d image to %d x %d\n", in->Xsize, in->Ysize, resample->out->Xsize, resample->out->Ysize ); #endif /*DEBUG*/ if( vips_image_generate( resample->out, vips_shrinkv_start, vips_shrinkv_gen, vips_shrinkv_stop, in, shrink ) ) return( -1 ); return( 0 ); } static void vips_shrinkv_class_init( VipsShrinkvClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_shrinkv_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "shrinkv"; vobject_class->description = _( "shrink an image vertically" ); vobject_class->build = vips_shrinkv_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_INT( class, "yshrink", 9, _( "Yshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrinkv, yshrink ), 1, 1000000, 1 ); } static void vips_shrinkv_init( VipsShrinkv *shrink ) { } /** * vips_shrinkv: * @in: input image * @out: output image * @yshrink: vertical shrink * @...: %NULL-terminated list of optional named arguments * * Shrink @in vertically by an integer factor. Each pixel in the output is * the average of the corresponding column of @yshrink pixels in the input. * * You will get aliasing for non-integer shrinks. In this case, shrink with * this function to the nearest integer size above the target shrink, then * downsample to the exact size with vips_affine() and your choice of * interpolator. See vips_resize() for a convenient way to do this. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrinkh(), vips_shrink(), vips_resize(), vips_affine(). * * Returns: 0 on success, -1 on error */ int vips_shrinkv( VipsImage *in, VipsImage **out, int yshrink, ... ) { va_list ap; int result; va_start( ap, yshrink ); result = vips_call_split( "shrinkv", ap, in, out, yshrink ); va_end( ap ); return( result ); } vips-8.2.2/libvips/resample/mapim.c0000664000175000017500000002524212651705151014166 00000000000000/* resample with an index image * * 15/11/15 * - from affine.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsMapim { VipsResample parent_instance; VipsImage *index; VipsInterpolate *interpolate; /* Need an image vector for start_many / stop_many */ VipsImage *in_array[3]; } VipsMapim; typedef VipsResampleClass VipsMapimClass; G_DEFINE_TYPE( VipsMapim, vips_mapim, VIPS_TYPE_RESAMPLE ); #define MINMAX( TYPE ) { \ TYPE * restrict p1 = (TYPE *) p; \ \ for( x = 0; x < r->width; x++ ) { \ TYPE px = p1[0]; \ TYPE py = p1[1]; \ \ if( first ) { \ min_x = px; \ max_x = px; \ min_y = py; \ max_y = py; \ \ first = FALSE; \ } \ else { \ if( px > max_x ) \ max_x = px; \ if( px < min_x ) \ min_x = px; \ if( py > max_y ) \ max_y = py; \ if( py < min_y ) \ min_y = py; \ } \ \ p1 += 2; \ } \ } /* Scan a region and find min/max in the two axes. */ static void vips_mapim_region_minmax( VipsRegion *region, VipsRect *r, VipsRect *bounds ) { int min_x; int max_x; int min_y; int max_y; gboolean first; int x, y; /* Stop compiler warnings. */ min_x = 0; max_x = 0; min_y = 0; max_y = 0; first = TRUE; for( y = 0; y < r->height; y++ ) { VipsPel * restrict p = VIPS_REGION_ADDR( region, r->left, y + r->top ); switch( region->im->BandFmt ) { case VIPS_FORMAT_UCHAR: MINMAX( unsigned char ); break; case VIPS_FORMAT_CHAR: MINMAX( signed char ); break; case VIPS_FORMAT_USHORT: MINMAX( unsigned short ); break; case VIPS_FORMAT_SHORT: MINMAX( signed short ); break; case VIPS_FORMAT_UINT: MINMAX( unsigned int ); break; case VIPS_FORMAT_INT: MINMAX( signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: MINMAX( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: MINMAX( double ); break; default: g_assert_not_reached(); } } /* Add 1 to width/height, since we are rounding float down. */ bounds->left = min_x; bounds->top = min_y; bounds->width = 1 + max_x - min_x; bounds->height = 1 + max_y - min_y; } #define LOOKUP( TYPE ) { \ TYPE * restrict p1 = (TYPE *) p; \ \ for( x = 0; x < r->width; x++ ) { \ TYPE px = p1[0]; \ TYPE py = p1[1]; \ \ if( px < 0 || \ px >= resample->in->Xsize || \ py < 0 || \ py >= resample->in->Ysize ) { \ for( z = 0; z < ps; z++ ) \ q[z] = 0; \ } \ else \ interpolate( mapim->interpolate, q, ir[0], \ px + window_offset, py + window_offset ); \ \ p1 += 2; \ q += ps; \ } \ } static int vips_mapim_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsRegion **ir = (VipsRegion **) seq; const VipsImage **in_array = (const VipsImage **) a; const VipsMapim *mapim = (VipsMapim *) b; const VipsResample *resample = VIPS_RESAMPLE( mapim ); const VipsImage *in = in_array[0]; const int window_size = vips_interpolate_get_window_size( mapim->interpolate ); const int window_offset = vips_interpolate_get_window_offset( mapim->interpolate ); const VipsInterpolateMethod interpolate = vips_interpolate_get_method( mapim->interpolate ); const int ps = VIPS_IMAGE_SIZEOF_PEL( in ); VipsRect bounds, image, clipped; int x, y, z; #ifdef DEBUG_VERBOSE printf( "vips_mapim_gen: " "generating left=%d, top=%d, width=%d, height=%d\n", r->left, r->top, r->width, r->height ); #endif /*DEBUG_VERBOSE*/ /* Fetch the chunk of the mapim image we need, and find the max/min in * x and y. */ if( vips_region_prepare( ir[1], r ) ) return( -1 ); VIPS_GATE_START( "vips_mapim_gen: work" ); vips_mapim_region_minmax( ir[1], r, &bounds ); VIPS_GATE_STOP( "vips_mapim_gen: work" ); /* The bounding box of that area is what we will need from @in. Add * enough for the interpolation stencil as well. */ bounds.width += window_size - 1; bounds.height += window_size - 1; /* Clip against the source image. */ image.left = 0; image.top = 0; image.width = in->Xsize; image.height = in->Ysize; vips_rect_intersectrect( &bounds, &image, &clipped ); #ifdef DEBUG_VERBOSE printf( "vips_mapim_gen: " "preparing left=%d, top=%d, width=%d, height=%d\n", clipped.left, clipped.top, clipped.width, clipped.height ); #endif /*DEBUG_VERBOSE*/ if( vips_rect_isempty( &clipped ) ) { vips_region_black( or ); return( 0 ); } if( vips_region_prepare( ir[0], &clipped ) ) return( -1 ); VIPS_GATE_START( "vips_mapim_gen: work" ); /* Resample! x/y loop over pixels in the output image (5). */ for( y = 0; y < r->height; y++ ) { VipsPel * restrict p = VIPS_REGION_ADDR( ir[1], r->left, y + r->top ); VipsPel * restrict q = VIPS_REGION_ADDR( or, r->left, y + r->top ); switch( ir[1]->im->BandFmt ) { case VIPS_FORMAT_UCHAR: LOOKUP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOKUP( signed char ); break; case VIPS_FORMAT_USHORT: LOOKUP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOKUP( signed short ); break; case VIPS_FORMAT_UINT: LOOKUP( unsigned int ); break; case VIPS_FORMAT_INT: LOOKUP( signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOKUP( float ); break; break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOKUP( double ); break; default: g_assert_not_reached(); } } VIPS_GATE_STOP( "vips_mapim_gen: work" ); return( 0 ); } static int vips_mapim_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsMapim *mapim = (VipsMapim *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; int window_size; int window_offset; if( VIPS_OBJECT_CLASS( vips_mapim_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, resample->in ) || vips_check_twocomponents( class->nickname, mapim->index ) ) return( -1 ); in = resample->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* We can't use vips_object_argument_isset(), since it may have been * set to NULL, see vips_similarity(). */ if( !mapim->interpolate ) { VipsInterpolate *interpolate; interpolate = vips_interpolate_new( "bilinear" ); g_object_set( object, "interpolate", interpolate, NULL ); g_object_unref( interpolate ); /* coverity gets confused by this, it thinks * mapim->interpolate may still be null. Assign ourselves, * even though we don't need to. */ mapim->interpolate = interpolate; } window_size = vips_interpolate_get_window_size( mapim->interpolate ); window_offset = vips_interpolate_get_window_offset( mapim->interpolate ); /* Add new pixels around the input so we can interpolate at the edges. */ if( vips_embed( in, &t[1], window_offset, window_offset, in->Xsize + window_size - 1, in->Ysize + window_size - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[1]; if( vips_image_pipelinev( resample->out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); resample->out->Xsize = mapim->index->Xsize; resample->out->Ysize = mapim->index->Ysize; mapim->in_array[0] = in; mapim->in_array[1] = mapim->index; mapim->in_array[2] = NULL; if( vips_image_generate( resample->out, vips_start_many, vips_mapim_gen, vips_stop_many, mapim->in_array, mapim ) ) return( -1 ); return( 0 ); } static void vips_mapim_class_init( VipsMapimClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_mapim_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "mapim"; vobject_class->description = _( "resample with an mapim image" ); vobject_class->build = vips_mapim_build; VIPS_ARG_IMAGE( class, "index", 3, _( "Index" ), _( "Index pixels with this" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMapim, index ) ); VIPS_ARG_INTERPOLATE( class, "interpolate", 4, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMapim, interpolate ) ); } static void vips_mapim_init( VipsMapim *mapim ) { } /** * vips_mapim: * @in: input image * @out: output image * @index: index image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @interpolate: interpolate pixels with this * * This operator resamples @in using @index to look up pixels. @out is * the same size as @index, with each pixel being fetched from that position in * @in. That is: * * |[ * out[x, y] = in[index[x, y]] * ]| * * If @index has one band, that band must be complex. Otherwise, @index must * have two bands of any format. * Coordinates in @index are in pixels, with (0, 0) being the top-left corner * of @in, and with y increasing down the image. Use vips_xyz() to build index * images. * * @interpolate defaults to bilinear. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See vips_maplut() for a 1D equivalent of this operation. * * See also: vips_xyz(), vips_affine(), vips_resize(), * vips_maplut(), #VipsInterpolate. * * Returns: 0 on success, -1 on error */ int vips_mapim( VipsImage *in, VipsImage **out, VipsImage *index, ... ) { va_list ap; int result; va_start( ap, index ); result = vips_call_split( "mapim", ap, in, out, index ); va_end( ap ); return( result ); } vips-8.2.2/libvips/resample/resize.c0000664000175000017500000002423112651710616014363 00000000000000/* resize an image ... up and down resampling. * * 13/8/14 * - from affine.c * 18/11/14 * - add the fancier algorithm from vipsthumbnail * 11/11/15 * - smarter cache sizing */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsResize { VipsResample parent_instance; double scale; double vscale; VipsInterpolate *interpolate; double idx; double idy; } VipsResize; typedef VipsResampleClass VipsResizeClass; G_DEFINE_TYPE( VipsResize, vips_resize, VIPS_TYPE_RESAMPLE ); static int vips_resize_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsResize *resize = (VipsResize *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); VipsImage *in; int window_size; int int_hshrink; int int_vshrink; int int_shrink_width; int int_shrink_height; double hresidual; double vresidual; double sigma; gboolean anti_alias; if( VIPS_OBJECT_CLASS( vips_resize_parent_class )->build( object ) ) return( -1 ); if( !vips_object_argument_isset( object, "interpolate" ) ) { VipsInterpolate *interpolate; char *nick; if( vips_type_find( "VipsInterpolate", "bicubic" ) ) nick = "bicubic"; else nick = "bilinear"; interpolate = vips_interpolate_new( nick ); g_object_set( object, "interpolate", interpolate, NULL ); VIPS_UNREF( interpolate ); } /* Unset vscale means it's equal to hscale. */ if( !vips_object_argument_isset( object, "vscale" ) ) resize->vscale = resize->scale; in = resample->in; window_size = resize->interpolate ? vips_interpolate_get_window_size( resize->interpolate ) : 2; /* If the factor is > 1.0, we need to zoom rather than shrink. * Just set the int part to 1 in this case. */ int_hshrink = resize->scale > 1.0 ? 1 : VIPS_FLOOR( 1.0 / resize->scale ); int_vshrink = resize->vscale > 1.0 ? 1 : VIPS_FLOOR( 1.0 / resize->vscale ); /* We want to shrink by less for interpolators with larger windows. */ int_hshrink = VIPS_MAX( 1, int_hshrink / VIPS_MAX( 1, window_size / 2 ) ); int_vshrink = VIPS_MAX( 1, int_vshrink / VIPS_MAX( 1, window_size / 2 ) ); /* Size after int shrink. */ int_shrink_width = in->Xsize / int_hshrink; int_shrink_height = in->Ysize / int_vshrink; /* Therefore residual scale factor is. */ hresidual = (in->Xsize * resize->scale) / int_shrink_width; vresidual = (in->Ysize * resize->vscale) / int_shrink_height; /* A copy for enlarge resize. */ vips_info( class->nickname, "box shrink by %d x %d", int_hshrink, int_vshrink ); if( vips_shrink( in, &t[0], int_hshrink, int_vshrink, NULL ) ) return( -1 ); in = t[0]; /* We want to make sure we read the image sequentially. * However, the convolution we may be doing later will force us * into SMALLTILE or maybe FATSTRIP mode and that will break * sequentiality. * * So ... read into a cache where tiles are scanlines, and make sure * we keep enough scanlines. * * We use a threaded tilecache to avoid a deadlock: suppose thread1, * evaluating the top block of the output, is delayed, and thread2, * evaluating the second block, gets here first (this can happen on * a heavily-loaded system). * * With an unthreaded tilecache, thread2 will get * the cache lock and start evaling the second block of the shrink. * When it reaches the png reader it will stall until the first block * has been used ... but it never will, since thread1 will block on * this cache lock. * * Cache sizing: we double-buffer writes, so threads can be up to one * line of tiles behind. For example, one thread could be allocated * tile (0,0) and then stall, the whole write system won't stall until * it tries to allocate tile (0, 2). * * We affine down after this, which can be a scale of up to @residual, * perhaps 0.5 or down as low as 0.3 depending on the interpolator. So * the number of scanlines we need to keep for the worst case is * 2 * @tile_height / @residual, plus a little extra. */ if( int_vshrink > 1 ) { int tile_width; int tile_height; int n_lines; int need_lines; vips_get_tile_size( in, &tile_width, &tile_height, &n_lines ); need_lines = 1.2 * n_lines / vresidual; if( vips_tilecache( in, &t[6], "tile_width", in->Xsize, "tile_height", 10, "max_tiles", 1 + need_lines / 10, "access", VIPS_ACCESS_SEQUENTIAL, "threaded", TRUE, NULL ) ) return( -1 ); in = t[6]; } /* If the final affine will be doing a large downsample, we can get * nasty aliasing on hard edges. Blur before affine to smooth this out. * * Don't blur for very small shrinks, blur with radius 1 for x1.5 * shrinks, blur radius 2 for x2.5 shrinks and above, etc. * * Don't try to be clever for non-rectangular shrinks. We just * consider the horizontal factor. */ sigma = ((1.0 / hresidual) - 0.5) / 2.0; anti_alias = hresidual < 1.0 && sigma > 0.1; if( anti_alias ) { vips_info( class->nickname, "anti-alias sigma %g", sigma ); if( vips_gaussblur( in, &t[2], sigma, NULL ) ) return( -1 ); in = t[2]; } vips_info( class->nickname, "residual affine %g x %g", hresidual, vresidual ); if( resize->interpolate ) { const char *nickname = VIPS_OBJECT_GET_CLASS( resize->interpolate )->nickname; vips_info( class->nickname, "%s interpolation", nickname ); } if( vips_affine( in, &t[3], hresidual, 0, 0, vresidual, "interpolate", resize->interpolate, "idx", resize->idx, "idy", resize->idy, NULL ) ) return( -1 ); in = t[3]; /* If we are upsampling, don't sharpen. Also don't sharpen if we * skipped the anti-alias filter. */ if( int_hshrink >= 1 && anti_alias ) { vips_info( class->nickname, "final sharpen" ); t[5] = vips_image_new_matrixv( 3, 3, -1.0, -1.0, -1.0, -1.0, 32.0, -1.0, -1.0, -1.0, -1.0 ); vips_image_set_double( t[5], "scale", 24 ); if( vips_conv( in, &t[4], t[5], NULL ) ) return( -1 ); in = t[4]; } if( vips_image_write( in, resample->out ) ) return( -1 ); return( 0 ); } static void vips_resize_class_init( VipsResizeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_resize_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "resize"; vobject_class->description = _( "resize an image" ); vobject_class->build = vips_resize_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_DOUBLE( class, "scale", 113, _( "Scale factor" ), _( "Scale image by this factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsResize, scale ), 0, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "vscale", 113, _( "Vertical scale factor" ), _( "Vertical scale image by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsResize, vscale ), 0, 10000000, 0 ); VIPS_ARG_INTERPOLATE( class, "interpolate", 2, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsResize, interpolate ) ); VIPS_ARG_DOUBLE( class, "idx", 115, _( "Input offset" ), _( "Horizontal input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsResize, idx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idy", 116, _( "Input offset" ), _( "Vertical input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsResize, idy ), -10000000, 10000000, 0 ); } static void vips_resize_init( VipsResize *resize ) { } /** * vips_resize: * @in: input image * @out: output image * @scale: scale factor * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @vscale: vertical scale factor * @interpolate: interpolate pixels with this * @idx: input horizontal offset * @idy: input vertical offset * * Resize an image. When upsizing (@scale > 1), the image is simply resized * with vips_affine() and the supplied @interpolate. When downsizing, the * image is block-shrunk with vips_shrink() to roughly half the interpolator * window size above the target size, then blurred with an anti-alias filter, * then resampled with vips_affine() and the supplied interpolator, then * sharpened. * * vips_resize() normally maintains the image apect ratio. If you set * @vscale, that factor is used for the vertical scale and @scale for the * horizontal. * * @interpolate defaults to bicubic. * * @idx, @idy default to zero. Set them to 0.5 to get pixel-centre sampling. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrink(), vips_affine(), #VipsInterpolate. * * Returns: 0 on success, -1 on error */ int vips_resize( VipsImage *in, VipsImage **out, double scale, ... ) { va_list ap; int result; va_start( ap, scale ); result = vips_call_split( "resize", ap, in, out, scale ); va_end( ap ); return( result ); } vips-8.2.2/libvips/resample/bicubic.cpp0000664000175000017500000003303712650650363015027 00000000000000/* bicubic (catmull-rom) interpolator * * 12/8/10 * - revise window_size / window_offset stuff again */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Bicubic (Catmull-Rom) interpolator derived from Nicolas Robidoux's * original YAFR resampler with permission and thanks. */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "templates.h" #ifdef WITH_DMALLOC #include #endif /*WITH_DMALLOC*/ #define VIPS_TYPE_INTERPOLATE_BICUBIC \ (vips_interpolate_bicubic_get_type()) #define VIPS_INTERPOLATE_BICUBIC( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_BICUBIC, VipsInterpolateBicubic )) #define VIPS_INTERPOLATE_BICUBIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_BICUBIC, VipsInterpolateBicubicClass)) #define VIPS_IS_INTERPOLATE_BICUBIC( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_BICUBIC )) #define VIPS_IS_INTERPOLATE_BICUBIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_BICUBIC )) #define VIPS_INTERPOLATE_BICUBIC_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_BICUBIC, VipsInterpolateBicubicClass )) typedef VipsInterpolate VipsInterpolateBicubic; typedef VipsInterpolateClass VipsInterpolateBicubicClass; /* Precalculated interpolation matrices. int (used for pel * sizes up to short), and double (for all others). We go to * scale + 1 so we can round-to-nearest safely. */ /* We could keep a large set of 2d 4x4 matricies, but this actually * works out slower since for many resizes the thing will no longer * fit in L1. */ static int vips_bicubic_matrixi[VIPS_TRANSFORM_SCALE + 1][4]; static double vips_bicubic_matrixf[VIPS_TRANSFORM_SCALE + 1][4]; /* We need C linkage for this. */ extern "C" { G_DEFINE_TYPE( VipsInterpolateBicubic, vips_interpolate_bicubic, VIPS_TYPE_INTERPOLATE ); } /* Pointers to write to / read from, number of bands, * how many bytes to add to move down a line. */ /* T is the type of pixels we are reading and writing. */ /* Fixed-point version, for 8 and 16-bit types. */ template static void inline bicubic_unsigned_int_tab( void *pout, const VipsPel *pin, const int bands, const int lskip, const int *cx, const int *cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; int bicubic = bicubic_unsigned_int( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); bicubic = VIPS_CLIP( 0, bicubic, max_value ); out[z] = bicubic; in += 1; } } template static void inline bicubic_signed_int_tab( void *pout, const VipsPel *pin, const int bands, const int lskip, const int *cx, const int *cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; int bicubic = bicubic_signed_int( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); bicubic = VIPS_CLIP( min_value, bicubic, max_value ); out[z] = bicubic; in += 1; } } /* Floating-point version, for int/float types. */ template static void inline bicubic_float_tab( void *pout, const VipsPel *pin, const int bands, const int lskip, const double *cx, const double *cy ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; const T bicubic = bicubic_float( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); out[z] = bicubic; in += 1; } } /* Ultra-high-quality version for double images. */ template static void inline bicubic_notab( void *pout, const VipsPel *pin, const int bands, const int lskip, double x, double y ) { T* restrict out = (T *) pout; const T* restrict in = (T *) pin; const int b1 = bands; const int b2 = b1 + b1; const int b3 = b1 + b2; const int l1 = lskip / sizeof( T ); const int l2 = l1 + l1; const int l3 = l1 + l2; const int l1_plus_b1 = l1 + b1; const int l1_plus_b2 = l1 + b2; const int l1_plus_b3 = l1 + b3; const int l2_plus_b1 = l2 + b1; const int l2_plus_b2 = l2 + b2; const int l2_plus_b3 = l2 + b3; const int l3_plus_b1 = l3 + b1; const int l3_plus_b2 = l3 + b2; const int l3_plus_b3 = l3 + b3; double cx[4]; double cy[4]; calculate_coefficients_catmull( x, cx ); calculate_coefficients_catmull( y, cy ); for( int z = 0; z < bands; z++ ) { const T uno_one = in[0]; const T uno_two = in[b1]; const T uno_thr = in[b2]; const T uno_fou = in[b3]; const T dos_one = in[l1]; const T dos_two = in[l1_plus_b1]; const T dos_thr = in[l1_plus_b2]; const T dos_fou = in[l1_plus_b3]; const T tre_one = in[l2]; const T tre_two = in[l2_plus_b1]; const T tre_thr = in[l2_plus_b2]; const T tre_fou = in[l2_plus_b3]; const T qua_one = in[l3]; const T qua_two = in[l3_plus_b1]; const T qua_thr = in[l3_plus_b2]; const T qua_fou = in[l3_plus_b3]; const T bicubic = bicubic_float( uno_one, uno_two, uno_thr, uno_fou, dos_one, dos_two, dos_thr, dos_fou, tre_one, tre_two, tre_thr, tre_fou, qua_one, qua_two, qua_thr, qua_fou, cx, cy ); out[z] = bicubic; in += 1; } } static void vips_interpolate_bicubic_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ) { /* Find the mask index. We round-to-nearest, so we need to generate * indexes in 0 to VIPS_TRANSFORM_SCALE, 2^n + 1 values. We multiply * by 2 more than we need to, add one, mask, then shift down again to * get the extra range. */ const int sx = x * VIPS_TRANSFORM_SCALE * 2; const int sy = y * VIPS_TRANSFORM_SCALE * 2; const int six = sx & (VIPS_TRANSFORM_SCALE * 2 - 1); const int siy = sy & (VIPS_TRANSFORM_SCALE * 2 - 1); const int tx = (six + 1) >> 1; const int ty = (siy + 1) >> 1; /* We know x/y are always positive, so we can just (int) them. */ const int ix = (int) x; const int iy = (int) y; /* Back and up one to get the top-left of the 4x4. */ const VipsPel *p = VIPS_REGION_ADDR( in, ix - 1, iy - 1 ); /* Look up the tables we need. */ const int *cxi = vips_bicubic_matrixi[tx]; const int *cyi = vips_bicubic_matrixi[ty]; const double *cxf = vips_bicubic_matrixf[tx]; const double *cyf = vips_bicubic_matrixf[ty]; /* Pel size and line size. */ const int bands = in->im->Bands; const int lskip = VIPS_REGION_LSKIP( in ); g_assert( ix - 1 >= in->valid.left ); g_assert( iy - 1 >= in->valid.top ); g_assert( ix + 2 < VIPS_RECT_RIGHT( &in->valid ) ); g_assert( iy + 2 < VIPS_RECT_BOTTOM( &in->valid ) ); /* Confirm that absolute_x and absolute_y are >= 1, because of * window_offset. */ g_assert( x >= 1.0 ); g_assert( y >= 1.0 ); #ifdef DEBUG printf( "vips_interpolate_bicubic_interpolate: %g %g\n", x, y ); printf( "\tleft=%d, top=%d, width=%d, height=%d\n", ix - 1, iy - 1, 4, 4 ); printf( "\tmaskx=%d, masky=%d\n", tx, ty ); #endif /*DEBUG*/ switch( in->im->BandFmt ) { case VIPS_FORMAT_UCHAR: bicubic_unsigned_int_tab( out, p, bands, lskip, cxi, cyi ); /* Handy for benchmarking bicubic_float_tab( out, p, bands, lskip, cxf, cyf ); bicubic_notab( out, p, bands, lskip, x - ix, y - iy ); */ break; case VIPS_FORMAT_CHAR: bicubic_signed_int_tab( out, p, bands, lskip, cxi, cyi ); break; case VIPS_FORMAT_USHORT: bicubic_unsigned_int_tab( out, p, bands, lskip, cxi, cyi ); break; case VIPS_FORMAT_SHORT: bicubic_signed_int_tab( out, p, bands, lskip, cxi, cyi ); break; case VIPS_FORMAT_UINT: bicubic_float_tab( out, p, bands, lskip, cxf, cyf ); break; case VIPS_FORMAT_INT: bicubic_float_tab( out, p, bands, lskip, cxf, cyf ); break; case VIPS_FORMAT_FLOAT: bicubic_float_tab( out, p, bands, lskip, cxf, cyf ); break; case VIPS_FORMAT_DOUBLE: bicubic_notab( out, p, bands, lskip, x - ix, y - iy ); break; case VIPS_FORMAT_COMPLEX: bicubic_float_tab( out, p, bands * 2, lskip, cxf, cyf ); break; case VIPS_FORMAT_DPCOMPLEX: bicubic_notab( out, p, bands * 2, lskip, x - ix, y - iy ); break; default: break; } } static void vips_interpolate_bicubic_class_init( VipsInterpolateBicubicClass *iclass ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( iclass ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( iclass ); object_class->nickname = "bicubic"; object_class->description = _( "bicubic interpolation (Catmull-Rom)" ); interpolate_class->interpolate = vips_interpolate_bicubic_interpolate; interpolate_class->window_size = 4; /* Build the tables of pre-computed coefficients. */ for( int x = 0; x < VIPS_TRANSFORM_SCALE + 1; x++ ) { calculate_coefficients_catmull( (float) x / VIPS_TRANSFORM_SCALE, vips_bicubic_matrixf[x] ); for( int i = 0; i < 4; i++ ) vips_bicubic_matrixi[x][i] = vips_bicubic_matrixf[x][i] * VIPS_INTERPOLATE_SCALE; } } static void vips_interpolate_bicubic_init( VipsInterpolateBicubic *bicubic ) { #ifdef DEBUG printf( "vips_interpolate_bicubic_init: " ); vips_object_print( VIPS_OBJECT( bicubic ) ); #endif /*DEBUG*/ } vips-8.2.2/libvips/resample/transform.c0000664000175000017500000001443212530402247015071 00000000000000/* affine transforms */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* */ #define DEBUG #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include /* Calculate the inverse transformation. */ int vips__transform_calc_inverse( VipsTransformation *trn ) { DOUBLEMASK *msk, *msk2; if( !(msk = im_create_dmaskv( "boink", 2, 2, trn->a, trn->b, trn->c, trn->d )) ) return( -1 ); if( !(msk2 = im_matinv( msk, "boink2" )) ) { (void) im_free_dmask( msk ); return( -1 ); } trn->ia = msk2->coeff[0]; trn->ib = msk2->coeff[1]; trn->ic = msk2->coeff[2]; trn->id = msk2->coeff[3]; (void) im_free_dmask( msk ); (void) im_free_dmask( msk2 ); return( 0 ); } /* Init a VipsTransform. */ void vips__transform_init( VipsTransformation *trn ) { trn->oarea.left = 0; trn->oarea.top = 0; trn->oarea.width = -1; trn->oarea.height = -1; trn->iarea.left = 0; trn->iarea.top = 0; trn->iarea.width = -1; trn->iarea.height = -1; trn->a = 1.0; /* Identity transform */ trn->b = 0.0; trn->c = 0.0; trn->d = 1.0; trn->idx = 0.0; trn->idy = 0.0; trn->odx = 0.0; trn->ody = 0.0; (void) vips__transform_calc_inverse( trn ); } /* Test for transform is identity function. */ int vips__transform_isidentity( const VipsTransformation *trn ) { if( trn->a == 1.0 && trn->b == 0.0 && trn->c == 0.0 && trn->d == 1.0 && trn->idx == 0.0 && trn->idy == 0.0 && trn->odx == 0.0 && trn->ody == 0.0 ) return( 1 ); else return( 0 ); } /* Combine two transformations. out can be one of the ins. */ int vips__transform_add( const VipsTransformation *in1, const VipsTransformation *in2, VipsTransformation *out ) { out->a = in1->a * in2->a + in1->c * in2->b; out->b = in1->b * in2->a + in1->d * in2->b; out->c = in1->a * in2->c + in1->c * in2->d; out->d = in1->b * in2->c + in1->d * in2->d; // fixme: do idx/idy as well out->odx = in1->odx * in2->a + in1->ody * in2->b + in2->odx; out->ody = in1->odx * in2->c + in1->ody * in2->d + in2->ody; if( vips__transform_calc_inverse( out ) ) return( -1 ); return( 0 ); } void vips__transform_print( const VipsTransformation *trn ) { printf( "vips__transform_print:\n" ); printf( " iarea: left=%d, top=%d, width=%d, height=%d\n", trn->iarea.left, trn->iarea.top, trn->iarea.width, trn->iarea.height ); printf( " oarea: left=%d, top=%d, width=%d, height=%d\n", trn->oarea.left, trn->oarea.top, trn->oarea.width, trn->oarea.height ); printf( " mat: a=%g, b=%g, c=%g, d=%g\n", trn->a, trn->b, trn->c, trn->d ); printf( " off: odx=%g, ody=%g, idx=%g, idy=%g\n", trn->odx, trn->ody, trn->idx, trn->idy ); } /* Map a pixel coordinate through the transform. */ void vips__transform_forward_point( const VipsTransformation *trn, double x, double y, /* In input space */ double *ox, double *oy )/* In output space */ { x += trn->idx; y += trn->idy; *ox = trn->a * x + trn->b * y + trn->odx; *oy = trn->c * x + trn->d * y + trn->ody; } /* Map a pixel coordinate through the inverse transform. */ void vips__transform_invert_point( const VipsTransformation *trn, double x, double y, /* In output space */ double *ox, double *oy )/* In input space */ { x -= trn->odx; y -= trn->ody; *ox = trn->ia * x + trn->ib * y - trn->idx; *oy = trn->ic * x + trn->id * y - trn->idy; } typedef void (*transform_fn)( const VipsTransformation *, const double, const double, double*, double* ); /* Transform a rect using a point transformer. */ static void transform_rect( const VipsTransformation *trn, transform_fn transform, const VipsRect *in, /* In input space */ VipsRect *out ) /* In output space */ { double x1, y1; /* Map corners */ double x2, y2; double x3, y3; double x4, y4; double left, right, top, bottom; /* Map input VipsRect. */ transform( trn, in->left, in->top, &x1, &y1 ); transform( trn, in->left, VIPS_RECT_BOTTOM( in ), &x3, &y3 ); transform( trn, VIPS_RECT_RIGHT( in ), in->top, &x2, &y2 ); transform( trn, VIPS_RECT_RIGHT( in ), VIPS_RECT_BOTTOM( in ), &x4, &y4 ); /* Find bounding box for these four corners. Round-to-nearest to try * to stop rounding errors growing images. */ left = VIPS_MIN( x1, VIPS_MIN( x2, VIPS_MIN( x3, x4 ) ) ); right = VIPS_MAX( x1, VIPS_MAX( x2, VIPS_MAX( x3, x4 ) ) ); top = VIPS_MIN( y1, VIPS_MIN( y2, VIPS_MIN( y3, y4 ) ) ); bottom = VIPS_MAX( y1, VIPS_MAX( y2, VIPS_MAX( y3, y4 ) ) ); out->left = VIPS_RINT( left ); out->top = VIPS_RINT( top ); out->width = VIPS_RINT( right - left ); out->height = VIPS_RINT( bottom - top ); } /* Given an area in the input image, calculate the bounding box for those * pixels in the output image. */ void vips__transform_forward_rect( const VipsTransformation *trn, const VipsRect *in, /* In input space */ VipsRect *out ) /* In output space */ { transform_rect( trn, vips__transform_forward_point, in, out ); } /* Given an area in the output image, calculate the bounding box for the * corresponding pixels in the input image. */ void vips__transform_invert_rect( const VipsTransformation *trn, const VipsRect *in, /* In output space */ VipsRect *out ) /* In input space */ { transform_rect( trn, vips__transform_invert_point, in, out ); } /* Set output area of trn so that it just holds all of our input pels. */ void vips__transform_set_area( VipsTransformation *trn ) { vips__transform_forward_rect( trn, &trn->iarea, &trn->oarea ); } vips-8.2.2/libvips/resample/dummy2.cc0000664000175000017500000000025512530402247014434 00000000000000/* mac os x libtool needs to link libraries containing c++ (eg. cimg) with * g++ ... force this with a dummy c++ file at the top level */ const int im__dummy_value = 42; vips-8.2.2/libvips/resample/vsqbs.cpp0000664000175000017500000003374312624313765014574 00000000000000/* vertex-split subdivision followed by quadratic b-spline smoothing * * C. Racette 23-28/05/2010 based on code by N. Robidoux and J. Cupitt * * N. Robidoux 29-30/05/2010 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * 2010 (c) Chantal Racette, Nicolas Robidoux, John Cupitt. * * Nicolas Robidoux thanks Adam Turcotte, Geert Jordaens, Ralf Meyer, * Øyvind KolÃ¥s, Minglun Gong and Eric Daoust for useful comments and * code. * * Chantal Racette's image resampling research and programming funded * in part by a NSERC Discovery Grant awarded to Julien Dompierre * (20-61098). */ /* * Vertex-Split Quadratic B-Splines (VSQBS) is a brand new method * which consists of vertex-split subdivision, a subdivision method * with the (as yet unknown?) property that data which is (locally) * constant on diagonals is subdivided into data which is (locally) * constant on diagonals, followed by quadratic B-Spline smoothing. * Because both methods are linear, their combination can be * implemented as if there is no subdivision. * * At high enlargement ratios, VSQBS is very effective at "masking" * that the original has pixels uniformly distributed on a grid. In * particular, VSQBS produces resamples with only very mild * staircasing. Like cubic B-Spline smoothing, however, VSQBS is not * an interpolatory method. For example, using VSQBS to perform the * identity geometric transformation (enlargement by a scaling factor * equal to 1) on an image does not return the original: VSQBS * effectively smooths out the image with the convolution mask * * 1/8 * 1/8 1/2 1/8 * 1/8 * * which is a fairly moderate blur (although the checkerboard mode is * in its nullspace). * * By blending VSQBS with an interpolatory method (bilinear, say) in a * transformation adaptive environment (current GEGL, for example), it * is quite easy to restore that resampling for identity geometric * transformation is equivalent to the identity, and rotations are not * affected by the above, implicit, blur. Contact N. Robidoux for * details. * * An article on VSQBS is forthcoming. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "templates.h" #define VIPS_TYPE_INTERPOLATE_VSQBS \ (vips_interpolate_vsqbs_get_type()) #define VIPS_INTERPOLATE_VSQBS( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_VSQBS, VipsInterpolateVsqbs )) #define VIPS_INTERPOLATE_VSQBS_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_VSQBS, VipsInterpolateVsqbsClass)) #define VIPS_IS_INTERPOLATE_VSQBS( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_VSQBS )) #define VIPS_IS_INTERPOLATE_VSQBS_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_VSQBS )) #define VIPS_INTERPOLATE_VSQBS_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_VSQBS, VipsInterpolateVsqbsClass )) typedef struct _VipsInterpolateVsqbs { VipsInterpolate parent_object; } VipsInterpolateVsqbs; typedef struct _VipsInterpolateVsqbsClass { VipsInterpolateClass parent_class; } VipsInterpolateVsqbsClass; /* * THE STENCIL OF INPUT VALUES: * * Pointer arithmetic is used to implicitly reflect the input stencil * about dos_two---assumed closer to the sampling location than other * pixels (ties are OK)---in such a way that after reflection the * sampling point is to the bottom right of dos_two. * * The following code and picture assumes that the stencil reflexion * has already been performed. (X is the sampling location.) * * * (ix,iy-1) (ix+1,iy-1) * = uno_two = uno_thr * * * * (ix-1,iy) (ix,iy) (ix+1,iy) * = dos_one = dos_two = dos_thr * X * * * (ix-1,iy+1) (ix,iy+1) (ix+1,iy+1) * = tre_one = tre_two = tre_thr * * * The above input pixel values are the ones needed in order to * IMPLICITLY make available the following values, needed by quadratic * B-Splines, which is performed on (shifted) double density data: * * * uno_one_1 = uno_two_1 = uno_thr_1 = * (ix-1/4,iy-1/4) (ix+1/4,iy-1/4) (ix+3/4,iy-1/4) * * * * X or X * dos_one_1 = dos_two_1 = dos_thr_1 = * (ix-1/4,iy+1/4) (ix+1/4,iy+1/4) (ix+3/4,iy+1/4) * or X or X * * * * tre_one_1 = tre_two_1 = tre_thr_1 = * (ix-1/4,iy+3/4) (ix+1/4,iy+3/4) (ix+3/4,iy+3/4) * * * In the coefficient computations, we fix things so that coordinates * are relative to dos_two_1, and so that distances are rescaled so * that double density pixel locations are at a distance of 1. */ /* * Call vertex-split + quadratic B-splines with a careful type * conversion as a parameter. (It would be nice to do this with * templates somehow---for one thing this would allow code * comments---but we can't figure a clean way to do it.) */ #define VSQBS_CONVERSION( conversion ) \ template static void inline \ vsqbs_ ## conversion( void* restrict pout, \ const VipsPel* restrict pin, \ const int bands, \ const int lskip, \ const double x_0, \ const double y_0 ) \ { \ T* restrict out = (T *) pout; \ \ const T* restrict in = (T *) pin; \ \ const int sign_of_x_0 = 2 * ( x_0 >= 0. ) - 1; \ const int sign_of_y_0 = 2 * ( y_0 >= 0. ) - 1; \ \ const int shift_forw_1_pix = sign_of_x_0 * bands; \ const int shift_forw_1_row = sign_of_y_0 * lskip; \ \ const int shift_back_1_pix = -shift_forw_1_pix; \ const int shift_back_1_row = -shift_forw_1_row; \ \ const int uno_two_shift = shift_back_1_row; \ const int uno_thr_shift = shift_forw_1_pix + shift_back_1_row; \ \ const int dos_one_shift = shift_back_1_pix; \ const int dos_two_shift = 0; \ const int dos_thr_shift = shift_forw_1_pix; \ \ const int tre_one_shift = shift_back_1_pix + shift_forw_1_row; \ const int tre_two_shift = shift_forw_1_row; \ const int tre_thr_shift = shift_forw_1_pix + shift_forw_1_row; \ \ \ const double twice_abs_x_0 = ( 2 * sign_of_x_0 ) * x_0; \ const double twice_abs_y_0 = ( 2 * sign_of_y_0 ) * y_0; \ const double x = twice_abs_x_0 + -0.5; \ const double y = twice_abs_y_0 + -0.5; \ const double cent = 0.75 - x * x; \ const double mid = 0.75 - y * y; \ const double left = -0.5 * ( x + cent ) + 0.5; \ const double top = -0.5 * ( y + mid ) + 0.5; \ const double left_p_cent = left + cent; \ const double top_p_mid = top + mid; \ const double cent_p_rite = 1.0 - left; \ const double mid_p_bot = 1.0 - top; \ const double rite = 1.0 - left_p_cent; \ const double bot = 1.0 - top_p_mid; \ \ const double four_c_uno_two = left_p_cent * top; \ const double four_c_dos_one = left * top_p_mid; \ const double four_c_dos_two = left_p_cent + top_p_mid; \ const double four_c_dos_thr = cent_p_rite * top_p_mid + rite; \ const double four_c_tre_two = mid_p_bot * left_p_cent + bot; \ const double four_c_tre_thr = mid_p_bot * rite + cent_p_rite * bot; \ const double four_c_uno_thr = top - four_c_uno_two; \ const double four_c_tre_one = left - four_c_dos_one; \ \ \ int band = bands; \ \ do \ { \ const double double_result = \ ( \ ( \ ( \ four_c_uno_two * in[uno_two_shift] \ + \ four_c_dos_one * in[dos_one_shift] \ ) \ + \ ( \ four_c_dos_two * in[dos_two_shift] \ + \ four_c_dos_thr * in[dos_thr_shift] \ ) \ ) \ + \ ( \ ( \ four_c_tre_two * in[tre_two_shift] \ + \ four_c_tre_thr * in[tre_thr_shift] \ ) \ + \ ( \ four_c_uno_thr * in[uno_thr_shift] \ + \ four_c_tre_one * in[tre_one_shift] \ ) \ ) \ ) * 0.25; \ \ const T result = to_ ## conversion( double_result ); \ in++; \ *out++ = result; \ \ } while (--band); \ } VSQBS_CONVERSION( fptypes ) VSQBS_CONVERSION( withsign ) VSQBS_CONVERSION( nosign ) #define CALL( T, conversion ) \ vsqbs_ ## conversion( out, \ p, \ bands, \ lskip, \ relative_x, \ relative_y ); /* * We need C linkage: */ extern "C" { G_DEFINE_TYPE( VipsInterpolateVsqbs, vips_interpolate_vsqbs, VIPS_TYPE_INTERPOLATE ); } static void vips_interpolate_vsqbs_interpolate( VipsInterpolate* restrict interpolate, void* restrict out, VipsRegion* restrict in, double absolute_x, double absolute_y ) { /* absolute_x and absolute_y are always >= 1.0 (see double-check assert * below), so we don't need floor(). * * It's 1 not 0 since we ask for a window_offset of 1 at the bottom. */ const int ix = (int) absolute_x; const int iy = (int) absolute_y; /* * Move the pointer to (the first band of) the top/left pixel of the * 2x2 group of pixel centers which contains the sampling location * in its convex hull: */ const VipsPel* restrict p = VIPS_REGION_ADDR( in, ix, iy ); const double relative_x = absolute_x - ix; const double relative_y = absolute_y - iy; /* * VIPS versions of Nicolas's pixel addressing values. */ const int lskip = VIPS_REGION_LSKIP( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in->im ); /* * Double the bands for complex images to account for the real and * imaginary parts being computed independently: */ const int actual_bands = in->im->Bands; const int bands = vips_band_format_iscomplex( in->im->BandFmt ) ? 2 * actual_bands : actual_bands; g_assert( ix - 1 >= in->valid.left ); g_assert( iy - 1 >= in->valid.top ); g_assert( ix + 1 < VIPS_RECT_RIGHT( &in->valid ) ); g_assert( iy + 1 < VIPS_RECT_BOTTOM( &in->valid ) ); /* Confirm that absolute_x and absolute_y are >= 1, see above. */ g_assert( absolute_x >= 1.0 ); g_assert( absolute_y >= 1.0 ); switch( in->im->BandFmt ) { case VIPS_FORMAT_UCHAR: CALL( unsigned char, nosign ); break; case VIPS_FORMAT_CHAR: CALL( signed char, withsign ); break; case VIPS_FORMAT_USHORT: CALL( unsigned short, nosign ); break; case VIPS_FORMAT_SHORT: CALL( signed short, withsign ); break; case VIPS_FORMAT_UINT: CALL( unsigned int, nosign ); break; case VIPS_FORMAT_INT: CALL( signed int, withsign ); break; /* * Complex images are handled by doubling bands: */ case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CALL( float, fptypes ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CALL( double, fptypes ); break; default: g_assert( 0 ); break; } } static void vips_interpolate_vsqbs_class_init( VipsInterpolateVsqbsClass *klass ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( klass ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( klass ); object_class->nickname = "vsqbs"; object_class->description = _( "B-Splines with antialiasing smoothing" ); interpolate_class->interpolate = vips_interpolate_vsqbs_interpolate; interpolate_class->window_size = 3; interpolate_class->window_offset = 1; } static void vips_interpolate_vsqbs_init( VipsInterpolateVsqbs *vsqbs ) { } vips-8.2.2/libvips/resample/shrinkh.c0000664000175000017500000002131112651124120014511 00000000000000/* horizontal shrink by an integer factor * * 30/10/15 * - from shrink.c * 22/1/16 * - reorganise loops, 30% faster, vectorisable */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsShrinkh { VipsResample parent_instance; int xshrink; /* Shrink factor */ } VipsShrinkh; typedef VipsResampleClass VipsShrinkhClass; G_DEFINE_TYPE( VipsShrinkh, vips_shrinkh, VIPS_TYPE_RESAMPLE ); #define INNER( BANDS ) \ sum += p[x1]; \ x1 += BANDS; /* Integer shrink. */ #define ISHRINK( TYPE, BANDS ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ for( b = 0; b < BANDS; b++ ) { \ int sum; \ \ sum = 0; \ x1 = b; \ VIPS_UNROLL( shrink->xshrink, INNER( BANDS ) ); \ q[b] = (sum + shrink->xshrink / 2) / \ shrink->xshrink; \ } \ p += ne; \ q += BANDS; \ } \ } /* Float shrink. */ #define FSHRINK( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ for( b = 0; b < bands; b++ ) { \ double sum; \ \ sum = 0.0; \ x1 = b; \ VIPS_UNROLL( shrink->xshrink, INNER( bands ) ); \ q[b] = sum / shrink->xshrink; \ } \ p += ne; \ q += bands; \ } \ } /* Generate an area of @or. @ir is large enough. */ static void vips_shrinkh_gen2( VipsShrinkh *shrink, VipsRegion *or, VipsRegion *ir, int left, int top, int width ) { VipsResample *resample = VIPS_RESAMPLE( shrink ); const int bands = resample->in->Bands * (vips_band_format_iscomplex( resample->in->BandFmt ) ? 2 : 1); const int ne = shrink->xshrink * bands; VipsPel *out = VIPS_REGION_ADDR( or, left, top ); VipsPel *in = VIPS_REGION_ADDR( ir, left * shrink->xshrink, top ); int x; int x1, b; switch( resample->in->BandFmt ) { case VIPS_FORMAT_UCHAR: /* Generate a special path for 1, 3 and 4 band uchar data. The * compiler will be able to vectorise these. * * Vectorisation doesn't help much for 16, 32-bit or float * data, don't bother with them. */ switch( bands ) { case 1: ISHRINK( unsigned char, 1 ); break; case 3: ISHRINK( unsigned char, 3 ); break; case 4: ISHRINK( unsigned char, 4 ); break; default: ISHRINK( unsigned char, bands ); break; } break; case VIPS_FORMAT_CHAR: ISHRINK( char, bands ); break; case VIPS_FORMAT_USHORT: ISHRINK( unsigned short, bands ); break; case VIPS_FORMAT_SHORT: ISHRINK( short, bands ); break; case VIPS_FORMAT_UINT: ISHRINK( unsigned int, bands ); break; case VIPS_FORMAT_INT: ISHRINK( int, bands ); break; case VIPS_FORMAT_FLOAT: FSHRINK( float ); break; case VIPS_FORMAT_DOUBLE: FSHRINK( double ); break; case VIPS_FORMAT_COMPLEX: FSHRINK( float ); break; case VIPS_FORMAT_DPCOMPLEX: FSHRINK( double ); break; default: g_assert_not_reached(); } } static int vips_shrinkh_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsShrinkh *shrink = (VipsShrinkh *) b; VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; int y; /* How do we chunk up the image? We don't want to prepare the whole of * the input region corresponding to *r since it could be huge. * * Request input a line at a time. * * We don't chunk horizontally. We want "vips shrink x.jpg b.jpg 100 * 100" to run sequentially. If we chunk horizontally, we will fetch * 100x100 lines from the top of the image, then 100x100 100 lines * down, etc. for each thread, then when they've finished, fetch * 100x100, 100 pixels across from the top of the image. This will * break sequentiality. */ #ifdef DEBUG printf( "vips_shrinkh_gen: generating %d x %d at %d x %d\n", r->width, r->height, r->left, r->top ); #endif /*DEBUG*/ for( y = 0; y < r->height; y ++ ) { VipsRect s; s.left = r->left * shrink->xshrink; s.top = r->top + y; s.width = r->width * shrink->xshrink; s.height = 1; #ifdef DEBUG printf( "shrinkh_gen: requesting line %d\n", s.top ); #endif /*DEBUG*/ if( vips_region_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "vips_shrinkh_gen: work" ); vips_shrinkh_gen2( shrink, or, ir, r->left, r->top + y, r->width ); VIPS_GATE_STOP( "vips_shrinkh_gen: work" ); } return( 0 ); } static int vips_shrinkh_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsShrinkh *shrink = (VipsShrinkh *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_shrinkh_parent_class )->build( object ) ) return( -1 ); in = resample->in; if( shrink->xshrink < 1 ) { vips_error( class->nickname, "%s", _( "shrink factors should be >= 1" ) ); return( -1 ); } if( shrink->xshrink == 1 ) return( vips_image_write( in, resample->out ) ); /* Unpack for processing. */ if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* THINSTRIP will work, anything else will break seq mode. If you * combine shrink with conv you'll need to use a line cache to maintain * sequentiality. */ if( vips_image_pipelinev( resample->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); /* Size output. Note: we round the output width down! * * Don't change xres/yres, leave that to the application layer. For * example, vipsthumbnail knows the true shrink factor (including the * fractional part), we just see the integer part here. */ resample->out->Xsize = in->Xsize / shrink->xshrink; if( resample->out->Xsize <= 0 ) { vips_error( class->nickname, "%s", _( "image has shrunk to nothing" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_shrinkh_build: shrinking %d x %d image to %d x %d\n", in->Xsize, in->Ysize, resample->out->Xsize, resample->out->Ysize ); #endif /*DEBUG*/ if( vips_image_generate( resample->out, vips_start_one, vips_shrinkh_gen, vips_stop_one, in, shrink ) ) return( -1 ); return( 0 ); } static void vips_shrinkh_class_init( VipsShrinkhClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_shrinkh_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "shrinkh"; vobject_class->description = _( "shrink an image horizontally" ); vobject_class->build = vips_shrinkh_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_INT( class, "xshrink", 8, _( "Xshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrinkh, xshrink ), 1, 1000000, 1 ); } static void vips_shrinkh_init( VipsShrinkh *shrink ) { } /** * vips_shrinkh: * @in: input image * @out: output image * @xshrink: horizontal shrink * @...: %NULL-terminated list of optional named arguments * * Shrink @in horizontally by an integer factor. Each pixel in the output is * the average of the corresponding line of @xshrink pixels in the input. * * This is a very low-level operation: see vips_resize() for a more * convenient way to resize images. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_shrinkv(), vips_shrink(), vips_resize(), vips_affine(). * * Returns: 0 on success, -1 on error */ int vips_shrinkh( VipsImage *in, VipsImage **out, int xshrink, ... ) { va_list ap; int result; va_start( ap, xshrink ); result = vips_call_split( "shrinkh", ap, in, out, xshrink ); va_end( ap ); return( result ); } vips-8.2.2/libvips/resample/nohalo.cpp0000664000175000017500000017340612624314007014705 00000000000000/* nohalo subdivision followed by lbb (locally bounded bicubic) * interpolation resampler * * Nohalo level 1 with bilinear finishing scheme hacked for VIPS by * J. Cupitt based on code by N. Robidoux, 20/1/09 * * N. Robidoux and J. Cupitt, 4-17/3/09 * * N. Robidoux, 1/4-29/5/2009 * * Nohalo level 2 with bilinear finishing scheme by N. Robidoux based * on code by N. Robidoux, A. Turcotte and J. Cupitt, 27/1/2010 * * Nohalo level 1 with LBB finishing scheme by N. Robidoux and * C. Racette, 11-18/5/2010 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * 2009-2010 (c) Nicolas Robidoux, Chantal Racette, John Cupitt and * Adam Turcotte * * N. Robidoux thanks Geert Jordaens, Ralf Meyer, Øyvind KolÃ¥s, * Minglun Gong, Eric Daoust and Sven Neumann for useful comments and * code. * * N. Robidoux's early research on Nohalo funded in part by an NSERC * (National Science and Engineering Research Council of Canada) * Discovery Grant awarded to him (298424--2004). * * C. Racette's image resampling research and programming funded in * part by an NSERC (National Science and Engineering Research Council * of Canada) Alexander Graham Bell Canada Graduate Scholarship, by an * NSERC Discovery Grant awarded to Julien Dompierre (grant number * 20-61098) and by N. Robidoux's Laurentian University professional * allowance. * * A. Turcotte's image resampling research on reduced halo funded in * part by an NSERC Alexander Graham Bell Canada Graduate Scholarhip * awarded to him and by a Google Summer of Code 2010 award awarded to * GIMP (Gnu Image Manipulation Program). * * Nohalo with LBB finishing scheme was developed by N. Robidoux and * C. Racette at the Department of Mathematics and Computer Science of * Laurentian University in the course of C. Racette's Masters thesis * in Computational Sciences. Preliminary work on Nohalo and monotone * interpolation was performed by C. Racette and N. Robidoux in the * course of her honours thesis, by N. Robidoux, A. Turcotte and * E. Daoust during Google Summer of Code 2009 (through two awards * made to GIMP to improve GEGL), and, earlier, by N. Robidoux, * A. Turcotte, J. Cupitt, M. Gong and K. Martinez. */ /* * Nohalo with LBB as finishing scheme has two versions, which are * only different in the way LBB is implemented: * * A "soft" version, which shows a little less staircasing and a * little more haloing, and which is a little more expensive to * compute. We recommend this as the default. * * A "sharp" version, which shows a little more staircasing and a * little less haloing, and which is a little cheaper (it uses 6 * less comparisons and 12 less "? :"). * * The only difference between the two is that the "soft" versions * uses local minima and maxima computed over 3x3 square blocks, and * the "sharp" version uses local minima and maxima computed over 3x3 * crosses. * * The "sharp" version is (a little) faster. We don't know yet for * sure, but it appears that the "soft" version gives marginally * better results. * * If you want to use the "sharp" (cheaper) version, uncomment the * following three pre-processor code lines: */ /* #ifndef __NOHALO_CHEAP_H__ #define __NOHALO_CHEAP_H__ #endif */ /* * ================ * NOHALO RESAMPLER * ================ * * "Nohalo" is a resampler with a mission: smoothly straightening * oblique lines without undesirable side-effects. In particular, * without much blurring and with no added haloing. * * In this code, one Nohalo subdivision is performed. The * interpolation is finished with LBB (Locally Bounded Bicubic). * * Key properties: * * ======================= * Nohalo is interpolatory * ======================= * * That is, Nohalo preserves point values: If asked for the value at * the center of an input pixel, the sampler returns the corresponding * value, unchanged. In addition, because Nohalo is continuous, if * asked for a value at a location "very close" to the center of an * input pixel, then the sampler returns a value "very close" to * it. (Nohalo is not smoothing like, say, B-Spline * pseudo-interpolation.) * * ==================================================================== * Nohalo subdivision is co-monotone (this is why it's called "no-halo") * ==================================================================== * * One consequence of monotonicity is that additional subdivided * values are in the range of the four closest input values, which is * a form of local boundedness. (Note: plain vanilla bilinear and * nearest neighbour are also co-monotone.) LBB is also locally * bounded. Consequently, Nohalo subdivision followed by LBB is * locally bounded. When used as a finishing scheme for Nohalo, the * standard LBB bounds imply that the final interpolated value is in * the range of the nine closest input values. This property is why * there is very little added haloing, even when a finishing scheme * which is not strictly monotone. Another consequence of local * boundedness is that clamping is unnecessary (provided abyss values * are within the range of acceptable values, which is "always" the * case). * * Note: If the abyss policy is an extrapolating one---for example, * linear or bilinear extrapolation---clamping is still unnecessary * UNLESS one attempts to resample outside of the convex hull of the * input pixel positions. Consequence: the "corner" image size * convention does not require clamping when using linear * extrapolation abyss policy when performing image resizing, but the * "center" one does, when upscaling, at locations very close to the * boundary. If computing values at locations outside of the convex * hull of the pixel locations of the input image, nearest neighbour * abyss policy is most likely better anyway, because linear * extrapolation produces "streaks" if positions far outside the * original image boundary are resampled. * * ======================== * Nohalo is a local method * ======================== * * The interpolated pixel value when using Nohalo subdivision followed * by LBB only depends on the 21 (5x5 minus the four corners) closest * input values. * * =============================== * Nohalo is second order accurate * =============================== * * (Except possibly near the boundary: it is easy to make this * property carry over everywhere but this requires a tuned abyss * policy---linear extrapolation, say---or building the boundary * conditions inside the sampler.) Nohalo+LBB is exact on linear * intensity profiles, meaning that if the input pixel values (in the * stencil) are obtained from a function of the form f(x,y) = a + b*x * + c*y (a, b, c constants), then the computed pixel value is exactly * the value of f(x,y) at the asked-for sampling location. The * boundary condition which is emulated by VIPS through the "extend" * extension of the input image---this corresponds to the nearest * neighbour abyss policy---does NOT make this resampler exact on * linears near the boundary. It does, however, guarantee that no * clamping is required even when resampled values are computed at * positions outside of the extent of the input image (when * extrapolation is required). * * =================== * Nohalo is nonlinear * =================== * * Both Nohalo and LBB are nonlinear, consequently their composition * is nonlinear. In particular, resampling a sum of images may not be * the same as summing the resamples. (This occurs even without taking * into account over and underflow issues: images can only take values * within a banded range, and consequently no sampler is truly * linear.) * * ==================== * Weaknesses of Nohalo * ==================== * * In some cases, the initial subdivision computation is wasted: * * If a region is bi-chromatic, the nonlinear component of Nohalo * subdivision is zero in the interior of the region, and consequently * Nohalo subdivision boils down to bilinear. For such images, LBB is * probably a better choice. * * ========================= * Bibliographical reference * ========================= * * For more information about Nohalo (a prototype version with * bilinear finish instead of LBB), see * * CPU, SMP and GPU implementations of Nohalo level 1, a fast * co-convex antialiasing image resampler by Nicolas Robidoux, Minglun * Gong, John Cupitt, Adam Turcotte, and Kirk Martinez, in C3S2E '09: * Proceedings of the 2nd Canadian Conference on Computer Science and * Software Engineering, p. 185--195, ACM, New York, NY, USA, 2009. * http://doi.acm.org/10.1145/1557626.1557657. */ /* Uncomment to enable bounds checking for VIPS_REGION_ADDR(). */ #define DEBUG #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "templates.h" #define VIPS_TYPE_INTERPOLATE_NOHALO \ (vips_interpolate_nohalo_get_type()) #define VIPS_INTERPOLATE_NOHALO( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_NOHALO, VipsInterpolateNohalo )) #define VIPS_INTERPOLATE_NOHALO_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_NOHALO, VipsInterpolateNohaloClass)) #define VIPS_IS_INTERPOLATE_NOHALO( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_NOHALO )) #define VIPS_IS_INTERPOLATE_NOHALO_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_NOHALO )) #define VIPS_INTERPOLATE_NOHALO_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_NOHALO, VipsInterpolateNohaloClass )) typedef struct _VipsInterpolateNohalo { VipsInterpolate parent_object; } VipsInterpolateNohalo; typedef struct _VipsInterpolateNohaloClass { VipsInterpolateClass parent_class; } VipsInterpolateNohaloClass; /* * NOHALO_MINMOD is an implementation of the minmod function which * only needs two "conditional moves." * NOHALO_MINMOD(a,b,a_times_a,a_times_b) "returns" * minmod(a,b). The macro parameter ("input") a_times_a is assumed to * contain the square of a; a_times_b, the product of a and b. * * For uncompressed natural images in high bit depth (images for which * the slopes a and b are unlikely to be equal to zero or be equal to * each other), or chips with good branch prediction, the following * version of the minmod function may work well: * * ( (a_times_b)>=0. ? ( (a_times_b)<(a_times_a) ? (b) : (a) ) : 0. ) * * In this version, the forward branch of the second conditional move * is taken when |b|>|a| and when a*b<0. However, the "else" branch is * taken when a=0 (or when a=b), which is why the above version is not * as effective for images with regions with constant pixel values (or * regions with pixel values which vary linearly or bilinearly) since * we apply minmod to pairs of differences. * * The following version is more suitable for images with flat * (constant) colour areas, since a, which is a pixel difference, will * often be 0, in which case both forward branches are likely. This * may be preferable if "branch flag look ahead" does not work so * well. * * ( (a_times_b)>=0. ? ( (a_times_a)<=(a_times_b) ? (a) : (b) ) : 0. ) * * This last version appears to be slightly better than the former in * speed tests performed on a recent multicore Intel chip, especially * when enlarging a sharp image by a large factor, hence the choice. */ #define NOHALO_MINMOD(a,b,a_times_a,a_times_b) \ ( ( (a_times_b)>=0. ) ? ( (a_times_a)<=(a_times_b) ? (a) : (b) ) : 0. ) /* * Absolute value and sign macros: */ #define NOHALO_ABS(x) ( ((x)>=0.) ? (x) : -(x) ) #define NOHALO_SIGN(x) ( ((x)>=0.) ? 1. : -1. ) /* * MIN and MAX macros set up so that I can put the likely winner in * the first argument (forward branch likely blah blah blah): */ #define NOHALO_MIN(x,y) ( ((x)<=(y)) ? (x) : (y) ) #define NOHALO_MAX(x,y) ( ((x)>=(y)) ? (x) : (y) ) static void inline nohalo_subdivision (const double uno_two, const double uno_thr, const double uno_fou, const double dos_one, const double dos_two, const double dos_thr, const double dos_fou, const double dos_fiv, const double tre_one, const double tre_two, const double tre_thr, const double tre_fou, const double tre_fiv, const double qua_one, const double qua_two, const double qua_thr, const double qua_fou, const double qua_fiv, const double cin_two, const double cin_thr, const double cin_fou, double* restrict uno_one_1, double* restrict uno_two_1, double* restrict uno_thr_1, double* restrict uno_fou_1, double* restrict dos_one_1, double* restrict dos_two_1, double* restrict dos_thr_1, double* restrict dos_fou_1, double* restrict tre_one_1, double* restrict tre_two_1, double* restrict tre_thr_1, double* restrict tre_fou_1, double* restrict qua_one_1, double* restrict qua_two_1, double* restrict qua_thr_1, double* restrict qua_fou_1) { /* * nohalo_subdivision calculates the missing twelve double density * pixel values, and also returns the "already known" four, so that * the sixteen values which make up the stencil of LBB are * available. */ /* * THE STENCIL OF INPUT VALUES: * * Pointer arithmetic is used to implicitly reflect the input * stencil about tre_thr---assumed closer to the sampling location * than other pixels (ties are OK)---in such a way that after * reflection the sampling point is to the bottom right of tre_thr. * * The following code and picture assumes that the stencil reflexion * has already been performed. * * (ix-1,iy-2) (ix,iy-2) (ix+1,iy-2) * =uno_two = uno_thr = uno_fou * * * * (ix-2,iy-1) (ix-1,iy-1) (ix,iy-1) (ix+1,iy-1) (ix+2,iy-1) * = dos_one = dos_two = dos_thr = dos_fou = dos_fiv * * * * (ix-2,iy) (ix-1,iy) (ix,iy) (ix+1,iy) (ix+2,iy) * = tre_one = tre_two = tre_thr = tre_fou = tre_fiv * X * * * (ix-2,iy+1) (ix-1,iy+1) (ix,iy+1) (ix+1,iy+1) (ix+2,iy+1) * = qua_one = qua_two = qua_thr = qua_fou = qua_fiv * * * * (ix-1,iy+2) (ix,iy+2) (ix+1,iy+2) * = cin_two = cin_thr = cin_fou * * * The above input pixel values are the ones needed in order to make * available the following values, needed by LBB: * * uno_one_1 = uno_two_1 = uno_thr_1 = uno_fou_1 = * (ix-1/2,iy-1/2) (ix,iy-1/2) (ix+1/2,iy-1/2) (ix+1,iy-1/2) * * * * * dos_one_1 = dos_two_1 = dos_thr_1 = dos_fou_1 = * (ix-1/2,iy) (ix,iy) (ix+1/2,iy) (ix+1,iy) * * X * * * tre_one_1 = tre_two_1 = tre_thr_1 = tre_fou_1 = * (ix-1/2,iy+1/2) (ix,iy+1/2) (ix+1/2,iy+1/2) (ix+1,iy+1/2) * * * * * qua_one_1 = qua_two_1 = qua_thr_1 = qua_fou_1 = * (ix-1/2,iy+1) (ix,iy+1) (ix+1/2,iy+1) (ix+1,iy+1) * */ /* * Computation of the nonlinear slopes: If two consecutive pixel * value differences have the same sign, the smallest one (in * absolute value) is taken to be the corresponding slope; if the * two consecutive pixel value differences don't have the same sign, * the corresponding slope is set to 0. * * In other words: Apply minmod to consecutive differences. */ /* * Two vertical simple differences: */ const double d_unodos_two = dos_two - uno_two; const double d_dostre_two = tre_two - dos_two; const double d_trequa_two = qua_two - tre_two; const double d_quacin_two = cin_two - qua_two; /* * Thr(ee) vertical differences: */ const double d_unodos_thr = dos_thr - uno_thr; const double d_dostre_thr = tre_thr - dos_thr; const double d_trequa_thr = qua_thr - tre_thr; const double d_quacin_thr = cin_thr - qua_thr; /* * Fou(r) vertical differences: */ const double d_unodos_fou = dos_fou - uno_fou; const double d_dostre_fou = tre_fou - dos_fou; const double d_trequa_fou = qua_fou - tre_fou; const double d_quacin_fou = cin_fou - qua_fou; /* * Dos horizontal differences: */ const double d_dos_onetwo = dos_two - dos_one; const double d_dos_twothr = dos_thr - dos_two; const double d_dos_thrfou = dos_fou - dos_thr; const double d_dos_foufiv = dos_fiv - dos_fou; /* * Tre(s) horizontal differences: */ const double d_tre_onetwo = tre_two - tre_one; const double d_tre_twothr = tre_thr - tre_two; const double d_tre_thrfou = tre_fou - tre_thr; const double d_tre_foufiv = tre_fiv - tre_fou; /* * Qua(ttro) horizontal differences: */ const double d_qua_onetwo = qua_two - qua_one; const double d_qua_twothr = qua_thr - qua_two; const double d_qua_thrfou = qua_fou - qua_thr; const double d_qua_foufiv = qua_fiv - qua_fou; /* * Recyclable vertical products and squares: */ const double d_unodos_times_dostre_two = d_unodos_two * d_dostre_two; const double d_dostre_two_sq = d_dostre_two * d_dostre_two; const double d_dostre_times_trequa_two = d_dostre_two * d_trequa_two; const double d_trequa_times_quacin_two = d_quacin_two * d_trequa_two; const double d_quacin_two_sq = d_quacin_two * d_quacin_two; const double d_unodos_times_dostre_thr = d_unodos_thr * d_dostre_thr; const double d_dostre_thr_sq = d_dostre_thr * d_dostre_thr; const double d_dostre_times_trequa_thr = d_trequa_thr * d_dostre_thr; const double d_trequa_times_quacin_thr = d_trequa_thr * d_quacin_thr; const double d_quacin_thr_sq = d_quacin_thr * d_quacin_thr; const double d_unodos_times_dostre_fou = d_unodos_fou * d_dostre_fou; const double d_dostre_fou_sq = d_dostre_fou * d_dostre_fou; const double d_dostre_times_trequa_fou = d_trequa_fou * d_dostre_fou; const double d_trequa_times_quacin_fou = d_trequa_fou * d_quacin_fou; const double d_quacin_fou_sq = d_quacin_fou * d_quacin_fou; /* * Recyclable horizontal products and squares: */ const double d_dos_onetwo_times_twothr = d_dos_onetwo * d_dos_twothr; const double d_dos_twothr_sq = d_dos_twothr * d_dos_twothr; const double d_dos_twothr_times_thrfou = d_dos_twothr * d_dos_thrfou; const double d_dos_thrfou_times_foufiv = d_dos_thrfou * d_dos_foufiv; const double d_dos_foufiv_sq = d_dos_foufiv * d_dos_foufiv; const double d_tre_onetwo_times_twothr = d_tre_onetwo * d_tre_twothr; const double d_tre_twothr_sq = d_tre_twothr * d_tre_twothr; const double d_tre_twothr_times_thrfou = d_tre_thrfou * d_tre_twothr; const double d_tre_thrfou_times_foufiv = d_tre_thrfou * d_tre_foufiv; const double d_tre_foufiv_sq = d_tre_foufiv * d_tre_foufiv; const double d_qua_onetwo_times_twothr = d_qua_onetwo * d_qua_twothr; const double d_qua_twothr_sq = d_qua_twothr * d_qua_twothr; const double d_qua_twothr_times_thrfou = d_qua_thrfou * d_qua_twothr; const double d_qua_thrfou_times_foufiv = d_qua_thrfou * d_qua_foufiv; const double d_qua_foufiv_sq = d_qua_foufiv * d_qua_foufiv; /* * Minmod slopes and first level pixel values: */ const double dos_thr_y = NOHALO_MINMOD( d_dostre_thr, d_unodos_thr, d_dostre_thr_sq, d_unodos_times_dostre_thr ); const double tre_thr_y = NOHALO_MINMOD( d_dostre_thr, d_trequa_thr, d_dostre_thr_sq, d_dostre_times_trequa_thr ); const double newval_uno_two = .5 * ( dos_thr + tre_thr ) + .25 * ( dos_thr_y - tre_thr_y ); const double qua_thr_y = NOHALO_MINMOD( d_quacin_thr, d_trequa_thr, d_quacin_thr_sq, d_trequa_times_quacin_thr ); const double newval_tre_two = .5 * ( tre_thr + qua_thr ) + .25 * ( tre_thr_y - qua_thr_y ); const double tre_fou_y = NOHALO_MINMOD( d_dostre_fou, d_trequa_fou, d_dostre_fou_sq, d_dostre_times_trequa_fou ); const double qua_fou_y = NOHALO_MINMOD( d_quacin_fou, d_trequa_fou, d_quacin_fou_sq, d_trequa_times_quacin_fou ); const double newval_tre_fou = .5 * ( tre_fou + qua_fou ) + .25 * ( tre_fou_y - qua_fou_y ); const double dos_fou_y = NOHALO_MINMOD( d_dostre_fou, d_unodos_fou, d_dostre_fou_sq, d_unodos_times_dostre_fou ); const double newval_uno_fou = .5 * ( dos_fou + tre_fou ) + .25 * (dos_fou_y - tre_fou_y ); const double tre_two_x = NOHALO_MINMOD( d_tre_twothr, d_tre_onetwo, d_tre_twothr_sq, d_tre_onetwo_times_twothr ); const double tre_thr_x = NOHALO_MINMOD( d_tre_twothr, d_tre_thrfou, d_tre_twothr_sq, d_tre_twothr_times_thrfou ); const double newval_dos_one = .5 * ( tre_two + tre_thr ) + .25 * ( tre_two_x - tre_thr_x ); const double tre_fou_x = NOHALO_MINMOD( d_tre_foufiv, d_tre_thrfou, d_tre_foufiv_sq, d_tre_thrfou_times_foufiv ); const double tre_thr_x_minus_tre_fou_x = tre_thr_x - tre_fou_x; const double newval_dos_thr = .5 * ( tre_thr + tre_fou ) + .25 * tre_thr_x_minus_tre_fou_x; const double qua_thr_x = NOHALO_MINMOD( d_qua_twothr, d_qua_thrfou, d_qua_twothr_sq, d_qua_twothr_times_thrfou ); const double qua_fou_x = NOHALO_MINMOD( d_qua_foufiv, d_qua_thrfou, d_qua_foufiv_sq, d_qua_thrfou_times_foufiv ); const double qua_thr_x_minus_qua_fou_x = qua_thr_x - qua_fou_x; const double newval_qua_thr = .5 * ( qua_thr + qua_fou ) + .25 * qua_thr_x_minus_qua_fou_x; const double qua_two_x = NOHALO_MINMOD( d_qua_twothr, d_qua_onetwo, d_qua_twothr_sq, d_qua_onetwo_times_twothr ); const double newval_qua_one = .5 * ( qua_two + qua_thr ) + .25 * ( qua_two_x - qua_thr_x ); const double newval_tre_thr = .125 * ( tre_thr_x_minus_tre_fou_x + qua_thr_x_minus_qua_fou_x ) + .5 * ( newval_tre_two + newval_tre_fou ); const double dos_thr_x = NOHALO_MINMOD( d_dos_twothr, d_dos_thrfou, d_dos_twothr_sq, d_dos_twothr_times_thrfou ); const double dos_fou_x = NOHALO_MINMOD( d_dos_foufiv, d_dos_thrfou, d_dos_foufiv_sq, d_dos_thrfou_times_foufiv ); const double newval_uno_thr = .25 * ( dos_fou - tre_thr ) + .125 * ( dos_fou_y - tre_fou_y + dos_thr_x - dos_fou_x ) + .5 * ( newval_uno_two + newval_dos_thr ); const double tre_two_y = NOHALO_MINMOD( d_dostre_two, d_trequa_two, d_dostre_two_sq, d_dostre_times_trequa_two ); const double qua_two_y = NOHALO_MINMOD( d_quacin_two, d_trequa_two, d_quacin_two_sq, d_trequa_times_quacin_two ); const double newval_tre_one = .25 * ( qua_two - tre_thr ) + .125 * ( qua_two_x - qua_thr_x + tre_two_y - qua_two_y ) + .5 * ( newval_dos_one + newval_tre_two ); const double dos_two_x = NOHALO_MINMOD( d_dos_twothr, d_dos_onetwo, d_dos_twothr_sq, d_dos_onetwo_times_twothr ); const double dos_two_y = NOHALO_MINMOD( d_dostre_two, d_unodos_two, d_dostre_two_sq, d_unodos_times_dostre_two ); const double newval_uno_one = .25 * ( dos_two + dos_thr + tre_two + tre_thr ) + .125 * ( dos_two_x - dos_thr_x + tre_two_x - tre_thr_x + dos_two_y + dos_thr_y - tre_two_y - tre_thr_y ); /* * Return the sixteen LBB stencil values: */ *uno_one_1 = newval_uno_one; *uno_two_1 = newval_uno_two; *uno_thr_1 = newval_uno_thr; *uno_fou_1 = newval_uno_fou; *dos_one_1 = newval_dos_one; *dos_two_1 = tre_thr; *dos_thr_1 = newval_dos_thr; *dos_fou_1 = tre_fou; *tre_one_1 = newval_tre_one; *tre_two_1 = newval_tre_two; *tre_thr_1 = newval_tre_thr; *tre_fou_1 = newval_tre_fou; *qua_one_1 = newval_qua_one; *qua_two_1 = qua_thr; *qua_thr_1 = newval_qua_thr; *qua_fou_1 = qua_fou; } /* * LBB (Locally Bounded Bicubic) is a high quality nonlinear variant * of Catmull-Rom. Images resampled with LBB have much smaller halos * than images resampled with windowed sincs or other interpolatory * cubic spline filters. Specifically, LBB halos are narrower and the * over/undershoot amplitude is smaller. This is accomplished without * a significant reduction in the smoothness of the result (compared * to Catmull-Rom). * * Another important property is that the resampled values are * contained within the range of nearby input values. Consequently, no * final clamping is needed to stay "in range" (e.g., 0-255 for * standard 8-bit images). * * LBB was developed by N. Robidoux and C. Racette of the Department * of Mathematics and Computer Science of Laurentian University in the * course of C.'s Masters Thesis in Computational Sciences. */ /* * LBB is a novel method with the following properties: * * --LBB is a Hermite bicubic method: The bicubic surface is defined, * one convex hull of four nearby input points at a time, using four * point values, four x-derivatives, four y-derivatives, and four * cross-derivatives. * * --The stencil for values in a square patch is the usual 4x4. * * --LBB is interpolatory. * * --It is C^1 with continuous cross derivatives. * * --When the limiters are inactive, LBB gives the same results as * Catmull-Rom. * * --When used on binary images, LBB gives results similar to bicubic * Hermite with all first derivatives---but not necessarily the * cross derivatives--at the input pixel locations set to zero. * * --The LBB reconstruction is locally bounded: Over each square * patch, the surface is contained between the minimum and the * maximum values among the 16 nearest input pixel values (those in * the stencil). * * --Consequently, the LBB reconstruction is globally bounded between * the very smallest input pixel value and the very largest input * pixel value. (It is not necessary to clamp results.) * * The LBB method is based on the method of Ken Brodlie, Petros * Mashwama and Sohail Butt for constraining Hermite interpolants * between globally defined planes: * * Visualization of surface data to preserve positivity and other * simple constraints. Computer & Graphics, Vol. 19, Number 4, pages * 585-594, 1995. DOI: 10.1016/0097-8493(95)00036-C. * * Instead of forcing the reconstructed surface to lie between two * GLOBALLY defined planes, LBB constrains one patch at a time to lie * between LOCALLY defined planes. This is accomplished by * constraining the derivatives (x, y and cross) at each input pixel * location so that if the constraint was applied everywhere the * surface would fit between the min and max of the values at the 9 * closest pixel locations. Because this is done with each of the four * pixel locations which define the bicubic patch, this forces the * reconstructed surface to lie between the min and max of the values * at the 16 closest values pixel locations. (Each corner defines its * own 3x3 subgroup of the 4x4 stencil. Consequently, the surface is * necessarily above the minimum of the four minima, which happens to * be the minimum over the 4x4. Similarly with the maxima.) * * The above paragraph described the "soft" version of LBB. The * "sharp" version is similar. */ static inline double lbbicubic( const double c00, const double c10, const double c01, const double c11, const double c00dx, const double c10dx, const double c01dx, const double c11dx, const double c00dy, const double c10dy, const double c01dy, const double c11dy, const double c00dxdy, const double c10dxdy, const double c01dxdy, const double c11dxdy, const double uno_one, const double uno_two, const double uno_thr, const double uno_fou, const double dos_one, const double dos_two, const double dos_thr, const double dos_fou, const double tre_one, const double tre_two, const double tre_thr, const double tre_fou, const double qua_one, const double qua_two, const double qua_thr, const double qua_fou ) { /* * STENCIL (FOOTPRINT) OF INPUT VALUES: * * The stencil of LBB is the same as for any standard Hermite * bicubic (e.g., Catmull-Rom): * * (ix-1,iy-1) (ix,iy-1) (ix+1,iy-1) (ix+2,iy-1) * = uno_one = uno_two = uno_thr = uno_fou * * (ix-1,iy) (ix,iy) (ix+1,iy) (ix+2,iy) * = dos_one = dos_two = dos_thr = dos_fou * X * (ix-1,iy+1) (ix,iy+1) (ix+1,iy+1) (ix+2,iy+1) * = tre_one = tre_two = tre_thr = tre_fou * * (ix-1,iy+2) (ix,iy+2) (ix+1,iy+2) (ix+2,iy+2) * = qua_one = qua_two = qua_thr = qua_fou * * where ix is the (pseudo-)floor of the requested left-to-right * location ("X"), and iy is the floor of the requested up-to-down * location. */ #if defined (__NOHALO_CHEAP_H__) /* * Computation of the four min and four max over 3x3 input data * sub-crosses of the 4x4 input stencil. * * We exploit the fact that the data comes from the (co-monotone) * method Nohalo so that it is known ahead of time that * * dos_thr is between dos_two and dos_fou * * tre_two is between dos_two and qua_two * * tre_fou is between dos_fou and qua_fou * * qua_thr is between qua_two and qua_fou * * tre_thr is in the convex hull of dos_two, dos_fou, qua_two and qua_fou * * to minimize the number of flags and conditional moves. * * (The "between" are not strict: "a between b and c" means * * "min(b,c) <= a <= max(b,c)".) * * We have, however, succeeded in eliminating one flag computation * (one comparison) and one use of an intermediate result. See the * two commented out lines below. * * Overall, only 20 comparisons and 28 "? :" are needed (to compute * 4 mins and 4 maxes). If you can figure how to do this more * efficiently, let us know. */ const double m1 = (uno_two <= tre_two) ? uno_two : tre_two ; const double M1 = (uno_two <= tre_two) ? tre_two : uno_two ; const double m2 = (dos_thr <= qua_thr) ? dos_thr : qua_thr ; const double M2 = (dos_thr <= qua_thr) ? qua_thr : dos_thr ; const double m3 = (dos_two <= dos_fou) ? dos_two : dos_fou ; const double M3 = (dos_two <= dos_fou) ? dos_fou : dos_two ; const double m4 = (uno_thr <= tre_thr) ? uno_thr : tre_thr ; const double M4 = (uno_thr <= tre_thr) ? tre_thr : uno_thr ; const double m5 = (dos_two <= qua_two) ? dos_two : qua_two ; const double M5 = (dos_two <= qua_two) ? qua_two : dos_two ; const double m6 = (tre_one <= tre_thr) ? tre_one : tre_thr ; const double M6 = (tre_one <= tre_thr) ? tre_thr : tre_one ; const double m7 = (dos_one <= dos_thr) ? dos_one : dos_thr ; const double M7 = (dos_one <= dos_thr) ? dos_thr : dos_one ; const double m8 = (tre_two <= tre_fou) ? tre_two : tre_fou ; const double M8 = (tre_two <= tre_fou) ? tre_fou : tre_two ; const double m9 = NOHALO_MIN( m1, dos_two ); const double M9 = NOHALO_MAX( M1, dos_two ); const double m10 = NOHALO_MIN( m2, tre_thr ); const double M10 = NOHALO_MAX( M2, tre_thr ); const double min10 = NOHALO_MIN( m3, m4 ); const double max10 = NOHALO_MAX( M3, M4 ); const double min01 = NOHALO_MIN( m5, m6 ); const double max01 = NOHALO_MAX( M5, M6 ); const double min00 = NOHALO_MIN( m9, m7 ); const double max00 = NOHALO_MAX( M9, M7 ); const double min11 = NOHALO_MIN( m10, m8 ); const double max11 = NOHALO_MAX( M10, M8 ); #else /* * Computation of the four min and four max over 3x3 input data * sub-blocks of the 4x4 input stencil. * * Surprisingly, we have not succeeded in reducing the number of "? * :" needed by using the fact that the data comes from the * (co-monotone) method Nohalo so that it is known ahead of time * that * * dos_thr is between dos_two and dos_fou * * tre_two is between dos_two and qua_two * * tre_fou is between dos_fou and qua_fou * * qua_thr is between qua_two and qua_fou * * tre_thr is in the convex hull of dos_two, dos_fou, qua_two and qua_fou * * to minimize the number of flags and conditional moves. * * (The "between" are not strict: "a between b and c" means * * "min(b,c) <= a <= max(b,c)".) * * We have, however, succeeded in eliminating one flag computation * (one comparison) and one use of an intermediate result. See the * two commented out lines below. * * Overall, only 27 comparisons are needed (to compute 4 mins and 4 * maxes!). Without the simplification, 28 comparisons would be * used. Either way, the number of "? :" used is 34. If you can * figure how to do this more efficiently, let us know. */ const double m1 = (dos_two <= dos_thr) ? dos_two : dos_thr ; const double M1 = (dos_two <= dos_thr) ? dos_thr : dos_two ; const double m2 = (tre_two <= tre_thr) ? tre_two : tre_thr ; const double M2 = (tre_two <= tre_thr) ? tre_thr : tre_two ; const double m4 = (qua_two <= qua_thr) ? qua_two : qua_thr ; const double M4 = (qua_two <= qua_thr) ? qua_thr : qua_two ; const double m3 = (uno_two <= uno_thr) ? uno_two : uno_thr ; const double M3 = (uno_two <= uno_thr) ? uno_thr : uno_two ; const double m5 = NOHALO_MIN( m1, m2 ); const double M5 = NOHALO_MAX( M1, M2 ); const double m6 = (dos_one <= tre_one) ? dos_one : tre_one ; const double M6 = (dos_one <= tre_one) ? tre_one : dos_one ; const double m7 = (dos_fou <= tre_fou) ? dos_fou : tre_fou ; const double M7 = (dos_fou <= tre_fou) ? tre_fou : dos_fou ; const double m13 = (dos_fou <= qua_fou) ? dos_fou : qua_fou ; const double M13 = (dos_fou <= qua_fou) ? qua_fou : dos_fou ; /* * Because the data comes from Nohalo subdivision, the following two * lines can be replaced by the above, simpler, two lines without * changing the results. * * const double m13 = NOHALO_MIN( m7, qua_fou ); * const double M13 = NOHALO_MAX( M7, qua_fou ); * * This also allows reodering the comparisons to put space between * the computation of a result and its use. */ const double m9 = NOHALO_MIN( m5, m4 ); const double M9 = NOHALO_MAX( M5, M4 ); const double m11 = NOHALO_MIN( m6, qua_one ); const double M11 = NOHALO_MAX( M6, qua_one ); const double m10 = NOHALO_MIN( m6, uno_one ); const double M10 = NOHALO_MAX( M6, uno_one ); const double m8 = NOHALO_MIN( m5, m3 ); const double M8 = NOHALO_MAX( M5, M3 ); const double m12 = NOHALO_MIN( m7, uno_fou ); const double M12 = NOHALO_MAX( M7, uno_fou ); const double min11 = NOHALO_MIN( m9, m13 ); const double max11 = NOHALO_MAX( M9, M13 ); const double min01 = NOHALO_MIN( m9, m11 ); const double max01 = NOHALO_MAX( M9, M11 ); const double min00 = NOHALO_MIN( m8, m10 ); const double max00 = NOHALO_MAX( M8, M10 ); const double min10 = NOHALO_MIN( m8, m12 ); const double max10 = NOHALO_MAX( M8, M12 ); #endif /* * The remainder of the "per channel" computation involves the * computation of: * * --8 conditional moves, * * --8 signs (in which the sign of zero is unimportant), * * --12 minima of two values, * * --8 maxima of two values, * * --8 absolute values, * * for a grand total of 29 minima, 25 maxima, 8 conditional moves, 8 * signs, and 8 absolute values. If everything is done with * conditional moves, "only" 28+8+8+12+8+8=72 flags are involved * (because initial min and max can be computed with one flag). * * The "per channel" part of the computation also involves 107 * arithmetic operations (54 *, 21 +, 42 -). */ /* * Distances to the local min and max: */ const double u11 = tre_thr - min11; const double v11 = max11 - tre_thr; const double u01 = tre_two - min01; const double v01 = max01 - tre_two; const double u00 = dos_two - min00; const double v00 = max00 - dos_two; const double u10 = dos_thr - min10; const double v10 = max10 - dos_thr; /* * Initial values of the derivatives computed with centered * differences. Factors of 1/2 are left out because they are folded * in later: */ const double dble_dzdx00i = dos_thr - dos_one; const double dble_dzdy11i = qua_thr - dos_thr; const double dble_dzdx10i = dos_fou - dos_two; const double dble_dzdy01i = qua_two - dos_two; const double dble_dzdx01i = tre_thr - tre_one; const double dble_dzdy10i = tre_thr - uno_thr; const double dble_dzdx11i = tre_fou - tre_two; const double dble_dzdy00i = tre_two - uno_two; /* * Signs of the derivatives. The upcoming clamping does not change * them (except if the clamping sends a negative derivative to 0, in * which case the sign does not matter anyway). */ const double sign_dzdx00 = NOHALO_SIGN( dble_dzdx00i ); const double sign_dzdx10 = NOHALO_SIGN( dble_dzdx10i ); const double sign_dzdx01 = NOHALO_SIGN( dble_dzdx01i ); const double sign_dzdx11 = NOHALO_SIGN( dble_dzdx11i ); const double sign_dzdy00 = NOHALO_SIGN( dble_dzdy00i ); const double sign_dzdy10 = NOHALO_SIGN( dble_dzdy10i ); const double sign_dzdy01 = NOHALO_SIGN( dble_dzdy01i ); const double sign_dzdy11 = NOHALO_SIGN( dble_dzdy11i ); /* * Initial values of the cross-derivatives. Factors of 1/4 are left * out because folded in later: */ const double quad_d2zdxdy00i = uno_one - uno_thr + dble_dzdx01i; const double quad_d2zdxdy10i = uno_two - uno_fou + dble_dzdx11i; const double quad_d2zdxdy01i = qua_thr - qua_one - dble_dzdx00i; const double quad_d2zdxdy11i = qua_fou - qua_two - dble_dzdx10i; /* * Slope limiters. The key multiplier is 3 but we fold a factor of * 2, hence 6: */ const double dble_slopelimit_00 = 6.0 * NOHALO_MIN( u00, v00 ); const double dble_slopelimit_10 = 6.0 * NOHALO_MIN( u10, v10 ); const double dble_slopelimit_01 = 6.0 * NOHALO_MIN( u01, v01 ); const double dble_slopelimit_11 = 6.0 * NOHALO_MIN( u11, v11 ); /* * Clamped first derivatives: */ const double dble_dzdx00 = ( sign_dzdx00 * dble_dzdx00i <= dble_slopelimit_00 ) ? dble_dzdx00i : sign_dzdx00 * dble_slopelimit_00; const double dble_dzdy00 = ( sign_dzdy00 * dble_dzdy00i <= dble_slopelimit_00 ) ? dble_dzdy00i : sign_dzdy00 * dble_slopelimit_00; const double dble_dzdx10 = ( sign_dzdx10 * dble_dzdx10i <= dble_slopelimit_10 ) ? dble_dzdx10i : sign_dzdx10 * dble_slopelimit_10; const double dble_dzdy10 = ( sign_dzdy10 * dble_dzdy10i <= dble_slopelimit_10 ) ? dble_dzdy10i : sign_dzdy10 * dble_slopelimit_10; const double dble_dzdx01 = ( sign_dzdx01 * dble_dzdx01i <= dble_slopelimit_01 ) ? dble_dzdx01i : sign_dzdx01 * dble_slopelimit_01; const double dble_dzdy01 = ( sign_dzdy01 * dble_dzdy01i <= dble_slopelimit_01 ) ? dble_dzdy01i : sign_dzdy01 * dble_slopelimit_01; const double dble_dzdx11 = ( sign_dzdx11 * dble_dzdx11i <= dble_slopelimit_11 ) ? dble_dzdx11i : sign_dzdx11 * dble_slopelimit_11; const double dble_dzdy11 = ( sign_dzdy11 * dble_dzdy11i <= dble_slopelimit_11 ) ? dble_dzdy11i : sign_dzdy11 * dble_slopelimit_11; /* * Sums and differences of first derivatives: */ const double twelve_sum00 = 6.0 * ( dble_dzdx00 + dble_dzdy00 ); const double twelve_dif00 = 6.0 * ( dble_dzdx00 - dble_dzdy00 ); const double twelve_sum10 = 6.0 * ( dble_dzdx10 + dble_dzdy10 ); const double twelve_dif10 = 6.0 * ( dble_dzdx10 - dble_dzdy10 ); const double twelve_sum01 = 6.0 * ( dble_dzdx01 + dble_dzdy01 ); const double twelve_dif01 = 6.0 * ( dble_dzdx01 - dble_dzdy01 ); const double twelve_sum11 = 6.0 * ( dble_dzdx11 + dble_dzdy11 ); const double twelve_dif11 = 6.0 * ( dble_dzdx11 - dble_dzdy11 ); /* * Absolute values of the sums: */ const double twelve_abs_sum00 = NOHALO_ABS( twelve_sum00 ); const double twelve_abs_sum10 = NOHALO_ABS( twelve_sum10 ); const double twelve_abs_sum01 = NOHALO_ABS( twelve_sum01 ); const double twelve_abs_sum11 = NOHALO_ABS( twelve_sum11 ); /* * Scaled distances to the min: */ const double u00_times_36 = 36.0 * u00; const double u10_times_36 = 36.0 * u10; const double u01_times_36 = 36.0 * u01; const double u11_times_36 = 36.0 * u11; /* * First cross-derivative limiter: */ const double first_limit00 = twelve_abs_sum00 - u00_times_36; const double first_limit10 = twelve_abs_sum10 - u10_times_36; const double first_limit01 = twelve_abs_sum01 - u01_times_36; const double first_limit11 = twelve_abs_sum11 - u11_times_36; const double quad_d2zdxdy00ii = NOHALO_MAX( quad_d2zdxdy00i, first_limit00 ); const double quad_d2zdxdy10ii = NOHALO_MAX( quad_d2zdxdy10i, first_limit10 ); const double quad_d2zdxdy01ii = NOHALO_MAX( quad_d2zdxdy01i, first_limit01 ); const double quad_d2zdxdy11ii = NOHALO_MAX( quad_d2zdxdy11i, first_limit11 ); /* * Scaled distances to the max: */ const double v00_times_36 = 36.0 * v00; const double v10_times_36 = 36.0 * v10; const double v01_times_36 = 36.0 * v01; const double v11_times_36 = 36.0 * v11; /* * Second cross-derivative limiter: */ const double second_limit00 = v00_times_36 - twelve_abs_sum00; const double second_limit10 = v10_times_36 - twelve_abs_sum10; const double second_limit01 = v01_times_36 - twelve_abs_sum01; const double second_limit11 = v11_times_36 - twelve_abs_sum11; const double quad_d2zdxdy00iii = NOHALO_MIN( quad_d2zdxdy00ii, second_limit00 ); const double quad_d2zdxdy10iii = NOHALO_MIN( quad_d2zdxdy10ii, second_limit10 ); const double quad_d2zdxdy01iii = NOHALO_MIN( quad_d2zdxdy01ii, second_limit01 ); const double quad_d2zdxdy11iii = NOHALO_MIN( quad_d2zdxdy11ii, second_limit11 ); /* * Absolute values of the differences: */ const double twelve_abs_dif00 = NOHALO_ABS( twelve_dif00 ); const double twelve_abs_dif10 = NOHALO_ABS( twelve_dif10 ); const double twelve_abs_dif01 = NOHALO_ABS( twelve_dif01 ); const double twelve_abs_dif11 = NOHALO_ABS( twelve_dif11 ); /* * Third cross-derivative limiter: */ const double third_limit00 = twelve_abs_dif00 - v00_times_36; const double third_limit10 = twelve_abs_dif10 - v10_times_36; const double third_limit01 = twelve_abs_dif01 - v01_times_36; const double third_limit11 = twelve_abs_dif11 - v11_times_36; const double quad_d2zdxdy00iiii = NOHALO_MAX( quad_d2zdxdy00iii, third_limit00); const double quad_d2zdxdy10iiii = NOHALO_MAX( quad_d2zdxdy10iii, third_limit10); const double quad_d2zdxdy01iiii = NOHALO_MAX( quad_d2zdxdy01iii, third_limit01); const double quad_d2zdxdy11iiii = NOHALO_MAX( quad_d2zdxdy11iii, third_limit11); /* * Fourth cross-derivative limiter: */ const double fourth_limit00 = u00_times_36 - twelve_abs_dif00; const double fourth_limit10 = u10_times_36 - twelve_abs_dif10; const double fourth_limit01 = u01_times_36 - twelve_abs_dif01; const double fourth_limit11 = u11_times_36 - twelve_abs_dif11; const double quad_d2zdxdy00 = NOHALO_MIN( quad_d2zdxdy00iiii, fourth_limit00); const double quad_d2zdxdy10 = NOHALO_MIN( quad_d2zdxdy10iiii, fourth_limit10); const double quad_d2zdxdy01 = NOHALO_MIN( quad_d2zdxdy01iiii, fourth_limit01); const double quad_d2zdxdy11 = NOHALO_MIN( quad_d2zdxdy11iiii, fourth_limit11); /* * Part of the result which does not need derivatives: */ const double newval1 = c00 * dos_two + c10 * dos_thr + c01 * tre_two + c11 * tre_thr; /* * Twice the part of the result which only needs first derivatives. */ const double newval2 = c00dx * dble_dzdx00 + c10dx * dble_dzdx10 + c01dx * dble_dzdx01 + c11dx * dble_dzdx11 + c00dy * dble_dzdy00 + c10dy * dble_dzdy10 + c01dy * dble_dzdy01 + c11dy * dble_dzdy11; /* * Four times the part of the result which only uses cross * derivatives: */ const double newval3 = c00dxdy * quad_d2zdxdy00 + c10dxdy * quad_d2zdxdy10 + c01dxdy * quad_d2zdxdy01 + c11dxdy * quad_d2zdxdy11; const double newval = newval1 + .5 * newval2 + .25 * newval3; return newval; } /* * Call Nohalo+LBB with a careful type conversion as a parameter. * * It would be nice to do this with templates somehow---for one thing * this would allow code comments!---but we can't figure a clean way * to do it. */ #define NOHALO_CONVERSION( conversion ) \ template static void inline \ nohalo_ ## conversion( void* restrict pout, \ const void* restrict pin, \ const int bands, \ const int lskip, \ const double x_0, \ const double y_0 ) \ { \ T* restrict out = (T *) pout; \ \ const T* restrict in = (T *) pin; \ \ \ const int sign_of_x_0 = 2 * ( x_0 >= 0. ) - 1; \ const int sign_of_y_0 = 2 * ( y_0 >= 0. ) - 1; \ \ \ const int shift_forw_1_pix = sign_of_x_0 * bands; \ const int shift_forw_1_row = sign_of_y_0 * lskip; \ \ const int shift_back_1_pix = -shift_forw_1_pix; \ const int shift_back_1_row = -shift_forw_1_row; \ \ const int shift_back_2_pix = 2 * shift_back_1_pix; \ const int shift_back_2_row = 2 * shift_back_1_row; \ const int shift_forw_2_pix = 2 * shift_forw_1_pix; \ const int shift_forw_2_row = 2 * shift_forw_1_row; \ \ \ const int uno_two_shift = shift_back_1_pix + shift_back_2_row; \ const int uno_thr_shift = shift_back_2_row; \ const int uno_fou_shift = shift_forw_1_pix + shift_back_2_row; \ \ const int dos_one_shift = shift_back_2_pix + shift_back_1_row; \ const int dos_two_shift = shift_back_1_pix + shift_back_1_row; \ const int dos_thr_shift = shift_back_1_row; \ const int dos_fou_shift = shift_forw_1_pix + shift_back_1_row; \ const int dos_fiv_shift = shift_forw_2_pix + shift_back_1_row; \ \ const int tre_one_shift = shift_back_2_pix; \ const int tre_two_shift = shift_back_1_pix; \ const int tre_thr_shift = 0; \ const int tre_fou_shift = shift_forw_1_pix; \ const int tre_fiv_shift = shift_forw_2_pix; \ \ const int qua_one_shift = shift_back_2_pix + shift_forw_1_row; \ const int qua_two_shift = shift_back_1_pix + shift_forw_1_row; \ const int qua_thr_shift = shift_forw_1_row; \ const int qua_fou_shift = shift_forw_1_pix + shift_forw_1_row; \ const int qua_fiv_shift = shift_forw_2_pix + shift_forw_1_row; \ \ const int cin_two_shift = shift_back_1_pix + shift_forw_2_row; \ const int cin_thr_shift = shift_forw_2_row; \ const int cin_fou_shift = shift_forw_1_pix + shift_forw_2_row; \ \ \ const double xp1over2 = ( 2 * sign_of_x_0 ) * x_0; \ const double xm1over2 = xp1over2 - 1.0; \ const double onepx = 0.5 + xp1over2; \ const double onemx = 1.5 - xp1over2; \ const double xp1over2sq = xp1over2 * xp1over2; \ \ const double yp1over2 = ( 2 * sign_of_y_0 ) * y_0; \ const double ym1over2 = yp1over2 - 1.0; \ const double onepy = 0.5 + yp1over2; \ const double onemy = 1.5 - yp1over2; \ const double yp1over2sq = yp1over2 * yp1over2; \ \ const double xm1over2sq = xm1over2 * xm1over2; \ const double ym1over2sq = ym1over2 * ym1over2; \ \ const double twice1px = onepx + onepx; \ const double twice1py = onepy + onepy; \ const double twice1mx = onemx + onemx; \ const double twice1my = onemy + onemy; \ \ const double xm1over2sq_times_ym1over2sq = xm1over2sq * ym1over2sq; \ const double xp1over2sq_times_ym1over2sq = xp1over2sq * ym1over2sq; \ const double xp1over2sq_times_yp1over2sq = xp1over2sq * yp1over2sq; \ const double xm1over2sq_times_yp1over2sq = xm1over2sq * yp1over2sq; \ \ const double four_times_1px_times_1py = twice1px * twice1py; \ const double four_times_1mx_times_1py = twice1mx * twice1py; \ const double twice_xp1over2_times_1py = xp1over2 * twice1py; \ const double twice_xm1over2_times_1py = xm1over2 * twice1py; \ \ const double twice_xm1over2_times_1my = xm1over2 * twice1my; \ const double twice_xp1over2_times_1my = xp1over2 * twice1my; \ const double four_times_1mx_times_1my = twice1mx * twice1my; \ const double four_times_1px_times_1my = twice1px * twice1my; \ \ const double twice_1px_times_ym1over2 = twice1px * ym1over2; \ const double twice_1mx_times_ym1over2 = twice1mx * ym1over2; \ const double xp1over2_times_ym1over2 = xp1over2 * ym1over2; \ const double xm1over2_times_ym1over2 = xm1over2 * ym1over2; \ \ const double xm1over2_times_yp1over2 = xm1over2 * yp1over2; \ const double xp1over2_times_yp1over2 = xp1over2 * yp1over2; \ const double twice_1mx_times_yp1over2 = twice1mx * yp1over2; \ const double twice_1px_times_yp1over2 = twice1px * yp1over2; \ \ \ const double c00 = \ four_times_1px_times_1py * xm1over2sq_times_ym1over2sq; \ const double c00dx = \ twice_xp1over2_times_1py * xm1over2sq_times_ym1over2sq; \ const double c00dy = \ twice_1px_times_yp1over2 * xm1over2sq_times_ym1over2sq; \ const double c00dxdy = \ xp1over2_times_yp1over2 * xm1over2sq_times_ym1over2sq; \ \ const double c10 = \ four_times_1mx_times_1py * xp1over2sq_times_ym1over2sq; \ const double c10dx = \ twice_xm1over2_times_1py * xp1over2sq_times_ym1over2sq; \ const double c10dy = \ twice_1mx_times_yp1over2 * xp1over2sq_times_ym1over2sq; \ const double c10dxdy = \ xm1over2_times_yp1over2 * xp1over2sq_times_ym1over2sq; \ \ const double c01 = \ four_times_1px_times_1my * xm1over2sq_times_yp1over2sq; \ const double c01dx = \ twice_xp1over2_times_1my * xm1over2sq_times_yp1over2sq; \ const double c01dy = \ twice_1px_times_ym1over2 * xm1over2sq_times_yp1over2sq; \ const double c01dxdy = \ xp1over2_times_ym1over2 * xm1over2sq_times_yp1over2sq; \ \ const double c11 = \ four_times_1mx_times_1my * xp1over2sq_times_yp1over2sq; \ const double c11dx = \ twice_xm1over2_times_1my * xp1over2sq_times_yp1over2sq; \ const double c11dy = \ twice_1mx_times_ym1over2 * xp1over2sq_times_yp1over2sq; \ const double c11dxdy = \ xm1over2_times_ym1over2 * xp1over2sq_times_yp1over2sq; \ \ \ int band = bands; \ \ \ do \ { \ double uno_one, uno_two, uno_thr, uno_fou; \ double dos_one, dos_two, dos_thr, dos_fou; \ double tre_one, tre_two, tre_thr, tre_fou; \ double qua_one, qua_two, qua_thr, qua_fou; \ \ nohalo_subdivision( in[ uno_two_shift ], \ in[ uno_thr_shift ], \ in[ uno_fou_shift ], \ in[ dos_one_shift ], \ in[ dos_two_shift ], \ in[ dos_thr_shift ], \ in[ dos_fou_shift ], \ in[ dos_fiv_shift ], \ in[ tre_one_shift ], \ in[ tre_two_shift ], \ in[ tre_thr_shift ], \ in[ tre_fou_shift ], \ in[ tre_fiv_shift ], \ in[ qua_one_shift ], \ in[ qua_two_shift ], \ in[ qua_thr_shift ], \ in[ qua_fou_shift ], \ in[ qua_fiv_shift ], \ in[ cin_two_shift ], \ in[ cin_thr_shift ], \ in[ cin_fou_shift ], \ &uno_one, \ &uno_two, \ &uno_thr, \ &uno_fou, \ &dos_one, \ &dos_two, \ &dos_thr, \ &dos_fou, \ &tre_one, \ &tre_two, \ &tre_thr, \ &tre_fou, \ &qua_one, \ &qua_two, \ &qua_thr, \ &qua_fou ); \ \ const double double_result = \ lbbicubic( c00, \ c10, \ c01, \ c11, \ c00dx, \ c10dx, \ c01dx, \ c11dx, \ c00dy, \ c10dy, \ c01dy, \ c11dy, \ c00dxdy, \ c10dxdy, \ c01dxdy, \ c11dxdy, \ uno_one, \ uno_two, \ uno_thr, \ uno_fou, \ dos_one, \ dos_two, \ dos_thr, \ dos_fou, \ tre_one, \ tre_two, \ tre_thr, \ tre_fou, \ qua_one, \ qua_two, \ qua_thr, \ qua_fou ); \ \ { \ const T result = to_ ## conversion( double_result ); \ in++; \ *out++ = result; \ } \ \ } while (--band); \ } NOHALO_CONVERSION( fptypes ) NOHALO_CONVERSION( withsign ) NOHALO_CONVERSION( nosign ) #define CALL( T, conversion ) \ nohalo_ ## conversion( out, \ p, \ bands, \ lskip, \ relative_x, \ relative_y ); /* * We need C linkage: */ extern "C" { G_DEFINE_TYPE( VipsInterpolateNohalo, vips_interpolate_nohalo, VIPS_TYPE_INTERPOLATE ); } static void vips_interpolate_nohalo_interpolate( VipsInterpolate* restrict interpolate, void* restrict out, VipsRegion* restrict in, double absolute_x, double absolute_y ) { /* absolute_x and absolute_y are always >= 2.0 (see double-check assert * below), so we don't need floor(). * * It's 2 not 0 since we ask for a window_offset of 2 at the bottom. */ const int ix = (int) absolute_x; const int iy = (int) absolute_y; /* * Move the pointer to (the first band of) the top/left pixel of the * 2x2 group of pixel centers which contains the sampling location * in its convex hull: */ const VipsPel* restrict p = VIPS_REGION_ADDR( in, ix, iy ); const double relative_x = absolute_x - ix; const double relative_y = absolute_y - iy; /* * VIPS versions of Nicolas's pixel addressing values. */ const int lskip = VIPS_REGION_LSKIP( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in->im ); /* * Double the bands for complex images to account for the real and * imaginary parts being computed independently: */ const int actual_bands = in->im->Bands; const int bands = vips_band_format_iscomplex( in->im->BandFmt ) ? 2 * actual_bands : actual_bands; g_assert( ix - 2 >= in->valid.left ); g_assert( iy - 2 >= in->valid.top ); g_assert( ix + 2 < VIPS_RECT_RIGHT( &in->valid ) ); g_assert( iy + 2 < VIPS_RECT_BOTTOM( &in->valid ) ); /* Confirm that absolute_x and absolute_y are >= 2, see above. */ g_assert( absolute_x >= 2.0 ); g_assert( absolute_y >= 2.0 ); switch( in->im->BandFmt ) { case VIPS_FORMAT_UCHAR: CALL( unsigned char, nosign ); break; case VIPS_FORMAT_CHAR: CALL( signed char, withsign ); break; case VIPS_FORMAT_USHORT: CALL( unsigned short, nosign ); break; case VIPS_FORMAT_SHORT: CALL( signed short, withsign ); break; case VIPS_FORMAT_UINT: CALL( unsigned int, nosign ); break; case VIPS_FORMAT_INT: CALL( signed int, withsign ); break; /* * Complex images are handled by doubling of bands. */ case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CALL( float, fptypes ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CALL( double, fptypes ); break; default: g_assert( 0 ); break; } } static void vips_interpolate_nohalo_class_init( VipsInterpolateNohaloClass *klass ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( klass ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( klass ); object_class->nickname = "nohalo"; object_class->description = _( "edge sharpening resampler with halo reduction" ); interpolate_class->interpolate = vips_interpolate_nohalo_interpolate; interpolate_class->window_size = 5; interpolate_class->window_offset = 2; } static void vips_interpolate_nohalo_init( VipsInterpolateNohalo *nohalo ) { } vips-8.2.2/libvips/resample/lbb.cpp0000664000175000017500000010221512624313241014151 00000000000000/* lbb (locally bounded bicubic) resampler * * N. Robidoux, C. Racette and J. Cupitt, 23-28/03/2010 * * N. Robidoux, 16-19/05/2010 * * N. Robidoux, 22/11/2011 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * 2010 (c) Nicolas Robidoux, Chantal Racette, John Cupitt. * * N. Robidoux thanks Adam Turcotte, Geert Jordaens, Ralf Meyer, * Øyvind KolÃ¥s, Minglun Gong, Eric Daoust and Sven Neumann for useful * comments and code. * * C. Racette's image resampling research and programming funded in * part by an NSERC (National Science and Engineering Research Council * of Canada) Alexander Graham Bell Canada Graduate Scholarship, by an * NSERC Discovery Grant awarded to Julien Dompierre (grant number * 20-61098) and by N. Robidoux's Laurentian University professional * allowance. */ /* * LBB has two versions: * * A "soft" version, which shows a little less staircasing and a * little more haloing, and which is a little more expensive to * compute. We recommend this as the default. * * A "sharp" version, which shows a little more staircasing and a * little less haloing, which is a little cheaper (it uses 6 less * comparisons and 12 less "? :"). * * The only difference between the two is that the "soft" versions * uses local minima and maxima computed over 3x3 square blocks, and * the "sharp" version uses local minima and maxima computed over 3x3 * crosses. * * If you want to use the "sharp" version, comment out the following * three pre-processor code lines: */ /* #ifndef __LBB_CHEAP_H__ #define __LBB_CHEAP_H__ #endif */ /* * LBB (Locally Bounded Bicubic) is a high quality nonlinear variant * of Catmull-Rom. Images resampled with LBB have much smaller halos * than images resampled with windowed sincs or other interpolatory * cubic spline filters. Specifically, LBB halos are narrower and the * over/undershoot amplitude is smaller. This is accomplished without * significantly affecting the smoothness of the result (compared to * Catmull-Rom). * * Another important property is that the resampled values are * contained within the range of nearby input values. Consequently, no * final clamping is needed to stay "in range" (e.g., 0-255 for * standard 8-bit images). * * LBB was developed by N. Robidoux and C. Racette at the Department * of Mathematics and Computer Science of Laurentian University in the * course of C. Racette's Masters thesis in Computational * Sciences. Preliminary work directly leading to the LBB method and * code was performed by C. Racette and N. Robidoux in the course of * her honours thesis, and by N. Robidoux, A. Turcotte and E. Daoust * during Google Summer of Code 2009 (through two awards made to GIMP * to improve GEGL). * * LBB is a novel method with the following properties: * * --LBB is a Hermite bicubic method: The bicubic surface is defined, * one convex hull of four nearby input points at a time, using four * point values, four x-derivatives, four y-derivatives, and four * cross-derivatives. * * --The stencil for values in a square patch is the usual 4x4. * * --LBB is interpolatory. * * --It is C^1 with continuous cross derivatives. * * --When the limiters are inactive, LBB gives the same result as * Catmull-Rom. * * --When used on binary images, LBB gives results similar to bicubic * Hermite with all first derivatives---but not necessarily the * cross derivatives (this last assertion needs to be double * checked)--at input pixel locations set to zero. * * --The LBB reconstruction is locally bounded: Over each square * patch, the surface is contained between the minimum and the * maximum of the 16 nearest input pixel values. * * --Consequently, the LBB reconstruction is globally bounded between * the very smallest input pixel value and the very largest input * pixel value. It is not necessary to clamp results. * * The LBB method is based on the method of Ken Brodlie, Petros * Mashwama and Sohail Butt for constraining Hermite interpolants * between globally defined planes: * * Visualization of surface data to preserve positivity and other * simple constraints. Computer & Graphics, Vol. 19, Number 4, pages * 585-594, 1995. DOI: 10.1016/0097-8493(95)00036-C. * * Instead of forcing the reconstructed surface to lie between two * GLOBALLY defined planes, LBB constrains one patch at a time to lie * between LOCALLY defined planes. This is accomplished by * constraining the derivatives (x, y and cross) at each input pixel * location so that if the constraint was applied everywhere the * surface would fit between the min and max of the values at the 9 * closest pixel locations. Because this is done with each of the four * pixel locations which define the bicubic patch, this forces the * reconstructed surface to lie between the min and max of the values * at the 16 closest values pixel locations. (Each corner defines its * own 3x3 subgroup of the 4x4 stencil. Consequently, the surface is * necessarily above the minimum of the four minima, which happens to * be the minimum over the 4x4. Similarly with the maxima.) * * The above paragraph described the "soft" version of LBB. The * "sharp" version is similar. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "templates.h" #define VIPS_TYPE_INTERPOLATE_LBB \ (vips_interpolate_lbb_get_type()) #define VIPS_INTERPOLATE_LBB( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_LBB, VipsInterpolateLbb )) #define VIPS_INTERPOLATE_LBB_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_LBB, VipsInterpolateLbbClass)) #define VIPS_IS_INTERPOLATE_LBB( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_LBB )) #define VIPS_IS_INTERPOLATE_LBB_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_LBB )) #define VIPS_INTERPOLATE_LBB_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_LBB, VipsInterpolateLbbClass )) typedef struct _VipsInterpolateLbb { VipsInterpolate parent_object; } VipsInterpolateLbb; typedef struct _VipsInterpolateLbbClass { VipsInterpolateClass parent_class; } VipsInterpolateLbbClass; /* * Absolute value and sign macros: */ #define LBB_ABS(x) ( ((x)>=0.) ? (x) : -(x) ) #define LBB_SIGN(x) ( ((x)>=0.) ? 1.0 : -1.0 ) /* * MIN and MAX macros set up so that I can put the likely winner in * the first argument (forward branch likely blah blah blah): */ #define LBB_MIN(x,y) ( ((x)<=(y)) ? (x) : (y) ) #define LBB_MAX(x,y) ( ((x)>=(y)) ? (x) : (y) ) static inline double lbbicubic( const double c00, const double c10, const double c01, const double c11, const double c00dx, const double c10dx, const double c01dx, const double c11dx, const double c00dy, const double c10dy, const double c01dy, const double c11dy, const double c00dxdy, const double c10dxdy, const double c01dxdy, const double c11dxdy, const double uno_one, const double uno_two, const double uno_thr, const double uno_fou, const double dos_one, const double dos_two, const double dos_thr, const double dos_fou, const double tre_one, const double tre_two, const double tre_thr, const double tre_fou, const double qua_one, const double qua_two, const double qua_thr, const double qua_fou ) { /* * STENCIL (FOOTPRINT) OF INPUT VALUES: * * The stencil of LBB is the same as for any standard Hermite * bicubic (e.g., Catmull-Rom): * * (ix-1,iy-1) (ix,iy-1) (ix+1,iy-1) (ix+2,iy-1) * = uno_one = uno_two = uno_thr = uno_fou * * (ix-1,iy) (ix,iy) (ix+1,iy) (ix+2,iy) * = dos_one = dos_two = dos_thr = dos_fou * X * (ix-1,iy+1) (ix,iy+1) (ix+1,iy+1) (ix+2,iy+1) * = tre_one = tre_two = tre_thr = tre_fou * * (ix-1,iy+2) (ix,iy+2) (ix+1,iy+2) (ix+2,iy+2) * = qua_one = qua_two = qua_thr = qua_fou * * where ix is the (pseudo-)floor of the requested left-to-right * location ("X"), and iy is the floor of the requested up-to-down * location. */ #if defined (__LBB_CHEAP_H__) /* * Computation of the four min and four max over 3x3 input data * sub-crosses of the 4x4 input stencil, performed with only 22 * comparisons and 28 "? :". If you can figure out how to do this * more efficiently, let us know. * * This is the cheaper (but arguably less desirable in terms of * quality) version of the computation. */ const double m1 = (dos_two <= dos_thr) ? dos_two : dos_thr ; const double M1 = (dos_two <= dos_thr) ? dos_thr : dos_two ; const double m2 = (tre_two <= tre_thr) ? tre_two : tre_thr ; const double M2 = (tre_two <= tre_thr) ? tre_thr : tre_two ; const double m3 = (uno_two <= dos_one) ? uno_two : dos_one ; const double M3 = (uno_two <= dos_one) ? dos_one : uno_two ; const double m4 = (uno_thr <= dos_fou) ? uno_thr : dos_fou ; const double M4 = (uno_thr <= dos_fou) ? dos_fou : uno_thr ; const double m5 = (tre_one <= qua_two) ? tre_one : qua_two ; const double M5 = (tre_one <= qua_two) ? qua_two : tre_one ; const double m6 = (tre_fou <= qua_thr) ? tre_fou : qua_thr ; const double M6 = (tre_fou <= qua_thr) ? qua_thr : tre_fou ; const double m7 = LBB_MIN( m1, tre_two ); const double M7 = LBB_MAX( M1, tre_two ); const double m8 = LBB_MIN( m1, tre_thr ); const double M8 = LBB_MAX( M1, tre_thr ); const double m9 = LBB_MIN( m2, dos_two ); const double M9 = LBB_MAX( M2, dos_two ); const double m10 = LBB_MIN( m2, dos_thr ); const double M10 = LBB_MAX( M2, dos_thr ); const double min00 = LBB_MIN( m7, m3 ); const double max00 = LBB_MAX( M7, M3 ); const double min10 = LBB_MIN( m8, m4 ); const double max10 = LBB_MAX( M8, M4 ); const double min01 = LBB_MIN( m9, m5 ); const double max01 = LBB_MAX( M9, M5 ); const double min11 = LBB_MIN( m10, m6 ); const double max11 = LBB_MAX( M10, M6 ); #else /* * Computation of the four min and four max over 3x3 input data * sub-blocks of the 4x4 input stencil, performed with only 28 * comparisons and 34 "? :". If you can figure how to do this more * efficiently, let us know. */ const double m1 = (dos_two <= dos_thr) ? dos_two : dos_thr ; const double M1 = (dos_two <= dos_thr) ? dos_thr : dos_two ; const double m2 = (tre_two <= tre_thr) ? tre_two : tre_thr ; const double M2 = (tre_two <= tre_thr) ? tre_thr : tre_two ; const double m6 = (dos_one <= tre_one) ? dos_one : tre_one ; const double M6 = (dos_one <= tre_one) ? tre_one : dos_one ; const double m7 = (dos_fou <= tre_fou) ? dos_fou : tre_fou ; const double M7 = (dos_fou <= tre_fou) ? tre_fou : dos_fou ; const double m3 = (uno_two <= uno_thr) ? uno_two : uno_thr ; const double M3 = (uno_two <= uno_thr) ? uno_thr : uno_two ; const double m4 = (qua_two <= qua_thr) ? qua_two : qua_thr ; const double M4 = (qua_two <= qua_thr) ? qua_thr : qua_two ; const double m5 = LBB_MIN( m1, m2 ); const double M5 = LBB_MAX( M1, M2 ); const double m10 = LBB_MIN( m6, uno_one ); const double M10 = LBB_MAX( M6, uno_one ); const double m11 = LBB_MIN( m6, qua_one ); const double M11 = LBB_MAX( M6, qua_one ); const double m12 = LBB_MIN( m7, uno_fou ); const double M12 = LBB_MAX( M7, uno_fou ); const double m13 = LBB_MIN( m7, qua_fou ); const double M13 = LBB_MAX( M7, qua_fou ); const double m8 = LBB_MIN( m5, m3 ); const double M8 = LBB_MAX( M5, M3 ); const double m9 = LBB_MIN( m5, m4 ); const double M9 = LBB_MAX( M5, M4 ); const double min00 = LBB_MIN( m8, m10 ); const double max00 = LBB_MAX( M8, M10 ); const double min10 = LBB_MIN( m8, m12 ); const double max10 = LBB_MAX( M8, M12 ); const double min01 = LBB_MIN( m9, m11 ); const double max01 = LBB_MAX( M9, M11 ); const double min11 = LBB_MIN( m9, m13 ); const double max11 = LBB_MAX( M9, M13 ); #endif /* * The remainder of the "per channel" computation involves the * computation of: * * --8 conditional moves, * * --8 signs (in which the sign of zero is unimportant), * * --12 minima of two values, * * --8 maxima of two values, * * --8 absolute values, * * for a grand total of 29 minima, 25 maxima, 8 conditional moves, 8 * signs, and 8 absolute values. If everything is done with * conditional moves, "only" 28+8+8+12+8+8=72 flags are involved * (because initial min and max can be computed with one flag). * * The "per channel" part of the computation also involves 107 * arithmetic operations (54 *, 21 +, 42 -). */ /* * Distances to the local min and max: */ const double u00 = dos_two - min00; const double v00 = max00 - dos_two; const double u10 = dos_thr - min10; const double v10 = max10 - dos_thr; const double u01 = tre_two - min01; const double v01 = max01 - tre_two; const double u11 = tre_thr - min11; const double v11 = max11 - tre_thr; /* * Initial values of the derivatives computed with centered * differences. Factors of 1/2 are left out because they are folded * in later: */ const double dble_dzdx00i = dos_thr - dos_one; const double dble_dzdy11i = qua_thr - dos_thr; const double dble_dzdx10i = dos_fou - dos_two; const double dble_dzdy01i = qua_two - dos_two; const double dble_dzdx01i = tre_thr - tre_one; const double dble_dzdy10i = tre_thr - uno_thr; const double dble_dzdx11i = tre_fou - tre_two; const double dble_dzdy00i = tre_two - uno_two; /* * Signs of the derivatives. The upcoming clamping does not change * them (except if the clamping sends a negative derivative to 0, in * which case the sign does not matter anyway). */ const double sign_dzdx00 = LBB_SIGN( dble_dzdx00i ); const double sign_dzdx10 = LBB_SIGN( dble_dzdx10i ); const double sign_dzdx01 = LBB_SIGN( dble_dzdx01i ); const double sign_dzdx11 = LBB_SIGN( dble_dzdx11i ); const double sign_dzdy00 = LBB_SIGN( dble_dzdy00i ); const double sign_dzdy10 = LBB_SIGN( dble_dzdy10i ); const double sign_dzdy01 = LBB_SIGN( dble_dzdy01i ); const double sign_dzdy11 = LBB_SIGN( dble_dzdy11i ); /* * Initial values of the cross-derivatives. Factors of 1/4 are left * out because folded in later: */ const double quad_d2zdxdy00i = uno_one - uno_thr + dble_dzdx01i; const double quad_d2zdxdy10i = uno_two - uno_fou + dble_dzdx11i; const double quad_d2zdxdy01i = qua_thr - qua_one - dble_dzdx00i; const double quad_d2zdxdy11i = qua_fou - qua_two - dble_dzdx10i; /* * Slope limiters. The key multiplier is 3 but we fold a factor of * 2, hence 6: */ const double dble_slopelimit_00 = 6.0 * LBB_MIN( u00, v00 ); const double dble_slopelimit_10 = 6.0 * LBB_MIN( u10, v10 ); const double dble_slopelimit_01 = 6.0 * LBB_MIN( u01, v01 ); const double dble_slopelimit_11 = 6.0 * LBB_MIN( u11, v11 ); /* * Clamped first derivatives: */ const double dble_dzdx00 = ( sign_dzdx00 * dble_dzdx00i <= dble_slopelimit_00 ) ? dble_dzdx00i : sign_dzdx00 * dble_slopelimit_00; const double dble_dzdy00 = ( sign_dzdy00 * dble_dzdy00i <= dble_slopelimit_00 ) ? dble_dzdy00i : sign_dzdy00 * dble_slopelimit_00; const double dble_dzdx10 = ( sign_dzdx10 * dble_dzdx10i <= dble_slopelimit_10 ) ? dble_dzdx10i : sign_dzdx10 * dble_slopelimit_10; const double dble_dzdy10 = ( sign_dzdy10 * dble_dzdy10i <= dble_slopelimit_10 ) ? dble_dzdy10i : sign_dzdy10 * dble_slopelimit_10; const double dble_dzdx01 = ( sign_dzdx01 * dble_dzdx01i <= dble_slopelimit_01 ) ? dble_dzdx01i : sign_dzdx01 * dble_slopelimit_01; const double dble_dzdy01 = ( sign_dzdy01 * dble_dzdy01i <= dble_slopelimit_01 ) ? dble_dzdy01i : sign_dzdy01 * dble_slopelimit_01; const double dble_dzdx11 = ( sign_dzdx11 * dble_dzdx11i <= dble_slopelimit_11 ) ? dble_dzdx11i : sign_dzdx11 * dble_slopelimit_11; const double dble_dzdy11 = ( sign_dzdy11 * dble_dzdy11i <= dble_slopelimit_11 ) ? dble_dzdy11i : sign_dzdy11 * dble_slopelimit_11; /* * Sums and differences of first derivatives: */ const double twelve_sum00 = 6.0 * ( dble_dzdx00 + dble_dzdy00 ); const double twelve_dif00 = 6.0 * ( dble_dzdx00 - dble_dzdy00 ); const double twelve_sum10 = 6.0 * ( dble_dzdx10 + dble_dzdy10 ); const double twelve_dif10 = 6.0 * ( dble_dzdx10 - dble_dzdy10 ); const double twelve_sum01 = 6.0 * ( dble_dzdx01 + dble_dzdy01 ); const double twelve_dif01 = 6.0 * ( dble_dzdx01 - dble_dzdy01 ); const double twelve_sum11 = 6.0 * ( dble_dzdx11 + dble_dzdy11 ); const double twelve_dif11 = 6.0 * ( dble_dzdx11 - dble_dzdy11 ); /* * Absolute values of the sums: */ const double twelve_abs_sum00 = LBB_ABS( twelve_sum00 ); const double twelve_abs_sum10 = LBB_ABS( twelve_sum10 ); const double twelve_abs_sum01 = LBB_ABS( twelve_sum01 ); const double twelve_abs_sum11 = LBB_ABS( twelve_sum11 ); /* * Scaled distances to the min: */ const double u00_times_36 = 36.0 * u00; const double u10_times_36 = 36.0 * u10; const double u01_times_36 = 36.0 * u01; const double u11_times_36 = 36.0 * u11; /* * First cross-derivative limiter: */ const double first_limit00 = twelve_abs_sum00 - u00_times_36; const double first_limit10 = twelve_abs_sum10 - u10_times_36; const double first_limit01 = twelve_abs_sum01 - u01_times_36; const double first_limit11 = twelve_abs_sum11 - u11_times_36; const double quad_d2zdxdy00ii = LBB_MAX( quad_d2zdxdy00i, first_limit00 ); const double quad_d2zdxdy10ii = LBB_MAX( quad_d2zdxdy10i, first_limit10 ); const double quad_d2zdxdy01ii = LBB_MAX( quad_d2zdxdy01i, first_limit01 ); const double quad_d2zdxdy11ii = LBB_MAX( quad_d2zdxdy11i, first_limit11 ); /* * Scaled distances to the max: */ const double v00_times_36 = 36.0 * v00; const double v10_times_36 = 36.0 * v10; const double v01_times_36 = 36.0 * v01; const double v11_times_36 = 36.0 * v11; /* * Second cross-derivative limiter: */ const double second_limit00 = v00_times_36 - twelve_abs_sum00; const double second_limit10 = v10_times_36 - twelve_abs_sum10; const double second_limit01 = v01_times_36 - twelve_abs_sum01; const double second_limit11 = v11_times_36 - twelve_abs_sum11; const double quad_d2zdxdy00iii = LBB_MIN( quad_d2zdxdy00ii, second_limit00 ); const double quad_d2zdxdy10iii = LBB_MIN( quad_d2zdxdy10ii, second_limit10 ); const double quad_d2zdxdy01iii = LBB_MIN( quad_d2zdxdy01ii, second_limit01 ); const double quad_d2zdxdy11iii = LBB_MIN( quad_d2zdxdy11ii, second_limit11 ); /* * Absolute values of the differences: */ const double twelve_abs_dif00 = LBB_ABS( twelve_dif00 ); const double twelve_abs_dif10 = LBB_ABS( twelve_dif10 ); const double twelve_abs_dif01 = LBB_ABS( twelve_dif01 ); const double twelve_abs_dif11 = LBB_ABS( twelve_dif11 ); /* * Third cross-derivative limiter: */ const double third_limit00 = twelve_abs_dif00 - v00_times_36; const double third_limit10 = twelve_abs_dif10 - v10_times_36; const double third_limit01 = twelve_abs_dif01 - v01_times_36; const double third_limit11 = twelve_abs_dif11 - v11_times_36; const double quad_d2zdxdy00iiii = LBB_MAX( quad_d2zdxdy00iii, third_limit00); const double quad_d2zdxdy10iiii = LBB_MAX( quad_d2zdxdy10iii, third_limit10); const double quad_d2zdxdy01iiii = LBB_MAX( quad_d2zdxdy01iii, third_limit01); const double quad_d2zdxdy11iiii = LBB_MAX( quad_d2zdxdy11iii, third_limit11); /* * Fourth cross-derivative limiter: */ const double fourth_limit00 = u00_times_36 - twelve_abs_dif00; const double fourth_limit10 = u10_times_36 - twelve_abs_dif10; const double fourth_limit01 = u01_times_36 - twelve_abs_dif01; const double fourth_limit11 = u11_times_36 - twelve_abs_dif11; const double quad_d2zdxdy00 = LBB_MIN( quad_d2zdxdy00iiii, fourth_limit00); const double quad_d2zdxdy10 = LBB_MIN( quad_d2zdxdy10iiii, fourth_limit10); const double quad_d2zdxdy01 = LBB_MIN( quad_d2zdxdy01iiii, fourth_limit01); const double quad_d2zdxdy11 = LBB_MIN( quad_d2zdxdy11iiii, fourth_limit11); /* * Part of the result which does not need derivatives: */ const double newval1 = c00 * dos_two + c10 * dos_thr + c01 * tre_two + c11 * tre_thr; /* * Twice the part of the result which only needs first derivatives. */ const double newval2 = c00dx * dble_dzdx00 + c10dx * dble_dzdx10 + c01dx * dble_dzdx01 + c11dx * dble_dzdx11 + c00dy * dble_dzdy00 + c10dy * dble_dzdy10 + c01dy * dble_dzdy01 + c11dy * dble_dzdy11; /* * Four times the part of the result which only uses cross * derivatives: */ const double newval3 = c00dxdy * quad_d2zdxdy00 + c10dxdy * quad_d2zdxdy10 + c01dxdy * quad_d2zdxdy01 + c11dxdy * quad_d2zdxdy11; const double newval = newval1 + .5 * newval2 + .25 * newval3; return newval; } /* * Call lbb with a type conversion operator as a parameter. * * It would be nice to do this with templates but we can't figure out * how to do it cleanly. Suggestions welcome! */ #define LBB_CONVERSION( conversion ) \ template static void inline \ lbb_ ## conversion( void* restrict pout, \ const VipsPel* restrict pin, \ const int bands, \ const int lskip, \ const double relative_x, \ const double relative_y ) \ { \ T* restrict out = (T *) pout; \ \ const T* restrict in = (T *) pin; \ \ const int one_shift = -bands; \ const int thr_shift = bands; \ const int fou_shift = 2*bands; \ \ const int uno_two_shift = -lskip; \ \ const int tre_two_shift = lskip; \ const int qua_two_shift = 2*lskip; \ \ const int uno_one_shift = uno_two_shift + one_shift; \ const int dos_one_shift = one_shift; \ const int tre_one_shift = tre_two_shift + one_shift; \ const int qua_one_shift = qua_two_shift + one_shift; \ \ const int uno_thr_shift = uno_two_shift + thr_shift; \ const int dos_thr_shift = thr_shift; \ const int tre_thr_shift = tre_two_shift + thr_shift; \ const int qua_thr_shift = qua_two_shift + thr_shift; \ \ const int uno_fou_shift = uno_two_shift + fou_shift; \ const int dos_fou_shift = fou_shift; \ const int tre_fou_shift = tre_two_shift + fou_shift; \ const int qua_fou_shift = qua_two_shift + fou_shift; \ \ const double xp1over2 = relative_x; \ const double xm1over2 = xp1over2 - 1.0; \ const double onepx = 0.5 + xp1over2; \ const double onemx = 1.5 - xp1over2; \ const double xp1over2sq = xp1over2 * xp1over2; \ \ const double yp1over2 = relative_y; \ const double ym1over2 = yp1over2 - 1.0; \ const double onepy = 0.5 + yp1over2; \ const double onemy = 1.5 - yp1over2; \ const double yp1over2sq = yp1over2 * yp1over2; \ \ const double xm1over2sq = xm1over2 * xm1over2; \ const double ym1over2sq = ym1over2 * ym1over2; \ \ const double twice1px = onepx + onepx; \ const double twice1py = onepy + onepy; \ const double twice1mx = onemx + onemx; \ const double twice1my = onemy + onemy; \ \ const double xm1over2sq_times_ym1over2sq = xm1over2sq * ym1over2sq; \ const double xp1over2sq_times_ym1over2sq = xp1over2sq * ym1over2sq; \ const double xp1over2sq_times_yp1over2sq = xp1over2sq * yp1over2sq; \ const double xm1over2sq_times_yp1over2sq = xm1over2sq * yp1over2sq; \ \ const double four_times_1px_times_1py = twice1px * twice1py; \ const double four_times_1mx_times_1py = twice1mx * twice1py; \ const double twice_xp1over2_times_1py = xp1over2 * twice1py; \ const double twice_xm1over2_times_1py = xm1over2 * twice1py; \ \ const double twice_xm1over2_times_1my = xm1over2 * twice1my; \ const double twice_xp1over2_times_1my = xp1over2 * twice1my; \ const double four_times_1mx_times_1my = twice1mx * twice1my; \ const double four_times_1px_times_1my = twice1px * twice1my; \ \ const double twice_1px_times_ym1over2 = twice1px * ym1over2; \ const double twice_1mx_times_ym1over2 = twice1mx * ym1over2; \ const double xp1over2_times_ym1over2 = xp1over2 * ym1over2; \ const double xm1over2_times_ym1over2 = xm1over2 * ym1over2; \ \ const double xm1over2_times_yp1over2 = xm1over2 * yp1over2; \ const double xp1over2_times_yp1over2 = xp1over2 * yp1over2; \ const double twice_1mx_times_yp1over2 = twice1mx * yp1over2; \ const double twice_1px_times_yp1over2 = twice1px * yp1over2; \ \ const double c00 = \ four_times_1px_times_1py * xm1over2sq_times_ym1over2sq; \ const double c00dx = \ twice_xp1over2_times_1py * xm1over2sq_times_ym1over2sq; \ const double c00dy = \ twice_1px_times_yp1over2 * xm1over2sq_times_ym1over2sq; \ const double c00dxdy = \ xp1over2_times_yp1over2 * xm1over2sq_times_ym1over2sq; \ \ const double c10 = \ four_times_1mx_times_1py * xp1over2sq_times_ym1over2sq; \ const double c10dx = \ twice_xm1over2_times_1py * xp1over2sq_times_ym1over2sq; \ const double c10dy = \ twice_1mx_times_yp1over2 * xp1over2sq_times_ym1over2sq; \ const double c10dxdy = \ xm1over2_times_yp1over2 * xp1over2sq_times_ym1over2sq; \ \ const double c01 = \ four_times_1px_times_1my * xm1over2sq_times_yp1over2sq; \ const double c01dx = \ twice_xp1over2_times_1my * xm1over2sq_times_yp1over2sq; \ const double c01dy = \ twice_1px_times_ym1over2 * xm1over2sq_times_yp1over2sq; \ const double c01dxdy = \ xp1over2_times_ym1over2 * xm1over2sq_times_yp1over2sq; \ \ const double c11 = \ four_times_1mx_times_1my * xp1over2sq_times_yp1over2sq; \ const double c11dx = \ twice_xm1over2_times_1my * xp1over2sq_times_yp1over2sq; \ const double c11dy = \ twice_1mx_times_ym1over2 * xp1over2sq_times_yp1over2sq; \ const double c11dxdy = \ xm1over2_times_ym1over2 * xp1over2sq_times_yp1over2sq; \ \ int band = bands; \ \ do \ { \ const double double_result = \ lbbicubic( c00, \ c10, \ c01, \ c11, \ c00dx, \ c10dx, \ c01dx, \ c11dx, \ c00dy, \ c10dy, \ c01dy, \ c11dy, \ c00dxdy, \ c10dxdy, \ c01dxdy, \ c11dxdy, \ in[ uno_one_shift ], \ in[ uno_two_shift ], \ in[ uno_thr_shift ], \ in[ uno_fou_shift ], \ in[ dos_one_shift ], \ in[ 0 ], \ in[ dos_thr_shift ], \ in[ dos_fou_shift ], \ in[ tre_one_shift ], \ in[ tre_two_shift ], \ in[ tre_thr_shift ], \ in[ tre_fou_shift ], \ in[ qua_one_shift ], \ in[ qua_two_shift ], \ in[ qua_thr_shift ], \ in[ qua_fou_shift ] ); \ \ const T result = to_ ## conversion( double_result ); \ in++; \ *out++ = result; \ } while (--band); \ } LBB_CONVERSION( fptypes ) LBB_CONVERSION( withsign ) LBB_CONVERSION( nosign ) #define CALL( T, conversion ) \ lbb_ ## conversion( out, \ p, \ bands, \ lskip, \ relative_x, \ relative_y ); /* * We need C linkage: */ extern "C" { G_DEFINE_TYPE( VipsInterpolateLbb, vips_interpolate_lbb, VIPS_TYPE_INTERPOLATE ); } static void vips_interpolate_lbb_interpolate( VipsInterpolate* restrict interpolate, void* restrict out, VipsRegion* restrict in, double absolute_x, double absolute_y ) { /* absolute_x and absolute_y are always >= 1.0 (see double-check assert * below), so we don't need floor(). * * It's 1 not 0 since have a window_offset of 1. */ const int ix = (int) absolute_x; const int iy = (int) absolute_y; /* * Move the pointer to (the first band of) the top/left pixel of the * 2x2 group of pixel centers which contains the sampling location * in its convex hull: */ const VipsPel* restrict p = VIPS_REGION_ADDR( in, ix, iy ); const double relative_x = absolute_x - ix; const double relative_y = absolute_y - iy; /* * VIPS versions of Nicolas's pixel addressing values. */ const int lskip = VIPS_REGION_LSKIP( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in->im ); /* * Double the bands for complex images to account for the real and * imaginary parts being computed independently: */ const int actual_bands = in->im->Bands; const int bands = vips_band_format_iscomplex( in->im->BandFmt ) ? 2 * actual_bands : actual_bands; g_assert( ix - 1 >= in->valid.left ); g_assert( iy - 1 >= in->valid.top ); g_assert( ix + 2 < VIPS_RECT_RIGHT( &in->valid ) ); g_assert( iy + 2 < VIPS_RECT_BOTTOM( &in->valid ) ); /* Confirm that absolute_x and absolute_y are >= 1, see above. */ g_assert( absolute_x >= 1.0 ); g_assert( absolute_y >= 1.0 ); switch( in->im->BandFmt ) { case VIPS_FORMAT_UCHAR: CALL( unsigned char, nosign ); break; case VIPS_FORMAT_CHAR: CALL( signed char, withsign ); break; case VIPS_FORMAT_USHORT: CALL( unsigned short, nosign ); break; case VIPS_FORMAT_SHORT: CALL( signed short, withsign ); break; case VIPS_FORMAT_UINT: CALL( unsigned int, nosign ); break; case VIPS_FORMAT_INT: CALL( signed int, withsign ); break; /* * Complex images are handled by doubling of bands. */ case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CALL( float, fptypes ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CALL( double, fptypes ); break; default: g_assert( 0 ); break; } } static void vips_interpolate_lbb_class_init( VipsInterpolateLbbClass *klass ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( klass ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( klass ); object_class->nickname = "lbb"; object_class->description = _( "reduced halo bicubic" ); interpolate_class->interpolate = vips_interpolate_lbb_interpolate; interpolate_class->window_size = 4; } static void vips_interpolate_lbb_init( VipsInterpolateLbb *lbb ) { } vips-8.2.2/libvips/resample/resample.c0000664000175000017500000000653012623346763014703 00000000000000/* base class for all resample operations * * properties: * - one in, one out * - not point-to-point * - size can change in any way * - bands, type, format etc. all fixed */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "presample.h" G_DEFINE_ABSTRACT_TYPE( VipsResample, vips_resample, VIPS_TYPE_OPERATION ); static int vips_resample_build( VipsObject *object ) { VipsResample *resample = VIPS_RESAMPLE( object ); #ifdef DEBUG printf( "vips_resample_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_set( resample, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_resample_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_resample_class_init( VipsResampleClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "resample"; vobject_class->description = _( "resample operations" ); vobject_class->build = vips_resample_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsResample, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsResample, out ) ); } static void vips_resample_init( VipsResample *resample ) { } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_resample_operation_init( void ) { extern GType vips_shrink_get_type( void ); extern GType vips_mapim_get_type( void ); extern GType vips_shrinkh_get_type( void ); extern GType vips_shrinkv_get_type( void ); extern GType vips_shrink2_get_type( void ); extern GType vips_quadratic_get_type( void ); extern GType vips_affine_get_type( void ); extern GType vips_similarity_get_type( void ); extern GType vips_resize_get_type( void ); vips_mapim_get_type(); vips_shrink_get_type(); vips_shrinkh_get_type(); vips_shrinkv_get_type(); vips_shrink2_get_type(); vips_quadratic_get_type(); vips_affine_get_type(); vips_similarity_get_type(); vips_resize_get_type(); } vips-8.2.2/libvips/resample/quadratic.c0000664000175000017500000002111312651124071015025 00000000000000/* Resample an image with a quadratic transform. * * Original code from Reimar Lenz, * Adapted by Lars Raffelt for many bands, * VIPSified by JC ... other numeric types, partial output * * 7/11/12 * - rewritten again for vips8 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define DEBUG_GEOMETRY */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "presample.h" /* The transform we compute: x',y' = coordinates of srcim x,y = coordinates of dstim a .. l = coefficients x = x' + a : order 0 image shift only + b x' + c y' : order 1 + affine transf. + d x' y' : order 2 + bilinear transf. + e x' x' + f y' y' : order 3 + quadratic transf. y = y' + g + h y' + i x' + j y' x' + k y' y' + l x' x' input matrix: a g -- b h c i -- d j -- e k f l matrix height may be 1, 3, 4, 6 */ typedef struct _VipsQuadratic { VipsResample parent_instance; VipsImage *coeff; VipsInterpolate *interpolate; /* The coeff array argment, made into an in-memory double. */ VipsImage *mat; /* Transform order. */ int order; } VipsQuadratic; typedef VipsResampleClass VipsQuadraticClass; G_DEFINE_TYPE( VipsQuadratic, vips_quadratic, VIPS_TYPE_RESAMPLE ); static void vips_quadratic_dispose( GObject *gobject ) { VipsQuadratic *quadratic = (VipsQuadratic *) gobject; VIPS_UNREF( quadratic->mat ); G_OBJECT_CLASS( vips_quadratic_parent_class )->dispose( gobject ); } static int vips_quadratic_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsQuadratic *quadratic = (VipsQuadratic *) b; VipsResample *resample = VIPS_RESAMPLE( quadratic ); VipsInterpolateMethod interpolate_fn = vips_interpolate_get_method( quadratic->interpolate ); /* @in is the enlarged image (borders on, after vips_embed()). Use * @resample->in for the original, not-expanded image. */ const VipsImage *in = (VipsImage *) a; const int ps = VIPS_IMAGE_SIZEOF_PEL( in ); double *vec = VIPS_MATRIX( quadratic->mat, 0, 0 ); int clip_width = resample->in->Xsize; int clip_height = resample->in->Ysize; int xlow = or->valid.left; int ylow = or->valid.top; int xhigh = VIPS_RECT_RIGHT( &or->valid ); int yhigh = VIPS_RECT_BOTTOM( &or->valid ); VipsPel *q; int xo, yo; /* output coordinates, dstimage */ int z; double fxi, fyi; /* input coordinates */ double dx, dy; /* xo derivative of input coord. */ double ddx, ddy; /* 2nd xo derivative of input coord. */ VipsRect image; image.left = 0; image.top = 0; image.width = in->Xsize; image.height = in->Ysize; if( vips_region_image( ir, &image ) ) return( -1 ); for( yo = ylow; yo < yhigh; yo++ ) { fxi = 0.0; fyi = 0.0; dx = 0.0; dy = 0.0; ddx = 0.0; ddy = 0.0; switch( quadratic->order ) { case 3: fxi += vec[10] * yo * yo + vec[8] * xlow * xlow; fyi += vec[11] * yo * yo + vec[9] * xlow * xlow; dx += vec[8]; ddx += vec[8] * 2.0; dy += vec[9]; ddy += vec[9] * 2.0; case 2: fxi += vec[6] * xlow * yo; fyi += vec[7] * xlow * yo; dx += vec[6] * yo; dy += vec[7] * yo; case 1: fxi += vec[4] * yo + vec[2] * xlow; fyi += vec[5] * yo + vec[3] * xlow; dx += vec[2]; dy += vec[3]; case 0: fxi += vec[0]; fyi += vec[1]; break; default: g_assert_not_reached(); } printf( "dx = %g, dy = %g\n", dx, dy ); q = VIPS_REGION_ADDR( or, xlow, yo ); for( xo = xlow; xo < xhigh; xo++ ) { int xi, yi; xi = fxi; yi = fyi; /* Clipping! */ if( xi < 0 || yi < 0 || xi >= clip_width || yi >= clip_height ) { for( z = 0; z < ps; z++ ) q[z] = 0; } else interpolate_fn( quadratic->interpolate, q, ir, fxi, fyi ); q += ps; fxi += dx; fyi += dy; if( quadratic->order > 2 ) { dx += ddx; dy += ddy; } } } return( 0 ); } static int vips_quadratic_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsResample *resample = VIPS_RESAMPLE( object ); VipsQuadratic *quadratic = (VipsQuadratic *) object; VipsInterpolate *interpolate; int window_size; int window_offset; VipsImage *in; VipsImage *t; if( VIPS_OBJECT_CLASS( vips_quadratic_parent_class )->build( object ) ) return( -1 ); /* We have the whole of the input in memory, so we can generate any * output. */ if( vips_image_pipelinev( resample->out, VIPS_DEMAND_STYLE_ANY, resample->in, NULL ) ) return( -1 ); in = resample->in; if( vips_check_uncoded( class->nickname, in ) || vips_check_noncomplex( class->nickname, in ) || vips_check_matrix( class->nickname, quadratic->coeff, &quadratic->mat ) ) return( -1 ); if( quadratic->mat->Xsize != 2 ) { vips_error( class->nickname, "%s", _( "coefficient matrix must have width 2" ) ); return( -1 ); } switch( quadratic->mat->Ysize ) { case 1: quadratic->order = 0; break; case 3: quadratic->order = 1; break; case 4: quadratic->order = 2; break; case 6: quadratic->order = 3; break; default: vips_error( class->nickname, "%s", _( "coefficient matrix must have height " "1, 3, 4 or 6" ) ); return( -1 ); } if( !vips_object_argument_isset( object, "interpolator" ) ) quadratic->interpolate = vips_interpolate_new( "bilinear" ); interpolate = quadratic->interpolate; window_size = vips_interpolate_get_window_size( interpolate ); window_offset = vips_interpolate_get_window_offset( interpolate ); /* Enlarge the input image. */ if( vips_embed( in, &t, window_offset, window_offset, in->Xsize + window_size, in->Ysize + window_size, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); vips_object_local( object, t ); in = t; /* We need random access to our input. */ if( !(t = vips_image_copy_memory( in )) ) return( -1 ); vips_object_local( object, t ); in = t; if( vips_image_generate( resample->out, vips_start_one, vips_quadratic_gen, vips_stop_one, in, quadratic ) ) return( -1 ); return( 0 ); } static void vips_quadratic_class_init( VipsQuadraticClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_quadratic_class_init\n" ); gobject_class->dispose = vips_quadratic_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "quadratic"; vobject_class->description = _( "resample an image with a quadratic transform" ); vobject_class->build = vips_quadratic_build; VIPS_ARG_IMAGE( class, "coeff", 8, _( "Coeff" ), _( "Coefficient matrix" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsQuadratic, coeff ) ); VIPS_ARG_INTERPOLATE( class, "interpolate", 9, _( "Interpolate" ), _( "Interpolate values with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsQuadratic, interpolate ) ); } static void vips_quadratic_init( VipsQuadratic *quadratic ) { } /** * vips_quadratic: * @in: input image * @out: output image * @coeff: horizontal quadratic * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @interpolate: use this interpolator (default bilinear) * * This operation is unfinished and unusable, sorry. * * See also: vips_affine(). * * Returns: 0 on success, -1 on error */ int vips_quadratic( VipsImage *in, VipsImage **out, VipsImage *coeff, ... ) { va_list ap; int result; va_start( ap, coeff ); result = vips_call_split( "quadratic", ap, in, out, coeff ); va_end( ap ); return( result ); } vips-8.2.2/libvips/resample/Makefile.am0000664000175000017500000000063712623346763014765 00000000000000libresample_la_SOURCES = \ mapim.c \ affine.c \ quadratic.c \ resample.c \ similarity.c \ resize.c \ presample.h \ shrink.c \ shrinkh.c \ shrinkv.c \ shrink2.c \ interpolate.c \ transform.c \ bicubic.cpp \ lbb.cpp \ nohalo.cpp \ vsqbs.cpp \ templates.h EXTRA_DIST = \ dummy2.cc noinst_LTLIBRARIES = libresample.la AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/resample/Makefile.in0000664000175000017500000006152212651721157014771 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/resample ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libresample_la_LIBADD = am_libresample_la_OBJECTS = mapim.lo affine.lo quadratic.lo \ resample.lo similarity.lo resize.lo shrink.lo shrinkh.lo \ shrinkv.lo shrink2.lo interpolate.lo transform.lo bicubic.lo \ lbb.lo nohalo.lo vsqbs.lo libresample_la_OBJECTS = $(am_libresample_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(libresample_la_SOURCES) DIST_SOURCES = $(libresample_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ libresample_la_SOURCES = \ mapim.c \ affine.c \ quadratic.c \ resample.c \ similarity.c \ resize.c \ presample.h \ shrink.c \ shrinkh.c \ shrinkv.c \ shrink2.c \ interpolate.c \ transform.c \ bicubic.cpp \ lbb.cpp \ nohalo.cpp \ vsqbs.cpp \ templates.h EXTRA_DIST = \ dummy2.cc noinst_LTLIBRARIES = libresample.la AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/resample/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/resample/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libresample.la: $(libresample_la_OBJECTS) $(libresample_la_DEPENDENCIES) $(EXTRA_libresample_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libresample_la_OBJECTS) $(libresample_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/affine.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bicubic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpolate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lbb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapim.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nohalo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quadratic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resample.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resize.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shrink.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shrink2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shrinkh.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shrinkv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/similarity.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transform.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vsqbs.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/resample/presample.h0000664000175000017500000000366312650644636015074 00000000000000/* base class for all resample operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PRESAMPLE_H #define VIPS_PRESAMPLE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_RESAMPLE (vips_resample_get_type()) #define VIPS_RESAMPLE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_RESAMPLE, VipsResample )) #define VIPS_RESAMPLE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_RESAMPLE, VipsResampleClass)) #define VIPS_IS_RESAMPLE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_RESAMPLE )) #define VIPS_IS_RESAMPLE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_RESAMPLE )) #define VIPS_RESAMPLE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_RESAMPLE, VipsResampleClass )) typedef struct _VipsResample { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsResample; typedef struct _VipsResampleClass { VipsOperationClass parent_class; } VipsResampleClass; GType vips_resample_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PRESAMPLE_H*/ vips-8.2.2/libvips/resample/shrink.c0000664000175000017500000001153412620457066014365 00000000000000/* shrink with a box filter * * 30/10/15 * - from shrink.c (now renamed as shrink2.c) * - split to h and v shrinks for a large memory saving * - now handles complex */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "presample.h" typedef struct _VipsShrink { VipsResample parent_instance; double xshrink; /* Shrink factors */ double yshrink; } VipsShrink; typedef VipsResampleClass VipsShrinkClass; G_DEFINE_TYPE( VipsShrink, vips_shrink, VIPS_TYPE_RESAMPLE ); static int vips_shrink_build( VipsObject *object ) { VipsResample *resample = VIPS_RESAMPLE( object ); VipsShrink *shrink = (VipsShrink *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); int xshrink_int; int yshrink_int; if( VIPS_OBJECT_CLASS( vips_shrink_parent_class )->build( object ) ) return( -1 ); xshrink_int = (int) shrink->xshrink; yshrink_int = (int) shrink->yshrink; if( xshrink_int != shrink->xshrink || yshrink_int != shrink->yshrink ) { /* Shrink by int factors, affine to final size. */ int target_width = resample->in->Xsize / shrink->xshrink; int target_height = resample->in->Ysize / shrink->yshrink; double xresidual; double yresidual; if( vips_shrinkv( resample->in, &t[0], yshrink_int, NULL ) || vips_shrinkh( t[0], &t[1], xshrink_int, NULL ) ) return( -1 ); xresidual = (double) target_width / t[1]->Xsize; yresidual = (double) target_height / t[1]->Ysize; if( vips_affine( t[1], &t[2], xresidual, 0.0, 0.0, yresidual, NULL ) || vips_image_write( t[2], resample->out ) ) return( -1 ); } else { if( vips_shrinkv( resample->in, &t[0], shrink->yshrink, NULL ) || vips_shrinkh( t[0], &t[1], shrink->xshrink, NULL ) || vips_image_write( t[1], resample->out ) ) return( -1 ); } return( 0 ); } static void vips_shrink_class_init( VipsShrinkClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_shrink_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "shrink"; vobject_class->description = _( "shrink an image" ); vobject_class->build = vips_shrink_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_DOUBLE( class, "xshrink", 8, _( "Xshrink" ), _( "Horizontal shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrink, xshrink ), 1.0, 1000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "yshrink", 9, _( "Yshrink" ), _( "Vertical shrink factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsShrink, yshrink ), 1.0, 1000000.0, 1.0 ); } static void vips_shrink_init( VipsShrink *shrink ) { } /** * vips_shrink: * @in: input image * @out: output image * @xshrink: horizontal shrink * @yshrink: vertical shrink * @...: %NULL-terminated list of optional named arguments * * Shrink @in by a pair of factors with a simple box filter. For non-integer * factors, vips_shrink() will first shrink by the integer part with a box * filter, then use vips_affine() plus bilinear interpolation to shrink by the * remaining fractional part. * * This is a very low-level operation: see vips_resize() for a more * convenient way to resize images. * * This operation does not change xres or yres. The image resolution needs to * be updated by the application. * * See also: vips_resize(), vips_affine(). * * Returns: 0 on success, -1 on error */ int vips_shrink( VipsImage *in, VipsImage **out, double xshrink, double yshrink, ... ) { va_list ap; int result; va_start( ap, yshrink ); result = vips_call_split( "shrink", ap, in, out, xshrink, yshrink ); va_end( ap ); return( result ); } vips-8.2.2/libvips/resample/similarity.c0000664000175000017500000001254612530402247015250 00000000000000/* simple wrapper over vips_affine() to make scale / rotate easy from the * command-line * * 3/10/13 * - from affine.c * 25/10/13 * - oops, reverse rotation direction to match the convention used in the * rest of vips * 13/8/14 * - oops, missing scale from b, thanks Topochicho */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "presample.h" typedef struct _VipsSimilarity { VipsResample parent_instance; double scale; double angle; VipsInterpolate *interpolate; double odx; double ody; double idx; double idy; } VipsSimilarity; typedef VipsResampleClass VipsSimilarityClass; G_DEFINE_TYPE( VipsSimilarity, vips_similarity, VIPS_TYPE_RESAMPLE ); static int vips_similarity_build( VipsObject *object ) { VipsResample *resample = VIPS_RESAMPLE( object ); VipsSimilarity *similarity = (VipsSimilarity *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); double a, b, c, d; if( VIPS_OBJECT_CLASS( vips_similarity_parent_class )->build( object ) ) return( -1 ); a = similarity->scale * cos( VIPS_RAD( similarity->angle ) ); b = similarity->scale * -sin( VIPS_RAD( similarity->angle ) ); c = -b; d = a; if( vips_affine( resample->in, &t[0], a, b, c, d, "interpolate", similarity->interpolate, "odx", similarity->odx, "ody", similarity->ody, "idx", similarity->idx, "idy", similarity->idy, NULL ) || vips_image_write( t[0], resample->out ) ) return( -1 ); return( 0 ); } static void vips_similarity_class_init( VipsSimilarityClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "similarity"; vobject_class->description = _( "similarity transform of an image" ); vobject_class->build = vips_similarity_build; VIPS_ARG_DOUBLE( class, "scale", 3, _( "Scale" ), _( "Scale by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarity, scale ), 0, 10000000, 1 ); VIPS_ARG_DOUBLE( class, "angle", 4, _( "Angle" ), _( "Rotate anticlockwise by this many degrees" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarity, angle ), -10000000, 10000000, 0 ); VIPS_ARG_INTERPOLATE( class, "interpolate", 2, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarity, interpolate ) ); VIPS_ARG_DOUBLE( class, "odx", 112, _( "Output offset" ), _( "Horizontal output displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarity, odx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "ody", 113, _( "Output offset" ), _( "Vertical output displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarity, ody ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idx", 114, _( "Input offset" ), _( "Horizontal input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarity, idx ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "idy", 115, _( "Input offset" ), _( "Vertical input displacement" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSimilarity, idy ), -10000000, 10000000, 0 ); } static void vips_similarity_init( VipsSimilarity *similarity ) { similarity->scale = 1; similarity->angle = 0; similarity->interpolate = NULL; similarity->odx = 0; similarity->ody = 0; similarity->idx = 0; similarity->idy = 0; } /** * vips_similarity: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @scale: scale by this factor * @angle: rotate by this many degrees anticlockwise * @interpolate: interpolate pixels with this * @idx: input horizontal offset * @idy: input vertical offset * @odx: output horizontal offset * @ody: output vertical offset * * This operator calls vips_affine() for you, calculating the matrix for the * affine transform from @scale and @angle. Other parameters are passed on to * vips_affine() unaltered. * * See also: vips_affine(), #VipsInterpolate. * * Returns: 0 on success, -1 on error */ int vips_similarity( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "similarity", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/resample/interpolate.c0000664000175000017500000004254512645745136015430 00000000000000/* vipsinterpolate ... abstract base class for various interpolators * * J. Cupitt, 15/10/08 * * 12/8/10 * - revise window_size / window_offset stuff again: window_offset now * defaults to (window_size / 2 - 1), so for a 4x4 stencil (eg. * bicubic) we have an offset of 1 * - tiny speedups * 7/1/11 * - don't use tables for bilinear on float data for a small speedup * (thanks Nicolas Robidoux) * 12/1/11 * - faster, more accuarate uchar bilinear (thanks Nicolas) * 2/2/11 * - gtk-doc * 16/12/15 * - faster bilinear */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /** * SECTION: interpolate * @short_description: various interpolators: nearest, bilinear, and * some non-linear * @stability: Stable * @include: vips/vips.h * * A number of image interpolators. */ G_DEFINE_ABSTRACT_TYPE( VipsInterpolate, vips_interpolate, VIPS_TYPE_OBJECT ); /** * VipsInterpolateMethod: * @interpolate: the interpolator * @out: write the interpolated pixel here * @in: read source pixels from here * @x: interpolate value at this position * @y: interpolate value at this position * * An interpolation function. It should read source pixels from @in with * VIPS_REGION_ADDR(), it can look left and up from (x, y) by @window_offset * pixels and it can access pixels in a window of size @window_size. * * The interpolated value should be written to the pixel pointed to by @out. * * See also: #VipsInterpolateClass. */ /** * VipsInterpolateClass: * @interpolate: the interpolation method * @get_window_size: return the size of the window needed by this method * @window_size: or just set this for a constant window size * @get_window_offset: return the window offset for this method * @window_offset: or just set this for a constant window offset * * The abstract base class for the various VIPS interpolation functions. * Use "vips --list classes" to see all the interpolators available. * * An interpolator consists of a function to perform the interpolation, plus * some extra data fields which tell vips how to call the function and what * data it needs. * * @window_size is the size of the window that the interpolator needs. For * example, a bicubic interpolator needs to see a window of 4x4 pixels to be * able to interpolate a value. * * You can either have a function in @get_window_size which returns the window * that a specific interpolator needs, or you can leave @get_window_size %NULL * and set a constant value in @window_size. * * @window_offset is how much to offset the window up and left of (x, y). For * example, a bicubic interpolator will want a @window_offset of 1. * * You can either have a function in @get_window_offset which returns the * offset that a specific interpolator needs, or you can leave * @get_window_offset %NULL and set a constant value in @window_offset. * * You also need to set @nickname and @description in #VipsObject. * * See also: #VipsInterpolateMethod, #VipsObject, * vips_interpolate_bilinear_static(). */ #ifdef DEBUG static void vips_interpolate_finalize( GObject *gobject ) { printf( "vips_interpolate_finalize: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); G_OBJECT_CLASS( vips_interpolate_parent_class )->finalize( gobject ); } #endif /*DEBUG*/ static int vips_interpolate_real_get_window_size( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->window_size != -1 ); return( class->window_size ); } static int vips_interpolate_real_get_window_offset( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); /* Default to half window size - 1. For example, bicubic is a 4x4 * stencil and needs an offset of 1. */ if( class->window_offset != -1 ) return( class->window_offset ); else { int window_size = vips_interpolate_get_window_size( interpolate ); /* Don't go -ve, of course, for window_size 1. */ return( VIPS_MAX( 0, window_size / 2 - 1 ) ); } } static void vips_interpolate_class_init( VipsInterpolateClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); #ifdef DEBUG GObjectClass *gobject_class = G_OBJECT_CLASS( class ); #endif /*DEBUG*/ #ifdef DEBUG gobject_class->finalize = vips_interpolate_finalize; #endif /*DEBUG*/ vobject_class->nickname = "interpolate"; vobject_class->description = _( "VIPS interpolators" ); class->interpolate = NULL; class->get_window_size = vips_interpolate_real_get_window_size; class->get_window_offset = vips_interpolate_real_get_window_offset; class->window_size = -1; class->window_offset = -1; } static void vips_interpolate_init( VipsInterpolate *interpolate ) { #ifdef DEBUG printf( "vips_interpolate_init: " ); vips_object_print_name( VIPS_OBJECT( interpolate ) ); #endif /*DEBUG*/ } /** * vips_interpolate: (skip) * @interpolate: interpolator to use * @out: write result here * @in: read source data from here * @x: interpolate value at this position * @y: interpolate value at this position * * Look up the @interpolate method in the class and call it. Use * vips_interpolate_get_method() to get a direct pointer to the function and * avoid the lookup overhead. * * You need to set @in and @out up correctly. */ void vips_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->interpolate ); class->interpolate( interpolate, out, in, x, y ); } /** * vips_interpolate_get_method: (skip) * @interpolate: interpolator to use * * Look up the @interpolate method in the class and return it. Use this * instead of vips_interpolate() to cache method dispatch. * * Returns: a pointer to the interpolation function */ VipsInterpolateMethod vips_interpolate_get_method( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->interpolate ); return( class->interpolate ); } /** * vips_interpolate_get_window_size: * @interpolate: interpolator to use * * Look up an interpolators desired window size. * * Returns: the interpolators required window size */ int vips_interpolate_get_window_size( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->get_window_size ); return( class->get_window_size( interpolate ) ); } /** * vips_interpolate_get_window_offset: * @interpolate: interpolator to use * * Look up an interpolators desired window offset. * * Returns: the interpolators required window offset */ int vips_interpolate_get_window_offset( VipsInterpolate *interpolate ) { VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); g_assert( class->get_window_offset ); return( class->get_window_offset( interpolate ) ); } /** * VIPS_TRANSFORM_SHIFT: * * Many of the vips interpolators use fixed-point arithmetic for coordinate * calculation. This is how many bits of precision they use. */ /** * VIPS_TRANSFORM_SCALE: * * #VIPS_TRANSFORM_SHIFT as a multiplicative constant. */ /** * VIPS_INTERPOLATE_SHIFT: * * Many of the vips interpolators use fixed-point arithmetic for value * calcualtion. This is how many bits of precision they use. */ /** * VIPS_INTERPOLATE_SCALE: * * #VIPS_INTERPOLATE_SHIFT as a multiplicative constant. */ /* VipsInterpolateNearest class */ #define VIPS_TYPE_INTERPOLATE_NEAREST (vips_interpolate_nearest_get_type()) #define VIPS_INTERPOLATE_NEAREST( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_NEAREST, VipsInterpolateNearest )) #define VIPS_INTERPOLATE_NEAREST_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_NEAREST, VipsInterpolateNearestClass)) #define VIPS_IS_INTERPOLATE_NEAREST( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_NEAREST )) #define VIPS_IS_INTERPOLATE_NEAREST_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_NEAREST )) #define VIPS_INTERPOLATE_NEAREST_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_NEAREST, VipsInterpolateNearestClass )) /* No new members. */ typedef VipsInterpolate VipsInterpolateNearest; typedef VipsInterpolateClass VipsInterpolateNearestClass; G_DEFINE_TYPE( VipsInterpolateNearest, vips_interpolate_nearest, VIPS_TYPE_INTERPOLATE ); static void vips_interpolate_nearest_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ) { const int ps = VIPS_IMAGE_SIZEOF_PEL( in->im ); const int xi = (int) x; const int yi = (int) y; const VipsPel * restrict p = VIPS_REGION_ADDR( in, xi, yi ); VipsPel * restrict q = (VipsPel *) out; int z; for( z = 0; z < ps; z++ ) q[z] = p[z]; } static void vips_interpolate_nearest_class_init( VipsInterpolateNearestClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsInterpolateClass *interpolate_class = VIPS_INTERPOLATE_CLASS( class ); object_class->nickname = "nearest"; object_class->description = _( "nearest-neighbour interpolation" ); interpolate_class->interpolate = vips_interpolate_nearest_interpolate; interpolate_class->window_size = 1; } static void vips_interpolate_nearest_init( VipsInterpolateNearest *nearest ) { #ifdef DEBUG printf( "vips_interpolate_nearest_init: " ); vips_object_print_name( VIPS_OBJECT( nearest ) ); #endif /*DEBUG*/ } VipsInterpolate * vips_interpolate_nearest_new( void ) { return( VIPS_INTERPOLATE( vips_object_new( VIPS_TYPE_INTERPOLATE_NEAREST, NULL, NULL, NULL ) ) ); } /** * vips_interpolate_nearest_static: * * A convenience function that returns a nearest-neighbour interpolator you * don't need to free. * * Returns: (transfer none): a nearest-neighbour interpolator */ VipsInterpolate * vips_interpolate_nearest_static( void ) { static VipsInterpolate *interpolate = NULL; if( !interpolate ) { interpolate = vips_interpolate_nearest_new(); vips_object_set_static( VIPS_OBJECT( interpolate ), TRUE ); } return( interpolate ); } /* VipsInterpolateBilinear class */ #define VIPS_TYPE_INTERPOLATE_BILINEAR (vips_interpolate_bilinear_get_type()) #define VIPS_INTERPOLATE_BILINEAR( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE_BILINEAR, VipsInterpolateBilinear )) #define VIPS_INTERPOLATE_BILINEAR_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE_BILINEAR, VipsInterpolateBilinearClass)) #define VIPS_IS_INTERPOLATE_BILINEAR( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE_BILINEAR )) #define VIPS_IS_INTERPOLATE_BILINEAR_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE_BILINEAR )) #define VIPS_INTERPOLATE_BILINEAR_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE_BILINEAR, VipsInterpolateBilinearClass )) typedef VipsInterpolate VipsInterpolateBilinear; typedef VipsInterpolateClass VipsInterpolateBilinearClass; G_DEFINE_TYPE( VipsInterpolateBilinear, vips_interpolate_bilinear, VIPS_TYPE_INTERPOLATE ); /* in this class, name vars in the 2x2 grid as eg. * p1 p2 * p3 p4 */ #define BILINEAR_INT_INNER { \ tq[z] = (sc1 * tp1[z] + sc2 * tp2[z] + \ sc3 * tp3[z] + sc4 * tp4[z] + \ (1 << VIPS_INTERPOLATE_SHIFT) / 2) >> VIPS_INTERPOLATE_SHIFT; \ z += 1; \ } /* Fixed-point arithmetic, no tables. */ #define BILINEAR_INT( TYPE ) { \ TYPE * restrict tq = (TYPE *) out; \ \ float Y = y - iy; \ float X = x - ix; \ \ float Yd = 1.0f - Y; \ \ float c4 = Y * X; \ float c2 = Yd * X; \ float c3 = Y - c4; \ float c1 = Yd - c2; \ \ int sc1 = VIPS_INTERPOLATE_SCALE * c1;\ int sc2 = VIPS_INTERPOLATE_SCALE * c2;\ int sc3 = VIPS_INTERPOLATE_SCALE * c3;\ int sc4 = VIPS_INTERPOLATE_SCALE * c4;\ \ const TYPE * restrict tp1 = (TYPE *) p1; \ const TYPE * restrict tp2 = (TYPE *) p2; \ const TYPE * restrict tp3 = (TYPE *) p3; \ const TYPE * restrict tp4 = (TYPE *) p4; \ \ z = 0; \ VIPS_UNROLL( b, BILINEAR_INT_INNER ); \ } #define BILINEAR_FLOAT_INNER { \ tq[z] = c1 * tp1[z] + c2 * tp2[z] + \ c3 * tp3[z] + c4 * tp4[z]; \ z += 1; \ } /* Interpolate a pel ... int32 and float types, no tables, float * arithmetic. */ #define BILINEAR_FLOAT( TYPE ) { \ TYPE * restrict tq = (TYPE *) out; \ \ float Y = y - iy; \ float X = x - ix; \ \ float Yd = 1.0f - Y; \ \ float c4 = Y * X; \ float c2 = Yd * X; \ float c3 = Y - c4; \ float c1 = Yd - c2; \ \ const TYPE * restrict tp1 = (TYPE *) p1; \ const TYPE * restrict tp2 = (TYPE *) p2; \ const TYPE * restrict tp3 = (TYPE *) p3; \ const TYPE * restrict tp4 = (TYPE *) p4; \ \ z = 0; \ VIPS_UNROLL( b, BILINEAR_FLOAT_INNER ); \ } /* Expand for band types. with a fixed-point interpolator and a float * interpolator. */ #define SWITCH_INTERPOLATE( FMT, INT, FLOAT ) { \ switch( (FMT) ) { \ case VIPS_FORMAT_UCHAR: INT( unsigned char ); break; \ case VIPS_FORMAT_CHAR: INT( char ); break; \ case VIPS_FORMAT_USHORT:INT( unsigned short ); break; \ case VIPS_FORMAT_SHORT: INT( short ); break; \ case VIPS_FORMAT_UINT: FLOAT( unsigned int ); break; \ case VIPS_FORMAT_INT: FLOAT( int ); break; \ case VIPS_FORMAT_FLOAT: FLOAT( float ); break; \ case VIPS_FORMAT_DOUBLE:FLOAT( double ); break; \ default: \ g_assert( FALSE ); \ } \ } static void vips_interpolate_bilinear_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ) { /* Pel size and line size. */ const int ps = VIPS_IMAGE_SIZEOF_PEL( in->im ); const int ls = VIPS_REGION_LSKIP( in ); const int b = in->im->Bands; const int ix = (int) x; const int iy = (int) y; const VipsPel * restrict p1 = VIPS_REGION_ADDR( in, ix, iy ); const VipsPel * restrict p2 = p1 + ps; const VipsPel * restrict p3 = p1 + ls; const VipsPel * restrict p4 = p3 + ps; int z; g_assert( (int) x >= in->valid.left ); g_assert( (int) y >= in->valid.top ); g_assert( (int) x + 1 < VIPS_RECT_RIGHT( &in->valid ) ); g_assert( (int) y + 1 < VIPS_RECT_BOTTOM( &in->valid ) ); SWITCH_INTERPOLATE( in->im->BandFmt, BILINEAR_INT, BILINEAR_FLOAT ); } static void vips_interpolate_bilinear_class_init( VipsInterpolateBilinearClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsInterpolateClass *interpolate_class = (VipsInterpolateClass *) class; object_class->nickname = "bilinear"; object_class->description = _( "bilinear interpolation" ); interpolate_class->interpolate = vips_interpolate_bilinear_interpolate; interpolate_class->window_size = 2; } static void vips_interpolate_bilinear_init( VipsInterpolateBilinear *bilinear ) { #ifdef DEBUG printf( "vips_interpolate_bilinear_init: " ); vips_object_print_name( VIPS_OBJECT( bilinear ) ); #endif /*DEBUG*/ } VipsInterpolate * vips_interpolate_bilinear_new( void ) { return( VIPS_INTERPOLATE( vips_object_new( VIPS_TYPE_INTERPOLATE_BILINEAR, NULL, NULL, NULL ) ) ); } /** * vips_interpolate_bilinear_static: * * A convenience function that returns a bilinear interpolator you * don't need to free. * * Returns: (transfer none): a bilinear interpolator */ VipsInterpolate * vips_interpolate_bilinear_static( void ) { static VipsInterpolate *interpolate = NULL; if( !interpolate ) { interpolate = vips_interpolate_bilinear_new(); vips_object_set_static( VIPS_OBJECT( interpolate ), TRUE ); } return( interpolate ); } /* Called on startup: register the base vips interpolators. */ void vips__interpolate_init( void ) { extern GType vips_interpolate_bicubic_get_type( void ); extern GType vips_interpolate_lbb_get_type( void ); extern GType vips_interpolate_nohalo_get_type( void ); extern GType vips_interpolate_vsqbs_get_type( void ); vips_interpolate_nearest_get_type(); vips_interpolate_bilinear_get_type(); vips_interpolate_bicubic_get_type(); vips_interpolate_lbb_get_type(); vips_interpolate_nohalo_get_type(); vips_interpolate_vsqbs_get_type(); } /** * vips_interpolate_new: * @nickname: nickname for interpolator * * Look up an interpolator from a nickname and make one. You need to free the * result with g_object_unref() when you're done with it. * * See also: vips_type_find(). * * Returns: an interpolator, or %NULL on error. */ VipsInterpolate * vips_interpolate_new( const char *nickname ) { GType type; if( !(type = vips_type_find( "VipsInterpolate", nickname )) ) { vips_error( "VipsInterpolate", _( "class \"%s\" not found" ), nickname ); return( NULL ); } return( VIPS_INTERPOLATE( vips_object_new( type, NULL, NULL, NULL ) ) ); } vips-8.2.2/libvips/deprecated/0000775000175000017500000000000012651721506013264 500000000000000vips-8.2.2/libvips/deprecated/im_maxpos_avg.c0000664000175000017500000001516212530402247016200 00000000000000/* im_maxpos_avg.c * * Copyright: 2006, The Nottingham Trent University * Copyright: 2006, Tom Vajzovic * * Author: Tom Vajzovic * * Written on: 2006-09-25 * 15/10/07 JC * - changed spelling of occurrences * - check for !occurrences before using val * - renamed avg as sum, a bit clearer * 2/9/09 * - gtkdoc comment * 8/9/08 * - rewrite from im_maxpos() * - now handles many bands, complex, faster * 27/7/14 * - fix a race ... did not merge states if max was equal * 26/3/15 * - avoid NaN, thanks Paul */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* A position and maximum. */ typedef struct _Maxposavg { int xpos; int ypos; double max; /* occurences == 0 means we found no points, or we are uninitialised. */ int occurences; } Maxposavg; /* New sequence value. */ static void * maxposavg_start( IMAGE *in, void *a, void *b ) { Maxposavg *global_maxposavg = (Maxposavg *) b; Maxposavg *maxposavg; if( !(maxposavg = IM_NEW( NULL, Maxposavg )) ) return( NULL ); *maxposavg = *global_maxposavg; return( (void *) maxposavg ); } /* Merge the sequence value back into the per-call state. */ static int maxposavg_stop( void *seq, void *a, void *b ) { Maxposavg *global_maxposavg = (Maxposavg *) b; Maxposavg *maxposavg = (Maxposavg *) seq; /* Merge. */ if( maxposavg->occurences == 0 ) { } else if( maxposavg->max > global_maxposavg->max ) *global_maxposavg = *maxposavg; else if( maxposavg->max == global_maxposavg->max ) { global_maxposavg->xpos += maxposavg->xpos; global_maxposavg->ypos += maxposavg->ypos; global_maxposavg->occurences += maxposavg->occurences; } im_free( seq ); return( 0 ); } /* int loop. */ #define ILOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ m = max; \ \ for( x = 0; x < sz; x++ ) { \ TYPE v = p[x]; \ \ if( occurences == 0 || v > m ) { \ m = v; \ xpos = r->left + x / reg->im->Bands; \ ypos = r->top + y; \ occurences = 1; \ } \ else if( v == m ) { \ xpos += r->left + x / reg->im->Bands; \ ypos += r->top + y; \ occurences += 1; \ } \ } \ \ max = m; \ } /* float/double loop ... avoid NaN. */ #define FLOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ m = max; \ \ for( x = 0; x < sz; x++ ) { \ TYPE v = p[x]; \ \ if( isnan( v ) ) { \ } \ else if( occurences == 0 || v > m ) { \ m = v; \ xpos = r->left + x / reg->im->Bands; \ ypos = r->top + y; \ occurences = 1; \ } \ else if( v == m ) { \ xpos += r->left + x / reg->im->Bands; \ ypos += r->top + y; \ occurences += 1; \ } \ } \ \ max = m; \ } /* complex/dpcomplex loop ... avoid NaN. */ #define CLOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( x = 0; x < sz; x++ ) { \ double mod, re, im; \ \ re = p[0]; \ im = p[1]; \ p += 2; \ mod = re * re + im * im; \ \ if( isnan( mod ) ) { \ } \ else if( occurences == 0 || mod > max ) { \ max = mod; \ xpos = r->left + x / reg->im->Bands; \ ypos = r->top + y; \ occurences = 1; \ } \ else if( mod == max ) { \ xpos += r->left + x / reg->im->Bands; \ ypos += r->top + y; \ occurences += 1; \ } \ } \ } /* Loop over region, adding to seq. */ static int maxposavg_scan( REGION *reg, void *seq, void *a, void *b, gboolean *stop ) { const Rect *r = ®->valid; const int sz = IM_REGION_N_ELEMENTS( reg ); Maxposavg *maxposavg = (Maxposavg *) seq; int x, y; double max; int xpos, ypos, occurences; xpos = maxposavg->xpos; ypos = maxposavg->ypos; max = maxposavg->max; occurences = maxposavg->occurences; for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( reg, r->left, r->top + y ); switch( reg->im->BandFmt ) { case IM_BANDFMT_UCHAR: ILOOP( unsigned char ); break; case IM_BANDFMT_CHAR: ILOOP( signed char ); break; case IM_BANDFMT_USHORT: ILOOP( unsigned short ); break; case IM_BANDFMT_SHORT: ILOOP( signed short ); break; case IM_BANDFMT_UINT: ILOOP( unsigned int ); break; case IM_BANDFMT_INT: ILOOP( signed int ); break; case IM_BANDFMT_FLOAT: FLOOP( float ); break; case IM_BANDFMT_DOUBLE: FLOOP( double ); break; case IM_BANDFMT_COMPLEX: CLOOP( float ); break; case IM_BANDFMT_DPCOMPLEX: CLOOP( double ); break; default: g_assert( 0 ); } } maxposavg->xpos = xpos; maxposavg->ypos = ypos; maxposavg->max = max; maxposavg->occurences = occurences; return( 0 ); } /** * im_maxpos_avg: * @im: image to scan * @xpos: returned X position * @ypos: returned Y position * @out: returned value * * Function to find the maximum of an image. Returns coords and value at * double precision. In the event of a draw, returns average of all * drawing coords. * * See also: im_maxpos(), im_min(), im_stats(). * * Returns: 0 on success, -1 on error */ int im_maxpos_avg( IMAGE *in, double *xpos, double *ypos, double *out ) { Maxposavg *global_maxposavg; if( im_pincheck( in ) || im_check_uncoded( "im_maxpos_avg", in ) ) return( -1 ); if( !(global_maxposavg = IM_NEW( in, Maxposavg )) ) return( -1 ); global_maxposavg->occurences = 0; if( vips_sink( in, maxposavg_start, maxposavg_scan, maxposavg_stop, in, global_maxposavg ) ) return( -1 ); if( global_maxposavg->occurences == 0 ) { *xpos = nan(""); *ypos = nan(""); *out = nan(""); } else { /* Back to modulus. */ if( vips_band_format_iscomplex( in->BandFmt ) ) global_maxposavg->max = sqrt( global_maxposavg->max ); if( xpos ) *xpos = (double) global_maxposavg->xpos / global_maxposavg->occurences; if( ypos ) *ypos = (double) global_maxposavg->ypos / global_maxposavg->occurences; if( out ) *out = global_maxposavg->max; } return( 0 ); } vips-8.2.2/libvips/deprecated/im_matinv.c0000664000175000017500000003056312530402247015334 00000000000000/* solve and invert matrices * * Author: Tom Vajzovic * Copyright: 2006, Tom Vajzovic * Written on: 2006-09-08 * * undated: * - page 43-45 of numerical recipes in C 1998 * * 2006-09-08 tcv: * - complete rewrite; algorithm unchanged * * 22/10/10 * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /** HEADERS **/ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /** CONSTANTS **/ #define TOO_SMALL ( 2.0 * DBL_MIN ) /* DBL_MIN is smallest *normalized* double precision float */ /** MACROS **/ #define MATRIX( mask, i, j ) ( (mask)-> coeff[ (j) + (i) * (mask)-> xsize ] ) /* use DOUBLEMASK or INTMASK as matrix type */ /** LOCAL FUNCTION DECLARATIONS **/ static int mat_inv_lu( DOUBLEMASK *inv, const DOUBLEMASK *lu ); static int mat_inv_direct( DOUBLEMASK *inv, const DOUBLEMASK *mat, const char *function_name ); /** EXPORTED FUNCTION DEFINITIONS **/ /** * im_lu_decomp: * @mat: matrix to decompose * @filename: name for output matrix * * This function takes any square NxN #DOUBLEMASK. * It returns a #DOUBLEMASK which is (N+1)xN. * * It calculates the PLU decomposition, storing the upper and diagonal parts * of U, together with the lower parts of L, as an NxN matrix in the first * N rows of the new matrix. The diagonal parts of L are all set to unity * and are not stored. * * The final row of the new #DOUBLEMASK has only integer entries, which * represent the row-wise permutations made by the permuatation matrix P. * * The scale and offset members of the input #DOUBLEMASK are ignored. * * See: * * PRESS, W. et al, 1992. Numerical Recipies in C; The Art of Scientific * Computing, 2nd ed. Cambridge: Cambridge University Press, pp. 43-50. * * See also: im_mattrn(), im_matinv(). * * Returns: the decomposed matrix on success, or NULL on error. */ DOUBLEMASK * im_lu_decomp( const DOUBLEMASK *mat, const char *name ){ #define FUNCTION_NAME "im_lu_decomp" int i, j, k; double *row_scale; DOUBLEMASK *lu; if( mat-> xsize != mat-> ysize ){ im_error( FUNCTION_NAME, "non-square matrix" ); return NULL; } #define N ( mat -> xsize ) lu= im_create_dmask( name, N, N + 1 ); row_scale= IM_ARRAY( NULL, N, double ); if( ! row_scale || ! lu ){ im_free_dmask( lu ); im_free( row_scale ); return NULL; } /* copy all coefficients and then perform decomposition in-place */ memcpy( lu-> coeff, mat-> coeff, N * N * sizeof( double ) ); #define LU( i, j ) MATRIX( lu, (i), (j) ) #define perm ( lu-> coeff + N * N ) for( i= 0; i < N; ++i ){ row_scale[ i ]= 0.0; for( j= 0; j < N; ++j ){ double abs_val= fabs( LU( i, j ) ); /* find largest in each ROW */ if( abs_val > row_scale[ i ] ) row_scale[ i ]= abs_val; } if( ! row_scale[ i ] ){ im_error( FUNCTION_NAME, "singular matrix" ); im_free_dmask( lu ); im_free( row_scale ); return NULL; } /* fill array with scaling factors for each ROW */ row_scale[ i ]= 1.0 / row_scale[ i ]; } for( j= 0; j < N; ++j ){ /* loop over COLs */ double max= -1.0; int i_of_max; /* not needed, but stops a compiler warning */ i_of_max= 0; /* loop over ROWS in upper-half, except diagonal */ for( i= 0; i < j; ++i ) for( k= 0; k < i; ++k ) LU( i, j )-= LU( i, k ) * LU( k, j ); /* loop over ROWS in diagonal and lower-half */ for( i= j; i < N; ++i ){ double abs_val; for( k= 0; k < j; ++k ) LU( i, j )-= LU( i, k ) * LU( k, j ); /* find largest element in each COLUMN scaled so that */ /* largest in each ROW is 1.0 */ abs_val= row_scale[ i ] * fabs( LU( i, j ) ); if( abs_val > max ){ max= abs_val; i_of_max= i; } } if( fabs( LU( i_of_max, j ) ) < TOO_SMALL ){ /* divisor is near zero */ im_error( FUNCTION_NAME, "singular or near-singular matrix" ); im_free_dmask( lu ); im_free( row_scale ); return NULL; } if( i_of_max != j ){ /* swap ROWS */ for( k= 0; k < N; ++k ){ double temp= LU( j, k ); LU( j, k )= LU( i_of_max, k ); LU( i_of_max, k )= temp; } row_scale[ i_of_max ]= row_scale[ j ]; /* no need to copy this scale back up - we won't use it */ } /* record permutation */ perm[ j ]= i_of_max; /* divide by best (largest scaled) pivot found */ for( i= j + 1; i < N; ++i ) LU( i, j )/= LU( j, j ); } im_free( row_scale ); return lu; #undef N #undef LU #undef perm #undef FUNCTION_NAME } /** * im_lu_solve: * @lu: matrix to solve * @vec: name for output matrix * * Solve the system of linear equations Ax=b, where matrix A has already * been decomposed into LU form in DOUBLEMASK *lu. Input vector b is in * vec and is overwritten with vector x. * * See: * * PRESS, W. et al, 1992. Numerical Recipies in C; The Art of Scientific * Computing, 2nd ed. Cambridge: Cambridge University Press, pp. 43-50. * * See also: im_mattrn(), im_matinv(). * * Returns: the decomposed matrix on success, or NULL on error. */ int im_lu_solve( const DOUBLEMASK *lu, double *vec ){ #define FUNCTION_NAME "im_lu_solve" int i, j; if( lu-> xsize + 1 != lu-> ysize ){ im_error( FUNCTION_NAME, "not an LU decomposed matrix" ); return -1; } #define N ( lu -> xsize ) #define LU( i, j ) MATRIX( lu, (i), (j) ) #define perm ( lu-> coeff + N * N ) for( i= 0; i < N; ++i ){ int i_perm= perm[ i ]; if( i_perm != i ){ double temp= vec[ i ]; vec[ i ]= vec[ i_perm ]; vec[ i_perm ]= temp; } for( j= 0; j < i; ++j ) vec[ i ]-= LU( i, j ) * vec [ j ]; } for( i= N - 1; i >= 0; --i ){ for( j= i + 1; j < N; ++j ) vec[ i ]-= LU( i, j ) * vec [ j ]; vec[ i ]/= LU( i, i ); } return 0; #undef LU #undef perm #undef N #undef FUNCTION_NAME } /** * im_matinv: * @mat: matrix to invert * @filename: name for output matrix * * Allocate, and return a pointer to, a DOUBLEMASK representing the * inverse of the matrix represented in @mat. Give it the filename * member @filename. Returns NULL on error. Scale and offset are ignored. * * See also: im_mattrn(). * * Returns: the inverted matrix on success, or %NULL on error. */ DOUBLEMASK * im_matinv( const DOUBLEMASK *mat, const char *filename ){ #define FUNCTION_NAME "im_matinv" DOUBLEMASK *inv; if( mat-> xsize != mat-> ysize ){ im_error( FUNCTION_NAME, "non-square matrix" ); return NULL; } #define N ( mat -> xsize ) inv= im_create_dmask( filename, N, N ); if( ! inv ) return NULL; if( N < 4 ){ if( mat_inv_direct( inv, (const DOUBLEMASK *) mat, FUNCTION_NAME ) ){ im_free_dmask( inv ); return NULL; } return inv; } else { DOUBLEMASK *lu= im_lu_decomp( mat, "temp" ); if( ! lu || mat_inv_lu( inv, (const DOUBLEMASK*) lu ) ){ im_free_dmask( lu ); im_free_dmask( inv ); return NULL; } im_free_dmask( lu ); return inv; } #undef N #undef FUNCTION_NAME } /** * im_matinv_inplace: * @mat: matrix to invert * * Invert the matrix represented by the DOUBLEMASK @mat, and store * it in the place of @mat. Scale and offset * are ignored. * * See also: im_mattrn(). * * Returns: 0 on success, or -1 on error. */ int im_matinv_inplace( DOUBLEMASK *mat ){ #define FUNCTION_NAME "im_matinv_inplace" int to_return= 0; if( mat-> xsize != mat-> ysize ){ im_error( FUNCTION_NAME, "non-square matrix" ); return -1; } #define N ( mat -> xsize ) if( N < 4 ){ DOUBLEMASK *dup= im_dup_dmask( mat, "temp" ); if( ! dup ) return -1; to_return= mat_inv_direct( mat, (const DOUBLEMASK*) dup, FUNCTION_NAME ); im_free_dmask( dup ); return to_return; } { DOUBLEMASK *lu; lu= im_lu_decomp( mat, "temp" ); if( ! lu || mat_inv_lu( mat, (const DOUBLEMASK*) lu ) ) to_return= -1; im_free_dmask( lu ); return to_return; } #undef N #undef FUNCTION_NAME } /* Invert a square size x size matrix stored in matrix[][] * result is returned in the same matrix */ int im_invmat( double **matrix, int size ){ DOUBLEMASK *mat= im_create_dmask( "temp", size, size ); int i; int to_return= 0; for( i= 0; i < size; ++i ) memcpy( mat-> coeff + i * size, matrix[ i ], size * sizeof( double ) ); to_return= im_matinv_inplace( mat ); if( ! to_return ) for( i= 0; i < size; ++i ) memcpy( matrix[ i ], mat-> coeff + i * size, size * sizeof( double ) ); im_free_dmask( mat ); return to_return; } /** LOCAL FUNCTION DEFINITIONS **/ static int mat_inv_lu( DOUBLEMASK *inv, const DOUBLEMASK *lu ){ #define N ( lu-> xsize ) #define INV( i, j ) MATRIX( inv, (i), (j) ) int i, j; double *vec= IM_ARRAY( NULL, N, double ); if( ! vec ) return -1; for( j= 0; j < N; ++j ){ for( i= 0; i < N; ++i ) vec[ i ]= 0.0; vec[ j ]= 1.0; im_lu_solve( lu, vec ); for( i= 0; i < N; ++i ) INV( i, j )= vec[ i ]; } im_free( vec ); inv-> scale= 1.0; inv-> offset= 0.0; return 0; #undef N #undef INV } static int mat_inv_direct( DOUBLEMASK *inv, const DOUBLEMASK *mat, const char *function_name ){ #define N ( mat -> xsize ) #define MAT( i, j ) MATRIX( mat, (i), (j) ) #define INV( i, j ) MATRIX( inv, (i), (j) ) inv-> scale= 1.0; inv-> offset= 0.0; switch( N ){ case 1: { if( fabs( MAT( 0, 0 ) ) < TOO_SMALL ){ im_error( function_name, "singular or near-singular matrix" ); return -1; } INV( 0, 0 )= 1.0 / MAT( 0, 0 ); return 0; } case 2: { double det= MAT( 0, 0 ) * MAT( 1, 1 ) - MAT( 0, 1 ) * MAT( 1, 0 ); if( fabs( det ) < TOO_SMALL ){ im_error( function_name, "singular or near-singular matrix" ); return -1; } INV( 0, 0 )= MAT( 1, 1 ) / det; INV( 0, 1 )= -MAT( 0, 1 ) / det; INV( 1, 0 )= -MAT( 1, 0 ) / det; INV( 1, 1 )= MAT( 0, 0 ) / det; return 0; } case 3: { double det= MAT( 0, 0 ) * ( MAT( 1, 1 ) * MAT( 2, 2 ) - MAT( 1, 2 ) * MAT( 2, 1 ) ) - MAT( 0, 1 ) * ( MAT( 1, 0 ) * MAT( 2, 2 ) - MAT( 1, 2 ) * MAT( 2, 0 ) ) + MAT( 0, 2 ) * ( MAT( 1, 0 ) * MAT( 2, 1 ) - MAT( 1, 1 ) * MAT( 2, 0 ) ); if( fabs( det ) < TOO_SMALL ){ im_error( function_name, "singular or near-singular matrix" ); return -1; } INV( 0, 0 )= ( MAT( 1, 1 ) * MAT( 2, 2 ) - MAT( 1, 2 ) * MAT( 2, 1 ) ) / det; INV( 0, 1 )= ( MAT( 0, 2 ) * MAT( 2, 1 ) - MAT( 0, 1 ) * MAT( 2, 2 ) ) / det; INV( 0, 2 )= ( MAT( 0, 1 ) * MAT( 1, 2 ) - MAT( 0, 2 ) * MAT( 1, 1 ) ) / det; INV( 1, 0 )= ( MAT( 1, 2 ) * MAT( 2, 0 ) - MAT( 1, 0 ) * MAT( 2, 2 ) ) / det; INV( 1, 1 )= ( MAT( 0, 0 ) * MAT( 2, 2 ) - MAT( 0, 2 ) * MAT( 2, 0 ) ) / det; INV( 1, 2 )= ( MAT( 0, 2 ) * MAT( 1, 0 ) - MAT( 0, 0 ) * MAT( 1, 2 ) ) / det; INV( 2, 0 )= ( MAT( 1, 0 ) * MAT( 2, 1 ) - MAT( 1, 1 ) * MAT( 2, 0 ) ) / det; INV( 2, 1 )= ( MAT( 0, 1 ) * MAT( 2, 0 ) - MAT( 0, 0 ) * MAT( 2, 1 ) ) / det; INV( 2, 2 )= ( MAT( 0, 0 ) * MAT( 1, 1 ) - MAT( 0, 1 ) * MAT( 1, 0 ) ) / det; return 0; } default: return -1; } #undef N #undef MAT #undef INV } vips-8.2.2/libvips/deprecated/im_gradcor.c0000664000175000017500000005763712530402247015472 00000000000000/* im_gradcor * * Copyright: 2007 Nottingham Trent University * * Author: Tom Vajzovic * Written on: 2007-06-07 * 3/2/10 * - gtkdoc * - cleanups */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /** HEADERS **/ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** LOCAL TYPES **/ typedef struct { REGION *reg; int *region_xgrad; int *region_ygrad; size_t region_xgrad_area; size_t region_ygrad_area; } gradcor_seq_t; /** LOCAL FUNCTION DECLARATIONS **/ static void *gradcor_start( IMAGE *out, void *vptr_large, void *unrequired ); static int gradcor_stop( void *vptr_seq, void *unrequired, void *unreq2 ); static int gradcor_gen( REGION *to_make, void *vptr_seq, void *unrequired, void *vptr_grads ); #define XGRAD_GEN_DECLARATION( TYPE ) static int xgrad_gen_ ## TYPE( REGION *to_make, void *vptr_make_from, void *unrequired, void *unreq2 ) #define YGRAD_GEN_DECLARATION( TYPE ) static int ygrad_gen_ ## TYPE( REGION *to_make, void *vptr_make_from, void *unrequired, void *unreq2 ) XGRAD_GEN_DECLARATION( guint8 ); YGRAD_GEN_DECLARATION( guint8 ); XGRAD_GEN_DECLARATION( gint8 ); YGRAD_GEN_DECLARATION( gint8 ); XGRAD_GEN_DECLARATION( guint16 ); YGRAD_GEN_DECLARATION( guint16 ); XGRAD_GEN_DECLARATION( gint16 ); YGRAD_GEN_DECLARATION( gint16 ); XGRAD_GEN_DECLARATION( guint32 ); YGRAD_GEN_DECLARATION( guint32 ); XGRAD_GEN_DECLARATION( gint32 ); YGRAD_GEN_DECLARATION( gint32 ); #if 0 XGRAD_GEN_DECLARATION( float ); YGRAD_GEN_DECLARATION( float ); XGRAD_GEN_DECLARATION( double ); YGRAD_GEN_DECLARATION( double ); #endif /** EXPORTED FUNCTION DEFINITIONS **/ int im_gradcor_raw( IMAGE *large, IMAGE *small, IMAGE *out ){ #define FUNCTION_NAME "im_gradcor_raw" if( im_piocheck( large, out ) || im_pincheck( small ) ) return -1; if( im_check_uncoded( "im_gradcor", large ) || im_check_mono( "im_gradcor", large ) || im_check_uncoded( "im_gradcor", small ) || im_check_mono( "im_gradcor", small ) || im_check_format_same( "im_gradcor", large, small ) || im_check_int( "im_gradcor", large ) ) return( -1 ); if( large-> Xsize < small-> Xsize || large-> Ysize < small-> Ysize ){ im_error( FUNCTION_NAME, "second image must be smaller than first" ); return -1; } if( im_cp_desc( out, large ) ) return -1; out-> Xsize= 1 + large-> Xsize - small-> Xsize; out-> Ysize= 1 + large-> Ysize - small-> Ysize; out-> BandFmt= IM_BANDFMT_FLOAT; if( im_demand_hint( out, IM_FATSTRIP, large, NULL ) ) return -1; { IMAGE *xgrad= im_open_local( out, FUNCTION_NAME ": xgrad", "t" ); IMAGE *ygrad= im_open_local( out, FUNCTION_NAME ": ygrad", "t" ); IMAGE **grads= im_allocate_input_array( out, xgrad, ygrad, NULL ); return ! xgrad || ! ygrad || ! grads || im_grad_x( small, xgrad ) || im_grad_y( small, ygrad ) || im_generate( out, gradcor_start, gradcor_gen, gradcor_stop, (void*) large, (void*) grads ); } #undef FUNCTION_NAME } /** * im_gradcor: * @in: input image * @ref: reference image * @out: output image * * Calculate a correlation surface. * * @ref is placed at every position in @in and a correlation coefficient * calculated. One-band, integer images only. @in and @ref must have the * same #VipsBandFmt. The output * image is always %IM_BANDFMT_FLOAT. @ref must be smaller than @in. The output * image is the same size as the input. * * The method takes the gradient images of the two images then takes the * dot-product correlation of the two vector images. * The vector expression of this method is my (tcv) own creation. It is * equivalent to the complex-number method of: * * ARGYRIOU, V. et al. 2003. Estimation of sub-pixel motion using * gradient cross correlation. Electronics Letters, 39 (13). * * See also: im_spcor(). * * Returns: 0 on success, -1 on error */ int im_gradcor( IMAGE *in, IMAGE *ref, IMAGE *out ) { #define FUNCTION_NAME "im_gradcor" IMAGE *t1 = im_open_local( out, FUNCTION_NAME " intermediate", "p" ); if( !t1 || im_embed( in, t1, 1, ref->Xsize / 2, ref->Ysize / 2, in->Xsize + ref->Xsize - 1, in->Ysize + ref->Ysize - 1 ) || im_gradcor_raw( t1, ref, out ) ) return( -1 ); out->Xoffset = 0; out->Yoffset = 0; return( 0 ); #undef FUNCTION_NAME } /** * im_grad_x: * @in: input image * @out: output image * * Find horizontal differences between adjacent pixels. * * Generates an image where the value of each pixel is the difference between * it and the pixel to its right. The output has the same height as the input * and one pixel less width. One-band integer formats only. The result is * always %IM_BANDFMT_INT. * * This operation is much faster than (though equivalent to) im_conv() with the * mask [[-1, 1]]. * * See also: im_grad_y(), im_conv(). * * Returns: 0 on success, -1 on error */ int im_grad_x( IMAGE *in, IMAGE *out ){ #define FUNCTION_NAME "im_grad_x" if( im_piocheck( in, out ) ) return -1; if( im_check_uncoded( "im_grad_x", in ) || im_check_mono( "im_grad_x", in ) || im_check_int( "im_grad_x", in ) ) return( -1 ); if( im_cp_desc( out, in ) ) return -1; -- out-> Xsize; out-> BandFmt= IM_BANDFMT_INT; /* do not change without updating im_gradcor() */ if( im_demand_hint( out, IM_THINSTRIP, in, NULL ) ) return -1; #define RETURN_GENERATE( TYPE ) return im_generate( out, im_start_one, xgrad_gen_ ## TYPE, im_stop_one, (void*) in, NULL ) switch( in-> BandFmt ){ case IM_BANDFMT_UCHAR: RETURN_GENERATE( guint8 ); case IM_BANDFMT_CHAR: RETURN_GENERATE( gint8 ); case IM_BANDFMT_USHORT: RETURN_GENERATE( guint16 ); case IM_BANDFMT_SHORT: RETURN_GENERATE( gint16 ); case IM_BANDFMT_UINT: RETURN_GENERATE( guint32 ); case IM_BANDFMT_INT: RETURN_GENERATE( gint32 ); #if 0 case IM_BANDFMT_FLOAT: RETURN_GENERATE( float ); case IM_BANDFMT_DOUBLE: RETURN_GENERATE( double ); #endif #undef RETURN_GENERATE default: g_assert( 0 ); } /* Keep gcc happy. */ return 0; #undef FUNCTION_NAME } /** * im_grad_y: * @in: input image * @out: output image * * Find vertical differences between adjacent pixels. * * Generates an image where the value of each pixel is the difference between * it and the pixel below it. The output has the same width as the input * and one pixel less height. One-band integer formats only. The result is * always %IM_BANDFMT_INT. * * This operation is much faster than (though equivalent to) im_conv() with the * mask [[-1], [1]]. * * See also: im_grad_x(), im_conv(). * * Returns: 0 on success, -1 on error */ int im_grad_y( IMAGE *in, IMAGE *out ){ #define FUNCTION_NAME "im_grad_y" if( im_piocheck( in, out ) ) return -1; if( im_check_uncoded( "im_grad_y", in ) || im_check_mono( "im_grad_y", in ) || im_check_int( "im_grad_y", in ) ) return( -1 ); if( im_cp_desc( out, in ) ) return -1; -- out-> Ysize; out-> BandFmt= IM_BANDFMT_INT; /* do not change without updating im_gradcor() */ if( im_demand_hint( out, IM_FATSTRIP, in, NULL ) ) return -1; #define RETURN_GENERATE( TYPE ) return im_generate( out, im_start_one, ygrad_gen_ ## TYPE, im_stop_one, (void*) in, NULL ) switch( in-> BandFmt ){ case IM_BANDFMT_UCHAR: RETURN_GENERATE( guint8 ); case IM_BANDFMT_CHAR: RETURN_GENERATE( gint8 ); case IM_BANDFMT_USHORT: RETURN_GENERATE( guint16 ); case IM_BANDFMT_SHORT: RETURN_GENERATE( gint16 ); case IM_BANDFMT_UINT: RETURN_GENERATE( guint32 ); case IM_BANDFMT_INT: RETURN_GENERATE( gint32 ); #if 0 case IM_BANDFMT_FLOAT: RETURN_GENERATE( float ); case IM_BANDFMT_DOUBLE: RETURN_GENERATE( double ); #endif #undef RETURN_GENERATE default: g_assert( 0 ); } /* Keep gcc happy. */ return 0; #undef FUNCTION_NAME } /** LOCAL FUNCTION DEFINITIONS **/ static void *gradcor_start( IMAGE *out, void *vptr_large, void *unrequired ){ gradcor_seq_t *seq= IM_NEW( NULL, gradcor_seq_t ); if( ! seq ) return NULL; seq-> region_xgrad= (int*) NULL; seq-> region_ygrad= (int*) NULL; seq-> region_xgrad_area= 0; seq-> region_ygrad_area= 0; seq-> reg= im_region_create( (IMAGE*) vptr_large ); if( ! seq-> reg ){ im_free( (void*) seq ); return NULL; } return (void*) seq; } static int gradcor_stop( void *vptr_seq, void *unrequired, void *unreq2 ){ gradcor_seq_t *seq= (gradcor_seq_t*) vptr_seq; if( seq ){ im_free( (void*) seq-> region_xgrad ); im_free( (void*) seq-> region_ygrad ); im_region_free( seq-> reg ); seq-> region_xgrad= (int*) NULL; seq-> region_ygrad= (int*) NULL; seq-> reg= (REGION*) NULL; im_free( (void*) seq ); } return 0; } static int gradcor_gen( REGION *to_make, void *vptr_seq, void *unrequired, void *vptr_grads ){ gradcor_seq_t *seq= (gradcor_seq_t*) vptr_seq; REGION *make_from= seq-> reg; IMAGE **grads= (IMAGE**) vptr_grads; IMAGE *small_xgrad= grads[0]; IMAGE *small_ygrad= grads[1]; Rect require= { to_make-> valid. left, to_make-> valid. top, to_make-> valid. width + small_xgrad-> Xsize, to_make-> valid. height + small_ygrad-> Ysize }; size_t region_xgrad_width= require. width - 1; size_t region_ygrad_height= require. height - 1; if( im_prepare( make_from, &require ) ) return -1; #define FILL_BUFFERS( TYPE ) /* fill region_xgrad */ \ { \ TYPE *reading= (TYPE*) IM_REGION_ADDR( make_from, require. left, require. top ); \ size_t read_skip= ( IM_REGION_LSKIP( make_from ) / sizeof(TYPE) ) - region_xgrad_width; \ size_t area_need= region_xgrad_width * require. height; \ \ if( seq-> region_xgrad_area < area_need ){ \ free( seq-> region_xgrad ); \ seq-> region_xgrad= malloc( area_need * sizeof(int) ); \ if( ! seq-> region_xgrad ) \ return -1; \ seq-> region_xgrad_area= area_need; \ } \ { \ int *writing= seq-> region_xgrad; \ int *write_end= writing + area_need; \ int *write_stop; \ for( ; writing < write_end; reading+= read_skip ) \ for( write_stop= writing + region_xgrad_width; writing < write_stop; ++reading, ++writing ) \ *writing= reading[1] - reading[0]; \ } \ } \ { /* fill region_ygrad */ \ TYPE *reading= (TYPE*) IM_REGION_ADDR( make_from, require. left, require. top ); \ size_t read_line= IM_REGION_LSKIP( make_from ) / sizeof(TYPE); \ size_t read_skip= read_line - require. width; \ size_t area_need= require. width * region_ygrad_height; \ \ if( seq-> region_ygrad_area < area_need ){ \ free( seq-> region_ygrad ); \ seq-> region_ygrad= malloc( area_need * sizeof(int) ); \ if( ! seq-> region_ygrad ) \ return -1; \ seq-> region_ygrad_area= area_need; \ } \ { \ int *writing= seq-> region_ygrad; \ int *write_end= writing + area_need; \ int *write_stop; \ for( ; writing < write_end; reading+= read_skip ) \ for( write_stop= writing + require. width; writing < write_stop; ++reading, ++writing ) \ *writing= reading[ read_line ] - reading[0]; \ } \ } switch( make_from-> im-> BandFmt ){ case IM_BANDFMT_UCHAR: FILL_BUFFERS( unsigned char ) break; case IM_BANDFMT_CHAR: FILL_BUFFERS( signed char ) break; case IM_BANDFMT_USHORT: FILL_BUFFERS( unsigned short int ) break; case IM_BANDFMT_SHORT: FILL_BUFFERS( signed short int ) break; case IM_BANDFMT_UINT: FILL_BUFFERS( unsigned int ) break; case IM_BANDFMT_INT: FILL_BUFFERS( signed int ) break; default: g_assert( 0 ); } { /* write to output */ size_t write_skip= IM_REGION_LSKIP( to_make ) / sizeof( float ); float *writing= (float*) IM_REGION_ADDR_TOPLEFT( to_make ); float *write_end= writing + write_skip * to_make-> valid. height; float *write_stop; size_t write_width= to_make-> valid. width; size_t small_xgrad_width= small_xgrad-> Xsize; size_t small_ygrad_width= small_ygrad-> Xsize; int *small_xgrad_end= (int*) small_xgrad-> data + small_xgrad_width * small_xgrad-> Ysize; int *small_ygrad_end= (int*) small_ygrad-> data + small_ygrad_width * small_ygrad-> Ysize; int *region_xgrad_start= seq-> region_xgrad; int *region_ygrad_start= seq-> region_ygrad; size_t region_xgrad_start_skip= region_xgrad_width - write_width; size_t region_ygrad_start_skip= require. width - write_width; size_t region_xgrad_read_skip= region_xgrad_width - small_xgrad_width; size_t region_ygrad_read_skip= require. width - small_ygrad_width; write_skip-= write_width; for( ; writing < write_end; writing+= write_skip, region_xgrad_start+= region_xgrad_start_skip, region_ygrad_start+= region_ygrad_start_skip ) for( write_stop= writing + write_width; writing < write_stop; ++writing, ++region_xgrad_start, ++region_ygrad_start ){ gint64 sum= 0; { int *small_xgrad_read= (int*) small_xgrad-> data; int *small_xgrad_stop; int *region_xgrad_read= region_xgrad_start; for( ; small_xgrad_read < small_xgrad_end; region_xgrad_read+= region_xgrad_read_skip ) for( small_xgrad_stop= small_xgrad_read + small_xgrad_width; small_xgrad_read < small_xgrad_stop; ++small_xgrad_read, ++region_xgrad_read ) sum+= *small_xgrad_read * *region_xgrad_read; } { int *small_ygrad_read= (int*) small_ygrad-> data; int *small_ygrad_stop; int *region_ygrad_read= region_ygrad_start; for( ; small_ygrad_read < small_ygrad_end; region_ygrad_read+= region_ygrad_read_skip ) for( small_ygrad_stop= small_ygrad_read + small_ygrad_width; small_ygrad_read < small_ygrad_stop; ++small_ygrad_read, ++region_ygrad_read ) sum+= *small_ygrad_read * *region_ygrad_read; } *writing= sum; } } return 0; } #define XGRAD_GEN_DEFINITION( TYPE ) \ static int xgrad_gen_ ## TYPE( REGION *to_make, void *vptr_make_from, void *unrequired, void *unreq2 ){ \ \ REGION *make_from= (REGION*) vptr_make_from; \ Rect require= { \ to_make-> valid. left, \ to_make-> valid. top, \ to_make-> valid. width + 1, \ to_make-> valid. height \ }; \ if( im_prepare( make_from, &require ) ) \ return -1; \ \ { \ int *writing= (int*) IM_REGION_ADDR_TOPLEFT( to_make ); \ size_t write_skip= IM_REGION_LSKIP( to_make ) / sizeof(int); \ int *write_end= writing + write_skip * to_make-> valid. height; \ size_t write_width= to_make-> valid. width; \ int *write_stop; \ \ TYPE *reading= (TYPE*) IM_REGION_ADDR( make_from, require. left, require. top ); \ size_t read_skip= ( IM_REGION_LSKIP( make_from ) / sizeof(TYPE) ) - write_width; \ \ write_skip-= write_width; \ \ for( ; writing < write_end; writing+= write_skip, reading+= read_skip ) \ for( write_stop= writing + write_width; writing < write_stop; ++writing, ++reading ) \ *writing= (int)( reading[1] - reading[0] ); \ } \ return 0; \ } #define YGRAD_GEN_DEFINITION( TYPE ) \ static int ygrad_gen_ ## TYPE( REGION *to_make, void *vptr_make_from, void *unrequired, void *unreq2 ){ \ \ REGION *make_from= (REGION*) vptr_make_from; \ Rect require= { \ to_make-> valid. left, \ to_make-> valid. top, \ to_make-> valid. width, \ to_make-> valid. height + 1 \ }; \ if( im_prepare( make_from, &require ) ) \ return -1; \ \ { \ int *writing= (int*) IM_REGION_ADDR_TOPLEFT( to_make ); \ size_t write_skip= IM_REGION_LSKIP( to_make ) / sizeof(int); \ int *write_end= writing + write_skip * to_make-> valid. height; \ size_t write_width= to_make-> valid. width; \ int *write_stop; \ \ TYPE *reading= (TYPE*) IM_REGION_ADDR( make_from, require. left, require. top ); \ size_t read_line= IM_REGION_LSKIP( make_from ) / sizeof(TYPE); \ size_t read_skip= read_line - write_width; \ \ write_skip-= write_width; \ \ for( ; writing < write_end; writing+= write_skip, reading+= read_skip ) \ for( write_stop= writing + write_width; writing < write_stop; ++writing, ++reading ) \ *writing= (int)( reading[ read_line ] - reading[0] ); \ } \ return 0; \ } XGRAD_GEN_DEFINITION( guint8 ) YGRAD_GEN_DEFINITION( guint8 ) XGRAD_GEN_DEFINITION( gint8 ) YGRAD_GEN_DEFINITION( gint8 ) XGRAD_GEN_DEFINITION( guint16 ) YGRAD_GEN_DEFINITION( guint16 ) XGRAD_GEN_DEFINITION( gint16 ) YGRAD_GEN_DEFINITION( gint16 ) XGRAD_GEN_DEFINITION( guint32 ) YGRAD_GEN_DEFINITION( guint32 ) XGRAD_GEN_DEFINITION( gint32 ) YGRAD_GEN_DEFINITION( gint32 ) #if 0 XGRAD_GEN_DEFINITION( float ) YGRAD_GEN_DEFINITION( float ) XGRAD_GEN_DEFINITION( double ) YGRAD_GEN_DEFINITION( double ) #endif vips-8.2.2/libvips/deprecated/im_measure.c0000664000175000017500000001245412530402247015476 00000000000000/* im_measure.c * * Modified: * 19/8/94 JC * - now uses doubles for addressing * - could miss by up to h pixels previously! * - ANSIfied * - now issues warning if any deviations are greater than 20% of the * mean * 31/10/95 JC * - more careful about warning for averages <0, or averages near zero * - can get these cases with im_measure() of IM_TYPE_LAB images * 28/10/02 JC * - number bands from zero in error messages * 7/7/04 * - works on labq * 18/8/08 * - add gtkdoc comments * - remove deprecated im_extract() * 30/11/09 * - changes for im_extract() broke averaging * 9/11/11 * - moved to deprecated, the new VipsMeasure does not have the * select-patches thing, so we have to keep this around */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* Measure into array. */ static int measure_patches( IMAGE *im, double *coeff, int left, int top, int width, int height, int u, int v, int *sel, int nsel ) { IMAGE *tmp; int patch; int i, j; int m, n; double avg, dev; int x, y, w, h; /* How large are the patches we are to measure? */ double pw = (double) width / (double) u; double ph = (double) height / (double) v; /* Set up sub to be the size we need for a patch. */ w = (pw + 1) / 2; h = (ph + 1) / 2; /* Loop through sel, picking out areas to measure. */ for( j = 0, patch = 0; patch < nsel; patch++ ) { /* Sanity check. Is the patch number sensible? */ if( sel[patch] <= 0 || sel[patch] > u * v ) { im_error( "im_measure", _( "patch %d is out of range" ), sel[patch] ); return( 1 ); } /* Patch coordinates. */ m = (sel[patch] - 1) % u; n = (sel[patch] - 1) / u; /* Move sub to correct position. */ x = left + m * pw + (pw + 2) / 4; y = top + n * ph + (ph + 2) / 4; /* Loop through bands. */ for( i = 0; i < im->Bands; i++, j++ ) { /* Make temp buffer to extract to. */ if( !(tmp = im_open( "patch", "t" )) ) return( -1 ); /* Extract and measure. */ if( im_extract_areabands( im, tmp, x, y, w, h, i, 1 ) || im_avg( tmp, &avg ) || im_deviate( tmp, &dev ) ) { im_close( tmp ); return( -1 ); } im_close( tmp ); /* Is the deviation large compared with the average? * This could be a clue that our parameters have * caused us to miss the patch. Look out for averages * <0, or averages near zero (can get these if use * im_measure() on IM_TYPE_LAB images). */ if( dev * 5 > fabs( avg ) && fabs( avg ) > 3 ) im_warn( "im_measure", _( "patch %d, band %d: " "avg = %g, sdev = %g" ), patch, i, avg, dev ); /* Save results. */ coeff[j] = avg; } } return( 0 ); } static DOUBLEMASK * internal_im_measure_area( IMAGE *im, int left, int top, int width, int height, int u, int v, int *sel, int nsel, const char *name ) { DOUBLEMASK *mask; if( im_check_uncoded( "im_measure", im ) || im_check_noncomplex( "im_measure", im ) ) return( NULL ); /* Default to all patches if sel == NULL. */ if( sel == NULL ) { int i; nsel = u * v; if( !(sel = IM_ARRAY( im, nsel, int )) ) return( NULL ); for( i = 0; i < nsel; i++ ) sel[i] = i + 1; } /* What size mask do we need? */ if( !(mask = im_create_dmask( name, im->Bands, nsel )) ) return( NULL ); /* Perform measure and return. */ if( measure_patches( im, mask->coeff, left, top, width, height, u, v, sel, nsel ) ) { im_free_dmask( mask ); return( NULL ); } return( mask ); } DOUBLEMASK * im_measure_area( IMAGE *im, int left, int top, int width, int height, int u, int v, int *sel, int nsel, const char *name ) { DOUBLEMASK *mask; VipsImage *t; /* The old im_measure() worked on labq. */ if( im->Coding == IM_CODING_LABQ ) { if( !(t = im_open( "measure-temp", "p" )) ) return( NULL ); if( im_LabQ2Lab( im, t ) || !(mask = im_measure_area( t, left, top, width, height, u, v, sel, nsel, name )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( mask ); } if( sel ) return( internal_im_measure_area( im, left, top, width, height, u, v, sel, nsel, name ) ); else { if( vips_measure( im, &t, u, v, "left", left, "top", top, "width", width, "height", height, NULL ) ) return( NULL ); if( !(mask = im_vips2mask( t, name )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( mask ); } } vips-8.2.2/libvips/deprecated/im_resize_linear.c0000664000175000017500000001104612530402247016664 00000000000000/* im_lowpass() * History: * 27/10/94 JC * - IM_ARRAY modified to use local allocation * - im_iscomplex() call added * 17/2/95 JC * - modernised a little * 18/8/95 JC * - name changed to reflect function more closely * 2/6/04 * - was detecting edges incorrectly, segv for some images (thanks Javi) */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* What we do for each pel. */ #define LOOP( TYPE ) \ if( Xint >= 0 && Yint >=0 && \ Xint < in->Xsize-1 && Yint < in->Ysize-1 ) \ for( bb = 0; bb < in->Bands; bb++ ) { \ TYPE s1 = *((TYPE *) p); \ TYPE s2 = *((TYPE *) (p + ips)); \ TYPE s3 = *((TYPE *) (p + ils)); \ TYPE s4 = *((TYPE *) (p + ips + ils)); \ TYPE *t = (TYPE *) q; \ \ *t = (1-dx)*(1-dy)*s1 + dx*(1-dy)*s2 + \ dy*(1-dx)*s3 + dx*dy*s4; \ \ p += ies; \ q += oes; \ } \ else if( Xint == in->Xsize-1 && Yint >= 0 && Yint < in->Ysize - 1 ) \ for( bb = 0; bb < in->Bands; bb++ ) { \ TYPE s1 = *((TYPE *) p); \ TYPE s3 = *((TYPE *) (p + ils)); \ TYPE *t = (TYPE *) q; \ \ *t = (1-dy)*s1 + dy*s3; \ \ p += ies; \ q += oes; \ } \ else if( Yint == in->Ysize-1 && Xint >= 0 && Xint < in->Xsize - 1 ) \ for( bb = 0; bb < in->Bands; bb++ ) { \ TYPE s1 = *((TYPE *) p); \ TYPE s2 = *((TYPE *) (p + ips)); \ TYPE *t = (TYPE *) q; \ \ *t = (1-dx)*s1 + dx*s2; \ \ p += ies; \ q += oes; \ } \ else \ for( bb = 0; bb < in->Bands; bb++ ) { \ unsigned char s1 = *((unsigned char *) p); \ TYPE *t = (TYPE *) q; \ \ *t = s1; \ \ p += ies; \ q += oes; \ } int im_resize_linear( IMAGE *in, IMAGE *out, int X, int Y ) { double dx, dy, xscale, yscale; double Xnew, Ynew; /* inv. coord. of the interpolated pt */ int x, y; int Xint, Yint; int bb; PEL *input, *opline; PEL *q, *p; int ils, ips, ies; /* Input and output line, pel and */ int ols, oes; /* element sizes */ if( im_iocheck( in, out ) ) return( -1 ); if( vips_band_format_iscomplex( in->BandFmt ) ) { im_error( "im_lowpass", "%s", _( "non-complex input only" ) ); return( -1 ); } if( in->Coding != IM_CODING_NONE ) { im_error("im_lowpass: ", "%s", _( "put should be uncoded") ); return( -1 ); } if( im_cp_desc( out, in ) ) return( -1 ); out->Xsize = X; out->Ysize = Y; if( im_setupout( out ) ) return( -1 ); ils = IM_IMAGE_SIZEOF_LINE( in ); ips = IM_IMAGE_SIZEOF_PEL( in ); ies = IM_IMAGE_SIZEOF_ELEMENT( in ); ols = IM_IMAGE_SIZEOF_LINE( out ); oes = IM_IMAGE_SIZEOF_ELEMENT( out ); /* buffer lines ***************/ if( !(opline = IM_ARRAY( out, ols, PEL )) ) return( -1 ); /* Resampling *************/ input = (PEL*) in->data; xscale = ((double)in->Xsize-1)/(X-1); yscale = ((double)in->Ysize-1)/(Y-1); for (y=0; yBandFmt ) { case IM_BANDFMT_UCHAR: LOOP( unsigned char); break; case IM_BANDFMT_USHORT: LOOP( unsigned short ); break; case IM_BANDFMT_UINT: LOOP( unsigned int ); break; case IM_BANDFMT_CHAR: LOOP( signed char ); break; case IM_BANDFMT_SHORT: LOOP( signed short ); break; case IM_BANDFMT_INT: LOOP( signed int ); break; case IM_BANDFMT_FLOAT: LOOP( float ); break; case IM_BANDFMT_DOUBLE: LOOP( double ); break; default: im_error( "im_lowpass", "%s", _( "unsupported image type" ) ); return( -1 ); /*NOTREACHED*/ } } if (im_writeline(y, out, opline) ) return(-1); } return(0); } vips-8.2.2/libvips/deprecated/im_convsub.c0000664000175000017500000002216212530402247015511 00000000000000/* @(#) Function which convolves and subsamples VASARI format picture * @(#) with a mask stored in a file argument. * @(#) * @(#) int im_convsub( in, out, mask, xskip, yskip ) * @(#) IMAGE *in, *out; * @(#) INTMASK *mask; details in vips.h * @(#) int xskip, yskip; is the subsamping factor along both directions * @(#) * @(#) Returns either 0 (sucess) or -1 (fail) * @(#) * @(#) Picture can have any number of channels (max 64). * @(#) It is assummed that the output picture is subsampled on * @(#) both directions by a factor of xskip horizontally and yskip vertically. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 29/04/1991 * Modified on: */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* Create multiplication luts for all non zero elements of the original mask; * which is kept in buffer of length buffersize * cnt is needed for freeing luts */ static int im__create_int_luts( int *buffer, int buffersize, int **orig_luts, int **luts, int *cnt ) { int *pbuffer; int *buf1, *buf2, *pbuf1, *pbuf2; int i, j; int min, max; int mark; /* used to mark the buffer mark = max+1 */ int counter; /* counts the no of unique elms in mask; returned in cnt*/ buf1 = (int*)calloc( (unsigned)buffersize, sizeof(int) ); buf2 = (int*)calloc( (unsigned)buffersize, sizeof(int) ); if ( ( buf1 == NULL ) || ( buf2 == NULL ) ) { im_error( "im_create_int_luts", "%s", _( "calloc failed (1)") ); return( -1 ); } pbuffer = buffer; pbuf1 = buf1; /* find max and copy mask to buf1 */ max = *pbuffer; for ( i=0; i < buffersize; i++ ) { if ( *pbuffer > max ) max = *pbuffer; *pbuf1++ = *pbuffer++; } mark = max + 1; pbuf1 = buf1; pbuf2 = buf2; counter = 0; /* find a min at a time; put it into buf2 and mark all values of * buf1 equal to found min, to INT_MAX */ for ( i=0; i < buffersize; i++ ) { min = mark + 1; /* force min to be greater than mark */ pbuf1 = buf1; /* find a min */ for ( j=0; j < buffersize; j++ ) { if ( *pbuf1 < min ) min = *pbuf1; pbuf1++; } if ( min == mark ) /* all min are found */ break; *pbuf2++ = min; counter++; pbuf1 = buf1; for ( j=0; j < buffersize; j++ ) /* mark values equal to min */ { if ( *pbuf1 == min ) *pbuf1 = mark; pbuf1++; } } /* buf2 should keep now counter unique values of the mask, descending order * Malloc counter luts and initialise them */ pbuf2 = buf2; for ( i=0; ixsize * m->ysize */ int **lut_orig, **lut; int lutcnt = 0; int rounding, sum; int tempsize; /* Check input, output and vars */ if ((xskip < 1)||(yskip < 1)) { im_error( "im_convsub", "%s", _( "xskip and yskip must be >= 1") ); return(-1); } if (im_iocheck(in, out) == -1) return( -1 ); if ( (in->Coding != IM_CODING_NONE)|| (in->BandFmt != IM_BANDFMT_UCHAR) ) { im_error( "im_convsub", "%s", _( "nput should be unsigned char uncoded") ); return(-1); } /* Prepare output */ if (im_cp_desc(out, in) == -1) return( -1 ); tempsize = in->Xsize/xskip; while ( 1 ) { if ( tempsize * xskip + m->xsize < in->Xsize ) break; else tempsize--; if ( tempsize < 0 ) break; } out->Xsize = tempsize; tempsize = in->Ysize/yskip; while ( 1 ) { if ( tempsize * yskip + m->ysize < in->Ysize ) break; else tempsize--; if ( tempsize < 0 ) break; } out->Ysize = tempsize; if ( ( out->Xsize < 2 )||( out->Ysize < 2 ) ) { im_error( "im_convsub", "%s", _( "too small output sizes") ); return(-1); } if( im_setupout(out) == -1) return(-1); /* Malloc one line of output data */ os = out->Xsize * out->Bands; if ( (line=(PEL*)calloc( (unsigned)os, sizeof(char))) == NULL) { im_error( "im_convsub", "%s", _( "unable to calloc(1)") ); return(-1); } /* Malloc pointers and put them at correct location */ ms = m->xsize * m->ysize; count = 0; /* exclude the non-zero elms */ pm = m->coeff; for ( i=0; idata; pm = m->coeff; pnewm = newm; for (y=0; yysize; y++) { for (x=0; xxsize; x++) { if ( *pm != 0 ) { *pnewm++ = *pm; pnt[i] = (input +(x + y*in->Xsize) * in->Bands); i++; } pm++; } } if ( i != count ) { im_error( "im_convsub", "%s", _( "impossible state") ); return(-1); } /* Malloc pointers; not all lut_orig are used necessarily */ lut_orig = (int**)calloc((unsigned)count, sizeof(int**) ); lut = (int**)calloc((unsigned)count, sizeof(int**) ); if ( (lut == NULL) || (lut_orig == NULL) ) { im_error( "im_conv", "%s", _( "unable to calloc(1)") ); return(-1); } /* Create luts; count is needed for freeing pointers. Not all lut_orig are used * if zero elms are detected. */ if ( im__create_int_luts(newm, count, lut_orig, lut, &lutcnt ) == -1 ) { im_error( "im_convsub", "%s", _( "im_create_int_luts failed") ); return(-1); } rounding = m->scale/2; /* Output out->Ysize processed lines */ for(y=0; y < out->Ysize; y++) { cpline = line; for (i=0; iXsize * in->Bands * yskip ); } /* process out->Xsize points */ for( x = 0; x < out->Xsize; x++ ) { for (i=0; iBands; } for ( b=0; bBands; b++ ) { sum = 0; for (i=0; iscale ) + m->offset; if ( sum < (int)0 ) { n_clipped++; sum = (int)0; } else if ( sum > (int)255) { p_clipped++; sum = (int)255; } *cpline++ = (unsigned char)sum; } } /* Output the calculated line */ if ( im_writeline(y, out, (PEL*)line) == -1 ) { free((char*)line); free((char*)newm); free((char*)pnts); free((char*)cpnt1s); free((char*)cpnt2s); for ( i=0; i #endif /*HAVE_CONFIG_H*/ #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Args to im_addgnoise. */ static im_arg_desc addgnoise_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "sigma" ) }; /* Call im_addgnoise via arg vector. */ static int addgnoise_vec( im_object *argv ) { double sigma = *((double *) argv[2]); return( im_addgnoise( argv[0], argv[1], sigma ) ); } /* Description of im_addgnoise. */ static im_function addgnoise_desc = { "im_addgnoise", /* Name */ "add gaussian noise with mean 0 and std. dev. sigma", IM_FN_PIO, /* Flags */ addgnoise_vec, /* Dispatch function */ IM_NUMBER( addgnoise_args ), /* Size of arg list */ addgnoise_args /* Arg list */ }; /* Args to im_contrast_surface. */ static im_arg_desc contrast_surface_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "half_win_size" ), IM_INPUT_INT( "spacing" ) }; /* Call im_contrast_surface via arg vector. */ static int contrast_surface_vec( im_object *argv ) { int half_win_size = *((int *) argv[2]); int spacing = *((int *) argv[3]); return( im_contrast_surface( argv[0], argv[1], half_win_size, spacing ) ); } /* Description of im_contrast_surface. */ static im_function contrast_surface_desc = { "im_contrast_surface", /* Name */ "find high-contrast points in an image", IM_FN_PIO, /* Flags */ contrast_surface_vec, /* Dispatch function */ IM_NUMBER( contrast_surface_args ),/* Size of arg list */ contrast_surface_args /* Arg list */ }; /* Args to im_sharpen. */ static im_arg_desc sharpen_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "mask_size" ), IM_INPUT_DOUBLE( "x1" ), IM_INPUT_DOUBLE( "y2" ), IM_INPUT_DOUBLE( "y3" ), IM_INPUT_DOUBLE( "m1" ), IM_INPUT_DOUBLE( "m2" ) }; /* Call im_sharpen via arg vector. */ static int sharpen_vec( im_object *argv ) { int mask_size = *((int *) argv[2]); double x1 = *((double *) argv[3]); double x2 = *((double *) argv[4]); double x3 = *((double *) argv[5]); double m1 = *((double *) argv[6]); double m2 = *((double *) argv[7]); return( im_sharpen( argv[0], argv[1], mask_size, x1, x2, x3, m1, m2 ) ); } /* Description of im_sharpen. */ static im_function sharpen_desc = { "im_sharpen", /* Name */ "sharpen high frequencies of L channel of LabQ", IM_FN_PIO, /* Flags */ sharpen_vec, /* Dispatch function */ IM_NUMBER( sharpen_args ), /* Size of arg list */ sharpen_args /* Arg list */ }; /* Args for convolver with imask. */ static im_arg_desc conv_imask[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "matrix" ) }; /* Args for convolver with dmask. */ static im_arg_desc conv_dmask[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ) }; /* Call im_compass via arg vector. */ static int compass_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_compass( argv[0], argv[1], mo->mask ) ); } /* Description of im_compass. */ static im_function compass_desc = { "im_compass", /* Name */ "convolve with 8-way rotating integer mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ compass_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_conv via arg vector. */ static int conv_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_conv( argv[0], argv[1], mo->mask ) ); } /* Description of im_conv. */ static im_function conv_desc = { "im_conv", /* Name */ "convolve", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ conv_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_conv_f via arg vector. */ static int conv_f_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_conv_f( argv[0], argv[1], mo->mask ) ); } /* Description of im_conv_f. */ static im_function conv_f_desc = { "im_conv_f", /* Name */ "convolve, with DOUBLEMASK", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ conv_f_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_convsep via arg vector. */ static int convsep_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsep( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsep. */ static im_function convsep_desc = { "im_convsep", /* Name */ "seperable convolution", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ convsep_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_convsep_f via arg vector. */ static int convsep_f_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsep_f( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsep_f. */ static im_function convsep_f_desc = { "im_convsep_f", /* Name */ "seperable convolution, with DOUBLEMASK", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ convsep_f_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_fastcor via arg vector. */ static int fastcor_vec( im_object *argv ) { return( im_fastcor( argv[0], argv[1], argv[2] ) ); } /* Description of im_fastcor. */ static im_function fastcor_desc = { "im_fastcor", /* Name */ "fast correlate in2 within in1", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ fastcor_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_grad_x via arg vector. */ static int grad_x_vec( im_object *argv ) { return( im_grad_x( argv[0], argv[1] ) ); } /* Description of im_grad_x. */ static im_function grad_x_desc = { "im_grad_x", /* Name */ "horizontal difference image", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ grad_x_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_grad_y via arg vector. */ static int grad_y_vec( im_object *argv ) { return( im_grad_y( argv[0], argv[1] ) ); } /* Description of im_grad_y. */ static im_function grad_y_desc = { "im_grad_y", /* Name */ "vertical difference image", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ grad_y_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_gradcor via arg vector. */ static int gradcor_vec( im_object *argv ) { return( im_gradcor( argv[0], argv[1], argv[2] ) ); } /* Description of im_gradcor. */ static im_function gradcor_desc = { "im_gradcor", /* Name */ "non-normalised correlation of gradient of in2 within in1", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ gradcor_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_gradient via arg vector. */ static int gradient_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_gradient( argv[0], argv[1], mo->mask ) ); } /* Description of im_gradient. */ static im_function gradient_desc = { "im_gradient", /* Name */ "convolve with 2-way rotating mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ gradient_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_lindetect via arg vector. */ static int lindetect_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_lindetect( argv[0], argv[1], mo->mask ) ); } /* Description of im_lindetect. */ static im_function lindetect_desc = { "im_lindetect", /* Name */ "convolve with 4-way rotating mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ lindetect_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_spcor via arg vector. */ static int spcor_vec( im_object *argv ) { return( im_spcor( argv[0], argv[1], argv[2] ) ); } /* Description of im_spcor. */ static im_function spcor_desc = { "im_spcor", /* Name */ "normalised correlation of in2 within in1", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ spcor_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Args for im_aconv(). */ static im_arg_desc aconv_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ), IM_INPUT_INT( "n_layers" ), IM_INPUT_INT( "cluster" ) }; /* Call im_aconv via arg vector. */ static int aconv_vec( im_object *argv ) { im_mask_object *mo = argv[2]; int n_layers = *((int *) argv[3]); int cluster = *((int *) argv[4]); return( im_aconv( argv[0], argv[1], mo->mask, n_layers, cluster ) ); } /* Description of im_aconv. */ static im_function aconv_desc = { "im_aconv", /* Name */ "approximate convolution", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ aconv_vec, /* Dispatch function */ IM_NUMBER( aconv_args ), /* Size of arg list */ aconv_args /* Arg list */ }; /* Args for im_aconvsep(). */ static im_arg_desc aconvsep_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ), IM_INPUT_INT( "n_layers" ) }; /* Call im_aconvsep via arg vector. */ static int aconvsep_vec( im_object *argv ) { im_mask_object *mo = argv[2]; int n_layers = *((int *) argv[3]); return( im_aconvsep( argv[0], argv[1], mo->mask, n_layers ) ); } /* Description of im_aconvsep. */ static im_function aconvsep_desc = { "im_aconvsep", /* Name */ "approximate separable convolution", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ aconvsep_vec, /* Dispatch function */ IM_NUMBER( aconvsep_args ), /* Size of arg list */ aconvsep_args /* Arg list */ }; /* Package up all these functions. */ static im_function *convol_list[] = { &aconvsep_desc, &aconv_desc, &addgnoise_desc, &compass_desc, &contrast_surface_desc, &conv_desc, &conv_f_desc, &convsep_desc, &convsep_f_desc, &fastcor_desc, &gradcor_desc, &gradient_desc, &grad_x_desc, &grad_y_desc, &lindetect_desc, &sharpen_desc, &spcor_desc, }; /* Package of functions. */ im_package im__convolution = { "convolution", IM_NUMBER( convol_list ), convol_list }; vips-8.2.2/libvips/deprecated/mask_dispatch.c0000664000175000017500000003230512530402247016157 00000000000000/* VIPS function dispatch tables for matricies. * * J. Cupitt, 14/2/95. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* One matrix in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_DMASK( "in" ), IM_OUTPUT_DMASK( "out" ) }; /* Two matricies in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_DMASK( "in1" ), IM_INPUT_DMASK( "in2" ), IM_OUTPUT_DMASK( "out" ) }; /* Call im_matinv via arg vector. */ static int matinv_vec( im_object *argv ) { im_mask_object *in = argv[0]; im_mask_object *out = argv[1]; if( !(out->mask = im_matinv( in->mask, out->name )) ) return( -1 ); return( 0 ); } /* Description of im_matinv. */ static im_function matinv_desc = { "im_matinv", /* Name */ "invert matrix", 0, /* Flags */ matinv_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_mattrn via arg vector. */ static int mattrn_vec( im_object *argv ) { im_mask_object *in = argv[0]; im_mask_object *out = argv[1]; if( !(out->mask = im_mattrn( in->mask, out->name )) ) return( -1 ); return( 0 ); } /* Description of im_mattrn. */ static im_function mattrn_desc = { "im_mattrn", /* Name */ "transpose matrix", 0, /* Flags */ mattrn_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_matcat via arg vector. */ static int matcat_vec( im_object *argv ) { im_mask_object *in1 = argv[0]; im_mask_object *in2 = argv[1]; im_mask_object *out = argv[2]; if( !(out->mask = im_matcat( in1->mask, in2->mask, out->name )) ) return( -1 ); return( 0 ); } /* Description of im_matcat. */ static im_function matcat_desc = { "im_matcat", /* Name */ "append matrix in2 to the end of matrix in1", 0, /* Flags */ matcat_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_matmul via arg vector. */ static int matmul_vec( im_object *argv ) { im_mask_object *in1 = argv[0]; im_mask_object *in2 = argv[1]; im_mask_object *out = argv[2]; if( !(out->mask = im_matmul( in1->mask, in2->mask, out->name )) ) return( -1 ); return( 0 ); } /* Description of im_matmul. */ static im_function matmul_desc = { "im_matmul", /* Name */ "multiply matrix in1 by matrix in2", 0, /* Flags */ matmul_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Args for im_read_dmask() */ static im_arg_desc read_dmask_args[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_DMASK( "mask" ) }; /* Call im_read_dmask via arg vector. */ static int read_dmask_vec( im_object *argv ) { im_mask_object *mo = argv[1]; if( !(mo->mask = im_read_dmask( argv[0] )) ) return( -1 ); return( 0 ); } /* Description of im_read_dmask(). */ static im_function read_dmask_desc = { "im_read_dmask", /* Name */ "read matrix of double from file", 0, /* Flags */ read_dmask_vec, /* Dispatch function */ IM_NUMBER( read_dmask_args ), /* Size of arg list */ read_dmask_args /* Arg list */ }; /* Args for im_gauss_dmask. */ static im_arg_desc gauss_dmask_args[] = { IM_OUTPUT_DMASK( "mask" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "min_amp" ) }; /* Call im_gauss_dmask via arg vector. */ static int gauss_dmask_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_gauss_dmask( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_gauss_dmask. */ static im_function gauss_dmask_desc = { "im_gauss_dmask", /* Name */ "generate gaussian DOUBLEMASK", 0, /* Flags */ gauss_dmask_vec, /* Dispatch function */ IM_NUMBER( gauss_dmask_args ), /* Size of arg list */ gauss_dmask_args /* Arg list */ }; /* Call im_gauss_dmask_sep via arg vector. */ static int gauss_dmask_sep_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_gauss_dmask_sep( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_gauss_dmask_sep. */ static im_function gauss_dmask_sep_desc = { "im_gauss_dmask_sep", /* Name */ "generate separable gaussian DOUBLEMASK", 0, /* Flags */ gauss_dmask_sep_vec, /* Dispatch function */ IM_NUMBER( gauss_dmask_args ), /* Size of arg list */ gauss_dmask_args /* Arg list */ }; /* Args for im_gauss_imask. */ static im_arg_desc gauss_imask_args[] = { IM_OUTPUT_IMASK( "mask" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "min_amp" ) }; /* Call im_gauss_imask via arg vector. */ static int gauss_imask_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_gauss_imask( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_gauss_imask. */ static im_function gauss_imask_desc = { "im_gauss_imask", /* Name */ "generate gaussian INTMASK", 0, /* Flags */ gauss_imask_vec, /* Dispatch function */ IM_NUMBER( gauss_imask_args ), /* Size of arg list */ gauss_imask_args /* Arg list */ }; /* Call im_gauss_imask_sep via arg vector. */ static int gauss_imask_sep_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_gauss_imask_sep( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_gauss_imask_sep. */ static im_function gauss_imask_sep_desc = { "im_gauss_imask_sep", /* Name */ "generate separable gaussian INTMASK", 0, /* Flags */ gauss_imask_sep_vec, /* Dispatch function */ IM_NUMBER( gauss_imask_args ), /* Size of arg list */ gauss_imask_args /* Arg list */ }; /* Args for im_log_imask. */ static im_arg_desc log_imask_args[] = { IM_OUTPUT_IMASK( "mask" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "min_amp" ) }; /* Call im_log_imask via arg vector. */ static int log_imask_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_log_imask( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_log_imask. */ static im_function log_imask_desc = { "im_log_imask", /* Name */ "generate laplacian of gaussian INTMASK", 0, /* Flags */ log_imask_vec, /* Dispatch function */ IM_NUMBER( log_imask_args ), /* Size of arg list */ log_imask_args /* Arg list */ }; /* Args for im_log_dmask. */ static im_arg_desc log_dmask_args[] = { IM_OUTPUT_DMASK( "maskfile" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "min_amp" ) }; /* Call im_log_dmask via arg vector. */ static int log_dmask_vec( im_object *argv ) { im_mask_object *mo = argv[0]; double sigma = *((double *) argv[1]); double min_amp = *((double *) argv[2]); if( !(mo->mask = im_log_dmask( mo->name, sigma, min_amp )) ) return( -1 ); return( 0 ); } /* Description of im_log_dmask. */ static im_function log_dmask_desc = { "im_log_dmask", /* Name */ "generate laplacian of gaussian DOUBLEMASK", 0, /* Flags */ log_dmask_vec, /* Dispatch function */ IM_NUMBER( log_dmask_args ), /* Size of arg list */ log_dmask_args /* Arg list */ }; static im_arg_desc imask_args[] = { IM_INPUT_IMASK( "in" ), IM_OUTPUT_IMASK( "out" ) }; static im_arg_desc dmask_args[] = { IM_INPUT_DMASK( "in" ), IM_OUTPUT_DMASK( "out" ) }; /* Call im_rotate_imask45 via arg vector. */ static int rotate_imask45_vec( im_object *argv ) { im_mask_object *min = argv[0]; im_mask_object *mout = argv[1]; if( !(mout->mask = im_rotate_imask45( min->mask, mout->name )) ) return( -1 ); return( 0 ); } /* Description of im_rotate_imask45. */ static im_function rotate_imask45_desc = { "im_rotate_imask45", /* Name */ "rotate INTMASK clockwise by 45 degrees", 0, /* Flags */ rotate_imask45_vec, /* Dispatch function */ IM_NUMBER( imask_args ), /* Size of arg list */ imask_args /* Arg list */ }; /* Call im_rotate_imask90 via arg vector. */ static int rotate_imask90_vec( im_object *argv ) { im_mask_object *min = argv[0]; im_mask_object *mout = argv[1]; if( !(mout->mask = im_rotate_imask90( min->mask, mout->name )) ) return( -1 ); return( 0 ); } /* Description of im_rotate_imask90. */ static im_function rotate_imask90_desc = { "im_rotate_imask90", /* Name */ "rotate INTMASK clockwise by 90 degrees", 0, /* Flags */ rotate_imask90_vec, /* Dispatch function */ IM_NUMBER( imask_args ), /* Size of arg list */ imask_args /* Arg list */ }; /* Call im_rotate_dmask45 via arg vector. */ static int rotate_dmask45_vec( im_object *argv ) { im_mask_object *min = argv[0]; im_mask_object *mout = argv[1]; if( !(mout->mask = im_rotate_dmask45( min->mask, mout->name )) ) return( -1 ); return( 0 ); } /* Description of im_rotate_dmask45. */ static im_function rotate_dmask45_desc = { "im_rotate_dmask45", /* Name */ "rotate DOUBLEMASK clockwise by 45 degrees", 0, /* Flags */ rotate_dmask45_vec, /* Dispatch function */ IM_NUMBER( dmask_args ), /* Size of arg list */ dmask_args /* Arg list */ }; /* Call im_rotate_dmask90 via arg vector. */ static int rotate_dmask90_vec( im_object *argv ) { im_mask_object *min = argv[0]; im_mask_object *mout = argv[1]; if( !(mout->mask = im_rotate_dmask90( min->mask, mout->name )) ) return( -1 ); return( 0 ); } /* Description of im_rotate_dmask90. */ static im_function rotate_dmask90_desc = { "im_rotate_dmask90", /* Name */ "rotate DOUBLEMASK clockwise by 90 degrees", 0, /* Flags */ rotate_dmask90_vec, /* Dispatch function */ IM_NUMBER( dmask_args ), /* Size of arg list */ dmask_args /* Arg list */ }; static int imask_xsize_vec( im_object *argv ) { *( (int*) argv[1] )= ( (INTMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> xsize; return 0; } static int imask_ysize_vec( im_object *argv ) { *( (int*) argv[1] )= ( (INTMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> ysize; return 0; } static int dmask_xsize_vec( im_object *argv ) { *( (int*) argv[1] )= ( (DOUBLEMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> xsize; return 0; } static int dmask_ysize_vec( im_object *argv ) { *( (int*) argv[1] )= ( (DOUBLEMASK*) ( ( (im_mask_object*) argv[0] )-> mask ) )-> ysize; return 0; } static im_arg_desc imask_size_args[] = { IM_INPUT_IMASK( "mask" ), IM_OUTPUT_INT( "size" ) }; static im_arg_desc dmask_size_args[] = { IM_INPUT_DMASK( "mask" ), IM_OUTPUT_INT( "size" ) }; static im_function imask_xsize_desc = { "im_imask_xsize", /* Name */ "horizontal size of an intmask", /* Description */ 0, /* Flags */ imask_xsize_vec, /* Dispatch function */ IM_NUMBER( imask_size_args ), /* Size of arg list */ imask_size_args /* Arg list */ }; static im_function imask_ysize_desc = { "im_imask_ysize", /* Name */ "vertical size of an intmask", /* Description */ 0, /* Flags */ imask_ysize_vec, /* Dispatch function */ IM_NUMBER( imask_size_args ), /* Size of arg list */ imask_size_args /* Arg list */ }; static im_function dmask_xsize_desc = { "im_dmask_xsize", /* Name */ "horizontal size of a doublemask", /* Description */ 0, /* Flags */ dmask_xsize_vec, /* Dispatch function */ IM_NUMBER( dmask_size_args ), /* Size of arg list */ dmask_size_args /* Arg list */ }; static im_function dmask_ysize_desc = { "im_dmask_ysize", /* Name */ "vertical size of a doublemask", /* Description */ 0, /* Flags */ dmask_ysize_vec, /* Dispatch function */ IM_NUMBER( dmask_size_args ), /* Size of arg list */ dmask_size_args /* Arg list */ }; /* Package up all these functions. */ static im_function *mask_list[] = { &gauss_dmask_desc, &gauss_dmask_sep_desc, &log_dmask_desc, &log_imask_desc, &gauss_imask_desc, &gauss_imask_sep_desc, &dmask_xsize_desc, &dmask_ysize_desc, &imask_xsize_desc, &imask_ysize_desc, &read_dmask_desc, &rotate_dmask45_desc, &rotate_dmask90_desc, &rotate_imask45_desc, &rotate_imask90_desc, &matcat_desc, &matinv_desc, &matmul_desc, &mattrn_desc }; /* Package of functions. */ im_package im__mask = { "mask", IM_NUMBER( mask_list ), mask_list }; vips-8.2.2/libvips/deprecated/tone.c0000664000175000017500000001016012530402247014305 00000000000000/* Various functions relating to tone curve adjustment. * * Author: John Cupitt * Written on: 18/7/1995 * 17/9/96 JC * - restrictions on Ps, Pm, Ph relaxed * - restrictions on S, M, H relaxed * 25/7/01 JC * - patched for im_extract_band() change * 11/7/04 * - generalised to im_tone_build_range() ... so you can use it for any * image, not just LabS * 26/3/10 * - cleanups * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /** * im_tone_map: * @in: input image * @out: output image * @lut: look-up table * * Map the first channel of @in through @lut. If @in is IM_CODING_LABQ, unpack * to LABS, map L and then repack. * * @in should be a LABS or LABQ image for this to work * sensibly. * * See also: im_maplut(). * * Returns: 0 on success, -1 on error */ int im_tone_map( IMAGE *in, IMAGE *out, IMAGE *lut ) { IMAGE *t[8]; if( im_check_hist( "im_tone_map", lut ) || im_open_local_array( out, t, 8, "im_tone_map", "p" ) ) return( -1 ); /* If in is IM_CODING_LABQ, unpack. */ if( in->Coding == IM_CODING_LABQ ) { if( im_LabQ2LabS( in, t[0] ) ) return( -1 ); } else t[0] = in; /* Split into bands. */ if( im_extract_band( t[0], t[1], 0 ) ) return( -1 ); if( t[0]->Bands > 1 ) { if( im_extract_bands( t[0], t[2], 1, t[0]->Bands - 1 ) ) return( -1 ); } /* Map L. */ if( im_maplut( t[1], t[3], lut ) ) return( -1 ); /* Recombine bands. */ if( t[0]->Bands > 1 ) { if( im_bandjoin( t[3], t[2], t[4] ) ) return( -1 ); } else t[4] = t[3]; /* If input was LabQ, repack. */ if( in->Coding == IM_CODING_LABQ ) { if( im_LabS2LabQ( t[4], t[5] ) ) return( -1 ); } else t[5] = t[4]; return( im_copy( t[4], out ) ); } /** * im_tone_analyse: * @in: input image * @out: output image * @Ps: shadow point (eg. 0.2) * @Pm: mid-tone point (eg. 0.5) * @Ph: highlight point (eg. 0.8) * @S: shadow adjustment (+/- 30) * @M: mid-tone adjustment (+/- 30) * @H: highlight adjustment (+/- 30) * * As im_tone_build(), but analyse the histogram of @in and use it to * pick the 0.1% and 99.9% points for @Lb and @Lw. * * See also: im_tone_build(). * * Returns: 0 on success, -1 on error */ int im_tone_analyse( IMAGE *in, IMAGE *out, double Ps, double Pm, double Ph, double S, double M, double H ) { IMAGE *t[4]; int low, high; double Lb, Lw; if( im_open_local_array( out, t, 4, "im_tone_map", "p" ) ) return( -1 ); /* If in is IM_CODING_LABQ, unpack. */ if( in->Coding == IM_CODING_LABQ ) { if( im_LabQ2LabS( in, t[0] ) ) return( -1 ); } else t[0] = in; /* Should now be 3-band short. */ if( im_check_uncoded( "im_tone_analyse", t[0] ) || im_check_bands( "im_tone_analyse", t[0], 3 ) || im_check_format( "im_tone_analyse", t[0], IM_BANDFMT_SHORT ) ) return( -1 ); if( im_extract_band( t[0], t[1], 0 ) || im_clip2fmt( t[1], t[2], IM_BANDFMT_USHORT ) ) return( -1 ); if( im_mpercent( t[2], 0.1 / 100.0, &high ) || im_mpercent( t[2], 99.9 / 100.0, &low ) ) return( -1 ); Lb = 100 * low / 32768; Lw = 100 * high / 32768; im_diag( "im_tone_analyse", "set Lb = %g, Lw = %g", Lb, Lw ); return( im_tone_build( out, Lb, Lw, Ps, Pm, Ph, S, M, H ) ); } vips-8.2.2/libvips/deprecated/glds_funcs.c0000664000175000017500000001364212530402247015477 00000000000000/* @(#) Calculates the spatial grey level differnce * @(#) matrix of an image and some of its * @(#) features. The 256x1 difference matrix of im is held by m * @(#) There should be enough margin around the box so the (dx,dy) can * @(#) access neighbouring pixels outside the box * @(#) * @(#) Usage: * @(#) int im_glds_matrix(im, m, xpos, ypos, xsize, ysize, dx, dy) * @(#) IMAGE *im, *m; * @(#) int xpos, ypos, xsize, ysize; location of the box within im * @(#) int dx, dy; displacements * @(#) * @(#) int im_glds_asm(m, asmoment) * @(#) IMAGE *m; * @(#) double *asmoment; * @(#) * @(#) int im_glds_contrast(m, contrast) * @(#) IMAGE *m; * @(#) double *contrast; * @(#) * @(#) int im_glds_entropy(m, entropy) * @(#) IMAGE *m; * @(#) double *entropy; * @(#) * @(#) int im_glds_mean(m, mean) * @(#) IMAGE *m; * @(#) double *mean; * @(#) * @(#) All functions return 0 on success and -1 on error * * Copyright: N. Dessipris, 1991 * Written on: 2/12/1991 * Modified on: * 22/7/93 JC * - im_incheck() added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* Keep the greylevel difference matrix as a 256x1 double image */ int im_glds_matrix( IMAGE *im, IMAGE *m, int xpos, int ypos, int xsize, int ysize, int dx, int dy ) { PEL *in, *cpin; int *b, *pb; double *l, *pl; int x, y; int ofs; int tmp; int norm; if (im_iocheck(im, m) == -1) return( -1 ); if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) { im_error( "im_glds_matrix", "%s", _( "Wrong input") ); return(-1); } if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { im_error( "im_glds_matrix", "%s", _( "wrong args") ); return(-1); } if (im_cp_desc(m, im) == -1) return( -1 ); m->Xsize = 256; m->Ysize = 1; m->BandFmt = IM_BANDFMT_DOUBLE; m->Type = IM_TYPE_B_W; if (im_setupout(m) == -1) return( -1 ); b = (int *)calloc( (unsigned)m->Xsize, sizeof(int) ); l = (double *)calloc( (unsigned)m->Xsize, sizeof(double)); if ( (b == NULL) || (l == NULL) ) { im_error( "im_glds_matrix", "%s", _( "calloc failed") ); return(-1); } in = (PEL*)im->data; in += ( ypos * im->Xsize + xpos ); ofs = dy * im->Xsize + dx; for ( y=0; yXsize; for ( x=0; xXsize; x++) *pl++ = ((double)(*pb++))/(double)norm; if (im_writeline( 0, m, (PEL *) l ) == -1) return( -1 ); free((char*)b); free((char*)l); return(0); } /* @(#) Calculates the asmoment of the sglds matrix held by m */ int im_glds_asm( IMAGE *m, double *asmoment ) { double temp, tmpasm, *in; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 1 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_glds_asm", "%s", _( "unable to accept input") ); return(-1);} tmpasm = 0.0; in = (double*)m->data; for(i=0; iXsize; i++) { temp = *in++; tmpasm += (temp*temp); } *asmoment = tmpasm; return(0); } /* @(#) Calculates the contrast of the coocurence matrix passed in buffer */ int im_glds_contrast( IMAGE *m, double *contrast ) { double tmpcon, *in; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 1 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_glds_contrast", "%s", _( "wrong input") ); return(-1); } tmpcon = 0.0; in = (double*)m->data; for(i=0; iXsize; i++) { tmpcon += ( ((double)i)*((double)i)*(*in) ); in++; } *contrast = tmpcon; return(0); } /* @(#) Calculates the entropy of the glds vector passed in buffer * @(#) Function returns the entropy based on log base 2. */ int im_glds_entropy( IMAGE *m, double *entropy ) { double tmpent, dtemp, *in; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 1 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_glds_entropy", "%s", _( "wrong input") ); return(-1); } tmpent = 0.0; in = (double*)m->data; for(i=0; iXsize; i++) { if(*in != 0) { dtemp = *in; tmpent += (dtemp*log10(dtemp)); } in++; } *entropy = ((-1)*tmpent/log10(2.0)); return(0); } /* @(#) Calculates the mean of the sglds matrix passed in m */ int im_glds_mean( IMAGE *m, double *mean ) { double tmpmean, *in; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 1 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_glds_mean", "%s", _( "wrong input") ); return(-1); } tmpmean = 0.0; in = (double*)m->data; for(i=0; iXsize; i++) { tmpmean += ( ((double)i)*(*in) ); in++; } tmpmean = tmpmean/((double)m->Xsize); *mean = tmpmean; return(0); } vips-8.2.2/libvips/deprecated/rename.c0000664000175000017500000003347312530402247014623 00000000000000/* rename.c --- wrappers for various renamed functions * * 20/9/09 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include int im_remainderconst_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( im_remainder_vec( in, out, n, c ) ); } int im_and_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( im_andimage_vec( in, out, n, c ) ); } int im_or_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( im_orimage_vec( in, out, n, c ) ); } int im_eor_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( im_eorimage_vec( in, out, n, c ) ); } int im_andconst( IMAGE *in, IMAGE *out, double c ) { return( im_andimageconst( in, out, c ) ); } int im_orconst( IMAGE *in, IMAGE *out, double c ) { return( im_orimageconst( in, out, c ) ); } int im_eorconst( IMAGE *in, IMAGE *out, double c ) { return( im_eorimageconst( in, out, c ) ); } void im_errormsg( const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); im_verror( "untranslated", fmt, ap ); va_end( ap ); } void im_verrormsg( const char *fmt, va_list ap ) { im_verror( "untranslated", fmt, ap ); } void im_errormsg_system( int err, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); im_verror_system( err, "untranslated", fmt, ap ); va_end( ap ); } void im_diagnostics( const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); im_vdiag( "untranslated", fmt, ap ); va_end( ap ); } void im_warning( const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); im_vwarn( "untranslated", fmt, ap ); va_end( ap ); } int im_affine( IMAGE *in, IMAGE *out, double a, double b, double c, double d, double dx, double dy, int ox, int oy, int ow, int oh ) { return( im_affinei( in, out, vips_interpolate_bilinear_static(), a, b, c, d, dx, dy, ox, oy, ow, oh ) ); } int im_similarity_area( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy, int ox, int oy, int ow, int oh ) { return( im_affinei( in, out, vips_interpolate_bilinear_static(), a, -b, b, a, dx, dy, ox, oy, ow, oh ) ); } int im_similarity( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy ) { return( im_affinei_all( in, out, vips_interpolate_bilinear_static(), a, -b, b, a, dx, dy ) ); } DOUBLEMASK * im_measure( IMAGE *im, IMAGE_BOX *box, int h, int v, int *sel, int nsel, const char *name ) { return( im_measure_area( im, box->xstart, box->ystart, box->xsize, box->ysize, h, v, sel, nsel, name ) ); } int im_extract( IMAGE *in, IMAGE *out, IMAGE_BOX *box ) { if( box->chsel == -1 ) return( im_extract_areabands( in, out, box->xstart, box->ystart, box->xsize, box->ysize, 0, in->Bands ) ); else return( im_extract_areabands( in, out, box->xstart, box->ystart, box->xsize, box->ysize, box->chsel, 1 ) ); } /* The public proto has this in the argument. */ typedef void (*notify_fn)( IMAGE *, Rect *, void * ); int im_render_fade( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, int fps, int steps, int priority, notify_fn notify, void *client ) { return( im_render_priority( in, out, mask, width, height, max, priority, notify, client ) ); } int im_render( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, notify_fn notify, void *client ) { return( im_render_priority( in, out, mask, width, height, max, 0, notify, client ) ); } int im_makerw( IMAGE *im ) { return( im_rwcheck( im ) ); } int im_icc_export( IMAGE *in, IMAGE *out, const char *output_profile_filename, int intent ) { return( im_icc_export_depth( in, out, 8, output_profile_filename, (VipsIntent) intent ) ); } int im_segment( IMAGE *test, IMAGE *mask, int *segments ) { return( im_label_regions( test, mask, segments ) ); } int im_convf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { return( im_conv_f( in, out, mask ) ); } int im_convf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { return( im_conv_f_raw( in, out, mask ) ); } int im_convsepf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { return( im_convsep_f( in, out, mask ) ); } int im_convsepf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { return( im_convsep_f_raw( in, out, mask ) ); } gboolean im_isint( IMAGE *im ) { return( vips_bandfmt_isint( im->BandFmt ) ); } gboolean im_isuint( IMAGE *im ) { return( vips_bandfmt_isuint( im->BandFmt ) ); } gboolean im_isfloat( IMAGE *im ) { return( vips_bandfmt_isfloat( im->BandFmt ) ); } gboolean im_iscomplex( IMAGE *im ) { return( vips_band_format_iscomplex( im->BandFmt ) ); } gboolean im_isscalar( IMAGE *im ) { return( !im_iscomplex( im ) ); } int im_c2ps( IMAGE *in, IMAGE *out ) { return( im_abs( in, out ) ); } int im_clip( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_UCHAR ) ); } int im_clip2c( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_CHAR ) ); } int im_clip2us( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_USHORT ) ); } int im_clip2s( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_SHORT ) ); } int im_clip2ui( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_UINT ) ); } int im_clip2i( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_INT ) ); } int im_clip2f( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_FLOAT ) ); } int im_clip2d( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_DOUBLE ) ); } int im_clip2cm( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_COMPLEX ) ); } int im_clip2dcm( IMAGE *in, IMAGE *out ) { return( im_clip2fmt( in, out, IM_BANDFMT_DPCOMPLEX ) ); } int im_copy_from( IMAGE *in, IMAGE *out, im_arch_type architecture ) { switch( architecture ) { case IM_ARCH_NATIVE: return( im_copy( in, out ) ); case IM_ARCH_BYTE_SWAPPED: return( im_copy_swap( in, out ) ); case IM_ARCH_LSB_FIRST: return( im_amiMSBfirst() ? im_copy_swap( in, out ) : im_copy( in, out ) ); case IM_ARCH_MSB_FIRST: return( im_amiMSBfirst() ? im_copy( in, out ) : im_copy_swap( in, out ) ); default: im_error( "im_copy_from", _( "bad architecture: %d" ), architecture ); return( -1 ); } } /* Check whether arch corresponds to native byte order. */ gboolean im_isnative( im_arch_type arch ) { switch( arch ) { case IM_ARCH_NATIVE: return( TRUE ); case IM_ARCH_BYTE_SWAPPED: return( FALSE ); case IM_ARCH_LSB_FIRST: return( !im_amiMSBfirst() ); case IM_ARCH_MSB_FIRST: return( im_amiMSBfirst() ); default: g_assert( 0 ); } /* Keep -Wall happy. */ return( -1 ); } int im_iterate( IMAGE *im, im_start_fn start, im_generate_fn generate, im_stop_fn stop, void *b, void *c ) { return( vips_sink( im, start, (VipsGenerateFn) generate, stop, b, c ) ); } int im_render_priority( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, int priority, notify_fn notify, void *client ) { return( vips_sink_screen( in, out, mask, width, height, max, priority, notify, client ) ); } /** * im_circle: * @im: image to draw on * @cx: centre of circle * @cy: centre of circle * @radius: circle radius * @intensity: value to draw * * Draws a circle on a 1-band 8-bit image. * * This an inplace operation, so @im is changed. It does not thread and will * not work well as part of a pipeline. On 32-bit machines it will be limited * to 2GB images. * * See also: im_fastline(). * * Returns: 0 on success, or -1 on error. */ int im_circle( IMAGE *im, int cx, int cy, int radius, int intensity ) { PEL ink[1]; if( im_rwcheck( im ) || im_check_uncoded( "im_circle", im ) || im_check_mono( "im_circle", im ) || im_check_format( "im_circle", im, IM_BANDFMT_UCHAR ) ) return( -1 ); ink[0] = intensity; return( im_draw_circle( im, cx, cy, radius, FALSE, ink ) ); } /* A flood blob we can call from nip. Grr! Should be a way to wrap these * automatically. Maybe nip could do it if it sees a RW image argument? */ int im_flood_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ) { IMAGE *t; if( !(t = im_open_local( out, "im_flood_blob_copy", "t" )) || im_copy( in, t ) || im_flood( t, x, y, ink, NULL ) || im_copy( t, out ) ) return( -1 ); return( 0 ); } int im_flood_blob_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ) { IMAGE *t; if( !(t = im_open_local( out, "im_flood_blob_copy", "t" )) || im_copy( in, t ) || im_flood_blob( t, x, y, ink, NULL ) || im_copy( t, out ) ) return( -1 ); return( 0 ); } int im_flood_other_copy( IMAGE *test, IMAGE *mark, IMAGE *out, int x, int y, int serial ) { IMAGE *t; if( !(t = im_open_local( out, "im_flood_other_copy", "t" )) || im_copy( mark, t ) || im_flood_other( test, t, x, y, serial, NULL ) || im_copy( t, out ) ) return( -1 ); return( 0 ); } int im_paintrect( IMAGE *im, Rect *r, PEL *ink ) { return( im_draw_rect( im, r->left, r->top, r->width, r->height, 1, ink ) ); } int im_insertplace( IMAGE *main, IMAGE *sub, int x, int y ) { return( im_draw_image( main, sub, x, y ) ); } int im_fastline( IMAGE *im, int x1, int y1, int x2, int y2, PEL *pel ) { return( im_draw_line( im, x1, y1, x2, y2, pel ) ); } int im_fastlineuser( IMAGE *im, int x1, int y1, int x2, int y2, VipsPlotFn fn, void *client1, void *client2, void *client3 ) { return( im_draw_line_user( im, x1, y1, x2, y2, fn, client1, client2, client3 ) ); } int im_plotmask( IMAGE *im, int ix, int iy, PEL *ink, PEL *mask, Rect *r ) { IMAGE *mask_im; if( !(mask_im = im_image( mask, r->width, r->height, 1, IM_BANDFMT_UCHAR )) ) return( -1 ); if( im_draw_mask( im, mask_im, ix + r->left, iy + r->top, ink ) ) { im_close( mask_im ); return( -1 ); } im_close( mask_im ); return( 0 ); } int im_readpoint( IMAGE *im, int x, int y, PEL *pel ) { return( im_read_point( im, x, y, pel ) ); } int im_plotpoint( IMAGE *im, int x, int y, PEL *pel ) { return( im_draw_point( im, x, y, pel ) ); } /* Smear a section of an IMAGE. As above, but shift it left a bit. */ int im_smear( IMAGE *im, int ix, int iy, Rect *r ) { int x, y, a, b, c; int ba = im->Bands; int el = ba * im->Xsize; Rect area, image, clipped; double total[ 256 ]; if( im_rwcheck( im ) ) return( -1 ); /* Don't do the margins. */ area = *r; area.left += ix; area.top += iy; image.left = 0; image.top = 0; image.width = im->Xsize; image.height = im->Ysize; im_rect_marginadjust( &image, -1 ); image.left--; im_rect_intersectrect( &area, &image, &clipped ); /* Any left? */ if( im_rect_isempty( &clipped ) ) return( 0 ); /* What we do for each type. */ #define SMEAR(TYPE) \ for( y = clipped.top; y < clipped.top + clipped.height; y++ ) \ for( x = clipped.left; \ x < clipped.left + clipped.width; x++ ) { \ TYPE *to = (TYPE *) im->data + x * ba + y * el; \ TYPE *from = to - el; \ TYPE *f; \ \ for( a = 0; a < ba; a++ ) \ total[a] = 0.0; \ \ for( a = 0; a < 3; a++ ) { \ f = from; \ for( b = 0; b < 3; b++ ) \ for( c = 0; c < ba; c++ ) \ total[c] += *f++; \ from += el; \ } \ \ for( a = 0; a < ba; a++ ) \ to[a] = (40 * (double) to[a+ba] + total[a]) \ / 49.0; \ } /* Loop through the remaining pixels. */ switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: SMEAR(unsigned char); break; case IM_BANDFMT_CHAR: SMEAR(char); break; case IM_BANDFMT_USHORT: SMEAR(unsigned short); break; case IM_BANDFMT_SHORT: SMEAR(short); break; case IM_BANDFMT_UINT: SMEAR(unsigned int); break; case IM_BANDFMT_INT: SMEAR(int); break; case IM_BANDFMT_FLOAT: SMEAR(float); break; case IM_BANDFMT_DOUBLE: SMEAR(double); break; /* Do complex types too. Just treat as float and double, but with * twice the number of bands. */ case IM_BANDFMT_COMPLEX: /* Twice number of bands: double size and bands. */ ba *= 2; el *= 2; SMEAR(float); break; case IM_BANDFMT_DPCOMPLEX: /* Twice number of bands: double size and bands. */ ba *= 2; el *= 2; SMEAR(double); break; default: im_error( "im_smear", "%s", _( "unknown band format" ) ); return( -1 ); } return( 0 ); } int im_smudge( VipsImage *image, int ix, int iy, Rect *r ) { return( im_draw_smudge( image, r->left + ix, r->top + iy, r->width, r->height ) ); } int im_flood( IMAGE *im, int x, int y, PEL *ink, Rect *dout ) { return( im_draw_flood( im, x, y, ink, dout ) ); } int im_flood_blob( IMAGE *im, int x, int y, PEL *ink, Rect *dout ) { return( im_draw_flood_blob( im, x, y, ink, dout ) ); } int im_flood_other( IMAGE *test, IMAGE *mark, int x, int y, int serial, Rect *dout ) { return( im_draw_flood_other( mark, test, x, y, serial, dout ) ); } int vips_check_coding_rad( const char *domain, VipsImage *im ) { return( vips_check_coding( domain, im, VIPS_CODING_RAD ) ); } int vips_check_coding_labq( const char *domain, VipsImage *im ) { return( vips_check_coding( domain, im, VIPS_CODING_LABQ ) ); } int vips_check_bands_3ormore( const char *domain, VipsImage *im ) { return( vips_check_bands_atleast( domain, im, 3 ) ); } vips-8.2.2/libvips/deprecated/matlab.c0000664000175000017500000000403512530402247014604 00000000000000/* Read matlab save files with libmatio * * 20/12/11 * - just a compat stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include int im_mat2vips( const char *filename, IMAGE *out ) { VipsImage *t; if( vips_matload( filename, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int ismat( const char *filename ) { return( vips_foreign_is_a( "matload", filename ) ); } static const char *mat_suffs[] = { ".mat", NULL }; typedef VipsFormat VipsFormatMat; typedef VipsFormatClass VipsFormatMatClass; static void vips_format_mat_class_init( VipsFormatMatClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "mat"; object_class->description = _( "Matlab" ); format_class->is_a = ismat; format_class->load = im_mat2vips; format_class->save = NULL; format_class->suffs = mat_suffs; } static void vips_format_mat_init( VipsFormatMat *object ) { } G_DEFINE_TYPE( VipsFormatMat, vips_format_mat, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/im_slice.c0000664000175000017500000000754112530402247015135 00000000000000/* @(#) Slices an image using two thresholds. Works for any non-complex type. * @(#) Output has three levels 0 128 and 255. Values below or = t1 are 0, * @(#) above t2 are 255 and the remaining are 128. * @(#) Input is either memory mapped or in a buffer. * @(#) It is implied that t1 is less than t2; however the program checks * @(#) if they are the wrong way and swaps them * @(#) * @(#) int im_slice(in, out, t1, t2) * @(#) IMAGE *in, *out; * @(#) double t1, t2; * @(#) * @(#) Returns 0 on success and -1 on error * * Copyright: 1991, N. Dessipris * * Author: N. Dessipris * Written on: 15/03/1991 * Modified on : */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #define BRIGHT 255 #define GREY 128 #define DARK 0 /* Useful: Call a macro with the name, type pairs for all VIPS functions. */ #define im_for_all_types(A) \ case IM_BANDFMT_UCHAR: A(unsigned char); break; \ case IM_BANDFMT_CHAR: A(signed char); break; \ case IM_BANDFMT_USHORT: A(unsigned short); break; \ case IM_BANDFMT_SHORT: A(signed short); break; \ case IM_BANDFMT_UINT: A(unsigned int); break; \ case IM_BANDFMT_INT: A(signed int); break; \ case IM_BANDFMT_FLOAT: A(float); break; /* Replacement for im_slice */ int im_slice( in, out, t1, t2 ) IMAGE *in, *out; double t1, t2; { int x, y, z; PEL *bu; /* Buffer we write to */ int s, epl; /* Size and els per line */ double thresh1, thresh2; /* Check our args. */ if( im_iocheck( in, out ) ) { im_error( "im_slice", "%s", _( "im_iocheck failed") ); return( -1 ); } if( in->Coding != IM_CODING_NONE ) { im_error( "im_slice", "%s", _( "input should be uncoded") ); return( -1 ); } /* Set up the output header. */ if( im_cp_desc( out, in ) ) { im_error( "im_slice", "%s", _( "im_cp_desc failed") ); return( -1 ); } out->BandFmt = IM_BANDFMT_UCHAR; if( im_setupout( out ) ) { im_error( "im_slice", "%s", _( "im_setupout failed") ); return( -1 ); } if ( t1 <= t2 ) { thresh1 = t1; thresh2 = t2; } else { thresh1 = t2; thresh2 = t1; } /* Make buffer for building o/p in. */ epl = in->Xsize * in->Bands; s = epl * sizeof( PEL ); if( (bu = (PEL *) im_malloc( out, (unsigned)s )) == NULL ) return( -1 ); /* Define what we do for each band element type. */ #define im_slice_loop(TYPE)\ { TYPE *a = (TYPE *) in->data;\ \ for( y = 0; y < in->Ysize; y++ ) {\ PEL *b = bu;\ \ for( x = 0; x < in->Xsize; x++ )\ for( z = 0; z < in->Bands; z++ ) {\ double f = (double) *a++;\ if ( f <= thresh1)\ *b++ = (PEL)DARK;\ else if ( f > thresh2 )\ *b++ = (PEL)BRIGHT;\ else \ *b++ = (PEL)GREY;\ }\ \ if( im_writeline( y, out, bu ) )\ return( -1 );\ }\ } /* Do the above for all image types. */ switch( in->BandFmt ) { im_for_all_types( im_slice_loop ); default: im_error( "im_slice", "%s", _( "Unknown input format") ); return( -1 ); } return( 0 ); } vips-8.2.2/libvips/deprecated/im_benchmark.c0000664000175000017500000001745212530402247015772 00000000000000/* a complicated operation for testing * * 6/10/06 * - hacked in * 27/11/06 * - added im_benchmarkn() * 1/2/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* VIPS SMP benchmark ------------------ This is adapted from the system used to generate images for POD: http://cima.ng-london.org.uk/~john/POD Images from a 10k by 10k studio digital camera are colour processed, resized, cropped and sharpened. The original POD script was written in nip (see below). This operation is a reimplementation in vanilla C to make it easier to run (and less fragile!). This thing was originally processing images off a remote server over a 100mbit network. No attempt was made to make it quick (there was no point): you could make it a lot faster very easily. ------ benchmark in nip2 ----------- #!/home/john/vips/bin/nip2 -s // get command-line arguments image_path = argv?1; crop_id = parse_pint argv?2; crop_left = parse_pint argv?3; crop_top = parse_pint argv?4; crop_width = parse_pint argv?5; crop_height = parse_pint argv?6; width = parse_pint argv?7; height = parse_pint argv?8; sharp = parse_pint argv?9; // scale down by this much to undo photographic's relativisation darken = Vector [1.18, 1, 1]; // fudge factor in XYZ to get a match under NGC lights on uv-durable paper white_point_adjust = Vector [1.06, 1, 1.01]; // brighten by this in XYZ to get relative colorimetry brighten = 1.5; // blacks down by this much in LAB blacks_down = Vector [-2, 0, 0]; // sharpen params for 400, 300, 200 and 150 dpi // just change the size of the area we search sharpen_params_table = [ [ 11, 2.5, 40, 20, 0.5, 1.5 ], [ 7, 2.5, 40, 20, 0.5, 1.5 ], [ 5, 2.5, 40, 20, 0.5, 1.5 ], [ 3, 2.5, 40, 20, 0.5, 1.5 ] ]; // convert D65 XYZ to D50 XYZ D652D50 = recomb D652D50_direct; stage_crop in = extract_area crop_left crop_top crop_width crop_height in, crop_id != 0 = in; // fit within a width / height stage_shrink image = image, factor > 1; // never upscale = resize factor factor Interpolate.BILINEAR image { hfactor = width / get_width image; vfactor = height / get_height image; factor = min_pair hfactor vfactor; } // unphotoize, go to xyz, convert to D50, adjust white point, back to lab stage_colour in = if in?0 > 99 then Vector [100, 0, 0] else in''' { // back to absolute in' = in / darken; xyz = colour_transform_to Image_type.XYZ in'; xyz' = D652D50 xyz * white_point_adjust * brighten; in'' = colour_transform_to Image_type.LAB xyz'; // shadows down in''' = in'' + blacks_down; } stage_sharp in = (sharpen params?0 params?1 params?2 params?3 params?4 params?5 @ colour_transform_to Image_type.LABQ) in { params = sharpen_params_table?sharp; } // This was: // // stage_srgb in // = (icc_export 8 "$VIPSHOME/share/nip2/data/sRGB.icm" 1 @ // colour_transform_to Image_type.LABQ) in; // // but that uses lcms which is single-threaded. So for this benchmark, we use // VIPS's own ->sRGB converter, which is less accurate but does thread. stage_srgb in = colour_transform_to Image_type.sRGB in; main = (get_image @ stage_srgb @ stage_sharp @ stage_colour @ stage_shrink @ stage_crop @ colour_transform_to Image_type.LAB @ Image_file) image_path; ------ benchmark in nip2 ----------- */ /* The main part of the benchmark ... transform labq to labq. Chain several of * these together to get a CPU-bound operation. */ static int benchmark( IMAGE *in, IMAGE *out ) { IMAGE *t[18]; double one[3] = { 1.0, 1.0, 1.0 }; double zero[3] = { 0.0, 0.0, 0.0 }; double darken[3] = { 1.0 / 1.18, 1.0, 1.0 }; double whitepoint[3] = { 1.06, 1.0, 1.01 }; double shadow[3] = { -2, 0, 0 }; double white[3] = { 100, 0, 0 }; DOUBLEMASK *d652d50 = im_create_dmaskv( "d652d50", 3, 3, 1.13529, -0.0604663, -0.0606321, 0.0975399, 0.935024, -0.0256156, -0.0336428, 0.0414702, 0.994135 ); im_add_close_callback( out, (im_callback_fn) im_free_dmask, d652d50, NULL ); return( /* Set of descriptors for this operation. */ im_open_local_array( out, t, 18, "im_benchmark", "p" ) || /* Unpack to float. */ im_LabQ2Lab( in, t[0] ) || /* Crop 100 pixels off all edges. */ im_extract_area( t[0], t[1], 100, 100, t[0]->Xsize - 200, t[0]->Ysize - 200 ) || /* Shrink by 10%, bilinear interp. */ im_affinei_all( t[1], t[2], vips_interpolate_bilinear_static(), 0.9, 0, 0, 0.9, 0, 0 ) || /* Find L ~= 100 areas (white surround). */ im_extract_band( t[2], t[3], 0 ) || im_moreconst( t[3], t[4], 99 ) || /* Adjust white point and shadows. */ im_lintra_vec( 3, darken, t[2], zero, t[5] ) || im_Lab2XYZ( t[5], t[6] ) || im_recomb( t[6], t[7], d652d50 ) || im_lintra_vec( 3, whitepoint, t[7], zero, t[8] ) || im_lintra( 1.5, t[8], 0.0, t[9] ) || im_XYZ2Lab( t[9], t[10] ) || im_lintra_vec( 3, one, t[10], shadow, t[11] ) || /* Make a solid white image. */ im_black( t[12], t[4]->Xsize, t[4]->Ysize, 3 ) || im_lintra_vec( 3, zero, t[12], white, t[13] ) || /* Reattach border. */ im_ifthenelse( t[4], t[13], t[11], t[14] ) || /* Sharpen. */ im_Lab2LabQ( t[14], t[15] ) || im_sharpen( t[15], out, 11, 2.5, 40, 20, 0.5, 1.5 ) ); } /** * im_benchmarkn: * @in: input image * @out: output image * @n: iterations * * This operation runs a complicated set of other operations on image @in, * producing image @out. Use @n to set the number of iterations to run: a * larger number will make the operation more CPU-bound, a smaller number will * make the operation more IO-bound. * * See http://www.vips.ecs.soton.ac.uk/index.php?title=Benchmarks for a * detailed discussion of the benchmark and some sample results. * * See also: im_benchmark2(). * * Returns: 0 on success, -1 on error */ int im_benchmarkn( IMAGE *in, IMAGE *out, int n ) { IMAGE *t[2]; if( n == 0 ) /* To sRGB. */ return( im_LabQ2disp( in, out, im_col_displays( 7 ) ) ); else return( im_open_local_array( out, t, 2, "benchmarkn", "p" ) || benchmark( in, t[0] ) || /* Expand back to the original size again ... * benchmark does a 200 pixel crop plus a 10% shrink, * so if we chain many of them together the image gets * too small. */ im_affinei_all( t[0], t[1], vips_interpolate_bilinear_static(), (double) in->Xsize / t[0]->Xsize, 0, 0, (double) in->Ysize / t[0]->Ysize, 0, 0 ) || im_benchmarkn( t[1], out, n - 1 ) ); } /** * im_benchmark2: * @in: input image * @out: average image value * * This operation runs a single im_benchmarkn() and calculates the average * pixel value. It's useful if you just want to test image input. * * See also: im_benchmarkn(). * * Returns: 0 on success, -1 on error */ int im_benchmark2( IMAGE *in, double *out ) { IMAGE *t; return( !(t = im_open_local( in, "benchmarkn", "p" )) || im_benchmarkn( in, t, 1 ) || im_avg( t, out ) ); } vips-8.2.2/libvips/deprecated/im_clamp.c0000664000175000017500000000660112530402247015126 00000000000000/* @(#) Function to perform black level correction given black image * @(#) designed for PAD camera single field black to apply in blocks * @(#) as each is reused for higher resolution pels (eg: 6 8 for Progres) * @(#) IM_BANDFMT_UCHAR images only. Always writes UCHAR. * @(#) int im_clamp(in, w, out, hstep, vstep) * @(#) IMAGE *in, *w, *out; int hstep, vstep; * @(#) - Compute clip(image - (black)) ie subtract black no negatives * @(#) scales for low res Progres images to replicate black value * @(#) Returns 0 on success and -1 on error * fiddle at your peril - nasty code * Copyright: 1993 KM * 20/8/93 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include int im_clamp( IMAGE *in, IMAGE *out, IMAGE *black, int hstep, int vstep ) { PEL *p, *blk, *bline, *bexp; PEL *q, *outbuf; int rep; int x, y, bnd; int temp, blacky, newblacky; if( im_iocheck( in, out ) ) return( -1 ); if( in->Bbits != 8 || in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_clamp", "%s", _( "bad input format" ) ); return( -1 ); } if( black->Bbits != 8 || black->Coding != IM_CODING_NONE || black->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_clamp", "%s", _( "bad black format" ) ); return( -1 ); } /* Set up the output header. */ if( im_cp_desc( out, in ) ) return( -1 ); if( im_setupout( out ) ) return( -1 ); /* Make buffer for expanded black line */ if( !(bline = (PEL *) im_malloc( out, black->Bands * hstep * in->Xsize )) ) return( -1 ); /* Make buffer we write to. */ if( !(outbuf = (PEL *) im_malloc( out, out->Bands * out->Xsize )) ) return( -1 ); blacky = -1; p = (PEL *) in->data; for( y = 0; y < in->Ysize; y++ ) { /* calc corresponding black line - get new one if different */ newblacky = (vstep * black->Ysize - in->Ysize + y)/vstep; if( newblacky != blacky){ blacky = newblacky; /* time to expand a new black line */ blk = (PEL *) (black->data + black->Xsize * black->Bands * blacky); for(bexp = bline, x = 0; x < black->Xsize; x++){ for(rep = 0; rep < hstep; rep++) for(q=blk, bnd = 0; bnd < in->Bands; bnd++) *bexp++ = *q++; blk += black->Bands; } } /* correct a line of image */ bexp = bline; q = outbuf; for( x = 0; x < (out->Bands * out->Xsize); x++ ) { temp = ((int) *p++ - *bexp++); if( temp < 0 ) temp = 0; *q++ = (PEL)temp; } if( im_writeline( y, out, outbuf ) ) return( -1 ); } /* end of a line */ return( 0 ); } vips-8.2.2/libvips/deprecated/im_debugim.c0000664000175000017500000000652712530402247015455 00000000000000/* @(#) Function which prints in stdout the values of a picture * @(#) * @(#) For debuging only * @(#) is either memory mapped or in a buffer. * @(#) * @(#) void * @(#) im_debugim( in ) * @(#) IMAGE *in; * @(#) * * Copyright: 1991 N. Dessipris * * Author: N. Dessipris * Written on: 18/03/1991 * Modified on: * 15/4/93 J.Cupitt * - returns int, not void now, so error messages work * - detects im->data invalid. * 15/4/93 J.Cupitt * - uses %g format, not %f for printf() * 23/7/93 JC * - im_incheck() added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include int im_debugim( IMAGE *in ) { /* Check our args. */ if( im_incheck( in ) ) return( -1 ); if( in->Coding != IM_CODING_NONE ) { im_error( "im_debugim", "%s", _( "input must be uncoded" ) ); return( -1 ); } /* What type? First define the loop we want to perform for all types. */ #define loopuc(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ for ( x=0; xXsize; x++ ) {\ for ( z=0; zBands; z++ ) {\ fprintf(stderr, "%4d", (TYPE)*p++ );\ } \ } \ fprintf(stderr, "\n");\ } \ } #define loop(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ for ( x=0; xXsize; x++ ) {\ for ( z=0; zBands; z++ ) {\ fprintf(stderr, "%g\t", (double)*p++ );\ } \ } \ fprintf(stderr, "\n");\ } \ } #define loopcmplx(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ for ( x=0; xXsize; x++ ) {\ for ( z=0; zBands; z++ ) {\ fprintf(stderr,"re=%g\t",(double)*p++);\ fprintf(stderr,"im=%g\t",(double)*p++);\ } \ } \ fprintf(stderr, "\n");\ } \ } /* Now generate code for all types. */ switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: loopuc(unsigned char); break; case IM_BANDFMT_CHAR: loop(char); break; case IM_BANDFMT_USHORT: loop(unsigned short); break; case IM_BANDFMT_SHORT: loop(short); break; case IM_BANDFMT_UINT: loop(unsigned int); break; case IM_BANDFMT_INT: loop(int); break; case IM_BANDFMT_FLOAT: loop(float); break; case IM_BANDFMT_DOUBLE: loop(double); break; case IM_BANDFMT_COMPLEX: loopcmplx(float); break; case IM_BANDFMT_DPCOMPLEX: loopcmplx(double); break; default: im_error( "im_debugim", "%s", _( "unknown input format") ); return( -1 ); } return( 0 ); } vips-8.2.2/libvips/deprecated/cooc_funcs.c0000664000175000017500000002534712530402247015476 00000000000000/* @(#) Calculates the cooccurrence matrix of an image and some of its * @(#) features. The 256x256 cooccurrence matrix of im is held by m * @(#) There should be enough margin around the box so the (dx,dy) can * @(#) access neighbouring pixels outside the box * @(#) * @(#) Usage: * @(#) int im_cooc_matrix(im, m, xpos, ypos, xsize, ysize, dx, dy, sym_flag) * @(#) IMAGE *im, *m; * @(#) int xpos, ypos, xsize, ysize; location of the box within im * @(#) int dx, dy; displacements * @(#) int sym_flag; * @(#) * @(#) int im_cooc_asm(m, asmoment) * @(#) IMAGE *m; * @(#) double *asmoment; * @(#) * @(#) int im_cooc_contrast(m, contrast) * @(#) IMAGE *m; * @(#) double *contrast; * @(#) * @(#) int im_cooc_correlation(m, correlation) * @(#) IMAGE *m; * @(#) double *correlation; * @(#) * @(#) int im_cooc_entropy(m, entropy) * @(#) IMAGE *m; * @(#) double *entropy; * @(#) * @(#) All functions return 0 on success and -1 on error * * Copyright: N. Dessipris 1991 * Written on: 2/12/1991 * Updated on: 2/12/1991 * 22/7/93 JC * - extern decls removed * - im_incheck() calls added * 28/5/97 JC * - protos added :( */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include static int im_cooc_sym(IMAGE *im, IMAGE *m, int xpos, int ypos, int xsize, int ysize, int dx, int dy) { VipsPel *input, *cpinput; int *buf, *pnt, *cpnt; double *line, *cpline; int x, y; int offset; int bufofst; int tempA, tempB; int norm; if (im_iocheck(im, m) == -1) return( -1 ); if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) { im_error( "im_cooc_sym", "%s", _( "Unable to accept input") ); return(-1); } if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { im_error( "im_cooc_sym", "%s", _( "wrong args") ); return(-1); } if (im_cp_desc(m, im) == -1) return( -1 ); m->Xsize = 256; m->Ysize = 256; m->BandFmt = IM_BANDFMT_DOUBLE; m->Type = IM_TYPE_B_W; if (im_setupout(m) == -1) return( -1 ); /* malloc space to keep the read values */ buf = (int *)calloc( (unsigned)m->Xsize*m->Ysize, sizeof(int) ); line = (double *)calloc( (unsigned)m->Xsize * m->Bands, sizeof(double)); if ( (buf == NULL) || (line == NULL) ) { im_error( "im_cooc_sym", "%s", _( "calloc failed") ); return(-1); } input = im->data; input += ( ypos * im->Xsize + xpos ); offset = dy * im->Xsize + dx; for ( y=0; yXsize; for ( x=0; xXsize * tempB; (*(buf + bufofst))++; bufofst = tempB + m->Xsize * tempA; (*(buf + bufofst))++; cpinput++; } } norm = xsize * ysize * 2; pnt = buf; for ( y=0; yYsize; y++ ) { cpnt = pnt; pnt += m->Xsize; cpline = line; for (x=0; xXsize; x++) *cpline++ = (double)(*cpnt++)/(double)norm; if (im_writeline( y, m, (VipsPel *) line ) == -1) { im_error( "im_cooc_sym", "%s", _( "unable to im_writeline") ); return(-1); } } free((char*)buf); free((char*)line); return(0); } static int im_cooc_ord(IMAGE *im, IMAGE *m, int xpos, int ypos, int xsize, int ysize, int dx, int dy) { VipsPel *input, *cpinput; int *buf, *pnt, *cpnt; double *line, *cpline; int x, y; int offset; int bufofst; int tempA, tempB; int norm; if (im_iocheck(im, m) == -1) return( -1 ); if ((im->Bands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) { im_error( "im_cooc_ord", "%s", _( "Unable to accept input") ); return(-1); } if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { im_error( "im_cooc_ord", "%s", _( "wrong args") ); return(-1); } if (im_cp_desc(m, im) == -1) return( -1 ); m->Xsize = 256; m->Ysize = 256; m->BandFmt = IM_BANDFMT_DOUBLE; if (im_setupout(m) == -1) return( -1 ); /* malloc space to keep the read values */ buf = (int *)calloc( (unsigned)m->Xsize*m->Ysize, sizeof(int) ); line = (double *)calloc( (unsigned)m->Xsize * m->Bands, sizeof(double)); if ( (buf == NULL) || (line == NULL) ) { im_error( "im_cooc_ord", "%s", _( "calloc failed") ); return(-1); } input = im->data; input += ( ypos * im->Xsize + xpos ); offset = dy * im->Xsize + dx; for ( y=0; yXsize; for ( x=0; xXsize * tempB; (*(buf + bufofst))++; cpinput++; } } norm = xsize * ysize; pnt = buf; for ( y=0; yYsize; y++ ) { cpnt = pnt; pnt += m->Xsize; cpline = line; for (x=0; xXsize; x++) *cpline++ = (double)(*cpnt++)/(double)norm; if (im_writeline( y, m, (PEL *) line ) == -1) { im_error( "im_cooc_ord", "%s", _( "unable to im_writeline") ); return(-1); } } free((char*)buf); free((char*)line); return(0); } /* Keep the coocurrence matrix as a 256x256x1 double image */ int im_cooc_matrix( IMAGE *im, IMAGE *m, int xp, int yp, int xs, int ys, int dx, int dy, int flag ) { if (flag == 0) return( im_cooc_ord(im, m, xp, yp, xs, ys, dx, dy) ); else if (flag == 1) /* symmetrical cooc */ return( im_cooc_sym(im, m, xp, yp, xs, ys, dx, dy) ); else { im_error( "im_cooc_matrix", "%s", _( "wrong flag!") ); return(-1); } } /* Calculate contrast, asmoment, entropy and correlation */ int im_cooc_asm( IMAGE *m, double *asmoment ) { double temp, tmpasm, *pnt; int i; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 256 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_cooc_asm", "%s", _( "unable to accept input") ); return(-1); } tmpasm = 0.0; pnt = (double*)m->data; for(i=0; iXsize * m->Ysize; i++) { temp = *pnt++; tmpasm += temp * temp; } *asmoment = tmpasm; return(0); } int im_cooc_contrast( IMAGE *m, double *contrast ) { double dtemp, tmpcon, *pnt, *cpnt; int x, y; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 256 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_cooc_contrast", "%s", _( "unable to accept input") ); return(-1); } tmpcon = 0.0; pnt = (double*)m->data; for(y=0; yYsize; y++) { cpnt = pnt; pnt += m->Xsize; for(x=0; xXsize; x++) { dtemp = (double)( (y-x)*(y-x) ); tmpcon += dtemp * (*cpnt); cpnt++; } } *contrast = tmpcon; return(0); } /* buffer contains the frequency distributions f[i] */ /* Note that sum(f[i]) = 1.0 and that the */ /* cooccurence matrix is symmetrical */ static void stats(double *buffer, int size, double *pmean, double *pstd) { double mean, std; register int i; double sumf; /* calculates the sum of f[i] */ double temp; /* temporary variable */ double *pbuffer; double sumf2; /* calculates the sum of f[i]^2 */ double correction; /* calulates the correction term for the variance */ double variance; /* = (sumf2 - correction)/n, n=sum(f[i]) = 1 */ mean = 0.0; std = 0.0; sumf = 0.0; sumf2 = 0.0; pbuffer = buffer; for (i=0; iXsize != 256 || m->Ysize != 256 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_cooc_correlation", "%s", _( "unable to accept input") ); return(-1); } row = (double*)calloc( (unsigned)m->Ysize, sizeof(double)); col = (double*)calloc( (unsigned)m->Xsize, sizeof(double)); if ( row == NULL || col == NULL ) { im_error( "im_cooc_correlation", "%s", _( "unable to calloc") ); return(-1); } pbuf = (double*)m->data; for(j=0; jYsize; j++) { cpbuf = pbuf; pbuf += m->Xsize; sum=0.0; for(i=0; iXsize; i++) sum += *cpbuf++; *(row+j) = sum; } pbuf = (double*)m->data; for(j=0; jYsize; j++) { cpbuf = pbuf; pbuf++; sum=0.0; for(i=0; iXsize; i++) { sum += *cpbuf; cpbuf += m->Xsize; } *(col+j) = sum; } stats(row, m->Ysize, &mrow, &stdrow); stats(col, m->Ysize ,&mcol, &stdcol); #ifdef DEBUG fprintf(stderr, "rows: mean=%f std=%f\ncols: mean=%f std=%f\n", mrow, stdrow, mcol, stdcol); #endif tmpcor = 0.0; pbuf = (double*)m->data; for(j=0; jYsize; j++) { cpbuf = pbuf; pbuf += m->Xsize; for(i=0; iXsize; i++) { dtemp = *cpbuf; tmpcor += ( ((double)i)*((double)j)*dtemp); cpbuf++; } } #ifdef DEBUG fprintf(stderr, "tmpcor=%f\n", tmpcor); #endif if ( (stdcol==0.0)||(stdrow==0) ) { im_error( "im_cooc_correlation", "%s", _( "zero std") ); return(-1); } tmpcor = (tmpcor-(mcol*mrow))/(stdcol*stdrow); *correlation = tmpcor; free((char*)row); free((char*)col); return(0); } int im_cooc_entropy( IMAGE *m, double *entropy ) { double *pbuf, *pbufstart; double *cpbuf; register int i,j; double tmpent, dtemp; double val; if( im_incheck( m ) ) return( -1 ); if (m->Xsize != 256 || m->Ysize != 256 || m->Bands != 1 || m->BandFmt != IM_BANDFMT_DOUBLE) { im_error( "im_cooc_entropy", "%s", _( "unable to accept input") ); return(-1); } pbufstart = (double*)m->data; tmpent = 0.0; pbuf = pbufstart; for(j=0; jYsize; j++) { cpbuf = pbuf; pbuf += m->Xsize; for(i=0; iXsize; i++) { if(*cpbuf != 0) { dtemp = *cpbuf; tmpent += (dtemp*log10(dtemp)); } cpbuf++; } } val = tmpent*(-1); #ifdef DEBUG fprintf(stderr,"ENT=%f\nwhich is %f bits\n", val, val/log10(2.0) ); #endif *entropy = (val/log10(2.0)); return(0); } vips-8.2.2/libvips/deprecated/im_line.c0000664000175000017500000000654612530402247014771 00000000000000/* @#) line drawer. adapted to draw for graphics system * @(#) Modified to be compatible with the vasari library * @(#) In order to use this function, the input file should have been set by * @(#) im_mmapinrw() * * Copyright: N. Dessipris * Written: 02/01/1990 * Modified : * 22/7/93 JC * - im_incheck() added * - externs removed * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include int im_line(image, x1, y1, x2, y2, pelval) IMAGE *image; int x1, x2, y1, y2, pelval; { double x, y, dx, dy, m; long offset; double signx, signy; if( im_rwcheck( image ) ) return( -1 ); /* check coordinates */ if ( (x1 > image->Xsize)||(x1<0)||(y1 > image->Ysize)||(y1<0) ||(x2 > image->Xsize)||(x2<0)||(y2 > image->Ysize)||(y2<0) ) { im_error( "im_line", "%s", _( "invalid line cooordinates") ); return(-1); } if ((pelval > 255)||(pelval < 0)) { im_error( "im_line", "%s", _( "line intensity between 0 and 255") ); return(-1); } if (image->Bands != 1) { im_error( "im_line", "%s", _( "image should have one band only") ); return(-1); } dx = (double)(x2 - x1); dy = (double)(y2 - y1); if (dx < 0.0) signx = -1.0; else signx = 1.0; if (dy < 0.0) signy = -1.0; else signy = 1.0; if (dx == 0.0) { x = x1; y = y1; while (y != y2) { offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize; *(image->data + offset) = (PEL)pelval; y += signy; } /* Draw point (x2, y2) */ offset = x2 + y2 * image->Xsize; *(image->data + offset) = (PEL)pelval; return(0); } if (dy == 0.0) { y = y1; x = x1; while (x != x2) { offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize; *(image->data + offset) = (PEL)pelval; x += signx; } /* Draw point (x2, y2) */ offset = x2 + y2 * image->Xsize; *(image->data + offset) = (PEL)pelval; return(0); } if (fabs(dy) < fabs(dx)) { m = fabs(dy/dx)*signy; y = y1; x = x1; while (x != x2) { offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize; *(image->data + offset) = (PEL)pelval; x += signx; y += m; } } else { m = fabs(dx/dy)*signx; x = x1; y = y1; while (y != y2) { offset = (int)(x+.5) + ((int)(y +.5)) * image->Xsize; *(image->data + offset) = (PEL)pelval; x += m; y += signy; } } /* Draw point (x2, y2) */ offset = x2 + y2 * image->Xsize; *(image->data + offset) = (PEL)pelval; im_invalidate( image ); return(0); } vips-8.2.2/libvips/deprecated/im_linreg.c0000664000175000017500000004077712530402247015326 00000000000000/* im_linreg.c * * Copyright: 2006, The Nottingham Trent University * * Author: Tom Vajzovic * * Written on: 2006-12-26 * * 12/5/09 * - make x_anal() static, fix some signed/unsigned warnings * 3/9/09 * - gtkdoc comment */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /** HEADERS **/ #ifdef HAVE_CONFIG_H #include #endif /* HAVE_CONFIG_H */ #include #include #include #include /** TYPES **/ typedef struct { unsigned int n; double *xs; double *difs; double mean; double nsig2; double err_term; } x_set; #define LINREG_SEQ( TYPE ) typedef struct { \ REGION **regs; \ TYPE **ptrs; \ size_t *skips; \ } linreg_seq_ ## TYPE LINREG_SEQ( gint8 ); LINREG_SEQ( guint8 ); LINREG_SEQ( gint16 ); LINREG_SEQ( guint16 ); LINREG_SEQ( gint32 ); LINREG_SEQ( guint32 ); LINREG_SEQ( float ); LINREG_SEQ( double ); /** LOCAL FUNCTION DECLARATIONS **/ static x_set *x_anal( IMAGE *im, double *xs, unsigned int n ); #define LINREG_START_DECL( TYPE ) static void * linreg_start_ ## TYPE( IMAGE *, void *, void * ); #define LINREG_GEN_DECL( TYPE ) static int linreg_gen_ ## TYPE( REGION *, void *, void *, void * ); #define LINREG_STOP_DECL( TYPE ) static int linreg_stop_ ## TYPE( void *, void *, void * ); #define INCR_ALL_DECL( TYPE ) static void incr_all_ ## TYPE( TYPE **ptrs, unsigned int n ) #define SKIP_ALL_DECL( TYPE ) static void skip_all_ ## TYPE( TYPE **ptrs, size_t *skips, unsigned int n ) LINREG_START_DECL( gint8 ); LINREG_START_DECL( guint8 ); LINREG_START_DECL( gint16 ); LINREG_START_DECL( guint16 ); LINREG_START_DECL( gint32 ); LINREG_START_DECL( guint32 ); LINREG_START_DECL( float ); LINREG_START_DECL( double ); LINREG_GEN_DECL( gint8 ); LINREG_GEN_DECL( guint8 ); LINREG_GEN_DECL( gint16 ); LINREG_GEN_DECL( guint16 ); LINREG_GEN_DECL( gint32 ); LINREG_GEN_DECL( guint32 ); LINREG_GEN_DECL( float ); LINREG_GEN_DECL( double ); LINREG_STOP_DECL( gint8 ); LINREG_STOP_DECL( guint8 ); LINREG_STOP_DECL( gint16 ); LINREG_STOP_DECL( guint16 ); LINREG_STOP_DECL( gint32 ); LINREG_STOP_DECL( guint32 ); LINREG_STOP_DECL( float ); LINREG_STOP_DECL( double ); INCR_ALL_DECL( gint8 ); INCR_ALL_DECL( guint8 ); INCR_ALL_DECL( gint16 ); INCR_ALL_DECL( guint16 ); INCR_ALL_DECL( gint32 ); INCR_ALL_DECL( guint32 ); INCR_ALL_DECL( float ); INCR_ALL_DECL( double ); SKIP_ALL_DECL( gint8 ); SKIP_ALL_DECL( guint8 ); SKIP_ALL_DECL( gint16 ); SKIP_ALL_DECL( guint16 ); SKIP_ALL_DECL( gint32 ); SKIP_ALL_DECL( guint32 ); SKIP_ALL_DECL( float ); SKIP_ALL_DECL( double ); /** EXPORTED FUNCTION DEFINITION **/ /** * im_linreg: * @ins: NULL-terminated array of input images * @out: results of analysis * @xs: X position of each image (pixel value is Y) * * Function to find perform pixelwise linear regression on an array of * single band images. The output is a seven-band douuble image * * TODO: figure out how this works and fix up these docs! */ int im_linreg( IMAGE **ins, IMAGE *out, double *xs ){ #define FUNCTION_NAME "im_linreg" int n; x_set *x_vals; if( im_poutcheck( out ) ) return( -1 ); for( n= 0; ins[ n ]; ++n ){ /* if( ! isfinite( xs[ n ] ) ){ im_error( FUNCTION_NAME, "invalid argument" ); return( -1 ); } */ if( im_pincheck( ins[ n ] ) ) return( -1 ); if( 1 != ins[ n ]-> Bands ){ im_error( FUNCTION_NAME, "image is not single band" ); return( -1 ); } if( ins[ n ]-> Coding ){ im_error( FUNCTION_NAME, "image is not uncoded" ); return( -1 ); } if( n ){ if( ins[ n ]-> BandFmt != ins[ 0 ]-> BandFmt ){ im_error( FUNCTION_NAME, "image band formats differ" ); return( -1 ); } } else { if( vips_band_format_iscomplex( ins[ 0 ]->BandFmt ) ){ im_error( FUNCTION_NAME, "image has non-scalar band format" ); return( -1 ); } } if( n && ( ins[ n ]-> Xsize != ins[ 0 ]-> Xsize || ins[ n ]-> Ysize != ins[ 0 ]-> Ysize ) ){ im_error( FUNCTION_NAME, "image sizes differ" ); return( -1 ); } } if( n < 3 ){ im_error( FUNCTION_NAME, "not enough input images" ); return( -1 ); } if( im_cp_desc_array( out, ins ) ) return( -1 ); out-> Bands= 7; out-> BandFmt= IM_BANDFMT_DOUBLE; out-> Type= 0; if( im_demand_hint_array( out, IM_THINSTRIP, ins ) ) return( -1 ); x_vals= x_anal( out, xs, n ); if( ! x_vals ) return( -1 ); switch( ins[ 0 ]-> BandFmt ){ #define LINREG_RET( TYPE ) return im_generate( out, linreg_start_ ## TYPE, linreg_gen_ ## TYPE, linreg_stop_ ## TYPE, ins, x_vals ) case IM_BANDFMT_CHAR: LINREG_RET( gint8 ); case IM_BANDFMT_UCHAR: LINREG_RET( guint8 ); case IM_BANDFMT_SHORT: LINREG_RET( gint16 ); case IM_BANDFMT_USHORT: LINREG_RET( guint16 ); case IM_BANDFMT_INT: LINREG_RET( gint32 ); case IM_BANDFMT_UINT: LINREG_RET( guint32 ); case IM_BANDFMT_FLOAT: LINREG_RET( float ); case IM_BANDFMT_DOUBLE: LINREG_RET( double ); default: /* keep -Wall happy */ return( -1 ); } #undef FUNCTION_NAME } /** LOCAL FUNCTION DECLARATIONS **/ static x_set *x_anal( IMAGE *im, double *xs, unsigned int n ){ unsigned int i; x_set *x_vals= IM_NEW( im, x_set ); if( ! x_vals ) return( NULL ); x_vals-> xs= IM_ARRAY( im, 2 * n, double ); if( ! x_vals-> xs ) return( NULL ); x_vals-> difs= x_vals-> xs + n; x_vals-> n= n; x_vals-> mean= 0.0; for( i= 0; i < n; ++i ){ x_vals-> xs[ i ]= xs[ i ]; x_vals-> mean+= xs[ i ]; } x_vals-> mean/= n; x_vals-> nsig2= 0.0; for( i= 0; i < n; ++i ){ x_vals-> difs[ i ]= xs[ i ] - x_vals-> mean; x_vals-> nsig2+= x_vals-> difs[ i ] * x_vals-> difs[ i ]; } x_vals-> err_term= ( 1.0 / (double) n ) + ( ( x_vals-> mean * x_vals-> mean ) / x_vals-> nsig2 ); return( x_vals ); } #define LINREG_START_DEFN( TYPE ) static void *linreg_start_ ## TYPE( IMAGE *out, void *a, void *b ){ \ IMAGE **ins= (IMAGE **) a; \ x_set *x_vals= (x_set *) b; \ linreg_seq_ ## TYPE *seq= IM_NEW( out, linreg_seq_ ## TYPE ); \ \ if( ! seq ) \ return NULL; \ \ seq-> regs= im_start_many( NULL, ins, NULL ); \ seq-> ptrs= IM_ARRAY( out, x_vals-> n, TYPE* ); \ seq-> skips= IM_ARRAY( out, x_vals-> n, size_t ); \ \ if( ! seq-> ptrs || ! seq-> regs || ! seq-> skips ){ \ linreg_stop_ ## TYPE( seq, NULL, NULL ); \ return NULL; \ } \ return (void *) seq; \ } #define N ( (double) n ) #define y(a) ( (double) (* seq-> ptrs[(a)] ) ) #define x(a) ( (double) ( x_vals-> xs[(a)] ) ) #define xd(a) ( (double) ( x_vals-> difs[(a)] ) ) #define Sxd2 ( x_vals-> nsig2 ) #define mean_x ( x_vals-> mean ) #define mean_y ( out[0] ) #define dev_y ( out[1] ) #define y_x0 ( out[2] ) #define d_y_x0 ( out[3] ) #define dy_dx ( out[4] ) #define d_dy_dx ( out[5] ) #define R ( out[6] ) #define LINREG_GEN_DEFN( TYPE ) static int linreg_gen_ ## TYPE( REGION *to_make, void *vseq, void *unrequired, void *b ){ \ linreg_seq_ ## TYPE *seq= (linreg_seq_ ## TYPE *) vseq; \ x_set *x_vals= (x_set *) b; \ unsigned int n= x_vals-> n; \ double *out= (double*) IM_REGION_ADDR_TOPLEFT( to_make ); \ size_t out_skip= IM_REGION_LSKIP( to_make ) / sizeof( double ); \ double *out_end= out + out_skip * to_make-> valid. height; \ double *out_stop; \ size_t out_n= IM_REGION_N_ELEMENTS( to_make ); \ unsigned int i; \ \ out_skip-= out_n; \ \ if( im_prepare_many( seq-> regs, & to_make-> valid ) ) \ return -1; \ \ for( i= 0; i < n; ++i ){ \ seq-> ptrs[ i ]= (TYPE*) IM_REGION_ADDR( seq-> regs[ i ], to_make-> valid. left, to_make-> valid. top ); \ seq-> skips[ i ]= ( IM_REGION_LSKIP( seq-> regs[ i ] ) / sizeof( TYPE ) ) - IM_REGION_N_ELEMENTS( seq-> regs[ i ] ); \ } \ \ for( ; out < out_end; out+= out_skip, skip_all_ ## TYPE( seq-> ptrs, seq-> skips, n ) ) \ for( out_stop= out + out_n; out < out_stop; out+= 7, incr_all_ ## TYPE( seq-> ptrs, n ) ){ \ double Sy= 0.0; \ double Sxd_y= 0.0; \ double Syd2= 0.0; \ double Sxd_yd= 0.0; \ double Se2= 0.0; \ \ for( i= 0; i < n; ++i ){ \ Sy+= y(i); \ Sxd_y+= xd(i) * y(i); \ } \ mean_y= Sy / N; \ dy_dx= Sxd_y / Sxd2; \ y_x0= mean_y - dy_dx * mean_x; \ \ for( i= 0; i < n; ++i ){ \ double yd= y(i) - mean_y; \ double e= y(i) - dy_dx * x(i) - y_x0; \ Syd2+= yd * yd; \ Sxd_yd+= xd(i) * yd; \ Se2+= e * e; \ } \ dev_y= sqrt( Syd2 / N ); \ Se2/= ( N - 2.0 ); \ d_dy_dx= sqrt( Se2 / Sxd2 ); \ d_y_x0= sqrt( Se2 * x_vals-> err_term ); \ R= Sxd_yd / sqrt( Sxd2 * Syd2 ); \ } \ return 0; \ } #define LINREG_STOP_DEFN( TYPE ) static int linreg_stop_ ## TYPE( void *vseq, void *a, void *b ){ \ linreg_seq_ ## TYPE *seq = (linreg_seq_ ## TYPE *) vseq; \ if( seq-> regs ) \ im_stop_many( seq-> regs, NULL, NULL ); \ return 0; \ } #define INCR_ALL_DEFN( TYPE ) static void incr_all_ ## TYPE( TYPE **ptrs, unsigned int n ){ \ TYPE **stop= ptrs + n; \ for( ; ptrs < stop; ++ptrs ) \ ++*ptrs; \ } #define SKIP_ALL_DEFN( TYPE ) static void skip_all_ ## TYPE( TYPE **ptrs, size_t *skips, unsigned int n ){ \ TYPE **stop= ptrs + n; \ for( ; ptrs < stop; ++ptrs, ++skips ) \ *ptrs+= *skips; \ } LINREG_START_DEFN( gint8 ); LINREG_START_DEFN( guint8 ); LINREG_START_DEFN( gint16 ); LINREG_START_DEFN( guint16 ); LINREG_START_DEFN( gint32 ); LINREG_START_DEFN( guint32 ); LINREG_START_DEFN( float ); LINREG_START_DEFN( double ); LINREG_GEN_DEFN( gint8 ); LINREG_GEN_DEFN( guint8 ); LINREG_GEN_DEFN( gint16 ); LINREG_GEN_DEFN( guint16 ); LINREG_GEN_DEFN( gint32 ); LINREG_GEN_DEFN( guint32 ); LINREG_GEN_DEFN( float ); LINREG_GEN_DEFN( double ); LINREG_STOP_DEFN( gint8 ); LINREG_STOP_DEFN( guint8 ); LINREG_STOP_DEFN( gint16 ); LINREG_STOP_DEFN( guint16 ); LINREG_STOP_DEFN( gint32 ); LINREG_STOP_DEFN( guint32 ); LINREG_STOP_DEFN( float ); LINREG_STOP_DEFN( double ); INCR_ALL_DEFN( gint8 ); INCR_ALL_DEFN( guint8 ); INCR_ALL_DEFN( gint16 ); INCR_ALL_DEFN( guint16 ); INCR_ALL_DEFN( gint32 ); INCR_ALL_DEFN( guint32 ); INCR_ALL_DEFN( float ); INCR_ALL_DEFN( double ); SKIP_ALL_DEFN( gint8 ); SKIP_ALL_DEFN( guint8 ); SKIP_ALL_DEFN( gint16 ); SKIP_ALL_DEFN( guint16 ); SKIP_ALL_DEFN( gint32 ); SKIP_ALL_DEFN( guint32 ); SKIP_ALL_DEFN( float ); SKIP_ALL_DEFN( double ); vips-8.2.2/libvips/deprecated/im_tiff2vips.c0000664000175000017500000000776112530402247015756 00000000000000/* vips7 compat stub for tiff loading ... see foreign/tiff2vips for the * replacement * * 6/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "../foreign/tiff.h" static int tiff2vips( const char *name, IMAGE *out, gboolean header_only ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q; int page; int seq; im_filename_split( name, filename, mode ); page = 0; seq = 0; p = &mode[0]; if( (q = im_getnextoption( &p )) ) { page = atoi( q ); } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "seq", q ) ) seq = 1; } /* We need to be compatible with the pre-sequential mode * im_tiff2vips(). This returned a "t" if given a "p" image, since it * used writeline. * * If we're writing the image to a "p", switch it to a "t". And only * for non-tiled (strip) images which we write with writeline. * * Don't do this for header read, since we don't want to force a * malloc if all we are doing is looking at fields. */ #ifdef HAVE_TIFF if( !header_only && !seq && !vips__istifftiled( filename ) && out->dtype == VIPS_IMAGE_PARTIAL ) { if( vips__image_wio_output( out ) ) return( -1 ); } if( header_only ) { if( vips__tiff_read_header( filename, out, page ) ) return( -1 ); } else { if( vips__tiff_read( filename, out, page, TRUE ) ) return( -1 ); } #else vips_error( "im_tiff2vips", "%s", _( "no TIFF support in your libvips" ) ); return( -1 ); #endif /*HAVE_TIFF*/ return( 0 ); } int im_tiff2vips( const char *name, IMAGE *out ) { return( tiff2vips( name, out, FALSE ) ); } /* By having a separate header func, we get lazy.c to open via disc/mem. */ static int im_tiff2vips_header( const char *name, IMAGE *out ) { return( tiff2vips( name, out, TRUE ) ); } static VipsFormatFlags tiff_flags( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( (VipsFormatFlags) vips_foreign_flags( "tiffload", filename ) ); } static int istiff( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( vips_foreign_is_a( "tiffload", filename ) ); } static const char *tiff_suffs[] = { ".tif", ".tiff", NULL }; typedef VipsFormat VipsFormatTiff; typedef VipsFormatClass VipsFormatTiffClass; static void vips_format_tiff_class_init( VipsFormatTiffClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "tiff"; object_class->description = _( "TIFF" ); format_class->is_a = istiff; format_class->header = im_tiff2vips_header; format_class->load = im_tiff2vips; format_class->save = im_vips2tiff; format_class->get_flags = tiff_flags; format_class->suffs = tiff_suffs; } static void vips_format_tiff_init( VipsFormatTiff *object ) { } G_DEFINE_TYPE( VipsFormatTiff, vips_format_tiff, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/im_webp2vips.c0000664000175000017500000000502612530402247015753 00000000000000/* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "../foreign/webp.h" static int webp2vips( const char *name, IMAGE *out, gboolean header_only ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); #ifdef HAVE_LIBWEBP if( header_only ) { if( vips__webp_read_file_header( filename, out ) ) return( -1 ); } else { if( vips__webp_read_file( filename, out ) ) return( -1 ); } #else vips_error( "im_webp2vips", "%s", _( "no webp support in your libvips" ) ); return( -1 ); #endif /*HAVE_LIBWEBP*/ return( 0 ); } int im_webp2vips( const char *name, IMAGE *out ) { return( webp2vips( name, out, FALSE ) ); } #ifdef HAVE_LIBWEBP static int im_webp2vips_header( const char *name, IMAGE *out ) { return( webp2vips( name, out, TRUE ) ); } static const char *webp_suffs[] = { ".webp", NULL }; typedef VipsFormat VipsFormatWebp; typedef VipsFormatClass VipsFormatWebpClass; static void vips_format_webp_class_init( VipsFormatWebpClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "webp"; object_class->description = _( "webp" ); format_class->is_a = vips__iswebp; format_class->header = im_webp2vips_header; format_class->load = im_webp2vips; format_class->save = im_vips2webp; format_class->suffs = webp_suffs; } static void vips_format_webp_init( VipsFormatWebp *object ) { } G_DEFINE_TYPE( VipsFormatWebp, vips_format_webp, VIPS_TYPE_FORMAT ); #endif /*HAVE_LIBWEBP*/ vips-8.2.2/libvips/deprecated/im_bernd.c0000664000175000017500000000414312530402247015123 00000000000000/* @(#) Extract a tile from a pyramid as a jpeg * @(#) * @(#) int * @(#) im_bernd( const char *tiffname, * @(#) int x, int y, int w, int h ) * @(#) * @(#) * @(#) Returns 0 on success and -1 on error * @(#) * * 7/5/99 JC * - from im_tiff2vips and im_vips2jpeg, plus some stuff from Steve * 11/7/01 JC * - page number now in filename * 12/5/09 * - fix signed/unsigned warning */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include static int extract( IMAGE *in, int x, int y, int w, int h ) { IMAGE *t1; int len; char *buf; if( !(t1 = im_open_local( in, "im_bernd:2", "p" )) || im_extract_area( in, t1, x, y, w, h ) || im_vips2bufjpeg( t1, in, 75, &buf, &len ) ) return( -1 ); if( fwrite( buf, sizeof( char ), len, stdout ) != (size_t) len ) { im_error( "im_bernd", "%s", _( "error writing output" ) ); return( -1 ); } fflush( stdout ); return( 0 ); } int im_bernd( const char *tiffname, int x, int y, int w, int h ) { IMAGE *in; if( !(in = im_open( "im_bernd:1", "p" )) ) return( -1 ); if( im_tiff2vips( tiffname, in ) || extract( in, x, y, w, h ) ) { im_close( in ); return( -1 ); } im_close( in ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_vips2jpeg.c0000664000175000017500000000467012530402247015747 00000000000000/* Convert 8-bit VIPS images to/from JPEG. * * 30/11/11 * - now just a stub calling the new system */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include int im_vips2jpeg( IMAGE *in, const char *filename ) { int qfac = 75; /* profile has to default to NULL, meaning "no param". If we default * to "none" we will not attach the profile from the metadata. */ char *profile = NULL; char *p, *q; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; /* Parse mode from filename. */ im_filename_split( filename, name, mode ); strcpy( buf, mode ); p = &buf[0]; if( (q = im_getnextoption( &p )) ) { if( strcmp( q, "" ) != 0 ) qfac = atoi( mode ); } if( (q = im_getnextoption( &p )) ) { if( strcmp( q, "" ) != 0 ) profile = q; } if( (q = im_getnextoption( &p )) ) { im_error( "im_vips2jpeg", _( "unknown extra options \"%s\"" ), q ); return( -1 ); } return( vips_jpegsave( in, name, "Q", qfac, "profile", profile, NULL ) ); } int im_vips2bufjpeg( IMAGE *in, IMAGE *out, int qfac, char **obuf, int *olen ) { size_t len; if( vips_jpegsave_buffer( in, (void **) obuf, &len, "Q", qfac, NULL ) ) return( -1 ); if( out ) im_add_callback( out, "close", (im_callback_fn) vips_free, obuf, NULL ); if( olen ) *olen = len; return( 0 ); } int im_vips2mimejpeg( IMAGE *in, int qfac ) { return( vips_jpegsave_mime( in, "Q", qfac, NULL ) ); } vips-8.2.2/libvips/deprecated/im_dif_std.c0000664000175000017500000000621512530402247015447 00000000000000/* @(#) Program to calculate the stdev of the differnce image * @(#) at a given displacement vector * * Written : 25/11/1987 * Author : N. Dessipris * Updated : 2/12/1991 * 22/7/93 JC * - im_incheck() added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include static int im__mean_std_int_buffer( int *buffer, int size, double *pmean, double *pstd ) { double mean, std; register int i; int sumf; int temp; int *pbuffer; int sumf2; double correction; /* calulates the correction term for the variance */ double variance; /* = (sumf2 - correction)/n */ if (size <= 0) { im_error( "im_mean_std_int_buffer", "%s", _( "wrong args") ); return(-1); } mean = 0.0; std = 0.0; sumf = 0; sumf2 = 0; pbuffer = buffer; for (i=0; iBands != 1)||(im->BandFmt != IM_BANDFMT_UCHAR)) { im_error( "im_dif_std", "%s", _( "Unable to accept input") ); return(-1);} if ( (xpos + xsize + dx > im->Xsize)|| (ypos + ysize + dy > im->Ysize) ) { im_error( "im_dif_std", "%s", _( "wrong args") ); return(-1); } bufsize = xsize * ysize; buf = (int *)calloc( (unsigned)bufsize, sizeof(int) ); if ( buf == NULL ) { im_error( "im_dif_std", "%s", _( "calloc failed") ); return(-1); } input = (PEL*)im->data; input += ( ypos * im->Xsize + xpos ); ofst = dy * im->Xsize + dx; pbuf = buf; for ( y=0; yXsize; for ( x=0; x #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* Make a mask image. */ static int build_freq_mask( IMAGE *out, int xs, int ys, ImMaskType flag, va_list ap ) { /* May be fewer than 4 args ... but extract them all anyway. Should be * safe. */ double p0 = va_arg( ap, double ); double p1 = va_arg( ap, double ); double p2 = va_arg( ap, double ); double p3 = va_arg( ap, double ); double p4 = va_arg( ap, double ); VipsImage *t; switch( flag ) { case IM_MASK_IDEAL_HIGHPASS: if( vips_mask_ideal( &t, xs, ys, p0, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_LOWPASS: if( vips_mask_ideal( &t, xs, ys, p0, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_HIGHPASS: if( vips_mask_butterworth( &t, xs, ys, p0, p1, p2, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_LOWPASS: if( vips_mask_butterworth( &t, xs, ys, p0, p1, p2, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_HIGHPASS: if( vips_mask_gaussian( &t, xs, ys, p0, p1, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_LOWPASS: if( vips_mask_gaussian( &t, xs, ys, p0, p1, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_RINGPASS: if( vips_mask_ideal_ring( &t, xs, ys, p0, p1, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_RINGREJECT: if( vips_mask_ideal_ring( &t, xs, ys, p0, p1, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_RINGPASS: if( vips_mask_butterworth_ring( &t, xs, ys, p0, p1, p2, p3, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_RINGREJECT: if( vips_mask_butterworth_ring( &t, xs, ys, p0, p1, p2, p3, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_RINGPASS: if( vips_mask_gaussian_ring( &t, xs, ys, p0, p1, p2, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_RINGREJECT: if( vips_mask_gaussian_ring( &t, xs, ys, p0, p1, p2, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_FRACTAL_FLT: if( vips_mask_fractal( &t, xs, ys, p0, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_BANDPASS: if( vips_mask_ideal_band( &t, xs, ys, p0, p1, p2, NULL ) ) return( -1 ); break; case IM_MASK_IDEAL_BANDREJECT: if( vips_mask_ideal_band( &t, xs, ys, p0, p1, p2, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_BANDPASS: if( vips_mask_butterworth_band( &t, xs, ys, p0, p1, p2, p3, p4, NULL ) ) return( -1 ); break; case IM_MASK_BUTTERWORTH_BANDREJECT: if( vips_mask_butterworth_band( &t, xs, ys, p0, p1, p2, p3, p4, "reject", TRUE, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_BANDPASS: if( vips_mask_gaussian_band( &t, xs, ys, p0, p1, p2, p3, NULL ) ) return( -1 ); break; case IM_MASK_GAUSS_BANDREJECT: if( vips_mask_gaussian_band( &t, xs, ys, p0, p1, p2, p3, "reject", TRUE, NULL ) ) return( -1 ); break; default: im_error( "im_freq_mask", "%s", _( "unimplemented mask type" ) ); return( -1 ); } if( im_copy( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_flt_image_freq( IMAGE *in, IMAGE *out, ImMaskType flag, ... ) { IMAGE *mask = im_open_local( out, "tempmask", "p" ); va_list ap; if( !mask ) return( -1 ); /* Generate mask. */ va_start( ap, flag ); if( build_freq_mask( mask, in->Xsize, in->Ysize, flag, ap ) ) return( -1 ); va_end( ap ); if( im_freqflt( in, mask, out ) ) return( -1 ); return( 0 ); } int im_create_fmask( IMAGE *out, int xsize, int ysize, ImMaskType flag, ... ) { va_list ap; va_start( ap, flag ); if( build_freq_mask( out, xsize, ysize, flag, ap ) ) return( -1 ); va_end( ap ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_vips2png.c0000664000175000017500000000415312530402247015602 00000000000000/* Convert 1 to 4-band 8 or 16-bit VIPS images to/from PNG. * * 19/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include int im_vips2png( IMAGE *in, const char *filename ) { int compression; int interlace; char *p, *q; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; /* Extract write mode from filename and parse. */ im_filename_split( filename, name, mode ); strcpy( buf, mode ); p = &buf[0]; compression = 6; interlace = 0; if( (q = im_getnextoption( &p )) ) compression = atoi( q ); if( (q = im_getnextoption( &p )) ) interlace = atoi( q ); return( vips_pngsave( in, name, "compression", compression, "interlace", interlace, NULL ) ); } int im_vips2bufpng( IMAGE *in, IMAGE *out, int compression, int interlace, char **obuf, size_t *olen ) { if( vips_pngsave_buffer( in, (void **) obuf, olen, "compression", compression, "interlace", interlace, NULL ) ) return( -1 ); if( out ) im_add_callback( out, "close", (im_callback_fn) vips_free, obuf, NULL ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_png2vips.c0000664000175000017500000000645512530402247015611 00000000000000/* Convert 1 to 4-band 8 or 16-bit VIPS images to/from PNG. * * 19/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "../foreign/vipspng.h" static int png2vips( const char *name, IMAGE *out, gboolean header_only ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q; int seq; im_filename_split( name, filename, mode ); seq = 0; p = &mode[0]; if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "seq", q ) ) seq = 1; } /* We need to be compatible with the pre-sequential mode * im_png2vips(). This returned a "t" if given a "p" image, since it * used writeline. * * If we're writing the image to a "p", switch it to a "t". * * Don't do this for header read, since we don't want to force a * malloc if all we are doing is looking at fields. */ if( !header_only && !seq && out->dtype == VIPS_IMAGE_PARTIAL ) { if( vips__image_wio_output( out ) ) return( -1 ); } #ifdef HAVE_PNG if( header_only ) { if( vips__png_header( filename, out ) ) return( -1 ); } else { if( vips__png_read( filename, out, TRUE ) ) return( -1 ); } #else vips_error( "im_png2vips", "%s", _( "no PNG support in your libvips" ) ); return( -1 ); #endif /*HAVE_PNG*/ return( 0 ); } int im_png2vips( const char *name, IMAGE *out ) { return( png2vips( name, out, FALSE ) ); } /* By having a separate header func, we get lazy.c to open via disc/mem. */ static int im_png2vips_header( const char *name, IMAGE *out ) { return( png2vips( name, out, TRUE ) ); } static int ispng( const char *filename ) { return( vips_foreign_is_a( "pngload", filename ) ); } static const char *png_suffs[] = { ".png", NULL }; typedef VipsFormat VipsFormatPng; typedef VipsFormatClass VipsFormatPngClass; static void vips_format_png_class_init( VipsFormatPngClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "png"; object_class->description = _( "PNG" ); format_class->is_a = ispng; format_class->header = im_png2vips_header; format_class->load = im_png2vips; format_class->save = im_vips2png; format_class->suffs = png_suffs; } static void vips_format_png_init( VipsFormatPng *object ) { } G_DEFINE_TYPE( VipsFormatPng, vips_format_png, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/im_align_bands.c0000664000175000017500000000525712530402247016301 00000000000000/* * Brute force align the bands of an image. * * Copyright: Nottingham Trent University * Author: Tom Vajzovic * Written on: 2008-02-04 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include /** * im_align_bands: * @in: image to align * @out: output image * * This operation uses im_phasecor_fft() to find an integer displacement to * align all image bands band 0. It is very slow and not very accurate. * * Use im_estpar() in preference: it's fast and accurate. * * See also: im_global_balancef(), im_remosaic(). * * Returns: 0 on success, -1 on error */ int im_align_bands( IMAGE *in, IMAGE *out ){ #define FUNCTION_NAME "im_align_bands" if( im_piocheck( in, out )) return -1; if( 1 == in-> Bands ) return im_copy( in, out ); { IMAGE **bands= IM_ARRAY( out, 2 * in-> Bands, IMAGE* ); IMAGE **wrapped_bands= bands + in-> Bands; double x= 0.0; double y= 0.0; int i; if( ! bands || im_open_local_array( out, bands, in-> Bands, FUNCTION_NAME ": bands", "p" ) || im_open_local_array( out, wrapped_bands + 1, in-> Bands - 1, FUNCTION_NAME ": wrapped_bands", "p" )) return -1; for( i= 0; i < in-> Bands; ++i ) if( im_extract_band( in, bands[i], i )) return -1; wrapped_bands[ 0 ]= bands[0]; for( i= 1; i < in-> Bands; ++i ){ IMAGE *temp= im_open( FUNCTION_NAME ": temp", "t" ); double this_x, this_y, val; if( ! temp || im_phasecor_fft( bands[i-1], bands[i], temp ) || im_maxpos_avg( temp, & this_x, & this_y, & val ) || im_close( temp )) return -1; x+= this_x; y+= this_y; if( im_wrap( bands[i], wrapped_bands[i], (int) x, (int) y )) return -1; } return im_gbandjoin( wrapped_bands, out, in-> Bands ); } #undef FUNCTION_NAME } vips-8.2.2/libvips/deprecated/dispatch_types.c0000664000175000017500000004214312530402247016371 00000000000000/* Define built-in VIPS types. * * J. Cupitt, 8/4/93. * * Modified: * 21/5/07 * - any length vector (Tom) * 23/8/10 * - add IM_TYPE_RW flag for im__rw_image */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /* String containing each of the characters which can be used within a * single command line argument to separate the elements of a vector. */ #define VEC_SEPS " " /* Init function for input displays. Just a stub nowadays. */ static int input_display_init( im_object *obj, char *str ) { *obj = NULL; return( 0 ); } /* Input display type. */ im_type_desc im__input_display = { IM_TYPE_DISPLAY, /* It's a display */ 0, /* No storage needed */ IM_TYPE_ARG, /* It requires a command-line arg */ input_display_init, /* Init function */ NULL /* Destroy function */ }; /* Output display type. */ im_type_desc im__output_display = { IM_TYPE_DISPLAY, /* It's a display */ sizeof( void * ), /* Memory to allocate */ IM_TYPE_OUTPUT, /* Output object */ NULL, /* Init function */ NULL /* Destroy function */ }; /* Init function for input images. */ static int input_image_init( im_object *obj, char *str ) { IMAGE **im = (IMAGE **) obj; return( !(*im = vips__deprecated_open_read( str, FALSE )) ); } /* Input image type. */ im_type_desc im__input_image = { IM_TYPE_IMAGE, /* It's an image */ 0, /* No storage needed */ IM_TYPE_ARG, /* It requires a command-line arg */ (im_init_obj_fn) input_image_init,/* Init function */ (im_dest_obj_fn) im_close /* Destroy function */ }; /* Init function for output images. */ static int output_image_init( im_object *obj, char *str ) { IMAGE **im = (IMAGE **) obj; return( !(*im = vips__deprecated_open_write( str )) ); } /* Output image type. */ im_type_desc im__output_image = { IM_TYPE_IMAGE, /* It's an image */ 0, /* No storage to be allocated */ IM_TYPE_OUTPUT | IM_TYPE_ARG, /* Flags! */ (im_init_obj_fn) output_image_init,/* Init function */ (im_dest_obj_fn) im_close /* Destroy function */ }; /* Init function for RW images. */ static int rw_image_init( im_object *obj, char *str ) { IMAGE **im = (IMAGE **) obj; return( !(*im = im_open( str, "rw" )) ); } /* RW image type. */ im_type_desc im__rw_image = { IM_TYPE_IMAGE, /* It's an image */ 0, /* No storage to be allocated */ IM_TYPE_ARG | IM_TYPE_RW, /* Read-write object, needs an arg */ (im_init_obj_fn) rw_image_init, /* Init function */ (im_dest_obj_fn) im_close /* Destroy function */ }; /* im_imagevec_object destroy function. */ static int imagevec_dest( im_object obj ) { im_imagevec_object *iv = obj; if( iv->vec ) { int i; for( i = 0; i < iv->n; i++ ) if( iv->vec[i] ) { im_close( iv->vec[i] ); iv->vec[i] = NULL; } g_free( iv->vec ); iv->vec = NULL; iv->n = 0; } return( 0 ); } /* Init function for imagevec input. */ static int input_imagevec_init( im_object *obj, char *str ) { im_imagevec_object *iv = *obj; char **strv; int nargs; int i; strv = g_strsplit( str, VEC_SEPS, -1 ); nargs = g_strv_length( strv ); if( !(iv->vec = VIPS_ARRAY( NULL, nargs, IMAGE * )) ) { g_strfreev( strv ); return( -1 ); } iv->n = nargs; /* Must NULL them out in case we fail halfway though opening them all. */ for( i = 0; i < nargs; i++ ) iv->vec[i] = NULL; for( i = 0; i < nargs; i++ ) if( !(iv->vec[i] = im_open( strv[i], "rd" )) ) { g_strfreev( strv ); return( -1 ); } g_strfreev( strv ); return( 0 ); } /* Input image vector type. */ im_type_desc im__input_imagevec = { IM_TYPE_IMAGEVEC, /* It's an array of IMAGE */ sizeof( im_imagevec_object ), /* Memory to allocate in vec build */ IM_TYPE_ARG, /* It requires a command-line arg */ input_imagevec_init, /* Init function */ imagevec_dest /* Destroy function */ }; /* Init function for masks. "str" can be NULL for output masks. */ static int mask_init( im_object *obj, char *str ) { im_mask_object *mo = *obj; /* Install string, clear mask. */ if( str && !(mo->name = im_strdup( NULL, str )) ) return( -1 ); mo->mask = NULL; return( 0 ); } /* Init function for input dmasks. As above, but read in the mask. */ static int dmask_init( im_object *obj, char *str ) { im_mask_object *mo = *obj; if( mask_init( obj, str ) ) return( -1 ); if( !(mo->mask = im_read_dmask( str )) ) return( -1 ); return( 0 ); } /* Init function for input imasks. */ static int imask_init( im_object *obj, char *str ) { im_mask_object *mo = *obj; if( mask_init( obj, str ) ) return( -1 ); if( !(mo->mask = im_read_imask( str )) ) return( -1 ); return( 0 ); } /* DOUBLEMASK destroy function. */ static int dmask_dest( im_object obj ) { im_mask_object *mo = obj; VIPS_FREE( mo->name ); VIPS_FREEF( im_free_dmask, mo->mask ); return( 0 ); } /* INTMASK destroy function. */ static int imask_dest( im_object obj ) { im_mask_object *mo = obj; VIPS_FREE( mo->name ); VIPS_FREEF( im_free_imask, mo->mask ); return( 0 ); } /* As above, but save the mask first. */ static int save_dmask_dest( im_object obj ) { im_mask_object *mo = obj; if( mo->mask && im_write_dmask( mo->mask ) ) return( -1 ); return( dmask_dest( obj ) ); } /* As above, but save the mask first. */ static int save_imask_dest( im_object obj ) { im_mask_object *mo = obj; if( mo->mask && im_write_imask( mo->mask ) ) return( -1 ); return( imask_dest( obj ) ); } /* Output dmask type. */ im_type_desc im__output_dmask = { IM_TYPE_DMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_OUTPUT | IM_TYPE_ARG, /* Flags */ mask_init, /* Init function */ save_dmask_dest /* Save and destroy function */ }; /* Input dmask type. */ im_type_desc im__input_dmask = { IM_TYPE_DMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_ARG, /* It requires a command-line arg */ dmask_init, /* Init function */ dmask_dest /* Destroy function */ }; /* Output imask type. */ im_type_desc im__output_imask = { IM_TYPE_IMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_OUTPUT | IM_TYPE_ARG, /* Flags */ mask_init, /* Init function */ save_imask_dest /* Save and destroy function */ }; /* Input imask type. */ im_type_desc im__input_imask = { IM_TYPE_IMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_ARG, /* It requires a command-line arg */ imask_init, /* Init function */ imask_dest /* Destroy function */ }; /* Output dmask to screen type. Set a `print' function to get actual output. * Used for things like "stats". */ im_type_desc im__output_dmask_screen = { IM_TYPE_DMASK, /* It's a mask */ sizeof( im_mask_object ), /* Storage for mask object */ IM_TYPE_OUTPUT, /* It's an output argument */ mask_init, /* Init function */ dmask_dest /* Destroy function */ }; /* Init function for double input. */ static int input_double_init( im_object *obj, char *str ) { double *d = (double *) *obj; *d = g_ascii_strtod( str, NULL ); return( 0 ); } /* Input double type. */ im_type_desc im__input_double = { IM_TYPE_DOUBLE, /* It's a double */ sizeof( double ), /* Memory to allocate */ IM_TYPE_ARG, /* It requires a command-line arg */ input_double_init, /* Init function */ NULL /* Destroy function */ }; /* im_doublevec_object destroy function. */ static int doublevec_dest( im_object obj ) { im_doublevec_object *dv = obj; if( dv->vec ) { g_free( dv->vec ); dv->vec = NULL; dv->n = 0; } return( 0 ); } /* Init function for doublevec input. */ static int input_doublevec_init( im_object *obj, char *str ) { im_doublevec_object *dv = *obj; char **strv; int nargs; int i; strv = g_strsplit( str, VEC_SEPS, -1 ); nargs = g_strv_length( strv ); if( !(dv->vec = VIPS_ARRAY( NULL, nargs, double )) ) { g_strfreev( strv ); return( -1 ); } dv->n = nargs; for( i = 0; i < nargs; i++ ) { dv->vec[i] = g_ascii_strtod( strv[i], NULL ); if( errno ) { vips_error_system( errno, "input_doublevec_init", _( "bad double \"%s\"" ), strv[i] ); g_strfreev( strv ); return( -1 ); } } g_strfreev( strv ); return( 0 ); } /* Input double vector type. */ im_type_desc im__input_doublevec = { IM_TYPE_DOUBLEVEC, /* It's an array of double */ sizeof( im_doublevec_object ), /* Memory to allocate in vec build */ IM_TYPE_ARG, /* It requires a command-line arg */ input_doublevec_init, /* Init function */ doublevec_dest /* Destroy function */ }; /* Print function for doublevec output. */ int im__dvprint( im_object obj ) { im_doublevec_object *dv = obj; int i; for( i = 0; i < dv->n; i++ ) printf( "%G ", dv->vec[i] ); printf( "\n" ); return( 0 ); } /* Output double vector type. */ im_type_desc im__output_doublevec = { IM_TYPE_DOUBLEVEC, /* It's an array of double */ sizeof( im_doublevec_object ), /* Memory to allocate in vec build */ IM_TYPE_OUTPUT, /* Output type */ NULL, /* Init function */ doublevec_dest /* Destroy function */ }; /* im_intvec_object destroy function. */ static int intvec_dest( im_object obj ) { im_intvec_object *iv = obj; if( iv->vec ) { g_free( iv->vec ); iv->vec = NULL; iv->n = 0; } return( 0 ); } /* Init function for intvec input. */ static int input_intvec_init( im_object *obj, char *str ) { im_intvec_object *iv = *obj; char **strv; int nargs; int i; strv = g_strsplit( str, VEC_SEPS, -1 ); nargs = g_strv_length( strv ); if( !(iv->vec = VIPS_ARRAY( NULL, nargs, int )) ) { g_strfreev( strv ); return( -1 ); } iv->n = nargs; for( i = 0; i < nargs; i++ ) { long int val= strtol( strv[i], NULL, 10 ); if( errno ) { vips_error_system( errno, "input_intvec_init", _( "bad integer \"%s\"" ), strv[i] ); g_strfreev( strv ); return( -1 ); } if( INT_MAX < val || INT_MIN > val ) { vips_error( "input_intvec_init", "%ld overflows integer type", val ); } iv->vec[i] = (int) val; } g_strfreev( strv ); return( 0 ); } /* Input int vector type. */ im_type_desc im__input_intvec = { IM_TYPE_INTVEC, /* It's an array of int */ sizeof( im_intvec_object ), /* Memory to allocate in vec build */ IM_TYPE_ARG, /* It requires a command-line arg */ input_intvec_init, /* Init function */ intvec_dest /* Destroy function */ }; /* Print function for intvec output. */ int im__ivprint( im_object obj ) { im_intvec_object *iv = obj; int i; for( i = 0; i < iv->n; i++ ) printf( "%d ", iv->vec[i] ); printf( "\n" ); return( 0 ); } /* Output int vector type. */ im_type_desc im__output_intvec = { IM_TYPE_INTVEC, /* It's an array of int */ sizeof( im_intvec_object ), /* Memory to allocate in vec build */ IM_TYPE_OUTPUT, /* Output arg */ (im_init_obj_fn)NULL, /* Init function */ (im_dest_obj_fn)intvec_dest /* Destroy function */ }; /* Init function for int input. */ static int input_int_init( im_object *obj, char *str ) { int *i = (int *) *obj; if( sscanf( str, "%d", i ) != 1 ) { vips_error( "input_int", "%s", _( "bad format" ) ); return( -1 ); } return( 0 ); } /* Input int type. */ im_type_desc im__input_int = { IM_TYPE_INT, /* It's an int */ sizeof( int ), /* Memory to allocate */ IM_TYPE_ARG, /* It requires a command-line arg */ input_int_init, /* Init function */ NULL /* Destroy function */ }; /* Init function for string input. */ static int input_string_init( im_object *obj, char *str ) { if( !(*obj = (im_object) im_strdup( NULL, str )) ) return( -1 ); return( 0 ); } /* Input string type. */ im_type_desc im__input_string = { IM_TYPE_STRING, /* It's a string */ 0, /* Memory to allocate */ IM_TYPE_ARG, /* It requires a command-line arg */ input_string_init, /* Init function */ vips_free /* Destroy function */ }; /* Output string type. */ im_type_desc im__output_string = { IM_TYPE_STRING, /* It's a string */ 0, /* Memory to allocate */ IM_TYPE_OUTPUT, /* It's an output argument */ NULL, /* Init function */ vips_free /* Destroy function */ }; /* Output double type. */ im_type_desc im__output_double = { IM_TYPE_DOUBLE, /* It's a double */ sizeof( double ), /* Memory to allocate */ IM_TYPE_OUTPUT, /* It's an output argument */ NULL, /* Init function */ NULL /* Destroy function */ }; /* Output complex type. */ im_type_desc im__output_complex = { IM_TYPE_COMPLEX, /* It's a complex */ 2 * sizeof( double ), /* Memory to allocate */ IM_TYPE_OUTPUT, /* It's an output argument */ NULL, /* Init function */ NULL /* Destroy function */ }; /* Output int type. */ im_type_desc im__output_int = { IM_TYPE_INT, /* It's an int */ sizeof( int ), /* Memory to allocate */ IM_TYPE_OUTPUT, /* It's an output argument */ NULL, /* Init function */ NULL /* Destroy function */ }; /* Print function for int output. */ int im__iprint( im_object obj ) { int *i = (int *) obj; printf( "%d\n", *i ); return( 0 ); } /* Print function for string output. */ int im__sprint( im_object obj ) { char *s = (char *) obj; printf( "%s\n", s ); return( 0 ); } /* Print function for double output. */ int im__dprint( im_object obj ) { double *d = (double *) obj; printf( "%G\n", *d ); return( 0 ); } /* Print function for complex output. */ int im__cprint( im_object obj ) { double *d = (double *) obj; printf( "%G %G\n", d[0], d[1] ); return( 0 ); } /* Statistics to stdout. */ int im__dmsprint( im_object obj ) { DOUBLEMASK *mask = ((im_mask_object *) obj)->mask; double *row; int i, j; /* Print statistics band stats eg: 2 bands:b 0,1 */ printf( "band minimum maximum sum " "sum^2 mean deviation\n" ); for( j = 0; j < mask->ysize; j++ ) { row = mask->coeff + j * mask->xsize; if( j == 0 ) printf( "all" ); else printf( "%2d ", j ); for( i = 0; i < 6; i++ ) printf( "%12g", row[i] ); printf( "\n" ); } return( 0 ); } /* GValue */ /* Init function for input gvalue. Just make a string ... will get cast to * whatever later. */ static int input_gvalue_init( im_object *obj, char *str ) { GValue *value = *obj; g_value_init( value, G_TYPE_STRING ); g_value_set_string( value, str ); return( 0 ); } static int gvalue_free( im_object obj ) { GValue *value = obj; /* If it's just zeros (built but not used) we'll get an error if we * unset(). */ if( G_IS_VALUE( value ) ) g_value_unset( value ); return( 0 ); } /* Input GValue type. */ im_type_desc im__input_gvalue = { IM_TYPE_GVALUE, sizeof( GValue ), /* Need some storage */ IM_TYPE_ARG, /* It requires a command-line arg */ (im_init_obj_fn) input_gvalue_init, /* Init function */ (im_dest_obj_fn) gvalue_free /* Destroy function */ }; int im__gprint( im_object obj ) { GValue *value = obj; char *str_value; str_value = g_strdup_value_contents( value ); printf( "%s\n", str_value ); g_free( str_value ); return( 0 ); } /* Init function for output gvalue. Just init to zero. */ static int output_gvalue_init( im_object *obj ) { GValue *value = *obj; memset( value, 0, sizeof( GValue ) ); return( 0 ); } im_type_desc im__output_gvalue = { IM_TYPE_GVALUE, sizeof( GValue ), /* Need some storage */ IM_TYPE_OUTPUT, /* No arg needed (just print) */ (im_init_obj_fn) output_gvalue_init, /* Init function */ (im_dest_obj_fn) gvalue_free /* Destroy function */ }; /* Init function for input interpolate. * * This is used as a helper function by the C++ interface, so amke it public. */ int vips__input_interpolate_init( im_object *obj, char *str ) { GType type = g_type_from_name( "VipsInterpolate" ); VipsObjectClass *class = VIPS_OBJECT_CLASS( g_type_class_ref( type ) ); VipsObject *object; g_assert( class ); if( !(object = vips_object_new_from_string( class, str )) ) return( -1 ); if( vips_object_build( object ) ) { g_object_unref( object ); return( -1 ); } *obj = object; return( 0 ); } static int input_interpolate_dest( im_object obj ) { g_object_unref( (GObject *) obj ); return( 0 ); } im_type_desc im__input_interpolate = { IM_TYPE_INTERPOLATE, 0, /* No storage required */ IM_TYPE_ARG, /* It requires a command-line arg */ vips__input_interpolate_init, /* Init function */ input_interpolate_dest /* Destroy function */ }; vips-8.2.2/libvips/deprecated/vips7compat.c0000664000175000017500000030306012610427330015617 00000000000000/* compat stuff for vips7 * * 4/3/11 * - hacked up */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include /* Split filename into name / mode components. name and mode should both be * FILENAME_MAX chars. * * We look for the ':' splitting the name and mode by searching for the * rightmost occurrence of the regexp "\.[A-Za-z0-9]+:". The initial dot can * be missing if there's a dirsep or start of string, meaning this is a * filename without an extension. * * Examples: * * c:\silly:dir:name\fr:ed.tif:jpeg:95,,,,c:\icc\srgb.icc * -> c:\silly:dir:name\fr:ed.tif jpeg:95,,,,c:\icc\srgb.icc * I180: * -> I180 "" * c:\silly: * -> c:\silly "" * c:\silly * -> c:\silly "" * C:\fixtures\2569067123_aca715a2ee_o.jpg * -> C:\fixtures\2569067123_aca715a2ee_o.jpg "" * * vips8 handles this in a much better way :( */ void im_filename_split( const char *path, char *name, char *mode ) { char *p; vips_strncpy( name, path, FILENAME_MAX ); /* Search back towards start stopping at each ':' char. */ for( p = name + strlen( name ) - 1; p > name; p -= 1 ) if( *p == ':' ) { char *q; /* We are skipping back over the file extension, * isalnum() is probably sufficient. */ for( q = p - 1; isalnum( *q ) && q > name; q -= 1 ) ; if( *q == '.' ) { break; } /* All the way back to the start? We probably have a * filename with no extension, eg. "I180:" */ if( q == name ) break; /* .. or we could hit a dirsep. Allow win or nix * separators. */ if( *q == '/' || *q == '\\' ) break; } /* Ignore a ':' in column 1, it's probably a drive letter on a * Windows path. */ if( *p == ':' && p - name != 1 ) { vips_strncpy( mode, p + 1, FILENAME_MAX ); *p = '\0'; } else strcpy( mode, "" ); } /** * vips_path_filename7: * @path: path to split * * Return the filename part of a vips7 path. For testing only. */ char * vips_path_filename7( const char *path ) { char name[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( path, name, mode ); return( g_strdup( name ) ); } /** * vips_path_mode7: * @path: path to split * * Return the mode part of a vips7 path. For testing only. */ char * vips_path_mode7( const char *path ) { char name[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( path, name, mode ); return( g_strdup( mode ) ); } /* Skip any leading path stuff. Horrible: if this is a filename which came * from win32 and we're a *nix machine, it'll have '\\' not '/' as the * separator :-( * * Try to fudge this ... if the file doesn't contain any of our native * separators, look for the opposite one as well. If there are none of those * either, just return the filename. */ const char * im_skip_dir( const char *path ) { char name[FILENAME_MAX]; char mode[FILENAME_MAX]; const char *p; const char *q; const char native_dir_sep = G_DIR_SEPARATOR; const char non_native_dir_sep = native_dir_sep == '/' ? '\\' : '/'; /* Remove any trailing save modifiers: we don't want '/' or '\' in the * modifier confusing us. */ im_filename_split( path, name, mode ); /* The '\0' char at the end of the string. */ p = name + strlen( name ); /* Search back for the first native dir sep, or failing that, the first * non-native dir sep. */ for( q = p; q > name && q[-1] != native_dir_sep; q-- ) ; if( q == name ) for( q = p; q > name && q[-1] != non_native_dir_sep; q-- ) ; return( path + (q - name) ); } /* Extract suffix from filename, ignoring any mode string. Suffix should be * FILENAME_MAX chars. Include the "." character, if any. */ void im_filename_suffix( const char *path, char *suffix ) { char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p; im_filename_split( path, name, mode ); if( (p = strrchr( name, '.' )) ) strcpy( suffix, p ); else strcpy( suffix, "" ); } /* Does a filename have one of a set of suffixes. Ignore case. */ int im_filename_suffix_match( const char *path, const char *suffixes[] ) { char suffix[FILENAME_MAX]; const char **p; im_filename_suffix( path, suffix ); for( p = suffixes; *p; p++ ) if( g_ascii_strcasecmp( suffix, *p ) == 0 ) return( 1 ); return( 0 ); } /* p points to the start of a buffer ... move it on through the buffer (ready * for the next call), and return the current option (or NULL for option * missing). ',' characters inside options can be escaped with a '\'. */ char * im_getnextoption( char **in ) { char *p; char *q; p = *in; q = p; if( !p || !*p ) return( NULL ); /* Find the next ',' not prefixed with a '\'. If the first character * of p is ',', there can't be a previous escape character. */ for(;;) { if( !(p = strchr( p, ',' )) ) break; if( p == q ) break; if( p[-1] != '\\' ) break; p += 1; } if( p ) { /* Another option follows this one .. set up to pick that out * next time. */ *p = '\0'; *in = p + 1; } else { /* This is the last one. */ *in = NULL; } if( strlen( q ) > 0 ) return( q ); else return( NULL ); } /* Get a suboption string, or NULL. */ char * im_getsuboption( const char *buf ) { char *p, *q, *r; if( !(p = strchr( buf, ':' )) ) /* No suboption. */ return( NULL ); /* Step over the ':'. */ p += 1; /* Need to unescape any \, pairs. Shift stuff down one if we find one. */ for( q = p; *q; q++ ) if( q[0] == '\\' && q[1] == ',' ) for( r = q; *r; r++ ) r[0] = r[1]; return( p ); } VipsImage * im_open( const char *filename, const char *mode ) { VipsImage *image; vips_check_init(); /* We have to go via the old VipsFormat system so we can support the * "filename:option" syntax. * * Use "rs" to turn on seq mode. */ if( strcmp( mode, "r" ) == 0 || strcmp( mode, "rd" ) == 0 ) { if( !(image = vips__deprecated_open_read( filename, FALSE )) ) return( NULL ); } else if( strcmp( mode, "rs" ) == 0 ) { if( !(image = vips__deprecated_open_read( filename, TRUE )) ) return( NULL ); } else if( strcmp( mode, "w" ) == 0 ) { if( !(image = vips__deprecated_open_write( filename )) ) return( NULL ); } else { if( !(image = vips_image_new_mode( filename, mode )) ) return( NULL ); } return( image ); } /* Just for compatibility. New code should use vips_object_local() directly. */ VipsImage * im_open_local( VipsImage *parent, const char *filename, const char *mode ) { VipsImage *image; if( !(image = im_open( filename, mode )) ) return( NULL ); vips_object_local( parent, image ); return( image ); } /* Just for compatibility. New code should use vips_object_local_array(). */ int im_open_local_array( VipsImage *parent, VipsImage **images, int n, const char *filename, const char *mode ) { int i; for( i = 0; i < n; i++ ) if( !(images[i] = im_open_local( parent, filename, mode )) ) return( -1 ); return( 0 ); } typedef struct { im_callback_fn fn; void *a; void *b; } Callback; static void im_add_callback_cb( VipsImage *im, Callback *callback ) { if( callback->fn( callback->a, callback->b ) ) vips_image_set_kill( im, TRUE ); } int im_add_callback( VipsImage *im, const char *name, im_callback_fn fn, void *a, void *b ) { Callback *callback; callback = VIPS_NEW( VIPS_OBJECT( im ), Callback ); callback->fn = fn; callback->a = a; callback->b = b; g_signal_connect( im, name, G_CALLBACK( im_add_callback_cb ), callback ); return( 0 ); } static void im_add_callback_cb1( VipsImage *im, void *x, Callback *callback ) { if( callback->fn( callback->a, callback->b ) ) vips_image_set_kill( im, TRUE ); } int im_add_callback1( VipsImage *im, const char *name, im_callback_fn fn, void *a, void *b ) { Callback *callback; callback = VIPS_NEW( VIPS_OBJECT( im ), Callback ); callback->fn = fn; callback->a = a; callback->b = b; g_signal_connect( im, name, G_CALLBACK( im_add_callback_cb1 ), callback ); return( 0 ); } /* Make something local to an image descriptor ... pass in a constructor * and a destructor, plus three args. */ void * im_local( IMAGE *im, im_construct_fn cons, im_callback_fn dest, void *a, void *b, void *c ) { void *obj; if( !im ) { im_error( "im_local", "%s", _( "NULL image descriptor" ) ); return( NULL ); } if( !(obj = cons( a, b, c )) ) return( NULL ); if( im_add_close_callback( im, (im_callback_fn) dest, obj, a ) ) { dest( obj, a ); return( NULL ); } return( obj ); } /* Make an array of things local to a descriptor ... eg. make 6 local temp * images. */ int im_local_array( IMAGE *im, void **out, int n, im_construct_fn cons, im_callback_fn dest, void *a, void *b, void *c ) { int i; for( i = 0; i < n; i++ ) if( !(out[i] = im_local( im, cons, dest, a, b, c )) ) return( -1 ); return( 0 ); } int im_close( VipsImage *im ) { g_object_unref( im ); return( 0 ); } /* edvips.c needs this */ VipsImage * im_init( const char *filename ) { VipsImage *image; image = vips_image_new(); IM_SETSTR( image->filename, filename ); return( image ); } /* We can't do this with a rename macro since the C++ interface needs * this entrypoint, see VImage.h. * * As a result our fancy ABI check will not work with the vips7 interface. */ int im_init_world( const char *argv0 ) { return( vips_init( argv0 ) ); } /* Prettyprint various header fields. Just for vips7 compat, use * vips_enum_value() instead. */ const char *im_Type2char( VipsInterpretation type ) { return( vips_enum_string( VIPS_TYPE_INTERPRETATION, type ) ); } const char *im_BandFmt2char( VipsBandFormat format ) { return( vips_enum_string( VIPS_TYPE_BAND_FORMAT, format ) ); } const char *im_Coding2char( VipsCoding coding ) { return( vips_enum_string( VIPS_TYPE_CODING, coding ) ); } const char *im_dtype2char( VipsImageType n ) { return( vips_enum_string( VIPS_TYPE_IMAGE_TYPE, n ) ); } const char *im_dhint2char( VipsDemandStyle style ) { return( vips_enum_string( VIPS_TYPE_DEMAND_STYLE, style ) ); } /* Old names for enums, for compat. */ static const char *im_Type[] = { "IM_TYPE_MULTIBAND", /* 0 */ "IM_TYPE_B_W", /* 1 */ "LUMINACE", /* 2 */ "XRAY", /* 3 */ "IR", /* 4 */ "YUV", /* 5 */ "RED_ONLY", /* 6 */ "GREEN_ONLY", /* 7 */ "BLUE_ONLY", /* 8 */ "POWER_SPECTRUM", /* 9 */ "IM_TYPE_HISTOGRAM", /* 10 */ "LUT", /* 11 */ "IM_TYPE_XYZ", /* 12 */ "IM_TYPE_LAB", /* 13 */ "CMC", /* 14 */ "IM_TYPE_CMYK", /* 15 */ "IM_TYPE_LABQ", /* 15 */ "IM_TYPE_RGB", /* 17 */ "IM_TYPE_UCS", /* 18 */ "IM_TYPE_LCH", /* 19 */ "IM_TYPE_LABS", /* 20 */ "", /* 21 */ "IM_TYPE_sRGB", /* 22 */ "IM_TYPE_YXY", /* 23 */ "IM_TYPE_FOURIER", /* 24 */ "IM_TYPE_RGB16", /* 25 */ "IM_TYPE_GREY16", /* 26 */ NULL }; static const char *im_BandFmt[] = { "IM_BANDFMT_UCHAR", "IM_BANDFMT_CHAR", "IM_BANDFMT_USHORT", "IM_BANDFMT_SHORT", "IM_BANDFMT_UINT", "IM_BANDFMT_INT", "IM_BANDFMT_FLOAT", "IM_BANDFMT_COMPLEX", "IM_BANDFMT_DOUBLE", "IM_BANDFMT_DPCOMPLEX", NULL }; static const char *im_Coding[] = { "IM_CODING_NONE", "COLQUANT8", "IM_CODING_LABQ", "IM_CODING_LABQ_COMPRESSED", "RGB_COMPRESSED", "LUM_COMPRESSED", "IM_CODING_RAD", NULL }; static const char *im_dtype[] = { "IM_NONE", "IM_SETBUF", "IM_SETBUF_FOREIGN", "IM_OPENIN", "IM_MMAPIN", "IM_MMAPINRW", "IM_OPENOUT", "IM_PARTIAL", NULL }; static const char *im_dhint[] = { "IM_SMALLTILE", "IM_FATSTRIP", "IM_THINSTRIP", "IM_ANY", NULL }; /* enum string to int, try the GEnum first, then use a compat *char[] for old * names. */ static int lookup_enum( GType type, const char *names[], const char *name ) { GEnumClass *class; GEnumValue *value; int i; class = g_type_class_ref( type ); if( (value = g_enum_get_value_by_nick( class, name )) ) return( value->value ); if( (value = g_enum_get_value_by_name( class, name )) ) return( value->value ); for( i = 0; names[i]; i++ ) if( strcasecmp( names[i], name ) == 0 ) return( i ); return( -1 ); } VipsInterpretation im_char2Type( const char *str ) { return( lookup_enum( VIPS_TYPE_INTERPRETATION, im_Type, str ) ); } VipsBandFormat im_char2BandFmt( const char *str ) { return( lookup_enum( VIPS_TYPE_BAND_FORMAT, im_BandFmt, str ) ); } VipsCoding im_char2Coding( const char *str ) { return( lookup_enum( VIPS_TYPE_CODING, im_Coding, str ) ); } VipsImageType im_char2dtype( const char *str ) { return( lookup_enum( VIPS_TYPE_IMAGE_TYPE, im_dtype, str ) ); } VipsDemandStyle im_char2dhint( const char *str ) { return( lookup_enum( VIPS_TYPE_DEMAND_STYLE, im_dhint, str ) ); } /* Totally useless now. */ const char *im_Compression2char( int n ) { return( "NONE" ); } int im_char2Compression( const char *str ) { return( -1 ); } /* Wrap one / many is being replaced by a class thing. */ typedef struct { im_wrapmany_fn fn; /* Function we call */ void *a, *b; /* User values for function */ } Bundle; /* Maximum number of input images -- why not? */ #define MAX_INPUT_IMAGES (64) /* Convert a VipsRegion. */ static int process_region( VipsRegion *or, void *seq, void *a, void *b ) { VipsRegion **ir = (VipsRegion **) seq; Bundle *bun = (Bundle *) b; PEL *p[MAX_INPUT_IMAGES], *q; int i, y; /* Prepare all input regions and make buffer pointers. */ for( i = 0; ir[i]; i++ ) { if( vips_region_prepare( ir[i], &or->valid ) ) return( -1 ); p[i] = (PEL *) VIPS_REGION_ADDR( ir[i], or->valid.left, or->valid.top ); } p[i] = NULL; q = (PEL *) VIPS_REGION_ADDR( or, or->valid.left, or->valid.top ); /* Convert linewise. */ for( y = 0; y < or->valid.height; y++ ) { PEL *p1[MAX_INPUT_IMAGES]; /* Make a copy of p[] which the buffer function can mess up if * it wants. */ for( i = 0; ir[i]; i++ ) p1[i] = p[i]; /* Bizarre double-cast stops a bogus gcc 4.1 compiler warning. */ bun->fn( (void **) ((void *)p1), q, or->valid.width, bun->a, bun->b ); /* Move pointers on. */ for( i = 0; ir[i]; i++ ) p[i] += VIPS_REGION_LSKIP( ir[i] ); q += VIPS_REGION_LSKIP( or ); } return( 0 ); } /* Make a copy of an array of input images. */ static IMAGE ** dupims( IMAGE *out, IMAGE **in ) { IMAGE **new; int i, n; for( n = 0; in[n]; n++ ) ; new = VIPS_ARRAY( VIPS_OBJECT( out ), n + 1, IMAGE * ); for( i = 0; i < n; i++ ) new[i] = in[i]; new[n] = NULL; return( new ); } int im_wrapmany( IMAGE **in, IMAGE *out, im_wrapmany_fn fn, void *a, void *b ) { Bundle *bun; int i, n; /* Count input images. */ for( n = 0; in[n]; n++ ) ; if( n >= MAX_INPUT_IMAGES - 1 ) { vips_error( "im_wrapmany", "%s", _( "too many input images" ) ); return( -1 ); } /* Save args. */ bun = VIPS_NEW( VIPS_OBJECT( out ), Bundle ); if( !(in = dupims( out, in )) ) return( -1 ); bun->fn = fn; bun->a = a; bun->b = b; /* Check descriptors --- make sure that our caller has done this * correctly. */ for( i = 0; i < n; i++ ) { if( in[i]->Xsize != out->Xsize || in[i]->Ysize != out->Ysize ) { vips_error( "im_wrapmany", "%s", _( "descriptors differ in size" ) ); return( -1 ); } /* Check io style. */ if( vips_image_pio_input( in[i] ) ) return( -1 ); } vips__demand_hint_array( out, VIPS_DEMAND_STYLE_THINSTRIP, in ); /* Generate! */ if( vips_image_generate( out, vips_start_many, (VipsGenerateFn) process_region, vips_stop_many, in, bun ) ) return( -1 ); return( 0 ); } static void wrapone_gen( void **ins, void *out, int width, Bundle *bun, void *dummy ) { ((im_wrapone_fn) (bun->fn)) (ins[0], out, width, bun->a, bun->b ); } int im_wrapone( IMAGE *in, IMAGE *out, im_wrapone_fn fn, void *a, void *b ) { Bundle *bun; IMAGE *invec[2]; /* Heh, yuk. We cast back above. */ bun = VIPS_NEW( VIPS_OBJECT( out ), Bundle ); bun->fn = (im_wrapmany_fn) fn; bun->a = a; bun->b = b; invec[0] = in; invec[1] = NULL; return( im_wrapmany( invec, out, (im_wrapmany_fn) wrapone_gen, bun, NULL ) ); } static void wraptwo_gen( void **ins, void *out, int width, Bundle *bun, void *dummy ) { ((im_wraptwo_fn) (bun->fn)) (ins[0], ins[1], out, width, bun->a, bun->b ); } int im_wraptwo( IMAGE *in1, IMAGE *in2, IMAGE *out, im_wraptwo_fn fn, void *a, void *b ) { Bundle *bun; IMAGE *invec[3]; bun = VIPS_NEW( VIPS_OBJECT( out ), Bundle ); bun->fn = (im_wrapmany_fn) fn; bun->a = a; bun->b = b; invec[0] = in1; invec[1] = in2; invec[2] = NULL; return( im_wrapmany( invec, out, (im_wrapmany_fn) wraptwo_gen, bun, NULL ) ); } /* Save a bit of typing. */ #define UC IM_BANDFMT_UCHAR #define C IM_BANDFMT_CHAR #define US IM_BANDFMT_USHORT #define S IM_BANDFMT_SHORT #define UI IM_BANDFMT_UINT #define I IM_BANDFMT_INT #define F IM_BANDFMT_FLOAT #define X IM_BANDFMT_COMPLEX #define D IM_BANDFMT_DOUBLE #define DX IM_BANDFMT_DPCOMPLEX /* For two integer types, the "largest", ie. one which can represent the * full range of both. */ static int bandfmt_largest[6][6] = { /* UC C US S UI I */ /* UC */ { UC, S, US, S, UI, I }, /* C */ { S, C, I, S, I, I }, /* US */ { US, I, US, I, UI, I }, /* S */ { S, S, I, S, I, I }, /* UI */ { UI, I, UI, I, UI, I }, /* I */ { I, I, I, I, I, I } }; /* For two formats, find one which can represent the full range of both. */ static VipsBandFmt im__format_common( VipsBandFmt in1, VipsBandFmt in2 ) { if( vips_band_format_iscomplex( in1 ) || vips_band_format_iscomplex( in2 ) ) { /* What kind of complex? */ if( in1 == IM_BANDFMT_DPCOMPLEX || in2 == IM_BANDFMT_DPCOMPLEX ) /* Output will be DPCOMPLEX. */ return( IM_BANDFMT_DPCOMPLEX ); else return( IM_BANDFMT_COMPLEX ); } else if( vips_bandfmt_isfloat( in1 ) || vips_bandfmt_isfloat( in2 ) ) { /* What kind of float? */ if( in1 == IM_BANDFMT_DOUBLE || in2 == IM_BANDFMT_DOUBLE ) return( IM_BANDFMT_DOUBLE ); else return( IM_BANDFMT_FLOAT ); } else /* Must be int+int -> int. */ return( bandfmt_largest[in1][in2] ); } int im__formatalike_vec( IMAGE **in, IMAGE **out, int n ) { int i; VipsBandFmt fmt; g_assert( n >= 1 ); fmt = in[0]->BandFmt; for( i = 1; i < n; i++ ) fmt = im__format_common( fmt, in[i]->BandFmt ); for( i = 0; i < n; i++ ) if( im_clip2fmt( in[i], out[i], fmt ) ) return( -1 ); return( 0 ); } int im__formatalike( IMAGE *in1, IMAGE *in2, IMAGE *out1, IMAGE *out2 ) { IMAGE *in[2]; IMAGE *out[2]; in[0] = in1; in[1] = in2; out[0] = out1; out[1] = out2; return( im__formatalike_vec( in, out, 2 ) ); } /* Make an n-band image. Input 1 or n bands. */ int im__bandup( const char *domain, IMAGE *in, IMAGE *out, int n ) { IMAGE *bands[256]; int i; if( in->Bands == n ) return( vips_image_write( in, out ) ); if( in->Bands != 1 ) { im_error( domain, _( "not one band or %d bands" ), n ); return( -1 ); } if( n > 256 || n < 1 ) { im_error( domain, "%s", _( "bad bands" ) ); return( -1 ); } for( i = 0; i < n; i++ ) bands[i] = in; return( im_gbandjoin( bands, out, n ) ); } int im__bandalike_vec( const char *domain, IMAGE **in, IMAGE **out, int n ) { int i; int max_bands; g_assert( n >= 1 ); max_bands = in[0]->Bands; for( i = 1; i < n; i++ ) max_bands = IM_MAX( max_bands, in[i]->Bands ); for( i = 0; i < n; i++ ) if( im__bandup( domain, in[i], out[i], max_bands ) ) return( -1 ); return( 0 ); } int im__bandalike( const char *domain, IMAGE *in1, IMAGE *in2, IMAGE *out1, IMAGE *out2 ) { IMAGE *in[2]; IMAGE *out[2]; in[0] = in1; in[1] = in2; out[0] = out1; out[1] = out2; if( im__bandalike_vec( domain, in, out, 2 ) ) return( -1 ); return( 0 ); } VipsVector * im__init_program( VipsVector *vectors[IM_BANDFMT_LAST], VipsBandFmt format_table[IM_BANDFMT_LAST], VipsBandFmt fmt ) { int isize = im__sizeof_bandfmt[fmt]; int osize = im__sizeof_bandfmt[format_table[fmt]]; VipsVector *v; v = vips_vector_new( "binary arith", osize ); vips_vector_source_name( v, "s1", isize ); vips_vector_source_name( v, "s2", isize ); vips_vector_temporary( v, "t1", osize ); vips_vector_temporary( v, "t2", osize ); vectors[fmt] = v; return( v ); } void im__compile_programs( VipsVector *vectors[IM_BANDFMT_LAST] ) { int fmt; for( fmt = 0; fmt < IM_BANDFMT_LAST; fmt++ ) { if( vectors[fmt] && !vips_vector_compile( vectors[fmt] ) ) IM_FREEF( vips_vector_free, vectors[fmt] ); } #ifdef DEBUG printf( "im__compile_programs: " ); for( fmt = 0; fmt < IM_BANDFMT_LAST; fmt++ ) if( vectors[fmt] ) printf( "%s ", im_BandFmt2char( fmt ) ); printf( "\n" ); #endif /*DEBUG*/ } int im_add( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "add", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_subtract( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "subtract", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_multiply( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "multiply", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_divide( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "divide", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_avg( IMAGE *in, double *out ) { return( vips_avg( in, out, NULL ) ); } int im_deviate( IMAGE *in, double *out ) { return( vips_deviate( in, out, NULL ) ); } int im_generate( VipsImage *im, im_start_fn start, im_generate_fn generate, im_stop_fn stop, void *a, void *b ) { return( vips_image_generate( im, start, (VipsGenerateFn) generate, stop, a, b ) ); } int im_minpos( IMAGE *in, int *xpos, int *ypos, double *out ) { return( vips_min( in, out, "x", xpos, "y", ypos, NULL ) ); } int im_min( IMAGE *in, double *out ) { return( im_minpos( in, NULL, NULL, out ) ); } int im_maxpos( IMAGE *in, int *xpos, int *ypos, double *out ) { return( vips_max( in, out, "x", xpos, "y", ypos, NULL ) ); } int im_max( IMAGE *in, double *out ) { return( im_maxpos( in, NULL, NULL, out ) ); } #define MAX_IMAGES 100 int im_demand_hint (IMAGE * im, VipsDemandStyle hint, ...) { va_list ap; int i; IMAGE *ar[MAX_IMAGES]; va_start (ap, hint); for (i = 0; i < MAX_IMAGES && (ar[i] = va_arg (ap, IMAGE *)); i++) ; va_end (ap); if (i == MAX_IMAGES) { im_error ("im_demand_hint", "%s", _("too many images")); return (-1); } vips__demand_hint_array (im, hint, ar); return (0); } int im_cp_descv (IMAGE * im, ...) { va_list ap; int i; IMAGE *ar[MAX_IMAGES]; va_start (ap, im); for (i = 0; i < MAX_IMAGES && (ar[i] = va_arg (ap, IMAGE *)); i++) ; va_end (ap); if (i == MAX_IMAGES) { im_error ("im_cp_descv", "%s", _("too many images")); return (-1); } return (vips__image_copy_fields_array (im, ar)); } int im_cp_desc(IMAGE *out, IMAGE *in ) { return( im_cp_descv( out, in, NULL)); } int im_copy_set( IMAGE *in, IMAGE *out, VipsType type, float xres, float yres, int xoffset, int yoffset ) { VipsImage *x; if( vips_copy( in, &x, "interpretation", type, "xres", xres, "yres", yres, "xoffset", xoffset, "yoffset", yoffset, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_copy_morph( IMAGE *in, IMAGE *out, int bands, VipsBandFmt bandfmt, VipsCoding coding ) { VipsImage *x; if( vips_copy( in, &x, "bands", bands, "format", bandfmt, "coding", coding, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_copy( IMAGE *in, IMAGE *out ) { return( vips_image_write( in, out ) ); } int im_copy_swap( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_byteswap( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_copy_set_meta( IMAGE *in, IMAGE *out, const char *field, GValue *value ) { if( vips_image_write( in, out ) ) return( -1 ); (void) im_meta_set( out, field, value ); return( 0 ); } int im_copy_native( IMAGE *in, IMAGE *out, gboolean is_msb_first ) { if( is_msb_first != im_amiMSBfirst() ) return( im_copy_swap( in, out ) ); else return( vips_image_write( in, out ) ); } int im_embed( IMAGE *in, IMAGE *out, int type, int x, int y, int width, int height ) { VipsImage *t; if( vips_embed( in, &t, x, y, width, height, "extend", type, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_fliphor( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_flip( in, &t, VIPS_DIRECTION_HORIZONTAL, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rot90( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_rot( in, &t, VIPS_ANGLE_D90, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rot180( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_rot( in, &t, VIPS_ANGLE_D180, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rot270( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_rot( in, &t, VIPS_ANGLE_D270, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_flipver( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_flip( in, &t, VIPS_DIRECTION_VERTICAL, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_insert( IMAGE *main, IMAGE *sub, IMAGE *out, int x, int y ) { VipsImage *t; if( vips_insert( main, sub, &t, x, y, "expand", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_insert_noexpand( IMAGE *main, IMAGE *sub, IMAGE *out, int x, int y ) { VipsImage *t; if( vips_insert( main, sub, &t, x, y, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_lrjoin( IMAGE *left, IMAGE *right, IMAGE *out ) { VipsImage *t; if( vips_join( left, right, &t, VIPS_DIRECTION_HORIZONTAL, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_tbjoin( IMAGE *left, IMAGE *right, IMAGE *out ) { VipsImage *t; if( vips_join( left, right, &t, VIPS_DIRECTION_VERTICAL, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_extract_area( IMAGE *in, IMAGE *out, int left, int top, int width, int height ) { VipsImage *t; if( vips_extract_area( in, &t, left, top, width, height, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_extract_bands( IMAGE *in, IMAGE *out, int band, int nbands ) { VipsImage *t; if( vips_extract_band( in, &t, band, "n", nbands, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_extract_band( IMAGE *in, IMAGE *out, int band ) { return( im_extract_bands( in, out, band, 1 ) ); } int im_extract_areabands( IMAGE *in, IMAGE *out, int left, int top, int width, int height, int band, int nbands ) { VipsImage *t1, *t2; if( vips_extract_area( in, &t1, left, top, width, height, NULL ) ) return( -1 ); if( vips_extract_band( t1, &t2, band, "n", nbands, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_replicate( IMAGE *in, IMAGE *out, int across, int down ) { VipsImage *t; if( vips_replicate( in, &t, across, down, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_clip2fmt( IMAGE *in, IMAGE *out, VipsBandFmt fmt ) { VipsImage *t; if( vips_cast( in, &t, fmt, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } size_t im_ref_string_get_length( const GValue *value ) { size_t length; (void) vips_value_get_ref_string( value, &length ); return( length ); } int im_bandjoin( VipsImage *in1, VipsImage *in2, VipsImage *out ) { VipsImage *t; if( vips_bandjoin2( in1, in2, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_gbandjoin( VipsImage **in, VipsImage *out, int n ) { VipsImage *t; if( vips_bandjoin( in, &t, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rank_image( VipsImage **in, VipsImage *out, int n, int index ) { VipsImage *t; if( vips_bandrank( in, &t, n, "index", index, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_maxvalue( IMAGE **in, IMAGE *out, int n ) { return( im_rank_image( in, out, n, n - 1 ) ); } int im_invert( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_invert( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_sign( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_sign( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_abs( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_abs( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_bandmean( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_bandmean( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_lintra( double a, IMAGE *in, double b, IMAGE *out ) { VipsImage *t; if( vips_linear1( in, &t, a, b, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_lintra_vec( int n, double *a, IMAGE *in, double *b, IMAGE *out ) { VipsImage *t; if( vips_linear( in, &t, a, b, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_black( IMAGE *out, int x, int y, int bands ) { VipsImage *t; if( vips_black( &t, x, y, "bands", bands, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_identity_ushort( VipsImage *lut, int bands, int sz ) { VipsImage *t; if( vips_identity( &t, "bands", bands, "ushort", TRUE, "size", sz, NULL ) ) return( -1 ); if( vips_image_write( t, lut ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_identity( VipsImage *lut, int bands ) { VipsImage *t; if( vips_identity( &t, "bands", bands, NULL ) ) return( -1 ); if( vips_image_write( t, lut ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_gaussnoise( VipsImage *out, int x, int y, double mean, double sigma ) { VipsImage *t; if( vips_gaussnoise( &t, x, y, "mean", mean, "sigma", sigma, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_grid( VipsImage *in, VipsImage *out, int tile_height, int across, int down ) { VipsImage *t; if( vips_grid( in, &t, tile_height, across, down, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_scale( VipsImage *in, VipsImage *out ) { VipsImage *t; if( vips_scale( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_msb( VipsImage *in, VipsImage *out ) { VipsImage *t; if( vips_msb( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_msb_band( VipsImage *in, VipsImage *out, int band ) { VipsImage *t; if( vips_msb( in, &t, "band", band, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_make_xy( IMAGE *out, const int xsize, const int ysize ) { VipsImage *t; if( vips_xyz( &t, xsize, ysize, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_zone( IMAGE *out, int size ) { VipsImage *t; if( vips_zone( &t, size, size, "uchar", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_fzone( IMAGE *out, int size ) { VipsImage *t; if( vips_zone( &t, size, size, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_sines( IMAGE *out, int xsize, int ysize, double horfreq, double verfreq ) { VipsImage *t; if( vips_sines( &t, xsize, ysize, "hfreq", horfreq, "vfreq", verfreq, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_text( IMAGE *out, const char *text, const char *font, int width, int align, int dpi ) { VipsImage *t; if( vips_text( &t, text, "font", font, "width", width, "align", align, "dpi", dpi, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_system( VipsImage *im, const char *cmd, char **out ) { VipsArea *area; VipsImage **array; char *str; area = vips_area_new_array_object( 1 ); array = (VipsImage **) area->data; array[0] = im; if( vips_system( cmd, "in", area, "in_format", "%s.v", "log", &str, NULL ) ) { vips_area_unref( area ); return( -1 ); } vips_area_unref( area ); if( out ) *out = str; return( 0 ); } VipsImage * im_system_image( VipsImage *im, const char *in_format, const char *out_format, const char *cmd_format, char **log ) { VipsArrayImage *array; char *str; VipsImage *out; array = vips_array_image_newv( 1, im ); /* im will be unreffed when area is unreffed. */ g_object_ref( im ); if( vips_system( cmd_format, "in", array, "out", &out, "in_format", in_format, "out_format", out_format, "log", &str, NULL ) ) { vips_area_unref( VIPS_AREA( array ) ); return( NULL ); } vips_area_unref( VIPS_AREA( array ) ); if( log ) *log = str; else g_free( str ); return( out ); } int im_wrap( IMAGE *in, IMAGE *out, int x, int y ) { VipsImage *t; if( vips_wrap( in, &t, "x", x, "y", y, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rotquad( IMAGE *in, IMAGE *out ) { return( im_wrap( in, out, in->Xsize / 2, in->Ysize / 2 ) ); } int im_scaleps( VipsImage *in, VipsImage *out ) { VipsImage *t; if( vips_scale( in, &t, "log", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_zoom( VipsImage *in, VipsImage *out, int xfac, int yfac ) { VipsImage *t; if( vips_zoom( in, &t, xfac, yfac, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_subsample( VipsImage *in, VipsImage *out, int xfac, int yfac ) { VipsImage *t; if( vips_subsample( in, &t, xfac, yfac, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int vips__math( VipsImage *in, VipsImage *out, VipsOperationMath math ) { VipsImage *t; if( vips_math( in, &t, math, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_sintra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_SIN ) ); } int im_costra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_COS ) ); } int im_tantra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_TAN ) ); } int im_asintra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_ASIN ) ); } int im_acostra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_ACOS ) ); } int im_atantra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_ATAN ) ); } int im_logtra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_LOG ) ); } int im_log10tra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_LOG10 ) ); } int im_exptra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_EXP ) ); } int im_exp10tra( IMAGE *in, IMAGE *out ) { return( vips__math( in, out, VIPS_OPERATION_MATH_EXP10 ) ); } DOUBLEMASK * im_stats( VipsImage *in ) { VipsImage *t; DOUBLEMASK *msk; if( vips_stats( in, &t, NULL ) ) return( NULL ); if( !(msk = im_vips2mask( t, "im_stats" )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } DOUBLEMASK * im_gauss_dmask( const char *filename, double sigma, double min_ampl ) { VipsImage *t; DOUBLEMASK *msk; if( vips_gaussmat( &t, sigma, min_ampl, "precision", VIPS_PRECISION_FLOAT, NULL ) ) return( NULL ); if( !(msk = im_vips2mask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } DOUBLEMASK * im_gauss_dmask_sep( const char *filename, double sigma, double min_ampl ) { VipsImage *t; DOUBLEMASK *msk; if( vips_gaussmat( &t, sigma, min_ampl, "precision", VIPS_PRECISION_FLOAT, "separable", TRUE, NULL ) ) return( NULL ); if( !(msk = im_vips2mask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } INTMASK * im_gauss_imask( const char *filename, double sigma, double min_ampl ) { VipsImage *t; INTMASK *msk; if( vips_gaussmat( &t, sigma, min_ampl, NULL ) ) return( NULL ); if( !(msk = im_vips2imask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } INTMASK * im_gauss_imask_sep( const char *filename, double sigma, double min_ampl ) { VipsImage *t; INTMASK *msk; if( vips_gaussmat( &t, sigma, min_ampl, "separable", TRUE, NULL ) ) return( NULL ); if( !(msk = im_vips2imask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } INTMASK * im_log_imask( const char *filename, double sigma, double min_ampl ) { VipsImage *t; INTMASK *msk; if( vips_logmat( &t, sigma, min_ampl, NULL ) ) return( NULL ); if( !(msk = im_vips2imask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } DOUBLEMASK * im_log_dmask( const char *filename, double sigma, double min_ampl ) { VipsImage *t; DOUBLEMASK *msk; if( vips_logmat( &t, sigma, min_ampl, "precision", VIPS_PRECISION_FLOAT, NULL ) ) return( NULL ); if( !(msk = im_vips2mask( t, filename )) ) { g_object_unref( t ); return( NULL ); } g_object_unref( t ); return( msk ); } int im_recomb( IMAGE *in, IMAGE *out, DOUBLEMASK *recomb ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_mask2vips( recomb, t1 ) ) return( -1 ); if( vips_recomb( in, &t2, t1, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_compass( VipsImage *in, VipsImage *out, INTMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_imask2vips( mask, t1 ) ) return( -1 ); if( vips_compass( in, &t2, t1, "times", 8, "angle", VIPS_ANGLE45_D45, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_lindetect( IMAGE *in, IMAGE *out, INTMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_imask2vips( mask, t1 ) ) return( -1 ); if( vips_compass( in, &t2, t1, "times", 4, "angle", VIPS_ANGLE45_D45, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_gradient( IMAGE *in, IMAGE *out, INTMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_imask2vips( mask, t1 ) ) return( -1 ); if( vips_compass( in, &t2, t1, "times", 2, "angle", VIPS_ANGLE45_D90, "combine", VIPS_COMBINE_SUM, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_convsep_raw( IMAGE *in, IMAGE *out, INTMASK *mask ) { im_error( "im_convsep_raw", "no compat function" ); return( -1 ); } int im_convsep( IMAGE *in, IMAGE *out, INTMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_imask2vips( mask, t1 ) ) return( -1 ); if( vips_convsep( in, &t2, t1, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_convsep_f_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { im_error( "im_convsep_raw", "no compat function" ); return( -1 ); } int im_convsep_f( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { VipsImage *t1, *t2; if( !(t1 = vips_image_new()) || im_mask2vips( mask, t1 ) ) return( -1 ); if( vips_convsep( in, &t2, t1, "precision", VIPS_PRECISION_FLOAT, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_addgnoise( IMAGE *in, IMAGE *out, double sigma ) { IMAGE *t; if( !(t = im_open_local( out, "im_addgnoise", "p" )) || im_gaussnoise( t, in->Xsize, in->Ysize, 0, sigma ) || im_add( in, t, out ) ) return( -1 ); return( 0 ); } int im_contrast_surface_raw( IMAGE *in, IMAGE *out, int half_win_size, int spacing ) { im_error( "im_contrast_surface_raw", "no compat function" ); return( -1 ); } /* This replaces some custom code in 7.36 and earlier. The hand-made one was * slower for spacing == 1, though faster for large values of spacing. * * Not worth maintaining a special operator for. */ int im_contrast_surface( IMAGE *in, IMAGE *out, int half_win_size, int spacing ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 10 ); int size = half_win_size * 2; int x, y; t[0] = vips_image_new_matrixv( 1, 2, -1.0, 1.0 ); t[1] = vips_image_new_matrixv( 2, 1, -1.0, 1.0 ); t[8] = vips_image_new_matrix( size, size ); for( y = 0; y < size; y++ ) for( x = 0; x < size; x++ ) *VIPS_MATRIX( t[8], x, y ) = 1.0; if( vips_conv( in, &t[2], t[0], NULL ) || vips_conv( in, &t[3], t[1], NULL ) || vips_abs( t[2], &t[4], NULL ) || vips_abs( t[3], &t[5], NULL ) || vips_add( t[4], t[5], &t[6], NULL ) || vips_conv( t[6], &t[7], t[8], NULL ) || vips_subsample( t[7], &t[9], spacing, spacing, NULL ) || vips_image_write( t[9], out ) ) return( -1 ); return( 0 ); } int im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ) { im_error( "im_spcor_raw", "no compat function" ); return( -1 ); } int im_spcor( IMAGE *in, IMAGE *ref, IMAGE *out ) { VipsImage *x; if( vips_call( "spcor", in, ref, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_fastcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ) { im_error( "im_fastcor_raw", "no compat function" ); return( -1 ); } int im_fastcor( IMAGE *in, IMAGE *ref, IMAGE *out ) { VipsImage *x; if( vips_call( "fastcor", in, ref, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_sharpen( IMAGE *in, IMAGE *out, int mask_size, double x1, double y2, double y3, double m1, double m2 ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 2 ); /* im_sharpen() always recoded as labq and im_benchmark() depends * upon this behaviour. */ if( vips_call( "sharpen", in, &t[0], "radius", mask_size / 2, "x1", x1, "y2", y2, "y3", y3, "m1", m1, "m2", m2, NULL ) || vips_colourspace( t[0], &t[1], VIPS_INTERPRETATION_LABQ, NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } static int vips__round( VipsImage *in, VipsImage *out, VipsOperationRound round ) { VipsImage *t; if( vips_round( in, &t, round, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_rint( IMAGE *in, IMAGE *out ) { return( vips__round( in, out, VIPS_OPERATION_ROUND_RINT ) ); } int im_floor( IMAGE *in, IMAGE *out ) { return( vips__round( in, out, VIPS_OPERATION_ROUND_FLOOR ) ); } int im_ceil( IMAGE *in, IMAGE *out ) { return( vips__round( in, out, VIPS_OPERATION_ROUND_CEIL ) ); } static int vips__relational( IMAGE *in1, IMAGE *in2, IMAGE *out, VipsOperationRelational relational ) { VipsImage *t; if( vips_relational( in1, in2, &t, relational, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_equal( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_EQUAL ) ); } int im_notequal( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_NOTEQ ) ); } int im_less( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_LESS ) ); } int im_lesseq( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_LESSEQ ) ); } int im_more( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_MORE ) ); } int im_moreeq( IMAGE *in1, IMAGE *in2, IMAGE *out ) { return( vips__relational( in1, in2, out, VIPS_OPERATION_RELATIONAL_MOREEQ ) ); } static int vips__relational_vec( IMAGE *in, IMAGE *out, VipsOperationRelational relational, double *c, int n ) { VipsImage *t; if( vips_relational_const( in, &t, relational, c, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_equal_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_EQUAL, c, n ) ); } int im_notequal_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_NOTEQ, c, n ) ); } int im_less_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_LESS, c, n ) ); } int im_lesseq_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_LESSEQ, c, n ) ); } int im_more_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_MORE, c, n ) ); } int im_moreeq_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__relational_vec( in, out, VIPS_OPERATION_RELATIONAL_MOREEQ, c, n ) ); } int im_equalconst( IMAGE *in, IMAGE *out, double c ) { return( im_equal_vec( in, out, 1, &c ) ); } int im_notequalconst( IMAGE *in, IMAGE *out, double c ) { return( im_notequal_vec( in, out, 1, &c ) ); } int im_lessconst( IMAGE *in, IMAGE *out, double c ) { return( im_less_vec( in, out, 1, &c ) ); } int im_lesseqconst( IMAGE *in, IMAGE *out, double c ) { return( im_lesseq_vec( in, out, 1, &c ) ); } int im_moreconst( IMAGE *in, IMAGE *out, double c ) { return( im_more_vec( in, out, 1, &c ) ); } int im_moreeqconst( IMAGE *in, IMAGE *out, double c ) { return( im_moreeq_vec( in, out, 1, &c ) ); } int im_remainder( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *t; if( vips_remainder( in1, in2, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_remainder_vec( IMAGE *in, IMAGE *out, int n, double *c ) { VipsImage *t; if( vips_remainder_const( in, &t, c, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_remainderconst( IMAGE *in, IMAGE *out, double c ) { return( im_remainder_vec( in, out, 1, &c ) ); } static int vips__boolean( IMAGE *in1, IMAGE *in2, IMAGE *out, VipsOperationBoolean boolean ) { VipsImage *t; if( vips_boolean( in1, in2, &t, boolean, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_andimage( VipsImage *in1, VipsImage *in2, VipsImage *out ) { return( vips__boolean( in1, in2, out, VIPS_OPERATION_BOOLEAN_AND ) ); } int im_orimage( VipsImage *in1, VipsImage *in2, VipsImage *out ) { return( vips__boolean( in1, in2, out, VIPS_OPERATION_BOOLEAN_OR ) ); } int im_eorimage( VipsImage *in1, VipsImage *in2, VipsImage *out ) { return( vips__boolean( in1, in2, out, VIPS_OPERATION_BOOLEAN_EOR ) ); } static int vips__boolean_vec( IMAGE *in, IMAGE *out, VipsOperationBoolean boolean, double *c, int n ) { VipsImage *t; if( vips_boolean_const( in, &t, boolean, c, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_andimage_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_AND, c, n ) ); } int im_orimage_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_OR, c, n ) ); } int im_eorimage_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_EOR, c, n ) ); } int im_shiftleft_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_LSHIFT, c, n ) ); } int im_shiftright_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( vips__boolean_vec( in, out, VIPS_OPERATION_BOOLEAN_RSHIFT, c, n ) ); } int im_andimageconst( IMAGE *in, IMAGE *out, double c ) { return( im_andimage_vec( in, out, 1, &c ) ); } int im_orimageconst( IMAGE *in, IMAGE *out, double c ) { return( im_orimage_vec( in, out, 1, &c ) ); } int im_eorimageconst( IMAGE *in, IMAGE *out, double c ) { return( im_eorimage_vec( in, out, 1, &c ) ); } int im_shiftleft( IMAGE *in, IMAGE *out, int n ) { double c = n; return( im_shiftleft_vec( in, out, 1, &c ) ); } int im_shiftright( IMAGE *in, IMAGE *out, int n ) { double c = n; return( im_shiftright_vec( in, out, 1, &c ) ); } static int vips__math2_vec( IMAGE *in, IMAGE *out, VipsOperationMath2 math2, double *c, int n ) { VipsImage *t; if( vips_math2_const( in, &t, math2, c, n, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_powtra_vec( VipsImage *in, VipsImage *out, int n, double *c ) { return( vips__math2_vec( in, out, VIPS_OPERATION_MATH2_POW, c, n ) ); } int im_powtra( IMAGE *in, IMAGE *out, double c ) { return( im_powtra_vec( in, out, 1, &c ) ); } int im_expntra_vec( IMAGE *in, IMAGE *out, int n, double *c ) { return( vips__math2_vec( in, out, VIPS_OPERATION_MATH2_WOP, c, n ) ); } int im_expntra( IMAGE *in, IMAGE *out, double c ) { return( im_expntra_vec( in, out, 1, &c ) ); } int im_ifthenelse( VipsImage *c, VipsImage *a, VipsImage *b, VipsImage *out ) { VipsImage *t; if( vips_ifthenelse( c, a, b, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_blend( VipsImage *c, VipsImage *a, VipsImage *b, VipsImage *out ) { VipsImage *t; if( vips_ifthenelse( c, a, b, &t, "blend", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int vips__complex( VipsImage *in, VipsImage *out, VipsOperationComplex cmplx ) { VipsImage *t; if( vips_complex( in, &t, cmplx, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_c2amph( IMAGE *in, IMAGE *out ) { return( vips__complex( in, out, VIPS_OPERATION_COMPLEX_POLAR ) ); } int im_c2rect( IMAGE *in, IMAGE *out ) { return( vips__complex( in, out, VIPS_OPERATION_COMPLEX_RECT ) ); } static int vips__complexget( VipsImage *in, VipsImage *out, VipsOperationComplexget get ) { VipsImage *t; if( vips_complexget( in, &t, get, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_c2real( IMAGE *in, IMAGE *out ) { return( vips__complexget( in, out, VIPS_OPERATION_COMPLEXGET_REAL ) ); } int im_c2imag( IMAGE *in, IMAGE *out ) { return( vips__complexget( in, out, VIPS_OPERATION_COMPLEXGET_IMAG ) ); } int im_ri2c( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "complexform", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_cache( VipsImage *in, VipsImage *out, int width, int height, int max ) { return( vips_sink_screen( in, out, NULL, width, height, max, 0, NULL, NULL ) ); } int im_argb2rgba( VipsImage *in, VipsImage *out ) { /* No longer exists, just a null op. */ return( vips_image_write( in, out ) ); } int im_shrink( VipsImage *in, VipsImage *out, double xshrink, double yshrink ) { VipsImage *x; if( vips_shrink( in, &x, xshrink, yshrink, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_eye( IMAGE *out, const int xsize, const int ysize, const double factor ) { VipsImage *x; if( vips_eye( &x, xsize, ysize, "factor", factor, "uchar", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_feye( IMAGE *out, const int xsize, const int ysize, const double factor ) { VipsImage *x; if( vips_eye( &x, xsize, ysize, "factor", factor, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_grey( IMAGE *out, const int xsize, const int ysize ) { VipsImage *x; if( vips_grey( &x, xsize, ysize, "uchar", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_fgrey( IMAGE *out, const int xsize, const int ysize ) { VipsImage *x; if( vips_grey( &x, xsize, ysize, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_buildlut( DOUBLEMASK *input, VipsImage *out ) { VipsImage *mat; VipsImage *x; mat = vips_image_new(); if( im_mask2vips( input, mat ) ) return( -1 ); if( vips_buildlut( mat, &x, NULL ) ) { g_object_unref( mat ); return( -1 ); } g_object_unref( mat ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_invertlut( DOUBLEMASK *input, VipsImage *out, int size ) { VipsImage *mat; VipsImage *x; mat = vips_image_new(); if( im_mask2vips( input, mat ) ) return( -1 ); if( vips_invertlut( mat, &x, "size", size, NULL ) ) { g_object_unref( mat ); return( -1 ); } g_object_unref( mat ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_tone_build_range( IMAGE *out, int in_max, int out_max, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) { VipsImage *t; if( vips_tonelut( &t, "in_max", in_max, "out_max", out_max, "Lb", Lb, "Lw", Lw, "Ps", Ps, "Pm", Pm, "Ph", Ph, "S", S, "M", M, "H", H, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_tone_build( IMAGE *out, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) { IMAGE *t1; if( !(t1 = im_open_local( out, "im_tone_build", "p" )) || im_tone_build_range( t1, 32767, 32767, Lb, Lw, Ps, Pm, Ph, S, M, H ) || im_clip2fmt( t1, out, IM_BANDFMT_SHORT ) ) return( -1 ); return( 0 ); } int im_rightshift_size( IMAGE *in, IMAGE *out, int xshift, int yshift, int band_fmt ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 2 ); if( vips_shrink( in, &t[0], 1 << xshift, 1 << yshift, NULL ) || vips_cast( t[0], &t[1], band_fmt, NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } int im_Lab2XYZ_temp( IMAGE *in, IMAGE *out, double X0, double Y0, double Z0 ) { VipsArea *temp; VipsImage *x; temp = (VipsArea *) vips_array_double_newv( 3, X0, Y0, Z0 ); if( vips_Lab2XYZ( in, &x, "temp", temp, NULL ) ) { vips_area_unref( temp ); return( -1 ); } vips_area_unref( temp ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2XYZ( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Lab2XYZ( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_XYZ2Lab_temp( IMAGE *in, IMAGE *out, double X0, double Y0, double Z0 ) { double ary[3]; VipsArea *temp; VipsImage *x; ary[0] = X0; ary[1] = Y0; ary[2] = Z0; temp = (VipsArea *) vips_array_double_new( ary, 3 ); if( vips_XYZ2Lab( in, &x, "temp", temp, NULL ) ) { vips_area_unref( temp ); return( -1 ); } vips_area_unref( temp ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_XYZ2Lab( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_XYZ2Lab( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2LCh( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Lab2LCh( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LCh2Lab( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LCh2Lab( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LCh2UCS( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LCh2CMC( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_UCS2LCh( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_CMC2LCh( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_XYZ2Yxy( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_XYZ2Yxy( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Yxy2XYZ( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Yxy2XYZ( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_float2rad( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_float2rad( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_rad2float( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_rad2float( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2LabQ( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Lab2LabQ( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LabQ2Lab( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabQ2Lab( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2LabS( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_Lab2LabS( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LabS2Lab( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabS2Lab( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LabQ2LabS( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabQ2LabS( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_LabS2LabQ( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabS2LabQ( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_Lab2disp( IMAGE *in, IMAGE *out, struct im_col_display *disp ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_Lab2disp:1", "p" ) || im_Lab2XYZ( in, t[0] ) || im_XYZ2disp( t[0], out, disp ) ) return( -1 ); return( 0 ); } int im_dECMC_fromdisp( IMAGE *im1, IMAGE *im2, IMAGE *out, struct im_col_display *d ) { IMAGE *t[4]; if( im_open_local_array( out, t, 4, "im_dECMC_fromdisp:1", "p" ) || im_disp2XYZ( im1, t[0], d ) || im_XYZ2Lab( t[0], t[1] ) || im_disp2XYZ( im2, t[2], d ) || im_XYZ2Lab( t[2], t[3] ) || im_dECMC_fromLab( t[1], t[3], out ) ) return( -1 ); return( 0 ); } int im_dE_fromdisp( IMAGE *im1, IMAGE *im2, IMAGE *out, struct im_col_display *d ) { IMAGE *t[2]; if( im_open_local_array( out, t, 2, "im_dE_fromdisp:1", "p" ) || im_disp2XYZ( im1, t[0], d ) || im_disp2XYZ( im2, t[1], d ) || im_dE_fromXYZ( t[0], t[1], out ) ) return( -1 ); return( 0 ); } int im_disp2Lab( IMAGE *in, IMAGE *out, struct im_col_display *d ) { VipsImage *t[1]; if( im_open_local_array( out, t, 1, "im_disp2Lab:1", "p" ) || im_disp2XYZ( in, t[0], d ) || im_XYZ2Lab( t[0], out ) ) return( -1 ); return( 0 ); } int im_sRGB2XYZ( IMAGE *in, IMAGE *out ) { VipsImage **t = (VipsImage **) vips_object_local_array( (VipsObject *) out, 2 ); if( vips_sRGB2scRGB( in, &t[0], NULL ) || vips_scRGB2XYZ( t[0], &t[1], NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } int im_XYZ2sRGB( IMAGE *in, IMAGE *out ) { VipsImage **t = (VipsImage **) vips_object_local_array( (VipsObject *) out, 2 ); if( vips_XYZ2scRGB( in, &t[0], NULL ) || vips_scRGB2sRGB( t[0], &t[1], NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } int im_LabQ2sRGB( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_LabQ2sRGB( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_transform( VipsImage *in, VipsImage *out, const char *input_profile_filename, const char *output_profile_filename, VipsIntent intent ) { VipsImage *x; if( vips_icc_transform( in, &x, output_profile_filename, "input_profile", input_profile_filename, "intent", intent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_import( VipsImage *in, VipsImage *out, const char *input_profile_filename, VipsIntent intent ) { VipsImage *x; if( vips_icc_import( in, &x, "input_profile", input_profile_filename, "intent", intent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_import_embedded( VipsImage *in, VipsImage *out, VipsIntent intent ) { VipsImage *x; if( vips_icc_import( in, &x, "embedded", TRUE, "intent", intent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_export_depth( VipsImage *in, VipsImage *out, int depth, const char *output_profile_filename, VipsIntent intent ) { VipsImage *x; if( vips_icc_export( in, &x, "output_profile", output_profile_filename, "depth", depth, "intent", intent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /** * im_LabQ2XYZ: * @in: input image * @out: output image * * Convert an image from LabQ (Coding == IM_CODING_LABQ) to XYZ. * * Returns: 0 on success, -1 on error. */ int im_LabQ2XYZ( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_LabQ2XYZ:1", "p" ) || im_LabQ2Lab( in, t[0] ) || im_Lab2XYZ( t[0], out ) ) return( -1 ); return( 0 ); } int im_Lab2UCS( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_Lab2UCS:1", "p" ) || im_Lab2LCh( in, t[0] ) || im_LCh2UCS( t[0], out ) ) return( -1 ); return( 0 ); } int im_UCS2Lab( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_UCS2Lab:1", "p" ) || im_UCS2LCh( in, t[0] ) || im_LCh2Lab( t[0], out ) ) return( -1 ); return( 0 ); } int im_UCS2XYZ( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_UCS2XYZ:1", "p" ) || im_UCS2Lab( in, t[0] ) || im_Lab2XYZ( t[0], out ) ) return( -1 ); return( 0 ); } int im_XYZ2UCS( IMAGE *in, IMAGE *out ) { IMAGE *t[1]; if( im_open_local_array( out, t, 1, "im_XYZ2UCS:1", "p" ) || im_XYZ2Lab( in, t[0] ) || im_Lab2UCS( t[0], out ) ) return( -1 ); return( 0 ); } int im_dE_fromXYZ( IMAGE *in1, IMAGE *in2, IMAGE *out ) { IMAGE *t[2]; if( im_open_local_array( out, t, 2, "im_dE_fromXYZ:1", "p" ) || im_XYZ2Lab( in1, t[0] ) || im_XYZ2Lab( in2, t[1] ) || im_dE_fromLab( t[0], t[1], out ) ) return( -1 ); return( 0 ); } int im_dE_fromLab( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_dE76( in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_dECMC_fromLab( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_dECMC( in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_dE00_fromLab( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_dE00( in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_icc_ac2rc( VipsImage *in, VipsImage *out, const char *profile_filename ) { VipsImage *x; if( vips_icc_ac2rc( in, &x, profile_filename ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_quadratic( IMAGE *in, IMAGE *out, IMAGE *coeff ) { VipsImage *x; if( vips_quadratic( in, &x, coeff, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_maxpos_vec( VipsImage *im, int *xpos, int *ypos, double *maxima, int n ) { double max; VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; if( vips_max( im, &max, "size", n, "out_array", &out_array, "x_array", &x_array, "y_array", &y_array, NULL ) ) return( -1 ); memcpy( xpos, VIPS_ARRAY_ADDR( x_array, 0 ), n * sizeof( int ) ); memcpy( ypos, VIPS_ARRAY_ADDR( y_array, 0 ), n * sizeof( int ) ); memcpy( maxima, VIPS_ARRAY_ADDR( out_array, 0 ), n * sizeof( double ) ); vips_area_unref( VIPS_AREA( out_array ) ); vips_area_unref( VIPS_AREA( x_array ) ); vips_area_unref( VIPS_AREA( y_array ) ); return( 0 ); } int im_minpos_vec( VipsImage *im, int *xpos, int *ypos, double *minima, int n ) { double min; VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; if( vips_min( im, &min, "size", n, "out_array", &out_array, "x_array", &x_array, "y_array", &y_array, NULL ) ) return( -1 ); memcpy( xpos, VIPS_ARRAY_ADDR( x_array, 0 ), n * sizeof( int ) ); memcpy( ypos, VIPS_ARRAY_ADDR( y_array, 0 ), n * sizeof( int ) ); memcpy( minima, VIPS_ARRAY_ADDR( out_array, 0 ), n * sizeof( double ) ); vips_area_unref( VIPS_AREA( out_array ) ); vips_area_unref( VIPS_AREA( x_array ) ); vips_area_unref( VIPS_AREA( y_array ) ); return( 0 ); } int im_cross_phase( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_call( "cross_phase", in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_maplut( IMAGE *in, IMAGE *out, IMAGE *lut ) { VipsImage *x; if( vips_maplut( in, &x, lut, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_ismonotonic( IMAGE *lut, int *out ) { gboolean monotonic; if( vips_hist_ismonotonic( lut, &monotonic, NULL ) ) return( -1 ); *out = monotonic ? 255 : 0; return( 0 ); } int im_histcum( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_hist_cum( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_histnorm( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_hist_norm( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_histeq( IMAGE *in, IMAGE *out ) { IMAGE *t1; if( !(t1 = im_open_local( out, "im_histeq", "p" )) || im_histcum( in, t1 ) || im_histnorm( t1, out ) ) return( -1 ); return( 0 ); } int im_heq( VipsImage *in, VipsImage *out, int bandno ) { VipsImage *x; if( vips_hist_equal( in, &x, "band", bandno, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_hist( IMAGE *in, IMAGE *out, int bandno ) { IMAGE *hist; if( !(hist = im_open_local( out, "im_hist", "p" )) || im_histgr( in, hist, bandno ) || im_histplot( hist, out ) ) return( -1 ); return( 0 ); } int im_histgr( IMAGE *in, IMAGE *out, int bandno ) { VipsImage *x; if( vips_hist_find( in, &x, "band", bandno, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_stdif( IMAGE *in, IMAGE *out, double a, double m0, double b, double s0, int width, int height ) { VipsImage *x; if( vips_stdif( in, &x, width, height, "a", a, "b", b, "m0", m0, "s0", s0, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_lhisteq( VipsImage *in, VipsImage *out, int width, int height ) { VipsImage *x; if( vips_hist_local( in, &x, width, height, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_histnD( VipsImage *in, VipsImage *out, int bins ) { VipsImage *x; if( vips_hist_find_ndim( in, &x, "bins", bins, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_hist_indexed( VipsImage *index, VipsImage *value, VipsImage *out ) { VipsImage *x; if( vips_hist_find_indexed( value, index, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_project( IMAGE *in, IMAGE *hout, IMAGE *vout ) { VipsImage *x, *y; if( vips_project( in, &x, &y, NULL ) ) return( -1 ); if( vips_image_write( x, hout ) ) { g_object_unref( x ); g_object_unref( y ); return( -1 ); } g_object_unref( x ); if( vips_image_write( y, vout ) ) { g_object_unref( y ); return( -1 ); } g_object_unref( y ); return( 0 ); } int im_profile( IMAGE *in, IMAGE *out, int dir ) { VipsImage *columns, *rows; VipsImage *t1, *t2; if( vips_profile( in, &columns, &rows, NULL ) ) return( -1 ); if( dir == 0 ) { t1 = columns; g_object_unref( rows ); } else { t1 = rows; g_object_unref( columns ); } if( vips_cast( t1, &t2, VIPS_FORMAT_USHORT, NULL ) ) { g_object_unref( t1 ); return( -1 ); } g_object_unref( t1 ); if( vips_image_write( t2, out ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); return( 0 ); } int im_mpercent( IMAGE *in, double percent, int *out ) { if( vips_percent( in, percent * 100.0, out, NULL ) ) return( -1 ); return( 0 ); } int im_mpercent_hist( IMAGE *in, double percent, int *out ) { /* Hard to do this in a wrapper. */ vips_error( "im_mpercent_hist", "%s", _( "no compat implemented" ) ); return( -1 ); } int im_hsp( IMAGE *in, IMAGE *ref, IMAGE *out ) { IMAGE *t[3]; if( im_open_local_array( out, t, 3, "im_hsp", "p" ) || im_histgr( in, t[0], -1 ) || im_histgr( ref, t[1], -1 ) || im_histspec( t[0], t[1], t[2] ) || im_maplut( in, out, t[2] ) ) return( -1 ); return( 0 ); } static int match( VipsImage *in, VipsImage *ref, VipsImage *out ) { VipsImage *x; if( vips_hist_match( in, ref, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_histspec( IMAGE *in, IMAGE *ref, IMAGE *out ) { IMAGE *t[5]; guint64 px; int fmt; if( im_check_uint( "im_histspec", in ) || im_check_uint( "im_histspec", ref ) ) return( -1 ); if( im_open_local_array( out, t, 5, "im_histspec", "p" ) || im_histeq( in, t[0] ) || im_histeq( ref, t[2] ) || match( t[0], t[2], t[4] ) ) return( -1 ); px = VIPS_IMAGE_N_PELS( t[4] ); if( px <= 256 ) fmt = IM_BANDFMT_UCHAR; else if( px <= 65536 ) fmt = IM_BANDFMT_USHORT; else fmt = IM_BANDFMT_UINT; if( im_clip2fmt( t[4], out, fmt ) ) return( -1 ); return( 0 ); } int im_falsecolour( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_falsecolour( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_gammacorrect( IMAGE *in, IMAGE *out, double exponent ) { VipsImage *x; if( vips_gamma( in, &x, "exponent", 1.0 / exponent, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /* This is used by the carrierwave shrinker to cache the * output of shrink before doing the final affine. * * We use the vips8 threaded tilecache to avoid a deadlock: suppose thread1, * evaluating the top block of the output is delayed, and thread2, evaluating * the second block gets here first (this can happen on a heavily-loaded * system). * * With an unthreaded tilecache (as we had before), thread2 will get * the cache lock and start evaling the second block of the shrink. When it * reaches the png reader it will stall until the first block has been used ... * but it never will, since thread1 will block on this cache lock. * * This function is only used in this place (I think), so it's OK to * hard-wire this to be a sequential threaded cache. */ int im_tile_cache( IMAGE *in, IMAGE *out, int tile_width, int tile_height, int max_tiles ) { VipsImage *x; if( vips_tilecache( in, &x, "tile_width", tile_width, "tile_height", tile_height, "max_tiles", max_tiles, "access", VIPS_ACCESS_SEQUENTIAL, "threaded", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /* This is the one used by nip2's menu for caching images. Random access and * persistent. */ int im_tile_cache_random( IMAGE *in, IMAGE *out, int tile_width, int tile_height, int max_tiles ) { VipsImage *x; if( vips_tilecache( in, &x, "tile_width", tile_width, "tile_height", tile_height, "max_tiles", max_tiles, "access", VIPS_ACCESS_RANDOM, "persistent", TRUE, "threaded", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } static int im__affinei( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, VipsTransformation *trn ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 2 ); VipsArea *oarea; gboolean repack; oarea = (VipsArea *) vips_array_int_newv( 4, trn->oarea.left, trn->oarea.top, trn->oarea.width, trn->oarea.height ); /* vips7 affine would repack labq and im_benchmark() depends upon * this. */ repack = in->Coding == IM_CODING_LABQ; if( vips_affine( in, &t[0], trn->a, trn->b, trn->c, trn->d, "interpolate", interpolate, "oarea", oarea, "odx", trn->odx, "ody", trn->ody, NULL ) ) { vips_area_unref( oarea ); return( -1 ); } vips_area_unref( oarea ); in = t[0]; if( repack ) { if( vips_colourspace( in, &t[1], VIPS_INTERPRETATION_LABQ, NULL ) ) return( -1 ); in = t[1]; } if( vips_image_write( in, out ) ) return( -1 ); return( 0 ); } int im_affinei( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, double a, double b, double c, double d, double odx, double ody, int ox, int oy, int ow, int oh ) { VipsTransformation trn; trn.iarea.left = 0; trn.iarea.top = 0; trn.iarea.width = in->Xsize; trn.iarea.height = in->Ysize; trn.oarea.left = ox; trn.oarea.top = oy; trn.oarea.width = ow; trn.oarea.height = oh; trn.a = a; trn.b = b; trn.c = c; trn.d = d; trn.idx = 0; trn.idy = 0; trn.odx = odx; trn.ody = ody; return( im__affinei( in, out, interpolate, &trn ) ); } int im_affinei_all( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, double a, double b, double c, double d, double odx, double ody ) { VipsTransformation trn; trn.iarea.left = 0; trn.iarea.top = 0; trn.iarea.width = in->Xsize; trn.iarea.height = in->Ysize; trn.a = a; trn.b = b; trn.c = c; trn.d = d; trn.idx = 0; trn.idy = 0; trn.odx = odx; trn.ody = ody; vips__transform_set_area( &trn ); return( im__affinei( in, out, interpolate, &trn ) ); } /* Still needed by some parts of mosaic. */ int vips__affine( VipsImage *in, VipsImage *out, VipsTransformation *trn ) { return( im__affinei( in, out, vips_interpolate_bilinear_static(), trn ) ); } int im_copy_file( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_copy_file( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_video_v4l1( IMAGE *im, const char *device, int channel, int brightness, int colour, int contrast, int hue, int ngrabs ) { im_error( "im_video_v4l1", "%s", _( "compiled without im_video_v4l1 support" ) ); return( -1 ); } int im_fwfft( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_fwfft( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_invfft( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_invfft( in, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_invfftr( IMAGE *in, IMAGE *out ) { VipsImage *x; if( vips_invfft( in, &x, "real", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_freqflt( IMAGE *in, IMAGE *mask, IMAGE *out ) { VipsImage *x; if( vips_freqmult( in, mask, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_disp_ps( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_spectrum( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_fractsurf( IMAGE *out, int size, double frd ) { VipsImage *t; if( vips_fractsurf( &t, size, size, frd, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_phasecor_fft( IMAGE *in1, IMAGE *in2, IMAGE *out ) { VipsImage *x; if( vips_phasecor( in1, in2, &x, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_cntlines( VipsImage *im, double *nolines, int flag ) { return( vips_countlines( im, nolines, flag == 0 ? VIPS_DIRECTION_HORIZONTAL : VIPS_DIRECTION_VERTICAL, NULL ) ); } int im_label_regions( IMAGE *test, IMAGE *mask, int *segments ) { VipsImage *x; if( vips_labelregions( test, &x, "segments", segments, NULL ) ) return( -1 ); if( vips_image_write( x, mask ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_rank( IMAGE *in, IMAGE *out, int width, int height, int index ) { VipsImage *x; if( vips_rank( in, &x, width, height, index, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_rank_raw( IMAGE *in, IMAGE *out, int width, int height, int index ) { im_error( "im_rank_raw", "no compat function" ); return( -1 ); } int im_draw_circle( VipsImage *image, int x, int y, int radius, gboolean fill, VipsPel *ink ) { double *vec; int n; if( !(vec = vips__ink_to_vector( "im_draw_circle", image, ink, &n )) ) return( -1 ); return( vips_draw_circle( image, vec, n, x, y, radius, "fill", fill, NULL ) ); } int im_draw_line( VipsImage *image, int x1, int y1, int x2, int y2, VipsPel *ink ) { double *vec; int n; if( !(vec = vips__ink_to_vector( "im_draw_line", image, ink, &n )) ) return( -1 ); return( vips_draw_line( image, vec, n, x1, y1, x2, y2, NULL ) ); } typedef struct _Line { VipsPlotFn plot; void *a; void *b; void *c; } Line; static void draw_line_wrapper( VipsImage *image, int x, int y, void *client ) { Line *line = (Line *) client; line->plot( image, x, y, line->a, line->b, line->c ); } int im_draw_line_user( VipsImage *image, int x1, int y1, int x2, int y2, VipsPlotFn plot, void *a, void *b, void *c ) { Line line; line.plot = plot; line.a = a; line.b = b; line.c = c; vips__draw_line_direct( image, x1, y1, x2, y2, draw_line_wrapper, &line ); return( 0 ); } int im_draw_mask( VipsImage *image, VipsImage *mask, int x, int y, VipsPel *ink ) { /* Direct call, since this has to be very quick. */ return( vips__draw_mask_direct( image, mask, ink, x, y ) ); } int im_draw_image( VipsImage *image, VipsImage *sub, int x, int y ) { return( vips_draw_image( image, sub, x, y, NULL ) ); } int im_draw_rect( IMAGE *image, int left, int top, int width, int height, int fill, VipsPel *ink ) { double *vec; int n; if( !(vec = vips__ink_to_vector( "im_draw_rect", image, ink, &n )) ) return( -1 ); return( vips_draw_rect( image, vec, n, left, top, width, height, "fill", fill, NULL ) ); } int im_draw_point( VipsImage *image, int x, int y, VipsPel *ink ) { double *vec; int n; if( !(vec = vips__ink_to_vector( "im_draw_rect", image, ink, &n )) ) return( -1 ); return( vips_draw_point( image, vec, n, x, y, NULL ) ); } int im_draw_smudge( VipsImage *im, int left, int top, int width, int height ) { return( vips_draw_smudge( im, left, top, width, height, NULL ) ); } int im_read_point( VipsImage *image, int x, int y, VipsPel *ink ) { double *vector; int n; VipsPel *pixel_vector; if( vips_getpoint( image, &vector, &n, x, y, NULL ) ) return( -1 ); if( !(pixel_vector = vips__vector_to_ink( "im_read_point", image, vector, NULL, n )) ) { g_free( vector ); return( -1 ); } memcpy( ink, pixel_vector, VIPS_IMAGE_SIZEOF_PEL( image ) ); g_free( vector ); return( 0 ); } int im_draw_flood( IMAGE *image, int x, int y, VipsPel *ink, Rect *dout ) { double *vec; int n; int left; int top; int width; int height; if( !(vec = vips__ink_to_vector( "im_draw_flood", image, ink, &n )) ) return( -1 ); if( vips_draw_flood( image, vec, n, x, y, "left", &left, "top", &top, "width", &width, "height", &height, NULL ) ) return( -1 ); if( dout ) { dout->left = left; dout->top = top; dout->width = width; dout->height = height; } return( 0 ); } int im_draw_flood_blob( IMAGE *image, int x, int y, VipsPel *ink, Rect *dout ) { double *vec; int n; int left; int top; int width; int height; if( !(vec = vips__ink_to_vector( "im_draw_flood", image, ink, &n )) ) return( -1 ); if( vips_draw_flood( image, vec, n, x, y, "equal", TRUE, "left", &left, "top", &top, "width", &width, "height", &height, NULL ) ) return( -1 ); if( dout ) { dout->left = left; dout->top = top; dout->width = width; dout->height = height; } return( 0 ); } int im_draw_flood_other( IMAGE *image, IMAGE *test, int x, int y, int serial, Rect *dout ) { int left; int top; int width; int height; if( vips_draw_flood1( image, serial, x, y, "test", test, "equal", TRUE, "left", &left, "top", &top, "width", &width, "height", &height, NULL ) ) return( -1 ); if( dout ) { dout->left = left; dout->top = top; dout->width = width; dout->height = height; } return( 0 ); } int im_lineset( IMAGE *in, IMAGE *out, IMAGE *mask, IMAGE *ink, int n, int *x1v, int *y1v, int *x2v, int *y2v ) { Rect mask_rect; int i; if( mask->Bands != 1 || mask->BandFmt != IM_BANDFMT_UCHAR || mask->Coding != IM_CODING_NONE ) { im_error( "im_lineset", "%s", _( "mask image not 1 band 8 bit uncoded" ) ); return( -1 ); } if( ink->Bands != in->Bands || ink->BandFmt != in->BandFmt || ink->Coding != in->Coding ) { im_error( "im_lineset", "%s", _( "ink image does not match in image" ) ); return( -1 ); } if( ink->Xsize != 1 || ink->Ysize != 1 ) { im_error( "im_lineset", "%s", _( "ink image not 1x1 pixels" ) ); return( -1 ); } /* Copy the image then fastline to it ... this will render to a "t" * usually. */ if( vips_image_write( in, out ) ) return( -1 ); mask_rect.left = mask->Xsize / 2; mask_rect.top = mask->Ysize / 2; mask_rect.width = mask->Xsize; mask_rect.height = mask->Ysize; if( im_incheck( ink ) || im_incheck( mask ) ) return( -1 ); for( i = 0; i < n; i++ ) { if( im_fastlineuser( out, x1v[i], y1v[i], x2v[i], y2v[i], (VipsPlotFn) im_plotmask, ink->data, mask->data, &mask_rect ) ) return( -1 ); } return( 0 ); } int im_match_linear_search( IMAGE *ref, IMAGE *sec, IMAGE *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize ) { VipsImage *x; if( vips_match( ref, sec, &x, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "search", TRUE, "hwindow", hwindowsize, "harea", hsearchsize, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_match_linear( IMAGE *ref, IMAGE *sec, IMAGE *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2 ) { VipsImage *x; if( vips_match( ref, sec, &x, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_global_balance( IMAGE *in, IMAGE *out, double gamma ) { VipsImage *x; if( vips_globalbalance( in, &x, "gamma", gamma, "int_output", TRUE, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_global_balancef( IMAGE *in, IMAGE *out, double gamma ) { VipsImage *x; if( vips_globalbalance( in, &x, "gamma", gamma, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_remosaic( IMAGE *in, IMAGE *out, const char *old_str, const char *new_str ) { VipsImage *x; if( vips_remosaic( in, &x, old_str, new_str, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_lrmosaic1( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize, int balancetype, int mwidth ) { VipsImage *x; if( vips_mosaic1( ref, sec, &x, VIPS_DIRECTION_HORIZONTAL, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "search", TRUE, "bandno", bandno, "hwindow", hwindowsize, "harea", hsearchsize, "mblend", mwidth, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_tbmosaic1( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize, int balancetype, int mwidth ) { VipsImage *x; if( vips_mosaic1( ref, sec, &x, VIPS_DIRECTION_VERTICAL, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "search", TRUE, "bandno", bandno, "hwindow", hwindowsize, "harea", hsearchsize, "mblend", mwidth, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_lrmerge1( IMAGE *ref, IMAGE *sec, IMAGE *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) { VipsImage *x; if( vips_mosaic1( ref, sec, &x, VIPS_DIRECTION_HORIZONTAL, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "mblend", mwidth, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } int im_tbmerge1( IMAGE *ref, IMAGE *sec, IMAGE *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) { VipsImage *x; if( vips_mosaic1( ref, sec, &x, VIPS_DIRECTION_VERTICAL, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, "mblend", mwidth, NULL ) ) return( -1 ); if( vips_image_write( x, out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /* The common part of most binary conversion * operators. We: * * - check in and out * - cast in1 and in2 up to a common format * - equalise bands * - make an input array * - return the matched images in vec[0] and vec[1] * * A left-over, remove soon. */ IMAGE ** im__insert_base( const char *domain, IMAGE *in1, IMAGE *in2, IMAGE *out ) { IMAGE *t[4]; IMAGE **vec; if( im_piocheck( in1, out ) || im_pincheck( in2 ) || im_check_bands_1orn( domain, in1, in2 ) || im_check_coding_known( domain, in1 ) || im_check_coding_same( domain, in1, in2 ) ) return( NULL ); /* Cast our input images up to a common format and bands. */ if( im_open_local_array( out, t, 4, domain, "p" ) || im__formatalike( in1, in2, t[0], t[1] ) || im__bandalike( domain, t[0], t[1], t[2], t[3] ) || !(vec = im_allocate_input_array( out, t[2], t[3], NULL )) ) return( NULL ); /* Generate the output. */ if( im_cp_descv( out, vec[0], vec[1], NULL ) || im_demand_hint_array( out, IM_SMALLTILE, vec ) ) return( NULL ); return( vec ); } /** * im_insertset: * @main: big image * @sub: small image * @out: output image * @n: number of positions * @x: left positions of @sub * @y: top positions of @sub * * Insert @sub repeatedly into @main at the positions listed in the arrays @x, * @y of length @n. @out is the same * size as @main. @sub is clipped against the edges of @main. * * This operation is fast for large @n, but will use a memory buffer the size * of @out. It's useful for things like making scatter plots. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: im_insert(), im_lrjoin(). * * Returns: 0 on success, -1 on error */ int im_insertset( IMAGE *main, IMAGE *sub, IMAGE *out, int n, int *x, int *y ) { IMAGE **vec; IMAGE *t; int i; if( !(vec = im__insert_base( "im_insert", main, sub, out )) ) return( -1 ); /* Copy to a memory image, zap that, then copy to out. */ if( !(t = im_open_local( out, "im_insertset", "t" )) || im_copy( vec[0], t ) ) return( -1 ); for( i = 0; i < n; i++ ) if( im_insertplace( t, vec[1], x[i], y[i] ) ) return( -1 ); if( im_copy( t, out ) ) return( -1 ); return( 0 ); } /* We had this entry point in earlier libvipses, hilariously. */ int vips__init( const char *argv0 ) { return( vips_init( argv0 ) ); } int im_greyc_mask( IMAGE *in, IMAGE *out, IMAGE *mask, int iterations, float amplitude, float sharpness, float anisotropy, float alpha, float sigma, float dl, float da, float gauss_prec, int interpolation, int fast_approx ) { vips_error( "im_greyc_mask", "This function is no longer in the core library" ); return( -1 ); } int vips_check_imask( const char *domain, INTMASK *mask ) { if( !mask || mask->xsize > 1000 || mask->ysize > 1000 || mask->xsize <= 0 || mask->ysize <= 0 || mask->scale == 0 || !mask->coeff ) { vips_error( domain, "%s", _( "nonsense mask parameters" ) ); return( -1 ); } return( 0 ); } int vips_check_dmask( const char *domain, DOUBLEMASK *mask ) { if( !mask || mask->xsize > 1000 || mask->ysize > 1000 || mask->xsize <= 0 || mask->ysize <= 0 || mask->scale == 0 || !mask->coeff ) { vips_error( domain, "%s", _( "nonsense mask parameters" ) ); return( -1 ); } return( 0 ); } int vips_check_dmask_1d( const char *domain, DOUBLEMASK *mask ) { if( vips_check_dmask( domain, mask ) ) return( -1 ); if( mask->xsize != 1 && mask->ysize != 1 ) { vips_error( domain, "%s", _( "mask must be 1D" ) ); return( -1 ); } return( 0 ); } GOptionGroup * vips_get_option_group( void ) { static GOptionGroup *option_group = NULL; if( !option_group ) { option_group = g_option_group_new( "vips", _( "VIPS Options" ), _( "Show VIPS options" ), NULL, NULL ); vips_add_option_entries( option_group ); } return( option_group ); } vips-8.2.2/libvips/deprecated/raw.c0000664000175000017500000000277412530402247014145 00000000000000/* Read raw image. Just a wrapper over im_binfile(). * * 15/12/11 * - just a compat stub now */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include int im_raw2vips( const char *filename, IMAGE *out, int width, int height, int bpp, int offset ) { VipsImage *t; if( vips_rawload( filename, &t, width, height, bpp, "offset", offset, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_vips2raw( IMAGE *in, int fd ) { return( vips_rawsave_fd( in, fd, NULL ) ); } vips-8.2.2/libvips/deprecated/package.c0000664000175000017500000006152612530402247014747 00000000000000/* VIPS package handling. * * J. Cupitt, 8/4/93. * * 18/2/04 JC * - now uses g_module_*() instead of dlopen() * 9/8/04 * - uses glib dir scanning stuff instead of dirent.h * 20/5/08 * - note_dependencies() does IMAGEVEC as well as IMAGE * 5/8/08 * - silent success in loading plugins if the dir isn't there */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_SYS_PARAM_H #include #endif /*HAVE_SYS_PARAM_H*/ #include #include #include #include #include #include /* Standard VIPS packages. */ extern im_package im__arithmetic; extern im_package im__cimg; extern im_package im__colour; extern im_package im__conversion; extern im_package im__convolution; extern im_package im__deprecated; extern im_package im__format; extern im_package im__freq_filt; extern im_package im__histograms_lut; extern im_package im__inplace; extern im_package im__mask; extern im_package im__morphology; extern im_package im__mosaicing; extern im_package im__other; extern im_package im__resample; extern im_package im__video; /* im_guess_prefix() args. */ static im_arg_desc guess_prefix_args[] = { IM_INPUT_STRING( "argv0" ), IM_INPUT_STRING( "env_name" ), IM_OUTPUT_STRING( "PREFIX" ) }; /* Call im_guess_prefix() via arg vector. */ static int guess_prefix_vec( im_object *argv ) { const char *prefix = vips_guess_prefix( argv[0], argv[1] ); if( !prefix ) { argv[2] = NULL; return( -1 ); } argv[2] = im_strdup( NULL, prefix ); return( 0 ); } /* Description of im_guess_prefix. */ static im_function guess_prefix_desc = { "im_guess_prefix", /* Name */ "guess install area", /* Description */ 0, /* Flags */ guess_prefix_vec, /* Dispatch function */ VIPS_NUMBER( guess_prefix_args ), /* Size of arg list */ guess_prefix_args /* Arg list */ }; /* im_guess_libdir() args. */ static im_arg_desc guess_libdir_args[] = { IM_INPUT_STRING( "argv0" ), IM_INPUT_STRING( "env_name" ), IM_OUTPUT_STRING( "LIBDIR" ) }; /* Call im_guess_libdir() via arg vector. */ static int guess_libdir_vec( im_object *argv ) { const char *libdir = vips_guess_libdir( argv[0], argv[1] ); if( !libdir ) { argv[2] = NULL; return( -1 ); } argv[2] = im_strdup( NULL, libdir ); return( 0 ); } /* Description of im_guess_libdir. */ static im_function guess_libdir_desc = { "im_guess_libdir", /* Name */ "guess library area", /* Description */ 0, /* Flags */ guess_libdir_vec, /* Dispatch function */ VIPS_NUMBER( guess_libdir_args ),/* Size of arg list */ guess_libdir_args /* Arg list */ }; /* im_header_int() args. */ static im_arg_desc header_int_args[] = { IM_INPUT_STRING( "field" ), IM_INPUT_IMAGE( "image" ), IM_OUTPUT_INT( "value" ) }; /* Call im_header_int() via arg vector. */ static int header_int_vec( im_object *argv ) { return( im_header_int( (IMAGE *) argv[1], (const char *) argv[0], (int *) argv[2] ) ); } /* Description of im_header_int(). */ static im_function header_int_desc = { "im_header_int", /* Name */ "extract int fields from header", /* Description */ 0, /* Flags */ header_int_vec, /* Dispatch function */ VIPS_NUMBER( header_int_args ), /* Size of arg list */ header_int_args /* Arg list */ }; /* im_header_get_typeof() args. */ static im_arg_desc header_get_typeof_args[] = { IM_INPUT_STRING( "field" ), IM_INPUT_IMAGE( "image" ), IM_OUTPUT_INT( "gtype" ) }; /* Call im_header_get_typeof() via arg vector. */ static int header_get_typeof_vec( im_object *argv ) { int *out = (int *) argv[2]; *out = im_header_get_typeof( (IMAGE *) argv[1], (const char *) argv[0] ); return( 0 ); } /* Description of im_header_get_typeof(). */ static im_function header_get_typeof_desc = { "im_header_get_typeof", /* Name */ "return field type", /* Description */ 0, /* Flags */ header_get_typeof_vec, /* Dispatch function */ VIPS_NUMBER( header_get_typeof_args ),/* Size of arg list */ header_get_typeof_args /* Arg list */ }; /* im_header_double() args. */ static im_arg_desc header_double_args[] = { IM_INPUT_STRING( "field" ), IM_INPUT_IMAGE( "image" ), IM_OUTPUT_DOUBLE( "value" ) }; /* Call im_header_double() via arg vector. */ static int header_double_vec( im_object *argv ) { return( im_header_double( (IMAGE *) argv[1], (const char *) argv[0], (double *) argv[2] ) ); } /* Description of im_header_double(). */ static im_function header_double_desc = { "im_header_double", /* Name */ "extract double fields from header", /* Description */ 0, /* Flags */ header_double_vec, /* Dispatch function */ VIPS_NUMBER( header_double_args ), /* Size of arg list */ header_double_args /* Arg list */ }; /* im_header_string() args. */ static im_arg_desc header_string_args[] = { IM_INPUT_STRING( "field" ), IM_INPUT_IMAGE( "image" ), IM_OUTPUT_STRING( "value" ) }; /* Call im_header_string() via arg vector. */ static int header_string_vec( im_object *argv ) { char **out = (char **) &argv[2]; /* Actually, we call im_header_as_string(), so we can do any field and * not just the string-valued ones. */ if( im_header_as_string( (IMAGE *) argv[1], (const char *) argv[0], out ) ) return( -1 ); return( 0 ); } /* Description of im_header_string(). */ static im_function header_string_desc = { "im_header_string", /* Name */ "extract fields from headers as strings", /* Description */ 0, /* Flags */ header_string_vec, /* Dispatch function */ VIPS_NUMBER( header_string_args ),/* Size of arg list */ header_string_args /* Arg list */ }; /* im_history_get() args. */ static im_arg_desc history_get_args[] = { IM_INPUT_IMAGE( "image" ), IM_OUTPUT_STRING( "history" ) }; /* Call im_history_get() via arg vector. */ static int history_get_vec( im_object *argv ) { char **out = (char **) &argv[1]; const char *str; if( !(str = im_history_get( (IMAGE *) argv[0] )) || !(*out = im_strdup( NULL, str )) ) return( -1 ); return( 0 ); } /* Description of im_history_get(). */ static im_function history_get_desc = { "im_history_get", /* Name */ "return the image history as a string", /* Description */ 0, /* Flags */ history_get_vec, /* Dispatch function */ VIPS_NUMBER( history_get_args ),/* Size of arg list */ history_get_args /* Arg list */ }; /* im_getext() args. */ static im_arg_desc getext_args[] = { IM_INPUT_IMAGE( "image" ), IM_OUTPUT_STRING( "history" ) }; /* Call im_getext() via arg vector. */ static int getext_vec( im_object *argv ) { void **out = (void **) &argv[1]; int size; /* void/char confusion is fine. */ if( !(*out = im__read_extension_block( (IMAGE *) argv[0], &size )) ) return( -1 ); return( 0 ); } /* Description of im_getext(). */ static im_function getext_desc = { "im_getext", /* Name */ "return the image metadata XML as a string", /* Description */ 0, /* Flags */ getext_vec, /* Dispatch function */ VIPS_NUMBER( getext_args ), /* Size of arg list */ getext_args /* Arg list */ }; /* im_printdesc() args. */ static im_arg_desc printdesc_args[] = { IM_INPUT_IMAGE( "image" ), }; /* Call im_printdesc() via arg vector. */ static int printdesc_vec( im_object *argv ) { vips_object_print_dump( VIPS_OBJECT( argv[0] ) ); return( 0 ); } /* Description of im_printdesc(). */ static im_function printdesc_desc = { "im_printdesc", /* Name */ "print an image header to stdout", /* Description */ 0, /* Flags */ printdesc_vec, /* Dispatch function */ VIPS_NUMBER( printdesc_args ), /* Size of arg list */ printdesc_args /* Arg list */ }; /* im_version_string() args. */ static im_arg_desc version_string_args[] = { IM_OUTPUT_STRING( "version" ) }; /* Call im_version_string() via arg vector. */ static int version_string_vec( im_object *argv ) { if( !(argv[0] = im_strdup( NULL, vips_version_string() )) ) return( -1 ); return( 0 ); } /* Description of im_version_string. */ static im_function version_string_desc = { "im_version_string", /* Name */ "VIPS version string", /* Description */ 0, /* Flags */ version_string_vec, /* Dispatch function */ VIPS_NUMBER( version_string_args ),/* Size of arg list */ version_string_args /* Arg list */ }; /* im_version() args. */ static im_arg_desc version_args[] = { IM_INPUT_INT( "flag" ), IM_OUTPUT_INT( "version" ) }; /* Call im_version() via arg vector. */ static int version_vec( im_object *argv ) { int flag = *((int *) argv[0]); int *out = ((int *) argv[1]); int version = vips_version( flag ); if( version < 0 ) return( -1 ); *out = version; return( 0 ); } /* Description of im_version. */ static im_function version_desc = { "im_version", /* Name */ "VIPS version number", /* Description */ 0, /* Flags */ version_vec, /* Dispatch function */ VIPS_NUMBER( version_args ), /* Size of arg list */ version_args /* Arg list */ }; /* im_concurrency_get() args. */ static im_arg_desc concurrency_get_args[] = { IM_OUTPUT_INT( "concurrency" ) }; /* Call im_concurrency_get() via arg vector. */ static int concurrency_get_vec( im_object *argv ) { int *out = ((int *) argv[0]); *out = vips_concurrency_get(); return( 0 ); } /* Description of im_concurrency_get. */ static im_function concurrency_get_desc = { "im_concurrency_get", /* Name */ "get concurrency level", /* Description */ 0, /* Flags */ concurrency_get_vec, /* Dispatch function */ VIPS_NUMBER( concurrency_get_args ), /* Size of arg list */ concurrency_get_args /* Arg list */ }; /* im_cache() args. */ static im_arg_desc cache_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "tile_width" ), IM_INPUT_INT( "tile_height" ), IM_INPUT_INT( "max_tiles" ) }; /* Call im_cache() via arg vector. */ static int cache_vec( im_object *argv ) { int tile_width = *((int *) argv[2]); int tile_height = *((int *) argv[3]); int max_tiles = *((int *) argv[4]); return( im_cache( argv[0], argv[1], tile_width, tile_height, max_tiles ) ); } /* Description of im_cache. */ static im_function cache_desc = { "im_cache", /* Name */ "cache results of an operation",/* Description */ 0, /* Flags */ cache_vec, /* Dispatch function */ VIPS_NUMBER( cache_args ), /* Size of arg list */ cache_args /* Arg list */ }; static int tile_cache_random_vec( im_object *argv ) { int tile_width = *((int *) argv[2]); int tile_height = *((int *) argv[3]); int max_tiles = *((int *) argv[4]); return( im_tile_cache_random( argv[0], argv[1], tile_width, tile_height, max_tiles ) ); } /* Description of im_cache. */ static im_function tile_cache_random_desc = { "im_tile_cache_random", /* Name */ "cache results of an operation",/* Description */ 0, /* Flags */ tile_cache_random_vec, /* Dispatch function */ VIPS_NUMBER( cache_args ), /* Size of arg list */ cache_args /* Arg list */ }; /* im_binfile() args. */ static im_arg_desc binfile_args[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "bands" ), IM_INPUT_INT( "offset" ) }; /* Call im_binfile() via arg vector. */ static int binfile_vec( im_object *argv ) { int width = *((int *) argv[2]); int height = *((int *) argv[3]); int bands = *((int *) argv[4]); int offset = *((int *) argv[5]); VipsImage *im; if( !(im = vips_image_new_from_file_raw( argv[0], width, height, bands, offset )) ) return( -1 ); vips_object_local( argv[1], im ); if( im_copy( im, argv[1] ) ) return( -1 ); return( 0 ); } /* Description of im_binfile. */ static im_function binfile_desc = { "im_binfile", /* Name */ "open a headerless binary file",/* Description */ 0, /* Flags */ binfile_vec, /* Dispatch function */ VIPS_NUMBER( binfile_args ), /* Size of arg list */ binfile_args /* Arg list */ }; /* Package up iofuncs functions. */ static im_function *iofuncs_list[] = { &binfile_desc, &cache_desc, &tile_cache_random_desc, &concurrency_get_desc, &getext_desc, &guess_prefix_desc, &guess_libdir_desc, &header_get_typeof_desc, &header_int_desc, &header_double_desc, &header_string_desc, &history_get_desc, &printdesc_desc, &version_desc, &version_string_desc }; /* Package of io functions. */ static im_package im__iofuncs = { "iofuncs", VIPS_NUMBER( iofuncs_list ), iofuncs_list }; /* List of built-in VIPS packages. */ static im_package *built_in[] = { &im__arithmetic, &im__cimg, &im__colour, &im__conversion, &im__convolution, &im__deprecated, &im__format, &im__freq_filt, &im__histograms_lut, &im__inplace, &im__iofuncs, &im__mask, &im__morphology, &im__mosaicing, &im__other, &im__resample, &im__video }; /* How we represent a loaded plugin. */ typedef struct _Plugin { GModule *module; /* As loaded by g_module_open() */ char *name; /* Name we loaded */ im_package *pack; /* Package table */ } Plugin; /* List of loaded plugins. */ static GSList *plugin_list = NULL; /* Free a plugin. */ static int plugin_free( Plugin *plug ) { char *name = plug->name ? plug->name : ""; if( plug->module ) { if( !g_module_close( plug->module ) ) { vips_error( "plugin", _( "unable to close plugin \"%s\"" ), name ); vips_error( "plugin", "%s", g_module_error() ); return( -1 ); } plug->module = NULL; } VIPS_FREE( plug->name ); plug->pack = NULL; g_free( plug ); plugin_list = g_slist_remove( plugin_list, plug ); return( 0 ); } /* Load a plugin. */ im_package * im_load_plugin( const char *name ) { Plugin *plug; #ifdef DEBUG printf( "im_load_plugin: \"%s\"\n", name ); #endif /*DEBUG*/ if( !g_module_supported() ) { vips_error( "plugin", "%s", _( "plugins not supported on this platform" ) ); return( NULL ); } /* Build a new plugin. */ plug = VIPS_NEW( NULL, Plugin ); plug->module = NULL; plug->name = g_strdup( name ); plug->pack = NULL; plugin_list = g_slist_prepend( plugin_list, plug ); /* Open library. */ if( !(plug->module = g_module_open( name, 0 )) ) { vips_error( "plugin", _( "unable to open plugin \"%s\"" ), name ); vips_error( "plugin", "%s", g_module_error() ); plugin_free( plug ); return( NULL ); } /* Find package. */ /* Bizarre double-cast stops a bogus gcc 4.1 compiler warning. */ if( !g_module_symbol( plug->module, "package_table", (gpointer *) ((void *) &plug->pack) ) ) { vips_error( "plugin", _( "unable to find symbol \"package_table\" " "in plugin \"%s\"" ), name ); vips_error( "plugin", "%s", g_module_error() ); plugin_free( plug ); return( NULL ); } /* Sanity check. */ if( !plug->pack->name || plug->pack->nfuncs < 0 || plug->pack->nfuncs > 10000 ) { vips_error( "plugin", _( "corrupted package table in plugin \"%s\"" ), name ); plugin_free( plug ); return( NULL ); } #ifdef DEBUG printf( "added package \"%s\"\n", plug->pack->name ); #endif /*DEBUG*/ return( plug->pack ); } /* Load all plugins in a directory ... look for '.plg' suffix. Error if we had * any probs. */ int im_load_plugins( const char *fmt, ... ) { va_list ap; char dir_name[VIPS_PATH_MAX]; GDir *dir; const char *name; int result; /* Silently succeed if we can't do modules. */ if( !g_module_supported() ) return( 0 ); va_start( ap, fmt ); (void) im_vsnprintf( dir_name, VIPS_PATH_MAX - 1, fmt, ap ); va_end( ap ); #ifdef DEBUG printf( "im_load_plugins: searching \"%s\"\n", dir_name ); #endif /*DEBUG*/ if( !(dir = g_dir_open( dir_name, 0, NULL )) ) /* Silent success for dir not there. */ return( 0 ); result = 0; while( (name = g_dir_read_name( dir )) ) if( im_ispostfix( name, ".plg" ) ) { char path[VIPS_PATH_MAX]; im_snprintf( path, VIPS_PATH_MAX - 1, "%s" G_DIR_SEPARATOR_S "%s", dir_name, name ); if( !im_load_plugin( path ) ) result = -1; } g_dir_close( dir ); return( result ); } /* Close all loaded plugins. */ int im_close_plugins( void ) { while( plugin_list ) if( plugin_free( (Plugin *) plugin_list->data ) ) return( -1 ); return( 0 ); } /* Apply a user-function to a plugin package. */ static void * apply_plugin( Plugin *plug, VSListMap2Fn fn, void *a ) { if( !plug->pack ) return( NULL ); else return( fn( plug->pack, a, NULL ) ); } /* Map a function over all packages. Map over plugins first, to allow * overriding of VIPS functions. */ void * im_map_packages( VSListMap2Fn fn, void *a ) { void *r = im_slist_map2( plugin_list, (VSListMap2Fn) apply_plugin, (void *) fn, a ); /* If not there, try main VIPS package list. */ if( !r ) { int i; for( i = 0; i < VIPS_NUMBER( built_in ); i++ ) if( (r = fn( built_in[i], a, NULL )) ) return( r ); } return( r ); } /* Search a package for a function. */ static im_function * search_package( im_package *pack, const char *name ) { int i; for( i = 0; i < pack->nfuncs; i++ ) if( strcmp( pack->table[i]->name, name ) == 0 ) return( pack->table[i] ); return( NULL ); } /* Search all packages for a function. */ im_function * im_find_function( const char *name ) { im_function *fn = im_map_packages( (VSListMap2Fn) search_package, (void *) name ); if( !fn ) { vips_error( "im_find_function", _( "\"%s\" not found" ), name ); return( NULL ); } return( fn ); } /* Test for package is of name. */ static im_package * package_name( im_package *pack, const char *name ) { if( strcmp( pack->name, name ) == 0 ) return( pack ); return( NULL ); } /* Find a package. */ im_package * im_find_package( const char *name ) { im_package *pack = im_map_packages( (VSListMap2Fn) package_name, (void *) name ); if( !pack ) { vips_error( "im_find_package", _( "\"%s\" not found" ), name ); return( NULL ); } return( pack ); } /* Test for package contains a function. */ static im_package * package_function( im_package *pack, const char *name ) { if( search_package( pack, name ) ) return( pack ); else return( NULL ); } /* Find a function's package by name. */ im_package * im_package_of_function( const char *name ) { im_package *pack = im_map_packages( (VSListMap2Fn) package_function, (void *) name ); if( !pack ) { vips_error( "im_package_of_function", _( "\"%s\" not found" ), name ); return( NULL ); } return( pack ); } /* Free any store we allocated for the argument list. */ int im_free_vargv( im_function *fn, im_object *vargv ) { int i; int vargc = fn->argc; /* Free all elements. */ for( i = 0; i < vargc; i++ ) if( vargv[i] ) { /* If there is local storage, free it. */ if( fn->argv[i].desc->size != 0 ) vips_free( vargv[i] ); /* NULL out pointer. */ vargv[i] = NULL; } return( 0 ); } /* Allocate any local store the args will need; NULL out all others. */ int im_allocate_vargv( im_function *fn, im_object *vargv ) { int i; int vargc = fn->argc; /* NULL out all pointers. */ for( i = 0; i < vargc; i++ ) vargv[i] = NULL; /* Allocate any space we will need. */ for( i = 0; i < vargc; i++ ) { int sz = fn->argv[i].desc->size; if( sz != 0 ) if( !(vargv[i] = vips_malloc( NULL, sz )) ) { /* Free anything we did allocate. */ (void) im_free_vargv( fn, vargv ); return( -1 ); } /* Zero memory. */ memset( vargv[i], 0, sz ); } return( 0 ); } /* Destroy the objects in the arg list. */ static int destroy_args( im_function *fn, im_object *vargv ) { int i; int vargc = fn->argc; /* Destroy all elements with destroy functions. */ for( i = 0; i < vargc; i++ ) if( vargv[i] ) /* If there's a destroy function for this type, * trigger it. */ if( fn->argv[i].desc->dest && fn->argv[i].desc->dest( vargv[i] ) ) return( -1 ); return( 0 ); } /* Init an im_object array from a set of command-line arguments. */ static int build_args( im_function *fn, im_object *vargv, int argc, char **argv ) { im_arg_desc *arg = fn->argv; int vargc = fn->argc; char *str; int i, j; /* Loop, constructing each im_arg. */ for( i = 0, j = 0; i < vargc; i++ ) { /* Find type for this arg. */ im_type_desc *type = arg[i].desc; /* Do we need to use up a command line argument? */ if( type->flags & IM_TYPE_ARG ) { if( !argv[j] ) { vips_error( "im_run_command", "%s", _( "too few arguments" ) ); return( -1 ); } str = argv[j++]; /* Init object. */ if( type->init && type->init( &vargv[i], str ) ) return( -1 ); } else { /* Init object with no arg. */ if( type->init && type->init( &vargv[i], "no arg" ) ) return( -1 ); } } /* Have we used up all the command-line args? */ if( argv[j] ) { vips_error( "im_run_command", "%s", _( "too many arguments" ) ); return( -1 ); } return( 0 ); } /* Make a region on sub, closed by callback on main. */ static int region_local_image( IMAGE *main, IMAGE *sub ) { VipsRegion *reg; if( !(reg = vips_region_new( sub )) ) return( -1 ); vips_object_local( main, reg ); return( 0 ); } /* vargv[i] is an output image on a PIO function ... make all input images * depend on it. */ static int note_dependencies( im_function *fn, im_object *vargv, int i ) { int j; for( j = 0; j < fn->argc; j++ ) { im_type_desc *type = fn->argv[j].desc; if( !(type->flags & IM_TYPE_OUTPUT) ) { if( strcmp( type->type, IM_TYPE_IMAGE ) == 0 ) { if( region_local_image( vargv[i], vargv[j] ) ) return( -1 ); } else if( strcmp( type->type, IM_TYPE_IMAGEVEC ) == 0 ) { im_imagevec_object *iv = vargv[j]; int k; for( k = 0; k < iv->n; k++ ) if( region_local_image( vargv[i], iv->vec[k] ) ) return( -1 ); } } } return( 0 ); } /* Call all defined print functions. */ static int print_args( im_function *fn, im_object *vargv ) { int i; int vargc = fn->argc; /* Print all elements. */ for( i = 0; i < vargc; i++ ) if( fn->argv[i].print && vargv[i] ) if( fn->argv[i].print( vargv[i] ) ) return( -1 ); return( 0 ); } /* Add to the hist of all output images. */ static int add_hist( im_function *fn, im_object *vargv, int argc, char **argv ) { int i; int vargc = fn->argc; /* Search for output images. */ for( i = 0; i < vargc; i++ ) if( strcmp( fn->argv[i].desc->type, IM_TYPE_IMAGE ) == 0 && (fn->argv[i].desc->flags & IM_TYPE_OUTPUT) ) if( im_updatehist( vargv[i], fn->name, argc, argv ) ) return( -1 ); return( 0 ); } /* Call a VIPS function. */ static int dispatch_function( im_function *fn, im_object *vargv, int argc, char **argv ) { /* Init memory from command line arguments. */ if( build_args( fn, vargv, argc, argv ) ) return( -1 ); /* If this is a PIO function, we need to make sure that we close * the input images after the output images, since the output image * may include delayed image conversion filters which will not run * until the output is closed. * * Do this by: * - for each output image * - for each input image * - create a region on the input, closed by a * close callback on the output image */ if( fn->flags & IM_FN_PIO ) { int i; for( i = 0; i < fn->argc; i++ ) { im_type_desc *type = fn->argv[i].desc; if( type->flags & IM_TYPE_OUTPUT && strcmp( type->type, IM_TYPE_IMAGE ) == 0 ) if( note_dependencies( fn, vargv, i ) ) return( -1 ); } } /* Call function. */ if( fn->disp( vargv ) ) return( -1 ); /* Print output. */ if( print_args( fn, vargv ) ) return( -1 ); /* Add to history of all output images. */ if( add_hist( fn, vargv, argc, argv ) ) return( -1 ); /* All ok! */ return( 0 ); } /* Run a command. */ int im_run_command( char *name, int argc, char **argv ) { static im_object object_array[IM_MAX_ARGS]; im_object *vargv = object_array; im_function *fn; /* Search packages for a matching function. */ if( !(fn = im_find_function( name )) ) return( -1 ); /* Allocate space for arguments. */ if( im_allocate_vargv( fn, vargv ) ) return( -1 ); /* Call it. */ if( dispatch_function( fn, vargv, argc, argv ) ) { destroy_args( fn, vargv ); im_free_vargv( fn, vargv ); return( -1 ); } /* Clean up and exit. */ if( destroy_args( fn, vargv ) ) return( -1 ); im_free_vargv( fn, vargv ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_mattrn.c0000664000175000017500000000347112530402247015341 00000000000000/* matrix transpose * * Copyright: 1990, K. Martinez and J. Cupitt * */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** * im_mattrn: * @in: input matrix * @filename: name for output matrix * * Transposes the input matrix. * Pass the filename to set for the output. * * See also: im_matmul(), im_matinv(). * * Returns: the result matrix on success, or %NULL on error. */ DOUBLEMASK * im_mattrn( DOUBLEMASK *in, const char *name ) { int xc, yc; DOUBLEMASK *mat; double *out, *a, *b; /* Allocate output matrix. */ if( !(mat = im_create_dmask( name, in->ysize, in->xsize )) ) return( NULL ); mat->scale = in->scale; mat->offset = in->offset; /* Transpose. */ out = mat->coeff; a = in->coeff; for( yc = 0; yc < mat->ysize; yc++ ) { b = a; for( xc = 0; xc < mat->xsize; xc++ ) { *out++ = *b; b += in->xsize; } a++; } return( mat ); } vips-8.2.2/libvips/deprecated/arith_dispatch.c0000664000175000017500000006713612530402247016345 00000000000000/* Function dispatch tables for arithmetic. * * J. Cupitt, 8/4/93. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Image in, number out. */ static im_arg_desc image_in_num_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DOUBLE( "value" ) }; /* Args for im_recomb. */ static im_arg_desc recomb_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ) }; /* Call im_recomb via arg vector. */ static int recomb_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_recomb( argv[0], argv[1], mo->mask ) ); } /* Description of im_recomb. */ static im_function recomb_desc = { "im_recomb", /* Name */ "linear recombination with mask", IM_FN_PIO, /* Flags */ recomb_vec, /* Dispatch function */ IM_NUMBER( recomb_args ), /* Size of arg list */ recomb_args /* Arg list */ }; /* Call im_abs via arg vector. */ static int abs_vec( im_object *argv ) { return( im_abs( argv[0], argv[1] ) ); } /* Description of im_abs. */ static im_function abs_desc = { "im_abs", /* Name */ N_( "absolute value" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ abs_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_add via arg vector. */ static int add_vec( im_object *argv ) { return( im_add( argv[0], argv[1], argv[2] ) ); } /* Description of im_add. */ static im_function add_desc = { "im_add", /* Name */ N_( "add two images" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ add_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_avg via arg vector. */ static int avg_vec( im_object *argv ) { double f; if( im_avg( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_avg. */ static im_function avg_desc = { "im_avg", /* Name */ N_( "average value of image" ), /* Description */ IM_FN_PIO, /* Flags */ avg_vec, /* Dispatch function */ IM_NUMBER( image_in_num_out ), /* Size of arg list */ image_in_num_out /* Arg list */ }; /* Args to im_point. */ static im_arg_desc point_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_INTERPOLATE( "interpolate" ), IM_INPUT_DOUBLE( "x" ), IM_INPUT_DOUBLE( "y" ), IM_INPUT_INT( "band" ), IM_OUTPUT_DOUBLE( "out" ) }; /* Call im_point via arg vector. */ static int point_vec( im_object *argv ) { VipsInterpolate *interpolate = VIPS_INTERPOLATE( argv[1] ); double x = *((double *) argv[2]); double y = *((double *) argv[3]); int band = *((int *) argv[4]); return( im_point( argv[0], interpolate, x, y, band, argv[5] ) ); } /* Description of im_point. */ static im_function point_desc = { "im_point", "interpolate value at single point", IM_FN_PIO, point_vec, IM_NUMBER( point_args ), point_args }; /* Args to im_point_bilinear. */ static im_arg_desc point_bilinear_args[] = { IM_INPUT_IMAGE ("in"), IM_INPUT_DOUBLE("x"), IM_INPUT_DOUBLE("y"), IM_INPUT_INT("band"), IM_OUTPUT_DOUBLE("val") }; /* Call im_point_bilinear via arg vector. */ static int point_bilinear_vec( im_object *argv ) { return im_point_bilinear( argv[0], *(double*)argv[1], *(double*)argv[2], *(int*)argv[3], argv[4] ); } /* Description of im_point_bilinear. */ static im_function point_bilinear_desc = { "im_point_bilinear", "interpolate value at single point, linearly", IM_FN_PIO, point_bilinear_vec, IM_NUMBER( point_bilinear_args ), point_bilinear_args }; /* Call im_deviate via arg vector. */ static int deviate_vec( im_object *argv ) { double f; if( im_deviate( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_deviate. */ static im_function deviate_desc = { "im_deviate", /* Name */ N_( "standard deviation of image" ), /* Description */ IM_FN_PIO, /* Flags */ deviate_vec, /* Dispatch function */ IM_NUMBER( image_in_num_out ), /* Size of arg list */ image_in_num_out /* Arg list */ }; /* Call im_exp10tra via arg vector. */ static int exp10tra_vec( im_object *argv ) { return( im_exp10tra( argv[0], argv[1] ) ); } /* Description of im_exp10tra. */ static im_function exp10tra_desc = { "im_exp10tra", /* Name */ N_( "10^pel of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ exp10tra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_exptra via arg vector. */ static int exptra_vec( im_object *argv ) { return( im_exptra( argv[0], argv[1] ) ); } /* Description of im_exptra. */ static im_function exptra_desc = { "im_exptra", /* Name */ N_( "e^pel of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ exptra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_powtra(). */ static im_arg_desc powtra_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "x" ) }; /* Call im_expntra via arg vector. */ static int expntra_vec( im_object *argv ) { double a = *((double *) argv[2]); return( im_expntra( argv[0], argv[1], a ) ); } /* Description of im_expntra. */ static im_function expntra_desc = { "im_expntra", /* Name */ N_( "x^pel of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ expntra_vec, /* Dispatch function */ IM_NUMBER( powtra_args ), /* Size of arg list */ powtra_args /* Arg list */ }; /* Args for im_expntra_vec(). */ static im_arg_desc expntra_vec_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "v" ) }; /* Call im_expntra_vec() via arg vector. */ static int expntra_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_expntra_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_expntra_vec. */ static im_function expntra_vec_desc = { "im_expntra_vec", /* Name */ N_( "[x,y,z]^pel of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ expntra_vec_vec, /* Dispatch function */ IM_NUMBER( expntra_vec_args ), /* Size of arg list */ expntra_vec_args /* Arg list */ }; /* Call im_divide via arg vector. */ static int divide_vec( im_object *argv ) { return( im_divide( argv[0], argv[1], argv[2] ) ); } /* Description of im_divide. */ static im_function divide_desc = { "im_divide", /* Name */ N_( "divide two images" ), IM_FN_PIO, /* Flags */ divide_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_invert via arg vector. */ static int invert_vec( im_object *argv ) { return( im_invert( argv[0], argv[1] ) ); } /* Description of im_invert. */ static im_function invert_desc = { "im_invert", /* Name */ N_( "photographic negative" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ invert_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_lintra(). */ static im_arg_desc lintra_args[] = { IM_INPUT_DOUBLE( "a" ), IM_INPUT_IMAGE( "in" ), IM_INPUT_DOUBLE( "b" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_lintra() via arg vector. */ static int lintra_vec( im_object *argv ) { double a = *((double *) argv[0]); double b = *((double *) argv[2]); return( im_lintra( a, argv[1], b, argv[3] ) ); } /* Description of im_lintra(). */ static im_function lintra_desc = { "im_lintra", /* Name */ N_( "calculate a*in + b = outfile" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ lintra_vec, /* Dispatch function */ IM_NUMBER( lintra_args ), /* Size of arg list */ lintra_args /* Arg list */ }; /* Args for im_lintra_vec(). */ static im_arg_desc lintra_vec_args[] = { IM_INPUT_DOUBLEVEC( "a" ), IM_INPUT_IMAGE( "in" ), IM_INPUT_DOUBLEVEC( "b" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_lintra_vec() via arg vector. */ static int lintra_vec_vec( im_object *argv ) { im_doublevec_object *dva = (im_doublevec_object *) argv[0]; im_doublevec_object *dvb = (im_doublevec_object *) argv[2]; if( dva->n != dvb->n ) { im_error( "im_lintra_vec", "%s", _( "vectors not equal length" ) ); return( -1 ); } return( im_lintra_vec( dva->n, dva->vec, argv[1], dvb->vec, argv[3] ) ); } /* Description of im_lintra_vec(). */ static im_function lintra_vec_desc = { "im_lintra_vec", /* Name */ N_( "calculate a*in + b -> out, a and b vectors" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ lintra_vec_vec, /* Dispatch function */ IM_NUMBER( lintra_vec_args ), /* Size of arg list */ lintra_vec_args /* Arg list */ }; /* Call im_log10tra via arg vector. */ static int log10tra_vec( im_object *argv ) { return( im_log10tra( argv[0], argv[1] ) ); } /* Description of im_log10tra. */ static im_function log10tra_desc = { "im_log10tra", /* Name */ N_( "log10 of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ log10tra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_logtra via arg vector. */ static int logtra_vec( im_object *argv ) { return( im_logtra( argv[0], argv[1] ) ); } /* Description of im_logtra. */ static im_function logtra_desc = { "im_logtra", /* Name */ N_( "ln of image" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ logtra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_tantra via arg vector. */ static int tantra_vec( im_object *argv ) { return( im_tantra( argv[0], argv[1] ) ); } /* Description of im_tantra. */ static im_function tantra_desc = { "im_tantra", /* Name */ N_( "tan of image (angles in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ tantra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_atantra via arg vector. */ static int atantra_vec( im_object *argv ) { return( im_atantra( argv[0], argv[1] ) ); } /* Description of im_atantra. */ static im_function atantra_desc = { "im_atantra", /* Name */ N_( "atan of image (result in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ atantra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_costra via arg vector. */ static int costra_vec( im_object *argv ) { return( im_costra( argv[0], argv[1] ) ); } /* Description of im_costra. */ static im_function costra_desc = { "im_costra", /* Name */ N_( "cos of image (angles in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ costra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_acostra via arg vector. */ static int acostra_vec( im_object *argv ) { return( im_acostra( argv[0], argv[1] ) ); } /* Description of im_acostra. */ static im_function acostra_desc = { "im_acostra", /* Name */ N_( "acos of image (result in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ acostra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_ceil via arg vector. */ static int ceil_vec( im_object *argv ) { return( im_ceil( argv[0], argv[1] ) ); } /* Description of im_ceil. */ static im_function ceil_desc = { "im_ceil", /* Name */ N_( "round to smallest integer value not less than" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ ceil_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_floor via arg vector. */ static int floor_vec( im_object *argv ) { return( im_floor( argv[0], argv[1] ) ); } /* Description of im_floor. */ static im_function floor_desc = { "im_floor", /* Name */ N_( "round to largest integer value not greater than" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ floor_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rint via arg vector. */ static int rint_vec( im_object *argv ) { return( im_rint( argv[0], argv[1] ) ); } /* Description of im_rint. */ static im_function rint_desc = { "im_rint", /* Name */ N_( "round to nearest integer value" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ rint_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_sintra via arg vector. */ static int sintra_vec( im_object *argv ) { return( im_sintra( argv[0], argv[1] ) ); } /* Description of im_sintra. */ static im_function sintra_desc = { "im_sintra", /* Name */ N_( "sin of image (angles in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ sintra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_bandmean via arg vector. */ static int bandmean_vec( im_object *argv ) { return( im_bandmean( argv[0], argv[1] ) ); } /* Description of im_bandmean. */ static im_function bandmean_desc = { "im_bandmean", /* Name */ N_( "average image bands" ), IM_FN_PIO, /* Flags */ bandmean_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_sign via arg vector. */ static int sign_vec( im_object *argv ) { return( im_sign( argv[0], argv[1] ) ); } /* Description of im_sign. */ static im_function sign_desc = { "im_sign", /* Name */ N_( "unit vector in direction of value" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ sign_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_asintra via arg vector. */ static int asintra_vec( im_object *argv ) { return( im_asintra( argv[0], argv[1] ) ); } /* Description of im_asintra. */ static im_function asintra_desc = { "im_asintra", /* Name */ N_( "asin of image (result in degrees)" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ asintra_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_max via arg vector. */ static int max_vec( im_object *argv ) { double f; if( im_max( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_max. */ static im_function max_desc = { "im_max", /* Name */ N_( "maximum value of image" ), /* Description */ IM_FN_PIO, /* Flags */ max_vec, /* Dispatch function */ IM_NUMBER( image_in_num_out ), /* Size of arg list */ image_in_num_out /* Arg list */ }; /* Args for maxpos (and minpos). */ static im_arg_desc maxpos_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_COMPLEX( "position" ) }; /* Call im_maxpos via arg vector. */ static int maxpos_vec( im_object *argv ) { double f; int x, y; if( im_maxpos( argv[0], &x, &y, &f ) ) return( -1 ); ((double *) argv[1])[0] = x; ((double *) argv[1])[1] = y; return( 0 ); } /* Description of im_maxpos. */ static im_function maxpos_desc = { "im_maxpos", /* Name */ N_( "position of maximum value of image" ), 0, /* Flags */ maxpos_vec, /* Dispatch function */ IM_NUMBER( maxpos_args ), /* Size of arg list */ maxpos_args /* Arg list */ }; /* Args to im_maxpos_avg. */ static im_arg_desc maxpos_avg_args[] = { IM_INPUT_IMAGE ("in"), IM_OUTPUT_DOUBLE("x"), IM_OUTPUT_DOUBLE("y"), IM_OUTPUT_DOUBLE("out") }; /* Call im_maxpos_avg via arg vector. */ static int maxpos_avg_vec( im_object *argv ) { return im_maxpos_avg( argv[0], argv[1], argv[2], argv[3] ); } /* Description of im_maxpos_avg. */ static im_function maxpos_avg_desc = { "im_maxpos_avg", N_( "position of maximum value of image, averaging in case of draw" ), IM_FN_PIO, maxpos_avg_vec, IM_NUMBER( maxpos_avg_args ), maxpos_avg_args }; /* Args to im_min/maxpos_vec. */ static im_arg_desc maxpos_vec_args[] = { IM_INPUT_IMAGE ("in"), IM_INPUT_INT ("n"), IM_OUTPUT_INTVEC("xes"), IM_OUTPUT_INTVEC("yes"), IM_OUTPUT_DOUBLEVEC("maxima") }; /* Call im_maxpos_vec via arg vector. */ static int maxpos_vec_vec( im_object *argv ) { int n = *((int *) argv[1]); im_intvec_object *xes = argv[2]; im_intvec_object *yes = argv[3]; im_doublevec_object *maxima = argv[4]; xes->vec = IM_ARRAY( NULL, n, int ); xes->n = n; yes->vec = IM_ARRAY( NULL, n, int ); yes->n = n; maxima->vec = IM_ARRAY( NULL, n, double ); maxima->n = n; if( !xes->vec || !yes->vec || !maxima->vec || im_maxpos_vec( argv[0], xes->vec, yes->vec, maxima->vec, n ) ) return -1; return 0; } /* Description of im_maxpos_vec. */ static im_function maxpos_vec_desc = { "im_maxpos_vec", N_( "position and value of n maxima of image" ), IM_FN_PIO, maxpos_vec_vec, IM_NUMBER( maxpos_vec_args ), maxpos_vec_args }; /* Call im_minpos_vec via arg vector. */ static int minpos_vec_vec( im_object *argv ) { int n = *((int *) argv[1]); im_intvec_object *xes = argv[2]; im_intvec_object *yes = argv[3]; im_doublevec_object *minima = argv[4]; xes->vec = IM_ARRAY( NULL, n, int ); xes->n = n; yes->vec = IM_ARRAY( NULL, n, int ); yes->n = n; minima->vec = IM_ARRAY( NULL, n, double ); minima->n = n; if( !xes->vec || !yes->vec || !minima->vec || im_minpos_vec( argv[0], xes->vec, yes->vec, minima->vec, n ) ) return -1; return 0; } /* Description of im_minpos_vec. */ static im_function minpos_vec_desc = { "im_minpos_vec", N_( "position and value of n minima of image" ), IM_FN_PIO, minpos_vec_vec, IM_NUMBER( maxpos_vec_args ), maxpos_vec_args }; /* Args for measure. */ static im_arg_desc measure_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DMASK( "mask" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "w" ), IM_INPUT_INT( "h" ), IM_INPUT_INT( "h_patches" ), IM_INPUT_INT( "v_patches" ) }; /* Call im_measure via arg vector. */ static int measure_vec( im_object *argv ) { im_mask_object *mo = argv[1]; int x = *((int *) argv[2]); int y = *((int *) argv[3]); int w = *((int *) argv[4]); int h = *((int *) argv[5]); int u = *((int *) argv[6]); int v = *((int *) argv[7]); if( !(mo->mask = im_measure_area( argv[0], x, y, w, h, u, v, NULL, 0, mo->name )) ) { return( -1 ); } return( 0 ); } /* Description of im_measure. */ static im_function measure_desc = { "im_measure", /* Name */ N_( "measure averages of a grid of patches" ), IM_FN_PIO, /* Flags */ measure_vec, /* Dispatch function */ IM_NUMBER( measure_args ), /* Size of arg list */ measure_args /* Arg list */ }; /* Call im_min via arg vector. */ static int min_vec( im_object *argv ) { double f; if( im_min( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_min. */ static im_function min_desc = { "im_min", /* Name */ N_( "minimum value of image" ), /* Description */ IM_FN_PIO, /* Flags */ min_vec, /* Dispatch function */ IM_NUMBER( image_in_num_out ), /* Size of arg list */ image_in_num_out /* Arg list */ }; /* Call im_minpos via arg vector. */ static int minpos_vec( im_object *argv ) { double f; int x, y; if( im_minpos( argv[0], &x, &y, &f ) ) return( -1 ); ((double *) argv[1])[0] = x; ((double *) argv[1])[1] = y; return( 0 ); } /* Description of im_minpos. */ static im_function minpos_desc = { "im_minpos", /* Name */ N_( "position of minimum value of image" ), 0, /* Flags */ minpos_vec, /* Dispatch function */ IM_NUMBER( maxpos_args ), /* Size of arg list */ maxpos_args /* Arg list */ }; /* Call im_remainder via arg vector. */ static int remainder_vec( im_object *argv ) { return( im_remainder( argv[0], argv[1], argv[2] ) ); } /* Description of im_remainder. */ static im_function remainder_desc = { "im_remainder", /* Name */ N_( "remainder after integer division" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ remainder_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_remainderconst via arg vector. */ static int remainderconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_remainderconst( argv[0], argv[1], c ) ); } /* Args for im_remainderconst(). */ static im_arg_desc remainderconst_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "x" ) }; /* Description of im_remainderconst. */ static im_function remainderconst_desc = { "im_remainderconst", /* Name */ N_( "remainder after integer division by a constant" ),/* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ remainderconst_vec, /* Dispatch function */ IM_NUMBER( remainderconst_args ),/* Size of arg list */ remainderconst_args /* Arg list */ }; /* Call im_remainder_vec via arg vector. */ static int remainder_vec_vec( im_object *argv ) { im_doublevec_object *dv = (im_doublevec_object *) argv[2]; return( im_remainder_vec( argv[0], argv[1], dv->n, dv->vec ) ); } /* Args for im_remainder_vec(). */ static im_arg_desc remainder_vec_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "x" ) }; /* Description of im_remainder_vec. */ static im_function remainder_vec_desc = { "im_remainder_vec", /* Name */ N_( "remainder after integer division by a vector of constants" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ remainder_vec_vec, /* Dispatch function */ IM_NUMBER( remainder_vec_args ),/* Size of arg list */ remainder_vec_args /* Arg list */ }; /* Call im_multiply via arg vector. */ static int multiply_vec( im_object *argv ) { return( im_multiply( argv[0], argv[1], argv[2] ) ); } /* Description of im_multiply. */ static im_function multiply_desc = { "im_multiply", /* Name */ N_( "multiply two images" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ multiply_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_powtra() via arg vector. */ static int powtra_vec( im_object *argv ) { double a = *((double *) argv[2]); return( im_powtra( argv[0], argv[1], a ) ); } /* Description of im_powtra(). */ static im_function powtra_desc = { "im_powtra", /* Name */ N_( "pel^x of image" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ powtra_vec, /* Dispatch function */ IM_NUMBER( powtra_args ), /* Size of arg list */ powtra_args /* Arg list */ }; /* Call im_powtra_vec() via arg vector. */ static int powtra_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_powtra_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_powtra_vec(). */ static im_function powtra_vec_desc = { "im_powtra_vec", /* Name */ N_( "pel^[x,y,z] of image" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ powtra_vec_vec, /* Dispatch function */ IM_NUMBER( expntra_vec_args ), /* Size of arg list */ expntra_vec_args /* Arg list */ }; /* Args for im_stats. */ static im_arg_desc stats_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DMASK_STATS( "statistics" ) }; /* Call im_stats() via arg vector. */ static int stats_vec( im_object *argv ) { im_mask_object *mo = argv[1]; if( !(mo->mask = im_stats( argv[0] )) ) return( -1 ); return( 0 ); } /* Description of im_stats(). */ static im_function stats_desc = { "im_stats", /* Name */ N_( "many image statistics in one pass" ), IM_FN_PIO, /* Flags */ stats_vec, /* Dispatch function */ IM_NUMBER( stats_args ), /* Size of arg list */ stats_args /* Arg list */ }; /* Call im_subtract via arg vector. */ static int subtract_vec( im_object *argv ) { return( im_subtract( argv[0], argv[1], argv[2] ) ); } /* Description of im_subtract. */ static im_function subtract_desc = { "im_subtract", /* Name */ N_( "subtract two images" ), /* Description */ IM_FN_PIO, /* Flags */ subtract_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Args for im_linreg. */ static im_arg_desc linreg_args[] = { IM_INPUT_IMAGEVEC( "ins" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "xs" ) }; /* Call im_linreg() via arg vector. */ static int linreg_vec( im_object *argv ) { #define FUNCTION_NAME "im_linreg_vec" im_imagevec_object *ins_vec= (im_imagevec_object*) argv[0]; im_doublevec_object *xs_vec= (im_doublevec_object*) argv[2]; IMAGE *out= (IMAGE*) argv[1]; IMAGE **ins= IM_ARRAY( out, ins_vec-> n + 1, IMAGE* ); int i; if( ! ins ) return -1; for( i= 0; i < ins_vec-> n; ++i ) ins[ i ]= ins_vec-> vec[ i ]; ins[ ins_vec-> n ]= NULL; if( xs_vec-> n != ins_vec-> n ){ im_error( FUNCTION_NAME, "image vector and x vector differ in length" ); return -1; } return im_linreg( ins, out, xs_vec-> vec ); #undef FUNCTION_NAME } /* Description of im_linreg(). */ static im_function linreg_desc = { "im_linreg", /* Name */ N_( "pixelwise linear regression" ), IM_FN_PIO | IM_FN_PTOP, /* Flags */ linreg_vec, /* Dispatch function */ IM_NUMBER( linreg_args ), /* Size of arg list */ linreg_args /* Arg list */ }; /* Call im_cross_phase via arg vector. */ static int cross_phase_vec( im_object *argv ) { return( im_cross_phase( argv[0], argv[1], argv[2] ) ); } /* Description of im_cross_phase. */ static im_function cross_phase_desc = { "im_cross_phase", /* Name */ N_( "phase of cross power spectrum of two complex images" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ cross_phase_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Package up all these functions. */ static im_function *arith_list[] = { &abs_desc, &acostra_desc, &add_desc, &asintra_desc, &atantra_desc, &avg_desc, &point_desc, &point_bilinear_desc, &bandmean_desc, &ceil_desc, &costra_desc, &cross_phase_desc, &deviate_desc, ÷_desc, &exp10tra_desc, &expntra_desc, &expntra_vec_desc, &exptra_desc, &floor_desc, &invert_desc, &lintra_desc, &linreg_desc, &lintra_vec_desc, &log10tra_desc, &logtra_desc, &max_desc, &maxpos_desc, &maxpos_avg_desc, &maxpos_vec_desc, &measure_desc, &min_desc, &minpos_desc, &minpos_vec_desc, &multiply_desc, &powtra_desc, &powtra_vec_desc, &recomb_desc, &remainder_desc, &remainderconst_desc, &remainder_vec_desc, &rint_desc, &sign_desc, &sintra_desc, &stats_desc, &subtract_desc, &tantra_desc }; /* Package of functions. */ im_package im__arithmetic = { "arithmetic", IM_NUMBER( arith_list ), arith_list }; vips-8.2.2/libvips/deprecated/im_zerox.c0000664000175000017500000001052012530402247015174 00000000000000/* detect zero-crossings * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 12/02/1990 * Modified on : * 1/2/95 JC * - rewritten for PIO * - some bugs removed * 11/5/06 * - small clean ups * 11/11/10 * - small cleanups * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #define LOOP( TYPE ) { \ for( i = 0; i < ne; i++ ) { \ TYPE p1 = ((TYPE *)p)[i]; \ TYPE p2 = ((TYPE *)p)[i + ba]; \ \ if( flag == 1 && p1 > 0 && p2 <= 0 ) \ q[i] = 255; \ else if( flag == -1 && p1 < 0 && p2 >= 0 ) \ q[i] = 255; \ else \ q[i] = 0; \ } \ } /* Zerox generate function. */ static int zerox_gen( REGION *or, void *seq, void *a, void *b ) { REGION *ir = (REGION *) seq; IMAGE *in = (IMAGE *) a; int flag = GPOINTER_TO_INT( b ); Rect irect; Rect *r = &or->valid; /* Range of pixels we loop over. */ int le = r->left; int to = r->top; int bo = IM_RECT_BOTTOM( r ); int ba = in->Bands; int ne = ba * r->width; int i, y; /* We need to be able to see one pixel to the right. */ irect.top = r->top; irect.left = r->left; irect.width = r->width + 1; irect.height = r->height; if( im_prepare( ir, &irect ) ) return( -1 ); for( y = to; y < bo; y++ ) { VipsPel *p = IM_REGION_ADDR( ir, le, y ); VipsPel *q = IM_REGION_ADDR( or, le, y ); switch( in->BandFmt ) { case IM_BANDFMT_CHAR: LOOP( signed char ); break; case IM_BANDFMT_SHORT: LOOP( signed short ); break; case IM_BANDFMT_INT: LOOP( signed int ); break; case IM_BANDFMT_FLOAT: LOOP( float ); break; case IM_BANDFMT_DOUBLE: LOOP( double ); break; default: g_assert( 0 ); } } return( 0 ); } /** * im_zerox: * @in: input image * @out: output image * @sign: detect positive or negative zero crossings * * im_zerox() detects the positive or negative zero crossings @in, * depending on @sign. If @sign is -1, negative zero crossings are returned, * if @sign is 1, positive zero crossings are returned. * * The output image is byte with zero crossing set to 255 and all other values * set to zero. Input can have any number of channels, and be any non-complex * type. * * See also: im_conv(), im_rot90. * * Returns: 0 on success, -1 on error */ int im_zerox( IMAGE *in, IMAGE *out, int sign ) { IMAGE *t1; if( sign != -1 && sign != 1 ) { im_error( "im_zerox", "%s", _( "flag not -1 or 1" ) ); return( -1 ); } if( in->Xsize < 2 ) { im_error( "im_zerox", "%s", _( "image too narrow" ) ); return( -1 ); } if( !(t1 = im_open_local( out, "im_zerox" , "p" )) || im_piocheck( in, t1 ) || im_check_uncoded( "im_zerox", in ) || im_check_noncomplex( "im_zerox", in ) ) return( -1 ); if( vips_bandfmt_isuint( in->BandFmt ) ) /* Unsigned type, therefore there will be no zero-crossings. */ return( im_black( out, in->Xsize, in->Ysize, in->Bands ) ); /* Force output to be BYTE. Output is narrower than input by 1 pixel. */ if( im_cp_desc( t1, in ) ) return( -1 ); t1->BandFmt = IM_BANDFMT_UCHAR; t1->Xsize -= 1; /* Set hints - THINSTRIP is ok with us. */ if( im_demand_hint( t1, IM_THINSTRIP, NULL ) ) return( -1 ); /* Generate image. */ if( im_generate( t1, im_start_one, zerox_gen, im_stop_one, in, GINT_TO_POINTER( sign ) ) ) return( -1 ); /* Now embed it in a larger image. */ if( im_embed( t1, out, 0, 0, 0, in->Xsize, in->Ysize ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_matcat.c0000664000175000017500000000430212530402247015277 00000000000000/* matrix catenate * * 1994, K. Martinez * * 22/10/10 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /** * im_matcat: * @top: input matrix * @bottom: input matrix * @filename: filename for output * * Matrix catenations. Returns a new matrix which is the two source matrices * joined together top-bottom. They must be the same width. * * See also: im_mattrn(), im_matmul(), im_matinv(). * * Returns: the joined mask on success, or NULL on error. */ DOUBLEMASK * im_matcat( DOUBLEMASK *top, DOUBLEMASK *bottom, const char *filename ) { int newxsize, newysize; DOUBLEMASK *mat; double *out; /* matrices must be same width */ if( top->xsize != bottom->xsize ) { im_error( "im_matcat", "%s", _( "matrices must be same width" ) ); return( NULL ); } newxsize = top->xsize; newysize = top->ysize + bottom->ysize; /* Allocate output matrix. */ if( !(mat = im_create_dmask( filename, newxsize, newysize )) ) return( NULL ); /* copy first matrix then add second on the end */ memcpy( mat->coeff, top->coeff, top->xsize * top->ysize * sizeof( double ) ); out = mat->coeff + top->xsize * top->ysize; memcpy( out, bottom->coeff, bottom->xsize * bottom->ysize * sizeof( double ) ); return( mat ); } vips-8.2.2/libvips/deprecated/im_gaddim.c0000664000175000017500000001607012530402247015260 00000000000000/* @(#) Generalised addition of two vasari images. * @(#)Inputs, outputs are neither float nor double * @(#) Result at each point is a*in1 + b*in2 + c * @(#) Result depends on inputs, rounding is carried out; * @(#) Function im_gaddim() assumes that the both input files * @(#) are either memory mapped or in a buffer. * @(#) Images must have the same no of bands and must not be complex * @(#) No check for overflow is done; * @(#) * @(#) int im_gaddim(a, in1, b, in2, c, out) * @(#) double a, b, c; * @(#) IMAGE *in1, *in2, *out; * @(#) * @(#) Returns 0 on success and -1 on error * @(#) * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* This function works on either mmaped files or on images in buffer */ /* uchar char ushort short uint int */ static int array[6][6] = { /* uchar */ { 2, 3, 2, 3, 4, 5 }, /* char */ { 3, 3, 3, 3, 5, 5 }, /* ushort */ { 2, 3, 2, 3, 4, 5 }, /* short */ { 3, 3, 3, 3, 5, 5 }, /* uint */ { 4, 5, 4, 5, 4, 5 }, /* int */ { 5, 5, 5, 5, 5, 5 } }; #define select_tmp2_for_out_int(OUT) \ case IM_BANDFMT_UCHAR: select_tmp1_for_out_int(unsigned char, OUT); break; \ case IM_BANDFMT_CHAR: select_tmp1_for_out_int(signed char, OUT); break; \ case IM_BANDFMT_USHORT: select_tmp1_for_out_int(unsigned short, OUT); break; \ case IM_BANDFMT_SHORT: select_tmp1_for_out_int(signed short, OUT); break; \ case IM_BANDFMT_UINT: select_tmp1_for_out_int(unsigned int, OUT); break; \ case IM_BANDFMT_INT: select_tmp1_for_out_int(signed int, OUT); break; \ \ default: \ im_error("im_gaddim","Wrong tmp2 format(1)"); \ free( line); \ return(-1); #define select_tmp1_for_out_int(IN2, OUT) \ switch(tmp1->BandFmt) { \ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break; \ case IM_BANDFMT_INT: loop(int, IN2, OUT); break; \ default: im_error("im_gaddim","Wrong tmp2 format(2)");\ free( line);\ return(-1); \ } #define select_tmp2_for_out_short(OUT) \ case IM_BANDFMT_UCHAR: select_tmp1_for_out_short(unsigned char, OUT); break; \ case IM_BANDFMT_CHAR: select_tmp1_for_out_short(signed char, OUT); break; \ case IM_BANDFMT_USHORT: select_tmp1_for_out_short(unsigned short, OUT); break; \ case IM_BANDFMT_SHORT: select_tmp1_for_out_short(signed short, OUT); break; \ default: g_assert( 0 ); #define select_tmp1_for_out_short(IN2, OUT) \ switch(tmp1->BandFmt) { \ case IM_BANDFMT_UCHAR: loop(unsigned char, IN2, OUT); break; \ case IM_BANDFMT_CHAR: loop(signed char, IN2, OUT); break; \ case IM_BANDFMT_USHORT: loop(unsigned short, IN2, OUT); break; \ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break; \ default: im_error("im_gaddim","Wrong image1 format(4)");\ free( line);\ return(-1); \ } /** * im_gaddim: * * Deprecated. */ int im_gaddim(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out) { static int fmt[] = { IM_BANDFMT_UCHAR, IM_BANDFMT_CHAR, IM_BANDFMT_USHORT, IM_BANDFMT_SHORT, IM_BANDFMT_UINT, IM_BANDFMT_INT }; int y, x; int first, second, result; IMAGE *tmp1, *tmp2; PEL *line; int os; /* size of a line of output image */ /* fd, data filename must have been set before the function is called * Check whether they are set properly */ if ((im_iocheck(in1, out) == -1) || (im_iocheck(in2, out) == -1)) { return(-1); } /* Checks the arguments entered in in and prepares out */ if ( (in1->Xsize != in2->Xsize) || (in1->Ysize != in2->Ysize) || (in1->Bands != in2->Bands) || (in1->Coding != in2->Coding) ) { im_error("im_gaddim"," Input images differ"); return(-1); } if (in1->Coding != IM_CODING_NONE) { im_error("im_gaddim"," images must be uncoded"); return(-1);} switch(in1->BandFmt) { case IM_BANDFMT_UCHAR: first = 0; break; case IM_BANDFMT_CHAR: first = 1; break; case IM_BANDFMT_USHORT: first = 2; break; case IM_BANDFMT_SHORT: first = 3; break; case IM_BANDFMT_UINT: first = 4; break; case IM_BANDFMT_INT: first = 5; break; default: im_error("im_gaddim"," Unable to accept image1"); return(-1); } switch(in2->BandFmt) { case IM_BANDFMT_UCHAR: second = 0; break; case IM_BANDFMT_CHAR: second = 1; break; case IM_BANDFMT_USHORT: second = 2; break; case IM_BANDFMT_SHORT: second = 3; break; case IM_BANDFMT_UINT: second = 4; break; case IM_BANDFMT_INT: second = 5; break; default: im_error("im_gaddim"," Unable to accept image2"); return(-1); } /* Define the output */ result = array[first][second]; /* Prepare the output header */ if ( im_cp_desc(out, in1) == -1) { im_error("im_gaddim"," im_cp_desc failed"); return(-1); } out->BandFmt = fmt[result]; if( im_setupout(out) == -1) { im_error("im_gaddim"," im_setupout failed"); return(-1); } /* Order in1 and in2 */ if ( first >= second ) { tmp1 = in1; tmp2 = in2; } else { tmp1 = in2; tmp2 = in1; } /* Define what we do for each band element type. */ #define loop(IN1, IN2, OUT) \ { IN1 *input1 = (IN1 *) tmp1->data; \ IN2 *input2 = (IN2 *) tmp2->data; \ \ for (y=0; y Ysize; y++) {\ OUT *cpline = (OUT*)line; \ for (x=0; xXsize * out->Bands; line = (PEL *) calloc ( (unsigned)os, sizeof(double) ); if (line == NULL) { im_error("im_gaddim"," Unable to calloc"); return(-1); } switch (out->BandFmt) { case IM_BANDFMT_INT: switch (tmp2->BandFmt) { select_tmp2_for_out_int(int); } break; case IM_BANDFMT_UINT: switch (tmp2->BandFmt) { select_tmp2_for_out_int(unsigned int); } break; case IM_BANDFMT_SHORT: switch (tmp2->BandFmt) { select_tmp2_for_out_short(short); } break; case IM_BANDFMT_USHORT: switch (tmp2->BandFmt) { select_tmp2_for_out_short(unsigned short); } break; default: im_error("im_gaddim"," Impossible output state"); free( line); return(-1); } free( line); return(0); } vips-8.2.2/libvips/deprecated/im_gfadd.c0000664000175000017500000002351712530402247015104 00000000000000/* @(#) Generalised addition of two vasari images. Result (double or float) * @(#)depends on inputs * @(#) Function im_gfadd() assumes that the both input files * @(#) are either memory mapped or in a buffer. * @(#) Images must have the same no of bands and can be of any type * @(#) No check for overflow is carried out. If in doubt use im_clip2... * @(#) Result at eachpoint is a*in1 + b*in2 + c * @(#) * @(#) int im_gfadd(a, in1, b, in2, c, out) * @(#) double a, b, c; * @(#) IMAGE *in1, *in2, *out; * @(#) * @(#) Returns 0 on success and -1 on error * @(#) * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 15/6/93 J.Cupitt * - externs removed * - casts added to please ANSI C * - includes rationalised */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* uchar char ushort short uint int float double */ static int array[8][8] = { /* uchar */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* char */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* ushort */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* short */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* uint */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* int */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* float */ { 0, 0, 0, 0, 0, 0, 0, 1 }, /* double */ { 1, 1, 1, 1, 1, 1, 1, 1 } }; #define select_outdouble(IN2, OUT)\ switch(tmp1->BandFmt) {\ case IM_BANDFMT_DOUBLE: loop(double, IN2, OUT); break;\ default: im_error("im_gfadd","Wrong tmp1 format(d)");\ free( line); return( -1 );\ } #define outfloat_2uchar(IN2, OUT)\ case IM_BANDFMT_UCHAR: loop(unsigned char, IN2, OUT); break;\ case IM_BANDFMT_CHAR: loop(signed char, IN2, OUT); break;\ case IM_BANDFMT_USHORT: loop(unsigned short, IN2, OUT); break;\ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break;\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2char(IN2, OUT)\ case IM_BANDFMT_CHAR: loop(signed char, IN2, OUT); break;\ case IM_BANDFMT_USHORT: loop(unsigned short, IN2, OUT); break;\ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break;\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2ushort(IN2, OUT)\ case IM_BANDFMT_USHORT: loop(unsigned short, IN2, OUT); break;\ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break;\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2short(IN2, OUT)\ case IM_BANDFMT_SHORT: loop(signed short, IN2, OUT); break;\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2uint(IN2, OUT)\ case IM_BANDFMT_UINT: loop(unsigned int, IN2, OUT); break;\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2int(IN2, OUT)\ case IM_BANDFMT_INT: loop(signed int, IN2, OUT); break;\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; #define outfloat_2float(IN2, OUT)\ case IM_BANDFMT_FLOAT: loop(float, IN2, OUT); break; /** * im_gfadd: * * Deprecated. */ int im_gfadd(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out) { static int fmt[] = { IM_BANDFMT_FLOAT, IM_BANDFMT_DOUBLE }; int y, x; int first, second, result; IMAGE *tmp1, *tmp2; PEL *line; int os; /* size of a line of output image */ /* fd, data filename must have been set before the function is called * Check whether they are set properly */ if ((im_iocheck(in1, out) == -1) || (im_iocheck(in2, out) == -1)) { im_error("im_gfadd"," im_iocheck failed"); return( -1 ); } /* Checks the arguments entered in in and prepares out */ if ( (in1->Xsize != in2->Xsize) || (in1->Ysize != in2->Ysize) || (in1->Bands != in2->Bands) || (in1->Coding != in2->Coding) ) { im_error("im_gfadd"," Input images differ"); return( -1 );} if (in1->Coding != IM_CODING_NONE) { im_error("im_gfadd"," images are coded"); return( -1 ); } switch(in1->BandFmt) { case IM_BANDFMT_UCHAR: first = 0; break; case IM_BANDFMT_CHAR: first = 1; break; case IM_BANDFMT_USHORT: first = 2; break; case IM_BANDFMT_SHORT: first = 3; break; case IM_BANDFMT_UINT: first = 4; break; case IM_BANDFMT_INT: first = 5; break; case IM_BANDFMT_FLOAT: first = 6; break; case IM_BANDFMT_DOUBLE: first = 7; break; default: im_error("im_gfadd"," unable to accept image1"); return( -1 ); } switch(in2->BandFmt) { case IM_BANDFMT_UCHAR: second = 0; break; case IM_BANDFMT_CHAR: second = 1; break; case IM_BANDFMT_USHORT: second = 2; break; case IM_BANDFMT_SHORT: second = 3; break; case IM_BANDFMT_UINT: second = 4; break; case IM_BANDFMT_INT: second = 5; break; case IM_BANDFMT_FLOAT: second = 6; break; case IM_BANDFMT_DOUBLE: second = 7; break; default: im_error("im_gfadd"," unable to accept image2"); return( -1 ); } /* Define the output */ result = array[first][second]; /* Prepare output */ if ( im_cp_desc(out, in1) == -1) { im_error("im_gfadd"," im_cp_desc failed"); return( -1 ); } out->BandFmt = fmt[result]; if( im_setupout(out) == -1) { im_error("im_gfadd"," im_setupout failed"); return( -1 ); } /* Order in1 and in2 */ if ( first >= second ) { tmp1 = in1; tmp2 = in2; } else { tmp1 = in2; tmp2 = in1; } /* Define what we do for each band element type. */ #define loop(IN1, IN2, OUT)\ { IN1 *input1 = (IN1 *) tmp1->data;\ IN2 *input2 = (IN2 *) tmp2->data;\ \ for (y=0; y Ysize; y++) {\ OUT *cpline = (OUT*)line;\ for (x=0; xXsize * out->Bands; line = (PEL *) calloc ( (unsigned)os, sizeof(double) ); if (line == NULL) { im_error("im_gfadd"," unable to calloc"); return( -1 ); } switch (out->BandFmt) { case IM_BANDFMT_DOUBLE: switch (tmp2->BandFmt) { case IM_BANDFMT_UCHAR: select_outdouble(unsigned char, double); break; case IM_BANDFMT_CHAR: select_outdouble(signed char, double); break; case IM_BANDFMT_USHORT: select_outdouble(unsigned short, double); break; case IM_BANDFMT_SHORT: select_outdouble(signed short, double); break; case IM_BANDFMT_UINT: select_outdouble(unsigned int, double); break; case IM_BANDFMT_INT: select_outdouble(signed int, double); break; case IM_BANDFMT_FLOAT: select_outdouble(float, double); break; case IM_BANDFMT_DOUBLE: select_outdouble(double, double); break; default: im_error("im_gfadd","Wrong tmp2 format(d)"); free( line ); return( -1 ); } break; case IM_BANDFMT_FLOAT : switch (tmp2->BandFmt) { case IM_BANDFMT_UCHAR: switch (tmp1->BandFmt) { outfloat_2uchar(unsigned char, float); default: im_error("im_gfadd"," Error (a)"); free( line ); return( -1 ); } break; case IM_BANDFMT_CHAR: switch (tmp1->BandFmt) { outfloat_2char(signed char, float); default: im_error("im_gfadd"," Error (b)"); free( line); return( -1 ); } break; case IM_BANDFMT_USHORT: switch (tmp1->BandFmt) { outfloat_2ushort(unsigned short, float); default: im_error("im_gfadd"," Error (c)"); free( line); return( -1 ); } break; case IM_BANDFMT_SHORT: switch (tmp1->BandFmt) { outfloat_2short(signed short, float); default: im_error("im_gfadd"," Error (d)"); free( line); return( -1 ); } break; case IM_BANDFMT_UINT: switch (tmp1->BandFmt) { outfloat_2uint(unsigned int, float); default: im_error("im_gfadd"," Error (e)"); free( line); return( -1 ); } break; case IM_BANDFMT_INT: switch (tmp1->BandFmt) { outfloat_2int(signed int, float); default: im_error("im_gfadd"," Error (f)"); free( line ); return( -1 ); } break; case IM_BANDFMT_FLOAT: switch (tmp1->BandFmt) { outfloat_2float(float, float); default: im_error("im_gfadd"," Error (g)"); free( line ); return( -1 ); } break; default: im_error("im_gfadd"," Wrong tmp2 format(f)"); free( line ); return( -1 ); } break; default: im_error("im_gfadd"," Impossible output state"); free( line ); return( -1 ); } free( line ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_printlines.c0000664000175000017500000000733512530402247016226 00000000000000/* @(#) Function which prints in stdout the values of a picture * @(#) * @(#) For debuging only * @(#) is either memory mapped or in a buffer. * @(#) * @(#) void im_printlines( in ) * @(#) IMAGE *in; * @(#) * * Copyright: 1991 N. Dessipris * * Author: N. Dessipris * Written on: 18/03/1991 * Modified on: * 15/4/93 J.Cupitt * - returns int, not void now, so error messages work * - detects im->data invalid. * 23/7/93 JC * - im_incheck() added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* Useful: Call a macro with the name, type pairs for all VIPS functions. */ #define im_for_all_types() \ case IM_BANDFMT_UCHAR: loopuc(unsigned char); break; \ case IM_BANDFMT_CHAR: loop(char); break; \ case IM_BANDFMT_USHORT: loop(unsigned short); break; \ case IM_BANDFMT_SHORT: loop(short); break; \ case IM_BANDFMT_UINT: loop(unsigned int); break; \ case IM_BANDFMT_INT: loop(int); break; \ case IM_BANDFMT_FLOAT: loop(float); break; \ case IM_BANDFMT_DOUBLE: loop(double); break; \ case IM_BANDFMT_COMPLEX: loopcmplx(float); break; \ case IM_BANDFMT_DPCOMPLEX: loopcmplx(double); break; int im_printlines( IMAGE *in ) { if( im_incheck( in ) ) return( -1 ); if( in->Coding != IM_CODING_NONE ) { im_error( "im_printlines", "%s", _( "input must be uncoded" ) ); return( -1 ); } if( !in->data ) { im_error( "im_debugim", "%s", _( "unsuitable image type" ) ); return( -1 ); } /* What type? First define the loop we want to perform for all types. */ #define loopuc(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ fprintf(stderr, "line:%5d\n", y); \ for ( x=0; xXsize; x++ ) {\ fprintf(stderr, "%5d", x); \ for ( z=0; zBands; z++ ) {\ fprintf(stderr, "\t%4d", (TYPE)*p++ );\ } \ fprintf(stderr, "\n"); \ } \ } \ } #define loop(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ fprintf(stderr, "line:%5d\n", y); \ for ( x=0; xXsize; x++ ) {\ fprintf(stderr, "%5d", x); \ for ( z=0; zBands; z++ ) {\ fprintf(stderr, "\t%f", (double)*p++ );\ } \ fprintf(stderr, "\n"); \ } \ } \ } #define loopcmplx(TYPE) \ { TYPE *p = (TYPE *) in->data; \ int x, y, z; \ \ for ( y=0; yYsize; y++ ) {\ fprintf(stderr, "line:%5d\n", y); \ for ( x=0; xXsize; x++ ) {\ fprintf(stderr, "%5d", x); \ for ( z=0; zBands; z++ ) {\ fprintf(stderr,"\t%f",(double)*p++);\ fprintf(stderr,"\t%f",(double)*p++);\ } \ fprintf(stderr, "\n");\ } \ } \ } /* Now generate code for all types. */ switch( in->BandFmt ) { im_for_all_types(); default: { im_error( "im_printlines", "%s", _( "unknown input format" ) ); return( -1 ); } } return( 0 ); } vips-8.2.2/libvips/deprecated/im_vips2webp.c0000664000175000017500000000314612530402247015754 00000000000000/* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include int im_vips2webp( IMAGE *in, const char *filename ) { int compression; int lossless; char *p, *q; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; im_filename_split( filename, name, mode ); strcpy( buf, mode ); p = &buf[0]; compression = 6; lossless = 0; if( (q = im_getnextoption( &p )) ) compression = atoi( q ); if( (q = im_getnextoption( &p )) ) lossless = atoi( q ); return( vips_webpsave( in, name, "Q", compression, "lossless", lossless, NULL ) ); } vips-8.2.2/libvips/deprecated/im_vips2ppm.c0000664000175000017500000000323112530402247015606 00000000000000/* Write a ppm file. * * 20/12/11 * - just a compat stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include int im_vips2ppm( IMAGE *in, const char *filename ) { int ascii; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; /* Default to binary output ... much smaller. */ ascii = 0; /* Extract write mode from filename. */ im_filename_split( filename, name, mode ); if( strcmp( mode, "" ) != 0 ) { if( im_isprefix( "binary", mode ) ) ascii = 0; else if( im_isprefix( "ascii", mode ) ) ascii = 1; else { im_error( "im_vips2ppm", "%s", _( "bad mode string, " "should be \"binary\" or \"ascii\"" ) ); return( -1 ); } } return( vips_ppmsave( in, name, "ascii", ascii, NULL ) ); } vips-8.2.2/libvips/deprecated/im_openslide2vips.c0000664000175000017500000000672112530402247017003 00000000000000/* read with openslide * * 17/12/11 * - just a stub * 11/4/12 * - support :level,associated in filenames * 20/9/12 * - add Leica filename suffix */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include static int im_openslide2vips( const char *name, IMAGE *out ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q; char *associated; int level; char *endptr; VipsImage *t; im_filename_split( name, filename, mode ); level = 0; associated = NULL; p = &mode[0]; if( (q = im_getnextoption( &p )) ) { level = strtoul( q, &endptr, 10 ); if( *endptr ) { vips_error( "openslide2vips", "%s", _( "level must be a number" ) ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) associated = q; if( vips_openslideload( filename, &t, "level", level, "associated", associated, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static const char *openslide_suffs[] = { ".svs", /* Aperio */ ".vms", ".vmu", ".ndpi", /* Hamamatsu */ ".scn", /* Leica */ ".mrxs", /* MIRAX */ ".svslide", /* Sakura */ ".tif", /* Trestle */ ".bif", /* Ventana */ NULL }; static VipsFormatFlags openslide_flags( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( (VipsFormatFlags) vips_foreign_flags( "openslideload", filename ) ); } static int isopenslide( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( vips_foreign_is_a( "openslideload", filename ) ); } /* openslide format adds no new members. */ typedef VipsFormat VipsFormatOpenslide; typedef VipsFormatClass VipsFormatOpenslideClass; static void vips_format_openslide_class_init( VipsFormatOpenslideClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "im_openslide"; object_class->description = _( "Openslide" ); format_class->priority = 100; format_class->is_a = isopenslide; format_class->load = im_openslide2vips; format_class->get_flags = openslide_flags; format_class->suffs = openslide_suffs; } static void vips_format_openslide_init( VipsFormatOpenslide *object ) { } G_DEFINE_TYPE( VipsFormatOpenslide, vips_format_openslide, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/im_gadd.c0000664000175000017500000000607412530402247014735 00000000000000/* @(#) Generalised addition of two vasari images using the routines * @(#) im_gaddim or im_gfadd * @(#) Convention to ease the complilation time. * @(#) Function im_gadd() assumes that the both input files * @(#) are either memory mapped or in a buffer. * @(#) Images must have the same no of bands and must not be complex * @(#) No check for overflow is carried out. * @(#) * @(#) int im_gadd(a, in1, b, in2, c, out) * @(#) IMAGE *in1, *in2, *out; * @(#) double a, b, c; * @(#) * @(#) Returns 0 on success and -1 on error * @(#) * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include int im_gfadd(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out); int im_gaddim(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out); /* This function works on either mmaped files or on images in buffer */ /** * im_gadd: * * Deprecated. */ int im_gadd(double a, IMAGE *in1, double b, IMAGE *in2, double c, IMAGE *out) { int flagint = 0; int flagfloat = 0; int value = 0; switch(in1->BandFmt) { case IM_BANDFMT_UCHAR: case IM_BANDFMT_CHAR: case IM_BANDFMT_USHORT: case IM_BANDFMT_SHORT: case IM_BANDFMT_UINT: case IM_BANDFMT_INT: flagint = 1; break; case IM_BANDFMT_FLOAT: case IM_BANDFMT_DOUBLE: flagfloat = 1; break; default: im_error("im_gadd","%s", _("Unable to accept image1")); return(-1); } switch(in2->BandFmt) { case IM_BANDFMT_UCHAR: case IM_BANDFMT_CHAR: case IM_BANDFMT_USHORT: case IM_BANDFMT_SHORT: case IM_BANDFMT_UINT: case IM_BANDFMT_INT: flagint = 1; break; case IM_BANDFMT_FLOAT: case IM_BANDFMT_DOUBLE: flagfloat = 1; break; default: im_error("im_gadd","%s", _("Unable to accept image1")); return(-1); } /* Select output routines */ if (flagfloat == 1) { value = im_gfadd(a, in1, b, in2, c, out); if (value == -1) return(-1); } else if (flagint == 1) { value = im_gaddim(a, in1, b, in2, c, out); if (value == -1) return(-1); } else assert( 0 ); return(0); } vips-8.2.2/libvips/deprecated/other_dispatch.c0000664000175000017500000001773412530402247016356 00000000000000/* Function dispatch tables for other. * * J. Cupitt, 8/2/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* Args for im_sines. */ static im_arg_desc sines_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_DOUBLE( "horfreq" ), IM_INPUT_DOUBLE( "verfreq" ) }; /* Call im_sines via arg vector. */ static int sines_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); double horfreq = *((double *) argv[3]); double verfreq = *((double *) argv[4]); return( im_sines( argv[0], xsize, ysize, horfreq, verfreq ) ); } /* Description of im_sines. */ static im_function sines_desc = { "im_sines", /* Name */ "generate 2D sine image", 0, /* Flags */ sines_vec, /* Dispatch function */ IM_NUMBER( sines_args ), /* Size of arg list */ sines_args /* Arg list */ }; /* Args for im_eye. */ static im_arg_desc eye_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_DOUBLE( "factor" ) }; /* Call im_eye via arg vector. */ static int eye_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); double factor = *((double *) argv[3]); return( im_eye( argv[0], xsize, ysize, factor ) ); } /* Description of im_eye. */ static im_function eye_desc = { "im_eye", /* Name */ "generate IM_BANDFMT_UCHAR [0,255] frequency/amplitude image", 0, /* Flags */ eye_vec, /* Dispatch function */ IM_NUMBER( eye_args ), /* Size of arg list */ eye_args /* Arg list */ }; /* Call im_feye via arg vector. */ static int feye_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); double factor = *((double *) argv[3]); return( im_feye( argv[0], xsize, ysize, factor ) ); } /* Description of im_feye. */ static im_function feye_desc = { "im_feye", /* Name */ "generate IM_BANDFMT_FLOAT [-1,1] frequency/amplitude image", 0, /* Flags */ feye_vec, /* Dispatch function */ IM_NUMBER( eye_args ), /* Size of arg list */ eye_args /* Arg list */ }; /* Args for im_zone. */ static im_arg_desc zone_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "size" ) }; /* Call im_zone via arg vector. */ static int zone_vec( im_object *argv ) { int size = *((int *) argv[1]); return( im_zone( argv[0], size ) ); } /* Description of im_zone. */ static im_function zone_desc = { "im_zone", /* Name */ "generate IM_BANDFMT_UCHAR [0,255] zone plate image", /* Description */ 0, /* Flags */ zone_vec, /* Dispatch function */ IM_NUMBER( zone_args ), /* Size of arg list */ zone_args /* Arg list */ }; /* Call im_fzone via arg vector. */ static int fzone_vec( im_object *argv ) { int size = *((int *) argv[1]); return( im_fzone( argv[0], size ) ); } /* Description of im_fzone. */ static im_function fzone_desc = { "im_fzone", /* Name */ "generate IM_BANDFMT_FLOAT [-1,1] zone plate image", /* Description */ 0, /* Flags */ fzone_vec, /* Dispatch function */ IM_NUMBER( zone_args ), /* Size of arg list */ zone_args /* Arg list */ }; /* Args for im_benchmark. */ static im_arg_desc benchmark_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_benchmark via arg vector. */ static int benchmark_vec( im_object *argv ) { return( im_benchmarkn( argv[0], argv[1], 1 ) ); } /* Description of im_benchmark. */ static im_function benchmark_desc = { "im_benchmark", /* Name */ "do something complicated for testing", /* Description */ IM_FN_PIO, /* Flags */ benchmark_vec, /* Dispatch function */ IM_NUMBER( benchmark_args ), /* Size of arg list */ benchmark_args /* Arg list */ }; /* Args for im_benchmark2. */ static im_arg_desc benchmark2_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DOUBLE( "value" ) }; /* Call im_benchmark2 via arg vector. */ static int benchmark2_vec( im_object *argv ) { double f; if( im_benchmark2( argv[0], &f ) ) return( -1 ); *((double *) argv[1]) = f; return( 0 ); } /* Description of im_benchmark2. */ static im_function benchmark2_desc = { "im_benchmark2", /* Name */ "do something complicated for testing", /* Description */ IM_FN_PIO, /* Flags */ benchmark2_vec, /* Dispatch function */ IM_NUMBER( benchmark2_args ), /* Size of arg list */ benchmark2_args /* Arg list */ }; /* Args for im_benchmarkn. */ static im_arg_desc benchmarkn_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "n" ) }; /* Call im_benchmarkn via arg vector. */ static int benchmarkn_vec( im_object *argv ) { int n = *((int *) argv[2]); return( im_benchmarkn( argv[0], argv[1], n ) ); } /* Description of im_benchmarkn. */ static im_function benchmarkn_desc = { "im_benchmarkn", /* Name */ "do something complicated for testing", /* Description */ IM_FN_PIO, /* Flags */ benchmarkn_vec, /* Dispatch function */ IM_NUMBER( benchmarkn_args ), /* Size of arg list */ benchmarkn_args /* Arg list */ }; /* Args for im_grey. */ static im_arg_desc grey_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ) }; /* Call im_grey via arg vector. */ static int grey_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); return( im_grey( argv[0], xsize, ysize ) ); } /* Description of im_grey. */ static im_function grey_desc = { "im_grey", /* Name */ "generate IM_BANDFMT_UCHAR [0,255] grey scale image", /* Description */ 0, /* Flags */ grey_vec, /* Dispatch function */ IM_NUMBER( grey_args ), /* Size of arg list */ grey_args /* Arg list */ }; /* Call im_fgrey via arg vector. */ static int fgrey_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); return( im_fgrey( argv[0], xsize, ysize ) ); } /* Description of im_fgrey. */ static im_function fgrey_desc = { "im_fgrey", /* Name */ "generate IM_BANDFMT_FLOAT [0,1] grey scale image", /* Description */ 0, /* Flags */ fgrey_vec, /* Dispatch function */ IM_NUMBER( grey_args ), /* Size of arg list */ grey_args /* Arg list */ }; /* Call im_make_xy via arg vector. */ static int make_xy_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); return( im_make_xy( argv[0], xsize, ysize ) ); } /* Description of im_make_xy. */ static im_function make_xy_desc = { "im_make_xy", /* Name */ "generate image with pixel value equal to coordinate", /* Description */ 0, /* Flags */ make_xy_vec, /* Dispatch function */ IM_NUMBER( grey_args ), /* Size of arg list */ grey_args /* Arg list */ }; /* Package up all these functions. */ static im_function *other_list[] = { &benchmark_desc, &benchmark2_desc, &benchmarkn_desc, &eye_desc, &grey_desc, &feye_desc, &fgrey_desc, &fzone_desc, &make_xy_desc, &sines_desc, &zone_desc }; /* Package of functions. */ im_package im__other = { "other", IM_NUMBER( other_list ), other_list }; vips-8.2.2/libvips/deprecated/im_setbox.c0000664000175000017500000000312612530402247015335 00000000000000/* @(#) Copies the coordinates of a box to an IMAGE_BOX * @(#) * @(#) Right call: * @(#) void im_setbox(pbox, xst, yst, xsiz, ysiz, ch_select) * @(#) IMAGE_BOX *pbox; * @(#) int xst, yst, xsiz, ysiz, ch_select; * @(#) ch_select could be 0, 1, 2 or 3 corresponding to * @(#) a, r , g or b respectively. * @(#) * * Copyright: Nicos Dessipris * Written on: 13/02/1990 * Modified on : 04/04/1990 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include void im_setbox(IMAGE_BOX *pbox, int xst, int yst, int xsiz, int ysiz, int ch_select) { pbox->xstart = xst; pbox->ystart = yst; pbox->xsize = xsiz; pbox->ysize = ysiz; pbox->chsel = ch_select; } vips-8.2.2/libvips/deprecated/im_point_bilinear.c0000664000175000017500000000551112530402247017027 00000000000000/* im_point_bilinear.c * * Copyright: 2006, The Nottingham Trent University * * Author: Tom Vajzovic * * Written on: 2006-09-26 * * 9/9/09 * - rewrite in terms of im_affinei() and im_avg() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /* HAVE_CONFIG_H */ #include #include #include /** * im_point: * @im: image to read from * @interpolate: interpolator to sample points with * @x: x position to interpolate * @y: y position to interpolate * @band: band to read * @out: return interpolated value * * Find the value at (@x, @y) in given band of image. * Non-integral values are calculated using the supplied @interpolate. * * See also: im_avg(), #VipsInterpolate * * Returns: 0 on success, -1 on error */ int im_point( IMAGE *im, VipsInterpolate *interpolate, double x, double y, int band, double *out ) { IMAGE *mem; IMAGE *t[2]; if( band >= im->Bands || x < 0.0 || y < 0.0 || x > im->Xsize || y > im->Ysize ) { im_error( "im_point_bilinear", "%s", _( "coords outside image" ) ); return( -1 ); } if( !(mem = im_open( "im_point", "p" )) ) return( -1 ); if( im_open_local_array( mem, t, 2, "im_point", "p" ) || im_extract_band( im, t[0], band ) || im_affinei( t[0], t[1], interpolate, 1, 0, 0, 1, floor( x ) - x, floor( y ) - y, floor( x ), floor( y ), 1, 1 ) || im_avg( t[1], out ) ) { im_close( mem ); return( -1 ); } im_close( mem ); return( 0 ); } /** * im_point_bilinear: * @im: image to read from * @x: x position to interpolate * @y: y position to interpolate * @band: band to read * @out: return interpolated value * * Find the value at (@x,@y) in given band of image. * Use bilinear interpolation if @x or @y are non-integral. * * See also: im_avg(), im_point(). * * Returns: 0 on success, -1 on error */ int im_point_bilinear( IMAGE *im, double x, double y, int band, double *out ) { return( im_point( im, vips_interpolate_bilinear_static(), x, y, band, out ) ); } vips-8.2.2/libvips/deprecated/fits.c0000664000175000017500000000451312530402247014312 00000000000000/* Read FITS files with cfitsio * * 13/12/11 * - just a compat stub now */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include int im_fits2vips( const char *filename, VipsImage *out ) { VipsImage *t; if( vips_fitsload( filename, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int im_vips2fits( VipsImage *in, const char *filename ) { if( vips_fitssave( in, filename, NULL ) ) return( -1 ); return( 0 ); } static int isfits( const char *name ) { return( vips_foreign_is_a( "fitsload", name ) ); } static const char *fits_suffs[] = { ".fits", NULL }; /* fits format adds no new members. */ typedef VipsFormat VipsFormatFits; typedef VipsFormatClass VipsFormatFitsClass; static void vips_format_fits_class_init( VipsFormatFitsClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "fits"; object_class->description = _( "FITS" ); format_class->is_a = isfits; format_class->load = im_fits2vips; format_class->save = im_vips2fits; format_class->suffs = fits_suffs; } static void vips_format_fits_init( VipsFormatFits *object ) { } G_DEFINE_TYPE( VipsFormatFits, vips_format_fits, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/morph_dispatch.c0000664000175000017500000001547512530402247016362 00000000000000/* VIPS function dispatch tables for morphology. * * J. Cupitt, 19/9/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* Args to im_profile. */ static im_arg_desc profile_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "direction" ) }; /* Call im_profile via arg vector. */ static int profile_vec( im_object *argv ) { int dir = *((int *) argv[2]); return( im_profile( argv[0], argv[1], dir ) ); } /* Description of im_profile. */ static im_function profile_desc = { "im_profile", /* Name */ "find first horizontal/vertical edge", /* Descr. */ IM_FN_TRANSFORM, /* Flags */ profile_vec, /* Dispatch function */ IM_NUMBER( profile_args ), /* Size of arg list */ profile_args /* Arg list */ }; /* Args to im_erode. */ static im_arg_desc erode_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "mask" ) }; /* Call im_dilate via arg vector. */ static int dilate_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_dilate( argv[0], argv[1], mo->mask ) ); } /* Description of im_dilate. */ static im_function dilate_desc = { "im_dilate", /* Name */ "dilate image with mask, adding a black border", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ dilate_vec, /* Dispatch function */ IM_NUMBER( erode_args ), /* Size of arg list */ erode_args /* Arg list */ }; /* Call im_erode via arg vector. */ static int erode_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_erode( argv[0], argv[1], mo->mask ) ); } /* Description of im_erode. */ static im_function erode_desc = { "im_erode", /* Name */ "erode image with mask, adding a black border", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ erode_vec, /* Dispatch function */ IM_NUMBER( erode_args ), /* Size of arg list */ erode_args /* Arg list */ }; /* Args to im_cntlines. */ static im_arg_desc cntlines_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_DOUBLE( "nlines" ), IM_INPUT_INT( "direction" ) }; /* Call im_cntlines via arg vector. */ static int cntlines_vec( im_object *argv ) { double *out = (double *) argv[1]; int dir = *((int *) argv[2]); return( im_cntlines( argv[0], out, dir ) ); } /* Description of im_cntlines. */ static im_function cntlines_desc = { "im_cntlines", /* Name */ "count horizontal or vertical lines", 0, /* Flags */ cntlines_vec, /* Dispatch function */ IM_NUMBER( cntlines_args ), /* Size of arg list */ cntlines_args /* Arg list */ }; /* Args to im_rank. */ static im_arg_desc rank_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_INT( "n" ) }; /* Call im_rank via arg vector. */ static int rank_vec( im_object *argv ) { int xsize = *((int *) argv[2]); int ysize = *((int *) argv[3]); int n = *((int *) argv[4]); return( im_rank( argv[0], argv[1], xsize, ysize, n ) ); } /* Description of im_rank. */ static im_function rank_desc = { "im_rank", /* Name */ "rank filter nth element of xsize/ysize window", IM_FN_PIO, /* Flags */ rank_vec, /* Dispatch function */ IM_NUMBER( rank_args ), /* Size of arg list */ rank_args /* Arg list */ }; /* Args for im_zerox. */ static im_arg_desc zerox_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "flag" ) }; /* Call im_zerox via arg vector. */ static int zerox_vec( im_object *argv ) { int flag = *((int *) argv[2]); return( im_zerox( argv[0], argv[1], flag ) ); } /* Description of im_zerox. */ static im_function zerox_desc = { "im_zerox", /* Name */ "find +ve or -ve zero crossings in image", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ zerox_vec, /* Dispatch function */ IM_NUMBER( zerox_args ), /* Size of arg list */ zerox_args /* Arg list */ }; static im_arg_desc maxvalue_args[] = { IM_INPUT_IMAGEVEC( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static int maxvalue_vec( im_object *argv ) { im_imagevec_object *iv = (im_imagevec_object *) argv[0]; return( im_maxvalue( iv->vec, argv[1], iv->n ) ); } static im_function maxvalue_desc = { "im_maxvalue", /* Name */ "point-wise maximum value", /* Description */ IM_FN_PIO, /* Flags */ maxvalue_vec, /* Dispatch function */ IM_NUMBER( maxvalue_args ), /* Size of arg list */ maxvalue_args /* Arg list */ }; static im_arg_desc rank_image_args[] = { IM_INPUT_IMAGEVEC( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "index" ) }; static int rank_image_vec( im_object *argv ) { im_imagevec_object *iv = (im_imagevec_object *) argv[0]; int index = *((int *) argv[2]); return( im_rank_image( iv->vec, argv[1], iv->n, index ) ); } static im_function rank_image_desc = { "im_rank_image", /* Name */ "point-wise pixel rank", /* Description */ IM_FN_PIO, /* Flags */ rank_image_vec, /* Dispatch function */ IM_NUMBER( rank_image_args ), /* Size of arg list */ rank_image_args /* Arg list */ }; /* Args for im_label_regions(). */ static im_arg_desc label_regions_args[] = { IM_INPUT_IMAGE( "test" ), IM_OUTPUT_IMAGE( "mask" ), IM_OUTPUT_INT( "segments" ) }; /* Call im_label_regions() via arg vector. */ static int label_regions_vec( im_object *argv ) { IMAGE *test = argv[0]; IMAGE *mask = argv[1]; int *serial = (int *) argv[2]; return( im_label_regions( test, mask, serial ) ); } /* Description of im_label_regions(). */ static im_function label_regions_desc = { "im_label_regions", /* Name */ "number continuous regions in an image", 0, /* Flags */ label_regions_vec, /* Dispatch function */ IM_NUMBER( label_regions_args ),/* Size of arg list */ label_regions_args /* Arg list */ }; /* Package up all these functions. */ static im_function *morph_list[] = { &cntlines_desc, &dilate_desc, &rank_desc, &rank_image_desc, &maxvalue_desc, &label_regions_desc, &zerox_desc, &erode_desc, &profile_desc }; /* Package of functions. */ im_package im__morphology = { "morphology", IM_NUMBER( morph_list ), morph_list }; vips-8.2.2/libvips/deprecated/rw_mask.c0000664000175000017500000005630412530402247015015 00000000000000/* read and write masks */ /* Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 29/04/1991 * Modified on: 10/8/1992, J.Cupitt * - Mask reading routines no longer fail if scale and offset are missing. * Instead, they set default values of scale=1, offset=0. * - Code tidied up, better error recovery. * - Bugs fixed in im_dup_*mask. No longer coredump. * - Bugs fixed in im_write_*mask. Now work for non-square matricies. * - im_copy_*mask_matrix, im_copy_matrix_*mask added: copy VIPS mask * structures into Numerical Recipies in C style matricies and vice * versa. Both structures should have been built before copy attempted. * See im_create_*mask, im_*mat_alloc. The matrix should be indexed by 0 * to size-1. * 9/7/93 JC * - some ANSIfication and tidies * - im_free_*mask() now return zero, so they can be used as close * callbacks. * 7/10/94 JC * - new IM_NEW(), IM_ARRAY() macros added * 27/4/95 JC * - oops! forgot to init IM_ARRAY() memory to zero * 7/8/96 JC * - im_scale_dmask() rewritten * 7/5/98 JC * - im_read_*mask() rewritten, now more robust * - im_write_*mask() rewritten * - new functions im_write_*mask_name() * 28/7/99 JC * - im_create_imaskv(), im_create_dmaskv() make masks and init from * varargs * - tabs allowed as column separators * 9/2/05 * - "," allowed as column separator ... helps CSV read * 31/5/06 * - use g_ascii_strtod() and friends * 2006-09-08 tcv * - add im_norm_dmask() * 1/9/09 * - move im_print_*mask() here * 12/11/09 * - reading a float mask with im_read_imask() produced an incorrect * error messagge * 21/10/10 * - gtk-doc * - you can use commas to separate header fields * - small cleanups * 30/11/10 * - im_scale_dmask() normalises to 20, not 100 ... we hit the fast * conv path more often * 24/1/10 * - oops, missing braces in write dmask removed spaces between items */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /** * INTMASK: * @xsize: mask width * @ysize: mask height * @scale: mask scale factor * @offset: mask offset * @coeff: array of mask elements * @filename: the file this mask was read from, or should be written to * * An integer mask. * * @scale lets the mask represent fractional values: for * example, in integer convolution (see im_conv()) the result of the * convolution is divided by @scale and then added to @offset before being * written to the output image. * * @scale and @offset default to 1 and 0. Various functions, such as * im_conv(), will fail if @scale is zero. * * You can read and write the matrix elements in @coeff. */ /** * DOUBLEMASK: * @xsize: mask width * @ysize: mask height * @scale: mask scale factor * @offset: mask offset * @coeff: array of mask elements * @filename: the file this mask was read from, or should be written to * * A floating-point mask. * * As with #INTMASK, in convolution (see im_convf()) the result of the * convolution is divided by @scale and then added to @offset before being * written to the output image. * * @scale and @offset default to 1.0 and 0.0. Various functions, such as * im_conv(), will fail if @scale is zero. * * You can read and write the matrix elements in @coeff. */ /* Size of line buffer for reading. */ #define MAX_LINE (32768) /** * im_free_imask: * @in: mask to free * * Free mask structure and any attached arrays. Return zero, so we can use * these functions as close callbacks. * * See also: im_free_dmask(). * * Returns: zero. */ int im_free_imask( INTMASK *in ) { if( !in ) return( 0 ); IM_FREE( in->coeff ); IM_FREE( in->filename ); IM_FREE( in ); return( 0 ); } /** * im_free_dmask: * @in: mask to free * * Free mask structure and any attached arrays. Return zero, so we can use * these functions as close callbacks. * * See also: im_free_dmask(). * * Returns: zero. */ int im_free_dmask( DOUBLEMASK *in ) { if( !in ) return( 0 ); IM_FREE( in->coeff ); IM_FREE( in->filename ); IM_FREE( in ); return( 0 ); } /** * im_create_imask: * @filename: set mask filename to this * @xsize: mask width * @ysize: mask height * * Create an empty imask. You need to loop over @coeff to set the values. * * See also: im_create_imaskv(). * * Returns: The newly-allocated mask. */ INTMASK * im_create_imask( const char *filename, int xsize, int ysize ) { INTMASK *out; int size = xsize * ysize; /* Check args. */ if( xsize <= 0 || ysize <= 0 || filename == NULL ) { im_error( "im_create_imask", "%s", _( "bad arguments" ) ); return( NULL ); } /* Allocate and initialise structure. */ if( !(out = IM_NEW( NULL, INTMASK )) ) return( NULL ); out->coeff = NULL; out->filename = NULL; out->scale = 1; out->offset = 0; out->xsize = 0; out->ysize = 0; if( !(out->coeff = IM_ARRAY( NULL, size, int )) ) { im_free_imask( out ); return( NULL ); } (void) memset( (char *) out->coeff, 0, size * sizeof( int ) ); if( !(out->filename = im_strdup( NULL, filename )) ) { im_free_imask( out ); return( NULL ); } out->xsize = xsize; out->ysize = ysize; return( out ); } /** * im_create_imaskv: * @filename: set mask filename to this * @xsize: mask width * @ysize: mask height * @...: values to set for the mask * * Create an imask and initialise it from the function parameter list. * * See also: im_create_imask(). * * Returns: The newly-allocated mask. */ INTMASK * im_create_imaskv( const char *filename, int xsize, int ysize, ... ) { va_list ap; INTMASK *out; int i; if( !(out = im_create_imask( filename, xsize, ysize )) ) return( NULL ); va_start( ap, ysize ); for( i = 0; i < xsize * ysize; i++ ) out->coeff[i] = va_arg( ap, int ); va_end( ap ); return( out ); } /** * im_create_dmask: * @filename: set mask filename to this * @xsize: mask width * @ysize: mask height * * Create an empty dmask. You need to loop over @coeff to set the values. * * See also: im_create_dmaskv(), im_vips2mask(). * * Returns: The newly-allocated mask. */ DOUBLEMASK * im_create_dmask( const char *filename, int xsize, int ysize ) { DOUBLEMASK *out; int size = xsize * ysize; /* Check args. */ if( xsize <= 0 || ysize <= 0 || filename == NULL ) { im_error( "im_create_dmask", "%s", _( "bad arguments" ) ); return( NULL ); } /* Allocate and initialise structure. */ if( !(out = IM_NEW( NULL, DOUBLEMASK )) ) return( NULL ); out->coeff = NULL; out->filename = NULL; out->scale = 1.0; out->offset = 0.0; out->xsize = 0; out->ysize = 0; if( !(out->coeff = IM_ARRAY( NULL, size, double )) ) { im_free_dmask( out ); return( NULL ); } (void) memset( (char *) out->coeff, 0, size * sizeof( double ) ); if( !(out->filename = im_strdup( NULL, filename )) ) { im_free_dmask( out ); return( NULL ); } out->xsize = xsize; out->ysize = ysize; return( out ); } /** * im_create_dmaskv: * @filename: set mask filename to this * @xsize: mask width * @ysize: mask height * @...: values to set for the mask * * Create a dmask and initialise it from the function parameter list. * * See also: im_create_dmask(). * * Returns: The newly-allocated mask. */ DOUBLEMASK * im_create_dmaskv( const char *filename, int xsize, int ysize, ... ) { va_list ap; DOUBLEMASK *out; int i; if( !(out = im_create_dmask( filename, xsize, ysize )) ) return( NULL ); va_start( ap, ysize ); for( i = 0; i < xsize * ysize; i++ ) out->coeff[i] = va_arg( ap, double ); va_end( ap ); return( out ); } /* Read a line from a file! */ static int get_line( FILE *fp, char *buf ) { if( !fgets( buf, MAX_LINE, fp ) ) { im_error( "read_mask", "%s", _( "unexpected EOF" ) ); return( -1 ); } return( 0 ); } /* width, height, optional scale, optional offset. */ static int read_header( FILE *fp, int *xs, int *ys, double *scale, double *offset ) { char buf[MAX_LINE]; char *p, *q; double v[4]; int i; /* Read the first line: should contain size and optional * scale + offset. */ if( get_line( fp, buf ) ) return( -1 ); /* Read as space separated doubles. \n is in the break list because * our line will (usually) have a trailing \n which we want to count * as whitespace. */ p = buf; for( i = 0, p = buf; i < 4 && (q = im_break_token( p, " \";,\t\n" )); i++, p = q ) v[i] = g_ascii_strtod( p, NULL ); if( (i != 2 && i != 4) || ceil( v[0] ) != v[0] || ceil( v[1] ) != v[1] || v[0] <= 0 || v[1] <= 0 ) { im_error( "read_header", "%s", _( "error reading matrix header" ) ); return( -1 ); } if( i == 4 && v[2] == 0 ) { im_error( "read_header", "%s", _( "scale should be non-zero" ) ); return( -1 ); } *xs = v[0]; *ys = v[1]; if( i == 2 ) { *scale = 1.0; *offset = 0.0; } else { *scale = v[2]; *offset = v[3]; } return( 0 ); } /** * im_read_dmask: * @filename: read matrix from this file * * Reads a matrix from a file. * * Matrix files have a simple format that's supposed to be easy to create with * a text editor or a spreadsheet. * * The first line has four numbers for width, height, scale and * offset (scale and offset may be omitted, in which case they default to 1.0 * and 0.0). Scale must be non-zero. Width and height must be positive * integers. The numbers are separated by any mixture of spaces, commas, * tabs and quotation marks ("). The scale and offset fields may be * floating-point, and must use '.' * as a decimal separator. * * Subsequent lines each hold one line of matrix data, with numbers again * separated by any mixture of spaces, commas, * tabs and quotation marks ("). The numbers may be floating-point, and must * use '.' * as a decimal separator. * * Extra characters at the ends of lines or at the end of the file are * ignored. * * See also: im_read_imask(), im_gauss_dmask(). * * Returns: the loaded mask on success, or NULL on error. */ DOUBLEMASK * im_read_dmask( const char *filename ) { FILE *fp; double sc, off; int xs, ys; DOUBLEMASK *out; int x, y, i; char buf[MAX_LINE]; if( !(fp = im__file_open_read( filename, NULL, TRUE )) ) return( NULL ); if( read_header( fp, &xs, &ys, &sc, &off ) ) { fclose( fp ); return( NULL ); } if( !(out = im_create_dmask( filename, xs, ys )) ) { fclose( fp ); return( NULL ); } out->scale = sc; out->offset = off; for( i = 0, y = 0; y < ys; y++ ) { char *p; if( get_line( fp, buf ) ) { im_free_dmask( out ); fclose( fp ); return( NULL ); } for( p = buf, x = 0; p && x < xs; x++, i++, p = im_break_token( p, " \t,\";" ) ) out->coeff[i] = g_ascii_strtod( p, NULL ); } fclose( fp ); return( out ); } /** * im_read_imask: * @filename: read matrix from this file * * Reads an integer matrix from a file. * * This function works exactly as im_read_dmask(), but the loaded matrix is * checked for 'int-ness'. All coefficients must be integers, and scale and * offset must be integers. * * See also: im_read_dmask(). * * Returns: the loaded mask on success, or NULL on error. */ INTMASK * im_read_imask( const char *filename ) { DOUBLEMASK *dmask; INTMASK *imask; int i; if( !(dmask = im_read_dmask( filename )) ) return( NULL ); if( ceil( dmask->scale ) != dmask->scale || ceil( dmask->offset ) != dmask->offset ) { im_error( "im_read_imask", "%s", _( "scale and offset should be int" ) ); im_free_dmask( dmask ); return( NULL ); } for( i = 0; i < dmask->xsize * dmask->ysize; i++ ) if( ceil( dmask->coeff[i] ) != dmask->coeff[i] ) { im_error( "im_read_imask", _( "ceofficient at " "position (%d, %d) is not int" ), i % dmask->xsize, i / dmask->xsize ); im_free_dmask( dmask ); return( NULL ); } if( !(imask = im_create_imask( filename, dmask->xsize, dmask->ysize )) ) { im_free_dmask( dmask ); return( NULL ); } imask->scale = dmask->scale; imask->offset = dmask->offset; for( i = 0; i < dmask->xsize * dmask->ysize; i++ ) imask->coeff[i] = dmask->coeff[i]; im_free_dmask( dmask ); return( imask ); } /** * im_scale_dmask: * @in: mask to scale * @filename: filename for returned mask * * Scale the dmask to make an imask with a maximum value of 20. * * See also: im_norm_dmask(). * * Returns: the converted mask, or NULL on error. */ INTMASK * im_scale_dmask( DOUBLEMASK *in, const char *filename ) { const int size = in->xsize * in->ysize; INTMASK *out; double maxval, dsum; int i; int isum; if( im_check_dmask( "im_scale_dmask", in ) || !(out = im_create_imask( filename, in->xsize, in->ysize )) ) return( NULL ); /* Find mask max. */ maxval = in->coeff[0]; for( i = 0; i < size; i++ ) if( in->coeff[i] > maxval ) maxval = in->coeff[i]; /* Copy and scale, setting max to 20. */ for( i = 0; i < size; i++ ) out->coeff[i] = IM_RINT( in->coeff[i] * 20.0 / maxval ); out->offset = in->offset; /* Set the scale to match the adjustment to max. */ isum = 0; dsum = 0.0; for( i = 0; i < size; i++ ) { isum += out->coeff[i]; dsum += in->coeff[i]; } if( dsum == in->scale ) out->scale = isum; else if( dsum == 0.0 ) out->scale = 1.0; else out->scale = IM_RINT( in->scale * isum / dsum ); return( out ); } /** * im_dmask2imask: * @in: mask to convert * @filename: filename for returned mask * * Make an imask from the dmask, rounding to nearest. * * See also: im_scale_dmask(). * * Returns: the converted mask, or NULL on error. */ INTMASK * im_dmask2imask( DOUBLEMASK *in, const char *filename ) { const int size = in->xsize * in->ysize; INTMASK *out; int i; if( im_check_dmask( "im_dmask2imask", in ) || !(out = im_create_imask( filename, in->xsize, in->ysize )) ) return( NULL ); for( i = 0; i < size; i++ ) out->coeff[i] = IM_RINT( in->coeff[i] ); out->offset = IM_RINT( in->offset ); out->scale = IM_RINT( in->scale ); return( out ); } /** * im_imask2dmask: * @in: mask to convert * @filename: filename for returned mask * * Make a dmask from the imask. * * See also: im_dmask2imask(). * * Returns: the converted mask, or NULL on error. */ DOUBLEMASK * im_imask2dmask( INTMASK *in, const char *filename ) { const int size = in->xsize * in->ysize; DOUBLEMASK *out; int i; if( im_check_imask( "im_imask2dmask", in ) || !(out = im_create_dmask( filename, in->xsize, in->ysize )) ) return( NULL ); for( i = 0; i < size; i++ ) out->coeff[i] = in->coeff[i]; out->offset = in->offset; out->scale = in->scale; return( out ); } /** * im_norm_dmask: * @mask: mask to scale * * Normalise the dmask. Apply the scale and offset to each element to make * a mask with scale 1, offset zero. * * See also: im_scale_dmask(). * * Returns: 0 on success, or -1 on error. */ void im_norm_dmask( DOUBLEMASK *mask ) { const int n = mask->xsize * mask->ysize; const double scale = (mask->scale == 0) ? 0 : (1.0 / mask->scale); int i; if( im_check_dmask( "im_norm_dmask", mask ) || (1.0 == scale && 0.0 == mask->offset) ) return; for( i = 0; i < n; i++ ) mask->coeff[i] = mask->coeff[i] * scale + mask->offset; mask->scale = 1.0; mask->offset = 0.0; } /** * im_dup_imask: * @in: mask to duplicate * @filename: filename to set for the new mask * * Duplicate an imask. * * See also: im_dup_dmask(). * * Returns: the mask copy, or NULL on error. */ INTMASK * im_dup_imask( INTMASK *in, const char *filename ) { INTMASK *out; int i; if( im_check_imask( "im_dup_imask", in ) || !(out = im_create_imask( filename, in->xsize, in->ysize )) ) return( NULL ); out->offset = in->offset; out->scale = in->scale; for( i = 0; i < in->xsize * in->ysize; i++ ) out->coeff[i] = in->coeff[i]; return( out ); } /** * im_dup_dmask: * @in: mask to duplicate * @filename: filename to set for the new mask * * Duplicate a dmask. * * See also: im_dup_imask(). * * Returns: the mask copy, or NULL on error. */ DOUBLEMASK * im_dup_dmask( DOUBLEMASK *in, const char *filename ) { DOUBLEMASK *out; int i; if( im_check_dmask( "im_dup_dmask", in ) || !(out = im_create_dmask( filename, in->xsize, in->ysize )) ) return( NULL ); out->offset = in->offset; out->scale = in->scale; for( i = 0; i < in->xsize * in->ysize; i++ ) out->coeff[i] = in->coeff[i]; return( out ); } /* Write to file. */ static int write_line( FILE *fp, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); if( !vfprintf( fp, fmt, ap ) ) { im_error( "write_mask", "%s", _( "write error, disc full?" ) ); return( -1 ); } va_end( ap ); return( 0 ); } static int write_double( FILE *fp, double d ) { char buf[G_ASCII_DTOSTR_BUF_SIZE]; fprintf( fp, "%s", g_ascii_dtostr( buf, sizeof( buf ), d ) ); return( 0 ); } /** * im_write_imask_name: * @in: mask to write * @filename: filename to write to * * Write an imask to a file. See im_read_dmask() for a description of the mask * file format. * * See also: im_write_imask(). * * Returns: 0 on success, or -1 on error. */ int im_write_imask_name( INTMASK *in, const char *filename ) { FILE *fp; int x, y, i; if( im_check_imask( "im_write_imask_name", in ) || !(fp = im__file_open_write( filename, TRUE )) ) return( -1 ); if( write_line( fp, "%d %d", in->xsize, in->ysize ) ) { fclose( fp ); return( -1 ); } if( in->scale != 1 || in->offset != 0 ) write_line( fp, " %d %d", in->scale, in->offset ); write_line( fp, "\n" ); for( i = 0, y = 0; y < in->ysize; y++ ) { for( x = 0; x < in->xsize; x++, i++ ) write_line( fp, "%d ", in->coeff[i] ); if( write_line( fp, "\n" ) ) { fclose( fp ); return( -1 ); } } fclose( fp ); return( 0 ); } /** * im_write_imask: * @in: mask to write * * Write an imask to a file. * * See also: im_write_imask_name(). * * Returns: 0 on success, or -1 on error. */ int im_write_imask( INTMASK *in ) { if( !in->filename ) { im_error( "im_write_imask", "%s", _( "filename not set" ) ); return( -1 ); } return( im_write_imask_name( in, in->filename ) ); } /** * im_write_dmask_name: * @in: mask to write * @filename: filename to write to * * Write a dmask to a file. See im_read_dmask() for a description of the mask * file format. * * See also: im_write_dmask(). * * Returns: 0 on success, or -1 on error. */ int im_write_dmask_name( DOUBLEMASK *in, const char *filename ) { FILE *fp; int x, y, i; if( im_check_dmask( "im_write_dmask_name", in ) || !(fp = im__file_open_write( filename, TRUE )) ) return( -1 ); if( write_line( fp, "%d %d", in->xsize, in->ysize ) ) { fclose( fp ); return( -1 ); } if( in->scale != 1.0 || in->offset != 0.0 ) { write_line( fp, " " ); write_double( fp, in->scale ); write_line( fp, " " ); write_double( fp, in->offset ); } write_line( fp, "\n" ); for( i = 0, y = 0; y < in->ysize; y++ ) { for( x = 0; x < in->xsize; x++, i++ ) { write_double( fp, in->coeff[i] ); write_line( fp, " " ); } if( write_line( fp, "\n" ) ) { fclose( fp ); return( -1 ); } } fclose( fp ); return( 0 ); } /** * im_write_dmask: * @in: mask to write * * Write a dmask to a file. See im_read_dmask() for a description of the mask * file format. * * See also: im_write_dmask_name(). * * Returns: 0 on success, or -1 on error. */ int im_write_dmask( DOUBLEMASK *in ) { if( !in->filename ) { im_error( "im_write_dmask", "%s", _( "filename not set" ) ); return( -1 ); } return( im_write_dmask_name( in, in->filename ) ); } /* Copy an imask into a matrix. Only used internally by matrix package for * invert. */ void im_copy_imask_matrix( INTMASK *mask, int **matrix ) { int x, y; int *p = mask->coeff; for( y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++ ) matrix[x][y] = *p++; } /* Copy a matrix into an imask. */ void im_copy_matrix_imask( int **matrix, INTMASK *mask ) { int x, y; int *p = mask->coeff; for( y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++ ) *p++ = matrix[x][y]; } /* Copy a dmask into a matrix. */ void im_copy_dmask_matrix( DOUBLEMASK *mask, double **matrix ) { int x, y; double *p = mask->coeff; for( y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++ ) matrix[x][y] = *p++; } /* Copy a matrix to a dmask. */ void im_copy_matrix_dmask( double **matrix, DOUBLEMASK *mask ) { int x, y; double *p = mask->coeff; for( y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++ ) *p++ = matrix[x][y]; } /** * im_print_imask: * @in: mask to print * * Print an imask to stdout. * * See also: im_print_dmask(). */ void im_print_imask( INTMASK *in ) { int i, j, k; printf( "%s: %d %d %d %d\n", in->filename, in->xsize, in->ysize, in->scale, in->offset ); for( k = 0, j = 0; j < in->ysize; j++ ) { for( i = 0; i < in->xsize; i++, k++ ) printf( "%d\t", in->coeff[k] ); printf( "\n" ); } } /** * im_print_dmask: * @in: mask to print * * Print a dmask to stdout. * * See also: im_print_imask(). */ void im_print_dmask( DOUBLEMASK *in ) { int i, j, k; printf( "%s: %d %d %f %f\n", in->filename, in->xsize, in->ysize, in->scale, in->offset ); for( k = 0, j = 0; j < in->ysize; j++ ) { for( i = 0; i < in->xsize; i++, k++ ) printf( "%f\t", in->coeff[k] ); printf( "\n" ); } } /** * im_local_dmask: * @out: image to make the mask local to * @mask: mask to local-ize * * @out takes ownership of @mask: when @out is closed, @mask will be closed * for you. If im_local_dmask() itself fails, the mask is also freed. * * See also: im_local_imask(). * * Returns: the mask, or NULL on error. */ DOUBLEMASK * im_local_dmask( VipsImage *out, DOUBLEMASK *mask ) { if( im_check_dmask( "im_local_dmask", mask ) ) return( NULL ); if( im_add_close_callback( out, (im_callback_fn) im_free_dmask, mask, NULL ) ) { im_free_dmask( mask ); return( NULL ); } return( mask ); } /** * im_local_imask: * @out: image to make the mask local to * @mask: mask to local-ize * * @out takes ownership of @mask: when @out is closed, @mask will be closed * for you. If im_local_imask() itself fails, the mask is also freed. * * See also: im_local_dmask(). * * Returns: the mask, or NULL on error. */ INTMASK * im_local_imask( VipsImage *out, INTMASK *mask ) { if( im_check_imask( "im_local_dmask", mask ) ) return( NULL ); if( im_add_close_callback( out, (im_callback_fn) im_free_imask, mask, NULL ) ) { im_free_imask( mask ); return( NULL ); } return( mask ); } vips-8.2.2/libvips/deprecated/im_vips2tiff.c0000664000175000017500000001375412530402247015755 00000000000000/* vips7 compat stub for im_vips2tiff.c * * 4/12/11 * - just a stub calling vips_tiffsave() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Turn on IM_REGION_ADDR() range checks, don't delete intermediates. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include int im_vips2tiff( IMAGE *in, const char *filename ) { char *p, *q, *r; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; VipsForeignTiffCompression compression = VIPS_FOREIGN_TIFF_COMPRESSION_NONE; int Q = 75; VipsForeignTiffPredictor predictor = VIPS_FOREIGN_TIFF_PREDICTOR_NONE; char *profile = NULL; gboolean tile = FALSE; int tile_width = 128; int tile_height = 128; gboolean pyramid = FALSE; gboolean squash = FALSE; VipsForeignTiffResunit resunit = VIPS_FOREIGN_TIFF_RESUNIT_CM; double xres = in->Xres * 10.0; double yres = in->Yres * 10.0; gboolean bigtiff = FALSE; im_filename_split( filename, name, mode ); strcpy( buf, mode ); p = &buf[0]; if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "none", q ) ) compression = VIPS_FOREIGN_TIFF_COMPRESSION_NONE; else if( im_isprefix( "packbits", q ) ) compression = VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS; else if( im_isprefix( "ccittfax4", q ) ) compression = VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4; else if( im_isprefix( "lzw", q ) ) { compression = VIPS_FOREIGN_TIFF_COMPRESSION_LZW; if( (r = im_getsuboption( q )) ) { int i; if( sscanf( r, "%d", &i ) != 1 ) { im_error( "im_vips2tiff", "%s", _( "bad predictor " "parameter" ) ); return( -1 ); } predictor = i; } } else if( im_isprefix( "deflate", q ) ) { compression = VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE; if( (r = im_getsuboption( q )) ) { int i; if( sscanf( r, "%d", &i ) != 1 ) { im_error( "im_vips2tiff", "%s", _( "bad predictor " "parameter" ) ); return( -1 ); } predictor = i; } } else if( im_isprefix( "jpeg", q ) ) { compression = VIPS_FOREIGN_TIFF_COMPRESSION_JPEG; if( (r = im_getsuboption( q )) ) if( sscanf( r, "%d", &Q ) != 1 ) { im_error( "im_vips2tiff", "%s", _( "bad JPEG quality " "parameter" ) ); return( -1 ); } } else { im_error( "im_vips2tiff", _( "unknown compression mode " "\"%s\"\nshould be one of \"none\", " "\"packbits\", \"ccittfax4\", \"lzw\", " "\"deflate\" or \"jpeg\"" ), q ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "tile", q ) ) { tile = TRUE; if( (r = im_getsuboption( q )) ) { if( sscanf( r, "%dx%d", &tile_width, &tile_height ) != 2 ) { im_error( "im_vips2tiff", "%s", _( "bad tile sizes" ) ); return( -1 ); } } } else if( im_isprefix( "strip", q ) ) tile = FALSE; else { im_error( "im_vips2tiff", _( "unknown layout mode " "\"%s\"\nshould be one of \"tile\" or " "\"strip\"" ), q ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "pyramid", q ) ) pyramid = TRUE; else if( im_isprefix( "flat", q ) ) pyramid = FALSE; else { im_error( "im_vips2tiff", _( "unknown multi-res mode " "\"%s\"\nshould be one of \"flat\" or " "\"pyramid\"" ), q ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "onebit", q ) ) squash = TRUE; else if( im_isprefix( "manybit", q ) ) squash = FALSE; else { im_error( "im_vips2tiff", _( "unknown format " "\"%s\"\nshould be one of \"onebit\" or " "\"manybit\"" ), q ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "res_cm", q ) ) resunit = VIPS_FOREIGN_TIFF_RESUNIT_CM; else if( im_isprefix( "res_inch", q ) ) resunit = VIPS_FOREIGN_TIFF_RESUNIT_INCH; else { im_error( "im_vips2tiff", _( "unknown resolution unit " "\"%s\"\nshould be one of \"res_cm\" or " "\"res_inch\"" ), q ); return( -1 ); } if( (r = im_getsuboption( q )) ) { if( sscanf( r, "%lfx%lf", &xres, &yres ) != 2 ) { if( sscanf( r, "%lf", &xres ) != 1 ) { im_error( "im_vips2tiff", "%s", _( "bad resolution values" ) ); return( -1 ); } yres = xres; } /* vips resolutions are always in pixels/mm. If the * user specifies ",res_inch:72x72" then they are * using pixels/inch instead and we must convert. */ if( resunit == VIPS_FOREIGN_TIFF_RESUNIT_INCH ) { xres /= 2.54; yres /= 2.54; } } } if( (q = im_getnextoption( &p )) && strcmp( q, "" ) != 0 ) profile = im_strdup( NULL, q ); if( (q = im_getnextoption( &p )) && strcmp( q, "8" ) == 0 ) bigtiff = TRUE; if( (q = im_getnextoption( &p )) ) { im_error( "im_vips2tiff", _( "unknown extra options \"%s\"" ), q ); return( -1 ); } if( vips_tiffsave( in, name, "compression", compression, "Q", Q, "predictor", predictor, "profile", profile, "tile", tile, "tile_width", tile_width, "tile_height", tile_height, "pyramid", pyramid, "squash", squash, "resunit", resunit, "xres", xres, "yres", yres, "bigtiff", bigtiff, NULL ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/deprecated/deprecated_dispatch.c0000664000175000017500000015223512530402247017331 00000000000000/* Function dispatch tables for deprecated operations. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static im_arg_desc quadratic_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMAGE( "coeff" ) }; static int quadratic_vec( im_object *argv ) { return( im_quadratic( argv[0], argv[1], argv[2] ) ); } static im_function quadratic_desc = { "im_quadratic", /* Name */ "transform via quadratic", IM_FN_PIO, /* Flags */ quadratic_vec, /* Dispatch function */ IM_NUMBER( quadratic_args ), /* Size of arg list */ quadratic_args /* Arg list */ }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_clip via arg vector. */ static int clip_vec( im_object *argv ) { return( im_clip( argv[0], argv[1] ) ); } /* Description of im_clip. */ static im_function clip_desc = { "im_clip", /* Name */ "convert to unsigned 8-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_c2ps via arg vector. */ static int c2ps_vec( im_object *argv ) { return( im_c2ps( argv[0], argv[1] ) ); } /* Description of im_c2ps. */ static im_function c2ps_desc = { "im_c2ps", /* Name */ "find power spectrum of complex image", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2ps_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_lhisteq. */ static im_arg_desc lhisteq_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Args for im_stdif. */ static im_arg_desc stdif_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "m0" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "s0" ), IM_INPUT_INT( "xw" ), IM_INPUT_INT( "yw" ) }; /* Args to im_erode. */ static im_arg_desc erode_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "mask" ) }; /* Args to im_rank. */ static im_arg_desc rank_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_INT( "n" ) }; /* Args for convolver with imask. */ static im_arg_desc conv_imask[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "matrix" ) }; /* Args for convolver with dmask. */ static im_arg_desc conv_dmask[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "matrix" ) }; /* Call im_cmulnorm via arg vector. */ static int cmulnorm_vec( im_object *argv ) { return( im_cmulnorm( argv[0], argv[1], argv[2] ) ); } /* Description of im_cmulnorm. */ static im_function cmulnorm_desc = { "im_cmulnorm", /* Name */ N_( "multiply two complex images, normalising output" ), IM_FN_PIO, /* Flags */ cmulnorm_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Four images in, one out. */ static im_arg_desc fav4_args[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_INPUT_IMAGE( "in3" ), IM_INPUT_IMAGE( "in4" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_fav4 via arg vector. */ static int fav4_vec( im_object *argv ) { IMAGE *buf[4]; buf[0] = argv[0]; buf[1] = argv[1]; buf[2] = argv[2]; buf[3] = argv[3]; return( im_fav4( &buf[0], argv[4] ) ); } /* Description of im_fav4. */ static im_function fav4_desc = { "im_fav4", /* Name */ N_( "average of 4 images" ), 0, /* Flags */ fav4_vec, /* Dispatch function */ IM_NUMBER( fav4_args ), /* Size of arg list */ fav4_args /* Arg list */ }; /* Args for im_gadd(). */ static im_arg_desc gadd_args[] = { IM_INPUT_DOUBLE( "a" ), IM_INPUT_IMAGE( "in1" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_IMAGE( "in2" ), IM_INPUT_DOUBLE( "c" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_gadd() via arg vector. */ static int gadd_vec( im_object *argv ) { double a = *((double *) argv[0]); double b = *((double *) argv[2]); double c = *((double *) argv[4]); return( im_gadd( a, argv[1], b, argv[3], c, argv[5] ) ); } /* Description of im_gadd(). */ static im_function gadd_desc = { "im_gadd", /* Name */ N_( "calculate a*in1 + b*in2 + c = outfile" ), 0, /* Flags */ gadd_vec, /* Dispatch function */ IM_NUMBER( gadd_args ), /* Size of arg list */ gadd_args /* Arg list */ }; /* Args for im_litecor(). */ static im_arg_desc litecor_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_IMAGE( "white" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "clip" ), IM_INPUT_DOUBLE( "factor" ) }; /* Call im_litecor() via arg vector. */ static int litecor_vec( im_object *argv ) { int clip = *((int *) argv[3]); double factor = *((double *) argv[4]); return( im_litecor( argv[0], argv[1], argv[2], clip, factor ) ); } /* Description of im_litecor(). */ static im_function litecor_desc = { "im_litecor", /* Name */ N_( "calculate max(white)*factor*(in/white), if clip == 1" ), 0, /* Flags */ litecor_vec, /* Dispatch function */ IM_NUMBER( litecor_args ), /* Size of arg list */ litecor_args /* Arg list */ }; /* affine args */ static im_arg_desc affine_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "c" ), IM_INPUT_DOUBLE( "d" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "w" ), IM_INPUT_INT( "h" ) }; /* Call im_affine via arg vector. */ static int affine_vec( im_object *argv ) { double a = *((double *) argv[2]); double b = *((double *) argv[3]); double c = *((double *) argv[4]); double d = *((double *) argv[5]); double dx = *((double *) argv[6]); double dy = *((double *) argv[7]); int x = *((int *) argv[8]); int y = *((int *) argv[9]); int w = *((int *) argv[10]); int h = *((int *) argv[11]); return( im_affine( argv[0], argv[1], a, b, c, d, dx, dy, x, y, w, h ) ); } /* Description of im_affine. */ static im_function affine_desc = { "im_affine", /* Name */ "affine transform", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ affine_vec, /* Dispatch function */ IM_NUMBER( affine_args ), /* Size of arg list */ affine_args /* Arg list */ }; /* similarity args */ static im_arg_desc similarity_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ) }; /* Call im_similarity via arg vector. */ static int similarity_vec( im_object *argv ) { double a = *((double *) argv[2]); double b = *((double *) argv[3]); double dx = *((double *) argv[4]); double dy = *((double *) argv[5]); return( im_similarity( argv[0], argv[1], a, b, dx, dy ) ); } /* Description of im_similarity. */ static im_function similarity_desc = { "im_similarity", /* Name */ "similarity transformation", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ similarity_vec, /* Dispatch function */ IM_NUMBER( similarity_args ), /* Size of arg list */ similarity_args /* Arg list */ }; /* similarity_area args */ static im_arg_desc similarity_area_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "w" ), IM_INPUT_INT( "h" ) }; /* Call im_similarity_area via arg vector. */ static int similarity_area_vec( im_object *argv ) { double a = *((double *) argv[2]); double b = *((double *) argv[3]); double dx = *((double *) argv[4]); double dy = *((double *) argv[5]); int x = *((int *) argv[6]); int y = *((int *) argv[7]); int w = *((int *) argv[8]); int h = *((int *) argv[9]); return( im_similarity_area( argv[0], argv[1], a, b, dx, dy, x, y, w, h ) ); } /* Description of im_similarity_area. */ static im_function similarity_area_desc = { "im_similarity_area", /* Name */ "output area xywh of similarity transformation", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ similarity_area_vec, /* Dispatch function */ IM_NUMBER( similarity_area_args ), /* Size of arg list */ similarity_area_args /* Arg list */ }; static int icc_export_vec( im_object *argv ) { int intent = *((int *) argv[3]); return( im_icc_export( argv[0], argv[1], argv[2], intent ) ); } static im_arg_desc icc_export_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "output_profile" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_export. */ static im_function icc_export_desc = { "im_icc_export", /* Name */ "convert a float LAB to an 8-bit device image with an ICC profile", /* Description */ IM_FN_PIO, /* Flags */ icc_export_vec, /* Dispatch function */ IM_NUMBER( icc_export_args ), /* Size of arg list */ icc_export_args /* Arg list */ }; /* Args for im_segment(). */ static im_arg_desc segment_args[] = { IM_INPUT_IMAGE( "test" ), IM_OUTPUT_IMAGE( "mask" ), IM_OUTPUT_INT( "segments" ) }; /* Call im_segment() via arg vector. */ static int segment_vec( im_object *argv ) { IMAGE *test = argv[0]; IMAGE *mask = argv[1]; int *serial = (int *) argv[2]; return( im_segment( test, mask, serial ) ); } /* Description of im_segment(). */ static im_function segment_desc = { "im_segment", /* Name */ "number continuous regions in an image", 0, /* Flags */ segment_vec, /* Dispatch function */ IM_NUMBER( segment_args ),/* Size of arg list */ segment_args /* Arg list */ }; static int print_vec( im_object *argv ) { const char *message = argv[0]; char **out = (char **) &argv[1]; if( im_print( message ) ) return( -1 ); *out = im_strdup( NULL, "printed" ); return( 0 ); } static im_arg_desc print_arg_types[] = { IM_INPUT_STRING( "message" ), IM_OUTPUT_STRING( "result" ) }; static im_function print_desc = { "im_print", /* Name */ "print string to stdout", /* Description */ 0, /* Flags */ print_vec, /* Dispatch function */ IM_NUMBER( print_arg_types ), /* Size of arg list */ print_arg_types /* Arg list */ }; /* Call im_clip2dcm via arg vector. */ static int clip2dcm_vec( im_object *argv ) { return( im_clip2dcm( argv[0], argv[1] ) ); } /* Description of im_clip2dcm. */ static im_function clip2dcm_desc = { "im_clip2dcm", /* Name */ "convert to double complex", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2dcm_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2cm via arg vector. */ static int clip2cm_vec( im_object *argv ) { return( im_clip2cm( argv[0], argv[1] ) ); } /* Description of im_clip2cm. */ static im_function clip2cm_desc = { "im_clip2cm", /* Name */ "convert to complex", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2cm_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2us via arg vector. */ static int clip2us_vec( im_object *argv ) { return( im_clip2us( argv[0], argv[1] ) ); } /* Description of im_clip2us. */ static im_function clip2us_desc = { "im_clip2us", /* Name */ "convert to unsigned 16-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2us_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2ui via arg vector. */ static int clip2ui_vec( im_object *argv ) { return( im_clip2ui( argv[0], argv[1] ) ); } /* Description of im_clip2ui. */ static im_function clip2ui_desc = { "im_clip2ui", /* Name */ "convert to unsigned 32-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2ui_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2s via arg vector. */ static int clip2s_vec( im_object *argv ) { return( im_clip2s( argv[0], argv[1] ) ); } /* Description of im_clip2s. */ static im_function clip2s_desc = { "im_clip2s", /* Name */ "convert to signed 16-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2s_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2i via arg vector. */ static int clip2i_vec( im_object *argv ) { return( im_clip2i( argv[0], argv[1] ) ); } /* Description of im_clip2i. */ static im_function clip2i_desc = { "im_clip2i", /* Name */ "convert to signed 32-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2i_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2d via arg vector. */ static int clip2d_vec( im_object *argv ) { return( im_clip2d( argv[0], argv[1] ) ); } /* Description of im_clip2d. */ static im_function clip2d_desc = { "im_clip2d", /* Name */ "convert to double-precision float", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2d_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2f via arg vector. */ static int clip2f_vec( im_object *argv ) { return( im_clip2f( argv[0], argv[1] ) ); } /* Description of im_clip2f. */ static im_function clip2f_desc = { "im_clip2f", /* Name */ "convert to single-precision float", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2f_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_clip2c via arg vector. */ static int clip2c_vec( im_object *argv ) { return( im_clip2c( argv[0], argv[1] ) ); } /* Description of im_clip2c. */ static im_function clip2c_desc = { "im_clip2c", /* Name */ "convert to signed 8-bit integer", IM_FN_PTOP | IM_FN_PIO, /* Flags */ clip2c_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to im_thresh. */ static im_arg_desc thresh_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_DOUBLE( "threshold" ) }; /* Call im_thresh via arg vector. */ static int thresh_vec( im_object *argv ) { double t1 = *((double *) argv[2]); return( im_thresh( argv[0], argv[1], t1 ) ); } /* Description of im_thresh. */ static im_function thresh_desc = { "im_thresh", /* Name */ "slice an image at a threshold", 0, /* Flags */ thresh_vec, /* Dispatch function */ IM_NUMBER( thresh_args ), /* Size of arg list */ thresh_args /* Arg list */ }; /* Args to im_slice. */ static im_arg_desc slice_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_DOUBLE( "thresh1" ), IM_INPUT_DOUBLE( "thresh2" ) }; /* Call im_slice via arg vector. */ static int slice_vec( im_object *argv ) { double t1 = *((double *) argv[2]); double t2 = *((double *) argv[3]); return( im_slice( argv[0], argv[1], t1, t2 ) ); } /* Description of im_slice. */ static im_function slice_desc = { "im_slice", /* Name */ "slice an image using two thresholds", 0, /* Flags */ slice_vec, /* Dispatch function */ IM_NUMBER( slice_args ), /* Size of arg list */ slice_args /* Arg list */ }; /* Args for im_convsub. */ static im_arg_desc convsub_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMASK( "matrix" ), IM_INPUT_INT( "xskip" ), IM_INPUT_INT( "yskip" ) }; /* Call im_convsub via arg vector. */ static int convsub_vec( im_object *argv ) { im_mask_object *mo = argv[2]; int xskip = *((int *) argv[3]); int yskip = *((int *) argv[4]); return( im_convsub( argv[0], argv[1], mo->mask, xskip, yskip ) ); } /* Description of im_convsub. */ static im_function convsub_desc = { "im_convsub", /* Name */ "convolve uchar to uchar, sub-sampling by xskip, yskip", IM_FN_TRANSFORM, /* Flags */ convsub_vec, /* Dispatch function */ IM_NUMBER( convsub_args ), /* Size of arg list */ convsub_args /* Arg list */ }; /* Args to im_bernd. */ static im_arg_desc bernd_args[] = { IM_INPUT_STRING( "tiffname" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_bernd via arg vector. */ static int bernd_vec( im_object *argv ) { char *name = argv[0]; int left = *((int *) argv[1]); int top = *((int *) argv[2]); int width = *((int *) argv[3]); int height = *((int *) argv[4]); return( im_bernd( name, left, top, width, height ) ); } /* Description of im_bernd. */ static im_function bernd_desc = { "im_bernd", /* Name */ "extract from pyramid as jpeg", /* Description */ 0, /* Flags */ bernd_vec, /* Dispatch function */ IM_NUMBER( bernd_args ), /* Size of arg list */ bernd_args /* Arg list */ }; /* Args for im_line. */ static im_arg_desc line_args[] = { IM_RW_IMAGE( "im" ), IM_INPUT_INT( "x1" ), IM_INPUT_INT( "y1" ), IM_INPUT_INT( "x2" ), IM_INPUT_INT( "y2" ), IM_INPUT_INT( "pelval" ) }; /* Call im_line via arg vector. */ static int line_vec( im_object *argv ) { int x1 = *((int *) argv[1]); int y1 = *((int *) argv[2]); int x2 = *((int *) argv[3]); int y2 = *((int *) argv[4]); int pel = *((int *) argv[5]); return( im_line( argv[0], x1, y1, x2, y2, pel ) ); } /* Description of im_line. */ static im_function line_desc = { "im_line", /* Name */ "draw line between points (x1,y1) and (x2,y2)", 0, /* Flags */ line_vec, /* Dispatch function */ IM_NUMBER( line_args ), /* Size of arg list */ line_args /* Arg list */ }; /* Args for im_resize_linear. */ static im_arg_desc resize_linear_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "X" ), IM_INPUT_INT( "Y" ) }; /* Call im_resize_linear via arg vector. */ static int resize_linear_vec( im_object *argv ) { int X = *((int *) argv[2]); int Y = *((int *) argv[3]); return( im_resize_linear( argv[0], argv[1], X, Y ) ); } /* Description of im_resize_linear. */ static im_function resize_linear_desc = { "im_resize_linear", /* Name */ "resize to X by Y pixels with linear interpolation", 0, /* Flags */ resize_linear_vec, /* Dispatch function */ IM_NUMBER( resize_linear_args ), /* Size of arg list */ resize_linear_args /* Arg list */ }; /* Args for im_insertplaceset. */ static im_arg_desc insertplaceset_args[] = { IM_INPUT_IMAGE( "main" ), IM_INPUT_IMAGE( "sub" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INTVEC( "x" ), IM_INPUT_INTVEC( "y" ) }; /* Call im_insertplaceplaceset via arg vector. */ static int insertplaceset_vec( im_object *argv ) { im_intvec_object *xv = (im_intvec_object *) argv[3]; im_intvec_object *yv = (im_intvec_object *) argv[4]; if( xv->n != yv->n ) { im_error( "im_insertplaceset", "%s", _( "vectors not same length" ) ); return( -1 ); } if( im_insertset( argv[0], argv[1], argv[2], xv->n, xv->vec, yv->vec ) ) return( -1 ); return( 0 ); } /* Description of im_insertplaceset. */ static im_function insertplaceset_desc = { "im_insertplaceset", /* Name */ "insert sub into main at every position in x, y", 0, /* Flags */ insertplaceset_vec, /* Dispatch function */ IM_NUMBER( insertplaceset_args ), /* Size of arg list */ insertplaceset_args /* Arg list */ }; /* Call im_spcor_raw via arg vector. */ static int spcor_raw_vec( im_object *argv ) { return( im_spcor_raw( argv[0], argv[1], argv[2] ) ); } /* Description of im_spcor_raw. */ static im_function spcor_raw_desc = { "im_spcor_raw", /* Name */ "normalised correlation of in2 within in1, no black padding", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ spcor_raw_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_gradcor_raw via arg vector. */ static int gradcor_raw_vec( im_object *argv ) { return( im_gradcor_raw( argv[0], argv[1], argv[2] ) ); } /* Description of im_gradcor_raw. */ static im_function gradcor_raw_desc = { "im_gradcor_raw", /* Name */ "non-normalised correlation of gradient of in2 within in1, no padding", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ gradcor_raw_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_fastcor_raw via arg vector. */ static int fastcor_raw_vec( im_object *argv ) { return( im_fastcor_raw( argv[0], argv[1], argv[2] ) ); } /* Description of im_fastcor_raw. */ static im_function fastcor_raw_desc = { "im_fastcor_raw", /* Name */ "fast correlate in2 within in1, no border", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ fastcor_raw_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_convsepf_raw via arg vector. */ static int convsepf_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsepf_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsepf_raw. */ static im_function convsepf_raw_desc = { "im_convsepf_raw", /* Name */ "seperable convolution, with DOUBLEMASK, no border", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ convsepf_raw_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_convsep_raw via arg vector. */ static int convsep_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsep_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsep_raw. */ static im_function convsep_raw_desc = { "im_convsep_raw", /* Name */ "seperable convolution, no border", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ convsep_raw_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Call im_convf_raw via arg vector. */ static int convf_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convf_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_convf_raw. */ static im_function convf_raw_desc = { "im_convf_raw", /* Name */ "convolve, with DOUBLEMASK, no border", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ convf_raw_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_conv_raw via arg vector. */ static int conv_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_conv_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_conv_raw. */ static im_function conv_raw_desc = { "im_conv_raw", /* Name */ "convolve, no border", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ conv_raw_vec, /* Dispatch function */ IM_NUMBER( conv_imask ), /* Size of arg list */ conv_imask /* Arg list */ }; /* Args to im_contrast_surface_raw. */ static im_arg_desc contrast_surface_raw_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "half_win_size" ), IM_INPUT_INT( "spacing" ) }; /* Call im_contrast_surface_raw via arg vector. */ static int contrast_surface_raw_vec( im_object *argv ) { int half_win_size = *((int *) argv[2]); int spacing = *((int *) argv[3]); return( im_contrast_surface_raw( argv[0], argv[1], half_win_size, spacing ) ); } /* Description of im_contrast_surface_raw. */ static im_function contrast_surface_raw_desc = { "im_contrast_surface_raw", /* Name */ "find high-contrast points in an image", IM_FN_PIO, /* Flags */ contrast_surface_raw_vec, /* Dispatch function */ IM_NUMBER( contrast_surface_raw_args ),/* Size of arg list */ contrast_surface_raw_args /* Arg list */ }; /* Call im_stdif_raw via arg vector. */ static int stdif_raw_vec( im_object *argv ) { double a = *((double *) argv[2]); double m0 = *((double *) argv[3]); double b = *((double *) argv[4]); double s0 = *((double *) argv[5]); int xw = *((int *) argv[6]); int yw = *((int *) argv[7]); return( im_stdif_raw( argv[0], argv[1], a, m0, b, s0, xw, yw ) ); } /* Description of im_stdif. */ static im_function stdif_raw_desc = { "im_stdif_raw", /* Name */ "statistical differencing, no border", IM_FN_PIO, /* Flags */ stdif_raw_vec, /* Dispatch function */ IM_NUMBER( stdif_args ), /* Size of arg list */ stdif_args /* Arg list */ }; /* Call im_lhisteq_raw via arg vector. */ static int lhisteq_raw_vec( im_object *argv ) { int xw = *((int *) argv[2]); int yw = *((int *) argv[3]); return( im_lhisteq_raw( argv[0], argv[1], xw, yw ) ); } /* Description of im_lhisteq_raw. */ static im_function lhisteq_raw_desc = { "im_lhisteq_raw", /* Name */ "local histogram equalisation, no border", IM_FN_PIO, /* Flags */ lhisteq_raw_vec, /* Dispatch function */ IM_NUMBER( lhisteq_args ), /* Size of arg list */ lhisteq_args /* Arg list */ }; /* Call im_rank_raw via arg vector. */ static int rank_raw_vec( im_object *argv ) { int xsize = *((int *) argv[2]); int ysize = *((int *) argv[3]); int n = *((int *) argv[4]); return( im_rank_raw( argv[0], argv[1], xsize, ysize, n ) ); } /* Description of im_rank_raw. */ static im_function rank_raw_desc = { "im_rank_raw", /* Name */ "rank filter nth element of xsize/ysize window, no border", IM_FN_PIO, /* Flags */ rank_raw_vec, /* Dispatch function */ IM_NUMBER( rank_args ), /* Size of arg list */ rank_args /* Arg list */ }; /* Call im_erode_raw via arg vector. */ static int erode_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_erode_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_erode_raw. */ static im_function erode_raw_desc = { "im_erode_raw", /* Name */ "erode image with mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ erode_raw_vec, /* Dispatch function */ IM_NUMBER( erode_args ), /* Size of arg list */ erode_args /* Arg list */ }; /* Call im_dilate_raw via arg vector. */ static int dilate_raw_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_dilate_raw( argv[0], argv[1], mo->mask ) ); } /* Description of im_dilate_raw. */ static im_function dilate_raw_desc = { "im_dilate_raw", /* Name */ "dilate image with mask", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ dilate_raw_vec, /* Dispatch function */ IM_NUMBER( erode_args ), /* Size of arg list */ erode_args /* Arg list */ }; /* Call im_convsepf via arg vector. */ static int convsepf_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convsepf( argv[0], argv[1], mo->mask ) ); } /* Description of im_convsepf. */ static im_function convsepf_desc = { "im_convsepf", /* Name */ "seperable convolution, with DOUBLEMASK", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ convsepf_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Call im_convf via arg vector. */ static int convf_vec( im_object *argv ) { im_mask_object *mo = argv[2]; return( im_convf( argv[0], argv[1], mo->mask ) ); } /* Description of im_convf. */ static im_function convf_desc = { "im_convf", /* Name */ "convolve, with DOUBLEMASK", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ convf_vec, /* Dispatch function */ IM_NUMBER( conv_dmask ), /* Size of arg list */ conv_dmask /* Arg list */ }; /* Args for im_circle. */ static im_arg_desc circle_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "cx" ), IM_INPUT_INT( "cy" ), IM_INPUT_INT( "radius" ), IM_INPUT_INT( "intensity" ) }; /* Call im_circle via arg vector. */ static int circle_vec( im_object *argv ) { int cx = *((int *) argv[1]); int cy = *((int *) argv[2]); int radius = *((int *) argv[3]); int intensity = *((int *) argv[4]); return( im_circle( argv[0], cx, cy, radius, intensity ) ); } /* Description of im_circle. */ static im_function circle_desc = { "im_circle", /* Name */ "plot circle on image", 0, /* Flags */ circle_vec, /* Dispatch function */ IM_NUMBER( circle_args ), /* Size of arg list */ circle_args /* Arg list */ }; /* Args for im_flood_blob_copy(). */ static im_arg_desc flood_blob_copy_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "start_x" ), IM_INPUT_INT( "start_y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_flood_blob_copy() via arg vector. */ static int flood_blob_copy_vec( im_object *argv ) { IMAGE *in = argv[0]; IMAGE *out = argv[1]; int start_x = *((int *) argv[2]); int start_y = *((int *) argv[3]); im_doublevec_object *dv = (im_doublevec_object *) argv[4]; PEL *ink; if( !(ink = im__vector_to_ink( "im_flood_blob_copy", in, dv->n, dv->vec )) ) return( -1 ); return( im_flood_blob_copy( in, out, start_x, start_y, ink ) ); } /* Description of im_flood_blob_copy(). */ static im_function flood_blob_copy_desc = { "im_flood_blob_copy", /* Name */ "flood with ink from start_x, start_y while pixel == start pixel", 0, /* Flags */ flood_blob_copy_vec, /* Dispatch function */ IM_NUMBER( flood_blob_copy_args ),/* Size of arg list */ flood_blob_copy_args /* Arg list */ }; /* Args for im_flood_copy(). */ static im_arg_desc flood_copy_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "start_x" ), IM_INPUT_INT( "start_y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_flood_copy() via arg vector. */ static int flood_copy_vec( im_object *argv ) { IMAGE *in = argv[0]; IMAGE *out = argv[1]; int start_x = *((int *) argv[2]); int start_y = *((int *) argv[3]); im_doublevec_object *dv = (im_doublevec_object *) argv[4]; PEL *ink; if( !(ink = im__vector_to_ink( "im_flood_copy", in, dv->n, dv->vec )) ) return( -1 ); return( im_flood_copy( in, out, start_x, start_y, ink ) ); } /* Description of im_flood_copy(). */ static im_function flood_copy_desc = { "im_flood_copy", /* Name */ "flood with ink from start_x, start_y while pixel == start pixel", 0, /* Flags */ flood_copy_vec, /* Dispatch function */ IM_NUMBER( flood_copy_args ),/* Size of arg list */ flood_copy_args /* Arg list */ }; /* Args for im_flood_other_copy(). */ static im_arg_desc flood_other_copy_args[] = { IM_INPUT_IMAGE( "test" ), IM_INPUT_IMAGE( "mark" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "start_x" ), IM_INPUT_INT( "start_y" ), IM_INPUT_INT( "serial" ) }; /* Call im_flood_other_copy() via arg vector. */ static int flood_other_copy_vec( im_object *argv ) { IMAGE *test = argv[0]; IMAGE *mark = argv[1]; IMAGE *out = argv[2]; int start_x = *((int *) argv[3]); int start_y = *((int *) argv[4]); int serial = *((int *) argv[5]); return( im_flood_other_copy( test, mark, out, start_x, start_y, serial ) ); } /* Description of im_flood_other_copy(). */ static im_function flood_other_copy_desc = { "im_flood_other_copy", /* Name */ "flood mark with serial from start_x, start_y while pixel == start pixel", 0, /* Flags */ flood_other_copy_vec, /* Dispatch function */ IM_NUMBER( flood_other_copy_args ),/* Size of arg list */ flood_other_copy_args /* Arg list */ }; /* Args for im_insertplace. */ static im_arg_desc insertplace_args[] = { IM_RW_IMAGE( "main" ), IM_INPUT_IMAGE( "sub" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ) }; /* Call im_insertplace via arg vector. */ static int insertplace_vec( im_object *argv ) { int x = *((int *) argv[2]); int y = *((int *) argv[3]); return( im_insertplace( argv[0], argv[1], x, y ) ); } /* Description of im_insertplace. */ static im_function insertplace_desc = { "im_insertplace", /* Name */ "draw image sub inside image main at position (x,y)", 0, /* Flags */ insertplace_vec, /* Dispatch function */ IM_NUMBER( insertplace_args ), /* Size of arg list */ insertplace_args /* Arg list */ }; /* Used to be called im_remainderconst_vec, stupidly. */ static int remainderconst_vec_vec( im_object *argv ) { im_doublevec_object *dv = (im_doublevec_object *) argv[2]; return( im_remainder_vec( argv[0], argv[1], dv->n, dv->vec ) ); } static im_arg_desc remainderconst_vec_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "x" ) }; static im_function remainderconst_vec_desc = { "im_remainderconst_vec", /* Name */ N_( "remainder after integer division by a vector of constants" ), /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ remainderconst_vec_vec, /* Dispatch function */ IM_NUMBER( remainderconst_vec_args ),/* Size of arg list */ remainderconst_vec_args /* Arg list */ }; /* Args to im_mask2vips. */ static im_arg_desc mask2vips_args[] = { IM_INPUT_DMASK( "input" ), IM_OUTPUT_IMAGE( "output" ), }; /* Call im_mask2vips via arg vector. */ static int mask2vips_vec( im_object *argv ) { im_mask_object *mo = argv[0]; return( im_mask2vips( mo->mask, argv[1] ) ); } /* Description of im_mask2vips. */ static im_function mask2vips_desc = { "im_mask2vips", /* Name */ "convert DOUBLEMASK to VIPS image", 0, /* Flags */ mask2vips_vec, /* Dispatch function */ IM_NUMBER( mask2vips_args ), /* Size of arg list */ mask2vips_args /* Arg list */ }; /* Args to im_vips2mask. */ static im_arg_desc vips2mask_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_DMASK( "output" ), }; /* Call im_vips2mask via arg vector. */ static int vips2mask_vec( im_object *argv ) { im_mask_object *mo = argv[1]; if( !(mo->mask = im_vips2mask( argv[0], mo->name )) ) return( -1 ); return( 0 ); } /* Description of im_vips2mask. */ static im_function vips2mask_desc = { "im_vips2mask", /* Name */ "convert VIPS image to DOUBLEMASK", 0, /* Flags */ vips2mask_vec, /* Dispatch function */ IM_NUMBER( vips2mask_args ), /* Size of arg list */ vips2mask_args /* Arg list */ }; /* One image plus one constant in, one image out. */ static im_arg_desc int_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "c" ) }; /* One image plus one constant in, one image out. */ static im_arg_desc double_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "c" ) }; /* One image plus doublevec in, one image out. */ static im_arg_desc vec_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLEVEC( "vec" ) }; /* Call im_andimage via arg vector. */ static int andimage_vec( im_object *argv ) { return( im_andimage( argv[0], argv[1], argv[2] ) ); } /* Description of im_andimage. */ static im_function andimage_desc = { "im_andimage", /* Name */ "bitwise and of two images", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ andimage_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_andimageconst via arg vector. */ static int andimageconst_vec( im_object *argv ) { int c = *((int *) argv[2]); return( im_andimageconst( argv[0], argv[1], c ) ); } /* Description of im_andconst. */ static im_function andimageconst_desc = { "im_andimageconst", /* Name */ "bitwise and of an image with a constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ andimageconst_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_andimage_vec via arg vector. */ static int andimage_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_andimage_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_andimageconst. */ static im_function andimage_vec_desc = { "im_andimage_vec", /* Name */ "bitwise and of an image with a vector constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ andimage_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_orimage via arg vector. */ static int orimage_vec( im_object *argv ) { return( im_orimage( argv[0], argv[1], argv[2] ) ); } /* Description of im_orimage. */ static im_function orimage_desc = { "im_orimage", /* Name */ "bitwise or of two images", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ orimage_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_orimageconst via arg vector. */ static int orimageconst_vec( im_object *argv ) { int c = *((int *) argv[2]); return( im_orimageconst( argv[0], argv[1], c ) ); } /* Description of im_orimageconst. */ static im_function orimageconst_desc = { "im_orimageconst", /* Name */ "bitwise or of an image with a constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ orimageconst_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_orimage_vec via arg vector. */ static int orimage_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_orimage_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_orimage_vec. */ static im_function orimage_vec_desc = { "im_orimage_vec", /* Name */ "bitwise or of an image with a vector constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ orimage_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_eorimage via arg vector. */ static int eorimage_vec( im_object *argv ) { return( im_eorimage( argv[0], argv[1], argv[2] ) ); } /* Description of im_eorimage. */ static im_function eorimage_desc = { "im_eorimage", /* Name */ "bitwise eor of two images", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ eorimage_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_eorimageconst via arg vector. */ static int eorimageconst_vec( im_object *argv ) { int c = *((int *) argv[2]); return( im_eorimageconst( argv[0], argv[1], c ) ); } /* Description of im_eorimageconst. */ static im_function eorimageconst_desc = { "im_eorimageconst", /* Name */ "bitwise eor of an image with a constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ eorimageconst_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_eorimage_vec via arg vector. */ static int eorimage_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_eorimage_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_eorimage_vec. */ static im_function eorimage_vec_desc = { "im_eorimage_vec", /* Name */ "bitwise eor of an image with a vector constant", IM_FN_PTOP | IM_FN_PIO, /* Flags */ eorimage_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_shiftleft via arg vector. */ static int shiftleft_vec( im_object *argv ) { int n = *((int *) argv[2]); return( im_shiftleft( argv[0], argv[1], n ) ); } /* Description of im_shiftleft. */ static im_function shiftleft_desc = { "im_shiftleft", /* Name */ "shift image n bits to left", IM_FN_PTOP | IM_FN_PIO, /* Flags */ shiftleft_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_shiftleft_vec via arg vector. */ static int shiftleft_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_shiftleft_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_shiftleft_vec. */ static im_function shiftleft_vec_desc = { "im_shiftleft_vec", /* Name */ "shift image array bits to left", IM_FN_PTOP | IM_FN_PIO, /* Flags */ shiftleft_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_shiftright via arg vector. */ static int shiftright_vec( im_object *argv ) { int n = *((int *) argv[2]); return( im_shiftright( argv[0], argv[1], n ) ); } /* Description of im_shiftright. */ static im_function shiftright_desc = { "im_shiftright", /* Name */ "shift integer image n bits to right", IM_FN_PTOP | IM_FN_PIO, /* Flags */ shiftright_vec, /* Dispatch function */ IM_NUMBER( int_in_one_out ), /* Size of arg list */ int_in_one_out /* Arg list */ }; /* Call im_shiftright_vec via arg vector. */ static int shiftright_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_shiftright_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_shiftright_vec. */ static im_function shiftright_vec_desc = { "im_shiftright_vec", /* Name */ "shift image array bits to right", IM_FN_PTOP | IM_FN_PIO, /* Flags */ shiftright_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_equal via arg vector. */ static int equal_vec( im_object *argv ) { return( im_equal( argv[0], argv[1], argv[2] ) ); } /* Description of im_equal. */ static im_function equal_desc = { "im_equal", /* Name */ "two images equal in value", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ equal_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_equalconst via arg vector. */ static int equalconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_equalconst( argv[0], argv[1], c ) ); } /* Description of im_equalconst. */ static im_function equalconst_desc = { "im_equalconst", /* Name */ "image equals const", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ equalconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_equal_vec via arg vector. */ static int equal_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_equal_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_equal_vec. */ static im_function equal_vec_desc = { "im_equal_vec", /* Name */ "image equals doublevec", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ equal_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_notequal via arg vector. */ static int notequal_vec( im_object *argv ) { return( im_notequal( argv[0], argv[1], argv[2] ) ); } /* Description of im_notequal. */ static im_function notequal_desc = { "im_notequal", /* Name */ "two images not equal in value",/* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ notequal_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_notequalconst via arg vector. */ static int notequalconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_notequalconst( argv[0], argv[1], c ) ); } /* Description of im_notequalconst. */ static im_function notequalconst_desc = { "im_notequalconst", /* Name */ "image does not equal const", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ notequalconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_notequal_vec via arg vector. */ static int notequal_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_notequal_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_notequal_vec. */ static im_function notequal_vec_desc = { "im_notequal_vec", /* Name */ "image does not equal doublevec", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ notequal_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_less via arg vector. */ static int less_vec( im_object *argv ) { return( im_less( argv[0], argv[1], argv[2] ) ); } /* Description of im_less. */ static im_function less_desc = { "im_less", /* Name */ "in1 less than in2 in value", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ less_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_lessconst via arg vector. */ static int lessconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_lessconst( argv[0], argv[1], c ) ); } /* Description of im_lessconst. */ static im_function lessconst_desc = { "im_lessconst", /* Name */ "in less than const", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ lessconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_less_vec via arg vector. */ static int less_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_less_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_less_vec. */ static im_function less_vec_desc = { "im_less_vec", /* Name */ "in less than doublevec", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ less_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_more via arg vector. */ static int more_vec( im_object *argv ) { return( im_more( argv[0], argv[1], argv[2] ) ); } /* Description of im_more. */ static im_function more_desc = { "im_more", /* Name */ "in1 more than in2 in value", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ more_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_moreconst via arg vector. */ static int moreconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_moreconst( argv[0], argv[1], c ) ); } /* Description of im_moreconst. */ static im_function moreconst_desc = { "im_moreconst", /* Name */ "in more than const", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ moreconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_more_vec via arg vector. */ static int more_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_more_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_more_vec. */ static im_function more_vec_desc = { "im_more_vec", /* Name */ "in more than doublevec", /* Description */ IM_FN_PTOP | IM_FN_PIO, /* Flags */ more_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_moreeq via arg vector. */ static int moreeq_vec( im_object *argv ) { return( im_moreeq( argv[0], argv[1], argv[2] ) ); } /* Description of im_moreeq. */ static im_function moreeq_desc = { "im_moreeq", /* Name */ "in1 more than or equal to in2 in value", IM_FN_PTOP | IM_FN_PIO, /* Flags */ moreeq_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_moreeqconst via arg vector. */ static int moreeqconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_moreeqconst( argv[0], argv[1], c ) ); } /* Description of im_moreeqconst. */ static im_function moreeqconst_desc = { "im_moreeqconst", /* Name */ "in more than or equal to const", IM_FN_PTOP | IM_FN_PIO, /* Flags */ moreeqconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_moreeq_vec via arg vector. */ static int moreeq_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_moreeq_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_moreeq_vec. */ static im_function moreeq_vec_desc = { "im_moreeq_vec", /* Name */ "in more than or equal to doublevec", IM_FN_PTOP | IM_FN_PIO, /* Flags */ moreeq_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* Call im_lesseq via arg vector. */ static int lesseq_vec( im_object *argv ) { return( im_lesseq( argv[0], argv[1], argv[2] ) ); } /* Description of im_lesseq. */ static im_function lesseq_desc = { "im_lesseq", /* Name */ "in1 less than or equal to in2 in value", IM_FN_PTOP | IM_FN_PIO, /* Flags */ lesseq_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_lesseqconst via arg vector. */ static int lesseqconst_vec( im_object *argv ) { double c = *((double *) argv[2]); return( im_lesseqconst( argv[0], argv[1], c ) ); } /* Description of im_lesseqconst. */ static im_function lesseqconst_desc = { "im_lesseqconst", /* Name */ "in less than or equal to const", IM_FN_PTOP | IM_FN_PIO, /* Flags */ lesseqconst_vec, /* Dispatch function */ IM_NUMBER( double_in_one_out ), /* Size of arg list */ double_in_one_out /* Arg list */ }; /* Call im_lesseq_vec via arg vector. */ static int lesseq_vec_vec( im_object *argv ) { im_doublevec_object *rv = (im_doublevec_object *) argv[2]; return( im_lesseq_vec( argv[0], argv[1], rv->n, rv->vec ) ); } /* Description of im_lesseq_vec. */ static im_function lesseq_vec_desc = { "im_lesseq_vec", /* Name */ "in less than or equal to doublevec", IM_FN_PTOP | IM_FN_PIO, /* Flags */ lesseq_vec_vec, /* Dispatch function */ IM_NUMBER( vec_in_one_out ), /* Size of arg list */ vec_in_one_out /* Arg list */ }; /* If-then-else args. */ static im_arg_desc ifthenelse_args[] = { IM_INPUT_IMAGE( "cond" ), IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_blend via arg vector. */ static int blend_vec( im_object *argv ) { return( im_blend( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_blend. */ static im_function blend_desc = { "im_blend", /* Name */ "use cond image to blend between images in1 and in2", IM_FN_PTOP | IM_FN_PIO, /* Flags */ blend_vec, /* Dispatch function */ IM_NUMBER( ifthenelse_args ), /* Size of arg list */ ifthenelse_args /* Arg list */ }; /* Call im_ifthenelse via arg vector. */ static int ifthenelse_vec( im_object *argv ) { return( im_ifthenelse( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_ifthenelse. */ static im_function ifthenelse_desc = { "im_ifthenelse", /* Name */ "use cond image to choose pels from image in1 or in2", IM_FN_PTOP | IM_FN_PIO, /* Flags */ ifthenelse_vec, /* Dispatch function */ IM_NUMBER( ifthenelse_args ), /* Size of arg list */ ifthenelse_args /* Arg list */ }; /* Call im_argb2rgba() via arg vector. */ static int argb2rgba_vec( im_object *argv ) { return( im_argb2rgba( argv[0], argv[1] ) ); } /* Description of im_argb2rgba. */ static im_function argb2rgba_desc = { "im_argb2rgba", /* Name */ "convert pre-multipled argb to png-style rgba", /* Description */ IM_FN_PIO, /* Flags */ argb2rgba_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Package up all these functions. */ static im_function *deprecated_list[] = { &argb2rgba_desc, &flood_copy_desc, &flood_blob_copy_desc, &flood_other_copy_desc, &clip_desc, &c2ps_desc, &resize_linear_desc, &cmulnorm_desc, &fav4_desc, &gadd_desc, &icc_export_desc, &litecor_desc, &affine_desc, &clip2c_desc, &clip2cm_desc, &clip2d_desc, &clip2dcm_desc, &clip2f_desc, &clip2i_desc, &convsub_desc, &convf_desc, &convsepf_desc, &clip2s_desc, &clip2ui_desc, &insertplaceset_desc, &clip2us_desc, &print_desc, &slice_desc, &bernd_desc, &segment_desc, &line_desc, &thresh_desc, &convf_raw_desc, &conv_raw_desc, &contrast_surface_raw_desc, &convsepf_raw_desc, &convsep_raw_desc, &fastcor_raw_desc, &gradcor_raw_desc, &spcor_raw_desc, &lhisteq_raw_desc, &stdif_raw_desc, &rank_raw_desc, &dilate_raw_desc, &erode_raw_desc, &similarity_area_desc, &similarity_desc, &remainderconst_vec_desc, &mask2vips_desc, &vips2mask_desc, &insertplace_desc, &circle_desc, &andimage_desc, &andimageconst_desc, &andimage_vec_desc, &orimage_desc, &orimageconst_desc, &orimage_vec_desc, &eorimage_desc, &eorimageconst_desc, &eorimage_vec_desc, &shiftleft_vec_desc, &shiftleft_desc, &shiftright_vec_desc, &shiftright_desc, &blend_desc, &equal_desc, &equal_vec_desc, &equalconst_desc, &ifthenelse_desc, &less_desc, &less_vec_desc, &lessconst_desc, &lesseq_desc, &lesseq_vec_desc, &lesseqconst_desc, &more_desc, &more_vec_desc, &moreconst_desc, &moreeq_desc, &moreeq_vec_desc, &moreeqconst_desc, ¬equal_desc, ¬equal_vec_desc, ¬equalconst_desc, &quadratic_desc }; /* Package of functions. */ im_package im__deprecated = { "deprecated", IM_NUMBER( deprecated_list ), deprecated_list }; vips-8.2.2/libvips/deprecated/im_analyze2vips.c0000664000175000017500000000440212530402247016456 00000000000000/* Read a Analyze file. Old-style header (so called 7.5 format). * * 14/12/11 * - just a compat stub now */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include "../foreign/dbh.h" #include "../foreign/analyze2vips.h" static VipsFormatFlags analyze_flags( const char *filename ) { return( (VipsFormatFlags) vips_foreign_flags( "analyzeload", filename ) ); } static int isanalyze( const char *filename ) { return( vips_foreign_is_a( "analyzeload", filename ) ); } int im_analyze2vips( const char *filename, IMAGE *out ) { return( vips__analyze_read( filename, out ) ); return( 0 ); } static const char *analyze_suffs[] = { ".img", ".hdr", NULL }; typedef VipsFormat VipsFormatAnalyze; typedef VipsFormatClass VipsFormatAnalyzeClass; static void vips_format_analyze_class_init( VipsFormatAnalyzeClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "analyze"; object_class->description = _( "Analyze 6.0" ); format_class->is_a = isanalyze; format_class->load = im_analyze2vips; format_class->get_flags = analyze_flags; format_class->suffs = analyze_suffs; } static void vips_format_analyze_init( VipsFormatAnalyze *object ) { } G_DEFINE_TYPE( VipsFormatAnalyze, vips_format_analyze, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/im_lab_morph.c0000664000175000017500000001545712530402247016006 00000000000000/* Morph a lab image. * * 8/3/01 * - added * 2/11/09 * - cleanups * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include int im__colour_unary( const char *domain, IMAGE *in, IMAGE *out, VipsType type, im_wrapone_fn buffer_fn, void *a, void *b ) { IMAGE *t[1]; if( im_check_uncoded( domain, in ) || im_check_bands( domain, in, 3 ) || im_open_local_array( out, t, 1, domain, "p" ) || im_clip2fmt( in, t[0], IM_BANDFMT_FLOAT ) ) return( -1 ); if( im_cp_desc( out, t[0] ) ) return( -1 ); out->Type = type; if( im_wrapone( t[0], out, (im_wrapone_fn) buffer_fn, a, b ) ) return( -1 ); return( 0 ); } typedef struct { IMAGE *in, *out; double L_scale, L_offset; double a_offset[101], b_offset[101]; double a_scale, b_scale; } Params; static int morph_init( Params *parm, IMAGE *in, IMAGE *out, double L_scale, double L_offset, DOUBLEMASK *mask, double a_scale, double b_scale ) { int i, j; parm->in = in; parm->out = out; parm->L_scale = L_scale; parm->L_offset = L_offset; parm->a_scale = a_scale; parm->b_scale = b_scale; if( mask->xsize != 3 || mask->ysize < 1 || mask->ysize > 100 ) { im_error( "im_lab_morph", "%s", _( "bad greyscale mask size" ) ); return( -1 ); } for( i = 0; i < mask->ysize; i++ ) { double L = mask->coeff[i*3]; double a = mask->coeff[i*3 + 1]; double b = mask->coeff[i*3 + 2]; if( L < 0 || L > 100 || a < -120 || a > 120 || b < -120 || b > 120 ) { im_error( "im_lab_morph", _( "bad greyscale mask value, row %d" ), i ); return( -1 ); } } /* Generate a/b offsets. */ for( i = 0; i <= 100; i++ ) { double L_low = 0; double a_low = 0; double b_low = 0; double L_high = 100; double a_high = 0; double b_high = 0; /* Search for greyscale L just below i. Don't assume sorted by * L*. */ for( j = 0; j < mask->ysize; j++ ) { double L = mask->coeff[j*3]; double a = mask->coeff[j*3 + 1]; double b = mask->coeff[j*3 + 2]; if( L < i && L > L_low ) { L_low = L; a_low = a; b_low = b; } } /* Search for greyscale L just above i. */ for( j = mask->ysize - 1; j >= 0; j-- ) { double L = mask->coeff[j*3]; double a = mask->coeff[j*3 + 1]; double b = mask->coeff[j*3 + 2]; if( L >= i && L < L_high ) { L_high = L; a_high = a; b_high = b; } } /* Interpolate. */ parm->a_offset[i] = a_low + (a_high - a_low) * ((i - L_low) / (L_high - L_low)); parm->b_offset[i] = b_low + (b_high - b_low) * ((i - L_low) / (L_high - L_low)); } return( 0 ); } static void morph_buffer( float *in, float *out, int width, Params *parm ) { int x; for( x = 0; x < width; x++ ) { double L = in[0]; double a = in[1]; double b = in[2]; L = IM_CLIP( 0, L, 100 ); a -= parm->a_offset[(int) L]; b -= parm->b_offset[(int) L]; L = (L + parm->L_offset) * parm->L_scale; L = IM_CLIP( 0, L, 100 ); a *= parm->a_scale; b *= parm->b_scale; out[0] = L; out[1] = a; out[2] = b; in += 3; out += 3; } } /** * im_lab_morph: * @in: input image * @out: output image * @mask: cast correction table * @L_offset: L adjustment * @L_scale: L adjustment * @a_scale: a scale * @b_scale: b scale * * Morph an image in CIELAB colour space. Useful for certain types of gamut * mapping, or correction of greyscales on some printers. * * We perform three adjustments: * * * * * cast * * Pass in @mask containing CIELAB readings for a neutral greyscale. For * example: * * * * * 3 * 4 * * * 14.23 * 4.8 * -3.95 * * * 18.74 * 2.76 * -2.62 * * * 23.46 * 1.4 * -1.95 * * * 27.53 * 1.76 * -2.01 * * * * * Interpolation from this makes cast corrector. The top and tail are * interpolated towards [0, 0, 0] and [100, 0, 0], intermediate values are * interpolated along straight lines fitted between the specified points. * Rows may be in any order (ie. they need not be sorted on L*). * * Each pixel is displaced in a/b by the amount specified for that L in the * table. * * * * * L* * * Pass in scale and offset for L. L' = (L + offset) * scale. * * * * * saturation * * scale a and b by these amounts, eg. 1.5 increases saturation. * * * * * Find the top two by generating and printing a greyscale. Find the bottom * by printing a Macbeth and looking at a/b spread * * Returns: 0 on success, -1 on error. */ int im_lab_morph( IMAGE *in, IMAGE *out, DOUBLEMASK *mask, double L_offset, double L_scale, double a_scale, double b_scale ) { Params *parm; /* Recurse for coded images. */ if( in->Coding == IM_CODING_LABQ ) { IMAGE *t[2]; if( im_open_local_array( out, t, 2, "im_lab_morph", "p" ) || im_LabQ2Lab( in, t[0] ) || im_lab_morph( t[0], t[1], mask, L_offset, L_scale, a_scale, b_scale ) || im_Lab2LabQ( t[1], out ) ) return( -1 ); return( 0 ); } if( !(parm = IM_NEW( out, Params )) || morph_init( parm, in, out, L_scale, L_offset, mask, a_scale, b_scale ) ) return( -1 ); return( im__colour_unary( "im_lab_morph", in, out, IM_TYPE_LAB, (im_wrapone_fn) morph_buffer, parm, NULL ) ); } vips-8.2.2/libvips/deprecated/im_matmul.c0000664000175000017500000000444412530402247015334 00000000000000/* Multiply two matrices. * * Copyright: 1990, K. Martinez and J. Cupitt * * 23/10/10 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** * im_matmul: * @in1: input matrix * @in2: input matrix * @filename: name for output matrix * * Multiplies two DOUBLEMASKs. Result matrix is made and returned. * Pass the filename to set for the output. * * The scale and offset members of @in1 and @in2 are ignored. * * See also: im_mattrn(), im_matinv(). * * Returns: the result matrix on success, or %NULL on error. */ DOUBLEMASK * im_matmul( DOUBLEMASK *in1, DOUBLEMASK *in2, const char *name ) { int xc, yc, col; double sum; DOUBLEMASK *mat; double *out, *a, *b; double *s1, *s2; /* Check matrix sizes. */ if( in1->xsize != in2->ysize ) { im_error( "im_matmul", "%s", _( "bad sizes" ) ); return( NULL ); } /* Allocate output matrix. */ if( !(mat = im_create_dmask( name, in2->xsize, in1->ysize )) ) return( NULL ); /* Multiply. */ out = mat->coeff; s1 = in1->coeff; for( yc = 0; yc < in1->ysize; yc++ ) { s2 = in2->coeff; for( col = 0; col < in2->xsize; col++ ) { /* Get ready to sweep a row. */ sum = 0.0; a = s1; b = s2; for( sum = 0.0, xc = 0; xc < in1->xsize; xc++ ) { sum += *a++ * *b; b += in2->xsize; } *out++ = sum; s2++; } s1 += in1->xsize; } return( mat ); } vips-8.2.2/libvips/deprecated/im_thresh.c0000664000175000017500000000643012530402247015327 00000000000000/* @(#) Thresholds an image. Works for any non-complex type. * @(#) Output is a binary image with 0 and 255 only * @(#) Input is either memory mapped or in a buffer. * @(#) * @(#) int im_thresh(imin, imout, threshold) * @(#) IMAGE *imin, *imout; * @(#) double threshold; * @(#) * @(#) Returns 0 on success and -1 on error * * Copyright: 1991, N. Dessipris, J Cupitt * * Author: N. Dessipris, J. Cupitt * Written on: 15/03/1991 * Modified on : */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* Useful: Call a macro with the name, type pairs for all VIPS functions. */ #define BRIGHT 255 #define DARK 0 #define im_for_all_types(A) \ case IM_BANDFMT_UCHAR: A(unsigned char); break; \ case IM_BANDFMT_CHAR: A(signed char); break; \ case IM_BANDFMT_USHORT: A(unsigned short); break; \ case IM_BANDFMT_SHORT: A(signed short); break; \ case IM_BANDFMT_UINT: A(unsigned int); break; \ case IM_BANDFMT_INT: A(signed int); break; \ case IM_BANDFMT_FLOAT: A(float); break; \ case IM_BANDFMT_DOUBLE: A(double); break; /* Replacement for im_thresh */ int im_thresh( in, out, threshold ) IMAGE *in, *out; double threshold; { int x, y; PEL *bu; /* Buffer we write to */ int s, epl; /* Size and els per line */ /* Check our args. */ if( im_iocheck( in, out ) ) return( -1 ); if( in->Coding != IM_CODING_NONE ) { im_error( "im_thresh", "%s", _( "input should be uncoded") ); return(-1); } /* Set up the output header. */ if( im_cp_desc( out, in ) ) return( -1 ); out->BandFmt = IM_BANDFMT_UCHAR; if( im_setupout( out ) ) return( -1 ); /* Make buffer for building o/p in. */ epl = in->Xsize * in->Bands; s = epl * sizeof( PEL ); if( (bu = (PEL *) im_malloc( out, (unsigned)s )) == NULL ) return( -1 ); /* Define what we do for each band element type. */ #define im_thresh_loop(TYPE)\ { TYPE *a = (TYPE *) in->data;\ \ for( y = 0; y < in->Ysize; y++ ) {\ PEL *b = bu;\ \ for( x = 0; x < epl; x++ ) {\ double f = (double) *a++;\ if ( f >= threshold)\ *b++ = (PEL)BRIGHT;\ else\ *b++ = (PEL)DARK;\ }\ \ if( im_writeline( y, out, bu ) ) \ return( -1 );\ }\ } /* Do the above for all image types. */ switch( in->BandFmt ) { im_for_all_types( im_thresh_loop ); default: im_error( "im_thresh", "%s", _( "Unknown input format") ); return( -1 ); } return( 0 ); } vips-8.2.2/libvips/deprecated/im_litecor.c0000664000175000017500000001635312530402247015500 00000000000000/* @(#) Function to perform lighting correction. * @(#) One band IM_BANDFMT_UCHAR images only. Always writes UCHAR. * @(#) * @(#) Function im_litecor() assumes that imin * @(#) is either memory mapped or in a buffer. * @(#) * @(#) int im_litecor(in, w, out, clip, factor) * @(#) IMAGE *in, *w, *out; * @(#) int clip; * @(#) double factor; * @(#) * @(#) clip==1 * @(#) - Compute max(white)*factor*(image/white), Clip to 255. * @(#) clip==0 * @(#) - Compute factor for you. * @(#) * @(#) * @(#) * @(#) * @(#) Returns 0 on success and -1 on error * * Copyright: 1990, J. Cupitt, 1991 N. Dessipris * * Author: J. Cupitt, N. Dessipris * Written on: 02/08/1990 * Modified on : 6/11/1991, by ND to produce a UCHAR output * 1/4/93 J.Cupitt * - bugs if white is smaller than image fixed * - im_warning() now called * - clip==0 case not tested or changed! do not use! */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* If maximum output is > 255 scale output between minout and maxout, * by normalising maxout to 255. * If maximum output is < 255 do the light correction without scaling */ static int im_litecor0( IMAGE *in, IMAGE *white, IMAGE *out ) { PEL *p, *w; PEL *q, *bu; int c; int x, y; float xrat = (float) in->Xsize / white->Xsize; float yrat = (float) in->Ysize / white->Ysize; int xstep = (int) xrat; int ystep = (int) yrat; double max; int wtmp, maxw, maxout, temp; /* Check white is some simple multiple of image. */ if( xrat < 1.0 || xrat != xstep || yrat < 1.0 || yrat != ystep ) { im_error( "im_litecor", "white not simple scale of image" ); return( -1 ); } /* Find the maximum of the white. */ if( im_max( white, &max ) ) return( -1 ); maxw = (int)max; /* Set up the output header. */ if( im_cp_desc( out, in ) ) return( -1 ); if( im_setupout( out ) ) return( -1 ); /* Make buffer for outputting to. */ if( !(bu = (PEL *) im_malloc( out, out->Xsize )) ) return( -1 ); /* Find largest value we might generate if factor == 1.0 */ maxout = -1; p = (PEL *) in->data; for( y = 0; y < in->Ysize; y++ ) { /* Point w to the start of the line in the white * corresponding to the line we are about to correct. c counts * up to xstep; each time it wraps, we should move w on one. */ w = (PEL *) (white->data + white->Xsize * (int)(y/ystep)); c = 0; /* Scan along line. */ for( x = 0; x < out->Xsize; x++ ) { wtmp = (int)*w; temp = ( maxw * (int) *p++ + (wtmp>>1) ) / wtmp; if (temp > maxout ) maxout = temp; /* Move white pointer on if necessary. */ c++; if( c == xstep ) { w++; c = 0; } } } /* Do exactly the same as above by scaling the result with respect to * maxout */ p = (PEL *) in->data; if (maxout <= 255 ) /* no need for rescaling output */ { for( y = 0; y < in->Ysize; y++ ) { q = bu; w = (PEL *) (white->data + white->Xsize * (int)(y/ystep)); c = 0; /* Scan along line. */ for( x = 0; x < in->Xsize; x++ ) { wtmp = (int)*w; *q++ = (PEL) ( ( maxw * (int) *p++ + (wtmp>>1) ) / wtmp ); /* Move white pointer on if necessary. */ c++; if( c == xstep ) { w++; c = 0; } } if( im_writeline( y, out, bu ) ) { im_error("im_litecor", "im_writeline failed"); return( -1 ); } } } else /* rescale output wrt maxout */ { for( y = 0; y < in->Ysize; y++ ) { q = bu; w = (PEL *) (white->data + white->Xsize * (int)(y/ystep)); c = 0; /* Scan along line. */ for( x = 0; x < in->Xsize; x++ ) { wtmp = maxout * ((int)*w); *q++ = (PEL) ( ( maxw * (int) *p++ * 255 + (wtmp>>1)) / wtmp ); /* Move white pointer on if necessary. */ c++; if( c == xstep ) { w++; c = 0; } } if( im_writeline( y, out, bu ) ) { im_error("im_litecor", "im_writeline failed"); return( -1 ); } } } return( 0 ); } /* Clip all corrected values above 255, if any. */ static int im_litecor1( IMAGE *in, IMAGE *white, IMAGE *out, double factor ) { PEL *p, *w; PEL *q, *bu; int c; int x, y; float xrat = (float) in->Xsize / white->Xsize; float yrat = (float) in->Ysize / white->Ysize; int xstep = (int) xrat; int ystep = (int) yrat; double max; double maxw, temp; int nclipped = 0; /* Check white is some simple multiple of image. */ if( xrat < 1.0 || xrat != xstep || yrat < 1.0 || yrat != ystep ) { im_error( "im_litecor", "white not simple scale of image" ); return( -1 ); } /* Find the maximum of the white. */ if( im_max( white, &max ) ) return( -1 ); maxw = max; /* Set up the output header. */ if( im_cp_desc( out, in ) ) return( -1 ); if( im_setupout( out ) ) return( -1 ); /* Make buffer we write to. */ if( !(bu = (PEL *) im_malloc( out, out->Xsize )) ) return( -1 ); /* Loop through sorting max output */ p = (PEL *) in->data; for( y = 0; y < in->Ysize; y++ ) { q = bu; w = (PEL *) (white->data + white->Xsize * (int)(y / ystep)); c = 0; for( x = 0; x < out->Xsize; x++ ) { temp = ((factor * maxw * (int) *p++)/((int) *w)) + 0.5; if( temp > 255.0 ) { temp = 255; nclipped++; } *q++ = temp; /* Move white pointer on if necessary. */ c++; if( c == xstep ) { w++; c = 0; } } if( im_writeline( y, out, bu ) ) return( -1 ); } if( nclipped ) im_warn( "im_litecor", "%d pels over 255 clipped", nclipped ); return( 0 ); } /* Lighting correction. One band uchar images only. * Assumes the white is some simple multiple of the image in size; ie. the * white has been taken with some smaller or equal set of resolution * parameters. */ int im_litecor( IMAGE *in, IMAGE *white, IMAGE *out, int clip, double factor ) { /* Check our args. */ if( im_iocheck( in, out ) ) return( -1 ); if( in->Bands != 1 || in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_litecor", "bad input format" ); return( -1 ); } if( white->Bands != 1 || white->Coding != IM_CODING_NONE || white->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_litecor", "bad white format" ); return( -1 ); } switch( clip ) { case 1: return( im_litecor1( in, white, out, factor ) ); case 0: return( im_litecor0( in, white, out ) ); default: im_error( "im_litecor", "unknown flag %d", clip ); return( -1 ); } } vips-8.2.2/libvips/deprecated/resample_dispatch.c0000664000175000017500000001373012530402247017035 00000000000000/* Function dispatch tables for mosaicing. * * J. Cupitt, 23/2/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* Args to im_rightshift_size. */ static im_arg_desc rightshift_size_args[] = { IM_INPUT_IMAGE ("in"), IM_OUTPUT_IMAGE ("out"), IM_INPUT_INT ("xshift"), IM_INPUT_INT ("yshift"), IM_INPUT_INT ("band_fmt") }; /* Call im_rightshift_size via arg vector. */ static int rightshift_size_vec (im_object * argv) { IMAGE *in = (IMAGE *) argv[0]; IMAGE *out = (IMAGE *) argv[1]; int *xshift = (int *) argv[2]; int *yshift = (int *) argv[3]; int *band_fmt = (int *) argv[4]; return im_rightshift_size (in, out, *xshift, *yshift, *band_fmt ); } /* Description of im_rightshift_size. */ static im_function rightshift_size_desc = { "im_rightshift_size", /* Name */ "decrease size by a power-of-two factor", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ rightshift_size_vec, /* Dispatch function */ IM_NUMBER (rightshift_size_args), /* Size of arg list */ rightshift_size_args /* Arg list */ }; /* affinei args */ static im_arg_desc affinei_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INTERPOLATE( "interpolate" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "c" ), IM_INPUT_DOUBLE( "d" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "w" ), IM_INPUT_INT( "h" ) }; /* Call im_affinei via arg vector. */ static int affinei_vec( im_object *argv ) { VipsInterpolate *interpolate = VIPS_INTERPOLATE( argv[2] ); double a = *((double *) argv[3]); double b = *((double *) argv[4]); double c = *((double *) argv[5]); double d = *((double *) argv[6]); double dx = *((double *) argv[7]); double dy = *((double *) argv[8]); int x = *((int *) argv[9]); int y = *((int *) argv[10]); int w = *((int *) argv[11]); int h = *((int *) argv[12]); return( im_affinei( argv[0], argv[1], interpolate, a, b, c, d, dx, dy, x, y, w, h ) ); } /* Description of im_affinei. */ static im_function affinei_desc = { "im_affinei", /* Name */ "affine transform", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ affinei_vec, /* Dispatch function */ IM_NUMBER( affinei_args ), /* Size of arg list */ affinei_args /* Arg list */ }; /* affinei_all args */ static im_arg_desc affinei_all_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INTERPOLATE( "interpolate" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "c" ), IM_INPUT_DOUBLE( "d" ), IM_INPUT_DOUBLE( "dx" ), IM_INPUT_DOUBLE( "dy" ) }; /* Call im_affinei_all via arg vector. */ static int affinei_all_vec( im_object *argv ) { VipsInterpolate *interpolate = VIPS_INTERPOLATE( argv[2] ); double a = *((double *) argv[3]); double b = *((double *) argv[4]); double c = *((double *) argv[5]); double d = *((double *) argv[6]); double dx = *((double *) argv[7]); double dy = *((double *) argv[8]); return( im_affinei_all( argv[0], argv[1], interpolate, a, b, c, d, dx, dy ) ); } /* Description of im_affinei_all. */ static im_function affinei_all_desc = { "im_affinei_all", /* Name */ "affine transform of whole image", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ affinei_all_vec, /* Dispatch function */ IM_NUMBER( affinei_all_args ), /* Size of arg list */ affinei_all_args /* Arg list */ }; /* Args for im_shrink. */ static im_arg_desc shrink_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "xfac" ), IM_INPUT_DOUBLE( "yfac" ) }; /* Call im_shrink via arg vector. */ static int shrink_vec( im_object *argv ) { double xshrink = *((double *) argv[2]); double yshrink = *((double *) argv[3]); return( im_shrink( argv[0], argv[1], xshrink, yshrink ) ); } /* Description of im_shrink. */ static im_function shrink_desc = { "im_shrink", /* Name */ "shrink image by xfac, yfac times", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ shrink_vec, /* Dispatch function */ IM_NUMBER( shrink_args ), /* Size of arg list */ shrink_args /* Arg list */ }; /* Args to im_stretch3. */ static im_arg_desc stretch3_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "xdisp" ), IM_INPUT_DOUBLE( "ydisp" ) }; /* Call im_stretch3 via arg vector. */ static int stretch3_vec( im_object *argv ) { double xdisp = *((int *) argv[2]); double ydisp = *((int *) argv[3]); return( im_stretch3( argv[0], argv[1], xdisp, ydisp ) ); } /* Description of im_stretch3. */ static im_function stretch3_desc = { "im_stretch3", /* Name */ "stretch 3%, sub-pixel displace by xdisp/ydisp", IM_FN_PIO, /* Flags */ stretch3_vec, /* Dispatch function */ IM_NUMBER( stretch3_args ), /* Size of arg list */ stretch3_args /* Arg list */ }; /* Package up all these functions. */ static im_function *resample_list[] = { &rightshift_size_desc, &shrink_desc, &stretch3_desc, &affinei_desc, &affinei_all_desc }; /* Package of functions. */ im_package im__resample = { "resample", IM_NUMBER( resample_list ), resample_list }; vips-8.2.2/libvips/deprecated/im_fav4.c0000664000175000017500000000442712530402247014676 00000000000000/* @(#) Optimised 4 frame average Copyright (C) 1992, Kirk Martinez, History of Art Dept, Birkbeck College */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #define ARGS "fav4: frame average 4 frames\nARGS: im1 im2 im3 im4 outfile" #define NFRAMES 4 /** * im_fav4: * @in: array of 4 input #IMAGE s * @out: output #IMAGE * * Average four identical images. * * Deprecated. */ int im_fav4( IMAGE **in, IMAGE *out) { PEL *result, *buffer, *p1, *p2, *p3, *p4; int x,y; int linebytes, PICY; /* check IMAGEs parameters */ if(im_iocheck(in[1], out)) return(-1); /* BYTE images only! */ if( (in[0]->BandFmt != IM_BANDFMT_CHAR) && (in[0]->BandFmt != IM_BANDFMT_UCHAR)) return(-1); if ( im_cp_desc(out, in[1]) == -1) /* copy image descriptors */ return(-1); if ( im_setupout(out) == -1) return(-1); linebytes = in[0]->Xsize * in[0]->Bands; PICY = in[0]->Ysize; buffer = (PEL*)im_malloc(NULL,linebytes); memset(buffer, 0, linebytes); p1 = (PEL*)in[0]->data; p2 = (PEL*)in[1]->data; p3 = (PEL*)in[2]->data; p4 = (PEL*)in[3]->data; for (y = 0; y < PICY; y++) { result = buffer; /* average 4 pels with rounding, for whole line*/ for (x = 0; x < linebytes; x++) { *result++ = (PEL)((int)((int)*p1++ + (int)*p2++ + (int)*p3++ + (int)*p4++ +2) >> 2); } im_writeline(y,out, buffer); } im_free(buffer); return(0); } vips-8.2.2/libvips/deprecated/im_jpeg2vips.c0000664000175000017500000001076012605514112015742 00000000000000/* Convert 1 or 3-band 8-bit VIPS images to/from JPEG. * * 30/11/11 * - now just a stub * 10/7/12 * - use jpeg funcs directly rather than going though vips_jpegload() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #ifdef HAVE_JPEG #include "../foreign/vipsjpeg.h" #endif /*HAVE_JPEG*/ static int jpeg2vips( const char *name, IMAGE *out, gboolean header_only ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q; int shrink; int seq; gboolean fail_on_warn; /* By default, we ignore any warnings. We want to get as much of * the user's data as we can. */ fail_on_warn = FALSE; /* Parse the filename. */ im_filename_split( name, filename, mode ); p = &mode[0]; shrink = 1; seq = 0; if( (q = im_getnextoption( &p )) ) { shrink = atoi( q ); if( shrink != 1 && shrink != 2 && shrink != 4 && shrink != 8 ) { im_error( "im_jpeg2vips", _( "bad shrink factor %d" ), shrink ); return( -1 ); } } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "fail", q ) ) fail_on_warn = TRUE; } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "seq", q ) ) seq = 1; } /* Don't use vips_jpegload() ... we call the jpeg func directly in * order to avoid the foreign.c mechanisms for load-via-disc and stuff * like that. */ /* We need to be compatible with the pre-sequential mode * im_jpeg2vips(). This returned a "t" if given a "p" image, since it * used writeline. * * If we're writing the image to a "p", switch it to a "t". */ if( !header_only && !seq && out->dtype == VIPS_IMAGE_PARTIAL ) { if( vips__image_wio_output( out ) ) return( -1 ); } #ifdef HAVE_JPEG if( vips__jpeg_read_file( filename, out, header_only, shrink, fail_on_warn, TRUE, FALSE ) ) return( -1 ); #else vips_error( "im_jpeg2vips", "%s", _( "no JPEG support in your libvips" ) ); return( -1 ); #endif /*HAVE_JPEG*/ return( 0 ); } int im_jpeg2vips( const char *name, IMAGE *out ) { return( jpeg2vips( name, out, FALSE ) ); } /* By having a separate header func, we get lazy.c to open via disc/mem. */ static int im_jpeg2vips_header( const char *name, IMAGE *out ) { return( jpeg2vips( name, out, TRUE ) ); } int im_bufjpeg2vips( void *buf, size_t len, IMAGE *out, gboolean header_only ) { VipsImage *t; /* header_only is now automatic ... this call will only decompress on * pixel access. */ if( vips_jpegload_buffer( buf, len, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int isjpeg( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( vips_foreign_is_a( "jpegload", filename ) ); } static const char *jpeg_suffs[] = { ".jpg", ".jpeg", ".jpe", NULL }; /* jpeg format adds no new members. */ typedef VipsFormat VipsFormatJpeg; typedef VipsFormatClass VipsFormatJpegClass; static void vips_format_jpeg_class_init( VipsFormatJpegClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "jpeg"; object_class->description = _( "JPEG" ); format_class->is_a = isjpeg; format_class->header = im_jpeg2vips_header; format_class->load = im_jpeg2vips; format_class->save = im_vips2jpeg; format_class->suffs = jpeg_suffs; } static void vips_format_jpeg_init( VipsFormatJpeg *object ) { } G_DEFINE_TYPE( VipsFormatJpeg, vips_format_jpeg, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/im_simcontr.c0000664000175000017500000000642012530402247015667 00000000000000/* creates a pattern showing the similtaneous constrast effect * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 19/07/1991 * Modified on: * 22/7/93 JC * - externs removed * - im_outcheck() added * 1/2/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /** * im_simcontr: * @out: output image * @xsize: image size * @ysize: image size * * Creates a pattern showing the similtaneous constrast effect. * * See also: im_eye(). * * Returns: 0 on success, -1 on error */ int im_simcontr( IMAGE *out, int xsize, int ysize ) { int x, y; unsigned char *line1, *line2, *cpline; /* Check input args */ if( im_outcheck( out ) ) return( -1 ); /* Set now image properly */ im_initdesc(out, xsize, ysize, 1, IM_BBITS_BYTE, IM_BANDFMT_UCHAR, IM_CODING_NONE, IM_TYPE_B_W, 1.0, 1.0, 0, 0 ); /* Set up image checking whether the output is a buffer or a file */ if (im_setupout( out ) == -1 ) return( -1 ); /* Create data */ line1 = (unsigned char *)calloc((unsigned)xsize, sizeof(char)); line2 = (unsigned char *)calloc((unsigned)xsize, sizeof(char)); if ( (line1 == NULL) || (line2 == NULL) ) { im_error( "im_simcontr", "%s", _( "calloc failed") ); return(-1); } cpline = line1; for (x=0; x #endif /*HAVE_CONFIG_H*/ #include #include int im_vips2csv( IMAGE *in, const char *filename ) { char *separator = "\t"; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q, *r; /* Parse mode string. */ im_filename_split( filename, name, mode ); p = &mode[0]; while( (q = im_getnextoption( &p )) ) { if( im_isprefix( "sep", q ) && (r = im_getsuboption( q )) ) separator = r; } if( vips_csvsave( in, name, "separator", separator, NULL ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/deprecated/matalloc.c0000664000175000017500000001105212530402247015135 00000000000000/* @(#) Programs for allocating and freeing matrices * @(#) pages 705- of numerical recipes in C 1998 * @(#) */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #define TINY 1.0e-200 /* @(#) Allocates and returns an pointer at the beginning of * @(#) an integer array array[nl,nh] or * @(#) float array array[nl,nh] or * @(#) double array array[nl,nh] * @(#) * @(#) Right call * @(#) int *im_ivector(nl, nh) * @(#) int nl, nh; * @(#) returns a pointer to an int array or NULL on error * @(#) * @(#) Right call * @(#) float *im_fvector(nl, nh) * @(#) int nl, nh; * @(#) returns a pointer to a float array or NULL on error * @(#) * @(#) Right call * @(#) double *im_dvector(nl, nh) * @(#) int nl, nh; * @(#) returns a pointer to a double array or NULL on error * @(#) * @(#) The following functions free the array allocated by the functions above * @(#) * @(#) void im_free_ivector(v, nl, nh) * @(#) int *v; * @(#) int nl, nh; * @(#) * @(#) void im_free_fvector(v, nl, nh) * @(#) float *v; * @(#) int nl, nh; * @(#) * @(#) void im_free_dvector(v, nl, nh) * @(#) double *v; * @(#) int nl, nh; * @(#) */ int * im_ivector(int nl, int nh) { int *v; v = (int *)im_malloc(NULL,(unsigned)(nh - nl + 1) * sizeof(int)); if (v == NULL) return(NULL); else return(v-nl); } float *im_fvector(int nl, int nh) { float *v; v = (float *)im_malloc(NULL,(unsigned)(nh - nl + 1) * sizeof(float)); if (v == NULL) return(NULL); else return(v-nl); } double *im_dvector(int nl, int nh) { double *v; v = (double *)im_malloc(NULL,(unsigned)(nh - nl + 1) * sizeof(double)); if (v == NULL) return(NULL); else return(v-nl); } void im_free_ivector(int *v, int nl, int nh) { im_free((char*) (v+nl)); } void im_free_fvector(float *v, int nl, int nh) { im_free((char*) (v+nl)); } void im_free_dvector(double *v, int nl, int nh) { im_free((char*) (v+nl)); } /* @(#) Allocates and returns an pointer at the beginning of * @(#) an int, float or double, two dimensional matrix[nrl,nrh][ncl,nch] * @(#) * @(#) Right call * @(#) int **im_imat_alloc(nrl, nrh, ncl, nch) * @(#) int nrl, nrh, ncl, nch; * @(#) returns a pointer to an int matrix or NULL on error * @(#) * @(#) float **im_fmat_alloc(nrl, nrh, ncl, nch) * @(#) int nrl, nrh, ncl, nch; * @(#) returns a pointer to an int matrix or NULL on error * @(#) * @(#) double **im_dmat_alloc(nrl, nrh, ncl, nch) * @(#) int nrl, nrh, ncl, nch; * @(#) returns a pointer to a double matrix or NULL on error * @(#) * @(#) The following routines free the matrix allocated by the functions above * @(#) void im_free_imat(m, nrl, nrh, ncl, nch) * @(#) int **m; * @(#) int nrl, nrh, ncl, nch; * @(#) * @(#) void im_free_fmat(m, nrl, nrh, ncl, nch) * @(#) float **m; * @(#) int nrl, nrh, ncl, nch; * @(#) * @(#) void im_free_dmat(m, nrl, nrh, ncl, nch) * @(#) double **m; * @(#) int nrl, nrh, ncl, nch; * @(#) */ int **im_imat_alloc(int nrl, int nrh, int ncl, int nch) { int i; int **m; m = (int**)im_malloc(NULL,(unsigned)(nrh-nrl+1) * sizeof(int *)); if (m == NULL) return(NULL); m -= nrl; for (i=nrl; i<=nrh; i++) { m[i] = (int *)im_malloc(NULL,(unsigned) (nch-ncl+1) * sizeof(int)); if (m[i] == NULL) return(NULL); m[i] -= ncl; } return (m); } void im_free_imat(int **m, int nrl, int nrh, int ncl, int nch) { int i; for (i=nrh; i>=nrl; i--) im_free((char*) (m[i]+ncl)); im_free((char*) (m+nrl)); } float **im_fmat_alloc(int nrl, int nrh, int ncl, int nch) { int i; float **m; m = (float**)im_malloc(NULL,(unsigned)(nrh-nrl+1) * sizeof(float *)); if (m == NULL) return(NULL); m -= nrl; for (i=nrl; i<=nrh; i++) { m[i] = (float *)im_malloc(NULL,(unsigned) (nch-ncl+1) * sizeof(float)); if (m[i] == NULL) return(NULL); m[i] -= ncl; } return (m); } void im_free_fmat(float **m, int nrl, int nrh, int ncl, int nch) { int i; for (i=nrh; i>=nrl; i--) im_free((char*) (m[i]+ncl)); im_free((char*) (m+nrl)); } double **im_dmat_alloc(int nrl, int nrh, int ncl, int nch) { int i; double **m; m = (double**)im_malloc(NULL,(unsigned)(nrh-nrl+1) * sizeof(double *)); if (m == NULL) return(NULL); m -= nrl; for (i=nrl; i<=nrh; i++) { m[i] = (double *)im_malloc(NULL,(unsigned) (nch-ncl+1) * sizeof(double)); if (m[i] == NULL) return(NULL); m[i] -= ncl; } return (m); } void im_free_dmat(double **m, int nrl, int nrh, int ncl, int nch) { int i; for (i=nrh; i>=nrl; i--) im_free((char*) (m[i]+ncl)); im_free((char*) (m+nrl)); } vips-8.2.2/libvips/deprecated/lazy.c0000664000175000017500000001735012530402247014327 00000000000000/* lazy open/save ... compat funcs for old im_open() behaviour * * 30/11/11 * - cut from old image.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include static gboolean vips_format_is_vips( VipsFormatClass *format ) { return( strcmp( VIPS_OBJECT_CLASS( format )->nickname, "vips" ) == 0 ); } /* Lazy open. */ /* What we track during a delayed open. */ typedef struct { VipsImage *image; VipsFormatClass *format;/* Read in pixels with this */ char *filename; /* Get pixels from here */ gboolean sequential; /* Sequential read requested */ VipsImage *real; /* The real decompressed image */ } Lazy; static void lazy_free_cb( VipsImage *image, Lazy *lazy ) { VIPS_DEBUG_MSG( "lazy_free: %p \"%s\"\n", lazy, lazy->filename ); g_free( lazy->filename ); VIPS_UNREF( lazy->real ); g_free( lazy ); } static Lazy * lazy_new( VipsImage *image, VipsFormatClass *format, const char *filename, gboolean sequential ) { Lazy *lazy; lazy = g_new( Lazy, 1 ); VIPS_DEBUG_MSG( "lazy_new: %p \"%s\"\n", lazy, filename ); lazy->image = image; lazy->format = format; lazy->filename = g_strdup( filename ); lazy->sequential = sequential; lazy->real = NULL; g_signal_connect( image, "close", G_CALLBACK( lazy_free_cb ), lazy ); return( lazy ); } static size_t disc_threshold( void ) { static gboolean done = FALSE; static size_t threshold; if( !done ) { const char *env; done = TRUE; /* 100mb default. */ threshold = 100 * 1024 * 1024; if( (env = g_getenv( "IM_DISC_THRESHOLD" )) ) threshold = vips__parse_size( env ); if( vips__disc_threshold ) threshold = vips__parse_size( vips__disc_threshold ); VIPS_DEBUG_MSG( "disc_threshold: %zd bytes\n", threshold ); } return( threshold ); } /* Make the real underlying image: either a direct disc file, or a temp file * somewhere. */ static VipsImage * lazy_real_image( Lazy *lazy ) { VipsImage *real; /* We open via disc if: * - 'sequential' is not set * - disc_threshold() has not been set to zero * - the format does not support lazy read * - the uncompressed image will be larger than disc_threshold() */ real = NULL; if( !lazy->sequential && disc_threshold() && !(vips_format_get_flags( lazy->format, lazy->filename ) & VIPS_FORMAT_PARTIAL) && VIPS_IMAGE_SIZEOF_IMAGE( lazy->image ) > disc_threshold() ) if( !(real = vips_image_new_temp_file( "%s.v" )) ) return( NULL ); /* Otherwise, fall back to a "p". */ if( !real && !(real = vips_image_new()) ) return( NULL ); return( real ); } /* Our start function ... do the lazy open, if necessary, and return a region * on the new image. */ static void * open_lazy_start( VipsImage *out, void *a, void *dummy ) { Lazy *lazy = (Lazy *) a; if( !lazy->real ) { if( !(lazy->real = lazy_real_image( lazy )) || lazy->format->load( lazy->filename, lazy->real ) || vips_image_pio_input( lazy->real ) ) { VIPS_UNREF( lazy->real ); return( NULL ); } } return( vips_region_new( lazy->real ) ); } /* Just copy. */ static int open_lazy_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; /* Ask for input we need. */ if( vips_region_prepare( ir, r ) ) return( -1 ); /* Attach output region to that. */ if( vips_region_region( or, ir, r, r->left, r->top ) ) return( -1 ); return( 0 ); } /* Lazy open ... init the header with the first OpenLazyFn, delay actually * decoding pixels with the second OpenLazyFn until the first generate(). */ static int vips_image_open_lazy( VipsImage *image, VipsFormatClass *format, const char *filename, gboolean sequential ) { Lazy *lazy; lazy = lazy_new( image, format, filename, sequential ); /* Is there a ->header() function? We need to do a lazy load. */ if( format->header ) { /* Read header fields to init the return image. */ if( format->header( filename, image ) ) return( -1 ); /* Then 'start' creates the real image and 'gen' paints 'image' * with pixels from the real image on demand. */ vips_image_pipelinev( image, image->dhint, NULL ); if( vips_image_generate( image, open_lazy_start, open_lazy_generate, vips_stop_one, lazy, NULL ) ) return( -1 ); } else if( format->load ) { if( format->load( filename, image ) ) return( -1 ); } else g_assert( 0 ); return( 0 ); } /* Lazy save. */ /* If we write to (eg.) TIFF, actually do the write * to a "p" and on "written" do im_vips2tiff() or whatever. Track save * parameters here. */ typedef int (*VipsSaveFn)( VipsImage *image, const char *filename ); typedef struct { VipsSaveFn save_fn; /* Save function */ char *filename; /* Save args */ } SaveBlock; /* From "written" callback: invoke a delayed save. */ static void vips_image_save_cb( VipsImage *image, int *result, SaveBlock *sb ) { if( sb->save_fn( image, sb->filename ) ) *result = -1; g_free( sb->filename ); g_free( sb ); } static void vips_attach_save( VipsImage *image, VipsSaveFn save_fn, const char *filename ) { SaveBlock *sb; sb = g_new( SaveBlock, 1 ); sb->save_fn = save_fn; sb->filename = g_strdup( filename ); g_signal_connect( image, "written", G_CALLBACK( vips_image_save_cb ), sb ); } IMAGE * vips__deprecated_open_read( const char *filename, gboolean sequential ) { VipsFormatClass *format; if( !(format = vips_format_for_file( filename )) ) return( NULL ); if( vips_format_is_vips( format ) ) { /* For vips format, we can just the main vips path. */ return( vips_image_new_mode( filename, "rd" ) ); } else { /* For non-vips formats we must go via the old VipsFormat * system to make sure we support the "filename:options" * syntax. */ IMAGE *image; image = vips_image_new(); if( vips_image_open_lazy( image, format, filename, sequential ) ) { g_object_unref( image ); return( NULL ); } /* Yuk. Can't g_object_set() filename since it's after * construct. Just zap the new filename in. */ VIPS_FREE( image->filename ); image->filename = g_strdup( filename ); return( image ); } } IMAGE * vips__deprecated_open_write( const char *filename ) { VipsFormatClass *format; if( !(format = vips_format_for_name( filename )) ) return( NULL ); if( vips_format_is_vips( format ) ) /* For vips format, we can just the main vips path. */ return( vips_image_new_mode( filename, "w" ) ); else { /* For non-vips formats we must go via the old VipsFormat * system to make sure we support the "filename:options" * syntax. */ IMAGE *image; if( !(image = vips_image_new()) ) return( NULL ); vips_attach_save( image, format->save, filename ); return( image ); } } vips-8.2.2/libvips/deprecated/im_stretch3.c0000664000175000017500000001651512530402247015576 00000000000000/* Function to stretch an image by 3%, and displace in x and y. Cubic * interpolation with a seperable mask. Displacements are: * * 0 <= xdisp < 1.0. * 0 <= ydisp < 1.0. * * Each horizontal block of 33 pixels is stretched to 34. * * Written by Ahmed Abbood * August-1994 * * Any unsigned short image. Output image is 3 pixels smaller because of * convolution, but x is larger by 3%: * * out->Xsize = 34*(in->Xsize / 33) + in->Xsize%33 - 3; * out->Ysize = in->Ysize - 3; * * 20/10/95 JC * - was not freeing regions correctly * - tidied up * 29/3/96 JC * - completely rewritten ... now produces correct result, and is 2x * faster * 18/9/97 JC * - added to VIPS library as im_stretch3 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* Data for the cubic interpolation function. */ typedef struct { IMAGE *in; double dx, dy; int xoff, yoff; /* Mask we start with for this disp. */ int mask[34][4]; /* Fixed-point masks for each output pixel */ } StretchInfo; /* Per-thread info. */ typedef struct seq_info { StretchInfo *sin; REGION *ir; unsigned short *buf; int lsk; } SeqInfo; static int stretch_stop( void *vseq, void *a, void *b ) { SeqInfo *seq = (SeqInfo *) vseq; IM_FREEF( im_region_free, seq->ir ); return( 0 ); } static void * stretch_start( IMAGE *out, void *a, void *b ) { IMAGE *in = (IMAGE *) a; StretchInfo *sin = (StretchInfo *) b; SeqInfo *seq; if( !(seq = IM_NEW( out, SeqInfo )) ) return( NULL ); seq->sin = sin; seq->ir = im_region_create( in ); seq->lsk = IM_IMAGE_N_ELEMENTS( out ); seq->buf = IM_ARRAY( out, 4*seq->lsk, unsigned short ); if( !seq->buf || !seq->ir ) { stretch_stop( seq, NULL, NULL ); return( NULL ); } return( (void *)seq ); } /* Stretch a line of pels into a line in the buffer. */ static void make_xline( StretchInfo *sin, unsigned short *p, unsigned short *q, int w, int m ) { int bands = sin->in->Bands; int tot; int x, b; /* Offsets for subsequent pixels. */ int o1 = 1*bands; int o2 = 2*bands; int o3 = 3*bands; for( x = 0; x < w; x++ ) { int *mask = &sin->mask[m][0]; unsigned short *p1 = p; /* Loop for this pel. */ for( b = 0; b < bands; b++ ) { tot = p1[0]*mask[0] + p1[o1]*mask[1] + p1[o2]*mask[2] + p1[o3]*mask[3]; tot = IM_MAX( 0, tot ); p1++; *q++ = (tot + 16384) >> 15; } /* Move to next mask. */ m++; if( m == 34 ) /* Back to mask 0, reuse this input pel. */ m = 0; else /* Move to next input pel. */ p += bands; } } /* As above, but do the vertical resample. lsk is how much we add to move down * a line in p, boff is [0,1,2,3] for which buffer line is mask[3]. */ static void make_yline( StretchInfo *sin, int lsk, int boff, unsigned short *p, unsigned short *q, int w, int m ) { int bands = sin->in->Bands; int we = w * bands; int *mask = &sin->mask[m][0]; int tot; int x; /* Offsets for subsequent pixels. Down a line each time. */ int o0 = lsk*boff; int o1 = lsk*((boff + 1) % 4); int o2 = lsk*((boff + 2) % 4); int o3 = lsk*((boff + 3) % 4); for( x = 0; x < we; x++ ) { tot = p[o0]*mask[0] + p[o1]*mask[1] + p[o2]*mask[2] + p[o3]*mask[3]; tot = IM_MAX( 0, tot ); p++; *q++ = (tot + 16384) >> 15; } } static int stretch_gen( REGION *or, void *vseq, void *a, void *b ) { SeqInfo *seq = (SeqInfo *) vseq; StretchInfo *sin = (StretchInfo *) b; REGION *ir = seq->ir; Rect *r = &or->valid; Rect r1; int x, y; /* What mask do we start with? */ int xstart = (r->left + sin->xoff) % 34; /* What part of input do we need for this output? */ r1.left = r->left - (r->left + sin->xoff) / 34; r1.top = r->top; x = IM_RECT_RIGHT( r ); x = x - (x + sin->xoff) / 34 + 3; r1.width = x - r1.left; r1.height = r->height + 3; if( im_prepare( ir, &r1 ) ) return( -1 ); /* Fill the first three lines of the buffer. */ for( y = 0; y < 3; y++ ) { unsigned short *p = (unsigned short *) IM_REGION_ADDR( ir, r1.left, y + r1.top ); unsigned short *q = seq->buf + seq->lsk*y; make_xline( sin, p, q, r->width, xstart ); } /* Loop for subsequent lines: stretch a new line of x pels, and * interpolate a line of output from the 3 previous xes plus this new * one. */ for( y = 0; y < r->height; y++ ) { /* Next line of fresh input pels. */ unsigned short *p = (unsigned short *) IM_REGION_ADDR( ir, r1.left, y + r1.top + 3 ); /* Next line we fill in the buffer. */ int boff = (y + 3)%4; unsigned short *q = seq->buf + boff*seq->lsk; /* Line we write in output. */ unsigned short *q1 = (unsigned short *) IM_REGION_ADDR( or, r->left, y + r->top ); /* Process this new xline. */ make_xline( sin, p, q, r->width, xstart ); /* Generate new output line. */ make_yline( sin, seq->lsk, boff, seq->buf, q1, r->width, sin->yoff ); } return( 0 ); } int im_stretch3( IMAGE *in, IMAGE *out, double dx, double dy ) { StretchInfo *sin; int i; /* Check our args. */ if( in->Coding != IM_CODING_NONE || in->BandFmt != IM_BANDFMT_USHORT ) { im_error( "im_stretch3", "%s", _( "not uncoded unsigned short" ) ); return( -1 ); } if( dx < 0 || dx >= 1.0 || dy < 0 || dy >= 1.0 ) { im_error( "im_stretch3", "%s", _( "displacements out of range [0,1)" ) ); return( -1 ); } if( im_piocheck( in, out ) ) return( -1 ); /* Prepare the output image. */ if( im_cp_desc( out, in ) ) return( -1 ); out->Xsize = 34*(in->Xsize / 33) + in->Xsize%33 - 3; out->Ysize = in->Ysize - 3; if( im_demand_hint( out, IM_FATSTRIP, in, NULL ) ) return( -1 ); if( !(sin = IM_NEW( out, StretchInfo )) ) return( -1 ); /* Save parameters. */ sin->in = in; sin->dx = dx; sin->dy = dy; /* Generate masks. */ for( i = 0; i < 34; i++ ) { double d = (34.0 - i)/34.0; double y0 = 2.0*d*d - d - d*d*d; double y1 = 1.0 - 2.0*d*d + d*d*d; double y2 = d + d*d - d*d*d; double y3 = -d*d + d*d*d; sin->mask[i][0] = IM_RINT( y0 * 32768 ); sin->mask[i][1] = IM_RINT( y1 * 32768 ); sin->mask[i][2] = IM_RINT( y2 * 32768 ); sin->mask[i][3] = IM_RINT( y3 * 32768 ); } /* Which mask do we start with to apply these offsets? */ sin->xoff = (dx * 33.0) + 0.5; sin->yoff = (dy * 33.0) + 0.5; if( im_generate( out, stretch_start, stretch_gen, stretch_stop, in, sin ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/deprecated/hist_dispatch.c0000664000175000017500000004401112530402247016170 00000000000000/* VIPS function dispatch tables for histogram_lut. * * J. Cupitt, 24/5/95. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Args for im_gammacorrect. */ static im_arg_desc gammacorrect_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "exponent" ) }; /* Call im_gammacorrect via arg vector. */ static int gammacorrect_vec( im_object *argv ) { double exp = *((double *) argv[2]); return( im_gammacorrect( argv[0], argv[1], exp ) ); } /* Description of im_gammacorrect. */ static im_function gammacorrect_desc = { "im_gammacorrect", /* Name */ "gamma-correct image", /* Description */ IM_FN_PIO, /* Flags */ gammacorrect_vec, /* Dispatch function */ IM_NUMBER( gammacorrect_args ), /* Size of arg list */ gammacorrect_args /* Arg list */ }; /* Image plus number in, image out. */ static im_arg_desc heq_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "band_number" ) }; /* Call im_heq via arg vector. */ static int heq_vec( im_object *argv ) { int bn = *((int *) argv[2]); return( im_heq( argv[0], argv[1], bn ) ); } /* Description of im_heq. */ static im_function heq_desc = { "im_heq", /* Name */ "histogram-equalise image", /* Description */ IM_FN_PIO, /* Flags */ heq_vec, /* Dispatch function */ IM_NUMBER( heq_args ), /* Size of arg list */ heq_args /* Arg list */ }; static im_arg_desc histindexed_args[] = { IM_INPUT_IMAGE( "index" ), IM_INPUT_IMAGE( "value" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_histindexed via arg vector. */ static int histindexed_vec( im_object *argv ) { return( im_hist_indexed( argv[0], argv[1], argv[2] ) ); } /* Description of im_histindexed. */ static im_function histindexed_desc = { "im_hist_indexed", /* Name */ "make a histogram with an index image", /* Description */ IM_FN_PIO, /* Flags */ histindexed_vec, /* Dispatch function */ IM_NUMBER( histindexed_args ), /* Size of arg list */ histindexed_args /* Arg list */ }; /* Call im_hist via arg vector. */ static int hist_vec( im_object *argv ) { int bn = *((int *) argv[2]); return( im_hist( argv[0], argv[1], bn ) ); } /* Description of im_hist. */ static im_function hist_desc = { "im_hist", /* Name */ "find and graph histogram of image", /* Description */ IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ hist_vec, /* Dispatch function */ IM_NUMBER( heq_args ), /* Size of arg list */ heq_args /* Arg list */ }; /* Call im_histcum via arg vector. */ static int histcum_vec( im_object *argv ) { return( im_histcum( argv[0], argv[1] ) ); } /* Description of im_histcum. */ static im_function histcum_desc = { "im_histcum", /* Name */ "turn histogram to cumulative histogram",/* Description */ IM_FN_PIO, /* Flags */ histcum_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_histnorm via arg vector. */ static int histnorm_vec( im_object *argv ) { return( im_histnorm( argv[0], argv[1] ) ); } /* Description of im_histcum. */ static im_function histnorm_desc = { "im_histnorm", /* Name */ "form normalised histogram",/* Description */ IM_FN_PIO, /* Flags */ histnorm_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_histeq via arg vector. */ static int histeq_vec( im_object *argv ) { return( im_histeq( argv[0], argv[1] ) ); } /* Description of im_histeq. */ static im_function histeq_desc = { "im_histeq", /* Name */ "form histogram equalistion LUT",/* Description */ IM_FN_PIO, /* Flags */ histeq_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_histgr via arg vector. */ static int histgr_vec( im_object *argv ) { int bn = *((int *) argv[2]); return( im_histgr( argv[0], argv[1], bn ) ); } /* Description of im_histgr. */ static im_function histgr_desc = { "im_histgr", /* Name */ "find histogram of image", /* Description */ IM_FN_TRANSFORM, /* Flags */ histgr_vec, /* Dispatch function */ IM_NUMBER( heq_args ), /* Size of arg list */ heq_args /* Arg list */ }; /* Call im_histnD() via arg vector. */ static int histnD_vec( im_object *argv ) { int bins = *((int *) argv[2]); return( im_histnD( argv[0], argv[1], bins ) ); } /* Args for im_histnD(). */ static im_arg_desc histnD_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "bins" ) }; /* Description of im_histnD(). */ static im_function histnD_desc = { "im_histnD", /* Name */ "find 1D, 2D or 3D histogram of image", /* Description */ IM_FN_TRANSFORM, /* Flags */ histnD_vec, /* Dispatch function */ IM_NUMBER( histnD_args ), /* Size of arg list */ histnD_args /* Arg list */ }; /* Call im_histplot via arg vector. */ static int histplot_vec( im_object *argv ) { return( im_histplot( argv[0], argv[1] ) ); } /* Description of im_histplot. */ static im_function histplot_desc = { "im_histplot", /* Name */ "plot graph of histogram", /* Description */ IM_FN_PIO, /* Flags */ histplot_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_histspec. */ static im_arg_desc histspec_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_IMAGE( "ref" ), IM_OUTPUT_IMAGE( "out" ), }; /* Call im_histspec via arg vector. */ static int histspec_vec( im_object *argv ) { return( im_histspec( argv[0], argv[1], argv[2] ) ); } /* Description of im_histspec. */ static im_function histspec_desc = { "im_histspec", /* Name */ "find histogram which will make pdf of in match ref", 0, /* Flags */ histspec_vec, /* Dispatch function */ IM_NUMBER( histspec_args ), /* Size of arg list */ histspec_args /* Arg list */ }; /* Call im_hsp via arg vector. */ static int hsp_vec( im_object *argv ) { return( im_hsp( argv[0], argv[1], argv[2] ) ); } /* Description of im_hsp. */ static im_function hsp_desc = { "im_hsp", /* Name */ "match stats of in to stats of ref", 0, /* Flags */ hsp_vec, /* Dispatch function */ IM_NUMBER( histspec_args ), /* Size of arg list */ histspec_args /* Arg list */ }; /* Args for im_identity. */ static im_arg_desc identity_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "nbands" ) }; /* Call im_identity via arg vector. */ static int identity_vec( im_object *argv ) { int nb = *((int *) argv[1]); return( im_identity( argv[0], nb ) ); } /* Description of im_identity. */ static im_function identity_desc = { "im_identity", /* Name */ "generate identity histogram", 0, /* Flags */ identity_vec, /* Dispatch function */ IM_NUMBER( identity_args ), /* Size of arg list */ identity_args /* Arg list */ }; /* Args for im_identity_ushort. */ static im_arg_desc identity_ushort_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "nbands" ), IM_INPUT_INT( "size" ) }; /* Call im_identity_ushort via arg vector. */ static int identity_ushort_vec( im_object *argv ) { int nb = *((int *) argv[1]); int sz = *((int *) argv[2]); return( im_identity_ushort( argv[0], nb, sz ) ); } /* Description of im_identity_ushort. */ static im_function identity_ushort_desc = { "im_identity_ushort", /* Name */ "generate ushort identity histogram", 0, /* Flags */ identity_ushort_vec, /* Dispatch function */ IM_NUMBER( identity_ushort_args ), /* Size of arg list */ identity_ushort_args /* Arg list */ }; /* Args for im_lhisteq. */ static im_arg_desc lhisteq_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_lhisteq via arg vector. */ static int lhisteq_vec( im_object *argv ) { int xw = *((int *) argv[2]); int yw = *((int *) argv[3]); return( im_lhisteq( argv[0], argv[1], xw, yw ) ); } /* Description of im_lhisteq. */ static im_function lhisteq_desc = { "im_lhisteq", /* Name */ "local histogram equalisation", IM_FN_PIO, /* Flags */ lhisteq_vec, /* Dispatch function */ IM_NUMBER( lhisteq_args ), /* Size of arg list */ lhisteq_args /* Arg list */ }; /* Args for im_maplut. */ static im_arg_desc maplut_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMAGE( "lut" ) }; /* Call im_maplut via arg vector. */ static int maplut_vec( im_object *argv ) { return( im_maplut( argv[0], argv[1], argv[2] ) ); } /* Description of im_maplut. */ static im_function maplut_desc = { "im_maplut", /* Name */ "map image through LUT", IM_FN_PIO, /* Flags */ maplut_vec, /* Dispatch function */ IM_NUMBER( maplut_args ), /* Size of arg list */ maplut_args /* Arg list */ }; /* Call im_project() via arg vector. */ static int project_vec( im_object *argv ) { return( im_project( argv[0], argv[1], argv[2] ) ); } /* Args for im_project(). */ static im_arg_desc project_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "hout" ), IM_OUTPUT_IMAGE( "vout" ) }; /* Description of im_project(). */ static im_function project_desc = { "im_project", /* Name */ "find horizontal and vertical projections of an image", IM_FN_TRANSFORM, /* Flags */ project_vec, /* Dispatch function */ IM_NUMBER( project_args ), /* Size of arg list */ project_args /* Arg list */ }; /* Args for im_stdif. */ static im_arg_desc stdif_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "a" ), IM_INPUT_DOUBLE( "m0" ), IM_INPUT_DOUBLE( "b" ), IM_INPUT_DOUBLE( "s0" ), IM_INPUT_INT( "xw" ), IM_INPUT_INT( "yw" ) }; /* Call im_stdif via arg vector. */ static int stdif_vec( im_object *argv ) { double a = *((double *) argv[2]); double m0 = *((double *) argv[3]); double b = *((double *) argv[4]); double s0 = *((double *) argv[5]); int xw = *((int *) argv[6]); int yw = *((int *) argv[7]); return( im_stdif( argv[0], argv[1], a, m0, b, s0, xw, yw ) ); } /* Description of im_stdif. */ static im_function stdif_desc = { "im_stdif", /* Name */ "statistical differencing", IM_FN_PIO, /* Flags */ stdif_vec, /* Dispatch function */ IM_NUMBER( stdif_args ), /* Size of arg list */ stdif_args /* Arg list */ }; /* Args for im_buildlut. */ static im_arg_desc buildlut_args[] = { IM_INPUT_DMASK( "xyes" ), IM_OUTPUT_IMAGE( "lut" ) }; /* Call im_buildlut via arg vector. */ static int buildlut_vec( im_object *argv ) { im_mask_object *mi = argv[0]; return( im_buildlut( mi->mask, argv[1] ) ); } /* Description of im_buildlut. */ static im_function buildlut_desc = { "im_buildlut", /* Name */ "generate LUT table from set of x/y positions", 0, /* Flags */ buildlut_vec, /* Dispatch function */ IM_NUMBER( buildlut_args ),/* Size of arg list */ buildlut_args /* Arg list */ }; /* Args for im_invertlut. */ static im_arg_desc invertlut_args[] = { IM_INPUT_DMASK( "measures" ), IM_OUTPUT_IMAGE( "lut" ), IM_INPUT_INT( "lut_size" ) }; /* Call im_invertlut via arg vector. */ static int invertlut_vec( im_object *argv ) { im_mask_object *mi = argv[0]; int lut_size = *((int *) argv[2]); return( im_invertlut( mi->mask, argv[1], lut_size ) ); } /* Description of im_invertlut. */ static im_function invertlut_desc = { "im_invertlut", /* Name */ "generate correction table from set of measures", 0, /* Flags */ invertlut_vec, /* Dispatch function */ IM_NUMBER( invertlut_args ),/* Size of arg list */ invertlut_args /* Arg list */ }; /* Args for im_tone_build. */ static im_arg_desc tone_build_args[] = { IM_OUTPUT_IMAGE( "hist" ), IM_INPUT_DOUBLE( "Lb" ), IM_INPUT_DOUBLE( "Lw" ), IM_INPUT_DOUBLE( "Ps" ), IM_INPUT_DOUBLE( "Pm" ), IM_INPUT_DOUBLE( "Ph" ), IM_INPUT_DOUBLE( "S" ), IM_INPUT_DOUBLE( "M" ), IM_INPUT_DOUBLE( "H" ) }; /* Call im_tone_build via arg vector. */ static int tone_build_vec( im_object *argv ) { double Lb = *((double *) argv[1]); double Lw = *((double *) argv[2]); double Ps = *((double *) argv[3]); double Pm = *((double *) argv[4]); double Ph = *((double *) argv[5]); double S = *((double *) argv[6]); double M = *((double *) argv[7]); double H = *((double *) argv[8]); return( im_tone_build( argv[0], Lb, Lw, Ps, Pm, Ph, S, M, H ) ); } /* Description of im_tone_build. */ static im_function tone_build_desc = { "im_tone_build", /* Name */ "create LUT for tone adjustment of LabS images", 0, /* Flags */ tone_build_vec, /* Dispatch function */ IM_NUMBER( tone_build_args ), /* Size of arg list */ tone_build_args /* Arg list */ }; /* Args for im_tone_build_range. */ static im_arg_desc tone_build_range_args[] = { IM_OUTPUT_IMAGE( "hist" ), IM_INPUT_INT( "in_max" ), IM_INPUT_INT( "out_max" ), IM_INPUT_DOUBLE( "Lb" ), IM_INPUT_DOUBLE( "Lw" ), IM_INPUT_DOUBLE( "Ps" ), IM_INPUT_DOUBLE( "Pm" ), IM_INPUT_DOUBLE( "Ph" ), IM_INPUT_DOUBLE( "S" ), IM_INPUT_DOUBLE( "M" ), IM_INPUT_DOUBLE( "H" ) }; /* Call im_tone_build_range via arg vector. */ static int tone_build_range_vec( im_object *argv ) { int in_max = *((int *) argv[1]); int out_max = *((int *) argv[2]); double Lb = *((double *) argv[3]); double Lw = *((double *) argv[4]); double Ps = *((double *) argv[5]); double Pm = *((double *) argv[6]); double Ph = *((double *) argv[7]); double S = *((double *) argv[8]); double M = *((double *) argv[9]); double H = *((double *) argv[10]); return( im_tone_build_range( argv[0], in_max, out_max, Lb, Lw, Ps, Pm, Ph, S, M, H ) ); } /* Description of im_tone_build_range. */ static im_function tone_build_range_desc = { "im_tone_build_range", /* Name */ "create LUT for tone adjustment", 0, /* Flags */ tone_build_range_vec, /* Dispatch function */ IM_NUMBER( tone_build_range_args ),/* Size of arg list */ tone_build_range_args /* Arg list */ }; /* Args for im_tone_analyse. */ static im_arg_desc tone_analyse_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "hist" ), IM_INPUT_DOUBLE( "Ps" ), IM_INPUT_DOUBLE( "Pm" ), IM_INPUT_DOUBLE( "Ph" ), IM_INPUT_DOUBLE( "S" ), IM_INPUT_DOUBLE( "M" ), IM_INPUT_DOUBLE( "H" ) }; /* Call im_tone_analyse via arg vector. */ static int tone_analyse_vec( im_object *argv ) { double Ps = *((double *) argv[2]); double Pm = *((double *) argv[3]); double Ph = *((double *) argv[4]); double S = *((double *) argv[5]); double M = *((double *) argv[6]); double H = *((double *) argv[7]); return( im_tone_analyse( argv[0], argv[1], Ps, Pm, Ph, S, M, H ) ); } /* Description of im_tone_analyse. */ static im_function tone_analyse_desc = { "im_tone_analyse", /* Name */ "analyse in and create LUT for tone adjustment", 0, /* Flags */ tone_analyse_vec, /* Dispatch function */ IM_NUMBER( tone_analyse_args ), /* Size of arg list */ tone_analyse_args /* Arg list */ }; /* Args for im_ismonotonic. */ static im_arg_desc ismonotonic_args[] = { IM_INPUT_IMAGE( "lut" ), IM_OUTPUT_INT( "mono" ) }; /* Call im_ismonotonic via arg vector. */ static int ismonotonic_vec( im_object *argv ) { int *res = (int *) argv[1]; return( im_ismonotonic( argv[0], res ) ); } /* Description of im_ismonotonic. */ static im_function ismonotonic_desc = { "im_ismonotonic", /* Name */ "test LUT for monotonicity", 0, /* Flags */ ismonotonic_vec, /* Dispatch function */ IM_NUMBER( ismonotonic_args ), /* Size of arg list */ ismonotonic_args /* Arg list */ }; /* Args for im_tone_map */ static im_arg_desc tone_map_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMAGE( "lut" ) }; /* Call im_tone_map via arg vector. */ static int tone_map_vec( im_object *argv ) { return( im_tone_map( argv[0], argv[1], argv[2] ) ); } /* Description of im_tone_map. */ static im_function tone_map_desc = { "im_tone_map", /* Name */ "map L channel of LabS or LabQ image through LUT", IM_FN_PIO, /* Flags */ tone_map_vec, /* Dispatch function */ IM_NUMBER( tone_map_args ),/* Size of arg list */ tone_map_args /* Arg list */ }; /* Args for im_mpercent. */ static im_arg_desc mpercent_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_DOUBLE( "percent" ), IM_OUTPUT_INT( "thresh" ) }; /* Call im_mpercent via arg vector. */ static int mpercent_vec( im_object *argv ) { double percent = *((double *) argv[1]); return( im_mpercent( argv[0], percent, argv[2] ) ); } /* Description of im_mpercent. */ static im_function mpercent_desc = { "im_mpercent", /* Name */ "find threshold above which there are percent values", 0, /* Flags */ mpercent_vec, /* Dispatch function */ IM_NUMBER( mpercent_args ), /* Size of arg list */ mpercent_args /* Arg list */ }; /* Package up all these functions. */ static im_function *hist_list[] = { &gammacorrect_desc, &heq_desc, &hist_desc, &histcum_desc, &histeq_desc, &histindexed_desc, &histgr_desc, &histnD_desc, &histnorm_desc, &histplot_desc, &histspec_desc, &hsp_desc, &identity_desc, &identity_ushort_desc, &ismonotonic_desc, &lhisteq_desc, &mpercent_desc, &invertlut_desc, &buildlut_desc, &maplut_desc, &project_desc, &stdif_desc, &tone_analyse_desc, &tone_build_desc, &tone_build_range_desc, &tone_map_desc }; /* Package of functions. */ im_package im__histograms_lut = { "histograms_lut", IM_NUMBER( hist_list ), hist_list }; vips-8.2.2/libvips/deprecated/format.c0000664000175000017500000002452412530402247014641 00000000000000/* VIPS function dispatch tables for image format load/save. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* To iterate over supported formats, we build a temp list of subclasses of * VipsFormat, sort by priority, iterate, and free. */ static void * format_add_class( VipsFormatClass *format, GSList **formats ) { if( !G_TYPE_IS_ABSTRACT( G_OBJECT_CLASS_TYPE( format ) ) ) /* Append so we don't reverse the list of formats. */ *formats = g_slist_append( *formats, format ); return( NULL ); } static gint format_compare( VipsFormatClass *a, VipsFormatClass *b ) { return( b->priority - a->priority ); } /** * vips_format_map: (skip) * @fn: function to apply to each #VipsFormatClass * @a: user data * @b: user data * * Apply a function to every %VipsFormatClass that VIPS knows about. Formats * are presented to the function in priority order. * * Like all VIPS map functions, if @fn returns %NULL, iteration continues. If * it returns non-%NULL, iteration terminates and that value is returned. The * map function returns %NULL if all calls return %NULL. * * See also: im_slist_map(). * * Returns: the result of iteration */ void * vips_format_map( VSListMap2Fn fn, void *a, void *b ) { GSList *formats; void *result; formats = NULL; (void) vips_class_map_all( g_type_from_name( "VipsFormat" ), (VipsClassMapFn) format_add_class, (void *) &formats ); formats = g_slist_sort( formats, (GCompareFunc) format_compare ); result = im_slist_map2( formats, fn, a, b ); g_slist_free( formats ); return( result ); } /* Abstract base class for image formats. */ G_DEFINE_ABSTRACT_TYPE( VipsFormat, vips_format, VIPS_TYPE_OBJECT ); static void vips_format_summary_class( VipsObjectClass *object_class, VipsBuf *buf ) { VipsFormatClass *class = VIPS_FORMAT_CLASS( object_class ); VIPS_OBJECT_CLASS( vips_format_parent_class )-> summary_class( object_class, buf ); vips_buf_appends( buf, ", " ); if( class->suffs ) { const char **p; vips_buf_appends( buf, "(" ); for( p = class->suffs; *p; p++ ) { vips_buf_appendf( buf, "%s", *p ); if( p[1] ) vips_buf_appends( buf, ", " ); } vips_buf_appends( buf, ") " ); } if( class->is_a ) vips_buf_appends( buf, "is_a " ); if( class->header ) vips_buf_appends( buf, "header " ); if( class->load ) vips_buf_appends( buf, "load " ); if( class->save ) vips_buf_appends( buf, "save " ); if( class->get_flags ) vips_buf_appends( buf, "get_flags " ); } static void vips_format_class_init( VipsFormatClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; object_class->nickname = "format"; object_class->description = _( "VIPS file formats" ); object_class->summary_class = vips_format_summary_class; /* Hide from UI. */ object_class->deprecated = TRUE; } static void vips_format_init( VipsFormat *object ) { } /** * vips_format_get_flags: * @format: format to test * @filename: file to test * * Get a set of flags for this file. * * Returns: flags for this format and file */ VipsFormatFlags vips_format_get_flags( VipsFormatClass *format, const char *filename ) { return( format->get_flags ? format->get_flags( filename ) : 0 ); } /* VIPS format class. */ static const char *vips_suffs[] = { ".v", ".vips", NULL }; int im_isvips( const char *filename ) { unsigned char buf[4]; if( im__get_bytes( filename, buf, 4 ) ) { if( buf[0] == 0x08 && buf[1] == 0xf2 && buf[2] == 0xa6 && buf[3] == 0xb6 ) /* SPARC-order VIPS image. */ return( 1 ); else if( buf[3] == 0x08 && buf[2] == 0xf2 && buf[1] == 0xa6 && buf[0] == 0xb6 ) /* INTEL-order VIPS image. */ return( 1 ); } return( 0 ); } static int file2vips( const char *filename, IMAGE *out ) { IMAGE *im; if( !(im = im_open_local( out, filename, "r" )) || im_copy( im, out ) ) return( -1 ); return( 0 ); } static VipsFormatFlags vips_flags( const char *filename ) { VipsFormatFlags flags; unsigned char buf[4]; flags = VIPS_FORMAT_PARTIAL; if( im__get_bytes( filename, buf, 4 ) && buf[0] == 0x08 && buf[1] == 0xf2 && buf[2] == 0xa6 && buf[3] == 0xb6 ) flags |= VIPS_FORMAT_BIGENDIAN; return( flags ); } /* Vips format adds no new members. */ typedef VipsFormat VipsFormatVips; typedef VipsFormatClass VipsFormatVipsClass; static int vips_format_vips_save( VipsImage *image, const char *filename ) { return( vips_image_write_to_file( image, filename, NULL ) ); } static void vips_format_vips_class_init( VipsFormatVipsClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "vips"; object_class->description = _( "VIPS" ); format_class->priority = 200; format_class->is_a = im_isvips; format_class->header = file2vips; format_class->load = file2vips; format_class->save = vips_format_vips_save; format_class->get_flags = vips_flags; format_class->suffs = vips_suffs; } static void vips_format_vips_init( VipsFormatVips *object ) { } G_DEFINE_TYPE( VipsFormatVips, vips_format_vips, VIPS_TYPE_FORMAT ); /* Called on startup: register the base vips formats. */ void im__format_init( void ) { extern GType vips_format_csv_get_type( void ); extern GType vips_format_ppm_get_type( void ); extern GType vips_format_analyze_get_type( void ); extern GType vips_format_rad_get_type( void ); vips_format_vips_get_type(); #ifdef HAVE_JPEG extern GType vips_format_jpeg_get_type( void ); vips_format_jpeg_get_type(); #endif /*HAVE_JPEG*/ #ifdef HAVE_PNG extern GType vips_format_png_get_type( void ); vips_format_png_get_type(); #endif /*HAVE_PNG*/ #ifdef HAVE_LIBWEBP extern GType vips_format_webp_get_type( void ); vips_format_webp_get_type(); #endif /*HAVE_LIBWEBP*/ vips_format_csv_get_type(); vips_format_ppm_get_type(); vips_format_analyze_get_type(); #ifdef HAVE_OPENEXR extern GType vips_format_exr_get_type( void ); vips_format_exr_get_type(); #endif /*HAVE_OPENEXR*/ #ifdef HAVE_MATIO extern GType vips_format_mat_get_type( void ); vips_format_mat_get_type(); #endif /*HAVE_MATIO*/ #ifdef HAVE_CFITSIO extern GType vips_format_fits_get_type( void ); vips_format_fits_get_type(); #endif /*HAVE_CFITSIO*/ vips_format_rad_get_type(); #ifdef HAVE_MAGICK extern GType vips_format_magick_get_type( void ); vips_format_magick_get_type(); #endif /*HAVE_MAGICK*/ #ifdef HAVE_TIFF extern GType vips_format_tiff_get_type( void ); vips_format_tiff_get_type(); #endif /*HAVE_TIFF*/ extern GType vips_format_openslide_get_type( void ); vips_format_openslide_get_type(); } /* Can this format open this file? */ static void * format_for_file_sub( VipsFormatClass *format, const char *name, const char *filename ) { if( format->is_a ) { if( format->is_a( filename ) ) return( format ); } else if( im_filename_suffix_match( filename, format->suffs ) ) return( format ); return( NULL ); } /** * vips_format_for_file: * @filename: file to find a format for * * Searches for a format you could use to load a file. * * See also: vips_format_read(), vips_format_for_name(). * * Returns: a format on success, %NULL on error */ VipsFormatClass * vips_format_for_file( const char *filename ) { char name[FILENAME_MAX]; char options[FILENAME_MAX]; VipsFormatClass *format; /* Break any options off the name ... eg. "fred.tif:jpeg,tile" * etc. */ im_filename_split( filename, name, options ); if( !im_existsf( "%s", name ) ) { im_error( "VipsFormat", _( "file \"%s\" not found" ), name ); return( NULL ); } if( !(format = (VipsFormatClass *) vips_format_map( (VSListMap2Fn) format_for_file_sub, (void *) filename, (void *) name )) ) { im_error( "VipsFormat", _( "file \"%s\" not a known format" ), name ); return( NULL ); } return( format ); } /* Can we write this filename with this format? Ignore formats without a save * method. */ static void * format_for_name_sub( VipsFormatClass *format, const char *name ) { if( format->save && im_filename_suffix_match( name, format->suffs ) ) return( format ); return( NULL ); } /** * vips_format_for_name: * @filename: name to find a format for * * Searches for a format you could use to save a file. * * See also: vips_format_write(), vips_format_for_file(). * * Returns: a format on success, %NULL on error */ VipsFormatClass * vips_format_for_name( const char *filename ) { VipsFormatClass *format; if( !(format = (VipsFormatClass *) vips_format_map( (VSListMap2Fn) format_for_name_sub, (void *) filename, NULL )) ) { im_error( "VipsFormat", _( "\"%s\" is not a supported image format." ), filename ); return( NULL ); } return( format ); } /** * vips_format_read: * @filename: file to load * @out: write the file to this image * * Searches for a format for this file, then loads the file into @out. * * See also: vips_format_write(). * * Returns: 0 on success, -1 on error */ int vips_format_read( const char *filename, IMAGE *out ) { VipsFormatClass *format; if( !(format = vips_format_for_file( filename )) || format->load( filename, out ) ) return( -1 ); return( 0 ); } /** * vips_format_write: * @in: image to write * @filename: file to write to * * Searches for a format for this name, then saves @im to it. * * See also: vips_format_read(). * * Returns: 0 on success, -1 on error */ int vips_format_write( IMAGE *in, const char *filename ) { VipsFormatClass *format; if( !(format = vips_format_for_name( filename )) || format->save( in, filename ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_cmulnorm.c0000664000175000017500000000376512530402247015676 00000000000000/* im_cmulnorm.c * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 15/4/97 JC * - thrown away and redone in terms of im_multiply() * 9/7/02 JC * - im_sign() broken out, done in terms of that * 28/8/09 * - gtkdoc * - tiny polish */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /** * im_cmulnorm * @in1: input #IMAGE 1 * @in2: input #IMAGE 2 * @out: output #IMAGE * * im_cmulnorm() multiplies two complex images. The complex output is * normalised to 1 by dividing both the real and the imaginary part of each * pel with the norm. This is useful for phase correlation. * * This operation used to be important, but now simply calls im_multiply() * then im_sign(). * * See also: im_multiply(), im_sign(). * * Returns: 0 on success, -1 on error */ int im_cmulnorm( IMAGE *in1, IMAGE *in2, IMAGE *out ) { IMAGE *t1; if( !(t1 = im_open_local( out, "im_cmulnorm:1", "p" )) || im_multiply( in1, in2, t1 ) || im_sign( t1, out ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_maxpos_subpel.c0000664000175000017500000001435412530402247016717 00000000000000/* find position of maximum, subpixel estimation * * Copyright: 2008, Nottingham Trent University * Author: Tom Vajzovic * Written on: 2008-02-07 * * 25/1/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H */ #include #include #include #define MOST_OF( A, B ) ( (A) > 0.9 * (B) ) #define LITTLE_OF( A, B ) ( (B) < 0.1 * (B) ) /** * im_maxpos_subpel: * @in: input image * @x: output position of maximum * @y: output position of maximum * * This function implements: * * "Extension of Phase Correlation to Subpixel Registration" * by H. Foroosh, from IEEE trans. Im. Proc. 11(3), 2002. * * If the best three matches in the correlation are aranged: * * 02 or 01 * 1 2 * * then we return a subpixel match using the ratio of correlations in the * vertical and horizontal dimension. * * ( xs[0], ys[0] ) is the best integer alignment * ( xs[ use_x ], ys[ use_x ] ) is equal in y and (+/-)1 off in x * ( xs[ use_y ], ys[ use_y ] ) is equal in x and (+/-)1 off in y * * Alternatively if the best four matches in the correlation are aranged in * a square: * * 01 or 03 or 02 or 03 * 32 12 31 21 * * then we return a subpixel match weighting with the sum the two on each * side over the sum of all four, but only if all four of them are very * close to the best, and the fifth is nowhere near. * * This alternative method is not described by Foroosh, but is often the * case where the match is close to n-and-a-half pixels in both dimensions. * * See also: im_maxpos(), im_min(), im_stats(). * * Returns: 0 on success, -1 on error */ int im_maxpos_subpel( IMAGE *in, double *x, double *y ){ #define FUNCTION_NAME "im_maxpos_subpel" int xs[5]; int ys[5]; double vals[5]; int xa, ya, xb, yb; double vxa, vya, vxb, vyb; if( im_maxpos_vec( in, xs, ys, vals, 5 )) return -1; #define WRAP_TEST_RETURN() \ \ /* wrap around if we have alignment -1 < d <= 0 */ \ /* (change it to: size - 1 <= d < size ) */ \ \ if( ! xa && in-> Xsize - 1 == xb ) \ xa= in-> Xsize; \ \ else if( ! xb && in-> Xsize - 1 == xa ) \ xb= in-> Xsize; \ \ if( ! ya && in-> Ysize - 1 == yb ) \ ya= in-> Ysize; \ \ else if( ! yb && in-> Ysize - 1 == ya ) \ yb= in-> Ysize; \ \ if( 1 == abs( xb - xa ) && 1 == abs( yb - ya )){ \ *x= ((double)xa) + ((double)( xb - xa )) * ( vxb / ( vxa + vxb )); \ *y= ((double)ya) + ((double)( yb - ya )) * ( vyb / ( vya + vyb )); \ return 0; \ } #define TEST3( A, B ) \ if( xs[0] == xs[A] && ys[0] == ys[B] ){ \ xa= xs[0]; \ ya= ys[0]; \ xb= xs[B]; \ yb= ys[A]; \ vxa= vals[0]; \ vya= vals[0]; \ vxb= vals[B]; \ vyb= vals[A]; \ WRAP_TEST_RETURN() \ } TEST3( 1, 2 ) TEST3( 2, 1 ) if( MOST_OF( vals[1], vals[0] ) && MOST_OF( vals[2], vals[0] ) && MOST_OF( vals[3], vals[0] ) && LITTLE_OF( vals[4], vals[0] )){ #define TEST4( A, B, C, D, E, F, G, H ) \ if( xs[A] == xs[B] && xs[C] == xs[D] && ys[E] == ys[F] && ys[G] == ys[H] ){ \ xa= xs[A]; \ xb= xs[C]; \ ya= ys[E]; \ yb= ys[G]; \ vxa= vals[A] + vals[B]; \ vxb= vals[C] + vals[D]; \ vya= vals[E] + vals[F]; \ vyb= vals[G] + vals[H]; \ WRAP_TEST_RETURN() \ } TEST4( 0, 3, 1, 2, 0, 1, 2, 3 ) TEST4( 0, 1, 2, 3, 0, 3, 1, 2 ) TEST4( 0, 3, 1, 2, 0, 2, 1, 3 ) TEST4( 0, 2, 1, 3, 0, 3, 1, 2 ) } im_warn( FUNCTION_NAME, "registration performed to nearest pixel only: correlation does not have the expected distribution for sub-pixel registration" ); *x= (double) xs[0]; *y= (double) ys[0]; return 0; } vips-8.2.2/libvips/deprecated/Makefile.am0000664000175000017500000000307512530402247015237 00000000000000noinst_LTLIBRARIES = libdeprecated.la libdeprecated_la_SOURCES = \ cimg_dispatch.c \ inplace_dispatch.c \ tone.c \ freq_dispatch.c \ im_linreg.c \ im_point_bilinear.c \ resample_dispatch.c \ im_openslide2vips.c \ im_lab_morph.c \ deprecated_dispatch.c \ mosaicing_dispatch.c \ im_maxpos_subpel.c \ im_align_bands.c \ morph_dispatch.c \ colour_dispatch.c \ convol_dispatch.c \ im_zerox.c \ arith_dispatch.c \ hist_dispatch.c \ other_dispatch.c \ im_maxpos_avg.c \ lazy.c \ im_dif_std.c \ im_simcontr.c \ im_spatres.c \ im_stretch3.c \ im_clamp.c \ cooc_funcs.c \ glds_funcs.c \ im_fav4.c \ im_benchmark.c \ im_gadd.c \ im_gaddim.c \ im_gradcor.c \ im_cmulnorm.c \ im_printlines.c \ im_convsub.c \ im_line.c \ im_measure.c \ im_resize_linear.c \ im_debugim.c \ im_gfadd.c \ im_setbox.c \ rename.c \ vips7compat.c \ dispatch_types.c \ package.c \ im_bernd.c \ im_thresh.c \ im_slice.c \ im_print.c \ im_litecor.c \ im_mask2vips.c \ im_vips2mask.c \ rotmask.c \ rw_mask.c \ im_matcat.c \ im_matinv.c \ im_matmul.c \ im_mattrn.c \ matalloc.c \ mask_dispatch.c \ fits.c \ format.c \ format_dispatch.c \ im_analyze2vips.c \ im_csv2vips.c \ im_exr2vips.c \ im_jpeg2vips.c \ im_magick2vips.c \ im_png2vips.c \ im_webp2vips.c \ im_ppm2vips.c \ im_tiff2vips.c \ im_vips2csv.c \ im_vips2jpeg.c \ im_vips2png.c \ im_vips2webp.c \ im_vips2ppm.c \ im_vips2tiff.c \ conver_dispatch.c \ im_vips2dz.c \ im_freq_mask.c \ matlab.c \ radiance.c \ raw.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/deprecated/rotmask.c0000664000175000017500000000661212530402247015027 00000000000000/* Functions to create offsets for rotating square masks. * * Author: N. Dessipris (Copyright, N. Dessipris 1991) * Written on: 08/05/1991 * Modified on: 28/05/1991 * 12/10/95 JC * - small revisions, needs rewriting really * 7/8/96 JC * - absolutely foul desp code revised * - many bugs and mem leaks fixed * 1/3/99 JC * - oops, fns were not preserving scale and offset * 1/12/10 * - allow any size mask for the 90 degree rotates by using im_rot90(). */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define PIM_RINT 1 */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* The type of the vips operations we support. */ typedef int (*vips_fn)( IMAGE *in, IMAGE *out ); /* Pass a mask through a vips operation, eg. im_rot90(). */ static INTMASK * vapplyimask( INTMASK *in, const char *name, vips_fn fn ) { IMAGE *x; IMAGE *t[2]; DOUBLEMASK *d[2]; INTMASK *out; if( !(x = im_open( name, "p" )) ) return( NULL ); if( !(d[0] = im_local_dmask( x, im_imask2dmask( in, name ) )) || im_open_local_array( x, t, 2, name, "p" ) || im_mask2vips( d[0], t[0] ) || fn( t[0], t[1] ) || !(d[1] = im_local_dmask( x, im_vips2mask( t[1], name ) )) || !(out = im_dmask2imask( d[1], name )) ) { im_close( x ); return( NULL ); } im_close( x ); out->scale = in->scale; out->offset = in->offset; return( out ); } static DOUBLEMASK * vapplydmask( DOUBLEMASK *in, const char *name, vips_fn fn ) { IMAGE *x; IMAGE *t[2]; DOUBLEMASK *out; if( !(x = im_open( name, "p" )) ) return( NULL ); if( im_open_local_array( x, t, 2, name, "p" ) || im_mask2vips( in, t[0] ) || fn( t[0], t[1] ) || !(out = im_vips2mask( t[1], name )) ) { im_close( x ); return( NULL ); } im_close( x ); out->scale = in->scale; out->offset = in->offset; return( out ); } INTMASK * im_rotate_imask90( INTMASK *in, const char *filename ) { return( vapplyimask( in, filename, im_rot90 ) ); } DOUBLEMASK * im_rotate_dmask90( DOUBLEMASK *in, const char *filename ) { return( vapplydmask( in, filename, im_rot90 ) ); } static int im_rot45( IMAGE *in, IMAGE *out ) { VipsImage *t; if( vips_rot45( in, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } INTMASK * im_rotate_imask45( INTMASK *in, const char *filename ) { return( vapplyimask( in, filename, im_rot45 ) ); } DOUBLEMASK * im_rotate_dmask45( DOUBLEMASK *in, const char *filename ) { return( vapplydmask( in, filename, im_rot45 ) ); } vips-8.2.2/libvips/deprecated/im_ppm2vips.c0000664000175000017500000000440612530402247015613 00000000000000/* Read a ppm file. * * 20/12/11 * - just a compat stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include int im_ppm2vips( const char *filename, IMAGE *out ) { VipsImage *t; if( vips_ppmload( filename, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int isppm( const char *filename ) { return( vips_foreign_is_a( "ppmload", filename ) ); } static VipsFormatFlags ppm_flags( const char *filename ) { return( (VipsFormatFlags) vips_foreign_flags( "ppmload", filename ) ); } static const char *ppm_suffs[] = { ".ppm", ".pgm", ".pbm", ".pfm", NULL }; /* ppm format adds no new members. */ typedef VipsFormat VipsFormatPpm; typedef VipsFormatClass VipsFormatPpmClass; static void vips_format_ppm_class_init( VipsFormatPpmClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "ppm"; object_class->description = _( "PPM/PBM/PNM/PFM" ); format_class->is_a = isppm; format_class->load = im_ppm2vips; format_class->save = im_vips2ppm; format_class->get_flags = ppm_flags; format_class->suffs = ppm_suffs; } static void vips_format_ppm_init( VipsFormatPpm *object ) { } G_DEFINE_TYPE( VipsFormatPpm, vips_format_ppm, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/im_spatres.c0000664000175000017500000000747312530402247015523 00000000000000/* @(#) Function which changes the spatial resolution of an image according to * @(#) step * @(#) * @(#) int im_spatres(in, out, step) * @(#) IMAGE *in, *out; * @(#) int step; * @(#) Returns either 0 (sucess) or -1 (fail) * @(#) * @(#) Picture can have any number of channels (max 64). * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 08/11/1989. * Modified on: 19/01/1990. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include int im_spatres( IMAGE *in, IMAGE *out, int step ) { int x, y; /* horizontal and vertical direction */ int z; /* 0 <= z < channel */ int i, j; int rounding, step2, sum; unsigned char *values; unsigned char *input, *cpinput, *cp2input, *line, *cpline, *pnt, *cpnt; int os; /* Check args */ if ( step < 1 ) { im_error( "im_spatres", _( "Invalid step %d" ), step ); return(-1);} if ( (in->Xsize/step == 0)||(in->Ysize/step == 0) ) {im_error("im_spatres", _( "Invalid step %d" ), step);return(-1);} if (im_iocheck(in, out) == -1) return( -1 ); if((in->Coding != IM_CODING_NONE)||(in->BandFmt !=IM_BANDFMT_UCHAR)) { im_error( "im_spatres", "%s", _( "wrong input") ); return(-1); } /* Prepare output */ if (im_cp_desc(out, in) == -1) return( -1 ); out->Xsize = in->Xsize - in->Xsize%step; out->Ysize = in->Ysize - in->Ysize%step; if( im_setupout(out) == -1) return( -1 ); /* Malloc buffer for one 'line' of input data */ os = in->Xsize * in->Bands; line = (unsigned char *)calloc((unsigned)os, sizeof(char)); /* Malloc space for values */ values = (unsigned char *)calloc((unsigned)out->Bands, sizeof(char)); if ( line == NULL || values == NULL ) { im_error( "im_spatres", "%s", _( "calloc failed") ); return(-1); } step2 = step * step; rounding = step2/2; input = (unsigned char *)in->data; for ( y = 0; y < out->Ysize; y += step ) { cpinput = input; input += os * step; /* do the x loop out->Xsize / step times */ cpline = line; for (x = 0; x < out->Xsize; x += step) { cp2input = cpinput; cpinput += step * out->Bands; /* ??? */ for ( z = 0; z < out->Bands; z++ ) { pnt = cp2input + z; sum = 0; for ( j = 0; j < step; j++ ) { cpnt = pnt; pnt += os; for ( i = 0; i < step; i++ ) { sum += (int)*cpnt; cpnt += out->Bands; } } *(values + z) = (PEL)((sum + rounding)/step2); } /* for this x, write step*bands data */ for ( j = 0; j < step; j++ ) for ( z = 0; z < out->Bands; z++ ) *cpline++ = *(values + z); } /* line is now ready. Write now step lines */ for (j = 0; j < step; j++) if ( im_writeline ( y+j, out, (PEL *)line ) == -1 ) { free ( (char *)line ); free ( (char *)values ); return( -1 ); } } /* end of the for (..y..) loop */ free ( (char *)line ); free ( (char *)values ); return(0); } vips-8.2.2/libvips/deprecated/im_print.c0000664000175000017500000000232212530402247015162 00000000000000/* im_print(): print a string to stdout */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* Print a string to stdout, with a "\n". Sometimes useful for debugging * language bindings. */ int im_print( const char *message ) { printf( "%s\n", message ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_vips2dz.c0000664000175000017500000000563312530402247015437 00000000000000/* vips7 compat stub for vips_dzsave() * * 11/6/13 * - from im_vips2tiff() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Turn on IM_REGION_ADDR() range checks, don't delete intermediates. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include int im_vips2dz( IMAGE *in, const char *filename ) { char *p, *q; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char buf[FILENAME_MAX]; int i; VipsForeignDzLayout layout = VIPS_FOREIGN_DZ_LAYOUT_DZ; char *suffix = ".jpeg"; int overlap = 0; int tile_size = 256; VipsForeignDzDepth depth = VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL; gboolean centre = FALSE; VipsAngle angle = VIPS_ANGLE_D0; /* We can't use im_filename_split() --- it assumes that we have a * filename with an extension before the ':', and filename here is * actually a dirname. * * Just split on the first ':'. */ im_strncpy( name, filename, FILENAME_MAX ); if( (p = strchr( name, ':' )) ) { *p = '\0'; im_strncpy( mode, p + 1, FILENAME_MAX ); } strcpy( buf, mode ); p = &buf[0]; if( (q = im_getnextoption( &p )) ) { if( (i = vips_enum_from_nick( "im_vips2dz", VIPS_TYPE_FOREIGN_DZ_LAYOUT, q )) < 0 ) return( -1 ); layout = i; } if( (q = im_getnextoption( &p )) ) suffix = g_strdup( q ); if( (q = im_getnextoption( &p )) ) overlap = atoi( q ); if( (q = im_getnextoption( &p )) ) tile_size = atoi( q ); if( (q = im_getnextoption( &p )) ) { if( (i = vips_enum_from_nick( "im_vips2dz", VIPS_TYPE_FOREIGN_DZ_DEPTH, q )) < 0 ) return( -1 ); depth = i; } if( (q = im_getnextoption( &p )) ) { if( im_isprefix( "cen", q ) ) centre = TRUE; } if( (q = im_getnextoption( &p )) ) { if( (i = vips_enum_from_nick( "im_vips2dz", VIPS_TYPE_ANGLE, q )) < 0 ) return( -1 ); angle = i; } if( vips_dzsave( in, name, "layout", layout, "suffix", suffix, "overlap", overlap, "tile_size", tile_size, "depth", depth, "centre", centre, "angle", angle, NULL ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/deprecated/Makefile.in0000664000175000017500000007416012651721156015262 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/deprecated ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libdeprecated_la_LIBADD = am_libdeprecated_la_OBJECTS = cimg_dispatch.lo inplace_dispatch.lo \ tone.lo freq_dispatch.lo im_linreg.lo im_point_bilinear.lo \ resample_dispatch.lo im_openslide2vips.lo im_lab_morph.lo \ deprecated_dispatch.lo mosaicing_dispatch.lo \ im_maxpos_subpel.lo im_align_bands.lo morph_dispatch.lo \ colour_dispatch.lo convol_dispatch.lo im_zerox.lo \ arith_dispatch.lo hist_dispatch.lo other_dispatch.lo \ im_maxpos_avg.lo lazy.lo im_dif_std.lo im_simcontr.lo \ im_spatres.lo im_stretch3.lo im_clamp.lo cooc_funcs.lo \ glds_funcs.lo im_fav4.lo im_benchmark.lo im_gadd.lo \ im_gaddim.lo im_gradcor.lo im_cmulnorm.lo im_printlines.lo \ im_convsub.lo im_line.lo im_measure.lo im_resize_linear.lo \ im_debugim.lo im_gfadd.lo im_setbox.lo rename.lo \ vips7compat.lo dispatch_types.lo package.lo im_bernd.lo \ im_thresh.lo im_slice.lo im_print.lo im_litecor.lo \ im_mask2vips.lo im_vips2mask.lo rotmask.lo rw_mask.lo \ im_matcat.lo im_matinv.lo im_matmul.lo im_mattrn.lo \ matalloc.lo mask_dispatch.lo fits.lo format.lo \ format_dispatch.lo im_analyze2vips.lo im_csv2vips.lo \ im_exr2vips.lo im_jpeg2vips.lo im_magick2vips.lo \ im_png2vips.lo im_webp2vips.lo im_ppm2vips.lo im_tiff2vips.lo \ im_vips2csv.lo im_vips2jpeg.lo im_vips2png.lo im_vips2webp.lo \ im_vips2ppm.lo im_vips2tiff.lo conver_dispatch.lo \ im_vips2dz.lo im_freq_mask.lo matlab.lo radiance.lo raw.lo libdeprecated_la_OBJECTS = $(am_libdeprecated_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libdeprecated_la_SOURCES) DIST_SOURCES = $(libdeprecated_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libdeprecated.la libdeprecated_la_SOURCES = \ cimg_dispatch.c \ inplace_dispatch.c \ tone.c \ freq_dispatch.c \ im_linreg.c \ im_point_bilinear.c \ resample_dispatch.c \ im_openslide2vips.c \ im_lab_morph.c \ deprecated_dispatch.c \ mosaicing_dispatch.c \ im_maxpos_subpel.c \ im_align_bands.c \ morph_dispatch.c \ colour_dispatch.c \ convol_dispatch.c \ im_zerox.c \ arith_dispatch.c \ hist_dispatch.c \ other_dispatch.c \ im_maxpos_avg.c \ lazy.c \ im_dif_std.c \ im_simcontr.c \ im_spatres.c \ im_stretch3.c \ im_clamp.c \ cooc_funcs.c \ glds_funcs.c \ im_fav4.c \ im_benchmark.c \ im_gadd.c \ im_gaddim.c \ im_gradcor.c \ im_cmulnorm.c \ im_printlines.c \ im_convsub.c \ im_line.c \ im_measure.c \ im_resize_linear.c \ im_debugim.c \ im_gfadd.c \ im_setbox.c \ rename.c \ vips7compat.c \ dispatch_types.c \ package.c \ im_bernd.c \ im_thresh.c \ im_slice.c \ im_print.c \ im_litecor.c \ im_mask2vips.c \ im_vips2mask.c \ rotmask.c \ rw_mask.c \ im_matcat.c \ im_matinv.c \ im_matmul.c \ im_mattrn.c \ matalloc.c \ mask_dispatch.c \ fits.c \ format.c \ format_dispatch.c \ im_analyze2vips.c \ im_csv2vips.c \ im_exr2vips.c \ im_jpeg2vips.c \ im_magick2vips.c \ im_png2vips.c \ im_webp2vips.c \ im_ppm2vips.c \ im_tiff2vips.c \ im_vips2csv.c \ im_vips2jpeg.c \ im_vips2png.c \ im_vips2webp.c \ im_vips2ppm.c \ im_vips2tiff.c \ conver_dispatch.c \ im_vips2dz.c \ im_freq_mask.c \ matlab.c \ radiance.c \ raw.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/deprecated/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/deprecated/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libdeprecated.la: $(libdeprecated_la_OBJECTS) $(libdeprecated_la_DEPENDENCIES) $(EXTRA_libdeprecated_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libdeprecated_la_OBJECTS) $(libdeprecated_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arith_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cimg_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colour_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conver_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convol_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cooc_funcs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deprecated_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dispatch_types.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fits.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freq_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glds_funcs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_align_bands.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_analyze2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_benchmark.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_bernd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_clamp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_cmulnorm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_convsub.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_csv2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_debugim.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_dif_std.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_exr2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_fav4.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_freq_mask.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_gadd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_gaddim.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_gfadd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_gradcor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_jpeg2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_lab_morph.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_line.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_linreg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_litecor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_magick2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_mask2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_matcat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_matinv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_matmul.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_mattrn.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_maxpos_avg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_maxpos_subpel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_measure.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_openslide2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_png2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_point_bilinear.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_ppm2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_print.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_printlines.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_resize_linear.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_setbox.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_simcontr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_slice.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_spatres.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_stretch3.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_thresh.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_tiff2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_vips2csv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_vips2dz.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_vips2jpeg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_vips2mask.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_vips2png.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_vips2ppm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_vips2tiff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_vips2webp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_webp2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_zerox.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inplace_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lazy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mask_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matalloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matlab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mosaicing_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/other_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/package.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/radiance.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raw.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rename.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resample_dispatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rotmask.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rw_mask.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tone.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vips7compat.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/deprecated/im_magick2vips.c0000664000175000017500000000535612620616171016262 00000000000000/* Read a file using libMagick * * 17/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Turn on debugging output. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include "../foreign/magick.h" int im_magick2vips( const char *filename, IMAGE *out ) { #ifdef HAVE_MAGICK /* Old behaviour was always to read all frames. */ return( vips__magick_read( filename, out, TRUE, NULL ) ); #else vips_error( "im_magick2vips", "%s", _( "no libMagick support in your libvips" ) ); return( -1 ); #endif /*HAVE_MAGICK*/ } static int ismagick( const char *filename ) { return( vips_foreign_is_a( "magickload", filename ) ); } static const char *magick_suffs[] = { NULL }; /* magick format adds no new members. */ typedef VipsFormat VipsFormatMagick; typedef VipsFormatClass VipsFormatMagickClass; static void vips_format_magick_class_init( VipsFormatMagickClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "magick"; object_class->description = _( "libMagick-supported" ); format_class->is_a = ismagick; format_class->load = im_magick2vips; format_class->suffs = magick_suffs; /* This can be very slow :-( Use our own jpeg/tiff/png etc. loaders in * preference if we can. */ format_class->priority = -1000; } static void vips_format_magick_init( VipsFormatMagick *object ) { } G_DEFINE_TYPE( VipsFormatMagick, vips_format_magick, VIPS_TYPE_FORMAT ); int im_bufmagick2vips( void *buf, size_t len, IMAGE *out, gboolean header_only ) { VipsImage *t; /* header_only is automatic ... this call will only decompress on * pixel access. */ if( vips_magickload_buffer( buf, len, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } vips-8.2.2/libvips/deprecated/im_csv2vips.c0000664000175000017500000000517012530402247015611 00000000000000/* Read a csv file. * * 16/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "../foreign/csv.h" int im_csv2vips( const char *filename, IMAGE *out ) { /* Read options. */ int start_skip = 0; char *whitespace = " "; char *separator = ";,\t"; int lines = -1; char name[FILENAME_MAX]; char mode[FILENAME_MAX]; char *p, *q, *r; /* Parse mode string. */ im_filename_split( filename, name, mode ); p = &mode[0]; while( (q = im_getnextoption( &p )) ) { if( im_isprefix( "ski", q ) && (r = im_getsuboption( q )) ) start_skip = atoi( r ); else if( im_isprefix( "whi", q ) && (r = im_getsuboption( q )) ) whitespace = r; else if( im_isprefix( "sep", q ) && (r = im_getsuboption( q )) ) separator = r; else if( im_isprefix( "lin", q ) && (r = im_getsuboption( q )) ) lines = atoi( r ); } if( vips__csv_read( name, out, start_skip, lines, whitespace, separator ) ) return( -1 ); return( 0 ); } static const char *csv_suffs[] = { ".csv", NULL }; /* csv format adds no new members. */ typedef VipsFormat VipsFormatCsv; typedef VipsFormatClass VipsFormatCsvClass; static void vips_format_csv_class_init( VipsFormatCsvClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "csv"; object_class->description = _( "CSV" ); format_class->load = im_csv2vips; format_class->save = im_vips2csv; format_class->suffs = csv_suffs; } static void vips_format_csv_init( VipsFormatCsv *object ) { } G_DEFINE_TYPE( VipsFormatCsv, vips_format_csv, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/im_vips2mask.c0000664000175000017500000001325512620716051015755 00000000000000/* im_vips2mask * * Author: J.Cupitt * Written on: 6/6/94 * Modified on: * * 16/10/06 * - allow 1xn-band images too * 23/2/07 * - oop, broken for nx1 m-band images * - now casts to double for you * 1/2/10 * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** * im_vips2mask: * @in: input image * @filename: name for output mask * * Make a mask from an image. All images are cast to %IM_BANDFMT_DOUBLE * before processing. There are two cases for handling bands: * * If the image has a single band, im_vips2mask() will write a mask the same * size as the image. * * If the image has more than one band, it must be one pixel high or wide. In * this case the output mask uses that axis to represent band values. * * See also: im_mask2vips(), im_measure_area(). * * Returns: a #DOUBLEMASK with @outname set as the name, or NULL on error */ DOUBLEMASK * im_vips2mask( IMAGE *in, const char *filename ) { int width, height; DOUBLEMASK *out; /* double* only: cast if necessary. */ if( in->BandFmt != IM_BANDFMT_DOUBLE ) { IMAGE *t; if( !(t = im_open( "im_vips2mask", "p" )) ) return( NULL ); if( im_clip2fmt( in, t, IM_BANDFMT_DOUBLE ) || !(out = im_vips2mask( t, filename )) ) { im_close( t ); return( NULL ); } im_close( t ); return( out ); } /* Check the image. */ if( im_incheck( in ) || im_check_uncoded( "im_vips2mask", in ) ) return( NULL ); if( in->Bands == 1 ) { width = in->Xsize; height = in->Ysize; } else if( in->Xsize == 1 ) { width = in->Bands; height = in->Ysize; } else if( in->Ysize == 1 ) { width = in->Xsize; height = in->Bands; } else { im_error( "im_vips2mask", "%s", _( "one band, nx1, or 1xn images only" ) ); return( NULL ); } if( !(out = im_create_dmask( filename, width, height )) ) return( NULL ); if( in->Bands > 1 && in->Ysize == 1 ) { double *data = (double *) in->data; int x, y; /* Need to transpose: the image is RGBRGBRGB, we need RRRGGGBBB. */ for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) out->coeff[x + y * width] = data[x * height + y]; } else memcpy( out->coeff, in->data, width * height * sizeof( double ) ); out->scale = vips_image_get_scale( in ); out->offset = vips_image_get_offset( in ); return( out ); } INTMASK * im_vips2imask( IMAGE *in, const char *filename ) { int width, height; INTMASK *out; double *data; int x, y; double double_result; int int_result; /* double* only: cast if necessary. */ if( in->BandFmt != IM_BANDFMT_DOUBLE ) { IMAGE *t; if( !(t = im_open( "im_vips2imask", "p" )) ) return( NULL ); if( im_clip2fmt( in, t, IM_BANDFMT_DOUBLE ) || !(out = im_vips2imask( t, filename )) ) { im_close( t ); return( NULL ); } im_close( t ); return( out ); } /* Check the image. */ if( im_incheck( in ) || im_check_uncoded( "im_vips2imask", in ) ) return( NULL ); if( in->Bands == 1 ) { width = in->Xsize; height = in->Ysize; } else if( in->Xsize == 1 ) { width = in->Bands; height = in->Ysize; } else if( in->Ysize == 1 ) { width = in->Xsize; height = in->Bands; } else { im_error( "im_vips2imask", "%s", _( "one band, nx1, or 1xn images only" ) ); return( NULL ); } data = (double *) in->data; if( !(out = im_create_imask( filename, width, height )) ) return( NULL ); /* We want to make an intmask which has the same input to output ratio * as the double image. * * Imagine convolving with the double image, what's the ratio of * brightness between input and output? We want the same ratio for the * int version, if we can. * * Imaging an input image where every pixel is 1, what will the output * be? */ double_result = 0; for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) double_result += data[x + width * y]; double_result /= vips_image_get_scale( in ); for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) if( in->Bands > 1 && in->Ysize == 1 ) /* Need to transpose: the image is RGBRGBRGB, * we need RRRGGGBBB. */ out->coeff[x + y * width] = VIPS_RINT( data[x * height + y] ); else out->coeff[x + y * width] = VIPS_RINT( data[x + y * width] ); out->scale = VIPS_RINT( vips_image_get_scale( in ) ); if( out->scale == 0 ) out->scale = 1; out->offset = VIPS_RINT( vips_image_get_offset( in ) ); /* Now convolve a 1 everywhere image with the int version we've made, * what do we get? */ int_result = 0; for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) int_result += out->coeff[x + width * y]; int_result /= out->scale; /* And adjust the scale to get as close to a match as we can. */ out->scale = VIPS_RINT( out->scale + (int_result - double_result) ); if( out->scale == 0 ) out->scale = 1; return( out ); } vips-8.2.2/libvips/deprecated/mosaicing_dispatch.c0000664000175000017500000004515512530402247017204 00000000000000/* Function dispatch tables for mosaicing. * * J. Cupitt, 23/2/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* Merge args. */ static im_arg_desc merge_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "dx" ), IM_INPUT_INT( "dy" ), IM_INPUT_INT( "mwidth" ) }; /* Merge1 args. */ static im_arg_desc merge1_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xr1" ), IM_INPUT_INT( "yr1" ), IM_INPUT_INT( "xs1" ), IM_INPUT_INT( "ys1" ), IM_INPUT_INT( "xr2" ), IM_INPUT_INT( "yr2" ), IM_INPUT_INT( "xs2" ), IM_INPUT_INT( "ys2" ), IM_INPUT_INT( "mwidth" ) }; /* Mosaic args. */ static im_arg_desc mosaic_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "bandno" ), IM_INPUT_INT( "xr" ), IM_INPUT_INT( "yr" ), IM_INPUT_INT( "xs" ), IM_INPUT_INT( "ys" ), IM_INPUT_INT( "halfcorrelation" ), IM_INPUT_INT( "halfarea" ), IM_INPUT_INT( "balancetype" ), IM_INPUT_INT( "mwidth" ) }; /* Mosaic1 args. */ static im_arg_desc mosaic1_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "bandno" ), IM_INPUT_INT( "xr1" ), IM_INPUT_INT( "yr1" ), IM_INPUT_INT( "xs1" ), IM_INPUT_INT( "ys1" ), IM_INPUT_INT( "xr2" ), IM_INPUT_INT( "yr2" ), IM_INPUT_INT( "xs2" ), IM_INPUT_INT( "ys2" ), IM_INPUT_INT( "halfcorrelation" ), IM_INPUT_INT( "halfarea" ), IM_INPUT_INT( "balancetype" ), IM_INPUT_INT( "mwidth" ) }; /* Call im_lrmosaic via arg vector. */ static int lrmosaic_vec( im_object *argv ) { int bandno = *((int *) argv[3]); int xr = *((int *) argv[4]); int yr = *((int *) argv[5]); int xs = *((int *) argv[6]); int ys = *((int *) argv[7]); int halfcorrelation = *((int *) argv[8]); int halfarea = *((int *) argv[9]); int balancetype = *((int *) argv[10]); int mwidth = *((int *) argv[11]); return( im_lrmosaic( argv[0], argv[1], argv[2], bandno, xr, yr, xs, ys, halfcorrelation, halfarea, balancetype, mwidth ) ); } /* Call im_lrmosaic1 via arg vector. */ static int lrmosaic1_vec( im_object *argv ) { int bandno = *((int *) argv[3]); int xr1 = *((int *) argv[4]); int yr1 = *((int *) argv[5]); int xs1 = *((int *) argv[6]); int ys1 = *((int *) argv[7]); int xr2 = *((int *) argv[8]); int yr2 = *((int *) argv[9]); int xs2 = *((int *) argv[10]); int ys2 = *((int *) argv[11]); int halfcorrelation = *((int *) argv[12]); int halfarea = *((int *) argv[13]); int balancetype = *((int *) argv[14]); int mwidth = *((int *) argv[15]); return( im_lrmosaic1( argv[0], argv[1], argv[2], bandno, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, halfcorrelation, halfarea, balancetype, mwidth ) ); } /* Description of im_lrmosaic. */ static im_function lrmosaic_desc = { "im_lrmosaic", /* Name */ "left-right mosaic of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ lrmosaic_vec, /* Dispatch function */ IM_NUMBER( mosaic_args ), /* Size of arg list */ mosaic_args /* Arg list */ }; static im_arg_desc find_overlap_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_INPUT_INT( "bandno" ), IM_INPUT_INT( "xr" ), IM_INPUT_INT( "yr" ), IM_INPUT_INT( "xs" ), IM_INPUT_INT( "ys" ), IM_INPUT_INT( "halfcorrelation" ), IM_INPUT_INT( "halfarea" ), IM_OUTPUT_INT( "dx0" ), IM_OUTPUT_INT( "dy0" ), IM_OUTPUT_DOUBLE( "scale1" ), IM_OUTPUT_DOUBLE( "angle1" ), IM_OUTPUT_DOUBLE( "dx1" ), IM_OUTPUT_DOUBLE( "dy1" ) }; /* Call im__find_lroverlap via arg vector. */ static int find_lroverlap_vec( im_object *argv ) { int bandno = *((int *) argv[2]); int xr = *((int *) argv[3]); int yr = *((int *) argv[4]); int xs = *((int *) argv[5]); int ys = *((int *) argv[6]); int halfcorrelation = *((int *) argv[7]); int halfarea = *((int *) argv[8]); int *dx0 = (int *) argv[9]; int *dy0 = (int *) argv[10]; double *scale1 = (double *) argv[11]; double *angle1 = (double *) argv[12]; double *dx1 = (double *) argv[13]; double *dy1 = (double *) argv[14]; IMAGE *t; int result; if( !(t = im_open( "find_lroverlap_vec", "p" )) ) return( -1 ); result = im__find_lroverlap( argv[0], argv[1], t, bandno, xr, yr, xs, ys, halfcorrelation, halfarea, dx0, dy0, scale1, angle1, dx1, dy1 ); im_close( t ); return( result ); } /* Description of im__find_lroverlap. */ static im_function find_lroverlap_desc = { "im__find_lroverlap", /* Name */ "search for left-right overlap of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ find_lroverlap_vec, /* Dispatch function */ IM_NUMBER( find_overlap_args ), /* Size of arg list */ find_overlap_args /* Arg list */ }; /* Description of im_lrmosaic1. */ static im_function lrmosaic1_desc = { "im_lrmosaic1", /* Name */ "first-order left-right mosaic of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ lrmosaic1_vec, /* Dispatch function */ IM_NUMBER( mosaic1_args ), /* Size of arg list */ mosaic1_args /* Arg list */ }; /* Call im_tbmosaic via arg vector. */ static int tbmosaic_vec( im_object *argv ) { int bandno = *((int *) argv[3]); int x1 = *((int *) argv[4]); int y1 = *((int *) argv[5]); int x2 = *((int *) argv[6]); int y2 = *((int *) argv[7]); int halfcorrelation = *((int *) argv[8]); int halfarea = *((int *) argv[9]); int balancetype = *((int *) argv[10]); int mwidth = *((int *) argv[11]); return( im_tbmosaic( argv[0], argv[1], argv[2], bandno, x1, y1, x2, y2, halfcorrelation, halfarea, balancetype, mwidth ) ); } /* Call im_tbmosaic1 via arg vector. */ static int tbmosaic1_vec( im_object *argv ) { int bandno = *((int *) argv[3]); int xr1 = *((int *) argv[4]); int yr1 = *((int *) argv[5]); int xs1 = *((int *) argv[6]); int ys1 = *((int *) argv[7]); int xr2 = *((int *) argv[8]); int yr2 = *((int *) argv[9]); int xs2 = *((int *) argv[10]); int ys2 = *((int *) argv[11]); int halfcorrelation = *((int *) argv[12]); int halfarea = *((int *) argv[13]); int balancetype = *((int *) argv[14]); int mwidth = *((int *) argv[15]); return( im_tbmosaic1( argv[0], argv[1], argv[2], bandno, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, halfcorrelation, halfarea, balancetype, mwidth ) ); } /* Call im__find_tboverlap via arg vector. */ static int find_tboverlap_vec( im_object *argv ) { int bandno = *((int *) argv[2]); int xr = *((int *) argv[3]); int yr = *((int *) argv[4]); int xs = *((int *) argv[5]); int ys = *((int *) argv[6]); int halfcorrelation = *((int *) argv[7]); int halfarea = *((int *) argv[8]); int *dx0 = (int *) argv[9]; int *dy0 = (int *) argv[10]; double *scale1 = (double *) argv[11]; double *angle1 = (double *) argv[12]; double *dx1 = (double *) argv[13]; double *dy1 = (double *) argv[14]; IMAGE *t; int result; if( !(t = im_open( "find_tboverlap_vec", "p" )) ) return( -1 ); result = im__find_tboverlap( argv[0], argv[1], t, bandno, xr, yr, xs, ys, halfcorrelation, halfarea, dx0, dy0, scale1, angle1, dx1, dy1 ); im_close( t ); return( result ); } /* Description of im__find_tboverlap. */ static im_function find_tboverlap_desc = { "im__find_tboverlap", /* Name */ "search for top-bottom overlap of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ find_tboverlap_vec, /* Dispatch function */ IM_NUMBER( find_overlap_args ), /* Size of arg list */ find_overlap_args /* Arg list */ }; /* Description of im_tbmosaic. */ static im_function tbmosaic_desc = { "im_tbmosaic", /* Name */ "top-bottom mosaic of in1 and in2",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ tbmosaic_vec, /* Dispatch function */ IM_NUMBER( mosaic_args ), /* Size of arg list */ mosaic_args /* Arg list */ }; /* Description of im_tbmosaic1. */ static im_function tbmosaic1_desc = { "im_tbmosaic1", /* Name */ "first-order top-bottom mosaic of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ tbmosaic1_vec, /* Dispatch function */ IM_NUMBER( mosaic1_args ), /* Size of arg list */ mosaic1_args /* Arg list */ }; /* Call im_lrmerge via arg vector. */ static int lrmerge_vec( im_object *argv ) { int dx = *((int *) argv[3]); int dy = *((int *) argv[4]); int mwidth = *((int *) argv[5]); return( im_lrmerge( argv[0], argv[1], argv[2], dx, dy, mwidth ) ); } /* Call im_lrmerge1 via arg vector. */ static int lrmerge1_vec( im_object *argv ) { int xr1 = *((int *) argv[3]); int yr1 = *((int *) argv[4]); int xs1 = *((int *) argv[5]); int ys1 = *((int *) argv[6]); int xr2 = *((int *) argv[7]); int yr2 = *((int *) argv[8]); int xs2 = *((int *) argv[9]); int ys2 = *((int *) argv[10]); int mwidth = *((int *) argv[11]); return( im_lrmerge1( argv[0], argv[1], argv[2], xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, mwidth ) ); } /* Description of im_lrmerge. */ static im_function lrmerge_desc = { "im_lrmerge", /* Name */ "left-right merge of in1 and in2",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ lrmerge_vec, /* Dispatch function */ IM_NUMBER( merge_args ), /* Size of arg list */ merge_args /* Arg list */ }; /* Description of im_lrmerge1. */ static im_function lrmerge1_desc = { "im_lrmerge1", /* Name */ "first-order left-right merge of ref and sec",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ lrmerge1_vec, /* Dispatch function */ IM_NUMBER( merge1_args ), /* Size of arg list */ merge1_args /* Arg list */ }; /* Call im_tbmerge via arg vector. */ static int tbmerge_vec( im_object *argv ) { int dx = *((int *) argv[3]); int dy = *((int *) argv[4]); int mwidth = *((int *) argv[5]); return( im_tbmerge( argv[0], argv[1], argv[2], dx, dy, mwidth ) ); } /* Call im_tbmerge1 via arg vector. */ static int tbmerge1_vec( im_object *argv ) { int xr1 = *((int *) argv[3]); int yr1 = *((int *) argv[4]); int xs1 = *((int *) argv[5]); int ys1 = *((int *) argv[6]); int xr2 = *((int *) argv[7]); int yr2 = *((int *) argv[8]); int xs2 = *((int *) argv[9]); int ys2 = *((int *) argv[10]); int mwidth = *((int *) argv[11]); return( im_tbmerge1( argv[0], argv[1], argv[2], xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, mwidth ) ); } /* Description of im_tbmerge. */ static im_function tbmerge_desc = { "im_tbmerge", /* Name */ "top-bottom merge of in1 and in2",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ tbmerge_vec, /* Dispatch function */ IM_NUMBER( merge_args ), /* Size of arg list */ merge_args /* Arg list */ }; /* Description of im_tbmerge1. */ static im_function tbmerge1_desc = { "im_tbmerge1", /* Name */ "first-order top-bottom merge of in1 and in2",/* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ tbmerge1_vec, /* Dispatch function */ IM_NUMBER( merge1_args ), /* Size of arg list */ merge1_args /* Arg list */ }; /* match_linear args */ static im_arg_desc match_linear_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xref1" ), IM_INPUT_INT( "yref1" ), IM_INPUT_INT( "xsec1" ), IM_INPUT_INT( "ysec1" ), IM_INPUT_INT( "xref2" ), IM_INPUT_INT( "yref2" ), IM_INPUT_INT( "xsec2" ), IM_INPUT_INT( "ysec2" ) }; /* Call im_match_linear via arg vector. */ static int match_linear_vec( im_object *argv ) { int xref1 = *((int *) argv[3]); int yref1 = *((int *) argv[4]); int xsec1 = *((int *) argv[5]); int ysec1 = *((int *) argv[6]); int xref2 = *((int *) argv[7]); int yref2 = *((int *) argv[8]); int xsec2 = *((int *) argv[9]); int ysec2 = *((int *) argv[10]); return( im_match_linear( argv[0], argv[1], argv[2], xref1, yref1, xsec1, ysec1, xref2, yref2, xsec2, ysec2 ) ); } /* Description of im_match_linear. */ static im_function match_linear_desc = { "im_match_linear", /* Name */ "resample ref so that tie-points match", IM_FN_PIO, /* Flags */ match_linear_vec, /* Dispatch function */ IM_NUMBER( match_linear_args ), /* Size of arg list */ match_linear_args /* Arg list */ }; /* match_linear_search args */ static im_arg_desc match_linear_search_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xref1" ), IM_INPUT_INT( "yref1" ), IM_INPUT_INT( "xsec1" ), IM_INPUT_INT( "ysec1" ), IM_INPUT_INT( "xref2" ), IM_INPUT_INT( "yref2" ), IM_INPUT_INT( "xsec2" ), IM_INPUT_INT( "ysec2" ), IM_INPUT_INT( "hwindowsize" ), IM_INPUT_INT( "hsearchsize" ) }; /* Call im_match_linear_search via arg vector. */ static int match_linear_search_vec( im_object *argv ) { int xref1 = *((int *) argv[3]); int yref1 = *((int *) argv[4]); int xsec1 = *((int *) argv[5]); int ysec1 = *((int *) argv[6]); int xref2 = *((int *) argv[7]); int yref2 = *((int *) argv[8]); int xsec2 = *((int *) argv[9]); int ysec2 = *((int *) argv[10]); int hwin = *((int *) argv[11]); int hsrch = *((int *) argv[12]); return( im_match_linear_search( argv[0], argv[1], argv[2], xref1, yref1, xsec1, ysec1, xref2, yref2, xsec2, ysec2, hwin, hsrch ) ); } /* Description of im_match_linear_search. */ static im_function match_linear_search_desc = { "im_match_linear_search", /* Name */ "search sec, then resample so that tie-points match", IM_FN_PIO, /* Flags */ match_linear_search_vec, /* Dispatch function */ IM_NUMBER( match_linear_search_args ),/* Size of arg list */ match_linear_search_args /* Arg list */ }; /* correl args */ static im_arg_desc correl_args[] = { IM_INPUT_IMAGE( "ref" ), IM_INPUT_IMAGE( "sec" ), IM_INPUT_INT( "xref" ), IM_INPUT_INT( "yref" ), IM_INPUT_INT( "xsec" ), IM_INPUT_INT( "ysec" ), IM_INPUT_INT( "hwindowsize" ), IM_INPUT_INT( "hsearchsize" ), IM_OUTPUT_DOUBLE( "correlation" ), IM_OUTPUT_INT( "x" ), IM_OUTPUT_INT( "y" ) }; /* Call im_correl via arg vector. */ static int correl_vec( im_object *argv ) { int xref = *((int *) argv[2]); int yref = *((int *) argv[3]); int xsec = *((int *) argv[4]); int ysec = *((int *) argv[5]); int cor = *((int *) argv[6]); int area = *((int *) argv[7]); int *x = (int *) argv[8]; int *y = (int *) argv[9]; double *correlation = (double *) argv[10]; return( im_correl( argv[0], argv[1], xref, yref, xsec, ysec, cor, area, correlation, x, y ) ); } /* Description of im_correl. */ static im_function correl_desc = { "im_correl", /* Name */ "search area around sec for match for area around ref", IM_FN_PIO, /* Flags */ correl_vec, /* Dispatch function */ IM_NUMBER( correl_args ), /* Size of arg list */ correl_args /* Arg list */ }; /* global_balance args */ static im_arg_desc global_balance_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "gamma" ) }; /* Call im_global_balance via arg vector. */ static int global_balance_vec( im_object *argv ) { double gamma = *((double *) argv[2]); return( im_global_balance( argv[0], argv[1], gamma ) ); } /* Description of im_global_balance. */ static im_function global_balance_desc = { "im_global_balance", /* Name */ "automatically rebuild mosaic with balancing", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ global_balance_vec, /* Dispatch function */ IM_NUMBER( global_balance_args ), /* Size of arg list */ global_balance_args /* Arg list */ }; /* Call im_global_balancef via arg vector. */ static int global_balancef_vec( im_object *argv ) { double gamma = *((double *) argv[2]); return( im_global_balancef( argv[0], argv[1], gamma ) ); } /* Description of im_global_balancef. */ static im_function global_balancef_desc = { "im_global_balancef", /* Name */ "automatically rebuild mosaic with balancing, float output", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ global_balancef_vec, /* Dispatch function */ IM_NUMBER( global_balance_args ), /* Size of arg list */ global_balance_args /* Arg list */ }; /* remosaic args */ static im_arg_desc remosaic_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "old_str" ), IM_INPUT_STRING( "new_str" ) }; /* Call im_remosaic via arg vector. */ static int remosaic_vec( im_object *argv ) { return( im_remosaic( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_remosaic. */ static im_function remosaic_desc = { "im_remosaic", /* Name */ "automatically rebuild mosaic with new files", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ remosaic_vec, /* Dispatch function */ IM_NUMBER( remosaic_args ),/* Size of arg list */ remosaic_args /* Arg list */ }; static int align_bands_vec( im_object *argv ){ return im_align_bands( (IMAGE*)argv[0], (IMAGE*)argv[1] ); } static im_arg_desc align_bands_arg_types[]= { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static im_function align_bands_desc= { "im_align_bands", "align the bands of an image", 0, align_bands_vec, IM_NUMBER( align_bands_arg_types ), align_bands_arg_types }; static int maxpos_subpel_vec( im_object *argv ){ return im_maxpos_subpel( (IMAGE*)argv[0], (double*)argv[1], (double*)argv[2] ); } static im_arg_desc maxpos_subpel_arg_types[]= { IM_INPUT_IMAGE( "im" ), IM_OUTPUT_DOUBLE( "x" ), IM_OUTPUT_DOUBLE( "y" ) }; static im_function maxpos_subpel_desc= { "im_maxpos_subpel", "subpixel position of maximum of (phase correlation) image", IM_FN_PIO, maxpos_subpel_vec, IM_NUMBER( maxpos_subpel_arg_types ), maxpos_subpel_arg_types }; /* Package up all these functions. */ static im_function *mos_list[] = { &align_bands_desc, &correl_desc, &find_lroverlap_desc, &find_tboverlap_desc, &global_balance_desc, &global_balancef_desc, &lrmerge_desc, &lrmerge1_desc, &lrmosaic_desc, &lrmosaic1_desc, &match_linear_desc, &match_linear_search_desc, &maxpos_subpel_desc, &remosaic_desc, &tbmerge_desc, &tbmerge1_desc, &tbmosaic_desc, &tbmosaic1_desc }; /* Package of functions. */ im_package im__mosaicing = { "mosaicing", IM_NUMBER( mos_list ), mos_list }; vips-8.2.2/libvips/deprecated/radiance.c0000664000175000017500000000420512530402247015111 00000000000000/* Read Radiance (.hdr) files * * 20/12/11 * - just a compat stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include int im_rad2vips( const char *filename, IMAGE *out ) { VipsImage *t; if( vips_radload( filename, &t, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int israd( const char *filename ) { return( vips_foreign_is_a( "radload", filename ) ); } int im_vips2rad( IMAGE *in, const char *filename ) { return( vips_radsave( in, filename, NULL ) ); } static const char *rad_suffs[] = { ".hdr", NULL }; typedef VipsFormat VipsFormatRad; typedef VipsFormatClass VipsFormatRadClass; static void vips_format_rad_class_init( VipsFormatRadClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "rad"; object_class->description = _( "Radiance" ); format_class->is_a = israd; format_class->load = im_rad2vips; format_class->save = im_vips2rad; format_class->suffs = rad_suffs; } static void vips_format_rad_init( VipsFormatRad *object ) { } G_DEFINE_TYPE( VipsFormatRad, vips_format_rad, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/freq_dispatch.c0000664000175000017500000001720112530402247016157 00000000000000/* Function dispatch tables for freq_filt. * * J. Cupitt, 23/2/95 * 22/4/97 JC * - oops, im_freqflt() was wrong */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Args to im_create_fmask(). */ static im_arg_desc create_fmask_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "type" ), IM_INPUT_DOUBLE( "p1" ), IM_INPUT_DOUBLE( "p2" ), IM_INPUT_DOUBLE( "p3" ), IM_INPUT_DOUBLE( "p4" ), IM_INPUT_DOUBLE( "p5" ) }; /* Call im_create_fmask via arg vector. */ static int create_fmask_vec( im_object *argv ) { int width = *((int *) argv[1]); int height = *((int *) argv[2]); int type = *((int *) argv[3]); double p1 = *((double *) argv[4]); double p2 = *((double *) argv[5]); double p3 = *((double *) argv[6]); double p4 = *((double *) argv[7]); double p5 = *((double *) argv[8]); return( im_create_fmask( argv[0], width, height, type, p1, p2, p3, p4, p5 ) ); } /* Description of im_create_fmask. */ static im_function create_fmask_desc = { "im_create_fmask", /* Name */ "create frequency domain filter mask", 0, /* Flags */ create_fmask_vec, /* Dispatch function */ IM_NUMBER( create_fmask_args ), /* Size of arg list */ create_fmask_args /* Arg list */ }; /* Args to im_flt_image_freq(). */ static im_arg_desc flt_image_freq_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "type" ), IM_INPUT_DOUBLE( "p1" ), IM_INPUT_DOUBLE( "p2" ), IM_INPUT_DOUBLE( "p3" ), IM_INPUT_DOUBLE( "p4" ), IM_INPUT_DOUBLE( "p5" ) }; /* Call im_flt_image_freq via arg vector. */ static int flt_image_freq_vec( im_object *argv ) { int type = *((int *) argv[2]); double p1 = *((double *) argv[3]); double p2 = *((double *) argv[4]); double p3 = *((double *) argv[5]); double p4 = *((double *) argv[6]); double p5 = *((double *) argv[7]); return( im_flt_image_freq( argv[0], argv[1], type, p1, p2, p3, p4, p5 ) ); } /* Description of im_flt_image_freq. */ static im_function flt_image_freq_desc = { "im_flt_image_freq", /* Name */ "frequency domain filter image", 0, /* Flags */ flt_image_freq_vec, /* Dispatch function */ IM_NUMBER( flt_image_freq_args ), /* Size of arg list */ flt_image_freq_args /* Arg list */ }; /* Args to im_fractsurf(). */ static im_arg_desc fractsurf_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "size" ), IM_INPUT_DOUBLE( "dimension" ) }; /* Call im_fractsurf via arg vector. */ static int fractsurf_vec( im_object *argv ) { int size = *((int *) argv[1]); double dim = *((double *) argv[2]); return( im_fractsurf( argv[0], size, dim ) ); } /* Description of im_fractsurf. */ static im_function fractsurf_desc = { "im_fractsurf", /* Name */ "generate a fractal surface of given dimension", IM_FN_TRANSFORM, /* Flags */ fractsurf_vec, /* Dispatch function */ IM_NUMBER( fractsurf_args ), /* Size of arg list */ fractsurf_args /* Arg list */ }; /* Args to im_freqflt(). */ static im_arg_desc freqflt_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_IMAGE( "mask" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_freqflt via arg vector. */ static int freqflt_vec( im_object *argv ) { return( im_freqflt( argv[0], argv[1], argv[2] ) ); } /* Description of im_freqflt. */ static im_function freqflt_desc = { "im_freqflt", /* Name */ "frequency-domain filter of in with mask", IM_FN_TRANSFORM, /* Flags */ freqflt_vec, /* Dispatch function */ IM_NUMBER( freqflt_args ), /* Size of arg list */ freqflt_args /* Arg list */ }; /* Call im_disp_ps via arg vector. */ static int disp_ps_vec( im_object *argv ) { return( im_disp_ps( argv[0], argv[1] ) ); } /* Description of im_disp_ps. */ static im_function disp_ps_desc = { "im_disp_ps", /* Name */ "make displayable power spectrum", IM_FN_TRANSFORM, /* Flags */ disp_ps_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rotquad via arg vector. */ static int rotquad_vec( im_object *argv ) { return( im_rotquad( argv[0], argv[1] ) ); } /* Description of im_rotquad. */ static im_function rotquad_desc = { "im_rotquad", /* Name */ "rotate image quadrants to move origin to centre", IM_FN_TRANSFORM, /* Flags */ rotquad_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_fwfft via arg vector. */ static int fwfft_vec( im_object *argv ) { return( im_fwfft( argv[0], argv[1] ) ); } /* Description of im_fwfft. */ static im_function fwfft_desc = { "im_fwfft", /* Name */ "forward fast-fourier transform", IM_FN_TRANSFORM, /* Flags */ fwfft_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_invfft via arg vector. */ static int invfft_vec( im_object *argv ) { return( im_invfft( argv[0], argv[1] ) ); } /* Description of im_invfft. */ static im_function invfft_desc = { "im_invfft", /* Name */ "inverse fast-fourier transform", IM_FN_TRANSFORM, /* Flags */ invfft_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_invfftr via arg vector. */ static int invfftr_vec( im_object *argv ) { return( im_invfftr( argv[0], argv[1] ) ); } /* Description of im_invfftr. */ static im_function invfftr_desc = { "im_invfftr", /* Name */ "real part of inverse fast-fourier transform", IM_FN_TRANSFORM, /* Flags */ invfftr_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_phasecor_fft via arg vector. */ static int phasecor_fft_vec( im_object *argv ) { return( im_phasecor_fft( argv[0], argv[1], argv[2] ) ); } /* Description of im_phasecor_fft. */ static im_function phasecor_fft_desc = { "im_phasecor_fft", /* Name */ "non-normalised correlation of gradient of in2 within in1", IM_FN_TRANSFORM, /* Flags */ phasecor_fft_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Package up all these functions. */ static im_function *freq_list[] = { &create_fmask_desc, &disp_ps_desc, &flt_image_freq_desc, &fractsurf_desc, &freqflt_desc, &fwfft_desc, &rotquad_desc, &invfft_desc, &phasecor_fft_desc, &invfftr_desc }; /* Package of functions. */ im_package im__freq_filt = { "freq_filt", IM_NUMBER( freq_list ), freq_list }; vips-8.2.2/libvips/deprecated/inplace_dispatch.c0000664000175000017500000003344612530402247016646 00000000000000/* Function dispatch tables for inplace. * * J. Cupitt, 8/2/95 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* Calculate a pixel for an image from a vec of double. Valid while im is * valid. */ VipsPel * im__vector_to_ink( const char *domain, IMAGE *im, int n, double *vec ) { IMAGE *t[3]; double *zeros; int i; if( im_check_vector( domain, n, im ) ) return( NULL ); if( im_open_local_array( im, t, 3, domain, "t" ) || !(zeros = IM_ARRAY( im, n, double )) ) return( NULL ); for( i = 0; i < n; i++ ) zeros[i] = 0.0; if( im_black( t[0], 1, 1, im->Bands ) || im_lintra_vec( n, zeros, t[0], vec, t[1] ) || im_clip2fmt( t[1], t[2], im->BandFmt ) ) return( NULL ); return( t[2]->data ); } double * im__ink_to_vector( const char *domain, IMAGE *im, VipsPel *ink ) { double *vec; int i; if( im_check_uncoded( "im__ink_to_vector", im ) || im_check_noncomplex( "im__ink_to_vector", im ) ) return( NULL ); if( !(vec = IM_ARRAY( NULL, im->Bands, double )) ) return( NULL ); #define READ( TYPE ) \ vec[i] = ((TYPE *) ink)[i]; for( i = 0; i < im->Bands; i++ ) switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: READ( unsigned char ); break; case IM_BANDFMT_CHAR: READ( signed char ); break; case IM_BANDFMT_USHORT: READ( unsigned short ); break; case IM_BANDFMT_SHORT: READ( signed short ); break; case IM_BANDFMT_UINT: READ( unsigned int ); break; case IM_BANDFMT_INT: READ( signed int ); break; case IM_BANDFMT_FLOAT: READ( float ); break; case IM_BANDFMT_DOUBLE: READ( double ); break; default: g_assert( 0 ); } return( vec ); } /* Args for im_draw_image. */ static im_arg_desc draw_image_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_IMAGE( "sub" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ) }; /* Call im_draw_image via arg vector. */ static int draw_image_vec( im_object *argv ) { int x = *((int *) argv[2]); int y = *((int *) argv[3]); return( im_draw_image( argv[0], argv[1], x, y ) ); } /* Description of im_draw_image. */ static im_function draw_image_desc = { "im_draw_image", /* Name */ "draw image sub inside image main at position (x,y)", 0, /* Flags */ draw_image_vec, /* Dispatch function */ IM_NUMBER( draw_image_args ), /* Size of arg list */ draw_image_args /* Arg list */ }; /* Args for im_lineset. */ static im_arg_desc lineset_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_IMAGE( "mask" ), IM_INPUT_IMAGE( "ink" ), IM_INPUT_INTVEC( "x1" ), IM_INPUT_INTVEC( "y1" ), IM_INPUT_INTVEC( "x2" ), IM_INPUT_INTVEC( "y2" ) }; /* Call im_lineset via arg vector. */ static int lineset_vec( im_object *argv ) { im_intvec_object *x1v = (im_intvec_object *) argv[4]; im_intvec_object *y1v = (im_intvec_object *) argv[5]; im_intvec_object *x2v = (im_intvec_object *) argv[6]; im_intvec_object *y2v = (im_intvec_object *) argv[7]; if( x1v->n != y1v->n || x1v->n != x2v->n || x1v->n != y2v->n ) { im_error( "im_lineset", "%s", _( "vectors not same length" ) ); return( -1 ); } return( im_lineset( argv[0], argv[1], argv[2], argv[3], x1v->n, x1v->vec, y1v->vec, x2v->vec, y2v->vec ) ); } /* Description of im_lineset. */ static im_function lineset_desc = { "im_lineset", /* Name */ "draw line between points (x1,y1) and (x2,y2)", 0, /* Flags */ lineset_vec, /* Dispatch function */ IM_NUMBER( lineset_args ), /* Size of arg list */ lineset_args /* Arg list */ }; /* Args for im_draw_mask. */ static im_arg_desc draw_mask_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_IMAGE( "mask" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_mask via arg vector. */ static int draw_mask_vec( im_object *argv ) { IMAGE *image = argv[0]; IMAGE *mask = argv[1]; int x = *((int *) argv[2]); int y = *((int *) argv[3]); im_doublevec_object *dv = (im_doublevec_object *) argv[4]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_mask", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_mask( image, mask, x, y, ink ) ); } /* Description of im_draw_mask. */ static im_function draw_mask_desc = { "im_draw_mask", /* Name */ "draw mask sub inside image main at position (x,y)", 0, /* Flags */ draw_mask_vec, /* Dispatch function */ IM_NUMBER( draw_mask_args ), /* Size of arg list */ draw_mask_args /* Arg list */ }; /* Args for im_draw_flood_blob(). */ static im_arg_desc draw_flood_blob_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_flood_blob() via arg vector. */ static int draw_flood_blob_vec( im_object *argv ) { IMAGE *image = argv[0]; int x = *((int *) argv[1]); int y = *((int *) argv[2]); im_doublevec_object *dv = (im_doublevec_object *) argv[3]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_flood_blob", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_flood_blob( image, x, y, ink, NULL ) ); } /* Description of im_draw_flood_blob(). */ static im_function draw_flood_blob_desc = { "im_draw_flood_blob", /* Name */ "flood with ink from x, y while pixel == start", 0, /* Flags */ draw_flood_blob_vec, /* Dispatch function */ IM_NUMBER( draw_flood_blob_args ),/* Size of arg list */ draw_flood_blob_args /* Arg list */ }; /* Args for im_draw_flood(). */ static im_arg_desc draw_flood_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_flood() via arg vector. */ static int draw_flood_vec( im_object *argv ) { IMAGE *image = argv[0]; int x = *((int *) argv[1]); int y = *((int *) argv[2]); im_doublevec_object *dv = (im_doublevec_object *) argv[3]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_flood", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_flood( image, x, y, ink, NULL ) ); } /* Description of im_draw_flood(). */ static im_function draw_flood_desc = { "im_draw_flood", /* Name */ "flood with ink from x, y while pixel != ink", 0, /* Flags */ draw_flood_vec, /* Dispatch function */ IM_NUMBER( draw_flood_args ),/* Size of arg list */ draw_flood_args /* Arg list */ }; /* Args for im_draw_flood_other(). */ static im_arg_desc draw_flood_other_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_IMAGE( "test" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "serial" ) }; /* Call im_draw_flood_other() via arg vector. */ static int draw_flood_other_vec( im_object *argv ) { IMAGE *image = argv[0]; IMAGE *test = argv[1]; int x = *((int *) argv[2]); int y = *((int *) argv[3]); int serial = *((int *) argv[4]); return( im_draw_flood_other( image, test, x, y, serial, NULL ) ); } /* Description of im_draw_flood_other(). */ static im_function draw_flood_other_desc = { "im_draw_flood_other", /* Name */ "flood image with serial from x, y while pixel == start", 0, /* Flags */ draw_flood_other_vec, /* Dispatch function */ IM_NUMBER( draw_flood_other_args ),/* Size of arg list */ draw_flood_other_args /* Arg list */ }; /* Args for im_draw_point. */ static im_arg_desc draw_point_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_point via arg vector. */ static int draw_point_vec( im_object *argv ) { IMAGE *image = argv[0]; int x = *((int *) argv[1]); int y = *((int *) argv[2]); im_doublevec_object *dv = (im_doublevec_object *) argv[3]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_point", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_point( image, x, y, ink ) ); } /* Description of im_draw_point. */ static im_function draw_point_desc = { "im_draw_point", /* Name */ "draw point on image", 0, /* Flags */ draw_point_vec, /* Dispatch function */ IM_NUMBER( draw_point_args ), /* Size of arg list */ draw_point_args /* Arg list */ }; /* Args for im_read_point. */ static im_arg_desc read_point_args[] = { IM_INPUT_IMAGE( "image" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_OUTPUT_DOUBLEVEC( "ink" ) }; /* Call im_read_point via arg vector. */ static int read_point_vec( im_object *argv ) { IMAGE *image = argv[0]; int x = *((int *) argv[1]); int y = *((int *) argv[2]); im_doublevec_object *dv = (im_doublevec_object *) argv[3]; VipsPel *ink; if( !(ink = IM_ARRAY( image, IM_IMAGE_SIZEOF_PEL( image ), VipsPel )) || im_read_point( image, x, y, ink ) || !(dv->vec = im__ink_to_vector( "im_read_point", image, ink )) ) return( -1 ); dv->n = image->Bands; return( 0 ); } /* Description of im_read_point. */ static im_function read_point_desc = { "im_read_point", /* Name */ "read point from image", 0, /* Flags */ read_point_vec, /* Dispatch function */ IM_NUMBER( read_point_args ), /* Size of arg list */ read_point_args /* Arg list */ }; /* Args for im_draw_line. */ static im_arg_desc draw_line_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "x1" ), IM_INPUT_INT( "y1" ), IM_INPUT_INT( "x2" ), IM_INPUT_INT( "y2" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_line via arg vector. */ static int draw_line_vec( im_object *argv ) { IMAGE *image = argv[0]; int x1 = *((int *) argv[1]); int y1 = *((int *) argv[2]); int x2 = *((int *) argv[3]); int y2 = *((int *) argv[4]); im_doublevec_object *dv = (im_doublevec_object *) argv[5]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_line", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_line( image, x1, y1, x2, y2, ink ) ); } /* Description of im_draw_line. */ static im_function draw_line_desc = { "im_draw_line", /* Name */ "draw line on image", 0, /* Flags */ draw_line_vec, /* Dispatch function */ IM_NUMBER( draw_line_args ), /* Size of arg list */ draw_line_args /* Arg list */ }; /* Args for im_draw_smudge. */ static im_arg_desc draw_smudge_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_draw_smudge via arg vector. */ static int draw_smudge_vec( im_object *argv ) { IMAGE *image = argv[0]; int left = *((int *) argv[1]); int top = *((int *) argv[2]); int width = *((int *) argv[3]); int height = *((int *) argv[4]); return( im_draw_smudge( image, left, top, width, height ) ); } /* Description of im_draw_smudge. */ static im_function draw_smudge_desc = { "im_draw_smudge", /* Name */ "smudge part of an image", 0, /* Flags */ draw_smudge_vec, /* Dispatch function */ IM_NUMBER( draw_smudge_args ), /* Size of arg list */ draw_smudge_args /* Arg list */ }; /* Args for im_draw_rect. */ static im_arg_desc draw_rect_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "fill" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_rect via arg vector. */ static int draw_rect_vec( im_object *argv ) { IMAGE *image = argv[0]; int left = *((int *) argv[1]); int top = *((int *) argv[2]); int width = *((int *) argv[3]); int height = *((int *) argv[4]); int fill = *((int *) argv[5]); im_doublevec_object *dv = (im_doublevec_object *) argv[6]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_rect", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_rect( image, left, top, width, height, fill, ink ) ); } /* Description of im_draw_rect. */ static im_function draw_rect_desc = { "im_draw_rect", /* Name */ "draw rect on image", 0, /* Flags */ draw_rect_vec, /* Dispatch function */ IM_NUMBER( draw_rect_args ), /* Size of arg list */ draw_rect_args /* Arg list */ }; /* Args for im_draw_circle. */ static im_arg_desc draw_circle_args[] = { IM_RW_IMAGE( "image" ), IM_INPUT_INT( "cx" ), IM_INPUT_INT( "cy" ), IM_INPUT_INT( "radius" ), IM_INPUT_INT( "fill" ), IM_INPUT_DOUBLEVEC( "ink" ) }; /* Call im_draw_circle via arg vector. */ static int draw_circle_vec( im_object *argv ) { IMAGE *image = argv[0]; int cx = *((int *) argv[1]); int cy = *((int *) argv[2]); int radius = *((int *) argv[3]); int fill = *((int *) argv[4]); im_doublevec_object *dv = (im_doublevec_object *) argv[5]; VipsPel *ink; if( !(ink = im__vector_to_ink( "im_draw_circle", image, dv->n, dv->vec )) ) return( -1 ); return( im_draw_circle( image, cx, cy, radius, fill, ink ) ); } /* Description of im_draw_circle. */ static im_function draw_circle_desc = { "im_draw_circle", /* Name */ "draw circle on image", 0, /* Flags */ draw_circle_vec, /* Dispatch function */ IM_NUMBER( draw_circle_args ), /* Size of arg list */ draw_circle_args /* Arg list */ }; /* Package up all these functions. */ static im_function *inplace_list[] = { &draw_circle_desc, &draw_rect_desc, &draw_line_desc, &draw_point_desc, &read_point_desc, &draw_smudge_desc, &draw_flood_desc, &draw_flood_blob_desc, &draw_flood_other_desc, &draw_image_desc, &draw_mask_desc, &lineset_desc }; /* Package of functions. */ im_package im__inplace = { "inplace", IM_NUMBER( inplace_list ), inplace_list }; vips-8.2.2/libvips/deprecated/im_exr2vips.c0000664000175000017500000000513112530402247015611 00000000000000/* Convert OpenEXR to VIPS * * 17/12/11 * - just a stub */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "../foreign/openexr2vips.h" int im_exr2vips( const char *filename, IMAGE *out ) { #ifdef HAVE_OPENEXR return( vips__openexr_read( filename, out ) ); #else vips_error( "im_exr2vips", "%s", _( "no OpenEXR support in your libvips" ) ); return( -1 ); #endif /*HAVE_OPENEXR*/ } static const char *exr_suffs[] = { ".exr", NULL }; static VipsFormatFlags exr_flags( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( (VipsFormatFlags) vips_foreign_flags( "openexrload", filename ) ); } static int isexr( const char *name ) { char filename[FILENAME_MAX]; char mode[FILENAME_MAX]; im_filename_split( name, filename, mode ); return( vips_foreign_is_a( "openexrload", filename ) ); } /* exr format adds no new members. */ typedef VipsFormat VipsFormatExr; typedef VipsFormatClass VipsFormatExrClass; static void vips_format_exr_class_init( VipsFormatExrClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsFormatClass *format_class = (VipsFormatClass *) class; object_class->nickname = "exr"; object_class->description = _( "OpenEXR" ); format_class->is_a = isexr; format_class->load = im_exr2vips; format_class->get_flags = exr_flags; format_class->suffs = exr_suffs; } static void vips_format_exr_init( VipsFormatExr *object ) { } G_DEFINE_TYPE( VipsFormatExr, vips_format_exr, VIPS_TYPE_FORMAT ); vips-8.2.2/libvips/deprecated/conver_dispatch.c0000664000175000017500000007346612530402247016535 00000000000000/* VIPS function dispatch tables for conversion. * * J. Cupitt, 8/4/93. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include static int system_vec( im_object *argv ) { IMAGE *in = argv[0]; char *cmd = argv[1]; char **out = (char **) &argv[2]; if( im_system( in, cmd, out ) ) return( -1 ); return( 0 ); } static im_arg_desc system_args[] = { IM_INPUT_IMAGE( "im" ), IM_INPUT_STRING( "command" ), IM_OUTPUT_STRING( "output" ) }; static im_function system_desc = { "im_system", /* Name */ "run command on image", /* Description */ 0, /* Flags */ system_vec, /* Dispatch function */ IM_NUMBER( system_args ), /* Size of arg list */ system_args /* Arg list */ }; static int system_image_vec( im_object *argv ) { IMAGE *in = argv[0]; IMAGE *out = argv[1]; char *in_format = argv[2]; char *out_format = argv[3]; char *cmd = argv[4]; char **log = (char **) &argv[5]; IMAGE *out_image; if( !(out_image = im_system_image( in, in_format, out_format, cmd, log )) ) { im_error( "im_system_image", "%s", *log ); return( -1 ); } if( im_copy( out_image, out ) || im_add_close_callback( out, (im_callback_fn) im_close, out_image, NULL ) ) { im_close( out_image ); return( -1 ); } return( 0 ); } static im_arg_desc system_image_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "in_format" ), IM_INPUT_STRING( "out_format" ), IM_INPUT_STRING( "command" ), IM_OUTPUT_STRING( "log" ) }; static im_function system_image_desc = { "im_system_image", /* Name */ "run command on image, with image output",/* Description */ 0, /* Flags */ system_image_vec, /* Dispatch function */ IM_NUMBER( system_image_args ), /* Size of arg list */ system_image_args /* Arg list */ }; static int subsample_vec( im_object *argv ) { IMAGE *in = argv[0]; IMAGE *out = argv[1]; int xsh = *((int *) argv[2]); int ysh = *((int *) argv[3]); if( im_subsample( in, out, xsh, ysh ) ) return( -1 ); return( 0 ); } static im_arg_desc subsample_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xshrink" ), IM_INPUT_INT( "yshrink" ) }; static im_function subsample_desc = { "im_subsample", /* Name */ "subsample image by integer factors", /* Description */ IM_FN_PIO, /* Flags */ subsample_vec, /* Dispatch function */ IM_NUMBER( subsample_args ), /* Size of arg list */ subsample_args /* Arg list */ }; /* Args for im_gaussnoise. */ static im_arg_desc gaussnoise_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "xsize" ), IM_INPUT_INT( "ysize" ), IM_INPUT_DOUBLE( "mean" ), IM_INPUT_DOUBLE( "sigma" ) }; /* Call im_gaussnoise via arg vector. */ static int gaussnoise_vec( im_object *argv ) { int xsize = *((int *) argv[1]); int ysize = *((int *) argv[2]); double mean = *((double *) argv[3]); double sigma = *((double *) argv[4]); if( im_gaussnoise( argv[0], xsize, ysize, mean, sigma ) ) return( -1 ); return( 0 ); } /* Description of im_gaussnoise. */ static im_function gaussnoise_desc = { "im_gaussnoise", /* Name */ "generate image of gaussian noise with specified statistics", IM_FN_PIO, /* Flags */ gaussnoise_vec, /* Dispatch function */ IM_NUMBER( gaussnoise_args ), /* Size of arg list */ gaussnoise_args /* Arg list */ }; /* Args to im_extract. */ static im_arg_desc extract_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "band" ) }; /* Call im_extract via arg vector. */ static int extract_vec( im_object *argv ) { int left = *((int *) argv[2]); int top = *((int *) argv[3]); int width = *((int *) argv[4]); int height = *((int *) argv[5]); int band = *((int *) argv[6]); return( im_extract_areabands( argv[0], argv[1], left, top, width, height, band, 1 ) ); } /* Description of im_extract. */ static im_function extract_desc = { "im_extract", /* Name */ "extract area/band", /* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ extract_vec, /* Dispatch function */ IM_NUMBER( extract_args ), /* Size of arg list */ extract_args /* Arg list */ }; /* Args to im_extract_area. */ static im_arg_desc extract_area_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_extract_area via arg vector. */ static int extract_area_vec( im_object *argv ) { int x = *((int *) argv[2]); int y = *((int *) argv[3]); int w = *((int *) argv[4]); int h = *((int *) argv[5]); return( im_extract_area( argv[0], argv[1], x, y, w, h ) ); } /* Description of im_extract_area. */ static im_function extract_area_desc = { "im_extract_area", /* Name */ "extract area", /* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ extract_area_vec, /* Dispatch function */ IM_NUMBER( extract_area_args ), /* Size of arg list */ extract_area_args /* Arg list */ }; /* Args to im_extract_bands. */ static im_arg_desc extract_bands_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "band" ), IM_INPUT_INT( "nbands" ), }; /* Call im_extract_bands via arg vector. */ static int extract_bands_vec( im_object *argv ) { int chsel = *((int *) argv[2]); int nbands = *((int *) argv[3]); return( im_extract_bands( argv[0], argv[1], chsel, nbands ) ); } /* Description of im_extract_bands. */ static im_function extract_bands_desc = { "im_extract_bands", /* Name */ "extract several bands", /* Description */ IM_FN_PIO, /* Flags */ extract_bands_vec, /* Dispatch function */ IM_NUMBER( extract_bands_args ),/* Size of arg list */ extract_bands_args /* Arg list */ }; /* Args to im_extract_band. */ static im_arg_desc extract_band_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "band" ) }; /* Call im_extract_band via arg vector. */ static int extract_band_vec( im_object *argv ) { int chsel = *((int *) argv[2]); return( im_extract_band( argv[0], argv[1], chsel ) ); } /* Description of im_extract_band. */ static im_function extract_band_desc = { "im_extract_band", /* Name */ "extract band", /* Description */ IM_FN_PIO, /* Flags */ extract_band_vec, /* Dispatch function */ IM_NUMBER( extract_band_args ), /* Size of arg list */ extract_band_args /* Arg list */ }; /* Args to im_extract_areabands. */ static im_arg_desc extract_areabands_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "left" ), IM_INPUT_INT( "top" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ), IM_INPUT_INT( "band" ), IM_INPUT_INT( "nbands" ) }; /* Call im_extract_areabands via arg vector. */ static int extract_areabands_vec( im_object *argv ) { int left = *((int *) argv[2]); int top = *((int *) argv[3]); int width = *((int *) argv[4]); int height = *((int *) argv[5]); int band = *((int *) argv[6]); int nbands = *((int *) argv[7]); return( im_extract_areabands( argv[0], argv[1], left, top, width, height, band, nbands ) ); } /* Description of im_extract_areabands. */ static im_function extract_areabands_desc = { "im_extract_areabands", /* Name */ "extract area and bands", /* Description */ IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ extract_areabands_vec, /* Dispatch function */ IM_NUMBER( extract_areabands_args ),/* Size of arg list */ extract_areabands_args /* Arg list */ }; /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_bandjoin via arg vector. */ static int bandjoin_vec( im_object *argv ) { return( im_bandjoin( argv[0], argv[1], argv[2] ) ); } /* Description of im_bandjoin. */ static im_function bandjoin_desc = { "im_bandjoin", /* Name */ "bandwise join of two images", /* Description */ IM_FN_PIO, /* Flags */ bandjoin_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; static im_arg_desc gbandjoin_args[] = { IM_INPUT_IMAGEVEC( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static int gbandjoin_vec( im_object *argv ) { im_imagevec_object *iv = (im_imagevec_object *) argv[0]; return( im_gbandjoin( iv->vec, argv[1], iv->n ) ); } static im_function gbandjoin_desc = { "im_gbandjoin", /* Name */ "bandwise join of many images", /* Description */ IM_FN_PIO, /* Flags */ gbandjoin_vec, /* Dispatch function */ IM_NUMBER( gbandjoin_args ), /* Size of arg list */ gbandjoin_args /* Arg list */ }; /* Args to im_text. */ static im_arg_desc text_args[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "text" ), IM_INPUT_STRING( "font" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "alignment" ), IM_INPUT_INT( "dpi" ) }; /* Call im_text via arg vector. */ static int text_vec( im_object *argv ) { int width = *((int *) argv[3]); int alignment = *((int *) argv[4]); int dpi = *((int *) argv[5]); return( im_text( argv[0], argv[1], argv[2], width, alignment, dpi ) ); } /* Description of im_text. */ static im_function text_desc = { "im_text", /* Name */ "generate text image", /* Description */ IM_FN_PIO, /* Flags */ text_vec, /* Dispatch function */ IM_NUMBER( text_args ), /* Size of arg list */ text_args /* Arg list */ }; /* Args to im_black. */ static im_arg_desc black_args[] = { IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "x_size" ), IM_INPUT_INT( "y_size" ), IM_INPUT_INT( "bands" ) }; /* Call im_black via arg vector. */ static int black_vec( im_object *argv ) { int xs = *((int *) argv[1]); int ys = *((int *) argv[2]); int bands = *((int *) argv[3]); return( im_black( argv[0], xs, ys, bands ) ); } /* Description of im_black. */ static im_function black_desc = { "im_black", /* Name */ "generate black image", /* Description */ IM_FN_PIO, /* Flags */ black_vec, /* Dispatch function */ IM_NUMBER( black_args ), /* Size of arg list */ black_args /* Arg list */ }; /* Args to im_clip2fmt. */ static im_arg_desc clip2fmt_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "ofmt" ) }; /* Call im_clip2fmt via arg vector. */ static int clip2fmt_vec( im_object *argv ) { int ofmt = *((int *) argv[2]); return( im_clip2fmt( argv[0], argv[1], ofmt ) ); } /* Description of im_clip2fmt. */ static im_function clip2fmt_desc = { "im_clip2fmt", /* Name */ "convert image format to ofmt", /* Description */ IM_FN_PIO | IM_FN_PTOP, /* Flags */ clip2fmt_vec, /* Dispatch function */ IM_NUMBER( clip2fmt_args ), /* Size of arg list */ clip2fmt_args /* Arg list */ }; /* Call im_c2rect via arg vector. */ static int c2rect_vec( im_object *argv ) { return( im_c2rect( argv[0], argv[1] ) ); } /* Description of im_c2rect. */ static im_function c2rect_desc = { "im_c2rect", /* Name */ "convert phase and amplitude to real and imaginary", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2rect_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_c2amph via arg vector. */ static int c2amph_vec( im_object *argv ) { return( im_c2amph( argv[0], argv[1] ) ); } /* Description of im_c2amph. */ static im_function c2amph_desc = { "im_c2amph", /* Name */ "convert real and imaginary to phase and amplitude", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2amph_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_ri2c via arg vector. */ static int ri2c_vec( im_object *argv ) { return( im_ri2c( argv[0], argv[1], argv[2] ) ); } /* Description of im_ri2c. */ static im_function ri2c_desc = { "im_ri2c", /* Name */ "join two non-complex images to form complex", IM_FN_PTOP | IM_FN_PIO, /* Flags */ ri2c_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_c2imag via arg vector. */ static int c2imag_vec( im_object *argv ) { return( im_c2imag( argv[0], argv[1] ) ); } /* Description of im_c2imag. */ static im_function c2imag_desc = { "im_c2imag", /* Name */ "extract imaginary part of complex image", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2imag_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_c2real via arg vector. */ static int c2real_vec( im_object *argv ) { return( im_c2real( argv[0], argv[1] ) ); } /* Description of im_c2real. */ static im_function c2real_desc = { "im_c2real", /* Name */ "extract real part of complex image", IM_FN_PTOP | IM_FN_PIO, /* Flags */ c2real_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to im_copy_set. */ static im_arg_desc copy_set_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "Type" ), IM_INPUT_DOUBLE( "Xres" ), IM_INPUT_DOUBLE( "Yres" ), IM_INPUT_INT( "Xoffset" ), IM_INPUT_INT( "Yoffset" ) }; /* Call im_copy_set via arg vector. */ static int copy_set_vec( im_object *argv ) { int Type = *((int *) argv[2]); float Xres = *((double *) argv[3]); float Yres = *((double *) argv[4]); int Xoffset = *((int *) argv[5]); int Yoffset = *((int *) argv[6]); return( im_copy_set( argv[0], argv[1], Type, Xres, Yres, Xoffset, Yoffset ) ); } /* Description of im_copy_set. */ static im_function copy_set_desc = { "im_copy_set", /* Name */ "copy image, setting informational fields", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_set_vec, /* Dispatch function */ IM_NUMBER( copy_set_args ), /* Size of arg list */ copy_set_args /* Arg list */ }; /* Args to im_copy_set_meta. */ static im_arg_desc copy_set_meta_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_STRING( "field" ), IM_INPUT_GVALUE( "value" ) }; /* Call im_copy_set_meta via arg vector. */ static int copy_set_meta_vec( im_object *argv ) { const char *field = argv[2]; GValue *value = argv[3]; return( im_copy_set_meta( argv[0], argv[1], field, value ) ); } /* Description of im_copy_set_meta. */ static im_function copy_set_meta_desc = { "im_copy_set_meta", /* Name */ "copy image, setting a meta field", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_set_meta_vec, /* Dispatch function */ IM_NUMBER( copy_set_meta_args ),/* Size of arg list */ copy_set_meta_args /* Arg list */ }; /* Args to im_copy_morph. */ static im_arg_desc copy_morph_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "Bands" ), IM_INPUT_INT( "BandFmt" ), IM_INPUT_INT( "Coding" ) }; /* Call im_copy_morph via arg vector. */ static int copy_morph_vec( im_object *argv ) { int Bands = *((int *) argv[2]); int BandFmt = *((int *) argv[3]); int Coding = *((int *) argv[4]); return( im_copy_morph( argv[0], argv[1], Bands, BandFmt, Coding ) ); } /* Description of im_copy_morph. */ static im_function copy_morph_desc = { "im_copy_morph", /* Name */ "copy image, setting pixel layout", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_morph_vec, /* Dispatch function */ IM_NUMBER( copy_morph_args ), /* Size of arg list */ copy_morph_args /* Arg list */ }; /* Call im_copy via arg vector. */ static int copy_vec( im_object *argv ) { return( im_copy( argv[0], argv[1] ) ); } /* Description of im_copy. */ static im_function copy_desc = { "im_copy", /* Name */ "copy image", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. * * Don't cache, since we use copy to stop sharing. */ IM_FN_PIO | IM_FN_NOCACHE, copy_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_copy_file via arg vector. */ static int copy_file_vec( im_object *argv ) { return( im_copy_file( argv[0], argv[1] ) ); } /* Description of im_copy_file. */ static im_function copy_file_desc = { "im_copy_file", /* Name */ "copy image to a file and return that", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_file_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_copy_swap via arg vector. */ static int copy_swap_vec( im_object *argv ) { return( im_copy_swap( argv[0], argv[1] ) ); } /* Description of im_copy_swap. */ static im_function copy_swap_desc = { "im_copy_swap", /* Name */ "copy image, swapping byte order", /* Can't set PTOP ... we don't want to zap the LUT, we want the real * image. */ IM_FN_PIO, /* Flags */ copy_swap_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_fliphor via arg vector. */ static int fliphor_vec( im_object *argv ) { return( im_fliphor( argv[0], argv[1] ) ); } /* Description of im_fliphor. */ static im_function fliphor_desc = { "im_fliphor", /* Name */ "flip image left-right", IM_FN_PIO, /* Flags */ fliphor_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_flipver via arg vector. */ static int flipver_vec( im_object *argv ) { return( im_flipver( argv[0], argv[1] ) ); } /* Description of im_flipver. */ static im_function flipver_desc = { "im_flipver", /* Name */ "flip image top-bottom", IM_FN_PIO, /* Flags */ flipver_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_falsecolour via arg vector. */ static int falsecolour_vec( im_object *argv ) { return( im_falsecolour( argv[0], argv[1] ) ); } /* Description of im_falsecolour. */ static im_function falsecolour_desc = { "im_falsecolour", /* Name */ "turn luminance changes into chrominance changes", IM_FN_PTOP | IM_FN_PIO, /* Flags */ falsecolour_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args for im_insert. */ static im_arg_desc insert_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_IMAGE( "sub" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ) }; /* Call im_insert via arg vector. */ static int insert_vec( im_object *argv ) { int x = *((int *) argv[3]); int y = *((int *) argv[4]); return( im_insert( argv[0], argv[1], argv[2], x, y ) ); } /* Description of im_insert. */ static im_function insert_desc = { "im_insert", /* Name */ "insert sub-image into main image at position", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ insert_vec, /* Dispatch function */ IM_NUMBER( insert_args ), /* Size of arg list */ insert_args /* Arg list */ }; /* Args for im_insertset. */ static im_arg_desc insertset_args[] = { IM_INPUT_IMAGE( "main" ), IM_INPUT_IMAGE( "sub" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INTVEC( "x" ), IM_INPUT_INTVEC( "y" ) }; /* Call im_insertplaceset via arg vector. */ static int insertset_vec( im_object *argv ) { im_intvec_object *xv = (im_intvec_object *) argv[3]; im_intvec_object *yv = (im_intvec_object *) argv[4]; if( xv->n != yv->n ) { im_error( "im_insertset", "%s", _( "vectors not same length" ) ); return( -1 ); } if( im_insertset( argv[0], argv[1], argv[2], xv->n, xv->vec, yv->vec ) ) return( -1 ); return( 0 ); } /* Description of im_insertset. */ static im_function insertset_desc = { "im_insertset", /* Name */ "insert sub into main at every position in x, y", 0, /* Flags */ insertset_vec, /* Dispatch function */ IM_NUMBER( insertset_args ), /* Size of arg list */ insertset_args /* Arg list */ }; /* Call im_insert_noexpand via arg vector. */ static int insert_noexpand_vec( im_object *argv ) { int x = *((int *) argv[3]); int y = *((int *) argv[4]); return( im_insert_noexpand( argv[0], argv[1], argv[2], x, y ) ); } /* Description of im_insert_noexpand. */ static im_function insert_noexpand_desc = { "im_insert_noexpand", /* Name */ "insert sub-image into main image at position, no expansion", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ insert_noexpand_vec, /* Dispatch function */ IM_NUMBER( insert_args ), /* Size of arg list */ insert_args /* Arg list */ }; /* Call im_rot180 via arg vector. */ static int rot180_vec( im_object *argv ) { return( im_rot180( argv[0], argv[1] ) ); } /* Description of im_rot180. */ static im_function rot180_desc = { "im_rot180", /* Name */ "rotate image 180 degrees", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ rot180_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rot90 via arg vector. */ static int rot90_vec( im_object *argv ) { return( im_rot90( argv[0], argv[1] ) ); } /* Description of im_rot90. */ static im_function rot90_desc = { "im_rot90", /* Name */ "rotate image 90 degrees clockwise", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ rot90_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rot270 via arg vector. */ static int rot270_vec( im_object *argv ) { return( im_rot270( argv[0], argv[1] ) ); } /* Description of im_rot270. */ static im_function rot270_desc = { "im_rot270", /* Name */ "rotate image 270 degrees clockwise", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ rot270_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_lrjoin via arg vector. */ static int lrjoin_vec( im_object *argv ) { return( im_lrjoin( argv[0], argv[1], argv[2] ) ); } /* Description of im_lrjoin. */ static im_function lrjoin_desc = { "im_lrjoin", /* Name */ "join two images left-right", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ lrjoin_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_tbjoin via arg vector. */ static int tbjoin_vec( im_object *argv ) { return( im_tbjoin( argv[0], argv[1], argv[2] ) ); } /* Description of im_tbjoin. */ static im_function tbjoin_desc = { "im_tbjoin", /* Name */ "join two images top-bottom", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ tbjoin_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_scale via arg vector. */ static int scale_vec( im_object *argv ) { return( im_scale( argv[0], argv[1] ) ); } /* Description of im_scale. */ static im_function scale_desc = { "im_scale", /* Name */ "scale image linearly to fit range 0-255", IM_FN_PIO, /* Flags */ scale_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_scaleps via arg vector. */ static int scaleps_vec( im_object *argv ) { return( im_scaleps( argv[0], argv[1] ) ); } /* Description of im_scaleps. */ static im_function scaleps_desc = { "im_scaleps", /* Name */ "logarithmic scale of image to fit range 0-255", 0, /* Flags */ scaleps_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to im_grid. */ static im_arg_desc grid_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "tile_height" ), IM_INPUT_INT( "across" ), IM_INPUT_INT( "down" ) }; /* Call im_grid via arg vector. */ static int grid_vec( im_object *argv ) { int tile_height = *((int *) argv[2]); int across = *((int *) argv[3]); int down = *((int *) argv[4]); return( im_grid( argv[0], argv[1], tile_height, across, down ) ); } /* Description of im_grid. */ static im_function grid_desc = { "im_grid", /* Name */ "chop a tall thin image into a grid of images", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ grid_vec, /* Dispatch function */ IM_NUMBER( grid_args ), /* Size of arg list */ grid_args /* Arg list */ }; /* Args to im_replicate. */ static im_arg_desc replicate_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "across" ), IM_INPUT_INT( "down" ) }; /* Call im_replicate via arg vector. */ static int replicate_vec( im_object *argv ) { int across = *((int *) argv[2]); int down = *((int *) argv[3]); return( im_replicate( argv[0], argv[1], across, down ) ); } /* Description of im_replicate. */ static im_function replicate_desc = { "im_replicate", /* Name */ "replicate an image horizontally and vertically", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ replicate_vec, /* Dispatch function */ IM_NUMBER( replicate_args ), /* Size of arg list */ replicate_args /* Arg list */ }; /* Args to im_zoom. */ static im_arg_desc zoom_args[] = { IM_INPUT_IMAGE( "input" ), IM_OUTPUT_IMAGE( "output" ), IM_INPUT_INT( "xfac" ), IM_INPUT_INT( "yfac" ) }; /* Call im_zoom via arg vector. */ static int zoom_vec( im_object *argv ) { int xfac = *((int *) argv[2]); int yfac = *((int *) argv[3]); return( im_zoom( argv[0], argv[1], xfac, yfac ) ); } /* Description of im_zoom. */ static im_function zoom_desc = { "im_zoom", /* Name */ "simple zoom of an image by integer factors", IM_FN_TRANSFORM | IM_FN_PIO, /* Flags */ zoom_vec, /* Dispatch function */ IM_NUMBER( zoom_args ), /* Size of arg list */ zoom_args /* Arg list */ }; /* Call im_msb via arg vector. */ static int msb_vec (im_object * argv) { return im_msb (argv[0], argv[1]); } /* Description of im_msb. */ static im_function msb_desc = { "im_msb", /* Name */ "convert to uchar by discarding bits", IM_FN_PIO | IM_FN_PTOP, /* Flags */ msb_vec, /* Dispatch function */ IM_NUMBER (one_in_one_out), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to im_msb_band. */ static im_arg_desc msb_band_args[] = { IM_INPUT_IMAGE ("in"), IM_OUTPUT_IMAGE ("out"), IM_INPUT_INT ("band") }; /* Call im_msb_band via arg vector. */ static int msb_band_vec (im_object * argv) { IMAGE *in = (IMAGE *) argv[0]; IMAGE *out = (IMAGE *) argv[1]; int *band = (int *) argv[2]; return im_msb_band (in, out, *band); } /* Description of im_msb_band. */ static im_function msb_band_desc = { "im_msb_band", /* Name */ "convert to single band uchar by discarding bits", IM_FN_PIO | IM_FN_PTOP, /* Flags */ msb_band_vec, /* Dispatch function */ IM_NUMBER (msb_band_args), /* Size of arg list */ msb_band_args /* Arg list */ }; /* Args to im_wrap. */ static im_arg_desc wrap_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ) }; /* Call im_wrap via arg vector. */ static int wrap_vec (im_object * argv) { return im_wrap( argv[0], argv[1], *(int*)argv[2], *(int*)argv[3] ); } /* Description of im_wrap. */ static im_function wrap_desc = { "im_wrap", /* Name */ "shift image origin, wrapping at sides", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ wrap_vec, /* Dispatch function */ IM_NUMBER (wrap_args), /* Size of arg list */ wrap_args /* Arg list */ }; /* Args for im_embed. */ static im_arg_desc embed_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "type" ), IM_INPUT_INT( "x" ), IM_INPUT_INT( "y" ), IM_INPUT_INT( "width" ), IM_INPUT_INT( "height" ) }; /* Call im_embed via arg vector. */ static int embed_vec( im_object *argv ) { int type = *((int *) argv[2]); int x = *((int *) argv[3]); int y = *((int *) argv[4]); int width = *((int *) argv[5]); int height = *((int *) argv[6]); return( im_embed( argv[0], argv[1], type, x, y, width, height ) ); } /* Description of im_embed. */ static im_function embed_desc = { "im_embed", /* Name */ "embed in within a set of borders", IM_FN_PIO | IM_FN_TRANSFORM, /* Flags */ embed_vec, /* Dispatch function */ IM_NUMBER( embed_args ), /* Size of arg list */ embed_args /* Arg list */ }; /* Package up all these functions. */ static im_function *conv_list[] = { &gaussnoise_desc, &bandjoin_desc, &black_desc, &c2amph_desc, &c2imag_desc, &c2real_desc, &c2rect_desc, &clip2fmt_desc, ©_desc, ©_file_desc, ©_morph_desc, ©_swap_desc, ©_set_desc, ©_set_meta_desc, &extract_area_desc, &extract_areabands_desc, &extract_band_desc, &extract_bands_desc, &extract_desc, &falsecolour_desc, &fliphor_desc, &flipver_desc, &gbandjoin_desc, &grid_desc, &insert_desc, &insertset_desc, &insert_noexpand_desc, &embed_desc, &lrjoin_desc, &msb_desc, &msb_band_desc, &replicate_desc, &ri2c_desc, &rot180_desc, &rot270_desc, &rot90_desc, &scale_desc, &scaleps_desc, &subsample_desc, &system_desc, &system_image_desc, &tbjoin_desc, &text_desc, &wrap_desc, &zoom_desc }; /* Package of functions. */ im_package im__conversion = { "conversion", IM_NUMBER( conv_list ), conv_list }; vips-8.2.2/libvips/deprecated/im_mask2vips.c0000664000175000017500000000463312530402247015754 00000000000000/* im_mask2vips * * Author: J.Cupitt * Written on: 6/6/94 * Modified on: * 7/10/94 JC * - new IM_ARRAY() * 1/2/10 * - gtkdoc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include /** * im_mask2vips: * @in: input mask * @out: output image * * Write a one-band, %IM_BANDFMT_DOUBLE image to @out based on mask @in. * * See also: im_vips2mask(). * * Returns: 0 on success, -1 on error */ int im_mask2vips( DOUBLEMASK *in, IMAGE *out ) { int x, y; double *buf, *p, *q; /* Check the mask. */ if( !in || !in->coeff ) { im_error( "im_mask2vips", "%s", _( "bad input mask" ) ); return( -1 ); } /* Make the output image. */ im_initdesc( out, in->xsize, in->ysize, 1, IM_BBITS_DOUBLE, IM_BANDFMT_DOUBLE, IM_CODING_NONE, IM_TYPE_B_W, 1.0, 1.0, 0, 0 ); if( im_setupout( out ) ) return( -1 ); /* Make an output buffer. */ if( !(buf = IM_ARRAY( out, in->xsize, double )) ) return( -1 ); /* Write! */ for( p = in->coeff, y = 0; y < out->Ysize; y++ ) { q = buf; for( x = 0; x < out->Xsize; x++ ) *q++ = *p++; if( im_writeline( y, out, (void *) buf ) ) return( -1 ); } vips_image_set_double( out, "scale", in->scale ); vips_image_set_double( out, "offset", in->offset ); return( 0 ); } int im_imask2vips( INTMASK *in, IMAGE *out ) { DOUBLEMASK *d; int result; if( !(d = im_imask2dmask( in, in->filename )) ) return( -1 ); result = im_mask2vips( d, out ); im_free_dmask( d ); return( result ); } vips-8.2.2/libvips/deprecated/format_dispatch.c0000664000175000017500000002477512530402247016530 00000000000000/* VIPS function dispatch tables for image format load/save. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include static int jpeg2vips_vec( im_object *argv ) { char *in = argv[0]; IMAGE *out = argv[1]; if( im_jpeg2vips( in, out ) ) return( -1 ); return( 0 ); } static im_arg_desc jpeg2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static im_function jpeg2vips_desc = { "im_jpeg2vips", /* Name */ "convert from jpeg", /* Description */ 0, /* Flags */ jpeg2vips_vec, /* Dispatch function */ IM_NUMBER( jpeg2vips_args ), /* Size of arg list */ jpeg2vips_args /* Arg list */ }; static int vips2dz_vec( im_object *argv ) { IMAGE *in = argv[0]; char *out = argv[1]; if( im_vips2dz( in, out ) ) return( -1 ); return( 0 ); } static im_arg_desc vips2dz_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "out" ) }; static im_function vips2dz_desc = { "im_vips2dz", /* Name */ "save as deepzoom", /* Description */ 0, /* Flags */ vips2dz_vec, /* Dispatch function */ IM_NUMBER( vips2dz_args ), /* Size of arg list */ vips2dz_args /* Arg list */ }; static int vips2jpeg_vec( im_object *argv ) { IMAGE *in = argv[0]; char *out = argv[1]; if( im_vips2jpeg( in, out ) ) return( -1 ); return( 0 ); } static im_arg_desc vips2jpeg_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "out" ) }; static im_function vips2jpeg_desc = { "im_vips2jpeg", /* Name */ "convert to jpeg", /* Description */ 0, /* Flags */ vips2jpeg_vec, /* Dispatch function */ IM_NUMBER( vips2jpeg_args ), /* Size of arg list */ vips2jpeg_args /* Arg list */ }; static int vips2mimejpeg_vec( im_object *argv ) { IMAGE *in = argv[0]; int qfac = *((int *) argv[1]); if( im_vips2mimejpeg( in, qfac ) ) return( -1 ); return( 0 ); } static im_arg_desc vips2mimejpeg_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_INT( "qfac" ) }; static im_function vips2mimejpeg_desc = { "im_vips2mimejpeg", /* Name */ "convert to jpeg as mime type on stdout", /* Description */ 0, /* Flags */ vips2mimejpeg_vec, /* Dispatch function */ IM_NUMBER( vips2mimejpeg_args ), /* Size of arg list */ vips2mimejpeg_args /* Arg list */ }; /* Args for vips2png. */ static im_arg_desc vips2png_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "out" ) }; /* Call im_vips2png via arg vector. */ static int vips2png_vec( im_object *argv ) { return( im_vips2png( argv[0], argv[1] ) ); } /* Description of im_vips2png. */ static im_function vips2png_desc = { "im_vips2png", /* Name */ "convert VIPS image to PNG file", /* Description */ 0, vips2png_vec, /* Dispatch function */ IM_NUMBER( vips2png_args ), /* Size of arg list */ vips2png_args /* Arg list */ }; /* Args for png2vips. */ static im_arg_desc png2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_png2vips via arg vector. */ static int png2vips_vec( im_object *argv ) { return( im_png2vips( argv[0], argv[1] ) ); } /* Description of im_png2vips. */ static im_function png2vips_desc = { "im_png2vips", /* Name */ "convert PNG file to VIPS image", /* Description */ 0, png2vips_vec, /* Dispatch function */ IM_NUMBER( png2vips_args ), /* Size of arg list */ png2vips_args /* Arg list */ }; /* Args for exr2vips. */ static im_arg_desc exr2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_exr2vips via arg vector. */ static int exr2vips_vec( im_object *argv ) { return( im_exr2vips( argv[0], argv[1] ) ); } /* Description of im_exr2vips. */ static im_function exr2vips_desc = { "im_exr2vips", /* Name */ "convert an OpenEXR file to VIPS", /* Description */ 0, exr2vips_vec, /* Dispatch function */ IM_NUMBER( exr2vips_args ), /* Size of arg list */ exr2vips_args /* Arg list */ }; /* Args for vips2tiff. */ static im_arg_desc vips2tiff_args[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "out" ) }; /* Call im_vips2tiff via arg vector. */ static int vips2tiff_vec( im_object *argv ) { return( im_vips2tiff( argv[0], argv[1] ) ); } /* Description of im_vips2tiff. */ static im_function vips2tiff_desc = { "im_vips2tiff", /* Name */ "convert VIPS image to TIFF file", /* Description */ 0, vips2tiff_vec, /* Dispatch function */ IM_NUMBER( vips2tiff_args ), /* Size of arg list */ vips2tiff_args /* Arg list */ }; /* Args for magick2vips. */ static im_arg_desc magick2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_magick2vips via arg vector. */ static int magick2vips_vec( im_object *argv ) { return( im_magick2vips( argv[0], argv[1] ) ); } /* Description of im_magick2vips. */ static im_function magick2vips_desc = { "im_magick2vips", /* Name */ "load file with libMagick", /* Description */ 0, magick2vips_vec, /* Dispatch function */ IM_NUMBER( magick2vips_args ), /* Size of arg list */ magick2vips_args /* Arg list */ }; /* Args for tiff2vips. */ static im_arg_desc tiff2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_tiff2vips via arg vector. */ static int tiff2vips_vec( im_object *argv ) { return( im_tiff2vips( argv[0], argv[1] ) ); } /* Description of im_tiff2vips. */ static im_function tiff2vips_desc = { "im_tiff2vips", /* Name */ "convert TIFF file to VIPS image", /* Description */ 0, tiff2vips_vec, /* Dispatch function */ IM_NUMBER( tiff2vips_args ), /* Size of arg list */ tiff2vips_args /* Arg list */ }; static int analyze2vips_vec( im_object *argv ) { const char *in = argv[0]; IMAGE *out = argv[1]; return( im_analyze2vips( in, out ) ); } static im_arg_desc analyze2vips_arg_types[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_IMAGE( "im" ) }; static im_function analyze2vips_desc = { "im_analyze2vips", /* Name */ "read a file in analyze format",/* Description */ 0, /* Flags */ analyze2vips_vec, /* Dispatch function */ IM_NUMBER( analyze2vips_arg_types ),/* Size of arg list */ analyze2vips_arg_types /* Arg list */ }; static int csv2vips_vec( im_object *argv ) { const char *in = argv[0]; IMAGE *out = argv[1]; return( im_csv2vips( in, out ) ); } static im_arg_desc csv2vips_arg_types[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_IMAGE( "im" ) }; static im_function csv2vips_desc = { "im_csv2vips", /* Name */ "read a file in csv format",/* Description */ 0, /* Flags */ csv2vips_vec, /* Dispatch function */ IM_NUMBER( csv2vips_arg_types ),/* Size of arg list */ csv2vips_arg_types /* Arg list */ }; static int vips2csv_vec( im_object *argv ) { IMAGE *in = argv[0]; const char *filename = argv[1]; return( im_vips2csv( in, filename ) ); } static im_arg_desc vips2csv_arg_types[] = { IM_INPUT_IMAGE( "in" ), IM_INPUT_STRING( "filename" ) }; static im_function vips2csv_desc = { "im_vips2csv", /* Name */ "write an image in csv format", /* Description */ 0, /* Flags */ vips2csv_vec, /* Dispatch function */ IM_NUMBER( vips2csv_arg_types ),/* Size of arg list */ vips2csv_arg_types /* Arg list */ }; static int ppm2vips_vec( im_object *argv ) { const char *in = argv[0]; IMAGE *out = argv[1]; return( im_ppm2vips( in, out ) ); } static im_arg_desc ppm2vips_arg_types[] = { IM_INPUT_STRING( "filename" ), IM_OUTPUT_IMAGE( "im" ) }; static im_function ppm2vips_desc = { "im_ppm2vips", /* Name */ "read a file in pbm/pgm/ppm format", /* Description */ 0, /* Flags */ ppm2vips_vec, /* Dispatch function */ IM_NUMBER( ppm2vips_arg_types ),/* Size of arg list */ ppm2vips_arg_types /* Arg list */ }; static int vips2ppm_vec( im_object *argv ) { IMAGE *im = argv[0]; const char *filename = argv[1]; return( im_vips2ppm( im, filename ) ); } static im_arg_desc vips2ppm_arg_types[] = { IM_INPUT_IMAGE( "im" ), IM_INPUT_STRING( "filename" ) }; static im_function vips2ppm_desc = { "im_vips2ppm", /* Name */ "write a file in pbm/pgm/ppm format", /* Description */ 0, /* Flags */ vips2ppm_vec, /* Dispatch function */ IM_NUMBER( vips2ppm_arg_types ),/* Size of arg list */ vips2ppm_arg_types /* Arg list */ }; static int fits2vips_vec( im_object *argv ) { char *in = argv[0]; IMAGE *out = argv[1]; if( im_fits2vips( in, out ) ) return( -1 ); return( 0 ); } static im_arg_desc fits2vips_args[] = { IM_INPUT_STRING( "in" ), IM_OUTPUT_IMAGE( "out" ) }; static im_function fits2vips_desc = { "im_fits2vips", /* Name */ "convert from fits", /* Description */ 0, /* Flags */ fits2vips_vec, /* Dispatch function */ IM_NUMBER( fits2vips_args ), /* Size of arg list */ fits2vips_args /* Arg list */ }; /* Package up all these functions. */ static im_function *list[] = { &csv2vips_desc, &fits2vips_desc, &jpeg2vips_desc, &magick2vips_desc, &png2vips_desc, &exr2vips_desc, &ppm2vips_desc, &analyze2vips_desc, &tiff2vips_desc, &vips2csv_desc, &vips2dz_desc, &vips2jpeg_desc, &vips2mimejpeg_desc, &vips2png_desc, &vips2ppm_desc, &vips2tiff_desc }; /* Package of functions. */ im_package im__format = { "format", IM_NUMBER( list ), list }; vips-8.2.2/libvips/deprecated/colour_dispatch.c0000664000175000017500000005727112530402247016540 00000000000000/* Function dispatch tables for arithmetic. * * J. Cupitt, 8/4/93. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /* One image in, one out. */ static im_arg_desc one_in_one_out[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ) }; /* Two images in, one out. */ static im_arg_desc two_in_one_out[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ) }; /* Call im_sRGB2XYZ via arg vector. */ static int sRGB2XYZ_vec( im_object *argv ) { return( im_sRGB2XYZ( argv[0], argv[1] ) ); } /* Description of im_sRGB2XYZ. */ static im_function sRGB2XYZ_desc = { "im_sRGB2XYZ", /* Name */ "convert sRGB to XYZ", /* Description */ IM_FN_PIO, /* Flags */ sRGB2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_XYZ2sRGB via arg vector. */ static int XYZ2sRGB_vec( im_object *argv ) { return( im_XYZ2sRGB( argv[0], argv[1] ) ); } /* Description of im_XYZ2sRGB. */ static im_function XYZ2sRGB_desc = { "im_XYZ2sRGB", /* Name */ "convert XYZ to sRGB", /* Description */ IM_FN_PIO, /* Flags */ XYZ2sRGB_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LCh2Lab via arg vector. */ static int LCh2Lab_vec( im_object *argv ) { return( im_LCh2Lab( argv[0], argv[1] ) ); } /* Description of im_LCh2Lab. */ static im_function LCh2Lab_desc = { "im_LCh2Lab", /* Name */ "convert LCh to Lab", /* Description */ IM_FN_PIO, /* Flags */ LCh2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabQ2XYZ via arg vector. */ static int LabQ2XYZ_vec( im_object *argv ) { return( im_LabQ2XYZ( argv[0], argv[1] ) ); } /* Description of im_LabQ2XYZ. */ static im_function LabQ2XYZ_desc = { "im_LabQ2XYZ", /* Name */ "convert LabQ to XYZ", /* Description */ IM_FN_PIO, /* Flags */ LabQ2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LCh2UCS via arg vector. */ static int LCh2UCS_vec( im_object *argv ) { return( im_LCh2UCS( argv[0], argv[1] ) ); } /* Description of im_LCh2UCS. */ static im_function LCh2UCS_desc = { "im_LCh2UCS", /* Name */ "convert LCh to UCS", /* Description */ IM_FN_PIO, /* Flags */ LCh2UCS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Lab2LCh via arg vector. */ static int Lab2LCh_vec( im_object *argv ) { return( im_Lab2LCh( argv[0], argv[1] ) ); } /* Description of im_Lab2LCh. */ static im_function Lab2LCh_desc = { "im_Lab2LCh", /* Name */ "convert Lab to LCh", /* Description */ IM_FN_PIO, /* Flags */ Lab2LCh_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Lab2LabQ() via arg vector. */ static int Lab2LabQ_vec( im_object *argv ) { return( im_Lab2LabQ( argv[0], argv[1] ) ); } /* Description of im_Lab2LabQ. */ static im_function Lab2LabQ_desc = { "im_Lab2LabQ", /* Name */ "convert Lab to LabQ", /* Description */ IM_FN_PIO, /* Flags */ Lab2LabQ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Lab2XYZ() via arg vector. */ static int Lab2XYZ_vec( im_object *argv ) { return( im_Lab2XYZ( argv[0], argv[1] ) ); } /* Description of im_Lab2XYZ. */ static im_function Lab2XYZ_desc = { "im_Lab2XYZ", /* Name */ "convert D65 Lab to XYZ", /* Description */ IM_FN_PIO, /* Flags */ Lab2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; static int icc_present_vec( im_object *argv ) { int *present = ((int *) argv[0]); *present = im_icc_present(); return( 0 ); } static im_arg_desc icc_present_args[] = { IM_OUTPUT_INT( "present" ) }; /* Description of im_icc_present. */ static im_function icc_present_desc = { "im_icc_present", /* Name */ "test for presence of ICC library", /* Description */ 0, /* Flags */ icc_present_vec, /* Dispatch function */ IM_NUMBER( icc_present_args ), /* Size of arg list */ icc_present_args /* Arg list */ }; static int icc_transform_vec( im_object *argv ) { int intent = *((int *) argv[4]); return( im_icc_transform( argv[0], argv[1], argv[2], argv[3], intent ) ); } static im_arg_desc icc_transform_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "input_profile" ), IM_INPUT_STRING( "output_profile" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_transform. */ static im_function icc_transform_desc = { "im_icc_transform", /* Name */ "convert between two device images with a pair of ICC profiles", /* Description */ IM_FN_PIO, /* Flags */ icc_transform_vec, /* Dispatch function */ IM_NUMBER( icc_transform_args ), /* Size of arg list */ icc_transform_args /* Arg list */ }; static int icc_import_embedded_vec( im_object *argv ) { int intent = *((int *) argv[2]); return( im_icc_import_embedded( argv[0], argv[1], intent ) ); } static im_arg_desc icc_import_embedded_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_import_embedded. */ static im_function icc_import_embedded_desc = { "im_icc_import_embedded", /* Name */ "convert a device image to float LAB using the embedded profile", /* Description */ IM_FN_PIO, /* Flags */ icc_import_embedded_vec, /* Dispatch function */ IM_NUMBER( icc_import_embedded_args ), /* Size of arg list */ icc_import_embedded_args /* Arg list */ }; static int icc_import_vec( im_object *argv ) { int intent = *((int *) argv[3]); return( im_icc_import( argv[0], argv[1], argv[2], intent ) ); } static im_arg_desc icc_import_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "input_profile" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_import. */ static im_function icc_import_desc = { "im_icc_import", /* Name */ "convert a device image to float LAB with an ICC profile", /* Description */ IM_FN_PIO, /* Flags */ icc_import_vec, /* Dispatch function */ IM_NUMBER( icc_import_args ), /* Size of arg list */ icc_import_args /* Arg list */ }; static int icc_export_depth_vec( im_object *argv ) { int intent = *((int *) argv[4]); int depth = *((int *) argv[2]); return( im_icc_export_depth( argv[0], argv[1], depth, argv[3], intent ) ); } static im_arg_desc icc_export_depth_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "depth" ), IM_INPUT_STRING( "output_profile" ), IM_INPUT_INT( "intent" ) }; /* Description of im_icc_export_depth. */ static im_function icc_export_depth_desc = { "im_icc_export_depth", /* Name */ "convert a float LAB to device space with an ICC profile", /* Description */ IM_FN_PIO, /* Flags */ icc_export_depth_vec, /* Dispatch function */ IM_NUMBER( icc_export_depth_args ), /* Size of arg list */ icc_export_depth_args /* Arg list */ }; static int icc_ac2rc_vec( im_object *argv ) { return( im_icc_ac2rc( argv[0], argv[1], argv[2] ) ); } static im_arg_desc icc_ac2rc_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "profile" ) }; /* Description of im_icc_ac2rc. */ static im_function icc_ac2rc_desc = { "im_icc_ac2rc", /* Name */ "convert LAB from AC to RC using an ICC profile", /* Description */ IM_FN_PIO, /* Flags */ icc_ac2rc_vec, /* Dispatch function */ IM_NUMBER( icc_ac2rc_args ), /* Size of arg list */ icc_ac2rc_args /* Arg list */ }; static int Lab2XYZ_temp_vec( im_object *argv ) { double X0 = *((double *) argv[2]); double Y0 = *((double *) argv[3]); double Z0 = *((double *) argv[4]); return( im_Lab2XYZ_temp( argv[0], argv[1], X0, Y0, Z0 ) ); } static im_arg_desc temp_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DOUBLE( "X0" ), IM_INPUT_DOUBLE( "Y0" ), IM_INPUT_DOUBLE( "Z0" ) }; /* Description of im_Lab2XYZ_temp. */ static im_function Lab2XYZ_temp_desc = { "im_Lab2XYZ_temp", /* Name */ "convert Lab to XYZ, with a specified colour temperature", /* Description */ IM_FN_PIO, /* Flags */ Lab2XYZ_temp_vec, /* Dispatch function */ IM_NUMBER( temp_args ), /* Size of arg list */ temp_args /* Arg list */ }; /* Call im_Lab2UCS() via arg vector. */ static int Lab2UCS_vec( im_object *argv ) { return( im_Lab2UCS( argv[0], argv[1] ) ); } /* Description of im_Lab2UCS. */ static im_function Lab2UCS_desc = { "im_Lab2UCS", /* Name */ "convert Lab to UCS", /* Description */ IM_FN_PIO, /* Flags */ Lab2UCS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabQ2Lab() via arg vector. */ static int LabQ2Lab_vec( im_object *argv ) { return( im_LabQ2Lab( argv[0], argv[1] ) ); } /* Description of im_LabQ2Lab. */ static im_function LabQ2Lab_desc = { "im_LabQ2Lab", /* Name */ "convert LabQ to Lab", /* Description */ IM_FN_PIO, /* Flags */ LabQ2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_rad2float() via arg vector. */ static int rad2float_vec( im_object *argv ) { return( im_rad2float( argv[0], argv[1] ) ); } /* Description of im_rad2float. */ static im_function rad2float_desc = { "im_rad2float", /* Name */ "convert Radiance packed to float", /* Description */ IM_FN_PIO, /* Flags */ rad2float_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_float2rad() via arg vector. */ static int float2rad_vec( im_object *argv ) { return( im_float2rad( argv[0], argv[1] ) ); } /* Description of im_float2rad */ static im_function float2rad_desc = { "im_float2rad", /* Name */ "convert float to Radiance packed", /* Description */ IM_FN_PIO, /* Flags */ float2rad_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabQ2LabS() via arg vector. */ static int LabQ2LabS_vec( im_object *argv ) { return( im_LabQ2LabS( argv[0], argv[1] ) ); } /* Description of im_LabQ2LabS. */ static im_function LabQ2LabS_desc = { "im_LabQ2LabS", /* Name */ "convert LabQ to LabS", /* Description */ IM_FN_PIO, /* Flags */ LabQ2LabS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Lab2LabS() via arg vector. */ static int Lab2LabS_vec( im_object *argv ) { return( im_Lab2LabS( argv[0], argv[1] ) ); } /* Description of im_Lab2LabS. */ static im_function Lab2LabS_desc = { "im_Lab2LabS", /* Name */ "convert Lab to LabS", /* Description */ IM_FN_PIO, /* Flags */ Lab2LabS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabS2Lab() via arg vector. */ static int LabS2Lab_vec( im_object *argv ) { return( im_LabS2Lab( argv[0], argv[1] ) ); } /* Description of im_LabS2Lab. */ static im_function LabS2Lab_desc = { "im_LabS2Lab", /* Name */ "convert LabS to Lab", /* Description */ IM_FN_PIO, /* Flags */ LabS2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_LabS2LabQ() via arg vector. */ static int LabS2LabQ_vec( im_object *argv ) { return( im_LabS2LabQ( argv[0], argv[1] ) ); } /* Description of im_LabS2LabQ. */ static im_function LabS2LabQ_desc = { "im_LabS2LabQ", /* Name */ "convert LabS to LabQ", /* Description */ IM_FN_PIO, /* Flags */ LabS2LabQ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_UCS2XYZ() via arg vector. */ static int UCS2XYZ_vec( im_object *argv ) { return( im_UCS2XYZ( argv[0], argv[1] ) ); } /* Description of im_UCS2XYZ. */ static im_function UCS2XYZ_desc = { "im_UCS2XYZ", /* Name */ "convert UCS to XYZ", /* Description */ IM_FN_PIO, /* Flags */ UCS2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_UCS2LCh() via arg vector. */ static int UCS2LCh_vec( im_object *argv ) { return( im_UCS2LCh( argv[0], argv[1] ) ); } /* Description of im_UCS2LCh. */ static im_function UCS2LCh_desc = { "im_UCS2LCh", /* Name */ "convert UCS to LCh", /* Description */ IM_FN_PIO, /* Flags */ UCS2LCh_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_UCS2Lab() via arg vector. */ static int UCS2Lab_vec( im_object *argv ) { return( im_UCS2Lab( argv[0], argv[1] ) ); } /* Description of im_UCS2Lab. */ static im_function UCS2Lab_desc = { "im_UCS2Lab", /* Name */ "convert UCS to Lab", /* Description */ IM_FN_PIO, /* Flags */ UCS2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_Yxy2XYZ via arg vector. */ static int Yxy2XYZ_vec( im_object *argv ) { return( im_Yxy2XYZ( argv[0], argv[1] ) ); } /* Description of im_Yxy2XYZ. */ static im_function Yxy2XYZ_desc = { "im_Yxy2XYZ", /* Name */ "convert Yxy to XYZ", /* Description */ IM_FN_PIO, /* Flags */ Yxy2XYZ_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_XYZ2Yxy via arg vector. */ static int XYZ2Yxy_vec( im_object *argv ) { return( im_XYZ2Yxy( argv[0], argv[1] ) ); } /* Description of im_XYZ2Yxy. */ static im_function XYZ2Yxy_desc = { "im_XYZ2Yxy", /* Name */ "convert XYZ to Yxy", /* Description */ IM_FN_PIO, /* Flags */ XYZ2Yxy_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Call im_XYZ2Lab via arg vector. */ static int XYZ2Lab_vec( im_object *argv ) { return( im_XYZ2Lab( argv[0], argv[1] ) ); } /* Description of im_XYZ2Lab. */ static im_function XYZ2Lab_desc = { "im_XYZ2Lab", /* Name */ "convert D65 XYZ to Lab", /* Description */ IM_FN_PIO, /* Flags */ XYZ2Lab_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; static int XYZ2Lab_temp_vec( im_object *argv ) { double X0 = *((double *) argv[2]); double Y0 = *((double *) argv[3]); double Z0 = *((double *) argv[4]); return( im_XYZ2Lab_temp( argv[0], argv[1], X0, Y0, Z0 ) ); } /* Description of im_XYZ2Lab_temp. */ static im_function XYZ2Lab_temp_desc = { "im_XYZ2Lab_temp", /* Name */ "convert XYZ to Lab, with a specified colour temperature", /* Description */ IM_FN_PIO, /* Flags */ XYZ2Lab_temp_vec, /* Dispatch function */ IM_NUMBER( temp_args ), /* Size of arg list */ temp_args /* Arg list */ }; /* Call im_XYZ2UCS() via arg vector. */ static int XYZ2UCS_vec( im_object *argv ) { return( im_XYZ2UCS( argv[0], argv[1] ) ); } /* Description of im_XYZ2UCS. */ static im_function XYZ2UCS_desc = { "im_XYZ2UCS", /* Name */ "convert XYZ to UCS", /* Description */ IM_FN_PIO, /* Flags */ XYZ2UCS_vec, /* Dispatch function */ IM_NUMBER( one_in_one_out ), /* Size of arg list */ one_in_one_out /* Arg list */ }; /* Args to XYZ2disp and disp2XYZ. */ static im_arg_desc XYZ2disp_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DISPLAY( "disp" ) }; /* Call im_XYZ2disp() via arg vector. */ static int XYZ2disp_vec( im_object *argv ) { return( im_XYZ2disp( argv[0], argv[1], argv[2] ) ); } /* Description of im_XYZ2disp. */ static im_function XYZ2disp_desc = { "im_XYZ2disp", /* Name */ "convert XYZ to displayble", /* Description */ IM_FN_PIO, /* Flags */ XYZ2disp_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; /* Call im_Lab2disp() via arg vector. */ static int Lab2disp_vec( im_object *argv ) { return( im_Lab2disp( argv[0], argv[1], argv[2] ) ); } /* Description of im_Lab2disp. */ static im_function Lab2disp_desc = { "im_Lab2disp", /* Name */ "convert Lab to displayable", /* Description */ IM_FN_PIO, /* Flags */ Lab2disp_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; /* Call im_LabQ2disp() via arg vector. */ static int LabQ2disp_vec( im_object *argv ) { return( im_LabQ2disp( argv[0], argv[1], argv[2] ) ); } /* Description of im_LabQ2disp. */ static im_function LabQ2disp_desc = { "im_LabQ2disp", /* Name */ "convert LabQ to displayable", /* Description */ IM_FN_PIO, /* Flags */ LabQ2disp_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; /* Call im_dE00_fromLab() via arg vector. */ static int dE00_fromLab_vec( im_object *argv ) { return( im_dE00_fromLab( argv[0], argv[1], argv[2] ) ); } /* Description of im_dE00_fromLab. */ static im_function dE00_fromLab_desc = { "im_dE00_fromLab", /* Name */ "calculate delta-E CIE2000 for two Lab images", IM_FN_PIO, /* Flags */ dE00_fromLab_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_dECMC_fromLab() via arg vector. */ static int dECMC_fromLab_vec( im_object *argv ) { return( im_dECMC_fromLab( argv[0], argv[1], argv[2] ) ); } /* Description of im_dECMC_fromLab. */ static im_function dECMC_fromLab_desc = { "im_dECMC_fromLab", /* Name */ "calculate delta-E CMC(1:1) for two Lab images", IM_FN_PIO, /* Flags */ dECMC_fromLab_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_dE_fromXYZ() via arg vector. */ static int dE_fromXYZ_vec( im_object *argv ) { return( im_dE_fromXYZ( argv[0], argv[1], argv[2] ) ); } /* Description of im_dE_fromXYZ. */ static im_function dE_fromXYZ_desc = { "im_dE_fromXYZ", /* Name */ "calculate delta-E for two XYZ images", IM_FN_PIO, /* Flags */ dE_fromXYZ_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Call im_dE_fromLab() via arg vector. */ static int dE_fromLab_vec( im_object *argv ) { return( im_dE_fromLab( argv[0], argv[1], argv[2] ) ); } /* Description of im_dE_fromLab. */ static im_function dE_fromLab_desc = { "im_dE_fromLab", /* Name */ "calculate delta-E for two Lab images", IM_FN_PIO, /* Flags */ dE_fromLab_vec, /* Dispatch function */ IM_NUMBER( two_in_one_out ), /* Size of arg list */ two_in_one_out /* Arg list */ }; /* Two images in, one out. */ static im_arg_desc dE_fromdisp_args[] = { IM_INPUT_IMAGE( "in1" ), IM_INPUT_IMAGE( "in2" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DISPLAY( "disp" ) }; /* Call im_dE_fromdisp() via arg vector. */ static int dE_fromdisp_vec( im_object *argv ) { return( im_dE_fromdisp( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_dE_fromdisp. */ static im_function dE_fromdisp_desc = { "im_dE_fromdisp", /* Name */ "calculate delta-E for two displayable images", IM_FN_PIO, /* Flags */ dE_fromdisp_vec, /* Dispatch function */ IM_NUMBER( dE_fromdisp_args ), /* Size of arg list */ dE_fromdisp_args /* Arg list */ }; /* Call im_dECMC_fromdisp() via arg vector. */ static int dECMC_fromdisp_vec( im_object *argv ) { return( im_dECMC_fromdisp( argv[0], argv[1], argv[2], argv[3] ) ); } /* Description of im_dECMC_fromdisp. */ static im_function dECMC_fromdisp_desc = { "im_dECMC_fromdisp", /* Name */ "calculate delta-E CMC(1:1) for two displayable images", IM_FN_PIO, /* Flags */ dECMC_fromdisp_vec, /* Dispatch function */ IM_NUMBER( dE_fromdisp_args ), /* Size of arg list */ dE_fromdisp_args /* Arg list */ }; /* Call im_disp2XYZ() via arg vector. */ static int disp2XYZ_vec( im_object *argv ) { return( im_disp2XYZ( argv[0], argv[1], argv[2] ) ); } /* Description of im_disp2XYZ. */ static im_function disp2XYZ_desc = { "im_disp2XYZ", /* Name */ "convert displayable to XYZ", /* Description */ IM_FN_PIO, /* Flags */ disp2XYZ_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; /* Call im_disp2Lab() via arg vector. */ static int disp2Lab_vec( im_object *argv ) { return( im_disp2Lab( argv[0], argv[1], argv[2] ) ); } /* Description of im_disp2Lab. */ static im_function disp2Lab_desc = { "im_disp2Lab", /* Name */ "convert displayable to Lab", /* Description */ IM_FN_PIO, /* Flags */ disp2Lab_vec, /* Dispatch function */ IM_NUMBER( XYZ2disp_args ), /* Size of arg list */ XYZ2disp_args /* Arg list */ }; static im_arg_desc morph_args[] = { IM_INPUT_IMAGE( "in" ), IM_OUTPUT_IMAGE( "out" ), IM_INPUT_DMASK( "greyscale" ), IM_INPUT_DOUBLE( "L_offset" ), IM_INPUT_DOUBLE( "L_scale" ), IM_INPUT_DOUBLE( "a_scale" ), IM_INPUT_DOUBLE( "b_scale" ) }; static int morph_vec( im_object *argv ) { im_mask_object *mo = argv[2]; double L_offset = *((double *) argv[3]); double L_scale = *((double *) argv[4]); double a_scale = *((double *) argv[5]); double b_scale = *((double *) argv[6]); return( im_lab_morph( argv[0], argv[1], mo->mask, L_offset, L_scale, a_scale, b_scale ) ); } static im_function morph_desc = { "im_lab_morph", /* Name */ "morph colourspace of a LAB image", IM_FN_PIO | IM_FN_PTOP, /* Flags */ morph_vec, /* Dispatch function */ IM_NUMBER( morph_args ), /* Size of arg list */ morph_args /* Arg list */ }; /* Package up all these functions. */ static im_function *colour_list[] = { &LCh2Lab_desc, &LCh2UCS_desc, &Lab2LCh_desc, &Lab2LabQ_desc, &Lab2LabS_desc, &Lab2UCS_desc, &Lab2XYZ_desc, &Lab2XYZ_temp_desc, &Lab2disp_desc, &LabQ2LabS_desc, &LabQ2Lab_desc, &LabQ2XYZ_desc, &LabQ2disp_desc, &LabS2LabQ_desc, &LabS2Lab_desc, &UCS2LCh_desc, &UCS2Lab_desc, &UCS2XYZ_desc, &XYZ2Lab_desc, &XYZ2Lab_temp_desc, &XYZ2UCS_desc, &XYZ2Yxy_desc, &XYZ2disp_desc, &XYZ2sRGB_desc, &Yxy2XYZ_desc, &dE00_fromLab_desc, &dECMC_fromLab_desc, &dECMC_fromdisp_desc, &dE_fromLab_desc, &dE_fromXYZ_desc, &dE_fromdisp_desc, &disp2Lab_desc, &disp2XYZ_desc, &float2rad_desc, &icc_ac2rc_desc, &icc_export_depth_desc, &icc_import_desc, &icc_import_embedded_desc, &icc_present_desc, &icc_transform_desc, &morph_desc, &rad2float_desc, &sRGB2XYZ_desc }; /* Package of functions. */ im_package im__colour = { "colour", IM_NUMBER( colour_list ), colour_list }; vips-8.2.2/libvips/deprecated/cimg_dispatch.c0000664000175000017500000001074612530402247016150 00000000000000/* Function dispatch tables for cimg wrappers. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include static int greyc_vec( im_object *argv ) { IMAGE *src = (IMAGE *) argv[0]; IMAGE *dst = (IMAGE *) argv[1]; int iterations = *((int *) argv[2]); double amplitude = *((double *) argv[3]); double sharpness = *((double *) argv[4]); double anisotropy = *((double *) argv[5]); double alpha = *((double *) argv[6]); double sigma = *((double *) argv[7]); double dl = *((double *) argv[8]); double da = *((double *) argv[9]); double gauss_prec = *((double *) argv[10]); int interpolation = *((int *) argv[11]); int fast_approx = *((int *) argv[12]); if( im_greyc_mask( src, dst, NULL, iterations, amplitude, sharpness, anisotropy, alpha, sigma, dl, da, gauss_prec, interpolation, fast_approx ) ) return( -1 ); return( 0 ); } static im_arg_desc greyc_arg_types[] = { IM_INPUT_IMAGE( "src" ), IM_OUTPUT_IMAGE( "dst" ), IM_INPUT_INT( "iterations" ), IM_INPUT_DOUBLE( "amplitude" ), IM_INPUT_DOUBLE( "sharpness" ), IM_INPUT_DOUBLE( "anisotropy" ), IM_INPUT_DOUBLE( "alpha" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "dl" ), IM_INPUT_DOUBLE( "da" ), IM_INPUT_DOUBLE( "gauss_prec" ), IM_INPUT_INT( "interpolation" ), IM_INPUT_INT( "fast_approx" ) }; static im_function greyc_desc = { "im_greyc", /* Name */ "noise-removing filter", /* Description */ (im_fn_flags) (IM_FN_TRANSFORM | IM_FN_PIO),/* Flags */ greyc_vec, /* Dispatch function */ IM_NUMBER( greyc_arg_types ), /* Size of arg list */ greyc_arg_types /* Arg list */ }; static int greyc_mask_vec( im_object *argv ) { IMAGE *src = (IMAGE *) argv[0]; IMAGE *dst = (IMAGE *) argv[1]; IMAGE *mask = (IMAGE *) argv[2]; int iterations = *((int *) argv[3]); double amplitude = *((double *) argv[4]); double sharpness = *((double *) argv[5]); double anisotropy = *((double *) argv[6]); double alpha = *((double *) argv[7]); double sigma = *((double *) argv[8]); double dl = *((double *) argv[9]); double da = *((double *) argv[10]); double gauss_prec = *((double *) argv[11]); int interpolation = *((int *) argv[12]); int fast_approx = *((int *) argv[13]); if( im_greyc_mask( src, dst, mask, iterations, amplitude, sharpness, anisotropy, alpha, sigma, dl, da, gauss_prec, interpolation, fast_approx ) ) return( -1 ); return( 0 ); } static im_arg_desc greyc_mask_arg_types[] = { IM_INPUT_IMAGE( "src" ), IM_OUTPUT_IMAGE( "dst" ), IM_INPUT_IMAGE( "mask" ), IM_INPUT_INT( "iterations" ), IM_INPUT_DOUBLE( "amplitude" ), IM_INPUT_DOUBLE( "sharpness" ), IM_INPUT_DOUBLE( "anisotropy" ), IM_INPUT_DOUBLE( "alpha" ), IM_INPUT_DOUBLE( "sigma" ), IM_INPUT_DOUBLE( "dl" ), IM_INPUT_DOUBLE( "da" ), IM_INPUT_DOUBLE( "gauss_prec" ), IM_INPUT_INT( "interpolation" ), IM_INPUT_INT( "fast_approx" ) }; static im_function greyc_mask_desc = { "im_greyc_mask", /* Name */ "noise-removing filter, with a mask", /* Description */ (im_fn_flags) (IM_FN_TRANSFORM | IM_FN_PIO),/* Flags */ greyc_mask_vec, /* Dispatch function */ IM_NUMBER( greyc_mask_arg_types ),/* Size of arg list */ greyc_mask_arg_types /* Arg list */ }; static im_function *function_list[] = { &greyc_desc, &greyc_mask_desc }; /* Package of functions. */ im_package im__cimg = { "cimg", IM_NUMBER( function_list ), function_list }; vips-8.2.2/libvips/arithmetic/0000775000175000017500000000000012651721505013314 500000000000000vips-8.2.2/libvips/arithmetic/unaryconst.h0000664000175000017500000000442312530402247015610 00000000000000/* base class for all unaryconst arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_UNARY_CONST_H #define VIPS_UNARY_CONST_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "unary.h" #define VIPS_TYPE_UNARY_CONST (vips_unary_const_get_type()) #define VIPS_UNARY_CONST( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_UNARY_CONST, VipsUnaryConst )) #define VIPS_UNARY_CONST_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_UNARY_CONST, VipsUnaryConstClass)) #define VIPS_IS_UNARY_CONST( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_UNARY_CONST )) #define VIPS_IS_UNARY_CONST_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_UNARY_CONST )) #define VIPS_UNARY_CONST_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_UNARY_CONST, VipsUnaryConstClass )) typedef struct _VipsUnaryConst { VipsUnary parent_instance; /* Our constants. */ VipsArea *c; /* The format the constant should be cast to. Subclasses set this * ready for unaryconst's build method. */ VipsBandFormat const_format; /* Our constant expanded to match arith->ready in size and * const_format in type. */ int n; VipsPel *c_ready; } VipsUnaryConst; typedef struct _VipsUnaryConstClass { VipsUnaryClass parent_class; } VipsUnaryConstClass; GType vips_unary_const_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_UNARY_CONST_H*/ vips-8.2.2/libvips/arithmetic/min.c0000664000175000017500000003066712651122663014177 00000000000000/* find image minimum * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/05/1990 * Modified on : 18/03/1991, N. Dessipris * 23/11/92 JC * - correct result for more than 1 band now. * 23/7/93 JC * - im_incheck() added * 20/6/95 JC * - now returns double for value, like im_min() * 4/9/09 * - gtkdoc comment * 8/9/09 * - rewrite, from im_minpos() * 30/8/11 * - rewrite as a class * 5/9/11 * - abandon scan if we find minimum possible value * 24/2/12 * - avoid NaN in float/double/complex images * - allow +/- INFINITY as a result * 4/12/12 * - from min.c * - track and return bottom n values */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "statistic.h" /* Track min values and position here. We need one of these for each thread, * and one for the main value. * * We will generally only be tracking a small (<10?) number of values, so * simple arrays will be fastest. */ typedef struct _VipsValues { struct _VipsMin *min; /* The min number of values we track. */ int size; /* How many values we have in the arrays. */ int n; /* Position and values. We track mod**2 for complex and do a sqrt() at * the end. The three arrays are sorted by @value, largest first. */ double *value; int *x_pos; int *y_pos; } VipsValues; typedef struct _VipsMin { VipsStatistic parent_instance; /* Number of values we track. */ int size; /* The single min. Can be unset if, for example, the whole image is * NaN. */ double min; int x; int y; /* And the positions and values we found as VipsArrays for returning * to our caller. */ VipsArrayDouble *min_array; VipsArrayInt *x_array; VipsArrayInt *y_array; /* Global state here. */ VipsValues values; } VipsMin; static void vips_values_init( VipsValues *values, VipsMin *min ) { values->min = min; values->size = min->size; values->n = 0; values->value = VIPS_ARRAY( min, values->size, double ); values->x_pos = VIPS_ARRAY( min, values->size, int ); values->y_pos = VIPS_ARRAY( min, values->size, int ); } /* Add a value. Do nothing if the value is too large. */ static void vips_values_add( VipsValues *values, double v, int x, int y ) { int i, j; /* Find insertion point. */ for( i = 0; i < values->n; i++ ) if( v >= values->value[i] ) break; /* Array full? */ if( values->n == values->size ) { if( i > 0 ) { /* We need to move stuff to the left to make space, * shunting the largest out. */ for( j = 0; j < i - 1; j++ ) { values->value[j] = values->value[j + 1]; values->x_pos[j] = values->x_pos[j + 1]; values->y_pos[j] = values->y_pos[j + 1]; } values->value[i - 1] = v; values->x_pos[i - 1] = x; values->y_pos[i - 1] = y; } } else { /* Not full, move stuff to the right into empty space. */ for( j = values->n; j > i; j-- ) { values->value[j] = values->value[j - 1]; values->x_pos[j] = values->x_pos[j - 1]; values->y_pos[j] = values->y_pos[j - 1]; } values->value[i] = v; values->x_pos[i] = x; values->y_pos[i] = y; values->n += 1; } } typedef VipsStatisticClass VipsMinClass; G_DEFINE_TYPE( VipsMin, vips_min, VIPS_TYPE_STATISTIC ); static int vips_min_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsMin *min = (VipsMin *) object; VipsValues *values = &min->values; vips_values_init( values, min ); if( VIPS_OBJECT_CLASS( vips_min_parent_class )->build( object ) ) return( -1 ); /* For speed we accumulate min ** 2 for complex. */ if( vips_band_format_iscomplex( vips_image_get_format( statistic->in ) ) ) { int i; for( i = 0; i < values->n; i++ ) values->value[i] = sqrt( values->value[i] ); } /* Don't set if there's no value (eg. if every pixel is NaN). This * will trigger an error later. */ if( values->n > 0 ) { VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; out_array = vips_array_double_new( values->value, values->n ); x_array = vips_array_int_new( values->x_pos, values->n ); y_array = vips_array_int_new( values->y_pos, values->n ); /* We have to set the props via g_object_set() to stop vips * complaining they are unset. */ g_object_set( min, "out", values->value[values->n - 1], "x", values->x_pos[values->n - 1], "y", values->y_pos[values->n - 1], "out_array", out_array, "x_array", x_array, "y_array", y_array, NULL ); vips_area_unref( (VipsArea *) out_array ); vips_area_unref( (VipsArea *) x_array ); vips_area_unref( (VipsArea *) y_array ); } #ifdef DEBUG { int i; printf( "vips_min_build: %d values found\n", values->n ); for( i = 0; i < values->n; i++ ) printf( "%d) %g\t%d\t%d\n", i, values->value[i], values->x_pos[i], values->y_pos[i] ); } #endif /*DEBUG*/ return( 0 ); } /* New sequence value. Make a private VipsValues for this thread. */ static void * vips_min_start( VipsStatistic *statistic ) { VipsValues *values; values = g_new( VipsValues, 1 ); vips_values_init( values, (VipsMin *) statistic ); return( (void *) values ); } /* Merge the sequence value back into the per-call state. */ static int vips_min_stop( VipsStatistic *statistic, void *seq ) { VipsMin *min = (VipsMin *) statistic; VipsValues *values = (VipsValues *) seq; int i; for( i = 0; i < values->n; i++ ) vips_values_add( &min->values, values->value[i], values->x_pos[i], values->y_pos[i] ); g_free( values ); return( 0 ); } /* Real min with a lower bound. * * Add values to the buffer if they are less than the buffer maximum. If * the buffer isn't full, there is no maximum. * * Avoid a double test by splitting the loop into two phases: before and after * the buffer fills. * * Stop if our array fills with minval. */ #define LOOPU( TYPE, LOWER ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ for( ; i < sz; i++ ) { \ if( p[i] < m ) { \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ if( m <= LOWER ) { \ statistic->stop = TRUE; \ break; \ } \ } \ } \ } /* float/double min ... no limits, and we have to avoid NaN. * * NaN compares false to every float value, so we don't need to test for NaN * in the second loop. */ #define LOOPF( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) \ if( !VIPS_ISNAN( p[i] ) ) \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ for( ; i < sz; i++ ) \ if( p[i] < m ) { \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ } \ } /* As LOOPF, but complex. Track min(mod ** 2) to avoid sqrt(). */ #define LOOPC( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) { \ TYPE mod2 = p[0] * p[0] + p[1] * p[1]; \ \ if( !VIPS_ISNAN( mod2 ) ) \ vips_values_add( values, p[i], x + i / bands, y ); \ \ p += 2; \ } \ m = values->value[0]; \ \ for( ; i < sz; i++ ) { \ TYPE mod2 = p[0] * p[0] + p[1] * p[1]; \ \ if( mod2 < m ) { \ vips_values_add( values, mod2, x + i / bands, y ); \ m = values->value[0]; \ } \ \ p += 2; \ } \ } /* Loop over region, adding to seq. */ static int vips_min_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { VipsValues *values = (VipsValues *) seq; const int bands = vips_image_get_bands( statistic->in ); const int sz = n * bands; int i; switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOPU( unsigned char, 0 ); break; case VIPS_FORMAT_CHAR: LOOPU( signed char, SCHAR_MIN ); break; case VIPS_FORMAT_USHORT: LOOPU( unsigned short, 0 ); break; case VIPS_FORMAT_SHORT: LOOPU( signed short, SHRT_MIN ); break; case VIPS_FORMAT_UINT: LOOPU( unsigned int, 0 ); break; case VIPS_FORMAT_INT: LOOPU( signed int, INT_MIN ); break; case VIPS_FORMAT_FLOAT: LOOPF( float ); break; case VIPS_FORMAT_DOUBLE: LOOPF( double ); break; case VIPS_FORMAT_COMPLEX: LOOPC( float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPC( double ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_min_class_init( VipsMinClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "min"; object_class->description = _( "find image minimum" ); object_class->build = vips_min_build; sclass->start = vips_min_start; sclass->scan = vips_min_scan; sclass->stop = vips_min_stop; VIPS_ARG_DOUBLE( class, "out", 1, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMin, min ), -INFINITY, INFINITY, 0.0 ); VIPS_ARG_INT( class, "x", 2, _( "x" ), _( "Horizontal position of minimum" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, x ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "y", 3, _( "y" ), _( "Vertical position of minimum" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, y ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "size", 4, _( "Size" ), _( "Number of minimum values to find" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMin, size ), 1, 1000000, 10 ); VIPS_ARG_BOXED( class, "out_array", 6, _( "Output array" ), _( "Array of output values" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, min_array ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_BOXED( class, "x_array", 7, _( "x array" ), _( "Array of horizontal positions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, x_array ), VIPS_TYPE_ARRAY_INT ); VIPS_ARG_BOXED( class, "y_array", 8, _( "y array" ), _( "Array of vertical positions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMin, y_array ), VIPS_TYPE_ARRAY_INT ); } static void vips_min_init( VipsMin *min ) { min->size = 1; } /** * vips_min: * @in: input #VipsImage * @out: output pixel minimum * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @x: horizontal position of minimum * @y: vertical position of minimum * @size: number of minima to find * @out_array: return array of minimum values * @x_array: corresponding horizontal positions * @y_array: corresponding vertical positions * * This operation finds the minimum value in an image. * * By default it finds the single smallest value. If @size is set >1, it will * find the @size smallest values. It will stop searching early if has found * enough values. * * It operates on all * bands of the input image: use vips_stats() if you need to find an * minimum for each band. * * For complex images, this operation finds the minimum modulus. * * You can read out the position of the minimum with @x and @y. You can read * out arrays of the values and positions of the top @size minima with * @out_array, @x_array and @y_array. * These values are returned sorted from * smallest to largest. * * See also: vips_min(), vips_stats(). * * Returns: 0 on success, -1 on error */ int vips_min( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "min", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/sum.c0000664000175000017500000001443312651122721014204 00000000000000/* sum an array of images * * 18/3/14 * - from add.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "nary.h" typedef VipsNary VipsSum; typedef VipsNaryClass VipsSumClass; G_DEFINE_TYPE( VipsSum, vips_sum, VIPS_TYPE_NARY ); #define LOOP( IN, OUT ) { \ IN ** restrict p = (IN **) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OUT sum; \ \ sum = p[0][x]; \ for( i = 1; i < n; i++ ) \ sum += p[i][x]; \ q[x] = sum; \ } \ } static void sum_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; int n = arithmetic->n; /* Complex just doubles the size. */ const int sz = width * vips_image_get_bands( im ) * (vips_band_format_iscomplex( vips_image_get_format( im ) ) ? 2 : 1); int x; int i; /* Sum all input types. Keep types here in sync with * vips_sum_format_table[] below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, unsigned int ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, signed int ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, unsigned int ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, signed int ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int, signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOP( double, double ); break; default: g_assert_not_reached(); } } #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for addition. Sign and value preserving. Make sure these * match the case statement in sum_buffer() above. */ static const VipsBandFormat vips_sum_format_table[10] = { /* UC C US S UI I F X D DX */ UI, I, UI, I, UI, I, F, X, D, DX }; static void vips_sum_class_init( VipsSumClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "sum"; object_class->description = _( "sum an array of images" ); aclass->process_line = sum_buffer; vips_arithmetic_set_format_table( aclass, vips_sum_format_table ); } static void vips_sum_init( VipsSum *sum ) { } static int vips_sumv( VipsImage **in, VipsImage **out, int n, va_list ap ) { VipsArrayImage *array; int result; array = vips_array_image_new( in, n ); result = vips_call_split( "sum", ap, array, out ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_sum: * @in: array of input images * @out: output image * @n: number of input images * @...: %NULL-terminated list of optional named arguments * * This operation sums all images in @in and writes the result to @out. * * If the images differ in size, the smaller images are enlarged to match the * largest by adding zero pixels along the bottom and right. * * If the number of bands differs, all but one of the images * must have one band. In this case, n-band images are formed from the * one-band images by joining n copies of the one-band images together, and then * the n-band images are operated upon. * * The input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * VipsSum type promotion * * * * input type * output type * * * * * uchar * uint * * * char * int * * * ushort * uint * * * short * int * * * uint * uint * * * int * int * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_add(). * * Returns: 0 on success, -1 on error */ int vips_sum( VipsImage **in, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_sumv( in, out, n, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/stats.c0000664000175000017500000002533012651663124014543 00000000000000/* stats.c ... many image stats in a single pass * (C) Kirk Martinez 1993 23/4/93 J.Cupitt - adapted to partial images - special struct abandoned; now returns DOUBLEMASK. 1/7/93 JC - adapted for partial v2 - ANSIfied 27/7/93 JC - init of mask changed to use actual values, not IM_MAXDOUBLE and (-IM_MAXDOUBLE). These caused problems when assigned to floats. funny business with offset==42, yuk! 31/8/93 JC - forgot to init global max/min properly! sorry. 21/6/95 JC - still did not init max and min correctly --- now fixed for good * 13/1/05 * - use 64 bit arithmetic * 1/9/09 * - argh nope min/max was broken again for >1CPU in short pipelines on * some architectures * 7/9/09 * - rework based on new im__wrapscan() / im_max() ideas for a proper fix * - gtkdoc comment * 7/11/11 * - redone as a class * - track maxpos / minpos too */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsStats { VipsStatistic parent_instance; VipsImage *out; gboolean set; /* FALSE means no value yet */ } VipsStats; typedef VipsStatisticClass VipsStatsClass; G_DEFINE_TYPE( VipsStats, vips_stats, VIPS_TYPE_STATISTIC ); /* Names for our columns. */ enum { COL_MIN = 0, COL_MAX = 1, COL_SUM = 2, COL_SUM2 = 3, COL_AVG = 4, COL_SD = 5, COL_XMIN = 6, COL_YMIN = 7, COL_XMAX = 8, COL_YMAX = 9, COL_LAST = 10 }; static int vips_stats_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsStats *stats = (VipsStats *) object; gint64 vals, pels; double *row0, *row; int b, y, i; if( vips_object_argument_isset( object, "in" ) ) { int bands = vips_image_get_bands( statistic->in ); if( vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); g_object_set( object, "out", vips_image_new_matrix( COL_LAST, bands + 1 ), NULL ); } if( VIPS_OBJECT_CLASS( vips_stats_parent_class )->build( object ) ) return( -1 ); pels = (gint64) vips_image_get_width( statistic->in ) * vips_image_get_height( statistic->in ); vals = pels * vips_image_get_bands( statistic->in ); row0 = VIPS_MATRIX( stats->out, 0, 0 ); row = VIPS_MATRIX( stats->out, 0, 1 ); for( i = 0; i < COL_LAST; i++ ) row0[i] = row[i]; for( b = 1; b < vips_image_get_bands( statistic->in ); b++ ) { row = VIPS_MATRIX( stats->out, 0, b + 1 ); if( row[COL_MIN] < row0[COL_MIN] ) { row0[COL_MIN] = row[COL_MIN]; row0[COL_XMIN] = row[COL_XMIN]; row0[COL_YMIN] = row[COL_YMIN]; } if( row[COL_MAX] > row0[COL_MAX] ) { row0[COL_MAX] = row[COL_MAX]; row0[COL_XMAX] = row[COL_XMAX]; row0[COL_YMAX] = row[COL_YMAX]; } row0[COL_SUM] += row[COL_SUM]; row0[COL_SUM2] += row[COL_SUM2]; } for( y = 1; y < vips_image_get_height( stats->out ); y++ ) { double *row = VIPS_MATRIX( stats->out, 0, y ); row[COL_AVG] = row[COL_SUM] / pels; row[COL_SD] = sqrt( VIPS_FABS( row[COL_SUM2] - (row[COL_SUM] * row[COL_SUM] / pels) ) / (pels - 1) ); } row0[COL_AVG] = row0[COL_SUM] / vals; row0[COL_SD] = sqrt( VIPS_FABS( row0[COL_SUM2] - (row0[COL_SUM] * row0[COL_SUM] / vals) ) / (vals - 1) ); return( 0 ); } /* Stop function. Add these little stats to the main set of stats. */ static int vips_stats_stop( VipsStatistic *statistic, void *seq ) { int bands = vips_image_get_bands( statistic->in ); VipsStats *global = (VipsStats *) statistic; VipsStats *local = (VipsStats *) seq; int b; if( local->set && !global->set ) { for( b = 0; b < bands; b++ ) { double *p = VIPS_MATRIX( local->out, 0, b + 1 ); double *q = VIPS_MATRIX( global->out, 0, b + 1 ); int i; for( i = 0; i < COL_LAST; i++ ) q[i] = p[i]; } global->set = TRUE; } else if( local->set && global->set ) { for( b = 0; b < bands; b++ ) { double *p = VIPS_MATRIX( local->out, 0, b + 1 ); double *q = VIPS_MATRIX( global->out, 0, b + 1 ); if( p[COL_MIN] < q[COL_MIN] ) { q[COL_MIN] = p[COL_MIN]; q[COL_XMIN] = p[COL_XMIN]; q[COL_YMIN] = p[COL_YMIN]; } if( p[COL_MAX] > q[COL_MAX] ) { q[COL_MAX] = p[COL_MAX]; q[COL_XMAX] = p[COL_XMAX]; q[COL_YMAX] = p[COL_YMAX]; } q[COL_SUM] += p[COL_SUM]; q[COL_SUM2] += p[COL_SUM2]; } } VIPS_FREEF( g_object_unref, local->out ); VIPS_FREEF( g_free, seq ); return( 0 ); } /* Start function: make a dummy local stats for the private use of this thread. */ static void * vips_stats_start( VipsStatistic *statistic ) { int bands = vips_image_get_bands( statistic->in ); VipsStats *stats; stats = g_new( VipsStats, 1 ); if( !(stats->out = vips_image_new_matrix( COL_LAST, bands + 1 )) ) { g_free( stats ); return( NULL ); } stats->set = FALSE; return( (void *) stats ); } /* We scan lines bands times to avoid repeating band loops. * Use temp variables of same type for min/max for faster comparisons. */ #define LOOP( TYPE ) { \ for( b = 0; b < bands; b++ ) { \ TYPE *p = ((TYPE *) in) + b; \ double *q = VIPS_MATRIX( local->out, 0, b + 1 ); \ TYPE small, big; \ double sum, sum2; \ int xmin, ymin; \ int xmax, ymax; \ \ if( local->set ) { \ small = q[COL_MIN]; \ big = q[COL_MAX]; \ sum = q[COL_SUM]; \ sum2 = q[COL_SUM2]; \ xmin = q[COL_XMIN]; \ ymin = q[COL_YMIN]; \ xmax = q[COL_XMAX]; \ ymax = q[COL_YMAX]; \ } \ else { \ small = p[0]; \ big = p[0]; \ sum = 0; \ sum2 = 0; \ xmin = x; \ ymin = y; \ xmax = x; \ ymax = y; \ } \ \ for( i = 0; i < n; i++ ) { \ TYPE value = *p; \ \ sum += value; \ sum2 += (double) value * (double) value; \ if( value > big ) { \ big = value; \ xmax = x + i; \ ymax = y; \ } \ else if( value < small ) { \ small = value; \ xmin = x + i; \ ymin = y; \ } \ \ p += bands; \ } \ \ q[COL_MIN] = small; \ q[COL_MAX] = big; \ q[COL_SUM] = sum; \ q[COL_SUM2] = sum2; \ q[COL_XMIN] = xmin; \ q[COL_YMIN] = ymin; \ q[COL_XMAX] = xmax; \ q[COL_YMAX] = ymax; \ } \ \ local->set = TRUE; \ } /* As above, but for float/double types where we have to avoid NaN. */ #define LOOPF( TYPE ) { \ for( b = 0; b < bands; b++ ) { \ TYPE *p = ((TYPE *) in) + b; \ double *q = VIPS_MATRIX( local->out, 0, b + 1 ); \ TYPE small, big; \ double sum, sum2; \ int xmin, ymin; \ int xmax, ymax; \ \ if( local->set ) { \ small = q[COL_MIN]; \ big = q[COL_MAX]; \ sum = q[COL_SUM]; \ sum2 = q[COL_SUM2]; \ xmin = q[COL_XMIN]; \ ymin = q[COL_YMIN]; \ xmax = q[COL_XMAX]; \ ymax = q[COL_YMAX]; \ } \ else { \ small = p[0]; \ big = p[0]; \ sum = 0; \ sum2 = 0; \ xmin = x; \ ymin = y; \ xmax = x; \ ymax = y; \ } \ \ for( i = 0; i < n; i++ ) { \ TYPE value = *p; \ \ sum += value; \ sum2 += (double) value * (double) value; \ if( value > big ) { \ big = value; \ xmax = x + i; \ ymax = y; \ } \ else if( value < small ) { \ small = value; \ xmin = x + i; \ ymin = y; \ } \ \ p += bands; \ } \ \ q[COL_MIN] = small; \ q[COL_MAX] = big; \ q[COL_SUM] = sum; \ q[COL_SUM2] = sum2; \ q[COL_XMIN] = xmin; \ q[COL_YMIN] = ymin; \ q[COL_XMAX] = xmax; \ q[COL_YMAX] = ymax; \ } \ \ local->set = TRUE; \ } /* Loop over region, accumulating a sum in *tmp. */ static int vips_stats_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { const int bands = vips_image_get_bands( statistic->in ); VipsStats *local = (VipsStats *) seq; int b, i; switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOP( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int ); break; case VIPS_FORMAT_FLOAT: LOOP( float ); break; case VIPS_FORMAT_DOUBLE: LOOP( double ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_stats_class_init( VipsStatsClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "stats"; object_class->description = _( "find image average" ); object_class->build = vips_stats_build; sclass->start = vips_stats_start; sclass->scan = vips_stats_scan; sclass->stop = vips_stats_stop; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output array of statistics" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsStats, out ) ); } static void vips_stats_init( VipsStats *stats ) { } /** * vips_stats: * @in: image to scan * @out: image of statistics * @...: %NULL-terminated list of optional named arguments * * Find many image statistics in a single pass through the data. @out is a * one-band #VIPS_FORMAT_DOUBLE image of at least 10 columns by n + 1 * (where n is number of bands in image @in) * rows. Columns are statistics, and are, in order: minimum, maximum, sum, * sum of squares, mean, standard deviation, x coordinate of minimum, y * coordinate of minimum, x coordinate of maximum, y coordinate of maximum. * Later versions of vips_stats() may add more columns. * * Row 0 has statistics for all * bands together, row 1 has stats for band 1, and so on. * * See also: vips_avg(), vips_min(). * * Returns: 0 on success, -1 on error */ int vips_stats( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "stats", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/project.c0000664000175000017500000002116612651122674015056 00000000000000/* horizontal and vertical projection * * 20/4/06 * - from im_histgr() * 25/3/10 * - gtkdoc * - small celanups * 11/9/13 * - redo as a class, from vips_hist_find() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "statistic.h" struct _Project; typedef struct { /* Horizontal array: sums of all columns. */ void *column_sums; /* Vertical array: sums of all rows. */ void *row_sums; } Histogram; typedef struct _VipsProject { VipsStatistic parent_instance; /* Main image histogram. Subhists accumulate to this. */ Histogram *hist; /* Write sums here. */ VipsImage *columns; VipsImage *rows; } VipsProject; typedef VipsStatisticClass VipsProjectClass; G_DEFINE_TYPE( VipsProject, vips_project, VIPS_TYPE_STATISTIC ); /* Save a bit of typing. */ #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define D VIPS_FORMAT_DOUBLE #define N VIPS_FORMAT_NOTSET static const VipsBandFormat vips_project_format_table[10] = { /* UC C US S UI I F X D DX */ UI, I, UI, I, UI, I, D, N, D, N }; static Histogram * histogram_new( VipsProject *project ) { VipsStatistic *statistic = VIPS_STATISTIC( project ); VipsImage *in = statistic->ready; VipsBandFormat outfmt = vips_project_format_table[in->BandFmt]; int psize = vips_format_sizeof( outfmt ) * in->Bands; Histogram *hist; if( !(hist = VIPS_NEW( project, Histogram )) ) return( NULL ); hist->column_sums = VIPS_ARRAY( project, psize * in->Xsize, guchar ); hist->row_sums = VIPS_ARRAY( project, psize * in->Ysize, guchar ); if( !hist->column_sums || !hist->row_sums ) return( NULL ); memset( hist->column_sums, 0, psize * in->Xsize ); memset( hist->row_sums, 0, psize * in->Ysize ); return( hist ); } static int vips_project_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsProject *project = (VipsProject *) object; int y; if( statistic->in && vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); g_object_set( object, "columns", vips_image_new(), "rows", vips_image_new(), NULL ); /* main hist made on first thread start. */ if( VIPS_OBJECT_CLASS( vips_project_parent_class )->build( object ) ) return( -1 ); /* Make the output image. */ if( vips_image_pipelinev( project->columns, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) || vips_image_pipelinev( project->rows, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) ) return( -1 ); project->columns->Ysize = 1; project->columns->BandFmt = vips_project_format_table[statistic->ready->BandFmt]; project->columns->Type = VIPS_INTERPRETATION_HISTOGRAM; project->rows->Xsize = 1; project->rows->BandFmt = vips_project_format_table[statistic->ready->BandFmt]; project->rows->Type = VIPS_INTERPRETATION_HISTOGRAM; if( vips_image_write_line( project->columns, 0, (VipsPel *) project->hist->column_sums ) ) return( -1 ); for( y = 0; y < project->rows->Ysize; y++ ) if( vips_image_write_line( project->rows, y, (VipsPel *) project->hist->row_sums + y * VIPS_IMAGE_SIZEOF_PEL( project->rows ) ) ) return( -1 ); return( 0 ); } /* Build a sub-hist, based on the main hist. */ static void * vips_project_start( VipsStatistic *statistic ) { VipsProject *project = (VipsProject *) statistic; /* Make the main hist, if necessary. */ if( !project->hist ) project->hist = histogram_new( project ); return( (void *) histogram_new( project ) ); } /* Add a line of pixels. */ #define ADD_PIXELS( OUT, IN ) { \ OUT *row_sums = ((OUT *) hist->row_sums) + y * nb; \ OUT *column_sums; \ IN *p; \ \ column_sums = ((OUT *) hist->column_sums) + x * nb; \ p = (IN *) in; \ for( i = 0; i < n; i++ ) { \ for( j = 0; j < nb; j++ ) { \ column_sums[j] += p[j]; \ row_sums[j] += p[j]; \ } \ \ p += nb; \ column_sums += nb; \ } \ } /* Add a region to a project. */ static int vips_project_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { int nb = statistic->ready->Bands; Histogram *hist = (Histogram *) seq; int i, j; switch( statistic->ready->BandFmt ) { case VIPS_FORMAT_UCHAR: ADD_PIXELS( guint, guchar ); break; case VIPS_FORMAT_CHAR: ADD_PIXELS( int, char ); break; case VIPS_FORMAT_USHORT: ADD_PIXELS( guint, gushort ); break; case VIPS_FORMAT_SHORT: ADD_PIXELS( int, short ); break; case VIPS_FORMAT_UINT: ADD_PIXELS( guint, guint ); break; case VIPS_FORMAT_INT: ADD_PIXELS( int, int ); break; case VIPS_FORMAT_FLOAT: ADD_PIXELS( double, float ); break; case VIPS_FORMAT_DOUBLE: ADD_PIXELS( double, double ); break; default: g_assert_not_reached(); } return( 0 ); } #define ADD_BUFFER( TYPE, Q, P, N ) { \ TYPE *p = (TYPE *) (P); \ TYPE *q = (TYPE *) (Q); \ int n = (N); \ int i; \ \ for( i = 0; i < n; i++ ) \ q[i] += p[i]; \ } /* Join a sub-project onto the main project. */ static int vips_project_stop( VipsStatistic *statistic, void *seq ) { VipsProject *project = (VipsProject *) statistic; Histogram *hist = project->hist; Histogram *sub_hist = (Histogram *) seq; VipsImage *in = statistic->ready; VipsBandFormat outfmt = vips_project_format_table[in->BandFmt]; int hsz = in->Xsize * in->Bands; int vsz = in->Ysize * in->Bands; /* Add on sub-data. */ switch( outfmt ) { case VIPS_FORMAT_UINT: ADD_BUFFER( guint, hist->column_sums, sub_hist->column_sums, hsz ); ADD_BUFFER( guint, hist->row_sums, sub_hist->row_sums, vsz ); break; case VIPS_FORMAT_INT: ADD_BUFFER( int, hist->column_sums, sub_hist->column_sums, hsz ); ADD_BUFFER( int, hist->row_sums, sub_hist->row_sums, vsz ); break; case VIPS_FORMAT_DOUBLE: ADD_BUFFER( double, hist->column_sums, sub_hist->column_sums, hsz ); ADD_BUFFER( double, hist->row_sums, sub_hist->row_sums, vsz ); break; default: g_assert_not_reached(); } /* Blank out sub-project to make sure we can't add it again. */ sub_hist->column_sums = NULL; sub_hist->row_sums = NULL; return( 0 ); } static void vips_project_class_init( VipsProjectClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "project"; object_class->description = _( "find image projections" ); object_class->build = vips_project_build; sclass->start = vips_project_start; sclass->scan = vips_project_scan; sclass->stop = vips_project_stop; VIPS_ARG_IMAGE( class, "columns", 100, _( "Columns" ), _( "Sums of columns" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsProject, columns ) ); VIPS_ARG_IMAGE( class, "rows", 101, _( "Rows" ), _( "Sums of rows" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsProject, rows ) ); } static void vips_project_init( VipsProject *project ) { } /** * vips_project: * @in: input image * @columns: sums of columns * @rows: sums of rows * @...: %NULL-terminated list of optional named arguments * * Find the horizontal and vertical projections of an image, ie. the sum * of every row of pixels, and the sum of every column of pixels. The output * format is uint, int or double, depending on the input format. * * Non-complex images only. * * See also: vips_hist_find(), vips_profile(). * * Returns: 0 on success, -1 on error */ int vips_project( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) { va_list ap; int result; va_start( ap, rows ); result = vips_call_split( "project", ap, in, columns, rows ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/hough_line.c0000664000175000017500000001147412530402247015523 00000000000000/* hough transform for lines * * 7/3/14 * - from hist_find.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "statistic.h" #include "hough.h" typedef struct _VipsHoughLine { VipsHough parent_instance; /* Size of parameter space. */ int width; int height; /* LUT for this transform. */ double *sin; } VipsHoughLine; typedef VipsHoughClass VipsHoughLineClass; G_DEFINE_TYPE( VipsHoughLine, vips_hough_line, VIPS_TYPE_HOUGH ); static int vips_hough_line_build( VipsObject *object ) { VipsHoughLine *hough_line = (VipsHoughLine *) object; int width = hough_line->width; int i; if( !(hough_line->sin = VIPS_ARRAY( object, width, double )) ) return( -1 ); for( i = 0; i < width; i++ ) hough_line->sin[i] = sin( 2 * VIPS_PI * i / width ); if( VIPS_OBJECT_CLASS( vips_hough_line_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static int vips_hough_line_init_accumulator( VipsHough *hough, VipsImage *accumulator ) { VipsHoughLine *hough_line = (VipsHoughLine *) hough; vips_image_init_fields( accumulator, hough_line->width, hough_line->height, 1, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_MATRIX, 1.0, 1.0 ); return( 0 ); } /* Cast votes for all lines passing through x, y. */ static void vips_hough_line_vote( VipsHough *hough, VipsImage *accumulator, int x, int y ) { VipsHoughLine *hough_line = (VipsHoughLine *) hough; VipsStatistic *statistic = (VipsStatistic *) hough; double xd = (double) x / statistic->ready->Xsize; double yd = (double) y / statistic->ready->Ysize; int width = hough_line->width; int height = hough_line->height; int i; for( i = 0; i < width; i++ ) { int i90 = (i + width / 4) % width; double r = xd * hough_line->sin[i90] + yd * hough_line->sin[i]; int ri = height * r; if( ri >= 0 && ri < height ) *VIPS_IMAGE_ADDR( accumulator, i, ri ) += 1; } } static void vips_hough_line_class_init( VipsHoughClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsHoughClass *hclass = (VipsHoughClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hough_line"; object_class->description = _( "find hough line transform" ); object_class->build = vips_hough_line_build; hclass->init_accumulator = vips_hough_line_init_accumulator; hclass->vote = vips_hough_line_vote; VIPS_ARG_INT( class, "width", 110, _( "Width" ), _( "horizontal size of parameter space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughLine, width ), 1, 100000, 256 ); VIPS_ARG_INT( class, "height", 111, _( "Height" ), _( "Vertical size of parameter space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughLine, height ), 1, 100000, 256 ); } static void vips_hough_line_init( VipsHoughLine *hough_line ) { hough_line->width = 256; hough_line->height = 256; } /** * vips_hough_line: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @width: horizontal size of parameter space * @height: vertical size of parameter space * * Find the line Hough transform for @in. @in must have one band. @out has one * band, with pixels being the number of votes for that line. The X dimension * of @out is the line angle, the Y dimension is the distance of the line from * the origin. * * Use @width @height to set the size of the parameter space image (@out), * that is, how accurate the line determination should be. * * See also: vips_hough_circle(). * * Returns: 0 on success, -1 on error */ int vips_hough_line( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hough_line", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/binary.c0000664000175000017500000000541112530402247014660 00000000000000/* base class for all binary operations * * 13/3/11 * - argh, forgot to make a private array for the inputs * 16/5/11 * - added sizealike * 30/10/11 * - moe most functionality into arithmetic.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" G_DEFINE_ABSTRACT_TYPE( VipsBinary, vips_binary, VIPS_TYPE_ARITHMETIC ); static int vips_binary_build( VipsObject *object ) { VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsBinary *binary = VIPS_BINARY( object ); arithmetic->n = 2; arithmetic->in = (VipsImage **) vips_object_local_array( object, 2 ); arithmetic->in[0] = binary->left; arithmetic->in[1] = binary->right; if( arithmetic->in[0] ) g_object_ref( arithmetic->in[0] ); if( arithmetic->in[1] ) g_object_ref( arithmetic->in[1] ); if( VIPS_OBJECT_CLASS( vips_binary_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_binary_class_init( VipsBinaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "binary"; vobject_class->description = _( "binary operations" ); vobject_class->build = vips_binary_build; /* Create properties. */ VIPS_ARG_IMAGE( class, "left", 1, _( "Left" ), _( "Left-hand image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBinary, left ) ); VIPS_ARG_IMAGE( class, "right", 2, _( "Right" ), _( "Right-hand image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBinary, right ) ); } static void vips_binary_init( VipsBinary *binary ) { /* Init our instance fields. */ } vips-8.2.2/libvips/arithmetic/deviate.c0000664000175000017500000001362412651663124015031 00000000000000/* VipsDeviate * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/08/1990 * Modified on: * 5/5/93 JC * - now does partial images * - less likely to overflow * - adapted from im_deviate * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 21/2/95 JC * - modernised again * 11/5/95 JC * - oops! return( NULL ) in im_deviate(), instead of return( -1 ) * 20/6/95 JC * - now returns double, not float * 13/1/05 * - use 64 bit arithmetic * 8/12/06 * - add liboil support * 2/9/09 * - gtk-doc comment * - minor reformatting * 4/9/09 * - use im__wrapscan() * 31/7/10 * - remove liboil * 6/11/11 * - rewrite as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsDeviate { VipsStatistic parent_instance; double sum; double sum2; double out; } VipsDeviate; typedef VipsStatisticClass VipsDeviateClass; G_DEFINE_TYPE( VipsDeviate, vips_deviate, VIPS_TYPE_STATISTIC ); static int vips_deviate_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsDeviate *deviate = (VipsDeviate *) object; gint64 vals; double s, s2; if( statistic->in && vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_deviate_parent_class )->build( object ) ) return( -1 ); /* NOTE: NR suggests a two-pass algorithm to minimise roundoff. But that's too expensive for us :-( so do it the old one-pass way. */ /* Calculate and return deviation. Add a fabs to stop sqrt(<=0). */ vals = (gint64) vips_image_get_width( statistic->in ) * vips_image_get_height( statistic->in ) * vips_image_get_bands( statistic->in ); s = deviate->sum; s2 = deviate->sum2; g_object_set( object, "out", sqrt( VIPS_FABS( s2 - (s * s / vals) ) / (vals - 1) ), NULL ); return( 0 ); } /* Start function: allocate space for an array in which we can accumulate the * sum and sum of squares for this thread. */ static void * vips_deviate_start( VipsStatistic *statistic ) { return( (void *) g_new0( double, 2 ) ); } /* Stop function. Add this little sum to the main sum. */ static int vips_deviate_stop( VipsStatistic *statistic, void *seq ) { VipsDeviate *deviate = (VipsDeviate *) statistic; double *ss2 = (double *) seq; deviate->sum += ss2[0]; deviate->sum2 += ss2[1]; g_free( ss2 ); return( 0 ); } #define LOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( x = 0; x < sz; x++ ) { \ TYPE v = p[x]; \ \ sum += v; \ sum2 += (double) v * (double) v; \ } \ } static int vips_deviate_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { const int sz = n * vips_image_get_bands( statistic->in ); double *ss2 = (double *) seq; double sum; double sum2; sum = ss2[0]; sum2 = ss2[1]; /* Now generate code for all types. */ switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOP( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int ); break; case VIPS_FORMAT_FLOAT: LOOP( float ); break; case VIPS_FORMAT_DOUBLE: LOOP( double ); break; default: g_assert_not_reached(); } ss2[0] = sum; ss2[1] = sum2; return( 0 ); } static void vips_deviate_class_init( VipsDeviateClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "deviate"; object_class->description = _( "find image standard deviation" ); object_class->build = vips_deviate_build; sclass->start = vips_deviate_start; sclass->scan = vips_deviate_scan; sclass->stop = vips_deviate_stop; VIPS_ARG_DOUBLE( class, "out", 2, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsDeviate, out ), -INFINITY, INFINITY, 0.0 ); } static void vips_deviate_init( VipsDeviate *deviate ) { } /** * vips_deviate: * @in: input #VipsImage * @out: output pixel standard deviation * @...: %NULL-terminated list of optional named arguments * * This operation finds the standard deviation of all pixels in @in. It * operates on all bands of the input image: use vips_stats() if you need * to calculate an average for each band. * * Non-complex images only. * * See also: vips_avg(), vips_stats().. * * Returns: 0 on success, -1 on error */ int vips_deviate( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "deviate", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/max.c0000664000175000017500000003077312651122661014175 00000000000000/* find image maximum * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/05/1990 * Modified on : 18/03/1991, N. Dessipris * 23/11/92: J.Cupitt - correct result for more than 1 band now. * 23/7/93 JC * - im_incheck() call added * 20/6/95 JC * - now returns double for value, like im_max() * 4/9/09 * - gtkdoc comment * 8/9/09 * - rewrite based on im_max() to get partial * - move im_max() in here as a convenience function * 6/11/11 * - rewrite as a class * - abandon scan if we find maximum possible value * 24/2/12 * - avoid NaN in float/double/complex images * - allow +/- INFINITY as a result * 4/12/12 * - track and return top n values */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "statistic.h" /* Track max values and position here. We need one of these for each thread, * and one for the main value. * * We will generally only be tracking a small (<10?) number of values, so * simple arrays will be fastest. */ typedef struct _VipsValues { struct _VipsMax *max; /* Number of values we track. */ int size; /* How many values we have in the arrays. */ int n; /* Position and values. We track mod**2 for complex and do a sqrt() at * the end. The three arrays are sorted by @value, smallest first. */ double *value; int *x_pos; int *y_pos; } VipsValues; typedef struct _VipsMax { VipsStatistic parent_instance; /* Max number of values we track. */ int size; /* The single max. Can be unset if, for example, the whole image is * NaN. */ double out; int x; int y; /* And the positions and values we found as VipsArrays for returning * to our caller. */ VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; /* Global state here. */ VipsValues values; } VipsMax; static void vips_values_init( VipsValues *values, VipsMax *max ) { values->max = max; values->size = max->size; values->n = 0; values->value = VIPS_ARRAY( max, values->size, double ); values->x_pos = VIPS_ARRAY( max, values->size, int ); values->y_pos = VIPS_ARRAY( max, values->size, int ); } /* Add a value. Do nothing if the value is too small. */ static void vips_values_add( VipsValues *values, double v, int x, int y ) { int i, j; /* Find insertion point. */ for( i = 0; i < values->n; i++ ) if( v <= values->value[i] ) break; /* Array full? */ if( values->n == values->size ) { if( i > 0 ) { /* We need to move stuff to the left to make space, * shunting the smallest out. */ for( j = 0; j < i - 1; j++ ) { values->value[j] = values->value[j + 1]; values->x_pos[j] = values->x_pos[j + 1]; values->y_pos[j] = values->y_pos[j + 1]; } values->value[i - 1] = v; values->x_pos[i - 1] = x; values->y_pos[i - 1] = y; } } else { /* Not full, move stuff to the right into empty space. */ for( j = values->n; j > i; j-- ) { values->value[j] = values->value[j - 1]; values->x_pos[j] = values->x_pos[j - 1]; values->y_pos[j] = values->y_pos[j - 1]; } values->value[i] = v; values->x_pos[i] = x; values->y_pos[i] = y; values->n += 1; } } typedef VipsStatisticClass VipsMaxClass; G_DEFINE_TYPE( VipsMax, vips_max, VIPS_TYPE_STATISTIC ); static int vips_max_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsMax *max = (VipsMax *) object; VipsValues *values = &max->values; vips_values_init( values, max ); if( VIPS_OBJECT_CLASS( vips_max_parent_class )->build( object ) ) return( -1 ); /* For speed we accumulate max ** 2 for complex. */ if( vips_band_format_iscomplex( vips_image_get_format( statistic->in ) ) ) { int i; for( i = 0; i < values->n; i++ ) values->value[i] = sqrt( values->value[i] ); } /* Don't set if there's no value (eg. if every pixel is NaN). This * will trigger an error later. */ if( values->n > 0 ) { VipsArrayDouble *out_array; VipsArrayInt *x_array; VipsArrayInt *y_array; out_array = vips_array_double_new( values->value, values->n ); x_array = vips_array_int_new( values->x_pos, values->n ); y_array = vips_array_int_new( values->y_pos, values->n ); /* We have to set the props via g_object_set() to stop vips * complaining they are unset. */ g_object_set( max, "out", values->value[values->n - 1], "x", values->x_pos[values->n - 1], "y", values->y_pos[values->n - 1], "out_array", out_array, "x_array", x_array, "y_array", y_array, NULL ); vips_area_unref( (VipsArea *) out_array ); vips_area_unref( (VipsArea *) x_array ); vips_area_unref( (VipsArea *) y_array ); } #ifdef DEBUG { int i; printf( "vips_max_build: %d values found\n", values->n ); for( i = 0; i < values->n; i++ ) printf( "%d) %g\t%d\t%d\n", i, values->value[i], values->x_pos[i], values->y_pos[i] ); } #endif /*DEBUG*/ return( 0 ); } /* New sequence value. Make a private VipsValues for this thread. */ static void * vips_max_start( VipsStatistic *statistic ) { VipsValues *values; values = g_new( VipsValues, 1 ); vips_values_init( values, (VipsMax *) statistic ); return( (void *) values ); } /* Merge the sequence value back into the per-call state. */ static int vips_max_stop( VipsStatistic *statistic, void *seq ) { VipsMax *max = (VipsMax *) statistic; VipsValues *values = (VipsValues *) seq; int i; for( i = 0; i < values->n; i++ ) vips_values_add( &max->values, values->value[i], values->x_pos[i], values->y_pos[i] ); g_free( values ); return( 0 ); } /* Real max with an upper bound. * * Add values to the buffer if they are greater than the buffer minimum. If * the buffer isn't full, there is no minimum. * * Avoid a double test by splitting the loop into two phases: before and after * the buffer fills. * * Stop if our array fills with maxval. */ #define LOOPU( TYPE, UPPER ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ for( ; i < sz; i++ ) { \ if( p[i] > m ) { \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ if( m >= UPPER ) { \ statistic->stop = TRUE; \ break; \ } \ } \ } \ } /* float/double max ... no limits, and we have to avoid NaN. * * NaN compares false to every float value, so we don't need to test for NaN * in the second loop. */ #define LOOPF( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) \ if( !VIPS_ISNAN( p[i] ) ) \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ \ for( ; i < sz; i++ ) \ if( p[i] > m ) { \ vips_values_add( values, p[i], x + i / bands, y ); \ m = values->value[0]; \ } \ } /* As LOOPF, but complex. Track max(mod ** 2) to avoid sqrt(). */ #define LOOPC( TYPE ) { \ TYPE *p = (TYPE *) in; \ TYPE m; \ \ for( i = 0; i < sz && values->n < values->size; i++ ) { \ TYPE mod2 = p[0] * p[0] + p[1] * p[1]; \ \ if( !VIPS_ISNAN( mod2 ) ) \ vips_values_add( values, p[i], x + i / bands, y ); \ \ p += 2; \ } \ m = values->value[0]; \ \ for( ; i < sz; i++ ) { \ TYPE mod2 = p[0] * p[0] + p[1] * p[1]; \ \ if( mod2 > m ) { \ vips_values_add( values, mod2, x + i / bands, y ); \ m = values->value[0]; \ } \ \ p += 2; \ } \ } /* Loop over region, adding to seq. */ static int vips_max_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { VipsValues *values = (VipsValues *) seq; const int bands = vips_image_get_bands( statistic->in ); const int sz = n * bands; int i; switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOPU( unsigned char, UCHAR_MAX ); break; case VIPS_FORMAT_CHAR: LOOPU( signed char, SCHAR_MAX ); break; case VIPS_FORMAT_USHORT: LOOPU( unsigned short, USHRT_MAX ); break; case VIPS_FORMAT_SHORT: LOOPU( signed short, SHRT_MAX ); break; case VIPS_FORMAT_UINT: LOOPU( unsigned int, UINT_MAX ); break; case VIPS_FORMAT_INT: LOOPU( signed int, INT_MAX ); break; case VIPS_FORMAT_FLOAT: LOOPF( float ); break; case VIPS_FORMAT_DOUBLE: LOOPF( double ); break; case VIPS_FORMAT_COMPLEX: LOOPC( float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPC( double ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_max_class_init( VipsMaxClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "max"; object_class->description = _( "find image maximum" ); object_class->build = vips_max_build; sclass->start = vips_max_start; sclass->scan = vips_max_scan; sclass->stop = vips_max_stop; VIPS_ARG_DOUBLE( class, "out", 1, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMax, out ), -INFINITY, INFINITY, 0.0 ); VIPS_ARG_INT( class, "x", 2, _( "x" ), _( "Horizontal position of maximum" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, x ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "y", 3, _( "y" ), _( "Vertical position of maximum" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, y ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "size", 4, _( "Size" ), _( "Number of maximum values to find" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMax, size ), 1, 1000000, 10 ); VIPS_ARG_BOXED( class, "out_array", 6, _( "Output array" ), _( "Array of output values" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, out_array ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_BOXED( class, "x_array", 7, _( "x array" ), _( "Array of horizontal positions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, x_array ), VIPS_TYPE_ARRAY_INT ); VIPS_ARG_BOXED( class, "y_array", 8, _( "y array" ), _( "Array of vertical positions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMax, y_array ), VIPS_TYPE_ARRAY_INT ); } static void vips_max_init( VipsMax *max ) { max->size = 1; } /** * vips_max: * @in: input #VipsImage * @out: output pixel maximum * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @x: horizontal position of maximum * @y: vertical position of maximum * @size: number of maxima to find * @out_array: return array of maximum values * @x_array: corresponding horizontal positions * @y_array: corresponding vertical positions * * This operation finds the maximum value in an image. * * By default it finds the single largest value. If @size is set >1, it will * find the @size largest values. It will stop searching early if has found * enough values. * * It operates on all * bands of the input image: use vips_stats() if you need to find an * maximum for each band. * * For complex images, this operation finds the maximum modulus. * * You can read out the position of the maximum with @x and @y. You can read * out arrays of the values and positions of the top @size maxima with * @out_array, @x_array and @y_array. These values are returned sorted from * largest to smallest. * * See also: vips_min(), vips_stats(). * * Returns: 0 on success, -1 on error */ int vips_max( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "max", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/statistic.c0000664000175000017500000001054112530402247015403 00000000000000/* base class for all stats operations * * properties: * - one image in, single value or matrix out * - output depends on whole of input, ie. we have a sink * * 24/8/11 * - from im_avg.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "statistic.h" G_DEFINE_ABSTRACT_TYPE( VipsStatistic, vips_statistic, VIPS_TYPE_OPERATION ); static void * vips_statistic_scan_start( VipsImage *in, void *a, void *b ) { VipsStatistic *statistic = VIPS_STATISTIC( a ); VipsStatisticClass *class = VIPS_STATISTIC_GET_CLASS( statistic ); return( class->start( statistic ) ); } static int vips_statistic_scan( VipsRegion *region, void *seq, void *a, void *b, gboolean *stop ) { VipsStatistic *statistic = VIPS_STATISTIC( a ); VipsStatisticClass *class = VIPS_STATISTIC_GET_CLASS( statistic ); VipsRect *r = ®ion->valid; int lsk = VIPS_REGION_LSKIP( region ); int y; VipsPel *p; VIPS_DEBUG_MSG( "vips_statistic_scan: %d x %d @ %d x %d\n", r->width, r->height, r->left, r->top ); p = VIPS_REGION_ADDR( region, r->left, r->top ); for( y = 0; y < r->height; y++ ) { if( class->scan( statistic, seq, r->left, r->top + y, p, r->width ) ) return( -1 ); p += lsk; } /* If we've requested stop, pass the message on. */ if( statistic->stop ) *stop = TRUE; return( 0 ); } static int vips_statistic_scan_stop( void *seq, void *a, void *b ) { VipsStatistic *statistic = VIPS_STATISTIC( a ); VipsStatisticClass *class = VIPS_STATISTIC_GET_CLASS( statistic ); return( class->stop( statistic, seq ) ); } static int vips_statistic_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsStatisticClass *sclass = VIPS_STATISTIC_GET_CLASS( statistic ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); #ifdef DEBUG printf( "vips_statistic_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_statistic_parent_class )->build( object ) ) return( -1 ); statistic->ready = statistic->in; if( vips_image_decode( statistic->ready, &t[0] ) ) return( -1 ); statistic->ready = t[0]; /* If there's a format table, cast the input. */ if( sclass->format_table ) { if( vips_cast( statistic->ready, &t[1], sclass->format_table[statistic->in->BandFmt], NULL ) ) return( -1 ); statistic->ready = t[1]; } if( vips_sink( statistic->ready, vips_statistic_scan_start, vips_statistic_scan, vips_statistic_scan_stop, statistic, NULL ) ) return( -1 ); return( 0 ); } static void vips_statistic_class_init( VipsStatisticClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "statistic"; vobject_class->description = _( "VIPS statistic operations" ); vobject_class->build = vips_statistic_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsStatistic, in ) ); } static void vips_statistic_init( VipsStatistic *statistic ) { } vips-8.2.2/libvips/arithmetic/nary.c0000664000175000017500000000441212530402247014345 00000000000000/* base class for all nary operations * * 18/3/14 * - from binary.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "nary.h" G_DEFINE_ABSTRACT_TYPE( VipsNary, vips_nary, VIPS_TYPE_ARITHMETIC ); static int vips_nary_build( VipsObject *object ) { VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsNary *nary = VIPS_NARY( object ); if( nary->in ) { arithmetic->in = nary->in->data; arithmetic->n = nary->in->n; } if( VIPS_OBJECT_CLASS( vips_nary_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_nary_class_init( VipsNaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "nary"; vobject_class->description = _( "nary operations" ); vobject_class->build = vips_nary_build; /* Create properties. */ VIPS_ARG_BOXED( class, "in", 0, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsNary, in ), VIPS_TYPE_ARRAY_IMAGE ); } static void vips_nary_init( VipsNary *nary ) { /* Init our instance fields. */ } vips-8.2.2/libvips/arithmetic/invert.c0000664000175000017500000001112112651122642014700 00000000000000/* photographic negative ... just an example, really * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 12/02/1990 * Modified on : * 7/7/93 JC * - memory leaks fixed * - adapted for partial v2 * - ANSIfied * 22/2/95 JC * - tidied up again * 2/9/09 * - gtk-doc comment * 23/8/11 * - rewrite as a class * 7/12/12 * - only invert real part of complex */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef VipsUnary VipsInvert; typedef VipsUnaryClass VipsInvertClass; G_DEFINE_TYPE( VipsInvert, vips_invert, VIPS_TYPE_UNARY ); #define LOOP( TYPE, L ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = (L) - p[x]; \ } #define LOOPN( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = -1 * p[x]; \ } #define LOOPC( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[0] = -1 * p[0]; \ q[1] = p[1]; \ \ p += 2; \ q += 2; \ } \ } static void vips_invert_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, UCHAR_MAX ); break; case VIPS_FORMAT_CHAR: LOOPN( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, USHRT_MAX ); break; case VIPS_FORMAT_SHORT: LOOPN( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, UINT_MAX ); break; case VIPS_FORMAT_INT: LOOPN( signed int ); break; case VIPS_FORMAT_FLOAT: LOOPN( float ); break; case VIPS_FORMAT_DOUBLE: LOOPN( double ); break; case VIPS_FORMAT_COMPLEX: LOOPC( float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPC( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Format doesn't change with invert. */ static const VipsBandFormat vips_invert_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, X, D, DX }; static void vips_invert_class_init( VipsInvertClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "invert"; object_class->description = _( "invert an image" ); aclass->process_line = vips_invert_buffer; vips_arithmetic_set_format_table( aclass, vips_invert_format_table ); } static void vips_invert_init( VipsInvert *invert ) { } /** * vips_invert: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * For unsigned formats, this operation calculates (max - @in), eg. (255 - * @in) for uchar. For signed and float formats, this operation calculates (-1 * @in). * * For complex images, only the real part is inverted. See also vips_conj(). * * See also: vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_invert( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "invert", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/remainder.c0000664000175000017500000002773312651122704015356 00000000000000/* remainder.c * * 2/8/99 JC * - im_divide adapted to make im_remainder * 8/5/02 JC * - im_remainderconst added * - im_remainderconst_vec added * 27/9/04 * - updated for 1 band $op n band image -> n band image case * 26/2/07 * - oop, broken for _vec case :-( * 14/5/08 * - better /0 test * 27/8/08 * - revise upcasting system * - add gtkdoc comments * 23/6/10 * - constant ops clip to target range * 12/11/11 * - redone as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" #include "unaryconst.h" typedef VipsBinary VipsRemainder; typedef VipsBinaryClass VipsRemainderClass; G_DEFINE_TYPE( VipsRemainder, vips_remainder, VIPS_TYPE_BINARY ); static int vips_remainder_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBinary *binary = (VipsBinary *) object; if( binary->left && vips_check_noncomplex( class->nickname, binary->left ) ) return( -1 ); if( binary->right && vips_check_noncomplex( class->nickname, binary->right ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_remainder_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Integer remainder-after-division. */ #define IREMAINDER( TYPE ) { \ TYPE * restrict p1 = (TYPE *) in[0]; \ TYPE * restrict p2 = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = p2[x] ? p1[x] % p2[x] : -1; \ } /* Float remainder-after-division. */ #define FREMAINDER( TYPE ) { \ TYPE * restrict p1 = (TYPE *) in[0]; \ TYPE * restrict p2 = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ double a = p1[x]; \ double b = p2[x]; \ \ q[x] = b ? a - b * VIPS_FLOOR (a / b) : -1; \ } \ } static void vips_remainder_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: IREMAINDER( signed char ); break; case VIPS_FORMAT_UCHAR: IREMAINDER( unsigned char ); break; case VIPS_FORMAT_SHORT: IREMAINDER( signed short ); break; case VIPS_FORMAT_USHORT:IREMAINDER( unsigned short ); break; case VIPS_FORMAT_INT: IREMAINDER( signed int ); break; case VIPS_FORMAT_UINT: IREMAINDER( unsigned int ); break; case VIPS_FORMAT_FLOAT: FREMAINDER( float ); break; case VIPS_FORMAT_DOUBLE:FREMAINDER( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for remainder. Keep in sync with remainder_buffer() above. */ static int vips_remainder_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, X, D, DX }; static void vips_remainder_class_init( VipsRemainderClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "remainder"; object_class->description = _( "remainder after integer division of two images" ); object_class->build = vips_remainder_build; aclass->process_line = vips_remainder_buffer; vips_arithmetic_set_format_table( aclass, vips_remainder_format_table ); } static void vips_remainder_init( VipsRemainder *remainder ) { } /** * vips_remainder: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * This operation calculates @left % @right (remainder after integer division) * and writes the result to @out. The images may have any * non-complex format. For float formats, vips_remainder() calculates @in1 - * @in2 * floor (@in1 / @in2). * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), and that format is the * result type. * * See also: vips_remainder_const(), vips_divide(), vips_round(). * * Returns: 0 on success, -1 on error */ int vips_remainder( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "remainder", ap, left, right, out ); va_end( ap ); return( result ); } typedef VipsUnaryConst VipsRemainderConst; typedef VipsUnaryConstClass VipsRemainderConstClass; G_DEFINE_TYPE( VipsRemainderConst, vips_remainder_const, VIPS_TYPE_UNARY_CONST ); static int vips_remainder_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsUnary *unary = (VipsUnary *) object; VipsUnaryConst *uconst = (VipsUnaryConst *) object; if( unary->in && vips_check_noncomplex( class->nickname, unary->in ) ) return( -1 ); if( unary->in ) uconst->const_format = unary->in->BandFmt; if( VIPS_OBJECT_CLASS( vips_remainder_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } /* Integer remainder-after-divide, per-band constant. */ #define IREMAINDERCONST( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ TYPE * restrict c = (TYPE *) uconst->c_ready; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ q[i] = p[i] % c[b]; \ } /* Float remainder-after-divide, per-band constant. */ #define FREMAINDERCONST( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ TYPE * restrict c = (TYPE *) uconst->c_ready; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) { \ double left = p[i]; \ double right = c[b]; \ \ q[i] = right ? \ left - right * floor( left / right ) : \ -1; \ } \ } static void vips_remainder_const_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnaryConst *uconst = (VipsUnaryConst *) arithmetic; VipsImage *im = arithmetic->ready[0]; int bands = im->Bands; int i, x, b; switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: IREMAINDERCONST( signed char ); break; case VIPS_FORMAT_UCHAR: IREMAINDERCONST( unsigned char ); break; case VIPS_FORMAT_SHORT: IREMAINDERCONST( signed short ); break; case VIPS_FORMAT_USHORT:IREMAINDERCONST( unsigned short ); break; case VIPS_FORMAT_INT: IREMAINDERCONST( signed int ); break; case VIPS_FORMAT_UINT: IREMAINDERCONST( unsigned int ); break; case VIPS_FORMAT_FLOAT: FREMAINDERCONST( float ); break; case VIPS_FORMAT_DOUBLE:FREMAINDERCONST( double ); break; default: g_assert_not_reached(); } } static void vips_remainder_const_class_init( VipsRemainderConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "remainder_const"; object_class->description = _( "remainder after integer division of an image " "and a constant" ); object_class->build = vips_remainder_const_build; aclass->process_line = vips_remainder_const_buffer; vips_arithmetic_set_format_table( aclass, vips_remainder_format_table ); } static void vips_remainder_const_init( VipsRemainderConst *remainder_const ) { } static int vips_remainder_constv( VipsImage *in, VipsImage **out, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; int result; int i; area_c = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = (double *) area_c->data; for( i = 0; i < n; i++ ) array[i] = c[i]; result = vips_call_split( "remainder_const", ap, in, out, area_c ); vips_area_unref( area_c ); return( result ); } /** * vips_remainder_const: * @in: input image * @out: output image * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in % @c (remainder after division by an * array of constants) * and writes the result to @out. * The image may have any * non-complex format. For float formats, vips_remainder_const() calculates * @in - @c * floor (@in / @c). * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_remainder(), vips_divide(), vips_round(). * * Returns: 0 on success, -1 on error */ int vips_remainder_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_remainder_constv( in, out, c, n, ap ); va_end( ap ); return( result ); } /** * vips_remainder_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in % @c (remainder after division by a * constant) * and writes the result to @out. * The image may have any * non-complex format. For float formats, vips_remainder_const() calculates * @in - @c * floor (@in / @c). * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_remainder(), vips_divide(), vips_round(). * * Returns: 0 on success, -1 on error */ int vips_remainder_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_remainder_constv( in, out, &c, 1, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/boolean.c0000664000175000017500000005232112651122576015025 00000000000000/* boolean.c --- various bit operations * * Modified: * 15/12/94 JC * - ANSIfied * - adapted to partials with im_wrap... * 25/1/95 JC * - added check1ary(), check2ary() * 8/2/95 JC * - new im_wrapmany * 19/7/95 JC * - added im_shiftleft() and im_shiftright() * 6/7/98 JC * - added _vec forms * - removed *p++ stuff * 10/9/99 JC * - and/or/eor now do all int types * 10/10/02 JC * - renamed im_and() etc. as im_andimage() to remove breakage in the C++ * layer if operator names are turned on * 30/6/04 * - now cast float/complex args to int * 11/9/09 * - use new im__cast_and__call() * - therefore now supports 1-band $op n-band * 17/9/09 * - moved to im__arith_binary*() * - renamed im_eor_vec() as im_eorimage_vec() for C++ sanity * 21/11/10 * - oop, constants are always (int) now, so (^-1) works for unsigned * types * 12/11/11 * - redo as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "binary.h" #include "unaryconst.h" typedef struct _VipsBoolean { VipsBinary parent_instance; VipsOperationBoolean operation; } VipsBoolean; typedef VipsBinaryClass VipsBooleanClass; G_DEFINE_TYPE( VipsBoolean, vips_boolean, VIPS_TYPE_BINARY ); static int vips_boolean_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBinary *binary = (VipsBinary *) object; if( binary->left && vips_check_noncomplex( class->nickname, binary->left ) ) return( -1 ); if( binary->right && vips_check_noncomplex( class->nickname, binary->right ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_boolean_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define LOOP( TYPE, OP ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = left[x] OP right[x]; \ } #define FLOOP( TYPE, OP ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ int * restrict q = (int *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = ((int) left[x]) OP ((int) right[x]); \ } #define SWITCH( I, F, OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: I( unsigned char, OP ); break; \ case VIPS_FORMAT_CHAR: I( signed char, OP ); break; \ case VIPS_FORMAT_USHORT: I( unsigned short, OP ); break; \ case VIPS_FORMAT_SHORT: I( signed short, OP ); break; \ case VIPS_FORMAT_UINT: I( unsigned int, OP ); break; \ case VIPS_FORMAT_INT: I( signed int, OP ); break; \ case VIPS_FORMAT_FLOAT: F( float, OP ); break; \ case VIPS_FORMAT_DOUBLE: F( double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } static void vips_boolean_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsBoolean *boolean = (VipsBoolean *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( boolean->operation ) { case VIPS_OPERATION_BOOLEAN_AND: SWITCH( LOOP, FLOOP, & ); break; case VIPS_OPERATION_BOOLEAN_OR: SWITCH( LOOP, FLOOP, | ); break; case VIPS_OPERATION_BOOLEAN_EOR: SWITCH( LOOP, FLOOP, ^ ); break; case VIPS_OPERATION_BOOLEAN_LSHIFT: SWITCH( LOOP, FLOOP, << ); break; case VIPS_OPERATION_BOOLEAN_RSHIFT: SWITCH( LOOP, FLOOP, >> ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type conversions for boolean. */ static const VipsBandFormat vips_boolean_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, I, I, I, I, }; static void vips_boolean_class_init( VipsBooleanClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "boolean"; object_class->description = _( "boolean operation on two images" ); object_class->build = vips_boolean_build; aclass->process_line = vips_boolean_buffer; vips_arithmetic_set_format_table( aclass, vips_boolean_format_table ); VIPS_ARG_ENUM( class, "boolean", 200, _( "Operation" ), _( "boolean to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBoolean, operation ), VIPS_TYPE_OPERATION_BOOLEAN, VIPS_OPERATION_BOOLEAN_AND ); } static void vips_boolean_init( VipsBoolean *boolean ) { } static int vips_booleanv( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationBoolean operation, va_list ap ) { return( vips_call_split( "boolean", ap, left, right, out, operation ) ); } /** * vips_boolean: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @boolean: boolean operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various boolean operations on pairs of images. * * The output image is the same format as the upcast input images for integer * types. Float types are cast to int before processing. Complex types are not * supported. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic). * * See also: vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_boolean( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationBoolean boolean, ... ) { va_list ap; int result; va_start( ap, boolean ); result = vips_booleanv( left, right, out, boolean, ap ); va_end( ap ); return( result ); } /** * vips_andimage: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_AND on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_andimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_AND, ap ); va_end( ap ); return( result ); } /** * vips_orimage: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_OR on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_orimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_OR, ap ); va_end( ap ); return( result ); } /** * vips_eorimage: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_EOR on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_eorimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_EOR, ap ); va_end( ap ); return( result ); } /** * vips_lshift: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_lshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_LSHIFT, ap ); va_end( ap ); return( result ); } /** * vips_rshift: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_RSHIFT on a pair of images. See * vips_boolean(). * * Returns: 0 on success, -1 on error */ int vips_rshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_booleanv( left, right, out, VIPS_OPERATION_BOOLEAN_RSHIFT, ap ); va_end( ap ); return( result ); } typedef struct _VipsBooleanConst { VipsUnaryConst parent_instance; VipsOperationBoolean operation; } VipsBooleanConst; typedef VipsUnaryConstClass VipsBooleanConstClass; G_DEFINE_TYPE( VipsBooleanConst, vips_boolean_const, VIPS_TYPE_UNARY_CONST ); static int vips_boolean_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsUnary *unary = (VipsUnary *) object; VipsUnaryConst *uconst = (VipsUnaryConst *) object; if( unary->in && vips_check_noncomplex( class->nickname, unary->in ) ) return( -1 ); uconst->const_format = VIPS_FORMAT_INT; if( VIPS_OBJECT_CLASS( vips_boolean_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define LOOPC( TYPE, OP ) { \ TYPE *p = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ int *c = (int *) uconst->c_ready; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ q[i] = p[i] OP c[b]; \ } #define FLOOPC( TYPE, OP ) { \ TYPE *p = (TYPE *) in[0]; \ int *q = (int *) out; \ int *c = (int *) uconst->c_ready; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ q[i] = ((int) p[i]) OP ((int) c[b]); \ } static void vips_boolean_const_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnaryConst *uconst = (VipsUnaryConst *) arithmetic; VipsBooleanConst *bconst = (VipsBooleanConst *) arithmetic; VipsImage *im = arithmetic->ready[0]; int bands = im->Bands; int i, x, b; switch( bconst->operation ) { case VIPS_OPERATION_BOOLEAN_AND: SWITCH( LOOPC, FLOOPC, & ); break; case VIPS_OPERATION_BOOLEAN_OR: SWITCH( LOOPC, FLOOPC, | ); break; case VIPS_OPERATION_BOOLEAN_EOR: SWITCH( LOOPC, FLOOPC, ^ ); break; case VIPS_OPERATION_BOOLEAN_LSHIFT: SWITCH( LOOPC, FLOOPC, << ); break; case VIPS_OPERATION_BOOLEAN_RSHIFT: SWITCH( LOOPC, FLOOPC, >> ); break; default: g_assert_not_reached(); } } static void vips_boolean_const_class_init( VipsBooleanConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "boolean_const"; object_class->description = _( "boolean operations against a constant" ); object_class->build = vips_boolean_const_build; aclass->process_line = vips_boolean_const_buffer; vips_arithmetic_set_format_table( aclass, vips_boolean_format_table ); VIPS_ARG_ENUM( class, "boolean", 200, _( "Operation" ), _( "boolean to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBooleanConst, operation ), VIPS_TYPE_OPERATION_BOOLEAN, VIPS_OPERATION_BOOLEAN_AND ); } static void vips_boolean_const_init( VipsBooleanConst *boolean_const ) { } static int vips_boolean_constv( VipsImage *in, VipsImage **out, VipsOperationBoolean operation, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; int result; int i; area_c = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = (double *) area_c->data; for( i = 0; i < n; i++ ) array[i] = c[i]; result = vips_call_split( "boolean_const", ap, in, out, operation, area_c ); vips_area_unref( area_c ); return( result ); } /** * vips_boolean_const: * @in: input image * @out: output image * @boolean: boolean operation to perform * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform various boolean operations on an image against an array of * constants. * * The output type is always uchar, with 0 for FALSE and 255 for TRUE. * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_boolean_const( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, boolean, c, n, ap ); va_end( ap ); return( result ); } /** * vips_andimage_const: * @in: input image * @out: output image * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_AND on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_andimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_AND, c, n, ap ); va_end( ap ); return( result ); } /** * vips_orimage_const: * @in: input image * @out: output image * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_OR on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_orimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_OR, c, n, ap ); va_end( ap ); return( result ); } /** * vips_eorimage_const: * @in: input image * @out: output image * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_EOR on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_eorimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_EOR, c, n, ap ); va_end( ap ); return( result ); } /** * vips_lshift_const: * @in: input image * @out: output image * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_lshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_LSHIFT, c, n, ap ); va_end( ap ); return( result ); } /** * vips_rshift_const: * @in: input image * @out: output image * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on an image and an array of constants. * See vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const1(). * * Returns: 0 on success, -1 on error */ int vips_rshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_RSHIFT, c, n, ap ); va_end( ap ); return( result ); } /** * vips_boolean_const1: * @in: input image * @out: output image * @boolean: boolean operation to perform * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform various boolean operations on an image with a single constant. See * vips_boolean_const(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_boolean_const1( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, boolean, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_andimage_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_AND on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_andimage_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_AND, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_orimage_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_OR on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_orimage_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_OR, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_eorimage_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_EOR on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_eorimage_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_EOR, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_lshift_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_LSHIFT on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_lshift_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_LSHIFT, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_rshift_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_RSHIFT on an image and a constant. * See vips_boolean_const1(). * * See also: vips_boolean(), vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_rshift_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_boolean_constv( in, out, VIPS_OPERATION_BOOLEAN_RSHIFT, &c, 1, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/sign.c0000664000175000017500000001063212651122712014335 00000000000000/* im_sign.c * * 9/7/02 JC * - from im_cmulnorm * 9/9/09 * - gtkdoc, tidies * 6/11/11 * - redone as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef VipsUnary VipsSign; typedef VipsUnaryClass VipsSignClass; G_DEFINE_TYPE( VipsSign, vips_sign, VIPS_TYPE_UNARY ); #define CSIGN( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) { \ TYPE re = p[0]; \ TYPE im = p[1]; \ double fac = sqrt( re * re + im * im ); \ \ p += 2; \ \ if( fac == 0.0 ) { \ q[0] = 0.0; \ q[1] = 0.0; \ } \ else { \ q[0] = re / fac; \ q[1] = im / fac; \ } \ \ q += 2; \ } \ } #define SIGN( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ signed char * restrict q = (signed char *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) { \ TYPE v = p[x]; \ \ if( v > 0 ) \ q[x] = 1; \ else if( v == 0 ) \ q[x] = 0; \ else \ q[x] = -1; \ } \ } static void vips_sign_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnary *unary = VIPS_UNARY( arithmetic ); const int bands = vips_image_get_bands( unary->in ); int sz = width * bands; switch( vips_image_get_format( unary->in ) ) { case VIPS_FORMAT_UCHAR: SIGN( unsigned char ); break; case VIPS_FORMAT_CHAR: SIGN( signed char ); break; case VIPS_FORMAT_USHORT: SIGN( unsigned short ); break; case VIPS_FORMAT_SHORT: SIGN( signed short ); break; case VIPS_FORMAT_UINT: SIGN( unsigned int ); break; case VIPS_FORMAT_INT: SIGN( signed int ); break; case VIPS_FORMAT_FLOAT: SIGN( float ); break; case VIPS_FORMAT_DOUBLE: SIGN( double ); break; case VIPS_FORMAT_COMPLEX: CSIGN( float ); break; case VIPS_FORMAT_DPCOMPLEX: CSIGN( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_sign_format_table[10] = { /* UC C US S UI I F X D DX */ C, C, C, C, C, C, C, X, C, DX }; static void vips_sign_class_init( VipsSignClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "sign"; object_class->description = _( "unit vector of pixel" ); aclass->process_line = vips_sign_buffer; vips_arithmetic_set_format_table( aclass, vips_sign_format_table ); } static void vips_sign_init( VipsSign *sign ) { } /** * vips_sign: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Finds the unit vector in the direction of the pixel value. For non-complex * images, it returns a signed char image with values -1, 0, and 1 for negative, * zero and positive pixels. For complex images, it returns a * complex normalised to length 1. * * See also: vips_abs(). * * Returns: 0 on success, -1 on error */ int vips_sign( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sign", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/hist_find_ndim.c0000664000175000017500000002012512651122640016351 00000000000000/* n-dimensional histogram * * Written on: 8/7/03 * 10/11/04 * - oops, was not checking the bandfmt coming in * 24/3/10 * - gtkdoc * - small celanups * 17/8/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "statistic.h" struct _VipsHistFindNDim; /* Accumulate a histogram in one of these. */ typedef struct { struct _VipsHistFindNDim *ndim; int bins; int max_val; unsigned int ***data; } Histogram; typedef struct _VipsHistFindNDim { VipsStatistic parent_instance; /* Number of bins on each axis. */ int bins; /* Main image histogram. Subhists accumulate to this. */ Histogram *hist; /* Write hist to this output image. */ VipsImage *out; } VipsHistFindNDim; typedef VipsStatisticClass VipsHistFindNDimClass; G_DEFINE_TYPE( VipsHistFindNDim, vips_hist_find_ndim, VIPS_TYPE_STATISTIC ); /* Build a Histogram. */ static Histogram * histogram_new( VipsHistFindNDim *ndim ) { VipsImage *in = VIPS_STATISTIC( ndim )->ready; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( ndim ); int bins = ndim->bins; /* How many dimensions do we need to allocate? */ int ilimit = in->Bands > 2 ? bins : 1; int jlimit = in->Bands > 1 ? bins : 1; int i, j; Histogram *hist; if( !(hist = VIPS_NEW( ndim, Histogram )) ) return( NULL ); hist->ndim = ndim; hist->bins = bins; hist->max_val = in->BandFmt == VIPS_FORMAT_UCHAR ? 256 : 65536; if( bins < 1 || bins > hist->max_val ) { vips_error( class->nickname, _( "bins out of range [1,%d]" ), hist->max_val ); return( NULL ); } if( !(hist->data = VIPS_ARRAY( ndim, bins, unsigned int ** )) ) return( NULL ); memset( hist->data, 0, bins * sizeof( unsigned int ** ) ); for( i = 0; i < ilimit; i++ ) { if( !(hist->data[i] = VIPS_ARRAY( ndim, bins, unsigned int * )) ) return( NULL ); memset( hist->data[i], 0, bins * sizeof( unsigned int * ) ); for( j = 0; j < jlimit; j++ ) { if( !(hist->data[i][j] = VIPS_ARRAY( ndim, bins, unsigned int )) ) return( NULL ); memset( hist->data[i][j], 0, bins * sizeof( unsigned int ) ); } } return( hist ); } static int vips_hist_find_ndim_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsHistFindNDim *ndim = (VipsHistFindNDim *) object; unsigned int *obuffer; int y, i, x, z; g_object_set( object, "out", vips_image_new(), NULL ); /* main hist made on first thread start. */ if( VIPS_OBJECT_CLASS( vips_hist_find_ndim_parent_class )-> build( object ) ) return( -1 ); if( vips_image_pipelinev( ndim->out, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) ) return( -1 ); vips_image_init_fields( ndim->out, ndim->bins, statistic->ready->Bands > 1 ? ndim->bins : 1, statistic->ready->Bands > 2 ? ndim->bins : 1, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( !(obuffer = VIPS_ARRAY( ndim, VIPS_IMAGE_N_ELEMENTS( ndim->out ), unsigned int )) ) return( -1 ); for( y = 0; y < ndim->out->Ysize; y++ ) { for( i = 0, x = 0; x < ndim->out->Xsize; x++ ) for( z = 0; z < ndim->out->Bands; z++, i++ ) obuffer[i] = ndim->hist->data[z][y][x]; if( vips_image_write_line( ndim->out, y, (VipsPel *) obuffer ) ) return( -1 ); } return( 0 ); } static void * vips_hist_find_ndim_start( VipsStatistic *statistic ) { VipsHistFindNDim *ndim = (VipsHistFindNDim *) statistic; /* Make the main hist, if necessary. */ if( !ndim->hist ) ndim->hist = histogram_new( ndim ); return( (void *) histogram_new( ndim ) ); } /* Join a sub-hist onto the main hist. */ static int vips_hist_find_ndim_stop( VipsStatistic *statistic, void *seq ) { Histogram *sub_hist = (Histogram *) seq; VipsHistFindNDim *ndim = (VipsHistFindNDim *) statistic; Histogram *hist = ndim->hist; int i, j, k; for( i = 0; i < hist->bins; i++ ) for( j = 0; j < hist->bins; j++ ) for( k = 0; k < hist->bins; k++ ) if( hist->data[i] && hist->data[i][j] ) { hist->data[i][j][k] += sub_hist->data[i][j][k]; /* Zap sub-hist to make sure we * can't add it again. */ sub_hist->data[i][j][k] = 0; } return( 0 ); } #define LOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( i = 0, j = 0; j < n; j++ ) { \ for( k = 0; k < nb; k++, i++ ) \ index[k] = p[i] / scale; \ \ hist->data[index[2]][index[1]][index[0]] += 1; \ } \ } static int vips_hist_find_ndim_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; VipsImage *im = statistic->ready; int nb = im->Bands; double scale = (double) (hist->max_val + 1) / hist->bins; int i, j, k; int index[3]; /* Fill these with dimensions, backwards. */ index[0] = index[1] = index[2] = 0; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; default: g_assert_not_reached(); } return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define US VIPS_FORMAT_USHORT #define UI VIPS_FORMAT_UINT /* Type mapping: go to uchar or ushort. */ static const VipsBandFormat vips_hist_find_ndim_format_table[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, US, US, US, US, US, US }; static void vips_hist_find_ndim_class_init( VipsHistFindNDimClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_find_ndim"; object_class->description = _( "find n-dimensional image histogram" ); object_class->build = vips_hist_find_ndim_build; sclass->start = vips_hist_find_ndim_start; sclass->scan = vips_hist_find_ndim_scan; sclass->stop = vips_hist_find_ndim_stop; sclass->format_table = vips_hist_find_ndim_format_table; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output histogram" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistFindNDim, out ) ); VIPS_ARG_INT( class, "bins", 110, _( "Bins" ), _( "Number of bins in each dimension" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHistFindNDim, bins ), 1, 65536, 10 ); } static void vips_hist_find_ndim_init( VipsHistFindNDim *ndim ) { ndim->bins = 10; } /** * vips_hist_find_ndim: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @bins: number of bins to make on each axis * * Make a one, two or three dimensional histogram of a 1, 2 or * 3 band image. Divide each axis into @bins bins .. ie. * output is 1 x bins, bins x bins, or bins x bins x bins bands. * @bins defaults to 10. * * Images are cast to uchar or ushort before histogramming. * * See also: vips_hist_find(), vips_hist_find_indexed(). * * Returns: 0 on success, -1 on error */ int vips_hist_find_ndim( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_find_ndim", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/multiply.c0000664000175000017500000001615712651122665015273 00000000000000/* im_multiply.c * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 29/4/93 JC * - now works for partial images * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 19/10/93 JC * - coredump-inducing bug in complex*complex fixed * 13/12/93 * - char*short bug fixed * 12/6/95 JC * - new im_add adapted to make new im_multiply * 27/9/04 * - updated for 1 band $op n band image -> n band image case * 8/12/06 * - add liboil support * 18/8/08 * - revise upcasting system * - add gtkdoc comments * 31/7/10 * - remove liboil * 7/11/11 * - redo as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" typedef VipsBinary VipsMultiply; typedef VipsBinaryClass VipsMultiplyClass; G_DEFINE_TYPE( VipsMultiply, vips_multiply, VIPS_TYPE_BINARY ); /* Complex multiply. */ #define CLOOP( TYPE ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ double x1 = left[0]; \ double y1 = left[1]; \ double x2 = right[0]; \ double y2 = right[1]; \ \ left += 2; \ right += 2; \ \ q[0] = x1 * x2 - y1 * y2; \ q[1] = x1 * y2 + x2 * y1; \ \ q += 2; \ } \ } /* Real multiply. */ #define RLOOP( IN, OUT ) { \ IN * restrict left = (IN *) in[0]; \ IN * restrict right = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = left[x] * right[x]; \ } static void vips_multiply_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; /* Keep types here in sync with vips_bandfmt_multiply[] * below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: RLOOP( signed char, signed short ); break; case VIPS_FORMAT_UCHAR: RLOOP( unsigned char, signed short ); break; case VIPS_FORMAT_SHORT: RLOOP( signed short, signed int ); break; case VIPS_FORMAT_USHORT:RLOOP( unsigned short, signed int ); break; case VIPS_FORMAT_INT: RLOOP( signed int, signed int ); break; case VIPS_FORMAT_UINT: RLOOP( unsigned int, signed int ); break; case VIPS_FORMAT_FLOAT: RLOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: RLOOP( double, double ); break; case VIPS_FORMAT_COMPLEX: CLOOP( float ); break; case VIPS_FORMAT_DPCOMPLEX: CLOOP( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for multiplication. Sign and value preserving. Make sure * these match the case statement in multiply_buffer() above. */ static int vips_multiply_format_table[10] = { /* UC C US S UI I F X D DX */ US, S, UI, I, UI, I, F, X, D, DX }; static void vips_multiply_class_init( VipsMultiplyClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "multiply"; object_class->description = _( "multiply two images" ); aclass->process_line = vips_multiply_buffer; vips_arithmetic_set_format_table( aclass, vips_multiply_format_table ); } static void vips_multiply_init( VipsMultiply *multiply ) { } /** * vips_multiply: * @left: left-hand image * @right: right-hand image * @out: output image * @...: %NULL-terminated list of optional named arguments * * This operation calculates @left * @right and writes the result to @out. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * VipsMultiply type promotion * * * * input type * output type * * * * * uchar * ushort * * * char * short * * * ushort * uint * * * short * int * * * uint * uint * * * int * int * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_add(), vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_multiply( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "multiply", ap, left, right, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/hough_circle.c0000664000175000017500000002011612605514112016024 00000000000000/* hough transform for circles * * 7/3/14 * - from hough_line.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Derived in part from David Young's Matlab circle detector: * * http://www.mathworks.com/matlabcentral/fileexchange/26978-hough-transform-for-circles */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "statistic.h" #include "hough.h" typedef struct _VipsHoughCircle { VipsHough parent_instance; int scale; int min_radius; int max_radius; int width; int height; int bands; } VipsHoughCircle; typedef VipsHoughClass VipsHoughCircleClass; G_DEFINE_TYPE( VipsHoughCircle, vips_hough_circle, VIPS_TYPE_HOUGH ); /* Smaller circles have fewer pixels and therefore fewer votes. Scale bands by * the ratio of circumference, so all radii get equal weight. */ static void vips_hough_circle_normalise( VipsHoughCircle *hough_circle ) { VipsHough *hough = (VipsHough *) hough_circle; int max_radius = hough_circle->max_radius; int min_radius = hough_circle->min_radius; int scale = hough_circle->scale; int bands = hough_circle->bands; int width = hough_circle->width; int height = hough_circle->height; double max_circumference = 2 * VIPS_PI * max_radius; int b; for( b = 0; b < bands; b++ ) { int radius = b * scale + min_radius; double circumference = 2 * VIPS_PI * radius; double ratio = max_circumference / circumference; size_t n_pels = (size_t) width * height * bands; size_t i; guint *q; q = b + (guint *) VIPS_IMAGE_ADDR( hough->out, 0, 0 ); for( i = 0; i < n_pels; i += bands ) q[i] *= ratio; } } static int vips_hough_circle_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = (VipsStatistic *) object; VipsHoughCircle *hough_circle = (VipsHoughCircle *) object; int range = hough_circle->max_radius - hough_circle->min_radius; if( range <= 0 ) { vips_error( class->nickname, "%s", _( "parameters out of range" ) ); return( -1 ); } hough_circle->width = statistic->in->Xsize / hough_circle->scale; hough_circle->height = statistic->in->Ysize / hough_circle->scale; hough_circle->bands = 1 + range / hough_circle->scale; if( VIPS_OBJECT_CLASS( vips_hough_circle_parent_class )-> build( object ) ) return( -1 ); vips_hough_circle_normalise( hough_circle ); return( 0 ); } static int vips_hough_circle_init_accumulator( VipsHough *hough, VipsImage *accumulator ) { VipsHoughCircle *hough_circle = (VipsHoughCircle *) hough; vips_image_init_fields( accumulator, hough_circle->width, hough_circle->height, hough_circle->bands, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_MATRIX, 1.0, 1.0 ); return( 0 ); } static inline void vips_hough_circle_vote_point( VipsImage *image, int x, int y, void *client ) { guint *q = (guint *) VIPS_IMAGE_ADDR( image, x, y ); int r = *((int *) client); g_assert( image->BandFmt == VIPS_FORMAT_UINT ); g_assert( x >= 0 ); g_assert( y >= 0 ); g_assert( x < image->Xsize ); g_assert( y < image->Ysize ); g_assert( r >= 0 ); g_assert( r < image->Bands ); q[r] += 1; } /* Vote endpoints, with clip. */ static void vips_hough_circle_vote_endpoints_clip( VipsImage *image, int y, int x1, int x2, void *client ) { if( y >= 0 && y < image->Ysize ) { if( x1 >=0 && x1 < image->Xsize ) vips_hough_circle_vote_point( image, x1, y, client ); if( x2 >=0 && x2 < image->Xsize ) vips_hough_circle_vote_point( image, x2, y, client ); } } /* Vote endpoints, no clip. */ static void vips_hough_circle_vote_endpoints_noclip( VipsImage *image, int y, int x1, int x2, void *client ) { vips_hough_circle_vote_point( image, x1, y, client ); vips_hough_circle_vote_point( image, x2, y, client ); } /* Cast votes for all possible circles passing through x, y. */ static void vips_hough_circle_vote( VipsHough *hough, VipsImage *accumulator, int x, int y ) { VipsHoughCircle *hough_circle = (VipsHoughCircle *) hough; int min_radius = hough_circle->min_radius; int cx = x / hough_circle->scale; int cy = y / hough_circle->scale; int rb; g_assert( hough_circle->max_radius - min_radius >= 0 ); for( rb = 0; rb < hough_circle->bands; rb++ ) { /* r needs to be in scaled down image space. */ int r = rb + min_radius / hough_circle->scale; VipsDrawScanline draw_scanline; if( cx - r >= 0 && cx + r < accumulator->Xsize && cy - r >= 0 && cy + r < accumulator->Ysize ) draw_scanline = vips_hough_circle_vote_endpoints_noclip; else draw_scanline = vips_hough_circle_vote_endpoints_clip; vips__draw_circle_direct( accumulator, cx, cy, r, draw_scanline, &rb ); } } static void vips_hough_circle_class_init( VipsHoughClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsHoughClass *hclass = (VipsHoughClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hough_circle"; object_class->description = _( "find hough circle transform" ); object_class->build = vips_hough_circle_build; hclass->init_accumulator = vips_hough_circle_init_accumulator; hclass->vote = vips_hough_circle_vote; VIPS_ARG_INT( class, "scale", 119, _( "Scale" ), _( "Scale down dimensions by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughCircle, scale ), 1, 100000, 3 ); VIPS_ARG_INT( class, "min_radius", 120, _( "Min radius" ), _( "Smallest radius to search for" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughCircle, min_radius ), 1, 100000, 10 ); VIPS_ARG_INT( class, "max_radius", 121, _( "Max radius" ), _( "Largest radius to search for" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHoughCircle, max_radius ), 1, 100000, 20 ); } static void vips_hough_circle_init( VipsHoughCircle *hough_circle ) { hough_circle->scale = 1; hough_circle->min_radius = 10; hough_circle->max_radius = 20; } /** * vips_hough_circle: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @scale: scale down dimensions by this much * @min_radius: smallest radius to search for * @max_radius: largest radius to search for * * Find the circular Hough transform of an image. @in must be one band, with * non-zero pixels for image edges. @out is three-band, with the third channel * representing the detected circle radius. The operation scales the number of * votes by circle circumference so circles of differing size are given equal * weight. * * Use @max_radius and @min_radius to set the range of radii to search for. * * Use @scale to set how @in coordinates are scaled to @out coordinates. A * @scale of 3, for example, will make @out 1/3rd of the width and height of * @in, and reduce the number of radii tested (and hence the number of bands * int @out) by a factor of three as well. * * See also: vips_hough_line(). * * Returns: 0 on success, -1 on error */ int vips_hough_circle( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hough_circle", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/measure.c0000664000175000017500000001656512651663124015060 00000000000000/* im_measure.c * * Modified: * 19/8/94 JC * - now uses doubles for addressing * - could miss by up to h pixels previously! * - ANSIfied * - now issues warning if any deviations are greater than 20% of the * mean * 31/10/95 JC * - more careful about warning for averages <0, or averages near zero * - can get these cases with im_measure() of IM_TYPE_LAB images * 28/10/02 JC * - number bands from zero in error messages * 7/7/04 * - works on labq * 18/8/08 * - add gtkdoc comments * - remove deprecated im_extract() * 30/11/09 * - changes for im_extract() broke averaging * 9/11/11 * - redo as a class * 19/5/14 * - add auto-unpack */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsMeasure { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int left; int top; int width; int height; int h; int v; } VipsMeasure; typedef VipsOperationClass VipsMeasureClass; G_DEFINE_TYPE( VipsMeasure, vips_measure, VIPS_TYPE_OPERATION ); static int vips_measure_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsMeasure *measure = (VipsMeasure *) object; VipsImage *ready; int bands; double pw; double ph; int j, i; int w, h; int b; if( VIPS_OBJECT_CLASS( vips_measure_parent_class )->build( object ) ) return( -1 ); if( vips_image_decode( measure->in, &ready ) ) return( -1 ); vips_object_local( measure, ready ); bands = vips_image_get_bands( ready ); g_object_set( object, "out", vips_image_new_matrix( bands, measure->h * measure->v ), NULL ); /* left/top/width/height default to the size of the image. */ if( !vips_object_argument_isset( object, "width" ) ) g_object_set( object, "width", vips_image_get_width( ready ), NULL ); if( !vips_object_argument_isset( object, "height" ) ) g_object_set( object, "height", vips_image_get_height( ready ), NULL ); /* How large are the patches we are to measure? */ pw = (double) measure->width / measure->h; ph = (double) measure->height / measure->v; /* The size of a patch. */ w = (pw + 1) / 2; h = (ph + 1) / 2; for( j = 0; j < measure->v; j++ ) { for( i = 0; i < measure->h; i++ ) { int x = measure->left + i * pw + (pw + 2) / 4; int y = measure->top + j * ph + (ph + 2) / 4; double avg, dev; for( b = 0; b < bands; b++ ) { VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); /* Extract and measure. */ if( vips_extract_area( ready, &t[0], x, y, w, h, NULL ) || vips_extract_band( t[0], &t[1], b, NULL ) || vips_avg( t[1], &avg, NULL ) || vips_deviate( t[1], &dev, NULL ) ) return( -1 ); /* Is the deviation large compared with the * average? This could be a clue that our * parameters have caused us to miss the * patch. Look out for averages <0, or * averages near zero (can get these if use * measure on IM_TYPE_LAB images). */ if( dev * 5 > VIPS_FABS( avg ) && VIPS_FABS( avg ) > 3 ) vips_warn( class->nickname, _( "patch %d x %d, band %d: " "avg = %g, sdev = %g" ), i, j, b, avg, dev ); *VIPS_MATRIX( measure->out, b, i + j * measure->h ) = avg; } } } return( 0 ); } /* xy range we sanity check on ... just to stop crazy numbers from 1/0 etc. * causing g_assert() failures later. */ #define RANGE (100000000) static void vips_measure_class_init( VipsMeasureClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "measure"; object_class->description = _( "measure a set of patches on a color chart" ); object_class->build = vips_measure_build; VIPS_ARG_IMAGE( class, "in", 1, _( "in" ), _( "Image to measure" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMeasure, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output array of statistics" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMeasure, out ) ); VIPS_ARG_INT( class, "h", 5, _( "Across" ), _( "Number of patches across chart" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMeasure, h ), 1, RANGE, 1 ); VIPS_ARG_INT( class, "v", 6, _( "Down" ), _( "Number of patches down chart" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMeasure, v ), 1, RANGE, 1 ); VIPS_ARG_INT( class, "left", 10, _( "Left" ), _( "Left edge of extract area" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMeasure, left ), 0, RANGE, 0 ); VIPS_ARG_INT( class, "top", 11, _( "Top" ), _( "Top edge of extract area" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMeasure, top ), 0, RANGE, 0 ); VIPS_ARG_INT( class, "width", 12, _( "Width" ), _( "Width of extract area" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMeasure, width ), 1, RANGE, 1 ); VIPS_ARG_INT( class, "height", 13, _( "Height" ), _( "Height of extract area" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMeasure, height ), 1, RANGE, 1 ); } static void vips_measure_init( VipsMeasure *measure ) { } /** * vips_measure: * @in: image to measure * @out: array of measurements * @h: patches across chart * @v: patches down chart * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @left: area of image containing chart * @top: area of image containing chart * @width: area of image containing chart * @height: area of image containing chart * * Analyse a grid of colour patches, producing an array of patch averages. * The mask has a row for each measured patch and a column for each image * band. The operations issues a warning if any patch has a deviation more * than 20% of * the mean. Only the central 50% of each patch is averaged. * * If the chart does not fill the whole image, use the optional @left, @top, * @width, @height arguments to indicate the * position of the chart. * * See also: vips_avg(), vips_deviate(). * * Returns: 0 on success, -1 on error */ int vips_measure( VipsImage *in, VipsImage **out, int h, int v, ... ) { va_list ap; int result; va_start( ap, v ); result = vips_call_split( "measure", ap, in, out, h, v ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/hist_find.c0000664000175000017500000002370212530402247015346 00000000000000/* find histograms * * Copyright: 1990, 1991, N. Dessipris. * * Author: Nicos Dessipris. * Written on: 09/07/1990 * Modified on : 11/03/1991 * 19/7/93 JC * - test for Coding type added * 26/10/94 JC * - rewritten for ANSI * - now does USHORT too * - 5 x faster! * 2/6/95 JC * - rewritten for partials * 3/3/01 JC * - tiny speed ups * 21/1/07 * - number bands from zero * 24/3/10 * - gtkdoc * - small cleanups * 25/1/12 * - cast @in to u8/u16. * 12/8/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "statistic.h" /* Accumulate a histogram in one of these. */ typedef struct { int bands; /* Number of bands in output */ int which; /* If one band in out, which band of input */ int size; /* Number of bins for each band */ int mx; /* Maximum value we have seen */ unsigned int **bins; /* All the bins! */ } Histogram; typedef struct _VipsHistFind { VipsStatistic parent_instance; /* -1 for all bands, or the band we scan. */ int which; /* Main image histogram. Subhists accumulate to this. */ Histogram *hist; /* Write hist to this output image. */ VipsImage *out; } VipsHistFind; typedef VipsStatisticClass VipsHistFindClass; G_DEFINE_TYPE( VipsHistFind, vips_hist_find, VIPS_TYPE_STATISTIC ); /* Build a Histogram. */ static Histogram * histogram_new( VipsHistFind *hist_find, int bands, int which, int size ) { Histogram *hist; int i; if( !(hist = VIPS_NEW( hist_find, Histogram )) || !(hist->bins = VIPS_ARRAY( hist_find, bands, unsigned int * )) ) return( NULL ); for( i = 0; i < bands; i++ ) { if( !(hist->bins[i] = VIPS_ARRAY( hist_find, size, unsigned int )) ) return( NULL ); memset( hist->bins[i], 0, size * sizeof( unsigned int ) ); } hist->bands = bands; hist->which = which; hist->size = size; hist->mx = 0; return( hist ); } static int vips_hist_find_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsHistFind *hist_find = (VipsHistFind *) object; unsigned int *obuffer; unsigned int *q; int i, j; g_object_set( object, "out", vips_image_new(), NULL ); if( statistic->in && vips_check_bandno( class->nickname, statistic->in, hist_find->which ) ) return( -1 ); /* main hist made on first thread start. */ if( VIPS_OBJECT_CLASS( vips_hist_find_parent_class )->build( object ) ) return( -1 ); /* Make the output image. */ if( vips_image_pipelinev( hist_find->out, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) ) return( -1 ); vips_image_init_fields( hist_find->out, hist_find->hist->mx + 1, 1, hist_find->hist->bands, VIPS_FORMAT_UINT, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); /* Interleave for output. */ if( !(obuffer = VIPS_ARRAY( object, VIPS_IMAGE_N_ELEMENTS( hist_find->out ), unsigned int )) ) return( -1 ); for( q = obuffer, j = 0; j < hist_find->out->Xsize; j++ ) for( i = 0; i < hist_find->out->Bands; i++ ) *q++ = hist_find->hist->bins[i][j]; if( vips_image_write_line( hist_find->out, 0, (VipsPel *) obuffer ) ) return( -1 ); return( 0 ); } /* Build a sub-hist, based on the main hist. */ static void * vips_hist_find_start( VipsStatistic *statistic ) { VipsHistFind *hist_find = (VipsHistFind *) statistic; /* Make the main hist, if necessary. */ if( !hist_find->hist ) hist_find->hist = histogram_new( hist_find, hist_find->which == -1 ? statistic->ready->Bands : 1, hist_find->which, statistic->ready->BandFmt == VIPS_FORMAT_UCHAR ? 256 : 65536 ); return( (void *) histogram_new( hist_find, hist_find->hist->bands, hist_find->hist->which, hist_find->hist->size ) ); } /* Join a sub-hist onto the main hist. */ static int vips_hist_find_stop( VipsStatistic *statistic, void *seq ) { Histogram *sub_hist = (Histogram *) seq; VipsHistFind *hist_find = (VipsHistFind *) statistic; Histogram *hist = hist_find->hist; int i, j; g_assert( sub_hist->bands == hist->bands && sub_hist->size == hist->size ); /* Add on sub-data. */ hist->mx = VIPS_MAX( hist->mx, sub_hist->mx ); for( i = 0; i < hist->bands; i++ ) for( j = 0; j < hist->size; j++ ) hist->bins[i][j] += sub_hist->bins[i][j]; /* Blank out sub-hist to make sure we can't add it again. */ sub_hist->mx = 0; for( i = 0; i < sub_hist->bands; i++ ) sub_hist->bins[i] = NULL; return( 0 ); } /* Hist of all bands of uchar. */ static int vips_hist_find_uchar_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; int nb = statistic->ready->Bands; VipsPel *p = (VipsPel *) in; int i, j, z; /* Tried swapping these loops, no meaningful speedup. */ for( i = 0, j = 0; j < n; j++ ) for( z = 0; z < nb; z++, i++ ) hist->bins[z][p[i]] += 1; /* Note the maximum. */ hist->mx = 255; return( 0 ); } /* Histogram of a selected band of a uchar image. */ static int vips_hist_find_uchar_extract_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; int nb = statistic->ready->Bands; int max = n * nb; unsigned int *bins = hist->bins[0]; VipsPel *p = (VipsPel *) in; int i; for( i = hist->which; i < max; i += nb ) bins[p[i]] += 1; /* Note the maximum. */ hist->mx = 255; return( 0 ); } /* Histogram of all bands of a ushort image. */ static int vips_hist_find_ushort_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; int mx = hist->mx; int nb = statistic->ready->Bands; unsigned short *p = (unsigned short *) in; int i, j, z; for( i = 0, j = 0; j < n; j++ ) for( z = 0; z < nb; z++, i++ ) { int v = p[i]; /* Adjust maximum. */ if( v > mx ) mx = v; hist->bins[z][v] += 1; } /* Note the maximum. */ hist->mx = mx; return( 0 ); } /* Histogram of one band of a ushort image. */ static int vips_hist_find_ushort_extract_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; int mx = hist->mx; unsigned int *bins = hist->bins[0]; unsigned short *p = (unsigned short *) in; int nb = statistic->ready->Bands; int max = nb * n; int i; for( i = hist->which; i < max; i += nb ) { int v = p[i]; /* Adjust maximum. */ if( v > mx ) mx = v; bins[v] += 1; } /* Note the maximum. */ hist->mx = mx; return( 0 ); } static int vips_hist_find_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { VipsHistFind *hist_find = (VipsHistFind *) statistic; VipsStatisticScanFn scan; if( hist_find->which < 0 ) { if( statistic->ready->BandFmt == VIPS_FORMAT_UCHAR ) scan = vips_hist_find_uchar_scan; else scan = vips_hist_find_ushort_scan; } else { if( statistic->ready->BandFmt == VIPS_FORMAT_UCHAR ) scan = vips_hist_find_uchar_extract_scan; else scan = vips_hist_find_ushort_extract_scan; } return( scan( statistic, seq, x, y, in, n ) ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define US VIPS_FORMAT_USHORT /* Type mapping: go to uchar or ushort. */ static const VipsBandFormat vips_hist_find_format_table[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, US, US, US, US, US, US }; static void vips_hist_find_class_init( VipsHistFindClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_find"; object_class->description = _( "find image histogram" ); object_class->build = vips_hist_find_build; sclass->start = vips_hist_find_start; sclass->scan = vips_hist_find_scan; sclass->stop = vips_hist_find_stop; sclass->format_table = vips_hist_find_format_table; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output histogram" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistFind, out ) ); VIPS_ARG_INT( class, "band", 110, _( "Band" ), _( "Find histogram of band" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHistFind, which ), -1, 100000, -1 ); } static void vips_hist_find_init( VipsHistFind *hist_find ) { hist_find->which = -1; } /** * vips_hist_find: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @band: band to equalise * * Find the histogram of @in. Find the histogram for band @band (producing a * one-band histogram), or for all bands (producing an n-band histogram) if * @band is -1. * * @in is cast to u8 or u16. @out is always u32. * * See also: vips_hist_find_ndim(), vips_hist_find_indexed(). * * Returns: 0 on success, -1 on error */ int vips_hist_find( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_find", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/getpoint.c0000664000175000017500000001247412530402247015234 00000000000000/* read a single getpoint * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 29/9/10 * - gtk-doc * - use Draw base class * - read_getpoint partial-ised * 10/2/14 * - redo as a class * 16/12/14 * - free the input region much earlier */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsGetpoint { VipsOperation parent_instance; VipsImage *in; int x; int y; VipsArrayDouble *out_array; } VipsGetpoint; typedef VipsOperationClass VipsGetpointClass; G_DEFINE_TYPE( VipsGetpoint, vips_getpoint, VIPS_TYPE_OPERATION ); static int vips_getpoint_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsGetpoint *getpoint = (VipsGetpoint *) object; VipsRect area; VipsRegion *region; double *vector; int n; VipsArrayDouble *out_array; if( VIPS_OBJECT_CLASS( vips_getpoint_parent_class )->build( object ) ) return( -1 ); /* <0 ruled out already. */ if( getpoint->x >= getpoint->in->Xsize || getpoint->y >= getpoint->in->Ysize ) { vips_error( class->nickname, "%s", _( "coordinates out of range" ) ); return( -1 ); } if( vips_check_coding_known( class->nickname, getpoint->in ) || !(region = vips_region_new( getpoint->in )) ) return( -1 ); area.left = getpoint->x; area.top = getpoint->y; area.width = 1; area.height = 1; if( vips_region_prepare( region, &area ) || !(vector = vips__ink_to_vector( class->nickname, getpoint->in, VIPS_REGION_ADDR( region, area.left, area.top ), &n )) ) { VIPS_UNREF( region ); return( -1 ); } VIPS_UNREF( region ); out_array = vips_array_double_new( vector, n ); g_object_set( object, "out_array", out_array, NULL ); vips_area_unref( (VipsArea *) out_array ); return( 0 ); } /* xy range we sanity check on ... just to stop crazy numbers from 1/0 etc. * causing g_assert() failures later. */ #define RANGE (100000000) static void vips_getpoint_class_init( VipsGetpointClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "getpoint"; object_class->description = _( "read a point from an image" ); object_class->build = vips_getpoint_build; VIPS_ARG_IMAGE( class, "in", 1, _( "in" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGetpoint, in ) ); VIPS_ARG_BOXED( class, "out_array", 2, _( "Output array" ), _( "Array of output values" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsGetpoint, out_array ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_INT( class, "x", 5, _( "x" ), _( "Point to read" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGetpoint, x ), 0, RANGE, 0 ); VIPS_ARG_INT( class, "y", 6, _( "y" ), _( "Point to read" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGetpoint, y ), 0, RANGE, 0 ); } static void vips_getpoint_init( VipsGetpoint *getpoint ) { } /** * vips_getpoint: * @in: image to read from * @vector: array length=n: output pixel value here * @n: length of output vector * @x: position to read * @y: position to read * @...: %NULL-terminated list of optional named arguments * * Reads a single pixel on an image. * * The pixel values are returned in @vector, the length of the * array in @n. You must free the array with g_free() when you are done with * it. * * See also: vips_draw_point(). * * Returns: 0 on success, or -1 on error. */ int vips_getpoint( VipsImage *in, double **vector, int *n, int x, int y, ... ) { va_list ap; VipsArrayDouble *out_array; VipsArea *area; int result; va_start( ap, y ); result = vips_call_split( "getpoint", ap, in, &out_array, x, y ); va_end( ap ); if( result ) return( -1 ); area = VIPS_AREA( out_array ); *vector = VIPS_ARRAY( NULL, area->n, double ); if( !*vector ) { vips_area_unref( area ); return( -1 ); } memcpy( *vector, area->data, area->n * area->sizeof_type ); *n = area->n; return( 0 ); } vips-8.2.2/libvips/arithmetic/add.c0000664000175000017500000001634312651122545014136 00000000000000/* add operation * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 29/4/93 J.Cupitt * - now works for partial images * 1/7/93 JC * - adapted for partial v2 * 9/5/95 JC * - simplified: now just handles 10 cases (instead of 50), using * im_clip2*() to help * - now uses im_wrapmany() rather than im_generate() * 31/5/96 JC * - SWAP() removed, *p++ removed * 27/9/04 * - im__cast_and_call() now matches bands as well * - ... so 1 band + 4 band image -> 4 band image * 8/12/06 * - add liboil support * 18/8/08 * - revise upcasting system * - im__cast_and_call() no longer sets bbits for you * - add gtkdoc comments * - remove separate complex case, just double size * 11/9/09 * - im__cast_and_call() becomes im__arith_binary() * - more of operation scaffold moved inside * 25/7/10 * - remove oil support again ... we'll try Orc instead * 29/10/10 * - move to VipsVector for Orc support * 28/2/11 * - argh vector int/uint was broken * 4/4/11 * - rewrite as a class * 2/12/13 * - remove vector code, gcc autovec with -O3 is now as fast */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" typedef VipsBinary VipsAdd; typedef VipsBinaryClass VipsAddClass; G_DEFINE_TYPE( VipsAdd, vips_add, VIPS_TYPE_BINARY ); #define LOOP( IN, OUT ) { \ IN * restrict left = (IN *) in[0]; \ IN * restrict right = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = left[x] + right[x]; \ } static void add_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; /* Complex just doubles the size. */ const int sz = width * vips_image_get_bands( im ) * (vips_band_format_iscomplex( vips_image_get_format( im ) ) ? 2 : 1); int x; /* Add all input types. Keep types here in sync with * vips_add_format_table[] below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, unsigned short ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, signed short ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, unsigned int ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, signed int ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int, signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOP( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for addition. Sign and value preserving. Make sure these * match the case statement in add_buffer() above. */ static const VipsBandFormat vips_add_format_table[10] = { /* UC C US S UI I F X D DX */ US, S, UI, I, UI, I, F, X, D, DX }; static void vips_add_class_init( VipsAddClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "add"; object_class->description = _( "add two images" ); aclass->process_line = add_buffer; vips_arithmetic_set_format_table( aclass, vips_add_format_table ); } static void vips_add_init( VipsAdd *add ) { } /** * vips_add: * @left: input image * @right: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in1 + @in2 and writes the result to @out. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * VipsAdd type promotion * * * * input type * output type * * * * * uchar * ushort * * * char * short * * * ushort * uint * * * short * int * * * uint * uint * * * int * int * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * Operations on integer images are performed using the processor's vector unit, * if possible. Disable this with --vips-novector or IM_NOVECTOR. * * See also: vips_subtract(), vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_add( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "add", ap, left, right, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/divide.c0000664000175000017500000002070712651663124014654 00000000000000/* Divide two images * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 29/4/93 JC * - now works for partial images * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 19/10/93 JC * - coredump-inducing bug in complex*complex fixed * 13/12/93 * - char*short bug fixed * 12/6/95 JC * - new im_multiply adapted to make new im_divide * 27/9/04 * - updated for 1 band $op n band image -> n band image case * 8/12/06 * - add liboil support * 18/8/08 * - revise upcasting system * - add gtkdoc comments * 31/7/10 * - remove liboil support * - avoid /0 * 6/11/11 * - rewrite as a class * 22/2/12 * - avoid /0 for complex as well * 6/4/12 * - fixed switch cases * - fixed int operands with <1 result */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" typedef VipsBinary VipsDivide; typedef VipsBinaryClass VipsDivideClass; G_DEFINE_TYPE( VipsDivide, vips_divide, VIPS_TYPE_BINARY ); /* Complex divide. */ #ifdef USE_MODARG_DIV /* This is going to be much slower */ #define CLOOP( TYPE ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ int i; \ \ for( i = 0; i < sz; i++ ) { \ if( right[0] == 0.0 && \ right[1] == 0.0 ) { \ q[0] = 0.0; \ q[1] = 0.0; \ } \ else { \ double arg = atan2( left[1], left[0] ) - \ atan2( right[1], right[0] ); \ double mod = hypot( left[1], left[0] ) / \ hypot( right[1], right[0] ); \ \ q[0] = mod * cos( arg ); \ q[1] = mod * sin( arg ); \ } \ \ left += 2; \ right += 2; \ q += 2; \ } \ } #else /* USE_MODARG_DIV */ #define CLOOP( TYPE ) { \ TYPE * restrict left = (TYPE *) in[0]; \ TYPE * restrict right = (TYPE *) in[1]; \ TYPE * restrict q = (TYPE *) out; \ int i; \ \ for( i = 0; i < sz; i++ ) { \ if( right[0] == 0.0 && \ right[1] == 0.0 ) { \ q[0] = 0.0; \ q[1] = 0.0; \ } \ else if( VIPS_FABS( right[0] ) > VIPS_FABS( right[1] ) ) { \ double a = right[1] / right[0]; \ double b = right[0] + right[1] * a; \ \ q[0] = (left[0] + left[1] * a) / b; \ q[1] = (left[1] - left[0] * a) / b; \ } \ else { \ double a = right[0] / right[1]; \ double b = right[1] + right[0] * a; \ \ q[0] = (left[0] * a + left[1]) / b; \ q[1] = (left[1] * a - left[0]) / b; \ } \ \ left += 2; \ right += 2; \ q += 2; \ } \ } #endif /* USE_MODARG_DIV */ /* Real divide. Cast in to OUT before divide so we work for float output. */ #define RLOOP( IN, OUT ) { \ IN * restrict left = (IN *) in[0]; \ IN * restrict right = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = right[x] == 0 ? 0 : (OUT) left[x] / (OUT) right[x]; \ } static void vips_divide_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; /* Keep types here in sync with vips_divide_format_table[] * below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: RLOOP( signed char, float ); break; case VIPS_FORMAT_UCHAR: RLOOP( unsigned char, float ); break; case VIPS_FORMAT_SHORT: RLOOP( signed short, float ); break; case VIPS_FORMAT_USHORT: RLOOP( unsigned short, float ); break; case VIPS_FORMAT_INT: RLOOP( signed int, float ); break; case VIPS_FORMAT_UINT: RLOOP( unsigned int, float ); break; case VIPS_FORMAT_FLOAT: RLOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: RLOOP( double, double ); break; case VIPS_FORMAT_COMPLEX: CLOOP( float ); break; case VIPS_FORMAT_DPCOMPLEX: CLOOP( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for division. Sign and value preserving. Make sure * these match the case statement in divide_buffer() above. */ static int vips_divide_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, X, D, DX }; static void vips_divide_class_init( VipsDivideClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "divide"; object_class->description = _( "divide two images" ); aclass->process_line = vips_divide_buffer; vips_arithmetic_set_format_table( aclass, vips_divide_format_table ); } static void vips_divide_init( VipsDivide *divide ) { } /** * vips_divide: * @left: input image * @right: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in1 / @in2 and writes the result to @out. If any * pixels in @in2 are zero, the corresponding pixel in @out is also zero. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * vips_divide() type promotion * * * * input type * output type * * * * * uchar * float * * * char * float * * * ushort * float * * * short * float * * * uint * float * * * int * float * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_multiply(), vips_linear(), vips_pow(). * * Returns: 0 on success, -1 on error */ int vips_divide( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "divide", ap, left, right, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/relational.c0000664000175000017500000005707112651122700015534 00000000000000/* relational.c --- various relational operations * * Modified: * 26/7/93 JC * - >,<,>=,<= tests now as (double) to prevent compiler warnings. Should * split into int/float cases really for speed. * 25/1/95 JC * - partialized * - updated * 7/2/95 JC * - oops! bug with doubles fixed * 3/7/98 JC * - vector versions added ... im_equal_vec(), im_lesseq_vec() etc * - small tidies * - should be a bit faster, lots of *q++ changed to q[x] * 10/3/03 JC * - reworked to remove nested #defines: a bit slower, but much smaller * - all except _vec forms now work on complex * 31/7/03 JC * - oops, relational_format was broken for some combinations * 23/9/09 * - gtkdoc * - use new im__arith_binary*() functions * - more meta-programming * 23/6/10 * - oops, moreconst and moreeqconst were the same * 4/11/11 * - redone as a class * 1/2/12 * - complex ==, != were broken * 16/7/12 * - im1 > im2, im1 >= im2 were broken * 17/9/14 * - im1 > im2, im1 >= im2 were still broken, but in a more subtle way */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "binary.h" #include "unaryconst.h" typedef struct _VipsRelational { VipsBinary parent_instance; VipsOperationRelational relational; } VipsRelational; typedef VipsBinaryClass VipsRelationalClass; G_DEFINE_TYPE( VipsRelational, vips_relational, VIPS_TYPE_BINARY ); #define RLOOP( TYPE, ROP ) { \ TYPE * restrict left = (TYPE *) in0; \ TYPE * restrict right = (TYPE *) in1; \ VipsPel * restrict q = (VipsPel *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = (left[x] ROP right[x]) ? 255 : 0; \ } #define CLOOP( TYPE, COP ) { \ TYPE * restrict left = (TYPE *) in0; \ TYPE * restrict right = (TYPE *) in1; \ VipsPel * restrict q = (VipsPel *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[x] = COP( left[0], left[1], right[0], right[1]) ? 255 : 0; \ \ left += 2; \ right += 2; \ } \ } #define SWITCH( R, C, ROP, COP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: R( unsigned char, ROP ); break; \ case VIPS_FORMAT_CHAR: R( signed char, ROP ); break; \ case VIPS_FORMAT_USHORT: R( unsigned short, ROP ); break; \ case VIPS_FORMAT_SHORT: R( signed short, ROP ); break; \ case VIPS_FORMAT_UINT: R( unsigned int, ROP ); break; \ case VIPS_FORMAT_INT: R( signed int, ROP ); break; \ case VIPS_FORMAT_FLOAT: R( float, ROP ); break; \ case VIPS_FORMAT_DOUBLE: R( double, ROP ); break;\ case VIPS_FORMAT_COMPLEX: C( float, COP ); break; \ case VIPS_FORMAT_DPCOMPLEX: C( double, COP ); break;\ \ default: \ g_assert_not_reached(); \ } #define CEQUAL( x1, y1, x2, y2 ) (x1 == x2 && y1 == y2) #define CNOTEQ( x1, y1, x2, y2 ) (x1 != x2 || y1 != y2) #define CLESS( x1, y1, x2, y2 ) (x1 * x1 + y1 * y1 < x2 * x2 + y2 * y2) #define CLESSEQ( x1, y1, x2, y2 ) (x1 * x1 + y1 * y1 <= x2 * x2 + y2 * y2) #define CMORE( x1, y1, x2, y2 ) (x1 * x1 + y1 * y1 > x2 * x2 + y2 * y2) #define CMOREEQ( x1, y1, x2, y2 ) (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) static void vips_relational_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsRelational *relational = (VipsRelational *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); VipsOperationRelational op; VipsPel *in0; VipsPel *in1; int x; in0 = in[0]; in1 = in[1]; op = relational->relational; if( op == VIPS_OPERATION_RELATIONAL_MORE ) { op = VIPS_OPERATION_RELATIONAL_LESS; VIPS_SWAP( VipsPel *, in0, in1 ); } if( op == VIPS_OPERATION_RELATIONAL_MOREEQ ) { op = VIPS_OPERATION_RELATIONAL_LESSEQ; VIPS_SWAP( VipsPel *, in0, in1 ); } switch( op ) { case VIPS_OPERATION_RELATIONAL_EQUAL: SWITCH( RLOOP, CLOOP, ==, CEQUAL ); break; case VIPS_OPERATION_RELATIONAL_NOTEQ: SWITCH( RLOOP, CLOOP, !=, CNOTEQ ); break; case VIPS_OPERATION_RELATIONAL_LESS: SWITCH( RLOOP, CLOOP, <, CLESS ); break; case VIPS_OPERATION_RELATIONAL_LESSEQ: SWITCH( RLOOP, CLOOP, <=, CLESSEQ ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_relational_format_table[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static void vips_relational_class_init( VipsRelationalClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "relational"; object_class->description = _( "relational operation on two images" ); aclass->process_line = vips_relational_buffer; vips_arithmetic_set_format_table( aclass, vips_relational_format_table ); VIPS_ARG_ENUM( class, "relational", 200, _( "Operation" ), _( "relational to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRelational, relational ), VIPS_TYPE_OPERATION_RELATIONAL, VIPS_OPERATION_RELATIONAL_EQUAL ); } static void vips_relational_init( VipsRelational *relational ) { } static int vips_relationalv( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationRelational relational, va_list ap ) { return( vips_call_split( "relational", ap, left, right, out, relational ) ); } /** * vips_relational: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @relational: relational operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various relational operations on pairs of images. * * The output type is always uchar, with 0 for FALSE and 255 for TRUE. * * Less-than and greater-than for complex images compare the modulus. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic). * * To decide if pixels match exactly, that is have the same value in every * band, use vips_bandbool() after this operation to AND or OR image bands * together. * * See also: vips_boolean(), vips_bandbool(), vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_relational( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationRelational relational, ... ) { va_list ap; int result; va_start( ap, relational ); result = vips_relationalv( left, right, out, relational, ap ); va_end( ap ); return( result ); } /** * vips_equal: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_EQUAL on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_equal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_EQUAL, ap ); va_end( ap ); return( result ); } /** * vips_notequal: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_NOTEQ on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_notequal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_NOTEQ, ap ); va_end( ap ); return( result ); } /** * vips_more: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MORE on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_more( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_MORE, ap ); va_end( ap ); return( result ); } /** * vips_moreeq: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MOREEQ on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_moreeq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_MOREEQ, ap ); va_end( ap ); return( result ); } /** * vips_less: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESS on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_less( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_LESS, ap ); va_end( ap ); return( result ); } /** * vips_lesseq: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESSEQ on a pair of images. See * vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_lesseq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_relationalv( left, right, out, VIPS_OPERATION_RELATIONAL_LESSEQ, ap ); va_end( ap ); return( result ); } typedef struct _VipsRelationalConst { VipsUnaryConst parent_instance; VipsOperationRelational relational; } VipsRelationalConst; typedef VipsUnaryConstClass VipsRelationalConstClass; G_DEFINE_TYPE( VipsRelationalConst, vips_relational_const, VIPS_TYPE_UNARY_CONST ); static int vips_relational_const_build( VipsObject *object ) { VipsUnary *unary = (VipsUnary *) object; VipsUnaryConst *uconst = (VipsUnaryConst *) object; if( unary->in ) uconst->const_format = unary->in->BandFmt; if( VIPS_OBJECT_CLASS( vips_relational_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define RLOOPC( TYPE, OP ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict c = (TYPE *) uconst->c_ready; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ out[i] = (p[i] OP c[b]) ? 255 : 0; \ } #define CLOOPC( TYPE, OP ) { \ TYPE * restrict p = (TYPE *) in[0]; \ \ for( i = 0, x = 0; x < width; x++ ) { \ TYPE * restrict c = (TYPE *) uconst->c_ready; \ \ for( b = 0; b < bands; b++, i++ ) { \ out[i] = OP( p[0], p[1], c[0], c[1]) ? 255 : 0; \ \ p += 2; \ c += 2; \ } \ } \ } static void vips_relational_const_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnaryConst *uconst = (VipsUnaryConst *) arithmetic; VipsRelationalConst *rconst = (VipsRelationalConst *) arithmetic; VipsImage *im = arithmetic->ready[0]; int bands = im->Bands; int i, x, b; switch( rconst->relational ) { case VIPS_OPERATION_RELATIONAL_EQUAL: SWITCH( RLOOPC, CLOOPC, ==, CEQUAL ); break; case VIPS_OPERATION_RELATIONAL_NOTEQ: SWITCH( RLOOPC, CLOOPC, !=, CNOTEQ ); break; case VIPS_OPERATION_RELATIONAL_LESS: SWITCH( RLOOPC, CLOOPC, <, CLESS ); break; case VIPS_OPERATION_RELATIONAL_LESSEQ: SWITCH( RLOOPC, CLOOPC, <=, CLESSEQ ); break; case VIPS_OPERATION_RELATIONAL_MORE: SWITCH( RLOOPC, CLOOPC, >, CMORE ); break; case VIPS_OPERATION_RELATIONAL_MOREEQ: SWITCH( RLOOPC, CLOOPC, >=, CMOREEQ ); break; default: g_assert_not_reached(); } } static void vips_relational_const_class_init( VipsRelationalConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "relational_const"; object_class->description = _( "relational operations against a constant" ); object_class->build = vips_relational_const_build; aclass->process_line = vips_relational_const_buffer; vips_arithmetic_set_format_table( aclass, vips_relational_format_table ); VIPS_ARG_ENUM( class, "relational", 200, _( "Operation" ), _( "relational to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRelationalConst, relational ), VIPS_TYPE_OPERATION_RELATIONAL, VIPS_OPERATION_RELATIONAL_EQUAL ); } static void vips_relational_const_init( VipsRelationalConst *relational_const ) { } static int vips_relational_constv( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; int result; int i; area_c = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = (double *) area_c->data; for( i = 0; i < n; i++ ) array[i] = c[i]; result = vips_call_split( "relational_const", ap, in, out, relational, area_c ); vips_area_unref( area_c ); return( result ); } /** * vips_relational_const: * @in: input image * @out: output image * @relational: relational operation to perform * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform various relational operations on an image and an array of * constants. * * The output type is always uchar, with 0 for FALSE and 255 for TRUE. * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_boolean(), vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_relational_const( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, relational, c, n, ap ); va_end( ap ); return( result ); } /** * vips_equal_const: * @in: input #VipsImage * @out: output #VipsImage * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_EQUAL on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_equal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_EQUAL, c, n, ap ); va_end( ap ); return( result ); } /** * vips_notequal_const: * @in: input #VipsImage * @out: output #VipsImage * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_NOTEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_notequal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_NOTEQ, c, n, ap ); va_end( ap ); return( result ); } /** * vips_less_const: * @in: input #VipsImage * @out: output #VipsImage * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESS on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_less_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_LESS, c, n, ap ); va_end( ap ); return( result ); } /** * vips_lesseq_const: * @in: input #VipsImage * @out: output #VipsImage * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESSEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_lesseq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_LESSEQ, c, n, ap ); va_end( ap ); return( result ); } /** * vips_more_const: * @in: input #VipsImage * @out: output #VipsImage * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MORE on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_more_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_MORE, c, n, ap ); va_end( ap ); return( result ); } /** * vips_moreeq_const: * @in: input #VipsImage * @out: output #VipsImage * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MOREEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_moreeq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_MOREEQ, c, n, ap ); va_end( ap ); return( result ); } /** * vips_relational_const1: * @in: input image * @out: output image * @relational: relational operation to perform * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform various relational operations on an image and a constant. See * vips_relational_const(). * * See also: vips_boolean(), vips_relational(). * * Returns: 0 on success, -1 on error */ int vips_relational_const1( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, relational, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_equal_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_EQUAL on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_equal_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_EQUAL, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_notequal_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_NOTEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_notequal_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_NOTEQ, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_less_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESS on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_less_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_LESS, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_lesseq_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_LESSEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_lesseq_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_LESSEQ, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_more_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MORE on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_more_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_MORE, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_moreeq_const1: * @in: input image * @out: output image * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_RELATIONAL_MOREEQ on an image and a constant. See * vips_relational_const(). * * Returns: 0 on success, -1 on error */ int vips_moreeq_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_relational_constv( in, out, VIPS_OPERATION_RELATIONAL_MOREEQ, &c, 1, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/hough.c0000664000175000017500000001104712530402247014510 00000000000000/* hough transform * * 7/3/14 * - from hist_find.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "statistic.h" #include "hough.h" G_DEFINE_ABSTRACT_TYPE( VipsHough, vips_hough, VIPS_TYPE_STATISTIC ); static VipsImage * vips_hough_new_accumulator( VipsHough *hough ) { VipsHoughClass *class = VIPS_HOUGH_GET_CLASS( hough ); VipsStatistic *statistic = VIPS_STATISTIC( hough ); VipsImage *accumulator; accumulator = vips_image_new_memory(); vips_image_pipelinev( accumulator, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ); if( class->init_accumulator( hough, accumulator ) || vips_image_write_prepare( accumulator ) ) { g_object_unref( accumulator ); return( NULL ); } /* vips does not guarantee image mem is zeroed. */ memset( VIPS_IMAGE_ADDR( accumulator, 0, 0 ), 0, VIPS_IMAGE_SIZEOF_IMAGE( accumulator ) ); return( accumulator ); } static int vips_hough_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsHough *hough = (VipsHough *) object; VipsImage *out; /* Mono only, we use the bands dimension of the output image for * a parameter. */ if( statistic->in ) if( vips_check_mono( class->nickname, statistic->in ) ) return( -1 ); if( !(out = vips_hough_new_accumulator( hough )) ) return( -1 ); g_object_set( object, "out", out, NULL ); if( VIPS_OBJECT_CLASS( vips_hough_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Build a new accumulator. */ static void * vips_hough_start( VipsStatistic *statistic ) { VipsHough *hough = (VipsHough *) statistic; VipsImage *accumulator; if( !(accumulator = vips_hough_new_accumulator( hough )) ) return( NULL ); return( (void *) accumulator ); } /* Add our finished accumulator to the main area. */ static int vips_hough_stop( VipsStatistic *statistic, void *seq ) { VipsImage *accumulator = (VipsImage *) seq; VipsHough *hough = (VipsHough *) statistic; if( vips_draw_image( hough->out, accumulator, 0, 0, "mode", VIPS_COMBINE_MODE_ADD, NULL ) ) { g_object_unref( accumulator ); return( -1 ); } g_object_unref( accumulator ); return( 0 ); } static int vips_hough_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { VipsHough *hough = (VipsHough *) statistic; VipsHoughClass *class = VIPS_HOUGH_GET_CLASS( hough ); VipsImage *accumulator = (VipsImage *) seq; VipsPel *p = (VipsPel *) in; int i; for( i = 0; i < n; i++ ) if( p[i] ) class->vote( hough, accumulator, x + i, y ); return( 0 ); } #define UC VIPS_FORMAT_UCHAR /* Input image is cast to this format. */ static const VipsBandFormat vips_hough_format_table[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static void vips_hough_class_init( VipsHoughClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hough"; object_class->description = _( "find hough transform" ); object_class->build = vips_hough_build; sclass->start = vips_hough_start; sclass->scan = vips_hough_scan; sclass->stop = vips_hough_stop; sclass->format_table = vips_hough_format_table; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHough, out ) ); } static void vips_hough_init( VipsHough *hough ) { } vips-8.2.2/libvips/arithmetic/arithmetic.c0000664000175000017500000005367212621410271015536 00000000000000/* base class for all arithmetic operations * * properties: * - one output image, one or more inputs * - cast input images to match * - output is large enough to hold output values (value preserving) * - point-to-point operations (ie. each pixel depends only on the * corresponding pixel in the input) * - LUT-able: ie. arithmetic (image) can be exactly replaced by * maplut (image, arithmetic (lut)) for 8/16 bit int images */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "parithmetic.h" /** * SECTION: arithmetic * @short_description: operations which perform pixel arithmetic, trig, log, statistics * @stability: Stable * @include: vips/vips.h * * These operations perform pixel arithmetic, that is, they perform an * arithmetic operation, such as addition, on every pixel in an image or a * pair of images. All (except in a few cases noted below) will work with * images of any type or any mixture of types, of any size and of any number * of bands. * * For binary operations, if the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * In the same way, for operations that take an array constant, such as * vips_remainder_const(), you can mix single-element arrays or single-band * images freely. * * Arithmetic operations try to preserve precision by increasing the number of * bits in the output image when necessary. Generally, this follows the ANSI C * conventions for type promotion, so multiplying two * #VIPS_FORMAT_UCHAR images together, for example, produces a * #VIPS_FORMAT_USHORT image, and taking the vips_cos() of a * #VIPS_FORMAT_USHORT image produces #VIPS_FORMAT_FLOAT image. * * For binary arithmetic operations, type promotion occurs in two stages. * First, the two input images are cast up to the smallest common format, * that is, the type with the smallest range that can represent the full * range of both inputs. This conversion can be represented as a table: * * * Smallest common format * * * * @in2/@in1 * uchar * char * ushort * short * uint * int * float * double * complex * double complex * * * * * uchar * ushort * short * ushort * short * uint * int * float * double * complex * double complex * * * char * short * short * short * short * int * int * float * double * complex * double complex * * * ushort * ushort * short * ushort * short * uint * int * float * double * complex * double complex * * * short * short * short * short * short * int * int * float * double * complex * double complex * * * uint * uint * int * uint * int * uint * int * float * double * complex * double complex * * * int * int * int * int * int * int * int * float * double * complex * double complex * * * float * float * float * float * float * float * float * float * double * complex * double complex * * * double * double * double * double * double * double * double * double * double * double complex * double complex * * * complex * complex * complex * complex * complex * complex * complex * complex * double complex * complex * double complex * * * double complex * double complex * double complex * double complex * double complex * double complex * double complex * double complex * double complex * double complex * double complex * * * *
* * In the second stage, the operation is performed between the two identical * types to form the output. The details vary between operations, but * generally the principle is that the output type should be large enough to * represent the whole range of possible values, except that int never becomes * float. */ G_DEFINE_ABSTRACT_TYPE( VipsArithmetic, vips_arithmetic, VIPS_TYPE_OPERATION ); /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* For two integer types, the "largest", ie. one which can represent the * full range of both. */ static VipsBandFormat format_largest[6][6] = { /* UC C US S UI I */ /* UC */ { UC, S, US, S, UI, I }, /* C */ { S, C, I, S, I, I }, /* US */ { US, I, US, I, UI, I }, /* S */ { S, S, I, S, I, I }, /* UI */ { UI, I, UI, I, UI, I }, /* I */ { I, I, I, I, I, I } }; /* For two formats, find one which can represent the full range of both. */ static VipsBandFormat vips_format_common( VipsBandFormat a, VipsBandFormat b ) { if( vips_band_format_iscomplex( a ) || vips_band_format_iscomplex( b ) ) { if( a == VIPS_FORMAT_DPCOMPLEX || b == VIPS_FORMAT_DPCOMPLEX ) return( VIPS_FORMAT_DPCOMPLEX ); else return( VIPS_FORMAT_COMPLEX ); } else if( vips_band_format_isfloat( a ) || vips_band_format_isfloat( b ) ) { if( a == VIPS_FORMAT_DOUBLE || b == VIPS_FORMAT_DOUBLE ) return( VIPS_FORMAT_DOUBLE ); else return( VIPS_FORMAT_FLOAT ); } else return( format_largest[a][b] ); } int vips__formatalike_vec( VipsImage **in, VipsImage **out, int n ) { int i; VipsBandFormat format; g_assert( n >= 1 ); format = in[0]->BandFmt; for( i = 1; i < n; i++ ) format = vips_format_common( format, in[i]->BandFmt ); for( i = 0; i < n; i++ ) if( in[i]->BandFmt == format ) { /* Already in the right format ... just copy the image * pointer and add a ref. */ out[i] = in[i]; g_object_ref( in[i] ); } else { if( vips_cast( in[i], &out[i], format, NULL ) ) return( -1 ); } return( 0 ); } int vips__sizealike_vec( VipsImage **in, VipsImage **out, int n ) { int i; int width_max; int height_max; g_assert( n >= 1 ); width_max = in[0]->Xsize; height_max = in[0]->Ysize; for( i = 1; i < n; i++ ) { width_max = VIPS_MAX( width_max, in[i]->Xsize ); height_max = VIPS_MAX( height_max, in[i]->Ysize ); } for( i = 0; i < n; i++ ) if( in[i]->Xsize == width_max && in[i]->Ysize == height_max ) { /* Already the right size ... just copy the image * pointer and add a ref. */ out[i] = in[i]; g_object_ref( in[i] ); } else { if( vips_embed( in[i], &out[i], 0, 0, width_max, height_max, NULL ) ) return( -1 ); } return( 0 ); } /* Make an n-band image. Input 1 or n bands. */ int vips__bandup( const char *domain, VipsImage *in, VipsImage **out, int n ) { VipsImage *bands[256]; int i; if( in->Bands == n ) return( vips_copy( in, out, NULL ) ); if( in->Bands != 1 ) { vips_error( domain, _( "not one band or %d bands" ), n ); return( -1 ); } if( n > 256 || n < 1 ) { vips_error( domain, "%s", _( "bad bands" ) ); return( -1 ); } for( i = 0; i < n; i++ ) bands[i] = in; return( vips_bandjoin( bands, out, n, NULL ) ); } /* base_bands is the default minimum. * * Handy for example, if you have VipsLinear with * a 3-element vector of constants and a 1-band input image, you need to cast * the image up to three bands. */ int vips__bandalike_vec( const char *domain, VipsImage **in, VipsImage **out, int n, int base_bands ) { int i; int max_bands; VipsInterpretation interpretation; g_assert( n >= 1 ); /* We try to set the interpretation of the output images from the * interpretation of the n-band input. For example, if we are matching * a set of BW images to an RGB image, we want the BW images to be * tagged as RGB. */ max_bands = base_bands; interpretation = VIPS_INTERPRETATION_ERROR; for( i = 0; i < n; i++ ) { /* >= so we can pick up interpretation if base_bands is equal * to the number of bands of the largest image. */ if( in[i]->Bands >= max_bands ) { max_bands = in[i]->Bands; interpretation = in[i]->Type; } } for( i = 0; i < n; i++ ) if( in[i]->Bands == max_bands ) { /* Already the right number of bands ... just copy the * image pointer and add a ref. */ out[i] = in[i]; g_object_ref( in[i] ); } else { if( vips__bandup( domain, in[i], &out[i], max_bands ) ) return( -1 ); if( interpretation != VIPS_INTERPRETATION_ERROR ) out[i]->Type = interpretation; } return( 0 ); } int vips__formatalike( VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ) { VipsImage *in[2]; VipsImage *out[2]; in[0] = in1; in[1] = in2; if( vips__formatalike_vec( in, out, 2 ) ) return( -1 ); *out1 = out[0]; *out2 = out[1]; return( 0 ); } int vips__sizealike( VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ) { VipsImage *in[2]; VipsImage *out[2]; in[0] = in1; in[1] = in2; if( vips__sizealike_vec( in, out, 2 ) ) return( -1 ); *out1 = out[0]; *out2 = out[1]; return( 0 ); } int vips__bandalike( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ) { VipsImage *in[2]; VipsImage *out[2]; in[0] = in1; in[1] = in2; if( vips__bandalike_vec( domain, in, out, 2, 1 ) ) return( -1 ); *out1 = out[0]; *out2 = out[1]; return( 0 ); } /* Maximum number of input images -- why not? */ #define MAX_INPUT_IMAGES (64) static int vips_arithmetic_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsArithmetic *arithmetic = VIPS_ARITHMETIC( b ); VipsArithmeticClass *class = VIPS_ARITHMETIC_GET_CLASS( arithmetic ); VipsRect *r = &or->valid; VipsPel *p[MAX_INPUT_IMAGES], *q; int i, y; /* Prepare all input regions and make buffer pointers. */ for( i = 0; ir[i]; i++ ) { if( vips_region_prepare( ir[i], r ) ) return( -1 ); p[i] = (VipsPel *) VIPS_REGION_ADDR( ir[i], r->left, r->top ); } p[i] = NULL; q = (VipsPel *) VIPS_REGION_ADDR( or, r->left, r->top ); VIPS_GATE_START( "vips_arithmetic_gen: work" ); for( y = 0; y < r->height; y++ ) { class->process_line( arithmetic, q, p, r->width ); for( i = 0; ir[i]; i++ ) p[i] += VIPS_REGION_LSKIP( ir[i] ); q += VIPS_REGION_LSKIP( or ); } VIPS_GATE_STOP( "vips_arithmetic_gen: work" ); return( 0 ); } static int vips_arithmetic_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsArithmeticClass *aclass = VIPS_ARITHMETIC_GET_CLASS( arithmetic ); VipsImage **decode; VipsImage **format; VipsImage **band; VipsImage **size; int i; #ifdef DEBUG printf( "vips_arithmetic_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_arithmetic_parent_class )-> build( object ) ) return( -1 ); g_object_set( arithmetic, "out", vips_image_new(), NULL ); /* No need to check input bands, bandalike will do this for us. */ if( arithmetic->n > MAX_INPUT_IMAGES ) { vips_error( class->nickname, "%s", _( "too many input images" ) ); return( -1 ); } decode = (VipsImage **) vips_object_local_array( object, arithmetic->n ); format = (VipsImage **) vips_object_local_array( object, arithmetic->n ); band = (VipsImage **) vips_object_local_array( object, arithmetic->n ); size = (VipsImage **) vips_object_local_array( object, arithmetic->n ); /* Decode RAD/LABQ etc. */ for( i = 0; i < arithmetic->n; i++ ) if( vips_image_decode( arithmetic->in[i], &decode[i] ) ) return( -1 ); /* Cast our input images up to a common format, bands and size. */ if( vips__formatalike_vec( decode, format, arithmetic->n ) || vips__bandalike_vec( class->nickname, format, band, arithmetic->n, arithmetic->base_bands ) || vips__sizealike_vec( band, size, arithmetic->n ) ) return( -1 ); /* Keep a copy of the processed images here for subclasses. */ arithmetic->ready = size; if( vips_image_pipeline_array( arithmetic->out, VIPS_DEMAND_STYLE_THINSTRIP, arithmetic->ready ) ) return( -1 ); arithmetic->out->Bands = arithmetic->ready[0]->Bands; if( arithmetic->format != VIPS_FORMAT_NOTSET ) arithmetic->out->BandFmt = arithmetic->format; else arithmetic->out->BandFmt = aclass->format_table[arithmetic->ready[0]->BandFmt]; if( vips_image_generate( arithmetic->out, vips_start_many, vips_arithmetic_gen, vips_stop_many, arithmetic->ready, arithmetic ) ) return( -1 ); return( 0 ); } static void vips_arithmetic_class_init( VipsArithmeticClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "arithmetic"; vobject_class->description = _( "arithmetic operations" ); vobject_class->build = vips_arithmetic_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsArithmetic, out ) ); } static void vips_arithmetic_init( VipsArithmetic *arithmetic ) { arithmetic->base_bands = 1; arithmetic->format = VIPS_FORMAT_NOTSET; } void vips_arithmetic_set_format_table( VipsArithmeticClass *class, const VipsBandFormat *format_table ) { int i; g_assert( !class->format_table ); class->format_table = format_table; for( i = 0; i < VIPS_FORMAT_LAST; i++ ) { int isize = vips_format_sizeof( i ); int osize = vips_format_sizeof( (int) format_table[i] ); VipsVector *v; v = vips_vector_new( "arithmetic", osize ); vips_vector_source_name( v, "s1", isize ); vips_vector_source_name( v, "s2", isize ); vips_vector_temporary( v, "t1", osize ); vips_vector_temporary( v, "t2", osize ); class->vectors[i] = v; } } /* Get the stub for this program ... use _get_vector() to get the compiled * code. */ VipsVector * vips_arithmetic_get_program( VipsArithmeticClass *class, VipsBandFormat fmt ) { g_assert( (int) fmt >= 0 && (int) fmt < VIPS_FORMAT_LAST ); g_assert( !class->vector_program[fmt] ); class->vector_program[fmt] = TRUE; return( class->vectors[fmt] ); } /* Get the compiled code for this type, if available. */ VipsVector * vips_arithmetic_get_vector( VipsArithmeticClass *class, VipsBandFormat fmt ) { g_assert( fmt >= 0 && fmt < VIPS_FORMAT_LAST ); if( !vips_vector_isenabled() || !class->vector_program[fmt] ) return( NULL ); return( class->vectors[fmt] ); } void vips_arithmetic_compile( VipsArithmeticClass *class ) { int i; g_assert( class->format_table ); for( i = 0; i < VIPS_FORMAT_LAST; i++ ) if( class->vector_program[i] && !vips_vector_compile( class->vectors[i] ) ) /* If compilation fails, turn off the vector for this * type. */ class->vector_program[i] = FALSE; #ifdef DEBUG printf( "vips_arithmetic_compile: " ); for( i = 0; i < VIPS_FORMAT_LAST; i++ ) if( class->vector_program[i] ) printf( "%s ", vips_enum_nick( VIPS_TYPE_BAND_FORMAT, i ) ); printf( "\n" ); #endif /*DEBUG*/ } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_arithmetic_operation_init( void ) { extern GType vips_add_get_type( void ); extern GType vips_sum_get_type( void ); extern GType vips_subtract_get_type( void ); extern GType vips_multiply_get_type( void ); extern GType vips_divide_get_type( void ); extern GType vips_invert_get_type( void ); extern GType vips_avg_get_type( void ); extern GType vips_min_get_type( void ); extern GType vips_max_get_type( void ); extern GType vips_deviate_get_type( void ); extern GType vips_linear_get_type( void ); extern GType vips_math_get_type( void ); extern GType vips_abs_get_type( void ); extern GType vips_sign_get_type( void ); extern GType vips_stats_get_type( void ); extern GType vips_hist_find_get_type( void ); extern GType vips_hist_find_ndim_get_type( void ); extern GType vips_hist_find_indexed_get_type( void ); extern GType vips_hough_line_get_type( void ); extern GType vips_hough_circle_get_type( void ); extern GType vips_project_get_type( void ); extern GType vips_profile_get_type( void ); extern GType vips_measure_get_type( void ); extern GType vips_getpoint_get_type( void ); extern GType vips_round_get_type( void ); extern GType vips_relational_get_type( void ); extern GType vips_relational_const_get_type( void ); extern GType vips_remainder_get_type( void ); extern GType vips_remainder_const_get_type( void ); extern GType vips_boolean_get_type( void ); extern GType vips_boolean_const_get_type( void ); extern GType vips_math2_get_type( void ); extern GType vips_math2_const_get_type( void ); extern GType vips_complex_get_type( void ); extern GType vips_complex2_get_type( void ); extern GType vips_complexget_get_type( void ); extern GType vips_complexform_get_type( void ); vips_add_get_type(); vips_sum_get_type(); vips_subtract_get_type(); vips_multiply_get_type(); vips_divide_get_type(); vips_invert_get_type(); vips_avg_get_type(); vips_min_get_type(); vips_max_get_type(); vips_deviate_get_type(); vips_linear_get_type(); vips_math_get_type(); vips_abs_get_type(); vips_sign_get_type(); vips_stats_get_type(); vips_hist_find_get_type(); vips_hist_find_ndim_get_type(); vips_hist_find_indexed_get_type(); vips_hough_line_get_type(); vips_hough_circle_get_type(); vips_project_get_type(); vips_profile_get_type(); vips_measure_get_type(); vips_getpoint_get_type(); vips_round_get_type(); vips_relational_get_type(); vips_relational_const_get_type(); vips_remainder_get_type(); vips_remainder_const_get_type(); vips_boolean_get_type(); vips_boolean_const_get_type(); vips_math2_get_type(); vips_math2_const_get_type(); vips_complex_get_type(); vips_complex2_get_type(); vips_complexget_get_type(); vips_complexform_get_type(); } vips-8.2.2/libvips/arithmetic/abs.c0000664000175000017500000001476212651663124014161 00000000000000/* absolute value * * Copyright: 1990, N. Dessipris, based on im_powtra() * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 5/5/93 J.Cupitt * - adapted from im_lintra to work with partial images * - complex and signed support added * 30/6/93 JC * - adapted for partial v2 * - ANSI conversion * - spe29873r6k3h()**!@lling errors removed * 9/2/95 JC * - adapted for im_wrap... * 20/6/02 JC * - tiny speed up * 8/12/06 * - add liboil support * 28/8/09 * - gtkdoc * - tiny polish * 31/7/10 * - remove liboil * 6/11/11 * - redone as a class * 3/12/13 * - add orc, though the speed improvement vs. gcc's auto-vectorizer * seems very marginal */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef VipsUnary VipsAbs; typedef VipsUnaryClass VipsAbsClass; G_DEFINE_TYPE( VipsAbs, vips_abs, VIPS_TYPE_UNARY ); static int vips_abs_build( VipsObject *object ) { VipsUnary *unary = (VipsUnary *) object; if( unary->in && vips_band_format_isuint( unary->in->BandFmt ) ) return( vips_unary_copy( unary ) ); if( VIPS_OBJECT_CLASS( vips_abs_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Integer abs operation: just test and negate. */ #define ABS_INT( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) \ q[x] = p[x] < 0 ? 0 - p[x] : p[x]; \ } /* Float abs operation: call fabs(). */ #define ABS_FLOAT( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) \ q[x] = VIPS_FABS( p[x] ); \ } /* Complex abs operation: calculate modulus. */ #ifdef HAVE_HYPOT #define ABS_COMPLEX( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) { \ q[x] = hypot( p[0], p[1] ); \ p += 2; \ } \ } #else /*HAVE_HYPOT*/ #define ABS_COMPLEX( TYPE ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ int x; \ \ for( x = 0; x < sz; x++ ) { \ double rp = p[0]; \ double ip = p[1]; \ double abs_rp = VIPS_FABS( rp ); \ double abs_ip = VIPS_FABS( ip ); \ \ if( abs_rp > abs_ip ) { \ double temp = ip / rp; \ \ q[x] = abs_rp * sqrt( 1.0 + temp * temp ); \ } \ else { \ double temp = rp / ip; \ \ q[x] = abs_ip * sqrt( 1.0 + temp * temp ); \ } \ \ p += 2; \ } \ } #endif /*HAVE_HYPOT*/ static void vips_abs_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsArithmeticClass *class = VIPS_ARITHMETIC_GET_CLASS( arithmetic ); VipsImage *im = arithmetic->ready[0]; const int bands = vips_image_get_bands( im ); int sz = width * bands; VipsVector *v; if( (v = vips_arithmetic_get_vector( class, vips_image_get_format( im ) )) ) { VipsExecutor ex; vips_executor_set_program( &ex, v, sz ); vips_executor_set_array( &ex, v->s[0], in[0] ); vips_executor_set_destination( &ex, out ); vips_executor_run( &ex ); } else { switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: ABS_INT( signed char ); break; case VIPS_FORMAT_SHORT: ABS_INT( signed short ); break; case VIPS_FORMAT_INT: ABS_INT( signed int ); break; case VIPS_FORMAT_FLOAT: ABS_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: ABS_FLOAT( double ); break; case VIPS_FORMAT_COMPLEX: ABS_COMPLEX( float ); break; case VIPS_FORMAT_DPCOMPLEX: ABS_COMPLEX( double ); break; default: g_assert_not_reached(); } } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Format doesn't change with abs, other than complex -> real. */ static const VipsBandFormat vips_abs_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, F, D, D }; static void vips_abs_class_init( VipsAbsClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); VipsVector *v; object_class->nickname = "abs"; object_class->description = _( "absolute value of an image" ); object_class->build = vips_abs_build; aclass->process_line = vips_abs_buffer; vips_arithmetic_set_format_table( aclass, vips_abs_format_table ); v = vips_arithmetic_get_program( aclass, VIPS_FORMAT_CHAR ); vips_vector_asm2( v, "absb", "d1", "s1" ); v = vips_arithmetic_get_program( aclass, VIPS_FORMAT_SHORT ); vips_vector_asm2( v, "absw", "d1", "s1" ); v = vips_arithmetic_get_program( aclass, VIPS_FORMAT_INT ); vips_vector_asm2( v, "absl", "d1", "s1" ); vips_arithmetic_compile( aclass ); } static void vips_abs_init( VipsAbs *abs ) { } /** * vips_abs: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * This operation finds the absolute value of an image. It does a copy for * unsigned integer types, negate for negative values in * signed integer types, fabs(3) for * float types, and calculates modulus for complex * types. * * See also: vips_sign(). * * Returns: 0 on success, -1 on error */ int vips_abs( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "abs", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/avg.c0000664000175000017500000001321212651122551014150 00000000000000/* avg ... average value of image * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/08/1990 * Modified on: * 5/5/93 JC * - now does partial images * - less likely to overflow * 1/7/93 JC * - adapted for partial v2 * - ANSI C * 21/2/95 JC * - modernised again * 11/5/95 JC * - oops! return( NULL ) in im_avg(), instead of return( -1 ) * 20/6/95 JC * - now returns double * 13/1/05 * - use 64 bit arithmetic * 8/12/06 * - add liboil support * 18/8/09 * - gtkdoc, minor reformatting * 7/9/09 * - rewrite for im__wrapiter() * - add complex case (needed for im_max()) * 8/9/09 * - wrapscan stuff moved here * 31/7/10 * - remove liboil * 24/8/11 * - rewrite as a class * 12/9/14 * - oops, fix complex avg */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "statistic.h" typedef struct _VipsAvg { VipsStatistic parent_instance; double sum; double out; } VipsAvg; typedef VipsStatisticClass VipsAvgClass; G_DEFINE_TYPE( VipsAvg, vips_avg, VIPS_TYPE_STATISTIC ); static int vips_avg_build( VipsObject *object ) { VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsAvg *avg = (VipsAvg *) object; gint64 vals; double average; if( VIPS_OBJECT_CLASS( vips_avg_parent_class )->build( object ) ) return( -1 ); vals = (gint64) vips_image_get_width( statistic->in ) * vips_image_get_height( statistic->in ) * vips_image_get_bands( statistic->in ); average = avg->sum / vals; g_object_set( object, "out", average, NULL ); return( 0 ); } /* Start function: allocate space for a double in which we can accumulate the * sum for this thread. */ static void * vips_avg_start( VipsStatistic *statistic ) { return( (void *) g_new0( double, 1 ) ); } /* Stop function. Add this little sum to the main sum. */ static int vips_avg_stop( VipsStatistic *statistic, void *seq ) { VipsAvg *avg = (VipsAvg *) statistic; double *sum = (double *) seq; avg->sum += *sum; g_free( seq ); return( 0 ); } /* Sum pels in this section. */ #define LOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( i = 0; i < sz; i++ ) \ m += p[i]; \ } #define CLOOP( TYPE ) { \ TYPE *p = (TYPE *) in; \ \ for( i = 0; i < sz; i++ ) { \ double mod = sqrt( p[0] * p[0] + p[1] * p[1] ); \ \ m += mod; \ p += 2; \ } \ } /* Loop over region, accumulating a sum in *tmp. */ static int vips_avg_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { const int sz = n * vips_image_get_bands( statistic->in ); double *sum = (double *) seq; int i; double m; m = *sum; /* Now generate code for all types. */ switch( vips_image_get_format( statistic->in ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOP( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int ); break; case VIPS_FORMAT_FLOAT: LOOP( float ); break; case VIPS_FORMAT_DOUBLE: LOOP( double ); break; case VIPS_FORMAT_COMPLEX: CLOOP( float ); break; case VIPS_FORMAT_DPCOMPLEX: CLOOP( double ); break; default: g_assert_not_reached(); } *sum = m; return( 0 ); } static void vips_avg_class_init( VipsAvgClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "avg"; object_class->description = _( "find image average" ); object_class->build = vips_avg_build; sclass->start = vips_avg_start; sclass->scan = vips_avg_scan; sclass->stop = vips_avg_stop; VIPS_ARG_DOUBLE( class, "out", 2, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsAvg, out ), -INFINITY, INFINITY, 0.0 ); } static void vips_avg_init( VipsAvg *avg ) { } /** * vips_avg: * @in: input #VipsImage * @out: output pixel average * @...: %NULL-terminated list of optional named arguments * * This operation finds the average value in an image. It operates on all * bands of the input image: use vips_stats() if you need to calculate an * average for each band. For complex images, return the average modulus. * * See also: vips_stats(), vips_bandmean(), vips_deviate(), vips_rank() * * Returns: 0 on success, -1 on error */ int vips_avg( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "avg", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/unary.h0000664000175000017500000000356112530402247014543 00000000000000/* base class for all unary arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_UNARY_H #define VIPS_UNARY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "parithmetic.h" #define VIPS_TYPE_UNARY (vips_unary_get_type()) #define VIPS_UNARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_UNARY, VipsUnary )) #define VIPS_UNARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), VIPS_TYPE_UNARY, VipsUnaryClass)) #define VIPS_IS_UNARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_UNARY )) #define VIPS_IS_UNARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_UNARY )) #define VIPS_UNARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), VIPS_TYPE_UNARY, VipsUnaryClass )) typedef struct _VipsUnary { VipsArithmetic parent_instance; VipsImage *in; } VipsUnary; typedef VipsArithmeticClass VipsUnaryClass; GType vips_unary_get_type( void ); int vips_unary_copy( VipsUnary *unary ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_UNARY_H*/ vips-8.2.2/libvips/arithmetic/linear.c0000664000175000017500000003005212651663124014654 00000000000000/* im_lintra.c -- linear transform * * Copyright: 1990, N. Dessipris, based on im_powtra() * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 23/4/93 JC * - adapted to work with partial images * 1/7/93 JC * - adapted for partial v2 * 7/10/94 JC * - new IM_NEW() * - more typedefs * 9/2/95 JC * - adapted for im_wrap... * - operations on complex images now just transform the real channel * 29/9/95 JC * - complex was broken * 15/4/97 JC * - return(0) missing from generate, arrgh! * 1/7/98 JC * - im_lintra_vec added * 3/8/02 JC * - fall back to im_copy() for a == 1, b == 0 * 10/10/02 JC * - auug, failing to multiply imag for complex! (thanks matt) * 10/12/02 JC * - removed im_copy() fallback ... meant that output format could change * with value :-( very confusing * 30/6/04 * - added 1 band image * n band vector case * 8/12/06 * - add liboil support * 9/9/09 * - gtkdoc comment, minor reformat * 31/7/10 * - remove liboil * 31/10/11 * - rework as a class * - removed the 1-ary constant path, no faster * 30/11/13 * - 1ary is back, faster with gcc 4.8 * 3/12/13 * - try an ORC path with the band loop unrolled * 14/1/14 * - add uchar output option */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef struct _VipsLinear { VipsUnary parent_instance; /* Our constants: multiply by a, add b. */ VipsArea *a; VipsArea *b; /* uchar output. */ gboolean uchar; /* Our constants expanded to match arith->ready in size. */ int n; double *a_ready; double *b_ready; } VipsLinear; typedef VipsUnaryClass VipsLinearClass; G_DEFINE_TYPE( VipsLinear, vips_linear, VIPS_TYPE_UNARY ); static int vips_linear_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsUnary *unary = (VipsUnary *) object; VipsLinear *linear = (VipsLinear *) object; int i; /* If we have a three-element vector we need to bandup the image to * match. */ linear->n = 1; if( linear->a ) linear->n = VIPS_MAX( linear->n, linear->a->n ); if( linear->b ) linear->n = VIPS_MAX( linear->n, linear->b->n ); if( unary->in ) { int bands; vips_image_decode_predict( unary->in, &bands, NULL ); linear->n = VIPS_MAX( linear->n, bands ); } arithmetic->base_bands = linear->n; if( unary->in && linear->a && linear->b ) { if( vips_check_vector( class->nickname, linear->a->n, unary->in ) || vips_check_vector( class->nickname, linear->b->n, unary->in ) ) return( -1 ); } /* Make up-banded versions of our constants. */ linear->a_ready = VIPS_ARRAY( linear, linear->n, double ); linear->b_ready = VIPS_ARRAY( linear, linear->n, double ); for( i = 0; i < linear->n; i++ ) { if( linear->a ) { double *ary = (double *) linear->a->data; int j = VIPS_MIN( i, linear->a->n - 1 ); linear->a_ready[i] = ary[j]; } if( linear->b ) { double *ary = (double *) linear->b->data; int j = VIPS_MIN( i, linear->b->n - 1 ); linear->b_ready[i] = ary[j]; } } if( linear->uchar ) arithmetic->format = VIPS_FORMAT_UCHAR; if( VIPS_OBJECT_CLASS( vips_linear_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Non-complex input, any output, all bands of the constant equal. */ #define LOOP1( IN, OUT ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ OUT a1 = a[0]; \ OUT b1 = b[0]; \ int sz = width * nb; \ \ for( x = 0; x < sz; x++ ) \ q[x] = a1 * (OUT) p[x] + b1; \ } /* Non-complex input, any output. */ #define LOOPN( IN, OUT ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( k = 0; k < nb; k++, i++ ) \ q[i] = a[k] * (OUT) p[i] + b[k]; \ } #define LOOP( IN, OUT ) { \ if( linear->a->n == 1 && linear->b->n == 1 ) { \ LOOP1( IN, OUT ); \ } \ else { \ LOOPN( IN, OUT ); \ } \ } /* Complex input, complex output. */ #define LOOPCMPLXN( IN, OUT ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) \ for( k = 0; k < nb; k++ ) { \ q[0] = a[k] * p[0] + b[k]; \ q[1] = p[1]; \ q += 2; \ p += 2; \ } \ } /* Non-complex input, any output, all bands of the constant equal, uchar * output. */ #define LOOP1uc( IN ) { \ IN * restrict p = (IN *) in[0]; \ VipsPel * restrict q = (VipsPel *) out; \ float a1 = a[0]; \ float b1 = b[0]; \ int sz = width * nb; \ \ for( x = 0; x < sz; x++ ) { \ float t = a1 * p[x] + b1; \ \ q[x] = VIPS_FCLIP( 0, t, 255 ); \ } \ } /* Non-complex input, uchar output. */ #define LOOPNuc( IN ) { \ IN * restrict p = (IN *) in[0]; \ VipsPel * restrict q = (VipsPel *) out; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( k = 0; k < nb; k++, i++ ) { \ double t = a[k] * p[i] + b[k]; \ \ q[i] = VIPS_FCLIP( 0, t, 255 ); \ } \ } #define LOOPuc( IN ) { \ if( linear->a->n == 1 && linear->b->n == 1 ) { \ LOOP1uc( IN ); \ } \ else { \ LOOPNuc( IN ); \ } \ } /* Complex input, uchar output. */ #define LOOPCMPLXNuc( IN ) { \ IN * restrict p = (IN *) in[0]; \ VipsPel * restrict q = (VipsPel *) out; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( k = 0; k < nb; k++, i++ ) { \ double t = a[k] * p[0] + b[k]; \ \ q[i] = VIPS_FCLIP( 0, t, 255 ); \ p += 2; \ } \ } /* Lintra a buffer, n set of scale/offset. */ static void vips_linear_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; VipsLinear *linear = (VipsLinear *) arithmetic; double * restrict a = linear->a_ready; double * restrict b = linear->b_ready; int nb = im->Bands; int i, x, k; if( linear->uchar ) switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOPuc( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOPuc( signed char ); break; case VIPS_FORMAT_USHORT: LOOPuc( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOPuc( signed short ); break; case VIPS_FORMAT_UINT: LOOPuc( unsigned int ); break; case VIPS_FORMAT_INT: LOOPuc( signed int ); break; case VIPS_FORMAT_FLOAT: LOOPuc( float ); break; case VIPS_FORMAT_DOUBLE: LOOPuc( double ); break; case VIPS_FORMAT_COMPLEX: LOOPCMPLXNuc( float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPCMPLXNuc( double ); break; default: g_assert_not_reached(); } else switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, float ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, float ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, float ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, float ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, float ); break; case VIPS_FORMAT_INT: LOOP( signed int, float ); break; case VIPS_FORMAT_FLOAT: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: LOOP( double, double ); break; case VIPS_FORMAT_COMPLEX: LOOPCMPLXN( float, float ); break; case VIPS_FORMAT_DPCOMPLEX: LOOPCMPLXN( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Format doesn't change with linear. */ static const VipsBandFormat vips_linear_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, X, D, DX }; static void vips_linear_class_init( VipsLinearClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "linear"; object_class->description = _( "calculate (a * in + b)" ); object_class->build = vips_linear_build; aclass->process_line = vips_linear_buffer; vips_arithmetic_set_format_table( aclass, vips_linear_format_table ); VIPS_ARG_BOXED( class, "a", 110, _( "a" ), _( "Multiply by this" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsLinear, a ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_BOXED( class, "b", 111, _( "b" ), _( "Add this" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsLinear, b ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_BOOL( class, "uchar", 112, _( "uchar" ), _( "Output should be uchar" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsLinear, uchar ), FALSE ); } static void vips_linear_init( VipsLinear *linear ) { } static int vips_linearv( VipsImage *in, VipsImage **out, double *a, double *b, int n, va_list ap ) { VipsArea *area_a; VipsArea *area_b; int result; area_a = (VipsArea *) vips_array_double_new( a, n ); area_b = (VipsArea *) vips_array_double_new( b, n ); result = vips_call_split( "linear", ap, in, out, area_a, area_b ); vips_area_unref( area_a ); vips_area_unref( area_b ); return( result ); } /** * vips_linear: * @in: image to transform * @out: output image * @a: (array length=n): array of constants for multiplication * @b: (array length=n): array of constants for addition * @n: length of constant arrays * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @uchar: output uchar pixels * * Pass an image through a linear transform, ie. (@out = @in * @a + @b). Output * is float for integer input, double for double input, complex for * complex input and double complex for double complex input. Set @uchar to * output uchar pixels. * * If the arrays of constants have just one element, that constant is used for * all image bands. If the arrays have more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_linear1(), vips_add(). * * Returns: 0 on success, -1 on error */ int vips_linear( VipsImage *in, VipsImage **out, double *a, double *b, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_linearv( in, out, a, b, n, ap ); va_end( ap ); return( result ); } /** * vips_linear1: * @in: image to transform * @out: output image * @a: constant for multiplication * @b: constant for addition * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @uchar: output uchar pixels * * Run vips_linear() with a single constant. * * See also: vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_linear1( VipsImage *in, VipsImage **out, double a, double b, ... ) { va_list ap; int result; va_start( ap, b ); result = vips_linearv( in, out, &a, &b, 1, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/round.c0000664000175000017500000001473712651122710014534 00000000000000/* round.c --- various rounding operations * * 20/6/02 JC * - adapted from im_abs() * 29/8/09 * - gtkdoc * - tiny cleanups * 19/9/09 * - im_ceil.c adapted to make round.c * 10/11/11 * - redone as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef struct _VipsRound { VipsUnary parent_instance; VipsOperationRound round; } VipsRound; typedef VipsUnaryClass VipsRoundClass; G_DEFINE_TYPE( VipsRound, vips_round, VIPS_TYPE_UNARY ); static int vips_round_build( VipsObject *object ) { VipsUnary *unary = (VipsUnary *) object; /* Is this one of the int types? Degenerate to vips_copy() if it * is. */ if( unary->in && vips_band_format_isint( unary->in->BandFmt ) ) return( vips_unary_copy( unary ) ); if( VIPS_OBJECT_CLASS( vips_round_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define LOOP( TYPE, OP ) { \ TYPE * restrict p = (TYPE *) in[0]; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = OP( p[x] ); \ } #define SWITCH( OP ) { \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_COMPLEX: \ case VIPS_FORMAT_FLOAT: LOOP( float, OP ); break; \ \ case VIPS_FORMAT_DPCOMPLEX: \ case VIPS_FORMAT_DOUBLE:LOOP( double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } \ } static void vips_round_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsRound *round = (VipsRound *) arithmetic; VipsImage *im = arithmetic->ready[0]; /* Complex just doubles the size. */ const int sz = width * im->Bands * (vips_band_format_iscomplex( im->BandFmt ) ? 2 : 1); int x; switch( round->round ) { case VIPS_OPERATION_ROUND_RINT: SWITCH( VIPS_RINT ); break; case VIPS_OPERATION_ROUND_CEIL: SWITCH( VIPS_CEIL ); break; case VIPS_OPERATION_ROUND_FLOOR: SWITCH( VIPS_FLOOR ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_round_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, X, D, DX }; static void vips_round_class_init( VipsRoundClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "round"; object_class->description = _( "perform a round function on an image" ); object_class->build = vips_round_build; aclass->process_line = vips_round_buffer; vips_arithmetic_set_format_table( aclass, vips_round_format_table ); VIPS_ARG_ENUM( class, "round", 200, _( "Round operation" ), _( "rounding operation to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRound, round ), VIPS_TYPE_OPERATION_ROUND, VIPS_OPERATION_ROUND_RINT ); } static void vips_round_init( VipsRound *round ) { } static int vips_roundv( VipsImage *in, VipsImage **out, VipsOperationRound round, va_list ap ) { return( vips_call_split( "round", ap, in, out, round ) ); } /** * vips_round: * @in: input #VipsImage * @out: output #VipsImage * @round: #VipsOperationRound rounding operation to perform * @...: %NULL-terminated list of optional named arguments * * Round to an integral value. * * Copy for integer types, round float and * complex types. * * The format of @out is always the same as @in, so you may wish to cast to an * integer format afterwards. * * See also: vips_cast() * * Returns: 0 on success, -1 on error */ int vips_round( VipsImage *in, VipsImage **out, VipsOperationRound round, ... ) { va_list ap; int result; va_start( ap, round ); result = vips_roundv( in, out, round, ap ); va_end( ap ); return( result ); } /** * vips_floor: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Round to an integral value with #VIPS_OPERATION_ROUND_FLOOR. See * vips_round(). * * Returns: 0 on success, -1 on error */ int vips_floor( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_roundv( in, out, VIPS_OPERATION_ROUND_FLOOR, ap ); va_end( ap ); return( result ); } /** * vips_ceil: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Round to an integral value with #VIPS_OPERATION_ROUND_CEIL. See * vips_round(). * * Returns: 0 on success, -1 on error */ int vips_ceil( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_roundv( in, out, VIPS_OPERATION_ROUND_CEIL, ap ); va_end( ap ); return( result ); } /** * vips_rint: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Round to an integral value with #VIPS_OPERATION_ROUND_RINT. See * vips_round(). * * Returns: 0 on success, -1 on error */ int vips_rint( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_roundv( in, out, VIPS_OPERATION_ROUND_RINT, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/math2.c0000664000175000017500000003563112651122653014422 00000000000000/* math2.c --- 2ary math funcs * * Copyright: 1990, N. Dessipris * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 10/12/93 JC * - now reports total number of x/0, rather than each one. * 1/2/95 JC * - rewritten for PIO with im_wrapone() * - incorrect complex code removed * - /0 reporting removed for ease of programming * 15/4/97 JC * - return( 0 ) missing, oops! * 6/7/98 JC * - _vec form added * 30/8/09 * - gtkdoc * - tiny cleanups * 20/9/09 * - im_powtra() adapated to make math2.c * 12/11/11 * - redone as a class * 17/7/12 * - wopconst was broken */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" #include "unaryconst.h" typedef struct _VipsMath2 { VipsBinary parent_instance; VipsOperationMath2 math2; } VipsMath2; typedef VipsBinaryClass VipsMath2Class; G_DEFINE_TYPE( VipsMath2, vips_math2, VIPS_TYPE_BINARY ); static int vips_math2_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBinary *binary = (VipsBinary *) object; if( binary->left && vips_check_noncomplex( class->nickname, binary->left ) ) return( -1 ); if( binary->right && vips_check_noncomplex( class->nickname, binary->right ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_math2_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define LOOP( IN, OUT, OP ) { \ IN * restrict p1 = (IN *) in[0]; \ IN * restrict p2 = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ OP( q[x], p1[x], p2[x] ); \ } #define SWITCH( L, OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ L( unsigned char, float, OP ); break; \ case VIPS_FORMAT_CHAR: \ L( signed char, float, OP ); break; \ case VIPS_FORMAT_USHORT: \ L( unsigned short, float, OP ); break; \ case VIPS_FORMAT_SHORT: \ L( signed short, float, OP ); break; \ case VIPS_FORMAT_UINT: \ L( unsigned int, float, OP ); break; \ case VIPS_FORMAT_INT: \ L( signed int, float, OP ); break; \ case VIPS_FORMAT_FLOAT: \ L( float, float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ L( double, double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } #define POW( Y, X, E ) { \ double left = (double) (X); \ double right = (double) (E); \ \ /* Division by zero! Difficult to report tho' \ */ \ (Y) = (left == 0.0 && right < 0.0) ? 0.0 : pow( left, right ); \ } #define WOP( Y, X, E ) POW( Y, E, X ) static void vips_math2_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsMath2 *math2 = (VipsMath2 *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( math2->math2 ) { case VIPS_OPERATION_MATH2_POW: SWITCH( LOOP, POW ); break; case VIPS_OPERATION_MATH2_WOP: SWITCH( LOOP, WOP ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for math2. Keep in sync with math2_buffer() above. */ static int vips_math2_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, X, D, DX }; static void vips_math2_class_init( VipsMath2Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "math2"; object_class->description = _( "binary math operations" ); object_class->build = vips_math2_build; aclass->process_line = vips_math2_buffer; vips_arithmetic_set_format_table( aclass, vips_math2_format_table ); VIPS_ARG_ENUM( class, "math2", 200, _( "Operation" ), _( "math to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMath2, math2 ), VIPS_TYPE_OPERATION_MATH2, VIPS_OPERATION_MATH2_POW ); } static void vips_math2_init( VipsMath2 *math2 ) { } static int vips_math2v( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationMath2 math2, va_list ap ) { return( vips_call_split( "math2", ap, left, right, out, math2 ) ); } /** * vips_math2: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @math2: math operation to perform * @...: %NULL-terminated list of optional named arguments * * This operation calculates a 2-ary maths operation on a pair of images * and writes the result to @out. The images may have any * non-complex format. @out is float except in the case that either of @left * or @right are double, in which case @out is also double. * * It detects division by zero, setting those pixels to zero in the output. * Beware: it does this silently! * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), and that format is the * result type. * * See also: vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_math2( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationMath2 math2, ... ) { va_list ap; int result; va_start( ap, math2 ); result = vips_math2v( left, right, out, math2, ap ); va_end( ap ); return( result ); } /** * vips_pow: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_POW on a pair of images. See * vips_math2(). * * Returns: 0 on success, -1 on error */ int vips_pow( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_math2v( left, right, out, VIPS_OPERATION_MATH2_POW, ap ); va_end( ap ); return( result ); } /** * vips_wop: * @left: left-hand input #VipsImage * @right: right-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_WOP on a pair of images. See * vips_math2(). * * Returns: 0 on success, -1 on error */ int vips_wop( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_math2v( left, right, out, VIPS_OPERATION_MATH2_WOP, ap ); va_end( ap ); return( result ); } typedef struct _VipsMath2Const { VipsUnaryConst parent_instance; VipsOperationMath2 math2; } VipsMath2Const; typedef VipsUnaryConstClass VipsMath2ConstClass; G_DEFINE_TYPE( VipsMath2Const, vips_math2_const, VIPS_TYPE_UNARY_CONST ); static int vips_math2_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsUnary *unary = (VipsUnary *) object; VipsUnaryConst *uconst = (VipsUnaryConst *) object; if( unary->in && vips_check_noncomplex( class->nickname, unary->in ) ) return( -1 ); uconst->const_format = VIPS_FORMAT_DOUBLE; if( VIPS_OBJECT_CLASS( vips_math2_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define LOOPC( IN, OUT, OP ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ double * restrict c = (double *) uconst->c_ready; \ \ for( i = 0, x = 0; x < width; x++ ) \ for( b = 0; b < bands; b++, i++ ) \ OP( q[i], p[i], c[b] ); \ } static void vips_math2_const_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsUnaryConst *uconst = (VipsUnaryConst *) arithmetic; VipsMath2Const *math2 = (VipsMath2Const *) arithmetic; VipsImage *im = arithmetic->ready[0]; int bands = im->Bands; int i, x, b; switch( math2->math2 ) { case VIPS_OPERATION_MATH2_POW: SWITCH( LOOPC, POW ); break; case VIPS_OPERATION_MATH2_WOP: SWITCH( LOOPC, WOP ); break; default: g_assert_not_reached(); } } static void vips_math2_const_class_init( VipsMath2ConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "math2_const"; object_class->description = _( "pow( @in, @c )" ); object_class->build = vips_math2_const_build; aclass->process_line = vips_math2_const_buffer; vips_arithmetic_set_format_table( aclass, vips_math2_format_table ); VIPS_ARG_ENUM( class, "math2", 200, _( "Operation" ), _( "math to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMath2Const, math2 ), VIPS_TYPE_OPERATION_MATH2, VIPS_OPERATION_MATH2_POW ); } static void vips_math2_const_init( VipsMath2Const *math2_const ) { } static int vips_math2_constv( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double *c, int n, va_list ap ) { VipsArea *area_c; double *array; int result; int i; area_c = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = (double *) area_c->data; for( i = 0; i < n; i++ ) array[i] = c[i]; result = vips_call_split( "math2_const", ap, in, out, math2, area_c ); vips_area_unref( area_c ); return( result ); } /** * vips_math2_const: * @in: input image * @out: output image * @math2: math operation to perform * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * This operation calculates various 2-ary maths operations on an image and * an array of constants and writes the result to @out. * The image may have any * non-complex format. @out is float except in the case that @in * is double, in which case @out is also double. * * It detects division by zero, setting those pixels to zero in the output. * Beware: it does this silently! * * If the array of constants has just one element, that constant is used for * all image bands. If the array has more than one element and they have * the same number of elements as there are bands in the image, then * one array element is used for each band. If the arrays have more than one * element and the image only has a single band, the result is a many-band * image where each band corresponds to one array element. * * See also: vips_math2(), vips_math(). * * Returns: 0 on success, -1 on error */ int vips_math2_const( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_math2_constv( in, out, math2, c, n, ap ); va_end( ap ); return( result ); } /** * vips_pow_const: * @in: left-hand input #VipsImage * @out: output #VipsImage * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_POW on an image and a constant. See * vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_pow_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_math2_constv( in, out, VIPS_OPERATION_MATH2_POW, c, n, ap ); va_end( ap ); return( result ); } /** * vips_wop_const: * @in: left-hand input #VipsImage * @out: output #VipsImage * @c: array of constants * @n: number of constants in @c * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_WOP on an image and a constant. See * vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_wop_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_math2_constv( in, out, VIPS_OPERATION_MATH2_WOP, c, n, ap ); va_end( ap ); return( result ); } /** * vips_math2_const1: * @in: input image * @out: output image * @math2: math operation to perform * @c: constant * @...: %NULL-terminated list of optional named arguments * * This operation calculates various 2-ary maths operations on an image and * a constant. See vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_math2_const1( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_math2_constv( in, out, math2, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_pow_const1: * @in: left-hand input #VipsImage * @out: output #VipsImage * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_POW on an image and a constant. See * vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_pow_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_math2_constv( in, out, VIPS_OPERATION_MATH2_POW, &c, 1, ap ); va_end( ap ); return( result ); } /** * vips_wop_const1: * @in: left-hand input #VipsImage * @out: output #VipsImage * @c: constant * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH2_WOP on an image and a constant. See * vips_math2_const(). * * Returns: 0 on success, -1 on error */ int vips_wop_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_math2_constv( in, out, VIPS_OPERATION_MATH2_WOP, &c, 1, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/unaryconst.c0000664000175000017500000001227212651663124015613 00000000000000/* an image plus a constant * * 11/11/11 * - from arith_binary_const */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "unaryconst.h" G_DEFINE_ABSTRACT_TYPE( VipsUnaryConst, vips_unary_const, VIPS_TYPE_UNARY ); /* Cast a vector of double to a vector of TYPE, clipping to a range. */ #define CAST_CLIP( TYPE, N, X ) { \ TYPE * restrict tq = (TYPE *) q; \ \ for( i = 0; i < m; i++ ) { \ double v = p[VIPS_MIN( n - 1, i )]; \ \ tq[i] = (TYPE) VIPS_FCLIP( N, v, X ); \ } \ } /* Cast a vector of double to a vector of TYPE. */ #define CAST( TYPE ) { \ TYPE * restrict tq = (TYPE *) q; \ \ for( i = 0; i < m; i++ ) \ tq[i] = (TYPE) p[VIPS_MIN( n - 1, i )]; \ } /* Cast a vector of double to a complex vector of TYPE. */ #define CASTC( TYPE ) { \ TYPE * restrict tq = (TYPE *) q; \ \ for( i = 0; i < m; i++ ) { \ tq[0] = (TYPE) p[VIPS_MIN( n - 1, i )]; \ tq[1] = 0; \ \ tq += 2; \ } \ } /* Cast a n-band vector of double to a m-band vector in another format. */ static VipsPel * make_pixel( VipsObject *obj, int m, VipsBandFormat fmt, int n, double * restrict p ) { VipsPel *q; int i; if( !(q = VIPS_ARRAY( obj, m * vips_format_sizeof( fmt ), VipsPel )) ) return( NULL ); switch( fmt ) { case VIPS_FORMAT_CHAR: CAST_CLIP( signed char, SCHAR_MIN, SCHAR_MAX ); break; case VIPS_FORMAT_UCHAR: CAST_CLIP( unsigned char, 0, UCHAR_MAX ); break; case VIPS_FORMAT_SHORT: CAST_CLIP( signed short, SCHAR_MIN, SCHAR_MAX ); break; case VIPS_FORMAT_USHORT: CAST_CLIP( unsigned short, 0, USHRT_MAX ); break; case VIPS_FORMAT_INT: CAST_CLIP( signed int, INT_MIN, INT_MAX ); break; case VIPS_FORMAT_UINT: CAST_CLIP( unsigned int, 0, UINT_MAX ); break; case VIPS_FORMAT_FLOAT: CAST( float ); break; case VIPS_FORMAT_DOUBLE: CAST( double ); break; case VIPS_FORMAT_COMPLEX: CASTC( float ); break; case VIPS_FORMAT_DPCOMPLEX: CASTC( double ); break; default: g_assert_not_reached(); } return( q ); } static int vips_unary_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsUnary *unary = (VipsUnary *) object; VipsUnaryConst *uconst = (VipsUnaryConst *) object; /* If we have a three-element vector we need to bandup the image to * match. */ uconst->n = 1; if( uconst->c ) uconst->n = VIPS_MAX( uconst->n, uconst->c->n ); if( unary->in ) uconst->n = VIPS_MAX( uconst->n, unary->in->Bands ); arithmetic->base_bands = uconst->n; if( unary->in && uconst->c ) { if( vips_check_vector( class->nickname, uconst->c->n, unary->in ) ) return( -1 ); } /* Some operations need the vector in the input type (eg. * im_equal_vec() where the output type is always uchar and is useless * for comparisons), some need it in the output type (eg. * im_andimage_vec() where we want to get the double to an int so we * can do bitwise-and without having to cast for each pixel), some * need a fixed type (eg. im_powtra_vec(), where we want to keep it as * double). * * Therefore pass in the desired vector type as a param. */ if( uconst->c ) uconst->c_ready = make_pixel( (VipsObject *) uconst, uconst->n, uconst->const_format, uconst->c->n, (double *) uconst->c->data ); if( VIPS_OBJECT_CLASS( vips_unary_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_unary_const_class_init( VipsUnaryConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "unary_const"; object_class->description = _( "unary operations with a constant" ); object_class->build = vips_unary_const_build; VIPS_ARG_BOXED( class, "c", 200, _( "c" ), _( "Array of constants" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsUnaryConst, c ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_unary_const_init( VipsUnaryConst *uconst ) { } vips-8.2.2/libvips/arithmetic/complex.c0000664000175000017500000005614512651122622015055 00000000000000/* complex.c ... various complex operations * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 12/02/1990 * Modified on : 09/05/1990 * 15/6/93 JC * - stupid stupid includes and externs fixed * - I have been editing for 1 1/2 hours and I'm still drowning in * rubbish extetrnshh * 13/12/94 JC * - modernised * 9/7/02 JC * - degree output, for consistency * - slightly better behaviour in edge cases * 27/1/10 * - modernised * - gtk-doc * 19/11/11 * - redo as a class * 21/11/11 * - add vips_complexget() * 29/9/15 * - return 0 for cross-product where one arg is zero */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" #include "binary.h" typedef struct _VipsComplex { VipsUnary parent_instance; VipsOperationComplex cmplx; } VipsComplex; typedef VipsUnaryClass VipsComplexClass; G_DEFINE_TYPE( VipsComplex, vips_complex, VIPS_TYPE_UNARY ); #define LOOP( IN, OUT, OP ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q, p[x], 0.0 ); \ \ q += 2; \ } \ } #define CLOOP( IN, OUT, OP ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q, p[0], p[1] ); \ \ p += 2; \ q += 2; \ } \ } #define SWITCH( OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ LOOP( unsigned char, float, OP ); break; \ case VIPS_FORMAT_CHAR: \ LOOP( signed char, float, OP ); break; \ case VIPS_FORMAT_USHORT: \ LOOP( unsigned short, float, OP ); break; \ case VIPS_FORMAT_SHORT: \ LOOP( signed short, float, OP ); break; \ case VIPS_FORMAT_UINT: \ LOOP( unsigned int, float, OP ); break; \ case VIPS_FORMAT_INT: \ LOOP( signed int, float, OP ); break; \ case VIPS_FORMAT_FLOAT: \ LOOP( float, float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ LOOP( double, double, OP ); break;\ case VIPS_FORMAT_COMPLEX: \ CLOOP( float, float, OP ); break; \ case VIPS_FORMAT_DPCOMPLEX: \ CLOOP( double, double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } static double vips_complex_hypot( double a, double b ) { double d; #ifdef HAVE_HYPOT d = hypot( a, b ); #else d = sqrt( a * a + b * b ); #endif return( d ); } static double vips_complex_atan2( double a, double b ) { double h; #ifdef HAVE_ATAN2 h = VIPS_DEG( atan2( b, a ) ); if( h < 0.0 ) h += 360; #else h = vips_col_ab2h( a, b ); #endif return( h ); } #define POLAR( Q, X, Y ) { \ double re = (X); \ double im = (Y); \ double am, ph; \ \ am = vips_complex_hypot( re, im ); \ ph = vips_complex_atan2( re, im ); \ \ Q[0] = am; \ Q[1] = ph; \ } #define RECT( Q, X, Y ) { \ double am = (X); \ double ph = (Y); \ double re, im; \ \ re = am * cos( VIPS_RAD( ph ) ); \ im = am * sin( VIPS_RAD( ph ) ); \ \ Q[0] = re; \ Q[1] = im; \ } #define CONJ( Q, X, Y ) { \ double re = (X); \ double im = (Y); \ \ im *= -1; \ \ Q[0] = re; \ Q[1] = im; \ } static void vips_complex_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsComplex *cmplx = (VipsComplex *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( cmplx->cmplx ) { case VIPS_OPERATION_COMPLEX_POLAR: SWITCH( POLAR ); break; case VIPS_OPERATION_COMPLEX_RECT: SWITCH( RECT ); break; case VIPS_OPERATION_COMPLEX_CONJ: SWITCH( CONJ ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_complex_format_table[10] = { /* UC C US S UI I F X D DX */ X, X, X, X, X, X, X, X, DX, DX }; static void vips_complex_class_init( VipsComplexClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "complex"; object_class->description = _( "perform a complex operation on an image" ); aclass->process_line = vips_complex_buffer; vips_arithmetic_set_format_table( aclass, vips_complex_format_table ); VIPS_ARG_ENUM( class, "cmplx", 200, _( "Operation" ), _( "complex to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsComplex, cmplx ), VIPS_TYPE_OPERATION_COMPLEX, VIPS_OPERATION_COMPLEX_POLAR ); } static void vips_complex_init( VipsComplex *cmplx ) { } static int vips_complexv( VipsImage *in, VipsImage **out, VipsOperationComplex cmplx, va_list ap ) { return( vips_call_split( "complex", ap, in, out, cmplx ) ); } /** * vips_complex: * @in: input #VipsImage * @out: output #VipsImage * @cmplx: complex operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various operations on complex images. * * Angles are expressed in degrees. The output type is complex unless the * input is double or dpcomplex, in which case the output is dpcomplex. * * Returns: 0 on success, -1 on error */ int vips_complex( VipsImage *in, VipsImage **out, VipsOperationComplex cmplx, ... ) { va_list ap; int result; va_start( ap, cmplx ); result = vips_complexv( in, out, cmplx, ap ); va_end( ap ); return( result ); } /** * vips_polar: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEX_POLAR on an image. See vips_complex(). * * Returns: 0 on success, -1 on error */ int vips_polar( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexv( in, out, VIPS_OPERATION_COMPLEX_POLAR, ap ); va_end( ap ); return( result ); } /** * vips_rect: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEX_RECT on an image. See vips_complex(). * * Returns: 0 on success, -1 on error */ int vips_rect( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexv( in, out, VIPS_OPERATION_COMPLEX_POLAR, ap ); va_end( ap ); return( result ); } /** * vips_conj: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEX_CONJ on an image. See vips_complex(). * * Returns: 0 on success, -1 on error */ int vips_conj( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexv( in, out, VIPS_OPERATION_COMPLEX_CONJ, ap ); va_end( ap ); return( result ); } typedef struct _VipsComplex2 { VipsBinary parent_instance; VipsOperationComplex2 cmplx; } VipsComplex2; typedef VipsBinaryClass VipsComplex2Class; G_DEFINE_TYPE( VipsComplex2, vips_complex2, VIPS_TYPE_BINARY ); #define LOOP2( IN, OUT, OP ) { \ IN *p1 = (IN *) in[0]; \ IN *p2 = (IN *) in[1]; \ OUT *q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q, p1[x], 0.0, p2[x], 0.0 ); \ \ q += 2; \ } \ } #define CLOOP2( IN, OUT, OP ) { \ IN *p1 = (IN *) in[0]; \ IN *p2 = (IN *) in[1]; \ OUT *q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q, p1[0], p1[1], p2[0], p2[1] ); \ \ p1 += 2; \ p2 += 2; \ q += 2; \ } \ } #define SWITCH2( OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ LOOP2( unsigned char, float, OP ); break; \ case VIPS_FORMAT_CHAR: \ LOOP2( signed char, float, OP ); break; \ case VIPS_FORMAT_USHORT: \ LOOP2( unsigned short, float, OP ); break; \ case VIPS_FORMAT_SHORT: \ LOOP2( signed short, float, OP ); break; \ case VIPS_FORMAT_UINT: \ LOOP2( unsigned int, float, OP ); break; \ case VIPS_FORMAT_INT: \ LOOP2( signed int, float, OP ); break; \ case VIPS_FORMAT_FLOAT: \ LOOP2( float, float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ LOOP2( double, double, OP ); break;\ case VIPS_FORMAT_COMPLEX: \ CLOOP2( float, float, OP ); break; \ case VIPS_FORMAT_DPCOMPLEX: \ CLOOP2( double, double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } /* There doesn't seem to be much difference in speed between these two methods * (on an Athlon64), so I use the modulus argument version, since atan2() is * in c89 but hypot() is c99. * * If you think that it might be faster on your platform, uncomment the * following: */ #define USE_MODARG_DIV #ifdef USE_MODARG_DIV #define CROSS( Q, X1, Y1, X2, Y2 ) { \ if( ((X1) == 0.0 && (Y1) == 0.0) || \ ((X2) == 0.0 && (Y2) == 0.0) ) { \ Q[0] = 0.0; \ Q[1] = 0.0; \ } \ else { \ double arg = atan2( X2, X1 ) - atan2( Y2, Y1 ); \ \ Q[0] = cos( arg ); \ Q[1] = sin( arg ); \ } \ } #else /* USE_MODARG_DIV */ #define CROSS( Q, X1, Y1, X2, Y2 ) { \ if( ((X1) == 0.0 && (Y1) == 0.0) || \ ((X2) == 0.0 && (Y2) == 0.0) ) { \ Q[0] = 0.0; \ Q[1] = 0.0; \ } \ else if( ABS( Y1 ) > ABS( Y2 ) ) { \ double a = Y2 / Y1; \ double b = Y1 + Y2 * a; \ double re = (X1 + X2 * a) / b; \ double im = (X2 - X1 * a) / b; \ double mod = vips__hypot( re, im ); \ \ Q[0] = re / mod; \ Q[1] = im / mod; \ } \ else { \ double a = Y1 / Y2; \ double b = Y2 + Y1 * a; \ double re = (X1 * a + X2) / b; \ double im = (X2 * a - X1) / b; \ double mod = vips__hypot( re, im ); \ \ Q[0] = re / mod; \ Q[1] = im / mod; \ } \ } #endif /* USE_MODARG_DIV */ static void vips_complex2_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsComplex2 *cmplx = (VipsComplex2 *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( cmplx->cmplx ) { case VIPS_OPERATION_COMPLEX2_CROSS_PHASE: SWITCH2( CROSS ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_complex2_format_table[10] = { /* UC C US S UI I F X D DX */ X, X, X, X, X, X, X, X, DX, DX }; static void vips_complex2_class_init( VipsComplex2Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "complex2"; object_class->description = _( "complex binary operations on two images" ); aclass->process_line = vips_complex2_buffer; vips_arithmetic_set_format_table( aclass, vips_complex2_format_table ); VIPS_ARG_ENUM( class, "cmplx", 200, _( "Operation" ), _( "binary complex operation to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsComplex2, cmplx ), VIPS_TYPE_OPERATION_COMPLEX2, VIPS_OPERATION_COMPLEX2_CROSS_PHASE ); } static void vips_complex2_init( VipsComplex2 *cmplx ) { } static int vips_complex2v( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationComplex2 cmplx, va_list ap ) { return( vips_call_split( "complex2", ap, left, right, out, cmplx ) ); } /** * vips_complex2: * @left: input #VipsImage * @right: input #VipsImage * @out: output #VipsImage * @cmplx: complex2 operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various binary operations on complex images. * * Angles are expressed in degrees. The output type is complex unless the * input is double or dpcomplex, in which case the output is dpcomplex. * * Returns: 0 on success, -1 on error */ int vips_complex2( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationComplex2 cmplx, ... ) { va_list ap; int result; va_start( ap, cmplx ); result = vips_complex2v( left, right, out, cmplx, ap ); va_end( ap ); return( result ); } /** * vips_cross_phase: * @left: input #VipsImage * @right: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEX2_CROSS_PHASE on an image. * See vips_complex2(). * * Returns: 0 on success, -1 on error */ int vips_cross_phase( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complex2v( left, right, out, VIPS_OPERATION_COMPLEX2_CROSS_PHASE, ap ); va_end( ap ); return( result ); } typedef struct _VipsComplexget { VipsUnary parent_instance; VipsOperationComplexget get; } VipsComplexget; typedef VipsUnaryClass VipsComplexgetClass; G_DEFINE_TYPE( VipsComplexget, vips_complexget, VIPS_TYPE_UNARY ); static int vips_complexget_build( VipsObject *object ) { VipsUnary *unary = (VipsUnary *) object; VipsComplexget *complexget = (VipsComplexget *) object; if( unary->in && !vips_band_format_iscomplex( unary->in->BandFmt ) && complexget->get == VIPS_OPERATION_COMPLEXGET_REAL ) return( vips_unary_copy( unary ) ); if( VIPS_OBJECT_CLASS( vips_complexget_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define GETLOOP( TYPE, OP ) { \ TYPE *p __attribute__ ((unused)) = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q[x], p[x], 0.0 ); \ } \ } #define CGETLOOP( TYPE, OP ) { \ TYPE *p __attribute__ ((unused)) = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ OP( q[x], p[0], p[1] ); \ \ p += 2; \ } \ } #define GETSWITCH( OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ GETLOOP( unsigned char, OP ); break; \ case VIPS_FORMAT_CHAR: \ GETLOOP( signed char, OP ); break; \ case VIPS_FORMAT_USHORT: \ GETLOOP( unsigned short, OP ); break; \ case VIPS_FORMAT_SHORT: \ GETLOOP( signed short, OP ); break; \ case VIPS_FORMAT_UINT: \ GETLOOP( unsigned int, OP ); break; \ case VIPS_FORMAT_INT: \ GETLOOP( signed int, OP ); break; \ case VIPS_FORMAT_FLOAT: \ GETLOOP( float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ GETLOOP( double, OP ); break;\ case VIPS_FORMAT_COMPLEX: \ CGETLOOP( float, OP ); break; \ case VIPS_FORMAT_DPCOMPLEX: \ CGETLOOP( double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } #define REAL( Q, X, Y ) { \ Q = X; \ } #define IMAG( Q, X, Y ) { \ Q = Y; \ } static void vips_complexget_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsComplexget *complexget = (VipsComplexget *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( complexget->get ) { case VIPS_OPERATION_COMPLEXGET_REAL: GETSWITCH( REAL ); break; case VIPS_OPERATION_COMPLEXGET_IMAG: GETSWITCH( IMAG ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_complexget_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, F, D, D }; static void vips_complexget_class_init( VipsComplexgetClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "complexget"; object_class->description = _( "get a component from a complex image" ); object_class->build = vips_complexget_build; aclass->process_line = vips_complexget_buffer; vips_arithmetic_set_format_table( aclass, vips_complexget_format_table ); VIPS_ARG_ENUM( class, "get", 200, _( "Operation" ), _( "complex to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsComplexget, get ), VIPS_TYPE_OPERATION_COMPLEXGET, VIPS_OPERATION_COMPLEXGET_REAL ); } static void vips_complexget_init( VipsComplexget *complexget ) { } static int vips_complexgetv( VipsImage *in, VipsImage **out, VipsOperationComplexget get, va_list ap ) { return( vips_call_split( "complexget", ap, in, out, get ) ); } /** * vips_complexget: * @in: input #VipsImage * @out: output #VipsImage * @get: complex operation to perform * @...: %NULL-terminated list of optional named arguments * * Get components of complex images. * * The output type is the same as the input type, except #VIPS_FORMAT_COMPLEX * becomes #VIPS_FORMAT_FLOAT and #VIPS_FORMAT_DPCOMPLEX becomes * #VIPS_FORMAT_DOUBLE. * * Returns: 0 on success, -1 on error */ int vips_complexget( VipsImage *in, VipsImage **out, VipsOperationComplexget get, ... ) { va_list ap; int result; va_start( ap, get ); result = vips_complexgetv( in, out, get, ap ); va_end( ap ); return( result ); } /** * vips_real: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEXGET_REAL on an image. See vips_complexget(). * * Returns: 0 on success, -1 on error */ int vips_real( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexgetv( in, out, VIPS_OPERATION_COMPLEXGET_REAL, ap ); va_end( ap ); return( result ); } /** * vips_imag: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_COMPLEXGET_IMAG on an image. See vips_complexget(). * * Returns: 0 on success, -1 on error */ int vips_imag( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_complexgetv( in, out, VIPS_OPERATION_COMPLEXGET_IMAG, ap ); va_end( ap ); return( result ); } typedef VipsBinary VipsComplexform; typedef VipsBinaryClass VipsComplexformClass; G_DEFINE_TYPE( VipsComplexform, vips_complexform, VIPS_TYPE_BINARY ); static int vips_complexform_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBinary *binary = (VipsBinary *) object; if( binary->left && vips_check_noncomplex( class->nickname, binary->left ) ) return( -1 ); if( binary->right && vips_check_noncomplex( class->nickname, binary->right ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_complexform_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define CFORM( IN, OUT ) { \ IN *left = (IN *) in[0]; \ IN *right = (IN *) in[1]; \ OUT *q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[0] = left[x]; \ q[1] = right[x]; \ \ q += 2; \ } \ } static void vips_complexform_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; /* Keep types here in sync with bandfmt_complexform[] * below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: CFORM( unsigned char, float ); break; case VIPS_FORMAT_CHAR: CFORM( signed char, float ); break; case VIPS_FORMAT_USHORT: CFORM( unsigned short, float ); break; case VIPS_FORMAT_SHORT: CFORM( signed short, float ); break; case VIPS_FORMAT_UINT: CFORM( unsigned int, float ); break; case VIPS_FORMAT_INT: CFORM( signed int, float ); break; case VIPS_FORMAT_FLOAT: CFORM( float, float ); break; case VIPS_FORMAT_DOUBLE: CFORM( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for form complex. Sign and value preserving. Make sure * these match the case statement in complexform_buffer() above. */ static int vips_complexform_format_table[10] = { /* UC C US S UI I F X D DX */ X, X, X, X, X, X, X, X, DX,DX }; static void vips_complexform_class_init( VipsComplexformClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "complexform"; object_class->description = _( "form a complex image from two real images" ); object_class->build = vips_complexform_build; aclass->process_line = vips_complexform_buffer; vips_arithmetic_set_format_table( aclass, vips_complexform_format_table ); } static void vips_complexform_init( VipsComplexform *complexform ) { } /** * vips_complexform: * @left: input image * @right: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Compose two real images to make a complex image. If either @left or @right * are #VIPS_FORMAT_DOUBLE, @out is #VIPS_FORMAT_DPCOMPLEX. Otherwise @out * is #VIPS_FORMAT_COMPLEX. @left becomes the real component of @out and * @right the imaginary. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * See also: vips_complexget(). * * Returns: 0 on success, -1 on error */ int vips_complexform( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "complexform", ap, left, right, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/nary.h0000664000175000017500000000354212530402247014355 00000000000000/* base class for all nary arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_NARY_H #define VIPS_NARY_H #include #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "parithmetic.h" #define VIPS_TYPE_NARY (vips_nary_get_type()) #define VIPS_NARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_NARY, VipsNary )) #define VIPS_NARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), VIPS_TYPE_NARY, VipsNaryClass)) #define VIPS_IS_NARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_NARY )) #define VIPS_IS_NARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_NARY )) #define VIPS_NARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), VIPS_TYPE_NARY, VipsNaryClass )) typedef struct _VipsNary { VipsArithmetic parent_instance; /* The input images. */ VipsArea *in; } VipsNary; typedef VipsArithmeticClass VipsNaryClass; GType vips_nary_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_NARY_H*/ vips-8.2.2/libvips/arithmetic/binary.h0000664000175000017500000000367012530402247014672 00000000000000/* base class for all binary arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_BINARY_H #define VIPS_BINARY_H #include #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "parithmetic.h" #define VIPS_TYPE_BINARY (vips_binary_get_type()) #define VIPS_BINARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_BINARY, VipsBinary )) #define VIPS_BINARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), VIPS_TYPE_BINARY, VipsBinaryClass)) #define VIPS_IS_BINARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_BINARY )) #define VIPS_IS_BINARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_BINARY )) #define VIPS_BINARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), VIPS_TYPE_BINARY, VipsBinaryClass )) typedef struct _VipsBinary { VipsArithmetic parent_instance; /* Original left and right image args. */ VipsImage *left; VipsImage *right; } VipsBinary; typedef VipsArithmeticClass VipsBinaryClass; GType vips_binary_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_BINARY_H*/ vips-8.2.2/libvips/arithmetic/parithmetic.h0000664000175000017500000000650112530402247015713 00000000000000/* base class for all arithmetic operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PARITHMETIC_H #define VIPS_PARITHMETIC_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include #define VIPS_TYPE_ARITHMETIC (vips_arithmetic_get_type()) #define VIPS_ARITHMETIC( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_ARITHMETIC, VipsArithmetic )) #define VIPS_ARITHMETIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_ARITHMETIC, VipsArithmeticClass)) #define VIPS_IS_ARITHMETIC( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_ARITHMETIC )) #define VIPS_IS_ARITHMETIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_ARITHMETIC )) #define VIPS_ARITHMETIC_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_ARITHMETIC, VipsArithmeticClass )) struct _VipsArithmetic; typedef void (*VipsArithmeticProcessFn)( struct _VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ); typedef struct _VipsArithmetic { VipsOperation parent_instance; /* All have an output image. */ VipsImage *out; /* Array of input arguments, set these from a subclass. */ VipsImage **in; int n; /* The minimum number of output bands. For example, VipsLinear with a * three element constant must make at least a three-band output. */ int base_bands; /* The input images, ready for the operation. */ VipsImage **ready; /* Set this to override class->format_table. */ VipsBandFormat format; } VipsArithmetic; typedef struct _VipsArithmeticClass { VipsOperationClass parent_class; /* For each input format, what output format. Used for arithmetic * too, since we cast inputs to match. */ const VipsBandFormat *format_table; /* A vector program for each input type. */ VipsVector *vectors[VIPS_FORMAT_LAST]; /* ... and if we've set a program for this format. */ gboolean vector_program[VIPS_FORMAT_LAST]; /* The buffer processor. */ VipsArithmeticProcessFn process_line; } VipsArithmeticClass; GType vips_arithmetic_get_type( void ); void vips_arithmetic_set_format_table( VipsArithmeticClass *klass, const VipsBandFormat *format_table ); VipsVector *vips_arithmetic_get_vector( VipsArithmeticClass *klass, VipsBandFormat fmt ); void vips_arithmetic_compile( VipsArithmeticClass *klass ); VipsVector *vips_arithmetic_get_program( VipsArithmeticClass *klass, VipsBandFormat fmt ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PARITHMETIC_H*/ vips-8.2.2/libvips/arithmetic/Makefile.am0000664000175000017500000000131212530402247015260 00000000000000noinst_LTLIBRARIES = libarithmetic.la libarithmetic_la_SOURCES = \ sum.c \ hough.c \ hough.h \ hough_line.c \ hough_circle.c \ abs.c \ complex.c \ deviate.c \ divide.c \ measure.c \ getpoint.c \ multiply.c \ remainder.c \ sign.c \ statistic.c \ statistic.h \ stats.c \ avg.c \ min.c \ max.c \ hist_find.c \ hist_find_ndim.c \ hist_find_indexed.c \ project.c \ profile.c \ subtract.c \ math.c \ arithmetic.c \ parithmetic.h \ binary.c \ binary.h \ unary.c \ unary.h \ nary.c \ nary.h \ unaryconst.c \ unaryconst.h \ relational.c \ boolean.c \ add.c \ linear.c \ invert.c \ math2.c \ round.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/arithmetic/profile.c0000664000175000017500000001751012651122667015050 00000000000000/* find image profiles * * 11/8/99 JC * - from im_cntlines() * 22/4/04 * - now outputs horizontal/vertical image * 9/11/10 * - any image format, any number of bands * - gtk-doc * 21/9/13 * - rewrite as a class * - output h and v profile in one pass * - partial * - output is int rather than ushort */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "statistic.h" struct _Edges; typedef struct { /* Horizontal array: Ys of top-most non-zero pixel. */ int *column_edges; /* Vertical array: Xs of left-most non-zero pixel. */ int *row_edges; } Edges; typedef struct _VipsProfile { VipsStatistic parent_instance; /* Main edge set. Threads accumulate to this. */ Edges *edges; /* Write profiles here. */ VipsImage *columns; VipsImage *rows; } VipsProfile; typedef VipsStatisticClass VipsProfileClass; G_DEFINE_TYPE( VipsProfile, vips_profile, VIPS_TYPE_STATISTIC ); static Edges * edges_new( VipsProfile *profile ) { VipsStatistic *statistic = VIPS_STATISTIC( profile ); VipsImage *in = statistic->ready; Edges *edges; int i; if( !(edges = VIPS_NEW( profile, Edges )) ) return( NULL ); edges->column_edges = VIPS_ARRAY( profile, in->Xsize * in->Bands, int ); edges->row_edges = VIPS_ARRAY( profile, in->Ysize * in->Bands, int ); if( !edges->column_edges || !edges->row_edges ) return( NULL ); for( i = 0; i < in->Xsize * in->Bands; i++ ) edges->column_edges[i] = in->Ysize; for( i = 0; i < in->Ysize * in->Bands; i++ ) edges->row_edges[i] = in->Xsize; return( edges ); } static int vips_profile_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsProfile *profile = (VipsProfile *) object; int y; if( statistic->in && vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); g_object_set( object, "columns", vips_image_new(), "rows", vips_image_new(), NULL ); /* main edge set made on first thread start. */ if( VIPS_OBJECT_CLASS( vips_profile_parent_class )->build( object ) ) return( -1 ); /* Make the output image. */ if( vips_image_pipelinev( profile->columns, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) || vips_image_pipelinev( profile->rows, VIPS_DEMAND_STYLE_ANY, statistic->ready, NULL ) ) return( -1 ); profile->columns->Ysize = 1; profile->columns->BandFmt = VIPS_FORMAT_INT; profile->columns->Type = VIPS_INTERPRETATION_HISTOGRAM; profile->rows->Xsize = 1; profile->rows->BandFmt = VIPS_FORMAT_INT; profile->rows->Type = VIPS_INTERPRETATION_HISTOGRAM; if( vips_image_write_line( profile->columns, 0, (VipsPel *) profile->edges->column_edges ) ) return( -1 ); for( y = 0; y < profile->rows->Ysize; y++ ) if( vips_image_write_line( profile->rows, y, (VipsPel *) profile->edges->row_edges + y * VIPS_IMAGE_SIZEOF_PEL( profile->rows ) ) ) return( -1 ); return( 0 ); } /* New edge accumulator. */ static void * vips_profile_start( VipsStatistic *statistic ) { VipsProfile *profile = (VipsProfile *) statistic; /* Make the main hist, if necessary. */ if( !profile->edges ) profile->edges = edges_new( profile ); return( (void *) edges_new( profile ) ); } /* We do this a lot. */ #define MINBANG( V, C ) ((V) = VIPS_MIN( V, C )) /* Add a line of pixels. */ #define ADD_PIXELS( TYPE ) { \ TYPE *p; \ int *column_edges; \ int *row_edges; \ \ p = (TYPE *) in; \ column_edges = edges->column_edges + x * nb; \ row_edges = edges->row_edges + y * nb; \ for( i = 0; i < n; i++ ) { \ for( j = 0; j < nb; j++ ) { \ if( p[j] ) { \ MINBANG( column_edges[j], y ); \ MINBANG( row_edges[j], x + i ); \ } \ } \ \ p += nb; \ column_edges += nb; \ } \ } /* Add a region to a profile. */ static int vips_profile_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { int nb = statistic->ready->Bands; Edges *edges = (Edges *) seq; int i, j; switch( statistic->ready->BandFmt ) { case VIPS_FORMAT_UCHAR: ADD_PIXELS( guchar ); break; case VIPS_FORMAT_CHAR: ADD_PIXELS( char ); break; case VIPS_FORMAT_USHORT: ADD_PIXELS( gushort ); break; case VIPS_FORMAT_SHORT: ADD_PIXELS( short ); break; case VIPS_FORMAT_UINT: ADD_PIXELS( guint ); break; case VIPS_FORMAT_INT: ADD_PIXELS( int ); break; case VIPS_FORMAT_FLOAT: ADD_PIXELS( float ); break; case VIPS_FORMAT_DOUBLE: ADD_PIXELS( double ); break; default: g_assert_not_reached(); } return( 0 ); } /* Join a sub-profile onto the main profile. */ static int vips_profile_stop( VipsStatistic *statistic, void *seq ) { VipsProfile *profile = (VipsProfile *) statistic; Edges *edges = profile->edges; Edges *sub_edges = (Edges *) seq; VipsImage *in = statistic->ready; int i; for( i = 0; i < in->Xsize * in->Bands; i++ ) MINBANG( edges->column_edges[i], sub_edges->column_edges[i] ); for( i = 0; i < in->Ysize * in->Bands; i++ ) MINBANG( edges->row_edges[i], sub_edges->row_edges[i] ); /* Blank out sub-profile to make sure we can't add it again. */ sub_edges->row_edges = NULL; sub_edges->column_edges = NULL; return( 0 ); } static void vips_profile_class_init( VipsProfileClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "profile"; object_class->description = _( "find image profiles" ); object_class->build = vips_profile_build; sclass->start = vips_profile_start; sclass->scan = vips_profile_scan; sclass->stop = vips_profile_stop; VIPS_ARG_IMAGE( class, "columns", 100, _( "Columns" ), _( "First non-zero pixel in column" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsProfile, columns ) ); VIPS_ARG_IMAGE( class, "rows", 101, _( "Rows" ), _( "First non-zero pixel in row" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsProfile, rows ) ); } static void vips_profile_init( VipsProfile *profile ) { } /** * vips_profile: * @in: input image * @columns: distances from top edge * @rows: distances from left edge * @...: %NULL-terminated list of optional named arguments * * vips_profile() searches inward from the edge of @in and finds the * first non-zero pixel. Pixels in @columns have the distance from the top edge * to the first non-zero pixel in that column, @rows has the distance from the * left edge to the first non-zero pixel in that row. * * See also: vips_project(), vips_hist_find(). * * Returns: 0 on success, -1 on error */ int vips_profile( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) { va_list ap; int result; va_start( ap, rows ); result = vips_call_split( "profile", ap, in, columns, rows ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/unary.c0000664000175000017500000000541512530402247014536 00000000000000/* base class for all unary operations * * 30/10/11 * - from binary.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" G_DEFINE_ABSTRACT_TYPE( VipsUnary, vips_unary, VIPS_TYPE_ARITHMETIC ); static int vips_unary_build( VipsObject *object ) { VipsArithmetic *arithmetic = VIPS_ARITHMETIC( object ); VipsUnary *unary = VIPS_UNARY( object ); arithmetic->n = 1; arithmetic->in = (VipsImage **) vips_object_local_array( object, 1 ); arithmetic->in[0] = unary->in; if( arithmetic->in[0] ) g_object_ref( arithmetic->in[0] ); if( VIPS_OBJECT_CLASS( vips_unary_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_unary_class_init( VipsUnaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "unary"; vobject_class->description = _( "unary operations" ); vobject_class->build = vips_unary_build; /* Create properties. */ VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsUnary, in ) ); } static void vips_unary_init( VipsUnary *unary ) { /* Init our instance fields. */ } /* Call this before chaining up in _build() to make the operation fall back to * copy. */ int vips_unary_copy( VipsUnary *unary ) { VipsArithmetic *arithmetic = VIPS_ARITHMETIC( unary ); /* This isn't set by arith until build(), so we have to set * again here. * * Should arith set out in _init()? */ g_object_set( unary, "out", vips_image_new(), NULL ); return( vips_image_write( unary->in, arithmetic->out ) ); } vips-8.2.2/libvips/arithmetic/statistic.h0000664000175000017500000000532212530402247015411 00000000000000/* base class for all stats operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_STATISTIC_H #define VIPS_STATISTIC_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_STATISTIC (vips_statistic_get_type()) #define VIPS_STATISTIC( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_STATISTIC, VipsStatistic )) #define VIPS_STATISTIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_STATISTIC, VipsStatisticClass)) #define VIPS_IS_STATISTIC( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_STATISTIC )) #define VIPS_IS_STATISTIC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_STATISTIC )) #define VIPS_STATISTIC_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_STATISTIC, VipsStatisticClass )) typedef struct _VipsStatistic VipsStatistic; typedef struct _VipsStatisticClass VipsStatisticClass; typedef void *(*VipsStatisticStartFn)( VipsStatistic *statistic ); typedef int (*VipsStatisticScanFn)( VipsStatistic *statistic, void *seq, int x, int y, void *p, int n ); typedef int (*VipsStatisticStopFn)( VipsStatistic *statistic, void *seq ); struct _VipsStatistic { VipsOperation parent_instance; /* All have an input image. */ VipsImage *in; /* The input image cast and ready for processing. */ VipsImage *ready; /* Set this to stop computation early. */ gboolean stop; /* Client data for the subclass. */ void *a; void *b; }; struct _VipsStatisticClass { VipsOperationClass parent_class; /* Start/scan/stop, for vips_sink. */ VipsStatisticStartFn start; VipsStatisticScanFn scan; VipsStatisticStopFn stop; /* For each input format, what output format. If NULL, no casting. */ const VipsBandFormat *format_table; }; GType vips_statistic_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_STATISTIC_H*/ vips-8.2.2/libvips/arithmetic/Makefile.in0000664000175000017500000006110412651721156015305 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/arithmetic ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libarithmetic_la_LIBADD = am_libarithmetic_la_OBJECTS = sum.lo hough.lo hough_line.lo \ hough_circle.lo abs.lo complex.lo deviate.lo divide.lo \ measure.lo getpoint.lo multiply.lo remainder.lo sign.lo \ statistic.lo stats.lo avg.lo min.lo max.lo hist_find.lo \ hist_find_ndim.lo hist_find_indexed.lo project.lo profile.lo \ subtract.lo math.lo arithmetic.lo binary.lo unary.lo nary.lo \ unaryconst.lo relational.lo boolean.lo add.lo linear.lo \ invert.lo math2.lo round.lo libarithmetic_la_OBJECTS = $(am_libarithmetic_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libarithmetic_la_SOURCES) DIST_SOURCES = $(libarithmetic_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libarithmetic.la libarithmetic_la_SOURCES = \ sum.c \ hough.c \ hough.h \ hough_line.c \ hough_circle.c \ abs.c \ complex.c \ deviate.c \ divide.c \ measure.c \ getpoint.c \ multiply.c \ remainder.c \ sign.c \ statistic.c \ statistic.h \ stats.c \ avg.c \ min.c \ max.c \ hist_find.c \ hist_find_ndim.c \ hist_find_indexed.c \ project.c \ profile.c \ subtract.c \ math.c \ arithmetic.c \ parithmetic.h \ binary.c \ binary.h \ unary.c \ unary.h \ nary.c \ nary.h \ unaryconst.c \ unaryconst.h \ relational.c \ boolean.c \ add.c \ linear.c \ invert.c \ math2.c \ round.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/arithmetic/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/arithmetic/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libarithmetic.la: $(libarithmetic_la_OBJECTS) $(libarithmetic_la_DEPENDENCIES) $(EXTRA_libarithmetic_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libarithmetic_la_OBJECTS) $(libarithmetic_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/abs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arithmetic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/boolean.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/complex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deviate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/divide.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_find.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_find_indexed.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_find_ndim.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hough.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hough_circle.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hough_line.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/invert.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linear.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/max.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/measure.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/min.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiply.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nary.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/profile.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/project.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/relational.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remainder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/round.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sign.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statistic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stats.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subtract.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sum.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unary.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unaryconst.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/arithmetic/hough.h0000664000175000017500000000437012530402247014516 00000000000000/* hough transform * * 7/3/14 * - from hist_find.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_HOUGH_H #define VIPS_HOUGH_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_HOUGH (vips_hough_get_type()) #define VIPS_HOUGH( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_HOUGH, VipsHough )) #define VIPS_HOUGH_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_HOUGH, VipsHoughClass)) #define VIPS_IS_HOUGH( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_HOUGH )) #define VIPS_IS_HOUGH_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_HOUGH )) #define VIPS_HOUGH_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_HOUGH, VipsHoughClass )) typedef struct _VipsHough VipsHough; typedef struct _VipsHoughClass VipsHoughClass; typedef int (*VipsHoughInitAccumulator)( VipsHough *hough, VipsImage *accumulator ); typedef void (*VipsHoughVote)( VipsHough *hough, VipsImage *accumulator, int x, int y ); struct _VipsHough { VipsStatistic parent_instance; /* Sum the thread accumulators to here. */ VipsImage *out; }; struct _VipsHoughClass { VipsStatisticClass parent_class; /* Init an accumulator image. */ VipsHoughInitAccumulator init_accumulator; /* Vote function for this parameter space. */ VipsHoughVote vote; }; GType vips_hough_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_HOUGH_H*/ vips-8.2.2/libvips/arithmetic/subtract.c0000664000175000017500000001574312651122716015240 00000000000000/* Subtract two images * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 29/4/93 J.Cupitt * - now works for partial images * 1/7/93 JC * - adapted for partial v2 * 9/5/95 JC * - simplified: now just handles 10 cases (instead of 50), using * im_clip2*() to help * - now uses im_wrapmany() rather than im_generate() * 12/6/95 JC * - new im_add() adapted to make this * 31/5/96 JC * - what was this SWAP() stuff? failed for small - big! * 22/8/03 JC * - cast up more quickly to help accuracy * 27/9/04 * - updated for 1 band $op n band image -> n band image case * 8/12/06 * - add liboil support * 18/8/08 * - revise upcasting system * - add gtkdoc comments * - remove separate complex case, just double size * 31/7/10 * - remove liboil * 23/8/11 * - rewrite as a class from add.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "binary.h" typedef VipsBinary VipsSubtract; typedef VipsBinaryClass VipsSubtractClass; G_DEFINE_TYPE( VipsSubtract, vips_subtract, VIPS_TYPE_BINARY ); #define LOOP( IN, OUT ) { \ IN * restrict left = (IN *) in[0]; \ IN * restrict right = (IN *) in[1]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = left[x] - right[x]; \ } static void vips_subtract_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = arithmetic->ready[0]; /* Complex just doubles the size. */ const int sz = width * vips_image_get_bands( im ) * (vips_band_format_iscomplex( vips_image_get_format( im ) ) ? 2 : 1); int x; /* Keep types here in sync with bandfmt_subtract[] * below. */ switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: LOOP( signed char, signed short ); break; case VIPS_FORMAT_UCHAR: LOOP( unsigned char, signed short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, signed int ); break; case VIPS_FORMAT_USHORT:LOOP( unsigned short, signed int ); break; case VIPS_FORMAT_INT: LOOP( signed int, signed int ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOP( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for subtraction. Sign and value preserving. Make sure these * match the case statement in vips_subtract_buffer() above. */ static const VipsBandFormat vips_subtract_format_table[10] = { /* UC C US S UI I F X D DX */ S, S, I, I, I, I, F, X, D, DX }; static void vips_subtract_class_init( VipsSubtractClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); object_class->nickname = "subtract"; object_class->description = _( "subtract two images" ); aclass->process_line = vips_subtract_buffer; vips_arithmetic_set_format_table( aclass, vips_subtract_format_table ); } static void vips_subtract_init( VipsSubtract *subtract ) { } /** * vips_subtract: * @in1: input image * @in2: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * This operation calculates @in1 - @in2 and writes the result to @out. * * If the images differ in size, the smaller image is enlarged to match the * larger by adding zero pixels along the bottom and right. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common format (see table * Smallest common format in * arithmetic), then the * following table is used to determine the output type: * * * VipsSubtract type promotion * * * * input type * output type * * * * * uchar * short * * * char * short * * * ushort * int * * * short * int * * * uint * int * * * int * int * * * float * float * * * double * double * * * complex * complex * * * double complex * double complex * * * *
* * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_add(), vips_linear(). * * Returns: 0 on success, -1 on error */ int vips_subtract( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "subtract", ap, left, right, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/hist_find_indexed.c0000664000175000017500000002515312651122636017055 00000000000000/* indexed histogram: use an index image to pick the bins * * 13/10/09 * - from im_histgr.c * 24/3/10 * - gtkdoc * 17/8/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "statistic.h" struct _VipsHistFindIndexed; /* Accumulate a histogram in one of these. */ typedef struct { struct _VipsHistFindIndexed *indexed; VipsRegion *reg; /* Get index pixels with this */ int size; /* Length of bins */ int mx; /* Maximum value we have seen */ double *bins; /* All the bins! */ } Histogram; typedef struct _VipsHistFindIndexed { VipsStatistic parent_instance; VipsImage *index; /* Index image, cast to uchar/ushort. */ VipsImage *index_ready; /* Main image histogram. Subhists accumulate to this. */ Histogram *hist; /* Write hist to this output image. */ VipsImage *out; } VipsHistFindIndexed; typedef VipsStatisticClass VipsHistFindIndexedClass; G_DEFINE_TYPE( VipsHistFindIndexed, vips_hist_find_indexed, VIPS_TYPE_STATISTIC ); static Histogram * histogram_new( VipsHistFindIndexed *indexed ) { VipsStatistic *statistic = VIPS_STATISTIC( indexed ); int bands = statistic->ready->Bands; Histogram *hist; if( !(hist = VIPS_NEW( indexed, Histogram )) ) return( NULL ); hist->indexed = indexed; hist->reg = NULL; hist->size = indexed->index_ready->BandFmt == VIPS_FORMAT_UCHAR ? 256 : 65536; hist->mx = 0; hist->bins = NULL; if( !(hist->bins = VIPS_ARRAY( indexed, bands * hist->size, double )) || !(hist->reg = vips_region_new( indexed->index_ready )) ) return( NULL ); memset( hist->bins, 0, bands * hist->size * sizeof( double ) ); return( hist ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define US VIPS_FORMAT_USHORT /* Type mapping: go to uchar or ushort. */ static const VipsBandFormat vips_hist_find_indexed_format[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, US, US, US, US, US, US }; static int vips_hist_find_indexed_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStatistic *statistic = VIPS_STATISTIC( object ); VipsHistFindIndexed *indexed = (VipsHistFindIndexed *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); g_object_set( object, "out", vips_image_new(), NULL ); /* main hist made on first thread start. */ /* index image must be cast to uchar/ushort. */ if( indexed->index && statistic->in ) { if( vips_check_uncoded( class->nickname, indexed->index ) || vips_check_size_same( class->nickname, indexed->index, statistic->in ) || vips_check_mono( class->nickname, indexed->index ) ) return( -1 ); if( vips_cast( indexed->index, &t[0], vips_hist_find_indexed_format[indexed->index->BandFmt], NULL ) ) return( -1 ); indexed->index_ready = t[0]; } if( statistic->in ) if( vips_check_noncomplex( class->nickname, statistic->in ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_hist_find_indexed_parent_class )-> build( object ) ) return( -1 ); VIPS_UNREF( indexed->hist->reg ); if( vips_image_pipelinev( indexed->out, VIPS_DEMAND_STYLE_ANY, statistic->ready, indexed->index_ready, NULL ) ) return( -1 ); vips_image_init_fields( indexed->out, indexed->hist->mx + 1, 1, statistic->ready->Bands, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_HISTOGRAM, 1.0, 1.0 ); if( vips_image_write_line( indexed->out, 0, (VipsPel *) indexed->hist->bins ) ) return( -1 ); return( 0 ); } static void * vips_hist_find_indexed_start( VipsStatistic *statistic ) { VipsHistFindIndexed *indexed = (VipsHistFindIndexed *) statistic; /* Make the main hist, if necessary. */ if( !indexed->hist ) indexed->hist = histogram_new( indexed ); return( (void *) histogram_new( indexed ) ); } /* Join a sub-hist onto the main hist. */ static int vips_hist_find_indexed_stop( VipsStatistic *statistic, void *seq ) { Histogram *sub_hist = (Histogram *) seq; VipsHistFindIndexed *indexed = (VipsHistFindIndexed *) statistic; Histogram *hist = indexed->hist; int bands = statistic->ready->Bands; int i; /* Add on sub-data. */ hist->mx = VIPS_MAX( hist->mx, sub_hist->mx ); for( i = 0; i < bands * hist->size; i++ ) { hist->bins[i] += sub_hist->bins[i]; sub_hist->bins[i] = 0; } VIPS_UNREF( sub_hist->reg ); return( 0 ); } /* Accumulate a buffer of pels, uchar index. */ #define ACCUMULATE_UCHAR( TYPE ) { \ int x, z; \ TYPE *tv = (TYPE *) in; \ \ for( x = 0; x < n; x++ ) { \ double *bin = hist->bins + i[x] * bands; \ \ for( z = 0; z < bands; z++ ) \ bin[z] += tv[z]; \ \ tv += bands; \ } \ } /* A uchar index image. */ static void vips_hist_find_indexed_uchar_scan( VipsHistFindIndexed *indexed, Histogram *hist, void *in, void *index, int n ) { VipsStatistic *statistic = VIPS_STATISTIC( indexed ); int bands = statistic->ready->Bands; unsigned char *i = (unsigned char *) index; switch( statistic->ready->BandFmt ) { case VIPS_FORMAT_UCHAR: ACCUMULATE_UCHAR( unsigned char ); break; case VIPS_FORMAT_CHAR: ACCUMULATE_UCHAR( signed char ); break; case VIPS_FORMAT_USHORT: ACCUMULATE_UCHAR( unsigned short ); break; case VIPS_FORMAT_SHORT: ACCUMULATE_UCHAR( signed short ); break; case VIPS_FORMAT_UINT: ACCUMULATE_UCHAR( unsigned int ); break; case VIPS_FORMAT_INT: ACCUMULATE_UCHAR( signed int ); break; case VIPS_FORMAT_FLOAT: ACCUMULATE_UCHAR( float ); break; case VIPS_FORMAT_DOUBLE: ACCUMULATE_UCHAR( double ); break; default: g_assert_not_reached(); } /* Max is always 255. */ hist->mx = 255; } /* Accumulate a buffer of pels, ushort index. */ #define ACCUMULATE_USHORT( TYPE ) { \ int x, z; \ TYPE *tv = (TYPE *) in; \ \ for( x = 0; x < n; x++ ) { \ int ix = i[x]; \ double *bin = hist->bins + ix * bands; \ \ if( ix > mx ) \ mx = ix; \ \ for( z = 0; z < bands; z++ ) \ bin[z] += tv[z]; \ \ tv += bands; \ } \ } /* A ushort index image. */ static void vips_hist_find_indexed_ushort_scan( VipsHistFindIndexed *indexed, Histogram *hist, void *in, void *index, int n ) { VipsStatistic *statistic = VIPS_STATISTIC( indexed ); int bands = statistic->ready->Bands; unsigned short *i = (unsigned short *) index; int mx; mx = hist->mx; switch( statistic->ready->BandFmt ) { case VIPS_FORMAT_UCHAR: ACCUMULATE_USHORT( unsigned char ); break; case VIPS_FORMAT_CHAR: ACCUMULATE_USHORT( signed char ); break; case VIPS_FORMAT_USHORT: ACCUMULATE_USHORT( unsigned short ); break; case VIPS_FORMAT_SHORT: ACCUMULATE_USHORT( signed short ); break; case VIPS_FORMAT_UINT: ACCUMULATE_USHORT( unsigned int ); break; case VIPS_FORMAT_INT: ACCUMULATE_USHORT( signed int ); break; case VIPS_FORMAT_FLOAT: ACCUMULATE_USHORT( float ); break; case VIPS_FORMAT_DOUBLE: ACCUMULATE_USHORT( double ); break; default: g_assert_not_reached(); } /* Note the maximum. */ hist->mx = mx; } typedef void (*VipsHistFindIndexedScanFn)( VipsHistFindIndexed *indexed, Histogram *hist, void *in, void *index, int n ); static int vips_hist_find_indexed_scan( VipsStatistic *statistic, void *seq, int x, int y, void *in, int n ) { Histogram *hist = (Histogram *) seq; VipsHistFindIndexed *indexed = (VipsHistFindIndexed *) statistic; VipsRect r = { x, y, n, 1 }; VipsHistFindIndexedScanFn scan; /* Need the corresponding area of the index image. */ if( vips_region_prepare( hist->reg, &r ) ) return( -1 ); if( indexed->index_ready->BandFmt == VIPS_FORMAT_UCHAR ) scan = vips_hist_find_indexed_uchar_scan; else scan = vips_hist_find_indexed_ushort_scan; scan( indexed, hist, in, VIPS_REGION_ADDR( hist->reg, x, y ), n ); return( 0 ); } static void vips_hist_find_indexed_class_init( VipsHistFindIndexedClass *class ) { GObjectClass *gobject_class = (GObjectClass *) class; VipsObjectClass *object_class = (VipsObjectClass *) class; VipsStatisticClass *sclass = VIPS_STATISTIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_find_indexed"; object_class->description = _( "find indexed image histogram" ); object_class->build = vips_hist_find_indexed_build; sclass->start = vips_hist_find_indexed_start; sclass->scan = vips_hist_find_indexed_scan; sclass->stop = vips_hist_find_indexed_stop; VIPS_ARG_IMAGE( class, "index", 90, _( "Index" ), _( "Index image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistFindIndexed, index ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output histogram" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistFindIndexed, out ) ); } static void vips_hist_find_indexed_init( VipsHistFindIndexed *hist_find ) { } /** * vips_hist_find_indexed: * @in: input image * @index: input index image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Make a histogram of @in, but use image @index to pick the bins. In other * words, element zero in @out contains the sum of all the pixels in @in * whose corresponding pixel in @index is zero. * * @index must have just one band and be u8 or u16. @in must be * non-complex. @out always has the same size and format as @in. * * This operation is useful in conjunction with vips_labelregions(). You can * use it to find the centre of gravity of blobs in an image, for example. * * See also: vips_hist_find(), vips_labelregions(). * * Returns: 0 on success, -1 on error */ int vips_hist_find_indexed( VipsImage *in, VipsImage *index, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_find_indexed", ap, in, index, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/arithmetic/math.c0000664000175000017500000002575012651122657014345 00000000000000/* VipsMath --- call various -lm functions (trig, log etc.) on images * * Copyright: 1990, N. Dessipris, based on im_powtra() * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 5/5/93 JC * - adapted from im_lintra to work with partial images * - incorrect implementation of complex logs removed * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 24/2/95 JC * - im_logtra() adapted to make im_sintra() * - adapted for im_wrapone() * 26/1/96 JC * - im_asintra() added * 30/8/09 * - gtkdoc * - tiny cleanups * - use im__math() * 19/9/09 * - im_sintra() adapted to make math.c * 4/11/11 * - redone as a class * 11/8/15 * - log/log10 zero-avoid */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "unary.h" typedef struct _VipsMath { VipsUnary parent_instance; VipsOperationMath math; } VipsMath; typedef VipsUnaryClass VipsMathClass; G_DEFINE_TYPE( VipsMath, vips_math, VIPS_TYPE_UNARY ); static int vips_math_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsUnary *unary = (VipsUnary *) object; if( unary->in && vips_check_noncomplex( class->nickname, unary->in ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_math_parent_class )->build( object ) ) return( -1 ); return( 0 ); } #define LOOP( IN, OUT, OP ) { \ IN * restrict p = (IN *) in[0]; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = OP( p[x] ); \ } #define SWITCH( OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: \ LOOP( unsigned char, float, OP ); break; \ case VIPS_FORMAT_CHAR: \ LOOP( signed char, float, OP ); break; \ case VIPS_FORMAT_USHORT: \ LOOP( unsigned short, float, OP ); break; \ case VIPS_FORMAT_SHORT: \ LOOP( signed short, float, OP ); break; \ case VIPS_FORMAT_UINT: \ LOOP( unsigned int, float, OP ); break; \ case VIPS_FORMAT_INT: \ LOOP( signed int, float, OP ); break; \ case VIPS_FORMAT_FLOAT: \ LOOP( float, float, OP ); break; \ case VIPS_FORMAT_DOUBLE: \ LOOP( double, double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } /* sin/cos/tan in degrees. */ #define DSIN( X ) (sin( VIPS_RAD( X ) )) #define DCOS( X ) (cos( VIPS_RAD( X ) )) #define DTAN( X ) (tan( VIPS_RAD( X ) )) #define ADSIN( X ) (VIPS_DEG( asin( X ) )) #define ADCOS( X ) (VIPS_DEG( acos( X ) )) #define ADTAN( X ) (VIPS_DEG( atan( X ) )) /* exp10() is a gnu extension, use pow(). */ #define EXP10( X ) (pow( 10.0, (X) )) /* Zero-avoiding log, cf. zero-avoiding behaviour of /. */ #define LOGZ( X ) ((X) == 0.0 ? 0.0 : log( X )) #define LOGZ10( X ) ((X) == 0.0 ? 0.0 : log10( X )) static void vips_math_buffer( VipsArithmetic *arithmetic, VipsPel *out, VipsPel **in, int width ) { VipsMath *math = (VipsMath *) arithmetic; VipsImage *im = arithmetic->ready[0]; const int sz = width * vips_image_get_bands( im ); int x; switch( math->math ) { case VIPS_OPERATION_MATH_SIN: SWITCH( DSIN ); break; case VIPS_OPERATION_MATH_COS: SWITCH( DCOS ); break; case VIPS_OPERATION_MATH_TAN: SWITCH( DTAN ); break; case VIPS_OPERATION_MATH_ASIN: SWITCH( ADSIN ); break; case VIPS_OPERATION_MATH_ACOS: SWITCH( ADCOS ); break; case VIPS_OPERATION_MATH_ATAN: SWITCH( ADTAN ); break; case VIPS_OPERATION_MATH_LOG: SWITCH( LOGZ ); break; case VIPS_OPERATION_MATH_LOG10: SWITCH( LOGZ10 ); break; case VIPS_OPERATION_MATH_EXP: SWITCH( exp ); break; case VIPS_OPERATION_MATH_EXP10: SWITCH( EXP10 ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_math_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, X, D, DX }; static void vips_math_class_init( VipsMathClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsArithmeticClass *aclass = VIPS_ARITHMETIC_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "math"; object_class->description = _( "apply a math operation to an image" ); object_class->build = vips_math_build; aclass->process_line = vips_math_buffer; vips_arithmetic_set_format_table( aclass, vips_math_format_table ); VIPS_ARG_ENUM( class, "math", 200, _( "Operation" ), _( "math to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMath, math ), VIPS_TYPE_OPERATION_MATH, VIPS_OPERATION_MATH_SIN ); } static void vips_math_init( VipsMath *math ) { } static int vips_mathv( VipsImage *in, VipsImage **out, VipsOperationMath math, va_list ap ) { return( vips_call_split( "math", ap, in, out, math ) ); } /** * vips_math: * @in: input #VipsImage * @out: output #VipsImage * @math: math operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various functions in -lm, the maths library, on images. * * Angles are expressed in degrees. The output type is float unless the * input is double, in which case the output is double. * * Non-complex images only. * * See also: vips_math2(). * * Returns: 0 on success, -1 on error */ int vips_math( VipsImage *in, VipsImage **out, VipsOperationMath math, ... ) { va_list ap; int result; va_start( ap, math ); result = vips_mathv( in, out, math, ap ); va_end( ap ); return( result ); } /** * vips_sin: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_SIN on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_sin( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_SIN, ap ); va_end( ap ); return( result ); } /** * vips_cos: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_COS on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_cos( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_COS, ap ); va_end( ap ); return( result ); } /** * vips_tan: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_TAN on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_tan( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_TAN, ap ); va_end( ap ); return( result ); } /** * vips_asin: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_ASIN on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_asin( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_ASIN, ap ); va_end( ap ); return( result ); } /** * vips_acos: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_ACOS on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_acos( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_ACOS, ap ); va_end( ap ); return( result ); } /** * vips_atan: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_ATAN on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_atan( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_ATAN, ap ); va_end( ap ); return( result ); } /** * vips_log: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_LOG on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_log( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_LOG, ap ); va_end( ap ); return( result ); } /** * vips_log10: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_LOG10 on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_log10( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_LOG10, ap ); va_end( ap ); return( result ); } /** * vips_exp: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_EXP on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_exp( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_EXP, ap ); va_end( ap ); return( result ); } /** * vips_exp10: * @in: input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_MATH_EXP10 on an image. See vips_math(). * * Returns: 0 on success, -1 on error */ int vips_exp10( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_mathv( in, out, VIPS_OPERATION_MATH_EXP10, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/mosaicing/0000775000175000017500000000000012651721506013135 500000000000000vips-8.2.2/libvips/mosaicing/pmosaicing.h0000664000175000017500000001341212530402247015352 00000000000000/* Local definitions used by the mosaicing program * If IM_MAXPOINTS change please ensure that it is still a multiple of * AREAS or else AREAS must change as well. Initial setup is for * IM_MAXPOINTS = 60, AREAS = 3. * * Copyright: 1990, 1991 N. Dessipris * Author: Nicos Dessipris * Written on: 07/11/1989 * Modified on : 29/11/1989 */ /* Copyright (C) 1991-2003 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Number of entries in blend table. As a power of two as well, for >>ing. */ #define BLEND_SHIFT (10) #define BLEND_SIZE (1< #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pmosaicing.h" /* Return the position of the first non-zero pel from the top. */ static int find_top( REGION *ir, int *pos, int x, int y, int h ) { VipsPel *pr = IM_REGION_ADDR( ir, x, y ); IMAGE *im = ir->im; int ls = IM_REGION_LSKIP( ir ) / IM_IMAGE_SIZEOF_ELEMENT( im ); int b = im->Bands; int i, j; /* Double the number of bands in a complex. */ if( vips_band_format_iscomplex( im->BandFmt ) ) b *= 2; /* Search for the first non-zero band element from the top edge of the image. */ #define tsearch( TYPE ) { \ TYPE *p = (TYPE *) pr; \ \ for( i = 0; i < h; i++ ) { \ for( j = 0; j < b; j++ ) \ if( p[j] ) \ break; \ if( j < b ) \ break; \ \ p += ls; \ } \ } switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: tsearch( unsigned char ); break; case IM_BANDFMT_CHAR: tsearch( signed char ); break; case IM_BANDFMT_USHORT: tsearch( unsigned short ); break; case IM_BANDFMT_SHORT: tsearch( signed short ); break; case IM_BANDFMT_UINT: tsearch( unsigned int ); break; case IM_BANDFMT_INT: tsearch( signed int ); break; case IM_BANDFMT_FLOAT: tsearch( float ); break; case IM_BANDFMT_DOUBLE: tsearch( double ); break; case IM_BANDFMT_COMPLEX:tsearch( float ); break; case IM_BANDFMT_DPCOMPLEX:tsearch( double ); break; default: im_error( "im_tbmerge", "%s", _( "internal error" ) ); return( -1 ); } *pos = y + i; return( 0 ); } /* Return the position of the first non-zero pel from the bottom. */ static int find_bot( REGION *ir, int *pos, int x, int y, int h ) { VipsPel *pr = IM_REGION_ADDR( ir, x, y ); IMAGE *im = ir->im; int ls = IM_REGION_LSKIP( ir ) / IM_IMAGE_SIZEOF_ELEMENT( ir->im ); int b = im->Bands; int i, j; /* Double the number of bands in a complex. */ if( vips_band_format_iscomplex( im->BandFmt ) ) b *= 2; /* Search for the first non-zero band element from the top edge of the image. */ #define rsearch( TYPE ) { \ TYPE *p = (TYPE *) pr + (h - 1) * ls; \ \ for( i = h - 1; i >= 0; i-- ) { \ for( j = 0; j < b; j++ ) \ if( p[j] ) \ break; \ if( j < b ) \ break; \ \ p -= ls; \ } \ } switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: rsearch( unsigned char ); break; case IM_BANDFMT_CHAR: rsearch( signed char ); break; case IM_BANDFMT_USHORT: rsearch( unsigned short ); break; case IM_BANDFMT_SHORT: rsearch( signed short ); break; case IM_BANDFMT_UINT: rsearch( unsigned int ); break; case IM_BANDFMT_INT: rsearch( signed int ); break; case IM_BANDFMT_FLOAT: rsearch( float ); break; case IM_BANDFMT_DOUBLE: rsearch( double ); break; case IM_BANDFMT_COMPLEX:rsearch( float ); break; case IM_BANDFMT_DPCOMPLEX:rsearch( double ); break; default: im_error( "im_tbmerge", "%s", _( "internal error" ) ); return( -1 ); } *pos = y + i; return( 0 ); } /* Make first/last for oreg. */ static int make_firstlast( MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; Rect rr, sr; int x; int missing; /* We're going to build first/last ... lock it from other generate * threads. In fact it's harmless if we do get two writers, but we may * avoid duplicating work. */ g_mutex_lock( ovlap->fl_lock ); /* Do we already have first/last for this area? Bail out if we do. */ missing = 0; for( x = oreg->left; x < IM_RECT_RIGHT( oreg ); x++ ) { const int j = x - ovlap->overlap.left; const int first = ovlap->first[j]; if( first < 0 ) { missing = 1; break; } } if( !missing ) { /* No work to do! */ g_mutex_unlock( ovlap->fl_lock ); return( 0 ); } /* Entire height of overlap in ref for oreg ... we know oreg is inside * overlap. */ rr.left = oreg->left; rr.top = ovlap->overlap.top; rr.width = oreg->width; rr.height = ovlap->overlap.height; rr.left -= ovlap->rarea.left; rr.top -= ovlap->rarea.top; /* Same in sec. */ sr.left = oreg->left; sr.top = ovlap->overlap.top; sr.width = oreg->width; sr.height = ovlap->overlap.height; sr.left -= ovlap->sarea.left; sr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &rr ) || im_prepare( sir, &sr ) ) { g_mutex_unlock( ovlap->fl_lock ); return( -1 ); } /* Make first/last cache. */ for( x = 0; x < oreg->width; x++ ) { const int j = (x + oreg->left) - ovlap->overlap.left; int *first = &ovlap->first[j]; int *last = &ovlap->last[j]; /* Done this line already? */ if( *first < 0 ) { /* Search for top/bottom of overlap on this scan-line. */ if( find_top( sir, first, x + sr.left, sr.top, sr.height ) || find_bot( rir, last, x + rr.left, rr.top, rr.height ) ) { g_mutex_unlock( ovlap->fl_lock ); return( -1 ); } /* Translate to output space. */ *first += ovlap->sarea.top; *last += ovlap->rarea.top; /* Clip to maximum blend width, if necessary. */ if( ovlap->mwidth >= 0 && *last - *first > ovlap->mwidth ) { int shrinkby = (*last - *first) - ovlap->mwidth; *first += shrinkby / 2; *last -= shrinkby / 2; } } } g_mutex_unlock( ovlap->fl_lock ); return( 0 ); } /* Test pixel == 0. */ #define TEST_ZERO( TYPE, T, RESULT ) { \ TYPE *tt = (T); \ int ii; \ \ for( ii = 0; ii < cb; ii++ ) \ if( tt[i] ) \ break; \ if( ii == cb ) \ (RESULT) = 1; \ } /* Blend two integer images ... one scan-line. */ #define iblend( TYPE, B, IN1, IN2, OUT ) { \ TYPE *tr = (TYPE *) (IN1); \ TYPE *ts = (TYPE *) (IN2); \ TYPE *tq = (TYPE *) (OUT); \ const int cb = (B); \ int ref_zero; \ int sec_zero; \ int x, b; \ int i; \ \ for( i = 0, x = 0; x < oreg->width; x++ ) { \ ref_zero = 0; \ sec_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ TEST_ZERO( TYPE, ts, sec_zero ); \ \ /* Above the bottom image? \ */ \ if( y < first[x] ) { \ if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ /* To the right? \ */ \ else if( y >= last[x] ) { \ if( !sec_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ } \ /* In blend area. \ */ \ else { \ if( !ref_zero && !sec_zero ) { \ const int bheight = last[x] - first[x]; \ const int inx = ((y - first[x]) << \ BLEND_SHIFT) / bheight; \ int c1 = im__icoef1[inx]; \ int c2 = im__icoef2[inx]; \ \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = c1*tr[i] / BLEND_SCALE + \ c2*ts[i] / BLEND_SCALE; \ } \ else if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ } \ } /* Blend two float images. */ #define fblend( TYPE, B, IN1, IN2, OUT ) { \ TYPE *tr = (TYPE *) (IN1); \ TYPE *ts = (TYPE *) (IN2); \ TYPE *tq = (TYPE *) (OUT); \ int ref_zero; \ int sec_zero; \ const int cb = (B); \ int x, b; \ int i; \ \ for( i = 0, x = 0; x < oreg->width; x++ ) { \ ref_zero = 0; \ sec_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ TEST_ZERO( TYPE, ts, sec_zero ); \ \ /* Above the bottom image? \ */ \ if( y < first[x] ) \ if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ /* To the right? \ */ \ else if( y >= last[x] ) \ if( !sec_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ /* In blend area. \ */ \ else { \ if( !ref_zero && !sec_zero ) { \ const int bheight = last[x] - first[x]; \ const int inx = ((y - first[x]) << \ BLEND_SHIFT) / bheight; \ double c1 = im__coef1[inx]; \ double c2 = im__coef2[inx]; \ \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = c1 * tr[i] + c2 * ts[i]; \ } \ else if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ } \ } /* Top-bottom blend function for non-labpack images. */ static int tb_blend( REGION *or, MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; IMAGE *im = or->im; Rect prr, psr; int y, yr, ys; /* Make sure we have a complete first/last set for this area. */ if( make_firstlast( inf, ovlap, oreg ) ) return( -1 ); /* Part of rr which we will output. */ prr = *oreg; prr.left -= ovlap->rarea.left; prr.top -= ovlap->rarea.top; /* Part of sr which we will output. */ psr = *oreg; psr.left -= ovlap->sarea.left; psr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &prr ) ) return( -1 ); if( im_prepare( sir, &psr ) ) return( -1 ); /* Loop down overlap area. */ for( y = oreg->top, yr = prr.top, ys = psr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { VipsPel *pr = IM_REGION_ADDR( rir, prr.left, yr ); VipsPel *ps = IM_REGION_ADDR( sir, psr.left, ys ); VipsPel *q = IM_REGION_ADDR( or, oreg->left, y ); const int j = oreg->left - ovlap->overlap.left; const int *first = ovlap->first + j; const int *last = ovlap->last + j; switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: iblend( unsigned char, im->Bands, pr, ps, q ); break; case IM_BANDFMT_CHAR: iblend( signed char, im->Bands, pr, ps, q ); break; case IM_BANDFMT_USHORT: iblend( unsigned short, im->Bands, pr, ps, q ); break; case IM_BANDFMT_SHORT: iblend( signed short, im->Bands, pr, ps, q ); break; case IM_BANDFMT_UINT: iblend( unsigned int, im->Bands, pr, ps, q ); break; case IM_BANDFMT_INT: iblend( signed int, im->Bands, pr, ps, q ); break; case IM_BANDFMT_FLOAT: fblend( float, im->Bands, pr, ps, q ); break; case IM_BANDFMT_DOUBLE: fblend( double, im->Bands, pr, ps, q ); break; case IM_BANDFMT_COMPLEX: fblend( float, im->Bands*2, pr, ps, q ); break; case IM_BANDFMT_DPCOMPLEX: fblend( double, im->Bands*2, pr, ps, q ); break; default: im_error( "im_tbmerge", "%s", _( "internal error" ) ); return( -1 ); } } return( 0 ); } /* Top-bottom blend function for IM_CODING_LABQ images. */ static int tb_blend_labpack( REGION *or, MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; Rect prr, psr; int y, yr, ys; /* Make sure we have a complete first/last set for this area. This * will just look at the top 8 bits of L, not all 10, but should be OK. */ if( make_firstlast( inf, ovlap, oreg ) ) return( -1 ); /* Part of rr which we will output. */ prr = *oreg; prr.left -= ovlap->rarea.left; prr.top -= ovlap->rarea.top; /* Part of sr which we will output. */ psr = *oreg; psr.left -= ovlap->sarea.left; psr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &prr ) ) return( -1 ); if( im_prepare( sir, &psr ) ) return( -1 ); /* Loop down overlap area. */ for( y = oreg->top, yr = prr.top, ys = psr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { VipsPel *pr = IM_REGION_ADDR( rir, prr.left, yr ); VipsPel *ps = IM_REGION_ADDR( sir, psr.left, ys ); VipsPel *q = IM_REGION_ADDR( or, oreg->left, y ); const int j = oreg->left - ovlap->overlap.left; const int *first = ovlap->first + j; const int *last = ovlap->last + j; float *fq = inf->merge; float *r = inf->from1; float *s = inf->from2; /* Unpack two bits we want. */ vips__LabQ2Lab_vec( r, pr, oreg->width ); vips__LabQ2Lab_vec( s, ps, oreg->width ); /* Blend as floats. */ fblend( float, 3, r, s, fq ); /* Re-pack to output buffer. */ vips__Lab2LabQ_vec( q, inf->merge, oreg->width ); } return( 0 ); } /* Build per-call state. */ static Overlapping * build_tbstate( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { Overlapping *ovlap; if( !(ovlap = im__build_mergestate( "im_tbmerge", ref, sec, out, dx, dy, mwidth )) ) return( NULL ); /* Select blender. */ switch( ovlap->ref->Coding ) { case IM_CODING_LABQ: ovlap->blend = tb_blend_labpack; break; case IM_CODING_NONE: ovlap->blend = tb_blend; break; default: im_error( "im_tbmerge", "%s", _( "unknown coding type" ) ); return( NULL ); } /* Find the parts of output which come just from ref and just from sec. */ ovlap->rpart = ovlap->rarea; ovlap->spart = ovlap->sarea; ovlap->rpart.height -= ovlap->overlap.height; ovlap->spart.top += ovlap->overlap.height; ovlap->spart.height -= ovlap->overlap.height; /* Is there too much overlap? ie. bottom edge of ref image is greater * than bottom edge of sec image, or top edge of ref > top edge of * sec. */ if( IM_RECT_BOTTOM( &ovlap->rarea ) > IM_RECT_BOTTOM( &ovlap->sarea ) || ovlap->rarea.top > ovlap->sarea.top ) { im_error( "im_tbmerge", "%s", _( "too much overlap" ) ); return( NULL ); } /* Max number of pixels we may have to blend together. */ ovlap->blsize = ovlap->overlap.width; return( ovlap ); } int im__tbmerge( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { Overlapping *ovlap; if( dy > 0 || dy < 1 - ref->Ysize ) { /* No overlap, use insert instead. */ if( im_insert( ref, sec, out, -dx, -dy ) ) return( -1 ); out->Xoffset = -dx; out->Yoffset = -dy; return( 0 ); } /* Build state for this join. */ if( !(ovlap = build_tbstate( ref, sec, out, dx, dy, mwidth )) ) return( -1 ); /* Prepare the output IMAGE. */ if( im_cp_descv( out, ref, sec, NULL ) ) return( -1 ); out->Xsize = ovlap->oarea.width; out->Ysize = ovlap->oarea.height; out->Xoffset = ovlap->sarea.left; out->Yoffset = ovlap->sarea.top; /* Set demand hints. */ if( im_demand_hint( out, IM_THINSTRIP, ref, sec, NULL ) ) return( -1 ); /* Generate! */ if( im_generate( out, im__start_merge, im__merge_gen, im__stop_merge, ovlap, NULL ) ) return( -1 ); return ( 0 ); } int im_tbmerge( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { if( im__tbmerge( ref, sec, out, dx, dy, mwidth ) ) return( -1 ); im__add_mosaic_name( out ); if( im_histlin( out, "#TBJOIN <%s> <%s> <%s> <%d> <%d> <%d>", im__get_mosaic_name( ref ), im__get_mosaic_name( sec ), im__get_mosaic_name( out ), -dx, -dy, mwidth ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/mosaicing/im_improve.c0000664000175000017500000001174012530402247015364 00000000000000/* @(#) Function which improves the selection of tiepoints carried out by * @(#) im_clinear() until no points have deviation greater than 1 pixel * @(#) No reference or secondary images are involved * @(#) Function im_improve assumes that im_clinear has been applied on points * @(#) No IMAGES are involved in this function and the result is * @(#) returned in outpoints which is declared as a pointer in the * @(#) calling routine. Space for outpoints should be allocated in the calling * @(#) routine * @(#) * @(#) int im_improve( inpoints, outpoints ) * @(#) TIE_POINTS *inpoints, *outpoints; * @(#) * @(#) Returns 0 on sucess and -1 on error. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" static void copypoints( TIE_POINTS *pnew, TIE_POINTS *pold ) { int i; pnew->reference = pold->reference; pnew->secondary = pold->secondary; pnew->deltax = pold->deltax; pnew->deltay = pold->deltay; pnew->nopoints = pold->nopoints; pnew->halfcorsize = pold->halfcorsize; pnew->halfareasize = pold->halfareasize; for( i = 0; i < pold->nopoints; i++ ) { pnew->x_reference[i] = pold->x_reference[i]; pnew->y_reference[i] = pold->y_reference[i]; pnew->x_secondary[i] = pold->x_secondary[i]; pnew->y_secondary[i] = pold->y_secondary[i]; pnew->contrast[i] = pold->contrast[i]; pnew->correlation[i] = pold->correlation[i]; pnew->deviation[i] = pold->deviation[i]; pnew->dx[i] = pold->dx[i]; pnew->dy[i] = pold->dy[i]; } pnew->l_scale = pold->l_scale; pnew->l_angle = pold->l_angle; pnew->l_deltax = pold->l_deltax; pnew->l_deltay = pold->l_deltay; } /* exclude all points with deviation greater or equal to 1.0 pixel */ static int copydevpoints( TIE_POINTS *pnew, TIE_POINTS *pold ) { int i; int j; double thresh_dev,max_dev, min_dev; double *corr; min_dev = 9999.0; max_dev = 0.0; corr = &pold->correlation[0]; for( i = 0; i < pold->nopoints; i++ ) if( corr[i] > 0.01 ) { if( pold->deviation[i]/corr[i] < min_dev ) min_dev = pold->deviation[i]/corr[i] ; if( pold->deviation[i]/corr[i] > max_dev ) max_dev = pold->deviation[i]/corr[i]; } thresh_dev = min_dev + (max_dev - min_dev)*0.3; if( thresh_dev <= 1.0 ) thresh_dev = 1.0; for( i = 0, j = 0; i < pold->nopoints; i++ ) if( pold->correlation[i] > 0.01 ) if( pold->deviation[i]/corr[i] <= thresh_dev ) { pnew->x_reference[j] = pold->x_reference[i]; pnew->y_reference[j] = pold->y_reference[i]; pnew->x_secondary[j] = pold->x_secondary[i]; pnew->y_secondary[j] = pold->y_secondary[i]; pnew->contrast[j] = pold->contrast[i]; pnew->correlation[j] = pold->correlation[i]; pnew->deviation[j] = pold->deviation[i]; pnew->dx[j] = pold->dx[i]; pnew->dy[j] = pold->dy[i]; j++; } pnew->nopoints = j; for( i = j; i < IM_MAXPOINTS; i++ ) { pnew->x_reference[i] = 0; pnew->y_reference[i] = 0; pnew->x_secondary[i] = 0; pnew->y_secondary[i] = 0; pnew->contrast[i] = 0; pnew->correlation[i] = 0.0; pnew->deviation[i] = 0.0; pnew->dx[i] = 0.0; pnew->dy[i] = 0.0; } /* Return non-zero if we changed something. */ if( j != pold->nopoints ) return( -1 ); return( 0 ); } int im__improve( TIE_POINTS *inpoints, TIE_POINTS *outpoints ) { TIE_POINTS points1, points2; TIE_POINTS *p = &points1; TIE_POINTS *q = &points2; /* p has the current state - make a new state, q, with only those * points which have a small deviation. */ for( copypoints( p, inpoints ); copypoints( q, p ), copydevpoints( q, p ); ) { /* If there are only a few left, jump out. */ if( q->nopoints < 2 ) break; /* Fit the model to the new set of points. */ if( im__clinear( q ) ) return( -1 ); /* And loop. */ IM_SWAP( void *, p, q ); } /* q has the output - copy to outpoints. */ copypoints( outpoints, q ); return( 0 ); } vips-8.2.2/libvips/mosaicing/im_chkpair.c0000664000175000017500000001340712530402247015326 00000000000000/* find image overlaps * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : 18/04/1991 * 8/7/93 JC * - allows IM_CODING_LABQ coding * - now calls im_incheck() * 13/7/95 JC * - rewritten * - now uses im_spcor() * 13/8/96 JC * - order of args changed to help C++ API * 24/1/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" /** * im_correl: * @ref: reference image * @sec: secondary image * @xref: position in reference image * @yref: position in reference image * @xsec: position in secondary image * @ysec: position in secondary image * @hwindowsize: half window size * @hsearchsize: half search size * @correlation: return detected correlation * @x: return found position * @y: return found position * * This operation finds the position of @sec within @ref. * * The area around * (@xsec, @ysec) is searched for the best match to the area around (@xref, * @yref). It searches an area of size @hsearchsize for a * match of size @hwindowsize. The position of the best match is * returned, together with the correlation at that point. * * Only the first band of each image is correlated. @ref and @sec may be * very large --- the function extracts and generates just the * parts needed. Correlation is done with im_spcor(); the position of * the maximum is found with im_maxpos(). * * See also: im_match_linear(), im_match_linear_search(), im_lrmosaic(). * * Returns: 0 on success, -1 on error */ int im_correl( IMAGE *ref, IMAGE *sec, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, double *correlation, int *x, int *y ) { IMAGE *surface = im_open( "surface", "t" ); IMAGE *t1, *t2, *t3, *t4; Rect refr, secr; Rect winr, srhr; Rect wincr, srhcr; if( !surface || !(t1 = im_open_local( surface, "correlate:1", "p" )) || !(t2 = im_open_local( surface, "correlate:1", "p" )) || !(t3 = im_open_local( surface, "correlate:1", "p" )) || !(t4 = im_open_local( surface, "correlate:1", "p" )) ) return( -1 ); /* Find position of window and search area, and clip against image * size. */ refr.left = 0; refr.top = 0; refr.width = ref->Xsize; refr.height = ref->Ysize; winr.left = xref - hwindowsize; winr.top = yref - hwindowsize; winr.width = hwindowsize*2 + 1; winr.height = hwindowsize*2 + 1; im_rect_intersectrect( &refr, &winr, &wincr ); secr.left = 0; secr.top = 0; secr.width = sec->Xsize; secr.height = sec->Ysize; srhr.left = xsec - hsearchsize; srhr.top = ysec - hsearchsize; srhr.width = hsearchsize*2 + 1; srhr.height = hsearchsize*2 + 1; im_rect_intersectrect( &secr, &srhr, &srhcr ); /* Extract window and search area. */ if( im_extract_area( ref, t1, wincr.left, wincr.top, wincr.width, wincr.height ) || im_extract_area( sec, t2, srhcr.left, srhcr.top, srhcr.width, srhcr.height ) ) { im_close( surface ); return( -1 ); } /* Make sure we have just one band. From im_*mosaic() we will, but * from im_match_linear_search() etc. we may not. */ if( t1->Bands != 1 ) { if( im_extract_band( t1, t3, 0 ) ) { im_close( surface ); return( -1 ); } t1 = t3; } if( t2->Bands != 1 ) { if( im_extract_band( t2, t4, 0 ) ) { im_close( surface ); return( -1 ); } t2 = t4; } /* Search! */ if( im_spcor( t2, t1, surface ) ) { im_close( surface ); return( -1 ); } /* Find maximum of correlation surface. */ if( im_maxpos( surface, x, y, correlation ) ) { im_close( surface ); return( -1 ); } im_close( surface ); /* Translate back to position within sec. */ *x += srhcr.left; *y += srhcr.top; return( 0 ); } int im__chkpair( IMAGE *ref, IMAGE *sec, TIE_POINTS *points ) { int i; int x, y; double correlation; const int hcor = points->halfcorsize; const int harea = points->halfareasize; /* Check images. */ if( im_incheck( ref ) || im_incheck( sec ) ) return( -1 ); if( ref->Bands != sec->Bands || ref->BandFmt != sec->BandFmt || ref->Coding != sec->Coding ) { im_error( "im_chkpair", "%s", _( "inputs incompatible" ) ); return( -1 ); } if( ref->Bands != 1 || ref->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im_chkpair", "%s", _( "help!" ) ); return( -1 ); } for( i = 0; i < points->nopoints; i++ ) { /* Find correlation point. */ if( im_correl( ref, sec, points->x_reference[i], points->y_reference[i], points->x_reference[i], points->y_reference[i], hcor, harea, &correlation, &x, &y ) ) return( -1 ); /* And note in x_secondary. */ points->x_secondary[i] = x; points->y_secondary[i] = y; points->correlation[i] = correlation; /* Note each dx, dy too. */ points->dx[i] = points->x_secondary[i] - points->x_reference[i]; points->dy[i] = points->y_secondary[i] - points->y_reference[i]; } return( 0 ); } vips-8.2.2/libvips/mosaicing/im_lrmosaic.c0000664000175000017500000001555112530402247015520 00000000000000/* join left-right with an approximate overlap * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 07/11/1989 * Modified on : 29/11/1989, 18/04/1991 * * * Modified and debugged by Ahmed Abbood . 1995 * 14/6/95 JC * - rewritten for new balance ideas * - more bug-fixes * 1/11/95 JC * - frees memory used by analysis phase as soon as possible * - means large mosaics use significantly less peak memory * 26/3/96 JC * - now calls im_lrmerge() rather than im__lrmerge() * 2/2/01 JC * - added tunable max blend width * 24/2/05 * - im_scale() makes it work for any image type * 25/1/11 * - gtk-doc * - remove balance stuff * - any mix of types and bands * - cleanups */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pmosaicing.h" #ifdef DEBUG static void im__print_mdebug( TIE_POINTS *points ) { int i; double adx = 0.0; double ady = 0.0; double acor = 0.0; for( i = 0; i < points->nopoints; i++ ) { adx += points->dx[i]; ady += points->dy[i]; acor += points->correlation[i]; } adx = adx / (double) points->nopoints; ady = ady / (double) points->nopoints; acor = acor / (double) points->nopoints; printf( "points: %d\n", points->nopoints ); printf( "average dx, dy: %g %g\n", adx, ady ); printf( "average correlation: %g\n", acor ); printf( "deltax, deltay: %g %g\n", points->l_deltax, points->l_deltay ); } #endif /*DEBUG*/ int im__find_lroverlap( IMAGE *ref_in, IMAGE *sec_in, IMAGE *out, int bandno_in, int xref, int yref, int xsec, int ysec, int halfcorrelation, int halfarea, int *dx0, int *dy0, double *scale1, double *angle1, double *dx1, double *dy1 ) { Rect left, right, overlap; IMAGE *ref, *sec; IMAGE *t[6]; TIE_POINTS points, *p_points; TIE_POINTS newpoints, *p_newpoints; int dx, dy; int i; /* Test cor and area. */ if( halfcorrelation < 0 || halfarea < 0 || halfarea < halfcorrelation ) { im_error( "im_lrmosaic", "%s", _( "bad area parameters" ) ); return( -1 ); } /* Set positions of left and right. */ left.left = 0; left.top = 0; left.width = ref_in->Xsize; left.height = ref_in->Ysize; right.left = xref - xsec; right.top = yref - ysec; right.width = sec_in->Xsize; right.height = sec_in->Ysize; /* Find overlap. */ im_rect_intersectrect( &left, &right, &overlap ); if( overlap.width < 2 * halfarea + 1 || overlap.height < 2 * halfarea + 1 ) { im_error( "im_lrmosaic", "%s", _( "overlap too small for search" ) ); return( -1 ); } /* Extract overlaps as 8-bit, 1 band. */ if( !(ref = im_open_local( out, "temp_one", "t" )) || !(sec = im_open_local( out, "temp_two", "t" )) || im_open_local_array( out, t, 6, "im_lrmosaic", "p" ) || im_extract_area( ref_in, t[0], overlap.left, overlap.top, overlap.width, overlap.height ) || im_extract_area( sec_in, t[1], overlap.left - right.left, overlap.top - right.top, overlap.width, overlap.height ) ) return( -1 ); if( ref_in->Coding == IM_CODING_LABQ ) { if( im_LabQ2Lab( t[0], t[2] ) || im_LabQ2Lab( t[1], t[3] ) || im_Lab2disp( t[2], t[4], im_col_displays( 1 ) ) || im_Lab2disp( t[3], t[5], im_col_displays( 1 ) ) || im_extract_band( t[4], ref, 1 ) || im_extract_band( t[5], sec, 1 ) ) return( -1 ); } else if( ref_in->Coding == IM_CODING_NONE ) { if( im_extract_band( t[0], t[2], bandno_in ) || im_extract_band( t[1], t[3], bandno_in ) || im_scale( t[2], ref ) || im_scale( t[3], sec ) ) return( -1 ); } else { im_error( "im_lrmosaic", "%s", _( "unknown Coding type" ) ); return( -1 ); } /* Initialise and fill TIE_POINTS */ p_points = &points; p_newpoints = &newpoints; p_points->reference = ref_in->filename; p_points->secondary = sec_in->filename; p_points->nopoints = IM_MAXPOINTS; p_points->deltax = 0; p_points->deltay = 0; p_points->halfcorsize = halfcorrelation; p_points->halfareasize = halfarea; /* Initialise the structure */ for( i = 0; i < IM_MAXPOINTS; i++ ) { p_points->x_reference[i] = 0; p_points->y_reference[i] = 0; p_points->x_secondary[i] = 0; p_points->y_secondary[i] = 0; p_points->contrast[i] = 0; p_points->correlation[i] = 0.0; p_points->dx[i] = 0.0; p_points->dy[i] = 0.0; p_points->deviation[i] = 0.0; } /* Search ref for possible tie-points. Sets: p_points->contrast, * p_points->x,y_reference. */ if( im__lrcalcon( ref, p_points ) ) return( -1 ); /* For each candidate point, correlate against corresponding part of * sec. Sets x,y_secondary and fills correlation and dx, dy. */ if( im__chkpair( ref, sec, p_points ) ) return( -1 ); /* First call to im_clinear(). */ if( im__initialize( p_points ) ) return( -1 ); /* Improve the selection of tiepoints until all abs(deviations) are * < 1.0 by deleting all wrong points. */ if( im__improve( p_points, p_newpoints ) ) return( -1 ); /* Average remaining offsets. */ if( im__avgdxdy( p_newpoints, &dx, &dy ) ) return( -1 ); /* Offset with overlap position. */ *dx0 = -right.left + dx; *dy0 = -right.top + dy; /* Write 1st order parameters too. */ *scale1 = newpoints.l_scale; *angle1 = newpoints.l_angle; *dx1 = newpoints.l_deltax; *dy1 = newpoints.l_deltay; return( 0 ); } int im_lrmosaic( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int balancetype, int mwidth ) { int dx0, dy0; double scale1, angle1, dx1, dy1; IMAGE *dummy; /* Correct overlap. dummy is just a placeholder used to ensure that * memory used by the analysis phase is freed as soon as possible. */ if( !(dummy = im_open( "placeholder:1", "p" )) ) return( -1 ); if( im__find_lroverlap( ref, sec, dummy, bandno, xref, yref, xsec, ysec, hwindowsize, hsearchsize, &dx0, &dy0, &scale1, &angle1, &dx1, &dy1 ) ) { im_close( dummy ); return( -1 ); } im_close( dummy ); /* Merge left right. */ if( im_lrmerge( ref, sec, out, dx0, dy0, mwidth ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/mosaicing/im_tbcalcon.c0000664000175000017500000000735512530402247015477 00000000000000/* @(#) Functions which takes an initial estimate of deltax, deltay * @(#) between reference and secondary images (probably from the scanner), * @(#) and looks in three areas of the overlapping part of the reference image * @(#) corresponding to reference and secondary. For every other halfreasize * @(#) point of the three areas of the reference image * @(#) the contrast is calculated * @(#) an area 2*halfcorsize+1 centered at this point * @(#) Results are saved in the structure points * @(#) The function expects the following valid data in points: * @(#) deltax, deltay, nopoints, halfcorsize, halfareasize * @(#) and fills in the memebers: * @(#) x, y_reference[], contrast and x,y_secondary[], * @(#) based on deltax and deltay * @(#) Input image should are either memory mapped or in a buffer. * @(#) To make the calculation faster set FACTOR to 1, 2 or 3 * @(#) Calculations are based on bandno only. * @(#) The function uses functions im_calculate_contrast() * @(#) which is in im_lrcalcon() * @(#) * @(#) int im_tbcalcon( ref, sec, bandno, points ) * @(#) IMAGE *ref, *sec; * @(#) int bandno; * @(#) TIE_POINTS *points; see mosaic.h * @(#) * @(#) Returns 0 on sucess and -1 on error. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 * 8/7/93 JC * - allow IM_CODING_LABQ coding * - now calls im_incheck() * 12/7/95 JC * - reworked * - what a lot of horrible old code there was too */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" int im__tbcalcon( IMAGE *ref, TIE_POINTS *points ) { /* Geometry: border we must leave around each area. */ const int border = points->halfareasize; /* Width of an area. */ const int awidth = ref->Xsize / AREAS; /* Number of points we find in each area. */ const int len = points->nopoints / AREAS; int i; Rect area; /* Make sure we can read image. */ if( im_incheck( ref ) ) return( -1 ); if( ref->Bands != 1 || ref->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im__tbcalcon", "%s", _( "help!" ) ); return( -1 ); } /* Define bits to search for high-contrast areas. */ area.width = awidth; area.height = ref->Ysize; area.left = 0; area.top = 0; im_rect_marginadjust( &area, -border ); area.width--; area.height--; if( area.width < 0 || area.height < 0 ) { im_error( "im__tbcalcon", "%s", _( "overlap too small" ) ); return( -1 ); } /* Loop over areas, finding points. */ for( i = 0; area.left < ref->Xsize; area.left += awidth, i++ ) if( im__find_best_contrast( ref, area.left, area.top, area.width, area.height, points->x_reference + i*len, points->y_reference + i*len, points->contrast + i*len, len, points->halfcorsize ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/mosaicing/merge.c0000664000175000017500000001320212651124037014312 00000000000000/* merge two images left/right or up/down * * 22/5/14 * - from vips_merge() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is a simple wrapper over the old vips7 functions. At some point we * should rewrite this as a pure vips8 class and redo the vips7 functions as * wrappers over this. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include typedef struct { VipsOperation parent_instance; VipsImage *ref; VipsImage *sec; VipsImage *out; VipsDirection direction; int dx; int dy; int mblend; } VipsMerge; typedef VipsOperationClass VipsMergeClass; G_DEFINE_TYPE( VipsMerge, vips_merge, VIPS_TYPE_OPERATION ); static int vips_merge_build( VipsObject *object ) { VipsMerge *merge = (VipsMerge *) object; g_object_set( merge, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_merge_parent_class )->build( object ) ) return( -1 ); switch( merge->direction ) { case VIPS_DIRECTION_HORIZONTAL: if( im_lrmerge( merge->ref, merge->sec, merge->out, merge->dx, merge->dy, merge->mblend ) ) return( -1 ); break; case VIPS_DIRECTION_VERTICAL: if( im_tbmerge( merge->ref, merge->sec, merge->out, merge->dx, merge->dy, merge->mblend ) ) return( -1 ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_merge_class_init( VipsMergeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "merge"; object_class->description = _( "merge two images" ); object_class->build = vips_merge_build; VIPS_ARG_IMAGE( class, "ref", 1, _( "Reference" ), _( "Reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, ref ) ); VIPS_ARG_IMAGE( class, "sec", 2, _( "Secondary" ), _( "Secondary image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, sec ) ); VIPS_ARG_IMAGE( class, "out", 3, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMerge, out ) ); VIPS_ARG_ENUM( class, "direction", 4, _( "Direction" ), _( "Horizontal or vertcial merge" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); VIPS_ARG_INT( class, "dx", 5, _( "dx" ), _( "Horizontal displacement from sec to ref" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, dx ), -100000000, 1000000000, 1 ); VIPS_ARG_INT( class, "dy", 6, _( "dy" ), _( "Vertical displacement from sec to ref" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMerge, dy ), -100000000, 1000000000, 1 ); VIPS_ARG_INT( class, "mblend", 7, _( "Max blend" ), _( "Maximum blend size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMerge, mblend ), 0, 10000, 10 ); } static void vips_merge_init( VipsMerge *merge ) { merge->mblend = 10; } /** * vips_merge: * @ref: reference image * @sec: secondary image * @out: output image * @direction: horizontal or vertical merge * @dx: displacement of ref from sec * @dy: displacement of ref from sec * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @mblend: maximum blend size * * This operation joins two images left-right (with @ref on the left) or * up-down (with @ref above) with a smooth seam. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * @dx and @dy give the displacement of @sec relative to @ref, in other words, * the vector to get from the origin of @sec to the origin of @ref, in other * words, @dx will generally be a negative number. * * @mblend limits the maximum width of the * blend area. A value of "-1" means "unlimited". The two images are blended * with a raised cosine. * * Pixels with all bands equal to zero are "transparent", that * is, zero pixels in the overlap area do not contribute to the merge. * This makes it possible to join non-rectangular images. * * See also: vips_mosaic(), vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_merge( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int dx, int dy, ... ) { va_list ap; int result; va_start( ap, dy ); result = vips_call_split( "merge", ap, ref, sec, out, direction, dx, dy ); va_end( ap ); return( result ); } vips-8.2.2/libvips/mosaicing/global_balance.h0000664000175000017500000000735112530402247016133 00000000000000/* Header for the .desc file parser in im_global_balance() * * 1/11/01 JC * - cut from global_balance.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Number of entries in spine of file name hash table. */ #define SYM_TAB_SIZE (113) typedef enum _JoinType JoinType; typedef struct _OverlapInfo OverlapInfo; typedef struct _JoinNode JoinNode; typedef struct _SymbolTable SymbolTable; /* Type of a transform function. */ typedef IMAGE *(*transform_fn)( JoinNode *, void * ); /* Join type. */ enum _JoinType { JOIN_LR, /* im_lrmerge join */ JOIN_TB, /* im_tbmerge join */ JOIN_LRROTSCALE, /* 1st oder lrmerge */ JOIN_TBROTSCALE, /* 1st oder tbmerge */ JOIN_CP, /* im_copy operation */ JOIN_LEAF /* Base file */ }; /* An overlap struct. Attach a list of these to each leaf, one for each of * the other leaves we touch. */ struct _OverlapInfo { JoinNode *node; /* The base node - we are on this list */ JoinNode *other; /* Node we overlap with */ Rect overlap; /* The overlap area */ DOUBLEMASK *nstats; /* Node's stats for overlap area */ DOUBLEMASK *ostats; /* Other's stats for overlap area */ }; /* Struct for a join node. */ struct _JoinNode { char *name; /* This file name */ JoinType type; /* What kind of join */ SymbolTable *st; /* Symbol table we are on */ int dirty; /* Used for circularity detection */ /* Params from join line in .desc file. */ double a, b; double dx, dy; int mwidth; /* Cumulative transform for this node. What our parents do to us. * cumtrn.area is position and size of us, thistrn.area is pos and * size of arg2. */ VipsTransformation cumtrn; /* X-tras for LR/TB. thistrn is what we do to arg2. */ JoinNode *arg1; /* Left or up thing to join */ JoinNode *arg2; /* Right or down thing to join */ VipsTransformation thistrn; /* Transformation for arg2 */ /* Special for leaves: all the join_nodes we overlap with, the * IMAGE for that file, and the index. */ GSList *overlaps; IMAGE *im; IMAGE *trnim; /* Transformed image .. used in 2nd pass */ int index; }; /* We need to keep a table of JoinNode, indexed by file name. Hash into one * of these from the name to get a pointer to the base of a list of JoinNode * which hash to that offset. */ struct _SymbolTable { GSList **table; /* Ptr to base of hash table */ int sz; /* Size of hash table */ IMAGE *im; /* Malloc relative to this */ int novl; /* Number of unique overlaps */ int nim; /* Number of leaf images */ int njoin; /* Number of join nodes */ JoinNode *root; /* Root of join tree */ JoinNode *leaf; /* Leaf nominated to be 1.000 */ double *fac; /* Correction factors */ }; IMAGE *im__global_open_image( SymbolTable *st, char *name ); SymbolTable *im__build_symtab( IMAGE *out, int sz ); int im__parse_desc( SymbolTable *st, IMAGE *in ); void *im__map_table( SymbolTable *st, VSListMap2Fn fn, void *a, void *b ); int im__build_mosaic( SymbolTable *st, IMAGE *out, transform_fn tfn, void * ); vips-8.2.2/libvips/mosaicing/im_remosaic.c0000664000175000017500000001307312530402247015506 00000000000000/* Use one mosiaced file to mosaic another set of images. * * 1/11/01 JC * - from global_balance * 25/02/02 JC * - detect size change * 10/4/06 * - spot file-not-found */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Define for debug output. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pmosaicing.h" #include "global_balance.h" typedef struct { VipsOperation parent_instance; VipsImage *in; VipsImage *out; char *old_str; char *new_str; int new_len; int old_len; } VipsRemosaic; typedef VipsOperationClass VipsRemosaicClass; G_DEFINE_TYPE( VipsRemosaic, vips_remosaic, VIPS_TYPE_OPERATION ); static IMAGE * remosaic_fn( JoinNode *node, VipsRemosaic *remosaic ) { SymbolTable *st = node->st; IMAGE *im = node->im; IMAGE *out; char filename[FILENAME_MAX]; char *p; if( !im ) { im_error( "im_remosaic", _( "file \"%s\" not found" ), node->name ); return( NULL ); } /* Remove substring remosaic->old_str from in->filename, replace with * remosaic->new_str. */ im_strncpy( filename, im->filename, FILENAME_MAX ); if( (p = im_strrstr( filename, remosaic->old_str )) ) { int offset = p - &filename[0]; im_strncpy( p, remosaic->new_str, FILENAME_MAX - offset ); im_strncpy( p + remosaic->new_len, im->filename + offset + remosaic->old_len, FILENAME_MAX - offset - remosaic->new_len ); } #ifdef DEBUG printf( "im_remosaic: filename \"%s\" -> \"%s\"\n", im->filename, filename ); #endif /*DEBUG*/ if( !(out = im__global_open_image( st, filename )) ) return( NULL ); if( out->Xsize != im->Xsize || out->Ysize != im->Ysize ) { im_error( "im_remosaic", _( "substitute image \"%s\" is not " "the same size as \"%s\"" ), filename, im->filename ); return( NULL ); } return( out ); } static int vips_remosaic_build( VipsObject *object ) { VipsRemosaic *remosaic = (VipsRemosaic *) object; SymbolTable *st; g_object_set( remosaic, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_remosaic_parent_class )-> build( object ) ) return( -1 ); if( !(st = im__build_symtab( remosaic->out, SYM_TAB_SIZE )) || im__parse_desc( st, remosaic->in ) ) return( -1 ); remosaic->old_len = strlen( remosaic->old_str ); remosaic->new_len = strlen( remosaic->new_str ); if( im__build_mosaic( st, remosaic->out, (transform_fn) remosaic_fn, remosaic ) ) return( -1 ); return( 0 ); } static void vips_remosaic_class_init( VipsRemosaicClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "remosaic"; object_class->description = _( "global balance an image mosaic" ); object_class->build = vips_remosaic_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRemosaic, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsRemosaic, out ) ); VIPS_ARG_STRING( class, "old_str", 5, _( "old_str" ), _( "Search for this string" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRemosaic, old_str ), "" ); VIPS_ARG_STRING( class, "new_str", 6, _( "new_str" ), _( "And swap for this string" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRemosaic, new_str ), "" ); } static void vips_remosaic_init( VipsRemosaic *remosaic ) { } /** * vips_remosaic: * @in: mosaic to rebuild * @out: output image * @old_str: gamma of source images * @new_str: gamma of source images * @...: %NULL-terminated list of optional named arguments * * vips_remosaic() works rather as vips_globalbalance(). It takes apart the * mosaiced image @in and rebuilds it, substituting images. * * Unlike vips_globalbalance(), images are substituted based on their file†* names. The rightmost occurence of the string @old_str is swapped * for @new_str, that file is opened, and that image substituted for * the old image. * * It's convenient for multispectral images. You can mosaic one band, then * use that mosaic as a template for mosaicing the others automatically. * * See also: vips_globalbalance(). * * Returns: 0 on success, -1 on error */ int vips_remosaic( VipsImage *in, VipsImage **out, const char *old_str, const char *new_str, ... ) { va_list ap; int result; va_start( ap, new_str ); result = vips_call_split( "remosaic", ap, in, out, old_str, new_str ); va_end( ap ); return( result ); } vips-8.2.2/libvips/mosaicing/im_lrcalcon.c0000664000175000017500000001704112530402247015500 00000000000000/* @(#) Functions which takes an initial estimate of deltax, deltay * @(#) between reference and secondary images (probably from the scanner), * @(#) and looks in three areas of the overlapping part of the reference image * @(#) corresponding to reference and secondary. For every other halfreasize * @(#) point of the three areas of the reference image * @(#) the contrast is calculated * @(#) an area 2*halfcorsize+1 centered at this point * @(#) Results are saved in the structure points * @(#) The function expects the following valid data in points: * @(#) deltax, deltay, nopoints, halfcorsize, halfareasize * @(#) and fills in the memebers: * @(#) x, y_reference[], contrast and x,y_secondary[], * @(#) based on deltax and deltay * @(#) Input image should are either memory mapped or in a buffer. * @(#) The initial setting checks all points of reference * @(#) in the overlapping area of the images to be mosaiced * @(#) To speed up the procedure the ysize of the box can be reduced * @(#) during the calculation of the ysize * @(#) An easy way is to change FACTOR to 1 2 or 3. * @(#) The calculation of the contrast is carried out based on bandno only. * @(#) The variable bandno should be between 1 and ref->Bands * @(#) * @(#) int im_lrcalcon( ref, sec, bandno, points ) * @(#) IMAGE *ref, *sec; * @(#) int bandno; * @(#) TIE_POINTS *points; see mosaic.h * @(#) * @(#) Returns 0 on sucess and -1 on error. * @(#) * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 * 8/7/93 JC * - now calls im_incheck() * 12/7/95 JC * - reworked * - what a lot of horrible old code there was too * 24/1/97 JC * - now ignores black stuff (all bands zero) when selecting possible tie * points, part of new mosaic policy * 26/9/97 JC * - now skips all-black windows, instead of any-black windows * 11/4/01 JC * - ooops, < 0 should have been <= 0 * 10/3/03 JC * - better error message for overlap too small */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" /* A position and contrast. */ typedef struct { int x, y; int cont; } PosCont; /* Search a window for black pelss ... true if window is all black. * One-band uchar only. */ static int all_black( IMAGE *im, int xpos, int ypos, int winsize ) { const int hwinsize = (winsize - 1)/2; const int left = xpos - hwinsize; const int top = ypos - hwinsize; const int ls = im->Xsize; int x, y; VipsPel *line; /* Loop over image. */ line = im->data + top*ls + left; for( y = 0; y < winsize; y++ ) { for( x = 0; x < winsize; x++ ) if( line[x] ) /* Not all black. */ return( 0 ); line += ls; } return( -1 ); } /* Calculate a value for 'contrast' within a window * of (odd) size winsize*winsize centered at location (xpos, ypos). * One band uchar only, */ static int calculate_contrast( IMAGE *im, int xpos, int ypos, int winsize ) { const int hwinsize = (winsize - 1)/2; const int left = xpos - hwinsize; const int top = ypos - hwinsize; const int ls = im->Xsize; int x, y; VipsPel *line, *p; int total; line = im->data + top*ls + left; for( total = 0, y = 0; y < winsize-1; y++ ) { p = line; for( x = 0; x < winsize-1; x++ ) { const int lrd = (int) p[0] - p[1]; const int tbd = (int) p[0] - p[ls]; total += abs( lrd ) + abs( tbd ); p += 1; } line += ls; } return( total ); } /* Compare two PosConts for qsort. */ static int pos_compare( const void *vl, const void *vr ) { PosCont *l = (PosCont *) vl; PosCont *r = (PosCont *) vr; return( r->cont - l->cont ); } /* Search an area for the n best contrast areas. */ int im__find_best_contrast( IMAGE *im, int xpos, int ypos, int xsize, int ysize, int xarray[], int yarray[], int cont[], int nbest, int hcorsize ) { /* Geometry: we test squares of size windowsize, overlapping by * hcorsize. */ const int windowsize = 2 * hcorsize + 1; /* Number of squares we can fit in area. */ const int nacross = (xsize - windowsize + hcorsize) / hcorsize; const int ndown = (ysize - windowsize + hcorsize) / hcorsize; /* Number of squares we search. */ int elms; /* All points in this area. */ PosCont *pc; int x, y, i; if( nacross <= 0 || ndown <= 0 ) { im_error( "im__lrcalcon", "%s", _( "overlap too small for your search size" ) ); return( -1 ); } /* Malloc space for 3 int arrays, to keep the int coordinates and * the contrast. */ if( !(pc = IM_ARRAY( NULL, nacross * ndown, PosCont )) ) return( -1 ); /* Find contrast for each area. */ for( i = 0, y = 0; y < ndown; y++ ) for( x = 0; x < nacross; x++ ) { const int left = xpos + x * hcorsize; const int top = ypos + y * hcorsize; /* Skip this position if it is all black. */ if( all_black( im, left, top, windowsize ) ) continue; /* Find contrast and note. */ pc[i].x = left; pc[i].y = top; pc[i].cont = calculate_contrast( im, left, top, windowsize ); i++; } /* Note number found. */ elms = i; /* Found enough tie-points? */ if( elms < nbest ) { im_error( "im_mosaic", _( "found %d tie-points, need at least %d" ), elms, nbest ); im_free( pc ); return( -1 ); } /* Sort areas by contrast. */ qsort( pc, elms, sizeof( PosCont ), pos_compare ); /* Copy the n best into our parent. */ for( i = 0; i < nbest; i++ ) { xarray[i] = pc[i].x; yarray[i] = pc[i].y; cont[i] = pc[i].cont; } im_free( pc ); return( 0 ); } int im__lrcalcon( IMAGE *ref, TIE_POINTS *points ) { /* Geometry: border we must leave around each area. */ const int border = points->halfareasize; /* Height of an area. */ const int aheight = ref->Ysize / AREAS; /* Number of points we find in each area. */ const int len = points->nopoints / AREAS; int i; Rect area; /* Make sure we can read image. */ if( im_incheck( ref ) ) return( -1 ); if( ref->Bands != 1 || ref->BandFmt != IM_BANDFMT_UCHAR ) { im_error( "im__lrcalcon", "%s", _( "not 1-band uchar image" ) ); return( -1 ); } /* Define bits to search for high-contrast areas. Need to be able to * fit at least 1 window in. */ area.height = aheight; area.width = ref->Xsize; area.left = 0; area.top = 0; im_rect_marginadjust( &area, -border ); area.width--; area.height--; /* Loop over areas, finding points. */ for( i = 0; area.top < ref->Ysize; area.top += aheight, i++ ) if( im__find_best_contrast( ref, area.left, area.top, area.width, area.height, points->x_reference + i*len, points->y_reference + i*len, points->contrast + i*len, len, points->halfcorsize ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/mosaicing/im_initialize.c0000664000175000017500000000446312605241561016053 00000000000000/* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pmosaicing.h" int im__initialize( TIE_POINTS *points ) { if( im__clinear( points ) ) { /* im_clinear failed! Set some sensible fallback values. */ int i, j; double xdelta, ydelta, max_cor; double a1, a2; int *xref = &points->x_reference[0]; int *yref = &points->y_reference[0]; int *xsec = &points->x_secondary[0]; int *ysec = &points->y_secondary[0]; double *corr = &points->correlation[0]; double *dx = &points->dx[0]; double *dy = &points->dy[0]; int npt = points->nopoints; max_cor = 0.0; for( i = 0; i < npt; i++ ) if( corr[i] > max_cor ) max_cor = corr[i]; max_cor = max_cor - 0.04; xdelta = 0.0; ydelta = 0.0; j = 0; for( i = 0; i < npt; i++ ) if( corr[i] >= max_cor ) { xdelta += xsec[i] - xref[i]; ydelta += ysec[i] - yref[i]; ++j; } if( j == 0 ) { vips_error( "im_initialize", "no tie points" ); return( -1 ); } xdelta = xdelta / j; ydelta = ydelta / j; for( i = 0; i < npt; i++ ) { dx[i] = (xsec[i] - xref[i]) - xdelta; dy[i] = (ysec[i] - yref[i]) - ydelta; } for( i = 0; i < npt; i++ ) { a1 = dx[i]; a2 = dy[i]; points->deviation[i] = sqrt( a1 * a1 + a2 * a2 ); } points->l_scale = 1.0; points->l_angle = 0.0; points->l_deltax = xdelta; points->l_deltay = ydelta; } return( 0 ); } vips-8.2.2/libvips/mosaicing/mosaicing.c0000664000175000017500000000632712530402247015174 00000000000000/* base class for all mosaicing operations * */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /** * SECTION: mosaicing * @short_description: build image mosaics * @stability: Stable * @include: vips/vips.h * * These functions are useful for joining many small images together to make * one large image. They can cope with unstable contrast and arbitary sub-image * layout, but will not do any geometric correction. Geometric errors should * be removed before using these functions. * * The mosaicing functions can be grouped into layers: * * The lowest level functions are im_correl() and vips_merge(). * im_correl() * searches a large image for a small sub-image, returning * the position of the best sub-image match. vips_merge() * joins two images together * left-right or up-down with a smooth seam. * * Next, vips_mosaic() use the * search function plus the two low-level merge operations to join two images * given just an approximate overlap as a start point. * * The functions im_lrmosaic1() and im_tbmosaic1() are * first-order * analogues of the basic mosaic functions: they take two approximate * tie-points and use * them to rotate and scale the right-hand or bottom image before starting to * join. * * Finally, vips_globalbalance() can be used to remove contrast differences in * a mosaic * which has been assembled with these functions. It takes the mosaic apart, * measures image contrast differences along the seams, finds a set of * correction factors which will minimise these differences, and reassembles * the mosaic. * im_remosaic() uses the * same * techniques, but will reassemble the image from a different set of source * images. * */ /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_mosaicing_operation_init( void ) { extern int vips_merge_get_type( void ); extern int vips_mosaic_get_type( void ); extern int vips_mosaic1_get_type( void ); extern int vips_match_get_type( void ); extern int vips_globalbalance_get_type( void ); vips_merge_get_type(); vips_mosaic_get_type(); vips_mosaic1_get_type(); vips_match_get_type(); vips_globalbalance_get_type(); } vips-8.2.2/libvips/mosaicing/global_balance.c0000664000175000017500000012236412530402247016130 00000000000000/* Parse ".desc" files from mosaiced images to generate (x,y) offsets for * every sub-image. Find all overlap stats and solve balancing with LMS. * Regenerate mosaic, with balancing fixed. * * 1/12/93 JC * - first version, unfinished! * 6/9/95 JC * - LMS fixed, now works, more or less * 12/9/95 JC * - now does positions correctly too * - ignores trivial overlaps * 19/9/95 JC * - prints correct number of balance factors! * 10/11/95 JC * - now tracks im_copy() calls too, so you can save sub-images * 12/1/96 JC * - slightly clearer diagnostics * - better centre of factors around 1.0 with log() average * 1/3/96 JC * - new im_global_balance_float variant lets our caller adjust factor * range if output has burn-out * - im_global_balance_search uses the above to produce scaled output ... * very slow! * 11/3/96 JC * - now tries current directory too for input files * 22/3/96 JC * - horrible bug in position finding! now fixed * 1/8/97 JC * - revised for new mosaic functions and non-square images * 12/9/97 JC * - code for im_lrmosaic1() support * - output type == input type, so works for short images too * 6/1/99 JC * - new gamma parameter, do scale in linear space * - removed _search version, as can now be done with ip * - renamed _float to f suffix, in line with im_conv()/im_convf() * 15/2/00 JC * - balancef() did not scale in linear space * 2/2/01 JC * - added tunable max blend width * 7/11/01 JC * - global_balance.h broken out for im_remosaic() * 25/02/02 JC * - better transform function scheme * 21/3/01 JC * - quicker bailout on error * 8/11/02 JC * - add <> around file names so you can have spaces :( * 9/12/02 JC * - track original params and always reuse them ... makes us proof * against geo reconstruct errors * 10/3/03 JC * - weed out overlaps which contain only transparent pixels * 4/1/07 * - switch to new history thing, switch im_errormsg() too * 24/1/11 * - gtk-doc * 12/7/12 * - always allocate local to an output descriptor ... stops ref cycles * with the new base class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Strategy: build a tree describing the file * relationships in the desc file, then walk that passing constraints * back up to the root. Look up file names in symbol_table. */ /* Define for debug output. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pmosaicing.h" #include "global_balance.h" #define MAX_ITEMS (50) /* How pix an overlap has to be (in pixels) before we think it's trivial and * we ignore it. */ #define TRIVIAL (20 * 20) /* Break a string into a list of strings. Write '\0's into the string. out * needs to be MAX_FILES long. -1 for error, otherwise number of args found. " " out[0] = "fred" out[1] = "jim poop" out[2] = "sn aff le" */ static int break_items( char *line, char **out ) { int i; char *p; for( i = 0; i < MAX_ITEMS; i++ ) { /* Skip to first '<'. */ if( !(p = strchr( line, '<' )) ) break; out[i] = line = p + 1; if( !(p = strchr( line, '>' )) ) { im_error( "break_files", "%s", _( "no matching '>'" ) ); return( -1 ); } *p = '\0'; line = p + 1; } if( i == MAX_ITEMS ) { im_error( "break_files", "%s", _( "too many items" ) ); return( -1 ); } return( i ); } /* Try to open a file. If full path fails, try the current directory. */ IMAGE * im__global_open_image( SymbolTable *st, char *name ) { IMAGE *im; if( (im = im_open_local( st->im, name, "r" )) || (im = im_open_local( st->im, im_skip_dir( name ), "r" )) ) return( im ); return( NULL ); } static int junk_node( JoinNode *node ) { IM_FREEF( g_slist_free, node->overlaps ); return( 0 ); } /* Hash from a filename to an index into symbol_table. */ static int hash( char *n ) { int i; int r = 0; int l = strlen( n ); for( i = 0; i < l; i++ ) r = ((r + n[i]) * 43) & 0xffffff; return( r % SYM_TAB_SIZE ); } /* Make a leaf for a file. */ static JoinNode * build_node( SymbolTable *st, char *name ) { JoinNode *node = IM_NEW( st->im, JoinNode ); int n = hash( name ); /* Fill fields. */ if( !node || !(node->name = im_strdup( st->im, name )) ) return( NULL ); node->type = JOIN_LEAF; node->dirty = 0; node->mwidth = -2; node->st = st; vips__transform_init( &node->cumtrn ); node->trnim = NULL; node->arg1 = NULL; node->arg2 = NULL; node->overlaps = NULL; node->im = NULL; node->index = 0; if( im_add_close_callback( st->im, (im_callback_fn) junk_node, node, NULL ) ) return( NULL ); /* Try to open. */ if( (node->im = im__global_open_image( st, name )) ) { /* There is a file there - set width and height. */ node->cumtrn.oarea.width = node->im->Xsize; node->cumtrn.oarea.height = node->im->Ysize; } else { /* Clear the error buffer to lessen confusion. */ im_error_clear(); } st->table[n] = g_slist_prepend( st->table[n], node ); return( node ); } /* Make a new overlap struct. */ static OverlapInfo * build_overlap( JoinNode *node, JoinNode *other, Rect *overlap ) { OverlapInfo *lap = IM_NEW( node->st->im, OverlapInfo ); if( !lap ) return( NULL ); lap->node = node; lap->other = other; lap->overlap = *overlap; lap->nstats = NULL; lap->ostats = NULL; node->overlaps = g_slist_prepend( node->overlaps, lap ); node->st->novl++; return( lap ); } static void overlap_destroy( OverlapInfo *lap ) { JoinNode *node = lap->node; node->overlaps = g_slist_remove( node->overlaps, lap ); g_assert( node->st->novl > 0 ); node->st->novl--; } static int junk_table( SymbolTable *st ) { int i; for( i = 0; i < st->sz; i++ ) IM_FREEF( g_slist_free, st->table[i] ); return( 0 ); } /* Build a new symbol table. */ SymbolTable * im__build_symtab( IMAGE *out, int sz ) { SymbolTable *st = IM_NEW( out, SymbolTable ); int i; if( !st || !(st->table = IM_ARRAY( out, sz, GSList * )) ) return( NULL ); st->sz = sz; st->im = out; st->novl = 0; st->nim = 0; st->njoin = 0; st->root = NULL; st->leaf = NULL; st->fac = NULL; if( im_add_close_callback( out, (im_callback_fn) junk_table, st, NULL ) ) return( NULL ); for( i = 0; i < sz; i++ ) st->table[i] = NULL; return( st ); } /* Does this node have this file name? */ static JoinNode * test_name( JoinNode *node, char *name ) { if( strcmp( node->name, name ) == 0 ) return( node ); else return( NULL ); } /* Look up a filename in the symbol_table. */ static JoinNode * find_node( SymbolTable *st, char *name ) { return( im_slist_map2( st->table[hash( name )], (VSListMap2Fn) test_name, name, NULL ) ); } /* Given a name: return either the existing node for that name, or a new node * we have made. */ static JoinNode * add_node( SymbolTable *st, char *name ) { JoinNode *node; if( !(node = find_node( st, name )) && !(node = build_node( st, name )) ) return( NULL ); return( node ); } /* Map a user function over the whole of the symbol table. */ void * im__map_table( SymbolTable *st, VSListMap2Fn fn, void *a, void *b ) { int i; void *r; for( i = 0; i < st->sz; i++ ) if( (r = im_slist_map2( st->table[i], fn, a, b )) ) return( r ); return( NULL ); } /* Set the dirty field on a join. */ static void * set_dirty( JoinNode *node, int state ) { node->dirty = state; return( NULL ); } /* Clean the whole table. */ static void clean_table( SymbolTable *st ) { (void) im__map_table( st, (VipsSListMap2Fn) set_dirty, (void *) 0, NULL ); } /* Do geometry calculations on a node, assuming geo is up to date for any * children. */ static void calc_geometry( JoinNode *node ) { Rect um; switch( node->type ) { case JOIN_LR: case JOIN_TB: case JOIN_LRROTSCALE: case JOIN_TBROTSCALE: /* Join two areas. */ im_rect_unionrect( &node->arg1->cumtrn.oarea, &node->arg2->cumtrn.oarea, &um ); node->cumtrn.iarea.left = 0; node->cumtrn.iarea.top = 0; node->cumtrn.iarea.width = um.width; node->cumtrn.iarea.height = um.height; vips__transform_set_area( &node->cumtrn ); break; case JOIN_CP: /* Copy from child. */ node->cumtrn = node->arg1->cumtrn; break; case JOIN_LEAF: /* Just use leaf dimensions, if there are any. */ if( node->im ) { node->cumtrn.iarea.left = 0; node->cumtrn.iarea.top = 0; node->cumtrn.iarea.width = node->im->Xsize; node->cumtrn.iarea.height = node->im->Ysize; vips__transform_set_area( &node->cumtrn ); } break; default: error_exit( "internal error #98356" ); /*NOTREACHED*/ } } /* Propogate a transform down a tree. If dirty is set, we've been here before, * so there is a doubling up of this node. If this is a leaf, then we have the * same leaf twice (which, in fact, we can cope with); if this is a node, we * have circularity. */ static int propogate_transform( JoinNode *node, VipsTransformation *trn ) { if( !node ) return( 0 ); if( node->dirty && node->arg1 && node->arg2 ) { im_error( "im_global_balance", "%s", _( "circularity detected" ) ); return( -1 ); } node->dirty = 1; /* Transform our children. */ if( propogate_transform( node->arg1, trn ) || propogate_transform( node->arg2, trn ) ) return( -1 ); /* Transform us, and recalculate our position and size. */ vips__transform_add( &node->cumtrn, trn, &node->cumtrn ); calc_geometry( node ); return( 0 ); } /* Ah ha! A leaf is actually made up of two smaller files with an lr or a tb * merge. Turn a leaf node into a join node. Propogate the transform down * arg2's side of the tree. */ static int make_join( SymbolTable *st, JoinType type, JoinNode *arg1, JoinNode *arg2, JoinNode *out, double a, double b, double dx, double dy, int mwidth ) { VipsTransformation trn; /* Check output is ok. */ if( out->type != JOIN_LEAF ) { im_error( "im_global_balance", _( "image \"%s\" used twice as output" ), out->name ); return( -1 ); } /* Fill fields. */ out->type = type; out->mwidth = mwidth; out->a = a; out->b = b; out->dx = dx; out->dy = dy; out->arg1 = arg1; out->arg2 = arg2; out->thistrn.a = a; out->thistrn.b = -b; out->thistrn.c = b; out->thistrn.d = a; out->thistrn.idx = 0; out->thistrn.idy = 0; out->thistrn.odx = dx; out->thistrn.ody = dy; /* Clean the table and propogate the transform down the RHS of the * graph. */ clean_table( st ); if( propogate_transform( arg2, &out->thistrn ) ) return( -1 ); /* Find the position and size of our output. */ calc_geometry( out ); /* Now normalise the result, so that out is at (0,0) again. */ trn.a = 1.0; trn.b = 0.0; trn.c = 0.0; trn.d = 1.0; trn.idx = 0; trn.idy = 0; trn.odx = -out->cumtrn.oarea.left; trn.ody = -out->cumtrn.oarea.top; clean_table( st ); if( propogate_transform( out, &trn ) ) return( -1 ); return( 0 ); } /* Make a copy node. */ static int make_copy( SymbolTable *st, JoinNode *before, JoinNode *after ) { /* Check output is ok. */ if( after->type != JOIN_LEAF ) { im_error( "im_global_balance", _( "image \"%s\" used twice as output" ), after->name ); return( -1 ); } /* Fill fields. */ after->type = JOIN_CP; after->arg1 = before; after->arg2 = NULL; /* Copy over the position and size from the before to the after. */ calc_geometry( after ); return( 0 ); } /* Process a single .desc line. */ static int process_line( SymbolTable *st, const char *text ) { char line[1024]; #ifdef DEBUG printf( "read: %s\n", text ); #endif /*DEBUG*/ /* We destroy line during the parse. */ im_strncpy( line, text, 1024 ); if( im_isprefix( "#LRJOIN ", line ) || im_isprefix( "#TBJOIN ", line ) ) { /* Yes: magic join command. Break into tokens. Format is eg. #LRJOIN [] */ char *item[MAX_ITEMS]; int nitems; JoinType type; JoinNode *arg1, *arg2, *join; int dx, dy, mwidth; if( (nitems = break_items( line, item )) < 0 ) return( -1 ); if( nitems != 5 && nitems != 6 ) { im_error( "global_balance", "%s", _( "bad number of args in join line" ) ); return( -1 ); } if( !(arg1 = add_node( st, item[0] )) || !(arg2 = add_node( st, item[1] )) || !(join = add_node( st, item[2] )) ) return( -1 ); dx = atoi( item[3] ); dy = atoi( item[4] ); if( nitems == 6 ) mwidth = atoi( item[5] ); else mwidth = -1; if( im_isprefix( "#LRJOIN ", line ) ) type = JOIN_LR; else type = JOIN_TB; if( make_join( st, type, arg1, arg2, join, 1.0, 0.0, dx, dy, mwidth ) ) return( -1 ); } else if( im_isprefix( "#LRROTSCALE ", line ) || im_isprefix( "#TBROTSCALE ", line ) ) { /* Rot + scale. Format is eg. #LRROTSCALE \ [] */ char *item[MAX_ITEMS]; int nitems; JoinType type; JoinNode *arg1, *arg2, *join; double a, b, dx, dy; int mwidth; if( (nitems = break_items( line, item )) < 0 ) return( -1 ); if( nitems != 7 && nitems != 8 ) { im_error( "global_balance", "%s", _( "bad number of args in join1 line" ) ); return( -1 ); } if( !(arg1 = add_node( st, item[0] )) || !(arg2 = add_node( st, item[1] )) || !(join = add_node( st, item[2] )) ) return( -1 ); a = g_ascii_strtod( item[3], NULL ); b = g_ascii_strtod( item[4], NULL ); dx = g_ascii_strtod( item[5], NULL ); dy = g_ascii_strtod( item[6], NULL ); if( nitems == 8 ) mwidth = atoi( item[7] ); else mwidth = -1; if( im_isprefix( "#LRROTSCALE ", line ) ) type = JOIN_LRROTSCALE; else type = JOIN_TBROTSCALE; if( make_join( st, type, arg1, arg2, join, a, b, dx, dy, mwidth ) ) return( -1 ); } else if( im_isprefix( "copy ", line ) ) { /* im_copy() call ... make a JOIN_CP node. */ char *item[MAX_ITEMS]; int nitems; JoinNode *before, *after; if( (nitems = break_items( line, item )) < 0 ) return( -1 ); if( nitems != 2 ) { im_error( "global_balance", "%s", _( "bad number of args in copy line" ) ); return( -1 ); } if( !(before = add_node( st, item[0] )) || !(after = add_node( st, item[1] )) || make_copy( st, before, after ) ) return( -1 ); } return( 0 ); } /* Set the dirty flag on any nodes we reference. */ static void * set_referenced( JoinNode *node ) { if( node->arg1 ) node->arg1->dirty = 1; if( node->arg2 ) node->arg2->dirty = 1; return( NULL ); } /* Is this a root node? Should be clean. */ static void * is_root( JoinNode *node ) { if( !node->dirty ) return( (void *) node ); else return( NULL ); } /* Scan the symbol table, looking for a node which no node references. */ static JoinNode * find_root( SymbolTable *st ) { JoinNode *root; /* Clean the table, then scan it, setting all pointed-to nodes dirty. */ clean_table( st ); im__map_table( st, (VipsSListMap2Fn) set_referenced, NULL, NULL ); /* Look for the first clean symbol. */ root = (JoinNode *) im__map_table( st, (VipsSListMap2Fn) is_root, NULL, NULL ); /* No root? Hot dang! */ if( !root ) { im_error( "im_global_balance", "%s", _( "mosaic root not found in desc file\n" "is this really a mosaiced image?" ) ); return( NULL ); } /* Now dirty that - then if there are any more clean symbols, we have * more than one root. */ root->dirty = 1; if( im__map_table( st, (VipsSListMap2Fn) is_root, NULL, NULL ) ) { im_error( "im_global_balance", "%s", _( "more than one root" ) ); return( NULL ); } return( root ); } /* Walk history_list and parse each line. */ int im__parse_desc( SymbolTable *st, IMAGE *in ) { GSList *p; for( p = in->history_list; p; p = p->next ) { GValue *value = (GValue *) p->data; g_assert( G_VALUE_TYPE( value ) == IM_TYPE_REF_STRING ); if( process_line( st, im_ref_string_get( value ) ) ) return( -1 ); } /* Find root. */ if( !(st->root = find_root( st )) ) return( -1 ); return( 0 ); } /* Count and index all leaf images. */ static void * count_leaves( JoinNode *node ) { if( node->type == JOIN_LEAF ) { node->index = node->st->nim; node->st->nim++; } return( NULL ); } #ifdef DEBUG /* Print a JoinNode. */ static void print_node( JoinNode *node ) { printf( "%s, position %dx%d, size %dx%d, index %d\n", im_skip_dir( node->name ), node->cumtrn.oarea.left, node->cumtrn.oarea.top, node->cumtrn.oarea.width, node->cumtrn.oarea.height, node->index ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print a leaf. */ static void * print_leaf( JoinNode *node ) { if( node->type == JOIN_LEAF ) print_node( node ); return( NULL ); } #endif /*DEBUG*/ /* Count all join nodes. */ static void * count_joins( JoinNode *node ) { if( node->type == JOIN_TB || node->type == JOIN_LR || node->type == JOIN_LRROTSCALE || node->type == JOIN_TBROTSCALE ) node->st->njoin++; return( NULL ); } #ifdef DEBUG /* Print a few spaces. */ static void spc( int n ) { int i; for( i = 0; i < n; i++ ) printf( " " ); } #endif /*DEBUG*/ #ifdef DEBUG static char * JoinType2char( JoinType type ) { switch( type ) { case JOIN_LR: return( "JOIN_LR" ); case JOIN_TB: return( "JOIN_TB" ); case JOIN_LRROTSCALE: return( "JOIN_LRROTSCALE" ); case JOIN_TBROTSCALE: return( "JOIN_TBROTSCALE" ); case JOIN_CP: return( "JOIN_CP" ); case JOIN_LEAF: return( "JOIN_LEAF" ); default: error_exit( "internal error #9275" ); /*NOTEACHED*/ return( NULL ); } } #endif /*DEBUG*/ #ifdef DEBUG /* Print a join node. */ static void * print_joins( JoinNode *node, int indent ) { switch( node->type ) { case JOIN_TB: case JOIN_LR: case JOIN_TBROTSCALE: case JOIN_LRROTSCALE: spc( indent ); printf( "%s to make %s, size %dx%d, pos. %dx%d, of:\n", JoinType2char( node->type ), im_skip_dir( node->name ), node->cumtrn.oarea.width, node->cumtrn.oarea.height, node->cumtrn.oarea.left, node->cumtrn.oarea.top ); spc( indent ); printf( "reference:\n" ); print_joins( node->arg1, indent+2 ); spc( indent ); printf( "secondary:\n" ); print_joins( node->arg2, indent+2 ); break; case JOIN_CP: spc( indent ); printf( "copy to make %s of:\n", im_skip_dir( node->name ) ); print_joins( node->arg1, indent+2 ); break; case JOIN_LEAF: spc( indent ); printf( "input image %s\n", im_skip_dir( node->name ) ); break; } return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print an overlap. */ static void * print_overlap( OverlapInfo *lap ) { printf( "-> %s overlaps with %s; (this, other) = (%.4G, %.4G)\n", im_skip_dir( lap->node->name ), im_skip_dir( lap->other->name ), lap->nstats->coeff[4], lap->ostats->coeff[4] ); return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print the overlaps on a leaf. */ static void * print_overlaps( JoinNode *node ) { if( node->type == JOIN_LEAF && g_slist_length( node->overlaps ) > 0 ) { printf( "overlap of %s with:\n", im_skip_dir( node->name ) ); im_slist_map2( node->overlaps, (VSListMap2Fn) print_overlap, NULL, NULL ); } return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print and accumulate the error on an overlap. */ static void * print_overlap_error( OverlapInfo *lap, double *fac, double *total ) { double na = lap->nstats->coeff[4]; double oa = lap->ostats->coeff[4]; double err; if( fac ) { na *= fac[lap->node->index]; oa *= fac[lap->other->index]; } err = na - oa; printf( "-> file %s, error = %g\n", im_skip_dir( lap->other->name ), err ); *total += err*err; return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG /* Print and accumulate the overlap errors on a leaf. */ static void * print_overlap_errors( JoinNode *node, double *fac, double *total ) { if( node->type == JOIN_LEAF && g_slist_length( node->overlaps ) > 0 ) { printf( "overlap of %s (index %d) with:\n", im_skip_dir( node->name ), node->index ); im_slist_map2( node->overlaps, (VSListMap2Fn) print_overlap_error, fac, total ); } return( NULL ); } #endif /*DEBUG*/ /* Extract a rect. */ static int extract_rect( IMAGE *in, IMAGE *out, Rect *r ) { return( im_extract_area( in, out, r->left, r->top, r->width, r->height ) ); } /* Two images overlap in an area ... make a mask the size of the area, which * has 255 for every pixel where both images are non-zero. */ static int make_overlap_mask( IMAGE *mem, IMAGE *ref, IMAGE *sec, IMAGE *mask, Rect *rarea, Rect *sarea ) { IMAGE *t[6]; if( im_open_local_array( mem, t, 6, "mytemps", "p" ) || extract_rect( ref, t[0], rarea ) || extract_rect( sec, t[1], sarea ) || im_extract_band( t[0], t[2], 0 ) || im_extract_band( t[1], t[3], 0 ) || im_notequalconst( t[2], t[4], 0.0 ) || im_notequalconst( t[3], t[5], 0.0 ) || im_andimage( t[4], t[5], mask ) ) return( -1 ); return( 0 ); } /* Find the number of non-zero pixels in a mask image. */ static int count_nonzero( IMAGE *in, gint64 *count ) { double avg; if( im_avg( in, &avg ) ) return( -1 ); *count = (avg * VIPS_IMAGE_N_PELS( in )) / 255.0; return( 0 ); } /* Find stats on an area of an IMAGE ... consider only pixels for which the * mask is true. */ static DOUBLEMASK * find_image_stats( IMAGE *mem, IMAGE *in, IMAGE *mask, Rect *area ) { DOUBLEMASK *stats; IMAGE *t[4]; gint64 count; /* Extract area, build black image, mask out pixels we want. */ if( im_open_local_array( mem, t, 4, "find_image_stats", "p" ) || extract_rect( in, t[0], area ) || im_black( t[1], t[0]->Xsize, t[0]->Ysize, t[0]->Bands ) || im_clip2fmt( t[1], t[2], t[0]->BandFmt ) || im_ifthenelse( mask, t[0], t[2], t[3] ) ) return( NULL ); /* Get stats from masked image. */ if( !(stats = im_local_dmask( mem, im_stats( t[3] ) )) ) return( NULL ); /* Number of non-zero pixels in mask. */ if( count_nonzero( mask, &count ) ) return( NULL ); /* And scale masked average to match. */ stats->coeff[4] *= (double) count / VIPS_IMAGE_N_PELS( mask ); /* Yuk! Zap the deviation column with the pixel count. Used later to * determine if this is likely to be a significant overlap. */ stats->coeff[5] = count; #ifdef DEBUG if( count == 0 ) im_warn( "global_balance", "%s", _( "empty overlap!" ) ); #endif /*DEBUG*/ return( stats ); } /* Find the stats for an overlap struct. */ static int find_overlap_stats( OverlapInfo *lap ) { IMAGE *mem = lap->node->st->im; IMAGE *t1 = im_open_local( mem, "find_overlap_stats:1", "p" ); Rect rarea, sarea; /* Translate the overlap area into the coordinate scheme for the main * node. */ rarea = lap->overlap; rarea.left -= lap->node->cumtrn.oarea.left; rarea.top -= lap->node->cumtrn.oarea.top; /* Translate the overlap area into the coordinate scheme for the other * node. */ sarea = lap->overlap; sarea.left -= lap->other->cumtrn.oarea.left; sarea.top -= lap->other->cumtrn.oarea.top; /* Make a mask for the overlap. */ if( make_overlap_mask( mem, lap->node->trnim, lap->other->trnim, t1, &rarea, &sarea ) ) return( -1 ); /* Find stats for that area. */ if( !(lap->nstats = find_image_stats( mem, lap->node->trnim, t1, &rarea )) ) return( -1 ); if( !(lap->ostats = find_image_stats( mem, lap->other->trnim, t1, &sarea )) ) return( -1 ); return( 0 ); } /* Sub-fn. of below. */ static void * overlap_eq( OverlapInfo *this, JoinNode *node ) { if( this->other == node ) return( this ); else return( NULL ); } /* Is this an overlapping leaf? If yes, add to overlap list. */ static void * test_overlap( JoinNode *other, JoinNode *node ) { Rect overlap; OverlapInfo *lap; /* Is other a suitable leaf to overlap with node? */ if( other->type != JOIN_LEAF || node == other ) return( NULL ); /* Is there an overlap? */ im_rect_intersectrect( &node->cumtrn.oarea, &other->cumtrn.oarea, &overlap ); if( im_rect_isempty( &overlap ) ) return( NULL ); /* Is this a trivial overlap? Ignore it if it is. */ if( overlap.width * overlap.height < TRIVIAL ) /* Too few pixels. */ return( NULL ); /* Have we already added this overlap the other way around? ie. is * node on other's overlap list? */ if( im_slist_map2( other->overlaps, (VSListMap2Fn) overlap_eq, node, NULL ) ) return( NULL ); /* A new overlap - add to overlap list. */ if( !(lap = build_overlap( node, other, &overlap )) ) return( node ); /* Calculate overlap statistics. Open stuff relative to this, and * free quickly. */ if( find_overlap_stats( lap ) ) return( node ); /* If the pixel count either masked overlap is trivial, ignore this * overlap. */ if( lap->nstats->coeff[5] < TRIVIAL || lap->ostats->coeff[5] < TRIVIAL ) { #ifdef DEBUG printf( "trivial overlap ... junking\n" ); printf( "nstats count = %g, ostats count = %g\n", lap->nstats->coeff[5], lap->ostats->coeff[5] ); print_overlap( lap ); #endif /*DEBUG*/ overlap_destroy( lap ); } return( NULL ); } /* If this is a leaf, look at all other joins for a leaf that overlaps. Aside: * If this is a leaf, there should be an IMAGE. Flag an error if there is * not. */ static void * find_overlaps( JoinNode *node, SymbolTable *st ) { if( node->type == JOIN_LEAF ) { /* Check for image. */ if( !node->im ) { im_error( "im_global_balance", _( "unable to open \"%s\"" ), node->name ); return( node ); } if( !node->trnim ) error_exit( "global_balance: sanity failure #9834" ); return( im__map_table( st, (VipsSListMap2Fn) test_overlap, node, NULL ) ); } return( NULL ); } /* Bundle of variables for matrix creation. */ typedef struct { SymbolTable *st; /* Main table */ JoinNode *leaf; /* Leaf to be 1.000 */ DOUBLEMASK *K; /* LHS */ DOUBLEMASK *M; /* RHS */ int row; /* Current row */ } MatrixBundle; /* Add a new row for the nominated overlap to the matricies. */ static void * add_nominated( OverlapInfo *ovl, MatrixBundle *bun, double *gamma ) { double *Kp = bun->K->coeff + bun->row; double *Mp = bun->M->coeff + bun->row*bun->M->xsize; double ns = pow( ovl->nstats->coeff[4], 1/(*gamma) ); double os = pow( ovl->ostats->coeff[4], 1/(*gamma) ); Kp[0] = ns; Mp[ovl->other->index - 1] = os; bun->row++; return( NULL ); } /* Add a new row for an ordinary overlap to the matricies. */ static void * add_other( OverlapInfo *ovl, MatrixBundle *bun, double *gamma ) { double *Mp = bun->M->coeff + bun->row*bun->M->xsize; double ns = -pow( ovl->nstats->coeff[4], 1/(*gamma) ); double os = pow( ovl->ostats->coeff[4], 1/(*gamma) ); Mp[ovl->node->index - 1] = ns; Mp[ovl->other->index - 1] = os; bun->row++; return( NULL ); } /* Add stuff for node to matrix. */ static void * add_row( JoinNode *node, MatrixBundle *bun, double *gamma ) { if( node == bun->leaf ) im_slist_map2( node->overlaps, (VSListMap2Fn) add_nominated, bun, gamma ); else im_slist_map2( node->overlaps, (VSListMap2Fn) add_other, bun, gamma ); return( NULL ); } /* Fill K and M. leaf is image selected to have factor of 1.000. */ static void fill_matricies( SymbolTable *st, double gamma, DOUBLEMASK *K, DOUBLEMASK *M ) { MatrixBundle bun; bun.st = st; bun.leaf = st->leaf; bun.K = K; bun.M = M; bun.row = 0; /* Build matricies. */ im__map_table( st, (VipsSListMap2Fn) add_row, &bun, &gamma ); } /* Used to select the leaf whose coefficient we set to 1. */ static void * choose_leaf( JoinNode *node ) { if( node->type == JOIN_LEAF ) return( node ); return( NULL ); } /* Make an image from a node. */ static IMAGE * make_mos_image( SymbolTable *st, JoinNode *node, transform_fn tfn, void *a ) { IMAGE *im1, *im2, *out; switch( node->type ) { case JOIN_LR: case JOIN_TB: if( !(im1 = make_mos_image( st, node->arg1, tfn, a )) || !(im2 = make_mos_image( st, node->arg2, tfn, a )) || !(out = im_open_local( st->im, node->name, "p" )) ) return( NULL ); if( node->type == JOIN_LR ) { if( im_lrmerge( im1, im2, out, -node->dx, -node->dy, node->mwidth ) ) return( NULL ); } else { if( im_tbmerge( im1, im2, out, -node->dx, -node->dy, node->mwidth ) ) return( NULL ); } break; case JOIN_LRROTSCALE: case JOIN_TBROTSCALE: if( !(im1 = make_mos_image( st, node->arg1, tfn, a )) || !(im2 = make_mos_image( st, node->arg2, tfn, a )) || !(out = im_open_local( st->im, node->name, "p" )) ) return( NULL ); if( node->type == JOIN_LRROTSCALE ) { if( im__lrmerge1( im1, im2, out, node->a, node->b, node->dx, node->dy, node->mwidth ) ) return( NULL ); } else { if( im__tbmerge1( im1, im2, out, node->a, node->b, node->dx, node->dy, node->mwidth ) ) return( NULL ); } break; case JOIN_LEAF: /* Trivial case! */ if( !(out = tfn( node, a )) ) return( NULL ); break; case JOIN_CP: /* Very trivial case. */ out = make_mos_image( st, node->arg1, tfn, a ); break; default: error_exit( "internal error #982369824375987" ); /*NOTEACHED*/ return( NULL ); } return( out ); } /* Re-build mosaic. */ int im__build_mosaic( SymbolTable *st, IMAGE *out, transform_fn tfn, void *a ) { JoinNode *root = st->root; IMAGE *im1, *im2; switch( root->type ) { case JOIN_LR: case JOIN_TB: if( !(im1 = make_mos_image( st, root->arg1, tfn, a )) || !(im2 = make_mos_image( st, root->arg2, tfn, a )) ) return( -1 ); if( root->type == JOIN_LR ) { if( im_lrmerge( im1, im2, out, -root->dx, -root->dy, root->mwidth ) ) return( -1 ); } else { if( im_tbmerge( im1, im2, out, -root->dx, -root->dy, root->mwidth ) ) return( -1 ); } break; case JOIN_LRROTSCALE: case JOIN_TBROTSCALE: if( !(im1 = make_mos_image( st, root->arg1, tfn, a )) || !(im2 = make_mos_image( st, root->arg2, tfn, a )) ) return( -1 ); if( root->type == JOIN_LRROTSCALE ) { if( im__lrmerge1( im1, im2, out, root->a, root->b, root->dx, root->dy, root->mwidth ) ) return( -1 ); } else { if( im__tbmerge1( im1, im2, out, root->a, root->b, root->dx, root->dy, root->mwidth ) ) return( -1 ); } break; case JOIN_LEAF: /* Trivial case! Just one file in our mosaic. */ if( !(im1 = tfn( root, a )) || im_copy( im1, out ) ) return( -1 ); break; case JOIN_CP: /* Very trivial case. */ if( !(im1 = make_mos_image( st, root->arg1, tfn, a )) ) return( -1 ); if( im_copy( im1, out ) ) return( -1 ); break; default: error_exit( "internal error #982369824375987" ); /*NOTEACHED*/ } return( 0 ); } /* Find correction factors. */ static int find_factors( SymbolTable *st, double gamma ) { DOUBLEMASK *K; DOUBLEMASK *M; DOUBLEMASK *m1, *m2, *m3, *m4, *m5; double total; double avg; int i; /* Make output matricies. */ if( !(K = im_local_dmask( st->im, im_create_dmask( "K", 1, st->novl ) )) || !(M = im_local_dmask( st->im, im_create_dmask( "M", st->nim-1, st->novl ) )) ) return( -1 ); fill_matricies( st, gamma, K, M ); #ifdef DEBUG im_write_dmask( K ); im_write_dmask( M ); #endif /*DEBUG*/ /* Calculate LMS. */ if( !(m1 = im_local_dmask( st->im, im_mattrn( M, "lms:1" ) )) ) return( -1 ); if( !(m2 = im_local_dmask( st->im, im_matmul( m1, M, "lms:2" ) )) ) return( -1 ); if( !(m3 = im_local_dmask( st->im, im_matinv( m2, "lms:3" ) )) ) return( -1 ); if( !(m4 = im_local_dmask( st->im, im_matmul( m3, m1, "lms:4" ) )) ) return( -1 ); if( !(m5 = im_local_dmask( st->im, im_matmul( m4, K, "lms:5" ) )) ) return( -1 ); /* Make array of correction factors. */ if( !(st->fac = IM_ARRAY( st->im, st->nim, double )) ) return( -1 ); for( i = 0; i < m5->ysize; i++ ) st->fac[i + 1] = m5->coeff[i]; st->fac[0] = 1.0; /* Find average balance factor, normalise to that average. */ total = 0.0; for( i = 0; i < st->nim; i++ ) total += st->fac[i]; avg = total / st->nim; for( i = 0; i < st->nim; i++ ) st->fac[i] /= avg; #ifdef DEBUG /* Diagnostics! */ printf( "debugging output for im_global_balance():\n" ); for( i = 0; i < st->nim; i++ ) printf( "balance factor %d = %g\n", i, st->fac[i] ); total = 0.0; printf( "Overlap errors:\n" ); im__map_table( st, (VipsSListMap2Fn) print_overlap_errors, NULL, &total ); printf( "RMS error = %g\n", sqrt( total / st->novl ) ); total = 0.0; printf( "Overlap errors after adjustment:\n" ); im__map_table( st, (VipsSListMap2Fn) print_overlap_errors, st->fac, &total ); printf( "RMS error = %g\n", sqrt( total / st->novl ) ); #endif /*DEBUG*/ return( 0 ); } /* Look for all leaves, make sure we have a transformed version of each. */ static void * generate_trn_leaves( JoinNode *node, SymbolTable *st ) { if( node->type == JOIN_LEAF ) { /* Check for image. */ if( !node->im ) { im_error( "im_global_balance", _( "unable to open \"%s\"" ), node->name ); return( node ); } if( node->trnim ) error_exit( "global_balance: sanity failure #765" ); /* Special case: if this is an untransformed leaf (there will * always be at least one), then skip the affine. */ if( vips__transform_isidentity( &node->cumtrn ) ) node->trnim = node->im; else if( !(node->trnim = im_open_local( node->st->im, "trnleaf:1", "p" )) || vips__affine( node->im, node->trnim, &node->cumtrn ) ) return( node ); } return( NULL ); } /* Analyse mosaic. */ static int analyse_mosaic( SymbolTable *st, IMAGE *in ) { /* Parse Hist on in. */ if( im__parse_desc( st, in ) ) return( -1 ); /* Print parsed data. */ #ifdef DEBUG printf( "Input files:\n" ); im__map_table( st, (VipsSListMap2Fn) print_leaf, NULL, NULL ); printf( "\nOutput file:\n" ); print_node( st->root ); printf( "\nJoin commands:\n" ); print_joins( st->root, 0 ); #endif /*DEBUG*/ /* Generate transformed leaves. */ if( im__map_table( st, (VipsSListMap2Fn) generate_trn_leaves, st, NULL ) ) return( -1 ); /* Find overlaps. */ if( im__map_table( st, (VipsSListMap2Fn) find_overlaps, st, NULL ) ) return( -1 ); /* Scan table, counting and indexing input images and joins. */ im__map_table( st, (VipsSListMap2Fn) count_leaves, NULL, NULL ); im__map_table( st, (VipsSListMap2Fn) count_joins, NULL, NULL ); /* Select leaf to be 1.000. * This must be index == 0, unless you change stuff above! */ st->leaf = im__map_table( st, (VipsSListMap2Fn) choose_leaf, NULL, NULL ); /* And print overlaps. */ #ifdef DEBUG printf( "\nLeaf to be 1.000:\n" ); print_node( st->leaf ); printf( "\nOverlaps:\n" ); im__map_table( st, (VipsSListMap2Fn) print_overlaps, NULL, NULL ); printf( "\n%d input files, %d unique overlaps, %d joins\n", st->nim, st->novl, st->njoin ); #endif /*DEBUG*/ return( 0 ); } /* Scale im by fac --- if it's uchar/ushort, use a lut. If we can use a lut, * transform in linear space. If we can't, don't bother for efficiency. */ static IMAGE * transform( JoinNode *node, double *gamma ) { SymbolTable *st = node->st; IMAGE *in = node->im; double fac = st->fac[node->index]; IMAGE *out = im_open_local( st->im, node->name, "p" ); IMAGE *t1 = im_open_local( out, "transform:1", "p" ); IMAGE *t2 = im_open_local( out, "transform:2", "p" ); IMAGE *t3 = im_open_local( out, "transform:3", "p" ); IMAGE *t4 = im_open_local( out, "transform:4", "p" ); IMAGE *t5 = im_open_local( out, "transform:5", "p" ); if( !out || !t1 || !t2 || !t3 || !t4 || !t5 ) return( NULL ); if( fac == 1.0 ) { /* Easy! */ out = in; } else if( in->BandFmt == IM_BANDFMT_UCHAR ) { if( im_identity( t1, 1 ) || im_powtra( t1, t2, 1.0 / (*gamma) ) || im_lintra( fac, t2, 0.0, t3 ) || im_powtra( t3, t4, *gamma ) || im_clip2fmt( t4, t5, IM_BANDFMT_UCHAR ) || im_maplut( in, out, t5 ) ) return( NULL ); } else if( in->BandFmt == IM_BANDFMT_USHORT ) { if( im_identity_ushort( t1, 1, 65535 ) || im_powtra( t1, t2, 1.0 / (*gamma) ) || im_lintra( fac, t2, 0.0, t3 ) || im_powtra( t3, t4, *gamma ) || im_clip2fmt( t4, t5, IM_BANDFMT_USHORT ) || im_maplut( in, out, t5 ) ) return( NULL ); } else { /* Just im_lintra it. */ if( im_lintra( fac, in, 0.0, t1 ) || im_clip2fmt( t1, out, in->BandFmt ) ) return( NULL ); } return( out ); } /* As above, but output as float, not matched to input. */ static IMAGE * transformf( JoinNode *node, double *gamma ) { SymbolTable *st = node->st; IMAGE *in = node->im; double fac = node->st->fac[node->index]; IMAGE *out = im_open_local( st->im, node->name, "p" ); IMAGE *t1 = im_open_local( out, "transform:1", "p" ); IMAGE *t2 = im_open_local( out, "transform:2", "p" ); IMAGE *t3 = im_open_local( out, "transform:3", "p" ); IMAGE *t4 = im_open_local( out, "transform:4", "p" ); if( !out || !t1 || !t2 || !t3 || !t4 ) return( NULL ); if( fac == 1.0 ) { /* Easy! */ out = in; } else if( in->BandFmt == IM_BANDFMT_UCHAR ) { if( im_identity( t1, 1 ) || im_powtra( t1, t2, 1/(*gamma) ) || im_lintra( fac, t2, 0.0, t3 ) || im_powtra( t3, t4, *gamma ) || im_maplut( in, out, t4 ) ) return( NULL ); } else if( in->BandFmt == IM_BANDFMT_USHORT ) { if( im_identity_ushort( t1, 1, 65535 ) || im_powtra( t1, t2, 1/(*gamma) ) || im_lintra( fac, t2, 0.0, t3 ) || im_powtra( t3, t4, *gamma ) || im_maplut( in, out, t4 ) ) return( NULL ); } else { /* Just im_lintra it. */ if( im_lintra( fac, in, 0.0, out ) ) return( NULL ); } return( out ); } typedef struct { VipsOperation parent_instance; VipsImage *in; VipsImage *out; gboolean int_output; double gamma; } VipsGlobalbalance; typedef VipsOperationClass VipsGlobalbalanceClass; G_DEFINE_TYPE( VipsGlobalbalance, vips_globalbalance, VIPS_TYPE_OPERATION ); static int vips_globalbalance_build( VipsObject *object ) { VipsGlobalbalance *globalbalance = (VipsGlobalbalance *) object; SymbolTable *st; transform_fn trn; g_object_set( globalbalance, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_globalbalance_parent_class )-> build( object ) ) return( -1 ); if( !(st = im__build_symtab( globalbalance->out, SYM_TAB_SIZE )) || analyse_mosaic( st, globalbalance->in ) || find_factors( st, globalbalance->gamma ) ) return( -1 ); trn = globalbalance->int_output ? (transform_fn) transform : (transform_fn) transformf; if( im__build_mosaic( st, globalbalance->out, trn, &globalbalance->gamma ) ) return( -1 ); return( 0 ); } static void vips_globalbalance_class_init( VipsGlobalbalanceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "globalbalance"; object_class->description = _( "global balance an image mosaic" ); object_class->build = vips_globalbalance_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGlobalbalance, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsGlobalbalance, out ) ); VIPS_ARG_DOUBLE( class, "gamma", 5, _( "gamma" ), _( "Image gamma" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGlobalbalance, gamma ), 0.00001, 10, 1.6 ); VIPS_ARG_BOOL( class, "int_output", 7, _( "Int output" ), _( "Integer output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGlobalbalance, int_output ), FALSE ); } static void vips_globalbalance_init( VipsGlobalbalance *globalbalance ) { globalbalance->gamma = 1.6; } /** * vips_globalbalance: * @in: mosaic to rebuild * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @gamma: gamma of source images * @int_output: %TRUE for integer image output * * vips_globalbalance() can be used to remove contrast differences in * an assembled mosaic. * * It reads the History field attached to @in and builds a list of the source * images that were used to make the mosaic and the position that each ended * up at in the final image. * * It opens each of the source images in turn and extracts all parts which * overlap with any of the other images. It finds the average values in the * overlap areas and uses least-mean-square to find a set of correction * factors which will minimise overlap differences. It uses @gamma to * gamma-correct the source images before calculating the factors. A value of * 1.0 will stop this. * * Each of the source images is transformed with the appropriate correction * factor, then the mosaic is reassembled. @out is #VIPS_FORMAT_FLOAT, but * if @int_output is set, the output image is the same format as the input * images. * * There are some conditions that must be met before this operation can work: * the source images must all be present under the filenames recorded in the * history on @in, and the mosaic must have been built using only operations in * this package. * * See also: vips_remosaic(). * * Returns: 0 on success, -1 on error */ int vips_globalbalance( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "globalbalance", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/mosaicing/im_avgdxdy.c0000664000175000017500000000413712530402247015353 00000000000000/* @(#) Function which averages the difference x_secondary[] - x_reference[] * @(#) and y_secondary[] - y_reference[] of the structure points; * @(#) The rounded integer result is returnd into dx, dy * @(#) No IMAGES are involved in this function. * @(#) * @(#) int im_avgdxdy( points, dx, dy ) * @(#) TIE_POINTS *points; * @(#) int *dx, *dy; * @(#) * @(#) Returns 0 on sucess and -1 on error. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pmosaicing.h" int im__avgdxdy( TIE_POINTS *points, int *dx, int *dy ) { int sumdx, sumdy; int i; if( points->nopoints == 0 ) { im_error( "im_avgdxdy", "%s", _( "no points to average" ) ); return( -1 ); } /* Lots of points. */ sumdx = 0; sumdy = 0; for( i = 0; i < points->nopoints; i++ ) { sumdx += points->x_secondary[i] - points->x_reference[i]; sumdy += points->y_secondary[i] - points->y_reference[i]; } *dx = IM_RINT( (double) sumdx / (double) points->nopoints ); *dy = IM_RINT( (double) sumdy / (double) points->nopoints ); return( 0 ); } vips-8.2.2/libvips/mosaicing/im_lrmerge.c0000664000175000017500000006641612530402247015352 00000000000000/* Merge two images left-right. * * Copyright: 1990, 1991 N. Dessipris * Author: N. Dessipris * Written on: 20/09/1990 * Updated on: 17/04/1991 * 1/6/92: JC * - check for difference bug fixed * - geometry calculations improved and simplified * - small speedups Kirk Martinez for Sys5 29/4/93 * 7/8/93 JC * - ANSIfied * - memory leaks fixed, ready for partial v2 * - now does IM_CODING_LABQ too * 8/11/93 JC * - now propogates both input histories * - adds magic lines for global mosaic optimisation * * * May/1994 Ahmed Abbood * * - Modified to use partials on all IO * June/1995 Ahmed Abbood * * - Modified to work with different types of images. * * 16/6/95 JC * - tidied up a little * - added to VIPS! * 7/9/95 JC * - split into two parts: im_lrmerge() and im__lrmerge() * - latter called by im_lrmosaic() * - just the same as public im_lrmerge(), but adds no history * - necessary for im_global_balance() * - small bugs fixed * 10/10/95 JC * - better checks that parameters are sensible * 11/10/95 JC * - Kirk spotted what a load of rubbish Ahmed's code is * - rewritten - many, many bugs fixed * 24/1/97 JC * - now outputs bounding area of input images, rather than clipping * - ignores 0 pixels in blend * - small tidies * 7/2/97 JC * - new blend, caching * 25/2/97 JC * - old blend back, much simpler * - speed this up at some point if you think of an easy way to do it * 29/7/97 JC * - IM_CODING_LABQ blend now works, was bug in im_wrapone() * - small tidies * 10/1/98 JC * - merge LUTs now shared between all running mergers * - frees memory explicitly in im__stop_merge, for much better memory * use in large mosaics, huge improvement! * 18/2/98 JC * - im_demand_hint() call added * 19/2/98 JC * - now works for any dx/dy by calling im_insert() for bizarre cases * 26/9/99 JC * - ooops, blend lut was wrong! wonder how long that's been broken, * since feb97 I guess * 2/2/01 JC * - added tunable max blend width * 8/3/01 JC * - switched to integer arithmetic for integer blends * 7/11/01 JC * - more sophisticated transparency handling * - tiny blend speed up * 19/3/02 JC * - move fl cache to main state for better sharing * 15/8/02 JC * - records Xoffset/Yoffset * 20/6/05 * - now requires all bands == 0 for transparency (used to just check * band 0) * 24/1/11 * - gtk-doc * - match formats and bands automatically * 22/5/14 * - wrap as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* #define DEBUG */ #include #include #include #include #include "pmosaicing.h" /* Blend luts. Shared between all lr and tb blends. */ double *im__coef1 = NULL; double *im__coef2 = NULL; int *im__icoef1 = NULL; int *im__icoef2 = NULL; /* Create a lut for the merging area. Always BLEND_SIZE entries, we * scale later when we index it. */ int im__make_blend_luts( void ) { int x; /* Already done? */ if( im__coef1 && im__coef2 ) return( 0 ); /* Allocate and fill. */ im__coef1 = IM_ARRAY( NULL, BLEND_SIZE, double ); im__coef2 = IM_ARRAY( NULL, BLEND_SIZE, double ); im__icoef1 = IM_ARRAY( NULL, BLEND_SIZE, int ); im__icoef2 = IM_ARRAY( NULL, BLEND_SIZE, int ); if( !im__coef1 || !im__coef2 || !im__icoef1 || !im__icoef2 ) return( -1 ); for( x = 0; x < BLEND_SIZE; x++ ) { double a = IM_PI * x / (BLEND_SIZE - 1.0); im__coef1[x] = (cos( a ) + 1.0) / 2.0; im__coef2[x] = 1.0 - im__coef1[x]; im__icoef1[x] = im__coef1[x] * BLEND_SCALE; im__icoef2[x] = im__coef2[x] * BLEND_SCALE; } return( 0 ); } /* Return the position of the first non-zero pel from the left. */ static int find_first( REGION *ir, int *pos, int x, int y, int w ) { VipsPel *pr = IM_REGION_ADDR( ir, x, y ); IMAGE *im = ir->im; int ne = w * im->Bands; int i; /* Double the number of bands in a complex. */ if( vips_band_format_iscomplex( im->BandFmt ) ) ne *= 2; /* Search for the first non-zero band element from the left edge of the image. */ #define lsearch( TYPE ) { \ TYPE *p = (TYPE *) pr; \ \ for( i = 0; i < ne; i++ ) \ if( p[i] )\ break;\ } switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: lsearch( unsigned char ); break; case IM_BANDFMT_CHAR: lsearch( signed char ); break; case IM_BANDFMT_USHORT: lsearch( unsigned short ); break; case IM_BANDFMT_SHORT: lsearch( signed short ); break; case IM_BANDFMT_UINT: lsearch( unsigned int ); break; case IM_BANDFMT_INT: lsearch( signed int ); break; case IM_BANDFMT_FLOAT: lsearch( float ); break; case IM_BANDFMT_DOUBLE: lsearch( double ); break; case IM_BANDFMT_COMPLEX:lsearch( float ); break; case IM_BANDFMT_DPCOMPLEX:lsearch( double ); break; default: im_error( "im_lrmerge", "%s", _( "internal error" ) ); return( -1 ); } /* i is first non-zero band element, we want first non-zero pixel. */ *pos = x + i / im->Bands; return( 0 ); } /* Return the position of the first non-zero pel from the right. */ static int find_last( REGION *ir, int *pos, int x, int y, int w ) { VipsPel *pr = IM_REGION_ADDR( ir, x, y ); IMAGE *im = ir->im; int ne = w * im->Bands; int i; /* Double the number of bands in a complex. */ if( vips_band_format_iscomplex( im->BandFmt ) ) ne *= 2; /* Search for the first non-zero band element from the right. */ #define rsearch( TYPE ) { \ TYPE *p = (TYPE *) pr; \ \ for( i = ne - 1; i >= 0; i-- )\ if( p[i] )\ break;\ } switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: rsearch( unsigned char ); break; case IM_BANDFMT_CHAR: rsearch( signed char ); break; case IM_BANDFMT_USHORT: rsearch( unsigned short ); break; case IM_BANDFMT_SHORT: rsearch( signed short ); break; case IM_BANDFMT_UINT: rsearch( unsigned int ); break; case IM_BANDFMT_INT: rsearch( signed int ); break; case IM_BANDFMT_FLOAT: rsearch( float ); break; case IM_BANDFMT_DOUBLE: rsearch( double ); break; case IM_BANDFMT_COMPLEX:rsearch( float ); break; case IM_BANDFMT_DPCOMPLEX:rsearch( double ); break; default: im_error( "im_lrmerge", "%s", _( "internal error" ) ); return( -1 ); } /* i is first non-zero band element, we want first non-zero pixel. */ *pos = x + i / im->Bands; return( 0 ); } /* Make sure we have first/last for this area. */ static int make_firstlast( MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; Rect rr, sr; int y, yr, ys; int missing; /* We're going to build first/last ... lock it from other generate * threads. In fact it's harmless if we do get two writers, but we may * avoid duplicating work. */ g_mutex_lock( ovlap->fl_lock ); /* Do we already have first/last for this area? Bail out if we do. */ missing = 0; for( y = oreg->top; y < IM_RECT_BOTTOM( oreg ); y++ ) { const int j = y - ovlap->overlap.top; const int first = ovlap->first[j]; if( first < 0 ) { missing = 1; break; } } if( !missing ) { /* No work to do! */ g_mutex_unlock( ovlap->fl_lock ); return( 0 ); } /* Entire width of overlap in ref for scan-lines we want. */ rr.left = ovlap->overlap.left; rr.top = oreg->top; rr.width = ovlap->overlap.width; rr.height = oreg->height; rr.left -= ovlap->rarea.left; rr.top -= ovlap->rarea.top; /* Entire width of overlap in sec for scan-lines we want. */ sr.left = ovlap->overlap.left; sr.top = oreg->top; sr.width = ovlap->overlap.width; sr.height = oreg->height; sr.left -= ovlap->sarea.left; sr.top -= ovlap->sarea.top; #ifdef DEBUG printf( "im__lrmerge: making first/last for areas:\n" ); printf( "ref: left = %d, top = %d, width = %d, height = %d\n", rr.left, rr.top, rr.width, rr.height ); printf( "sec: left = %d, top = %d, width = %d, height = %d\n", sr.left, sr.top, sr.width, sr.height ); #endif /* Make pixels. */ if( im_prepare( rir, &rr ) || im_prepare( sir, &sr ) ) { g_mutex_unlock( ovlap->fl_lock ); return( -1 ); } /* Make first/last cache. */ for( y = oreg->top, yr = rr.top, ys = sr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { const int j = y - ovlap->overlap.top; int *first = &ovlap->first[j]; int *last = &ovlap->last[j]; /* Done this line already? */ if( *first < 0 ) { /* Search for start/end of overlap on this scan-line. */ if( find_first( sir, first, sr.left, ys, sr.width ) || find_last( rir, last, rr.left, yr, rr.width ) ) { g_mutex_unlock( ovlap->fl_lock ); return( -1 ); } /* Translate to output space. */ *first += ovlap->sarea.left; *last += ovlap->rarea.left; /* Clip to maximum blend width, if necessary. */ if( ovlap->mwidth >= 0 && *last - *first > ovlap->mwidth ) { int shrinkby = (*last - *first) - ovlap->mwidth; *first += shrinkby / 2; *last -= shrinkby / 2; } } } g_mutex_unlock( ovlap->fl_lock ); return( 0 ); } /* Test pixel == 0. */ #define TEST_ZERO( TYPE, T, RESULT ) { \ TYPE *tt = (T); \ int ii; \ \ for( ii = 0; ii < cb; ii++ ) \ if( tt[i] ) \ break; \ if( ii == cb ) \ (RESULT) = 1; \ } /* Blend two integer images. */ #define iblend( TYPE, B, IN1, IN2, OUT ) { \ TYPE *tr = (TYPE *) (IN1); \ TYPE *ts = (TYPE *) (IN2); \ TYPE *tq = (TYPE *) (OUT); \ const int cb = (B); \ const int left = IM_CLIP( 0, first - oreg->left, oreg->width ); \ const int right = IM_CLIP( left, last - oreg->left, oreg->width ); \ int ref_zero; \ int sec_zero; \ int x, b; \ int i; \ \ /* Left of the blend area. \ */ \ for( i = 0, x = 0; x < left; x++ ) { \ ref_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ \ /* In blend area. \ */ \ for( x = left; x < right; x++ ) { \ ref_zero = 0; \ sec_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ TEST_ZERO( TYPE, ts, sec_zero ); \ \ if( !ref_zero && !sec_zero ) { \ int inx = ((x + oreg->left - first) << \ BLEND_SHIFT) / bwidth; \ int c1 = im__icoef1[inx]; \ int c2 = im__icoef2[inx]; \ \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = c1 * tr[i] / BLEND_SCALE + \ c2 * ts[i] / BLEND_SCALE; \ } \ else if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ \ /* Right of blend. */ \ for( x = right; x < oreg->width; x++ ) { \ sec_zero = 0; \ TEST_ZERO( TYPE, ts, sec_zero ); \ if( !sec_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ } \ } /* Blend two float images. */ #define fblend( TYPE, B, IN1, IN2, OUT ) { \ TYPE *tr = (TYPE *) (IN1); \ TYPE *ts = (TYPE *) (IN2); \ TYPE *tq = (TYPE *) (OUT); \ const int cb = (B); \ const int left = IM_CLIP( 0, first - oreg->left, oreg->width ); \ const int right = IM_CLIP( left, last - oreg->left, oreg->width ); \ int ref_zero; \ int sec_zero; \ int x, b; \ int i; \ \ /* Left of the blend area. \ */ \ for( i = 0, x = 0; x < left; x++ ) { \ ref_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ \ /* In blend area. \ */ \ for( x = left; x < right; x++ ) { \ ref_zero = 0; \ sec_zero = 0; \ TEST_ZERO( TYPE, tr, ref_zero ); \ TEST_ZERO( TYPE, ts, sec_zero ); \ \ if( !ref_zero && !sec_zero ) { \ int inx = ((x + oreg->left - first) << \ BLEND_SHIFT) / bwidth; \ double c1 = im__coef1[inx]; \ double c2 = im__coef2[inx]; \ \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = c1 * tr[i] + c2 * ts[i]; \ } \ else if( !ref_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ } \ \ /* Right of blend. */ \ for( x = right; x < oreg->width; x++ ) { \ sec_zero = 0; \ TEST_ZERO( TYPE, ts, sec_zero ); \ if( !sec_zero ) \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = ts[i]; \ else \ for( b = 0; b < cb; b++, i++ ) \ tq[i] = tr[i]; \ } \ } /* Left-right blend function for non-labpack images. */ static int lr_blend( REGION *or, MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; IMAGE *im = or->im; Rect prr, psr; int y, yr, ys; /* Make sure we have a complete first/last set for this area. */ if( make_firstlast( inf, ovlap, oreg ) ) return( -1 ); /* Part of rr which we will output. */ prr = *oreg; prr.left -= ovlap->rarea.left; prr.top -= ovlap->rarea.top; /* Part of sr which we will output. */ psr = *oreg; psr.left -= ovlap->sarea.left; psr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &prr ) ) return( -1 ); if( im_prepare( sir, &psr ) ) return( -1 ); /* Loop down overlap area. */ for( y = oreg->top, yr = prr.top, ys = psr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { VipsPel *pr = IM_REGION_ADDR( rir, prr.left, yr ); VipsPel *ps = IM_REGION_ADDR( sir, psr.left, ys ); VipsPel *q = IM_REGION_ADDR( or, oreg->left, y ); const int j = y - ovlap->overlap.top; const int first = ovlap->first[j]; const int last = ovlap->last[j]; const int bwidth = last - first; switch( im->BandFmt ) { case IM_BANDFMT_UCHAR: iblend( unsigned char, im->Bands, pr, ps, q ); break; case IM_BANDFMT_CHAR: iblend( signed char, im->Bands, pr, ps, q ); break; case IM_BANDFMT_USHORT: iblend( unsigned short, im->Bands, pr, ps, q ); break; case IM_BANDFMT_SHORT: iblend( signed short, im->Bands, pr, ps, q ); break; case IM_BANDFMT_UINT: iblend( unsigned int, im->Bands, pr, ps, q ); break; case IM_BANDFMT_INT: iblend( signed int, im->Bands, pr, ps, q ); break; case IM_BANDFMT_FLOAT: fblend( float, im->Bands, pr, ps, q ); break; case IM_BANDFMT_DOUBLE: fblend( double, im->Bands, pr, ps, q ); break; case IM_BANDFMT_COMPLEX: fblend( float, im->Bands*2, pr, ps, q ); break; case IM_BANDFMT_DPCOMPLEX: fblend( double, im->Bands*2, pr, ps, q ); break; default: im_error( "im_lrmerge", "%s", _( "internal error" ) ); return( -1 ); } } return( 0 ); } /* Left-right blend function for IM_CODING_LABQ images. */ static int lr_blend_labpack( REGION *or, MergeInfo *inf, Overlapping *ovlap, Rect *oreg ) { REGION *rir = inf->rir; REGION *sir = inf->sir; Rect prr, psr; int y, yr, ys; /* Make sure we have a complete first/last set for this area. This * will just look at the top 8 bits of L, not all 10, but should be OK. */ if( make_firstlast( inf, ovlap, oreg ) ) return( -1 ); /* Part of rr which we will output. */ prr = *oreg; prr.left -= ovlap->rarea.left; prr.top -= ovlap->rarea.top; /* Part of sr which we will output. */ psr = *oreg; psr.left -= ovlap->sarea.left; psr.top -= ovlap->sarea.top; /* Make pixels. */ if( im_prepare( rir, &prr ) ) return( -1 ); if( im_prepare( sir, &psr ) ) return( -1 ); /* Loop down overlap area. */ for( y = oreg->top, yr = prr.top, ys = psr.top; y < IM_RECT_BOTTOM( oreg ); y++, yr++, ys++ ) { VipsPel *pr = IM_REGION_ADDR( rir, prr.left, yr ); VipsPel *ps = IM_REGION_ADDR( sir, psr.left, ys ); VipsPel *q = IM_REGION_ADDR( or, oreg->left, y ); const int j = y - ovlap->overlap.top; const int first = ovlap->first[j]; const int last = ovlap->last[j]; const int bwidth = last - first; float *fq = inf->merge; float *r = inf->from1; float *s = inf->from2; /* Unpack two bits we want. */ vips__LabQ2Lab_vec( r, pr, oreg->width ); vips__LabQ2Lab_vec( s, ps, oreg->width ); /* Blend as floats. */ fblend( float, 3, r, s, fq ); /* Re-pack to output buffer. */ vips__Lab2LabQ_vec( q, inf->merge, oreg->width ); } return( 0 ); } static void * lock_free( GMutex *lock ) { vips_g_mutex_free( lock ); return( NULL ); } /* Build basic per-call state and do some geometry calculations. Shared with * im_tbmerge, so not static. */ Overlapping * im__build_mergestate( const char *domain, IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { IMAGE **vec; Overlapping *ovlap; int x; if( !(vec = im__insert_base( domain, ref, sec, out )) || !(ovlap = IM_NEW( out, Overlapping )) ) return( NULL ); if( mwidth < -1 ) { im_error( domain, "%s", _( "mwidth must be -1 or >= 0" ) ); return( NULL ); } ovlap->ref = vec[0]; ovlap->sec = vec[1]; ovlap->out = out; ovlap->dx = dx; ovlap->dy = dy; ovlap->mwidth = mwidth; /* Area occupied by ref image. Place at (0,0) to start with. */ ovlap->rarea.left = 0; ovlap->rarea.top = 0; ovlap->rarea.width = ovlap->ref->Xsize; ovlap->rarea.height = ovlap->ref->Ysize; /* Area occupied by sec image. */ ovlap->sarea.left = -dx; ovlap->sarea.top = -dy; ovlap->sarea.width = ovlap->sec->Xsize; ovlap->sarea.height = ovlap->sec->Ysize; /* Compute overlap. */ im_rect_intersectrect( &ovlap->rarea, &ovlap->sarea, &ovlap->overlap ); if( im_rect_isempty( &ovlap->overlap ) ) { im_error( domain, "%s", _( "no overlap" ) ); return( NULL ); } /* Find position and size of output image. */ im_rect_unionrect( &ovlap->rarea, &ovlap->sarea, &ovlap->oarea ); /* Now: translate everything, so that the output image, not the left * image, is at (0,0). */ ovlap->rarea.left -= ovlap->oarea.left; ovlap->rarea.top -= ovlap->oarea.top; ovlap->sarea.left -= ovlap->oarea.left; ovlap->sarea.top -= ovlap->oarea.top; ovlap->overlap.left -= ovlap->oarea.left; ovlap->overlap.top -= ovlap->oarea.top; ovlap->oarea.left = 0; ovlap->oarea.top = 0; /* Make sure blend luts are built. */ im__make_blend_luts(); /* Size of first/last cache. Could be either of these ... just pick * the larger. */ ovlap->flsize = IM_MAX( ovlap->overlap.width, ovlap->overlap.height ); /* Build first/last cache. */ ovlap->first = IM_ARRAY( out, ovlap->flsize, int ); ovlap->last = IM_ARRAY( out, ovlap->flsize, int ); if( !ovlap->first || !ovlap->last ) return( NULL ); for( x = 0; x < ovlap->flsize; x++ ) ovlap->first[x] = -1; ovlap->fl_lock = vips_g_mutex_new(); if( im_add_close_callback( out, (im_callback_fn) lock_free, ovlap->fl_lock, NULL ) ) { vips_g_mutex_free( ovlap->fl_lock ); return( NULL ); } return( ovlap ); } /* Build per-call state. */ static Overlapping * build_lrstate( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { Overlapping *ovlap; if( !(ovlap = im__build_mergestate( "im_lrmerge", ref, sec, out, dx, dy, mwidth )) ) return( NULL ); /* Select blender. */ switch( ovlap->ref->Coding ) { case IM_CODING_LABQ: ovlap->blend = lr_blend_labpack; break; case IM_CODING_NONE: ovlap->blend = lr_blend; break; default: im_error( "im_lrmerge", "%s", _( "unknown coding type" ) ); return( NULL ); } /* Find the parts of output which come just from ref and just from sec. */ ovlap->rpart = ovlap->rarea; ovlap->spart = ovlap->sarea; ovlap->rpart.width -= ovlap->overlap.width; ovlap->spart.left += ovlap->overlap.width; ovlap->spart.width -= ovlap->overlap.width; /* Is there too much overlap? ie. right edge of ref image is greater * than right edge of sec image, or left > left. */ if( IM_RECT_RIGHT( &ovlap->rarea ) > IM_RECT_RIGHT( &ovlap->sarea ) || ovlap->rarea.left > ovlap->sarea.left ) { im_error( "im_lrmerge", "%s", _( "too much overlap" ) ); return( NULL ); } /* Max number of pixels we may have to blend over. */ ovlap->blsize = ovlap->overlap.width; return( ovlap ); } /* The area being demanded can be filled using only pels from either the ref * or the sec images. Attach output to the appropriate part of the input image. * area is the position that ir->im occupies in the output image. * * Shared with im_tbmerge(), so not static. */ int im__attach_input( REGION *or, REGION *ir, Rect *area ) { Rect r = or->valid; /* Translate to source coordinate space. */ r.left -= area->left; r.top -= area->top; /* Demand input. */ if( im_prepare( ir, &r ) ) return( -1 ); /* Attach or to ir. */ if( im_region_region( or, ir, &or->valid, r.left, r.top ) ) return( -1 ); return( 0 ); } /* The area being demanded requires pixels from the ref and sec images. As * above, but just do a sub-area of the output, and make sure we copy rather * than just pointer-fiddling. reg is the sub-area of or->valid we should do. * * Shared with im_tbmerge(), so not static. */ int im__copy_input( REGION *or, REGION *ir, Rect *area, Rect *reg ) { Rect r = *reg; /* Translate to source coordinate space. */ r.left -= area->left; r.top -= area->top; /* Paint this area of ir into or. */ if( im_prepare_to( ir, or, &r, reg->left, reg->top ) ) return( -1 ); return( 0 ); } /* Generate function for merge. This is shared between im_lrmerge() and * im_tbmerge(). */ int im__merge_gen( REGION *or, void *seq, void *a, void *b ) { MergeInfo *inf = (MergeInfo *) seq; Overlapping *ovlap = (Overlapping *) a; Rect *r = &or->valid; Rect rreg, sreg, oreg; /* Find intersection with overlap, ref and sec parts. */ im_rect_intersectrect( r, &ovlap->rpart, &rreg ); im_rect_intersectrect( r, &ovlap->spart, &sreg ); /* Do easy cases first: can we satisfy this demand with pixels just * from ref, or just from sec. */ if( im_rect_equalsrect( r, &rreg ) ) { if( im__attach_input( or, inf->rir, &ovlap->rarea ) ) return( -1 ); } else if( im_rect_equalsrect( r, &sreg ) ) { if( im__attach_input( or, inf->sir, &ovlap->sarea ) ) return( -1 ); } else { /* Difficult case - do in three stages: black out whole area, * copy in parts of ref and sec we touch, write blend area. * This could be sped up somewhat ... we will usually black * out far too much, and write to the blend area three times. * Upgrade in the future! */ /* Need intersections with whole of left & right, and overlap * too. */ im_rect_intersectrect( r, &ovlap->rarea, &rreg ); im_rect_intersectrect( r, &ovlap->sarea, &sreg ); im_rect_intersectrect( r, &ovlap->overlap, &oreg ); im_region_black( or ); if( !im_rect_isempty( &rreg ) ) if( im__copy_input( or, inf->rir, &ovlap->rarea, &rreg ) ) return( -1 ); if( !im_rect_isempty( &sreg ) ) if( im__copy_input( or, inf->sir, &ovlap->sarea, &sreg ) ) return( -1 ); /* Nasty: inf->rir and inf->sir now point to the same bit of * memory (part of or), and we've written twice. We need to * make sure we get fresh pixels for the blend, so we must * invalidate them both. Should maybe add a call to the API * for this. */ inf->rir->valid.width = inf->sir->valid.width = 0; /* Now blat in the blended area. */ if( !im_rect_isempty( &oreg ) ) if( ovlap->blend( or, inf, ovlap, &oreg ) ) return( -1 ); } return( 0 ); } /* Stop function. Shared with im_tbmerge(). Free explicitly to reduce mem * requirements quickly for large mosaics. */ int im__stop_merge( void *seq, void *a, void *b ) { MergeInfo *inf = (MergeInfo *) seq; if( inf->rir ) { im_region_free( inf->rir ); inf->rir = NULL; } if( inf->sir ) { im_region_free( inf->sir ); inf->sir = NULL; } if( inf->from1 ) { im_free( inf->from1 ); inf->from1 = NULL; } if( inf->from2 ) { im_free( inf->from2 ); inf->from2 = NULL; } if( inf->merge ) { im_free( inf->merge ); inf->merge = NULL; } im_free( inf ); return( 0 ); } /* Start function. Shared with im_tbmerge(). */ void * im__start_merge( IMAGE *out, void *a, void *b ) { Overlapping *ovlap = (Overlapping *) a; MergeInfo *inf; if( !(inf = IM_NEW( NULL, MergeInfo )) ) return( NULL ); /* Clear all ptrs. */ inf->rir = NULL; inf->sir = NULL; inf->from1 = NULL; inf->from2 = NULL; inf->merge = NULL; /* If this is going to be a IM_CODING_LABQ, we need IM_CODING_LABQ * blend buffers. */ if( out->Coding == IM_CODING_LABQ ) { inf->from1 = IM_ARRAY( NULL, ovlap->blsize * 3, float ); inf->from2 = IM_ARRAY( NULL, ovlap->blsize * 3, float ); inf->merge = IM_ARRAY( NULL, ovlap->blsize * 3, float ); if( !inf->from1 || !inf->from2 || !inf->merge ) { im__stop_merge( inf, NULL, NULL ); return( NULL ); } } /* Make input regions. */ inf->rir = im_region_create( ovlap->ref ); inf->sir = im_region_create( ovlap->sec ); if( !inf->rir || !inf->sir ) { im__stop_merge( inf, NULL, NULL ); return( NULL ); } return( inf ); } int im__lrmerge( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { Overlapping *ovlap; #ifdef DEBUG printf( "im__lrmerge %s %s %s %d %d %d\n", ref->filename, sec->filename, out->filename, dx, dy, mwidth ); printf( "ref is %d x %d pixels\n", ref->Xsize, ref->Ysize ); printf( "sec is %d x %d pixels\n", sec->Xsize, sec->Ysize ); #endif if( dx > 0 || dx < 1 - ref->Xsize ) { #ifdef DEBUG printf( "im__lrmerge: no overlap, using insert\n" ); #endif /* No overlap, use insert instead. */ if( im_insert( ref, sec, out, -dx, -dy ) ) return( -1 ); out->Xoffset = -dx; out->Yoffset = -dy; return( 0 ); } /* Build state for this join. */ if( !(ovlap = build_lrstate( ref, sec, out, dx, dy, mwidth )) ) return( -1 ); /* Prepare the output IMAGE. */ if( im_cp_descv( out, ovlap->ref, ovlap->sec, NULL ) ) return( -1 ); out->Xsize = ovlap->oarea.width; out->Ysize = ovlap->oarea.height; out->Xoffset = ovlap->sarea.left; out->Yoffset = ovlap->sarea.top; /* Set demand hints. */ if( im_demand_hint( out, IM_THINSTRIP, ovlap->ref, ovlap->sec, NULL ) ) return( -1 ); /* Generate! */ if( im_generate( out, im__start_merge, im__merge_gen, im__stop_merge, ovlap, NULL ) ) return( -1 ); return ( 0 ); } const char * im__get_mosaic_name( VipsImage *image ) { const char *name; if( vips_image_get_typeof( image, "mosaic-name" ) ) { if( vips_image_get_string( image, "mosaic-name", &name ) ) return( NULL ); } else name = image->filename; return( name ); } void im__add_mosaic_name( VipsImage *image ) { static int serial = 0; char name[256]; /* We must override any inherited name, so don't test for doesn't * exist before setting. */ vips_snprintf( name, 256, "mosaic-temp-%d", serial++ ); vips_image_set_string( image, "mosaic-name", name ); } int im_lrmerge( IMAGE *ref, IMAGE *sec, IMAGE *out, int dx, int dy, int mwidth ) { if( im__lrmerge( ref, sec, out, dx, dy, mwidth ) ) return( -1 ); im__add_mosaic_name( out ); if( im_histlin( out, "#LRJOIN <%s> <%s> <%s> <%d> <%d> <%d>", im__get_mosaic_name( ref ), im__get_mosaic_name( sec ), im__get_mosaic_name( out ), -dx, -dy, mwidth ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/mosaicing/Makefile.am0000664000175000017500000000071512530402247015106 00000000000000noinst_LTLIBRARIES = libmosaicing.la libmosaicing_la_SOURCES = \ mosaicing.c \ merge.c \ mosaic.c \ match.c \ mosaic1.c \ global_balance.c \ im_avgdxdy.c \ im_chkpair.c \ im_clinear.c \ im_improve.c \ im_initialize.c \ im_lrcalcon.c \ im_lrmerge.c \ im_lrmosaic.c \ im_tbcalcon.c \ im_tbmerge.c \ im_remosaic.c \ im_tbmosaic.c \ global_balance.h \ pmosaicing.h AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/mosaicing/mosaic.c0000664000175000017500000002166112651717575014515 00000000000000/* mosaic two images left/right or up/down * * 22/5/14 * - from vips_mosaic() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is a simple wrapper over the old vips7 functions. At some point we * should rewrite this as a pure vips8 class and redo the vips7 functions as * wrappers over this. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pmosaicing.h" typedef struct { VipsOperation parent_instance; VipsImage *ref; VipsImage *sec; VipsImage *out; VipsDirection direction; int xref; int yref; int xsec; int ysec; int mblend; int bandno; int hwindow; int harea; int dx0; int dy0; double scale1; double angle1; double dx1; double dy1; } VipsMosaic; typedef VipsOperationClass VipsMosaicClass; G_DEFINE_TYPE( VipsMosaic, vips_mosaic, VIPS_TYPE_OPERATION ); static int vips_mosaic_build( VipsObject *object ) { VipsMosaic *mosaic = (VipsMosaic *) object; VipsImage *x; int dx0; int dy0; double scale1; double angle1; double dx1; double dy1; g_object_set( mosaic, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_mosaic_parent_class )->build( object ) ) return( -1 ); /* A placeholder used to ensure that memory used by the analysis * phase is freed as soon as possible. */ x = vips_image_new(); switch( mosaic->direction ) { case VIPS_DIRECTION_HORIZONTAL: if( im__find_lroverlap( mosaic->ref, mosaic->sec, x, mosaic->bandno, mosaic->xref, mosaic->yref, mosaic->xsec, mosaic->ysec, mosaic->hwindow, mosaic->harea, &dx0, &dy0, &scale1, &angle1, &dx1, &dy1 ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); break; case VIPS_DIRECTION_VERTICAL: if( im__find_tboverlap( mosaic->ref, mosaic->sec, x, mosaic->bandno, mosaic->xref, mosaic->yref, mosaic->xsec, mosaic->ysec, mosaic->hwindow, mosaic->harea, &dx0, &dy0, &scale1, &angle1, &dx1, &dy1 ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); break; default: g_assert_not_reached(); /* Compiler warnings. */ dx0 = 0; dy0 = 0; scale1 = 1; angle1 = 1; dx1 = 0; dy1 = 0; } g_object_set( mosaic, "dx0", dx0, "dy0", dy0, "scale1", scale1, "angle1", angle1, "dx1", dx1, "dy1", dy1, NULL ); if( vips_merge( mosaic->ref, mosaic->sec, &x, mosaic->direction, mosaic->dx0, mosaic->dy0, "mblend", mosaic->mblend, NULL ) ) return( -1 ); if( vips_image_write( x, mosaic->out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } static void vips_mosaic_class_init( VipsMosaicClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "mosaic"; object_class->description = _( "mosaic two images" ); object_class->build = vips_mosaic_build; VIPS_ARG_IMAGE( class, "ref", 1, _( "Reference" ), _( "Reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, ref ) ); VIPS_ARG_IMAGE( class, "sec", 2, _( "Secondary" ), _( "Secondary image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, sec ) ); VIPS_ARG_IMAGE( class, "out", 3, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, out ) ); VIPS_ARG_ENUM( class, "direction", 4, _( "Direction" ), _( "Horizontal or vertcial mosaic" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); VIPS_ARG_INT( class, "xref", 5, _( "xref" ), _( "Position of reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, xref ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "yref", 6, _( "yref" ), _( "Position of reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, yref ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "xsec", 7, _( "xsec" ), _( "Position of secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, xsec ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "ysec", 8, _( "ysec" ), _( "Position of secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic, ysec ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "hwindow", 9, _( "hwindow" ), _( "Half window size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic, hwindow ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "harea", 10, _( "harea" ), _( "Half area size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic, harea ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "mblend", 11, _( "Max blend" ), _( "Maximum blend size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic, mblend ), 0, 10000, 10 ); VIPS_ARG_INT( class, "bandno", 12, _( "Search band" ), _( "Band to search for features on" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic, bandno ), 0, 10000, 0 ); VIPS_ARG_INT( class, "dx0", 13, _( "Integer offset" ), _( "Detected integer offset" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, dx0 ), -10000000, 10000000, 0 ); VIPS_ARG_INT( class, "dy0", 14, _( "Integer offset" ), _( "Detected integer offset" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, dy0 ), -10000000, 10000000, 0 ); VIPS_ARG_DOUBLE( class, "scale1", 15, _( "Scale" ), _( "Detected scale" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, scale1 ), -10000000.0, 10000000.0, 1.0 ); VIPS_ARG_DOUBLE( class, "angle1", 16, _( "Angle" ), _( "Detected rotation" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, angle1 ), -10000000.0, 10000000.0, 0.0 ); VIPS_ARG_DOUBLE( class, "dx1", 17, _( "First-order displacement" ), _( "Detected first-order displacement" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, dx1 ), -10000000.0, 10000000.0, 0.0 ); VIPS_ARG_DOUBLE( class, "dy1", 17, _( "First-order displacement" ), _( "Detected first-order displacement" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsMosaic, dy1 ), -10000000.0, 10000000.0, 0.0 ); } static void vips_mosaic_init( VipsMosaic *mosaic ) { mosaic->mblend = 10; mosaic->hwindow = 5; mosaic->harea = 15; mosaic->scale1 = 1.0; } /** * vips_mosaic: * @ref: reference image * @sec: secondary image * @out: output image * @direction: horizontal or vertical join * @xref: position in reference image * @yref: position in reference image * @xsec: position in secondary image * @ysec: position in secondary image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @bandno: band to search for features * @hwindow: half window size * @harea: half search size * @mblend: maximum blend size * * This operation joins two images left-right (with @ref on the left) or * top-bottom (with @ref above) given an approximate overlap. * * @sec is positioned so that the pixel (@xsec, @ysec) in @sec lies on top of * the pixel (@xref, @yref) in @ref. The overlap area is divided into three * sections, 20 high-contrast points in band @bandno of image @ref are found * in each, and each high-contrast point is searched for in @sec using * @hwindow and @harea (see vips_correl()). * * A linear model is fitted to the 60 tie-points, points a long way from the * fit are discarded, and the model refitted until either too few points * remain or the model reaches good agreement. * * The detected displacement is used with vips_merge() to join the two images * together. * * See also: vips_merge(), vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_mosaic( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int xref, int yref, int xsec, int ysec, ... ) { va_list ap; int result; va_start( ap, ysec ); result = vips_call_split( "mosaic", ap, ref, sec, out, direction, xref, yref, xsec, ysec ); va_end( ap ); return( result ); } vips-8.2.2/libvips/mosaicing/Makefile.in0000664000175000017500000005555612651721157015144 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/mosaicing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libmosaicing_la_LIBADD = am_libmosaicing_la_OBJECTS = mosaicing.lo merge.lo mosaic.lo match.lo \ mosaic1.lo global_balance.lo im_avgdxdy.lo im_chkpair.lo \ im_clinear.lo im_improve.lo im_initialize.lo im_lrcalcon.lo \ im_lrmerge.lo im_lrmosaic.lo im_tbcalcon.lo im_tbmerge.lo \ im_remosaic.lo im_tbmosaic.lo libmosaicing_la_OBJECTS = $(am_libmosaicing_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libmosaicing_la_SOURCES) DIST_SOURCES = $(libmosaicing_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libmosaicing.la libmosaicing_la_SOURCES = \ mosaicing.c \ merge.c \ mosaic.c \ match.c \ mosaic1.c \ global_balance.c \ im_avgdxdy.c \ im_chkpair.c \ im_clinear.c \ im_improve.c \ im_initialize.c \ im_lrcalcon.c \ im_lrmerge.c \ im_lrmosaic.c \ im_tbcalcon.c \ im_tbmerge.c \ im_remosaic.c \ im_tbmosaic.c \ global_balance.h \ pmosaicing.h AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/mosaicing/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/mosaicing/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libmosaicing.la: $(libmosaicing_la_OBJECTS) $(libmosaicing_la_DEPENDENCIES) $(EXTRA_libmosaicing_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libmosaicing_la_OBJECTS) $(libmosaicing_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/global_balance.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_avgdxdy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_chkpair.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_clinear.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_improve.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_initialize.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_lrcalcon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_lrmerge.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_lrmosaic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_remosaic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_tbcalcon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_tbmerge.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_tbmosaic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/match.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/merge.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mosaic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mosaic1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mosaicing.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/mosaicing/im_tbmosaic.c0000664000175000017500000001457012530402247015510 00000000000000/* join top-bottom with an approximate overlap * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 07/11/1989 * Modified on : 29/11/1989, 18/04/1991 * Modified and debugged by Ahmed Abbood . 1995 * 14/6/95 JC * - adapted for new balance ideas * - more bug-fixes * 1/11/95 JC * - frees memory used by analysis phase as soon as possible * - means large mosaics use significantly less peak memory * 26/3/96 JC * - now calls im_tbmerge() rather than im__tbmerge() * 30/7/97 JC * - im__find_tboverlap() returns 1st order params too * 2/2/01 JC * - added tunable max blend width * 24/2/05 * - im_scale() makes it work for any image type * 25/1/11 * - gtk-doc * - remove balance stuff * - any mix of types and bands * - cleanups */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" int im__find_tboverlap( IMAGE *ref_in, IMAGE *sec_in, IMAGE *out, int bandno_in, int xref, int yref, int xsec, int ysec, int halfcorrelation, int halfarea, int *dx0, int *dy0, double *scale1, double *angle1, double *dx1, double *dy1 ) { Rect top, bottom, overlap; IMAGE *ref, *sec; IMAGE *t[6]; TIE_POINTS points, *p_points; /* defined in mosaic.h */ TIE_POINTS newpoints, *p_newpoints; int i; int dx, dy; /* Test cor and area. */ if( halfcorrelation < 0 || halfarea < 0 || halfarea < halfcorrelation ) { im_error( "im_tbmosaic", "%s", _( "bad area parameters" ) ); return( -1 ); } /* Set positions of top and bottom. */ top.left = 0; top.top = 0; top.width = ref_in->Xsize; top.height = ref_in->Ysize; bottom.left = xref - xsec; bottom.top = yref - ysec; bottom.width = sec_in->Xsize; bottom.height = sec_in->Ysize; /* Find overlap. */ im_rect_intersectrect( &top, &bottom, &overlap ); if( overlap.width < 2 * halfarea + 1 || overlap.height < 2 * halfarea + 1 ) { im_error( "im_tbmosaic", "%s", _( "overlap too small for search" ) ); return( -1 ); } /* Extract overlaps as 8-bit, 1 band. */ if( !(ref = im_open_local( out, "temp_one", "t" )) || !(sec = im_open_local( out, "temp_two", "t" )) || im_open_local_array( out, t, 6, "im_tbmosaic", "p" ) || im_extract_area( ref_in, t[0], overlap.left, overlap.top, overlap.width, overlap.height ) || im_extract_area( sec_in, t[1], overlap.left - bottom.left, overlap.top - bottom.top, overlap.width, overlap.height ) ) return( -1 ); if( ref_in->Coding == IM_CODING_LABQ ) { if( im_LabQ2Lab( t[0], t[2] ) || im_LabQ2Lab( t[1], t[3] ) || im_Lab2disp( t[2], t[4], im_col_displays( 1 ) ) || im_Lab2disp( t[3], t[5], im_col_displays( 1 ) ) || im_extract_band( t[4], ref, 1 ) || im_extract_band( t[5], sec, 1 ) ) return( -1 ); } else if( ref_in->Coding == IM_CODING_NONE ) { if( im_extract_band( t[0], t[2], bandno_in ) || im_extract_band( t[1], t[3], bandno_in ) || im_scale( t[2], ref ) || im_scale( t[3], sec ) ) return( -1 ); } else { im_error( "im_tbmosaic", "%s", _( "unknown Coding type" ) ); return( -1 ); } /* Initialise and fill TIE_POINTS */ p_points = &points; p_newpoints = &newpoints; p_points->reference = ref_in->filename; p_points->secondary = sec_in->filename; p_points->nopoints = IM_MAXPOINTS; p_points->deltax = 0; p_points->deltay = 0; p_points->halfcorsize = halfcorrelation; p_points->halfareasize = halfarea; /* Initialise the structure */ for( i = 0; i < IM_MAXPOINTS; i++ ) { p_points->x_reference[i] = 0; p_points->y_reference[i] = 0; p_points->x_secondary[i] = 0; p_points->y_secondary[i] = 0; p_points->contrast[i] = 0; p_points->correlation[i] = 0.0; p_points->dx[i] = 0.0; p_points->dy[i] = 0.0; p_points->deviation[i] = 0.0; } /* Search ref for possible tie-points. Sets: p_points->contrast, * p_points->x,y_reference. */ if( im__tbcalcon( ref, p_points ) ) return( -1 ); /* For each candidate point, correlate against corresponding part of * sec. Sets x,y_secondary and fills correlation and dx, dy. */ if( im__chkpair( ref, sec, p_points ) ) return( -1 ); /* First call to im_clinear(). */ if( im__initialize( p_points ) ) return( -1 ); /* Improve the selection of tiepoints until all abs(deviations) are * < 1.0 by deleting all wrong points. */ if( im__improve( p_points, p_newpoints ) ) return( -1 ); /* Average remaining offsets. */ if( im__avgdxdy( p_newpoints, &dx, &dy ) ) return( -1 ); /* Offset with overlap position. */ *dx0 = -bottom.left + dx; *dy0 = -bottom.top + dy; /* Write 1st order parameters too. */ *scale1 = newpoints.l_scale; *angle1 = newpoints.l_angle; *dx1 = newpoints.l_deltax; *dy1 = newpoints.l_deltay; return( 0 ); } int im_tbmosaic( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int balancetype, int mwidth ) { int dx0, dy0; double scale1, angle1, dx1, dy1; IMAGE *dummy; /* Correct overlap. dummy is just a placeholder used to ensure that * memory used by the analysis phase is freed as soon as possible. */ if( !(dummy = im_open( "placeholder:1", "p" )) ) return( -1 ); if( im__find_tboverlap( ref, sec, dummy, bandno, xref, yref, xsec, ysec, hwindowsize, hsearchsize, &dx0, &dy0, &scale1, &angle1, &dx1, &dy1 ) ) { im_close( dummy ); return( -1 ); } im_close( dummy ); /* Merge top-bottom. */ if( im_tbmerge( ref, sec, out, dx0, dy0, mwidth ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/mosaicing/im_clinear.c0000664000175000017500000001052312530402247015316 00000000000000/* @(#) Function which calculates the coefficients between corresponding * @(#) points from reference and secondary images (probably from the scanner), * @(#) previously calculated using the functions im_calcon() and im_chpair() * @(#) It is assummed that a selection of the best(?) possible points has * @(#) been already carried out and that those nopoints points are in arrays * @(#) x1, y1 and x2, y2 * @(#) No IMAGES are involved in this function and the calculated parameters * @(#) are returned in scale angle deltax and deltay of the TIE_POINTS struct. * @(#) * @(#) int im_clinear( points ) * @(#) TIE_POINTS *points; * @(#) * @(#) Returns 0 on sucess and -1 on error. * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 20/12/1990 * Modified on : 18/04/1991 * 24/1/97 JC * - tiny mem leak fixed */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pmosaicing.h" int im__clinear( TIE_POINTS *points ) { double **mat; /* matrix mar[4][4] */ double *g; /* vector g[1][4] */ double value; double sx1=0.0, sx1x1=0.0, sy1=0.0, sy1y1=0.0, sx1y1 = 0.0; double sx2x1=0.0, sx2y1=0.0, sx2=0.0, sy2=0.0, sy2y1=0.0, sy2x1=0.0; int i, j; int elms; double scale, angle, xdelta, ydelta; int *xref, *yref, *xsec, *ysec; double *dx, *dy, *dev; xref = &points->x_reference[0]; yref = &points->y_reference[0]; xsec = &points->x_secondary[0]; ysec = &points->y_secondary[0]; dx = &points->dx[0]; dy = &points->dy[0]; dev = &points->deviation[0]; elms = points->nopoints; if( !(mat = im_dmat_alloc( 0, 3, 0, 3 )) ) return( -1 ); if( !(g = im_dvector( 0, 3 )) ) { im_free_dmat( mat, 0, 3, 0, 3 ); return( -1 ); } for( i = 0; i < points->nopoints; i++ ) { sx1 += xref[i]; sx1x1 += xref[i] * xref[i]; sy1 += yref[i]; sy1y1 += yref[i] * yref[i]; sx1y1 += xref[i] * yref[i]; sx2x1 += xsec[i] * xref[i]; sx2y1 += xsec[i] * yref[i]; sy2y1 += ysec[i] * yref[i]; sy2x1 += ysec[i] * xref[i]; sx2 += xsec[i]; sy2 += ysec[i]; } mat[0][0] = sx1x1 + sy1y1; mat[0][1] = 0; mat[0][2] = sx1; mat[0][3] = sy1; mat[1][0] = 0; mat[1][1] = sx1x1 + sy1y1; mat[1][2] = -sy1; mat[1][3] = sx1; mat[2][0] = sx1; mat[2][1] = -sy1; mat[2][2] = (double)elms; mat[2][3] = 0.0; mat[3][0] = sy1; mat[3][1] = sx1; mat[3][2] = 0.0; mat[3][3] = (double)elms; g[0] = sx2x1 + sy2y1; g[1] = -sx2y1 + sy2x1; g[2] = sx2; g[3] = sy2; if( im_invmat( mat, 4 ) ) { im_free_dmat( mat, 0, 3, 0, 3 ); im_free_dvector( g, 0, 3 ); im_error( "im_clinear", "%s", _( "im_invmat failed" ) ); return( -1 ); } scale = 0.0; angle = 0.0; xdelta = 0.0; ydelta = 0.0; for( j = 0; j < 4; j++ ) { scale += mat[0][j] * g[j]; angle += mat[1][j] * g[j]; xdelta += mat[2][j] * g[j]; ydelta += mat[3][j] * g[j]; } /* find the deviation of each point for the estimated variables * if it greater than 1 then the solution is not good enough * but this is handled by the main program */ for( i = 0; i < points->nopoints; i++ ) { dx[i] = xsec[i] - ((scale * xref[i]) - (angle * yref[i]) + xdelta); dy[i] = ysec[i] - ((angle * xref[i]) + (scale * yref[i]) + ydelta); value = sqrt( dx[i]*dx[i] + dy[i]*dy[i] ); dev[i] = value; } points->l_scale = scale; points->l_angle = angle; points->l_deltax = xdelta; points->l_deltay = ydelta; im_free_dmat( mat, 0, 3, 0, 3 ); im_free_dvector( g, 0, 3 ); return( 0 ); } vips-8.2.2/libvips/mosaicing/match.c0000664000175000017500000002130512530402247014310 00000000000000/* Match images. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pmosaicing.h" /* Given a pair of points, return scale, angle, dx, dy to resample the 2nd * image with. */ int im__coeff( int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, double *a, double *b, double *dx, double *dy ) { DOUBLEMASK *in, *out; if( !(in = im_create_dmask( "in", 4, 4 )) ) return( -1 ); in->coeff[0] = (double)xs1; in->coeff[1] = (double)-ys1; in->coeff[2] = 1.0; in->coeff[3] = 0.0; in->coeff[4] = (double)ys1; in->coeff[5] = (double)xs1; in->coeff[6] = 0.0; in->coeff[7] = 1.0; in->coeff[8] = (double)xs2; in->coeff[9] = (double)-ys2; in->coeff[10] = 1.0; in->coeff[11] = 0.0; in->coeff[12] = (double)ys2; in->coeff[13] = (double)xs2; in->coeff[14] = 0.0; in->coeff[15] = 1.0; if( !(out = im_matinv( in, "out" )) ) { im_free_dmask( in ); return( -1 ); } *a = out->coeff[0]*xr1 + out->coeff[1]*yr1 + out->coeff[2]*xr2 + out->coeff[3]*yr2; *b = out->coeff[4]*xr1 + out->coeff[5]*yr1 + out->coeff[6]*xr2 + out->coeff[7]*yr2; *dx= out->coeff[8]*xr1 + out->coeff[9]*yr1 + out->coeff[10]*xr2 + out->coeff[11]*yr2; *dy= out->coeff[12]*xr1 + out->coeff[13]*yr1 + out->coeff[14]*xr2 + out->coeff[15]*yr2; im_free_dmask( in ); im_free_dmask( out ); return( 0 ); } typedef struct { VipsOperation parent_instance; VipsImage *ref; VipsImage *sec; VipsImage *out; int xr1; int yr1; int xs1; int ys1; int xr2; int yr2; int xs2; int ys2; int hwindow; int harea; gboolean search; VipsInterpolate *interpolate; } VipsMatch; typedef VipsOperationClass VipsMatchClass; G_DEFINE_TYPE( VipsMatch, vips_match, VIPS_TYPE_OPERATION ); static int vips_match_build( VipsObject *object ) { VipsMatch *match = (VipsMatch *) object; double a, b, dx, dy; VipsArrayInt *oarea; VipsImage *x; g_object_set( match, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_match_parent_class )->build( object ) ) return( -1 ); if( !match->interpolate ) match->interpolate = vips_interpolate_new( "bilinear" ); if( match->search ) { int xs, ys; double cor; if( im_correl( match->ref, match->sec, match->xr1, match->yr1, match->xs1, match->ys1, match->hwindow, match->harea, &cor, &xs, &ys ) ) return( -1 ); match->xs1 = xs; match->ys1 = ys; if( im_correl( match->ref, match->sec, match->xr2, match->yr2, match->xs2, match->ys2, match->hwindow, match->harea, &cor, &xs, &ys ) ) return( -1 ); match->xs2 = xs; match->ys2 = ys; } /* Solve to get scale + rot + disp to obtain match. */ if( im__coeff( match->xr1, match->yr1, match->xs1, match->ys1, match->xr2, match->yr2, match->xs2, match->ys2, &a, &b, &dx, &dy ) ) return( -1 ); /* Output area of ref image. */ oarea = vips_array_int_newv( 4, 0, 0, match->ref->Xsize, match->ref->Ysize ); if( vips_affine( match->sec, &x, a, -b, b, a, "interpolate", match->interpolate, "odx", dx, "ody", dy, "oarea", oarea, NULL ) ) { vips_area_unref( VIPS_AREA( oarea ) ); return( -1 ); } vips_area_unref( VIPS_AREA( oarea ) ); if( vips_image_write( x, match->out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } static void vips_match_class_init( VipsMatchClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "match"; object_class->description = _( "first-order match of two images" ); object_class->build = vips_match_build; VIPS_ARG_IMAGE( class, "ref", 1, _( "Reference" ), _( "Reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, ref ) ); VIPS_ARG_IMAGE( class, "sec", 2, _( "Secondary" ), _( "Secondary image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, sec ) ); VIPS_ARG_IMAGE( class, "out", 3, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMatch, out ) ); VIPS_ARG_INT( class, "xr1", 5, _( "xr1" ), _( "Position of first reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, xr1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "yr1", 6, _( "yr1" ), _( "Position of first reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, yr1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xs1", 7, _( "xs1" ), _( "Position of first secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, xs1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "ys1", 8, _( "ys1" ), _( "Position of first secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, ys1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xr2", 9, _( "xr2" ), _( "Position of second reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, xr2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "yr2", 10, _( "yr2" ), _( "Position of second reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, yr2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xs2", 11, _( "xs2" ), _( "Position of second secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, xs2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "ys2", 12, _( "ys2" ), _( "Position of second secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMatch, ys2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "hwindow", 13, _( "hwindow" ), _( "Half window size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMatch, hwindow ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "harea", 14, _( "harea" ), _( "Half area size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMatch, harea ), 0, 1000000000, 1 ); VIPS_ARG_BOOL( class, "search", 15, _( "search" ), _( "Search to improve tie-points" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMatch, search ), FALSE ); VIPS_ARG_INTERPOLATE( class, "interpolate", 16, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMatch, interpolate ) ); } static void vips_match_init( VipsMatch *match ) { match->hwindow = 5; match->harea = 15; match->search = FALSE; } /** * vips_match: * @ref: reference image * @sec: secondary image * @out: output image * @xr1: first reference tie-point * @yr1: first reference tie-point * @xs1: first secondary tie-point * @ys1: first secondary tie-point * @xr2: second reference tie-point * @yr2: second reference tie-point * @xs2: second secondary tie-point * @ys2: second secondary tie-point * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @search: search to improve tie-points * @hwindow: half window size * @harea: half search size * @interpolate: interpolate pixels with this * * Scale, rotate and translate @sec so that the tie-points line up. * * If @search is %TRUE, before performing the transformation, the tie-points * are improved by searching an area of @sec of size @harea for a * match of size @hwindow to @ref. * * This function will only work well for small rotates and scales. * * Returns: 0 on success, -1 on error */ int vips_match( VipsImage *ref, VipsImage *sec, VipsImage **out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, ... ) { va_list ap; int result; va_start( ap, ys2 ); result = vips_call_split( "match", ap, ref, sec, out, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2 ); va_end( ap ); return( result ); } vips-8.2.2/libvips/mosaicing/mosaic1.c0000664000175000017500000004276312530402247014563 00000000000000/* 1st order mosaic functions * * 31/7/97 JC * - done! * 12/9/97 JC * - mods so global_balance() can work with 1st order mosaics * 27/12/99 JC * - now uses affine() stuff * - small tidies * 2/2/01 JC * - added tunable max blend width * 23/3/01 JC * - better mosaic1 calcs ... was a bit broken * 14/12/04 * - works for LABQ as well * 25/1/11 * - gtk-doc */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pmosaicing.h" /* #define DEBUG */ /* define this to get old not-really-working joiner. #define OLD */ /* Like im_similarity(), but return the transform we generated. */ static int apply_similarity( VipsTransformation *trn, IMAGE *in, IMAGE *out, double a, double b, double dx, double dy ) { trn->iarea.left = 0; trn->iarea.top = 0; trn->iarea.width = in->Xsize; trn->iarea.height = in->Ysize; trn->a = a; trn->b = -b; trn->c = b; trn->d = a; trn->idx = 0; trn->idy = 0; trn->odx = dx; trn->ody = dy; vips__transform_set_area( trn ); if( vips__transform_calc_inverse( trn ) ) return( -1 ); if( vips__affine( in, out, trn ) ) return( -1 ); return( 0 ); } /* A join function ... either left-right or top-bottom rotscalemerge. */ typedef int (*joinfn)( IMAGE *, IMAGE *, IMAGE *, double, double, double, double, int ); /* similarity+lrmerge. */ int im__lrmerge1( IMAGE *ref, IMAGE *sec, IMAGE *out, double a, double b, double dx, double dy, int mwidth ) { VipsTransformation trn; IMAGE *t1 = im_open_local( out, "im_lrmosaic1:1", "p" ); VipsBuf buf; char text[1024]; /* Scale, rotate and displace sec. */ if( !t1 || apply_similarity( &trn, sec, t1, a, b, dx, dy ) ) return( -1 ); /* And join to ref. */ if( im__lrmerge( ref, t1, out, -trn.oarea.left, -trn.oarea.top, mwidth ) ) return( -1 ); /* Note parameters in history file ... for global balance to pick up * later. */ im__add_mosaic_name( out ); vips_buf_init_static( &buf, text, 1024 ); vips_buf_appendf( &buf, "#LRROTSCALE <%s> <%s> <%s> <", im__get_mosaic_name( ref ), im__get_mosaic_name( sec ), im__get_mosaic_name( out ) ); vips_buf_appendg( &buf, a ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, b ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, dx ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, dy ); vips_buf_appendf( &buf, "> <%d>", mwidth ); if( im_histlin( out, "%s", vips_buf_all( &buf ) ) ) return( -1 ); return( 0 ); } /* similarity+tbmerge. */ int im__tbmerge1( IMAGE *ref, IMAGE *sec, IMAGE *out, double a, double b, double dx, double dy, int mwidth ) { VipsTransformation trn; IMAGE *t1 = im_open_local( out, "im_lrmosaic1:2", "p" ); VipsBuf buf; char text[1024]; /* Scale, rotate and displace sec. */ if( !t1 || apply_similarity( &trn, sec, t1, a, b, dx, dy ) ) return( -1 ); /* And join to ref. */ if( im__tbmerge( ref, t1, out, -trn.oarea.left, -trn.oarea.top, mwidth ) ) return( -1 ); /* Note parameters in history file ... for global balance to pick up * later. */ im__add_mosaic_name( out ); vips_buf_init_static( &buf, text, 1024 ); vips_buf_appendf( &buf, "#TBROTSCALE <%s> <%s> <%s> <", im__get_mosaic_name( ref ), im__get_mosaic_name( sec ), im__get_mosaic_name( out ) ); vips_buf_appendg( &buf, a ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, b ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, dx ); vips_buf_appendf( &buf, "> <" ); vips_buf_appendg( &buf, dy ); vips_buf_appendf( &buf, "> <%d>", mwidth ); if( im_histlin( out, "%s", vips_buf_all( &buf ) ) ) return( -1 ); return( 0 ); } /* Join two images, using a pair of tie-points as parameters. */ static int rotjoin( IMAGE *ref, IMAGE *sec, IMAGE *out, joinfn jfn, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) { double a, b, dx, dy; /* Solve to get scale + rot + disp. */ if( im__coeff( xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, &a, &b, &dx, &dy ) ) return( -1 ); /* Scale, rotate and displace sec. */ if( jfn( ref, sec, out, a, b, dx, dy, mwidth ) ) return( -1 ); return( 0 ); } /* Like rotjoin, but do a search to refine the tie-points. */ static int rotjoin_search( IMAGE *ref, IMAGE *sec, IMAGE *out, joinfn jfn, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) { VipsTransformation trn; double cor1, cor2; double a, b, dx, dy; double xs3, ys3; double xs4, ys4; int xs5, ys5; int xs6, ys6; double xs7, ys7; double xs8, ys8; /* Temps. */ IMAGE *t[3]; if( im_open_local_array( out, t, 3, "rotjoin_search", "p" ) ) return( -1 ); /* Unpack LABQ to LABS for correlation. */ if( ref->Coding == IM_CODING_LABQ ) { if( im_LabQ2LabS( ref, t[0] ) ) return( -1 ); } else t[0] = ref; if( sec->Coding == IM_CODING_LABQ ) { if( im_LabQ2LabS( sec, t[1] ) ) return( -1 ); } else t[1] = sec; /* Solve to get scale + rot + disp. */ if( im__coeff( xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, &a, &b, &dx, &dy ) || apply_similarity( &trn, t[1], t[2], a, b, dx, dy ) ) return( -1 ); /* Map points on sec to rotated image. */ vips__transform_forward_point( &trn, xs1, ys1, &xs3, &ys3 ); vips__transform_forward_point( &trn, xs2, ys2, &xs4, &ys4 ); /* Refine tie-points on rotated image. Remember the clip * vips__transform_set_area() has set, and move the sec tie-points * accordingly. */ if( im_correl( t[0], t[2], xr1, yr1, xs3 - trn.oarea.left, ys3 - trn.oarea.top, halfcorrelation, halfarea, &cor1, &xs5, &ys5 ) ) return( -1 ); if( im_correl( t[0], t[2], xr2, yr2, xs4 - trn.oarea.left, ys4 - trn.oarea.top, halfcorrelation, halfarea, &cor2, &xs6, &ys6 ) ) return( -1 ); #ifdef DEBUG printf( "rotjoin_search: nudged pair 1 from %d, %d to %d, %d\n", xs3 - trn.oarea.left, ys3 - trn.oarea.top, xs5, ys5 ); printf( "rotjoin_search: nudged pair 2 from %d, %d to %d, %d\n", xs4 - trn.oarea.left, ys4 - trn.oarea.top, xs6, ys6 ); #endif /*DEBUG*/ /* Put the sec tie-points back into output space. */ xs5 += trn.oarea.left; ys5 += trn.oarea.top; xs6 += trn.oarea.left; ys6 += trn.oarea.top; /* ... and now back to input space again. */ vips__transform_invert_point( &trn, xs5, ys5, &xs7, &ys7 ); vips__transform_invert_point( &trn, xs6, ys6, &xs8, &ys8 ); /* Recalc the transform using the refined points. */ if( im__coeff( xr1, yr1, xs7, ys7, xr2, yr2, xs8, ys8, &a, &b, &dx, &dy ) ) return( -1 ); /* Scale and rotate final. */ if( jfn( ref, sec, out, a, b, dx, dy, mwidth ) ) return( -1 ); return( 0 ); } #ifdef OLD /* 1st order mosaic using im__find_lroverlap() ... does not work too well :( * Look at im__find_lroverlap() for problem? */ static int old_lrmosaic1( IMAGE *ref, IMAGE *sec, IMAGE *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) { VipsTransformation trn1, trn2; int dx0, dy0; double a, b, dx, dy; double a1, b1, dx1, dy1; double af, bf, dxf, dyf; int xpos, ypos; int xpos1, ypos1; /* Temps. */ IMAGE *t1 = im_open_local( out, "im_lrmosaic1:1", "p" ); IMAGE *t2 = im_open_local( out, "im_lrmosaic1:2", "p" ); IMAGE *dummy; if( !t1 || !t2 ) return( -1 ); /* Solve to get scale + rot + disp. */ if( im__coeff( xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2, &a, &b, &dx, &dy ) || apply_similarity( &trn1, sec, t1, a, b, dx, dy ) ) return( -1 ); /* Correct tie-points. dummy is just a placeholder used to ensure that * memory used by the analysis phase is freed as soon as possible. */ if( !(dummy = im_open( "placeholder:1", "p" )) ) return( -1 ); if( im__find_lroverlap( ref, t1, dummy, bandno, -trn1.area.left, -trn1.area.top, 0, 0, halfcorrelation, halfarea, &dx0, &dy0, &a1, &b1, &dx1, &dy1 ) ) { im_close( dummy ); return( -1 ); } im_close( dummy ); /* Now combine the two transformations to get a corrected transform. */ af = a1 * a - b1 * b; bf = a1 * b + b1 * a; dxf = a1 * dx - b1 * dy + dx1; dyf = b1 * dx + a1 * dy + dy1; printf( "transform was: a = %g, b = %g, dx = %g, dy = %g\n", a, b, dx, dy ); printf( "correction: a = %g, b = %g, dx = %g, dy = %g\n", a1, b1, dx1, dy1 ); printf( "final: a = %g, b = %g, dx = %g, dy = %g\n", af, bf, dxf, dyf ); /* Scale and rotate final. */ if( apply_similarity( &trn2, sec, t2, af, bf, dxf, dyf ) ) return( -1 ); printf( "disp: trn1 left = %d, top = %d\n", trn1.area.left, trn1.area.top ); printf( "disp: trn2 left = %d, top = %d\n", trn2.area.left, trn2.area.top ); /* And join to ref. */ if( im_lrmerge( ref, t2, out, -trn2.area.left, -trn2.area.top, mwidth ) ) return( -1 ); return( 0 ); } #endif /*OLD*/ typedef struct { VipsOperation parent_instance; VipsImage *ref; VipsImage *sec; VipsImage *out; VipsDirection direction; int xr1; int yr1; int xs1; int ys1; int xr2; int yr2; int xs2; int ys2; int hwindow; int harea; gboolean search; VipsInterpolate *interpolate; int mblend; int bandno; } VipsMosaic1; typedef VipsOperationClass VipsMosaic1Class; G_DEFINE_TYPE( VipsMosaic1, vips_mosaic1, VIPS_TYPE_OPERATION ); static int vips_mosaic1_build( VipsObject *object ) { VipsMosaic1 *mosaic1 = (VipsMosaic1 *) object; joinfn jfn; g_object_set( mosaic1, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_mosaic1_parent_class )->build( object ) ) return( -1 ); if( !mosaic1->interpolate ) mosaic1->interpolate = vips_interpolate_new( "bilinear" ); jfn = mosaic1->direction == VIPS_DIRECTION_HORIZONTAL ? im__lrmerge1 : im__tbmerge1; if( mosaic1->search ) { if( rotjoin_search( mosaic1->ref, mosaic1->sec, mosaic1->out, jfn, mosaic1->bandno, mosaic1->xr1, mosaic1->yr1, mosaic1->xs1, mosaic1->ys1, mosaic1->xr2, mosaic1->yr2, mosaic1->xs2, mosaic1->ys2, mosaic1->hwindow, mosaic1->harea, 0, mosaic1->mblend ) ) return( -1 ); } else { if( rotjoin( mosaic1->ref, mosaic1->sec, mosaic1->out, jfn, mosaic1->xr1, mosaic1->yr1, mosaic1->xs1, mosaic1->ys1, mosaic1->xr2, mosaic1->yr2, mosaic1->xs2, mosaic1->ys2, mosaic1->mblend ) ) return( -1 ); } return( 0 ); } static void vips_mosaic1_class_init( VipsMosaic1Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "mosaic1"; object_class->description = _( "first-order mosaic of two images" ); object_class->build = vips_mosaic1_build; VIPS_ARG_IMAGE( class, "ref", 1, _( "Reference" ), _( "Reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, ref ) ); VIPS_ARG_IMAGE( class, "sec", 2, _( "Secondary" ), _( "Secondary image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, sec ) ); VIPS_ARG_IMAGE( class, "out", 3, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMosaic1, out ) ); VIPS_ARG_ENUM( class, "direction", 4, _( "Direction" ), _( "Horizontal or vertcial mosaic" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); VIPS_ARG_INT( class, "xr1", 5, _( "xr1" ), _( "Position of first reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, xr1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "yr1", 6, _( "yr1" ), _( "Position of first reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, yr1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xs1", 7, _( "xs1" ), _( "Position of first secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, xs1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "ys1", 8, _( "ys1" ), _( "Position of first secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, ys1 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xr2", 9, _( "xr2" ), _( "Position of second reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, xr2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "yr2", 10, _( "yr2" ), _( "Position of second reference tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, yr2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "xs2", 11, _( "xs2" ), _( "Position of second secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, xs2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "ys2", 12, _( "ys2" ), _( "Position of second secondary tie-point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMosaic1, ys2 ), -1000000000, 1000000000, 1 ); VIPS_ARG_INT( class, "hwindow", 13, _( "hwindow" ), _( "Half window size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, hwindow ), 0, 1000000000, 1 ); VIPS_ARG_INT( class, "harea", 14, _( "harea" ), _( "Half area size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, harea ), 0, 1000000000, 1 ); VIPS_ARG_BOOL( class, "search", 15, _( "search" ), _( "Search to improve tie-points" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, search ), FALSE ); VIPS_ARG_INTERPOLATE( class, "interpolate", 16, _( "Interpolate" ), _( "Interpolate pixels with this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, interpolate ) ); VIPS_ARG_INT( class, "mblend", 17, _( "Max blend" ), _( "Maximum blend size" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, mblend ), 0, 10000, 10 ); VIPS_ARG_INT( class, "bandno", 18, _( "Search band" ), _( "Band to search for features on" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMosaic1, bandno ), 0, 10000, 0 ); } static void vips_mosaic1_init( VipsMosaic1 *mosaic1 ) { mosaic1->hwindow = 5; mosaic1->harea = 15; mosaic1->mblend = 10; } /** * vips_mosaic1: * @ref: reference image * @sec: secondary image * @out: output image * @direction: horizontal or vertical join * @xr1: first reference tie-point * @yr1: first reference tie-point * @xs1: first secondary tie-point * @ys1: first secondary tie-point * @xr2: second reference tie-point * @yr2: second reference tie-point * @xs2: second secondary tie-point * @ys2: second secondary tie-point * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @search: search to improve tie-points * @hwindow: half window size * @harea: half search size * @interpolate: interpolate pixels with this * @mblend: maximum blend size * @bandno: band to search for features * * This operation joins two images top-bottom (with @sec on the right) * or left-right (with @sec at the bottom) * given an approximate pair of tie-points. @sec is scaled and rotated as * necessary before the join. * * Before performing the transformation, the tie-points are improved by * searching band @bandno in an area of @sec of size @hsearchsize for a * match of size @hwindowsize to @ref. * * If @search is %TRUE, before performing the transformation, the tie-points * are improved by searching an area of @sec of size @harea for a * mosaic1 of size @hwindow to @ref. * * @mblend limits the maximum size of the * blend area. A value of "-1" means "unlimited". The two images are blended * with a raised cosine. * * Pixels with all bands equal to zero are "transparent", that * is, zero pixels in the overlap area do not contribute to the merge. * This makes it possible to join non-rectangular images. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: vips_merge(), vips_insert(), vips_globalbalance(). * * Returns: 0 on success, -1 on error */ int vips_mosaic1( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, ... ) { va_list ap; int result; va_start( ap, ys2 ); result = vips_call_split( "mosaic1", ap, ref, sec, out, direction, xr1, yr1, xs1, ys1, xr2, yr2, xs2, ys2 ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/0000775000175000017500000000000012651721505012466 500000000000000vips-8.2.2/libvips/colour/LabQ2LabS.c0000664000175000017500000000640612530402247014216 00000000000000/* LabQ2LabS * * 17/11/93 JC * - adapted from im_LabQ2LabS() * 16/11/94 JC * - uses new im_wrap_oneonebuf() fn * 9/2/95 JC * - new im_wrapone function * 2/11/09 * - gtkdoc * 21/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabQ2LabS; typedef VipsColourCodeClass VipsLabQ2LabSClass; G_DEFINE_TYPE( VipsLabQ2LabS, vips_LabQ2LabS, VIPS_TYPE_COLOUR_CODE ); /* CONVERT n pels from packed 32bit Lab to signed short. */ static void vips_LabQ2LabS_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { unsigned char * restrict p = (unsigned char *) in[0]; signed short * restrict q = (signed short *) out; int i; unsigned char ext; signed short l, a, b; for( i = 0; i < width; i++ ) { /* Get most significant 8 bits of lab. */ l = p[0] << 7; a = p[1] << 8; b = p[2] << 8; /* Get x-tra bits. */ ext = p[3]; p += 4; /* Shift and mask in to lab. */ l |= (unsigned char) (ext & 0xc0) >> 1; a |= (ext & 0x38) << 2; b |= (ext & 0x7) << 5; /* Write! */ q[0] = l; q[1] = a; q[2] = b; q += 3; } } static void vips_LabQ2LabS_class_init( VipsLabQ2LabSClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabQ2LabS"; object_class->description = _( "unpack a LabQ image to short Lab" ); colour_class->process_line = vips_LabQ2LabS_line; } static void vips_LabQ2LabS_init( VipsLabQ2LabS *LabQ2LabS ) { VipsColour *colour = VIPS_COLOUR( LabQ2LabS ); VipsColourCode *code = VIPS_COLOUR_CODE( LabQ2LabS ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_LABS; colour->format = VIPS_FORMAT_SHORT; colour->bands = 3; code->input_coding = VIPS_CODING_LABQ; } /** * vips_LabQ2LabS: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Unpack a LabQ (#VIPS_CODING_LABQ) image to a three-band short image. * * See also: vips_LabS2LabQ(), vips_LabQ2LabS(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_LabQ2LabS( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabQ2LabS", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/rad2float.c0000664000175000017500000001600312530402247014423 00000000000000/* Convert Radiance 32bit packed format to float. * * 3/3/09 * - from LabQ2Lab and Radiance sources * 2/11/09 * - gtkdoc * 20/9/12 * - redo as a class * 13/12/12 * - tag output as scRGB, since it'll be 0-1 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Sections of this file from Greg Ward and Radiance with kind permission. The Radience copyright notice appears below. */ /* ==================================================================== * The Radiance Software License, Version 1.0 * * Copyright (c) 1990 - 2009 The Regents of the University of California, * through Lawrence Berkeley National Laboratory. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes Radiance software * (http://radsite.lbl.gov/) * developed by the Lawrence Berkeley National Laboratory * (http://www.lbl.gov/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Radiance," "Lawrence Berkeley National Laboratory" * and "The Regents of the University of California" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact radiance@radsite.lbl.gov. * * 5. Products derived from this software may not be called "Radiance", * nor may "Radiance" appear in their name, without prior written * permission of Lawrence Berkeley National Laboratory. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of Lawrence Berkeley National Laboratory. For more * information on Lawrence Berkeley National Laboratory, please see * . */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* Begin copy-paste from Radiance sources. */ #define RED 0 #define GRN 1 #define BLU 2 #define CIEX 0 /* or, if input is XYZ... */ #define CIEY 1 #define CIEZ 2 #define EXP 3 /* exponent same for either format */ #define COLXS 128 /* excess used for exponent */ #define WHT 3 /* used for RGBPRIMS type */ #undef BYTE #define BYTE unsigned char /* 8-bit unsigned integer */ typedef BYTE COLR[4]; /* red, green, blue (or X,Y,Z), exponent */ typedef float COLORV; typedef COLORV COLOR[3]; /* red, green, blue (or X,Y,Z) */ #define copycolor(c1,c2) ((c1)[0]=(c2)[0],(c1)[1]=(c2)[1],(c1)[2]=(c2)[2]) static void colr_color(COLOR col, COLR clr) /* convert short to float color */ { if (clr[EXP] == 0) col[RED] = col[GRN] = col[BLU] = 0.0; else { double f = ldexp(1.0, (int)clr[EXP]-(COLXS+8)); col[RED] = (clr[RED] + 0.5)*f; col[GRN] = (clr[GRN] + 0.5)*f; col[BLU] = (clr[BLU] + 0.5)*f; } } /* End copy-paste from Radiance sources. */ typedef VipsColourCode VipsRad2float; typedef VipsColourCodeClass VipsRad2floatClass; G_DEFINE_TYPE( VipsRad2float, vips_rad2float, VIPS_TYPE_COLOUR_CODE ); static void vips_rad2float_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { COLR *inp = (COLR *) in[0]; COLOR *outbuf = (COLOR *) out; colr_color(outbuf[0], inp[0]); while (--width > 0) { outbuf++; inp++; if (inp[0][RED] == inp[-1][RED] && inp[0][GRN] == inp[-1][GRN] && inp[0][BLU] == inp[-1][BLU] && inp[0][EXP] == inp[-1][EXP]) copycolor(outbuf[0], outbuf[-1]); else colr_color(outbuf[0], inp[0]); } } static void vips_rad2float_class_init( VipsRad2floatClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "rad2float"; object_class->description = _( "unpack Radiance coding to float RGB" ); colour_class->process_line = vips_rad2float_line; } static void vips_rad2float_init( VipsRad2float *rad2float ) { VipsColour *colour = VIPS_COLOUR( rad2float ); VipsColourCode *code = VIPS_COLOUR_CODE( rad2float ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_scRGB; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; code->input_coding = VIPS_CODING_RAD; } /** * vips_rad2float: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Unpack a RAD (#VIPS_CODING_RAD) image to a three-band float image. * * See also: vips_float2rad(), vips_LabQ2LabS(). * * Returns: 0 on success, -1 on error. */ int vips_rad2float( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "rad2float", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/XYZ2scRGB.c0000664000175000017500000000614312530402247014206 00000000000000/* Turn XYZ to scRGB colourspace. * * 11/12/12 * - from Yxy2XYZ.c * 1/7/13 * - remove any ICC profile * 25/11/14 * - oh argh, revert the above */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsXYZ2scRGB; typedef VipsColourTransformClass VipsXYZ2scRGBClass; G_DEFINE_TYPE( VipsXYZ2scRGB, vips_XYZ2scRGB, VIPS_TYPE_COLOUR_TRANSFORM ); /* We used to have the comment: * We've converted to sRGB without a profile. We must remove any ICC * profile left over from import or there will be a mismatch between * pixel values and the attached profile. But this isn't right, we often call things sRGB that we know are not true sRGB, for example: vips sharpen k2.jpg x.jpg sharpen will treat k2 as being in sRGB space even if that image has a profile. If we drop the profile, x.jpg is suddenly untagged. */ void vips_XYZ2scRGB_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int i; for( i = 0; i < width; i++ ) { float X = p[0]; float Y = p[1]; float Z = p[2]; float R, G, B; p += 3; vips_col_XYZ2scRGB( X, Y, Z, &R, &G, &B ); q[0] = R; q[1] = G; q[2] = B; q += 3; } } static void vips_XYZ2scRGB_class_init( VipsXYZ2scRGBClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "XYZ2scRGB"; object_class->description = _( "transform XYZ to scRGB" ); colour_class->process_line = vips_XYZ2scRGB_line; } static void vips_XYZ2scRGB_init( VipsXYZ2scRGB *XYZ2scRGB ) { VipsColour *colour = VIPS_COLOUR( XYZ2scRGB ); colour->interpretation = VIPS_INTERPRETATION_scRGB; } /** * vips_XYZ2scRGB: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Turn XYZ to scRGB. * * Returns: 0 on success, -1 on error */ int vips_XYZ2scRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "XYZ2scRGB", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/Lab2LabS.c0000664000175000017500000000556112530402247014076 00000000000000/* Lab2LabS: quantise FLOAT Lab image into signed short format * * 12/12/02 JC * - from im_Lab2LabS * 1/11/09 * - gtkdoc * - cleanups * 20/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLab2LabS; typedef VipsColourCodeClass VipsLab2LabSClass; G_DEFINE_TYPE( VipsLab2LabS, vips_Lab2LabS, VIPS_TYPE_COLOUR_CODE ); static void vips_Lab2LabS_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; signed short * restrict q = (signed short *) out; int i; for( i = 0; i < width; i++ ) { q[0] = p[0] * (32767.0 / 100.0); q[1] = p[1] * (32768.0 / 128.0); q[2] = p[2] * (32768.0 / 128.0); q += 3; p += 3; } } static void vips_Lab2LabS_class_init( VipsLab2LabSClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "Lab2LabS"; object_class->description = _( "transform float Lab to signed short" ); colour_class->process_line = vips_Lab2LabS_line; } static void vips_Lab2LabS_init( VipsLab2LabS *Lab2LabS ) { VipsColour *colour = VIPS_COLOUR( Lab2LabS ); VipsColourCode *code = VIPS_COLOUR_CODE( Lab2LabS ); colour->interpretation = VIPS_INTERPRETATION_LABS; colour->format = VIPS_FORMAT_SHORT; colour->input_bands = 3; colour->bands = 3; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_FLOAT; } /** * vips_Lab2LabS: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Turn Lab to LabS, signed 16-bit int fixed point. * * See also: vips_LabQ2Lab(). * * Returns: 0 on success, -1 on error. */ int vips_Lab2LabS( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Lab2LabS", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/LabS2LabQ.c0000664000175000017500000000720512651663124014223 00000000000000/* LabS2LabQ() * * 17/11/93 JC * - adapted from im_LabS2LabQ() * 16/11/94 JC * - adapted to new im_wrap_oneonebuf() function * 15/6/95 JC * - oops! rounding was broken * 6/6/95 JC * - added round-to-nearest * - somewhat slower ... * 21/12/99 JC * - a/b ==0 rounding was broken * 2/11/09 * - gtkdoc, cleanup * 21/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabS2LabQ; typedef VipsColourCodeClass VipsLabS2LabQClass; G_DEFINE_TYPE( VipsLabS2LabQ, vips_LabS2LabQ, VIPS_TYPE_COLOUR_CODE ); /* Convert n pels from signed short to IM_CODING_LABQ. */ static void vips_LabS2LabQ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { signed short *p = (signed short *) in[0]; unsigned char *q = (unsigned char *) out; int i; for( i = 0; i < width; i++ ) { int l, a, b; unsigned char ext; /* Get LAB, rounding to 10, 11, 11. */ l = p[0] + 16; l = VIPS_CLIP( 0, l, 32767 ); l >>= 5; /* Make sure we round -ves in the right direction! */ a = p[1]; if( a >= 0 ) a += 16; else a -= 16; a = VIPS_CLIP( -32768, a, 32767 ); a >>= 5; b = p[2]; if( b >= 0 ) b += 16; else b -= 16; b = VIPS_CLIP( -32768, b, 32767 ); b >>= 5; p += 3; /* Extract top 8 bits. */ q[0] = l >> 2; q[1] = a >> 3; q[2] = b >> 3; /* Form extension byte. */ ext = (l << 6) & 0xc0; ext |= (a << 3) & 0x38; ext |= b & 0x7; q[3] = ext; q += 4; } } static void vips_LabS2LabQ_class_init( VipsLabS2LabQClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabS2LabQ"; object_class->description = _( "transform short Lab to LabQ coding" ); colour_class->process_line = vips_LabS2LabQ_line; } static void vips_LabS2LabQ_init( VipsLabS2LabQ *LabS2LabQ ) { VipsColour *colour = VIPS_COLOUR( LabS2LabQ ); VipsColourCode *code = VIPS_COLOUR_CODE( LabS2LabQ ); colour->coding = VIPS_CODING_LABQ; colour->interpretation = VIPS_INTERPRETATION_LABQ; colour->format = VIPS_FORMAT_UCHAR; colour->input_bands = 3; colour->bands = 4; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_SHORT; } /** * vips_LabS2LabQ: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert a LabS three-band signed short image to LabQ * * See also: vips_LabQ2LabS(). * * Returns: 0 on success, -1 on error. */ int vips_LabS2LabQ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabS2LabQ", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/float2rad.c0000664000175000017500000001644512530402247014435 00000000000000/* Convert float to Radiance 32bit packed format * * 23/3/09 * - from im_rad2float and Radiance sources * 2/11/09 * - gtkdoc * 20/9/12 * - redo as a class * 13/12/12 * - tag as scRGB rather than XYZ */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Sections of this file from Greg Ward and Radiance with kind permission. The Radience copyright notice appears below. */ /* ==================================================================== * The Radiance Software License, Version 1.0 * * Copyright (c) 1990 - 2009 The Regents of the University of California, * through Lawrence Berkeley National Laboratory. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes Radiance software * (http://radsite.lbl.gov/) * developed by the Lawrence Berkeley National Laboratory * (http://www.lbl.gov/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Radiance," "Lawrence Berkeley National Laboratory" * and "The Regents of the University of California" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact radiance@radsite.lbl.gov. * * 5. Products derived from this software may not be called "Radiance", * nor may "Radiance" appear in their name, without prior written * permission of Lawrence Berkeley National Laboratory. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of Lawrence Berkeley National Laboratory. For more * information on Lawrence Berkeley National Laboratory, please see * . */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* Begin copy-paste from Radiance sources. */ #define RED 0 #define GRN 1 #define BLU 2 #define CIEX 0 /* or, if input is XYZ... */ #define CIEY 1 #define CIEZ 2 #define EXP 3 /* exponent same for either format */ #define COLXS 128 /* excess used for exponent */ #define WHT 3 /* used for RGBPRIMS type */ #undef BYTE #define BYTE unsigned char /* 8-bit unsigned integer */ typedef BYTE COLR[4]; /* red, green, blue (or X,Y,Z), exponent */ typedef float COLORV; typedef COLORV COLOR[3]; /* red, green, blue (or X,Y,Z) */ #define copycolor(c1,c2) ((c1)[0]=(c2)[0],(c1)[1]=(c2)[1],(c1)[2]=(c2)[2]) static void setcolr( COLR clr, double r, double g, double b ) /* assign a short color value */ { double d; int e; d = r > g ? r : g; if (b > d) d = b; if (d <= 1e-32) { clr[RED] = clr[GRN] = clr[BLU] = 0; clr[EXP] = 0; return; } d = frexp(d, &e) * 255.9999 / d; if (r > 0.0) clr[RED] = r * d; else clr[RED] = 0; if (g > 0.0) clr[GRN] = g * d; else clr[GRN] = 0; if (b > 0.0) clr[BLU] = b * d; else clr[BLU] = 0; clr[EXP] = e + COLXS; } /* End copy-paste from Radiance sources. */ typedef VipsColourCode VipsFloat2rad; typedef VipsColourCodeClass VipsFloat2radClass; G_DEFINE_TYPE( VipsFloat2rad, vips_float2rad, VIPS_TYPE_COLOUR_CODE ); static void vips_float2rad_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { COLOR *inp = (COLOR *) in[0]; COLR *outbuf = (COLR *) out; while( width-- > 0 ) { setcolr( outbuf[0], inp[0][RED], inp[0][GRN], inp[0][BLU] ); inp++; outbuf++; } } static void vips_float2rad_class_init( VipsFloat2radClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "float2rad"; object_class->description = _( "transform float RGB to Radiance coding" ); colour_class->process_line = vips_float2rad_line; } static void vips_float2rad_init( VipsFloat2rad *float2rad ) { VipsColour *colour = VIPS_COLOUR( float2rad ); VipsColourCode *code = VIPS_COLOUR_CODE( float2rad ); colour->coding = VIPS_CODING_RAD; colour->interpretation = VIPS_INTERPRETATION_scRGB; colour->format = VIPS_FORMAT_UCHAR; colour->input_bands = 3; colour->bands = 4; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_FLOAT; } /** * vips_float2rad: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert a three-band float image to Radiance 32-bit packed format. * * See also: vips_rad2float(), #VIPS_CODING_RAD, vips_LabQ2Lab(). * * Returns: 0 on success, -1 on error. */ int vips_float2rad( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "float2rad", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/scRGB2XYZ.c0000664000175000017500000000516112530402247014205 00000000000000/* Turn scRGB to XYZ colourspace. * * Modified: * 29/5/02 JC * - from lab2xyz * 2/11/09 * - gtkdoc * - cleanups * 20/9/12 * redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsscRGB2XYZ; typedef VipsColourTransformClass VipsscRGB2XYZClass; G_DEFINE_TYPE( VipsscRGB2XYZ, vips_scRGB2XYZ, VIPS_TYPE_COLOUR_TRANSFORM ); void vips_scRGB2XYZ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int i; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; float X, Y, Z; p += 3; vips_col_scRGB2XYZ( R, G, B, &X, &Y, &Z ); q[0] = X; q[1] = Y; q[2] = Z; q += 3; } } static void vips_scRGB2XYZ_class_init( VipsscRGB2XYZClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "scRGB2XYZ"; object_class->description = _( "transform scRGB to XYZ" ); colour_class->process_line = vips_scRGB2XYZ_line; } static void vips_scRGB2XYZ_init( VipsscRGB2XYZ *scRGB2XYZ ) { VipsColour *colour = VIPS_COLOUR( scRGB2XYZ ); colour->interpretation = VIPS_INTERPRETATION_XYZ; } /** * vips_scRGB2XYZ: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Turn XYZ to scRGB. * * Returns: 0 on success, -1 on error */ int vips_scRGB2XYZ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "scRGB2XYZ", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/LabQ2Lab.c0000664000175000017500000000762212530402247014074 00000000000000/* LabQ2Lab * * Copyright Kirk Martinez 2/5/1993 * * Modified: 16/6/93 * 7/6/93 JC * - adapted for partial v2 * 16/11/94 JC * - adapted to new im_wrap_oneonebuf() function. * 9/2/95 JC * - new im_wrapone function * 22/5/95 JC * - changed char to unsigned char for RS/6000 * - small tidies and speed-ups * 4/9/97 JC * - L* = 100.0 now handled correctly * 2/11/09 * - gtkdoc * 20/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabQ2Lab; typedef VipsColourCodeClass VipsLabQ2LabClass; G_DEFINE_TYPE( VipsLabQ2Lab, vips_LabQ2Lab, VIPS_TYPE_COLOUR_CODE ); /* imb_LabQ2Lab: CONVERT n pels from packed 32bit Lab to float values * in a buffer * ARGS: VipsPel *inp pointer to first byte of Lab32 buffer * float *outbuf destination buffer * int n number of pels to process * (C) K.Martinez 2/5/93 */ static void vips_LabQ2Lab_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { signed char * restrict p = (signed char *) in[0]; float * restrict q = (float *) out; int l; int lsbs; /* for lsbs byte */ int i; /* counter */ /* Read input with a signed pointer to get signed ab easily. */ for( i = 0; i < width; i++ ) { /* Get extra bits. */ lsbs = ((unsigned char *) p)[3]; /* Build L. */ l = ((unsigned char *)p)[0]; l = (l << 2) | (lsbs >> 6); q[0] = (float) l * (100.0 / 1023.0); /* Build a. */ l = (p[1] << 3) | ((lsbs >> 3) & 0x7); q[1] = (float) l * 0.125; /* And b. */ l = (p[2] << 3) | (lsbs & 0x7); q[2] = (float) l * 0.125; p += 4; q += 3; } } void vips__LabQ2Lab_vec( float *out, VipsPel *in, int width ) { vips_LabQ2Lab_line( NULL, (VipsPel *) out, &in, width ); } static void vips_LabQ2Lab_class_init( VipsLabQ2LabClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabQ2Lab"; object_class->description = _( "unpack a LabQ image to float Lab" ); colour_class->process_line = vips_LabQ2Lab_line; } static void vips_LabQ2Lab_init( VipsLabQ2Lab *LabQ2Lab ) { VipsColour *colour = VIPS_COLOUR( LabQ2Lab ); VipsColourCode *code = VIPS_COLOUR_CODE( LabQ2Lab ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_LAB; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; code->input_coding = VIPS_CODING_LABQ; } /** * vips_LabQ2Lab: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Unpack a LabQ (#VIPS_CODING_LABQ) image to a three-band float image. * * See also: vips_LabQ2Lab(), vips_LabQ2LabS(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_LabQ2Lab( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabQ2Lab", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/HSV2sRGB.c0000664000175000017500000000702212651663124014015 00000000000000/* to sRGB from HSV * * 9/6/15 * - from sRGB2HSV.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" #define SIXTH_OF_CHAR 42.5 typedef VipsColourCode VipsHSV2sRGB; typedef VipsColourCodeClass VipsHSV2sRGBClass; G_DEFINE_TYPE( VipsHSV2sRGB, vips_HSV2sRGB, VIPS_TYPE_COLOUR_CODE ); static void vips_HSV2sRGB_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { unsigned char *p = (unsigned char *) in[0]; unsigned char *q = (unsigned char *) out; int i; for( i = 0; i < width; i++ ) { float c, x, m; c = p[2] * p[1] / 255.0; x = c * (1 - VIPS_FABS( fmod( p[0] / SIXTH_OF_CHAR, 2 ) - 1 )); m = p[2] - c; if( p[0] < SIXTH_OF_CHAR ) { q[0] = c + m; q[1] = x + m; q[2] = 0 + m; } else if( p[0] < 2 * SIXTH_OF_CHAR ) { q[0] = x + m; q[1] = c + m; q[2] = 0 + m; } else if( p[0] < 3 * SIXTH_OF_CHAR ) { q[0] = 0 + m; q[1] = c + m; q[2] = x + m; } else if( p[0] < 4 * SIXTH_OF_CHAR ) { q[0] = 0 + m; q[1] = x + m; q[2] = c + m; } else if( p[0] < 5 * SIXTH_OF_CHAR ) { q[0] = x + m; q[1] = 0 + m; q[2] = c + m; } else { q[0] = c + m; q[1] = 0 + m; q[2] = x + m; } p += 3; q += 3; } } static void vips_HSV2sRGB_class_init( VipsHSV2sRGBClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "HSV2sRGB"; object_class->description = _( "transform HSV to sRGB" ); colour_class->process_line = vips_HSV2sRGB_line; } static void vips_HSV2sRGB_init( VipsHSV2sRGB *HSV2sRGB ) { VipsColour *colour = VIPS_COLOUR( HSV2sRGB ); VipsColourCode *code = VIPS_COLOUR_CODE( HSV2sRGB ); colour->interpretation = VIPS_INTERPRETATION_sRGB; colour->format = VIPS_FORMAT_UCHAR; colour->bands = 3; colour->input_bands = 3; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_UCHAR; code->input_interpretation = VIPS_INTERPRETATION_HSV; } /** * vips_HSV2sRGB: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert HSV to sRGB. * * HSV is a crude polar coordinate system for RGB images. It is provided for * compatibility with other image processing systems. See vips_Lab2LCh() for a * much better colour space. * * See also: vips_sRGB2HSV(). * * Returns: 0 on success, -1 on error. */ int vips_HSV2sRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "HSV2sRGB", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/pcolour.h0000664000175000017500000001342212530402247014237 00000000000000/* base class for all colour operations */ /* Copyright (C) 1991-2005 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCOLOUR_H #define VIPS_PCOLOUR_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_COLOUR (vips_colour_get_type()) #define VIPS_COLOUR( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_COLOUR, VipsColour )) #define VIPS_COLOUR_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_COLOUR, VipsColourClass)) #define VIPS_IS_COLOUR( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_COLOUR )) #define VIPS_IS_COLOUR_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_COLOUR )) #define VIPS_COLOUR_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_COLOUR, VipsColourClass )) struct _VipsColour; typedef void (*VipsColourProcessFn)( struct _VipsColour *colour, VipsPel *out, VipsPel **in, int width ); typedef struct _VipsColour { VipsOperation parent_instance; /* Null-terminated array of input arguments, set these from a * subclass. */ VipsImage **in; int n; /* If this is >0, only process this many bands from the input. Extra * bands are removed and reattached after processing. */ int input_bands; VipsImage *out; /* Set fields on ->out from these. */ VipsCoding coding; VipsInterpretation interpretation; VipsBandFormat format; int bands; /* Attach this profile, if set. */ char *profile_filename; } VipsColour; typedef struct _VipsColourClass { VipsOperationClass parent_class; /* The buffer processor. */ VipsColourProcessFn process_line; } VipsColourClass; GType vips_colour_get_type( void ); /* A float in, float out colourspace transformation. */ #define VIPS_TYPE_COLOUR_TRANSFORM (vips_colour_transform_get_type()) #define VIPS_COLOUR_TRANSFORM( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_COLOUR_TRANSFORM, VipsColourTransform )) #define VIPS_COLOUR_TRANSFORM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_COLOUR_TRANSFORM, VipsColourTransformClass)) #define VIPS_IS_COLOUR_TRANSFORM( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_COLOUR_TRANSFORM )) #define VIPS_IS_COLOUR_TRANSFORM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_COLOUR_TRANSFORM )) #define VIPS_COLOUR_TRANSFORM_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_COLOUR_TRANSFORM, VipsColourTransformClass )) typedef struct _VipsColourTransform { VipsColour parent_instance; VipsImage *in; } VipsColourTransform; typedef struct _VipsColourTransformClass { VipsColourClass parent_class; } VipsColourTransformClass; GType vips_colour_transform_get_type( void ); /* Change colour encoding ... either in or out is not three-band float. */ #define VIPS_TYPE_COLOUR_CODE (vips_colour_code_get_type()) #define VIPS_COLOUR_CODE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_COLOUR_CODE, VipsColourCode )) #define VIPS_COLOUR_CODE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_COLOUR_CODE, VipsColourCodeClass)) #define VIPS_IS_COLOUR_CODE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_COLOUR_CODE )) #define VIPS_IS_COLOUR_CODE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_COLOUR_CODE )) #define VIPS_COLOUR_CODE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_COLOUR_CODE, VipsColourCodeClass )) typedef struct _VipsColourCode { VipsColour parent_instance; VipsImage *in; /* Test in against these. */ VipsCoding input_coding; VipsBandFormat input_format; VipsInterpretation input_interpretation; } VipsColourCode; typedef struct _VipsColourCodeClass { VipsColourClass parent_class; } VipsColourCodeClass; GType vips_colour_code_get_type( void ); /* Difference between two colour images. */ #define VIPS_TYPE_COLOUR_DIFFERENCE (vips_colour_difference_get_type()) #define VIPS_COLOUR_DIFFERENCE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_COLOUR_DIFFERENCE, VipsColourDifference )) #define VIPS_COLOUR_DIFFERENCE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_COLOUR_DIFFERENCE, VipsColourDifferenceClass)) #define VIPS_IS_COLOUR_DIFFERENCE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_COLOUR_DIFFERENCE )) #define VIPS_IS_COLOUR_DIFFERENCE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_COLOUR_DIFFERENCE )) #define VIPS_COLOUR_DIFFERENCE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_COLOUR_DIFFERENCE, VipsColourDifferenceClass )) typedef struct _VipsColourDifference { VipsColour parent_instance; VipsImage *left; VipsImage *right; /* Both get converted to this space. */ VipsInterpretation interpretation; } VipsColourDifference; typedef struct _VipsColourDifferenceClass { VipsColourClass parent_class; } VipsColourDifferenceClass; GType vips_colour_difference_get_type( void ); void vips__pythagoras_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCOLOUR_H*/ vips-8.2.2/libvips/colour/XYZ2Lab.c0000664000175000017500000001400012651663124013742 00000000000000/* Turn XYZ to Lab colourspace. * * Modifed: * 16/11/94 JC * - uses im_wrapone() * - in-line conversion * 27/1/03 JC * - swapped cbrt() for pow(), more portable * 12/11/04 * - swapped pow() for cbrt() again, pow() is insanely slow on win32 * - added a configure test for cbrt(). * 23/11/04 * - use a large LUT instead, about 5x faster * 23/11/06 * - ahem, build the LUT outside the eval thread * 2/11/09 * - gtkdoc * 3/8/11 * - fix a race in the table build * 19/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcolour.h" #ifndef HAVE_CBRT #define cbrt( X ) pow( (X), 1.0 / 3.0 ) #endif /*!HAVE_CBRT*/ /* Lookup table size. */ #define QUANT_ELEMENTS (100000) float cbrt_table[QUANT_ELEMENTS]; typedef struct _VipsXYZ2Lab { VipsColourTransform parent_instance; /* The colour temperature -- default to D65. */ VipsArea *temp; /* Broken out as xyz. */ double X0; double Y0; double Z0; } VipsXYZ2Lab; typedef VipsColourTransformClass VipsXYZ2LabClass; G_DEFINE_TYPE( VipsXYZ2Lab, vips_XYZ2Lab, VIPS_TYPE_COLOUR_TRANSFORM ); static void * table_init( void *client ) { int i; for( i = 0; i < QUANT_ELEMENTS; i++ ) { float Y = (double) i / QUANT_ELEMENTS; if( Y < 0.008856 ) cbrt_table[i] = 7.787 * Y + (16.0 / 116.0); else cbrt_table[i] = cbrt( Y ); } return( NULL ); } /* Process a buffer of data. */ static void vips_XYZ2Lab_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { static GOnce once = G_ONCE_INIT; VipsXYZ2Lab *XYZ2Lab = (VipsXYZ2Lab *) colour; float *p = (float *) in[0]; float *q = (float *) out; int x; (void) g_once( &once, table_init, NULL ); for( x = 0; x < width; x++ ) { float nX, nY, nZ; int i; float f; float cbx, cby, cbz; nX = QUANT_ELEMENTS * p[0] / XYZ2Lab->X0; nY = QUANT_ELEMENTS * p[1] / XYZ2Lab->Y0; nZ = QUANT_ELEMENTS * p[2] / XYZ2Lab->Z0; p += 3; i = VIPS_FCLIP( 0, nX, QUANT_ELEMENTS - 2 ); f = nX - i; cbx = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]); i = VIPS_FCLIP( 0, nY, QUANT_ELEMENTS - 2 ); f = nY - i; cby = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]); i = VIPS_FCLIP( 0, nZ, QUANT_ELEMENTS - 2 ); f = nZ - i; cbz = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]); q[0] = 116.0 * cby - 16.0; q[1] = 500.0 * (cbx - cby); q[2] = 200.0 * (cby - cbz); q += 3; } } /** * vips_col_XYZ2Lab: * @X: Input CIE XYZ colour * @Y: Input CIE XYZ colour * @Z: Input CIE XYZ colour * @L: Return CIE Lab value * @a: Return CIE Lab value * @b: Return CIE Lab value * * Calculate XYZ from Lab, D65. * * See also: vips_XYZ2Lab(). */ void vips_col_XYZ2Lab( float X, float Y, float Z, float *L, float *a, float *b ) { float in[3]; float out[3]; float *x; VipsXYZ2Lab XYZ2Lab; in[0] = X; in[1] = Y; in[2] = Z; x = in; XYZ2Lab.X0 = VIPS_D65_X0; XYZ2Lab.Y0 = VIPS_D65_Y0; XYZ2Lab.Z0 = VIPS_D65_Z0; vips_XYZ2Lab_line( (VipsColour *) &XYZ2Lab, (VipsPel *) out, (VipsPel **) &x, 1 ); *L = out[0]; *a = out[1]; *b = out[2]; } static int vips_XYZ2Lab_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsXYZ2Lab *XYZ2Lab = (VipsXYZ2Lab *) object; if( XYZ2Lab->temp ) { if( vips_check_vector_length( class->nickname, XYZ2Lab->temp->n, 3 ) ) return( -1 ); XYZ2Lab->X0 = ((double *) XYZ2Lab->temp->data)[0]; XYZ2Lab->Y0 = ((double *) XYZ2Lab->temp->data)[1]; XYZ2Lab->Z0 = ((double *) XYZ2Lab->temp->data)[2]; } if( VIPS_OBJECT_CLASS( vips_XYZ2Lab_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_XYZ2Lab_class_init( VipsXYZ2LabClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "XYZ2Lab"; object_class->description = _( "transform XYZ to Lab" ); object_class->build = vips_XYZ2Lab_build; colour_class->process_line = vips_XYZ2Lab_line; VIPS_ARG_BOXED( class, "temp", 110, _( "Temperature" ), _( "Colour temperature" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsXYZ2Lab, temp ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_XYZ2Lab_init( VipsXYZ2Lab *XYZ2Lab ) { VipsColour *colour = VIPS_COLOUR( XYZ2Lab ); XYZ2Lab->X0 = VIPS_D65_X0; XYZ2Lab->Y0 = VIPS_D65_Y0; XYZ2Lab->Z0 = VIPS_D65_Z0; colour->interpretation = VIPS_INTERPRETATION_LAB; } /** * vips_XYZ2Lab: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * optional arguments: * * @temp: colour temperature * * Turn XYZ to Lab, optionally specifying the colour temperature. @temp * defaults to D65. * * Returns: 0 on success, -1 on error. */ int vips_XYZ2Lab( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "XYZ2Lab", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/UCS2LCh.c0000664000175000017500000001340512650645447013671 00000000000000/* Turn CMC to LCh * * 15/11/94 JC * - error messages added * - memory leak fixed * 16/11/94 JC * - uses im_wrap_oneonebuf() now * 2/11/09 * - gtkdoc * 30/11/09 * - argh, im_col_make_tables_CMC(); missing, thanks Peter * 19/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* Arrays for lookup tables for the inverse function. */ static float LI[1001]; static float CI[3001]; static float hI[101][361]; typedef VipsColourTransform VipsCMC2LCh; typedef VipsColourTransformClass VipsCMC2LChClass; G_DEFINE_TYPE( VipsCMC2LCh, vips_CMC2LCh, VIPS_TYPE_COLOUR_TRANSFORM ); /* Generate LI (inverse) tables. */ static void make_LI( void ) { int i; float Ll[1001]; for( i = 0; i < 1001; i++ ) Ll[i] = vips_col_L2Lcmc( i / 10.0 ); for( i = 0; i < 1001; i++ ) { int j; /* Must be 1000, since j will be +1 on exit. */ for( j = 0; j < 1000 && Ll[j] <= i / 10.0; j++ ) ; LI[i] = (j - 1) / 10.0 + (i / 10.0 - Ll[j - 1]) / ((Ll[j] - Ll[j - 1]) * 10.0); } } /* Generate Ccmc table. */ static void make_CI( void ) { int i; float Cl[3001]; for( i = 0; i < 3001; i++ ) Cl[i] = vips_col_C2Ccmc( i / 10.0 ); for( i = 0; i < 3001; i++ ) { int j; /* Must be 3000, since j will be +1 on exit. */ for( j = 0; j < 3000 && Cl[j] <= i / 10.0; j++ ) ; CI[i] = (j - 1) / 10.0 + (i / 10.0 - Cl[j - 1]) / ((Cl[j] - Cl[j - 1]) * 10.0); } } /* The difficult one: hcmc. */ static void make_hI( void ) { int i, j; float hl[101][361]; for( i = 0; i < 361; i++ ) for( j = 0; j < 101; j++ ) hl[j][i] = vips_col_Ch2hcmc( j * 2.0, i ); for( j = 0; j < 101; j++ ) { for( i = 0; i < 361; i++ ) { int k; for( k = 0; k < 360 && hl[j][k] <= i; k++ ) ; hI[j][i] = k - 1 + (i - hl[j][k - 1]) / (hl[j][k] - hl[j][k - 1]); } } } /** * vips_col_Lcmc2L: * @Lcmc: L cmc * * Calculate L from Lcmc using a table. Call vips_col_make_tables_CMC() at * least once before using this function. * * Returns: L* */ float vips_col_Lcmc2L( float Lcmc ) { int known; known = VIPS_FLOOR( Lcmc * 10.0 ); known = VIPS_CLIP( 0, known, 999 ); return( LI[known] + (LI[known + 1] - LI[known]) * (Lcmc * 10.0 - known) ); } /** * vips_col_Ccmc2C: * @Ccmc: Ccmc * * Calculate C from Ccmc using a table. * Call vips_col_make_tables_CMC() at * least once before using this function. * * Returns: C. */ float vips_col_Ccmc2C( float Ccmc ) { int known; known = VIPS_FLOOR( Ccmc * 10.0 ); known = VIPS_CLIP( 0, known, 2999 ); return( CI[known] + (CI[known + 1] - CI[known]) * (Ccmc * 10.0 - known) ); } /** * vips_col_Chcmc2h: * @C: Chroma * @hcmc: Hue cmc (degrees) * * Calculate h from C and hcmc, using a table. * Call vips_col_make_tables_CMC() at * least once before using this function. * * Returns: h. */ float vips_col_Chcmc2h( float C, float hcmc ) { int r; int known; /* Which row of the table? */ r = (int) ((C + 1.0) / 2.0); r = VIPS_CLIP( 0, r, 99 ); known = VIPS_FLOOR( hcmc ); known = VIPS_CLIP( 0, known, 359 ); return( hI[r][known] + (hI[r][(known + 1) % 360] - hI[r][known]) * (hcmc - known) ); } static void * tables_init( void *client ) { make_LI(); make_CI(); make_hI(); return( NULL ); } /** * vips_col_make_tables_CMC: * * Make the lookup tables for cmc. */ void vips_col_make_tables_CMC( void ) { static GOnce once = G_ONCE_INIT; (void) g_once( &once, tables_init, NULL ); } /* Process a buffer of data. */ void vips_CMC2LCh_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float *p = (float *) in[0]; float *q = (float *) out; int x; for( x = 0; x < width; x++ ) { float Lcmc = p[0]; float Ccmc = p[1]; float hcmc = p[2]; /* Turn from CMC. */ float C = vips_col_Ccmc2C( Ccmc ); float h = vips_col_Chcmc2h( C, hcmc ); float L = vips_col_Lcmc2L( Lcmc ); p += 3; q[0] = L; q[1] = C; q[2] = h; q += 3; } } static void vips_CMC2LCh_class_init( VipsCMC2LChClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "CMC2LCh"; object_class->description = _( "transform LCh to CMC" ); colour_class->process_line = vips_CMC2LCh_line; } static void vips_CMC2LCh_init( VipsCMC2LCh *CMC2LCh ) { VipsColour *colour = VIPS_COLOUR( CMC2LCh ); vips_col_make_tables_CMC(); colour->interpretation = VIPS_INTERPRETATION_LCH; } /** * vips_CMC2LCh: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Turn LCh to CMC. * * See also: vips_LCh2CMC(). * * Returns: 0 on success, -1 on error */ int vips_CMC2LCh( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "CMC2LCh", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/dE76.c0000664000175000017500000000634212530402247013257 00000000000000/* dE76.c * * Modified: * 16/11/94 JC * - partialed! * 31/10/09 * - use im__colour_binary() * - gtkdoc comment * 25/10/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef struct _VipsdE76 { VipsColourDifference parent_instance; } VipsdE76; typedef VipsColourDifferenceClass VipsdE76Class; G_DEFINE_TYPE( VipsdE76, vips_dE76, VIPS_TYPE_COLOUR_DIFFERENCE ); /** * vips_pythagoras: * @L1: Input coordinate 1 * @a1: Input coordinate 1 * @b1: Input coordinate 1 * @L2: Input coordinate 2 * @a2: Input coordinate 2 * @b2: Input coordinate 2 * * Pythagorean distance between two points in colour space. Lab/XYZ/CMC etc. */ float vips_pythagoras( float L1, float a1, float b1, float L2, float a2, float b2 ) { float dL = L1 - L2; float da = a1 - a2; float db = b1 - b2; return( sqrt( dL * dL + da * da + db * db ) ); } /* Find the difference between two buffers of LAB data. */ void vips__pythagoras_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p1 = (float *) in[0]; float * restrict p2 = (float *) in[1]; float * restrict q = (float *) out; int x; for( x = 0; x < width; x++ ) { float dL = p1[0] - p2[0]; float da = p1[1] - p2[1]; float db = p1[2] - p2[2]; q[x] = sqrt( dL * dL + da * da + db * db ); p1 += 3; p2 += 3; } } static void vips_dE76_class_init( VipsdE76Class *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "dE76"; object_class->description = _( "calculate dE76" ); colour_class->process_line = vips__pythagoras_line; } static void vips_dE76_init( VipsdE76 *dE76 ) { VipsColourDifference *difference = VIPS_COLOUR_DIFFERENCE( dE76 ); difference->interpretation = VIPS_INTERPRETATION_LAB; } /** * vips_dE76: * @left: first input image * @right: second input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Calculate dE 76. * * Returns: 0 on success, -1 on error */ int vips_dE76( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "dE76", ap, left, right, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/colour.c0000664000175000017500000005007712571531237014070 00000000000000/* base class for all colour operations */ /* Copyright (C) 1991-2005 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcolour.h" /** * SECTION: colour * @short_description: colour operators * @stability: Stable * @see_also: arithmetic * @include: vips/vips.h * * These operators let you transform coordinates and images between colour * spaces, calculate colour differences, and move * to and from device spaces. * * All operations process colour from the first few bands and pass other bands * through unaltered. This means you can operate on images with alpha channels * safely. If you move to or from 16-bit RGB, any alpha channels are rescaled * for you. * * Radiance images have four 8-bits bands and store 8 bits of R, G and B and * another 8 bits of exponent, common to all channels. They are widely used in * the HDR imaging community. * * The colour functions can be divided into three main groups. First, * functions to transform images between the different colour spaces supported * by VIPS: #VIPS_INTERPRETATION_sRGB, #VIPS_INTERPRETATION_scRGB, * #VIPS_INTERPRETATION_B_W, * #VIPS_INTERPRETATION_XYZ, #VIPS_INTERPRETATION_YXY, * #VIPS_INTERPRETATION_LAB, * #VIPS_INTERPRETATION_LCH, and * #VIPS_INTERPRETATION_CMC. * * There are also a set of minor colourspaces which are one of the above in a * slightly different format: * #VIPS_INTERPRETATION_LAB, #VIPS_INTERPRETATION_LABQ, * #VIPS_INTERPRETATION_LABS, #VIPS_INTERPRETATION_LCH, * #VIPS_INTERPRETATION_RGB16, and #VIPS_INTERPRETATION_GREY16. * * Use vips_colourspace() to move an image to a * target colourspace using the best sequence of colour transform operations. * * Secondly, there are a set of operations for * calculating colour difference metrics. Finally, VIPS wraps LittleCMS and * uses it to provide a set of operations for reading and writing images with * ICC profiles. * * This figure shows how the VIPS colour spaces interconvert: * * * * * * The colour spaces supported by VIPS are: * * * #VIPS_INTERPRETATION_LAB -- CIELAB '76 colourspace with a D65 white. This * uses three floats for each band, and bands have the obvious range. * * There are two * variants, #VIPS_INTERPRETATION_LABQ and #VIPS_INTERPRETATION_LABS, which * use ints to store values. These are less precise, but can be quicker to * store and process. * * #VIPS_INTERPRETATION_LCH is the same, but with a*b* as polar coordinates. * Hue is expressed in degrees. * * * #VIPS_INTERPRETATION_XYZ -- CIE XYZ. This uses three floats. * See #VIPS_D75_X0 and friends for values for the ranges * under various illuminants. * * #VIPS_INTERPRETATION_YXY is the same, but with little x and y. * * * #VIPS_INTERPRETATION_scRGB -- a linear colourspace with the sRGB * primaries. This is useful if you need linear light and don't care * much what the primaries are. * * Linearization is performed with the usual sRGB equations, see below. * * * #VIPS_INTERPRETATION_sRGB -- the standard sRGB colourspace, see: * [wikipedia sRGB](http://en.wikipedia.org/wiki/SRGB). * * This uses three 8-bit values for each of RGB. * * #VIPS_INTERPRETATION_RGB16 is the same, but using three 16-bit values for * RGB. * * #VIPS_INTERPRETATION_HSV is sRGB, but in polar coordinates. * #VIPS_INTERPRETATION_LCH is much better, only use HSV if you have to. * * * #VIPS_INTERPRETATION_B_W -- a monochrome image, roughly G from sRGB. * The grey value is * calculated in #VIPS_INTERPRETATION_scRGB space with the usual 0.2, 0.7, 0.1 * RGB ratios. * * #VIPS_INTERPRETATION_GREY16 is the same, but using 16-bits. * * * #VIPS_INTERPRETATION_CMC -- a colour space based on the CMC(1:1) * colour difference measurement. This is a highly uniform colour space, * much better than CIELAB for expressing small differences. * * The CMC colourspace is described in "Uniform Colour Space Based on the * CMC(l:c) Colour-difference Formula", M R Luo and B Rigg, Journal of the * Society of Dyers and Colourists, vol 102, 1986. Distances in this * colourspace approximate, within 10% or so, differences in the CMC(l:c) * colour difference formula. * * You can calculate metrics like CMC(2:1) by scaling the spaces before * finding differences. * */ /* Areas under curves for Dxx. 2 degree observer. */ /** * VIPS_D93_X0: * * Areas under curves for D93, 2 degree observer. */ /** * VIPS_D75_X0: * * Areas under curves for D75, 2 degree observer. */ /** * VIPS_D65_X0: * * Areas under curves for D65, 2 degree observer. */ /** * VIPS_D55_X0: * * Areas under curves for D55, 2 degree observer. */ /** * VIPS_D50_X0: * * Areas under curves for D50, 2 degree observer. */ /** * VIPS_A_X0: * * Areas under curves for illuminant A (2856K), 2 degree observer. */ /** * VIPS_B_X0: * * Areas under curves for illuminant B (4874K), 2 degree observer. */ /** * VIPS_C_X0: * * Areas under curves for illuminant C (6774K), 2 degree observer. */ /** * VIPS_E_X0: * * Areas under curves for equal energy illuminant E. */ /** * VIPS_D3250_X0: * * Areas under curves for black body at 3250K, 2 degree observer. */ G_DEFINE_ABSTRACT_TYPE( VipsColour, vips_colour, VIPS_TYPE_OPERATION ); /* Maximum number of input images -- why not? */ #define MAX_INPUT_IMAGES (64) static int vips_colour_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsColour *colour = VIPS_COLOUR( b ); VipsColourClass *class = VIPS_COLOUR_GET_CLASS( colour ); VipsRect *r = &or->valid; int i, y; VipsPel *p[MAX_INPUT_IMAGES], *q; for( i = 0; ir[i]; i++ ) if( vips_region_prepare( ir[i], r ) ) return( -1 ); VIPS_GATE_START( "vips_colour_gen: work" ); for( y = 0; y < r->height; y++ ) { for( i = 0; ir[i]; i++ ) p[i] = VIPS_REGION_ADDR( ir[i], r->left, r->top + y ); p[i] = NULL; q = VIPS_REGION_ADDR( or, r->left, r->top + y ); class->process_line( colour, q, p, r->width ); } VIPS_GATE_STOP( "vips_colour_gen: work" ); return( 0 ); } static int vips_colour_attach_profile( VipsImage *im, const char *filename ) { char *data; size_t data_length; if( !(data = vips__file_read_name( filename, VIPS_ICC_DIR, &data_length )) ) return( -1 ); vips_image_set_blob( im, VIPS_META_ICC_NAME, (VipsCallbackFn) g_free, data, data_length ); return( 0 ); } static int vips_colour_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColour *colour = VIPS_COLOUR( object ); VipsImage **in; VipsImage **extra_bands; VipsImage *out; int i; #ifdef DEBUG printf( "vips_colour_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_colour_parent_class )-> build( object ) ) return( -1 ); if( colour->n > MAX_INPUT_IMAGES ) { vips_error( class->nickname, "%s", _( "too many input images" ) ); return( -1 ); } for( i = 0; i < colour->n; i++ ) if( vips_image_pio_input( colour->in[i] ) ) return( -1 ); /* colour->in[] must be NULL-terminated, we can use it as an arg to * vips_start_many(). */ g_assert( !colour->in[colour->n] ); in = colour->in; extra_bands = (VipsImage **) vips_object_local_array( object, colour->n ); /* If there are more than @input_bands bands, we detach and reattach * after processing. */ if( colour->input_bands > 0 ) { VipsImage **new_in = (VipsImage **) vips_object_local_array( object, colour->n ); for( i = 0; i < colour->n; i++ ) { if( vips_check_bands_atleast( class->nickname, in[i], colour->input_bands ) ) return( -1 ); if( vips_extract_band( in[i], &new_in[i], 0, "n", colour->input_bands, NULL ) ) return( -1 ); if( in[i]->Bands > colour->input_bands ) if( vips_extract_band( in[i], &extra_bands[i], colour->input_bands, "n", in[i]->Bands - colour->input_bands, NULL ) ) return( -1 ); } in = new_in; } out = vips_image_new(); if( vips_image_pipeline_array( out, VIPS_DEMAND_STYLE_THINSTRIP, in ) ) { g_object_unref( out ); return( -1 ); } out->Coding = colour->coding; out->Type = colour->interpretation; out->BandFmt = colour->format; out->Bands = colour->bands; if( colour->profile_filename ) if( vips_colour_attach_profile( out, colour->profile_filename ) ) { g_object_unref( out ); return( -1 ); } if( vips_image_generate( out, vips_start_many, vips_colour_gen, vips_stop_many, in, colour ) ) { g_object_unref( out ); return( -1 ); } /* Reattach higher bands, if necessary. If we have more than one input * image, just use the first extra bands. */ for( i = 0; i < colour->n; i++ ) if( extra_bands[i] ) { VipsImage *t1, *t2; /* We can't just reattach the extra bands: they might * be float (for example) and we might be trying to * make a short image. Cast extra to match the body of * the image. */ if( vips_cast( extra_bands[i], &t1, out->BandFmt, NULL ) ) { g_object_unref( out ); return( -1 ); } if( vips_bandjoin2( out, t1, &t2, NULL ) ) { g_object_unref( t1 ); g_object_unref( out ); return( -1 ); } g_object_unref( out ); g_object_unref( t1 ); out = t2; break; } g_object_set( colour, "out", out, NULL ); return( 0 ); } static void vips_colour_class_init( VipsColourClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "colour"; vobject_class->description = _( "color operations" ); vobject_class->build = vips_colour_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsColour, out ) ); } static void vips_colour_init( VipsColour *colour ) { colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_sRGB; colour->format = VIPS_FORMAT_UCHAR; colour->bands = 3; colour->input_bands = -1; } G_DEFINE_ABSTRACT_TYPE( VipsColourTransform, vips_colour_transform, VIPS_TYPE_COLOUR ); static int vips_colour_transform_build( VipsObject *object ) { VipsColour *colour = VIPS_COLOUR( object ); VipsColourTransform *transform = VIPS_COLOUR_TRANSFORM( object ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); /* We only process float. */ if( vips_cast_float( transform->in, &t[0], NULL ) ) return( -1 ); /* We always do 3 bands -> 3 bands. */ colour->input_bands = 3; colour->n = 1; colour->in = t; if( VIPS_OBJECT_CLASS( vips_colour_transform_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_colour_transform_class_init( VipsColourTransformClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "space"; vobject_class->description = _( "color space transformations" ); vobject_class->build = vips_colour_transform_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourTransform, in ) ); } static void vips_colour_transform_init( VipsColourTransform *space ) { VipsColour *colour = (VipsColour *) space; /* What we write. interpretation should be overwritten in subclass * builds. */ colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_LAB; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; } G_DEFINE_ABSTRACT_TYPE( VipsColourCode, vips_colour_code, VIPS_TYPE_COLOUR ); static int vips_colour_code_build( VipsObject *object ) { VipsColour *colour = VIPS_COLOUR( object ); VipsColourCode *code = VIPS_COLOUR_CODE( object ); VipsColourCodeClass *class = VIPS_COLOUR_CODE_GET_CLASS( object ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 6 ); VipsImage *in; in = code->in; /* If this is a LABQ and the coder wants uncoded, unpack. */ if( in && in->Coding == VIPS_CODING_LABQ && code->input_coding == VIPS_CODING_NONE ) { if( vips_LabQ2Lab( in, &t[0], NULL ) ) return( -1 ); in = t[0]; } if( in && vips_check_coding( VIPS_OBJECT_CLASS( class )->nickname, in, code->input_coding ) ) return( -1 ); if( in && code->input_coding == VIPS_CODING_NONE && code->input_format != VIPS_FORMAT_NOTSET ) { if( vips_cast( in, &t[3], code->input_format, NULL ) ) return( -1 ); in = t[3]; } if( in && code->input_coding == VIPS_CODING_NONE && code->input_interpretation != VIPS_INTERPRETATION_ERROR ) { if( vips_colourspace( in, &t[4], code->input_interpretation, NULL ) ) return( -1 ); in = t[4]; } colour->n = 1; colour->in = VIPS_ARRAY( object, 2, VipsImage * ); colour->in[0] = in; colour->in[1] = NULL; if( VIPS_OBJECT_CLASS( vips_colour_code_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_colour_code_class_init( VipsColourCodeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "code"; vobject_class->description = _( "change color coding" ); vobject_class->build = vips_colour_code_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourCode, in ) ); } static void vips_colour_code_init( VipsColourCode *code ) { code->input_coding = VIPS_CODING_NONE; code->input_interpretation = VIPS_INTERPRETATION_ERROR; code->input_format = VIPS_FORMAT_NOTSET; } G_DEFINE_ABSTRACT_TYPE( VipsColourDifference, vips_colour_difference, VIPS_TYPE_COLOUR ); static int vips_colour_difference_build( VipsObject *object ) { VipsColour *colour = VIPS_COLOUR( object ); VipsColourDifference *difference = VIPS_COLOUR_DIFFERENCE( object ); VipsImage **t; VipsImage *left; VipsImage *right; t = (VipsImage **) vips_object_local_array( object, 12 ); left = difference->left; right = difference->right; if( left ) { if( vips_image_decode( left, &t[0] ) ) return( -1 ); left = t[0]; } if( right ) { if( vips_image_decode( right, &t[1] ) ) return( -1 ); right = t[1]; } /* Detach and reattach any extra bands. */ colour->input_bands = 3; if( vips_colourspace( left, &t[6], difference->interpretation, NULL ) ) return( -1 ); left = t[6]; if( vips_colourspace( right, &t[7], difference->interpretation, NULL ) ) return( -1 ); right = t[7]; /* We only process float. */ if( vips_cast_float( left, &t[8], NULL ) ) return( -1 ); left = t[8]; if( vips_cast_float( right, &t[9], NULL ) ) return( -1 ); right = t[9]; if( vips__sizealike( left, right, &t[10], &t[11] ) ) return( -1 ); left = t[10]; right = t[11]; colour->n = 2; colour->in = VIPS_ARRAY( object, 3, VipsImage * ); colour->in[0] = left; colour->in[1] = right; colour->in[2] = NULL; if( VIPS_OBJECT_CLASS( vips_colour_difference_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_colour_difference_class_init( VipsColourDifferenceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "difference"; vobject_class->description = _( "calculate color difference" ); vobject_class->build = vips_colour_difference_build; VIPS_ARG_IMAGE( class, "left", 1, _( "Left" ), _( "Left-hand input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourDifference, left ) ); VIPS_ARG_IMAGE( class, "right", 2, _( "Right" ), _( "Right-hand input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourDifference, right ) ); } static void vips_colour_difference_init( VipsColourDifference *difference ) { VipsColour *colour = VIPS_COLOUR( difference ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_B_W; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 1; } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_colour_operation_init( void ) { extern GType vips_colourspace_get_type( void ); extern GType vips_Lab2XYZ_get_type( void ); extern GType vips_XYZ2Lab_get_type( void ); extern GType vips_Lab2LCh_get_type( void ); extern GType vips_LCh2Lab_get_type( void ); extern GType vips_LCh2CMC_get_type( void ); extern GType vips_CMC2LCh_get_type( void ); extern GType vips_Yxy2XYZ_get_type( void ); extern GType vips_XYZ2Yxy_get_type( void ); extern GType vips_LabQ2Lab_get_type( void ); extern GType vips_Lab2LabQ_get_type( void ); extern GType vips_LabQ2LabS_get_type( void ); extern GType vips_LabS2LabQ_get_type( void ); extern GType vips_LabS2Lab_get_type( void ); extern GType vips_Lab2LabS_get_type( void ); extern GType vips_rad2float_get_type( void ); extern GType vips_float2rad_get_type( void ); extern GType vips_LabQ2sRGB_get_type( void ); extern GType vips_XYZ2sRGB_get_type( void ); extern GType vips_sRGB2scRGB_get_type( void ); extern GType vips_sRGB2HSV_get_type( void ); extern GType vips_HSV2sRGB_get_type( void ); extern GType vips_scRGB2XYZ_get_type( void ); extern GType vips_scRGB2BW_get_type( void ); extern GType vips_XYZ2scRGB_get_type( void ); extern GType vips_scRGB2sRGB_get_type( void ); #if defined(HAVE_LCMS) || defined(HAVE_LCMS2) extern GType vips_icc_import_get_type( void ); extern GType vips_icc_export_get_type( void ); extern GType vips_icc_transform_get_type( void ); #endif extern GType vips_dE76_get_type( void ); extern GType vips_dE00_get_type( void ); extern GType vips_dECMC_get_type( void ); vips_colourspace_get_type(); vips_Lab2XYZ_get_type(); vips_XYZ2Lab_get_type(); vips_Lab2LCh_get_type(); vips_LCh2Lab_get_type(); vips_LCh2CMC_get_type(); vips_CMC2LCh_get_type(); vips_XYZ2Yxy_get_type(); vips_Yxy2XYZ_get_type(); vips_LabQ2Lab_get_type(); vips_Lab2LabQ_get_type(); vips_LabQ2LabS_get_type(); vips_LabS2LabQ_get_type(); vips_LabS2Lab_get_type(); vips_Lab2LabS_get_type(); vips_rad2float_get_type(); vips_float2rad_get_type(); vips_LabQ2sRGB_get_type(); vips_sRGB2scRGB_get_type(); vips_scRGB2XYZ_get_type(); vips_scRGB2BW_get_type(); vips_sRGB2HSV_get_type(); vips_HSV2sRGB_get_type(); vips_XYZ2scRGB_get_type(); vips_scRGB2sRGB_get_type(); #if defined(HAVE_LCMS) || defined(HAVE_LCMS2) vips_icc_import_get_type(); vips_icc_export_get_type(); vips_icc_transform_get_type(); #endif vips_dE76_get_type(); vips_dE00_get_type(); vips_dECMC_get_type(); } vips-8.2.2/libvips/colour/sRGB2HSV.c0000664000175000017500000000770712651663124014027 00000000000000/* to HSV ... useful for compatibility with other packages * * 9/6/15 * - from LabS2Lab.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef VipsColourCode VipssRGB2HSV; typedef VipsColourCodeClass VipssRGB2HSVClass; G_DEFINE_TYPE( VipssRGB2HSV, vips_sRGB2HSV, VIPS_TYPE_COLOUR_CODE ); static void vips_sRGB2HSV_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { unsigned char *p = (unsigned char *) in[0]; unsigned char *q = (unsigned char *) out; int i; for( i = 0; i < width; i++ ) { unsigned char c_max; unsigned char c_min; float secondary_diff; float wrap_around_hue; if( p[1] < p[2] ) { if( p[2] < p[0] ) { /* Center red (at top). */ c_max = p[0]; c_min = p[1]; secondary_diff = p[1] - p[2]; wrap_around_hue = 255.0; } else { /* Center blue. */ c_max = p[2]; c_min = VIPS_MIN( p[1], p[0] ); secondary_diff = p[0] - p[1]; wrap_around_hue = 170.0; } } else { if( p[1] < p[0] ) { /* Center red (at bottom) */ c_max = p[0]; c_min = p[2]; secondary_diff = p[1] - p[2]; wrap_around_hue = 0.0; } else { /* Center green */ c_max = p[1]; c_min = VIPS_MIN( p[2], p[0] ); secondary_diff = p[2] - p[0]; wrap_around_hue = 85.0; } } if( c_max == 0 ) { q[0] = 0; q[1] = 0; q[2] = 0; } else { unsigned char delta; q[2] = c_max; delta = c_max - c_min; if( delta == 0 ) q[0] = 0; else q[0] = 42.5 * (secondary_diff / (float) delta) + wrap_around_hue; q[1] = delta * 255.0 / (float) c_max; } p += 3; q += 3; } } static void vips_sRGB2HSV_class_init( VipssRGB2HSVClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "sRGB2HSV"; object_class->description = _( "transform sRGB to HSV" ); colour_class->process_line = vips_sRGB2HSV_line; } static void vips_sRGB2HSV_init( VipssRGB2HSV *sRGB2HSV ) { VipsColour *colour = VIPS_COLOUR( sRGB2HSV ); VipsColourCode *code = VIPS_COLOUR_CODE( sRGB2HSV ); colour->interpretation = VIPS_INTERPRETATION_HSV; colour->format = VIPS_FORMAT_UCHAR; colour->bands = 3; colour->input_bands = 3; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_UCHAR; code->input_interpretation = VIPS_INTERPRETATION_sRGB; } /** * vips_sRGB2HSV: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert to HSV. * * HSV is a crude polar coordinate system for RGB images. It is provided for * compatibility with other image processing systems. See vips_Lab2LCh() for a * much better colour space. * * See also: vips_HSV2sRGB(), vips_Lab2LCh(). * * Returns: 0 on success, -1 on error. */ int vips_sRGB2HSV( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sRGB2HSV", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/Lab2LabQ.c0000664000175000017500000001115212651663124014074 00000000000000/* Lab2LabQ: quantise FLOAT Lab image into 10 11 11 format * * 4 bytes per pel: l a b lsbs * this is an image wrapper which calls line-wise packing * Copyright K.Martinez 3/5/93 * Modified: * 7/6/93 JC * - adapted for partial v2 * 5/5/94 JC * - some nint->+0.5, for speed and to ease portability * - other nint->rint * - now inclues ! * 15/11/94 JC * - all nint(), rint() removed for speed * - now -128 rather than -127 for a, b * - checks input type properly * 16/11/94 JC * - uses new im_wrap_oneonebuf() * 22/5/95 JC * - changed L to scale by 10.24, not 10.23 * 11/7/95 JC * - now uses IM_RINT() for rounding * 4/9/97 JC * - L* = 100.0 now allowed * 5/11/00 JC * - go int earlier for speed up * 20/6/02 JC * - oops, were not clipping a/b range correctly * 1/11/09 * - gtkdoc * - cleanups * 20/9/12 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLab2LabQ; typedef VipsColourCodeClass VipsLab2LabQClass; G_DEFINE_TYPE( VipsLab2LabQ, vips_Lab2LabQ, VIPS_TYPE_COLOUR_CODE ); /* @(#) convert float Lab to packed Lab32 format 10 11 11 bits * works only on buffers, not IMAGEs * Copyright 1993 K.Martinez * Modified: 3/5/93, 16/6/93 */ static void vips_Lab2LabQ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; VipsPel * restrict q = out; int i; for( i = 0; i < width; i++ ) { float fval; int lsbs; int intv; /* Scale L up to 10 bits. Add 0.5 rather than call VIPS_RINT * for speed. This will not round negatives correctly! But * this does not matter, since L is >0. L*=100.0 -> 1023. */ intv = 10.23 * p[0] + 0.5; /* scale L up to 10 bits */ intv = VIPS_CLIP( 0, intv, 1023 ); lsbs = (intv & 0x3) << 6; /* 00000011 -> 11000000 */ q[0] = intv >> 2; /* drop bot 2 bits and store */ fval = 8.0 * p[1]; /* do a */ intv = VIPS_RINT( fval ); intv = VIPS_CLIP( -1024, intv, 1023 ); lsbs |= (intv & 0x7) << 3; /* 00000111 -> 00111000 */ q[1] = intv >> 3; /* drop bot 3 bits & store */ fval = 8.0 * p[2]; /* do b */ intv = VIPS_RINT( fval ); intv = VIPS_CLIP( -1024, intv, 1023 ); lsbs |= (intv & 0x7); q[2] = intv >> 3; q[3] = lsbs; /* store lsb band */ p += 3; q += 4; } } void vips__Lab2LabQ_vec( VipsPel *out, float *in, int width ) { vips_Lab2LabQ_line( NULL, out, (VipsPel **) &in, width ); } static void vips_Lab2LabQ_class_init( VipsLab2LabQClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "Lab2LabQ"; object_class->description = _( "transform float Lab to LabQ coding" ); colour_class->process_line = vips_Lab2LabQ_line; } static void vips_Lab2LabQ_init( VipsLab2LabQ *Lab2LabQ ) { VipsColour *colour = VIPS_COLOUR( Lab2LabQ ); VipsColourCode *code = VIPS_COLOUR_CODE( Lab2LabQ ); colour->coding = VIPS_CODING_LABQ; colour->interpretation = VIPS_INTERPRETATION_LABQ; colour->format = VIPS_FORMAT_UCHAR; colour->input_bands = 3; colour->bands = 4; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_FLOAT; } /** * vips_Lab2LabQ: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert a Lab three-band float image to LabQ (#VIPS_CODING_LABQ). * * See also: vips_LabQ2Lab(). * * Returns: 0 on success, -1 on error. */ int vips_Lab2LabQ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Lab2LabQ", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/LCh2UCS.c0000664000175000017500000001172512651663124013665 00000000000000/* LCh2CMC * * Modified: * 2/11/09 * - gtkdoc * 19/9/12 * - redone as a class * 24/9/14 * - rechecked against original paper, seems OK */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsLCh2CMC; typedef VipsColourTransformClass VipsLCh2CMCClass; G_DEFINE_TYPE( VipsLCh2CMC, vips_LCh2CMC, VIPS_TYPE_COLOUR_TRANSFORM ); /* I ordered this paper from the library and it took ages. For reference, the * recommended short formula are: * * Lucs * = 1.744 * L, L < 16 * = (1/l) * (21.75 * ln(L) + 0.3838 * L - 38.54), otherwise * * Cucs = (l/c) * (0.162 * C + 10.92 * (ln(0.638 + 0.07216 * C)) + 4.907) * * hucs = h + D * f * where * D = k4 + k5 * P * | P | ** k6 * P = cos(k7 * h + k8) * f = (C ** 4 / (C ** 4 + 1900)) ** 0.5 * * h k4 k5 k6 k7 k8 * 0 - 49 133.87 -134.5 -0.924 1.727 340 * 49 - 110 11.78 -12.7 -0.218 2.120 333 * 110 - 269.5 13.87 10.93 0.140 1.000 -83 * 269.5 - 360 0.14 5.23 0.170 1.610 233 * * They have a much more complicated but slightly more accurate formula for * hucs. This one is pretty good, simple approximation. */ /** * vips_col_L2Lcmc: * @L: CIE L* * * Calculate Lcmc from L. * * Returns: Lcmc */ float vips_col_L2Lcmc( float L ) { float Lcmc; if( L < 16.0 ) Lcmc = 1.744 * L; else Lcmc = 21.75 * log( L ) + 0.3838 * L - 38.54; return( Lcmc ); } /** * vips_col_C2Ccmc: * @C: Chroma * * Calculate Ccmc from C. * * Returns: Ccmc. */ float vips_col_C2Ccmc( float C ) { float Ccmc; Ccmc = 0.162 * C + 10.92 * log( 0.638 + 0.07216 * C ) + 4.907; if( Ccmc < 0 ) Ccmc = 0; return( Ccmc ); } /** * vips_col_Ch2hcmc: * @C: Chroma * @h: Hue (degrees) * * Calculate hcmc from C and h. * * Returns: hcmc. */ float vips_col_Ch2hcmc( float C, float h ) { float P, D, f, g; float k4, k5, k6, k7, k8; float hcmc; if( h < 49.1 ) { k4 = 133.87; k5 = -134.5; k6 = -.924; k7 = 1.727; k8 = 340.0; } else if( h < 110.1 ) { k4 = 11.78; k5 = -12.7; k6 = -.218; k7 = 2.12; k8 = 333.0; } else if( h < 269.6 ) { k4 = 13.87; k5 = 10.93; k6 = 0.14; k7 = 1.0; k8 = -83.0; } else { k4 = .14; k5 = 5.23; k6 = .17; k7 = 1.61; k8 = 233.0; } P = cos( VIPS_RAD( k7 * h + k8 ) ); D = k4 + k5 * P * pow( VIPS_FABS( P ), k6 ); g = C * C * C * C; f = sqrt( g / (g + 1900.0) ); hcmc = h + D * f; return( hcmc ); } static void vips_LCh2CMC_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float *p = (float *) in[0]; float *q = (float *) out; int x; for( x = 0; x < width; x++ ) { float L = p[0]; float C = p[1]; float h = p[2]; p += 3; q[0] = vips_col_L2Lcmc( L ); q[1] = vips_col_C2Ccmc( C ); q[2] = vips_col_Ch2hcmc( C, h ); q += 3; } } static void vips_LCh2CMC_class_init( VipsLCh2CMCClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LCh2CMC"; object_class->description = _( "transform LCh to CMC" ); colour_class->process_line = vips_LCh2CMC_line; } static void vips_LCh2CMC_init( VipsLCh2CMC *LCh2CMC ) { VipsColour *colour = VIPS_COLOUR( LCh2CMC ); colour->interpretation = VIPS_INTERPRETATION_CMC; } /** * vips_LCh2CMC: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Turn LCh to CMC. * * The CMC colourspace is described in "Uniform Colour Space Based on the * CMC(l:c) Colour-difference Formula", M R Luo and B Rigg, Journal of the * Society of Dyers and Colourists, vol 102, 1986. Distances in this * colourspace approximate, within 10% or so, differences in the CMC(l:c) * colour difference formula. * * This operation generates CMC(1:1). For CMC(2:1), halve Lucs and double * Cucs. * * See also: vips_CMC2LCh(). * * Returns: 0 on success, -1 on error */ int vips_LCh2CMC( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LCh2CMC", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/sRGB2scRGB.c0000664000175000017500000001414612530402247014313 00000000000000/* Turn displayable rgb files to scRGB. * * Modified: * 15/11/94 JC * - memory leak fixed * - error message added * 16/11/94 JC * - partialed * 21/9/12 * - redone as a class * - sRGB only, support for other RGBs is now via lcms * 6/11/12 * - add 16-bit sRGB import * 11/12/12 * - cut about to make sRGB2scRGB.c * 12/2/15 * - add 16-bit alpha handling */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* We can't use VipsColourCode as our parent class. We want to handle * alpha ourselves so we can get 16 -> 8 bit conversion right. */ typedef struct _VipssRGB2scRGB { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipssRGB2scRGB; typedef VipsOperationClass VipssRGB2scRGBClass; G_DEFINE_TYPE( VipssRGB2scRGB, vips_sRGB2scRGB, VIPS_TYPE_OPERATION ); /* Convert a buffer of 8-bit pixels. */ static void vips_sRGB2scRGB_line_8( float * restrict q, VipsPel * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { int r = p[0]; int g = p[1]; int b = p[2]; float R, G, B; p += 3; vips_col_sRGB2scRGB_8( r, g, b, &R, &G, &B ); q[0] = R; q[1] = G; q[2] = B; q += 3; for( j = 0; j < extra_bands; j++ ) q[j] = p[j]; p += extra_bands; q += extra_bands; } } /* Convert a buffer of 16-bit pixels. */ static void vips_sRGB2scRGB_line_16( float * restrict q, unsigned short * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { int r = p[0]; int g = p[1]; int b = p[2]; float R, G, B; p += 3; vips_col_sRGB2scRGB_16( r, g, b, &R, &G, &B ); q[0] = R; q[1] = G; q[2] = B; q += 3; for( j = 0; j < extra_bands; j++ ) q[j] = p[j] / 256.0; p += extra_bands; q += extra_bands; } } static int vips_sRGB2scRGB_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; VipsImage *in = ir->im; int y; if( vips_region_prepare( ir, r ) ) return( -1 ); VIPS_GATE_START( "vips_sRGB2scRGB_gen: work" ); for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); float *q = (float *) VIPS_REGION_ADDR( or, r->left, r->top + y ); if( in->BandFmt == VIPS_FORMAT_UCHAR ) vips_sRGB2scRGB_line_8( q, p, in->Bands - 3, r->width ); else vips_sRGB2scRGB_line_16( q, (unsigned short *) p, in->Bands - 3, r->width ); } VIPS_GATE_STOP( "vips_sRGB2scRGB_gen: work" ); return( 0 ); } static int vips_sRGB2scRGB_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipssRGB2scRGB *sRGB2scRGB = (VipssRGB2scRGB *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; VipsImage *out; VipsBandFormat format; if( VIPS_OBJECT_CLASS( vips_sRGB2scRGB_parent_class )-> build( object ) ) return( -1 ); in = sRGB2scRGB->in; if( vips_check_bands_atleast( class->nickname, in, 3 ) ) return( -1 ); format = in->BandFmt == VIPS_FORMAT_USHORT ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR; if( vips_cast( in, &t[0], format, NULL ) ) return( -1 ); in = t[0]; out = vips_image_new(); if( vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) { g_object_unref( out ); return( -1 ); } out->Type = VIPS_INTERPRETATION_scRGB; out->BandFmt = VIPS_FORMAT_FLOAT; if( vips_image_generate( out, vips_start_one, vips_sRGB2scRGB_gen, vips_stop_one, in, sRGB2scRGB ) ) { g_object_unref( out ); return( -1 ); } g_object_set( object, "out", out, NULL ); return( 0 ); } static void vips_sRGB2scRGB_class_init( VipssRGB2scRGBClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "sRGB2scRGB"; object_class->description = _( "convert an sRGB image to scRGB" ); object_class->build = vips_sRGB2scRGB_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipssRGB2scRGB, in ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipssRGB2scRGB, out ) ); } static void vips_sRGB2scRGB_init( VipssRGB2scRGB *sRGB2scRGB ) { } /** * vips_sRGB2scRGB: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert an sRGB image to scRGB. The input image can be 8 or 16-bit * unsigned int. * * If the input image is unsigned 16-bit, any extra channels after RGB are * divided by 256. Thus, scRGB alpha is always 0 - 255.99. * * See also: vips_scRGB2XYZ(), vips_scRGB2sRGB(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_sRGB2scRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sRGB2scRGB", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/dECMC.c0000664000175000017500000000505612530402247013426 00000000000000/* dECMC.c * * Modified: * 31/10/12 * - from dE76.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef struct _VipsdECMC { VipsColourDifference parent_instance; } VipsdECMC; typedef VipsColourDifferenceClass VipsdECMCClass; G_DEFINE_TYPE( VipsdECMC, vips_dECMC, VIPS_TYPE_COLOUR_DIFFERENCE ); static void vips_dECMC_class_init( VipsdECMCClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "dECMC"; object_class->description = _( "calculate dECMC" ); colour_class->process_line = vips__pythagoras_line; } static void vips_dECMC_init( VipsdECMC *dECMC ) { VipsColourDifference *difference = VIPS_COLOUR_DIFFERENCE( dECMC ); difference->interpretation = VIPS_INTERPRETATION_CMC; } /** * vips_dECMC: * @left: first input image * @right: second input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Calculate dE CMC. The input images are transformed to CMC colour space and * the euclidean distance between corresponding pixels calculated. * * To calculate a colour difference with values for (l:c) other than (1:1), * transform the two source images to CMC yourself, scale the channels * appropriately, and call this function. * * See also: vips_colourspace() * * Returns: 0 on success, -1 on error */ int vips_dECMC( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "dECMC", ap, left, right, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/LCh2Lab.c0000664000175000017500000000612712530402247013722 00000000000000/* im_LCh2Lab * * 15/11/94 JC * - error messages added * - memory leak fixed * 16/11/94 JC * - uses im_wrap_oneonebuf() now * 8/2/95 JC * - im_wrap v2 * 2/11/09 * - gtkdoc * 19/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsLCh2Lab; typedef VipsColourTransformClass VipsLCh2LabClass; G_DEFINE_TYPE( VipsLCh2Lab, vips_LCh2Lab, VIPS_TYPE_COLOUR_TRANSFORM ); /* Process a buffer of data. */ static void vips_LCh2Lab_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int x; for( x = 0; x < width; x++ ) { float L = p[0]; float C = p[1]; float h = p[2]; float a, b; p += 3; a = C * cos( VIPS_RAD( h ) ); b = C * sin( VIPS_RAD( h ) ); q[0] = L; q[1] = a; q[2] = b; q += 3; } } /** * vips_col_Ch2ab: * @C: Chroma * @h: Hue angle (degrees) * @a: return CIE a* value * @b: return CIE b* value * * Calculate ab from Ch, h in degrees. */ void vips_col_Ch2ab( float C, float h, float *a, float *b ) { float in[3]; float out[3]; float *x; in[1] = C; in[2] = h; x = &in[0]; vips_LCh2Lab_line( NULL, (VipsPel *) out, (VipsPel **) &x, 1 ); *a = out[1]; *b = out[2]; } static void vips_LCh2Lab_class_init( VipsLCh2LabClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LCh2Lab"; object_class->description = _( "transform LCh to Lab" ); colour_class->process_line = vips_LCh2Lab_line; } static void vips_LCh2Lab_init( VipsLCh2Lab *LCh2Lab ) { VipsColour *colour = VIPS_COLOUR( LCh2Lab ); colour->interpretation = VIPS_INTERPRETATION_LAB; } /** * vips_LCh2Lab: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Turn LCh to Lab. * * Returns: 0 on success, -1 on error */ int vips_LCh2Lab( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LCh2Lab", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/Yxy2XYZ.c0000664000175000017500000000516312530402247014040 00000000000000/* Turn Yxy to XYZ colourspace. * * Modified: * 29/5/02 JC * - from lab2xyz * 2/11/09 * - gtkdoc * - cleanups * 20/9/12 * redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsYxy2XYZ; typedef VipsColourTransformClass VipsYxy2XYZClass; G_DEFINE_TYPE( VipsYxy2XYZ, vips_Yxy2XYZ, VIPS_TYPE_COLOUR_TRANSFORM ); void vips_Yxy2XYZ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int i; for( i = 0; i < width; i++ ) { float Y = p[0]; float x = p[1]; float y = p[2]; double total; float X, Z; p += 3; total = Y / y; X = x * total; Z = (X - x * X - x * Y) / x; q[0] = X; q[1] = Y; q[2] = Z; q += 3; } } static void vips_Yxy2XYZ_class_init( VipsYxy2XYZClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "Yxy2XYZ"; object_class->description = _( "transform Yxy to XYZ" ); colour_class->process_line = vips_Yxy2XYZ_line; } static void vips_Yxy2XYZ_init( VipsYxy2XYZ *Yxy2XYZ ) { VipsColour *colour = VIPS_COLOUR( Yxy2XYZ ); colour->interpretation = VIPS_INTERPRETATION_XYZ; } /** * vips_Yxy2XYZ: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Turn XYZ to Yxy. * * Returns: 0 on success, -1 on error */ int vips_Yxy2XYZ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Yxy2XYZ", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/LabS2Lab.c0000664000175000017500000000551212530402247014072 00000000000000/* LabS2Lab() * * 12/12/02 JC * - adapted from im_LabS2LabQ() * 2/11/09 * - gtkdoc, cleanup */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabS2Lab; typedef VipsColourCodeClass VipsLabS2LabClass; G_DEFINE_TYPE( VipsLabS2Lab, vips_LabS2Lab, VIPS_TYPE_COLOUR_CODE ); /* Convert n pels from signed short to Lab. */ static void vips_LabS2Lab_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { signed short *p = (signed short *) in[0]; float *q = (float *) out; int i; for( i = 0; i < width; i++ ) { q[0] = p[0] / (32767.0 / 100.0); q[1] = p[1] / (32768.0 / 128.0); q[2] = p[2] / (32768.0 / 128.0); p += 3; q += 3; } } static void vips_LabS2Lab_class_init( VipsLabS2LabClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabS2Lab"; object_class->description = _( "transform signed short Lab to float" ); colour_class->process_line = vips_LabS2Lab_line; } static void vips_LabS2Lab_init( VipsLabS2Lab *LabS2Lab ) { VipsColour *colour = VIPS_COLOUR( LabS2Lab ); VipsColourCode *code = VIPS_COLOUR_CODE( LabS2Lab ); colour->interpretation = VIPS_INTERPRETATION_LAB; colour->format = VIPS_FORMAT_FLOAT; colour->input_bands = 3; colour->bands = 3; code->input_coding = VIPS_CODING_NONE; code->input_format = VIPS_FORMAT_SHORT; } /** * vips_LabS2Lab: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert a LabS three-band signed short image to a three-band float image. * * See also: vips_LabS2Lab(). * * Returns: 0 on success, -1 on error. */ int vips_LabS2Lab( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabS2Lab", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/LabQ2sRGB.c0000664000175000017500000003113412650106402014163 00000000000000/* Turn Lab 32bit packed format into displayable rgb. Fast, but very * inaccurate: for display only! Note especially that this dithers and will * give different results on different runs. * * The XYZ <-> sRGB transform implemented is this one: * * http://en.wikipedia.org/wiki/SRGB * * 5/11/97 Steve Perry * - adapted from old ip code * 7/11/97 JC * - small tidies, added to VIPS * - LUT build split into separate function * 21/9/12 * - redone as a class * - sRGB only, support for other RGBs is now via lcms * 1/11/12 * - faster and more accurate sRGB <-> XYZ conversion * 6/11/12 * - added a 16-bit path * 11/12/12 * - spot NaN, Inf in XYZ2RGB, they break LUT indexing * - split sRGB <-> XYZ into sRGB <-> scRGB <-> XYZ so we can support * scRGB as a colourspace */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcolour.h" typedef VipsColourCode VipsLabQ2sRGB; typedef VipsColourCodeClass VipsLabQ2sRGBClass; G_DEFINE_TYPE( VipsLabQ2sRGB, vips_LabQ2sRGB, VIPS_TYPE_COLOUR_CODE ); /* 8-bit linear -> sRGB lut. * * There's an extra element at the end to let us do a +1 for interpolation. */ static int vips_Y2v_8[256 + 1]; /* 8-bit sRGB -> linear lut. */ static float vips_v2Y_8[256]; /* 16-bit linear -> sRGB lut. * * There's an extra element at the end to let us do a +1 for interpolation. */ static int vips_Y2v_16[65536 + 1]; /* 16-bit sRGB -> linear lut. */ static float vips_v2Y_16[65536]; /* Do our own indexing of the arrays below to make sure we get efficient mults. */ #define INDEX( L, A, B ) (L + (A << 6) + (B << 12)) /* A set of LUTs for quick LabQ->sRGB transforms. */ static VipsPel vips_red[64 * 64 * 64]; static VipsPel vips_green[64 * 64 * 64]; static VipsPel vips_blue[64 * 64 * 64]; /* sRGB to scRGB. * * @range is eg. 256 for 8-bit data. */ static int vips_col_sRGB2scRGB( int range, float *lut, int r, int g, int b, float *R, float *G, float *B ) { int maxval = range - 1; int i; i = VIPS_CLIP( 0, r, maxval ); *R = lut[i]; i = VIPS_CLIP( 0, g, maxval ); *G = lut[i]; i = VIPS_CLIP( 0, b, maxval ); *B = lut[i]; return( 0 ); } /* Create the sRGB linear and unlinear luts. @range is eg. 256 for 8-bit luts. */ static void calcul_tables( int range, int *Y2v, float *v2Y ) { int i; for( i = 0; i < range; i++ ) { float f = (float) i / (range - 1); float v; if( f <= 0.0031308 ) v = 12.92 * f; else v = (1.0 + 0.055) * pow( f, 1.0 / 2.4 ) - 0.055; Y2v[i] = VIPS_RINT( (range - 1) * v ); } /* Copy the final element. This is used in the piecewise linear * interpolator below. */ Y2v[range] = Y2v[range - 1]; for( i = 0; i < range; i++ ) { float f = (float) i / (range - 1); if( f <= 0.04045 ) v2Y[i] = f / 12.92; else v2Y[i] = pow( (f + 0.055) / (1 + 0.055), 2.4 ); } } static void * calcul_tables_8( void *client ) { calcul_tables( 256, vips_Y2v_8, vips_v2Y_8 ); return( NULL ); } static void vips_col_make_tables_RGB_8( void ) { static gboolean made_tables = FALSE; /* We want to avoid having a mutex in this path, so use gonce and a * static var instead. */ if( !made_tables ) { static GOnce once = G_ONCE_INIT; (void) g_once( &once, calcul_tables_8, NULL ); made_tables = TRUE; } } int vips_col_sRGB2scRGB_8( int r, int g, int b, float *R, float *G, float *B ) { vips_col_make_tables_RGB_8(); return( vips_col_sRGB2scRGB( 256, vips_v2Y_8, r, g, b, R, G, B ) ); } static void * calcul_tables_16( void *client ) { calcul_tables( 65536, vips_Y2v_16, vips_v2Y_16 ); return( NULL ); } static void vips_col_make_tables_RGB_16( void ) { static gboolean made_tables = FALSE; /* We want to avoid having a mutex in this path, so use gonce and a * static var instead. */ if( !made_tables ) { static GOnce once = G_ONCE_INIT; (void) g_once( &once, calcul_tables_16, NULL ); made_tables = TRUE; } } int vips_col_sRGB2scRGB_16( int r, int g, int b, float *R, float *G, float *B ) { vips_col_make_tables_RGB_16(); return( vips_col_sRGB2scRGB( 65536, vips_v2Y_16, r, g, b, R, G, B ) ); } /* The matrix already includes the D65 channel weighting, so we just scale by * Y. */ #define SCALE (VIPS_D65_Y0) /* scRGB to XYZ. */ int vips_col_scRGB2XYZ( float R, float G, float B, float *X, float *Y, float *Z ) { *X = SCALE * 0.4124 * R + SCALE * 0.3576 * G + SCALE * 0.18056 * B; *Y = SCALE * 0.2126 * R + SCALE * 0.7152 * G + SCALE * 0.07220 * B; *Z = SCALE * 0.0193 * R + SCALE * 0.1192 * G + SCALE * 0.9505 * B; return( 0 ); } /* Turn XYZ into scRGB. */ int vips_col_XYZ2scRGB( float X, float Y, float Z, float *R, float *G, float *B ) { *R = 3.2406 / SCALE * X + -1.5372 / SCALE * Y + -0.4986 / SCALE * Z; *G = -0.9689 / SCALE * X + 1.8758 / SCALE * Y + 0.0415 / SCALE * Z; *B = 0.0557 / SCALE * X + -0.2040 / SCALE * Y + 1.0570 / SCALE * Z; return( 0 ); } /* Turn scRGB into sRGB. Return og=1 for out of gamut - rgb will contain an * approximation of the right colour. * * Return -1 for NaN, Inf etc. */ static int vips_col_scRGB2sRGB( int range, int *lut, float R, float G, float B, int *r, int *g, int *b, int *og_ret ) { int maxval = range - 1; int og; float Yf; int Yi; float v; /* XYZ can be Nan, Inf etc. Throw those values out, they will break * our clipping. * * Don't use isnormal(), it is false for 0.0 and for subnormal * numbers. */ if( VIPS_ISNAN( R ) || VIPS_ISINF( R ) || VIPS_ISNAN( G ) || VIPS_ISINF( G ) || VIPS_ISNAN( B ) || VIPS_ISINF( B ) ) { *r = 0; *g = 0; *b = 0; return( -1 ); } /* Clip range, set the out-of-gamut flag. */ #define CLIP( L, V, H ) { \ if( (V) < (L) ) { \ (V) = (L); \ og = 1; \ } \ if( (V) > (H) ) { \ (V) = (H); \ og = 1; \ } \ } /* Look up with a float index: interpolate between the nearest two * points. * * The +1 on the index is safe, see above. */ og = 0; Yf = R * maxval; CLIP( 0, Yf, maxval ); Yi = (int) Yf; v = lut[Yi] + (lut[Yi + 1] - lut[Yi]) * (Yf - Yi); *r = VIPS_RINT( v ); Yf = G * maxval; CLIP( 0, Yf, maxval ); Yi = (int) Yf; v = lut[Yi] + (lut[Yi + 1] - lut[Yi]) * (Yf - Yi); *g = VIPS_RINT( v ); Yf = B * maxval; CLIP( 0, Yf, maxval ); Yi = (int) Yf; v = lut[Yi] + (lut[Yi + 1] - lut[Yi]) * (Yf - Yi); *b = VIPS_RINT( v ); if( og_ret ) *og_ret = og; return( 0 ); } int vips_col_scRGB2sRGB_8( float R, float G, float B, int *r, int *g, int *b, int *og ) { vips_col_make_tables_RGB_8(); return( vips_col_scRGB2sRGB( 256, vips_Y2v_8, R, G, B, r, g, b, og ) ); } int vips_col_scRGB2sRGB_16( float R, float G, float B, int *r, int *g, int *b, int *og ) { vips_col_make_tables_RGB_16(); return( vips_col_scRGB2sRGB( 65536, vips_Y2v_16, R, G, B, r, g, b, og ) ); } /* Turn scRGB into BW. Return or=1 for out of gamut - g will contain an * approximation of the right colour. * * Return -1 for NaN, Inf etc. */ static int vips_col_scRGB2BW( int range, int *lut, float R, float G, float B, int *g, int *og_ret ) { int maxval = range - 1; float Y; int og; float Yf; int Yi; float v; /* RGB can be Nan, Inf etc. Throw those values out, they will break * our clipping. * * Don't use isnormal(), it is false for 0.0 and for subnormal * numbers. */ if( VIPS_ISNAN( R ) || VIPS_ISINF( R ) || VIPS_ISNAN( G ) || VIPS_ISINF( G ) || VIPS_ISNAN( B ) || VIPS_ISINF( B ) ) { *g = 0; return( -1 ); } /* The usual ratio. We do this in linear space before we gamma. */ Y = 0.2 * R + 0.7 * G + 0.1 * B; /* Look up with a float index: interpolate between the nearest two * points. * * The +1 on the index is safe, see above. */ og = 0; Yf = Y * maxval; CLIP( 0, Yf, maxval ); Yi = (int) Yf; v = lut[Yi] + (lut[Yi + 1] - lut[Yi]) * (Yf - Yi); *g = VIPS_RINT( v ); if( og_ret ) *og_ret = og; return( 0 ); } int vips_col_scRGB2BW_16( float R, float G, float B, int *g, int *og ) { vips_col_make_tables_RGB_16(); return( vips_col_scRGB2BW( 65536, vips_Y2v_16, R, G, B, g, og ) ); } int vips_col_scRGB2BW_8( float R, float G, float B, int *g, int *og ) { vips_col_make_tables_RGB_8(); return( vips_col_scRGB2BW( 256, vips_Y2v_8, R, G, B, g, og ) ); } /* Build Lab->disp dither tables. */ static void * build_tables( void *client ) { int l, a, b; int t; for( l = 0; l < 64; l++ ) { for( a = 0; a < 64; a++ ) { for( b = 0; b < 64; b++ ) { /* Scale to lab space. */ float L = (l << 2) * (100.0/256.0); float A = (signed char) (a << 2); float B = (signed char) (b << 2); float X, Y, Z; float Rf, Gf, Bf; int rb, gb, bb; int oflow; vips_col_Lab2XYZ( L, A, B, &X, &Y, &Z ); vips_col_XYZ2scRGB( X, Y, Z, &Rf, &Gf, &Bf ); vips_col_scRGB2sRGB_8( Rf, Gf, Bf, &rb, &gb, &bb, &oflow ); t = INDEX( l, a, b ); vips_red[t] = rb; vips_green[t] = gb; vips_blue[t] = bb; } } } return( NULL ); } static void vips_col_make_tables_LabQ2sRGB( void ) { static GOnce once = G_ONCE_INIT; (void) g_once( &once, build_tables, NULL ); } /* Process a buffer of data. */ static void vips_LabQ2sRGB_line( VipsColour *colour, VipsPel *q, VipsPel **in, int width ) { unsigned char *p = (unsigned char *) in[0]; int i, t; /* Current error. */ int le = 0; int ae = 0; int be = 0; for( i = 0; i < width; i++ ) { /* Get colour, add in error from previous pixel. */ int L = p[0] + le; int A = (signed char) p[1] + ae; int B = (signed char) p[2] + be; p += 4; /* Look out for overflow. */ L = VIPS_MIN( 255, L ); A = VIPS_MIN( 127, A ); B = VIPS_MIN( 127, B ); /* Find new quant error. This will always be +ve. */ le = L & 3; ae = A & 3; be = B & 3; /* Scale to 0-63. */ L = (L >> 2) & 63; A = (A >> 2) & 63; B = (B >> 2) & 63; /* Convert to RGB. */ t = INDEX( L, A, B ); q[0] = vips_red[t]; q[1] = vips_green[t]; q[2] = vips_blue[t]; q += 3; } } static void vips_LabQ2sRGB_class_init( VipsLabQ2sRGBClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "LabQ2sRGB"; object_class->description = _( "convert a LabQ image to sRGB" ); colour_class->process_line = vips_LabQ2sRGB_line; vips_col_make_tables_LabQ2sRGB(); } static void vips_LabQ2sRGB_init( VipsLabQ2sRGB *LabQ2sRGB ) { VipsColour *colour = VIPS_COLOUR( LabQ2sRGB ); VipsColourCode *code = VIPS_COLOUR_CODE( LabQ2sRGB ); colour->coding = VIPS_CODING_NONE; colour->interpretation = VIPS_INTERPRETATION_sRGB; colour->format = VIPS_FORMAT_UCHAR; colour->bands = 3; code->input_coding = VIPS_CODING_LABQ; } /** * vips_LabQ2sRGB: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Unpack a LabQ (#VIPS_CODING_LABQ) image to a three-band short image. * * See also: vips_LabS2LabQ(), vips_LabQ2sRGB(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_LabQ2sRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "LabQ2sRGB", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/scRGB2BW.c0000664000175000017500000001432212651663124014031 00000000000000/* Turn scRGB into greyscale. * * 17/4/15 * - from scRGB2BW.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* We can't use VipsColourCode as our parent class. We want to handle * alpha ourselves so we can get 16 -> 8 bit conversion right. */ typedef struct _VipsscRGB2BW { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int depth; } VipsscRGB2BW; typedef VipsOperationClass VipsscRGB2BWClass; G_DEFINE_TYPE( VipsscRGB2BW, vips_scRGB2BW, VIPS_TYPE_OPERATION ); /* Process a buffer of data. */ static void vips_scRGB2BW_line_8( VipsPel * restrict q, float * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; int g; int or; vips_col_scRGB2BW_8( R, G, B, &g, &or ); p += 3; q[0] = g; q += 1; for( j = 0; j < extra_bands; j++ ) q[j] = p[j]; p += extra_bands; q += extra_bands; } } static void vips_scRGB2BW_line_16( unsigned short * restrict q, float * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; int g; int or; vips_col_scRGB2BW_16( R, G, B, &g, &or ); p += 3; q[0] = g; q += 1; for( j = 0; j < extra_bands; j++ ) q[j] = VIPS_FCLIP( 0, p[j] * 256.0, USHRT_MAX ); p += extra_bands; q += extra_bands; } } static int vips_scRGB2BW_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsscRGB2BW *scRGB2BW = (VipsscRGB2BW *) b; VipsRect *r = &or->valid; VipsImage *in = ir->im; int y; if( vips_region_prepare( ir, r ) ) return( -1 ); VIPS_GATE_START( "vips_scRGB2BW_gen: work" ); for( y = 0; y < r->height; y++ ) { float *p = (float *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *q = (VipsPel *) VIPS_REGION_ADDR( or, r->left, r->top + y ); if( scRGB2BW->depth == 16 ) vips_scRGB2BW_line_16( (unsigned short *) q, p, in->Bands - 3, r->width ); else vips_scRGB2BW_line_8( q, p, in->Bands - 3, r->width ); } VIPS_GATE_STOP( "vips_scRGB2BW_gen: work" ); return( 0 ); } static int vips_scRGB2BW_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsscRGB2BW *scRGB2BW = (VipsscRGB2BW *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; VipsBandFormat format; VipsInterpretation interpretation; VipsImage *out; if( VIPS_OBJECT_CLASS( vips_scRGB2BW_parent_class )->build( object ) ) return( -1 ); in = scRGB2BW->in; if( vips_check_bands_atleast( class->nickname, in, 3 ) ) return( -1 ); switch( scRGB2BW->depth ) { case 16: interpretation = VIPS_INTERPRETATION_GREY16; format = VIPS_FORMAT_USHORT; break; case 8: interpretation = VIPS_INTERPRETATION_B_W; format = VIPS_FORMAT_UCHAR; break; default: vips_error( class->nickname, "%s", _( "depth must be 8 or 16" ) ); return( -1 ); } if( vips_cast_float( in, &t[0], NULL ) ) return( -1 ); in = t[0]; out = vips_image_new(); if( vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) { g_object_unref( out ); return( -1 ); } out->Type = interpretation; out->BandFmt = format; out->Bands = in->Bands - 2; if( vips_image_generate( out, vips_start_one, vips_scRGB2BW_gen, vips_stop_one, in, scRGB2BW ) ) { g_object_unref( out ); return( -1 ); } g_object_set( object, "out", out, NULL ); return( 0 ); } static void vips_scRGB2BW_class_init( VipsscRGB2BWClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "scRGB2BW"; object_class->description = _( "convert scRGB to BW" ); object_class->build = vips_scRGB2BW_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsscRGB2BW, in ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsscRGB2BW, out ) ); VIPS_ARG_INT( class, "depth", 130, _( "Depth" ), _( "Output device space depth in bits" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsscRGB2BW, depth ), 8, 16, 8 ); } static void vips_scRGB2BW_init( VipsscRGB2BW *scRGB2BW ) { scRGB2BW->depth = 8; } /** * vips_scRGB2BW: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @depth: depth of output image in bits * * Convert an scRGB image to greyscale. Set @depth to 16 to get 16-bit output. * * If @depth is 16, any extra channels after RGB are * multiplied by 256. * * See also: vips_LabS2LabQ(), vips_sRGB2scRGB(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_scRGB2BW( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "scRGB2BW", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/Lab2LCh.c0000664000175000017500000000656012623642734013735 00000000000000/* Turn Lab to LCh * * 2/11/09 * - gtkdoc * - cleanups * 18/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsLab2LCh; typedef VipsColourTransformClass VipsLab2LChClass; G_DEFINE_TYPE( VipsLab2LCh, vips_Lab2LCh, VIPS_TYPE_COLOUR_TRANSFORM ); /** * vips_col_ab2h: * @a: CIE a * @b: CIE b * * Returns: Hue (degrees) */ double vips_col_ab2h( double a, double b ) { double h; #ifdef HAVE_ATAN2 h = VIPS_DEG( atan2( b, a ) ); if( h < 0.0 ) h += 360; #else /* We have to get the right quadrant! */ if( a == 0 ) { if( b < 0.0 ) h = 270; else if( b == 0.0 ) h = 0; else h = 90; } else { double t = atan( b / a ); if( a > 0.0 ) if( b < 0.0 ) h = VIPS_DEG( t + VIPS_PI * 2.0 ); else h = VIPS_DEG( t ); else h = VIPS_DEG( t + VIPS_PI ); } #endif return( h ); } void vips_col_ab2Ch( float a, float b, float *C, float *h ) { #ifdef HAVE_ATAN2 *h = VIPS_DEG( atan2( b, a ) ); if( *h < 0.0 ) *h += 360; #else *h = vips_col_ab2h( a, b ); #endif #ifdef HAVE_HYPOT *C = hypot( a, b ); #else *C = sqrt( a * a + b * b ); #endif } static void vips_Lab2LCh_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int x; for( x = 0; x < width; x++ ) { float L = p[0]; float a = p[1]; float b = p[2]; float C, h; p += 3; C = sqrt( a * a + b * b ); h = vips_col_ab2h( a, b ); q[0] = L; q[1] = C; q[2] = h; q += 3; } } static void vips_Lab2LCh_class_init( VipsLab2LChClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "Lab2LCh"; object_class->description = _( "transform Lab to LCh" ); colour_class->process_line = vips_Lab2LCh_line; } static void vips_Lab2LCh_init( VipsLab2LCh *Lab2LCh ) { VipsColour *colour = VIPS_COLOUR( Lab2LCh ); colour->interpretation = VIPS_INTERPRETATION_LCH; } /** * vips_Lab2LCh: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Turn Lab to LCh. * * Returns: 0 on success, -1 on error */ int vips_Lab2LCh( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Lab2LCh", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/icc_transform.c0000664000175000017500000010066512605241561015411 00000000000000/* Transform images with little cms *default: * * 26/4/02 JC * 26/8/05 * - attach profiles and intents to output images * - added im_icc_import_embedded() to import with an embedded profile * 12/5/06 * - lock around cmsDoTransform * 23/1/07 * - set RGB16 on 16-bit RGB export * 6/4/09 * - catch lcms error messages * 2/11/09 * - gtkdoc * - small cleanups * - call attach_profile() before im_wrapone() so the profile will get * written if we are wrinting to a file * 2/8/10 * - add lcms2 * 12/7/11 * - import and export cast @in to an appropriate format for you * 25/9/12 * - redo as a class * 14/5/13 * - import and export would segv on very wide images * 12/11/13 * - support XYZ as an alternative PCS * 10/9/14 * - support GRAY as an input and output space * 29/9/14 * - check input profiles for compatibility with the input image, thanks * James * 26/6/15 * - better profile sanity checking for icc import */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #if defined( HAVE_LCMS ) || defined( HAVE_LCMS2 ) #include #include #include /* Has to be before VIPS to avoid nameclashes. */ #ifdef HAVE_LCMS2 #include #else /*HAVE_LCMS*/ #include /* Use the lcms2 names. */ #define cmsSigRgbData icSigRgbData #define cmsSigLabData icSigLabData #define cmsSigCmykData icSigCmykData #define cmsSigXYZData icSigXYZData #endif #include #include "pcolour.h" /* Call lcms with up to this many pixels at once. */ #define PIXEL_BUFFER_SIZE (10000) /* LCMS1 was missing some stuff. */ #ifdef HAVE_LCMS typedef DWORD cmsUInt32Number; /* This doesn't exist in lcms1, just set it to zero. */ #define cmsFLAGS_NOCACHE (0) #endif /** * VipsIntent: * @VIPS_INTENT_PERCEPTUAL: perceptual rendering intent * @VIPS_INTENT_RELATIVE: relative colorimetric rendering intent * @VIPS_INTENT_SATURATION: saturation rendering intent * @VIPS_INTENT_ABSOLUTE: absolute colorimetric rendering intent * * The rendering intent. #VIPS_INTENT_ABSOLUTE is best for * scientific work, #VIPS_INTENT_RELATIVE is usually best for * accurate communication with other imaging libraries. */ /** * VipsPCS: * @VIPS_PCS_LAB: use CIELAB D65 as the Profile Connection Space * @VIPS_PCS_XYZ: use XYZ as the Profile Connection Space * * Pick a Profile Connection Space for vips_icc_import() and * vips_icc_export(). LAB is usually best, XYZ can be more convenient in some * cases. */ /** * vips_icc_present: * * VIPS can optionally be built without the ICC library. Use this function to * test for its availability. * * Returns: non-zero if the ICC library is present. */ int vips_icc_present( void ) { return( 1 ); } #define VIPS_TYPE_ICC (vips_icc_get_type()) #define VIPS_ICC( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_ICC, VipsIcc )) #define VIPS_ICC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_ICC, VipsIccClass)) #define VIPS_IS_ICC( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_ICC )) #define VIPS_IS_ICC_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_ICC )) #define VIPS_ICC_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_ICC, VipsIccClass )) typedef struct _VipsIcc { VipsColourCode parent_instance; VipsIntent intent; VipsPCS pcs; int depth; cmsHPROFILE in_profile; cmsHPROFILE out_profile; cmsUInt32Number in_icc_format; cmsUInt32Number out_icc_format; cmsHTRANSFORM trans; /* We need to single-thread calls to LCMS 1. */ GMutex *lock; } VipsIcc; typedef VipsColourCodeClass VipsIccClass; G_DEFINE_ABSTRACT_TYPE( VipsIcc, vips_icc, VIPS_TYPE_COLOUR_CODE ); /* Error from lcms. */ #ifdef HAVE_LCMS2 static void icc_error( cmsContext context, cmsUInt32Number code, const char *text ) { vips_error( "VipsIcc", "%s", text ); } #else static int icc_error( int code, const char *text ) { if( code == LCMS_ERRC_WARNING ) vips_warn( "VipsIcc", "%s", text ); else vips_error( "VipsIcc", "%s", text ); return( 0 ); } #endif static void vips_icc_dispose( GObject *gobject ) { VipsIcc *icc = (VipsIcc *) gobject; VIPS_FREEF( cmsDeleteTransform, icc->trans ); VIPS_FREEF( cmsCloseProfile, icc->in_profile ); VIPS_FREEF( cmsCloseProfile, icc->out_profile ); VIPS_FREEF( vips_g_mutex_free, icc->lock ); G_OBJECT_CLASS( vips_icc_parent_class )->dispose( gobject ); } /* Is a profile just a pcs stub. */ static gboolean is_pcs( cmsHPROFILE profile ) { return( cmsGetColorSpace( profile ) == cmsSigLabData || cmsGetColorSpace( profile ) == cmsSigXYZData ); } static int vips_icc_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColour *colour = (VipsColour *) object; VipsColourCode *code = (VipsColourCode *) object; VipsIcc *icc = (VipsIcc *) object; if( icc->depth != 8 && icc->depth != 16 ) { vips_error( class->nickname, "%s", _( "depth must be 8 or 16" ) ); return( -1 ); } if( icc->in_profile && code->in ) { switch( cmsGetColorSpace( icc->in_profile ) ) { case cmsSigRgbData: colour->input_bands = 3; code->input_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR; icc->in_icc_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? TYPE_RGB_16 : TYPE_RGB_8; break; #ifdef HAVE_LCMS2 case cmsSigGrayData: colour->input_bands = 1; code->input_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR; icc->in_icc_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? TYPE_GRAY_16 : TYPE_GRAY_8; break; #endif /*HAVE_LCMS2*/ case cmsSigCmykData: colour->input_bands = 4; code->input_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR; icc->in_icc_format = code->in->BandFmt == VIPS_FORMAT_USHORT ? TYPE_CMYK_16 : TYPE_CMYK_8; break; case cmsSigLabData: colour->input_bands = 3; code->input_format = VIPS_FORMAT_FLOAT; code->input_interpretation = VIPS_INTERPRETATION_LAB; icc->in_icc_format = TYPE_Lab_16; break; case cmsSigXYZData: colour->input_bands = 3; code->input_format = VIPS_FORMAT_FLOAT; icc->in_icc_format = TYPE_XYZ_16; break; default: vips_error( class->nickname, _( "unimplemented input color space 0x%x" ), cmsGetColorSpace( icc->in_profile ) ); return( -1 ); } } if( icc->out_profile ) switch( cmsGetColorSpace( icc->out_profile ) ) { case cmsSigRgbData: colour->interpretation = icc->depth == 8 ? VIPS_INTERPRETATION_RGB : VIPS_INTERPRETATION_RGB16; colour->format = icc->depth == 8 ? VIPS_FORMAT_UCHAR : VIPS_FORMAT_USHORT; colour->bands = 3; icc->out_icc_format = icc->depth == 16 ? TYPE_RGB_16 : TYPE_RGB_8; break; #ifdef HAVE_LCMS2 case cmsSigGrayData: colour->interpretation = icc->depth == 8 ? VIPS_INTERPRETATION_B_W : VIPS_INTERPRETATION_GREY16; colour->format = icc->depth == 8 ? VIPS_FORMAT_UCHAR : VIPS_FORMAT_USHORT; colour->bands = 1; icc->out_icc_format = icc->depth == 16 ? TYPE_GRAY_16 : TYPE_GRAY_8; break; #endif /*HAVE_LCMS2*/ case cmsSigCmykData: colour->interpretation = VIPS_INTERPRETATION_CMYK; colour->format = icc->depth == 8 ? VIPS_FORMAT_UCHAR : VIPS_FORMAT_USHORT; colour->bands = 4; icc->out_icc_format = icc->depth == 16 ? TYPE_CMYK_16 : TYPE_CMYK_8; break; case cmsSigLabData: colour->interpretation = VIPS_INTERPRETATION_LAB; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; icc->out_icc_format = TYPE_Lab_16; break; case cmsSigXYZData: colour->interpretation = VIPS_INTERPRETATION_XYZ; colour->format = VIPS_FORMAT_FLOAT; colour->bands = 3; icc->out_icc_format = TYPE_XYZ_16; break; default: vips_error( class->nickname, _( "unimplemented output color space 0x%x" ), cmsGetColorSpace( icc->out_profile ) ); return( -1 ); } /* At least one must be a device profile. */ if( icc->in_profile && icc->out_profile && is_pcs( icc->in_profile ) && is_pcs( icc->out_profile ) ) { vips_error( class->nickname, "%s", _( "no device profile" ) ); return( -1 ); } /* Use cmsFLAGS_NOCACHE to disable the 1-pixel cache and make * calling cmsDoTransform() from multiple threads safe. */ if( !(icc->trans = cmsCreateTransform( icc->in_profile, icc->in_icc_format, icc->out_profile, icc->out_icc_format, icc->intent, cmsFLAGS_NOCACHE )) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_icc_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_icc_class_init( VipsIccClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->dispose = vips_icc_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "icc"; object_class->description = _( "transform using ICC profiles" ); object_class->build = vips_icc_build; VIPS_ARG_ENUM( class, "intent", 6, _( "Intent" ), _( "Rendering intent" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIcc, intent ), VIPS_TYPE_INTENT, VIPS_INTENT_RELATIVE ); VIPS_ARG_ENUM( class, "pcs", 6, _( "PCS" ), _( "Set Profile Connection Space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIcc, pcs ), VIPS_TYPE_PCS, VIPS_PCS_LAB ); #ifdef HAVE_LCMS2 cmsSetLogErrorHandler( icc_error ); #else /* Ask lcms not to abort on error. */ cmsErrorAction( LCMS_ERROR_IGNORE ); cmsSetErrorHandler( icc_error ); #endif } static void vips_icc_init( VipsIcc *icc ) { icc->lock = vips_g_mutex_new(); icc->intent = VIPS_INTENT_RELATIVE; icc->pcs = VIPS_PCS_LAB; icc->depth = 8; } typedef struct _VipsIccImport { VipsIcc parent_instance; gboolean embedded; char *input_profile_filename; } VipsIccImport; typedef VipsIccClass VipsIccImportClass; G_DEFINE_TYPE( VipsIccImport, vips_icc_import, VIPS_TYPE_ICC ); static void vips_check_intent( const char *domain, cmsHPROFILE profile, VipsIntent intent, int direction ) { if( profile && !cmsIsIntentSupported( profile, intent, direction ) ) vips_warn( domain, _( "intent %d (%s) not supported by " "%s profile; falling back to default intent" ), intent, vips_enum_nick( VIPS_TYPE_INTENT, intent ), direction == LCMS_USED_AS_INPUT ? _( "input" ) : _( "output" ) ); } static int vips_icc_profile_needs_bands( cmsHPROFILE profile ) { int needs_bands; switch( cmsGetColorSpace( profile ) ) { #ifdef HAVE_LCMS2 case cmsSigGrayData: needs_bands = 1; break; #endif /*HAVE_LCMS2*/ case cmsSigRgbData: case cmsSigLabData: case cmsSigXYZData: needs_bands = 3; break; case cmsSigCmykData: needs_bands = 4; break; default: needs_bands = -1; break; } return( needs_bands ); } /* How many bands we expect to see from an image after preprocessing by our * parent classes. This is a bit fragile :-( * * FIXME ... split the _build() for colour into separate preprocess / process * / postprocess phases so we can load profiles after preprocess but before * actual processing takes place. */ static int vips_image_expected_bands( VipsImage *image ) { int expected_bands; switch( image->Type ) { case VIPS_INTERPRETATION_B_W: case VIPS_INTERPRETATION_GREY16: expected_bands = 1; break; case VIPS_INTERPRETATION_XYZ: case VIPS_INTERPRETATION_LAB: case VIPS_INTERPRETATION_LABQ: case VIPS_INTERPRETATION_RGB: case VIPS_INTERPRETATION_CMC: case VIPS_INTERPRETATION_LCH: case VIPS_INTERPRETATION_LABS: case VIPS_INTERPRETATION_sRGB: case VIPS_INTERPRETATION_YXY: case VIPS_INTERPRETATION_RGB16: case VIPS_INTERPRETATION_scRGB: case VIPS_INTERPRETATION_HSV: expected_bands = 3; break; case VIPS_INTERPRETATION_CMYK: expected_bands = 4; break; case VIPS_INTERPRETATION_MULTIBAND: case VIPS_INTERPRETATION_HISTOGRAM: case VIPS_INTERPRETATION_MATRIX: case VIPS_INTERPRETATION_FOURIER: default: expected_bands = image->Bands; break; } expected_bands = VIPS_MIN( expected_bands, image->Bands ); return( expected_bands ); } static cmsHPROFILE vips_icc_load_profile_image( const char *domain, VipsImage *image ) { void *data; size_t data_length; cmsHPROFILE profile; if( !vips_image_get_typeof( image, VIPS_META_ICC_NAME ) ) return( NULL ); if( vips_image_get_blob( image, VIPS_META_ICC_NAME, &data, &data_length ) || !(profile = cmsOpenProfileFromMem( data, data_length )) ) { vips_warn( domain, "%s", _( "corrupt embedded profile" ) ); return( NULL ); } if( vips_image_expected_bands( image ) != vips_icc_profile_needs_bands( profile ) ) { VIPS_FREEF( cmsCloseProfile, profile ); vips_warn( domain, "%s", _( "embedded profile incompatible with image" ) ); return( NULL ); } return( profile ); } static cmsHPROFILE vips_icc_load_profile_file( const char *domain, VipsImage *image, const char *filename ) { cmsHPROFILE profile; if( !(profile = cmsOpenProfileFromFile( filename, "r" )) ) { vips_error( domain, _( "unable to open profile \"%s\"" ), filename ); return( NULL ); } if( vips_image_expected_bands( image ) != vips_icc_profile_needs_bands( profile ) ) { VIPS_FREEF( cmsCloseProfile, profile ); vips_warn( domain, _( "profile \"%s\" incompatible with image" ), filename ); return( NULL ); } return( profile ); } static int vips_icc_import_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColourCode *code = (VipsColourCode *) object; VipsIcc *icc = (VipsIcc *) object; VipsIccImport *import = (VipsIccImport *) object; /* We read the input profile like this: * * embedded filename action * 0 0 image * 1 0 image * 0 1 file * 1 1 image, then fall back to file * * see also import_build. */ if( code->in && (import->embedded || !import->input_profile_filename) ) icc->in_profile = vips_icc_load_profile_image( class->nickname, code->in ); if( !icc->in_profile && code->in && import->input_profile_filename ) icc->in_profile = vips_icc_load_profile_file( class->nickname, code->in, import->input_profile_filename ); if( !icc->in_profile ) { vips_error( class->nickname, "%s", _( "no input profile" ) ); return( -1 ); } vips_check_intent( class->nickname, icc->in_profile, icc->intent, LCMS_USED_AS_INPUT ); if( icc->pcs == VIPS_PCS_LAB ) { #ifdef HAVE_LCMS2 cmsCIExyY white; cmsWhitePointFromTemp( &white, 6500 ); icc->out_profile = cmsCreateLab4Profile( &white ); #else icc->out_profile = cmsCreateLabProfile( NULL ); #endif } else icc->out_profile = cmsCreateXYZProfile(); if( VIPS_OBJECT_CLASS( vips_icc_import_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void decode_lab( guint16 *fixed, float *lab, int n ) { int i; for( i = 0; i < n; i++ ) { lab[0] = (double) fixed[0] / 652.800; lab[1] = ((double) fixed[1] / 256.0) - 128.0; lab[2] = ((double) fixed[2] / 256.0) - 128.0; lab += 3; fixed += 3; } } #define X_FAC (VIPS_D50_X0 * 32768 / (VIPS_D65_X0 * 100)) #define Y_FAC (VIPS_D50_Y0 * 32768 / (VIPS_D65_Y0 * 100)) #define Z_FAC (VIPS_D50_Z0 * 32768 / (VIPS_D65_Z0 * 100)) static void decode_xyz( guint16 *fixed, float *xyz, int n ) { int i; for( i = 0; i < n; i++ ) { xyz[0] = (double) fixed[0] / X_FAC; xyz[1] = (double) fixed[1] / Y_FAC; xyz[2] = (double) fixed[2] / Z_FAC; xyz += 3; fixed += 3; } } /* Process a buffer of data. */ static void vips_icc_import_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { VipsIcc *icc = (VipsIcc *) colour; VipsPel *p; float *q; int i; /* Buffer of encoded 16-bit pixels we transform. */ guint16 encoded[3 * PIXEL_BUFFER_SIZE]; p = (VipsPel *) in[0]; q = (float *) out; for( i = 0; i < width; i += PIXEL_BUFFER_SIZE ) { const int chunk = VIPS_MIN( width - i, PIXEL_BUFFER_SIZE ); #ifdef HAVE_LCMS2 cmsDoTransform( icc->trans, p, encoded, chunk ); #else g_mutex_lock( icc->lock ); cmsDoTransform( icc->trans, p, encoded, chunk ); g_mutex_unlock( icc->lock ); #endif if( icc->pcs == VIPS_PCS_LAB ) decode_lab( encoded, q, chunk ); else decode_xyz( encoded, q, chunk ); p += PIXEL_BUFFER_SIZE * VIPS_IMAGE_SIZEOF_PEL( colour->in[0] ); q += PIXEL_BUFFER_SIZE * 3; } } static void vips_icc_import_class_init( VipsIccImportClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "icc_import"; object_class->description = _( "import from device with ICC profile" ); object_class->build = vips_icc_import_build; colour_class->process_line = vips_icc_import_line; VIPS_ARG_BOOL( class, "embedded", 110, _( "Embedded" ), _( "Use embedded input profile, if available" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccImport, embedded ), FALSE ); VIPS_ARG_STRING( class, "input_profile", 120, _( "Input profile" ), _( "Filename to load input profile from" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccImport, input_profile_filename ), NULL ); } static void vips_icc_import_init( VipsIccImport *import ) { } typedef struct _VipsIccExport { VipsIcc parent_instance; char *output_profile_filename; } VipsIccExport; typedef VipsIccClass VipsIccExportClass; G_DEFINE_TYPE( VipsIccExport, vips_icc_export, VIPS_TYPE_ICC ); static int vips_icc_export_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColour *colour = (VipsColour *) object; VipsColourCode *code = (VipsColourCode *) object; VipsIcc *icc = (VipsIcc *) object; VipsIccExport *export = (VipsIccExport *) object; /* If icc->pcs hasn't been set and this image is tagged as XYZ, swap * to XYZ pcs. This will save a XYZ->LAB conversion when we chain up. */ if( !vips_object_argument_isset( object, "pcs" ) && code->in && code->in->Type == VIPS_INTERPRETATION_XYZ ) icc->pcs = VIPS_PCS_XYZ; if( icc->pcs == VIPS_PCS_LAB ) { #ifdef HAVE_LCMS2 cmsCIExyY white; cmsWhitePointFromTemp( &white, 6500 ); icc->in_profile = cmsCreateLab4Profile( &white ); #else icc->in_profile = cmsCreateLabProfile( NULL ); #endif } else icc->in_profile = cmsCreateXYZProfile(); if( code->in && !export->output_profile_filename && vips_image_get_typeof( code->in, VIPS_META_ICC_NAME ) ) { void *data; size_t data_length; if( vips_image_get_blob( code->in, VIPS_META_ICC_NAME, &data, &data_length ) || !(icc->out_profile = cmsOpenProfileFromMem( data, data_length )) ) { vips_error( class->nickname, "%s", _( "unable to load embedded profile" ) ); return( -1 ); } } else if( export->output_profile_filename ) { if( !(icc->out_profile = cmsOpenProfileFromFile( export->output_profile_filename, "r" )) ) { vips_error( class->nickname, _( "unable to open profile \"%s\"" ), export->output_profile_filename ); return( -1 ); } colour->profile_filename = export->output_profile_filename; } else { vips_error( class->nickname, "%s", _( "no output profile" ) ); return( -1 ); } vips_check_intent( class->nickname, icc->out_profile, icc->intent, LCMS_USED_AS_OUTPUT ); if( VIPS_OBJECT_CLASS( vips_icc_export_parent_class )->build( object ) ) return( -1 ); return( 0 ); } /* Pack a buffer of floats into lcms's fixed-point formats. Cut from * lcms-1.0.8. */ static void encode_lab( float *lab, guint16 *fixed, int n ) { int i; for( i = 0; i < n; i++ ) { float L = lab[0]; float a = lab[1]; float b = lab[2]; if( L < 0 ) L = 0; if( L > 100. ) L = 100.; if( a < -128. ) a = -128; if( a > 127.9961 ) a = 127.9961; if( b < -128. ) b = -128; if( b > 127.9961 ) b = 127.9961; fixed[0] = L * 652.800 + 0.5; fixed[1] = (a + 128.0) * 256.0 + 0.5; fixed[2] = (b + 128.0) * 256.0 + 0.5; lab += 3; fixed += 3; } } #define MAX_ENCODEABLE_XYZ (100 * (1.0 + 32767.0 / 32768.0)) // 1.15 fixed point for XYZ static void encode_xyz( float *xyz, guint16 *fixed, int n ) { int i; for( i = 0; i < n; i++ ) { float X = xyz[0]; float Y = xyz[1]; float Z = xyz[2]; if( X < 0 ) X = 0; if( X > MAX_ENCODEABLE_XYZ ) X = MAX_ENCODEABLE_XYZ; if( Y < 0 ) Y = 0; if( Y > MAX_ENCODEABLE_XYZ ) Y = MAX_ENCODEABLE_XYZ; if( Z < 0 ) Z = 0; if( Z > MAX_ENCODEABLE_XYZ ) Z = MAX_ENCODEABLE_XYZ; fixed[0] = X * X_FAC + 0.5; fixed[1] = Y * Y_FAC + 0.5; fixed[2] = Z * Z_FAC + 0.5; xyz += 3; fixed += 3; } } /* Process a buffer of data. */ static void vips_icc_export_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { VipsIcc *icc = (VipsIcc *) colour; float *p; VipsPel *q; int x; /* Buffer of encoded 16-bit pixels we transform. */ guint16 encoded[3 * PIXEL_BUFFER_SIZE]; p = (float *) in[0]; q = (VipsPel *) out; for( x = 0; x < width; x += PIXEL_BUFFER_SIZE ) { const int chunk = VIPS_MIN( width - x, PIXEL_BUFFER_SIZE ); if( icc->pcs == VIPS_PCS_LAB ) encode_lab( p, encoded, chunk ); else encode_xyz( p, encoded, chunk ); #ifdef HAVE_LCMS2 cmsDoTransform( icc->trans, encoded, q, chunk ); #else g_mutex_lock( icc->lock ); cmsDoTransform( icc->trans, encoded, q, chunk ); g_mutex_unlock( icc->lock ); #endif p += PIXEL_BUFFER_SIZE * 3; q += PIXEL_BUFFER_SIZE * VIPS_IMAGE_SIZEOF_PEL( colour->out ); } } static void vips_icc_export_class_init( VipsIccExportClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "icc_export"; object_class->description = _( "output to device with ICC profile" ); object_class->build = vips_icc_export_build; colour_class->process_line = vips_icc_export_line; VIPS_ARG_STRING( class, "output_profile", 110, _( "Output profile" ), _( "Filename to load output profile from" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccExport, output_profile_filename ), NULL ); VIPS_ARG_INT( class, "depth", 130, _( "Depth" ), _( "Output device space depth in bits" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIcc, depth ), 8, 16, 8 ); } static void vips_icc_export_init( VipsIccExport *export ) { } typedef struct _VipsIccTransform { VipsIcc parent_instance; gboolean embedded; char *input_profile_filename; char *output_profile_filename; } VipsIccTransform; typedef VipsIccClass VipsIccTransformClass; G_DEFINE_TYPE( VipsIccTransform, vips_icc_transform, VIPS_TYPE_ICC ); static int vips_icc_transform_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsColour *colour = (VipsColour *) object; VipsColourCode *code = (VipsColourCode *) object; VipsIcc *icc = (VipsIcc *) object; VipsIccTransform *transform = (VipsIccTransform *) object; /* We read the input profile like this: * * embedded filename action * 0 0 image * 1 0 image * 0 1 file * 1 1 image, then fall back to file * * see also import_build. */ if( code->in && (transform->embedded || !transform->input_profile_filename) ) icc->in_profile = vips_icc_load_profile_image( class->nickname, code->in ); if( !icc->in_profile && code->in && transform->input_profile_filename ) icc->in_profile = vips_icc_load_profile_file( class->nickname, code->in, transform->input_profile_filename ); if( !icc->in_profile ) { vips_error( class->nickname, "%s", _( "no input profile" ) ); return( -1 ); } if( transform->output_profile_filename ) { if( !(icc->out_profile = cmsOpenProfileFromFile( transform->output_profile_filename, "r" )) ) { vips_error( class->nickname, _( "unable to open profile \"%s\"" ), transform->output_profile_filename ); return( -1 ); } colour->profile_filename = transform->output_profile_filename; } vips_check_intent( class->nickname, icc->in_profile, icc->intent, LCMS_USED_AS_INPUT ); vips_check_intent( class->nickname, icc->out_profile, icc->intent, LCMS_USED_AS_OUTPUT ); if( VIPS_OBJECT_CLASS( vips_icc_transform_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } /* Process a buffer of data. */ static void vips_icc_transform_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { VipsIcc *icc = (VipsIcc *) colour; #ifdef HAVE_LCMS2 cmsDoTransform( icc->trans, in[0], out, width ); #else g_mutex_lock( icc->lock ); cmsDoTransform( icc->trans, in[0], out, width ); g_mutex_unlock( icc->lock ); #endif } static void vips_icc_transform_class_init( VipsIccImportClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "icc_transform"; object_class->description = _( "transform between devices with ICC profiles" ); object_class->build = vips_icc_transform_build; colour_class->process_line = vips_icc_transform_line; VIPS_ARG_STRING( class, "output_profile", 110, _( "Output profile" ), _( "Filename to load output profile from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsIccTransform, output_profile_filename ), NULL ); VIPS_ARG_BOOL( class, "embedded", 120, _( "Embedded" ), _( "Use embedded input profile, if available" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccTransform, embedded ), FALSE ); VIPS_ARG_STRING( class, "input_profile", 130, _( "Input profile" ), _( "Filename to load input profile from" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIccTransform, input_profile_filename ), NULL ); VIPS_ARG_INT( class, "depth", 140, _( "Depth" ), _( "Output device space depth in bits" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIcc, depth ), 8, 16, 8 ); } static void vips_icc_transform_init( VipsIccTransform *transform ) { } /** * vips_icc_ac2rc: * @in: input image * @out: output image * @profile_filename: use this profile * * Transform an image from absolute to relative colorimetry using the * MediaWhitePoint stored in the ICC profile. * * See also: vips_icc_transform(), vips_icc_import(). * * Returns: 0 on success, -1 on error. */ int vips_icc_ac2rc( VipsImage *in, VipsImage **out, const char *profile_filename ) { VipsImage *t; cmsHPROFILE profile; double X, Y, Z; double *add; double *mul; int i; if( !(profile = cmsOpenProfileFromFile( profile_filename, "r" )) ) return( -1 ); #ifdef HAVE_LCMS2 { cmsCIEXYZ *media; if( !(media = cmsReadTag( profile, cmsSigMediaWhitePointTag )) ) { vips_error( "vips_icc_ac2rc", "%s", _( "unable to get media white point" ) ); return( -1 ); } X = media->X; Y = media->Y; Z = media->Z; } #else /*HAVE_LCMS*/ { cmsCIEXYZ media; if( !cmsTakeMediaWhitePoint( &media, profile ) ) { vips_error( "vips_icc_ac2rc", "%s", _( "unable to get media white point" ) ); return( -1 ); } X = media.X; Y = media.Y; Z = media.Z; } #endif cmsCloseProfile( profile ); /* We need XYZ so we can adjust the white balance. */ if( vips_colourspace( in, &t, VIPS_INTERPRETATION_XYZ, NULL ) ) return( -1 ); in = t; if( !(add = VIPS_ARRAY( in, in->Bands, double )) || !(mul = VIPS_ARRAY( in, in->Bands, double )) ) return( -1 ); /* There might be extra bands off to the right somewhere. */ for( i = 0; i < in->Bands; i++ ) add[i] = 0.0; mul[0] = VIPS_D50_X0 / (X * 100.0); mul[1] = VIPS_D50_Y0 / (Y * 100.0); mul[2] = VIPS_D50_Z0 / (Z * 100.0); for( i = 3; i < in->Bands; i++ ) mul[i] = 1.0; if( vips_linear( in, &t, add, mul, in->Bands, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = t; *out = in; return( 0 ); } #else /*!HAVE_LCMS*/ #include int vips_icc_present( void ) { return( 0 ); } int vips_icc_ac2rc( VipsImage *in, VipsImage **out, const char *profile_filename ) { vips_error( "VipsIcc", "%s", _( "libvips configured without lcms support" ) ); return( -1 ); } #endif /*HAVE_LCMS*/ /** * vips_icc_import: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @input_profile: get the input profile from here * @intent: transform with this intent * @embedded: use profile embedded in input image * @pcs: use XYZ or LAB PCS * * Import an image from device space to D65 LAB with an ICC profile. If @pcs is * set to #VIPS_PCS_XYZ, use CIE XYZ PCS instead. * * If @embedded is set, the input profile is taken from the input image * metadata. If there is no embedded profile, * @input_profile_filename is used as a fall-back. * * If @embedded is not set, the input profile is taken from * @input_profile. If @input_profile is not supplied, the * metadata profile, if any, is used as a fall-back. * * Returns: 0 on success, -1 on error. */ int vips_icc_import( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "icc_import", ap, in, out ); va_end( ap ); return( result ); } /** * vips_icc_export: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @intent: transform with this intent * @depth: depth of output image in bits * @output_profile: get the output profile from here * @pcs: use XYZ or LAB PCS * * Export an image from D65 LAB to device space with an ICC profile. * If @pcs is * set to #VIPS_PCS_XYZ, use CIE XYZ PCS instead. * If @output_profile is not set, use the embedded profile, if any. * If @output_profile is set, export with that and attach it to the output * image. * * Returns: 0 on success, -1 on error. */ int vips_icc_export( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "icc_export", ap, in, out ); va_end( ap ); return( result ); } /** * vips_icc_transform: * @in: input image * @out: output image * @output_profile: get the output profile from here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @input_profile: get the input profile from here * @intent: transform with this intent * @depth: depth of output image in bits * @embedded: use profile embedded in input image * * Transform an image with a pair of ICC profiles. The input image is moved to * profile-connection space with the input profile and then to the output * space with the output profile. * * If @embedded is set, the input profile is taken from the input image * metadata, if present. If there is no embedded profile, * @input_profile is used as a fall-back. * * If @embedded is not set, the input profile is taken from * @input_profile. If @input_profile is not supplied, the * metadata profile, if any, is used as a fall-back. * * Use vips_icc_import() and vips_icc_export() to do either the first or * second half of this operation in isolation. * * Returns: 0 on success, -1 on error. */ int vips_icc_transform( VipsImage *in, VipsImage **out, const char *output_profile, ... ) { va_list ap; int result; va_start( ap, output_profile ); result = vips_call_split( "icc_transform", ap, in, out, output_profile ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/scRGB2sRGB.c0000664000175000017500000001601412651663124014316 00000000000000/* Turn scRGB files into displayable rgb. * * Author: J-P. Laurent * Modified: * 15/11/94 JC * - error message added * - out->Type set to IM_TYPE_RGB * - memory leak fixed * 16/11/94 JC * - uses im_wrapone() * 15/2/95 JC * - oops! now uses PEL, not float for output pointer * 2/1/96 JC * - sometimes produced incorrect result at extrema * - reformatted * - now uses IM_RINT() and clip() * 18/9/96 JC * - some speed-ups ... 3x faster * - slightly less accurate, but who cares * - added out-of-mem check for table build * 21/9/12 * - redone as a class * - sRGB only, support for other RGBs is now via lcms * 6/11/12 * - added 16-bit option * 11/12/12 * - cut about to make scRGB2sRGB.c * 12/2/15 * - add 16-bit alpha handling */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" /* We can't use VipsColourCode as our parent class. We want to handle * alpha ourselves so we can get 16 -> 8 bit conversion right. */ typedef struct _VipsscRGB2sRGB { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int depth; } VipsscRGB2sRGB; typedef VipsOperationClass VipsscRGB2sRGBClass; G_DEFINE_TYPE( VipsscRGB2sRGB, vips_scRGB2sRGB, VIPS_TYPE_OPERATION ); /* Process a buffer of data. */ static void vips_scRGB2sRGB_line_8( VipsPel * restrict q, float * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; int r, g, b; int or; vips_col_scRGB2sRGB_8( R, G, B, &r, &g, &b, &or ); p += 3; q[0] = r; q[1] = g; q[2] = b; q += 3; for( j = 0; j < extra_bands; j++ ) q[j] = p[j]; p += extra_bands; q += extra_bands; } } static void vips_scRGB2sRGB_line_16( unsigned short * restrict q, float * restrict p, int extra_bands, int width ) { int i, j; for( i = 0; i < width; i++ ) { float R = p[0]; float G = p[1]; float B = p[2]; int r, g, b; int or; vips_col_scRGB2sRGB_16( R, G, B, &r, &g, &b, &or ); p += 3; q[0] = r; q[1] = g; q[2] = b; q += 3; for( j = 0; j < extra_bands; j++ ) q[j] = VIPS_FCLIP( 0, p[j] * 256.0, USHRT_MAX ); p += extra_bands; q += extra_bands; } } static int vips_scRGB2sRGB_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsscRGB2sRGB *scRGB2sRGB = (VipsscRGB2sRGB *) b; VipsRect *r = &or->valid; VipsImage *in = ir->im; int y; if( vips_region_prepare( ir, r ) ) return( -1 ); VIPS_GATE_START( "vips_scRGB2sRGB_gen: work" ); for( y = 0; y < r->height; y++ ) { float *p = (float *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *q = (VipsPel *) VIPS_REGION_ADDR( or, r->left, r->top + y ); if( scRGB2sRGB->depth == 16 ) vips_scRGB2sRGB_line_16( (unsigned short *) q, p, in->Bands - 3, r->width ); else vips_scRGB2sRGB_line_8( q, p, in->Bands - 3, r->width ); } VIPS_GATE_STOP( "vips_scRGB2sRGB_gen: work" ); return( 0 ); } static int vips_scRGB2sRGB_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsscRGB2sRGB *scRGB2sRGB = (VipsscRGB2sRGB *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; VipsBandFormat format; VipsInterpretation interpretation; VipsImage *out; if( VIPS_OBJECT_CLASS( vips_scRGB2sRGB_parent_class )->build( object ) ) return( -1 ); in = scRGB2sRGB->in; if( vips_check_bands_atleast( class->nickname, in, 3 ) ) return( -1 ); switch( scRGB2sRGB->depth ) { case 16: interpretation = VIPS_INTERPRETATION_RGB16; format = VIPS_FORMAT_USHORT; break; case 8: interpretation = VIPS_INTERPRETATION_sRGB; format = VIPS_FORMAT_UCHAR; break; default: vips_error( class->nickname, "%s", _( "depth must be 8 or 16" ) ); return( -1 ); } if( vips_cast_float( in, &t[0], NULL ) ) return( -1 ); in = t[0]; out = vips_image_new(); if( vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) { g_object_unref( out ); return( -1 ); } out->Type = interpretation; out->BandFmt = format; if( vips_image_generate( out, vips_start_one, vips_scRGB2sRGB_gen, vips_stop_one, in, scRGB2sRGB ) ) { g_object_unref( out ); return( -1 ); } g_object_set( object, "out", out, NULL ); return( 0 ); } static void vips_scRGB2sRGB_class_init( VipsscRGB2sRGBClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "scRGB2sRGB"; object_class->description = _( "convert an scRGB image to sRGB" ); object_class->build = vips_scRGB2sRGB_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsscRGB2sRGB, in ) ); VIPS_ARG_IMAGE( class, "out", 100, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsscRGB2sRGB, out ) ); VIPS_ARG_INT( class, "depth", 130, _( "Depth" ), _( "Output device space depth in bits" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsscRGB2sRGB, depth ), 8, 16, 8 ); } static void vips_scRGB2sRGB_init( VipsscRGB2sRGB *scRGB2sRGB ) { scRGB2sRGB->depth = 8; } /** * vips_scRGB2sRGB: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @depth: depth of output image in bits * * Convert an scRGB image to sRGB. Set @depth to 16 to get 16-bit output. * * If @depth is 16, any extra channels after RGB are * multiplied by 256. * * See also: vips_LabS2LabQ(), vips_sRGB2scRGB(), vips_rad2float(). * * Returns: 0 on success, -1 on error. */ int vips_scRGB2sRGB( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "scRGB2sRGB", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/dE00.c0000664000175000017500000001436612651663124013256 00000000000000/* dE00.c * * Modified: * 31/10/12 * - from dE76.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef struct _VipsdE00 { VipsColourDifference parent_instance; } VipsdE00; typedef VipsColourDifferenceClass VipsdE00Class; G_DEFINE_TYPE( VipsdE00, vips_dE00, VIPS_TYPE_COLOUR_DIFFERENCE ); /** * vips_col_dE00: * @L1: Input coordinate 1 * @a1: Input coordinate 1 * @b1: Input coordinate 1 * @L2: Input coordinate 2 * @a2: Input coordinate 2 * @b2: Input coordinate 2 * * CIEDE2000, from: * * Luo, Cui, Rigg, "The Development of the CIE 2000 Colour-Difference * Formula: CIEDE2000", COLOR research and application, pp 340 * * Returns: CIE dE2000 colour difference. */ float vips_col_dE00( float L1, float a1, float b1, float L2, float a2, float b2 ) { /* Code if you want XYZ params and the colour temp used in the reference float vips_col_dE00( float X1, float Y1, float Z1, float X2, float Y2, float Z2 ) { const double X0 = 94.811; const double Y0 = 100.0; const double Z0 = 107.304; #define f(I) ((I) > 0.008856 ? \ cbrt( (I), 1.0 / 3.0 ) : 7.7871 * (I) + (16.0 / 116.0)) double nX1 = f( X1 / X0 ); double nY1 = f( Y1 / Y0 ); double nZ1 = f( Z1 / Z0 ); double L1 = 116 * nY1 - 16; double a1 = 500 * (nX1 - nY1); double b1 = 200 * (nY1 - nZ1); double nX2 = f( X2 / X0 ); double nY2 = f( Y2 / Y0 ); double nZ2 = f( Z2 / Z0 ); double L2 = 116 * nY2 - 16; double a2 = 500 * (nX2 - nY2); double b2 = 200 * (nY2 - nZ2); */ /* Chroma and mean chroma (C bar) */ double C1 = sqrt( a1 * a1 + b1 * b1 ); double C2 = sqrt( a2 * a2 + b2 * b2 ); double Cb = (C1 + C2) / 2; /* G */ double Cb7 = Cb * Cb * Cb * Cb * Cb * Cb * Cb; double G = 0.5 * (1 - sqrt( Cb7 / (Cb7 + pow( 25, 7 )) )); /* L', a', b', C', h' */ double L1d = L1; double a1d = (1 + G) * a1; double b1d = b1; double C1d = sqrt( a1d * a1d + b1d * b1d ); double h1d = vips_col_ab2h( a1d, b1d ); double L2d = L2; double a2d = (1 + G) * a2; double b2d = b2; double C2d = sqrt( a2d * a2d + b2d * b2d ); double h2d = vips_col_ab2h( a2d, b2d ); /* L' bar, C' bar, h' bar */ double Ldb = (L1d + L2d) / 2; double Cdb = (C1d + C2d) / 2; double hdb = VIPS_FABS( h1d - h2d ) < 180 ? (h1d + h2d) / 2 : VIPS_FABS( h1d + h2d - 360 ) / 2; /* dtheta, RC */ double hdbd = (hdb - 275) / 25; double dtheta = 30 * exp( -(hdbd * hdbd) ); double Cdb7 = Cdb * Cdb * Cdb * Cdb * Cdb * Cdb * Cdb; double RC = 2 * sqrt( Cdb7 / (Cdb7 + pow( 25, 7 )) ); /* RT, T. */ double RT = -sin( VIPS_RAD( 2 * dtheta ) ) * RC; double T = 1 - 0.17 * cos( VIPS_RAD( hdb - 30 ) ) + 0.24 * cos( VIPS_RAD( 2 * hdb ) ) + 0.32 * cos( VIPS_RAD( 3 * hdb + 6 ) ) - 0.20 * cos( VIPS_RAD( 4 * hdb - 63 ) ); /* SL, SC, SH */ double Ldb50 = Ldb - 50; double SL = 1 + (0.015 * Ldb50 * Ldb50) / sqrt( 20 + Ldb50 * Ldb50); double SC = 1 + 0.045 * Cdb; double SH = 1 + 0.015 * Cdb * T; /* hue difference ... careful! */ double dhd = VIPS_FABS( h1d - h2d ) < 180 ? h1d - h2d : 360 - (h1d - h2d); /* dLd, dCd dHd */ double dLd = L1d - L2d; double dCd = C1d - C2d; double dHd = 2 * sqrt( C1d * C2d ) * sin( VIPS_RAD( dhd / 2 ) ); /* Parametric factors for viewing parameters. */ const double kL = 1.0; const double kC = 1.0; const double kH = 1.0; /* Normalised terms. */ double nL = dLd / (kL * SL); double nC = dCd / (kC * SC); double nH = dHd / (kH * SH); /* dE00!! */ double dE00 = sqrt( nL * nL + nC * nC + nH * nH + RT * nC * nH ); /* printf( "X1 = %g, Y1 = %g, Z1 = %g\n", X1, Y1, Z1 ); printf( "X2 = %g, Y2 = %g, Z2 = %g\n", X2, Y2, Z2 ); printf( "L1 = %g, a1 = %g, b1 = %g\n", L1, a1, b1 ); printf( "L2 = %g, a2 = %g, b2 = %g\n", L2, a2, b2 ); printf( "L1d = %g, a1d = %g, b1d = %g, C1d = %g, h1d = %g\n", L1d, a1d, b1d, C1d, h1d ); printf( "L2d = %g, a2d = %g, b2d = %g, C2d = %g, h2d = %g\n", L2d, a2d, b2d, C2d, h2d ); printf( "G = %g, T = %g, SL = %g, SC = %g, SH = %g, RT = %g\n", G, T, SL, SC, SH, RT ); printf( "dE00 = %g\n", dE00 ); */ return( dE00 ); } /* Find the difference between two buffers of LAB data. */ void vips_dE00_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float *p1 = (float *) in[0]; float *p2 = (float *) in[1]; float *q = (float *) out; int x; for( x = 0; x < width; x++ ) { q[x] = vips_col_dE00( p1[0], p1[1], p1[2], p2[0], p2[1], p2[2] ); p1 += 3; p2 += 3; } } static void vips_dE00_class_init( VipsdE00Class *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "dE00"; object_class->description = _( "calculate dE00" ); colour_class->process_line = vips_dE00_line; } static void vips_dE00_init( VipsdE00 *dE00 ) { VipsColourDifference *difference = VIPS_COLOUR_DIFFERENCE( dE00 ); difference->interpretation = VIPS_INTERPRETATION_LAB; } /** * vips_dE00: * @left: first input image * @right: second input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Calculate dE 00. * * Returns: 0 on success, -1 on error */ int vips_dE00( VipsImage *left, VipsImage *right, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "dE00", ap, left, right, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/Lab2XYZ.c0000664000175000017500000001257412530402247013751 00000000000000/* Lab to XYZ. * * Modified: * 15/11/94 JC * - ANSIfied * - sets Type of output * - better error messages * 16/11/94 JC * - partialed * - in-line conversion * 8/2/95 JC * - new im_wrapone function * 2/11/09 * - gtkdoc * - cleanups * 18/9/12 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pcolour.h" typedef struct _VipsLab2XYZ { VipsColourTransform parent_instance; /* The colour temperature -- default to D65. */ VipsArea *temp; /* Broken out as xyz. */ double X0; double Y0; double Z0; } VipsLab2XYZ; typedef VipsColourTransformClass VipsLab2XYZClass; G_DEFINE_TYPE( VipsLab2XYZ, vips_Lab2XYZ, VIPS_TYPE_COLOUR_TRANSFORM ); /* Process a buffer of data. */ static void vips_Lab2XYZ_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { VipsLab2XYZ *Lab2XYZ = (VipsLab2XYZ *) colour; float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int x; VIPS_DEBUG_MSG( "vips_Lab2XYZ_line: X0 = %g, Y0 = %g, Z0 = %g\n", Lab2XYZ->X0, Lab2XYZ->Y0, Lab2XYZ->Z0 ); for( x = 0; x < width; x++ ) { float L, a, b; float X, Y, Z; double cby, tmp; L = p[0]; a = p[1]; b = p[2]; p += 3; if( L < 8.0 ) { Y = (L * Lab2XYZ->Y0) / 903.3; cby = 7.787 * (Y / Lab2XYZ->Y0) + 16.0 / 116.0; } else { cby = (L + 16.0) / 116.0; Y = Lab2XYZ->Y0 * cby * cby * cby; } tmp = a / 500.0 + cby; if( tmp < 0.2069 ) X = Lab2XYZ->X0 * (tmp - 0.13793) / 7.787; else X = Lab2XYZ->X0 * tmp * tmp * tmp; tmp = cby - b / 200.0; if( tmp < 0.2069 ) Z = Lab2XYZ->Z0 * (tmp - 0.13793) / 7.787; else Z = Lab2XYZ->Z0 * tmp * tmp * tmp; /* Write. */ q[0] = X; q[1] = Y; q[2] = Z; q += 3; } } static int vips_Lab2XYZ_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsLab2XYZ *Lab2XYZ = (VipsLab2XYZ *) object; if( Lab2XYZ->temp ) { if( vips_check_vector_length( class->nickname, Lab2XYZ->temp->n, 3 ) ) return( -1 ); Lab2XYZ->X0 = ((double *) Lab2XYZ->temp->data)[0]; Lab2XYZ->Y0 = ((double *) Lab2XYZ->temp->data)[1]; Lab2XYZ->Z0 = ((double *) Lab2XYZ->temp->data)[2]; } if( VIPS_OBJECT_CLASS( vips_Lab2XYZ_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_Lab2XYZ_class_init( VipsLab2XYZClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "Lab2XYZ"; object_class->description = _( "transform CIELAB to XYZ" ); object_class->build = vips_Lab2XYZ_build; colour_class->process_line = vips_Lab2XYZ_line; VIPS_ARG_BOXED( class, "temp", 110, _( "Temperature" ), _( "Color temperature" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsLab2XYZ, temp ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_Lab2XYZ_init( VipsLab2XYZ *Lab2XYZ ) { VipsColour *colour = VIPS_COLOUR( Lab2XYZ ); Lab2XYZ->X0 = VIPS_D65_X0; Lab2XYZ->Y0 = VIPS_D65_Y0; Lab2XYZ->Z0 = VIPS_D65_Z0; colour->interpretation = VIPS_INTERPRETATION_XYZ; } /** * vips_Lab2XYZ: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * optional arguments: * * @temp: colour temperature * * Turn Lab to XYZ. The colour temperature defaults to D65, but can be * specified with @temp. * * Returns: 0 on success, -1 on error */ int vips_Lab2XYZ( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "Lab2XYZ", ap, in, out ); va_end( ap ); return( result ); } /** * vips_col_Lab2XYZ: * @L: Input CIE Lab value * @a: Input CIE Lab value * @b: Input CIE Lab value * @X: Return CIE XYZ colour * @Y: Return CIE XYZ colour * @Z: Return CIE XYZ colour * * Calculate XYZ from Lab, D65. * * See also: vips_Lab2XYZ(). */ void vips_col_Lab2XYZ( float L, float a, float b, float *X, float *Y, float *Z ) { float in[3]; float *x; float out[3]; VipsLab2XYZ Lab2XYZ; in[0] = L; in[1] = a; in[2] = b; x = in; Lab2XYZ.X0 = VIPS_D65_X0; Lab2XYZ.Y0 = VIPS_D65_Y0; Lab2XYZ.Z0 = VIPS_D65_Z0; vips_Lab2XYZ_line( (VipsColour *) &Lab2XYZ, (VipsPel *) out, (VipsPel **) &x, 1 ); *X = out[0]; *Y = out[1]; *Z = out[2]; } vips-8.2.2/libvips/colour/Makefile.am0000664000175000017500000000107012571531237014442 00000000000000noinst_LTLIBRARIES = libcolour.la libcolour_la_SOURCES = \ colour.c \ pcolour.h \ colourspace.c \ dE76.c \ dE00.c \ dECMC.c \ icc_transform.c \ Lab2XYZ.c \ Lab2LCh.c \ LCh2Lab.c \ LCh2UCS.c \ UCS2LCh.c \ XYZ2Lab.c \ XYZ2Yxy.c \ Yxy2XYZ.c \ float2rad.c \ rad2float.c \ Lab2LabQ.c \ LabQ2Lab.c \ LabS2Lab.c \ Lab2LabS.c \ LabS2LabQ.c \ LabQ2LabS.c \ LabQ2sRGB.c \ sRGB2scRGB.c \ sRGB2HSV.c \ HSV2sRGB.c \ scRGB2XYZ.c \ scRGB2BW.c \ XYZ2scRGB.c \ scRGB2sRGB.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/colour/Makefile.in0000664000175000017500000005755612651721156014477 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/colour ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libcolour_la_LIBADD = am_libcolour_la_OBJECTS = colour.lo colourspace.lo dE76.lo dE00.lo \ dECMC.lo icc_transform.lo Lab2XYZ.lo Lab2LCh.lo LCh2Lab.lo \ LCh2UCS.lo UCS2LCh.lo XYZ2Lab.lo XYZ2Yxy.lo Yxy2XYZ.lo \ float2rad.lo rad2float.lo Lab2LabQ.lo LabQ2Lab.lo LabS2Lab.lo \ Lab2LabS.lo LabS2LabQ.lo LabQ2LabS.lo LabQ2sRGB.lo \ sRGB2scRGB.lo sRGB2HSV.lo HSV2sRGB.lo scRGB2XYZ.lo scRGB2BW.lo \ XYZ2scRGB.lo scRGB2sRGB.lo libcolour_la_OBJECTS = $(am_libcolour_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libcolour_la_SOURCES) DIST_SOURCES = $(libcolour_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libcolour.la libcolour_la_SOURCES = \ colour.c \ pcolour.h \ colourspace.c \ dE76.c \ dE00.c \ dECMC.c \ icc_transform.c \ Lab2XYZ.c \ Lab2LCh.c \ LCh2Lab.c \ LCh2UCS.c \ UCS2LCh.c \ XYZ2Lab.c \ XYZ2Yxy.c \ Yxy2XYZ.c \ float2rad.c \ rad2float.c \ Lab2LabQ.c \ LabQ2Lab.c \ LabS2Lab.c \ Lab2LabS.c \ LabS2LabQ.c \ LabQ2LabS.c \ LabQ2sRGB.c \ sRGB2scRGB.c \ sRGB2HSV.c \ HSV2sRGB.c \ scRGB2XYZ.c \ scRGB2BW.c \ XYZ2scRGB.c \ scRGB2sRGB.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/colour/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/colour/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libcolour.la: $(libcolour_la_OBJECTS) $(libcolour_la_DEPENDENCIES) $(EXTRA_libcolour_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libcolour_la_OBJECTS) $(libcolour_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HSV2sRGB.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LCh2Lab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LCh2UCS.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lab2LCh.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lab2LabQ.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lab2LabS.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Lab2XYZ.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabQ2Lab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabQ2LabS.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabQ2sRGB.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabS2Lab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LabS2LabQ.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UCS2LCh.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XYZ2Lab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XYZ2Yxy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XYZ2scRGB.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Yxy2XYZ.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colour.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/colourspace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dE00.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dE76.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dECMC.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/float2rad.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icc_transform.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rad2float.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sRGB2HSV.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sRGB2scRGB.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scRGB2BW.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scRGB2XYZ.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scRGB2sRGB.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/colour/XYZ2Yxy.c0000664000175000017500000000514612530402247014041 00000000000000/* Turn XYZ to Yxy colourspace. * * Modified: * 29/5/02 JC * - from lab2xyz * 2/11/09 * - gtkdoc * - cleanups * 20/9/12 * redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pcolour.h" typedef VipsColourTransform VipsXYZ2Yxy; typedef VipsColourTransformClass VipsXYZ2YxyClass; G_DEFINE_TYPE( VipsXYZ2Yxy, vips_XYZ2Yxy, VIPS_TYPE_COLOUR_TRANSFORM ); static void vips_XYZ2Yxy_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) { float * restrict p = (float *) in[0]; float * restrict q = (float *) out; int i; for( i = 0; i < width; i++ ) { float X = p[0]; float Y = p[1]; float Z = p[2]; double total = X + Y + Z; float x, y; p += 3; x = X / total; y = Y / total; q[0] = Y; q[1] = x; q[2] = y; q += 3; } } static void vips_XYZ2Yxy_class_init( VipsXYZ2YxyClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsColourClass *colour_class = VIPS_COLOUR_CLASS( class ); object_class->nickname = "XYZ2Yxy"; object_class->description = _( "transform XYZ to Yxy" ); colour_class->process_line = vips_XYZ2Yxy_line; } static void vips_XYZ2Yxy_init( VipsXYZ2Yxy *XYZ2Yxy ) { VipsColour *colour = VIPS_COLOUR( XYZ2Yxy ); colour->interpretation = VIPS_INTERPRETATION_YXY; } /** * vips_XYZ2Yxy: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Turn XYZ to Yxy. * * Returns: 0 on success, -1 on error */ int vips_XYZ2Yxy( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "XYZ2Yxy", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/colour/colourspace.c0000664000175000017500000005300612571531237015077 00000000000000/* convert between colourspaces * * 6/11/12 * - add RGB16 as a destination * 12/1/14 * - add B_W as a source / dest * - add GREY16 as a source / dest * - add RGB16 as a source * 19/1/14 * - auto-decode RAD images * 3/2/14 * - add "source_space", overrides source space guess * 8/5/14 * - oops, don't treat RGB16 as sRGB * 9/9/14 * - mono <-> rgb converters were not handling extra bands, thanks James * 4/2/15 * - much faster RGB16->sRGB path * 17/4/15 * - better conversion to greyscale, see * https://github.com/lovell/sharp/issues/193 */ /* Copyright (C) 1991-2005 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pcolour.h" /* A colour-transforming function. */ typedef int (*VipsColourTransformFn)( VipsImage *in, VipsImage **out, ... ); static int vips_scRGB2RGB16( VipsImage *in, VipsImage **out, ... ) { return( vips_scRGB2sRGB( in, out, "depth", 16, NULL ) ); } static int vips_scRGB2BW16( VipsImage *in, VipsImage **out, ... ) { return( vips_scRGB2BW16( in, out, "depth", 16, NULL ) ); } /* Do these two with a simple cast ... since we're just cast shifting, we can * short-circuit the extra band processing. */ static int vips_RGB162sRGB( VipsImage *in, VipsImage **out, ... ) { if( vips_cast( in, out, VIPS_FORMAT_UCHAR, "shift", TRUE, NULL ) ) return( -1 ); (*out)->Type = VIPS_INTERPRETATION_sRGB; return( 0 ); } static int vips_sRGB2RGB16( VipsImage *in, VipsImage **out, ... ) { if( vips_cast( in, out, VIPS_FORMAT_USHORT, "shift", TRUE, NULL ) ) return( -1 ); (*out)->Type = VIPS_INTERPRETATION_RGB16; return( 0 ); } /* Process the first @n bands with @fn, detach and reattach remaining bands. */ static int vips_process_n( const char *domain, VipsImage *in, VipsImage **out, int n, VipsColourTransformFn fn ) { if( in->Bands > n ) { VipsImage *scope = vips_image_new(); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( scope ), 4 ); if( vips_extract_band( in, &t[0], 0, "n", n, NULL ) || vips_extract_band( in, &t[1], n, "n", in->Bands - n, NULL ) || fn( t[0], &t[2], NULL ) || vips_cast( t[1], &t[3], t[2]->BandFmt, NULL ) || vips_bandjoin2( t[2], t[3], out, NULL ) ) { g_object_unref( scope ); return( -1 ); } g_object_unref( scope ); } else if( in->Bands == n ) { if( fn( in, out, NULL ) ) return( -1 ); } else { vips_error( domain, "%s", _( "too few bands for operation" ) ); return( -1 ); } return( 0 ); } static int vips_BW2sRGB_op( VipsImage *in, VipsImage **out, ... ) { VipsImage *t[3]; t[0] = in; t[1] = in; t[2] = in; if( vips_bandjoin( t, out, 3, NULL ) ) return( -1 ); return( 0 ); } static int vips_BW2sRGB( VipsImage *in, VipsImage **out, ... ) { if( vips_process_n( "BW2sRGB", in, out, 1, vips_BW2sRGB_op ) ) return( -1 ); (*out)->Type = VIPS_INTERPRETATION_sRGB; return( 0 ); } static int vips_GREY162RGB16( VipsImage *in, VipsImage **out, ... ) { if( vips_process_n( "GREY162RGB16", in, out, 1, vips_BW2sRGB_op ) ) return( -1 ); (*out)->Type = VIPS_INTERPRETATION_RGB16; return( 0 ); } /* Maximum number of steps we allow in a route. 10 steps should be enough * for anyone. */ #define MAX_STEPS (10) /* A route between two colour spaces. */ typedef struct _VipsColourRoute { VipsInterpretation from; VipsInterpretation to; VipsColourTransformFn route[MAX_STEPS + 1]; } VipsColourRoute; /* Some defines to save typing. These are the colour spaces we support * conversions between. */ #define XYZ VIPS_INTERPRETATION_XYZ #define LAB VIPS_INTERPRETATION_LAB #define LABQ VIPS_INTERPRETATION_LABQ #define LCH VIPS_INTERPRETATION_LCH #define CMC VIPS_INTERPRETATION_CMC #define LABS VIPS_INTERPRETATION_LABS #define scRGB VIPS_INTERPRETATION_scRGB #define sRGB VIPS_INTERPRETATION_sRGB #define HSV VIPS_INTERPRETATION_HSV #define RGB16 VIPS_INTERPRETATION_RGB16 #define GREY16 VIPS_INTERPRETATION_GREY16 #define YXY VIPS_INTERPRETATION_YXY #define BW VIPS_INTERPRETATION_B_W /* All the routes we know about. */ static VipsColourRoute vips_colour_routes[] = { { XYZ, LAB, { vips_XYZ2Lab, NULL } }, { XYZ, LABQ, { vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { XYZ, LCH, { vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { XYZ, CMC, { vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { XYZ, LABS, { vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { XYZ, scRGB, { vips_XYZ2scRGB, NULL } }, { XYZ, sRGB, { vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { XYZ, HSV, { vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { XYZ, BW, { vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { XYZ, RGB16, { vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { XYZ, GREY16, { vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { XYZ, YXY, { vips_XYZ2Yxy, NULL } }, { LAB, XYZ, { vips_Lab2XYZ, NULL } }, { LAB, LABQ, { vips_Lab2LabQ, NULL } }, { LAB, LCH, { vips_Lab2LCh, NULL } }, { LAB, CMC, { vips_Lab2LCh, vips_LCh2CMC, NULL } }, { LAB, LABS, { vips_Lab2LabS, NULL } }, { LAB, scRGB, { vips_Lab2XYZ, vips_XYZ2scRGB, NULL } }, { LAB, sRGB, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { LAB, HSV, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { LAB, BW, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { LAB, RGB16, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { LAB, GREY16, { vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { LAB, YXY, { vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { LABQ, XYZ, { vips_LabQ2Lab, vips_Lab2XYZ, NULL } }, { LABQ, LAB, { vips_LabQ2Lab, NULL } }, { LABQ, LCH, { vips_LabQ2Lab, vips_Lab2LCh, NULL } }, { LABQ, CMC, { vips_LabQ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { LABQ, LABS, { vips_LabQ2LabS, NULL } }, { LABQ, scRGB, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2scRGB } }, { LABQ, sRGB, { vips_LabQ2sRGB, NULL } }, { LABQ, HSV, { vips_LabQ2sRGB, vips_sRGB2HSV, NULL } }, { LABQ, BW, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { LABQ, RGB16, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { LABQ, GREY16, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { LABQ, YXY, { vips_LabQ2Lab, vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { LCH, XYZ, { vips_LCh2Lab, vips_Lab2XYZ, NULL } }, { LCH, LAB, { vips_LCh2Lab, NULL } }, { LCH, LABQ, { vips_LCh2Lab, vips_Lab2LabQ, NULL } }, { LCH, CMC, { vips_LCh2CMC, NULL } }, { LCH, LABS, { vips_LCh2Lab, vips_Lab2LabS, NULL } }, { LCH, scRGB, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, NULL } }, { LCH, sRGB, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { LCH, HSV, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { LCH, BW, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { LCH, RGB16, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { LCH, GREY16, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { LCH, YXY, { vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { CMC, XYZ, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, NULL } }, { CMC, LAB, { vips_CMC2LCh, vips_LCh2Lab, NULL } }, { CMC, LABQ, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2LabQ, NULL } }, { CMC, LCH, { vips_CMC2LCh, NULL } }, { CMC, LABS, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2LabS, NULL } }, { CMC, scRGB, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, NULL } }, { CMC, sRGB, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { CMC, HSV, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { CMC, BW, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { CMC, RGB16, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { CMC, GREY16, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { CMC, YXY, { vips_CMC2LCh, vips_LCh2Lab, vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { LABS, XYZ, { vips_LabS2Lab, vips_Lab2XYZ, NULL } }, { LABS, LAB, { vips_LabS2Lab, NULL } }, { LABS, LABQ, { vips_LabS2LabQ, NULL } }, { LABS, LCH, { vips_LabS2Lab, vips_Lab2LCh, NULL } }, { LABS, CMC, { vips_LabS2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { LABS, scRGB, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, NULL } }, { LABS, sRGB, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { LABS, HSV, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { LABS, BW, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { LABS, RGB16, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { LABS, GREY16, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } }, { LABS, YXY, { vips_LabS2Lab, vips_Lab2XYZ, vips_XYZ2Yxy, NULL } }, { scRGB, XYZ, { vips_scRGB2XYZ, NULL } }, { scRGB, LAB, { vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { scRGB, LABQ, { vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { scRGB, LCH, { vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { scRGB, CMC, { vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { scRGB, sRGB, { vips_scRGB2sRGB, NULL } }, { scRGB, HSV, { vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { scRGB, BW, { vips_scRGB2BW, NULL } }, { scRGB, LABS, { vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { scRGB, RGB16, { vips_scRGB2RGB16, NULL } }, { scRGB, GREY16, { vips_scRGB2BW16, NULL } }, { scRGB, YXY, { vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { sRGB, XYZ, { vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { sRGB, LAB, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { sRGB, LABQ, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { sRGB, LCH, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { sRGB, CMC, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { sRGB, scRGB, { vips_sRGB2scRGB, NULL } }, { sRGB, HSV, { vips_sRGB2HSV, NULL } }, { sRGB, BW, { vips_sRGB2scRGB, vips_scRGB2BW, NULL } }, { sRGB, LABS, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { sRGB, RGB16, { vips_sRGB2RGB16, NULL } }, { sRGB, GREY16, { vips_sRGB2scRGB, vips_scRGB2BW16, NULL } }, { sRGB, YXY, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { HSV, XYZ, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { HSV, LAB, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { HSV, LABQ, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { HSV, LCH, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { HSV, CMC, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { HSV, scRGB, { vips_HSV2sRGB, vips_sRGB2scRGB, NULL } }, { HSV, sRGB, { vips_HSV2sRGB, NULL } }, { HSV, BW, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2BW, NULL } }, { HSV, LABS, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { HSV, RGB16, { vips_HSV2sRGB, vips_sRGB2RGB16, NULL } }, { HSV, GREY16, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2BW16, NULL } }, { HSV, YXY, { vips_HSV2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { RGB16, XYZ, { vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { RGB16, LAB, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { RGB16, LABQ, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { RGB16, LCH, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { RGB16, CMC, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { RGB16, scRGB, { vips_sRGB2scRGB, NULL } }, { RGB16, sRGB, { vips_RGB162sRGB, NULL } }, { RGB16, HSV, { vips_RGB162sRGB, vips_sRGB2HSV, NULL } }, { RGB16, BW, { vips_sRGB2scRGB, vips_scRGB2BW, NULL } }, { RGB16, LABS, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { RGB16, GREY16, { vips_sRGB2scRGB, vips_scRGB2BW16, NULL } }, { RGB16, YXY, { vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { GREY16, XYZ, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { GREY16, LAB, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { GREY16, LABQ, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { GREY16, LCH, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { GREY16, CMC, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { GREY16, scRGB, { vips_GREY162RGB16, vips_sRGB2scRGB, NULL } }, { GREY16, sRGB, { vips_GREY162RGB16, vips_RGB162sRGB, NULL } }, { GREY16, HSV, { vips_GREY162RGB16, vips_RGB162sRGB, vips_sRGB2HSV, NULL } }, { GREY16, BW, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2BW, NULL } }, { GREY16, LABS, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { GREY16, RGB16, { vips_GREY162RGB16, NULL } }, { GREY16, YXY, { vips_GREY162RGB16, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { BW, XYZ, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, NULL } }, { BW, LAB, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, NULL } }, { BW, LABQ, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { BW, LCH, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { BW, CMC, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { BW, scRGB, { vips_BW2sRGB, vips_sRGB2scRGB, NULL } }, { BW, sRGB, { vips_BW2sRGB, NULL } }, { BW, HSV, { vips_BW2sRGB, vips_sRGB2HSV, NULL } }, { BW, LABS, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { BW, RGB16, { vips_BW2sRGB, vips_sRGB2RGB16, NULL } }, { BW, GREY16, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2BW16, NULL } }, { BW, YXY, { vips_BW2sRGB, vips_sRGB2scRGB, vips_scRGB2XYZ, vips_XYZ2Yxy, NULL } }, { YXY, XYZ, { vips_Yxy2XYZ, NULL } }, { YXY, LAB, { vips_Yxy2XYZ, vips_XYZ2Lab, NULL } }, { YXY, LABQ, { vips_Yxy2XYZ, vips_XYZ2Lab, vips_Lab2LabQ, NULL } }, { YXY, LCH, { vips_Yxy2XYZ, vips_XYZ2Lab, vips_Lab2LCh, NULL } }, { YXY, CMC, { vips_Yxy2XYZ, vips_XYZ2Lab, vips_Lab2LCh, vips_LCh2CMC, NULL } }, { YXY, LABS, { vips_Yxy2XYZ, vips_XYZ2Lab, vips_Lab2LabS, NULL } }, { YXY, scRGB, { vips_Yxy2XYZ, vips_XYZ2scRGB, NULL } }, { YXY, sRGB, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, NULL } }, { YXY, HSV, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2sRGB, vips_sRGB2HSV, NULL } }, { YXY, BW, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2BW, NULL } }, { YXY, RGB16, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2RGB16, NULL } }, { YXY, GREY16, { vips_Yxy2XYZ, vips_XYZ2scRGB, vips_scRGB2BW16, NULL } } }; /* Is an image in a supported colourspace. */ /** * vips_colourspace_issupported: * @image: input image * * Test if @image is in a colourspace that vips_colourspace() can process. For * example, #VIPS_INTERPRETATION_RGB images are not in a well-defined * colourspace, but #VIPS_INTERPRETATION_sRGB ones are. * * Returns: %TRUE if @image is in a supported colourspace. */ gboolean vips_colourspace_issupported( const VipsImage *image ) { VipsInterpretation interpretation; int i; /* Treat RGB as sRGB. If you want some other treatment, * you'll need to use the icc funcs. */ interpretation = vips_image_guess_interpretation( image ); if( interpretation == VIPS_INTERPRETATION_RGB ) interpretation = VIPS_INTERPRETATION_sRGB; for( i = 0; i < VIPS_NUMBER( vips_colour_routes ); i++ ) if( vips_colour_routes[i].from == interpretation ) return( TRUE ); return( FALSE ); } typedef struct _VipsColourspace { VipsOperation parent_instance; VipsImage *in; VipsImage *out; VipsInterpretation space; VipsInterpretation source_space; } VipsColourspace; typedef VipsOperationClass VipsColourspaceClass; G_DEFINE_TYPE( VipsColourspace, vips_colourspace, VIPS_TYPE_OPERATION ); static int vips_colourspace_build( VipsObject *object ) { VipsColourspace *colourspace = (VipsColourspace *) object; int i, j; VipsImage *x; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage **pipe = (VipsImage **) vips_object_local_array( object, MAX_STEPS ); VipsInterpretation interpretation; /* Verify that all input args have been set. */ if( VIPS_OBJECT_CLASS( vips_colourspace_parent_class )-> build( object ) ) return( -1 ); x = colourspace->in; /* Unpack radiance-coded images. We can't use interpretation for this, * since rad images can be scRGB or XYZ. */ if( x->Coding == VIPS_CODING_RAD ) { if( vips_rad2float( x, &t[0], NULL ) ) return( -1 ); x = t[0]; } if( vips_object_argument_isset( object, "source_space" ) ) interpretation = colourspace->source_space; else interpretation = vips_image_guess_interpretation( x ); /* Treat RGB as sRGB. If you want some other treatment, * you'll need to use the icc funcs. */ if( interpretation == VIPS_INTERPRETATION_RGB ) interpretation = VIPS_INTERPRETATION_sRGB; /* No conversion necessary. */ if( interpretation == colourspace->space ) { g_object_set( colourspace, "out", vips_image_new(), NULL ); return( vips_image_write( colourspace->in, colourspace->out ) ); } for( i = 0; i < VIPS_NUMBER( vips_colour_routes ); i++ ) if( vips_colour_routes[i].from == interpretation && vips_colour_routes[i].to == colourspace->space ) break; if( i == VIPS_NUMBER( vips_colour_routes ) ) { vips_error( "vips_colourspace", _( "no known route between '%s' and '%s'" ), vips_enum_nick( VIPS_TYPE_INTERPRETATION, interpretation ), vips_enum_nick( VIPS_TYPE_INTERPRETATION, colourspace->space ) ); return( -1 ); } for( j = 0; vips_colour_routes[i].route[j]; j++ ) { if( vips_colour_routes[i].route[j]( x, &pipe[j], NULL ) ) return( -1 ); x = pipe[j]; } g_object_set( colourspace, "out", vips_image_new(), NULL ); if( vips_image_write( x, colourspace->out ) ) return( -1 ); return( 0 ); } static void vips_colourspace_class_init( VipsColourspaceClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "colourspace"; vobject_class->description = _( "convert to a new colorspace" ); vobject_class->build = vips_colourspace_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourspace, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsColourspace, out ) ); VIPS_ARG_ENUM( class, "space", 6, _( "Space" ), _( "Destination color space" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsColourspace, space ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_sRGB ); VIPS_ARG_ENUM( class, "source-space", 6, _( "Source space" ), _( "Source color space" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsColourspace, source_space ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_sRGB ); } static void vips_colourspace_init( VipsColourspace *colourspace ) { colourspace->source_space = VIPS_INTERPRETATION_sRGB; } /** * vips_colourspace: * @in: input image * @out: output image * @space: convert to this colour space * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @source_space: input colour space * * This operation looks at the interpretation field of @in (or uses * @source_space, if set) and runs * a set of colourspace conversion functions to move it to @space. * * For example, given an image tagged as #VIPS_INTERPRETATION_YXY, running * vips_colourspace() with @space set to #VIPS_INTERPRETATION_LAB will * convert with vips_Yxy2XYZ() and vips_XYZ2Lab(). * * See also: vips_colourspace_issupported(), * vips_image_guess_interpretation(). * * Returns: 0 on success, -1 on error. */ int vips_colourspace( VipsImage *in, VipsImage **out, VipsInterpretation space, ... ) { va_list ap; int result; va_start( ap, space ); result = vips_call_split( "colourspace", ap, in, out, space ); va_end( ap ); return( result ); } vips-8.2.2/libvips/convolution/0000775000175000017500000000000012651721505013542 500000000000000vips-8.2.2/libvips/convolution/im_conv_f.c0000664000175000017500000002231312651705460015570 00000000000000/* im_conv_f * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris & Kirk Martinez * Written on: 29/04/1991 * Modified on: 19/05/1991 * 8/7/93 JC * - adapted for partial v2 * - memory leaks fixed * - ANSIfied * 12/7/93 JC * - adapted im_convbi() to im_convbf() * 7/10/94 JC * - new IM_ARRAY() macro * - evalend callbacks * - more typedef * 9/3/01 JC * - redone from im_conv() * 27/7/01 JC * - rejects masks with scale == 0 * 7/4/04 * - now uses im_embed() with edge stretching on the input, not * the output * - sets Xoffset / Yoffset * 11/11/05 * - simpler inner loop avoids gcc4 bug * 12/11/09 * - only rebuild the buffer offsets if bpl changes * - tiny speedups and cleanups * - add restrict, though it doesn't seem to help gcc * - add mask-all-zero check * 13/11/09 * - rename as im_conv_f() to make it easier for vips.c to make the * overloaded version * 3/2/10 * - gtkdoc * - more cleanups * 1/10/10 * - support complex (just double the bands) * 29/10/10 * - get rid of im_convsep_f(), just call this twice, no longer worth * keeping two versions * 15/10/11 Nicolas * - handle offset correctly in seperable convolutions * 26/1/16 Lovell Fuller * - remove Duff for a 25% speedup */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include /* Our parameters ... we take a copy of the mask argument, plus we make a * smaller version with the zeros squeezed out. */ typedef struct { IMAGE *in; IMAGE *out; DOUBLEMASK *mask; /* Copy of mask arg */ int nnz; /* Number of non-zero mask elements */ double *coeff; /* Array of non-zero mask coefficients */ int *coeff_pos; /* Index of each nnz element in mask->coeff */ } Conv; static int conv_close( Conv *conv ) { IM_FREEF( im_free_dmask, conv->mask ); return( 0 ); } static Conv * conv_new( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { Conv *conv = IM_NEW( out, Conv ); const int ne = mask->xsize * mask->ysize; int i; if( !conv ) return( NULL ); conv->in = in; conv->out = out; conv->mask = NULL; conv->nnz = 0; conv->coeff = NULL; if( im_add_close_callback( out, (im_callback_fn) conv_close, conv, NULL ) || !(conv->coeff = IM_ARRAY( out, ne, double )) || !(conv->coeff_pos = IM_ARRAY( out, ne, int )) || !(conv->mask = im_dup_dmask( mask, "conv_mask" )) ) return( NULL ); /* Find non-zero mask elements. */ for( i = 0; i < ne; i++ ) if( mask->coeff[i] ) { conv->coeff[conv->nnz] = mask->coeff[i]; conv->coeff_pos[conv->nnz] = i; conv->nnz += 1; } /* Was the whole mask zero? We must have at least 1 element in there: * set it to zero. */ if( conv->nnz == 0 ) { conv->coeff[0] = mask->coeff[0]; conv->coeff_pos[0] = 0; conv->nnz = 1; } return( conv ); } /* Our sequence value. */ typedef struct { Conv *conv; REGION *ir; /* Input region */ int *offsets; /* Offsets for each non-zero matrix element */ VipsPel **pts; /* Per-non-zero mask element image pointers */ int last_bpl; /* Avoid recalcing offsets, if we can */ } ConvSequence; /* Free a sequence value. */ static int conv_stop( void *vseq, void *a, void *b ) { ConvSequence *seq = (ConvSequence *) vseq; IM_FREEF( im_region_free, seq->ir ); return( 0 ); } /* Convolution start function. */ static void * conv_start( IMAGE *out, void *a, void *b ) { IMAGE *in = (IMAGE *) a; Conv *conv = (Conv *) b; ConvSequence *seq; if( !(seq = IM_NEW( out, ConvSequence )) ) return( NULL ); /* Init! */ seq->conv = conv; seq->ir = NULL; seq->pts = NULL; seq->last_bpl = -1; /* Attach region and arrays. */ seq->ir = im_region_create( in ); seq->offsets = IM_ARRAY( out, conv->nnz, int ); seq->pts = IM_ARRAY( out, conv->nnz, VipsPel * ); if( !seq->ir || !seq->offsets || !seq->pts ) { conv_stop( seq, in, conv ); return( NULL ); } return( (void *) seq ); } #define CONV_FLOAT( ITYPE, OTYPE ) { \ ITYPE ** restrict p = (ITYPE **) seq->pts; \ OTYPE * restrict q = (OTYPE *) IM_REGION_ADDR( or, le, y ); \ \ for( x = 0; x < sz; x++ ) { \ double sum; \ int i; \ \ sum = 0; \ for ( i = 0; i < nnz; i++ ) \ sum += t[i] * p[i][x]; \ \ sum = (sum / mask->scale) + mask->offset; \ \ q[x] = sum; \ } \ } /* Convolve! */ static int conv_gen( REGION *or, void *vseq, void *a, void *b ) { ConvSequence *seq = (ConvSequence *) vseq; IMAGE *in = (IMAGE *) a; Conv *conv = (Conv *) b; REGION *ir = seq->ir; DOUBLEMASK *mask = conv->mask; double * restrict t = conv->coeff; const int nnz = conv->nnz; Rect *r = &or->valid; Rect s; int le = r->left; int to = r->top; int bo = IM_RECT_BOTTOM(r); int sz = IM_REGION_N_ELEMENTS( or ) * (vips_band_format_iscomplex( in->BandFmt ) ? 2 : 1); int x, y, z, i; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); /* Fill offset array. Only do this if the bpl has changed since the * previous im_prepare(). */ if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) { seq->last_bpl = IM_REGION_LSKIP( ir ); for( i = 0; i < nnz; i++ ) { z = conv->coeff_pos[i]; x = z % conv->mask->xsize; y = z / conv->mask->xsize; seq->offsets[i] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); } } for( y = to; y < bo; y++ ) { /* Init pts for this line of PELs. */ for( z = 0; z < nnz; z++ ) seq->pts[z] = seq->offsets[z] + IM_REGION_ADDR( ir, le, y ); switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: CONV_FLOAT( unsigned char, float ); break; case IM_BANDFMT_CHAR: CONV_FLOAT( signed char, float ); break; case IM_BANDFMT_USHORT: CONV_FLOAT( unsigned short, float ); break; case IM_BANDFMT_SHORT: CONV_FLOAT( signed short, float ); break; case IM_BANDFMT_UINT: CONV_FLOAT( unsigned int, float ); break; case IM_BANDFMT_INT: CONV_FLOAT( signed int, float ); break; case IM_BANDFMT_FLOAT: case IM_BANDFMT_COMPLEX: CONV_FLOAT( float, float ); break; case IM_BANDFMT_DOUBLE: case IM_BANDFMT_DPCOMPLEX: CONV_FLOAT( double, double ); break; default: g_assert_not_reached(); } } return( 0 ); } int im_conv_f_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { Conv *conv; /* Check parameters. */ if( im_piocheck( in, out ) || im_check_uncoded( "im_conv", in ) || im_check_dmask( "im_conv", mask ) ) return( -1 ); if( mask->scale == 0 ) { im_error( "im_conv_f", "%s", "mask scale must be non-zero" ); return( -1 ); } if( !(conv = conv_new( in, out, mask )) ) return( -1 ); /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ if( im_cp_desc( out, in ) ) return( -1 ); if( vips_bandfmt_isint( in->BandFmt ) ) out->BandFmt = IM_BANDFMT_FLOAT; out->Xsize -= mask->xsize - 1; out->Ysize -= mask->ysize - 1; if( out->Xsize <= 0 || out->Ysize <= 0 ) { im_error( "im_conv_f", "%s", _( "image too small for mask" ) ); return( -1 ); } if( im_demand_hint( out, IM_SMALLTILE, in, NULL ) ) return( -1 ); if( im_generate( out, conv_start, conv_gen, conv_stop, in, conv ) ) return( -1 ); out->Xoffset = -mask->xsize / 2; out->Yoffset = -mask->ysize / 2; return( 0 ); } /** * im_conv_f: * @in: input image * @out: output image * @mask: convolution mask * * Convolve @in with @mask using floating-point arithmetic. The output image * is always %IM_BANDFMT_FLOAT unless @in is %IM_BANDFMT_DOUBLE, in which case * @out is also %IM_BANDFMT_DOUBLE. * * Each output pixel is * calculated as sigma[i]{pixel[i] * mask[i]} / scale + offset, where scale * and offset are part of @mask. * * See also: im_conv(), im_convsep_f(), im_create_dmaskv(). * * Returns: 0 on success, -1 on error */ int im_conv_f( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ) { IMAGE *t1 = im_open_local( out, "im_conv_f intermediate", "p" ); if( !t1 || im_embed( in, t1, 1, mask->xsize / 2, mask->ysize / 2, in->Xsize + mask->xsize - 1, in->Ysize + mask->ysize - 1 ) || im_conv_f_raw( t1, out, mask ) ) return( -1 ); out->Xoffset = 0; out->Yoffset = 0; return( 0 ); } vips-8.2.2/libvips/convolution/spcor.c0000664000175000017500000002206112651132270014750 00000000000000/* spcor * * Copyright: 1990, N. Dessipris; 2006, 2007 Nottingham Trent University. * * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : * 20/2/95 JC * - updated * - ANSIfied, a little * 21/2/95 JC * - rewritten * - partialed * - speed-ups * - new correlation coefficient (see above), from Niblack "An * Introduction to Digital Image Processing", Prentice/Hall, pp 138. * 4/9/97 JC * - now does short/ushort as well * 13/2/03 JC * - oops, could segv for short images * 14/4/04 JC * - sets Xoffset / Yoffset * 8/3/06 JC * - use im_embed() with edge stretching on the input, not the output * * 2006-10-24 tcv * - add im_spcor2 * * 2007-11-12 tcv * - make im_spcor a wrapper selecting either im__spcor or im__spcor2 * 2008-09-09 JC * - roll back the windowed version for now, it has some tile edge effects * 3/2/10 * - gtkdoc * - cleanups * 7/11/13 * - redone as a class * 8/4/15 * - avoid /0 for constant reference or zero image */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pconvolution.h" #include "correlation.h" typedef struct _VipsSpcor { VipsCorrelation parent_instance; /* Per-band mean of ref images. */ double *rmean; /* Per band sqrt(sumij (ref(i,j)-mean(ref))^2) */ double *c1; } VipsSpcor; typedef VipsCorrelationClass VipsSpcorClass; G_DEFINE_TYPE( VipsSpcor, vips_spcor, VIPS_TYPE_CORRELATION ); static int vips_spcor_pre_generate( VipsCorrelation *correlation ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( correlation ); VipsSpcor *spcor = (VipsSpcor *) correlation; VipsImage *ref = correlation->ref_ready; int bands = ref->Bands; VipsImage **b = (VipsImage **) vips_object_local_array( VIPS_OBJECT( spcor ), bands ); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( spcor ), 2 ); VipsImage **b2 = (VipsImage **) vips_object_local_array( VIPS_OBJECT( spcor ), bands ); int i; double *offset; double *scale; if( vips_check_noncomplex( class->nickname, ref ) ) return( -1 ); /* Per-band mean. */ if( !(spcor->rmean = VIPS_ARRAY( spcor, bands, double )) || !(spcor->c1 = VIPS_ARRAY( spcor, bands, double )) ) return( -1 ); for( i = 0; i < bands; i++ ) if( vips_extract_band( ref, &b[i], i, NULL ) || vips_avg( b[i], &spcor->rmean[i], NULL ) ) return( -1 ); /* Per band sqrt(sumij (ref(i,j)-mean(ref))^2) */ if( !(offset = VIPS_ARRAY( spcor, bands, double )) || !(scale = VIPS_ARRAY( spcor, bands, double )) ) return( -1 ); for( i = 0; i < bands; i++ ) { offset[i] = -spcor->rmean[i]; scale[i] = 1.0; } if( vips_linear( ref, &t[0], scale, offset, bands, NULL ) || vips_multiply( t[0], t[0], &t[1], NULL ) ) return( -1 ); for( i = 0; i < bands; i++ ) if( vips_extract_band( t[1], &b2[i], i, NULL ) || vips_avg( b2[i], &spcor->c1[i], NULL ) ) return( -1 ); for( i = 0; i < bands; i++ ) { spcor->c1[i] *= ref->Xsize * ref->Ysize; spcor->c1[i] = sqrt( spcor->c1[i] ); } return( 0 ); } #define LOOP( IN ) { \ IN *r1 = ((IN *) ref->data) + b; \ IN *p1 = ((IN *) p) + b; \ int in_lsk = lsk / sizeof( IN ); \ IN *r1a; \ IN *p1a; \ \ /* Mean of area of in corresponding to ref. \ */ \ p1a = p1; \ sum1 = 0.0; \ for( j = 0; j < ref->Ysize; j++ ) { \ for( i = 0; i < sz; i += bands ) \ sum1 += p1a[i]; \ p1a += in_lsk; \ } \ imean = sum1 / VIPS_IMAGE_N_PELS( ref ); \ \ /* Calculate sum-of-squares-of-differences for this window on \ * in, and also sum-of-products-of-differences from mean. \ */ \ p1a = p1; \ r1a = r1; \ sum2 = 0.0; \ sum3 = 0.0; \ for( j = 0; j < ref->Ysize; j++ ) { \ for( i = 0; i < sz; i += bands ) { \ /* Reference pel and input pel. \ */ \ IN ip = p1a[i]; \ IN rp = r1a[i]; \ \ /* Accumulate sum-of-squares-of-differences for \ * input image. \ */ \ double t = ip - imean; \ sum2 += t * t; \ \ /* Accumulate product-of-difference from mean. \ */ \ sum3 += (rp - spcor->rmean[b]) * t; \ } \ \ p1a += in_lsk; \ r1a += sz; \ } \ } static void vips_spcor_correlation( VipsCorrelation *correlation, VipsRegion *in, VipsRegion *out ) { VipsSpcor *spcor = (VipsSpcor *) correlation; VipsRect *r = &out->valid; VipsImage *ref = correlation->ref_ready; int bands = vips_band_format_iscomplex( ref->BandFmt ) ? ref->Bands * 2 : ref->Bands; int sz = ref->Xsize * bands; int lsk = VIPS_REGION_LSKIP( in ); int x, y, b, j, i; double imean; double sum1; double sum2, sum3; double c2, cc; for( y = 0; y < r->height; y++ ) { float *q = (float *) VIPS_REGION_ADDR( out, r->left, r->top + y ); for( x = 0; x < r->width; x++ ) { VipsPel *p = VIPS_REGION_ADDR( in, r->left + x, r->top + y ); for( b = 0; b < bands; b++ ) { switch( vips_image_get_format( ref ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char ); break; case VIPS_FORMAT_CHAR: LOOP( signed char ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short ); break; case VIPS_FORMAT_SHORT: LOOP( signed short ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int ); break; case VIPS_FORMAT_INT: LOOP( signed int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOP( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOP( double ); break; default: g_assert_not_reached(); /* Stop compiler warnings. */ sum2 = 0; sum3 = 0; } c2 = spcor->c1[b] * sqrt( sum2 ); if( c2 == 0.0 ) /* Something like constant ref. * We regard this as uncorrelated. */ cc = 0.0; else cc = sum3 / c2; *q++ = cc; } } } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int vips_spcor_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, F, F, F }; static void vips_spcor_class_init( VipsSpcorClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsCorrelationClass *cclass = VIPS_CORRELATION_CLASS( class ); object_class->nickname = "spcor"; object_class->description = _( "spatial correlation" ); cclass->format_table = vips_spcor_format_table; cclass->pre_generate = vips_spcor_pre_generate; cclass->correlation = vips_spcor_correlation; } static void vips_spcor_init( VipsSpcor *spcor ) { } /** * vips_spcor: * @in: input image * @ref: reference image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Calculate a correlation surface. * * @ref is placed at every position in @in and the correlation coefficient * calculated. The output * image is always float. * * The output * image is the same size as the input. Extra input edge pixels are made by * copying the existing edges outwards. * * The correlation coefficient is calculated as: * * |[ * sumij (ref(i,j)-mean(ref))(inkl(i,j)-mean(inkl)) * c(k,l) = ------------------------------------------------ * sqrt(sumij (ref(i,j)-mean(ref))^2) * * sqrt(sumij (inkl(i,j)-mean(inkl))^2) * ]| * * where inkl is the area of @in centred at position (k,l). * * from Niblack "An Introduction to Digital Image Processing", * Prentice/Hall, pp 138. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The output image is always float, unless either of the two inputs is * double, in which case the output is also double. * * See also: vips_fastcor(). * * Returns: 0 on success, -1 on error */ int vips_spcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "spcor", ap, in, ref, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/convolution/fastcor.c0000664000175000017500000001463412651123107015271 00000000000000/* fastcor * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : 15/03/1991 * 20/2/95 JC * - ANSIfied * - in1 and in2 swapped, to match order for im_spcor * - memory leaks fixed * 21/2/95 JC * - partialed * - speed-ups * 7/4/04 * - now uses im_embed() with edge stretching on the output * - sets Xoffset / Yoffset * 8/3/06 JC * - use im_embed() with edge stretching on the input, not the output * - calculate sum of squares of differences, rather than abs of * difference * 3/2/10 * - gtkdoc * - cleanups * 7/11/13 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pconvolution.h" #include "correlation.h" typedef VipsCorrelationClass VipsFastcor; typedef VipsCorrelationClass VipsFastcorClass; G_DEFINE_TYPE( VipsFastcor, vips_fastcor, VIPS_TYPE_CORRELATION ); #define CORR_INT( TYPE ) { \ for( y = 0; y < r->height; y++ ) { \ unsigned int *q = (unsigned int *) \ VIPS_REGION_ADDR( out, r->left, r->top + y ); \ \ for( x = 0; x < r->width; x++ ) \ for( b = 0; b < bands; b++ ) { \ TYPE *p1 = (TYPE *) ref->data; \ TYPE *p2 = (TYPE *) VIPS_REGION_ADDR( in, \ r->left + x, r->top + y ); \ \ unsigned int sum; \ \ sum = 0; \ for( j = 0; j < ref->Ysize; j++ ) { \ for( i = b; i < sz; i += bands ) { \ int t = p1[i] - p2[i]; \ \ sum += t * t; \ } \ \ p1 += sz; \ p2 += lsk; \ } \ \ *q++ = sum; \ } \ } \ } #define CORR_FLOAT( TYPE ) { \ for( y = 0; y < r->height; y++ ) { \ TYPE *q = (TYPE *) \ VIPS_REGION_ADDR( out, r->left, r->top + y ); \ \ for( x = 0; x < r->width; x++ ) \ for( b = 0; b < bands; b++ ) { \ TYPE *p_ref = (TYPE *) ref->data; \ TYPE *p_in = (TYPE *) VIPS_REGION_ADDR( in, \ r->left + x, r->top + y ); \ \ TYPE sum; \ \ sum = 0; \ for( j = 0; j < ref->Ysize; j++ ) { \ for( i = b; i < sz; i += bands ) { \ TYPE dif = p_ref[i] - p_in[i]; \ \ sum += dif * dif; \ } \ \ p_ref += sz; \ p_in += lsk; \ } \ \ *q++ = sum; \ } \ } \ } static void vips_fastcor_correlation( VipsCorrelation *correlation, VipsRegion *in, VipsRegion *out ) { VipsRect *r = &out->valid; VipsImage *ref = correlation->ref_ready; int bands = vips_band_format_iscomplex( ref->BandFmt ) ? ref->Bands * 2 : ref->Bands; int sz = ref->Xsize * bands; int lsk = VIPS_REGION_LSKIP( in ) / VIPS_IMAGE_SIZEOF_ELEMENT( in->im ); int x, y, i, j, b; switch( vips_image_get_format( ref ) ) { case VIPS_FORMAT_CHAR: CORR_INT( signed char ); break; case VIPS_FORMAT_UCHAR: CORR_INT( unsigned char ); break; case VIPS_FORMAT_SHORT: CORR_INT( signed short ); break; case VIPS_FORMAT_USHORT: CORR_INT( unsigned short ); break; case VIPS_FORMAT_INT: CORR_INT( signed int ); break; case VIPS_FORMAT_UINT: CORR_INT( unsigned int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: CORR_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: CORR_FLOAT( double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type promotion for multiplication. Sign and value preserving. Make sure * these match the case statement in multiply_buffer() above. */ static int vips_fastcor_format_table[10] = { /* UC C US S UI I F X D DX */ UI, UI, UI, UI, UI, UI,F, X, D, DX }; static void vips_fastcor_class_init( VipsFastcorClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsCorrelationClass *cclass = VIPS_CORRELATION_CLASS( class ); object_class->nickname = "fastcor"; object_class->description = _( "fast correlation" ); cclass->format_table = vips_fastcor_format_table; cclass->correlation = vips_fastcor_correlation; } static void vips_fastcor_init( VipsFastcor *fastcor ) { } /** * vips_fastcor: * @in: input image * @ref: reference image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Calculate a fast correlation surface. * * @ref is placed at every position in @in and the sum of squares of * differences calculated. * * The output * image is the same size as the input. Extra input edge pixels are made by * copying the existing edges outwards. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The output type is uint if both inputs are integer, float if both are float * or complex, and double if either is double or double complex. * In other words, the output type is just large enough to hold the whole * range of possible values. * * See also: vips_spcor(). * * Returns: 0 on success, -1 on error */ int vips_fastcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "fastcor", ap, in, ref, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/convolution/im_conv.c0000664000175000017500000006153212651705447015276 00000000000000/* im_conv * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris & Kirk Martinez * Written on: 29/04/1991 * Modified on: 19/05/1991 * 8/7/93 JC * - adapted for partial v2 * - memory leaks fixed * - ANSIfied * 23/7/93 JC * - inner loop unrolled with a switch - 25% speed-up! * 13/12/93 JC * - tiny rounding error removed * 7/10/94 JC * - new IM_ARRAY() macro * - various simplifications * - evalend callback added * 1/2/95 JC * - use of IM_REGION_ADDR() updated * - output size was incorrect! see comment below * - bug with large non-square matricies fixed too * - uses new im_embed() function * 13/7/98 JC * - wierd bug ... im_free_imask is no longer directly called for close * callback, caused SIGKILL on solaris 2.6 ... linker bug? * 9/3/01 JC * - reworked and simplified, about 10% faster * - slightly better range clipping * 27/7/01 JC * - reject masks with scale == 0 * 7/4/04 * - im_conv() now uses im_embed() with edge stretching on the input, not * the output * - sets Xoffset / Yoffset * 11/11/05 * - simpler inner loop avoids gcc4 bug * 7/11/07 * - new evalstart/end callbacks * 12/5/08 * - int rounding was +1 too much, argh * - only rebuild the buffer offsets if bpl changes * 5/4/09 * - tiny speedups and cleanups * - add restrict, though it doesn't seem to help gcc * 12/11/09 * - only check for non-zero elements once * - add mask-all-zero check * - cleanups * 3/2/10 * - gtkdoc * - more cleanups * 23/08/10 * - add a special case for 3x3 masks, about 20% faster * 1/10/10 * - support complex (just double the bands) * 18/10/10 * - add experimental Orc path * 29/10/10 * - use VipsVector * - get rid of im_convsep(), just call this twice, no longer worth * keeping two versions * 8/11/10 * - add array tiling * 9/5/11 * - argh typo in overflow estimation could cause errors * 15/10/11 Nicolas * - handle offset correctly in seperable convolutions * 26/1/16 Lovell Fuller * - remove Duff for a 25% speedup */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Show sample pixels as they are transformed. #define DEBUG_PIXELS */ /* #define DEBUG */ /* TODO - tried 8-bit data with a 32-bit intermediate, but it was only slightly faster than C 16-bit data would be even slower, no speed advantage - make up a signed 8-bit code path? - don't use divluw, it's insanely slow, instead scale coefficients so that we can just do >>8 at the end */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* We can't run more than this many passes. Larger than this and we * fall back to C. */ #define MAX_PASS (10) /* A pass with a vector. */ typedef struct { int first; /* The index of the first mask coff we use */ int last; /* The index of the last mask coff we use */ int r; /* Set previous result in this var */ /* The code we generate for this section of this mask. */ VipsVector *vector; } Pass; /* Our parameters ... we take a copy of the mask argument, plus we make a * smaller version with the zeros squeezed out. */ typedef struct { IMAGE *in; IMAGE *out; INTMASK *mask; /* Copy of mask arg */ int nnz; /* Number of non-zero mask elements */ int *coeff; /* Array of non-zero mask coefficients */ int *coeff_pos; /* Index of each nnz element in mask->coeff */ int underflow; /* Global underflow/overflow counts */ int overflow; /* The convolver we generate for this mask. We have to split the * convolve and clip into two phases. */ int n_pass; Pass pass[MAX_PASS]; int s1; /* Input to clip */ VipsVector *clip; } Conv; static void conv_vector_free( Conv *conv ) { int i; for( i = 0; i < conv->n_pass; i++ ) IM_FREEF( vips_vector_free, conv->pass[i].vector ); conv->n_pass = 0; IM_FREEF( vips_vector_free, conv->clip ); } static int conv_close( Conv *conv ) { IM_FREEF( im_free_imask, conv->mask ); conv_vector_free( conv ); return( 0 ); } static int conv_evalstart( Conv *conv ) { /* Reset underflow/overflow count. * * This often doesn't get called until eval has already finished, so * resetting here just wipes all records. * conv->overflow = 0; conv->underflow = 0; * */ return( 0 ); } static int conv_evalend( Conv *conv ) { if( conv->overflow ) vips_info( "im_conv", _( "%d overflows detected" ), conv->overflow ); if( conv->underflow ) vips_info( "im_conv", _( "%d underflows detected" ), conv->underflow ); return( 0 ); } #define TEMP( N, S ) vips_vector_temporary( v, N, S ) #define SCANLINE( N, P, S ) vips_vector_source_scanline( v, N, P, S ) #define CONST( N, V, S ) vips_vector_constant( v, N, V, S ) #define ASM2( OP, A, B ) vips_vector_asm2( v, OP, A, B ) #define ASM3( OP, A, B, C ) vips_vector_asm3( v, OP, A, B, C ) /* Generate code for a section of the mask. * * 0 for success, -1 on error. */ static int conv_compile_convolution_u8s16_section( Pass *pass, Conv *conv, gboolean first_pass ) { INTMASK *mask = conv->mask; const int n_mask = mask->xsize * mask->ysize; int i; VipsVector *v; char zero[256]; char offset[256]; char source[256]; char coeff[256]; pass->vector = v = vips_vector_new( "conv", 2 ); /* The value we fetch from the image, the product with the matrix * value, the accumulated sum. */ TEMP( "value", 1 ); TEMP( "product", 2 ); TEMP( "sum", 2 ); /* Init the sum. If this is the first pass, it's a constant. If this * is a later pass, we have to init the sum from the result * of the previous pass. */ if( first_pass ) { CONST( zero, 0, 2 ); ASM2( "copyw", "sum", zero ); } else { /* "r" is the result of the previous pass. */ pass->r = vips_vector_source_name( v, "r", 2 ); ASM2( "loadw", "sum", "r" ); } for( i = pass->first; i < n_mask; i++ ) { int x = i % mask->xsize; int y = i / mask->xsize; if( !mask->coeff[i] ) /* Exclude zero elements. */ continue; /* The source. sl0 is the first scanline in the mask. */ SCANLINE( source, y, 1 ); /* The offset, only for non-first-columns though. */ if( x > 0 ) CONST( offset, conv->in->Bands * x, 1 ); /* The coefficient. Only for non-1 coeffs though, we skip the * mul for them. * * We need to do 8-bit unsigned pixel * signed mask, so we * have to cast the pixel up to 16-bit then do a mult against a * 16-bit constant. We know the result will fit in the bottom * 16 bits. */ if( mask->coeff[i] != 1 ) CONST( coeff, mask->coeff[i], 2 ); /* Two factors: * - element is in the first column, ie. has a zero offset * - mask coeff is 1, ie. we can skip the multiply * * We could combine some of these cases, but it's simpler * and safer to spell them all out. */ if( x == 0 ) ASM2( "loadb", "value", source ); else ASM3( "loadoffb", "value", source, offset ); ASM2( "convubw", "product", "value" ); if( mask->coeff[i] != 1 ) ASM3( "mullw", "product", "product", coeff ); ASM3( "addssw", "sum", "sum", "product" ); if( vips_vector_full( v ) ) break; } pass->last = i; ASM2( "copyw", "d1", "sum" ); #ifdef DEBUG vips_vector_print( v ); printf( "compiling ...\n" ); #endif /*DEBUG*/ if( !vips_vector_compile( v ) ) return( -1 ); return( 0 ); } /* Generate the convolution pass for u8 data with an s16 accumulator. * * 0 for success, -1 on error. */ static int conv_compile_convolution_u8s16( Conv *conv ) { INTMASK *mask = conv->mask; const int n_mask = mask->xsize * mask->ysize; double min, max; int i; if( conv->in->BandFmt != IM_BANDFMT_UCHAR ) return( -1 ); /* Can the accumulator overflow or underflow at any stage? Since * matrix elements are signed, we need to calculate a running * possible min and max. */ min = 0; max = 0; for( i = 0; i < n_mask; i++ ) { int v = 255 * mask->coeff[i]; min = IM_MIN( min, min + v ); max = IM_MAX( max, max + v ); if( max > SHRT_MAX ) return( -1 ); if( min < SHRT_MIN ) return( -1 ); } /* Generate passes until we've used up the whole mask. */ for( i = 0;;) { Pass *pass; /* Skip any zero coefficients at the start of the mask * region. */ for( ; i < n_mask && !mask->coeff[i]; i++ ) ; if( i == n_mask ) break; /* Allocate space for another pass. */ if( conv->n_pass == MAX_PASS ) return( -1 ); pass = &conv->pass[conv->n_pass]; conv->n_pass += 1; pass->first = i; pass->last = i; pass->r = -1; if( conv_compile_convolution_u8s16_section( pass, conv, conv->n_pass == 1 ) ) return( -1 ); i = pass->last + 1; #ifdef DEBUG printf( "conv_compile_convolution_u8s16: " "first = %d, last = %d\n", pass->first, pass->last ); #endif /*DEBUG*/ if( i >= n_mask ) break; } return( 0 ); } /* Generate the program that does (pass + rounding) / scale + offset * from a s16 intermediate back to a u8 output. */ static int conv_compile_scale_s16u8( Conv *conv ) { INTMASK *mask = conv->mask; VipsVector *v; char scale[256]; char offset[256]; char zero[256]; /* Scale and offset must be in range. */ if( mask->scale > 255 || mask->scale < 0 || mask->offset > SHRT_MAX || mask->offset < SHRT_MIN ) return( -1 ); conv->clip = v = vips_vector_new( "clip", 1 ); conv->s1 = vips_vector_source_name( v, "s1", 2 ); TEMP( "t1", 2 ); TEMP( "t2", 2 ); /* We can only do unsigned divide, so we must add the offset before * dividing by the scale. We need to scale the offset up. * * We can build the rounding into the offset as well. * You might think this should be (scale + 1) / 2, but then we'd be * adding one for scale == 1. */ CONST( scale, mask->scale, 1 ); CONST( offset, mask->offset * mask->scale + mask->scale / 2, 2 ); CONST( zero, 0, 2 ); /* Offset and scale. */ ASM3( "addssw", "t1", "s1", offset ); /* We need to convert the signed result of the * offset to unsigned for the div, ie. we want to set anything <0 to 0. */ ASM3( "cmpgtsw", "t2", "t1", zero ); ASM3( "andw", "t1", "t1", "t2" ); ASM3( "divluw", "t1", "t1", scale ); ASM2( "convuuswb", "d1", "t1" ); if( !vips_vector_compile( v ) ) return( -1 ); #ifdef DEBUG vips_vector_print( v ); #endif /*DEBUG*/ return( 0 ); } static Conv * conv_new( IMAGE *in, IMAGE *out, INTMASK *mask ) { Conv *conv = IM_NEW( out, Conv ); const int n_mask = mask->xsize * mask->ysize; int i; if( !conv ) return( NULL ); conv->in = in; conv->out = out; conv->mask = NULL; conv->nnz = 0; conv->coeff = NULL; conv->coeff_pos = NULL; conv->underflow = 0; conv->overflow = 0; conv->n_pass = 0; conv->s1 = -1; conv->clip = NULL; if( im_add_close_callback( out, (im_callback_fn) conv_close, conv, NULL ) || im_add_close_callback( out, (im_callback_fn) conv_evalstart, conv, NULL ) || im_add_close_callback( out, (im_callback_fn) conv_evalend, conv, NULL ) || !(conv->coeff = IM_ARRAY( out, n_mask, int )) || !(conv->coeff_pos = IM_ARRAY( out, n_mask, int )) || !(conv->mask = im_dup_imask( mask, "conv_mask" )) ) return( NULL ); /* Find non-zero mask elements. */ for( i = 0; i < n_mask; i++ ) if( mask->coeff[i] ) { conv->coeff[conv->nnz] = mask->coeff[i]; conv->coeff_pos[conv->nnz] = i; conv->nnz += 1; } /* Was the whole mask zero? We must have at least 1 element in there: * set it to zero. */ if( conv->nnz == 0 ) { conv->coeff[0] = mask->coeff[0]; conv->coeff_pos[0] = 0; conv->nnz = 1; } /* Generate code for this mask / image, if possible. */ if( vips_vector_isenabled() ) { if( conv_compile_convolution_u8s16( conv ) || conv_compile_scale_s16u8( conv ) ) conv_vector_free( conv ); } return( conv ); } /* Our sequence value. */ typedef struct { Conv *conv; REGION *ir; /* Input region */ int *offsets; /* Offsets for each non-zero matrix element */ VipsPel **pts; /* Per-non-zero mask element pointers */ int underflow; /* Underflow/overflow counts */ int overflow; int last_bpl; /* Avoid recalcing offsets, if we can */ /* We need a pair of intermediate buffers to keep the results of each * conv pass in. */ void *t1; void *t2; } ConvSequence; /* Free a sequence value. */ static int conv_stop( void *vseq, void *a, void *b ) { ConvSequence *seq = (ConvSequence *) vseq; Conv *conv = (Conv *) b; /* Add local under/over counts to global counts. */ conv->overflow += seq->overflow; conv->underflow += seq->underflow; IM_FREEF( im_region_free, seq->ir ); IM_FREE( seq->t1 ); IM_FREE( seq->t2 ); return( 0 ); } /* Convolution start function. */ static void * conv_start( IMAGE *out, void *a, void *b ) { IMAGE *in = (IMAGE *) a; Conv *conv = (Conv *) b; ConvSequence *seq; if( !(seq = IM_NEW( out, ConvSequence )) ) return( NULL ); /* Init! */ seq->conv = conv; seq->ir = NULL; seq->pts = NULL; seq->underflow = 0; seq->overflow = 0; seq->last_bpl = -1; seq->t1 = NULL; seq->t2 = NULL; /* Attach region and arrays. */ seq->ir = im_region_create( in ); seq->offsets = IM_ARRAY( out, conv->nnz, int ); seq->pts = IM_ARRAY( out, conv->nnz, VipsPel * ); if( !seq->ir || !seq->offsets || !seq->pts ) { conv_stop( seq, in, conv ); return( NULL ); } if( vips_vector_isenabled() && conv->n_pass ) { seq->t1 = IM_ARRAY( NULL, IM_IMAGE_N_ELEMENTS( in ), short ); seq->t2 = IM_ARRAY( NULL, IM_IMAGE_N_ELEMENTS( in ), short ); if( !seq->t1 || !seq->t2 ) { conv_stop( seq, in, conv ); return( NULL ); } } return( seq ); } /* INT inner loops. */ #define CONV_INT( TYPE, IM_CLIP ) { \ TYPE ** restrict p = (TYPE **) seq->pts; \ TYPE * restrict q = (TYPE *) IM_REGION_ADDR( or, le, y ); \ \ for( x = 0; x < sz; x++ ) { \ int sum; \ int i; \ \ sum = 0; \ for ( i = 0; i < nnz; i++ ) \ sum += t[i] * p[i][x]; \ \ sum = ((sum + rounding) / mask->scale) + mask->offset; \ \ IM_CLIP; \ \ q[x] = sum; \ } \ } /* FLOAT inner loops. */ #define CONV_FLOAT( TYPE ) { \ TYPE ** restrict p = (TYPE **) seq->pts; \ TYPE * restrict q = (TYPE *) IM_REGION_ADDR( or, le, y ); \ \ for( x = 0; x < sz; x++ ) { \ double sum; \ int i; \ \ sum = 0; \ for ( i = 0; i < nnz; i++ ) \ sum += t[i] * p[i][x]; \ \ sum = (sum / mask->scale) + mask->offset; \ \ q[x] = sum; \ } \ } /* Convolve! See below for the special-case 3x3 path. */ static int conv_gen( REGION *or, void *vseq, void *a, void *b ) { ConvSequence *seq = (ConvSequence *) vseq; IMAGE *in = (IMAGE *) a; Conv *conv = (Conv *) b; REGION *ir = seq->ir; INTMASK *mask = conv->mask; int * restrict t = conv->coeff; const int nnz = conv->nnz; /* You might think this should be (scale + 1) / 2, but then we'd be * adding one for scale == 1. */ int rounding = mask->scale / 2; Rect *r = &or->valid; Rect s; int le = r->left; int to = r->top; int bo = IM_RECT_BOTTOM( r ); int sz = IM_REGION_N_ELEMENTS( or ) * (im_iscomplex( in ) ? 2 : 1); int x, y, z, i; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "conv_gen: work" ); /* Fill offset array. Only do this if the bpl has changed since the * previous im_prepare(). */ if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) { seq->last_bpl = IM_REGION_LSKIP( ir ); for( i = 0; i < nnz; i++ ) { z = conv->coeff_pos[i]; x = z % conv->mask->xsize; y = z / conv->mask->xsize; seq->offsets[i] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); } } for( y = to; y < bo; y++ ) { /* Init pts for this line of PELs. */ for( z = 0; z < nnz; z++ ) seq->pts[z] = seq->offsets[z] + IM_REGION_ADDR( ir, le, y ); switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: CONV_INT( unsigned char, IM_CLIP_UCHAR( sum, seq ) ); break; case IM_BANDFMT_CHAR: CONV_INT( signed char, IM_CLIP_CHAR( sum, seq ) ); break; case IM_BANDFMT_USHORT: CONV_INT( unsigned short, IM_CLIP_USHORT( sum, seq ) ); break; case IM_BANDFMT_SHORT: CONV_INT( signed short, IM_CLIP_SHORT( sum, seq ) ); break; case IM_BANDFMT_UINT: CONV_INT( unsigned int, IM_CLIP_NONE( sum, seq ) ); break; case IM_BANDFMT_INT: CONV_INT( signed int, IM_CLIP_NONE( sum, seq ) ); break; case IM_BANDFMT_FLOAT: case IM_BANDFMT_COMPLEX: CONV_FLOAT( float ); break; case IM_BANDFMT_DOUBLE: case IM_BANDFMT_DPCOMPLEX: CONV_FLOAT( double ); break; default: g_assert_not_reached(); } } VIPS_GATE_STOP( "conv_gen: work" ); return( 0 ); } /* INT inner loops. */ #define CONV3x3_INT( TYPE, IM_CLIP ) { \ TYPE * restrict p0 = (TYPE *) IM_REGION_ADDR( ir, le, y ); \ TYPE * restrict p1 = (TYPE *) IM_REGION_ADDR( ir, le, y + 1 ); \ TYPE * restrict p2 = (TYPE *) IM_REGION_ADDR( ir, le, y + 2 ); \ TYPE * restrict q = (TYPE *) IM_REGION_ADDR( or, le, y ); \ \ for( x = 0; x < sz; x++ ) { \ int sum; \ \ sum = 0; \ sum += m[0] * p0[0]; \ sum += m[1] * p0[bands]; \ sum += m[2] * p0[bands * 2]; \ sum += m[3] * p1[0]; \ sum += m[4] * p1[bands]; \ sum += m[5] * p1[bands * 2]; \ sum += m[6] * p2[0]; \ sum += m[7] * p2[bands]; \ sum += m[8] * p2[bands * 2]; \ \ p0 += 1; \ p1 += 1; \ p2 += 1; \ \ sum = ((sum + rounding) / mask->scale) + mask->offset; \ \ IM_CLIP; \ \ q[x] = sum; \ } \ } /* FLOAT inner loops. */ #define CONV3x3_FLOAT( TYPE ) { \ TYPE * restrict p0 = (TYPE *) IM_REGION_ADDR( ir, le, y ); \ TYPE * restrict p1 = (TYPE *) IM_REGION_ADDR( ir, le, y + 1 ); \ TYPE * restrict p2 = (TYPE *) IM_REGION_ADDR( ir, le, y + 2 ); \ TYPE * restrict q = (TYPE *) IM_REGION_ADDR( or, le, y ); \ \ for( x = 0; x < sz; x++ ) { \ double sum; \ \ sum = 0; \ sum += m[0] * p0[0]; \ sum += m[1] * p0[bands]; \ sum += m[2] * p0[bands * 2]; \ sum += m[3] * p1[0]; \ sum += m[4] * p1[bands]; \ sum += m[5] * p1[bands * 2]; \ sum += m[6] * p2[0]; \ sum += m[7] * p2[bands]; \ sum += m[8] * p2[bands * 2]; \ \ p0 += 1; \ p1 += 1; \ p2 += 1; \ \ sum = (sum / mask->scale) + mask->offset; \ \ q[x] = sum; \ } \ } /* 3x3 masks are very common, so we have a special path for them. This is * about 20% faster than the general convolver above. */ static int conv3x3_gen( REGION *or, void *vseq, void *a, void *b ) { ConvSequence *seq = (ConvSequence *) vseq; IMAGE *in = (IMAGE *) a; Conv *conv = (Conv *) b; REGION *ir = seq->ir; INTMASK *mask = conv->mask; int * restrict m = mask->coeff; /* You might think this should be (scale + 1) / 2, but then we'd be * adding one for scale == 1. */ int rounding = mask->scale / 2; Rect *r = &or->valid; int le = r->left; int to = r->top; int bo = IM_RECT_BOTTOM( r ); int sz = IM_REGION_N_ELEMENTS( or ) * (im_iscomplex( in ) ? 2 : 1); int bands = in->Bands; Rect s; int x, y; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += 2; s.height += 2; if( im_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "conv3x3_gen: work" ); for( y = to; y < bo; y++ ) { switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: CONV3x3_INT( unsigned char, IM_CLIP_UCHAR( sum, seq ) ); break; case IM_BANDFMT_CHAR: CONV3x3_INT( signed char, IM_CLIP_CHAR( sum, seq ) ); break; case IM_BANDFMT_USHORT: CONV3x3_INT( unsigned short, IM_CLIP_USHORT( sum, seq ) ); break; case IM_BANDFMT_SHORT: CONV3x3_INT( signed short, IM_CLIP_SHORT( sum, seq ) ); break; case IM_BANDFMT_UINT: CONV3x3_INT( unsigned int, IM_CLIP_NONE( sum, seq ) ); break; case IM_BANDFMT_INT: CONV3x3_INT( signed int, IM_CLIP_NONE( sum, seq ) ); break; case IM_BANDFMT_FLOAT: case IM_BANDFMT_COMPLEX: CONV3x3_FLOAT( float ); break; case IM_BANDFMT_DOUBLE: case IM_BANDFMT_DPCOMPLEX: CONV3x3_FLOAT( double ); break; default: g_assert_not_reached(); } } VIPS_GATE_STOP( "conv3x3_gen: work" ); return( 0 ); } /* The VipsVector codepath. */ static int convvec_gen( REGION *or, void *vseq, void *a, void *b ) { ConvSequence *seq = (ConvSequence *) vseq; IMAGE *in = (IMAGE *) a; Conv *conv = (Conv *) b; INTMASK *mask = conv->mask; REGION *ir = seq->ir; Rect *r = &or->valid; int sz = IM_REGION_N_ELEMENTS( or ) * (im_iscomplex( in ) ? 2 : 1); Rect s; int j, y; VipsExecutor convolve[MAX_PASS]; VipsExecutor clip; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); VIPS_GATE_START( "convvec_gen: work" ); for( j = 0; j < conv->n_pass; j++ ) vips_executor_set_program( &convolve[j], conv->pass[j].vector, sz ); vips_executor_set_program( &clip, conv->clip, sz ); for( y = 0; y < r->height; y++ ) { #ifdef DEBUG_PIXELS { int h, v; printf( "before convolve: %d, %d\n", r->left, r->top + y ); for( v = 0; v < mask->ysize; v++ ) { for( h = 0; h < mask->xsize; h++ ) printf( "%3d ", *IM_REGION_ADDR( ir, r->left + h, r->top + y + v ) ); printf( "\n" ); } } #endif /*DEBUG_PIXELS*/ for( j = 0; j < conv->n_pass; j++ ) { /* We always read from t1 and write to t2. */ vips_executor_set_scanline( &convolve[j], ir, r->left, r->top + y ); vips_executor_set_array( &convolve[j], conv->pass[j].r, seq->t1 ); vips_executor_set_destination( &convolve[j], seq->t2 ); vips_executor_run( &convolve[j] ); IM_SWAP( void *, seq->t1, seq->t2 ); } #ifdef DEBUG_PIXELS printf( "before clip: %d\n", ((signed short *) seq->t1)[0] ); #endif /*DEBUG_PIXELS*/ vips_executor_set_array( &clip, conv->s1, seq->t1 ); vips_executor_set_destination( &clip, IM_REGION_ADDR( or, r->left, r->top + y ) ); vips_executor_run( &clip ); #ifdef DEBUG_PIXELS printf( "after clip: %d\n", *IM_REGION_ADDR( or, r->left, r->top + y ) ); #endif /*DEBUG_PIXELS*/ } VIPS_GATE_STOP( "convvec_gen: work" ); return( 0 ); } int im_conv_raw( IMAGE *in, IMAGE *out, INTMASK *mask ) { Conv *conv; im_generate_fn generate; #ifdef DEBUG printf( "im_conv_raw: starting with matrix:\n" ); im_print_imask( mask ); #endif /*DEBUG*/ /* Check parameters. */ if( im_piocheck( in, out ) || im_check_uncoded( "im_conv", in ) || im_check_imask( "im_conv", mask ) ) return( -1 ); if( mask->scale == 0 ) { im_error( "im_conv", "%s", "mask scale must be non-zero" ); return( -1 ); } if( !(conv = conv_new( in, out, mask )) ) return( -1 ); /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ if( im_cp_desc( out, in ) ) return( -1 ); out->Xsize -= mask->xsize - 1; out->Ysize -= mask->ysize - 1; if( out->Xsize <= 0 || out->Ysize <= 0 ) { im_error( "im_conv", "%s", _( "image too small for mask" ) ); return( -1 ); } if( conv->n_pass ) { generate = convvec_gen; #ifdef DEBUG printf( "im_conv_raw: using vector path\n" ); #endif /*DEBUG*/ } else if( mask->xsize == 3 && mask->ysize == 3 ) { generate = conv3x3_gen; #ifdef DEBUG printf( "im_conv_raw: using 3x3 path\n" ); #endif /*DEBUG*/ } else { generate = conv_gen; #ifdef DEBUG printf( "im_conv_raw: using general path\n" ); #endif /*DEBUG*/ } if( im_demand_hint( out, IM_SMALLTILE, in, NULL ) || im_generate( out, conv_start, generate, conv_stop, in, conv ) ) return( -1 ); out->Xoffset = -mask->xsize / 2; out->Yoffset = -mask->ysize / 2; return( 0 ); } int im_conv( IMAGE *in, IMAGE *out, INTMASK *mask ) { IMAGE *t1 = im_open_local( out, "im_conv intermediate", "p" ); if( !t1 || im_embed( in, t1, 1, mask->xsize / 2, mask->ysize / 2, in->Xsize + mask->xsize - 1, in->Ysize + mask->ysize - 1 ) || im_conv_raw( t1, out, mask ) ) return( -1 ); out->Xoffset = 0; out->Yoffset = 0; return( 0 ); } vips-8.2.2/libvips/convolution/im_aconvsep.c0000664000175000017500000004674012651123116016136 00000000000000/* im_aconvsep ... separable approximate convolution * * This operation does an approximate, seperable convolution. * * Author: John Cupitt & Nicolas Robidoux * Written on: 31/5/11 * Modified on: * 31/5/11 * - from im_conv() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* See: http://incubator.quasimondo.com/processing/stackblur.pde This thing is a little like stackblur, but generalised to any separable mask. */ /* TODO - are we handling mask offset correctly? */ /* Show sample pixels as they are transformed. #define DEBUG_PIXELS */ /* #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include /* Maximum number of lines we can break the mask into. */ #define MAX_LINES (1000) /* Euclid's algorithm. Use this to common up mults. */ static int gcd( int a, int b ) { if( b == 0 ) return( abs( a ) ); else return( gcd( b, a % b ) ); } /* A set of lines. */ typedef struct _Lines { /* Copy of our arguments. */ IMAGE *in; IMAGE *out; DOUBLEMASK *mask; int n_layers; int area; int rounding; /* Start is the left-most pixel in the line, end is one beyond the * right-most pixel. */ int n_lines; int start[MAX_LINES]; int end[MAX_LINES]; int factor[MAX_LINES]; } Lines; static void lines_start( Lines *lines, int x, int factor ) { lines->start[lines->n_lines] = x; lines->factor[lines->n_lines] = factor; } static int lines_end( Lines *lines, int x ) { lines->end[lines->n_lines] = x; if( lines->n_lines >= MAX_LINES - 1 ) { vips_error( "im_aconvsep", "%s", _( "mask too complex" ) ); return( -1 ); } lines->n_lines += 1; return( 0 ); } /* Break a mask into lines. */ static Lines * lines_new( IMAGE *in, IMAGE *out, DOUBLEMASK *mask, int n_layers ) { const int width = mask->xsize * mask->ysize; Lines *lines; double max; double min; double depth; double sum; int layers_above; int layers_below; int z, n, x; /* Check parameters. */ if( im_piocheck( in, out ) || im_check_uncoded( "im_aconvsep", in ) || vips_check_dmask_1d( "im_aconvsep", mask ) ) return( NULL ); lines = VIPS_NEW( out, Lines ); lines->in = in; lines->out = out; if( !(lines->mask = (DOUBLEMASK *) im_local( out, (im_construct_fn) im_dup_dmask, (im_callback_fn) im_free_dmask, mask, mask->filename, NULL )) ) return( NULL ); lines->n_layers = n_layers; lines->n_lines = 0; VIPS_DEBUG_MSG( "lines_new: breaking into %d layers ...\n", n_layers ); /* Find mask range. We must always include the zero axis in the mask. */ max = 0; min = 0; for( x = 0; x < width; x++ ) { if( mask->coeff[x] > max ) max = mask->coeff[x]; if( mask->coeff[x] < min ) min = mask->coeff[x]; } /* The zero axis must fall on a layer boundary. Estimate the * depth, find n-lines-above-zero, get exact depth, then calculate a * fixed n-lines which includes any negative parts. */ depth = (max - min) / n_layers; layers_above = ceil( max / depth ); depth = max / layers_above; layers_below = floor( min / depth ); n_layers = layers_above - layers_below; VIPS_DEBUG_MSG( "depth = %g, n_layers = %d\n", depth, n_layers ); /* For each layer, generate a set of lines which are inside the * perimeter. Work down from the top. */ for( z = 0; z < n_layers; z++ ) { double y = max - (1 + z) * depth; /* y plus half depth ... ie. the layer midpoint. */ double y_ph = y + depth / 2; /* Odd, but we must avoid rounding errors that make us miss 0 * in the line above. */ int y_positive = z < layers_above; int inside; /* Start outside the perimeter. */ inside = 0; for( x = 0; x < width; x++ ) { /* The vertical line from mask[z] to 0 is inside. Is * our current square (x, y) part of that line? */ if( (y_positive && mask->coeff[x] >= y_ph) || (!y_positive && mask->coeff[x] <= y_ph) ) { if( !inside ) { lines_start( lines, x, y_positive ? 1 : -1 ); inside = 1; } } else { if( inside ) { if( lines_end( lines, x ) ) return( NULL ); inside = 0; } } } if( inside && lines_end( lines, width ) ) return( NULL ); } /* Can we common up any lines? Search for lines with identical * start/end. */ for( z = 0; z < lines->n_lines; z++ ) { for( n = z + 1; n < lines->n_lines; n++ ) { if( lines->start[z] == lines->start[n] && lines->end[z] == lines->end[n] ) { lines->factor[z] += lines->factor[n]; /* n can be deleted. Do this in a separate * pass below. */ lines->factor[n] = 0; } } } /* Now we can remove all factor 0 lines. */ for( z = 0; z < lines->n_lines; z++ ) { if( lines->factor[z] == 0 ) { for( x = z; x < lines->n_lines; x++ ) { lines->start[x] = lines->start[x + 1]; lines->end[x] = lines->end[x + 1]; lines->factor[x] = lines->factor[x + 1]; } lines->n_lines -= 1; } } /* Find the area of the lines. */ lines->area = 0; for( z = 0; z < lines->n_lines; z++ ) lines->area += lines->factor[z] * (lines->end[z] - lines->start[z]); /* Strength reduction: if all lines are divisible by n, we can move * that n out into the ->area factor. The aim is to produce as many * factor 1 lines as we can and to reduce the chance of overflow. */ x = lines->factor[0]; for( z = 1; z < lines->n_lines; z++ ) x = gcd( x, lines->factor[z] ); for( z = 0; z < lines->n_lines; z++ ) lines->factor[z] /= x; lines->area *= x; /* Find the area of the original mask. */ sum = 0; for( z = 0; z < width; z++ ) sum += mask->coeff[z]; lines->area = rint( sum * lines->area / mask->scale ); lines->rounding = (lines->area + 1) / 2 + mask->offset * lines->area; /* ASCII-art layer drawing. printf( "lines:\n" ); for( z = 0; z < lines->n_lines; z++ ) { printf( "%3d - %2d x ", z, lines->factor[z] ); for( x = 0; x < 55; x++ ) { int rx = x * (width + 1) / 55; if( rx >= lines->start[z] && rx < lines->end[z] ) printf( "#" ); else printf( " " ); } printf( " %3d .. %3d\n", lines->start[z], lines->end[z] ); } printf( "area = %d\n", lines->area ); printf( "rounding = %d\n", lines->rounding ); */ return( lines ); } /* Our sequence value. */ typedef struct { Lines *lines; REGION *ir; /* Input region */ int *start; /* Offsets for start and stop */ int *end; /* The sums for each line. int for integer types, double for floating * point types. */ void *sum; int last_stride; /* Avoid recalcing offsets, if we can */ } AConvSep; /* Free a sequence value. */ static int aconvsep_stop( void *vseq, void *a, void *b ) { AConvSep *seq = (AConvSep *) vseq; IM_FREEF( im_region_free, seq->ir ); return( 0 ); } /* Convolution start function. */ static void * aconvsep_start( IMAGE *out, void *a, void *b ) { IMAGE *in = (IMAGE *) a; Lines *lines = (Lines *) b; AConvSep *seq; if( !(seq = IM_NEW( out, AConvSep )) ) return( NULL ); /* Init! */ seq->lines = lines; seq->ir = im_region_create( in ); seq->start = IM_ARRAY( out, lines->n_lines, int ); seq->end = IM_ARRAY( out, lines->n_lines, int ); if( vips_band_format_isint( out->BandFmt ) ) seq->sum = IM_ARRAY( out, lines->n_lines, int ); else seq->sum = IM_ARRAY( out, lines->n_lines, double ); seq->last_stride = -1; if( !seq->ir || !seq->start || !seq->end || !seq->sum ) { aconvsep_stop( seq, in, lines ); return( NULL ); } return( seq ); } #define CLIP_UCHAR( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > UCHAR_MAX ) \ (V) = UCHAR_MAX; \ } G_STMT_END #define CLIP_CHAR( V ) \ G_STMT_START { \ if( (V) < SCHAR_MIN ) \ (V) = SCHAR_MIN; \ else if( (V) > SCHAR_MAX ) \ (V) = SCHAR_MAX; \ } G_STMT_END #define CLIP_USHORT( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > USHRT_MAX ) \ (V) = USHRT_MAX; \ } G_STMT_END #define CLIP_SHORT( V ) \ G_STMT_START { \ if( (V) < SHRT_MIN ) \ (V) = SHRT_MIN; \ else if( (V) > SHRT_MAX ) \ (V) = SHRT_MAX; \ } G_STMT_END #define CLIP_NONE( V ) {} /* The h and v loops are very similar, but also annoyingly different. Keep * them separate for easy debugging. */ #define HCONV_INT( TYPE, CLIP ) { \ for( i = 0; i < bands; i++ ) { \ int *seq_sum = (int *) seq->sum; \ \ TYPE *q; \ TYPE *p; \ int sum; \ \ p = i + (TYPE *) IM_REGION_ADDR( ir, r->left, r->top + y ); \ q = i + (TYPE *) IM_REGION_ADDR( or, r->left, r->top + y ); \ \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ seq_sum[z] = 0; \ for( x = lines->start[z]; x < lines->end[z]; x++ ) \ seq_sum[z] += p[x * istride]; \ sum += lines->factor[z] * seq_sum[z]; \ } \ sum = (sum + lines->rounding) / lines->area; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ \ for( x = 1; x < r->width; x++ ) { \ sum = 0; \ for( z = 0; z < n_lines; z++ ) { \ seq_sum[z] += p[seq->end[z]]; \ seq_sum[z] -= p[seq->start[z]]; \ sum += lines->factor[z] * seq_sum[z]; \ } \ p += istride; \ sum = (sum + lines->rounding) / lines->area; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ } \ } \ } #define HCONV_FLOAT( TYPE ) { \ for( i = 0; i < bands; i++ ) { \ double *seq_sum = (double *) seq->sum; \ \ TYPE *q; \ TYPE *p; \ double sum; \ \ p = i + (TYPE *) IM_REGION_ADDR( ir, r->left, r->top + y ); \ q = i + (TYPE *) IM_REGION_ADDR( or, r->left, r->top + y ); \ \ sum = 0; \ for( z = 0; z < lines->n_lines; z++ ) { \ seq_sum[z] = 0; \ for( x = lines->start[z]; x < lines->end[z]; x++ ) \ seq_sum[z] += p[x * istride]; \ sum += lines->factor[z] * seq_sum[z]; \ } \ sum = sum / lines->area + mask->offset; \ *q = sum; \ q += ostride; \ \ for( x = 1; x < r->width; x++ ) { \ sum = 0; \ for( z = 0; z < lines->n_lines; z++ ) { \ seq_sum[z] += p[seq->end[z]]; \ seq_sum[z] -= p[seq->start[z]]; \ sum += lines->factor[z] * seq_sum[z]; \ } \ p += istride; \ sum = sum / lines->area + mask->offset; \ *q = sum; \ q += ostride; \ } \ } \ } /* Do horizontal masks ... we scan the mask along scanlines. */ static int aconvsep_generate_horizontal( REGION *or, void *vseq, void *a, void *b ) { AConvSep *seq = (AConvSep *) vseq; IMAGE *in = (IMAGE *) a; Lines *lines = (Lines *) b; REGION *ir = seq->ir; const int n_lines = lines->n_lines; DOUBLEMASK *mask = lines->mask; Rect *r = &or->valid; /* Double the bands (notionally) for complex. */ int bands = vips_band_format_iscomplex( in->BandFmt ) ? 2 * in->Bands : in->Bands; Rect s; int x, y, z, i; int istride; int ostride; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); /* Stride can be different for the vertical case, keep this here for * ease of direction change. */ istride = IM_IMAGE_SIZEOF_PEL( in ) / IM_IMAGE_SIZEOF_ELEMENT( in ); ostride = IM_IMAGE_SIZEOF_PEL( lines->out ) / IM_IMAGE_SIZEOF_ELEMENT( lines->out ); /* Init offset array. */ if( seq->last_stride != istride ) { seq->last_stride = istride; for( z = 0; z < n_lines; z++ ) { seq->start[z] = lines->start[z] * istride; seq->end[z] = lines->end[z] * istride; } } for( y = 0; y < r->height; y++ ) { switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: HCONV_INT( unsigned char, CLIP_UCHAR ); break; case IM_BANDFMT_CHAR: HCONV_INT( signed char, CLIP_UCHAR ); break; case IM_BANDFMT_USHORT: HCONV_INT( unsigned short, CLIP_USHORT ); break; case IM_BANDFMT_SHORT: HCONV_INT( signed short, CLIP_SHORT ); break; case IM_BANDFMT_UINT: HCONV_INT( unsigned int, CLIP_NONE ); break; case IM_BANDFMT_INT: HCONV_INT( signed int, CLIP_NONE ); break; case IM_BANDFMT_FLOAT: HCONV_FLOAT( float ); break; case IM_BANDFMT_DOUBLE: HCONV_FLOAT( double ); break; case IM_BANDFMT_COMPLEX: HCONV_FLOAT( float ); break; case IM_BANDFMT_DPCOMPLEX: HCONV_FLOAT( double ); break; default: g_assert_not_reached(); } } return( 0 ); } #define VCONV_INT( TYPE, CLIP ) { \ for( x = 0; x < sz; x++ ) { \ int *seq_sum = (int *) seq->sum; \ \ TYPE *q; \ TYPE *p; \ int sum; \ \ p = x + (TYPE *) IM_REGION_ADDR( ir, r->left, r->top ); \ q = x + (TYPE *) IM_REGION_ADDR( or, r->left, r->top ); \ \ sum = 0; \ for( z = 0; z < lines->n_lines; z++ ) { \ seq_sum[z] = 0; \ for( y = lines->start[z]; y < lines->end[z]; y++ ) \ seq_sum[z] += p[y * istride]; \ sum += lines->factor[z] * seq_sum[z]; \ } \ sum = (sum + lines->rounding) / lines->area; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ \ for( y = 1; y < r->height; y++ ) { \ sum = 0; \ for( z = 0; z < lines->n_lines; z++ ) { \ seq_sum[z] += p[seq->end[z]]; \ seq_sum[z] -= p[seq->start[z]]; \ sum += lines->factor[z] * seq_sum[z]; \ } \ p += istride; \ sum = (sum + lines->rounding) / lines->area; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ } \ } \ } #define VCONV_FLOAT( TYPE ) { \ for( x = 0; x < sz; x++ ) { \ double *seq_sum = (double *) seq->sum; \ \ TYPE *q; \ TYPE *p; \ double sum; \ \ p = x + (TYPE *) IM_REGION_ADDR( ir, r->left, r->top ); \ q = x + (TYPE *) IM_REGION_ADDR( or, r->left, r->top ); \ \ sum = 0; \ for( z = 0; z < lines->n_lines; z++ ) { \ seq_sum[z] = 0; \ for( y = lines->start[z]; y < lines->end[z]; y++ ) \ seq_sum[z] += p[y * istride]; \ sum += lines->factor[z] * seq_sum[z]; \ } \ sum = sum / lines->area + mask->offset; \ *q = sum; \ q += ostride; \ \ for( y = 1; y < r->height; y++ ) { \ sum = 0; \ for( z = 0; z < lines->n_lines; z++ ) { \ seq_sum[z] += p[seq->end[z]]; \ seq_sum[z] -= p[seq->start[z]]; \ sum += lines->factor[z] * seq_sum[z]; \ } \ p += istride; \ sum = sum / lines->area + mask->offset; \ *q = sum; \ q += ostride; \ } \ } \ } /* Do vertical masks ... we scan the mask down columns of pixels. Copy-paste * from above with small changes. */ static int aconvsep_generate_vertical( REGION *or, void *vseq, void *a, void *b ) { AConvSep *seq = (AConvSep *) vseq; IMAGE *in = (IMAGE *) a; Lines *lines = (Lines *) b; REGION *ir = seq->ir; const int n_lines = lines->n_lines; DOUBLEMASK *mask = lines->mask; Rect *r = &or->valid; /* Double the width (notionally) for complex. */ int sz = vips_band_format_iscomplex( in->BandFmt ) ? 2 * IM_REGION_N_ELEMENTS( or ) : IM_REGION_N_ELEMENTS( or ); Rect s; int x, y, z; int istride; int ostride; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); /* Stride can be different for the vertical case, keep this here for * ease of direction change. */ istride = IM_REGION_LSKIP( ir ) / IM_IMAGE_SIZEOF_ELEMENT( lines->in ); ostride = IM_REGION_LSKIP( or ) / IM_IMAGE_SIZEOF_ELEMENT( lines->out ); /* Init offset array. */ if( seq->last_stride != istride ) { seq->last_stride = istride; for( z = 0; z < n_lines; z++ ) { seq->start[z] = lines->start[z] * istride; seq->end[z] = lines->end[z] * istride; } } switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: VCONV_INT( unsigned char, CLIP_UCHAR ); break; case IM_BANDFMT_CHAR: VCONV_INT( signed char, CLIP_UCHAR ); break; case IM_BANDFMT_USHORT: VCONV_INT( unsigned short, CLIP_USHORT ); break; case IM_BANDFMT_SHORT: VCONV_INT( signed short, CLIP_SHORT ); break; case IM_BANDFMT_UINT: VCONV_INT( unsigned int, CLIP_NONE ); break; case IM_BANDFMT_INT: VCONV_INT( signed int, CLIP_NONE ); break; case IM_BANDFMT_FLOAT: VCONV_FLOAT( float ); break; case IM_BANDFMT_DOUBLE: VCONV_FLOAT( double ); break; case IM_BANDFMT_COMPLEX: VCONV_FLOAT( float ); break; case IM_BANDFMT_DPCOMPLEX: VCONV_FLOAT( double ); break; default: g_assert_not_reached(); } return( 0 ); } static int aconvsep_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask, int n_layers ) { Lines *lines; im_generate_fn generate; #ifdef DEBUG printf( "aconvsep_raw: starting with matrix:\n" ); im_print_dmask( mask ); #endif /*DEBUG*/ if( !(lines = lines_new( in, out, mask, n_layers )) ) return( -1 ); /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ if( im_cp_desc( out, in ) ) return( -1 ); out->Xsize -= mask->xsize - 1; out->Ysize -= mask->ysize - 1; if( out->Xsize <= 0 || out->Ysize <= 0 ) { im_error( "im_aconvsep", "%s", _( "image too small for mask" ) ); return( -1 ); } if( mask->xsize == 1 ) generate = aconvsep_generate_vertical; else generate = aconvsep_generate_horizontal; if( im_demand_hint( out, IM_SMALLTILE, in, NULL ) || im_generate( out, aconvsep_start, generate, aconvsep_stop, in, lines ) ) return( -1 ); out->Xoffset = -mask->xsize / 2; out->Yoffset = -mask->ysize / 2; return( 0 ); } /** * im_aconvsep: * @in: input image * @out: output image * @mask: convolution mask * @n_layers: number of layers for approximation * * Perform an approximate separable convolution of @in with @mask. * * The mask must be 1xn or nx1 elements. * The output image * always has the same #VipsBandFormat as the input image. * * The image is convolved twice: once with @mask and then again with @mask * rotated by 90 degrees. * * Larger values for @n_layers give more accurate * results, but are slower. As @n_layers approaches the mask radius, the * accuracy will become close to exact convolution and the speed will drop to * match. For many large masks, such as Gaussian, @n_layers need be only 10% of * this value and accuracy will still be good. * * See also: im_convsep_f(), im_create_dmaskv(). * * Returns: 0 on success, -1 on error */ int im_aconvsep( IMAGE *in, IMAGE *out, DOUBLEMASK *mask, int n_layers ) { IMAGE *t[2]; const int n_mask = mask->xsize * mask->ysize; DOUBLEMASK *rmask; if( im_open_local_array( out, t, 2, "im_aconvsep", "p" ) || !(rmask = (DOUBLEMASK *) im_local( out, (im_construct_fn) im_dup_dmask, (im_callback_fn) im_free_dmask, mask, mask->filename, NULL )) ) return( -1 ); rmask->xsize = mask->ysize; rmask->ysize = mask->xsize; /* */ if( im_embed( in, t[0], 1, n_mask / 2, n_mask / 2, in->Xsize + n_mask - 1, in->Ysize + n_mask - 1 ) || aconvsep_raw( t[0], t[1], mask, n_layers ) || aconvsep_raw( t[1], out, rmask, n_layers ) ) return( -1 ); /* For testing .. just try one direction. if( aconvsep_raw( in, out, mask, n_layers ) ) return( -1 ); */ out->Xoffset = 0; out->Yoffset = 0; return( 0 ); } vips-8.2.2/libvips/convolution/im_aconv.c0000664000175000017500000007007312651123113015417 00000000000000/* im_aconv ... approximate convolution * * This operation does an approximate convolution. * * Author: John Cupitt & Nicolas Robidoux * Written on: 31/5/11 * Modified on: * 31/5/11 * - from im_aconvsep() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* See: http://incubator.quasimondo.com/processing/stackblur.pde This thing is a little like stackblur, but generalised to any 2D convolution. */ /* TODO timing: $ time vips im_conv_f img_0075.jpg x2.v g2d201.con real 5m3.359s user 9m34.700s sys 0m1.500s $ time vips im_aconv img_0075.jpg x.v g2d201.con 10 10 real 0m3.151s user 0m5.640s sys 0m0.100s $ vips im_subtract x.v x2.v diff.v $ vips im_abs diff.v abs.v $ vips im_max abs.v 2.70833 - are we handling mask offset correctly? */ /* #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include /* Maximum number of boxes we can break the mask into. */ #define MAX_LINES (10000) /* The number of edges we consider at once in clustering. Higher values are * faster, but risk pushing up average error in the result. */ #define MAX_EDGES (1000) /* Get an (x,y) value from a mask. */ #define MASK( M, X, Y ) ((M)->coeff[(X) + (Y) * (M)->xsize]) /* A horizontal line in the mask. */ typedef struct _HLine { /* Start is the left-most pixel in the line, end is one beyond the * right-most pixel. */ int start; int end; /* The hlines have weights. weight 0 means this line is unused. */ int weight; } HLine; /* For clustering. A pair of hlines and their distance. An edge in a graph. */ typedef struct _Edge { /* The index into boxes->hline[]. */ int a; int b; /* The distance between them, see boxes_distance(). */ int d; } Edge; /* An element of a vline. */ typedef struct _VElement { /* band is the index into hline[] we add, row is the row we take * it from. */ int band; int row; /* Negative lobes are made with factor -1, we also common-up repeated * additions of the same line. */ int factor; } VElement; /* A vline. */ typedef struct _VLine { int band; int factor; int start; int end; } VLine; /* A set of boxes. */ typedef struct _Boxes { /* Copy of our arguments. */ IMAGE *in; IMAGE *out; DOUBLEMASK *mask; int n_layers; int cluster; int area; int rounding; /* The horizontal lines we gather. hline[3] writes to band 3 in the * intermediate image. max_line is the length of the longest hline: * over 256 and we need to use an int intermediate for 8-bit images. */ int n_hline; HLine hline[MAX_LINES]; int max_line; /* During clustering, the top few edges we are considering. */ Edge edge[MAX_EDGES]; /* Scale and sum a set of hlines to make the final value. */ int n_velement; VElement velement[MAX_LINES]; /* And group those velements as vlines. */ int n_vline; VLine vline[MAX_LINES]; } Boxes; /* Euclid's algorithm. Use this to common up mults. */ static int gcd( int a, int b ) { if( b == 0 ) return( abs( a ) ); else return( gcd( b, a % b ) ); } static void boxes_start( Boxes *boxes, int x ) { boxes->hline[boxes->n_hline].start = x; boxes->hline[boxes->n_hline].weight = 1; } static int boxes_end( Boxes *boxes, int x, int y, int factor ) { boxes->hline[boxes->n_hline].end = x; boxes->velement[boxes->n_velement].row = y; boxes->velement[boxes->n_velement].band = boxes->n_hline; boxes->velement[boxes->n_velement].factor = factor; if( boxes->n_hline >= MAX_LINES - 1 ) { vips_error( "im_aconv", "%s", _( "mask too complex" ) ); return( -1 ); } boxes->n_hline += 1; if( boxes->n_velement >= MAX_LINES - 1 ) { vips_error( "im_aconv", "%s", _( "mask too complex" ) ); return( -1 ); } boxes->n_velement += 1; return( 0 ); } #ifdef DEBUG static void boxes_hprint( Boxes *boxes ) { int x, y; printf( "hlines:\n" ); printf( " n b r f w\n" ); for( y = 0; y < boxes->n_velement; y++ ) { int b = boxes->velement[y].band; printf( "%4d %3d %3d %2d %3d ", y, b, boxes->velement[y].row, boxes->velement[y].factor, boxes->hline[b].weight ); for( x = 0; x < 45; x++ ) { int rx = x * (boxes->mask->xsize + 1) / 45; if( rx >= boxes->hline[b].start && rx < boxes->hline[b].end ) printf( "#" ); else printf( " " ); } printf( " %3d .. %3d\n", boxes->hline[b].start, boxes->hline[b].end ); } } static void boxes_vprint( Boxes *boxes ) { int y; printf( "%d vlines:\n", boxes->n_vline ); printf( " n b f s e\n" ); for( y = 0; y < boxes->n_vline; y++ ) printf( "%4d %2d %2d == %3d .. %3d\n", y, boxes->vline[y].band, boxes->vline[y].factor, boxes->vline[y].start, boxes->vline[y].end ); printf( "area = %d\n", boxes->area ); printf( "rounding = %d\n", boxes->rounding ); printf( "max_line = %d\n", boxes->max_line ); } #endif /*DEBUG*/ /* Break the mask into a set of lines. */ static int boxes_break( Boxes *boxes ) { DOUBLEMASK *mask = boxes->mask; const int size = mask->xsize * mask->ysize; double max; double min; double depth; int layers_above; int layers_below; int z, n, x, y; /* Find mask range. We must always include the zero axis in the mask. */ max = 0; min = 0; for( n = 0; n < size; n++ ) { max = IM_MAX( max, mask->coeff[n] ); min = IM_MIN( min, mask->coeff[n] ); } VIPS_DEBUG_MSG( "boxes_new: min = %g, max = %g\n", min, max ); /* The zero axis must fall on a layer boundary. Estimate the * depth, find n-lines-above-zero, get exact depth, then calculate a * fixed n-lines which includes any negative parts. */ depth = (max - min) / boxes->n_layers; layers_above = VIPS_CEIL( max / depth ); depth = max / layers_above; layers_below = VIPS_FLOOR( min / depth ); boxes->n_layers = layers_above - layers_below; VIPS_DEBUG_MSG( "boxes_new: depth = %g, n_layers = %d\n", depth, boxes->n_layers ); /* For each layer, generate a set of lines which are inside the * perimeter. Work down from the top. */ for( z = 0; z < boxes->n_layers; z++ ) { /* How deep we are into the mask, as a double we can test * against. Add half the layer depth so we can easily find >50% * mask elements. */ double z_ph = max - (1 + z) * depth + depth / 2; /* Odd, but we must avoid rounding errors that make us miss 0 * in the line above. */ int z_positive = z < layers_above; for( y = 0; y < mask->ysize; y++ ) { int inside; /* Start outside the perimeter. */ inside = 0; for( x = 0; x < mask->xsize; x++ ) { double coeff = MASK( mask, x, y ); /* The vertical line from mask[x, y] to 0 is * inside. Is our current square (x, y) part * of that line? */ if( (z_positive && coeff >= z_ph) || (!z_positive && coeff <= z_ph) ) { if( !inside ) { boxes_start( boxes, x ); inside = 1; } } else { if( inside ) { if( boxes_end( boxes, x, y, z_positive ? 1 : -1 ) ) return( -1 ); inside = 0; } } } if( inside && boxes_end( boxes, mask->xsize, y, z_positive ? 1 : -1 ) ) return( -1 ); } } #ifdef DEBUG VIPS_DEBUG_MSG( "boxes_new: generated %d boxes\n", boxes->n_hline ); boxes_hprint( boxes ); #endif /*DEBUG*/ return( 0 ); } /* The 'distance' between a pair of hlines. */ static int boxes_distance( Boxes *boxes, int a, int b ) { g_assert( boxes->hline[a].weight > 0 && boxes->hline[b].weight > 0 ); return( abs( boxes->hline[a].start - boxes->hline[b].start ) + abs( boxes->hline[a].end - boxes->hline[b].end ) ); } /* Merge two hlines. Line b is deleted, and any refs to b in vlines updated to * point at a. */ static void boxes_merge( Boxes *boxes, int a, int b ) { int i; /* Scale weights. */ int fa = boxes->hline[a].weight; int fb = boxes->hline[b].weight; double w = (double) fb / (fa + fb); /* New endpoints. */ boxes->hline[a].start += w * (boxes->hline[b].start - boxes->hline[a].start); boxes->hline[a].end += w * (boxes->hline[b].end - boxes->hline[a].end); boxes->hline[a].weight += boxes->hline[b].weight; /* Update velement refs to b to refer to a instead. */ for( i = 0; i < boxes->n_velement; i++ ) if( boxes->velement[i].band == b ) boxes->velement[i].band = a; /* Mark b to be deleted. */ boxes->hline[b].weight = 0; } static int edge_sortfn( const void *p1, const void *p2 ) { Edge *a = (Edge *) p1; Edge *b = (Edge *) p2; return( a->d - b->d ); } /* Cluster in batches. Return non-zero if we merged some lines. * * This is not as accurate as rescanning the whole space on every merge, but * it's far faster. */ static int boxes_cluster2( Boxes *boxes, int cluster ) { int i, j, k; int worst; int worst_i; int merged; for( i = 0; i < MAX_EDGES; i++ ) { boxes->edge[i].a = -1; boxes->edge[i].b = -1; boxes->edge[i].d = 99999; } worst_i = 0; worst = boxes->edge[worst_i].d; for( i = 0; i < boxes->n_hline; i++ ) { if( boxes->hline[i].weight == 0 ) continue; for( j = i + 1; j < boxes->n_hline; j++ ) { int distance; if( boxes->hline[j].weight == 0 ) continue; distance = boxes_distance( boxes, i, j ); if( distance < worst ) { boxes->edge[worst_i].a = i; boxes->edge[worst_i].b = j; boxes->edge[worst_i].d = distance; worst_i = 0; worst = boxes->edge[worst_i].d; for( k = 0; k < MAX_EDGES; k++ ) if( boxes->edge[k].d > worst ) { worst = boxes->edge[k].d; worst_i = k; } } } } /* Sort to get closest first. */ qsort( boxes->edge, MAX_EDGES, sizeof( Edge ), edge_sortfn ); /* printf( "edges:\n" ); printf( " n a b d:\n" ); for( i = 0; i < MAX_EDGES; i++ ) printf( "%2i) %3d %3d %3d\n", i, boxes->edge[i].a, boxes->edge[i].b, boxes->edge[i].d ); */ /* Merge from the top down. */ merged = 0; for( k = 0; k < MAX_EDGES; k++ ) { Edge *edge = &boxes->edge[k]; if( edge->d > cluster ) break; /* Has been removed, see loop below. */ if( edge->a == -1 ) continue; boxes_merge( boxes, edge->a, edge->b ); merged = 1; /* Nodes a and b have vanished or been moved. Remove any edges * which refer to them from the edge list, */ for( i = k; i < MAX_EDGES; i++ ) { Edge *edgei = &boxes->edge[i]; if( edgei->a == edge->a || edgei->b == edge->a || edgei->a == edge->b || edgei->b == edge->b ) edgei->a = -1; } } return( merged ); } /* Renumber after clustering. We will have removed a lot of hlines ... shuffle * the rest down, adjust all the vline references. */ static void boxes_renumber( Boxes *boxes ) { int i, j; VIPS_DEBUG_MSG( "boxes_renumber: renumbering ...\n" ); /* Loop for all zero-weight hlines. */ for( i = 0; i < boxes->n_hline; ) { if( boxes->hline[i].weight > 0 ) { i++; continue; } /* We move hlines i + 1 down, so we need to adjust all * band[] refs to match. */ for( j = 0; j < boxes->n_velement; j++ ) if( boxes->velement[j].band > i ) boxes->velement[j].band -= 1; memmove( boxes->hline + i, boxes->hline + i + 1, sizeof( HLine ) * (boxes->n_hline - i - 1) ); boxes->n_hline -= 1; } VIPS_DEBUG_MSG( "boxes_renumber: ... %d hlines remain\n", boxes->n_hline ); } /* Sort by band, then factor, then row. */ static int velement_sortfn( const void *p1, const void *p2 ) { VElement *a = (VElement *) p1; VElement *b = (VElement *) p2; if( a->band != b->band ) return( a->band - b->band ); if( a->factor != b->factor ) return( a->factor - b->factor ); return( a->row - b->row ); } static void boxes_vline( Boxes *boxes ) { int y, z; VIPS_DEBUG_MSG( "boxes_vline: forming vlines ...\n" ); /* Sort to get elements which could form a vline together. */ qsort( boxes->velement, boxes->n_velement, sizeof( VElement ), velement_sortfn ); #ifdef DEBUG boxes_hprint( boxes ); #endif /*DEBUG*/ /* If two lines have the same row and band, we can join them and knock * up the factor instead. */ for( y = 0; y < boxes->n_velement; y++ ) { for( z = y + 1; z < boxes->n_velement; z++ ) if( boxes->velement[z].band != boxes->velement[y].band || boxes->velement[z].row != boxes->velement[y].row ) break; boxes->velement[y].factor = z - y; memmove( boxes->velement + y + 1, boxes->velement + z, sizeof( VElement ) * (boxes->n_velement - z) ); boxes->n_velement -= z - y - 1; } #ifdef DEBUG printf( "after commoning up, %d velement remain\n", boxes->n_velement ); boxes_hprint( boxes ); #endif /*DEBUG*/ boxes->n_vline = 0; for( y = 0; y < boxes->n_velement; ) { int n = boxes->n_vline; /* Start of a line. */ boxes->vline[n].band = boxes->velement[y].band; boxes->vline[n].factor = boxes->velement[y].factor; boxes->vline[n].start = boxes->velement[y].row; /* Search for the end of this line. */ for( z = y + 1; z < boxes->n_velement; z++ ) if( boxes->velement[z].band != boxes->vline[n].band || boxes->velement[z].factor != boxes->vline[n].factor || boxes->velement[z].row != boxes->vline[n].start + z - y ) break; /* So the line ends at the previously examined element. We * want 'end' to be one beyond that (non-inclusive). */ boxes->vline[n].end = boxes->velement[z - 1].row + 1; boxes->n_vline += 1; y = z; } VIPS_DEBUG_MSG( "boxes_vline: found %d vlines\n", boxes->n_vline ); } /* Break a mask into boxes. */ static Boxes * boxes_new( IMAGE *in, IMAGE *out, DOUBLEMASK *mask, int n_layers, int cluster ) { const int size = mask->xsize * mask->ysize; Boxes *boxes; double sum; int x, y, z; /* Check parameters. */ if( im_piocheck( in, out ) || im_check_uncoded( "im_aconv", in ) || vips_check_dmask( "im_aconv", mask ) ) return( NULL ); boxes = VIPS_NEW( out, Boxes ); boxes->in = in; boxes->out = out; if( !(boxes->mask = (DOUBLEMASK *) im_local( out, (im_construct_fn) im_dup_dmask, (im_callback_fn) im_free_dmask, mask, mask->filename, NULL )) ) return( NULL ); boxes->n_layers = n_layers; boxes->cluster = cluster; boxes->n_hline = 0; boxes->n_velement = 0; boxes->n_vline = 0; /* Break into a set of hlines. */ if( boxes_break( boxes ) ) return( NULL ); /* Cluster to find groups of lines. */ VIPS_DEBUG_MSG( "boxes_new: clustering with thresh %d ...\n", cluster ); while( boxes_cluster2( boxes, cluster ) ) ; /* Renumber to remove holes created by clustering. */ boxes_renumber( boxes ); /* Find a set of vlines for the remaining hlines. */ boxes_vline( boxes ); /* Find the area of the lines and the length of the longest hline. */ boxes->area = 0; boxes->max_line = 0; for( y = 0; y < boxes->n_velement; y++ ) { x = boxes->velement[y].band; z = boxes->hline[x].end - boxes->hline[x].start; boxes->area += boxes->velement[y].factor * z; if( z > boxes->max_line ) boxes->max_line = z; } /* Strength reduction: if all lines are divisible by n, we can move * that n out into the ->area factor. The aim is to produce as many * factor 1 lines as we can and to reduce the chance of overflow. */ x = boxes->velement[0].factor; for( y = 1; y < boxes->n_velement; y++ ) x = gcd( x, boxes->velement[y].factor ); for( y = 0; y < boxes->n_velement; y++ ) boxes->velement[y].factor /= x; boxes->area *= x; /* Find the area of the original mask. */ sum = 0; for( z = 0; z < size; z++ ) sum += mask->coeff[z]; boxes->area = rint( sum * boxes->area / mask->scale ); boxes->rounding = (boxes->area + 1) / 2 + mask->offset * boxes->area; #ifdef DEBUG boxes_hprint( boxes ); boxes_vprint( boxes ); #endif /*DEBUG*/ /* With 512x512 tiles, each hline requires 3mb of intermediate per * thread ... 300 lines is about a gb per thread, ouch. */ if( boxes->n_hline > 150 ) { im_error( "im_aconv", "%s", _( "mask too complex" ) ); return( NULL ); } return( boxes ); } /* Our sequence value. */ typedef struct { Boxes *boxes; REGION *ir; /* Input region */ /* Offsets for start and stop. */ int *start; int *end; int last_stride; /* Avoid recalcing offsets, if we can */ /* The rolling sums. int for integer types, double for floating point * types. */ void *sum; } AConvSequence; /* Free a sequence value. */ static int aconv_stop( void *vseq, void *a, void *b ) { AConvSequence *seq = (AConvSequence *) vseq; IM_FREEF( im_region_free, seq->ir ); return( 0 ); } /* Convolution start function. */ static void * aconv_start( IMAGE *out, void *a, void *b ) { IMAGE *in = (IMAGE *) a; Boxes *boxes = (Boxes *) b; AConvSequence *seq; if( !(seq = IM_NEW( out, AConvSequence )) ) return( NULL ); /* Init! */ seq->boxes = boxes; seq->ir = im_region_create( in ); /* n_velement should be the largest possible dimension. */ g_assert( boxes->n_velement >= boxes->n_hline ); g_assert( boxes->n_velement >= boxes->n_vline ); seq->start = IM_ARRAY( out, boxes->n_velement, int ); seq->end = IM_ARRAY( out, boxes->n_velement, int ); if( vips_band_format_isint( out->BandFmt ) ) seq->sum = IM_ARRAY( out, boxes->n_velement, int ); else seq->sum = IM_ARRAY( out, boxes->n_velement, double ); seq->last_stride = -1; if( !seq->ir || !seq->start || !seq->end || !seq->sum ) { aconv_stop( seq, in, boxes ); return( NULL ); } return( seq ); } /* The h and v loops are very similar, but also annoyingly different. Keep * them separate for easy debugging. */ #define HCONV( IN, OUT ) \ G_STMT_START { \ for( i = 0; i < bands; i++ ) { \ OUT *seq_sum = (OUT *) seq->sum; \ \ IN *p; \ OUT *q; \ \ p = i + (IN *) IM_REGION_ADDR( ir, r->left, r->top + y ); \ q = i * n_hline + \ (OUT *) IM_REGION_ADDR( or, r->left, r->top + y ); \ \ for( z = 0; z < n_hline; z++ ) { \ seq_sum[z] = 0; \ for( x = boxes->hline[z].start; \ x < boxes->hline[z].end; x++ ) \ seq_sum[z] += p[x * istride]; \ q[z] = seq_sum[z]; \ } \ q += ostride; \ \ for( x = 1; x < r->width; x++ ) { \ for( z = 0; z < n_hline; z++ ) { \ seq_sum[z] += p[seq->end[z]]; \ seq_sum[z] -= p[seq->start[z]]; \ q[z] = seq_sum[z]; \ } \ p += istride; \ q += ostride; \ } \ } \ } G_STMT_END /* Do horizontal masks ... we scan the mask along scanlines. */ static int aconv_hgenerate( REGION *or, void *vseq, void *a, void *b ) { AConvSequence *seq = (AConvSequence *) vseq; IMAGE *in = (IMAGE *) a; Boxes *boxes = (Boxes *) b; REGION *ir = seq->ir; const int n_hline = boxes->n_hline; DOUBLEMASK *mask = boxes->mask; Rect *r = &or->valid; /* Double the bands (notionally) for complex. */ int bands = vips_band_format_iscomplex( in->BandFmt ) ? 2 * in->Bands : in->Bands; Rect s; int x, y, z, i; int istride; int ostride; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; if( im_prepare( ir, &s ) ) return( -1 ); istride = IM_IMAGE_SIZEOF_PEL( in ) / IM_IMAGE_SIZEOF_ELEMENT( in ); ostride = IM_IMAGE_SIZEOF_PEL( or->im ) / IM_IMAGE_SIZEOF_ELEMENT( or->im ); /* Init offset array. */ if( seq->last_stride != istride ) { seq->last_stride = istride; for( z = 0; z < n_hline; z++ ) { seq->start[z] = boxes->hline[z].start * istride; seq->end[z] = boxes->hline[z].end * istride; } } for( y = 0; y < r->height; y++ ) { switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: if( boxes->max_line > 256 ) HCONV( unsigned char, unsigned int ); else HCONV( unsigned char, unsigned short ); break; case IM_BANDFMT_CHAR: if( boxes->max_line > 256 ) HCONV( signed char, signed int ); else HCONV( signed char, signed short ); break; case IM_BANDFMT_USHORT: HCONV( unsigned short, unsigned int ); break; case IM_BANDFMT_SHORT: HCONV( signed short, signed int ); break; case IM_BANDFMT_UINT: HCONV( unsigned int, unsigned int ); break; case IM_BANDFMT_INT: HCONV( signed int, signed int ); break; case IM_BANDFMT_FLOAT: HCONV( float, float ); break; case IM_BANDFMT_DOUBLE: HCONV( double, double ); break; case IM_BANDFMT_COMPLEX: HCONV( float, float ); break; case IM_BANDFMT_DPCOMPLEX: HCONV( double, double ); break; default: g_assert_not_reached(); } } return( 0 ); } static int aconv_horizontal( Boxes *boxes, IMAGE *in, IMAGE *out ) { /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ if( im_cp_desc( out, in ) ) return( -1 ); out->Xsize -= boxes->mask->xsize - 1; if( out->Xsize <= 0 ) { im_error( "im_aconv", "%s", _( "image too small for mask" ) ); return( -1 ); } out->Bands *= boxes->n_hline; /* Short u?char lines can use u?short intermediate. */ if( vips_band_format_isuint( in->BandFmt ) ) out->BandFmt = boxes->max_line < 256 ? IM_BANDFMT_USHORT : IM_BANDFMT_UINT; else if( vips_band_format_isint( in->BandFmt ) ) out->BandFmt = boxes->max_line < 256 ? IM_BANDFMT_SHORT : IM_BANDFMT_INT; if( im_demand_hint( out, IM_SMALLTILE, in, NULL ) || im_generate( out, aconv_start, aconv_hgenerate, aconv_stop, in, boxes ) ) return( -1 ); out->Xoffset = -boxes->mask->xsize / 2; out->Yoffset = -boxes->mask->ysize / 2; return( 0 ); } #define CLIP_UCHAR( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > UCHAR_MAX ) \ (V) = UCHAR_MAX; \ } G_STMT_END #define CLIP_CHAR( V ) \ G_STMT_START { \ if( (V) < SCHAR_MIN ) \ (V) = SCHAR_MIN; \ else if( (V) > SCHAR_MAX ) \ (V) = SCHAR_MAX; \ } G_STMT_END #define CLIP_USHORT( V ) \ G_STMT_START { \ if( (V) < 0 ) \ (V) = 0; \ else if( (V) > USHRT_MAX ) \ (V) = USHRT_MAX; \ } G_STMT_END #define CLIP_SHORT( V ) \ G_STMT_START { \ if( (V) < SHRT_MIN ) \ (V) = SHRT_MIN; \ else if( (V) > SHRT_MAX ) \ (V) = SHRT_MAX; \ } G_STMT_END #define CLIP_NONE( V ) {} #define VCONV( ACC, IN, OUT, CLIP ) \ G_STMT_START { \ for( x = 0; x < sz; x++ ) { \ ACC *seq_sum = (ACC *) seq->sum; \ \ IN *p; \ OUT *q; \ ACC sum; \ \ p = x * boxes->n_hline + \ (IN *) IM_REGION_ADDR( ir, r->left, r->top ); \ q = x + (OUT *) IM_REGION_ADDR( or, r->left, r->top ); \ \ sum = 0; \ for( z = 0; z < n_vline; z++ ) { \ seq_sum[z] = 0; \ for( k = boxes->vline[z].start; \ k < boxes->vline[z].end; k++ ) \ seq_sum[z] += p[k * istride + \ boxes->vline[z].band]; \ sum += boxes->vline[z].factor * seq_sum[z]; \ } \ sum = (sum + boxes->rounding) / boxes->area; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ \ for( y = 1; y < r->height; y++ ) { \ sum = 0;\ for( z = 0; z < n_vline; z++ ) { \ seq_sum[z] += p[seq->end[z]]; \ seq_sum[z] -= p[seq->start[z]]; \ sum += boxes->vline[z].factor * seq_sum[z]; \ } \ p += istride; \ sum = (sum + boxes->rounding) / boxes->area; \ CLIP( sum ); \ *q = sum; \ q += ostride; \ } \ } \ } G_STMT_END /* Do vertical masks ... we scan the mask down columns of pixels. */ static int aconv_vgenerate( REGION *or, void *vseq, void *a, void *b ) { AConvSequence *seq = (AConvSequence *) vseq; IMAGE *in = (IMAGE *) a; Boxes *boxes = (Boxes *) b; REGION *ir = seq->ir; const int n_vline = boxes->n_vline; DOUBLEMASK *mask = boxes->mask; Rect *r = &or->valid; /* Double the width (notionally) for complex. */ int sz = vips_band_format_iscomplex( in->BandFmt ) ? 2 * IM_REGION_N_ELEMENTS( or ) : IM_REGION_N_ELEMENTS( or ); Rect s; int x, y, z, k; int istride; int ostride; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); istride = IM_REGION_LSKIP( ir ) / IM_IMAGE_SIZEOF_ELEMENT( in ); ostride = IM_REGION_LSKIP( or ) / IM_IMAGE_SIZEOF_ELEMENT( boxes->out ); /* Init offset array. */ if( seq->last_stride != istride ) { seq->last_stride = istride; for( z = 0; z < n_vline; z++ ) { seq->start[z] = boxes->vline[z].band + boxes->vline[z].start * istride; seq->end[z] = boxes->vline[z].band + boxes->vline[z].end * istride; } } switch( boxes->in->BandFmt ) { case IM_BANDFMT_UCHAR: if( boxes->max_line > 256 ) VCONV( unsigned int, \ unsigned int, unsigned char, CLIP_UCHAR ); else VCONV( unsigned int, \ unsigned short, unsigned char, CLIP_UCHAR ); break; case IM_BANDFMT_CHAR: if( boxes->max_line > 256 ) VCONV( signed int, \ signed int, signed char, CLIP_UCHAR ); else VCONV( signed int, \ signed short, signed char, CLIP_UCHAR ); break; case IM_BANDFMT_USHORT: VCONV( unsigned int, \ unsigned int, unsigned short, CLIP_USHORT ); break; case IM_BANDFMT_SHORT: VCONV( signed int, signed int, signed short, CLIP_SHORT ); break; case IM_BANDFMT_UINT: VCONV( unsigned int, unsigned int, unsigned int, CLIP_NONE ); break; case IM_BANDFMT_INT: VCONV( signed int, signed int, signed int, CLIP_NONE ); break; case IM_BANDFMT_FLOAT: VCONV( float, float, float, CLIP_NONE ); break; case IM_BANDFMT_DOUBLE: VCONV( double, double, double, CLIP_NONE ); break; case IM_BANDFMT_COMPLEX: VCONV( float, float, float, CLIP_NONE ); break; case IM_BANDFMT_DPCOMPLEX: VCONV( double, double, double, CLIP_NONE ); break; default: g_assert_not_reached(); } return( 0 ); } static int aconv_vertical( Boxes *boxes, IMAGE *in, IMAGE *out ) { /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ if( im_cp_desc( out, in ) ) return( -1 ); out->Ysize -= boxes->mask->ysize - 1; if( out->Ysize <= 0 ) { im_error( "im_aconv", "%s", _( "image too small for mask" ) ); return( -1 ); } out->Bands = boxes->in->Bands; out->BandFmt = boxes->in->BandFmt; if( im_demand_hint( out, IM_SMALLTILE, in, NULL ) || im_generate( out, aconv_start, aconv_vgenerate, aconv_stop, in, boxes ) ) return( -1 ); out->Xoffset = -boxes->mask->xsize / 2; out->Yoffset = -boxes->mask->ysize / 2; return( 0 ); } /** * im_aconv: * @in: input image * @out: output image * @mask: convolution mask * @n_layers: number of layers for approximation * @cluster: cluster lines closer than this distance * * Perform an approximate convolution of @in with @mask. * * The output image * always has the same #VipsBandFormat as the input image. * * Larger values for @n_layers give more accurate * results, but are slower. As @n_layers approaches the mask radius, the * accuracy will become close to exact convolution and the speed will drop to * match. For many large masks, such as Gaussian, @n_layers need be only 10% of * this value and accuracy will still be good. * * Smaller values of @cluster will give more accurate results, but be slower * and use more memory. 10% of the mask radius is a good rule of thumb. * * See also: im_convsep_f(), im_create_dmaskv(). * * Returns: 0 on success, -1 on error */ int im_aconv( IMAGE *in, IMAGE *out, DOUBLEMASK *mask, int n_layers, int cluster ) { IMAGE *t[2]; Boxes *boxes; if( !(boxes = boxes_new( in, out, mask, n_layers, cluster )) || im_open_local_array( out, t, 2, "im_aconv", "p" ) ) return( -1 ); /* */ if( im_embed( in, t[0], 1, mask->xsize / 2, mask->ysize / 2, in->Xsize + mask->xsize - 1, in->Ysize + mask->ysize - 1 ) || aconv_horizontal( boxes, t[0], t[1] ) || aconv_vertical( boxes, t[1], out ) ) return( -1 ); /* For testing .. just try one direction. if( aconv_horizontal( boxes, in, out ) ) return( -1 ); */ out->Xoffset = 0; out->Yoffset = 0; return( 0 ); } vips-8.2.2/libvips/convolution/pconvolution.h0000664000175000017500000000417212530402247016371 00000000000000/* base class for all convolution operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCONVOLUTION_H #define VIPS_PCONVOLUTION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_CONVOLUTION (vips_convolution_get_type()) #define VIPS_CONVOLUTION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_CONVOLUTION, VipsConvolution )) #define VIPS_CONVOLUTION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_CONVOLUTION, VipsConvolutionClass)) #define VIPS_IS_CONVOLUTION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CONVOLUTION )) #define VIPS_IS_CONVOLUTION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CONVOLUTION )) #define VIPS_CONVOLUTION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_CONVOLUTION, VipsConvolutionClass )) typedef struct _VipsConvolution VipsConvolution; struct _VipsConvolution { VipsOperation parent_instance; VipsImage *in; VipsImage *out; VipsImage *mask; /* @mask cast ready for processing. */ VipsImage *M; }; typedef struct _VipsConvolutionClass { VipsOperationClass parent_class; } VipsConvolutionClass; GType vips_convolution_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCONVOLUTION_H*/ vips-8.2.2/libvips/convolution/compass.c0000664000175000017500000001232512651132235015272 00000000000000/* repeatedly convolve with a rotating mask * * 23/10/13 * - from vips_conv() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pconvolution.h" typedef struct { VipsConvolution parent_instance; int times; VipsAngle45 angle; VipsCombine combine; VipsPrecision precision; int layers; int cluster; } VipsCompass; typedef VipsConvolutionClass VipsCompassClass; G_DEFINE_TYPE( VipsCompass, vips_compass, VIPS_TYPE_CONVOLUTION ); static int vips_compass_build( VipsObject *object ) { VipsConvolution *convolution = (VipsConvolution *) object; VipsCompass *compass = (VipsCompass *) object; VipsImage **masks; VipsImage *mask; VipsImage **images; int i; VipsImage **abs; VipsImage **combine; VipsImage *x; g_object_set( compass, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_compass_parent_class )->build( object ) ) return( -1 ); masks = (VipsImage **) vips_object_local_array( object, compass->times ); images = (VipsImage **) vips_object_local_array( object, compass->times ); abs = (VipsImage **) vips_object_local_array( object, compass->times ); combine = (VipsImage **) vips_object_local_array( object, compass->times ); mask = convolution->M; for( i = 0; i < compass->times; i++ ) { if( vips_conv( convolution->in, &images[i], mask, "precision", compass->precision, "layers", compass->layers, "cluster", compass->cluster, NULL ) ) return( -1 ); if( vips_rot45( mask, &masks[i], "angle", compass->angle, NULL ) ) return( -1 ); mask = masks[i]; } for( i = 0; i < compass->times; i++ ) if( vips_abs( images[i], &abs[i], NULL ) ) return( -1 ); switch( compass->combine ) { case VIPS_COMBINE_MAX: if( vips_bandrank( abs, &combine[0], compass->times, "index", compass->times - 1, NULL ) ) return( -1 ); x = combine[0]; break; case VIPS_COMBINE_SUM: if( vips_sum( abs, &combine[0], compass->times, NULL ) ) return( -1 ); x = combine[0]; break; default: g_assert_not_reached(); /* Stop compiler warnings. */ x = NULL; } if( vips_image_write( x, convolution->out ) ) return( -1 ); return( 0 ); } static void vips_compass_class_init( VipsCompassClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "compass"; object_class->description = _( "convolve with rotating mask" ); object_class->build = vips_compass_build; VIPS_ARG_INT( class, "times", 101, _( "Times" ), _( "Rotate and convolve this many times" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, times ), 1, 1000, 2 ); VIPS_ARG_ENUM( class, "angle", 103, _( "Angle" ), _( "Rotate mask by this much between convolutions" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, angle ), VIPS_TYPE_ANGLE45, VIPS_ANGLE45_D90 ); VIPS_ARG_ENUM( class, "combine", 104, _( "Combine" ), _( "Combine convolution results like this" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, combine ), VIPS_TYPE_COMBINE, VIPS_COMBINE_MAX ); VIPS_ARG_ENUM( class, "precision", 203, _( "Precision" ), _( "Convolve with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_INTEGER ); VIPS_ARG_INT( class, "layers", 204, _( "Layers" ), _( "Use this many layers in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, layers ), 1, 1000, 5 ); VIPS_ARG_INT( class, "cluster", 205, _( "Cluster" ), _( "Cluster lines closer than this in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCompass, cluster ), 1, 100, 1 ); } static void vips_compass_init( VipsCompass *compass ) { compass->times = 2; compass->angle = VIPS_ANGLE45_D90; compass->combine = VIPS_COMBINE_MAX; compass->precision = VIPS_PRECISION_INTEGER; compass->layers = 5; compass->cluster = 1; } int vips_compass( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "compass", ap, in, out, mask ); va_end( ap ); return( result ); } vips-8.2.2/libvips/convolution/convolution.c0000664000175000017500000001050012530402247016174 00000000000000/* base class for all convolution operations * * properties: * - one input image * - one output image * - one input mask */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconvolution.h" /** * SECTION: convolution * @short_description: convolve and correlate images * @stability: Stable * @include: vips/vips.h * * These operations convolve an image in some way, or are operations based on * simple convolution, or are useful with convolution. * */ /** * VipsPrecision: * @VIPS_PRECISION_INTEGER: int everywhere * @VIPS_PRECISION_FLOAT: float everywhere * @VIPS_PRECISION_APPROXIMATE: approximate integer output * * How accurate an operation should be. */ /** * VipsCombine: * @VIPS_COMBINE_MAX: take the maximum of the possible values * @VIPS_COMBINE_SUM: sum all the values * * How to combine values. */ G_DEFINE_ABSTRACT_TYPE( VipsConvolution, vips_convolution, VIPS_TYPE_OPERATION ); static int vips_convolution_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConvolution *convolution = VIPS_CONVOLUTION( object ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); #ifdef DEBUG printf( "vips_convolution_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_convolution_parent_class )-> build( object ) ) return( -1 ); if( vips_check_matrix( class->nickname, convolution->mask, &t[0] ) ) return( -1 ); convolution->M = t[0]; return( 0 ); } static void vips_convolution_class_init( VipsConvolutionClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "convolution"; vobject_class->description = _( "convolution operations" ); vobject_class->build = vips_convolution_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; /* Inputs set by subclassess. */ VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsConvolution, in ) ); VIPS_ARG_IMAGE( class, "out", 10, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsConvolution, out ) ); VIPS_ARG_IMAGE( class, "mask", 20, _( "Mask" ), _( "Input matrix image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsConvolution, mask ) ); } static void vips_convolution_init( VipsConvolution *convolution ) { } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_convolution_operation_init( void ) { extern int vips_conv_get_type( void ); extern int vips_compass_get_type( void ); extern int vips_convsep_get_type( void ); extern int vips_fastcor_get_type( void ); extern int vips_spcor_get_type( void ); extern int vips_sharpen_get_type( void ); extern int vips_gaussblur_get_type( void ); vips_conv_get_type(); vips_compass_get_type(); vips_convsep_get_type(); vips_fastcor_get_type(); vips_spcor_get_type(); vips_sharpen_get_type(); vips_gaussblur_get_type(); } vips-8.2.2/libvips/convolution/gaussblur.c0000664000175000017500000001123612530402247015633 00000000000000/* Gaussian blur. * * 15/11/13 * - from vips_sharpen() * 19/11/14 * - change parameters to be more imagemagick-like */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsGaussblur { VipsOperation parent_instance; VipsImage *in; VipsImage *out; gdouble sigma; gdouble min_ampl; VipsPrecision precision; } VipsGaussblur; typedef VipsOperationClass VipsGaussblurClass; G_DEFINE_TYPE( VipsGaussblur, vips_gaussblur, VIPS_TYPE_OPERATION ); static int vips_gaussblur_build( VipsObject *object ) { VipsGaussblur *gaussblur = (VipsGaussblur *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); if( VIPS_OBJECT_CLASS( vips_gaussblur_parent_class )->build( object ) ) return( -1 ); if( vips_gaussmat( &t[0], gaussblur->sigma, gaussblur->min_ampl, "separable", TRUE, "precision", gaussblur->precision, NULL ) ) return( -1 ); #ifdef DEBUG printf( "gaussblur: blurring with:\n" ); vips_matrixprint( t[0], NULL ); #endif /*DEBUG*/ if( vips_convsep( gaussblur->in, &t[1], t[0], "precision", gaussblur->precision, NULL ) ) return( -1 ); g_object_set( object, "out", vips_image_new(), NULL ); if( vips_image_write( t[1], gaussblur->out ) ) return( -1 ); return( 0 ); } static void vips_gaussblur_class_init( VipsGaussblurClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "gaussblur"; object_class->description = _( "gaussian blur" ); object_class->build = vips_gaussblur_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussblur, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsGaussblur, out ) ); VIPS_ARG_DOUBLE( class, "sigma", 3, _( "Sigma" ), _( "Sigma of Gaussian" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGaussblur, sigma ), 0.01, 1000, 1.5 ); VIPS_ARG_DOUBLE( class, "min_ampl", 3, _( "Minimum amplitude" ), _( "Minimum amplitude of Gaussian" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussblur, min_ampl ), 0.001, 1.0, 0.2 ); VIPS_ARG_ENUM( class, "precision", 4, _( "Precision" ), _( "Convolve with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGaussblur, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_INTEGER ); } static void vips_gaussblur_init( VipsGaussblur *gaussblur ) { gaussblur->sigma = 1.5; gaussblur->min_ampl = 0.2; gaussblur->precision = VIPS_PRECISION_INTEGER; } /** * vips_gaussblur: * @in: input image * @out: output image * @sigma: how large a mask to use * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @precision: #VipsPrecision for blur, default VIPS_PRECISION_INTEGER * @min_ampl: minimum amplitude, default 0.2 * * This operator runs vips_gaussmat() and vips_convsep() for you on an image. * Set @min_ampl smaller to generate a larger, more accurate mask. Set @sigma * larger to make the blur more blurry. * * See also: vips_gaussmat(), vips_convsep(). * * Returns: 0 on success, -1 on error. */ int vips_gaussblur( VipsImage *in, VipsImage **out, double sigma, ... ) { va_list ap; int result; va_start( ap, sigma ); result = vips_call_split( "gaussblur", ap, in, out, sigma ); va_end( ap ); return( result ); } vips-8.2.2/libvips/convolution/correlation.h0000664000175000017500000000471012530402247016151 00000000000000/* base class for all correlation operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCORRELATION_H #define VIPS_PCORRELATION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_CORRELATION (vips_correlation_get_type()) #define VIPS_CORRELATION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_CORRELATION, VipsCorrelation )) #define VIPS_CORRELATION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_CORRELATION, VipsCorrelationClass)) #define VIPS_IS_CORRELATION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CORRELATION )) #define VIPS_IS_CORRELATION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CORRELATION )) #define VIPS_CORRELATION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_CORRELATION, VipsCorrelationClass )) typedef struct { VipsOperation parent_instance; /* Params. */ VipsImage *in; VipsImage *ref; VipsImage *out; /* The two input images, upcast to the smallest common format. ref is * a memory buffer. */ VipsImage *in_ready; VipsImage *ref_ready; } VipsCorrelation; typedef struct { VipsOperationClass parent_class; /* For each upcast input format, what output format. */ const VipsBandFormat *format_table; /* Run just before generate. The subclass can fill in some stuff. */ int (*pre_generate)( VipsCorrelation * ); void (*correlation)( VipsCorrelation *, VipsRegion *in, VipsRegion *out ); } VipsCorrelationClass; GType vips_correlation_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCORRELATION_H*/ vips-8.2.2/libvips/convolution/convsep.c0000664000175000017500000001077312530402247015306 00000000000000/* convolve twice, rotating the mask * * 23/10/13 * - from vips_convsep() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pconvolution.h" typedef struct { VipsConvolution parent_instance; VipsPrecision precision; int layers; int cluster; } VipsConvsep; typedef VipsConvolutionClass VipsConvsepClass; G_DEFINE_TYPE( VipsConvsep, vips_convsep, VIPS_TYPE_CONVOLUTION ); static int vips_convsep_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConvolution *convolution = (VipsConvolution *) object; VipsConvsep *convsep = (VipsConvsep *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); g_object_set( convsep, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_convsep_parent_class )->build( object ) ) return( -1 ); if( vips_check_separable( class->nickname, convolution->M ) ) return( -1 ); if( vips_rot( convolution->M, &t[0], VIPS_ANGLE_D90, NULL ) || vips_conv( convolution->in, &t[1], convolution->M, "precision", convsep->precision, "layers", convsep->layers, "cluster", convsep->cluster, NULL ) || vips_conv( t[1], &t[2], t[0], "precision", convsep->precision, "layers", convsep->layers, "cluster", convsep->cluster, NULL ) ) return( -1 ); if( vips_image_write( t[2], convolution->out ) ) return( -1 ); return( 0 ); } static void vips_convsep_class_init( VipsConvsepClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "convsep"; object_class->description = _( "seperable convolution operation" ); object_class->build = vips_convsep_build; VIPS_ARG_ENUM( class, "precision", 203, _( "Precision" ), _( "Convolve with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConvsep, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_INTEGER ); VIPS_ARG_INT( class, "layers", 204, _( "Layers" ), _( "Use this many layers in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConvsep, layers ), 1, 1000, 5 ); VIPS_ARG_INT( class, "cluster", 205, _( "Cluster" ), _( "Cluster lines closer than this in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConvsep, cluster ), 1, 100, 1 ); } static void vips_convsep_init( VipsConvsep *convsep ) { convsep->precision = VIPS_PRECISION_INTEGER; convsep->layers = 5; convsep->cluster = 1; } /** * vips_convsep: * @in: input image * @out: output image * @mask: convolution mask * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @precision: calculation accuracy * @layers: number of layers for approximation * @cluster: cluster lines closer than this distance * * Perform a separable convolution of @in with @mask. * See vips_conv() for a detailed description. * * The mask must be 1xn or nx1 elements. * * The image is convolved twice: once with @mask and then again with @mask * rotated by 90 degrees. This is much faster for certain types of mask * (gaussian blur, for example) than doing a full 2D convolution. * * See also: vips_conv(), vips_gaussmat(). * * Returns: 0 on success, -1 on error */ int vips_convsep( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "convsep", ap, in, out, mask ); va_end( ap ); return( result ); } vips-8.2.2/libvips/convolution/sharpen.c0000664000175000017500000002661312530402247015271 00000000000000/* Cored sharpen of LABQ image. * * Usage: * * int im_sharpen( IMAGE *in, IMAGE *out, * int mask_size, * int x1, int x2, * double m1, double m2 ) * * Returns 0 on success and -1 on error * * Copyright: 1995 A. Abbood * Author: A. Abbood * Written on: 30/01/1995 * 15/5/95 JC * - updated for latest 7.3 mods * - m3 parameter removed * - bug fixes and speed-ups * 4/7/95 JC * - x3 parameter added * - xs are now double * 6/7/95 JC * - xs are now ys * - better LUT generation * 12/3/01 JC * - uses seperable convolution for umask * - tiny clean ups * 23/7/01 JC * - fix for band extract index changed * 21/4/04 * - switched to gaussian mask and radius * 20/11/04 * - uses extract_bands() to remove and reattach ab for slight speedup * - accepts LabS as well as LabQ for slight speedup * - small code tidies * - ~15% speed up in total * 29/11/06 * - convolve first to help region sharing * 3/2/10 * - gtkdoc * - cleanups * 13/11/13 * - redo as a class * - does any type, any number of bands */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsSharpen { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int radius; double x1; double y2; double y3; double m1; double m2; double x2; double x3; /* Parameters scaled up to int. * * We need indexes in the range [-x3,x2], so add x3 to * indexes before starting to index table. */ int ix1; int ix2; int ix3; /* The lut we build. */ int *lut; } VipsSharpen; typedef VipsOperationClass VipsSharpenClass; G_DEFINE_TYPE( VipsSharpen, vips_sharpen, VIPS_TYPE_OPERATION ); static int vips_sharpen_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion **in = (VipsRegion **) vseq; VipsSharpen *sharpen = (VipsSharpen *) b; VipsRect *r = &or->valid; int ix3 = sharpen->ix3; int range = sharpen->ix2 + sharpen->ix3; int *lut = sharpen->lut; int x, y; if( vips_region_prepare( in[0], r ) || vips_region_prepare( in[1], r ) ) return( -1 ); VIPS_GATE_START( "vips_sharpen_generate: work" ); for( y = 0; y < r->height; y++ ) { short *p1 = (short *) VIPS_REGION_ADDR( in[0], r->left, r->top + y ); short *p2 = (short *) VIPS_REGION_ADDR( in[1], r->left, r->top + y ); short *q = (short *) VIPS_REGION_ADDR( or, r->left, r->top + y ); for( x = 0; x < r->width; x++ ) { int v1 = p1[x]; int v2 = p2[x]; /* v2 is the area average. If this is zero, then we * pass the original image through unaltered. */ if( v2 == 0 ) q[x] = v1; else { /* Find difference. Offset by x3 to get the * expected range of values. */ int s1 = ix3 + (v1 - v2); int s2; if( s1 < 0 ) s1 = 0; else if( s1 > range ) s1 = range; s2 = v1 + lut[s1]; if( s2 < 0 ) s2 = 0; else if( s2 > 32767 ) s2 = 32767; q[x] = s2; } } } VIPS_GATE_STOP( "vips_sharpen_generate: work" ); return( 0 ); } static int vips_sharpen_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsSharpen *sharpen = (VipsSharpen *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); VipsImage **args = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; int ix1, ix2, ix3; int i; VIPS_GATE_START( "vips_sharpen_build: build" ); if( VIPS_OBJECT_CLASS( vips_sharpen_parent_class )->build( object ) ) return( -1 ); /* Turn y parameters into xs. */ sharpen->x2 = (sharpen->y2 - sharpen->x1 * (sharpen->m1 - sharpen->m2)) / sharpen->m2; sharpen->x3 = (sharpen->y3 - sharpen->x1 * (sharpen->m1 - sharpen->m2)) / sharpen->m2; in = sharpen->in; if( vips_colourspace( in, &t[0], VIPS_INTERPRETATION_LABS, NULL ) ) return( -1 ); in = t[0]; if( vips_check_uncoded( class->nickname, in ) || vips_check_bands_atleast( class->nickname, in, 3 ) || vips_check_format( class->nickname, in, VIPS_FORMAT_SHORT ) ) return( -1 ); if( sharpen->x1 < 0 || sharpen->x1 > 99 || sharpen->x2 < 0 || sharpen->x2 > 99 || sharpen->x1 > sharpen->x2 || sharpen->x3 < 0 || sharpen->x3 > 99 || sharpen->x1 > sharpen->x3 ) { vips_error( class->nickname, "%s", _( "parameters out of range" ) ); return( -1 ); } /* Stop at 20% of max ... bit mean, but means mask radius is roughly * right. We always sharpen a short, so no point using a float mask. */ if( vips_gaussmat( &t[1], 1 + sharpen->radius / 2, 0.2, "separable", TRUE, "precision", VIPS_PRECISION_INTEGER, NULL ) ) return( -1 ); #ifdef DEBUG printf( "sharpen: blurring with:\n" ); vips_matrixprint( t[1], NULL ); #endif /*DEBUG*/ /* Build the int lut. */ sharpen->ix1 = ix1 = sharpen->x1 * 327.67; sharpen->ix2 = ix2 = sharpen->x2 * 327.67; sharpen->ix3 = ix3 = sharpen->x3 * 327.67; if( !(sharpen->lut = VIPS_ARRAY( object, ix2 + ix3 + 1, int )) ) return( -1 ); for( i = 0; i < ix1; i++ ) { sharpen->lut[ix3 + i] = i * sharpen->m1; sharpen->lut[ix3 - i] = -i * sharpen->m1; } for( i = ix1; i <= ix2; i++ ) sharpen->lut[ix3 + i] = ix1 * sharpen->m1 + (i - ix1) * sharpen->m2; for( i = ix1; i <= ix3; i++ ) sharpen->lut[ix3 - i] = -(ix1 * sharpen->m1 + (i - ix1) * sharpen->m2); /* Extract L and the rest, convolve L. */ if( vips_extract_band( in, &args[0], 0, NULL ) || vips_extract_band( in, &t[3], 1, "n", in->Bands - 1, NULL ) || vips_convsep( args[0], &args[1], t[1], NULL ) ) return( -1 ); /* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause * too many recalculations on overlaps. */ t[5] = vips_image_new(); if( vips_image_pipeline_array( t[5], VIPS_DEMAND_STYLE_FATSTRIP, args ) ) return( -1 ); if( vips_image_generate( t[5], vips_start_many, vips_sharpen_generate, vips_stop_many, args, sharpen ) ) return( -1 ); g_object_set( object, "out", vips_image_new(), NULL ); /* Reattach the rest. */ if( vips_bandjoin2( t[5], t[3], &t[6], NULL ) || vips_image_write( t[6], sharpen->out ) ) return( -1 ); VIPS_GATE_STOP( "vips_sharpen_build: build" ); return( 0 ); } static void vips_sharpen_class_init( VipsSharpenClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "sharpen"; object_class->description = _( "unsharp masking for print" ); object_class->build = vips_sharpen_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSharpen, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsSharpen, out ) ); VIPS_ARG_INT( class, "radius", 3, _( "Radius" ), _( "Mask radius" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, radius ), 1, 1000000, 3 ); VIPS_ARG_DOUBLE( class, "x1", 5, _( "x1" ), _( "Flat/jaggy threshold" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, x1 ), 1, 1000000, 1.5 ); VIPS_ARG_DOUBLE( class, "y2", 6, _( "y2" ), _( "Maximum brightening" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, y2 ), 1, 1000000, 20 ); VIPS_ARG_DOUBLE( class, "y3", 7, _( "y3" ), _( "Maximum darkening" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, y3 ), 1, 1000000, 50 ); VIPS_ARG_DOUBLE( class, "m1", 8, _( "m1" ), _( "Slope for flat areas" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, m1 ), 0, 1000000, 1 ); VIPS_ARG_DOUBLE( class, "m2", 9, _( "m2" ), _( "Slope for jaggy areas" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSharpen, m2 ), 0, 1000000, 2 ); } static void vips_sharpen_init( VipsSharpen *sharpen ) { sharpen->radius = 3; sharpen->x1 = 1.5; sharpen->y2 = 20; sharpen->y3 = 50; sharpen->m1 = 1; sharpen->m2 = 2; } /** * vips_sharpen: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @radius: how large a mask to use * @x1: flat/jaggy threshold * @y2: maximum amount of brightening * @y3: maximum amount of darkening * @m1: slope for flat areas * @m2: slope for jaggy areas * * Selectively sharpen the L channel of a LAB image. The input image is * transformed to #VIPS_INTERPRETATION_LABS. * * The operation performs a gaussian blur of radius @radius and subtracts * from @in to generate a high-frequency signal. This signal is passed * through a lookup table formed from the five parameters and added back to * @in. * * The lookup table is formed like this: * * |[ * ^ * y2 |- - - - - ----------- * | / * | / slope m2 * | .../ * -x1 | ... | * -------------------...----------------------> * | ... | x1 * |... slope m1 * / | * / m2 | * / | * / | * / | * / | * ______/ _ _ _ _ _ _ | -y3 * | * ]| * * For printing, we recommend the following settings (the defaults): * * |[ * radius == 3 * x1 == 1.5 * y2 == 20 (don't brighten by more than 20 L*) * y3 == 50 (can darken by up to 50 L*) * * m1 == 1 (some sharpening in flat areas) * m2 == 2 (more sharpening in jaggy areas) * ]| * * If you want more or less sharpening, we suggest you just change the m1 * and m2 parameters. * * The @radius parameter changes the width of the fringe and can be * adjusted according to the output printing resolution. As an approximate * guideline, use 1 for 4 pixels/mm (CRT display resolution), 2 for 8 * pixels/mm, 3 for 12 pixels/mm and 4 for 16 pixels/mm (300 dpi == 12 * pixels/mm). These figures refer to the image raster, not the half-tone * resolution. * * See also: vips_conv(). * * Returns: 0 on success, -1 on error. */ int vips_sharpen( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sharpen", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/convolution/Makefile.am0000664000175000017500000000055312530402247015514 00000000000000noinst_LTLIBRARIES = libconvolution.la libconvolution_la_SOURCES = \ convolution.c \ pconvolution.h \ correlation.c \ correlation.h \ conv.c \ convsep.c \ compass.c \ fastcor.c \ spcor.c \ sharpen.c \ gaussblur.c \ im_aconv.c \ im_aconvsep.c \ im_conv.c \ im_conv_f.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/convolution/Makefile.in0000664000175000017500000005450012651721156015535 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/convolution ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libconvolution_la_LIBADD = am_libconvolution_la_OBJECTS = convolution.lo correlation.lo conv.lo \ convsep.lo compass.lo fastcor.lo spcor.lo sharpen.lo \ gaussblur.lo im_aconv.lo im_aconvsep.lo im_conv.lo \ im_conv_f.lo libconvolution_la_OBJECTS = $(am_libconvolution_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libconvolution_la_SOURCES) DIST_SOURCES = $(libconvolution_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libconvolution.la libconvolution_la_SOURCES = \ convolution.c \ pconvolution.h \ correlation.c \ correlation.h \ conv.c \ convsep.c \ compass.c \ fastcor.c \ spcor.c \ sharpen.c \ gaussblur.c \ im_aconv.c \ im_aconvsep.c \ im_conv.c \ im_conv_f.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/convolution/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/convolution/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libconvolution.la: $(libconvolution_la_OBJECTS) $(libconvolution_la_DEPENDENCIES) $(EXTRA_libconvolution_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libconvolution_la_OBJECTS) $(libconvolution_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compass.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convolution.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convsep.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/correlation.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fastcor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaussblur.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_aconv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_aconvsep.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_conv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_conv_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sharpen.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spcor.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/convolution/conv.c0000664000175000017500000001375412651123102014572 00000000000000/* convolution * * 12/8/13 * - from vips_hist_cum() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is a simple wrapper over the old vips7 functions. At some point we * should rewrite this as a pure vips8 class and redo the vips7 functions as * wrappers over this. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pconvolution.h" typedef struct { VipsConvolution parent_instance; VipsPrecision precision; int layers; int cluster; } VipsConv; typedef VipsConvolutionClass VipsConvClass; G_DEFINE_TYPE( VipsConv, vips_conv, VIPS_TYPE_CONVOLUTION ); static int vips_conv_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConvolution *convolution = (VipsConvolution *) object; VipsConv *conv = (VipsConv *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; INTMASK *imsk; DOUBLEMASK *dmsk; g_object_set( conv, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_conv_parent_class )->build( object ) ) return( -1 ); in = convolution->in; /* printf( "vips_conv_build: convolving with:\n" ); vips_matrixprint( convolution->M, NULL ); */ if( !(imsk = im_vips2imask( convolution->M, class->nickname )) || !im_local_imask( convolution->out, imsk ) ) return( -1 ); if( !(dmsk = im_vips2mask( convolution->M, class->nickname )) || !im_local_dmask( convolution->out, dmsk ) ) return( -1 ); /* Unpack for processing. */ if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; switch( conv->precision ) { case VIPS_PRECISION_INTEGER: if( im_conv( in, convolution->out, imsk ) ) return( -1 ); break; case VIPS_PRECISION_FLOAT: if( im_conv_f( in, convolution->out, dmsk ) ) return( -1 ); break; case VIPS_PRECISION_APPROXIMATE: if( im_aconv( in, convolution->out, dmsk, conv->layers, conv->cluster ) ) return( -1 ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_conv_class_init( VipsConvClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "conv"; object_class->description = _( "convolution operation" ); object_class->build = vips_conv_build; VIPS_ARG_ENUM( class, "precision", 103, _( "Precision" ), _( "Convolve with this precision" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConv, precision ), VIPS_TYPE_PRECISION, VIPS_PRECISION_INTEGER ); VIPS_ARG_INT( class, "layers", 104, _( "Layers" ), _( "Use this many layers in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConv, layers ), 1, 1000, 5 ); VIPS_ARG_INT( class, "cluster", 105, _( "Cluster" ), _( "Cluster lines closer than this in approximation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsConv, cluster ), 1, 100, 1 ); } static void vips_conv_init( VipsConv *conv ) { conv->precision = VIPS_PRECISION_INTEGER; conv->layers = 5; conv->cluster = 1; } /** * vips_conv: * @in: input image * @out: output image * @mask: convolve with this mask * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @precision: calculation accuracy * @layers: number of layers for approximation * @cluster: cluster lines closer than this distance * * Convolution. * * Perform a convolution of @in with @mask. * Each output pixel is * calculated as sigma[i]{pixel[i] * mask[i]} / scale + offset, where scale * and offset are part of @mask. * * If @precision is #VIPS_PRECISION_INTEGER then the convolution is performed * with integer arithmetic and the output image * always has the same #VipsBandFormat as the input image. * * Convolutions on unsigned 8-bit images are calculated with the * processor's vector unit, if possible. Disable this with --vips-novector or * IM_NOVECTOR. * * If @precision is #VIPS_PRECISION_FLOAT then the convolution is performed * with floating-point arithmetic. The output image * is always %VIPS_FORMAT_FLOAT unless @in is %VIPS_FORMAT_DOUBLE, in which case * @out is also %VIPS_FORMAT_DOUBLE. * * If @precision is #VIPS_PRECISION_APPROXIMATE then the output image * always has the same #VipsBandFormat as the input image. * * Larger values for @layers give more accurate * results, but are slower. As @layers approaches the mask radius, the * accuracy will become close to exact convolution and the speed will drop to * match. For many large masks, such as Gaussian, @n_layers need be only 10% of * this value and accuracy will still be good. * * Smaller values of @cluster will give more accurate results, but be slower * and use more memory. 10% of the mask radius is a good rule of thumb. * * Returns: 0 on success, -1 on error */ int vips_conv( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "conv", ap, in, out, mask ); va_end( ap ); return( result ); } vips-8.2.2/libvips/convolution/correlation.c0000664000175000017500000001123012530402247016137 00000000000000/* base class for correlation * * 7/11/13 * - from convolution.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconvolution.h" #include "correlation.h" G_DEFINE_ABSTRACT_TYPE( VipsCorrelation, vips_correlation, VIPS_TYPE_OPERATION ); static int vips_correlation_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsCorrelation *correlation = (VipsCorrelation *) b; VipsCorrelationClass *cclass = VIPS_CORRELATION_GET_CLASS( correlation ); VipsRect *r = &or->valid; VipsRect irect; /* What part of ir do we need? */ irect.left = r->left; irect.top = r->top; irect.width = r->width + correlation->ref_ready->Xsize - 1; irect.height = r->height + correlation->ref_ready->Ysize - 1; if( vips_region_prepare( ir, &irect ) ) return( -1 ); cclass->correlation( correlation, ir, or ); return( 0 ); } static int vips_correlation_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsCorrelationClass *cclass = VIPS_CORRELATION_CLASS( class ); VipsCorrelation *correlation = (VipsCorrelation *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 6 ); if( VIPS_OBJECT_CLASS( vips_correlation_parent_class )-> build( object ) ) return( -1 ); /* Stretch input out. */ if( vips_embed( correlation->in, &t[0], correlation->ref->Xsize / 2, correlation->ref->Ysize / 2, correlation->in->Xsize + correlation->ref->Xsize - 1, correlation->in->Ysize + correlation->ref->Ysize - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); if( vips__formatalike( t[0], correlation->ref, &t[1], &t[2] ) || vips__bandalike( class->nickname, t[1], t[2], &t[3], &t[4] ) || !(t[5] = vips_image_copy_memory( t[4] )) ) return( -1 ); correlation->in_ready = t[3]; correlation->ref_ready = t[5]; g_object_set( object, "out", vips_image_new(), NULL ); /* FATSTRIP is good for us as THINSTRIP will cause * too many recalculations on overlaps. */ if( vips_image_pipelinev( correlation->out, VIPS_DEMAND_STYLE_FATSTRIP, correlation->in_ready, correlation->ref_ready, NULL ) ) return( -1 ); correlation->out->Xsize = correlation->in->Xsize; correlation->out->Ysize = correlation->in->Ysize; correlation->out->BandFmt = cclass->format_table[correlation->in_ready->BandFmt]; if( cclass->pre_generate && cclass->pre_generate( correlation ) ) return( -1 ); if( vips_image_generate( correlation->out, vips_start_one, vips_correlation_gen, vips_stop_one, correlation->in_ready, correlation ) ) return( -1 ); return( 0 ); } static void vips_correlation_class_init( VipsCorrelationClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "correlation"; object_class->description = _( "correlation operation" ); object_class->build = vips_correlation_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCorrelation, in ) ); VIPS_ARG_IMAGE( class, "ref", 10, _( "Mask" ), _( "Input reference image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCorrelation, ref ) ); VIPS_ARG_IMAGE( class, "out", 20, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsCorrelation, out ) ); } static void vips_correlation_init( VipsCorrelation *correlation ) { } vips-8.2.2/libvips/conversion/0000775000175000017500000000000012651721505013350 500000000000000vips-8.2.2/libvips/conversion/conversion.c0000664000175000017500000002152612632554765015642 00000000000000/* base class for all conversion operations * * properties: * - single output image */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconversion.h" /** * SECTION: conversion * @short_description: convert images in some way: change band format, change header, insert, extract, join * @see_also: resample * @stability: Stable * @include: vips/vips.h * * These operations convert an image in some way. They can be split into a two * main groups. * * The first set of operations change an image's format in some way. You * can change the band format (for example, cast to 32-bit unsigned * int), form complex images from real images, convert images to * matrices and back, change header fields, and a few others. * * The second group move pixels about in some way. You can flip, rotate, * extract, insert and join pairs of images in various ways. * */ /** * VipsAlign: * @VIPS_ALIGN_LOW: align low coordinate edge * @VIPS_ALIGN_CENTRE: align centre * @VIPS_ALIGN_HIGH: align high coordinate edge * * See vips_join() and so on. * * Operations like vips_join() need to be told whether to align images on the * low or high coordinate edge, or centre. * * See also: vips_join(). */ /** * VipsAngle: * @VIPS_ANGLE_D0: no rotate * @VIPS_ANGLE_D90: 90 degrees clockwise * @VIPS_ANGLE_D180: 180 degree rotate * @VIPS_ANGLE_D270: 90 degrees anti-clockwise * * See vips_rot() and so on. * * Fixed rotate angles. * * See also: vips_rot(). */ /** * VipsAngle45: * @VIPS_ANGLE45_D0: no rotate * @VIPS_ANGLE45_D45: 45 degrees clockwise * @VIPS_ANGLE45_D90: 90 degrees clockwise * @VIPS_ANGLE45_D135: 135 degrees clockwise * @VIPS_ANGLE45_D180: 180 degrees * @VIPS_ANGLE45_D225: 135 degrees anti-clockwise * @VIPS_ANGLE45_D270: 90 degrees anti-clockwise * @VIPS_ANGLE45_D315: 45 degrees anti-clockwise * * See vips_rot45() and so on. * * Fixed rotate angles. * * See also: vips_rot45(). */ /** * VipsExtend: * @VIPS_EXTEND_BLACK: extend with black (all 0) pixels * @VIPS_EXTEND_COPY: copy the image edges * @VIPS_EXTEND_REPEAT: repeat the whole image * @VIPS_EXTEND_MIRROR: mirror the whole image * @VIPS_EXTEND_WHITE: extend with white (all bits set) pixels * @VIPS_EXTEND_BACKGROUND: extend with colour from the @background property * * See vips_embed(), vips_conv(), vips_affine() and so on. * * When the edges of an image are extended, you can specify * how you want the extension done. * * #VIPS_EXTEND_BLACK --- new pixels are black, ie. all bits are zero. * * #VIPS_EXTEND_COPY --- each new pixel takes the value of the nearest edge * pixel * * #VIPS_EXTEND_REPEAT --- the image is tiled to fill the new area * * #VIPS_EXTEND_MIRROR --- the image is reflected and tiled to reduce hash * edges * * #VIPS_EXTEND_WHITE --- new pixels are white, ie. all bits are set * * #VIPS_EXTEND_BACKGROUND --- colour set from the @background property * * We have to specify the exact value of each enum member since we have to * keep these frozen for back compat with vips7. * * See also: vips_embed(). */ /** * VipsDirection: * @VIPS_DIRECTION_HORIZONTAL: left-right * @VIPS_DIRECTION_VERTICAL: top-bottom * * See vips_flip(), vips_join() and so on. * * Operations like vips_flip() need to be told whether to flip left-right or * top-bottom. * * See also: vips_flip(), vips_join(). */ G_DEFINE_ABSTRACT_TYPE( VipsConversion, vips_conversion, VIPS_TYPE_OPERATION ); static int vips_conversion_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); #ifdef DEBUG printf( "vips_conversion_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_set( conversion, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_conversion_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_conversion_class_init( VipsConversionClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "conversion"; vobject_class->description = _( "conversion operations" ); vobject_class->build = vips_conversion_build; VIPS_ARG_IMAGE( class, "out", 1, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsConversion, out ) ); } static void vips_conversion_init( VipsConversion *conversion ) { } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_conversion_operation_init( void ) { extern GType vips_copy_get_type( void ); extern GType vips_tile_cache_get_type( void ); extern GType vips_line_cache_get_type( void ); extern GType vips_sequential_get_type( void ); extern GType vips_cache_get_type( void ); extern GType vips_embed_get_type( void ); extern GType vips_flip_get_type( void ); extern GType vips_insert_get_type( void ); extern GType vips_join_get_type( void ); extern GType vips_arrayjoin_get_type( void ); extern GType vips_extract_area_get_type( void ); extern GType vips_crop_get_type( void ); extern GType vips_extract_band_get_type( void ); extern GType vips_replicate_get_type( void ); extern GType vips_cast_get_type( void ); extern GType vips_bandjoin_get_type( void ); extern GType vips_bandjoin_const_get_type( void ); extern GType vips_bandrank_get_type( void ); extern GType vips_black_get_type( void ); extern GType vips_rot_get_type( void ); extern GType vips_rot45_get_type( void ); extern GType vips_autorot_get_type( void ); extern GType vips_ifthenelse_get_type( void ); extern GType vips_recomb_get_type( void ); extern GType vips_bandmean_get_type( void ); extern GType vips_bandfold_get_type( void ); extern GType vips_bandunfold_get_type( void ); extern GType vips_flatten_get_type( void ); extern GType vips_premultiply_get_type( void ); extern GType vips_unpremultiply_get_type( void ); extern GType vips_bandbool_get_type( void ); extern GType vips_gaussnoise_get_type( void ); extern GType vips_grid_get_type( void ); extern GType vips_scale_get_type( void ); extern GType vips_wrap_get_type( void ); extern GType vips_zoom_get_type( void ); extern GType vips_subsample_get_type( void ); extern GType vips_msb_get_type( void ); extern GType vips_byteswap_get_type( void ); #ifdef HAVE_PANGOFT2 extern GType vips_text_get_type( void ); #endif /*HAVE_PANGOFT2*/ extern GType vips_xyz_get_type( void ); extern GType vips_falsecolour_get_type( void ); extern GType vips_gamma_get_type( void ); vips_copy_get_type(); vips_tile_cache_get_type(); vips_line_cache_get_type(); vips_sequential_get_type(); vips_cache_get_type(); vips_embed_get_type(); vips_flip_get_type(); vips_insert_get_type(); vips_join_get_type(); vips_arrayjoin_get_type(); vips_extract_area_get_type(); vips_crop_get_type(); vips_extract_band_get_type(); vips_replicate_get_type(); vips_cast_get_type(); vips_bandjoin_get_type(); vips_bandjoin_const_get_type(); vips_bandrank_get_type(); vips_black_get_type(); vips_rot_get_type(); vips_rot45_get_type(); vips_autorot_get_type(); vips_ifthenelse_get_type(); vips_recomb_get_type(); vips_bandmean_get_type(); vips_bandfold_get_type(); vips_bandunfold_get_type(); vips_flatten_get_type(); vips_premultiply_get_type(); vips_unpremultiply_get_type(); vips_bandbool_get_type(); vips_gaussnoise_get_type(); vips_grid_get_type(); vips_scale_get_type(); vips_wrap_get_type(); vips_zoom_get_type(); vips_subsample_get_type(); vips_msb_get_type(); vips_byteswap_get_type(); #ifdef HAVE_PANGOFT2 vips_text_get_type(); #endif /*HAVE_PANGOFT2*/ vips_xyz_get_type(); vips_falsecolour_get_type(); vips_gamma_get_type(); } vips-8.2.2/libvips/conversion/embed.c0000664000175000017500000004056412651122751014517 00000000000000/* VipsEmbed * * Author: J. Cupitt * Written on: 21/2/95 * Modified on: * 6/4/04 * - added extend pixels from edge mode * - sets Xoffset / Yoffset to x / y * 15/4/04 * - added replicate and mirror modes * 4/3/05 * - added solid white mode * 4/1/07 * - degenerate to im_copy() for 0/0/w/h * 1/8/07 * - more general ... x and y can be negative * 24/3/09 * - added IM_CODING_RAD support * 5/11/09 * - gtkdoc * 27/1/10 * - use im_region_paint() * - cleanups * 15/10/11 * - rewrite as a class * 10/10/12 * - add @background */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsEmbed { VipsConversion parent_instance; /* The input image. */ VipsImage *in; VipsExtend extend; VipsArrayDouble *background; int x; int y; int width; int height; /* Pixel we paint calculated from background. */ VipsPel *ink; /* Geometry calculations. */ VipsRect rout; /* Whole output area */ VipsRect rsub; /* Rect occupied by image */ /* The 8 border pieces. The 4 borders strictly up/down/left/right of * the main image, and the 4 corner pieces. */ VipsRect border[8]; } VipsEmbed; typedef VipsConversionClass VipsEmbedClass; G_DEFINE_TYPE( VipsEmbed, vips_embed, VIPS_TYPE_CONVERSION ); /* r is the bit we are trying to paint, guaranteed to be entirely within * border area i. Set out to be the edge of the image we need to paint the * pixels in r. */ static void vips_embed_find_edge( VipsEmbed *embed, VipsRect *r, int i, VipsRect *out ) { /* Expand the border by 1 pixel, intersect with the image area, and we * get the edge. Usually too much though: eg. we could make the entire * right edge. */ *out = embed->border[i]; vips_rect_marginadjust( out, 1 ); vips_rect_intersectrect( out, &embed->rsub, out ); /* Usually too much though: eg. we could make the entire * right edge. If we're strictly up/down/left/right of the image, we * can trim. */ if( i == 0 || i == 2 ) { VipsRect extend; /* Above or below. */ extend = *r; extend.top = 0; extend.height = embed->height; vips_rect_intersectrect( out, &extend, out ); } if( i == 1 || i == 3 ) { VipsRect extend; /* Left or right. */ extend = *r; extend.left = 0; extend.width = embed->width; vips_rect_intersectrect( out, &extend, out ); } } /* Copy a single pixel sideways into a line of pixels. */ static void vips_embed_copy_pixel( VipsEmbed *embed, VipsPel *q, VipsPel *p, int n ) { const int bs = VIPS_IMAGE_SIZEOF_PEL( embed->in ); int x, b; for( x = 0; x < n; x++ ) for( b = 0; b < bs; b++ ) *q++ = p[b]; } /* Paint r of region or. It's a border area, lying entirely within * embed->border[i]. p points to the top-left source pixel to fill with. * plsk is the line stride. */ static void vips_embed_paint_edge( VipsEmbed *embed, VipsRegion *or, int i, VipsRect *r, VipsPel *p, int plsk ) { const int bs = VIPS_IMAGE_SIZEOF_PEL( embed->in ); VipsRect todo; VipsPel *q; int y; VIPS_GATE_START( "vips_embed_paint_edge: work" ); /* Pixels left to paint. */ todo = *r; /* Corner pieces ... copy the single pixel to paint the top line of * todo, then use the line copier below to paint the rest of it. */ if( i > 3 ) { q = VIPS_REGION_ADDR( or, todo.left, todo.top ); vips_embed_copy_pixel( embed, q, p, todo.width ); p = q; todo.top += 1; todo.height -= 1; } if( i == 1 || i == 3 ) { /* Vertical line of pixels to copy. */ for( y = 0; y < todo.height; y++ ) { q = VIPS_REGION_ADDR( or, todo.left, todo.top + y ); vips_embed_copy_pixel( embed, q, p, todo.width ); p += plsk; } } else { /* Horizontal line of pixels to copy. */ for( y = 0; y < todo.height; y++ ) { q = VIPS_REGION_ADDR( or, todo.left, todo.top + y ); memcpy( q, p, bs * todo.width ); } } VIPS_GATE_STOP( "vips_embed_paint_edge: work" ); } static int vips_embed_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsEmbed *embed = (VipsEmbed *) b; VipsRect *r = &or->valid; VipsRect ovl; int i; VipsPel *p; int plsk; /* Entirely within the input image? Generate the subimage and copy * pointers. */ if( vips_rect_includesrect( &embed->rsub, r ) ) { VipsRect need; need = *r; need.left -= embed->x; need.top -= embed->y; if( vips_region_prepare( ir, &need ) || vips_region_region( or, ir, r, need.left, need.top ) ) return( -1 ); return( 0 ); } /* Does any of the input image appear in the area we have been asked * to make? Paste it in. */ vips_rect_intersectrect( r, &embed->rsub, &ovl ); if( !vips_rect_isempty( &ovl ) ) { /* Paint the bits coming from the input image. */ ovl.left -= embed->x; ovl.top -= embed->y; if( vips_region_prepare_to( ir, or, &ovl, ovl.left + embed->x, ovl.top + embed->y ) ) return( -1 ); ovl.left += embed->x; ovl.top += embed->y; } switch( embed->extend ) { case VIPS_EXTEND_BLACK: case VIPS_EXTEND_WHITE: VIPS_GATE_START( "vips_embed_gen: work1" ); /* Paint the borders a solid value. */ for( i = 0; i < 8; i++ ) vips_region_paint( or, &embed->border[i], embed->extend == 0 ? 0 : 255 ); VIPS_GATE_STOP( "vips_embed_gen: work1" ); break; case VIPS_EXTEND_BACKGROUND: VIPS_GATE_START( "vips_embed_gen: work2" ); /* Paint the borders a solid value. */ for( i = 0; i < 8; i++ ) vips_region_paint_pel( or, &embed->border[i], embed->ink ); VIPS_GATE_STOP( "vips_embed_gen: work2" ); break; case VIPS_EXTEND_COPY: /* Extend the borders. */ for( i = 0; i < 8; i++ ) { VipsRect todo; VipsRect edge; vips_rect_intersectrect( r, &embed->border[i], &todo ); if( !vips_rect_isempty( &todo ) ) { vips_embed_find_edge( embed, &todo, i, &edge ); /* Did we paint any of the input image? If we * did, we can fetch the edge pixels from * that. */ if( !vips_rect_isempty( &ovl ) ) { p = VIPS_REGION_ADDR( or, edge.left, edge.top ); plsk = VIPS_REGION_LSKIP( or ); } else { /* No pixels painted ... fetch * directly from the input image. */ edge.left -= embed->x; edge.top -= embed->y; if( vips_region_prepare( ir, &edge ) ) return( -1 ); p = VIPS_REGION_ADDR( ir, edge.left, edge.top ); plsk = VIPS_REGION_LSKIP( ir ); } vips_embed_paint_edge( embed, or, i, &todo, p, plsk ); } } break; default: g_assert_not_reached(); } return( 0 ); } static int vips_embed_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsEmbed *embed = (VipsEmbed *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); VipsRect want; if( VIPS_OBJECT_CLASS( vips_embed_parent_class )->build( object ) ) return( -1 ); /* nip2 can generate this quite often ... just copy. */ if( embed->x == 0 && embed->y == 0 && embed->width == embed->in->Xsize && embed->height == embed->in->Ysize ) return( vips_image_write( embed->in, conversion->out ) ); if( !(embed->ink = vips__vector_to_ink( class->nickname, embed->in, VIPS_AREA( embed->background )->data, NULL, VIPS_AREA( embed->background )->n )) ) return( -1 ); if( !vips_object_argument_isset( object, "extend" ) && vips_object_argument_isset( object, "background" ) ) embed->extend = VIPS_EXTEND_BACKGROUND; switch( embed->extend ) { case VIPS_EXTEND_REPEAT: { /* Clock arithmetic: we want negative x/y to wrap around * nicely. */ const int nx = embed->x < 0 ? -embed->x % embed->in->Xsize : embed->in->Xsize - embed->x % embed->in->Xsize; const int ny = embed->y < 0 ? -embed->y % embed->in->Ysize : embed->in->Ysize - embed->y % embed->in->Ysize; if( vips_replicate( embed->in, &t[0], embed->width / embed->in->Xsize + 2, embed->height / embed->in->Ysize + 2, NULL ) || vips_extract_area( t[0], &t[1], nx, ny, embed->width, embed->height, NULL ) || vips_image_write( t[1], conversion->out ) ) return( -1 ); } break; case VIPS_EXTEND_MIRROR: { /* As repeat, but the tiles are twice the size because of * mirroring. */ const int w2 = embed->in->Xsize * 2; const int h2 = embed->in->Ysize * 2; const int nx = embed->x < 0 ? -embed->x % w2 : w2 - embed->x % w2; const int ny = embed->y < 0 ? -embed->y % h2 : h2 - embed->y % h2; if( /* Make a 2x2 mirror tile. */ vips_flip( embed->in, &t[0], VIPS_DIRECTION_HORIZONTAL, NULL ) || vips_join( embed->in, t[0], &t[1], VIPS_DIRECTION_HORIZONTAL, NULL ) || vips_flip( t[1], &t[2], VIPS_DIRECTION_VERTICAL, NULL ) || vips_join( t[1], t[2], &t[3], VIPS_DIRECTION_VERTICAL, NULL ) || /* Repeat, then cut out the centre. */ vips_replicate( t[3], &t[4], embed->width / t[3]->Xsize + 2, embed->height / t[3]->Ysize + 2, NULL ) || vips_extract_area( t[4], &t[5], nx, ny, embed->width, embed->height, NULL ) || /* Overwrite the centre with the in, much faster * for centre pixels. */ vips_insert( t[5], embed->in, &t[6], embed->x, embed->y, NULL ) || vips_image_write( t[6], conversion->out ) ) return( -1 ); } break; case VIPS_EXTEND_BLACK: case VIPS_EXTEND_WHITE: case VIPS_EXTEND_BACKGROUND: case VIPS_EXTEND_COPY: /* embed is used in many places. We don't really care about * geometry, so use ANY to avoid disturbing all pipelines. */ if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_ANY, embed->in, NULL ) ) return( -1 ); conversion->out->Xsize = embed->width; conversion->out->Ysize = embed->height; /* Whole output area. */ embed->rout.left = 0; embed->rout.top = 0; embed->rout.width = conversion->out->Xsize; embed->rout.height = conversion->out->Ysize; /* Rect occupied by image (can be clipped to nothing). */ want.left = embed->x; want.top = embed->y; want.width = embed->in->Xsize; want.height = embed->in->Ysize; vips_rect_intersectrect( &want, &embed->rout, &embed->rsub ); /* FIXME ... actually, it can't. embed_find_edge() will fail * if rsub is empty. Make this more general at some point * and remove this test. */ if( vips_rect_isempty( &embed->rsub ) ) { vips_error( class->nickname, "%s", _( "bad dimensions" ) ); return( -1 ); } /* Edge rects of new pixels ... top, right, bottom, left. Order * important. Can be empty. */ embed->border[0].left = embed->rsub.left; embed->border[0].top = 0; embed->border[0].width = embed->rsub.width; embed->border[0].height = embed->rsub.top; embed->border[1].left = VIPS_RECT_RIGHT( &embed->rsub ); embed->border[1].top = embed->rsub.top; embed->border[1].width = conversion->out->Xsize - VIPS_RECT_RIGHT( &embed->rsub ); embed->border[1].height = embed->rsub.height; embed->border[2].left = embed->rsub.left; embed->border[2].top = VIPS_RECT_BOTTOM( &embed->rsub ); embed->border[2].width = embed->rsub.width; embed->border[2].height = conversion->out->Ysize - VIPS_RECT_BOTTOM( &embed->rsub ); embed->border[3].left = 0; embed->border[3].top = embed->rsub.top; embed->border[3].width = embed->rsub.left; embed->border[3].height = embed->rsub.height; /* Corner rects. Top-left, top-right, bottom-right, * bottom-left. Order important. */ embed->border[4].left = 0; embed->border[4].top = 0; embed->border[4].width = embed->rsub.left; embed->border[4].height = embed->rsub.top; embed->border[5].left = VIPS_RECT_RIGHT( &embed->rsub ); embed->border[5].top = 0; embed->border[5].width = conversion->out->Xsize - VIPS_RECT_RIGHT( &embed->rsub ); embed->border[5].height = embed->rsub.top; embed->border[6].left = VIPS_RECT_RIGHT( &embed->rsub ); embed->border[6].top = VIPS_RECT_BOTTOM( &embed->rsub ); embed->border[6].width = conversion->out->Xsize - VIPS_RECT_RIGHT( &embed->rsub ); embed->border[6].height = conversion->out->Ysize - VIPS_RECT_BOTTOM( &embed->rsub ); embed->border[7].left = 0; embed->border[7].top = VIPS_RECT_BOTTOM( &embed->rsub ); embed->border[7].width = embed->rsub.left; embed->border[7].height = conversion->out->Ysize - VIPS_RECT_BOTTOM( &embed->rsub ); if( vips_image_generate( conversion->out, vips_start_one, vips_embed_gen, vips_stop_one, embed->in, embed ) ) return( -1 ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_embed_class_init( VipsEmbedClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_embed_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "embed"; vobject_class->description = _( "embed an image in a larger image" ); vobject_class->build = vips_embed_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", -1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbed, in ) ); VIPS_ARG_INT( class, "x", 2, _( "x" ), _( "Left edge of input in output" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbed, x ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y", 3, _( "y" ), _( "Top edge of input in output" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbed, y ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbed, width ), 1, 1000000000, 1 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsEmbed, height ), 1, 1000000000, 1 ); VIPS_ARG_ENUM( class, "extend", 6, _( "Extend" ), _( "How to generate the extra pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsEmbed, extend ), VIPS_TYPE_EXTEND, VIPS_EXTEND_BLACK ); VIPS_ARG_BOXED( class, "background", 12, _( "Background" ), _( "Color for background pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsEmbed, background ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_embed_init( VipsEmbed *embed ) { embed->extend = VIPS_EXTEND_BLACK; embed->background = vips_array_double_newv( 1, 0.0 ); } /** * vips_embed: * @in: input image * @out: output image * @x: place @in at this x position in @out * @y: place @in at this y position in @out * @width: @out should be this many pixels across * @height: @out should be this many pixels down * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @extend: #VipsExtend to generate the edge pixels (default: black) * @background: #VipsArrayDouble colour for edge pixels * * The opposite of vips_extract_area(): embed @in within an image of size * @width by @height at position @x, @y. * * @extend * controls what appears in the new pels, see #VipsExtend. * * See also: vips_extract_area(), vips_insert(). * * Returns: 0 on success, -1 on error. */ int vips_embed( VipsImage *in, VipsImage **out, int x, int y, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "embed", ap, in, out, x, y, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/zoom.c0000664000175000017500000002510412530402247014415 00000000000000/* im_zoom * * Author: N. Martinez 1991 * 6/6/94 JC * - rewritten to ANSI-C * - now works for any type, including IM_CODING_LABQ * 7/10/94 JC * - new IM_ARRAY() macro * 26/1/96 JC * - separate x and y zoom factors * 21/8/96 JC * - partial, yuk! this is so complicated ... * 30/8/96 JC * - sets demand_hint * 10/2/00 JC * - check for integer overflow in zoom facs ... was happening with ip's * zoom on large images * 3/8/02 JC * - fall back to im_copy() for x & y factors == 1 * 24/3/09 * - added IM_CODING_RAD support * 1/2/10 * - gtkdoc * 1/6/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* * TODO: * Test for pixel size and use memcpy() on individual pixels once they reach * sizes of the order of tens of bytes. char-wise copy is quicker than * memcpy() for smaller pixels. * * Also, I haven't tested it but int-wise copying may be faster still, as * long as alignment permits it. * * tcv. 2006-09-01 */ /* Turn on ADDR() range checks. #define DEBUG 1 */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsZoom { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int xfac; /* Scale factors */ int yfac; } VipsZoom; typedef VipsConversionClass VipsZoomClass; G_DEFINE_TYPE( VipsZoom, vips_zoom, VIPS_TYPE_CONVERSION ); /* Round N down to P boundary. */ #define ROUND_DOWN( N, P ) ((N) - ((N) % P)) /* Round N up to P boundary. */ #define ROUND_UP( N, P ) (ROUND_DOWN( (N) + (P) - 1, (P) )) /* Paint the part of the region containing only whole pels. */ static void vips_zoom_paint_whole( VipsRegion *or, VipsRegion *ir, VipsZoom *zoom, const int left, const int right, const int top, const int bottom ) { const int ps = VIPS_IMAGE_SIZEOF_PEL( ir->im ); const int ls = VIPS_REGION_LSKIP( or ); const int rs = ps * (right - left); /* Transform to ir coordinates. */ const int ileft = left / zoom->xfac; const int iright = right / zoom->xfac; const int itop = top / zoom->yfac; const int ibottom = bottom / zoom->yfac; int x, y, z, i; /* We know this! */ g_assert( right > left && bottom > top && right % zoom->xfac == 0 && left % zoom->xfac == 0 && top % zoom->yfac == 0 && bottom % zoom->yfac == 0 ); /* Loop over input, as we know we are all whole. */ for( y = itop; y < ibottom; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, ileft, y ); VipsPel *q = VIPS_REGION_ADDR( or, left, y * zoom->yfac ); VipsPel *r; /* Expand the first line of pels. */ r = q; for( x = ileft; x < iright; x++ ) { /* Copy each pel xfac times. */ for( z = 0; z < zoom->xfac; z++ ) { for( i = 0; i < ps; i++ ) r[i] = p[i]; r += ps; } p += ps; } /* Copy the expanded line yfac-1 times. */ r = q + ls; for( z = 1; z < zoom->yfac; z++ ) { memcpy( r, q, rs ); r += ls; } } } /* Paint the part of the region containing only part-pels. */ static void vips_zoom_paint_part( VipsRegion *or, VipsRegion *ir, VipsZoom *zoom, const int left, const int right, const int top, const int bottom ) { const int ps = VIPS_IMAGE_SIZEOF_PEL( ir->im ); const int ls = VIPS_REGION_LSKIP( or ); const int rs = ps * (right - left); /* Start position in input. */ const int ix = left / zoom->xfac; const int iy = top / zoom->yfac; /* Pels down to yfac boundary, pels down to bottom. Do the smallest of * these for first y loop. */ const int ptbound = (iy + 1) * zoom->yfac - top; const int ptbot = bottom - top; int yt = VIPS_MIN( ptbound, ptbot ); int x, y, z, i; /* Only know this. */ g_assert( right - left >= 0 && bottom - top >= 0 ); /* Have to loop over output. */ for( y = top; y < bottom; ) { VipsPel *p = VIPS_REGION_ADDR( ir, ix, y / zoom->yfac ); VipsPel *q = VIPS_REGION_ADDR( or, left, y ); VipsPel *r; /* Output pels until we jump the input pointer. */ int xt = (ix + 1) * zoom->xfac - left; /* Loop for this output line. */ r = q; for( x = left; x < right; x++ ) { /* Copy 1 pel. */ for( i = 0; i < ps; i++ ) r[i] = p[i]; r += ps; /* Move input if on boundary. */ --xt; if( xt == 0 ) { xt = zoom->xfac; p += ps; } } /* Repeat that output line until the bottom of this pixel * boundary, or we hit bottom. */ r = q + ls; for( z = 1; z < yt; z++ ) { memcpy( r, q, rs ); r += ls; } /* Move y on by the number of lines we wrote. */ y += yt; /* Reset yt for next iteration. */ yt = zoom->yfac; } } /* Zoom a VipsRegion. */ static int vips_zoom_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsZoom *zoom = (VipsZoom *) b; /* Output area we are building. */ const VipsRect *r = &or->valid; const int ri = VIPS_RECT_RIGHT( r ); const int bo = VIPS_RECT_BOTTOM(r); VipsRect s; int left, right, top, bottom; int width, height; /* Area of input we need. We have to round out, as we may have * part-pixels all around the edges. */ left = ROUND_DOWN( r->left, zoom->xfac ); right = ROUND_UP( ri, zoom->xfac ); top = ROUND_DOWN( r->top, zoom->yfac ); bottom = ROUND_UP( bo, zoom->yfac ); width = right - left; height = bottom - top; s.left = left / zoom->xfac; s.top = top / zoom->yfac; s.width = width / zoom->xfac; s.height = height / zoom->yfac; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Find the part of the output (if any) which uses only whole pels. */ left = ROUND_UP( r->left, zoom->xfac ); right = ROUND_DOWN( ri, zoom->xfac ); top = ROUND_UP( r->top, zoom->yfac ); bottom = ROUND_DOWN( bo, zoom->yfac ); width = right - left; height = bottom - top; /* Stage 1: we just paint the whole pels in the centre of the region. * As we know they are not clipped, we can do it quickly. */ if( width > 0 && height > 0 ) vips_zoom_paint_whole( or, ir, zoom, left, right, top, bottom ); /* Just fractional pixels left. Paint in the top, left, right and * bottom parts. */ if( top - r->top > 0 ) /* Some top pixels. */ vips_zoom_paint_part( or, ir, zoom, r->left, ri, r->top, VIPS_MIN( top, bo ) ); if( left - r->left > 0 && height > 0 ) /* Left pixels. */ vips_zoom_paint_part( or, ir, zoom, r->left, VIPS_MIN( left, ri ), top, bottom ); if( ri - right > 0 && height > 0 ) /* Right pixels. */ vips_zoom_paint_part( or, ir, zoom, VIPS_MAX( right, r->left ), ri, top, bottom ); if( bo - bottom > 0 && height >= 0 ) /* Bottom pixels. */ vips_zoom_paint_part( or, ir, zoom, r->left, ri, VIPS_MAX( bottom, r->top ), bo ); return( 0 ); } static int vips_zoom_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsZoom *zoom = (VipsZoom *) object; if( VIPS_OBJECT_CLASS( vips_zoom_parent_class )->build( object ) ) return( -1 ); g_assert( zoom->xfac > 0 ); g_assert( zoom->yfac > 0 ); /* Make sure we won't get integer overflow. */ if( (double) zoom->in->Xsize * zoom->xfac > (double) INT_MAX / 2 || (double) zoom->in->Ysize * zoom->yfac > (double) INT_MAX / 2 ) { vips_error( class->nickname, "%s", _( "zoom factors too large" ) ); return( -1 ); } if( zoom->xfac == 1 && zoom->yfac == 1 ) return( vips_image_write( zoom->in, conversion->out ) ); if( vips_image_pio_input( zoom->in ) || vips_check_coding_known( class->nickname, zoom->in ) ) return( -1 ); /* Set demand hints. THINSTRIP will prevent us from using * vips_zoom_paint_whole() much ... so go for FATSTRIP. */ if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_FATSTRIP, zoom->in, NULL ) ) return( -1 ); conversion->out->Xsize = zoom->in->Xsize * zoom->xfac; conversion->out->Ysize = zoom->in->Ysize * zoom->yfac; if( vips_image_generate( conversion->out, vips_start_one, vips_zoom_gen, vips_stop_one, zoom->in, zoom ) ) return( -1 ); return( 0 ); } /* xy range we sanity check on ... just to stop crazy numbers from divide by 0 * etc. causing g_assert() failures later. */ #define RANGE (100000000) static void vips_zoom_class_init( VipsZoomClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "zoom"; vobject_class->description = _( "zoom an image" ); vobject_class->build = vips_zoom_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "input", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsZoom, in ) ); VIPS_ARG_INT( class, "xfac", 2, _( "Xfac" ), _( "Horizontal zoom factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsZoom, xfac ), 1, RANGE, 1 ); VIPS_ARG_INT( class, "yfac", 3, _( "Yfac" ), _( "Vertical zoom factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsZoom, yfac ), 1, RANGE, 1 ); } static void vips_zoom_init( VipsZoom *zoom ) { } /** * vips_zoom: * @in: input image * @out: output image * @xfac: horizontal scale factor * @yfac: vertical scale factor * @...: %NULL-terminated list of optional named arguments * * Zoom an image by repeating pixels. This is fast nearest-neighbour * zoom. * * See also: vips_affine(), vips_subsample(). * * Returns: 0 on success, -1 on error. */ int vips_zoom( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) { va_list ap; int result; va_start( ap, yfac ); result = vips_call_split( "zoom", ap, in, out, xfac, yfac ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/pconversion.h0000664000175000017500000000402012530402247015775 00000000000000/* base class for all conversion operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PCONVERSION_H #define VIPS_PCONVERSION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_CONVERSION (vips_conversion_get_type()) #define VIPS_CONVERSION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_CONVERSION, VipsConversion )) #define VIPS_CONVERSION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_CONVERSION, VipsConversionClass)) #define VIPS_IS_CONVERSION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_CONVERSION )) #define VIPS_IS_CONVERSION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_CONVERSION )) #define VIPS_CONVERSION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_CONVERSION, VipsConversionClass )) typedef struct _VipsConversion { VipsOperation parent_instance; /* All have an output image. */ VipsImage *out; } VipsConversion; typedef struct _VipsConversionClass { VipsOperationClass parent_class; } VipsConversionClass; GType vips_conversion_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PCONVERSION_H*/ vips-8.2.2/libvips/conversion/replicate.c0000664000175000017500000001273012530402247015402 00000000000000/* replicate an image x times horizontally and vertically * * JC, 30 sep 03 * * 15/4/04 * - some optimisations for some cases * 1/2/10 * - gtkdoc * 26/10/11 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsReplicate { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int across; int down; } VipsReplicate; typedef VipsConversionClass VipsReplicateClass; G_DEFINE_TYPE( VipsReplicate, vips_replicate, VIPS_TYPE_CONVERSION ); static int vips_replicate_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = (VipsImage *) a; VipsRect *r = &or->valid; int twidth = in->Xsize; int theight = in->Ysize; int x, y; VipsRect tile; /* Find top left of tiles we need. */ int xs = (r->left / twidth) * twidth; int ys = (r->top / theight) * theight; /* The tile enclosing the top-left corner of the requested area. */ tile.left = xs; tile.top = ys; tile.width = twidth; tile.height = theight; /* If the request fits inside a single tile, we can just pointer-copy. */ if( vips_rect_includesrect( &tile, r ) ) { VipsRect irect; /* Translate request to input space. */ irect = *r; irect.left -= xs; irect.top -= ys; if( vips_region_prepare( ir, &irect ) ) return( -1 ); if( vips_region_region( or, ir, r, irect.left, irect.top ) ) return( -1 ); return( 0 ); } for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += theight ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += twidth ) { VipsRect paint; /* Whole tile at x, y */ tile.left = x; tile.top = y; tile.width = twidth; tile.height = theight; /* Which parts touch the area of the output we are * building. */ vips_rect_intersectrect( &tile, r, &paint ); /* Translate back to ir coordinates. */ paint.left -= x; paint.top -= y; g_assert( !vips_rect_isempty( &paint ) ); /* Render into or. */ if( vips_region_prepare_to( ir, or, &paint, paint.left + x, paint.top + y ) ) return( -1 ); } return( 0 ); } static int vips_replicate_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsReplicate *replicate = (VipsReplicate *) object; if( VIPS_OBJECT_CLASS( vips_replicate_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( replicate->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, replicate->in, NULL ) ) return( -1 ); conversion->out->Xsize *= replicate->across; conversion->out->Ysize *= replicate->down; if( vips_image_generate( conversion->out, vips_start_one, vips_replicate_gen, vips_stop_one, replicate->in, replicate ) ) return( -1 ); return( 0 ); } static void vips_replicate_class_init( VipsReplicateClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_replicate_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "replicate"; vobject_class->description = _( "replicate an image" ); vobject_class->build = vips_replicate_build; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReplicate, in ) ); VIPS_ARG_INT( class, "across", 4, _( "Across" ), _( "Repeat this many times horizontally" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReplicate, across ), 1, 1000000, 1 ); VIPS_ARG_INT( class, "down", 5, _( "Down" ), _( "Repeat this many times vertically" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsReplicate, down ), 1, 1000000, 1 ); } static void vips_replicate_init( VipsReplicate *replicate ) { } /** * vips_replicate: * @in: input image * @out: output image * @across: repeat input this many times across * @down: repeat input this many times down * @...: %NULL-terminated list of optional named arguments * * Repeats an image many times. * * See also: vips_extract_area(). * * Returns: 0 on success, -1 on error */ int vips_replicate( VipsImage *in, VipsImage **out, int across, int down, ... ) { va_list ap; int result; va_start( ap, down ); result = vips_call_split( "replicate", ap, in, out, across, down ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/bandfold.c0000664000175000017500000001207312571531237015212 00000000000000/* Fold up x into bands. * * 5/6/15 * - from copy.c * 10/6/15 * - add @factor option */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsBandfold { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int factor; } VipsBandfold; typedef VipsConversionClass VipsBandfoldClass; G_DEFINE_TYPE( VipsBandfold, vips_bandfold, VIPS_TYPE_CONVERSION ); static int vips_bandfold_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsBandfold *bandfold = (VipsBandfold *) b; VipsRegion *ir = (VipsRegion *) seq; VipsImage *out = or->im; VipsRect *r = &or->valid; int psize = VIPS_IMAGE_SIZEOF_PEL( out ); VipsRect need; int y; need.left = r->left * bandfold->factor; need.top = r->top; need.width = r->width * bandfold->factor; need.height = r->height; if( vips_region_prepare( ir, &need ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left * bandfold->factor, r->top + y ); VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); /* We can't use vips_region_region() since we change pixel * coordinates. */ memcpy( q, p, psize * r->width ); } return( 0 ); } static int vips_bandfold_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBandfold *bandfold = (VipsBandfold *) object; if( VIPS_OBJECT_CLASS( vips_bandfold_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( bandfold->in ) ) return( -1 ); if( bandfold->factor == 0 ) bandfold->factor = bandfold->in->Xsize; if( bandfold->in->Xsize % bandfold->factor != 0 ) { vips_error( class->nickname, "%s", _( "@factor must be a factor of image width" ) ); return( -1 ); } if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, bandfold->in, NULL ) ) return( -1 ); conversion->out->Xsize /= bandfold->factor; conversion->out->Bands *= bandfold->factor; if( vips_image_generate( conversion->out, vips_start_one, vips_bandfold_gen, vips_stop_one, bandfold->in, bandfold ) ) return( -1 ); return( 0 ); } static void vips_bandfold_class_init( VipsBandfoldClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandfold_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandfold"; vobject_class->description = _( "fold up x axis into bands" ); vobject_class->build = vips_bandfold_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandfold, in ) ); VIPS_ARG_INT( class, "factor", 11, _( "Factor" ), _( "Fold by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBandfold, factor ), 0, 10000000, 0 ); } static void vips_bandfold_init( VipsBandfold *bandfold ) { /* 0 means fold by width, see above. */ bandfold->factor = 0; } /** * vips_bandfold: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @factor: fold by this factor * * Fold up an image horizontally: width is collapsed into bands. * Use @factor to set how much to fold by: @factor 3, for example, will make * the output image three times narrower than the input, and with three times * as many bands. By default the whole of the input width is folded up. * * See also: vips_csvload(), vips_bandunfold(). * * Returns: 0 on success, -1 on error. */ int vips_bandfold( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "bandfold", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/wrap.c0000664000175000017500000001022412630027714014402 00000000000000/* im_wrap * * Copyright: 2008, Nottingham Trent University * Author: Tom Vajzovic * Written on: 2008-01-15 * 2/2/10 * - rewritten in terms of im_replicate()/im_extract_area() * - gtkdoc * - allows any x/y * 31/5/13 * - redone as a class * - added rotquad behaviour if x/y not set */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include "pconversion.h" typedef struct _VipsWrap { VipsConversion parent_instance; VipsImage *in; int x; int y; } VipsWrap; typedef VipsConversionClass VipsWrapClass; G_DEFINE_TYPE( VipsWrap, vips_wrap, VIPS_TYPE_CONVERSION ); static int vips_wrap_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsWrap *wrap = (VipsWrap *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); int x; int y; if( VIPS_OBJECT_CLASS( vips_wrap_parent_class )->build( object ) ) return( -1 ); if( !vips_object_argument_isset( object, "x" ) ) wrap->x = wrap->in->Xsize / 2; if( !vips_object_argument_isset( object, "y" ) ) wrap->y = wrap->in->Ysize / 2; /* Clock arithmetic: we want negative x/y to wrap around * nicely. */ x = wrap->x < 0 ? -wrap->x % wrap->in->Xsize : wrap->in->Xsize - wrap->x % wrap->in->Xsize; y = wrap->y < 0 ? -wrap->y % wrap->in->Ysize : wrap->in->Ysize - wrap->y % wrap->in->Ysize; if( vips_replicate( wrap->in, &t[0], 2, 2, NULL ) || vips_extract_area( t[0], &t[1], x, y, wrap->in->Xsize, wrap->in->Ysize, NULL ) || vips_image_write( t[1], conversion->out ) ) return( -1 ); conversion->out->Xoffset = x; conversion->out->Yoffset = y; return( 0 ); } static void vips_wrap_class_init( VipsWrapClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "wrap"; vobject_class->description = _( "wrap image origin" ); vobject_class->build = vips_wrap_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsWrap, in ) ); VIPS_ARG_INT( class, "x", 3, _( "x" ), _( "Left edge of input in output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsWrap, x ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "y", 4, _( "y" ), _( "Top edge of input in output" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsWrap, y ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); } static void vips_wrap_init( VipsWrap *wrap ) { } /** * vips_wrap: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @x: horizontal displacement * @y: vertical displacement * * Slice an image up and move the segments about so that the pixel that was * at 0, 0 is now at @x, @y. If @x and @y are not set, they default to the * centre of the image. * * See also: vips_embed(), vips_replicate(). * * Returns: 0 on success, -1 on error */ int vips_wrap( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "wrap", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/arrayjoin.c0000664000175000017500000002566012651710156015443 00000000000000/* join an array of images together * * 11/12/15 * - from join.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" /* Round N down to P boundary. */ #define ROUND_DOWN( N, P ) ((N) - ((N) % P)) /* Round N up to P boundary. */ #define ROUND_UP( N, P ) (ROUND_DOWN( (N) + (P) - 1, (P) )) typedef struct _VipsArrayjoin { VipsConversion parent_instance; /* Params. */ VipsArrayImage *in; int across; int shim; VipsArea *background; VipsAlign halign; VipsAlign valign; int hspacing; int vspacing; int down; VipsRect *rects; } VipsArrayjoin; typedef VipsConversionClass VipsArrayjoinClass; G_DEFINE_TYPE( VipsArrayjoin, vips_arrayjoin, VIPS_TYPE_CONVERSION ); static int vips_arrayjoin_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsArrayjoin *join = (VipsArrayjoin *) b; VipsRect *r = &or->valid; int n = ((VipsArea *) join->in)->n; int i; /* Does this rect fit within one of our inputs? If it does, we * can pass just the request on. */ for( i = 0; i < n; i++ ) if( vips_rect_includesrect( &join->rects[i], r ) ) return( vips__insert_just_one( or, ir[i], join->rects[i].left, join->rects[i].top ) ); /* Output requires more than one input. Paste all touching inputs into * the output. */ for( i = 0; i < n; i++ ) if( vips__insert_paste_region( or, ir[i], &join->rects[i] ) ) return( -1 ); return( 0 ); } static int vips_arrayjoin_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsArrayjoin *join = (VipsArrayjoin *) object; VipsImage **in; int n; VipsImage **format; VipsImage **band; VipsImage **size; int hspacing; int vspacing; int output_width; int output_height; int i; if( VIPS_OBJECT_CLASS( vips_arrayjoin_parent_class )->build( object ) ) return( -1 ); in = vips_array_image_get( join->in, &n ); /* Move all input images to a common format and number of bands. */ format = (VipsImage **) vips_object_local_array( object, n ); if( vips__formatalike_vec( in, format, n ) ) return( -1 ); in = format; /* We have to include the number of bands in @background in our * calculation. */ band = (VipsImage **) vips_object_local_array( object, n ); if( vips__bandalike_vec( class->nickname, in, band, n, join->background->n ) ) return( -1 ); in = band; /* Now sizealike: search for the largest image. */ hspacing = in[0]->Xsize; vspacing = in[0]->Ysize; for( i = 1; i < n; i++ ) { if( in[i]->Xsize > hspacing ) hspacing = in[i]->Xsize; if( in[i]->Ysize > vspacing ) vspacing = in[i]->Ysize; } if( !vips_object_argument_isset( object, "hspacing" ) ) g_object_set( object, "hspacing", hspacing, NULL ); if( !vips_object_argument_isset( object, "vspacing" ) ) g_object_set( object, "vspacing", vspacing, NULL ); hspacing = join->hspacing; vspacing = join->vspacing; if( !vips_object_argument_isset( object, "across" ) ) g_object_set( object, "across", n, NULL ); /* How many images down the grid? */ join->down = ROUND_UP( n, join->across ) / join->across; /* The output size. */ output_width = hspacing * join->across + join->shim * (join->across - 1); output_height = vspacing * join->down + join->shim * (join->down - 1); /* Make a rect for the position of each input. */ join->rects = VIPS_ARRAY( join, n, VipsRect ); for( i = 0; i < n; i++ ) { int x = i % join->across; int y = i / join->across; join->rects[i].left = x * (hspacing + join->shim); join->rects[i].top = y * (vspacing + join->shim); join->rects[i].width = hspacing; join->rects[i].height = vspacing; /* In the centre of the array, we make width / height larger * by shim. */ if( x != join->across - 1 ) join->rects[i].width += join->shim; if( y != join->down - 1 ) join->rects[i].height += join->shim; /* The right edge of the final image is stretched to the right * to fill the whole row. */ if( i == n - 1 ) join->rects[i].width = output_width - join->rects[i].left; } /* Each image must be cropped and aligned within an @hspacing by * @vspacing box. */ size = (VipsImage **) vips_object_local_array( object, n ); for( i = 0; i < n; i++ ) { int left, top; int width, height; /* Compiler warnings. */ left = 0; top = 0; switch( join->halign ) { case VIPS_ALIGN_LOW: left = 0; break; case VIPS_ALIGN_CENTRE: left = (hspacing - in[i]->Xsize) / 2; break; case VIPS_ALIGN_HIGH: left = hspacing - in[i]->Xsize; break; default: g_assert_not_reached(); break; } switch( join->valign ) { case VIPS_ALIGN_LOW: top = 0; break; case VIPS_ALIGN_CENTRE: top = (vspacing - in[i]->Ysize) / 2; break; case VIPS_ALIGN_HIGH: top = vspacing - in[i]->Ysize; break; default: g_assert_not_reached(); break; } width = join->rects[i].width; height = join->rects[i].height; if( vips_embed( in[i], &size[i], left, top, width, height, "extend", VIPS_EXTEND_BACKGROUND, "background", join->background, NULL ) ) return( -1 ); } if( vips_image_pipeline_array( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, size ) ) return( -1 ); conversion->out->Xsize = output_width; conversion->out->Ysize = output_height; if( vips_image_generate( conversion->out, vips_start_many, vips_arrayjoin_gen, vips_stop_many, size, join ) ) return( -1 ); return( 0 ); } static void vips_arrayjoin_class_init( VipsArrayjoinClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_arrayjoin_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "arrayjoin"; vobject_class->description = _( "join an array of images" ); vobject_class->build = vips_arrayjoin_build; VIPS_ARG_BOXED( class, "in", -1, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, in ), VIPS_TYPE_ARRAY_IMAGE ); VIPS_ARG_INT( class, "across", 4, _( "Across" ), _( "Number of images across grid" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, across ), 1, 1000000, 1 ); VIPS_ARG_INT( class, "shim", 5, _( "Shim" ), _( "Pixels between images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, shim ), 0, 1000000, 0 ); VIPS_ARG_BOXED( class, "background", 6, _( "Background" ), _( "Colour for new pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, background ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_ENUM( class, "halign", 7, _( "Horizontal align" ), _( "Align on the left, centre or right" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, halign ), VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW ); VIPS_ARG_ENUM( class, "valign", 8, _( "Vertical align" ), _( "Align on the top, centre or bottom" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, valign ), VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW ); VIPS_ARG_INT( class, "hspacing", 9, _( "Horizontal spacing" ), _( "Horizontal spacing between images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, hspacing ), 1, 1000000, 1 ); VIPS_ARG_INT( class, "vspacing", 10, _( "Vertical spacing" ), _( "Vertical spacing between images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsArrayjoin, vspacing ), 1, 1000000, 1 ); } static void vips_arrayjoin_init( VipsArrayjoin *join ) { /* Init our instance fields. */ join->background = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), 1 ); ((double *) (join->background->data))[0] = 0.0; } static int vips_arrayjoinv( VipsImage **in, VipsImage **out, int n, va_list ap ) { VipsArrayImage *array; int result; array = vips_array_image_new( in, n ); result = vips_call_split( "arrayjoin", ap, array, out ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_arrayjoin: * @in: (array length=n) (transfer none): array of input images * @out: output image * @n: number of input images * * Optional arguments: * * @across: number of images per row * @shim: space between images, in pixels * @background: background ink colour * @halign: low, centre or high alignment * @valign: low, centre or high alignment * @hspacing: horizontal distance between images * @vspacing: vertical distance between images * * Lay out the images in @in in a grid. The grid is @across images across and * however high is necessary to use up all of @in. Images are set down * left-to-right and top-to-bottom. @across defaults to @n. * * Each input image is placed with a box of size @hspacing by @vspacing * pixels and cropped. These default to the largest width and largest height * of the input images. * * Space between images is filled with @background. This defaults to 0 * (black). * * Images are positioned within their @hspacing by @vspacing box at low, * centre or high coordinate values, controlled by @halign and @valign. These * default to left-top. * * Boxes are joined and separated by @shim pixels. This defaults to 0. * * If the number of bands in the input images differs, all but one of the * images must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the n-band images are operated upon. * * The input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: vips_join(), vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_arrayjoin( VipsImage **in, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_arrayjoinv( in, out, n, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/unpremultiply.c0000664000175000017500000001707312651123065016372 00000000000000/* unpremultiply alpha * * Author: John Cupitt * Written on: 7/5/15 * */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsUnpremultiply { VipsConversion parent_instance; VipsImage *in; double max_alpha; } VipsUnpremultiply; typedef VipsConversionClass VipsUnpremultiplyClass; G_DEFINE_TYPE( VipsUnpremultiply, vips_unpremultiply, VIPS_TYPE_CONVERSION ); /* Unpremultiply a greyscale (two band) image. */ #define UNPRE_MANY( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) { \ IN alpha = p[bands - 1]; \ int clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ double nalpha = (double) clip_alpha / max_alpha; \ \ if( clip_alpha == 0 ) \ for( i = 0; i < bands - 1; i++ ) \ q[i] = 0; \ else \ for( i = 0; i < bands - 1; i++ ) \ q[i] = p[i] / nalpha; \ q[i] = clip_alpha; \ \ p += bands; \ q += bands; \ } \ } /* Unpremultiply an RGB (four band) image. */ #define UNPRE_RGBA( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) { \ IN alpha = p[3]; \ int clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ double nalpha = (double) clip_alpha / max_alpha; \ \ if( clip_alpha == 0 ) { \ q[0] = 0; \ q[1] = 0; \ q[2] = 0; \ } \ else { \ q[0] = p[0] / nalpha; \ q[1] = p[1] / nalpha; \ q[2] = p[2] / nalpha; \ } \ q[3] = clip_alpha; \ \ p += 4; \ q += 4; \ } \ } #define UNPRE( IN, OUT ) { \ if( bands == 4 ) { \ UNPRE_RGBA( IN, OUT ); \ } \ else { \ UNPRE_MANY( IN, OUT ); \ } \ } static int vips_unpremultiply_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsUnpremultiply *unpremultiply = (VipsUnpremultiply *) b; VipsRegion *ir = (VipsRegion *) vseq; VipsImage *im = ir->im; VipsRect *r = &or->valid; int width = r->width; int bands = im->Bands; double max_alpha = unpremultiply->max_alpha; int x, y, i; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *out = VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: UNPRE( unsigned char, float ); break; case VIPS_FORMAT_CHAR: UNPRE( signed char, float ); break; case VIPS_FORMAT_USHORT: UNPRE( unsigned short, float ); break; case VIPS_FORMAT_SHORT: UNPRE( signed short, float ); break; case VIPS_FORMAT_UINT: UNPRE( unsigned int, float ); break; case VIPS_FORMAT_INT: UNPRE( signed int, float ); break; case VIPS_FORMAT_FLOAT: UNPRE( float, float ); break; case VIPS_FORMAT_DOUBLE: UNPRE( double, double ); break; case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: default: g_assert_not_reached(); } } return( 0 ); } static int vips_unpremultiply_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsUnpremultiply *unpremultiply = (VipsUnpremultiply *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_unpremultiply_parent_class )-> build( object ) ) return( -1 ); in = unpremultiply->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Trivial case: fall back to copy(). */ if( in->Bands == 1 ) return( vips_image_write( in, conversion->out ) ); if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); if( in->BandFmt == VIPS_FORMAT_DOUBLE ) conversion->out->BandFmt = VIPS_FORMAT_DOUBLE; else conversion->out->BandFmt = VIPS_FORMAT_FLOAT; if( vips_image_generate( conversion->out, vips_start_one, vips_unpremultiply_gen, vips_stop_one, in, unpremultiply ) ) return( -1 ); return( 0 ); } static void vips_unpremultiply_class_init( VipsUnpremultiplyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_unpremultiply_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "unpremultiply"; vobject_class->description = _( "unpremultiply image alpha" ); vobject_class->build = vips_unpremultiply_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsUnpremultiply, in ) ); VIPS_ARG_DOUBLE( class, "max_alpha", 115, _( "Maximum alpha" ), _( "Maximum value of alpha channel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsUnpremultiply, max_alpha ), 0, 100000000, 255 ); } static void vips_unpremultiply_init( VipsUnpremultiply *unpremultiply ) { unpremultiply->max_alpha = 255.0; } /** * vips_unpremultiply: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @max_alpha: %gdouble, maximum value for alpha * * Unpremultiplies any alpha channel. * The final band is taken to be the alpha * and the bands are transformed as: * * |[ * alpha = (int) clip( 0, in[in.bands - 1], @max_alpha ); * norm = (double) alpha / @max_alpha; * if( alpha == 0 ) * out = [0, ..., 0, alpha]; * else * out = [in[0] / norm, ..., in[in.bands - 1] / norm, alpha]; * |] * * So for an N-band image, the first N - 1 bands are divided by the clipped * and normalised final band, the final band is clipped. * If there is only a single band, * the image is passed through unaltered. * * The result is * #VIPS_FORMAT_FLOAT unless the input format is #VIPS_FORMAT_DOUBLE, in which * case the output is double as well. * * @max_alpha has the default value 255. You will need to set this to 65535 * for images with a 16-bit alpha, or perhaps 1.0 for images with a float * alpha. * * Non-complex images only. * * See also: vips_premultiply(), vips_flatten(). * * Returns: 0 on success, -1 on error */ int vips_unpremultiply( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "unpremultiply", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/flip.c0000664000175000017500000001345112530402247014365 00000000000000/* flip left/right and up/down * * Copyright: 1990, N. Dessipris * Written on: 28/10/91 * Updated on: * 19/7/93 JC * - now allows IM_CODING_LABQ too * - yuk! needs rewriting * 21/12/94 JC * - rewritten * 14/4/04 * - sets Xoffset / Yoffset * 24/3/09 * - added IM_CODING_RAD support * 29/1/10 * - cleanups * - gtkdoc * 17/10/11 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsFlip { VipsConversion parent_instance; /* The input image. */ VipsImage *in; /* Left-right or up-down. */ VipsDirection direction; } VipsFlip; typedef VipsConversionClass VipsFlipClass; G_DEFINE_TYPE( VipsFlip, vips_flip, VIPS_TYPE_CONVERSION ); static int vips_flip_vertical_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; VipsRect in; VipsPel *p, *q; int y; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int ls; int psk, qsk; /* Transform to input coordinates. */ in = *r; in.top = ir->im->Ysize - bo; /* Ask for input we need. */ if( vips_region_prepare( ir, &in ) ) return( -1 ); /* Loop, copying and reversing lines. */ p = VIPS_REGION_ADDR( ir, le, in.top + in.height - 1 ); q = VIPS_REGION_ADDR( or, le, to ); psk = VIPS_REGION_LSKIP( ir ); qsk = VIPS_REGION_LSKIP( or ); ls = VIPS_REGION_SIZEOF_LINE( or ); for( y = to; y < bo; y++ ) { memcpy( q, p, ls ); p -= psk; q += qsk; } return( 0 ); } static int vips_flip_horizontal_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; VipsRect in; VipsPel *p, *q; int x, y, z; int le = r->left; int ri = VIPS_RECT_RIGHT(r); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int ps = VIPS_IMAGE_SIZEOF_PEL( ir->im ); /* sizeof pel */ int hgt = ir->im->Xsize - r->width; int lastx; /* Transform to input coordinates. */ in = *r; in.left = hgt - r->left; /* Find x of final pixel in input area. */ lastx = VIPS_RECT_RIGHT( &in ) - 1; /* Ask for input we need. */ if( vips_region_prepare( ir, &in ) ) return( -1 ); /* Loop, copying and reversing lines. */ for( y = to; y < bo; y++ ) { p = VIPS_REGION_ADDR( ir, lastx, y ); q = VIPS_REGION_ADDR( or, le, y ); for( x = le; x < ri; x++ ) { /* Copy the pel. */ for( z = 0; z < ps; z++ ) q[z] = p[z]; /* Skip forwards in out, back in in. */ q += ps; p -= ps; } } return( 0 ); } static int vips_flip_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsFlip *flip = (VipsFlip *) object; VipsGenerateFn generate_fn; if( VIPS_OBJECT_CLASS( vips_flip_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( flip->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, flip->in, NULL ) ) return( -1 ); if( flip->direction == VIPS_DIRECTION_HORIZONTAL ) { generate_fn = vips_flip_horizontal_gen; conversion->out->Xoffset = flip->in->Xsize; conversion->out->Yoffset = 0; } else { generate_fn = vips_flip_vertical_gen; conversion->out->Xoffset = 0; conversion->out->Yoffset = flip->in->Ysize; } if( vips_image_generate( conversion->out, vips_start_one, generate_fn, vips_stop_one, flip->in, flip ) ) return( -1 ); return( 0 ); } static void vips_flip_class_init( VipsFlipClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_flip_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "flip"; vobject_class->description = _( "flip an image" ); vobject_class->build = vips_flip_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFlip, in ) ); VIPS_ARG_ENUM( class, "direction", 6, _( "Direction" ), _( "Direction to flip image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFlip, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); } static void vips_flip_init( VipsFlip *flip ) { } /** * vips_flip: * @in: input image * @out: output image * @direction: flip horizontally or vertically * @...: %NULL-terminated list of optional named arguments * * Flips an image left-right or up-down. * * See also: vips_rot(). * * Returns: 0 on success, -1 on error */ int vips_flip( VipsImage *in, VipsImage **out, VipsDirection direction, ... ) { va_list ap; int result; va_start( ap, direction ); result = vips_call_split( "flip", ap, in, out, direction ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/flatten.c0000664000175000017500000002372112651122754015077 00000000000000/* flatten the alpha out of an image, replacing it with a constant background * * Author: John Cupitt * Written on: 18/6/12 * * 4/1/14 * - better rounding * 9/5/15 * - add max_alpha to match vips_premultiply() etc. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsFlatten { VipsConversion parent_instance; VipsImage *in; /* Background colour. */ VipsArrayDouble *background; /* The [double] converted to the input image format. */ VipsPel *ink; /* Use this to scale alpha to 0 - 1. */ double max_alpha; } VipsFlatten; typedef VipsConversionClass VipsFlattenClass; G_DEFINE_TYPE( VipsFlatten, vips_flatten, VIPS_TYPE_CONVERSION ); /* Flatten with black background. */ #define VIPS_FLATTEN_BLACK( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE alpha = p[bands - 1]; \ int b; \ \ for( b = 0; b < bands - 1; b++ ) \ q[b] = (p[b] * alpha) / max_alpha; \ \ p += bands; \ q += bands - 1; \ } \ } /* Flatten with any background. */ #define VIPS_FLATTEN( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE alpha = p[bands - 1]; \ TYPE nalpha = max_alpha - alpha; \ TYPE * restrict bg = (TYPE *) flatten->ink; \ int b; \ \ for( b = 0; b < bands - 1; b++ ) \ q[b] = (p[b] * alpha) / max_alpha + \ (bg[b] * nalpha) / max_alpha; \ \ p += bands; \ q += bands - 1; \ } \ } /* Same, but with float arithmetic. Necessary for int/uint to prevent * overflow. */ #define VIPS_FLATTEN_BLACK_FLOAT( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE alpha = p[bands - 1]; \ int b; \ \ for( b = 0; b < bands - 1; b++ ) \ q[b] = ((double) p[b] * alpha) / max_alpha; \ \ p += bands; \ q += bands - 1; \ } \ } #define VIPS_FLATTEN_FLOAT( TYPE ) { \ TYPE * restrict p = (TYPE *) in; \ TYPE * restrict q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE alpha = p[bands - 1]; \ TYPE nalpha = max_alpha - alpha; \ TYPE * restrict bg = (TYPE *) flatten->ink; \ int b; \ \ for( b = 0; b < bands - 1; b++ ) \ q[b] = ((double) p[b] * alpha) / max_alpha + \ ((double) bg[b] * nalpha) / max_alpha; \ \ p += bands; \ q += bands - 1; \ } \ } static int vips_flatten_black_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsFlatten *flatten = (VipsFlatten *) b; VipsRect *r = &or->valid; int width = r->width; int bands = ir->im->Bands; double max_alpha = flatten->max_alpha; int x, y; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *out = VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( flatten->in->BandFmt ) { case VIPS_FORMAT_UCHAR: VIPS_FLATTEN_BLACK( unsigned char ); break; case VIPS_FORMAT_CHAR: VIPS_FLATTEN_BLACK( signed char ); break; case VIPS_FORMAT_USHORT: VIPS_FLATTEN_BLACK( unsigned short ); break; case VIPS_FORMAT_SHORT: VIPS_FLATTEN_BLACK( signed short ); break; case VIPS_FORMAT_UINT: VIPS_FLATTEN_BLACK_FLOAT( unsigned int ); break; case VIPS_FORMAT_INT: VIPS_FLATTEN_BLACK_FLOAT( signed int ); break; case VIPS_FORMAT_FLOAT: VIPS_FLATTEN_BLACK_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: VIPS_FLATTEN_BLACK_FLOAT( double ); break; case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: default: g_assert_not_reached(); } } return( 0 ); } /* Any background. */ static int vips_flatten_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsFlatten *flatten = (VipsFlatten *) b; VipsRect *r = &or->valid; int width = r->width; int bands = ir->im->Bands; double max_alpha = flatten->max_alpha; int x, y; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *out = VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( flatten->in->BandFmt ) { case VIPS_FORMAT_UCHAR: VIPS_FLATTEN( unsigned char ); break; case VIPS_FORMAT_CHAR: VIPS_FLATTEN( signed char ); break; case VIPS_FORMAT_USHORT: VIPS_FLATTEN( unsigned short ); break; case VIPS_FORMAT_SHORT: VIPS_FLATTEN( signed short ); break; case VIPS_FORMAT_UINT: VIPS_FLATTEN_FLOAT( unsigned int ); break; case VIPS_FORMAT_INT: VIPS_FLATTEN_FLOAT( signed int ); break; case VIPS_FORMAT_FLOAT: VIPS_FLATTEN_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: VIPS_FLATTEN_FLOAT( double ); break; case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: default: g_assert_not_reached(); } } return( 0 ); } static int vips_flatten_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsFlatten *flatten = (VipsFlatten *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage *in; int i; gboolean black; if( VIPS_OBJECT_CLASS( vips_flatten_parent_class )->build( object ) ) return( -1 ); in = flatten->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Trivial case: fall back to copy(). */ if( in->Bands == 1 ) return( vips_image_write( in, conversion->out ) ); if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); conversion->out->Bands -= 1; /* Is the background black? We have a special path for this. */ black = TRUE; for( i = 0; i < VIPS_AREA( flatten->background )->n; i++ ) if( vips_array_double_get( flatten->background, NULL )[i] != 0.0 ) { black = FALSE; break; } if( black ) { if( vips_image_generate( conversion->out, vips_start_one, vips_flatten_black_gen, vips_stop_one, in, flatten ) ) return( -1 ); } else { /* Convert the background to the image's format. */ if( !(flatten->ink = vips__vector_to_ink( class->nickname, conversion->out, VIPS_AREA( flatten->background )->data, NULL, VIPS_AREA( flatten->background )->n )) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_flatten_gen, vips_stop_one, in, flatten ) ) return( -1 ); } return( 0 ); } static void vips_flatten_class_init( VipsFlattenClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_flatten_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "flatten"; vobject_class->description = _( "flatten alpha out of an image" ); vobject_class->build = vips_flatten_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFlatten, in ) ); VIPS_ARG_BOXED( class, "background", 2, _( "Background" ), _( "Background value" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsFlatten, background ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_DOUBLE( class, "max_alpha", 115, _( "Maximum alpha" ), _( "Maximum value of alpha channel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsFlatten, max_alpha ), 0, 100000000, 255 ); } static void vips_flatten_init( VipsFlatten *flatten ) { flatten->background = vips_array_double_newv( 1, 0.0 ); flatten->max_alpha= 255.0; } /** * vips_flatten: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @background: #VipsArrayDouble colour for new pixels * @max_alpha: %gdouble, maximum value for alpha * * Take the last band of @in as an alpha and use it to blend the * remaining channels with @background. * * The alpha channel is 0 - @max_alpha, * where 1 means 100% image and 0 * means 100% background. * Non-complex images only. * @background defaults to zero (black). * * @max_alpha has the default value 255. You will need to set this to 65535 * for images with a 16-bit alpha, or perhaps 1.0 for images with a float * alpha. * * Useful for flattening PNG images to RGB. * * See also: vips_premultiply(), vips_pngload(). * * Returns: 0 on success, -1 on error */ int vips_flatten( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "flatten", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/copy.c0000664000175000017500000002544512630027624014416 00000000000000/* Copy an image. * * Copyright: 1990, N. Dessipris, based on im_powtra() * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on: * 23/4/93 J.Cupitt * - adapted to work with partial images * 30/6/93 JC * - adapted for partial v2 * - and ANSI C * 7/7/93 JC * - now does IM_CODING_LABQ too * 22/2/95 JC * - new use of im_region_region() * 25/6/02 JC * - added im_copy_set() * - hint is IM_ANY * 5/9/02 JC * - added xoff/yoff to copy_set * 14/4/04 JC * - im_copy() now zeros Xoffset/Yoffset (since origin is the same as * input) * 26/5/04 JC * - added im_copy_swap() * 1/6/05 * - added im_copy_morph() * 13/6/05 * - oop, im_copy_set() was messed up * 29/9/06 * - added im_copy_set_meta(), handy wrapper for nip2 to set meta fields * 2/11/06 * - moved im__convert_saveable() here so it's always defined (was part * of JPEG write code) * 15/2/08 * - added im__saveable_t ... so we can have CMYK JPEG write * 24/3/09 * - added IM_CODING_RAD support * 28/1/10 * - gtk-doc * - cleanups * - removed im_copy_from() and associated stuff * - added im_copy_native() * 28/11/10 * - im_copy_set() now sets xoff / yoff again hmmm * 29/9/11 * - rewrite as a class * 1/12/11 * - use glib byteswap macros * 15/5/15 * - support bands -> width conversion * 4/6/15 * - support width -> bands conversion * 5/6/15 * - move byteswap out to vips_byteswap() * - move band folding out to vips_bandfold()/vips_unfold() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsCopy { VipsConversion parent_instance; /* The input image. */ VipsImage *in; /* Fields we can optionally set on the way through. */ gboolean swap; VipsInterpretation interpretation; double xres; double yres; int xoffset; int yoffset; int bands; VipsBandFormat format; VipsCoding coding; int width; int height; } VipsCopy; typedef VipsConversionClass VipsCopyClass; G_DEFINE_TYPE( VipsCopy, vips_copy, VIPS_TYPE_CONVERSION ); static int vips_copy_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; if( vips_region_prepare( ir, r ) || vips_region_region( or, ir, r, r->left, r->top ) ) return( -1 ); return( 0 ); } /* The props we copy, if set, from the operation to the image. */ static const char *vips_copy_names[] = { "interpretation", "xres", "yres", "xoffset", "yoffset", "bands", "format", "coding", "width", "height" }; static int vips_copy_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsCopy *copy = (VipsCopy *) object; guint64 pel_size_before; guint64 pel_size_after; VipsImage copy_of_fields; int i; if( VIPS_OBJECT_CLASS( vips_copy_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( copy->in ) ) return( -1 ); if( copy->swap ) vips_warn( class->nickname, "%s", _( "copy swap is deprecated, use byteswap instead" ) ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, copy->in, NULL ) ) return( -1 ); /* Take a copy of all the basic header fields. We use this for * sanity-checking the changes our caller has made. */ copy_of_fields = *conversion->out; /* Use props to adjust header fields. */ for( i = 0; i < VIPS_NUMBER( vips_copy_names ); i++ ) { const char *name = vips_copy_names[i]; GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); if( argument_instance->assigned ) { GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue value = { 0, }; g_value_init( &value, type ); g_object_get_property( G_OBJECT( object ), name, &value ); #ifdef VIPS_DEBUG { char *str; str = g_strdup_value_contents( &value ); printf( "vips_copy_build: %s = %s\n", name, str ); g_free( str ); } #endif /* VIPS_DEBUG */ g_object_set_property( G_OBJECT( conversion->out ), name, &value ); g_value_unset( &value ); } } /* Disallow changes which alter sizeof(pel). */ pel_size_before = VIPS_IMAGE_SIZEOF_PEL( ©_of_fields ); pel_size_after = VIPS_IMAGE_SIZEOF_PEL( conversion->out ); if( pel_size_after != pel_size_before ) { vips_error( class->nickname, "%s", _( "must not change pel size" ) ); return( -1 ); } if( vips_image_generate( conversion->out, vips_start_one, vips_copy_gen, vips_stop_one, copy->in, copy ) ) return( -1 ); return( 0 ); } static void vips_copy_class_init( VipsCopyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_copy_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "copy"; vobject_class->description = _( "copy an image" ); vobject_class->build = vips_copy_build; /* We use copy to make fresh vipsimages to stop sharing, so don't * cache it. Plus copy is cheap. */ operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED | VIPS_OPERATION_NOCACHE; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCopy, in ) ); VIPS_ARG_BOOL( class, "swap", 2, _( "Swap" ), _( "Swap bytes in image between little and big-endian" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsCopy, swap ), FALSE ); VIPS_ARG_INT( class, "width", 3, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, width ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "height", 4, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, height ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "bands", 5, _( "Bands" ), _( "Number of bands in image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, bands ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_ENUM( class, "format", 6, _( "Format" ), _( "Pixel format in image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, format ), VIPS_TYPE_BAND_FORMAT, VIPS_FORMAT_UCHAR ); VIPS_ARG_ENUM( class, "coding", 7, _( "Coding" ), _( "Pixel coding" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, coding ), VIPS_TYPE_CODING, VIPS_CODING_NONE ); VIPS_ARG_ENUM( class, "interpretation", 8, _( "Interpretation" ), _( "Pixel interpretation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, interpretation ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_MULTIBAND ); VIPS_ARG_DOUBLE( class, "xres", 9, _( "Xres" ), _( "Horizontal resolution in pixels/mm" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, xres ), -0.0, 1000000, 0 ); VIPS_ARG_DOUBLE( class, "yres", 10, _( "Yres" ), _( "Vertical resolution in pixels/mm" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, yres ), -0.0, 1000000, 0 ); VIPS_ARG_INT( class, "xoffset", 11, _( "Xoffset" ), _( "Horizontal offset of origin" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, xoffset ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "yoffset", 12, _( "Yoffset" ), _( "Vertical offset of origin" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCopy, yoffset ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); } static void vips_copy_init( VipsCopy *copy ) { /* Init our instance fields. */ } /** * vips_copy: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @width: set image width * @height: set image height * @bands: set image bands * @format: set image format * @coding: set image coding * @interpretation: set image interpretation * @xres: set image xres * @yres: set image yres * @xoffset: set image xoffset * @yoffset: set image yoffset * * Copy an image, optionally modifying the header. VIPS copies images by * copying pointers, so this operation is instant, even for very large images. * * You can optionally change any or all header fields during the copy. You can * make any change which does not change the size of a pel, so for example * you can turn a 4-band uchar image into a 2-band ushort image, but you * cannot change a 100 x 100 RGB image into a 300 x 100 mono image. * * See also: vips_byteswap(), vips_bandfold(), vips_bandunfold(). * * Returns: 0 on success, -1 on error. */ int vips_copy( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "copy", ap, in, out ); va_end( ap ); return( result ); } /** * vips_copy_file: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * A simple convenience function to copy an image to a file, then copy * again to output. If the image is already a file, just copy straight * through. * * The file is allocated with vips_image_new_temp_file(). * The file is automatically deleted when @out is closed. * * See also: vips_copy(), vips_image_new_temp_file(). * * Returns: 0 on success, -1 on error */ int vips_copy_file( VipsImage *in, VipsImage **out, ... ) { VipsImage *file; if( vips_image_isfile( in ) ) return( vips_copy( in, out, NULL ) ); if( !(file = vips_image_new_temp_file( "%s.v" )) ) return( -1 ); if( vips_image_write( in, file ) || vips_image_pio_input( file ) ) { g_object_unref( file ); return( -1 ); } *out = file; return( 0 ); } vips-8.2.2/libvips/conversion/bandjoin.c0000664000175000017500000002473712632542764015244 00000000000000/* VipsBandjoin -- bandwise join of a set of images * * Copyright: 1991, N. Dessipris, modification of im_bandjoin() * * Author: N. Dessipris * Written on: 17/04/1991 * Modified on : * 16/3/94 JC * - rewritten for partials * - now in ANSI C * - now works for any number of input images, except zero * 7/10/94 JC * - new IM_NEW() * 16/4/07 * - fall back to im_copy() for 1 input image * 17/1/09 * - cleanups * - gtk-doc * - im_bandjoin() just calls this * - works for RAD coding too * 27/1/10 * - formatalike inputs * 17/5/11 * - sizealike inputs * 27/10/11 * - rewrite as a class * 7/11/15 * - added bandjoin_const */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "bandary.h" typedef struct _VipsBandjoin { VipsBandary parent_instance; /* The input images. */ VipsArrayImage *in; } VipsBandjoin; typedef VipsBandaryClass VipsBandjoinClass; G_DEFINE_TYPE( VipsBandjoin, vips_bandjoin, VIPS_TYPE_BANDARY ); static void vips_bandjoin_buffer( VipsBandary *bandary, VipsPel *q, VipsPel **p, int width ) { VipsConversion *conversion = (VipsConversion *) bandary; VipsImage **in = bandary->ready; /* Output pel size. */ const int ops = VIPS_IMAGE_SIZEOF_PEL( conversion->out ); int i; /* Loop for each input image. Scattered write is faster than * scattered read. */ for( i = 0; i < bandary->n; i++ ) { /* Input pel size. */ int ips = VIPS_IMAGE_SIZEOF_PEL( in[i] ); VipsPel * restrict p1; VipsPel * restrict q1; int x, z; q1 = q; p1 = p[i]; for( x = 0; x < width; x++ ) { for( z = 0; z < ips; z++ ) q1[z] = p1[z]; p1 += ips; q1 += ops; } q += ips; } } static int vips_bandjoin_build( VipsObject *object ) { VipsBandary *bandary = (VipsBandary *) object; VipsBandjoin *bandjoin = (VipsBandjoin *) object; if( bandjoin->in ) { bandary->in = vips_array_image_get( bandjoin->in, &bandary->n ); if( bandary->n == 1 ) return( vips_bandary_copy( bandary ) ); else { int i; bandary->out_bands = 0; for( i = 0; i < bandary->n; i++ ) bandary->out_bands += bandary->in[i]->Bands; } } if( VIPS_OBJECT_CLASS( vips_bandjoin_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_bandjoin_class_init( VipsBandjoinClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandjoin_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandjoin"; vobject_class->description = _( "bandwise join a set of images" ); vobject_class->build = vips_bandjoin_build; bandary_class->process_line = vips_bandjoin_buffer; VIPS_ARG_BOXED( class, "in", 0, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandjoin, in ), VIPS_TYPE_ARRAY_IMAGE ); } static void vips_bandjoin_init( VipsBandjoin *bandjoin ) { /* Init our instance fields. */ } static int vips_bandjoinv( VipsImage **in, VipsImage **out, int n, va_list ap ) { VipsArrayImage *array; int result; array = vips_array_image_new( in, n ); result = vips_call_split( "bandjoin", ap, array, out ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_bandjoin: * @in: (array length=n) (transfer none): array of input images * @out: output image * @n: number of input images * @...: %NULL-terminated list of optional named arguments * * Join a set of images together, bandwise. * * If the images * have n and m bands, then the output image will have n + m * bands, with the first n coming from the first image and the last m * from the second. * * If the images differ in size, the smaller images are enlarged to match the * larger by adding zero pixels along the bottom and right. * * The input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_bandjoin( VipsImage **in, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_bandjoinv( in, out, n, ap ); va_end( ap ); return( result ); } /** * vips_bandjoin2: * @in1: first input image * @in2: second input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Join a pair of images together, bandwise. See vips_bandjoin(). * * Returns: 0 on success, -1 on error */ int vips_bandjoin2( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) { va_list ap; int result; VipsImage *in[2]; in[0] = in1; in[1] = in2; va_start( ap, out ); result = vips_bandjoinv( in, out, 2, ap ); va_end( ap ); return( result ); } typedef struct _VipsBandjoinConst { VipsBandary parent_instance; VipsImage *in; VipsArrayDouble *c; /* The constant expanded to in's format, ready to be appended to each * pixel. */ int n; VipsPel *c_ready; } VipsBandjoinConst; typedef VipsBandaryClass VipsBandjoinConstClass; G_DEFINE_TYPE( VipsBandjoinConst, vips_bandjoin_const, VIPS_TYPE_BANDARY ); static void vips_bandjoin_const_finalize( GObject *object ) { VipsBandjoinConst *bandjoin = (VipsBandjoinConst *) object; VIPS_FREE( bandjoin->c_ready ); G_OBJECT_CLASS( vips_bandjoin_const_parent_class )->finalize( object ); } static void vips_bandjoin_const_buffer( VipsBandary *bandary, VipsPel *q, VipsPel **p, int width ) { VipsConversion *conversion = (VipsConversion *) bandary; VipsBandjoinConst *bandjoin = (VipsBandjoinConst *) bandary; VipsImage *in = bandary->ready[0]; /* Output pel size. */ const int ops = VIPS_IMAGE_SIZEOF_PEL( conversion->out ); /* Input pel size. */ const int ips = VIPS_IMAGE_SIZEOF_PEL( in ); /* Extra bands size. */ const int ebs = ops - ips; VipsPel * restrict p1; VipsPel * restrict q1; int x, z; q1 = q; p1 = p[0]; for( x = 0; x < width; x++ ) { for( z = 0; z < ips; z++ ) q1[z] = p1[z]; p1 += ips; q1 += ips; for( z = 0; z < ebs; z++ ) q1[z] = bandjoin->c_ready[z]; q1 += ebs; } } static int vips_bandjoin_const_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBandary *bandary = (VipsBandary *) object; VipsBandjoinConst *bandjoin = (VipsBandjoinConst *) object; if( bandjoin->c && bandjoin->in ) { double *c; int n; c = vips_array_double_get( bandjoin->c, &n ); if( n == 0 ) return( vips_bandary_copy( bandary ) ); else bandary->out_bands = bandjoin->in->Bands + n; bandary->n = 1; bandary->in = &bandjoin->in; if( !(bandjoin->c_ready = vips__vector_to_pels( class->nickname, n, bandjoin->in->BandFmt, bandjoin->in->Coding, c, NULL, n )) ) return( -1 ); } if( VIPS_OBJECT_CLASS( vips_bandjoin_const_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_bandjoin_const_class_init( VipsBandjoinConstClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandjoin_const_class_init\n" ); gobject_class->finalize = vips_bandjoin_const_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandjoin_const"; vobject_class->description = _( "append a constant band to an image" ); vobject_class->build = vips_bandjoin_const_build; bandary_class->process_line = vips_bandjoin_const_buffer; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandjoinConst, in ) ); VIPS_ARG_BOXED( class, "c", 12, _( "Constants" ), _( "Array of constants to add" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandjoinConst, c ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_bandjoin_const_init( VipsBandjoinConst *bandjoin ) { /* Init our instance fields. */ } static int vips_bandjoin_constv( VipsImage *in, VipsImage **out, double *c, int n, va_list ap ) { VipsArrayDouble *array; int result; array = vips_array_double_new( c, n ); result = vips_call_split( "bandjoin_const", ap, in, out, array ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_bandjoin_const: * @in: (array length=n) (transfer none): array of input images * @out: output image * @c: (array length=n): array of constants to append * @n: number of constants * @...: %NULL-terminated list of optional named arguments * * Append a set of constant bands to an image. * * See also: vips_bandjoin(). * * Returns: 0 on success, -1 on error */ int vips_bandjoin_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_bandjoin_constv( in, out, c, n, ap ); va_end( ap ); return( result ); } /** * vips_bandjoin_const1: * @in: input image * @out: output image * @c: constant to append * @...: %NULL-terminated list of optional named arguments * * Append a single constant band to an image. * * Returns: 0 on success, -1 on error */ int vips_bandjoin_const1( VipsImage *in, VipsImage **out, double c, ... ) { va_list ap; int result; va_start( ap, c ); result = vips_bandjoin_constv( in, out, &c, 1, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/bandary.h0000664000175000017500000000505212530402247015056 00000000000000/* base class for various operations on bands */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS__BANDARY_H #define VIPS__BANDARY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "pconversion.h" #define VIPS_TYPE_BANDARY (vips_bandary_get_type()) #define VIPS_BANDARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_BANDARY, VipsBandary )) #define VIPS_BANDARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_BANDARY, VipsBandaryClass)) #define VIPS_IS_BANDARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_BANDARY )) #define VIPS_IS_BANDARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_BANDARY )) #define VIPS_BANDARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_BANDARY, VipsBandaryClass )) struct _VipsBandary; typedef void (*VipsBandaryProcessFn)( struct _VipsBandary *bandary, VipsPel *out, VipsPel **in, int width ); typedef struct _VipsBandary { VipsConversion parent_instance; /* Array of input arguments, set these from a subclass. */ VipsImage **in; int n; /* The number of output bands. For example, VipsBandjoin sets the sum * of the bands in the input images. */ int out_bands; /* The input images, ready for the operation. */ VipsImage **ready; } VipsBandary; typedef struct _VipsBandaryClass { VipsConversionClass parent_class; /* The buffer processor. */ VipsBandaryProcessFn process_line; /* For each input format, what output format. Leave NULL for output * format == input format. */ const VipsBandFormat *format_table; } VipsBandaryClass; GType vips_bandary_get_type( void ); int vips_bandary_copy( VipsBandary *bandary ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS__BANDARY_H*/ vips-8.2.2/libvips/conversion/rot45.c0000664000175000017500000001532112651123042014403 00000000000000/* 'lossless' 45 degree rotate ... odd-sized square images only * * Author: N. Dessipris (Copyright, N. Dessipris 1991) * Written on: 08/05/1991 * Modified on: 28/05/1991 * 12/10/95 JC * - small revisions, needs rewriting really * 7/8/96 JC * - absolutely foul desp code revised * - many bugs and mem leaks fixed * 1/3/99 JC * - oops, fns were not preserving scale and offset * 1/12/10 * - allow any size mask for the 90 degree rot45ates by using im_rot4590(). * 12/10/13 * - rewritten as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsRot45 { VipsConversion parent_instance; /* The input image. */ VipsImage *in; /* Rotate by ... */ VipsAngle45 angle; } VipsRot45; typedef VipsConversionClass VipsRot45Class; G_DEFINE_TYPE( VipsRot45, vips_rot45, VIPS_TYPE_CONVERSION ); #define COPY( Q, P ) { \ VipsPel *q = (Q); \ VipsPel *p = (P); \ int b;\ \ for( b = 0; b < ps; b++ )\ q[b] = p[b];\ } #define ASSIGN( Xout, Yout, Xin, Yin ) \ COPY( VIPS_IMAGE_ADDR( out, Xout, Yout ), \ VIPS_IMAGE_ADDR( in, Xin, Yin ) ) #define POINT_TO_TEMP( q, Xin, Yin ) \ COPY( q, VIPS_IMAGE_ADDR( in, Xin, Yin ) ) #define TEMP_TO_POINT( Xout, Yout, p ) \ COPY( VIPS_IMAGE_ADDR( out, Xout, Yout ), p ) /* This can work inplace, ie. in == out is allowed. */ static void vips_rot45_rot45( VipsImage *out, VipsImage *in ) { size_t ps = VIPS_IMAGE_SIZEOF_PEL( in ); VipsPel *temp = VIPS_ARRAY( in, ps, VipsPel ); int size = in->Xsize; int size_2 = size / 2; int x, y; g_assert( in->Xsize == in->Ysize ); g_assert( out->Xsize == out->Ysize ); g_assert( in->Xsize == out->Xsize ); g_assert( in->Xsize % 2 == 1 ); /* Split the square into 8 triangles. Loop over the top-left one, * reflect to index the others. * * 1 1 2 2 3 * 8 1 2 3 3 * 8 8 x 4 4 * 7 7 6 5 4 * 7 6 6 5 5 * * do the centre separately. */ for( y = 0; y < size_2; y++ ) for( x = y; x < size_2; x++ ) { /* Save 1, it goes into 2 at the end. */ POINT_TO_TEMP( temp, x, y ); /* Fill 1 from 8. */ ASSIGN( x, y, y, size_2 - (x - y) ); /* 8 from 7. */ ASSIGN( y, size_2 - (x - y), y, (size - 1) - x ); /* 7 from 6. */ ASSIGN( y, (size - 1) - x, size_2 - (x - y), (size - 1) - y ); /* 6 from 5. */ ASSIGN( size_2 - (x - y), (size - 1) - y, (size - 1) - x, (size - 1) - y ); /* 5 from 4. */ ASSIGN( (size - 1) - x, (size - 1) - y, (size - 1) - y, (x - y) + size_2 ); /* 4 from 3. */ ASSIGN( (size - 1) - y, (x - y) + size_2, (size - 1) - y, x ); /* 3 from 2. */ ASSIGN( (size - 1) - y, x, (x - y) + size_2, y ); /* 2 from saved 1. */ TEMP_TO_POINT( (x - y) + size_2, y, temp ); } /* Centre. */ ASSIGN( size_2, size_2, size_2, size_2 ); } static int vips_rot45_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsRot45 *rot45 = (VipsRot45 *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_rot45_parent_class )->build( object ) ) return( -1 ); if( vips_check_oddsquare( class->nickname, rot45->in ) ) return( -1 ); if( rot45->angle == VIPS_ANGLE45_D0 ) return( vips_image_write( rot45->in, conversion->out ) ); if( !(t[1] = vips_image_copy_memory( rot45->in )) ) return( -1 ); in = t[1]; t[0] = vips_image_new_memory(); if( vips_image_pipelinev( t[0], VIPS_DEMAND_STYLE_ANY, rot45->in, NULL ) ) return( -1 ); if( vips_image_write_prepare( t[0] ) ) return( -1 ); switch( rot45->angle ) { case VIPS_ANGLE45_D315: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D270: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D225: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D180: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D135: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D90: vips_rot45_rot45( t[0], in ); in = t[0]; case VIPS_ANGLE45_D45: vips_rot45_rot45( t[0], in ); in = t[0]; break; default: g_assert_not_reached(); } if( vips_image_write( in, conversion->out ) ) return( -1 ); return( 0 ); } static void vips_rot45_class_init( VipsRot45Class *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_rot45_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "rot45"; vobject_class->description = _( "rotate an image" ); vobject_class->build = vips_rot45_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRot45, in ) ); VIPS_ARG_ENUM( class, "angle", 6, _( "Angle" ), _( "Angle to rotate image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsRot45, angle ), VIPS_TYPE_ANGLE45, VIPS_ANGLE45_D45 ); } static void vips_rot45_init( VipsRot45 *rot45 ) { rot45->angle = VIPS_ANGLE45_D45; } /** * vips_rot45: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @angle: rotation angle * * Rotate @in by a multiple of 45 degrees. Odd-length sides and square images * only. * * See also: vips_rot(). * * Returns: 0 on success, -1 on error */ int vips_rot45( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "rot45", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/msb.c0000664000175000017500000001527612530402247014223 00000000000000/* vips_msb() * * Copyright: 2006, The Nottingham Trent University * * Author: Tom Vajzovic * * Written on: 2006-03-13 * 27/9/06 * - removed extra im_free() in im_copy() fallback * 4/10/06 * - removed warning on uchar fallback: it happens a lot with nip2 and * isn't very serious * 1/2/10 * - revised, cleanups * - gtkdoc * 30/5/13 * - rewrite as a class * - add --band option, remove im_msb_band() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H */ #include #include #include "pconversion.h" #include "bandary.h" typedef struct _VipsMsb { VipsConversion parent_instance; /* Params. */ VipsImage *in; int band; /* Initial input offset. */ int offset; /* Input step. */ int instep; /* Need to convert signed to unsgned. */ gboolean sign; } VipsMsb; typedef VipsConversionClass VipsMsbClass; G_DEFINE_TYPE( VipsMsb, vips_msb, VIPS_TYPE_CONVERSION ); static int vips_msb_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsMsb *msb = (VipsMsb *) b; VipsConversion *conversion = (VipsConversion *) msb; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int sz = r->width * conversion->out->Bands; int x, y, i; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = to; y < bo; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); VipsPel *q = VIPS_REGION_ADDR( or, le, y ); if( msb->in->Coding == VIPS_CODING_LABQ && msb->band == -1 ) { /* LABQ, no sub-band select. */ for( x = 0; x < r->width; x++ ) { q[0] = p[0]; q[1] = 0x80 ^ p[1]; q[2] = 0x80 ^ p[2]; q += 4; p += 3; } } else if( msb->sign ) { /* Copy, converting signed to unsigned. */ p += msb->offset; for( i = 0; i < sz; i++ ) { q[i] = 0x80 ^ *p; p += msb->instep; } } else { /* Just pick out bytes. */ p += msb->offset; for( i = 0; i < sz; i++ ) { q[i] = *p; p += msb->instep; } } } return( 0 ); } static int vips_msb_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = (VipsConversion *) object; VipsMsb *msb = (VipsMsb *) object; int vbands; if( VIPS_OBJECT_CLASS( vips_msb_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_noneorlabq( class->nickname, msb->in ) || vips_check_int( class->nickname, msb->in ) ) return( -1 ); /* Effective number of bands this image has. */ vbands = msb->in->Coding == VIPS_CODING_LABQ ? 3 : msb->in->Bands; if( msb->band > vbands - 1 ) { vips_error( class->nickname, "%s", _( "bad band" ) ); return( -1 ); } /* Step to next input element. */ msb->instep = VIPS_IMAGE_SIZEOF_ELEMENT( msb->in ); /* Offset into first band element of high order byte. */ msb->offset = vips_amiMSBfirst() ? 0 : VIPS_IMAGE_SIZEOF_ELEMENT( msb->in ) - 1; /* If we're picking out a band, they need scaling up. */ if( msb->band != -1 ) { msb->offset += VIPS_IMAGE_SIZEOF_ELEMENT( msb->in ) * msb->band; msb->instep *= msb->in->Bands; } /* May need to flip sign if we're picking out a band from labq. */ if( msb->in->Coding == VIPS_CODING_LABQ && msb->band > 0 ) msb->sign = TRUE; if( msb->in->Coding == VIPS_CODING_NONE && !vips_band_format_isuint( msb->in->BandFmt ) ) msb->sign = TRUE; if( msb->band == -1 && msb->in->BandFmt == VIPS_FORMAT_UCHAR ) return( vips_image_write( msb->in, conversion->out ) ); if( msb->band == 0 && msb->in->Bands == 1 && msb->in->BandFmt == VIPS_FORMAT_UCHAR ) return( vips_image_write( msb->in, conversion->out ) ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, msb->in, NULL ) ) return( -1 ); if( msb->band != -1 ) conversion->out->Bands = 1; else conversion->out->Bands = vbands; conversion->out->BandFmt = VIPS_FORMAT_UCHAR; conversion->out->Coding = VIPS_CODING_NONE; if( conversion->out->Bands == 1 ) conversion->out->Type = VIPS_INTERPRETATION_B_W; else conversion->out->Type = VIPS_INTERPRETATION_MULTIBAND; if( vips_image_generate( conversion->out, vips_start_one, vips_msb_gen, vips_stop_one, msb->in, msb ) ) return( -1 ); return( 0 ); } static void vips_msb_class_init( VipsMsbClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "msb"; vobject_class->description = _( "pick most-significant byte from an image" ); vobject_class->build = vips_msb_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMsb, in ) ); VIPS_ARG_INT( class, "band", 3, _( "Band" ), _( "Band to msb" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMsb, band ), 0, 100000000, 0 ); } static void vips_msb_init( VipsMsb *msb ) { msb->band = -1; } /** * vips_msb: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @band: msb just this band * * Turn any integer image to 8-bit unsigned char by discarding all but the most * significant byte. Signed values are converted to unsigned by adding 128. * * Use @band to make a one-band 8-bit image. * * This operator also works for LABQ coding. * * See also: vips_scale(), vips_cast(). * * Returns: 0 on success, -1 on error. */ int vips_msb( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "msb", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/extract.c0000664000175000017500000002637012530402247015111 00000000000000/* extract an area and/or a set of bands * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 12/02/1990 * Modified on: 4/6/92, J.Cupitt * - speed up! why wasn't this done before? Why am I stupid? * - layout, messages fixed * now extracts IM_CODING_LABQ to IM_CODING_LABQ file: K.Martinez 1/7/93 * 2/7/93 JC * - adapted for partial v2 * - ANSIfied * 7/7/93 JC * - behaviour for IM_CODING_LABQ fixed * - better messages * 7/10/94 JC * - new IM_NEW() * 22/2/95 JC * - new use of im_region_region() * 6/7/98 JC * - im_extract_area() and im_extract_band() added * 11/7/01 JC * - im_extract_band() now numbers from zero * 7/11/01 JC * - oh what pain, im_extract now numbers bands from zero as well * 6/9/02 JC * - zero xoff/yoff for extracted area * 14/4/04 JC * - nope, -ve the origin * 17/7/04 * - added im_extract_bands(), remove many bands from image * 24/3/09 * - added IM_CODING_RAD support * 29/1/10 * - cleanups * - gtkdoc * 26/10/11 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" #include "bandary.h" typedef struct _VipsExtractArea { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int left; int top; int width; int height; } VipsExtractArea; typedef VipsConversionClass VipsExtractAreaClass; G_DEFINE_TYPE( VipsExtractArea, vips_extract_area, VIPS_TYPE_CONVERSION ); /* Extract an area. Can just use pointers. */ static int vips_extract_area_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsExtractArea *extract = (VipsExtractArea *) b; VipsRect iarea; /* Ask for input we need. Translate from demand in or's space to * demand in ir's space. */ iarea = or->valid; iarea.left += extract->left; iarea.top += extract->top; if( vips_region_prepare( ir, &iarea ) ) return( -1 ); /* Attach or to ir. */ if( vips_region_region( or, ir, &or->valid, iarea.left, iarea.top ) ) return( -1 ); return( 0 ); } static int vips_extract_area_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsExtractArea *extract = (VipsExtractArea *) object; if( VIPS_OBJECT_CLASS( vips_extract_area_parent_class )-> build( object ) ) return( -1 ); if( extract->left + extract->width > extract->in->Xsize || extract->top + extract->height > extract->in->Ysize || extract->left < 0 || extract->top < 0 || extract->width <= 0 || extract->height <= 0 ) { vips_error( class->nickname, "%s", _( "bad extract area" ) ); return( -1 ); } if( vips_image_pio_input( extract->in ) || vips_check_coding_known( class->nickname, extract->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, extract->in, NULL ) ) return( -1 ); conversion->out->Xsize = extract->width; conversion->out->Ysize = extract->height; conversion->out->Xoffset = -extract->left; conversion->out->Yoffset = -extract->top; if( vips_image_generate( conversion->out, vips_start_one, vips_extract_area_gen, vips_stop_one, extract->in, extract ) ) return( -1 ); return( 0 ); } /* xy range we sanity check on ... just to stop crazy numbers from divide by 0 * etc. causing g_assert() failures later. */ #define RANGE (100000000) static void vips_extract_area_class_init( VipsExtractAreaClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_extract_area_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "extract_area"; vobject_class->description = _( "extract an area from an image" ); vobject_class->build = vips_extract_area_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "input", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, in ) ); VIPS_ARG_INT( class, "left", 2, _( "Left" ), _( "Left edge of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, left ), -RANGE, RANGE, 0 ); VIPS_ARG_INT( class, "top", 3, _( "Top" ), _( "Top edge of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, top ), -RANGE, RANGE, 0 ); VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Width of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, width ), 1, RANGE, 1 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Height of extract area" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractArea, height ), 1, RANGE, 1 ); } static void vips_extract_area_init( VipsExtractArea *extract ) { } /** * vips_extract_area: * @in: input image * @out: output image * @left: left edge of area to extract * @top: top edge of area to extract * @width: width of area to extract * @height: height of area to extract * @...: %NULL-terminated list of optional named arguments * * Extract an area from an image. The area must fit within @in. * * See also: vips_extract_bands(). * * Returns: 0 on success, -1 on error. */ int vips_extract_area( VipsImage *in, VipsImage **out, int left, int top, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "extract_area", ap, in, out, left, top, width, height ); va_end( ap ); return( result ); } /* A synonym for extract_area. */ GType vips_crop_get_type( void ) { static GType type = 0; if( !type ) { static const GTypeInfo info = { sizeof( VipsExtractAreaClass ), NULL, /* base_init */ NULL, /* base_finalize */ (GClassInitFunc) vips_extract_area_class_init, NULL, /* class_finalize */ NULL, /* class_data */ sizeof( VipsExtractArea ), 32, /* n_preallocs */ (GInstanceInitFunc) vips_extract_area_init, }; type = g_type_register_static( VIPS_TYPE_CONVERSION, "crop", &info, 0 ); } return( type ); } /** * vips_crop: * @in: input image * @out: output image * @left: left edge of area to extract * @top: top edge of area to extract * @width: width of area to extract * @height: height of area to extract * @...: %NULL-terminated list of optional named arguments * * A synonym for vips_extract_area(). * * See also: vips_extract_bands(). * * Returns: 0 on success, -1 on error. */ int vips_crop( VipsImage *in, VipsImage **out, int left, int top, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "crop", ap, in, out, left, top, width, height ); va_end( ap ); return( result ); } typedef struct _VipsExtractBand { VipsBandary parent_instance; /* The input image. */ VipsImage *in; int band; int n; } VipsExtractBand; typedef VipsBandaryClass VipsExtractBandClass; G_DEFINE_TYPE( VipsExtractBand, vips_extract_band, VIPS_TYPE_BANDARY ); static void vips_extract_band_buffer( VipsBandary *bandary, VipsPel *out, VipsPel **in, int width ) { VipsConversion *conversion = (VipsConversion *) bandary; VipsExtractBand *extract = (VipsExtractBand *) bandary; VipsImage *im = bandary->ready[0]; int es = VIPS_IMAGE_SIZEOF_ELEMENT( im ); int ips = VIPS_IMAGE_SIZEOF_PEL( im ); const int ops = VIPS_IMAGE_SIZEOF_PEL( conversion->out ); VipsPel *p, *q; int x, z; p = in[0] + extract->band * es; q = out; for( x = 0; x < width; x++ ) { for( z = 0; z < ops; z++ ) q[z] = p[z]; p += ips; q += ops; } } static int vips_extract_band_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBandary *bandary = (VipsBandary *) object; VipsExtractBand *extract = (VipsExtractBand *) object; if( extract->in ) { int bands; vips_image_decode_predict( extract->in, &bands, NULL ); bandary->n = 1; bandary->in = &extract->in; bandary->out_bands = extract->n; if( extract->band + extract->n > bands ) { vips_error( class->nickname, "%s", _( "bad extract band" ) ); return( -1 ); } if( extract->band == 0 && extract->n == bands ) return( vips_bandary_copy( bandary ) ); } if( VIPS_OBJECT_CLASS( vips_extract_band_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_extract_band_class_init( VipsExtractBandClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); VIPS_DEBUG_MSG( "vips_extract_band_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "extract_band"; vobject_class->description = _( "extract band from an image" ); vobject_class->build = vips_extract_band_build; bandary_class->process_line = vips_extract_band_buffer; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractBand, in ) ); VIPS_ARG_INT( class, "band", 3, _( "Band" ), _( "Band to extract" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsExtractBand, band ), 0, RANGE, 0 ); VIPS_ARG_INT( class, "n", 4, _( "n" ), _( "Number of bands to extract" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsExtractBand, n ), 1, RANGE, 1 ); } static void vips_extract_band_init( VipsExtractBand *extract ) { extract->n = 1; } /** * vips_extract_band: * @in: input image * @out: output image * @band: band to extract * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @n: number of bands to extract * * Extract a band or bands from an image. Extracting out of range is an error. * * See also: vips_extract_area(). * * Returns: 0 on success, -1 on error. */ int vips_extract_band( VipsImage *in, VipsImage **out, int band, ... ) { va_list ap; int result; va_start( ap, band ); result = vips_call_split( "extract_band", ap, in, out, band ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/cast.c0000664000175000017500000004401712651122746014376 00000000000000/* cast an image to a numerical format * * Author: Nicos Dessipris * Written on: 07/03/1991 * Modified on: * 04/05/1992 JC * - works for char, uchar too * - floating point code removed from integer clip operations * - uses nint() instead of own rounding code * - calculated the number of >255 clips for float/double input * incorrectly * - rejects complex input correctly now * 27/4/93 JC * - adapted to work with partial images * - nint() removed, now just +0.5 * - im_warning code removed * 30/6/93 JC * - adapted for partial v2 * 31/8/93 JC * - now detects and prints over/underflows * 27/10/93 JC * - unsigned integer clips now faster! * - falls back to im_copy() correctly * 5/5/94 JC * - switched to rint() * 18/8/94 JC * - now uses evalend callback * 9/5/95 JC * - now does complex too * 11/7/95 JC * - now uses IM_RINT() macro * 10/3/01 JC * - slightly faster and simpler * - generalised to im_clip2fmt(), all other clippers now just call * this * 21/4/04 JC * - now does floor(), not rint() ... you'll need to round yourself * before calling this if you want round-to-nearest * 7/11/07 * - use new evalstart/evalend system * 26/8/08 * - oops, complex->complex conversion was broken * 27/1/10 * - modernised * - gtk-doc * 27/10/11 * - redone as a class * 10/4/12 * - cast to uint now removes <0 values * 11/2/15 * - add @shift option */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsCast { VipsConversion parent_instance; VipsImage *in; VipsBandFormat format; gboolean shift; int underflow; /* Number of underflows */ int overflow; /* Number of overflows */ } VipsCast; typedef VipsConversionClass VipsCastClass; G_DEFINE_TYPE( VipsCast, vips_cast, VIPS_TYPE_CONVERSION ); static void vips_cast_preeval( VipsImage *image, VipsProgress *progress, VipsCast *cast ) { cast->overflow = 0; cast->underflow = 0; } static void vips_cast_posteval( VipsImage *image, VipsProgress *progress, VipsCast *cast ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( cast ); if( cast->overflow || cast->underflow ) vips_warn( class->nickname, _( "%d underflows and %d overflows detected" ), cast->underflow, cast->overflow ); } /* Our sequence value: the region this sequence is using, and two local stats. */ typedef struct { VipsRegion *ir; /* Input region */ int underflow; /* Number of underflows */ int overflow; /* Number of overflows */ } VipsCastSequence; /* Destroy a sequence value. */ static int vips_cast_stop( void *vseq, void *a, void *b ) { VipsCastSequence *seq = (VipsCastSequence *) vseq; VipsCast *cast = (VipsCast *) b; /* Add to global stats. */ cast->underflow += seq->underflow; cast->overflow += seq->overflow; VIPS_FREEF( g_object_unref, seq->ir ); g_free( seq ); return( 0 ); } /* Make a sequence value. */ static void * vips_cast_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsCastSequence *seq; seq = g_new( VipsCastSequence, 1 ); seq->ir = vips_region_new( in ); seq->overflow = 0; seq->underflow = 0; if( !seq->ir ) { vips_cast_stop( seq, a, b ); return( NULL ); } return( seq ); } /* Rightshift an integer type, ie. sizeof(ITYPE) > sizeof(OTYPE). */ #define VIPS_SHIFT_RIGHT( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ int n = ((int) sizeof( ITYPE ) << 3) - ((int) sizeof( OTYPE ) << 3); \ \ g_assert( sizeof( ITYPE ) > sizeof( OTYPE ) ); \ \ for( x = 0; x < sz; x++ ) \ q[x] = p[x] >> n; \ } /* Leftshift an integer type, ie. sizeof(ITYPE) < sizeof(OTYPE). We need to * copy the bottom bit up into the fresh new bits */ #define VIPS_SHIFT_LEFT( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ int n = ((int) sizeof( OTYPE ) << 3) - ((int) sizeof( ITYPE ) << 3); \ \ g_assert( sizeof( ITYPE ) < sizeof( OTYPE ) ); \ \ for( x = 0; x < sz; x++ ) \ q[x] = (p[x] << n) | (((p[x] & 1) << n) - (p[x] & 1)); \ } /* Cast int types to an int type. */ #define VIPS_CLIP_INT_INT( ITYPE, OTYPE, VIPS_CLIP ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ int t = p[x]; \ \ VIPS_CLIP( t, seq ); \ \ q[x] = t; \ } \ } /* Int to int handling. */ #define VIPS_INT_INT( ITYPE, OTYPE, VIPS_CLIP ) { \ if( cast->shift && \ sizeof( ITYPE ) > sizeof( OTYPE ) ) { \ VIPS_SHIFT_RIGHT( ITYPE, OTYPE ); \ } \ else if( cast->shift ) { \ VIPS_SHIFT_LEFT( ITYPE, OTYPE ); \ } \ else { \ VIPS_CLIP_INT_INT( ITYPE, OTYPE, VIPS_CLIP ); \ } \ } /* Cast float types to an int type. */ #define VIPS_CLIP_FLOAT_INT( ITYPE, OTYPE, VIPS_CLIP ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ ITYPE v = VIPS_FLOOR( p[x] ); \ \ VIPS_CLIP( v, seq ); \ \ q[x] = v; \ } \ } /* Cast complex types to an int type. Just take the real part. */ #define VIPS_CLIP_COMPLEX_INT( ITYPE, OTYPE, VIPS_CLIP ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ ITYPE v = VIPS_FLOOR( p[0] ); \ p += 2; \ \ VIPS_CLIP( v, seq ); \ \ q[x] = v; \ } \ } /* Cast non-complex types to a float type. */ #define VIPS_CLIP_REAL_FLOAT( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) \ q[x] = p[x]; \ } /* Cast complex types to a float type ... just take real. */ #define VIPS_CLIP_COMPLEX_FLOAT( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[x] = p[0]; \ p += 2; \ } \ } /* Cast any non-complex to a complex type ... set imaginary to zero. */ #define VIPS_CLIP_REAL_COMPLEX( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[0] = p[x]; \ q[1] = 0.0; \ q += 2; \ } \ } /* Cast any complex to a complex type. */ #define VIPS_CLIP_COMPLEX_COMPLEX( ITYPE, OTYPE ) { \ ITYPE * restrict p = (ITYPE *) in; \ OTYPE * restrict q = (OTYPE *) out; \ \ for( x = 0; x < sz; x++ ) { \ q[0] = p[0]; \ q[1] = p[1]; \ p += 2; \ q += 2; \ } \ } #define BAND_SWITCH_INNER( ITYPE, INT, FLOAT, COMPLEX ) { \ switch( conversion->out->BandFmt ) { \ case VIPS_FORMAT_UCHAR: \ INT( ITYPE, unsigned char, VIPS_CLIP_UCHAR ); \ break; \ \ case VIPS_FORMAT_CHAR: \ INT( ITYPE, signed char, VIPS_CLIP_CHAR ); \ break; \ \ case VIPS_FORMAT_USHORT: \ INT( ITYPE, unsigned short, VIPS_CLIP_USHORT ); \ break; \ \ case VIPS_FORMAT_SHORT: \ INT( ITYPE, signed short, VIPS_CLIP_SHORT ); \ break; \ \ case VIPS_FORMAT_UINT: \ INT( ITYPE, unsigned int, VIPS_CLIP_UINT ); \ break; \ \ case VIPS_FORMAT_INT: \ INT( ITYPE, signed int, VIPS_CLIP_NONE ); \ break; \ \ case VIPS_FORMAT_FLOAT: \ FLOAT( ITYPE, float ); \ break; \ \ case VIPS_FORMAT_DOUBLE: \ FLOAT( ITYPE, double ); \ break; \ \ case VIPS_FORMAT_COMPLEX: \ COMPLEX( ITYPE, float ); \ break; \ \ case VIPS_FORMAT_DPCOMPLEX: \ COMPLEX( ITYPE, double ); \ break; \ \ default: \ g_assert_not_reached(); \ } \ } static int vips_cast_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsCastSequence *seq = (VipsCastSequence *) vseq; VipsRegion *ir = seq->ir; VipsCast *cast = (VipsCast *) b; VipsConversion *conversion = (VipsConversion *) b; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int sz = VIPS_REGION_N_ELEMENTS( or ); int x, y; if( vips_region_prepare( ir, r ) ) return( -1 ); VIPS_GATE_START( "vips_cast_gen: work" ); for( y = to; y < bo; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, le, y ); VipsPel *out = VIPS_REGION_ADDR( or, le, y ); switch( cast->in->BandFmt ) { case VIPS_FORMAT_UCHAR: BAND_SWITCH_INNER( unsigned char, VIPS_INT_INT, VIPS_CLIP_REAL_FLOAT, VIPS_CLIP_REAL_COMPLEX ); break; case VIPS_FORMAT_CHAR: BAND_SWITCH_INNER( signed char, VIPS_INT_INT, VIPS_CLIP_REAL_FLOAT, VIPS_CLIP_REAL_COMPLEX ); break; case VIPS_FORMAT_USHORT: BAND_SWITCH_INNER( unsigned short, VIPS_INT_INT, VIPS_CLIP_REAL_FLOAT, VIPS_CLIP_REAL_COMPLEX ); break; case VIPS_FORMAT_SHORT: BAND_SWITCH_INNER( signed short, VIPS_INT_INT, VIPS_CLIP_REAL_FLOAT, VIPS_CLIP_REAL_COMPLEX ); break; case VIPS_FORMAT_UINT: BAND_SWITCH_INNER( unsigned int, VIPS_INT_INT, VIPS_CLIP_REAL_FLOAT, VIPS_CLIP_REAL_COMPLEX ); break; case VIPS_FORMAT_INT: BAND_SWITCH_INNER( signed int, VIPS_INT_INT, VIPS_CLIP_REAL_FLOAT, VIPS_CLIP_REAL_COMPLEX ); break; case VIPS_FORMAT_FLOAT: BAND_SWITCH_INNER( float, VIPS_CLIP_FLOAT_INT, VIPS_CLIP_REAL_FLOAT, VIPS_CLIP_REAL_COMPLEX ); break; case VIPS_FORMAT_DOUBLE: BAND_SWITCH_INNER( double, VIPS_CLIP_FLOAT_INT, VIPS_CLIP_REAL_FLOAT, VIPS_CLIP_REAL_COMPLEX ); break; case VIPS_FORMAT_COMPLEX: BAND_SWITCH_INNER( float, VIPS_CLIP_COMPLEX_INT, VIPS_CLIP_COMPLEX_FLOAT, VIPS_CLIP_COMPLEX_COMPLEX ); break; case VIPS_FORMAT_DPCOMPLEX: BAND_SWITCH_INNER( double, VIPS_CLIP_COMPLEX_INT, VIPS_CLIP_COMPLEX_FLOAT, VIPS_CLIP_COMPLEX_COMPLEX ); break; default: g_assert_not_reached(); } } VIPS_GATE_STOP( "vips_cast_gen: work" ); return( 0 ); } static int vips_cast_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsCast *cast = (VipsCast *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_cast_parent_class )->build( object ) ) return( -1 ); in = cast->in; /* Trivial case: fall back to copy(). */ if( in->BandFmt == cast->format ) return( vips_image_write( in, conversion->out ) ); if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); conversion->out->BandFmt = cast->format; g_signal_connect( in, "preeval", G_CALLBACK( vips_cast_preeval ), cast ); g_signal_connect( in, "posteval", G_CALLBACK( vips_cast_posteval ), cast ); if( vips_image_generate( conversion->out, vips_cast_start, vips_cast_gen, vips_cast_stop, in, cast ) ) return( -1 ); return( 0 ); } static void vips_cast_class_init( VipsCastClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_cast_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "cast"; vobject_class->description = _( "cast an image" ); vobject_class->build = vips_cast_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCast, in ) ); VIPS_ARG_ENUM( class, "format", 6, _( "Format" ), _( "Format to cast to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCast, format ), VIPS_TYPE_BAND_FORMAT, VIPS_FORMAT_UCHAR ); VIPS_ARG_BOOL( class, "shift", 7, _( "Shift" ), _( "Shift integer values up and down" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCast, shift ), FALSE ); } static void vips_cast_init( VipsCast *cast ) { } static int vips_castv( VipsImage *in, VipsImage **out, VipsBandFormat format, va_list ap ) { return( vips_call_split( "cast", ap, in, out, format ) ); } /** * vips_cast: * @in: input image * @out: output image * @format: format to convert to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @shift: integer values are shifted * * Convert @in to @format. You can convert between any pair of formats. * Floats are truncated (not rounded). Out of range values are clipped. * * Casting from complex to real returns the real part. * * If @shift is %TRUE, integer values are shifted up and down. For example, * casting from unsigned 8 bit to unsigned 16 bit would * shift every value left by 8 bits. The bottom bit is copied into the new * bits, so 255 would become 65535. * * See also: vips_scale(), vips_complexform(), vips_real(), vips_imag(), * vips_cast_uchar(), vips_msb(). * * Returns: 0 on success, -1 on error */ int vips_cast( VipsImage *in, VipsImage **out, VipsBandFormat format, ... ) { va_list ap; int result; va_start( ap, format ); result = vips_castv( in, out, format, ap ); va_end( ap ); return( result ); } /** * vips_cast_uchar: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_UCHAR. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_uchar( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_UCHAR, ap ); va_end( ap ); return( result ); } /** * vips_cast_char: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_CHAR. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_char( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_CHAR, ap ); va_end( ap ); return( result ); } /** * vips_cast_ushort: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_USHORT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_ushort( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_USHORT, ap ); va_end( ap ); return( result ); } /** * vips_cast_short: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_SHORT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_short( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_SHORT, ap ); va_end( ap ); return( result ); } /** * vips_cast_uint: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_UINT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_uint( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_UINT, ap ); va_end( ap ); return( result ); } /** * vips_cast_int: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_INT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_int( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_INT, ap ); va_end( ap ); return( result ); } /** * vips_cast_float: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_FLOAT. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_float( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_FLOAT, ap ); va_end( ap ); return( result ); } /** * vips_cast_double: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_DOUBLE. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_double( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_DOUBLE, ap ); va_end( ap ); return( result ); } /** * vips_cast_complex: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_COMPLEX. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_complex( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_COMPLEX, ap ); va_end( ap ); return( result ); } /** * vips_cast_dpcomplex: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert @in to #VIPS_FORMAT_DPCOMPLEX. See vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_cast_dpcomplex( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_castv( in, out, VIPS_FORMAT_DPCOMPLEX, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/bandunfold.c0000664000175000017500000001234112571531237015553 00000000000000/* Fold up x into bands. * * 5/6/15 * - from copy.c * 10/6/15 * - add @factor option */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsBandunfold { VipsConversion parent_instance; /* The input image. */ VipsImage *in; int factor; } VipsBandunfold; typedef VipsConversionClass VipsBandunfoldClass; G_DEFINE_TYPE( VipsBandunfold, vips_bandunfold, VIPS_TYPE_CONVERSION ); static int vips_bandunfold_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsBandunfold *bandunfold = (VipsBandunfold *) b; VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = ir->im; VipsImage *out = or->im; VipsRect *r = &or->valid; int esize = VIPS_IMAGE_SIZEOF_ELEMENT( in ); int psize = VIPS_IMAGE_SIZEOF_PEL( out ); VipsRect need; int y; need.left = r->left / bandunfold->factor; need.top = r->top; need.width = (1 + r->width) / bandunfold->factor; need.height = r->height; if( vips_region_prepare( ir, &need ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left / bandunfold->factor, r->top + y ) + (r->left % bandunfold->factor) * esize; VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); /* We can't use vips_region_region() since we change pixel * coordinates. */ memcpy( q, p, r->width * psize ); } return( 0 ); } static int vips_bandunfold_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBandunfold *bandunfold = (VipsBandunfold *) object; if( VIPS_OBJECT_CLASS( vips_bandunfold_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( bandunfold->in ) ) return( -1 ); if( bandunfold->factor == 0 ) bandunfold->factor = bandunfold->in->Bands; if( bandunfold->in->Bands % bandunfold->factor != 0 ) { vips_error( class->nickname, "%s", _( "@factor must be a factor of image bands" ) ); return( -1 ); } if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, bandunfold->in, NULL ) ) return( -1 ); conversion->out->Xsize *= bandunfold->factor; conversion->out->Bands /= bandunfold->factor; if( vips_image_generate( conversion->out, vips_start_one, vips_bandunfold_gen, vips_stop_one, bandunfold->in, bandunfold ) ) return( -1 ); return( 0 ); } static void vips_bandunfold_class_init( VipsBandunfoldClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandunfold_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandunfold"; vobject_class->description = _( "unfold image bands into x axis" ); vobject_class->build = vips_bandunfold_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandunfold, in ) ); VIPS_ARG_INT( class, "factor", 11, _( "Factor" ), _( "Unfold by this factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBandunfold, factor ), 0, 10000000, 0 ); } static void vips_bandunfold_init( VipsBandunfold *bandunfold ) { /* 0 means unfold by width, see above. */ bandunfold->factor = 0; } /** * vips_bandunfold: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @factor: unfold by this factor * * Unfold image bands into x axis. * Use @factor to set how much to unfold by: @factor 3, for example, will make * the output image three times wider than the input, and with one third * as many bands. By default, all bands are unfolded. * * See also: vips_csvload(), vips_bandfold(). * * Returns: 0 on success, -1 on error. */ int vips_bandunfold( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "bandunfold", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/tilecache.c0000664000175000017500000006413012651123062015353 00000000000000/* Simple tile or line cache. * * This isn't the same as the sinkscreen cache: we don't sub-divide, and we * single-thread our callee. * * 23/8/06 * - take ownership of reused tiles in case the cache is being shared * 13/2/07 * - release ownership after fillng with pixels in case we read across * threads * 4/2/10 * - gtkdoc * 12/12/10 * - use im_prepare_to() and avoid making a sequence for every cache tile * 5/12/11 * - rework as a class * 23/6/12 * - listen for "minimise" signal * 23/8/12 * - split to line and tile cache * - use a hash table instead of a list * 13/9/12 * - oops, linecache was oversized * 12/11/12 * - make linecache 50% larger to give some slop room * 8/10/12 * - make it optionally threaded * 21/2/13 * - could deadlock if downstream raised an error (thanks Todd) * 25/4/13 * - cache minimisation is optional, see "persistent" flag * 26/8/14 Lovell * - free the hash table in _dispose() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a cache of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG_RED #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" /* A tile in cache can be in one of three states: * * DATA - the tile holds valid pixels * CALC - some thread somewhere is calculating it * PEND - some thread somewhere wants it */ typedef enum VipsTileState { VIPS_TILE_STATE_DATA, VIPS_TILE_STATE_CALC, VIPS_TILE_STATE_PEND } VipsTileState; /* A tile in our cache. */ typedef struct _VipsTile { struct _VipsBlockCache *cache; VipsTileState state; VipsRegion *region; /* Region with private mem for data */ /* We count how many threads are relying on this tile. This tile can't * be flushed if ref_count > 0. */ int ref_count; /* Tile position. Just use left/top to calculate a hash. This is the * key for the hash table. Don't use region->valid in case the region * pointer is NULL. */ VipsRect pos; int time; /* Time of last use for flush */ } VipsTile; typedef struct _VipsBlockCache { VipsConversion parent_instance; VipsImage *in; int tile_width; int tile_height; int max_tiles; VipsAccess access; gboolean threaded; gboolean persistent; int time; /* Update ticks for LRU here */ int ntiles; /* Current cache size */ GMutex *lock; /* Lock everything here */ GCond *new_tile; /* A new tile is ready */ GHashTable *tiles; /* Tiles, hashed by coordinates */ } VipsBlockCache; typedef VipsConversionClass VipsBlockCacheClass; G_DEFINE_ABSTRACT_TYPE( VipsBlockCache, vips_block_cache, VIPS_TYPE_CONVERSION ); #define VIPS_TYPE_BLOCK_CACHE (vips_block_cache_get_type()) static void vips_block_cache_drop_all( VipsBlockCache *cache ) { /* FIXME this is a disaster if active threads are working on tiles. We * should have something to block new requests, and only dispose once * all tiles are unreffed. */ g_hash_table_remove_all( cache->tiles ); } static void vips_block_cache_dispose( GObject *gobject ) { VipsBlockCache *cache = (VipsBlockCache *) gobject; vips_block_cache_drop_all( cache ); VIPS_FREEF( vips_g_mutex_free, cache->lock ); VIPS_FREEF( vips_g_cond_free, cache->new_tile ); if( cache->tiles ) g_assert( g_hash_table_size( cache->tiles ) == 0 ); VIPS_FREEF( g_hash_table_destroy, cache->tiles ); G_OBJECT_CLASS( vips_block_cache_parent_class )->dispose( gobject ); } static void vips_tile_touch( VipsTile *tile ) { g_assert( tile->cache->ntiles >= 0 ); tile->time = tile->cache->time++; } static int vips_tile_move( VipsTile *tile, int x, int y ) { /* We are changing x/y and therefore the hash value. We must unlink * from the old hash position and relink at the new place. */ g_hash_table_steal( tile->cache->tiles, &tile->pos ); tile->pos.left = x; tile->pos.top = y; tile->pos.width = tile->cache->tile_width; tile->pos.height = tile->cache->tile_height; g_hash_table_insert( tile->cache->tiles, &tile->pos, tile ); if( vips_region_buffer( tile->region, &tile->pos ) ) return( -1 ); /* No data yet, but someone must want it. */ tile->state = VIPS_TILE_STATE_PEND; return( 0 ); } static VipsTile * vips_tile_new( VipsBlockCache *cache, int x, int y ) { VipsTile *tile; if( !(tile = VIPS_NEW( NULL, VipsTile )) ) return( NULL ); tile->cache = cache; tile->state = VIPS_TILE_STATE_PEND; tile->ref_count = 0; tile->region = NULL; tile->time = cache->time; tile->pos.left = x; tile->pos.top = y; tile->pos.width = cache->tile_width; tile->pos.height = cache->tile_height; g_hash_table_insert( cache->tiles, &tile->pos, tile ); g_assert( cache->ntiles >= 0 ); cache->ntiles += 1; if( !(tile->region = vips_region_new( cache->in )) ) { g_hash_table_remove( cache->tiles, &tile->pos ); return( NULL ); } vips__region_no_ownership( tile->region ); if( vips_tile_move( tile, x, y ) ) { g_hash_table_remove( cache->tiles, &tile->pos ); return( NULL ); } return( tile ); } /* Do we have a tile in the cache? */ static VipsTile * vips_tile_search( VipsBlockCache *cache, int x, int y ) { VipsRect pos; VipsTile *tile; pos.left = x; pos.top = y; pos.width = cache->tile_width; pos.height = cache->tile_height; tile = (VipsTile *) g_hash_table_lookup( cache->tiles, &pos ); return( tile ); } typedef struct _VipsTileSearch { VipsTile *tile; int oldest; int topmost; } VipsTileSearch; static void vips_tile_search_recycle( gpointer key, gpointer value, gpointer user_data ) { VipsTile *tile = (VipsTile *) value; VipsBlockCache *cache = tile->cache; VipsTileSearch *search = (VipsTileSearch *) user_data; /* Only consider unreffed tiles for recycling. */ if( !tile->ref_count ) { switch( cache->access ) { case VIPS_ACCESS_RANDOM: if( tile->time < search->oldest ) { search->oldest = tile->time; search->tile = tile; } break; case VIPS_ACCESS_SEQUENTIAL: case VIPS_ACCESS_SEQUENTIAL_UNBUFFERED: if( tile->pos.top < search->topmost ) { search->topmost = tile->pos.top; search->tile = tile; } break; default: g_assert_not_reached(); } } } /* Find existing tile, make a new tile, or if we have a full set of tiles, * reuse one. */ static VipsTile * vips_tile_find( VipsBlockCache *cache, int x, int y ) { VipsTile *tile; VipsTileSearch search; /* In cache already? */ if( (tile = vips_tile_search( cache, x, y )) ) { VIPS_DEBUG_MSG_RED( "vips_tile_find: " "tile %d x %d in cache\n", x, y ); return( tile ); } /* VipsBlockCache not full? */ if( cache->max_tiles == -1 || cache->ntiles < cache->max_tiles ) { VIPS_DEBUG_MSG_RED( "vips_tile_find: " "making new tile at %d x %d\n", x, y ); if( !(tile = vips_tile_new( cache, x, y )) ) return( NULL ); return( tile ); } /* Reuse an old one. */ search.oldest = cache->time; search.topmost = cache->in->Ysize; search.tile = NULL; g_hash_table_foreach( cache->tiles, vips_tile_search_recycle, &search ); tile = search.tile; if( !tile ) { /* There are no tiles we can reuse -- we have to make another * for now. They will get culled down again next time around. */ if( !(tile = vips_tile_new( cache, x, y )) ) return( NULL ); return( tile ); } VIPS_DEBUG_MSG_RED( "vips_tile_find: reusing tile %d x %d\n", tile->pos.left, tile->pos.top ); if( vips_tile_move( tile, x, y ) ) return( NULL ); return( tile ); } static gboolean vips_tile_unlocked( gpointer key, gpointer value, gpointer user_data ) { VipsTile *tile = (VipsTile *) value; return( !tile->ref_count ); } static void vips_block_cache_minimise( VipsImage *image, VipsBlockCache *cache ) { /* We can't drop tiles that are in use. */ g_mutex_lock( cache->lock ); g_hash_table_foreach_remove( cache->tiles, vips_tile_unlocked, NULL ); g_mutex_unlock( cache->lock ); } static int vips_block_cache_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBlockCache *cache = (VipsBlockCache *) object; VIPS_DEBUG_MSG( "vips_block_cache_build:\n" ); if( VIPS_OBJECT_CLASS( vips_block_cache_parent_class )-> build( object ) ) return( -1 ); VIPS_DEBUG_MSG( "vips_block_cache_build: max size = %g MB\n", (cache->max_tiles * cache->tile_width * cache->tile_height * VIPS_IMAGE_SIZEOF_PEL( cache->in )) / (1024 * 1024.0) ); if( !cache->persistent ) g_signal_connect( conversion->out, "minimise", G_CALLBACK( vips_block_cache_minimise ), cache ); return( 0 ); } static void vips_block_cache_class_init( VipsBlockCacheClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_block_cache_class_init\n" ); gobject_class->dispose = vips_block_cache_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "blockcache"; vobject_class->description = _( "cache an image" ); vobject_class->build = vips_block_cache_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBlockCache, in ) ); VIPS_ARG_INT( class, "tile_height", 4, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, tile_height ), 1, 1000000, 128 ); VIPS_ARG_ENUM( class, "access", 6, _( "Access" ), _( "Expected access pattern" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, access ), VIPS_TYPE_ACCESS, VIPS_ACCESS_RANDOM ); VIPS_ARG_BOOL( class, "threaded", 7, _( "Threaded" ), _( "Allow threaded access" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, threaded ), FALSE ); VIPS_ARG_BOOL( class, "persistent", 8, _( "Persistent" ), _( "Keep cache between evaluations" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, persistent ), FALSE ); } static unsigned int vips_rect_hash( VipsRect *pos ) { guint hash; /* We could shift down by the tile size? * * X discrimination is more important than Y, since * most tiles will have a similar Y. */ hash = pos->left ^ (pos->top << 16); return( hash ); } static gboolean vips_rect_equal( VipsRect *a, VipsRect *b ) { return( a->left == b->left && a->top == b->top ); } static void vips_tile_destroy( VipsTile *tile ) { VipsBlockCache *cache = tile->cache; VIPS_DEBUG_MSG_RED( "vips_tile_destroy: tile %d, %d (%p)\n", tile->pos.left, tile->pos.top, tile ); cache->ntiles -= 1; g_assert( cache->ntiles >= 0 ); tile->cache = NULL; VIPS_UNREF( tile->region ); vips_free( tile ); } static void vips_block_cache_init( VipsBlockCache *cache ) { cache->tile_width = 128; cache->tile_height = 128; cache->max_tiles = 1000; cache->access = VIPS_ACCESS_RANDOM; cache->threaded = FALSE; cache->persistent = FALSE; cache->time = 0; cache->ntiles = 0; cache->lock = vips_g_mutex_new(); cache->new_tile = vips_g_cond_new(); cache->tiles = g_hash_table_new_full( (GHashFunc) vips_rect_hash, (GEqualFunc) vips_rect_equal, NULL, (GDestroyNotify) vips_tile_destroy ); } typedef struct _VipsTileCache { VipsBlockCache parent_instance; } VipsTileCache; typedef VipsBlockCacheClass VipsTileCacheClass; G_DEFINE_TYPE( VipsTileCache, vips_tile_cache, VIPS_TYPE_BLOCK_CACHE ); static void vips_tile_unref( VipsTile *tile ) { g_assert( tile->ref_count > 0 ); tile->ref_count -= 1; } static void vips_tile_ref( VipsTile *tile ) { tile->ref_count += 1; g_assert( tile->ref_count > 0 ); } static void vips_tile_cache_unref( GSList *work ) { GSList *p; for( p = work; p; p = p->next ) vips_tile_unref( (VipsTile *) p->data ); g_slist_free( work ); } /* Make a set of work tiles. */ static GSList * vips_tile_cache_ref( VipsBlockCache *cache, VipsRect *r ) { const int tw = cache->tile_width; const int th = cache->tile_height; /* Find top left of tiles we need. */ const int xs = (r->left / tw) * tw; const int ys = (r->top / th) * th; GSList *work; VipsTile *tile; int x, y; /* Ref all the tiles we will need. */ work = NULL; for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += th ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += tw ) { if( !(tile = vips_tile_find( cache, x, y )) ) { vips_tile_cache_unref( work ); return( NULL ); } vips_tile_touch( tile ); vips_tile_ref( tile ); /* We must append, since we want to keep tile ordering * for sequential sources. */ work = g_slist_append( work, tile ); VIPS_DEBUG_MSG_RED( "vips_tile_cache_ref: " "tile %d, %d (%p)\n", x, y, tile ); } return( work ); } static void vips_tile_paste( VipsTile *tile, VipsRegion *or ) { VipsRect hit; /* The part of the tile that we need. */ vips_rect_intersectrect( &or->valid, &tile->pos, &hit ); if( !vips_rect_isempty( &hit ) ) vips_region_copy( tile->region, or, &hit, hit.left, hit.top ); } /* Also called from vips_line_cache_gen(), beware. */ static int vips_tile_cache_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *in = (VipsRegion *) seq; VipsBlockCache *cache = (VipsBlockCache *) b; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( cache ); VipsRect *r = &or->valid; VipsTile *tile; GSList *work; GSList *p; VIPS_GATE_START( "vips_tile_cache_gen: wait1" ); g_mutex_lock( cache->lock ); VIPS_GATE_STOP( "vips_tile_cache_gen: wait1" ); VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: " "left = %d, top = %d, width = %d, height = %d\n", r->left, r->top, r->width, r->height ); /* Ref all the tiles we will need. */ work = vips_tile_cache_ref( cache, r ); while( work ) { /* Search for data tiles: easy, we can just paste those in. */ for(;;) { for( p = work; p; p = p->next ) { tile = (VipsTile *) p->data; if( tile->state == VIPS_TILE_STATE_DATA ) break; } if( !p ) break; VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: " "pasting %p\n", tile ); vips_tile_paste( tile, or ); /* We're done with this tile. */ work = g_slist_remove( work, tile ); vips_tile_unref( tile ); } /* Calculate the first PEND tile we find on the work list. We * don't calculate all PEND tiles since after the first, more * DATA tiles might heve been made available by other threads * and we want to get them out of the way as soon as we can. */ for( p = work; p; p = p->next ) { tile = (VipsTile *) p->data; if( tile->state == VIPS_TILE_STATE_PEND ) { int result; tile->state = VIPS_TILE_STATE_CALC; VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: " "calc of %p\n", tile ); /* In threaded mode, we let other threads run * while we calc this tile. In non-threaded * mode, we keep the lock and make 'em wait. */ if( cache->threaded ) g_mutex_unlock( cache->lock ); result = vips_region_prepare_to( in, tile->region, &tile->pos, tile->pos.left, tile->pos.top ); if( cache->threaded ) { VIPS_GATE_START( "vips_tile_cache_gen: " "wait2" ); g_mutex_lock( cache->lock ); VIPS_GATE_STOP( "vips_tile_cache_gen: " "wait2" ); } /* If there was an error calculating this * tile, just warn and carry on. * * This can happen with things like reading * .scn files via openslide. We don't want the * read to fail because of one broken tile. */ if( result ) { VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: " "error on tile %p\n", tile ); vips_warn( class->nickname, _( "error reading tile %dx%d: " "%s" ), tile->pos.left, tile->pos.top, vips_error_buffer() ); vips_error_clear(); vips_region_black( tile->region ); } tile->state = VIPS_TILE_STATE_DATA; vips_tile_touch( tile ); /* Let everyone know there's a new DATA tile. * They need to all check their work lists. */ g_cond_broadcast( cache->new_tile ); break; } } /* There are no PEND or DATA tiles, we must need a tile some * other thread is currently calculating. * * We must block until the CALC tiles we need are done. */ if( !p && work ) { for( p = work; p; p = p->next ) { tile = (VipsTile *) p->data; g_assert( tile->state == VIPS_TILE_STATE_CALC ); } VIPS_DEBUG_MSG_RED( "vips_tile_cache_gen: waiting\n" ); VIPS_GATE_START( "vips_tile_cache_gen: wait3" ); g_cond_wait( cache->new_tile, cache->lock ); VIPS_GATE_STOP( "vips_tile_cache_gen: wait3" ); VIPS_DEBUG_MSG( "vips_tile_cache_gen: awake!\n" ); } } g_mutex_unlock( cache->lock ); return( 0 ); } static int vips_tile_cache_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBlockCache *block_cache = (VipsBlockCache *) object; VipsTileCache *cache = (VipsTileCache *) object; VIPS_DEBUG_MSG( "vips_tile_cache_build\n" ); if( VIPS_OBJECT_CLASS( vips_tile_cache_parent_class )-> build( object ) ) return( -1 ); if( vips_image_pio_input( block_cache->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, block_cache->in, NULL ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_tile_cache_gen, vips_stop_one, block_cache->in, cache ) ) return( -1 ); return( 0 ); } static void vips_tile_cache_class_init( VipsTileCacheClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_tile_cache_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "tilecache"; vobject_class->description = _( "cache an image as a set of tiles" ); vobject_class->build = vips_tile_cache_build; VIPS_ARG_INT( class, "tile_width", 3, _( "Tile width" ), _( "Tile width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, tile_width ), 1, 1000000, 128 ); VIPS_ARG_INT( class, "max_tiles", 5, _( "Max tiles" ), _( "Maximum number of tiles to cache" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBlockCache, max_tiles ), -1, 1000000, 1000 ); } static void vips_tile_cache_init( VipsTileCache *cache ) { } /** * vips_tilecache: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @tile_width: width of tiles in cache * @tile_height: height of tiles in cache * @max_tiles: maximum number of tiles to cache * @access: hint expected access pattern #VipsAccess * @threaded: allow many threads * @persistent: don't drop cache at end of computation * * This operation behaves rather like vips_copy() between images * @in and @out, except that it keeps a cache of computed pixels. * This cache is made of up to @max_tiles tiles (a value of -1 * means any number of tiles), and each tile is of size @tile_width * by @tile_height pixels. * * Each cache tile is made with a single call to * vips_region_prepare(). * * When the cache fills, a tile is chosen for reuse. If @access is * #VIPS_ACCESS_RANDOM, then the least-recently-used tile is reused. If * @access is #VIPS_ACCESS_SEQUENTIAL or #VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, * the top-most tile is reused. * * By default, @tile_width and @tile_height are 128 pixels, and the operation * will cache up to 1,000 tiles. @access defaults to #VIPS_ACCESS_RANDOM. * * Normally, only a single thread at once is allowed to calculate tiles. If * you set @threaded to %TRUE, vips_tilecache() will allow many threads to * calculate tiles at once, and share the cache between them. * * Normally the cache is dropped when computation finishes. Set @persistent to * %TRUE to keep the cache between computations. * * See also: vips_cache(), vips_linecache(). * * Returns: 0 on success, -1 on error. */ int vips_tilecache( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "tilecache", ap, in, out ); va_end( ap ); return( result ); } typedef struct _VipsLineCache { VipsBlockCache parent_instance; VipsAccess access; } VipsLineCache; typedef VipsBlockCacheClass VipsLineCacheClass; G_DEFINE_TYPE( VipsLineCache, vips_line_cache, VIPS_TYPE_BLOCK_CACHE ); static int vips_line_cache_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsBlockCache *block_cache = (VipsBlockCache *) b; VIPS_GATE_START( "vips_line_cache_gen: wait" ); g_mutex_lock( block_cache->lock ); VIPS_GATE_STOP( "vips_line_cache_gen: wait" ); /* We size up the cache to the largest request. */ if( or->valid.height > block_cache->max_tiles * block_cache->tile_height ) { block_cache->max_tiles = 1 + (or->valid.height / block_cache->tile_height); VIPS_DEBUG_MSG( "vips_line_cache_gen: bumped max_tiles to %d\n", block_cache->max_tiles ); } g_mutex_unlock( block_cache->lock ); return( vips_tile_cache_gen( or, seq, a, b, stop ) ); } static int vips_line_cache_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBlockCache *block_cache = (VipsBlockCache *) object; VipsLineCache *cache = (VipsLineCache *) object; VIPS_DEBUG_MSG( "vips_line_cache_build\n" ); if( VIPS_OBJECT_CLASS( vips_line_cache_parent_class )-> build( object ) ) return( -1 ); /* tile_height is set by a param, or defaulted below. */ block_cache->tile_width = block_cache->in->Xsize; block_cache->access = cache->access; if( cache->access == VIPS_ACCESS_SEQUENTIAL_UNBUFFERED ) /* A tile per thread. * * Imagine scanline tiles and four threads. And add a bit for * slop. */ block_cache->max_tiles = 2 * vips_concurrency_get(); else { /* Enough lines for two complete buffers would be exactly * right. Make it 4 to give us some slop room. * * This can go up with request size, see vips_line_cache_gen(). */ int tile_width; int tile_height; int n_lines; vips_get_tile_size( block_cache->in, &tile_width, &tile_height, &n_lines ); block_cache->max_tiles = 4 * (1 + n_lines / block_cache->tile_height); VIPS_DEBUG_MSG( "vips_line_cache_build: n_lines = %d\n", n_lines ); } VIPS_DEBUG_MSG( "vips_line_cache_build: " "max_tiles = %d, tile_height = %d\n", block_cache->max_tiles, block_cache->tile_height ); VIPS_DEBUG_MSG( "vips_line_cache_build: max size = %g MB\n", (block_cache->max_tiles * block_cache->tile_width * block_cache->tile_height * VIPS_IMAGE_SIZEOF_PEL( block_cache->in )) / (1024 * 1024.0) ); if( vips_image_pio_input( block_cache->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, block_cache->in, NULL ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_line_cache_gen, vips_stop_one, block_cache->in, cache ) ) return( -1 ); return( 0 ); } static void vips_line_cache_class_init( VipsLineCacheClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_line_cache_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "linecache"; vobject_class->description = _( "cache an image as a set of lines" ); vobject_class->build = vips_line_cache_build; VIPS_ARG_ENUM( class, "access", 6, _( "Access" ), _( "Expected access pattern" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsLineCache, access ), VIPS_TYPE_ACCESS, VIPS_ACCESS_SEQUENTIAL ); } static void vips_line_cache_init( VipsLineCache *cache ) { cache->access = VIPS_ACCESS_SEQUENTIAL; } /** * vips_linecache: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @access: hint expected access pattern #VipsAccess * @tile_height: height of tiles in cache * @threaded: allow many threads * * This operation behaves rather like vips_copy() between images * @in and @out, except that it keeps a cache of computed scanlines. * * The number of lines cached is enough for a small amount of non-local * access. If you know you will not be making any non-local access, you can * save some memory and set @access to #VIPS_ACCESS_SEQUENTIAL_UNBUFFERED. * * Each cache tile is made with a single call to * vips_region_prepare(). * * When the cache fills, a tile is chosen for reuse. If @access is * #VIPS_ACCESS_RANDOM, then the least-recently-used tile is reused. If * @access is #VIPS_ACCESS_SEQUENTIAL or #VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, * the top-most tile is reused. @access defaults to #VIPS_ACCESS_RANDOM. * * @tile_height can be used to set the size of the strips that * vips_linecache() uses. The default is 1 (a single scanline). * * Normally, only a single thread at once is allowed to calculate tiles. If * you set @threaded to %TRUE, vips_linecache() will allow many threads to * calculate tiles at once and share the cache between them. * * See also: vips_cache(), vips_tilecache(). * * Returns: 0 on success, -1 on error. */ int vips_linecache( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "linecache", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/sequential.c0000664000175000017500000002553512530402247015613 00000000000000/* Like copy, but ensure sequential access. * * Handy with sequential for loading files formats which are strictly * top-to-bottom, like PNG. * * 15/2/12 * - from VipsForeignLoad * 14/7/12 * - support skip forwards as well, so we can do extract/insert * 10/8/12 * - add @trace option * 21/8/12 * - remove skip forward, instead do thread stalling and have an * integrated cache * - use linecache * 4/9/12 * - stop all threads on error * - don't stall forever, just delay ahead threads * 25/2/14 * - we were allowing skipahead if the first request was for y>0, but * this broke on some busy, many-core systems, see comment below * 10/6/14 * - re-enable skipahead now we have the single-thread-first-tile idea */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a cache of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG_GREEN #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" /* Stall threads that run ahead for up to this long, in seconds. Normally they * will be woken once their data is ready and long before this. The timeout is * just to prevent a total crash in the case of accidental deadlock. * * This has to be a long time: if we're trying to use all cores on a busy * system, it could be ages until all the other threads get a chance to run. */ #define STALL_TIME (60.0) typedef struct _VipsSequential { VipsConversion parent_instance; VipsImage *in; int tile_height; VipsAccess access; gboolean trace; /* Lock access to y_pos with this, use the cond to wake up stalled * threads. */ GMutex *lock; GCond *ready; /* The next read from our source will fetch this scanline, ie. it's 0 * when we start. */ int y_pos; /* If one thread gets an error, we must stop all threads, otherwise we * can stall and never wake. */ int error; } VipsSequential; typedef VipsConversionClass VipsSequentialClass; G_DEFINE_TYPE( VipsSequential, vips_sequential, VIPS_TYPE_CONVERSION ); static void vips_sequential_dispose( GObject *gobject ) { VipsSequential *sequential = (VipsSequential *) gobject; VIPS_FREEF( vips_g_mutex_free, sequential->lock ); VIPS_FREEF( vips_g_cond_free, sequential->ready ); G_OBJECT_CLASS( vips_sequential_parent_class )->dispose( gobject ); } static int vips_sequential_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsSequential *sequential = (VipsSequential *) b; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( sequential ); VipsRect *r = &or->valid; VipsRegion *ir = (VipsRegion *) seq; VIPS_DEBUG_MSG_GREEN( "thread %p request for line %d, height %d\n", g_thread_self(), r->top, r->height ); if( sequential->trace ) vips_info( class->nickname, "request for line %d, height %d", r->top, r->height ); VIPS_GATE_START( "vips_sequential_generate: wait" ); g_mutex_lock( sequential->lock ); VIPS_GATE_STOP( "vips_sequential_generate: wait" ); VIPS_DEBUG_MSG_GREEN( "thread %p has lock ...\n", g_thread_self() ); /* If we've seen an error, everything must stop. */ if( sequential->error ) { g_mutex_unlock( sequential->lock ); return( -1 ); } if( r->top > sequential->y_pos && sequential->y_pos > 0 ) { /* This request is for stuff beyond the current read position, * and this is not the first request. We * stall for a while to give other threads time to catch up. * * The stall can be cancelled by a signal on @ready. * * We don't stall forever, since an error would be better than * deadlock, and we don't fail on timeout, since the timeout * may be harmless. */ #ifdef HAVE_COND_INIT gint64 time; time = g_get_monotonic_time() + STALL_TIME * G_TIME_SPAN_SECOND; #else GTimeVal time; g_get_current_time( &time ); g_time_val_add( &time, STALL_TIME * 1000000 ); #endif VIPS_DEBUG_MSG_GREEN( "thread %p stalling for up to %gs ...\n", g_thread_self(), STALL_TIME ); VIPS_GATE_START( "vips_sequential_generate: wait" ); /* Exit the loop on timeout or condition passes. We have to * be wary of spurious wakeups. */ while( r->top > sequential->y_pos ) #ifdef HAVE_COND_INIT if( !g_cond_wait_until( sequential->ready, sequential->lock, time ) ) break; #else if( !g_cond_timed_wait( sequential->ready, sequential->lock, &time ) ) break; #endif VIPS_GATE_STOP( "vips_sequential_generate: wait" ); VIPS_DEBUG_MSG_GREEN( "thread %p awake again ...\n", g_thread_self() ); } if( r->top > sequential->y_pos ) { /* This is a request for something some way down the image, * and we've fallen through from the stall above. * * Probably the operation is something like extract_area and * we should skip the initial part of the image. In fact, * we read to cache, since it may be useful. */ VipsRect area; VIPS_DEBUG_MSG_GREEN( "thread %p skipping to line %d ...\n", g_thread_self(), r->top ); area.left = 0; area.top = sequential->y_pos; area.width = 1; area.height = r->top - sequential->y_pos; if( vips_region_prepare( ir, &area ) ) { VIPS_DEBUG_MSG( "thread %p error, unlocking ...\n", g_thread_self() ); sequential->error = -1; g_cond_broadcast( sequential->ready ); g_mutex_unlock( sequential->lock ); return( -1 ); } sequential->y_pos = VIPS_RECT_BOTTOM( &area ); } /* This is a request for old or present pixels -- serve from cache. * This may trigger further, sequential reads. */ VIPS_DEBUG_MSG_GREEN( "thread %p reading ...\n", g_thread_self() ); if( vips_region_prepare( ir, r ) || vips_region_region( or, ir, r, r->left, r->top ) ) { VIPS_DEBUG_MSG( "thread %p error, unlocking ...\n", g_thread_self() ); sequential->error = -1; g_cond_broadcast( sequential->ready ); g_mutex_unlock( sequential->lock ); return( -1 ); } if( VIPS_RECT_BOTTOM( r ) > sequential->y_pos ) { /* This request has moved the read point. Update it, and wake * up all stalled threads for a retry. */ sequential->y_pos = VIPS_RECT_BOTTOM( r ); VIPS_DEBUG_MSG_GREEN( "thread %p updating y_pos to %d and " "waking stalled\n", g_thread_self(), sequential->y_pos ); g_cond_broadcast( sequential->ready ); } VIPS_DEBUG_MSG_GREEN( "thread %p unlocking ...\n", g_thread_self() ); g_mutex_unlock( sequential->lock ); return( 0 ); } static int vips_sequential_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsSequential *sequential = (VipsSequential *) object; VipsImage *t; VIPS_DEBUG_MSG( "vips_sequential_build\n" ); if( VIPS_OBJECT_CLASS( vips_sequential_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( sequential->in ) ) return( -1 ); if( vips_linecache( sequential->in, &t, "tile_height", sequential->tile_height, "access", sequential->access, NULL ) ) return( -1 ); vips_object_local( object, t ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, t, NULL ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_sequential_generate, vips_stop_one, t, sequential ) ) return( -1 ); return( 0 ); } static void vips_sequential_class_init( VipsSequentialClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_sequential_class_init\n" ); gobject_class->dispose = vips_sequential_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "sequential"; vobject_class->description = _( "check sequential access" ); vobject_class->build = vips_sequential_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSequential, in ) ); VIPS_ARG_BOOL( class, "trace", 2, _( "trace" ), _( "trace pixel requests" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSequential, trace ), TRUE ); VIPS_ARG_INT( class, "tile_height", 3, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSequential, tile_height ), 1, 1000000, 1 ); VIPS_ARG_ENUM( class, "access", 6, _( "Strategy" ), _( "Expected access pattern" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSequential, access ), VIPS_TYPE_ACCESS, VIPS_ACCESS_SEQUENTIAL ); } static void vips_sequential_init( VipsSequential *sequential ) { sequential->trace = FALSE; sequential->access = VIPS_ACCESS_SEQUENTIAL; sequential->lock = vips_g_mutex_new(); sequential->ready = vips_g_cond_new(); sequential->tile_height = 1; sequential->error = 0; } /** * vips_sequential: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @trace: trace requests * @strip_height: height of cache strips * @access: access pattern * * This operation behaves rather like vips_copy() between images * @in and @out, except that it checks that pixels are only requested * top-to-bottom. If a thread makes an out of order request, it is stalled * until the pack catches up. * * This operation is useful for loading file formats which are * strictly top-to-bottom, like PNG. * * If @trace is true, the operation will print diagnostic messages for each * block of pixels which are processed. This can help find the cause of * non-sequential accesses. * * @strip_height can be used to set the size of the tiles that * vips_sequential() uses. The default value is 1. * * @access can be set to #VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, meaning don't * keep a large cache behind the read point. This can save some memory. * * See also: vips_cache(), vips_linecache(), vips_tilecache(). * * Returns: 0 on success, -1 on error. */ int vips_sequential( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "sequential", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/premultiply.c0000664000175000017500000001626512651123034016025 00000000000000/* premultiply alpha * * Author: John Cupitt * Written on: 7/5/15 * */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsPremultiply { VipsConversion parent_instance; VipsImage *in; double max_alpha; } VipsPremultiply; typedef VipsConversionClass VipsPremultiplyClass; G_DEFINE_TYPE( VipsPremultiply, vips_premultiply, VIPS_TYPE_CONVERSION ); /* Premultiply an n-band image. */ #define PRE_MANY( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) { \ IN alpha = p[bands - 1]; \ IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ double nalpha = (double) clip_alpha / max_alpha; \ \ for( i = 0; i < bands - 1; i++ ) \ q[i] = p[i] * nalpha; \ q[i] = alpha; \ \ p += bands; \ q += bands; \ } \ } /* Special case for RGBA, it's very common. */ #define PRE_RGB( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < width; x++ ) { \ IN alpha = p[3]; \ IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ double nalpha = (double) clip_alpha / max_alpha; \ \ q[0] = p[0] * nalpha; \ q[1] = p[1] * nalpha; \ q[2] = p[2] * nalpha; \ q[3] = alpha; \ \ p += 4; \ q += 4; \ } \ } #define PRE( IN, OUT ) { \ if( bands == 3 ) { \ PRE_RGB( IN, OUT ); \ } \ else { \ PRE_MANY( IN, OUT ); \ } \ } static int vips_premultiply_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsPremultiply *premultiply = (VipsPremultiply *) b; VipsRegion *ir = (VipsRegion *) vseq; VipsImage *im = ir->im; VipsRect *r = &or->valid; int width = r->width; int bands = im->Bands; double max_alpha = premultiply->max_alpha; int x, y, i; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *out = VIPS_REGION_ADDR( or, r->left, r->top + y ); switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: PRE( unsigned char, float ); break; case VIPS_FORMAT_CHAR: PRE( signed char, float ); break; case VIPS_FORMAT_USHORT: PRE( unsigned short, float ); break; case VIPS_FORMAT_SHORT: PRE( signed short, float ); break; case VIPS_FORMAT_UINT: PRE( unsigned int, float ); break; case VIPS_FORMAT_INT: PRE( signed int, float ); break; case VIPS_FORMAT_FLOAT: PRE( float, float ); break; case VIPS_FORMAT_DOUBLE: PRE( double, double ); break; case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: default: g_assert_not_reached(); } } return( 0 ); } static int vips_premultiply_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsPremultiply *premultiply = (VipsPremultiply *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_premultiply_parent_class )-> build( object ) ) return( -1 ); in = premultiply->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; /* Trivial case: fall back to copy(). */ if( in->Bands == 1 ) return( vips_image_write( in, conversion->out ) ); if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); if( in->BandFmt == VIPS_FORMAT_DOUBLE ) conversion->out->BandFmt = VIPS_FORMAT_DOUBLE; else conversion->out->BandFmt = VIPS_FORMAT_FLOAT; if( vips_image_generate( conversion->out, vips_start_one, vips_premultiply_gen, vips_stop_one, in, premultiply ) ) return( -1 ); return( 0 ); } static void vips_premultiply_class_init( VipsPremultiplyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_premultiply_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "premultiply"; vobject_class->description = _( "premultiply image alpha" ); vobject_class->build = vips_premultiply_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPremultiply, in ) ); VIPS_ARG_DOUBLE( class, "max_alpha", 115, _( "Maximum alpha" ), _( "Maximum value of alpha channel" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsPremultiply, max_alpha ), 0, 100000000, 255 ); } static void vips_premultiply_init( VipsPremultiply *premultiply ) { premultiply->max_alpha = 255.0; } /** * vips_premultiply: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @max_alpha: %gdouble, maximum value for alpha * * Premultiplies any alpha channel. * The final band is taken to be the alpha * and the bands are transformed as: * * |[ * alpha = clip( 0, in[in.bands - 1], @max_alpha ); * norm = alpha / @max_alpha; * out = [in[0] * norm, ..., in[in.bands - 1] * norm, alpha]; * |] * * So for an N-band image, the first N - 1 bands are multiplied by the clipped * and normalised final band, the final band is clipped. * If there is only a single band, * the image is passed through unaltered. * * The result is * #VIPS_FORMAT_FLOAT unless the input format is #VIPS_FORMAT_DOUBLE, in which * case the output is double as well. * * @max_alpha has the default value 255. You will need to set this to 65535 * for images with a 16-bit alpha, or perhaps 1.0 for images with a float * alpha. * * Non-complex images only. * * See also: vips_unpremultiply(), vips_flatten(). * * Returns: 0 on success, -1 on error */ int vips_premultiply( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "premultiply", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/bandmean.c0000664000175000017500000001244412651122741015203 00000000000000/* average image bands * * Author: Simon Goodall * Written on: 17/7/07 * 17/7/07 JC * - hacked about a bit * 18/8/09 * - gtkdoc * - get rid of the complex case, just double the width * 19/11/11 * - redo as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "bandary.h" typedef struct _VipsBandmean { VipsBandary parent_instance; VipsImage *in; } VipsBandmean; typedef VipsBandaryClass VipsBandmeanClass; G_DEFINE_TYPE( VipsBandmean, vips_bandmean, VIPS_TYPE_BANDARY ); /* Unsigned int types. Round, keep sum in a larger variable. */ #define UILOOP( TYPE, STYPE ) { \ TYPE *p = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( i = 0; i < sz; i++ ) { \ STYPE sum; \ \ sum = 0; \ for( j = 0; j < bands; j++ ) \ sum += p[j]; \ q[i] = (sum + bands / 2) / bands; \ p += bands; \ } \ } /* Signed int types. Round, keep sum in a larger variable. */ #define SILOOP( TYPE, STYPE ) { \ TYPE *p = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( i = 0; i < sz; i++ ) { \ STYPE sum; \ \ sum = 0; \ for( j = 0; j < bands; j++ ) \ sum += p[j]; \ q[i] = sum > 0 ? \ (sum + bands / 2) / bands : \ (sum - bands / 2) / bands; \ p += bands; \ } \ } /* Float loop. No rounding, sum in same container. */ #define FLOOP( TYPE ) { \ TYPE *p = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( i = 0; i < sz; i++ ) { \ TYPE sum; \ \ sum = 0; \ for( j = 0; j < bands; j++ ) \ sum += p[j]; \ q[i] = sum / bands; \ p += bands; \ } \ } static void vips_bandmean_buffer( VipsBandary *bandary, VipsPel *out, VipsPel **in, int width ) { VipsImage *im = bandary->ready[0]; const int bands = im->Bands; const int sz = width * (vips_band_format_iscomplex( im->BandFmt ) ? 2 : 1); int i, j; switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_CHAR: SILOOP( signed char, int ); break; case VIPS_FORMAT_UCHAR: UILOOP( unsigned char, unsigned int ); break; case VIPS_FORMAT_SHORT: SILOOP( signed short, int ); break; case VIPS_FORMAT_USHORT: UILOOP( unsigned short, unsigned int ); break; case VIPS_FORMAT_INT: SILOOP( signed int, int ); break; case VIPS_FORMAT_UINT: UILOOP( unsigned int, unsigned int ); break; case VIPS_FORMAT_FLOAT: FLOOP( float ); break; case VIPS_FORMAT_DOUBLE: FLOOP( double ); break; case VIPS_FORMAT_COMPLEX: FLOOP( float ); break; case VIPS_FORMAT_DPCOMPLEX: FLOOP( double ); break; default: g_assert_not_reached(); } } static int vips_bandmean_build( VipsObject *object ) { VipsBandary *bandary = (VipsBandary *) object; VipsBandmean *bandmean = (VipsBandmean *) object; bandary->n = 1; bandary->in = &bandmean->in; if( bandmean->in && bandmean->in->Bands == 1 ) return( vips_bandary_copy( bandary ) ); bandary->out_bands = 1; if( VIPS_OBJECT_CLASS( vips_bandmean_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_bandmean_class_init( VipsBandmeanClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "bandmean"; object_class->description = _( "band-wise average" ); object_class->build = vips_bandmean_build; bandary_class->process_line = vips_bandmean_buffer; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandmean, in ) ); } static void vips_bandmean_init( VipsBandmean *bandmean ) { } /** * vips_bandmean: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * This operation writes a one-band image where each pixel is the average of * the bands for that pixel in the input image. The output band format is * the same as the input band format. Integer types use round-to-nearest * averaging. * * See also: vips_add(), vips_avg(), vips_recomb() * * Returns: 0 on success, -1 on error */ int vips_bandmean( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "bandmean", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/falsecolour.c0000664000175000017500000002057112530402247015752 00000000000000/* im_falsecolour * * 23/6/95 JC * - rewritten for PIO * - now walks edges of colour cube to get more saturated appearance * 21/8/05 * - uses falsecolour scale from PET scanner * 7/4/06 * - hmm, reversed scale * 29/1/10 * - cleanups * - gtkdoc * 12/7/11 * - force input to mono 8-bit for the user * 1/8/13 * - redone as a class * 23/1/14 * - oops, was not auto-getting and casting the first band */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconversion.h" typedef struct _VipsFalsecolour { VipsConversion parent_instance; VipsImage *in; } VipsFalsecolour; typedef VipsConversionClass VipsFalsecolourClass; G_DEFINE_TYPE( VipsFalsecolour, vips_falsecolour, VIPS_TYPE_CONVERSION ); /* Falsecolour scale nicked from a PET scan. */ static unsigned char vips_falsecolour_pet[][3] = { { 12, 0, 25 }, { 17, 0, 34 }, { 20, 0, 41 }, { 22, 0, 45 }, { 23, 0, 47 }, { 27, 0, 55 }, { 12, 0, 25 }, { 5, 0, 11 }, { 5, 0, 11 }, { 5, 0, 11 }, { 1, 0, 4 }, { 1, 0, 4 }, { 6, 0, 13 }, { 15, 0, 30 }, { 19, 0, 40 }, { 23, 0, 48 }, { 28, 0, 57 }, { 36, 0, 74 }, { 42, 0, 84 }, { 46, 0, 93 }, { 51, 0, 102 }, { 59, 0, 118 }, { 65, 0, 130 }, { 69, 0, 138 }, { 72, 0, 146 }, { 81, 0, 163 }, { 47, 0, 95 }, { 12, 0, 28 }, { 64, 0, 144 }, { 61, 0, 146 }, { 55, 0, 140 }, { 52, 0, 137 }, { 47, 0, 132 }, { 43, 0, 128 }, { 38, 0, 123 }, { 30, 0, 115 }, { 26, 0, 111 }, { 23, 0, 108 }, { 17, 0, 102 }, { 9, 0, 94 }, { 6, 0, 91 }, { 2, 0, 87 }, { 0, 0, 88 }, { 0, 0, 100 }, { 0, 0, 104 }, { 0, 0, 108 }, { 0, 0, 113 }, { 0, 0, 121 }, { 0, 0, 125 }, { 0, 0, 129 }, { 0, 0, 133 }, { 0, 0, 141 }, { 0, 0, 146 }, { 0, 0, 150 }, { 0, 0, 155 }, { 0, 0, 162 }, { 0, 0, 167 }, { 0, 0, 173 }, { 0, 0, 180 }, { 0, 0, 188 }, { 0, 0, 193 }, { 0, 0, 197 }, { 0, 0, 201 }, { 0, 0, 209 }, { 0, 0, 214 }, { 0, 0, 218 }, { 0, 0, 222 }, { 0, 0, 230 }, { 0, 0, 235 }, { 0, 0, 239 }, { 0, 0, 243 }, { 0, 0, 247 }, { 0, 4, 251 }, { 0, 10, 255 }, { 0, 14, 255 }, { 0, 18, 255 }, { 0, 24, 255 }, { 0, 31, 255 }, { 0, 36, 255 }, { 0, 39, 255 }, { 0, 45, 255 }, { 0, 53, 255 }, { 0, 56, 255 }, { 0, 60, 255 }, { 0, 66, 255 }, { 0, 74, 255 }, { 0, 77, 255 }, { 0, 81, 255 }, { 0, 88, 251 }, { 0, 99, 239 }, { 0, 104, 234 }, { 0, 108, 230 }, { 0, 113, 225 }, { 0, 120, 218 }, { 0, 125, 213 }, { 0, 128, 210 }, { 0, 133, 205 }, { 0, 141, 197 }, { 0, 145, 193 }, { 0, 150, 188 }, { 0, 154, 184 }, { 0, 162, 176 }, { 0, 167, 172 }, { 0, 172, 170 }, { 0, 180, 170 }, { 0, 188, 170 }, { 0, 193, 170 }, { 0, 197, 170 }, { 0, 201, 170 }, { 0, 205, 170 }, { 0, 211, 170 }, { 0, 218, 170 }, { 0, 222, 170 }, { 0, 226, 170 }, { 0, 232, 170 }, { 0, 239, 170 }, { 0, 243, 170 }, { 0, 247, 170 }, { 0, 251, 161 }, { 0, 255, 147 }, { 0, 255, 139 }, { 0, 255, 131 }, { 0, 255, 120 }, { 0, 255, 105 }, { 0, 255, 97 }, { 0, 255, 89 }, { 0, 255, 78 }, { 0, 255, 63 }, { 0, 255, 55 }, { 0, 255, 47 }, { 0, 255, 37 }, { 0, 255, 21 }, { 0, 255, 13 }, { 0, 255, 5 }, { 2, 255, 2 }, { 13, 255, 13 }, { 18, 255, 18 }, { 23, 255, 23 }, { 27, 255, 27 }, { 35, 255, 35 }, { 40, 255, 40 }, { 43, 255, 43 }, { 48, 255, 48 }, { 55, 255, 55 }, { 60, 255, 60 }, { 64, 255, 64 }, { 69, 255, 69 }, { 72, 255, 72 }, { 79, 255, 79 }, { 90, 255, 82 }, { 106, 255, 74 }, { 113, 255, 70 }, { 126, 255, 63 }, { 140, 255, 56 }, { 147, 255, 53 }, { 155, 255, 48 }, { 168, 255, 42 }, { 181, 255, 36 }, { 189, 255, 31 }, { 197, 255, 27 }, { 209, 255, 21 }, { 224, 255, 14 }, { 231, 255, 10 }, { 239, 255, 7 }, { 247, 251, 3 }, { 255, 243, 0 }, { 255, 239, 0 }, { 255, 235, 0 }, { 255, 230, 0 }, { 255, 222, 0 }, { 255, 218, 0 }, { 255, 214, 0 }, { 255, 209, 0 }, { 255, 201, 0 }, { 255, 197, 0 }, { 255, 193, 0 }, { 255, 188, 0 }, { 255, 180, 0 }, { 255, 176, 0 }, { 255, 172, 0 }, { 255, 167, 0 }, { 255, 156, 0 }, { 255, 150, 0 }, { 255, 146, 0 }, { 255, 142, 0 }, { 255, 138, 0 }, { 255, 131, 0 }, { 255, 125, 0 }, { 255, 121, 0 }, { 255, 117, 0 }, { 255, 110, 0 }, { 255, 104, 0 }, { 255, 100, 0 }, { 255, 96, 0 }, { 255, 90, 0 }, { 255, 83, 0 }, { 255, 78, 0 }, { 255, 75, 0 }, { 255, 71, 0 }, { 255, 67, 0 }, { 255, 65, 0 }, { 255, 63, 0 }, { 255, 59, 0 }, { 255, 54, 0 }, { 255, 52, 0 }, { 255, 50, 0 }, { 255, 46, 0 }, { 255, 41, 0 }, { 255, 39, 0 }, { 255, 36, 0 }, { 255, 32, 0 }, { 255, 25, 0 }, { 255, 22, 0 }, { 255, 20, 0 }, { 255, 17, 0 }, { 255, 13, 0 }, { 255, 10, 0 }, { 255, 7, 0 }, { 255, 4, 0 }, { 255, 0, 0 }, { 252, 0, 0 }, { 251, 0, 0 }, { 249, 0, 0 }, { 248, 0, 0 }, { 244, 0, 0 }, { 242, 0, 0 }, { 240, 0, 0 }, { 237, 0, 0 }, { 234, 0, 0 }, { 231, 0, 0 }, { 229, 0, 0 }, { 228, 0, 0 }, { 225, 0, 0 }, { 222, 0, 0 }, { 221, 0, 0 }, { 219, 0, 0 }, { 216, 0, 0 }, { 213, 0, 0 }, { 212, 0, 0 }, { 210, 0, 0 }, { 207, 0, 0 }, { 204, 0, 0 }, { 201, 0, 0 }, { 199, 0, 0 }, { 196, 0, 0 }, { 193, 0, 0 }, { 192, 0, 0 }, { 190, 0, 0 }, { 188, 0, 0 }, { 184, 0, 0 }, { 183, 0, 0 }, { 181, 0, 0 }, { 179, 0, 0 }, { 175, 0, 0 }, { 174, 0, 0 }, { 174, 0, 0 } }; static int vips_falsecolour_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsFalsecolour *falsecolour = (VipsFalsecolour *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); if( VIPS_OBJECT_CLASS( vips_falsecolour_parent_class )-> build( object ) ) return( -1 ); if( !(t[0] = vips_image_new_from_memory( (void *) vips_falsecolour_pet, sizeof( vips_falsecolour_pet ), 1, VIPS_NUMBER( vips_falsecolour_pet ), 3, VIPS_FORMAT_UCHAR )) ) return( -1 ); /* Force to mono 8-bit. Don't use vips_colourspace() to go to B_W, we * want to work for images which aren't in a recognised space, like * MULTIBAND. */ if( vips_image_decode( falsecolour->in, &t[1] ) || vips_extract_band( t[1], &t[2], 0, NULL ) || vips_cast( t[2], &t[3], VIPS_FORMAT_UCHAR, NULL ) || vips_maplut( t[3], &t[4], t[0], NULL ) || vips_image_write( t[4], conversion->out ) ) return( -1 ); return( 0 ); } static void vips_falsecolour_class_init( VipsFalsecolourClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "falsecolour"; vobject_class->description = _( "false-color an image" ); vobject_class->build = vips_falsecolour_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 0, _( "in" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFalsecolour, in ) ); } static void vips_falsecolour_init( VipsFalsecolour *falsecolour ) { } /** * vips_falsecolour: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Force @in to 1 band, 8-bit, then transform to * a 3-band 8-bit image with a false colour * map. The map is supposed to make small differences in brightness more * obvious. * * See also: vips_maplut(). * * Returns: 0 on success, -1 on error */ int vips_falsecolour( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "falsecolour", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/byteswap.c0000664000175000017500000001320612571531237015276 00000000000000/* Swap image byte order. * * 5/6/15 * - from copy.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsByteswap { VipsConversion parent_instance; /* The input image. */ VipsImage *in; } VipsByteswap; typedef VipsConversionClass VipsByteswapClass; G_DEFINE_TYPE( VipsByteswap, vips_byteswap, VIPS_TYPE_CONVERSION ); /* Swap pairs of bytes. */ static void vips_byteswap_swap2( VipsPel *in, VipsPel *out, int width, VipsImage *im ) { guint16 *p = (guint16 *) in; guint16 *q = (guint16 *) out; int sz = (VIPS_IMAGE_SIZEOF_PEL( im ) * width) / 2; int x; for( x = 0; x < sz; x++ ) q[x] = GUINT16_SWAP_LE_BE( p[x] ); } /* Swap 4- of bytes. */ static void vips_byteswap_swap4( VipsPel *in, VipsPel *out, int width, VipsImage *im ) { guint32 *p = (guint32 *) in; guint32 *q = (guint32 *) out; int sz = (VIPS_IMAGE_SIZEOF_PEL( im ) * width) / 4; int x; for( x = 0; x < sz; x++ ) q[x] = GUINT32_SWAP_LE_BE( p[x] ); } /* Swap 8- of bytes. */ static void vips_byteswap_swap8( VipsPel *in, VipsPel *out, int width, VipsImage *im ) { guint64 *p = (guint64 *) in; guint64 *q = (guint64 *) out; int sz = (VIPS_IMAGE_SIZEOF_PEL( im ) * width) / 8; int x; for( x = 0; x < sz; x++ ) q[x] = GUINT64_SWAP_LE_BE( p[x] ); } typedef void (*SwapFn)( VipsPel *in, VipsPel *out, int width, VipsImage *im ); static SwapFn vips_byteswap_swap_fn[] = { NULL, /* VIPS_FORMAT_UCHAR = 0, */ NULL, /* VIPS_FORMAT_CHAR = 1, */ vips_byteswap_swap2, /* VIPS_FORMAT_USHORT = 2, */ vips_byteswap_swap2, /* VIPS_FORMAT_SHORT = 3, */ vips_byteswap_swap4, /* VIPS_FORMAT_UINT = 4, */ vips_byteswap_swap4, /* VIPS_FORMAT_INT = 5, */ vips_byteswap_swap4, /* VIPS_FORMAT_FLOAT = 6, */ vips_byteswap_swap4, /* VIPS_FORMAT_COMPLEX = 7, */ vips_byteswap_swap8, /* VIPS_FORMAT_DOUBLE = 8, */ vips_byteswap_swap8 /* VIPS_FORMAT_DPCOMPLEX = 9, */ }; /* Byteswap, turning bands into the x axis. */ static int vips_byteswap_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *im = ir->im; VipsRect *r = &or->valid; SwapFn swap = vips_byteswap_swap_fn[im->BandFmt]; int y; if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); swap( p, q, r->width, im ); } return( 0 ); } static int vips_byteswap_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsByteswap *byteswap = (VipsByteswap *) object; if( VIPS_OBJECT_CLASS( vips_byteswap_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( byteswap->in ) ) return( -1 ); if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, byteswap->in, NULL ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_one, vips_byteswap_gen, vips_stop_one, byteswap->in, byteswap ) ) return( -1 ); return( 0 ); } static void vips_byteswap_class_init( VipsByteswapClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_byteswap_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "byteswap"; vobject_class->description = _( "byteswap an image" ); vobject_class->build = vips_byteswap_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsByteswap, in ) ); } static void vips_byteswap_init( VipsByteswap *byteswap ) { } /** * vips_byteswap: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Swap the byte order in an image. * * See also: vips_rawload(). * * Returns: 0 on success, -1 on error. */ int vips_byteswap( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "byteswap", ap, in, out ); va_end( ap ); return( result ); } /* Convenience function: swap if @swap is %TRUE, otherwise copy. */ int vips__byteswap_bool( VipsImage *in, VipsImage **out, gboolean swap ) { if( swap ) return( vips_byteswap( in, out, NULL ) ); else return( vips_copy( in, out, NULL ) ); } vips-8.2.2/libvips/conversion/subsample.c0000664000175000017500000002066212650463513015436 00000000000000/* subsample * * 3/7/95 JC * - adapted from im_shrink() * 3/8/02 JC * - fall back to im_copy() for x/y factors == 1 * 21/4/08 * - don't fall back to pixel-wise shrinks for smalltile, it kills * performance, just bring VIPS_MAX_WIDTH down instead * 1/2/10 * - gtkdoc * 1/6/13 * - redo as a class * 2/11/13 * - add @point to force point sample mode * 22/1/16 * - remove SEQUENTIAL hint, it confuses vips_sequential() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pconversion.h" typedef struct _VipsSubsample { VipsConversion parent_instance; VipsImage *in; int xfac; int yfac; gboolean point; } VipsSubsample; typedef VipsConversionClass VipsSubsampleClass; G_DEFINE_TYPE( VipsSubsample, vips_subsample, VIPS_TYPE_CONVERSION ); /* Maximum width of input we ask for. */ #define VIPS_MAX_WIDTH (100) /* Subsample a VipsRegion. We fetch in VIPS_MAX_WIDTH pixel-wide strips, * left-to-right across the input. */ static int vips_subsample_line_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsSubsample *subsample = (VipsSubsample *) b; VipsImage *in = (VipsImage *) a; VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT( r ); int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int ps = VIPS_IMAGE_SIZEOF_PEL( in ); int owidth = VIPS_MAX_WIDTH / subsample->xfac; VipsRect s; int x, y; int z, k; /* Loop down the region. */ for( y = to; y < bo; y++ ) { VipsPel *q = VIPS_REGION_ADDR( or, le, y ); VipsPel *p; /* Loop across the region, in owidth sized pieces. */ for( x = le; x < ri; x += owidth ) { /* How many pixels do we make this time? */ int ow = VIPS_MIN( owidth, ri - x ); /* Ask for this many from input ... can save a * little here! */ int iw = ow * subsample->xfac - (subsample->xfac - 1); /* Ask for input. */ s.left = x * subsample->xfac; s.top = y * subsample->yfac; s.width = iw; s.height = 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Append new pels to output. */ p = VIPS_REGION_ADDR( ir, s.left, s.top ); for( z = 0; z < ow; z++ ) { for( k = 0; k < ps; k++ ) q[k] = p[k]; q += ps; p += ps * subsample->xfac; } } } return( 0 ); } /* Fetch one pixel at a time ... good for very large shrinks. */ static int vips_subsample_point_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsSubsample *subsample = (VipsSubsample *) b; VipsImage *in = (VipsImage *) a; VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT( r ); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int ps = VIPS_IMAGE_SIZEOF_PEL( in ); VipsRect s; int x, y; int k; /* Loop down the region. */ for( y = to; y < bo; y++ ) { VipsPel *q = VIPS_REGION_ADDR( or, le, y ); VipsPel *p; /* Loop across the region, in owidth sized pieces. */ for( x = le; x < ri; x++ ) { /* Ask for input. */ s.left = x * subsample->xfac; s.top = y * subsample->yfac; s.width = 1; s.height = 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); /* Append new pels to output. */ p = VIPS_REGION_ADDR( ir, s.left, s.top ); for( k = 0; k < ps; k++ ) q[k] = p[k]; q += ps; } } return( 0 ); } static int vips_subsample_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsSubsample *subsample = (VipsSubsample *) object; VipsGenerateFn subsample_fn; if( VIPS_OBJECT_CLASS( vips_subsample_parent_class )->build( object ) ) return( -1 ); g_assert( subsample->xfac > 0 ); g_assert( subsample->yfac > 0 ); if( subsample->xfac == 1 && subsample->yfac == 1 ) return( vips_image_write( subsample->in, conversion->out ) ); if( vips_image_pio_input( subsample->in ) || vips_check_coding_known( class->nickname, subsample->in ) ) return( -1 ); /* Set demand hints. We want THINSTRIP, as we will be demanding a * large area of input for each output line. */ if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, subsample->in, NULL ) ) return( -1 ); /* Prepare output. Note: we round the output width down! */ conversion->out->Xsize = subsample->in->Xsize / subsample->xfac; conversion->out->Ysize = subsample->in->Ysize / subsample->yfac; conversion->out->Xres = subsample->in->Xres / subsample->xfac; conversion->out->Yres = subsample->in->Yres / subsample->yfac; if( conversion->out->Xsize <= 0 || conversion->out->Ysize <= 0 ) { vips_error( class->nickname, "%s", _( "image has shrunk to nothing" ) ); return( -1 ); } /* Generate! If this is a very large shrink, then it's probably faster * to do it a pixel at a time. */ if( subsample->point || subsample->xfac > 10 ) subsample_fn = vips_subsample_point_gen; else subsample_fn = vips_subsample_line_gen; if( vips_image_generate( conversion->out, vips_start_one, subsample_fn, vips_stop_one, subsample->in, subsample ) ) return( -1 ); return( 0 ); } /* xy range we sanity check on ... just to stop crazy numbers from divide by 0 * etc. causing g_assert() failures later. */ #define RANGE (100000000) static void vips_subsample_class_init( VipsSubsampleClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "subsample"; vobject_class->description = _( "subsample an image" ); vobject_class->build = vips_subsample_build; /* We don't work well as sequential: we can easily skip the first few * scanlines, and that confuses vips_sequential(). */ VIPS_ARG_IMAGE( class, "input", 0, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSubsample, in ) ); VIPS_ARG_INT( class, "xfac", 2, _( "Xfac" ), _( "Horizontal subsample factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSubsample, xfac ), 1, RANGE, 1 ); VIPS_ARG_INT( class, "yfac", 3, _( "Yfac" ), _( "Vertical subsample factor" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSubsample, yfac ), 1, RANGE, 1 ); VIPS_ARG_BOOL( class, "point", 2, _( "Point" ), _( "Point sample" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSubsample, point ), FALSE ); } static void vips_subsample_init( VipsSubsample *subsample ) { } /** * vips_subsample: * @in: input image * @out: output image * @xfac: horizontal shrink factor * @yfac: vertical shrink factor * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @point: turn on point sample mode * * Subsample an image by an integer fraction. This is fast, nearest-neighbour * shrink. * * For small horizontal shrinks, this operation will fetch lines of pixels * from @in and then subsample that line. For large shrinks it will fetch * single pixels. * * If @point is set, @in will always be sampled in points. This can be faster * if the previous operations in the pipeline are very slow. * * See also: vips_affine(), vips_shrink(), vips_zoom(). * * Returns: 0 on success, -1 on error. */ int vips_subsample( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) { va_list ap; int result; va_start( ap, yfac ); result = vips_call_split( "subsample", ap, in, out, xfac, yfac ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/bandbool.c0000664000175000017500000002031212651122736015213 00000000000000/* bandbool.c --- bool op across image bands * * 7/12/12 * - from boolean.c */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "bandary.h" typedef struct _VipsBandbool { VipsBandary parent_instance; VipsImage *in; VipsOperationBoolean operation; } VipsBandbool; typedef VipsBandaryClass VipsBandboolClass; G_DEFINE_TYPE( VipsBandbool, vips_bandbool, VIPS_TYPE_BANDARY ); static int vips_bandbool_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBandary *bandary = (VipsBandary *) object; VipsBandbool *bandbool = (VipsBandbool *) object; /* << and >> don't work over bands. */ if( bandbool->operation == VIPS_OPERATION_BOOLEAN_LSHIFT || bandbool->operation == VIPS_OPERATION_BOOLEAN_RSHIFT ) { vips_error( class->nickname, _( "operator %s not supported across image bands" ), vips_enum_nick( VIPS_TYPE_OPERATION_BOOLEAN, bandbool->operation ) ); return( -1 ); } if( bandbool->in ) { if( vips_check_noncomplex( class->nickname, bandbool->in ) ) return( -1 ); bandary->n = 1; bandary->in = &bandbool->in; if( bandbool->in->Bands == 1 ) return( vips_bandary_copy( bandary ) ); } bandary->out_bands = 1; if( VIPS_OBJECT_CLASS( vips_bandbool_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define SWITCH( I, F, OP ) \ switch( vips_image_get_format( im ) ) { \ case VIPS_FORMAT_UCHAR: I( unsigned char, OP ); break; \ case VIPS_FORMAT_CHAR: I( signed char, OP ); break; \ case VIPS_FORMAT_USHORT: I( unsigned short, OP ); break; \ case VIPS_FORMAT_SHORT: I( signed short, OP ); break; \ case VIPS_FORMAT_UINT: I( unsigned int, OP ); break; \ case VIPS_FORMAT_INT: I( signed int, OP ); break; \ case VIPS_FORMAT_FLOAT: F( float, OP ); break; \ case VIPS_FORMAT_DOUBLE: F( double, OP ); break;\ \ default: \ g_assert_not_reached(); \ } #define LOOPB( TYPE, OP ) { \ TYPE *p = (TYPE *) in[0]; \ TYPE *q = (TYPE *) out; \ \ for( x = 0; x < width; x++ ) { \ TYPE acc; \ \ acc = p[0]; \ for( b = 1; b < bands; b++ ) \ acc = acc OP p[b]; \ \ q[x] = acc; \ p += bands; \ } \ } #define FLOOPB( TYPE, OP ) { \ TYPE *p = (TYPE *) in[0]; \ int *q = (int *) out; \ \ for( x = 0; x < width; x++ ) { \ int acc; \ \ acc = (int) p[0]; \ for( b = 1; b < bands; b++ ) \ acc = acc OP ((int) p[b]); \ \ q[x] = acc; \ p += bands; \ } \ } static void vips_bandbool_buffer( VipsBandary *bandary, VipsPel *out, VipsPel **in, int width ) { VipsBandbool *bandbool = (VipsBandbool *) bandary; VipsImage *im = bandary->ready[0]; int bands = im->Bands; int x, b; switch( bandbool->operation ) { case VIPS_OPERATION_BOOLEAN_AND: SWITCH( LOOPB, FLOOPB, & ); break; case VIPS_OPERATION_BOOLEAN_OR: SWITCH( LOOPB, FLOOPB, | ); break; case VIPS_OPERATION_BOOLEAN_EOR: SWITCH( LOOPB, FLOOPB, ^ ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX /* Type conversions for boolean. */ static const VipsBandFormat vips_bandbool_format_table[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, I, I, I, I, }; static void vips_bandbool_class_init( VipsBandboolClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "bandbool"; object_class->description = _( "boolean operation across image bands" ); object_class->build = vips_bandbool_build; bandary_class->process_line = vips_bandbool_buffer; bandary_class->format_table = vips_bandbool_format_table; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandbool, in ) ); VIPS_ARG_ENUM( class, "boolean", 200, _( "Operation" ), _( "boolean to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandbool, operation ), VIPS_TYPE_OPERATION_BOOLEAN, VIPS_OPERATION_BOOLEAN_AND ); } static void vips_bandbool_init( VipsBandbool *bandbool ) { bandbool->operation = VIPS_OPERATION_BOOLEAN_AND; } static int vips_bandboolv( VipsImage *in, VipsImage **out, VipsOperationBoolean operation, va_list ap ) { return( vips_call_split( "bandbool", ap, in, out, operation ) ); } /** * vips_bandbool: * @in: left-hand input #VipsImage * @out: output #VipsImage * @boolean: boolean operation to perform * @...: %NULL-terminated list of optional named arguments * * Perform various boolean operations across the bands of an image. For * example, a three-band uchar image operated on with * #VIPS_OPERATION_BOOLEAN_AND will produce a one-band uchar image where each * pixel is the bitwise and of the band elements of the corresponding pixel in * the input image. * * The output image is the same format as the input image for integer * types. Float types are cast to int before processing. Complex types are not * supported. * * The output image always has one band. * * This operation is useful in conjuction with vips_relational(). You can use * it to see if all image bands match exactly. * * See also: vips_boolean_const(). * * Returns: 0 on success, -1 on error */ int vips_bandbool( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, ... ) { va_list ap; int result; va_start( ap, boolean ); result = vips_bandboolv( in, out, boolean, ap ); va_end( ap ); return( result ); } /** * vips_bandand: * @in: left-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_AND on an image. See * vips_bandbool(). * * Returns: 0 on success, -1 on error */ int vips_bandand( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_bandboolv( in, out, VIPS_OPERATION_BOOLEAN_AND, ap ); va_end( ap ); return( result ); } /** * vips_bandor: * @in: left-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_OR on an image. See * vips_bandbool(). * * Returns: 0 on success, -1 on error */ int vips_bandor( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_bandboolv( in, out, VIPS_OPERATION_BOOLEAN_OR, ap ); va_end( ap ); return( result ); } /** * vips_bandeor: * @in: left-hand input #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Perform #VIPS_OPERATION_BOOLEAN_EOR on an image. See * vips_bandbool(). * * Returns: 0 on success, -1 on error */ int vips_bandeor( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_bandboolv( in, out, VIPS_OPERATION_BOOLEAN_EOR, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/recomb.c0000664000175000017500000001442412651123036014703 00000000000000/* recomb.c ... pass an image though a matrix * * 21/6/95 JC * - mildly modernised * 14/3/96 JC * - better error checks, partial * 4/11/09 * - gtkdoc * 9/11/11 * - redo as a class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsRecomb { VipsConversion parent_instance; VipsImage *in; VipsImage *m; /* Our input matrix as a one-band double. */ VipsImage *coeff; } VipsRecomb; typedef VipsConversionClass VipsRecombClass; G_DEFINE_TYPE( VipsRecomb, vips_recomb, VIPS_TYPE_CONVERSION ); /* Inner loop. */ #define LOOP( IN, OUT ) { \ IN * restrict p = (IN *) in; \ OUT * restrict q = (OUT *) out; \ \ for( x = 0; x < or->valid.width; x++ ) { \ double * restrict m = VIPS_MATRIX( recomb->coeff, 0, 0 ); \ \ for( v = 0; v < mheight; v++ ) { \ double t; \ \ t = 0.0; \ \ for( u = 0; u < mwidth; u++ ) \ t += m[u] * p[u]; \ \ q[v] = (OUT) t; \ m += mwidth; \ } \ \ p += mwidth; \ q += mheight; \ } \ } static int vips_recomb_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRecomb *recomb = (VipsRecomb *) b; VipsImage *im = recomb->in; int mwidth = recomb->m->Xsize; int mheight = recomb->m->Ysize; int y, x, u, v; if( vips_region_prepare( ir, &or->valid ) ) return( -1 ); for( y = 0; y < or->valid.height; y++ ) { VipsPel *in = VIPS_REGION_ADDR( ir, or->valid.left, or->valid.top + y ); VipsPel *out = VIPS_REGION_ADDR( or, or->valid.left, or->valid.top + y ); switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, float ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, float ); break; case VIPS_FORMAT_USHORT:LOOP( unsigned short, float ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, float ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, float ); break; case VIPS_FORMAT_INT: LOOP( signed int, float ); break; case VIPS_FORMAT_FLOAT: LOOP( float, float ); break; case VIPS_FORMAT_DOUBLE:LOOP( double, double ); break; default: g_assert_not_reached(); } } return( 0 ); } static int vips_recomb_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = (VipsConversion *) object; VipsRecomb *recomb = (VipsRecomb *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_recomb_parent_class )->build( object ) ) return( -1 ); in = recomb->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( vips_image_pio_input( recomb->m ) || vips_check_uncoded( class->nickname, recomb->m ) || vips_check_noncomplex( class->nickname, recomb->m ) || vips_check_mono( class->nickname, recomb->m ) ) return( -1 ); if( in->Bands != recomb->m->Xsize ) { vips_error( class->nickname, "%s", _( "bands in must equal matrix width" ) ); return( -1 ); } if( vips_check_matrix( class->nickname, recomb->m, &t[1] ) ) return( -1 ); recomb->coeff = t[1]; if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, in, NULL ) ) return( -1 ); conversion->out->Bands = recomb->m->Ysize; if( vips_band_format_isint( in->BandFmt ) ) conversion->out->BandFmt = VIPS_FORMAT_FLOAT; if( vips_image_generate( conversion->out, vips_start_one, vips_recomb_gen, vips_stop_one, in, recomb ) ) return( -1 ); return( 0 ); } static void vips_recomb_class_init( VipsRecombClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "recomb"; object_class->description = _( "linear recombination with matrix" ); object_class->build = vips_recomb_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRecomb, in ) ); VIPS_ARG_IMAGE( class, "m", 102, _( "M" ), _( "matrix of coefficients" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRecomb, m ) ); } static void vips_recomb_init( VipsRecomb *recomb ) { } /** * vips_recomb: * @in: input image * @out: output image * @m: recombination matrix * @...: %NULL-terminated list of optional named arguments * * This operation recombines an image's bands. Each pixel in @in is treated as * an n-element vector, where n is the number of bands in @in, and multipled by * the n x m matrix @m to produce the m-band image @out. * * @out is always float, unless @in is double, in which case @out is double * too. No complex images allowed. * * It's useful for various sorts of colour space conversions. * * See also: vips_bandmean(). * * Returns: 0 on success, -1 on error */ int vips_recomb( VipsImage *in, VipsImage **out, VipsImage *m, ... ) { va_list ap; int result; va_start( ap, m ); result = vips_call_split( "recomb", ap, in, out, m ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/bandary.c0000664000175000017500000001271112530402247015051 00000000000000/* base class for various operations on bands * * Copyright: 1991, N. Dessipris, modification of im_bandary() * * Author: N. Dessipris * Written on: 17/04/1991 * Modified on : * 16/3/94 JC * - rewritten for partials * - now in ANSI C * - now works for any number of input images, except zero * 7/10/94 JC * - new IM_NEW() * 16/4/07 * - fall back to im_copy() for 1 input image * 17/1/09 * - cleanups * - gtk-doc * - im_bandary() just calls this * - works for RAD coding too * 27/1/10 * - formatalike inputs * 17/5/11 * - sizealike inputs * 27/10/11 * - rewrite as a class * 20/11/11 * - from bandjoin */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "bandary.h" G_DEFINE_ABSTRACT_TYPE( VipsBandary, vips_bandary, VIPS_TYPE_CONVERSION ); /* Maximum number of input images -- why not? */ #define MAX_INPUT_IMAGES (64) static int vips_bandary_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsBandary *bandary = (VipsBandary *) b; VipsBandaryClass *class = VIPS_BANDARY_GET_CLASS( bandary ); VipsRect *r = &or->valid; VipsPel *p[MAX_INPUT_IMAGES], *q; int y, i; for( i = 0; i < bandary->n; i++ ) { if( vips_region_prepare( ir[i], r ) ) return( -1 ); p[i] = VIPS_REGION_ADDR( ir[i], r->left, r->top ); } p[i] = NULL; q = VIPS_REGION_ADDR( or, r->left, r->top ); VIPS_GATE_START( "vips_bandary_gen: work" ); for( y = 0; y < r->height; y++ ) { class->process_line( bandary, q, p, r->width ); for( i = 0; i < bandary->n; i++ ) p[i] += VIPS_REGION_LSKIP( ir[i] ); q += VIPS_REGION_LSKIP( or ); } VIPS_GATE_STOP( "vips_bandary_gen: work" ); return( 0 ); } static int vips_bandary_build( VipsObject *object ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); VipsBandaryClass *class = VIPS_BANDARY_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsBandary *bandary = VIPS_BANDARY( object ); int i; VipsImage **decode; VipsImage **format; VipsImage **size; if( VIPS_OBJECT_CLASS( vips_bandary_parent_class )->build( object ) ) return( -1 ); if( bandary->n <= 0 ) { vips_error( object_class->nickname, "%s", _( "no input images" ) ); return( -1 ); } if( bandary->n > MAX_INPUT_IMAGES ) { vips_error( object_class->nickname, "%s", _( "too many input images" ) ); return( -1 ); } decode = (VipsImage **) vips_object_local_array( object, bandary->n ); format = (VipsImage **) vips_object_local_array( object, bandary->n ); size = (VipsImage **) vips_object_local_array( object, bandary->n ); for( i = 0; i < bandary->n; i++ ) if( vips_image_decode( bandary->in[i], &decode[i] ) ) return( -1 ); if( vips__formatalike_vec( decode, format, bandary->n ) || vips__sizealike_vec( format, size, bandary->n ) ) return( -1 ); bandary->ready = size; if( vips_image_pipeline_array( conversion->out, VIPS_DEMAND_STYLE_THINSTRIP, bandary->ready ) ) return( -1 ); conversion->out->Bands = bandary->out_bands; if( class->format_table ) conversion->out->BandFmt = class->format_table[bandary->ready[0]->BandFmt]; if( vips_image_generate( conversion->out, vips_start_many, vips_bandary_gen, vips_stop_many, bandary->ready, bandary ) ) return( -1 ); return( 0 ); } static void vips_bandary_class_init( VipsBandaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandary_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandary"; vobject_class->description = _( "operations on image bands" ); vobject_class->build = vips_bandary_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; } static void vips_bandary_init( VipsBandary *bandary ) { bandary->out_bands = -1; } /* Call this before chaining up in _build() to make the operation fall back to * copy. */ int vips_bandary_copy( VipsBandary *bandary ) { VipsConversion *conversion = VIPS_CONVERSION( bandary ); /* This isn't set by arith until build(), so we have to set * again here. * * Should arith set out in _init()? */ g_object_set( bandary, "out", vips_image_new(), NULL ); return( vips_image_write( bandary->in[0], conversion->out ) ); } vips-8.2.2/libvips/conversion/ifthenelse.c0000664000175000017500000003322212651122760015562 00000000000000/* ifthenelse.c --- use a condition image to join two images together * * Modified: * 9/2/95 JC * - partialed and ANSIfied * 11/9/95 JC * - return( 0 ) missing! oops * 15/4/05 * - now just evals left/right if all zero/all one * 7/10/06 * - set THINSTRIP * 23/9/09 * - gtkdoc comment * 23/9/09 * - use im_check*() * - allow many-band conditional and single-band a/b * - allow a/b to differ in format and bands * 25/6/10 * - let the conditional image be any format by adding a (!=0) if * necessary * 17/5/11 * - added sizealike * 14/11/11 * - redone as a class * 19/4/12 * - fix blend * - small blend speedup */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsIfthenelse { VipsConversion parent_instance; /* Params. */ VipsImage *cond; VipsImage *in1; VipsImage *in2; gboolean blend; } VipsIfthenelse; typedef VipsConversionClass VipsIfthenelseClass; G_DEFINE_TYPE( VipsIfthenelse, vips_ifthenelse, VIPS_TYPE_CONVERSION ); #define IBLEND1( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( i = 0, x = 0; x < n; i++, x += bands ) { \ const int v = c[i]; \ \ for( z = x; z < x + bands; z++ ) \ q[z] = (v * a[z] + (255 - v) * b[z] + 128) / 255; \ } \ } #define IBLENDN( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( x = 0; x < n; x += bands ) { \ for( z = x; z < x + bands; z++ ) { \ const int v = c[z]; \ \ q[z] = (v * a[z] + (255 - v) * b[z] + 128) / 255; \ } \ } \ } #define FBLEND1( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( i = 0, x = 0; x < n; i++, x += bands ) { \ const double v = c[i] / 255.0; \ \ for( z = x; z < x + bands; z++ ) \ q[z] = v * a[z] + (1.0 - v) * b[z]; \ } \ } #define FBLENDN( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( x = 0; x < n; x += bands ) { \ for( z = x; z < x + bands; z++ ) { \ const double v = c[z] / 255.0; \ \ q[z] = v * a[z] + (1.0 - v) * b[z]; \ } \ } \ } #define CBLEND1( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( i = 0, x = 0; x < n; i++, x += bands ) { \ const double v = c[i] / 255.0; \ \ for( z = x; z < x + 2 * bands; z++ ) \ q[z] = v * a[z] + (1.0 - v) * b[z]; \ } \ } #define CBLENDN( TYPE ) { \ TYPE *a = (TYPE *) ap; \ TYPE *b = (TYPE *) bp; \ TYPE *q = (TYPE *) qp; \ \ for( x = 0; x < n; x += bands ) { \ for( z = x; z < x + bands; z++ ) { \ const double v = c[z] / 255.0; \ \ q[2 * z] = v * a[2 * z] + (1.0 - v) * b[2 * z]; \ q[2 * z + 1] = v * a[2 * z + 1] + \ (1.0 - v) * b[2 * z + 1]; \ } \ } \ } /* Blend with a 1-band conditional image. */ static void vips_blend1_buffer( VipsPel *qp, VipsPel *c, VipsPel *ap, VipsPel *bp, int width, VipsImage *im ) { int i, x, z; const int bands = im->Bands; const int n = width * bands; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: IBLEND1( unsigned char ); break; case VIPS_FORMAT_CHAR: IBLEND1( signed char ); break; case VIPS_FORMAT_USHORT: IBLEND1( unsigned short ); break; case VIPS_FORMAT_SHORT: IBLEND1( signed short ); break; case VIPS_FORMAT_UINT: IBLEND1( unsigned int ); break; case VIPS_FORMAT_INT: IBLEND1( signed int ); break; case VIPS_FORMAT_FLOAT: FBLEND1( float ); break; case VIPS_FORMAT_DOUBLE: FBLEND1( double ); break; case VIPS_FORMAT_COMPLEX: CBLEND1( float ); break; case VIPS_FORMAT_DPCOMPLEX: CBLEND1( double ); break; default: g_assert_not_reached(); } } /* Blend with a many band conditional image. */ static void vips_blendn_buffer( VipsPel *qp, VipsPel *c, VipsPel *ap, VipsPel *bp, int width, VipsImage *im ) { int x, z; const int bands = im->Bands; const int n = width * bands; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: IBLENDN( unsigned char ); break; case VIPS_FORMAT_CHAR: IBLENDN( signed char ); break; case VIPS_FORMAT_USHORT: IBLENDN( unsigned short ); break; case VIPS_FORMAT_SHORT: IBLENDN( signed short ); break; case VIPS_FORMAT_UINT: IBLENDN( unsigned int ); break; case VIPS_FORMAT_INT: IBLENDN( signed int ); break; case VIPS_FORMAT_FLOAT: FBLENDN( float ); break; case VIPS_FORMAT_DOUBLE: FBLENDN( double ); break; case VIPS_FORMAT_COMPLEX: CBLENDN( float ); break; case VIPS_FORMAT_DPCOMPLEX: CBLENDN( double ); break; default: g_assert_not_reached(); } } static int vips_blend_gen( VipsRegion *or, void *seq, void *client1, void *client2, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); VipsImage *c = ir[2]->im; VipsImage *a = ir[0]->im; int x, y; int all0, all255; if( vips_region_prepare( ir[2], r ) ) return( -1 ); /* Is the conditional all zero or all 255? We can avoid asking * for one of the inputs to be calculated. */ all0 = *VIPS_REGION_ADDR( ir[2], le, to ) == 0; all255 = *VIPS_REGION_ADDR( ir[2], le, to ) == 255; for( y = to; y < bo; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir[2], le, y ); int width = r->width * c->Bands; for( x = 0; x < width; x++ ) { all0 &= p[x] == 0; all255 &= p[x] == 255; } if( !all0 && !all255 ) break; } if( all255 ) { /* All 255. Point or at the then image. */ if( vips_region_prepare( ir[0], r ) || vips_region_region( or, ir[0], r, r->left, r->top ) ) return( -1 ); } else if( all0 ) { /* All zero. Point or at the else image. */ if( vips_region_prepare( ir[1], r ) || vips_region_region( or, ir[1], r, r->left, r->top ) ) return( -1 ); } else { /* Mix of set and clear ... ask for both then and else parts * and interleave. */ if( vips_region_prepare( ir[0], r ) || vips_region_prepare( ir[1], r ) ) return( -1 ); for( y = to; y < bo; y++ ) { VipsPel *ap = VIPS_REGION_ADDR( ir[0], le, y ); VipsPel *bp = VIPS_REGION_ADDR( ir[1], le, y ); VipsPel *cp = VIPS_REGION_ADDR( ir[2], le, y ); VipsPel *q = VIPS_REGION_ADDR( or, le, y ); if( c->Bands == 1 ) vips_blend1_buffer( q, cp, ap, bp, r->width, a ); else vips_blendn_buffer( q, cp, ap, bp, r->width, a ); } } return( 0 ); } static int vips_ifthenelse_gen( VipsRegion *or, void *seq, void *client1, void *client2, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); VipsImage *c = ir[2]->im; VipsImage *a = ir[0]->im; int size, width; int i, x, y, z; int all0, alln0; if( c->Bands == 1 ) { /* Copying PEL-sized units with a one-band conditional. */ size = VIPS_IMAGE_SIZEOF_PEL( a ); width = r->width; } else { /* Copying ELEMENT sized-units with an n-band conditional. */ size = VIPS_IMAGE_SIZEOF_ELEMENT( a ); width = r->width * a->Bands; } if( vips_region_prepare( ir[2], r ) ) return( -1 ); /* Is the conditional all zero or all non-zero? We can avoid asking * for one of the inputs to be calculated. */ all0 = *VIPS_REGION_ADDR( ir[2], le, to ) == 0; alln0 = *VIPS_REGION_ADDR( ir[2], le, to ) != 0; for( y = to; y < bo; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir[2], le, y ); for( x = 0; x < width; x++ ) { all0 &= p[x] == 0; alln0 &= p[x] != 0; } if( !all0 && !alln0 ) break; } if( alln0 ) { /* All non-zero. Point or at the then image. */ if( vips_region_prepare( ir[0], r ) || vips_region_region( or, ir[0], r, r->left, r->top ) ) return( -1 ); } else if( all0 ) { /* All zero. Point or at the else image. */ if( vips_region_prepare( ir[1], r ) || vips_region_region( or, ir[1], r, r->left, r->top ) ) return( -1 ); } else { /* Mix of set and clear ... ask for both then and else parts * and interleave. */ if( vips_region_prepare( ir[0], r ) || vips_region_prepare( ir[1], r ) ) return( -1 ); for( y = to; y < bo; y++ ) { VipsPel *ap = VIPS_REGION_ADDR( ir[0], le, y ); VipsPel *bp = VIPS_REGION_ADDR( ir[1], le, y ); VipsPel *cp = VIPS_REGION_ADDR( ir[2], le, y ); VipsPel *q = VIPS_REGION_ADDR( or, le, y ); for( x = 0, i = 0; i < width; i++, x += size ) if( cp[i] ) for( z = x; z < x + size; z++ ) q[z] = ap[z]; else for( z = x; z < x + size; z++ ) q[z] = bp[z]; } } return( 0 ); } static int vips_ifthenelse_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsIfthenelse *ifthenelse = (VipsIfthenelse *) object; VipsGenerateFn generate_fn = ifthenelse->blend ? vips_blend_gen : vips_ifthenelse_gen; VipsImage **band = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage **size = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage **format = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *all[3]; if( VIPS_OBJECT_CLASS( vips_ifthenelse_parent_class )->build( object ) ) return( -1 ); /* We have to have the condition image last since we want the output * image to inherit its properties from the then/else parts. */ all[0] = ifthenelse->in1; all[1] = ifthenelse->in2; all[2] = ifthenelse->cond; /* No need to check input images, sizealike and friends will do this * for us. */ /* Cast our input images up to a common bands and size. */ if( vips__bandalike_vec( class->nickname, all, band, 3, 0 ) || vips__sizealike_vec( band, size, 3 ) ) return( -1 ); /* Condition is cast to uchar, then/else to a common type. */ if( size[2]->BandFmt != VIPS_FORMAT_UCHAR ) { if( vips_cast( size[2], &format[2], VIPS_FORMAT_UCHAR, NULL ) ) return( -1 ); } else { format[2] = size[2]; g_object_ref( format[2] ); } if( vips__formatalike_vec( size, format, 2 ) ) return( -1 ); if( vips_image_pipeline_array( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, format ) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_many, generate_fn, vips_stop_many, format, ifthenelse ) ) return( -1 ); return( 0 ); } static void vips_ifthenelse_class_init( VipsIfthenelseClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_ifthenelse_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "ifthenelse"; vobject_class->description = _( "ifthenelse an image" ); vobject_class->build = vips_ifthenelse_build; VIPS_ARG_IMAGE( class, "cond", -2, _( "Condition" ), _( "Condition input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsIfthenelse, cond ) ); VIPS_ARG_IMAGE( class, "in1", -1, _( "Then image" ), _( "Source for TRUE pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsIfthenelse, in1 ) ); VIPS_ARG_IMAGE( class, "in2", 0, _( "Else image" ), _( "Source for FALSE pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsIfthenelse, in2 ) ); VIPS_ARG_BOOL( class, "blend", 4, _( "blend" ), _( "Blend smoothly between then and else parts" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsIfthenelse, blend ), FALSE ); } static void vips_ifthenelse_init( VipsIfthenelse *ifthenelse ) { } /** * vips_ifthenelse: * @cond: condition #VipsImage * @in1: then #VipsImage * @in2: else #VipsImage * @out: output #VipsImage * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @blend: blend smoothly between @in1 and @in2 * * This operation scans the condition image @cond * and uses it to select pixels from either the then image @in1 or the else * image @in2. Non-zero means @in1, 0 means @in2. * * Any image can have either 1 band or n bands, where n is the same for all * the non-1-band images. Single band images are then effectively copied to * make n-band images. * * Images @in1 and @in2 are cast up to the smallest common format. @cond is * cast to uchar. * * If the images differ in size, the smaller images are enlarged to match the * largest by adding zero pixels along the bottom and right. * * If @blend is %TRUE, then values in @out are smoothly blended between @in1 * and @in2 using the formula: * * @out = (@cond / 255) * @in1 + (1 - @cond / 255) * @in2 * * See also: vips_equal(). * * Returns: 0 on success, -1 on error */ int vips_ifthenelse( VipsImage *cond, VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "ifthenelse", ap, cond, in1, in2, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/gamma.c0000664000175000017500000001114712530402247014515 00000000000000/* Raise an image to a gamma factor * * Copyright: 1990, N. Dessipris. * * Written on: 19/07/1990 * Modified on: * 19/6/95 JC * - redone as library function * 23/3/10 * - gtkdoc * - 16 bit as well * 1/8/13 * - redone as a class * 11/11/13 * - any format * - calculate pow(1/exp) rather than pow(exp) to be consistent with * other packages */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "pconversion.h" typedef struct _VipsGamma { VipsConversion parent_instance; VipsImage *in; double exponent; } VipsGamma; typedef VipsConversionClass VipsGammaClass; G_DEFINE_TYPE( VipsGamma, vips_gamma, VIPS_TYPE_CONVERSION ); /* For each input format, what we normalise the pow() about. */ static double vips_gamma_maxval[10] = { /* UC */ UCHAR_MAX, /* C */ SCHAR_MAX, /* US */ USHRT_MAX, /* S */ SHRT_MAX, /* UI */ UINT_MAX, /* I */ INT_MAX, /* F */ 1.0, /* X */ 1.0, /* D */ 1.0, /* DX */ 1.0 }; static int vips_gamma_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsGamma *gamma = (VipsGamma *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); VipsImage *in = gamma->in; double scale; if( VIPS_OBJECT_CLASS( vips_gamma_parent_class )-> build( object ) ) return( -1 ); scale = pow( vips_gamma_maxval[in->BandFmt], 1.0 / gamma->exponent ) / vips_gamma_maxval[in->BandFmt]; if( in->BandFmt == VIPS_FORMAT_UCHAR || in->BandFmt == VIPS_FORMAT_USHORT ) { if( vips_identity( &t[0], "ushort", in->BandFmt == VIPS_FORMAT_USHORT, NULL ) || vips_pow_const1( t[0], &t[1], 1.0 / gamma->exponent, NULL ) || vips_linear1( t[1], &t[2], 1.0 / scale, 0, NULL ) || vips_cast( t[2], &t[3], in->BandFmt, NULL ) || vips_maplut( in, &t[4], t[3], NULL ) || vips_image_write( t[4], conversion->out ) ) return( -1 ); } else { if( vips_pow_const1( in, &t[1], 1.0 / gamma->exponent, NULL ) || vips_linear1( t[1], &t[2], 1.0 / scale, 0, NULL ) || vips_cast( t[2], &t[3], in->BandFmt, NULL ) || vips_image_write( t[3], conversion->out ) ) return( -1 ); } return( 0 ); } static void vips_gamma_class_init( VipsGammaClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "gamma"; vobject_class->description = _( "gamma an image" ); vobject_class->build = vips_gamma_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", -1, _( "in" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGamma, in ) ); VIPS_ARG_DOUBLE( class, "exponent", 0, _( "exponent" ), _( "Gamma factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsGamma, exponent ), 0.000001, 1000.0, 2.4 ); } static void vips_gamma_init( VipsGamma *gamma ) { gamma->exponent = 1.0 / 2.4; } /** * vips_gamma: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @exponent: gamma, default 1.0 / 2.4 * * Calculate @in ** (1 / @exponent), normalising to the maximum range of the * input type. For float types use 1.0 as the maximum. * * See also: vips_identity(), vips_pow_const1(), vips_maplut() * * Returns: 0 on success, -1 on error */ int vips_gamma( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "gamma", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/join.c0000664000175000017500000002001712651705115014372 00000000000000/* join left-right and up-down * * Copyright 1990, 1991: Kirk Martinez, N. Dessipris * Author: Kirk Martinez, N. Dessipris * Written on: 9/6/90 * Modified on: 17/04/1991 * 31/8/93 JC * - args to memcpy() were reversed * 14/11/94 JC * - tided up and ANSIfied * - now accepts IM_CODING_LABQ * - memory leaks removed * - bug in calculation of output Xsize removed (thanks Thomson!) * - bug in checking of image compatibility fixed * 23/10/95 JC * - rewritten in terms of im_insert() * 14/4/04 * - sets Xoffset / Yoffset * 1/2/10 * - gtkdoc * - cleanups * 19/10/11 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsJoin { VipsConversion parent_instance; /* Params. */ VipsImage *in1; VipsImage *in2; VipsDirection direction; gboolean expand; int shim; VipsArea *background; VipsAlign align; } VipsJoin; typedef VipsConversionClass VipsJoinClass; G_DEFINE_TYPE( VipsJoin, vips_join, VIPS_TYPE_CONVERSION ); static int vips_join_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsJoin *join = (VipsJoin *) object; int x, y; VipsImage *t; if( VIPS_OBJECT_CLASS( vips_join_parent_class )->build( object ) ) return( -1 ); /* Stop compiler warnings. */ x = 0; y = 0; switch( join->direction ) { case VIPS_DIRECTION_HORIZONTAL: x = join->in1->Xsize + join->shim; switch( join->align ) { case VIPS_ALIGN_LOW: y = 0; break; case VIPS_ALIGN_CENTRE: y = join->in1->Ysize / 2 - join->in2->Ysize / 2; break; case VIPS_ALIGN_HIGH: y = join->in1->Ysize - join->in2->Ysize; break; default: g_assert_not_reached(); } break; case VIPS_DIRECTION_VERTICAL: y = join->in1->Ysize + join->shim; switch( join->align ) { case VIPS_ALIGN_LOW: x = 0; break; case VIPS_ALIGN_CENTRE: x = join->in1->Xsize / 2 - join->in2->Xsize / 2; break; case VIPS_ALIGN_HIGH: x = join->in1->Xsize - join->in2->Xsize; break; default: g_assert_not_reached(); } break; default: g_assert_not_reached(); } if( vips_insert( join->in1, join->in2, &t, x, y, "expand", TRUE, "background", join->background, NULL ) ) return( -1 ); if( !join->expand ) { VipsImage *t2; int left, top, width, height; switch( join->direction ) { case VIPS_DIRECTION_HORIZONTAL: left = 0; top = VIPS_MAX( 0, y ) - y; width = t->Xsize; height = VIPS_MIN( join->in1->Ysize, join->in2->Ysize ); break; case VIPS_DIRECTION_VERTICAL: left = VIPS_MAX( 0, x ) - x; top = 0; width = VIPS_MIN( join->in1->Xsize, join->in2->Xsize ); height = t->Ysize; break; default: g_assert_not_reached(); /* Stop compiler warnings. */ left = 0; top = 0; width = 0; height = 0; } if( left != 0 || top != 0 || width != t->Xsize || height != t->Ysize ) { if( vips_extract_area( t, &t2, left, top, width, height, NULL ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); t = t2; } } if( vips_image_write( t, conversion->out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static void vips_join_class_init( VipsJoinClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_join_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "join"; vobject_class->description = _( "join a pair of images" ); vobject_class->build = vips_join_build; VIPS_ARG_IMAGE( class, "in1", -1, _( "in1" ), _( "First input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsJoin, in1 ) ); VIPS_ARG_IMAGE( class, "in2", 0, _( "in2" ), _( "Second input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsJoin, in2 ) ); VIPS_ARG_ENUM( class, "direction", 2, _( "direction" ), _( "Join left-right or up-down" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsJoin, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); VIPS_ARG_BOOL( class, "expand", 4, _( "Expand" ), _( "Expand output to hold all of both inputs" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsJoin, expand ), FALSE ); VIPS_ARG_INT( class, "shim", 5, _( "Shim" ), _( "Pixels between images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsJoin, shim ), 0, 1000000, 0 ); VIPS_ARG_BOXED( class, "background", 6, _( "Background" ), _( "Colour for new pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsJoin, background ), VIPS_TYPE_ARRAY_DOUBLE ); VIPS_ARG_ENUM( class, "align", 2, _( "Align" ), _( "Align on the low, centre or high coordinate edge" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsJoin, align ), VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW ); } static void vips_join_init( VipsJoin *join ) { /* Init our instance fields. */ join->background = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), 1 ); ((double *) (join->background->data))[0] = 0.0; } /** * vips_join: * @in1: first input image * @in2: second input image * @out: output image * @direction: join horizontally or vertically * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @expand: %TRUE to expand the output image to hold all of the input pixels * @shim: space between images, in pixels * @background: background ink colour * @align: low, centre or high alignment * * Join @in1 and @in2 together, left-right or up-down depending on the value * of @direction. * * If one is taller or wider than the * other, @out will be has high as the smaller. If @expand is %TRUE, then * the output will be expanded to contain all of the input pixels. * * Use @align to set the edge that the images align on. By default, they align * on the edge with the lower value coordinate. * * Use @background to set the colour of any pixels in @out which are not * present in either @in1 or @in2. * * Use @shim to set the spacing between the images. By default this is 0. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * If you are going to be joining many thousands of images in a regular * grid, vips_arrayjoin() is a better choice. * * See also: vips_arrayjoin(), vips_insert(). * * Returns: 0 on success, -1 on error */ int vips_join( VipsImage *in1, VipsImage *in2, VipsImage **out, VipsDirection direction, ... ) { va_list ap; int result; va_start( ap, direction ); result = vips_call_split( "join", ap, in1, in2, out, direction ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/cache.c0000664000175000017500000001116612530402247014477 00000000000000/* vips_sink_screen() as an operation. * * 13/1/12 * - from tilecache.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a cache of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsCache { VipsConversion parent_instance; VipsImage *in; int tile_width; int tile_height; int max_tiles; } VipsCache; typedef VipsConversionClass VipsCacheClass; G_DEFINE_TYPE( VipsCache, vips_cache, VIPS_TYPE_CONVERSION ); static int vips_cache_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsCache *cache = (VipsCache *) object; VIPS_DEBUG_MSG( "vips_cache_build\n" ); if( VIPS_OBJECT_CLASS( vips_cache_parent_class )->build( object ) ) return( -1 ); if( vips_sink_screen( cache->in, conversion->out, NULL, cache->tile_width, cache->tile_height, cache->max_tiles, 0, NULL, NULL ) ) return( -1 ); return( 0 ); } static void vips_cache_class_init( VipsCacheClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_cache_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "cache"; vobject_class->description = _( "cache an image" ); vobject_class->build = vips_cache_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCache, in ) ); VIPS_ARG_INT( class, "tile_width", 3, _( "Tile width" ), _( "Tile width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCache, tile_width ), 1, 1000000, 128 ); VIPS_ARG_INT( class, "tile_height", 3, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCache, tile_height ), 1, 1000000, 128 ); VIPS_ARG_INT( class, "max_tiles", 3, _( "Max tiles" ), _( "Maximum number of tiles to cache" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsCache, max_tiles ), -1, 1000000, 1000 ); } static void vips_cache_init( VipsCache *cache ) { /* By default, enough pixels for two 1920 x 1080 displays. */ cache->tile_width = 128; cache->tile_height = 128; cache->max_tiles = 250; } /** * vips_cache: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @tile_width: width of tiles in cache * @tile_height: height of tiles in cache * @max_tiles: maximum number of tiles to cache * * This operation behaves rather like vips_copy() between images * @in and @out, except that it keeps a cache of computed pixels. * This cache is made of up to @max_tiles tiles (a value of -1 * means any number of tiles), and each tile is of size @tile_width * by @tile_height pixels. By default it will cache 250 128 x 128 pixel tiles, * enough for two 1920 x 1080 images. * * This operation is a thin wrapper over vips_sink_screen(), see the * documentation for that operation for details. * * It uses a set of background threads to calculate pixels and the various * active cache operations coordinate so as not to overwhelm your system. When * a request is made for an area of pixels, the operation will block until all * of those pixels have been calculated. Pixels are calculated with a set of * threads. * * See also: vips_tilecache(). * * Returns: 0 on success, -1 on error. */ int vips_cache( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "cache", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/grid.c0000664000175000017500000001506412530402247014362 00000000000000/* vips_grid * * 4/8/05 * 7/9/05 * - oops, clipping was wrong * 30/1/10 * - gtkdoc * - small cleanups * 30/5/13 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconversion.h" typedef struct _VipsGrid { VipsConversion parent_instance; VipsImage *in; int tile_height; int across; int down; } VipsGrid; typedef VipsConversionClass VipsGridClass; G_DEFINE_TYPE( VipsGrid, vips_grid, VIPS_TYPE_CONVERSION ); static int vips_grid_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) vseq; VipsGrid *grid = (VipsGrid *) b; VipsRect *r = &or->valid; int twidth = grid->in->Xsize; int theight = grid->tile_height; int x, y; VipsRect tile; /* Find top left of tiles we need. */ int xs = (r->left / twidth) * twidth; int ys = (r->top / theight) * theight; /* The tile enclosing the top-left corner of the requested area. */ tile.left = xs; tile.top = ys; tile.width = twidth; tile.height = theight; /* If the request fits inside a single tile, we can just pointer-copy. */ if( vips_rect_includesrect( &tile, r ) ) { VipsRect irect; /* Translate request to input space. */ irect = *r; irect.left -= xs; irect.top -= ys; irect.top += grid->across * ys + theight * (xs / twidth); if( vips_region_prepare( ir, &irect ) || vips_region_region( or, ir, r, irect.left, irect.top ) ) return( -1 ); return( 0 ); } for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += theight ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += twidth ) { VipsRect paint; VipsRect input; /* Whole tile at x, y */ tile.left = x; tile.top = y; tile.width = twidth; tile.height = theight; /* Which parts touch the area of the output we are * building. */ vips_rect_intersectrect( &tile, r, &paint ); g_assert( !vips_rect_isempty( &paint ) ); /* Translate back to ir coordinates. */ input = paint; input.left -= x; input.top -= y; input.top += grid->across * y + theight * (x / twidth); /* Render into or. */ if( vips_region_prepare_to( ir, or, &input, paint.left, paint.top ) ) return( -1 ); } return( 0 ); } static int vips_grid_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsGrid *grid = (VipsGrid *) object; if( VIPS_OBJECT_CLASS( vips_grid_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, grid->in ) || vips_image_pio_input( grid->in ) ) return( -1 ); if( grid->in->Ysize % grid->tile_height != 0 || grid->in->Ysize / grid->tile_height != grid->across * grid->down ) { vips_error( class->nickname, "%s", _( "bad grid geometry" ) ); return( -1 ); } /* We can render small tiles with pointer copies. */ if( vips_image_pipelinev( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, grid->in, NULL ) ) return( -1 ); conversion->out->Xsize = grid->in->Xsize * grid->across; conversion->out->Ysize = grid->tile_height * grid->down; if( vips_image_generate( conversion->out, vips_start_one, vips_grid_gen, vips_stop_one, grid->in, grid ) ) return( -1 ); return( 0 ); } static void vips_grid_class_init( VipsGridClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "grid"; vobject_class->description = _( "grid an image" ); vobject_class->build = vips_grid_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGrid, in ) ); VIPS_ARG_INT( class, "tile_height", 3, _( "Tile height" ), _( "chop into tiles this high" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGrid, tile_height ), 1, 10000000, 128 ); VIPS_ARG_INT( class, "across", 4, _( "Across" ), _( "number of tiles across" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGrid, across ), 1, 10000000, 1 ); VIPS_ARG_INT( class, "down", 5, _( "Down" ), _( "number of tiles down" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsGrid, down ), 1, 10000000, 1 ); } static void vips_grid_init( VipsGrid *grid ) { grid->tile_height = 128; grid->across = 1; grid->down = 1; } /** * vips_grid: * @in: input image * @out: output image * @tile_height: chop into tiles this high * @across: tiles across * @down: tiles down * @...: %NULL-terminated list of optional named arguments * * Chop a tall thin image up into a set of tiles, lay the tiles out in a grid. * * The input image should be a very tall, thin image containing a list of * smaller images. Volumetric or time-sequence images are often laid out like * this. This image is chopped into a series of tiles, each @tile_height * pixels high and the width of @in. The tiles are then rearranged into a grid * @across tiles across and @down tiles down in row-major order. * * Supplying @tile_height, @across and @down is not strictly necessary, we * only really need two of these. Requiring three is a double-check that the * image has the expected geometry. * * See also: vips_embed(), vips_insert(), vips_join(). * * Returns: 0 on success, -1 on error */ int vips_grid( VipsImage *in, VipsImage **out, int tile_height, int across, int down, ... ) { va_list ap; int result; va_start( ap, down ); result = vips_call_split( "grid", ap, in, out, tile_height, across, down ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/scale.c0000664000175000017500000001151312530402247014517 00000000000000/* im_scale * * Author: John Cupitt * Written on: 22/4/93 * Modified on: * 30/6/93 JC * - adapted for partial v2 * - ANSI * 31/8/93 JC * - calculation of offset now includes scale * 8/5/06 * - set Type on output too * 16/10/06 * - what? no, don't set Type, useful to be able to scale histograms, for * example * 1/2/10 * - gtkdoc * 30/5/13 * - redo as a class * - add log scale and exponent as an option * 14/1/14 * - use linear uchar mode * 14/7/14 * - round to nearest on uchar output */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pconversion.h" typedef struct _VipsScale { VipsConversion parent_instance; VipsImage *in; gboolean log; double exp; } VipsScale; typedef VipsConversionClass VipsScaleClass; G_DEFINE_TYPE( VipsScale, vips_scale, VIPS_TYPE_CONVERSION ); static int vips_scale_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsScale *scale = (VipsScale *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); double mx; double mn; if( VIPS_OBJECT_CLASS( vips_scale_parent_class )->build( object ) ) return( -1 ); if( vips_stats( scale->in, &t[0], NULL ) ) return( -1 ); mn = *VIPS_MATRIX( t[0], 0, 0 ); mx = *VIPS_MATRIX( t[0], 1, 0 ); if( mn == mx ) { /* Range of zero: just return black. */ if( vips_black( &t[1], scale->in->Xsize, scale->in->Ysize, "bands", scale->in->Bands, NULL ) || vips_image_write( t[1], conversion->out ) ) return( -1 ); } else if( scale->log ) { double f = 255.0 / log10( 1.0 + pow( mx, scale->exp ) ); if( vips_pow_const1( scale->in, &t[2], scale->exp, NULL ) || vips_linear1( t[2], &t[3], 1.0, 1.0, NULL ) || vips_log10( t[3], &t[4], NULL ) || vips_linear1( t[4], &t[5], f, 0.0, "uchar", TRUE, NULL ) || vips_image_write( t[5], conversion->out ) ) return( -1 ); } else { double f = 255.0 / (mx - mn); /* Add .5 to get round-to-nearest. */ double a = -(mn * f) + 0.5; if( vips_linear1( scale->in, &t[2], f, a, "uchar", TRUE, NULL ) || vips_image_write( t[2], conversion->out ) ) return( -1 ); } return( 0 ); } static void vips_scale_class_init( VipsScaleClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "scale"; vobject_class->description = _( "scale an image to uchar" ); vobject_class->build = vips_scale_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsScale, in ) ); VIPS_ARG_BOOL( class, "log", 3, _( "Log" ), _( "Log scale" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsScale, log ), FALSE ); VIPS_ARG_DOUBLE( class, "exp", 3, _( "Exponent" ), _( "Exponent for log scale" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsScale, exp ), 0.00001, 10000, 0.25 ); } static void vips_scale_init( VipsScale *scale ) { scale->exp = 0.25; } /** * vips_scale: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @log: log scale pixels * @exp: exponent for log scale * * Search the image for the maximum and minimum value, then return the image * as unsigned 8-bit, scaled so that the maximum value is 255 and the * minimum is zero. * * If @log is set, transform with log10(1.0 + pow(x, @exp)) + .5, * then scale so max == 255. By default, @exp is 0.25. * * See also: vips_cast(). * * Returns: 0 on success, -1 on error */ int vips_scale( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "scale", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/Makefile.am0000664000175000017500000000121512632554425015327 00000000000000noinst_LTLIBRARIES = libconversion.la libconversion_la_SOURCES = \ conversion.c \ pconversion.h \ tilecache.c \ gamma.c \ sequential.c \ flatten.c \ premultiply.c \ unpremultiply.c \ byteswap.c \ cache.c \ copy.c \ embed.c \ flip.c \ insert.c \ join.c \ arrayjoin.c \ extract.c \ replicate.c \ cast.c \ bandjoin.c \ bandrank.c \ recomb.c \ bandmean.c \ bandfold.c \ bandunfold.c \ bandbool.c \ bandary.h \ bandary.c \ rot.c \ rot45.c \ autorot.c \ ifthenelse.c \ falsecolour.c \ msb.c \ grid.c \ scale.c \ wrap.c \ subsample.c \ zoom.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/conversion/insert.c0000664000175000017500000003612112632563120014737 00000000000000/* VipsInsert * * Copyright: 1990, J. Cupitt * * Author: J. Cupitt * Written on: 02/08/1990 * Modified on : * 31/8/93 JC * - ANSIfied * - Nicos' reformatting undone. Grr! * 22/12/94 * - modernised * - now does IM_CODING_LABQ too * 22/6/95 JC * - partialized * 10/2/02 JC * - adapted for im_prepare_to() stuff * 14/4/04 * - sets Xoffset / Yoffset * 3/7/06 * - add sanity range checks * 24/3/09 * - added IM_CODING_RAD support * 30/1/10 * - cleanups * - formatalike/bandalike * - gtkdoc * 29/9/11 * - rewrite as a class * - add expand, bg options */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsInsert { VipsConversion parent_instance; /* Params. */ VipsImage *main; VipsImage *sub; int x; int y; gboolean expand; VipsArrayDouble *background; /* Pixel we paint calculated from background. */ VipsPel *ink; /* Inputs cast and banded up. */ VipsImage *main_processed; VipsImage *sub_processed; /* Geometry. */ VipsRect rout; /* Output space */ VipsRect rmain; /* Position of main in output */ VipsRect rsub; /* Position of sub in output */ } VipsInsert; typedef VipsConversionClass VipsInsertClass; G_DEFINE_TYPE( VipsInsert, vips_insert, VIPS_TYPE_CONVERSION ); /* Trivial case: we just need pels from one of the inputs. * * Also used by vips_arrayjoin. */ int vips__insert_just_one( VipsRegion *or, VipsRegion *ir, int x, int y ) { VipsRect need; /* Find the part of pos we need. */ need = or->valid; need.left -= x; need.top -= y; if( vips_region_prepare( ir, &need ) ) return( -1 ); /* Attach our output to it. */ if( vips_region_region( or, ir, &or->valid, need.left, need.top ) ) return( -1 ); return( 0 ); } /* Paste in parts of ir that fall within or --- ir is an input REGION for an * image positioned at pos within or. * * Also used by vips_arrayjoin. */ int vips__insert_paste_region( VipsRegion *or, VipsRegion *ir, VipsRect *pos ) { VipsRect ovl; /* Does any of the sub-image appear in the area we have been asked * to make? */ vips_rect_intersectrect( &or->valid, pos, &ovl ); if( !vips_rect_isempty( &ovl ) ) { /* Find the part of in we need. */ ovl.left -= pos->left; ovl.top -= pos->top; /* Paint this area of pixels into or. */ if( vips_region_prepare_to( ir, or, &ovl, ovl.left + pos->left, ovl.top + pos->top ) ) return( -1 ); } return( 0 ); } /* Insert generate function. */ static int vips_insert_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion **ir = (VipsRegion **) seq; VipsRect *r = &or->valid; VipsInsert *insert = (VipsInsert *) b; VipsRect ovl; /* Does the rect we have been asked for fall entirely inside the * sub-image? */ if( vips_rect_includesrect( &insert->rsub, &or->valid ) ) return( vips__insert_just_one( or, ir[1], insert->rsub.left, insert->rsub.top ) ); /* Does it fall entirely inside the main, and not at all inside the * sub? */ vips_rect_intersectrect( &or->valid, &insert->rsub, &ovl ); if( vips_rect_includesrect( &insert->rmain, &or->valid ) && vips_rect_isempty( &ovl ) ) return( vips__insert_just_one( or, ir[0], insert->rmain.left, insert->rmain.top ) ); /* Output requires both (or neither) input. If it is not entirely * inside both the main and the sub, then there is going to be some * background. */ if( !(vips_rect_includesrect( &insert->rsub, &or->valid ) && vips_rect_includesrect( &insert->rmain, &or->valid )) ) vips_region_paint_pel( or, r, insert->ink ); /* Paste from main. */ if( vips__insert_paste_region( or, ir[0], &insert->rmain ) ) return( -1 ); /* Paste from sub. */ if( vips__insert_paste_region( or, ir[1], &insert->rsub ) ) return( -1 ); return( 0 ); } /* Make a pair of vector constants into a set of formatted pixels. bands can * be 3 while n is 1, meaning expand the constant to the number of bands. * imag can be NULL, meaning all zero for the imaginary component. */ VipsPel * vips__vector_to_pels( const char *domain, int bands, VipsBandFormat format, VipsCoding coding, double *real, double *imag, int n ) { /* Run our pipeline relative to this. */ VipsImage *context = vips_image_new(); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( context ), 8 ); VipsImage *in; double *ones; VipsPel *result; int i; #ifdef VIPS_DEBUG printf( "vips__vector_to_pels: starting\n" ); #endif /*VIPS_DEBUG*/ ones = VIPS_ARRAY( context, n, double ); for( i = 0; i < n; i++ ) ones[i] = 1.0; /* Make the real and imaginary parts. */ if( vips_black( &t[0], 1, 1, "bands", bands, NULL ) || vips_linear( t[0], &t[1], ones, real, n, NULL ) ) { g_object_unref( context ); return( NULL ); } in = t[1]; if( imag ) { if( vips_black( &t[2], 1, 1, "bands", bands, NULL ) || vips_linear( t[2], &t[3], ones, imag, n, NULL ) || vips_complexform( in, t[3], &t[4], NULL ) ) { g_object_unref( context ); return( NULL ); } in = t[4]; } /* Cast to the output type and coding. */ if( vips_cast( in, &t[5], format, NULL ) || vips_image_encode( t[5], &t[6], coding ) ) { g_object_unref( context ); return( NULL ); } in = t[6]; /* Write to memory, copy to output buffer. */ if( !(t[7] = vips_image_new_memory()) || vips_image_write( in, t[7] ) ) { g_object_unref( context ); return( NULL ); } in = t[7]; if( !(result = VIPS_ARRAY( NULL, VIPS_IMAGE_SIZEOF_PEL( in ), VipsPel )) ) { g_object_unref( context ); return( NULL ); } memcpy( result, in->data, VIPS_IMAGE_SIZEOF_PEL( in ) ); #ifdef VIPS_DEBUG { int i; printf( "vips__vector_to_ink:\n" ); printf( "\t(real, imag) = " ); for( i = 0; i < n; i++ ) printf( "(%g, %g) ", real[i], imag ? imag[i] : 0 ); printf( "\n" ); printf( "\tink = " ); for( i = 0; i < VIPS_IMAGE_SIZEOF_PEL( in ); i++ ) printf( "%d ", result[i] ); printf( "\n" ); } #endif /*VIPS_DEBUG*/ g_object_unref( context ); return( result ); } static void vips__vector_to_ink_cb( VipsObject *object, char *buf ) { g_free( buf ); } /* Calculate a pixel for an image from a vec of double. Valid while im is * valid. */ VipsPel * vips__vector_to_ink( const char *domain, VipsImage *im, double *real, double *imag, int n ) { int bands; VipsBandFormat format; VipsPel *result; vips_image_decode_predict( im, &bands, &format ); if( !(result = vips__vector_to_pels( domain, bands, format, im->Coding, real, imag, n )) ) return( NULL ); g_signal_connect( im, "postclose", G_CALLBACK( vips__vector_to_ink_cb ), result ); return( result ); } /* The inverse: take ink to a vec of double. Used in the vips7 compat * wrappers. Result valid while im is valid. */ double * vips__ink_to_vector( const char *domain, VipsImage *im, VipsPel *ink, int *n ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( im ), 6 ); double *result; #ifdef VIPS_DEBUG printf( "vips__ink_to_vector: starting\n" ); #endif /*VIPS_DEBUG*/ /* Wrap a VipsImage around ink. */ t[0] = vips_image_new_from_memory( ink, VIPS_IMAGE_SIZEOF_PEL( im ), 1, 1, VIPS_IMAGE_SIZEOF_PEL( im ), VIPS_FORMAT_UCHAR ); if( vips_copy( t[0], &t[1], "bands", im->Bands, "format", im->BandFmt, "coding", im->Coding, "interpretation", im->Type, NULL ) ) return( NULL ); /* The image may be coded .. unpack to double. */ if( vips_image_decode( t[1], &t[2] ) || vips_cast( t[2], &t[3], VIPS_FORMAT_DOUBLE, NULL ) ) return( NULL ); /* To a mem buffer, then copy to out. */ if( !(t[4] = vips_image_new_memory()) || vips_image_write( t[3], t[4] ) ) return( NULL ); if( !(result = VIPS_ARRAY( im, t[4]->Bands, double )) ) return( NULL ); memcpy( result, t[4]->data, VIPS_IMAGE_SIZEOF_PEL( t[4] ) ); *n = t[4]->Bands; #ifdef VIPS_DEBUG { int i; printf( "vips__ink_to_vector:\n" ); printf( "\tink = " ); for( i = 0; i < n; i++ ) printf( "%d ", ink[i] ); printf( "\n" ); printf( "\tvec = " ); for( i = 0; i < *n; i++ ) printf( "%g ", result[i] ); printf( "\n" ); } #endif /*VIPS_DEBUG*/ return( result ); } static int vips_insert_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsConversion *conversion = VIPS_CONVERSION( object ); VipsInsert *insert = (VipsInsert *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 6 ); VipsImage **arry; if( VIPS_OBJECT_CLASS( vips_insert_parent_class )->build( object ) ) return( -1 ); if( vips_image_pio_input( insert->main ) || vips_image_pio_input( insert->sub ) || vips_check_bands_1orn( class->nickname, insert->main, insert->sub ) || vips_check_coding_known( class->nickname, insert->main ) || vips_check_coding_same( class->nickname, insert->main, insert->sub ) ) return( -1 ); /* Cast our input images up to a common format and bands. */ if( vips__formatalike( insert->main, insert->sub, &t[0], &t[1] ) || vips__bandalike( class->nickname, t[0], t[1], &t[2], &t[3] ) ) return( -1 ); insert->main_processed = t[2]; insert->sub_processed = t[3]; if( !(arry = vips_allocate_input_array( conversion->out, insert->main_processed, insert->sub_processed, NULL )) ) return( -1 ); /* Joins can get very wide (eg. consider joining a set of tiles * horizontally to make a large image), we don't want mem use to shoot * up. SMALLTILE will guarantee we keep small and local. */ if( vips_image_pipeline_array( conversion->out, VIPS_DEMAND_STYLE_SMALLTILE, arry ) ) return( -1 ); /* Calculate geometry. */ insert->rmain.left = 0; insert->rmain.top = 0; insert->rmain.width = insert->main_processed->Xsize; insert->rmain.height = insert->main_processed->Ysize; insert->rsub.left = insert->x; insert->rsub.top = insert->y; insert->rsub.width = insert->sub_processed->Xsize; insert->rsub.height = insert->sub_processed->Ysize; if( insert->expand ) { /* Expand output to bounding box of these two. */ vips_rect_unionrect( &insert->rmain, &insert->rsub, &insert->rout ); /* Translate origin to top LH corner of rout. */ insert->rmain.left -= insert->rout.left; insert->rmain.top -= insert->rout.top; insert->rsub.left -= insert->rout.left; insert->rsub.top -= insert->rout.top; insert->rout.left = 0; insert->rout.top = 0; } else insert->rout = insert->rmain; conversion->out->Xsize = insert->rout.width; conversion->out->Ysize = insert->rout.height; if( !(insert->ink = vips__vector_to_ink( class->nickname, conversion->out, (double *) VIPS_ARRAY_ADDR( insert->background, 0 ), NULL, VIPS_AREA( insert->background )->n )) ) return( -1 ); if( vips_image_generate( conversion->out, vips_start_many, vips_insert_gen, vips_stop_many, arry, insert ) ) return( -1 ); return( 0 ); } /* xy range we sanity check on ... just to stop crazy numbers from 1/0 etc. * causing g_assert() failures later. */ #define RANGE (100000000) static void vips_insert_class_init( VipsInsertClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); VIPS_DEBUG_MSG( "vips_insert_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "insert"; vobject_class->description = _( "insert image @sub into @main at @x, @y" ); vobject_class->build = vips_insert_build; /* Can't be UNBUFFERED, we are a SMALLTILE operation. */ operation_class->flags = VIPS_OPERATION_SEQUENTIAL; VIPS_ARG_IMAGE( class, "main", -1, _( "Main" ), _( "Main input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInsert, main ) ); VIPS_ARG_IMAGE( class, "sub", 0, _( "Sub-image" ), _( "Sub-image to insert into main image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInsert, sub ) ); VIPS_ARG_INT( class, "x", 2, _( "X" ), _( "Left edge of sub in main" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInsert, x ), -RANGE, RANGE, 0 ); VIPS_ARG_INT( class, "y", 3, _( "Y" ), _( "Top edge of sub in main" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsInsert, y ), -RANGE, RANGE, 0 ); VIPS_ARG_BOOL( class, "expand", 4, _( "Expand" ), _( "Expand output to hold all of both inputs" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsInsert, expand ), FALSE ); VIPS_ARG_BOXED( class, "background", 5, _( "Background" ), _( "Color for new pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsInsert, background ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_insert_init( VipsInsert *insert ) { /* Init our instance fields. */ insert->background = vips_array_double_newv( 1, 0.0 ); } /** * vips_insert: * @main: big image * @sub: small image * @out: output image * @x: left position of @sub * @y: top position of @sub * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @expand: expand output to hold whole of both images * @background: colour for new pixels * * Insert @sub into @main at position @x, @y. * * Normally @out shows the whole of @main. If @expand is #TRUE then @out is * made large enough to hold all of @main and @sub. * Any areas of @out not coming from * either @main or @sub are set to @background (default 0). * * If @sub overlaps @main, * @sub will appear on top of @main. * * If the number of bands differs, one of the images * must have one band. In this case, an n-band image is formed from the * one-band image by joining n copies of the one-band image together, and then * the two n-band images are operated upon. * * The two input images are cast up to the smallest common type (see table * Smallest common format in * arithmetic). * * See also: vips_join(), vips_embed(), vips_extract_area(). * * Returns: 0 on success, -1 on error */ int vips_insert( VipsImage *main, VipsImage *sub, VipsImage **out, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_call_split( "insert", ap, main, sub, out, x, y ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/autorot.c0000664000175000017500000001064212530402247015127 00000000000000/* autorot * * 19/10/14 * - from jpegload */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include "pconversion.h" typedef struct _VipsAutorot { VipsConversion parent_instance; VipsImage *in; VipsAngle angle; } VipsAutorot; typedef VipsConversionClass VipsAutorotClass; G_DEFINE_TYPE( VipsAutorot, vips_autorot, VIPS_TYPE_CONVERSION ); #define ORIENTATION ("exif-ifd0-Orientation") /** * vips_autorot_get_angle: * @im: image to fetch orientation from * * Examine the metadata on @im and return the #VipsAngle to rotate by to turn * the image upright. * * See also: vips_autorot(). * * Returns: the #VipsAngle to rotate by to make the image upright. */ VipsAngle vips_autorot_get_angle( VipsImage *im ) { VipsAngle angle; const char *orientation; angle = VIPS_ANGLE_D0; if( vips_image_get_typeof( im, ORIENTATION ) && !vips_image_get_string( im, ORIENTATION, &orientation ) ) { if( vips_isprefix( "6", orientation ) ) angle = VIPS_ANGLE_D90; else if( vips_isprefix( "8", orientation ) ) angle = VIPS_ANGLE_D270; else if( vips_isprefix( "3", orientation ) ) angle = VIPS_ANGLE_D180; /* Other values do rotate + mirror, don't bother handling them * though, how common can mirroring be. * * See: * * http://www.80sidea.com/archives/2316 */ } return( angle ); } static int vips_autorot_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsAutorot *autorot = (VipsAutorot *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 1 ); if( VIPS_OBJECT_CLASS( vips_autorot_parent_class )->build( object ) ) return( -1 ); g_object_set( object, "angle", vips_autorot_get_angle( autorot->in ), NULL ); autorot->angle = vips_autorot_get_angle( autorot->in ); if( vips_rot( autorot->in, &t[0], autorot->angle, NULL ) || vips_image_write( t[0], conversion->out ) ) return( -1 ); (void) vips_image_remove( conversion->out, ORIENTATION ); return( 0 ); } static void vips_autorot_class_init( VipsAutorotClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "autorot"; vobject_class->description = _( "autorotate image by exif tag" ); vobject_class->build = vips_autorot_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsAutorot, in ) ); VIPS_ARG_ENUM( class, "angle", 6, _( "Angle" ), _( "Angle image was rotated by" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsAutorot, angle ), VIPS_TYPE_ANGLE, VIPS_ANGLE_D0 ); } static void vips_autorot_init( VipsAutorot *autorot ) { autorot->angle = VIPS_ANGLE_D0; } /** * vips_autorot: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @angle: output #VipsAngle the image was rotated by * * Look at the exif tags and rotate the image to make it upright. The * orientation tag is removed from @out to prevent accidental double rotation. * * Read @angle to find the amount the image was rotated by. * * See also: vips_rot(). * * Returns: 0 on success, -1 on error */ int vips_autorot( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "autorot", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/rot.c0000664000175000017500000002006412651132206014234 00000000000000/* rotate by 0/90/180/270 degrees * * Copyright: 1991, N. Dessipris * Written on: 28/10/91 * Updated on: 2/4/92, J.Cupitt * bugs in im_la90rot fixed, now works for any type. * 19/7/93 JC * - IM_CODING_LABQ allowed now * 15/11/94 JC * - name changed * - memory leaks fixed * 8/2/95 JC * - oops! memory allocation problem fixed * 18/5/95 JC * - IM_MAXLINES increased * 13/8/96 JC * - rewritten for partials * 6/11/02 JC * - speed-up ... replace memcpy() with a loop for small pixels * 14/4/04 * - sets Xoffset / Yoffset * 24/3/09 * - added IM_CODING_RAD support * 1/2/10 * - cleanups * - gtkdoc * 4/11/11 * - rewrite as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pconversion.h" typedef struct _VipsRot { VipsConversion parent_instance; /* The input image. */ VipsImage *in; /* Rotate by ... */ VipsAngle angle; } VipsRot; typedef VipsConversionClass VipsRotClass; G_DEFINE_TYPE( VipsRot, vips_rot, VIPS_TYPE_CONVERSION ); static int vips_rot90_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = (VipsImage *) a; /* Output area. */ VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT(r); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int x, y, i; /* Pixel geometry. */ int ps, ls; /* Find the area of the input image we need. */ VipsRect need; need.left = to; need.top = in->Ysize - ri; need.width = r->height; need.height = r->width; if( vips_region_prepare( ir, &need ) ) return( -1 ); /* Find PEL size and line skip for ir. */ ps = VIPS_IMAGE_SIZEOF_PEL( in ); ls = VIPS_REGION_LSKIP( ir ); /* Rotate the bit we now have. */ for( y = to; y < bo; y++ ) { /* Start of this output line. */ VipsPel *q = VIPS_REGION_ADDR( or, le, y ); /* Corresponding position in ir. */ VipsPel *p = VIPS_REGION_ADDR( ir, need.left + y - to, need.top + need.height - 1 ); for( x = le; x < ri; x++ ) { for( i = 0; i < ps; i++ ) q[i] = p[i]; q += ps; p -= ls; } } return( 0 ); } static int vips_rot180_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = (VipsImage *) a; /* Output area. */ VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT(r); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int x, y; /* Pixel geometry. */ int ps; /* Find the area of the input image we need. */ VipsRect need; need.left = in->Xsize - ri; need.top = in->Ysize - bo; need.width = r->width; need.height = r->height; if( vips_region_prepare( ir, &need ) ) return( -1 ); /* Find PEL size and line skip for ir. */ ps = VIPS_IMAGE_SIZEOF_PEL( in ); /* Rotate the bit we now have. */ for( y = to; y < bo; y++ ) { /* Start of this output line. */ VipsPel *q = VIPS_REGION_ADDR( or, le, y ); /* Corresponding position in ir. */ VipsPel *p = VIPS_REGION_ADDR( ir, need.left + need.width - 1, need.top + need.height - (y - to) - 1 ); /* Blap across! */ for( x = le; x < ri; x++ ) { memcpy( q, p, ps ); q += ps; p -= ps; } } return( 0 ); } static int vips_rot270_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsImage *in = (VipsImage *) a; /* Output area. */ VipsRect *r = &or->valid; int le = r->left; int ri = VIPS_RECT_RIGHT(r); int to = r->top; int bo = VIPS_RECT_BOTTOM(r); int x, y, i; /* Pixel geometry. */ int ps, ls; /* Find the area of the input image we need. */ VipsRect need; need.left = in->Xsize - bo; need.top = le; need.width = r->height; need.height = r->width; if( vips_region_prepare( ir, &need ) ) return( -1 ); /* Find PEL size and line skip for ir. */ ps = VIPS_IMAGE_SIZEOF_PEL( in ); ls = VIPS_REGION_LSKIP( ir ); /* Rotate the bit we now have. */ for( y = to; y < bo; y++ ) { /* Start of this output line. */ VipsPel *q = VIPS_REGION_ADDR( or, le, y ); /* Corresponding position in ir. */ VipsPel *p = VIPS_REGION_ADDR( ir, need.left + need.width - (y - to) - 1, need.top ); for( x = le; x < ri; x++ ) { for( i = 0; i < ps; i++ ) q[i] = p[i]; q += ps; p += ls; } } return( 0 ); } static int vips_rot_build( VipsObject *object ) { VipsConversion *conversion = VIPS_CONVERSION( object ); VipsRot *rot = (VipsRot *) object; VipsGenerateFn generate_fn; VipsDemandStyle hint; if( VIPS_OBJECT_CLASS( vips_rot_parent_class )->build( object ) ) return( -1 ); if( rot->angle == VIPS_ANGLE_D0 ) return( vips_image_write( rot->in, conversion->out ) ); if( vips_image_pio_input( rot->in ) ) return( -1 ); hint = rot->angle == VIPS_ANGLE_D180 ? VIPS_DEMAND_STYLE_THINSTRIP : VIPS_DEMAND_STYLE_SMALLTILE; if( vips_image_pipelinev( conversion->out, hint, rot->in, NULL ) ) return( -1 ); switch( rot->angle ) { case VIPS_ANGLE_D90: generate_fn = vips_rot90_gen; conversion->out->Xsize = rot->in->Ysize; conversion->out->Ysize = rot->in->Xsize; conversion->out->Xoffset = rot->in->Ysize; conversion->out->Yoffset = 0; break; case VIPS_ANGLE_D180: generate_fn = vips_rot180_gen; conversion->out->Xoffset = rot->in->Xsize; conversion->out->Yoffset = rot->in->Ysize; break; case VIPS_ANGLE_D270: generate_fn = vips_rot270_gen; conversion->out->Xsize = rot->in->Ysize; conversion->out->Ysize = rot->in->Xsize; conversion->out->Xoffset = 0; conversion->out->Yoffset = rot->in->Xsize; break; default: g_assert_not_reached(); /* Stop compiler warnings. */ generate_fn = NULL; } if( vips_image_generate( conversion->out, vips_start_one, generate_fn, vips_stop_one, rot->in, rot ) ) return( -1 ); return( 0 ); } static void vips_rot_class_init( VipsRotClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_rot_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "rot"; vobject_class->description = _( "rotate an image" ); vobject_class->build = vips_rot_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRot, in ) ); VIPS_ARG_ENUM( class, "angle", 6, _( "Angle" ), _( "Angle to rotate image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRot, angle ), VIPS_TYPE_ANGLE, VIPS_ANGLE_D90 ); } static void vips_rot_init( VipsRot *rot ) { } /** * vips_rot: * @in: input image * @out: output image * @angle: rotation angle * @...: %NULL-terminated list of optional named arguments * * Rotate @in by a multiple of 90 degrees. * * See also: vips_flip(). * * Returns: 0 on success, -1 on error */ int vips_rot( VipsImage *in, VipsImage **out, VipsAngle angle, ... ) { va_list ap; int result; va_start( ap, angle ); result = vips_call_split( "rot", ap, in, out, angle ); va_end( ap ); return( result ); } vips-8.2.2/libvips/conversion/Makefile.in0000664000175000017500000006101512651721156015342 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/conversion ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libconversion_la_LIBADD = am_libconversion_la_OBJECTS = conversion.lo tilecache.lo gamma.lo \ sequential.lo flatten.lo premultiply.lo unpremultiply.lo \ byteswap.lo cache.lo copy.lo embed.lo flip.lo insert.lo \ join.lo arrayjoin.lo extract.lo replicate.lo cast.lo \ bandjoin.lo bandrank.lo recomb.lo bandmean.lo bandfold.lo \ bandunfold.lo bandbool.lo bandary.lo rot.lo rot45.lo \ autorot.lo ifthenelse.lo falsecolour.lo msb.lo grid.lo \ scale.lo wrap.lo subsample.lo zoom.lo libconversion_la_OBJECTS = $(am_libconversion_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libconversion_la_SOURCES) DIST_SOURCES = $(libconversion_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libconversion.la libconversion_la_SOURCES = \ conversion.c \ pconversion.h \ tilecache.c \ gamma.c \ sequential.c \ flatten.c \ premultiply.c \ unpremultiply.c \ byteswap.c \ cache.c \ copy.c \ embed.c \ flip.c \ insert.c \ join.c \ arrayjoin.c \ extract.c \ replicate.c \ cast.c \ bandjoin.c \ bandrank.c \ recomb.c \ bandmean.c \ bandfold.c \ bandunfold.c \ bandbool.c \ bandary.h \ bandary.c \ rot.c \ rot45.c \ autorot.c \ ifthenelse.c \ falsecolour.c \ msb.c \ grid.c \ scale.c \ wrap.c \ subsample.c \ zoom.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/conversion/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/conversion/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libconversion.la: $(libconversion_la_OBJECTS) $(libconversion_la_DEPENDENCIES) $(EXTRA_libconversion_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libconversion_la_OBJECTS) $(libconversion_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arrayjoin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/autorot.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bandary.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bandbool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bandfold.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bandjoin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bandmean.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bandrank.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bandunfold.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/byteswap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cast.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conversion.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/embed.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extract.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/falsecolour.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flatten.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/flip.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gamma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grid.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifthenelse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/insert.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/join.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/premultiply.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recomb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/replicate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rot.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rot45.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scale.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sequential.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subsample.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilecache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unpremultiply.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoom.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/conversion/bandrank.c0000664000175000017500000001717112651122743015222 00000000000000/* Sort a set of images, pixelwise, and pick out the index at each point. * * 19/8/03 * - from im_maxvalue(), via im_gbandrank() * 10/11/10 * - gtkdoc * - cleanups * - any mix of formats and bands * 23/10/13 * - redo as a class, from bandrank.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "bandary.h" typedef struct _VipsBandrank { VipsBandary parent_instance; /* The input images. */ VipsArrayImage *in; int index; /* Pick out this one */ } VipsBandrank; typedef VipsBandaryClass VipsBandrankClass; G_DEFINE_TYPE( VipsBandrank, vips_bandrank, VIPS_TYPE_BANDARY ); /* Special-case max and min (rather common). */ #define FIND_MAX( TYPE ) { \ for( x = 0; x < sz; x++ ) { \ TYPE top = ((TYPE *) p[0])[x]; \ \ for( i = 1; i < bandary->n; i++ ) { \ TYPE v = ((TYPE *) p[i])[x]; \ \ if( v > top ) \ top = v; \ } \ \ ((TYPE *) q)[x] = top; \ } \ } #define FIND_MIN( TYPE ) { \ for( x = 0; x < sz; x++ ) { \ TYPE bot = ((TYPE *) p[0])[x]; \ \ for( i = 1; i < bandary->n; i++ ) { \ TYPE v = ((TYPE *) p[i])[x]; \ \ if( v < bot ) \ bot = v; \ } \ \ ((TYPE *) q)[x] = bot; \ } \ } #define FIND_RANK( TYPE ) { \ TYPE *sort = (TYPE *) sort_buffer; \ \ for( x = 0; x < sz; x++ ) { \ for( i = 0; i < bandary->n; i++ ) { \ TYPE v = ((TYPE *) p[i])[x]; \ \ /* Search for element >v. */\ for( j = 0; j < i; j++ ) \ if( sort[j] > v ) \ break; \ \ /* Move remaining elements down. */ \ for( k = i; k > j; k-- ) \ sort[k] = sort[k - 1]; \ \ /* Insert this element. */ \ sort[j] = v; \ } \ \ ((TYPE *) q)[x] = sort[bandrank->index]; \ } \ } #define SWITCH( OPERATION ) \ switch( in[0]->BandFmt ) { \ case VIPS_FORMAT_UCHAR: OPERATION( unsigned char ); break; \ case VIPS_FORMAT_CHAR: OPERATION( signed char ); break; \ case VIPS_FORMAT_USHORT: OPERATION( unsigned short ); break; \ case VIPS_FORMAT_SHORT: OPERATION( signed short ); break; \ case VIPS_FORMAT_UINT: OPERATION( unsigned int ); break; \ case VIPS_FORMAT_INT: OPERATION( signed int ); break; \ case VIPS_FORMAT_FLOAT: OPERATION( float ); break; \ case VIPS_FORMAT_DOUBLE: OPERATION( double ); break; \ \ default: \ g_assert_not_reached(); \ } /* Sort input band elements in the stack. Needs to be big enough for * sizeof(band-element) * number-of-images. */ #define SORT_BUFFER (1024) static void vips_bandrank_buffer( VipsBandary *bandary, VipsPel *q, VipsPel **p, int width ) { VipsBandrank *bandrank = (VipsBandrank *) bandary; VipsImage **in = bandary->ready; int sz = width * in[0]->Bands; int i, j, k; int x; VipsPel sort_buffer[SORT_BUFFER]; /* Special-case max and min. */ if( bandrank->index == 0 ) SWITCH( FIND_MIN ) else if( bandrank->index == bandary->n - 1 ) SWITCH( FIND_MAX ) else SWITCH( FIND_RANK ) } static int vips_bandrank_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsBandary *bandary = (VipsBandary *) object; VipsBandrank *bandrank = (VipsBandrank *) object; if( bandrank->in ) { int n; VipsImage **in = vips_array_image_get( bandrank->in, &n ); VipsImage **band = (VipsImage **) vips_object_local_array( object, n ); int i; for( i = 0; i < n; i++ ) if( vips_check_noncomplex( class->nickname, in[i] ) ) return( -1 ); if( n == 1 ) { bandary->in = in; bandary->n = 1; return( vips_bandary_copy( bandary ) ); } /* We need to keep one band element for every input image * on the stack. */ if( sizeof( double ) * n > SORT_BUFFER ) { vips_error( class->nickname, "%s", _( "too many input images" ) ); return( -1 ); } if( vips__bandalike_vec( class->nickname, in, band, n, 0 ) ) return( -1 ); bandary->in = band; bandary->n = n; bandary->out_bands = band[0]->Bands; if( bandrank->index == -1 ) bandrank->index = bandary->n / 2; } if( VIPS_OBJECT_CLASS( vips_bandrank_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_bandrank_class_init( VipsBandrankClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsBandaryClass *bandary_class = VIPS_BANDARY_CLASS( class ); VIPS_DEBUG_MSG( "vips_bandrank_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "bandrank"; vobject_class->description = _( "band-wise rank of a set of images" ); vobject_class->build = vips_bandrank_build; bandary_class->process_line = vips_bandrank_buffer; VIPS_ARG_BOXED( class, "in", 0, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsBandrank, in ), VIPS_TYPE_ARRAY_IMAGE ); VIPS_ARG_INT( class, "index", 0, _( "Index" ), _( "Select this band element from sorted list" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsBandrank, index ), -1, 1000000, -1 ); } static void vips_bandrank_init( VipsBandrank *bandrank ) { /* -1 means median. */ bandrank->index = -1; } static int vips_bandrankv( VipsImage **in, VipsImage **out, int n, va_list ap ) { VipsArrayImage *array; int result; array = vips_array_image_new( in, n ); result = vips_call_split( "bandrank", ap, array, out ); vips_area_unref( VIPS_AREA( array ) ); return( result ); } /** * vips_bandrank: * @in: array of input images * @out: output image * @n: number of input images * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @index: pick this index from list of sorted values * * Sorts the images @in band-element-wise, then outputs an * image in which each band element is selected from the sorted list by the * @index parameter. For example, if @index * is zero, then each output band element will be the minimum of all the * corresponding input band elements. * * By default, @index is -1, meaning pick the median value. * * It works for any uncoded, non-complex image type. Images are cast up to the * smallest common-format. * * Any image can have either 1 band or n bands, where n is the same for all * the non-1-band images. Single band images are then effectively copied to * make n-band images. * * Smaller input images are expanded by adding black pixels. * * See also: vips_rank(). * * Returns: 0 on success, -1 on error */ int vips_bandrank( VipsImage **in, VipsImage **out, int n, ... ) { va_list ap; int result; va_start( ap, n ); result = vips_bandrankv( in, out, n, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/draw/0000775000175000017500000000000012651721506012121 500000000000000vips-8.2.2/libvips/draw/draw_line.c0000664000175000017500000002115112651123177014151 00000000000000/* draw straight draw_lines * * Copyright: J. Cupitt * Written: 15/06/1992 * Modified : 22/10/92 - clipping constraints changed * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint * 1/3/10 * - oops, draw_lineset needs to ask for WIO of mask and ink * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 27/9/10 * - gtk-doc * - use draw.c base class * - do pointwise clipping * - rename as im_draw_line() for consistency * - cleanups! * 6/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "drawink.h" typedef struct _VipsDrawLine { VipsDrawink parent_object; int x1; int y1; int x2; int y2; } VipsDrawLine; typedef struct _VipsDrawLineClass { VipsDrawinkClass parent_class; } VipsDrawLineClass; G_DEFINE_TYPE( VipsDrawLine, vips_draw_line, VIPS_TYPE_DRAWINK ); void vips__draw_line_direct( VipsImage *image, int x1, int y1, int x2, int y2, VipsDrawPoint draw_point, void *client ) { int dx, dy; int x, y, err; dx = x2 - x1; dy = y2 - y1; /* Swap endpoints to reduce number of cases. */ if( abs( dx ) >= abs( dy ) && dx < 0 ) { /* Swap to get all x greater or equal cases going to the * right. Do diagonals here .. just have up and right and down * and right now. */ VIPS_SWAP( int, x1, x2 ); VIPS_SWAP( int, y1, y2 ); } else if( abs( dx ) < abs( dy ) && dy < 0 ) { /* Swap to get all y greater cases going down the screen. */ VIPS_SWAP( int, x1, x2 ); VIPS_SWAP( int, y1, y2 ); } dx = x2 - x1; dy = y2 - y1; x = x1; y = y1; /* Special case: zero width and height is single point. */ if( dx == 0 && dy == 0 ) draw_point( image, x, y, client ); /* Special case vertical and horizontal lines for speed. */ else if( dx == 0 ) { /* Vertical line going down. */ for( ; y <= y2; y++ ) draw_point( image, x, y, client ); } else if( dy == 0 ) { /* Horizontal line to the right. */ for( ; x <= x2; x++ ) draw_point( image, x, y, client ); } /* Special case diagonal lines. */ else if( abs( dy ) == abs( dx ) && dy > 0 ) { /* Diagonal line going down and right. */ for( ; x <= x2; x++, y++ ) draw_point( image, x, y, client ); } else if( abs( dy ) == abs( dx ) && dy < 0 ) { /* Diagonal line going up and right. */ for( ; x <= x2; x++, y-- ) draw_point( image, x, y, client ); } else if( abs( dy ) < abs( dx ) && dy > 0 ) { /* Between -45 and 0 degrees. */ for( err = 0; x <= x2; x++ ) { draw_point( image, x, y, client ); err += dy; if( err >= dx ) { err -= dx; y++; } } } else if( abs( dy ) < abs( dx ) && dy < 0 ) { /* Between 0 and 45 degrees. */ for( err = 0; x <= x2; x++ ) { draw_point( image, x, y, client ); err -= dy; if( err >= dx ) { err -= dx; y--; } } } else if( abs( dy ) > abs( dx ) && dx > 0 ) { /* Between -45 and -90 degrees. */ for( err = 0; y <= y2; y++ ) { draw_point( image, x, y, client ); err += dx; if( err >= dy ) { err -= dy; x++; } } } else if( abs( dy ) > abs( dx ) && dx < 0 ) { /* Between -90 and -135 degrees. */ for( err = 0; y <= y2; y++ ) { draw_point( image, x, y, client ); err -= dx; if( err >= dy ) { err -= dy; x--; } } } else g_assert_not_reached(); } static void vips_draw_line_draw_point_noclip( VipsImage *image, int x, int y, void *client ) { VipsPel *ink = (VipsPel *) client; VipsPel *q = VIPS_IMAGE_ADDR( image, x, y ); int psize = VIPS_IMAGE_SIZEOF_PEL( image ); int j; /* Faster than memcopy() for n < about 20. */ for( j = 0; j < psize; j++ ) q[j] = ink[j]; } static void vips_draw_line_draw_point_clip( VipsImage *image, int x, int y, void *client ) { if( x >= 0 && x < image->Xsize && y >= 0 && y < image->Ysize ) vips_draw_line_draw_point_noclip( image, x, y, client ); } static int vips_draw_line_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsDrawLine *line = (VipsDrawLine *) object; VipsDrawPoint draw_point; if( VIPS_OBJECT_CLASS( vips_draw_line_parent_class )->build( object ) ) return( -1 ); if( line->x1 < draw->image->Xsize && line->x1 >= 0 && line->x2 < draw->image->Xsize && line->x2 >= 0 && line->y1 < draw->image->Ysize && line->y1 >= 0 && line->y2 < draw->image->Ysize && line->y2 >= 0 ) draw_point = vips_draw_line_draw_point_noclip; else draw_point = vips_draw_line_draw_point_clip; vips__draw_line_direct( draw->image, line->x1, line->y1, line->x2, line->y2, draw_point, drawink->pixel_ink ); return( 0 ); } static void vips_draw_line_class_init( VipsDrawLineClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_line"; vobject_class->description = _( "draw a line on an image" ); vobject_class->build = vips_draw_line_build; VIPS_ARG_INT( class, "x1", 3, _( "x1" ), _( "Start of draw_line" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawLine, x1 ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y1", 4, _( "y1" ), _( "Start of draw_line" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawLine, y1 ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "x2", 5, _( "x2" ), _( "End of draw_line" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawLine, x2 ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y2", 6, _( "y2" ), _( "End of draw_line" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawLine, y2 ), -1000000000, 1000000000, 0 ); } static void vips_draw_line_init( VipsDrawLine *draw_line ) { } static int vips_draw_linev( VipsImage *image, double *ink, int n, int x1, int y1, int x2, int y2, va_list ap ) { VipsArea *area_ink; int result; area_ink = (VipsArea *) vips_array_double_new( ink, n ); result = vips_call_split( "draw_line", ap, image, area_ink, x1, y1, x2, y2 ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_line: * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @x1: start of draw_line * @y1: start of draw_line * @x2: end of draw_line * @y2: end of draw_line * @...: %NULL-terminated list of optional named arguments * * Draws a 1-pixel-wide line on an image. * * @ink is an array of double containing values to draw. * * See also: vips_draw_line1(), vips_draw_circle(), vips_draw_mask(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_line( VipsImage *image, double *ink, int n, int x1, int y1, int x2, int y2, ... ) { va_list ap; int result; va_start( ap, y2 ); result = vips_draw_linev( image, ink, n, x1, y1, x2, y2, ap ); va_end( ap ); return( result ); } /** * vips_draw_line1: * @image: image to draw on * @ink: value to draw * @x1: start of draw_line * @y1: start of draw_line * @x2: end of draw_line * @y2: end of draw_line * @...: %NULL-terminated list of optional named arguments * * As vips_draw_line(), but just take a single double for @ink. * * See also: vips_draw_line(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_line1( VipsImage *image, double ink, int x1, int y1, int x2, int y2, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, y2 ); result = vips_draw_linev( image, array_ink, 1, x1, y1, x2, y2, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/draw/draw_image.c0000664000175000017500000001764612651123166014320 00000000000000/* in-place insert * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 1/9/04 JC * - checks bands/types/etc match (thanks Matt) * - smarter pixel size calculations * 5/12/06 * - im_invalidate() after paint * 24/3/09 * - added IM_CODING_RAD support * 21/10/09 * - allow sub to be outside main * - gtkdoc * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 25/8/10 * - cast and bandalike sub to main * 22/9/10 * - rename to im_draw_image() * - gtk-doc * 9/2/14 * - redo as a class, based on draw_image * 28/3/14 * - add "mode" param */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pdraw.h" typedef struct _VipsDrawImage { VipsDraw parent_object; /* Parameters. */ VipsImage *sub; int x; int y; VipsCombineMode mode; } VipsDrawImage; typedef struct _VipsDrawImageClass { VipsDrawClass parent_class; } VipsDrawImageClass; G_DEFINE_TYPE( VipsDrawImage, vips_draw_image, VIPS_TYPE_DRAW ); #define LOOP( TYPE, TEMP, MIN, MAX ) { \ TYPE * restrict pt = (TYPE *) p; \ TYPE * restrict qt = (TYPE *) q; \ \ for( x = 0; x < sz; x++ ) { \ TEMP v; \ \ v = pt[x] + qt[x]; \ \ qt[x] = VIPS_CLIP( MIN, v, MAX ); \ } \ } #define LOOPF( TYPE ) { \ TYPE * restrict pt = (TYPE *) p; \ TYPE * restrict qt = (TYPE *) q; \ \ for( x = 0; x < sz; x++ ) \ qt[x] += pt[x]; \ } static void vips_draw_image_mode_add( VipsDrawImage *draw_image, VipsImage *im, VipsPel *q, VipsPel *p, int n ) { /* Complex just doubles the size. */ const int sz = n * im->Bands * (vips_band_format_iscomplex( im->BandFmt ) ? 2 : 1); int x; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: LOOP( unsigned char, int, 0, UCHAR_MAX ); break; case VIPS_FORMAT_CHAR: LOOP( signed char, int, SCHAR_MIN, SCHAR_MAX ); break; case VIPS_FORMAT_USHORT: LOOP( unsigned short, int, 0, USHRT_MAX ); break; case VIPS_FORMAT_SHORT: LOOP( signed short, int, SCHAR_MIN, SCHAR_MAX ); break; case VIPS_FORMAT_UINT: LOOP( unsigned int, gint64, 0, UINT_MAX ); break; case VIPS_FORMAT_INT: LOOP( signed int, gint64, INT_MIN, INT_MAX ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: LOOPF( float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: LOOPF( double ); break; default: g_assert_not_reached(); } } static int vips_draw_image_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsDraw *draw = VIPS_DRAW( object ); VipsDrawImage *draw_image = (VipsDrawImage *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *im; VipsRect image_rect; VipsRect sub_rect; VipsRect clip_rect; if( VIPS_OBJECT_CLASS( vips_draw_image_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, draw->image ) || vips_check_coding_same( class->nickname, draw->image, draw_image->sub ) || vips_check_bands_1orn_unary( class->nickname, draw_image->sub, draw->image->Bands ) ) return( -1 ); /* SET will work for any matching coding, but every other mode needs * uncoded images. */ if( draw_image->mode != VIPS_COMBINE_MODE_SET && vips_check_uncoded( class->nickname, draw->image ) ) return( -1 ); /* Cast sub to match main in bands and format. */ im = draw_image->sub; if( im->Coding == VIPS_CODING_NONE ) { if( vips__bandup( class->nickname, im, &t[0], draw->image->Bands ) || vips_cast( t[0], &t[1], draw->image->BandFmt, NULL ) ) return( -1 ); im = t[1]; } /* Make rects for main and sub and clip. */ image_rect.left = 0; image_rect.top = 0; image_rect.width = draw->image->Xsize; image_rect.height = draw->image->Ysize; sub_rect.left = draw_image->x; sub_rect.top = draw_image->y; sub_rect.width = im->Xsize; sub_rect.height = im->Ysize; vips_rect_intersectrect( &image_rect, &sub_rect, &clip_rect ); if( !vips_rect_isempty( &clip_rect ) ) { VipsPel *p, *q; int y; if( vips_image_wio_input( im ) ) return( -1 ); p = VIPS_IMAGE_ADDR( im, clip_rect.left - draw_image->x, clip_rect.top - draw_image->y ); q = VIPS_IMAGE_ADDR( draw->image, clip_rect.left, clip_rect.top ); for( y = 0; y < clip_rect.height; y++ ) { switch( draw_image->mode ) { case VIPS_COMBINE_MODE_SET: memcpy( (char *) q, (char *) p, clip_rect.width * VIPS_IMAGE_SIZEOF_PEL( im ) ); break; case VIPS_COMBINE_MODE_ADD: vips_draw_image_mode_add( draw_image, im, q, p, clip_rect.width ); break; default: g_assert_not_reached(); } p += VIPS_IMAGE_SIZEOF_LINE( im ); q += VIPS_IMAGE_SIZEOF_LINE( draw->image ); } } return( 0 ); } static void vips_draw_image_class_init( VipsDrawImageClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_image"; vobject_class->description = _( "paint an image into another image" ); vobject_class->build = vips_draw_image_build; VIPS_ARG_IMAGE( class, "sub", 5, _( "Sub-image" ), _( "Sub-image to insert into main image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawImage, sub ) ); VIPS_ARG_INT( class, "x", 6, _( "x" ), _( "Draw image here" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawImage, x ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y", 7, _( "y" ), _( "Draw image here" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawImage, y ), -1000000000, 1000000000, 0 ); VIPS_ARG_ENUM( class, "mode", 8, _( "Mode" ), _( "Combining mode" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawImage, mode ), VIPS_TYPE_COMBINE_MODE, VIPS_COMBINE_MODE_SET ); } static void vips_draw_image_init( VipsDrawImage *draw_image ) { draw_image->mode = VIPS_COMBINE_MODE_SET; } /** * vips_draw_image: * @image: image to draw on * @sub: image to paint * @x: draw @sub here * @y: draw @sub here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @mode: how to combine pixels * * Draw @sub on top of @image at position @x, @y. The two images must have the * same Coding. If @sub has 1 band, the bands will be duplicated to match the * number of bands in @image. @sub will be converted to @image's format, see * vips_cast(). * * Use @mode to set how pixels are combined. If you use * #VIPS_COMBINE_MODE_ADD, both images muct be uncoded. * * See also: vips_draw_mask(), vips_insert(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_image( VipsImage *image, VipsImage *sub, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_call_split( "draw_image", ap, image, sub, x, y ); va_end( ap ); return( result ); } vips-8.2.2/libvips/draw/draw_mask.c0000664000175000017500000002331112651123205014145 00000000000000/* Draw a mask on an image. * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 24/10/03 JC * - now blends with 0-255 mask * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 28/9/10 * - gtk-doc * - renamed as im_draw_mask() * - use Draw base class * 7/2/14 * - redo as a class * - now it's VipsDrawMask */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "drawink.h" typedef struct _VipsDrawMask { VipsDrawink parent_object; /* Parameters. */ VipsImage *mask; int x; int y; /* Derived. */ VipsRect image_clip; VipsRect mask_clip; } VipsDrawMask; typedef struct _VipsDrawMaskClass { VipsDrawinkClass parent_class; } VipsDrawMaskClass; G_DEFINE_TYPE( VipsDrawMask, vips_draw_mask, VIPS_TYPE_DRAWINK ); /* Paint ink into an 8 or 16 bit integer image. */ #define IBLEND( TYPE, TO, INK ) { \ TYPE *tto = (TYPE *) (TO); \ TYPE *tink = (TYPE *) (INK); \ \ int x, i, j; \ \ for( j = 0, x = 0; x < width; x++ ) \ for( i = 0; i < bands; i++, j++ ) \ tto[j] = (tink[i] * m[x] + \ tto[j] * (255 - m[x])) / 255; \ } /* Do the blend with doubles. */ #define DBLEND( TYPE, TO, INK ) { \ TYPE *tto = (TYPE *) (TO); \ TYPE *tink = (TYPE *) (INK); \ \ int x, i, j; \ \ for( j = 0, x = 0; x < width; x++ ) \ for( i = 0; i < bands; i++, j++ ) \ tto[j] = ((double) tink[i] * m[x] + \ (double) tto[j] * (255 - m[x])) / 255; \ } /* Blend of complex. */ #define CBLEND( TYPE, TO, INK ) { \ TYPE *tto = (TYPE *) (TO); \ TYPE *tink = (TYPE *) (INK); \ \ int x, i, j; \ \ for( j = 0, x = 0; x < width; x++ ) \ for( i = 0; i < bands * 2; i += 2, j += 2 ) { \ tto[j] = ((double) tink[i] * m[x] + \ (double) tto[j] * (255 - m[x])) / 255;\ tto[j + 1] = ((double) tink[i + 1] * m[x] + \ (double) tto[j + 1] * (255 - m[x])) / \ 255;\ } \ } static int vips_draw_mask_draw_labq( VipsImage *image, VipsImage *mask, VipsPel *ink, VipsRect *image_clip, VipsRect *mask_clip ) { int width = image_clip->width; int height = image_clip->height; int bands = image->Bands; float *lab_buffer; int y; if( !(lab_buffer = VIPS_ARRAY( NULL, width * 3, float )) ) return( -1 ); for( y = 0; y < height; y++ ) { VipsPel *to = VIPS_IMAGE_ADDR( image, image_clip->left, y + image_clip->top ); VipsPel *m = VIPS_IMAGE_ADDR( mask, mask_clip->left, y + mask_clip->top ); vips__LabQ2Lab_vec( lab_buffer, to, width ); DBLEND( float, lab_buffer, (double *) ink ); vips__Lab2LabQ_vec( to, lab_buffer, width ); } g_free( lab_buffer ); return( 0 ); } static int vips_draw_mask_draw( VipsImage *image, VipsImage *mask, VipsPel *ink, VipsRect *image_clip, VipsRect *mask_clip ) { int width = image_clip->width; int height = image_clip->height; int bands = image->Bands; int y; for( y = 0; y < height; y++ ) { VipsPel *to = VIPS_IMAGE_ADDR( image, image_clip->left, y + image_clip->top ); VipsPel *m = VIPS_IMAGE_ADDR( mask, mask_clip->left, y + mask_clip->top ); switch( image->BandFmt ) { case VIPS_FORMAT_UCHAR: IBLEND( unsigned char, to, ink ); break; case VIPS_FORMAT_CHAR: IBLEND( signed char, to, ink ); break; case VIPS_FORMAT_USHORT: IBLEND( unsigned short, to, ink ); break; case VIPS_FORMAT_SHORT: IBLEND( signed short, to, ink ); break; case VIPS_FORMAT_UINT: DBLEND( unsigned int, to, ink ); break; case VIPS_FORMAT_INT: DBLEND( signed int, to, ink ); break; case VIPS_FORMAT_FLOAT: DBLEND( float, to, ink ); break; case VIPS_FORMAT_DOUBLE: DBLEND( double, to, ink ); break; case VIPS_FORMAT_COMPLEX: CBLEND( float, to, ink ); break; case VIPS_FORMAT_DPCOMPLEX: CBLEND( double, to, ink ); break; default: g_assert_not_reached(); } } return( 0 ); } /* Direct path for draw-mask-along-line or draw-mask-along-circle. We want to * avoid function dispatch overhead. * * The vips7 im_draw_mask() wrapper calls this as well. */ int vips__draw_mask_direct( VipsImage *image, VipsImage *mask, VipsPel *ink, int x, int y ) { VipsRect image_rect; VipsRect area_rect; VipsRect image_clip; VipsRect mask_clip; if( vips_check_coding_noneorlabq( "draw_mask_direct", image ) || vips_image_inplace( image ) || vips_image_wio_input( mask ) || vips_check_mono( "draw_mask_direct", mask ) || vips_check_uncoded( "draw_mask_direct", mask ) || vips_check_format( "draw_mask_direct", mask, VIPS_FORMAT_UCHAR ) ) return( -1 ); /* Find the area we draw on the image. */ area_rect.left = x; area_rect.top = y; area_rect.width = mask->Xsize; area_rect.height = mask->Ysize; image_rect.left = 0; image_rect.top = 0; image_rect.width = image->Xsize; image_rect.height = image->Ysize; vips_rect_intersectrect( &area_rect, &image_rect, &image_clip ); /* And the area of the mask image we use. */ mask_clip = image_clip; mask_clip.left -= x; mask_clip.top -= y; if( !vips_rect_isempty( &image_clip ) ) switch( image->Coding ) { case VIPS_CODING_LABQ: if( vips_draw_mask_draw_labq( image, mask, ink, &image_clip, &mask_clip ) ) return( -1 ); break; case VIPS_CODING_NONE: if( vips_draw_mask_draw( image, mask, ink, &image_clip, &mask_clip ) ) return( -1 ); break; default: g_assert_not_reached(); } return( 0 ); } static int vips_draw_mask_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsDrawMask *mask = (VipsDrawMask *) object; if( VIPS_OBJECT_CLASS( vips_draw_mask_parent_class )->build( object ) ) return( -1 ); if( vips__draw_mask_direct( draw->image, mask->mask, drawink->pixel_ink, mask->x, mask->y ) ) return( -1 ) ; return( 0 ); } static void vips_draw_mask_class_init( VipsDrawMaskClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_mask"; vobject_class->description = _( "draw a mask on an image" ); vobject_class->build = vips_draw_mask_build; VIPS_ARG_IMAGE( class, "mask", 5, _( "Mask" ), _( "Mask of pixels to draw" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawMask, mask ) ); VIPS_ARG_INT( class, "x", 6, _( "x" ), _( "Draw mask here" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawMask, x ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "y", 7, _( "y" ), _( "Draw mask here" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawMask, y ), -1000000000, 1000000000, 0 ); } static void vips_draw_mask_init( VipsDrawMask *draw_mask ) { } static int vips_draw_maskv( VipsImage *image, double *ink, int n, VipsImage *mask, int x, int y, va_list ap ) { VipsArea *area_ink; int result; area_ink = (VipsArea *) vips_array_double_new( ink, n ); result = vips_call_split( "draw_mask", ap, image, area_ink, mask, x, y ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_mask: * @image: image to draw on * @ink: (array length=n): value to draw * @n: size of ink array * @mask: mask of 0/255 values showing where to plot * @x: draw mask here * @y: draw mask here * @...: %NULL-terminated list of optional named arguments * * Draw @mask on the image. @mask is a monochrome 8-bit image with 0/255 * for transparent or @ink coloured points. Intermediate values blend the ink * with the pixel. Use with vips_text() to draw text on an image. Use in a * vips_draw_line() subclass to draw an object along a line. * * @ink is an array of double containing values to draw. * * See also: vips_text(), vips_draw_line(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_mask( VipsImage *image, double *ink, int n, VipsImage *mask, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_draw_maskv( image, ink, n, mask, x, y, ap ); va_end( ap ); return( result ); } /** * vips_draw_mask1: * @image: image to draw on * @ink: value to draw * @mask: mask of 0/255 values showing where to plot * @x: draw mask here * @y: draw mask here * @...: %NULL-terminated list of optional named arguments * * As vips_draw_mask(), but just takes a single double for @ink. * * See also: vips_draw_mask(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_mask1( VipsImage *image, double ink, VipsImage *mask, int x, int y, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, y ); result = vips_draw_maskv( image, array_ink, 1, mask, x, y, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/draw/drawink.h0000664000175000017500000000557012530402247013652 00000000000000/* a drawink operation with an ink param */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_DRAWINK_H #define VIPS_DRAWINK_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include "pdraw.h" #define VIPS_TYPE_DRAWINK (vips_drawink_get_type()) #define VIPS_DRAWINK( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_DRAWINK, VipsDrawink )) #define VIPS_DRAWINK_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_DRAWINK, VipsDrawinkClass)) #define VIPS_IS_DRAWINK( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_DRAWINK )) #define VIPS_IS_DRAWINK_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_DRAWINK )) #define VIPS_DRAWINK_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_DRAWINK, VipsDrawinkClass )) typedef struct _VipsDrawink { VipsDraw parent_instance; VipsArrayDouble *ink; /* Ink cast to pixel type. */ VipsPel *pixel_ink; } VipsDrawink; typedef struct _VipsDrawinkClass { VipsDrawClass parent_class; } VipsDrawinkClass; GType vips_drawink_get_type( void ); static inline int vips__drawink_pel( VipsDrawink *drawink, VipsPel *q ) { VipsDraw *draw = (VipsDraw *) drawink; int j; /* Faster than memcopy() for n < about 20. */ for( j = 0; j < draw->psize; j++ ) q[j] = drawink->pixel_ink[j]; return( 0 ); } /* Paint, with clip. */ static inline int vips__drawink_pel_clip( VipsDrawink *drawink, int x, int y ) { VipsDraw *draw = (VipsDraw *) drawink; if( x < 0 || x >= draw->image->Xsize ) return( 0 ); if( y < 0 || y >= draw->image->Ysize ) return( 0 ); vips__drawink_pel( drawink, VIPS_IMAGE_ADDR( draw->image, x, y ) ); return( 0 ); } /* Is p painted? */ static inline gboolean vips__drawink_painted( VipsDrawink *drawink, VipsPel *p ) { VipsDraw *draw = (VipsDraw *) drawink; int j; for( j = 0; j < draw->psize; j++ ) if( p[j] != drawink->pixel_ink[j] ) break; return( j == draw->psize ); } int vips__drawink_scanline( VipsDrawink *drawink, int y, int x1, int x2 ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_DRAWINK_H*/ vips-8.2.2/libvips/draw/draw.c0000664000175000017500000000740412530402247013141 00000000000000/* base class for drawing operations * * 27/9/10 * - from im_draw_circle() * 17/11/10 * - oops, scanline clipping was off by 1 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pdraw.h" /** * SECTION: draw * @short_description: drawing operations: flood, paste, line, circle * @stability: Stable * @include: vips/vips.h * * These operations directly modify the image. They do not thread, on 32-bit * machines they will be limited to 2GB images, and a little care needs to be * taken if you use them as part of an image pipeline. * * They are mostly supposed to be useful for paintbox-style programs. */ /** * VipsCombineMode: * @VIPS_COMBINE_MODE_SET: set pixels to the new value * @VIPS_COMBINE_MODE_ADD: add pixels * * See vips_draw_image() and so on. * * Operations like vips_draw_image() need to be told how to combine images * from two sources. * * See also: vips_join(). */ G_DEFINE_ABSTRACT_TYPE( VipsDraw, vips_draw, VIPS_TYPE_OPERATION ); static int vips_draw_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsDraw *draw = VIPS_DRAW( object ); #ifdef DEBUG printf( "vips_draw_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_draw_parent_class )->build( object ) ) return( -1 ); if( vips_check_coding_known( class->nickname, draw->image ) || vips_image_inplace( draw->image ) ) return( -1 ); draw->lsize = VIPS_IMAGE_SIZEOF_LINE( draw->image ); draw->psize = VIPS_IMAGE_SIZEOF_PEL( draw->image ); draw->noclip = FALSE; return( 0 ); } static void vips_draw_class_init( VipsDrawClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw"; vobject_class->description = _( "draw operations" ); vobject_class->build = vips_draw_build; VIPS_ARG_IMAGE( class, "image", 1, _( "Image" ), _( "Image to draw on" ), VIPS_ARGUMENT_REQUIRED_INPUT | VIPS_ARGUMENT_MODIFY, G_STRUCT_OFFSET( VipsDraw, image ) ); } static void vips_draw_init( VipsDraw *draw ) { } void vips_draw_operation_init( void ) { extern GType vips_draw_rect_get_type( void ); extern GType vips_draw_image_get_type( void ); extern GType vips_draw_mask_get_type( void ); extern GType vips_draw_line_get_type( void ); extern GType vips_draw_circle_get_type( void ); extern GType vips_draw_flood_get_type( void ); extern GType vips_draw_smudge_get_type( void ); vips_draw_rect_get_type(); vips_draw_image_get_type(); vips_draw_mask_get_type(); vips_draw_line_get_type(); vips_draw_circle_get_type(); vips_draw_flood_get_type(); vips_draw_smudge_get_type(); } vips-8.2.2/libvips/draw/draw_smudge.c0000664000175000017500000001423712651123211014502 00000000000000/* Smudge a piece of image. * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * ? JC * - im_makerw() changed to im_rwcheck() * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 30/9/10 * - gtk-doc * - deprecate im_smear() * 30/1/12 * - back to the custom smear, the conv one was too slow * 11/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pdraw.h" typedef struct _VipsDrawSmudge { VipsDraw parent_object; /* Parameters. */ int left; int top; int width; int height; } VipsDrawSmudge; typedef struct _VipsDrawSmudgeClass { VipsDrawClass parent_class; } VipsDrawSmudgeClass; G_DEFINE_TYPE( VipsDrawSmudge, vips_draw_smudge, VIPS_TYPE_DRAW ); static int vips_draw_smudge_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsImage *im = draw->image; VipsDrawSmudge *smudge = (VipsDrawSmudge *) object; int left = smudge->left; int top = smudge->top; int width = smudge->width; int height = smudge->height; /* Double bands for complex images. */ int bands = vips_image_get_bands( draw->image ) * (vips_band_format_iscomplex( vips_image_get_format( im ) ) ? 2 : 1); int elements = bands * vips_image_get_width( im ); VipsRect area, image, clipped; double *total; int x, y, i, j, b; if( VIPS_OBJECT_CLASS( vips_draw_smudge_parent_class )-> build( object ) ) return( -1 ); area.left = left; area.top = top; area.width = width; area.height = height; /* Don't do the margins. */ image.left = 0; image.top = 0; image.width = im->Xsize; image.height = im->Ysize; vips_rect_marginadjust( &image, -1 ); vips_rect_intersectrect( &area, &image, &clipped ); if( vips_rect_isempty( &clipped ) ) return( 0 ); if( !(total = VIPS_ARRAY( im, bands, double )) ) return( -1 ); /* What we do for each type. */ #define SMUDGE( TYPE ) \ for( y = 0; y < clipped.height; y++ ) { \ TYPE *q; \ TYPE *p; \ \ q = (TYPE *) VIPS_IMAGE_ADDR( im, \ clipped.left, clipped.top + y ); \ p = q - elements - bands; \ for( x = 0; x < clipped.width; x++ ) { \ TYPE *p1, *p2; \ \ for( b = 0; b < bands; b++ ) \ total[b] = 0.0; \ \ p1 = p; \ for( i = 0; i < 3; i++ ) { \ p2 = p1; \ for( j = 0; j < 3; j++ ) \ for( b = 0; b < bands; b++ ) \ total[b] += *p2++; \ \ p1 += elements; \ } \ \ for( b = 0; b < bands; b++ ) \ q[b] = (16 * (double) q[b] + total[b]) / 25.0; \ \ p += bands; \ q += bands; \ } \ } switch( vips_image_get_format( im ) ) { case VIPS_FORMAT_UCHAR: SMUDGE( unsigned char ); break; case VIPS_FORMAT_CHAR: SMUDGE( char ); break; case VIPS_FORMAT_USHORT: SMUDGE( unsigned short ); break; case VIPS_FORMAT_SHORT: SMUDGE( short ); break; case VIPS_FORMAT_UINT: SMUDGE( unsigned int ); break; case VIPS_FORMAT_INT: SMUDGE( int ); break; case VIPS_FORMAT_FLOAT: SMUDGE( float ); break; case VIPS_FORMAT_DOUBLE: SMUDGE( double ); break; case VIPS_FORMAT_COMPLEX: SMUDGE( float ); break; case VIPS_FORMAT_DPCOMPLEX: SMUDGE( double ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_draw_smudge_class_init( VipsDrawSmudgeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_smudge"; vobject_class->description = _( "blur a rectangle on an image" ); vobject_class->build = vips_draw_smudge_build; VIPS_ARG_INT( class, "left", 6, _( "Left" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawSmudge, left ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "top", 7, _( "top" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawSmudge, top ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "width", 8, _( "width" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawSmudge, width ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "height", 9, _( "height" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawSmudge, height ), -1000000000, 1000000000, 0 ); } static void vips_draw_smudge_init( VipsDrawSmudge *draw_smudge ) { } /** * vips_draw_smudge: * @image: image to draw on * @left: point to paint * @top: point to paint * @width: area to paint * @height: area to paint * @...: %NULL-terminated list of optional named arguments * * Smudge a section of @image. Each pixel in the area @left, @top, @width, * @height is replaced by the average of the surrounding 3x3 pixels. * * See also: vips_draw_line(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_smudge( VipsImage *image, int left, int top, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "draw_smudge", ap, image, left, top, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/draw/drawink.c0000664000175000017500000000636612530402247013651 00000000000000/* drawink with a constant ink * * 27/9/10 * - from im_drawink_circle() * 17/11/10 * - oops, scanline clipping was off by 1 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "drawink.h" G_DEFINE_ABSTRACT_TYPE( VipsDrawink, vips_drawink, VIPS_TYPE_DRAW ); static int vips_drawink_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); #ifdef DEBUG printf( "vips_drawink_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_drawink_parent_class )->build( object ) ) return( -1 ); if( drawink->ink && !(drawink->pixel_ink = vips__vector_to_ink( class->nickname, draw->image, VIPS_ARRAY_ADDR( drawink->ink, 0 ), NULL, VIPS_AREA( drawink->ink )->n )) ) return( -1 ); return( 0 ); } static void vips_drawink_class_init( VipsDrawinkClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "drawink"; vobject_class->description = _( "draw with ink operations" ); vobject_class->build = vips_drawink_build; VIPS_ARG_BOXED( class, "ink", 2, _( "Ink" ), _( "Color for pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawink, ink ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_drawink_init( VipsDrawink *drawink ) { drawink->ink = vips_array_double_newv( 1, 0.0 ); } /* Fill a scanline between points x1 and x2 inclusive. x1 < x2. */ int vips__drawink_scanline( VipsDrawink *drawink, int y, int x1, int x2 ) { VipsDraw *draw = (VipsDraw *) drawink; VipsPel *mp; int i; int len; g_assert( x1 <= x2 ); if( y < 0 || y >= draw->image->Ysize ) return( 0 ); if( x1 < 0 && x2 < 0 ) return( 0 ); if( x1 >= draw->image->Xsize && x2 >= draw->image->Xsize ) return( 0 ); x1 = VIPS_CLIP( 0, x1, draw->image->Xsize - 1 ); x2 = VIPS_CLIP( 0, x2, draw->image->Xsize - 1 ); mp = VIPS_IMAGE_ADDR( draw->image, x1, y ); len = x2 - x1 + 1; for( i = 0; i < len; i++ ) { vips__drawink_pel( drawink, mp ); mp += draw->psize; } return( 0 ); } vips-8.2.2/libvips/draw/draw_circle.c0000664000175000017500000002020412605241561014456 00000000000000/* draw a draw_circle on an image * * Author N. Dessipris * Written on 30/05/1990 * Updated on: * 22/7/93 JC * - im_incheck() call added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 18/8/10 * - gtkdoc * - rewritten: clips, fills, any bands, any format * 27/9/10 * - break base out to Draw * 3/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "drawink.h" typedef struct _VipsDrawCircle { VipsDrawink parent_object; int cx; int cy; int radius; gboolean fill; } VipsDrawCircle; typedef struct _VipsDrawCircleClass { VipsDrawinkClass parent_class; } VipsDrawCircleClass; G_DEFINE_TYPE( VipsDrawCircle, vips_draw_circle, VIPS_TYPE_DRAWINK ); void vips__draw_circle_direct( VipsImage *image, int cx, int cy, int r, VipsDrawScanline draw_scanline, void *client ) { int x, y, d; y = r; d = 3 - 2 * r; for( x = 0; x < y; x++ ) { draw_scanline( image, cy + y, cx - x, cx + x, client ); draw_scanline( image, cy - y, cx - x, cx + x, client ); draw_scanline( image, cy + x, cx - y, cx + y, client ); draw_scanline( image, cy - x, cx - y, cx + y, client ); if( d < 0 ) d += 4 * x + 6; else { d += 4 * (x - y) + 10; y--; } } if( x == y ) { draw_scanline( image, cy + y, cx - x, cx + x, client ); draw_scanline( image, cy - y, cx - x, cx + x, client ); draw_scanline( image, cy + x, cx - y, cx + y, client ); draw_scanline( image, cy - x, cx - y, cx + y, client ); } } static inline void vips_draw_circle_draw_point( VipsImage *image, int x, int y, void *client ) { VipsPel *ink = (VipsPel *) client; VipsPel *q = VIPS_IMAGE_ADDR( image, x, y ); int psize = VIPS_IMAGE_SIZEOF_PEL( image ); int j; /* Faster than memcopy() for n < about 20. */ for( j = 0; j < psize; j++ ) q[j] = ink[j]; } /* Paint endpoints, with clip. */ static void vips_draw_circle_draw_endpoints_clip( VipsImage *image, int y, int x1, int x2, void *client ) { if( y >= 0 && y < image->Ysize ) { if( x1 >=0 && x1 < image->Xsize ) vips_draw_circle_draw_point( image, x1, y, client ); if( x2 >=0 && x2 < image->Xsize ) vips_draw_circle_draw_point( image, x2, y, client ); } } /* Paint endpoints, no clip. */ static void vips_draw_circle_draw_endpoints_noclip( VipsImage *image, int y, int x1, int x2, void *client ) { vips_draw_circle_draw_point( image, x1, y, client ); vips_draw_circle_draw_point( image, x2, y, client ); } /* Paint scanline. */ static void vips_draw_circle_draw_scanline( VipsImage *image, int y, int x1, int x2, void *client ) { VipsPel *ink = (VipsPel *) client; int psize = VIPS_IMAGE_SIZEOF_PEL( image ); VipsPel *q; int len; int i, j; g_assert( x1 <= x2 ); if( y < 0 || y >= image->Ysize ) return; if( x1 < 0 && x2 < 0 ) return; if( x1 >= image->Xsize && x2 >= image->Xsize ) return; x1 = VIPS_CLIP( 0, x1, image->Xsize - 1 ); x2 = VIPS_CLIP( 0, x2, image->Xsize - 1 ); q = VIPS_IMAGE_ADDR( image, x1, y ); len = x2 - x1 + 1; for( i = 0; i < len; i++ ) { for( j = 0; j < psize; j++ ) q[j] = ink[j]; q += psize; } } static int vips_draw_circle_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsDrawCircle *circle = (VipsDrawCircle *) object; VipsDrawScanline draw_scanline; if( VIPS_OBJECT_CLASS( vips_draw_circle_parent_class )-> build( object ) ) return( -1 ); if( circle->fill ) draw_scanline = vips_draw_circle_draw_scanline; else if( circle->cx - circle->radius >= 0 && circle->cx + circle->radius < draw->image->Xsize && circle->cy - circle->radius >= 0 && circle->cy + circle->radius < draw->image->Ysize ) draw_scanline = vips_draw_circle_draw_endpoints_noclip; else draw_scanline = vips_draw_circle_draw_endpoints_clip; vips__draw_circle_direct( draw->image, circle->cx, circle->cy, circle->radius, draw_scanline, drawink->pixel_ink ); return( 0 ); } static void vips_draw_circle_class_init( VipsDrawCircleClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_circle"; vobject_class->description = _( "draw a circle on an image" ); vobject_class->build = vips_draw_circle_build; VIPS_ARG_INT( class, "cx", 3, _( "cx" ), _( "Centre of draw_circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawCircle, cx ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "cy", 4, _( "cy" ), _( "Centre of draw_circle" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawCircle, cy ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "radius", 5, _( "Radius" ), _( "Radius in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawCircle, radius ), 0, 1000000000, 0 ); VIPS_ARG_BOOL( class, "fill", 6, _( "Fill" ), _( "Draw a solid object" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawCircle, fill ), FALSE ); } static void vips_draw_circle_init( VipsDrawCircle *circle ) { circle->fill = FALSE; } static int vips_draw_circlev( VipsImage *image, double *ink, int n, int cx, int cy, int radius, va_list ap ) { VipsArea *area_ink; int result; area_ink = (VipsArea *) vips_array_double_new( ink, n ); result = vips_call_split( "draw_circle", ap, image, area_ink, cx, cy, radius ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_circle: * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @cx: centre of draw_circle * @cy: centre of draw_circle * @radius: draw_circle radius * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @fill: fill the draw_circle * * Draws a circle on @image. If @fill is %TRUE then the circle is filled, * otherwise a 1-pixel-wide perimeter is drawn. * * @ink is an array of double containing values to draw. * * See also: vips_draw_circle1(), vips_draw_line(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_circle( VipsImage *image, double *ink, int n, int cx, int cy, int radius, ... ) { va_list ap; int result; va_start( ap, radius ); result = vips_draw_circlev( image, ink, n, cx, cy, radius, ap ); va_end( ap ); return( result ); } /** * vips_draw_circle1: * @image: image to draw on * @ink: value to draw * @cx: centre of draw_circle * @cy: centre of draw_circle * @radius: draw_circle radius * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @fill: fill the draw_circle * * As vips_draw_circle(), but just takes a single double for @ink. * * See also: vips_draw_circle(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_circle1( VipsImage *image, double ink, int cx, int cy, int radius, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, radius ); result = vips_draw_circlev( image, array_ink, 1, cx, cy, radius, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/draw/draw_flood.c0000664000175000017500000004316712530402247014332 00000000000000/* draw_flood-fill * * JC 30/8/97 * - VIPSified, cleaned up, from "John Robinson's prog to fill * enclosed areas" * - something Kirk gave me, so thanks John * JC 1/10/97 * - swapped inner memcmp/cpy for a loop ... faster for small pixels * 13/7/02 JC * - im_draw_flood_blob() added * 5/12/06 * - im_invalidate() after paint * 24/3/09 * - added IM_CODING_RAD support * 28/9/09 * - ooops, tiny memleak * 17/12/09 * - use inline rather than defines, so we can add scanline fills more * easily * - gtk-doc comments * 21/12/09 * - rewrite for a scanline based fill, about 4x faster! * - allow separate test and mark images * 22/1/10 * - draw_flood_blob could loop if start point == ink * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 27/9/10 * - use Draw base class * 21/1/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "drawink.h" /* Size of a scanline buffer. We allocate a list of these to hold scanlines * we need to visit. */ #define PBUFSIZE (1000) /* A scanline we know could contain pixels connected to us. * * Dir is the direction of connection: +1 means y is increasing, ie. the line * above this one is filled. -1 if y is decreasing. */ typedef struct { int x1, x2; int y; int dir; } Scan; /* A buffer of scanlines, and how many of them have been used. If ->next is * non-NULL, the next block could contain more of them. * * We keep a pair of these, then loop over one and write to the other. */ typedef struct _Buffer { struct _Buffer *next; int n; Scan scan[PBUFSIZE]; } Buffer; /* What we track during a flood. We have this in a separate struct so that we * can support vips__draw_flood_direct() ... a fast path for * vips_labelregions() that avoids all of the GObject call overhead. This * gives a huge speedup, >x10 in many cases. */ typedef struct _Flood { /* Test pixels here. */ VipsImage *test; /* Draw pixels here, can be equal to test. */ VipsImage *image; /* Sizeof pel in test. */ int tsize; /* Pixel we compare test to for edges. */ VipsPel *edge; /* True for flood while test == edge, false for flood while test != * edge. */ gboolean equal; /* Sizeof pel in @image. */ int psize; /* Ink we write to @image. */ VipsPel *ink; /* Add to move down a line in @image. */ int lsize; /* Record bounding box of modified pixels. */ int left; int right; int top; int bottom; /* Our todo list. */ Buffer *in; Buffer *out; } Flood; /* Alloc a new buffer. */ static Buffer * buffer_build( void ) { Buffer *buf; buf = g_new( Buffer, 1 ); buf->next = NULL; buf->n = 0; return( buf ); } /* Free a chain of buffers. */ static void buffer_free( Buffer *buf ) { while( buf ) { Buffer *p; p = buf->next; g_free( buf ); buf = p; } } /* Add a scanline to a buffer, prepending a new buffer if necessary. Return * the new head buffer. */ static Buffer * buffer_add( Buffer *buf, Flood *flood, int x1, int x2, int y, int dir ) { /* Clip against image size. */ if( y < 0 || y >= flood->test->Ysize ) return( buf ); x1 = VIPS_CLIP( 0, x1, flood->test->Xsize - 1 ); x2 = VIPS_CLIP( 0, x2, flood->test->Xsize - 1 ); if( x2 - x1 < 0 ) return( buf ); buf->scan[buf->n].x1 = x1; buf->scan[buf->n].x2 = x2; buf->scan[buf->n].y = y; buf->scan[buf->n].dir = dir; buf->n += 1; if( buf->n == PBUFSIZE ) { Buffer *new; new = buffer_build(); new->next = buf; buf = new; } return( buf ); } /* Is p "connected"? ie. is equal to or not equal to flood->edge, depending on * whether we are flooding to the edge boundary or flooding edge-coloured * pixels. p is a pel in @test. */ static gboolean flood_connected( Flood *flood, VipsPel *p ) { int j; for( j = 0; j < flood->tsize; j++ ) if( p[j] != flood->edge[j] ) break; /* If flood->equal, true if point == edge. */ return( flood->equal ^ (j < flood->tsize) ); } /* Is p painted? p is a pel in @image. */ static gboolean flood_painted( Flood *flood, VipsPel *p ) { int j; for( j = 0; j < flood->psize; j++ ) if( p[j] != flood->ink[j] ) break; return( j == flood->psize ); } static void flood_pel( Flood *flood, VipsPel *q ) { int j; /* Faster than memcopy() for n < about 20. */ for( j = 0; j < flood->psize; j++ ) q[j] = flood->ink[j]; } /* Fill a scanline between points x1 and x2 inclusive. x1 < x2. */ static void flood_draw_scanline( Flood *flood, int y, int x1, int x2 ) { VipsPel *p; int i; int len; g_assert( x1 <= x2 ); if( y < 0 || y >= flood->image->Ysize ) return; if( x1 < 0 && x2 < 0 ) return; if( x1 >= flood->image->Xsize && x2 >= flood->image->Xsize ) return; x1 = VIPS_CLIP( 0, x1, flood->image->Xsize - 1 ); x2 = VIPS_CLIP( 0, x2, flood->image->Xsize - 1 ); p = VIPS_IMAGE_ADDR( flood->image, x1, y ); len = x2 - x1 + 1; for( i = 0; i < len; i++ ) { flood_pel( flood, p ); p += flood->psize; } } /* Fill left and right, return the endpoints. The start point (x, y) must be * connected and unpainted. */ static void flood_scanline( Flood *flood, int x, int y, int *x1, int *x2 ) { const int width = flood->test->Xsize; VipsPel *p; int i; g_assert( flood_connected( flood, VIPS_IMAGE_ADDR( flood->test, x, y ) ) ); g_assert( !flood_painted( flood, VIPS_IMAGE_ADDR( flood->image, x, y ) ) ); /* Search to the right for the first non-connected pixel. If the start * pixel is unpainted, we know all the intervening pixels must be * unpainted too. */ p = VIPS_IMAGE_ADDR( flood->test, x + 1, y ); for( i = x + 1; i < width; i++ ) { if( !flood_connected( flood, p ) ) break; p += flood->tsize; } *x2 = i - 1; /* Search left. */ p = VIPS_IMAGE_ADDR( flood->test, x - 1, y ); for( i = x - 1; i >= 0; i-- ) { if( !flood_connected( flood, p ) ) break; p -= flood->tsize; } *x1 = i + 1; /* Paint the range we discovered. */ flood_draw_scanline( flood, y, *x1, *x2 ); flood->left = VIPS_MIN( flood->left, *x1 ); flood->right = VIPS_MAX( flood->right, *x2 ); flood->top = VIPS_MIN( flood->top, y ); flood->bottom = VIPS_MAX( flood->bottom, y ); } /* We know the line below or above us is filled between x1 and x2. Search our * line in this range looking for an edge pixel we can flood from. */ static void flood_around( Flood *flood, Scan *scan ) { VipsPel *p; int x; g_assert( scan->dir == 1 || scan->dir == -1 ); for( p = VIPS_IMAGE_ADDR( flood->test, scan->x1, scan->y ), x = scan->x1; x <= scan->x2; p += flood->tsize, x++ ) { if( flood_connected( flood, p ) ) { int x1a; int x2a; /* If mark and test are different images, we also need * to check for painted. Otherwise we can get stuck in * connected loops. */ if( flood->image != flood->test ) { VipsPel *mp = VIPS_IMAGE_ADDR( flood->image, x, scan->y ); if( flood_painted( flood, mp ) ) continue; } flood_scanline( flood, x, scan->y, &x1a, &x2a ); /* Our new scanline can have up to three more * scanlines connected to it: above, below left, below * right. */ if( x1a < scan->x1 - 1 ) flood->out = buffer_add( flood->out, flood, x1a, scan->x1 - 2, scan->y - scan->dir, -scan->dir ); if( x2a > scan->x2 + 1 ) flood->out = buffer_add( flood->out, flood, scan->x2 + 2, x2a, scan->y - scan->dir, -scan->dir ); flood->out = buffer_add( flood->out, flood, x1a, x2a, scan->y + scan->dir, scan->dir ); x = x2a + 1; p = VIPS_IMAGE_ADDR( flood->test, x, scan->y ); } } } static void flood_all( Flood *flood, int x, int y ) { int x1, x2; /* Test start pixel ... nothing to do? */ if( !flood_connected( flood, VIPS_IMAGE_ADDR( flood->test, x, y ) ) ) return; flood->in = buffer_build(); flood->out = buffer_build(); flood_scanline( flood, x, y, &x1, &x2 ); flood->in = buffer_add( flood->in, flood, x1, x2, y + 1, 1 ); flood->in = buffer_add( flood->in, flood, x1, x2, y - 1, -1 ); while( flood->in->n ) { Buffer *p; for( p = flood->in; p; p = p->next ) { int i; for( i = 0; i < p->n; i++ ) flood_around( flood, &p->scan[i] ); p->n = 0; } VIPS_SWAP( Buffer *, flood->in, flood->out ); } VIPS_FREEF( buffer_free, flood->in ); VIPS_FREEF( buffer_free, flood->out ); } /* Base class. */ typedef struct _VipsDrawFlood { VipsDrawink parent_object; /* Parameters. */ int x; int y; VipsImage *test; gboolean equal; int left; int top; int width; int height; } VipsDrawFlood; typedef VipsDrawinkClass VipsDrawFloodClass; G_DEFINE_TYPE( VipsDrawFlood, vips_draw_flood, VIPS_TYPE_DRAWINK ); static int vips_draw_flood_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsDrawFlood *drawflood = (VipsDrawFlood *) object; Flood flood; int j; if( VIPS_OBJECT_CLASS( vips_draw_flood_parent_class )->build( object ) ) return( -1 ); /* @test defaults to @image. */ if( !vips_object_argument_isset( object, "test" ) ) g_object_set( object, "test", draw->image, NULL ); if( vips_image_wio_input( drawflood->test ) || vips_check_coding_known( class->nickname, drawflood->test ) || vips_check_size_same( class->nickname, drawflood->test, draw->image ) ) return( -1 ); flood.test = drawflood->test; flood.image = draw->image; flood.tsize = VIPS_IMAGE_SIZEOF_PEL( flood.test ); flood.equal = drawflood->equal; flood.psize = VIPS_IMAGE_SIZEOF_PEL( flood.image ); flood.ink = drawink->pixel_ink; flood.lsize = VIPS_IMAGE_SIZEOF_LINE( flood.image ); flood.left = drawflood->x; flood.right = drawflood->x; flood.top = drawflood->y; flood.bottom = drawflood->y; if( flood.equal ) { /* Edge is set by colour of the start pixel in @test. */ if( !(flood.edge = VIPS_ARRAY( object, flood.tsize, VipsPel )) ) return( -1 ); memcpy( flood.edge, VIPS_IMAGE_ADDR( flood.test, drawflood->x, drawflood->y ), flood.tsize ); /* If @test and @image are the same and edge == ink, we'll * never stop :-( or rather, there's nothing to do. */ if( flood.test == flood.image ) { for( j = 0; j < flood.tsize; j++ ) if( flood.edge[j] != flood.ink[j] ) break; if( j != flood.tsize ) flood_all( &flood, drawflood->x, drawflood->y ); } else flood_all( &flood, drawflood->x, drawflood->y ); } else { /* Flood to ink colour. We need to be able to compare @test to * @ink. */ if( !(flood.edge = vips__vector_to_ink( class->nickname, flood.test, VIPS_ARRAY_ADDR( drawink->ink, 0 ), NULL, VIPS_AREA( drawink->ink )->n )) ) return( -1 ); flood_all( &flood, drawflood->x, drawflood->y ); } g_object_set( object, "left", flood.left, "top", flood.top, "width", flood.right - flood.left + 1, "height", flood.bottom - flood.top + 1, NULL ); return( 0 ); } static void vips_draw_flood_class_init( VipsDrawFloodClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_flood"; vobject_class->description = _( "flood-fill an area" ); vobject_class->build = vips_draw_flood_build; VIPS_ARG_INT( class, "x", 3, _( "x" ), _( "DrawFlood start point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawFlood, x ), 0, 1000000000, 0 ); VIPS_ARG_INT( class, "y", 4, _( "y" ), _( "DrawFlood start point" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawFlood, y ), 0, 1000000000, 0 ); VIPS_ARG_IMAGE( class, "test", 5, _( "Test" ), _( "Test pixels in this image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawFlood, test ) ); VIPS_ARG_BOOL( class, "equal", 6, _( "Equal" ), _( "DrawFlood while equal to edge" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawFlood, equal ), FALSE ); VIPS_ARG_INT( class, "left", 7, _( "Left" ), _( "Left edge of modified area" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsDrawFlood, left ), 0, 1000000000, 0 ); VIPS_ARG_INT( class, "top", 8, _( "Top" ), _( "top edge of modified area" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsDrawFlood, top ), 0, 1000000000, 0 ); VIPS_ARG_INT( class, "width", 9, _( "Width" ), _( "width of modified area" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsDrawFlood, width ), 0, 1000000000, 0 ); VIPS_ARG_INT( class, "height", 10, _( "Height" ), _( "height of modified area" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsDrawFlood, height ), 0, 1000000000, 0 ); } static void vips_draw_flood_init( VipsDrawFlood *draw_flood ) { } /* Direct path to flood for vips_labelregions(). We need to avoid the function * dispatch system for speed. * * Equivalent to: * * vips_draw_flood1( image, serial, x, y, * "test", test, * "equal", TRUE, * NULL ) * * image must be 1-band int. */ int vips__draw_flood_direct( VipsImage *image, VipsImage *test, int serial, int x, int y ) { Flood flood; if( vips_check_format( "vips__draw_flood_direct", image, VIPS_FORMAT_INT ) || vips_check_mono( "vips__draw_flood_direct", image ) || vips_check_coding_known( "vips__draw_flood_direct", test ) || vips_check_size_same( "vips__draw_flood_direct", test, image ) || vips_image_wio_input( test ) || vips_image_inplace( image ) ) return( -1 ); flood.test = test; flood.image = image; flood.tsize = VIPS_IMAGE_SIZEOF_PEL( test ); flood.equal = TRUE; flood.psize = VIPS_IMAGE_SIZEOF_PEL( image ); flood.ink = (VipsPel *) &serial; flood.lsize = VIPS_IMAGE_SIZEOF_LINE( image ); flood.left = x; flood.right = x; flood.top = y; flood.bottom = y; if( !(flood.edge = VIPS_ARRAY( image, flood.tsize, VipsPel )) ) return( -1 ); memcpy( flood.edge, VIPS_IMAGE_ADDR( test, x, y ), flood.tsize ); flood_all( &flood, x, y ); return( 0 ); } static int vips_draw_floodv( VipsImage *image, double *ink, int n, int x, int y, va_list ap ) { VipsArea *area_ink; int result; area_ink = (VipsArea *) vips_array_double_new( ink, n ); result = vips_call_split( "draw_flood", ap, image, area_ink, x, y ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_flood: * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @x: centre of circle * @y: centre of circle * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @test: test this image * @equal: fill while equal to edge * @left: output left edge of bounding box of modified area * @top: output top edge of bounding box of modified area * @width: output width of bounding box of modified area * @height: output height of bounding box of modified area * * Flood-fill @image with @ink, starting at position @x, @y. The filled area is * bounded by pixels that are equal to the ink colour, in other words, it * searches for pixels enclosed by an edge of @ink. * * If @equal is set, it instead searches for pixels which are equal to the * start point and fills them with @ink. * * Normally it will test and set pixels in @image. If @test is set, it will * test pixels in @test and set pixels in @image. This lets you search an * image (@test) for continuous areas of pixels without modifying it. * * @left, @top, @width, @height output the bounding box of the modified * pixels. * * @ink is an array of double containing values to draw. * * See also: vips_draw_flood1(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_flood( VipsImage *image, double *ink, int n, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_draw_floodv( image, ink, n, x, y, ap ); va_end( ap ); return( result ); } /** * vips_draw_flood1: * @image: image to draw on * @ink: value to draw * @x: centre of circle * @y: centre of circle * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @test: test this image * @equal: fill while equal to edge * @left: output left edge of bounding box of modified area * @top: output top edge of bounding box of modified area * @width: output width of bounding box of modified area * @height: output height of bounding box of modified area * * As vips_draw_flood(), but just takes a single double for @ink. * * See also: vips_draw_flood(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_flood1( VipsImage *image, double ink, int x, int y, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, y ); result = vips_draw_floodv( image, array_ink, 1, x, y, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/draw/pdraw.h0000664000175000017500000000376712530402247013336 00000000000000/* base class for drawing operations */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PDRAW_H #define VIPS_PDRAW_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_DRAW (vips_draw_get_type()) #define VIPS_DRAW( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_DRAW, VipsDraw )) #define VIPS_DRAW_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_DRAW, VipsDrawClass)) #define VIPS_IS_DRAW( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_DRAW )) #define VIPS_IS_DRAW_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_DRAW )) #define VIPS_DRAW_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_DRAW, VipsDrawClass )) typedef struct _VipsDraw { VipsOperation parent_instance; /* Parameters. */ VipsImage *image; /* Draw here */ /* Derived stuff. */ size_t lsize; size_t psize; /* If the object to draw is entirely within the image, we have a * faster noclip path. */ gboolean noclip; } VipsDraw; typedef struct _VipsDrawClass { VipsOperationClass parent_class; } VipsDrawClass; GType vips_draw_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PDRAW_H*/ vips-8.2.2/libvips/draw/Makefile.am0000664000175000017500000000044312530402247014070 00000000000000noinst_LTLIBRARIES = libdraw.la libdraw_la_SOURCES = \ draw.c \ pdraw.h \ drawink.c \ drawink.h \ draw_circle.c \ draw_flood.c \ draw_mask.c \ draw_image.c \ draw_rect.c \ draw_line.c \ draw_smudge.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/draw/draw_rect.c0000664000175000017500000002007712530402247014157 00000000000000/* Fill Rect r of image im with pels of colour ink. * * Copyright: J. Cupitt * Written: 15/06/1992 * 22/7/93 JC * - im_incheck() added * 16/8/94 JC * - im_incheck() changed to im_makerw() * 5/12/06 * - im_invalidate() after paint * 6/3/10 * - don't im_invalidate() after paint, this now needs to be at a higher * level * 22/9/10 * - gtk-doc * - added 'fill' * - renamed as im_draw_rect() for consistency * 27/9/10 * - memcpy() subsequent lines of the rect * 10/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "drawink.h" typedef struct _VipsDrawRect { VipsDrawink parent_object; /* Parameters. */ int left; int top; int width; int height; gboolean fill; } VipsDrawRect; typedef struct _VipsDrawRectClass { VipsDrawinkClass parent_class; } VipsDrawRectClass; G_DEFINE_TYPE( VipsDrawRect, vips_draw_rect, VIPS_TYPE_DRAWINK ); static int vips_draw_rect_build( VipsObject *object ) { VipsDraw *draw = VIPS_DRAW( object ); VipsDrawink *drawink = VIPS_DRAWINK( object ); VipsArea *ink = VIPS_AREA( drawink->ink ); VipsDrawRect *draw_rect = (VipsDrawRect *) object; int left = draw_rect->left; int top = draw_rect->top; int width = draw_rect->width; int height = draw_rect->height; VipsRect image; VipsRect rect; VipsRect clip; if( VIPS_OBJECT_CLASS( vips_draw_rect_parent_class )->build( object ) ) return( -1 ); /* Also use a solid fill for very narrow unfilled rects. */ if( !draw_rect->fill && width > 2 && height > 2 ) return( vips_draw_rect( draw->image, ink->data, ink->n, left, top, width, 1, NULL ) || vips_draw_rect( draw->image, ink->data, ink->n, left + width - 1, top, 1, height, NULL ) || vips_draw_rect( draw->image, ink->data, ink->n, left, top + height - 1, width, 1, NULL ) || vips_draw_rect( draw->image, ink->data, ink->n, left, top, 1, height, NULL ) ); image.left = 0; image.top = 0; image.width = draw->image->Xsize; image.height = draw->image->Ysize; rect.left = left; rect.top = top; rect.width = width; rect.height = height; vips_rect_intersectrect( &rect, &image, &clip ); if( !vips_rect_isempty( &clip ) ) { VipsPel *to = VIPS_IMAGE_ADDR( draw->image, clip.left, clip.top ); VipsPel *q; int x, y; /* We plot the first line pointwise, then memcpy() it for the * subsequent lines. */ q = to; for( x = 0; x < clip.width; x++ ) { vips__drawink_pel( drawink, q ); q += draw->psize; } q = to + draw->lsize; for( y = 1; y < clip.height; y++ ) { memcpy( q, to, clip.width * draw->psize ); q += draw->lsize; } } return( 0 ); } static void vips_draw_rect_class_init( VipsDrawRectClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "draw_rect"; vobject_class->description = _( "paint a rectangle on an image" ); vobject_class->build = vips_draw_rect_build; VIPS_ARG_INT( class, "left", 6, _( "Left" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawRect, left ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "top", 7, _( "top" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawRect, top ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "width", 8, _( "width" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawRect, width ), -1000000000, 1000000000, 0 ); VIPS_ARG_INT( class, "height", 9, _( "height" ), _( "Rect to fill" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsDrawRect, height ), -1000000000, 1000000000, 0 ); VIPS_ARG_BOOL( class, "fill", 10, _( "Fill" ), _( "Draw a solid object" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsDrawRect, fill ), FALSE ); } static void vips_draw_rect_init( VipsDrawRect *draw_rect ) { } static int vips_draw_rectv( VipsImage *image, double *ink, int n, int left, int top, int width, int height, va_list ap ) { VipsArea *area_ink; int result; area_ink = (VipsArea *) vips_array_double_new( ink, n ); result = vips_call_split( "draw_rect", ap, image, area_ink, left, top, width, height ); vips_area_unref( area_ink ); return( result ); } /** * vips_draw_rect: * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @left: area to paint * @top: area to paint * @width: area to paint * @height: area to paint * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @fill: fill the rect * * Paint pixels within @left, @top, @width, @height in @image with @ink. If * @fill is zero, just paint a 1-pixel-wide outline. * * See also: vips_draw_circle(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_rect( VipsImage *image, double *ink, int n, int left, int top, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_draw_rectv( image, ink, n, left, top, width, height, ap ); va_end( ap ); return( result ); } /** * vips_draw_rect1: * @image: image to draw on * @ink: value to draw * @left: area to paint * @top: area to paint * @width: area to paint * @height: area to paint * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @fill: fill the rect * * As vips_draw_rect(), but just take a single double for @ink. * * See also: vips_draw_rect(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_rect1( VipsImage *image, double ink, int left, int top, int width, int height, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, height ); result = vips_draw_rectv( image, array_ink, 1, left, top, width, height, ap ); va_end( ap ); return( result ); } /** * vips_draw_point: * @image: image to draw on * @ink: (array length=n): value to draw * @n: length of ink array * @x: point to paint * @y: point to paint * @...: %NULL-terminated list of optional named arguments * * As vips_draw_rect(), but draw a single pixel at @x, @y. * * See also: vips_draw_rect(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_point( VipsImage *image, double *ink, int n, int x, int y, ... ) { va_list ap; int result; va_start( ap, y ); result = vips_draw_rectv( image, ink, n, x, y, 1, 1, ap ); va_end( ap ); return( result ); } /** * vips_draw_point1: * @image: image to draw on * @ink: value to draw * @x: point to draw * @y: point to draw * @...: %NULL-terminated list of optional named arguments * * As vips_draw_point(), but just take a single double for @ink. * * See also: vips_draw_point(). * * Returns: 0 on success, or -1 on error. */ int vips_draw_point1( VipsImage *image, double ink, int x, int y, ... ) { double array_ink[1]; va_list ap; int result; array_ink[0] = ink; va_start( ap, y ); result = vips_draw_rectv( image, array_ink, 1, x, y, 1, 1, ap ); va_end( ap ); return( result ); } vips-8.2.2/libvips/draw/Makefile.in0000664000175000017500000005351212651721156014115 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/draw ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libdraw_la_LIBADD = am_libdraw_la_OBJECTS = draw.lo drawink.lo draw_circle.lo \ draw_flood.lo draw_mask.lo draw_image.lo draw_rect.lo \ draw_line.lo draw_smudge.lo libdraw_la_OBJECTS = $(am_libdraw_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libdraw_la_SOURCES) DIST_SOURCES = $(libdraw_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libdraw.la libdraw_la_SOURCES = \ draw.c \ pdraw.h \ drawink.c \ drawink.h \ draw_circle.c \ draw_flood.c \ draw_mask.c \ draw_image.c \ draw_rect.c \ draw_line.c \ draw_smudge.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/draw/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/draw/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libdraw.la: $(libdraw_la_OBJECTS) $(libdraw_la_DEPENDENCIES) $(EXTRA_libdraw_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libdraw_la_OBJECTS) $(libdraw_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw_circle.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw_flood.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw_image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw_line.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw_mask.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw_rect.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw_smudge.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drawink.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/freqfilt/0000775000175000017500000000000012651721506013000 500000000000000vips-8.2.2/libvips/freqfilt/pfreqfilt.h0000664000175000017500000000417412530402247015065 00000000000000/* base class for all freqfilt operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PFREQFILT_H #define VIPS_PFREQFILT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_FREQFILT (vips_freqfilt_get_type()) #define VIPS_FREQFILT( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FREQFILT, VipsFreqfilt )) #define VIPS_FREQFILT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FREQFILT, VipsFreqfiltClass)) #define VIPS_IS_FREQFILT( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FREQFILT )) #define VIPS_IS_FREQFILT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FREQFILT )) #define VIPS_FREQFILT_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FREQFILT, VipsFreqfiltClass )) typedef struct _VipsFreqfilt { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsFreqfilt; typedef struct _VipsFreqfiltClass { VipsOperationClass parent_class; } VipsFreqfiltClass; GType vips_freqfilt_get_type( void ); typedef int (*VipsFftProcessFn)( VipsObject *, VipsImage *, VipsImage ** ); int vips__fftproc( VipsObject *context, VipsImage *in, VipsImage **out, VipsFftProcessFn fn ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PFREQFILT_H*/ vips-8.2.2/libvips/freqfilt/spectrum.c0000664000175000017500000000623012530402247014721 00000000000000/* make a displayable power spectrum for an image * * Author: Nicos Dessipris * Written on: 27/03/1991 * Modified on : * 16/6/93 J.Cupitt * - im_ioflag() changed to im_iocheck() * 23/2/95 JC * - rewritten for partials * 10/9/98 JC * - frees memory more quickly * 2/4/02 JC * - any number of bands * 7/2/10 * - gtkdoc * - cleanups * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pfreqfilt.h" typedef VipsFreqfilt VipsSpectrum; typedef VipsFreqfiltClass VipsSpectrumClass; G_DEFINE_TYPE( VipsSpectrum, vips_spectrum, VIPS_TYPE_FREQFILT ); static int vips_spectrum_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_spectrum_parent_class )-> build( object ) ) return( -1 ); in = freqfilt->in; if( in->BandFmt != VIPS_FORMAT_COMPLEX ) { if( vips_fwfft( in, &t[0], NULL ) ) return( -1 ); in = t[0]; } if( vips_abs( in, &t[1], NULL ) || vips_scale( t[1], &t[2], "log", TRUE, NULL ) || vips_wrap( t[2], &t[3], NULL ) ) return( -1 ); if( vips_image_write( t[3], freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_spectrum_class_init( VipsSpectrumClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); vobject_class->nickname = "spectrum"; vobject_class->description = _( "make displayable power spectrum" ); vobject_class->build = vips_spectrum_build; } static void vips_spectrum_init( VipsSpectrum *spectrum ) { } /** * vips_spectrum: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Make a displayable (ie. 8-bit unsigned int) power spectrum. * * If @in is non-complex, it is transformed to Fourier space. Then the * absolute value is passed through vips_scale() in log mode, and vips_wrap(). * * See also: vips_fwfft(), vips_scale(), vips_wrap(). * * Returns: 0 on success, -1 on error. */ int vips_spectrum( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "spectrum", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/freqfilt/phasecor.c0000664000175000017500000000676412530402247014677 00000000000000/* Like spcor, but calculates phase correlation in the Fourier domain. * * Copyright: 2008, Nottingham Trent University * * Author: Tom Vajzovic * Written on: 2008-01-16 * 7/2/10 * - cleanups * - gtkdoc * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pfreqfilt.h" typedef struct _VipsPhasecor { VipsFreqfilt parent_instance; VipsImage *in2; } VipsPhasecor; typedef VipsFreqfiltClass VipsPhasecorClass; G_DEFINE_TYPE( VipsPhasecor, vips_phasecor, VIPS_TYPE_FREQFILT ); static int vips_phasecor_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsPhasecor *phasecor = (VipsPhasecor *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); VipsImage *in1, *in2; if( VIPS_OBJECT_CLASS( vips_phasecor_parent_class )-> build( object ) ) return( -1 ); in1 = freqfilt->in; in2 = phasecor->in2; if( in1->BandFmt != VIPS_FORMAT_COMPLEX ) { if( vips_fwfft( in1, &t[0], NULL ) ) return( -1 ); in1 = t[0]; } if( in2->BandFmt != VIPS_FORMAT_COMPLEX ) { if( vips_fwfft( in2, &t[1], NULL ) ) return( -1 ); in2 = t[1]; } if( vips_cross_phase( in1, in2, &t[2], NULL ) || vips_invfft( t[2], &t[3], "real", TRUE, NULL ) || vips_image_write( t[3], freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_phasecor_class_init( VipsPhasecorClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "phasecor"; vobject_class->description = _( "calculate phase correlation" ); vobject_class->build = vips_phasecor_build; VIPS_ARG_IMAGE( class, "in2", 0, _( "in2" ), _( "Second input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPhasecor, in2 ) ); } static void vips_phasecor_init( VipsPhasecor *phasecor ) { } /** * vips_phasecor: * @in1: first input image * @in2: second input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Convert the two input images to Fourier space, calculate phase-correlation, * back to real space. * * See also: vips_fwfft(), vips_cross_phase(), * * Returns: 0 on success, -1 on error. */ int vips_phasecor( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "phasecor", ap, in1, in2, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/freqfilt/fwfft.c0000664000175000017500000002156612530402247014204 00000000000000/* forward FFT * * Author: Nicos Dessipris * Written on: 12/04/1990 * Modified on : 09/05/1990 to cope with float input * Modified on : 08/03/1991 history removed * Modified on : 03/04/1991 to cope with any input * * 28/6/95 JC * - rewritten to use im_clip2f() rather than own code * - memory leaks fixed * 10/9/98 JC * - frees memory more quickly * 2/4/02 JC * - fftw code added * 13/7/02 JC * - output Type set to IM_TYPE_FOURIER to help nip * 27/2/03 JC * - exploits real_to_complex() path in libfftw for real input (thanks * Matt) for a 2x speed-up * 17/11/03 JC * - fix a segv for wider than high images in the real_to_complex() path * (thanks Andrey) * - fixes to real_to_complex() path to give the correct result for * non-square images, including odd widths and heights * 3/11/04 * - added fftw3 support * 7/2/10 * - cleanups * - gtkdoc * 25/3/10 * - have a "t" image linked to out to keep the image alive for longer * 27/1/12 * - better setting of interpretation * - remove own fft fallback code * - remove fftw2 path * - reduce memuse * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pfreqfilt.h" #ifdef HAVE_FFTW #include typedef struct _VipsFwfft { VipsFreqfilt parent_instance; } VipsFwfft; typedef VipsFreqfiltClass VipsFwfftClass; G_DEFINE_TYPE( VipsFwfft, vips_fwfft, VIPS_TYPE_FREQFILT ); /* Real to complex forward transform. */ static int rfwfft1( VipsObject *object, VipsImage *in, VipsImage **out ) { VipsFwfft *fwfft = (VipsFwfft *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( fwfft ); const guint64 size = VIPS_IMAGE_N_PELS( in ); const int half_width = in->Xsize / 2 + 1; double *half_complex; double *planner_scratch; fftw_plan plan; double *buf, *q, *p; int x, y; if( vips_check_mono( class->nickname, in ) || vips_check_uncoded( class->nickname, in ) ) return( -1 ); /* Convert input to a real double membuffer. */ t[1] = vips_image_new_memory(); if( vips_cast_double( in, &t[0], NULL ) || vips_image_write( t[0], t[1] ) ) return( -1 ); /* Make the plan for the transform. Yes, they really do use nx for * height and ny for width. Use a separate scratch buffer for the * planner, we can't overwrite real->data */ if( !(planner_scratch = VIPS_ARRAY( fwfft, VIPS_IMAGE_N_PELS( in ), double )) ) return( -1 ); if( !(half_complex = VIPS_ARRAY( fwfft, in->Ysize * half_width * 2, double )) ) return( -1 ); if( !(plan = fftw_plan_dft_r2c_2d( in->Ysize, in->Xsize, planner_scratch, (fftw_complex *) half_complex, 0 )) ) { vips_error( class->nickname, "%s", _( "unable to create transform plan" ) ); return( -1 ); } fftw_execute_dft_r2c( plan, (double *) t[1]->data, (fftw_complex *) half_complex ); fftw_destroy_plan( plan ); /* Write to out as another memory buffer. */ *out = vips_image_new_memory(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_ANY, in, NULL ) ) return( -1 ); (*out)->BandFmt = VIPS_FORMAT_DPCOMPLEX; (*out)->Type = VIPS_INTERPRETATION_FOURIER; if( !(buf = VIPS_ARRAY( fwfft, VIPS_IMAGE_N_PELS( *out ), double )) ) return( -1 ); /* Copy and normalise. The right half is the up/down and * left/right flip of the left, but conjugated. Do the first * row separately, then mirror around the centre row. */ p = half_complex; q = buf; for( x = 0; x < half_width; x++ ) { q[0] = p[0] / size; q[1] = p[1] / size; p += 2; q += 2; } p = half_complex + ((in->Xsize + 1) / 2 - 1) * 2; for( x = half_width; x < (*out)->Xsize; x++ ) { q[0] = p[0] / size; q[1] = -1.0 * p[1] / size; p -= 2; q += 2; } if( vips_image_write_line( *out, 0, (VipsPel *) buf ) ) return( -1 ); for( y = 1; y < (*out)->Ysize; y++ ) { p = half_complex + y * half_width * 2; q = buf; for( x = 0; x < half_width; x++ ) { q[0] = p[0] / size; q[1] = p[1] / size; p += 2; q += 2; } /* Good grief. */ p = half_complex + 2 * (((*out)->Ysize - y + 1) * half_width - 2 + (in->Xsize & 1)); for( x = half_width; x < (*out)->Xsize; x++ ) { q[0] = p[0] / size; q[1] = -1.0 * p[1] / size; p -= 2; q += 2; } if( vips_image_write_line( *out, y, (VipsPel *) buf ) ) return( -1 ); } return( 0 ); } /* Complex to complex forward transform. */ static int cfwfft1( VipsObject *object, VipsImage *in, VipsImage **out ) { VipsFwfft *fwfft = (VipsFwfft *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( fwfft ); fftw_plan plan; double *planner_scratch; double *buf, *q, *p; int x, y; if( vips_check_mono( class->nickname, in ) || vips_check_uncoded( class->nickname, in ) ) return( -1 ); /* Convert input to a complex double membuffer. */ t[1] = vips_image_new_memory(); if( vips_cast_dpcomplex( in, &t[0], NULL ) || vips_image_write( t[0], t[1] ) ) return( -1 ); /* We have to have a separate buffer for the planner to work on. */ if( !(planner_scratch = VIPS_ARRAY( fwfft, VIPS_IMAGE_N_PELS( in ) * 2, double )) ) return( -1 ); /* Make the plan for the transform. */ if( !(plan = fftw_plan_dft_2d( in->Ysize, in->Xsize, (fftw_complex *) planner_scratch, (fftw_complex *) planner_scratch, FFTW_FORWARD, 0 )) ) { vips_error( class->nickname, "%s", _( "unable to create transform plan" ) ); return( -1 ); } fftw_execute_dft( plan, (fftw_complex *) t[1]->data, (fftw_complex *) t[1]->data ); fftw_destroy_plan( plan ); /* Write to out as another memory buffer. */ *out = vips_image_new_memory(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_ANY, in, NULL ) ) return( -1 ); (*out)->BandFmt = VIPS_FORMAT_DPCOMPLEX; (*out)->Type = VIPS_INTERPRETATION_FOURIER; if( !(buf = VIPS_ARRAY( fwfft, VIPS_IMAGE_N_PELS( *out ), double )) ) return( -1 ); /* Copy to out, normalise. */ p = (double *) t[1]->data; for( y = 0; y < (*out)->Ysize; y++ ) { guint64 size = VIPS_IMAGE_N_PELS( *out ); q = buf; for( x = 0; x < (*out)->Xsize; x++ ) { q[0] = p[0] / size; q[1] = p[1] / size; p += 2; q += 2; } if( vips_image_write_line( *out, y, (VipsPel *) buf ) ) return( -1 ); } return( 0 ); } static int vips_fwfft_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsFwfft *fwfft = (VipsFwfft *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_fwfft_parent_class )-> build( object ) ) return( -1 ); in = freqfilt->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_band_format_iscomplex( in->BandFmt ) ) { if( vips__fftproc( VIPS_OBJECT( fwfft ), in, &t[1], cfwfft1 ) ) return( -1 ); } else { if( vips__fftproc( VIPS_OBJECT( fwfft ), in, &t[1], rfwfft1 ) ) return( -1 ); } if( vips_image_write( t[1], freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_fwfft_class_init( VipsFwfftClass *class ) { VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); vobject_class->nickname = "fwfft"; vobject_class->description = _( "forward FFT" ); vobject_class->build = vips_fwfft_build; } static void vips_fwfft_init( VipsFwfft *fwfft ) { } #endif /*HAVE_FFTW*/ /** * vips_fwfft: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Transform an image to Fourier space. * * VIPS uses the fftw Fourier Transform library. If this library was not * available when VIPS was configured, these functions will fail. * * See also: vips_invfft(). * * Returns: 0 on success, -1 on error. */ int vips_fwfft( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "fwfft", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/freqfilt/Makefile.am0000664000175000017500000000035312530402247014747 00000000000000noinst_LTLIBRARIES = libfreqfilt.la libfreqfilt_la_SOURCES = \ freqfilt.c \ pfreqfilt.h \ fwfft.c \ invfft.c \ freqmult.c \ spectrum.c \ phasecor.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/freqfilt/freqmult.c0000664000175000017500000001036412530402247014721 00000000000000/* frequency-domain filter an image * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : 08/03/1991 * 16/6/93 J.Cupitt * - im_multiply() called, rather than im_cmultim() * 27/10/93 JC * - im_clip2*() called, rather than im_any2*() * 20/9/95 JC * - rewritten * 10/9/98 JC * - frees memory more quickly * 4/3/03 JC * - use im_invfftr() to get real back for speedup * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pfreqfilt.h" typedef struct _VipsFreqmult { VipsFreqfilt parent_instance; VipsImage *mask; } VipsFreqmult; typedef VipsFreqfiltClass VipsFreqmultClass; G_DEFINE_TYPE( VipsFreqmult, vips_freqmult, VIPS_TYPE_FREQFILT ); static int vips_freqmult_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsFreqmult *freqmult = (VipsFreqmult *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 5 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_freqmult_parent_class )-> build( object ) ) return( -1 ); in = freqfilt->in; if( vips_band_format_iscomplex( in->BandFmt ) ) { if( vips_multiply( in, freqmult->mask, &t[0], NULL ) || vips_invfft( t[0], &t[1], "real", TRUE, NULL ) ) return( -1 ); in = t[1]; } else { /* Optimisation: output of vips_invfft() is double, we * will usually cast to char, so rather than keeping a * large double buffer and partial to char from that, * cast to a memory buffer and copy to out from that. * * FIXME does this actually work now we're a class? test * perhaps we need a temporary object */ t[4] = vips_image_new_memory(); if( vips_fwfft( in, &t[0], NULL ) || vips_multiply( t[0], freqmult->mask, &t[1], NULL ) || vips_invfft( t[1], &t[2], "real", TRUE, NULL ) || vips_cast( t[2], &t[3], in->BandFmt, NULL ) || vips_image_write( t[3], t[4] ) ) return( -1 ); in = t[4]; } if( vips_image_write( in, freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_freqmult_class_init( VipsFreqmultClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "freqmult"; vobject_class->description = _( "frequency-domain filtering" ); vobject_class->build = vips_freqmult_build; VIPS_ARG_IMAGE( class, "mask", 0, _( "mask" ), _( "Input mask image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFreqmult, mask ) ); } static void vips_freqmult_init( VipsFreqmult *freqmult ) { } /** * vips_freqmult: * @in: input image * @mask: mask image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Multiply @in by @mask in Fourier space. * * @in is transformed to Fourier space, multipled with @mask, then * transformed back to real space. If @in is already a complex image, just * multiply then inverse transform. * * See also: vips_invfft(), vips_mask_ideal(). * * Returns: 0 on success, -1 on error. */ int vips_freqmult( VipsImage *in, VipsImage *mask, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "freqmult", ap, in, mask, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/freqfilt/freqfilt.c0000664000175000017500000001105412530402247014673 00000000000000/* base class for all Fourier stuff * * properties: * - single output image */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pfreqfilt.h" /** * SECTION: freqfilt * @short_description: fourier transforms and frequency-domin filters * @stability: Stable * @see_also: image * @include: vips/vips.h * * To and from Fourier space, filter in Fourier space, convert Fourier-space * images to a displayable form. */ G_DEFINE_ABSTRACT_TYPE( VipsFreqfilt, vips_freqfilt, VIPS_TYPE_OPERATION ); static int vips_freqfilt_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); #ifdef DEBUG printf( "vips_freqfilt_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_set( freqfilt, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_freqfilt_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_freqfilt_class_init( VipsFreqfiltClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "freqfilt"; vobject_class->description = _( "frequency-domain filter operations" ); vobject_class->build = vips_freqfilt_build; VIPS_ARG_IMAGE( class, "in", -1, _( "in" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsFreqfilt, in ) ); VIPS_ARG_IMAGE( class, "out", 1, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsFreqfilt, out ) ); } static void vips_freqfilt_init( VipsFreqfilt *freqfilt ) { } /* Transform an n-band image with a 1-band processing function. * * Memory strategy: we need memory buffers for the input and the output of * fftw. In some modes fftw generates only half the output and we construct * the rest. * * input pipeline -> * bandsplit -> * full memory image, freed when im_*fft*() exits -> * fftw -> * half memory image, freed when im_*fft*() exits -> * full memory image, freed when @out is freed -> * partial bandjoin -> * output pipeline * * im__fftproc() needs to just call im__fftproc_fn directly for 1 band images, * so we can't cache the output in this fn. */ int vips__fftproc( VipsObject *context, VipsImage *in, VipsImage **out, VipsFftProcessFn fn ) { VipsImage **bands = (VipsImage **) vips_object_local_array( context, in->Bands ); VipsImage **fft = (VipsImage **) vips_object_local_array( context, in->Bands ); int b; if( in->Bands == 1 ) return( fn( context, in, out ) ); for( b = 0; b < in->Bands; b++ ) if( vips_extract_band( in, &bands[b], b, NULL ) || fn( context, bands[b], &fft[b] ) ) return( -1 ); if( vips_bandjoin( fft, out, in->Bands, NULL ) ) return( -1 ); return( 0 ); } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_freqfilt_operation_init( void ) { #ifdef HAVE_FFTW extern GType vips_fwfft_get_type( void ); extern GType vips_invfft_get_type( void ); #endif /*HAVE_FFTW*/ extern GType vips_freqmult_get_type( void ); extern GType vips_spectrum_get_type( void ); extern GType vips_phasecor_get_type( void ); #ifdef HAVE_FFTW vips_fwfft_get_type(); vips_invfft_get_type(); #endif /*HAVE_FFTW*/ vips_freqmult_get_type(); vips_spectrum_get_type(); vips_phasecor_get_type(); } vips-8.2.2/libvips/freqfilt/Makefile.in0000664000175000017500000005306212651721156014774 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/freqfilt ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libfreqfilt_la_LIBADD = am_libfreqfilt_la_OBJECTS = freqfilt.lo fwfft.lo invfft.lo freqmult.lo \ spectrum.lo phasecor.lo libfreqfilt_la_OBJECTS = $(am_libfreqfilt_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libfreqfilt_la_SOURCES) DIST_SOURCES = $(libfreqfilt_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libfreqfilt.la libfreqfilt_la_SOURCES = \ freqfilt.c \ pfreqfilt.h \ fwfft.c \ invfft.c \ freqmult.c \ spectrum.c \ phasecor.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/freqfilt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/freqfilt/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libfreqfilt.la: $(libfreqfilt_la_OBJECTS) $(libfreqfilt_la_DEPENDENCIES) $(EXTRA_libfreqfilt_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libfreqfilt_la_OBJECTS) $(libfreqfilt_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freqfilt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freqmult.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fwfft.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/invfft.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phasecor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spectrum.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/freqfilt/invfft.c0000664000175000017500000001617512530402247014364 00000000000000/* Inverse FFT * * Author: Nicos Dessipris * Written on: 12/04/1990 * Modified on : * 28/6/95 JC * - rewritten, based on new im_invfft() code * 10/9/98 JC * - frees memory more quickly * 2/4/02 JC * - fftw code added * 13/7/02 JC * - Type reset * 27/2/03 JC * - tiny speed-up ... save 1 copy on write * 22/1/04 JC * - oops, fix for segv on wider than high fftw transforms * 3/11/04 * - added fftw3 support * 7/2/10 * - gtkdoc * 27/1/12 * - better setting of interpretation * - remove own fft fallback code * - remove fftw2 path * - reduce memuse * 3/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "pfreqfilt.h" #ifdef HAVE_FFTW #include typedef struct _VipsInvfft { VipsFreqfilt parent_instance; gboolean real; } VipsInvfft; typedef VipsFreqfiltClass VipsInvfftClass; G_DEFINE_TYPE( VipsInvfft, vips_invfft, VIPS_TYPE_FREQFILT ); /* Complex to complex inverse transform. */ static int cinvfft1( VipsObject *object, VipsImage *in, VipsImage **out ) { VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsInvfft *invfft = (VipsInvfft *) object; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( invfft ); fftw_plan plan; double *planner_scratch; if( vips_check_mono( class->nickname, in ) || vips_check_uncoded( class->nickname, in ) ) return( -1 ); /* Convert input to a complex double membuffer. */ *out = vips_image_new_memory(); if( vips_cast_dpcomplex( in, &t[0], NULL ) || vips_image_write( t[0], *out ) ) return( -1 ); /* Make the plan for the transform. Yes, they really do use nx for * height and ny for width. */ if( !(planner_scratch = VIPS_ARRAY( invfft, VIPS_IMAGE_N_PELS( in ) * 2, double )) ) return( -1 ); if( !(plan = fftw_plan_dft_2d( in->Ysize, in->Xsize, (fftw_complex *) planner_scratch, (fftw_complex *) planner_scratch, FFTW_BACKWARD, 0 )) ) { vips_error( class->nickname, "%s", _( "unable to create transform plan" ) ); return( -1 ); } fftw_execute_dft( plan, (fftw_complex *) (*out)->data, (fftw_complex *) (*out)->data ); fftw_destroy_plan( plan ); (*out)->Type = VIPS_INTERPRETATION_B_W; return( 0 ); } /* Complex to real inverse transform. */ static int rinvfft1( VipsObject *object, VipsImage *in, VipsImage **out ) { VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsInvfft *invfft = (VipsInvfft *) object; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( invfft ); const int half_width = in->Xsize / 2 + 1; double *half_complex; double *planner_scratch; fftw_plan plan; int x, y; double *q, *p; /* Convert input to a complex double membuffer. */ t[1] = vips_image_new_memory(); if( vips_cast_dpcomplex( in, &t[0], NULL ) || vips_image_write( t[0], t[1] ) ) return( -1 ); /* Build half-complex image. */ if( !(half_complex = VIPS_ARRAY( invfft, t[1]->Ysize * half_width * 2, double )) ) return( -1 ); q = half_complex; for( y = 0; y < t[1]->Ysize; y++ ) { p = ((double *) t[1]->data) + (guint64) y * t[1]->Xsize * 2; for( x = 0; x < half_width; x++ ) { q[0] = p[0]; q[1] = p[1]; p += 2; q += 2; } } /* Make mem buffer real image for output. */ *out = vips_image_new_memory(); if( vips_image_pipelinev( *out, VIPS_DEMAND_STYLE_ANY, t[1], NULL ) ) return( -1 ); (*out)->BandFmt = VIPS_FORMAT_DOUBLE; (*out)->Type = VIPS_INTERPRETATION_B_W; if( vips_image_write_prepare( *out ) ) return( -1 ); /* Make the plan for the transform. Yes, they really do use nx for * height and ny for width. */ if( !(planner_scratch = VIPS_ARRAY( invfft, t[1]->Ysize * half_width * 2, double )) ) return( -1 ); if( !(plan = fftw_plan_dft_c2r_2d( t[1]->Ysize, t[1]->Xsize, (fftw_complex *) planner_scratch, (double *) (*out)->data, 0 )) ) { vips_error( class->nickname, "%s", _( "unable to create transform plan" ) ); return( -1 ); } fftw_execute_dft_c2r( plan, (fftw_complex *) half_complex, (double *) (*out)->data ); fftw_destroy_plan( plan ); return( 0 ); } static int vips_invfft_build( VipsObject *object ) { VipsFreqfilt *freqfilt = VIPS_FREQFILT( object ); VipsInvfft *invfft = (VipsInvfft *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_invfft_parent_class )-> build( object ) ) return( -1 ); in = freqfilt->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( invfft->real ) { if( vips__fftproc( VIPS_OBJECT( invfft ), in, &t[1], rinvfft1 ) ) return( -1 ); } else { if( vips__fftproc( VIPS_OBJECT( invfft ), in, &t[1], cinvfft1 ) ) return( -1 ); } if( vips_image_write( t[1], freqfilt->out ) ) return( -1 ); return( 0 ); } static void vips_invfft_class_init( VipsInvfftClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "invfft"; vobject_class->description = _( "inverse FFT" ); vobject_class->build = vips_invfft_build; VIPS_ARG_BOOL( class, "real", 4, _( "Real" ), _( "Output only the real part of the transform" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsInvfft, real ), FALSE ); } static void vips_invfft_init( VipsInvfft *invfft ) { } #endif /*HAVE_FFTW*/ /** * vips_invfft: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @real: only output the real part * * Transform an image from Fourier space to real space. The result is complex. * If you are OK with a real result, set @real, it's quicker. * * VIPS uses the fftw Fourier Transform library. If this library was not * available when VIPS was configured, these functions will fail. * * See also: vips_fwfft(). * * Returns: 0 on success, -1 on error. */ int vips_invfft( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "invfft", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/0000775000175000017500000000000012651721505012614 500000000000000vips-8.2.2/libvips/foreign/foreign.c0000664000175000017500000022613012645527666014354 00000000000000/* foreign file formats base class * * 7/2/12 * - add support for sequential reads * 18/6/12 * - flatten alpha with vips_flatten() * 28/5/13 * - auto rshift down to 8 bits during save * 19/1/14 * - pack and unpack rad to scrgb * 18/8/14 * - fix conversion to 16-bit RGB, thanks John * 18/6/15 * - forward progress signals from load */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /** * SECTION: foreign * @short_description: load and save images in a variety of formats * @stability: Stable * @see_also: image * @include: vips/vips.h * * This set of operations load and save images in a variety of formats. * * The operations share a base class that offers a simple way to search for a * subclass of #VipsForeign which can load a certain file (see * vips_foreign_find_load()) or buffer (see vips_foreign_find_load_buffer()), * or which could be used to save an image to a * certain file type (see vips_foreign_find_save() and * vips_foreign_find_save_buffer()). You can then run these * operations using vips_call() and friends to perform the load or save. * * vips_image_write_to_file() and vips_image_new_from_file() and friends use * these functions to automate file load and save. * * You can also invoke the operations directly, for example: * * |[ * vips_tiffsave (my_image, "frank.anything", * "compression", VIPS_FOREIGN_TIFF_COMPRESSION_JPEG, * NULL); * ]| * * To add support for a new file format to vips, simply define a new subclass * of #VipsForeignLoad or #VipsForeignSave. * * If you define a new operation which is a subclass of #VipsForeign, support * for it automatically appears in all VIPS user-interfaces. It will also be * transparently supported by vips_image_new_from_file() and friends. * * VIPS comes with VipsForeign for TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, * Matlab, Radiance, RAW, FITS, WebP and VIPS. It also includes import filters * which can load with libMagick and with OpenSlide. */ /** * VipsForeignFlags: * @VIPS_FOREIGN_NONE: no flags set * @VIPS_FOREIGN_PARTIAL: the image may be read lazilly * @VIPS_FOREIGN_BIGENDIAN: image pixels are most-significant byte first * @VIPS_FOREIGN_SEQUENTIAL: top-to-bottom lazy reading * * Some hints about the image loader. * * @VIPS_FOREIGN_PARTIAL means that the image can be read directly from the * file without needing to be unpacked to a temporary image first. * * @VIPS_FOREIGN_SEQUENTIAL means that the loader supports lazy reading, but * only top-to-bottom (sequential) access. Formats like PNG can read sets of * scanlines, for example, but only in order. * * If neither PARTIAL or SEQUENTIAL is set, the loader only supports whole * image read. Setting both PARTIAL and SEQUENTIAL is an error. * * @VIPS_FOREIGN_BIGENDIAN means that image pixels are most-significant byte * first. Depending on the native byte order of the host machine, you may * need to swap bytes. See vips_copy(). */ /** * VipsForeignClass: * * The suffix list is used to select a format to save a file in, and to pick a * loader if you don't define is_a(). * * You should also define @nickname and @description in #VipsObject. */ /** * VipsForeignLoad: * * @header() must set at least the header fields of @out. @load(), if defined, * must load the pixels to @real. */ /** * VipsForeignLoadClass: * * Add a new loader to VIPS by subclassing #VipsForeignLoad. Subclasses need to * implement at least @header(). * * As a complete example, here's code for a PNG loader, minus the actual * calls to libpng. * * |[ * typedef struct _VipsForeignLoadPng { * VipsForeignLoad parent_object; * * char *filename; * } VipsForeignLoadPng; * * typedef VipsForeignLoadClass VipsForeignLoadPngClass; * * G_DEFINE_TYPE( VipsForeignLoadPng, vips_foreign_load_png, * VIPS_TYPE_FOREIGN_LOAD ); * * static VipsForeignFlags * vips_foreign_load_png_get_flags_filename( const char *filename ) * { * VipsForeignFlags flags; * * flags = 0; * if( vips__png_isinterlaced( filename ) ) * flags = VIPS_FOREIGN_PARTIAL; * else * flags = VIPS_FOREIGN_SEQUENTIAL; * * return( flags ); * } * * static VipsForeignFlags * vips_foreign_load_png_get_flags( VipsForeignLoad *load ) * { * VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; * * return( vips_foreign_load_png_get_flags_filename( png->filename ) ); * } * * static int * vips_foreign_load_png_header( VipsForeignLoad *load ) * { * VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; * * if( vips__png_header( png->filename, load->out ) ) * return( -1 ); * * return( 0 ); * } * * static int * vips_foreign_load_png_load( VipsForeignLoad *load ) * { * VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; * * if( vips__png_read( png->filename, load->real ) ) * return( -1 ); * * return( 0 ); * } * * static void * vips_foreign_load_png_class_init( VipsForeignLoadPngClass *class ) * { * GObjectClass *gobject_class = G_OBJECT_CLASS( class ); * VipsObjectClass *object_class = (VipsObjectClass *) class; * VipsForeignClass *foreign_class = (VipsForeignClass *) class; * VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; * * gobject_class->set_property = vips_object_set_property; * gobject_class->get_property = vips_object_get_property; * * object_class->nickname = "pngload"; * object_class->description = _( "load png from file" ); * * foreign_class->suffs = vips__png_suffs; * * load_class->is_a = vips__png_ispng; * load_class->get_flags_filename = * vips_foreign_load_png_get_flags_filename; * load_class->get_flags = vips_foreign_load_png_get_flags; * load_class->header = vips_foreign_load_png_header; * load_class->load = vips_foreign_load_png_load; * * VIPS_ARG_STRING( class, "filename", 1, * _( "Filename" ), * _( "Filename to load from" ), * VIPS_ARGUMENT_REQUIRED_INPUT, * G_STRUCT_OFFSET( VipsForeignLoadPng, filename ), * NULL ); * } * * static void * vips_foreign_load_png_init( VipsForeignLoadPng *png ) * { * } * ]| */ /** * VipsForeignSaveClass: * * Call your saver in the class' @build() method after chaining up. The * prepared image should be ready for you to save in @ready. * * As a complete example, here's the code for the CSV saver, minus the calls * to the actual save routines. * * |[ * typedef struct _VipsForeignSaveCsv { * VipsForeignSave parent_object; * * char *filename; * const char *separator; * } VipsForeignSaveCsv; * * typedef VipsForeignSaveClass VipsForeignSaveCsvClass; * * G_DEFINE_TYPE( VipsForeignSaveCsv, vips_foreign_save_csv, * VIPS_TYPE_FOREIGN_SAVE ); * * static int * vips_foreign_save_csv_build( VipsObject *object ) * { * VipsForeignSave *save = (VipsForeignSave *) object; * VipsForeignSaveCsv *csv = (VipsForeignSaveCsv *) object; * * if( VIPS_OBJECT_CLASS( vips_foreign_save_csv_parent_class )-> * build( object ) ) * return( -1 ); * * if( vips__csv_write( save->ready, csv->filename, csv->separator ) ) * return( -1 ); * * return( 0 ); * } * * static void * vips_foreign_save_csv_class_init( VipsForeignSaveCsvClass *class ) * { * GObjectClass *gobject_class = G_OBJECT_CLASS( class ); * VipsObjectClass *object_class = (VipsObjectClass *) class; * VipsForeignClass *foreign_class = (VipsForeignClass *) class; * VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; * * gobject_class->set_property = vips_object_set_property; * gobject_class->get_property = vips_object_get_property; * * object_class->nickname = "csvsave"; * object_class->description = _( "save image to csv file" ); * object_class->build = vips_foreign_save_csv_build; * * foreign_class->suffs = vips__foreign_csv_suffs; * * save_class->saveable = VIPS_SAVEABLE_MONO; * // no need to define ->format_table, we don't want the input * // cast for us * * VIPS_ARG_STRING( class, "filename", 1, * _( "Filename" ), * _( "Filename to save to" ), * VIPS_ARGUMENT_REQUIRED_INPUT, * G_STRUCT_OFFSET( VipsForeignSaveCsv, filename ), * NULL ); * * VIPS_ARG_STRING( class, "separator", 13, * _( "Separator" ), * _( "Separator characters" ), * VIPS_ARGUMENT_OPTIONAL_INPUT, * G_STRUCT_OFFSET( VipsForeignSaveCsv, separator ), * "\t" ); * } * * static void * vips_foreign_save_csv_init( VipsForeignSaveCsv *csv ) * { * csv->separator = g_strdup( "\t" ); * } * ]| */ G_DEFINE_ABSTRACT_TYPE( VipsForeign, vips_foreign, VIPS_TYPE_OPERATION ); static void vips_foreign_summary_class( VipsObjectClass *object_class, VipsBuf *buf ) { VipsForeignClass *class = VIPS_FOREIGN_CLASS( object_class ); VIPS_OBJECT_CLASS( vips_foreign_parent_class )-> summary_class( object_class, buf ); vips_buf_appends( buf, " " ); if( class->suffs ) { const char **p; vips_buf_appends( buf, "(" ); for( p = class->suffs; *p; p++ ) { vips_buf_appendf( buf, "%s", *p ); if( p[1] ) vips_buf_appends( buf, ", " ); } vips_buf_appends( buf, "), " ); } vips_buf_appendf( buf, "priority=%d", class->priority ); } static void vips_foreign_class_init( VipsForeignClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "file"; object_class->description = _( "load and save image files" ); object_class->summary_class = vips_foreign_summary_class; } static void vips_foreign_init( VipsForeign *object ) { } /* To iterate over supported files we build a temp list of subclasses of * VipsForeign, sort by priority, iterate, and free. */ static void * file_add_class( VipsForeignClass *class, GSList **files ) { /* Append so we don't reverse the list of files. Sort will not reorder * items of equal priority. */ *files = g_slist_append( *files, class ); return( NULL ); } static gint file_compare( VipsForeignClass *a, VipsForeignClass *b ) { return( b->priority - a->priority ); } /** * vips_foreign_map: * @base: base class to search below (eg. "VipsForeignLoad") * @fn: (scope call): function to apply to each #VipsForeignClass * @a: user data * @b: user data * * Apply a function to every #VipsForeignClass that VIPS knows about. Foreigns * are presented to the function in priority order. * * Like all VIPS map functions, if @fn returns %NULL, iteration continues. If * it returns non-%NULL, iteration terminates and that value is returned. The * map function returns %NULL if all calls return %NULL. * * See also: vips_slist_map(). * * Returns: (transfer none): the result of iteration */ void * vips_foreign_map( const char *base, VipsSListMap2Fn fn, void *a, void *b ) { GSList *files; void *result; files = NULL; (void) vips_class_map_all( g_type_from_name( base ), (VipsClassMapFn) file_add_class, (void *) &files ); files = g_slist_sort( files, (GCompareFunc) file_compare ); result = vips_slist_map2( files, fn, a, b ); g_slist_free( files ); return( result ); } /* Abstract base class for image load. */ G_DEFINE_ABSTRACT_TYPE( VipsForeignLoad, vips_foreign_load, VIPS_TYPE_FOREIGN ); static void vips_foreign_load_dispose( GObject *gobject ) { VipsForeignLoad *load = VIPS_FOREIGN_LOAD( gobject ); VIPS_UNREF( load->real ); G_OBJECT_CLASS( vips_foreign_load_parent_class )->dispose( gobject ); } static void vips_foreign_load_summary_class( VipsObjectClass *object_class, VipsBuf *buf ) { VipsForeignLoadClass *class = VIPS_FOREIGN_LOAD_CLASS( object_class ); VIPS_OBJECT_CLASS( vips_foreign_load_parent_class )-> summary_class( object_class, buf ); if( !G_TYPE_IS_ABSTRACT( G_TYPE_FROM_CLASS( class ) ) ) { if( class->is_a ) vips_buf_appends( buf, ", is_a" ); if( class->is_a_buffer ) vips_buf_appends( buf, ", is_a_buffer" ); if( class->get_flags ) vips_buf_appends( buf, ", get_flags" ); if( class->get_flags_filename ) vips_buf_appends( buf, ", get_flags_filename" ); if( class->header ) vips_buf_appends( buf, ", header" ); if( class->load ) vips_buf_appends( buf, ", load" ); /* You can omit ->load(), you must not omit ->header(). */ g_assert( class->header ); } } /* Can this VipsForeign open this file? */ static void * vips_foreign_find_load_sub( VipsForeignLoadClass *load_class, const char *filename ) { VipsForeignClass *class = VIPS_FOREIGN_CLASS( load_class ); if( load_class->is_a ) { if( load_class->is_a( filename ) ) return( load_class ); } else if( class->suffs && vips_filename_suffix_match( filename, class->suffs ) ) return( load_class ); return( NULL ); } /** * vips_foreign_find_load: * @filename: file to find a loader for * * Searches for an operation you could use to load @filename. Any trailing * options on @filename are stripped and ignored. * * See also: vips_foreign_find_load_buffer(), vips_image_new_from_file(). * * Returns: the name of an operation on success, %NULL on error */ const char * vips_foreign_find_load( const char *name ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; VipsForeignLoadClass *load_class; vips__filename_split8( name, filename, option_string ); if( !vips_existsf( "%s", filename ) ) { vips_error( "VipsForeignLoad", _( "file \"%s\" not found" ), name ); return( NULL ); } if( !(load_class = (VipsForeignLoadClass *) vips_foreign_map( "VipsForeignLoad", (VipsSListMap2Fn) vips_foreign_find_load_sub, (void *) filename, NULL )) ) { vips_error( "VipsForeignLoad", _( "\"%s\" is not a known file format" ), name ); return( NULL ); } return( G_OBJECT_CLASS_NAME( load_class ) ); } /* Kept for compat with earlier version of the vip8 API. Use * vips_image_new_from_file() now. */ int vips_foreign_load( const char *name, VipsImage **out, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; va_list ap; int result; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_load( filename )) ) return( -1 ); va_start( ap, out ); result = vips_call_split_option_string( operation_name, option_string, ap, filename, out ); va_end( ap ); return( result ); } /* Can this VipsForeign open this buffer? */ static void * vips_foreign_find_load_buffer_sub( VipsForeignLoadClass *load_class, const void **buf, size_t *len ) { if( load_class->is_a_buffer && load_class->is_a_buffer( *buf, *len ) ) return( load_class ); return( NULL ); } /** * vips_foreign_find_load_buffer: * @data: (array length=size) (element-type guint8) (transfer none): start of * memory buffer * @size: number of bytes in @data * * Searches for an operation you could use to load a memory buffer. * * See also: vips_image_new_from_buffer(). * * Returns: (transfer none): the name of an operation on success, %NULL on * error. */ const char * vips_foreign_find_load_buffer( const void *data, size_t size ) { VipsForeignLoadClass *load_class; if( !(load_class = (VipsForeignLoadClass *) vips_foreign_map( "VipsForeignLoad", (VipsSListMap2Fn) vips_foreign_find_load_buffer_sub, &data, &size )) ) { vips_error( "VipsForeignLoad", "%s", _( "buffer is not in a known format" ) ); return( NULL ); } return( G_OBJECT_CLASS_NAME( load_class ) ); } /** * vips_foreign_is_a: * @loader: name of loader to use for test * @filename: file to test * * Return %TRUE if @filename can be loaded by @loader. @loader is something * like "tiffload" or "VipsForeignLoadTiff". * * Returns: %TRUE if @filename can be loaded by @loader. */ gboolean vips_foreign_is_a( const char *loader, const char *filename ) { VipsObjectClass *class; VipsForeignLoadClass *load_class; if( !(class = vips_class_find( "VipsForeignLoad", loader )) ) return( FALSE ); load_class = VIPS_FOREIGN_LOAD_CLASS( class ); if( load_class->is_a && load_class->is_a( filename ) ) return( TRUE ); return( FALSE ); } /** * vips_foreign_is_a_buffer: * @loader: name of loader to use for test * @data: pointer to the buffer to test * @size: size of the buffer to test * * Return %TRUE if @data can be loaded by @loader. @loader is something * like "tiffload_buffer" or "VipsForeignLoadTiffBuffer". * * Returns: %TRUE if @data can be loaded by @loader. */ gboolean vips_foreign_is_a_buffer( const char *loader, const void *data, size_t size ) { VipsObjectClass *class; VipsForeignLoadClass *load_class; if( !(class = vips_class_find( "VipsForeignLoad", loader )) ) return( FALSE ); load_class = VIPS_FOREIGN_LOAD_CLASS( class ); if( load_class->is_a_buffer && load_class->is_a_buffer( data, size ) ) return( TRUE ); return( FALSE ); } /** * vips_foreign_flags: * @loader: name of loader to use for test * @filename: file to test * * Return the flags for @filename using @loader. * @loader is something like "tiffload" or "VipsForeignLoadTiff". * * Returns: the flags for @filename. */ VipsForeignFlags vips_foreign_flags( const char *loader, const char *filename ) { VipsObjectClass *class; if( (class = vips_class_find( "VipsForeignLoad", loader )) ) { VipsForeignLoadClass *load_class = VIPS_FOREIGN_LOAD_CLASS( class ); if( load_class->get_flags_filename ) return( load_class->get_flags_filename( filename ) ); } return( 0 ); } static VipsObject * vips_foreign_load_new_from_string( const char *string ) { const char *file_op; GType type; VipsForeignLoad *load; if( !(file_op = vips_foreign_find_load( string )) ) return( NULL ); type = g_type_from_name( file_op ); g_assert( type ); load = VIPS_FOREIGN_LOAD( g_object_new( type, NULL ) ); g_object_set( load, "filename", string, NULL ); return( VIPS_OBJECT( load ) ); } static VipsImage * vips_foreign_load_temp( VipsForeignLoad *load ) { const guint64 disc_threshold = vips_get_disc_threshold(); const guint64 image_size = VIPS_IMAGE_SIZEOF_IMAGE( load->out ); /* If this is a partial operation, we can open directly. */ if( load->flags & VIPS_FOREIGN_PARTIAL ) { #ifdef DEBUG printf( "vips_foreign_load_temp: partial temp\n" ); #endif /*DEBUG*/ return( vips_image_new() ); } /* If it can do sequential access and it's been requested, we can open * directly. */ if( (load->flags & VIPS_FOREIGN_SEQUENTIAL) && load->access != VIPS_ACCESS_RANDOM ) { #ifdef DEBUG printf( "vips_foreign_load_temp: partial sequential temp\n" ); #endif /*DEBUG*/ return( vips_image_new() ); } /* We open via disc if: * - 'disc' is set * - the uncompressed image will be larger than * vips_get_disc_threshold() */ if( load->disc && image_size > disc_threshold ) { #ifdef DEBUG printf( "vips_foreign_load_temp: disc temp\n" ); #endif /*DEBUG*/ return( vips_image_new_temp_file( "%s.v" ) ); } #ifdef DEBUG printf( "vips_foreign_load_temp: memory temp\n" ); #endif /*DEBUG*/ /* Otherwise, fall back to a memory buffer. */ return( vips_image_new_memory() ); } /* Check two images for compatibility: their geometries need to match. */ static gboolean vips_foreign_load_iscompat( VipsImage *a, VipsImage *b ) { if( a->Xsize != b->Xsize || a->Ysize != b->Ysize || a->Bands != b->Bands || a->Coding != b->Coding || a->BandFmt != b->BandFmt ) { vips_error( "VipsForeignLoad", "%s", _( "images do not match" ) ); return( FALSE ); } return( TRUE ); } /* Our start function ... do the lazy open, if necessary, and return a region * on the new image. */ static void * vips_foreign_load_start( VipsImage *out, void *a, void *b ) { VipsForeignLoad *load = VIPS_FOREIGN_LOAD( b ); VipsForeignLoadClass *class = VIPS_FOREIGN_LOAD_GET_CLASS( load ); if( !load->real ) { if( !(load->real = vips_foreign_load_temp( load )) ) return( NULL ); #ifdef DEBUG printf( "vips_foreign_load_start: triggering ->load()\n" ); #endif /*DEBUG*/ /* Read the image in. This may involve a long computation and * will finish with load->real holding the decompressed image. * * We want our caller to be able to see this computation on * @out, so eval signals on ->real need to appear on ->out. */ load->real->progress_signal = load->out; if( class->load( load ) || vips_image_pio_input( load->real ) ) return( NULL ); /* ->header() read the header into @out, load has read the * image into @real. They must match exactly in size, bands, * format and coding for the copy to work. * * Some versions of ImageMagick give different results between * Ping and Load for some formats, for example. */ if( !vips_foreign_load_iscompat( load->real, out ) ) return( NULL ); /* We have to tell vips that out depends on real. We've set * the demand hint below, but not given an input there. */ vips_image_pipelinev( load->out, load->out->dhint, load->real, NULL ); } return( vips_region_new( load->real ) ); } /* Just pointer-copy. */ static int vips_foreign_load_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; /* Ask for input we need. */ if( vips_region_prepare( ir, r ) ) return( -1 ); /* Attach output region to that. */ if( vips_region_region( or, ir, r, r->left, r->top ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsForeignLoad *load = VIPS_FOREIGN_LOAD( object ); VipsForeignLoadClass *fclass = VIPS_FOREIGN_LOAD_GET_CLASS( object ); VipsForeignFlags flags; #ifdef DEBUG printf( "vips_foreign_load_build:\n" ); #endif /*DEBUG*/ flags = 0; if( fclass->get_flags ) flags |= fclass->get_flags( load ); if( (flags & VIPS_FOREIGN_PARTIAL) && (flags & VIPS_FOREIGN_SEQUENTIAL) ) { vips_warn( class->nickname, "%s", _( "VIPS_FOREIGN_PARTIAL and VIPS_FOREIGN_SEQUENTIAL " "both set -- using SEQUENTIAL" ) ); flags ^= VIPS_FOREIGN_PARTIAL; } g_object_set( load, "flags", flags, NULL ); /* If the loader can do sequential mode and sequential has been * requested, we need to block caching. */ if( (load->flags & VIPS_FOREIGN_SEQUENTIAL) && load->access != VIPS_ACCESS_RANDOM ) load->nocache = TRUE; if( VIPS_OBJECT_CLASS( vips_foreign_load_parent_class )-> build( object ) ) return( -1 ); if( load->sequential ) { vips_warn( class->nickname, "%s", _( "ignoring deprecated \"sequential\" mode" ) ); vips_warn( class->nickname, "%s", _( "please use \"access\" instead" ) ); } g_object_set( object, "out", vips_image_new(), NULL ); vips_image_set_string( load->out, VIPS_META_LOADER, class->nickname ); #ifdef DEBUG printf( "vips_foreign_load_build: triggering ->header()\n" ); #endif /*DEBUG*/ /* Read the header into @out. */ if( fclass->header && fclass->header( load ) ) return( -1 ); /* If there's no ->load() method then the header read has done * everything. Otherwise, it's just set fields and we must also * load pixels. * * Delay the load until the first pixel is requested by doing the work * in the start function of the copy. */ if( fclass->load ) { #ifdef DEBUG printf( "vips_foreign_load_build: delaying read ...\n" ); #endif /*DEBUG*/ /* ->header() should set the dhint. It'll default to the safe * SMALLTILE if header() did not set it. */ vips_image_pipelinev( load->out, load->out->dhint, NULL ); /* Then 'start' creates the real image and 'gen' fetches * pixels for @out from @real on demand. */ if( vips_image_generate( load->out, vips_foreign_load_start, vips_foreign_load_generate, vips_stop_one, NULL, load ) ) return( -1 ); } return( 0 ); } static VipsOperationFlags vips_foreign_load_operation_get_flags( VipsOperation *operation ) { VipsForeignLoad *load = VIPS_FOREIGN_LOAD( operation ); VipsOperationFlags flags; flags = VIPS_OPERATION_CLASS( vips_foreign_load_parent_class )-> get_flags( operation ); if( load->nocache ) flags |= VIPS_OPERATION_NOCACHE; return( flags ); } static void vips_foreign_load_class_init( VipsForeignLoadClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = (VipsOperationClass *) class; gobject_class->dispose = vips_foreign_load_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->build = vips_foreign_load_build; object_class->summary_class = vips_foreign_load_summary_class; object_class->new_from_string = vips_foreign_load_new_from_string; object_class->nickname = "fileload"; object_class->description = _( "file loaders" ); operation_class->get_flags = vips_foreign_load_operation_get_flags; VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignLoad, out ) ); VIPS_ARG_FLAGS( class, "flags", 6, _( "Flags" ), _( "Flags for this file" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsForeignLoad, flags ), VIPS_TYPE_FOREIGN_FLAGS, VIPS_FOREIGN_NONE ); VIPS_ARG_BOOL( class, "disc", 7, _( "Disc" ), _( "Open to disc" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoad, disc ), TRUE ); VIPS_ARG_ENUM( class, "access", 8, _( "Access" ), _( "Required access pattern for this file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoad, access ), VIPS_TYPE_ACCESS, VIPS_ACCESS_RANDOM ); VIPS_ARG_BOOL( class, "sequential", 10, _( "Sequential" ), _( "Sequential read only" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignLoad, sequential ), FALSE ); } static void vips_foreign_load_init( VipsForeignLoad *load ) { load->disc = TRUE; load->access = VIPS_ACCESS_RANDOM; } /* Abstract base class for image savers. */ G_DEFINE_ABSTRACT_TYPE( VipsForeignSave, vips_foreign_save, VIPS_TYPE_FOREIGN ); static void vips_foreign_save_dispose( GObject *gobject ) { VipsForeignSave *save = VIPS_FOREIGN_SAVE( gobject ); VIPS_UNREF( save->ready ); G_OBJECT_CLASS( vips_foreign_save_parent_class )->dispose( gobject ); } static void vips_foreign_save_summary_class( VipsObjectClass *object_class, VipsBuf *buf ) { VipsForeignSaveClass *class = VIPS_FOREIGN_SAVE_CLASS( object_class ); VIPS_OBJECT_CLASS( vips_foreign_save_parent_class )-> summary_class( object_class, buf ); vips_buf_appendf( buf, ", %s", vips_enum_nick( VIPS_TYPE_SAVEABLE, class->saveable ) ); } static VipsObject * vips_foreign_save_new_from_string( const char *string ) { const char *file_op; GType type; VipsForeignSave *save; if( !(file_op = vips_foreign_find_save( string )) ) return( NULL ); type = g_type_from_name( file_op ); g_assert( type ); save = VIPS_FOREIGN_SAVE( g_object_new( type, NULL ) ); g_object_set( save, "filename", string, NULL ); return( VIPS_OBJECT( save ) ); } /* Generate the saveable image. */ static int vips_foreign_convert_saveable( VipsForeignSave *save ) { VipsForeignSaveClass *class = VIPS_FOREIGN_SAVE_GET_CLASS( save ); VipsImage *in = save->in; /* in holds a reference to the output of our chain as we build it. */ g_object_ref( in ); /* For coded images, can this class save the coding we are in now? * Nothing to do. */ if( in->Coding != VIPS_CODING_NONE && class->coding[in->Coding] ) { VIPS_UNREF( save->ready ); save->ready = in; return( 0 ); } /* For uncoded images, if this saver supports ANY bands and this * format we have nothing to do. */ if( in->Coding == VIPS_CODING_NONE && class->saveable == VIPS_SAVEABLE_ANY && class->format_table[in->BandFmt] == in->BandFmt ) { VIPS_UNREF( save->ready ); save->ready = in; return( 0 ); } /* Otherwise ... we need to decode and then (possibly) recode at the * end. */ /* If this is an VIPS_CODING_LABQ, we can go straight to RGB. */ if( in->Coding == VIPS_CODING_LABQ ) { VipsImage *out; if( vips_LabQ2sRGB( in, &out, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* If this is an VIPS_CODING_RAD, we unpack to float. This could be * scRGB or XYZ. */ if( in->Coding == VIPS_CODING_RAD ) { VipsImage *out; if( vips_rad2float( in, &out, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* If the saver supports RAD, we need to go to scRGB or XYZ. */ if( class->coding[VIPS_CODING_RAD] ) { if( in->Type != VIPS_INTERPRETATION_scRGB && in->Type != VIPS_INTERPRETATION_XYZ ) { VipsImage *out; if( vips_colourspace( in, &out, VIPS_INTERPRETATION_scRGB, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } } /* If this is something other than CMYK or RAD, eg. maybe a LAB image, * we need to transform to RGB. */ if( !class->coding[VIPS_CODING_RAD] && in->Bands >= 3 && in->Type != VIPS_INTERPRETATION_CMYK && vips_colourspace_issupported( in ) && (class->saveable == VIPS_SAVEABLE_RGB || class->saveable == VIPS_SAVEABLE_RGBA || class->saveable == VIPS_SAVEABLE_RGBA_ONLY || class->saveable == VIPS_SAVEABLE_RGB_CMYK) ) { VipsImage *out; VipsInterpretation interpretation; /* Do we make RGB or RGB16? We don't want to squash a 16-bit * RGB down to 8 bits if the saver supports 16. */ if( vips_band_format_is8bit( class->format_table[in->BandFmt] ) ) interpretation = VIPS_INTERPRETATION_sRGB; else interpretation = VIPS_INTERPRETATION_RGB16; if( vips_colourspace( in, &out, interpretation, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* VIPS_SAVEABLE_RGBA_ONLY does not support 1 or 2 bands ... convert * to sRGB. */ if( !class->coding[VIPS_CODING_RAD] && in->Bands < 3 && vips_colourspace_issupported( in ) && class->saveable == VIPS_SAVEABLE_RGBA_ONLY ) { VipsImage *out; VipsInterpretation interpretation; /* Do we make RGB or RGB16? We don't want to squash a 16-bit * RGB down to 8 bits if the saver supports 16. */ if( vips_band_format_is8bit( class->format_table[in->BandFmt] ) ) interpretation = VIPS_INTERPRETATION_sRGB; else interpretation = VIPS_INTERPRETATION_RGB16; if( vips_colourspace( in, &out, interpretation, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* Get the bands right. We must do this after all colourspace * transforms, since they can change the number of bands. */ if( in->Coding == VIPS_CODING_NONE ) { /* Do we need to flatten out an alpha channel? There needs to * be an alpha there now, and this writer needs to not support * alpha. */ if( (in->Bands == 2 || (in->Bands == 4 && in->Type != VIPS_INTERPRETATION_CMYK)) && (class->saveable == VIPS_SAVEABLE_MONO || class->saveable == VIPS_SAVEABLE_RGB || class->saveable == VIPS_SAVEABLE_RGB_CMYK) ) { VipsImage *out; if( vips_flatten( in, &out, "background", save->background, "max_alpha", in->BandFmt == VIPS_FORMAT_USHORT ? 65535.0 : 255.0, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* Other alpha removal strategies ... just drop the extra * bands. */ else if( in->Bands > 3 && (class->saveable == VIPS_SAVEABLE_RGB || (class->saveable == VIPS_SAVEABLE_RGB_CMYK && in->Type != VIPS_INTERPRETATION_CMYK)) ) { VipsImage *out; /* Don't let 4 bands though unless the image really is * a CMYK. * * Consider a RGBA png being saved as JPG. We can * write CMYK jpg, but we mustn't do that for RGBA * images. */ if( vips_extract_band( in, &out, 0, "n", 3, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } else if( in->Bands > 4 && ((class->saveable == VIPS_SAVEABLE_RGB_CMYK && in->Type == VIPS_INTERPRETATION_CMYK) || class->saveable == VIPS_SAVEABLE_RGBA || class->saveable == VIPS_SAVEABLE_RGBA_ONLY) ) { VipsImage *out; if( vips_extract_band( in, &out, 0, "n", 4, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } else if( in->Bands > 1 && class->saveable == VIPS_SAVEABLE_MONO ) { VipsImage *out; if( vips_extract_band( in, &out, 0, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* Else we have VIPS_SAVEABLE_ANY and we don't chop bands down. */ } /* Handle the ushort interpretations. * * RGB16 and GREY16 use 0-65535 for black-white. If we have an image * tagged like this, and it has more than 8 bits (we leave crazy uchar * images tagged as RGB16 alone), we'll need to get it ready for the * saver. */ if( (in->Type == VIPS_INTERPRETATION_RGB16 || in->Type == VIPS_INTERPRETATION_GREY16) && !vips_band_format_is8bit( in->BandFmt ) ) { /* If the saver supports ushort, cast to ushort. It may be * float at the moment, for example. * * If the saver does not support ushort, automatically shift * it down. This is the behaviour we want for saving an RGB16 * image as JPG, for example. */ if( class->format_table[VIPS_FORMAT_USHORT] == VIPS_FORMAT_USHORT ) { VipsImage *out; if( vips_cast( in, &out, VIPS_FORMAT_USHORT, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } else { VipsImage *out; if( vips_rshift_const1( in, &out, 8, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; /* That could have produced an int image ... make sure * we are now uchar. */ if( vips_cast( in, &out, VIPS_FORMAT_UCHAR, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } } /* Cast to the output format. */ { VipsImage *out; if( vips_cast( in, &out, class->format_table[in->BandFmt], NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } /* Does this class want a coded image? Search the coding table for the * first one. */ if( class->coding[VIPS_CODING_NONE] ) { /* Already NONE, nothing to do. */ } else if( class->coding[VIPS_CODING_LABQ] ) { VipsImage *out; if( vips_Lab2LabQ( in, &out, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } else if( class->coding[VIPS_CODING_RAD] ) { VipsImage *out; if( vips_float2rad( in, &out, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); in = out; } VIPS_UNREF( save->ready ); save->ready = in; return( 0 ); } static int vips_foreign_save_build( VipsObject *object ) { VipsForeignSave *save = VIPS_FOREIGN_SAVE( object ); if( save->in && vips_foreign_convert_saveable( save ) ) return( -1 ); if( VIPS_OBJECT_CLASS( vips_foreign_save_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int vips_foreign_save_format_table[10] = { // UC C US S UI I F X D DX UC, C, US, S, UI, I, F, X, D, DX }; static void vips_foreign_save_class_init( VipsForeignSaveClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsOperationClass *operation_class = (VipsOperationClass *) class; int i; gobject_class->dispose = vips_foreign_save_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->build = vips_foreign_save_build; object_class->summary_class = vips_foreign_save_summary_class; object_class->new_from_string = vips_foreign_save_new_from_string; object_class->nickname = "filesave"; object_class->description = _( "file savers" ); /* All savers are seqential by definition. Things like tiled tiff * write and interlaced png write, which are not, add extra caches * on their input. */ operation_class->flags |= VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; /* Must not cache savers. */ operation_class->flags |= VIPS_OPERATION_NOCACHE; /* Default to no coding allowed. */ for( i = 0; i < VIPS_CODING_LAST; i++ ) class->coding[i] = FALSE; class->coding[VIPS_CODING_NONE] = TRUE; /* Default to no cast on save. */ class->format_table = vips_foreign_save_format_table; VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Image to save" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSave, in ) ); VIPS_ARG_BOOL( class, "strip", 100, _( "Strip" ), _( "Strip all metadata from image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSave, strip ), FALSE ); VIPS_ARG_BOXED( class, "background", 101, _( "Background" ), _( "Background value" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSave, background ), VIPS_TYPE_ARRAY_DOUBLE ); } static void vips_foreign_save_init( VipsForeignSave *save ) { save->background = vips_array_double_newv( 1, 0.0 ); } /* Can we write this filename with this file? */ static void * vips_foreign_find_save_sub( VipsForeignSaveClass *save_class, const char *filename ) { VipsForeignClass *class = VIPS_FOREIGN_CLASS( save_class ); if( class->suffs && vips_filename_suffix_match( filename, class->suffs ) ) return( save_class ); return( NULL ); } /** * vips_foreign_find_save: * @filename: name to find a saver for * * Searches for an operation you could use to write to @filename. * Any trailing options on @filename are stripped and ignored. * * See also: vips_foreign_find_save_buffer(), vips_image_write_to_file(). * * Returns: the name of an operation on success, %NULL on error */ const char * vips_foreign_find_save( const char *name ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; VipsForeignSaveClass *save_class; vips__filename_split8( name, filename, option_string ); if( !(save_class = (VipsForeignSaveClass *) vips_foreign_map( "VipsForeignSave", (VipsSListMap2Fn) vips_foreign_find_save_sub, (void *) filename, NULL )) ) { vips_error( "VipsForeignSave", _( "\"%s\" is not a known file format" ), name ); return( NULL ); } return( G_OBJECT_CLASS_NAME( save_class ) ); } /* Kept for early vips8 API compat. */ int vips_foreign_save( VipsImage *in, const char *name, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; va_list ap; int result; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_save( filename )) ) return( -1 ); va_start( ap, name ); result = vips_call_split_option_string( operation_name, option_string, ap, in, filename ); va_end( ap ); return( result ); } /* Can we write this buffer with this file type? */ static void * vips_foreign_find_save_buffer_sub( VipsForeignSaveClass *save_class, const char *suffix ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( save_class ); VipsForeignClass *class = VIPS_FOREIGN_CLASS( save_class ); if( class->suffs && vips_ispostfix( object_class->nickname, "_buffer" ) && vips_filename_suffix_match( suffix, class->suffs ) ) return( save_class ); return( NULL ); } /** * vips_foreign_find_save_buffer: * @suffix: name to find a saver for * * Searches for an operation you could use to write to a buffer in @suffix * format. * * See also: vips_image_write_to_buffer(). * * Returns: the name of an operation on success, %NULL on error */ const char * vips_foreign_find_save_buffer( const char *name ) { char suffix[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; VipsForeignSaveClass *save_class; vips__filename_split8( name, suffix, option_string ); if( !(save_class = (VipsForeignSaveClass *) vips_foreign_map( "VipsForeignSave", (VipsSListMap2Fn) vips_foreign_find_save_buffer_sub, (void *) suffix, NULL )) ) { vips_error( "VipsForeignSave", _( "\"%s\" is not a known buffer format" ), name ); return( NULL ); } return( G_OBJECT_CLASS_NAME( save_class ) ); } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_foreign_operation_init( void ) { extern GType vips_foreign_load_rad_get_type( void ); extern GType vips_foreign_save_rad_get_type( void ); extern GType vips_foreign_load_mat_get_type( void ); extern GType vips_foreign_load_ppm_get_type( void ); extern GType vips_foreign_save_ppm_get_type( void ); extern GType vips_foreign_load_png_get_type( void ); extern GType vips_foreign_load_png_buffer_get_type( void ); extern GType vips_foreign_save_png_file_get_type( void ); extern GType vips_foreign_save_png_buffer_get_type( void ); extern GType vips_foreign_load_csv_get_type( void ); extern GType vips_foreign_save_csv_get_type( void ); extern GType vips_foreign_load_matrix_get_type( void ); extern GType vips_foreign_save_matrix_get_type( void ); extern GType vips_foreign_print_matrix_get_type( void ); extern GType vips_foreign_load_fits_get_type( void ); extern GType vips_foreign_save_fits_get_type( void ); extern GType vips_foreign_load_analyze_get_type( void ); extern GType vips_foreign_load_openexr_get_type( void ); extern GType vips_foreign_load_openslide_get_type( void ); extern GType vips_foreign_load_jpeg_file_get_type( void ); extern GType vips_foreign_load_jpeg_buffer_get_type( void ); extern GType vips_foreign_save_jpeg_file_get_type( void ); extern GType vips_foreign_save_jpeg_buffer_get_type( void ); extern GType vips_foreign_save_jpeg_mime_get_type( void ); extern GType vips_foreign_load_tiff_file_get_type( void ); extern GType vips_foreign_load_tiff_buffer_get_type( void ); extern GType vips_foreign_save_tiff_get_type( void ); extern GType vips_foreign_load_vips_get_type( void ); extern GType vips_foreign_save_vips_get_type( void ); extern GType vips_foreign_load_raw_get_type( void ); extern GType vips_foreign_save_raw_get_type( void ); extern GType vips_foreign_save_raw_fd_get_type( void ); extern GType vips_foreign_load_magick_file_get_type( void ); extern GType vips_foreign_load_magick_buffer_get_type( void ); extern GType vips_foreign_save_dz_get_type( void ); extern GType vips_foreign_load_webp_file_get_type( void ); extern GType vips_foreign_load_webp_buffer_get_type( void ); extern GType vips_foreign_save_webp_file_get_type( void ); extern GType vips_foreign_save_webp_buffer_get_type( void ); vips_foreign_load_rad_get_type(); vips_foreign_save_rad_get_type(); vips_foreign_load_ppm_get_type(); vips_foreign_save_ppm_get_type(); vips_foreign_load_csv_get_type(); vips_foreign_save_csv_get_type(); vips_foreign_load_matrix_get_type(); vips_foreign_save_matrix_get_type(); vips_foreign_print_matrix_get_type(); vips_foreign_load_analyze_get_type(); vips_foreign_load_raw_get_type(); vips_foreign_save_raw_get_type(); vips_foreign_save_raw_fd_get_type(); vips_foreign_load_vips_get_type(); vips_foreign_save_vips_get_type(); #ifdef HAVE_GSF vips_foreign_save_dz_get_type(); #endif /*HAVE_GSF*/ #ifdef HAVE_PNG vips_foreign_load_png_get_type(); vips_foreign_load_png_buffer_get_type(); vips_foreign_save_png_file_get_type(); vips_foreign_save_png_buffer_get_type(); #endif /*HAVE_PNG*/ #ifdef HAVE_MATIO vips_foreign_load_mat_get_type(); #endif /*HAVE_MATIO*/ #ifdef HAVE_JPEG vips_foreign_load_jpeg_file_get_type(); vips_foreign_load_jpeg_buffer_get_type(); vips_foreign_save_jpeg_file_get_type(); vips_foreign_save_jpeg_buffer_get_type(); vips_foreign_save_jpeg_mime_get_type(); #endif /*HAVE_JPEG*/ #ifdef HAVE_LIBWEBP vips_foreign_load_webp_file_get_type(); vips_foreign_load_webp_buffer_get_type(); vips_foreign_save_webp_file_get_type(); vips_foreign_save_webp_buffer_get_type(); #endif /*HAVE_LIBWEBP*/ #ifdef HAVE_TIFF vips_foreign_load_tiff_file_get_type(); vips_foreign_load_tiff_buffer_get_type(); vips_foreign_save_tiff_get_type(); #endif /*HAVE_TIFF*/ #ifdef HAVE_OPENSLIDE vips_foreign_load_openslide_get_type(); #endif /*HAVE_OPENSLIDE*/ #ifdef HAVE_MAGICK vips_foreign_load_magick_file_get_type(); vips_foreign_load_magick_buffer_get_type(); #endif /*HAVE_MAGICK*/ #ifdef HAVE_CFITSIO vips_foreign_load_fits_get_type(); vips_foreign_save_fits_get_type(); #endif /*HAVE_CFITSIO*/ #ifdef HAVE_OPENEXR vips_foreign_load_openexr_get_type(); #endif /*HAVE_OPENEXR*/ } /** * vips_vipsload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Read in a vips image. * * See also: vips_vipssave(). * * Returns: 0 on success, -1 on error. */ int vips_vipsload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "vipsload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_vipssave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Write @in to @filename in VIPS format. * * See also: vips_vipsload(). * * Returns: 0 on success, -1 on error. */ int vips_vipssave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "vipssave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_magickload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @all_frames: %gboolean, load all frames in sequence * @density: string, canvas resolution for rendering vector formats like SVG * * Read in an image using libMagick, the ImageMagick library. This library can * read more than 80 file formats, including SVG, BMP, EPS, DICOM and many * others. * The reader can handle any ImageMagick image, including the float and double * formats. It will work with any quantum size, including HDR. Any metadata * attached to the libMagick image is copied on to the VIPS image. * * The reader should also work with most versions of GraphicsMagick. See the * "--with-magickpackage" configure option. * * Normally it will only load the first image in a many-image sequence (such * as a GIF). Set @all_frames to true to read the whole image sequence. * * @density is "WxH" in DPI, e.g. "600x300" or "600" (default is "72x72"). See * the [density * docs](http://www.imagemagick.org/script/command-line-options.php#density) * on the imagemagick website. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_magickload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "magickload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_magickload_buffer: * @buf: memory area to load * @len: size of memory area * @out: image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @all_frames: %gboolean, load all frames in sequence * @density: string, canvas resolution for rendering vector formats like SVG * * Read an image memory block using libMagick into a VIPS image. Exactly as * vips_magickload(), but read from a memory source. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_magickload(). * * Returns: 0 on success, -1 on error. */ int vips_magickload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "magickload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_tiffload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @page: int, load this page * * Read a TIFF file into a VIPS image. It is a full baseline TIFF 6 reader, * with extensions for tiled images, multipage images, LAB colour space, * pyramidal images and JPEG compression. including CMYK and YCbCr. * * @page means load this page from the file. By default the first page (page * 0) is read. * * Any ICC profile is read and attached to the VIPS image. Any XMP metadata is * read and attached to the image. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_tiffload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "tiffload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_tiffload_buffer: * @buf: memory area to load * @len: size of memory area * @out: image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @page: %gint, load this page * * Read a TIFF-formatted memory block into a VIPS image. Exactly as * vips_tiffload(), but read from a memory source. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_tiffload(). * * Returns: 0 on success, -1 on error. */ int vips_tiffload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "tiffload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_tiffsave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @compression: use this #VipsForeignTiffCompression * @Q: %gint quality factor * @predictor: use this #VipsForeignTiffPredictor * @profile: filename of ICC profile to attach * @tile: set %TRUE to write a tiled tiff * @tile_width: %gint for tile size * @tile_height: %gint for tile size * @pyramid: set %TRUE to write an image pyramid * @squash: set %TRUE to squash 8-bit images down to 1 bit * @miniswhite: set %TRUE to write 1-bit images as MINISWHITE * @resunit: #VipsForeignTiffResunit for resolution unit * @xres: %gdouble horizontal resolution in pixels/mm * @yres: %gdouble vertical resolution in pixels/mm * @bigtiff: set %TRUE to write a BigTiff file * * Write a VIPS image to a file as TIFF. * * Use @compression to set the tiff compression. Currently jpeg, packbits, * fax4, lzw, none and deflate are supported. The default is no compression. * JPEG compression is a good lossy compressor for photographs, packbits is * good for 1-bit images, and deflate is the best lossless compression TIFF * can do. LZW has patent problems and is no longer recommended. * * Use @Q to set the JPEG compression factor. Default 75. * * Use @predictor to set the predictor for lzw and deflate compression. * * Predictor is not set by default. There are three predictor values recognised * at the moment (2007, July): 1 is no prediction, 2 is a horizontal * differencing and 3 is a floating point predictor. Refer to the libtiff * specifications for further discussion of various predictors. In short, * predictor helps to better compress image, especially in case of digital * photos or scanned images and bit depths > 8. Try it to find whether it * works for your images. * * Use @profile to give the filename of a profile to be embedded in the TIFF. * This does not affect the pixels which are written, just the way * they are tagged. You can use the special string "none" to mean * "don't attach a profile". * * If no profile is specified and the VIPS header * contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the * profile from the VIPS header will be attached. * * Set @tile to TRUE to write a tiled tiff. By default tiff are written in * strips. Use @tile_width and @tile_height to set the tile size. The defaiult * is 128 by 128. * * Set @pyramid to write the image as a set of images, one per page, of * decreasing size. * * Set @squash to make 8-bit uchar images write as 1-bit TIFFs. Values >128 * are written as white, values <=128 as black. Normally vips will write * MINISBLACK TIFFs where black is a 0 bit, but if you set @miniswhite, it * will use 0 for a white bit. Many pre-press applications only work with * images which use this sense. @miniswhite only affects one-bit images, it * does nothing for greyscale images. * * Use @resunit to override the default resolution unit. * The default * resolution unit is taken from the header field "resolution-unit" * (#VIPS_META_RESOLUTION_UNIT in C). If this field is not set, then * VIPS defaults to cm. * * Use @xres and @yres to override the default horizontal and vertical * resolutions. By default these values are taken from the VIPS image header. * libvips resolution is always in pixels per millimetre. * * Set @bigtiff to attempt to write a bigtiff. * Bigtiff is a variant of the TIFF * format that allows more than 4GB in a file. * * If @in has a field called VIPS_META_XMP_NAME ("xmp-data") it is written to * the tiff image. * * See also: vips_tiffload(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_tiffsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "tiffsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_jpegload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @shrink: %gint, shrink by this much on load * @fail: %gboolean, fail on warnings * @autorotate: %gboolean, use exif Orientation tag to rotate the image during load * * Read a JPEG file into a VIPS image. It can read most 8-bit JPEG images, * including CMYK and YCbCr. * * @shrink means shrink by this integer factor during load. Possible values * are 1, 2, 4 and 8. Shrinking during read is very much faster than * decompressing the whole image and then shrinking later. * * Setting @fail to %TRUE makes the JPEG reader fail on any warnings. * This can be useful for detecting truncated files, for example. Normally * reading these produces a warning, but no fatal error. * * Setting @autorotate to %TRUE will make the loader interpret the EXIF * Orientation field and automatically rotate the image appropriately during * load. After rotation, the Orientation tag will be removed to prevent * accidental double-rotation. * * Using @autorotate can be much slower than doing the rotate later * in processing. See vips_autorot(). * * Example: * * |[ * vips_jpegload( "fred.jpg", &out, * "shrink", 8, * "fail", TRUE, * NULL ); * ]| * * Any embedded ICC profiles are ignored: you always just get the RGB from * the file. Instead, the embedded profile will be attached to the image as * @VIPS_META_ICC_NAME ("icc-profile-data"). You need to use something like * vips_icc_import() to get CIE values from the file. * * EXIF metadata is attached as @VIPS_META_EXIF_NAME ("exif-data"), IPCT as * @VIPS_META_IPCT_NAME ("ipct-data"), and XMP as VIPS_META_XMP_NAME * ("xmp-data"). * * The int metadata item "jpeg-multiscan" is set to the result of * jpeg_has_multiple_scans(). Interlaced jpeg images need a large amount of * memory to load, so this field gives callers a chance to handle these * images differently. * * The EXIF thumbnail, if present, is attached to the image as * "jpeg-thumbnail-data". See vips_image_get_blob(). * * This function only reads the image header and does not decompress any pixel * data. Decompression only occurs when pixels are accessed. * * See also: vips_jpegload_buffer(), vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_jpegload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "jpegload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_jpegload_buffer: * @buf: memory area to load * @len: size of memory area * @out: image to write * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @shrink: %gint, shrink by this much on load * @fail: %gboolean, fail on warnings * * Read a JPEG-formatted memory block into a VIPS image. Exactly as * vips_jpegload(), but read from a memory buffer. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_jpegload(). * * Returns: 0 on success, -1 on error. */ int vips_jpegload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "jpegload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_jpegsave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @Q: %gint, quality factor * @profile: filename of ICC profile to attach * @optimize_coding: %gboolean, compute optimal Huffman coding tables * @interlace: %gboolean, write an interlaced (progressive) jpeg * @strip: %gboolean, remove all metadata from image * @no-subsample: %gboolean, disable chroma subsampling * @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block * @overshoot_deringing: %gboolean, overshoot samples with extreme values * @optimize_scans: %gboolean, split DCT coefficients into separate scans * * Write a VIPS image to a file as JPEG. * * Use @Q to set the JPEG compression factor. Default 75. * * Use @profile to give the filename of a profile to be embedded in the JPEG. * This does not affect the pixels which are written, just the way * they are tagged. You can use the special string "none" to mean * "don't attach a profile". * * If no profile is specified and the VIPS header * contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the * profile from the VIPS header will be attached. * * The image is automatically converted to RGB, Monochrome or CMYK before * saving. * * EXIF data is constructed from @VIPS_META_EXIF_NAME ("exif-data"), then * modified with any other related tags on the image before being written to * the file. * * IPCT as @VIPS_META_IPCT_NAME ("ipct-data") and XMP as VIPS_META_XMP_NAME * ("xmp-data") are coded and attached. * * If @optimize_coding is set, the Huffman tables are optimised. This is * sllightly slower and produces slightly smaller files. * * If @interlace is set, the jpeg files will be interlaced (progressive jpeg, * in jpg parlance). These files may be better for display over a slow network * conection, but need much more memory to encode and decode. * * If @strip is set, no EXIF data, IPCT data, ICC profile or XMP metadata is * written into the output file. * * If @no-subsample is set, chrominance subsampling is disabled. This will * improve quality at the cost of larger file size. Useful for high Q factors. * * If @trellis_quant is set and the version of libjpeg supports it * (e.g. mozjpeg >= 3.0), apply trellis quantisation to each 8x8 block. * Reduces file size but increases compression time. * * If @overshoot_deringing is set and the version of libjpeg supports it * (e.g. mozjpeg >= 3.0), apply overshooting to samples with extreme values * for example 0 and 255 for 8-bit. Overshooting may reduce ringing artifacts * from compression, in particular in areas where black text appears on a * white background. * * If @optimize_scans is set and the version of libjpeg supports it * (e.g. mozjpeg >= 3.0), split the spectrum of DCT coefficients into * separate scans. Reduces file size but increases compression time. * * See also: vips_jpegsave_buffer(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_jpegsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "jpegsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_jpegsave_buffer: * @in: image to save * @buf: return output buffer here * @len: return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @Q: JPEG quality factor * @profile: attach this ICC profile * @optimize_coding: compute optimal Huffman coding tables * @interlace: write an interlaced (progressive) jpeg * @strip: remove all metadata from image * @no-subsample: disable chroma subsampling * @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block * @overshoot_deringing: %gboolean, overshoot samples with extreme values * @optimize_scans: %gboolean, split DCT coefficients into separate scans * * As vips_jpegsave(), but save to a memory buffer. * * The address of the buffer is returned in @obuf, the length of the buffer in * @olen. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_jpegsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_jpegsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "jpegsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } /** * vips_jpegsave_mime: * @in: image to save * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @Q: JPEG quality factor * @profile: attach this ICC profile * @optimize_coding: compute optimal Huffman coding tables * @strip: remove all metadata from image * @no-subsample: disable chroma subsampling * @trellis_quant: %gboolean, apply trellis quantisation to each 8x8 block * @overshoot_deringing: %gboolean, overshoot samples with extreme values * @optimize_scans: %gboolean, split DCT coefficients into separate scans * * As vips_jpegsave(), but save as a mime jpeg on stdout. * * See also: vips_jpegsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_jpegsave_mime( VipsImage *in, ... ) { va_list ap; int result; va_start( ap, in ); result = vips_call_split( "jpegsave_mime", ap, in ); va_end( ap ); return( result ); } /** * vips_webpload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Read a WebP file into a VIPS image. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_webpload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "webpload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_webpload_buffer: * @buf: memory area to load * @len: size of memory area * @out: image to write * @...: %NULL-terminated list of optional named arguments * * Read a WebP-formatted memory block into a VIPS image. Exactly as * vips_webpload(), but read from a memory buffer. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_webpload() * * Returns: 0 on success, -1 on error. */ int vips_webpload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "webpload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_webpsave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @Q: quality factor * * See also: vips_webpload(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_webpsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "webpsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_webpsave_buffer: * @in: image to save * @buf: return output buffer here * @len: return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @Q: JPEG quality factor * * See also: vips_webpsave(). * * Returns: 0 on success, -1 on error. */ int vips_webpsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "webpsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } /** * vips_webpsave_mime: * @in: image to save * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @Q: quality factor * * As vips_webpsave(), but save as a mime webp on stdout. * * See also: vips_webpsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_webpsave_mime( VipsImage *in, ... ) { va_list ap; int result; va_start( ap, in ); result = vips_call_split( "webpsave_mime", ap, in ); va_end( ap ); return( result ); } /** * vips_openexrload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Read a OpenEXR file into a VIPS image. * * The reader can handle scanline and tiled OpenEXR images. It can't handle * OpenEXR colour management, image attributes, many pixel formats, anything * other than RGBA. * * This reader uses the rather limited OpenEXR C API. It should really be * redone in C++. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_openexrload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "openexrload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_openslideload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @level: load this level * @associated: load this associated image * @autocrop: crop to image bounds * * Read a virtual slide supported by the OpenSlide library into a VIPS image. * OpenSlide supports images in Aperio, Hamamatsu, MIRAX, Sakura, Trestle, * and Ventana formats. * * To facilitate zooming, virtual slide formats include multiple scaled-down * versions of the high-resolution image. These are typically called * "levels". By default, vips_openslideload() reads the highest-resolution * level (level 0). Set @level to the level number you want. * * In addition to the slide image itself, virtual slide formats sometimes * include additional images, such as a scan of the slide's barcode. * OpenSlide calls these "associated images". To read an associated image, * set @associated to the image's name. * A slide's associated images are listed in the * "slide-associated-images" metadata item. * * The output of this operator is always RGBA. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_openslideload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "openslideload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_fitsload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Read a FITS image file into a VIPS image. * * This operation can read images with up to three dimensions. Any higher * dimensions must be empty. * * It can read 8, 16 and 32-bit integer images, signed and unsigned, float and * double. * * FITS metadata is attached with the "fits-" prefix. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_fitsload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "fitsload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_fitssave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Write a VIPS image to a file in FITS format. * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_fitssave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "fitssave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_pngload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * Read a PNG file into a VIPS image. It can read all png images, including 8- * and 16-bit images, 1 and 3 channel, with and without an alpha channel. * * Any ICC profile is read and attached to the VIPS image. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_pngload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "pngload", ap, filename, out ); va_end( ap ); return( result ); } /** * vips_pngload_buffer: * @buf: memory area to load * @len: size of memory area * @out: image to write * @...: %NULL-terminated list of optional named arguments * * Read a PNG-formatted memory block into a VIPS image. It can read all png * images, including 8- and 16-bit images, 1 and 3 channel, with and without * an alpha channel. * * Any ICC profile is read and attached to the VIPS image. * * You must not free the buffer while @out is active. The * #VipsObject::postclose signal on @out is a good place to free. * * See also: vips_pngload(). * * Returns: 0 on success, -1 on error. */ int vips_pngload_buffer( void *buf, size_t len, VipsImage **out, ... ) { va_list ap; VipsBlob *blob; int result; /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, out ); result = vips_call_split( "pngload_buffer", ap, blob, out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); return( result ); } /** * vips_pngsave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @compression: compression level * @interlace: interlace image * @profile: ICC profile to embed * @filter: #VipsForeignPngFilter row filter flag(s) * * Write a VIPS image to a file as PNG. * * @compression means compress with this much effort (0 - 9). Default 6. * * Set @interlace to %TRUE to interlace the image with ADAM7 * interlacing. Beware * than an interlaced PNG can be up to 7 times slower to write than a * non-interlaced image. * * Use @profile to give the filename of a profile to be embedded in the PNG. * This does not affect the pixels which are written, just the way * they are tagged. You can use the special string "none" to mean * "don't attach a profile". * * If @profile is specified and the VIPS header * contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the * profile from the VIPS header will be attached. * * Use @filter to specify one or more filters (instead of adaptive filtering), * see #VipsForeignPngFilter. * * The image is automatically converted to RGB, RGBA, Monochrome or Mono + * alpha before saving. Images with more than one byte per band element are * saved as 16-bit PNG, others are saved as 8-bit PNG. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_pngsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "pngsave", ap, in, filename ); va_end( ap ); return( result ); } /** * vips_pngsave_buffer: * @in: image to save * @buf: return output buffer here * @len: return output length here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @compression: compression level * @interlace: interlace image * @profile: ICC profile to embed * @filter: libpng row filter flag(s) * * As vips_pngsave(), but save to a memory buffer. * * The address of the buffer is returned in @obuf, the length of the buffer in * @olen. You are responsible for freeing the buffer with g_free() when you * are done with it. * * See also: vips_pngsave(), vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_pngsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) { va_list ap; VipsArea *area; int result; area = NULL; va_start( ap, len ); result = vips_call_split( "pngsave_buffer", ap, in, &area ); va_end( ap ); if( !result && area ) { if( buf ) { *buf = area->data; area->free_fn = NULL; } if( len ) *len = area->length; vips_area_unref( area ); } return( result ); } /** * vips_matload: * @filename: file to load * @out: output image * @...: %NULL-terminated list of optional named arguments * * Read a Matlab save file into a VIPS image. * * This operation searches the save * file for the first array variable with between 1 and 3 dimensions and loads * it as an image. It will not handle complex images. It does not handle * sparse matrices. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_matload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "matload", ap, filename, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/ppm.c0000664000175000017500000003766212651663124013514 00000000000000/* Read a ppm file. * * Stephen Chan ... original code * * 21/11/00 JC * - hacked for VIPS * - reads ppm/pgm/pbm * - mmaps binary pgm/ppm * - reads all ascii formats (slowly!) * 22/11/00 JC * - oops, ascii read was broken * - does 16/32 bit ascii now as well * 24/5/01 * - im_ppm2vips_header() added * 28/11/03 JC * - better no-overshoot on tile loop * 22/5/04 * - does 16/32 bit binary too * - tiny fix for missing file close on read error * 19/8/05 * - use im_raw2vips() for binary read * 9/9/05 * - tiny cleanups * 3/11/07 * - use im_wbuffer() for bg writes * 4/2/10 * - gtkdoc * 1/5/10 * - add PFM (portable float map) support * 19/12/11 * - rework as a set of fns ready to be called from a class * 8/11/14 * - add 1 bit write * 4/6/15 * - try to support DOS files under linux ... we have to look for \r\n * linebreaks */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include "ppm.h" /* The largest number/field/whatever we can read. */ #define MAX_THING (80) static void skip_line( FILE *fp ) { while( vips__fgetc( fp ) != '\n' ) ; } static void skip_white_space( FILE *fp ) { int ch; while( isspace( ch = vips__fgetc( fp ) ) ) ; ungetc( ch, fp ); if( ch == '#' ) { skip_line( fp ); skip_white_space( fp ); } } static int read_int( FILE *fp, int *i ) { skip_white_space( fp ); if( fscanf( fp, "%d", i ) != 1 ) { vips_error( "ppm2vips", "%s", _( "bad int" ) ); return( -1 ); } return( 0 ); } static int read_float( FILE *fp, float *f ) { skip_white_space( fp ); if( fscanf( fp, "%f", f ) != 1 ) { vips_error( "ppm2vips", "%s", _( "bad float" ) ); return( -1 ); } return( 0 ); } /* ppm types. */ static char *magic_names[] = { "P1", /* pbm ... 1 band 1 bit, ascii */ "P2", /* pgm ... 1 band many bit, ascii */ "P3", /* ppm ... 3 band many bit, ascii */ "P4", /* pbm ... 1 band 1 bit, binary */ "P5", /* pgm ... 1 band 8 bit, binary */ "P6", /* ppm ... 3 band 8 bit, binary */ "PF", /* pfm ... 3 band 32 bit, binary */ "Pf" /* pfm ... 1 band 32 bit, binary */ }; static int read_header( FILE *fp, VipsImage *out, int *bits, int *ascii, int *msb_first ) { int width, height, bands; VipsBandFormat format; VipsInterpretation interpretation; int index; char buf[MAX_THING]; /* Characteristics, indexed by ppm type. */ static int lookup_bits[] = { 1, 8, 8, 1, 8, 8, 32, 32 }; static int lookup_bands[] = { 1, 1, 3, 1, 1, 3, 3, 1 }; static int lookup_ascii[] = { 1, 1, 1, 0, 0, 0, 0, 0 }; /* Read in the magic number. */ buf[0] = vips__fgetc( fp ); buf[1] = vips__fgetc( fp ); buf[2] = '\0'; for( index = 0; index < VIPS_NUMBER( magic_names ); index++ ) if( strcmp( magic_names[index], buf ) == 0 ) break; if( index == VIPS_NUMBER( magic_names ) ) { vips_error( "ppm2vips", "%s", _( "bad magic number" ) ); return( -1 ); } *bits = lookup_bits[index]; bands = lookup_bands[index]; *ascii = lookup_ascii[index]; /* Default ... can be changed below for PFM images. */ *msb_first = 0; /* Read in size. */ if( read_int( fp, &width ) || read_int( fp, &height ) ) return( -1 ); /* Read in max value / scale for >1 bit images. */ if( *bits > 1 ) { if( index == 6 || index == 7 ) { float scale; if( read_float( fp, &scale ) ) return( -1 ); /* Scale > 0 means big-endian. */ *msb_first = scale > 0; vips_image_set_double( out, "pfm-scale", VIPS_FABS( scale ) ); } else { int max_value; if( read_int( fp, &max_value ) ) return( -1 ); if( max_value > 255 ) *bits = 16; if( max_value > 65535 ) *bits = 32; } } /* For binary images, there is always exactly 1 more whitespace * character before the data starts. */ if( !*ascii && !isspace( vips__fgetc( fp ) ) ) { vips_error( "ppm2vips", "%s", _( "not whitespace before start of binary data" ) ); return( -1 ); } /* Choose a VIPS bandfmt. */ switch( *bits ) { case 1: case 8: format = VIPS_FORMAT_UCHAR; break; case 16: format = VIPS_FORMAT_USHORT; break; case 32: if( index == 6 || index == 7 ) format = VIPS_FORMAT_FLOAT; else format = VIPS_FORMAT_UINT; break; default: g_assert_not_reached(); /* Stop compiler warnings. */ format = VIPS_FORMAT_UCHAR; } if( bands == 1 ) { if( format == VIPS_FORMAT_USHORT ) interpretation = VIPS_INTERPRETATION_GREY16; else interpretation = VIPS_INTERPRETATION_B_W; } else { if( format == VIPS_FORMAT_USHORT ) interpretation = VIPS_INTERPRETATION_RGB16; else if( format == VIPS_FORMAT_UINT ) interpretation = VIPS_INTERPRETATION_RGB; else interpretation = VIPS_INTERPRETATION_sRGB; } vips_image_init_fields( out, width, height, bands, format, VIPS_CODING_NONE, interpretation, 1.0, 1.0 ); return( 0 ); } /* Read a ppm/pgm file using mmap(). */ static int read_mmap( FILE *fp, const char *filename, int msb_first, VipsImage *out ) { const guint64 header_offset = ftell( fp ); VipsImage *x = vips_image_new(); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( x ), 3 ); if( vips_rawload( filename, &t[0], out->Xsize, out->Ysize, VIPS_IMAGE_SIZEOF_PEL( out ), "offset", header_offset, NULL ) || vips_copy( t[0], &t[1], "bands", out->Bands, "format", out->BandFmt, "coding", out->Coding, NULL ) || vips__byteswap_bool( t[1], &t[2], vips_amiMSBfirst() != msb_first ) || vips_image_write( t[2], out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /* Read an ascii ppm/pgm file. */ static int read_ascii( FILE *fp, VipsImage *out ) { int x, y; VipsPel *buf; if( !(buf = VIPS_ARRAY( out, VIPS_IMAGE_SIZEOF_LINE( out ), VipsPel )) ) return( -1 ); for( y = 0; y < out->Ysize; y++ ) { for( x = 0; x < out->Xsize * out->Bands; x++ ) { int val; if( read_int( fp, &val ) ) return( -1 ); switch( out->BandFmt ) { case VIPS_FORMAT_UCHAR: buf[x] = VIPS_CLIP( 0, val, 255 ); break; case VIPS_FORMAT_USHORT: ((unsigned short *) buf)[x] = VIPS_CLIP( 0, val, 65535 ); break; case VIPS_FORMAT_UINT: ((unsigned int *) buf)[x] = val; break; default: g_assert_not_reached(); } } if( vips_image_write_line( out, y, buf ) ) return( -1 ); } return( 0 ); } /* Read an ascii 1 bit file. */ static int read_1bit_ascii( FILE *fp, VipsImage *out ) { int x, y; VipsPel *buf; if( !(buf = VIPS_ARRAY( out, VIPS_IMAGE_SIZEOF_LINE( out ), VipsPel )) ) return( -1 ); for( y = 0; y < out->Ysize; y++ ) { for( x = 0; x < out->Xsize * out->Bands; x++ ) { int val; if( read_int( fp, &val ) ) return( -1 ); if( val ) buf[x] = 0; else buf[x] = 255; } if( vips_image_write_line( out, y, buf ) ) return( -1 ); } return( 0 ); } /* Read a 1 bit binary file. */ static int read_1bit_binary( FILE *fp, VipsImage *out ) { int x, y; int bits; VipsPel *buf; if( !(buf = VIPS_ARRAY( out, VIPS_IMAGE_SIZEOF_LINE( out ), VipsPel )) ) return( -1 ); bits = fgetc( fp ); for( y = 0; y < out->Ysize; y++ ) { for( x = 0; x < out->Xsize * out->Bands; x++ ) { buf[x] = (bits & 128) ? 0 : 255; bits <<= 1; if( (x & 7) == 7 ) bits = fgetc( fp ); } /* Skip any unaligned bits at end of line. */ if( (x & 7) != 0 ) bits = fgetc( fp ); if( vips_image_write_line( out, y, buf ) ) return( -1 ); } return( 0 ); } static int parse_ppm( FILE *fp, const char *filename, VipsImage *out ) { int bits; int ascii; int msb_first; if( read_header( fp, out, &bits, &ascii, &msb_first ) ) return( -1 ); /* What sort of read are we doing? */ if( !ascii && bits >= 8 ) return( read_mmap( fp, filename, msb_first, out ) ); else if( !ascii && bits == 1 ) return( read_1bit_binary( fp, out ) ); else if( ascii && bits == 1 ) return( read_1bit_ascii( fp, out ) ); else return( read_ascii( fp, out ) ); } int vips__ppm_header( const char *filename, VipsImage *out ) { FILE *fp; int bits; int ascii; int msb_first; if( !(fp = vips__file_open_read( filename, NULL, FALSE )) ) return( -1 ); if( read_header( fp, out, &bits, &ascii, &msb_first ) ) { fclose( fp ); return( -1 ); } fclose( fp ); return( 0 ); } /* Can this PPM file be read with a mmap? */ static int isppmmmap( const char *filename ) { VipsImage *im; FILE *fp; int bits; int ascii; int msb_first; if( !(fp = vips__file_open_read( filename, NULL, FALSE )) ) return( -1 ); im = vips_image_new(); if( read_header( fp, im, &bits, &ascii, &msb_first ) ) { g_object_unref( im ); fclose( fp ); return( 0 ); } g_object_unref( im ); fclose( fp ); return( !ascii && bits >= 8 ); } int vips__ppm_load( const char *filename, VipsImage *out ) { FILE *fp; /* Note that we open in binary mode. If this is a binary PPM, we need * to be able to mmap it. */ if( !(fp = vips__file_open_read( filename, NULL, FALSE )) ) return( -1 ); if( parse_ppm( fp, filename, out ) ) { fclose( fp ); return( -1 ); } fclose( fp ); return( 0 ); } int vips__ppm_isppm( const char *filename ) { VipsPel buf[3]; if( vips__get_bytes( filename, buf, 2 ) ) { int i; buf[2] = '\0'; for( i = 0; i < VIPS_NUMBER( magic_names ); i++ ) if( strcmp( (char *) buf, magic_names[i] ) == 0 ) return( TRUE ); } return( 0 ); } /* ppm flags function. */ VipsForeignFlags vips__ppm_flags( const char *filename ) { VipsForeignFlags flags; flags = 0; if( isppmmmap( filename ) ) flags |= VIPS_FOREIGN_PARTIAL; return( flags ); } const char *vips__ppm_suffs[] = { ".ppm", ".pgm", ".pbm", ".pfm", NULL }; struct _Write; typedef int (*write_fn)( struct _Write *write, VipsPel *p ); /* What we track during a PPM write. */ typedef struct _Write { VipsImage *in; FILE *fp; char *name; write_fn fn; } Write; static void write_destroy( Write *write ) { VIPS_FREEF( fclose, write->fp ); VIPS_FREE( write->name ); vips_free( write ); } static Write * write_new( VipsImage *in, const char *name ) { Write *write; if( !(write = VIPS_NEW( NULL, Write )) ) return( NULL ); write->in = in; write->name = vips_strdup( NULL, name ); write->fp = vips__file_open_write( name, FALSE ); if( !write->name || !write->fp ) { write_destroy( write ); return( NULL ); } return( write ); } static int write_ppm_line_ascii( Write *write, VipsPel *p ) { const int sk = VIPS_IMAGE_SIZEOF_PEL( write->in ); int x, k; for( x = 0; x < write->in->Xsize; x++ ) { for( k = 0; k < write->in->Bands; k++ ) { switch( write->in->BandFmt ) { case VIPS_FORMAT_UCHAR: fprintf( write->fp, "%d ", p[k] ); break; case VIPS_FORMAT_USHORT: fprintf( write->fp, "%d ", ((unsigned short *) p)[k] ); break; case VIPS_FORMAT_UINT: fprintf( write->fp, "%d ", ((unsigned int *) p)[k] ); break; default: g_assert_not_reached(); } } p += sk; } if( !fprintf( write->fp, "\n" ) ) { vips_error_system( errno, "vips2ppm", "%s", _( "write error" ) ); return( -1 ); } return( 0 ); } static int write_ppm_line_ascii_squash( Write *write, VipsPel *p ) { int x; for( x = 0; x < write->in->Xsize; x++ ) fprintf( write->fp, "%d ", p[x] ? 0 : 1 ); if( !fprintf( write->fp, "\n" ) ) { vips_error_system( errno, "vips2ppm", "%s", _( "write error" ) ); return( -1 ); } return( 0 ); } static int write_ppm_line_binary( Write *write, VipsPel *p ) { if( vips__file_write( p, VIPS_IMAGE_SIZEOF_LINE( write->in ), 1, write->fp ) ) return( -1 ); return( 0 ); } static int write_ppm_line_binary_squash( Write *write, VipsPel *p ) { int x; int bits; int n_bits; bits = 0; n_bits = 0; for( x = 0; x < write->in->Xsize; x++ ) { bits <<= 1; n_bits += 1; bits |= p[x] ? 0 : 1; if( n_bits == 8 ) { if( fputc( bits, write->fp ) == EOF ) { vips_error_system( errno, "vips2ppm", "%s", _( "write error" ) ); return( -1 ); } bits = 0; n_bits = 0; } } /* Flush any remaining bits in this line. */ if( n_bits ) { if( fputc( bits, write->fp ) == EOF ) { vips_error_system( errno, "vips2ppm", "%s", _( "write error" ) ); return( -1 ); } } return( 0 ); } static int write_ppm_block( VipsRegion *region, VipsRect *area, void *a ) { Write *write = (Write *) a; int i; for( i = 0; i < area->height; i++ ) { VipsPel *p = VIPS_REGION_ADDR( region, 0, area->top + i ); if( write->fn( write, p ) ) return( -1 ); } return( 0 ); } static int write_ppm( Write *write, gboolean ascii, gboolean squash ) { VipsImage *in = write->in; char *magic; time_t timebuf; magic = "unset"; if( in->BandFmt == VIPS_FORMAT_FLOAT && in->Bands == 3 ) magic = "PF"; else if( in->BandFmt == VIPS_FORMAT_FLOAT && in->Bands == 1 ) magic = "Pf"; else if( in->Bands == 1 && ascii && squash ) magic = "P1"; else if( in->Bands == 1 && ascii ) magic = "P2"; else if( in->Bands == 1 && !ascii && squash ) magic = "P4"; else if( in->Bands == 1 && !ascii ) magic = "P5"; else if( in->Bands == 3 && ascii ) magic = "P3"; else if( in->Bands == 3 && !ascii ) magic = "P6"; else g_assert_not_reached(); fprintf( write->fp, "%s\n", magic ); time( &timebuf ); fprintf( write->fp, "#vips2ppm - %s\n", ctime( &timebuf ) ); fprintf( write->fp, "%d %d\n", in->Xsize, in->Ysize ); if( !squash ) switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: fprintf( write->fp, "%d\n", UCHAR_MAX ); break; case VIPS_FORMAT_USHORT: fprintf( write->fp, "%d\n", USHRT_MAX ); break; case VIPS_FORMAT_UINT: fprintf( write->fp, "%d\n", UINT_MAX ); break; case VIPS_FORMAT_FLOAT: { double scale; if( vips_image_get_double( in, "pfm-scale", &scale ) ) scale = 1; if( !vips_amiMSBfirst() ) scale *= -1; fprintf( write->fp, "%g\n", scale ); } break; default: g_assert_not_reached(); } if( squash ) write->fn = ascii ? write_ppm_line_ascii_squash : write_ppm_line_binary_squash; else write->fn = ascii ? write_ppm_line_ascii : write_ppm_line_binary; if( vips_sink_disc( write->in, write_ppm_block, write ) ) return( -1 ); return( 0 ); } int vips__ppm_save( VipsImage *in, const char *filename, gboolean ascii, gboolean squash ) { Write *write; if( vips_check_uintorf( "vips2ppm", in ) || vips_check_bands_1or3( "vips2ppm", in ) || vips_check_uncoded( "vips2ppm", in ) || vips_image_pio_input( in ) ) return( -1 ); if( ascii && in->BandFmt == VIPS_FORMAT_FLOAT ) { vips_warn( "vips2ppm", "%s", _( "float images must be binary -- " "disabling ascii" ) ); ascii = FALSE; } /* One bit images must come from a 8 bit, one band source. */ if( squash && (in->Bands != 1 || in->BandFmt != VIPS_FORMAT_UCHAR) ) { vips_warn( "vips2ppm", "%s", _( "can only squash 1 band uchar images -- " "disabling squash" ) ); squash = FALSE; } if( !(write = write_new( in, filename )) ) return( -1 ); if( write_ppm( write, ascii, squash ) ) { write_destroy( write ); return( -1 ); } write_destroy( write ); return( 0 ); } vips-8.2.2/libvips/foreign/openslide2vips.h0000664000175000017500000000274712530402247015660 00000000000000/* common defs for jpeg read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_OPENSLIDE2VIPS_H #define VIPS_OPENSLIDE2VIPS_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips__openslide_isslide( const char *filename ); int vips__openslide_read_header( const char *filename, VipsImage *out, int level, gboolean autocrop, char *associated ); int vips__openslide_read( const char *filename, VipsImage *out, int level, gboolean autocrop ); int vips__openslide_read_associated( const char *filename, VipsImage *out, const char *associated ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_OPENSLIDE2VIPS_H*/ vips-8.2.2/libvips/foreign/csvsave.c0000664000175000017500000000751112530402247014351 00000000000000/* save to csv * * 2/12/11 * - wrap a class around the csv writer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "csv.h" typedef struct _VipsForeignSaveCsv { VipsForeignSave parent_object; /* Filename for save. */ char *filename; const char *separator; } VipsForeignSaveCsv; typedef VipsForeignSaveClass VipsForeignSaveCsvClass; G_DEFINE_TYPE( VipsForeignSaveCsv, vips_foreign_save_csv, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_csv_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveCsv *csv = (VipsForeignSaveCsv *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_csv_parent_class )-> build( object ) ) return( -1 ); if( vips__csv_write( save->ready, csv->filename, csv->separator ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_csv_class_init( VipsForeignSaveCsvClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "csvsave"; object_class->description = _( "save image to csv file" ); object_class->build = vips_foreign_save_csv_build; foreign_class->suffs = vips__foreign_csv_suffs; save_class->saveable = VIPS_SAVEABLE_MONO; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveCsv, filename ), NULL ); VIPS_ARG_STRING( class, "separator", 13, _( "Separator" ), _( "Separator characters" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveCsv, separator ), "\t" ); } static void vips_foreign_save_csv_init( VipsForeignSaveCsv *csv ) { csv->separator = g_strdup( "\t" ); } /** * vips_csvsave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @separator: separator string * * Writes the pixels in @in to the @filename as CSV (comma-separated values). * The image is written * one line of text per scanline. Complex numbers are written as * "(real,imaginary)" and will need extra parsing I guess. Only the first band * is written. * * @separator gives the string to use to separate numbers in the output. * The default is "\\t" (tab). * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_csvsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "csvsave", ap, in, filename ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/webp2vips.c0000664000175000017500000001425712620616171014630 00000000000000/* read with libwebp * * 6/8/13 * - from png2vips.c * 24/2/14 * - oops, buffer path was broken, thanks Lovell */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* */ #define DEBUG_VERBOSE #define DEBUG #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_LIBWEBP #include #include #include #include #include #include "webp.h" /* How many bytes do we need to read from the start of the file to be able to * validate the header? * * This doesn't seem to be documented anywhere :-( guess a value. */ #define MINIMAL_HEADER (100) /* What we track during a read. */ typedef struct { /* File source. */ char *filename; /* Memory source. We use gint64 rather than size_t since we use * vips_file_length() and vips__mmap() for file sources. */ const void *data; gint64 length; /* If we are opening a file object, the fd. */ int fd; /* Decoder config. */ WebPDecoderConfig config; /* Incremental decoder state. */ WebPIDecoder *idec; } Read; int vips__iswebp_buffer( const void *buf, size_t len ) { if( len >= MINIMAL_HEADER && WebPGetInfo( buf, MINIMAL_HEADER, NULL, NULL ) ) return( 1 ); return( 0 ); } int vips__iswebp( const char *filename ) { unsigned char header[MINIMAL_HEADER]; if( vips__get_bytes( filename, header, MINIMAL_HEADER ) && vips__iswebp_buffer( header, MINIMAL_HEADER ) ) return( 1 ); return( 0 ); } static int read_free( Read *read ) { VIPS_FREEF( WebPIDelete, read->idec ); WebPFreeDecBuffer( &read->config.output ); if( read->fd > 0 && read->data && read->length > 0 ) { vips__munmap( read->data, read->length ); read->data = NULL; read->length = 0; } VIPS_FREEF( vips_tracked_close, read->fd ); VIPS_FREE( read->filename ); VIPS_FREE( read ); return( 0 ); } static Read * read_new( const char *filename, const void *data, size_t length ) { Read *read; if( !(read = VIPS_NEW( NULL, Read )) ) return( NULL ); read->filename = g_strdup( filename ); read->data = data; read->length = length; read->fd = 0; read->idec = NULL; if( read->filename ) { /* libwebp makes streaming from a file source very hard. We * have to read to a full memory buffer, then copy to out. * * mmap the input file, it's slightly quicker. */ if( (read->fd = vips__open_image_read( read->filename )) < 0 || (read->length = vips_file_length( read->fd )) < 0 || !(read->data = vips__mmap( read->fd, FALSE, read->length, 0 )) ) { read_free( read ); return( NULL ); } } WebPInitDecoderConfig( &read->config ); if( WebPGetFeatures( read->data, MINIMAL_HEADER, &read->config.input ) != VP8_STATUS_OK ) { read_free( read ); return( NULL ); } if( read->config.input.has_alpha ) read->config.output.colorspace = MODE_RGBA; else read->config.output.colorspace = MODE_RGB; read->config.options.use_threads = TRUE; return( read ); } static int read_header( Read *read, VipsImage *out ) { vips_image_init_fields( out, read->config.input.width, read->config.input.height, read->config.input.has_alpha ? 4 : 3, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); return( 0 ); } int vips__webp_read_file_header( const char *filename, VipsImage *out ) { Read *read; if( !(read = read_new( filename, NULL, 0 )) ) { vips_error( "webp2vips", _( "unable to open \"%s\"" ), filename ); return( -1 ); } if( read_header( read, out ) ) return( -1 ); read_free( read ); return( 0 ); } typedef uint8_t *(*webp_decoder)( const uint8_t* data, size_t data_size, uint8_t* output_buffer, size_t output_buffer_size, int output_stride ); static int read_image( Read *read, VipsImage *out ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 3 ); webp_decoder decoder; t[0] = vips_image_new_memory(); if( read_header( read, t[0] ) ) return( -1 ); if( vips_image_write_prepare( t[0] ) ) return( -1 ); if( t[0]->Bands == 3 ) decoder = WebPDecodeRGBInto; else decoder = WebPDecodeRGBAInto; if( !decoder( (uint8_t *) read->data, read->length, VIPS_IMAGE_ADDR( t[0], 0, 0 ), VIPS_IMAGE_SIZEOF_IMAGE( t[0] ), VIPS_IMAGE_SIZEOF_LINE( t[0] ) ) ) { vips_error( "webp2vips", "%s", _( "unable to read pixels" ) ); return( -1 ); } if( vips_image_write( t[0], out ) ) return( -1 ); return( 0 ); } int vips__webp_read_file( const char *filename, VipsImage *out ) { Read *read; if( !(read = read_new( filename, NULL, 0 )) ) { vips_error( "webp2vips", _( "unable to open \"%s\"" ), filename ); return( -1 ); } if( read_image( read, out ) ) return( -1 ); read_free( read ); return( 0 ); } int vips__webp_read_buffer_header( const void *buf, size_t len, VipsImage *out ) { Read *read; if( !(read = read_new( NULL, buf, len )) ) { vips_error( "webp2vips", "%s", _( "unable to open buffer" ) ); return( -1 ); } if( read_header( read, out ) ) return( -1 ); read_free( read ); return( 0 ); } int vips__webp_read_buffer( const void *buf, size_t len, VipsImage *out ) { Read *read; if( !(read = read_new( NULL, buf, len )) ) { vips_error( "webp2vips", "%s", _( "unable to open buffer" ) ); return( -1 ); } if( read_image( read, out ) ) return( -1 ); read_free( read ); return( 0 ); } #endif /*HAVE_LIBWEBP*/ vips-8.2.2/libvips/foreign/pngload.c0000664000175000017500000001262312645527170014335 00000000000000/* load png from a file * * 5/12/11 * - from tiffload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_PNG #include "vipspng.h" typedef struct _VipsForeignLoadPng { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadPng; typedef VipsForeignLoadClass VipsForeignLoadPngClass; G_DEFINE_TYPE( VipsForeignLoadPng, vips_foreign_load_png, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_png_get_flags_filename( const char *filename ) { VipsForeignFlags flags; flags = 0; if( vips__png_isinterlaced( filename ) ) flags |= VIPS_FOREIGN_PARTIAL; else flags |= VIPS_FOREIGN_SEQUENTIAL; return( flags ); } static VipsForeignFlags vips_foreign_load_png_get_flags( VipsForeignLoad *load ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; return( vips_foreign_load_png_get_flags_filename( png->filename ) ); } static int vips_foreign_load_png_header( VipsForeignLoad *load ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; if( vips__png_header( png->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, png->filename ); return( 0 ); } static int vips_foreign_load_png_load( VipsForeignLoad *load ) { VipsForeignLoadPng *png = (VipsForeignLoadPng *) load; if( vips__png_read( png->filename, load->real, load->access == VIPS_ACCESS_SEQUENTIAL ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_png_class_init( VipsForeignLoadPngClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngload"; object_class->description = _( "load png from file" ); foreign_class->suffs = vips__png_suffs; /* We are fast at is_a(), so high priority. */ foreign_class->priority = 200; load_class->is_a = vips__png_ispng; load_class->get_flags_filename = vips_foreign_load_png_get_flags_filename; load_class->get_flags = vips_foreign_load_png_get_flags; load_class->header = vips_foreign_load_png_header; load_class->load = vips_foreign_load_png_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPng, filename ), NULL ); } static void vips_foreign_load_png_init( VipsForeignLoadPng *png ) { } typedef struct _VipsForeignLoadPngBuffer { VipsForeignLoad parent_object; /* Load from a buffer. */ VipsArea *buf; } VipsForeignLoadPngBuffer; typedef VipsForeignLoadClass VipsForeignLoadPngBufferClass; G_DEFINE_TYPE( VipsForeignLoadPngBuffer, vips_foreign_load_png_buffer, VIPS_TYPE_FOREIGN_LOAD ); static int vips_foreign_load_png_buffer_header( VipsForeignLoad *load ) { VipsForeignLoadPngBuffer *png = (VipsForeignLoadPngBuffer *) load; if( vips__png_header_buffer( png->buf->data, png->buf->length, load->out ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_png_buffer_load( VipsForeignLoad *load ) { VipsForeignLoadPngBuffer *png = (VipsForeignLoadPngBuffer *) load; if( vips__png_read_buffer( png->buf->data, png->buf->length, load->real, load->access == VIPS_ACCESS_SEQUENTIAL ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_png_buffer_class_init( VipsForeignLoadPngBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngload_buffer"; object_class->description = _( "load png from buffer" ); load_class->is_a_buffer = vips__png_ispng_buffer; load_class->header = vips_foreign_load_png_buffer_header; load_class->load = vips_foreign_load_png_buffer_load; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPngBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_png_buffer_init( VipsForeignLoadPngBuffer *png ) { } #endif /*HAVE_PNG*/ vips-8.2.2/libvips/foreign/dbh.h0000664000175000017500000000777412530402247013454 00000000000000/* * * (c) Copyright, 1986-1991 * Biodynamics Research Unit * Mayo Foundation * * dbh.h * * * database sub-definitions */ /* * * The previous-generation header for Analyze images. Although (c) Mayo * Foundation, it has been in the public domain for many years. * * Analyze images have a 348 byte header stored in a file with a .hdr suffix, * and a corresponding .img file containing just the pixel data. * */ struct header_key /* header_key */ { /* off + size*/ int sizeof_hdr; /* 0 + 4 */ char data_type[10]; /* 4 + 10 */ char db_name[18]; /* 14 + 18 */ int extents; /* 32 + 4 */ short int session_error; /* 36 + 2 */ char regular; /* 38 + 1 */ char hkey_un0; /* 39 + 1 */ }; /* total=40 */ struct image_dimension /* image_dimension */ { /* off + size*/ short int dim[8]; /* 0 + 16 */ char vox_units[4]; /* 16 + 4 */ char cal_units[8]; /* 20 + 4 */ short int unused1; /* 24 + 2 */ short int datatype; /* 30 + 2 */ short int bitpix; /* 32 + 2 */ short int dim_un0; /* 34 + 2 */ float pixdim[8]; /* 36 + 32 */ /* pixdim[] specifies the voxel dimensions: pixdim[1] - voxel width pixdim[2] - voxel height pixdim[3] - interslice distance ..etc */ float vox_offset; /* 68 + 4 */ float funused1; /* 72 + 4 */ float funused2; /* 76 + 4 */ float funused3; /* 80 + 4 */ float cal_max; /* 84 + 4 */ float cal_min; /* 88 + 4 */ int compressed; /* 92 + 4 */ int verified; /* 96 + 4 */ int glmax, glmin; /* 100 + 8 */ }; struct data_history /* data_history */ { /* off + size*/ char descrip[80]; /* 0 + 80 */ char aux_file[24]; /* 80 + 24 */ char orient; /* 104 + 1 */ char originator[10]; /* 105 + 10 */ char generated[10]; /* 115 + 10 */ char scannum[10]; /* 125 + 10 */ char patient_id[10]; /* 135 + 10 */ char exp_date[10]; /* 145 + 10 */ char exp_time[10]; /* 155 + 10 */ char hist_un0[3]; /* 165 + 3 */ int views; /* 168 + 4 */ int vols_added; /* 172 + 4 */ int start_field; /* 176 + 4 */ int field_skip; /* 180 + 4 */ int omax,omin; /* 184 + 8 */ int smax,smin; /* 192 + 8 */ }; /* total=200 */ struct dsr /* dsr */ { /* off + size*/ struct header_key hk; /* 0 + 40 */ struct image_dimension dime; /* 40 + 108 */ struct data_history hist; /* 148 + 200 */ }; /* total=348 */ /* Acceptable values for hdr.dime.datatype */ /* * commented this one out: we don't use it, and dirent.h defines this on some * platforms. * #define DT_UNKNOWN 0 */ #define DT_BINARY 1 #define DT_UNSIGNED_CHAR 2 #define DT_SIGNED_SHORT 4 #define DT_SIGNED_INT 8 #define DT_FLOAT 16 #define DT_COMPLEX 32 #define DT_DOUBLE 64 #define DT_RGB 128 vips-8.2.2/libvips/foreign/matlab.c0000664000175000017500000001550112651710276014145 00000000000000/* Read matlab save files with libmatio * * 4/8/09 * - transpose on load, assemble planes into bands (thanks Mikhail) * 20/12/11 * - reworked as some fns ready for new-style classes * 21/8/14 * - swap width/height * - set interpretation to rgb16 etc. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Remaining issues: + it will not do complex images + it will not handle sparse matricies + it loads the first variable in the file with between 1 and 3 dimensions, is this sensible behaviour? + load only, no save */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_MATIO #include #include #include #include #include #include #include "matlab.h" /* What we track during a Mat-file read. */ typedef struct { char *filename; VipsImage *out; mat_t *mat; matvar_t *var; } Read; static void read_destroy( Read *read ) { VIPS_FREE( read->filename ); VIPS_FREEF( Mat_VarFree, read->var ); VIPS_FREEF( Mat_Close, read->mat ); vips_free( read ); } static Read * read_new( const char *filename, VipsImage *out ) { Read *read; if( !(read = VIPS_NEW( NULL, Read )) ) return( NULL ); read->filename = vips_strdup( NULL, filename ); read->out = out; read->mat = NULL; read->var = NULL; if( !(read->mat = Mat_Open( filename, MAT_ACC_RDONLY )) ) { vips_error( "mat2vips", _( "unable to open \"%s\"" ), filename ); read_destroy( read ); return( NULL ); } for(;;) { if( !(read->var = Mat_VarReadNextInfo( read->mat )) ) { vips_error( "mat2vips", _( "no matrix variables in \"%s\"" ), filename ); read_destroy( read ); return( NULL ); } #ifdef DEBUG printf( "mat2vips: seen:\n" ); printf( "var->name == %s\n", read->var->name ); printf( "var->class_type == %d\n", read->var->class_type ); printf( "var->rank == %d\n", read->var->rank ); #endif /*DEBUG*/ /* Vector to colour image is OK for us. */ if( read->var->rank >= 1 && read->var->rank <= 3 ) break; VIPS_FREEF( Mat_VarFree, read->var ); } return( read ); } /* Matlab classes -> VIPS band formats. */ static int mat2vips_formats[][2] = { { MAT_C_UINT8, VIPS_FORMAT_UCHAR }, { MAT_C_INT8, VIPS_FORMAT_CHAR }, { MAT_C_UINT16, VIPS_FORMAT_USHORT }, { MAT_C_INT16, VIPS_FORMAT_SHORT }, { MAT_C_UINT32, VIPS_FORMAT_UINT }, { MAT_C_INT32, VIPS_FORMAT_INT }, { MAT_C_SINGLE, VIPS_FORMAT_FLOAT }, { MAT_C_DOUBLE, VIPS_FORMAT_DOUBLE } }; /* Pick an interpretation. */ static VipsInterpretation mat2vips_pick_interpretation( int bands, VipsBandFormat format ) { if( bands == 3 && vips_band_format_is8bit( format ) ) return( VIPS_INTERPRETATION_sRGB ); if( bands == 3 && (format == VIPS_FORMAT_USHORT || format == VIPS_FORMAT_SHORT) ) return( VIPS_INTERPRETATION_RGB16 ); if( bands == 1 && (format == VIPS_FORMAT_USHORT || format == VIPS_FORMAT_SHORT) ) return( VIPS_INTERPRETATION_GREY16 ); if( bands > 1 ) return( VIPS_INTERPRETATION_MULTIBAND ); return( VIPS_INTERPRETATION_MULTIBAND ); } static int mat2vips_get_header( matvar_t *var, VipsImage *im ) { int width, height, bands; VipsBandFormat format; VipsInterpretation interpretation; int i; width = 1; bands = 1; switch( var->rank ) { case 3: bands = var->dims[2]; case 2: width = var->dims[1]; case 1: height = var->dims[0]; break; default: vips_error( "mat2vips", _( "unsupported rank %d\n" ), var->rank ); return( -1 ); } for( i = 0; i < VIPS_NUMBER( mat2vips_formats ); i++ ) if( mat2vips_formats[i][0] == var->class_type ) break; if( i == VIPS_NUMBER( mat2vips_formats ) ) { vips_error( "mat2vips", _( "unsupported class type %d\n" ), var->class_type ); return( -1 ); } format = mat2vips_formats[i][1]; interpretation = mat2vips_pick_interpretation( bands, format ); vips_image_init_fields( im, width, height, bands, format, VIPS_CODING_NONE, interpretation, 1.0, 1.0 ); return( 0 ); } int vips__mat_header( const char *filename, VipsImage *out ) { Read *read; #ifdef DEBUG printf( "mat2vips_header: reading \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, out )) ) return( -1 ); if( mat2vips_get_header( read->var, read->out ) ) { read_destroy( read ); return( -1 ); } read_destroy( read ); return( 0 ); } static int mat2vips_get_data( mat_t *mat, matvar_t *var, VipsImage *im ) { int y; VipsPel *buffer; const int es = VIPS_IMAGE_SIZEOF_ELEMENT( im ); /* Matlab images are plane-separate, so we have to assemble bands in * image-size chunks. */ const guint64 is = es * VIPS_IMAGE_N_PELS( im ); if( Mat_VarReadDataAll( mat, var ) ) { vips_error( "mat2vips", "%s", _( "Mat_VarReadDataAll failed" ) ); return( -1 ); } /* Matlab images are in columns, so we have to transpose into * scanlines with this buffer. */ if( !(buffer = VIPS_ARRAY( im, VIPS_IMAGE_SIZEOF_LINE( im ), VipsPel )) ) return( -1 ); for( y = 0; y < im->Ysize; y++ ) { const VipsPel *p = var->data + y * es; int x; VipsPel *q; q = buffer; for( x = 0; x < im->Xsize; x++ ) { int b; for( b = 0; b < im->Bands; b++ ) { const VipsPel *p2 = p + b * is; int z; for( z = 0; z < es; z++ ) q[z] = p2[z]; q += es; } p += es * im->Ysize; } if( vips_image_write_line( im, y, buffer ) ) return( -1 ); } return( 0 ); } int vips__mat_load( const char *filename, VipsImage *out ) { Read *read; #ifdef DEBUG printf( "mat2vips: reading \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, out )) ) return( -1 ); if( mat2vips_get_header( read->var, read->out ) || mat2vips_get_data( read->mat, read->var, read->out ) ) { read_destroy( read ); return( -1 ); } read_destroy( read ); return( 0 ); } int vips__mat_ismat( const char *filename ) { mat_t *mat; vips_error_freeze(); mat = Mat_Open( filename, MAT_ACC_RDONLY ); Mat_Close( mat ); vips_error_thaw(); return( mat != NULL ); } const char *vips__mat_suffs[] = { ".mat", NULL }; #endif /*HAVE_MATIO*/ vips-8.2.2/libvips/foreign/webpload.c0000664000175000017500000001472512645526615014516 00000000000000/* load webp images * * 6/8/13 * - from pngload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_LIBWEBP #include #include #include "webp.h" typedef struct _VipsForeignLoadWebp { VipsForeignLoad parent_object; } VipsForeignLoadWebp; typedef VipsForeignLoadClass VipsForeignLoadWebpClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadWebp, vips_foreign_load_webp, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_webp_get_flags( VipsForeignLoad *load ) { return( 0 ); } static int vips_foreign_load_webp_build( VipsObject *object ) { if( VIPS_OBJECT_CLASS( vips_foreign_load_webp_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_webp_class_init( VipsForeignLoadWebpClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpload_base"; object_class->description = _( "load webp" ); object_class->build = vips_foreign_load_webp_build; load_class->get_flags = vips_foreign_load_webp_get_flags; } static void vips_foreign_load_webp_init( VipsForeignLoadWebp *webp ) { } typedef struct _VipsForeignLoadWebpFile { VipsForeignLoadWebp parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadWebpFile; typedef VipsForeignLoadWebpClass VipsForeignLoadWebpFileClass; G_DEFINE_TYPE( VipsForeignLoadWebpFile, vips_foreign_load_webp_file, vips_foreign_load_webp_get_type() ); static VipsForeignFlags vips_foreign_load_webp_file_get_flags_filename( const char *filename ) { return( 0 ); } static gboolean vips_foreign_load_webp_file_is_a( const char *filename ) { return( vips__iswebp( filename ) ); } static int vips_foreign_load_webp_file_header( VipsForeignLoad *load ) { VipsForeignLoadWebpFile *file = (VipsForeignLoadWebpFile *) load; if( vips__webp_read_file_header( file->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, file->filename ); return( 0 ); } static int vips_foreign_load_webp_file_load( VipsForeignLoad *load ) { VipsForeignLoadWebpFile *file = (VipsForeignLoadWebpFile *) load; if( vips__webp_read_file( file->filename, load->real ) ) return( -1 ); return( 0 ); } const char *vips__webp_suffs[] = { ".webp", NULL }; static void vips_foreign_load_webp_file_class_init( VipsForeignLoadWebpFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpload"; object_class->description = _( "load webp from file" ); foreign_class->suffs = vips__webp_suffs; load_class->get_flags_filename = vips_foreign_load_webp_file_get_flags_filename; load_class->is_a = vips_foreign_load_webp_file_is_a; load_class->header = vips_foreign_load_webp_file_header; load_class->load = vips_foreign_load_webp_file_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadWebpFile, filename ), NULL ); } static void vips_foreign_load_webp_file_init( VipsForeignLoadWebpFile *file ) { } typedef struct _VipsForeignLoadWebpBuffer { VipsForeignLoadWebp parent_object; /* Load from a buffer. */ VipsArea *buf; } VipsForeignLoadWebpBuffer; typedef VipsForeignLoadWebpClass VipsForeignLoadWebpBufferClass; G_DEFINE_TYPE( VipsForeignLoadWebpBuffer, vips_foreign_load_webp_buffer, vips_foreign_load_webp_get_type() ); static int vips_foreign_load_webp_buffer_header( VipsForeignLoad *load ) { VipsForeignLoadWebpBuffer *buffer = (VipsForeignLoadWebpBuffer *) load; if( vips__webp_read_buffer_header( buffer->buf->data, buffer->buf->length, load->out ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_webp_buffer_load( VipsForeignLoad *load ) { VipsForeignLoadWebpBuffer *buffer = (VipsForeignLoadWebpBuffer *) load; if( vips__webp_read_buffer( buffer->buf->data, buffer->buf->length, load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_webp_buffer_class_init( VipsForeignLoadWebpBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpload_buffer"; object_class->description = _( "load webp from buffer" ); /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; load_class->is_a_buffer = vips__iswebp_buffer; load_class->header = vips_foreign_load_webp_buffer_header; load_class->load = vips_foreign_load_webp_buffer_load; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadWebpBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_webp_buffer_init( VipsForeignLoadWebpBuffer *buffer ) { } #endif /*HAVE_LIBWEBP*/ vips-8.2.2/libvips/foreign/webp.h0000664000175000017500000000331012620616171013635 00000000000000/* common defs for webp read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_WEBP_H #define VIPS_WEBP_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ extern const char *vips__webp_suffs[]; int vips__iswebp_buffer( const void *buf, size_t len ); int vips__iswebp( const char *filename ); int vips__webp_read_file_header( const char *name, VipsImage *out ); int vips__webp_read_file( const char *name, VipsImage *out ); int vips__webp_read_buffer_header( const void *buf, size_t len, VipsImage *out ); int vips__webp_read_buffer( const void *buf, size_t len, VipsImage *out ); int vips__webp_write_file( VipsImage *out, const char *filename, int Q, gboolean lossless ); int vips__webp_write_buffer( VipsImage *out, void **buf, size_t *len, int Q, gboolean lossless ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_WEBP_H*/ vips-8.2.2/libvips/foreign/pngsave.c0000664000175000017500000001537112605514112014343 00000000000000/* save to png * * 2/12/11 * - wrap a class around the png writer * 16/7/12 * - compression should be 0-9, not 1-10 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_PNG #include #include #include #include #include "vipspng.h" typedef struct _VipsForeignSavePng { VipsForeignSave parent_object; int compression; gboolean interlace; char *profile; VipsForeignPngFilter filter; } VipsForeignSavePng; typedef VipsForeignSaveClass VipsForeignSavePngClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSavePng, vips_foreign_save_png, VIPS_TYPE_FOREIGN_SAVE ); /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_png[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, US, US, UC, UC, UC, UC }; static void vips_foreign_save_png_class_init( VipsForeignSavePngClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngsave_base"; object_class->description = _( "save png" ); foreign_class->suffs = vips__png_suffs; save_class->saveable = VIPS_SAVEABLE_RGBA; save_class->format_table = bandfmt_png; VIPS_ARG_INT( class, "compression", 6, _( "Compression" ), _( "Compression factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, compression ), 0, 9, 6 ); VIPS_ARG_BOOL( class, "interlace", 7, _( "Interlace" ), _( "Interlace image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, interlace ), FALSE ); VIPS_ARG_STRING( class, "profile", 11, _( "Profile" ), _( "ICC profile to embed" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, profile ), NULL ); VIPS_ARG_FLAGS( class, "filter", 12, _( "Filter" ), _( "libpng row filter flag(s)" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePng, filter ), VIPS_TYPE_FOREIGN_PNG_FILTER, VIPS_FOREIGN_PNG_FILTER_ALL ); } static void vips_foreign_save_png_init( VipsForeignSavePng *png ) { png->compression = 6; png->filter = VIPS_FOREIGN_PNG_FILTER_ALL; } typedef struct _VipsForeignSavePngFile { VipsForeignSavePng parent_object; char *filename; } VipsForeignSavePngFile; typedef VipsForeignSavePngClass VipsForeignSavePngFileClass; G_DEFINE_TYPE( VipsForeignSavePngFile, vips_foreign_save_png_file, vips_foreign_save_png_get_type() ); static int vips_foreign_save_png_file_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSavePng *png = (VipsForeignSavePng *) object; VipsForeignSavePngFile *png_file = (VipsForeignSavePngFile *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_png_file_parent_class )-> build( object ) ) return( -1 ); if( vips__png_write( save->ready, png_file->filename, png->compression, png->interlace, png->profile, png->filter ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_png_file_class_init( VipsForeignSavePngFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngsave"; object_class->description = _( "save image to png file" ); object_class->build = vips_foreign_save_png_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSavePngFile, filename ), NULL ); } static void vips_foreign_save_png_file_init( VipsForeignSavePngFile *file ) { } typedef struct _VipsForeignSavePngBuffer { VipsForeignSavePng parent_object; VipsArea *buf; } VipsForeignSavePngBuffer; typedef VipsForeignSavePngClass VipsForeignSavePngBufferClass; G_DEFINE_TYPE( VipsForeignSavePngBuffer, vips_foreign_save_png_buffer, vips_foreign_save_png_get_type() ); static int vips_foreign_save_png_buffer_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSavePng *png = (VipsForeignSavePng *) object; void *obuf; size_t olen; VipsBlob *blob; if( VIPS_OBJECT_CLASS( vips_foreign_save_png_buffer_parent_class )-> build( object ) ) return( -1 ); if( vips__png_write_buf( save->ready, &obuf, &olen, png->compression, png->interlace, png->profile, png->filter ) ) return( -1 ); blob = vips_blob_new( (VipsCallbackFn) vips_free, obuf, olen ); g_object_set( object, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); return( 0 ); } static void vips_foreign_save_png_buffer_class_init( VipsForeignSavePngBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "pngsave_buffer"; object_class->description = _( "save image to png buffer" ); object_class->build = vips_foreign_save_png_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSavePngBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_png_buffer_init( VipsForeignSavePngBuffer *buffer ) { } #endif /*HAVE_PNG*/ vips-8.2.2/libvips/foreign/tiff2vips.c0000664000175000017500000013555712651715170014635 00000000000000/* TIFF parts: Copyright (c) 1988, 1990 by Sam Leffler. * All rights reserved. * * This file is provided for unrestricted use provided that this * legend is included on all tape media and as a part of the * software program in whole or part. Users may copy, modify or * distribute this file at will. * ----------------------------- * Modifications for VIPS: Kirk Martinez 1994 * 22/11/94 JC * - more general * - memory leaks fixed * 20/3/95 JC * - TIFF error handler added * - read errors detected correctly * * Modified to handle LAB in tiff format. * It convert LAB-tiff format to VIPS_INTERPRETATION_LABQ in vips format. * Copyright July-1995 Ahmed Abbood. * * * 19/9/95 JC * - now calls TIFFClose ... stupid * 25/1/96 JC * - typo on MINISBLACK ... * 7/4/97 JC * - completely redone for TIFF 6 * - now full baseline TIFF 6 reader, and does CIELAB as well * 11/4/97 JC * - added partial read for tiled images * 23/4/97 JC * - extra subsample parameter * - im_istiffpyramid() added * 5/12/97 JC * - if loading YCbCr, convert to VIPS_CODING_LABQ * 1/5/98 JC * - now reads 16-bit greyscale and RGB * 26/10/98 JC * - now used "rb" mode on systems that need binary open * 12/11/98 JC * - no sub-sampling if sub == 1 * 26/2/99 JC * - ooops, else missing for subsample stuff above * 2/10/99 JC * - tiled 16-bit greyscale read was broken * - added mutex for TIFFReadTile() calls * 11/5/00 JC * - removed TIFFmalloc/TIFFfree usage * 23/4/01 JC * - HAVE_TIFF turns on TIFF goodness * 24/5/01 JC * - im_tiff2vips_header() added * 11/7/01 JC * - subsample now in input filename * - ... and it's a page number (from 0) instead * 21/8/02 JC * - now reads CMYK * - hmm, dpi -> ppm conversion was wrong! * 10/9/02 JC * - oops, handle TIFF errors better * 2/12/02 JC * - reads 8-bit RGBA * 12/12/02 JC * - reads 16-bit LAB * 13/2/03 JC * - pixels/cm res read was wrong * 17/11/03 Andrey Kiselev * - read 32-bit float greyscale and rgb * 5/4/04 * - better handling of edge tiles (thanks Ruven) * 16/4/04 * - cleanup * - added broken tile read mode * 18/5/04 Andrey Kiselev * - better no resolution diagnostic * 26/5/04 * - reads 16 bit RGBA * 28/7/04 * - arrg, 16bit RGB was broken, thanks haida * 26/11/04 * - add a TIFF warning handler, stops occasional libMagick exceptions * 9/3/05 * - load 32-bit float LAB * 8/4/05 * - onebit read no longer reads one byte too many on multiple of 8 wide * images * 22/6/05 * - 16 bit LAB read was broken * 9/9/05 * - read any ICCPROFILE tag * 8/5/06 * - set RGB16 and GREY16 Type * 21/5/06 * - use external im_tile_cache() operation for great code shrinkage * - less RAM usage too, esp. with >1 CPU * - should be slightly faster * - removed 'broken' read option * 18/7/07 Andrey Kiselev * - remove "b" option on TIFFOpen() * 9/4/08 * - set VIPS_META_RESOLUTION_UNIT * 17/4/08 * - allow CMYKA (thanks Doron) * 17/7/08 * - convert YCbCr to RGB on read (thanks Ole) * 15/8/08 * - reorganise for image format system * 20/12/08 * - dont read with mmap: no performance advantage with libtiff, chews up * VM wastefully * 13/1/09 * - read strip-wise, not scanline-wise ... works with more compression / * subsampling schemes (esp. subsampled YCbCr), and it's a bit quicker * 4/2/10 * - gtkdoc * 12/12/10 * - oops, we can just memcpy() now heh * - avoid unpacking via buffers if we can: either read a tile directly * into the output region, or writeline directly from the tiff buffer * 4/4/11 * - argh int/uint mixup for rows_per_strip, thanks Bubba * 21/4/11 * - palette read can do 1,2,4,8 bits per sample * - palette read can do mono images * 5/12/11 * - make into a simple function call ready to be wrapped as a new-style * VipsForeign class * 18/2/12 * - switch to sequential read * - remove the lock ... tilecache does this for us * 3/6/12 * - always offer THINSTRIP ... later stages can ask for something more * relaxed if they wish * 7/6/12 * - clip rows_per_strip down to image height to avoid overflows for huge * values (thanks Nicolas) * - better error msg for not PLANARCONFIG_CONTIG images * 16/9/13 * - support alpha for 8, 16 and 32-bit greyscale images, thanks Robert * 17/9/13 * - support separate planes for strip read * - big cleanup * - support for many more formats, eg. 32-bit int etc. * 11/4/14 * - support 16 bits per sample palette images * - palette images can have an alpha * 22/4/14 * - add read from buffer * 30/4/14 * - 1/2/4 bit palette images can have alpha * 27/10/14 Lovell * - better istiff detector spots bigtiff * 3/12/14 * - read any XMP metadata * 19/1/15 * - try to handle 8-bit colormaps * 26/2/15 * - close the read down early for a header read ... this saves an * fd during file read, handy for large numbers of input images * 29/9/15 * - load IPCT metadata * - load photoshop metadata * 21/12/15 * - load TIFFTAG_IMAGEDESCRIPTION */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_TIFF #include #include #include #include #include #include #include #include "tiff.h" /* Scanline-type process function. */ struct _ReadTiff; typedef void (*scanline_process_fn)( struct _ReadTiff *, VipsPel *q, VipsPel *p, int n, void *client ); /* Stuff we track during a read. */ typedef struct _ReadTiff { /* Parameters. */ char *filename; const void *buf; size_t len; VipsImage *out; int page; gboolean readbehind; /* The TIFF we read. */ TIFF *tiff; /* Process for this image type. */ scanline_process_fn sfn; void *client; /* Set this is the processfn is just doing a memcpy. */ gboolean memcpy; /* The current 'file pointer' for memory buffers. */ size_t pos; /* Geometry. */ uint32 twidth, theight; /* Tile size */ uint32 rows_per_strip; tsize_t scanline_size; tsize_t strip_size; int number_of_strips; int samples_per_pixel; int bits_per_sample; int photometric_interpretation; int sample_format; /* Turn on separate plane reading. */ gboolean separate; /* Hold a single strip or tile, possibly just an image plane. */ tdata_t plane_buf; /* Hold a plane-assembled strip or tile ... a set of samples_per_pixel * strips or tiles interleaved. */ tdata_t contig_buf; } ReadTiff; /* Handle TIFF errors here. Shared with vips2tiff.c. These can be called from * more than one thread, but vips_error and vips_warn have mutexes in, so that's * OK. */ static void vips__thandler_error( const char *module, const char *fmt, va_list ap ) { vips_verror( module, fmt, ap ); } static void vips__thandler_warning( const char *module, const char *fmt, va_list ap ) { char buf[256]; vips_vsnprintf( buf, 256, fmt, ap ); vips_warn( module, "%s", buf ); } /* Call this during startup. Other libraries may be using libtiff and we want * to capture any messages they send as well. */ void vips__tiff_init( void ) { TIFFSetErrorHandler( vips__thandler_error ); TIFFSetWarningHandler( vips__thandler_warning ); } /* Test for field exists. */ static int tfexists( TIFF *tif, ttag_t tag ) { uint32 a, b; if( TIFFGetField( tif, tag, &a, &b ) ) return( 1 ); else return( 0 ); } /* Get a uint32 field. */ static int tfget32( TIFF *tif, ttag_t tag, uint32 *out ) { uint32 fld; if( !TIFFGetFieldDefaulted( tif, tag, &fld ) ) { vips_error( "tiff2vips", _( "required field %d missing" ), tag ); return( 0 ); } *out = fld; return( 1 ); } /* Get a uint16 field. */ static int tfget16( TIFF *tif, ttag_t tag, int *out ) { uint16 fld; if( !TIFFGetFieldDefaulted( tif, tag, &fld ) ) { vips_error( "tiff2vips", _( "required field %d missing" ), tag ); return( 0 ); } *out = fld; return( 1 ); } static int check_samples( ReadTiff *rtiff, int samples_per_pixel ) { if( rtiff->samples_per_pixel != samples_per_pixel ) { vips_error( "tiff2vips", _( "not %d bands" ), samples_per_pixel ); return( -1 ); } return( 0 ); } /* Check n and n+1 so we can have an alpha. */ static int check_min_samples( ReadTiff *rtiff, int samples_per_pixel ) { if( rtiff->samples_per_pixel < samples_per_pixel ) { vips_error( "tiff2vips", _( "not at least %d samples per pixel" ), samples_per_pixel ); return( -1 ); } return( 0 ); } static int check_interpretation( ReadTiff *rtiff, int photometric_interpretation ) { if( rtiff->photometric_interpretation != photometric_interpretation ) { vips_error( "tiff2vips", _( "not photometric interpretation %d" ), photometric_interpretation ); return( -1 ); } return( 0 ); } static int check_bits( ReadTiff *rtiff, int bits_per_sample ) { if( rtiff->bits_per_sample != bits_per_sample ) { vips_error( "tiff2vips", _( "not %d bits per sample" ), bits_per_sample ); return( -1 ); } return( 0 ); } static int check_bits_palette( ReadTiff *rtiff ) { if( rtiff->bits_per_sample != 16 && rtiff->bits_per_sample != 8 && rtiff->bits_per_sample != 4 && rtiff->bits_per_sample != 2 && rtiff->bits_per_sample != 1 ) { vips_error( "tiff2vips", _( "%d bits per sample palette image not supported" ), rtiff->bits_per_sample ); return( -1 ); } return( 0 ); } static VipsBandFormat guess_format( ReadTiff *rtiff ) { switch( rtiff->bits_per_sample ) { case 1: case 2: case 4: case 8: if( rtiff->sample_format == SAMPLEFORMAT_INT ) return( VIPS_FORMAT_CHAR ); if( rtiff->sample_format == SAMPLEFORMAT_UINT ) return( VIPS_FORMAT_UCHAR ); break; case 16: if( rtiff->sample_format == SAMPLEFORMAT_INT ) return( VIPS_FORMAT_SHORT ); if( rtiff->sample_format == SAMPLEFORMAT_UINT ) return( VIPS_FORMAT_USHORT ); break; case 32: if( rtiff->sample_format == SAMPLEFORMAT_INT ) return( VIPS_FORMAT_INT ); if( rtiff->sample_format == SAMPLEFORMAT_UINT ) return( VIPS_FORMAT_UINT ); if( rtiff->sample_format == SAMPLEFORMAT_IEEEFP ) return( VIPS_FORMAT_FLOAT ); break; case 64: if( rtiff->sample_format == SAMPLEFORMAT_IEEEFP ) return( VIPS_FORMAT_DOUBLE ); if( rtiff->sample_format == SAMPLEFORMAT_COMPLEXIEEEFP ) return( VIPS_FORMAT_COMPLEX ); break; case 128: if( rtiff->sample_format == SAMPLEFORMAT_COMPLEXIEEEFP ) return( VIPS_FORMAT_DPCOMPLEX ); break; default: break; } vips_error( "tiff2vips", "%s", _( "unsupported tiff image type\n" ) ); return( VIPS_FORMAT_NOTSET ); } /* Per-scanline process function for VIPS_CODING_LABQ. */ static void labpack_line( ReadTiff *rtiff, VipsPel *q, VipsPel *p, int n, void *dummy ) { int x; for( x = 0; x < n; x++ ) { q[0] = p[0]; q[1] = p[1]; q[2] = p[2]; q[3] = 0; q += 4; p += rtiff->samples_per_pixel; } } /* Read an 8-bit LAB image. */ static int parse_labpack( ReadTiff *rtiff, VipsImage *out ) { if( check_min_samples( rtiff, 3 ) || check_bits( rtiff, 8 ) || check_interpretation( rtiff, PHOTOMETRIC_CIELAB ) ) return( -1 ); out->Bands = 4; out->BandFmt = VIPS_FORMAT_UCHAR; out->Coding = VIPS_CODING_LABQ; out->Type = VIPS_INTERPRETATION_LAB; rtiff->sfn = labpack_line; return( 0 ); } /* Per-scanline process function for LABS. */ static void labs_line( ReadTiff *rtiff, VipsPel *q, VipsPel *p, int n, void *dummy ) { int x; unsigned short *p1 = (unsigned short *) p; short *q1 = (short *) q; int i; for( x = 0; x < n; x++ ) { /* We use a signed int16 for L. */ q1[0] = p1[0] >> 1; for( i = 1; i < rtiff->samples_per_pixel; i++ ) q1[i] = p1[i]; q1 += rtiff->samples_per_pixel; p1 += rtiff->samples_per_pixel; } } /* Read a 16-bit LAB image. */ static int parse_labs( ReadTiff *rtiff, VipsImage *out ) { if( check_min_samples( rtiff, 3 ) || check_bits( rtiff, 16 ) || check_interpretation( rtiff, PHOTOMETRIC_CIELAB ) ) return( -1 ); out->Bands = rtiff->samples_per_pixel; out->BandFmt = VIPS_FORMAT_SHORT; out->Coding = VIPS_CODING_NONE; out->Type = VIPS_INTERPRETATION_LABS; rtiff->sfn = labs_line; return( 0 ); } /* Per-scanline process function for 1 bit images. */ static void onebit_line( ReadTiff *rtiff, VipsPel *q, VipsPel *p, int n, void *flg ) { int x, i, z; VipsPel bits; int black = rtiff->photometric_interpretation == PHOTOMETRIC_MINISBLACK ? 0 : 255; int white = black ^ 0xff; /* (sigh) how many times have I written this? */ x = 0; for( i = 0; i < (n >> 3); i++ ) { bits = (VipsPel) p[i]; for( z = 0; z < 8; z++ ) { q[x] = (bits & 128) ? white : black; bits <<= 1; x += 1; } } /* Do last byte in line. */ if( n & 7 ) { bits = p[i]; for( z = 0; z < (n & 7); z++ ) { q[x + z] = (bits & 128) ? white : black; bits <<= 1; } } } /* Read a 1-bit TIFF image. */ static int parse_onebit( ReadTiff *rtiff, VipsImage *out ) { if( check_samples( rtiff, 1 ) || check_bits( rtiff, 1 ) ) return( -1 ); out->Bands = 1; out->BandFmt = VIPS_FORMAT_UCHAR; out->Coding = VIPS_CODING_NONE; out->Type = VIPS_INTERPRETATION_B_W; rtiff->sfn = onebit_line; return( 0 ); } /* Swap the sense of the first channel, if necessary. */ #define GREY_LOOP( TYPE, MAX ) { \ TYPE *p1; \ TYPE *q1; \ \ p1 = (TYPE *) p; \ q1 = (TYPE *) q; \ for( x = 0; x < n; x++ ) { \ if( invert ) \ q1[0] = MAX - p1[0]; \ else \ q1[0] = p1[0]; \ \ for( i = 1; i < rtiff->samples_per_pixel; i++ ) \ q1[i] = p1[i]; \ \ q1 += rtiff->samples_per_pixel; \ p1 += rtiff->samples_per_pixel; \ } \ } /* Per-scanline process function for greyscale images. */ static void greyscale_line( ReadTiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { gboolean invert = rtiff->photometric_interpretation == PHOTOMETRIC_MINISWHITE; VipsBandFormat format = guess_format( rtiff ); int x, i; switch( format ) { case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: GREY_LOOP( guchar, UCHAR_MAX ); break; case VIPS_FORMAT_SHORT: GREY_LOOP( gshort, SHRT_MAX ); break; case VIPS_FORMAT_USHORT: GREY_LOOP( gushort, USHRT_MAX ); break; case VIPS_FORMAT_INT: GREY_LOOP( gint, INT_MAX ); break; case VIPS_FORMAT_UINT: GREY_LOOP( guint, UINT_MAX ); break; case VIPS_FORMAT_FLOAT: GREY_LOOP( float, 1.0 ); break; case VIPS_FORMAT_DOUBLE: GREY_LOOP( double, 1.0 ); break; default: g_assert_not_reached(); } } /* Read a grey-scale TIFF image. We have to invert the first band if * PHOTOMETRIC_MINISBLACK is set. */ static int parse_greyscale( ReadTiff *rtiff, VipsImage *out ) { if( check_min_samples( rtiff, 1 ) ) return( -1 ); out->Bands = rtiff->samples_per_pixel; if( (out->BandFmt = guess_format( rtiff )) == VIPS_FORMAT_NOTSET ) return( -1 ); out->Coding = VIPS_CODING_NONE; if( rtiff->bits_per_sample == 16 ) out->Type = VIPS_INTERPRETATION_GREY16; else out->Type = VIPS_INTERPRETATION_B_W; /* greyscale_line() doesn't do complex. */ if( vips_check_noncomplex( "tiff2vips", out ) ) return( -1 ); rtiff->sfn = greyscale_line; return( 0 ); } typedef struct { /* LUTs mapping image indexes to RGB. */ VipsPel *red8; VipsPel *green8; VipsPel *blue8; guint16 *red16; guint16 *green16; guint16 *blue16; /* All maps equal, so we write mono. */ gboolean mono; } PaletteRead; /* 1/2/4 bit samples with an 8-bit palette. */ static void palette_line_bit( ReadTiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { PaletteRead *read = (PaletteRead *) client; int samples = rtiff->samples_per_pixel; int bit; VipsPel data; int x; bit = 0; data = 0; for( x = 0; x < n * samples; x++ ) { int i; if( bit <= 0 ) { data = *p++; bit = 8; } i = data >> (8 - rtiff->bits_per_sample); data <<= rtiff->bits_per_sample; bit -= rtiff->bits_per_sample; /* The first band goes through the LUT, subsequent bands are * left-justified and copied. */ if( x % samples == 0 ) { if( read->mono ) *q++ = read->red8[i]; else { q[0] = read->red8[i]; q[1] = read->green8[i]; q[2] = read->blue8[i]; q += 3; } } else *q++ = i << (8 - rtiff->bits_per_sample); } } /* 8-bit samples with an 8-bit palette. */ static void palette_line8( ReadTiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { PaletteRead *read = (PaletteRead *) client; int samples = rtiff->samples_per_pixel; int x; int s; for( x = 0; x < n; x++ ) { int i = p[0]; if( read->mono ) q[0] = read->red8[i]; else { q[0] = read->red8[i]; q[1] = read->green8[i]; q[2] = read->blue8[i]; q += 2; } for( s = 1; s < samples; s++ ) q[s] = p[s]; q += samples; p += samples; } } /* 16-bit samples with 16-bit data in the palette. */ static void palette_line16( ReadTiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { PaletteRead *read = (PaletteRead *) client; int samples = rtiff->samples_per_pixel; guint16 *p16, *q16; int x; int s; q16 = (guint16 *) q; p16 = (guint16 *) p; for( x = 0; x < n; x++ ) { int i = p16[0]; if( read->mono ) q16[0] = read->red16[i]; else { q16[0] = read->red16[i]; q16[1] = read->green16[i]; q16[2] = read->blue16[i]; q16 += 2; } for( s = 1; s < samples; s++ ) q16[s] = p16[s]; q16 += samples; p16 += samples; } } /* Read a palette-ised TIFF image. */ static int parse_palette( ReadTiff *rtiff, VipsImage *out ) { int len; PaletteRead *read; int i; if( check_bits_palette( rtiff ) || check_min_samples( rtiff, 1 ) ) return( -1 ); len = 1 << rtiff->bits_per_sample; if( !(read = VIPS_NEW( out, PaletteRead )) || !(read->red8 = VIPS_ARRAY( out, len, VipsPel )) || !(read->green8 = VIPS_ARRAY( out, len, VipsPel )) || !(read->blue8 = VIPS_ARRAY( out, len, VipsPel )) ) return( -1 ); /* Get maps, convert to 8-bit data. */ if( !TIFFGetField( rtiff->tiff, TIFFTAG_COLORMAP, &read->red16, &read->green16, &read->blue16 ) ) { vips_error( "tiff2vips", "%s", _( "bad colormap" ) ); return( -1 ); } /* Old-style colourmaps were 8-bit. If all the top bytes are zero, * assume we have one of these. * * See: https://github.com/jcupitt/libvips/issues/220 */ for( i = 0; i < len; i++ ) if( (read->red16[i] >> 8) | (read->green16[i] >> 8) | (read->blue16[i] >> 8) ) break; if( i < len ) for( i = 0; i < len; i++ ) { read->red8[i] = read->red16[i] >> 8; read->green8[i] = read->green16[i] >> 8; read->blue8[i] = read->blue16[i] >> 8; } else { vips_warn( "tiff2vips", "%s", _( "assuming 8-bit palette" ) ); for( i = 0; i < len; i++ ) { read->red8[i] = read->red16[i] & 0xff; read->green8[i] = read->green16[i] & 0xff; read->blue8[i] = read->blue16[i] & 0xff; } } /* Are all the maps equal? We have a mono image. */ read->mono = TRUE; for( i = 0; i < len; i++ ) if( read->red16[i] != read->green16[i] || read->green16[i] != read->blue16[i] ) { read->mono = FALSE; break; } /* There's a TIFF extension, INDEXED, that is the preferred way to * encode mono palette images, but few applications support it. So we * just search the colormap. */ if( rtiff->bits_per_sample <= 8 ) out->BandFmt = VIPS_FORMAT_UCHAR; else out->BandFmt = VIPS_FORMAT_USHORT; out->Coding = VIPS_CODING_NONE; if( read->mono ) { out->Bands = rtiff->samples_per_pixel; if( rtiff->bits_per_sample <= 8 ) out->Type = VIPS_INTERPRETATION_B_W; else out->Type = VIPS_INTERPRETATION_GREY16; } else { out->Bands = rtiff->samples_per_pixel + 2; if( rtiff->bits_per_sample <= 8 ) out->Type = VIPS_INTERPRETATION_sRGB; else out->Type = VIPS_INTERPRETATION_RGB16; } rtiff->client = read; if( rtiff->bits_per_sample < 8 ) rtiff->sfn = palette_line_bit; else if( rtiff->bits_per_sample == 8 ) rtiff->sfn = palette_line8; else if( rtiff->bits_per_sample == 16 ) rtiff->sfn = palette_line16; else g_assert_not_reached(); return( 0 ); } /* Per-scanline process function when we just need to copy. */ static void memcpy_line( ReadTiff *rtiff, VipsPel *q, VipsPel *p, int n, void *client ) { VipsImage *im = (VipsImage *) client; size_t len = n * VIPS_IMAGE_SIZEOF_PEL( im ); memcpy( q, p, len ); } /* Read a regular multiband image where we can just copy pixels from the tiff * buffer. */ static int parse_copy( ReadTiff *rtiff, VipsImage *out ) { out->Bands = rtiff->samples_per_pixel; if( (out->BandFmt = guess_format( rtiff )) == VIPS_FORMAT_NOTSET ) return( -1 ); out->Coding = VIPS_CODING_NONE; if( rtiff->samples_per_pixel >= 3 && (rtiff->photometric_interpretation == PHOTOMETRIC_RGB || rtiff->photometric_interpretation == PHOTOMETRIC_YCBCR) ) { if( rtiff->bits_per_sample == 16 ) out->Type = VIPS_INTERPRETATION_RGB16; else out->Type = VIPS_INTERPRETATION_sRGB; } if( rtiff->samples_per_pixel >= 3 && rtiff->photometric_interpretation == PHOTOMETRIC_CIELAB ) out->Type = VIPS_INTERPRETATION_LAB; if( rtiff->samples_per_pixel >= 4 && rtiff->photometric_interpretation == PHOTOMETRIC_SEPARATED ) out->Type = VIPS_INTERPRETATION_CMYK; rtiff->sfn = memcpy_line; rtiff->client = out; rtiff->memcpy = TRUE; return( 0 ); } /* Read resolution from a TIFF image. */ static int parse_resolution( TIFF *tiff, VipsImage *out ) { float x, y; int ru; if( TIFFGetFieldDefaulted( tiff, TIFFTAG_XRESOLUTION, &x ) && TIFFGetFieldDefaulted( tiff, TIFFTAG_YRESOLUTION, &y ) && tfget16( tiff, TIFFTAG_RESOLUTIONUNIT, &ru ) ) { switch( ru ) { case RESUNIT_NONE: break; case RESUNIT_INCH: /* In pixels-per-inch ... convert to mm. */ x /= 10.0 * 2.54; y /= 10.0 * 2.54; vips_image_set_string( out, VIPS_META_RESOLUTION_UNIT, "in" ); break; case RESUNIT_CENTIMETER: /* In pixels-per-centimetre ... convert to mm. */ x /= 10.0; y /= 10.0; vips_image_set_string( out, VIPS_META_RESOLUTION_UNIT, "cm" ); break; default: vips_error( "tiff2vips", "%s", _( "unknown resolution unit" ) ); return( -1 ); } } else { vips_warn( "tiff2vips", _( "no resolution information for " "TIFF image \"%s\" -- defaulting to 1 pixel per mm" ), TIFFFileName( tiff ) ); x = 1.0; y = 1.0; } out->Xres = x; out->Yres = y; return( 0 ); } typedef int (*reader_fn)( ReadTiff *rtiff, VipsImage *out ); /* We have a range of output paths. Look at the tiff header and try to * route the input image to the best output path. */ static reader_fn pick_reader( ReadTiff *rtiff ) { if( rtiff->photometric_interpretation == PHOTOMETRIC_CIELAB ) { if( rtiff->bits_per_sample == 8 ) return( parse_labpack ); if( rtiff->bits_per_sample == 16 ) return( parse_labs ); } if( rtiff->photometric_interpretation == PHOTOMETRIC_MINISWHITE || rtiff->photometric_interpretation == PHOTOMETRIC_MINISBLACK ) { if( rtiff->bits_per_sample == 1 ) return( parse_onebit ); else return( parse_greyscale ); } if( rtiff->photometric_interpretation == PHOTOMETRIC_PALETTE ) return( parse_palette ); if( rtiff->photometric_interpretation == PHOTOMETRIC_YCBCR ) { /* Sometimes JPEG in TIFF images are tagged as YCBCR. Ask * libtiff to convert to RGB for us. */ TIFFSetField( rtiff->tiff, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB ); } return( parse_copy ); } /* Look at PhotometricInterpretation and BitsPerPixel and try to figure out * which of the image classes this is. */ static int parse_header( ReadTiff *rtiff, VipsImage *out ) { uint32 data_length; uint32 width, height; void *data; if( tfexists( rtiff->tiff, TIFFTAG_PLANARCONFIG ) ) { int v; if( !tfget16( rtiff->tiff, TIFFTAG_PLANARCONFIG, &v ) ) return( -1 ); if( v == PLANARCONFIG_SEPARATE ) rtiff->separate = TRUE; } /* We always need dimensions. */ if( !tfget32( rtiff->tiff, TIFFTAG_IMAGEWIDTH, &width ) || !tfget32( rtiff->tiff, TIFFTAG_IMAGELENGTH, &height ) || parse_resolution( rtiff->tiff, out ) || !tfget16( rtiff->tiff, TIFFTAG_SAMPLESPERPIXEL, &rtiff->samples_per_pixel ) || !tfget16( rtiff->tiff, TIFFTAG_BITSPERSAMPLE, &rtiff->bits_per_sample ) || !tfget16( rtiff->tiff, TIFFTAG_PHOTOMETRIC, &rtiff->photometric_interpretation ) ) return( -1 ); /* Some optional fields. */ { uint16 v; rtiff->sample_format = SAMPLEFORMAT_INT; if( TIFFGetFieldDefaulted( rtiff->tiff, TIFFTAG_SAMPLEFORMAT, &v ) ) { /* Some images have this set to void, bizarre. */ if( v == SAMPLEFORMAT_VOID ) v = SAMPLEFORMAT_UINT; rtiff->sample_format = v; } } /* Arbitrary sanity-checking limits. */ if( width <= 0 || width > VIPS_MAX_COORD || height <= 0 || height > VIPS_MAX_COORD ) { vips_error( "tiff2vips", "%s", _( "width/height out of range" ) ); return( -1 ); } if( rtiff->samples_per_pixel <= 0 || rtiff->samples_per_pixel > 10000 || rtiff->bits_per_sample <= 0 || rtiff->bits_per_sample > 32 ) { vips_error( "tiff2vips", "%s", _( "samples out of range" ) ); return( -1 ); } out->Xsize = width; out->Ysize = height; /* Even though we could end up serving tiled data, always hint * THINSTRIP, since we're quite happy doing that too, and it could need * a lot less memory. */ vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); #ifdef DEBUG printf( "parse_header: samples_per_pixel = %d\n", rtiff->samples_per_pixel ); printf( "parse_header: bits_per_sample = %d\n", rtiff->bits_per_sample ); printf( "parse_header: sample_format = %d\n", rtiff->sample_format ); #endif /*DEBUG*/ /* We have a range of output paths. Look at the tiff header and try to * route the input image to the best output path. */ if( pick_reader( rtiff )( rtiff, out ) ) return( -1 ); /* Read any ICC profile. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_ICCPROFILE, &data_length, &data ) ) { void *data_copy; if( !(data_copy = vips_malloc( NULL, data_length )) ) return( -1 ); memcpy( data_copy, data, data_length ); vips_image_set_blob( out, VIPS_META_ICC_NAME, (VipsCallbackFn) vips_free, data_copy, data_length ); } /* Read any XMP metadata. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_XMLPACKET, &data_length, &data ) ) { void *data_copy; if( !(data_copy = vips_malloc( NULL, data_length )) ) return( -1 ); memcpy( data_copy, data, data_length ); vips_image_set_blob( out, VIPS_META_XMP_NAME, (VipsCallbackFn) vips_free, data_copy, data_length ); } /* Read any IPCT metadata. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_RICHTIFFIPTC, &data_length, &data ) ) { void *data_copy; /* For no very good reason, libtiff stores IPCT as an array of * long, not byte. */ data_length *= 4; if( !(data_copy = vips_malloc( NULL, data_length )) ) return( -1 ); memcpy( data_copy, data, data_length ); vips_image_set_blob( out, VIPS_META_IPCT_NAME, (VipsCallbackFn) vips_free, data_copy, data_length ); } /* Read any photoshop metadata. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_PHOTOSHOP, &data_length, &data ) ) { void *data_copy; if( !(data_copy = vips_malloc( NULL, data_length )) ) return( -1 ); memcpy( data_copy, data, data_length ); vips_image_set_blob( out, VIPS_META_PHOTOSHOP_NAME, (VipsCallbackFn) vips_free, data_copy, data_length ); } /* IMAGEDESCRIPTION often has useful metadata. */ if( TIFFGetField( rtiff->tiff, TIFFTAG_IMAGEDESCRIPTION, &data ) ) { /* libtiff makes sure that data is null-terminated and contains * no embedded null characters. */ vips_image_set_string( out, VIPS_META_IMAGEDESCRIPTION, (char *) data ); } return( 0 ); } /* The size of the buffer written by TIFFReadTile(). We can't use * TIFFTileSize() since that ignores the setting of TIFFTAG_JPEGCOLORMODE. If * this pseudo tag has been set and the tile is encoded with YCbCr, the tile * is returned with chrominance upsampled. * * This seems not to happen for old-style jpeg-compressed tiles. */ static size_t tiff_tile_size( ReadTiff *rtiff ) { return( TIFFTileRowSize( rtiff->tiff ) * rtiff->theight ); } /* Allocate a tile buffer. Have one of these for each thread so we can unpack * to vips in parallel. */ static void * tiff_seq_start( VipsImage *out, void *a, void *b ) { ReadTiff *rtiff = (ReadTiff *) a; tsize_t size; tdata_t *buf; size = tiff_tile_size( rtiff ); if( !(buf = vips_malloc( NULL, size )) ) return( NULL ); return( (void *) buf ); } /* Paint a tile from the file. This is a * special-case for a region is exactly a tiff tile, and pixels need no * conversion. In this case, libtiff can read tiles directly to our output * region. */ static int tiff_fill_region_aligned( VipsRegion *out, void *seq, void *a, void *b ) { ReadTiff *rtiff = (ReadTiff *) a; VipsRect *r = &out->valid; g_assert( (r->left % rtiff->twidth) == 0 ); g_assert( (r->top % rtiff->theight) == 0 ); g_assert( r->width == rtiff->twidth ); g_assert( r->height == rtiff->theight ); g_assert( VIPS_REGION_LSKIP( out ) == VIPS_REGION_SIZEOF_LINE( out ) ); #ifdef DEBUG printf( "tiff_fill_region_aligned: left = %d, top = %d\n", r->left, r->top ); #endif /*DEBUG*/ VIPS_GATE_START( "tiff_fill_region_aligned: work" ); /* Read that tile directly into the vips tile. */ if( TIFFReadTile( rtiff->tiff, VIPS_REGION_ADDR( out, r->left, r->top ), r->left, r->top, 0, 0 ) < 0 ) { VIPS_GATE_STOP( "tiff_fill_region_aligned: work" ); return( -1 ); } VIPS_GATE_STOP( "tiff_fill_region_aligned: work" ); return( 0 ); } /* Loop over the output region painting in tiles from the file. */ static int tiff_fill_region( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { tdata_t *buf = (tdata_t *) seq; ReadTiff *rtiff = (ReadTiff *) a; VipsRect *r = &out->valid; /* Find top left of tiles we need. */ int xs = (r->left / rtiff->twidth) * rtiff->twidth; int ys = (r->top / rtiff->theight) * rtiff->theight; /* Sizeof a line of bytes in the TIFF tile. */ int tls = tiff_tile_size( rtiff ) / rtiff->theight; /* Sizeof a pel in the TIFF file. This won't work for formats which * are <1 byte per pel, like onebit :-( Fortunately, it's only used * to calculate addresses within a tile and, because we are wrapped in * vips_tilecache(), we will never have to calculate positions not * within a tile. */ int tps = tls / rtiff->twidth; int x, y, z; /* Special case: we are filling a single tile exactly sized to match * the tiff tile and we have no repacking to do for this format. */ if( rtiff->memcpy && r->left % rtiff->twidth == 0 && r->top % rtiff->theight == 0 && r->width == rtiff->twidth && r->height == rtiff->theight && VIPS_REGION_LSKIP( out ) == VIPS_REGION_SIZEOF_LINE( out ) ) return( tiff_fill_region_aligned( out, seq, a, b ) ); VIPS_GATE_START( "tiff_fill_region: work" ); for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += rtiff->theight ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += rtiff->twidth ) { VipsRect tile; VipsRect hit; /* Read that tile. */ if( TIFFReadTile( rtiff->tiff, buf, x, y, 0, 0 ) < 0 ) { VIPS_GATE_STOP( "tiff_fill_region: work" ); return( -1 ); } /* The tile we read. */ tile.left = x; tile.top = y; tile.width = rtiff->twidth; tile.height = rtiff->theight; /* The section that hits the region we are building. */ vips_rect_intersectrect( &tile, r, &hit ); /* Unpack to VIPS format. * Just unpack the section of the tile we need. */ for( z = 0; z < hit.height; z++ ) { VipsPel *p = (VipsPel *) buf + (hit.left - tile.left) * tps + (hit.top - tile.top + z) * tls; VipsPel *q = VIPS_REGION_ADDR( out, hit.left, hit.top + z ); rtiff->sfn( rtiff, q, p, hit.width, rtiff->client ); } } VIPS_GATE_STOP( "tiff_fill_region: work" ); return( 0 ); } static int tiff_seq_stop( void *seq, void *a, void *b ) { vips_free( seq ); return( 0 ); } /* Tile-type TIFF reader core - pass in a per-tile transform. Generate into * the im and do it all partially. */ static int read_tilewise( ReadTiff *rtiff, VipsImage *out ) { VipsImage *raw; VipsImage *t; #ifdef DEBUG printf( "tiff2vips: read_tilewise\n" ); #endif /*DEBUG*/ /* I don't have a sample images for tiled + separate, ban it for now. */ if( rtiff->separate ) { vips_error( "tiff2vips", "%s", _( "tiled separate planes not supported" ) ); return( -1 ); } /* Get tiling geometry. */ if( !tfget32( rtiff->tiff, TIFFTAG_TILEWIDTH, &rtiff->twidth ) || !tfget32( rtiff->tiff, TIFFTAG_TILELENGTH, &rtiff->theight ) ) return( -1 ); /* Read to this image, then cache to out, see below. */ raw = vips_image_new(); vips_object_local( out, raw ); /* Parse the TIFF header and set up raw. */ if( parse_header( rtiff, raw ) ) return( -1 ); /* Double check: in memcpy mode, the vips tilesize should exactly * match the tifftile size. */ if( rtiff->memcpy ) { size_t vips_tile_size; vips_tile_size = VIPS_IMAGE_SIZEOF_PEL( raw ) * rtiff->twidth * rtiff->theight; if( tiff_tile_size( rtiff ) != vips_tile_size ) { vips_error( "tiff2vips", "%s", _( "unsupported tiff image type" ) ); return( -1 ); } } /* Even though this is a tiled reader, we hint thinstrip since with * the cache we are quite happy serving that if anything downstream * would like it. */ vips_image_pipelinev( raw, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); if( vips_image_generate( raw, tiff_seq_start, tiff_fill_region, tiff_seq_stop, rtiff, NULL ) ) return( -1 ); /* Copy to out, adding a cache. Enough tiles for two complete rows. */ if( vips_tilecache( raw, &t, "tile_width", rtiff->twidth, "tile_height", rtiff->theight, "max_tiles", 2 * (1 + raw->Xsize / rtiff->twidth), NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } static int tiff2vips_strip_read( TIFF *tiff, int strip, tdata_t buf ) { tsize_t length; length = TIFFReadEncodedStrip( tiff, strip, buf, (tsize_t) -1 ); if( length == -1 ) { vips_error( "tiff2vips", "%s", _( "read error" ) ); return( -1 ); } return( 0 ); } /* Read a strip. If the image is in separate planes, read each plane and * interleave to the output. */ static int tiff2vips_strip_read_interleaved( ReadTiff *rtiff, int y, tdata_t buf ) { tstrip_t strip = y / rtiff->rows_per_strip; if( rtiff->separate ) { int strips_per_plane = 1 + (rtiff->out->Ysize - 1) / rtiff->rows_per_strip; int strip_height = VIPS_MIN( rtiff->rows_per_strip, rtiff->out->Ysize - y ); int pels_per_strip = rtiff->out->Xsize * strip_height; int bytes_per_sample = rtiff->bits_per_sample >> 3; int i, j, k; for( i = 0; i < rtiff->samples_per_pixel; i++ ) { VipsPel *p; VipsPel *q; if( tiff2vips_strip_read( rtiff->tiff, strips_per_plane * i + strip, rtiff->plane_buf ) ) return( -1 ); p = (VipsPel *) rtiff->plane_buf; q = i * bytes_per_sample + (VipsPel *) buf; for( j = 0; j < pels_per_strip; j++ ) { for( k = 0; k < bytes_per_sample; k++ ) q[k] = p[k]; p += bytes_per_sample; q += bytes_per_sample * rtiff->samples_per_pixel; } } } else { if( tiff2vips_strip_read( rtiff->tiff, strip, buf ) ) return( -1 ); } return( 0 ); } static int tiff2vips_stripwise_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { ReadTiff *rtiff = (ReadTiff *) a; VipsRect *r = &or->valid; int y; #ifdef DEBUG printf( "tiff2vips: read_stripwise_generate: top = %d, height = %d\n", r->top, r->height ); #endif /*DEBUG*/ /* We're inside a tilecache where tiles are the full image width, so * this should always be true. */ g_assert( r->left == 0 ); g_assert( r->width == or->im->Xsize ); g_assert( VIPS_RECT_BOTTOM( r ) <= or->im->Ysize ); /* Tiles should always be on a strip boundary. */ g_assert( r->top % rtiff->rows_per_strip == 0 ); /* Tiles should always be a strip in height, unless it's the final * strip. */ g_assert( r->height == VIPS_MIN( rtiff->rows_per_strip, or->im->Ysize - r->top ) ); VIPS_GATE_START( "tiff2vips_stripwise_generate: work" ); for( y = 0; y < r->height; y += rtiff->rows_per_strip ) { tdata_t dst; /* Read directly into the image if we can. Otherwise, we must * read to a temp buffer then unpack into the image. */ if( rtiff->memcpy ) dst = VIPS_REGION_ADDR( or, 0, r->top + y ); else dst = rtiff->contig_buf; if( tiff2vips_strip_read_interleaved( rtiff, r->top + y, dst ) ) { VIPS_GATE_STOP( "tiff2vips_stripwise_generate: work" ); return( -1 ); } /* If necessary, unpack to destination. */ if( !rtiff->memcpy ) { int height = VIPS_MIN( VIPS_MIN( rtiff->rows_per_strip, or->im->Ysize - (r->top + y) ), r->height ); VipsPel *p; VipsPel *q; int z; p = rtiff->contig_buf; q = VIPS_REGION_ADDR( or, 0, r->top + y ); for( z = 0; z < height; z++ ) { rtiff->sfn( rtiff, q, p, or->im->Xsize, rtiff->client ); p += rtiff->scanline_size; q += VIPS_REGION_LSKIP( or ); } } } VIPS_GATE_STOP( "tiff2vips_stripwise_generate: work" ); return( 0 ); } /* Stripwise reading. * * We could potentially read strips in any order, but this would give * catastrophic performance for operations like 90 degress rotate on a * large image. Only offer sequential read. */ static int read_stripwise( ReadTiff *rtiff, VipsImage *out ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 3 ); #ifdef DEBUG printf( "tiff2vips: read_stripwise\n" ); #endif /*DEBUG*/ t[0] = vips_image_new(); if( parse_header( rtiff, t[0] ) ) return( -1 ); vips_image_pipelinev( t[0], VIPS_DEMAND_STYLE_THINSTRIP, NULL ); if( !tfget32( rtiff->tiff, TIFFTAG_ROWSPERSTRIP, &rtiff->rows_per_strip ) ) return( -1 ); rtiff->scanline_size = TIFFScanlineSize( rtiff->tiff ); rtiff->strip_size = TIFFStripSize( rtiff->tiff ); rtiff->number_of_strips = TIFFNumberOfStrips( rtiff->tiff ); /* rows_per_strip can be 2 ** 32 - 1, meaning the whole image. Clip * this down to ysize to avoid confusing vips. * * And it musn't be zero. */ rtiff->rows_per_strip = VIPS_CLIP( 1, rtiff->rows_per_strip, t[0]->Ysize ); #ifdef DEBUG printf( "read_stripwise: rows_per_strip = %u\n", rtiff->rows_per_strip ); printf( "read_stripwise: scanline_size = %zd\n", rtiff->scanline_size ); printf( "read_stripwise: strip_size = %zd\n", rtiff->strip_size ); printf( "read_stripwise: number_of_strips = %d\n", rtiff->number_of_strips ); #endif /*DEBUG*/ /* Double check: in memcpy mode, the vips linesize should exactly * match the tiff line size. */ if( rtiff->memcpy ) { size_t vips_line_size; /* Lines are smaller in plane-separated mode. */ if( rtiff->separate ) vips_line_size = VIPS_IMAGE_SIZEOF_ELEMENT( t[0] ) * t[0]->Xsize; else vips_line_size = VIPS_IMAGE_SIZEOF_LINE( t[0] ); if( rtiff->scanline_size != vips_line_size ) { vips_error( "tiff2vips", "%s", _( "unsupported tiff image type" ) ); return( -1 ); } } /* If we have separate image planes, we must read to a plane buffer, * then interleave to the output. * * We don't need a separate buffer per thread since the _generate() * function runs inside the cache lock. */ if( rtiff->separate ) { if( !(rtiff->plane_buf = vips_malloc( VIPS_OBJECT( out ), rtiff->strip_size )) ) return( -1 ); } /* If we need to manipulate pixels, we must read to an interleaved * plane buffer before repacking to the output. * * We don't need a separate buffer per thread since the _generate() * function runs inside the cache lock. */ if( !rtiff->memcpy ) { tsize_t size; size = rtiff->strip_size; if( rtiff->separate ) size *= rtiff->samples_per_pixel; if( !(rtiff->contig_buf = vips_malloc( VIPS_OBJECT( out ), size )) ) return( -1 ); } if( vips_image_generate( t[0], NULL, tiff2vips_stripwise_generate, NULL, rtiff, NULL ) || vips_sequential( t[0], &t[1], "tile_height", rtiff->rows_per_strip, "access", rtiff->readbehind ? VIPS_ACCESS_SEQUENTIAL : VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } /* Can be called many times. */ static void readtiff_free( ReadTiff *rtiff ) { VIPS_FREEF( TIFFClose, rtiff->tiff ); } static void readtiff_close( VipsObject *object, ReadTiff *rtiff ) { readtiff_free( rtiff ); } static ReadTiff * readtiff_new( VipsImage *out, int page, gboolean readbehind ) { ReadTiff *rtiff; if( !(rtiff = VIPS_NEW( out, ReadTiff )) ) return( NULL ); rtiff->filename = NULL; rtiff->buf = NULL; rtiff->len = 0; rtiff->out = out; rtiff->page = page; rtiff->readbehind = readbehind; rtiff->tiff = NULL; rtiff->sfn = NULL; rtiff->client = NULL; rtiff->memcpy = FALSE; rtiff->pos = 0; rtiff->twidth = 0; rtiff->theight = 0; rtiff->separate = FALSE; rtiff->plane_buf = NULL; rtiff->contig_buf = NULL; g_signal_connect( out, "close", G_CALLBACK( readtiff_close ), rtiff ); if( rtiff->page < 0 || rtiff->page > 1000000 ) { vips_error( "tiff2vips", _( "bad page number %d" ), rtiff->page ); return( NULL ); } return( rtiff ); } static ReadTiff * readtiff_new_filename( const char *filename, VipsImage *out, int page, gboolean readbehind ) { ReadTiff *rtiff; int i; if( !(rtiff = readtiff_new( out, page, readbehind )) ) return( NULL ); rtiff->filename = vips_strdup( VIPS_OBJECT( out ), filename ); /* No mmap --- no performance advantage with libtiff, and it burns up * our VM if the tiff file is large. */ if( !(rtiff->tiff = TIFFOpen( filename, "rm" )) ) { vips_error( "tiff2vips", _( "unable to open \"%s\" for input" ), filename ); return( NULL ); } for( i = 0; i < page; i++ ) if( !TIFFReadDirectory( rtiff->tiff ) ) { vips_error( "tiff2vips", _( "TIFF does not contain page %d" ), rtiff->page ); return( NULL ); } return( rtiff ); } static tsize_t my_tiff_read( thandle_t st, tdata_t buffer, tsize_t size ) { ReadTiff *rtiff = (ReadTiff *) st; size_t available = rtiff->len - rtiff->pos; size_t copy = VIPS_MIN( size, available ); memcpy( buffer, (unsigned char *) rtiff->buf + rtiff->pos, copy ); rtiff->pos += copy; return( copy ); } static tsize_t my_tiff_write( thandle_t st, tdata_t buffer, tsize_t size ) { g_assert_not_reached(); return( 0 ); } static int my_tiff_close( thandle_t st ) { return 0; } static toff_t my_tiff_seek( thandle_t st, toff_t pos, int whence ) { ReadTiff *rtiff = (ReadTiff *) st; if( whence == SEEK_SET ) rtiff->pos = pos; else if( whence == SEEK_CUR ) rtiff->pos += pos; else if( whence == SEEK_END ) rtiff->pos = rtiff->len + pos; else g_assert_not_reached(); return( rtiff->pos ); } static toff_t my_tiff_size( thandle_t st ) { ReadTiff *rtiff = (ReadTiff *) st; return( rtiff->len ); } static int my_tiff_map( thandle_t st, tdata_t *start, toff_t *len ) { g_assert_not_reached(); return 0; } static void my_tiff_unmap( thandle_t st, tdata_t start, toff_t len ) { g_assert_not_reached(); return; } static ReadTiff * readtiff_new_buffer( const void *buf, size_t len, VipsImage *out, int page, gboolean readbehind ) { ReadTiff *rtiff; int i; if( !(rtiff = readtiff_new( out, page, readbehind )) ) return( NULL ); rtiff->buf = buf; rtiff->len = len; if( !(rtiff->tiff = TIFFClientOpen( "memory buffer", "rm", (thandle_t) rtiff, my_tiff_read, my_tiff_write, my_tiff_seek, my_tiff_close, my_tiff_size, my_tiff_map, my_tiff_unmap )) ) { vips_error( "tiff2vips", "%s", _( "unable to open memory buffer for input" ) ); return( NULL ); } for( i = 0; i < page; i++ ) if( !TIFFReadDirectory( rtiff->tiff ) ) { vips_error( "tiff2vips", _( "TIFF does not contain page %d" ), rtiff->page ); return( NULL ); } return( rtiff ); } /* FIXME ... Unused for now, perhaps if we add another format flag. static int istiffpyramid( const char *name ) { TIFF *tif; vips__tiff_init(); if( (tif = get_directory( name, 2 )) ) { // We can see page 2 ... assume it is. TIFFClose( tif ); return( 1 ); } return( 0 ); } */ int vips__tiff_read( const char *filename, VipsImage *out, int page, gboolean readbehind ) { ReadTiff *rtiff; #ifdef DEBUG printf( "tiff2vips: libtiff version is \"%s\"\n", TIFFGetVersion() ); printf( "tiff2vips: libtiff starting for %s\n", filename ); #endif /*DEBUG*/ vips__tiff_init(); if( !(rtiff = readtiff_new_filename( filename, out, page, readbehind )) ) return( -1 ); if( TIFFIsTiled( rtiff->tiff ) ) { if( read_tilewise( rtiff, out ) ) return( -1 ); } else { if( read_stripwise( rtiff, out ) ) return( -1 ); } return( 0 ); } int vips__tiff_read_header( const char *filename, VipsImage *out, int page ) { ReadTiff *rtiff; vips__tiff_init(); if( !(rtiff = readtiff_new_filename( filename, out, page, FALSE )) ) return( -1 ); if( parse_header( rtiff, out ) ) return( -1 ); /* Just a header read: we can free the tiff read early and save an fd. */ readtiff_free( rtiff ); return( 0 ); } gboolean vips__istifftiled( const char *filename ) { TIFF *tif; gboolean tiled; vips__tiff_init(); if( !(tif = TIFFOpen( filename, "rm" )) ) { vips_error_clear(); return( FALSE ); } tiled = TIFFIsTiled( tif ); TIFFClose( tif ); return( tiled ); } gboolean vips__istiff_buffer( const void *buf, size_t len ) { char *str = (char *) buf; if( len >= 4 && ((str[0] == 'M' && str[1] == 'M' && str[2] == '\0' && (str[3] == '*' || str[3] == '+')) || (str[0] == 'I' && str[1] == 'I' && (str[2] == '*' || str[2] == '+') && str[3] == '\0')) ) return( TRUE ); return( FALSE ); } gboolean vips__istiff( const char *filename ) { unsigned char buf[4]; if( vips__get_bytes( filename, buf, 4 ) && vips__istiff_buffer( buf, 4 ) ) return( TRUE ); return( FALSE ); } int vips__tiff_read_header_buffer( const void *buf, size_t len, VipsImage *out, int page ) { ReadTiff *rtiff; vips__tiff_init(); if( !(rtiff = readtiff_new_buffer( buf, len, out, page, FALSE )) ) return( -1 ); if( parse_header( rtiff, out ) ) return( -1 ); return( 0 ); } int vips__tiff_read_buffer( const void *buf, size_t len, VipsImage *out, int page, gboolean readbehind ) { ReadTiff *rtiff; #ifdef DEBUG printf( "tiff2vips: libtiff version is \"%s\"\n", TIFFGetVersion() ); printf( "tiff2vips: libtiff starting for buffer %p\n", buf ); #endif /*DEBUG*/ vips__tiff_init(); if( !(rtiff = readtiff_new_buffer( buf, len, out, page, readbehind )) ) return( -1 ); if( TIFFIsTiled( rtiff->tiff ) ) { if( read_tilewise( rtiff, out ) ) return( -1 ); } else { if( read_stripwise( rtiff, out ) ) return( -1 ); } return( 0 ); } #endif /*HAVE_TIFF*/ vips-8.2.2/libvips/foreign/fitsload.c0000664000175000017500000000636712645526674014536 00000000000000/* load fits from a file * * 5/12/11 * - from openslideload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_CFITSIO #include #include #include #include #include #include #include "fits.h" typedef struct _VipsForeignLoadFits { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadFits; typedef VipsForeignLoadClass VipsForeignLoadFitsClass; G_DEFINE_TYPE( VipsForeignLoadFits, vips_foreign_load_fits, VIPS_TYPE_FOREIGN_LOAD ); static int vips_foreign_load_fits_header( VipsForeignLoad *load ) { VipsForeignLoadFits *fits = (VipsForeignLoadFits *) load; if( vips__fits_read_header( fits->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, fits->filename ); return( 0 ); } static int vips_foreign_load_fits_load( VipsForeignLoad *load ) { VipsForeignLoadFits *fits = (VipsForeignLoadFits *) load; VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( fits ), 2 ); t[0] = vips_image_new(); if( vips__fits_read( fits->filename, t[0] ) || vips_flip( t[0], &t[1], VIPS_DIRECTION_VERTICAL, NULL ) || vips_image_write( t[1], load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_fits_class_init( VipsForeignLoadFitsClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "fitsload"; object_class->description = _( "load a FITS image" ); /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; foreign_class->suffs = vips__fits_suffs; load_class->is_a = vips__fits_isfits; load_class->header = vips_foreign_load_fits_header; load_class->load = vips_foreign_load_fits_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadFits, filename ), NULL ); } static void vips_foreign_load_fits_init( VipsForeignLoadFits *fits ) { } #endif /*HAVE_CFITSIO*/ vips-8.2.2/libvips/foreign/ppm.h0000664000175000017500000000265312530402247013502 00000000000000/* common defs for ppm read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PPM_H #define VIPS_PPM_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips__ppm_header( const char *name, VipsImage *out ); int vips__ppm_load( const char *name, VipsImage *out ); int vips__ppm_isppm( const char *filename ); VipsForeignFlags vips__ppm_flags( const char *filename ); extern const char *vips__ppm_suffs[]; int vips__ppm_save( VipsImage *in, const char *filename, gboolean ascii, gboolean squash ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PPM_H*/ vips-8.2.2/libvips/foreign/matrixsave.c0000664000175000017500000001267312530402247015067 00000000000000/* save to matrix * * 2/7/13 * - wrap a class around the matrix writer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "csv.h" typedef struct _VipsForeignSaveMatrix { VipsForeignSave parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveMatrix; typedef VipsForeignSaveClass VipsForeignSaveMatrixClass; G_DEFINE_TYPE( VipsForeignSaveMatrix, vips_foreign_save_matrix, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_matrix_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveMatrix *matrix = (VipsForeignSaveMatrix *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_matrix_parent_class )-> build( object ) ) return( -1 ); if( vips__matrix_write( save->ready, matrix->filename ) ) return( -1 ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_matrix[10] = { /* UC C US S UI I F X D DX */ D, D, D, D, D, D, D, D, D, D }; static void vips_foreign_save_matrix_class_init( VipsForeignSaveMatrixClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "matrixsave"; object_class->description = _( "save image to matrix file" ); object_class->build = vips_foreign_save_matrix_build; foreign_class->suffs = vips__foreign_matrix_suffs; save_class->saveable = VIPS_SAVEABLE_MONO; save_class->format_table = bandfmt_matrix; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveMatrix, filename ), NULL ); } static void vips_foreign_save_matrix_init( VipsForeignSaveMatrix *matrix ) { } /** * vips_matrixsave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Write @in to @filename in matrix format. See vips_matrixload() for a * description of the format. * * See also: vips_matrixload(). * * Returns: 0 on success, -1 on error. */ int vips_matrixsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "matrixsave", ap, in, filename ); va_end( ap ); return( result ); } typedef struct _VipsForeignPrintMatrix { VipsForeignSave parent_object; } VipsForeignPrintMatrix; typedef VipsForeignSaveClass VipsForeignPrintMatrixClass; G_DEFINE_TYPE( VipsForeignPrintMatrix, vips_foreign_print_matrix, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_print_matrix_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; if( VIPS_OBJECT_CLASS( vips_foreign_print_matrix_parent_class )-> build( object ) ) return( -1 ); if( vips__matrix_write_file( save->ready, stdout ) ) return( -1 ); return( 0 ); } static void vips_foreign_print_matrix_class_init( VipsForeignPrintMatrixClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; object_class->nickname = "matrixprint"; object_class->description = _( "print matrix" ); object_class->build = vips_foreign_print_matrix_build; foreign_class->suffs = vips__foreign_matrix_suffs; save_class->saveable = VIPS_SAVEABLE_MONO; save_class->format_table = bandfmt_matrix; } static void vips_foreign_print_matrix_init( VipsForeignPrintMatrix *matrix ) { } /** * vips_matrixprint: * @in: image to print * @...: %NULL-terminated list of optional named arguments * * Print @in to %stdout in matrix format. See vips_matrixload() for a * description of the format. * * See also: vips_matrixload(). * * Returns: 0 on success, -1 on error. */ int vips_matrixprint( VipsImage *in, ... ) { va_list ap; int result; va_start( ap, in ); result = vips_call_split( "matrixprint", ap, in ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/vips2webp.c0000664000175000017500000000644612530402247014626 00000000000000/* wrap libwebp libray for write * * 6/8/13 * - from vips2jpeg.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_LIBWEBP #include #include #include #include "webp.h" typedef size_t (*webp_encoder)( const uint8_t *rgb, int width, int height, int stride, float quality_factor, uint8_t **output ); typedef size_t (*webp_encoder_lossless)( const uint8_t *rgb, int width, int height, int stride, uint8_t **output ); int vips__webp_write_file( VipsImage *in, const char *filename, int Q, gboolean lossless ) { VipsImage *memory; size_t len; uint8_t *buffer; FILE *fp; if( !(memory = vips_image_copy_memory( in )) ) return( -1 ); if( lossless ) { webp_encoder_lossless encoder; if( in->Bands == 4 ) encoder = WebPEncodeLosslessRGBA; else encoder = WebPEncodeLosslessRGB; if( !(len = encoder( VIPS_IMAGE_ADDR( memory, 0, 0 ), memory->Xsize, memory->Ysize, VIPS_IMAGE_SIZEOF_LINE( memory ), &buffer )) ) { VIPS_UNREF( memory ); vips_error( "vips2webp", "%s", _( "unable to encode" ) ); return( -1 ); } } else { webp_encoder encoder; if( in->Bands == 4 ) encoder = WebPEncodeRGBA; else encoder = WebPEncodeRGB; if( !(len = encoder( VIPS_IMAGE_ADDR( memory, 0, 0 ), memory->Xsize, memory->Ysize, VIPS_IMAGE_SIZEOF_LINE( memory ), Q, &buffer )) ) { VIPS_UNREF( memory ); vips_error( "vips2webp", "%s", _( "unable to encode" ) ); return( -1 ); } } VIPS_UNREF( memory ); if( !(fp = vips__file_open_write( filename, FALSE )) ) { free( buffer ); return( -1 ); } if( vips__file_write( buffer, len, 1, fp ) ) { fclose( fp ); free( buffer ); return( -1 ); } fclose( fp ); free( buffer ); return( 0 ); } int vips__webp_write_buffer( VipsImage *in, void **obuf, size_t *olen, int Q, gboolean lossless ) { VipsImage *memory; webp_encoder encoder; if( !(memory = vips_image_copy_memory( in )) ) return( -1 ); if( in->Bands == 4 ) encoder = WebPEncodeRGBA; else encoder = WebPEncodeRGB; if( !(*olen = encoder( VIPS_IMAGE_ADDR( memory, 0, 0 ), memory->Xsize, memory->Ysize, VIPS_IMAGE_SIZEOF_LINE( memory ), Q, (uint8_t **) obuf )) ) { VIPS_UNREF( memory ); vips_error( "vips2webp", "%s", _( "unable to encode" ) ); return( -1 ); } VIPS_UNREF( memory ); return( 0 ); } #endif /*HAVE_LIBWEBP*/ vips-8.2.2/libvips/foreign/ppmsave.c0000664000175000017500000001117512530402247014353 00000000000000/* save to ppm * * 2/12/11 * - wrap a class around the ppm writer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "ppm.h" typedef struct _VipsForeignSavePpm { VipsForeignSave parent_object; char *filename; gboolean ascii; gboolean squash; } VipsForeignSavePpm; typedef VipsForeignSaveClass VipsForeignSavePpmClass; G_DEFINE_TYPE( VipsForeignSavePpm, vips_foreign_save_ppm, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_ppm_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSavePpm *ppm = (VipsForeignSavePpm *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_ppm_parent_class )-> build( object ) ) return( -1 ); if( vips__ppm_save( save->ready, ppm->filename, ppm->ascii, ppm->squash ) ) return( -1 ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_ppm[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, UI, UI, F, F, F, F }; static void vips_foreign_save_ppm_class_init( VipsForeignSavePpmClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "ppmsave"; object_class->description = _( "save image to ppm file" ); object_class->build = vips_foreign_save_ppm_build; foreign_class->suffs = vips__ppm_suffs; save_class->saveable = VIPS_SAVEABLE_RGB; save_class->format_table = bandfmt_ppm; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSavePpm, filename ), NULL ); VIPS_ARG_BOOL( class, "ascii", 10, _( "ASCII" ), _( "save as ascii" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePpm, ascii ), FALSE ); VIPS_ARG_BOOL( class, "squash", 11, _( "Squash" ), _( "save as one bit" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSavePpm, squash ), FALSE ); } static void vips_foreign_save_ppm_init( VipsForeignSavePpm *ppm ) { } /** * vips_ppmsave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @ascii: save as ASCII rather than binary * @squash: squash 8-bit images down to one bit * * Write a VIPS image to a file as PPM. It can write 1, 8, 16 or * 32 bit unsigned integer images, float images, colour or monochrome, * stored as binary or ASCII. * Integer images of more than 8 bits can only be stored in ASCII. * * When writing float (PFM) images the scale factor is set from the * "pfm-scale" metadata. * * Set @ascii to %TRUE to write as human-readable ASCII. Normally data is * written in binary. * * Set @squash to %TRUE to squash 8-bit images down to one bit. The saver does * no dithering, that's up to you. * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_ppmsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "ppmsave", ap, in, filename ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/csv.c0000664000175000017500000003627612651123224013503 00000000000000/* Read/write csv files. * * 19/12/05 JC * - hacked from ppm reader * 9/6/06 * - hacked from im_debugim * 11/9/06 * - now distingushes whitespace and separators, so we can have blank * fields * 20/9/06 * - oop, unquoted trailing columns could get missed * 23/10/06 * - allow separator to be specified (default "\t", ) * 17/11/06 * - oops, was broken * 17/5/07 * - added im_csv2vips_header() * 4/2/10 * - gtkdoc * 1/3/10 * - allow lines that end with EOF * 23/9/11 * - allow quoted strings, including escaped quotes * 16/12/11 * - rework as a set of fns ready for wrapping as a class * 23/2/12 * - report positions for EOF/EOL errors * 2/7/13 * - add matrix read/write * 4/6/15 * - try to support DOS files under linux ... we have to look for \r\n * linebreaks */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "csv.h" /* Skip to the start of the next line (ie. read until we see a '\n'), return * zero if we are at EOF. * * Files can end with EOF or with \nEOF. Tricky! */ static int skip_line( FILE *fp ) { int ch; /* Are we at a delayed EOF? See below. */ if( (ch = vips__fgetc( fp )) == EOF ) return( 0 ); ungetc( ch, fp ); /* If we hit EOF and no \n, wait until the next call to report EOF. */ while( (ch = vips__fgetc( fp )) != '\n' && ch != EOF ) ; return( -1 ); } static int skip_white( FILE *fp, const char whitemap[256] ) { int ch; do { ch = vips__fgetc( fp ); } while( ch != EOF && ch != '\n' && whitemap[ch] ); ungetc( ch, fp ); return( ch ); } static int skip_to_quote( FILE *fp ) { int ch; do { ch = vips__fgetc( fp ); /* Ignore \" in strings. */ if( ch == '\\' ) ch = vips__fgetc( fp ); else if( ch == '"' ) break; } while( ch != EOF && ch != '\n' ); ungetc( ch, fp ); return( ch ); } static int skip_to_sep( FILE *fp, const char sepmap[256] ) { int ch; do { ch = vips__fgetc( fp ); } while( ch != EOF && ch != '\n' && !sepmap[ch] ); ungetc( ch, fp ); return( ch ); } /* Read a single item. Syntax is: * * element : * whitespace* item whitespace* [EOF|EOL|separator] * * item : * double | * "anything" | * empty * * the anything in quotes can contain " escaped with \ * * Return the char that caused failure on fail (EOF or \n). */ static int read_double( FILE *fp, const char whitemap[256], const char sepmap[256], int lineno, int colno, double *out ) { int ch; /* The fscanf() may change this ... but all other cases need a zero. */ *out = 0; ch = skip_white( fp, whitemap ); if( ch == EOF || ch == '\n' ) return( ch ); if( ch == '"' ) { (void) vips__fgetc( fp ); (void) skip_to_quote( fp ); (void) vips__fgetc( fp ); } else if( !sepmap[ch] && fscanf( fp, "%lf", out ) != 1 ) { /* Only a warning, since (for example) exported spreadsheets * will often have text or date fields. */ vips_warn( "csv2vips", _( "error parsing number, line %d, column %d" ), lineno, colno ); /* Step over the bad data to the next separator. */ (void) skip_to_sep( fp, sepmap ); } /* Don't need to check result, we have read a field successfully. */ ch = skip_white( fp, whitemap ); /* If it's a separator, we have to step over it. */ if( ch != EOF && sepmap[ch] ) (void) vips__fgetc( fp ); return( 0 ); } static int read_csv( FILE *fp, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator, gboolean read_image ) { int i; char whitemap[256]; char sepmap[256]; const char *p; fpos_t pos; int columns; int ch; double d; double *buf; int y; /* Make our char maps. */ for( i = 0; i < 256; i++ ) { whitemap[i] = 0; sepmap[i] = 0; } for( p = whitespace; *p; p++ ) whitemap[(int) *p] = 1; for( p = separator; *p; p++ ) sepmap[(int) *p] = 1; /* Skip first few lines. */ for( i = 0; i < skip; i++ ) if( !skip_line( fp ) ) { vips_error( "csv2vips", "%s", _( "end of file while skipping start" ) ); return( -1 ); } /* Parse the first line to get number of columns. Only bother checking * fgetpos() the first time we use it: assume it's working after this. */ if( fgetpos( fp, &pos ) ) { vips_error_system( errno, "csv2vips", "%s", _( "unable to seek" ) ); return( -1 ); } for( columns = 0; (ch = read_double( fp, whitemap, sepmap, skip + 1, columns + 1, &d )) == 0; columns++ ) ; (void) fsetpos( fp, &pos ); if( columns == 0 ) { vips_error( "csv2vips", "%s", _( "empty line" ) ); return( -1 ); } /* If lines is -1, we have to scan the whole file to get the * number of lines out. */ if( lines == -1 ) { (void) fgetpos( fp, &pos ); for( lines = 0; skip_line( fp ); lines++ ) ; (void) fsetpos( fp, &pos ); } vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); vips_image_init_fields( out, columns, lines, 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); /* Just reading the header? We are done. */ if( !read_image ) return( 0 ); if( !(buf = VIPS_ARRAY( out, VIPS_IMAGE_N_ELEMENTS( out ), double )) ) return( -1 ); for( y = 0; y < lines; y++ ) { int x; for( x = 0; x < columns; x++ ) { int lineno = y + skip + 1; int colno = x + 1; ch = read_double( fp, whitemap, sepmap, lineno, colno, &d ); if( ch == EOF ) { vips_error( "csv2vips", _( "unexpected EOF, line %d col %d" ), lineno, colno ); return( -1 ); } else if( ch == '\n' ) { vips_error( "csv2vips", _( "unexpected EOL, line %d col %d" ), lineno, colno ); return( -1 ); } else if( ch ) /* Parse error. */ return( -1 ); buf[x] = d; } if( vips_image_write_line( out, y, (VipsPel *) buf ) ) return( -1 ); /* Skip over the '\n' to the next line. */ skip_line( fp ); } return( 0 ); } int vips__csv_read( const char *filename, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator ) { FILE *fp; if( !(fp = vips__file_open_read( filename, NULL, TRUE )) ) return( -1 ); if( read_csv( fp, out, skip, lines, whitespace, separator, TRUE ) ) { fclose( fp ); return( -1 ); } fclose( fp ); return( 0 ); } int vips__csv_read_header( const char *filename, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator ) { FILE *fp; if( !(fp = vips__file_open_read( filename, NULL, TRUE )) ) return( -1 ); if( read_csv( fp, out, skip, lines, whitespace, separator, FALSE ) ) { fclose( fp ); return( -1 ); } fclose( fp ); return( 0 ); } const char *vips__foreign_csv_suffs[] = { ".csv", NULL }; #define PRINT_INT( TYPE ) fprintf( fp, "%d", *((TYPE*)p) ); #define PRINT_FLOAT( TYPE ) fprintf( fp, "%g", *((TYPE*)p) ); #define PRINT_COMPLEX( TYPE ) fprintf( fp, "(%g, %g)", \ ((TYPE*)p)[0], ((TYPE*)p)[1] ); static int vips2csv( VipsImage *in, FILE *fp, const char *sep ) { int w = VIPS_IMAGE_N_ELEMENTS( in ); int es = VIPS_IMAGE_SIZEOF_ELEMENT( in ); int x, y; VipsPel *p; p = in->data; for( y = 0; y < in->Ysize; y++ ) { for( x = 0; x < w; x++ ) { if( x > 0 ) fprintf( fp, "%s", sep ); switch( in->BandFmt ) { case VIPS_FORMAT_UCHAR: PRINT_INT( unsigned char ); break; case VIPS_FORMAT_CHAR: PRINT_INT( char ); break; case VIPS_FORMAT_USHORT: PRINT_INT( unsigned short ); break; case VIPS_FORMAT_SHORT: PRINT_INT( short ); break; case VIPS_FORMAT_UINT: PRINT_INT( unsigned int ); break; case VIPS_FORMAT_INT: PRINT_INT( int ); break; case VIPS_FORMAT_FLOAT: PRINT_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: PRINT_FLOAT( double ); break; case VIPS_FORMAT_COMPLEX: PRINT_COMPLEX( float ); break; case VIPS_FORMAT_DPCOMPLEX: PRINT_COMPLEX( double ); break; default: g_assert_not_reached(); } p += es; } fprintf( fp, "\n" ); } return( 0 ); } int vips__csv_write( VipsImage *in, const char *filename, const char *separator ) { FILE *fp; VipsImage *memory; if( vips_check_mono( "vips2csv", in ) || vips_check_uncoded( "vips2csv", in ) || !(memory = vips_image_copy_memory( in )) ) return( -1 ); if( !(fp = vips__file_open_write( filename, TRUE )) ) { VIPS_UNREF( memory ); return( -1 ); } if( vips2csv( memory, fp, separator ) ) { fclose( fp ); VIPS_UNREF( memory ); return( -1 ); } fclose( fp ); VIPS_UNREF( memory ); return( 0 ); } /* Read to non-whitespace, or buffer overflow. */ static int fetch_nonwhite( FILE *fp, const char whitemap[256], char *buf, int max ) { int ch; int i; for( i = 0; i < max - 1; i++ ) { ch = vips__fgetc( fp ); if( ch == EOF || ch == '\n' || whitemap[ch] ) break; buf[i] = ch; } buf[i] = '\0'; /* We mustn't skip the terminator. */ ungetc( ch, fp ); return( ch ); } /* Read a single double in ascii (not locale) encoding. * * Return the char that caused failure on fail (EOF or \n). */ static int read_ascii_double( FILE *fp, const char whitemap[256], double *out ) { int ch; char buf[256]; char *p; *out = 0.0; ch = skip_white( fp, whitemap ); if( ch == EOF || ch == '\n' ) return( ch ); fetch_nonwhite( fp, whitemap, buf, 256 ); /* The str we fetched must contain at least 1 digit. This helps stop * us trying to convert "MATLAB" (for example) to a number and * getting zero. */ for( p = buf; *p; p++ ) if( isdigit( *p ) ) break; if( !*p ) return( *buf ); *out = g_ascii_strtod( buf, NULL ); return( 0 ); } /* Read the header. Two numbers for width and height, and two optional * numbers for scale and offset. */ static int vips__matrix_header( char *whitemap, FILE *fp, int *width, int *height, double *scale, double *offset ) { double header[4]; double d; int i; int ch; for( i = 0; i < 4 && (ch = read_ascii_double( fp, whitemap, &header[i] )) == 0; i++ ) ; if( i < 2 ) { vips_error( "mask2vips", "%s", _( "no width / height" ) ); return( -1 ); } if( VIPS_FLOOR( header[0] ) != header[0] || VIPS_FLOOR( header[1] ) != header[1] ) { vips_error( "mask2vips", "%s", _( "width / height not int" ) ); return( -1 ); } *width = header[0]; *height = header[1]; if( *width <= 0 || *width > 100000 || *height <= 0 || *height > 100000 ) { vips_error( "mask2vips", "%s", _( "width / height out of range" ) ); return( -1 ); } if( i == 3 ) { vips_error( "mask2vips", "%s", _( "bad scale / offset" ) ); return( -1 ); } if( (ch = read_ascii_double( fp, whitemap, &d )) != '\n' ) { vips_error( "mask2vips", "%s", _( "extra chars in header" ) ); return( -1 ); } if( i > 2 && header[2] == 0.0 ) { vips_error( "mask2vips", "%s", _( "zero scale" ) ); return( -1 ); } *scale = i > 2 ? header[2] : 1.0; *offset = i > 2 ? header[3] : 0.0; skip_line( fp ); return( 0 ); } #define WHITESPACE " \"\t\n;," /* Get the header from an matrix file. * * Also read the first line and make sure there are the right number of * entries. */ int vips__matrix_read_header( const char *filename, int *width, int *height, double *scale, double *offset ) { char whitemap[256]; int i; char *p; FILE *fp; int ch; double d; for( i = 0; i < 256; i++ ) whitemap[i] = 0; for( p = WHITESPACE; *p; p++ ) whitemap[(int) *p] = 1; if( !(fp = vips__file_open_read( filename, NULL, TRUE )) ) return( -1 ); if( vips__matrix_header( whitemap, fp, width, height, scale, offset ) ) { fclose( fp ); return( -1 ); } for( i = 0; i < *width; i++ ) { ch = read_ascii_double( fp, whitemap, &d ); if( ch ) { fclose( fp ); vips_error( "mask2vips", "%s", _( "line too short" ) ); return( -1 ); } } /* Deliberately don't check for line too long. */ fclose( fp ); return( 0 ); } int vips__matrix_ismatrix( const char *filename ) { int width; int height; double scale; double offset; int result; vips_error_freeze(); result = vips__matrix_read_header( filename, &width, &height, &scale, &offset ); vips_error_thaw(); return( result == 0 ); } static int vips__matrix_body( char *whitemap, VipsImage *out, FILE *fp ) { int x, y; for( y = 0; y < out->Ysize; y++ ) { for( x = 0; x < out->Xsize; x++ ) { int ch; double d; ch = read_ascii_double( fp, whitemap, &d ); if( ch == EOF || ch == '\n' ) { vips_error( "mask2vips", _( "line %d too short" ), y + 1 ); return( -1 ); } *VIPS_MATRIX( out, x, y ) = d; /* Deliberately don't check for line too long. */ } skip_line( fp ); } return( 0 ); } VipsImage * vips__matrix_read_file( FILE *fp ) { char whitemap[256]; int i; char *p; int width; int height; double scale; double offset; VipsImage *out; for( i = 0; i < 256; i++ ) whitemap[i] = 0; for( p = WHITESPACE; *p; p++ ) whitemap[(int) *p] = 1; if( vips__matrix_header( whitemap, fp, &width, &height, &scale, &offset ) ) return( NULL ); if( !(out = vips_image_new_matrix( width, height )) ) return( NULL ); vips_image_set_double( out, "scale", scale ); vips_image_set_double( out, "offset", offset ); if( vips__matrix_body( whitemap, out, fp ) ) { g_object_unref( out ); return( NULL ); } return( out ); } VipsImage * vips__matrix_read( const char *filename ) { FILE *fp; VipsImage *out; if( !(fp = vips__file_open_read( filename, NULL, TRUE )) ) return( NULL ); out = vips__matrix_read_file( fp ); fclose( fp ); return( out ); } int vips__matrix_write_file( VipsImage *in, FILE *fp ) { VipsImage *mask; int x, y; if( vips_check_matrix( "vips2mask", in, &mask ) ) return( -1 ); fprintf( fp, "%d %d ", mask->Xsize, mask->Ysize ); if( vips_image_get_typeof( mask, "scale" ) && vips_image_get_typeof( mask, "offset" ) ) fprintf( fp, "%g %g ", vips_image_get_scale( mask ), vips_image_get_offset( mask ) ); fprintf( fp, "\n" ); for( y = 0; y < mask->Ysize; y++ ) { for( x = 0; x < mask->Xsize; x++ ) fprintf( fp, "%g ", *VIPS_MATRIX( mask, x, y ) ); fprintf( fp, "\n" ); } g_object_unref( mask ); return( 0 ); } int vips__matrix_write( VipsImage *in, const char *filename ) { FILE *fp; int result; if( !(fp = vips__file_open_write( filename, TRUE )) ) return( -1 ); result = vips__matrix_write_file( in, fp ); fclose( fp ); return( result ); } const char *vips__foreign_matrix_suffs[] = { ".mat", NULL }; vips-8.2.2/libvips/foreign/csvload.c0000664000175000017500000001421712645526336014350 00000000000000/* load csv from a file * * 5/12/11 * - from csvload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "csv.h" typedef struct _VipsForeignLoadCsv { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; int skip; int lines; const char *whitespace; const char *separator; } VipsForeignLoadCsv; typedef VipsForeignLoadClass VipsForeignLoadCsvClass; G_DEFINE_TYPE( VipsForeignLoadCsv, vips_foreign_load_csv, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_csv_get_flags_filename( const char *filename ) { return( 0 ); } static VipsForeignFlags vips_foreign_load_csv_get_flags( VipsForeignLoad *load ) { VipsForeignLoadCsv *csv = (VipsForeignLoadCsv *) load; return( vips_foreign_load_csv_get_flags_filename( csv->filename ) ); } static int vips_foreign_load_csv_header( VipsForeignLoad *load ) { VipsForeignLoadCsv *csv = (VipsForeignLoadCsv *) load; if( vips__csv_read_header( csv->filename, load->out, csv->skip, csv->lines, csv->whitespace, csv->separator ) ) return( -1 ); VIPS_SETSTR( load->out->filename, csv->filename ); return( 0 ); } static int vips_foreign_load_csv_load( VipsForeignLoad *load ) { VipsForeignLoadCsv *csv = (VipsForeignLoadCsv *) load; if( vips__csv_read( csv->filename, load->real, csv->skip, csv->lines, csv->whitespace, csv->separator ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_csv_class_init( VipsForeignLoadCsvClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "csvload"; object_class->description = _( "load csv from file" ); foreign_class->suffs = vips__foreign_csv_suffs; /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; load_class->get_flags_filename = vips_foreign_load_csv_get_flags_filename; load_class->get_flags = vips_foreign_load_csv_get_flags; load_class->header = vips_foreign_load_csv_header; load_class->load = vips_foreign_load_csv_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, filename ), NULL ); VIPS_ARG_INT( class, "skip", 10, _( "Skip" ), _( "Skip this many lines at the start of the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, skip ), 0, 10000000, 0 ); VIPS_ARG_INT( class, "lines", 11, _( "Lines" ), _( "Read this many lines from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, lines ), -1, 10000000, 0 ); VIPS_ARG_STRING( class, "whitespace", 12, _( "Whitespace" ), _( "Set of whitespace characters" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, whitespace ), " " ); VIPS_ARG_STRING( class, "separator", 13, _( "Separator" ), _( "Set of separator characters" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadCsv, separator ), ";,\t" ); } static void vips_foreign_load_csv_init( VipsForeignLoadCsv *csv ) { csv->lines = -1; csv->whitespace = g_strdup( " " ); csv->separator = g_strdup( ";,\t" ); } /** * vips_csvload: * @filename: file to load * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @skip: skip this many lines at start of file * @lines: read this many lines from file * @whitespace: set of whitespace characters * @separator: set of separator characters * * Load a CSV (comma-separated values) file. The output image is always 1 * band (monochrome), #VIPS_FORMAT_DOUBLE. Use vips_bandfold() to turn * RGBRGBRGB mono images into colour iamges. * * Items in lines can be either floating point numbers in the C locale, or * strings enclosed in double-quotes ("), or empty. * You can use a backslash (\) within the quotes to escape special characters, * such as quote marks. * * The reader is deliberately rather fussy: it will fail if there are any * short lines, or if the file is too short. It will ignore lines that are * too long. * * @skip sets the number of lines to skip at the start of the file. * Default zero. * * @lines sets the number of lines to read from the file. Default -1, * meaning read all lines to end of file. * * @whitespace sets the skippable whitespace characters. * Default space. * Whitespace characters are always run together. * * @separator sets the characters that separate fields. * Default ;,tab. Separators are never run together. * * See also: vips_image_new_from_file(), vips_bandfold(). * * Returns: 0 on success, -1 on error. */ int vips_csvload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "csvload", ap, filename, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/vipspng.c0000664000175000017500000005767412620616171014407 00000000000000/* Load/save png image with libpng * * 28/11/03 JC * - better no-overshoot on tile loop * 22/2/05 * - read non-interlaced PNG with a line buffer (thanks Michel Brabants) * 11/1/06 * - read RGBA palette-ized images more robustly (thanks Tom) * 20/4/06 * - auto convert to sRGB/mono (with optional alpha) for save * 1/5/06 * - from vips_png.c * 8/5/06 * - set RGB16/GREY16 if appropriate * 2/11/07 * - use im_wbuffer() API for BG writes * 28/2/09 * - small cleanups * 4/2/10 * - gtkdoc * - fixed 16-bit save * 12/5/10 * - lololo but broke 8-bit save, fixed again * 20/7/10 Tim Elliott * - added im_vips2bufpng() * 8/1/11 * - get set png resolution (thanks Zhiyu Wu) * 17/3/11 * - update for libpng-1.5 API changes * - better handling of palette and 1-bit images * - ... but we are now png 1.2.9 and later only :-( argh * 28/3/11 * - argh gamma was wrong when viewed in firefox * 19/12/11 * - rework as a set of fns ready for wrapping as a class * 7/2/12 * - mild refactoring * - add support for sequential reads * 23/2/12 * - add a longjmp() to our error handler to stop the default one running * 13/3/12 * - add ICC profile read/write * 15/3/12 * - better alpha handling * - sanity check pixel geometry before allowing read * 17/6/12 * - more alpha fixes ... some images have no transparency chunk but * still set color_type to alpha * 16/7/13 * - more robust error handling from libpng * 9/8/14 * - don't check profiles, helps with libpng >=1.6.11 * 27/10/14 Lovell * - add @filter option * 26/2/15 * - close the read down early for a header read ... this saves an * fd during file read, handy for large numbers of input images */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_PNG #include #include #include #include #include #include #include #include "vipspng.h" #if PNG_LIBPNG_VER < 10003 #error "PNG library too old." #endif static void user_error_function( png_structp png_ptr, png_const_charp error_msg ) { vips_error( "vipspng", "%s", error_msg ); /* This function must not return or the default error handler will be * invoked. */ longjmp( png_jmpbuf( png_ptr ), -1 ); } static void user_warning_function( png_structp png_ptr, png_const_charp warning_msg ) { vips_error( "vipspng", "%s", warning_msg ); } /* What we track during a PNG read. */ typedef struct { char *name; VipsImage *out; gboolean readbehind; int y_pos; png_structp pPng; png_infop pInfo; png_bytep *row_pointer; /* For FILE input. */ FILE *fp; /* For memory input. */ const void *buffer; size_t length; size_t read_pos; } Read; /* Can be called many times. */ static void read_destroy( Read *read ) { VIPS_FREEF( fclose, read->fp ); if( read->pPng ) png_destroy_read_struct( &read->pPng, &read->pInfo, NULL ); VIPS_FREE( read->row_pointer ); } static void read_close_cb( VipsImage *out, Read *read ) { read_destroy( read ); } static Read * read_new( VipsImage *out, gboolean readbehind ) { Read *read; if( !(read = VIPS_NEW( out, Read )) ) return( NULL ); read->name = NULL; read->readbehind = readbehind; read->out = out; read->y_pos = 0; read->pPng = NULL; read->pInfo = NULL; read->row_pointer = NULL; read->fp = NULL; read->buffer = NULL; read->length = 0; read->read_pos = 0; g_signal_connect( out, "close", G_CALLBACK( read_close_cb ), read ); if( !(read->pPng = png_create_read_struct( PNG_LIBPNG_VER_STRING, NULL, user_error_function, user_warning_function )) ) return( NULL ); #ifdef PNG_SKIP_sRGB_CHECK_PROFILE /* Prevent libpng (>=1.6.11) verifying sRGB profiles. */ png_set_option( read->pPng, PNG_SKIP_sRGB_CHECK_PROFILE, PNG_OPTION_ON ); #endif /*PNG_SKIP_sRGB_CHECK_PROFILE*/ /* Catch PNG errors from png_create_info_struct(). */ if( setjmp( png_jmpbuf( read->pPng ) ) ) return( NULL ); if( !(read->pInfo = png_create_info_struct( read->pPng )) ) return( NULL ); return( read ); } static Read * read_new_filename( VipsImage *out, const char *name, gboolean readbehind ) { Read *read; if( !(read = read_new( out, readbehind )) ) return( NULL ); read->name = vips_strdup( VIPS_OBJECT( out ), name ); if( !(read->fp = vips__file_open_read( name, NULL, FALSE )) ) return( NULL ); /* Catch PNG errors from png_read_info(). */ if( setjmp( png_jmpbuf( read->pPng ) ) ) return( NULL ); /* Read enough of the file that png_get_interlace_type() will start * working. */ png_init_io( read->pPng, read->fp ); png_read_info( read->pPng, read->pInfo ); return( read ); } /* Read a png header. */ static int png2vips_header( Read *read, VipsImage *out ) { png_uint_32 width, height; int bit_depth, color_type; int interlace_type; png_uint_32 res_x, res_y; int unit_type; png_charp name; int compression_type; /* Well thank you, libpng. */ #if PNG_LIBPNG_VER < 10400 png_charp profile; #else png_bytep profile; #endif png_uint_32 proflen; int bands; VipsInterpretation interpretation; double Xres, Yres; if( setjmp( png_jmpbuf( read->pPng ) ) ) return( -1 ); png_get_IHDR( read->pPng, read->pInfo, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL ); /* png_get_channels() gives us 1 band for palette images ... so look * at colour_type for output bands. * * Ignore alpha, we detect that separately below. */ switch( color_type ) { case PNG_COLOR_TYPE_PALETTE: bands = 3; break; case PNG_COLOR_TYPE_GRAY_ALPHA: case PNG_COLOR_TYPE_GRAY: bands = 1; break; case PNG_COLOR_TYPE_RGB: case PNG_COLOR_TYPE_RGB_ALPHA: bands = 3; break; default: vips_error( "png2vips", "%s", _( "unsupported color type" ) ); return( -1 ); } if( bit_depth > 8 ) { if( bands < 3 ) interpretation = VIPS_INTERPRETATION_GREY16; else interpretation = VIPS_INTERPRETATION_RGB16; } else { if( bands < 3 ) interpretation = VIPS_INTERPRETATION_B_W; else interpretation = VIPS_INTERPRETATION_sRGB; } /* Expand palette images. */ if( color_type == PNG_COLOR_TYPE_PALETTE ) png_set_palette_to_rgb( read->pPng ); /* Expand transparency. */ if( png_get_valid( read->pPng, read->pInfo, PNG_INFO_tRNS ) ) { png_set_tRNS_to_alpha( read->pPng ); bands += 1; } else if( color_type == PNG_COLOR_TYPE_GRAY_ALPHA || color_type == PNG_COLOR_TYPE_RGB_ALPHA ) { /* Some images have no transparency chunk, but still set * color_type to alpha. */ bands += 1; } /* Expand <8 bit images to full bytes. */ if( color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8 ) png_set_expand_gray_1_2_4_to_8( read->pPng ); /* If we're an INTEL byte order machine and this is 16bits, we need * to swap bytes. */ if( bit_depth > 8 && !vips_amiMSBfirst() ) png_set_swap( read->pPng ); /* Get resolution. Default to 72 pixels per inch, the usual png value. */ unit_type = PNG_RESOLUTION_METER; res_x = (72 / 2.54 * 100); res_y = (72 / 2.54 * 100); png_get_pHYs( read->pPng, read->pInfo, &res_x, &res_y, &unit_type ); switch( unit_type ) { case PNG_RESOLUTION_METER: Xres = res_x / 1000.0; Yres = res_y / 1000.0; break; default: Xres = res_x; Yres = res_y; break; } /* Set VIPS header. */ vips_image_init_fields( out, width, height, bands, bit_depth > 8 ? VIPS_FORMAT_USHORT : VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, interpretation, Xres, Yres ); /* Sequential mode needs thinstrip to work with things like * vips_shrink(). */ vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); /* Fetch the ICC profile. @name is useless, something like "icc" or * "ICC Profile" etc. Ignore it. * * @profile was png_charpp in libpngs < 1.5, png_bytepp is the * modern one. Ignore the warning, if any. */ if( png_get_iCCP( read->pPng, read->pInfo, &name, &compression_type, &profile, &proflen ) ) { void *profile_copy; #ifdef DEBUG printf( "png2vips_header: attaching %zd bytes of ICC profile\n", proflen ); printf( "png2vips_header: name = \"%s\"\n", name ); #endif /*DEBUG*/ if( !(profile_copy = vips_malloc( NULL, proflen )) ) return( -1 ); memcpy( profile_copy, profile, proflen ); vips_image_set_blob( out, VIPS_META_ICC_NAME, (VipsCallbackFn) vips_free, profile_copy, proflen ); } /* Sanity-check line size. */ png_read_update_info( read->pPng, read->pInfo ); if( png_get_rowbytes( read->pPng, read->pInfo ) != VIPS_IMAGE_SIZEOF_LINE( out ) ) { vips_error( "vipspng", "%s", _( "unable to read PNG header" ) ); return( -1 ); } return( 0 ); } /* Read a PNG file header into a VIPS header. */ int vips__png_header( const char *name, VipsImage *out ) { Read *read; if( !(read = read_new_filename( out, name, FALSE )) || png2vips_header( read, out ) ) return( -1 ); /* Just a header read: we can free the read early and save an fd. */ read_destroy( read ); return( 0 ); } /* Out is a huge "t" buffer we decompress to. */ static int png2vips_interlace( Read *read, VipsImage *out ) { int y; #ifdef DEBUG printf( "png2vips_interlace: reading whole image\n" ); #endif /*DEBUG*/ if( vips_image_write_prepare( out ) ) return( -1 ); if( setjmp( png_jmpbuf( read->pPng ) ) ) return( -1 ); if( !(read->row_pointer = VIPS_ARRAY( NULL, out->Ysize, png_bytep )) ) return( -1 ); for( y = 0; y < out->Ysize; y++ ) read->row_pointer[y] = VIPS_IMAGE_ADDR( out, 0, y ); png_read_image( read->pPng, read->row_pointer ); png_read_end( read->pPng, NULL ); read_destroy( read ); return( 0 ); } static int png2vips_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; Read *read = (Read *) a; int y; #ifdef DEBUG printf( "png2vips_generate: line %d, %d rows\n", r->top, r->height ); printf( "png2vips_generate: y_top = %d\n", read->y_pos ); #endif /*DEBUG*/ /* We're inside a tilecache where tiles are the full image width, so * this should always be true. */ g_assert( r->left == 0 ); g_assert( r->width == or->im->Xsize ); g_assert( VIPS_RECT_BOTTOM( r ) <= or->im->Ysize ); /* Tiles should always be a strip in height, unless it's the final * strip. */ g_assert( r->height == VIPS_MIN( 8, or->im->Ysize - r->top ) ); /* And check that y_pos is correct. It should be, since we are inside * a vips_sequential(). */ if( r->top != read->y_pos ) { vips_error( "vipspng", _( "out of order read at line %d" ), read->y_pos ); return( -1 ); } for( y = 0; y < r->height; y++ ) { png_bytep q = (png_bytep) VIPS_REGION_ADDR( or, 0, r->top + y ); /* We need to catch and ignore errors from read_row(). */ if( !setjmp( png_jmpbuf( read->pPng ) ) ) png_read_row( read->pPng, q, NULL ); else { #ifdef DEBUG printf( "png2vips_generate: png_read_row() failed, " "line %d\n", r->top + y ); printf( "png2vips_generate: file %s\n", read->name ); printf( "png2vips_generate: thread %p\n", g_thread_self() ); #endif /*DEBUG*/ } read->y_pos += 1; } /* Turn errors back on. png_read_end() can trigger them too. */ if( setjmp( png_jmpbuf( read->pPng ) ) ) return( -1 ); /* We need to shut down the reader immediately at the end of read or * we won't detach ready for the next image. */ if( read->y_pos >= read->out->Ysize ) { png_read_end( read->pPng, NULL ); read_destroy( read ); } return( 0 ); } /* Interlaced PNGs need to be entirely decompressed into memory then can be * served partially from there. Non-interlaced PNGs may be read sequentially. */ gboolean vips__png_isinterlaced( const char *filename ) { VipsImage *image; Read *read; int interlace_type; image = vips_image_new(); if( !(read = read_new_filename( image, filename, FALSE )) ) { g_object_unref( image ); return( -1 ); } interlace_type = png_get_interlace_type( read->pPng, read->pInfo ); g_object_unref( image ); return( interlace_type != PNG_INTERLACE_NONE ); } static int png2vips_image( Read *read, VipsImage *out ) { int interlace_type = png_get_interlace_type( read->pPng, read->pInfo ); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 3 ); if( interlace_type != PNG_INTERLACE_NONE ) { /* Arg awful interlaced image. We have to load to a huge mem * buffer, then copy to out. */ t[0] = vips_image_new_memory(); if( png2vips_header( read, t[0] ) || png2vips_interlace( read, t[0] ) || vips_image_write( t[0], out ) ) return( -1 ); } else { t[0] = vips_image_new(); if( png2vips_header( read, t[0] ) || vips_image_generate( t[0], NULL, png2vips_generate, NULL, read, NULL ) || vips_sequential( t[0], &t[1], "tile_height", 8, "access", read->readbehind ? VIPS_ACCESS_SEQUENTIAL : VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, NULL ) || vips_image_write( t[1], out ) ) return( -1 ); } return( 0 ); } int vips__png_read( const char *filename, VipsImage *out, gboolean readbehind ) { Read *read; #ifdef DEBUG printf( "vips__png_read: reading \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(read = read_new_filename( out, filename, readbehind )) || png2vips_image( read, out ) ) return( -1 ); #ifdef DEBUG printf( "vips__png_read: done\n" ); #endif /*DEBUG*/ return( 0 ); } gboolean vips__png_ispng_buffer( const void *buf, size_t len ) { if( len >= 8 && !png_sig_cmp( (png_bytep) buf, 0, 8 ) ) return( TRUE ); return( FALSE ); } int vips__png_ispng( const char *filename ) { unsigned char buf[8]; return( vips__get_bytes( filename, buf, 8 ) && vips__png_ispng_buffer( buf, 8 ) ); } static void vips_png_read_buffer( png_structp pPng, png_bytep data, png_size_t length ) { Read *read = png_get_io_ptr( pPng ); #ifdef DEBUG printf( "vips_png_read_buffer: read %zd bytes\n", length ); #endif /*DEBUG*/ if( read->read_pos + length > read->length ) png_error( pPng, "not enough data in buffer" ); memcpy( data, read->buffer + read->read_pos, length ); read->read_pos += length; } static Read * read_new_buffer( VipsImage *out, const void *buffer, size_t length, gboolean readbehind ) { Read *read; if( !(read = read_new( out, readbehind )) ) return( NULL ); read->length = length; read->buffer = buffer; png_set_read_fn( read->pPng, read, vips_png_read_buffer ); /* Catch PNG errors from png_read_info(). */ if( setjmp( png_jmpbuf( read->pPng ) ) ) return( NULL ); /* Read enough of the file that png_get_interlace_type() will start * working. */ png_read_info( read->pPng, read->pInfo ); return( read ); } int vips__png_header_buffer( const void *buffer, size_t length, VipsImage *out ) { Read *read; if( !(read = read_new_buffer( out, buffer, length, FALSE )) || png2vips_header( read, out ) ) return( -1 ); return( 0 ); } int vips__png_read_buffer( const void *buffer, size_t length, VipsImage *out, gboolean readbehind ) { Read *read; if( !(read = read_new_buffer( out, buffer, length, readbehind )) || png2vips_image( read, out ) ) return( -1 ); return( 0 ); } const char *vips__png_suffs[] = { ".png", NULL }; /* What we track during a PNG write. */ typedef struct { VipsImage *in; VipsImage *memory; FILE *fp; png_structp pPng; png_infop pInfo; png_bytep *row_pointer; } Write; static void write_finish( Write *write ) { VIPS_FREEF( fclose, write->fp ); VIPS_UNREF( write->memory ); if( write->pPng ) png_destroy_write_struct( &write->pPng, &write->pInfo ); } static void write_destroy( VipsImage *out, Write *write ) { write_finish( write ); } static Write * write_new( VipsImage *in ) { Write *write; if( !(write = VIPS_NEW( in, Write )) ) return( NULL ); memset( write, 0, sizeof( Write ) ); write->in = in; write->memory = NULL; g_signal_connect( in, "close", G_CALLBACK( write_destroy ), write ); if( !(write->row_pointer = VIPS_ARRAY( in, in->Ysize, png_bytep )) ) return( NULL ); if( !(write->pPng = png_create_write_struct( PNG_LIBPNG_VER_STRING, NULL, user_error_function, user_warning_function )) ) return( NULL ); #ifdef PNG_SKIP_sRGB_CHECK_PROFILE /* Prevent libpng (>=1.6.11) verifying sRGB profiles. */ png_set_option( write->pPng, PNG_SKIP_sRGB_CHECK_PROFILE, PNG_OPTION_ON ); #endif /*PNG_SKIP_sRGB_CHECK_PROFILE*/ /* Catch PNG errors from png_create_info_struct(). */ if( setjmp( png_jmpbuf( write->pPng ) ) ) return( NULL ); if( !(write->pInfo = png_create_info_struct( write->pPng )) ) return( NULL ); return( write ); } static int write_png_block( VipsRegion *region, VipsRect *area, void *a ) { Write *write = (Write *) a; int i; /* The area to write is always a set of complete scanlines. */ g_assert( area->left == 0 ); g_assert( area->width == region->im->Xsize ); g_assert( area->top + area->height <= region->im->Ysize ); /* Catch PNG errors. Yuk. */ if( setjmp( png_jmpbuf( write->pPng ) ) ) return( -1 ); for( i = 0; i < area->height; i++ ) write->row_pointer[i] = (png_bytep) VIPS_REGION_ADDR( region, 0, area->top + i ); png_write_rows( write->pPng, write->row_pointer, area->height ); return( 0 ); } /* Write a VIPS image to PNG. */ static int write_vips( Write *write, int compress, int interlace, const char *profile, VipsForeignPngFilter filter ) { VipsImage *in = write->in; int bit_depth; int color_type; int interlace_type; int i, nb_passes; g_assert( in->BandFmt == VIPS_FORMAT_UCHAR || in->BandFmt == VIPS_FORMAT_USHORT ); g_assert( in->Coding == VIPS_CODING_NONE ); g_assert( in->Bands > 0 && in->Bands < 5 ); /* Catch PNG errors. */ if( setjmp( png_jmpbuf( write->pPng ) ) ) return( -1 ); /* Check input image. If we are writing interlaced, we need to make 7 * passes over the image. We advertise ourselves as seq, so to ensure * we only suck once from upstream, switch to WIO. */ if( interlace ) { if( !(write->memory = vips_image_copy_memory( in )) ) return( -1 ); in = write->memory; } else { if( vips_image_pio_input( in ) ) return( -1 ); } if( compress < 0 || compress > 9 ) { vips_error( "vips2png", "%s", _( "compress should be in [0,9]" ) ); return( -1 ); } /* Set compression parameters. */ png_set_compression_level( write->pPng, compress ); /* Set row filter. */ png_set_filter( write->pPng, 0, filter ); bit_depth = in->BandFmt == VIPS_FORMAT_UCHAR ? 8 : 16; switch( in->Bands ) { case 1: color_type = PNG_COLOR_TYPE_GRAY; break; case 2: color_type = PNG_COLOR_TYPE_GRAY_ALPHA; break; case 3: color_type = PNG_COLOR_TYPE_RGB; break; case 4: color_type = PNG_COLOR_TYPE_RGB_ALPHA; break; default: vips_error( "vips2png", _( "can't save %d band image as png" ), in->Bands ); return( -1 ); } interlace_type = interlace ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE; png_set_IHDR( write->pPng, write->pInfo, in->Xsize, in->Ysize, bit_depth, color_type, interlace_type, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT ); /* Set resolution. libpng uses pixels per meter. */ png_set_pHYs( write->pPng, write->pInfo, VIPS_RINT( in->Xres * 1000 ), VIPS_RINT( in->Yres * 1000 ), PNG_RESOLUTION_METER ); /* Set ICC Profile. */ if( profile ) { if( strcmp( profile, "none" ) != 0 ) { void *data; size_t length; if( !(data = vips__file_read_name( profile, VIPS_ICC_DIR, &length )) ) return( -1 ); #ifdef DEBUG printf( "write_vips: " "attaching %zd bytes of ICC profile\n", length ); #endif /*DEBUG*/ png_set_iCCP( write->pPng, write->pInfo, "icc", PNG_COMPRESSION_TYPE_BASE, data, length ); } } else if( vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) { void *data; size_t length; if( vips_image_get_blob( in, VIPS_META_ICC_NAME, &data, &length ) ) return( -1 ); #ifdef DEBUG printf( "write_vips: attaching %zd bytes of ICC profile\n", length ); #endif /*DEBUG*/ png_set_iCCP( write->pPng, write->pInfo, "icc", PNG_COMPRESSION_TYPE_BASE, data, length ); } png_write_info( write->pPng, write->pInfo ); /* If we're an intel byte order CPU and this is a 16bit image, we need * to swap bytes. */ if( bit_depth > 8 && !vips_amiMSBfirst() ) png_set_swap( write->pPng ); if( interlace ) nb_passes = png_set_interlace_handling( write->pPng ); else nb_passes = 1; /* Write data. */ for( i = 0; i < nb_passes; i++ ) if( vips_sink_disc( in, write_png_block, write ) ) return( -1 ); /* The setjmp() was held by our background writer: reset it. */ if( setjmp( png_jmpbuf( write->pPng ) ) ) return( -1 ); png_write_end( write->pPng, write->pInfo ); return( 0 ); } int vips__png_write( VipsImage *in, const char *filename, int compress, int interlace, const char *profile, VipsForeignPngFilter filter ) { Write *write; #ifdef DEBUG printf( "vips__png_write: writing \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(write = write_new( in )) ) return( -1 ); /* Make output. */ if( !(write->fp = vips__file_open_write( filename, FALSE )) ) return( -1 ); png_init_io( write->pPng, write->fp ); /* Convert it! */ if( write_vips( write, compress, interlace, profile, filter ) ) { vips_error( "vips2png", _( "unable to write \"%s\"" ), filename ); return( -1 ); } write_finish( write ); #ifdef DEBUG printf( "vips__png_write: done\n" ); #endif /*DEBUG*/ return( 0 ); } typedef struct _WriteBuf { char *buf; size_t len; size_t alloc; } WriteBuf; static void write_buf_free( WriteBuf *wbuf ) { VIPS_FREE( wbuf->buf ); VIPS_FREE( wbuf ); } static WriteBuf * write_buf_new( void ) { WriteBuf *wbuf; if( !(wbuf = VIPS_NEW( NULL, WriteBuf )) ) return( NULL ); wbuf->buf = NULL; wbuf->len = 0; wbuf->alloc = 0; return( wbuf ); } static void write_buf_grow( WriteBuf *wbuf, size_t grow_len ) { size_t new_len = wbuf->len + grow_len; if( new_len > wbuf->alloc ) { size_t proposed_alloc = (16 + wbuf->alloc) * 3 / 2; wbuf->alloc = VIPS_MAX( proposed_alloc, new_len ); /* There's no vips_realloc(), so we call g_realloc() directly. * This is safe, since vips_malloc() / vips_free() are wrappers * over g_malloc() / g_free(). * * FIXME: add vips_realloc(). */ wbuf->buf = g_realloc( wbuf->buf, wbuf->alloc ); VIPS_DEBUG_MSG( "write_buf_grow: grown to %zd bytes\n", wbuf->alloc ); } } static void user_write_data( png_structp png_ptr, png_bytep data, png_size_t length ) { WriteBuf *wbuf = (WriteBuf *) png_get_io_ptr( png_ptr ); char *write_start; write_buf_grow( wbuf, length ); write_start = wbuf->buf + wbuf->len; memcpy( write_start, data, length ); wbuf->len += length; g_assert( wbuf->len <= wbuf->alloc ); } int vips__png_write_buf( VipsImage *in, void **obuf, size_t *olen, int compression, int interlace, const char *profile, VipsForeignPngFilter filter ) { WriteBuf *wbuf; Write *write; if( !(wbuf = write_buf_new()) ) return( -1 ); if( !(write = write_new( in )) ) { write_buf_free( wbuf ); return( -1 ); } png_set_write_fn( write->pPng, wbuf, user_write_data, NULL ); /* Convert it! */ if( write_vips( write, compression, interlace, profile, filter ) ) { write_buf_free( wbuf ); vips_error( "vips2png", "%s", _( "unable to write to buffer" ) ); return( -1 ); } write_finish( write ); *obuf = wbuf->buf; wbuf->buf = NULL; if( olen ) *olen = wbuf->len; write_buf_free( wbuf ); return( 0 ); } #endif /*HAVE_PNG*/ vips-8.2.2/libvips/foreign/vips2jpeg.c0000664000175000017500000010406312651663124014617 00000000000000/* wrap jpeg libray for write * * 28/11/03 JC * - better no-overshoot on tile loop * 12/11/04 * - better demand size choice for eval * 30/6/05 JC * - update im_error()/im_warn() * - now loads and saves exif data * 30/7/05 * - now loads ICC profiles * - now saves ICC profiles from the VIPS header * 24/8/05 * - jpeg load sets vips xres/yres from exif, if possible * - jpeg save sets exif xres/yres from vips, if possible * 29/8/05 * - cut from old vips_jpeg.c * 20/4/06 * - auto convert to sRGB/mono for save * 13/10/06 * - add #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_JPEG #include #include #include #include #include #include #include #include #ifdef HAVE_EXIF #ifdef UNTAGGED_EXIF #include #include #include #include #else /*!UNTAGGED_EXIF*/ #include #include #include #include #endif /*UNTAGGED_EXIF*/ #endif /*HAVE_EXIF*/ #include "jpeg.h" #include "vipsjpeg.h" /* New output message method - send to VIPS. */ void vips__new_output_message( j_common_ptr cinfo ) { char buffer[JMSG_LENGTH_MAX]; (*cinfo->err->format_message)( cinfo, buffer ); vips_error( "VipsJpeg", _( "%s" ), buffer ); #ifdef DEBUG printf( "vips__new_output_message: \"%s\"\n", buffer ); #endif /*DEBUG*/ } /* New error_exit handler. */ void vips__new_error_exit( j_common_ptr cinfo ) { ErrorManager *eman = (ErrorManager *) cinfo->err; #ifdef DEBUG printf( "vips__new_error_exit:\n" ); #endif /*DEBUG*/ /* Close the fp if necessary. */ if( eman->fp ) { (void) fclose( eman->fp ); eman->fp = NULL; } /* Send the error message to VIPS. This method is overridden above. */ (*cinfo->err->output_message)( cinfo ); /* Jump back. */ longjmp( eman->jmp, 1 ); } /* What we track during a JPEG write. */ typedef struct { VipsImage *in; struct jpeg_compress_struct cinfo; ErrorManager eman; JSAMPROW *row_pointer; char *profile_bytes; size_t profile_length; VipsImage *inverted; } Write; static void write_destroy( Write *write ) { jpeg_destroy_compress( &write->cinfo ); VIPS_FREEF( fclose, write->eman.fp ); VIPS_FREE( write->row_pointer ); VIPS_FREE( write->profile_bytes ); VIPS_UNREF( write->inverted ); g_free( write ); } static Write * write_new( VipsImage *in ) { Write *write; if( !(write = g_new0( Write, 1 )) ) return( NULL ); write->in = in; write->row_pointer = NULL; write->cinfo.err = jpeg_std_error( &write->eman.pub ); write->eman.pub.error_exit = vips__new_error_exit; write->eman.pub.output_message = vips__new_output_message; write->eman.pub.output_message = vips__new_output_message; write->eman.fp = NULL; write->profile_bytes = NULL; write->profile_length = 0; write->inverted = NULL; return( write ); } #ifdef HAVE_EXIF static void vips_exif_set_int( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ) { int value = *((int *) data); ExifByteOrder bo; size_t sizeof_component; size_t offset = component; if( entry->components <= component ) { VIPS_DEBUG_MSG( "vips_exif_set_int: too few components\n" ); return; } /* Wait until after the component check to make sure we cant get /0. */ bo = exif_data_get_byte_order( ed ); sizeof_component = entry->size / entry->components; offset = component * sizeof_component; VIPS_DEBUG_MSG( "vips_exif_set_int: %s = %d\n", exif_tag_get_name( entry->tag ), value ); if( entry->format == EXIF_FORMAT_SHORT ) exif_set_short( entry->data + offset, bo, value ); else if( entry->format == EXIF_FORMAT_SSHORT ) exif_set_sshort( entry->data + offset, bo, value ); else if( entry->format == EXIF_FORMAT_LONG ) exif_set_long( entry->data + offset, bo, value ); else if( entry->format == EXIF_FORMAT_SLONG ) exif_set_slong( entry->data + offset, bo, value ); } static void vips_exif_double_to_rational( double value, ExifRational *rv ) { unsigned int scale; /* We scale up to fill uint32, then set that as the * denominator. Try to avoid generating 0. */ scale = (unsigned int) ((UINT_MAX - 1000) / value); scale = scale == 0 ? 1 : scale; rv->numerator = value * scale; rv->denominator = scale; } static void vips_exif_double_to_srational( double value, ExifSRational *srv ) { int scale; /* We scale up to fill int32, then set that as the * denominator. Try to avoid generating 0. */ scale = (int) ((INT_MAX - 1000) / value); scale = scale == 0 ? 1 : scale; srv->numerator = value * scale; srv->denominator = scale; } /* Parse a char* into an ExifRational. We allow floats as well. */ static void vips_exif_parse_rational( const char *str, ExifRational *rv ) { if( sscanf( str, " %u / %u ", &rv->numerator, &rv->denominator ) == 2 ) return; vips_exif_double_to_rational( g_ascii_strtod( str, NULL ), rv ); } /* Parse a char* into an ExifSRational. We allow floats as well. */ static void vips_exif_parse_srational( const char *str, ExifSRational *srv ) { if( sscanf( str, " %d / %d ", &srv->numerator, &srv->denominator ) == 2 ) return; vips_exif_double_to_srational( g_ascii_strtod( str, NULL ), srv ); } /* Does both signed and unsigned rationals from a char*. */ static void vips_exif_set_rational( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ) { char *value = (char *) data; ExifByteOrder bo; size_t sizeof_component; size_t offset; if( entry->components <= component ) { VIPS_DEBUG_MSG( "vips_exif_set_rational: " "too few components\n" ); return; } /* Wait until after the component check to make sure we cant get /0. */ bo = exif_data_get_byte_order( ed ); sizeof_component = entry->size / entry->components; offset = component * sizeof_component; VIPS_DEBUG_MSG( "vips_exif_set_rational: %s = \"%s\"\n", exif_tag_get_name( entry->tag ), value ); if( entry->format == EXIF_FORMAT_RATIONAL ) { ExifRational rv; vips_exif_parse_rational( value, &rv ); VIPS_DEBUG_MSG( "vips_exif_set_rational: %u / %u\n", rv.numerator, rv.denominator ); exif_set_rational( entry->data + offset, bo, rv ); } else if( entry->format == EXIF_FORMAT_SRATIONAL ) { ExifSRational srv; vips_exif_parse_srational( value, &srv ); VIPS_DEBUG_MSG( "vips_exif_set_rational: %d / %d\n", srv.numerator, srv.denominator ); exif_set_srational( entry->data + offset, bo, srv ); } } /* Does both signed and unsigned rationals from a double*. * * Don't change the exit entry if the value currently there is a good * approximation of the double we are trying to set. */ static void vips_exif_set_double( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ) { double value = *((double *) data); ExifByteOrder bo; size_t sizeof_component; size_t offset; double old_value; if( entry->components <= component ) { VIPS_DEBUG_MSG( "vips_exif_set_double: " "too few components\n" ); return; } /* Wait until after the component check to make sure we cant get /0. */ bo = exif_data_get_byte_order( ed ); sizeof_component = entry->size / entry->components; offset = component * sizeof_component; VIPS_DEBUG_MSG( "vips_exif_set_double: %s = %g\n", exif_tag_get_name( entry->tag ), value ); if( entry->format == EXIF_FORMAT_RATIONAL ) { ExifRational rv; rv = exif_get_rational( entry->data + offset, bo ); old_value = (double) rv.numerator / rv.denominator; if( VIPS_FABS( old_value - value ) > 0.0001 ) { vips_exif_double_to_rational( value, &rv ); VIPS_DEBUG_MSG( "vips_exif_set_double: %u / %u\n", rv.numerator, rv.denominator ); exif_set_rational( entry->data + offset, bo, rv ); } } else if( entry->format == EXIF_FORMAT_SRATIONAL ) { ExifSRational srv; srv = exif_get_srational( entry->data + offset, bo ); old_value = (double) srv.numerator / srv.denominator; if( VIPS_FABS( old_value - value ) > 0.0001 ) { vips_exif_double_to_srational( value, &srv ); VIPS_DEBUG_MSG( "vips_exif_set_double: %d / %d\n", srv.numerator, srv.denominator ); exif_set_srational( entry->data + offset, bo, srv ); } } } typedef void (*write_fn)( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ); /* Write a tag. Update what's there, or make a new one. */ static void write_tag( ExifData *ed, int ifd, ExifTag tag, write_fn fn, void *data ) { ExifEntry *entry; if( (entry = exif_content_get_entry( ed->ifd[ifd], tag )) ) { fn( ed, entry, 0, data ); } else { entry = exif_entry_new(); /* tag must be set before calling exif_content_add_entry. */ entry->tag = tag; exif_content_add_entry( ed->ifd[ifd], entry ); exif_entry_initialize( entry, tag ); exif_entry_unref( entry ); fn( ed, entry, 0, data ); } } /* This is different, we set the xres/yres from the vips header rather than * from the exif tags on the image metadata. */ static int set_exif_resolution( ExifData *ed, VipsImage *im ) { double xres, yres; const char *p; int unit; VIPS_DEBUG_MSG( "set_exif_resolution: vips res of %g, %g\n", im->Xres, im->Yres ); /* Default to inches, more progs support it. */ unit = 2; if( vips_image_get_typeof( im, VIPS_META_RESOLUTION_UNIT ) && !vips_image_get_string( im, VIPS_META_RESOLUTION_UNIT, &p ) ) { if( vips_isprefix( "cm", p ) ) unit = 3; else if( vips_isprefix( "none", p ) ) unit = 1; } switch( unit ) { case 1: xres = im->Xres; yres = im->Yres; break; case 2: xres = im->Xres * 25.4; yres = im->Yres * 25.4; break; case 3: xres = im->Xres * 10.0; yres = im->Yres * 10.0; break; default: vips_warn( "VipsJpeg", "%s", _( "unknown EXIF resolution unit" ) ); return( 0 ); } /* Main image xres/yres/unit are in ifd0. ifd1 has the thumbnail * xres/yres/unit. */ write_tag( ed, 0, EXIF_TAG_X_RESOLUTION, vips_exif_set_double, (void *) &xres ); write_tag( ed, 0, EXIF_TAG_Y_RESOLUTION, vips_exif_set_double, (void *) &yres ); write_tag( ed, 0, EXIF_TAG_RESOLUTION_UNIT, vips_exif_set_int, (void *) &unit ); return( 0 ); } /* Exif also tracks image dimensions. */ static int set_exif_dimensions( ExifData *ed, VipsImage *im ) { VIPS_DEBUG_MSG( "set_exif_dimensions: vips size of %d, %d\n", im->Xsize, im->Ysize ); write_tag( ed, 2, EXIF_TAG_PIXEL_X_DIMENSION, vips_exif_set_int, (void *) &im->Xsize ); write_tag( ed, 2, EXIF_TAG_PIXEL_Y_DIMENSION, vips_exif_set_int, (void *) &im->Ysize ); return( 0 ); } /* See also vips_exif_to_s() ... keep in sync. */ static void vips_exif_from_s( ExifData *ed, ExifEntry *entry, const char *value ) { unsigned long i; const char *p; if( entry->format != EXIF_FORMAT_SHORT && entry->format != EXIF_FORMAT_SSHORT && entry->format != EXIF_FORMAT_LONG && entry->format != EXIF_FORMAT_SLONG && entry->format != EXIF_FORMAT_RATIONAL && entry->format != EXIF_FORMAT_SRATIONAL ) return; if( entry->components >= 10 ) return; /* Skip any leading spaces. */ p = value; while( *p == ' ' ) p += 1; for( i = 0; i < entry->components; i++ ) { if( entry->format == EXIF_FORMAT_SHORT || entry->format == EXIF_FORMAT_SSHORT || entry->format == EXIF_FORMAT_LONG || entry->format == EXIF_FORMAT_SLONG ) { int value = atof( p ); vips_exif_set_int( ed, entry, i, &value ); } else if( entry->format == EXIF_FORMAT_RATIONAL || entry->format == EXIF_FORMAT_SRATIONAL ) vips_exif_set_rational( ed, entry, i, (void *) p ); /* Skip to the next set of spaces, then to the beginning of * the next item. */ while( *p && *p != ' ' ) p += 1; while( *p == ' ' ) p += 1; if( !*p ) break; } } static void vips_exif_set_entry( ExifData *ed, ExifEntry *entry, unsigned long component, void *data ) { const char *string = (const char *) data; vips_exif_from_s( ed, entry, string ); } static void * vips_exif_image_field( VipsImage *image, const char *field, GValue *value, void *data ) { ExifData *ed = (ExifData *) data; const char *string; int ifd; const char *p; ExifTag tag; if( !vips_isprefix( "exif-ifd", field ) ) return( NULL ); /* value must be a string. */ if( vips_image_get_string( image, field, &string ) ) { vips_warn( "VipsJpeg", _( "bad exif meta \"%s\"" ), field ); return( NULL ); } p = field + strlen( "exif-ifd" ); ifd = atoi( p ); for( ; isdigit( *p ); p++ ) ; if( *p != '-' ) { vips_warn( "VipsJpeg", _( "bad exif meta \"%s\"" ), field ); return( NULL ); } if( !(tag = exif_tag_from_name( p + 1 )) ) { vips_warn( "VipsJpeg", _( "bad exif meta \"%s\"" ), field ); return( NULL ); } write_tag( ed, ifd, tag, vips_exif_set_entry, (void *) string ); return( NULL ); } static void vips_exif_update( ExifData *ed, VipsImage *image ) { VIPS_DEBUG_MSG( "vips_exif_update: \n" ); vips_image_map( image, vips_exif_image_field, ed ); } #endif /*HAVE_EXIF*/ static int write_blob( Write *write, const char *field, int app ) { unsigned char *data; size_t data_length; if( vips_image_get_typeof( write->in, field ) ) { if( vips_image_get_blob( write->in, field, (void *) &data, &data_length ) ) return( -1 ); /* Single jpeg markers can only hold 64kb, large objects must * be split into multiple markers. * * Unfortunately, how this splitting is done depends on the * data type. For example, ICC and XMP have completely * different ways of doing this. * * For now, just ignore oversize objects and warn. */ if( data_length > 65530 ) vips_warn( "VipsJpeg", _( "field \"%s\" is too large " "for a single JPEG marker, ignoring" ), field ); else { #ifdef DEBUG printf( "write_blob: attaching %zd bytes of %s\n", data_length, field ); #endif /*DEBUG*/ jpeg_write_marker( &write->cinfo, app, data, data_length ); } } return( 0 ); } static int write_exif( Write *write ) { #ifdef HAVE_EXIF unsigned char *data; size_t data_length; unsigned int idl; ExifData *ed; /* Either parse from the embedded EXIF, or if there's none, make * some fresh EXIF we can write the resolution to. */ if( vips_image_get_typeof( write->in, VIPS_META_EXIF_NAME ) ) { if( vips_image_get_blob( write->in, VIPS_META_EXIF_NAME, (void *) &data, &data_length ) ) return( -1 ); if( !(ed = exif_data_new_from_data( data, data_length )) ) return( -1 ); } else { ed = exif_data_new(); exif_data_set_option( ed, EXIF_DATA_OPTION_FOLLOW_SPECIFICATION ); exif_data_set_data_type( ed, EXIF_DATA_TYPE_COMPRESSED ); exif_data_set_byte_order( ed, EXIF_BYTE_ORDER_INTEL ); /* Create the mandatory EXIF fields with default data. */ exif_data_fix( ed ); } /* Update EXIF tags from the image metadata. */ vips_exif_update( ed, write->in ); /* Update EXIF resolution from the vips image header. */ if( set_exif_resolution( ed, write->in ) ) { exif_data_free( ed ); return( -1 ); } /* Update EXIF image dimensions from the vips image header. */ if( set_exif_dimensions( ed, write->in ) ) { exif_data_free( ed ); return( -1 ); } /* Reserialise and write. exif_data_save_data() returns an int for some * reason. */ exif_data_save_data( ed, &data, &idl ); if( !idl ) { vips_error( "VipsJpeg", "%s", _( "error saving EXIF" ) ); exif_data_free( ed ); return( -1 ); } data_length = idl; #ifdef DEBUG printf( "write_exif: attaching %zd bytes of EXIF\n", data_length ); #endif /*DEBUG*/ exif_data_free( ed ); jpeg_write_marker( &write->cinfo, JPEG_APP0 + 1, data, data_length ); free( data ); #else /*!HAVE_EXIF*/ /* No libexif ... just copy the embedded EXIF over. */ if( write_blob( write, VIPS_META_EXIF_NAME, JPEG_APP0 + 1 ) ) return( -1 ); #endif /*!HAVE_EXIF*/ return( 0 ); } /* ICC writer from lcms, slight tweaks. */ #define ICC_MARKER (JPEG_APP0 + 2) /* JPEG marker code for ICC */ #define ICC_OVERHEAD_LEN 14 /* size of non-profile data in APP2 */ #define MAX_BYTES_IN_MARKER 65533 /* maximum data len of a JPEG marker */ #define MAX_DATA_BYTES_IN_MARKER (MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN) /* * This routine writes the given ICC profile data into a JPEG file. * It *must* be called AFTER calling jpeg_start_compress() and BEFORE * the first call to jpeg_write_scanlines(). * (This ordering ensures that the APP2 marker(s) will appear after the * SOI and JFIF or Adobe markers, but before all else.) */ static void write_profile_data (j_compress_ptr cinfo, const JOCTET *icc_data_ptr, unsigned int icc_data_len) { unsigned int num_markers; /* total number of markers we'll write */ int cur_marker = 1; /* per spec, counting starts at 1 */ unsigned int length; /* number of bytes to write in this marker */ /* rounding up will fail for length == 0 */ g_assert( icc_data_len > 0 ); /* Calculate the number of markers we'll need, rounding up of course */ num_markers = (icc_data_len + MAX_DATA_BYTES_IN_MARKER - 1) / MAX_DATA_BYTES_IN_MARKER; while (icc_data_len > 0) { /* length of profile to put in this marker */ length = icc_data_len; if (length > MAX_DATA_BYTES_IN_MARKER) length = MAX_DATA_BYTES_IN_MARKER; icc_data_len -= length; /* Write the JPEG marker header (APP2 code and marker length) */ jpeg_write_m_header(cinfo, ICC_MARKER, (unsigned int) (length + ICC_OVERHEAD_LEN)); /* Write the marker identifying string "ICC_PROFILE" (null-terminated). * We code it in this less-than-transparent way so that the code works * even if the local character set is not ASCII. */ jpeg_write_m_byte(cinfo, 0x49); jpeg_write_m_byte(cinfo, 0x43); jpeg_write_m_byte(cinfo, 0x43); jpeg_write_m_byte(cinfo, 0x5F); jpeg_write_m_byte(cinfo, 0x50); jpeg_write_m_byte(cinfo, 0x52); jpeg_write_m_byte(cinfo, 0x4F); jpeg_write_m_byte(cinfo, 0x46); jpeg_write_m_byte(cinfo, 0x49); jpeg_write_m_byte(cinfo, 0x4C); jpeg_write_m_byte(cinfo, 0x45); jpeg_write_m_byte(cinfo, 0x0); /* Add the sequencing info */ jpeg_write_m_byte(cinfo, cur_marker); jpeg_write_m_byte(cinfo, (int) num_markers); /* Add the profile data */ while (length--) { jpeg_write_m_byte(cinfo, *icc_data_ptr); icc_data_ptr++; } cur_marker++; } } /* Write an ICC Profile from a file into the JPEG stream. */ static int write_profile_file( Write *write, const char *profile ) { if( !(write->profile_bytes = vips__file_read_name( profile, VIPS_ICC_DIR, &write->profile_length )) ) return( -1 ); write_profile_data( &write->cinfo, (JOCTET *) write->profile_bytes, write->profile_length ); #ifdef DEBUG printf( "write_profile_file: attached profile \"%s\"\n", profile ); #endif /*DEBUG*/ return( 0 ); } static int write_profile_meta( Write *write ) { void *data; size_t data_length; if( vips_image_get_blob( write->in, VIPS_META_ICC_NAME, &data, &data_length ) ) return( -1 ); write_profile_data( &write->cinfo, data, data_length ); #ifdef DEBUG printf( "write_profile_meta: attached %zd byte profile from header\n", data_length ); #endif /*DEBUG*/ return( 0 ); } static int write_jpeg_block( VipsRegion *region, VipsRect *area, void *a ) { Write *write = (Write *) a; int i; for( i = 0; i < area->height; i++ ) write->row_pointer[i] = (JSAMPROW) VIPS_REGION_ADDR( region, 0, area->top + i ); /* Catch any longjmp()s from jpeg_write_scanlines() here. */ if( setjmp( write->eman.jmp ) ) return( -1 ); jpeg_write_scanlines( &write->cinfo, write->row_pointer, area->height ); return( 0 ); } /* Write a VIPS image to a JPEG compress struct. */ static int write_vips( Write *write, int qfac, const char *profile, gboolean optimize_coding, gboolean progressive, gboolean strip, gboolean no_subsample, gboolean trellis_quant, gboolean overshoot_deringing, gboolean optimize_scans ) { VipsImage *in; J_COLOR_SPACE space; /* The image we'll be writing ... can change, see CMYK. */ in = write->in; /* Should have been converted for save. */ g_assert( in->BandFmt == VIPS_FORMAT_UCHAR ); g_assert( in->Coding == VIPS_CODING_NONE ); g_assert( in->Bands == 1 || in->Bands == 3 || in->Bands == 4 ); /* Check input image. */ if( vips_image_pio_input( in ) ) return( -1 ); /* Set compression parameters. */ write->cinfo.image_width = in->Xsize; write->cinfo.image_height = in->Ysize; write->cinfo.input_components = in->Bands; if( in->Bands == 4 && in->Type == VIPS_INTERPRETATION_CMYK ) { space = JCS_CMYK; /* IJG always sets an Adobe marker, so we should invert CMYK. */ if( vips_invert( in, &write->inverted, NULL ) ) return( -1 ); in = write->inverted; } else if( in->Bands == 3 ) space = JCS_RGB; else if( in->Bands == 1 ) space = JCS_GRAYSCALE; else /* Use luminance compression for all channels. */ space = JCS_UNKNOWN; write->cinfo.in_color_space = space; /* Build VIPS output stuff now we know the image we'll be writing. */ if( !(write->row_pointer = VIPS_ARRAY( NULL, in->Ysize, JSAMPROW )) ) return( -1 ); #ifdef HAVE_JPEG_EXT_PARAMS /* Reset compression profile to libjpeg defaults */ if( jpeg_c_int_param_supported( &write->cinfo, JINT_COMPRESS_PROFILE ) ) jpeg_c_set_int_param( &write->cinfo, JINT_COMPRESS_PROFILE, JCP_FASTEST ); #endif /* Rest to default. */ jpeg_set_defaults( &write->cinfo ); jpeg_set_quality( &write->cinfo, qfac, TRUE ); /* Compute optimal Huffman coding tables. */ write->cinfo.optimize_coding = optimize_coding; #ifdef HAVE_JPEG_EXT_PARAMS /* Apply trellis quantisation to each 8x8 block. Implies * "optimize_coding". */ if( trellis_quant ) { if( jpeg_c_bool_param_supported( &write->cinfo, JBOOLEAN_TRELLIS_QUANT ) ) { jpeg_c_set_bool_param( &write->cinfo, JBOOLEAN_TRELLIS_QUANT, TRUE ); write->cinfo.optimize_coding = TRUE; } else vips_warn( "vips2jpeg", "%s", _( "trellis_quant unsupported" ) ); } /* Apply overshooting to samples with extreme values e.g. 0 & 255 * for 8-bit. */ if( overshoot_deringing ) { if( jpeg_c_bool_param_supported( &write->cinfo, JBOOLEAN_OVERSHOOT_DERINGING ) ) jpeg_c_set_bool_param( &write->cinfo, JBOOLEAN_OVERSHOOT_DERINGING, TRUE ); else vips_warn( "vips2jpeg", "%s", _( "overshoot_deringing unsupported" ) ); } /* Split the spectrum of DCT coefficients into separate scans. * Requires progressive output. Must be set before * jpeg_simple_progression. */ if( optimize_scans ) { if( progressive ) { if( jpeg_c_bool_param_supported( &write->cinfo, JBOOLEAN_OPTIMIZE_SCANS ) ) jpeg_c_set_bool_param( &write->cinfo, JBOOLEAN_OPTIMIZE_SCANS, TRUE ); else vips_warn( "vips2jpeg", "%s", _( "Ignoring optimize_scans" ) ); } else vips_warn( "vips2jpeg", "%s", _( "Ignoring optimize_scans for baseline" ) ); } #else /* Using jpeglib.h without extension parameters, warn of ignored * options. */ if( trellis_quant ) vips_warn( "vips2jpeg", "%s", _( "Ignoring trellis_quant" ) ); if( overshoot_deringing ) vips_warn( "vips2jpeg", "%s", _( "Ignoring overshoot_deringing" ) ); if( optimize_scans ) vips_warn( "vips2jpeg", "%s", _( "Ignoring optimize_scans" ) ); #endif /* Enable progressive write. */ if( progressive ) jpeg_simple_progression( &write->cinfo ); /* Turn off chroma subsampling. */ if( no_subsample ) { int i; for( i = 0; i < in->Bands; i++ ) { write->cinfo.comp_info[i].h_samp_factor = 1; write->cinfo.comp_info[i].v_samp_factor = 1; } } /* Don't write the APP0 JFIF headers if we are stripping. */ if( strip ) write->cinfo.write_JFIF_header = FALSE; /* Build compress tables. */ jpeg_start_compress( &write->cinfo, TRUE ); /* Write any APP markers we need. */ if( !strip ) { if( write_exif( write ) || write_blob( write, VIPS_META_XMP_NAME, JPEG_APP0 + 1 ) || write_blob( write, VIPS_META_IPCT_NAME, JPEG_APP0 + 13 ) ) return( -1 ); /* A profile supplied as an argument overrides an embedded * profile. "none" means don't attach a profile. */ if( profile && strcmp( profile, "none" ) != 0 && write_profile_file( write, profile ) ) return( -1 ); if( !profile && vips_image_get_typeof( in, VIPS_META_ICC_NAME ) && write_profile_meta( write ) ) return( -1 ); } /* Write data. Note that the write function grabs the longjmp()! */ if( vips_sink_disc( in, write_jpeg_block, write ) ) return( -1 ); /* We have to reinstate the setjmp() before we jpeg_finish_compress(). */ if( setjmp( write->eman.jmp ) ) return( -1 ); jpeg_finish_compress( &write->cinfo ); return( 0 ); } /* Write an image to a jpeg file. */ int vips__jpeg_write_file( VipsImage *in, const char *filename, int Q, const char *profile, gboolean optimize_coding, gboolean progressive, gboolean strip, gboolean no_subsample, gboolean trellis_quant, gboolean overshoot_deringing, gboolean optimize_scans ) { Write *write; if( !(write = write_new( in )) ) return( -1 ); if( setjmp( write->eman.jmp ) ) { /* Here for longjmp() from new_error_exit(). */ write_destroy( write ); return( -1 ); } /* Can't do this in write_new(), has to be after we've made the * setjmp(). */ jpeg_create_compress( &write->cinfo ); /* Make output. */ if( !(write->eman.fp = vips__file_open_write( filename, FALSE )) ) { write_destroy( write ); return( -1 ); } jpeg_stdio_dest( &write->cinfo, write->eman.fp ); /* Convert! */ if( write_vips( write, Q, profile, optimize_coding, progressive, strip, no_subsample, trellis_quant, overshoot_deringing, optimize_scans ) ) { write_destroy( write ); return( -1 ); } write_destroy( write ); return( 0 ); } /* We can't predict how large the output buffer we need is, because we might * need space for ICC profiles and stuff. So we write to a linked list of mem * buffers and add a new one as they fill. */ #define BUFFER_SIZE (10000) /* A buffer. */ typedef struct _Block { j_compress_ptr cinfo; struct _Block *first; struct _Block *next; JOCTET *data; /* Allocated area */ size_t size; /* Max size */ size_t used; /* How much has been used */ } Block; static Block * block_new( j_compress_ptr cinfo ) { Block *block; block = (Block *) (*cinfo->mem->alloc_large) ( (j_common_ptr) cinfo, JPOOL_IMAGE, sizeof( Block ) ); block->cinfo = cinfo; block->first = block; block->next = NULL; block->data = (JOCTET *) (*cinfo->mem->alloc_large) ( (j_common_ptr) cinfo, JPOOL_IMAGE, BUFFER_SIZE ); block->size = BUFFER_SIZE; block->used = 0; return( block ); } static Block * block_last( Block *block ) { while( block->next ) block = block->next; return( block ); } static Block * block_append( Block *block ) { Block *new; g_assert( block ); new = block_new( block->cinfo ); new->first = block->first; block_last( block )->next = new; return( new ); } static size_t block_length( Block *block ) { size_t len; len = 0; for( block = block->first; block; block = block->next ) len += block->used; return( len ); } static void block_copy( Block *block, void *dest ) { JOCTET *p; p = dest; for( block = block->first; block; block = block->next ) { memcpy( p, block->data, block->used ); p += block->used; } } #ifdef DEBUG static void block_print( Block *block ) { int i; printf( "total length = %zd\n", block_length( block ) ); printf( "set of blocks:\n" ); i = 0; for( block = block->first; block; block = block->next ) { printf( "%d) %p, first = %p, next = %p" "\t data = %p, size = %zd, used = %zd\n", i, block, block->first, block->next, block->data, block->size, block->used ); i += 1; } } #endif /*DEBUG*/ /* Just like the above, but we write to a memory buffer. * * A memory buffer for the compressed image. */ typedef struct { /* Public jpeg fields. */ struct jpeg_destination_mgr pub; /* Private stuff during write. */ /* Build the output area here in chunks. */ Block *block; /* Copy the compressed area here. */ void **obuf; /* Allocated buffer, and size */ size_t *olen; } OutputBuffer; /* Init dest method. */ METHODDEF(void) init_destination( j_compress_ptr cinfo ) { OutputBuffer *buf = (OutputBuffer *) cinfo->dest; /* Allocate relative to the image we are writing .. freed when we junk * this output. */ buf->block = block_new( cinfo ); /* Set buf pointers for library. */ buf->pub.next_output_byte = buf->block->data; buf->pub.free_in_buffer = buf->block->size; } /* Buffer full method ... allocate a new output block. */ METHODDEF(boolean) empty_output_buffer( j_compress_ptr cinfo ) { OutputBuffer *buf = (OutputBuffer *) cinfo->dest; /* Record how many bytes we used. empty_output_buffer() is always * called when the buffer is exactly full. */ buf->block->used = buf->block->size; /* New block and reset. */ buf->block = block_append( buf->block ); buf->pub.next_output_byte = buf->block->data; buf->pub.free_in_buffer = buf->block->size; /* TRUE means we've made some more space. */ return( 1 ); } /* Cleanup. Copy the set of blocks out as a big lump. */ METHODDEF(void) term_destination( j_compress_ptr cinfo ) { OutputBuffer *buf = (OutputBuffer *) cinfo->dest; size_t len; void *obuf; /* Record the number of bytes we wrote in the final buffer. * pub.free_in_buffer is valid here. */ buf->block->used = buf->block->size - buf->pub.free_in_buffer; #ifdef DEBUG block_print( buf->block ); #endif /*DEBUG*/ /* ... and we can count up our buffers now. */ len = block_length( buf->block ); /* Allocate and copy to the output area. */ if( !(obuf = vips_malloc( NULL, len )) ) ERREXIT( cinfo, JERR_FILE_WRITE ); else { /* coverity doesn't know ERREXIT() does not return, so put * this in an else. */ *(buf->obuf) = obuf; *(buf->olen) = len; block_copy( buf->block, obuf ); } } /* Set dest to one of our objects. */ static void buf_dest( j_compress_ptr cinfo, void **obuf, size_t *olen ) { OutputBuffer *buf; /* The destination object is made permanent so that multiple JPEG * images can be written to the same file without re-executing * jpeg_stdio_dest. This makes it dangerous to use this manager and * a different destination manager serially with the same JPEG object, * because their private object sizes may be different. * * Caveat programmer. */ if( !cinfo->dest ) { /* first time for this JPEG object? */ cinfo->dest = (struct jpeg_destination_mgr *) (*cinfo->mem->alloc_small) ( (j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof( OutputBuffer ) ); } buf = (OutputBuffer *) cinfo->dest; buf->pub.init_destination = init_destination; buf->pub.empty_output_buffer = empty_output_buffer; buf->pub.term_destination = term_destination; /* Save output parameters. */ buf->obuf = obuf; buf->olen = olen; } int vips__jpeg_write_buffer( VipsImage *in, void **obuf, size_t *olen, int Q, const char *profile, gboolean optimize_coding, gboolean progressive, gboolean strip, gboolean no_subsample, gboolean trellis_quant, gboolean overshoot_deringing, gboolean optimize_scans ) { Write *write; if( !(write = write_new( in )) ) return( -1 ); /* Clear output parameters. */ *obuf = NULL; *olen = 0; /* Make jpeg compression object. */ if( setjmp( write->eman.jmp ) ) { /* Here for longjmp() from new_error_exit(). */ write_destroy( write ); return( -1 ); } jpeg_create_compress( &write->cinfo ); /* Attach output. */ buf_dest( &write->cinfo, obuf, olen ); /* Convert! */ if( write_vips( write, Q, profile, optimize_coding, progressive, strip, no_subsample, trellis_quant, overshoot_deringing, optimize_scans ) ) { write_destroy( write ); return( -1 ); } write_destroy( write ); return( 0 ); } const char *vips__jpeg_suffs[] = { ".jpg", ".jpeg", ".jpe", NULL }; #endif /*HAVE_JPEG*/ vips-8.2.2/libvips/foreign/ppmload.c0000664000175000017500000001012012645527564014342 00000000000000/* load ppm from a file * * 5/12/11 * - from tiffload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "ppm.h" typedef struct _VipsForeignLoadPpm { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadPpm; typedef VipsForeignLoadClass VipsForeignLoadPpmClass; G_DEFINE_TYPE( VipsForeignLoadPpm, vips_foreign_load_ppm, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_ppm_get_flags_filename( const char *filename ) { return( (VipsForeignFlags) vips__ppm_flags( filename ) ); } static VipsForeignFlags vips_foreign_load_ppm_get_flags( VipsForeignLoad *load ) { VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) load; return( vips_foreign_load_ppm_get_flags_filename( ppm->filename ) ); } static int vips_foreign_load_ppm_header( VipsForeignLoad *load ) { VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) load; if( vips__ppm_header( ppm->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, ppm->filename ); return( 0 ); } static int vips_foreign_load_ppm_load( VipsForeignLoad *load ) { VipsForeignLoadPpm *ppm = (VipsForeignLoadPpm *) load; if( vips__ppm_load( ppm->filename, load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_ppm_class_init( VipsForeignLoadPpmClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "ppmload"; object_class->description = _( "load ppm from file" ); foreign_class->suffs = vips__ppm_suffs; /* We are fast at is_a(), so high priority. */ foreign_class->priority = 200; load_class->is_a = vips__ppm_isppm; load_class->get_flags_filename = vips_foreign_load_ppm_get_flags_filename; load_class->get_flags = vips_foreign_load_ppm_get_flags; load_class->header = vips_foreign_load_ppm_header; load_class->load = vips_foreign_load_ppm_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadPpm, filename ), NULL ); } static void vips_foreign_load_ppm_init( VipsForeignLoadPpm *ppm ) { } /** * vips_ppmload: * @filename: file to load * @out: output image * @...: %NULL-terminated list of optional named arguments * * Read a PPM/PBM/PGM/PFM file into a VIPS image. * * It can read 1, 8, 16 and 32 bit images, colour or monochrome, * stored in binary or in ASCII. One bit images become 8 bit VIPS images, * with 0 and 255 for 0 and 1. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_ppmload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "ppmload", ap, filename, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/vipsjpeg.h0000664000175000017500000000411012620616171014526 00000000000000/* simple interface to our jpg functions */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VIPSJPEG_H #define VIPS_VIPSJPEG_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ extern const char *vips__jpeg_suffs[]; int vips__jpeg_write_file( VipsImage *in, const char *filename, int Q, const char *profile, gboolean optimize_coding, gboolean progressive, gboolean strip, gboolean no_subsample, gboolean trellis_quant, gboolean overshoot_deringing, gboolean optimize_scans ); int vips__jpeg_write_buffer( VipsImage *in, void **obuf, size_t *olen, int Q, const char *profile, gboolean optimize_coding, gboolean progressive, gboolean strip, gboolean no_subsample, gboolean trellis_quant, gboolean overshoot_deringing, gboolean optimize_scans ); int vips__isjpeg_buffer( const void *buf, size_t len ); int vips__isjpeg( const char *filename ); int vips__jpeg_read_file( const char *name, VipsImage *out, gboolean header_only, int shrink, gboolean fail, gboolean readbehind, gboolean autorotate ); int vips__jpeg_read_buffer( const void *buf, size_t len, VipsImage *out, gboolean header_only, int shrink, int fail, gboolean readbehind, gboolean autorotate ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_VIPSJPEG_H*/ vips-8.2.2/libvips/foreign/magickload.c0000664000175000017500000001702112620616171014772 00000000000000/* load with libMagick * * 5/12/11 * - from openslideload.c * 17/1/12 * - remove header-only loads * 11/6/13 * - add @all_frames option, off by default */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_MAGICK #include #include #include #include #include #include #include "magick.h" typedef struct _VipsForeignLoadMagick { VipsForeignLoad parent_object; gboolean all_frames; char *density; } VipsForeignLoadMagick; typedef VipsForeignLoadClass VipsForeignLoadMagickClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadMagick, vips_foreign_load_magick, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_magick_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_magick_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_PARTIAL ); } static void vips_foreign_load_magick_class_init( VipsForeignLoadMagickClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magickload_base"; object_class->description = _( "load with ImageMagick" ); /* We need to be well to the back of the queue since vips's * dedicated loaders are usually preferable. */ foreign_class->priority = -100; load_class->get_flags_filename = vips_foreign_load_magick_get_flags_filename; load_class->get_flags = vips_foreign_load_magick_get_flags; VIPS_ARG_BOOL( class, "all_frames", 3, _( "all_frames" ), _( "Read all frames from an image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick, all_frames ), FALSE ); VIPS_ARG_STRING( class, "density", 4, _( "Density" ), _( "Canvas resolution for rendering vector formats like SVG" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagick, density ), NULL ); } static void vips_foreign_load_magick_init( VipsForeignLoadMagick *magick ) { } typedef struct _VipsForeignLoadMagickFile { VipsForeignLoadMagick parent_object; char *filename; } VipsForeignLoadMagickFile; typedef VipsForeignLoadMagickClass VipsForeignLoadMagickFileClass; G_DEFINE_TYPE( VipsForeignLoadMagickFile, vips_foreign_load_magick_file, vips_foreign_load_magick_get_type() ); static gboolean ismagick( const char *filename ) { VipsImage *t; int result; t = vips_image_new(); vips_error_freeze(); result = vips__magick_read_header( filename, t, FALSE, NULL ); g_object_unref( t ); vips_error_thaw(); return( result == 0 ); } /* Unfortunately, libMagick does not support header-only reads very well. See * * http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=20017 * * Test especially with BMP, GIF, TGA. So we are forced to read the entire * image in the @header() method. */ static int vips_foreign_load_magick_file_header( VipsForeignLoad *load ) { VipsForeignLoadMagick *magick = (VipsForeignLoadMagick *) load; VipsForeignLoadMagickFile *magick_file = (VipsForeignLoadMagickFile *) load; if( vips__magick_read( magick_file->filename, load->out, magick->all_frames, magick->density ) ) return( -1 ); VIPS_SETSTR( load->out->filename, magick_file->filename ); return( 0 ); } static void vips_foreign_load_magick_file_class_init( VipsForeignLoadMagickFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magickload"; object_class->description = _( "load file with ImageMagick" ); load_class->is_a = ismagick; load_class->header = vips_foreign_load_magick_file_header; load_class->load = NULL; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagickFile, filename ), NULL ); } static void vips_foreign_load_magick_file_init( VipsForeignLoadMagickFile *magick_file ) { } typedef struct _VipsForeignLoadMagickBuffer { VipsForeignLoadMagick parent_object; VipsArea *buf; } VipsForeignLoadMagickBuffer; typedef VipsForeignLoadMagickClass VipsForeignLoadMagickBufferClass; G_DEFINE_TYPE( VipsForeignLoadMagickBuffer, vips_foreign_load_magick_buffer, vips_foreign_load_magick_get_type() ); static gboolean vips_foreign_load_magick_buffer_is_a_buffer( const void *buf, size_t len ) { VipsImage *t; int result; t = vips_image_new(); vips_error_freeze(); result = vips__magick_read_buffer_header( buf, len, t, FALSE, NULL ); g_object_unref( t ); vips_error_thaw(); return( result == 0 ); } /* Unfortunately, libMagick does not support header-only reads very well. See * * http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=20017 * * Test especially with BMP, GIF, TGA. So we are forced to read the entire * image in the @header() method. */ static int vips_foreign_load_magick_buffer_header( VipsForeignLoad *load ) { VipsForeignLoadMagick *magick = (VipsForeignLoadMagick *) load; VipsForeignLoadMagickBuffer *magick_buffer = (VipsForeignLoadMagickBuffer *) load; if( vips__magick_read_buffer( magick_buffer->buf->data, magick_buffer->buf->length, load->out, magick->all_frames, magick->density ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_magick_buffer_class_init( VipsForeignLoadMagickBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "magickload_buffer"; object_class->description = _( "load buffer with ImageMagick" ); load_class->is_a_buffer = vips_foreign_load_magick_buffer_is_a_buffer; load_class->header = vips_foreign_load_magick_buffer_header; load_class->load = NULL; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMagickBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_magick_buffer_init( VipsForeignLoadMagickBuffer *buffer ) { } #endif /*HAVE_MAGICK*/ vips-8.2.2/libvips/foreign/openexr2vips.c0000664000175000017500000002135412530402247015344 00000000000000/* Convert OpenEXR to VIPS * * 1/5/06 * - from im_png2vips.c * 17/5/06 * - oops, buffer calcs were wrong * 19/5/06 * - added tiled read, with a separate cache * - removed *255 we had before, better to do something clever with * chromaticities * 4/2/10 * - gtkdoc * 12/12/11 * - redo as a set of fns ready for wrapping in a new-style class */ /* TODO - colour management - attributes - more of OpenEXR's pixel formats - more than just RGBA channels the openexr C API is very limited ... it seems RGBA half pixels is all you can do openexr lets you have different formats in different channels :-( there's no API to read the "chromaticities" attribute :-( */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_OPENEXR #include #include #include #include #include #include #include #include #include "openexr2vips.h" /* What we track during a OpenEXR read. */ typedef struct { char *filename; VipsImage *out; ImfTiledInputFile *tiles; ImfInputFile *lines; const ImfHeader *header; VipsRect window; int tile_width; int tile_height; } Read; gboolean vips__openexr_isexr( const char *filename ) { unsigned char buf[4]; if( vips__get_bytes( filename, buf, 4 ) ) if( buf[0] == 0x76 && buf[1] == 0x2f && buf[2] == 0x31 && buf[3] == 0x01 ) return( TRUE ); return( FALSE ); } static void get_imf_error( void ) { vips_error( "exr2vips", _( "EXR error: %s" ), ImfErrorMessage() ); } static void read_destroy( VipsImage *out, Read *read ) { VIPS_FREE( read->filename ); VIPS_FREEF( ImfCloseTiledInputFile, read->tiles ); VIPS_FREEF( ImfCloseInputFile, read->lines ); vips_free( read ); } static Read * read_new( const char *filename, VipsImage *out ) { Read *read; int xmin, ymin; int xmax, ymax; if( !(read = VIPS_NEW( NULL, Read )) ) return( NULL ); read->filename = vips_strdup( NULL, filename ); read->out = out; read->tiles = NULL; read->lines = NULL; if( out ) g_signal_connect( out, "close", G_CALLBACK( read_destroy ), read ); /* Try to open tiled first ... if that fails, fall back to scanlines. FIXME ... seems a bit ugly, but how else can you spot a tiled EXR image? */ if( !(read->tiles = ImfOpenTiledInputFile( read->filename )) ) { if( !(read->lines = ImfOpenInputFile( read->filename )) ) { get_imf_error(); return( NULL ); } } #ifdef DEBUG if( read->tiles ) printf( "exr2vips: opening in tiled mode\n" ); else printf( "exr2vips: opening in scanline mode\n" ); #endif /*DEBUG*/ if( read->tiles ) { read->header = ImfTiledInputHeader( read->tiles ); read->tile_width = ImfTiledInputTileXSize( read->tiles ); read->tile_height = ImfTiledInputTileYSize( read->tiles ); } else read->header = ImfInputHeader( read->lines ); ImfHeaderDataWindow( read->header, &xmin, &ymin, &xmax, &ymax ); read->window.left = xmin; read->window.top = ymin; read->window.width = xmax - xmin + 1; read->window.height = ymax - ymin + 1; return( read ); } gboolean vips__openexr_istiled( const char *filename ) { Read *read; gboolean tiled; if( !(read = read_new( filename, NULL )) ) return( FALSE ); tiled = read->tiles != NULL; read_destroy( NULL, read ); return( tiled ); } /* Read a OpenEXR file (header) into a VIPS (header). */ static void read_header( Read *read, VipsImage *out ) { /* FIXME ... not really sRGB. I think EXR is actually linear (no gamma). We ought to read the chromaticities from the header, put through a 3x3 matrix and output as XYZ */ vips_image_init_fields( out, read->window.width, read->window.height, 4, VIPS_FORMAT_FLOAT, VIPS_CODING_NONE, VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); if( read->tiles ) vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); else vips_image_pipelinev( out, VIPS_DEMAND_STYLE_FATSTRIP, NULL ); } int vips__openexr_read_header( const char *filename, VipsImage *out ) { Read *read; if( !(read = read_new( filename, out )) ) return( -1 ); read_header( read, out ); return( 0 ); } /* Allocate a tile buffer. */ static void * vips__openexr_start( VipsImage *out, void *a, void *b ) { Read *read = (Read *) a; ImfRgba *imf_buffer; if( !(imf_buffer = VIPS_ARRAY( out, read->tile_width * read->tile_height, ImfRgba )) ) return( NULL ); return( imf_buffer ); } static int vips__openexr_generate( VipsRegion *out, void *seq, void *a, void *b, gboolean *top ) { ImfRgba *imf_buffer = (ImfRgba *) seq; Read *read = (Read *) a; VipsRect *r = &out->valid; const int tw = read->tile_width; const int th = read->tile_height; /* Find top left of tiles we need. */ const int xs = (r->left / tw) * tw; const int ys = (r->top / th) * th; int x, y, z; VipsRect image; /* Area of image. */ image.left = 0; image.top = 0; image.width = read->out->Xsize; image.height = read->out->Ysize; for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += th ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += tw ) { VipsRect tile; VipsRect hit; int result; if( !ImfTiledInputSetFrameBuffer( read->tiles, imf_buffer - (read->window.left + x) - (read->window.top + y) * tw, 1, tw ) ) { get_imf_error(); return( -1 ); } #ifdef DEBUG printf( "exr2vips: requesting tile %d x %d\n", x / tw, y / th ); #endif /*DEBUG*/ result = ImfTiledInputReadTile( read->tiles, x / tw, y / th, 0, 0 ); if( !result ) { get_imf_error(); return( -1 ); } /* The tile in the file, in VIPS coordinates. */ tile.left = x; tile.top = y; tile.width = tw; tile.height = th; vips_rect_intersectrect( &tile, &image, &tile ); /* The part of this tile that hits the region. */ vips_rect_intersectrect( &tile, r, &hit ); /* Convert to float and write to the region. */ for( z = 0; z < hit.height; z++ ) { ImfRgba *p = imf_buffer + (hit.left - tile.left) + (hit.top - tile.top + z) * tw; float *q = (float *) VIPS_REGION_ADDR( out, hit.left, hit.top + z ); ImfHalfToFloatArray( 4 * hit.width, (ImfHalf *) p, q ); } } return( 0 ); } int vips__openexr_read( const char *filename, VipsImage *out ) { Read *read; if( !(read = read_new( filename, out )) ) return( -1 ); if( read->tiles ) { VipsImage *raw; VipsImage *t; /* Tile cache: keep enough for two complete rows of tiles. */ raw = vips_image_new(); vips_object_local( out, raw ); read_header( read, raw ); if( vips_image_generate( raw, vips__openexr_start, vips__openexr_generate, NULL, read, NULL ) ) return( -1 ); /* Copy to out, adding a cache. Enough tiles for a complete * row, plus 50%. */ if( vips_tilecache( raw, &t, "tile_width", read->tile_width, "tile_height", read->tile_height, "max_tiles", (int) (1.5 * (1 + raw->Xsize / read->tile_width)), NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); } else { const int left = read->window.left; const int top = read->window.top; const int width = read->window.width; const int height = read->window.height; ImfRgba *imf_buffer; float *vips_buffer; int y; if( !(imf_buffer = VIPS_ARRAY( out, width, ImfRgba )) || !(vips_buffer = VIPS_ARRAY( out, 4 * width, float )) ) return( -1 ); read_header( read, out ); for( y = 0; y < height; y++ ) { if( !ImfInputSetFrameBuffer( read->lines, imf_buffer - left - (top + y) * width, 1, width ) ) { get_imf_error(); return( -1 ); } if( !ImfInputReadPixels( read->lines, top + y, top + y ) ) { get_imf_error(); return( -1 ); } ImfHalfToFloatArray( 4 * width, (ImfHalf *) imf_buffer, vips_buffer ); if( vips_image_write_line( out, y, (VipsPel *) vips_buffer ) ) return( -1 ); } } return( 0 ); } #endif /*HAVE_OPENEXR*/ vips-8.2.2/libvips/foreign/csv.h0000664000175000017500000000361312530402247013476 00000000000000/* common defs for csv read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_CSV_H #define VIPS_CSV_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ extern const char *vips__foreign_csv_suffs[]; int vips__csv_read( const char *filename, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator ); int vips__csv_read_header( const char *filename, VipsImage *out, int skip, int lines, const char *whitespace, const char *separator ); int vips__csv_write( VipsImage *in, const char *filename, const char *separator ); int vips__matrix_read_header( const char *filename, int *width, int *height, double *scale, double *offset ); int vips__matrix_ismatrix( const char *filename ); VipsImage *vips__matrix_read_file( FILE *fp ); VipsImage *vips__matrix_read( const char *filename ); int vips__matrix_write( VipsImage *in, const char *filename ); int vips__matrix_write_file( VipsImage *in, FILE *fp ); extern const char *vips__foreign_matrix_suffs[]; #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_CSV_H*/ vips-8.2.2/libvips/foreign/openslide2vips.c0000664000175000017500000003375412605241561015660 00000000000000/* Read a virtual microscope slide using OpenSlide. * * Benjamin Gilbert * * Copyright (c) 2011-2015 Carnegie Mellon University * * 26/11/11 * - initial version * 27/11/11 * - fix black background in transparent areas * - no need to set *stop on fill_region() error return * - add OpenSlide properties to image metadata * - consolidate setup into one function * - support reading arbitrary layers * - use VIPS_ARRAY() * - add helper to copy a line of pixels * - support reading associated images * 7/12/11 * - redirect OpenSlide error logging to vips_error() * 8/12/11 * - add more exposition to documentation * 9/12/11 * - unpack to a tile cache * 11/12/11 * - move argb->rgba into conversion * - turn into a set of read fns ready to be called from a class * 28/2/12 * - convert "layer" to "level" where externally visible * 9/4/12 * - move argb2rgba back in here, we don't have a use for coded pixels * - small cleanups * 11/4/12 * - fail if both level and associated image are specified * 20/9/12 * - update openslide_open error handling for 3.3.0 semantics * - switch from deprecated _layer_ functions * 11/10/12 * - look for tile-width and tile-height properties * - use threaded tile cache * 6/8/13 * - always output solid (not transparent) pixels * 25/1/14 * - use openslide_detect_vendor() on >= 3.4.0 * 30/7/14 * - add autocrop toggle * 9/8/14 * - do argb -> rgba for associated as well * 27/1/15 * - unpremultiplication speedups for fully opaque/transparent pixels */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_OPENSLIDE #include #include #include #include #include #include #include #include "openslide2vips.h" typedef struct { openslide_t *osr; char *associated; /* Crop to image bounds if @autocrop is set. */ gboolean autocrop; VipsRect bounds; /* Only valid if associated == NULL. */ int32_t level; double downsample; uint32_t bg; /* Try to get these from openslide properties. */ int tile_width; int tile_height; } ReadSlide; int vips__openslide_isslide( const char *filename ) { #ifdef HAVE_OPENSLIDE_3_4 const char *vendor; int ok; vendor = openslide_detect_vendor( filename ); /* Generic tiled tiff images can be opened by openslide as well. * Only offer to load this file if it's not a generic tiff since * we want vips_tiffload() to handle these. */ ok = ( vendor && strcmp( vendor, "generic-tiff" ) != 0 ); VIPS_DEBUG_MSG( "vips__openslide_isslide: %s - %d\n", filename, ok ); return( ok ); #else openslide_t *osr; int ok; ok = 0; osr = openslide_open( filename ); if( osr ) { const char *vendor; /* Generic tiled tiff images can be opened by openslide as * well. Only offer to load this file if it's not a generic * tiff since we want vips_tiffload() to handle these. */ vendor = openslide_get_property_value( osr, OPENSLIDE_PROPERTY_NAME_VENDOR ); /* vendor will be NULL if osr is in error state. */ if( vendor && strcmp( vendor, "generic-tiff" ) != 0 ) ok = 1; openslide_close( osr ); } VIPS_DEBUG_MSG( "vips__openslide_isslide: %s - %d\n", filename, ok ); return( ok ); #endif } static void readslide_destroy_cb( VipsImage *image, ReadSlide *rslide ) { VIPS_FREEF( openslide_close, rslide->osr ); VIPS_FREE( rslide->associated ); } static int check_associated_image( openslide_t *osr, const char *name ) { const char * const *associated; for( associated = openslide_get_associated_image_names( osr ); *associated != NULL; associated++ ) if( strcmp( *associated, name ) == 0 ) return( 0 ); vips_error( "openslide2vips", "%s", _( "invalid associated image name" ) ); return( -1 ); } static gboolean get_bounds( openslide_t *osr, VipsRect *rect ) { static const char *openslide_names[] = { "openslide.bounds-x", "openslide.bounds-y", "openslide.bounds-width", "openslide.bounds-height" }; static int vips_offsets[] = { G_STRUCT_OFFSET( VipsRect, left ), G_STRUCT_OFFSET( VipsRect, top ), G_STRUCT_OFFSET( VipsRect, width ), G_STRUCT_OFFSET( VipsRect, height ) }; const char *value; int i; for( i = 0; i < 4; i++ ) { if( !(value = openslide_get_property_value( osr, openslide_names[i] )) ) return( FALSE ); G_STRUCT_MEMBER( int, rect, vips_offsets[i] ) = atoi( value ); } return( TRUE ); } static ReadSlide * readslide_new( const char *filename, VipsImage *out, int level, gboolean autocrop, const char *associated ) { ReadSlide *rslide; int64_t w, h; const char *error; const char *background; const char * const *properties; char *associated_names; if( level && associated ) { vips_error( "openslide2vips", "%s", _( "specify only one of level or associated " "image" ) ); return( NULL ); } rslide = VIPS_NEW( out, ReadSlide ); memset( rslide, 0, sizeof( *rslide ) ); g_signal_connect( out, "close", G_CALLBACK( readslide_destroy_cb ), rslide ); rslide->level = level; rslide->autocrop = autocrop; rslide->associated = g_strdup( associated ); /* Non-crazy defaults, override below if we can. */ rslide->tile_width = 256; rslide->tile_height = 256; rslide->osr = openslide_open( filename ); if( rslide->osr == NULL ) { vips_error( "openslide2vips", "%s", _( "unsupported slide format" ) ); return( NULL ); } error = openslide_get_error( rslide->osr ); if( error ) { vips_error( "openslide2vips", _( "opening slide: %s" ), error ); return( NULL ); } if( level < 0 || level >= openslide_get_level_count( rslide->osr ) ) { vips_error( "openslide2vips", "%s", _( "invalid slide level" ) ); return( NULL ); } if( associated && check_associated_image( rslide->osr, associated ) ) return( NULL ); if( associated ) { openslide_get_associated_image_dimensions( rslide->osr, associated, &w, &h ); vips_image_set_string( out, "slide-associated-image", associated ); vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); } else { char buf[256]; const char *value; openslide_get_level_dimensions( rslide->osr, level, &w, &h ); rslide->downsample = openslide_get_level_downsample( rslide->osr, level ); vips_image_set_int( out, "slide-level", level ); vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); /* Try to get tile width/height. An undocumented, experimental * feature. */ vips_snprintf( buf, 256, "openslide.level[%d].tile-width", level ); if( (value = openslide_get_property_value( rslide->osr, buf )) ) rslide->tile_width = atoi( value ); vips_snprintf( buf, 256, "openslide.level[%d].tile-height", level ); if( (value = openslide_get_property_value( rslide->osr, buf )) ) rslide->tile_height = atoi( value ); if( value ) VIPS_DEBUG_MSG( "readslide_new: found tile-size\n" ); /* Some images have a bounds in the header. Crop to * that if autocrop is set. */ if( rslide->autocrop ) if( !get_bounds( rslide->osr, &rslide->bounds ) ) rslide->autocrop = FALSE; if( rslide->autocrop ) { VipsRect image; rslide->bounds.left /= rslide->downsample; rslide->bounds.top /= rslide->downsample; rslide->bounds.width /= rslide->downsample; rslide->bounds.height /= rslide->downsample; /* Clip against image size. */ image.left = 0; image.top = 0; image.width = w; image.height = h; vips_rect_intersectrect( &rslide->bounds, &image, &rslide->bounds ); /* If we've clipped to nothing, ignore bounds. */ if( vips_rect_isempty( &rslide->bounds ) ) rslide->autocrop = FALSE; } if( rslide->autocrop ) { w = rslide->bounds.width; h = rslide->bounds.height; } } rslide->bg = 0xffffff; if( (background = openslide_get_property_value( rslide->osr, OPENSLIDE_PROPERTY_NAME_BACKGROUND_COLOR )) ) rslide->bg = strtoul( background, NULL, 16 ); if( w <= 0 || h <= 0 || rslide->downsample < 0 ) { vips_error( "openslide2vips", _( "getting dimensions: %s" ), openslide_get_error( rslide->osr ) ); return( NULL ); } if( w > INT_MAX || h > INT_MAX ) { vips_error( "openslide2vips", "%s", _( "image dimensions overflow int" ) ); return( NULL ); } if( !rslide->autocrop ) { rslide->bounds.left = 0; rslide->bounds.top = 0; rslide->bounds.width = w; rslide->bounds.height = h; } vips_image_init_fields( out, w, h, 4, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, VIPS_INTERPRETATION_RGB, 1.0, 1.0 ); for( properties = openslide_get_property_names( rslide->osr ); *properties != NULL; properties++ ) vips_image_set_string( out, *properties, openslide_get_property_value( rslide->osr, *properties ) ); associated_names = g_strjoinv( ", ", (char **) openslide_get_associated_image_names( rslide->osr ) ); vips_image_set_string( out, "slide-associated-images", associated_names ); VIPS_FREE( associated_names ); return( rslide ); } int vips__openslide_read_header( const char *filename, VipsImage *out, int level, gboolean autocrop, char *associated ) { if( !readslide_new( filename, out, level, autocrop, associated ) ) return( -1 ); return( 0 ); } /* Convert from ARGB to RGBA and undo premultiplication. * * We throw away transparency. Formats like Mirax use transparent + bg * colour for areas with no useful pixels. But if we output * transparent pixels and then convert to RGB for jpeg write later, we * would have to pass the bg colour down the pipe somehow. The * structure of dzsave makes this tricky. * * We could output plain RGB instead, but that would break * compatibility with older vipses. */ static void argb2rgba( uint32_t *buf, int n, uint32_t bg ) { int i; for( i = 0; i < n; i++ ) { uint32_t *p = buf + i; uint32_t x = *p; uint8_t a = x >> 24; VipsPel *out = (VipsPel *) p; if( a == 255 ) *p = GUINT32_TO_BE( (x << 8) | 255 ); else if( a == 0 ) /* Use background color. */ *p = GUINT32_TO_BE( (bg << 8) | 255 ); else { /* Undo premultiplication. */ out[0] = 255 * ((x >> 16) & 255) / a; out[1] = 255 * ((x >> 8) & 255) / a; out[2] = 255 * (x & 255) / a; out[3] = 255; } } } static int vips__openslide_generate( VipsRegion *out, void *_seq, void *_rslide, void *unused, gboolean *stop ) { ReadSlide *rslide = _rslide; uint32_t bg = rslide->bg; VipsRect *r = &out->valid; int n = r->width * r->height; uint32_t *buf = (uint32_t *) VIPS_REGION_ADDR( out, r->left, r->top ); const char *error; VIPS_DEBUG_MSG( "vips__openslide_generate: %dx%d @ %dx%d\n", r->width, r->height, r->left, r->top ); /* We're inside a cache, so requests should always be * tile_width by tile_height pixels and on a tile boundary. */ g_assert( (r->left % rslide->tile_width) == 0 ); g_assert( (r->top % rslide->tile_height) == 0 ); g_assert( r->width <= rslide->tile_width ); g_assert( r->height <= rslide->tile_height ); /* The memory on the region should be contiguous for our ARGB->RGBA * loop below. */ g_assert( VIPS_REGION_LSKIP( out ) == r->width * 4 ); openslide_read_region( rslide->osr, buf, (r->left + rslide->bounds.left) * rslide->downsample, (r->top + rslide->bounds.top) * rslide->downsample, rslide->level, r->width, r->height ); error = openslide_get_error( rslide->osr ); if( error ) { vips_error( "openslide2vips", _( "reading region: %s" ), error ); return( -1 ); } /* Since we are inside a cache, we know buf must be continuous. */ argb2rgba( buf, n, bg ); return( 0 ); } int vips__openslide_read( const char *filename, VipsImage *out, int level, gboolean autocrop ) { ReadSlide *rslide; VipsImage *raw; VipsImage *t; VIPS_DEBUG_MSG( "vips__openslide_read: %s %d\n", filename, level ); raw = vips_image_new(); vips_object_local( out, raw ); if( !(rslide = readslide_new( filename, raw, level, autocrop, NULL )) ) return( -1 ); if( vips_image_generate( raw, NULL, vips__openslide_generate, NULL, rslide, NULL ) ) return( -1 ); /* Copy to out, adding a cache. Enough tiles for a complete row, plus * 50%. */ if( vips_tilecache( raw, &t, "tile_width", rslide->tile_width, "tile_height", rslide->tile_height, "max_tiles", (int) (1.5 * (1 + raw->Xsize / rslide->tile_width)), "threaded", TRUE, NULL ) ) return( -1 ); if( vips_image_write( t, out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); return( 0 ); } int vips__openslide_read_associated( const char *filename, VipsImage *out, const char *associated ) { ReadSlide *rslide; VipsImage *raw; uint32_t *buf; const char *error; VIPS_DEBUG_MSG( "vips__openslide_read_associated: %s %s\n", filename, associated ); /* Memory buffer. Get associated directly to this, then copy to out. */ raw = vips_image_new_memory(); vips_object_local( out, raw ); if( !(rslide = readslide_new( filename, raw, 0, FALSE, associated )) || vips_image_write_prepare( raw ) ) return( -1 ); buf = (uint32_t *) VIPS_IMAGE_ADDR( raw, 0, 0 ); openslide_read_associated_image( rslide->osr, rslide->associated, buf ); error = openslide_get_error( rslide->osr ); if( error ) { vips_error( "openslide2vips", _( "reading associated image: %s" ), error ); return( -1 ); } argb2rgba( buf, raw->Xsize * raw->Ysize, rslide->bg ); if( vips_image_write( raw, out ) ) return( -1 ); return( 0 ); } #endif /*HAVE_OPENSLIDE*/ vips-8.2.2/libvips/foreign/analyze2vips.h0000664000175000017500000000241512530402247015331 00000000000000/* common defs for tiff read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_ANALYZE_H #define VIPS_ANALYZE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips__isanalyze( const char *filename ); int vips__analyze_read_header( const char *filename, VipsImage *out ); int vips__analyze_read( const char *filename, VipsImage *out ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_ANALYZE_H*/ vips-8.2.2/libvips/foreign/fitssave.c0000664000175000017500000000750712530402247014530 00000000000000/* save to fits * * 2/12/11 * - wrap a class around the fits writer * 2/7/14 * - cache the image before write so we are sequential */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_CFITSIO #include #include #include #include #include "fits.h" typedef struct _VipsForeignSaveFits { VipsForeignSave parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveFits; typedef VipsForeignSaveClass VipsForeignSaveFitsClass; G_DEFINE_TYPE( VipsForeignSaveFits, vips_foreign_save_fits, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_fits_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveFits *fits = (VipsForeignSaveFits *) object; VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( fits ), 2 ); if( VIPS_OBJECT_CLASS( vips_foreign_save_fits_parent_class )-> build( object ) ) return( -1 ); /* FITS is written bottom-to-top, so we must flip. * * But all vips readers must work top-to-bottom (or vips_copy()'s seq * hint won't work) so we must cache the input image. * * We cache to RAM, but perhaps we should use something like * vips_get_disc_threshold() and copy to a tempfile. */ t[0] = vips_image_new_memory(); if( vips_image_write( save->ready, t[0] ) || vips_flip( t[0], &t[1], VIPS_DIRECTION_VERTICAL, NULL ) || vips__fits_write( t[1], fits->filename ) ) return( -1 ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_fits[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, UI, UI, F, X, D, DX }; static void vips_foreign_save_fits_class_init( VipsForeignSaveFitsClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "fitssave"; object_class->description = _( "save image to fits file" ); object_class->build = vips_foreign_save_fits_build; foreign_class->suffs = vips__fits_suffs; save_class->saveable = VIPS_SAVEABLE_ANY; save_class->format_table = bandfmt_fits; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveFits, filename ), NULL ); } static void vips_foreign_save_fits_init( VipsForeignSaveFits *fits ) { } #endif /*HAVE_CFITSIO*/ vips-8.2.2/libvips/foreign/magick2vips.c0000664000175000017500000004715712651123272015132 00000000000000/* Read a file using libMagick * * 7/1/03 JC * - from im_tiff2vips * 3/2/03 JC * - some InitializeMagick() fail with NULL arg * 2/11/04 * - im_magick2vips_header() also checks sensible width/height * 28/10/05 * - copy attributes to meta * - write many-frame images as a big column if all frames have identical * width/height/bands/depth * 31/3/06 * - test for magick attr support * 8/5/06 * - set RGB16/GREY16 if appropriate * 10/8/07 * - support 32/64 bit imagemagick too * 21/2/08 * - use MaxRGB if QuantumRange is missing (thanks Bob) * - look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel) * - use image->attributes if GetNextImageAttribute() is missing * 3/3/09 * - allow funky bit depths, like 14 (thanks Mikkel) * 17/3/09 * - reset dcm:display-range to help DICOM read * 20/4/09 * - argh libMagick uses 255 == transparent ... we must invert all * alpha channels * 12/5/09 * - fix signed/unsigned warnings * 23/7/09 * - SetImageOption() is optional (to help GM) * 4/2/10 * - gtkdoc * 30/4/10 * - better number of bands detection with GetImageType() * - use new API stuff, argh * 17/12/11 * - turn into a set of read fns ready to be called from a class * 11/6/13 * - add @all_frames option, off by default * 4/12/14 Lovell * - add @density option * 16/2/15 mcuelenaere * - add blob read * 26/2/15 * - close the read down early for a header read ... this saves an * fd during file read, handy for large numbers of input images */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Turn on debugging output. #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_MAGICK #include #include #include #include #include #include #include "magick.h" /* pre-float Magick used to call this MaxRGB. */ #if !defined(QuantumRange) # define QuantumRange MaxRGB #endif /* And this used to be UseHDRI. */ #if MAGICKCORE_HDRI_SUPPORT # define UseHDRI=1 #endif /* What we track during a read call. */ typedef struct _Read { char *filename; VipsImage *im; gboolean all_frames; Image *image; ImageInfo *image_info; ExceptionInfo exception; int n_frames; Image **frames; int frame_height; /* Mutex to serialise calls to libMagick during threaded read. */ GMutex *lock; } Read; /* Can be called many times. */ static void read_free( Read *read ) { #ifdef DEBUG printf( "magick2vips: read_free: %s\n", read->filename ); #endif /*DEBUG*/ VIPS_FREE( read->filename ); VIPS_FREEF( DestroyImageList, read->image ); VIPS_FREEF( DestroyImageInfo, read->image_info ); VIPS_FREE( read->frames ); if ( (&read->exception)->signature == MagickSignature ) { DestroyExceptionInfo( &read->exception ); } VIPS_FREEF( vips_g_mutex_free, read->lock ); } /* Can be called many times. */ static int read_close( VipsImage *im, Read *read ) { read_free( read ); return( 0 ); } static Read * read_new( const char *filename, VipsImage *im, gboolean all_frames, const char *density ) { Read *read; static int inited = 0; if( !inited ) { #ifdef HAVE_MAGICKCOREGENESIS MagickCoreGenesis( vips_get_argv0(), MagickFalse ); #else /*!HAVE_MAGICKCOREGENESIS*/ InitializeMagick( "" ); #endif /*HAVE_MAGICKCOREGENESIS*/ inited = 1; } if( !(read = VIPS_NEW( im, Read )) ) return( NULL ); read->filename = filename ? g_strdup( filename ) : NULL; read->all_frames = all_frames; read->im = im; read->image = NULL; read->image_info = CloneImageInfo( NULL ); GetExceptionInfo( &read->exception ); read->n_frames = 0; read->frames = NULL; read->frame_height = 0; read->lock = vips_g_mutex_new(); g_signal_connect( im, "close", G_CALLBACK( read_close ), read ); if( !read->image_info ) return( NULL ); if( filename ) vips_strncpy( read->image_info->filename, filename, MaxTextExtent ); /* Canvas resolution for rendering vector formats like SVG. */ VIPS_SETSTR( read->image_info->density, density ); #ifdef DEBUG printf( "magick2vips: read_new: %s\n", read->filename ); #endif /*DEBUG*/ return( read ); } static int get_bands( Image *image ) { int bands; ImageType type = GetImageType( image, &image->exception ); switch( type ) { case BilevelType: case GrayscaleType: bands = 1; break; case GrayscaleMatteType: /* ImageMagick also has PaletteBilevelMatteType, but GraphicsMagick * does not. Skip for portability. */ bands = 2; break; case PaletteType: case TrueColorType: bands = 3; break; case PaletteMatteType: case TrueColorMatteType: case ColorSeparationType: bands = 4; break; case ColorSeparationMatteType: bands = 5; break; default: vips_error( "magick2vips", _( "unsupported image type %d" ), (int) type ); return( -1 ); } return( bands ); } static int parse_header( Read *read ) { VipsImage *im = read->im; Image *image = read->image; Image *p; int i; #ifdef DEBUG printf( "parse_header: filename = %s\n", read->filename ); printf( "GetImageChannelDepth(AllChannels) = %zd\n", GetImageChannelDepth( image, AllChannels, &image->exception ) ); printf( "GetImageDepth() = %zd\n", GetImageDepth( image, &image->exception ) ); printf( "image->depth = %zd\n", image->depth ); printf( "GetImageType() = %d\n", GetImageType( image, &image->exception ) ); printf( "IsGrayImage() = %d\n", IsGrayImage( image, &image->exception ) ); printf( "IsMonochromeImage() = %d\n", IsMonochromeImage( image, &image->exception ) ); printf( "IsOpaqueImage() = %d\n", IsOpaqueImage( image, &image->exception ) ); printf( "image->columns = %zd\n", image->columns ); printf( "image->rows = %zd\n", image->rows ); #endif /*DEBUG*/ im->Xsize = image->columns; im->Ysize = image->rows; read->frame_height = image->rows; if( (im->Bands = get_bands( image )) < 0 ) return( -1 ); /* Depth can be 'fractional'. You'd think we should use * GetImageDepth() but that seems unreliable. 16-bit mono DICOM images * are reported as depth 1, for example. */ im->BandFmt = -1; if( image->depth >= 1 && image->depth <= 8 ) im->BandFmt = VIPS_FORMAT_UCHAR; if( image->depth >= 9 && image->depth <= 16 ) im->BandFmt = VIPS_FORMAT_USHORT; #ifdef UseHDRI if( image->depth == 32 ) im->BandFmt = VIPS_FORMAT_FLOAT; if( image->depth == 64 ) im->BandFmt = VIPS_FORMAT_DOUBLE; #else /*!UseHDRI*/ if( image->depth == 32 ) im->BandFmt = VIPS_FORMAT_UINT; #endif /*UseHDRI*/ if( im->BandFmt == -1 ) { vips_error( "magick2vips", _( "unsupported bit depth %d" ), (int) image->depth ); return( -1 ); } switch( image->colorspace ) { case GRAYColorspace: if( im->BandFmt == VIPS_FORMAT_USHORT ) im->Type = VIPS_INTERPRETATION_GREY16; else im->Type = VIPS_INTERPRETATION_B_W; break; case RGBColorspace: if( im->BandFmt == VIPS_FORMAT_USHORT ) im->Type = VIPS_INTERPRETATION_RGB16; else im->Type = VIPS_INTERPRETATION_RGB; break; case sRGBColorspace: if( im->BandFmt == VIPS_FORMAT_USHORT ) im->Type = VIPS_INTERPRETATION_RGB16; else im->Type = VIPS_INTERPRETATION_sRGB; break; case CMYKColorspace: im->Type = VIPS_INTERPRETATION_CMYK; break; default: vips_error( "magick2vips", _( "unsupported colorspace %d" ), (int) image->colorspace ); return( -1 ); } switch( image->units ) { case PixelsPerInchResolution: im->Xres = image->x_resolution / 25.4; im->Yres = image->y_resolution / 25.4; break; case PixelsPerCentimeterResolution: im->Xres = image->x_resolution / 10.0; im->Yres = image->y_resolution / 10.0; break; default: im->Xres = 1.0; im->Yres = 1.0; break; } /* Other fields. */ im->Coding = VIPS_CODING_NONE; vips_image_pipelinev( im, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); /* Three ways to loop over attributes / properties :-( */ #ifdef HAVE_RESETIMAGEPROPERTYITERATOR { char *key; /* This is the most recent imagemagick API, test for this first. */ ResetImagePropertyIterator( image ); while( (key = GetNextImageProperty( image )) ) { char name_text[256]; VipsBuf name = VIPS_BUF_STATIC( name_text ); vips_buf_appendf( &name, "magick-%s", key ); vips_image_set_string( im, vips_buf_all( &name ), GetImageProperty( image, key ) ); } } #elif defined(HAVE_RESETIMAGEATTRIBUTEITERATOR) { const ImageAttribute *attr; /* magick6.1-ish and later, deprecated in 6.5ish. */ ResetImageAttributeIterator( image ); while( (attr = GetNextImageAttribute( image )) ) { char name_text[256]; VipsBuf name = VIPS_BUF_STATIC( name_text ); vips_buf_appendf( &name, "magick-%s", attr->key ); vips_image_set_string( im, vips_buf_all( &name ), attr->value ); } } #else { const ImageAttribute *attr; /* GraphicsMagick is missing the iterator: we have to loop ourselves. * ->attributes is marked as private in the header, but there's no * getter so we have to access it directly. */ for( attr = image->attributes; attr; attr = attr->next ) { char name_text[256]; VipsBuf name = VIPS_BUF_STATIC( name_text ); vips_buf_appendf( &name, "magick-%s", attr->key ); vips_image_set_string( im, vips_buf_all( &name ), attr->value ); } } #endif /* Do we have a set of equal-sized frames? Append them. FIXME ... there must be an attribute somewhere from dicom read which says this is a volumetric image */ read->n_frames = 0; for( p = image; p; (p = GetNextImageInList( p )) ) { if( p->columns != (unsigned int) im->Xsize || p->rows != (unsigned int) im->Ysize || get_bands( p ) != im->Bands ) break; read->n_frames += 1; } if( p ) /* Nope ... just do the first image in the list. */ read->n_frames = 1; #ifdef DEBUG printf( "image has %d frames\n", read->n_frames ); #endif /*DEBUG*/ /* If all_frames is off, just get the first one. */ if( !read->all_frames ) read->n_frames = 1; /* Record frame pointers. */ im->Ysize *= read->n_frames; if( !(read->frames = VIPS_ARRAY( NULL, read->n_frames, Image * )) ) return( -1 ); p = image; for( i = 0; i < read->n_frames; i++ ) { read->frames[i] = p; p = GetNextImageInList( p ); } return( 0 ); } /* Divide by this to get 0 - MAX from a Quantum. Eg. consider QuantumRange == * 65535, MAX == 255 (a Q16 ImageMagic representing an 8-bit image). Make sure * this can't be zero (if QuantumRange < MAX) .. can happen if we have a Q8 * ImageMagick trying to represent a 16-bit image. */ #define SCALE( MAX ) \ (QuantumRange < (MAX) ? \ 1 : \ ((QuantumRange + 1) / ((MAX) + 1))) #define GRAY_LOOP( TYPE, MAX ) { \ TYPE *q = (TYPE *) q8; \ \ for( x = 0; x < n; x++ ) \ q[x] = pixels[x].green / SCALE( MAX ); \ } #define GRAYA_LOOP( TYPE, MAX ) { \ TYPE *q = (TYPE *) q8; \ \ for( x = 0; x < n; x++ ) { \ q[0] = pixels[x].green / SCALE( MAX ); \ q[1] = MAX - pixels[x].opacity / SCALE( MAX ); \ \ q += 2; \ } \ } #define RGB_LOOP( TYPE, MAX ) { \ TYPE *q = (TYPE *) q8; \ \ for( x = 0; x < n; x++ ) { \ q[0] = pixels[x].red / SCALE( MAX ); \ q[1] = pixels[x].green / SCALE( MAX ); \ q[2] = pixels[x].blue / SCALE( MAX ); \ \ q += 3; \ } \ } #define RGBA_LOOP( TYPE, MAX ) { \ TYPE *q = (TYPE *) q8; \ \ for( x = 0; x < n; x++ ) { \ q[0] = pixels[x].red / SCALE( MAX ); \ q[1] = pixels[x].green / SCALE( MAX ); \ q[2] = pixels[x].blue / SCALE( MAX ); \ q[3] = MAX - pixels[x].opacity / SCALE( MAX ); \ \ q += 4; \ } \ } static void unpack_pixels( VipsImage *im, VipsPel *q8, PixelPacket *pixels, int n ) { int x; switch( im->Bands ) { case 1: /* Gray. */ switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: GRAY_LOOP( unsigned char, 255 ); break; case VIPS_FORMAT_USHORT: GRAY_LOOP( unsigned short, 65535 ); break; case VIPS_FORMAT_UINT: GRAY_LOOP( unsigned int, 4294967295UL ); break; case VIPS_FORMAT_DOUBLE: GRAY_LOOP( double, QuantumRange ); break; default: g_assert_not_reached(); } break; case 2: /* Gray plus alpha. */ switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: GRAYA_LOOP( unsigned char, 255 ); break; case VIPS_FORMAT_USHORT: GRAYA_LOOP( unsigned short, 65535 ); break; case VIPS_FORMAT_UINT: GRAYA_LOOP( unsigned int, 4294967295UL ); break; case VIPS_FORMAT_DOUBLE: GRAYA_LOOP( double, QuantumRange ); break; default: g_assert_not_reached(); } break; case 3: /* RGB. */ switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: RGB_LOOP( unsigned char, 255 ); break; case VIPS_FORMAT_USHORT: RGB_LOOP( unsigned short, 65535 ); break; case VIPS_FORMAT_UINT: RGB_LOOP( unsigned int, 4294967295UL ); break; case VIPS_FORMAT_DOUBLE: RGB_LOOP( double, QuantumRange ); break; default: g_assert_not_reached(); } break; case 4: /* RGBA or CMYK. */ switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: RGBA_LOOP( unsigned char, 255 ); break; case VIPS_FORMAT_USHORT: RGBA_LOOP( unsigned short, 65535 ); break; case VIPS_FORMAT_UINT: RGBA_LOOP( unsigned int, 4294967295UL ); break; case VIPS_FORMAT_DOUBLE: RGBA_LOOP( double, QuantumRange ); break; default: g_assert_not_reached(); } break; default: g_assert_not_reached(); } } static PixelPacket * get_pixels( Image *image, int left, int top, int width, int height ) { PixelPacket *pixels; #ifdef HAVE_GETVIRTUALPIXELS if( !(pixels = (PixelPacket *) GetVirtualPixels( image, left, top, width, height, &image->exception )) ) #else if( !(pixels = GetImagePixels( image, left, top, width, height )) ) #endif return( NULL ); /* Can't happen if red/green/blue are doubles. */ #ifndef UseHDRI /* Unpack palette. */ if( image->storage_class == PseudoClass ) { #ifdef HAVE_GETVIRTUALPIXELS IndexPacket *indexes = (IndexPacket *) GetVirtualIndexQueue( image ); #else IndexPacket *indexes = GetIndexes( image ); #endif int i; for( i = 0; i < width * height; i++ ) { IndexPacket x = indexes[i]; if( x < image->colors ) { pixels[i].red = image->colormap[x].red; pixels[i].green = image->colormap[x].green; pixels[i].blue = image->colormap[x].blue; } } } #endif /*UseHDRI*/ return( pixels ); } static int magick_fill_region( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { Read *read = (Read *) a; VipsRect *r = &out->valid; int y; for( y = 0; y < r->height; y++ ) { int top = r->top + y; int frame = top / read->frame_height; int line = top % read->frame_height; PixelPacket *pixels; g_mutex_lock( read->lock ); pixels = get_pixels( read->frames[frame], r->left, line, r->width, 1 ); g_mutex_unlock( read->lock ); if( !pixels ) { vips_error( "magick2vips", "%s", _( "unable to read pixels" ) ); return( -1 ); } unpack_pixels( read->im, VIPS_REGION_ADDR( out, r->left, top ), pixels, r->width ); } return( 0 ); } int vips__magick_read( const char *filename, VipsImage *out, gboolean all_frames, const char *density ) { Read *read; #ifdef DEBUG printf( "magick2vips: vips__magick_read: %s\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, out, all_frames, density )) ) return( -1 ); #ifdef HAVE_SETIMAGEOPTION /* When reading DICOM images, we want to ignore any * window_center/_width setting, since it may put pixels outside the * 0-65535 range and lose data. * * These window settings are attached as vips metadata, so our caller * can interpret them if it wants. */ SetImageOption( read->image_info, "dcm:display-range", "reset" ); #endif /*HAVE_SETIMAGEOPTION*/ #ifdef DEBUG printf( "magick2vips: calling ReadImage() ...\n" ); #endif /*DEBUG*/ read->image = ReadImage( read->image_info, &read->exception ); if( !read->image ) { vips_error( "magick2vips", _( "unable to read file \"%s\"\n" "libMagick error: %s %s" ), filename, read->exception.reason, read->exception.description ); return( -1 ); } if( parse_header( read ) ) return( -1 ); if( vips_image_generate( out, NULL, magick_fill_region, NULL, read, NULL ) ) return( -1 ); return( 0 ); } /* This has severe issues. See: * * http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=20017 */ int vips__magick_read_header( const char *filename, VipsImage *im, gboolean all_frames, const char *density ) { Read *read; #ifdef DEBUG printf( "vips__magick_read_header: %s\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, im, all_frames, density )) ) return( -1 ); #ifdef DEBUG printf( "vips__magick_read_header: pinging image ...\n" ); #endif /*DEBUG*/ read->image = PingImage( read->image_info, &read->exception ); if( !read->image ) { vips_error( "magick2vips", _( "unable to ping file " "\"%s\"\nlibMagick error: %s %s" ), filename, read->exception.reason, read->exception.description ); return( -1 ); } if( parse_header( read ) ) return( -1 ); if( im->Xsize <= 0 || im->Ysize <= 0 ) { vips_error( "magick2vips", "%s", _( "bad image size" ) ); return( -1 ); } /* Just a header read: we can free the read early and save an fd. */ read_free( read ); return( 0 ); } int vips__magick_read_buffer( const void *buf, const size_t len, VipsImage *out, gboolean all_frames, const char *density ) { Read *read; #ifdef DEBUG printf( "magick2vips: vips__magick_read_buffer: %p %zu\n", buf, len ); #endif /*DEBUG*/ if( !(read = read_new( NULL, out, all_frames, density )) ) return( -1 ); #ifdef HAVE_SETIMAGEOPTION /* When reading DICOM images, we want to ignore any * window_center/_width setting, since it may put pixels outside the * 0-65535 range and lose data. * * These window settings are attached as vips metadata, so our caller * can interpret them if it wants. */ SetImageOption( read->image_info, "dcm:display-range", "reset" ); #endif /*HAVE_SETIMAGEOPTION*/ #ifdef DEBUG printf( "magick2vips: calling BlobToImage() ...\n" ); #endif /*DEBUG*/ read->image = BlobToImage( read->image_info, buf, len, &read->exception ); if( !read->image ) { vips_error( "magick2vips", _( "unable to read buffer\n" "libMagick error: %s %s" ), read->exception.reason, read->exception.description ); return( -1 ); } if( parse_header( read ) ) return( -1 ); if( vips_image_generate( out, NULL, magick_fill_region, NULL, read, NULL ) ) return( -1 ); return( 0 ); } int vips__magick_read_buffer_header( const void *buf, const size_t len, VipsImage *im, gboolean all_frames, const char *density ) { Read *read; #ifdef DEBUG printf( "vips__magick_read_buffer_header: %p %zu\n", buf, len ); #endif /*DEBUG*/ if( !(read = read_new( NULL, im, all_frames, density )) ) return( -1 ); #ifdef DEBUG printf( "vips__magick_read_buffer_header: pinging blob ...\n" ); #endif /*DEBUG*/ read->image = PingBlob( read->image_info, buf, len, &read->exception ); if( !read->image ) { vips_error( "magick2vips", _( "unable to ping blob\n" "libMagick error: %s %s" ), read->exception.reason, read->exception.description ); return( -1 ); } if( parse_header( read ) ) return( -1 ); if( im->Xsize <= 0 || im->Ysize <= 0 ) { vips_error( "magick2vips", "%s", _( "bad image size" ) ); return( -1 ); } return( 0 ); } #endif /*HAVE_MAGICK*/ vips-8.2.2/libvips/foreign/fits.c0000664000175000017500000004040412530402247013642 00000000000000/* Read FITS files with cfitsio * * 26/10/10 * - from matlab.c * 27/10/10 * - oops, forgot to init status in close * 30/11/10 * - set RGB16/GREY16 if appropriate * - allow up to 10 dimensions as long as they are empty * 27/1/11 * - lazy read * 31/1/11 * - read in planes and combine with im_bandjoin() * - read whole tiles with fits_read_subset() when we can * 17/3/11 * - renames, updates etc. ready for adding fits write * - fits write! * 21/3/11 * - read/write metadata as whole records to avoid changing things * - cast input to a supported format * - bandsplit for write * 13/12/11 * - redo as a set of fns ready for wrapping in a new-style class * 23/6/13 * - fix ushort save with values >32k, thanks weaverwb */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_CFITSIO #include #include #include #include #include #include #include #include "fits.h" /* TODO - ask Doug for a test colour image found WFPC2u5780205r_c0fx.fits on the fits samples page, but it's tiny - test performance - vips__fits_read() makes rather ugly bandjoins, fix */ /* vips only supports 3 dimensions, but we allow up to MAX_DIMENSIONS as long * as the higher dimensions are all empty. If you change this value, change * fits2vips_get_header() as well. */ #define MAX_DIMENSIONS (10) /* What we track during a cfitsio-file read or write. */ typedef struct { char *filename; VipsImage *image; fitsfile *fptr; int datatype; int naxis; long long int naxes[MAX_DIMENSIONS]; GMutex *lock; /* Lock fits_*() calls with this */ /* Set this to -1 to read all bands, or a +ve int to read a specific * band. */ int band_select; /* We split bands up for write into this buffer. */ VipsPel *buffer; } VipsFits; const char *vips__fits_suffs[] = { ".fits", NULL }; static void vips_fits_error( int status ) { char buf[80]; fits_get_errstatus( status, buf ); vips_error( "fits", "%s", buf ); } /* Shut down. Can be called many times. */ static void vips_fits_close( VipsFits *fits ) { VIPS_FREE( fits->filename ); VIPS_FREEF( vips_g_mutex_free, fits->lock ); if( fits->fptr ) { int status; status = 0; if( fits_close_file( fits->fptr, &status ) ) vips_fits_error( status ); fits->fptr = NULL; } VIPS_FREE( fits->buffer ); } static void vips_fits_close_cb( VipsImage *image, VipsFits *fits ) { vips_fits_close( fits ); } static VipsFits * vips_fits_new_read( const char *filename, VipsImage *out, int band_select ) { VipsFits *fits; int status; if( !(fits = VIPS_NEW( out, VipsFits )) ) return( NULL ); fits->filename = vips_strdup( NULL, filename ); fits->image = out; fits->fptr = NULL; fits->lock = NULL; fits->band_select = band_select; fits->buffer = NULL; g_signal_connect( out, "close", G_CALLBACK( vips_fits_close_cb ), fits ); status = 0; if( fits_open_file( &fits->fptr, filename, READONLY, &status ) ) { vips_error( "fits", _( "unable to open \"%s\"" ), filename ); vips_fits_error( status ); return( NULL ); } fits->lock = vips_g_mutex_new(); return( fits ); } /* fits image types -> VIPS band formats. VIPS doesn't have 64-bit int, so no * entry for LONGLONG_IMG (64). */ static int fits2vips_formats[][3] = { { BYTE_IMG, VIPS_FORMAT_UCHAR, TBYTE }, { SHORT_IMG, VIPS_FORMAT_SHORT, TSHORT }, { USHORT_IMG, VIPS_FORMAT_USHORT, TUSHORT }, { LONG_IMG, VIPS_FORMAT_INT, TINT }, { ULONG_IMG, VIPS_FORMAT_UINT, TUINT }, { FLOAT_IMG, VIPS_FORMAT_FLOAT, TFLOAT }, { DOUBLE_IMG, VIPS_FORMAT_DOUBLE, TDOUBLE } }; static int vips_fits_get_header( VipsFits *fits, VipsImage *out ) { int status; int bitpix; int width, height, bands, format, type; int keysexist; int i; status = 0; if( fits_get_img_paramll( fits->fptr, 10, &bitpix, &fits->naxis, fits->naxes, &status ) ) { vips_fits_error( status ); return( -1 ); } #ifdef VIPS_DEBUG VIPS_DEBUG_MSG( "naxis = %d\n", fits->naxis ); for( i = 0; i < fits->naxis; i++ ) VIPS_DEBUG_MSG( "%d) %lld\n", i, fits->naxes[i] ); #endif /*VIPS_DEBUG*/ height = 1; bands = 1; switch( fits->naxis ) { /* If you add more dimensions here, adjust data read below. See also * the definition of MAX_DIMENSIONS above. */ case 10: case 9: case 8: case 7: case 6: case 5: case 4: for( i = fits->naxis; i > 3; i-- ) if( fits->naxes[i - 1] != 1 ) { vips_error( "fits", "%s", _( "dimensions above 3 " "must be size 1" ) ); return( -1 ); } case 3: bands = fits->naxes[2]; case 2: height = fits->naxes[1]; case 1: width = fits->naxes[0]; break; default: vips_error( "fits", _( "bad number of axis %d" ), fits->naxis ); return( -1 ); } /* Are we in one-band mode? */ if( fits->band_select != -1 ) bands = 1; /* Get image format. We want the 'raw' format of the image, our caller * can convert using the meta info if they want. */ for( i = 0; i < VIPS_NUMBER( fits2vips_formats ); i++ ) if( fits2vips_formats[i][0] == bitpix ) break; if( i == VIPS_NUMBER( fits2vips_formats ) ) { vips_error( "fits", _( "unsupported bitpix %d\n" ), bitpix ); return( -1 ); } format = fits2vips_formats[i][1]; fits->datatype = fits2vips_formats[i][2]; if( bands == 1 ) { if( format == VIPS_FORMAT_USHORT ) type = VIPS_INTERPRETATION_GREY16; else type = VIPS_INTERPRETATION_B_W; } else if( bands == 3 ) { if( format == VIPS_FORMAT_USHORT ) type = VIPS_INTERPRETATION_RGB16; else type = VIPS_INTERPRETATION_RGB; } else type = VIPS_INTERPRETATION_MULTIBAND; vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, NULL ); vips_image_init_fields( out, width, height, bands, format, VIPS_CODING_NONE, type, 1.0, 1.0 ); /* Read all keys into meta. */ if( fits_get_hdrspace( fits->fptr, &keysexist, NULL, &status ) ) { vips_fits_error( status ); return( -1 ); } for( i = 0; i < keysexist; i++ ) { char record[81]; char vipsname[100]; if( fits_read_record( fits->fptr, i + 1, record, &status ) ) { vips_fits_error( status ); return( -1 ); } VIPS_DEBUG_MSG( "fits2vips: setting meta on vips image:\n" ); VIPS_DEBUG_MSG( " record == \"%s\"\n", record ); /* FITS lets keys repeat. For example, HISTORY appears many * times, each time with a fresh line of history attached. We * have to include the key index in the vips name we assign. */ vips_snprintf( vipsname, 100, "fits-%d", i ); vips_image_set_string( out, vipsname, record ); } return( 0 ); } int vips__fits_read_header( const char *filename, VipsImage *out ) { VipsFits *fits; VIPS_DEBUG_MSG( "fits2vips_header: reading \"%s\"\n", filename ); if( !(fits = vips_fits_new_read( filename, out, -1 )) || vips_fits_get_header( fits, out ) ) return( -1 ); return( 0 ); } static int fits2vips_generate( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { VipsFits *fits = (VipsFits *) a; VipsRect *r = &out->valid; VipsPel *q; int z; int status; long fpixel[MAX_DIMENSIONS]; long lpixel[MAX_DIMENSIONS]; long inc[MAX_DIMENSIONS]; status = 0; VIPS_DEBUG_MSG( "fits2vips_generate: " "generating left = %d, top = %d, width = %d, height = %d\n", r->left, r->top, r->width, r->height ); /* Special case: the region we are writing to is exactly the width we * need, ie. we can read a rectangular area into it. */ if( VIPS_REGION_LSKIP( out ) == VIPS_REGION_SIZEOF_LINE( out ) ) { VIPS_DEBUG_MSG( "fits2vips_generate: block read\n" ); for( z = 0; z < MAX_DIMENSIONS; z++ ) fpixel[z] = 1; fpixel[0] = r->left + 1; fpixel[1] = r->top + 1; fpixel[2] = fits->band_select + 1; for( z = 0; z < MAX_DIMENSIONS; z++ ) lpixel[z] = 1; lpixel[0] = VIPS_RECT_RIGHT( r ); lpixel[1] = VIPS_RECT_BOTTOM( r ); lpixel[2] = fits->band_select + 1; for( z = 0; z < MAX_DIMENSIONS; z++ ) inc[z] = 1; q = VIPS_REGION_ADDR( out, r->left, r->top ); /* Break on ffgsv() for this call. */ g_mutex_lock( fits->lock ); if( fits_read_subset( fits->fptr, fits->datatype, fpixel, lpixel, inc, NULL, q, NULL, &status ) ) { vips_fits_error( status ); g_mutex_unlock( fits->lock ); return( -1 ); } g_mutex_unlock( fits->lock ); } else { int y; for( y = r->top; y < VIPS_RECT_BOTTOM( r ); y ++ ) { for( z = 0; z < MAX_DIMENSIONS; z++ ) fpixel[z] = 1; fpixel[0] = r->left + 1; fpixel[1] = y + 1; fpixel[2] = fits->band_select + 1; for( z = 0; z < MAX_DIMENSIONS; z++ ) lpixel[z] = 1; lpixel[0] = VIPS_RECT_RIGHT( r ); lpixel[1] = y + 1; lpixel[2] = fits->band_select + 1; for( z = 0; z < MAX_DIMENSIONS; z++ ) inc[z] = 1; q = VIPS_REGION_ADDR( out, r->left, y ); /* Break on ffgsv() for this call. */ g_mutex_lock( fits->lock ); if( fits_read_subset( fits->fptr, fits->datatype, fpixel, lpixel, inc, NULL, q, NULL, &status ) ) { vips_fits_error( status ); g_mutex_unlock( fits->lock ); return( -1 ); } g_mutex_unlock( fits->lock ); } } return( 0 ); } static int fits2vips( const char *filename, VipsImage *out, int band_select ) { VipsFits *fits; /* The -1 mode is just for reading the header. */ g_assert( band_select >= 0 ); if( !(fits = vips_fits_new_read( filename, out, band_select )) ) return( -1 ); if( vips_fits_get_header( fits, out ) || vips_image_generate( out, NULL, fits2vips_generate, NULL, fits, NULL ) ) { vips_fits_close( fits ); return( -1 ); } /* Don't vips_fits_close(), we need it to stick around for the * generate. */ return( 0 ); } int vips__fits_read( const char *filename, VipsImage *out ) { VipsImage *t; int n_bands; VIPS_DEBUG_MSG( "fits2vips: reading \"%s\"\n", filename ); /* fits is naturally a band-separated format. For single-band images * we can just read out. For many bands we read each band out * separately then join them. */ t = vips_image_new(); if( vips__fits_read_header( filename, t ) ) { g_object_unref( t ); return( -1 ); } n_bands = t->Bands; g_object_unref( t ); if( n_bands == 1 ) { if( fits2vips( filename, out, 0 ) ) return( -1 ); } else { VipsImage **x; int i; t = vips_image_new(); x = (VipsImage **) vips_object_local_array( VIPS_OBJECT( t ), n_bands + 1 ); for( i = 0; i < n_bands; i++ ) { x[i] = vips_image_new(); if( fits2vips( filename, x[i], i ) ) { g_object_unref( t ); return( -1 ); } } if( vips_bandjoin( x, &x[n_bands], n_bands, NULL ) || vips_image_write( x[n_bands], out ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); } return( 0 ); } int vips__fits_isfits( const char *filename ) { fitsfile *fptr; int status; VIPS_DEBUG_MSG( "isfits: testing \"%s\"\n", filename ); status = 0; if( fits_open_image( &fptr, filename, READONLY, &status ) ) { VIPS_DEBUG_MSG( "isfits: error reading \"%s\"\n", filename ); #ifdef VIPS_DEBUG vips_fits_error( status ); #endif /*VIPS_DEBUG*/ return( 0 ); } fits_close_file( fptr, &status ); return( 1 ); } static VipsFits * vips_fits_new_write( VipsImage *in, const char *filename ) { VipsFits *fits; int status; status = 0; if( !(fits = VIPS_NEW( in, VipsFits )) ) return( NULL ); fits->filename = vips_strdup( VIPS_OBJECT( in ), filename ); fits->image = in; fits->fptr = NULL; fits->lock = NULL; fits->band_select = -1; fits->buffer = NULL; g_signal_connect( in, "close", G_CALLBACK( vips_fits_close_cb ), fits ); if( !(fits->filename = vips_strdup( NULL, filename )) ) return( NULL ); /* We need to be able to hold one scanline of one band. */ if( !(fits->buffer = VIPS_ARRAY( NULL, VIPS_IMAGE_SIZEOF_ELEMENT( in ) * in->Xsize, VipsPel )) ) return( NULL ); /* fits_create_file() will fail if there's a file of thet name, unless * we put a "!" in front ofthe filename. This breaks conventions with * the rest of vips, so just unlink explicitly. */ g_unlink( filename ); if( fits_create_file( &fits->fptr, filename, &status ) ) { vips_error( "fits", _( "unable to write to \"%s\"" ), filename ); vips_fits_error( status ); return( NULL ); } fits->lock = vips_g_mutex_new(); return( fits ); } static void * vips_fits_write_meta( VipsImage *image, const char *field, GValue *value, void *a ) { VipsFits *fits = (VipsFits *) a; int status; const char *value_str; status = 0; /* We want fields which start "fits-". */ if( !vips_isprefix( "fits-", field ) ) return( NULL ); /* The value should be a refstring, since we wrote it in fits2vips * above ^^. */ value_str = vips_value_get_ref_string( value, NULL ); VIPS_DEBUG_MSG( "vips_fits_write_meta: setting meta on fits image:\n" ); VIPS_DEBUG_MSG( " value == \"%s\"\n", value_str ); if( fits_write_record( fits->fptr, value_str, &status ) ) { vips_fits_error( status ); return( a ); } return( NULL ); } static int vips_fits_set_header( VipsFits *fits, VipsImage *in ) { int status; int bitpix; int i; status = 0; fits->naxis = 3; fits->naxes[0] = in->Xsize; fits->naxes[1] = in->Ysize; fits->naxes[2] = in->Bands; for( i = 0; i < VIPS_NUMBER( fits2vips_formats ); i++ ) if( fits2vips_formats[i][1] == in->BandFmt ) break; if( i == VIPS_NUMBER( fits2vips_formats ) ) { vips_error( "fits", _( "unsupported BandFmt %d\n" ), in->BandFmt ); return( -1 ); } bitpix = fits2vips_formats[i][0]; fits->datatype = fits2vips_formats[i][2]; #ifdef VIPS_DEBUG VIPS_DEBUG_MSG( "naxis = %d\n", fits->naxis ); for( i = 0; i < fits->naxis; i++ ) VIPS_DEBUG_MSG( "%d) %lld\n", i, fits->naxes[i] ); VIPS_DEBUG_MSG( "bitpix = %d\n", bitpix ); #endif /*VIPS_DEBUG*/ if( fits_create_imgll( fits->fptr, bitpix, fits->naxis, fits->naxes, &status ) ) { vips_fits_error( status ); return( -1 ); } if( vips_image_map( in, (VipsImageMapFn) vips_fits_write_meta, fits ) ) return( -1 ); return( 0 ); } static int vips_fits_write( VipsRegion *region, VipsRect *area, void *a ) { VipsFits *fits = (VipsFits *) a; VipsImage *image = fits->image; int es = VIPS_IMAGE_SIZEOF_ELEMENT( image ); int ps = VIPS_IMAGE_SIZEOF_PEL( image ); int status; int y, b, x, k; status = 0; VIPS_DEBUG_MSG( "vips_fits_write: " "writing left = %d, top = %d, width = %d, height = %d\n", area->left, area->top, area->width, area->height ); /* We need to write a band at a time. We can't bandsplit in vips, * since vips_sink_disc() can't loop over many images at once, sadly. */ for( y = 0; y < area->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( region, area->left, area->top + y ); for( b = 0; b < image->Bands; b++ ) { VipsPel *p1, *q; long fpixel[3]; p1 = p + b * es; q = fits->buffer; for( x = 0; x < area->width; x++ ) { for( k = 0; k < es; k++ ) q[k] = p1[k]; q += es; p1 += ps; } fpixel[0] = area->left + 1; fpixel[1] = area->top + y + 1; fpixel[2] = b + 1; /* No need to lock, write functions are single-threaded. */ if( fits_write_pix( fits->fptr, fits->datatype, fpixel, area->width, fits->buffer, &status ) ) { vips_fits_error( status ); return( -1 ); } } } return( 0 ); } int vips__fits_write( VipsImage *in, const char *filename ) { VipsFits *fits; VIPS_DEBUG_MSG( "vips2fits: writing \"%s\"\n", filename ); if( !(fits = vips_fits_new_write( in, filename )) ) return( -1 ); if( vips_fits_set_header( fits, fits->image ) || vips_sink_disc( fits->image, vips_fits_write, fits ) ) { vips_fits_close( fits ); return( -1 ); } vips_fits_close( fits ); return( 0 ); } #endif /*HAVE_CFITSIO*/ vips-8.2.2/libvips/foreign/fits.h0000664000175000017500000000253712530402247013654 00000000000000/* defs for fits read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_FITS_H #define VIPS_FITS_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ extern const char *vips__fits_suffs[]; int vips__fits_isfits( const char *filename ); int vips__fits_read_header( const char *filename, VipsImage *out ); int vips__fits_read( const char *filename, VipsImage *out ); int vips__fits_write( VipsImage *in, const char *filename ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_FITS_H*/ vips-8.2.2/libvips/foreign/magick.h0000664000175000017500000000307412530402247014137 00000000000000/* common defs for libMagick read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_MAGICK_H #define VIPS_MAGICK_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips__magick_read( const char *filename, VipsImage *out, gboolean all_frames, const char *density ); int vips__magick_read_header( const char *filename, VipsImage *out, gboolean all_frames, const char *density ); int vips__magick_read_buffer( const void *buf, const size_t len, VipsImage *out, gboolean all_frames, const char *density ); int vips__magick_read_buffer_header( const void *buf, const size_t len, VipsImage *out, gboolean all_frames, const char *density ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_MAGICK_H*/ vips-8.2.2/libvips/foreign/openslideload.c0000664000175000017500000001300212530402247015511 00000000000000/* load openslide from a file * * 5/12/11 * - from openslideload.c * 28/2/12 * - convert "layer" to "level" where externally visible * 11/4/12 * - convert remaining uses of "layer" to "level" * 20/9/12 * - add Leica filename suffix * - drop glib log handler (unneeded with >= 3.3.0) */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_OPENSLIDE #include #include #include #include #include #include #include "openslide2vips.h" typedef struct _VipsForeignLoadOpenslide { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; /* Load this level. */ int level; /* Crop to image bounds. */ gboolean autocrop; /* Load this associated image. */ char *associated; } VipsForeignLoadOpenslide; typedef VipsForeignLoadClass VipsForeignLoadOpenslideClass; G_DEFINE_TYPE( VipsForeignLoadOpenslide, vips_foreign_load_openslide, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_openslide_get_flags_filename( const char *filename ) { /* We can't tell from just the filename, we need to know what part of * the file the user wants. But it'll usually be partial. */ return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_openslide_get_flags( VipsForeignLoad *load ) { VipsForeignLoadOpenslide *openslide = (VipsForeignLoadOpenslide *) load; VipsForeignFlags flags; flags = 0; if( !openslide->associated ) flags |= VIPS_FOREIGN_PARTIAL; return( flags ); } static int vips_foreign_load_openslide_header( VipsForeignLoad *load ) { VipsForeignLoadOpenslide *openslide = (VipsForeignLoadOpenslide *) load; if( vips__openslide_read_header( openslide->filename, load->out, openslide->level, openslide->autocrop, openslide->associated ) ) return( -1 ); VIPS_SETSTR( load->out->filename, openslide->filename ); return( 0 ); } static int vips_foreign_load_openslide_load( VipsForeignLoad *load ) { VipsForeignLoadOpenslide *openslide = (VipsForeignLoadOpenslide *) load; if( !openslide->associated ) { if( vips__openslide_read( openslide->filename, load->real, openslide->level, openslide->autocrop ) ) return( -1 ); } else { if( vips__openslide_read_associated( openslide->filename, load->real, openslide->associated ) ) return( -1 ); } return( 0 ); } static const char *vips_foreign_openslide_suffs[] = { ".svs", /* Aperio */ ".vms", ".vmu", ".ndpi", /* Hamamatsu */ ".scn", /* Leica */ ".mrxs", /* MIRAX */ ".svslide", /* Sakura */ ".tif", /* Trestle */ ".bif", /* Ventana */ NULL }; static void vips_foreign_load_openslide_class_init( VipsForeignLoadOpenslideClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "openslideload"; object_class->description = _( "load file with OpenSlide" ); /* We need to be ahead of the tiff sniffer since many OpenSlide * formats are tiff derivatives. If we see a tiff which would be * better handled by the vips tiff loader we are careful to say no. */ foreign_class->priority = 100; foreign_class->suffs = vips_foreign_openslide_suffs; load_class->is_a = vips__openslide_isslide; load_class->get_flags_filename = vips_foreign_load_openslide_get_flags_filename; load_class->get_flags = vips_foreign_load_openslide_get_flags; load_class->header = vips_foreign_load_openslide_header; load_class->load = vips_foreign_load_openslide_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenslide, filename ), NULL ); VIPS_ARG_INT( class, "level", 10, _( "Level" ), _( "Load this level from the file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenslide, level ), 0, 100000, 0 ); VIPS_ARG_BOOL( class, "autocrop", 11, _( "Autocrop" ), _( "Crop to image bounds" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenslide, autocrop ), FALSE ); VIPS_ARG_STRING( class, "associated", 12, _( "Associated" ), _( "Load this associated image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenslide, associated ), NULL ); } static void vips_foreign_load_openslide_init( VipsForeignLoadOpenslide *openslide ) { } #endif /*HAVE_OPENSLIDE*/ vips-8.2.2/libvips/foreign/rawload.c0000664000175000017500000001150412630030167014324 00000000000000/* load raw data from a file * * 14/12/11 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsForeignLoadRaw { VipsForeignLoad parent_object; char *filename; int width; int height; int bands; guint64 offset; } VipsForeignLoadRaw; typedef VipsForeignLoadClass VipsForeignLoadRawClass; G_DEFINE_TYPE( VipsForeignLoadRaw, vips_foreign_load_raw, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_raw_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_raw_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_PARTIAL ); } static int vips_foreign_load_raw_header( VipsForeignLoad *load ) { VipsForeignLoadRaw *raw = (VipsForeignLoadRaw *) load; VipsImage *out; VipsImage *out2; if( !(out2 = vips_image_new_from_file_raw( raw->filename, raw->width, raw->height, raw->bands, raw->offset )) ) return( -1 ); /* Remove the @out that's there now. */ g_object_get( load, "out", &out, NULL ); g_object_unref( out ); g_object_unref( out ); g_object_set( load, "out", out2, NULL ); return( 0 ); } static void vips_foreign_load_raw_class_init( VipsForeignLoadRawClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "rawload"; object_class->description = _( "load raw data from a file" ); load_class->get_flags = vips_foreign_load_raw_get_flags; load_class->get_flags_filename = vips_foreign_load_raw_get_flags_filename; load_class->header = vips_foreign_load_raw_header; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, filename ), NULL ); VIPS_ARG_INT( class, "width", 10, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, width ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "height", 11, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, height ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "bands", 12, _( "Bands" ), _( "Number of bands in image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, bands ), 0, VIPS_MAX_COORD, 0 ); VIPS_ARG_UINT64( class, "offset", 13, _( "Size of header" ), _( "Offset in bytes from start of file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRaw, offset ), 0, 100000000000, 0 ); } static void vips_foreign_load_raw_init( VipsForeignLoadRaw *raw ) { } /** * vips_rawload: * @filename: file to load * @out: output image * @width: width of image in pixels * @height: height of image in pixels * @bands: number of image bands * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @offset: offset in bytes from start of file * * This operation mmaps the file, setting @out so that access to that * image will read from the file. * * @out will be a 8-bit uchar image with @bands image bands, so @bands can * be thought of as meaning "number of bytes per pixel". Use functions * like vips_copy() to set the exact band format, number of bands, byte * ordering and so on. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_rawload( const char *filename, VipsImage **out, int width, int height, int bands, ... ) { va_list ap; int result; va_start( ap, bands ); result = vips_call_split( "rawload", ap, filename, out, width, height, bands ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/matlab.h0000664000175000017500000000243412530402247014143 00000000000000/* common defs for matio read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_MAT_H #define VIPS_MAT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ extern const char *vips__mat_suffs[]; int vips__mat_load( const char *filename, VipsImage *out ); int vips__mat_header( const char *filename, VipsImage *out ); int vips__mat_ismat( const char *filename ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_MAT_H*/ vips-8.2.2/libvips/foreign/tiff.h0000664000175000017500000000407712636460033013644 00000000000000/* common defs for tiff read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_TIFF_H #define VIPS_TIFF_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ extern const char *vips__foreign_tiff_suffs[]; void vips__tiff_init( void ); int vips__tiff_write( VipsImage *in, const char *filename, VipsForeignTiffCompression compression, int Q, VipsForeignTiffPredictor predictor, char *profile, gboolean tile, int tile_width, int tile_height, gboolean pyramid, gboolean squash, gboolean miniswhite, VipsForeignTiffResunit resunit, double xres, double yres, gboolean bigtiff, gboolean rgbjpeg, gboolean properties ); int vips__tiff_read_header( const char *filename, VipsImage *out, int page ); int vips__tiff_read( const char *filename, VipsImage *out, int page, gboolean readbehind ); gboolean vips__istifftiled( const char *filename ); gboolean vips__istiff_buffer( const void *buf, size_t len ); gboolean vips__istiff( const char *filename ); int vips__tiff_read_header_buffer( const void *buf, size_t len, VipsImage *out, int page ); int vips__tiff_read_buffer( const void *buf, size_t len, VipsImage *out, int page, gboolean readbehind ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_TIFF_H*/ vips-8.2.2/libvips/foreign/jpeg2vips.c0000664000175000017500000010225012620616171014607 00000000000000/* wrap jpeg library for read * * 28/11/03 JC * - better no-overshoot on tile loop * 12/11/04 * - better demand size choice for eval * 30/6/05 JC * - update im_error()/im_warn() * - now loads and saves exif data * 30/7/05 * - now loads ICC profiles * - now saves ICC profiles from the VIPS header * 24/8/05 * - jpeg load sets vips xres/yres from exif, if possible * - jpeg save sets exif xres/yres from vips, if possible * 29/8/05 * - cut from old vips_jpeg.c * 13/10/06 * - add #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_JPEG #include #include #include #include #ifdef HAVE_EXIF #ifdef UNTAGGED_EXIF #include #include #include #include #else /*!UNTAGGED_EXIF*/ #include #include #include #include #endif /*UNTAGGED_EXIF*/ #endif /*HAVE_EXIF*/ #include #include #include #include "jpeg.h" #include "vipsjpeg.h" /* Stuff we track during a read. */ typedef struct _ReadJpeg { VipsImage *out; /* Shrink by this much during load. 1, 2, 4, 8. */ int shrink; /* Fail on warnings. */ gboolean fail; /* Use a read behind buffer. */ gboolean readbehind; /* Used for file input only. */ char *filename; struct jpeg_decompress_struct cinfo; ErrorManager eman; gboolean invert_pels; /* Track the y pos during a read with this. */ int y_pos; /* Use Orientation exif tag to automatically rotate and flip image * during load. */ gboolean autorotate; } ReadJpeg; /* This can be called many times. */ static int readjpeg_free( ReadJpeg *jpeg ) { int result; result = 0; if( jpeg->eman.pub.num_warnings != 0 ) { if( jpeg->fail ) { vips_error( "VipsJpeg", "%s", vips_error_buffer() ); result = -1; } else { vips_warn( "VipsJpeg", _( "read gave %ld warnings" ), jpeg->eman.pub.num_warnings ); vips_warn( NULL, "%s", vips_error_buffer() ); } /* Make the message only appear once. */ jpeg->eman.pub.num_warnings = 0; } /* Don't call jpeg_finish_decompress(). It just checks the tail of the * file and who cares about that. All mem is freed in * jpeg_destroy_decompress(). */ VIPS_FREEF( fclose, jpeg->eman.fp ); VIPS_FREE( jpeg->filename ); jpeg->eman.fp = NULL; /* I don't think this can fail. It's harmless to call many times. */ jpeg_destroy_decompress( &jpeg->cinfo ); return( result ); } static void readjpeg_close( VipsObject *object, ReadJpeg *jpeg ) { (void) readjpeg_free( jpeg ); } static ReadJpeg * readjpeg_new( VipsImage *out, int shrink, gboolean fail, gboolean readbehind, gboolean autorotate ) { ReadJpeg *jpeg; if( !(jpeg = VIPS_NEW( out, ReadJpeg )) ) return( NULL ); jpeg->out = out; jpeg->shrink = shrink; jpeg->fail = fail; jpeg->readbehind = readbehind; jpeg->filename = NULL; jpeg->cinfo.err = jpeg_std_error( &jpeg->eman.pub ); jpeg->eman.pub.error_exit = vips__new_error_exit; jpeg->eman.pub.output_message = vips__new_output_message; jpeg->eman.fp = NULL; jpeg->y_pos = 0; jpeg->autorotate = autorotate; /* jpeg_create_decompress() can fail on some sanity checks. Don't * readjpeg_free() since we don't want to jpeg_destroy_decompress(). */ if( setjmp( jpeg->eman.jmp ) ) return( NULL ); jpeg_create_decompress( &jpeg->cinfo ); g_signal_connect( out, "close", G_CALLBACK( readjpeg_close ), jpeg ); return( jpeg ); } /* Set input to a file. */ static int readjpeg_file( ReadJpeg *jpeg, const char *filename ) { jpeg->filename = g_strdup( filename ); if( !(jpeg->eman.fp = vips__file_open_read( filename, NULL, FALSE )) ) return( -1 ); jpeg_stdio_src( &jpeg->cinfo, jpeg->eman.fp ); return( 0 ); } #ifdef HAVE_EXIF #ifdef DEBUG_VERBOSE /* Print exif for debugging ... hacked from exif-0.6.9/actions.c */ static void show_tags( ExifData *data ) { int i; unsigned int tag; const char *name; printf( "show EXIF tags:\n" ); for( i = 0; i < EXIF_IFD_COUNT; i++ ) printf( "%-7.7s", exif_ifd_get_name( i ) ); printf( "\n" ); for( tag = 0; tag < 0xffff; tag++ ) { name = exif_tag_get_title( tag ); if( !name ) continue; printf( " 0x%04x %-29.29s", tag, name ); for( i = 0; i < EXIF_IFD_COUNT; i++ ) if( exif_content_get_entry( data->ifd[i], tag ) ) printf( " * " ); else printf( " - " ); printf( "\n" ); } } static void show_entry( ExifEntry *entry, void *client ) { char exif_text[256]; printf( "%s", exif_tag_get_title( entry->tag ) ); printf( "|" ); printf( "%s", exif_entry_get_value( entry, exif_text, 256 ) ); printf( "|" ); printf( "%s", exif_format_get_name( entry->format ) ); printf( "|" ); printf( "%d bytes", entry->size ); printf( "\n" ); } static void show_ifd( ExifContent *content, void *client ) { int *ifd = (int *) client; printf( "- ifd %d\n", *ifd ); exif_content_foreach_entry( content, show_entry, client ); *ifd += 1; } void show_values( ExifData *data ) { ExifByteOrder order; int ifd; order = exif_data_get_byte_order( data ); printf( "EXIF tags in '%s' byte order\n", exif_byte_order_get_name( order ) ); printf( "Title|Value|Format|Size\n" ); ifd = 0; exif_data_foreach_content( data, show_ifd, &ifd ); if( data->size ) printf( "contains thumbnail of %d bytes\n", data->size ); } #endif /*DEBUG_VERBOSE*/ #endif /*HAVE_EXIF*/ #ifdef HAVE_EXIF static int vips_exif_get_int( ExifData *ed, ExifEntry *entry, unsigned long component, int *out ) { ExifByteOrder bo = exif_data_get_byte_order( ed ); size_t sizeof_component = entry->size / entry->components; size_t offset = component * sizeof_component; if( entry->format == EXIF_FORMAT_SHORT ) *out = exif_get_short( entry->data + offset, bo ); else if( entry->format == EXIF_FORMAT_SSHORT ) *out = exif_get_sshort( entry->data + offset, bo ); else if( entry->format == EXIF_FORMAT_LONG ) /* This won't work for huge values, but who cares. */ *out = (int) exif_get_long( entry->data + offset, bo ); else if( entry->format == EXIF_FORMAT_SLONG ) *out = exif_get_slong( entry->data + offset, bo ); else return( -1 ); return( 0 ); } static int vips_exif_get_rational( ExifData *ed, ExifEntry *entry, unsigned long component, ExifRational *out ) { if( entry->format == EXIF_FORMAT_RATIONAL ) { ExifByteOrder bo = exif_data_get_byte_order( ed ); size_t sizeof_component = entry->size / entry->components; size_t offset = component * sizeof_component; *out = exif_get_rational( entry->data + offset, bo ); } else return( -1 ); return( 0 ); } static int vips_exif_get_srational( ExifData *ed, ExifEntry *entry, unsigned long component, ExifSRational *out ) { if( entry->format == EXIF_FORMAT_SRATIONAL ) { ExifByteOrder bo = exif_data_get_byte_order( ed ); size_t sizeof_component = entry->size / entry->components; size_t offset = component * sizeof_component; *out = exif_get_srational( entry->data + offset, bo ); } else return( -1 ); return( 0 ); } static int vips_exif_get_double( ExifData *ed, ExifEntry *entry, unsigned long component, double *out ) { ExifRational rv; ExifSRational srv; if( !vips_exif_get_rational( ed, entry, component, &rv ) ) *out = (double) rv.numerator / rv.denominator; else if( !vips_exif_get_srational( ed, entry, component, &srv ) ) *out = (double) srv.numerator / srv.denominator; else return( -1 ); return( 0 ); } /* Save an exif value to a string in a way that we can restore. We only bother * for the simple formats (that a client might try to change) though. * * Keep in sync with vips_exif_from_s() in vips2jpeg. */ static void vips_exif_to_s( ExifData *ed, ExifEntry *entry, VipsBuf *buf ) { unsigned long i; int iv; ExifRational rv; ExifSRational srv; char txt[256]; if( entry->format == EXIF_FORMAT_ASCII ) { /* libexif does not null-terminate strings. Copy out and add * the \0 ourselves. */ int len = VIPS_MIN( 254, entry->size ); memcpy( txt, entry->data, len ); txt[len] = '\0'; vips_buf_appendf( buf, "%s ", txt ); } else if( entry->components < 10 && !vips_exif_get_int( ed, entry, 0, &iv ) ) { for( i = 0; i < entry->components; i++ ) { vips_exif_get_int( ed, entry, i, &iv ); vips_buf_appendf( buf, "%d ", iv ); } } else if( entry->components < 10 && !vips_exif_get_rational( ed, entry, 0, &rv ) ) { for( i = 0; i < entry->components; i++ ) { vips_exif_get_rational( ed, entry, i, &rv ); vips_buf_appendf( buf, "%u/%u ", rv.numerator, rv.denominator ); } } else if( entry->components < 10 && !vips_exif_get_srational( ed, entry, 0, &srv ) ) { for( i = 0; i < entry->components; i++ ) { vips_exif_get_srational( ed, entry, i, &srv ); vips_buf_appendf( buf, "%d/%d ", srv.numerator, srv.denominator ); } } else vips_buf_appendf( buf, "%s ", exif_entry_get_value( entry, txt, 256 ) ); vips_buf_appendf( buf, "(%s, %s, %lu components, %d bytes)", exif_entry_get_value( entry, txt, 256 ), exif_format_get_name( entry->format ), entry->components, entry->size ); } typedef struct _VipsExif { VipsImage *image; ExifData *ed; } VipsExif; static void attach_exif_entry( ExifEntry *entry, VipsExif *ve ) { const char *tag_name; char vips_name_txt[256]; VipsBuf vips_name = VIPS_BUF_STATIC( vips_name_txt ); char value_txt[256]; VipsBuf value = VIPS_BUF_STATIC( value_txt ); if( !(tag_name = exif_tag_get_name( entry->tag )) ) return; vips_buf_appendf( &vips_name, "exif-ifd%d-%s", exif_entry_get_ifd( entry ), tag_name ); vips_exif_to_s( ve->ed, entry, &value ); /* Can't do anything sensible with the error return. */ (void) vips_image_set_string( ve->image, vips_buf_all( &vips_name ), vips_buf_all( &value ) ); } static void attach_exif_content( ExifContent *content, VipsExif *ve ) { exif_content_foreach_entry( content, (ExifContentForeachEntryFunc) attach_exif_entry, ve ); } static int get_entry_double( ExifData *ed, int ifd, ExifTag tag, double *out ) { ExifEntry *entry; if( !(entry = exif_content_get_entry( ed->ifd[ifd], tag )) || entry->components != 1 ) return( -1 ); return( vips_exif_get_double( ed, entry, 0, out ) ); } static int get_entry_int( ExifData *ed, int ifd, ExifTag tag, int *out ) { ExifEntry *entry; if( !(entry = exif_content_get_entry( ed->ifd[ifd], tag )) || entry->components != 1 ) return( -1 ); return( vips_exif_get_int( ed, entry, 0, out ) ); } static void res_from_exif( VipsImage *im, ExifData *ed ) { double xres, yres; int unit; /* The main image xres/yres are in ifd0. ifd1 has xres/yres of the * image thumbnail, if any. */ if( get_entry_double( ed, 0, EXIF_TAG_X_RESOLUTION, &xres ) || get_entry_double( ed, 0, EXIF_TAG_Y_RESOLUTION, &yres ) || get_entry_int( ed, 0, EXIF_TAG_RESOLUTION_UNIT, &unit ) ) { vips_warn( "VipsJpeg", "%s", _( "error reading resolution" ) ); return; } #ifdef DEBUG printf( "res_from_exif: seen exif tags " "xres = %g, yres = %g, unit = %d\n", xres, yres, unit ); #endif /*DEBUG*/ switch( unit ) { case 1: /* No unit ... just pass the fields straight to vips. */ vips_image_set_string( im, VIPS_META_RESOLUTION_UNIT, "none" ); break; case 2: /* In inches. */ xres /= 25.4; yres /= 25.4; vips_image_set_string( im, VIPS_META_RESOLUTION_UNIT, "in" ); break; case 3: /* In cm. */ xres /= 10.0; yres /= 10.0; vips_image_set_string( im, VIPS_META_RESOLUTION_UNIT, "cm" ); break; default: vips_warn( "VipsJpeg", "%s", _( "unknown EXIF resolution unit" ) ); return; } #ifdef DEBUG printf( "res_from_exif: seen exif resolution %g, %g p/mm\n", xres, yres ); #endif /*DEBUG*/ im->Xres = xres; im->Yres = yres; } static int attach_thumbnail( VipsImage *im, ExifData *ed ) { if( ed->size > 0 ) { char *thumb_copy; thumb_copy = g_malloc( ed->size ); memcpy( thumb_copy, ed->data, ed->size ); vips_image_set_blob( im, "jpeg-thumbnail-data", (VipsCallbackFn) g_free, thumb_copy, ed->size ); } return( 0 ); } #endif /*HAVE_EXIF*/ static int parse_exif( VipsImage *im, void *data, int data_length ) { #ifdef HAVE_EXIF { ExifData *ed; VipsExif ve; if( !(ed = exif_data_new_from_data( data, data_length )) ) return( -1 ); #ifdef DEBUG_VERBOSE show_tags( ed ); show_values( ed ); #endif /*DEBUG_VERBOSE*/ /* Attach informational fields for what we find. FIXME ... better to have this in the UI layer? Or we could attach non-human-readable tags here (int, double etc) and then move the human stuff to the UI layer? */ ve.image = im; ve.ed = ed; exif_data_foreach_content( ed, (ExifDataForeachContentFunc) attach_exif_content, &ve ); /* Look for resolution fields and use them to set the VIPS * xres/yres fields. */ res_from_exif( im, ed ); attach_thumbnail( im, ed ); exif_data_free( ed ); } #endif /*HAVE_EXIF*/ return( 0 ); } static int attach_blob( VipsImage *im, const char *field, void *data, int data_length ) { char *data_copy; /* Only use the first one. */ if( vips_image_get_typeof( im, field ) ) { #ifdef DEBUG printf( "attach_blob: second %s block, ignoring\n", field ); #endif /*DEBUG*/ return( 0 ); } #ifdef DEBUG printf( "attach_blob: attaching %d bytes of %s\n", data_length, field ); #endif /*DEBUG*/ if( !(data_copy = vips_malloc( NULL, data_length )) ) return( -1 ); memcpy( data_copy, data, data_length ); vips_image_set_blob( im, field, (VipsCallbackFn) vips_free, data_copy, data_length ); return( 0 ); } /* Number of app2 sections we can capture. Each one can be 64k, so 6400k should * be enough for anyone (haha). */ #define MAX_APP2_SECTIONS (100) /* Read a cinfo to a VIPS image. Set invert_pels if the pixel reader needs to * do 255-pel. */ static int read_jpeg_header( ReadJpeg *jpeg, VipsImage *out ) { struct jpeg_decompress_struct *cinfo = &jpeg->cinfo; jpeg_saved_marker_ptr p; VipsInterpretation interpretation; double xres, yres; /* Capture app2 sections here for assembly. */ void *app2_data[MAX_APP2_SECTIONS] = { 0 }; size_t app2_data_length[MAX_APP2_SECTIONS] = { 0 }; size_t data_length; int i; /* Read JPEG header. libjpeg will set out_color_space sanely for us * for YUV YCCK etc. */ jpeg_read_header( cinfo, TRUE ); cinfo->scale_denom = jpeg->shrink; cinfo->scale_num = 1; jpeg_calc_output_dimensions( cinfo ); jpeg->invert_pels = FALSE; switch( cinfo->out_color_space ) { case JCS_GRAYSCALE: interpretation = VIPS_INTERPRETATION_B_W; break; case JCS_CMYK: interpretation = VIPS_INTERPRETATION_CMYK; /* Photoshop writes CMYK JPEG inverted :-( Maybe this is a * way to spot photoshop CMYK JPGs. */ if( cinfo->saw_Adobe_marker ) jpeg->invert_pels = TRUE; break; case JCS_RGB: default: interpretation = VIPS_INTERPRETATION_sRGB; break; } /* Get the jfif resolution. exif may overwrite this later. */ xres = 1.0; yres = 1.0; if( cinfo->saw_JFIF_marker && cinfo->X_density != 1U && cinfo->Y_density != 1U ) { #ifdef DEBUG printf( "read_jpeg_header: seen jfif _density %d, %d\n", cinfo->X_density, cinfo->Y_density ); #endif /*DEBUG*/ switch( cinfo->density_unit ) { case 0: /* None. Just set. */ xres = cinfo->X_density; yres = cinfo->Y_density; break; case 1: /* Pixels per inch. */ xres = cinfo->X_density / 25.4; yres = cinfo->Y_density / 25.4; break; case 2: /* Pixels per cm. */ xres = cinfo->X_density / 10.0; yres = cinfo->Y_density / 10.0; break; default: vips_warn( "VipsJpeg", "%s", _( "unknown JFIF resolution unit" ) ); break; } #ifdef DEBUG printf( "read_jpeg_header: seen jfif resolution %g, %g p/mm\n", xres, yres ); #endif /*DEBUG*/ } /* Set VIPS header. */ vips_image_init_fields( out, cinfo->output_width, cinfo->output_height, cinfo->output_components, VIPS_FORMAT_UCHAR, VIPS_CODING_NONE, interpretation, xres, yres ); vips_image_pipelinev( out, VIPS_DEMAND_STYLE_FATSTRIP, NULL ); /* Interlaced jpegs need lots of memory to read, so our caller needs * to know. */ (void) vips_image_set_int( out, "jpeg-multiscan", jpeg_has_multiple_scans( cinfo ) ); /* Look for EXIF and ICC profile. */ for( p = cinfo->marker_list; p; p = p->next ) { #ifdef DEBUG { printf( "read_jpeg_header: seen %d bytes of APP%d\n", p->data_length, p->marker - JPEG_APP0 ); for( i = 0; i < 10; i++ ) printf( "\t%d) '%c' (%d)\n", i, p->data[i], p->data[i] ); } #endif /*DEBUG*/ switch( p->marker ) { case JPEG_APP0 + 1: /* Possible EXIF or XMP data. */ if( p->data_length > 4 && vips_isprefix( "Exif", (char *) p->data ) ) { if( parse_exif( out, p->data, p->data_length ) || attach_blob( out, VIPS_META_EXIF_NAME, p->data, p->data_length ) ) return( -1 ); } if( p->data_length > 4 && vips_isprefix( "http", (char *) p->data ) && attach_blob( out, VIPS_META_XMP_NAME, p->data, p->data_length ) ) return( -1 ); break; case JPEG_APP0 + 2: /* Possible ICC profile. */ if( p->data_length > 14 && vips_isprefix( "ICC_PROFILE", (char *) p->data ) ) { /* cur_marker numbers from 1, according to * spec. */ int cur_marker = p->data[12] - 1; if( cur_marker >= 0 && cur_marker < MAX_APP2_SECTIONS ) { app2_data[cur_marker] = p->data + 14; app2_data_length[cur_marker] = p->data_length - 14; } } break; case JPEG_APP0 + 13: /* Possible IPCT data block. */ if( p->data_length > 5 && vips_isprefix( "Photo", (char *) p->data ) && attach_blob( out, VIPS_META_IPCT_NAME, p->data, p->data_length ) ) return( -1 ); break; default: #ifdef DEBUG printf( "read_jpeg_header: " "ignoring %d byte APP%d block\n", p->data_length, p->marker - JPEG_APP0 ); #endif /*DEBUG*/ break; } } /* Assemble ICC sections. */ data_length = 0; for( i = 0; i < MAX_APP2_SECTIONS && app2_data[i]; i++ ) data_length += app2_data_length[i]; if( data_length ) { unsigned char *data; int p; #ifdef DEBUG printf( "read_jpeg_header: assembled %zd byte ICC profile\n", data_length ); #endif /*DEBUG*/ if( !(data = vips_malloc( NULL, data_length )) ) return( -1 ); p = 0; for( i = 0; i < MAX_APP2_SECTIONS && app2_data[i]; i++ ) { memcpy( data + p, app2_data[i], app2_data_length[i] ); p += app2_data_length[i]; } vips_image_set_blob( out, VIPS_META_ICC_NAME, (VipsCallbackFn) vips_free, data, data_length ); } return( 0 ); } static int read_jpeg_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; ReadJpeg *jpeg = (ReadJpeg *) a; struct jpeg_decompress_struct *cinfo = &jpeg->cinfo; int sz = cinfo->output_width * cinfo->output_components; int y; #ifdef DEBUG printf( "read_jpeg_generate: %p line %d, %d rows\n", g_thread_self(), r->top, r->height ); #endif /*DEBUG*/ VIPS_GATE_START( "read_jpeg_generate: work" ); /* We're inside a tilecache where tiles are the full image width, so * this should always be true. */ g_assert( r->left == 0 ); g_assert( r->width == or->im->Xsize ); g_assert( VIPS_RECT_BOTTOM( r ) <= or->im->Ysize ); /* Tiles should always be on a 8-pixel boundary. */ g_assert( r->top % 8 == 0 ); /* Tiles should always be a strip in height, unless it's the final * strip. */ g_assert( r->height == VIPS_MIN( 8, or->im->Ysize - r->top ) ); /* And check that y_pos is correct. It should be, since we are inside * a vips_sequential(). */ if( r->top != jpeg->y_pos ) { vips_error( "VipsJpeg", _( "out of order read at line %d" ), jpeg->y_pos ); return( -1 ); } /* Here for longjmp() from vips__new_error_exit(). */ if( setjmp( jpeg->eman.jmp ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { JSAMPROW row_pointer[1]; row_pointer[0] = (JSAMPLE *) VIPS_REGION_ADDR( or, 0, r->top + y ); jpeg_read_scanlines( cinfo, &row_pointer[0], 1 ); if( jpeg->invert_pels ) { int x; for( x = 0; x < sz; x++ ) row_pointer[0][x] = 255 - row_pointer[0][x]; } jpeg->y_pos += 1; } VIPS_GATE_STOP( "read_jpeg_generate: work" ); return( 0 ); } #define ORIENTATION ("exif-ifd0-Orientation") /* Auto-rotate, if rotate_image is set. */ static VipsImage * read_jpeg_rotate( VipsObject *process, VipsImage *im ) { VipsImage **t = (VipsImage **) vips_object_local_array( process, 2 ); VipsAngle angle = vips_autorot_get_angle( im ); if( angle != VIPS_ANGLE_D0 ) { /* Need to copy to memory or disc, we have to stay seq. */ const guint64 image_size = VIPS_IMAGE_SIZEOF_IMAGE( im ); const guint64 disc_threshold = vips_get_disc_threshold(); if( image_size > disc_threshold ) t[0] = vips_image_new_temp_file( "%s.v" ); else t[0] = vips_image_new_memory(); if( vips_image_write( im, t[0] ) || vips_rot( t[0], &t[1], angle, NULL ) ) return( NULL ); im = t[1]; (void) vips_image_remove( im, ORIENTATION ); } return( im ); } /* Read a cinfo to a VIPS image. */ static int read_jpeg_image( ReadJpeg *jpeg, VipsImage *out ) { struct jpeg_decompress_struct *cinfo = &jpeg->cinfo; VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 3 ); VipsImage *im; /* Here for longjmp() from vips__new_error_exit(). */ if( setjmp( jpeg->eman.jmp ) ) return( -1 ); t[0] = vips_image_new(); if( read_jpeg_header( jpeg, t[0] ) ) return( -1 ); jpeg_start_decompress( cinfo ); #ifdef DEBUG printf( "read_jpeg_image: starting decompress\n" ); #endif /*DEBUG*/ if( vips_image_generate( t[0], NULL, read_jpeg_generate, NULL, jpeg, NULL ) || vips_sequential( t[0], &t[1], "tile_height", 8, "access", jpeg->readbehind ? VIPS_ACCESS_SEQUENTIAL : VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, NULL ) ) return( -1 ); im = t[1]; if( jpeg->autorotate ) im = read_jpeg_rotate( VIPS_OBJECT( out ), im ); if( vips_image_write( im, out ) ) return( -1 ); return( 0 ); } /* Read the jpeg from file or buffer. */ static int vips__jpeg_read( ReadJpeg *jpeg, VipsImage *out, gboolean header_only ) { /* Need to read in APP1 (EXIF metadata), APP2 (ICC profile), APP13 * (photoshop IPCT). */ jpeg_save_markers( &jpeg->cinfo, JPEG_APP0 + 1, 0xffff ); jpeg_save_markers( &jpeg->cinfo, JPEG_APP0 + 2, 0xffff ); jpeg_save_markers( &jpeg->cinfo, JPEG_APP0 + 13, 0xffff ); #ifdef DEBUG { int i; /* Handy for debubgging ... spot any extra markers. */ for( i = 0; i < 16; i++ ) jpeg_save_markers( &jpeg->cinfo, JPEG_APP0 + i, 0xffff ); } #endif /*DEBUG*/ /* Convert! */ if( header_only ) { if( read_jpeg_header( jpeg, out ) ) return( -1 ); /* Swap width and height if we're going to rotate this image. */ if( jpeg->autorotate ) { VipsAngle angle = vips_autorot_get_angle( out ); if( angle == VIPS_ANGLE_D90 || angle == VIPS_ANGLE_D270 ) VIPS_SWAP( int, out->Xsize, out->Ysize ); /* We won't be returning an orientation tag. */ (void) vips_image_remove( out, ORIENTATION ); } } else { if( read_jpeg_image( jpeg, out ) ) return( -1 ); } return( 0 ); } /* Read a JPEG file into a VIPS image. */ int vips__jpeg_read_file( const char *filename, VipsImage *out, gboolean header_only, int shrink, gboolean fail, gboolean readbehind, gboolean autorotate ) { ReadJpeg *jpeg; if( !(jpeg = readjpeg_new( out, shrink, fail, readbehind, autorotate )) ) return( -1 ); /* Here for longjmp() from vips__new_error_exit() during startup. */ if( setjmp( jpeg->eman.jmp ) ) return( -1 ); /* Set input to file. */ if( readjpeg_file( jpeg, filename ) ) return( -1 ); if( vips__jpeg_read( jpeg, out, header_only ) ) return( -1 ); /* We can kill off the decompress early if this is just a header read. * This saves an fd during read. */ if( header_only ) readjpeg_free( jpeg ); return( 0 ); } /* Just like the above, but we read from a memory buffer. */ typedef struct { /* Public jpeg fields. */ struct jpeg_source_mgr pub; /* Private stuff during read. */ gboolean start_of_file; /* have we gotten any data yet? */ const JOCTET *buf; size_t len; } InputBuffer; /* * Initialize source --- called by jpeg_read_header * before any data is actually read. */ static void init_source (j_decompress_ptr cinfo) { InputBuffer *src = (InputBuffer *) cinfo->src; /* We reset the empty-input-file flag for each image, * but we don't clear the input buffer. * This is correct behavior for reading a series of images from one source. */ src->start_of_file = TRUE; } /* * Fill the input buffer --- called whenever buffer is emptied. * * In typical applications, this should read fresh data into the buffer * (ignoring the current state of next_input_byte & bytes_in_buffer), * reset the pointer & count to the start of the buffer, and return TRUE * indicating that the buffer has been reloaded. It is not necessary to * fill the buffer entirely, only to obtain at least one more byte. * * There is no such thing as an EOF return. If the end of the file has been * reached, the routine has a choice of ERREXIT() or inserting fake data into * the buffer. In most cases, generating a warning message and inserting a * fake EOI marker is the best course of action --- this will allow the * decompressor to output however much of the image is there. However, * the resulting error message is misleading if the real problem is an empty * input file, so we handle that case specially. * * In applications that need to be able to suspend compression due to input * not being available yet, a FALSE return indicates that no more data can be * obtained right now, but more may be forthcoming later. In this situation, * the decompressor will return to its caller (with an indication of the * number of scanlines it has read, if any). The application should resume * decompression after it has loaded more data into the input buffer. Note * that there are substantial restrictions on the use of suspension --- see * the documentation. * * When suspending, the decompressor will back up to a convenient restart point * (typically the start of the current MCU). next_input_byte & bytes_in_buffer * indicate where the restart point will be if the current call returns FALSE. * Data beyond this point must be rescanned after resumption, so move it to * the front of the buffer rather than discarding it. */ static boolean fill_input_buffer (j_decompress_ptr cinfo) { static const JOCTET eoi_buffer[4] = { (JOCTET) 0xFF, (JOCTET) JPEG_EOI, 0, 0 }; InputBuffer *src = (InputBuffer *) cinfo->src; if (src->start_of_file) { src->pub.next_input_byte = src->buf; src->pub.bytes_in_buffer = src->len; src->start_of_file = FALSE; } else { WARNMS(cinfo, JWRN_JPEG_EOF); src->pub.next_input_byte = eoi_buffer; src->pub.bytes_in_buffer = 2; } return TRUE; } /* * Skip data --- used to skip over a potentially large amount of * uninteresting data (such as an APPn marker). * * Writers of suspendable-input applications must note that skip_input_data * is not granted the right to give a suspension return. If the skip extends * beyond the data currently in the buffer, the buffer can be marked empty so * that the next read will cause a fill_input_buffer call that can suspend. * Arranging for additional bytes to be discarded before reloading the input * buffer is the application writer's problem. */ static void skip_input_data (j_decompress_ptr cinfo, long num_bytes) { InputBuffer *src = (InputBuffer *) cinfo->src; /* Just skip fwd. */ if (num_bytes > 0) { src->pub.next_input_byte += (size_t) num_bytes; src->pub.bytes_in_buffer -= (size_t) num_bytes; } } /* * An additional method that can be provided by data source modules is the * resync_to_restart method for error recovery in the presence of RST markers. * For the moment, this source module just uses the default resync method * provided by the JPEG library. That method assumes that no backtracking * is possible. */ /* * Terminate source --- called by jpeg_finish_decompress * after all data has been read. Often a no-op. * * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding * application must deal with any cleanup that should happen even * for error exit. */ static void term_source (j_decompress_ptr cinfo) { /* no work necessary here */ } /* * Prepare for input from a memory buffer. The caller needs to free the * buffer after decompress is done, we don't take ownership. */ static void readjpeg_buffer (ReadJpeg *jpeg, const void *buf, size_t len) { j_decompress_ptr cinfo = &jpeg->cinfo; InputBuffer *src; /* The source object and input buffer are made permanent so that a series * of JPEG images can be read from the same file by calling jpeg_stdio_src * only before the first one. (If we discarded the buffer at the end of * one image, we'd likely lose the start of the next one.) * This makes it unsafe to use this manager and a different source * manager serially with the same JPEG object. Caveat programmer. */ if (cinfo->src == NULL) { /* first time for this JPEG object? */ cinfo->src = (struct jpeg_source_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(InputBuffer)); src = (InputBuffer *) cinfo->src; src->buf = buf; src->len = len; } src = (InputBuffer *) cinfo->src; src->pub.init_source = init_source; src->pub.fill_input_buffer = fill_input_buffer; src->pub.skip_input_data = skip_input_data; src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */ src->pub.term_source = term_source; src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */ src->pub.next_input_byte = NULL; /* until buffer loaded */ } int vips__jpeg_read_buffer( const void *buf, size_t len, VipsImage *out, gboolean header_only, int shrink, int fail, gboolean readbehind, gboolean autorotate ) { ReadJpeg *jpeg; if( !(jpeg = readjpeg_new( out, shrink, fail, readbehind, autorotate )) ) return( -1 ); if( setjmp( jpeg->eman.jmp ) ) return( -1 ); /* Set input to buffer. */ readjpeg_buffer( jpeg, buf, len ); if( vips__jpeg_read( jpeg, out, header_only ) ) return( -1 ); return( 0 ); } int vips__isjpeg_buffer( const void *buf, size_t len ) { const guchar *str = (const guchar *) buf; if( len >= 2 && str[0] == 0xff && str[1] == 0xd8 ) return( 1 ); return( 0 ); } int vips__isjpeg( const char *filename ) { unsigned char buf[2]; if( vips__get_bytes( filename, buf, 2 ) && vips__isjpeg_buffer( buf, 2 ) ) return( 1 ); return( 0 ); } #endif /*HAVE_JPEG*/ vips-8.2.2/libvips/foreign/tiffsave.c0000664000175000017500000001733112636460033014513 00000000000000/* save to tiff * * 2/12/11 * - wrap a class around the tiff writer * 17/3/12 * - argh xres/yres macro was wrong * 26/1/14 * - add rgbjpeg flag * 21/12/15 * - add properties flag */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_TIFF #include #include #include #include #include "tiff.h" typedef struct _VipsForeignSaveTiff { VipsForeignSave parent_object; /* Filename for save. */ char *filename; /* Many options argh. */ VipsForeignTiffCompression compression; int Q; VipsForeignTiffPredictor predictor; char *profile; gboolean tile; int tile_width; int tile_height; gboolean pyramid; gboolean squash; gboolean miniswhite; VipsForeignTiffResunit resunit; double xres; double yres; gboolean bigtiff; gboolean rgbjpeg; gboolean properties; } VipsForeignSaveTiff; typedef VipsForeignSaveClass VipsForeignSaveTiffClass; G_DEFINE_TYPE( VipsForeignSaveTiff, vips_foreign_save_tiff, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_tiff_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveTiff *tiff = (VipsForeignSaveTiff *) object; const char *p; if( VIPS_OBJECT_CLASS( vips_foreign_save_tiff_parent_class )-> build( object ) ) return( -1 ); /* Default xres/yres to the values from the image. */ if( !vips_object_argument_isset( object, "xres" ) ) tiff->xres = save->ready->Xres * 10.0; if( !vips_object_argument_isset( object, "yres" ) ) tiff->yres = save->ready->Yres * 10.0; /* resunit param overrides resunit metadata. */ if( !vips_object_argument_isset( object, "resunit" ) && vips_image_get_typeof( save->ready, VIPS_META_RESOLUTION_UNIT ) && !vips_image_get_string( save->ready, VIPS_META_RESOLUTION_UNIT, &p ) && vips_isprefix( "in", p ) ) tiff->resunit = VIPS_FOREIGN_TIFF_RESUNIT_INCH; if( tiff->resunit == VIPS_FOREIGN_TIFF_RESUNIT_INCH ) { tiff->xres *= 2.54; tiff->yres *= 2.54; } if( vips__tiff_write( save->ready, tiff->filename, tiff->compression, tiff->Q, tiff->predictor, tiff->profile, tiff->tile, tiff->tile_width, tiff->tile_height, tiff->pyramid, tiff->squash, tiff->miniswhite, tiff->resunit, tiff->xres, tiff->yres, tiff->bigtiff, tiff->rgbjpeg, tiff->properties ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_tiff_class_init( VipsForeignSaveTiffClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffsave"; object_class->description = _( "save image to tiff file" ); object_class->build = vips_foreign_save_tiff_build; foreign_class->suffs = vips__foreign_tiff_suffs; save_class->saveable = VIPS_SAVEABLE_ANY; save_class->coding[VIPS_CODING_LABQ] = TRUE; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, filename ), NULL ); VIPS_ARG_ENUM( class, "compression", 6, _( "Compression" ), _( "Compression for this file" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, compression ), VIPS_TYPE_FOREIGN_TIFF_COMPRESSION, VIPS_FOREIGN_TIFF_COMPRESSION_NONE ); VIPS_ARG_INT( class, "Q", 7, _( "Q" ), _( "Q factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, Q ), 1, 100, 75 ); VIPS_ARG_ENUM( class, "predictor", 8, _( "predictor" ), _( "Compression prediction" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, predictor ), VIPS_TYPE_FOREIGN_TIFF_PREDICTOR, VIPS_FOREIGN_TIFF_PREDICTOR_NONE ); VIPS_ARG_STRING( class, "profile", 9, _( "profile" ), _( "ICC profile to embed" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, profile ), NULL ); VIPS_ARG_BOOL( class, "tile", 10, _( "Tile" ), _( "Write a tiled tiff" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, tile ), FALSE ); VIPS_ARG_INT( class, "tile_width", 11, _( "Tile width" ), _( "Tile width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, tile_width ), 1, 1024, 128 ); VIPS_ARG_INT( class, "tile_height", 12, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, tile_height ), 1, 1024, 128 ); VIPS_ARG_BOOL( class, "pyramid", 13, _( "Pyramid" ), _( "Write a pyramidal tiff" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, pyramid ), FALSE ); VIPS_ARG_BOOL( class, "squash", 14, _( "Squash" ), _( "Squash images down to 1 bit" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, squash ), FALSE ); VIPS_ARG_BOOL( class, "miniswhite", 14, _( "Miniswhite" ), _( "Use 0 for white in 1-bit images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, miniswhite ), FALSE ); VIPS_ARG_ENUM( class, "resunit", 15, _( "Resolution unit" ), _( "Resolution unit" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, resunit ), VIPS_TYPE_FOREIGN_TIFF_RESUNIT, VIPS_FOREIGN_TIFF_RESUNIT_CM ); VIPS_ARG_DOUBLE( class, "xres", 16, _( "Xres" ), _( "Horizontal resolution in pixels/mm" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, xres ), 0.001, 1000000, 1 ); VIPS_ARG_DOUBLE( class, "yres", 17, _( "Yres" ), _( "Vertical resolution in pixels/mm" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, yres ), 0.001, 1000000, 1 ); VIPS_ARG_BOOL( class, "bigtiff", 18, _( "Bigtiff" ), _( "Write a bigtiff image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, bigtiff ), FALSE ); VIPS_ARG_BOOL( class, "rgbjpeg", 20, _( "RGB JPEG" ), _( "Output RGB JPEG rather than YCbCr" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignSaveTiff, rgbjpeg ), FALSE ); VIPS_ARG_BOOL( class, "properties", 21, _( "Properties" ), _( "Write a properties document to IMAGEDESCRIPTION" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveTiff, properties ), FALSE ); } static void vips_foreign_save_tiff_init( VipsForeignSaveTiff *tiff ) { tiff->compression = VIPS_FOREIGN_TIFF_COMPRESSION_NONE; tiff->Q = 75; tiff->predictor = VIPS_FOREIGN_TIFF_PREDICTOR_NONE; tiff->tile_width = 128; tiff->tile_height = 128; tiff->resunit = VIPS_FOREIGN_TIFF_RESUNIT_CM; tiff->xres = 1.0; tiff->yres = 1.0; } #endif /*HAVE_TIFF*/ vips-8.2.2/libvips/foreign/radsave.c0000664000175000017500000000753412530402247014331 00000000000000/* save to rad * * 2/12/11 * - wrap a class around the rad writer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "radiance.h" typedef struct _VipsForeignSaveRad { VipsForeignSave parent_object; char *filename; } VipsForeignSaveRad; typedef VipsForeignSaveClass VipsForeignSaveRadClass; G_DEFINE_TYPE( VipsForeignSaveRad, vips_foreign_save_rad, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_rad_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveRad *rad = (VipsForeignSaveRad *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_rad_parent_class )-> build( object ) ) return( -1 ); if( vips__rad_save( save->ready, rad->filename ) ) return( -1 ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int vips_foreign_save_rad_format_table[10] = { /* UC C US S UI I F X D DX */ F, F, F, F, F, F, F, F, F, F }; static void vips_foreign_save_rad_class_init( VipsForeignSaveRadClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "radsave"; object_class->description = _( "save image to Radiance file" ); object_class->build = vips_foreign_save_rad_build; foreign_class->suffs = vips__rad_suffs; save_class->saveable = VIPS_SAVEABLE_RGB; save_class->format_table = vips_foreign_save_rad_format_table; save_class->coding[VIPS_CODING_NONE] = FALSE; save_class->coding[VIPS_CODING_RAD] = TRUE; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveRad, filename ), NULL ); } static void vips_foreign_save_rad_init( VipsForeignSaveRad *rad ) { } /** * vips_radsave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Write a VIPS image in Radiance (HDR) format. * * Sections of this reader from Greg Ward and Radiance with kind permission. * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_radsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "radsave", ap, in, filename ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/jpeg.h0000664000175000017500000000376012530402247013633 00000000000000/* common defs for jpeg read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_JPEG_H #define VIPS_JPEG_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* jpeglib includes jconfig.h, which can define HAVE_STDLIB_H ... which we * also define. Make sure it's turned off. */ #ifdef HAVE_STDLIB_H #undef HAVE_STDLIB_H #endif /*HAVE_STDLIB_H*/ /* jpeglib defines its own boolean type as an enum which then clashes with * everyone elses. Rename it as jboolean. */ #define boolean jboolean /* Any TRUE/FALSE macros which have crept in will cause terrible confusion as * well. */ #ifdef TRUE #undef TRUE #endif /*TRUE*/ #ifdef FALSE #undef FALSE #endif /*FALSE*/ #include #include /* Define a new error handler for when we bomb out. */ typedef struct { /* Public fields. */ struct jpeg_error_mgr pub; /* Private stuff for us. */ jmp_buf jmp; /* longjmp() here to get back to VIPS */ FILE *fp; /* fclose() if non-NULL */ } ErrorManager; void vips__new_output_message( j_common_ptr cinfo ); void vips__new_error_exit( j_common_ptr cinfo ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_JPEG_H*/ vips-8.2.2/libvips/foreign/dzsave.c0000664000175000017500000014767112651131573014214 00000000000000/* save to deep zoom format * * 21/3/12 * - from the tiff pyramid writer * 5/7/12 (thanks Alexander Koshman) * - make tiles down to 1x1 pixels * - oop make right-hand edge tiles * - improve overlap handling * 7/7/12 * - threaded write * 6/8/12 (thanks to Benjamin Gilbert for pointing out the errors) * - shrink down to a 1x1 pixel tile, even for very long and thin images * - round image size up on shrink * - write a .dzi file with the pyramid params * - default tile size and overlap now matches the openslide writer * 7/8/12 (thanks to Benjamin Gilbert again for more testing) * - reorganise the directory structure * - rename to basename and tile_size * - deprecate tile_width/_height and dirname * 1/10/12 * - did not write low pyramid layers for images with an odd number of * scan lines (thanks Martin) * 2/10/12 * - remove filename options from format string in .dzi (thanks Martin) * 3/10/12 * - add zoomify and google maps output * 10/10/12 * - add @background option * 1/11/12 * - add @depth option * 21/1/13 * - add @centre option * 26/2/13 * - fix another corner case, thanks Martin * 29/5/13 * - add --angle option * 19/6/13 * - faster --centre logic, thanks Kacey * 18/4/14 * - use libgsf for output so we can write to .zip etc. as well as the * filesystem * 8/5/14 * - set Type on strips so we can convert for save correctly, thanks * philipgiuliani * 25/6/14 * - stop on zip write >4gb, thanks bgilbert * - save metadata, see https://github.com/jcupitt/libvips/issues/137 * 18/8/14 * - use g_ date funcs, helps Windows * 14/2/15 * - use vips_region_shrink() * 22/2/15 * - use a better temp dir name for fs dz output * 8/8/15 * - allow zip > 4gb if we have a recent libgsf * 9/9/15 * - better overlap handling, thanks robclouth * 25/11/15 * - always strip tile metadata * 16/12/15 * - fix overlap handling again, thanks erdmann */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is difficult to test, there are so many options. It's failed in the past in these cases. These have layers with strips which exactly align with image edges, or which have orphan scanlines which need adding for the shrink. 1. $ header test.v test.v: 14016x16448 uchar, 3 bands, srgb, openin VipsImage (0x11e7060) $ time vips dzsave test.v x --overlap 0 Not all layers written. 2. $ header ~/Desktop/leicaimage.scn /home/john/Desktop/leicaimage.scn: 4225x7905 uchar, 4 bands, rgb Not all layers written. 3. $ header ~/leicatest1.scn /home/john/leicatest1.scn: 11585x8449 uchar, 4 bands, rgb Not all layers written. various combinations of odd and even tile-size and overlap need testing too. Overlap handling For deepzoom, tile-size == 254 and overlap == 1 means that edge tiles are 255 x 255 (though less at the bottom right) and non-edge tiles are 256 x 256. Tiles are positioned across the image in tile-size steps. This means (confusingly) that two adjoining tiles will have two pixels in common. This has caused bugs in the past. */ /* #define DEBUG_VERBOSE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /* Track this during property save. */ typedef struct _WriteInfo { const char *domain; VipsImage *image; xmlNode *node; } WriteInfo; static int set_prop( WriteInfo *info, xmlNode *node, const char *name, const char *fmt, ... ) { va_list ap; char value[1024]; va_start( ap, fmt ); (void) vips_vsnprintf( value, 1024, fmt, ap ); va_end( ap ); if( !xmlSetProp( node, (xmlChar *) name, (xmlChar *) value ) ) { vips_error( info->domain, _( "unable to set property \"%s\" to value \"%s\"." ), name, value ); return( -1 ); } return( 0 ); } static xmlNode * new_child( WriteInfo *info, xmlNode *parent, const char *name ) { xmlNode *child; if( !(child = xmlNewChild( parent, NULL, (xmlChar *) name, NULL )) ) { vips_error( info->domain, _( "unable to set create node \"%s\"" ), name ); return( NULL ); } return( child ); } static void * write_vips_property( VipsImage *image, const char *field, GValue *value, void *a ) { WriteInfo *info = (WriteInfo *) a; GType type = G_VALUE_TYPE( value ); if( g_value_type_transformable( type, VIPS_TYPE_SAVE_STRING ) ) { GValue save_value = { 0 }; xmlNode *property; xmlNode *child; g_value_init( &save_value, VIPS_TYPE_SAVE_STRING ); g_value_transform( value, &save_value ); if( !(property = new_child( info, info->node, "property" )) ) return( image ); if( !(child = new_child( info, property, "name" )) ) return( image ); xmlNodeSetContent( child, (xmlChar *) field ); if( !(child = new_child( info, property, "value" )) || set_prop( info, child, "type", g_type_name( type ) ) ) return( image ); xmlNodeSetContent( child, (xmlChar *) vips_value_get_save_string( &save_value ) ); } return( NULL ); } /* Pack up all the metadata from an image as XML. This called from vips2tiff * as well. * * Free the result with xmlFree(). */ char * vips__make_xml_metadata( const char *domain, VipsImage *image ) { xmlDoc *doc; GTimeVal now; char *date; WriteInfo info; char *dump; int dump_size; if( !(doc = xmlNewDoc( (xmlChar *) "1.0" )) ) { vips_error( domain, "%s", _( "xml save error" ) ); return( NULL ); } if( !(doc->children = xmlNewDocNode( doc, NULL, (xmlChar *) "image", NULL )) ) { vips_error( domain, "%s", _( "xml save error" ) ); xmlFreeDoc( doc ); return( NULL ); } info.domain = domain; info.image = image; g_get_current_time( &now ); date = g_time_val_to_iso8601( &now ); if( set_prop( &info, doc->children, "xmlns", "http://www.vips.ecs.soton.ac.uk/dzsave" ) || set_prop( &info, doc->children, "date", date ) || set_prop( &info, doc->children, "version", VIPS_VERSION ) ) { g_free( date ); xmlFreeDoc( doc ); return( NULL ); } g_free( date ); if( !(info.node = new_child( &info, doc->children, "properties" )) || vips_image_map( image, write_vips_property, &info ) ) { xmlFreeDoc( doc ); return( NULL ); } xmlDocDumpFormatMemory( doc, (xmlChar **) &dump, &dump_size, 1 ); if( !dump ) { vips_error( domain, "%s", _( "xml save error" ) ); xmlFreeDoc( doc ); return( NULL ); } xmlFreeDoc( doc ); return( dump ); } #ifdef HAVE_GSF #include /* Round N down to P boundary. */ #define ROUND_DOWN(N,P) ((N) - ((N) % P)) /* Round N up to P boundary. */ #define ROUND_UP(N,P) (ROUND_DOWN( (N) + (P) - 1, (P) )) /* Simple wrapper around libgsf. * * We need to be able to do scattered writes to structured files. So while * building a zip (for example) we need to be able to write to file/a/b.jpg, * then to file/c/d.jpg, then back to file/a/e.jpg. This is tricky with the * libgsf API which is happier doing writes in order. * * Put an API over libgsf to track refs to all directories and finish/close * them. */ /* Need to track the directory tree we are writing, with a ref for each * GsfOutput. */ typedef struct _VipsGsfDirectory { struct _VipsGsfDirectory *parent; const char *name; /* List of child directories, if any. */ GSList *children; /* The GsfOutput we use for this object. */ GsfOutput *out; /* If we need to turn off compression for this container. */ gboolean no_compression; /* The root node holds the enclosing zip file or FS root ... finish * this on cleanup. */ GsfOutput *container; } VipsGsfDirectory; /* Close all dirs, non-NULL on error. */ static void * vips_gsf_tree_close( VipsGsfDirectory *tree ) { vips_slist_map2( tree->children, (VipsSListMap2Fn) vips_gsf_tree_close, NULL, NULL ); if( tree->out && !gsf_output_is_closed( tree->out ) && !gsf_output_close( tree->out ) ) { vips_error( "vips_gsf", "%s", _( "unable to close stream" ) ); return( tree ); } if( tree->container && !gsf_output_is_closed( tree->container ) && !gsf_output_close( tree->container ) ) { vips_error( "vips_gsf", "%s", _( "unable to close stream" ) ); return( tree ); } return( NULL ); } /* Close and unref everything, can't fail. Call vips_gsf_tree_close() to get * an error return. */ static void * vips_gsf_tree_free( VipsGsfDirectory *tree ) { vips_slist_map2( tree->children, (VipsSListMap2Fn) vips_gsf_tree_free, NULL, NULL ); g_slist_free( tree->children ); g_free( (char *) tree->name ); if( tree->out ) { if( !gsf_output_is_closed( tree->out ) ) (void) gsf_output_close( tree->out ); g_object_unref( tree->out ); } if( tree->container ) { if( !gsf_output_is_closed( tree->container ) ) (void) gsf_output_close( tree->container ); g_object_unref( tree->container ); } g_free( tree ); return( NULL ); } /* Make a new tree root. */ static VipsGsfDirectory * vips_gsf_tree_new( GsfOutput *out, gboolean no_compression ) { VipsGsfDirectory *tree = g_new( VipsGsfDirectory, 1 ); tree->parent = NULL; tree->name = NULL; tree->children = NULL; tree->out = out; tree->no_compression = no_compression; tree->container = NULL; return( tree ); } static void * vips_gsf_child_by_name_sub( VipsGsfDirectory *dir, const char *name ) { if( strcmp( dir->name, name ) == 0 ) return( dir ); return( NULL ); } /* Look up a child by name. */ static VipsGsfDirectory * vips_gsf_child_by_name( VipsGsfDirectory *dir, const char *name ) { return( vips_slist_map2( dir->children, (VipsSListMap2Fn) vips_gsf_child_by_name_sub, (char *) name, NULL ) ); } /* Make a new directory. */ static VipsGsfDirectory * vips_gsf_dir_new( VipsGsfDirectory *parent, const char *name ) { VipsGsfDirectory *dir = g_new( VipsGsfDirectory, 1 ); g_assert( !vips_gsf_child_by_name( parent, name ) ); dir->parent = parent; dir->name = g_strdup( name ); dir->children = NULL; dir->no_compression = parent->no_compression; dir->container = NULL; if( dir->no_compression ) dir->out = gsf_outfile_new_child_full( (GsfOutfile *) parent->out, name, TRUE, "compression-level", 0, NULL ); else dir->out = gsf_outfile_new_child( (GsfOutfile *) parent->out, name, TRUE ); parent->children = g_slist_prepend( parent->children, dir ); return( dir ); } /* Return a GsfOutput for writing to a path. Paths are object name first, then * path components with least-specific first, NULL-terminated. For example: * * GsfOutput *obj = vips_gsf_path( tree, "fred.jpg", "a", "b", NULL ); * * Returns an obj you can use to write to a/b/fred.jpg. * * You must write, close and unref obj. */ static GsfOutput * vips_gsf_path( VipsGsfDirectory *tree, const char *name, ... ) { va_list ap; VipsGsfDirectory *dir; VipsGsfDirectory *child; char *dir_name; GsfOutput *obj; dir = tree; va_start( ap, name ); while( (dir_name = va_arg( ap, char * )) ) if( (child = vips_gsf_child_by_name( dir, dir_name )) ) dir = child; else dir = vips_gsf_dir_new( dir, dir_name ); va_end( ap ); if( dir->no_compression ) obj = gsf_outfile_new_child_full( (GsfOutfile *) dir->out, name, FALSE, "compression-level", 0, NULL ); else obj = gsf_outfile_new_child( (GsfOutfile *) dir->out, name, FALSE ); return( obj ); } /* libgsf before 1.14.31 did not support zip64. */ static gboolean vips_gsf_has_zip64( void ) { return( libgsf_major_version > 1 || libgsf_minor_version > 14 || libgsf_micro_version >= 31 ); } typedef struct _VipsForeignSaveDz VipsForeignSaveDz; typedef struct _Layer Layer; /* A layer in the pyramid. */ struct _Layer { VipsForeignSaveDz *dz; /* The real size of the image. image->Xsize and image->Ysize are * always even to make x2 shrink easy. The real image may be a * smaller, odd size, */ int width; int height; /* Number of tiles across and down in this layer. Zoomify needs this * to calculate the directory to put each tile in. */ int tiles_across; int tiles_down; /* The rect within width/height that contains real image, as opposed * to background. In centre mode we can have large image borders. */ VipsRect real_pixels; /* The image we build. */ VipsImage *image; /* The top of this strip of tiles. */ int y; /* The next line we write to in this strip. */ int write_y; VipsRegion *strip; /* The current strip of pixels */ VipsRegion *copy; /* Pixels we copy to the next strip */ int sub; /* Subsample factor for this layer */ int n; /* Layer number ... 0 for smallest */ Layer *below; /* Tiles go to here */ Layer *above; /* Tiles come from here */ }; struct _VipsForeignSaveDz { VipsForeignSave parent_object; /* Name to write to. */ char *name; char *suffix; int overlap; int tile_size; VipsForeignDzLayout layout; VipsForeignDzDepth depth; gboolean centre; gboolean properties; VipsAngle angle; VipsForeignDzContainer container; Layer *layer; /* x2 shrink pyr layer */ /* Count zoomify tiles we write. */ int tile_count; /* The tree structure we are writing tiles to. Can be filesystem, a * zipfile, etc. */ VipsGsfDirectory *tree; /* @name, but without a path at the start and without a suffix. */ char *basename; /* @name, but just the path at the front. */ char *dirname; /* For DZ save, we have to write to a temp dir. Track the name here. */ char *tempdir; /* The root directory name ... $basename with perhaps some extra * stuff, eg. $(basename)_files, etc. */ char *root_name; /* @suffix, but without any options. So @suffix == ".jpg[Q=90]" * becomes ".jpg". */ char *file_suffix; /* libgsf before 1.14.31 can't write zip files larger than 4gb. * Track bytes written here and try to guess when we'll go over. */ size_t bytes_written; }; typedef VipsForeignSaveClass VipsForeignSaveDzClass; G_DEFINE_TYPE( VipsForeignSaveDz, vips_foreign_save_dz, VIPS_TYPE_FOREIGN_SAVE ); /* Free a pyramid. */ static void layer_free( Layer *layer ) { VIPS_FREEF( g_object_unref, layer->strip ); VIPS_FREEF( g_object_unref, layer->copy ); VIPS_FREEF( g_object_unref, layer->image ); VIPS_FREEF( layer_free, layer->below ); } static void vips_foreign_save_dz_dispose( GObject *gobject ) { VipsForeignSaveDz *dz = (VipsForeignSaveDz *) gobject; VIPS_FREEF( layer_free, dz->layer ); VIPS_FREEF( vips_gsf_tree_free, dz->tree ); VIPS_FREE( dz->basename ); VIPS_FREE( dz->dirname ); VIPS_FREE( dz->tempdir ); VIPS_FREE( dz->root_name ); VIPS_FREE( dz->file_suffix ); G_OBJECT_CLASS( vips_foreign_save_dz_parent_class )-> dispose( gobject ); } /* Build a pyramid. * * width/height is the size of this layer, real_* the subsection of the layer * which is real pixels (as opposed to background). */ static Layer * pyramid_build( VipsForeignSaveDz *dz, Layer *above, int width, int height, VipsRect *real_pixels ) { VipsForeignSave *save = VIPS_FOREIGN_SAVE( dz ); Layer *layer = VIPS_NEW( dz, Layer ); VipsRect strip; int limit; layer->dz = dz; layer->width = width; layer->height = height; layer->tiles_across = ROUND_UP( width, dz->tile_size ) / dz->tile_size; layer->tiles_down = ROUND_UP( height, dz->tile_size ) / dz->tile_size; layer->real_pixels = *real_pixels; layer->image = NULL; layer->strip = NULL; layer->copy = NULL; if( !above ) /* Top of pyramid. */ layer->sub = 1; else layer->sub = above->sub * 2; layer->below = NULL; layer->above = above; /* We round the image size up to an even number to make x2 shrink * easy. */ layer->image = vips_image_new(); if( vips_image_pipelinev( layer->image, VIPS_DEMAND_STYLE_ANY, save->ready, NULL ) ) { layer_free( layer ); return( NULL ); } layer->image->Xsize = width + (width & 1); layer->image->Ysize = height + (height & 1); layer->strip = vips_region_new( layer->image ); layer->copy = vips_region_new( layer->image ); /* The regions will get used in the bg thread callback, so make sure * we don't own them. */ vips__region_no_ownership( layer->strip ); vips__region_no_ownership( layer->copy ); /* Build a line of tiles here. * * Expand the strip if necessary to make sure we have an even * number of lines. */ layer->y = 0; layer->write_y = 0; strip.left = 0; strip.top = 0; strip.width = layer->image->Xsize; strip.height = dz->tile_size + dz->overlap; if( (strip.height & 1) == 1 ) strip.height += 1; if( vips_region_buffer( layer->strip, &strip ) ) { layer_free( layer ); return( NULL ); } switch( dz->depth ) { case VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL: limit = 1; break; case VIPS_FOREIGN_DZ_DEPTH_ONETILE: limit = dz->tile_size; break; case VIPS_FOREIGN_DZ_DEPTH_ONE: limit = VIPS_MAX( width, height ); break; default: g_assert_not_reached(); /* Stop compiler warnings. */ limit = 1; } if( width > limit || height > limit ) { /* Round up, so eg. a 5 pixel wide image becomes 3 a layer * down. * * For the rect, round left/top down, round bottom/right up, * so we get all possible pixels. */ VipsRect halfrect; halfrect.left = real_pixels->left / 2; halfrect.top = real_pixels->top / 2; halfrect.width = (VIPS_RECT_RIGHT( real_pixels ) + 1) / 2 - halfrect.left; halfrect.height = (VIPS_RECT_BOTTOM( real_pixels ) + 1) / 2 - halfrect.top; if( !(layer->below = pyramid_build( dz, layer, (width + 1) / 2, (height + 1) / 2, &halfrect )) ) { layer_free( layer ); return( NULL ); } layer->n = layer->below->n + 1; } else layer->n = 0; #ifdef DEBUG printf( "pyramid_build:\n" ); printf( "\tn = %d\n", layer->n ); printf( "\twidth = %d, height = %d\n", width, height ); printf( "\tXsize = %d, Ysize = %d\n", layer->image->Xsize, layer->image->Ysize ); printf( "\treal_pixels.left = %d, real_pixels.top = %d\n", real_pixels->left, real_pixels->top ); printf( "\treal_pixels.width = %d, real_pixels.height = %d\n", real_pixels->width, real_pixels->height ); #endif return( layer ); } static int write_dzi( VipsForeignSaveDz *dz ) { GsfOutput *out; char buf[VIPS_PATH_MAX]; char *p; vips_snprintf( buf, VIPS_PATH_MAX, "%s.dzi", dz->basename ); out = vips_gsf_path( dz->tree, buf, NULL ); vips_snprintf( buf, VIPS_PATH_MAX, "%s", dz->suffix + 1 ); if( (p = (char *) vips__find_rightmost_brackets( buf )) ) *p = '\0'; gsf_output_printf( out, "\n" ); gsf_output_printf( out, "overlap ); gsf_output_printf( out, " TileSize=\"%d\"\n", dz->tile_size ); gsf_output_printf( out, " >\n" ); gsf_output_printf( out, " layer->height ); gsf_output_printf( out, " Width=\"%d\"\n", dz->layer->width ); gsf_output_printf( out, " />\n" ); gsf_output_printf( out, "\n" ); (void) gsf_output_close( out ); g_object_unref( out ); return( 0 ); } static int write_properties( VipsForeignSaveDz *dz ) { GsfOutput *out; out = vips_gsf_path( dz->tree, "ImageProperties.xml", NULL ); gsf_output_printf( out, "\n", dz->layer->width, dz->layer->height, dz->tile_count, dz->tile_size ); (void) gsf_output_close( out ); g_object_unref( out ); return( 0 ); } static int write_blank( VipsForeignSaveDz *dz ) { VipsForeignSave *save = (VipsForeignSave *) dz; VipsImage *x, *t; int n; VipsArea *ones; double *d; double *bg; int i; void *buf; size_t len; GsfOutput *out; /* Number of bands we will end up making. We need to set this in * vips_black() to make sure we set Type correctly, otherwise we can * try saving a B_W image as PNG, with disasterous results. */ bg = (double *) vips_area_get_data( (VipsArea *) save->background, NULL, &n, NULL, NULL ); if( vips_black( &x, dz->tile_size, dz->tile_size, "bands", n, NULL ) ) return( -1 ); ones = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); d = (double *) vips_area_get_data( ones, NULL, NULL, NULL, NULL ); for( i = 0; i < n; i++ ) d[i] = 1.0; if( vips_linear( x, &t, d, bg, n, NULL ) ) { vips_area_unref( ones ); g_object_unref( x ); return( -1 ); } vips_area_unref( ones ); g_object_unref( x ); x = t; if( vips_pngsave_buffer( x, &buf, &len, NULL ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); out = vips_gsf_path( dz->tree, "blank.png", NULL ); gsf_output_write( out, len, buf ); gsf_output_close( out ); g_object_unref( out ); g_free( buf ); return( 0 ); } static int write_vips_meta( VipsForeignSaveDz *dz ) { VipsForeignSave *save = (VipsForeignSave *) dz; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( dz ); char *dump; GsfOutput *out; if( !(dump = vips__make_xml_metadata( class->nickname, save->ready )) ) return( -1 ); out = vips_gsf_path( dz->tree, "vips-properties.xml", dz->root_name, NULL ); gsf_output_write( out, strlen( dump ), (guchar *) dump ); (void) gsf_output_close( out ); g_object_unref( out ); xmlFree( dump ); return( 0 ); } /* Our state during a threaded write of a strip. */ typedef struct _Strip { Layer *layer; VipsImage *image; /* Allocate the next tile on this boundary. */ int x; } Strip; static void strip_free( Strip *strip ) { g_object_unref( strip->image ); } static void strip_init( Strip *strip, Layer *layer ) { VipsForeignSaveDz *dz = layer->dz; VipsRect line, image; strip->layer = layer; strip->image = NULL; strip->x = 0; /* The image we wrap around our pixel buffer must be the full width, * including any rounding up, since we must have contiguous pixels. * We can trim the height down though. * * When we loop across the strip writing tiles we have to look out for * the smaller width. */ image.left = 0; image.top = 0; image.width = layer->image->Xsize; image.height = layer->height; line.left = 0; line.top = layer->y; line.width = image.width; line.height = dz->tile_size; vips_rect_marginadjust( &line, dz->overlap ); vips_rect_intersectrect( &image, &line, &line ); if( !(strip->image = vips_image_new_from_memory( VIPS_REGION_ADDR( layer->strip, 0, line.top ), VIPS_IMAGE_SIZEOF_LINE( layer->image ) * line.height, line.width, line.height, layer->image->Bands, layer->image->BandFmt )) ) { strip_free( strip ); return; } /* Type needs to be set so we know how to convert for save correctly. */ strip->image->Type = layer->image->Type; } static int strip_allocate( VipsThreadState *state, void *a, gboolean *stop ) { Strip *strip = (Strip *) a; Layer *layer = strip->layer; VipsForeignSaveDz *dz = layer->dz; VipsRect image; #ifdef DEBUG_VERBOSE printf( "strip_allocate\n" ); #endif /*DEBUG_VERBOSE*/ /* We can't test for allocated area empty, since it might just have * bits of the left-hand overlap in and no new pixels. Safest to count * tiles across. */ if( strip->x / dz->tile_size >= layer->tiles_across ) { *stop = TRUE; #ifdef DEBUG_VERBOSE printf( "strip_allocate: done\n" ); #endif /*DEBUG_VERBOSE*/ return( 0 ); } image.left = 0; image.top = 0; image.width = layer->width; image.height = layer->height; /* Position this tile. */ state->pos.left = strip->x; state->pos.top = layer->y; state->pos.width = dz->tile_size; state->pos.height = dz->tile_size; vips_rect_marginadjust( &state->pos, dz->overlap ); vips_rect_intersectrect( &image, &state->pos, &state->pos ); state->x = strip->x; state->y = layer->y; strip->x += dz->tile_size; return( 0 ); } /* Make an output object for a tile in the current layout. */ static GsfOutput * tile_name( Layer *layer, int x, int y ) { VipsForeignSaveDz *dz = layer->dz; GsfOutput *out; char name[VIPS_PATH_MAX]; char dirname[VIPS_PATH_MAX]; char dirname2[VIPS_PATH_MAX]; Layer *p; int n; switch( dz->layout ) { case VIPS_FOREIGN_DZ_LAYOUT_DZ: vips_snprintf( dirname, VIPS_PATH_MAX, "%d", layer->n ); vips_snprintf( name, VIPS_PATH_MAX, "%d_%d%s", x, y, dz->file_suffix ); out = vips_gsf_path( dz->tree, name, dz->root_name, dirname, NULL ); break; case VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY: /* We need to work out the tile number so we can calculate the * directory to put this tile in. * * Tiles are numbered from 0 for the most-zoomed-out tile. */ n = 0; /* Count all tiles in layers below this one. */ for( p = layer->below; p; p = p->below ) n += p->tiles_across * p->tiles_down; /* And count tiles so far in this layer. */ n += y * layer->tiles_across + x; vips_snprintf( dirname, VIPS_PATH_MAX, "TileGroup%d", n / 256 ); vips_snprintf( name, VIPS_PATH_MAX, "%d-%d-%d%s", layer->n, x, y, dz->file_suffix ); /* Used at the end in ImageProperties.xml */ dz->tile_count += 1; out = vips_gsf_path( dz->tree, name, dirname, NULL ); break; case VIPS_FOREIGN_DZ_LAYOUT_GOOGLE: vips_snprintf( dirname, VIPS_PATH_MAX, "%d", layer->n ); vips_snprintf( dirname2, VIPS_PATH_MAX, "%d", y ); vips_snprintf( name, VIPS_PATH_MAX, "%d%s", x, dz->file_suffix ); out = vips_gsf_path( dz->tree, name, dirname, dirname2, NULL ); break; default: g_assert_not_reached(); /* Stop compiler warnings. */ out = NULL; } #ifdef DEBUG_VERBOSE printf( "tile_name: writing to %s\n", name ); #endif /*DEBUG_VERBOSE*/ return( out ); } static int strip_work( VipsThreadState *state, void *a ) { Strip *strip = (Strip *) a; Layer *layer = strip->layer; VipsForeignSaveDz *dz = layer->dz; VipsForeignSave *save = (VipsForeignSave *) dz; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( dz ); VipsImage *x; VipsImage *t; void *buf; size_t len; GsfOutput *out; gboolean status; #ifdef DEBUG_VERBOSE printf( "strip_work\n" ); #endif /*DEBUG_VERBOSE*/ /* If we are centring we may be outside the real pixels. Skip in * this case, and the viewer will display blank.png for us. */ if( dz->centre ) { VipsRect tile; tile.left = state->x; tile.top = state->y; tile.width = dz->tile_size; tile.height = dz->tile_size; vips_rect_intersectrect( &tile, &layer->real_pixels, &tile ); if( vips_rect_isempty( &tile ) ) { #ifdef DEBUG_VERBOSE printf( "strip_work: skipping tile %d x %d\n", state->x / dz->tile_size, state->y / dz->tile_size ); #endif /*DEBUG_VERBOSE*/ return( 0 ); } } #ifdef DEBUG vips_object_sanity( VIPS_OBJECT( strip->image ) ); #endif /*DEBUG*/ /* Extract relative to the strip top-left corner. */ if( vips_extract_area( strip->image, &x, state->pos.left, 0, state->pos.width, state->pos.height, NULL ) ) return( -1 ); /* Google tiles need to be padded up to tilesize. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE ) { if( vips_embed( x, &t, 0, 0, dz->tile_size, dz->tile_size, "background", save->background, NULL ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); x = t; } /* Hopefully no one will want the same metadata on all the tiles. */ vips_image_set_int( x, "hide-progress", 1 ); if( vips_image_write_to_buffer( x, dz->suffix, &buf, &len, "strip", TRUE, NULL ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); /* gsf doesn't like more than one write active at once. */ g_mutex_lock( vips__global_lock ); out = tile_name( layer, state->x / dz->tile_size, state->y / dz->tile_size ); status = gsf_output_write( out, len, buf ); dz->bytes_written += len; gsf_output_close( out ); g_object_unref( out ); g_free( buf ); if( !status ) { g_mutex_unlock( vips__global_lock ); vips_error( class->nickname, "%s", gsf_output_error( out )->message ); return( -1 ); } /* Allow a 100,000 byte margin. This probably isn't enough: we don't * include the space zip needs for the index nor anything we are * outputting apart from the gsf_output_write() above. */ if( dz->container == VIPS_FOREIGN_DZ_CONTAINER_ZIP && !vips_gsf_has_zip64() && dz->bytes_written > (size_t) UINT_MAX - 100000 ) { g_mutex_unlock( vips__global_lock ); vips_error( class->nickname, "%s", _( "output file too large" ) ); return( -1 ); } g_mutex_unlock( vips__global_lock ); #ifdef DEBUG_VERBOSE printf( "strip_work: success\n" ); #endif /*DEBUG_VERBOSE*/ return( 0 ); } /* Write a line of tiles with a threadpool. */ static int strip_save( Layer *layer ) { Strip strip; #ifdef DEBUG printf( "strip_save: n = %d, y = %d\n", layer->n, layer->y ); #endif /*DEBUG*/ strip_init( &strip, layer ); if( vips_threadpool_run( strip.image, vips_thread_state_new, strip_allocate, strip_work, NULL, &strip ) ) { strip_free( &strip ); return( -1 ); } strip_free( &strip ); #ifdef DEBUG printf( "strip_save: success\n" ); #endif /*DEBUG*/ return( 0 ); } /* A strip has filled, but the rightmost column and the bottom-most row may * not have been if we've rounded the size up. * * Fill them, if necessary, by copying the previous row/column. */ static void layer_generate_extras( Layer *layer ) { VipsRegion *strip = layer->strip; /* We only work for full-width strips. */ g_assert( strip->valid.width == layer->image->Xsize ); if( layer->width < layer->image->Xsize ) { int ps = VIPS_IMAGE_SIZEOF_PEL( strip->im ); int b, y; /* Need to add a right-most column. */ for( y = 0; y < strip->valid.height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( strip, layer->width - 1, strip->valid.top + y ); VipsPel *q = p + ps; for( b = 0; b < ps; b++ ) q[b] = p[b]; } } if( layer->height < layer->image->Ysize ) { VipsRect last; /* The last two lines of the image. */ last.left = 0; last.top = layer->image->Ysize - 2; last.width = layer->image->Xsize; last.height = 2; /* Do we have them both? Fill the last with the next-to-last. */ vips_rect_intersectrect( &last, &strip->valid, &last ); if( last.height == 2 ) { last.height = 1; vips_region_copy( strip, strip, &last, 0, last.top + 1 ); } } } static int strip_arrived( Layer *layer ); /* Shrink what pixels we can from this strip into the layer below. If the * strip below fills, recurse. */ static int strip_shrink( Layer *layer ) { Layer *below = layer->below; VipsRegion *from = layer->strip; VipsRegion *to = below->strip; VipsRect target; VipsRect source; #ifdef DEBUG printf( "strip_shrink: %d lines in layer %d to layer %d\n", from->valid.height, layer->n, below->n ); #endif/*DEBUG*/ /* We may have an extra column of pixels on the right or * bottom that need filling: generate them. */ layer_generate_extras( layer ); /* Our pixels might cross a strip boundary in the layer below, so we * have to write repeatedly until we run out of pixels. */ for(;;) { /* The pixels the layer below needs. */ target.left = 0; target.top = below->write_y; target.width = below->image->Xsize; target.height = to->valid.height; vips_rect_intersectrect( &target, &to->valid, &target ); /* Those pixels need this area of this layer. */ source.left = target.left * 2; source.top = target.top * 2; source.width = target.width * 2; source.height = target.height * 2; /* Of which we have these available. */ vips_rect_intersectrect( &source, &from->valid, &source ); /* So these are the pixels in the layer below we can provide. */ target.left = source.left / 2; target.top = source.top / 2; target.width = source.width / 2; target.height = source.height / 2; /* None? All done. */ if( vips_rect_isempty( &target ) ) break; (void) vips_region_shrink( from, to, &target ); below->write_y += target.height; /* If we've filled the strip below, let it know. * We can either fill the region, if it's somewhere half-way * down the image, or, if it's at the bottom, get to the last * real line of pixels. */ if( below->write_y == VIPS_RECT_BOTTOM( &to->valid ) || below->write_y == below->height ) { if( strip_arrived( below ) ) return( -1 ); } } return( 0 ); } /* A new strip has arrived! The strip has enough pixels in to write a line of * tiles. * * - write a line of tiles * - shrink what we can to the layer below * - move our strip down by the tile step * - copy the overlap with the previous strip */ static int strip_arrived( Layer *layer ) { VipsForeignSaveDz *dz = layer->dz; VipsRect new_strip; VipsRect overlap; VipsRect image_area; #ifdef DEBUG printf( "strip_arrived: layer %d, strip at %d, height %d\n", layer->n, layer->y, layer->strip->valid.height ); #endif/*DEBUG*/ if( strip_save( layer ) ) return( -1 ); if( layer->below && strip_shrink( layer ) ) return( -1 ); /* Position our strip down the image. * * Expand the strip if necessary to make sure we have an even * number of lines. */ layer->y += dz->tile_size; new_strip.left = 0; new_strip.top = layer->y - dz->overlap; new_strip.width = layer->image->Xsize; new_strip.height = dz->tile_size + 2 * dz->overlap; image_area.left = 0; image_area.top = 0; image_area.width = layer->image->Xsize; image_area.height = layer->image->Ysize; vips_rect_intersectrect( &new_strip, &image_area, &new_strip ); if( (new_strip.height & 1) == 1 ) new_strip.height += 1; /* We may exactly hit the bottom of the real image (ie. before borders * have been possibly expanded by 1 pixel). In this case, we'll not * be able to do the expansion in layer_generate_extras(), since the * region won't be large enough, and we'll not get another chance * since this is the bottom. * * Add another scanline if this has happened. */ if( VIPS_RECT_BOTTOM( &new_strip ) == layer->height ) new_strip.height = layer->image->Ysize - new_strip.top; /* What pixels that we will need do we already have? Save them in * overlap. */ vips_rect_intersectrect( &new_strip, &layer->strip->valid, &overlap ); if( !vips_rect_isempty( &overlap ) ) { if( vips_region_buffer( layer->copy, &overlap ) ) return( -1 ); vips_region_copy( layer->strip, layer->copy, &overlap, overlap.left, overlap.top ); } if( !vips_rect_isempty( &new_strip ) ) { if( vips_region_buffer( layer->strip, &new_strip ) ) return( -1 ); /* And copy back again. */ if( !vips_rect_isempty( &overlap ) ) vips_region_copy( layer->copy, layer->strip, &overlap, overlap.left, overlap.top ); } return( 0 ); } /* Another strip of image pixels from vips_sink_disc(). Write into the top * pyramid layer. */ static int pyramid_strip( VipsRegion *region, VipsRect *area, void *a ) { VipsForeignSaveDz *dz = (VipsForeignSaveDz *) a; Layer *layer = dz->layer; #ifdef DEBUG printf( "pyramid_strip: strip at %d, height %d\n", area->top, area->height ); #endif/*DEBUG*/ for(;;) { VipsRect *to = &layer->strip->valid; VipsRect target; /* The bit of strip that needs filling. */ target.left = 0; target.top = layer->write_y; target.width = layer->image->Xsize; target.height = to->height; vips_rect_intersectrect( &target, to, &target ); /* Clip against what we have available. */ vips_rect_intersectrect( &target, area, &target ); /* Are we empty? All done. */ if( vips_rect_isempty( &target ) ) break; /* And copy those pixels in. * * FIXME: If the strip fits inside the region we've just * received, we could skip the copy. Will this happen very * often? Unclear. */ vips_region_copy( region, layer->strip, &target, target.left, target.top ); layer->write_y += target.height; /* We can either fill the strip, if it's somewhere half-way * down the image, or, if it's at the bottom, get to the last * real line of pixels. */ if( layer->write_y == VIPS_RECT_BOTTOM( to ) || layer->write_y == layer->height ) { if( strip_arrived( layer ) ) return( -1 ); } } return( 0 ); } static int vips_foreign_save_dz_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveDz *dz = (VipsForeignSaveDz *) object; VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( dz ); VipsRect real_pixels; /* Google and zoomify default to zero overlap, ".jpg". */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY || dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE ) { if( !vips_object_argument_isset( object, "overlap" ) ) dz->overlap = 0; if( !vips_object_argument_isset( object, "suffix" ) ) VIPS_SETSTR( dz->suffix, ".jpg" ); } /* Google and zoomify default to 256 pixel tiles. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY || dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE ) { if( !vips_object_argument_isset( object, "tile_size" ) ) dz->tile_size = 256; } /* Default to white background. vips_foreign_save_init() defaults to * black. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE && !vips_object_argument_isset( object, "background" ) ) { VipsArrayDouble *background; background = vips_array_double_newv( 1, 255.0 ); g_object_set( object, "background", background, NULL ); vips_area_unref( VIPS_AREA( background ) ); } if( dz->overlap >= dz->tile_size ) { vips_error( "dzsave", "%s", _( "overlap must be less than tile " "width and height" ) ) ; return( -1 ); } /* DeepZoom stops at 1x1 pixels, others when the image fits within a * tile. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ ) { if( !vips_object_argument_isset( object, "depth" ) ) dz->depth = VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL; } else if( !vips_object_argument_isset( object, "depth" ) ) dz->depth = VIPS_FOREIGN_DZ_DEPTH_ONETILE; if( VIPS_OBJECT_CLASS( vips_foreign_save_dz_parent_class )-> build( object ) ) return( -1 ); /* Optional rotate. */ { VipsImage *z; if( vips_rot( save->ready, &z, dz->angle, NULL ) ) return( -1 ); VIPS_UNREF( save->ready ); save->ready = z; } /* The real pixels we have from our input. This is about to get * expanded with background. */ real_pixels.left = 0; real_pixels.top = 0; real_pixels.width = save->ready->Xsize; real_pixels.height = save->ready->Ysize; /* For centred images, imagine shrinking so that the image fits in a * single tile, centering in that tile, then expanding back again. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_GOOGLE && dz->centre ) { VipsImage *z; Layer *layer; int n_layers; int size; if( !(layer = pyramid_build( dz, NULL, save->ready->Xsize, save->ready->Ysize, &real_pixels )) ) return( -1 ); n_layers = layer->n; /* This would cause interesting problems. */ g_assert( n_layers < 30 ); layer_free( layer ); size = dz->tile_size * (1 << n_layers); real_pixels.left = (size - save->ready->Xsize) / 2; real_pixels.top = (size - save->ready->Ysize) / 2; if( vips_embed( save->ready, &z, real_pixels.left, real_pixels.top, size, size, "background", save->background, NULL ) ) return( -1 ); VIPS_UNREF( save->ready ); save->ready = z; #ifdef DEBUG printf( "centre: centring within a %d x %d image\n", size, size ); #endif } #ifdef DEBUG printf( "vips_foreign_save_dz_build: tile_size == %d\n", dz->tile_size ); printf( "vips_foreign_save_dz_build: overlap == %d\n", dz->overlap ); #endif /* Build the skeleton of the image pyramid. */ if( !(dz->layer = pyramid_build( dz, NULL, save->ready->Xsize, save->ready->Ysize, &real_pixels )) ) return( -1 ); /* Drop any path stuff at the start of the output name and remove the * suffix. */ { char *p; dz->basename = g_path_get_basename( dz->name ); if( (p = (char *) vips__find_rightmost_brackets( dz->basename )) ) *p = '\0'; if( (p = strrchr( dz->basename, '.' )) ) { *p = '\0'; /* If we're writing to thing.zip or thing.szi, default to zip * container. */ if( !vips_object_argument_isset( object, "container" ) ) if( strcasecmp( p + 1, "zip" ) == 0 || strcasecmp( p + 1, "szi" ) == 0 ) dz->container = VIPS_FOREIGN_DZ_CONTAINER_ZIP; } } dz->dirname = g_path_get_dirname( dz->name ); if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ ) dz->root_name = g_strdup_printf( "%s_files", dz->basename ); else dz->root_name = g_strdup( dz->basename ); /* Drop any options from @suffix. */ { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; vips__filename_split8( dz->suffix, filename, option_string ); dz->file_suffix = g_strdup( filename ); } /* If we will be renaming our temp dir to an existing directory or * file, stop now. See vips_rename() use below. */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ && dz->container == VIPS_FOREIGN_DZ_CONTAINER_FS && vips_existsf( "%s/%s_files", dz->dirname, dz->basename ) ) { vips_error( "dzsave", _( "output directory %s/%s_files exists" ), dz->dirname, dz->basename ); return( -1 ); } /* Make the thing we write the tiles into. */ switch( dz->container ) { case VIPS_FOREIGN_DZ_CONTAINER_FS: if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ ) { /* For deepzoom, we have to rearrange the output * directory after writing it, see the end of this * function. We write to a temporary directory, then * pull ${basename}_files and ${basename}.dzi out into * the current directory and remove the temp. The temp * dir must not clash with another file. */ char name[VIPS_PATH_MAX]; int fd; GsfOutput *out; GError *error = NULL; vips_snprintf( name, VIPS_PATH_MAX, "%s-XXXXXX", dz->basename ); dz->tempdir = g_build_filename( dz->dirname, name, NULL ); if( (fd = g_mkstemp( dz->tempdir )) == -1 ) { vips_error( class->nickname, _( "unable to make temporary file %s" ), dz->tempdir ); return( -1 ); } close( fd ); g_unlink( dz->tempdir ); if( !(out = (GsfOutput *) gsf_outfile_stdio_new( dz->tempdir, &error )) ) { vips_g_error( &error ); return( -1 ); } dz->tree = vips_gsf_tree_new( out, FALSE ); } else { GsfOutput *out; GError *error = NULL; char name[VIPS_PATH_MAX]; vips_snprintf( name, VIPS_PATH_MAX, "%s/%s", dz->dirname, dz->basename ); if( !(out = (GsfOutput *) gsf_outfile_stdio_new( name, &error )) ) { vips_g_error( &error ); return( -1 ); } dz->tree = vips_gsf_tree_new( out, FALSE ); } break; case VIPS_FOREIGN_DZ_CONTAINER_ZIP: { GsfOutput *out; GsfOutput *zip; GsfOutput *out2; GError *error = NULL; char name[VIPS_PATH_MAX]; /* This is the zip we are building. */ vips_snprintf( name, VIPS_PATH_MAX, "%s/%s.zip", dz->dirname, dz->basename ); if( !(out = gsf_output_stdio_new( name, &error )) ) { vips_g_error( &error ); return( -1 ); } if( !(zip = (GsfOutput *) gsf_outfile_zip_new( out, &error )) ) { vips_g_error( &error ); return( -1 ); } /* We can unref @out since @zip has a ref to it. */ g_object_unref( out ); /* Make the base directory inside the zip. All stuff goes into * this. */ out2 = gsf_outfile_new_child_full( (GsfOutfile *) zip, dz->basename, TRUE, "compression-level", 0, NULL ); dz->tree = vips_gsf_tree_new( out2, TRUE ); /* Note the thing that will need closing up on exit. */ dz->tree->container = zip; } break; default: g_assert_not_reached(); } if( vips_sink_disc( save->ready, pyramid_strip, dz ) ) return( -1 ); switch( dz->layout ) { case VIPS_FOREIGN_DZ_LAYOUT_DZ: if( write_dzi( dz ) ) return( -1 ); break; case VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY: if( write_properties( dz ) ) return( -1 ); break; case VIPS_FOREIGN_DZ_LAYOUT_GOOGLE: if( write_blank( dz ) ) return( -1 ); break; default: g_assert_not_reached(); } if( dz->properties && write_vips_meta( dz ) ) return( -1 ); if( vips_gsf_tree_close( dz->tree ) ) return( -1 ); /* This is so ugly. In earlier versions of dzsave, we wrote x.dzi and * x_files. Now we write x/x.dzi and x/x_files to make it possible to * create zip files. * * For compatibility, rearrange the directory tree. * * FIXME have a flag to stop this stupidity */ if( dz->layout == VIPS_FOREIGN_DZ_LAYOUT_DZ && dz->container == VIPS_FOREIGN_DZ_CONTAINER_FS ) { char old_name[VIPS_PATH_MAX]; char new_name[VIPS_PATH_MAX]; vips_snprintf( old_name, VIPS_PATH_MAX, "%s/%s.dzi", dz->tempdir, dz->basename ); vips_snprintf( new_name, VIPS_PATH_MAX, "%s/%s.dzi", dz->dirname, dz->basename ); if( vips_rename( old_name, new_name ) ) return( -1 ); vips_snprintf( old_name, VIPS_PATH_MAX, "%s/%s_files", dz->tempdir, dz->basename ); vips_snprintf( new_name, VIPS_PATH_MAX, "%s/%s_files", dz->dirname, dz->basename ); if( vips_rename( old_name, new_name ) ) return( -1 ); if( vips_rmdirf( "%s", dz->tempdir ) ) return( -1 ); } return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static int bandfmt_dz[10] = { /* UC C US S UI I F X D DX */ UC, C, US, S, UI, I, F, F, D, D }; const char *dz_suffs[] = { ".dz", NULL }; static void vips_foreign_save_dz_class_init( VipsForeignSaveDzClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->dispose = vips_foreign_save_dz_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "dzsave"; object_class->description = _( "save image to deep zoom format" ); object_class->build = vips_foreign_save_dz_build; foreign_class->suffs = dz_suffs; save_class->saveable = VIPS_SAVEABLE_ANY; save_class->format_table = bandfmt_dz; save_class->coding[VIPS_CODING_LABQ] = TRUE; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, name ), NULL ); VIPS_ARG_ENUM( class, "layout", 8, _( "Layout" ), _( "Directory layout" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, layout ), VIPS_TYPE_FOREIGN_DZ_LAYOUT, VIPS_FOREIGN_DZ_LAYOUT_DZ ); VIPS_ARG_STRING( class, "suffix", 9, _( "suffix" ), _( "Filename suffix for tiles" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, suffix ), ".jpeg" ); VIPS_ARG_INT( class, "overlap", 10, _( "Overlap" ), _( "Tile overlap in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, overlap ), 0, 8192, 1 ); VIPS_ARG_INT( class, "tile_size", 11, _( "Tile size" ), _( "Tile size in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, tile_size ), 1, 8192, 254 ); VIPS_ARG_ENUM( class, "depth", 13, _( "Depth" ), _( "Pyramid depth" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, depth ), VIPS_TYPE_FOREIGN_DZ_DEPTH, VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL ); VIPS_ARG_BOOL( class, "centre", 13, _( "Center" ), _( "Center image in tile" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, centre ), FALSE ); VIPS_ARG_ENUM( class, "angle", 14, _( "Angle" ), _( "Rotate image during save" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, angle ), VIPS_TYPE_ANGLE, VIPS_ANGLE_D0 ); VIPS_ARG_ENUM( class, "container", 15, _( "Container" ), _( "Pyramid container type" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, container ), VIPS_TYPE_FOREIGN_DZ_CONTAINER, VIPS_FOREIGN_DZ_CONTAINER_FS ); VIPS_ARG_BOOL( class, "properties", 16, _( "Properties" ), _( "Write a properties file to the output directory" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveDz, properties ), FALSE ); /* How annoying. We stupidly had these in earlier versions. */ VIPS_ARG_STRING( class, "dirname", 1, _( "Base name" ), _( "Base name to save to" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignSaveDz, name ), NULL ); VIPS_ARG_STRING( class, "basename", 1, _( "Base name" ), _( "Base name to save to" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignSaveDz, name ), NULL ); VIPS_ARG_INT( class, "tile_width", 12, _( "Tile width" ), _( "Tile width in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignSaveDz, tile_size ), 1, 8192, 254 ); VIPS_ARG_INT( class, "tile_height", 12, _( "Tile height" ), _( "Tile height in pixels" ), VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsForeignSaveDz, tile_size ), 1, 8192, 254 ); } static void vips_foreign_save_dz_init( VipsForeignSaveDz *dz ) { VIPS_SETSTR( dz->suffix, ".jpeg" ); dz->layout = VIPS_FOREIGN_DZ_LAYOUT_DZ; dz->overlap = 1; dz->tile_size = 254; dz->tile_count = 0; dz->depth = VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL; dz->angle = VIPS_ANGLE_D0; dz->container = VIPS_FOREIGN_DZ_CONTAINER_FS; } #endif /*HAVE_GSF*/ /** * vips_dzsave: * @in: image to save * @name: name to save to * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @layout; directory layout convention * @suffix: suffix for tile tiles * @overlap; set tile overlap * @tile_size; set tile size * @background: background colour * @depth: how deep to make the pyramid * @centre: centre the tiles * @angle: rotate the image by this much * @container: set container type * @properties: write a properties file * * Save an image as a set of tiles at various resolutions. By default dzsave * uses DeepZoom layout -- use @layout to pick other conventions. * * vips_dzsave() creates a directory called @name to hold the tiles. If @name * ends `.zip`, vips_dzsave() will create a zip file called @name to hold the * tiles. You can use @container to force zip file output. * * You can set @suffix to something like `".jpg[Q=85]"` to control the tile * write options. * * In Google layout mode, edge tiles are expanded to @tile_size by @tile_size * pixels. Normally they are filled with white, but you can set another colour * with @background. Images are usually placed at the top-left of the tile, * but you can have them centred by turning on @centre. * * You can set the size and overlap of tiles with @tile_size and @overlap. * They default to the correct settings for the selected @layout. The deepzoom * defaults produce 256x256 jpeg files for centre tiles, the most efficient * size. * * Use @depth to control how low the pyramid goes. This defaults to the * correct setting for the @layout you select. * * If @properties is %TRUE, vips_dzsave() will write a file called * `vips-properties.xml` to the output directory. This file lists all of the * metadata attached to @in in an obvious manner. It can be useful for viewing * programs which wish to use fields from source files loaded via * vips_openslideload(). * * See also: vips_tiffsave(). * * Returns: 0 on success, -1 on error. */ int vips_dzsave( VipsImage *in, const char *name, ... ) { va_list ap; int result; va_start( ap, name ); result = vips_call_split( "dzsave", ap, in, name ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/radiance.h0000664000175000017500000000257212530402247014454 00000000000000/* common defs for ppm read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_RADIANCE_H #define VIPS_RADIANCE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips__rad_israd( const char *filename ); int vips__rad_header( const char *filename, VipsImage *out ); int vips__rad_load( const char *filename, VipsImage *out, gboolean readbehind ); int vips__rad_save( VipsImage *in, const char *filename ); extern const char *vips__rad_suffs[]; #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_RADIANCE_H*/ vips-8.2.2/libvips/foreign/radload.c0000664000175000017500000001116112645526277014322 00000000000000/* load radlab from a file * * 5/12/11 * - from tiffload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "radiance.h" typedef struct _VipsForeignLoadRad { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadRad; typedef VipsForeignLoadClass VipsForeignLoadRadClass; G_DEFINE_TYPE( VipsForeignLoadRad, vips_foreign_load_rad, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_rad_get_flags_filename( const char *filename ) { /* The rad reader supports sequential read. */ return( VIPS_FOREIGN_SEQUENTIAL ); } static VipsForeignFlags vips_foreign_load_rad_get_flags( VipsForeignLoad *load ) { VipsForeignLoadRad *rad = (VipsForeignLoadRad *) load; return( vips_foreign_load_rad_get_flags_filename( rad->filename ) ); } static int vips_foreign_load_rad_header( VipsForeignLoad *load ) { VipsForeignLoadRad *rad = (VipsForeignLoadRad *) load; if( vips__rad_header( rad->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, rad->filename ); return( 0 ); } static int vips_foreign_load_rad_load( VipsForeignLoad *load ) { VipsForeignLoadRad *rad = (VipsForeignLoadRad *) load; if( vips__rad_load( rad->filename, load->real, load->access == VIPS_ACCESS_SEQUENTIAL ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_rad_class_init( VipsForeignLoadRadClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "radload"; object_class->description = _( "load a Radiance image from a file" ); foreign_class->suffs = vips__rad_suffs; /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; load_class->is_a = vips__rad_israd; load_class->get_flags_filename = vips_foreign_load_rad_get_flags_filename; load_class->get_flags = vips_foreign_load_rad_get_flags; load_class->header = vips_foreign_load_rad_header; load_class->load = vips_foreign_load_rad_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadRad, filename ), NULL ); } static void vips_foreign_load_rad_init( VipsForeignLoadRad *rad ) { } /** * vips_radload: * @filename: file to load * @out: output image * @...: %NULL-terminated list of optional named arguments * * Read a Radiance (HDR) file into a VIPS image. * * Radiance files are read as #VIPS_CODING_RAD. They have one byte for each of * red, green and blue, and one byte of shared exponent. Some operations (like * vips_extract_area()) can work directly with images in this format, but * mmany (all the arithmetic operations, for example) will not. Unpack * #VIPS_CODING_RAD images to 3 band float with vips_rad2float() if * you want to do arithmetic on them. * * This operation ignores some header fields, like VIEW and DATE. It will not * rotate/flip as the FORMAT string asks. * * Sections of this reader from Greg Ward and Radiance with kind permission. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_radload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "radload", ap, filename, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/Makefile.am0000664000175000017500000000172512610515443014572 00000000000000noinst_LTLIBRARIES = libforeign.la libforeign_la_SOURCES = \ radiance.h \ radiance.c \ radload.c \ radsave.c \ ppm.h \ ppm.c \ ppmload.c \ ppmsave.c \ csv.h \ csv.c \ csvload.c \ csvsave.c \ matrixload.c \ matrixsave.c \ dzsave.c \ rawload.c \ rawsave.c \ vipsload.c \ vipssave.c \ dbh.h \ analyzeload.c \ analyze2vips.c \ analyze2vips.h \ foreign.c \ matlab.h \ matlab.c \ matload.c \ magick.h \ magick2vips.c \ magickload.c \ pngload.c \ pngsave.c \ vipspng.h \ vipspng.c \ openexr2vips.h \ openexr2vips.c \ openexrload.c \ fits.h \ fits.c \ fitsload.c \ fitssave.c \ tiff.h \ vips2tiff.c \ tiff2vips.c \ tiffload.c \ tiffsave.c \ openslide2vips.h \ openslide2vips.c \ openslideload.c \ webp.h \ webpload.c \ webpsave.c \ webp2vips.c \ vips2webp.c \ vips2jpeg.c \ jpeg2vips.c \ jpeg.h \ vipsjpeg.h \ jpegload.c \ jpegsave.c EXTRA_DIST = AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/foreign/openexrload.c0000664000175000017500000000746512645527212015236 00000000000000/* load openexr from a file * * 5/12/11 * - from openslideload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_OPENEXR #include #include #include #include #include #include #include "openexr2vips.h" typedef struct _VipsForeignLoadOpenexr { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadOpenexr; typedef VipsForeignLoadClass VipsForeignLoadOpenexrClass; G_DEFINE_TYPE( VipsForeignLoadOpenexr, vips_foreign_load_openexr, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_openexr_get_flags_filename( const char *filename ) { VipsForeignFlags flags; flags = 0; if( vips__openexr_istiled( filename ) ) flags |= VIPS_FOREIGN_PARTIAL; return( flags ); } static VipsForeignFlags vips_foreign_load_openexr_get_flags( VipsForeignLoad *load ) { VipsForeignLoadOpenexr *openexr = (VipsForeignLoadOpenexr *) load; return( vips_foreign_load_openexr_get_flags_filename( openexr->filename ) ); } static int vips_foreign_load_openexr_header( VipsForeignLoad *load ) { VipsForeignLoadOpenexr *openexr = (VipsForeignLoadOpenexr *) load; if( vips__openexr_read_header( openexr->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, openexr->filename ); return( 0 ); } static int vips_foreign_load_openexr_load( VipsForeignLoad *load ) { VipsForeignLoadOpenexr *openexr = (VipsForeignLoadOpenexr *) load; if( vips__openexr_read( openexr->filename, load->real ) ) return( -1 ); return( 0 ); } static const char *vips_foreign_openexr_suffs[] = { ".exr", NULL }; static void vips_foreign_load_openexr_class_init( VipsForeignLoadOpenexrClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "openexrload"; object_class->description = _( "load an OpenEXR image" ); foreign_class->suffs = vips_foreign_openexr_suffs; /* We are fast at is_a(), so high priority. */ foreign_class->priority = 200; load_class->is_a = vips__openexr_isexr; load_class->get_flags_filename = vips_foreign_load_openexr_get_flags_filename; load_class->get_flags = vips_foreign_load_openexr_get_flags; load_class->header = vips_foreign_load_openexr_header; load_class->load = vips_foreign_load_openexr_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadOpenexr, filename ), NULL ); } static void vips_foreign_load_openexr_init( VipsForeignLoadOpenexr *openexr ) { } #endif /*HAVE_OPENEXR*/ vips-8.2.2/libvips/foreign/vipssave.c0000664000175000017500000000570312530402247014540 00000000000000/* save to vips * * 24/11/11 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include typedef struct _VipsForeignSaveVips { VipsForeignSave parent_object; char *filename; } VipsForeignSaveVips; typedef VipsForeignSaveClass VipsForeignSaveVipsClass; G_DEFINE_TYPE( VipsForeignSaveVips, vips_foreign_save_vips, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_vips_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveVips *vips = (VipsForeignSaveVips *) object; VipsImage *x; if( VIPS_OBJECT_CLASS( vips_foreign_save_vips_parent_class )-> build( object ) ) return( -1 ); if( !(x = vips_image_new_mode( vips->filename, "w" )) ) return( -1 ); if( vips_image_write( save->ready, x ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } /* From vipsload.c. */ extern const char *vips__suffs[]; static void vips_foreign_save_vips_class_init( VipsForeignSaveVipsClass *class ) { int i; GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "vipssave"; object_class->description = _( "save image to vips file" ); object_class->build = vips_foreign_save_vips_build; foreign_class->suffs = vips__suffs; save_class->saveable = VIPS_SAVEABLE_ANY; for( i = 0; i < VIPS_CODING_LAST; i++ ) save_class->coding[i] = TRUE; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveVips, filename ), NULL ); } static void vips_foreign_save_vips_init( VipsForeignSaveVips *vips ) { } vips-8.2.2/libvips/foreign/openexr2vips.h0000664000175000017500000000253012530402247015344 00000000000000/* common defs for jpeg read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_OPENEXR2VIPS_H #define VIPS_OPENEXR2VIPS_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips__openexr_isexr( const char *filename ); gboolean vips__openexr_istiled( const char *filename ); int vips__openexr_read_header( const char *filename, VipsImage *out ); int vips__openexr_read( const char *filename, VipsImage *out ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_OPENEXR2VIPS_H*/ vips-8.2.2/libvips/foreign/Makefile.in0000664000175000017500000006306212651721156014612 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/foreign ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libforeign_la_LIBADD = am_libforeign_la_OBJECTS = radiance.lo radload.lo radsave.lo ppm.lo \ ppmload.lo ppmsave.lo csv.lo csvload.lo csvsave.lo \ matrixload.lo matrixsave.lo dzsave.lo rawload.lo rawsave.lo \ vipsload.lo vipssave.lo analyzeload.lo analyze2vips.lo \ foreign.lo matlab.lo matload.lo magick2vips.lo magickload.lo \ pngload.lo pngsave.lo vipspng.lo openexr2vips.lo \ openexrload.lo fits.lo fitsload.lo fitssave.lo vips2tiff.lo \ tiff2vips.lo tiffload.lo tiffsave.lo openslide2vips.lo \ openslideload.lo webpload.lo webpsave.lo webp2vips.lo \ vips2webp.lo vips2jpeg.lo jpeg2vips.lo jpegload.lo jpegsave.lo libforeign_la_OBJECTS = $(am_libforeign_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libforeign_la_SOURCES) DIST_SOURCES = $(libforeign_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libforeign.la libforeign_la_SOURCES = \ radiance.h \ radiance.c \ radload.c \ radsave.c \ ppm.h \ ppm.c \ ppmload.c \ ppmsave.c \ csv.h \ csv.c \ csvload.c \ csvsave.c \ matrixload.c \ matrixsave.c \ dzsave.c \ rawload.c \ rawsave.c \ vipsload.c \ vipssave.c \ dbh.h \ analyzeload.c \ analyze2vips.c \ analyze2vips.h \ foreign.c \ matlab.h \ matlab.c \ matload.c \ magick.h \ magick2vips.c \ magickload.c \ pngload.c \ pngsave.c \ vipspng.h \ vipspng.c \ openexr2vips.h \ openexr2vips.c \ openexrload.c \ fits.h \ fits.c \ fitsload.c \ fitssave.c \ tiff.h \ vips2tiff.c \ tiff2vips.c \ tiffload.c \ tiffsave.c \ openslide2vips.h \ openslide2vips.c \ openslideload.c \ webp.h \ webpload.c \ webpsave.c \ webp2vips.c \ vips2webp.c \ vips2jpeg.c \ jpeg2vips.c \ jpeg.h \ vipsjpeg.h \ jpegload.c \ jpegsave.c EXTRA_DIST = AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/foreign/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/foreign/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libforeign.la: $(libforeign_la_OBJECTS) $(libforeign_la_DEPENDENCIES) $(EXTRA_libforeign_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libforeign_la_OBJECTS) $(libforeign_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/analyze2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/analyzeload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csvload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csvsave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dzsave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fits.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fitsload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fitssave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/foreign.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpeg2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpegload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpegsave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/magick2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/magickload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matlab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrixload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/matrixsave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openexr2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openexrload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openslide2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openslideload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pngload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pngsave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppmload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppmsave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/radiance.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/radload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/radsave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rawload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rawsave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiff2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiffload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiffsave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vips2jpeg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vips2tiff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vips2webp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vipsload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vipspng.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vipssave.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/webp2vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/webpload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/webpsave.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/foreign/webpsave.c0000664000175000017500000001672212605241561014522 00000000000000/* save to webp * * 24/11/11 * - wrap a class around the webp writer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_LIBWEBP #include #include #include "webp.h" typedef struct _VipsForeignSaveWebp { VipsForeignSave parent_object; /* Quality factor. */ int Q; /* Turn on lossless encode. */ gboolean lossless; } VipsForeignSaveWebp; typedef VipsForeignSaveClass VipsForeignSaveWebpClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSaveWebp, vips_foreign_save_webp, VIPS_TYPE_FOREIGN_SAVE ); #define UC VIPS_FORMAT_UCHAR /* Type promotion for save ... just always go to uchar. */ static int bandfmt_webp[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static void vips_foreign_save_webp_class_init( VipsForeignSaveWebpClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpsave_base"; object_class->description = _( "save webp" ); foreign_class->suffs = vips__webp_suffs; save_class->saveable = VIPS_SAVEABLE_RGBA_ONLY; save_class->format_table = bandfmt_webp; VIPS_ARG_INT( class, "Q", 10, _( "Q" ), _( "Q factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, Q ), 1, 100, 75 ); VIPS_ARG_BOOL( class, "lossless", 11, _( "lossless" ), _( "enable lossless compression" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebp, lossless ), FALSE ); } static void vips_foreign_save_webp_init( VipsForeignSaveWebp *webp ) { webp->Q = 80; } typedef struct _VipsForeignSaveWebpFile { VipsForeignSaveWebp parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveWebpFile; typedef VipsForeignSaveWebpClass VipsForeignSaveWebpFileClass; G_DEFINE_TYPE( VipsForeignSaveWebpFile, vips_foreign_save_webp_file, vips_foreign_save_webp_get_type() ); static int vips_foreign_save_webp_file_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveWebp *webp = (VipsForeignSaveWebp *) object; VipsForeignSaveWebpFile *file = (VipsForeignSaveWebpFile *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_webp_file_parent_class )-> build( object ) ) return( -1 ); if( vips__webp_write_file( save->ready, file->filename, webp->Q, webp->lossless ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_webp_file_class_init( VipsForeignSaveWebpFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpsave"; object_class->description = _( "save image to webp file" ); object_class->build = vips_foreign_save_webp_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveWebpFile, filename ), NULL ); } static void vips_foreign_save_webp_file_init( VipsForeignSaveWebpFile *file ) { } typedef struct _VipsForeignSaveWebpBuffer { VipsForeignSaveWebp parent_object; /* Save to a buffer. */ VipsArea *buf; } VipsForeignSaveWebpBuffer; typedef VipsForeignSaveWebpClass VipsForeignSaveWebpBufferClass; G_DEFINE_TYPE( VipsForeignSaveWebpBuffer, vips_foreign_save_webp_buffer, vips_foreign_save_webp_get_type() ); static int vips_foreign_save_webp_buffer_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveWebp *webp = (VipsForeignSaveWebp *) object; VipsForeignSaveWebpBuffer *file = (VipsForeignSaveWebpBuffer *) object; void *obuf; size_t olen; VipsBlob *blob; if( VIPS_OBJECT_CLASS( vips_foreign_save_webp_buffer_parent_class )-> build( object ) ) return( -1 ); if( vips__webp_write_buffer( save->ready, &obuf, &olen, webp->Q, webp->lossless ) ) return( -1 ); blob = vips_blob_new( (VipsCallbackFn) vips_free, obuf, olen ); g_object_set( file, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); return( 0 ); } static void vips_foreign_save_webp_buffer_class_init( VipsForeignSaveWebpBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "webpsave_buffer"; object_class->description = _( "save image to webp buffer" ); object_class->build = vips_foreign_save_webp_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSaveWebpBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_webp_buffer_init( VipsForeignSaveWebpBuffer *file ) { } typedef struct _VipsForeignSaveWebpMime { VipsForeignSaveWebp parent_object; } VipsForeignSaveWebpMime; typedef VipsForeignSaveWebpClass VipsForeignSaveWebpMimeClass; G_DEFINE_TYPE( VipsForeignSaveWebpMime, vips_foreign_save_webp_mime, vips_foreign_save_webp_get_type() ); static int vips_foreign_save_webp_mime_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveWebp *webp = (VipsForeignSaveWebp *) object; void *obuf; size_t olen; if( VIPS_OBJECT_CLASS( vips_foreign_save_webp_mime_parent_class )-> build( object ) ) return( -1 ); if( vips__webp_write_buffer( save->ready, &obuf, &olen, webp->Q, webp->lossless ) ) return( -1 ); printf( "Content-length: %zu\r\n", olen ); printf( "Content-type: image/webp\r\n" ); printf( "\r\n" ); if( fwrite( obuf, sizeof( char ), olen, stdout ) != olen ) { vips_error( "VipsWebp", "%s", _( "error writing output" ) ); return( -1 ); } fflush( stdout ); g_free( obuf ); return( 0 ); } static void vips_foreign_save_webp_mime_class_init( VipsForeignSaveWebpMimeClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; object_class->nickname = "webpsave_mime"; object_class->description = _( "save image to webp mime" ); object_class->build = vips_foreign_save_webp_mime_build; } static void vips_foreign_save_webp_mime_init( VipsForeignSaveWebpMime *mime ) { } #endif /*HAVE_LIBWEBP*/ vips-8.2.2/libvips/foreign/radiance.c0000664000175000017500000007450612605241561014460 00000000000000/* Read Radiance (.hdr) files * * 3/3/09 * - write packed data, a separate im_rad2float() operation can unpack * 23/3/09 * - add radiance write * 20/12/11 * - reworked as some fns ready for new-style classes * 13/12/12 * - tag RGB rad images as scRGB * 4/11/13 * - support sequential read * 5/11/13 * - rewritten scanline encode and decode, now much faster * 23/1/14 * - put the reader globals into a struct so we can have many active * readers */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Remaining issues: + it ignores some header fields, like VIEW and DATE + it will not rotate/flip as the FORMAT string asks */ /* Sections of this reader from Greg Ward and Radiance with kind permission. The Radience copyright notice appears below. */ /* ==================================================================== * The Radiance Software License, Version 1.0 * * Copyright (c) 1990 - 2009 The Regents of the University of California, * through Lawrence Berkeley National Laboratory. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes Radiance software * (http://radsite.lbl.gov/) * developed by the Lawrence Berkeley National Laboratory * (http://www.lbl.gov/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Radiance," "Lawrence Berkeley National Laboratory" * and "The Regents of the University of California" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact radiance@radsite.lbl.gov. * * 5. Products derived from this software may not be called "Radiance", * nor may "Radiance" appear in their name, without prior written * permission of Lawrence Berkeley National Laboratory. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of Lawrence Berkeley National Laboratory. For more * information on Lawrence Berkeley National Laboratory, please see * . */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include "radiance.h" /* Begin copy-paste from Radiance sources. */ /* flags for scanline ordering */ #define XDECR 1 #define YDECR 2 #define YMAJOR 4 /* standard scanline ordering */ #define PIXSTANDARD (YMAJOR|YDECR) #define PIXSTDFMT "-Y %d +X %d\n" /* structure for image dimensions */ typedef struct { int rt; /* orientation (from flags above) */ int xr, yr; /* x and y resolution */ } RESOLU; /* macros to get scanline length and number */ #define scanlen(rs) ((rs)->rt & YMAJOR ? (rs)->xr : (rs)->yr) #define numscans(rs) ((rs)->rt & YMAJOR ? (rs)->yr : (rs)->xr) /* resolution string buffer and its size */ #define RESOLU_BUFLEN 32 /* macros for reading/writing resolution struct */ #define fputsresolu(rs,fp) fputs(resolu2str(resolu_buf,rs),fp) #define fgetsresolu(rs,fp) str2resolu(rs, \ fgets(resolu_buf,RESOLU_BUFLEN,fp)) /* reading/writing of standard ordering */ #define fprtresolu(sl,ns,fp) fprintf(fp,PIXSTDFMT,ns,sl) #define fscnresolu(sl,ns,fp) (fscanf(fp,PIXSTDFMT,ns,sl)==2) /* defined in resolu.c */ typedef int gethfunc(char *s, void *p); /* callback to process header lines */ #define RED 0 #define GRN 1 #define BLU 2 #define CIEX 0 /* or, if input is XYZ... */ #define CIEY 1 #define CIEZ 2 #define EXP 3 /* exponent same for either format */ #define COLXS 128 /* excess used for exponent */ #define WHT 3 /* used for RGBPRIMS type */ #undef BYTE #define BYTE unsigned char /* 8-bit unsigned integer */ typedef BYTE COLR[4]; /* red, green, blue (or X,Y,Z), exponent */ typedef float COLORV; typedef COLORV COLOR[3]; /* red, green, blue (or X,Y,Z) */ typedef float RGBPRIMS[4][2]; /* (x,y) chromaticities for RGBW */ typedef float (*RGBPRIMP)[2]; /* pointer to RGBPRIMS array */ typedef float COLORMAT[3][3]; /* color coordinate conversion matrix */ #define copycolr(c1,c2) (c1[0]=c2[0],c1[1]=c2[1], \ c1[2]=c2[2],c1[3]=c2[3]) #define colval(col,pri) ((col)[pri]) #define setcolor(col,r,g,b) ((col)[RED]=(r),(col)[GRN]=(g),(col)[BLU]=(b)) #define copycolor(c1,c2) ((c1)[0]=(c2)[0],(c1)[1]=(c2)[1],(c1)[2]=(c2)[2]) #define scalecolor(col,sf) ((col)[0]*=(sf),(col)[1]*=(sf),(col)[2]*=(sf)) #define addcolor(c1,c2) ((c1)[0]+=(c2)[0],(c1)[1]+=(c2)[1],(c1)[2]+=(c2)[2]) #define multcolor(c1,c2) ((c1)[0]*=(c2)[0],(c1)[1]*=(c2)[1],(c1)[2]*=(c2)[2]) #ifdef NTSC #define CIE_x_r 0.670 /* standard NTSC primaries */ #define CIE_y_r 0.330 #define CIE_x_g 0.210 #define CIE_y_g 0.710 #define CIE_x_b 0.140 #define CIE_y_b 0.080 #define CIE_x_w 0.3333 /* use true white */ #define CIE_y_w 0.3333 #else #define CIE_x_r 0.640 /* nominal CRT primaries */ #define CIE_y_r 0.330 #define CIE_x_g 0.290 #define CIE_y_g 0.600 #define CIE_x_b 0.150 #define CIE_y_b 0.060 #define CIE_x_w 0.3333 /* use true white */ #define CIE_y_w 0.3333 #endif #define STDPRIMS {{CIE_x_r,CIE_y_r},{CIE_x_g,CIE_y_g}, \ {CIE_x_b,CIE_y_b},{CIE_x_w,CIE_y_w}} #define CIE_D ( CIE_x_r*(CIE_y_g - CIE_y_b) + \ CIE_x_g*(CIE_y_b - CIE_y_r) + \ CIE_x_b*(CIE_y_r - CIE_y_g) ) #define CIE_C_rD ( (1./CIE_y_w) * \ ( CIE_x_w*(CIE_y_g - CIE_y_b) - \ CIE_y_w*(CIE_x_g - CIE_x_b) + \ CIE_x_g*CIE_y_b - CIE_x_b*CIE_y_g ) ) #define CIE_C_gD ( (1./CIE_y_w) * \ ( CIE_x_w*(CIE_y_b - CIE_y_r) - \ CIE_y_w*(CIE_x_b - CIE_x_r) - \ CIE_x_r*CIE_y_b + CIE_x_b*CIE_y_r ) ) #define CIE_C_bD ( (1./CIE_y_w) * \ ( CIE_x_w*(CIE_y_r - CIE_y_g) - \ CIE_y_w*(CIE_x_r - CIE_x_g) + \ CIE_x_r*CIE_y_g - CIE_x_g*CIE_y_r ) ) #define CIE_rf (CIE_y_r*CIE_C_rD/CIE_D) #define CIE_gf (CIE_y_g*CIE_C_gD/CIE_D) #define CIE_bf (CIE_y_b*CIE_C_bD/CIE_D) /* As of 9-94, CIE_rf=.265074126, CIE_gf=.670114631 and CIE_bf=.064811243 */ /***** The following definitions are valid for RGB colors only... *****/ #define bright(col) (CIE_rf*(col)[RED]+CIE_gf*(col)[GRN]+CIE_bf*(col)[BLU]) #define normbright(c) ( ( (long)(CIE_rf*256.+.5)*(c)[RED] + \ (long)(CIE_gf*256.+.5)*(c)[GRN] + \ (long)(CIE_bf*256.+.5)*(c)[BLU] ) >> 8 ) /* luminous efficacies over visible spectrum */ #define MAXEFFICACY 683. /* defined maximum at 550 nm */ #define WHTEFFICACY 179. /* uniform white light */ #define D65EFFICACY 203. /* standard illuminant D65 */ #define INCEFFICACY 160. /* illuminant A (incand.) */ #define SUNEFFICACY 208. /* illuminant B (solar dir.) */ #define SKYEFFICACY D65EFFICACY /* skylight (should be 110) */ #define DAYEFFICACY D65EFFICACY /* combined sky and solar */ #define luminance(col) (WHTEFFICACY * bright(col)) /***** ...end of stuff specific to RGB colors *****/ #define intens(col) ( (col)[0] > (col)[1] \ ? (col)[0] > (col)[2] ? (col)[0] : (col)[2] \ : (col)[1] > (col)[2] ? (col)[1] : (col)[2] ) #define colrval(c,p) ( (c)[EXP] ? \ ldexp((c)[p]+.5,(int)(c)[EXP]-(COLXS+8)) : \ 0. ) #define WHTCOLOR {1.0,1.0,1.0} #define BLKCOLOR {0.0,0.0,0.0} #define WHTCOLR {128,128,128,COLXS+1} #define BLKCOLR {0,0,0,0} /* picture format identifier */ #define COLRFMT "32-bit_rle_rgbe" #define CIEFMT "32-bit_rle_xyze" #define PICFMT "32-bit_rle_???e" /* matches either */ #define LPICFMT 15 /* max format id len */ /* macros for exposures */ #define EXPOSSTR "EXPOSURE=" #define LEXPOSSTR 9 #define isexpos(hl) (!strncmp(hl,EXPOSSTR,LEXPOSSTR)) #define exposval(hl) atof((hl)+LEXPOSSTR) #define fputexpos(ex,fp) fprintf(fp,"%s%e\n",EXPOSSTR,ex) /* macros for pixel aspect ratios */ #define ASPECTSTR "PIXASPECT=" #define LASPECTSTR 10 #define isaspect(hl) (!strncmp(hl,ASPECTSTR,LASPECTSTR)) #define aspectval(hl) atof((hl)+LASPECTSTR) #define fputaspect(pa,fp) fprintf(fp,"%s%f\n",ASPECTSTR,pa) /* macros for primary specifications */ #define PRIMARYSTR "PRIMARIES=" #define LPRIMARYSTR 10 #define isprims(hl) (!strncmp(hl,PRIMARYSTR,LPRIMARYSTR)) #define primsval(p,hl) sscanf(hl+LPRIMARYSTR, \ "%f %f %f %f %f %f %f %f", \ &(p)[RED][CIEX],&(p)[RED][CIEY], \ &(p)[GRN][CIEX],&(p)[GRN][CIEY], \ &(p)[BLU][CIEX],&(p)[BLU][CIEY], \ &(p)[WHT][CIEX],&(p)[WHT][CIEY]) #define fputprims(p,fp) fprintf(fp, \ "%s %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f\n",\ PRIMARYSTR, \ (p)[RED][CIEX],(p)[RED][CIEY], \ (p)[GRN][CIEX],(p)[GRN][CIEY], \ (p)[BLU][CIEX],(p)[BLU][CIEY], \ (p)[WHT][CIEX],(p)[WHT][CIEY]) /* macros for color correction */ #define COLCORSTR "COLORCORR=" #define LCOLCORSTR 10 #define iscolcor(hl) (!strncmp(hl,COLCORSTR,LCOLCORSTR)) #define colcorval(cc,hl) sscanf(hl+LCOLCORSTR,"%f %f %f", \ &(cc)[RED],&(cc)[GRN],&(cc)[BLU]) #define fputcolcor(cc,fp) fprintf(fp,"%s %f %f %f\n",COLCORSTR, \ (cc)[RED],(cc)[GRN],(cc)[BLU]) #define CGAMUT_LOWER 01 #define CGAMUT_UPPER 02 #define CGAMUT (CGAMUT_LOWER|CGAMUT_UPPER) #define rgb_cie(xyz,rgb) colortrans(xyz,rgb2xyzmat,rgb) #define cpcolormat(md,ms) memcpy((void *)md,(void *)ms,sizeof(COLORMAT)) #define MAXLINE 512 char HDRSTR[] = "#?"; /* information header magic number */ char FMTSTR[] = "FORMAT="; /* format identifier */ char TMSTR[] = "CAPDATE="; /* capture date identifier */ static gethfunc mycheck; static int formatval( /* get format value (return true if format) */ register char *r, register char *s ) { register char *cp = FMTSTR; while (*cp) if (*cp++ != *s++) return(0); while (isspace(*s)) s++; if (!*s) return(0); if (r == NULL) return(1); do *r++ = *s++; while(*s && !isspace(*s)); *r = '\0'; return(1); } static int isformat( /* is line a format line? */ char *s ) { return(formatval(NULL, s)); } static int getheader( /* get header from file */ FILE *fp, gethfunc *f, void *p ) { char buf[MAXLINE]; int n; /* give up if there are more than 1,000 lines of header, prevents * us scanning entire files when testing for israd */ for (n = 0; n < 1000; n++) { buf[MAXLINE-2] = '\n'; if (fgets(buf, MAXLINE, fp) == NULL) return(-1); if (buf[0] == '\n') return(0); #ifdef MSDOS if (buf[0] == '\r' && buf[1] == '\n') return(0); #endif if (buf[MAXLINE-2] != '\n') { ungetc(buf[MAXLINE-2], fp); /* prevent false end */ buf[MAXLINE-2] = '\0'; } if (f != NULL && (*f)(buf, p) < 0) return(-1); } return(0); } struct check { FILE *fp; char fs[64]; }; static int mycheck( /* check a header line for format info. */ char *s, void *cp ) { if (!formatval(((struct check*)cp)->fs, s) && ((struct check*)cp)->fp != NULL) { fputs(s, ((struct check*)cp)->fp); } return(0); } static int globmatch( /* check for match of s against pattern p */ register char *p, register char *s ) { int setmatch; do { switch (*p) { case '?': /* match any character */ if (!*s++) return(0); break; case '*': /* match any string */ while (p[1] == '*') p++; do if ( (p[1]=='?' || p[1]==*s) && globmatch(p+1,s) ) return(1); while (*s++); return(0); case '[': /* character set */ setmatch = *s == *++p; if (!*p) return(0); while (*++p != ']') { if (!*p) return(0); if (*p == '-') { setmatch += p[-1] <= *s && *s <= p[1]; if (!*++p) break; } else setmatch += *p == *s; } if (!setmatch) return(0); s++; break; case '\\': /* literal next */ p++; /* fall through */ default: /* normal character */ if (*p != *s) return(0); s++; break; } } while (*p++); return(1); } /* * Checkheader(fin,fmt,fout) returns a value of 1 if the input format * matches the specification in fmt, 0 if no input format was found, * and -1 if the input format does not match or there is an * error reading the header. If fmt is empty, then -1 is returned * if any input format is found (or there is an error), and 0 otherwise. * If fmt contains any '*' or '?' characters, then checkheader * does wildcard expansion and copies a matching result into fmt. * Be sure that fmt is big enough to hold the match in such cases, * and that it is not a static, read-only string! * The input header (minus any format lines) is copied to fout * if fout is not NULL. */ static int checkheader( FILE *fin, char *fmt, FILE *fout ) { struct check cdat; register char *cp; cdat.fp = fout; cdat.fs[0] = '\0'; if (getheader(fin, mycheck, &cdat) < 0) return(-1); if (!cdat.fs[0]) return(0); for (cp = fmt; *cp; cp++) /* check for globbing */ if ((*cp == '?') | (*cp == '*')) { if (globmatch(fmt, cdat.fs)) { strcpy(fmt, cdat.fs); return(1); } else return(-1); } return(strcmp(fmt, cdat.fs) ? -1 : 1); /* literal match */ } static char resolu_buf[RESOLU_BUFLEN]; /* resolution line buffer */ static int str2resolu(RESOLU *rp, char *buf) /* convert resolution line to struct */ { register char *xndx, *yndx; register char *cp; if (buf == NULL) return(0); xndx = yndx = NULL; for (cp = buf; *cp; cp++) if (*cp == 'X') xndx = cp; else if (*cp == 'Y') yndx = cp; if (xndx == NULL || yndx == NULL) return(0); rp->rt = 0; if (xndx > yndx) rp->rt |= YMAJOR; if (xndx[-1] == '-') rp->rt |= XDECR; if (yndx[-1] == '-') rp->rt |= YDECR; if ((rp->xr = atoi(xndx+1)) <= 0) return(0); if ((rp->yr = atoi(yndx+1)) <= 0) return(0); return(1); } #ifdef getc_unlocked /* avoid horrendous overhead of flockfile */ #undef getc #undef putc #define getc getc_unlocked #define putc putc_unlocked #endif #define MINELEN 8 /* minimum scanline length for encoding */ #define MAXELEN 0x7fff /* maximum scanline length for encoding */ #define MINRUN 4 /* minimum run length */ static void fputformat( /* put out a format value */ char *s, FILE *fp ) { fputs(FMTSTR, fp); fputs(s, fp); putc('\n', fp); } char * resolu2str(char *buf, RESOLU *rp) /* convert resolution struct to line */ { if (rp->rt&YMAJOR) sprintf(buf, "%cY %d %cX %d\n", rp->rt&YDECR ? '-' : '+', rp->yr, rp->rt&XDECR ? '-' : '+', rp->xr); else sprintf(buf, "%cX %d %cY %d\n", rp->rt&XDECR ? '-' : '+', rp->xr, rp->rt&YDECR ? '-' : '+', rp->yr); return(buf); } /* End copy-paste from Radiance sources. */ #define BUFFER_SIZE (4096) #define BUFFER_MARGIN (256) /* Read from a FILE with a rolling memory buffer ... this lets us reduce the * number of fgetc() and gives us some very quick readahead. */ typedef struct _Buffer { unsigned char text[BUFFER_SIZE + BUFFER_MARGIN]; int length; int position; FILE *fp; } Buffer; static Buffer * buffer_new( FILE *fp ) { Buffer *buffer = g_new0( Buffer, 1 ); buffer->length = 0; buffer->position = 0; buffer->fp = fp; return( buffer ); } static void buffer_free( Buffer *buffer ) { g_free( buffer ); } /* Make sure there are at least @require bytes of readahead available. */ static int buffer_need( Buffer *buffer, int require ) { int remaining; g_assert( require < BUFFER_MARGIN ); remaining = buffer->length - buffer->position; if( remaining < require ) { size_t len; memcpy( buffer->text, buffer->text + buffer->position, remaining ); buffer->position = 0; buffer->length = remaining; len = fread( buffer->text + buffer->length, 1, BUFFER_SIZE, buffer->fp ); buffer->length += len; remaining = buffer->length - buffer->position; if( remaining < require ) { vips_error( "rad2vips", "%s", _( "end of file" ) ); return( -1 ); } } return( 0 ); } #define BUFFER_FETCH(B) ((B)->text[(B)->position++]) #define BUFFER_PEEK(B) ((B)->text[(B)->position]) /* Read a single scanlne, encoded in the old style. */ static int scanline_read_old( Buffer *buffer, COLR *scanline, int width ) { int rshift; rshift = 0; while( width > 0 ) { if( buffer_need( buffer, 4 ) ) return( -1 ); scanline[0][RED] = BUFFER_FETCH( buffer ); scanline[0][GRN] = BUFFER_FETCH( buffer ); scanline[0][BLU] = BUFFER_FETCH( buffer ); scanline[0][EXP] = BUFFER_FETCH( buffer ); if( scanline[0][RED] == 1 && scanline[0][GRN] == 1 && scanline[0][BLU] == 1 ) { int i; for( i = scanline[0][EXP] << rshift; i > 0; i-- ) { copycolr( scanline[0], scanline[-1] ); scanline += 1; width -= 1; } rshift += 8; } else { scanline += 1; width -= 1; rshift = 0; } } return( 0 ); } /* Read a single encoded scanline. */ static int scanline_read( Buffer *buffer, COLR *scanline, int width ) { int i, j; /* Detect old-style scanlines. */ if( width < MINELEN || width > MAXELEN ) return( scanline_read_old( buffer, scanline, width ) ); if( buffer_need( buffer, 4 ) ) return( -1 ); if( BUFFER_PEEK( buffer ) != 2 ) return( scanline_read_old( buffer, scanline, width ) ); scanline[0][RED] = BUFFER_FETCH( buffer ); scanline[0][GRN] = BUFFER_FETCH( buffer ); scanline[0][BLU] = BUFFER_FETCH( buffer ); scanline[0][EXP] = BUFFER_FETCH( buffer ); if( scanline[0][GRN] != 2 || scanline[0][BLU] & 128 ) return( scanline_read_old( buffer, scanline + 1, width - 1 ) ); if( ((scanline[0][BLU] << 8) | scanline[0][EXP]) != width ) { vips_error( "rad2vips", "%s", _( "scanline length mismatch" ) ); return( -1 ); } for( i = 0; i < 4; i++ ) for( j = 0; j < width; ) { int code, len; gboolean run; if( buffer_need( buffer, 2 ) ) return( -1 ); code = BUFFER_FETCH( buffer ); run = code > 128; len = run ? code & 127 : code; if( j + len > width ) { vips_error( "rad2vips", "%s", _( "overrun" ) ); return( -1 ); } if( run ) { int val; val = BUFFER_FETCH( buffer ); while( len-- ) scanline[j++][i] = val; } else { if( buffer_need( buffer, len ) ) return( -1 ); while( len-- ) scanline[j++][i] = BUFFER_FETCH( buffer ); } } return( 0 ); } /* An encoded scanline can't be larger than this. */ #define MAX_LINE (2 * MAXELEN * sizeof( COLR )) /* Write a single scanline. */ static int scanline_write( COLR *scanline, int width, FILE *fp ) { unsigned char buffer[MAX_LINE]; int buffer_pos = 0; #define PUTC( CH ) { \ buffer[buffer_pos++] = (CH); \ g_assert( buffer_pos <= MAX_LINE ); \ } int i, j, beg, cnt; if( width < MINELEN || width > MAXELEN ) /* Write as a flat scanline. */ return( fwrite( scanline, sizeof( COLR ), width, fp ) - width ); /* An RLE scanline. Write magic header. */ PUTC( 2 ); PUTC( 2 ); PUTC( width >> 8 ); PUTC( width & 255 ); for( i = 0; i < 4; i++ ) { for( j = 0; j < width; ) { /* Not needed, but keeps gcc used-before-set wsrning * quiet. */ cnt = 1; /* Set beg / cnt to the start and length of the next * run longer than MINRUN. */ for( beg = j; beg < width; beg += cnt ) { for( cnt = 1; cnt < 127 && beg + cnt < width && scanline[beg + cnt][i] == scanline[beg][i]; cnt++ ) ; if( cnt >= MINRUN ) break; } /* Code pixels leading up to the run as a set of * non-runs. */ while( j < beg ) { int len = VIPS_MIN( 128, beg - j ); COLR *p = scanline + j; int k; PUTC( len ); for( k = 0; k < len; k++ ) PUTC( p[k][i] ); j += len; } /* Code the run we found, if any */ if( cnt >= MINRUN ) { PUTC( 128 + cnt ); PUTC( scanline[j][i] ); j += cnt; } } } return( fwrite( buffer, 1, buffer_pos, fp ) - buffer_pos ); } /* What we track during radiance file read. */ typedef struct { char *filename; VipsImage *out; FILE *fin; char format[256]; double expos; COLOR colcor; double aspect; RGBPRIMS prims; RESOLU rs; Buffer *buffer; } Read; int vips__rad_israd( const char *filename ) { FILE *fin; char format[256]; int result; #ifdef DEBUG printf( "israd: \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(fin = vips__file_open_read( filename, NULL, FALSE )) ) return( 0 ); strcpy( format, PICFMT ); result = checkheader( fin, format, NULL ); fclose( fin ); return( result == 1 ); } static void read_destroy( VipsObject *object, Read *read ) { VIPS_FREE( read->filename ); VIPS_FREEF( fclose, read->fin ); VIPS_FREEF( buffer_free, read->buffer ); } static Read * read_new( const char *filename, VipsImage *out ) { Read *read; int i; if( !(read = VIPS_NEW( out, Read )) ) return( NULL ); read->filename = vips_strdup( NULL, filename ); read->out = out; read->fin = NULL; strcpy( read->format, COLRFMT ); read->expos = 1.0; for( i = 0; i < 3; i++ ) read->colcor[i] = 1.0; read->aspect = 1.0; read->prims[0][0] = CIE_x_r; read->prims[0][1] = CIE_y_r; read->prims[1][0] = CIE_x_g; read->prims[1][1] = CIE_y_g; read->prims[2][0] = CIE_x_b; read->prims[2][1] = CIE_y_b; read->prims[3][0] = CIE_x_w; read->prims[3][1] = CIE_y_w; g_signal_connect( out, "close", G_CALLBACK( read_destroy ), read ); if( !(read->fin = vips__file_open_read( filename, NULL, FALSE )) || !(read->buffer = buffer_new( read->fin )) ) return( NULL ); return( read ); } static int rad2vips_process_line( char *line, Read *read ) { if( isformat( line ) ) { if( formatval( line, read->format ) ) return( -1 ); } else if( isexpos( line ) ) { read->expos *= exposval( line ); } else if( iscolcor( line ) ) { COLOR cc; int i; (void) colcorval( cc, line ); for( i = 0; i < 3; i++ ) read->colcor[i] *= cc[i]; } else if( isaspect( line ) ) { read->aspect *= aspectval( line ); } else if( isprims( line ) ) { (void) primsval( read->prims, line ); } return( 0 ); } static const char *prims_name[4][2] = { { "rad-prims-rx", "rad-prims-ry" }, { "rad-prims-gx", "rad-prims-gy" }, { "rad-prims-bx", "rad-prims-by" }, { "rad-prims-wx", "rad-prims-wy" } }; static const char *colcor_name[3] = { "rad-colcor-r", "rad-colcor-g", "rad-colcor-b" }; static int rad2vips_get_header( Read *read, VipsImage *out ) { int i, j; VipsInterpretation interpretation; if( getheader( read->fin, (gethfunc *) rad2vips_process_line, read ) || !fgetsresolu( &read->rs, read->fin ) ) { vips_error( "rad2vips", "%s", _( "error reading radiance header" ) ); return( -1 ); } if( strcmp( read->format, COLRFMT ) == 0 ) interpretation = VIPS_INTERPRETATION_scRGB; else if( strcmp( read->format, CIEFMT ) == 0 ) interpretation = VIPS_INTERPRETATION_XYZ; else interpretation = VIPS_INTERPRETATION_MULTIBAND; vips_image_init_fields( out, scanlen( &read->rs ), numscans( &read->rs ), 4, VIPS_FORMAT_UCHAR, VIPS_CODING_RAD, interpretation, 1, read->aspect ); vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, NULL ); vips_image_set_string( out, "rad-format", read->format ); vips_image_set_double( out, "rad-expos", read->expos ); for( i = 0; i < 3; i++ ) vips_image_set_double( out, colcor_name[i], read->colcor[i] ); vips_image_set_double( out, "rad-aspect", read->aspect ); for( i = 0; i < 4; i++ ) for( j = 0; j < 2; j++ ) vips_image_set_double( out, prims_name[i][j], read->prims[i][j] ); return( 0 ); } int vips__rad_header( const char *filename, VipsImage *out ) { Read *read; #ifdef DEBUG printf( "rad2vips_header: reading \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, out )) ) return( -1 ); if( rad2vips_get_header( read, read->out ) ) return( -1 ); return( 0 ); } static int rad2vips_generate( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; Read *read = (Read *) a; int y; #ifdef DEBUG printf( "rad2vips_generate: line %d, %d rows\n", r->top, r->height ); #endif /*DEBUG*/ VIPS_GATE_START( "rad2vips_generate: work" ); for( y = 0; y < r->height; y++ ) { COLR *buf = (COLR *) VIPS_REGION_ADDR( or, 0, r->top + y ); if( scanline_read( read->buffer, buf, or->im->Xsize ) ) { vips_error( "rad2vips", _( "read error line %d" ), r->top + y ); return( -1 ); } } VIPS_GATE_STOP( "rad2vips_generate: work" ); return( 0 ); } int vips__rad_load( const char *filename, VipsImage *out, gboolean readbehind ) { VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( out ), 3 ); Read *read; #ifdef DEBUG printf( "rad2vips: reading \"%s\"\n", filename ); #endif /*DEBUG*/ if( !(read = read_new( filename, out )) ) return( -1 ); t[0] = vips_image_new(); if( rad2vips_get_header( read, t[0] ) ) return( -1 ); if( vips_image_generate( t[0], NULL, rad2vips_generate, NULL, read, NULL ) || vips_sequential( t[0], &t[1], "tile_height", 8, "access", readbehind ? VIPS_ACCESS_SEQUENTIAL : VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, NULL ) || vips_image_write( t[1], out ) ) return( -1 ); return( 0 ); } /* What we track during a radiance file write. */ typedef struct { VipsImage *in; char *filename; FILE *fout; char format[256]; double expos; COLOR colcor; double aspect; RGBPRIMS prims; RESOLU rs; } Write; static void write_destroy( Write *write ) { VIPS_FREE( write->filename ); VIPS_FREEF( fclose, write->fout ); vips_free( write ); } static Write * write_new( VipsImage *in, const char *filename ) { Write *write; int i; if( !(write = VIPS_NEW( NULL, Write )) ) return( NULL ); write->in = in; write->filename = vips_strdup( NULL, filename ); write->fout = vips__file_open_write( filename, FALSE ); strcpy( write->format, COLRFMT ); write->expos = 1.0; for( i = 0; i < 3; i++ ) write->colcor[i] = 1.0; write->aspect = 1.0; write->prims[0][0] = CIE_x_r; write->prims[0][1] = CIE_y_r; write->prims[1][0] = CIE_x_g; write->prims[1][1] = CIE_y_g; write->prims[2][0] = CIE_x_b; write->prims[2][1] = CIE_y_b; write->prims[3][0] = CIE_x_w; write->prims[3][1] = CIE_y_w; if( !write->filename || !write->fout ) { write_destroy( write ); return( NULL ); } return( write ); } static int vips2rad_put_header( Write *write ) { const char *str; int i, j; double d; (void) vips_image_get_double( write->in, "rad-expos", &write->expos ); (void) vips_image_get_double( write->in, "rad-aspect", &write->aspect ); if( !vips_image_get_string( write->in, "rad-format", &str ) ) vips_strncpy( write->format, str, 256 ); if( write->in->Type == VIPS_INTERPRETATION_scRGB ) strcpy( write->format, COLRFMT ); if( write->in->Type == VIPS_INTERPRETATION_XYZ ) strcpy( write->format, CIEFMT ); for( i = 0; i < 3; i++ ) if( !vips_image_get_double( write->in, colcor_name[i], &d ) ) write->colcor[i] = d; for( i = 0; i < 4; i++ ) for( j = 0; j < 2; j++ ) if( !vips_image_get_double( write->in, prims_name[i][j], &d ) ) write->prims[i][j] = d; /* Make y decreasing for consistency with vips. */ write->rs.rt = YDECR | YMAJOR; write->rs.xr = write->in->Xsize; write->rs.yr = write->in->Ysize; fprintf( write->fout, "#?RADIANCE\n" ); fputformat( write->format, write->fout ); fputexpos( write->expos, write->fout ); fputcolcor( write->colcor, write->fout ); fprintf( write->fout, "SOFTWARE=vips %s\n", vips_version_string() ); fputaspect( write->aspect, write->fout ); fputprims( write->prims, write->fout ); fputs( "\n", write->fout ); fputsresolu( &write->rs, write->fout ); return( 0 ); } static int vips2rad_put_data_block( VipsRegion *region, VipsRect *area, void *a ) { Write *write = (Write *) a; int i; for( i = 0; i < area->height; i++ ) { VipsPel *p = VIPS_REGION_ADDR( region, 0, area->top + i ); if( scanline_write( (COLR *) p, area->width, write->fout ) ) return( -1 ); } return( 0 ); } static int vips2rad_put_data( Write *write ) { if( vips_sink_disc( write->in, vips2rad_put_data_block, write ) ) return( -1 ); return( 0 ); } int vips__rad_save( VipsImage *in, const char *filename ) { Write *write; #ifdef DEBUG printf( "vips2rad: writing \"%s\"\n", filename ); #endif /*DEBUG*/ if( vips_image_pio_input( in ) || vips_check_coding_rad( "vips2rad", in ) ) return( -1 ); if( !(write = write_new( in, filename )) ) return( -1 ); if( vips2rad_put_header( write ) || vips2rad_put_data( write ) ) { write_destroy( write ); return( -1 ); } write_destroy( write ); return( 0 ); } const char *vips__rad_suffs[] = { ".hdr", NULL }; vips-8.2.2/libvips/foreign/rawsave.c0000664000175000017500000001550312530402247014347 00000000000000/* save to raw * * Write raw image data to file. Usefull when defining new formats... * * Jesper Friis * * 10/06/08 JF * - initial code based on im_vips2ppm() * * 04/07/08 JF * - replaced FILE with plain file handlers for reducing * confusion about binary vs. non-binary file modes. * 4/2/10 * - gtkdoc * 15/12/11 * - rework as a class * - added save raw to filename */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include typedef struct _VipsForeignSaveRaw { VipsForeignSave parent_object; char *filename; int fd; } VipsForeignSaveRaw; typedef VipsForeignSaveClass VipsForeignSaveRawClass; G_DEFINE_TYPE( VipsForeignSaveRaw, vips_foreign_save_raw, VIPS_TYPE_FOREIGN_SAVE ); static void vips_foreign_save_raw_dispose( GObject *gobject ) { VipsForeignSaveRaw *raw = (VipsForeignSaveRaw *) gobject; VIPS_FREEF( vips_tracked_close, raw->fd ); G_OBJECT_CLASS( vips_foreign_save_raw_parent_class )-> dispose( gobject ); } static int vips_foreign_save_raw_write( VipsRegion *region, VipsRect *area, void *a ) { VipsForeignSave *save = (VipsForeignSave *) a; VipsForeignSaveRaw *raw = (VipsForeignSaveRaw *) a; int i; for( i = 0; i < area->height; i++ ) { VipsPel *p = VIPS_REGION_ADDR( region, area->left, area->top + i ); if( vips__write( raw->fd, p, VIPS_IMAGE_SIZEOF_PEL( save->in ) * area->width ) ) return( -1 ); } return( 0 ); } static int vips_foreign_save_raw_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveRaw *raw = (VipsForeignSaveRaw *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_raw_parent_class )-> build( object ) ) return( -1 ); if( (raw->fd = vips__open_image_write( raw->filename, FALSE )) < 0 || vips_image_pio_input( save->in ) || vips_sink_disc( save->in, vips_foreign_save_raw_write, raw ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_raw_class_init( VipsForeignSaveRawClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->dispose = vips_foreign_save_raw_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "rawsave"; object_class->description = _( "save image to raw file" ); object_class->build = vips_foreign_save_raw_build; save_class->saveable = VIPS_SAVEABLE_ANY; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveRaw, filename ), NULL ); } static void vips_foreign_save_raw_init( VipsForeignSaveRaw *raw ) { } /** * vips_rawsave: * @in: image to save * @filename: file to write to * @...: %NULL-terminated list of optional named arguments * * Writes the pixels in @in to the file @filename with no header or other * metadata. * * See also: vips_image_write_to_file(). * * Returns: 0 on success, -1 on error. */ int vips_rawsave( VipsImage *in, const char *filename, ... ) { va_list ap; int result; va_start( ap, filename ); result = vips_call_split( "rawsave", ap, in, filename ); va_end( ap ); return( result ); } /* And with an fd rather than a filename. */ typedef struct _VipsForeignSaveRawFd { VipsForeignSave parent_object; int fd; } VipsForeignSaveRawFd; typedef VipsForeignSaveClass VipsForeignSaveRawFdClass; G_DEFINE_TYPE( VipsForeignSaveRawFd, vips_foreign_save_raw_fd, VIPS_TYPE_FOREIGN_SAVE ); static int vips_foreign_save_raw_fd_write( VipsRegion *region, VipsRect *area, void *a ) { VipsForeignSave *save = (VipsForeignSave *) a; VipsForeignSaveRawFd *fd = (VipsForeignSaveRawFd *) a; int i; for( i = 0; i < area->height; i++ ) { VipsPel *p = VIPS_REGION_ADDR( region, area->left, area->top + i ); if( vips__write( fd->fd, p, VIPS_IMAGE_SIZEOF_PEL( save->in ) * area->width ) ) return( -1 ); } return( 0 ); } static int vips_foreign_save_raw_fd_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveRawFd *fd = (VipsForeignSaveRawFd *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_raw_fd_parent_class )-> build( object ) ) return( -1 ); if( vips_image_pio_input( save->in ) || vips_sink_disc( save->in, vips_foreign_save_raw_fd_write, fd ) ) return( -1 ); return( 0 ); } static void vips_foreign_save_raw_fd_class_init( VipsForeignSaveRawFdClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "rawsave_fd"; object_class->description = _( "write raw image to file descriptor" ); object_class->build = vips_foreign_save_raw_fd_build; save_class->saveable = VIPS_SAVEABLE_ANY; VIPS_ARG_INT( class, "fd", 1, _( "File descriptor" ), _( "File descriptor to write to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveRawFd, fd ), 0, 10000, 0 ); } static void vips_foreign_save_raw_fd_init( VipsForeignSaveRawFd *fd ) { } /** * vips_rawsave_fd: * @in: image to save * @fd: file to write to * @...: %NULL-terminated list of optional named arguments * * Writes the pixels in @in to the @fd with no header or other * metadata. Handy for implementing other savers. * * See also: vips_rawsave(). * * Returns: 0 on success, -1 on error. */ int vips_rawsave_fd( VipsImage *in, int fd, ... ) { va_list ap; int result; va_start( ap, fd ); result = vips_call_split( "rawsave_fd", ap, in, fd ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/jpegsave.c0000664000175000017500000002424212620424325014504 00000000000000/* save to jpeg * * 24/11/11 * - wrap a class around the jpeg writer */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_JPEG #include #include #include #include #ifdef HAVE_EXIF #ifdef UNTAGGED_EXIF #include #include #include #include #else /*!UNTAGGED_EXIF*/ #include #include #include #include #endif /*UNTAGGED_EXIF*/ #endif /*HAVE_EXIF*/ #include #include #include #include "vipsjpeg.h" typedef struct _VipsForeignSaveJpeg { VipsForeignSave parent_object; /* Quality factor. */ int Q; /* Profile to embed .. "none" means don't attach a profile. */ char *profile; /* Compute optimal Huffman coding tables. */ gboolean optimize_coding; /* Generate an interlaced (progressive, in jpg terminology) file. */ gboolean interlace; /* Disable chroma subsampling. */ gboolean no_subsample; /* Apply trellis quantisation to each 8x8 block. */ gboolean trellis_quant; /* Apply overshooting to samples with extreme values e.g. 0 & 255 for 8-bit. */ gboolean overshoot_deringing; /* Split the spectrum of DCT coefficients into separate scans. */ gboolean optimize_scans; } VipsForeignSaveJpeg; typedef VipsForeignSaveClass VipsForeignSaveJpegClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignSaveJpeg, vips_foreign_save_jpeg, VIPS_TYPE_FOREIGN_SAVE ); #define UC VIPS_FORMAT_UCHAR /* Type promotion for save ... just always go to uchar. */ static int bandfmt_jpeg[10] = { /* UC C US S UI I F X D DX */ UC, UC, UC, UC, UC, UC, UC, UC, UC, UC }; static void vips_foreign_save_jpeg_class_init( VipsForeignSaveJpegClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignSaveClass *save_class = (VipsForeignSaveClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegsave_base"; object_class->description = _( "save jpeg" ); foreign_class->suffs = vips__jpeg_suffs; save_class->saveable = VIPS_SAVEABLE_RGB_CMYK; save_class->format_table = bandfmt_jpeg; VIPS_ARG_INT( class, "Q", 10, _( "Q" ), _( "Q factor" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, Q ), 1, 100, 75 ); VIPS_ARG_STRING( class, "profile", 11, _( "Profile" ), _( "ICC profile to embed" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, profile ), NULL ); VIPS_ARG_BOOL( class, "optimize_coding", 12, _( "Optimize_coding" ), _( "Compute optimal Huffman coding tables" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, optimize_coding ), FALSE ); VIPS_ARG_BOOL( class, "interlace", 13, _( "Interlace" ), _( "Generate an interlaced (progressive) jpeg" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, interlace ), FALSE ); VIPS_ARG_BOOL( class, "no_subsample", 14, _( "No subsample" ), _( "Disable chroma subsample" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, no_subsample ), FALSE ); VIPS_ARG_BOOL( class, "trellis_quant", 15, _( "Trellis quantisation" ), _( "Apply trellis quantisation to each 8x8 block" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, trellis_quant ), FALSE ); VIPS_ARG_BOOL( class, "overshoot_deringing", 16, _( "Overshoot de-ringing" ), _( "Apply overshooting to samples with extreme values" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, overshoot_deringing ), FALSE ); VIPS_ARG_BOOL( class, "optimize_scans", 17, _( "Optimize scans" ), _( "Split the spectrum of DCT coefficients into separate scans" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpeg, optimize_scans ), FALSE ); } static void vips_foreign_save_jpeg_init( VipsForeignSaveJpeg *jpeg ) { jpeg->Q = 75; } typedef struct _VipsForeignSaveJpegFile { VipsForeignSaveJpeg parent_object; /* Filename for save. */ char *filename; } VipsForeignSaveJpegFile; typedef VipsForeignSaveJpegClass VipsForeignSaveJpegFileClass; G_DEFINE_TYPE( VipsForeignSaveJpegFile, vips_foreign_save_jpeg_file, vips_foreign_save_jpeg_get_type() ); static int vips_foreign_save_jpeg_file_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveJpeg *jpeg = (VipsForeignSaveJpeg *) object; VipsForeignSaveJpegFile *file = (VipsForeignSaveJpegFile *) object; if( VIPS_OBJECT_CLASS( vips_foreign_save_jpeg_file_parent_class )-> build( object ) ) return( -1 ); if( vips__jpeg_write_file( save->ready, file->filename, jpeg->Q, jpeg->profile, jpeg->optimize_coding, jpeg->interlace, save->strip, jpeg->no_subsample, jpeg->trellis_quant, jpeg->overshoot_deringing, jpeg->optimize_scans) ) return( -1 ); return( 0 ); } static void vips_foreign_save_jpeg_file_class_init( VipsForeignSaveJpegFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegsave"; object_class->description = _( "save image to jpeg file" ); object_class->build = vips_foreign_save_jpeg_file_build; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to save to" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignSaveJpegFile, filename ), NULL ); } static void vips_foreign_save_jpeg_file_init( VipsForeignSaveJpegFile *file ) { } typedef struct _VipsForeignSaveJpegBuffer { VipsForeignSaveJpeg parent_object; /* Save to a buffer. */ VipsArea *buf; } VipsForeignSaveJpegBuffer; typedef VipsForeignSaveJpegClass VipsForeignSaveJpegBufferClass; G_DEFINE_TYPE( VipsForeignSaveJpegBuffer, vips_foreign_save_jpeg_buffer, vips_foreign_save_jpeg_get_type() ); static int vips_foreign_save_jpeg_buffer_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveJpeg *jpeg = (VipsForeignSaveJpeg *) object; VipsForeignSaveJpegBuffer *file = (VipsForeignSaveJpegBuffer *) object; void *obuf; size_t olen; VipsBlob *blob; if( VIPS_OBJECT_CLASS( vips_foreign_save_jpeg_buffer_parent_class )-> build( object ) ) return( -1 ); if( vips__jpeg_write_buffer( save->ready, &obuf, &olen, jpeg->Q, jpeg->profile, jpeg->optimize_coding, jpeg->interlace, save->strip, jpeg->no_subsample, jpeg->trellis_quant, jpeg->overshoot_deringing, jpeg->optimize_scans) ) return( -1 ); blob = vips_blob_new( (VipsCallbackFn) vips_free, obuf, olen ); g_object_set( file, "buffer", blob, NULL ); vips_area_unref( VIPS_AREA( blob ) ); return( 0 ); } static void vips_foreign_save_jpeg_buffer_class_init( VipsForeignSaveJpegBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegsave_buffer"; object_class->description = _( "save image to jpeg buffer" ); object_class->build = vips_foreign_save_jpeg_buffer_build; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to save to" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsForeignSaveJpegBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_save_jpeg_buffer_init( VipsForeignSaveJpegBuffer *file ) { } typedef struct _VipsForeignSaveJpegMime { VipsForeignSaveJpeg parent_object; } VipsForeignSaveJpegMime; typedef VipsForeignSaveJpegClass VipsForeignSaveJpegMimeClass; G_DEFINE_TYPE( VipsForeignSaveJpegMime, vips_foreign_save_jpeg_mime, vips_foreign_save_jpeg_get_type() ); static int vips_foreign_save_jpeg_mime_build( VipsObject *object ) { VipsForeignSave *save = (VipsForeignSave *) object; VipsForeignSaveJpeg *jpeg = (VipsForeignSaveJpeg *) object; void *obuf; size_t olen; if( VIPS_OBJECT_CLASS( vips_foreign_save_jpeg_mime_parent_class )-> build( object ) ) return( -1 ); if( vips__jpeg_write_buffer( save->ready, &obuf, &olen, jpeg->Q, jpeg->profile, jpeg->optimize_coding, jpeg->interlace, save->strip, jpeg->no_subsample, jpeg->trellis_quant, jpeg->overshoot_deringing, jpeg->optimize_scans) ) return( -1 ); printf( "Content-length: %zu\r\n", olen ); printf( "Content-type: image/jpeg\r\n" ); printf( "\r\n" ); if( fwrite( obuf, sizeof( char ), olen, stdout ) != olen ) { vips_error( "VipsJpeg", "%s", _( "error writing output" ) ); return( -1 ); } fflush( stdout ); g_free( obuf ); return( 0 ); } static void vips_foreign_save_jpeg_mime_class_init( VipsForeignSaveJpegMimeClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; object_class->nickname = "jpegsave_mime"; object_class->description = _( "save image to jpeg mime" ); object_class->build = vips_foreign_save_jpeg_mime_build; } static void vips_foreign_save_jpeg_mime_init( VipsForeignSaveJpegMime *mime ) { } #endif /*HAVE_JPEG*/ vips-8.2.2/libvips/foreign/analyze2vips.c0000664000175000017500000003645412651123221015332 00000000000000/* Read a Analyze file. Old-style header (so called 7.5 format). * * 3/8/05 * - dbh.h header from Ralph Myers * 22/8/05 * - better byteswapper * 12/5/09 * - fix signed/unsigned warning * 13/1/09 * - try harder not to generate error messages in "isanalyze" * 4/2/10 * - gtkdoc * 14/12/11 * - redo as a set of fns ready for wrapping in a new-style class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "dbh.h" #include "analyze2vips.h" /* The things we can have in header fields. Can't use GType, since we want a * static value we can use in a declaration. */ typedef enum { BYTE, SHORT, INT, FLOAT, STRING } Type; /* A field in the dsr header. */ typedef struct { const char *name; /* Eg. "header_key.sizeof_hdr" */ Type type; glong offset; /* Offset in struct */ int len; /* Sizeof ... useful for string types */ } Field; static Field dsr_header[] = { { "dsr-header_key.sizeof_hdr", INT, G_STRUCT_OFFSET( struct dsr, hk.sizeof_hdr ), 4 }, { "dsr-header_key.data_type", STRING, G_STRUCT_OFFSET( struct dsr, hk.data_type ), 10 }, { "dsr-header_key.db_name", STRING, G_STRUCT_OFFSET( struct dsr, hk.db_name ), 18 }, { "dsr-header_key.extents", INT, G_STRUCT_OFFSET( struct dsr, hk.extents ), 4 }, { "dsr-header_key.session_error", SHORT, G_STRUCT_OFFSET( struct dsr, hk.session_error ), 2 }, { "dsr-header_key.regular", BYTE, G_STRUCT_OFFSET( struct dsr, hk.regular ), 1 }, { "dsr-header_key.hkey_un0", BYTE, G_STRUCT_OFFSET( struct dsr, hk.hkey_un0 ), 1 }, { "dsr-image_dimension.dim[0]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[0] ), 2 }, { "dsr-image_dimension.dim[1]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[1] ), 2 }, { "dsr-image_dimension.dim[2]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[2] ), 2 }, { "dsr-image_dimension.dim[3]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[3] ), 2 }, { "dsr-image_dimension.dim[4]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[4] ), 2 }, { "dsr-image_dimension.dim[5]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[5] ), 2 }, { "dsr-image_dimension.dim[6]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[6] ), 2 }, { "dsr-image_dimension.dim[7]", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim[7] ), 2 }, { "dsr-image_dimension.vox_units[0]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.vox_units[0] ), 1 }, { "dsr-image_dimension.vox_units[1]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.vox_units[1] ), 1 }, { "dsr-image_dimension.vox_units[2]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.vox_units[2] ), 1 }, { "dsr-image_dimension.vox_units[3]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.vox_units[3] ), 1 }, { "dsr-image_dimension.cal_units[0]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[0] ), 1 }, { "dsr-image_dimension.cal_units[1]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[1] ), 1 }, { "dsr-image_dimension.cal_units[2]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[2] ), 1 }, { "dsr-image_dimension.cal_units[3]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[3] ), 1 }, { "dsr-image_dimension.cal_units[4]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[4] ), 1 }, { "dsr-image_dimension.cal_units[5]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[5] ), 1 }, { "dsr-image_dimension.cal_units[6]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[6] ), 1 }, { "dsr-image_dimension.cal_units[7]", BYTE, G_STRUCT_OFFSET( struct dsr, dime.cal_units[7] ), 1 }, { "dsr-image_dimension.data_type", SHORT, G_STRUCT_OFFSET( struct dsr, dime.datatype ), 2 }, { "dsr-image_dimension.bitpix", SHORT, G_STRUCT_OFFSET( struct dsr, dime.bitpix ), 2 }, { "dsr-image_dimension.dim_un0", SHORT, G_STRUCT_OFFSET( struct dsr, dime.dim_un0 ), 2 }, { "dsr-image_dimension.pixdim[0]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[0] ), 4 }, { "dsr-image_dimension.pixdim[1]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[1] ), 4 }, { "dsr-image_dimension.pixdim[2]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[2] ), 4 }, { "dsr-image_dimension.pixdim[3]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[3] ), 4 }, { "dsr-image_dimension.pixdim[4]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[4] ), 4 }, { "dsr-image_dimension.pixdim[5]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[5] ), 4 }, { "dsr-image_dimension.pixdim[6]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[6] ), 4 }, { "dsr-image_dimension.pixdim[7]", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.pixdim[7] ), 4 }, { "dsr-image_dimension.vox_offset", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.vox_offset ), 4 }, { "dsr-image_dimension.cal_max", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.cal_max ), 4 }, { "dsr-image_dimension.cal_min", FLOAT, G_STRUCT_OFFSET( struct dsr, dime.cal_min ), 4 }, { "dsr-image_dimension.compressed", INT, G_STRUCT_OFFSET( struct dsr, dime.compressed ), 4 }, { "dsr-image_dimension.verified", INT, G_STRUCT_OFFSET( struct dsr, dime.verified ), 4 }, { "dsr-image_dimension.glmax", INT, G_STRUCT_OFFSET( struct dsr, dime.glmax ), 4 }, { "dsr-image_dimension.glmin", INT, G_STRUCT_OFFSET( struct dsr, dime.glmin ), 4 }, { "dsr-data_history.descrip", STRING, G_STRUCT_OFFSET( struct dsr, hist.descrip ), 80 }, { "dsr-data_history.aux_file", STRING, G_STRUCT_OFFSET( struct dsr, hist.aux_file ), 24 }, { "dsr-data_history.orient", BYTE, G_STRUCT_OFFSET( struct dsr, hist.orient ), 1 }, { "dsr-data_history.originator", STRING, G_STRUCT_OFFSET( struct dsr, hist.originator ), 10 }, { "dsr-data_history.generated", STRING, G_STRUCT_OFFSET( struct dsr, hist.generated ), 10 }, { "dsr-data_history.scannum", STRING, G_STRUCT_OFFSET( struct dsr, hist.scannum ), 10 }, { "dsr-data_history.patient_id", STRING, G_STRUCT_OFFSET( struct dsr, hist.patient_id ), 10 }, { "dsr-data_history.exp_date", STRING, G_STRUCT_OFFSET( struct dsr, hist.exp_date ), 10 }, { "dsr-data_history.exp_time", STRING, G_STRUCT_OFFSET( struct dsr, hist.exp_time ), 10 }, { "dsr-data_history.hist_un0", STRING, G_STRUCT_OFFSET( struct dsr, hist.hist_un0 ), 3 }, { "dsr-data_history.views", INT, G_STRUCT_OFFSET( struct dsr, hist.views ), 4 }, { "dsr-data_history.vols_added", INT, G_STRUCT_OFFSET( struct dsr, hist.vols_added ), 4 }, { "dsr-data_history.start_field", INT, G_STRUCT_OFFSET( struct dsr, hist.start_field ), 4 }, { "dsr-data_history.field_skip", INT, G_STRUCT_OFFSET( struct dsr, hist.field_skip ), 4 }, { "dsr-data_history.omax", INT, G_STRUCT_OFFSET( struct dsr, hist.omax ), 4 }, { "dsr-data_history.omin", INT, G_STRUCT_OFFSET( struct dsr, hist.omin ), 4 }, { "dsr-data_history.smax", INT, G_STRUCT_OFFSET( struct dsr, hist.smax ), 4 }, { "dsr-data_history.smin", INT, G_STRUCT_OFFSET( struct dsr, hist.smin ), 4 } }; /* Given a filename, generate the names for the header and the image data. * * Eg. * "fred" -> "fred.hdr", "fred.img" * "fred.img" -> "fred.hdr", "fred.img" */ static void generate_filenames( const char *path, char *header, char *image ) { const char *olds[] = { ".img", ".hdr" }; vips__change_suffix( path, header, FILENAME_MAX, ".hdr", olds, 2 ); vips__change_suffix( path, image, FILENAME_MAX, ".img", olds, 2 ); } /* str is a str which may not be NULL-terminated. Return a pointer to a static * buffer with a NULL-terminated version so we can safely printf() the string. * Also, make sure the string is plain ascii. */ static char * getstr( int mx, const char *str ) { static char buf[256]; int i; g_assert( mx < 256 ); strncpy( buf, str, mx ); buf[mx]= '\0'; /* How annoying, patient_id has some funny ctrlchars in that mess up * xml encode later. */ for( i = 0; i < mx && buf[i]; i++ ) if( !isascii( buf[i] ) || buf[i] < 32 ) buf[i] = '@'; return( buf ); } #ifdef DEBUG static void print_dsr( struct dsr *d ) { int i; for( i = 0; i < VIPS_NUMBER( dsr_header ); i++ ) { printf( "%s = ", dsr_header[i].name ); switch( dsr_header[i].type ) { case BYTE: printf( "%d\n", G_STRUCT_MEMBER( char, d, dsr_header[i].offset ) ); break; case SHORT: printf( "%d\n", G_STRUCT_MEMBER( short, d, dsr_header[i].offset ) ); break; case INT: printf( "%d\n", G_STRUCT_MEMBER( int, d, dsr_header[i].offset ) ); break; case FLOAT: printf( "%g\n", G_STRUCT_MEMBER( float, d, dsr_header[i].offset ) ); break; case STRING: printf( "\"%s\"\n", getstr( dsr_header[i].len, &G_STRUCT_MEMBER( char, d, dsr_header[i].offset ) ) ); break; default: g_assert_not_reached(); } } } #endif /*DEBUG*/ static struct dsr * read_header( const char *header ) { struct dsr *d; size_t len; if( !(d = (struct dsr *) vips__file_read_name( header, NULL, &len )) ) return( NULL ); if( len != sizeof( struct dsr ) ) { vips_error( "analyze2vips", "%s", _( "header file size incorrect" ) ); vips_free( d ); return( NULL ); } /* Ouch! Should check at configure time I guess. */ g_assert( sizeof( struct dsr ) == 348 ); /* dsr headers are always SPARC byte order (MSB first). Do we need to * swap? */ if( !vips_amiMSBfirst() ) { int i; for( i = 0; i < VIPS_NUMBER( dsr_header ); i++ ) { unsigned char *p; switch( dsr_header[i].type ) { case SHORT: p = &G_STRUCT_MEMBER( unsigned char, d, dsr_header[i].offset ); vips__copy_2byte( TRUE, p, p ); break; case INT: case FLOAT: p = &G_STRUCT_MEMBER( unsigned char, d, dsr_header[i].offset ); vips__copy_4byte( TRUE, p, p ); break; case BYTE: case STRING: break; default: g_assert_not_reached(); } } } if( (int) len != d->hk.sizeof_hdr ) { vips_error( "analyze2vips", "%s", _( "header size incorrect" ) ); vips_free( d ); return( NULL ); } return( d ); } /* Try to get VIPS header properties from a dsr. */ static int get_vips_properties( struct dsr *d, int *width, int *height, int *bands, VipsBandFormat *fmt ) { int i; if( d->dime.dim[0] < 2 || d->dime.dim[0] > 7 ) { vips_error( "analyze2vips", _( "%d-dimensional images not supported" ), d->dime.dim[0] ); return( -1 ); } /* Size of base 2d images. */ *width = d->dime.dim[1]; *height = d->dime.dim[2]; for( i = 3; i <= d->dime.dim[0]; i++ ) *height *= d->dime.dim[i]; /* Check it's a datatype we can handle. */ switch( d->dime.datatype ) { case DT_UNSIGNED_CHAR: *bands = 1; *fmt = VIPS_FORMAT_UCHAR; break; case DT_SIGNED_SHORT: *bands = 1; *fmt = VIPS_FORMAT_SHORT; break; case DT_SIGNED_INT: *bands = 1; *fmt = VIPS_FORMAT_INT; break; case DT_FLOAT: *bands = 1; *fmt = VIPS_FORMAT_FLOAT; break; case DT_COMPLEX: *bands = 1; *fmt = VIPS_FORMAT_COMPLEX; break; case DT_DOUBLE: *bands = 1; *fmt = VIPS_FORMAT_DOUBLE; break; case DT_RGB: *bands = 3; *fmt = VIPS_FORMAT_UCHAR; break; default: vips_error( "analyze2vips", _( "datatype %d not supported" ), d->dime.datatype ); return( -1 ); } #ifdef DEBUG printf( "get_vips_properties: width = %d\n", *width ); printf( "get_vips_properties: height = %d\n", *height ); printf( "get_vips_properties: bands = %d\n", *bands ); printf( "get_vips_properties: fmt = %d\n", *fmt ); #endif /*DEBUG*/ return( 0 ); } static void attach_meta( VipsImage *out, struct dsr *d ) { int i; vips_image_set_blob( out, "dsr", (VipsCallbackFn) vips_free, d, d->hk.sizeof_hdr ); for( i = 0; i < VIPS_NUMBER( dsr_header ); i++ ) { switch( dsr_header[i].type ) { case BYTE: vips_image_set_int( out, dsr_header[i].name, G_STRUCT_MEMBER( char, d, dsr_header[i].offset ) ); break; case SHORT: vips_image_set_int( out, dsr_header[i].name, G_STRUCT_MEMBER( short, d, dsr_header[i].offset ) ); break; case INT: vips_image_set_int( out, dsr_header[i].name, G_STRUCT_MEMBER( int, d, dsr_header[i].offset ) ); break; case FLOAT: vips_image_set_double( out, dsr_header[i].name, G_STRUCT_MEMBER( float, d, dsr_header[i].offset ) ); break; case STRING: vips_image_set_string( out, dsr_header[i].name, getstr( dsr_header[i].len, &G_STRUCT_MEMBER( char, d, dsr_header[i].offset ) ) ); break; default: g_assert_not_reached(); } } } int vips__isanalyze( const char *filename ) { char header[FILENAME_MAX]; char image[FILENAME_MAX]; struct dsr *d; int width, height; int bands; VipsBandFormat fmt; int result; generate_filenames( filename, header, image ); if( !vips_existsf( "%s", header ) ) return( 0 ); vips_error_freeze(); d = read_header( header ); vips_error_thaw(); if( !d ) return( 0 ); #ifdef DEBUG print_dsr( d ); #endif /*DEBUG*/ vips_error_freeze(); result = get_vips_properties( d, &width, &height, &bands, &fmt ); vips_error_thaw(); vips_free( d ); return( result == 0 ); } int vips__analyze_read_header( const char *filename, VipsImage *out ) { char header[FILENAME_MAX]; char image[FILENAME_MAX]; struct dsr *d; int width, height; int bands; VipsBandFormat fmt; generate_filenames( filename, header, image ); if( !(d = read_header( header )) ) return( -1 ); #ifdef DEBUG print_dsr( d ); #endif /*DEBUG*/ if( get_vips_properties( d, &width, &height, &bands, &fmt ) ) { vips_free( d ); return( -1 ); } vips_image_init_fields( out, width, height, bands, fmt, VIPS_CODING_NONE, bands == 1 ? VIPS_INTERPRETATION_B_W : VIPS_INTERPRETATION_sRGB, 1.0, 1.0 ); attach_meta( out, d ); return( 0 ); } int vips__analyze_read( const char *filename, VipsImage *out ) { char header[FILENAME_MAX]; char image[FILENAME_MAX]; struct dsr *d; VipsImage *x = vips_image_new(); VipsImage **t = (VipsImage **) vips_object_local_array( VIPS_OBJECT( x ), 3 ); int width, height; int bands; VipsBandFormat fmt; generate_filenames( filename, header, image ); if( !(d = read_header( header )) ) { g_object_unref( x ); return( -1 ); } attach_meta( out, d ); #ifdef DEBUG print_dsr( d ); #endif /*DEBUG*/ if( get_vips_properties( d, &width, &height, &bands, &fmt ) || !(t[0] = vips_image_new_from_file_raw( image, width, height, bands * vips_format_sizeof( fmt ), 0 )) ) { g_object_unref( x ); return( -1 ); } if( vips_copy( t[0], &t[1], "bands", bands, "format", fmt, NULL ) || vips__byteswap_bool( t[1], &t[2], !vips_amiMSBfirst() ) || vips_image_write( t[2], out ) ) { g_object_unref( x ); return( -1 ); } g_object_unref( x ); return( 0 ); } vips-8.2.2/libvips/foreign/matrixload.c0000664000175000017500000001243212645526360015053 00000000000000/* load matrix from a file * * 5/12/11 * - from csvload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "csv.h" typedef struct _VipsForeignLoadMatrix { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadMatrix; typedef VipsForeignLoadClass VipsForeignLoadMatrixClass; G_DEFINE_TYPE( VipsForeignLoadMatrix, vips_foreign_load_matrix, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_matrix_get_flags_filename( const char *filename ) { return( 0 ); } static VipsForeignFlags vips_foreign_load_matrix_get_flags( VipsForeignLoad *load ) { VipsForeignLoadMatrix *matrix = (VipsForeignLoadMatrix *) load; return( vips_foreign_load_matrix_get_flags_filename( matrix->filename ) ); } static int vips_foreign_load_matrix_header( VipsForeignLoad *load ) { VipsForeignLoadMatrix *matrix = (VipsForeignLoadMatrix *) load; int width; int height; double scale; double offset; if( vips__matrix_read_header( matrix->filename, &width, &height, &scale, &offset ) ) return( -1 ); vips_image_init_fields( load->out, width, height, 1, VIPS_FORMAT_DOUBLE, VIPS_CODING_NONE, VIPS_INTERPRETATION_B_W, 1.0, 1.0 ); vips_image_set_double( load->out, "scale", scale ); vips_image_set_double( load->out, "offset", offset ); VIPS_SETSTR( load->out->filename, matrix->filename ); return( 0 ); } static int vips_foreign_load_matrix_load( VipsForeignLoad *load ) { VipsForeignLoadMatrix *matrix = (VipsForeignLoadMatrix *) load; VipsImage *out; if( !(out = vips__matrix_read( matrix->filename )) ) return( -1 ); if( vips_image_write( out, load->real ) ) { g_object_unref( out ); return( -1 ); } g_object_unref( out ); return( 0 ); } static void vips_foreign_load_matrix_class_init( VipsForeignLoadMatrixClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "matrixload"; object_class->description = _( "load matrix from file" ); foreign_class->suffs = vips__foreign_matrix_suffs; /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; load_class->is_a = vips__matrix_ismatrix; load_class->get_flags_filename = vips_foreign_load_matrix_get_flags_filename; load_class->get_flags = vips_foreign_load_matrix_get_flags; load_class->header = vips_foreign_load_matrix_header; load_class->load = vips_foreign_load_matrix_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMatrix, filename ), NULL ); } static void vips_foreign_load_matrix_init( VipsForeignLoadMatrix *matrix ) { } /** * vips_matrixload: * @filename: file to load * @out: output image * @...: %NULL-terminated list of optional named arguments * * Reads a matrix from a file. * * Matrix files have a simple format that's supposed to be easy to create with * a text editor or a spreadsheet. * * The first line has four numbers for width, height, scale and * offset (scale and offset may be omitted, in which case they default to 1.0 * and 0.0). Scale must be non-zero. Width and height must be positive * integers. The numbers are separated by any mixture of spaces, commas, * tabs and quotation marks ("). The scale and offset fields may be * floating-point, and must use '.' * as a decimal separator. * * Subsequent lines each hold one line of matrix data, with numbers again * separated by any mixture of spaces, commas, * tabs and quotation marks ("). The numbers may be floating-point, and must * use '.' * as a decimal separator. * * Extra characters at the ends of lines or at the end of the file are * ignored. * * See also: vips_csvload(). * * Returns: 0 on success, -1 on error. */ int vips_matrixload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "matrixload", ap, filename, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/jpegload.c0000664000175000017500000002135612645527015014477 00000000000000/* load jpeg from a file * * 24/11/11 * - wrap a class around the jpeg writer * 29/11/11 * - split to make load, load from buffer and load from file */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_JPEG #include #include #include #include #ifdef HAVE_EXIF #ifdef UNTAGGED_EXIF #include #include #include #include #else /*!UNTAGGED_EXIF*/ #include #include #include #include #endif /*UNTAGGED_EXIF*/ #endif /*HAVE_EXIF*/ #include #include #include #include "vipsjpeg.h" typedef struct _VipsForeignLoadJpeg { VipsForeignLoad parent_object; /* Shrink by this much during load. */ int shrink; /* Fail on first warning. */ gboolean fail; /* Autorotate using exif orientation tag. */ gboolean autorotate; } VipsForeignLoadJpeg; typedef VipsForeignLoadClass VipsForeignLoadJpegClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadJpeg, vips_foreign_load_jpeg, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_jpeg_get_flags( VipsForeignLoad *load ) { /* The jpeg reader supports sequential read. */ return( VIPS_FOREIGN_SEQUENTIAL ); } static int vips_foreign_load_jpeg_build( VipsObject *object ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) object; if( jpeg->shrink != 1 && jpeg->shrink != 2 && jpeg->shrink != 4 && jpeg->shrink != 8 ) { vips_error( "VipsFormatLoadJpeg", _( "bad shrink factor %d" ), jpeg->shrink ); return( -1 ); } if( VIPS_OBJECT_CLASS( vips_foreign_load_jpeg_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_jpeg_class_init( VipsForeignLoadJpegClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegload_base"; object_class->description = _( "load jpeg" ); object_class->build = vips_foreign_load_jpeg_build; load_class->get_flags = vips_foreign_load_jpeg_get_flags; VIPS_ARG_INT( class, "shrink", 10, _( "Shrink" ), _( "Shrink factor on load" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpeg, shrink ), 1, 16, 1 ); VIPS_ARG_BOOL( class, "fail", 11, _( "Fail" ), _( "Fail on first warning" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpeg, fail ), FALSE ); VIPS_ARG_BOOL( class, "autorotate", 12, _( "Autorotate" ), _( "Rotate image using exif orientation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpeg, autorotate ), FALSE ); } static void vips_foreign_load_jpeg_init( VipsForeignLoadJpeg *jpeg ) { jpeg->shrink = 1; } typedef struct _VipsForeignLoadJpegFile { VipsForeignLoadJpeg parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadJpegFile; typedef VipsForeignLoadJpegClass VipsForeignLoadJpegFileClass; G_DEFINE_TYPE( VipsForeignLoadJpegFile, vips_foreign_load_jpeg_file, vips_foreign_load_jpeg_get_type() ); static VipsForeignFlags vips_foreign_load_jpeg_file_get_flags_filename( const char *filename ) { /* The jpeg reader supports sequential read. */ return( VIPS_FOREIGN_SEQUENTIAL ); } static gboolean vips_foreign_load_jpeg_file_is_a( const char *filename ) { return( vips__isjpeg( filename ) ); } static int vips_foreign_load_jpeg_file_header( VipsForeignLoad *load ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) load; VipsForeignLoadJpegFile *file = (VipsForeignLoadJpegFile *) load; if( vips__jpeg_read_file( file->filename, load->out, TRUE, jpeg->shrink, jpeg->fail, FALSE, jpeg->autorotate ) ) return( -1 ); VIPS_SETSTR( load->out->filename, file->filename ); return( 0 ); } static int vips_foreign_load_jpeg_file_load( VipsForeignLoad *load ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) load; VipsForeignLoadJpegFile *file = (VipsForeignLoadJpegFile *) load; if( vips__jpeg_read_file( file->filename, load->real, FALSE, jpeg->shrink, jpeg->fail, load->access == VIPS_ACCESS_SEQUENTIAL, jpeg->autorotate ) ) return( -1 ); return( 0 ); } static const char *jpeg_suffs[] = { ".jpg", ".jpeg", ".jpe", NULL }; static void vips_foreign_load_jpeg_file_class_init( VipsForeignLoadJpegFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegload"; object_class->description = _( "load jpeg from file" ); foreign_class->suffs = jpeg_suffs; /* We are fast at is_a(), so high priority. */ foreign_class->priority = 200; load_class->get_flags_filename = vips_foreign_load_jpeg_file_get_flags_filename; load_class->is_a = vips_foreign_load_jpeg_file_is_a; load_class->header = vips_foreign_load_jpeg_file_header; load_class->load = vips_foreign_load_jpeg_file_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpegFile, filename ), NULL ); } static void vips_foreign_load_jpeg_file_init( VipsForeignLoadJpegFile *file ) { } typedef struct _VipsForeignLoadJpegBuffer { VipsForeignLoadJpeg parent_object; /* Load from a buffer. */ VipsArea *buf; } VipsForeignLoadJpegBuffer; typedef VipsForeignLoadJpegClass VipsForeignLoadJpegBufferClass; G_DEFINE_TYPE( VipsForeignLoadJpegBuffer, vips_foreign_load_jpeg_buffer, vips_foreign_load_jpeg_get_type() ); static int vips_foreign_load_jpeg_buffer_header( VipsForeignLoad *load ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) load; VipsForeignLoadJpegBuffer *buffer = (VipsForeignLoadJpegBuffer *) load; if( vips__jpeg_read_buffer( buffer->buf->data, buffer->buf->length, load->out, TRUE, jpeg->shrink, jpeg->fail, FALSE, jpeg->autorotate ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_jpeg_buffer_load( VipsForeignLoad *load ) { VipsForeignLoadJpeg *jpeg = (VipsForeignLoadJpeg *) load; VipsForeignLoadJpegBuffer *buffer = (VipsForeignLoadJpegBuffer *) load; if( vips__jpeg_read_buffer( buffer->buf->data, buffer->buf->length, load->real, FALSE, jpeg->shrink, jpeg->fail, load->access == VIPS_ACCESS_SEQUENTIAL, jpeg->autorotate ) ) return( -1 ); return( 0 ); } static gboolean vips_foreign_load_jpeg_buffer_is_a( const void *buf, size_t len ) { return( vips__isjpeg_buffer( buf, len ) ); } static void vips_foreign_load_jpeg_buffer_class_init( VipsForeignLoadJpegBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "jpegload_buffer"; object_class->description = _( "load jpeg from buffer" ); load_class->is_a_buffer = vips_foreign_load_jpeg_buffer_is_a; load_class->header = vips_foreign_load_jpeg_buffer_header; load_class->load = vips_foreign_load_jpeg_buffer_load; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadJpegBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_jpeg_buffer_init( VipsForeignLoadJpegBuffer *buffer ) { } #endif /*HAVE_JPEG*/ vips-8.2.2/libvips/foreign/vipspng.h0000664000175000017500000000360512620616171014375 00000000000000/* common defs for png read/write */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PNG_H #define VIPS_PNG_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips__png_header( const char *name, VipsImage *out ); int vips__png_read( const char *name, VipsImage *out, gboolean readbehind ); gboolean vips__png_ispng_buffer( const void *buf, size_t len ); int vips__png_ispng( const char *filename ); gboolean vips__png_isinterlaced( const char *filename ); extern const char *vips__png_suffs[]; int vips__png_read_buffer( const void *buffer, size_t length, VipsImage *out, gboolean readbehind ); int vips__png_header_buffer( const void *buffer, size_t length, VipsImage *out ); int vips__png_write( VipsImage *in, const char *filename, int compress, int interlace, const char *profile, VipsForeignPngFilter filter ); int vips__png_write_buf( VipsImage *in, void **obuf, size_t *olen, int compression, int interlace, const char *profile, VipsForeignPngFilter filter ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PNG_H*/ vips-8.2.2/libvips/foreign/analyzeload.c0000664000175000017500000001045312645526502015211 00000000000000/* load analyze from a file * * 5/12/11 * - from openslideload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "analyze2vips.h" typedef struct _VipsForeignLoadAnalyze { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadAnalyze; typedef VipsForeignLoadClass VipsForeignLoadAnalyzeClass; G_DEFINE_TYPE( VipsForeignLoadAnalyze, vips_foreign_load_analyze, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_analyze_get_flags_filename( const char *filename ) { return( VIPS_FOREIGN_PARTIAL ); } static VipsForeignFlags vips_foreign_load_analyze_get_flags( VipsForeignLoad *load ) { return( VIPS_FOREIGN_PARTIAL ); } static int vips_foreign_load_analyze_header( VipsForeignLoad *load ) { VipsForeignLoadAnalyze *analyze = (VipsForeignLoadAnalyze *) load; if( vips__analyze_read_header( analyze->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, analyze->filename ); return( 0 ); } static int vips_foreign_load_analyze_load( VipsForeignLoad *load ) { VipsForeignLoadAnalyze *analyze = (VipsForeignLoadAnalyze *) load; if( vips__analyze_read( analyze->filename, load->real ) ) return( -1 ); return( 0 ); } static const char *vips_foreign_analyze_suffs[] = { ".img", ".hdr", NULL }; static void vips_foreign_load_analyze_class_init( VipsForeignLoadAnalyzeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "analyzeload"; object_class->description = _( "load an Analyze6 image" ); foreign_class->suffs = vips_foreign_analyze_suffs; /* is_a() is not that quick ... lower the priority. */ foreign_class->priority = -50; load_class->is_a = vips__isanalyze; load_class->get_flags_filename = vips_foreign_load_analyze_get_flags_filename; load_class->get_flags = vips_foreign_load_analyze_get_flags; load_class->header = vips_foreign_load_analyze_header; load_class->load = vips_foreign_load_analyze_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadAnalyze, filename ), NULL ); } static void vips_foreign_load_analyze_init( VipsForeignLoadAnalyze *analyze ) { } /** * vips_analyzeload: * @filename: file to load * @out: decompressed image * @...: %NULL-terminated list of optional named arguments * * Load an Analyze 6.0 file. If @filename is "fred.img", this will look for * an image header called "fred.hdr" and pixel data in "fred.img". You can * also load "fred" or "fred.hdr". * * Images are * loaded lazilly and byte-swapped, if necessary. The Analyze metadata is read * and attached. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, -1 on error. */ int vips_analyzeload( const char *filename, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "analyzeload", ap, filename, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/foreign/vips2tiff.c0000664000175000017500000012000312651663124014612 00000000000000/* TIFF PARTS: * Copyright (c) 1988, 1990 by Sam Leffler. * All rights reserved. * * This file is provided for unrestricted use provided that this * legend is included on all tape media and as a part of the * software program in whole or part. Users may copy, modify or * distribute this file at will. * * MODIFICATION FOR VIPS Copyright 1991, K.Martinez * * software may be distributed FREE, with these copyright notices * no responsibility/warantee is implied or given * * * Modified and added im_LabQ2LabC() function. It can write IM_TYPE_LABQ image * in vips format to LAB in tiff format. * Copyright 1994 Ahmed Abbood. * * 19/9/95 JC * - calls TIFFClose() more reliably * - tidied up * 12/4/97 JC * - thrown away and rewritten for TIFF 6 lib * 22/4/97 JC * - writes a pyramid! * - to separate TIFF files tho' * 23/4/97 JC * - does 2nd gather pass to put pyramid into a single TIFF file * - ... and shrinks IM_CODING_LABQ too * 26/10/98 JC * - binary open for stupid systems * 7/6/99 JC * - 16bit TIFF write too * 9/7/99 JC * - ZIP tiff added * 11/5/00 JC * - removed TIFFmalloc/TIFFfree * 5/8/00 JC * - mode string now part of filename * 23/4/01 JC * - HAVE_TIFF turns on TIFFness * 19/3/02 ruven * - pyramid stops at tile size, not 64x64 * 29/4/02 JC * - write any number of bands (but still with photometric RGB, so not * very useful) * 10/9/02 JC * - oops, handle TIFF errors better * - now writes CMYK correctly * 13/2/03 JC * - tries not to write mad resolutions * 7/5/03 JC * - only write CMYK if Type == CMYK * - writes EXTRASAMPLES ALPHA for bands == 2 or 4 (if we're writing RGB) * 17/11/03 JC * - write float too * 28/11/03 JC * - read via a "p" so we work from mmap window images * - uses threadgroups for speedup * 9/3/04 JC * - 1 bit write mode added * 5/4/04 * - better handling of edge tiles (thanks Ruven) * 18/5/04 Andrey Kiselev * - added res_inch/res_cm option * 20/5/04 JC * - allow single res number too * 19/7/04 * - write several scanlines at once, good speed up for some cases * 22/9/04 * - got rid of wrapper image so nip gets progress feedback * - fixed tiny read-beyond-buffer issue for edge tiles * 7/10/04 * - added ICC profile embedding * 13/12/04 * - can now pyramid any non-complex type (thanks Ruven) * 27/1/05 * - added ccittfax4 as a compression option * 9/3/05 * - set PHOTOMETRIC_CIELAB for vips TYPE_LAB images ... so we can write * float LAB as well as float RGB * - also LABS images * 22/6/05 * - 16 bit LAB write was broken * 9/9/05 * - write any icc profile from meta * 3/3/06 * - raise tile buffer limit (thanks Ruven) * 11/11/06 * - set ORIENTATION_TOPLEFT (thanks Josef) * 18/7/07 Andrey Kiselev * - remove "b" option on TIFFOpen() * - support TIFFTAG_PREDICTOR types for lzw and deflate compression * 3/11/07 * - use im_wbuffer() for background writes * 15/2/08 * - set TIFFTAG_JPEGQUALITY explicitly when we copy TIFF files, since * libtiff doesn't keep this in the header (thanks Joe) * 20/2/08 * - use tiff error handler from im_tiff2vips.c * 27/2/08 * - don't try to copy icc profiles when building pyramids (thanks Joe) * 9/4/08 * - use IM_META_RESOLUTION_UNIT to set default resunit * 17/4/08 * - allow CMYKA (thanks Doron) * 5/9/08 * - trigger eval callbacks during tile write * 4/2/10 * - gtkdoc * 26/2/10 * - option to turn on bigtiff output * 16/4/10 * - use vips_sink_*() instead of threadgroup and friends * 22/6/10 * - make no-owner regions for the tile cache, since we share these * between threads * 12/7/11 * - use im__temp_name() for intermediates rather than polluting the * output directory * 5/9/11 * - enable YCbCr compression for jpeg write * 23/11/11 * - set reduced-resolution subfile type on pyramid layers * 2/12/11 * - make into a simple function call ready to be wrapped as a new-style * VipsForeign class * 21/3/12 * - bump max layer buffer up * 2/6/12 * - copy jpeg pyramid in gather in RGB mode ... tiff4 doesn't do ycbcr * mode * 7/8/12 * - be more cautious enabling YCbCr mode * 24/9/13 * - support many more vips formats, eg. complex, 32-bit int, any number * of bands, etc., see the tiff loader * 26/1/14 * - add RGB as well as YCbCr write * 20/11/14 * - cache input in tile write mode to keep us sequential * 3/12/14 * - embed XMP in output * 10/12/14 * - zero out edge tile buffers before jpeg write, thanks iwbh15 * 19/1/15 * - disable chroma subsample if Q >= 90 * 13/2/15 * - append later layers, don't copy the base image * - use the nice dzsave pyramid code, much faster and simpler * - we now allow strip pyramids * 27/3/15 * - squash >128 rather than >0, nicer results for shrink * - add miniswhite option * 29/9/15 * - try to write IPCT metadata * - try to write photoshop metadata * 11/11/15 * - better alpha handling, thanks sadaqatullahn * 21/12/15 * - write TIFFTAG_IMAGEDESCRIPTION */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_TIFF #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #include "tiff.h" /* Max number of alpha channels we allow. */ #define MAX_ALPHA (64) typedef struct _Layer Layer; typedef struct _Write Write; /* A layer in the pyramid. */ struct _Layer { Write *write; /* Main write struct */ int width, height; /* Layer size */ int sub; /* Subsample factor for this layer */ char *lname; /* Name of this TIFF file */ TIFF *tif; /* TIFF file we write this layer to */ /* The image we build. We only keep a few scanlines of this around in * @strip. */ VipsImage *image; /* The y position of strip in image. */ int y; /* The next line we write to in strip. */ int write_y; VipsRegion *strip; /* The current strip of pixels */ VipsRegion *copy; /* Pixels we copy to the next strip */ Layer *below; /* The smaller layer below us */ Layer *above; /* The larger layer above */ }; /* A TIFF image in the process of being written. */ struct _Write { VipsImage *im; /* Original input image */ char *filename; /* Name we write to */ Layer *layer; /* Top of pyramid */ VipsPel *tbuf; /* TIFF output buffer */ int tls; /* Tile line size */ int compression; /* Compression type */ int jpqual; /* JPEG q-factor */ int predictor; /* Predictor value */ int tile; /* Tile or not */ int tilew, tileh; /* Tile size */ int pyramid; /* Write pyramid */ int onebit; /* Write as 1-bit TIFF */ int miniswhite; /* Write as 0 == white */ int resunit; /* Resolution unit (inches or cm) */ double xres; /* Resolution in X */ double yres; /* Resolution in Y */ char *icc_profile; /* Profile to embed */ int bigtiff; /* True for bigtiff write */ int rgbjpeg; /* True for RGB not YCbCr */ int properties; /* Set to save XML props */ }; /* Open TIFF for output. */ static TIFF * tiff_openout( Write *write, const char *name ) { TIFF *tif; const char *mode = write->bigtiff ? "w8" : "w"; #ifdef DEBUG printf( "TIFFOpen( \"%s\", \"%s\" )\n", name, mode ); #endif /*DEBUG*/ if( !(tif = TIFFOpen( name, mode )) ) { vips_error( "vips2tiff", _( "unable to open \"%s\" for output" ), name ); return( NULL ); } return( tif ); } /* Open TIFF for input. */ static TIFF * tiff_openin( const char *name ) { TIFF *tif; if( !(tif = TIFFOpen( name, "r" )) ) { vips_error( "vips2tiff", _( "unable to open \"%s\" for input" ), name ); return( NULL ); } return( tif ); } /* Round N down to P boundary. */ #define ROUND_DOWN(N,P) ((N) - ((N) % P)) /* Round N up to P boundary. */ #define ROUND_UP(N,P) (ROUND_DOWN( (N) + (P) - 1, (P) )) static Layer * pyramid_new( Write *write, Layer *above, int width, int height ) { Layer *layer; layer = VIPS_NEW( write->im, Layer ); layer->write = write; layer->width = width; layer->height = height; if( !above ) /* Top of pyramid. */ layer->sub = 1; else layer->sub = above->sub * 2; layer->lname = NULL; layer->tif = NULL; layer->image = NULL; layer->write_y = 0; layer->y = 0; layer->strip = NULL; layer->copy = NULL; layer->below = NULL; layer->above = above; if( write->pyramid ) if( layer->width > write->tilew || layer->height > write->tileh ) layer->below = pyramid_new( write, layer, width / 2, height / 2 ); /* The name for the top layer is the output filename. * * We need lname to be freed automatically: it has to stay * alive until after write_gather(). */ if( !above ) layer->lname = vips_strdup( VIPS_OBJECT( write->im ), write->filename ); else { char *lname; lname = vips__temp_name( "%s.tif" ); layer->lname = vips_strdup( VIPS_OBJECT( write->im ), lname ); g_free( lname ); } return( layer ); } /* Embed an ICC profile from a file. */ static int embed_profile_file( TIFF *tif, const char *profile ) { char *buffer; size_t length; if( !(buffer = vips__file_read_name( profile, VIPS_ICC_DIR, &length )) ) return( -1 ); TIFFSetField( tif, TIFFTAG_ICCPROFILE, length, buffer ); vips_free( buffer ); #ifdef DEBUG printf( "vips2tiff: attached profile \"%s\"\n", profile ); #endif /*DEBUG*/ return( 0 ); } /* Embed an ICC profile from VipsImage metadata. */ static int embed_profile_meta( TIFF *tif, VipsImage *im ) { void *data; size_t data_length; if( vips_image_get_blob( im, VIPS_META_ICC_NAME, &data, &data_length ) ) return( -1 ); TIFFSetField( tif, TIFFTAG_ICCPROFILE, data_length, data ); #ifdef DEBUG printf( "vips2tiff: attached profile from meta\n" ); #endif /*DEBUG*/ return( 0 ); } static int write_embed_profile( Write *write, TIFF *tif ) { if( write->icc_profile && strcmp( write->icc_profile, "none" ) != 0 && embed_profile_file( tif, write->icc_profile ) ) return( -1 ); if( !write->icc_profile && vips_image_get_typeof( write->im, VIPS_META_ICC_NAME ) && embed_profile_meta( tif, write->im ) ) return( -1 ); return( 0 ); } /* Embed any XMP metadata. */ static int write_embed_xmp( Write *write, TIFF *tif ) { void *data; size_t data_length; if( !vips_image_get_typeof( write->im, VIPS_META_XMP_NAME ) ) return( 0 ); if( vips_image_get_blob( write->im, VIPS_META_XMP_NAME, &data, &data_length ) ) return( -1 ); TIFFSetField( tif, TIFFTAG_XMLPACKET, data_length, data ); #ifdef DEBUG printf( "vips2tiff: attached XMP from meta\n" ); #endif /*DEBUG*/ return( 0 ); } /* Embed any IPCT metadata. */ static int write_embed_ipct( Write *write, TIFF *tif ) { void *data; size_t data_length; if( !vips_image_get_typeof( write->im, VIPS_META_IPCT_NAME ) ) return( 0 ); if( vips_image_get_blob( write->im, VIPS_META_IPCT_NAME, &data, &data_length ) ) return( -1 ); /* For no very good reason, libtiff stores IPCT as an array of * long, not byte. */ if( data_length & 3 ) { vips_warn( "vips2tiff", "%s", _( "rounding up IPCT data length" ) ); data_length /= 4; data_length += 1; } else data_length /= 4; TIFFSetField( tif, TIFFTAG_RICHTIFFIPTC, data_length, data ); #ifdef DEBUG printf( "vips2tiff: attached IPCT from meta\n" ); #endif /*DEBUG*/ return( 0 ); } /* Embed any XMP metadata. */ static int write_embed_photoshop( Write *write, TIFF *tif ) { void *data; size_t data_length; if( !vips_image_get_typeof( write->im, VIPS_META_PHOTOSHOP_NAME ) ) return( 0 ); if( vips_image_get_blob( write->im, VIPS_META_PHOTOSHOP_NAME, &data, &data_length ) ) return( -1 ); TIFFSetField( tif, TIFFTAG_PHOTOSHOP, data_length, data ); #ifdef DEBUG printf( "vips2tiff: attached photoshop data from meta\n" ); #endif /*DEBUG*/ return( 0 ); } /* Set IMAGEDESCRIPTION, if it's there. If @properties is TRUE, set from * vips' metadata. */ static int write_embed_imagedescription( Write *write, TIFF *tif ) { if( write->properties ) { char *doc; if( !(doc = vips__make_xml_metadata( "vips2tiff", write->im )) ) return( -1 ); TIFFSetField( tif, TIFFTAG_IMAGEDESCRIPTION, doc ); xmlFree( doc ); } else { const char *imagedescription; if( !vips_image_get_typeof( write->im, VIPS_META_IMAGEDESCRIPTION ) ) return( 0 ); if( vips_image_get_string( write->im, VIPS_META_IMAGEDESCRIPTION, &imagedescription ) ) return( -1 ); TIFFSetField( tif, TIFFTAG_IMAGEDESCRIPTION, imagedescription ); } #ifdef DEBUG printf( "vips2tiff: attached imagedescription from meta\n" ); #endif /*DEBUG*/ return( 0 ); } /* Write a TIFF header. width and height are the size of the VipsImage we are * writing (it may have been shrunk). */ static int write_tiff_header( Write *write, Layer *layer ) { TIFF *tif = layer->tif; int format; /* Output base header fields. */ TIFFSetField( tif, TIFFTAG_IMAGEWIDTH, layer->width ); TIFFSetField( tif, TIFFTAG_IMAGELENGTH, layer->height ); TIFFSetField( tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG ); TIFFSetField( tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT ); TIFFSetField( tif, TIFFTAG_COMPRESSION, write->compression ); if( write->compression == COMPRESSION_JPEG ) TIFFSetField( tif, TIFFTAG_JPEGQUALITY, write->jpqual ); if( write->predictor != VIPS_FOREIGN_TIFF_PREDICTOR_NONE ) TIFFSetField( tif, TIFFTAG_PREDICTOR, write->predictor ); /* Don't write mad resolutions (eg. zero), it confuses some programs. */ TIFFSetField( tif, TIFFTAG_RESOLUTIONUNIT, write->resunit ); TIFFSetField( tif, TIFFTAG_XRESOLUTION, VIPS_FCLIP( 0.01, write->xres, 1000000 ) ); TIFFSetField( tif, TIFFTAG_YRESOLUTION, VIPS_FCLIP( 0.01, write->yres, 1000000 ) ); if( write_embed_profile( write, tif ) || write_embed_xmp( write, tif ) || write_embed_ipct( write, tif ) || write_embed_photoshop( write, tif ) || write_embed_imagedescription( write, tif ) ) return( -1 ); /* And colour fields. */ if( write->im->Coding == VIPS_CODING_LABQ ) { TIFFSetField( tif, TIFFTAG_SAMPLESPERPIXEL, 3 ); TIFFSetField( tif, TIFFTAG_BITSPERSAMPLE, 8 ); TIFFSetField( tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_CIELAB ); } else if( write->onebit ) { TIFFSetField( tif, TIFFTAG_SAMPLESPERPIXEL, 1 ); TIFFSetField( tif, TIFFTAG_BITSPERSAMPLE, 1 ); TIFFSetField( tif, TIFFTAG_PHOTOMETRIC, write->miniswhite ? PHOTOMETRIC_MINISWHITE : PHOTOMETRIC_MINISBLACK ); } else { int photometric; /* Number of bands that have colour in .. other bands are saved * as alpha. */ int colour_bands; int alpha_bands; TIFFSetField( tif, TIFFTAG_SAMPLESPERPIXEL, write->im->Bands ); TIFFSetField( tif, TIFFTAG_BITSPERSAMPLE, vips_format_sizeof( write->im->BandFmt ) << 3 ); if( write->im->Bands < 3 ) { /* Mono or mono + alpha. */ photometric = write->miniswhite ? PHOTOMETRIC_MINISWHITE : PHOTOMETRIC_MINISBLACK; colour_bands = 1; } else { /* Could be: RGB, CMYK, LAB, perhaps with extra alpha. */ if( write->im->Type == VIPS_INTERPRETATION_LAB || write->im->Type == VIPS_INTERPRETATION_LABS ) { photometric = PHOTOMETRIC_CIELAB; colour_bands = 3; } else if( write->im->Type == VIPS_INTERPRETATION_CMYK && write->im->Bands >= 4 ) { photometric = PHOTOMETRIC_SEPARATED; TIFFSetField( tif, TIFFTAG_INKSET, INKSET_CMYK ); colour_bands = 4; } else if( write->compression == COMPRESSION_JPEG && write->im->Bands == 3 && write->im->BandFmt == VIPS_FORMAT_UCHAR && (!write->rgbjpeg && write->jpqual < 90) ) { /* This signals to libjpeg that it can do * YCbCr chrominance subsampling from RGB, not * that we will supply the image as YCbCr. */ photometric = PHOTOMETRIC_YCBCR; TIFFSetField( tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB ); colour_bands = 3; } else { /* Some kind of generic multi-band image .. * save the first three bands as RGB, the rest * as alpha. */ photometric = PHOTOMETRIC_RGB; colour_bands = 3; } } alpha_bands = VIPS_CLIP( 0, write->im->Bands - colour_bands, MAX_ALPHA ); if( alpha_bands > 0 ) { uint16 v[MAX_ALPHA]; int i; for( i = 0; i < alpha_bands; i++ ) v[i] = EXTRASAMPLE_ASSOCALPHA; TIFFSetField( tif, TIFFTAG_EXTRASAMPLES, alpha_bands, v ); } TIFFSetField( tif, TIFFTAG_PHOTOMETRIC, photometric ); } /* Layout. */ if( write->tile ) { TIFFSetField( tif, TIFFTAG_TILEWIDTH, write->tilew ); TIFFSetField( tif, TIFFTAG_TILELENGTH, write->tileh ); } else TIFFSetField( tif, TIFFTAG_ROWSPERSTRIP, write->tileh ); if( layer->above ) /* Pyramid layer. */ TIFFSetField( tif, TIFFTAG_SUBFILETYPE, FILETYPE_REDUCEDIMAGE ); /* Sample format. */ format = SAMPLEFORMAT_UINT; if( vips_band_format_isuint( write->im->BandFmt ) ) format = SAMPLEFORMAT_UINT; else if( vips_band_format_isint( write->im->BandFmt ) ) format = SAMPLEFORMAT_INT; else if( vips_band_format_isfloat( write->im->BandFmt ) ) format = SAMPLEFORMAT_IEEEFP; else if( vips_band_format_iscomplex( write->im->BandFmt ) ) format = SAMPLEFORMAT_COMPLEXIEEEFP; TIFFSetField( tif, TIFFTAG_SAMPLEFORMAT, format ); return( 0 ); } /* Walk the pyramid allocating resources. */ static int pyramid_fill( Write *write ) { Layer *layer; for( layer = write->layer; layer; layer = layer->below ) { VipsRect strip_size; layer->image = vips_image_new(); if( vips_image_pipelinev( layer->image, VIPS_DEMAND_STYLE_ANY, write->im, NULL ) ) return( -1 ); layer->image->Xsize = layer->width; layer->image->Ysize = layer->height; layer->strip = vips_region_new( layer->image ); layer->copy = vips_region_new( layer->image ); /* The regions will get used in the bg thread callback, so * make sure we don't own them. */ vips__region_no_ownership( layer->strip ); vips__region_no_ownership( layer->copy ); /* Build a line of tiles here. * * Expand the strip if necessary to make sure we have an even * number of lines. */ strip_size.left = 0; strip_size.top = 0; strip_size.width = layer->image->Xsize; strip_size.height = write->tileh; if( (strip_size.height & 1) == 1 ) strip_size.height += 1; if( vips_region_buffer( layer->strip, &strip_size ) ) return( -1 ); if( !(layer->tif = tiff_openout( write, layer->lname )) || write_tiff_header( write, layer ) ) return( -1 ); } return( 0 ); } /* Delete any temp files we wrote. */ static void write_delete_temps( Write *write ) { Layer *layer; /* Don't delete the top layer: that's the output file. */ if( write->layer && write->layer->below ) for( layer = write->layer->below; layer; layer = layer->below ) if( layer->lname ) { #ifndef DEBUG unlink( layer->lname ); #else printf( "write_delete_temps: leaving %s\n", layer->lname ); #endif /*DEBUG*/ layer->lname = NULL; } } /* Free a single pyramid layer. */ static void layer_free( Layer *layer ) { VIPS_UNREF( layer->strip ); VIPS_UNREF( layer->copy ); VIPS_UNREF( layer->image ); VIPS_FREEF( TIFFClose, layer->tif ); } /* Free an entire pyramid. */ static void pyramid_free( Layer *layer ) { if( layer->below ) pyramid_free( layer->below ); layer_free( layer ); } /* Free a Write. */ static void write_free( Write *write ) { write_delete_temps( write ); VIPS_FREEF( vips_free, write->tbuf ); VIPS_FREEF( pyramid_free, write->layer ); VIPS_FREEF( vips_free, write->icc_profile ); } static int get_compression( VipsForeignTiffCompression compression ) { switch( compression ) { case VIPS_FOREIGN_TIFF_COMPRESSION_NONE: return( COMPRESSION_NONE ); case VIPS_FOREIGN_TIFF_COMPRESSION_JPEG: return( COMPRESSION_JPEG ); case VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE: return( COMPRESSION_ADOBE_DEFLATE ); case VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS: return( COMPRESSION_PACKBITS ); case VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4: return( COMPRESSION_CCITTFAX4 ); case VIPS_FOREIGN_TIFF_COMPRESSION_LZW: return( COMPRESSION_LZW ); default: g_assert_not_reached(); } /* Keep -Wall happy. */ return( -1 ); } static int get_resunit( VipsForeignTiffResunit resunit ) { switch( resunit ) { case VIPS_FOREIGN_TIFF_RESUNIT_CM: return( RESUNIT_CENTIMETER ); case VIPS_FOREIGN_TIFF_RESUNIT_INCH: return( RESUNIT_INCH ); default: g_assert_not_reached(); } /* Keep -Wall happy. */ return( -1 ); } /* Make and init a Write. */ static Write * write_new( VipsImage *im, const char *filename, VipsForeignTiffCompression compression, int Q, VipsForeignTiffPredictor predictor, char *profile, gboolean tile, int tile_width, int tile_height, gboolean pyramid, gboolean squash, gboolean miniswhite, VipsForeignTiffResunit resunit, double xres, double yres, gboolean bigtiff, gboolean rgbjpeg, gboolean properties ) { Write *write; if( !(write = VIPS_NEW( im, Write )) ) return( NULL ); write->im = im; write->filename = vips_strdup( VIPS_OBJECT( im ), filename ); write->layer = NULL; write->tbuf = NULL; write->compression = get_compression( compression ); write->jpqual = Q; write->predictor = predictor; write->tile = tile; write->tilew = tile_width; write->tileh = tile_height; write->pyramid = pyramid; write->onebit = squash; write->miniswhite = miniswhite; write->icc_profile = vips_strdup( NULL, profile ); write->bigtiff = bigtiff; write->rgbjpeg = rgbjpeg; write->properties = properties; write->resunit = get_resunit( resunit ); write->xres = xres; write->yres = yres; /* In strip mode we use tileh to set rowsperstrip, and that does not * have the multiple-of-16 restriction. */ if( tile ) { if( (write->tilew & 0xf) != 0 || (write->tileh & 0xf) != 0 ) { vips_error( "vips2tiff", "%s", _( "tile size not a multiple of 16" ) ); return( NULL ); } } /* We can only pyramid LABQ and non-complex images. */ if( write->pyramid ) { if( im->Coding == VIPS_CODING_NONE && vips_band_format_iscomplex( im->BandFmt ) ) { vips_error( "vips2tiff", "%s", _( "can only pyramid LABQ and " "non-complex images" ) ); return( NULL ); } } /* Only 1-bit-ize 8 bit mono images. */ if( write->onebit && (im->Coding != VIPS_CODING_NONE || im->BandFmt != VIPS_FORMAT_UCHAR || im->Bands != 1) ) { vips_warn( "vips2tiff", "%s", _( "can only squash 1 band uchar images -- " "disabling squash" ) ); write->onebit = 0; } if( write->onebit && write->compression == COMPRESSION_JPEG ) { vips_warn( "vips2tiff", "%s", _( "can't have 1-bit JPEG -- disabling JPEG" ) ); write->compression = COMPRESSION_NONE; } /* We can only MINISWHITE non-complex images of 1 or 2 bands. */ if( write->miniswhite && (im->Coding != VIPS_CODING_NONE || vips_band_format_iscomplex( im->BandFmt ) || im->Bands > 2) ) { vips_warn( "vips2tiff", "%s", _( "can only save non-complex greyscale images " "as miniswhite -- disabling miniswhite" ) ); write->miniswhite = FALSE; } /* Sizeof a line of bytes in the TIFF tile. */ if( im->Coding == VIPS_CODING_LABQ ) write->tls = write->tilew * 3; else if( write->onebit ) write->tls = ROUND_UP( write->tilew, 8 ) / 8; else write->tls = VIPS_IMAGE_SIZEOF_PEL( im ) * write->tilew; /* Build the pyramid framework. */ write->layer = pyramid_new( write, NULL, im->Xsize, im->Ysize ); /* Fill all the layers. */ if( pyramid_fill( write ) ) { write_free( write ); return( NULL ); } if( tile ) write->tbuf = vips_malloc( NULL, TIFFTileSize( write->layer->tif ) ); else write->tbuf = vips_malloc( NULL, TIFFScanlineSize( write->layer->tif ) ); if( !write->tbuf ) { write_free( write ); return( NULL ); } return( write ); } /* Convert VIPS LabQ to TIFF LAB. Just take the first three bands. */ static void LabQ2LabC( VipsPel *q, VipsPel *p, int n ) { int x; for( x = 0; x < n; x++ ) { /* Get most significant 8 bits of lab. */ q[0] = p[0]; q[1] = p[1]; q[2] = p[2]; p += 4; q += 3; } } /* Pack 8 bit VIPS to 1 bit TIFF. */ static void eightbit2onebit( Write *write, VipsPel *q, VipsPel *p, int n ) { int x; VipsPel bits; /* Invert in miniswhite mode. */ int white = write->miniswhite ? 0 : 1; int black = white ^ 1; bits = 0; for( x = 0; x < n; x++ ) { bits <<= 1; if( p[x] > 128 ) bits |= white; else bits |= black; if( (x & 0x7) == 0x7 ) { *q++ = bits; bits = 0; } } /* Any left-over bits? Need to be left-aligned. */ if( (x & 0x7) != 0 ) *q++ = bits << (8 - (x & 0x7)); } /* Swap the sense of the first channel, if necessary. */ #define GREY_LOOP( TYPE, MAX ) { \ TYPE *p1; \ TYPE *q1; \ \ p1 = (TYPE *) p; \ q1 = (TYPE *) q; \ for( x = 0; x < n; x++ ) { \ if( invert ) \ q1[0] = MAX - p1[0]; \ else \ q1[0] = p1[0]; \ \ for( i = 1; i < im->Bands; i++ ) \ q1[i] = p1[i]; \ \ q1 += im->Bands; \ p1 += im->Bands; \ } \ } /* If we're writing a 1 or 2 band image as a greyscale and MINISWHITE, we need * to swap the sense of the first band. See tiff2vips.c, greyscale_line() for * the opposite conversion. */ static void invert_band0( Write *write, VipsPel *q, VipsPel *p, int n ) { VipsImage *im = write->im; gboolean invert = write->miniswhite; int x, i; switch( im->BandFmt ) { case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: GREY_LOOP( guchar, UCHAR_MAX ); break; case VIPS_FORMAT_SHORT: GREY_LOOP( gshort, SHRT_MAX ); break; case VIPS_FORMAT_USHORT: GREY_LOOP( gushort, USHRT_MAX ); break; case VIPS_FORMAT_INT: GREY_LOOP( gint, INT_MAX ); break; case VIPS_FORMAT_UINT: GREY_LOOP( guint, UINT_MAX ); break; case VIPS_FORMAT_FLOAT: GREY_LOOP( float, 1.0 ); break; case VIPS_FORMAT_DOUBLE: GREY_LOOP( double, 1.0 ); break; default: g_assert_not_reached(); } } /* Convert VIPS LABS to TIFF 16 bit LAB. */ static void LabS2Lab16( VipsPel *q, VipsPel *p, int n ) { int x; short *p1 = (short *) p; unsigned short *q1 = (unsigned short *) q; for( x = 0; x < n; x++ ) { /* TIFF uses unsigned 16 bit ... move zero, scale up L. */ q1[0] = (int) p1[0] << 1; q1[1] = p1[1]; q1[2] = p1[2]; p1 += 3; q1 += 3; } } /* Pack the pixels in @area from @in into a TIFF tile buffer. */ static void pack2tiff( Write *write, Layer *layer, VipsRegion *in, VipsRect *area, VipsPel *q ) { int y; /* JPEG compression can read outside the pixel area for edge tiles. It * always compresses 8x8 blocks, so if the image width or height is * not a multiple of 8, it can look beyond the pixels we will write. * * Black out the tile first to make sure these edge pixels are always * zero. */ if( write->compression == COMPRESSION_JPEG && (area->width < write->tilew || area->height < write->tileh) ) memset( q, 0, TIFFTileSize( layer->tif ) ); for( y = area->top; y < VIPS_RECT_BOTTOM( area ); y++ ) { VipsPel *p = (VipsPel *) VIPS_REGION_ADDR( in, area->left, y ); if( write->im->Coding == VIPS_CODING_LABQ ) LabQ2LabC( q, p, area->width ); else if( write->onebit ) eightbit2onebit( write, q, p, area->width ); else if( (in->im->Bands == 1 || in->im->Bands == 2) && write->miniswhite ) invert_band0( write, q, p, area->width ); else if( write->im->BandFmt == VIPS_FORMAT_SHORT && write->im->Type == VIPS_INTERPRETATION_LABS ) LabS2Lab16( q, p, area->width ); else memcpy( q, p, area->width * VIPS_IMAGE_SIZEOF_PEL( write->im ) ); q += write->tls; } } /* Write a set of tiles across the strip. */ static int layer_write_tile( Write *write, Layer *layer, VipsRegion *strip ) { VipsImage *im = layer->image; VipsRect *area = &strip->valid; VipsRect image; int x; image.left = 0; image.top = 0; image.width = im->Xsize; image.height = im->Ysize; for( x = 0; x < im->Xsize; x += write->tilew ) { VipsRect tile; tile.left = x; tile.top = area->top; tile.width = write->tilew; tile.height = write->tileh; vips_rect_intersectrect( &tile, &image, &tile ); /* Have to repack pixels. */ pack2tiff( write, layer, strip, &tile, write->tbuf ); #ifdef DEBUG_VERBOSE printf( "Writing %dx%d tile at position %dx%d to image %s\n", tile.width, tile.height, tile.left, tile.top, TIFFFileName( layer->tif ) ); #endif /*DEBUG_VERBOSE*/ if( TIFFWriteTile( layer->tif, write->tbuf, tile.left, tile.top, 0, 0 ) < 0 ) { vips_error( "vips2tiff", "%s", _( "TIFF write tile failed" ) ); return( -1 ); } } return( 0 ); } /* Write tileh scanlines, less for the last strip. */ static int layer_write_strip( Write *write, Layer *layer, VipsRegion *strip ) { VipsImage *im = layer->image; VipsRect *area = &strip->valid; int height = VIPS_MIN( write->tileh, area->height ); int y; #ifdef DEBUG_VERBOSE printf( "Writing %d pixel strip at height %d to image %s\n", height, area->top, TIFFFileName( layer->tif ) ); #endif /*DEBUG_VERBOSE*/ for( y = 0; y < height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( strip, 0, area->top + y ); /* Any repacking necessary. */ if( im->Coding == VIPS_CODING_LABQ ) { LabQ2LabC( write->tbuf, p, im->Xsize ); p = write->tbuf; } else if( im->BandFmt == VIPS_FORMAT_SHORT && im->Type == VIPS_INTERPRETATION_LABS ) { LabS2Lab16( write->tbuf, p, im->Xsize ); p = write->tbuf; } else if( write->onebit ) { eightbit2onebit( write, write->tbuf, p, im->Xsize ); p = write->tbuf; } else if( (im->Bands == 1 || im->Bands == 2) && write->miniswhite ) { invert_band0( write, write->tbuf, p, im->Xsize ); p = write->tbuf; } if( TIFFWriteScanline( layer->tif, p, area->top + y, 0 ) < 0 ) return( -1 ); } return( 0 ); } static int layer_strip_arrived( Layer *layer ); /* Shrink what pixels we can from this strip into the layer below. If the * strip below fills, recurse. */ static int layer_strip_shrink( Layer *layer ) { Layer *below = layer->below; VipsRegion *from = layer->strip; VipsRegion *to = below->strip; VipsRect target; VipsRect source; /* Our pixels might cross a strip boundary in the layer below, so we * have to write repeatedly until we run out of pixels. */ for(;;) { /* The pixels the layer below needs. */ target.left = 0; target.top = below->write_y; target.width = below->image->Xsize; target.height = to->valid.height; vips_rect_intersectrect( &target, &to->valid, &target ); /* Those pixels need this area of this layer. */ source.left = target.left * 2; source.top = target.top * 2; source.width = target.width * 2; source.height = target.height * 2; /* Of which we have these available. */ vips_rect_intersectrect( &source, &from->valid, &source ); /* So these are the pixels in the layer below we can provide. */ target.left = source.left / 2; target.top = source.top / 2; target.width = source.width / 2; target.height = source.height / 2; /* None? All done. */ if( vips_rect_isempty( &target ) ) break; (void) vips_region_shrink( from, to, &target ); below->write_y += target.height; /* If we've filled the strip below, let it know. * We can either fill the region, if it's somewhere half-way * down the image, or, if it's at the bottom, get to the last * real line of pixels. */ if( below->write_y == VIPS_RECT_BOTTOM( &to->valid ) || below->write_y == below->height ) { if( layer_strip_arrived( below ) ) return( -1 ); } } return( 0 ); } /* A new strip has arrived! The strip has at least enough pixels in to * write a line of tiles or a set of scanlines. * * - write a line of tiles / set of scanlines * - shrink what we can to the layer below * - move our strip down by the tile height * - copy the overlap with the previous strip */ static int layer_strip_arrived( Layer *layer ) { Write *write = layer->write; int result; VipsRect new_strip; VipsRect overlap; VipsRect image_area; if( write->tile ) result = layer_write_tile( write, layer, layer->strip ); else result = layer_write_strip( write, layer, layer->strip ); if( result ) return( -1 ); if( layer->below && layer_strip_shrink( layer ) ) return( -1 ); /* Position our strip down the image. * * Expand the strip if necessary to make sure we have an even * number of lines. */ layer->y += write->tileh; new_strip.left = 0; new_strip.top = layer->y; new_strip.width = layer->image->Xsize; new_strip.height = write->tileh; image_area.left = 0; image_area.top = 0; image_area.width = layer->image->Xsize; image_area.height = layer->image->Ysize; vips_rect_intersectrect( &new_strip, &image_area, &new_strip ); if( (new_strip.height & 1) == 1 ) new_strip.height += 1; /* What pixels that we will need do we already have? Save them in * overlap. */ vips_rect_intersectrect( &new_strip, &layer->strip->valid, &overlap ); if( !vips_rect_isempty( &overlap ) ) { if( vips_region_buffer( layer->copy, &overlap ) ) return( -1 ); vips_region_copy( layer->strip, layer->copy, &overlap, overlap.left, overlap.top ); } if( !vips_rect_isempty( &new_strip ) ) { if( vips_region_buffer( layer->strip, &new_strip ) ) return( -1 ); /* And copy back again. */ if( !vips_rect_isempty( &overlap ) ) vips_region_copy( layer->copy, layer->strip, &overlap, overlap.left, overlap.top ); } return( 0 ); } /* Another strip of image pixels from vips_sink_disc(). Write into the top * pyramid layer. */ static int write_strip( VipsRegion *region, VipsRect *area, void *a ) { Write *write = (Write *) a; Layer *layer = write->layer; #ifdef DEBUG printf( "write_strip: strip at %d, height %d\n", area->top, area->height ); #endif/*DEBUG*/ for(;;) { VipsRect *to = &layer->strip->valid; VipsRect target; /* The bit of strip that needs filling. */ target.left = 0; target.top = layer->write_y; target.width = layer->image->Xsize; target.height = to->height; vips_rect_intersectrect( &target, to, &target ); /* Clip against what we have available. */ vips_rect_intersectrect( &target, area, &target ); /* Are we empty? All done. */ if( vips_rect_isempty( &target ) ) break; /* And copy those pixels in. * * FIXME: If the strip fits inside the region we've just * received, we could skip the copy. Will this happen very * often? Unclear. */ vips_region_copy( region, layer->strip, &target, target.left, target.top ); layer->write_y += target.height; /* We can either fill the strip, if it's somewhere half-way * down the image, or, if it's at the bottom, get to the last * real line of pixels. */ if( layer->write_y == VIPS_RECT_BOTTOM( to ) || layer->write_y == layer->height ) { if( layer_strip_arrived( layer ) ) return( -1 ); } } return( 0 ); } /* Copy fields. */ #define CopyField( tag, v ) \ if( TIFFGetField( in, tag, &v ) ) TIFFSetField( out, tag, v ) /* Copy a TIFF file ... we know we wrote it, so just copy the tags we know * we might have set. */ static int write_copy_tiff( Write *write, TIFF *out, TIFF *in ) { uint32 i32; uint16 i16; float f; tdata_t buf; ttile_t tile; ttile_t n; /* All the fields we might have set. */ CopyField( TIFFTAG_IMAGEWIDTH, i32 ); CopyField( TIFFTAG_IMAGELENGTH, i32 ); CopyField( TIFFTAG_PLANARCONFIG, i16 ); CopyField( TIFFTAG_ORIENTATION, i16 ); CopyField( TIFFTAG_XRESOLUTION, f ); CopyField( TIFFTAG_YRESOLUTION, f ); CopyField( TIFFTAG_RESOLUTIONUNIT, i16 ); CopyField( TIFFTAG_COMPRESSION, i16 ); CopyField( TIFFTAG_SAMPLESPERPIXEL, i16 ); CopyField( TIFFTAG_BITSPERSAMPLE, i16 ); CopyField( TIFFTAG_PHOTOMETRIC, i16 ); CopyField( TIFFTAG_TILEWIDTH, i32 ); CopyField( TIFFTAG_TILELENGTH, i32 ); CopyField( TIFFTAG_ROWSPERSTRIP, i32 ); CopyField( TIFFTAG_SUBFILETYPE, i32 ); if( write->predictor != VIPS_FOREIGN_TIFF_PREDICTOR_NONE ) TIFFSetField( out, TIFFTAG_PREDICTOR, write->predictor ); /* TIFFTAG_JPEGQUALITY is a pesudo-tag, so we can't copy it. * Set explicitly from Write. */ if( write->compression == COMPRESSION_JPEG ) { TIFFSetField( out, TIFFTAG_JPEGQUALITY, write->jpqual ); /* Only for three-band, 8-bit images. */ if( write->im->Bands == 3 && write->im->BandFmt == VIPS_FORMAT_UCHAR ) { /* Enable rgb->ycbcr conversion in the jpeg write. */ if( !write->rgbjpeg && write->jpqual < 90 ) TIFFSetField( out, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB ); /* And we want ycbcr expanded to rgb on read. Otherwise * TIFFTileSize() will give us the size of a chrominance * subsampled tile. */ TIFFSetField( in, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB ); } } /* We can't copy profiles or xmp :( Set again from Write. */ if( write_embed_profile( write, out ) || write_embed_xmp( write, out ) || write_embed_ipct( write, out ) || write_embed_photoshop( write, out ) || write_embed_imagedescription( write, out ) ) return( -1 ); buf = vips_malloc( NULL, TIFFTileSize( in ) ); n = TIFFNumberOfTiles( in ); for( tile = 0; tile < n; tile++ ) { tsize_t len; /* It'd be good to use TIFFReadRawTile()/TIFFWriteRawTile() * here to save compression/decompression, but sadly it seems * not to work :-( investigate at some point. */ len = TIFFReadEncodedTile( in, tile, buf, -1 ); if( len < 0 || TIFFWriteEncodedTile( out, tile, buf, len ) < 0 ) { vips_free( buf ); return( -1 ); } } vips_free( buf ); return( 0 ); } /* Append all of the lower layers we wrote to the output. */ static int write_gather( Write *write ) { Layer *layer; if( write->layer && write->layer->below ) for( layer = write->layer->below; layer; layer = layer->below ) { TIFF *in; #ifdef DEBUG printf( "Appending layer %s ...\n", layer->lname ); #endif /*DEBUG*/ if( !(in = tiff_openin( layer->lname )) ) return( -1 ); if( write_copy_tiff( write, write->layer->tif, in ) ) { TIFFClose( in ); return( -1 ); } TIFFClose( in ); if( !TIFFWriteDirectory( write->layer->tif ) ) return( -1 ); } return( 0 ); } int vips__tiff_write( VipsImage *in, const char *filename, VipsForeignTiffCompression compression, int Q, VipsForeignTiffPredictor predictor, char *profile, gboolean tile, int tile_width, int tile_height, gboolean pyramid, gboolean squash, gboolean miniswhite, VipsForeignTiffResunit resunit, double xres, double yres, gboolean bigtiff, gboolean rgbjpeg, gboolean properties ) { Write *write; #ifdef DEBUG printf( "tiff2vips: libtiff version is \"%s\"\n", TIFFGetVersion() ); #endif /*DEBUG*/ vips__tiff_init(); if( vips_check_coding_known( "vips2tiff", in ) ) return( -1 ); /* Make output image. */ if( !(write = write_new( in, filename, compression, Q, predictor, profile, tile, tile_width, tile_height, pyramid, squash, miniswhite, resunit, xres, yres, bigtiff, rgbjpeg, properties )) ) return( -1 ); if( vips_sink_disc( write->im, write_strip, write ) ) { write_free( write ); return( -1 ); } if( !TIFFWriteDirectory( write->layer->tif ) ) return( -1 ); if( write->pyramid ) { /* Free lower pyramid resources ... this will TIFFClose() (but * not delete) the smaller layers ready for us to read from * them again. */ if( write->layer->below ) pyramid_free( write->layer->below ); /* Append smaller layers to the main file. */ if( write_gather( write ) ) { write_free( write ); return( -1 ); } } write_free( write ); return( 0 ); } #endif /*HAVE_TIFF*/ vips-8.2.2/libvips/foreign/matload.c0000664000175000017500000000710412530402247014316 00000000000000/* load matlab from a file * * 5/12/11 * - from tiffload.c * 3/7/13 * - lower priority to reduce segvs from Mat_Open() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_MATIO #include #include #include #include #include #include #include "matlab.h" typedef struct _VipsForeignLoadMat { VipsForeignLoad parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadMat; typedef VipsForeignLoadClass VipsForeignLoadMatClass; G_DEFINE_TYPE( VipsForeignLoadMat, vips_foreign_load_mat, VIPS_TYPE_FOREIGN_LOAD ); static VipsForeignFlags vips_foreign_load_mat_get_flags_filename( const char *filename ) { return( 0 ); } static VipsForeignFlags vips_foreign_load_mat_get_flags( VipsForeignLoad *load ) { VipsForeignLoadMat *mat = (VipsForeignLoadMat *) load; return( vips_foreign_load_mat_get_flags_filename( mat->filename ) ); } static int vips_foreign_load_mat_header( VipsForeignLoad *load ) { VipsForeignLoadMat *mat = (VipsForeignLoadMat *) load; if( vips__mat_header( mat->filename, load->out ) ) return( -1 ); VIPS_SETSTR( load->out->filename, mat->filename ); return( 0 ); } static int vips_foreign_load_mat_load( VipsForeignLoad *load ) { VipsForeignLoadMat *mat = (VipsForeignLoadMat *) load; if( vips__mat_load( mat->filename, load->real ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_mat_class_init( VipsForeignLoadMatClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "matload"; object_class->description = _( "load mat from file" ); foreign_class->suffs = vips__mat_suffs; /* We need to be lower priority than the jpeg loader, since some jpegs * can make libmatio segv on Mat_Open(). */ foreign_class->priority = -50; load_class->is_a = vips__mat_ismat; load_class->get_flags_filename = vips_foreign_load_mat_get_flags_filename; load_class->get_flags = vips_foreign_load_mat_get_flags; load_class->header = vips_foreign_load_mat_header; load_class->load = vips_foreign_load_mat_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadMat, filename ), NULL ); } static void vips_foreign_load_mat_init( VipsForeignLoadMat *mat ) { } #endif /*HAVE_MATIO*/ vips-8.2.2/libvips/foreign/vipsload.c0000664000175000017500000000711512645527140014527 00000000000000/* load vips from a file * * 24/11/11 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsForeignLoadVips { VipsForeignLoad parent_object; char *filename; } VipsForeignLoadVips; typedef VipsForeignLoadClass VipsForeignLoadVipsClass; G_DEFINE_TYPE( VipsForeignLoadVips, vips_foreign_load_vips, VIPS_TYPE_FOREIGN_LOAD ); static gboolean vips_foreign_load_vips_is_a( const char *filename ) { return( vips__file_magic( filename ) ); } static VipsForeignFlags vips_foreign_load_vips_get_flags_filename( const char *filename ) { VipsForeignFlags flags; flags = VIPS_FOREIGN_PARTIAL; if( vips__file_magic( filename ) == VIPS_MAGIC_SPARC ) flags |= VIPS_FOREIGN_BIGENDIAN; return( flags ); } static VipsForeignFlags vips_foreign_load_vips_get_flags( VipsForeignLoad *load ) { VipsForeignLoadVips *vips = (VipsForeignLoadVips *) load; return( vips_foreign_load_vips_get_flags_filename( vips->filename ) ); } static int vips_foreign_load_vips_header( VipsForeignLoad *load ) { VipsForeignLoadVips *vips = (VipsForeignLoadVips *) load; VipsImage *out; VipsImage *out2; if( !(out2 = vips_image_new_mode( vips->filename, "r" )) ) return( -1 ); /* Remove the @out that's there now. */ g_object_get( load, "out", &out, NULL ); g_object_unref( out ); g_object_unref( out ); g_object_set( load, "out", out2, NULL ); return( 0 ); } const char *vips__suffs[] = { ".v", ".vips", NULL }; static void vips_foreign_load_vips_class_init( VipsForeignLoadVipsClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "vipsload"; object_class->description = _( "load vips from file" ); foreign_class->suffs = vips__suffs; /* We are fast at is_a(), so high priority. */ foreign_class->priority = 200; load_class->is_a = vips_foreign_load_vips_is_a; load_class->get_flags = vips_foreign_load_vips_get_flags; load_class->get_flags_filename = vips_foreign_load_vips_get_flags_filename; load_class->header = vips_foreign_load_vips_header; load_class->load = NULL; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadVips, filename ), NULL ); } static void vips_foreign_load_vips_init( VipsForeignLoadVips *vips ) { } vips-8.2.2/libvips/foreign/tiffload.c0000664000175000017500000001620512645526736014510 00000000000000/* load tiff from a file * * 5/12/11 * - from tiffload.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #ifdef HAVE_TIFF #include #include #include #include #include #include #include "tiff.h" typedef struct _VipsForeignLoadTiff { VipsForeignLoad parent_object; /* Load this page. */ int page; } VipsForeignLoadTiff; typedef VipsForeignLoadClass VipsForeignLoadTiffClass; G_DEFINE_ABSTRACT_TYPE( VipsForeignLoadTiff, vips_foreign_load_tiff, VIPS_TYPE_FOREIGN_LOAD ); static void vips_foreign_load_tiff_class_init( VipsForeignLoadTiffClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; /* Other libraries may be using libtiff, we want to capture tiff * warning and error as soon as we can. * * This class init will be triggered during startup. */ vips__tiff_init(); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffload_base"; object_class->description = _( "load tiff" ); VIPS_ARG_INT( class, "page", 10, _( "Page" ), _( "Load this page from the image" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsForeignLoadTiff, page ), 0, 100000, 0 ); } static void vips_foreign_load_tiff_init( VipsForeignLoadTiff *tiff ) { tiff->page = 0; } typedef struct _VipsForeignLoadTiffFile { VipsForeignLoadTiff parent_object; /* Filename for load. */ char *filename; } VipsForeignLoadTiffFile; typedef VipsForeignLoadTiffClass VipsForeignLoadTiffFileClass; G_DEFINE_TYPE( VipsForeignLoadTiffFile, vips_foreign_load_tiff_file, vips_foreign_load_tiff_get_type() ); static VipsForeignFlags vips_foreign_load_tiff_file_get_flags_filename( const char *filename ) { VipsForeignFlags flags; flags = 0; if( vips__istifftiled( filename ) ) flags |= VIPS_FOREIGN_PARTIAL; else flags |= VIPS_FOREIGN_SEQUENTIAL; return( flags ); } static VipsForeignFlags vips_foreign_load_tiff_file_get_flags( VipsForeignLoad *load ) { VipsForeignLoadTiffFile *file = (VipsForeignLoadTiffFile *) load; return( vips_foreign_load_tiff_file_get_flags_filename( file->filename ) ); } static int vips_foreign_load_tiff_file_header( VipsForeignLoad *load ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) load; VipsForeignLoadTiffFile *file = (VipsForeignLoadTiffFile *) load; if( vips__tiff_read_header( file->filename, load->out, tiff->page ) ) return( -1 ); VIPS_SETSTR( load->out->filename, file->filename ); return( 0 ); } static int vips_foreign_load_tiff_file_load( VipsForeignLoad *load ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) load; VipsForeignLoadTiffFile *file = (VipsForeignLoadTiffFile *) load; if( vips__tiff_read( file->filename, load->real, tiff->page, load->access == VIPS_ACCESS_SEQUENTIAL ) ) return( -1 ); return( 0 ); } const char *vips__foreign_tiff_suffs[] = { ".tif", ".tiff", NULL }; static void vips_foreign_load_tiff_file_class_init( VipsForeignLoadTiffFileClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignClass *foreign_class = (VipsForeignClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffload"; object_class->description = _( "load tiff from file" ); /* We are fast, but must test after openslideload. */ foreign_class->priority = 50; foreign_class->suffs = vips__foreign_tiff_suffs; load_class->is_a = vips__istiff; load_class->get_flags_filename = vips_foreign_load_tiff_file_get_flags_filename; load_class->get_flags = vips_foreign_load_tiff_file_get_flags; load_class->header = vips_foreign_load_tiff_file_header; load_class->load = vips_foreign_load_tiff_file_load; VIPS_ARG_STRING( class, "filename", 1, _( "Filename" ), _( "Filename to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadTiffFile, filename ), NULL ); } static void vips_foreign_load_tiff_file_init( VipsForeignLoadTiffFile *file ) { } typedef struct _VipsForeignLoadTiffBuffer { VipsForeignLoadTiff parent_object; /* Load from a buffer. */ VipsArea *buf; } VipsForeignLoadTiffBuffer; typedef VipsForeignLoadTiffClass VipsForeignLoadTiffBufferClass; G_DEFINE_TYPE( VipsForeignLoadTiffBuffer, vips_foreign_load_tiff_buffer, vips_foreign_load_tiff_get_type() ); static int vips_foreign_load_tiff_buffer_header( VipsForeignLoad *load ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) load; VipsForeignLoadTiffBuffer *buffer = (VipsForeignLoadTiffBuffer *) load; if( vips__tiff_read_header_buffer( buffer->buf->data, buffer->buf->length, load->out, tiff->page ) ) return( -1 ); return( 0 ); } static int vips_foreign_load_tiff_buffer_load( VipsForeignLoad *load ) { VipsForeignLoadTiff *tiff = (VipsForeignLoadTiff *) load; VipsForeignLoadTiffBuffer *buffer = (VipsForeignLoadTiffBuffer *) load; if( vips__tiff_read_buffer( buffer->buf->data, buffer->buf->length, load->real, tiff->page, load->access == VIPS_ACCESS_SEQUENTIAL ) ) return( -1 ); return( 0 ); } static void vips_foreign_load_tiff_buffer_class_init( VipsForeignLoadTiffBufferClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; VipsForeignLoadClass *load_class = (VipsForeignLoadClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "tiffload_buffer"; object_class->description = _( "load tiff from buffer" ); load_class->is_a_buffer = vips__istiff_buffer; load_class->header = vips_foreign_load_tiff_buffer_header; load_class->load = vips_foreign_load_tiff_buffer_load; VIPS_ARG_BOXED( class, "buffer", 1, _( "Buffer" ), _( "Buffer to load from" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsForeignLoadTiffBuffer, buf ), VIPS_TYPE_BLOB ); } static void vips_foreign_load_tiff_buffer_init( VipsForeignLoadTiffBuffer *buffer ) { } #endif /*HAVE_TIFF*/ vips-8.2.2/libvips/morphology/0000775000175000017500000000000012651721506013363 500000000000000vips-8.2.2/libvips/morphology/morph.c0000664000175000017500000001340512651124032014566 00000000000000/* morphology * * 23/10/13 * - from vips_conv() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This is a simple wrapper over the old vips7 functions. At some point we * should rewrite this as a pure vips8 class and redo the vips7 functions as * wrappers over this. */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pmorphology.h" /** * VipsOperationMorphology: * @VIPS_OPERATION_MORPHOLOGY_ERODE: true if all set * @VIPS_OPERATION_MORPHOLOGY_DILATE: true if one set * * More like hit-miss, really. * * See also: vips_morph(). */ typedef struct { VipsMorphology parent_instance; VipsImage *out; VipsImage *mask; VipsOperationMorphology morph; /* @mask cast ready for processing. */ VipsImage *M; } VipsMorph; typedef VipsMorphologyClass VipsMorphClass; G_DEFINE_TYPE( VipsMorph, vips_morph, VIPS_TYPE_MORPHOLOGY ); static int vips_morph_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsMorphology *morphology = (VipsMorphology *) object; VipsMorph *morph = (VipsMorph *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); INTMASK *imsk; VipsImage *in; g_object_set( morph, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_morph_parent_class )->build( object ) ) return( -1 ); in = morphology->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_matrix( class->nickname, morph->mask, &t[1] ) ) return( -1 ); morph->M = t[1]; if( !(imsk = im_vips2imask( morph->M, class->nickname )) || !im_local_imask( morph->out, imsk ) ) return( -1 ); switch( morph->morph ) { case VIPS_OPERATION_MORPHOLOGY_DILATE: if( im_dilate( in, morph->out, imsk ) ) return( -1 ); break; case VIPS_OPERATION_MORPHOLOGY_ERODE: if( im_erode( in, morph->out, imsk ) ) return( -1 ); break; default: g_assert_not_reached(); } return( 0 ); } static void vips_morph_class_init( VipsMorphClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "morph"; object_class->description = _( "morphology operation" ); object_class->build = vips_morph_build; VIPS_ARG_IMAGE( class, "out", 10, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMorph, out ) ); VIPS_ARG_IMAGE( class, "mask", 20, _( "Mask" ), _( "Input matrix image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMorph, mask ) ); VIPS_ARG_ENUM( class, "morph", 103, _( "Morphology" ), _( "Morphological operation to perform" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMorph, morph ), VIPS_TYPE_OPERATION_MORPHOLOGY, VIPS_OPERATION_MORPHOLOGY_ERODE ); } static void vips_morph_init( VipsMorph *morph ) { morph->morph = VIPS_OPERATION_MORPHOLOGY_ERODE; } /** * vips_morph: * @in: input image * @out: output image * @mask: morphology with this mask * @morph: operation to perform * @...: %NULL-terminated list of optional named arguments * * Performs a morphological operation on @in using @mask as a * structuring element. * * The image should have 0 (black) for no object and 255 * (non-zero) for an object. Note that this is the reverse of the usual * convention for these operations, but more convenient when combined with the * boolean operators. The output image is the same * size as the input image: edge pxels are made by expanding the input image * as necessary. * * Mask coefficients can be either 0 (for object) or 255 (for background) * or 128 (for do not care). The origin of the mask is at location * (m.xsize / 2, m.ysize / 2), integer division. All algorithms have been * based on the book "Fundamentals of Digital Image Processing" by A. Jain, * pp 384-388, Prentice-Hall, 1989. * * For #VIPS_OPERATION_MORPHOLOGY_ERODE, * the whole mask must match for the output pixel to be * set, that is, the result is the logical AND of the selected input pixels. * * For #VIPS_OPERATION_MORPHOLOGY_DILATE, * the output pixel is set if any part of the mask * matches, that is, the result is the logical OR of the selected input pixels. * * See the boolean operations vips_andimage(), vips_orimage() and * vips_eorimage() * for analogues of the usual set difference and set union operations. * * Operations are performed using the processor's vector unit, * if possible. Disable this with --vips-novector or IM_NOVECTOR. * * Returns: 0 on success, -1 on error */ int vips_morph( VipsImage *in, VipsImage **out, VipsImage *mask, VipsOperationMorphology morph, ... ) { va_list ap; int result; va_start( ap, morph ); result = vips_call_split( "morph", ap, in, out, mask, morph ); va_end( ap ); return( result ); } vips-8.2.2/libvips/morphology/rank.c0000664000175000017500000003006412651124035014377 00000000000000/* Rank filter. * * Author: JC * Written on: 19/8/96 * Modified on: * JC 20/8/96 * - now uses insert-sort rather than bubble-sort * - now works for any non-complex type * JC 22/6/01 * - oops, sanity check on n wrong * JC 28/8/03 * - cleanups * - better selection algorithm ... same speed for 3x3, about 3x faster * for 5x5, faster still for larger windows * - index from zero for consistency with other parts of vips * 7/4/04 * - now uses im_embed() with edge stretching on the input, not * the output * - sets Xoffset / Yoffset * 7/10/04 * - oops, im_embed() size was wrong * 10/11/10 * - cleanups * - gtk-doc * 17/1/14 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pmorphology.h" typedef struct _VipsRank { VipsMorphology parent_instance; VipsImage *out; int width; int height; int index; int n; } VipsRank; typedef VipsMorphologyClass VipsRankClass; G_DEFINE_TYPE( VipsRank, vips_rank, VIPS_TYPE_MORPHOLOGY ); /* Sequence value: just the array we sort in. */ typedef struct { VipsRegion *ir; VipsPel *sort; } VipsRankSequence; static int vips_rank_stop( void *vseq, void *a, void *b ) { VipsRankSequence *seq = (VipsRankSequence *) vseq; VIPS_FREEF( g_object_unref, seq->ir ); return( 0 ); } static void * vips_rank_start( IMAGE *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsRank *rank = (VipsRank *) b; VipsRankSequence *seq; if( !(seq = VIPS_NEW( out, VipsRankSequence )) ) return( NULL ); seq->ir = NULL; seq->sort = NULL; seq->ir = vips_region_new( in ); if( !(seq->sort = VIPS_ARRAY( out, VIPS_IMAGE_SIZEOF_ELEMENT( in ) * rank->n, VipsPel )) ) { vips_rank_stop( seq, in, rank ); return( NULL ); } return( (void *) seq ); } /* Inner loop for select-sorting TYPE. */ #define LOOP_SELECT( TYPE ) { \ TYPE *q = (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top + y ); \ TYPE *p = (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); \ TYPE *sort = (TYPE *) seq->sort; \ TYPE a; \ \ for( x = 0; x < sz; x++ ) { \ TYPE *d = p + x; \ \ /* Copy window into sort[]. */ \ for( k = 0, j = 0; j < rank->height; j++ ) { \ for( i = 0; i < eaw; i += bands, k++ ) \ sort[k] = d[i]; \ d += ls; \ } \ \ /* Rearrange sort[] to make the index-th element the index-th * smallest, adapted from Numerical Recipes in C. */ \ lower = 0; /* Range we know the result lies in */ \ upper = rank->n - 1; \ for(;;) { \ if( upper - lower < 2 ) { \ /* 1 or 2 elements left. */ \ if( upper - lower == 1 && \ sort[lower] > sort[upper] ) \ VIPS_SWAP( TYPE, \ sort[lower], sort[upper] ); \ break; \ } \ else { \ /* Pick mid-point of remaining elements. */ \ mid = (lower + upper) >> 1; \ \ /* Sort lower/mid/upper elements, hold * midpoint in sort[lower + 1] for * partitioning. */ \ VIPS_SWAP( TYPE, sort[lower + 1], sort[mid] ); \ if( sort[lower] > sort[upper] ) \ VIPS_SWAP( TYPE, \ sort[lower], sort[upper] ); \ if( sort[lower + 1] > sort[upper] ) \ VIPS_SWAP( TYPE, \ sort[lower + 1], sort[upper] );\ if( sort[lower] > sort[lower + 1] ) \ VIPS_SWAP( TYPE, \ sort[lower], sort[lower + 1] );\ \ i = lower + 1; \ j = upper; \ a = sort[lower + 1]; \ \ for(;;) { \ /* Search for out of order elements. */ \ do \ i++; \ while( sort[i] < a ); \ do \ j--; \ while( sort[j] > a ); \ if( j < i ) \ break; \ VIPS_SWAP( TYPE, sort[i], sort[j] ); \ } \ \ /* Replace mid element. */ \ sort[lower + 1] = sort[j]; \ sort[j] = a; \ \ /* Move to partition with the kth element. */ \ if( j >= rank->index ) \ upper = j - 1; \ if( j <= rank->index ) \ lower = i; \ } \ } \ \ q[x] = sort[rank->index]; \ } \ } /* Loop for find max of window. */ #define LOOP_MAX( TYPE ) { \ TYPE *q = (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top + y ); \ TYPE *p = (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); \ \ for( x = 0; x < sz; x++ ) { \ TYPE *d = &p[x]; \ TYPE max; \ \ max = *d; \ for( j = 0; j < rank->height; j++ ) { \ TYPE *e = d; \ \ for( i = 0; i < rank->width; i++ ) { \ if( *e > max ) \ max = *e; \ \ e += bands; \ } \ \ d += ls; \ } \ \ q[x] = max; \ } \ } /* Loop for find min of window. */ #define LOOP_MIN( TYPE ) { \ TYPE *q = (TYPE *) VIPS_REGION_ADDR( or, r->left, r->top + y ); \ TYPE *p = (TYPE *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); \ \ for( x = 0; x < sz; x++ ) { \ TYPE *d = &p[x]; \ TYPE min; \ \ min = *d; \ for( j = 0; j < rank->height; j++ ) { \ TYPE *e = d; \ \ for( i = 0; i < rank->width; i++ ) { \ if( *e < min ) \ min = *e; \ \ e += bands; \ } \ \ d += ls; \ } \ \ q[x] = min; \ } \ } #define SWITCH( OPERATION ) \ switch( rank->out->BandFmt ) { \ case VIPS_FORMAT_UCHAR: OPERATION( unsigned char ); break; \ case VIPS_FORMAT_CHAR: OPERATION( signed char ); break; \ case VIPS_FORMAT_USHORT: OPERATION( unsigned short ); break; \ case VIPS_FORMAT_SHORT: OPERATION( signed short ); break; \ case VIPS_FORMAT_UINT: OPERATION( unsigned int ); break; \ case VIPS_FORMAT_INT: OPERATION( signed int ); break; \ case VIPS_FORMAT_FLOAT: OPERATION( float ); break; \ case VIPS_FORMAT_DOUBLE: OPERATION( double ); break; \ \ default: \ g_assert_not_reached(); \ } static int vips_rank_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsRankSequence *seq = (VipsRankSequence *) vseq; VipsRegion *ir = seq->ir; VipsImage *in = (VipsImage *) a; VipsRank *rank = (VipsRank *) b; int bands = in->Bands; int eaw = rank->width * bands; /* elements across window */ int sz = VIPS_REGION_N_ELEMENTS( or ); VipsRect s; int ls; int x, y; int i, j, k; int upper, lower, mid; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += rank->width - 1; s.height += rank->height - 1; if( vips_region_prepare( ir, &s ) ) return( -1 ); ls = VIPS_REGION_LSKIP( ir ) / VIPS_IMAGE_SIZEOF_ELEMENT( in ); for( y = 0; y < r->height; y++ ) { if( rank->index == 0 ) SWITCH( LOOP_MIN ) else if( rank->index == rank->n - 1 ) SWITCH( LOOP_MAX ) else SWITCH( LOOP_SELECT ) } return( 0 ); } static int vips_rank_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsMorphology *morphology = VIPS_MORPHOLOGY( object ); VipsRank *rank = (VipsRank *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_rank_parent_class )->build( object ) ) return( -1 ); in = morphology->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_noncomplex( class->nickname, in ) ) return( -1 ); if( rank->width > in->Xsize || rank->height > in->Ysize ) { vips_error( class->nickname, "%s", _( "window too large" ) ); return( -1 ); } rank->n = rank->width * rank->height; if( rank->index < 0 || rank->index > rank->n - 1 ) { vips_error( class->nickname, "%s", _( "index out of range" ) ); return( -1 ); } /* Expand the input. */ if( vips_embed( in, &t[1], rank->width / 2, rank->height / 2, in->Xsize + rank->width - 1, in->Ysize + rank->height - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[1]; g_object_set( object, "out", vips_image_new(), NULL ); /* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause * too many recalculations on overlaps. */ if( vips_image_pipelinev( rank->out, VIPS_DEMAND_STYLE_FATSTRIP, in, NULL ) ) return( -1 ); rank->out->Xsize -= rank->width - 1; rank->out->Ysize -= rank->height - 1; if( vips_image_generate( rank->out, vips_rank_start, vips_rank_generate, vips_rank_stop, in, rank ) ) return( -1 ); rank->out->Xoffset = 0; rank->out->Yoffset = 0; return( 0 ); } static void vips_rank_class_init( VipsRankClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "rank"; object_class->description = _( "rank filter" ); object_class->build = vips_rank_build; VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsRank, out ) ); VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Window width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRank, width ), 1, 100000, 11 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Window height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRank, height ), 1, 100000, 11 ); VIPS_ARG_INT( class, "index", 6, _( "index" ), _( "Select pixel at index" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsRank, index ), 1, 100000000, 50 ); } static void vips_rank_init( VipsRank *rank ) { rank->width = 11; rank->height = 11; rank->index = 50; } /** * vips_rank: * @in: input image * @out: output image * @width: width of region * @height: height of region * @index: select pixel * @...: %NULL-terminated list of optional named arguments * * vips_rank() does rank filtering on an image. A window of size @width by * @height is passed over the image. At each position, the pixels inside the * window are sorted into ascending order and the pixel at position @index is * output. @index numbers from 0. * * It works for any non-complex image type, with any number of bands. * The input is expanded by copying edge pixels before performing the * operation so that the output image has the same size as the input. * Edge pixels in the output image are therefore only approximate. * * For a median filter with mask size m (3 for 3x3, 5 for 5x5, etc.) use * * vips_rank( in, out, m, m, m * m / 2 ); * * The special cases n == 0 and n == m * m - 1 are useful dilate and * expand operators. * * See also: vips_conv(), vips_median(), vips_spcor(). * * Returns: 0 on success, -1 on error */ int vips_rank( VipsImage *in, VipsImage **out, int width, int height, int index, ... ) { va_list ap; int result; va_start( ap, index ); result = vips_call_split( "rank", ap, in, out, width, height, index ); va_end( ap ); return( result ); } /** * vips_median: * @in: input image * @out: output image * @size: size of region * @...: %NULL-terminated list of optional named arguments * * A convenience function equivalent to: * * vips_rank( in, out, size, size, (size * size) / 2 ); * * See also: vips_rank(). * * Returns: 0 on success, -1 on error */ int vips_median( VipsImage *in, VipsImage **out, int size, ... ) { va_list ap; int result; va_start( ap, size ); result = vips_call_split( "rank", ap, in, out, size, size, (size * size) / 2 ); va_end( ap ); return( result ); } vips-8.2.2/libvips/morphology/countlines.c0000664000175000017500000001113612651715703015636 00000000000000/* count lines * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : * * 19/9/95 JC * - tidied up * 23/10/10 * - gtk-doc * 17/1/14 * - redone as a class, now just a convenience function */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "pmorphology.h" typedef struct _VipsCountlines { VipsMorphology parent_instance; double nolines; VipsDirection direction; } VipsCountlines; typedef VipsMorphologyClass VipsCountlinesClass; G_DEFINE_TYPE( VipsCountlines, vips_countlines, VIPS_TYPE_MORPHOLOGY ); static int vips_countlines_build( VipsObject *object ) { VipsMorphology *morphology = VIPS_MORPHOLOGY( object ); VipsCountlines *countlines = (VipsCountlines *) object; VipsImage *in = morphology->in; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); double nolines; if( VIPS_OBJECT_CLASS( vips_countlines_parent_class )->build( object ) ) return( -1 ); /* Compiler warnings. */ nolines = 1; switch( countlines->direction ) { case VIPS_DIRECTION_HORIZONTAL: if( !(t[0] = vips_image_new_matrixv( 1, 2, -1.0, 1.0 )) || vips_moreeq_const1( in, &t[1], 128, NULL ) || vips_conv( t[1], &t[2], t[0], NULL ) || vips_project( t[2], &t[3], &t[4], NULL ) || vips_avg( t[3], &nolines, NULL ) ) return( -1 ); break; case VIPS_DIRECTION_VERTICAL: if( !(t[0] = vips_image_new_matrixv( 2, 1, -1.0, 1.0 )) || vips_moreeq_const1( in, &t[1], 128, NULL ) || vips_conv( t[1], &t[2], t[0], NULL ) || vips_project( t[2], &t[3], &t[4], NULL ) || vips_avg( t[4], &nolines, NULL ) ) return( -1 ); break; default: g_assert_not_reached(); } g_object_set( object, "nolines", nolines / 255.0, NULL ); return( 0 ); } static void vips_countlines_class_init( VipsCountlinesClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_countlines_class_init\n" ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "countlines"; vobject_class->description = _( "count lines in an image" ); vobject_class->build = vips_countlines_build; VIPS_ARG_DOUBLE( class, "nolines", 2, _( "Nolines" ), _( "Number of lines" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsCountlines, nolines ), 0, 10000000, 0.0 ); VIPS_ARG_ENUM( class, "direction", 3, _( "direction" ), _( "Countlines left-right or up-down" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsCountlines, direction ), VIPS_TYPE_DIRECTION, VIPS_DIRECTION_HORIZONTAL ); } static void vips_countlines_init( VipsCountlines *countlines ) { } /** * vips_countlines: * @in: input image * @nolines: output average number of lines * @direction: count lines horizontally or vertically * @...: %NULL-terminated list of optional named arguments * * Function which calculates the number of transitions * between black and white for the horizontal or the vertical * direction of an image. black<128 , white>=128 * The function calculates the number of transitions for all * Xsize or Ysize and returns the mean of the result * Input should be one band, 8-bit. * * See also: vips_morph(), vips_conv(). * * Returns: 0 on success, -1 on error. */ int vips_countlines( VipsImage *in, double *nolines, VipsDirection direction, ... ) { va_list ap; int result; va_start( ap, direction ); result = vips_call_split( "countlines", ap, in, nolines, direction ); va_end( ap ); return( result ); } vips-8.2.2/libvips/morphology/pmorphology.h0000664000175000017500000000400512530402247016024 00000000000000/* base class for all morphology operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PMORPHOLOGY_H #define VIPS_PMORPHOLOGY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_MORPHOLOGY (vips_morphology_get_type()) #define VIPS_MORPHOLOGY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_MORPHOLOGY, VipsMorphology )) #define VIPS_MORPHOLOGY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_MORPHOLOGY, VipsMorphologyClass)) #define VIPS_IS_MORPHOLOGY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_MORPHOLOGY )) #define VIPS_IS_MORPHOLOGY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_MORPHOLOGY )) #define VIPS_MORPHOLOGY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_MORPHOLOGY, VipsMorphologyClass )) typedef struct _VipsMorphology VipsMorphology; struct _VipsMorphology { VipsOperation parent_instance; VipsImage *in; }; typedef struct _VipsMorphologyClass { VipsOperationClass parent_class; } VipsMorphologyClass; GType vips_morphology_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PMORPHOLOGY_H*/ vips-8.2.2/libvips/morphology/labelregions.c0000664000175000017500000001100212530402247016101 00000000000000/* labelregions.c * * 5/11/09 * - renamed from im_segment() * 11/2/14 * - redo as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include "pmorphology.h" typedef struct _VipsLabelregions { VipsMorphology parent_instance; VipsImage *mask; int segments; } VipsLabelregions; typedef VipsMorphologyClass VipsLabelregionsClass; G_DEFINE_TYPE( VipsLabelregions, vips_labelregions, VIPS_TYPE_MORPHOLOGY ); static int vips_labelregions_build( VipsObject *object ) { VipsMorphology *morphology = VIPS_MORPHOLOGY( object ); VipsImage *in = morphology->in; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *mask; int segments; int *m; int x, y; if( VIPS_OBJECT_CLASS( vips_labelregions_parent_class )-> build( object ) ) return( -1 ); /* Create the zero mask image in memory. */ mask = vips_image_new_memory(); g_object_set( object, "mask", mask, NULL ); if( vips_black( &t[0], in->Xsize, in->Ysize, NULL ) || vips_cast( t[0], &t[1], VIPS_FORMAT_INT, NULL ) || vips_image_write( t[1], mask ) ) return( -1 ); segments = 1; m = (int *) mask->data; for( y = 0; y < mask->Ysize; y++ ) { for( x = 0; x < mask->Xsize; x++ ) { if( !m[x] ) { /* Use a direct path for speed. */ if( vips__draw_flood_direct( mask, in, segments, x, y ) ) return( -1 ); segments += 1; } } m += mask->Xsize; } g_object_set( object, "segments", segments, NULL ); return( 0 ); } static void vips_labelregions_class_init( VipsLabelregionsClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "labelregions"; vobject_class->description = _( "label regions in an image" ); vobject_class->build = vips_labelregions_build; VIPS_ARG_IMAGE( class, "mask", 2, _( "Mask" ), _( "Mask of region labels" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsLabelregions, mask ) ); VIPS_ARG_INT( class, "segments", 3, _( "Segments" ), _( "Number of discrete contigious regions" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsLabelregions, segments ), 0, 1000000000, 0 ); } static void vips_labelregions_init( VipsLabelregions *labelregions ) { } /** * vips_labelregions: * @in: image to test * @mask: write labelled regions here * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @segments: return number of regions found here * * Repeatedly scans @in for regions of 4-connected pixels * with the same pixel value. Every time a region is discovered, those * pixels are marked in @mask with a unique serial number. Once all pixels * have been labelled, the operation returns, setting @segments to the number * of discrete regions which were detected. * * @mask is always a 1-band #VIPS_FORMAT_INT image of the same dimensions as * @in. * * This operation is useful for, for example, blob counting. You can use the * morphological operators to detect and isolate a series of objects, then use * vips_labelregions() to number them all. * * Use vips_hist_find_indexed() to (for example) find blob coordinates. * * See also: vips_hist_find_indexed(). * * Returns: 0 on success, -1 on error. */ int vips_labelregions( VipsImage *in, VipsImage **mask, ... ) { va_list ap; int result; va_start( ap, mask ); result = vips_call_split( "labelregions", ap, in, mask ); va_end( ap ); return( result ); } vips-8.2.2/libvips/morphology/Makefile.am0000664000175000017500000000036612530402247015336 00000000000000noinst_LTLIBRARIES = libmorphology.la libmorphology_la_SOURCES = \ morphology.c \ pmorphology.h \ countlines.c \ rank.c \ hitmiss.c \ morph.c \ labelregions.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/morphology/Makefile.in0000664000175000017500000005314512651721157015362 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/morphology ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libmorphology_la_LIBADD = am_libmorphology_la_OBJECTS = morphology.lo countlines.lo rank.lo \ hitmiss.lo morph.lo labelregions.lo libmorphology_la_OBJECTS = $(am_libmorphology_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libmorphology_la_SOURCES) DIST_SOURCES = $(libmorphology_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libmorphology.la libmorphology_la_SOURCES = \ morphology.c \ pmorphology.h \ countlines.c \ rank.c \ hitmiss.c \ morph.c \ labelregions.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/morphology/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/morphology/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libmorphology.la: $(libmorphology_la_OBJECTS) $(libmorphology_la_DEPENDENCIES) $(EXTRA_libmorphology_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libmorphology_la_OBJECTS) $(libmorphology_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/countlines.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hitmiss.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/labelregions.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morphology.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rank.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/morphology/morphology.c0000664000175000017500000001037212530402247015643 00000000000000/* base class for all morphological operations * * properties: * - one input image */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "pmorphology.h" /** * SECTION: morphology * @short_description: morphological operators, rank filters and related image * analysis * @see_also: arithmetic * @stability: Stable * @include: vips/vips.h * * The morphological functions search images * for particular patterns of pixels, specified with the mask argument, * either adding or removing pixels when they find a match. They are useful * for cleaning up images --- for example, you might threshold an image, and * then use one of the morphological functions to remove all single isolated * pixels from the result. * * If you combine the morphological operators with the mask rotators * (vips_rot45(), for example) and apply them repeatedly, you * can achieve very complicated effects: you can thin, prune, fill, open edges, * close gaps, and many others. For example, see `Fundamentals of Digital * Image Processing' by A. Jain, pp 384-388, Prentice-Hall, 1989 for more * ideas. * * Beware that VIPS reverses the usual image processing convention, by * assuming white objects (non-zero pixels) on a black background (zero * pixels). * * The mask you give to the morphological functions should contain only the * values 0 (for background), 128 (for don't care) and 255 (for object). The * mask must have odd length sides --- the origin of the mask is taken to be * the centre value. For example, the mask: * * 3 3 * 128 255 128 * 255 0 255 * 128 255 128 * * applied to an image with vips_morph() #VIPS_OPERATION_MORPHOLOGY_ERODE, will * find all black pixels * 4-way connected with white pixels. Essentially, dilate * sets pixels in the output if any part of the mask matches, whereas * erode sets pixels only if all of the mask matches. * * See vips_andimage(), vips_orimage() and vips_eorimage() * for analogues of the usual set difference and set union operations. */ G_DEFINE_ABSTRACT_TYPE( VipsMorphology, vips_morphology, VIPS_TYPE_OPERATION ); static void vips_morphology_class_init( VipsMorphologyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "morphology"; vobject_class->description = _( "morphological operations" ); /* Inputs set by subclassess. */ VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMorphology, in ) ); } static void vips_morphology_init( VipsMorphology *morphology ) { } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_morphology_operation_init( void ) { extern int vips_morph_get_type( void ); extern int vips_rank_get_type( void ); extern int vips_countlines_get_type( void ); extern int vips_labelregions_get_type( void ); vips_morph_get_type(); vips_rank_get_type(); vips_countlines_get_type(); vips_labelregions_get_type(); } vips-8.2.2/libvips/morphology/hitmiss.c0000664000175000017500000004171612651124025015131 00000000000000/* morphological operators * * 19/9/95 JC * - rewritten * 6/7/99 JC * - small tidies * 7/4/04 * - now uses im_embed() with edge stretching on the input, not * the output * - sets Xoffset / Yoffset * 21/4/08 * - only rebuild the buffer offsets if bpl changes * - small cleanups * 25/10/10 * - start again from the Orc'd im_conv * 29/10/10 * - use VipsVector * - do erode as well * 7/11/10 * - gtk-doc * - do (!=0) to make uchar, if we're not given uchar * 28/6/13 * - oops, fix !=0 code */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* The two operators we implement. They are more hit-miss, really. */ typedef enum { ERODE, DILATE } MorphOp; /* We can't run more than this many passes. Larger than this and we * fall back to C. */ #define MAX_PASS (10) /* A pass with a vector. */ typedef struct { int first; /* The index of the first mask coff we use */ int last; /* The index of the last mask coff we use */ int r; /* Set previous result in this var */ /* The code we generate for this section of this mask. */ VipsVector *vector; } Pass; /* Our parameters. */ typedef struct { IMAGE *in; IMAGE *out; INTMASK *mask; /* Copy of mask arg */ MorphOp op; /* The passes we generate for this mask. */ int n_pass; Pass pass[MAX_PASS]; } Morph; static void pass_free( Morph *morph ) { int i; for( i = 0; i < morph->n_pass; i++ ) IM_FREEF( vips_vector_free, morph->pass[i].vector ); morph->n_pass = 0; } static int morph_close( Morph *morph ) { IM_FREEF( im_free_imask, morph->mask ); pass_free( morph ); return( 0 ); } #define TEMP( N, S ) vips_vector_temporary( v, N, S ) #define SCANLINE( N, P, S ) vips_vector_source_scanline( v, N, P, S ) #define CONST( N, V, S ) vips_vector_constant( v, N, V, S ) #define ASM2( OP, A, B ) vips_vector_asm2( v, OP, A, B ) #define ASM3( OP, A, B, C ) vips_vector_asm3( v, OP, A, B, C ) /* Generate code for a section of the mask. first is the index we start * at, we set last to the index of the last one we use before we run * out of intermediates / constants / parameters / sources or mask * coefficients. * * 0 for success, -1 on error. */ static int pass_compile_section( Pass *pass, Morph *morph, gboolean first_pass ) { INTMASK *mask = morph->mask; const int n_mask = mask->xsize * mask->ysize; VipsVector *v; char offset[256]; char source[256]; char zero[256]; char one[256]; int i; pass->vector = v = vips_vector_new( "morph", 1 ); /* The value we fetch from the image, the accumulated sum. */ TEMP( "value", 1 ); TEMP( "sum", 1 ); CONST( zero, 0, 1 ); CONST( one, 255, 1 ); /* Init the sum. If this is the first pass, it's a constant. If this * is a later pass, we have to init the sum from the result * of the previous pass. */ if( first_pass ) { if( morph->op == DILATE ) ASM2( "copyb", "sum", zero ); else ASM2( "copyb", "sum", one ); } else { /* "r" is the result of the previous pass. */ pass->r = vips_vector_source_name( v, "r", 1 ); ASM2( "loadb", "sum", "r" ); } for( i = pass->first; i < n_mask; i++ ) { int x = i % mask->xsize; int y = i / mask->xsize; /* Exclude don't-care elements. */ if( mask->coeff[i] == 128 ) continue; /* The source. sl0 is the first scanline in the mask. */ SCANLINE( source, y, 1 ); /* The offset, only for non-first-columns though. */ if( x > 0 ) { CONST( offset, morph->in->Bands * x, 1 ); ASM3( "loadoffb", "value", source, offset ); } else ASM2( "loadb", "value", source ); /* Join to our sum. If the mask element is zero, we have to * add an extra negate. */ if( morph->op == DILATE ) { if( !mask->coeff[i] ) ASM3( "xorb", "value", "value", one ); ASM3( "orb", "sum", "sum", "value" ); } else { if( !mask->coeff[i] ) { /* You'd think we could use andnb, but it * fails on some machines with some orc * versions :( */ ASM3( "xorb", "value", "value", one ); ASM3( "andb", "sum", "sum", "value" ); } else ASM3( "andb", "sum", "sum", "value" ); } if( vips_vector_full( v ) ) break; } pass->last = i; ASM2( "copyb", "d1", "sum" ); if( !vips_vector_compile( v ) ) return( -1 ); #ifdef DEBUG printf( "done matrix coeffs %d to %d\n", pass->first, pass->last ); vips_vector_print( v ); #endif /*DEBUG*/ return( 0 ); } /* Generate a set of passes. */ static int pass_compile( Morph *morph ) { INTMASK *mask = morph->mask; const int n_mask = mask->xsize * mask->ysize; int i; Pass *pass; #ifdef DEBUG printf( "morph: generating vector code\n" ); #endif /*DEBUG*/ /* Generate passes until we've used up the whole mask. */ for( i = 0;;) { /* Skip any don't-care coefficients at the start of the mask * region. */ for( ; i < n_mask && mask->coeff[i] == 128; i++ ) ; if( i == n_mask ) break; /* Allocate space for another pass. */ if( morph->n_pass == MAX_PASS ) return( -1 ); pass = &morph->pass[morph->n_pass]; morph->n_pass += 1; pass->first = i; pass->last = i; pass->r = -1; if( pass_compile_section( pass, morph, morph->n_pass == 1 ) ) return( -1 ); i = pass->last + 1; if( i >= n_mask ) break; } return( 0 ); } static Morph * morph_new( IMAGE *in, IMAGE *out, INTMASK *mask, MorphOp op ) { const int n_mask = mask->xsize * mask->ysize; Morph *morph; int i; /* If in is not uchar, do (!=0) to make a uchar image. */ if( in->BandFmt != IM_BANDFMT_UCHAR ) { IMAGE *t; if( !(t = im_open_local( out, "morph_new", "p" )) || im_notequalconst( in, t, 0 ) ) return( NULL ); in = t; } if( im_piocheck( in, out ) || im_check_uncoded( "morph", in ) || im_check_format( "morph", in, IM_BANDFMT_UCHAR ) || im_check_imask( "morph", mask ) ) return( NULL ); for( i = 0; i < n_mask; i++ ) if( mask->coeff[i] != 0 && mask->coeff[i] != 128 && mask->coeff[i] != 255 ) { im_error( "morph", _( "bad mask element (%d " "should be 0, 128 or 255)" ), mask->coeff[i] ); return( NULL ); } if( !(morph = IM_NEW( out, Morph )) ) return( NULL ); morph->in = in; morph->out = out; morph->mask = NULL; morph->op = op; morph->n_pass = 0; for( i = 0; i < MAX_PASS; i++ ) morph->pass[i].vector = NULL; if( im_add_close_callback( out, (im_callback_fn) morph_close, morph, NULL ) || !(morph->mask = im_dup_imask( mask, "morph" )) ) return( NULL ); /* Generate code for this mask / image, if possible. */ if( vips_vector_isenabled() ) { if( pass_compile( morph ) ) pass_free( morph ); } return( morph ); } /* Our sequence value. */ typedef struct { Morph *morph; REGION *ir; /* Input region */ int *soff; /* Offsets we check for set */ int ss; /* ... and number we check for set */ int *coff; /* Offsets we check for clear */ int cs; /* ... and number we check for clear */ int last_bpl; /* Avoid recalcing offsets, if we can */ /* In vector mode we need a pair of intermediate buffers to keep the * results of each pass in. */ void *t1; void *t2; } MorphSequence; /* Free a sequence value. */ static int morph_stop( void *vseq, void *a, void *b ) { MorphSequence *seq = (MorphSequence *) vseq; IM_FREEF( im_region_free, seq->ir ); IM_FREE( seq->t1 ); IM_FREE( seq->t2 ); return( 0 ); } /* Morph start function. */ static void * morph_start( IMAGE *out, void *a, void *b ) { IMAGE *in = (IMAGE *) a; Morph *morph = (Morph *) b; int n_mask = morph->mask->xsize * morph->mask->ysize; int sz = IM_IMAGE_N_ELEMENTS( in ); MorphSequence *seq; if( !(seq = IM_NEW( out, MorphSequence )) ) return( NULL ); /* Init! */ seq->morph = morph; seq->ir = NULL; seq->soff = NULL; seq->ss = 0; seq->coff = NULL; seq->cs = 0; seq->last_bpl = -1; seq->t1 = NULL; seq->t2 = NULL; /* Attach region and arrays. */ seq->ir = im_region_create( in ); seq->soff = IM_ARRAY( out, n_mask, int ); seq->coff = IM_ARRAY( out, n_mask, int ); seq->t1 = IM_ARRAY( NULL, sz, VipsPel ); seq->t2 = IM_ARRAY( NULL, sz, VipsPel ); if( !seq->ir || !seq->soff || !seq->coff || !seq->t1 || !seq->t2 ) { morph_stop( seq, in, NULL ); return( NULL ); } return( seq ); } /* Dilate! */ static int dilate_gen( REGION *or, void *vseq, void *a, void *b ) { MorphSequence *seq = (MorphSequence *) vseq; Morph *morph = (Morph *) b; INTMASK *mask = morph->mask; REGION *ir = seq->ir; int *soff = seq->soff; int *coff = seq->coff; Rect *r = &or->valid; Rect s; int le = r->left; int to = r->top; int bo = IM_RECT_BOTTOM( r ); int sz = IM_REGION_N_ELEMENTS( or ); int *t; int x, y; int result, i; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); #ifdef DEBUG_VERBOSE printf( "dilate_gen: preparing %dx%d@%dx%d pixels\n", s.width, s.height, s.left, s.top ); #endif /*DEBUG_VERBOSE*/ /* Scan mask, building offsets we check when processing. Only do this * if the bpl has changed since the previous im_prepare(). */ if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) { seq->last_bpl = IM_REGION_LSKIP( ir ); seq->ss = 0; seq->cs = 0; for( t = mask->coeff, y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++, t++ ) switch( *t ) { case 255: soff[seq->ss++] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); break; case 128: break; case 0: coff[seq->cs++] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); break; default: g_assert_not_reached(); } } /* Dilate! */ for( y = to; y < bo; y++ ) { VipsPel *p = IM_REGION_ADDR( ir, le, y ); VipsPel *q = IM_REGION_ADDR( or, le, y ); /* Loop along line. */ for( x = 0; x < sz; x++, q++, p++ ) { /* Search for a hit on the set list. */ result = 0; for( i = 0; i < seq->ss; i++ ) if( p[soff[i]] ) { /* Found a match! */ result = 255; break; } /* No set pixels ... search for a hit in the clear * pixels. */ if( !result ) for( i = 0; i < seq->cs; i++ ) if( !p[coff[i]] ) { /* Found a match! */ result = 255; break; } *q = result; } } return( 0 ); } /* Erode! */ static int erode_gen( REGION *or, void *vseq, void *a, void *b ) { MorphSequence *seq = (MorphSequence *) vseq; Morph *morph = (Morph *) b; INTMASK *mask = morph->mask; REGION *ir = seq->ir; int *soff = seq->soff; int *coff = seq->coff; Rect *r = &or->valid; Rect s; int le = r->left; int to = r->top; int bo = IM_RECT_BOTTOM(r); int sz = IM_REGION_N_ELEMENTS( or ); int *t; int x, y; int result, i; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); #ifdef DEBUG_VERBOSE printf( "erode_gen: preparing %dx%d@%dx%d pixels\n", s.width, s.height, s.left, s.top ); #endif /*DEBUG_VERBOSE*/ /* Scan mask, building offsets we check when processing. Only do this * if the bpl has changed since the previous im_prepare(). */ if( seq->last_bpl != IM_REGION_LSKIP( ir ) ) { seq->last_bpl = IM_REGION_LSKIP( ir ); seq->ss = 0; seq->cs = 0; for( t = mask->coeff, y = 0; y < mask->ysize; y++ ) for( x = 0; x < mask->xsize; x++, t++ ) switch( *t ) { case 255: soff[seq->ss++] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); break; case 128: break; case 0: coff[seq->cs++] = IM_REGION_ADDR( ir, x + le, y + to ) - IM_REGION_ADDR( ir, le, to ); break; default: g_assert_not_reached(); } } /* Erode! */ for( y = to; y < bo; y++ ) { VipsPel *p = IM_REGION_ADDR( ir, le, y ); VipsPel *q = IM_REGION_ADDR( or, le, y ); /* Loop along line. */ for( x = 0; x < sz; x++, q++, p++ ) { /* Check all set pixels are set. */ result = 255; for( i = 0; i < seq->ss; i++ ) if( !p[soff[i]] ) { /* Found a mismatch! */ result = 0; break; } /* Check all clear pixels are clear. */ if( result ) for( i = 0; i < seq->cs; i++ ) if( p[coff[i]] ) { result = 0; break; } *q = result; } } return( 0 ); } /* The vector codepath. */ static int morph_vector_gen( REGION *or, void *vseq, void *a, void *b ) { MorphSequence *seq = (MorphSequence *) vseq; Morph *morph = (Morph *) b; INTMASK *mask = morph->mask; REGION *ir = seq->ir; Rect *r = &or->valid; int sz = IM_REGION_N_ELEMENTS( or ); Rect s; int y, j; VipsExecutor executor[MAX_PASS]; /* Prepare the section of the input image we need. A little larger * than the section of the output image we are producing. */ s = *r; s.width += mask->xsize - 1; s.height += mask->ysize - 1; if( im_prepare( ir, &s ) ) return( -1 ); #ifdef DEBUG_VERBOSE printf( "morph_vector_gen: preparing %dx%d@%dx%d pixels\n", s.width, s.height, s.left, s.top ); #endif /*DEBUG_VERBOSE*/ for( j = 0; j < morph->n_pass; j++ ) vips_executor_set_program( &executor[j], morph->pass[j].vector, sz ); for( y = 0; y < r->height; y++ ) { for( j = 0; j < morph->n_pass; j++ ) { void *d; /* The last pass goes to the output image, * intermediate passes go to t2. */ if( j == morph->n_pass - 1 ) d = IM_REGION_ADDR( or, r->left, r->top + y ); else d = seq->t2; vips_executor_set_scanline( &executor[j], ir, r->left, r->top + y ); vips_executor_set_array( &executor[j], morph->pass[j].r, seq->t1 ); vips_executor_set_destination( &executor[j], d ); vips_executor_run( &executor[j] ); IM_SWAP( void *, seq->t1, seq->t2 ); } } return( 0 ); } /* Morph an image. */ static int morphology( IMAGE *in, IMAGE *out, INTMASK *mask, MorphOp op ) { Morph *morph; im_generate_fn generate; /* Check parameters. */ if( !(morph = morph_new( in, out, mask, op )) ) return( -1 ); /* Prepare output. Consider a 7x7 mask and a 7x7 image --- the output * would be 1x1. */ if( im_cp_desc( morph->out, morph->in ) ) return( -1 ); morph->out->Xsize -= morph->mask->xsize - 1; morph->out->Ysize -= morph->mask->ysize - 1; if( morph->out->Xsize <= 0 || morph->out->Ysize <= 0 ) { im_error( "morph", "%s", _( "image too small for mask" ) ); return( -1 ); } if( morph->n_pass ) { generate = morph_vector_gen; #ifdef DEBUG printf( "morph_vector_gen: %d passes\n", morph->n_pass ); #endif /*DEBUG*/ } else if( morph->op == DILATE ) generate = dilate_gen; else generate = erode_gen; if( im_demand_hint( morph->out, IM_SMALLTILE, morph->in, NULL ) || im_generate( morph->out, morph_start, generate, morph_stop, morph->in, morph ) ) return( -1 ); morph->out->Xoffset = -morph->mask->xsize / 2; morph->out->Yoffset = -morph->mask->ysize / 2; return( 0 ); } /* Keep the _raw versions for compat. */ int im_dilate_raw( IMAGE *in, IMAGE *out, INTMASK *mask ) { return( morphology( in, out, mask, DILATE ) ); } int im_erode_raw( IMAGE *in, IMAGE *out, INTMASK *mask ) { return( morphology( in, out, mask, ERODE ) ); } int im_dilate( IMAGE *in, IMAGE *out, INTMASK *mask ) { IMAGE *t1 = im_open_local( out, "im_dilate:1", "p" ); if( !t1 || im_embed( in, t1, 1, mask->xsize / 2, mask->ysize / 2, in->Xsize + mask->xsize - 1, in->Ysize + mask->ysize - 1 ) || morphology( t1, out, mask, DILATE ) ) return( -1 ); out->Xoffset = 0; out->Yoffset = 0; return( 0 ); } int im_erode( IMAGE *in, IMAGE *out, INTMASK *mask ) { IMAGE *t1 = im_open_local( out, "im_erode:1", "p" ); if( !t1 || im_embed( in, t1, 1, mask->xsize / 2, mask->ysize / 2, in->Xsize + mask->xsize - 1, in->Ysize + mask->ysize - 1 ) || morphology( t1, out, mask, ERODE ) ) return( -1 ); out->Xoffset = 0; out->Yoffset = 0; return( 0 ); } vips-8.2.2/libvips/video/0000775000175000017500000000000012651721506012272 500000000000000vips-8.2.2/libvips/video/im_video_test.c0000664000175000017500000000277112530402247015211 00000000000000/* test video grabber ... just generates noise and optional errors */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include /** * im_video_test: * @im: write image here * @brightness: brightness setting * @error: set this to make the function return an error * * Make a test video image. Set @error to trigger an error. * * Returns: 0 on success, -1 on error */ int im_video_test( IMAGE *im, int brightness, int error ) { if( error ) { im_error( "im_video_test", "%s", _( "error requested" ) ); return( -1 ); } else return( im_gaussnoise( im, 720, 576, brightness, 20 ) ); } vips-8.2.2/libvips/video/video_dispatch.c0000664000175000017500000000661012530402247015340 00000000000000/* function dispatch tables for video */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** * SECTION: video * @short_description: various video grabbers * @see_also: image * @stability: Stable * @include: vips/vips.h * * Read an image from a video source. */ static int video_v4l1_vec( im_object *argv ) { IMAGE *out = argv[0]; char *device = (char *) argv[1]; int channel = *((int*)argv[2]); int brightness = *((int*)argv[3]); int colour = *((int*)argv[4]); int contrast = *((int*)argv[5]); int hue = *((int*)argv[6]); int ngrabs = *((int*)argv[7]); return( im_video_v4l1( out, device, channel, brightness, colour, contrast, hue, ngrabs ) ); } static im_arg_desc video_v4l1_arg_types[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_STRING( "device" ), IM_INPUT_INT( "channel" ), IM_INPUT_INT( "brightness" ), IM_INPUT_INT( "colour" ), IM_INPUT_INT( "contrast" ), IM_INPUT_INT( "hue" ), IM_INPUT_INT( "ngrabs" ) }; static im_function video_v4l1_desc = { "im_video_v4l1", /* Name */ "grab a video frame with v4l1", /* Description */ IM_FN_NOCACHE, /* Flags */ video_v4l1_vec, /* Dispatch function */ IM_NUMBER( video_v4l1_arg_types ), /* Size of arg list */ video_v4l1_arg_types /* Arg list */ }; static int video_test_vec( im_object *argv ) { IMAGE *out = argv[0]; int brightness = *((int*)argv[1]); int error = *((int*)argv[2]); return( im_video_test( out, brightness, error ) ); } static im_arg_desc video_test_arg_types[] = { IM_OUTPUT_IMAGE( "out" ), IM_INPUT_INT( "brightness" ), IM_INPUT_INT( "error" ) }; static im_function video_test_desc = { "im_video_test", /* Name */ "test video grabber", /* Description */ IM_FN_NOCACHE, /* Flags */ video_test_vec, /* Dispatch function */ IM_NUMBER( video_test_arg_types ), /* Size of arg list */ video_test_arg_types /* Arg list */ }; static im_function *video_list[] = { &video_test_desc, &video_v4l1_desc }; im_package im__video = { "video", /* Package name */ IM_NUMBER( video_list ), /* Function list */ video_list }; vips-8.2.2/libvips/video/Makefile.am0000664000175000017500000000025612530402247014243 00000000000000noinst_LTLIBRARIES = libvideo.la libvideo_la_SOURCES = \ video_dispatch.c \ im_video_test.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/video/Makefile.in0000664000175000017500000005222112651721157014263 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/video ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libvideo_la_LIBADD = am_libvideo_la_OBJECTS = video_dispatch.lo im_video_test.lo libvideo_la_OBJECTS = $(am_libvideo_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libvideo_la_SOURCES) DIST_SOURCES = $(libvideo_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libvideo.la libvideo_la_SOURCES = \ video_dispatch.c \ im_video_test.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/video/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/video/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libvideo.la: $(libvideo_la_OBJECTS) $(libvideo_la_DEPENDENCIES) $(EXTRA_libvideo_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libvideo_la_OBJECTS) $(libvideo_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_video_test.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/video_dispatch.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/iofuncs/0000775000175000017500000000000012651721506012632 500000000000000vips-8.2.2/libvips/iofuncs/sink.c0000664000175000017500000002307112530402247013657 00000000000000/* A sink that's not attached to anything, eg. find image average, * * 28/3/10 * - from im_iterate(), reworked for threadpool */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include "sink.h" /* Per-call state. */ typedef struct _Sink { SinkBase sink_base; /* We need a temp "p" image between the source image and us to * make sure we can't damage the original. */ VipsImage *t; /* Call params. */ VipsStartFn start_fn; VipsGenerateFn generate_fn; VipsStopFn stop_fn; void *a; void *b; } Sink; /* Our per-thread state. */ typedef struct _SinkThreadState { VipsThreadState parent_object; /* Sequence value for this thread. */ void *seq; /* The region we walk over sink.t copy. We can't use * parent_object.reg, it's defined on the outer image. */ VipsRegion *reg; } SinkThreadState; typedef struct _SinkThreadStateClass { VipsThreadStateClass parent_class; } SinkThreadStateClass; G_DEFINE_TYPE( SinkThreadState, sink_thread_state, VIPS_TYPE_THREAD_STATE ); /* Call a thread's stop function. */ static int sink_call_stop( Sink *sink, SinkThreadState *state ) { if( state->seq && sink->stop_fn ) { VIPS_DEBUG_MSG( "sink_call_stop: state = %p\n", state ); if( sink->stop_fn( state->seq, sink->a, sink->b ) ) { SinkBase *sink_base = (SinkBase *) sink; vips_error( "vips_sink", _( "stop function failed for image \"%s\"" ), sink_base->im->filename ); return( -1 ); } state->seq = NULL; } return( 0 ); } static void sink_thread_state_dispose( GObject *gobject ) { SinkThreadState *state = (SinkThreadState *) gobject; Sink *sink = (Sink *) ((VipsThreadState *) state)->a; sink_call_stop( sink, state ); VIPS_UNREF( state->reg ); G_OBJECT_CLASS( sink_thread_state_parent_class )->dispose( gobject ); } /* Call the start function for this thread, if necessary. */ static int sink_call_start( Sink *sink, SinkThreadState *state ) { if( !state->seq && sink->start_fn ) { VIPS_DEBUG_MSG( "sink_call_start: state = %p\n", state ); state->seq = sink->start_fn( sink->t, sink->a, sink->b ); if( !state->seq ) { SinkBase *sink_base = (SinkBase *) sink; vips_error( "vips_sink", _( "start function failed for image \"%s\"" ), sink_base->im->filename ); return( -1 ); } } return( 0 ); } static int sink_thread_state_build( VipsObject *object ) { SinkThreadState *state = (SinkThreadState *) object; Sink *sink = (Sink *) ((VipsThreadState *) state)->a; if( !(state->reg = vips_region_new( sink->t )) || sink_call_start( sink, state ) ) return( -1 ); return( VIPS_OBJECT_CLASS( sink_thread_state_parent_class )->build( object ) ); } static void sink_thread_state_class_init( SinkThreadStateClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); gobject_class->dispose = sink_thread_state_dispose; object_class->build = sink_thread_state_build; object_class->nickname = "sinkthreadstate"; object_class->description = _( "per-thread state for sink" ); } static void sink_thread_state_init( SinkThreadState *state ) { state->seq = NULL; state->reg = NULL; } VipsThreadState * vips_sink_thread_state_new( VipsImage *im, void *a ) { return( VIPS_THREAD_STATE( vips_object_new( sink_thread_state_get_type(), vips_thread_state_set, im, a ) ) ); } static void sink_free( Sink *sink ) { VIPS_FREEF( g_object_unref, sink->t ); } void vips_sink_base_init( SinkBase *sink_base, VipsImage *image ) { /* Always clear kill before we start looping. See the * call to vips_image_iskilled() below. */ vips_image_set_kill( image, FALSE ); sink_base->im = image; sink_base->x = 0; sink_base->y = 0; vips_get_tile_size( image, &sink_base->tile_width, &sink_base->tile_height, &sink_base->nlines ); sink_base->processed = 0; } static int sink_init( Sink *sink, VipsImage *image, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ) { g_assert( generate_fn ); vips_sink_base_init( &sink->sink_base, image ); sink->t = NULL; sink->start_fn = start_fn; sink->generate_fn = generate_fn; sink->stop_fn = stop_fn; sink->a = a; sink->b = b; if( !(sink->t = vips_image_new()) || vips_image_write( sink->sink_base.im, sink->t ) ) { sink_free( sink ); return( -1 ); } return( 0 ); } int vips_sink_base_allocate( VipsThreadState *state, void *a, gboolean *stop ) { SinkBase *sink_base = (SinkBase *) a; VipsRect image, tile; /* Has work requested early termination? */ if( state->stop ) { *stop = TRUE; return( 0 ); } /* Is the state x/y OK? New line or maybe all done. */ if( sink_base->x >= sink_base->im->Xsize ) { sink_base->x = 0; sink_base->y += sink_base->tile_height; if( sink_base->y >= sink_base->im->Ysize ) { *stop = TRUE; return( 0 ); } } /* x, y and buf are good: save params for thread. */ image.left = 0; image.top = 0; image.width = sink_base->im->Xsize; image.height = sink_base->im->Ysize; tile.left = sink_base->x; tile.top = sink_base->y; tile.width = sink_base->tile_width; tile.height = sink_base->tile_height; vips_rect_intersectrect( &image, &tile, &state->pos ); /* Move state on. */ sink_base->x += sink_base->tile_width; /* Add the number of pixels we've just allocated to progress. */ sink_base->processed += state->pos.width * state->pos.height; return( 0 ); } static int sink_work( VipsThreadState *state, void *a ) { SinkThreadState *sstate = (SinkThreadState *) state; Sink *sink = (Sink *) a; if( vips_region_prepare( sstate->reg, &state->pos ) || sink->generate_fn( sstate->reg, sstate->seq, sink->a, sink->b, &state->stop ) ) return( -1 ); return( 0 ); } int vips_sink_base_progress( void *a ) { SinkBase *sink_base = (SinkBase *) a; VIPS_DEBUG_MSG( "vips_sink_base_progress:\n" ); /* Trigger any eval callbacks on our source image and * check for errors. */ vips_image_eval( sink_base->im, sink_base->processed ); if( vips_image_iskilled( sink_base->im ) ) return( -1 ); return( 0 ); } /** * vips_sink_tile: * @im: scan over this image * @tile_width: tile width * @tile_height: tile height * @start_fn: start sequences with this function * @generate_fn: generate pixels with this function * @stop_fn: stop sequences with this function * @a: user data * @b: user data * * Loops over an image. @generate_fn is called for every * pixel in the image, with * the @reg argument being a region of calculated pixels. * * Each set of pixels is @tile_width by @tile_height pixels (less at the * image edges). This is handy for things like writing a tiled TIFF image, * where tiles have to be generated with a certain size. * * See also: vips_sink(), vips_get_tile_size(). * * Returns: 0 on success, or -1 on error. */ int vips_sink_tile( VipsImage *im, int tile_width, int tile_height, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ) { Sink sink; int result; g_assert( vips_object_sanity( VIPS_OBJECT( im ) ) ); /* We don't use this, but make sure it's set in case any old binaries * are expecting it. */ im->Bbits = vips_format_sizeof( im->BandFmt ) << 3; if( sink_init( &sink, im, start_fn, generate_fn, stop_fn, a, b ) ) return( -1 ); if( tile_width > 0 ) { sink.sink_base.tile_width = tile_width; sink.sink_base.tile_height = tile_height; } /* vips_sink_base_progress() signals progress on im, so we have to do * pre/post on that too. */ vips_image_preeval( im ); result = vips_threadpool_run( im, vips_sink_thread_state_new, vips_sink_base_allocate, sink_work, vips_sink_base_progress, &sink ); vips_image_posteval( im ); sink_free( &sink ); return( result ); } /** * vips_sink: * @im: scan over this image * @start_fn: start sequences with this function * @generate_fn: generate pixels with this function * @stop_fn: stop sequences with this function * @a: user data * @b: user data * * Loops over an image. @generate_fn is called for every pixel in * the image, with * the @reg argument being a region of calculated pixels. vips_sink() is * used to implement operations like vips_avg() which have no image output. * * Each set of pixels is sized according to the requirements of the image * pipeline that generated @im. * * See also: vips_image_generate(), vips_image_new(). * * Returns: 0 on success, or -1 on error. */ int vips_sink( VipsImage *im, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ) { return( vips_sink_tile( im, -1, -1, start_fn, generate_fn, stop_fn, a, b ) ); } vips-8.2.2/libvips/iofuncs/gate.c0000664000175000017500000002260212530402247013632 00000000000000/* gate.c --- thread profiling * * Written on: 18 nov 13 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Very verbose. #define VIPS_DEBUG_RED */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #define VIPS_GATE_SIZE (1000) /* A set of timing records. i is the index of the next slot we fill. */ typedef struct _VipsThreadGateBlock { struct _VipsThreadGateBlock *prev; gint64 time[VIPS_GATE_SIZE]; int i; } VipsThreadGateBlock; /* What we track for each gate-name. */ typedef struct _VipsThreadGate { const char *name; VipsThreadGateBlock *start; VipsThreadGateBlock *stop; } VipsThreadGate; /* One of these in per-thread private storage. */ typedef struct _VipsThreadProfile { /*< private >*/ const char *name; GThread *thread; GHashTable *gates; VipsThreadGate *memory; } VipsThreadProfile; gboolean vips__thread_profile = FALSE; static GPrivate *vips_thread_profile_key = NULL; static FILE *vips__thread_fp = NULL;; /** * vips_profile_set: * @profile: %TRUE to enable profile recording * * If set, vips will record profiling information, and dump it on program * exit. These profiles can be analysed with the `vipsprofile` program. */ void vips_profile_set( gboolean profile ) { vips__thread_profile = profile; } static void vips_thread_gate_block_save( VipsThreadGateBlock *block, FILE *fp ) { int i; for( i = block->i - 1; i >= 0; i-- ) fprintf( fp, "%" G_GINT64_FORMAT " ", block->time[i] ); fprintf( fp, "\n" ); if( block->prev ) vips_thread_gate_block_save( block->prev, fp ); } static void vips_thread_profile_save_gate( VipsThreadGate *gate, FILE *fp ) { if( gate->start->i || gate->start->prev ) { fprintf( fp, "gate: %s\n", gate->name ); fprintf( fp, "start:\n" ); vips_thread_gate_block_save( gate->start, fp ); fprintf( fp, "stop:\n" ); vips_thread_gate_block_save( gate->stop, fp ); } } static void vips_thread_profile_save_cb( gpointer key, gpointer value, gpointer data ) { VipsThreadGate *gate = (VipsThreadGate *) value; FILE *fp = (FILE *) data; vips_thread_profile_save_gate( gate, fp ); } static void vips_thread_profile_save( VipsThreadProfile *profile ) { g_mutex_lock( vips__global_lock ); VIPS_DEBUG_MSG( "vips_thread_profile_save: %s\n", profile->name ); if( !vips__thread_fp ) { vips__thread_fp = vips__file_open_write( "vips-profile.txt", TRUE ); if( !vips__thread_fp ) { g_mutex_unlock( vips__global_lock ); vips_warn( "VipsGate", "%s", "unable to create profile log" ); return; } printf( "recording profile in vips-profile.txt\n" ); } fprintf( vips__thread_fp, "thread: %s (%p)\n", profile->name, profile ); g_hash_table_foreach( profile->gates, vips_thread_profile_save_cb, vips__thread_fp ); vips_thread_profile_save_gate( profile->memory, vips__thread_fp ); g_mutex_unlock( vips__global_lock ); } static void vips_thread_gate_block_free( VipsThreadGateBlock *block ) { VIPS_FREEF( vips_thread_gate_block_free, block->prev ); VIPS_FREE( block ); } static void vips_thread_gate_free( VipsThreadGate *gate ) { VIPS_FREEF( vips_thread_gate_block_free, gate->start ); VIPS_FREEF( vips_thread_gate_block_free, gate->stop ); VIPS_FREE( gate ); } static void vips_thread_profile_free( VipsThreadProfile *profile ) { VIPS_DEBUG_MSG( "vips_thread_profile_free: %s\n", profile->name ); VIPS_FREEF( g_hash_table_destroy, profile->gates ); VIPS_FREEF( vips_thread_gate_free, profile->memory ); VIPS_FREE( profile ); } void vips__thread_profile_stop( void ) { if( vips__thread_profile ) VIPS_FREEF( fclose, vips__thread_fp ); } static void vips__thread_profile_init_cb( VipsThreadProfile *profile ) { /* We only come here if vips_thread_shutdown() was not called for this * thread. Do our best to clean up. * * GPrivate has stopped working, be careful not to touch that. * * Don't try to save: we must free all mem before saving and we * probably haven't done that because vips_thread_shutdown() has not * been called. */ if( vips__thread_profile ) vips_warn( "VipsGate", "discarding unsaved state for thread %p --- " "call vips_thread_shutdown() for this thread", profile->thread ); vips_thread_profile_free( profile ); } static void vips__thread_profile_init( void ) { #ifdef HAVE_PRIVATE_INIT static GPrivate private = G_PRIVATE_INIT( (GDestroyNotify) vips__thread_profile_init_cb ); vips_thread_profile_key = &private; #else if( !vips_thread_profile_key ) vips_thread_profile_key = g_private_new( (GDestroyNotify) vips__thread_profile_init_cb ); #endif } static VipsThreadGate * vips_thread_gate_new( const char *gate_name ) { VipsThreadGate *gate; gate = g_new( VipsThreadGate, 1 ); gate->name = gate_name; gate->start = g_new0( VipsThreadGateBlock, 1 ); gate->stop = g_new0( VipsThreadGateBlock, 1 ); return( gate ); } void vips__thread_profile_attach( const char *thread_name ) { static GOnce once = G_ONCE_INIT; VipsThreadProfile *profile; g_once( &once, (GThreadFunc) vips__thread_profile_init, NULL ); VIPS_DEBUG_MSG( "vips__thread_profile_attach: %s\n", thread_name ); g_assert( !g_private_get( vips_thread_profile_key ) ); profile = g_new( VipsThreadProfile, 1 ); profile->name = thread_name; profile->gates = g_hash_table_new_full( g_direct_hash, g_str_equal, NULL, (GDestroyNotify) vips_thread_gate_free ); profile->memory = vips_thread_gate_new( "memory" ); g_private_set( vips_thread_profile_key, profile ); } static VipsThreadProfile * vips_thread_profile_get( void ) { return( g_private_get( vips_thread_profile_key ) ); } /* This usually happens automatically when a thread shuts down, see * vips__thread_profile_init() where we set a GDestroyNotify, but will not * happen for the main thread. * * Shut down any stats on the main thread with this, see vips_shutdown() */ void vips__thread_profile_detach( void ) { VipsThreadProfile *profile; VIPS_DEBUG_MSG( "vips__thread_profile_detach:\n" ); if( (profile = vips_thread_profile_get()) ) { if( vips__thread_profile ) vips_thread_profile_save( profile ); vips_thread_profile_free( profile ); g_private_set( vips_thread_profile_key, NULL ); } } static void vips_thread_gate_block_add( VipsThreadGateBlock **block ) { VipsThreadGateBlock *new_block; new_block = g_new0( VipsThreadGateBlock, 1 ); new_block->prev = *block; *block = new_block; } static gint64 vips_get_time( void ) { #ifdef HAVE_MONOTONIC_TIME return( g_get_monotonic_time() ); #else GTimeVal time; g_get_current_time( &time ); return( (gint64) time.tv_usec ); #endif } void vips__thread_gate_start( const char *gate_name ) { VipsThreadProfile *profile; VIPS_DEBUG_MSG_RED( "vips__thread_gate_start: %s\n", gate_name ); if( (profile = vips_thread_profile_get()) ) { gint64 time = vips_get_time(); VipsThreadGate *gate; if( !(gate = g_hash_table_lookup( profile->gates, gate_name )) ) { gate = vips_thread_gate_new( gate_name ); g_hash_table_insert( profile->gates, (char *) gate_name, gate ); } if( gate->start->i >= VIPS_GATE_SIZE ) vips_thread_gate_block_add( &gate->start ); gate->start->time[gate->start->i++] = time; VIPS_DEBUG_MSG_RED( "\t %" G_GINT64_FORMAT "\n", time ); } } void vips__thread_gate_stop( const char *gate_name ) { VipsThreadProfile *profile; VIPS_DEBUG_MSG_RED( "vips__thread_gate_stop: %s\n", gate_name ); if( (profile = vips_thread_profile_get()) ) { gint64 time = vips_get_time(); VipsThreadGate *gate; if( !(gate = g_hash_table_lookup( profile->gates, gate_name )) ) { gate = vips_thread_gate_new( gate_name ); g_hash_table_insert( profile->gates, (char *) gate_name, gate ); } if( gate->stop->i >= VIPS_GATE_SIZE ) vips_thread_gate_block_add( &gate->stop ); gate->stop->time[gate->stop->i++] = time; VIPS_DEBUG_MSG_RED( "\t %" G_GINT64_FORMAT "\n", time ); } } /* Record a malloc() or free(). Use -ve numbers for free. */ void vips__thread_malloc_free( gint64 size ) { VipsThreadProfile *profile; VIPS_DEBUG_MSG_RED( "vips__thread_malloc_free: %zd\n", size ); #ifdef VIPS_DEBUG if( !(profile = vips_thread_profile_get()) ) printf( "argh no block to record free() in!\n" ); #endif /*VIPS_DEBUG*/ if( (profile = vips_thread_profile_get()) ) { gint64 time = vips_get_time(); VipsThreadGate *gate = profile->memory; if( gate->start->i >= VIPS_GATE_SIZE ) { vips_thread_gate_block_add( &gate->start ); vips_thread_gate_block_add( &gate->stop ); } gate->start->time[gate->start->i++] = time; gate->stop->time[gate->stop->i++] = size; } } vips-8.2.2/libvips/iofuncs/type.c0000664000175000017500000012033112636460033013675 00000000000000/* array type * * Unlike GArray, this has fixed length, tracks a GType for elements, and has * a per-element free function. * * 27/10/11 * - from header.c * 16/7/13 * - leakcheck VipsArea */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include /** * SECTION: basic * @short_description: a few typedefs used everywhere * @stability: Stable * @include: vips/vips.h * * A few simple typedefs used by VIPS. */ /** * SECTION: type * @short_description: basic types * @stability: Stable * @see_also: header * @include: vips/vips.h * * A selection of %GType defintions used by VIPS. */ /* A very simple boxed type for testing. Just an int. * * You can manipulate this thing from Python (for example) with: * * from gi.repository import Vips * a = Vips.Thing.new(12) * print a.i * b = a * del a * print b.i * del b */ /** * vips_thing_new: * @i: * * Returns: (transfer full): a new #VipsThing. */ VipsThing * vips_thing_new( int i ) { VipsThing *thing; thing = g_new( VipsThing, 1 ); thing->i = i; printf( "vips_thing_new: %d %p\n", i, thing ); return( thing ); } static VipsThing * vips_thing_copy( VipsThing *thing ) { VipsThing *thing2; thing2 = vips_thing_new( thing->i ); printf( "vips_thing_copy: %d %p = %p\n", thing->i, thing2, thing ); return( thing2 ); } static void vips_thing_free( VipsThing *thing ) { printf( "vips_thing_free: %d %p\n", thing->i, thing ); g_free( thing ); } /* * glib-2.26+ only G_DEFINE_BOXED_TYPE( VipsThing, vips_thing, (GBoxedCopyFunc) vips_thing_copy, (GBoxedFreeFunc) vips_thing_free ); */ GType vips_thing_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsThing", (GBoxedCopyFunc) vips_thing_copy, (GBoxedFreeFunc) vips_thing_free ); } return( type ); } static GSList *vips_area_all = NULL; VipsArea * vips_area_copy( VipsArea *area ) { g_mutex_lock( area->lock ); g_assert( area->count > 0 ); area->count += 1; #ifdef DEBUG printf( "vips_area_copy: %p count = %d\n", area, area->count ); #endif /*DEBUG*/ g_mutex_unlock( area->lock ); return( area ); } void vips_area_unref( VipsArea *area ) { g_mutex_lock( area->lock ); g_assert( area->count > 0 ); area->count -= 1; #ifdef DEBUG printf( "vips_area_unref: %p count = %d\n", area, area->count ); #endif /*DEBUG*/ if( vips__leak ) { g_mutex_lock( vips__global_lock ); g_assert( g_slist_find( vips_area_all, area ) ); g_mutex_unlock( vips__global_lock ); } if( area->count == 0 ) { if( area->free_fn && area->data ) { area->free_fn( area->data, area ); area->data = NULL; area->free_fn = NULL; } g_mutex_unlock( area->lock ); VIPS_FREEF( vips_g_mutex_free, area->lock ); g_free( area ); if( vips__leak ) { g_mutex_lock( vips__global_lock ); vips_area_all = g_slist_remove( vips_area_all, area ); g_mutex_unlock( vips__global_lock ); } #ifdef DEBUG g_mutex_lock( vips__global_lock ); printf( "vips_area_unref: free .. total = %d\n", g_slist_length( vips_area_all ) ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG*/ } else g_mutex_unlock( area->lock ); } /** * vips_area_new: * @free_fn: (scope async): @data will be freed with this function * @data: data will be freed with this function * * A VipsArea wraps a chunk of memory. It adds reference counting and a free * function. It also keeps a count and a %GType, so the area can be an array. * * This type is used for things like passing an array of double or an array of * #VipsObject pointers to operations, and for reference-counted immutable * strings. * * Inital count == 1, so _unref() after attaching somewhere. * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsArea. */ VipsArea * vips_area_new( VipsCallbackFn free_fn, void *data ) { VipsArea *area; area = g_new( VipsArea, 1 ); area->count = 1; area->lock = vips_g_mutex_new(); area->length = 0; area->data = data; area->free_fn = free_fn; area->type = 0; area->sizeof_type = 0; if( vips__leak ) { g_mutex_lock( vips__global_lock ); vips_area_all = g_slist_prepend( vips_area_all, area ); g_mutex_unlock( vips__global_lock ); } #ifdef DEBUG g_mutex_lock( vips__global_lock ); printf( "vips_area_new: %p count = %d (%d in total)\n", area, area->count, g_slist_length( vips_area_all ) ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG*/ return( area ); } void vips__type_leak( void ) { if( vips_area_all ) { GSList *p; fprintf( stderr, "%d VipsArea alive\n", g_slist_length( vips_area_all ) ); for( p = vips_area_all; p; p = p->next ) { VipsArea *area = (VipsArea *) p->data; fprintf( stderr, "\t%p count = %d, bytes = %zd\n", area, area->count, area->length ); } } } /** * vips_area_new_array: * @type: %GType of elements to store * @sizeof_type: sizeof() an element in the array * @n: number of elements in the array * * An area which holds an array of elements of some %GType. To set values for * the elements, get the pointer and write. * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsArea. */ VipsArea * vips_area_new_array( GType type, size_t sizeof_type, int n ) { VipsArea *area; void *array; array = g_malloc( n * sizeof_type ); area = vips_area_new( (VipsCallbackFn) g_free, array ); area->n = n; area->length = n * sizeof_type; area->type = type; area->sizeof_type = sizeof_type; return( area ); } static void vips_area_free_array_object( GObject **array, VipsArea *area ) { int i; for( i = 0; i < area->n; i++ ) VIPS_FREEF( g_object_unref, array[i] ); VIPS_FREE( array ); area->n = 0; } /** * vips_area_new_array_object: * @n: number of elements in the array * * An area which holds an array of %GObject s. See vips_area_new_array(). When * the area is freed, each %GObject will be unreffed. * * Add an extra NULL element at the end, handy for eg. * vips_image_pipeline_array() etc. * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsArea. */ VipsArea * vips_area_new_array_object( int n ) { GObject **array; VipsArea *area; array = g_new0( GObject *, n + 1 ); area = vips_area_new( (VipsCallbackFn) vips_area_free_array_object, array ); area->n = n; area->length = n * sizeof( GObject * ); area->type = G_TYPE_OBJECT; area->sizeof_type = sizeof( GObject * ); return( area ); } /** * vips_area_get_data: * @area: #VipsArea to fetch from * @length: (allow-none): optionally return length in bytes here * @n: (allow-none): optionally return number of elements here * @type: (allow-none): optionally return element type here * @sizeof_type: (allow-none): optionally return sizeof() element type here * * Return the data pointer plus optionally the length in bytes of an area, * the number of elements, the %GType of each element and the sizeof() each * element. * * Returns: (transfer none): The pointer held by @area. */ void * vips_area_get_data( VipsArea *area, size_t *length, int *n, GType *type, size_t *sizeof_type ) { if( length ) *length = area->length; if( n ) *n = area->n; if( type ) *type = area->type; if( sizeof_type ) *sizeof_type = area->sizeof_type; return( area->data ); } /* Transform an area to a G_TYPE_STRING. */ static void transform_area_g_string( const GValue *src_value, GValue *dest_value ) { VipsArea *area; char buf[256]; area = g_value_get_boxed( src_value ); vips_snprintf( buf, 256, "VIPS_TYPE_AREA, count = %d, data = %p", area->count, area->data ); g_value_set_string( dest_value, buf ); } GType vips_area_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsArea", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_area_g_string ); } return( type ); } /* Transform funcs for builtin types to SAVE_STRING. */ static void transform_int_save_string( const GValue *src_value, GValue *dest_value ) { vips_value_set_save_stringf( dest_value, "%d", g_value_get_int( src_value ) ); } static void transform_save_string_int( const GValue *src_value, GValue *dest_value ) { g_value_set_int( dest_value, atoi( vips_value_get_save_string( src_value ) ) ); } static void transform_double_save_string( const GValue *src_value, GValue *dest_value ) { char buf[G_ASCII_DTOSTR_BUF_SIZE]; /* Need to be locale independent. */ g_ascii_dtostr( buf, G_ASCII_DTOSTR_BUF_SIZE, g_value_get_double( src_value ) ); vips_value_set_save_string( dest_value, buf ); } static void transform_save_string_double( const GValue *src_value, GValue *dest_value ) { g_value_set_double( dest_value, g_ascii_strtod( vips_value_get_save_string( src_value ), NULL ) ); } /* Save meta fields to the header. We have a new string type for header fields * to save to XML and define transform functions to go from our meta types to * this string type. */ GType vips_save_string_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsSaveString", (GBoxedCopyFunc) g_strdup, (GBoxedFreeFunc) g_free ); } return( type ); } /* Transform a refstring to a G_TYPE_STRING and back. */ static void transform_ref_string_g_string( const GValue *src_value, GValue *dest_value ) { g_value_set_string( dest_value, vips_value_get_ref_string( src_value, NULL ) ); } static void transform_g_string_ref_string( const GValue *src_value, GValue *dest_value ) { vips_value_set_ref_string( dest_value, g_value_get_string( src_value ) ); } /* To a save string. */ static void transform_ref_string_save_string( const GValue *src_value, GValue *dest_value ) { vips_value_set_save_stringf( dest_value, "%s", vips_value_get_ref_string( src_value, NULL ) ); } static void transform_save_string_ref_string( const GValue *src_value, GValue *dest_value ) { vips_value_set_ref_string( dest_value, vips_value_get_save_string( src_value ) ); } /** * vips_ref_string_new: * @str: (transfer none): string to store * * Create a new refstring. These are reference-counted immutable strings, used * to store string data in vips image metadata. * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsRefString. */ VipsRefString * vips_ref_string_new( const char *str ) { VipsArea *area; area = vips_area_new( (VipsCallbackFn) g_free, g_strdup( str ) ); /* Handy place to cache this. */ area->length = strlen( str ); return( (VipsRefString *) area ); } /** * vips_ref_string_get: * @refstr: the #VipsRefString to fetch from * @length: (allow-none): return length here, optionally * * Get a pointer to the private string inside a refstr. Handy for language * bindings. * * See also: vips_value_get_ref_string(). * * Returns: (transfer none): The C string held by @refstr. */ const char * vips_ref_string_get( VipsRefString *refstr, size_t *length ) { VipsArea *area = VIPS_AREA( refstr ); return( vips_area_get_data( area, length, NULL, NULL, NULL ) ); } GType vips_ref_string_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsRefString", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_ref_string_g_string ); g_value_register_transform_func( G_TYPE_STRING, type, transform_g_string_ref_string ); g_value_register_transform_func( type, VIPS_TYPE_SAVE_STRING, transform_ref_string_save_string ); g_value_register_transform_func( VIPS_TYPE_SAVE_STRING, type, transform_save_string_ref_string ); } return( type ); } /** * vips_blob_new: * @free_fn: (scope async) (allow-none): @data will be freed with this function * @data: (array length=size) (element-type guint8) (transfer full): data to store * @size: number of bytes in @data * * Like vips_area_new(), but track a length as well. The returned #VipsBlob * takes ownership of @data and will free it with @free_fn. Pass NULL for * @free_fn to not transfer ownership. * * An area of mem with a free func and a length (some sort of binary object, * like an ICC profile). * * See also: vips_area_unref(). * * Returns: (transfer full): the new #VipsBlob. */ VipsBlob * vips_blob_new( VipsCallbackFn free_fn, const void *data, size_t size ) { VipsArea *area; area = vips_area_new( free_fn, (void *) data ); area->length = size; return( (VipsBlob *) area ); } /** * vips_blob_copy: * @data: (array length=size) (element-type guint8) (transfer none): data to store * @size: number of bytes in @data * * Like vips_blob_new(), but take a copy of the data. Useful for bindings * which strugle with callbacks. * * See also: vips_blob_new(). * * Returns: (transfer full): the new #VipsBlob. */ VipsBlob * vips_blob_copy( const void *data, size_t size ) { void *data_copy; VipsArea *area; data_copy = vips_malloc( NULL, size ); memcpy( data_copy, data, size ); area = vips_area_new( (VipsCallbackFn) g_free, data_copy ); area->length = size; return( (VipsBlob *) area ); } /** * vips_blob_get: * @blob: #VipsBlob to fetch from * @size: return number of bytes of data * * Get the data from a #VipsBlob. * * See also: vips_blob_new(). * * Returns: (array length=size) (element-type guint8) (transfer none): the data */ const void * vips_blob_get( VipsBlob *blob, size_t *size ) { return( vips_area_get_data( VIPS_AREA( blob ), size, NULL, NULL, NULL ) ); } /* Transform a blob to a G_TYPE_STRING. */ static void transform_blob_g_string( const GValue *src_value, GValue *dest_value ) { void *blob; size_t blob_length; char buf[256]; blob = vips_value_get_blob( src_value, &blob_length ); vips_snprintf( buf, 256, "VIPS_TYPE_BLOB, data = %p, length = %zd", blob, blob_length ); g_value_set_string( dest_value, buf ); } /* Transform a blob to a save string and back. */ static void transform_blob_save_string( const GValue *src_value, GValue *dest_value ) { void *blob; size_t blob_length; char *b64; blob = vips_value_get_blob( src_value, &blob_length ); if( (b64 = vips__b64_encode( blob, blob_length )) ) { vips_value_set_save_string( dest_value, b64 ); vips_free( b64 ); } } static void transform_save_string_blob( const GValue *src_value, GValue *dest_value ) { const char *b64; void *blob; size_t blob_length; b64 = vips_value_get_save_string( src_value ); if( (blob = vips__b64_decode( b64, &blob_length )) ) vips_value_set_blob( dest_value, (VipsCallbackFn) vips_free, blob, blob_length ); } GType vips_blob_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsBlob", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_blob_g_string ); g_value_register_transform_func( type, VIPS_TYPE_SAVE_STRING, transform_blob_save_string ); g_value_register_transform_func( VIPS_TYPE_SAVE_STRING, type, transform_save_string_blob ); } return( type ); } /** * vips_array_int_new: * @array: (array length=n): array of int * @n: number of ints * * Allocate a new array of ints and copy @array into it. Free with * vips_area_unref(). * * See also: #VipsArea. * * Returns: (transfer full): A new #VipsArrayInt. */ VipsArrayInt * vips_array_int_new( const int *array, int n ) { VipsArea *area; int *array_copy; area = vips_area_new_array( G_TYPE_INT, sizeof( int ), n ); array_copy = vips_area_get_data( area, NULL, NULL, NULL, NULL ); memcpy( array_copy, array, n * sizeof( int ) ); return( (VipsArrayInt *) area ); } /** * vips_array_int_newv: * @n: number of ints * @...: list of int arguments * * Allocate a new array of @n ints and copy @... into it. Free with * vips_area_unref(). * * See also: vips_array_int_new() * * Returns: (transfer full): A new #VipsArrayInt. */ VipsArrayInt * vips_array_int_newv( int n, ... ) { va_list ap; VipsArea *area; int *array; int i; area = vips_area_new_array( G_TYPE_INT, sizeof( int ), n ); array = vips_area_get_data( area, NULL, NULL, NULL, NULL ); va_start( ap, n ); for( i = 0; i < n; i++ ) array[i] = va_arg( ap, int ); va_end( ap ); return( (VipsArrayInt *) area ); } /** * vips_array_int_get: * @array: the #VipsArrayInt to fetch from * @n: length of array * * Fetch an int array from a #VipsArrayInt. Useful for language bindings. * * Returns: (array length=n) (transfer none): array of int */ int * vips_array_int_get( VipsArrayInt *array, int *n ) { VipsArea *area = VIPS_AREA( array ); g_assert( area->type == G_TYPE_INT ); if( n ) *n = area->n; return( (int *) VIPS_ARRAY_ADDR( array, 0 ) ); } static void transform_array_int_g_string( const GValue *src_value, GValue *dest_value ) { int n; int *array; char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); int i; if( (array = vips_value_get_array_int( src_value, &n )) ) for( i = 0; i < n; i++ ) /* Use space as a separator since ',' may be a * decimal point in this locale. */ vips_buf_appendf( &buf, "%d ", array[i] ); g_value_set_string( dest_value, vips_buf_all( &buf ) ); } /* It'd be great to be able to write a generic string->array function, but * it doesn't seem possible. */ static void transform_g_string_array_int( const GValue *src_value, GValue *dest_value ) { char *str; int n; char *p, *q; int i; int *array; /* Walk the string to get the number of elements. * We need a copy of the string, since we insert \0 during * scan. * * We can't allow ',' as a separator, since some locales use it as a * decimal point. */ str = g_value_dup_string( src_value ); n = 0; for( p = str; (q = vips_break_token( p, "\t; " )); p = q ) n += 1; g_free( str ); vips_value_set_array_int( dest_value, NULL, n ); array = vips_value_get_array_int( dest_value, NULL ); str = g_value_dup_string( src_value ); i = 0; for( p = str; (q = vips_break_token( p, "\t; " )); p = q ) { if( sscanf( p, "%d", &array[i] ) != 1 ) { /* Set array to length zero to indicate an error. */ vips_error( "vipstype", _( "unable to convert \"%s\" to int" ), p ); vips_value_set_array( dest_value, 0, G_TYPE_INT, sizeof( int ) ); g_free( str ); return; } i += 1; } g_free( str ); } /* We need a arrayint, we have an int, make a one-element array. */ static void transform_int_array_int( const GValue *src_value, GValue *dest_value ) { int *array; vips_value_set_array_int( dest_value, NULL, 1 ); array = vips_value_get_array_int( dest_value, NULL ); array[0] = g_value_get_int( src_value ); } static void transform_double_array_int( const GValue *src_value, GValue *dest_value ) { int *array; vips_value_set_array_int( dest_value, NULL, 1 ); array = vips_value_get_array_int( dest_value, NULL ); array[0] = g_value_get_double( src_value ); } GType vips_array_int_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsArrayInt", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_array_int_g_string ); g_value_register_transform_func( G_TYPE_STRING, type, transform_g_string_array_int ); g_value_register_transform_func( G_TYPE_INT, type, transform_int_array_int ); g_value_register_transform_func( G_TYPE_DOUBLE, type, transform_double_array_int ); } return( type ); } /** * vips_array_double_new: * @array: (array length=n): array of double * @n: number of doubles * * Allocate a new array of doubles and copy @array into it. Free with * vips_area_unref(). * * See also: #VipsArea. * * Returns: (transfer full): A new #VipsArrayDouble. */ VipsArrayDouble * vips_array_double_new( const double *array, int n ) { VipsArea *area; double *array_copy; area = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array_copy = vips_area_get_data( area, NULL, NULL, NULL, NULL ); memcpy( array_copy, array, n * sizeof( double ) ); return( (VipsArrayDouble *) area ); } /** * vips_array_double_newv: * @n: number of doubles * @...: list of double arguments * * Allocate a new array of @n doubles and copy @... into it. Free with * vips_area_unref(). * * See also: vips_array_double_new() * * Returns: (transfer full): A new #VipsArrayDouble. */ VipsArrayDouble * vips_array_double_newv( int n, ... ) { va_list ap; VipsArea *area; double *array; int i; area = vips_area_new_array( G_TYPE_DOUBLE, sizeof( double ), n ); array = vips_area_get_data( area, NULL, NULL, NULL, NULL ); va_start( ap, n ); for( i = 0; i < n; i++ ) array[i] = va_arg( ap, double ); va_end( ap ); return( (VipsArrayDouble *) area ); } /** * vips_array_double_get: * @array: the #VipsArrayDouble to fetch from * @n: length of array * * Fetch a double array from a #VipsArrayDouble. Useful for language bindings. * * Returns: (array length=n) (transfer none): array of double */ double * vips_array_double_get( VipsArrayDouble *array, int *n ) { VipsArea *area = VIPS_AREA( array ); g_assert( area->type == G_TYPE_DOUBLE ); if( n ) *n = area->n; return( VIPS_ARRAY_ADDR( array, 0 ) ); } static void transform_array_double_g_string( const GValue *src_value, GValue *dest_value ) { int n; double *array; char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); int i; if( (array = vips_value_get_array_double( src_value, &n )) ) for( i = 0; i < n; i++ ) /* Use space as a separator since ',' may be a decimal * point in this locale. */ vips_buf_appendf( &buf, "%g ", array[i] ); g_value_set_string( dest_value, vips_buf_all( &buf ) ); } /* It'd be great to be able to write a generic string->array function, but * it doesn't seem possible. */ static void transform_g_string_array_double( const GValue *src_value, GValue *dest_value ) { char *str; int n; char *p, *q; int i; double *array; /* Walk the string to get the number of elements. * We need a copy of the string, since we insert \0 during scan. * * We can't allow ',' as a separator since some locales use it as a * decimal point. */ str = g_value_dup_string( src_value ); n = 0; for( p = str; (q = vips_break_token( p, "\t; " )); p = q ) n += 1; g_free( str ); vips_value_set_array_double( dest_value, NULL, n ); array = vips_value_get_array_double( dest_value, NULL ); str = g_value_dup_string( src_value ); i = 0; for( p = str; (q = vips_break_token( p, "\t; " )); p = q ) { if( sscanf( p, "%lf", &array[i] ) != 1 ) { /* Set array to length zero to indicate an error. */ vips_error( "vipstype", _( "unable to convert \"%s\" to float" ), p ); vips_value_set_array_double( dest_value, NULL, 0 ); g_free( str ); return; } i += 1; } g_free( str ); } /* We need a arraydouble, we have a double, make a one-element array. */ static void transform_double_array_double( const GValue *src_value, GValue *dest_value ) { double *array; vips_value_set_array_double( dest_value, NULL, 1 ); array = vips_value_get_array_double( dest_value, NULL ); array[0] = g_value_get_double( src_value ); } static void transform_int_array_double( const GValue *src_value, GValue *dest_value ) { double *array; vips_value_set_array_double( dest_value, NULL, 1 ); array = vips_value_get_array_double( dest_value, NULL ); array[0] = g_value_get_int( src_value ); } GType vips_array_double_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsArrayDouble", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( type, G_TYPE_STRING, transform_array_double_g_string ); g_value_register_transform_func( G_TYPE_STRING, type, transform_g_string_array_double ); g_value_register_transform_func( G_TYPE_DOUBLE, type, transform_double_array_double ); g_value_register_transform_func( G_TYPE_INT, type, transform_int_array_double ); } return( type ); } static void transform_g_string_array_image( const GValue *src_value, GValue *dest_value ) { char *str; int n; char *p, *q; int i; VipsImage **array; /* We need a copy of the string, since we insert \0 during * scan. */ str = g_value_dup_string( src_value ); n = 0; for( p = str; (q = vips_break_token( p, " " )); p = q ) n += 1; g_free( str ); vips_value_set_array_image( dest_value, n ); array = vips_value_get_array_image( dest_value, NULL ); str = g_value_dup_string( src_value ); for( i = 0, p = str; (q = vips_break_token( p, " " )); i++, p = q ) if( !(array[i] = vips_image_new_from_file( p, NULL )) ) { /* Set the dest to length zero to indicate error. */ vips_value_set_array_image( dest_value, 0 ); g_free( str ); return; } g_free( str ); } /** * vips_array_image_new: * @array: (array length=n): array of #VipsImage * @n: number of images * * Allocate a new array of images and copy @array into it. Free with * vips_area_unref(). * * The images will all be reffed by this function. They * will be automatically unreffed for you by * vips_area_unref(). * * Add an extra NULL element at the end, handy for eg. * vips_image_pipeline_array() etc. * * See also: #VipsArea. * * Returns: (transfer full): A new #VipsArrayImage. */ VipsArrayImage * vips_array_image_new( VipsImage **array, int n ) { VipsArea *area; VipsImage **array_copy; int i; area = vips_area_new_array_object( n ); area->type = VIPS_TYPE_IMAGE; array_copy = vips_area_get_data( area, NULL, NULL, NULL, NULL ); for( i = 0; i < n; i++ ) { array_copy[i] = (VipsImage *) array[i]; g_object_ref( array_copy[i] ); } return( (VipsArrayImage *) area ); } /** * vips_array_image_newv: * @n: number of images * @...: list of #VipsImage arguments * * Allocate a new array of @n #VipsImage and copy @... into it. Free with * vips_area_unref(). * * The images will all be reffed by this function. They * will be automatically unreffed for you by * vips_area_unref(). * * Add an extra NULL element at the end, handy for eg. * vips_image_pipeline_array() etc. * * See also: vips_array_image_new() * * Returns: (transfer full): A new #VipsArrayImage. */ VipsArrayImage * vips_array_image_newv( int n, ... ) { va_list ap; VipsArea *area; VipsImage **array; int i; area = vips_area_new_array_object( n ); area->type = VIPS_TYPE_IMAGE; array = vips_area_get_data( area, NULL, NULL, NULL, NULL ); va_start( ap, n ); for( i = 0; i < n; i++ ) { array[i] = va_arg( ap, VipsImage * ); g_object_ref( array[i] ); } va_end( ap ); return( (VipsArrayImage *) area ); } /** * vips_array_image_empty: * * Make an empty image array. * Handy with vips_array_image_add() for bindings * which can't handle object array arguments. * * See also: vips_array_image_add(). * * Returns: (transfer full): A new #VipsArrayImage. */ VipsArrayImage * vips_array_image_empty( void ) { return( vips_array_image_new( NULL, 0 ) ); } /** * vips_array_image_append: * @array: (transfer none): append to this * @image: add this * * Make a new #VipsArrayImage, one larger than @array, with @image appended * to the end. * Handy with vips_array_image_empty() for bindings * which can't handle object array arguments. * * See also: vips_array_image_empty(). * * Returns: (transfer full): A new #VipsArrayImage. */ VipsArrayImage * vips_array_image_append( VipsArrayImage *array, VipsImage *image ) { VipsArea *old_area = VIPS_AREA( array ); int n = old_area->n; VipsArea *new_area; VipsImage **old_vector; VipsImage **new_vector; int i; new_area = vips_area_new_array_object( n + 1 ); new_area->type = VIPS_TYPE_IMAGE; old_vector = vips_area_get_data( old_area, NULL, NULL, NULL, NULL ); new_vector = vips_area_get_data( new_area, NULL, NULL, NULL, NULL ); for( i = 0; i < n; i++ ) { new_vector[i] = (VipsImage *) old_vector[i]; g_object_ref( new_vector[i] ); } new_vector[i] = image; g_object_ref( new_vector[i] ); return( (VipsArrayImage *) new_area ); } /** * vips_array_image_get: * @array: the #VipsArrayImage to fetch from * @n: length of array * * Fetch an image array from a #VipsArrayImage. Useful for language bindings. * * Returns: (array length=n) (transfer none): array of #VipsImage */ VipsImage ** vips_array_image_get( VipsArrayImage *array, int *n ) { VipsArea *area = VIPS_AREA( array ); g_assert( area->type == VIPS_TYPE_IMAGE ); if( n ) *n = area->n; return( (VipsImage **) VIPS_ARRAY_ADDR( array, 0 ) ); } GType vips_array_image_get_type( void ) { static GType type = 0; if( !type ) { type = g_boxed_type_register_static( "VipsArrayImage", (GBoxedCopyFunc) vips_area_copy, (GBoxedFreeFunc) vips_area_unref ); g_value_register_transform_func( G_TYPE_STRING, type, transform_g_string_array_image ); } return( type ); } /** * vips_value_set_area: * @value: (out): set this value * @free_fn: (scope async): data will be freed with this function * @data: set @value to track this pointer * * Set value to be a ref-counted area of memory with a free function. */ void vips_value_set_area( GValue *value, VipsCallbackFn free_fn, void *data ) { VipsArea *area; area = vips_area_new( free_fn, data ); g_value_init( value, VIPS_TYPE_AREA ); g_value_set_boxed( value, area ); vips_area_unref( area ); } /** * vips_value_get_area: * @value: get from this value * @length: (allow-none): optionally return length here * * Get the pointer from an area. Don't touch count (area is static). * * Returns: (transfer none): The pointer held by @value. */ void * vips_value_get_area( const GValue *value, size_t *length ) { VipsArea *area; area = g_value_get_boxed( value ); return( vips_area_get_data( area, length, NULL, NULL, NULL ) ); } /** * vips_value_get_save_string: * @value: GValue to get from * * Get the C string held internally by the GValue. * * Returns: (transfer none): The C string held by @value. */ const char * vips_value_get_save_string( const GValue *value ) { return( (char *) g_value_get_boxed( value ) ); } /** * vips_value_set_save_string: * @value: (out): GValue to set * @str: C string to copy into the GValue * * Copies the C string into @value. */ void vips_value_set_save_string( GValue *value, const char *str ) { g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_SAVE_STRING ); g_value_set_boxed( value, str ); } /** * vips_value_set_save_stringf: * @value: (out): GValue to set * @fmt: printf()-style format string * @...: arguments to printf()-formatted @fmt * * Generates a string and copies it into @value. */ void vips_value_set_save_stringf( GValue *value, const char *fmt, ... ) { va_list ap; char *str; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_SAVE_STRING ); va_start( ap, fmt ); str = g_strdup_vprintf( fmt, ap ); va_end( ap ); vips_value_set_save_string( value, str ); g_free( str ); } /** * vips_value_get_ref_string: * @value: %GValue to get from * @length: (allow-none): return length here, optionally * * Get the C string held internally by the %GValue. * * Returns: (transfer none): The C string held by @value. */ const char * vips_value_get_ref_string( const GValue *value, size_t *length ) { return( vips_value_get_area( value, length ) ); } /** * vips_value_set_ref_string: * @value: (out): %GValue to set * @str: C string to copy into the GValue * * Copies the C string @str into @value. * * vips_ref_string are immutable C strings that are copied between images by * copying reference-counted pointers, making them much more efficient than * regular %GValue strings. */ void vips_value_set_ref_string( GValue *value, const char *str ) { VipsRefString *ref_str; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_REF_STRING ); ref_str = vips_ref_string_new( str ); g_value_set_boxed( value, ref_str ); vips_area_unref( VIPS_AREA( ref_str ) ); } /** * vips_value_set_blob: * @value: (out): GValue to set * @free_fn: (scope async): free function for @data * @data: pointer to area of memory * @length: length of memory area * * Sets @value to hold a @data. When @value is freed, @data will be * freed with @free_fn. @value also holds a note of the length of the memory * area. * * blobs are things like ICC profiles or EXIF data. They are relocatable, and * are saved to VIPS files for you coded as base64 inside the XML. They are * copied by copying reference-counted pointers. * * See also: vips_value_get_blob() */ void vips_value_set_blob( GValue *value, VipsCallbackFn free_fn, void *data, size_t length ) { VipsBlob *blob; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_BLOB ); blob = vips_blob_new( free_fn, data, length ); g_value_set_boxed( value, blob ); vips_area_unref( VIPS_AREA( blob ) ); } /** * vips_value_get_blob: * @value: GValue to set * @length: (allow-none): optionally return length of memory area * * Returns the data pointer from a blob. Optionally returns the length too. * * blobs are things like ICC profiles or EXIF data. They are relocatable, and * are saved to VIPS files for you coded as base64 inside the XML. They are * copied by copying reference-counted pointers. * * See also: vips_value_set_blob() * * Returns: (transfer none): The pointer held by @value. */ void * vips_value_get_blob( const GValue *value, size_t *length ) { return( vips_value_get_area( value, length ) ); } /** * vips_value_set_array: * @value: (out): %GValue to set * @n: number of elements * @type: the type of each element * @sizeof_type: the sizeof each element * * Set @value to be an array of things. * * This allocates memory but does not * initialise the contents: get the pointer and write instead. */ void vips_value_set_array( GValue *value, int n, GType type, size_t sizeof_type ) { VipsArea *area; area = vips_area_new_array( type, sizeof_type, n ); g_value_set_boxed( value, area ); vips_area_unref( area ); } /** * vips_value_get_array: * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * @type: (allow-none): return the type of each element here, optionally * @sizeof_type: (allow-none): return the sizeof each element here, optionally * * Return the pointer to the array held by @value. * Optionally return the other properties of the array in @n, @type, * @sizeof_type. * * See also: vips_value_set_array(). * * Returns: (transfer none): The array address. */ void * vips_value_get_array( const GValue *value, int *n, GType *type, size_t *sizeof_type ) { VipsArea *area; /* Can't check value type, because we may get called from * vips_*_get_type(). */ if( !(area = g_value_get_boxed( value )) ) return( NULL ); if( n ) *n = area->n; if( type ) *type = area->type; if( sizeof_type ) *sizeof_type = area->sizeof_type; return( area->data ); } /** * vips_value_get_array_int: * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * * Return the start of the array of ints held by @value. * optionally return the number of elements in @n. * * See also: vips_array_int_new(). * * Returns: (transfer none): The array address. */ int * vips_value_get_array_int( const GValue *value, int *n ) { return( vips_value_get_array( value, n, NULL, NULL ) ); } /** * vips_value_set_array_int: * @value: (out): %GValue to get from * @array: (array length=n) (allow-none): array of ints * @n: the number of elements * * Set @value to hold a copy of @array. Pass in the array length in @n. * * See also: vips_array_int_get(). */ void vips_value_set_array_int( GValue *value, const int *array, int n ) { vips_value_set_array( value, n, G_TYPE_INT, sizeof( int ) ); if( array ) { int *array_copy; array_copy = vips_value_get_array_int( value, NULL ); memcpy( array_copy, array, n * sizeof( int ) ); } } /** * vips_value_get_array_double: * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * * Return the start of the array of doubles held by @value. * optionally return the number of elements in @n. * * See also: vips_array_double_new(). * * Returns: (transfer none): The array address. */ double * vips_value_get_array_double( const GValue *value, int *n ) { return( vips_value_get_array( value, n, NULL, NULL ) ); } /** * vips_value_set_array_double: * @value: (out): %GValue to get from * @array: (array length=n) (allow-none): array of doubles * @n: the number of elements * * Set @value to hold a copy of @array. Pass in the array length in @n. * * See also: vips_array_double_get(). */ void vips_value_set_array_double( GValue *value, const double *array, int n ) { vips_value_set_array( value, n, G_TYPE_DOUBLE, sizeof( double ) ); if( array ) { double *array_copy; array_copy = vips_value_get_array_double( value, NULL ); memcpy( array_copy, array, n * sizeof( double ) ); } } /** * vips_value_get_array_image: * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * * Return the start of the array of images held by @value. * optionally return the number of elements in @n. * * See also: vips_value_set_array_image(). * * Returns: (transfer none): The array address. */ VipsImage ** vips_value_get_array_image( const GValue *value, int *n ) { return( vips_value_get_array( value, n, NULL, NULL ) ); } /** * vips_value_set_array_image: * @value: (out): %GValue to get from * @n: the number of elements * * Set @value to hold an array of images. Pass in the array length in @n. * * See also: vips_array_image_get(). */ void vips_value_set_array_image( GValue *value, int n ) { VipsArea *area; area = vips_area_new_array_object( n ); area->type = VIPS_TYPE_IMAGE; g_value_set_boxed( value, area ); vips_area_unref( area ); } /** * vips_value_get_array_object: (skip) * @value: %GValue to get from * @n: (allow-none): return the number of elements here, optionally * * Return the start of the array of %GObject held by @value. * Optionally return the number of elements in @n. * * See also: vips_area_new_array_object(). * * Returns: (transfer none): The array address. */ GObject ** vips_value_get_array_object( const GValue *value, int *n ) { return( vips_value_get_array( value, n, NULL, NULL ) ); } /** * vips_value_set_array_object: * @value: (out): %GValue to set * @n: the number of elements * * Set @value to hold an array of %GObject. Pass in the array length in @n. * * See also: vips_value_get_array_object(). */ void vips_value_set_array_object( GValue *value, int n ) { VipsArea *area; area = vips_area_new_array_object( n ); g_value_set_boxed( value, area ); vips_area_unref( area ); } /* Make the types we need for basic functioning. Called from vips_init(). */ void vips__meta_init_types( void ) { (void) vips_thing_get_type(); (void) vips_save_string_get_type(); (void) vips_area_get_type(); (void) vips_ref_string_get_type(); (void) vips_blob_get_type(); (void) vips_array_int_get_type(); (void) vips_array_double_get_type(); (void) vips_array_image_get_type(); /* Register transform functions to go from built-in saveable types to * a save string. Transform functions for our own types are set * during type creation. */ g_value_register_transform_func( G_TYPE_INT, VIPS_TYPE_SAVE_STRING, transform_int_save_string ); g_value_register_transform_func( VIPS_TYPE_SAVE_STRING, G_TYPE_INT, transform_save_string_int ); g_value_register_transform_func( G_TYPE_DOUBLE, VIPS_TYPE_SAVE_STRING, transform_double_save_string ); g_value_register_transform_func( VIPS_TYPE_SAVE_STRING, G_TYPE_DOUBLE, transform_save_string_double ); } vips-8.2.2/libvips/iofuncs/vipsmarshal.list0000664000175000017500000000234012530402247015771 00000000000000# see glib-genmarshal(1) for a detailed description of the file format, # possible parameter types are: # VOID indicates no return type, or no extra # parameters. if VOID is used as the parameter # list, no additional parameters may be present. # BOOLEAN for boolean types (gboolean) # CHAR for signed char types (gchar) # UCHAR for unsigned char types (guchar) # INT for signed integer types (gint) # UINT for unsigned integer types (guint) # LONG for signed long integer types (glong) # ULONG for unsigned long integer types (gulong) # ENUM for enumeration types (gint) # FLAGS for flag enumeration types (guint) # FLOAT for single-precision float types (gfloat) # DOUBLE for double-precision float types (gdouble) # STRING for string types (gchar*) # BOXED for boxed (anonymous but reference counted) types (GBoxed*) # POINTER for anonymous pointer types (gpointer) # PARAM for GParamSpec or derived types (GParamSpec*) # OBJECT for GObject or derived types (GObject*) # NONE deprecated alias for VOID # BOOL deprecated alias for BOOLEAN INT: VOID vips-8.2.2/libvips/iofuncs/image.c0000664000175000017500000026012312651125327014003 00000000000000/* vips image class * * 4/2/11 * - hacked up from various places * 6/6/13 * - vips_image_write() didn't ref non-partial sources * 18/4/15 * - add vips_image_copy_memory() * 25/11/15 * - add vips_image_new_from_memory_copy() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include /** * SECTION: image * @short_description: the VIPS image class * @stability: Stable * @see_also: header * VipsRegion * generate * VipsOperation * @include: vips/vips.h * * The image class and associated types and macros. * * Images can be created from formatted files on disc, from C-style arrays on * disc, from formatted areas of memory, or from C-style arrays in memory. See * vips_image_new_from_file() and friends. * Creating an image is fast. VIPS reads just enough of * the image to be able to get the various properties, such as width in * pixels. It delays reading any pixels until they are really needed. * * Once you have an image, you can get properties from it in the usual way. * You can use projection functions, like vips_image_get_width() or * g_object_get(), to get %GObject properties. * * VIPS images are three-dimensional arrays, the dimensions being width, * height and bands. Each dimension can be up to 2 ** 31 pixels (or band * elements). An image has a format, meaning the machine number type used * to represent each value. VIPS supports 10 formats, from 8-bit unsigned * integer up to 128-bit double complex, see vips_image_get_format(). * * In VIPS, images are uninterpreted arrays, meaning that from the point of * view of most operations, they are just large collections of numbers. * There's no difference between an RGBA (RGB with alpha) image and a CMYK * image, for example, they are both just four-band images. It's up to the * user of the library to pass the right sort of image to each operation. * * To take an example, VIPS has vips_Lab2XYZ(), an operation to transform * an image from CIE LAB colour space to CIE XYZ space. It assumes the * first three bands represent pixels in LAB colour space and returns an * image where the first three bands are transformed to XYZ and any * remaining bands are just copied. Pass it a RGB image by mistake and * you'll just get nonsense. * * VIPS has a feature to help (a little) with this: it sets a * #VipsInterpretation hint for each image (see * vips_image_get_interpretation()); a hint which says how pixels should * be interpreted. For example, vips_Lab2XYZ() will set the * interpretation of the output image to #VIPS_INTERPRETATION_XYZ. A * few utility operations will also use interpretation as a guide. For * example, you can give vips_colourspace() an input image and a desired * colourspace and it will use the input's interpretation hint to apply * the best sequence of colourspace transforms to get to the desired space. * * Use things like vips_invert() to manipulate your images. When you are done, * you can write images to disc files (with vips_image_write_to_file()), * to formatted memory buffers (with vips_image_write_to_buffer()) and to * C-style memory arrays (with vips_image_write_to_memory(). * * You can also write image to other images. Create, for example, a temporary * disc image with vips_image_new_temp_file(), then write your image to that * with vips_image_write(). You can create several other types of image and * write to them, see vips_image_new_memory(), for example. * * See operation for an introduction to * running operations on images, see header for getting and setting image * metadata. See object for a discussion of * the lower levels. */ /** * VIPS_MAGIC_INTEL: * * The first four bytes of a VIPS file in Intel byte ordering. */ /** * VIPS_MAGIC_SPARC: * * The first four bytes of a VIPS file in SPARC byte ordering. */ /** * VipsAccess: * @VIPS_ACCESS_RANDOM: can read anywhere * @VIPS_ACCESS_SEQUENTIAL: top-to-bottom reading only, but with a small buffer * @VIPS_ACCESS_SEQUENTIAL_UNBUFFERED: top-to-bottom reading only * * The type of access an operation has to supply. See vips_tilecache() * and #VipsForeign. * * @VIPS_ACCESS_RANDOM means requests can come in any order. * * @VIPS_ACCESS_SEQUENTIAL means requests will be top-to-bottom, but with some * amount of buffering behind the read point for small non-local accesses. * * @VIPS_ACCESS_SEQUENTIAL_UNBUFFERED means requests will be strictly * top-to-bottom with no read-behind. This can save some memory. */ /** * VipsDemandStyle: * @VIPS_DEMAND_STYLE_SMALLTILE: demand in small (typically 64x64 pixel) tiles * @VIPS_DEMAND_STYLE_FATSTRIP: demand in fat (typically 10 pixel high) strips * @VIPS_DEMAND_STYLE_THINSTRIP: demand in thin (typically 1 pixel high) strips * @VIPS_DEMAND_STYLE_ANY: demand geometry does not matter * * See vips_image_pipelinev(). Operations can hint to the VIPS image IO * system about the kind of demand geometry they prefer. * * These demand styles are given below in order of increasing * restrictiveness. When demanding output from a pipeline, * vips_image_generate() * will use the most restrictive of the styles requested by the operations * in the pipeline. * * #VIPS_DEMAND_STYLE_THINSTRIP --- This operation would like to output strips * the width of the image and a few pels high. This is option suitable for * point-to-point operations, such as those in the arithmetic package. * * This option is only efficient for cases where each output pel depends * upon the pel in the corresponding position in the input image. * * #VIPS_DEMAND_STYLE_FATSTRIP --- This operation would like to output strips * the width of the image and as high as possible. This option is suitable * for area operations which do not violently transform coordinates, such * as vips_conv(). * * #VIPS_DEMAND_STYLE_SMALLTILE --- This is the most general demand format. * Output is demanded in small (around 100x100 pel) sections. This style works * reasonably efficiently, even for bizzare operations like 45 degree rotate. * * #VIPS_DEMAND_STYLE_ANY --- This image is not being demand-read from a disc * file (even indirectly) so any demand style is OK. It's used for things like * vips_black() where the pixels are calculated. * * See also: vips_image_pipelinev(). */ /** * VipsInterpretation: * @VIPS_INTERPRETATION_MULTIBAND: generic many-band image * @VIPS_INTERPRETATION_B_W: some kind of single-band image * @VIPS_INTERPRETATION_HISTOGRAM: a 1D image, eg. histogram or lookup table * @VIPS_INTERPRETATION_FOURIER: image is in fourier space * @VIPS_INTERPRETATION_XYZ: the first three bands are CIE XYZ * @VIPS_INTERPRETATION_LAB: pixels are in CIE Lab space * @VIPS_INTERPRETATION_CMYK: the first four bands are in CMYK space * @VIPS_INTERPRETATION_LABQ: implies #VIPS_CODING_LABQ * @VIPS_INTERPRETATION_RGB: generic RGB space * @VIPS_INTERPRETATION_CMC: a uniform colourspace based on CMC(1:1) * @VIPS_INTERPRETATION_LCH: pixels are in CIE LCh space * @VIPS_INTERPRETATION_LABS: CIE LAB coded as three signed 16-bit values * @VIPS_INTERPRETATION_sRGB: pixels are sRGB * @VIPS_INTERPRETATION_HSV: pixels are HSV * @VIPS_INTERPRETATION_scRGB: pixels are scRGB * @VIPS_INTERPRETATION_YXY: pixels are CIE Yxy * @VIPS_INTERPRETATION_RGB16: generic 16-bit RGB * @VIPS_INTERPRETATION_GREY16: generic 16-bit mono * @VIPS_INTERPRETATION_MATRIX: a matrix * * How the values in an image should be interpreted. For example, a * three-band float image of type #VIPS_INTERPRETATION_LAB should have its * pixels interpreted as coordinates in CIE Lab space. * * These values are set by operations as hints to user-interfaces built on top * of VIPS to help them show images to the user in a meaningful way. * Operations do not use these values to decide their action. * * The gaps in numbering are historical and must be maintained. Allocate * new numbers from the end. */ /** * VipsBandFormat: * @VIPS_FORMAT_NOTSET: invalid setting * @VIPS_FORMAT_UCHAR: unsigned char format * @VIPS_FORMAT_CHAR: char format * @VIPS_FORMAT_USHORT: unsigned short format * @VIPS_FORMAT_SHORT: short format * @VIPS_FORMAT_UINT: unsigned int format * @VIPS_FORMAT_INT: int format * @VIPS_FORMAT_FLOAT: float format * @VIPS_FORMAT_COMPLEX: complex (two floats) format * @VIPS_FORMAT_DOUBLE: double float format * @VIPS_FORMAT_DPCOMPLEX: double complex (two double) format * * The format used for each band element. * * Each corresponds to a native C type for the current machine. For example, * #VIPS_FORMAT_USHORT is unsigned short. */ /** * VipsCoding: * @VIPS_CODING_NONE: pixels are not coded * @VIPS_CODING_LABQ: pixels encode 3 float CIELAB values as 4 uchar * @VIPS_CODING_RAD: pixels encode 3 float RGB as 4 uchar (Radiance coding) * * How pixels are coded. * * Normally, pixels are uncoded and can be manipulated as you would expect. * However some file formats code pixels for compression, and sometimes it's * useful to be able to manipulate images in the coded format. * * The gaps in the numbering are historical and must be maintained. Allocate * new numbers from the end. */ /** * VipsProgress: * @run: Time we have been running * @eta: Estimated seconds of computation left * @tpels: Number of pels we expect to calculate * @npels: Number of pels calculated so far * @percent: Percent complete * @start: Start time * * A structure available to eval callbacks giving information on evaluation * progress. See #VipsImage::eval. */ /** * VipsImage: * * An image. These can represent an image on disc, a memory buffer, an image * in the process of being written to disc or a partially evaluated image * in memory. */ /** * VIPS_IMAGE_SIZEOF_ELEMENT: * @I: a #VipsImage * * Returns: sizeof() a band element. */ /** * VIPS_IMAGE_SIZEOF_PEL: * @I: a #VipsImage * * Returns: sizeof() a pixel. */ /** * VIPS_IMAGE_SIZEOF_LINE: * @I: a #VipsImage * * Returns: sizeof() a scanline of pixels. */ /** * VIPS_IMAGE_N_ELEMENTS: * @I: a #VipsImage * * Returns: The number of band elements in a scanline. */ /** * VIPS_IMAGE_N_PELS: * @I: a #VipsImage * * Returns: The number of pels in an image. A 64-bit unsigned int. */ /** * VIPS_IMAGE_ADDR: * @I: a #VipsImage * @X: x coordinate * @Y: y coordinate * * This macro returns a pointer to a pixel in an image, cast to a #VipsPel *. * It only works for * images which are fully available in memory, so memory buffers and small * mapped images only. * * If VIPS_DEBUG is defined, you get a version that checks bounds for you. * * See also: vips_image_wio_input(), vips_image_inplace(), VIPS_REGION_ADDR(). * * Returns: The address of pixel (@X,@Y) in @I. */ /** * VIPS_MATRIX: * @I: a #VipsImage * @X: x coordinate * @Y: y coordinate * * This macro returns a pointer to a pixel in an image, cast to a double*. The * image must have a single band, be #VIPS_FORMAT_DOUBLE and be * fully available in memory, so memory buffers and small * mapped images only. * * If VIPS_DEBUG is defined, you get a version that checks bounds and image * type for you. * * See also: vips_image_wio_input(), vips_image_inplace(), vips_check_matrix(). * * Returns: The address of pixel (@X,@Y) in @I. */ /* Our signals. */ enum { SIG_PREEVAL, SIG_EVAL, SIG_POSTEVAL, SIG_WRITTEN, SIG_INVALIDATE, SIG_MINIMISE, SIG_LAST }; /* Progress feedback. Only really useful for testing, tbh. */ int vips__progress = 0; /* A string giving the image size (in bytes of uncompressed image) above which * we decompress to disc on open. Can be eg. "12m" for 12 megabytes. */ char *vips__disc_threshold = NULL; static guint vips_image_signals[SIG_LAST] = { 0 }; G_DEFINE_TYPE( VipsImage, vips_image, VIPS_TYPE_OBJECT ); /** * vips_progress_set: * @progress: %TRUE to enable progress messages * * If set, vips will print messages about the progress of computation to * stdout. This can also be enabled with the --vips-progress option, or by * setting the environment variable VIPS_PROGRESS. */ void vips_progress_set( gboolean progress ) { vips__progress = progress; } static void vips_image_delete( VipsImage *image ) { if( image->delete_on_close ) { g_assert( image->delete_on_close_filename ); VIPS_DEBUG_MSG( "vips_image_delete: removing temp %s\n", image->delete_on_close_filename ); g_unlink( image->delete_on_close_filename ); VIPS_FREE( image->delete_on_close_filename ); image->delete_on_close = FALSE; } } static void vips_image_finalize( GObject *gobject ) { VipsImage *image = VIPS_IMAGE( gobject ); VIPS_DEBUG_MSG( "vips_image_finalize: %p\n", gobject ); /* Should be no regions defined on the image, since they all hold a * ref to their host image. */ g_assert( !image->regions ); /* Therefore there should be no windows. */ g_assert( !image->windows ); /* Junk generate functions. */ image->start_fn = NULL; image->generate_fn = NULL; image->stop_fn = NULL; image->client1 = NULL; image->client2 = NULL; /* No more upstream/downstream links. */ vips__link_break_all( image ); if( image->time ) { VIPS_FREEF( g_timer_destroy, image->time->start ); VIPS_FREE( image->time ); } /* Any image data? */ if( image->data ) { /* Buffer image. Only free stuff we know we allocated. */ if( image->dtype == VIPS_IMAGE_SETBUF ) { VIPS_DEBUG_MSG( "vips_image_finalize: " "freeing buffer\n" ); vips_tracked_free( image->data ); image->dtype = VIPS_IMAGE_NONE; } image->data = NULL; } /* If this is a temp, delete it. */ vips_image_delete( image ); VIPS_FREEF( vips_g_mutex_free, image->sslock ); VIPS_FREE( image->Hist ); VIPS_FREEF( vips__gslist_gvalue_free, image->history_list ); vips__meta_destroy( image ); G_OBJECT_CLASS( vips_image_parent_class )->finalize( gobject ); } static void vips_image_dispose( GObject *gobject ) { VipsImage *image = VIPS_IMAGE( gobject ); VIPS_DEBUG_MSG( "vips_image_dispose: %p\n", gobject ); vips_object_preclose( VIPS_OBJECT( gobject ) ); /* We have to junk the fd in dispose, since we run this for rewind and * we must close and reopen the file when we switch from write to * read. */ /* Any file mapping? */ if( image->baseaddr ) { /* MMAP file. */ VIPS_DEBUG_MSG( "vips_image_dispose: unmapping file\n" ); vips__munmap( image->baseaddr, image->length ); image->baseaddr = NULL; image->length = 0; /* This must have been a pointer to the mmap region, rather * than a setbuf. */ image->data = NULL; } /* Is there a file descriptor? */ if( image->fd != -1 ) { VIPS_DEBUG_MSG( "vips_image_dispose: closing output file\n" ); if( vips_tracked_close( image->fd ) == -1 ) vips_error( "VipsImage", "%s", _( "unable to close fd" ) ); image->fd = -1; } G_OBJECT_CLASS( vips_image_parent_class )->dispose( gobject ); } static VipsObject * vips_image_new_from_file_object( const char *string ) { VipsImage *image; vips_check_init(); /* We mustn't _build() the object here, so we can't just call * vips_image_new_from_file(). */ image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", string, "mode", "r", NULL ); return( VIPS_OBJECT( image ) ); } static void vips_image_to_string( VipsObject *object, VipsBuf *buf ) { VipsImage *image = VIPS_IMAGE( object ); vips_buf_appends( buf, image->filename ); } static int vips_image_write_object( VipsObject *object, const char *string ) { return( vips_image_write_to_file( VIPS_IMAGE( object ), string, NULL ) ); } static void * print_field_fn( VipsImage *image, const char *field, GValue *value, void *a ) { VipsBuf *buf = (VipsBuf *) a; const char *extra; char *str_value; /* Look for known enums and decode them. */ extra = NULL; if( strcmp( field, "coding" ) == 0 ) extra = vips_enum_nick( VIPS_TYPE_CODING, g_value_get_int( value ) ); else if( strcmp( field, "format" ) == 0 ) extra = vips_enum_nick( VIPS_TYPE_BAND_FORMAT, g_value_get_int( value ) ); else if( strcmp( field, "interpretation" ) == 0 ) extra = vips_enum_nick( VIPS_TYPE_INTERPRETATION, g_value_get_int( value ) ); str_value = g_strdup_value_contents( value ); vips_buf_appendf( buf, "%s: %s", field, str_value ); g_free( str_value ); if( extra ) vips_buf_appendf( buf, " - %s", extra ); vips_buf_appendf( buf, "\n" ); return( NULL ); } static void vips_image_dump( VipsObject *object, VipsBuf *buf ) { VipsImage *image = VIPS_IMAGE( object ); vips_buf_appendf( buf, ngettext( "%dx%d %s, %d band, %s", "%dx%d %s, %d bands, %s", vips_image_get_bands( image ) ), vips_image_get_width( image ), vips_image_get_height( image ), vips_enum_nick( VIPS_TYPE_BAND_FORMAT, vips_image_get_format( image ) ), vips_image_get_bands( image ), vips_enum_nick( VIPS_TYPE_INTERPRETATION, vips_image_get_interpretation( image ) ) ); vips_buf_appendf( buf, ", %s", vips_enum_nick( VIPS_TYPE_IMAGE_TYPE, image->dtype ) ); VIPS_OBJECT_CLASS( vips_image_parent_class )->dump( object, buf ); vips_buf_appendf( buf, "\n" ); (void) vips_image_map( image, print_field_fn, (void *) buf ); vips_buf_appendf( buf, "Hist: %s", vips_image_get_history( image ) ); } static void vips_image_summary( VipsObject *object, VipsBuf *buf ) { VipsImage *image = VIPS_IMAGE( object ); const char *p; vips_buf_appendf( buf, "%dx%d", vips_image_get_width( image ), vips_image_get_height( image ) ); if( vips_image_get_coding( image ) == VIPS_CODING_NONE ) { vips_buf_appendf( buf, ngettext( " %s, %d band, %s", " %s, %d bands, %s", vips_image_get_bands( image ) ), vips_enum_nick( VIPS_TYPE_BAND_FORMAT, vips_image_get_format( image ) ), vips_image_get_bands( image ), vips_enum_nick( VIPS_TYPE_INTERPRETATION, vips_image_get_interpretation( image ) ) ); } else { vips_buf_appendf( buf, ", %s", vips_enum_nick( VIPS_TYPE_CODING, vips_image_get_coding( image ) ) ); } if( vips_image_get_typeof( image, VIPS_META_LOADER ) && !vips_image_get_string( image, VIPS_META_LOADER, &p ) ) vips_buf_appendf( buf, ", %s", p ); VIPS_OBJECT_CLASS( vips_image_parent_class )->summary( object, buf ); } static void * vips_image_sanity_upstream( VipsImage *up, VipsImage *down ) { if( !g_slist_find( up->downstream, down ) || !g_slist_find( down->upstream, up ) ) return( up ); return( NULL ); } static void * vips_image_sanity_downstream( VipsImage *down, VipsImage *up ) { return( vips_image_sanity_upstream( up, down ) ); } static void vips_image_sanity( VipsObject *object, VipsBuf *buf ) { VipsImage *image = VIPS_IMAGE( object ); if( !image->filename ) vips_buf_appends( buf, "NULL filename\n" ); /* All 0 means im has been inited but never used. */ if( image->Xsize != 0 || image->Ysize != 0 || image->Bands != 0 ) { if( image->Xsize <= 0 || image->Ysize <= 0 || image->Bands <= 0 ) vips_buf_appends( buf, "bad dimensions\n" ); if( image->BandFmt < -1 || image->BandFmt > VIPS_FORMAT_DPCOMPLEX || (image->Coding != -1 && image->Coding != VIPS_CODING_NONE && image->Coding != VIPS_CODING_LABQ && image->Coding != VIPS_CODING_RAD) || image->Type >= VIPS_INTERPRETATION_LAST || image->dtype > VIPS_IMAGE_PARTIAL || image->dhint > VIPS_DEMAND_STYLE_ANY ) vips_buf_appends( buf, "bad enum\n" ); if( image->Xres < 0 || image->Yres < 0 ) vips_buf_appends( buf, "bad resolution\n" ); } /* Must lock around inter-image links. */ g_mutex_lock( vips__global_lock ); if( vips_slist_map2( image->upstream, (VipsSListMap2Fn) vips_image_sanity_upstream, image, NULL ) ) vips_buf_appends( buf, "upstream broken\n" ); if( vips_slist_map2( image->downstream, (VipsSListMap2Fn) vips_image_sanity_downstream, image, NULL ) ) vips_buf_appends( buf, "downstream broken\n" ); g_mutex_unlock( vips__global_lock ); VIPS_OBJECT_CLASS( vips_image_parent_class )->sanity( object, buf ); } static void vips_image_rewind( VipsObject *object ) { VipsImage *image = VIPS_IMAGE( object ); char *filename; char *mode; /* This triggers a dispose. Copy filename/mode across the dispose. */ filename = g_strdup( vips_image_get_filename( image ) ); mode = g_strdup( vips_image_get_mode( image ) ); VIPS_OBJECT_CLASS( vips_image_parent_class )->rewind( object ); g_assert( image->filename == NULL ); g_assert( image->mode == NULL ); image->filename = filename; image->mode = mode; } /* Delayed save. */ /* From "written" callback: save to image->filename using VipsForeign. */ static void vips_image_save_cb( VipsImage *image, int *result ) { if( vips_foreign_save( image, image->filename, NULL ) ) *result = -1; } /* Progress feedback. */ static void vips_image_preeval_cb( VipsImage *image, VipsProgress *progress, int *last ) { int tile_width; int tile_height; int nlines; if( vips_image_get_typeof( image, "hide-progress" ) ) return; *last = -1; vips_get_tile_size( image, &tile_width, &tile_height, &nlines ); printf( _( "%s %s: %d x %d pixels, %d threads, %d x %d tiles, " "%d lines in buffer" ), g_get_prgname(), image->filename, image->Xsize, image->Ysize, vips_concurrency_get(), tile_width, tile_height, nlines ); printf( "\n" ); } static void vips_image_eval_cb( VipsImage *image, VipsProgress *progress, int *last ) { if( vips_image_get_typeof( image, "hide-progress" ) ) return; if( progress->percent != *last ) { printf( _( "%s %s: %d%% complete" ), g_get_prgname(), image->filename, progress->percent ); printf( "\r" ); fflush( stdout ); *last = progress->percent; /* Needs DEBUG in region.c vips_region_dump_all(); */ } } static void vips_image_posteval_cb( VipsImage *image, VipsProgress *progress ) { if( vips_image_get_typeof( image, "hide-progress" ) ) return; /* Spaces at end help to erase the %complete message we overwrite. */ printf( _( "%s %s: done in %.3gs \n" ), g_get_prgname(), image->filename, g_timer_elapsed( progress->start, NULL ) ); } /* Attach progress feedback, if required. */ static void vips_image_add_progress( VipsImage *image ) { if( vips__progress || g_getenv( "VIPS_PROGRESS" ) || g_getenv( "IM_PROGRESS" ) ) { /* Keep the %complete we displayed last time here. */ int *last = VIPS_NEW( image, int ); g_signal_connect( image, "preeval", G_CALLBACK( vips_image_preeval_cb ), last ); g_signal_connect( image, "eval", G_CALLBACK( vips_image_eval_cb ), last ); g_signal_connect( image, "posteval", G_CALLBACK( vips_image_posteval_cb ), NULL ); vips_image_set_progress( image, TRUE ); } } /* We have to do a lot of work in _build() so we can work with the stuff in * /deprecated to support the vips7 API. We could get rid of most of this * stuff if we were vips8-only. */ static int vips_image_build( VipsObject *object ) { VipsImage *image = VIPS_IMAGE( object ); const char *filename = image->filename; const char *mode = image->mode; guint32 magic; guint64 sizeof_image; VIPS_DEBUG_MSG( "vips_image_build: %p\n", image ); if( VIPS_OBJECT_CLASS( vips_image_parent_class )->build( object ) ) return( -1 ); /* Parse the mode string. */ switch( mode[0] ) { case 'v': /* Used by 'r' for native open of vips, see below. Also by * vips_image_rewind_output(). */ if( vips_image_open_input( image ) ) return( -1 ); break; case 'r': if( (magic = vips__file_magic( filename )) ) { /* We may need to byteswap. */ guint32 us = vips_amiMSBfirst() ? VIPS_MAGIC_INTEL : VIPS_MAGIC_SPARC; if( magic == us ) { /* Native open. */ if( vips_image_open_input( image ) ) return( -1 ); } else { VipsImage *t; VipsImage *t2; /* Open the image in t, then byteswap to this * image. */ if( !(t = vips_image_new_mode( filename, "v" )) ) return( -1 ); if( vips_byteswap( t, &t2, NULL ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); image->dtype = VIPS_IMAGE_PARTIAL; if( vips_image_write( t2, image ) ) { g_object_unref( t2 ); return( -1 ); } g_object_unref( t2 ); } } else { VipsImage *t; if( mode[1] == 's' ) { if( vips_foreign_load( filename, &t, "access", VIPS_ACCESS_SEQUENTIAL, NULL ) ) return( -1 ); } else { if( vips_foreign_load( filename, &t, NULL ) ) return( -1 ); } image->dtype = VIPS_IMAGE_PARTIAL; if( vips_image_write( t, image ) ) { g_object_unref( t ); return( -1 ); } g_object_unref( t ); } break; case 'w': { const char *file_op; /* Make sure the vips saver is there ... strange things will * happen if this type is renamed or removed. */ g_assert( g_type_from_name( "VipsForeignSaveVips" ) ); if( !(file_op = vips_foreign_find_save( filename )) ) return( -1 ); /* If this is the vips saver, just save directly ourselves. * Otherwise save with VipsForeign when the image has been * written to. */ if( strcmp( file_op, "VipsForeignSaveVips" ) == 0 ) image->dtype = VIPS_IMAGE_OPENOUT; else { image->dtype = VIPS_IMAGE_PARTIAL; g_signal_connect( image, "written", G_CALLBACK( vips_image_save_cb ), NULL ); } } break; case 't': image->dtype = VIPS_IMAGE_SETBUF; image->dhint = VIPS_DEMAND_STYLE_ANY; break; case 'p': image->dtype = VIPS_IMAGE_PARTIAL; break; case 'a': if( (image->fd = vips__open_image_read( filename )) == -1 ) return( -1 ); image->dtype = VIPS_IMAGE_OPENIN; image->dhint = VIPS_DEMAND_STYLE_THINSTRIP; if( image->Bands == 1 ) image->Type = VIPS_INTERPRETATION_B_W; else if( image->Bands == 3 ) image->Type = VIPS_INTERPRETATION_RGB; else image->Type = VIPS_INTERPRETATION_MULTIBAND; /* Read the real file length and check against what we think * the size should be. */ if( (image->file_length = vips_file_length( image->fd )) == -1 ) return( -1 ); /* Very common, so a special message. */ sizeof_image = VIPS_IMAGE_SIZEOF_IMAGE( image ) + image->sizeof_header; if( image->file_length < sizeof_image ) { vips_error( "VipsImage", _( "unable to open \"%s\", file too short" ), image->filename ); return( -1 ); } /* Just weird. Only print a warning for this, since we should * still be able to process it without coredumps. */ if( image->file_length > sizeof_image ) vips_warn( "VipsImage", _( "%s is longer than expected" ), image->filename ); break; case 'm': if( image->Bands == 1 ) image->Type = VIPS_INTERPRETATION_B_W; else if( image->Bands == 3 ) image->Type = VIPS_INTERPRETATION_RGB; else image->Type = VIPS_INTERPRETATION_MULTIBAND; image->dtype = VIPS_IMAGE_SETBUF_FOREIGN; image->dhint = VIPS_DEMAND_STYLE_ANY; break; default: vips_error( "VipsImage", _( "bad mode \"%s\"" ), mode ); return( -1 ); } vips_image_add_progress( image ); return( 0 ); } static void * vips_image_real_invalidate_cb( VipsRegion *reg ) { vips_region_invalidate( reg ); return( NULL ); } static void vips_image_real_invalidate( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_real_invalidate: %p\n", image ); VIPS_GATE_START( "vips_image_real_invalidate: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips_image_real_invalidate: wait" ); (void) vips_slist_map2( image->regions, (VipsSListMap2Fn) vips_image_real_invalidate_cb, NULL, NULL ); g_mutex_unlock( image->sslock ); } static void vips_image_real_minimise( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_real_minimise: %p\n", image ); } static void vips_image_real_written( VipsImage *image, int *result ) { VIPS_DEBUG_MSG( "vips_image_real_written: %p\n", image ); /* For vips image write, append the xml after the data. */ if( image->dtype == VIPS_IMAGE_OPENOUT && vips__writehist( image ) ) *result = -1; } static void vips_image_class_init( VipsImageClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VIPS_DEBUG_MSG( "vips_image_class_init:\n" ); /* We must have threads set up before we can process. */ vips_check_init(); gobject_class->finalize = vips_image_finalize; gobject_class->dispose = vips_image_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->new_from_string = vips_image_new_from_file_object; vobject_class->to_string = vips_image_to_string; vobject_class->output_needs_arg = TRUE; vobject_class->output_to_arg = vips_image_write_object; vobject_class->nickname = "image"; vobject_class->description = _( "image class" ); vobject_class->dump = vips_image_dump; vobject_class->summary = vips_image_summary; vobject_class->sanity = vips_image_sanity; vobject_class->rewind = vips_image_rewind; vobject_class->build = vips_image_build; class->invalidate = vips_image_real_invalidate; class->written = vips_image_real_written; class->minimise = vips_image_real_minimise; /* Create properties. */ /* It'd be good to have these as set once at construct time, but we * can't :-( * * For example, a "p" image might be made with vips_image_new() and * constructed, then passed to vips_copy() of whatever to be written to. * That operation will then need to set width/height etc. * * We can't set_once either, since vips_copy() etc. need to update * xoffset and friends on the way through. */ VIPS_ARG_INT( class, "width", 2, _( "Width" ), _( "Image width in pixels" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Xsize ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 3, _( "Height" ), _( "Image height in pixels" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Ysize ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "bands", 4, _( "Bands" ), _( "Number of bands in image" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Bands ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_ENUM( class, "format", 5, _( "Format" ), _( "Pixel format in image" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, BandFmt ), VIPS_TYPE_BAND_FORMAT, VIPS_FORMAT_UCHAR ); VIPS_ARG_ENUM( class, "coding", 6, _( "Coding" ), _( "Pixel coding" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Coding ), VIPS_TYPE_CODING, VIPS_CODING_NONE ); VIPS_ARG_ENUM( class, "interpretation", 7, _( "Interpretation" ), _( "Pixel interpretation" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Type ), VIPS_TYPE_INTERPRETATION, VIPS_INTERPRETATION_MULTIBAND ); VIPS_ARG_DOUBLE( class, "xres", 8, _( "Xres" ), _( "Horizontal resolution in pixels/mm" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Xres ), -0.0, 1000000, 0 ); VIPS_ARG_DOUBLE( class, "yres", 9, _( "Yres" ), _( "Vertical resolution in pixels/mm" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Yres ), -0.0, 1000000, 0 ); VIPS_ARG_INT( class, "xoffset", 10, _( "Xoffset" ), _( "Horizontal offset of origin" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Xoffset ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_INT( class, "yoffset", 11, _( "Yoffset" ), _( "Vertical offset of origin" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, Yoffset ), -VIPS_MAX_COORD, VIPS_MAX_COORD, 0 ); VIPS_ARG_STRING( class, "filename", 12, _( "Filename" ), _( "Image filename" ), VIPS_ARGUMENT_SET_ONCE | VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, filename ), NULL ); VIPS_ARG_STRING( class, "mode", 13, _( "Mode" ), _( "Open mode" ), VIPS_ARGUMENT_SET_ONCE | VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, mode ), "p" ); VIPS_ARG_BOOL( class, "kill", 14, _( "Kill" ), _( "Block evaluation on this image" ), VIPS_ARGUMENT_SET_ALWAYS, G_STRUCT_OFFSET( VipsImage, kill ), FALSE ); VIPS_ARG_ENUM( class, "demand", 15, _( "Demand style" ), _( "Preferred demand style for this image" ), VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, dhint ), VIPS_TYPE_DEMAND_STYLE, VIPS_DEMAND_STYLE_SMALLTILE ); VIPS_ARG_UINT64( class, "sizeof_header", 16, _( "Size of header" ), _( "Offset in bytes from start of file" ), VIPS_ARGUMENT_SET_ONCE | VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, sizeof_header ), 0, 1000000000, VIPS_SIZEOF_HEADER ); VIPS_ARG_POINTER( class, "foreign_buffer", 17, _( "Foreign buffer" ), _( "Pointer to foreign pixels" ), VIPS_ARGUMENT_SET_ONCE | VIPS_ARGUMENT_CONSTRUCT, G_STRUCT_OFFSET( VipsImage, data ) ); /* Create signals. */ /** * VipsImage::preeval: * @image: the image to be calculated * @progress: #VipsProgress for this image * * The ::preeval signal is emitted once before computation of @image * starts. It's a good place to set up evaluation feedback. * * Use vips_image_set_progress() to turn on progress reporting for an * image. */ vips_image_signals[SIG_PREEVAL] = g_signal_new( "preeval", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsImageClass, preeval ), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER ); /** * VipsImage::eval: * @image: the image being calculated * @progress: #VipsProgress for this image * * The ::eval signal is emitted once per work unit (typically a 128 x * 128 area of pixels) during image computation. * * You can use this signal to update user-interfaces with progress * feedback. Beware of updating too frequently: you will usually * need some throttling mechanism. * * Use vips_image_set_progress() to turn on progress reporting for an * image. */ vips_image_signals[SIG_EVAL] = g_signal_new( "eval", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsImageClass, eval ), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER ); /** * VipsImage::posteval: * @image: the image that was calculated * @progress: #VipsProgress for this image * * The ::posteval signal is emitted once at the end of the computation * of @image. It's a good place to shut down evaluation feedback. * * Use vips_image_set_progress() to turn on progress reporting for an * image. */ vips_image_signals[SIG_POSTEVAL] = g_signal_new( "posteval", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsImageClass, posteval ), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER ); /** * VipsImage::written: * @image: the image that was calculated * @result: set to non-zero to indicate error * * The ::written signal is emitted just after an image has been * written to. It is * used by vips to implement things like write to foreign file * formats. */ vips_image_signals[SIG_WRITTEN] = g_signal_new( "written", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsImageClass, written ), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER ); /** * VipsImage::invalidate: * @image: the image that has changed * * The ::invalidate signal is emitted when an image or one of it's * upstream data sources has been destructively modified. See * vips_image_invalidate_all(). */ vips_image_signals[SIG_INVALIDATE] = g_signal_new( "invalidate", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsImageClass, invalidate ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); /** * VipsImage::minimise: * @image: the image that is being minimised * * The ::minimise signal is emitted when an image has been asked to * minimise memory usage. All non-essential caches are dropped. * See * vips_image_minimise_all(). */ vips_image_signals[SIG_MINIMISE] = g_signal_new( "minimise", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET( VipsImageClass, minimise ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void vips_image_init( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_init: %p\n", image ); /* Default to native order. */ image->magic = vips_amiMSBfirst() ? VIPS_MAGIC_SPARC : VIPS_MAGIC_INTEL; image->Xsize = 1; image->Ysize = 1; image->Bands = 1; image->Xres = 1.0; image->Yres = 1.0; image->fd = -1; /* since 0 is stdout */ image->sslock = vips_g_mutex_new(); image->sizeof_header = VIPS_SIZEOF_HEADER; image->mode = g_strdup( "p" ); } int vips_image_written( VipsImage *image ) { int result; VIPS_DEBUG_MSG( "vips_image_written: %p\n", image ); result = 0; g_signal_emit( image, vips_image_signals[SIG_WRITTEN], 0, &result ); return( result ); } void vips_image_invalidate( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_invalidate: %p\n", image ); g_signal_emit( image, vips_image_signals[SIG_INVALIDATE], 0 ); } static void * vips_image_invalidate_all_cb( VipsImage *image ) { vips_image_invalidate( image ); return( NULL ); } /** * vips_image_invalidate_all: * @image: #VipsImage to invalidate * * Invalidate all pixel caches on @image and any downstream images, that * is, images which depend on this image. Additionally, all operations which * depend upon this image are dropped from the VIPS operation cache. * * You should call this function after * destructively modifying an image with something like vips_draw_circle(). * * The #VipsImage::invalidate signal is emitted for all invalidated images. * * See also: vips_region_invalidate(). */ void vips_image_invalidate_all( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_invalidate_all: %p\n", image ); (void) vips__link_map( image, FALSE, (VipsSListMap2Fn) vips_image_invalidate_all_cb, NULL, NULL ); } void vips_image_minimise( VipsImage *image ) { VIPS_DEBUG_MSG( "vips_image_minimise: %p\n", image ); g_signal_emit( image, vips_image_signals[SIG_MINIMISE], 0 ); } static void * vips_image_minimise_all_cb( VipsImage *image ) { vips_image_minimise( image ); return( NULL ); } /** * vips_image_minimise_all: * @image: #VipsImage to minimise * * Minimise memory use on this image and any upstream images, that is, images * which this image depends upon. This function is called automatically at the * end of a computation, but it might be useful to call at other times. * * The #VipsImage::minimise signal is emitted for all minimised images. */ void vips_image_minimise_all( VipsImage *image ) { (void) vips__link_map( image, TRUE, (VipsSListMap2Fn) vips_image_minimise_all_cb, NULL, NULL ); } /* Attach a new time struct, if necessary, and reset it. */ static int vips_progress_add( VipsImage *image ) { VipsProgress *progress; VIPS_DEBUG_MSG( "vips_progress_add: %p\n", image ); if( !(progress = image->time) ) { if( !(image->time = VIPS_NEW( NULL, VipsProgress )) ) return( -1 ); progress = image->time; progress->im = image; progress->start = NULL; } if( !progress->start ) progress->start = g_timer_new(); g_timer_start( progress->start ); progress->run = 0; progress->eta = 0; progress->tpels = VIPS_IMAGE_N_PELS( image ); progress->npels = 0; progress->percent = 0; return( 0 ); } static void vips_progress_update( VipsProgress *progress, guint64 processed ) { float prop; VIPS_DEBUG_MSG( "vips_progress_update: %p\n", progress ); g_assert( progress ); progress->run = g_timer_elapsed( progress->start, NULL ); progress->npels = processed; prop = (float) progress->npels / (float) progress->tpels; progress->percent = 100 * prop; /* Don't estimate eta until we are 10% in. */ if( prop > 0.1 ) progress->eta = (1.0 / prop) * progress->run - progress->run; } void vips_image_preeval( VipsImage *image ) { if( image->progress_signal ) { VIPS_DEBUG_MSG( "vips_image_preeval: %p\n", image ); g_assert( vips_object_sanity( VIPS_OBJECT( image->progress_signal ) ) ); (void) vips_progress_add( image ); /* For vips7 compat, we also have to make sure ->time on the * image that was originally marked with * vips_image_set_progress() is valid. */ (void) vips_progress_add( image->progress_signal ); g_signal_emit( image->progress_signal, vips_image_signals[SIG_PREEVAL], 0, image->progress_signal->time ); } } /* Updated the number of pixels that have been processed. */ void vips_image_eval( VipsImage *image, guint64 processed ) { if( image->progress_signal && image->time ) { VIPS_DEBUG_MSG( "vips_image_eval: %p\n", image ); g_assert( vips_object_sanity( VIPS_OBJECT( image->progress_signal ) ) ); vips_progress_update( image->time, processed ); /* For vips7 compat, update the ->time on the signalling image * too, even though it may have a different width/height to * the image we are actually generating. */ if( image->progress_signal->time != image->time ) vips_progress_update( image->progress_signal->time, processed ); g_signal_emit( image->progress_signal, vips_image_signals[SIG_EVAL], 0, image->time ); } } void vips_image_posteval( VipsImage *image ) { if( image->progress_signal ) { VipsProgress *progress = image->progress_signal->time; VIPS_DEBUG_MSG( "vips_image_posteval: %p\n", image ); g_assert( progress ); g_assert( vips_object_sanity( VIPS_OBJECT( image->progress_signal ) ) ); g_signal_emit( image->progress_signal, vips_image_signals[SIG_POSTEVAL], 0, progress ); } } /** * vips_image_set_progress: * @image: image to signal progress on * @progress: turn progress reporting on or off * * vips signals evaluation progress via the #VipsImage::preeval, * #VipsImage::eval and #VipsImage::posteval * signals. Progress is signalled on the most-downstream image for which * vips_image_set_progress() was called. */ void vips_image_set_progress( VipsImage *image, gboolean progress ) { if( progress && !image->progress_signal ) { VIPS_DEBUG_MSG( "vips_image_set_progress: %p %s\n", image, image->filename ); image->progress_signal = image; } else image->progress_signal = NULL; } /** * vips_image_iskilled: * @image: image to test * * If @image has been killed (see vips_image_kill()), set an error message, * clear the #VipsImage.kill flag and return %FALSE. Otherwise return %TRUE. * * Handy for loops which need to run sets of threads which can fail. * * See also: vips_image_kill(). * * Returns: %FALSE if @image has been killed. */ gboolean vips_image_iskilled( VipsImage *image ) { gboolean kill; kill = image->kill; /* Has kill been set for this image? If yes, abort evaluation. */ if( image->kill ) { VIPS_DEBUG_MSG( "vips_image_iskilled: %s (%p) killed\n", image->filename, image ); vips_error( "VipsImage", _( "killed for image \"%s\"" ), image->filename ); /* We've picked up the kill message, it's now our caller's * responsibility to pass the message up the chain. */ vips_image_set_kill( image, FALSE ); } return( kill ); } /** * vips_image_set_kill: * @image: image to test * @kill: the kill state * * Set the #VipsImage.kill flag on an image. Handy for stopping sets of * threads. * * See also: vips_image_iskilled(). * * Returns: %FALSE if @image has been killed. */ void vips_image_set_kill( VipsImage *image, gboolean kill ) { if( image->kill != kill ) VIPS_DEBUG_MSG( "vips_image_set_kill: %s (%p) %d\n", image->filename, image, kill ); image->kill = kill; } /* Make a name for a filename-less image. Use immediately, don't free the * result. */ static const char * vips_image_temp_name( void ) { static int serial = 0; static char name[256]; vips_snprintf( name, 256, "temp-%d", serial++ ); return( name ); } /** * vips_image_new: * * vips_image_new() creates a new, empty #VipsImage. * If you write to one of these images, vips will just attach some callbacks, * no pixels will be generated. * * Write pixels to an image with vips_image_generate() or * vips_image_write_line(). Write a whole image to another image with * vips_image_write(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new( void ) { VipsImage *image; vips_check_init(); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", vips_image_temp_name(), "mode", "p", NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } return( image ); } VipsImage * vips_image_new_mode( const char *filename, const char *mode ) { VipsImage *image; g_assert( filename ); g_assert( mode ); vips_check_init(); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", filename, "mode", mode, NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } return( image ); } /** * vips_image_new_memory: * * vips_image_new_memory() creates a new #VipsImage which, when written to, will * create a memory image. * * See also: vips_image_new(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_memory( void ) { return( vips_image_new_mode( vips_image_temp_name(), "t" ) ); } /** * vips_image_memory: * * A renamed vips_image_new_memory() ... Some gobject binding systems do not * like more than one _new() method. * * See also: vips_image_new_memory(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_memory( void ) { return( vips_image_new_memory() ); } /** * vips_filename_get_filename: * @vips_filename: a filename including a set of options * * Given a vips filename like "fred.jpg[Q=90]", return a new string of * just the filename part, "fred.jpg" in this case. * * Useful for language bindings. * * See also: vips_filename_get_options(). * * Returns: transfer full: just the filename component. */ char * vips_filename_get_filename( const char *vips_filename ) { char filename[VIPS_PATH_MAX]; char options[VIPS_PATH_MAX]; vips__filename_split8( vips_filename, filename, options ); return( g_strdup( filename ) ); } /** * vips_filename_get_options: * @vips_filename: a filename including a set of options * * Given a vips filename like "fred.jpg[Q=90]", return a new string of * just the options part, "[Q=90]" in this case. * * Useful for language bindings. * * See also: vips_filename_get_filename(). * * Returns: transfer full: just the options component. */ char * vips_filename_get_options( const char *vips_filename ) { char filename[VIPS_PATH_MAX]; char options[VIPS_PATH_MAX]; vips__filename_split8( vips_filename, filename, options ); return( g_strdup( options ) ); } /** * vips_image_new_from_file: * @name: file to open * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @access: hint #VipsAccess mode to loader * @disc: load via a temporary disc file * * vips_image_new_from_file() opens @name for reading. It can load files * in many image formats, including VIPS, TIFF, PNG, JPEG, FITS, Matlab, * OpenEXR, CSV, WebP, Radiance, RAW, PPM and others. * * Load options may be appended to @filename as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the filename. * Many loaders add extra options, see vips_jpegload(), for example. * * vips_image_new_from_file() always returns immediately with the header * fields filled in. No pixels are actually read until you first access them. * * @access lets you set a #VipsAccess hint giving the expected access pattern * for this file. * #VIPS_ACCESS_RANDOM means you can fetch pixels randomly from the image. * This is the default mode. #VIPS_ACCESS_SEQUENTIAL means you will read the * whole image exactly once, top-to-bottom. In this mode, vips can avoid * converting the whole image in one go, for a large memory saving. You are * allowed to make small non-local references, so area operations like * convolution will work. #VIPS_ACCESS_SEQUENTIAL_UNBUFFERED does not allow * non-local references, so will only work for very strict top-to-bottom * operations, but does have very low memory needs. * * In #VIPS_ACCESS_RANDOM mode, small images are decompressed to memory and * then processed from there. Large images are decompressed to temporary * random-access files on disc and then processed from there. Set @disc to * %TRUE to force loading via disc. See vips_image_new_temp_file() for an * explanation of how VIPS selects a location for the temporary file. * * The disc threshold can be set with the "--vips-disc-threshold" * command-line argument, or the VIPS_DISC_THRESHOLD environment variable. * The value is a simple integer, but can take a unit postfix of "k", * "m" or "g" to indicate kilobytes, megabytes or gigabytes. * The default threshold is 100 MB. * * For example: * * |[ * VipsImage *image = vips_image_new_from_file ("fred.tif", * "page", 12, * NULL); * ]| * * Will open "fred.tif", reading page 12. * * |[ * VipsImage *image = vips_image_new_from_file ("fred.jpg[shrink=2]", * NULL); * ]| * * Will open "fred.jpg", downsampling by a factor of two. * * Use vips_foreign_find_load() or vips_foreign_is_a() to see what format a * file is in and therefore what options are available. If you need more * control over the loading process, you can call loaders directly, see * vips_jpegload(), for example. * * See also: vips_foreign_find_load(), vips_foreign_is_a(), * vips_image_write_to_file(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_file( const char *name, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; va_list ap; VipsImage *out; int result; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_load( filename )) ) return( NULL ); va_start( ap, name ); result = vips_call_split_option_string( operation_name, option_string, ap, filename, &out ); va_end( ap ); if( result ) return( NULL ); return( out ); } /** * vips_image_new_from_file_RW: * @filename: filename to open * * Opens the named file for simultaneous reading and writing. This will only * work for VIPS files in a format native to your machine. It is only for * paintbox-type applications. * * See also: vips_draw_circle(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_file_RW( const char *filename ) { return( vips_image_new_mode( filename, "rw" ) ); } /** * vips_image_new_from_file_raw: * @filename: filename to open * @xsize: image width * @ysize: image height * @bands: image bands (or bytes per pixel) * @offset: bytes to skip at start of file * * This function maps the named file and returns a #VipsImage you can use to * read it. * * It returns an 8-bit image with @bands bands. If the image is not 8-bit, use * vips_copy() to transform the descriptor after loading it. * * See also: vips_copy(), vips_rawload(), vips_image_new_from_file(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_file_raw( const char *filename, int xsize, int ysize, int bands, guint64 offset ) { VipsImage *image; vips_check_init(); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", filename, "mode", "a", "width", xsize, "height", ysize, "bands", bands, "sizeof_header", offset, NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } return( image ); } /** * vips_image_new_from_memory: * @data: (array length=size) (element-type guint8) (transfer none): start of memory area * @size: length of memory area * @width: image width * @height: image height * @bands: image bands (or bytes per pixel) * @format: image format * * This function wraps a #VipsImage around a memory area. The memory area * must be a simple array, for example RGBRGBRGB, left-to-right, * top-to-bottom. Use vips_image_new_from_buffer() to load an area of memory * containing an image in a format. * * VIPS does not take * responsibility for the area of memory, it's up to you to make sure it's * freed when the image is closed. See for example #VipsObject::close. * * Because VIPS is "borrowing" @data from the caller, this function is * extremely dangerous. Unless you are very careful, you will get crashes or * memory corruption. Use vips_image_new_from_memory_copy() instead if you are * at all unsure. * * Use vips_copy() to set other image properties. * * See also: vips_image_new(), vips_image_write_to_memory(), * vips_image_new_from_memory_copy(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_memory( const void *data, size_t size, int width, int height, int bands, VipsBandFormat format ) { VipsImage *image; vips_check_init(); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", vips_image_temp_name(), "mode", "m", "foreign_buffer", data, "width", width, "height", height, "bands", bands, "format", format, NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } /* Allow len == 0, meaning don't check. Used for im_image() * compatibility. */ if( size > 0 && size < VIPS_IMAGE_SIZEOF_IMAGE( image ) ) { vips_error( "VipsImage", _( "memory area too small --- " "should be %zd bytes, you passed %zd" ), VIPS_IMAGE_SIZEOF_IMAGE( image ), size ); VIPS_UNREF( image ); return( NULL ); } return( image ); } static void vips_image_new_from_memory_copy_cb( VipsImage *image, void *data_copy ) { vips_tracked_free( data_copy ); } /** * vips_image_new_from_memory_copy: * @data: (array length=size) (element-type guint8) (transfer none): start of memory area * @size: length of memory area * @width: image width * @height: image height * @bands: image bands (or bytes per pixel) * @format: image format * * Like vips_image_new_from_memory(), but VIPS will make a copy of the memory * area. This * means more memory use and an extra copy operation, but is much simpler and * safer. * * See also: vips_image_new_from_memory(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_memory_copy( const void *data, size_t size, int width, int height, int bands, VipsBandFormat format ) { void *data_copy; VipsImage *image; vips_check_init(); if( !(data_copy = vips_tracked_malloc( size )) ) return( NULL ); memcpy( data_copy, data, size ); if( !(image = vips_image_new_from_memory( data_copy, size, width, height, bands, format )) ) { vips_tracked_free( data_copy ); return( NULL ); } g_signal_connect( image, "close", G_CALLBACK( vips_image_new_from_memory_copy_cb ), data_copy ); return( image ); } /** * vips_image_new_from_buffer: * @buf: (array length=len) (element-type guint8) (transfer none): image data * @len: length of memory buffer * @option_string: set of extra options as a string * @...: %NULL-terminated list of optional named arguments * * Loads an image from the formatted area of memory @buf, @len using the * loader recommended by vips_foreign_find_load_buffer(). Only TIFF, PNG and * JPEG formats are supported. To load an unformatted area of memory, use * vips_image_new_from_memory(). * * VIPS does not take * responsibility for the area of memory, it's up to you to make sure it's * freed when the image is closed. See for example #VipsObject::close. * * Load options may be given in @option_string as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the filename. * * See also: vips_image_write_to_buffer(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_from_buffer( const void *buf, size_t len, const char *option_string, ... ) { const char *operation_name; VipsBlob *blob; va_list ap; int result; VipsImage *out; vips_check_init(); if( !(operation_name = vips_foreign_find_load_buffer( buf, len )) ) return( NULL ); /* We don't take a copy of the data or free it. */ blob = vips_blob_new( NULL, buf, len ); va_start( ap, option_string ); result = vips_call_split_option_string( operation_name, option_string, ap, blob, &out ); va_end( ap ); vips_area_unref( VIPS_AREA( blob ) ); if( result ) return( NULL ); return( out ); } /** * vips_image_new_matrix: * @width: image width * @height: image height * * This convenience function makes an image which is a matrix: a one-band * #VIPS_FORMAT_DOUBLE image held in memory. * * Use VIPS_IMAGE_ADDR(), or VIPS_MATRIX() to address pixels in the image. * * Use vips_image_set_double() to set "scale" and "offset", if required. * * See also: vips_image_new_matrixv() * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_matrix( int width, int height ) { VipsImage *image; vips_check_init(); image = VIPS_IMAGE( g_object_new( VIPS_TYPE_IMAGE, NULL ) ); g_object_set( image, "filename", "vips_image_new_matrix", "mode", "t", "width", width, "height", height, "bands", 1, "format", VIPS_FORMAT_DOUBLE, "interpretation", VIPS_INTERPRETATION_MATRIX, NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { VIPS_UNREF( image ); return( NULL ); } if( vips_image_write_prepare( image ) ) { g_object_unref( image ); return( NULL ); } return( image ); } /** * vips_image_new_matrixv: * @width: image width * @height: image height * @...: matrix coefficients * * As vips_image_new_matrix(), but initialise the matrix from the argument * list. After @height should be @width * @height double constants which are * used to set the matrix elements. * * See also: vips_image_new_matrix() * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_matrixv( int width, int height, ... ) { va_list ap; VipsImage *matrix; int x, y; vips_check_init(); matrix = vips_image_new_matrix( width, height ); va_start( ap, height ); for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) *VIPS_MATRIX( matrix, x, y ) = va_arg( ap, double ); va_end( ap ); return( matrix ); } /** * vips_image_new_matrix_from_array: * @width: image width * @height: image height * @array: (array length=size) (transfer none): array of elements * @size: number of elements * * A binding-friendly version of vips_image_new_matrixv(). * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_matrix_from_array( int width, int height, const double *array, int size ) { VipsImage *matrix; int x, y; int i; if( size != width * height ) { vips_error( "VipsImage", _( "bad array length --- should be %d, you passed %d" ), width * height, size ); return( NULL ); } vips_check_init(); matrix = vips_image_new_matrix( width, height ); i = 0; for( y = 0; y < height; y++ ) for( x = 0; x < width; x++ ) *VIPS_MATRIX( matrix, x, y ) = array[i++]; return( matrix ); } /** * vips_image_matrix_from_array: * @width: image width * @height: image height * @array: (array length=size) (transfer none): array of elements * @size: number of elements * * A renamed vips_image_new_matrix_from_array(). Some gobject bindings do not * like more than one _new method. * * Returns: (transfer full): the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_matrix_from_array( int width, int height, const double *array, int size ) { return( vips_image_new_matrix_from_array( width, height, array, size ) ); } /** * vips_image_set_delete_on_close: * @image: image to set * @delete_on_close: format of file * * Sets the delete_on_close flag for the image. If this flag is set, when * @image is finalized, the filename held in @image->filename at the time of * this call is deleted. * * This function is clearly extremely dangerous, use with great caution. * * See also: vips_image_new_temp_file(). */ void vips_image_set_delete_on_close( VipsImage *image, gboolean delete_on_close ) { VIPS_DEBUG_MSG( "vips_image_set_delete_on_close: %d %s\n", delete_on_close, image->filename ); image->delete_on_close = delete_on_close; VIPS_FREE( image->delete_on_close_filename ); if( delete_on_close ) VIPS_SETSTR( image->delete_on_close_filename, image->filename ); } /** * vips_get_disc_threshold: * * Return the number of bytes at which we flip between open via memory and * open via disc. This defaults to 100mb, but can be changed with the * VIPS_DISC_THRESHOLD environment variable or the --vips-disc-threshold * command-line flag. See vips_image_new_from_file(). * * Returns: disc threshold in bytes. */ guint64 vips_get_disc_threshold( void ) { static gboolean done = FALSE; static guint64 threshold; if( !done ) { const char *env; done = TRUE; /* 100mb default. */ threshold = 100 * 1024 * 1024; if( (env = g_getenv( "VIPS_DISC_THRESHOLD" )) || (env = g_getenv( "IM_DISC_THRESHOLD" )) ) threshold = vips__parse_size( env ); if( vips__disc_threshold ) threshold = vips__parse_size( vips__disc_threshold ); #ifdef DEBUG printf( "vips_get_disc_threshold: %zd bytes\n", threshold ); #endif /*DEBUG*/ } return( threshold ); } /** * vips_image_new_temp_file: * @format: format of file * * Make a #VipsImage which, when written to, will create a temporary file on * disc. The file will be automatically deleted when the image is destroyed. * @format is something like "%s.v" for a vips file. * * The file is created in the temporary directory. This is set with the * environment variable TMPDIR. If this is not set, then on Unix systems, vips * will default to /tmp. On Windows, vips uses GetTempPath() to find the * temporary directory. * * vips uses g_mkstemp() to make the temporary filename. They generally look * something like "vips-12-EJKJFGH.v". * * See also: vips_image_new(). * * Returns: the new #VipsImage, or %NULL on error. */ VipsImage * vips_image_new_temp_file( const char *format ) { char *name; VipsImage *image; if( !(name = vips__temp_name( format )) ) return( NULL ); if( !(image = vips_image_new_mode( name, "w" )) ) { g_free( name ); return( NULL ); } g_free( name ); vips_image_set_delete_on_close( image, TRUE ); return( image ); } static int vips_image_write_gen( VipsRegion *or, void *seq, void *a, void *b, gboolean *stop ) { VipsRegion *ir = (VipsRegion *) seq; VipsRect *r = &or->valid; /* printf( "vips_image_write_gen: %p " "left = %d, top = %d, width = %d, height = %d\n", or->im, r->left, r->top, r->width, r->height ); */ /* Copy with pointers. */ if( vips_region_prepare( ir, r ) || vips_region_region( or, ir, r, r->left, r->top ) ) return( -1 ); return( 0 ); } /** * vips_image_write: * @image: image to write * @out: write to this image * * Write @image to @out. Use vips_image_new() and friends to create the * #VipsImage you want to write to. * * See also: vips_image_new(), vips_copy(), vips_image_write_to_file(). * * Returns: 0 on success, or -1 on error. */ int vips_image_write( VipsImage *image, VipsImage *out ) { if( vips_image_pio_input( image ) || vips_image_pipelinev( out, VIPS_DEMAND_STYLE_THINSTRIP, image, NULL ) ) return( -1 ); /* We generate from @image partially, so we need to keep it about as * long as @out is about. */ g_object_ref( image ); vips_object_local( out, image ); if( vips_image_generate( out, vips_start_one, vips_image_write_gen, vips_stop_one, image, NULL ) ) return( -1 ); return( 0 ); } /** * vips_image_write_to_file: * @image: image to write * @name: write to this file * @...: %NULL-terminated list of optional named arguments * * Writes @in to @name using the saver recommended by * vips_foreign_find_save(). * * Save options may be appended to @filename as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the filename. * * See also: vips_image_new_from_file(). * * Returns: 0 on success, or -1 on error. */ int vips_image_write_to_file( VipsImage *image, const char *name, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; va_list ap; int result; vips__filename_split8( name, filename, option_string ); if( !(operation_name = vips_foreign_find_save( filename )) ) return( -1 ); va_start( ap, name ); result = vips_call_split_option_string( operation_name, option_string, ap, image, filename ); va_end( ap ); return( result ); } /** * vips_image_write_to_buffer: * @in: image to write * @suffix: format to write * @buf: (array length=size) (element-type guint8) (transfer full): return buffer start here * @size: return buffer length here * @...: %NULL-terminated list of optional named arguments * * Writes @in to a memory buffer in a format specified by @suffix. * * Save options may be appended to @suffix as "[name=value,...]" or given as * a NULL-terminated list of name-value pairs at the end of the arguments. * Options given in the function call override options given in the filename. * * Currently only TIFF, JPEG and PNG formats are supported. * * You can call the various save operations directly if you wish, see * vips_jpegsave_buffer(), for example. * * See also: vips_image_write_to_memory(), vips_image_new_from_buffer(). * * Returns: 0 on success, -1 on error */ int vips_image_write_to_buffer( VipsImage *in, const char *suffix, void **buf, size_t *size, ... ) { char filename[VIPS_PATH_MAX]; char option_string[VIPS_PATH_MAX]; const char *operation_name; VipsBlob *blob; va_list ap; int result; vips__filename_split8( suffix, filename, option_string ); if( !(operation_name = vips_foreign_find_save_buffer( filename )) ) return( -1 ); va_start( ap, size ); result = vips_call_split_option_string( operation_name, option_string, ap, in, &blob ); va_end( ap ); if( blob ) { if( buf ) { *buf = VIPS_AREA( blob )->data; VIPS_AREA( blob )->free_fn = NULL; } if( size ) *size = VIPS_AREA( blob )->length; vips_area_unref( VIPS_AREA( blob ) ); } return( result ); } /** * vips_image_write_to_memory: * @in: image to write * @size: return buffer length here * * Writes @in to memory as a simple, unformatted C-style array. * * The caller is responsible for freeing this memory. * * See also: vips_image_write_to_buffer(). * * Returns: (array length=size) (element-type guint8) (transfer full): return buffer start here */ void * vips_image_write_to_memory( VipsImage *in, size_t *size_out ) { void *buf; size_t size; VipsImage *x; size = VIPS_IMAGE_SIZEOF_IMAGE( in ); if( !(buf = g_try_malloc( size )) ) { vips_error( "vips_image_write_to_memory", _( "out of memory --- size == %dMB" ), (int) (size / (1024.0 * 1024.0)) ); vips_warn( "vips_image_write_to_memory", _( "out of memory --- size == %dMB" ), (int) (size / (1024.0*1024.0)) ); return( NULL ); } x = vips_image_new_from_memory( buf, size, in->Xsize, in->Ysize, in->Bands, in->BandFmt ); if( vips_image_write( in, x ) ) { g_object_unref( x ); g_free( buf ); return( NULL ); } g_object_unref( x ); if( size_out ) *size_out = size; return( buf ); } /** * vips_image_decode: * @in: image to decode * @out: write to this image * * A convenience function to unpack to a format that we can compute with. * @out.coding is always #VIPS_CODING_NONE. * * This unpacks LABQ to plain LAB. Use vips_LabQ2LabS() for a bit more speed * if you need it. * * See also: vips_image_encode(), vips_LabQ2Lab(), vips_rad2float(). * * Returns: 0 on success, or -1 on error. */ int vips_image_decode( VipsImage *in, VipsImage **out ) { /* Keep in sync with vips__vector_to_ink(). */ if( in->Coding == VIPS_CODING_LABQ ) { if( vips_LabQ2Lab( in, out, NULL ) ) return( -1 ); } else if( in->Coding == VIPS_CODING_RAD ) { if( vips_rad2float( in, out, NULL ) ) return( -1 ); } else { if( vips_copy( in, out, NULL ) ) return( -1 ); } return( 0 ); } /** * vips_image_decode_predict: * @in: image to decode * @bands: predict bands here * @format: predict format here * * We often need to know what an image will decode to without actually * decoding it, for example, in arg checking. * * See also: vips_image_decode(). */ int vips_image_decode_predict( VipsImage *in, int *out_bands, VipsBandFormat *out_format ) { VipsBandFormat format; int bands; if( in->Coding == VIPS_CODING_LABQ ) { bands = 3; format = VIPS_FORMAT_FLOAT; } else if( in->Coding == VIPS_CODING_RAD ) { bands = 3; format = VIPS_FORMAT_FLOAT; } else { bands = in->Bands; format = in->BandFmt; } if( out_bands ) *out_bands = bands; if( out_format ) *out_format = format; return( 0 ); } /** * vips_image_encode: * @in: image to encode * @out: write to this image * @coding: coding to apply * * A convenience function to pack to a coding. The inverse of * vips_image_decode(). * * See also: vips_image_decode(). * * Returns: 0 on success, or -1 on error. */ int vips_image_encode( VipsImage *in, VipsImage **out, VipsCoding coding ) { if( coding == VIPS_CODING_LABQ ) { if( vips_Lab2LabQ( in, out, NULL ) ) return( -1 ); } else if( coding == VIPS_CODING_RAD ) { if( vips_float2rad( in, out, NULL ) ) return( -1 ); } else { if( vips_copy( in, out, NULL ) ) return( -1 ); } return( 0 ); } /** * vips_image_isMSBfirst: * @image: image to test * * Return %TRUE if @image is in most-significant- * byte first form. This is the byte order used on the SPARC * architecture and others. */ gboolean vips_image_isMSBfirst( VipsImage *image ) { if( image->magic == VIPS_MAGIC_SPARC ) return( 1 ); else return( 0 ); } /** * vips_image_isfile: * @image: image to test * * Return %TRUE if @image represents a file on disc in some way. */ gboolean vips_image_isfile( VipsImage *image ) { switch( image->dtype ) { case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_OPENIN: return( 1 ); case VIPS_IMAGE_PARTIAL: case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_NONE: return( 0 ); default: g_assert( FALSE ); return( 0 ); } } /** * vips_image_ispartial: * @image: image to test * * Return %TRUE if @im represents a partial image (a delayed calculation). */ gboolean vips_image_ispartial( VipsImage *image ) { if( image->dtype == VIPS_IMAGE_PARTIAL ) return( 1 ); else return( 0 ); } /** * vips_image_write_prepare: * @image: image to prepare * * Call this after setting header fields (width, height, and so on) to * allocate resources ready for writing. * * Normally this function is called for you by vips_image_generate() or * vips_image_write_line(). You will need to call it yourself if you plan to * write directly to the ->data member of a memory image. * * Returns: 0 on success, or -1 on error. */ int vips_image_write_prepare( VipsImage *image ) { g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); if( image->Xsize <= 0 || image->Ysize <= 0 || image->Bands <= 0 ) { vips_error( "VipsImage", "%s", _( "bad dimensions" ) ); return( -1 ); } /* We don't use this, but make sure it's set in case any old programs * are expecting it. */ image->Bbits = vips_format_sizeof( image->BandFmt ) << 3; if( image->dtype == VIPS_IMAGE_PARTIAL ) { VIPS_DEBUG_MSG( "vips_image_write_prepare: " "old-style output for %s\n", image->filename ); image->dtype = VIPS_IMAGE_SETBUF; } switch( image->dtype ) { case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_SETBUF_FOREIGN: break; case VIPS_IMAGE_SETBUF: if( !image->data && !(image->data = vips_tracked_malloc( VIPS_IMAGE_SIZEOF_IMAGE( image ))) ) return( -1 ); break; case VIPS_IMAGE_OPENOUT: if( vips_image_open_output( image ) ) return( -1 ); break; default: vips_error( "VipsImage", "%s", _( "bad image descriptor" ) ); return( -1 ); } return( 0 ); } /** * vips_image_write_line: * @image: image to write to * @ypos: vertical position of scan-line to write * @linebuffer: scanline of pixels * * Write a line of pixels to an image. This function must be called repeatedly * with @ypos increasing from 0 to #VipsImage::height . * @linebuffer must be VIPS_IMAGE_SIZEOF_LINE() bytes long. * * See also: vips_image_generate(). * * Returns: 0 on success, or -1 on error. */ int vips_image_write_line( VipsImage *image, int ypos, VipsPel *linebuffer ) { int linesize = VIPS_IMAGE_SIZEOF_LINE( image ); /* Is this the start of eval? */ if( ypos == 0 ) { if( vips__image_wio_output( image ) ) return( -1 ); /* Always clear kill before we start looping. See the * call to vips_image_iskilled() below. */ vips_image_set_kill( image, FALSE ); vips_image_write_prepare( image ); vips_image_preeval( image ); } /* Possible cases for output: FILE or SETBUF. */ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: memcpy( VIPS_IMAGE_ADDR( image, 0, ypos ), linebuffer, linesize ); break; case VIPS_IMAGE_OPENOUT: /* Don't use ypos for this. */ if( vips__write( image->fd, linebuffer, linesize ) ) return( -1 ); break; default: vips_error( "VipsImage", _( "unable to output to a %s image" ), vips_enum_string( VIPS_TYPE_IMAGE_TYPE, image->dtype ) ); return( -1 ); } /* Trigger evaluation callbacks for this image. */ vips_image_eval( image, ypos * image->Xsize ); if( vips_image_iskilled( image ) ) return( -1 ); /* Is this the end of eval? */ if( ypos == image->Ysize - 1 ) { vips_image_posteval( image ); if( vips_image_written( image ) ) return( -1 ); } return( 0 ); } /* Rewind an output file. VIPS images only. */ static int vips_image_rewind_output( VipsImage *image ) { int fd; g_assert( image->dtype == VIPS_IMAGE_OPENOUT ); #ifdef DEBUG_IO printf( "vips_image_rewind_output: %s\n", image->filename ); #endif/*DEBUG_IO*/ /* We want to keep the fd across rewind. * * On Windows, we open temp files with _O_TEMPORARY. We mustn't close * the file since this will delete it. * * We could open the file again to keep a reference to it alive, but * this is also problematic on Windows. */ fd = image->fd; image->fd = -1; /* Free any resources the image holds and reset to a base * state. */ vips_object_rewind( VIPS_OBJECT( image ) ); /* And reopen ... recurse to get a mmaped image. * * We use "v" mode to get it opened as a vips image, bypassing the * file type checks. They will fail on Windows because you can't open * fds more than once. */ image->fd = fd; g_object_set( image, "mode", "v", NULL ); if( vips_object_build( VIPS_OBJECT( image ) ) ) { vips_error( "VipsImage", _( "auto-rewind for %s failed" ), image->filename ); return( -1 ); } /* Now we've finished writing and reopened as read, we can * delete-on-close. * * On *nix-like systems, this will unlink the file * from the filesystem and when we exit, for whatever reason, the file * we be reclaimed. * * On Windows this will fail because the file is open and you can't * delete open files. However, on Windows we set O_TEMP, so the file * will be deleted when the fd is finally closed. */ vips_image_delete( image ); return( 0 ); } /** * vips_image_copy_memory: * @image: image to copy to a memory buffer * * Allocate a memory buffer and copy @image to it. This is a thread-safe * equivalent of vips_image_wio_input(), useful if @image is small and from an * unknown source. * * If @image is already in memory (perhaps a mmaped file on disc), * vips_image_copy_memory() will just ref @image and return that. * * If you are sure that @image is not shared with another thread (perhaps you * have made it yourself), use vips_image_wio_input() instead. * * See also: vips_image_wio_input(). */ VipsImage * vips_image_copy_memory( VipsImage *image ) { VipsImage *new; switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: /* Can read from all these, in principle anyway. */ new = image; g_object_ref( new ); break; case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_OPENIN: case VIPS_IMAGE_PARTIAL: /* Copy to a new memory image. */ new = vips_image_new_memory(); if( vips_image_write( image, new ) ) { g_object_unref( new ); return( NULL ); } break; default: vips_error( "vips_image_copy_memory", "%s", _( "image not readable" ) ); return( NULL ); } return( new ); } /** * vips_image_wio_input: * @image: image to transform * * Check that an image is readable via the VIPS_IMAGE_ADDR() macro, that is, * that the entire image is in memory and all pixels can be read with * VIPS_IMAGE_ADDR(). If it * isn't, try to transform it so that VIPS_IMAGE_ADDR() can work. * * Since this function modifies @image, it is not thread-safe. Only call it on * images which you are sure have not been shared with another thread. If the * image might have been shared, use the less efficient * vips_image_copy_memory() instead. * * See also: vips_image_copy_memory(), vips_image_pio_input(), vips_image_inplace(), VIPS_IMAGE_ADDR(). * * Returns: 0 on succeess, or -1 on error. */ int vips_image_wio_input( VipsImage *image ) { VipsImage *t1; g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); #ifdef DEBUG_IO printf( "vips_image_wio_input: wio input for %s\n", image->filename ); #endif/*DEBUG_IO*/ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: /* Should have been written to. */ if( !image->data ) { vips_error( "vips_image_wio_input", "%s", _( "no image data" ) ); return( -1 ); } break; case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: /* Can read from all these, in principle anyway. */ break; case VIPS_IMAGE_PARTIAL: #ifdef DEBUG_IO printf( "vips_image_wio_input: " "converting partial image to WIO\n" ); #endif/*DEBUG_IO*/ /* Change to VIPS_IMAGE_SETBUF. First, make a memory * buffer and copy into that. */ t1 = vips_image_new_memory(); if( vips_image_write( image, t1 ) ) { g_object_unref( t1 ); return( -1 ); } /* Copy new stuff in. We can't unref and free stuff, as this * would kill of lots of regions and cause dangling pointers * elsewhere. */ image->dtype = VIPS_IMAGE_SETBUF; image->data = t1->data; t1->data = NULL; /* Close temp image. */ g_object_unref( t1 ); /* We need to zap any start/gen/stop callbacks. If we don't, * calling vips_region_prepare_to() later to read from this * image will fail, since it will think it needs to create the * image, not read from it. */ image->start_fn = NULL; image->generate_fn = NULL; image->stop_fn = NULL; image->client1 = NULL; image->client2 = NULL; /* ... and that may confuse any regions which are trying to * generate from this image. */ if( image->regions ) vips_warn( "vips_image_wio_input", "%s", "rewinding image with active regions" ); break; case VIPS_IMAGE_OPENIN: #ifdef DEBUG_IO printf( "vips_image_wio_input: " "converting openin image for wio input\n" ); #endif/*DEBUG_IO*/ /* just mmap() the whole thing. */ if( vips_mapfile( image ) ) return( -1 ); image->data = image->baseaddr + image->sizeof_header; image->dtype = VIPS_IMAGE_MMAPIN; break; case VIPS_IMAGE_OPENOUT: /* Close file down and reopen as input. I guess this will only * work for vips files? */ if( vips_image_rewind_output( image ) || vips_image_wio_input( image ) ) return( -1 ); break; default: vips_error( "vips_image_wio_input", "%s", _( "image not readable" ) ); return( -1 ); } return( 0 ); } int vips__image_wio_output( VipsImage *image ) { #ifdef DEBUG_IO printf( "vips__image_wio_output: WIO output for %s\n", image->filename ); #endif/*DEBUG_IO*/ switch( image->dtype ) { case VIPS_IMAGE_PARTIAL: /* Make sure nothing is attached. */ if( image->generate_fn ) { vips_error( "vips__image_wio_output", "%s", _( "image already written" ) ); return( -1 ); } /* Cannot do old-style write to PARTIAL. Turn to SETBUF. */ image->dtype = VIPS_IMAGE_SETBUF; break; case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_SETBUF_FOREIGN: /* Can write to this ok. * * We used to check that ->data was null and warn about * writing twice, but we no longer insist that this is called * before vips_image_write_prepare(), so we can't do that any * more. */ break; default: vips_error( "vips__image_wio_output", "%s", _( "image not writeable" ) ); return( -1 ); } return( 0 ); } /** * vips_image_inplace: * @image: image to make read-write * * Gets @image ready for an in-place operation, such as vips_draw_circle(). * After calling this function you can both read and write the image with * VIPS_IMAGE_ADDR(). * * Since this function modifies @image, it is not thread-safe. Only call it on * images which you are sure have not been shared with another thread. * All in-place operations are inherently not thread-safe, so you need to take * great care in any case. * * See also: vips_draw_circle(), vips_image_wio_input(). * * Returns: 0 on succeess, or -1 on error. */ int vips_image_inplace( VipsImage *image ) { /* Do an vips_image_wio_input(). This will rewind, generate, etc. */ if( vips_image_wio_input( image ) ) return( -1 ); /* Look at the type. */ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_MMAPINRW: /* No action necessary. */ break; case VIPS_IMAGE_MMAPIN: /* Try to remap read-write. */ if( vips_remapfilerw( image ) ) return( -1 ); break; default: vips_error( "vips_image_inplace", "%s", _( "bad file type" ) ); return( -1 ); } /* This image is about to be changed (probably). Make sure it's not * in cache. */ vips_image_invalidate_all( image ); return( 0 ); } /** * vips_image_pio_input: * @image: image to check * * Check that an image is readable with vips_region_prepare() and friends. * If it isn't, try to transform the image so that vips_region_prepare() can * work. * * See also: vips_image_pio_output(), vips_region_prepare(). * * Returns: 0 on succeess, or -1 on error. */ int vips_image_pio_input( VipsImage *image ) { g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); #ifdef DEBUG_IO printf( "vips_image_pio_input: enabling partial input for %s\n", image->filename ); #endif /*DEBUG_IO*/ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: /* Should have been written to. */ if( !image->data ) { vips_error( "vips_image_pio_input", "%s", _( "no image data" ) ); return( -1 ); } /* Should be no generate functions now. */ image->start_fn = NULL; image->generate_fn = NULL; image->stop_fn = NULL; break; case VIPS_IMAGE_PARTIAL: /* Should have had generate functions attached. */ if( !image->generate_fn ) { vips_error( "vips_image_pio_input", "%s", _( "no image data" ) ); return( -1 ); } break; case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENIN: break; case VIPS_IMAGE_OPENOUT: /* Free any resources the image holds and reset to a base * state. */ if( vips_image_rewind_output( image ) ) return( -1 ); break; default: vips_error( "vips_image_pio_input", "%s", _( "image not readable" ) ); return( -1 ); } return( 0 ); } /** * vips_image_pio_output: * @image: image to check * * Check that an image is writeable with vips_image_generate(). If it isn't, * try to transform the image so that vips_image_generate() can work. * * See also: vips_image_pio_input(). * * Returns: 0 on succeess, or -1 on error. */ int vips_image_pio_output( VipsImage *image ) { #ifdef DEBUG_IO printf( "vips_image_pio_output: enabling partial output for %s\n", image->filename ); #endif /*DEBUG_IO*/ switch( image->dtype ) { case VIPS_IMAGE_SETBUF: if( image->data ) { vips_error( "vips_image_pio_output", "%s", _( "image already written" ) ); return( -1 ); } break; case VIPS_IMAGE_PARTIAL: if( image->generate_fn ) { vips_error( "vips_image_pio_output", "%s", _( "image already written" ) ); return( -1 ); } break; case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_SETBUF_FOREIGN: break; default: vips_error( "vips_image_pio_output", "%s", _( "image not writeable" ) ); return( -1 ); } return( 0 ); } /** * vips_band_format_isint: * @format: format to test * * Return %TRUE if @format is one of the integer types. */ gboolean vips_band_format_isint( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: case VIPS_FORMAT_USHORT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_UINT: case VIPS_FORMAT_INT: return( TRUE ); case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } /** * vips_band_format_isuint: * @format: format to test * * Return %TRUE if @format is one of the unsigned integer types. */ gboolean vips_band_format_isuint( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_USHORT: case VIPS_FORMAT_UINT: return( TRUE ); case VIPS_FORMAT_INT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_CHAR: case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } /** * vips_band_format_is8bit: * @format: format to test * * Return %TRUE if @format is uchar or schar. */ gboolean vips_band_format_is8bit( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: return( TRUE ); case VIPS_FORMAT_USHORT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_UINT: case VIPS_FORMAT_INT: case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } /** * vips_band_format_isfloat: * @format: format to test * * Return %TRUE if @format is one of the float types. */ gboolean vips_band_format_isfloat( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: return( TRUE ); case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: case VIPS_FORMAT_USHORT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_UINT: case VIPS_FORMAT_INT: case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } /** * vips_band_format_iscomplex: * @format: format to test * * Return %TRUE if @fmt is one of the complex types. */ gboolean vips_band_format_iscomplex( VipsBandFormat format ) { switch( format ) { case VIPS_FORMAT_COMPLEX: case VIPS_FORMAT_DPCOMPLEX: return( TRUE ); case VIPS_FORMAT_UCHAR: case VIPS_FORMAT_CHAR: case VIPS_FORMAT_USHORT: case VIPS_FORMAT_SHORT: case VIPS_FORMAT_UINT: case VIPS_FORMAT_INT: case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_DOUBLE: return( FALSE ); default: g_assert_not_reached(); return( FALSE ); } } vips-8.2.2/libvips/iofuncs/threadpool.c0000664000175000017500000005465312651715661015101 00000000000000/* Support for thread pools ... like threadgroups, but lighter. * * 18/3/10 * - from threadgroup.c * - distributed work allocation idea from Christian Blenia, thank you * very much * 21/3/10 * - progress feedback * - only expose VipsThreadState * 11/5/10 * - argh, stopping many threads could sometimes leave allocated work * undone * 17/7/10 * - set pool->error whenever we set thr->error, lets us catch allocate * errors (thanks Tim) * 25/7/14 * - limit nthr on tiny images */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG_RED #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #ifdef OS_WIN32 #include #endif /*OS_WIN32*/ /** * SECTION: threadpool * @short_description: pools of worker threads * @stability: Stable * @see_also: generate * @include: vips/vips.h * * vips_threadpool_run() loops a set of threads over an image. Threads take it * in turns to allocate units of work (a unit might be a tile in an image), * then run in parallel to process those units. An optional progress function * can be used to give feedback. */ /* Maximum number of concurrent threads we allow. No reason for the limit, * it's just there to stop mad values for VIPS_CONCURRENCY killing the system. */ #define MAX_THREADS (1024) /* Default tile geometry ... can be set by vips_init(). */ int vips__tile_width = VIPS__TILE_WIDTH; int vips__tile_height = VIPS__TILE_HEIGHT; int vips__fatstrip_height = VIPS__FATSTRIP_HEIGHT; int vips__thinstrip_height = VIPS__THINSTRIP_HEIGHT; /* Default n threads ... 0 means get from environment. */ int vips__concurrency = 0; /* Glib 2.32 revised the thread API. We need some compat functions. */ GMutex * vips_g_mutex_new( void ) { GMutex *mutex; #ifdef HAVE_MUTEX_INIT mutex = g_new( GMutex, 1 ); g_mutex_init( mutex ); #else mutex = g_mutex_new(); #endif return( mutex ); } void vips_g_mutex_free( GMutex *mutex ) { #ifdef HAVE_MUTEX_INIT g_mutex_clear( mutex ); g_free( mutex ); #else g_mutex_free( mutex ); #endif } GCond * vips_g_cond_new( void ) { GCond *cond; #ifdef HAVE_COND_INIT cond = g_new( GCond, 1 ); g_cond_init( cond ); #else cond = g_cond_new(); #endif return( cond ); } void vips_g_cond_free( GCond *cond ) { #ifdef HAVE_COND_INIT g_cond_clear( cond ); g_free( cond ); #else g_cond_free( cond ); #endif } typedef struct { const char *domain; GThreadFunc func; gpointer data; } VipsThreadInfo; static void * vips_thread_run( gpointer data ) { VipsThreadInfo *info = (VipsThreadInfo *) data; void *result; if( vips__thread_profile ) vips__thread_profile_attach( info->domain ); result = info->func( info->data ); g_free( info ); vips_thread_shutdown(); return( result ); } GThread * vips_g_thread_new( const char *domain, GThreadFunc func, gpointer data ) { GThread *thread; VipsThreadInfo *info; GError *error = NULL; info = g_new( VipsThreadInfo, 1 ); info->domain = domain; info->func = func; info->data = data; #ifdef HAVE_THREAD_NEW thread = g_thread_try_new( domain, vips_thread_run, info, &error ); #else thread = g_thread_create( vips_thread_run, info, TRUE, &error ); #endif if( !thread ) { if( error ) vips_g_error( &error ); else vips_error( domain, "%s", _( "unable to create thread" ) ); } return( thread ); } /** * vips_concurrency_set: * @concurrency: number of threads to run * * Sets the number of worker threads that vips should use when running a * #VipsThreadPool. * * The special value 0 means "default". In this case, the number of threads is * set by the environment variable VIPS_CONCURRENCY, or if that is not set, the * number of threads availble on the host machine. * * See also: vips_concurrency_get(). */ void vips_concurrency_set( int concurrency ) { vips__concurrency = concurrency; } static int get_num_processors( void ) { int nproc; nproc = 1; #ifdef G_OS_UNIX #if defined(HAVE_UNISTD_H) && defined(_SC_NPROCESSORS_ONLN) { /* POSIX style. */ int x; x = sysconf( _SC_NPROCESSORS_ONLN ); if( x > 0 ) nproc = x; } #elif defined HW_NCPU { /* BSD style. */ int x; size_t len = sizeof(x); sysctl( (int[2]) {CTL_HW, HW_NCPU}, 2, &x, &len, NULL, 0 ); if( x > 0 ) nproc = x; } #endif /* libgomp has some very complex code on Linux to count the number of * processors available to the current process taking pthread affinity * into account, but we don't attempt that here. Perhaps we should? */ #endif /*G_OS_UNIX*/ #ifdef OS_WIN32 { /* Count the CPUs currently available to this process. */ DWORD_PTR process_cpus; DWORD_PTR system_cpus; if( GetProcessAffinityMask( GetCurrentProcess(), &process_cpus, &system_cpus ) ) { unsigned int count; for( count = 0; process_cpus != 0; process_cpus >>= 1 ) if( process_cpus & 1 ) count++; if( count > 0 ) nproc = count; } } #endif /*OS_WIN32*/ return( nproc ); } /** * vips_concurrency_get: * * Returns the number of worker threads that vips should use when running a * #VipsThreadPool. * * vips gets this values from these sources in turn: * * If vips_concurrency_set() has been called, this value is used. The special * value 0 means "default". You can also use the command-line argument * "--vips-concurrency" to set this value. * * If vips_concurrency_set() has not been called and no command-line argument * was used, vips uses the value of the environment variable VIPS_CONCURRENCY, * * If VIPS_CONCURRENCY has not been set, vips find the number of hardware * threads that the host machine can run in parallel and uses that value. * * The final value is clipped to the range 1 - 1024. * * See also: vips_concurrency_get(). * * Returns: number of worker threads to use. */ int vips_concurrency_get( void ) { const char *str; int nthr; int x; /* Tell the threads system how much concurrency we expect. */ if( vips__concurrency > 0 ) nthr = vips__concurrency; else if( ((str = g_getenv( "VIPS_CONCURRENCY" )) || (str = g_getenv( "IM_CONCURRENCY" ))) && (x = atoi( str )) > 0 ) nthr = x; else nthr = get_num_processors(); if( nthr < 1 || nthr > MAX_THREADS ) { nthr = VIPS_CLIP( 1, nthr, MAX_THREADS ); vips_warn( "vips_concurrency_get", _( "threads clipped to %d" ), nthr ); } /* Save for next time around. */ vips_concurrency_set( nthr ); return( nthr ); } G_DEFINE_TYPE( VipsThreadState, vips_thread_state, VIPS_TYPE_OBJECT ); static void vips_thread_state_dispose( GObject *gobject ) { VipsThreadState *state = (VipsThreadState *) gobject; VIPS_DEBUG_MSG( "vips_thread_state_dispose:\n" ); VIPS_UNREF( state->reg ); G_OBJECT_CLASS( vips_thread_state_parent_class )->dispose( gobject ); } static int vips_thread_state_build( VipsObject *object ) { VipsThreadState *state = (VipsThreadState *) object; if( !(state->reg = vips_region_new( state->im )) ) return( -1 ); return( VIPS_OBJECT_CLASS( vips_thread_state_parent_class )->build( object ) ); } static void vips_thread_state_class_init( VipsThreadStateClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); gobject_class->dispose = vips_thread_state_dispose; object_class->build = vips_thread_state_build; object_class->nickname = "threadstate"; object_class->description = _( "per-thread state for vipsthreadpool" ); } static void vips_thread_state_init( VipsThreadState *state ) { VIPS_DEBUG_MSG( "vips_thread_state_init:\n" ); state->reg = NULL; state->stop = FALSE; } void * vips_thread_state_set( VipsObject *object, void *a, void *b ) { VipsThreadState *state = (VipsThreadState *) object; VipsImage *im = (VipsImage *) a; VIPS_DEBUG_MSG( "vips_thread_state_set:\n" ); state->im = im; state->a = b; return( NULL ); } VipsThreadState * vips_thread_state_new( VipsImage *im, void *a ) { VIPS_DEBUG_MSG( "vips_thread_state_new:\n" ); return( VIPS_THREAD_STATE( vips_object_new( VIPS_TYPE_THREAD_STATE, vips_thread_state_set, im, a ) ) ); } /* What we track for each thread in the pool. */ typedef struct { /* All private. */ /*< private >*/ struct _VipsThreadpool *pool; /* Pool we are part of */ VipsThreadState *state; /* Thread we are running. */ GThread *thread; /* Set this to ask the thread to exit. */ gboolean exit; /* Set by the thread if work or allocate return an error. */ gboolean error; } VipsThread; /* What we track for a group of threads working together. */ typedef struct _VipsThreadpool { /* All private. */ /*< private >*/ VipsImage *im; /* Image we are calculating */ /* Start a thread, do a unit of work (runs in parallel) and allocate * a unit of work (serial). Plus the mutex we use to serialize work * allocation. */ VipsThreadStartFn start; VipsThreadpoolAllocateFn allocate; VipsThreadpoolWorkFn work; GMutex *allocate_lock; void *a; /* User argument to start / allocate / etc. */ int nthr; /* Number of threads in pool */ VipsThread **thr; /* Threads */ /* The caller blocks here until all threads finish. */ VipsSemaphore finish; /* Workers up this for every loop to make the main thread tick. */ VipsSemaphore tick; /* Set this to abort evaluation early with an error. */ gboolean error; /* Set by Allocate (via an arg) to indicate normal end of computation. */ gboolean stop; /* Set by the first thread to hit allocate. The first work unit runs * single-threaded to give loaders a change to get to the right spot * in the input. */ gboolean done_first; } VipsThreadpool; /* Junk a thread. */ static void vips_thread_free( VipsThread *thr ) { /* Is there a thread running this region? Kill it! */ if( thr->thread ) { thr->exit = 1; /* Return value is always NULL (see thread_main_loop). */ (void) g_thread_join( thr->thread ); VIPS_DEBUG_MSG_RED( "thread_free: g_thread_join()\n" ); thr->thread = NULL; } VIPS_FREEF( g_object_unref, thr->state ); thr->pool = NULL; } static int vips_thread_allocate( VipsThread *thr ) { VipsThreadpool *pool = thr->pool; g_assert( !pool->stop ); if( !thr->state ) { if( !(thr->state = pool->start( pool->im, pool->a )) ) return( -1 ); } if( pool->allocate( thr->state, pool->a, &pool->stop ) ) return( -1 ); return( 0 ); } /* Run this once per main loop. Get some work (single-threaded), then do it * (many-threaded). * * The very first workunit is also executed single-threaded. This gives * loaders a change to seek to the correct spot, see vips_sequential(). */ static void vips_thread_work_unit( VipsThread *thr ) { VipsThreadpool *pool = thr->pool; if( thr->error ) return; VIPS_GATE_START( "vips_thread_work_unit: wait" ); g_mutex_lock( pool->allocate_lock ); VIPS_GATE_STOP( "vips_thread_work_unit: wait" ); /* Has another worker signaled stop while we've been working? */ if( pool->stop ) { g_mutex_unlock( pool->allocate_lock ); return; } if( vips_thread_allocate( thr ) ) { thr->error = TRUE; pool->error = TRUE; g_mutex_unlock( pool->allocate_lock ); return; } /* Have we just signalled stop? */ if( pool->stop ) { g_mutex_unlock( pool->allocate_lock ); return; } if( pool->done_first ) g_mutex_unlock( pool->allocate_lock ); /* Process a work unit. */ if( pool->work( thr->state, pool->a ) ) { thr->error = TRUE; pool->error = TRUE; } if( !pool->done_first ) { pool->done_first = TRUE; g_mutex_unlock( pool->allocate_lock ); } } /* What runs as a thread ... loop, waiting to be told to do stuff. */ static void * vips_thread_main_loop( void *a ) { VipsThread *thr = (VipsThread *) a; VipsThreadpool *pool = thr->pool; g_assert( pool == thr->pool ); VIPS_GATE_START( "vips_thread_main_loop: thread" ); /* Process work units! Always tick, even if we are stopping, so the * main thread will wake up for exit. */ for(;;) { VIPS_GATE_START( "vips_thread_work_unit: u" ); vips_thread_work_unit( thr ); VIPS_GATE_STOP( "vips_thread_work_unit: u" ); vips_semaphore_up( &pool->tick ); if( pool->stop || pool->error ) break; } /* We are exiting: tell the main thread. */ vips_semaphore_up( &pool->finish ); VIPS_GATE_STOP( "vips_thread_main_loop: thread" ); return( NULL ); } /* Attach another thread to a threadpool. */ static VipsThread * vips_thread_new( VipsThreadpool *pool ) { VipsThread *thr; if( !(thr = VIPS_NEW( pool->im, VipsThread )) ) return( NULL ); thr->pool = pool; thr->state = NULL; thr->thread = NULL; thr->exit = 0; thr->error = 0; /* We can't build the state here, it has to be done by the worker * itself the first time that allocate runs so that any regions are * owned by the correct thread. */ if( !(thr->thread = vips_g_thread_new( "worker", vips_thread_main_loop, thr )) ) { vips_thread_free( thr ); return( NULL ); } VIPS_DEBUG_MSG_RED( "vips_thread_new: vips_g_thread_new()\n" ); return( thr ); } /* Kill all threads in a threadpool, if there are any. */ static void vips_threadpool_kill_threads( VipsThreadpool *pool ) { if( pool->thr ) { int i; for( i = 0; i < pool->nthr; i++ ) vips_thread_free( pool->thr[i] ); pool->thr = NULL; VIPS_DEBUG_MSG( "vips_threadpool_kill_threads: " "killed %d threads\n", pool->nthr ); } } /* This can be called multiple times, careful. */ static int vips_threadpool_free( VipsThreadpool *pool ) { VIPS_DEBUG_MSG( "vips_threadpool_free: \"%s\" (%p)\n", pool->im->filename, pool ); vips_threadpool_kill_threads( pool ); VIPS_FREEF( vips_g_mutex_free, pool->allocate_lock ); vips_semaphore_destroy( &pool->finish ); vips_semaphore_destroy( &pool->tick ); return( 0 ); } static void vips_threadpool_new_cb( VipsImage *im, VipsThreadpool *pool ) { vips_threadpool_free( pool ); } static VipsThreadpool * vips_threadpool_new( VipsImage *im ) { VipsThreadpool *pool; int tile_width; int tile_height; int n_tiles; int n_lines; /* Allocate and init new thread block. */ if( !(pool = VIPS_NEW( im, VipsThreadpool )) ) return( NULL ); pool->im = im; pool->allocate = NULL; pool->work = NULL; pool->allocate_lock = vips_g_mutex_new(); pool->nthr = vips_concurrency_get(); pool->thr = NULL; vips_semaphore_init( &pool->finish, 0, "finish" ); vips_semaphore_init( &pool->tick, 0, "tick" ); pool->error = FALSE; pool->stop = FALSE; pool->done_first = FALSE; /* If this is a tiny image, we won't need all nthr threads. Guess how * many tiles we might need to cover the image and use that to limit * the number of threads we create. */ vips_get_tile_size( im, &tile_width, &tile_height, &n_lines ); n_tiles = (1 + im->Xsize / tile_width) * (1 + im->Ysize / tile_height); pool->nthr = VIPS_MIN( pool->nthr, n_tiles ); /* Attach tidy-up callback. */ g_signal_connect( im, "close", G_CALLBACK( vips_threadpool_new_cb ), pool ); VIPS_DEBUG_MSG( "vips_threadpool_new: \"%s\" (%p), with %d threads\n", im->filename, pool, pool->nthr ); return( pool ); } /* Attach a set of threads. */ static int vips_threadpool_create_threads( VipsThreadpool *pool ) { int i; g_assert( !pool->thr ); /* Make thread array. */ if( !(pool->thr = VIPS_ARRAY( pool->im, pool->nthr, VipsThread * )) ) return( -1 ); for( i = 0; i < pool->nthr; i++ ) pool->thr[i] = NULL; /* Attach threads and start them working. */ for( i = 0; i < pool->nthr; i++ ) if( !(pool->thr[i] = vips_thread_new( pool )) ) { vips_threadpool_kill_threads( pool ); return( -1 ); } return( 0 ); } /** * VipsThreadpoolStartFn: * @a: client data * @b: client data * @c: client data * * This function is called once by each worker just before the first time work * is allocated to it to build the per-thread state. Per-thread state is used * by #VipsThreadpoolAllocate and #VipsThreadpoolWork to communicate. * * #VipsThreadState is a subclass of #VipsObject. Start functions are called * from allocate, that is, they are single-threaded. * * See also: vips_threadpool_run(). * * Returns: a new #VipsThreadState object, or NULL on error */ /** * VipsThreadpoolAllocateFn: * @state: per-thread state * @a: client data * @b: client data * @c: client data * @stop: set this to signal end of computation * * This function is called to allocate a new work unit for the thread. It is * always single-threaded, so it can modify per-pool state (such as a * counter). * * @a, @b, @c are the values supplied to the call to * vips_threadpool_run(). * * It should set @stop to %TRUE to indicate that no work could be allocated * because the job is done. * * See also: vips_threadpool_run(). * * Returns: 0 on success, or -1 on error */ /** * VipsThreadpoolWorkFn: * @state: per-thread state * @a: client data * @b: client data * @c: client data * * This function is called to process a work unit. Many copies of this can run * at once, so it should not write to the per-pool state. It can write to * per-thread state. * * @a, @b, @c are the values supplied to the call to * vips_threadpool_run(). * * See also: vips_threadpool_run(). * * Returns: 0 on success, or -1 on error */ /** * VipsThreadpoolProgressFn: * @a: client data * @b: client data * @c: client data * * This function is called by the main thread once for every work unit * processed. It can be used to give the user progress feedback. * * See also: vips_threadpool_run(). * * Returns: 0 on success, or -1 on error */ /** * vips_threadpool_run: * @im: image to loop over * @start: allocate per-thread state * @allocate: allocate a work unit * @work: process a work unit * @progress: give progress feedback about a work unit, or %NULL * @a: client data * * This function runs a set of threads over an image. Each thread first calls * @start to create new per-thread state, then runs * @allocate to set up a new work unit (perhaps the next tile in an image, for * example), then @work to process that work unit. After each unit is * processed, @progress is called, so that the operation can give * progress feedback. @progress may be %NULL. * * The object returned by @start must be an instance of a subclass of * #VipsThreadState. Use this to communicate between @allocate and @work. * * @allocate and @start are always single-threaded (so they can write to the * per-pool state), whereas @work can be executed concurrently. @progress is * always called by * the main thread (ie. the thread which called vips_threadpool_run()). * * See also: vips_concurrency_set(). * * Returns: 0 on success, or -1 on error. */ int vips_threadpool_run( VipsImage *im, VipsThreadStartFn start, VipsThreadpoolAllocateFn allocate, VipsThreadpoolWorkFn work, VipsThreadpoolProgressFn progress, void *a ) { VipsThreadpool *pool; int result; if( !(pool = vips_threadpool_new( im )) ) return( -1 ); pool->start = start; pool->allocate = allocate; pool->work = work; pool->a = a; /* Attach workers and set them going. */ if( vips_threadpool_create_threads( pool ) ) { vips_threadpool_free( pool ); return( -1 ); } for(;;) { /* Wait for a tick from a worker. */ vips_semaphore_down( &pool->tick ); VIPS_DEBUG_MSG( "vips_threadpool_run: tick\n" ); if( pool->stop || pool->error ) break; if( progress && progress( pool->a ) ) pool->error = TRUE; if( pool->stop || pool->error ) break; } /* Wait for them all to hit finish. */ vips_semaphore_downn( &pool->finish, pool->nthr ); /* Return 0 for success. */ result = pool->error ? -1 : 0; vips_threadpool_free( pool ); vips_image_minimise_all( im ); return( result ); } /* Round N down to P boundary. */ #define ROUND_DOWN(N,P) ((N) - ((N) % P)) /* Round N up to P boundary. */ #define ROUND_UP(N,P) (ROUND_DOWN( (N) + (P) - 1, (P) )) /** * vips_get_tile_size: * @im: image to guess for * @tile_width: return selected tile width * @tile_height: return selected tile height * @n_lines: return buffer height in scanlines * * Pick a tile size and a buffer height for this image and the current * value of vips_concurrency_get(). The buffer height * will always be a multiple of tile_height. */ void vips_get_tile_size( VipsImage *im, int *tile_width, int *tile_height, int *n_lines ) { const int nthr = vips_concurrency_get(); /* Compiler warnings. */ *tile_width = 1; *tile_height = 1; /* Pick a render geometry. */ switch( im->dhint ) { case VIPS_DEMAND_STYLE_SMALLTILE: *tile_width = vips__tile_width; *tile_height = vips__tile_height; break; case VIPS_DEMAND_STYLE_ANY: case VIPS_DEMAND_STYLE_FATSTRIP: *tile_width = im->Xsize; *tile_height = vips__fatstrip_height; break; case VIPS_DEMAND_STYLE_THINSTRIP: *tile_width = im->Xsize; *tile_height = vips__thinstrip_height; break; default: g_assert_not_reached(); } /* We can't set n_lines for the current demand style: a later bit of * the pipeline might see a different hint and we need to synchronise * buffer sizes everywhere. * * Pick the maximum buffer size we might possibly need, then round up * to a multiple of tileheight. */ *n_lines = vips__tile_height * (1 + nthr / VIPS_MAX( 1, im->Xsize / vips__tile_width )) * 2; *n_lines = VIPS_MAX( *n_lines, vips__fatstrip_height * nthr * 2 ); *n_lines = VIPS_MAX( *n_lines, vips__thinstrip_height * nthr * 2 ); *n_lines = ROUND_UP( *n_lines, *tile_height ); /* We make this assumption in several places. */ g_assert( *n_lines % *tile_height == 0 ); VIPS_DEBUG_MSG( "vips_get_tile_size: %d by %d patches, " "groups of %d scanlines\n", *tile_width, *tile_height, *n_lines ); } vips-8.2.2/libvips/iofuncs/buffer.c0000664000175000017500000003533212641455102014170 00000000000000/* Manage sets of pixel buffers on an image. * * 30/10/06 * - from window.c * 2/2/07 * - speed up the search, use our own lock (thanks Christian) * 5/2/07 * - split to many buffer lists per image * 11/2/07 * - split to a buffer hash per thread * - reuse buffer mallocs when we can * 20/2/07 * - add VipsBufferCacheList and we can avoid some hash ops on * done/undone * 5/3/10 * - move invalid stuff to region * - move link maintenance to im_demand_hint * 21/9/11 * - switch to vips_tracked_malloc() * 18/12/13 * - keep a few buffers in reserve per image, stops malloc/free * cycling when sharing is repeatedly discovered */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_VERBOSE #define DEBUG_CREATE #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #ifdef DEBUG /* Track all buffers here for debugging. */ static GSList *vips__buffer_all = NULL; #endif /*DEBUG*/ #ifdef DEBUG_CREATE static GSList *vips__buffer_cache_all = NULL; #endif /*DEBUG_CREATE*/ /* The maximum numbers of buffers we hold in reserve per image. */ static const int buffer_cache_max_reserve = 2; static GPrivate *buffer_thread_key = NULL; #ifdef DEBUG static void * vips_buffer_dump( VipsBuffer *buffer, size_t *reserve, size_t *alive ) { vips_buffer_print( buffer ); if( buffer->im && buffer->buf && buffer->cache ) { printf( "buffer %p, %.3g MB\n", buffer, buffer->bsize / (1024 * 1024.0) ); *alive += buffer->bsize; } else if( buffer->im && buffer->buf && !buffer->cache ) *reserve += buffer->bsize; else printf( "buffer craziness!\n" ); return( NULL ); } #endif /*DEBUG*/ #ifdef DEBUG_CREATE static void * vips_buffer_cache_dump( VipsBufferCache *cache ) { printf( "VipsBufferCache: %p\n", cache ); printf( "\t%d buffers\n", g_slist_length( cache->buffers ) ); printf( "\tthread %p\n", cache->thread ); printf( "\timage %p\n", cache->im ); printf( "\tbuffer_thread %p\n", cache->buffer_thread ); printf( "\t%d in reserve\n", g_slist_length( cache->reserve ) ); return( NULL ); } #endif /*DEBUG_CREATE*/ void vips_buffer_dump_all( void ) { #ifdef DEBUG if( vips__buffer_all ) { size_t reserve; size_t alive; printf( "buffers:\n" ); reserve = 0; alive = 0; vips_slist_map2( vips__buffer_all, (VipsSListMap2Fn) vips_buffer_dump, &reserve, &alive ); printf( "%.3g MB alive\n", alive / (1024 * 1024.0) ); printf( "%.3g MB in reserve\n", reserve / (1024 * 1024.0) ); } #ifdef DEBUG_CREATE if( vips__buffer_cache_all ) { printf( "buffers: %d buffer cache still alive\n", g_slist_length( vips__buffer_cache_all ) ); vips_slist_map2( vips__buffer_cache_all, (VipsSListMap2Fn) vips_buffer_cache_dump, NULL, NULL ); printf( "g_thread_self() == %p\n", g_thread_self() ); } #endif /*DEBUG_CREATE*/ #endif /*DEBUG*/ } static void vips_buffer_free( VipsBuffer *buffer ) { vips_tracked_free( buffer->buf ); buffer->bsize = 0; g_free( buffer ); #ifdef DEBUG g_mutex_lock( vips__global_lock ); g_assert( g_slist_find( vips__buffer_all, buffer ) ); vips__buffer_all = g_slist_remove( vips__buffer_all, buffer ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG*/ } static void buffer_thread_free( VipsBufferThread *buffer_thread ) { VIPS_FREEF( g_hash_table_destroy, buffer_thread->hash ); VIPS_FREE( buffer_thread ); } static void buffer_cache_free( VipsBufferCache *cache ) { GSList *p; #ifdef DEBUG_CREATE g_mutex_lock( vips__global_lock ); vips__buffer_cache_all = g_slist_remove( vips__buffer_cache_all, cache ); g_mutex_unlock( vips__global_lock ); printf( "buffer_cache_free: freeing cache %p on thread %p\n", cache, g_thread_self() ); printf( "\t(%d caches left)\n", g_slist_length( vips__buffer_cache_all ) ); #endif /*DEBUG_CREATE*/ /* Need to mark undone so we don't try and take them off this hash on * unref. */ for( p = cache->buffers; p; p = p->next ) { VipsBuffer *buffer = (VipsBuffer *) p->data; buffer->done = FALSE; } VIPS_FREEF( g_slist_free, cache->buffers ); for( p = cache->reserve; p; p = p->next ) { VipsBuffer *buffer = (VipsBuffer *) p->data; vips_buffer_free( buffer ); } VIPS_FREEF( g_slist_free, cache->reserve ); g_free( cache ); } static VipsBufferCache * buffer_cache_new( VipsBufferThread *buffer_thread, VipsImage *im ) { VipsBufferCache *cache; cache = g_new( VipsBufferCache, 1 ); cache->buffers = NULL; cache->thread = g_thread_self(); cache->im = im; cache->buffer_thread = buffer_thread; cache->reserve = NULL; cache->n_reserve = 0; #ifdef DEBUG_CREATE g_mutex_lock( vips__global_lock ); vips__buffer_cache_all = g_slist_prepend( vips__buffer_cache_all, cache ); g_mutex_unlock( vips__global_lock ); printf( "buffer_cache_new: new cache %p for thread %p\n", cache, g_thread_self() ); printf( "\t(%d caches now)\n", g_slist_length( vips__buffer_cache_all ) ); #endif /*DEBUG_CREATE*/ return( cache ); } static VipsBufferThread * buffer_thread_new( void ) { VipsBufferThread *buffer_thread; buffer_thread = g_new( VipsBufferThread, 1 ); buffer_thread->hash = g_hash_table_new_full( g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) buffer_cache_free ); buffer_thread->thread = g_thread_self(); return( buffer_thread ); } static VipsBufferThread * buffer_thread_get( void ) { VipsBufferThread *buffer_thread; if( !(buffer_thread = g_private_get( buffer_thread_key )) ) { buffer_thread = buffer_thread_new(); g_private_set( buffer_thread_key, buffer_thread ); } g_assert( buffer_thread->thread == g_thread_self() ); return( buffer_thread ); } static VipsBufferCache * buffer_cache_get( VipsImage *im ) { VipsBufferThread *buffer_thread = buffer_thread_get(); VipsBufferCache *cache; if( !(cache = (VipsBufferCache *) g_hash_table_lookup( buffer_thread->hash, im )) ) { cache = buffer_cache_new( buffer_thread, im ); g_hash_table_insert( buffer_thread->hash, im, cache ); } g_assert( cache->thread == g_thread_self() ); return( cache ); } /* Pixels have been calculated: publish for other parts of this thread to see. */ void vips_buffer_done( VipsBuffer *buffer ) { if( !buffer->done ) { VipsImage *im = buffer->im; VipsBufferCache *cache = buffer_cache_get( im ); #ifdef DEBUG_VERBOSE printf( "vips_buffer_done: thread %p adding to cache %p\n", g_thread_self(), cache ); vips_buffer_print( buffer ); #endif /*DEBUG_VERBOSE*/ g_assert( !g_slist_find( cache->buffers, buffer ) ); g_assert( !buffer->cache ); buffer->done = TRUE; buffer->cache = cache; cache->buffers = g_slist_prepend( cache->buffers, buffer ); } } /* Take off the public 'done' list. Make sure it has no calculated pixels in. */ void vips_buffer_undone( VipsBuffer *buffer ) { if( buffer->done ) { VipsBufferCache *cache = buffer->cache; #ifdef DEBUG_VERBOSE printf( "vips_buffer_undone: thread %p removing " "buffer %p from cache %p\n", g_thread_self(), buffer, cache ); #endif /*DEBUG_VERBOSE*/ g_assert( cache->thread == g_thread_self() ); g_assert( cache->buffer_thread->thread == cache->thread ); g_assert( g_slist_find( cache->buffers, buffer ) ); g_assert( cache->buffer_thread == buffer_thread_get() ); cache->buffers = g_slist_remove( cache->buffers, buffer ); buffer->done = FALSE; #ifdef DEBUG_VERBOSE printf( "vips_buffer_undone: %d buffers left\n", g_slist_length( cache_list->buffers ) ); #endif /*DEBUG_VERBOSE*/ } buffer->cache = NULL; buffer->area.width = 0; buffer->area.height = 0; } void vips_buffer_unref( VipsBuffer *buffer ) { #ifdef DEBUG_VERBOSE printf( "** vips_buffer_unref: left = %d, top = %d, " "width = %d, height = %d (%p)\n", buffer->area.left, buffer->area.top, buffer->area.width, buffer->area.height, buffer ); #endif /*DEBUG_VERBOSE*/ g_assert( buffer->ref_count > 0 ); buffer->ref_count -= 1; if( buffer->ref_count == 0 ) { VipsImage *im = buffer->im; VipsBufferCache *cache = buffer_cache_get( im ); #ifdef DEBUG_VERBOSE if( !buffer->done ) printf( "vips_buffer_unref: buffer was not done\n" ); #endif /*DEBUG_VERBOSE*/ vips_buffer_undone( buffer ); /* Place on this thread's reserve list for reuse. */ if( cache->n_reserve < buffer_cache_max_reserve ) { g_assert( !buffer->cache ); cache->reserve = g_slist_prepend( cache->reserve, buffer ); cache->n_reserve += 1; buffer->area.width = 0; buffer->area.height = 0; } else vips_buffer_free( buffer ); } } static int buffer_move( VipsBuffer *buffer, VipsRect *area ) { VipsImage *im = buffer->im; size_t new_bsize; g_assert( buffer->ref_count == 1 ); vips_buffer_undone( buffer ); g_assert( !buffer->done ); buffer->area = *area; new_bsize = (size_t) VIPS_IMAGE_SIZEOF_PEL( im ) * area->width * area->height; if( buffer->bsize < new_bsize || !buffer->buf ) { buffer->bsize = new_bsize; VIPS_FREEF( vips_tracked_free, buffer->buf ); if( !(buffer->buf = vips_tracked_malloc( buffer->bsize )) ) return( -1 ); } return( 0 ); } /* Make a new buffer. */ VipsBuffer * vips_buffer_new( VipsImage *im, VipsRect *area ) { VipsBufferCache *cache = buffer_cache_get( im ); VipsBuffer *buffer; if( cache->reserve ) { buffer = (VipsBuffer *) cache->reserve->data; cache->reserve = g_slist_remove( cache->reserve, buffer ); cache->n_reserve -= 1; g_assert( buffer->im == im ); g_assert( buffer->done == FALSE ); g_assert( !buffer->cache ); buffer->ref_count = 1; } else { buffer = g_new0( VipsBuffer, 1 ); buffer->ref_count = 1; buffer->im = im; buffer->done = FALSE; buffer->cache = NULL; buffer->buf = NULL; buffer->bsize = 0; #ifdef DEBUG g_mutex_lock( vips__global_lock ); vips__buffer_all = g_slist_prepend( vips__buffer_all, buffer ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG*/ } if( buffer_move( buffer, area ) ) { vips_buffer_free( buffer ); return( NULL ); } return( buffer ); } /* Find an existing buffer that encloses area and return a ref. */ static VipsBuffer * buffer_find( VipsImage *im, VipsRect *r ) { VipsBufferCache *cache = buffer_cache_get( im ); VipsBuffer *buffer; GSList *p; VipsRect *area; /* This needs to be quick :-( don't use * vips_slist_map2()/vips_rect_includesrect(), do the search inline. * * FIXME we return the first enclosing buffer, perhaps we should * search for the largest? */ for( p = cache->buffers; p; p = p->next ) { buffer = (VipsBuffer *) p->data; area = &buffer->area; if( area->left <= r->left && area->top <= r->top && area->left + area->width >= r->left + r->width && area->top + area->height >= r->top + r->height ) { buffer->ref_count += 1; #ifdef DEBUG_VERBOSE printf( "vips_buffer_find: left = %d, top = %d, " "width = %d, height = %d, count = %d (%p)\n", buffer->area.left, buffer->area.top, buffer->area.width, buffer->area.height, buffer->ref_count, buffer ); #endif /*DEBUG_VERBOSE*/ return( buffer ); } } return( NULL ); } /* Return a ref to a buffer that encloses area. The buffer we return might be * done. */ VipsBuffer * vips_buffer_ref( VipsImage *im, VipsRect *area ) { VipsBuffer *buffer; if( !(buffer = buffer_find( im, area )) ) /* No existing buffer ... make a new one. */ if( !(buffer = vips_buffer_new( im, area )) ) return( NULL ); return( buffer ); } /* Unref old, ref new, in a single operation. Reuse stuff if we can. The * buffer we return might or might not be done. */ VipsBuffer * vips_buffer_unref_ref( VipsBuffer *old_buffer, VipsImage *im, VipsRect *area ) { VipsBuffer *buffer; g_assert( !old_buffer || old_buffer->im == im ); /* Is the current buffer OK? */ if( old_buffer && vips_rect_includesrect( &old_buffer->area, area ) ) return( old_buffer ); /* Does the new area already have a buffer? */ if( (buffer = buffer_find( im, area )) ) { VIPS_FREEF( vips_buffer_unref, old_buffer ); return( buffer ); } /* Is the current buffer unshared? We can just move it. */ if( old_buffer && old_buffer->ref_count == 1 ) { if( buffer_move( old_buffer, area ) ) { vips_buffer_unref( old_buffer ); return( NULL ); } return( old_buffer ); } /* Fallback ... unref the old one, make a new one. */ VIPS_FREEF( vips_buffer_unref, old_buffer ); if( !(buffer = vips_buffer_new( im, area )) ) return( NULL ); return( buffer ); } void vips_buffer_print( VipsBuffer *buffer ) { printf( "VipsBuffer: %p ref_count = %d, ", buffer, buffer->ref_count ); printf( "im = %p, ", buffer->im ); printf( "area.left = %d, ", buffer->area.left ); printf( "area.top = %d, ", buffer->area.top ); printf( "area.width = %d, ", buffer->area.width ); printf( "area.height = %d, ", buffer->area.height ); printf( "done = %d, ", buffer->done ); printf( "buf = %p, ", buffer->buf ); printf( "bsize = %zd\n", buffer->bsize ); } static void vips__buffer_init_cb( VipsBufferThread *buffer_thread ) { /* We only come here if vips_thread_shutdown() was not called for this * thread. Do our best to clean up. * * GPrivate has stopped working, be careful not to touch that. */ buffer_thread_free( buffer_thread ); } /* Init the buffer cache system. */ void vips__buffer_init( void ) { #ifdef HAVE_PRIVATE_INIT static GPrivate private = G_PRIVATE_INIT( (GDestroyNotify) vips__buffer_init_cb ); buffer_thread_key = &private; #else if( !buffer_thread_key ) buffer_thread_key = g_private_new( (GDestroyNotify) vips__buffer_init_cb ); #endif if( buffer_cache_max_reserve < 1 ) printf( "vips__buffer_init: buffer reserve disabled\n" ); #ifdef DEBUG printf( "vips__buffer_init: DEBUG enabled\n" ); #endif /*DEBUG*/ #ifdef DEBUG_CREATE printf( "vips__buffer_init: DEBUG_CREATE enabled\n" ); #endif /*DEBUG_CREATE*/ } void vips__buffer_shutdown( void ) { VipsBufferThread *buffer_thread; if( (buffer_thread = g_private_get( buffer_thread_key )) ) { buffer_thread_free( buffer_thread ); g_private_set( buffer_thread_key, NULL ); } } vips-8.2.2/libvips/iofuncs/sink.h0000664000175000017500000000352012530402247013661 00000000000000/* A sink that's not attached to anything, eg. find image average, * * 28/3/10 * - from im_iterate(), reworked for threadpool */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_SINK_H #define VIPS_SINK_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include /* Base for sink.c / sinkdisc.c / sinkmemory.c */ typedef struct _SinkBase { VipsImage *im; /* The position we're at in buf. */ int x; int y; /* The tilesize we've picked. */ int tile_width; int tile_height; int nlines; /* The number of pixels allocate has allocated. Used for progress * feedback. */ guint64 processed; } SinkBase; /* Some function we can share. */ void vips_sink_base_init( SinkBase *sink_base, VipsImage *image ); VipsThreadState *vips_sink_thread_state_new( VipsImage *im, void *a ); int vips_sink_base_allocate( VipsThreadState *state, void *a, gboolean *stop ); int vips_sink_base_progress( void *a ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_SINK_H*/ vips-8.2.2/libvips/iofuncs/enumtemplate0000664000175000017500000000125612530402247015173 00000000000000/*** BEGIN file-header ***/ /* auto-generated enums for vips introspection */ #include /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@filename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ {@VALUENAME@, "@VALUENAME@", "@valuenick@"}, /*** END value-production ***/ /*** BEGIN value-tail ***/ {0, NULL, NULL} }; etype = g_@type@_register_static( "@EnumName@", values ); } return( etype ); } /*** END value-tail ***/ vips-8.2.2/libvips/iofuncs/mapfile.c0000664000175000017500000002010112620616171014322 00000000000000/* map and unmap files in various ways * * Copyright: Nicos Dessipris * Wriiten on: 13/02/1990 * Updated on: * 10/5/93 J.Cupitt * - im_mapfilerw() added * 13/12/94 JC * - ANSIfied * 5/7/99 JC * - better error if unable to map rw * 31/3/02 JC * - better mmap() fails error * 19/9/02 JC * - added im__mmap()/im__munmap() with windows versions * 5/1/04 Lev Serebryakov * - patched for freebsd compatibility * 5/2/04 JC * - now records length as well as base, so we unmap the right amount of * memory even if files change behind our back * 1/1/10 * - set NOCACHE if we can ... helps OS X performance a lot * 25/3/11 * - move to vips_ namespace */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_SYS_MMAN_H #include #endif /*HAVE_SYS_MMAN_H*/ #ifdef HAVE_SYS_FILE_H #include #endif /*HAVE_SYS_FILE_H*/ #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #ifdef OS_WIN32 #ifndef S_ISREG #define S_ISREG(m) (!!(m & _S_IFREG)) #endif #endif /*OS_WIN32*/ #include #ifdef OS_WIN32 #include #endif /*OS_WIN32*/ void * vips__mmap( int fd, int writeable, size_t length, gint64 offset ) { void *baseaddr; #ifdef DEBUG printf( "vips__mmap: length = 0x%zx, offset = 0x%lx\n", length, offset ); #endif /*DEBUG*/ #ifdef OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( fd ); DWORD flProtect; DWORD dwDesiredAccess; HANDLE hMMFile; ULARGE_INTEGER quad; DWORD dwFileOffsetHigh; DWORD dwFileOffsetLow; if( writeable ) { flProtect = PAGE_READWRITE; dwDesiredAccess = FILE_MAP_WRITE; } else { flProtect = PAGE_READONLY; dwDesiredAccess = FILE_MAP_READ; } quad.QuadPart = offset; dwFileOffsetLow = quad.LowPart; dwFileOffsetHigh = quad.HighPart; if( !(hMMFile = CreateFileMapping( hFile, NULL, flProtect, 0, 0, NULL )) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to CreateFileMapping" ) ); printf( "CreateFileMapping failed: %s\n", vips_error_buffer() ); return( NULL ); } if( !(baseaddr = (char *)MapViewOfFile( hMMFile, dwDesiredAccess, dwFileOffsetHigh, dwFileOffsetLow, length )) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to MapViewOfFile" ) ); printf( "MapViewOfFile failed: %s\n", vips_error_buffer() ); CloseHandle( hMMFile ); return( NULL ); } /* Can close mapping now ... view stays until UnmapViewOfFile(). FIXME ... is this a performance problem? */ CloseHandle( hMMFile ); } #else /*!OS_WIN32*/ { int prot; int flags; if( writeable ) prot = PROT_WRITE; else prot = PROT_READ; flags = MAP_SHARED; /* OS X caches mmapped files very aggressively if this flags is not * set. Scanning a large file without this flag will cause every other * process to get swapped out and kill performance. */ #ifdef MAP_NOCACHE flags |= MAP_NOCACHE; #endif /*MAP_NOCACHE*/ /* Casting gint64 to off_t should be safe, even on *nixes without * LARGEFILE. */ baseaddr = mmap( 0, length, prot, flags, fd, (off_t) offset ); if( baseaddr == MAP_FAILED ) { vips_error_system( errno, "vips_mapfile", "%s", _( "unable to mmap" ) ); vips_warn( "vips_mapfile", _( "map failed (%s), " "running very low on system resources, " "expect a crash soon" ), strerror( errno ) ); return( NULL ); } } #endif /*OS_WIN32*/ return( baseaddr ); } int vips__munmap( const void *start, size_t length ) { #ifdef OS_WIN32 if( !UnmapViewOfFile( (void *) start ) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to UnmapViewOfFile" ) ); return( -1 ); } #else /*!OS_WIN32*/ if( munmap( (void *) start, length ) < 0 ) { vips_error_system( errno, "vips_mapfile", "%s", _( "unable to munmap file" ) ); return( -1 ); } #endif /*OS_WIN32*/ return( 0 ); } int vips_mapfile( VipsImage *im ) { struct stat st; mode_t m; assert( !im->baseaddr ); /* Check the size of the file; if it is less than 64 bytes, then flag * an error, we won't be able to read the vips header without a segv. */ g_assert( im->file_length > 0 ); if( im->file_length < 64 ) { vips_error( "vips_mapfile", "%s", _( "file is less than 64 bytes" ) ); return( -1 ); } if( fstat( im->fd, &st ) == -1 ) { vips_error( "vips_mapfile", "%s", _( "unable to get file status" ) ); return( -1 ); } m = (mode_t) st.st_mode; if( !S_ISREG( m ) ) { vips_error( "vips_mapfile", "%s", _( "not a regular file" ) ); return( -1 ); } if( !(im->baseaddr = vips__mmap( im->fd, 0, im->file_length, 0 )) ) return( -1 ); im->length = im->file_length; return( 0 ); } /* As above, but map read/write. */ int vips_mapfilerw( VipsImage *im ) { struct stat st; mode_t m; assert( !im->baseaddr ); /* Check the size of the file if it is less than 64 bytes return * make also sure that it is a regular file */ g_assert( im->file_length > 0 ); if( fstat( im->fd, &st ) == -1 ) { vips_error( "vips_mapfilerw", "%s", _( "unable to get file status" ) ); return( -1 ); } m = (mode_t) st.st_mode; if( im->file_length < 64 || !S_ISREG( m ) ) { vips_error( "vips_mapfile", "%s", _( "unable to read data" ) ); return( -1 ); } if( !(im->baseaddr = vips__mmap( im->fd, 1, im->file_length, 0 )) ) return( -1 ); im->length = im->file_length; return( 0 ); } /* From im_rwcheck() ... image needs to be a completely mapped read-only file, * we try to remap it read-write. */ int vips_remapfilerw( VipsImage *image ) { void *baseaddr; #ifdef OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( image->fd ); HANDLE hMMFile; if( !(hMMFile = CreateFileMapping( hFile, NULL, PAGE_READWRITE, 0, 0, NULL )) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to CreateFileMapping" ) ); return( -1 ); } if( !UnmapViewOfFile( image->baseaddr ) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to UnmapViewOfFile" ) ); return( -1 ); } if( !(baseaddr = (char *)MapViewOfFileEx( hMMFile, FILE_MAP_WRITE, 0, 0, 0, image->baseaddr )) ) { vips_error_system( GetLastError(), "vips_mapfile", "%s", _( "unable to MapViewOfFile" ) ); CloseHandle( hMMFile ); return( -1 ); } /* Can close mapping now ... view stays until UnmapViewOfFile(). FIXME ... is this a performance problem? */ CloseHandle( hMMFile ); } #else /*!OS_WIN32*/ { assert( image->dtype == VIPS_IMAGE_MMAPIN ); baseaddr = mmap( image->baseaddr, image->length, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, image->fd, 0 ); if( baseaddr == (void *)-1 ) { vips_error( "vips_mapfile", _( "unable to mmap: \"%s\" - %s" ), image->filename, strerror( errno ) ); return( -1 ); } } #endif /*OS_WIN32*/ image->dtype = VIPS_IMAGE_MMAPINRW; if( baseaddr != image->baseaddr ) { vips_error( "vips_mapfile", _( "unable to mmap \"%s\" to same " "address" ), image->filename ); image->baseaddr = baseaddr; return( -1 ); } return( 0 ); } vips-8.2.2/libvips/iofuncs/enumtypes.c0000664000175000017500000005604712620424325014756 00000000000000 /* Generated data (by glib-mkenums) */ /* auto-generated enums for vips introspection */ #include /* enumerations from "../../libvips/include/vips/foreign.h" */ GType vips_foreign_flags_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GFlagsValue values[] = { {VIPS_FOREIGN_NONE, "VIPS_FOREIGN_NONE", "none"}, {VIPS_FOREIGN_PARTIAL, "VIPS_FOREIGN_PARTIAL", "partial"}, {VIPS_FOREIGN_BIGENDIAN, "VIPS_FOREIGN_BIGENDIAN", "bigendian"}, {VIPS_FOREIGN_SEQUENTIAL, "VIPS_FOREIGN_SEQUENTIAL", "sequential"}, {VIPS_FOREIGN_ALL, "VIPS_FOREIGN_ALL", "all"}, {0, NULL, NULL} }; etype = g_flags_register_static( "VipsForeignFlags", values ); } return( etype ); } GType vips_saveable_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_SAVEABLE_MONO, "VIPS_SAVEABLE_MONO", "mono"}, {VIPS_SAVEABLE_RGB, "VIPS_SAVEABLE_RGB", "rgb"}, {VIPS_SAVEABLE_RGBA, "VIPS_SAVEABLE_RGBA", "rgba"}, {VIPS_SAVEABLE_RGBA_ONLY, "VIPS_SAVEABLE_RGBA_ONLY", "rgba-only"}, {VIPS_SAVEABLE_RGB_CMYK, "VIPS_SAVEABLE_RGB_CMYK", "rgb-cmyk"}, {VIPS_SAVEABLE_ANY, "VIPS_SAVEABLE_ANY", "any"}, {VIPS_SAVEABLE_LAST, "VIPS_SAVEABLE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsSaveable", values ); } return( etype ); } GType vips_foreign_tiff_compression_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_TIFF_COMPRESSION_NONE, "VIPS_FOREIGN_TIFF_COMPRESSION_NONE", "none"}, {VIPS_FOREIGN_TIFF_COMPRESSION_JPEG, "VIPS_FOREIGN_TIFF_COMPRESSION_JPEG", "jpeg"}, {VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE, "VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE", "deflate"}, {VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS, "VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS", "packbits"}, {VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4, "VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4", "ccittfax4"}, {VIPS_FOREIGN_TIFF_COMPRESSION_LZW, "VIPS_FOREIGN_TIFF_COMPRESSION_LZW", "lzw"}, {VIPS_FOREIGN_TIFF_COMPRESSION_LAST, "VIPS_FOREIGN_TIFF_COMPRESSION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignTiffCompression", values ); } return( etype ); } GType vips_foreign_tiff_predictor_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_TIFF_PREDICTOR_NONE, "VIPS_FOREIGN_TIFF_PREDICTOR_NONE", "none"}, {VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL, "VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL", "horizontal"}, {VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT, "VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT", "float"}, {VIPS_FOREIGN_TIFF_PREDICTOR_LAST, "VIPS_FOREIGN_TIFF_PREDICTOR_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignTiffPredictor", values ); } return( etype ); } GType vips_foreign_tiff_resunit_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_TIFF_RESUNIT_CM, "VIPS_FOREIGN_TIFF_RESUNIT_CM", "cm"}, {VIPS_FOREIGN_TIFF_RESUNIT_INCH, "VIPS_FOREIGN_TIFF_RESUNIT_INCH", "inch"}, {VIPS_FOREIGN_TIFF_RESUNIT_LAST, "VIPS_FOREIGN_TIFF_RESUNIT_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignTiffResunit", values ); } return( etype ); } GType vips_foreign_png_filter_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GFlagsValue values[] = { {VIPS_FOREIGN_PNG_FILTER_NONE, "VIPS_FOREIGN_PNG_FILTER_NONE", "none"}, {VIPS_FOREIGN_PNG_FILTER_SUB, "VIPS_FOREIGN_PNG_FILTER_SUB", "sub"}, {VIPS_FOREIGN_PNG_FILTER_UP, "VIPS_FOREIGN_PNG_FILTER_UP", "up"}, {VIPS_FOREIGN_PNG_FILTER_AVG, "VIPS_FOREIGN_PNG_FILTER_AVG", "avg"}, {VIPS_FOREIGN_PNG_FILTER_PAETH, "VIPS_FOREIGN_PNG_FILTER_PAETH", "paeth"}, {VIPS_FOREIGN_PNG_FILTER_ALL, "VIPS_FOREIGN_PNG_FILTER_ALL", "all"}, {0, NULL, NULL} }; etype = g_flags_register_static( "VipsForeignPngFilter", values ); } return( etype ); } GType vips_foreign_dz_layout_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_DZ_LAYOUT_DZ, "VIPS_FOREIGN_DZ_LAYOUT_DZ", "dz"}, {VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY, "VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY", "zoomify"}, {VIPS_FOREIGN_DZ_LAYOUT_GOOGLE, "VIPS_FOREIGN_DZ_LAYOUT_GOOGLE", "google"}, {VIPS_FOREIGN_DZ_LAYOUT_LAST, "VIPS_FOREIGN_DZ_LAYOUT_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignDzLayout", values ); } return( etype ); } GType vips_foreign_dz_depth_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL, "VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL", "onepixel"}, {VIPS_FOREIGN_DZ_DEPTH_ONETILE, "VIPS_FOREIGN_DZ_DEPTH_ONETILE", "onetile"}, {VIPS_FOREIGN_DZ_DEPTH_ONE, "VIPS_FOREIGN_DZ_DEPTH_ONE", "one"}, {VIPS_FOREIGN_DZ_DEPTH_LAST, "VIPS_FOREIGN_DZ_DEPTH_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignDzDepth", values ); } return( etype ); } GType vips_foreign_dz_container_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FOREIGN_DZ_CONTAINER_FS, "VIPS_FOREIGN_DZ_CONTAINER_FS", "fs"}, {VIPS_FOREIGN_DZ_CONTAINER_ZIP, "VIPS_FOREIGN_DZ_CONTAINER_ZIP", "zip"}, {VIPS_FOREIGN_DZ_CONTAINER_LAST, "VIPS_FOREIGN_DZ_CONTAINER_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsForeignDzContainer", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/conversion.h" */ GType vips_extend_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_EXTEND_BLACK, "VIPS_EXTEND_BLACK", "black"}, {VIPS_EXTEND_COPY, "VIPS_EXTEND_COPY", "copy"}, {VIPS_EXTEND_REPEAT, "VIPS_EXTEND_REPEAT", "repeat"}, {VIPS_EXTEND_MIRROR, "VIPS_EXTEND_MIRROR", "mirror"}, {VIPS_EXTEND_WHITE, "VIPS_EXTEND_WHITE", "white"}, {VIPS_EXTEND_BACKGROUND, "VIPS_EXTEND_BACKGROUND", "background"}, {VIPS_EXTEND_LAST, "VIPS_EXTEND_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsExtend", values ); } return( etype ); } GType vips_direction_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_DIRECTION_HORIZONTAL, "VIPS_DIRECTION_HORIZONTAL", "horizontal"}, {VIPS_DIRECTION_VERTICAL, "VIPS_DIRECTION_VERTICAL", "vertical"}, {VIPS_DIRECTION_LAST, "VIPS_DIRECTION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsDirection", values ); } return( etype ); } GType vips_align_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_ALIGN_LOW, "VIPS_ALIGN_LOW", "low"}, {VIPS_ALIGN_CENTRE, "VIPS_ALIGN_CENTRE", "centre"}, {VIPS_ALIGN_HIGH, "VIPS_ALIGN_HIGH", "high"}, {VIPS_ALIGN_LAST, "VIPS_ALIGN_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsAlign", values ); } return( etype ); } GType vips_angle_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_ANGLE_D0, "VIPS_ANGLE_D0", "d0"}, {VIPS_ANGLE_D90, "VIPS_ANGLE_D90", "d90"}, {VIPS_ANGLE_D180, "VIPS_ANGLE_D180", "d180"}, {VIPS_ANGLE_D270, "VIPS_ANGLE_D270", "d270"}, {VIPS_ANGLE_LAST, "VIPS_ANGLE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsAngle", values ); } return( etype ); } GType vips_angle45_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_ANGLE45_D0, "VIPS_ANGLE45_D0", "d0"}, {VIPS_ANGLE45_D45, "VIPS_ANGLE45_D45", "d45"}, {VIPS_ANGLE45_D90, "VIPS_ANGLE45_D90", "d90"}, {VIPS_ANGLE45_D135, "VIPS_ANGLE45_D135", "d135"}, {VIPS_ANGLE45_D180, "VIPS_ANGLE45_D180", "d180"}, {VIPS_ANGLE45_D225, "VIPS_ANGLE45_D225", "d225"}, {VIPS_ANGLE45_D270, "VIPS_ANGLE45_D270", "d270"}, {VIPS_ANGLE45_D315, "VIPS_ANGLE45_D315", "d315"}, {VIPS_ANGLE45_LAST, "VIPS_ANGLE45_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsAngle45", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/arithmetic.h" */ GType vips_operation_math_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_MATH_SIN, "VIPS_OPERATION_MATH_SIN", "sin"}, {VIPS_OPERATION_MATH_COS, "VIPS_OPERATION_MATH_COS", "cos"}, {VIPS_OPERATION_MATH_TAN, "VIPS_OPERATION_MATH_TAN", "tan"}, {VIPS_OPERATION_MATH_ASIN, "VIPS_OPERATION_MATH_ASIN", "asin"}, {VIPS_OPERATION_MATH_ACOS, "VIPS_OPERATION_MATH_ACOS", "acos"}, {VIPS_OPERATION_MATH_ATAN, "VIPS_OPERATION_MATH_ATAN", "atan"}, {VIPS_OPERATION_MATH_LOG, "VIPS_OPERATION_MATH_LOG", "log"}, {VIPS_OPERATION_MATH_LOG10, "VIPS_OPERATION_MATH_LOG10", "log10"}, {VIPS_OPERATION_MATH_EXP, "VIPS_OPERATION_MATH_EXP", "exp"}, {VIPS_OPERATION_MATH_EXP10, "VIPS_OPERATION_MATH_EXP10", "exp10"}, {VIPS_OPERATION_MATH_LAST, "VIPS_OPERATION_MATH_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationMath", values ); } return( etype ); } GType vips_operation_math2_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_MATH2_POW, "VIPS_OPERATION_MATH2_POW", "pow"}, {VIPS_OPERATION_MATH2_WOP, "VIPS_OPERATION_MATH2_WOP", "wop"}, {VIPS_OPERATION_MATH2_LAST, "VIPS_OPERATION_MATH2_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationMath2", values ); } return( etype ); } GType vips_operation_round_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_ROUND_RINT, "VIPS_OPERATION_ROUND_RINT", "rint"}, {VIPS_OPERATION_ROUND_CEIL, "VIPS_OPERATION_ROUND_CEIL", "ceil"}, {VIPS_OPERATION_ROUND_FLOOR, "VIPS_OPERATION_ROUND_FLOOR", "floor"}, {VIPS_OPERATION_ROUND_LAST, "VIPS_OPERATION_ROUND_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationRound", values ); } return( etype ); } GType vips_operation_relational_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_RELATIONAL_EQUAL, "VIPS_OPERATION_RELATIONAL_EQUAL", "equal"}, {VIPS_OPERATION_RELATIONAL_NOTEQ, "VIPS_OPERATION_RELATIONAL_NOTEQ", "noteq"}, {VIPS_OPERATION_RELATIONAL_LESS, "VIPS_OPERATION_RELATIONAL_LESS", "less"}, {VIPS_OPERATION_RELATIONAL_LESSEQ, "VIPS_OPERATION_RELATIONAL_LESSEQ", "lesseq"}, {VIPS_OPERATION_RELATIONAL_MORE, "VIPS_OPERATION_RELATIONAL_MORE", "more"}, {VIPS_OPERATION_RELATIONAL_MOREEQ, "VIPS_OPERATION_RELATIONAL_MOREEQ", "moreeq"}, {VIPS_OPERATION_RELATIONAL_LAST, "VIPS_OPERATION_RELATIONAL_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationRelational", values ); } return( etype ); } GType vips_operation_boolean_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_BOOLEAN_AND, "VIPS_OPERATION_BOOLEAN_AND", "and"}, {VIPS_OPERATION_BOOLEAN_OR, "VIPS_OPERATION_BOOLEAN_OR", "or"}, {VIPS_OPERATION_BOOLEAN_EOR, "VIPS_OPERATION_BOOLEAN_EOR", "eor"}, {VIPS_OPERATION_BOOLEAN_LSHIFT, "VIPS_OPERATION_BOOLEAN_LSHIFT", "lshift"}, {VIPS_OPERATION_BOOLEAN_RSHIFT, "VIPS_OPERATION_BOOLEAN_RSHIFT", "rshift"}, {VIPS_OPERATION_BOOLEAN_LAST, "VIPS_OPERATION_BOOLEAN_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationBoolean", values ); } return( etype ); } GType vips_operation_complex_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_COMPLEX_POLAR, "VIPS_OPERATION_COMPLEX_POLAR", "polar"}, {VIPS_OPERATION_COMPLEX_RECT, "VIPS_OPERATION_COMPLEX_RECT", "rect"}, {VIPS_OPERATION_COMPLEX_CONJ, "VIPS_OPERATION_COMPLEX_CONJ", "conj"}, {VIPS_OPERATION_COMPLEX_LAST, "VIPS_OPERATION_COMPLEX_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationComplex", values ); } return( etype ); } GType vips_operation_complex2_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_COMPLEX2_CROSS_PHASE, "VIPS_OPERATION_COMPLEX2_CROSS_PHASE", "cross-phase"}, {VIPS_OPERATION_COMPLEX2_LAST, "VIPS_OPERATION_COMPLEX2_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationComplex2", values ); } return( etype ); } GType vips_operation_complexget_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_COMPLEXGET_REAL, "VIPS_OPERATION_COMPLEXGET_REAL", "real"}, {VIPS_OPERATION_COMPLEXGET_IMAG, "VIPS_OPERATION_COMPLEXGET_IMAG", "imag"}, {VIPS_OPERATION_COMPLEXGET_LAST, "VIPS_OPERATION_COMPLEXGET_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationComplexget", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/util.h" */ GType vips_token_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_TOKEN_LEFT, "VIPS_TOKEN_LEFT", "left"}, {VIPS_TOKEN_RIGHT, "VIPS_TOKEN_RIGHT", "right"}, {VIPS_TOKEN_STRING, "VIPS_TOKEN_STRING", "string"}, {VIPS_TOKEN_EQUALS, "VIPS_TOKEN_EQUALS", "equals"}, {VIPS_TOKEN_COMMA, "VIPS_TOKEN_COMMA", "comma"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsToken", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/image.h" */ GType vips_demand_style_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_DEMAND_STYLE_ERROR, "VIPS_DEMAND_STYLE_ERROR", "error"}, {VIPS_DEMAND_STYLE_SMALLTILE, "VIPS_DEMAND_STYLE_SMALLTILE", "smalltile"}, {VIPS_DEMAND_STYLE_FATSTRIP, "VIPS_DEMAND_STYLE_FATSTRIP", "fatstrip"}, {VIPS_DEMAND_STYLE_THINSTRIP, "VIPS_DEMAND_STYLE_THINSTRIP", "thinstrip"}, {VIPS_DEMAND_STYLE_ANY, "VIPS_DEMAND_STYLE_ANY", "any"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsDemandStyle", values ); } return( etype ); } GType vips_image_type_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_IMAGE_ERROR, "VIPS_IMAGE_ERROR", "error"}, {VIPS_IMAGE_NONE, "VIPS_IMAGE_NONE", "none"}, {VIPS_IMAGE_SETBUF, "VIPS_IMAGE_SETBUF", "setbuf"}, {VIPS_IMAGE_SETBUF_FOREIGN, "VIPS_IMAGE_SETBUF_FOREIGN", "setbuf-foreign"}, {VIPS_IMAGE_OPENIN, "VIPS_IMAGE_OPENIN", "openin"}, {VIPS_IMAGE_MMAPIN, "VIPS_IMAGE_MMAPIN", "mmapin"}, {VIPS_IMAGE_MMAPINRW, "VIPS_IMAGE_MMAPINRW", "mmapinrw"}, {VIPS_IMAGE_OPENOUT, "VIPS_IMAGE_OPENOUT", "openout"}, {VIPS_IMAGE_PARTIAL, "VIPS_IMAGE_PARTIAL", "partial"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsImageType", values ); } return( etype ); } GType vips_interpretation_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_INTERPRETATION_ERROR, "VIPS_INTERPRETATION_ERROR", "error"}, {VIPS_INTERPRETATION_MULTIBAND, "VIPS_INTERPRETATION_MULTIBAND", "multiband"}, {VIPS_INTERPRETATION_B_W, "VIPS_INTERPRETATION_B_W", "b-w"}, {VIPS_INTERPRETATION_HISTOGRAM, "VIPS_INTERPRETATION_HISTOGRAM", "histogram"}, {VIPS_INTERPRETATION_XYZ, "VIPS_INTERPRETATION_XYZ", "xyz"}, {VIPS_INTERPRETATION_LAB, "VIPS_INTERPRETATION_LAB", "lab"}, {VIPS_INTERPRETATION_CMYK, "VIPS_INTERPRETATION_CMYK", "cmyk"}, {VIPS_INTERPRETATION_LABQ, "VIPS_INTERPRETATION_LABQ", "labq"}, {VIPS_INTERPRETATION_RGB, "VIPS_INTERPRETATION_RGB", "rgb"}, {VIPS_INTERPRETATION_CMC, "VIPS_INTERPRETATION_CMC", "cmc"}, {VIPS_INTERPRETATION_LCH, "VIPS_INTERPRETATION_LCH", "lch"}, {VIPS_INTERPRETATION_LABS, "VIPS_INTERPRETATION_LABS", "labs"}, {VIPS_INTERPRETATION_sRGB, "VIPS_INTERPRETATION_sRGB", "srgb"}, {VIPS_INTERPRETATION_YXY, "VIPS_INTERPRETATION_YXY", "yxy"}, {VIPS_INTERPRETATION_FOURIER, "VIPS_INTERPRETATION_FOURIER", "fourier"}, {VIPS_INTERPRETATION_RGB16, "VIPS_INTERPRETATION_RGB16", "rgb16"}, {VIPS_INTERPRETATION_GREY16, "VIPS_INTERPRETATION_GREY16", "grey16"}, {VIPS_INTERPRETATION_MATRIX, "VIPS_INTERPRETATION_MATRIX", "matrix"}, {VIPS_INTERPRETATION_scRGB, "VIPS_INTERPRETATION_scRGB", "scrgb"}, {VIPS_INTERPRETATION_HSV, "VIPS_INTERPRETATION_HSV", "hsv"}, {VIPS_INTERPRETATION_LAST, "VIPS_INTERPRETATION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsInterpretation", values ); } return( etype ); } GType vips_band_format_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_FORMAT_NOTSET, "VIPS_FORMAT_NOTSET", "notset"}, {VIPS_FORMAT_UCHAR, "VIPS_FORMAT_UCHAR", "uchar"}, {VIPS_FORMAT_CHAR, "VIPS_FORMAT_CHAR", "char"}, {VIPS_FORMAT_USHORT, "VIPS_FORMAT_USHORT", "ushort"}, {VIPS_FORMAT_SHORT, "VIPS_FORMAT_SHORT", "short"}, {VIPS_FORMAT_UINT, "VIPS_FORMAT_UINT", "uint"}, {VIPS_FORMAT_INT, "VIPS_FORMAT_INT", "int"}, {VIPS_FORMAT_FLOAT, "VIPS_FORMAT_FLOAT", "float"}, {VIPS_FORMAT_COMPLEX, "VIPS_FORMAT_COMPLEX", "complex"}, {VIPS_FORMAT_DOUBLE, "VIPS_FORMAT_DOUBLE", "double"}, {VIPS_FORMAT_DPCOMPLEX, "VIPS_FORMAT_DPCOMPLEX", "dpcomplex"}, {VIPS_FORMAT_LAST, "VIPS_FORMAT_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsBandFormat", values ); } return( etype ); } GType vips_coding_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_CODING_ERROR, "VIPS_CODING_ERROR", "error"}, {VIPS_CODING_NONE, "VIPS_CODING_NONE", "none"}, {VIPS_CODING_LABQ, "VIPS_CODING_LABQ", "labq"}, {VIPS_CODING_RAD, "VIPS_CODING_RAD", "rad"}, {VIPS_CODING_LAST, "VIPS_CODING_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsCoding", values ); } return( etype ); } GType vips_access_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_ACCESS_RANDOM, "VIPS_ACCESS_RANDOM", "random"}, {VIPS_ACCESS_SEQUENTIAL, "VIPS_ACCESS_SEQUENTIAL", "sequential"}, {VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, "VIPS_ACCESS_SEQUENTIAL_UNBUFFERED", "sequential-unbuffered"}, {VIPS_ACCESS_LAST, "VIPS_ACCESS_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsAccess", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/colour.h" */ GType vips_intent_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_INTENT_PERCEPTUAL, "VIPS_INTENT_PERCEPTUAL", "perceptual"}, {VIPS_INTENT_RELATIVE, "VIPS_INTENT_RELATIVE", "relative"}, {VIPS_INTENT_SATURATION, "VIPS_INTENT_SATURATION", "saturation"}, {VIPS_INTENT_ABSOLUTE, "VIPS_INTENT_ABSOLUTE", "absolute"}, {VIPS_INTENT_LAST, "VIPS_INTENT_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsIntent", values ); } return( etype ); } GType vips_pcs_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_PCS_LAB, "VIPS_PCS_LAB", "lab"}, {VIPS_PCS_XYZ, "VIPS_PCS_XYZ", "xyz"}, {VIPS_PCS_LAST, "VIPS_PCS_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsPCS", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/operation.h" */ GType vips_operation_flags_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GFlagsValue values[] = { {VIPS_OPERATION_NONE, "VIPS_OPERATION_NONE", "none"}, {VIPS_OPERATION_SEQUENTIAL, "VIPS_OPERATION_SEQUENTIAL", "sequential"}, {VIPS_OPERATION_SEQUENTIAL_UNBUFFERED, "VIPS_OPERATION_SEQUENTIAL_UNBUFFERED", "sequential-unbuffered"}, {VIPS_OPERATION_NOCACHE, "VIPS_OPERATION_NOCACHE", "nocache"}, {VIPS_OPERATION_DEPRECATED, "VIPS_OPERATION_DEPRECATED", "deprecated"}, {0, NULL, NULL} }; etype = g_flags_register_static( "VipsOperationFlags", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/convolution.h" */ GType vips_combine_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_COMBINE_MAX, "VIPS_COMBINE_MAX", "max"}, {VIPS_COMBINE_SUM, "VIPS_COMBINE_SUM", "sum"}, {VIPS_COMBINE_LAST, "VIPS_COMBINE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsCombine", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/morphology.h" */ GType vips_operation_morphology_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_OPERATION_MORPHOLOGY_ERODE, "VIPS_OPERATION_MORPHOLOGY_ERODE", "erode"}, {VIPS_OPERATION_MORPHOLOGY_DILATE, "VIPS_OPERATION_MORPHOLOGY_DILATE", "dilate"}, {VIPS_OPERATION_MORPHOLOGY_LAST, "VIPS_OPERATION_MORPHOLOGY_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsOperationMorphology", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/draw.h" */ GType vips_combine_mode_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_COMBINE_MODE_SET, "VIPS_COMBINE_MODE_SET", "set"}, {VIPS_COMBINE_MODE_ADD, "VIPS_COMBINE_MODE_ADD", "add"}, {VIPS_COMBINE_MODE_LAST, "VIPS_COMBINE_MODE_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsCombineMode", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/basic.h" */ GType vips_precision_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GEnumValue values[] = { {VIPS_PRECISION_INTEGER, "VIPS_PRECISION_INTEGER", "integer"}, {VIPS_PRECISION_FLOAT, "VIPS_PRECISION_FLOAT", "float"}, {VIPS_PRECISION_APPROXIMATE, "VIPS_PRECISION_APPROXIMATE", "approximate"}, {VIPS_PRECISION_LAST, "VIPS_PRECISION_LAST", "last"}, {0, NULL, NULL} }; etype = g_enum_register_static( "VipsPrecision", values ); } return( etype ); } /* enumerations from "../../libvips/include/vips/object.h" */ GType vips_argument_flags_get_type( void ) { static GType etype = 0; if( etype == 0 ) { static const GFlagsValue values[] = { {VIPS_ARGUMENT_NONE, "VIPS_ARGUMENT_NONE", "none"}, {VIPS_ARGUMENT_REQUIRED, "VIPS_ARGUMENT_REQUIRED", "required"}, {VIPS_ARGUMENT_CONSTRUCT, "VIPS_ARGUMENT_CONSTRUCT", "construct"}, {VIPS_ARGUMENT_SET_ONCE, "VIPS_ARGUMENT_SET_ONCE", "set-once"}, {VIPS_ARGUMENT_SET_ALWAYS, "VIPS_ARGUMENT_SET_ALWAYS", "set-always"}, {VIPS_ARGUMENT_INPUT, "VIPS_ARGUMENT_INPUT", "input"}, {VIPS_ARGUMENT_OUTPUT, "VIPS_ARGUMENT_OUTPUT", "output"}, {VIPS_ARGUMENT_DEPRECATED, "VIPS_ARGUMENT_DEPRECATED", "deprecated"}, {VIPS_ARGUMENT_MODIFY, "VIPS_ARGUMENT_MODIFY", "modify"}, {0, NULL, NULL} }; etype = g_flags_register_static( "VipsArgumentFlags", values ); } return( etype ); } /* Generated data ends here */ vips-8.2.2/libvips/iofuncs/sinkdisc.c0000664000175000017500000003127412633307144014532 00000000000000/* Write an image to a disc file. * * 19/3/10 * - from im_wbuffer.c * - move on top of VipsThreadpool, instead of im_threadgroup_t * 23/6/10 * - better buffer handling for single-line images * 17/7/10 * - we could get stuck if allocate failed (thanks Tim) * 23/2/12 * - we could deadlock if generate failed */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include #include "sink.h" /* A buffer we are going to write to disc in a background thread. */ typedef struct _WriteBuffer { struct _Write *write; VipsRegion *region; /* Pixels */ VipsRect area; /* Part of image this region covers */ VipsSemaphore go; /* Start bg thread loop */ VipsSemaphore nwrite; /* Number of threads writing to region */ VipsSemaphore done; /* Bg thread has done write */ int write_errno; /* Save write errors here */ GThread *thread; /* BG writer thread */ gboolean kill; /* Set to ask thread to exit */ } WriteBuffer; /* Per-call state. */ typedef struct _Write { SinkBase sink_base; /* We are current writing tiles to buf, buf_back is in the hands of * the bg write thread. */ WriteBuffer *buf; WriteBuffer *buf_back; /* The file format write operation. */ VipsRegionWrite write_fn; void *a; } Write; /* Our per-thread state ... we need to also track the buffer that pos is * supposed to write to. */ typedef struct _WriteThreadState { VipsThreadState parent_object; WriteBuffer *buf; } WriteThreadState; typedef struct _WriteThreadStateClass { VipsThreadStateClass parent_class; } WriteThreadStateClass; G_DEFINE_TYPE( WriteThreadState, write_thread_state, VIPS_TYPE_THREAD_STATE ); static void write_thread_state_class_init( WriteThreadStateClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); object_class->nickname = "writethreadstate"; object_class->description = _( "per-thread state for sinkdisc" ); } static void write_thread_state_init( WriteThreadState *state ) { state->buf = NULL; } static VipsThreadState * write_thread_state_new( VipsImage *im, void *a ) { return( VIPS_THREAD_STATE( vips_object_new( write_thread_state_get_type(), vips_thread_state_set, im, a ) ) ); } static void wbuffer_free( WriteBuffer *wbuffer ) { /* Is there a thread running this region? Kill it! */ if( wbuffer->thread ) { wbuffer->kill = TRUE; vips_semaphore_up( &wbuffer->go ); /* Return value is always NULL (see wbuffer_write_thread). */ (void) g_thread_join( wbuffer->thread ); VIPS_DEBUG_MSG( "wbuffer_free: g_thread_join()\n" ); wbuffer->thread = NULL; } VIPS_UNREF( wbuffer->region ); vips_semaphore_destroy( &wbuffer->go ); vips_semaphore_destroy( &wbuffer->nwrite ); vips_semaphore_destroy( &wbuffer->done ); vips_free( wbuffer ); } static void wbuffer_write( WriteBuffer *wbuffer ) { Write *write = wbuffer->write; VIPS_DEBUG_MSG( "wbuffer_write: %d bytes from wbuffer %p\n", wbuffer->region->bpl * wbuffer->area.height, wbuffer ); VIPS_GATE_START( "wbuffer_write: work" ); wbuffer->write_errno = write->write_fn( wbuffer->region, &wbuffer->area, write->a ); VIPS_GATE_STOP( "wbuffer_write: work" ); } /* Run this as a thread to do a BG write. */ static void * wbuffer_write_thread( void *data ) { WriteBuffer *wbuffer = (WriteBuffer *) data; for(;;) { /* Wait to be told to write. */ vips_semaphore_down( &wbuffer->go ); if( wbuffer->kill ) break; /* Now block until the last worker finishes on this buffer. */ vips_semaphore_downn( &wbuffer->nwrite, 0 ); wbuffer_write( wbuffer ); /* Signal write complete. */ vips_semaphore_up( &wbuffer->done ); } return( NULL ); } static WriteBuffer * wbuffer_new( Write *write ) { WriteBuffer *wbuffer; if( !(wbuffer = VIPS_NEW( NULL, WriteBuffer )) ) return( NULL ); wbuffer->write = write; wbuffer->region = NULL; vips_semaphore_init( &wbuffer->go, 0, "go" ); vips_semaphore_init( &wbuffer->nwrite, 0, "nwrite" ); vips_semaphore_init( &wbuffer->done, 0, "done" ); wbuffer->write_errno = 0; wbuffer->thread = NULL; wbuffer->kill = FALSE; if( !(wbuffer->region = vips_region_new( write->sink_base.im )) ) { wbuffer_free( wbuffer ); return( NULL ); } /* The worker threads need to be able to move the buffers around. */ vips__region_no_ownership( wbuffer->region ); /* Make this last (picks up parts of wbuffer on startup). */ if( !(wbuffer->thread = vips_g_thread_new( "wbuffer", wbuffer_write_thread, wbuffer )) ) { wbuffer_free( wbuffer ); return( NULL ); } return( wbuffer ); } /* Block until the previous write completes, then write the front buffer. */ static int wbuffer_flush( Write *write ) { VIPS_DEBUG_MSG( "wbuffer_flush:\n" ); /* Block until the other buffer has been written. We have to do this * before we can set this buffer writing or we'll lose output ordering. */ if( write->buf->area.top > 0 ) { vips_semaphore_down( &write->buf_back->done ); /* Previous write suceeded? */ if( write->buf_back->write_errno ) { vips_error_system( write->buf_back->write_errno, "wbuffer_write", "%s", _( "write failed" ) ); return( -1 ); } } /* Set the background writer going for this buffer. */ vips_semaphore_up( &write->buf->go ); return( 0 ); } /* Move a wbuffer to a position. */ static int wbuffer_position( WriteBuffer *wbuffer, int top, int height ) { VipsRect image, area; int result; image.left = 0; image.top = 0; image.width = wbuffer->write->sink_base.im->Xsize; image.height = wbuffer->write->sink_base.im->Ysize; area.left = 0; area.top = top; area.width = wbuffer->write->sink_base.im->Xsize; area.height = height; vips_rect_intersectrect( &area, &image, &wbuffer->area ); /* The workers take turns to move the buffers. */ vips__region_take_ownership( wbuffer->region ); result = vips_region_buffer( wbuffer->region, &wbuffer->area ); vips__region_no_ownership( wbuffer->region ); /* This should be an exclusive buffer, hopefully. */ g_assert( !wbuffer->region->buffer->done ); return( result ); } /* Our VipsThreadpoolAllocate function ... move the thread to the next tile * that needs doing. If no buffer is available (the bg writer hasn't yet * finished with it), we block. If all tiles are done, we return FALSE to end * iteration. */ static gboolean wbuffer_allocate_fn( VipsThreadState *state, void *a, gboolean *stop ) { WriteThreadState *wstate = (WriteThreadState *) state; Write *write = (Write *) a; SinkBase *sink_base = (SinkBase *) write; VipsRect image; VipsRect tile; VIPS_DEBUG_MSG( "wbuffer_allocate_fn:\n" ); /* Is the state x/y OK? New line or maybe new buffer or maybe even * all done. */ if( sink_base->x >= write->buf->area.width ) { sink_base->x = 0; sink_base->y += sink_base->tile_height; if( sink_base->y >= VIPS_RECT_BOTTOM( &write->buf->area ) ) { /* Block until the write of the previous buffer * is done, then set write of this buffer going. */ if( wbuffer_flush( write ) ) return( -1 ); /* End of image? */ if( sink_base->y >= sink_base->im->Ysize ) { *stop = TRUE; return( 0 ); } VIPS_DEBUG_MSG( "wbuffer_allocate_fn: " "finished top = %d, height = %d\n", write->buf->area.top, write->buf->area.height ); VIPS_DEBUG_MSG( "wbuffer_allocate_fn: " "starting top = %d, height = %d\n", sink_base->y, sink_base->nlines ); /* Swap buffers. */ VIPS_SWAP( WriteBuffer *, write->buf, write->buf_back ); /* Position buf at the new y. */ if( wbuffer_position( write->buf, sink_base->y, sink_base->nlines ) ) return( -1 ); } } /* x, y and buf are good: save params for thread. */ image.left = 0; image.top = 0; image.width = sink_base->im->Xsize; image.height = sink_base->im->Ysize; tile.left = sink_base->x; tile.top = sink_base->y; tile.width = sink_base->tile_width; tile.height = sink_base->tile_height; vips_rect_intersectrect( &image, &tile, &state->pos ); /* The thread needs to know which buffer it's writing to. */ wstate->buf = write->buf; VIPS_DEBUG_MSG( " thread %p allocated " "left = %d, top = %d, width = %d, height = %d\n", g_thread_self(), tile.left, tile.top, tile.width, tile.height ); /* Add to the number of writers on the buffer. */ vips_semaphore_upn( &write->buf->nwrite, -1 ); /* Move state on. */ sink_base->x += sink_base->tile_width; /* Add the number of pixels we've just allocated to progress. */ sink_base->processed += state->pos.width * state->pos.height; return( 0 ); } /* Our VipsThreadpoolWork function ... generate a tile! */ static int wbuffer_work_fn( VipsThreadState *state, void *a ) { WriteThreadState *wstate = (WriteThreadState *) state; int result; VIPS_DEBUG_MSG( "wbuffer_work_fn: thread %p, %d x %d\n", g_thread_self(), state->pos.left, state->pos.top ); result = vips_region_prepare_to( state->reg, wstate->buf->region, &state->pos, state->pos.left, state->pos.top ); VIPS_DEBUG_MSG( "wbuffer_work_fn: thread %p result = %d\n", g_thread_self(), result ); /* Tell the bg write thread we've left. */ vips_semaphore_upn( &wstate->buf->nwrite, 1 ); return( result ); } static void write_init( Write *write, VipsImage *image, VipsRegionWrite write_fn, void *a ) { vips_sink_base_init( &write->sink_base, image ); write->buf = wbuffer_new( write ); write->buf_back = wbuffer_new( write ); write->write_fn = write_fn; write->a = a; } static void write_free( Write *write ) { VIPS_FREEF( wbuffer_free, write->buf ); VIPS_FREEF( wbuffer_free, write->buf_back ); } /** * VipsRegionWrite: * @region: get pixels from here * @area: area to write * @a: client data * * The function should write the pixels in @area from @region. @a is the * value passed into vips_sink_disc(). * * See also: vips_sink_disc(). * * Returns: 0 on success, -1 on error. */ /** * vips_sink_disc: * @im: image to process * @write_fn: called for every batch of pixels * @a: client data * * vips_sink_disc() loops over @im, top-to-bottom, generating it in sections. * As each section is produced, @write_fn is called. * * @write_fn is always called single-threaded (though not always from the same * thread), it's always given image * sections in top-to-bottom order, and there are never any gaps. * * This operation is handy for making image sinks which output to things like * disc files. Things like vips_jpegsave(), for example, use this to write * images to files in JPEG format. * * See also: vips_concurrency_set(). * * Returns: 0 on success, -1 on error. */ int vips_sink_disc( VipsImage *im, VipsRegionWrite write_fn, void *a ) { Write write; int result; vips_image_preeval( im ); write_init( &write, im, write_fn, a ); result = 0; if( !write.buf || !write.buf_back || wbuffer_position( write.buf, 0, write.sink_base.nlines ) || vips_threadpool_run( im, write_thread_state_new, wbuffer_allocate_fn, wbuffer_work_fn, vips_sink_base_progress, &write ) ) result = -1; /* Just before allocate signalled stop, it set write.buf writing. We * need to wait for this write to finish. * * We can't just free the buffers (which will wait for the bg threads * to finish), since the bg thread might see the kill before it gets a * chance to write. * * If the pool exited with an error, write.buf might not have been * started (if the allocate failed), and in any case, we don't care if * the final write went through or not. */ if( !result ) vips_semaphore_down( &write.buf->done ); vips_image_posteval( im ); write_free( &write ); return( result ); } vips-8.2.2/libvips/iofuncs/vector.c0000664000175000017500000002556112631573666014243 00000000000000/* helper functions for Orc * * 29/10/10 * - from morph hacking */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* TODO - would setting params by index rather than name be any quicker? */ /* Verbose messages from Orc (or use ORC_DEBUG=99 on the command-line). #define DEBUG_ORC */ /* #define DEBUG */ /* Trace all orc calls, handy for debugging. #define DEBUG_TRACE */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include /* Cleared by the command-line --vips-novector switch and the IM_NOVECTOR env * var. */ gboolean vips__vector_enabled = TRUE; void vips_vector_error( VipsVector *vector ) { #ifdef HAVE_ORC_PROGRAM_GET_ERROR if( vector->program ) vips_warn( "VipsVector", "orc error: %s", orc_program_get_error( vector->program ) ); #endif /*HAVE_ORC_PROGRAM_GET_ERROR*/ } void vips_vector_init( void ) { #ifdef HAVE_ORC #ifdef DEBUG_TRACE printf( "orc_init();\n" ); #endif /*DEBUG_TRACE*/ orc_init(); #ifdef DEBUG_ORC /* You can also do ORC_DEBUG=99 at the command-line. */ #ifdef DEBUG_TRACE printf( "orc_debug_set_level( 99 );\n" ); #endif /*DEBUG_TRACE*/ orc_debug_set_level( 99 ); #endif /*DEBUG_ORC*/ /* Look for the environment variable IM_NOVECTOR and use that to turn * off as well. */ if( g_getenv( "VIPS_NOVECTOR" ) || g_getenv( "IM_NOVECTOR" ) ) vips__vector_enabled = FALSE; #endif /*HAVE_ORC*/ } gboolean vips_vector_isenabled( void ) { #ifdef HAVE_ORC return( vips__vector_enabled ); #else /*!HAVE_ORC*/ return( FALSE ); #endif /*HAVE_ORC*/ } void vips_vector_set_enabled( gboolean enabled ) { vips__vector_enabled = enabled; } void vips_vector_free( VipsVector *vector ) { #ifdef HAVE_ORC /* orc-0.4.19 will crash if you free programs. Update your orc, or * comment out this line. * * See https://bugzilla.gnome.org/show_bug.cgi?id=731227 * * orc does not set any version variables so we can't disable this * free automatically. */ #ifdef DEBUG_TRACE printf( "orc_program_free( %s );\n", vector->unique_name ); printf( "%s = NULL;\n", vector->unique_name ); #endif /*DEBUG_TRACE*/ VIPS_FREEF( orc_program_free, vector->program ); #endif /*HAVE_ORC*/ VIPS_FREE( vector->unique_name ); VIPS_FREE( vector ); } VipsVector * vips_vector_new( const char *name, int dsize ) { static int vector_number = 0; VipsVector *vector; int i; if( !(vector = VIPS_NEW( NULL, VipsVector )) ) return( NULL ); vector->name = name; vector->unique_name = g_strdup_printf( "p[%d]", vector_number++ ); vector->n_temp = 0; vector->n_scanline = 0; vector->n_source = 0; vector->n_destination = 0; vector->n_constant = 0; vector->n_parameter = 0; vector->n_instruction = 0; for( i = 0; i < VIPS_VECTOR_SOURCE_MAX; i++ ) { vector->s[i] = -1; vector->sl[i] = -1; } vector->d1 = -1; vector->compiled = FALSE; #ifdef HAVE_ORC vector->program = orc_program_new(); #ifdef DEBUG_TRACE printf( "%s = orc_program_new();\n", vector->unique_name ); #endif /*DEBUG_TRACE*/ /* We always make d1, our callers make either a single point source, or * for area ops, a set of scanlines. * * Don't check error return. orc uses 0 to mean error, but the first * var you create will have id 0 :-( The first var is unlikely to fail * anyway. */ vector->d1 = orc_program_add_destination( vector->program, dsize, "d1" ); #ifdef DEBUG_TRACE printf( "orc_program_add_destination( %s, %d, \"d1\" );\n", vector->unique_name, dsize ); #endif /*DEBUG_TRACE*/ vector->n_destination += 1; #endif /*HAVE_ORC*/ return( vector ); } void vips_vector_asm2( VipsVector *vector, const char *op, const char *a, const char *b ) { vector->n_instruction += 1; #ifdef DEBUG printf( " %s %s %s\n", op, a, b ); #endif /*DEBUG*/ #ifdef HAVE_ORC #ifdef DEBUG_TRACE printf( "orc_program_append_ds_str( %s, \"%s\", \"%s\", \"%s\" );\n", vector->unique_name, op, a, b ); #endif /*DEBUG_TRACE*/ orc_program_append_ds_str( vector->program, op, a, b ); #endif /*HAVE_ORC*/ } void vips_vector_asm3( VipsVector *vector, const char *op, const char *a, const char *b, const char *c ) { vector->n_instruction += 1; #ifdef DEBUG printf( " %s %s %s %s\n", op, a, b, c ); #endif /*DEBUG*/ #ifdef HAVE_ORC #ifdef DEBUG_TRACE printf( "orc_program_append_str( %s, \"%s\", " "\"%s\", \"%s\", \"%s\" );\n", vector->unique_name, op, a, b, c ); #endif /*DEBUG_TRACE*/ orc_program_append_str( vector->program, op, a, b, c ); #endif /*HAVE_ORC*/ } void vips_vector_constant( VipsVector *vector, char *name, int value, int size ) { #ifdef HAVE_ORC char *sname; if( size == 1 ) sname = "b"; else if( size == 2 ) sname = "w"; else if( size == 4 ) sname = "l"; else { printf( "vips_vector_constant: bad constant size\n" ); /* Not really correct, heh. */ sname = "x"; } if( value > 0 ) vips_snprintf( name, 256, "c%d%s", value, sname ); else vips_snprintf( name, 256, "cm%d%s", -value, sname ); if( orc_program_find_var_by_name( vector->program, name ) == -1 ) { #ifdef DEBUG_TRACE printf( "orc_program_add_constant( %s, %d, %d, \"%s\" );\n", vector->unique_name, size, value, name ); #endif /*DEBUG_TRACE*/ if( !orc_program_add_constant( vector->program, size, value, name ) ) vips_vector_error( vector ); vector->n_constant += 1; } #endif /*HAVE_ORC*/ } int vips_vector_source_name( VipsVector *vector, char *name, int size ) { int var; #ifdef HAVE_ORC g_assert( orc_program_find_var_by_name( vector->program, name ) == -1 ); if( !(var = orc_program_add_source( vector->program, size, name )) ) vips_vector_error( vector ); vector->s[vector->n_source] = var; #ifdef DEBUG_TRACE printf( "orc_program_add_source( %s, %d, \"%s\" );\n", vector->unique_name, size, name ); #endif /*DEBUG_TRACE*/ vector->n_source += 1; #else /*!HAVE_ORC*/ var = -1; #endif /*HAVE_ORC*/ return( var ); } void vips_vector_source_scanline( VipsVector *vector, char *name, int line, int size ) { #ifdef HAVE_ORC vips_snprintf( name, 256, "sl%d", line ); if( orc_program_find_var_by_name( vector->program, name ) == -1 ) { int var; if( !(var = orc_program_add_source( vector->program, size, name )) ) vips_vector_error( vector ); #ifdef DEBUG_TRACE printf( "orc_program_add_source( %s, %d, \"%s\" );\n", vector->unique_name, size, name ); #endif /*DEBUG_TRACE*/ vector->sl[vector->n_scanline] = var; vector->line[vector->n_scanline] = line; vector->n_scanline += 1; } #endif /*HAVE_ORC*/ } void vips_vector_temporary( VipsVector *vector, char *name, int size ) { #ifdef HAVE_ORC g_assert( orc_program_find_var_by_name( vector->program, name ) == -1 ); if( !orc_program_add_temporary( vector->program, size, name ) ) vips_vector_error( vector ); #ifdef DEBUG_TRACE printf( "orc_program_add_temporary( %s, %d, \"%s\" );\n", vector->unique_name, size, name ); #endif /*DEBUG_TRACE*/ vector->n_temp += 1; #endif /*HAVE_ORC*/ } gboolean vips_vector_full( VipsVector *vector ) { /* Many orcs don't have ORC_MAX_CONST_VARS etc., stick to our own * constants for now. */ /* We can need a max of 2 constants plus one source per * coefficient, so stop if we're sure we don't have enough. */ if( vector->n_constant + 2 > 8 ) return( TRUE ); /* You can have 8 parameters, and d1 counts as one of them, so +1 * there. */ if( vector->n_source + vector->n_scanline + 1 > 7 ) return( TRUE ); /* After signalling full, some operations will add up to 4 more * instructions as they finish up. Leave a margin. */ if( vector->n_instruction + 10 > 50 ) return( TRUE ); return( FALSE ); } gboolean vips_vector_compile( VipsVector *vector ) { #ifdef HAVE_ORC OrcCompileResult result; /* Some orcs seem to be unstable with many compilers active at once. */ g_mutex_lock( vips__global_lock ); result = orc_program_compile( vector->program ); g_mutex_unlock( vips__global_lock ); #ifdef DEBUG_TRACE printf( "orc_program_compile( %s );\n", vector->unique_name ); #endif /*DEBUG_TRACE*/ if( !ORC_COMPILE_RESULT_IS_SUCCESSFUL( result ) ) { #ifdef DEBUG printf( "*** error compiling %s\n", vector->name ); #endif /*DEBUG*/ return( FALSE ); } vector->compiled = TRUE; #endif /*HAVE_ORC*/ return( TRUE ); } void vips_vector_print( VipsVector *vector ) { int i; printf( "%s: ", vector->name ); if( vector->compiled ) printf( "successfully compiled\n" ); else printf( "not compiled\n" ); printf( " n_scanline = %d\n", vector->n_scanline ); for( i = 0; i < vector->n_scanline; i++ ) printf( " var %d = line %d\n", vector->sl[i], vector->line[i] ); printf( " n_source = %d\n", vector->n_source ); for( i = 0; i < vector->n_source; i++ ) printf( " var %d\n", vector->s[i] ); printf( " n_parameter = %d\n", vector->n_parameter ); printf( " n_destination = %d\n", vector->n_destination ); printf( " n_constant = %d\n", vector->n_constant ); printf( " n_temp = %d\n", vector->n_temp ); printf( " n_instruction = %d\n", vector->n_instruction ); } void vips_executor_set_program( VipsExecutor *executor, VipsVector *vector, int n ) { #ifdef HAVE_ORC executor->vector = vector; orc_executor_set_program( &executor->executor, vector->program ); orc_executor_set_n( &executor->executor, n ); #endif /*HAVE_ORC*/ } void vips_executor_set_array( VipsExecutor *executor, int var, void *value ) { #ifdef HAVE_ORC if( var != -1 ) orc_executor_set_array( &executor->executor, var, value ); #endif /*HAVE_ORC*/ } void vips_executor_set_scanline( VipsExecutor *executor, VipsRegion *ir, int x, int y ) { VipsVector *vector = executor->vector; VipsPel *base = VIPS_REGION_ADDR( ir, x, y ); int lsk = VIPS_REGION_LSKIP( ir ); int i; for( i = 0; i < vector->n_scanline; i++ ) { vips_executor_set_array( executor, vector->sl[i], base + vector->line[i] * lsk ); } } void vips_executor_set_destination( VipsExecutor *executor, void *value ) { VipsVector *vector = executor->vector; vips_executor_set_array( executor, vector->d1, value ); } void vips_executor_run( VipsExecutor *executor ) { #ifdef HAVE_ORC orc_executor_run( &executor->executor ); #endif /*HAVE_ORC*/ } vips-8.2.2/libvips/iofuncs/operation.c0000664000175000017500000011170712650442164014724 00000000000000/* base class for all vips operations * * 30/12/14 * - display default/min/max for pspec in usage */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include /** * SECTION: operation * @short_description: the VIPS operation base object class * @stability: Stable * @see_also: object * @include: vips/vips.h * * The #VipsOperation class and associated types and macros. * * #VipsOperation is the base class for all operations in libvips. It builds * on #VipsObject to provide the introspection and command-line interface to * libvips. * * It also maintains a cache of recent operations. See below. * * vips_call(), vips_call_split() and vips_call_split_option_string() are used * by vips to implement the C API. They can execute any #VipsOperation, * passing in a set of required and optional arguments. Normally you would not * use these functions directly: every operation has a tiny wrapper function * which provides type-safety for the required arguments. For example, * vips_embed() is defined as: * * |[ * int * vips_embed( VipsImage *in, VipsImage **out, * int x, int y, int width, int height, ... ) * { * va_list ap; * int result; * * va_start( ap, height ); * result = vips_call_split( "embed", ap, in, out, x, y, width, height ); * va_end( ap ); * * return( result ); * } * ]| * * Use vips_call_argv() to run any vips operation from a command-line style * argc/argv array. This is the thing used by the vips main program to * implement the vips command-line interface. * * ## #VipsOperation and reference counting * * After calling a #VipsOperation you are responsible for unreffing any output * objects. For example, consider: * * |[ * VipsImage *im = ...; * VipsImage *t1; * * if (vips_invert (im, &t1, NULL)) * error .. * ]| * * This will invert @im and return a new #VipsImage, @t1. As the caller * of vips_invert(), you are responsible for @t1 and must unref it when you no * longer need it. If vips_invert() fails, no @t1 is returned and you don't * need to do anything. * * If you don't need to use @im for another operation, * you can unref @im immediately after the call. If @im is needed to calculate * @t1, vips_invert() will add a ref to @im and automatically drop it when @t1 * is unreffed. * * Consider running two operations, one after the other. You could write: * * |[ * VipsImage *im = ...; * VipsImage *t1, *t2; * * if (vips_invert (im, &t1, NULL)) { * g_object_unref (im); * return -1; * } * g_object_unref (im); * * if (vips_flip (t1, &t2, VIPS_DIRECTION_HORIZONTAL, NULL)) { * g_object_unref (t1); * return -1; * } * g_object_unref (t1); * ]| * * This is correct, but rather long-winded. libvips provides a handy thing to * make a vector of auto-freeing object references. You can write this as: * * |[ * VipsObject *parent = ...; * VipsImage *im = ...; * VipsImage *t = (VipsImage **) vips_object_local_array (parent, 2); * * if (vips_invert (im, &t[0], NULL) || * vips_flip (t[0], &t[1], VIPS_DIRECTION_HORIZONTAL, NULL)) * return -1; * ]| * * where @parent is some enclosing object which will be unreffed when this * task is complete. vips_object_local_array() makes an array of #VipsObject * (or #VipsImage, in this case) where when @parent is freed, all non-NULL * #VipsObject in the array are also unreffed. * * ## The #VipsOperation cache * * Because all #VipsObject are immutable, they can be cached. The cache is * very simple to use: instead of calling vips_object_build(), call * vips_cache_operation_build(). This function calculates a hash from the * operations's input arguments and looks it up in table of all recent * operations. If there's a hit, the new operation is unreffed, the old * operation reffed, and the old operation returned in place of the new one. * * The cache size is controlled with vips_cache_set_max() and friends. */ /** * VipsOperationFlags: * @VIPS_OPERATION_NONE: no flags * @VIPS_OPERATION_SEQUENTIAL: can work sequentially with a small buffer * @VIPS_OPERATION_SEQUENTIAL_UNBUFFERED: can work sequentially with no buffer * @VIPS_OPERATION_NOCACHE: must not be cached * @VIPS_OPERATION_DEPRECATED: a compatibility thing * * Flags we associate with an operation. * * @VIPS_OPERATION_SEQUENTIAL means that the operation works like vips_conv(): * it can process images top-to-bottom with only small non-local * references. * * Every scan-line must be requested, you are not allowed to skip * ahead, but as a special case, the very first request can be for a region * not at the top of the image. In this case, the first part of the image will * be read and discarded * * @VIPS_OPERATION_SEQUENTIAL_UNBUFFERED means that the operation works like * vips_copy(): it can process images top-to-bottom and makes no * non-local references. * * Every scan-line must be requested, you are not allowed to skip * ahead, but as a special case, the very first request can be for a region * not at the top of the image. In this case, the first part of the image will * be read and discarded * * @VIPS_OPERATION_NOCACHE means that the operation must not be cached by * vips. * * @VIPS_OPERATION_DEPRECATED means this is an old operation kept in vips for * compatibility only and should be hidden from users. */ /* Abstract base class for operations. */ /* Our signals. */ enum { SIG_INVALIDATE, SIG_LAST }; static guint vips_operation_signals[SIG_LAST] = { 0 }; G_DEFINE_ABSTRACT_TYPE( VipsOperation, vips_operation, VIPS_TYPE_OBJECT ); static void vips_operation_finalize( GObject *gobject ) { VipsOperation *operation = VIPS_OPERATION( gobject ); VIPS_DEBUG_MSG( "vips_operation_finalize: %p\n", gobject ); if( operation->pixels ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( gobject ); vips_info( class->nickname, _( "%d pixels calculated" ), operation->pixels ); } G_OBJECT_CLASS( vips_operation_parent_class )->finalize( gobject ); } static void vips_operation_dispose( GObject *gobject ) { VIPS_DEBUG_MSG( "vips_operation_dispose: %p\n", gobject ); G_OBJECT_CLASS( vips_operation_parent_class )->dispose( gobject ); } /* Three basic types of command-line argument. * * INPUTS: things like an input image, there is a filename argument on the * command-line which is used to construct the operation argument. * * NOARG_OUTPUT: things like the result of VipsMax, there's no correspondiong * command-line argument, we just print the value. * * OPTIONS: optional arguments. * * NONE: hide this thing. */ typedef enum { USAGE_INPUTS, USAGE_NOARG_OUTPUT, USAGE_OPTIONS, USAGE_NONE } UsageType; typedef struct { char *message; /* header message on first print */ UsageType type; /* Type of arg to select */ gboolean oftype; /* Show as "of type" */ int n; /* Arg number */ } VipsOperationClassUsage; /* Put an arg into one the categories above. */ static UsageType vips_operation_class_usage_classify( VipsArgumentClass *argument_class ) { if( !(argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) || (argument_class->flags & VIPS_ARGUMENT_DEPRECATED) ) return( USAGE_NONE ); if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) return( USAGE_OPTIONS ); if( vips_argument_class_needsstring( argument_class ) ) return( USAGE_INPUTS ); if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) && !vips_argument_class_needsstring( argument_class ) ) return( USAGE_NOARG_OUTPUT ); return( USAGE_NONE ); } static void vips_operation_pspec_usage( VipsBuf *buf, GParamSpec *pspec ) { GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); /* These are the pspecs that vips uses that have interesting values. */ if( G_IS_PARAM_SPEC_ENUM( pspec ) ) { GTypeClass *class = g_type_class_ref( type ); GParamSpecEnum *pspec_enum = (GParamSpecEnum *) pspec; GEnumClass *genum; int i; /* Should be impossible, no need to warn. */ if( !class ) return; genum = G_ENUM_CLASS( class ); vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "default" ) ); vips_buf_appendf( buf, ": %s\n", vips_enum_nick( type, pspec_enum->default_value ) ); vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "allowed" ) ); vips_buf_appendf( buf, ": " ); /* -1 since we always have a "last" member. */ for( i = 0; i < genum->n_values - 1; i++ ) { if( i > 0 ) vips_buf_appends( buf, ", " ); vips_buf_appends( buf, genum->values[i].value_nick ); } vips_buf_appendf( buf, "\n" ); } else if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { GParamSpecBoolean *pspec_boolean = (GParamSpecBoolean *) pspec; vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "default" ) ); vips_buf_appendf( buf, ": %s\n", pspec_boolean->default_value ? "true" : "false" ); } else if( G_IS_PARAM_SPEC_DOUBLE( pspec ) ) { GParamSpecDouble *pspec_double = (GParamSpecDouble *) pspec; vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "default" ) ); vips_buf_appendf( buf, ": %g\n", pspec_double->default_value ); vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "min" ) ); vips_buf_appendf( buf, ": %g, ", pspec_double->minimum ); vips_buf_appendf( buf, "%s", _( "max" ) ); vips_buf_appendf( buf, ": %g\n", pspec_double->maximum ); } else if( G_IS_PARAM_SPEC_INT( pspec ) ) { GParamSpecInt *pspec_int = (GParamSpecInt *) pspec; vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "default" ) ); vips_buf_appendf( buf, ": %d\n", pspec_int->default_value ); vips_buf_appendf( buf, "\t\t\t" ); vips_buf_appendf( buf, "%s", _( "min" ) ); vips_buf_appendf( buf, ": %d, ", pspec_int->minimum ); vips_buf_appendf( buf, "%s", _( "max" ) ); vips_buf_appendf( buf, ": %d\n", pspec_int->maximum ); } } static void * vips_operation_class_usage_arg( VipsObjectClass *object_class, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsBuf *buf, VipsOperationClassUsage *usage ) { if( usage->type == vips_operation_class_usage_classify( argument_class ) ) { if( usage->message && usage->n == 0 ) vips_buf_appendf( buf, "%s\n", usage->message ); if( usage->oftype ) { vips_buf_appendf( buf, " %-12s - %s, %s %s\n", g_param_spec_get_name( pspec ), g_param_spec_get_blurb( pspec ), (argument_class->flags & VIPS_ARGUMENT_INPUT) ? _( "input" ) : _( "output" ), g_type_name( G_PARAM_SPEC_VALUE_TYPE( pspec ) ) ); vips_operation_pspec_usage( buf, pspec ); } else { if( usage->n > 0 ) vips_buf_appends( buf, " " ); vips_buf_appends( buf, g_param_spec_get_name( pspec ) ); } usage->n += 1; } return( NULL ); } static void vips_operation_usage( VipsOperationClass *class, VipsBuf *buf ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsOperationClassUsage usage; vips_buf_appendf( buf, "%s\n", object_class->description ); vips_buf_appendf( buf, "usage:\n" ); /* First pass through args: show the required names. */ vips_buf_appendf( buf, " %s ", object_class->nickname ); usage.message = NULL; usage.type = USAGE_INPUTS; usage.oftype = FALSE; usage.n = 0; vips_argument_class_map( object_class, (VipsArgumentClassMapFn) vips_operation_class_usage_arg, buf, &usage ); vips_buf_appends( buf, "\n" ); /* Show required types. */ usage.message = "where:"; usage.type = USAGE_INPUTS; usage.oftype = TRUE; usage.n = 0; vips_argument_class_map( object_class, (VipsArgumentClassMapFn) vips_operation_class_usage_arg, buf, &usage ); /* Show outputs with no input arg (eg. output maximum value for * vips_max()). */ usage.message = "outputs:"; usage.type = USAGE_NOARG_OUTPUT; usage.oftype = TRUE; usage.n = 0; vips_argument_class_map( object_class, (VipsArgumentClassMapFn) vips_operation_class_usage_arg, buf, &usage ); /* Show optional args. */ usage.message = "optional arguments:"; usage.type = USAGE_OPTIONS; usage.oftype = TRUE; usage.n = 0; vips_argument_class_map( object_class, (VipsArgumentClassMapFn) vips_operation_class_usage_arg, buf, &usage ); /* Show flags. */ if( class->flags ) { GFlagsValue *value; VipsOperationFlags flags; GFlagsClass *flags_class = g_type_class_ref( VIPS_TYPE_OPERATION_FLAGS ); vips_buf_appendf( buf, "operation flags: " ); flags = class->flags; while( flags && (value = g_flags_get_first_value( flags_class, flags )) ) { vips_buf_appendf( buf, "%s ", value->value_nick ); flags &= ~value->value; } vips_buf_appends( buf, "\n" ); } } static void * vips_operation_call_argument( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsArgument *argument = (VipsArgument *) argument_class; printf( " %s: offset = %d ", g_param_spec_get_name( argument->pspec ), argument_class->offset ); if( argument_class->flags & VIPS_ARGUMENT_REQUIRED ) printf ("required " ); if( argument_class->flags & VIPS_ARGUMENT_CONSTRUCT ) printf ("construct " ); if( argument_class->flags & VIPS_ARGUMENT_SET_ONCE ) printf ("set-once " ); if( argument_instance->assigned ) printf ("assigned " ); printf( "\n" ); return( NULL ); } static void vips_operation_dump( VipsObject *object, VipsBuf *buf ) { VipsOperation *operation = VIPS_OPERATION( object ); VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); printf( "%s args:\n", object_class->nickname ); vips_argument_map( VIPS_OBJECT( operation ), vips_operation_call_argument, NULL, NULL ); VIPS_OBJECT_CLASS( vips_operation_parent_class )->dump( object, buf ); } static void * vips_operation_vips_operation_print_summary_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsBuf *buf = (VipsBuf *) a; /* Just assigned input and output construct args. _summary() is used * for things like cache tracing, so it's useful to show output args. */ if( ((argument_class->flags & VIPS_ARGUMENT_INPUT) || (argument_class->flags & VIPS_ARGUMENT_OUTPUT)) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && argument_instance->assigned ) { const char *name = g_param_spec_get_name( pspec ); GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue gvalue = { 0, }; char *str; g_value_init( &gvalue, type ); g_object_get_property( G_OBJECT( object ), name, &gvalue ); str = g_strdup_value_contents( &gvalue ); vips_buf_appendf( buf, " %s=%s", name, str ); g_free( str ); g_value_unset( &gvalue ); } return( NULL ); } static void vips_operation_summary( VipsObject *object, VipsBuf *buf ) { VipsOperation *operation = VIPS_OPERATION( object ); VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); vips_buf_appendf( buf, "%s", object_class->nickname ); vips_argument_map( VIPS_OBJECT( operation ), vips_operation_vips_operation_print_summary_arg, buf, NULL ); vips_buf_appends( buf, " -" ); VIPS_OBJECT_CLASS( vips_operation_parent_class )-> summary( object, buf ); } static VipsOperationFlags vips_operation_real_get_flags( VipsOperation *operation ) { VipsOperationClass *class = VIPS_OPERATION_GET_CLASS( operation ); return( class->flags ); } static void vips_operation_class_init( VipsOperationClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->finalize = vips_operation_finalize; gobject_class->dispose = vips_operation_dispose; vobject_class->nickname = "operation"; vobject_class->description = _( "operations" ); vobject_class->summary = vips_operation_summary; vobject_class->dump = vips_operation_dump; class->usage = vips_operation_usage; class->get_flags = vips_operation_real_get_flags; vips_operation_signals[SIG_INVALIDATE] = g_signal_new( "invalidate", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsOperationClass, invalidate ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void vips_operation_init( VipsOperation *operation ) { } /** * vips_operation_get_flags: * @operation: operation to fetch flags from * * Returns the set of flags for this operation. * * Returns: 0 on success, or -1 on error. */ VipsOperationFlags vips_operation_get_flags( VipsOperation *operation ) { VipsOperationClass *class = VIPS_OPERATION_GET_CLASS( operation ); return( class->get_flags( operation ) ); } /** * vips_operation_class_print_usage: (skip) * @operation_class: class to print usage for * * Print a usage message for the operation to stdout. */ void vips_operation_class_print_usage( VipsOperationClass *operation_class ) { char str[2048]; VipsBuf buf = VIPS_BUF_STATIC( str ); operation_class->usage( operation_class, &buf ); printf( "%s", vips_buf_all( &buf ) ); } void vips_operation_invalidate( VipsOperation *operation ) { /* printf( "vips_operation_invalidate: %p\n", operation ); vips_object_print_summary( VIPS_OBJECT( operation ) ); */ g_signal_emit( operation, vips_operation_signals[SIG_INVALIDATE], 0 ); } /** * vips_operation_new: * @name: nickname of operation to create * * Return a new #VipsOperation with the specified nickname. Useful for * language bindings. * * You'll need to set * any arguments and build the operation before you can use it. See * vips_call() for a higher-level way to make new operations. * * Returns: (transfer full): the new operation. */ VipsOperation * vips_operation_new( const char *name ) { GType type; VipsObject *object; VipsOperation *operation; vips_check_init(); if( !(type = vips_type_find( "VipsOperation", name )) ) { vips_error( "VipsOperation", _( "class \"%s\" not found" ), name ); return( NULL ); } if( !(object = g_object_new( type, NULL )) ) { vips_error( "VipsOperation", _( "\"%s\" is not an instantiable class" ), name ); return( NULL ); } operation = VIPS_OPERATION( object ); VIPS_DEBUG_MSG( "vips_operation_new: %s (%p)\n", name, operation ); return( operation ); } /* Some systems do not have va_copy() ... this might work (it does on MSVC, * apparently). * * FIXME ... this should be in configure.in */ #ifndef va_copy #define va_copy(d,s) ((d) = (s)) #endif static int vips_operation_set_valist_required( VipsOperation *operation, va_list ap ) { VIPS_DEBUG_MSG( "vips_operation_set_valist_required:\n" ); /* Set required input arguments. Can't use vips_argument_map here * :-( because passing va_list by reference is not portable. */ VIPS_ARGUMENT_FOR_ALL( operation, pspec, argument_class, argument_instance ) { g_assert( argument_instance ); if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) { VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); #ifdef VIPS_DEBUG { char *str; str = g_strdup_value_contents( &value ); VIPS_DEBUG_MSG( "\t%s = %s\n", g_param_spec_get_name( pspec ), str ); g_free( str ); } #endif /*VIPS_DEBUG */ g_object_set_property( G_OBJECT( operation ), g_param_spec_get_name( pspec ), &value ); VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); #ifdef VIPS_DEBUG printf( "\tskipping arg %p for %s\n", arg, g_param_spec_get_name( pspec ) ); #endif /*VIPS_DEBUG */ VIPS_ARGUMENT_COLLECT_END } } VIPS_ARGUMENT_FOR_ALL_END return( 0 ); } static int vips_operation_get_valist_required( VipsOperation *operation, va_list ap ) { VIPS_DEBUG_MSG( "vips_operation_get_valist_required:\n" ); /* Extract output arguments. Can't use vips_argument_map here * :-( because passing va_list by reference is not portable. */ VIPS_ARGUMENT_FOR_ALL( operation, pspec, argument_class, argument_instance ) { if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) { VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); if( !argument_instance->assigned ) continue; #ifdef VIPS_DEBUG printf( "\twriting %s to %p\n", g_param_spec_get_name( pspec ), arg ); #endif /*VIPS_DEBUG */ /* It'd be nice to be able to test for arg being a * valid gobject pointer, since passing in a valid * pointer (and having us destroy it) is a common * error and a cause of hard-to-find leaks. * * Unfortunately, G_IS_OBJECT() can't be given an * arbitrary pointer for testing -- you're very likely * to get coredumps. */ g_object_get( G_OBJECT( operation ), g_param_spec_get_name( pspec ), arg, NULL ); /* If the pspec is an object, that will up the ref * count. We want to hand over the ref, so we have to * knock it down again. */ if( G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject *object; object = *((GObject **) arg); g_object_unref( object ); } VIPS_ARGUMENT_COLLECT_END } } VIPS_ARGUMENT_FOR_ALL_END return( 0 ); } static int vips_operation_get_valist_optional( VipsOperation *operation, va_list ap ) { char *name; VIPS_DEBUG_MSG( "vips_operation_get_valist_optional:\n" ); for( name = va_arg( ap, char * ); name; name = va_arg( ap, char * ) ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; VIPS_DEBUG_MSG( "\tname = '%s' (%p)\n", name, name ); if( vips_object_get_argument( VIPS_OBJECT( operation ), name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); /* We must collect input args as we walk the name/value list, * but we don't do anything with them. */ VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); /* Here's an output arg. */ #ifdef VIPS_DEBUG printf( "\twriting %s to %p\n", g_param_spec_get_name( pspec ), arg ); #endif /*VIPS_DEBUG */ /* If the dest pointer is NULL, skip the read. */ if( arg ) { g_object_get( G_OBJECT( operation ), g_param_spec_get_name( pspec ), arg, NULL ); /* If the pspec is an object, that will up * the ref count. We want to hand over the * ref, so we have to knock it down again. */ if( G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject *object; object = *((GObject **) arg); g_object_unref( object ); } } VIPS_ARGUMENT_COLLECT_END } return( 0 ); } /** * vips_call_required_optional: * @operation: the operation to execute * @required: %va_list of required arguments * @optional: NULL-terminated %va_list of name / value pairs * * This is the main entry point for the C and C++ varargs APIs. @operation * is executed, supplying @required and @optional arguments. * * Beware, this can change @operation to point at an old, cached one. * * Returns: 0 on success, -1 on error */ int vips_call_required_optional( VipsOperation **operation, va_list required, va_list optional ) { int result; va_list a; va_list b; /* We need to be able to walk required and optional twice. On x64 gcc, * vips_operation_set_valist_required() etc. will destructively alter * the passed-in va_list. We make a copy and walk that instead. */ va_copy( a, required ); va_copy( b, optional ); result = vips_operation_set_valist_required( *operation, a ) || vips_object_set_valist( VIPS_OBJECT( *operation ), b ); va_end( a ); va_end( b ); if( result ) return( -1 ); /* Build from cache. */ if( vips_cache_operation_buildp( operation ) ) return( -1 ); /* Walk args again, writing output. */ va_copy( a, required ); va_copy( b, optional ); result = vips_operation_get_valist_required( *operation, required ) || vips_operation_get_valist_optional( *operation, optional ); va_end( a ); va_end( b ); return( result ); } static int vips_call_by_name( const char *operation_name, const char *option_string, va_list required, va_list optional ) { VipsOperation *operation; int result; VIPS_DEBUG_MSG( "vips_call_by_name: starting for %s ...\n", operation_name ); if( !(operation = vips_operation_new( operation_name )) ) return( -1 ); /* Set str options before vargs options, so the user can't override * things we set deliberately. */ if( option_string && vips_object_set_from_string( VIPS_OBJECT( operation ), option_string ) ) { vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); return( -1 ); } result = vips_call_required_optional( &operation, required, optional ); /* Build failed: junk args and back out. */ if( result ) { vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); return( -1 ); } /* The operation we have built should now have been reffed by one of * its arguments or have finished its work. Either way, we can unref. */ g_object_unref( operation ); return( result ); } /** * vips_call: * @operation_name: name of operation to call * @...: required args, then a %NULL-terminated list of argument/value pairs * * vips_call() calls the named operation, passing in required arguments and * then setting any optional ones from the remainder of the arguments as a set * of name/value pairs. * * For example, vips_embed() takes six required arguments, @in, @out, @x, @y, * @width, @height, and has two optional arguments, @extend and @background. * You can run it with vips_call() like this: * * |[ * VipsImage *in = ... * VipsImage *out; * * if( vips_call( "embed", in, &out, 10, 10, 100, 100, * "extend", VIPS_EXTEND_COPY, * NULL ) ) * ... error * ]| * * Normally of course you'd just use the vips_embed() wrapper function and get * type-safety for the required arguments. * * See also: vips_call_split(), vips_call_options(). * * Returns: 0 on success, -1 on error */ int vips_call( const char *operation_name, ... ) { VipsOperation *operation; int result; va_list required; va_list optional; if( !(operation = vips_operation_new( operation_name )) ) return( -1 ); /* We have to break the va_list into separate required and optional * components. * * Note the start, grab the required, then copy and reuse. */ va_start( required, operation_name ); va_copy( optional, required ); VIPS_ARGUMENT_FOR_ALL( operation, pspec, argument_class, argument_instance ) { g_assert( argument_instance ); if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) { VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, optional ); VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, optional ); VIPS_ARGUMENT_COLLECT_END } } VIPS_ARGUMENT_FOR_ALL_END /* We just needed this operation for the arg loop. */ g_object_unref( operation ); result = vips_call_by_name( operation_name, NULL, required, optional ); va_end( required ); va_end( optional ); return( result ); } int vips_call_split( const char *operation_name, va_list optional, ... ) { int result; va_list required; va_start( required, optional ); result = vips_call_by_name( operation_name, NULL, required, optional ); va_end( required ); return( result ); } int vips_call_split_option_string( const char *operation_name, const char *option_string, va_list optional, ... ) { int result; va_list required; va_start( required, optional ); result = vips_call_by_name( operation_name, option_string, required, optional ); va_end( required ); return( result ); } static void * vips_call_find_pspec( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { const char *name = (const char *) a; /* One char names we assume are "-x" style abbreviations, longer names * we match the whole string. */ if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !argument_instance->assigned ) if( (strlen( name ) == 1 && g_param_spec_get_name( pspec )[0] == name[0]) || strcmp( g_param_spec_get_name( pspec ), name ) == 0 ) return( argument_instance ); return( NULL ); } /* Keep this stuff around for output args. */ typedef struct _VipsCallOptionOutput { VipsArgumentInstance *argument_instance; char *value; } VipsCallOptionOutput; static int vips_call_option_output( VipsObject *object, VipsCallOptionOutput *output ) { VipsArgumentInstance *argument_instance = output->argument_instance; GParamSpec *pspec = ((VipsArgument *) argument_instance)->pspec; int result; /* Don't look at the output arg if _build() hasn't run sucessfully, it * probably won't have been set. */ result = 0; if( object->constructed ) result = vips_object_get_argument_to_string( object, g_param_spec_get_name( pspec ), output->value ); return( result ); } static void vips_call_option_output_free( VipsObject *object, VipsCallOptionOutput *output ) { VIPS_FREE( output->value ); g_free( output ); } static gboolean vips_call_options_set( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { VipsOperation *operation = (VipsOperation *) data; const char *name; VipsArgumentInstance *argument_instance; VipsArgumentClass *argument_class; GParamSpec *pspec; VIPS_DEBUG_MSG( "vips_call_options_set: %s = %s\n", option_name, value ); /* Remove any leading "--" from the option name. */ for( name = option_name; *name == '-'; name++ ) ; if( !(argument_instance = (VipsArgumentInstance *) vips_argument_map( VIPS_OBJECT( operation ), vips_call_find_pspec, (void *) name, NULL )) ) { vips_error( VIPS_OBJECT_GET_CLASS( operation )->nickname, _( "unknown argument '%s'" ), name ); vips_error_g( error ); return( FALSE ); } argument_class = argument_instance->argument_class; pspec = ((VipsArgument *) argument_instance)->pspec; if( (argument_class->flags & VIPS_ARGUMENT_INPUT) ) { if( vips_object_set_argument_from_string( VIPS_OBJECT( operation ), g_param_spec_get_name( pspec ), value ) ) { vips_error_g( error ); return( FALSE ); } #ifdef VIPS_DEBUG { GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue gvalue = { 0, }; char *str; g_value_init( &gvalue, type ); g_object_get_property( G_OBJECT( operation ), g_param_spec_get_name( pspec ), &gvalue ); str = g_strdup_value_contents( &gvalue ); VIPS_DEBUG_MSG( "\tGValue %s = %s\n", g_param_spec_get_name( pspec ), str ); g_free( str ); g_value_unset( &gvalue ); } #endif /*VIPS_DEBUG*/ } else if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) ) { VipsCallOptionOutput *output; /* We can't do output now, we have to attach a callback to do * the processing after the operation has run. */ output = g_new( VipsCallOptionOutput, 1 ); output->argument_instance = argument_instance; output->value = g_strdup( value ); g_signal_connect( operation, "postbuild", G_CALLBACK( vips_call_option_output ), output ); g_signal_connect( operation, "close", G_CALLBACK( vips_call_option_output_free ), output ); } return( TRUE ); } static void * vips_call_options_add( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { GOptionGroup *group = (GOptionGroup *) a; if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !argument_instance->assigned ) { const char *name = g_param_spec_get_name( pspec ); gboolean needs_string = vips_object_argument_needsstring( object, name ); GOptionEntry entry[2]; entry[0].long_name = name; entry[0].description = g_param_spec_get_blurb( pspec ); /* Don't set short names for deprecated args. */ if( argument_class->flags & VIPS_ARGUMENT_DEPRECATED ) entry[0].short_name = '\0'; else entry[0].short_name = name[0]; entry[0].flags = 0; if( !needs_string ) entry[0].flags |= G_OPTION_FLAG_NO_ARG; if( argument_class->flags & VIPS_ARGUMENT_DEPRECATED ) entry[0].flags |= G_OPTION_FLAG_HIDDEN; entry[0].arg = G_OPTION_ARG_CALLBACK; entry[0].arg_data = (gpointer) vips_call_options_set; if( needs_string ) entry[0].arg_description = g_type_name( G_PARAM_SPEC_VALUE_TYPE( pspec ) ); else entry[0].arg_description = NULL; entry[1].long_name = NULL; VIPS_DEBUG_MSG( "vips_call_options_add: adding %s\n", name ); g_option_group_add_entries( group, &entry[0] ); } return( NULL ); } void vips_call_options( GOptionGroup *group, VipsOperation *operation ) { (void) vips_argument_map( VIPS_OBJECT( operation ), vips_call_options_add, group, NULL ); } /* What we track during an argv call. */ typedef struct _VipsCall { VipsOperation *operation; int argc; char **argv; int i; } VipsCall; static const char * vips_call_get_arg( VipsCall *call, int i ) { if( i < 0 || i >= call->argc ) { vips_error( VIPS_OBJECT_GET_CLASS( call->operation )->nickname, "%s", _( "too few arguments" ) ); return( NULL ); } return( call->argv[i] ); } static void * vips_call_argv_input( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsCall *call = (VipsCall *) a; /* Loop over all required construct args. */ if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !(argument_class->flags & VIPS_ARGUMENT_DEPRECATED) ) { const char *name = g_param_spec_get_name( pspec ); if( (argument_class->flags & VIPS_ARGUMENT_INPUT) ) { const char *arg; if( !(arg = vips_call_get_arg( call, call->i )) || vips_object_set_argument_from_string( object, name, arg ) ) return( pspec ); call->i += 1; } else if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) ) { if( vips_object_argument_needsstring( object, name ) ) call->i += 1; } } return( NULL ); } static void * vips_call_argv_output( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsCall *call = (VipsCall *) a; /* Loop over all required construct args. */ if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !(argument_class->flags & VIPS_ARGUMENT_DEPRECATED) ) { if( (argument_class->flags & VIPS_ARGUMENT_INPUT) ) call->i += 1; else if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) ) { const char *name = g_param_spec_get_name( pspec ); const char *arg; arg = NULL; if( vips_object_argument_needsstring( object, name ) ) { arg = vips_call_get_arg( call, call->i ); if( !arg ) return( pspec ); call->i += 1; } if( vips_object_get_argument_to_string( object, name, arg ) ) return( pspec ); } } return( NULL ); } /* Our main command-line entry point. Optional args should have been set by * the GOption parser already, see above. * * We don't create the operation, so we must not unref it. The caller must * unref on error too. The caller must also call vips_object_unref_outputs() on * all code paths. */ int vips_call_argv( VipsOperation *operation, int argc, char **argv ) { VipsCall call; g_assert( argc >= 0 ); #ifdef VIPS_DEBUG printf( "vips_call_argv: " ); vips_object_print_name( VIPS_OBJECT( operation ) ); printf( "\n" ); { int i; for( i = 0; i < argc; i++ ) printf( "%d) %s\n", i, argv[i] ); } #endif /*VIPS_DEBUG*/ call.operation = operation; call.argc = argc; call.argv = argv; call.i = 0; if( vips_argument_map( VIPS_OBJECT( operation ), vips_call_argv_input, &call, NULL ) ) return( -1 ); /* Any unused arguments? We must fail. Consider eg. "vips bandjoin a b * c". This would overwrite b with a and ignore c, potentially * disasterous. */ if( argc > call.i ) { vips_error( VIPS_OBJECT_GET_CLASS( operation )->nickname, "%s", _( "too many arguments" ) ); return( -1 ); } /* We can't use the operation cache, we need to be able to change the * operation pointer. The cache probably wouldn't help anyway. */ if( vips_object_build( VIPS_OBJECT( operation ) ) ) return( -1 ); /* We're not using the cache, so we need to print the trace line. */ if( vips__cache_trace ) { printf( "vips cache : " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); } call.i = 0; if( vips_argument_map( VIPS_OBJECT( operation ), vips_call_argv_output, &call, NULL ) ) return( -1 ); return( 0 ); } vips-8.2.2/libvips/iofuncs/sinkmemory.c0000664000175000017500000002075412530402247015115 00000000000000/* SinkMemory an image to a memory buffer, keeping top-to-bottom ordering. * * For sequential operations we need to keep requests reasonably ordered: we * can't let some tiles get very delayed. So we need to stall starting new * threads if the last thread gets too far behind. * * 17/2/12 * - from sinkdisc.c * 23/2/12 * - we could deadlock if generate failed */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include "sink.h" /* A part of the image we are writing. */ typedef struct _SinkMemoryArea { struct _SinkMemory *memory; VipsRect rect; /* Part of image this area covers */ VipsSemaphore nwrite; /* Number of threads writing to this area */ } SinkMemoryArea; /* Per-call state. */ typedef struct _SinkMemory { SinkBase sink_base; /* We are current writing tiles to area, we'll delay starting a new * area if old_area (the previous position) hasn't completed. */ SinkMemoryArea *area; SinkMemoryArea *old_area; /* A region covering the whole of the output image ... we write to * this from many workers with vips_region_prepare_to(). */ VipsRegion *region; } SinkMemory; /* Our per-thread state ... we need to also track the area that pos is * supposed to write to. */ typedef struct _SinkMemoryThreadState { VipsThreadState parent_object; SinkMemoryArea *area; } SinkMemoryThreadState; typedef struct _SinkMemoryThreadStateClass { VipsThreadStateClass parent_class; } SinkMemoryThreadStateClass; G_DEFINE_TYPE( SinkMemoryThreadState, sink_memory_thread_state, VIPS_TYPE_THREAD_STATE ); static void sink_memory_thread_state_class_init( SinkMemoryThreadStateClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); object_class->nickname = "sinkmemorythreadstate"; object_class->description = _( "per-thread state for sinkmemory" ); } static void sink_memory_thread_state_init( SinkMemoryThreadState *state ) { } static VipsThreadState * sink_memory_thread_state_new( VipsImage *image, void *a ) { return( VIPS_THREAD_STATE( vips_object_new( sink_memory_thread_state_get_type(), vips_thread_state_set, image, a ) ) ); } static void sink_memory_area_free( SinkMemoryArea *area ) { vips_semaphore_destroy( &area->nwrite ); vips_free( area ); } static SinkMemoryArea * sink_memory_area_new( SinkMemory *memory ) { SinkMemoryArea *area; if( !(area = VIPS_NEW( NULL, SinkMemoryArea )) ) return( NULL ); area->memory = memory; vips_semaphore_init( &area->nwrite, 0, "nwrite" ); return( area ); } /* Move an area to a position. */ static void sink_memory_area_position( SinkMemoryArea *area, int top, int height ) { SinkMemory *memory = area->memory; VipsRect all, rect; all.left = 0; all.top = 0; all.width = memory->sink_base.im->Xsize; all.height = memory->sink_base.im->Ysize; rect.left = 0; rect.top = top; rect.width = memory->sink_base.im->Xsize; rect.height = height; vips_rect_intersectrect( &all, &rect, &area->rect ); } /* Our VipsThreadpoolAllocate function ... move the thread to the next tile * that needs doing. If we fill the current area, we block until the previous * area is finished, then swap areas. * If all tiles are done, we return FALSE to end * iteration. */ static gboolean sink_memory_area_allocate_fn( VipsThreadState *state, void *a, gboolean *stop ) { SinkMemoryThreadState *wstate = (SinkMemoryThreadState *) state; SinkMemory *memory = (SinkMemory *) a; SinkBase *sink_base = (SinkBase *) memory; VipsRect image; VipsRect tile; VIPS_DEBUG_MSG( "sink_memory_area_allocate_fn: %p\n", g_thread_self() ); /* Is the state x/y OK? New line or maybe new buffer or maybe even * all done. */ if( sink_base->x >= memory->area->rect.width ) { sink_base->x = 0; sink_base->y += sink_base->tile_height; if( sink_base->y >= VIPS_RECT_BOTTOM( &memory->area->rect ) ) { /* Block until the previous area is done. */ if( memory->area->rect.top > 0 ) vips_semaphore_downn( &memory->old_area->nwrite, 0 ); /* End of image? */ if( sink_base->y >= sink_base->im->Ysize ) { *stop = TRUE; return( 0 ); } /* Swap buffers. */ VIPS_SWAP( SinkMemoryArea *, memory->area, memory->old_area ); /* Position buf at the new y. */ sink_memory_area_position( memory->area, sink_base->y, sink_base->nlines ); } } /* x, y and buf are good: save params for thread. */ image.left = 0; image.top = 0; image.width = sink_base->im->Xsize; image.height = sink_base->im->Ysize; tile.left = sink_base->x; tile.top = sink_base->y; tile.width = sink_base->tile_width; tile.height = sink_base->tile_height; vips_rect_intersectrect( &image, &tile, &state->pos ); /* The thread needs to know which area it's writing to. */ wstate->area = memory->area; VIPS_DEBUG_MSG( " %p allocated %d x %d:\n", g_thread_self(), state->pos.left, state->pos.top ); /* Add to the number of writers on the area. */ vips_semaphore_upn( &memory->area->nwrite, -1 ); /* Move state on. */ sink_base->x += sink_base->tile_width; /* Add the number of pixels we've just allocated to progress. */ sink_base->processed += state->pos.width * state->pos.height; return( 0 ); } /* Our VipsThreadpoolWork function ... generate a tile! */ static int sink_memory_area_work_fn( VipsThreadState *state, void *a ) { SinkMemory *memory = (SinkMemory *) a; SinkMemoryThreadState *wstate = (SinkMemoryThreadState *) state; SinkMemoryArea *area = wstate->area; int result; VIPS_DEBUG_MSG( "sink_memory_area_work_fn: %p %d x %d\n", g_thread_self(), state->pos.left, state->pos.top ); result = vips_region_prepare_to( state->reg, memory->region, &state->pos, state->pos.left, state->pos.top ); VIPS_DEBUG_MSG( "sink_memory_area_work_fn: %p result = %d\n", g_thread_self(), result ); /* Tell the allocator we're done. */ vips_semaphore_upn( &area->nwrite, 1 ); return( result ); } static void sink_memory_free( SinkMemory *memory ) { VIPS_FREEF( sink_memory_area_free, memory->area ); VIPS_FREEF( sink_memory_area_free, memory->old_area ); VIPS_UNREF( memory->region ); } static int sink_memory_init( SinkMemory *memory, VipsImage *image ) { VipsRect all; vips_sink_base_init( &memory->sink_base, image ); memory->area = NULL; memory->old_area = NULL; all.left = 0; all.top = 0; all.width = image->Xsize; all.height = image->Ysize; if( !(memory->region = vips_region_new( image )) || vips_region_image( memory->region, &all ) || !(memory->area = sink_memory_area_new( memory )) || !(memory->old_area = sink_memory_area_new( memory )) ) { sink_memory_free( memory ); return( -1 ); } return( 0 ); } /** * vips_sink_memory: * @im: generate this image to memory * * Loops over @im, generating it to a memory buffer attached to @im. It is * used by vips to implement writing to a memory buffer. * * See also: vips_sink(), vips_get_tile_size(), vips_image_new_memory(). * * Returns: 0 on success, or -1 on error. */ int vips_sink_memory( VipsImage *image ) { SinkMemory memory; int result; if( sink_memory_init( &memory, image ) ) return( -1 ); vips_image_preeval( image ); result = 0; sink_memory_area_position( memory.area, 0, memory.sink_base.nlines ); if( vips_threadpool_run( image, sink_memory_thread_state_new, sink_memory_area_allocate_fn, sink_memory_area_work_fn, vips_sink_base_progress, &memory ) ) result = -1; vips_image_posteval( image ); sink_memory_free( &memory ); VIPS_DEBUG_MSG( "vips_sink_memory: done\n" ); return( result ); } vips-8.2.2/libvips/iofuncs/generate.c0000664000175000017500000004506612627657061014532 00000000000000/* Manage pipelines of partial images. * * J.Cupitt, 17/4/93. * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 6/7/93 JC * - im_setupout() conventions clarified - see autorewind in * im_iocheck(). * 20/7/93 JC * - eval callbacks added * 7/9/93 JC * - demand hint mechanism added * 25/10/93 * - asynchronous output mechanisms removed, as no observable speed-up * 9/5/94 * - new thread stuff added, with a define to turn it off * 15/8/94 * - start & stop functions can now be NULL for no-op * 7/10/94 JC * - evalend callback system added * 23/12/94 JC * - IM_ARRAY uses added * 22/2/95 JC * - im_fill_copy() added * - im_region_region() uses modified * 24/4/95 JC & KM * - im_fill_lines() bug removed * 30/8/96 JC * - revised and simplified ... some code shared with im_iterate() * - new im_generate_region() added * 2/3/98 JC * - IM_ANY added * 20/7/99 JC * - tile geometry made into ints for easy tuning * 30/7/99 RP JC * - threads reorganised for POSIX * 29/9/99 JC * - threadgroup stuff added * 15/4/04 * - better how-many-pixels-calculated * 27/11/06 * - merge background write stuff * 7/11/07 * - new start/end eval callbacks * 7/10/09 * - gtkdoc comments * 16/4/10 * - remove threadgroup stuff * 24/3/11 * - move demand_hint stuff in here * - move to vips_ namespace * 7/7/12 * - lock around link make/break so we can process an image from many * threads */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include /** * SECTION: generate * @short_description: calculate pixels and pixel buffers * @stability: Stable * @see_also: VipsImage, * VipsRegion * @include: vips/vips.h * * These functions let you attach generate functions to images * and ask for regions of images to be calculated. */ /* Max number of images we can handle. */ #define MAX_IMAGES (1000) /* Make an upstream/downstream link. upstream is one of downstream's inputs. */ static void vips__link_make( VipsImage *image_up, VipsImage *image_down ) { g_assert( image_up ); g_assert( image_down ); image_up->downstream = g_slist_prepend( image_up->downstream, image_down ); image_down->upstream = g_slist_prepend( image_down->upstream, image_up ); /* Propogate the progress indicator. */ if( image_up->progress_signal && !image_down->progress_signal ) image_down->progress_signal = image_up->progress_signal; } static void * vips__link_break( VipsImage *image_up, VipsImage *image_down ) { g_assert( image_up ); g_assert( image_down ); g_assert( g_slist_find( image_up->downstream, image_down ) ); g_assert( g_slist_find( image_down->upstream, image_up ) ); image_up->downstream = g_slist_remove( image_up->downstream, image_down ); image_down->upstream = g_slist_remove( image_down->upstream, image_up ); /* Unlink the progress chain. */ if( image_down->progress_signal && image_down->progress_signal == image_up->progress_signal ) image_down->progress_signal = NULL; return( NULL ); } static void * vips__link_break_rev( VipsImage *image_down, VipsImage *image_up ) { return( vips__link_break( image_up, image_down ) ); } /* A VipsImage is going ... break all links. */ void vips__link_break_all( VipsImage *image ) { g_mutex_lock( vips__global_lock ); vips_slist_map2( image->upstream, (VipsSListMap2Fn) vips__link_break, image, NULL ); vips_slist_map2( image->downstream, (VipsSListMap2Fn) vips__link_break_rev, image, NULL ); g_assert( !image->upstream ); g_assert( !image->downstream ); g_mutex_unlock( vips__global_lock ); } typedef struct _LinkMap { gboolean upstream; int serial; VipsSListMap2Fn fn; void *a; void *b; } LinkMap; static void * vips__link_mapp( VipsImage *image, LinkMap *map ) { void *res; /* Loop? */ if( image->serial == map->serial ) return( NULL ); image->serial = map->serial; if( (res = map->fn( image, map->a, map->b )) ) return( res ); return( vips_slist_map2( map->upstream ? image->upstream : image->downstream, (VipsSListMap2Fn) vips__link_mapp, map, NULL ) ); } static void * vips__link_map_cb( VipsImage *image, GSList **images ) { *images = g_slist_prepend( *images, image ); return( NULL ); } /* Apply a function to an image and all upstream or downstream images, * direct and indirect. */ void * vips__link_map( VipsImage *image, gboolean upstream, VipsSListMap2Fn fn, void *a, void *b ) { static int serial = 0; LinkMap map; GSList *images; GSList *p; void *result; images = NULL; /* The function might do anything, including removing images * or invalidating other images, so we can't trigger them from within * the image loop. Instead we collect a list of images, ref them, * run the functions, and unref. */ map.upstream = upstream; map.fn = (VipsSListMap2Fn) vips__link_map_cb; map.a = (void *) &images; map.b = NULL; /* We will be walking the tree of images and updating the ->serial * member. There will be intense confusion if two threads try to do * this at the same time. */ g_mutex_lock( vips__global_lock ); serial += 1; map.serial = serial; vips__link_mapp( image, &map ); for( p = images; p; p = p->next ) g_object_ref( p->data ); g_mutex_unlock( vips__global_lock ); result = vips_slist_map2( images, fn, a, b ); for( p = images; p; p = p->next ) g_object_unref( p->data ); g_slist_free( images ); return( result ); } /* We have to have this as a separate entry point so we can support the old * vips7 API. */ void vips__demand_hint_array( VipsImage *image, VipsDemandStyle hint, VipsImage **in ) { int i, len, nany; VipsDemandStyle set_hint; /* How many input images are there? And how many are ANY? */ for( i = 0, len = 0, nany = 0; in[i]; i++, len++ ) if( in[i]->dhint == VIPS_DEMAND_STYLE_ANY ) nany++; set_hint = hint; if( len == 0 ) /* No input images? Just set the requested hint. We don't * force ANY, since the operation might be something like * tiled read of an EXR image, where we certainly don't want * ANY. */ ; else if( nany == len ) /* Special case: if all the inputs are ANY, then output can * be ANY regardless of what this function wants. */ set_hint = VIPS_DEMAND_STYLE_ANY; else /* Find the most restrictive of all the hints available to us. */ for( i = 0; i < len; i++ ) set_hint = (VipsDemandStyle) VIPS_MIN( (int) set_hint, (int) in[i]->dhint ); image->dhint = set_hint; #ifdef DEBUG printf( "vips_image_pipeline_array: set dhint for \"%s\" to %s\n", image->filename, vips_enum_nick( VIPS_TYPE_DEMAND_STYLE, image->dhint ) ); printf( "\toperation requested %s\n", vips_enum_nick( VIPS_TYPE_DEMAND_STYLE, hint ) ); printf( "\tinputs were:\n" ); printf( "\t" ); for( i = 0; in[i]; i++ ) printf( "%s ", vips_enum_nick( VIPS_TYPE_DEMAND_STYLE, in[i]->dhint ) ); printf( "\n" ); #endif /*DEBUG*/ /* im depends on all these ims. */ g_mutex_lock( vips__global_lock ); for( i = 0; i < len; i++ ) vips__link_make( in[i], image ); g_mutex_unlock( vips__global_lock ); /* Set a flag on the image to say we remembered to call this thing. * vips_image_generate() and friends check this. */ image->hint_set = TRUE; } /** * vips_image_pipeline_array: * @image: output image * @hint: demand hint for @image * @in: %NULL-terminated array of input images * * Add an image to a pipeline. @image depends on all of the images in @in, * @image prefers to supply pixels according to @hint. * * Operations can set demand hints, that is, hints to the VIPS IO system about * the type of region geometry they work best with. For example, * operations which transform coordinates will usually work best with * %VIPS_DEMAND_STYLE_SMALLTILE, operations which work on local windows of * pixels will like %VIPS_DEMAND_STYLE_FATSTRIP. * * Header fields in @image are set from the fields in @in, with lower-numbered * images in @in taking priority. * For example, if @in[0] and @in[1] both have an item * called "icc-profile", it's the profile attached to @in[0] that will end up * on @image. * Image history is completely copied from all @in. @image will have the history * of all the input images. * The array of input images can be empty, meaning @image is at the start of a * pipeline. * * VIPS uses the list of input images to build the tree of operations it needs * for the cache invalidation system. * * See also: vips_image_pipelinev(), vips_image_generate(). * * Returns: 0 on success, -1 on error. */ int vips_image_pipeline_array( VipsImage *image, VipsDemandStyle hint, VipsImage **in ) { vips__demand_hint_array( image, hint, in ); if( in[0] && vips__image_copy_fields_array( image, in ) ) return( -1 ); return( 0 ); } /** * vips_image_pipelinev: * @image: output image of pipeline * @hint: hint for this image * @...: %NULL-terminated list of input images * * Build an array and call vips_image_pipeline_array(). * * See also: vips_image_generate(). */ int vips_image_pipelinev( VipsImage *image, VipsDemandStyle hint, ... ) { va_list ap; int i; VipsImage *ar[MAX_IMAGES]; va_start( ap, hint ); for( i = 0; i < MAX_IMAGES && (ar[i] = va_arg( ap, VipsImage * )); i++ ) ; va_end( ap ); if( i == MAX_IMAGES ) { vips_warn( "vips_image_pipeline", "%s", _( "too many images" ) ); /* Make sure we have a sentinel there. */ ar[i - 1] = NULL; } return( vips_image_pipeline_array( image, hint, ar ) ); } /** * vips_start_one: * @out: image to generate * @a: user data * @b: user data * * Start function for one image in. Input image is @a. * * See also: vips_image_generate(). */ void * vips_start_one( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; return( vips_region_new( in ) ); } /** * vips_stop_one: * @seq: sequence value * @a: user data * @b: user data * * Stop function for one image in. Input image is @a. * * See also: vips_image_generate(). */ int vips_stop_one( void *seq, void *a, void *b ) { VipsRegion *reg = (VipsRegion *) seq; g_object_unref( reg ); return( 0 ); } /** * vips_stop_many: * @seq: sequence value * @a: user data * @b: user data * * Stop function for many images in. @a is a pointer to * a %NULL-terminated array of input images. * * See also: vips_image_generate(). */ int vips_stop_many( void *seq, void *a, void *b ) { VipsRegion **ar = (VipsRegion **) seq; if( ar ) { int i; for( i = 0; ar[i]; i++ ) g_object_unref( ar[i] ); vips_free( (char *) ar ); } return( 0 ); } /** * vips_start_many: * @out: image to generate * @a: user data * @b: user data * * Start function for many images in. @a is a pointer to * a %NULL-terminated array of input images. * * See also: vips_image_generate(), vips_allocate_input_array() */ void * vips_start_many( VipsImage *out, void *a, void *b ) { VipsImage **in = (VipsImage **) a; int i, n; VipsRegion **ar; /* How many images? */ for( n = 0; in[n]; n++ ) ; /* Alocate space for region array. */ if( !(ar = VIPS_ARRAY( NULL, n + 1, VipsRegion * )) ) return( NULL ); /* Create a set of regions. */ for( i = 0; i < n; i++ ) if( !(ar[i] = vips_region_new( in[i] )) ) { vips_stop_many( ar, NULL, NULL ); return( NULL ); } ar[n] = NULL; return( ar ); } /** * vips_allocate_input_array: * @out: free array when this image closes * @...: %NULL-terminated list of input images * * Convenience function --- make a %NULL-terminated array of input images. * Use with vips_start_many(). * * See also: vips_image_generate(), vips_start_many(). * * Returns: %NULL-terminated array of images. Do not free the result. */ VipsImage ** vips_allocate_input_array( VipsImage *out, ... ) { va_list ap; VipsImage **ar; int i, n; /* Count input images. */ va_start( ap, out ); for( n = 0; va_arg( ap, VipsImage * ); n++ ) ; va_end( ap ); /* Allocate array. */ if( !(ar = VIPS_ARRAY( out, n + 1, VipsImage * )) ) return( NULL ); /* Fill array. */ va_start( ap, out ); for( i = 0; i < n; i++ ) ar[i] = va_arg( ap, VipsImage * ); va_end( ap ); ar[n] = NULL; return( ar ); } /** * VipsStartFn: * @out: image being calculated * @a: user data * @b: user data * * Start a new processing sequence for this generate function. This allocates * per-thread state, such as an input region. * * See also: vips_start_one(), vips_start_many(). * * Returns: a new sequence value */ /** * VipsGenerateFn: * @out: #VipsRegion to fill * @seq: sequence value * @a: user data * @b: user data * @stop: set this to stop processing * * Fill @out->valid with pixels. @seq contains per-thread state, such as the * input regions. Set @stop to %TRUE to stop processing. * * See also: vips_image_generate(), vips_stop_many(). * * Returns: 0 on success, -1 on error. */ /** * VipsStopFn: * @seq: sequence value * @a: user data * @b: user data * * Stop a processing sequence. This frees * per-thread state, such as an input region. * * See also: vips_stop_one(), vips_stop_many(). * * Returns: 0 on success, -1 on error. */ /* A write function for VIPS images. Just write() the pixel data. */ static int write_vips( VipsRegion *region, VipsRect *area, void *a, void *b ) { size_t nwritten, count; void *buf; count = region->bpl * area->height; buf = VIPS_REGION_ADDR( region, 0, area->top ); do { nwritten = write( region->im->fd, buf, count ); if( nwritten == (size_t) -1 ) return( errno ); buf = (void *) ((char *) buf + nwritten); count -= nwritten; } while( count > 0 ); return( 0 ); } /** * vips_image_generate: * @image: generate this image * @start_fn: start sequences with this function * @generate_fn: generate pixels with this function * @stop_fn: stop sequences with this function * @a: user data * @b: user data * * Generates an image. The action depends on the image type. * * For images created with vips_image_new(), vips_image_generate() just * attaches the start/generate/stop callbacks and returns. * * For images created with vips_image_new_memory(), memory is allocated for * the whole image and it is entirely generated using vips_sink_memory(). * * For images created with vips_image_new_temp_file() and friends, memory for * a few scanlines is allocated and * vips_sink_disc() used to generate the image in small chunks. As each * chunk is generated, it is written to disc. * * See also: vips_sink(), vips_image_new(), vips_region_prepare(). * * Returns: 0 on success, or -1 on error. */ int vips_image_generate( VipsImage *image, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ) { int res; VIPS_DEBUG_MSG( "vips_image_generate: %p\n", image ); g_assert( generate_fn ); g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); if( !image->hint_set ) { vips_error( "vips_image_generate", "%s", _( "demand hint not set" ) ); return( -1 ); } /* We don't use this, but make sure it's set in case any old binaries * are expecting it. */ image->Bbits = vips_format_sizeof( image->BandFmt ) << 3; /* Look at output type to decide our action. */ switch( image->dtype ) { case VIPS_IMAGE_PARTIAL: /* Output to partial image. Just attach functions and return. */ if( image->generate_fn || image->start_fn || image->stop_fn ) { vips_error( "VipsImage", "%s", _( "generate() called twice" ) ); return( -1 ); } image->start_fn = start_fn; image->generate_fn = generate_fn; image->stop_fn = stop_fn; image->client1 = a; image->client2 = b; VIPS_DEBUG_MSG( "vips_image_generate: " "attaching partial callbacks\n" ); if( vips_image_written( image ) ) return( -1 ); break; case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENOUT: /* Eval now .. sanity check. */ if( image->generate_fn || image->start_fn || image->stop_fn ) { vips_error( "VipsImage", "%s", _( "generate() called twice" ) ); return( -1 ); } /* Attach callbacks. */ image->start_fn = start_fn; image->generate_fn = generate_fn; image->stop_fn = stop_fn; image->client1 = a; image->client2 = b; if( vips_image_write_prepare( image ) ) return( -1 ); if( image->dtype == VIPS_IMAGE_OPENOUT ) res = vips_sink_disc( image, (VipsRegionWrite) write_vips, NULL ); else res = vips_sink_memory( image ); /* Error? */ if( res ) return( -1 ); /* Must come before we rewind. */ if( vips_image_written( image ) ) return( -1 ); /* We've written to image ... rewind it ready for reading. */ if( vips_image_pio_input( image ) ) return( -1 ); break; default: /* Not a known output style. */ vips_error( "VipsImage", _( "unable to output to a %s image" ), vips_enum_nick( VIPS_TYPE_IMAGE_TYPE, image->dtype ) ); return( -1 ); } return( 0 ); } vips-8.2.2/libvips/iofuncs/base64.h0000664000175000017500000000174612530402247014011 00000000000000/* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* base64 encode/decode functions. */ char *im__b64_encode( const unsigned char *data, size_t data_length ); unsigned char *im__b64_decode( const char *buffer, size_t *data_length ); vips-8.2.2/libvips/iofuncs/window.c0000664000175000017500000002043212530402247014220 00000000000000/* Manage sets of mmap buffers on an image. * * 30/10/06 * - from region.c * 19/3/09 * - block mmaps of nodata images */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_TOTAL #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #ifdef HAVE_SYS_MMAN_H #include #endif #include #include #include #include #ifdef OS_WIN32 #include #endif /*OS_WIN32*/ /* Sanity checking ... write to this during read tests to make sure we don't * get optimised out. */ int vips__read_test; /* Add this many lines above and below the mmap() window. */ int vips__window_margin_pixels = VIPS__WINDOW_MARGIN_PIXELS; /* Always map at least this many bytes. There's no point making tiny windows * on small files. */ int vips__window_margin_bytes = VIPS__WINDOW_MARGIN_BYTES; /* Track global mmap usage. */ #ifdef DEBUG_TOTAL static int total_mmap_usage = 0; static int max_mmap_usage = 0; #endif /*DEBUG_TOTAL*/ static int vips_window_unmap( VipsWindow *window ) { /* unmap the old window */ if( window->baseaddr ) { if( vips__munmap( window->baseaddr, window->length ) ) return( -1 ); #ifdef DEBUG_TOTAL g_mutex_lock( vips__global_lock ); total_mmap_usage -= window->length; assert( total_mmap_usage >= 0 ); g_mutex_unlock( vips__global_lock ); #endif /*DEBUG_TOTAL*/ window->data = NULL; window->baseaddr = NULL; window->length = 0; } return( 0 ); } static int vips_window_free( VipsWindow *window ) { assert( window->ref_count == 0 ); #ifdef DEBUG printf( "** vips_window_free: window top = %d, height = %d (%p)\n", window->top, window->height, window ); #endif /*DEBUG*/ if( vips_window_unmap( window ) ) return( -1 ); window->im = NULL; vips_free( window ); return( 0 ); } int vips_window_unref( VipsWindow *window ) { IMAGE *im = window->im; g_mutex_lock( im->sslock ); #ifdef DEBUG printf( "vips_window_unref: window top = %d, height = %d, count = %d\n", window->top, window->height, window->ref_count ); #endif /*DEBUG*/ assert( window->ref_count > 0 ); window->ref_count -= 1; if( window->ref_count == 0 ) { assert( g_slist_find( im->windows, window ) ); im->windows = g_slist_remove( im->windows, window ); #ifdef DEBUG printf( "vips_window_unref: %d windows left\n", g_slist_length( im->windows ) ); #endif /*DEBUG*/ if( vips_window_free( window ) ) { g_mutex_unlock( im->sslock ); return( -1 ); } } g_mutex_unlock( im->sslock ); return( 0 ); } #ifdef DEBUG_TOTAL static void trace_mmap_usage( void ) { g_mutex_lock( vips__global_lock ); { static int last_total = 0; int total = total_mmap_usage / (1024 * 1024); int max = max_mmap_usage / (1024 * 1024); if( total != last_total ) { printf( "vips_window_set: current mmap " "usage of ~%dMB (high water mark %dMB)\n", total, max ); last_total = total; } } g_mutex_unlock( vips__global_lock ); } #endif /*DEBUG_TOTAL*/ static int vips_getpagesize( void ) { static int pagesize = 0; if( !pagesize ) { #ifdef OS_WIN32 SYSTEM_INFO si; GetSystemInfo( &si ); pagesize = si.dwAllocationGranularity; #else /*OS_WIN32*/ pagesize = getpagesize(); #endif /*OS_WIN32*/ #ifdef DEBUG_TOTAL printf( "vips_getpagesize: 0x%x\n", pagesize ); #endif /*DEBUG_TOTAL*/ } return( pagesize ); } /* Map a window into a file. */ static int vips_window_set( VipsWindow *window, int top, int height ) { int pagesize = vips_getpagesize(); void *baseaddr; gint64 start, end, pagestart; size_t length, pagelength; /* Calculate start and length for our window. */ start = window->im->sizeof_header + VIPS_IMAGE_SIZEOF_LINE( window->im ) * top; length = VIPS_IMAGE_SIZEOF_LINE( window->im ) * height; pagestart = start - start % pagesize; end = start + length; pagelength = end - pagestart; /* Make sure we have enough file. */ if( end > window->im->file_length ) { vips_error( "vips_window_set", _( "unable to read data for \"%s\", %s" ), window->im->filename, _( "file has been truncated" ) ); return( -1 ); } if( !(baseaddr = vips__mmap( window->im->fd, 0, pagelength, pagestart )) ) return( -1 ); window->baseaddr = baseaddr; window->length = pagelength; window->data = (VipsPel *) baseaddr + (start - pagestart); window->top = top; window->height = height; /* Sanity check ... make sure the data pointer is readable. */ vips__read_test &= window->data[0]; #ifdef DEBUG_TOTAL g_mutex_lock( vips__global_lock ); total_mmap_usage += window->length; if( total_mmap_usage > max_mmap_usage ) max_mmap_usage = total_mmap_usage; g_mutex_unlock( vips__global_lock ); trace_mmap_usage(); #endif /*DEBUG_TOTAL*/ return( 0 ); } /* Make a new window. */ static VipsWindow * vips_window_new( IMAGE *im, int top, int height ) { VipsWindow *window; if( !(window = VIPS_NEW( NULL, VipsWindow )) ) return( NULL ); window->ref_count = 0; window->im = im; window->top = 0; window->height = 0; window->data = NULL; window->baseaddr = NULL; window->length = 0; if( vips_window_set( window, top, height ) ) { vips_window_free( window ); return( NULL ); } im->windows = g_slist_prepend( im->windows, window ); window->ref_count += 1; #ifdef DEBUG printf( "** vips_window_new: window top = %d, height = %d (%p)\n", window->top, window->height, window ); #endif /*DEBUG*/ return( window ); } /* A request for an area of pixels. */ typedef struct { int top; int height; } request_t; static void * vips_window_fits( VipsWindow *window, request_t *req ) { if( window->top <= req->top && window->top + window->height >= req->top + req->height ) return( window ); return( NULL ); } /* Find an existing window that fits within top/height and return a ref. */ static VipsWindow * vips_window_find( IMAGE *im, int top, int height ) { request_t req; VipsWindow *window; req.top = top; req.height = height; window = vips_slist_map2( im->windows, (VipsSListMap2Fn) vips_window_fits, &req, NULL ); if( window ) { window->ref_count += 1; #ifdef DEBUG printf( "vips_window_find: ref window top = %d, height = %d, " "count = %d\n", top, height, window->ref_count ); #endif /*DEBUG*/ } return( window ); } /* Return a ref to a window that encloses top/height. */ VipsWindow * vips_window_ref( IMAGE *im, int top, int height ) { VipsWindow *window; g_mutex_lock( im->sslock ); if( !(window = vips_window_find( im, top, height )) ) { /* No existing window ... make a new one. Ask for a larger * window than we strictly need. There's no point making tiny * windows. */ int margin = VIPS_MIN( vips__window_margin_pixels, vips__window_margin_bytes / VIPS_IMAGE_SIZEOF_LINE( im ) ); top -= margin; height += margin * 2; top = VIPS_CLIP( 0, top, im->Ysize - 1 ); height = VIPS_CLIP( 0, height, im->Ysize - top ); if( !(window = vips_window_new( im, top, height )) ) { g_mutex_unlock( im->sslock ); return( NULL ); } } g_mutex_unlock( im->sslock ); return( window ); } void vips_window_print( VipsWindow *window ) { printf( "VipsWindow: %p ref_count = %d, ", window, window->ref_count ); printf( "im = %p, ", window->im ); printf( "top = %d, ", window->top ); printf( "height = %d, ", window->height ); printf( "data = %p, ", window->data ); printf( "baseaddr = %p, ", window->baseaddr ); printf( "length = %zd\n", window->length ); } vips-8.2.2/libvips/iofuncs/system.c0000664000175000017500000002266212530402247014244 00000000000000/* vips_system(): run a command on an image * * 7/3/00 JC * - hacked it in * 21/10/02 JC * - use mktemp() if mkstemp() is not available * 10/3/03 JC * - out can be NULL * 23/12/04 * - use g_mkstemp() * 8/9/09 * - add .v suffix (thanks Roland) * - use vipsbuf * - rewrite to make it simpler * 2/2/10 * - gtkdoc * 4/6/13 * - redo as a class * - input and output images are now optional * 3/5/14 * - switch to g_spawn_command_line_sync() from popen() ... helps stop * stray command-windows on Windows */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include typedef struct _VipsSystem { VipsOperation parent_instance; VipsArrayImage *in; VipsImage *out; char *cmd_format; char *in_format; char *out_format; char *log; /* Array of names we wrote the input images to. */ char **in_name; char *out_name; } VipsSystem; typedef VipsOperationClass VipsSystemClass; G_DEFINE_TYPE( VipsSystem, vips_system, VIPS_TYPE_OPERATION ); static void vips_system_dispose( GObject *gobject ) { VipsSystem *system = (VipsSystem *) gobject; if( system->in_name ) { int i; for( i = 0; i < VIPS_AREA( system->in )->n; i++ ) { g_unlink( system->in_name[i] ); VIPS_FREE( system->in_name[i] ); } } VIPS_FREE( system->out_name ); G_OBJECT_CLASS( vips_system_parent_class )->dispose( gobject ); } static int vips_system_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsSystem *system = (VipsSystem *) object; int i; char cmd[VIPS_PATH_MAX]; char *p; char *std_output; char *std_error; int result; GError *error = NULL; if( VIPS_OBJECT_CLASS( vips_system_parent_class )->build( object ) ) return( -1 ); /* Write the input images to files. We must always make copies of the * files, even if this image is a disc file already, in case the * command needs a different format. */ if( system->in ) { char *in_format = system->in_format ? system->in_format : "%s.tif"; int n; VipsImage **in = vips_array_image_get( system->in, &n ); if( !(system->in_name = VIPS_ARRAY( object, n, char * )) ) return( -1 ); memset( system->in_name, 0, n * sizeof( char * ) ); for( i = 0; i < n; i++ ) { if( !(system->in_name[i] = vips__temp_name( in_format )) ) return( -1 ); if( vips_image_write_to_file( in[i], system->in_name[i], NULL ) ) return( -1 ); } } /* Make the output filename. */ if( system->out_format && !(system->out_name = vips__temp_name( system->out_format )) ) return( -1 ); vips_strncpy( cmd, system->cmd_format, VIPS_PATH_MAX ); if( system->in ) for( i = 0; i < VIPS_AREA( system->in )->n; i++ ) if( vips__substitute( cmd, VIPS_PATH_MAX, system->in_name[i] ) ) { vips_error( class->nickname, "%s", _( "unable to substitute " "input filename" ) ); return( -1 ); } if( system->out_name && vips__substitute( cmd, VIPS_PATH_MAX, system->out_name ) ) { vips_error( class->nickname, "%s", _( "unable to substitute output filename" ) ); return( -1 ); } /* Swap all "%%" in the string for a single "%". We need this for * compatibility with older printf-based vips_system()s which * needed a double %%. */ for( p = cmd; *p; p++ ) if( p[0] == '%' && p[1] == '%' ) memmove( p, p + 1, strlen( p ) ); if( !g_spawn_command_line_sync( cmd, &std_output, &std_error, &result, &error ) || result ) { if( error ) { vips_error( class->nickname, "%s", error->message ); g_error_free( error ); } if( std_error ) { vips__chomp( std_error ); if( strcmp( std_error, "" ) != 0 ) vips_error( class->nickname, "error output: %s", std_error ); VIPS_FREE( std_error ); } if( std_output ) { vips__chomp( std_output ); if( strcmp( std_output, "" ) != 0 ) vips_error( class->nickname, "output: %s", std_output ); VIPS_FREE( std_output ); } vips_error_system( result, class->nickname, _( "command \"%s\" failed" ), cmd ); return( -1 ); } if( std_error ) { vips__chomp( std_error ); if( strcmp( std_error, "" ) != 0 ) vips_warn( class->nickname, _( "stderr output: %s" ), std_error ); } if( std_output ) { vips__chomp( std_output ); g_object_set( system, "log", std_output, NULL ); } VIPS_FREE( std_output ); VIPS_FREE( std_error ); if( system->out_name ) { VipsImage *out; if( !(out = vips_image_new_from_file( system->out_name, NULL )) ) return( -1 ); vips_image_set_delete_on_close( out, TRUE ); g_object_set( system, "out", out, NULL ); } return( 0 ); } static void vips_system_class_init( VipsSystemClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->dispose = vips_system_dispose; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "system"; vobject_class->description = _( "run an external command" ); vobject_class->build = vips_system_build; /* Commands can have side-effects, so don't cache them. */ operation_class->flags = VIPS_OPERATION_NOCACHE; VIPS_ARG_BOXED( class, "in", 0, _( "Input" ), _( "Array of input images" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSystem, in ), VIPS_TYPE_ARRAY_IMAGE ); VIPS_ARG_IMAGE( class, "out", 1, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsSystem, out ) ); VIPS_ARG_STRING( class, "cmd_format", 2, _( "Command" ), _( "Command to run" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsSystem, cmd_format ), NULL ); VIPS_ARG_STRING( class, "in_format", 2, _( "Input format" ), _( "Format for input filename" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSystem, in_format ), NULL ); VIPS_ARG_STRING( class, "out_format", 2, _( "Output format" ), _( "Format for output filename" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsSystem, out_format ), NULL ); VIPS_ARG_STRING( class, "log", 2, _( "Log" ), _( "Command log" ), VIPS_ARGUMENT_OPTIONAL_OUTPUT, G_STRUCT_OFFSET( VipsSystem, log ), NULL ); } static void vips_system_init( VipsSystem *system ) { } /** * vips_system: * @cmd_format: command to run * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @in: array of input images * @out: output image * @in_format: write input files like this * @out_format: write output filename like this * @log: stdout of command is returned here * * vips_system() runs a command, optionally passing a set of images in and * optionally getting an image back. The command's stdout is returned in @log. * * First, if @in is set, the array of images are written to files. See * vips_image_new_temp_file() to see how temporary files are created. * If @in_format is * something like %s.png, the file will be written in PNG format. By * default, @in_format is %s.tif. * * If @out_format is set, an output filename is formed in the same way. * * The command string to run is made by substituting the first set of %s * in @cmd_format for the names of the input files, if @in is set, and then * the next %s for the output filename, if @out_format is set. * You can put a number between the % and the s to change the order * in which the substitution occurs. * * The command is executed with popen() and the output captured in @log. * * After the command finishes, if @out_format is set, the output image is * opened and returned in @out. * Closing @out image will automatically delete the output file. * * Finally the input images are deleted. * * For example, this call will run the ImageMagick convert program on an * image, using JPEG files to pass images into and out of the convert command. * * |[ * VipsArrayImage *in; * VipsImage *out; * char *log; * * if (vips_system ("convert %s -swirl 45 %s", * "in", in, * "out", &out, * "in_format", "%s.jpg", * "out_format", "%s.jpg", * "log", &log, * NULL)) * error ... * ]| * * Returns: 0 on success, -1 on failure. */ int vips_system( const char *cmd_format, ... ) { va_list ap; int result; va_start( ap, cmd_format ); result = vips_call_split( "system", ap, cmd_format ); va_end( ap ); return( result ); } vips-8.2.2/libvips/iofuncs/header.c0000664000175000017500000011567612651123373014164 00000000000000/* get, set and copy image header fields * * 9/7/02 JC * - first version * 7/6/05 * - now reads meta fields too * - cleaned up * - added im_header_exists(), im_header_map() * 1/8/05 * - now im_header_get_type() and im_header_get() rather than * im_header_exists() * 4/1/07 * - removed Hist from standard fields ... now a separate function * 29/8/09 * - im_header_get_type() renamed as im_header_get_typeof() to prevent * confusion with GObject-style type definers * 1/10/09 * - rename as header.c * - gtkdoc comments * 22/3/11 * - rename fields for vips8 * - move to vips_ prefix * 16/7/15 * - auto wrap GString as RefString */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /** * SECTION: header * @short_description: get, set and walk image headers * @stability: Stable * @see_also: type * @include: vips/vips.h * * These functions let you get at image header data (including metadata) in a * uniform way. * * Use vips_image_get_typeof() to test for the * existance and #GType * of a header field. * * You can attach arbitrary metadata to images. Metadata is copied as images * are processed, so all images which used this image as input, directly or * indirectly, will have this same bit of metadata attached to them. Copying * is implemented with reference-counted pointers, so it is efficient, even for * large items of data. This does however mean that metadata items need to be * immutable. Metadata is handy for things like ICC profiles or EXIF data. * * Various convenience functions (eg. vips_image_set_int()) let you easily * attach * simple types like * numbers, strings and memory blocks to images. Use vips_image_map() to loop * over an image's fields, including all metadata. * * Items of metadata are identified by strings. Some strings are reserved, for * example the ICC profile for an image is known by convention as * "icc-profile-data". * * If you save an image in VIPS format, all metadata (with a restriction, see * below) is automatically saved for you in a block of XML at the end of the * file. When you load a VIPS image, the metadata is restored. You can use the * `vipsedit` command-line tool to extract or replace this block of XML. * * VIPS metadata is based on %GValue. See the docs for that system if you want * to do fancy stuff such as defining a new metadata type. * VIPS defines a new %GValue called `vips_save_string`, a variety of string, * see vips_value_set_save_string(). * If your %GValue can be transformed to `vips_save_string`, it will be * saved and loaded to and from VIPS files for you. * * VIPS provides a couple of base classes which implement * reference-counted areas of memory. If you base your metadata on one of * these types, it can be copied between images efficiently. */ /* Name, offset pair. */ typedef struct _HeaderField { const char *field; glong offset; } HeaderField; /* Built in fields and struct offsets. */ static HeaderField int_field[] = { { "width", G_STRUCT_OFFSET( VipsImage, Xsize ) }, { "height", G_STRUCT_OFFSET( VipsImage, Ysize ) }, { "bands", G_STRUCT_OFFSET( VipsImage, Bands ) }, { "format", G_STRUCT_OFFSET( VipsImage, BandFmt ) }, { "coding", G_STRUCT_OFFSET( VipsImage, Coding ) }, { "interpretation", G_STRUCT_OFFSET( VipsImage, Type ) }, { "xoffset", G_STRUCT_OFFSET( VipsImage, Xoffset ) }, { "yoffset", G_STRUCT_OFFSET( VipsImage, Yoffset ) } }; static HeaderField double_field[] = { { "xres", G_STRUCT_OFFSET( VipsImage, Xres ) }, { "yres", G_STRUCT_OFFSET( VipsImage, Yres ) } }; static HeaderField string_field[] = { { "filename", G_STRUCT_OFFSET( VipsImage, filename ) } }; /* Old names we keep around for back-compat. We never loop over these with * map, but we do check them when we look up fields by name. */ static HeaderField old_int_field[] = { { "Xsize", G_STRUCT_OFFSET( VipsImage, Xsize ) }, { "Ysize", G_STRUCT_OFFSET( VipsImage, Ysize ) }, { "Bands", G_STRUCT_OFFSET( VipsImage, Bands ) }, { "Bbits", G_STRUCT_OFFSET( VipsImage, Bbits ) }, { "BandFmt", G_STRUCT_OFFSET( VipsImage, BandFmt ) }, { "Coding", G_STRUCT_OFFSET( VipsImage, Coding ) }, { "Type", G_STRUCT_OFFSET( VipsImage, Type ) }, { "Xoffset", G_STRUCT_OFFSET( VipsImage, Xoffset ) }, { "Yoffset", G_STRUCT_OFFSET( VipsImage, Yoffset ) } }; static HeaderField old_double_field[] = { { "Xres", G_STRUCT_OFFSET( VipsImage, Xres ) }, { "Yres", G_STRUCT_OFFSET( VipsImage, Yres ) } }; /* This is used by (eg.) VIPS_IMAGE_SIZEOF_ELEMENT() to calculate object * size via vips_format_sizeof(). * * It needs to be guint64 and not size_t since we use this as the basis for * image address calcs and they have to be 64-bit, even on 32-bit machines. * * Can't be static, we need this to be visible for vips7 compat. */ const guint64 vips__image_sizeof_bandformat[] = { sizeof( unsigned char ), /* VIPS_FORMAT_UCHAR */ sizeof( signed char ), /* VIPS_FORMAT_CHAR */ sizeof( unsigned short ), /* VIPS_FORMAT_USHORT */ sizeof( unsigned short ), /* VIPS_FORMAT_SHORT */ sizeof( unsigned int ), /* VIPS_FORMAT_UINT */ sizeof( unsigned int ), /* VIPS_FORMAT_INT */ sizeof( float ), /* VIPS_FORMAT_FLOAT */ 2 * sizeof( float ), /* VIPS_FORMAT_COMPLEX */ sizeof( double ), /* VIPS_FORMAT_DOUBLE */ 2 * sizeof( double ) /* VIPS_FORMAT_DPCOMPLEX */ }; /** * vips_format_sizeof: * @format: format type * * Returns: number of bytes for a band format. */ guint64 vips_format_sizeof( VipsBandFormat format ) { g_assert( format >= 0 && format < VIPS_FORMAT_LAST ); return( vips__image_sizeof_bandformat[format] ); } #ifdef DEBUG /* Check that this meta is on the hash table. */ static void * meta_sanity_on_hash( VipsMeta *meta, VipsImage *im ) { VipsMeta *found; if( meta->im != im ) printf( "*** field \"%s\" has incorrect im\n", meta->field ); if( !(found = g_hash_table_lookup( im->meta, meta->field )) ) printf( "*** field \"%s\" is on traverse but not in hash\n", meta->field ); if( found != meta ) printf( "*** meta \"%s\" on traverse and hash do not match\n", meta->field ); return( NULL ); } static void meta_sanity_on_traverse( const char *field, VipsMeta *meta, VipsImage *im ) { if( meta->field != field ) printf( "*** field \"%s\" has incorrect field\n", meta->field ); if( meta->im != im ) printf( "*** field \"%s\" has incorrect im\n", meta->field ); if( !g_slist_find( im->meta_traverse, meta ) ) printf( "*** field \"%s\" is in hash but not on traverse\n", meta->field ); } static void meta_sanity( const VipsImage *im ) { if( im->meta ) g_hash_table_foreach( im->meta, (GHFunc) meta_sanity_on_traverse, (void *) im ); vips_slist_map2( im->meta_traverse, (VipsSListMap2Fn) meta_sanity_on_hash, (void *) im, NULL ); } #endif /*DEBUG*/ static void meta_free( VipsMeta *meta ) { #ifdef DEBUG { char *str_value; str_value = g_strdup_value_contents( &meta->value ); printf( "meta_free: field %s, value = %s\n", meta->field, str_value ); g_free( str_value ); } #endif /*DEBUG*/ if( meta->im ) meta->im->meta_traverse = g_slist_remove( meta->im->meta_traverse, meta ); g_value_unset( &meta->value ); g_free( meta->field ); g_free( meta ); } static VipsMeta * meta_new( VipsImage *image, const char *field, GValue *value ) { VipsMeta *meta; meta = g_new( VipsMeta, 1 ); meta->im = image; meta->field = NULL; memset( &meta->value, 0, sizeof( GValue ) ); meta->field = g_strdup( field ); /* Special case: we don't want to have G_STRING on meta. They will be * copied down pipelines, plus some of our API (like * vips_image_get_string()) assumes that the GValue is a refstring and * that read-only pointers can be handed out. * * Turn G_TYPE_STRING into VIPS_TYPE_REF_STRING. */ if( G_VALUE_TYPE( value ) == G_TYPE_STRING ) g_value_init( &meta->value, VIPS_TYPE_REF_STRING ); else g_value_init( &meta->value, G_VALUE_TYPE( value ) ); /* We don't do any conversions that can fail. */ (void) g_value_transform( value, &meta->value ); image->meta_traverse = g_slist_append( image->meta_traverse, meta ); g_hash_table_replace( image->meta, meta->field, meta ); #ifdef DEBUG { char *str_value; str_value = g_strdup_value_contents( value ); printf( "meta_new: field %s, value = %s\n", field, str_value ); g_free( str_value ); } #endif /*DEBUG*/ return( meta ); } /* Destroy all the meta on an image. */ void vips__meta_destroy( VipsImage *image ) { VIPS_FREEF( g_hash_table_destroy, image->meta ); g_assert( !image->meta_traverse ); } static void meta_init( VipsImage *im ) { if( !im->meta ) { g_assert( !im->meta_traverse ); im->meta = g_hash_table_new_full( g_str_hash, g_str_equal, NULL, (GDestroyNotify) meta_free ); } } /** * vips_image_get_width: * @image: image to get from * * Returns: the number of pixels across the image. */ int vips_image_get_width( const VipsImage *image ) { return( image->Xsize ); } /** * vips_image_get_height: * @image: image to get from * * Returns: the number of pixels down the image. */ int vips_image_get_height( const VipsImage *image ) { return( image->Ysize ); } /** * vips_image_get_bands: * @image: image to get from * * Returns: the number of bands (channels) in the image. */ int vips_image_get_bands( const VipsImage *image ) { return( image->Bands ); } /** * vips_image_get_format: * @image: image to get from * * Returns: the format of each band element. */ VipsBandFormat vips_image_get_format( const VipsImage *image ) { return( image->BandFmt ); } /** * vips_image_get_coding: * @image: image to get from * * Returns: the image coding */ VipsCoding vips_image_get_coding( const VipsImage *image ) { return( image->Coding ); } /** * vips_image_get_interpretation: * @image: image to get from * * Return the #VipsInterpretation set in the image header. * Use vips_image_guess_interpretation() if you want a sanity-checked value. * * Returns: the #VipsInterpretation from the image header. */ VipsInterpretation vips_image_get_interpretation( const VipsImage *image ) { return( image->Type ); } /* Try to pick a sane value for interpretation, assuming Type has been set * incorrectly. */ static VipsInterpretation vips_image_default_interpretation( const VipsImage *image ) { switch( image->Coding ) { case VIPS_CODING_LABQ: return( VIPS_INTERPRETATION_LABQ ); case VIPS_CODING_RAD: return( VIPS_INTERPRETATION_RGB ); default: break; } if( image->Bands == 1 ) return( VIPS_INTERPRETATION_B_W ); else return( VIPS_INTERPRETATION_MULTIBAND ); } /** * vips_image_guess_interpretation: * @image: image to guess for * * Return the #VipsInterpretation for an image, guessing a sane value if * the set value looks crazy. * * Returns: a sensible #VipsInterpretation for the image. */ VipsInterpretation vips_image_guess_interpretation( const VipsImage *image ) { gboolean sane; sane = TRUE; /* Coding overrides interpretation. */ switch( image->Coding ) { case VIPS_CODING_LABQ: if( image->Type != VIPS_INTERPRETATION_LABQ ) sane = FALSE; break; case VIPS_CODING_RAD: if( image->Type != VIPS_INTERPRETATION_RGB ) sane = FALSE; break; default: break; } switch( image->Type ) { case VIPS_INTERPRETATION_MULTIBAND: if( image->Bands == 1 ) sane = FALSE; break; case VIPS_INTERPRETATION_B_W: /* Don't test bands, we allow bands after the first to be * unused extras, like alpha. */ break; case VIPS_INTERPRETATION_HISTOGRAM: if( image->Xsize > 1 && image->Ysize > 1 ) sane = FALSE; break; case VIPS_INTERPRETATION_FOURIER: if( !vips_band_format_iscomplex( image->BandFmt ) ) sane = FALSE; break; case VIPS_INTERPRETATION_XYZ: case VIPS_INTERPRETATION_LAB: case VIPS_INTERPRETATION_RGB: case VIPS_INTERPRETATION_CMC: case VIPS_INTERPRETATION_LCH: case VIPS_INTERPRETATION_sRGB: case VIPS_INTERPRETATION_HSV: case VIPS_INTERPRETATION_scRGB: case VIPS_INTERPRETATION_YXY: if( image->Bands < 3 ) sane = FALSE; break; case VIPS_INTERPRETATION_CMYK: if( image->Bands < 4 ) sane = FALSE; break; case VIPS_INTERPRETATION_LABQ: if( image->Coding != VIPS_CODING_LABQ ) sane = FALSE; break; case VIPS_INTERPRETATION_LABS: if( image->BandFmt != VIPS_FORMAT_SHORT ) sane = FALSE; break; case VIPS_INTERPRETATION_RGB16: if( image->BandFmt == VIPS_FORMAT_CHAR || image->BandFmt == VIPS_FORMAT_UCHAR || image->Bands < 3 ) sane = FALSE; break; case VIPS_INTERPRETATION_GREY16: if( image->BandFmt == VIPS_FORMAT_CHAR || image->BandFmt == VIPS_FORMAT_UCHAR ) sane = FALSE; break; case VIPS_INTERPRETATION_MATRIX: if( image->Bands != 1 ) sane = FALSE; break; default: g_assert_not_reached(); } if( sane ) return( vips_image_get_interpretation( image ) ); else return( vips_image_default_interpretation( image ) ); } /** * vips_image_get_xres: * @image: image to get from * * Returns: the horizontal image resolution in pixels per millimeter. */ double vips_image_get_xres( const VipsImage *image ) { return( image->Xres ); } /** * vips_image_get_yres: * @image: image to get from * * Returns: the vertical image resolution in pixels per millimeter. */ double vips_image_get_yres( const VipsImage *image ) { return( image->Yres ); } /** * vips_image_get_xoffset: * @image: image to get from * * Returns: the horizontal position of the image origin, in pixels. */ int vips_image_get_xoffset( const VipsImage *image ) { return( image->Xoffset ); } /** * vips_image_get_yoffset: * @image: image to get from * * Returns: the vertical position of the image origin, in pixels. */ int vips_image_get_yoffset( const VipsImage *image ) { return( image->Yoffset ); } /** * vips_image_get_filename: * @image: image to get from * * Returns: the name of the file the image was loaded from. */ const char * vips_image_get_filename( const VipsImage *image ) { return( image->filename ); } /** * vips_image_get_mode: * @image: image to get from * * Image modes are things like `"t"`, meaning a memory buffer, and `"p"` * meaning a delayed computation. * * Returns: the image mode. */ const char * vips_image_get_mode( const VipsImage *image ) { return( image->mode ); } /** * vips_image_get_scale: * @image: image to get from * * Matrix images can have an optional `scale` field for use by integer * convolution. * * Returns: the scale. */ double vips_image_get_scale( const VipsImage *image ) { double scale; scale = 1.0; if( vips_image_get_typeof( image, "scale" ) ) vips_image_get_double( image, "scale", &scale ); return( scale ); } /** * vips_image_get_offset: * @image: image to get from * * Matrix images can have an optional `offset` field for use by integer * convolution. * * Returns: the offset. */ double vips_image_get_offset( const VipsImage *image ) { double offset; offset = 0.0; if( vips_image_get_typeof( image, "offset" ) ) vips_image_get_double( image, "offset", &offset ); return( offset ); } /** * vips_image_get_data: * @image: image to get data for * * Return a pointer to the image's pixel data, if possible. This can involve * allocating large amounts of memory and performing a long computation. Image * pixels are laid out in band-packed rows. * * Since this function modifies @image, it is not threadsafe. Only call it on * images which you are sure have not been shared with another thread. * * See also: vips_image_wio_input(), vips_image_copy_memory(). * * Returns: (transfer none): a pointer to pixel data, if possible. */ const void * vips_image_get_data( VipsImage *image ) { if( vips_image_wio_input( image ) ) return( NULL ); return( image->data ); } /** * vips_image_init_fields: * @image: image to init * @xsize: image width * @ysize: image height * @bands: image bands * @format: band format * @coding: image coding * @interpretation: image type * @xres: horizontal resolution, pixels per millimetre * @yres: vertical resolution, pixels per millimetre * * A convenience function to set the header fields after creating an image. * Normally you copy the fields from your input images with * vips_image_pipelinev() and then make * any adjustments you need, but if you are creating an image from scratch, * for example vips_black() or vips_jpegload(), you do need to set all the * fields yourself. * * See also: vips_image_pipelinev(). */ void vips_image_init_fields( VipsImage *image, int xsize, int ysize, int bands, VipsBandFormat format, VipsCoding coding, VipsInterpretation interpretation, double xres, double yres ) { g_object_set( image, "width", xsize, "height", ysize, "bands", bands, "format", format, NULL ); image->Coding = coding; image->Type = interpretation; image->Xres = xres; image->Yres = yres; } static void * meta_cp_field( VipsMeta *meta, VipsImage *dst ) { #ifdef DEBUG { char *str_value; str_value = g_strdup_value_contents( &meta->value ); printf( "vips__meta_cp: copying field %s, value = %s\n", meta->field, str_value ); g_free( str_value ); } #endif /*DEBUG*/ (void) meta_new( dst, meta->field, &meta->value ); #ifdef DEBUG meta_sanity( dst ); #endif /*DEBUG*/ return( NULL ); } /* Copy meta on to dst. */ static int meta_cp( VipsImage *dst, const VipsImage *src ) { if( src->meta ) { /* Loop, copying fields. */ meta_init( dst ); vips_slist_map2( src->meta_traverse, (VipsSListMap2Fn) meta_cp_field, dst, NULL ); } return( 0 ); } /* We have to have this as a separate entry point so we can support the old * vips7 API. */ int vips__image_copy_fields_array( VipsImage *out, VipsImage *in[] ) { int i; int ni; g_assert( in[0] ); /* Copy magic too, handy for knowing the original image's byte order. */ out->magic = in[0]->magic; out->Xsize = in[0]->Xsize; out->Ysize = in[0]->Ysize; out->Bands = in[0]->Bands; out->Bbits = in[0]->Bbits; out->BandFmt = in[0]->BandFmt; out->Type = in[0]->Type; out->Coding = in[0]->Coding; out->Xres = in[0]->Xres; out->Yres = in[0]->Yres; out->Xoffset = in[0]->Xoffset; out->Yoffset = in[0]->Yoffset; /* Count number of images. */ for( ni = 0; in[ni]; ni++ ) ; /* Need to copy last-to-first so that in0 meta will override any * earlier meta. */ vips__meta_destroy( out ); for( i = ni - 1; i >= 0; i-- ) if( meta_cp( out, in[i] ) ) return( -1 ); /* Merge hists first to last. */ for( i = 0; in[i]; i++ ) out->history_list = vips__gslist_gvalue_merge( out->history_list, in[i]->history_list ); return( 0 ); } /** * vips_image_set: * @image: image to set the metadata on * @field: the name to give the metadata * @value: the %GValue to copy into the image * * Set a piece of metadata on @image. Any old metadata with that name is * destroyed. The %GValue is copied into the image, so you need to unset the * value when you're done with it. * * For example, to set an integer on an image (though you would use the * convenience function vips_image_set_int() in practice), you would do: * * |[ * GValue value = { 0 }; * * g_value_init (&value, G_TYPE_INT); * g_value_set_int (&value, 42); * vips_image_set (image, field, &value); * g_value_unset (&value); * ]| * * See also: vips_image_get(). */ void vips_image_set( VipsImage *image, const char *field, GValue *value ) { g_assert( field ); g_assert( value ); meta_init( image ); (void) meta_new( image, field, value ); #ifdef DEBUG meta_sanity( image ); #endif /*DEBUG*/ } /** * vips_image_get: * @image: image to get the field from from * @field: the name to give the metadata * @value_copy: (transfer full) (out caller-allocates): the %GValue is copied into this * * Fill @value_copy with a copy of the header field. @value_copy must be zeroed * but uninitialised. * * This will return -1 and add a message to the error buffer if the field * does not exist. Use vips_image_get_typeof() to test for the * existence of a field first if you are not certain it will be there. * * For example, to read a double from an image (though of course you would use * vips_image_get_double() in practice): * * |[ * GValue value = { 0 }; * double d; * * if (vips_image_get (image, field, &value)) * return -1; * * if (G_VALUE_TYPE (&value) != G_TYPE_DOUBLE) { * vips_error( "mydomain", * _("field \"%s\" is of type %s, not double"), * field, * g_type_name (G_VALUE_TYPE (&value))); * g_value_unset (&value); * return -1; * } * * d = g_value_get_double (&value); * g_value_unset (&value); * ]| * * See also: vips_image_get_typeof(), vips_image_get_double(). * * Returns: (skip): 0 on success, -1 otherwise. */ int vips_image_get( const VipsImage *image, const char *field, GValue *value_copy ) { int i; VipsMeta *meta; g_assert( field ); g_assert( value_copy ); for( i = 0; i < VIPS_NUMBER( int_field ); i++ ) if( strcmp( field, int_field[i].field ) == 0 ) { g_value_init( value_copy, G_TYPE_INT ); g_value_set_int( value_copy, G_STRUCT_MEMBER( int, image, int_field[i].offset ) ); return( 0 ); } for( i = 0; i < VIPS_NUMBER( old_int_field ); i++ ) if( strcmp( field, old_int_field[i].field ) == 0 ) { g_value_init( value_copy, G_TYPE_INT ); g_value_set_int( value_copy, G_STRUCT_MEMBER( int, image, old_int_field[i].offset ) ); return( 0 ); } for( i = 0; i < VIPS_NUMBER( double_field ); i++ ) if( strcmp( field, double_field[i].field ) == 0 ) { g_value_init( value_copy, G_TYPE_DOUBLE ); g_value_set_double( value_copy, G_STRUCT_MEMBER( double, image, double_field[i].offset ) ); return( 0 ); } for( i = 0; i < VIPS_NUMBER( old_double_field ); i++ ) if( strcmp( field, old_double_field[i].field ) == 0 ) { g_value_init( value_copy, G_TYPE_DOUBLE ); g_value_set_double( value_copy, G_STRUCT_MEMBER( double, image, old_double_field[i].offset ) ); return( 0 ); } for( i = 0; i < VIPS_NUMBER( string_field ); i++ ) if( strcmp( field, string_field[i].field ) == 0 ) { g_value_init( value_copy, G_TYPE_STRING ); g_value_set_static_string( value_copy, G_STRUCT_MEMBER( char *, image, string_field[i].offset ) ); return( 0 ); } if( image->meta && (meta = g_hash_table_lookup( image->meta, field )) ) { g_value_init( value_copy, G_VALUE_TYPE( &meta->value ) ); g_value_copy( &meta->value, value_copy ); return( 0 ); } vips_error( "vips_image_get", _( "field \"%s\" not found" ), field ); return( -1 ); } /** * vips_image_get_typeof: * @image: image to test * @field: the name to search for * * Read the %GType for a header field. Returns zero if there is no * field of that name. * * See also: vips_image_get(). * * Returns: the %GType of the field, or zero if there is no * field of that name. */ GType vips_image_get_typeof( const VipsImage *image, const char *field ) { int i; VipsMeta *meta; g_assert( field ); for( i = 0; i < VIPS_NUMBER( int_field ); i++ ) if( strcmp( field, int_field[i].field ) == 0 ) return( G_TYPE_INT ); for( i = 0; i < VIPS_NUMBER( old_int_field ); i++ ) if( strcmp( field, old_int_field[i].field ) == 0 ) return( G_TYPE_INT ); for( i = 0; i < VIPS_NUMBER( double_field ); i++ ) if( strcmp( field, double_field[i].field ) == 0 ) return( G_TYPE_DOUBLE ); for( i = 0; i < VIPS_NUMBER( old_double_field ); i++ ) if( strcmp( field, old_double_field[i].field ) == 0 ) return( G_TYPE_DOUBLE ); for( i = 0; i < VIPS_NUMBER( string_field ); i++ ) if( strcmp( field, string_field[i].field ) == 0 ) return( G_TYPE_STRING ); if( image->meta && (meta = g_hash_table_lookup( image->meta, field )) ) return( G_VALUE_TYPE( &meta->value ) ); VIPS_DEBUG_MSG( "vips_image_get_typeof: unknown field %s\n", field ); return( 0 ); } /** * vips_image_remove: * @image: image to test * @field: the name to search for * * Find and remove an item of metadata. Return %FALSE if no metadata of that * name was found. * * See also: vips_image_set(), vips_image_get_typeof(). * * Returns: %TRUE if an item of metadata of that name was found and removed */ gboolean vips_image_remove( VipsImage *image, const char *field ) { if( image->meta && g_hash_table_remove( image->meta, field ) ) return( TRUE ); return( FALSE ); } static void * vips_image_map_fn( VipsMeta *meta, VipsImageMapFn fn, void *a ) { return( fn( meta->im, meta->field, &meta->value, a ) ); } /** * vips_image_map: * @image: image to map over * @fn: (scope call): function to call for each header field * @a: user data for function * * This function calls @fn for every header field, including every item of * metadata. * * Like all _map functions, the user function should return %NULL to continue * iteration, or a non-%NULL pointer to indicate early termination. * * See also: vips_image_get_typeof(), vips_image_get(). * * Returns: (transfer none): %NULL on success, the failing pointer otherwise. */ void * vips_image_map( VipsImage *image, VipsImageMapFn fn, void *a ) { int i; GValue value = { 0 }; void *result; for( i = 0; i < VIPS_NUMBER( int_field ); i++ ) { vips_image_get( image, int_field[i].field, &value ); result = fn( image, int_field[i].field, &value, a ); g_value_unset( &value ); if( result ) return( result ); } for( i = 0; i < VIPS_NUMBER( double_field ); i++ ) { vips_image_get( image, double_field[i].field, &value ); result = fn( image, double_field[i].field, &value, a ); g_value_unset( &value ); if( result ) return( result ); } for( i = 0; i < VIPS_NUMBER( string_field ); i++ ) { vips_image_get( image, string_field[i].field, &value ); result = fn( image, string_field[i].field, &value, a ); g_value_unset( &value ); if( result ) return( result ); } if( image->meta_traverse && (result = vips_slist_map2( image->meta_traverse, (VipsSListMap2Fn) vips_image_map_fn, fn, a )) ) return( result ); return( NULL ); } /** * vips_image_set_area: * @image: image to attach the metadata to * @field: metadata name * @free_fn: (scope async): free function for @data * @data: pointer to area of memory * * Attaches @data as a metadata item on @image under the name @field. When * VIPS no longer needs the metadata, it will be freed with @free_fn. * * See also: vips_image_get_double(), vips_image_set() */ void vips_image_set_area( VipsImage *image, const char *field, VipsCallbackFn free_fn, void *data ) { GValue value = { 0 }; vips_value_set_area( &value, free_fn, data ); vips_image_set( image, field, &value ); g_value_unset( &value ); } static int meta_get_value( const VipsImage *image, const char *field, GType type, GValue *value_copy ) { GValue value = { 0 }; if( vips_image_get( image, field, &value ) ) return( -1 ); g_value_init( value_copy, type ); if( !g_value_transform( &value, value_copy ) ) { vips_error( "VipsImage", _( "field \"%s\" is of type %s, not %s" ), field, g_type_name( G_VALUE_TYPE( value_copy ) ), g_type_name( type ) ); g_value_unset( &value ); return( -1 ); } g_value_unset( &value ); return( 0 ); } /** * vips_image_get_area: * @image: image to get the metadata from * @field: metadata name * @data: return metadata value * * Gets @data from @image under the name @field. A convenience * function over vips_image_get(). Use vips_image_get_typeof() to test for * the existance of a piece of metadata. * * See also: vips_image_set_area(), vips_image_get(), * vips_image_get_typeof() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_area( const VipsImage *image, const char *field, void **data ) { GValue value_copy = { 0 }; if( !meta_get_value( image, field, VIPS_TYPE_AREA, &value_copy ) ) { *data = vips_value_get_area( &value_copy, NULL ); g_value_unset( &value_copy ); return( 0 ); } return( -1 ); } /** * vips_image_set_blob: * @image: image to attach the metadata to * @field: metadata name * @free_fn: (scope async): free function for @data * @data: pointer to area of memory * @length: length of memory area * * Attaches @blob as a metadata item on @image under the name @field. A * convenience * function over vips_image_set() using an vips_blob. * * See also: vips_image_get_blob(), vips_image_set(). */ void vips_image_set_blob( VipsImage *image, const char *field, VipsCallbackFn free_fn, void *data, size_t length ) { GValue value = { 0 }; g_value_init( &value, VIPS_TYPE_BLOB ); vips_value_set_blob( &value, free_fn, data, length ); vips_image_set( image, field, &value ); g_value_unset( &value ); } /** * vips_image_get_blob: * @image: image to get the metadata from * @field: metadata name * @data: pointer to area of memory * @length: return the blob length here, optionally * * Gets @blob from @image under the name @field, optionally return its length in * @length. A convenience * function over vips_image_get(). Use vips_image_get_typeof() to test for the * existance * of a piece of metadata. * * See also: vips_image_get(), vips_image_get_typeof(), vips_blob_get(), * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_blob( const VipsImage *image, const char *field, void **data, size_t *length ) { GValue value_copy = { 0 }; if( !meta_get_value( image, field, VIPS_TYPE_BLOB, &value_copy ) ) { *data = vips_value_get_blob( &value_copy, length ); g_value_unset( &value_copy ); return( 0 ); } return( -1 ); } /** * vips_image_get_int: * @image: image to get the header field from * @field: field name * @out: return field value * * Gets @out from @im under the name @field. This function searches for * int-valued fields. * * See also: vips_image_get(), vips_image_get_typeof() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_int( const VipsImage *image, const char *field, int *out ) { int i; GValue value_copy = { 0 }; for( i = 0; i < VIPS_NUMBER( int_field ); i++ ) if( strcmp( field, int_field[i].field ) == 0 ) { *out = G_STRUCT_MEMBER( int, image, int_field[i].offset ); return( 0 ); } for( i = 0; i < VIPS_NUMBER( old_int_field ); i++ ) if( strcmp( field, old_int_field[i].field ) == 0 ) { *out = G_STRUCT_MEMBER( int, image, old_int_field[i].offset ); return( 0 ); } if( !meta_get_value( image, field, G_TYPE_INT, &value_copy ) ) { *out = g_value_get_int( &value_copy ); g_value_unset( &value_copy ); return( 0 ); } return( -1 ); } /** * vips_image_set_int: * @image: image to attach the metadata to * @field: metadata name * @i: metadata value * * Attaches @i as a metadata item on @image under the name @field. A * convenience * function over vips_image_set(). * * See also: vips_image_get_int(), vips_image_set() */ void vips_image_set_int( VipsImage *image, const char *field, int i ) { GValue value = { 0 }; g_value_init( &value, G_TYPE_INT ); g_value_set_int( &value, i ); vips_image_set( image, field, &value ); g_value_unset( &value ); } /** * vips_image_get_double: * @image: image to get the header field from * @field: field name * @out: return field value * * Gets @out from @im under the name @field. * This function searches for * double-valued fields. * * See also: vips_image_get(), vips_image_get_typeof() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_double( const VipsImage *image, const char *field, double *out ) { int i; GValue value_copy = { 0 }; for( i = 0; i < VIPS_NUMBER( double_field ); i++ ) if( strcmp( field, double_field[i].field ) == 0 ) { *out = G_STRUCT_MEMBER( double, image, double_field[i].offset ); return( 0 ); } for( i = 0; i < VIPS_NUMBER( old_double_field ); i++ ) if( strcmp( field, old_double_field[i].field ) == 0 ) { *out = G_STRUCT_MEMBER( double, image, old_double_field[i].offset ); return( 0 ); } if( !meta_get_value( image, field, G_TYPE_DOUBLE, &value_copy ) ) { *out = g_value_get_double( &value_copy ); g_value_unset( &value_copy ); return( 0 ); } return( -1 ); } /** * vips_image_set_double: * @image: image to attach the metadata to * @field: metadata name * @d: metadata value * * Attaches @d as a metadata item on @image under the name @field. A * convenience * function over vips_image_set(). * * See also: vips_image_get_double(), vips_image_set() */ void vips_image_set_double( VipsImage *image, const char *field, double d ) { GValue value = { 0 }; g_value_init( &value, G_TYPE_DOUBLE ); g_value_set_double( &value, d ); vips_image_set( image, field, &value ); g_value_unset( &value ); } /** * vips_image_get_string: * @image: image to get the header field from * @field: field name * @out: return field value * * Gets @out from @im under the name @field. * This function searches for string-valued fields. * * Do not free @out. * * See also: vips_image_get(), vips_image_get_typeof() * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_string( const VipsImage *image, const char *field, const char **out ) { int i; GValue value_copy = { 0 }; VipsArea *area; for( i = 0; i < VIPS_NUMBER( string_field ); i++ ) if( strcmp( field, string_field[i].field ) == 0 ) { *out = G_STRUCT_MEMBER( char *, image, string_field[i].offset ); return( 0 ); } if( !meta_get_value( image, field, VIPS_TYPE_REF_STRING, &value_copy ) ) { area = g_value_get_boxed( &value_copy ); *out = area->data; g_value_unset( &value_copy ); return( 0 ); } return( -1 ); } /** * vips_image_set_string: * @image: image to attach the metadata to * @field: metadata name * @str: metadata value * * Attaches @str as a metadata item on @image under the name @field. * A convenience * function over vips_image_set() using an vips_ref_string. * * See also: vips_image_get_double(), vips_image_set(), vips_ref_string */ void vips_image_set_string( VipsImage *image, const char *field, const char *str ) { GValue value = { 0 }; g_value_init( &value, VIPS_TYPE_REF_STRING ); vips_value_set_ref_string( &value, str ); vips_image_set( image, field, &value ); g_value_unset( &value ); } /** * vips_image_get_as_string: * @image: image to get the header field from * @field: field name * @out: (transfer full): return field value as string * * Gets @out from @im under the name @field. * This function will read any field, returning it as a printable string. * You need to free the string with g_free() when you are done with it. * * See also: vips_image_get(), vips_image_get_typeof(). * * Returns: 0 on success, -1 otherwise. */ int vips_image_get_as_string( const VipsImage *image, const char *field, char **out ) { GValue value = { 0 }; GType type; if( vips_image_get( image, field, &value ) ) return( -1 ); /* Display the save form, if there is one. This way we display * something useful for ICC profiles, xml fields, etc. */ type = G_VALUE_TYPE( &value ); if( g_value_type_transformable( type, VIPS_TYPE_SAVE_STRING ) ) { GValue save_value = { 0 }; g_value_init( &save_value, VIPS_TYPE_SAVE_STRING ); if( !g_value_transform( &value, &save_value ) ) return( -1 ); *out = g_strdup( vips_value_get_save_string( &save_value ) ); g_value_unset( &save_value ); } else *out = g_strdup_value_contents( &value ); g_value_unset( &value ); return( 0 ); } /** * vips_image_history_printf: * @image: add history line to this image * @format: printf() format string * @...: arguments to format string * * Add a line to the image history. The @format and arguments are expanded, the * date and time is appended prefixed with a hash character, and the whole * string is appended to the image history and terminated with a newline. * * For example: * * |[ * vips_image_history_printf (image, "vips invert %s %s", * in->filename, out->filename); * ]| * * Might add the string * * |[ * "vips invert /home/john/fred.v /home/john/jim.v # Fri Apr 3 23:30:35 2009\n" * ]| * * VIPS operations don't add history lines for you because a single action at * the application level might involve many VIPS operations. History must be * recorded by the application. * * Returns: 0 on success, -1 on error. */ int vips_image_history_printf( VipsImage *image, const char *fmt, ... ) { va_list args; char str[VIPS_PATH_MAX]; VipsBuf buf = VIPS_BUF_STATIC( str ); time_t timebuf; va_start( args, fmt ); (void) vips_buf_vappendf( &buf, fmt, args ); va_end( args ); vips_buf_appends( &buf, " # " ); /* Add the date. ctime always attaches a '\n', gah. */ time( &timebuf ); vips_buf_appends( &buf, ctime( &timebuf ) ); vips_buf_removec( &buf, '\n' ); #ifdef DEBUG printf( "vips_image_history_printf: " "adding:\n\t%s\nto history on image %p\n", vips_buf_all( &buf ), image ); #endif /*DEBUG*/ image->history_list = g_slist_append( image->history_list, vips__gvalue_ref_string_new( vips_buf_all( &buf ) ) ); return( 0 ); } /** * vips_image_history_args: * @image: image to attach history line to * @name: program name * @argc: number of program arguments * @argv: program arguments * * Formats the name/argv as a single string and calls * vips_image_history_printf(). A * convenience function for command-line prorams. * * See also: vips_image_get_history(). * * Returns: 0 on success, -1 on error. */ int vips_image_history_args( VipsImage *image, const char *name, int argc, char *argv[] ) { int i; char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); vips_buf_appends( &buf, name ); for( i = 0; i < argc; i++ ) { vips_buf_appends( &buf, " " ); vips_buf_appends( &buf, argv[i] ); } if( vips_image_history_printf( image, "%s", vips_buf_all( &buf ) ) ) return( -1 ); return( 0 ); } /** * vips_image_get_history: * @image: get history from here * * This function reads the image history as a C string. The string is owned * by VIPS and must not be freed. * * VIPS tracks the history of each image, that is, the sequence of operations * that generated that image. Applications built on VIPS need to call * vips_image_history_printf() for each action they perform, setting the * command-line equivalent for the action. * * See also: vips_image_history_printf(). * * Returns: (transfer none): The history of @image as a C string. Do not free! */ const char * vips_image_get_history( VipsImage *image ) { if( !image->Hist ) image->Hist = vips__gslist_gvalue_get( image->history_list ); return( image->Hist ? image->Hist : "" ); } vips-8.2.2/libvips/iofuncs/init.c0000664000175000017500000006202712601470731013664 00000000000000/* Start up the world of vips. * * 7/1/04 JC * - 1st version * 7/6/05 * - g_type_init() too, so we can use gobject * 2/9/06 * - also set g_prg_name() and load plugins * 8/12/06 * - add liboil support * 5/2/07 * - stop a loop if we're called recursively during VIPS startup ... it * can happen if (for example) vips_guess_prefix() fails and tries to * i18n an error message (thanks Christian) * 8/6/07 * - just warn if plugins fail to load correctly: too annoying to have * VIPS refuse to start because of a dodgy plugin * 7/11/07 * - progress feedback option * 5/8/08 * - load plugins from libdir/vips-x.x * 5/10/09 * - gtkdoc comments * 14/3/10 * - init image and region before we start, we need all types to be fully * constructed before we go parallel */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_SYS_PARAM_H #include #endif /*HAVE_SYS_PARAM_H*/ #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #ifdef HAVE_DIRECT_H #include #endif /*HAVE_DIRECT_H*/ #include #include #ifdef HAVE_GSF #include #endif /*HAVE_GSF*/ #include #include #include #include /* abort() on the first warning or error. */ int vips__fatal = 0; /* Use in various small places where we need a mutex and it's not worth * making a private one. */ GMutex *vips__global_lock = NULL; /* Keep a copy of the argv0 here. */ static char *vips__argv0 = NULL; /* Leak check on exit. */ int vips__leak = 0; /** * vips_get_argv0: * * See also: VIPS_INIT(). * * Returns: a pointer to an internal copy of the argv0 string passed to * VIPS_INIT(). Do not free this value */ const char * vips_get_argv0( void ) { return( vips__argv0 ); } /** * VIPS_INIT: * @ARGV0: name of application * * VIPS_INIT() starts up the world of VIPS. You should call this on * program startup before using any other VIPS operations. If you do not call * VIPS_INIT(), VIPS will call it for you when you use your first VIPS * operation, but it may not be able to get hold of @ARGV0 and VIPS may * therefore be unable to find its data files. It is much better to call * this macro yourself. * * VIPS_INIT() is a macro, since it tries to check binary compatibility * between the caller and the library. * * VIPS_INIT() does approximately the following: * * + checks that the libvips your program is expecting is * binary-compatible with the vips library you're running against * * + initialises any libraries that VIPS is using, including GObject * and the threading system, if neccessary * * + guesses where the VIPS data files are and sets up * internationalisation --- see vips_guess_prefix() * * + creates the main vips types, including #VipsImage and friends * * + loads any plugins from $libdir/vips-x.y/, where x and y are the * major and minor version numbers for this VIPS. * * Example: * * |[ * int main (int argc, char **argv) * { * if (VIPS_INIT (argv[0])) * vips_error_exit ("unable to start VIPS"); * * vips_shutdown (); * * return 0; * } * ]| * * See also: vips_shutdown(), vips_add_option_entries(), vips_version(), * vips_guess_prefix(), vips_guess_libdir(). * * Returns: 0 on success, -1 otherwise */ /* Load all plugins in a directory ... look for '.plg' suffix. Error if we had * any probs. */ static int vips_load_plugins( const char *fmt, ... ) { va_list ap; char dir_name[VIPS_PATH_MAX]; GDir *dir; const char *name; int result; /* Silently succeed if we can't do modules. */ if( !g_module_supported() ) return( 0 ); va_start( ap, fmt ); (void) vips_vsnprintf( dir_name, VIPS_PATH_MAX - 1, fmt, ap ); va_end( ap ); #ifdef DEBUG printf( "vips_load_plugins: searching \"%s\"\n", dir_name ); #endif /*DEBUG*/ if( !(dir = g_dir_open( dir_name, 0, NULL )) ) /* Silent success for dir not there. */ return( 0 ); result = 0; while( (name = g_dir_read_name( dir )) ) if( vips_ispostfix( name, ".plg" ) ) { char path[VIPS_PATH_MAX]; GModule *module; vips_snprintf( path, VIPS_PATH_MAX - 1, "%s" G_DIR_SEPARATOR_S "%s", dir_name, name ); #ifdef DEBUG printf( "vips_load_plugins: loading \"%s\"\n", path ); #endif /*DEBUG*/ module = g_module_open( path, G_MODULE_BIND_LAZY ); if( !module ) { vips_warn( "vips_init", _( "unable to load \"%s\" -- %s" ), path, g_module_error() ); result = -1; } } g_dir_close( dir ); return( result ); } /** * vips_init: * @argv0: name of application * * This function starts up libvips, see VIPS_INIT(). * * This function is for bindings which need to start up vips. C programs * should use the VIPS_INIT() macro, which does some extra checks. * * See also: VIPS_INIT(). * * Returns: 0 on success, -1 otherwise */ int vips_init( const char *argv0 ) { extern GType vips_system_get_type( void ); static gboolean started = FALSE; static gboolean done = FALSE; char *prgname; const char *prefix; const char *libdir; char name[256]; /* Two stage done handling: 'done' means we've completed, 'started' * means we're currently initialising. Use this to prevent recursive * invocation. */ if( done ) /* Called more than once, we succeeded, just return OK. */ return( 0 ); if( started ) /* Recursive invocation, something has broken horribly. * Hopefully the first init will handle it. */ return( 0 ); started = TRUE; #ifdef NEED_TYPE_INIT /* Before glib 2.36 you have to call this on startup. */ g_type_init(); #endif /*NEED_TYPE_INIT*/ /* Older glibs need this. */ #ifndef HAVE_THREAD_NEW if( !g_thread_supported() ) g_thread_init( NULL ); #endif /* This does an unsynchronised static hash table init on first call -- * we have to make sure we do this single-threaded. See: * https://github.com/openslide/openslide/issues/161 */ (void) g_get_language_names(); if( !vips__global_lock ) vips__global_lock = vips_g_mutex_new(); VIPS_SETSTR( vips__argv0, argv0 ); prgname = g_path_get_basename( argv0 ); g_set_prgname( prgname ); g_free( prgname ); vips__thread_profile_attach( "main" ); /* We can't do VIPS_GATE_START() until command-line processing * happens, since vips__thread_profile may not be set yet. Call * directly. */ vips__thread_gate_start( "init: main" ); vips__thread_gate_start( "init: startup" ); /* Try to discover our prefix. */ if( !(prefix = vips_guess_prefix( argv0, "VIPSHOME" )) || !(libdir = vips_guess_libdir( argv0, "VIPSHOME" )) ) return( -1 ); /* Get i18n .mo files from $VIPSHOME/share/locale/. */ vips_snprintf( name, 256, "%s" G_DIR_SEPARATOR_S "share" G_DIR_SEPARATOR_S "locale", prefix ); bindtextdomain( GETTEXT_PACKAGE, name ); bind_textdomain_codeset( GETTEXT_PACKAGE, "UTF-8" ); /* Default info setting from env. */ if( g_getenv( "VIPS_INFO" ) || g_getenv( "IM_INFO" ) ) vips_info_set( TRUE ); /* Register base vips types. */ (void) vips_image_get_type(); (void) vips_region_get_type(); vips__meta_init_types(); vips__interpolate_init(); im__format_init(); /* Start up operator cache. */ vips__cache_init(); /* Start up packages. */ (void) vips_system_get_type(); vips_arithmetic_operation_init(); vips_conversion_operation_init(); vips_create_operation_init(); vips_foreign_operation_init(); vips_resample_operation_init(); vips_colour_operation_init(); vips_histogram_operation_init(); vips_convolution_operation_init(); vips_freqfilt_operation_init(); vips_morphology_operation_init(); vips_draw_operation_init(); vips_mosaicing_operation_init(); /* Load any vips8 plugins from the vips libdir. Keep going, even if * some plugins fail to load. */ (void) vips_load_plugins( "%s/vips-plugins-%d.%d", libdir, VIPS_MAJOR_VERSION, VIPS_MINOR_VERSION ); /* Load up any vips7 plugins in the vips libdir. We don't error on * failure, it's too annoying to have VIPS refuse to start because of * a broken plugin. */ if( im_load_plugins( "%s/vips-%d.%d", libdir, VIPS_MAJOR_VERSION, VIPS_MINOR_VERSION ) ) { vips_warn( "vips_init", "%s", vips_error_buffer() ); vips_error_clear(); } /* Also load from libdir. This is old and slightly broken behaviour * :-( kept for back compat convenience. */ if( im_load_plugins( "%s", libdir ) ) { vips_warn( "vips_init", "%s", vips_error_buffer() ); vips_error_clear(); } /* Start up the buffer cache. */ vips__buffer_init(); /* Get the run-time compiler going. */ vips_vector_init(); #ifdef HAVE_GSF /* Use this for structured file write. */ gsf_init(); #endif /*HAVE_GSF*/ /* Register vips_shutdown(). This may well not get called and many * platforms don't support it anyway. */ #ifdef HAVE_ATEXIT atexit( vips_shutdown ); #endif /*HAVE_ATEXIT*/ done = TRUE; vips__thread_gate_stop( "init: startup" ); return( 0 ); } /* Return the sizeof() various important data structures. These are checked * against the headers used to build our caller by vips_init(). * * We allow direct access to members of VipsImage and VipsRegion (mostly for * reasons of history), so any change to a superclass of either of these * objects will break our ABI. */ size_t vips__get_sizeof_vipsobject( void ) { return( sizeof( VipsObject ) ); } /* Call this before vips stuff that uses stuff we need to have inited. */ void vips_check_init( void ) { /* Pass in a nonsense name for argv0 ... this init path is only here * for old programs which are missing an vips_init() call. We need * i18n set up before we can translate. */ if( vips_init( "vips" ) ) vips_error_clear(); } static void vips_leak( void ) { char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); vips_object_print_all(); if( vips_tracked_get_allocs() || vips_tracked_get_mem() || vips_tracked_get_files() ) { vips_buf_appendf( &buf, "memory: %d allocations, %zd bytes\n", vips_tracked_get_allocs(), vips_tracked_get_mem() ); vips_buf_appendf( &buf, "files: %d open\n", vips_tracked_get_files() ); } vips_buf_appendf( &buf, "memory: high-water mark " ); vips_buf_append_size( &buf, vips_tracked_get_mem_highwater() ); vips_buf_appends( &buf, "\n" ); fprintf( stderr, "%s", vips_buf_all( &buf ) ); #ifdef DEBUG vips_buffer_dump_all(); #endif /*DEBUG*/ } /** * vips_thread_shutdown: * * Free any thread-private data and flush any profiling information. * * This function needs to be called when a thread that has been using vips * exits. It is called for you by vips_shutdown() and for any threads created * by vips_g_thread_new(). * * You will need to call it from threads created in * other ways or there will be memory leaks. If you do not call it, vips * will generate a warning message. * * It may be called many times, and you can continue using vips after * calling it. Calling it too often will reduce performance. */ void vips_thread_shutdown( void ) { vips__buffer_shutdown(); vips__thread_profile_detach(); } /** * vips_shutdown: * * Call this to drop caches and close plugins. Run with "--vips-leak" to do * a leak check too. May be called many times. */ void vips_shutdown( void ) { #ifdef DEBUG printf( "vips_shutdown:\n" ); #endif /*DEBUG*/ vips_cache_drop_all(); im_close_plugins(); /* Mustn't run this more than once. Don't use the VIPS_GATE macro, * since we don't for gate start. */ { static gboolean done = FALSE; if( !done ) vips__thread_gate_stop( "init: main" ); } vips__render_shutdown(); vips_thread_shutdown(); vips__thread_profile_stop(); #ifdef HAVE_GSF gsf_shutdown(); #endif /*HAVE_GSF*/ /* In dev releases, always show leaks. But not more than once, it's * annoying. */ #ifndef DEBUG_LEAK if( vips__leak ) #endif /*DEBUG_LEAK*/ { static gboolean done = FALSE; if( !done ) vips_leak(); done = TRUE; } } const char * vips__gettext( const char *msgid ) { vips_check_init(); return( dgettext( GETTEXT_PACKAGE, msgid ) ); } const char * vips__ngettext( const char *msgid, const char *plural, unsigned long int n ) { vips_check_init(); return( dngettext( GETTEXT_PACKAGE, msgid, plural, n ) ); } static gboolean vips_lib_version_cb( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { printf( "libvips %s\n", VIPS_VERSION_STRING ); vips_shutdown(); exit( 0 ); } static gboolean vips_set_fatal_cb( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { vips__fatal = 1; /* Set masks for debugging ... stop on any problem. */ g_log_set_always_fatal( G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL | G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING ); return( TRUE ); } static GOptionEntry option_entries[] = { { "vips-info", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &vips__info, N_( "show informative messages" ), NULL }, { "vips-fatal", 0, G_OPTION_FLAG_HIDDEN | G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, (gpointer) &vips_set_fatal_cb, N_( "abort on first error or warning" ), NULL }, { "vips-concurrency", 0, 0, G_OPTION_ARG_INT, &vips__concurrency, N_( "evaluate with N concurrent threads" ), "N" }, { "vips-tile-width", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__tile_width, N_( "set tile width to N (DEBUG)" ), "N" }, { "vips-tile-height", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__tile_height, N_( "set tile height to N (DEBUG)" ), "N" }, { "vips-thinstrip-height", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__thinstrip_height, N_( "set thinstrip height to N (DEBUG)" ), "N" }, { "vips-fatstrip-height", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_INT, &vips__fatstrip_height, N_( "set fatstrip height to N (DEBUG)" ), "N" }, { "vips-progress", 0, 0, G_OPTION_ARG_NONE, &vips__progress, N_( "show progress feedback" ), NULL }, { "vips-leak", 0, 0, G_OPTION_ARG_NONE, &vips__leak, N_( "leak-check on exit" ), NULL }, { "vips-profile", 0, 0, G_OPTION_ARG_NONE, &vips__thread_profile, N_( "profile and dump timing on exit" ), NULL }, { "vips-disc-threshold", 0, 0, G_OPTION_ARG_STRING, &vips__disc_threshold, N_( "images larger than N are decompressed to disc" ), "N" }, { "vips-novector", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &vips__vector_enabled, N_( "disable vectorised versions of operations" ), NULL }, { "vips-cache-max", 0, 0, G_OPTION_ARG_STRING, &vips__cache_max, N_( "cache at most N operations" ), "N" }, { "vips-cache-max-memory", 0, 0, G_OPTION_ARG_STRING, &vips__cache_max_mem, N_( "cache at most N bytes in memory" ), "N" }, { "vips-cache-max-files", 0, 0, G_OPTION_ARG_STRING, &vips__cache_max_files, N_( "allow at most N open files" ), "N" }, { "vips-cache-trace", 0, 0, G_OPTION_ARG_NONE, &vips__cache_trace, N_( "trace operation cache" ), NULL }, { "vips-cache-dump", 0, 0, G_OPTION_ARG_NONE, &vips__cache_dump, N_( "dump operation cache on exit" ), NULL }, { "vips-version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, (gpointer) &vips_lib_version_cb, N_( "print libvips version" ), NULL }, { NULL } }; /** * vips_add_option_entries: * @option_group: group to add to * * Add the standard vips %GOptionEntry to a %GOptionGroup. * * See also: g_option_group_new(). */ void vips_add_option_entries( GOptionGroup *option_group ) { g_option_group_add_entries( option_group, option_entries ); } /* Find the prefix part of a dir ... name is the name of this prog from argv0. * * dir name guess prefix * * /home/john/vips-7.6.4/bin/vips-7.6 vips-7.6 /home/john/vips-7.6.4 * /usr/local/bin/ip ip /usr/local * * all other forms ... return NULL. */ static char * extract_prefix( const char *dir, const char *name ) { char edir[VIPS_PATH_MAX]; char vname[VIPS_PATH_MAX]; int i; #ifdef DEBUG printf( "extract_prefix: trying for dir = \"%s\", name = \"%s\"\n", dir, name ); #endif /*DEBUG*/ /* Is dir relative? Prefix with cwd. */ if( !g_path_is_absolute( dir ) ) { char *cwd; cwd = g_get_current_dir(); vips_snprintf( edir, VIPS_PATH_MAX, "%s" G_DIR_SEPARATOR_S "%s", cwd, dir ); g_free( cwd ); } else { vips_strncpy( edir, dir, VIPS_PATH_MAX ); } /* Chop off the trailing prog name, plus the trailing * G_DIR_SEPARATOR_S. */ if( !vips_ispostfix( edir, name ) ) return( NULL ); vips_strncpy( vname, edir, VIPS_PATH_MAX ); vname[strlen( edir ) - strlen( name ) - 1] = '\0'; /* Remove any "/./", any trailing "/.", any trailing "/". */ for( i = 0; i < (int) strlen( vname ); i++ ) if( vips_isprefix( G_DIR_SEPARATOR_S "." G_DIR_SEPARATOR_S, vname + i ) ) memcpy( vname + i, vname + i + 2, strlen( vname + i + 2 ) + 1 ); if( vips_ispostfix( vname, G_DIR_SEPARATOR_S "." ) ) vname[strlen( vname ) - 2] = '\0'; if( vips_ispostfix( vname, G_DIR_SEPARATOR_S ) ) vname[strlen( vname ) - 1] = '\0'; #ifdef DEBUG printf( "extract_prefix: canonicalised path = \"%s\"\n", vname ); #endif /*DEBUG*/ /* Ought to be a "/bin" at the end now. */ if( !vips_ispostfix( vname, G_DIR_SEPARATOR_S "bin" ) ) return( NULL ); vname[strlen( vname ) - strlen( G_DIR_SEPARATOR_S "bin" )] = '\0'; #ifdef DEBUG printf( "extract_prefix: found \"%s\"\n", vname ); #endif /*DEBUG*/ return( vips_strdup( NULL, vname ) ); } /* Search a path for a file ... we overwrite the PATH string passed in. */ static char * scan_path( char *path, const char *name ) { char *p, *q; char *prefix; for( p = path; (q = vips_break_token( p, G_SEARCHPATH_SEPARATOR_S )); p = q ) { char str[VIPS_PATH_MAX]; /* Form complete path. */ vips_snprintf( str, VIPS_PATH_MAX, "%s" G_DIR_SEPARATOR_S "%s", p, name ); #ifdef DEBUG printf( "scan_path: looking in \"%s\" for \"%s\"\n", p, name ); #endif /*DEBUG*/ if( vips_existsf( "%s", str ) && (prefix = extract_prefix( str, name )) ) { return( prefix ); } } return( NULL ); } /* Look for a file along PATH. If we find it, look for an enclosing prefix. */ static char * find_file( const char *name ) { const char *path = g_getenv( "PATH" ); char *prefix; char full_path[VIPS_PATH_MAX]; if( !path ) return( NULL ); #ifdef DEBUG printf( "vips_guess_prefix: g_getenv( \"PATH\" ) == \"%s\"\n", path ); #endif /*DEBUG*/ #ifdef OS_WIN32 { char *dir; /* Windows always searches '.' first, so prepend cwd to path. */ dir = g_get_current_dir(); vips_snprintf( full_path, VIPS_PATH_MAX, "%s" G_SEARCHPATH_SEPARATOR_S "%s", dir, path ); g_free( dir ); } #else /*!OS_WIN32*/ vips_strncpy( full_path, path, VIPS_PATH_MAX ); #endif /*OS_WIN32*/ if( (prefix = scan_path( full_path, name )) ) return( prefix ); return( NULL ); } /* Guess a value for the install PREFIX. */ static const char * guess_prefix( const char *argv0, const char *name ) { char *prefix; /* Try to guess from argv0. */ if( argv0 ) { if( g_path_is_absolute( argv0 ) ) { /* Must point to our executable. */ if( (prefix = extract_prefix( argv0, name )) ) { #ifdef DEBUG printf( "vips_guess_prefix: found \"%s\" from " "argv0\n", prefix ); #endif /*DEBUG*/ return( prefix ); } } /* Look along path for name. */ if( (prefix = find_file( name )) ) { #ifdef DEBUG printf( "vips_guess_prefix: found \"%s\" from " "PATH\n", prefix ); #endif /*DEBUG*/ return( prefix ); } } #ifdef HAVE_REALPATH /* Try to guess from cwd. Only if this is a relative path, though. No * realpath on winders, but fortunately it seems to always generate * a full path in argv[0]. */ if( !g_path_is_absolute( argv0 ) ) { char full_path[VIPS_PATH_MAX]; char *resolved; char *dir; dir = g_get_current_dir(); vips_snprintf( full_path, VIPS_PATH_MAX, "%s" G_DIR_SEPARATOR_S "%s", dir, argv0 ); g_free( dir ); if( (resolved = realpath( full_path, NULL )) ) { prefix = extract_prefix( resolved, name ); free( resolved ); if( prefix ) { #ifdef DEBUG printf( "vips_guess_prefix: found \"%s\" " "from cwd\n", prefix ); #endif /*DEBUG*/ return( prefix ); } } } #endif /*HAVE_REALPATH*/ /* Fall back to the configure-time prefix. */ return( VIPS_PREFIX ); } /** * vips_guess_prefix: * @argv0: program name (typically argv[0]) * @env_name: save prefix in this environment variable * * vips_guess_prefix() tries to guess the install directory. You should pass * in the value of argv[0] (the name your program was run as) as a clue to * help it out, plus the name of the environment variable you let the user * override your package install area with (eg. "VIPSHOME"). * * On success, vips_guess_prefix() returns the prefix it discovered, and as a * side effect, sets the environment variable (if it's not set). * * Don't free the return string! * * See also: vips_guess_libdir(). * * Returns: (transfer none): the install prefix as a static string, do not free. */ const char * vips_guess_prefix( const char *argv0, const char *env_name ) { const char *prefix; char *basename; char name[VIPS_PATH_MAX]; /* Already set? */ if( (prefix = g_getenv( env_name )) ) { #ifdef DEBUG printf( "vips_guess_prefix: found \"%s\" in environment\n", prefix ); #endif /*DEBUG*/ return( prefix ); } /* Get the program name from argv0. */ basename = g_path_get_basename( argv0 ); /* Add the exe suffix, if it's missing. */ if( strlen( VIPS_EXEEXT ) > 0 ) { const char *olds[] = { VIPS_EXEEXT }; vips__change_suffix( basename, name, VIPS_PATH_MAX, VIPS_EXEEXT, olds, 1 ); } else vips_strncpy( name, basename, VIPS_PATH_MAX ); g_free( basename ); #ifdef DEBUG printf( "vips_guess_prefix: argv0 = %s\n", argv0 ); printf( "vips_guess_prefix: name = %s\n", name ); #endif /*DEBUG*/ prefix = guess_prefix( argv0, name ); g_setenv( env_name, prefix, TRUE ); return( prefix ); } /** * vips_guess_libdir: * @argv0: program name (typically argv[0]) * @env_name: save prefix in this environment variable * * vips_guess_libdir() tries to guess the install directory (usually the * configure libdir, or $prefix/lib). You should pass * in the value of argv[0] (the name your program was run as) as a clue to * help it out, plus the name of the environment variable you let the user * override your package install area with (eg. "VIPSHOME"). * * On success, vips_guess_libdir() returns the libdir it discovered, and as a * side effect, sets the prefix environment variable (if it's not set). * * Don't free the return string! * * See also: vips_guess_prefix(). * * Returns: (transfer none): the libdir as a static string, do not free. */ const char * vips_guess_libdir( const char *argv0, const char *env_name ) { const char *prefix = vips_guess_prefix( argv0, env_name ); static char *libdir = NULL; if( libdir ) return( libdir ); /* Have we been moved since configure? If not, use the configure-time * libdir. */ if( strcmp( prefix, VIPS_PREFIX ) == 0 ) libdir = VIPS_LIBDIR; else libdir = g_strdup_printf( "%s/lib", prefix ); #ifdef DEBUG printf( "vips_guess_libdir: VIPS_PREFIX = %s\n", VIPS_PREFIX ); printf( "vips_guess_libdir: VIPS_LIBDIR = %s\n", VIPS_LIBDIR ); printf( "vips_guess_libdir: prefix = %s\n", prefix ); printf( "vips_guess_libdir: libdir = %s\n", libdir ); #endif /*DEBUG*/ return( libdir ); } /** * vips_version_string: * * Get the VIPS version as a static string, including a build date and time. * Do not free. * * Returns: (transfer none): a static version string */ const char * vips_version_string( void ) { return( VIPS_VERSION_STRING ); } /** * vips_version: * @flag: which field of the version to get * * Get the major, minor or micro library version, with @flag values 0, 1 and * 2. * * Returns: library version number */ int vips_version( int flag ) { switch( flag ) { case 0: return( VIPS_MAJOR_VERSION ); case 1: return( VIPS_MINOR_VERSION ); case 2: return( VIPS_MICRO_VERSION ); default: vips_error( "vips_version", "%s", _( "flag not 0, 1, 2" ) ); return( -1 ); } } /** * vips_leak_set: * @leak: turn leak checking on or off * * Turn on or off vips leak checking. See also --vips-leak and * vips_add_option_entries(). * * You should call this very early in your program. */ void vips_leak_set( gboolean leak ) { vips__leak = leak; } vips-8.2.2/libvips/iofuncs/rect.c0000664000175000017500000001241212530402247013645 00000000000000/* Simple rectangle algebra. Should build rectangle list algebra on top of * this. * * J. Cupitt, 8/4/93. * * 17/3/11 * - move to vips_ prefix * - gtk-doc comments */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include /** * SECTION: rect * @short_description: the VIPS rectangle class * @stability: Stable * @see_also: region * @include: vips/vips.h * * The #VipsRect class and associated types and macros. */ /** * VipsRect: * @left: left edge of rectangle * @top: top edge of rectangle * @width: width of rectangle * @height: height of rectangle * * A #VipsRect is a rectangular area of pixels. This is a struct for * performing simple rectangle algebra. */ /** * vips_rect_includespoint: * @r: rectangle to test * @x: position to test for * @y: position to test for * * Does @r contain point (@x, @y)? * * Returns: %TRUE if @r contains (@x, @y). */ gboolean vips_rect_includespoint( const VipsRect *r, int x, int y ) { return( r->left <= x && r->top <= y && r->left + r->width > x && r->top + r->height > y ); } /** * vips_rect_isempty: * @r: rectangle to test * * Is @r empty? ie. zero width or height. * * Returns: %TRUE if @r contains no pixels. */ gboolean vips_rect_isempty( const VipsRect *r ) { return( r->width <= 0 || r->height <= 0 ); } /** * vips_rect_includesrect: * @r1: outer rectangle * @r2: inner rectangle * * Is @r2 a subset of @r1? * * Returns: %TRUE if @r2 is a subset of @r1. */ gboolean vips_rect_includesrect( const VipsRect *r1, const VipsRect *r2 ) { return( r1->left <= r2->left && r1->top <= r2->top && r1->left + r1->width >= r2->left + r2->width && r1->top + r1->height >= r2->top + r2->height ); } /** * vips_rect_equalsrect: * @r1: first rectangle * @r2: second rectangle * * Is @r1 equal to @r2? * * Returns: %TRUE if @r1 is equal to @r2. */ gboolean vips_rect_equalsrect( const VipsRect *r1, const VipsRect *r2 ) { return( r1->left == r2->left && r1->top == r2->top && r1->width == r2->width && r1->height == r2->height ); } /** * vips_rect_marginadjust: * @r: rectangle to adjust * @n: enlarge by * * Enlarge @r by @n. +1 means out one pixel. */ void vips_rect_marginadjust( VipsRect *r, int n ) { r->left -= n; r->top -= n; r->width += 2 * n; r->height += 2 * n; } /** * vips_rect_intersectrect: * @r1: input rectangle 1 * @r2: input rectangle 2 * @out: output rectangle * * Fill @out with the intersection of @r1 and @r2. @out can equal @r1 or @r2. */ void vips_rect_intersectrect( const VipsRect *r1, const VipsRect *r2, VipsRect *out ) { int left = VIPS_MAX( r1->left, r2->left ); int top = VIPS_MAX( r1->top, r2->top ); int right = VIPS_MIN( VIPS_RECT_RIGHT( r1 ), VIPS_RECT_RIGHT( r2 ) ); int bottom = VIPS_MIN( VIPS_RECT_BOTTOM( r1 ), VIPS_RECT_BOTTOM( r2 ) ); int width = VIPS_MAX( 0, right - left ); int height = VIPS_MAX( 0, bottom - top ); out->left = left; out->top = top; out->width = width; out->height = height; } /** * vips_rect_unionrect: * @r1: input rectangle 1 * @r2: input rectangle 2 * @out: output rectangle * * Fill @out with the bounding box of @r1 and @r2. @out can equal @r1 or @r2. */ void vips_rect_unionrect( const VipsRect *r1, const VipsRect *r2, VipsRect *out ) { if( vips_rect_isempty( r1 ) ) *out = *r2; else if( vips_rect_isempty( r2 ) ) *out = *r1; else { int left = VIPS_MIN( r1->left, r2->left ); int top = VIPS_MIN( r1->top, r2->top ); int width = VIPS_MAX( VIPS_RECT_RIGHT( r1 ), VIPS_RECT_RIGHT( r2 ) ) - left; int height = VIPS_MAX( VIPS_RECT_BOTTOM( r1 ), VIPS_RECT_BOTTOM( r2 ) )- top; out->left = left; out->top = top; out->width = width; out->height = height; } } /** * vips_rect_dup: * @r: rectangle to duplicate * * Duplicate a rect to the heap. You need to free the result with vips_free(). * * Returns: a pointer to copy of @r allocated on the heap. */ VipsRect * vips_rect_dup( const VipsRect *r ) { VipsRect *out; if( !(out = VIPS_NEW( NULL, VipsRect )) ) return( NULL ); *out = *r; return( out ); } /** * vips_rect_normalise: * @r: rect to normalise * * Make sure width and height are >0 by moving the origin and flipping the * rect. */ void vips_rect_normalise( VipsRect *r ) { if( r->width < 0 ) { r->left += r->width; r->width *= -1; } if( r->height < 0 ) { r->top += r->height; r->height *= -1; } } vips-8.2.2/libvips/iofuncs/region.c0000664000175000017500000011674412651123623014212 00000000000000/* Make and destroy partial image regions. * * J.Cupitt, 8/4/93. * 1/7/93 JC * - adapted for partial v2 * - ANSIfied * 15/8/94 JC * - start & stop can now be NULL for no-op * 12/5/94 JC * - threads v2.0 added * 22/2/95 JC * - im_region_region() args changed * 22/6/95 JC * - im_region_local() did not always reset the data pointer * 18/11/98 JC * - init a, b, c also now, to help rtc avoid spurious checks * 29/6/01 JC * - im_region_free() now frees immediately * 6/8/02 JC * - new mmap() window regions * 5/11/02 JC * - fix for mmap a local region * 28/2/05 * - shrink local region memory if required much-greater-than allocated * 3/6/05 * - im_region_region() allows Bands and BandFmt to differ, provided * sizeof( pel ) is the same ... makes im_copy_morph() work * 30/10/06 * - switch to im_window_t for mmap window stuff * 29/11/06 * - switch to im_buffer_t for local mem buffer stuff * 19/1/07 * - im_region_image() only sets r, not whole image * 1'2'07 * - gah, im_region_image() could still break (thanks Mikkel) * 23/7/08 * - added im_region_print() * 7/10/09 * - gtkdoc comments * 5/3/10 * - move invalid stuff to region * 3/3/11 * - move on top of VipsObject, rename as VipsRegion */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_MOVE #define DEBUG_ENVIRONMENT 1 #define DEBUG_CREATE #define DEBUG #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include #include /** * SECTION: region * @short_description: small, rectangular parts of images * @stability: Stable * @see_also: image, * generate * @include: vips/vips.h * * A #VipsRegion is a small part of an image and some pixels. You use regions to * read pixels out of images without having to have the whole image in memory * at once. * * A region can be a memory buffer, part of a memory-mapped file, part of some * other image, or part of some other region. * * Regions must be created, used and freed all within the same thread, since * they can reference private per-thread caches. VIPS sanity-checks region * ownership in various places, so you are likely to see g_assert() errors if * you don't follow this rule. * * There * is API to transfer ownership of regions between threads, but hopefully this * is only needed within VIPS, so we don't expose it. Hopefully. */ /** * VipsRegion: * @im: the #VipsImage that this region is defined on * @valid: the #VipsRect of pixels that this region represents * * A small part of a #VipsImage. @valid holds the left/top/width/height of the * area of pixels that are available from the region. * * See also: VIPS_REGION_ADDR(), vips_region_new(), vips_region_prepare(). */ /** * VIPS_REGION_LSKIP: * @R: a #VipsRegion * * Returns: The number of bytes to add to move down a scanline. */ /** * VIPS_REGION_N_ELEMENTS: * @R: a #VipsRegion * * Returns: The number of band elements across a region. */ /** * VIPS_REGION_SIZEOF_LINE: * @R: a #VipsRegion * * Returns: The number of bytes across a region. */ /** * VIPS_REGION_ADDR: * @R: a #VipsRegion * @X: x coordinate * @Y: y coordinate * * This macro returns a pointer to a pixel in a region. The (@X, @Y) * coordinates need to be within the #VipsRect (@R->valid). * * If DEBUG is defined, you get a version that checks bounds for you. * * See also: vips_region_prepare(). * * Returns: The address of pixel (@X,@Y) in @R. */ /** * VIPS_REGION_ADDR_TOPLEFT: * @R: a #VipsRegion * * This macro returns a pointer to the top-left pixel in the #VipsRegion, that * is, the pixel at (@R->valid.left, @R->valid.top). * * See also: vips_region_prepare(). * * Returns: The address of the top-left pixel in the region. */ /* Properties. */ enum { PROP_IMAGE = 1, PROP_LAST }; G_DEFINE_TYPE( VipsRegion, vips_region, VIPS_TYPE_OBJECT ); #ifdef VIPS_DEBUG static GSList *vips__regions_all = NULL; #endif /*VIPS_DEBUG*/ static void vips_region_finalize( GObject *gobject ) { #ifdef VIPS_DEBUG VIPS_DEBUG_MSG( "vips_region_finalize: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); VIPS_DEBUG_MSG( "\n" ); #endif /*VIPS_DEBUG*/ #ifdef VIPS_DEBUG g_mutex_lock( vips__global_lock ); vips__regions_all = g_slist_remove( vips__regions_all, gobject ); g_mutex_unlock( vips__global_lock ); #endif /*VIPS_DEBUG*/ G_OBJECT_CLASS( vips_region_parent_class )->finalize( gobject ); } /* Call a start function if no sequence is running on this VipsRegion. */ int vips__region_start( VipsRegion *region ) { VipsImage *image = region->im; if( !region->seq && image->start_fn ) { VIPS_GATE_START( "vips__region_start: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips__region_start: wait" ); region->seq = image->start_fn( image, image->client1, image->client2 ); g_mutex_unlock( image->sslock ); if( !region->seq ) { vips_error( "vips__region_start", _( "start function failed for image %s" ), image->filename ); return( -1 ); } } return( 0 ); } /* Call a stop function if a sequence is running in this VipsRegion. */ void vips__region_stop( VipsRegion *region ) { IMAGE *image = region->im; if( region->seq && image->stop_fn ) { int result; VIPS_GATE_START( "vips__region_stop: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips__region_stop: wait" ); result = image->stop_fn( region->seq, image->client1, image->client2 ); g_mutex_unlock( image->sslock ); /* stop function can return an error, but we have nothing we * can really do with it, sadly. */ if( result ) vips_warn( "VipsRegion", "stop callback failed for image %s", image->filename ); region->seq = NULL; } } static void vips_region_dispose( GObject *gobject ) { VipsRegion *region = VIPS_REGION( gobject ); VipsImage *image = region->im; #ifdef VIPS_DEBUG VIPS_DEBUG_MSG( "vips_region_dispose: " ); vips_object_print_name( VIPS_OBJECT( gobject ) ); VIPS_DEBUG_MSG( "\n" ); #endif /*VIPS_DEBUG*/ vips_object_preclose( VIPS_OBJECT( gobject ) ); /* Stop this sequence. */ vips__region_stop( region ); /* Free any attached memory. */ VIPS_FREEF( vips_window_unref, region->window ); VIPS_FREEF( vips_buffer_unref, region->buffer ); /* Detach from image. */ VIPS_GATE_START( "vips_region_dispose: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips_region_dispose: wait" ); image->regions = g_slist_remove( image->regions, region ); g_mutex_unlock( image->sslock ); region->im = NULL; g_object_unref( image ); G_OBJECT_CLASS( vips_region_parent_class )->dispose( gobject ); } static void vips_region_dump( VipsObject *object, VipsBuf *buf ) { VipsRegion *region = VIPS_REGION( object ); vips_buf_appendf( buf, "VipsRegion: %p, ", region ); vips_buf_appendf( buf, "im = %p, ", region->im ); vips_buf_appendf( buf, "valid.left = %d, ", region->valid.left ); vips_buf_appendf( buf, "valid.top = %d, ", region->valid.top ); vips_buf_appendf( buf, "valid.width = %d, ", region->valid.width ); vips_buf_appendf( buf, "valid.height = %d, ", region->valid.height ); vips_buf_appendf( buf, "type = %d, ", region->type ); vips_buf_appendf( buf, "data = %p, ", region->data ); vips_buf_appendf( buf, "bpl = %d, ", region->bpl ); vips_buf_appendf( buf, "seq = %p, ", region->seq ); vips_buf_appendf( buf, "thread = %p, ", region->thread ); vips_buf_appendf( buf, "window = %p, ", region->window ); vips_buf_appendf( buf, "buffer = %p, ", region->buffer ); vips_buf_appendf( buf, "invalid = %d", region->invalid ); VIPS_OBJECT_CLASS( vips_region_parent_class )->dump( object, buf ); } static void vips_region_summary( VipsObject *object, VipsBuf *buf ) { VipsRegion *region = VIPS_REGION( object ); vips_buf_appendf( buf, "VipsRegion: %p, ", region ); vips_buf_appendf( buf, "im = %p, ", region->im ); vips_buf_appendf( buf, "left = %d, ", region->valid.left ); vips_buf_appendf( buf, "top = %d, ", region->valid.top ); vips_buf_appendf( buf, "width = %d, ", region->valid.width ); vips_buf_appendf( buf, "height = %d", region->valid.height ); if( region->buffer && region->buffer->buf ) vips_buf_appendf( buf, ", %.3gMB", region->buffer->bsize / (1024 * 1024.0) ); VIPS_OBJECT_CLASS( vips_region_parent_class )->summary( object, buf ); } static void vips_region_sanity( VipsObject *object, VipsBuf *buf ) { VipsRegion *region = VIPS_REGION( object ); (void) vips_object_sanity( VIPS_OBJECT( region->im ) ); switch( region->im->dtype ) { case VIPS_IMAGE_PARTIAL: /* Start and stop can be NULL, but not generate. */ if( !region->im->generate_fn ) vips_buf_appends( buf, "generate NULL in partial\n" ); break; default: break; } VIPS_OBJECT_CLASS( vips_region_parent_class )->sanity( object, buf ); } /* If a region is being created in one thread (eg. the main thread) and then * used in another (eg. a worker thread), the new thread needs to tell VIPS * to stop sanity g_assert() fails. The previous owner needs to * vips__region_no_ownership() before we can call this. */ void vips__region_take_ownership( VipsRegion *region ) { /* Lock so that there's a memory barrier with the thread doing the * vips__region_no_ownership() before us. */ VIPS_GATE_START( "vips__region_take_ownership: wait" ); g_mutex_lock( region->im->sslock ); VIPS_GATE_STOP( "vips__region_take_ownership: wait" ); if( region->thread != g_thread_self() ) { g_assert( region->thread == NULL ); /* We don't want to move shared buffers: the other region * using this buffer will still be on the other thread. * Not sure if this will ever happen: if it does, we'll * need to dup the buffer. */ g_assert( !region->buffer || region->buffer->ref_count == 1 ); region->thread = g_thread_self(); } g_mutex_unlock( region->im->sslock ); } void vips__region_check_ownership( VipsRegion *region ) { if( region->thread ) { g_assert( region->thread == g_thread_self() ); if( region->buffer && region->buffer->cache ) g_assert( region->thread == region->buffer->cache->thread ); } } /* Call this from the relinquishing thread. Removes the buffer (if any) from * this thread's buffer cache. */ void vips__region_no_ownership( VipsRegion *region ) { VIPS_GATE_START( "vips__region_no_ownership: wait" ); g_mutex_lock( region->im->sslock ); VIPS_GATE_STOP( "vips__region_no_ownership: wait" ); vips__region_check_ownership( region ); region->thread = NULL; if( region->buffer ) vips_buffer_undone( region->buffer ); g_mutex_unlock( region->im->sslock ); } static int vips_region_build( VipsObject *object ) { VipsRegion *region = VIPS_REGION( object ); VipsImage *image = region->im; VIPS_DEBUG_MSG( "vips_region_build: %p\n", region ); if( VIPS_OBJECT_CLASS( vips_region_parent_class )->build( object ) ) return( -1 ); vips__region_take_ownership( region ); /* We're usually inside the ss lock anyway. But be safe ... */ VIPS_GATE_START( "vips_region_build: wait" ); g_mutex_lock( image->sslock ); VIPS_GATE_STOP( "vips_region_build: wait" ); image->regions = g_slist_prepend( image->regions, region ); g_mutex_unlock( image->sslock ); return( 0 ); } static void vips_region_class_init( VipsRegionClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->finalize = vips_region_finalize; gobject_class->dispose = vips_region_dispose; vobject_class->summary = vips_region_summary; vobject_class->dump = vips_region_dump; vobject_class->sanity = vips_region_sanity; vobject_class->build = vips_region_build; } static void vips_region_init( VipsRegion *region ) { region->type = VIPS_REGION_NONE; #ifdef VIPS_DEBUG g_mutex_lock( vips__global_lock ); vips__regions_all = g_slist_prepend( vips__regions_all, region ); printf( "vips_region_init: %d regions in vips\n", g_slist_length( vips__regions_all ) ); g_mutex_unlock( vips__global_lock ); #endif /*VIPS_DEBUG*/ } /** * vips_region_new: * @image: image to create this region on * * Create a region. #VipsRegion s start out empty, you need to call * vips_region_prepare() to fill them with pixels. * * See also: vips_region_prepare(). */ VipsRegion * vips_region_new( VipsImage *image ) { VipsRegion *region; /* Ref quickly, we want to make sure we keep the image around. * We can't use the property system, we need to be very threaded. */ g_object_ref( image ); g_assert( G_OBJECT( image )->ref_count > 1 ); #ifdef DEBUG g_assert( vips_object_sanity( VIPS_OBJECT( image ) ) ); #endif /*DEBUG*/ region = VIPS_REGION( g_object_new( VIPS_TYPE_REGION, NULL ) ); region->im = image; if( vips_object_build( VIPS_OBJECT( region ) ) ) { VIPS_UNREF( region ); return( NULL ); } #ifdef DEBUG g_assert( vips_object_sanity( VIPS_OBJECT( region ) ) ); #endif /*DEBUG*/ return( region ); } /* Region should be a pixel buffer. On return, check * reg->buffer->done to see if there are pixels there already. Otherwise, you * need to calculate. */ /** * vips_region_buffer: * @reg: region to operate upon * @r: #VipsRect of pixels you need to be able to address * * The region is transformed so that at least @r pixels are available as a * memory buffer. * * Returns: 0 on success, or -1 for error. */ int vips_region_buffer( VipsRegion *reg, VipsRect *r ) { VipsImage *im = reg->im; VipsRect image; VipsRect clipped; vips__region_check_ownership( reg ); /* Clip against image. */ image.top = 0; image.left = 0; image.width = im->Xsize; image.height = im->Ysize; vips_rect_intersectrect( r, &image, &clipped ); /* Test for empty. */ if( vips_rect_isempty( &clipped ) ) { vips_error( "VipsRegion", "%s", _( "valid clipped to nothing" ) ); return( -1 ); } VIPS_FREEF( vips_window_unref, reg->window ); /* Have we been asked to drop caches? We want to throw everything * away. * * If not, try to reuse the current buffer. */ if( reg->invalid ) { VIPS_FREEF( vips_buffer_unref, reg->buffer ); reg->invalid = FALSE; if( !(reg->buffer = vips_buffer_new( im, &clipped )) ) return( -1 ); } else { /* We combine buffer unref and new buffer ref in one call * to reduce malloc/free cycling. */ if( !(reg->buffer = vips_buffer_unref_ref( reg->buffer, im, &clipped )) ) return( -1 ); } /* Init new stuff. */ reg->valid = reg->buffer->area; reg->bpl = VIPS_IMAGE_SIZEOF_PEL( im ) * reg->buffer->area.width; reg->type = VIPS_REGION_BUFFER; reg->data = reg->buffer->buf; return( 0 ); } /** * vips_region_image: * @reg: region to operate upon * @r: #VipsRect of pixels you need to be able to address * * The region is transformed so that at least @r pixels are available directly * from the image. The image needs to be a memory buffer or represent a file * on disc that has been mapped or can be mapped. * * Returns: 0 on success, or -1 for error. */ int vips_region_image( VipsRegion *reg, VipsRect *r ) { VipsImage *image = reg->im; VipsRect all; VipsRect clipped; /* Sanity check. */ vips__region_check_ownership( reg ); /* Clip against image. */ all.top = 0; all.left = 0; all.width = image->Xsize; all.height = image->Ysize; vips_rect_intersectrect( r, &all, &clipped ); /* Test for empty. */ if( vips_rect_isempty( &clipped ) ) { vips_error( "VipsRegion", "%s", _( "valid clipped to nothing" ) ); return( -1 ); } VIPS_FREEF( vips_buffer_unref, reg->buffer ); VIPS_FREEF( vips_window_unref, reg->window ); reg->invalid = FALSE; if( image->data ) { /* We have the whole image available ... easy! */ /* We can't just set valid = clipped, since this may be an * incompletely calculated memory buffer. Just set valid to r. */ reg->valid = clipped; reg->bpl = VIPS_IMAGE_SIZEOF_LINE( image ); reg->data = VIPS_IMAGE_ADDR( image, clipped.left, clipped.top ); reg->type = VIPS_REGION_OTHER_IMAGE; } else if( image->dtype == VIPS_IMAGE_OPENIN ) { /* No complete image data ... but we can use a rolling window. */ if( reg->type != VIPS_REGION_WINDOW || !reg->window || reg->window->top > clipped.top || reg->window->top + reg->window->height < clipped.top + clipped.height ) { if( !(reg->window = vips_window_ref( image, clipped.top, clipped.height )) ) return( -1 ); reg->type = VIPS_REGION_WINDOW; } /* Note the area the window actually represents. */ reg->valid.left = 0; reg->valid.top = reg->window->top; reg->valid.width = image->Xsize; reg->valid.height = reg->window->height; reg->bpl = VIPS_IMAGE_SIZEOF_LINE( image ); reg->data = reg->window->data; } else { vips_error( "VipsRegion", "%s", _( "bad image type" ) ); return( -1 ); } return( 0 ); } /** * vips_region_region: * @reg: region to operate upon * @dest: region to connect to * @r: #VipsRect of pixels you need to be able to address * @x: postion of @r in @dest * @y: postion of @r in @dest * * Make VIPS_REGION_ADDR() on @reg go to @dest instead. * * @r is the part of @reg which you want to be able to address (this * effectively becomes the valid field), (@x, @y) is the top LH corner of the * corresponding area in @dest. * * Performs all clipping necessary to ensure that @reg->valid is indeed * valid. * * If the region we attach to is modified, we can be left with dangling * pointers! If the region we attach to is on another image, the two images * must have * the same sizeof( pel ). * * Returns: 0 on success, or -1 for error. */ int vips_region_region( VipsRegion *reg, VipsRegion *dest, VipsRect *r, int x, int y ) { VipsRect image; VipsRect wanted; VipsRect clipped; VipsRect clipped2; VipsRect final; /* Sanity check. */ if( !dest->data ) { vips_error( "VipsRegion", "%s", _( "no pixel data on attached image" ) ); return( -1 ); } if( VIPS_IMAGE_SIZEOF_PEL( dest->im ) != VIPS_IMAGE_SIZEOF_PEL( reg->im ) ) { vips_error( "VipsRegion", "%s", _( "images do not match in pixel size" ) ); return( -1 ); } vips__region_check_ownership( reg ); /* We can't test g_assert( dest->thread == g_thread_self() ); * since we can have several threads writing to the same region in * threadgroup. */ /* Clip r against size of the image. */ image.top = 0; image.left = 0; image.width = reg->im->Xsize; image.height = reg->im->Ysize; vips_rect_intersectrect( r, &image, &clipped ); /* Translate to dest's coordinate space and clip against the available * pixels. */ wanted.left = x + (clipped.left - r->left); wanted.top = y + (clipped.top - r->top); wanted.width = clipped.width; wanted.height = clipped.height; /* Test that dest->valid is large enough. */ if( !vips_rect_includesrect( &dest->valid, &wanted ) ) { vips_error( "VipsRegion", "%s", _( "dest too small" ) ); return( -1 ); } /* Clip against the available pixels. */ vips_rect_intersectrect( &wanted, &dest->valid, &clipped2 ); /* Translate back to reg's coordinate space and set as valid. */ final.left = r->left + (clipped2.left - wanted.left); final.top = r->top + (clipped2.top - wanted.top); final.width = clipped2.width; final.height = clipped2.height; /* Test for empty. */ if( vips_rect_isempty( &final ) ) { vips_error( "VipsRegion", "%s", _( "valid clipped to nothing" ) ); return( -1 ); } /* Init new stuff. */ VIPS_FREEF( vips_buffer_unref, reg->buffer ); VIPS_FREEF( vips_window_unref, reg->window ); reg->invalid = FALSE; reg->valid = final; reg->bpl = dest->bpl; reg->data = VIPS_REGION_ADDR( dest, clipped2.left, clipped2.top ); reg->type = VIPS_REGION_OTHER_REGION; return( 0 ); } /** * vips_region_equalsregion: * @reg1: region to test * @reg2: region to test * * Do two regions point to the same piece of image? ie. * * |[ * VIPS_REGION_ADDR( reg1, x, y ) == VIPS_REGION_ADDR( reg2, x, y ) && * *VIPS_REGION_ADDR( reg1, x, y ) == * *VIPS_REGION_ADDR( reg2, x, y ) for all x, y, reg1, reg2. * ]| * * Returns: non-zero on equality. */ int vips_region_equalsregion( VipsRegion *reg1, VipsRegion *reg2 ) { return( reg1->im == reg2->im && vips_rect_equalsrect( ®1->valid, ®2->valid ) && reg1->data == reg2->data ); } /** * vips_region_position: * @reg: region to operate upon * @x: position to move to * @y: position to move to * * Set the position of a region. This only affects reg->valid, ie. the way * pixels are addressed, not reg->data, the pixels which are addressed. Clip * against the size of the image. Do not allow negative positions, or * positions outside the image. * * Returns: 0 on success, or -1 for error. */ int vips_region_position( VipsRegion *reg, int x, int y ) { VipsRect req, image, clipped; /* Clip! */ image.top = 0; image.left = 0; image.width = reg->im->Xsize; image.height = reg->im->Ysize; req.top = y; req.left = x; req.width = reg->valid.width; req.height = reg->valid.height; vips_rect_intersectrect( &image, &req, &clipped ); if( x < 0 || y < 0 || vips_rect_isempty( &clipped ) ) { vips_error( "VipsRegion", "%s", _( "bad position" ) ); return( -1 ); } reg->valid = clipped; reg->invalid = FALSE; return( 0 ); } int vips_region_fill( VipsRegion *reg, VipsRect *r, VipsRegionFillFn fn, void *a ) { g_assert( reg->im->dtype == VIPS_IMAGE_PARTIAL ); g_assert( reg->im->generate_fn ); /* Should have local memory. */ if( vips_region_buffer( reg, r ) ) return( -1 ); /* Evaluate into or, if we've not got calculated pixels. */ if( !reg->buffer->done ) { if( fn( reg, a ) ) return( -1 ); /* Publish our results. */ if( reg->buffer ) vips_buffer_done( reg->buffer ); } return( 0 ); } #define FILL_LINE( TYPE, Q, N, V ) { \ int x; \ TYPE *QT = (TYPE *) Q; \ \ for( x = 0; x < (N); x++ ) \ QT[x] = (V); \ } /** * vips_region_paint: * @reg: region to operate upon * @r: area to paint * @value: value to paint * * Paints @value into @reg covering rectangle @r. For int images, @value is * passed to memset(), so it usually needs to be 0 or 255. For float images, * value is cast to a float and copied in to each band element. * * @r is clipped against * @reg->valid. * * See also: vips_region_black(). */ void vips_region_paint( VipsRegion *reg, VipsRect *r, int value ) { VipsRect clipped; vips_rect_intersectrect( r, ®->valid, &clipped ); if( !vips_rect_isempty( &clipped ) ) { VipsPel *q = VIPS_REGION_ADDR( reg, clipped.left, clipped.top ); size_t ls = VIPS_REGION_LSKIP( reg ); size_t wd = clipped.width * VIPS_IMAGE_SIZEOF_PEL( reg->im ); int y; if( vips_band_format_isint( reg->im->BandFmt ) ) { for( y = 0; y < clipped.height; y++ ) { memset( (char *) q, value, wd ); q += ls; } } else { gboolean iscomplex = vips_band_format_iscomplex( reg->im->BandFmt ); int nele = clipped.width * reg->im->Bands * (iscomplex ? 2 : 1); VipsPel *q1; switch( reg->im->BandFmt ) { case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: FILL_LINE( float, q, nele, value ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: FILL_LINE( double, q, nele, value ); break; default: g_assert_not_reached(); } q1 = q + ls; for( y = 1; y < clipped.height; y++ ) { memcpy( (char *) q1, (char *) q, wd ); q1 += ls; } } } } /** * vips_region_paint_pel: * @reg: region to operate upon * @r: area to paint * @ink: value to paint * * Paints @ink into @reg covering rectangle @r. @r is clipped against * @reg->valid. * * @ink should be a byte array of the same size as an image pixel containing * the binary value to write into the pixels. * * See also: vips_region_paint(). */ void vips_region_paint_pel( VipsRegion *reg, VipsRect *r, VipsPel *ink ) { VipsRect ovl; vips_rect_intersectrect( r, ®->valid, &ovl ); if( !vips_rect_isempty( &ovl ) ) { int ps = VIPS_IMAGE_SIZEOF_PEL( reg->im ); int ws = ovl.width * ps; int ls = VIPS_REGION_LSKIP( reg ); VipsPel *to, *q; int x, y, z; /* We plot the first line pointwise, then memcpy() it for the * subsequent lines. */ to = VIPS_REGION_ADDR( reg, ovl.left, ovl.top ); q = to; for( x = 0; x < ovl.width; x++ ) { /* Faster than memcpy() for about n<20. */ for( z = 0; z < ps; z++ ) q[z] = ink[z]; q += ps; } q = to + ls; for( y = 1; y < ovl.height; y++ ) { memcpy( q, to, ws ); q += ls; } } } /** * vips_region_black: * @reg: region to operate upon * * Paints 0 into the valid part of @reg. * * See also: vips_region_paint(). */ void vips_region_black( VipsRegion *reg ) { vips_region_paint( reg, ®->valid, 0 ); } /** * vips_region_copy: * @reg: source region * @dest: destination region * @r: #VipsRect of pixels you need to copy * @x: postion of @r in @dest * @y: postion of @r in @dest * * Copy from one region to another. Copy area @r from inside @reg to @dest, * positioning the area of pixels at @x, @y. The two regions must have pixels * which are the same size. * * See also: vips_region_paint(). */ void vips_region_copy( VipsRegion *reg, VipsRegion *dest, VipsRect *r, int x, int y ) { int z; int len = VIPS_IMAGE_SIZEOF_PEL( reg->im ) * r->width; VipsPel *p = VIPS_REGION_ADDR( reg, r->left, r->top ); VipsPel *q = VIPS_REGION_ADDR( dest, x, y ); int plsk = VIPS_REGION_LSKIP( reg ); int qlsk = VIPS_REGION_LSKIP( dest ); #ifdef DEBUG /* Find the area we will write to in dest. */ VipsRect output; printf( "vips_region_copy: sanity check\n" ); output.left = x; output.top = y; output.width = r->width; output.height = r->height; /* Must be inside dest->valid. */ g_assert( vips_rect_includesrect( &dest->valid, &output ) ); /* Check the area we are reading from in reg. */ g_assert( vips_rect_includesrect( ®->valid, r ) ); /* VipsPel size must be the same. */ g_assert( VIPS_IMAGE_SIZEOF_PEL( reg->im ) == VIPS_IMAGE_SIZEOF_PEL( dest->im ) ); #endif /*DEBUG*/ for( z = 0; z < r->height; z++ ) { memcpy( q, p, len ); p += plsk; q += qlsk; } } /* Generate area @target in @to using pixels in @from. * * VIPS_CODING_LABQ only. */ static void vips_region_shrink_labpack( VipsRegion *from, VipsRegion *to, VipsRect *target ) { int ls = VIPS_REGION_LSKIP( from ); int x, y; for( y = 0; y < target->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( from, target->left * 2, (target->top + y) * 2 ); VipsPel *q = VIPS_REGION_ADDR( to, target->left, target->top + y ); /* Ignore the extra bits for speed. */ for( x = 0; x < target->width; x++ ) { signed char *sp = (signed char *) p; unsigned char *up = (unsigned char *) p; int l = up[0] + up[4] + up[ls] + up[ls + 4]; int a = sp[1] + sp[5] + sp[ls + 1] + sp[ls + 5]; int b = sp[2] + sp[6] + sp[ls + 2] + sp[ls + 6]; q[0] = l >> 2; q[1] = a >> 2; q[2] = b >> 2; q[3] = 0; q += 4; p += 8; } } } #define SHRINK_TYPE_INT( TYPE ) \ for( x = 0; x < target->width; x++ ) { \ TYPE *tp = (TYPE *) p; \ TYPE *tp1 = (TYPE *) (p + ls); \ TYPE *tq = (TYPE *) q; \ \ for( z = 0; z < nb; z++ ) { \ int tot = tp[z] + tp[z + nb] + \ tp1[z] + tp1[z + nb]; \ \ tq[z] = tot >> 2; \ } \ \ /* Move on two pels in input. \ */ \ p += ps << 1; \ q += ps; \ } #define SHRINK_TYPE_FLOAT( TYPE ) \ for( x = 0; x < target->width; x++ ) { \ TYPE *tp = (TYPE *) p; \ TYPE *tp1 = (TYPE *) (p + ls); \ TYPE *tq = (TYPE *) q; \ \ for( z = 0; z < nb; z++ ) { \ double tot = tp[z] + tp[z + nb] + \ tp1[z] + tp1[z + nb]; \ \ tq[z] = tot / 4; \ } \ \ /* Move on two pels in input. \ */ \ p += ps << 1; \ q += ps; \ } /* Generate area @target in @to using pixels in @from. Non-complex. */ static void vips_region_shrink_uncoded( VipsRegion *from, VipsRegion *to, VipsRect *target ) { int ls = VIPS_REGION_LSKIP( from ); int ps = VIPS_IMAGE_SIZEOF_PEL( from->im ); int nb = from->im->Bands; int x, y, z; for( y = 0; y < target->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( from, target->left * 2, (target->top + y) * 2 ); VipsPel *q = VIPS_REGION_ADDR( to, target->left, target->top + y ); /* Process this line of pels. */ switch( from->im->BandFmt ) { case VIPS_FORMAT_UCHAR: SHRINK_TYPE_INT( unsigned char ); break; case VIPS_FORMAT_CHAR: SHRINK_TYPE_INT( signed char ); break; case VIPS_FORMAT_USHORT: SHRINK_TYPE_INT( unsigned short ); break; case VIPS_FORMAT_SHORT: SHRINK_TYPE_INT( signed short ); break; case VIPS_FORMAT_UINT: SHRINK_TYPE_INT( unsigned int ); break; case VIPS_FORMAT_INT: SHRINK_TYPE_INT( signed int ); break; case VIPS_FORMAT_FLOAT: SHRINK_TYPE_FLOAT( float ); break; case VIPS_FORMAT_DOUBLE: SHRINK_TYPE_FLOAT( double ); break; default: g_assert_not_reached(); } } } /** * vips_region_shrink: * @from: source region * @to: destination region * @target: #VipsRect of pixels you need to copy * * Write the pixels @target in @to from the x2 larger area in @from. * Non-complex uncoded images and LABQ only. * * See also: vips_region_copy(). */ int vips_region_shrink( VipsRegion *from, VipsRegion *to, VipsRect *target ) { VipsImage *image = from->im; if( vips_check_coding_noneorlabq( "vips_region_shrink", image ) ) return( -1 ); if( from->im->Coding == VIPS_CODING_NONE ) { if( vips_check_noncomplex( "vips_region_shrink", image ) ) return( -1 ); vips_region_shrink_uncoded( from, to, target ); } else vips_region_shrink_labpack( from, to, target ); return( 0 ); } /* Generate into a region. */ static int vips_region_generate( VipsRegion *reg ) { VipsImage *im = reg->im; gboolean stop; /* Start new sequence, if necessary. */ if( vips__region_start( reg ) ) return( -1 ); /* Ask for evaluation. */ stop = FALSE; if( im->generate_fn( reg, reg->seq, im->client1, im->client2, &stop ) ) return( -1 ); if( stop ) { vips_error( "vips_region_generate", "%s", _( "stop requested" ) ); return( -1 ); } return( 0 ); } /** * vips_region_prepare: * @reg: region to prepare * @r: #VipsRect of pixels you need to be able to address * * vips_region_prepare() fills @reg with pixels. After calling, * you can address at least the area @r with VIPS_REGION_ADDR() and get * valid pixels. * * vips_region_prepare() runs in-line, that is, computation is done by * the calling thread, no new threads are involved, and computation * blocks until the pixels are ready. * * Use vips_sink_screen() to calculate an area of pixels in the * background. * * See also: vips_sink_screen(), * vips_region_prepare_to(). * * Returns: 0 on success, or -1 on error. */ int vips_region_prepare( VipsRegion *reg, VipsRect *r ) { VipsImage *im = reg->im; VipsRect save = *r; vips__region_check_ownership( reg ); if( vips_image_iskilled( im ) ) return( -1 ); /* We use save for sanity checking valid: we test at the end that the * pixels we have generated are indeed all the ones that were asked * for. * * However, r may be clipped by the image size, so we need to clip * save as well to make sure we don't fail the assert due to that. */ { VipsRect image; image.left = 0; image.top = 0; image.width = reg->im->Xsize; image.height = reg->im->Ysize; vips_rect_intersectrect( &save, &image, &save ); } #ifdef DEBUG printf( "vips_region_prepare: " "left = %d, top = %d, width = %d, height = %d\n", r->left, r->top, r->width, r->height ); #endif /*DEBUG*/ switch( im->dtype ) { case VIPS_IMAGE_PARTIAL: if( vips_region_fill( reg, r, (VipsRegionFillFn) vips_region_generate, NULL ) ) return( -1 ); break; case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENIN: /* Attach to existing buffer. */ if( vips_region_image( reg, r ) ) return( -1 ); break; default: vips_error( "vips_region_prepare", _( "unable to input from a %s image" ), vips_enum_string( VIPS_TYPE_DEMAND_STYLE, im->dtype ) ); return( -1 ); } /* valid should now include all the pixels that were asked for. */ g_assert( vips_rect_includesrect( ®->valid, &save ) ); return( 0 ); } /* We need to make pixels using reg's generate function, and write the result * to dest. */ static int vips_region_prepare_to_generate( VipsRegion *reg, VipsRegion *dest, VipsRect *r, int x, int y ) { IMAGE *im = reg->im; VipsPel *p; if( !im->generate_fn ) { vips_error( "vips_region_prepare_to", "%s", _( "incomplete header" ) ); return( -1 ); } if( vips_region_region( reg, dest, r, x, y ) ) return( -1 ); /* Remember where reg is pointing now. */ p = VIPS_REGION_ADDR( reg, reg->valid.left, reg->valid.top ); /* Run sequence into reg. */ if( vips_region_generate( reg ) ) return( -1 ); /* The generate function may not have actually made any pixels ... it * might just have redirected reg to point somewhere else. If it has, * we need an extra copy operation. */ if( VIPS_REGION_ADDR( reg, reg->valid.left, reg->valid.top ) != p ) vips_region_copy( reg, dest, r, x, y ); return( 0 ); } /** * vips_region_prepare_to: * @reg: region to prepare * @dest: region to write to * @r: #VipsRect of pixels you need to be able to address * @x: postion of @r in @dest * @y: postion of @r in @dest * * Like vips_region_prepare(): fill @reg with data, ready to be read from by * our caller. Unlike vips_region_prepare(), rather than allocating memory * local to @reg for the result, we guarantee that we will fill the pixels * in @dest at offset @x, @y. In other words, we generate an extra copy * operation if necessary. * * Also unlike vips_region_prepare(), @dest is not set up for writing for * you with * vips_region_buffer(). You can * point @dest at anything, and pixels really will be written there. * This makes vips_region_prepare_to() useful for making the ends of * pipelines, since * it (effectively) makes a break in the pipe. * * See also: vips_region_prepare(), vips_sink_disc(). * * Returns: 0 on success, or -1 on error */ int vips_region_prepare_to( VipsRegion *reg, VipsRegion *dest, VipsRect *r, int x, int y ) { VipsImage *im = reg->im; VipsRect image; VipsRect wanted; VipsRect clipped; VipsRect clipped2; VipsRect final; if( vips_image_iskilled( im ) ) return( -1 ); /* Sanity check. */ if( !dest->data || dest->im->BandFmt != reg->im->BandFmt || dest->im->Bands != reg->im->Bands ) { vips_error( "vips_region_prepare_to", "%s", _( "inappropriate region type" ) ); return( -1 ); } /* clip r first against the size of reg->im, then again against the * memory we have available to write to on dest. Just like * vips_region_region() */ image.top = 0; image.left = 0; image.width = reg->im->Xsize; image.height = reg->im->Ysize; vips_rect_intersectrect( r, &image, &clipped ); g_assert( clipped.left == r->left ); g_assert( clipped.top == r->top ); wanted.left = x + (clipped.left - r->left); wanted.top = y + (clipped.top - r->top); wanted.width = clipped.width; wanted.height = clipped.height; /* Test that dest->valid is large enough. */ if( !vips_rect_includesrect( &dest->valid, &wanted ) ) { vips_error( "vips_region_prepare_to", "%s", _( "dest too small" ) ); return( -1 ); } vips_rect_intersectrect( &wanted, &dest->valid, &clipped2 ); /* Translate back to reg's coordinate space and set as valid. */ final.left = r->left + (clipped2.left - wanted.left); final.top = r->top + (clipped2.top - wanted.top); final.width = clipped2.width; final.height = clipped2.height; x = clipped2.left; y = clipped2.top; if( vips_rect_isempty( &final ) ) { vips_error( "vips_region_prepare_to", "%s", _( "valid clipped to nothing" ) ); return( -1 ); } #ifdef DEBUG printf( "vips_region_prepare_to: " "left = %d, top = %d, width = %d, height = %d\n", final.left, final.top, final.width, final.height ); #endif /*DEBUG*/ /* Input or output image type? */ switch( im->dtype ) { case VIPS_IMAGE_OPENOUT: case VIPS_IMAGE_PARTIAL: /* We are generating with a sequence. */ if( vips_region_prepare_to_generate( reg, dest, &final, x, y ) ) return( -1 ); break; case VIPS_IMAGE_MMAPIN: case VIPS_IMAGE_MMAPINRW: case VIPS_IMAGE_OPENIN: /* Attach to existing buffer and copy to dest. */ if( vips_region_image( reg, &final ) ) return( -1 ); vips_region_copy( reg, dest, &final, x, y ); break; case VIPS_IMAGE_SETBUF: case VIPS_IMAGE_SETBUF_FOREIGN: /* Could be either input or output. If there is a generate * function, we are outputting. */ if( im->generate_fn ) { if( vips_region_prepare_to_generate( reg, dest, &final, x, y ) ) return( -1 ); } else { if( vips_region_image( reg, &final ) ) return( -1 ); vips_region_copy( reg, dest, &final, x, y ); } break; default: vips_error( "vips_region_prepare_to", _( "unable to input from a %s image" ), vips_enum_nick( VIPS_TYPE_DEMAND_STYLE, im->dtype ) ); return( -1 ); } /* We've written fresh pixels to dest, it's no longer invalid (if it * was). * * We need this extra thing here because, unlike * vips_region_prepare(), we don't vips_region_buffer() dest before * writing it. */ dest->invalid = FALSE; return( 0 ); } int vips_region_prepare_many( VipsRegion **reg, VipsRect *r ) { for( ; *reg; ++reg ) if( vips_region_prepare( *reg, r ) ) return( -1 ); return( 0 ); } /** * vips_region_invalidate: * @reg: region to invalidate * * Mark a region as containing invalid pixels. Calling this function means * that the next time vips_region_prepare() is called, the region will be * recalculated. * * This is faster than calling vips_image_invalidate_all(), but obviously only * affects a single region. * * See also: vips_image_invalidate_all(), vips_region_prepare(). */ void vips_region_invalidate( VipsRegion *reg ) { reg->invalid = TRUE; } #ifdef VIPS_DEBUG static void * vips_region_dump_all_cb( VipsRegion *region, size_t *alive ) { char str[2048]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_summary( VIPS_OBJECT( region ), &buf ); printf( "%s\n", vips_buf_all( &buf ) ); if( region->buffer && region->buffer->buf ) *alive += region->buffer->bsize; return( NULL ); } void vips_region_dump_all( void ) { size_t alive; g_mutex_lock( vips__global_lock ); alive = 0; printf( "%d regions in vips\n", g_slist_length( vips__regions_all ) ); vips_slist_map2( vips__regions_all, (VipsSListMap2Fn) vips_region_dump_all_cb, &alive, NULL ); printf( "%gMB alive\n", alive / (1024 * 1024.0) ); g_mutex_unlock( vips__global_lock ); } #endif /*VIPS_DEBUG*/ vips-8.2.2/libvips/iofuncs/cache.c0000664000175000017500000006061512571531237013772 00000000000000/* cache vips operations * * 20/6/12 * - try to make it compile on centos5 * 7/7/12 * - add a lock so we can run operations from many threads */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* TODO what about delayed writes ... do we ever write in close? we shouldn't, should do in evalend or written or somesuch use g_param_values_cmp() instead of value_equal()? */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #include /* Set by GOption from the command line, eg. "12m". */ char *vips__cache_max = NULL; char *vips__cache_max_mem = NULL; char *vips__cache_max_files = NULL; gboolean vips__cache_dump = FALSE; gboolean vips__cache_trace = FALSE; /* Max number of cached operations. * * It was 10,000, but this was too high for batch-style applications with * little reuse. */ static int vips_cache_max = 1000; /* How many tracked open files we allow before we start dropping cache. */ static int vips_cache_max_files = 100; /* How much RAM we spend on caches before we start dropping cached operations * ... default 100mb. * * It was 1gb, but that's a lot of memory for things like vipsthumbnail where * there will be (almost) no reuse. Default low and let apps raise it if it'd * be useful. */ static size_t vips_cache_max_mem = 100 * 1024 * 1024; /* Hold a ref to all "recent" operations. */ static GHashTable *vips_cache_table = NULL; /* A 'time' counter: increment on all cache ops. Use this to detect LRU. */ static int vips_cache_time = 0; /* Protect cache access with this. */ static GMutex *vips_cache_lock = NULL; /* Old versions of glib are missing these. When we abandon centos 5, switch to * g_int64_hash() and g_double_hash(). */ #define INT64_HASH(X) (g_direct_hash(X)) #define DOUBLE_HASH(X) (g_direct_hash(X)) /* Old glibs use g_value_get_char(), new ones g_value_get_schar(). */ #ifdef HAVE_VALUE_GET_SCHAR #define VIPS_VALUE_GET_CHAR g_value_get_schar #else #define VIPS_VALUE_GET_CHAR g_value_get_char #endif /* A cache entry. */ typedef struct _VipsOperationCacheEntry { VipsOperation *operation; /* When we added this operation to cache .. used to find LRU for * flush. */ int time; /* We listen for "invalidate" from the operation. Track the id here so * we can disconnect when we drop an operation. */ gulong invalidate_id; } VipsOperationCacheEntry; /* Pass in the pspec so we can get the generic type. For example, a * held in a GParamSpec allowing OBJECT, but the value could be of type * VipsImage. generics are much faster to compare. */ static unsigned int vips_value_hash( GParamSpec *pspec, GValue *value ) { GType generic = G_PARAM_SPEC_TYPE( pspec ); /* Not compile-time constants, so we have to use a set of if()s. Could * make a table at run time I guess. */ if( generic == G_TYPE_PARAM_BOOLEAN ) return( (unsigned int) g_value_get_boolean( value ) ); else if( generic == G_TYPE_PARAM_CHAR ) return( (unsigned int) VIPS_VALUE_GET_CHAR( value ) ); else if( generic == G_TYPE_PARAM_UCHAR ) return( (unsigned int) g_value_get_uchar( value ) ); else if( generic == G_TYPE_PARAM_INT ) return( (unsigned int) g_value_get_int( value ) ); else if( generic == G_TYPE_PARAM_UINT ) return( (unsigned int) g_value_get_uint( value ) ); else if( generic == G_TYPE_PARAM_LONG ) return( (unsigned int) g_value_get_long( value ) ); else if( generic == G_TYPE_PARAM_ULONG ) return( (unsigned int) g_value_get_ulong( value ) ); else if( generic == G_TYPE_PARAM_ENUM ) return( (unsigned int) g_value_get_enum( value ) ); else if( generic == G_TYPE_PARAM_FLAGS ) return( (unsigned int) g_value_get_flags( value ) ); else if( generic == G_TYPE_PARAM_UINT64 ) { guint64 i = g_value_get_uint64( value ); return( INT64_HASH( (gint64 *) &i ) ); } else if( generic == G_TYPE_PARAM_INT64 ) { gint64 i = g_value_get_int64( value ); return( INT64_HASH( &i ) ); } else if( generic == G_TYPE_PARAM_FLOAT ) { float f = g_value_get_float( value ); return( g_direct_hash( (void *) &f ) ); } else if( generic == G_TYPE_PARAM_DOUBLE ) { double d = g_value_get_double( value ); return( DOUBLE_HASH( &d ) ); } else if( generic == G_TYPE_PARAM_STRING ) { const char *s = g_value_get_string( value ); return( s ? g_str_hash( s ) : 0 ); } else if( generic == G_TYPE_PARAM_BOXED ) { void *p = g_value_get_boxed( value ); return( p ? g_direct_hash( p ) : 0 ); } else if( generic == G_TYPE_PARAM_POINTER ) { void *p = g_value_get_pointer( value ); return( p ? g_direct_hash( p ) : 0 ); } else if( generic == G_TYPE_PARAM_OBJECT ) { void *p = g_value_get_object( value ); return( p ? g_direct_hash( p ) : 0 ); } else { /* Fallback: convert to a string and hash that. * This is very slow, print a warning if we use it * so we can add another case. */ char *s; unsigned int hash; s = g_strdup_value_contents( value ); hash = g_str_hash( s ); printf( "vips_value_hash: no case for %s\n", s ); printf( "\ttype %d, %s\n", (int) G_VALUE_TYPE( value ), g_type_name( G_VALUE_TYPE( value ) ) ); printf( "\tgeneric %d, %s\n", (int) G_VALUE_TYPE( generic ), g_type_name( generic ) ); g_free( s ); return( hash ); } } /* Pass in the pspec so we can get the generic type. For example, a * value could be held in a GParamSpec allowing OBJECT, but the value * could be of type VipsImage. generics are much faster to compare. */ static gboolean vips_value_equal( GParamSpec *pspec, GValue *v1, GValue *v2 ) { GType generic = G_PARAM_SPEC_TYPE( pspec ); GType t1 = G_VALUE_TYPE( v1 ); GType t2 = G_VALUE_TYPE( v2 ); if( t1 != t2 ) return( FALSE ); /* Not compile-time constants, so we have to use a set of if()s. Could * make a table at run time I guess. */ if( generic == G_TYPE_PARAM_BOOLEAN ) return( g_value_get_boolean( v1 ) == g_value_get_boolean( v2 ) ); else if( generic == G_TYPE_PARAM_CHAR ) return( VIPS_VALUE_GET_CHAR( v1 ) == VIPS_VALUE_GET_CHAR( v2 ) ); if( generic == G_TYPE_PARAM_UCHAR ) return( g_value_get_uchar( v1 ) == g_value_get_uchar( v2 ) ); if( generic == G_TYPE_PARAM_INT ) return( g_value_get_int( v1 ) == g_value_get_int( v2 ) ); if( generic == G_TYPE_PARAM_UINT ) return( g_value_get_uint( v1 ) == g_value_get_uint( v2 ) ); if( generic == G_TYPE_PARAM_LONG ) return( g_value_get_long( v1 ) == g_value_get_long( v2 ) ); if( generic == G_TYPE_PARAM_ULONG ) return( g_value_get_ulong( v1 ) == g_value_get_ulong( v2 ) ); if( generic == G_TYPE_PARAM_ENUM ) return( g_value_get_enum( v1 ) == g_value_get_enum( v2 ) ); if( generic == G_TYPE_PARAM_FLAGS ) return( g_value_get_flags( v1 ) == g_value_get_flags( v2 ) ); if( generic == G_TYPE_PARAM_UINT64 ) return( g_value_get_uint64( v1 ) == g_value_get_uint64( v2 ) ); if( generic == G_TYPE_PARAM_INT64 ) return( g_value_get_int64( v1 ) == g_value_get_int64( v2 ) ); if( generic == G_TYPE_PARAM_FLOAT ) return( g_value_get_float( v1 ) == g_value_get_float( v2 ) ); if( generic == G_TYPE_PARAM_DOUBLE ) return( g_value_get_double( v1 ) == g_value_get_double( v2 ) ); if( generic == G_TYPE_PARAM_STRING ) { const char *s1 = g_value_get_string( v1 ); const char *s2 = g_value_get_string( v2 ); if( s1 == s2 ) return( TRUE ); else return( s1 && s2 && strcmp( s1, s2 ) == 0 ); } if( generic == G_TYPE_PARAM_BOXED ) return( g_value_get_boxed( v1 ) == g_value_get_boxed( v2 ) ); if( generic == G_TYPE_PARAM_POINTER ) return( g_value_get_pointer( v1 ) == g_value_get_pointer( v2 ) ); if( generic == G_TYPE_PARAM_OBJECT ) return( g_value_get_object( v1 ) == g_value_get_object( v2 ) ); else { /* Fallback: convert to a string and compare that. * This is very slow, print a warning if we use it * so we can add another case. */ char *s1; char *s2; gboolean equal; s1 = g_strdup_value_contents( v1 ); s2 = g_strdup_value_contents( v2 ); equal = strcmp( s1, s2 ) == 0; printf( "vips_value_equal: no case for %s, %s\n", s1, s2 ); printf( "\tt1 %d, %s\n", (int) t1, g_type_name( t1 ) ); printf( "\tt2 %d, %s\n", (int) t2, g_type_name( t2 ) ); printf( "\tgeneric %d, %s\n", (int) G_VALUE_TYPE( generic ), g_type_name( generic ) ); g_free( s1 ); g_free( s2 ); return( equal ); } } static void * vips_object_hash_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { unsigned int *hash = (unsigned int *) a; if( (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_INPUT) && argument_instance->assigned ) { const char *name = g_param_spec_get_name( pspec ); GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue value = { 0, }; g_value_init( &value, type ); g_object_get_property( G_OBJECT( object ), name, &value ); *hash = (*hash << 1) ^ vips_value_hash( pspec, &value ); g_value_unset( &value ); } return( NULL ); } /* Find a hash from the input arguments to a VipsOperstion. */ static unsigned int vips_operation_hash( VipsOperation *operation ) { if( !operation->found_hash ) { guint hash; /* Include the operation type in the hash. */ hash = (guint) G_OBJECT_TYPE( operation ); (void) vips_argument_map( VIPS_OBJECT( operation ), vips_object_hash_arg, &hash, NULL ); /* Make sure we can't have a zero hash value. */ hash |= 1; operation->hash = hash; operation->found_hash = TRUE; } return( operation->hash ); } static void * vips_object_equal_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsObject *other = (VipsObject *) a; const char *name = g_param_spec_get_name( pspec ); GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); GValue v1 = { 0, }; GValue v2 = { 0, }; gboolean equal; /* Only test assigned input constructor args. */ if( !(argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) || !(argument_class->flags & VIPS_ARGUMENT_INPUT) || !argument_instance->assigned ) return( NULL ); /* If this is an optional arg, we need to check that this was * assigned on @other as well. */ if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) && !vips_object_argument_isset( other, name ) ) /* Optional and was not set on other ... we've found a * difference! */ return( object ); g_value_init( &v1, type ); g_value_init( &v2, type ); g_object_get_property( G_OBJECT( object ), name, &v1 ); g_object_get_property( G_OBJECT( other ), name, &v2 ); equal = vips_value_equal( pspec, &v1, &v2 ); g_value_unset( &v1 ); g_value_unset( &v2 ); /* Stop (return non-NULL) if we've found a difference. */ return( !equal ? object : NULL ); } /* Are two objects equal, ie. have the same inputs. */ static gboolean vips_operation_equal( VipsOperation *a, VipsOperation *b ) { if( a == b ) return( TRUE ); if( G_OBJECT_TYPE( a ) == G_OBJECT_TYPE( b ) && vips_operation_hash( a ) == vips_operation_hash( b ) && !vips_argument_map( VIPS_OBJECT( a ), vips_object_equal_arg, b, NULL ) ) return( TRUE ); return( FALSE ); } void vips__cache_init( void ) { if( !vips_cache_table ) { vips_cache_lock = vips_g_mutex_new(); vips_cache_table = g_hash_table_new( (GHashFunc) vips_operation_hash, (GEqualFunc) vips_operation_equal ); if( vips__cache_max ) vips_cache_max = vips__parse_size( vips__cache_max ); if( vips__cache_max_mem ) vips_cache_max_mem = vips__parse_size( vips__cache_max_mem ); if( vips__cache_max_files ) vips_cache_max_files = vips__parse_size( vips__cache_max_files ); } } static void * vips_cache_print_fn( void *value, void *a, void *b ) { VipsOperationCacheEntry *entry = value; char str[32768]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_to_string( VIPS_OBJECT( entry->operation ), &buf ); printf( "%p - %s\n", value, vips_buf_all( &buf ) ); return( NULL ); } /** * vips_cache_print: * * Print the whole operation cache to stdout. Handy for debugging. */ void vips_cache_print( void ) { g_mutex_lock( vips_cache_lock ); if( vips_cache_table ) { printf( "Operation cache:\n" ); vips_hash_table_map( vips_cache_table, vips_cache_print_fn, NULL, NULL ); } g_mutex_unlock( vips_cache_lock ); } static void * vips_object_unref_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { if( (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_OUTPUT) && argument_instance->assigned && G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject *value; /* This will up the ref count for us. */ g_object_get( G_OBJECT( object ), g_param_spec_get_name( pspec ), &value, NULL ); /* Drop the ref we just got, then drop the ref we make when we * added to the cache. */ g_object_unref( value ); g_object_unref( value ); } return( NULL ); } static void vips_cache_unref( VipsOperation *operation ) { (void) vips_argument_map( VIPS_OBJECT( operation ), vips_object_unref_arg, NULL, NULL ); g_object_unref( operation ); } /* Remove an operation from the cache. */ static void vips_cache_remove( VipsOperation *operation ) { VipsOperationCacheEntry *entry = (VipsOperationCacheEntry *) g_hash_table_lookup( vips_cache_table, operation ); g_assert( entry ); if( entry->invalidate_id ) { g_signal_handler_disconnect( operation, entry->invalidate_id ); entry->invalidate_id = 0; } g_hash_table_remove( vips_cache_table, operation ); vips_cache_unref( operation ); g_free( entry ); } static void * vips_object_ref_arg( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { if( (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_OUTPUT) && argument_instance->assigned && G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject *value; /* This will up the ref count for us. */ g_object_get( G_OBJECT( object ), g_param_spec_get_name( pspec ), &value, NULL ); } return( NULL ); } static void vips_operation_touch( VipsOperation *operation ) { VipsOperationCacheEntry *entry = (VipsOperationCacheEntry *) g_hash_table_lookup( vips_cache_table, operation ); vips_cache_time += 1; entry->time = vips_cache_time; } /* Ref an operation for the cache. The operation itself, plus all the output * objects it makes. */ static void vips_cache_ref( VipsOperation *operation ) { g_object_ref( operation ); (void) vips_argument_map( VIPS_OBJECT( operation ), vips_object_ref_arg, NULL, NULL ); vips_operation_touch( operation ); } static void vips_cache_insert( VipsOperation *operation ) { VipsOperationCacheEntry *entry = g_new( VipsOperationCacheEntry, 1 ); entry->operation = operation; entry->time = 0; entry->invalidate_id = 0; g_hash_table_insert( vips_cache_table, operation, entry ); vips_cache_ref( operation ); /* If the operation signals "invalidate", we must drop it. */ entry->invalidate_id = g_signal_connect( operation, "invalidate", G_CALLBACK( vips_cache_remove ), NULL ); } static void * vips_cache_get_first_fn( void *value, void *a, void *b ) { return( value ); } /* Return the first item. */ static VipsOperation * vips_cache_get_first( void ) { VipsOperationCacheEntry *entry; if( vips_cache_table && (entry = vips_hash_table_map( vips_cache_table, vips_cache_get_first_fn, NULL, NULL )) ) return( VIPS_OPERATION( entry->operation ) ); return( NULL ); } /** * vips_cache_drop_all: * * Drop the whole operation cache, handy for leak tracking. Also called * automatically on vips_shutdown(). */ void vips_cache_drop_all( void ) { g_mutex_lock( vips_cache_lock ); if( vips_cache_table ) { VipsOperation *operation; if( vips__cache_dump ) vips_cache_print(); /* We can't modify the hash in the callback from * g_hash_table_foreach() and friends. Repeatedly drop the * first item instead. */ while( (operation = vips_cache_get_first()) ) vips_cache_remove( operation ); VIPS_FREEF( g_hash_table_unref, vips_cache_table ); } g_mutex_unlock( vips_cache_lock ); } static void vips_cache_get_lru_cb( VipsOperation *key, VipsOperationCacheEntry *value, VipsOperationCacheEntry **best ) { if( !*best || (*best)->time > value->time ) *best = value; } /* Get the least-recently-used cache item. * * TODO ... will this be too expensive? probably not */ static VipsOperation * vips_cache_get_lru( void ) { VipsOperationCacheEntry *entry; entry = NULL; g_hash_table_foreach( vips_cache_table, (GHFunc) vips_cache_get_lru_cb, &entry ); if( entry ) return( entry->operation ); return( NULL ); } /* Is the cache full? Drop until it's not. */ static void vips_cache_trim( void ) { VipsOperation *operation; g_mutex_lock( vips_cache_lock ); while( vips_cache_table && (g_hash_table_size( vips_cache_table ) > vips_cache_max || vips_tracked_get_files() > vips_cache_max_files || vips_tracked_get_mem() > vips_cache_max_mem) && (operation = vips_cache_get_lru()) ) { #ifdef DEBUG printf( "vips_cache_trim: trimming %p\n", operation ); #endif /*DEBUG*/ vips_cache_remove( operation ); } g_mutex_unlock( vips_cache_lock ); } /** * vips_cache_operation_lookup: * @operation: (transfer none): pointer to operation to lookup * * Look up an unbuilt @operation in the cache. If we get a hit, ref and * return the old operation. If there's no hit, return NULL. * * Returns: (transfer full): the cache hit, if any. */ VipsOperation * vips_cache_operation_lookup( VipsOperation *operation ) { VipsOperationCacheEntry *hit; VipsOperation *result; g_assert( VIPS_IS_OPERATION( operation ) ); g_assert( !VIPS_OBJECT( operation )->constructed ); #ifdef VIPS_DEBUG printf( "vips_cache_operation_lookup: " ); vips_object_print_dump( VIPS_OBJECT( operation ) ); #endif /*VIPS_DEBUG*/ g_mutex_lock( vips_cache_lock ); result = NULL; if( (hit = g_hash_table_lookup( vips_cache_table, operation )) ) { if( vips__cache_trace ) { printf( "vips cache*: " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); } result = hit->operation; vips_cache_ref( result ); } g_mutex_unlock( vips_cache_lock ); return( result ); } /** * vips_cache_operation_add: * @operation: (transfer none): pointer to operation to add * * Add a built operation to the cache. The cache will ref the operation. */ void vips_cache_operation_add( VipsOperation *operation ) { g_assert( VIPS_OBJECT( operation )->constructed ); g_mutex_lock( vips_cache_lock ); /* If two threads call the same operation at the same time, * we can get multiple adds. Let the first one win. See * https://github.com/jcupitt/libvips/pull/181 */ if( !g_hash_table_lookup( vips_cache_table, operation ) ) { VipsOperationFlags flags = vips_operation_get_flags( operation ); gboolean nocache = flags & VIPS_OPERATION_NOCACHE; /* Has to be after _build() so we can see output args. */ if( vips__cache_trace ) { if( nocache ) printf( "vips cache : " ); else printf( "vips cache+: " ); vips_object_print_summary( VIPS_OBJECT( operation ) ); } if( !nocache ) vips_cache_insert( operation ); } g_mutex_unlock( vips_cache_lock ); vips_cache_trim(); } /** * vips_cache_operation_buildp: (skip) * @operation: pointer to operation to lookup * * Look up @operation in the cache. If we get a hit, unref @operation, ref the * old one and return that through the argument pointer. * * If we miss, build and add @operation. * * Returns: 0 on success, or -1 on error. */ int vips_cache_operation_buildp( VipsOperation **operation ) { VipsOperation *hit; g_assert( VIPS_IS_OPERATION( *operation ) ); #ifdef VIPS_DEBUG printf( "vips_cache_operation_buildp: " ); vips_object_print_dump( VIPS_OBJECT( *operation ) ); #endif /*VIPS_DEBUG*/ if( (hit = vips_cache_operation_lookup( *operation )) ) { g_object_unref( *operation ); *operation = hit; } else { if( vips_object_build( VIPS_OBJECT( *operation ) ) ) return( -1 ); vips_cache_operation_add( *operation ); } return( 0 ); } /** * vips_cache_operation_build: * @operation: (transfer none): operation to lookup * * A binding-friendly version of vips_cache_operation_buildp(). * * After calling this, @operation has the same ref count as when it went in, * and the result must be freed with vips_object_unref_outputs() and * g_object_unref(). * * Returns: (transfer full): The built operation. */ VipsOperation * vips_cache_operation_build( VipsOperation *operation ) { VipsOperation *orig_operation = operation; /* Stop it being unreffed for us on hit. */ g_object_ref( orig_operation ); if( vips_cache_operation_buildp( &operation ) ) { g_object_unref( orig_operation ); return( NULL ); } return( operation ); } /** * vips_cache_set_max: * @max: maximum number of operation to cache * * Set the maximum number of operations we keep in cache. */ void vips_cache_set_max( int max ) { vips_cache_max = max; vips_cache_trim(); } /** * vips_cache_set_max_mem: * @max_mem: maximum amount of tracked memory we use * * Set the maximum amount of tracked memory we allow before we start dropping * cached operations. See vips_tracked_get_mem(). * * See also: vips_tracked_get_mem(). */ void vips_cache_set_max_mem( size_t max_mem ) { vips_cache_max_mem = max_mem; vips_cache_trim(); } /** * vips_cache_get_max: * * Get the maximum number of operations we keep in cache. * * Returns: the maximum number of operations we keep in cache */ int vips_cache_get_max( void ) { return( vips_cache_max ); } /** * vips_cache_get_size: * * Get the current number of operations in cache. * * Returns: get the current number of operations in cache. */ int vips_cache_get_size( void ) { guint size; g_mutex_lock( vips_cache_lock ); size = 0; if( vips_cache_table ) size = g_hash_table_size( vips_cache_table ); g_mutex_unlock( vips_cache_lock ); return( size ); } /** * vips_cache_get_max_mem: * * Get the maximum amount of tracked memory we allow before we start dropping * cached operations. See vips_tracked_get_mem(). * * See also: vips_tracked_get_mem(). * * Returns: the maximum amount of tracked memory we allow */ size_t vips_cache_get_max_mem( void ) { return( vips_cache_max_mem ); } /** * vips_cache_get_max_files: * * Get the maximum number of tracked files we allow before we start dropping * cached operations. See vips_tracked_get_files(). * * See also: vips_tracked_get_files(). * * Returns: the maximum number of tracked files we allow */ int vips_cache_get_max_files( void ) { return( vips_cache_max_files ); } /** * vips_cache_set_max_files: * @max_files: max open files we allow * * Set the maximum number of tracked files we allow before we start dropping * cached operations. See vips_tracked_get_files(). * * See also: vips_tracked_get_files(). */ void vips_cache_set_max_files( int max_files ) { vips_cache_max_files = max_files; vips_cache_trim(); } /** * vips_cache_set_dump: * @dump: if %TRUE, dump the operation cache on exit * * Handy for debugging. Print the operation cache to stdout just before exit. * * See also: vips_cache_set_trace(). */ void vips_cache_set_dump( gboolean dump ) { vips__cache_dump = dump; } /** * vips_cache_set_trace: * @trace: if %TRUE, trace the operation cache * * Handy for debugging. Print operation cache actions to stdout as we run. * * See also: vips_cache_set_dump(). */ void vips_cache_set_trace( gboolean trace ) { vips__cache_trace = trace; } vips-8.2.2/libvips/iofuncs/vips.c0000664000175000017500000005422412530402247013700 00000000000000/* Read and write a vips file * * 22/5/08 * - from im_open.c, im_openin.c, im_desc_hd.c, im_readhist.c, * im_openout.c * 19/3/09 * - block mmaps of nodata images * 12/5/09 * - fix signed/unsigned warnings * 12/10/09 * - heh argh reading history always stopped after the first line * 9/12/09 * - only wholly map input files on im_incheck() ... this reduces VM use, * especially with large numbers of small files * 14/2/11 * - renamed to vips.c from im_open_vips.c, some stuff chopped out for * image.c ... this file now just does read / write to disc * 28/3/11 * - moved to vips_ namespace */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define SHOW_HEADER */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_SYS_FILE_H #include #endif /*HAVE_SYS_FILE_H*/ #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #ifdef HAVE_IO_H #include #endif /*HAVE_IO_H*/ #include #include #ifdef OS_WIN32 #include #endif /*OS_WIN32*/ #include #include #include /** * SECTION: vips * @short_description: startup, shutdown, version * @stability: Stable * @see_also: VipsOperation * @include: vips/vips.h * * Start VIPS up, shut VIPS down, get version information, relocation. * * VIPS is a relocatable package, meaning you can move the directory tree you * compiled it to at runtime and it will still be able to find all data files. * This is required for OS X and Windows, but slightly unusual in the Unix * world. See vips_init() and vips_guess_prefix(). */ /* Try to make an O_BINARY ... sometimes need the leading '_'. */ #ifdef BINARY_OPEN #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ #endif /*BINARY_OPEN*/ /* If we have O_BINARY, add it to a mode flags set. */ #ifdef O_BINARY #define BINARYIZE(M) ((M) | O_BINARY) #else /*!O_BINARY*/ #define BINARYIZE(M) (M) #endif /*O_BINARY*/ /* Open mode for image write ... on some systems, have to set BINARY too. * * We use O_RDWR not O_WRONLY since after writing we may want to rewind the * image and read from it. * */ #define MODE_WRITE BINARYIZE (O_RDWR | O_CREAT | O_TRUNC) /* Mode for read/write. This is if we might later want to mmaprw () the file. */ #define MODE_READWRITE BINARYIZE (O_RDWR) /* Mode for read only. This is the fallback if READWRITE fails. */ #define MODE_READONLY BINARYIZE (O_RDONLY) /* Our XML namespace. */ #define NAMESPACE "http://www.vips.ecs.soton.ac.uk/vips" /* Open for read for image files. */ int vips__open_image_read( const char *filename ) { int fd; /* Try to open read-write, so that calls to vips_image_inplace() will * work. When we later mmap this file, we set read-only, so there * is little danger of scrubbing over files we own. */ fd = vips_tracked_open( filename, MODE_READWRITE ); if( fd == -1 ) /* Open read-write failed. Fall back to open read-only. */ fd = vips_tracked_open( filename, MODE_READONLY ); if( fd == -1 ) { vips_error_system( errno, "VipsImage", _( "unable to open \"%s\"" ), filename ); return( -1 ); } return( fd ); } /* Open for write for image files. */ int vips__open_image_write( const char *filename, gboolean temp ) { int flags; int fd; flags = MODE_WRITE; #ifdef _O_TEMPORARY /* On Windows, setting O_TEMP gets the file automatically * deleted on process exit, even if the processes crashes. See * vips_image_rewind() for what we do to help on *nix. */ if( temp ) flags |= _O_TEMPORARY; #endif /*_O_TEMPORARY*/ if( (fd = vips_tracked_open( filename, flags, 0666 )) < 0 ) { vips_error_system( errno, "VipsImage", _( "unable to write to \"%s\"" ), filename ); return( -1 ); } return( fd ); } /* Predict the size of the header plus pixel data. Don't use off_t, * it's sometimes only 32 bits (eg. on many windows build environments) and we * want to always be 64 bit. */ static gint64 image_pixel_length( VipsImage *image ) { gint64 psize; switch( image->Coding ) { case VIPS_CODING_LABQ: case VIPS_CODING_RAD: case VIPS_CODING_NONE: psize = VIPS_IMAGE_SIZEOF_IMAGE( image ); break; default: psize = image->Length; break; } return( psize + image->sizeof_header ); } /* Copy 2 and 4 bytes, optionally swapping byte order. */ void vips__copy_4byte( int swap, unsigned char *to, unsigned char *from ) { guint32 *in = (guint32 *) from; guint32 *out = (guint32 *) to; if( swap ) *out = GUINT32_SWAP_LE_BE( *in ); else *out = *in; } void vips__copy_2byte( gboolean swap, unsigned char *to, unsigned char *from ) { guint16 *in = (guint16 *) from; guint16 *out = (guint16 *) to; if( swap ) *out = GUINT16_SWAP_LE_BE( *in ); else *out = *in; } guint32 vips__file_magic( const char *filename ) { guint32 magic; if( vips__get_bytes( filename, (unsigned char *) &magic, 4 ) && (magic == VIPS_MAGIC_INTEL || magic == VIPS_MAGIC_SPARC ) ) return( magic ); return( 0 ); } /* offset, read, write functions. */ typedef struct _FieldIO { glong offset; int size; void (*copy)( gboolean swap, unsigned char *to, unsigned char *from ); } FieldIO; static FieldIO fields[] = { { G_STRUCT_OFFSET( VipsImage, Xsize ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Ysize ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Bands ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Bbits ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, BandFmt ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Coding ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Type ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Xres_float ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Yres_float ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Length ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Compression ), 2, vips__copy_2byte }, { G_STRUCT_OFFSET( VipsImage, Level ), 2, vips__copy_2byte }, { G_STRUCT_OFFSET( VipsImage, Xoffset ), 4, vips__copy_4byte }, { G_STRUCT_OFFSET( VipsImage, Yoffset ), 4, vips__copy_4byte } }; int vips__read_header_bytes( VipsImage *im, unsigned char *from ) { gboolean swap; int i; #ifdef SHOW_HEADER printf( "vips__read_header_bytes: file bytes:\n" ); for( i = 0; i < im->sizeof_header; i++ ) printf( "%2d - 0x%02x\n", i, from[i] ); #endif /*SHOW_HEADER*/ /* The magic number is always written MSB first, we may need to swap. */ vips__copy_4byte( !vips_amiMSBfirst(), (unsigned char *) &im->magic, from ); from += 4; if( im->magic != VIPS_MAGIC_INTEL && im->magic != VIPS_MAGIC_SPARC ) { vips_error( "VipsImage", _( "\"%s\" is not a VIPS image" ), im->filename ); return( -1 ); } /* We need to swap for other fields if the file byte order is * different from ours. */ swap = vips_amiMSBfirst() != (im->magic == VIPS_MAGIC_SPARC); for( i = 0; i < VIPS_NUMBER( fields ); i++ ) { fields[i].copy( swap, &G_STRUCT_MEMBER( unsigned char, im, fields[i].offset ), from ); from += fields[i].size; } /* Set this ourselves ... bbits is deprecated in the file format. */ im->Bbits = vips_format_sizeof( im->BandFmt ) << 3; /* We read xres/yres as floats to a staging area, then copy to double * in the main fields. */ im->Xres = im->Xres_float; im->Yres = im->Yres_float; return( 0 ); } int vips__write_header_bytes( VipsImage *im, unsigned char *to ) { /* Swap if the byte order we are asked to write the header in is * different from ours. */ gboolean swap = vips_amiMSBfirst() != (im->magic == VIPS_MAGIC_SPARC); int i; unsigned char *q; /* We set xres/yres as floats in a staging area, then copy those * smaller values to the file. */ im->Xres_float = im->Xres; im->Yres_float = im->Yres; /* Always write the magic number MSB first. */ vips__copy_4byte( !vips_amiMSBfirst(), to, (unsigned char *) &im->magic ); q = to + 4; for( i = 0; i < VIPS_NUMBER( fields ); i++ ) { fields[i].copy( swap, q, &G_STRUCT_MEMBER( unsigned char, im, fields[i].offset ) ); q += fields[i].size; } /* Pad spares with zeros. */ while( q - to < im->sizeof_header ) *q++ = 0; #ifdef SHOW_HEADER printf( "vips__write_header_bytes: file bytes:\n" ); for( i = 0; i < im->sizeof_header; i++ ) printf( "%2d - 0x%02x\n", i, to[i] ); #endif /*SHOW_HEADER*/ return( 0 ); } /* Read a chunk of an fd into memory. Add a '\0' at the end. */ static char * read_chunk( int fd, gint64 offset, size_t length ) { char *buf; if( vips__seek( fd, offset ) ) return( NULL ); if( !(buf = vips_malloc( NULL, length + 1 )) ) return( NULL ); if( read( fd, buf, length ) != (ssize_t) length ) { vips_free( buf ); vips_error( "VipsImage", "%s", _( "unable to read history" ) ); return( NULL ); } buf[length] = '\0'; return( buf ); } /* Does it look like an image has an extension block? */ int vips__has_extension_block( VipsImage *im ) { gint64 psize; psize = image_pixel_length( im ); g_assert( im->file_length > 0 ); return( im->file_length - psize > 0 ); } /* Read everything after the pixels into memory. */ void * vips__read_extension_block( VipsImage *im, int *size ) { gint64 psize; void *buf; psize = image_pixel_length( im ); g_assert( im->file_length > 0 ); if( im->file_length - psize > 10 * 1024 * 1024 ) { vips_error( "VipsImage", "%s", _( "more than a 10 megabytes of XML? " "sufferin' succotash!" ) ); return( NULL ); } if( im->file_length - psize == 0 ) return( NULL ); if( !(buf = read_chunk( im->fd, psize, im->file_length - psize )) ) return( NULL ); if( size ) *size = im->file_length - psize; #ifdef DEBUG printf( "vips__read_extension_block: read %d bytes from %s\n", (int) (im->file_length - psize), im->filename ); printf( "data: \"%s\"\n", (char *) buf ); #endif /*DEBUG*/ return( buf ); } /* Read everything after the pixels into memory. FIXME ... why can't we use xmlParserInputBufferCreateFd and parse directly from the fd rather than having to read the stupid thing into memory the libxml API docs are impossible to decipher */ static xmlDoc * read_xml( VipsImage *im ) { void *buf; int size; xmlDoc *doc; xmlNode *node; if( !(buf = vips__read_extension_block( im, &size )) ) return( NULL ); if( !(doc = xmlParseMemory( buf, size )) ) { vips_free( buf ); return( NULL ); } vips_free( buf ); if( !(node = xmlDocGetRootElement( doc )) || !node->nsDef || !vips_isprefix( NAMESPACE, (char *) node->nsDef->href ) ) { vips_error( "VipsImage", "%s", _( "incorrect namespace in XML" ) ); xmlFreeDoc( doc ); return( NULL ); } #ifdef DEBUG printf( "read_xml: namespace == %s\n", node->nsDef->href ); #endif /*DEBUG*/ return( doc ); } /* Find the first child node with a name. */ static xmlNode * get_node( xmlNode *base, const char *name ) { xmlNode *i; for( i = base->children; i; i = i->next ) if( strcmp( (char *) i->name, name ) == 0 ) return( i ); return( NULL ); } /* Read a string property to a buffer. TRUE for success. */ static int get_sprop( xmlNode *xnode, const char *name, char *buf, int sz ) { char *value = (char *) xmlGetProp( xnode, (xmlChar *) name ); if( !value ) return( 0 ); vips_strncpy( buf, value, sz ); VIPS_FREEF( xmlFree, value ); return( 1 ); } /* Chop history into lines, add each one as a refstring. */ static void set_history( VipsImage *im, char *history ) { GSList *history_list; char *p, *q; /* There can be history there already if we're rewinding. */ VIPS_FREEF( vips__gslist_gvalue_free, im->history_list ); history_list = NULL; for( p = history; *p; p = q ) { if( (q = strchr( p, '\n' )) ) { *q = '\0'; q += 1; } else q = p + strlen( p ); history_list = g_slist_prepend( history_list, vips__gvalue_ref_string_new( p ) ); } im->history_list = g_slist_reverse( history_list ); } /* Load header fields. */ static int rebuild_header_builtin( VipsImage *im, xmlNode *i ) { char name[256]; if( get_sprop( i, "name", name, 256 ) ) { if( strcmp( name, "Hist" ) == 0 ) { char *history; /* Have to take (another) copy, since we need to free * with xmlFree(). */ history = (char *) xmlNodeGetContent( i ); set_history( im, history ); xmlFree( history ); } } return( 0 ); } /* Load meta fields. */ static int rebuild_header_meta( VipsImage *im, xmlNode *i ) { char name[256]; char type[256]; if( get_sprop( i, "name", name, 256 ) && get_sprop( i, "type", type, 256 ) ) { GType gtype = g_type_from_name( type ); /* Can we convert from VIPS_SAVE_STRING to type? */ if( gtype && g_value_type_transformable( VIPS_TYPE_SAVE_STRING, gtype ) ) { char *content; GValue save_value = { 0 }; GValue value = { 0 }; content = (char *) xmlNodeGetContent( i ); g_value_init( &save_value, VIPS_TYPE_SAVE_STRING ); vips_value_set_save_string( &save_value, content ); xmlFree( content ); g_value_init( &value, gtype ); if( !g_value_transform( &save_value, &value ) ) { g_value_unset( &save_value ); vips_error( "VipsImage", "%s", _( "error transforming from " "save format" ) ); return( -1 ); } vips_image_set( im, name, &value ); g_value_unset( &save_value ); g_value_unset( &value ); } } return( 0 ); } static xmlDoc * get_xml( VipsImage *im ) { if( vips_image_get_typeof( im, VIPS_META_XML ) ) { xmlDoc *doc; if( vips_image_get_area( im, VIPS_META_XML, (void *) &doc ) ) return( NULL ); return( doc ); } return( NULL ); } /* Rebuild header fields that depend on stuff saved in xml. */ static int rebuild_header( VipsImage *im ) { xmlDoc *doc; if( (doc = get_xml( im )) ) { xmlNode *root; xmlNode *block; if( !(root = xmlDocGetRootElement( doc )) ) return( -1 ); if( (block = get_node( root, "header" )) ) { xmlNode *i; for( i = block->children; i; i = i->next ) if( strcmp( (char *) i->name, "field" ) == 0 ) if( rebuild_header_builtin( im, i ) ) return( -1 ); } if( (block = get_node( root, "meta" )) ) { xmlNode *i; for( i = block->children; i; i = i->next ) if( strcmp( (char *) i->name, "field" ) == 0 ) if( rebuild_header_meta( im, i ) ) return( -1 ); } } return( 0 ); } /* Called at the end of vips open ... get any XML after the pixel data * and read it in. */ static int readhist( VipsImage *im ) { /* Junk any old xml meta. */ if( vips_image_get_typeof( im, VIPS_META_XML ) ) vips_image_set_area( im, VIPS_META_XML, NULL, NULL ); if( vips__has_extension_block( im ) ) { xmlDoc *doc; if( !(doc = read_xml( im )) ) return( -1 ); vips_image_set_area( im, VIPS_META_XML, (VipsCallbackFn) xmlFreeDoc, doc ); } if( rebuild_header( im ) ) return( -1 ); return( 0 ); } #define MAX_STRSIZE (32768) /* Max size of text for stack strings */ static int set_prop( xmlNode *node, const char *name, const char *fmt, ... ) { va_list ap; char value[MAX_STRSIZE]; va_start( ap, fmt ); (void) vips_vsnprintf( value, MAX_STRSIZE, fmt, ap ); va_end( ap ); if( !xmlSetProp( node, (xmlChar *) name, (xmlChar *) value ) ) { vips_error( "VipsImage", _( "unable to set property \"%s\" " "to value \"%s\"." ), name, value ); return( -1 ); } return( 0 ); } static int set_sprop( xmlNode *node, const char *name, const char *value ) { if( value && set_prop( node, name, "%s", value ) ) return( -1 ); return( 0 ); } static int set_field( xmlNode *node, const char *name, const char *type, const char *content ) { xmlNode *field; if( !(field = xmlNewChild( node, NULL, (xmlChar *) "field", NULL )) || set_sprop( field, "type", type ) || set_sprop( field, "name", name ) ) return( -1 ); xmlNodeSetContent( field, (xmlChar *) content ); return( 0 ); } static void * save_fields_meta( VipsMeta *meta, xmlNode *node ) { GType type = G_VALUE_TYPE( &meta->value ); /* If we can transform to VIPS_TYPE_SAVE_STRING and back, we can save * and restore. */ if( g_value_type_transformable( type, VIPS_TYPE_SAVE_STRING ) && g_value_type_transformable( VIPS_TYPE_SAVE_STRING, type ) ) { GValue save_value = { 0 }; g_value_init( &save_value, VIPS_TYPE_SAVE_STRING ); if( !g_value_transform( &meta->value, &save_value ) ) { vips_error( "VipsImage", "%s", _( "error transforming to save format" ) ); return( node ); } if( set_field( node, meta->field, g_type_name( type ), vips_value_get_save_string( &save_value ) ) ) { g_value_unset( &save_value ); return( node ); } g_value_unset( &save_value ); } return( NULL ); } static int save_fields( VipsImage *im, xmlNode *node ) { xmlNode *this; /* Save header fields. */ if( !(this = xmlNewChild( node, NULL, (xmlChar *) "header", NULL )) ) return( -1 ); if( set_field( this, "Hist", g_type_name( VIPS_TYPE_REF_STRING ), vips_image_get_history( im ) ) ) return( -1 ); if( !(this = xmlNewChild( node, NULL, (xmlChar *) "meta", NULL )) ) return( -1 ); if( im->meta_traverse && vips_slist_map2( im->meta_traverse, (VipsSListMap2Fn) save_fields_meta, this, NULL ) ) return( -1 ); return( 0 ); } int vips__write_extension_block( VipsImage *im, void *buf, int size ) { gint64 length; gint64 psize; psize = image_pixel_length( im ); if( (length = vips_file_length( im->fd )) == -1 ) return( -1 ); if( length - psize < 0 ) { vips_error( "VipsImage", "%s", _( "file has been truncated" ) ); return( -1 ); } if( vips__ftruncate( im->fd, psize ) || vips__seek( im->fd, psize ) ) return( -1 ); if( vips__write( im->fd, buf, size ) ) return( -1 ); #ifdef DEBUG printf( "vips__write_extension_block: written %d bytes of XML to %s\n", size, im->filename ); #endif /*DEBUG*/ return( 0 ); } /* Append XML to output fd. */ int vips__writehist( VipsImage *im ) { xmlDoc *doc; char namespace[256]; char *dump; int dump_size; assert( im->dtype == VIPS_IMAGE_OPENOUT ); assert( im->fd != -1 ); if( !(doc = xmlNewDoc( (xmlChar *) "1.0" )) ) return( -1 ); vips_snprintf( namespace, 256, "%s/%d.%d.%d", NAMESPACE, VIPS_MAJOR_VERSION, VIPS_MINOR_VERSION, VIPS_MICRO_VERSION ); if( !(doc->children = xmlNewDocNode( doc, NULL, (xmlChar *) "root", NULL )) || set_sprop( doc->children, "xmlns", namespace ) || save_fields( im, doc->children ) ) { vips_error( "VipsImage", "%s", _( "xml save error" ) ); xmlFreeDoc( doc ); return( -1 ); } xmlDocDumpFormatMemory( doc, (xmlChar **) &dump, &dump_size, 1 ); if( !dump ) { vips_error( "VipsImage", "%s", _( "xml save error" ) ); xmlFreeDoc( doc ); return( -1 ); } xmlFreeDoc( doc ); if( vips__write_extension_block( im, dump, dump_size ) ) { xmlFree( dump ); return( -1 ); } #ifdef DEBUG printf( "vips__writehist: saved XML is: \"%s\"", dump ); #endif /*DEBUG*/ xmlFree( dump ); return( 0 ); } /* Open the filename, read the header, some sanity checking. */ int vips_image_open_input( VipsImage *image ) { /* We don't use im->sizeof_header here, but we know we're reading a * VIPS image anyway. */ unsigned char header[VIPS_SIZEOF_HEADER]; gint64 psize; gint64 rsize; image->dtype = VIPS_IMAGE_OPENIN; /* We may have an fd already, see vips_image_rewind_output(). */ if( image->fd == -1 ) { image->fd = vips__open_image_read( image->filename ); if( image->fd == -1 ) return( -1 ); } vips__seek( image->fd, 0 ); if( read( image->fd, header, VIPS_SIZEOF_HEADER ) != VIPS_SIZEOF_HEADER || vips__read_header_bytes( image, header ) ) { vips_error_system( errno, "VipsImage", _( "unable to read header for \"%s\"" ), image->filename ); return( -1 ); } /* Predict and check the file size. */ psize = image_pixel_length( image ); if( (rsize = vips_file_length( image->fd )) == -1 ) return( -1 ); image->file_length = rsize; if( psize > rsize ) vips_warn( "VipsImage", _( "unable to read data for \"%s\", %s" ), image->filename, _( "file has been truncated" ) ); /* Set demand style. This suits a disc file we read sequentially. */ image->dhint = VIPS_DEMAND_STYLE_THINSTRIP; /* Set the history part of im descriptor. Don't return an error if this * fails (due to eg. corrupted XML) because it's probably mostly * harmless. */ if( readhist( image ) ) { vips_warn( "VipsImage", _( "error reading XML: %s" ), vips_error_buffer() ); vips_error_clear(); } return( 0 ); } int vips_image_open_output( VipsImage *image ) { if( image->fd == -1 ) { /* Don't use im->sizeof_header here, but we know we're * writing a VIPS image anyway. */ unsigned char header[VIPS_SIZEOF_HEADER]; if( (image->fd = vips__open_image_write( image->filename, image->delete_on_close )) < 0 ) return( -1 ); /* We always write in native mode, so we must overwrite the * magic we read from the file originally. */ image->magic = vips_amiMSBfirst() ? VIPS_MAGIC_SPARC : VIPS_MAGIC_INTEL; if( vips__write_header_bytes( image, header ) || vips__write( image->fd, header, VIPS_SIZEOF_HEADER ) ) return( -1 ); } return( 0 ); } vips-8.2.2/libvips/iofuncs/error.c0000664000175000017500000007570712623346763014076 00000000000000/* error.c --- error message handling * * Copyright: N. Dessipris * Written on: 18/03/1991 * Updated on: 9/7/92 KM * 20/12/2003 JC * - i18n added, domain now separate arg * 14/2/07 * - lock around error buffer changes * 20/2/08 * - lock around warnings and diagnostics too, why not * 2/10/09 * - error_exit() moved here * - gtkdoc comments * 24/6/10 * - fmt to error_exit() may be NULL */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define VIPS_DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #ifdef OS_WIN32 #include #include #endif /*OS_WIN32*/ /** * SECTION: error * @short_description: error messages and error handling * @stability: Stable * @include: vips/vips.h * * VIPS maintains an error buffer (a log of localised text messages), * a set of functions * for adding messages, and a way to access and clear the buffer. * * The error buffer is global, that is, it is shared between all threads. You * can add to the buffer from any thread (there is a lock to prevent * corruption), but it's sensible to only read and clear the buffer from the * main thread of execution. * * The general principle is: if you detect an error, log a message for the * user. If a function you call detects an error, just propogate it and don't * add another message. * * |[ * IMAGE *im; * * if( !(im = vips_image_new_from_file( filename, NULL )) ) * // vips_image_new_from_file() will set a message, we don't need to * return( -1 ); * * if( vips_image_get_width( im ) < 100 ) { * // we have detected an error, we must set a message * vips_error( "myprogram", "%s", _( "width too small" ) ); * return( -1 ); * } * ]| * * The domain argument most of these functions take is not localised and is * supposed to indicate the component which failed. */ /* Show info messages. Handy for debugging. */ int vips__info = 0; /* Make global array to keep the error message buffer. */ #define VIPS_MAX_ERROR (10240) static char vips_error_text[VIPS_MAX_ERROR] = ""; static VipsBuf vips_error_buf = VIPS_BUF_STATIC( vips_error_text ); static int vips_error_freeze_count = 0; /** * vips_error_freeze: * * Stop errors being logged. Use vips_error_thaw() to unfreeze. You can * nest freeze/thaw pairs. */ void vips_error_freeze( void ) { g_mutex_lock( vips__global_lock ); g_assert( vips_error_freeze_count >= 0 ); vips_error_freeze_count += 1; g_mutex_unlock( vips__global_lock ); } /** * vips_error_thaw: * * Reenable error logging. */ void vips_error_thaw( void ) { g_mutex_lock( vips__global_lock ); vips_error_freeze_count -= 1; g_assert( vips_error_freeze_count >= 0 ); g_mutex_unlock( vips__global_lock ); } /** * vips_error_buffer: * * Get a pointer to the start of the error buffer as a C string. * The string is owned by the error system and must not be freed. * * See also: vips_error_clear(). * * Returns: the error buffer as a C string which must not be freed */ const char * vips_error_buffer( void ) { const char *msg; g_mutex_lock( vips__global_lock ); msg = vips_buf_all( &vips_error_buf ); g_mutex_unlock( vips__global_lock ); return( msg ); } /* Some systems do not have va_copy() ... this might work (it does on MSVC), * apparently. * * FIXME ... this should be in configure.in */ #ifndef va_copy #define va_copy(d,s) ((d) = (s)) #endif /** * vips_verror: * @domain: the source of the error * @fmt: printf()-style format string for the error * @ap: arguments to the format string * * Append a message to the error buffer. * * See also: vips_error(). */ void vips_verror( const char *domain, const char *fmt, va_list ap ) { #ifdef VIPS_DEBUG { char txt[256]; VipsBuf buf = VIPS_BUF_STATIC( txt ); va_list ap2; vips_buf_appendf( &buf, "%s: ", domain ); va_copy( ap2, ap ); vips_buf_vappendf( &buf, fmt, ap2 ); vips_buf_appends( &buf, "\n" ); VIPS_DEBUG_MSG( "vips_verror: %s", vips_buf_all( &buf ) ); } #endif /*VIPS_DEBUG*/ g_mutex_lock( vips__global_lock ); g_assert( vips_error_freeze_count >= 0 ); if( !vips_error_freeze_count ) { if( domain ) vips_buf_appendf( &vips_error_buf, "%s: ", domain ); vips_buf_vappendf( &vips_error_buf, fmt, ap ); vips_buf_appends( &vips_error_buf, "\n" ); } g_mutex_unlock( vips__global_lock ); if( vips__fatal ) vips_error_exit( "vips__fatal" ); } /** * vips_error: * @domain: the source of the error * @fmt: printf()-style format string for the error * @...: arguments to the format string * * Format the string in the style of printf() and append to the error buffer. * * See also: vips_error_system(), vips_verror(). */ void vips_error( const char *domain, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); vips_verror( domain, fmt, ap ); va_end( ap ); } /** * vips_verror_system: * @err: the system error code * @domain: the source of the error * @fmt: printf()-style format string for the error * @ap: arguments to the format string * * Format the string in the style of printf() and append to the error buffer. * Then create and append a localised message based on the system error code, * usually the value of errno. * * See also: vips_error_system(). */ void vips_verror_system( int err, const char *domain, const char *fmt, va_list ap ) { vips_verror( domain, fmt, ap ); #ifdef OS_WIN32 { char *buf; if( FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), (LPSTR) &buf, 0, NULL ) ) { vips_error( _( "windows error" ), "%s", buf ); LocalFree( buf ); } } #else /*OS_WIN32*/ { char *buf; buf = g_locale_to_utf8( strerror( err ), -1, NULL, NULL, NULL ); vips_error( _( "unix error" ), "%s", buf ); g_free( buf ); } #endif /*OS_WIN32*/ } /** * vips_error_system: * @err: the system error code * @domain: the source of the error * @fmt: printf()-style format string for the error * @...: arguments to the format string * * Format the string in the style of printf() and append to the error buffer. * Then create and append a localised message based on the system error code, * usually the value of errno. * * See also: vips_verror_system(). */ void vips_error_system( int err, const char *domain, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); vips_verror_system( err, domain, fmt, ap ); va_end( ap ); } /** * vips_error_g: * @error: glib error pointer * * This function sets the glib error pointer from the vips error buffer and * clears it. It's handy for returning errors to glib functions from vips. * * See vips_g_error() for the inverse operation. * * See also: g_set_error(), vips_g_error(). */ void vips_error_g( GError **error ) { static GQuark vips_domain = 0; if( !vips_domain ) vips_domain = g_quark_from_string( "libvips" ); /* glib does not expect a trailing '\n' and vips always has one. */ g_mutex_lock( vips__global_lock ); vips_buf_removec( &vips_error_buf, '\n' ); g_mutex_unlock( vips__global_lock ); g_set_error( error, vips_domain, -1, "%s", vips_error_buffer() ); vips_error_clear(); } /** * vips_g_error: * @error: glib error pointer * * This function adds the %GError to the vips error buffer and clears it. It's * the opposite of vips_error_g(). * * See also: vips_error_g(). */ void vips_g_error( GError **error ) { if( error && *error ) { vips_error( "glib", "%s\n", (*error)->message ); g_error_free( *error ); *error = NULL; } } /** * vips_error_clear: * * Clear and reset the error buffer. This is typically called after presenting * an error to the user. * * See also: vips_error_buffer(). */ void vips_error_clear( void ) { g_mutex_lock( vips__global_lock ); vips_buf_rewind( &vips_error_buf ); g_mutex_unlock( vips__global_lock ); } /** * vips_info_set: * @info: %TRUE to enable info messages * * If set, vips will output various informative messages to stderr as it works. * * See also: vips_info(). */ void vips_info_set( gboolean info ) { vips__info = info; } /** * vips_vinfo: * @domain: the source of the message * @fmt: printf()-style format string for the message * @ap: arguments to the format string * * Sends a formatted informational message to stderr if the --vips-info flag * has been given to the program, or the environment variable VIPS_INFO has been * defined, or if vips_info_set() has been called. * * Informational messages are used to report details about the operation of * functions. * * See also: vips_info(), vips_info_set(), vips_warn(). */ void vips_vinfo( const char *domain, const char *fmt, va_list ap ) { if( vips__info ) { g_mutex_lock( vips__global_lock ); (void) fprintf( stderr, _( "%s: " ), _( "info" ) ); if( domain ) (void) fprintf( stderr, _( "%s: " ), domain ); (void) vfprintf( stderr, fmt, ap ); (void) fprintf( stderr, "\n" ); g_mutex_unlock( vips__global_lock ); } } /** * vips_info: * @domain: the source of the diagnostic message * @fmt: printf()-style format string for the message * @...: arguments to the format string * * Sends a formatted informational message to stderr if the --vips-info flag * has been given to the program or the environment variable VIPS_INFO has been * defined, or if vips_info_set() has been called. * * Informational messages are used to report details about the operation of * functions. * * See also: vips_info_set(), vips_vinfo(), vips_warn(). */ void vips_info( const char *domain, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); vips_vinfo( domain, fmt, ap ); va_end( ap ); } /** * vips_vwarn: * @domain: the source of the warning message * @fmt: printf()-style format string for the message * @ap: arguments to the format string * * Exactly as vips_warn(), but takes a va_list argument. * * See also: vips_warn(). */ void vips_vwarn( const char *domain, const char *fmt, va_list ap ) { if( !g_getenv( "IM_WARNING" ) && !g_getenv( "VIPS_WARNING" ) ) { g_mutex_lock( vips__global_lock ); (void) fprintf( stderr, _( "%s: " ), _( "vips warning" ) ); if( domain ) (void) fprintf( stderr, _( "%s: " ), domain ); (void) vfprintf( stderr, fmt, ap ); (void) fprintf( stderr, "\n" ); g_mutex_unlock( vips__global_lock ); } if( vips__fatal ) vips_error_exit( "vips__fatal" ); } /** * vips_warn: * @domain: the source of the warning message * @fmt: printf()-style format string for the message * @...: arguments to the format string * * Sends a formatted warning message to stderr. If you define the * environment variable VIPS_WARNING, these message are supressed. * * Warning messages are used to report things like overflow counts. * * See also: vips_info(), vips_vwarn(). */ void vips_warn( const char *domain, const char *fmt, ... ) { va_list ap; va_start( ap, fmt ); vips_vwarn( domain, fmt, ap ); va_end( ap ); } /** * vips_error_exit: * @fmt: printf()-style format string for the message * @...: arguments to the format string * * Sends a formatted error message to stderr, then sends the contents of the * error buffer, if any, then shuts down vips and terminates the program with * an error code. * * @fmt may be %NULL, in which case only the error buffer is printed before * exiting. * * See also: vips_error(). */ void vips_error_exit( const char *fmt, ... ) { if( fmt ) { va_list ap; fprintf( stderr, "%s: ", g_get_prgname() ); va_start( ap, fmt ); (void) vfprintf( stderr, fmt, ap ); va_end( ap ); fprintf( stderr, "\n" ); } fprintf( stderr, "%s", vips_error_buffer() ); vips_shutdown(); if( vips__fatal ) abort(); else exit( 1 ); } /** * vips_check_uncoded: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is not coded. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_uncoded( const char *domain, VipsImage *im ) { if( im->Coding != VIPS_CODING_NONE ) { vips_error( domain, "%s", _( "image must be uncoded" ) ); return( -1 ); } return( 0 ); } /** * vips_check_coding_noneorlabq: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is uncoded or LABQ coded. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_coding_noneorlabq( const char *domain, VipsImage *im ) { /* These all have codings that extract/ifthenelse/etc can ignore. */ if( im->Coding != VIPS_CODING_NONE && im->Coding != VIPS_CODING_LABQ ) { vips_error( domain, "%s", _( "image coding must be 'none' or 'labq'" ) ); return( -1 ); } return( 0 ); } /** * vips_check_coding_known: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is uncoded, LABQ coded or RAD coded. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_coding_known( const char *domain, VipsImage *im ) { /* These all have codings that extract/ifthenelse/etc can ignore. */ if( im->Coding != VIPS_CODING_NONE && im->Coding != VIPS_CODING_LABQ && im->Coding != VIPS_CODING_RAD ) { vips_error( domain, "%s", _( "unknown image coding" ) ); return( -1 ); } return( 0 ); } /** * vips_check_coding: * @domain: the originating domain for the error message * @im: image to check * @coding: required coding * * Check that the image has the required @coding. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_coding( const char *domain, VipsImage *im, VipsCoding coding ) { if( im->Coding != coding ) { vips_error( domain, _( "coding '%s' only" ), vips_enum_nick( VIPS_TYPE_CODING, coding ) ); return( -1 ); } return( 0 ); } /** * vips_check_mono: * @domain: the originating domain for the error message * @im: image to check * * Check that the image has exactly one band. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_mono( const char *domain, VipsImage *im ) { if( im->Bands != 1 ) { vips_error( domain, "%s", _( "image must one band" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bands: * @domain: the originating domain for the error message * @im: image to check * @bands: must have this many bands * * Check that the image has @bands bands. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bands( const char *domain, VipsImage *im, int bands ) { if( im->Bands != bands ) { vips_error( domain, _( "image must have %d bands" ), bands ); return( -1 ); } return( 0 ); } /** * vips_check_bands_1or3: * @domain: the originating domain for the error message * @im: image to check * * Check that the image has either one or three bands. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bands_1or3( const char *domain, VipsImage *im ) { if( im->Bands != 1 && im->Bands != 3 ) { vips_error( domain, "%s", _( "image must have one or three bands" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bands_atleast: * @domain: the originating domain for the error message * @im: image to check * @bands: at least this many bands * * Check that the image has at least @bands bands. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bands_atleast( const char *domain, VipsImage *im, int bands ) { if( im->Bands < bands ) { vips_error( domain, _( "image must have at least %d bands" ), bands ); return( -1 ); } return( 0 ); } /** * vips_check_bands_1orn: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same number of bands, or that one of the * images has just 1 band. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_bands_1orn( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->Bands != im2->Bands && (im1->Bands != 1 && im2->Bands != 1) ) { vips_error( domain, "%s", _( "images must have the same number of bands, " "or one must be single-band" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bands_1orn_unary: * @domain: the originating domain for the error message * @im: image to check * @n: number of bands, or 1 * * Check that an image has 1 or @n bands. Handy for unary operations, cf. * vips_check_bands_1orn(). * If not, set an error message * and return non-zero. * * See also: vips_check_bands_1orn(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_bands_1orn_unary( const char *domain, VipsImage *im, int n ) { if( im->Bands != 1 && im->Bands != n ) { vips_error( domain, _( "image must have 1 or %d bands" ), n ); return( -1 ); } return( 0 ); } /** * vips_check_noncomplex: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is not complex. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_noncomplex( const char *domain, VipsImage *im ) { if( vips_band_format_iscomplex( im->BandFmt ) ) { vips_error( domain, "%s", _( "image must be non-complex" ) ); return( -1 ); } return( 0 ); } /** * vips_check_complex: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is complex. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_complex( const char *domain, VipsImage *im ) { if( !vips_band_format_iscomplex( im->BandFmt ) ) { vips_error( domain, "%s", _( "image must be complex" ) ); return( -1 ); } return( 0 ); } /** * vips_check_twocomponents: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is has two "components", ie. is a one-band complex or * a two-band non-complex. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_twocomponents( const char *domain, VipsImage *im ) { if( !vips_band_format_iscomplex( im->BandFmt ) && im->Bands != 2 ) { vips_error( domain, "%s", _( "image must be two-band or complex" ) ); return( -1 ); } return( 0 ); } /** * vips_check_format: * @domain: the originating domain for the error message * @im: image to check * @fmt: format to test for * * Check that the image has the specified format. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_format( const char *domain, VipsImage *im, VipsBandFormat fmt ) { if( im->BandFmt != fmt ) { vips_error( domain, _( "image must be %s" ), vips_enum_string( VIPS_TYPE_BAND_FORMAT, fmt ) ); return( -1 ); } return( 0 ); } /** * vips_check_int: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is in one of the integer formats. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_int( const char *domain, VipsImage *im ) { if( !vips_band_format_isint( im->BandFmt ) ) { vips_error( domain, "%s", _( "image must be integer" ) ); return( -1 ); } return( 0 ); } /** * vips_check_uint: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is in one of the unsigned integer formats. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_uint( const char *domain, VipsImage *im ) { if( !vips_band_format_isuint( im->BandFmt ) ) { vips_error( domain, "%s", _( "image must be unsigned integer" ) ); return( -1 ); } return( 0 ); } /** * vips_check_8or16: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is 8 or 16-bit integer, signed or unsigned. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_8or16( const char *domain, VipsImage *im ) { if( im->BandFmt != VIPS_FORMAT_UCHAR && im->BandFmt != VIPS_FORMAT_USHORT && im->BandFmt != VIPS_FORMAT_CHAR && im->BandFmt != VIPS_FORMAT_SHORT ) { vips_error( domain, "%s", _( "image must be 8- or 16-bit integer, " "signed or unsigned" ) ); return( -1 ); } return( 0 ); } /** * vips_check_u8or16: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is 8 or 16-bit unsigned integer. * Otherwise set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_u8or16( const char *domain, VipsImage *im ) { if( im->BandFmt != VIPS_FORMAT_UCHAR && im->BandFmt != VIPS_FORMAT_USHORT ) { vips_error( domain, "%s", _( "image must be 8- or 16-bit unsigned integer" ) ); return( -1 ); } return( 0 ); } /** * vips_check_u8or16orf: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is 8 or 16-bit unsigned integer, or float. * Otherwise set an error message and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_u8or16orf( const char *domain, VipsImage *im ) { if( im->BandFmt != VIPS_FORMAT_UCHAR && im->BandFmt != VIPS_FORMAT_USHORT && im->BandFmt != VIPS_FORMAT_FLOAT ) { vips_error( domain, "%s", _( "image must be 8- or 16-bit unsigned integer, " "or float" ) ); return( -1 ); } return( 0 ); } /** * vips_check_uintorf: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is unsigned int or float. * Otherwise set an error message and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_uintorf( const char *domain, VipsImage *im ) { if( im->BandFmt != VIPS_FORMAT_UCHAR && im->BandFmt != VIPS_FORMAT_USHORT && im->BandFmt != VIPS_FORMAT_UINT && im->BandFmt != VIPS_FORMAT_FLOAT ) { vips_error( domain, "%s", _( "image must be unsigned int or float" ) ); return( -1 ); } return( 0 ); } /** * vips_check_size_same: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same size. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_size_same( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->Xsize != im2->Xsize || im1->Ysize != im2->Ysize ) { vips_error( domain, "%s", _( "images must match in size" ) ); return( -1 ); } return( 0 ); } /** * vips_check_oddsquare: * @domain: the originating domain for the error message * @im: image to check * * Check that the image is square and that the sides are odd. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_oddsquare( const char *domain, VipsImage *im ) { if( im->Xsize != im->Ysize || im->Xsize % 2 == 0 ) { vips_error( domain, "%s", _( "images must be odd and square" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bands_same: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same number of bands. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bands_same( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->Bands != im2->Bands ) { vips_error( domain, "%s", _( "images must have the same number of bands" ) ); return( -1 ); } return( 0 ); } /** * vips_check_bandno: * @domain: the originating domain for the error message * @im: image to check * @bandno: band number * * @bandno should be a valid band number (ie. 0 to im->Bands - 1), or can be * -1, meaning all bands. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_bandno( const char *domain, VipsImage *im, int bandno ) { if( bandno < -1 || bandno > im->Bands - 1 ) { vips_error( domain, "bandno must be -1, or less than %d", im->Bands ); return( -1 ); } return( 0 ); } /** * vips_check_format_same: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same format. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_format_same( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->BandFmt != im2->BandFmt ) { vips_error( domain, "%s", _( "images must have the same band format" ) ); return( -1 ); } return( 0 ); } /** * vips_check_coding_same: * @domain: the originating domain for the error message * @im1: first image to check * @im2: second image to check * * Check that the images have the same coding. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_coding_same( const char *domain, VipsImage *im1, VipsImage *im2 ) { if( im1->Coding != im2->Coding ) { vips_error( domain, "%s", _( "images must have the same coding" ) ); return( -1 ); } return( 0 ); } /** * vips_check_vector_length: * @domain: the originating domain for the error message * @n: number of elements in vector * @len: number of elements vector should have * * Check that @n == @len. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_vector_length( const char *domain, int n, int len ) { if( n != len ) { vips_error( domain, _( "vector must have %d elements" ), len ); return( -1 ); } return( 0 ); } /** * vips_check_vector: * @domain: the originating domain for the error message * @n: number of elements in vector * @im: image to check against * * Operations with a vector constant need a 1-element vector, or a vector with * the same number of elements as there are bands in the image. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_vector( const char *domain, int n, VipsImage *im ) { if( n != 1 && im->Bands != 1 && n != im->Bands ) { vips_error( domain, _( "vector must have 1 or %d elements" ), im->Bands ); return( -1 ); } return( 0 ); } /** * vips_check_hist: * @domain: the originating domain for the error message * @im: image to check * * Histogram images must have width or height 1, and must not have more than * 65536 elements. Return 0 if the image will pass as a histogram, or -1 and * set an error message otherwise. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_hist( const char *domain, VipsImage *im ) { if( im->Xsize != 1 && im->Ysize != 1 ) { vips_error( domain, "%s", _( "histograms must have width or height 1" ) ); return( -1 ); } if( VIPS_IMAGE_N_PELS( im ) > 65536 ) { vips_error( domain, "%s", _( "histograms must have not have more than " "65536 elements" ) ); return( -1 ); } return( 0 ); } /** * vips_check_matrix: * @domain: the originating domain for the error message * @im: image to check * @out: put image as in-memory doubles here * * Matrix images must have width and height less than 100000 and have 1 band. * * Return 0 if the image will pass as a matrix, or -1 and set an error * message otherwise. * * @out is set to be @im cast to double and stored in memory. Use * VIPS_MATRIX() to address values in @out. * * You must unref @out when you are done with it. * * See also: VIPS_MATRIX(), vips_object_local() * * Returns: 0 if OK, -1 otherwise. */ int vips_check_matrix( const char *domain, VipsImage *im, VipsImage **out ) { VipsImage *t; *out = NULL; if( im->Xsize > 100000 || im->Ysize > 100000 ) { vips_error( domain, "%s", _( "matrix image too large" ) ); return( -1 ); } if( im->Bands != 1 ) { vips_error( domain, "%s", _( "matrix image must have one band" ) ); return( -1 ); } if( vips_cast( im, &t, VIPS_FORMAT_DOUBLE, NULL ) ) return( -1 ); if( !(*out = vips_image_copy_memory( t )) ) { VIPS_UNREF( t ); return( -1 ); } VIPS_UNREF( t ); return( 0 ); } /** * vips_check_separable: * @domain: the originating domain for the error message * @im: image to check * * Separable matrix images must have width or height 1. * Return 0 if the image will pass, or -1 and * set an error message otherwise. * * See also: vips_error(). * * Returns: 0 if OK, -1 otherwise. */ int vips_check_separable( const char *domain, VipsImage *im ) { if( im->Xsize != 1 && im->Ysize != 1 ) { vips_error( domain, "%s", _( "separable matrix images must have " "width or height 1" ) ); return( -1 ); } return( 0 ); } /** * vips_check_precision_intfloat: * @domain: the originating domain for the error message * @precision: precision to check * * Check that @prec image is either float or int. * If not, set an error message * and return non-zero. * * See also: vips_error(). * * Returns: 0 on OK, or -1 on error. */ int vips_check_precision_intfloat( const char *domain, VipsPrecision precision ) { if( precision != VIPS_PRECISION_INTEGER && precision != VIPS_PRECISION_FLOAT ) { vips_error( domain, "%s", _( "precision must be int or float" ) ); return( -1 ); } return( 0 ); } vips-8.2.2/libvips/iofuncs/util.c0000664000175000017500000010467412620616171013704 00000000000000/* Some basic util functions. */ /* Copyright (C) 1991-2003 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #ifdef OS_WIN32 #include #endif /*OS_WIN32*/ #include #include #include /* Try to make an O_BINARY ... sometimes need the leading '_'. */ #ifdef BINARY_OPEN #ifndef O_BINARY #ifdef _O_BINARY #define O_BINARY _O_BINARY #endif /*_O_BINARY*/ #endif /*!O_BINARY*/ #endif /*BINARY_OPEN*/ /* If we have O_BINARY, add it to a mode flags set. */ #ifdef O_BINARY #define BINARYIZE(M) ((M) | O_BINARY) #else /*!O_BINARY*/ #define BINARYIZE(M) (M) #endif /*O_BINARY*/ /* Open mode for image write ... on some systems, have to set BINARY too. */ #define MODE_WRITE BINARYIZE (O_WRONLY | O_CREAT | O_TRUNC) /* Mode for read/write. This is if we might later want to mmaprw () the file. */ #define MODE_READWRITE BINARYIZE (O_RDWR) /* Mode for read only. This is the fallback if READWRITE fails. */ #define MODE_READONLY BINARYIZE (O_RDONLY) /* Temp buffer for snprintf() layer on old systems. */ #define MAX_BUF (100000) /* Test two lists for eqality. */ gboolean vips_slist_equal( GSList *l1, GSList *l2 ) { while( l1 && l2 ) { if( l1->data != l2->data ) return( FALSE ); l1 = l1->next; l2 = l2->next; } if( l1 || l2 ) return( FALSE ); return( TRUE ); } /* Map over an slist. _copy() the list in case the callback changes it. */ void * vips_slist_map2( GSList *list, VipsSListMap2Fn fn, void *a, void *b ) { GSList *copy; GSList *i; void *result; copy = g_slist_copy( list ); result = NULL; for( i = copy; i && !(result = fn( i->data, a, b )); i = i->next ) ; g_slist_free( copy ); return( result ); } /* Map backwards. We _reverse() rather than recurse and unwind to save stack. */ void * vips_slist_map2_rev( GSList *list, VipsSListMap2Fn fn, void *a, void *b ) { GSList *copy; GSList *i; void *result; copy = g_slist_copy( list ); copy = g_slist_reverse( copy ); result = NULL; for( i = copy; i && !(result = fn( i->data, a, b )); i = i->next ) ; g_slist_free( copy ); return( result ); } void * vips_slist_map4( GSList *list, VipsSListMap4Fn fn, void *a, void *b, void *c, void *d ) { GSList *copy; GSList *i; void *result; copy = g_slist_copy( list ); result = NULL; for( i = copy; i && !(result = fn( i->data, a, b, c, d )); i = i->next ) ; g_slist_free( copy ); return( result ); } void * vips_slist_fold2( GSList *list, void *start, VipsSListFold2Fn fn, void *a, void *b ) { void *c; GSList *this, *next; for( c = start, this = list; this; this = next ) { next = this->next; if( !(c = fn( this->data, c, a, b )) ) return( NULL ); } return( c ); } /* Remove all occurences of an item from a list. */ GSList * vips_slist_filter( GSList *list, VipsSListMap2Fn fn, void *a, void *b ) { GSList *tmp; GSList *prev; prev = NULL; tmp = list; while( tmp ) { if( fn( tmp->data, a, b ) ) { GSList *next = tmp->next; if( prev ) prev->next = next; if( list == tmp ) list = next; tmp->next = NULL; g_slist_free( tmp ); tmp = next; } else { prev = tmp; tmp = tmp->next; } } return( list ); } static void vips_slist_free_all_cb( void * thing, void * dummy ) { vips_free( thing ); } /* Free a g_slist of things which need vips_free()ing. */ void vips_slist_free_all( GSList *list ) { g_slist_foreach( list, vips_slist_free_all_cb, NULL ); g_slist_free( list ); } void * vips_map_equal( void *a, void *b ) { if( a == b ) return( a ); return( NULL ); } typedef struct { void *a; void *b; VipsSListMap2Fn fn; void *result; } Pair; static gboolean vips_hash_table_predicate( const char *key, void *value, Pair *pair ) { return( (pair->result = pair->fn( value, pair->a, pair->b )) != NULL ); } /* Like slist map, but for a hash table. */ void * vips_hash_table_map( GHashTable *hash, VipsSListMap2Fn fn, void *a, void *b ) { Pair pair; pair.a = a; pair.b = b; pair.fn = fn; pair.result = NULL; g_hash_table_find( hash, (GHRFunc) vips_hash_table_predicate, &pair ); return( pair.result ); } /* Like strncpy(), but always NULL-terminate, and don't pad with NULLs. * If @n is 100 and @src is more than 99 characters, 99 are copied and the * final byte of @dest is set to '\0'. */ char * vips_strncpy( char *dest, const char *src, int n ) { int i; g_assert( n > 0 ); for( i = 0; i < n - 1; i++ ) if( !(dest[i] = src[i]) ) break; dest[i] = '\0'; return( dest ); } /* Find the rightmost occurrence of needle in haystack. */ char * vips_strrstr( const char *haystack, const char *needle ) { int haystack_len = strlen( haystack ); int needle_len = strlen( needle ); int i; for( i = haystack_len - needle_len; i >= 0; i-- ) if( strncmp( needle, haystack + i, needle_len ) == 0 ) return( (char *) haystack + i ); return( NULL ); } /* Test for string b ends string a. */ gboolean vips_ispostfix( const char *a, const char *b ) { int m = strlen( a ); int n = strlen( b ); if( n > m ) return( FALSE ); return( strcmp( a + m - n, b ) == 0 ); } /* Test for string a starts string b. */ gboolean vips_isprefix( const char *a, const char *b ) { int n = strlen( a ); int m = strlen( b ); int i; if( m < n ) return( FALSE ); for( i = 0; i < n; i++ ) if( a[i] != b[i] ) return( FALSE ); return( TRUE ); } /* Like strtok(). Give a string and a list of break characters. Then: * - skip initial break characters * - EOS? return NULL * - skip a series of non-break characters * - write a '\0' over the next break character and return a pointer to the * char after that * * The idea is that this can be used in loops as the iterator. Example: * * char *p = " 1 2 3 "; // mutable * char *q; * int i; * int v[...]; * * for( i = 0; (q = vips_break_token( p, " " )); i++, p = q ) * v[i] = atoi( p ); * * will set * v[0] = 1; * v[1] = 2; * v[2] = 3; * * or with just one pointer, provided your atoi() is OK with trailing chars * and you know there is at least one item there * * char *p = " 1 2 3 "; // mutable * int i; * int v[...]; * * for( i = 0; p; p = vips_break_token( p, " " ) ) * v[i] = atoi( p ); */ char * vips_break_token( char *str, const char *brk ) { char *p; /* Is the string empty? If yes, return NULL immediately. */ if( !str || !*str ) return( NULL ); /* Skip initial break characters. */ p = str + strspn( str, brk ); /* No item? */ if( !*p ) return( NULL ); /* We have a token ... search for the first break character after the * token. */ p += strcspn( p, brk ); /* Is there string left? */ if( *p ) { /* Write in an end-of-string mark and return the start of the * next token. */ *p++ = '\0'; p += strspn( p, brk ); } return( p ); } /* Wrapper over (v)snprintf() ... missing on old systems. */ int vips_vsnprintf( char *str, size_t size, const char *format, va_list ap ) { #ifdef HAVE_VSNPRINTF return( vsnprintf( str, size, format, ap ) ); #else /*HAVE_VSNPRINTF*/ /* Bleurg! */ int n; static char buf[MAX_BUF]; /* We can't return an error code, we may already have trashed the * stack. We must stop immediately. */ if( size > MAX_BUF ) vips_error_exit( "panic: buffer overflow " "(request to write %d bytes to buffer of %d bytes)", size, MAX_BUF ); n = vsprintf( buf, format, ap ); if( n > MAX_BUF ) vips_error_exit( "panic: buffer overflow " "(%d bytes written to buffer of %d bytes)", n, MAX_BUF ); vips_strncpy( str, buf, size ); return( n ); #endif /*HAVE_VSNPRINTF*/ } int vips_snprintf( char *str, size_t size, const char *format, ... ) { va_list ap; int n; va_start( ap, format ); n = vips_vsnprintf( str, size, format, ap ); va_end( ap ); return( n ); } /* Does a filename have one of a set of suffixes. Ignore case and any trailing * options. */ int vips_filename_suffix_match( const char *path, const char *suffixes[] ) { char *basename; char *suffix; char *q; const char **p; int result; /* Drop any directory components, we want ignore any '.' in there. */ basename = g_path_get_basename( path ); /* Zap any trailing options. */ if( (q = (char *) vips__find_rightmost_brackets( basename )) ) *q = '\0'; /* And select just the '.' and to the right. */ if( (q = strrchr( basename, '.' )) ) suffix = q; else suffix = basename; result = 0; for( p = suffixes; *p; p++ ) if( g_ascii_strcasecmp( suffix, *p ) == 0 ) { result = 1; break; } g_free( basename ); return( result ); } /* Get file length ... 64-bitally. -1 for error. */ gint64 vips_file_length( int fd ) { #ifdef OS_WIN32 struct _stati64 st; if( _fstati64( fd, &st ) == -1 ) { #else /*!OS_WIN32*/ struct stat st; if( fstat( fd, &st ) == -1 ) { #endif /*OS_WIN32*/ vips_error_system( errno, "vips_file_length", "%s", _( "unable to get file stats" ) ); return( -1 ); } return( st.st_size ); } /* Wrap write() up */ int vips__write( int fd, const void *buf, size_t count ) { do { size_t nwritten = write( fd, buf, count ); if( nwritten == (size_t) -1 ) { vips_error_system( errno, "vips__write", "%s", _( "write failed" ) ); return( -1 ); } buf = (void *) ((char *) buf + nwritten); count -= nwritten; } while( count > 0 ); return( 0 ); } /* Does a filename contain a directory separator? */ static gboolean filename_hasdir( const char *filename ) { char *dirname; gboolean hasdir; dirname = g_path_get_dirname( filename ); hasdir = (strcmp( dirname, "." ) != 0); g_free( dirname ); return( hasdir ); } /* Open a file. We take an optional fallback dir as well and will try opening * there if opening directly fails. * * This is used for things like finding ICC profiles. We try to open the file * directly first, and if that fails and the filename does not contain a * directory separator, we try looking in the fallback dir. */ FILE * vips__file_open_read( const char *filename, const char *fallback_dir, gboolean text_mode ) { char *mode; FILE *fp; #ifdef BINARY_OPEN if( text_mode ) mode = "r"; else mode = "rb"; #else /*BINARY_OPEN*/ mode = "r"; #endif /*BINARY_OPEN*/ if( (fp = fopen( filename, mode )) ) return( fp ); if( fallback_dir && !filename_hasdir( filename ) ) { char *path; path = g_build_filename( fallback_dir, filename, NULL ); fp = fopen( path, mode ); g_free( path ); if( fp ) return( fp ); } vips_error_system( errno, "vips__file_open_read", _( "unable to open file \"%s\" for reading" ), filename ); return( NULL ); } FILE * vips__file_open_write( const char *filename, gboolean text_mode ) { char *mode; FILE *fp; #ifdef BINARY_OPEN if( text_mode ) mode = "w"; else mode = "wb"; #else /*BINARY_OPEN*/ mode = "w"; #endif /*BINARY_OPEN*/ if( !(fp = fopen( filename, mode )) ) { vips_error_system( errno, "vips__file_open_write", _( "unable to open file \"%s\" for writing" ), filename ); return( NULL ); } return( fp ); } /* Load up a file as a string. */ char * vips__file_read( FILE *fp, const char *filename, size_t *length_out ) { gint64 len; size_t read; char *str; len = vips_file_length( fileno( fp ) ); if( len > 1024 * 1024 * 1024 ) { /* Over a gb? Seems crazy! */ vips_error( "vips__file_read", _( "\"%s\" too long" ), filename ); return( NULL ); } if( len == -1 ) { int size; /* Can't get length: read in chunks and realloc() to end of * file. */ str = NULL; len = 0; size = 0; do { char *str2; size += 1024; if( !(str2 = realloc( str, size )) ) { free( str ); vips_error( "vips__file_read", "%s", _( "out of memory" ) ); return( NULL ); } str = str2; /* -1 to allow space for an extra NULL we add later. */ read = fread( str + len, sizeof( char ), (size - len - 1) / sizeof( char ), fp ); len += read; } while( !feof( fp ) ); #ifdef DEBUG printf( "read %ld bytes from unseekable stream\n", len ); #endif /*DEBUG*/ } else { /* Allocate memory and fill. */ if( !(str = vips_malloc( NULL, len + 1 )) ) return( NULL ); rewind( fp ); read = fread( str, sizeof( char ), (size_t) len, fp ); if( read != (size_t) len ) { vips_free( str ); vips_error( "vips__file_read", _( "error reading from file \"%s\"" ), filename ); return( NULL ); } } str[len] = '\0'; if( length_out ) *length_out = len; return( str ); } /* Load from a filename as a string. Used for things like reading in ICC * profiles, ie. binary objects. */ char * vips__file_read_name( const char *filename, const char *fallback_dir, size_t *length_out ) { FILE *fp; char *buffer; if( !(fp = vips__file_open_read( filename, fallback_dir, FALSE )) ) return( NULL ); if( !(buffer = vips__file_read( fp, filename, length_out )) ) { fclose( fp ); return( NULL ); } fclose( fp ); return( buffer ); } /* Like fwrite(), but returns non-zero on error and sets error message. */ int vips__file_write( void *data, size_t size, size_t nmemb, FILE *stream ) { size_t n; if( !data ) return( 0 ); if( (n = fwrite( data, size, nmemb, stream )) != nmemb ) { vips_error_system( errno, "vips__file_write", _( "write error (%zd out of %zd blocks written)" ), n, nmemb ); return( -1 ); } return( 0 ); } /* Read a few bytes from the start of a file. For sniffing file types. * Filename may contain a mode. */ int vips__get_bytes( const char *filename, unsigned char buf[], int len ) { char name[FILENAME_MAX]; char mode[FILENAME_MAX]; int fd; /* Split off the mode part. */ im_filename_split( filename, name, mode ); /* File may not even exist (for tmp images for example!) * so no hasty messages. And the file might be truncated, so no error * on read either. */ if( (fd = open( name, MODE_READONLY )) == -1 ) return( 0 ); if( read( fd, buf, len ) != len ) { close( fd ); return( 0 ); } close( fd ); return( 1 ); } /* We try to support stupid DOS files too. These have \r\n (13, 10) as line * separators. Strategy: an fgetc() that swaps \r\n for \n. * * On Windows, stdio will automatically swap \r\n for \n, but on Linux we have * to do this by hand. */ int vips__fgetc( FILE *fp ) { int ch; ch = fgetc( fp ); if( ch == '\r' ) { ch = fgetc( fp ); if( ch != '\n' ) { ungetc( ch, fp ); ch = '\r'; } } return( ch ); } /* Alloc/free a GValue. */ static GValue * vips__gvalue_new( GType type ) { GValue *value; value = g_new0( GValue, 1 ); g_value_init( value, type ); return( value ); } static GValue * vips__gvalue_copy( GValue *value ) { GValue *value_copy; value_copy = vips__gvalue_new( G_VALUE_TYPE( value ) ); g_value_copy( value, value_copy ); return( value_copy ); } static void vips__gvalue_free( GValue *value ) { g_value_unset( value ); g_free( value ); } GValue * vips__gvalue_ref_string_new( const char *text ) { GValue *value; value = vips__gvalue_new( VIPS_TYPE_REF_STRING ); vips_value_set_ref_string( value, text ); return( value ); } /* Free a GSList of GValue. */ void vips__gslist_gvalue_free( GSList *list ) { g_slist_foreach( list, (GFunc) vips__gvalue_free, NULL ); g_slist_free( list ); } /* Copy a GSList of GValue. */ GSList * vips__gslist_gvalue_copy( const GSList *list ) { GSList *copy; const GSList *p; copy = NULL; for( p = list; p; p = p->next ) copy = g_slist_prepend( copy, vips__gvalue_copy( (GValue *) p->data ) ); copy = g_slist_reverse( copy ); return( copy ); } /* Merge two GSList of GValue ... append to a all elements in b which are not * in a. Return the new value of a. Works for any vips refcounted type * (string, blob, etc.). */ GSList * vips__gslist_gvalue_merge( GSList *a, const GSList *b ) { const GSList *i, *j; GSList *tail; tail = NULL; for( i = b; i; i = i->next ) { GValue *value = (GValue *) i->data; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_REF_STRING ); for( j = a; j; j = j->next ) { GValue *value2 = (GValue *) j->data; g_assert( G_VALUE_TYPE( value2 ) == VIPS_TYPE_REF_STRING ); /* Just do a pointer compare ... good enough 99.9% of * the time. */ if( vips_value_get_ref_string( value, NULL ) == vips_value_get_ref_string( value2, NULL ) ) break; } if( !j ) tail = g_slist_prepend( tail, vips__gvalue_copy( value ) ); } a = g_slist_concat( a, g_slist_reverse( tail ) ); return( a ); } /* Make a char* from GSList of GValue. Each GValue should be a ref_string. * free the result. Empty list -> "", not NULL. Join strings with '\n'. */ char * vips__gslist_gvalue_get( const GSList *list ) { const GSList *p; size_t length; char *all; char *q; /* Need to estimate length first. */ length = 0; for( p = list; p; p = p->next ) { GValue *value = (GValue *) p->data; size_t l2; g_assert( G_VALUE_TYPE( value ) == VIPS_TYPE_REF_STRING ); /* +1 for the newline we will add for each item. */ (void) vips_value_get_ref_string( value, &l2 ); length += l2 + 1; } if( length == 0 ) return( NULL ); /* More than 10MB of history? Madness! */ g_assert( length < 10 * 1024 * 1024 ); /* +1 for '\0'. */ if( !(all = vips_malloc( NULL, length + 1 )) ) return( NULL ); q = all; for( p = list; p; p = p->next ) { GValue *value = (GValue *) p->data; size_t l2; strcpy( q, vips_value_get_ref_string( value, &l2 ) ); q += l2; strcpy( q, "\n" ); q += 1; } g_assert( (size_t) (q - all) == length ); return( all ); } /* Need our own seek(), since lseek() on win32 can't do long files. */ int vips__seek( int fd, gint64 pos ) { #ifdef OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( fd ); LARGE_INTEGER p; p.QuadPart = pos; if( !SetFilePointerEx( hFile, p, NULL, FILE_BEGIN ) ) { vips_error_system( GetLastError(), "vips__seek", "%s", _( "unable to seek" ) ); return( -1 ); } } #else /*!OS_WIN32*/ if( lseek( fd, pos, SEEK_SET ) == (off_t) -1 ) { vips_error( "vips__seek", "%s", _( "unable to seek" ) ); return( -1 ); } #endif /*OS_WIN32*/ return( 0 ); } /* Need our own ftruncate(), since ftruncate() on win32 can't do long files. DANGER ... this moves the file pointer to the end of file on win32, but not on *nix; don't make any assumptions about the file pointer position after calling this */ int vips__ftruncate( int fd, gint64 pos ) { #ifdef OS_WIN32 { HANDLE hFile = (HANDLE) _get_osfhandle( fd ); LARGE_INTEGER p; p.QuadPart = pos; if( vips__seek( fd, pos ) ) return( -1 ); if( !SetEndOfFile( hFile ) ) { vips_error_system( GetLastError(), "vips__ftruncate", "%s", _( "unable to truncate" ) ); return( -1 ); } } #else /*!OS_WIN32*/ if( ftruncate( fd, pos ) ) { vips_error_system( errno, "vips__ftruncate", "%s", _( "unable to truncate" ) ); return( -1 ); } #endif /*OS_WIN32*/ return( 0 ); } /* Test for file exists. */ int vips_existsf( const char *name, ... ) { va_list ap; char *path; int result; va_start( ap, name ); path = g_strdup_vprintf( name, ap ); va_end( ap ); result = access( path, R_OK ); g_free( path ); return( !result ); } #ifdef OS_WIN32 #define popen(b,m) _popen(b,m) #define pclose(f) _pclose(f) #endif /*OS_WIN32*/ /* Do popen(), with printf-style args. */ FILE * vips_popenf( const char *fmt, const char *mode, ... ) { va_list args; char buf[VIPS_PATH_MAX]; FILE *fp; va_start( args, mode ); (void) vips_vsnprintf( buf, VIPS_PATH_MAX, fmt, args ); va_end( args ); #ifdef DEBUG printf( "vips_popenf: running: %s\n", buf ); #endif /*DEBUG*/ if( !(fp = popen( buf, mode )) ) { vips_error( "popenf", "%s", strerror( errno ) ); return( NULL ); } return( fp ); } /* Make a directory. */ int vips_mkdirf( const char *name, ... ) { va_list ap; char *path; va_start( ap, name ); path = g_strdup_vprintf( name, ap ); va_end( ap ); if( g_mkdir( path, 0755 ) ) { vips_error( "mkdirf", _( "unable to create directory \"%s\", %s" ), path, strerror( errno ) ); g_free( path ); return( -1 ); } g_free( path ); return( 0 ); } /* Remove a directory. */ int vips_rmdirf( const char *name, ... ) { va_list ap; char *path; va_start( ap, name ); path = g_strdup_vprintf( name, ap ); va_end( ap ); if( g_rmdir( path ) ) { vips_error( "rmdir", _( "unable to remove directory \"%s\", %s" ), path, strerror( errno ) ); g_free( path ); return( -1 ); } g_free( path ); return( 0 ); } /* Rename a file. */ int vips_rename( const char *old_name, const char *new_name ) { if( g_rename( old_name, new_name ) ) { vips_error( "rename", _( "unable to rename file \"%s\" as \"%s\", %s" ), old_name, new_name, strerror( errno ) ); return( -1 ); } return( 0 ); } /* Chop off any trailing whitespace. */ void vips__chomp( char *str ) { char *p; for( p = str + strlen( str ); p > str && isspace( p[-1] ); p-- ) p[-1] = '\0'; } /* Break a command-line argument into tokens separated by whitespace. * * Strings can't be adjacent, so "hello world" (without quotes) is a single * string. Strings are written (with \" escaped) into @string. If the string * is larger than @size, it is silently null-terminated and truncated. * * Return NULL for end of tokens. */ const char * vips__token_get( const char *p, VipsToken *token, char *string, int size ) { const char *q; int ch; int n; int i; /* Parse this token with p. */ if( !p ) return( NULL ); /* Skip initial whitespace. */ p += strspn( p, " \t\n\r" ); if( !p[0] ) return( NULL ); switch( (ch = p[0]) ) { case '[': *token = VIPS_TOKEN_LEFT; p += 1; break; case ']': *token = VIPS_TOKEN_RIGHT; p += 1; break; case '=': *token = VIPS_TOKEN_EQUALS; p += 1; break; case ',': *token = VIPS_TOKEN_COMMA; p += 1; break; case '"': case '\'': /* Parse a quoted string. Copy up to ", interpret any \", * error if no closing ". */ *token = VIPS_TOKEN_STRING; do { /* Number of characters until the next quote * character or end of string. */ if( (q = strchr( p + 1, ch )) ) n = q - p + 1; else n = strlen( p + 1 ); /* How much can we copy to the buffer? */ i = VIPS_MIN( n, size ); vips_strncpy( string, p + 1, i ); /* We might have stopped at an escaped quote. If the * string was not truncated, swap the preceding * backslash for a quote. */ if( p[n + 1] == ch && p[n] == '\\' && i == n ) string[i - 1] = ch; string += i; size -= i; p += n + 1; } while( p[0] && p[-1] == '\\' ); p += 1; break; default: /* It's an unquoted string: read up to the next non-string * character. We don't allow two strings next to each other, * so the next break must be bracket, equals, comma. */ *token = VIPS_TOKEN_STRING; n = strcspn( p, "<[{()}]>=," ); i = VIPS_MIN( n, size ); vips_strncpy( string, p, i + 1 ); p += n; /* We remove leading whitespace, so we trim trailing * whitespace from unquoted strings too. Only if the string * hasn't been truncated. */ if( i == n ) while( i > 0 && isspace( string[i - 1] ) ) { string[i - 1] = '\0'; i--; } break; } return( p ); } /* We expect a token. */ const char * vips__token_must( const char *p, VipsToken *token, char *string, int size ) { if( !(p = vips__token_get( p, token, string, size )) ) { vips_error( "get_token", "%s", _( "unexpected end of string" ) ); return( NULL ); } return( p ); } /* We expect a certain token. */ const char * vips__token_need( const char *p, VipsToken need_token, char *string, int size ) { VipsToken token; if( !(p = vips__token_must( p, &token, string, size )) ) return( NULL ); if( token != need_token ) { vips_error( "get_token", _( "expected %s, saw %s" ), vips_enum_nick( VIPS_TYPE_TOKEN, need_token ), vips_enum_nick( VIPS_TYPE_TOKEN, token ) ); return( NULL ); } return( p ); } /* Maximum number of tokens we allow in a filename. Surely this will be * plenty. */ #define MAX_TOKENS (1000) /* Find the start of the right-most pair of brackets in the string. * * A string can be of the form: * * "hello world! (no really).tif[fred=12]" * * we need to be able to find the fred=12 at the end. * * We lex the whole string noting the position of each token, then, if the * final token is a right-bracket, search left for the matching left-bracket. * * This can get confused if the lefts are hidden inside another token :-( But * a fixing that would require us to write a separate right-to-left lexer, * argh. */ const char * vips__find_rightmost_brackets( const char *p ) { const char *start[MAX_TOKENS + 1]; VipsToken tokens[MAX_TOKENS]; char str[VIPS_PATH_MAX]; int n, i; int nest; start[0] = p; for( n = 0; n < MAX_TOKENS && (p = vips__token_get( start[n], &tokens[n], str, VIPS_PATH_MAX )); n++, start[n] = p ) ; /* Too many tokens? */ if( n == MAX_TOKENS ) return( NULL ); /* No rightmost close bracket? */ if( n == 0 || tokens[n - 1] != VIPS_TOKEN_RIGHT ) return( NULL ); nest = 0; for( i = n - 1; i >= 0; i-- ) { if( tokens[i] == VIPS_TOKEN_RIGHT ) nest += 1; else if( tokens[i] == VIPS_TOKEN_LEFT ) nest -= 1; if( nest == 0 ) break; } /* No matching left bracket? */ if( nest != 0 ) return( NULL ); /* This should be the matching left. */ return( start[i] ); } /* Split a vips8-style filename + options. * * filename and option_string must be VIPS_PATH_MAX in length. */ void vips__filename_split8( const char *name, char *filename, char *option_string ) { char *p; vips_strncpy( filename, name, VIPS_PATH_MAX ); if( (p = (char *) vips__find_rightmost_brackets( filename )) ) { vips_strncpy( option_string, p, VIPS_PATH_MAX ); *p = '\0'; } else vips_strncpy( option_string, "", VIPS_PATH_MAX ); } /* True if an int is a power of two ... 1, 2, 4, 8, 16, 32, etc. Do with just * integer arithmetic for portability. A previous Nicos version using doubles * and log/log failed on x86 with rounding problems. Return 0 for not * power of two, otherwise return the position of the set bit (numbering with * bit 1 as the lsb). */ int vips_ispoweroftwo( int p ) { int i, n; /* Count set bits. Could use a LUT, I guess. */ for( i = 0, n = 0; p; i++, p >>= 1 ) if( p & 1 ) n++; /* Should be just one set bit. */ if( n == 1 ) /* Return position of bit. */ return( i ); else return( 0 ); } /* Test this processor for endianness. True for SPARC order. */ int vips_amiMSBfirst( void ) { int test; unsigned char *p = (unsigned char *) &test; test = 0; p[0] = 255; if( test == 255 ) return( 0 ); else return( 1 ); } /* Return the tmp dir. On Windows, GetTempPath() will also check the values of * TMP, TEMP and USERPROFILE. */ static const char * vips__temp_dir( void ) { const char *tmpd; if( !(tmpd = g_getenv( "TMPDIR" )) ) { #ifdef OS_WIN32 static gboolean done = FALSE; static char buf[256]; if( !done ) { if( !GetTempPath( 256, buf ) ) strcpy( buf, "C:\\temp" ); } tmpd = buf; #else /*!OS_WIN32*/ tmpd = "/tmp"; #endif /*!OS_WIN32*/ } return( tmpd ); } /* Make a temporary file name. The format parameter is something like "%s.jpg" * and will be expanded to something like "/tmp/vips-12-34587.jpg". * * You need to free the result. A real file will also be created, though we * delete it for you. */ char * vips__temp_name( const char *format ) { static int serial = 1; char file[FILENAME_MAX]; char file2[FILENAME_MAX]; char *name; int fd; vips_snprintf( file, FILENAME_MAX, "vips-%d-XXXXXX", serial++ ); vips_snprintf( file2, FILENAME_MAX, format, file ); name = g_build_filename( vips__temp_dir(), file2, NULL ); if( (fd = g_mkstemp( name )) == -1 ) { vips_error( "tempfile", _( "unable to make temporary file %s" ), name ); g_free( name ); return( NULL ); } close( fd ); g_unlink( name ); return( name ); } /* Strip off any of a set of old suffixes (eg. [".v", ".jpg"]), add a single * new suffix (eg. ".tif"). */ void vips__change_suffix( const char *name, char *out, int mx, const char *new, const char **olds, int nolds ) { char *p; int i; int len; /* Copy start string. */ vips_strncpy( out, name, mx ); /* Drop all matching suffixes. */ while( (p = strrchr( out, '.' )) ) { /* Found suffix - test against list of alternatives. Ignore * case. */ for( i = 0; i < nolds; i++ ) if( g_ascii_strcasecmp( p, olds[i] ) == 0 ) { *p = '\0'; break; } /* Found match? If not, break from loop. */ if( *p ) break; } /* Add new suffix. */ len = strlen( out ); vips_strncpy( out + len, new, mx - len ); } typedef struct { const char unit; int multiplier; } Unit; guint64 vips__parse_size( const char *size_string ) { static Unit units[] = { { 'k', 1024 }, { 'm', 1024 * 1024 }, { 'g', 1024 * 1024 * 1024 } }; guint64 size; int n; int i; char *unit; /* An easy way to alloc a buffer large enough. */ unit = g_strdup( size_string ); n = sscanf( size_string, "%d %s", &i, unit ); size = i; if( n > 1 ) { int j; for( j = 0; j < VIPS_NUMBER( units ); j++ ) if( tolower( unit[0] ) == units[j].unit ) { size *= units[j].multiplier; break; } } g_free( unit ); VIPS_DEBUG_MSG( "parse_size: parsed \"%s\" as %" G_GUINT64_FORMAT "\n", size_string, size ); return( size ); } /* Look up the const char * for an enum value. */ const char * vips_enum_string( GType enm, int v ) { GEnumValue *value; if( !(value = g_enum_get_value( g_type_class_ref( enm ), v )) ) return( "(null)" ); return( value->value_name ); } const char * vips_enum_nick( GType enm, int v ) { GEnumValue *value; if( !(value = g_enum_get_value( g_type_class_ref( enm ), v )) ) return( "(null)" ); return( value->value_nick ); } int vips_enum_from_nick( const char *domain, GType type, const char *nick ) { GTypeClass *class; GEnumClass *genum; GEnumValue *enum_value; int i; char str[1000]; VipsBuf buf = VIPS_BUF_STATIC( str ); if( !(class = g_type_class_ref( type )) ) { vips_error( domain, "%s", _( "no such enum type" ) ); return( -1 ); } genum = G_ENUM_CLASS( class ); if( (enum_value = g_enum_get_value_by_name( genum, nick )) ) return( enum_value->value ); if( (enum_value = g_enum_get_value_by_nick( genum, nick )) ) return( enum_value->value ); /* -1 since we always have a "last" member. */ for( i = 0; i < genum->n_values - 1; i++ ) { if( i > 0 ) vips_buf_appends( &buf, ", " ); vips_buf_appends( &buf, genum->values[i].value_nick ); } vips_error( domain, _( "enum '%s' has no member '%s', " "should be one of: %s" ), g_type_name( type ), nick, vips_buf_all( &buf ) ); return( -1 ); } int vips_flags_from_nick( const char *domain, GType type, const char *nick ) { GTypeClass *class; GFlagsClass *gflags; GFlagsValue *flags_value; int i; char str[1000]; VipsBuf buf = VIPS_BUF_STATIC( str ); if( !(class = g_type_class_ref( type )) ) { vips_error( domain, "%s", _( "no such flag type" ) ); return( -1 ); } gflags = G_FLAGS_CLASS( class ); if( (flags_value = g_flags_get_value_by_name( gflags, nick )) ) return( flags_value->value ); if( (flags_value = g_flags_get_value_by_nick( gflags, nick )) ) return( flags_value->value ); for( i = 0; i < gflags->n_values; i++ ) { if( i > 0 ) vips_buf_appends( &buf, ", " ); vips_buf_appends( &buf, gflags->values[i].value_nick ); } vips_error( domain, _( "flags '%s' has no member '%s', " "should be one of: %s" ), g_type_name( type ), nick, vips_buf_all( &buf ) ); return( -1 ); } /* Scan @buf for the first "%ns" (eg. "%12s") and substitute the * lowest-numbered one for @sub. @buf is @len bytes in size. * * If there are no %ns, use the first %s. */ int vips__substitute( char *buf, size_t len, char *sub ) { size_t buflen = strlen( buf ); size_t sublen = strlen( sub ); int lowest_n; char *sub_start; char *p; char *sub_end; size_t before_len, marker_len, after_len, final_len; g_assert( buflen < len ); lowest_n = -1; sub_start = NULL; sub_end = NULL; for( p = buf; (p = strchr( p, '%' )); p++ ) if( isdigit( p[1] ) ) { char *q; for( q = p + 1; isdigit( *q ); q++ ) ; if( q[0] == 's' ) { int n; n = atoi( p + 1 ); if( lowest_n == -1 || n < lowest_n ) { lowest_n = n; sub_start = p; sub_end = q + 1; } } } if( !sub_start ) for( p = buf; (p = strchr( p, '%' )); p++ ) if( p[1] == 's' ) { sub_start = p; sub_end = p + 2; break; } if( !sub_start ) return( -1 ); before_len = sub_start - buf; marker_len = sub_end - sub_start; after_len = buflen - (before_len + marker_len); final_len = before_len + sublen + after_len + 1; if( final_len > len ) return( -1 ); memmove( buf + before_len + sublen, buf + before_len + marker_len, after_len + 1 ); memmove( buf + before_len, sub, sublen ); return( 0 ); } vips-8.2.2/libvips/iofuncs/semaphore.c0000664000175000017500000000604412530402247014677 00000000000000/* Support for thread stuff. * * JC & KM 9/5/94 * Modified: * 28/11/94 JC * - return(0) missing from tidy_thread_info() * 4/8/99 RP JC * - reorganised for POSIX * 28/3/11 * - moved to vips_ namespace */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG_IO */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include void vips_semaphore_init( VipsSemaphore *s, int v, char *name ) { s->v = v; s->name = name; s->mutex = vips_g_mutex_new(); s->cond = vips_g_cond_new(); } void vips_semaphore_destroy( VipsSemaphore *s ) { VIPS_FREEF( vips_g_mutex_free, s->mutex ); VIPS_FREEF( vips_g_cond_free, s->cond ); } /* Add n to the semaphore and signal any threads that are blocked waiting * a change. */ int vips_semaphore_upn( VipsSemaphore *s, int n ) { int value_after_op; g_mutex_lock( s->mutex ); s->v += n; value_after_op = s->v; /* If we are only incrementing by one, we only need to wake a single * thread. If we are incrementing by a lot, we must wake all threads. */ if( n == 1 ) g_cond_signal( s->cond ); else g_cond_broadcast( s->cond ); g_mutex_unlock( s->mutex ); #ifdef DEBUG_IO printf( "vips_semaphore_upn(\"%s\",%d) = %d\n", s->name, n, value_after_op ); if( value_after_op > 1 ) vips_error( "vips_semaphore_upn", "up over 1!" ); #endif /*DEBUG_IO*/ return( value_after_op ); } /* Increment the semaphore. */ int vips_semaphore_up( VipsSemaphore *s ) { return( vips_semaphore_upn( s, 1 ) ); } /* Wait for sem>n, then subtract n. */ int vips_semaphore_downn( VipsSemaphore *s, int n ) { int value_after_op; VIPS_GATE_START( "vips_semaphore_downn: wait" ); g_mutex_lock( s->mutex ); while( s->v < n ) g_cond_wait( s->cond, s->mutex ); s->v -= n; value_after_op = s->v; g_mutex_unlock( s->mutex ); #ifdef DEBUG_IO printf( "vips_semaphore_downn(\"%s\",%d): %d\n", s->name, n, value_after_op ); #endif /*DEBUG_IO*/ VIPS_GATE_STOP( "vips_semaphore_downn: wait" ); return( value_after_op ); } /* Wait for sem > 0, then decrement. */ int vips_semaphore_down( VipsSemaphore *s ) { return( vips_semaphore_downn( s, 1 ) ); } vips-8.2.2/libvips/iofuncs/memory.c0000664000175000017500000002552412651123530014227 00000000000000/* tracked memory * * 2/11/99 JC * - from im_open.c and callback.c * - malloc tracking stuff added * 11/3/01 JC * - im_strncpy() added * 20/4/01 JC * - im_(v)snprintf() added * 6/7/05 * - more tracking for DEBUGM * 20/10/06 * - return NULL for size <= 0 * 11/5/06 * - abort() on malloc() failure with DEBUG * 20/10/09 * - gtkdoc comment * 6/11/09 * - im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes * confusion over whether to use im_free() or g_free() for things like * im_header_string() * 21/9/11 * - rename as vips_tracked_malloc() to emphasise difference from * g_malloc()/g_free() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include /** * SECTION: memory * @short_description: memory utilities * @stability: Stable * @include: vips/vips.h * * These functions cover two main areas. * * First, some simple utility functions over the underlying * g_malloc()/g_free() functions. Memory allocated and freeded using these * functions is interchangeable with any other glib library. * * Second, a pair of functions, vips_tracked_malloc() and vips_tracked_free(), * which are NOT compatible. If you g_free() memory that has been allocated * with vips_tracked_malloc() you will see crashes. * * The tracked functions are * only suitable for large allocations internal to the library, for example * pixel buffers. libvips watches the total amount of live tracked memory and * uses this information to decide when to trim caches. */ /* g_assert_not_reached() on memory errors. #define DEBUG */ #ifdef DEBUG # warning DEBUG on in libsrc/iofuncs/memory.c #endif /*DEBUG*/ static int vips_tracked_allocs = 0; static size_t vips_tracked_mem = 0; static int vips_tracked_files = 0; static size_t vips_tracked_mem_highwater = 0; static GMutex *vips_tracked_mutex = NULL; /** * VIPS_NEW: * @OBJ: allocate memory local to @OBJ, or %NULL for no auto-free * @T: type of thing to allocate * * Returns: A pointer of type @T *, or %NULL on error. */ /** * VIPS_ARRAY: * @OBJ: allocate memory local to @OBJ, or %NULL for no auto-free * @N: number of @T 's to allocate * @T: type of thing to allocate * * Returns: A pointer of type @T *, or %NULL on error. */ static void vips_malloc_cb( VipsObject *object, char *buf ) { g_free( buf ); } /** * vips_malloc: * @object: allocate memory local to this #VipsObject, or %NULL * @size: number of bytes to allocate * * g_malloc() local to @object, that is, the memory will be automatically * freed for you when the object is closed. If @object is %NULL, you need to * free the memory explicitly with g_free(). * * This function cannot fail. See vips_tracked_malloc() if you are * allocating large amounts of memory. * * See also: vips_tracked_malloc(). * * Returns: (transfer full): a pointer to the allocated memory */ void * vips_malloc( VipsObject *object, size_t size ) { void *buf; buf = g_malloc( size ); if( object ) { g_signal_connect( object, "postclose", G_CALLBACK( vips_malloc_cb ), buf ); object->local_memory += size; } return( buf ); } /** * vips_strdup: * @object: allocate memory local to this #VipsObject, or %NULL * @str: string to copy * * g_strdup() a string. When @object is freed, the string will be freed for * you. If @object is %NULL, you need to * free the memory explicitly with g_free(). * * This function cannot fail. * * See also: vips_malloc(). * * Returns: (transfer full): a pointer to the allocated memory */ char * vips_strdup( VipsObject *object, const char *str ) { char *str_dup; str_dup = g_strdup( str ); if( object ) { g_signal_connect( object, "postclose", G_CALLBACK( vips_malloc_cb ), str_dup ); object->local_memory += strlen( str ); } return( str_dup ); } /** * vips_free: * @buf: memory to free * * Frees memory with g_free() and returns 0. Handy for callbacks. * * See also: vips_malloc(). * * Returns: 0 */ int vips_free( void *buf ) { g_free( buf ); return( 0 ); } /** * vips_tracked_free: * @s: (transfer full): memory to free * * Only use it to free * memory that was previously allocated with vips_tracked_malloc() with a * %NULL first argument. * * See also: vips_tracked_malloc(). */ void vips_tracked_free( void *s ) { size_t size; /* Keep the size of the alloc in the previous 16 bytes. Ensures * alignment rules are kept. */ s = (void *) ((char*)s - 16); size = *((size_t*)s); g_mutex_lock( vips_tracked_mutex ); if( vips_tracked_allocs <= 0 ) vips_warn( "vips_tracked", "%s", _( "vips_free: too many frees" ) ); if( vips_tracked_mem < size ) vips_warn( "vips_tracked", "%s", _( "vips_free: too much free" ) ); vips_tracked_mem -= size; vips_tracked_allocs -= 1; g_mutex_unlock( vips_tracked_mutex ); g_free( s ); VIPS_GATE_FREE( size ); } static void vips_tracked_init( void ) { static GOnce vips_tracked_once = G_ONCE_INIT; vips_tracked_mutex = g_once( &vips_tracked_once, (GThreadFunc) vips_g_mutex_new, NULL ); } /** * vips_tracked_malloc: * @size: number of bytes to allocate * * Allocate an area of memory that will be tracked by vips_tracked_get_mem() * and friends. * * If allocation fails, vips_malloc() returns %NULL and * sets an error message. * * You must only free the memory returned with vips_tracked_free(). * * See also: vips_tracked_free(), vips_malloc(). * * Returns: (transfer full): a pointer to the allocated memory, or %NULL on error. */ void * vips_tracked_malloc( size_t size ) { void *buf; vips_tracked_init(); /* Need an extra sizeof(size_t) bytes to track * size of this block. Ask for an extra 16 to make sure we don't break * alignment rules. */ size += 16; if( !(buf = g_try_malloc( size )) ) { #ifdef DEBUG g_assert_not_reached(); #endif /*DEBUG*/ vips_error( "vips_tracked", _( "out of memory --- size == %dMB" ), (int) (size / (1024.0*1024.0)) ); vips_warn( "vips_tracked", _( "out of memory --- size == %dMB" ), (int) (size / (1024.0*1024.0)) ); return( NULL ); } g_mutex_lock( vips_tracked_mutex ); *((size_t *)buf) = size; buf = (void *) ((char *)buf + 16); vips_tracked_mem += size; if( vips_tracked_mem > vips_tracked_mem_highwater ) vips_tracked_mem_highwater = vips_tracked_mem; vips_tracked_allocs += 1; g_mutex_unlock( vips_tracked_mutex ); VIPS_GATE_MALLOC( size ); return( buf ); } /** * vips_tracked_open: * @pathname: name of file to open * @flags: flags for open() * @...: open mode * * Exactly as open(2), but the number of files current open via * vips_tracked_open() is available via vips_tracked_get_files(). This is used * by the vips operation cache to drop cache when the number of files * available is low. * * You must only close the file descriptor with vips_tracked_close(). * * See also: vips_tracked_close(), vips_tracked_get_files(). * * Returns: a file descriptor, or -1 on error. */ int vips_tracked_open( const char *pathname, int flags, ... ) { int fd; mode_t mode; va_list ap; /* mode_t is promoted to int in ..., so we have to pull it out as an * int. */ va_start( ap, flags ); mode = va_arg( ap, int ); va_end( ap ); if( (fd = open( pathname, flags, mode )) == -1 ) return( -1 ); vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); vips_tracked_files += 1; #ifdef DEBUG printf( "vips_tracked_open: %s = %d (%d)\n", pathname, fd, vips_tracked_files ); #endif /*DEBUG*/ g_mutex_unlock( vips_tracked_mutex ); return( fd ); } /** * vips_tracked_close: * @fd: file to close() * * Exactly as close(2), but update the number of files currently open via * vips_tracked_get_files(). This is used * by the vips operation cache to drop cache when the number of files * available is low. * * You must only close file descriptors opened with vips_tracked_open(). * * See also: vips_tracked_open(), vips_tracked_get_files(). * * Returns: a file descriptor, or -1 on error. */ int vips_tracked_close( int fd ) { int result; g_mutex_lock( vips_tracked_mutex ); g_assert( vips_tracked_files > 0 ); vips_tracked_files -= 1; #ifdef DEBUG printf( "vips_tracked_close: %d (%d)\n", fd, vips_tracked_files ); #endif /*DEBUG*/ g_mutex_unlock( vips_tracked_mutex ); result = close( fd ); return( result ); } /** * vips_tracked_get_mem: * * Returns the number of bytes currently allocated via vips_malloc() and * friends. vips uses this figure to decide when to start dropping cache, see * #VipsOperation. * * Returns: the number of currently allocated bytes */ size_t vips_tracked_get_mem( void ) { size_t mem; vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); mem = vips_tracked_mem; g_mutex_unlock( vips_tracked_mutex ); return( mem ); } /** * vips_tracked_get_mem_highwater: * * Returns the largest number of bytes simultaneously allocated via * vips_tracked_malloc(). Handy for estimating max memory requirements for a * program. * * Returns: the largest number of currently allocated bytes */ size_t vips_tracked_get_mem_highwater( void ) { size_t mx; vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); mx = vips_tracked_mem_highwater; g_mutex_unlock( vips_tracked_mutex ); return( mx ); } /** * vips_tracked_get_allocs: * * Returns the number of active allocations. * * Returns: the number of active allocations */ int vips_tracked_get_allocs( void ) { int n; vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); n = vips_tracked_allocs; g_mutex_unlock( vips_tracked_mutex ); return( n ); } /** * vips_tracked_get_files: * * Returns the number of open files. * * Returns: the number of open files */ int vips_tracked_get_files( void ) { int n; vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); n = vips_tracked_files; g_mutex_unlock( vips_tracked_mutex ); return( n ); } vips-8.2.2/libvips/iofuncs/sinkscreen.c0000664000175000017500000006373612627657061015110 00000000000000/* aynchronous screen sink * * 1/1/10 * - from im_render.c * 25/11/10 * - in synchronous mode, use a single region for input and save huge * mem use * 20/1/14 * - bg render thread quits on shutdown * 1/12/15 * - don't do anything to out or mask after they have closed * - only run the bg render thread when there's work to do */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* Verbose debugging output. #define VIPS_DEBUG */ /* Trace allocate/free. #define VIPS_DEBUG_AMBER */ /* Trace reschedule #define VIPS_DEBUG_GREEN */ /* Trace serious problems. #define VIPS_DEBUG_RED */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #ifdef HAVE_UNISTD_H #include #endif /*HAVE_UNISTD_H*/ #include #include #include #ifdef VIPS_DEBUG_AMBER static int render_num_renders = 0; #endif /*VIPS_DEBUG_AMBER*/ /* A tile in our cache. */ typedef struct { struct _Render *render; VipsRect area; /* Place here (unclipped) */ VipsRegion *region; /* VipsRegion with the pixels */ /* The tile contains calculated pixels. Though the region may have been * invalidated behind our backs: we have to check that too. */ gboolean painted; /* The tile is on the dirty list. This saves us having to search the * dirty list all the time. */ gboolean dirty; /* Time of last use, for LRU flush */ int ticks; } Tile; /* Per-call state. */ typedef struct _Render { /* Reference count this, since we use these things from several * threads. We can't easily use the gobject ref count system since we * need a lock around operations. */ int ref_count; GMutex *ref_count_lock; /* Parameters. */ VipsImage *in; /* Image we render */ VipsImage *out; /* Write tiles here on demand */ VipsImage *mask; /* Set valid pixels here */ int tile_width; /* Tile size */ int tile_height; int max_tiles; /* Maximum number of tiles */ int priority; /* Larger numbers done sooner */ VipsSinkNotify notify; /* Tell caller about paints here */ void *a; /* Lock here before reading or modifying the tile structure. */ GMutex *lock; /* Tile cache. */ GSList *all; /* All our tiles */ int ntiles; /* Number of tiles */ int ticks; /* Inc. on each access ... used for LRU */ /* List of dirty tiles. Most recent at the front. */ GSList *dirty; /* Hash of tiles with positions. Tiles can be dirty or painted. */ GHashTable *tiles; /* A shutdown flag. If ->out or ->mask close, we must no longer do * anything to them until we shut down too. */ gboolean shutdown; } Render; /* Our per-thread state. */ typedef struct _RenderThreadState { VipsThreadState parent_object; /* The tile that should be calculated. */ Tile *tile; } RenderThreadState; typedef struct _RenderThreadStateClass { VipsThreadStateClass parent_class; } RenderThreadStateClass; G_DEFINE_TYPE( RenderThreadState, render_thread_state, VIPS_TYPE_THREAD_STATE ); /* The BG thread which sits waiting to do some calculations. */ static GThread *render_thread = NULL; /* Set this to ask the render thread to quit. */ static gboolean render_kill = FALSE; /* All the renders with dirty tiles. */ static GMutex *render_dirty_lock = NULL; static GSList *render_dirty_all = NULL; /* Set this to make the bg thread stop and reschedule. */ static gboolean render_reschedule = FALSE; static void render_thread_state_class_init( RenderThreadStateClass *class ) { VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); object_class->nickname = "renderthreadstate"; object_class->description = _( "per-thread state for render" ); } static void render_thread_state_init( RenderThreadState *state ) { state->tile = NULL; } static VipsThreadState * render_thread_state_new( VipsImage *im, void *a ) { return( VIPS_THREAD_STATE( vips_object_new( render_thread_state_get_type(), vips_thread_state_set, im, a ) ) ); } static void * tile_free( Tile *tile ) { VIPS_DEBUG_MSG_AMBER( "tile_free\n" ); VIPS_UNREF( tile->region ); vips_free( tile ); return( NULL ); } static int render_free( Render *render ) { VIPS_DEBUG_MSG_AMBER( "render_free: %p\n", render ); g_assert( render->ref_count == 0 ); g_mutex_lock( render_dirty_lock ); if( g_slist_find( render_dirty_all, render ) ) render_dirty_all = g_slist_remove( render_dirty_all, render ); g_mutex_unlock( render_dirty_lock ); vips_g_mutex_free( render->ref_count_lock ); vips_g_mutex_free( render->lock ); vips_slist_map2( render->all, (VipsSListMap2Fn) tile_free, NULL, NULL ); VIPS_FREEF( g_slist_free, render->all ); render->ntiles = 0; VIPS_FREEF( g_slist_free, render->dirty ); VIPS_FREEF( g_hash_table_destroy, render->tiles ); vips_free( render ); #ifdef VIPS_DEBUG_AMBER render_num_renders -= 1; #endif /*VIPS_DEBUG_AMBER*/ return( 0 ); } /* Ref and unref a Render ... free on last unref. */ static int render_ref( Render *render ) { g_mutex_lock( render->ref_count_lock ); g_assert( render->ref_count != 0 ); render->ref_count += 1; g_mutex_unlock( render->ref_count_lock ); return( 0 ); } static int render_unref( Render *render ) { int kill; g_mutex_lock( render->ref_count_lock ); g_assert( render->ref_count > 0 ); render->ref_count -= 1; kill = render->ref_count == 0; g_mutex_unlock( render->ref_count_lock ); if( kill ) render_free( render ); return( 0 ); } /* Get the first render with dirty tiles. */ static Render * render_dirty_get( void ) { Render *render; g_mutex_lock( render_dirty_lock ); /* Just take the head of the jobs list ... we sort when we add. */ render = NULL; if( render_dirty_all ) { render = (Render *) render_dirty_all->data; /* Ref the render to make sure it can't die while we're * working on it. */ render_ref( render ); render_dirty_all = g_slist_remove( render_dirty_all, render ); } g_mutex_unlock( render_dirty_lock ); return( render ); } /* Get the next tile to paint off the dirty list. */ static Tile * render_tile_dirty_get( Render *render ) { Tile *tile; if( !render->dirty ) tile = NULL; else { tile = (Tile *) render->dirty->data; g_assert( tile->dirty ); render->dirty = g_slist_remove( render->dirty, tile ); tile->dirty = FALSE; } return( tile ); } /* Pick a dirty tile to reuse. We could potentially get the tile that * render_work() is working on in the background :-( but I don't think we'll * get a crash, just a mis-paint. It should be vanishingly impossible anyway. */ static Tile * render_tile_dirty_reuse( Render *render ) { Tile *tile; if( !render->dirty ) tile = NULL; else { tile = (Tile *) g_slist_last( render->dirty )->data; render->dirty = g_slist_remove( render->dirty, tile ); g_assert( tile->dirty ); tile->dirty = FALSE; VIPS_DEBUG_MSG( "render_tile_get_dirty_reuse: " "reusing dirty %p\n", tile ); } return( tile ); } /* Add a tile to the dirty list. */ static void tile_dirty_set( Tile *tile ) { Render *render = tile->render; if( !tile->dirty ) { g_assert( !g_slist_find( render->dirty, tile ) ); render->dirty = g_slist_prepend( render->dirty, tile ); tile->dirty = TRUE; tile->painted = FALSE; } else g_assert( g_slist_find( render->dirty, tile ) ); } /* Bump a tile to the front of the dirty list, if it's there. */ static void tile_dirty_bump( Tile *tile ) { Render *render = tile->render; if( tile->dirty ) { g_assert( g_slist_find( render->dirty, tile ) ); render->dirty = g_slist_remove( render->dirty, tile ); render->dirty = g_slist_prepend( render->dirty, tile ); } else g_assert( !g_slist_find( render->dirty, tile ) ); } static int render_allocate( VipsThreadState *state, void *a, gboolean *stop ) { Render *render = (Render *) a; RenderThreadState *rstate = (RenderThreadState *) state; Tile *tile; g_mutex_lock( render->lock ); if( render_reschedule || !(tile = render_tile_dirty_get( render )) ) { VIPS_DEBUG_MSG_GREEN( "render_allocate: stopping\n" ); *stop = TRUE; rstate->tile = NULL; } else rstate->tile = tile; g_mutex_unlock( render->lock ); return( 0 ); } static int render_work( VipsThreadState *state, void *a ) { Render *render = (Render *) a; RenderThreadState *rstate = (RenderThreadState *) state; Tile *tile = rstate->tile; g_assert( tile ); VIPS_DEBUG_MSG( "calculating tile %p %dx%d\n", tile, tile->area.left, tile->area.top ); if( vips_region_prepare_to( state->reg, tile->region, &tile->area, tile->area.left, tile->area.top ) ) { VIPS_DEBUG_MSG_RED( "render_work: " "vips_region_prepare_to() failed: %s\n", vips_error_buffer() ); return( -1 ); } tile->painted = TRUE; /* All downstream images must drop caches, since we've (effectively) * modified render->out. */ if( !render->shutdown ) vips_image_invalidate_all( render->out ); if( !render->shutdown && render->mask ) vips_image_invalidate_all( render->mask ); /* Now clients can update. */ if( !render->shutdown && render->notify ) render->notify( render->out, &tile->area, render->a ); return( 0 ); } static void render_dirty_put( Render *render ); /* Main loop for RenderThreads. */ static void * render_thread_main( void *client ) { Render *render; while( (render = render_dirty_get()) && !render_kill ) { VIPS_DEBUG_MSG_GREEN( "render_thread_main: " "threadpool start\n" ); render_reschedule = FALSE; if( vips_threadpool_run( render->in, render_thread_state_new, render_allocate, render_work, NULL, render ) ) VIPS_DEBUG_MSG_RED( "render_thread_main: " "threadpool_run failed\n" ); VIPS_DEBUG_MSG_GREEN( "render_thread_main: " "threadpool return\n" ); /* Add back to the jobs list, if we need to. */ render_dirty_put( render ); /* _get() does a ref to make sure we keep the render * alive during processing ... unref before we loop. * This can kill off the render. */ render_unref( render ); } /* We are exiting, so render_thread must now be NULL. */ render_thread = NULL; return( NULL ); } /* Called from vips_shutdown(). */ void vips__render_shutdown( void ) { /* We may come here without having inited. */ if( !render_dirty_lock ) return; g_mutex_lock( render_dirty_lock ); if( render_thread ) { GThread *thread; thread = render_thread; g_mutex_unlock( render_dirty_lock ); render_reschedule = TRUE; render_kill = TRUE; (void) g_thread_join( thread ); } else g_mutex_unlock( render_dirty_lock ); } static int render_dirty_sort( Render *a, Render *b ) { return( b->priority - a->priority ); } /* Add to the jobs list, if it has work to be done. */ static void render_dirty_put( Render *render ) { g_mutex_lock( render_dirty_lock ); if( render->dirty ) { if( !g_slist_find( render_dirty_all, render ) ) { render_dirty_all = g_slist_prepend( render_dirty_all, render ); render_dirty_all = g_slist_sort( render_dirty_all, (GCompareFunc) render_dirty_sort ); /* Make sure there is a bg render thread, and get it to * reschedule. */ if( !render_thread ) { render_thread = vips_g_thread_new( "sink_screen", render_thread_main, NULL ); g_assert( render_thread ); } VIPS_DEBUG_MSG_GREEN( "render_dirty_put: " "reschedule\n" ); render_reschedule = TRUE; } } g_mutex_unlock( render_dirty_lock ); } static guint tile_hash( gconstpointer key ) { VipsRect *rect = (VipsRect *) key; int x = rect->left / rect->width; int y = rect->top / rect->height; return( x << 16 ^ y ); } static gboolean tile_equal( gconstpointer a, gconstpointer b ) { VipsRect *rect1 = (VipsRect *) a; VipsRect *rect2 = (VipsRect *) b; return( rect1->left == rect2->left && rect1->top == rect2->top ); } static int render_close_cb( VipsImage *image, Render *render ) { VIPS_DEBUG_MSG_AMBER( "render_close_cb\n" ); /* The output image or mask are closing. This render will stick * around for a while, since threads can still be running, but it * must no longer reference ->out or ->mask (for example, invalidating * them). */ render->shutdown = TRUE; render_unref( render ); /* If this render is being worked on, we want to jog the bg thread, * make it drop it's ref and think again. */ VIPS_DEBUG_MSG_GREEN( "render_close_cb: reschedule\n" ); render_reschedule = TRUE; return( 0 ); } static Render * render_new( VipsImage *in, VipsImage *out, VipsImage *mask, int tile_width, int tile_height, int max_tiles, int priority, VipsSinkNotify notify, void *a ) { Render *render; /* Don't use auto-free for render, we do our own lifetime management * with _ref() and _unref(). */ if( !(render = VIPS_NEW( NULL, Render )) ) return( NULL ); render->ref_count = 1; render->ref_count_lock = vips_g_mutex_new(); render->in = in; render->out = out; render->mask = mask; render->tile_width = tile_width; render->tile_height = tile_height; render->max_tiles = max_tiles; render->priority = priority; render->notify = notify; render->a = a; render->lock = vips_g_mutex_new(); render->all = NULL; render->ntiles = 0; render->ticks = 0; render->tiles = g_hash_table_new( tile_hash, tile_equal ); render->dirty = NULL; render->shutdown = FALSE; /* Both out and mask must close before we can free the render. */ g_signal_connect( out, "close", G_CALLBACK( render_close_cb ), render ); if( mask ) { g_signal_connect( mask, "close", G_CALLBACK( render_close_cb ), render ); render_ref( render ); } VIPS_DEBUG_MSG_AMBER( "render_new: %p\n", render ); #ifdef VIPS_DEBUG_AMBER render_num_renders += 1; #endif /*VIPS_DEBUG_AMBER*/ return( render ); } /* Make a Tile. */ static Tile * tile_new( Render *render ) { Tile *tile; VIPS_DEBUG_MSG_AMBER( "tile_new\n" ); /* Don't use auto-free: we need to make sure we free the tile after * Render. */ if( !(tile = VIPS_NEW( NULL, Tile )) ) return( NULL ); tile->render = render; tile->area.left = 0; tile->area.top = 0; tile->area.width = render->tile_width; tile->area.height = render->tile_height; tile->region = NULL; tile->painted = FALSE; tile->dirty = FALSE; tile->ticks = render->ticks; if( !(tile->region = vips_region_new( render->in )) ) { (void) tile_free( tile ); return( NULL ); } render->all = g_slist_prepend( render->all, tile ); render->ntiles += 1; return( tile ); } /* Search the cache for a tile by position. */ static Tile * render_tile_lookup( Render *render, VipsRect *area ) { return( (Tile *) g_hash_table_lookup( render->tiles, area ) ); } /* Add a new tile to the table. */ static void render_tile_add( Tile *tile, VipsRect *area ) { Render *render = tile->render; g_assert( !render_tile_lookup( render, area ) ); tile->area = *area; tile->painted = FALSE; /* Ignore buffer allocate errors, there's not much we could do with * them. */ if( vips_region_buffer( tile->region, &tile->area ) ) VIPS_DEBUG_MSG_RED( "render_tile_add: " "buffer allocate failed\n" ); g_hash_table_insert( render->tiles, &tile->area, tile ); } /* Move a tile to a new position. */ static void render_tile_move( Tile *tile, VipsRect *area ) { Render *render = tile->render; g_assert( render_tile_lookup( render, &tile->area ) ); if( tile->area.left != area->left || tile->area.top != area->top ) { g_assert( !render_tile_lookup( render, area ) ); g_hash_table_remove( render->tiles, &tile->area ); render_tile_add( tile, area ); } } /* We've looked at a tile ... bump to end of LRU and front of dirty. */ static void tile_touch( Tile *tile ) { Render *render = tile->render; tile->ticks = render->ticks; render->ticks += 1; tile_dirty_bump( tile ); } /* Queue a tile for calculation. */ static void tile_queue( Tile *tile, VipsRegion *reg ) { Render *render = tile->render; VIPS_DEBUG_MSG( "tile_queue: adding tile %p %dx%d to dirty\n", tile, tile->area.left, tile->area.top ); tile->painted = FALSE; tile_touch( tile ); if( render->notify ) { /* Add to the list of renders with dirty tiles. The bg * thread will pick it up and paint it. It can be already on * the dirty list. */ tile_dirty_set( tile ); render_dirty_put( render ); } else { /* no notify ... paint the tile ourselves * sychronously. No need to notify the client since they'll * never see black tiles. */ VIPS_DEBUG_MSG( "tile_queue: " "painting tile %p %dx%d synchronously\n", tile, tile->area.left, tile->area.top ); /* While we're computing, let other threads use the cache. * This tile won't get pulled out from under us since it's not * marked as "painted", and it's not on the dirty list. */ g_mutex_unlock( render->lock ); if( vips_region_prepare_to( reg, tile->region, &tile->area, tile->area.left, tile->area.top ) ) VIPS_DEBUG_MSG_RED( "tile_queue: prepare failed\n" ); g_mutex_lock( render->lock ); tile->painted = TRUE; } } static void tile_test_clean_ticks( VipsRect *key, Tile *value, Tile **best ) { if( value->painted ) if( !*best || value->ticks < (*best)->ticks ) *best = value; } /* Pick a painted tile to reuse. Search for LRU (slow!). */ static Tile * render_tile_get_painted( Render *render ) { Tile *tile; tile = NULL; g_hash_table_foreach( render->tiles, (GHFunc) tile_test_clean_ticks, &tile ); if( tile ) { VIPS_DEBUG_MSG( "render_tile_get_painted: " "reusing painted %p\n", tile ); } return( tile ); } /* Ask for an area of calculated pixels. Get from cache, request calculation, * or if we've no threads or no notify, calculate immediately. */ static Tile * render_tile_request( Render *render, VipsRegion *reg, VipsRect *area ) { Tile *tile; VIPS_DEBUG_MSG( "render_tile_request: asking for %dx%d\n", area->left, area->top ); if( (tile = render_tile_lookup( render, area )) ) { /* We already have a tile at this position. If it's invalid, * ask for a repaint. */ if( tile->region->invalid ) tile_queue( tile, reg ); else tile_touch( tile ); } else if( render->ntiles < render->max_tiles || render->max_tiles == -1 ) { /* We have fewer tiles than teh max. We can just make a new * tile. */ if( !(tile = tile_new( render )) ) return( NULL ); render_tile_add( tile, area ); tile_queue( tile, reg ); } else { /* Need to reuse a tile. Try for an old painted tile first, * then if that fails, reuse a dirty tile. */ if( !(tile = render_tile_get_painted( render )) && !(tile = render_tile_dirty_reuse( render )) ) { VIPS_DEBUG_MSG( "render_tile_request: " "no tiles to reuse\n" ); return( NULL ); } render_tile_move( tile, area ); tile_queue( tile, reg ); } return( tile ); } /* Copy what we can from the tile into the region. */ static void tile_copy( Tile *tile, VipsRegion *to ) { VipsRect ovlap; /* Find common pixels. */ vips_rect_intersectrect( &tile->area, &to->valid, &ovlap ); g_assert( !vips_rect_isempty( &ovlap ) ); /* If the tile is painted, copy over the pixels. Otherwise, fill with * zero. */ if( tile->painted && !tile->region->invalid ) { int len = VIPS_IMAGE_SIZEOF_PEL( to->im ) * ovlap.width; int y; VIPS_DEBUG_MSG( "tile_copy: " "copying calculated pixels for %p %dx%d\n", tile, tile->area.left, tile->area.top ); for( y = ovlap.top; y < VIPS_RECT_BOTTOM( &ovlap ); y++ ) { VipsPel *p = VIPS_REGION_ADDR( tile->region, ovlap.left, y ); VipsPel *q = VIPS_REGION_ADDR( to, ovlap.left, y ); memcpy( q, p, len ); } } else { VIPS_DEBUG_MSG( "tile_copy: zero filling for %p %dx%d\n", tile, tile->area.left, tile->area.top ); vips_region_paint( to, &ovlap, 0 ); } } /* Loop over the output region, filling with data from cache. */ static int image_fill( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { Render *render = (Render *) b; int tile_width = render->tile_width; int tile_height = render->tile_height; VipsRegion *reg = (VipsRegion *) seq; VipsRect *r = &out->valid; int x, y; /* Find top left of tiles we need. */ int xs = (r->left / tile_width) * tile_width; int ys = (r->top / tile_height) * tile_height; VIPS_DEBUG_MSG( "image_fill: left = %d, top = %d, " "width = %d, height = %d\n", r->left, r->top, r->width, r->height ); g_mutex_lock( render->lock ); /* FIXME ... if r fits inside a single tile, we could skip the copy. */ for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += tile_height ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += tile_width ) { VipsRect area; Tile *tile; area.left = x; area.top = y; area.width = tile_width; area.height = tile_height; tile = render_tile_request( render, reg, &area ); if( tile ) tile_copy( tile, out ); else VIPS_DEBUG_MSG_RED( "image_fill: argh!\n" ); } g_mutex_unlock( render->lock ); return( 0 ); } /* The mask image is 255 / 0 for the state of painted for each tile. */ static int mask_fill( VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ) { Render *render = (Render *) a; int tile_width = render->tile_width; int tile_height = render->tile_height; VipsRect *r = &out->valid; int x, y; /* Find top left of tiles we need. */ int xs = (r->left / tile_width) * tile_width; int ys = (r->top / tile_height) * tile_height; VIPS_DEBUG_MSG( "mask_fill: left = %d, top = %d, " "width = %d, height = %d\n", r->left, r->top, r->width, r->height ); g_mutex_lock( render->lock ); for( y = ys; y < VIPS_RECT_BOTTOM( r ); y += tile_height ) for( x = xs; x < VIPS_RECT_RIGHT( r ); x += tile_width ) { VipsRect area; Tile *tile; int value; area.left = x; area.top = y; area.width = tile_width; area.height = tile_height; tile = render_tile_lookup( render, &area ); value = (tile && tile->painted && !tile->region->invalid) ? 255 : 0; /* Only mark painted tiles containing valid pixels. */ vips_region_paint( out, &area, value ); } g_mutex_unlock( render->lock ); return( 0 ); } static void vips_sink_screen_init( void ) { render_dirty_lock = vips_g_mutex_new(); } /** * vips_sink_screen: * @in: input image * @out: output image * @mask: mask image indicating valid pixels * @tile_width: tile width * @tile_height: tile height * @max_tiles: maximum tiles to cache * @priority: rendering priority * @notify_fn: pixels are ready notification callback * @a: client data for callback * * This operation renders @in in the background, making pixels available on * @out as they are calculated. The @notify_fn callback is run every time a new * set of pixels are available. Calculated pixels are kept in a cache with * tiles sized @tile_width by @tile_height pixels and with at most @max_tiles * tiles. * If @max_tiles is -1, the cache is of unlimited size (up to the maximum image * size). * The @mask image is a one-band uchar image and has 255 for pixels which are * currently in cache and 0 for uncalculated pixels. * * Only a single sink is calculated at any one time, though many may be * alive. Use @priority to indicate which renders are more important: * zero means normal * priority, negative numbers are low priority, positive numbers high * priority. * * Calls to vips_region_prepare() on @out return immediately and hold * whatever is * currently in cache for that #VipsRect (check @mask to see which parts of the * #VipsRect are valid). Any pixels in the #VipsRect which are not in * cache are added * to a queue, and the @notify_fn callback will trigger when those pixels are * ready. * * The @notify_fn callback is run from one of the background threads. In the * callback * you need to somehow send a message to the main thread that the pixels are * ready. In a glib-based application, this is easily done with g_idle_add(). * * If @notify_fn is %NULL then vips_sink_screen() runs synchronously. * vips_region_prepare() on @out will always block until the pixels have been * calculated. * * See also: vips_tilecache(), vips_region_prepare(), * vips_sink_disc(), vips_sink(). * * Returns: 0 on sucess, -1 on error. */ int vips_sink_screen( VipsImage *in, VipsImage *out, VipsImage *mask, int tile_width, int tile_height, int max_tiles, int priority, VipsSinkNotify notify_fn, void *a ) { static GOnce once = G_ONCE_INIT; Render *render; g_once( &once, (GThreadFunc) vips_sink_screen_init, NULL ); if( tile_width <= 0 || tile_height <= 0 || max_tiles < -1 ) { vips_error( "vips_sink_screen", "%s", _( "bad parameters" ) ); return( -1 ); } if( vips_image_pio_input( in ) || vips_image_pipelinev( out, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); if( mask ) { if( vips_image_pipelinev( mask, VIPS_DEMAND_STYLE_SMALLTILE, in, NULL ) ) return( -1 ); mask->Bands = 1; mask->BandFmt = VIPS_FORMAT_UCHAR; mask->Type = VIPS_INTERPRETATION_B_W; mask->Coding = VIPS_CODING_NONE; } if( !(render = render_new( in, out, mask, tile_width, tile_height, max_tiles, priority, notify_fn, a )) ) return( -1 ); VIPS_DEBUG_MSG( "vips_sink_screen: max = %d, %p\n", max_tiles, render ); if( vips_image_generate( out, vips_start_one, image_fill, vips_stop_one, in, render ) ) return( -1 ); if( mask && vips_image_generate( mask, NULL, mask_fill, NULL, render, NULL ) ) return( -1 ); return( 0 ); } void vips__print_renders( void ) { #ifdef VIPS_DEBUG_AMBER printf( "%d active renders\n", render_num_renders ); #endif /*VIPS_DEBUG_AMBER*/ printf( "%d dirty renders\n", g_slist_length( render_dirty_all ) ); } vips-8.2.2/libvips/iofuncs/Makefile.am0000664000175000017500000000361612605514112014604 00000000000000noinst_LTLIBRARIES = libiofuncs.la libiofuncs_la_SOURCES = \ vipsmarshal.h \ vipsmarshal.c \ type.c \ gate.c \ enumtypes.c \ object.c \ base64.h \ base64.c \ error.c \ image.c \ vips.c \ generate.c \ mapfile.c \ cache.c \ sink.h \ sink.c \ sinkmemory.c \ sinkdisc.c \ sinkscreen.c \ memory.c \ header.c \ operation.c \ region.c \ rect.c \ semaphore.c \ threadpool.c \ util.c \ init.c \ buf.c \ window.c \ vector.c \ system.c \ buffer.c vipsmarshal.h: glib-genmarshal --prefix=vips --header vipsmarshal.list > vipsmarshal.h vipsmarshal.c: echo "#include \"vipsmarshal.h\"" > vipsmarshal.c glib-genmarshal --prefix=vips --body vipsmarshal.list >> vipsmarshal.c EXTRA_DIST = \ enumtemplate \ vipsmarshal.h \ vipsmarshal.c \ vipsmarshal.list AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ # the headers we scan for enums etc. # keep in sync with ../include/vips/Makefile.am # we need absolute filenames here since this list appears in the header dir as # well vips_scan_headers = \ ${top_srcdir}/libvips/include/vips/memory.h \ ${top_srcdir}/libvips/include/vips/create.h \ ${top_srcdir}/libvips/include/vips/foreign.h \ ${top_srcdir}/libvips/include/vips/conversion.h \ ${top_srcdir}/libvips/include/vips/arithmetic.h \ ${top_srcdir}/libvips/include/vips/util.h \ ${top_srcdir}/libvips/include/vips/image.h \ ${top_srcdir}/libvips/include/vips/colour.h \ ${top_srcdir}/libvips/include/vips/operation.h \ ${top_srcdir}/libvips/include/vips/convolution.h \ ${top_srcdir}/libvips/include/vips/morphology.h \ ${top_srcdir}/libvips/include/vips/draw.h \ ${top_srcdir}/libvips/include/vips/basic.h \ ${top_srcdir}/libvips/include/vips/object.h enumtypes.c: $(vips_scan_headers) Makefile glib-mkenums --template enumtemplate \ $(vips_scan_headers) > xgen-getc && \ ( cmp -s xgen-getc enumtypes.c || cp xgen-getc enumtypes.c ) && \ rm -f xgen-getc vips-8.2.2/libvips/iofuncs/object.c0000664000175000017500000022751612651125123014172 00000000000000/* abstract base class for all vips objects * * Edited from nip's base class, 15/10/08 */ /* Copyright (C) 1991-2003 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define VIPS_DEBUG #define DEBUG_REF */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include "vipsmarshal.h" /** * SECTION: object * @short_description: the VIPS base object class * @stability: Stable * @see_also: operation * @include: vips/vips.h * * The #VipsObject class and associated types and macros. * * #VipsObject is the base class for all objects in libvips. It has the * following major features: * * Functional class creation Vips objects have a very * regular lifecycle: initialise, build, use, destroy. They behave rather like * function calls and are free of side-effects. * * Run-time introspection Vips objects can be fully * introspected at run-time. There is not need for separate source-code * analysis. * * Command-line interface Any vips object can be run from * the command-line with the `vips` driver program. * * ## The #VipsObject lifecycle * * #VipsObject s have a strictly defined lifecycle, split broadly as construct * and then use. In detail, the stages are: * * 1. g_object_new(). The #VipsObject is created with g_object_new(). Objects * in this state are blank slates and need to have their various parameters * set. * * 2. g_object_set(). You loop over the #VipsArgument that the object has * defined with vips_argument_map(). Arguments have a set of flags attached to * them for required, optional, input, output, type, and so on. You must set * all required arguments. * * 3. vips_object_build(). Call this to construct the object and get it ready * for use. Building an object happens in four stages, see below. * * 4. g_object_get(). The object has now been built. You can read out any * computed values. * * 5. g_object_unref(). When you are done with an object, you can unref it. * See the section on reference counting for an explanation of the convention * that #VipsObject uses. When the last ref to an object is released, the * object is closed. Objects close in three stages, see below. * * The stages inside vips_object_build() are: * * 1. Chain up through the object's @build class methods. At each stage, * each class does any initial setup and checking, then chains up to its * superclass. * * 2. The innermost @build method inside #VipsObject itself checks that all * input arguments have been set and then returns. * * 3. All object @build methods now finish executing, from innermost to * outermost. They know all input arguments have been checked and supplied, so * now they set all output arguments. * * 4. vips_object_build() finishes the process by checking that all output * objects have been set, and then triggering the #VipsObject::postbuild * signal. #VipsObject::postbuild only runs if the object has constructed * successfuly. * * #VipsOperation has a cache of recent operation objects, see that class for * an explanation of vips_cache_operation_build(). * * Finally the stages inside close are: * * 1. #VipsObject::preclose. This is emitted at the start of * the #VipsObject dispose. The object is still functioning. * * 2. #VipsObject::close. This runs just after all #VipsArgument held by * the object have been released. * * 3. #VipsObject::postclose. This runs right at the end. The object * pointer is still valid, but nothing else is. * * ## #VipsArgument * * libvips has a simple mechanism for automating at least some aspects of * %GObject properties. You add a set of macros to your _class_init() which * describe the arguments, and set the get and set functions to the vips ones. * * See extending for a complete example. * * ## The #VipsObject reference counting convention * * #VipsObject has a set of conventions to simplify reference counting. * * 1. All input %GObject have a ref added to them, owned by the object. When a * #VipsObject is unreffed, all of these refs to input objects are * automatically dropped. * * 2. All output %GObject hold a ref to the object. When a %GObject which is an * output of a #VipsObject is disposed, it must drop this reference. * #VipsObject which are outputs of other #VipsObject will do this * automatically. * * See #VipsOperation for an example of #VipsObject reference counting. * */ /** * VipsArgumentFlags: * @VIPS_ARGUMENT_NONE: no flags * @VIPS_ARGUMENT_REQUIRED: must be set in the constructor * @VIPS_ARGUMENT_CONSTRUCT: can only be set in the constructor * @VIPS_ARGUMENT_SET_ONCE: can only be set once * @VIPS_ARGUMENT_SET_ALWAYS: don't do use-before-set checks * @VIPS_ARGUMENT_INPUT: is an input argument (one we depend on) * @VIPS_ARGUMENT_OUTPUT: is an output argument (depends on us) * @VIPS_ARGUMENT_DEPRECATED: just there for back-compat, hide * @VIPS_ARGUMENT_MODIFY: the input argument will be modified * * Flags we associate with each object argument. * * Have separate input & output flags. Both set is an error; neither set is OK. * * Input gobjects are automatically reffed, output gobjects automatically ref * us. We also automatically watch for "destroy" and unlink. * * @VIPS_ARGUMENT_SET_ALWAYS is handy for arguments which are set from C. For * example, VipsImage::width is a property that gives access to the Xsize * member of struct _VipsImage. We default its 'assigned' to TRUE * since the field is always set directly by C. * * @VIPS_ARGUMENT_DEPRECATED arguments are not shown in help text, are not * looked for if required, are not checked for "have-been-set". You can * deprecate a required argument, but you must obviously add a new required * argument if you do. * * Input args with @VIPS_ARGUMENT_MODIFY will be modified by the operation. * This is used for things like the in-place drawing operations. */ /* Our signals. */ enum { SIG_POSTBUILD, SIG_PRECLOSE, SIG_CLOSE, SIG_POSTCLOSE, SIG_LAST }; /* Table of all objects, handy for debugging. */ static GHashTable *vips__object_all = NULL; static GMutex *vips__object_all_lock = NULL; static guint vips_object_signals[SIG_LAST] = { 0 }; int _vips__argument_id = 1; /* Keep a cache of nickname -> GType lookups. */ static GHashTable *vips__object_nickname_table = NULL; G_DEFINE_ABSTRACT_TYPE( VipsObject, vips_object, G_TYPE_OBJECT ); /* Don't call this directly, see vips_object_build(). */ static int vips_object_postbuild( VipsObject *object ) { int result; #ifdef DEBUG printf( "vips_object_postbuild: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_signal_emit( object, vips_object_signals[SIG_POSTBUILD], 0, &result ); return( result ); } void vips_object_preclose( VipsObject *object ) { if( !object->preclose ) { object->preclose = TRUE; #ifdef DEBUG printf( "vips_object_preclose: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_signal_emit( object, vips_object_signals[SIG_PRECLOSE], 0 ); } } static void vips_object_close( VipsObject *object ) { if( !object->close ) { object->close = TRUE; #ifdef DEBUG printf( "vips_object_close: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_signal_emit( object, vips_object_signals[SIG_CLOSE], 0 ); } } static void vips_object_postclose( VipsObject *object ) { if( !object->postclose ) { object->postclose = TRUE; #ifdef DEBUG printf( "vips_object_postclose: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_signal_emit( object, vips_object_signals[SIG_POSTCLOSE], 0 ); } } static void * vips_object_check_required( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); int *result = (int *) a; VipsArgumentFlags *iomask = (VipsArgumentFlags *) b; VIPS_DEBUG_MSG( "vips_object_check_required: %s\n", g_param_spec_get_name( pspec ) ); VIPS_DEBUG_MSG( "\trequired: %d\n", argument_class->flags & VIPS_ARGUMENT_REQUIRED ); VIPS_DEBUG_MSG( "\tconstruct: %d\n", argument_class->flags & VIPS_ARGUMENT_CONSTRUCT ); VIPS_DEBUG_MSG( "\tinput: %d\n", argument_class->flags & VIPS_ARGUMENT_INPUT ); VIPS_DEBUG_MSG( "\toutput: %d\n", argument_class->flags & VIPS_ARGUMENT_OUTPUT ); VIPS_DEBUG_MSG( "\tassigned: %d\n", argument_instance->assigned ); if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && !(argument_class->flags & VIPS_ARGUMENT_DEPRECATED) && (argument_class->flags & *iomask) && !argument_instance->assigned ) { vips_error( class->nickname, _( "parameter %s not set" ), g_param_spec_get_name( pspec ) ); *result = -1; } return( NULL ); } int vips_object_build( VipsObject *object ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); /* Input and output args must both be set. */ VipsArgumentFlags iomask = VIPS_ARGUMENT_INPUT | VIPS_ARGUMENT_OUTPUT; int result; #ifdef DEBUG printf( "vips_object_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( object_class->build( object ) ) return( -1 ); /* Check all required arguments have been supplied, don't stop on 1st * error. */ result = 0; (void) vips_argument_map( object, vips_object_check_required, &result, &iomask ); /* ... more checks go here. */ object->constructed = TRUE; /* Only postbuild on success. */ if( !result ) result = vips_object_postbuild( object ); return( result ); } /** * vips_object_summary_class: (skip) * @klass: class to summarise * @buf: write summary here * * Generate a human-readable summary for a class. */ void vips_object_summary_class( VipsObjectClass *klass, VipsBuf *buf ) { klass->summary_class( klass, buf ); } /** * vips_object_summary: (skip) * @object: object to summarise * @buf: write summary here * * Generate a human-readable summary for an object. */ void vips_object_summary( VipsObject *object, VipsBuf *buf ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); class->summary( object, buf ); } /** * vips_object_dump: (skip) * @object: object to dump * @buf: write dump here * * Dump everything that vips knows about an object to a string. */ void vips_object_dump( VipsObject *object, VipsBuf *buf ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); class->dump( object, buf ); } void vips_object_print_summary_class( VipsObjectClass *class ) { char str[2048]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_summary_class( class, &buf ); printf( "%s\n", vips_buf_all( &buf ) ); } void vips_object_print_summary( VipsObject *object ) { char str[2048]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_summary( object, &buf ); printf( "%s\n", vips_buf_all( &buf ) ); } void vips_object_print_dump( VipsObject *object ) { char str[32768]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_dump( object, &buf ); printf( "%s\n", vips_buf_all( &buf ) ); } void vips_object_print_name( VipsObject *object ) { printf( "%s (%p)", G_OBJECT_TYPE_NAME( object ), object ); } gboolean vips_object_sanity( VipsObject *object ) { VipsObjectClass *class; char str[1000]; VipsBuf buf = VIPS_BUF_STATIC( str ); if( !object ) { printf( "vips_object_sanity: null object\n" ); return( FALSE ); } class = VIPS_OBJECT_GET_CLASS( object ); class->sanity( object, &buf ); if( !vips_buf_is_empty( &buf ) ) { printf( "sanity failure: " ); vips_object_print_name( object ); printf( " %s\n", vips_buf_all( &buf ) ); return( FALSE ); } return( TRUE ); } /* On a rewind, we dispose the old contents of the object and * reconstruct. This is used in things like im_pincheck() where a "w" * image has to be rewound and become a "p" image. * * Override in subclasses if you want to preserve some fields, see image.c. */ void vips_object_rewind( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); class->rewind( object ); } /* Extra stuff we track for properties to do our argument handling. */ static void vips_argument_instance_detach( VipsArgumentInstance *argument_instance ) { VipsObject *object = argument_instance->object; VipsArgumentClass *argument_class = argument_instance->argument_class; if( argument_instance->close_id ) { /* If close_id is set, the argument must be a gobject of some * sort, so we can fetch it. */ GObject *member = G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); if( g_signal_handler_is_connected( member, argument_instance->close_id ) ) g_signal_handler_disconnect( member, argument_instance->close_id ); argument_instance->close_id = 0; } if( argument_instance->invalidate_id ) { GObject *member = G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); if( g_signal_handler_is_connected( member, argument_instance->invalidate_id ) ) g_signal_handler_disconnect( member, argument_instance->invalidate_id ); argument_instance->invalidate_id = 0; } } /* Free a VipsArgumentInstance ... VipsArgumentClass can just be g_free()d. */ static void vips_argument_instance_free( VipsArgumentInstance *argument_instance ) { vips_argument_instance_detach( argument_instance ); g_free( argument_instance ); } VipsArgument * vips__argument_table_lookup( VipsArgumentTable *table, GParamSpec *pspec ) { VipsArgument *argument; g_mutex_lock( vips__global_lock ); argument = (VipsArgument *) g_hash_table_lookup( table, pspec ); g_mutex_unlock( vips__global_lock ); return( argument ); } static void vips_argument_table_replace( VipsArgumentTable *table, VipsArgument *argument ) { g_hash_table_replace( table, argument->pspec, argument ); } static void vips_argument_table_destroy( VipsArgumentTable *table ) { g_hash_table_destroy( table ); } /** * vips_argument_map: (skip) * @object: object whose args should be enumerated * @fn: call this function for every argument * @a: client data * @b: client data * * Loop over the vips_arguments to an object. Stop when @fn returns non-%NULL * and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_argument_map( VipsObject *object, VipsArgumentMapFn fn, void *a, void *b ) { /* Make sure we can't go during the loop. This can happen if eg. we * flush an arg that refs us. */ g_object_ref( object ); VIPS_ARGUMENT_FOR_ALL( object, pspec, argument_class, argument_instance ) { void *result; /* argument_instance should not be NULL. */ g_assert( argument_instance ); if( (result = fn( object, pspec, argument_class, argument_instance, a, b )) ) { g_object_unref( object ); return( result ); } } VIPS_ARGUMENT_FOR_ALL_END g_object_unref( object ); return( NULL ); } /** * vips_argument_class_map: (skip) * * And loop over a class. Same as ^^, but with no VipsArgumentInstance. */ void * vips_argument_class_map( VipsObjectClass *object_class, VipsArgumentClassMapFn fn, void *a, void *b ) { GSList *p; for( p = object_class->argument_table_traverse; p; p = p->next ) { VipsArgumentClass *arg_class = (VipsArgumentClass *) p->data; VipsArgument *argument = (VipsArgument *) arg_class; GParamSpec *pspec = argument->pspec; void *result; if( (result = fn( object_class, pspec, arg_class, a, b )) ) return( result ); } return( NULL ); } /* Does an vipsargument need an argument to write to? For example, an image * output needs a filename, a double output just prints. */ gboolean vips_argument_class_needsstring( VipsArgumentClass *argument_class ) { GParamSpec *pspec = ((VipsArgument *) argument_class)->pspec; GType otype; VipsObjectClass *oclass; if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) /* Bools, input or output, don't need args. */ return( FALSE ); if( argument_class->flags & VIPS_ARGUMENT_INPUT ) /* All other inputs need something. */ return( TRUE ); /* Just output objects. */ if( (otype = G_PARAM_SPEC_VALUE_TYPE( pspec )) && g_type_is_a( otype, VIPS_TYPE_OBJECT ) && (oclass = g_type_class_ref( otype )) ) /* For now, only vipsobject subclasses can ask for args. */ return( oclass->output_needs_arg ); else return( FALSE ); } /* Create a VipsArgumentInstance for each installed argument property. Ideally * we'd do this during _init() but g_object_class_find_property() does not seem * to work then :-( so we have to delay it until first access. See * vips__argument_get_instance(). */ static void vips_argument_init( VipsObject *object ) { if( !object->argument_table ) { #ifdef DEBUG printf( "vips_argument_init: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ object->argument_table = g_hash_table_new_full( g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) vips_argument_instance_free ); /* Make a VipsArgumentInstance for each installed argument * property. We can't use vips_argument_map() since that does * some sanity checks that won't pass until all arg instance * are built. */ VIPS_ARGUMENT_FOR_ALL( object, pspec, argument_class, argument_instance ) { #ifdef DEBUG printf( "vips_argument_init: " "adding instance argument for %s\n", g_param_spec_get_name( pspec ) ); #endif /*DEBUG*/ /* argument_instance should be NULL since we've not * set it yet. */ g_assert( argument_instance == NULL ); argument_instance = g_new( VipsArgumentInstance, 1 ); ((VipsArgument *) argument_instance)->pspec = pspec; argument_instance->argument_class = argument_class; argument_instance->object = object; /* SET_ALWAYS args default to assigned. */ argument_instance->assigned = argument_class->flags & VIPS_ARGUMENT_SET_ALWAYS; argument_instance->close_id = 0; argument_instance->invalidate_id = 0; vips_argument_table_replace( object->argument_table, (VipsArgument *) argument_instance ); } VIPS_ARGUMENT_FOR_ALL_END } } /** * vips__argument_get_instance: (skip) * * Convenience ... given the VipsArgumentClass, get the VipsArgumentInstance. */ VipsArgumentInstance * vips__argument_get_instance( VipsArgumentClass *argument_class, VipsObject *object ) { /* Make sure the instance args are built. */ vips_argument_init( object ); return( (VipsArgumentInstance *) vips__argument_table_lookup( object->argument_table, ((VipsArgument *) argument_class)->pspec ) ); } /** * vips_object_get_argument: (skip) * @object: the object to fetch the args from * @name: arg to fetch * @pspec: (transfer none): the pspec for this arg * @argument_class: (transfer none): the argument_class for this arg * @argument_instance: (transfer none): the argument_instance for this arg * * Look up the three things you need to work with a vips argument. * * Returns: 0 on success, or -1 on error. */ int vips_object_get_argument( VipsObject *object, const char *name, GParamSpec **pspec, VipsArgumentClass **argument_class, VipsArgumentInstance **argument_instance ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); if( !(*pspec = g_object_class_find_property( G_OBJECT_CLASS( class ), name )) ) { vips_error( class->nickname, _( "no property named `%s'" ), name ); return( -1 ); } if( !(*argument_class = (VipsArgumentClass *) vips__argument_table_lookup( class->argument_table, *pspec )) ) { vips_error( class->nickname, _( "no vips argument named `%s'" ), name ); return( -1 ); } if( !(*argument_instance = vips__argument_get_instance( *argument_class, object )) ) { vips_error( class->nickname, _( "argument `%s' has no instance" ), name ); return( -1 ); } return( 0 ); } /** * vips_object_argument_isset: * @object: the object to fetch the args from * @name: arg to fetch * * Convenience: has an argument been assigned. Useful for bindings. * * Returns: %TRUE if the argument has been assigned. */ gboolean vips_object_argument_isset( VipsObject *object, const char *name ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( FALSE ); return( argument_instance->assigned ); } /** * vips_object_get_argument_flags: * @object: the object to fetch the args from * @name: arg to fetch * * Convenience: get the flags for an argument. Useful for bindings. * * Returns: The #VipsArgumentFlags for this argument. */ VipsArgumentFlags vips_object_get_argument_flags( VipsObject *object, const char *name ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( 0 ); return( argument_class->flags ); } /** * vips_object_get_argument_priority: * @object: the object to fetch the args from * @name: arg to fetch * * Convenience: get the priority for an argument. Useful for bindings. * * Returns: The priority of this argument. */ int vips_object_get_argument_priority( VipsObject *object, const char *name ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( 0 ); return( argument_class->priority ); } static void vips_object_clear_member( VipsArgumentInstance *argument_instance ) { VipsObject *object = argument_instance->object; VipsArgumentClass *argument_class = argument_instance->argument_class; GObject **member = &G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); vips_argument_instance_detach( argument_instance ); if( *member ) { if( argument_class->flags & VIPS_ARGUMENT_INPUT ) { #ifdef DEBUG_REF printf( "vips_object_clear_member: vips object: " ); vips_object_print_name( object ); printf( " no longer refers to gobject %s (%p)\n", G_OBJECT_TYPE_NAME( *member ), *member ); printf( " count down to %d\n", G_OBJECT( *member )->ref_count - 1 ); #endif /*DEBUG_REF*/ /* We reffed the object. */ g_object_unref( *member ); } else if( argument_class->flags & VIPS_ARGUMENT_OUTPUT ) { #ifdef DEBUG_REF printf( "vips_object_clear_member: gobject %s (%p)\n", G_OBJECT_TYPE_NAME( *member ), *member ); printf( " no longer refers to vips object: " ); vips_object_print_name( object ); printf( " count down to %d\n", G_OBJECT( object )->ref_count - 1 ); #endif /*DEBUG_REF*/ g_object_unref( object ); } *member = NULL; } } /* Free any args which are holding resources. */ static void * vips_object_dispose_argument( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { g_assert( ((VipsArgument *) argument_class)->pspec == pspec ); g_assert( ((VipsArgument *) argument_instance)->pspec == pspec ); if( G_IS_PARAM_SPEC_OBJECT( pspec ) || G_IS_PARAM_SPEC_BOXED( pspec ) ) { #ifdef DEBUG printf( "vips_object_dispose_argument: " ); vips_object_print_name( object ); printf( ".%s\n", g_param_spec_get_name( pspec ) ); #endif /*DEBUG*/ g_object_set( object, g_param_spec_get_name( pspec ), NULL, NULL ); } return( NULL ); } /* Free all args on this object which may be holding resources. * * Note that this is not the same as vips_object_unref_outputs(). That * looks for output objects which may have been created during _build() which * hold refs to this object and unrefs them. * * This function looks for objects which this object holds refs to and which * may be holding sub-resources and zaps them. */ static void vips_argument_dispose_all( VipsObject *object ) { #ifdef DEBUG printf( "vips_argument_dispose_all: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ vips_argument_map( object, vips_object_dispose_argument, NULL, NULL ); } /* Free any args which are holding memory. */ static void * vips_object_free_argument( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { g_assert( ((VipsArgument *) argument_class)->pspec == pspec ); g_assert( ((VipsArgument *) argument_instance)->pspec == pspec ); if( G_IS_PARAM_SPEC_STRING( pspec ) ) { #ifdef DEBUG printf( "vips_object_free_argument: " ); vips_object_print_name( object ); printf( ".%s\n", g_param_spec_get_name( pspec ) ); #endif /*DEBUG*/ g_object_set( object, g_param_spec_get_name( pspec ), NULL, NULL ); } return( NULL ); } /* Free args which hold memory. Things like strings need to be freed right at * the end in case anyone is still using them. */ static void vips_argument_free_all( VipsObject *object ) { #ifdef DEBUG printf( "vips_argument_free_all: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ vips_argument_map( object, vips_object_free_argument, NULL, NULL ); } static void vips_object_dispose( GObject *gobject ) { VipsObject *object = VIPS_OBJECT( gobject ); #ifdef DEBUG printf( "vips_object_dispose: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ /* Our subclasses should have already called this. Run it again, just * in case. */ #ifdef DEBUG if( !object->preclose ) printf( "vips_object_dispose: pre-close missing!\n" ); #endif /*DEBUG*/ vips_object_preclose( object ); /* Clear all our arguments: they may be holding resources we should * drop. */ vips_argument_dispose_all( object ); vips_object_close( object ); vips_object_postclose( object ); vips_argument_free_all( object ); VIPS_FREEF( vips_argument_table_destroy, object->argument_table ); G_OBJECT_CLASS( vips_object_parent_class )->dispose( gobject ); } static void vips_object_finalize( GObject *gobject ) { VipsObject *object = VIPS_OBJECT( gobject ); #ifdef DEBUG printf( "vips_object_finalize: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ /* I'd like to have post-close in here, but you can't emit signals * from finalize, sadly. */ g_mutex_lock( vips__object_all_lock ); g_hash_table_remove( vips__object_all, object ); g_mutex_unlock( vips__object_all_lock ); G_OBJECT_CLASS( vips_object_parent_class )->finalize( gobject ); } static void vips_object_arg_invalidate( GObject *argument, VipsArgumentInstance *argument_instance ) { /* Image @argument has signalled "invalidate" ... resignal on our * operation. */ if( VIPS_IS_OPERATION( argument_instance->object ) ) vips_operation_invalidate( VIPS_OPERATION( argument_instance->object ) ); } static void vips_object_arg_close( GObject *argument, VipsArgumentInstance *argument_instance ) { VipsObject *object = argument_instance->object; GParamSpec *pspec = ((VipsArgument *) argument_instance)->pspec; /* Argument had reffed us ... now it's being closed, so we NULL out * the pointer to unref. */ g_object_set( object, g_param_spec_get_name( pspec ), NULL, NULL ); } /* Set a member to an object. Handle the ref counts and signal * connect/disconnect. */ void vips__object_set_member( VipsObject *object, GParamSpec *pspec, GObject **member, GObject *argument ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsArgumentClass *argument_class = (VipsArgumentClass *) vips__argument_table_lookup( class->argument_table, pspec ); VipsArgumentInstance *argument_instance = vips__argument_get_instance( argument_class, object ); GType otype = G_PARAM_SPEC_VALUE_TYPE( pspec ); g_assert( argument_instance ); vips_object_clear_member( argument_instance ); g_assert( !*member ); *member = argument; if( *member ) { if( argument_class->flags & VIPS_ARGUMENT_INPUT ) { #ifdef DEBUG_REF printf( "vips__object_set_member: vips object: " ); vips_object_print_name( object ); printf( " refers to gobject %s (%p)\n", G_OBJECT_TYPE_NAME( *member ), *member ); printf( " count up to %d\n", G_OBJECT( *member )->ref_count ); #endif /*DEBUG_REF*/ /* Ref the argument. */ g_object_ref( *member ); } else if( argument_class->flags & VIPS_ARGUMENT_OUTPUT ) { #ifdef DEBUG_REF printf( "vips__object_set_member: gobject %s (%p)\n", G_OBJECT_TYPE_NAME( *member ), *member ); printf( " refers to vips object: " ); vips_object_print_name( object ); printf( " count up to %d\n", G_OBJECT (object)->ref_count ); #endif /*DEBUG_REF*/ /* The argument reffs us. */ g_object_ref( object ); } } if( *member && g_type_is_a( otype, VIPS_TYPE_IMAGE ) ) { if( argument_class->flags & VIPS_ARGUMENT_INPUT ) { g_assert( !argument_instance->invalidate_id ); argument_instance->invalidate_id = g_signal_connect( *member, "invalidate", G_CALLBACK( vips_object_arg_invalidate ), argument_instance ); } else if( argument_class->flags & VIPS_ARGUMENT_OUTPUT ) { g_assert( !argument_instance->close_id ); argument_instance->close_id = g_signal_connect( *member, "close", G_CALLBACK( vips_object_arg_close ), argument_instance ); } } } /* Is a value NULL? We allow multiple sets of NULL so props can be cleared. * The pspec gives the value type, for consistency with the way value types * are detected in set and get. */ gboolean vips_value_is_null( GParamSpec *pspec, const GValue *value ) { if( G_IS_PARAM_SPEC_STRING( pspec ) && !g_value_get_string( value ) ) return( TRUE ); if( G_IS_PARAM_SPEC_OBJECT( pspec ) && !g_value_get_object( value ) ) return( TRUE ); if( G_IS_PARAM_SPEC_POINTER( pspec ) && !g_value_get_pointer( value ) ) return( TRUE ); if( G_IS_PARAM_SPEC_BOXED( pspec ) && !g_value_get_boxed( value ) ) return( TRUE ); return( FALSE ); } /* Also used by subclasses, so not static. */ void vips_object_set_property( GObject *gobject, guint property_id, const GValue *value, GParamSpec *pspec ) { VipsObject *object = VIPS_OBJECT( gobject ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( gobject ); VipsArgumentClass *argument_class = (VipsArgumentClass *) vips__argument_table_lookup( class->argument_table, pspec ); VipsArgumentInstance *argument_instance = vips__argument_get_instance( argument_class, object ); g_assert( argument_instance ); #ifdef DEBUG printf( "vips_object_set_property: " ); vips_object_print_name( object ); printf( ".%s\n", g_param_spec_get_name( pspec ) ); /* This can crash horribly with some values, have it as a separate * chunk so we can easily comment it out. */ { char *str_value; str_value = g_strdup_value_contents( value ); printf( "\t%s\n", str_value ); g_free( str_value ); } #endif /*DEBUG*/ g_assert( ((VipsArgument *) argument_class)->pspec == pspec ); g_assert( ((VipsArgument *) argument_instance)->pspec == pspec ); /* If this is a construct-only argument, we can only set before we've * built. */ if( argument_class->flags & VIPS_ARGUMENT_CONSTRUCT && object->constructed && !vips_value_is_null( pspec, value ) ) { g_warning( "%s: %s can't assign '%s' after construct", G_STRLOC, G_OBJECT_TYPE_NAME( gobject ), g_param_spec_get_name( pspec ) ); return; } /* If this is a set-once argument, check we've not set it before. */ if( argument_class->flags & VIPS_ARGUMENT_SET_ONCE && argument_instance->assigned && !vips_value_is_null( pspec, value ) ) { g_warning( "%s: %s can only assign '%s' once", G_STRLOC, G_OBJECT_TYPE_NAME( gobject ), g_param_spec_get_name( pspec ) ); return; } /* We can't use a switch since some param specs don't have fundamental * types and are hence not compile-time constants, argh. */ if( G_IS_PARAM_SPEC_STRING( pspec ) ) { char **member = &G_STRUCT_MEMBER( char *, object, argument_class->offset ); if( *member ) g_free( *member ); *member = g_value_dup_string( value ); } else if( G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject **member = &G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); vips__object_set_member( object, pspec, member, g_value_get_object( value ) ); } else if( G_IS_PARAM_SPEC_INT( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); *member = g_value_get_int( value ); } else if( G_IS_PARAM_SPEC_UINT64( pspec ) ) { guint64 *member = &G_STRUCT_MEMBER( guint64, object, argument_class->offset ); *member = g_value_get_uint64( value ); } else if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { gboolean *member = &G_STRUCT_MEMBER( gboolean, object, argument_class->offset ); *member = g_value_get_boolean( value ); } else if( G_IS_PARAM_SPEC_ENUM( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); *member = g_value_get_enum( value ); } else if( G_IS_PARAM_SPEC_FLAGS( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); *member = g_value_get_flags( value ); } else if( G_IS_PARAM_SPEC_POINTER( pspec ) ) { gpointer *member = &G_STRUCT_MEMBER( gpointer, object, argument_class->offset ); *member = g_value_get_pointer( value ); } else if( G_IS_PARAM_SPEC_DOUBLE( pspec ) ) { double *member = &G_STRUCT_MEMBER( double, object, argument_class->offset ); *member = g_value_get_double( value ); } else if( G_IS_PARAM_SPEC_BOXED( pspec ) ) { gpointer *member = &G_STRUCT_MEMBER( gpointer, object, argument_class->offset ); if( *member ) { g_boxed_free( G_PARAM_SPEC_VALUE_TYPE( pspec ), *member ); *member = NULL; } /* Copy the boxed into our pointer (will use eg. * vips__object_vector_dup()). */ *member = g_value_dup_boxed( value ); } else { g_warning( "%s: %s.%s unimplemented property type %s", G_STRLOC, G_OBJECT_TYPE_NAME( gobject ), g_param_spec_get_name( pspec ), g_type_name( G_PARAM_SPEC_VALUE_TYPE( pspec ) ) ); } /* Note that it's now been set. */ argument_instance->assigned = TRUE; } /* Also used by subclasses, so not static. */ void vips_object_get_property( GObject *gobject, guint property_id, GValue *value, GParamSpec *pspec ) { VipsObject *object = VIPS_OBJECT( gobject ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( gobject ); VipsArgumentClass *argument_class = (VipsArgumentClass *) vips__argument_table_lookup( class->argument_table, pspec ); VipsArgumentInstance *argument_instance = vips__argument_get_instance( argument_class, object ); g_assert( ((VipsArgument *) argument_class)->pspec == pspec ); if( !argument_instance->assigned ) { /* Set the value to the default. Things like Ruby * gobject-introspection will walk objects during GC, and we * can find ourselves fetching object values between init and * build. */ g_param_value_set_default( pspec, value ); return; } if( G_IS_PARAM_SPEC_STRING( pspec ) ) { char *member = G_STRUCT_MEMBER( char *, object, argument_class->offset ); g_value_set_string( value, member ); } else if( G_IS_PARAM_SPEC_OBJECT( pspec ) ) { GObject **member = &G_STRUCT_MEMBER( GObject *, object, argument_class->offset ); g_value_set_object( value, *member ); } else if( G_IS_PARAM_SPEC_INT( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); g_value_set_int( value, *member ); } else if( G_IS_PARAM_SPEC_UINT64( pspec ) ) { guint64 *member = &G_STRUCT_MEMBER( guint64, object, argument_class->offset ); g_value_set_uint64( value, *member ); } else if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { gboolean *member = &G_STRUCT_MEMBER( gboolean, object, argument_class->offset ); g_value_set_boolean( value, *member ); } else if( G_IS_PARAM_SPEC_ENUM( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); g_value_set_enum( value, *member ); } else if( G_IS_PARAM_SPEC_FLAGS( pspec ) ) { int *member = &G_STRUCT_MEMBER( int, object, argument_class->offset ); g_value_set_flags( value, *member ); } else if( G_IS_PARAM_SPEC_POINTER( pspec ) ) { gpointer *member = &G_STRUCT_MEMBER( gpointer, object, argument_class->offset ); g_value_set_pointer( value, *member ); } else if( G_IS_PARAM_SPEC_DOUBLE( pspec ) ) { double *member = &G_STRUCT_MEMBER( double, object, argument_class->offset ); g_value_set_double( value, *member ); } else if( G_IS_PARAM_SPEC_BOXED( pspec ) ) { gpointer *member = &G_STRUCT_MEMBER( gpointer, object, argument_class->offset ); /* Copy the boxed into our pointer (will use eg. * vips__object_vector_dup ()). */ g_value_set_boxed( value, *member ); } else { g_warning( "%s: %s.%s unimplemented property type %s", G_STRLOC, G_OBJECT_TYPE_NAME( gobject ), g_param_spec_get_name( pspec ), g_type_name( G_PARAM_SPEC_VALUE_TYPE( pspec ) ) ); } } static int vips_object_real_build( VipsObject *object ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); /* Only test input args, output ones can be set by our subclasses as * they build. See vips_object_build() above. */ VipsArgumentFlags iomask = VIPS_ARGUMENT_INPUT; int result; #ifdef DEBUG printf( "vips_object_real_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_assert( !object->constructed ); /* It'd be nice if this just copied a pointer rather than did a * strdup(). Set these here rather than in object_init, so that the * class gets a chance to set them. */ g_object_set( object, "nickname", object_class->nickname, "description", object_class->description, NULL ); /* Check all required input arguments have been supplied, don't stop * on 1st error. */ result = 0; (void) vips_argument_map( object, vips_object_check_required, &result, &iomask ); return( result ); } static int vips_object_real_postbuild( VipsObject *object ) { #ifdef DEBUG printf( "vips_object_real_postbuild: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_assert( object->constructed ); return( 0 ); } static void vips_object_real_summary_class( VipsObjectClass *class, VipsBuf *buf ) { vips_buf_appendf( buf, "%s", G_OBJECT_CLASS_NAME( class ) ); if( class->nickname ) vips_buf_appendf( buf, " (%s)", class->nickname ); if( class->description ) vips_buf_appendf( buf, ", %s", class->description ); } static void vips_object_real_summary( VipsObject *object, VipsBuf *buf ) { } static void vips_object_real_dump( VipsObject *object, VipsBuf *buf ) { vips_buf_appendf( buf, " %s (%p) count=%d", G_OBJECT_TYPE_NAME( object ), object, G_OBJECT( object )->ref_count ); if( object->local_memory ) vips_buf_appendf( buf, " %zd bytes", object->local_memory ); } static void vips_object_real_sanity( VipsObject *object, VipsBuf *buf ) { } static void vips_object_real_rewind( VipsObject *object ) { #ifdef DEBUG printf( "vips_object_real_rewind\n" ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_object_run_dispose( G_OBJECT( object ) ); object->constructed = FALSE; object->preclose = FALSE; object->close = FALSE; object->postclose = FALSE; } static VipsObject * vips_object_real_new_from_string( const char *string ) { GType type; vips_check_init(); /* The main arg selects the subclass. */ if( !(type = vips_type_find( NULL, string )) ) { vips_error( "VipsObject", _( "class \"%s\" not found" ), string ); return( NULL ); } return( VIPS_OBJECT( g_object_new( type, NULL ) ) ); } static void vips_object_real_to_string( VipsObject *object, VipsBuf *buf ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); /* Just "bicubic" or whatever. */ vips_buf_appends( buf, class->nickname ); } static void transform_string_double( const GValue *src_value, GValue *dest_value ) { g_value_set_double( dest_value, g_ascii_strtod( g_value_get_string( src_value ), NULL ) ); } static void vips_object_class_init( VipsObjectClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); if( !vips__object_all ) { vips__object_all = g_hash_table_new( g_direct_hash, g_direct_equal ); vips__object_all_lock = vips_g_mutex_new(); } gobject_class->dispose = vips_object_dispose; gobject_class->finalize = vips_object_finalize; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; class->build = vips_object_real_build; class->postbuild = vips_object_real_postbuild; class->summary_class = vips_object_real_summary_class; class->summary = vips_object_real_summary; class->dump = vips_object_real_dump; class->sanity = vips_object_real_sanity; class->rewind = vips_object_real_rewind; class->new_from_string = vips_object_real_new_from_string; class->to_string = vips_object_real_to_string; class->nickname = "object"; class->description = _( "base class" ); /* Table of VipsArgumentClass ... we can just g_free() them. */ class->argument_table = g_hash_table_new_full( g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) g_free ); class->argument_table_traverse = NULL; /* For setting double arguments from the command-line. */ g_value_register_transform_func( G_TYPE_STRING, G_TYPE_DOUBLE, transform_string_double ); VIPS_ARG_STRING( class, "nickname", 1, _( "Nickname" ), _( "Class nickname" ), VIPS_ARGUMENT_SET_ONCE, G_STRUCT_OFFSET( VipsObject, nickname ), "" ); VIPS_ARG_STRING( class, "description", 2, _( "Description" ), _( "Class description" ), VIPS_ARGUMENT_SET_ONCE, G_STRUCT_OFFSET( VipsObject, description ), "" ); /** * VipsObject::postbuild: * @object: the object that has been built * * The ::postbuild signal is emitted once just after successful object * construction. Return non-zero to cause object construction to fail. */ vips_object_signals[SIG_POSTBUILD] = g_signal_new( "postbuild", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsObjectClass, postbuild ), NULL, NULL, vips_INT__VOID, G_TYPE_INT, 0 ); /** * VipsObject::preclose: * @object: the object that is to close * * The ::preclose signal is emitted once just before object close * starts. The oject is still alive. */ vips_object_signals[SIG_PRECLOSE] = g_signal_new( "preclose", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsObjectClass, preclose ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); /** * VipsObject::close: * @object: the object that is closing * * The ::close signal is emitted once during object close. The object * is dying and may not work. */ vips_object_signals[SIG_CLOSE] = g_signal_new( "close", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsObjectClass, close ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); /** * VipsObject::postclose: * @object: the object that has closed * * The ::postclose signal is emitted once after object close. The * object pointer is still valid, but nothing else. */ vips_object_signals[SIG_POSTCLOSE] = g_signal_new( "postclose", G_TYPE_FROM_CLASS( class ), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET( VipsObjectClass, postclose ), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0 ); } static void vips_object_init( VipsObject *object ) { #ifdef DEBUG printf( "vips_object_init: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ g_mutex_lock( vips__object_all_lock ); g_hash_table_insert( vips__object_all, object, object ); g_mutex_unlock( vips__object_all_lock ); } static gint traverse_sort( gconstpointer a, gconstpointer b ) { VipsArgumentClass *class1 = (VipsArgumentClass *) a; VipsArgumentClass *class2 = (VipsArgumentClass *) b; return( class1->priority - class2->priority ); } /* Add a vipsargument ... automate some stuff with this. */ void vips_object_class_install_argument( VipsObjectClass *object_class, GParamSpec *pspec, VipsArgumentFlags flags, int priority, guint offset ) { VipsArgumentClass *argument_class = g_new( VipsArgumentClass, 1 ); GSList *argument_table_traverse; #ifdef DEBUG printf( "vips_object_class_install_argument: %p %s %s\n", object_class, g_type_name( G_TYPE_FROM_CLASS( object_class ) ), g_param_spec_get_name( pspec ) ); #endif /*DEBUG*/ /* object_class->argument* is shared, so we must lock. */ g_mutex_lock( vips__global_lock ); /* Must be a new one. */ g_assert( !g_hash_table_lookup( object_class->argument_table, pspec ) ); /* Mustn't have INPUT and OUTPUT both set. */ g_assert( !( (flags & VIPS_ARGUMENT_INPUT) && (flags & VIPS_ARGUMENT_OUTPUT)) ); ((VipsArgument *) argument_class)->pspec = pspec; argument_class->object_class = object_class; argument_class->flags = flags; argument_class->priority = priority; argument_class->offset = offset; vips_argument_table_replace( object_class->argument_table, (VipsArgument *) argument_class ); /* If this is the first argument for a new subclass, we need to clone * the traverse list we inherit. */ if( object_class->argument_table_traverse_gtype != G_TYPE_FROM_CLASS( object_class ) ) { #ifdef DEBUG printf( "vips_object_class_install_argument: " "cloning traverse\n" ); #endif /*DEBUG*/ object_class->argument_table_traverse = g_slist_copy( object_class->argument_table_traverse ); object_class->argument_table_traverse_gtype = G_TYPE_FROM_CLASS( object_class ); } /* We read argument_table_traverse without a lock (eg. see * vips_argument_map()), so we must be very careful updating it. */ argument_table_traverse = g_slist_copy( object_class->argument_table_traverse ); argument_table_traverse = g_slist_prepend( argument_table_traverse, argument_class ); argument_table_traverse = g_slist_sort( argument_table_traverse, traverse_sort ); VIPS_SWAP( GSList *, argument_table_traverse, object_class->argument_table_traverse ); g_slist_free( argument_table_traverse ); #ifdef DEBUG { GSList *p; printf( "%d items on traverse %p\n", g_slist_length( object_class->argument_table_traverse ), &object_class->argument_table_traverse ); for( p = object_class->argument_table_traverse; p; p = p->next ) { VipsArgumentClass *argument_class = (VipsArgumentClass *) p->data; printf( "\t%p %s\n", argument_class, g_param_spec_get_name( ((VipsArgument *) argument_class)->pspec ) ); } } #endif /*DEBUG*/ g_mutex_unlock( vips__global_lock ); } static void vips_object_no_value( VipsObject *object, const char *name ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) g_assert_not_reached(); if( strcmp( name, g_param_spec_get_name( pspec ) ) == 0 ) vips_error( class->nickname, _( "no value supplied for argument '%s'" ), name ); else vips_error( class->nickname, _( "no value supplied for argument '%s' ('%s')" ), name, g_param_spec_get_name( pspec ) ); } /* Set a named arg from a string. */ int vips_object_set_argument_from_string( VipsObject *object, const char *name, const char *value ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; VipsObjectClass *oclass; GType otype; GValue gvalue = { 0 }; VIPS_DEBUG_MSG( "vips_object_set_argument_from_string: %s = %s\n", name, value ); if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); otype = G_PARAM_SPEC_VALUE_TYPE( pspec ); g_assert( argument_class->flags & VIPS_ARGUMENT_INPUT ); if( g_type_is_a( otype, VIPS_TYPE_IMAGE ) ) { VipsImage *out; VipsOperationFlags flags; VipsAccess access; flags = 0; if( VIPS_IS_OPERATION( object ) ) flags = vips_operation_get_flags( VIPS_OPERATION( object ) ); if( !value ) { vips_object_no_value( object, name ); return( -1 ); } /* Read the filename. */ if( flags & VIPS_OPERATION_SEQUENTIAL_UNBUFFERED ) access = VIPS_ACCESS_SEQUENTIAL_UNBUFFERED; else if( flags & VIPS_OPERATION_SEQUENTIAL ) access = VIPS_ACCESS_SEQUENTIAL; else access = VIPS_ACCESS_RANDOM; if( !(out = vips_image_new_from_file( value, "access", access, NULL )) ) return( -1 ); g_value_init( &gvalue, VIPS_TYPE_IMAGE ); g_value_set_object( &gvalue, out ); /* Setting gvalue will have upped @out's count again, * go back to 1 so that gvalue has the only ref. */ g_object_unref( out ); } else if( g_type_is_a( otype, VIPS_TYPE_OBJECT ) && (oclass = g_type_class_ref( otype )) ) { VipsObject *new_object; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( !(new_object = vips_object_new_from_string( oclass, value )) ) return( -1 ); /* Not necessarily a VipsOperation subclass so we don't use * the cache. We could have a separate case for this. */ if( vips_object_build( new_object ) ) { g_object_unref( new_object ); return( -1 ); } g_value_init( &gvalue, G_TYPE_OBJECT ); g_value_set_object( &gvalue, new_object ); /* The GValue now has a ref, we can drop ours. */ g_object_unref( new_object ); } else if( G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { gboolean b; b = TRUE; if( value && (strcasecmp( value, "false" ) == 0 || strcasecmp( value, "no" ) == 0 || strcmp( value, "0" ) == 0) ) b = FALSE; g_value_init( &gvalue, G_TYPE_BOOLEAN ); g_value_set_boolean( &gvalue, b ); } else if( G_IS_PARAM_SPEC_INT( pspec ) ) { int i; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( sscanf( value, "%d", &i ) != 1 ) { vips_error( class->nickname, _( "'%s' is not an integer" ), value ); return( -1 ); } g_value_init( &gvalue, G_TYPE_INT ); g_value_set_int( &gvalue, i ); } else if( G_IS_PARAM_SPEC_UINT64( pspec ) ) { /* Not allways the same as guint64 :-( argh. */ long long l; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( sscanf( value, "%lld", &l ) != 1 ) { vips_error( class->nickname, _( "'%s' is not an integer" ), value ); return( -1 ); } g_value_init( &gvalue, G_TYPE_UINT64 ); g_value_set_uint64( &gvalue, l ); } else if( G_IS_PARAM_SPEC_DOUBLE( pspec ) ) { double d; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( sscanf( value, "%lg", &d ) != 1 ) { vips_error( class->nickname, _( "'%s' is not a double" ), value ); return( -1 ); } g_value_init( &gvalue, G_TYPE_DOUBLE ); g_value_set_double( &gvalue, d ); } else if( G_IS_PARAM_SPEC_ENUM( pspec ) ) { int i; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( (i = vips_enum_from_nick( class->nickname, otype, value )) < 0 ) return( -1 ); g_value_init( &gvalue, otype ); g_value_set_enum( &gvalue, i ); } else if( G_IS_PARAM_SPEC_FLAGS( pspec ) ) { /* Allow a symbolic name, or an int. */ int i; if( !value ) { vips_object_no_value( object, name ); return( -1 ); } if( sscanf( value, "%d", &i ) != 1 && (i = vips_flags_from_nick( class->nickname, otype, value )) < 0 ) { vips_error( class->nickname, _( "'%s' is not an integer" ), value ); return( -1 ); } g_value_init( &gvalue, otype ); g_value_set_flags( &gvalue, i ); } else { if( !value ) { vips_object_no_value( object, name ); return( -1 ); } g_value_init( &gvalue, G_TYPE_STRING ); g_value_set_string( &gvalue, value ); } g_object_set_property( G_OBJECT( object ), name, &gvalue ); g_value_unset( &gvalue ); return( 0 ); } /* Does an vipsargument need an argument to write to? For example, an image * output needs a filename, a double output just prints. */ gboolean vips_object_argument_needsstring( VipsObject *object, const char *name ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; #ifdef DEBUG printf( "vips_object_argument_needsstring: %s\n", name ); #endif /*DEBUG*/ if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); return( vips_argument_class_needsstring( argument_class ) ); } static void vips_object_print_arg( VipsObject *object, GParamSpec *pspec, VipsBuf *buf ) { GType type = G_PARAM_SPEC_VALUE_TYPE( pspec ); const char *name = g_param_spec_get_name( pspec ); GValue value = { 0, }; char *str_value; g_value_init( &value, type ); g_object_get_property( G_OBJECT( object ), name, &value ); str_value = g_strdup_value_contents( &value ); vips_buf_appends( buf, str_value ); g_free( str_value ); g_value_unset( &value ); } /* Write a named arg to the string. If the arg does not need a string (see * above), arg will be NULL. */ int vips_object_get_argument_to_string( VipsObject *object, const char *name, const char *arg ) { GParamSpec *pspec; GType otype; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; VipsObjectClass *oclass; #ifdef DEBUG printf( "vips_object_get_argument_to_string: %s -> %s\n", name, arg ); #endif /*DEBUG*/ if( vips_object_get_argument( object, name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); otype = G_PARAM_SPEC_VALUE_TYPE( pspec ); g_assert( argument_class->flags & VIPS_ARGUMENT_OUTPUT ); if( g_type_is_a( otype, VIPS_TYPE_IMAGE ) ) { VipsImage *in; /* Pull out the image and write it. */ g_object_get( object, name, &in, NULL ); if( vips_image_write_to_file( in, arg, NULL ) ) { g_object_unref( in ); return( -1 ); } g_object_unref( in ); } else if( g_type_is_a( otype, VIPS_TYPE_OBJECT ) && (oclass = g_type_class_ref( otype )) && oclass->output_to_arg ) { VipsObject *value; g_object_get( object, name, &value, NULL ); if( oclass->output_to_arg( value, arg ) ) { g_object_unref( value ); return( -1 ); } g_object_unref( value ); } else { char str[1000]; VipsBuf buf = VIPS_BUF_STATIC( str ); vips_object_print_arg( object, pspec, &buf ); printf( "%s\n", vips_buf_all( &buf ) ); } return( 0 ); } static void * vips_argument_is_required( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_INPUT) && !argument_instance->assigned ) return( pspec ); return( NULL ); } /* Find the first unassigned required input arg. */ static GParamSpec * vips_object_find_required( VipsObject *object ) { return( (GParamSpec *) vips_argument_map( object, vips_argument_is_required, NULL, NULL ) ); } /** * vips_object_new: (skip) * @type: object to create * @set: set arguments with this * @a: client data * @b: client data * * g_object_new() the object, set any arguments with @set, call * vips_object_build() and return the complete object. * * Returns: the new object */ VipsObject * vips_object_new( GType type, VipsObjectSetArguments set, void *a, void *b ) { VipsObject *object; vips_check_init(); object = VIPS_OBJECT( g_object_new( type, NULL ) ); if( set && set( object, a, b ) ) { g_object_unref( object ); return( NULL ); } if( vips_object_build( object ) ) { g_object_unref( object ); return( NULL ); } return( object ); } /** * vips_object_set_valist: * @object: object to set arguments on * @ap: %NULL-terminated list of argument/value pairs * * See vips_object_set(). * * Returns: 0 on success, -1 on error */ int vips_object_set_valist( VipsObject *object, va_list ap ) { char *name; VIPS_DEBUG_MSG( "vips_object_set_valist:\n" ); for( name = va_arg( ap, char * ); name; name = va_arg( ap, char * ) ) { GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; VIPS_DEBUG_MSG( "\tname = '%s' (%p)\n", name, name ); if( vips_object_get_argument( VIPS_OBJECT( object ), name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); g_object_set_property( G_OBJECT( object ), name, &value ); VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); VIPS_ARGUMENT_COLLECT_END } return( 0 ); } /** * vips_object_set: * @object: object to set arguments on * @...: %NULL-terminated list of argument/value pairs * * Set a list of vips object arguments. For example: * * |[ * vips_object_set (operation, * "input", in, * "output", &out, * NULL); * ]| * * Input arguments are given in-line, output arguments are given as pointers * to where the output value should be written. * * See also: vips_object_set_valist(), vips_object_set_from_string(). * * Returns: 0 on success, -1 on error */ int vips_object_set( VipsObject *object, ... ) { va_list ap; int result; va_start( ap, object ); result = vips_object_set_valist( object, ap ); va_end( ap ); return( result ); } /* Set object args from a string. @p should be the initial left bracket and * there should be no tokens after the matching right bracket. @p is modified. */ static int vips_object_set_args( VipsObject *object, const char *p ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsToken token; char string[VIPS_PATH_MAX]; char string2[VIPS_PATH_MAX]; GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( !(p = vips__token_need( p, VIPS_TOKEN_LEFT, string, VIPS_PATH_MAX )) ) return( -1 ); if( !(p = vips__token_must( p, &token, string, VIPS_PATH_MAX )) ) return( -1 ); for(;;) { if( token == VIPS_TOKEN_RIGHT ) break; if( token != VIPS_TOKEN_STRING ) { vips_error( class->nickname, _( "expected string or ), saw %s" ), vips_enum_nick( VIPS_TYPE_TOKEN, token ) ); return( -1 ); } /* We have to look for a '=', ')' or a ',' to see if string is * a param name or a value. */ if( !(p = vips__token_must( p, &token, string2, VIPS_PATH_MAX )) ) return( -1 ); if( token == VIPS_TOKEN_EQUALS ) { if( !(p = vips__token_need( p, VIPS_TOKEN_STRING, string2, VIPS_PATH_MAX )) ) return( -1 ); if( vips_object_set_argument_from_string( object, string, string2 ) ) return( -1 ); if( !(p = vips__token_must( p, &token, string2, VIPS_PATH_MAX )) ) return( -1 ); } else if( g_object_class_find_property( G_OBJECT_GET_CLASS( object ), string ) && !vips_object_get_argument( object, string, &pspec, &argument_class, &argument_instance ) && (argument_class->flags & VIPS_ARGUMENT_CONSTRUCT) && (argument_class->flags & VIPS_ARGUMENT_INPUT) && G_IS_PARAM_SPEC_BOOLEAN( pspec ) ) { /* The string is the name of an optional * input boolean ... set it! */ if( !argument_instance->assigned ) g_object_set( object, string, TRUE, NULL ); } else if( (pspec = vips_object_find_required( object )) ) { if( vips_object_set_argument_from_string( object, g_param_spec_get_name( pspec ), string ) ) return( -1 ); } else { vips_error( class->nickname, _( "unable to set '%s'" ), string ); return( -1 ); } /* Now must be a , or a ). */ if( token == VIPS_TOKEN_COMMA ) { if( !(p = vips__token_must( p, &token, string, VIPS_PATH_MAX )) ) return( -1 ); } else if( token != VIPS_TOKEN_RIGHT ) { vips_error( class->nickname, "%s", _( "not , or ) after parameter" ) ); return( -1 ); } } if( (p = vips__token_get( p, &token, string, VIPS_PATH_MAX )) ) { vips_error( class->nickname, "%s", _( "extra tokens after ')'" ) ); return( -1 ); } return( 0 ); } /** * vips_object_set_from_string: * @object: object to set arguments on * @string: arguments as a string * * Set object arguments from a string. The string can be something like * "a=12", or "a = 12, b = 13", or "fred". The string can optionally be * enclosed in brackets. * * You'd typically use this between creating the object and building it. * * See also: vips_object_set(), vips_object_build(), * vips_cache_operation_buildp(). * * Returns: 0 on success, -1 on error */ int vips_object_set_from_string( VipsObject *object, const char *string ) { const char *q; VipsToken token; char buffer[VIPS_PATH_MAX]; char str[VIPS_PATH_MAX]; vips_strncpy( buffer, string, VIPS_PATH_MAX ); /* Does string start with a bracket? If it doesn't, enclose the whole * thing in []. */ if( !(q = vips__token_get( buffer, &token, str, VIPS_PATH_MAX )) || token != VIPS_TOKEN_LEFT ) vips_snprintf( buffer, VIPS_PATH_MAX, "[%s]", string ); else vips_strncpy( buffer, string, VIPS_PATH_MAX ); return( vips_object_set_args( object, buffer ) ); } VipsObject * vips_object_new_from_string( VipsObjectClass *object_class, const char *p ) { const char *q; char str[VIPS_PATH_MAX]; VipsObject *object; g_assert( object_class ); g_assert( object_class->new_from_string ); /* Find the start of the optional args on the end of the string, take * everything before that as the principal arg for the constructor. */ if( (q = vips__find_rightmost_brackets( p )) ) vips_strncpy( str, p, VIPS_MIN( VIPS_PATH_MAX, q - p + 1 ) ); else vips_strncpy( str, p, VIPS_PATH_MAX ); if( !(object = object_class->new_from_string( str )) ) return( NULL ); /* More tokens there? Set any other args. */ if( q && vips_object_set_from_string( object, q ) ) { g_object_unref( object ); return( NULL ); } return( object ); } static void * vips_object_to_string_required( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsBuf *buf = (VipsBuf *) a; gboolean *first = (gboolean *) b; if( (argument_class->flags & VIPS_ARGUMENT_REQUIRED) ) { if( *first ) { vips_buf_appends( buf, "(" ); *first = FALSE; } else { vips_buf_appends( buf, "," ); } vips_object_print_arg( object, pspec, buf ); } return( NULL ); } static void * vips_object_to_string_optional( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { VipsBuf *buf = (VipsBuf *) a; gboolean *first = (gboolean *) b; if( !(argument_class->flags & VIPS_ARGUMENT_REQUIRED) && argument_instance->assigned ) { if( *first ) { vips_buf_appends( buf, "(" ); *first = FALSE; } else { vips_buf_appends( buf, "," ); } vips_buf_appends( buf, g_param_spec_get_name( pspec ) ); vips_buf_appends( buf, "=" ); vips_object_print_arg( object, pspec, buf ); } return( NULL ); } /** * vips_object_to_string: * @object: object to stringify * @buf: write string here * * The inverse of vips_object_new_from_string(): turn @object into eg. * "VipsInterpolateSnohalo1(blur=.333333)". */ void vips_object_to_string( VipsObject *object, VipsBuf *buf ) { VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( object ); gboolean first; g_assert( object_class->to_string ); /* Nicknames are not guaranteed to be unique, so use the full type * name. */ object_class->to_string( object, buf ); first = TRUE; (void) vips_argument_map( object, vips_object_to_string_required, buf, &first ); (void) vips_argument_map( object, vips_object_to_string_optional, buf, &first ); if( !first ) vips_buf_appends( buf, ")" ); } typedef struct { VipsSListMap2Fn fn; void *a; void *b; void *result; } VipsObjectMapArgs; static void vips_object_map_sub( VipsObject *key, VipsObject *value, VipsObjectMapArgs *args ) { if( !args->result ) args->result = args->fn( key, args->a, args->b ); } /** * vips_object_map: (skip) * @fn: function to call for all objects * @a: client data * @b: client data * * Call a function for all alive objects. * Stop when @fn returns non-%NULL and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_object_map( VipsSListMap2Fn fn, void *a, void *b ) { VipsObjectMapArgs args; args.fn = fn; args.a = a; args.b = b; args.result = NULL; /* We must test vips__object_all before we lock because the lock is * only created when the first object is created. */ if( vips__object_all ) { g_mutex_lock( vips__object_all_lock ); g_hash_table_foreach( vips__object_all, (GHFunc) vips_object_map_sub, &args ); g_mutex_unlock( vips__object_all_lock ); } return( args.result ); } /** * vips_type_map: (skip) * @base: base type * @fn: call this function for every type * @a: client data * @b: client data * * Map over a type's children. Stop when @fn returns non-%NULL * and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_type_map( GType base, VipsTypeMap2Fn fn, void *a, void *b ) { GType *child; guint n_children; unsigned int i; void *result; child = g_type_children( base, &n_children ); result = NULL; for( i = 0; i < n_children && !result; i++ ) result = fn( child[i], a, b ); g_free( child ); return( result ); } /** * vips_type_map_all: (skip) * @base: base type * @fn: call this function for every type * @a: client data * * Map over a type's children, direct and indirect. Stop when @fn returns * non-%NULL and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_type_map_all( GType base, VipsTypeMapFn fn, void *a ) { void *result; if( !(result = fn( base, a )) ) result = vips_type_map( base, (VipsTypeMap2Fn) vips_type_map_all, fn, a ); return( result ); } /** * vips_class_map_all: (skip) * @type: base type * @fn: call this function for every type * @a: client data * * Loop over all the subclasses of @type. Non-abstract classes only. * Stop when @fn returns * non-%NULL and return that value. * * Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first * non-%NULL value from @fn. */ void * vips_class_map_all( GType type, VipsClassMapFn fn, void *a ) { void *result; /* Avoid abstract classes. Use type_map_all for them. */ if( !G_TYPE_IS_ABSTRACT( type ) ) { /* We never unref this ref, but we never unload classes * anyway, so so what. */ if( (result = fn( VIPS_OBJECT_CLASS( g_type_class_ref( type ) ), a )) ) return( result ); } if( (result = vips_type_map( type, (VipsTypeMap2Fn) vips_class_map_all, fn, a )) ) return( result ); return( NULL ); } /* How deeply nested is a class ... used to indent class lists. */ int vips_type_depth( GType type ) { int depth; depth = 0; while( type != VIPS_TYPE_OBJECT && (type = g_type_parent( type )) ) depth += 1; return( depth ); } static void * test_name( VipsObjectClass *class, const char *nickname ) { if( strcasecmp( class->nickname, nickname ) == 0 ) return( class ); /* Check the class name too, why not. */ if( strcasecmp( G_OBJECT_CLASS_NAME( class ), nickname ) == 0 ) return( class ); return( NULL ); } /** * vips_class_find: * @basename: name of base class * @nickname: search for a class with this nickname * * Search below @basename, return the first class whose name or @nickname * matches. * * See also: vips_type_find() * * Returns: the found class. */ VipsObjectClass * vips_class_find( const char *basename, const char *nickname ) { const char *classname = basename ? basename : "VipsObject"; VipsObjectClass *class; GType base; if( !(base = g_type_from_name( classname )) ) return( NULL ); class = vips_class_map_all( base, (VipsClassMapFn) test_name, (void *) nickname ); return( class ); } /* What we store for each nickname. We can't just store the type with * GINT_TO_POINTER() since GType is 64 bits on some platforms. */ typedef struct _NicknameGType { const char *nickname; GType type; gboolean duplicate; } NicknameGType; static void * vips_class_add_hash( VipsObjectClass *class, GHashTable *table ) { GType type = G_OBJECT_CLASS_TYPE( class ); NicknameGType *hit; hit = (NicknameGType *) g_hash_table_lookup( table, (void *) class->nickname ); /* If this is not a unique name, mark as a duplicate. In this case * we'll need to fall back to a search. */ if( hit ) hit->duplicate = TRUE; else { hit = g_new( NicknameGType, 1 ); hit->nickname = class->nickname; hit->type = type; hit->duplicate = FALSE; g_hash_table_insert( table, (void *) hit->nickname, hit ); } return( NULL ); } static void * vips_class_build_hash( void ) { GHashTable *table; GType base; table = g_hash_table_new( g_str_hash, g_str_equal ); if( !(base = g_type_from_name( "VipsObject" )) ) return( NULL ); vips_class_map_all( base, (VipsClassMapFn) vips_class_add_hash, (void *) table ); return( table ); } /** * vips_type_find: * @basename: name of base class * @nickname: search for a class with this nickname * * Search below @basename, return the %GType of the class whose name or * @nickname matches, or 0 for not found. * If @basename is NULL, the whole of #VipsObject is searched. * * This function uses a cache, so it should be quick. * * See also: vips_class_find() * * Returns: the %GType of the class, or 0 if the class is not found. */ GType vips_type_find( const char *basename, const char *nickname ) { static GOnce once = G_ONCE_INIT; const char *classname = basename ? basename : "VipsObject"; NicknameGType *hit; GType base; GType type; vips__object_nickname_table = (GHashTable *) g_once( &once, (GThreadFunc) vips_class_build_hash, NULL ); hit = (NicknameGType *) g_hash_table_lookup( vips__object_nickname_table, (void *) nickname ); /* We must only search below basename ... check that the cache hit is * in the right part of the tree. */ if( !(base = g_type_from_name( classname )) ) return( 0 ); if( hit && !hit->duplicate && g_type_is_a( hit->type, base ) ) type = hit->type; else { VipsObjectClass *class; if( !(class = vips_class_find( basename, nickname )) ) return( 0 ); type = G_OBJECT_CLASS_TYPE( class ); } return( type ); } /** * vips_nickname_find: * @type: #GType to search for * * Return the VIPS nickname for a %GType. Handy for language bindings. * * Returns: (transfer none): the class nickname. */ const char * vips_nickname_find( GType type ) { gpointer p; VipsObjectClass *class; if( type && (p = g_type_class_ref( type )) && VIPS_IS_OBJECT_CLASS( p ) && (class = VIPS_OBJECT_CLASS( p )) ) return( class->nickname ); return( NULL ); } /* The vips_object_local() macro uses this as its callback. */ void vips_object_local_cb( VipsObject *vobject, GObject *gobject ) { VIPS_FREEF( g_object_unref, gobject ); } typedef struct { VipsObject **array; int n; } VipsObjectLocal; static void vips_object_local_array_cb( GObject *parent, VipsObjectLocal *local ) { int i; for( i = 0; i < local->n; i++ ) VIPS_FREEF( g_object_unref, local->array[i] ); VIPS_FREEF( g_free, local->array ); VIPS_FREEF( g_free, local ); } /** * vips_object_local_array: (skip) * @parent: objects unref when this object unrefs * @n: array size * * Make an array of NULL VipsObject pointers. When @parent closes, every * non-NULL pointer in the array will be unreffed and the array will be * freed. Handy for creating a set of temporary images for a function. * * The array is NULL-terminated, ie. contains an extra NULL element at the * end. * * Example: * * |[ * VipsObject **t; * * t = vips_object_local_array( a, 5 ); * if( * vips_add( a, b, &t[0], NULL ) || * vips_invert( t[0], &t[1], NULL ) || * vips_add( t[1], t[0], &t[2], NULL ) || * vips_costra( t[2], out, NULL ) ) * return( -1 ); * ]| * * See also: vips_object_local(). * * Returns: an array of NULL pointers of length @n */ VipsObject ** vips_object_local_array( VipsObject *parent, int n ) { VipsObjectLocal *local; local = g_new( VipsObjectLocal, 1 ); local->n = n; /* Make the array 1 too long so we can be sure there's a NULL * terminator. */ local->array = g_new0( VipsObject *, n + 1 ); g_signal_connect( parent, "close", G_CALLBACK( vips_object_local_array_cb ), local ); return( local->array ); } void vips_object_set_static( VipsObject *object, gboolean static_object ) { object->static_object = static_object; } static void * vips_object_n_static_cb( VipsObject *object, int *n ) { if( object->static_object ) *n += 1; return( NULL ); } static int vips_object_n_static( void ) { int n; n = 0; vips_object_map( (VipsSListMap2Fn) vips_object_n_static_cb, &n, NULL ); return( n ); } static void * vips_object_print_all_cb( VipsObject *object, int *n ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); char str[32768]; VipsBuf buf = VIPS_BUF_STATIC( str ); fprintf( stderr, "%d) %s (%p)", *n, G_OBJECT_TYPE_NAME( object ), object ); if( object->local_memory ) fprintf( stderr, " %zd bytes", object->local_memory ); fprintf( stderr, ", count=%d", G_OBJECT( object )->ref_count ); fprintf( stderr, "\n" ); vips_object_summary_class( class, &buf ); vips_buf_appends( &buf, ", " ); vips_object_summary( object, &buf ); fprintf( stderr, "%s\n", vips_buf_all( &buf ) ); *n += 1; return( NULL ); } void vips_object_print_all( void ) { if( vips__object_all && g_hash_table_size( vips__object_all ) > vips_object_n_static() ) { int n; fprintf( stderr, "%d objects alive:\n", g_hash_table_size( vips__object_all ) ); n = 0; vips_object_map( (VipsSListMap2Fn) vips_object_print_all_cb, &n, NULL ); } vips__type_leak(); } static void * vips_object_sanity_all_cb( VipsObject *object ) { (void) vips_object_sanity( object ); return( NULL ); } void vips_object_sanity_all( void ) { vips_object_map( (VipsSListMap2Fn) vips_object_sanity_all_cb, NULL, NULL ); } static void * vips_object_unref_outputs_sub( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ) { if( (argument_class->flags & VIPS_ARGUMENT_OUTPUT) && G_IS_PARAM_SPEC_OBJECT( pspec ) && argument_instance->assigned ) { GObject *value; g_object_get( object, g_param_spec_get_name( pspec ), &value, NULL ); /* Doing the get refs the object, so unref the get, then unref * again since this an an output object of the operation. */ g_object_unref( value ); g_object_unref( value ); } return( NULL ); } /** * vips_object_unref_outputs: * @object: object to drop output refs from * * Unref all assigned output objects. Useful for language bindings. * * After an object is built, all output args are owned by the caller. If * something goes wrong before then, we have to unref the outputs that have * been made so far. This function can also be useful for callers when * they've finished processing outputs themselves. * * See also: vips_cache_operation_build(). */ void vips_object_unref_outputs( VipsObject *object ) { (void) vips_argument_map( object, vips_object_unref_outputs_sub, NULL, NULL ); } /** * vips_object_get_description: * @object: object to fetch description from * * Fetch the object description. Useful for language bindings. * * @object.description is only avaliable after _build(), which can be too * late. This function fetches from the instance, if possible, but falls back * to the class description if we are too early. * * Returns: the object description */ const char * vips_object_get_description( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); if( object->description ) return( object->description ) ; else return( class->description ) ; } vips-8.2.2/libvips/iofuncs/Makefile.in0000664000175000017500000006216312651721157014631 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/iofuncs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libiofuncs_la_LIBADD = am_libiofuncs_la_OBJECTS = vipsmarshal.lo type.lo gate.lo enumtypes.lo \ object.lo base64.lo error.lo image.lo vips.lo generate.lo \ mapfile.lo cache.lo sink.lo sinkmemory.lo sinkdisc.lo \ sinkscreen.lo memory.lo header.lo operation.lo region.lo \ rect.lo semaphore.lo threadpool.lo util.lo init.lo buf.lo \ window.lo vector.lo system.lo buffer.lo libiofuncs_la_OBJECTS = $(am_libiofuncs_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libiofuncs_la_SOURCES) DIST_SOURCES = $(libiofuncs_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libiofuncs.la libiofuncs_la_SOURCES = \ vipsmarshal.h \ vipsmarshal.c \ type.c \ gate.c \ enumtypes.c \ object.c \ base64.h \ base64.c \ error.c \ image.c \ vips.c \ generate.c \ mapfile.c \ cache.c \ sink.h \ sink.c \ sinkmemory.c \ sinkdisc.c \ sinkscreen.c \ memory.c \ header.c \ operation.c \ region.c \ rect.c \ semaphore.c \ threadpool.c \ util.c \ init.c \ buf.c \ window.c \ vector.c \ system.c \ buffer.c EXTRA_DIST = \ enumtemplate \ vipsmarshal.h \ vipsmarshal.c \ vipsmarshal.list AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ # the headers we scan for enums etc. # keep in sync with ../include/vips/Makefile.am # we need absolute filenames here since this list appears in the header dir as # well vips_scan_headers = \ ${top_srcdir}/libvips/include/vips/memory.h \ ${top_srcdir}/libvips/include/vips/create.h \ ${top_srcdir}/libvips/include/vips/foreign.h \ ${top_srcdir}/libvips/include/vips/conversion.h \ ${top_srcdir}/libvips/include/vips/arithmetic.h \ ${top_srcdir}/libvips/include/vips/util.h \ ${top_srcdir}/libvips/include/vips/image.h \ ${top_srcdir}/libvips/include/vips/colour.h \ ${top_srcdir}/libvips/include/vips/operation.h \ ${top_srcdir}/libvips/include/vips/convolution.h \ ${top_srcdir}/libvips/include/vips/morphology.h \ ${top_srcdir}/libvips/include/vips/draw.h \ ${top_srcdir}/libvips/include/vips/basic.h \ ${top_srcdir}/libvips/include/vips/object.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/iofuncs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/iofuncs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libiofuncs.la: $(libiofuncs_la_OBJECTS) $(libiofuncs_la_DEPENDENCIES) $(EXTRA_libiofuncs_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libiofuncs_la_OBJECTS) $(libiofuncs_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/enumtypes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/header.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapfile.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/operation.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rect.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/region.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semaphore.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sink.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sinkdisc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sinkmemory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sinkscreen.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadpool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/type.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vips.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vipsmarshal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile vipsmarshal.h: glib-genmarshal --prefix=vips --header vipsmarshal.list > vipsmarshal.h vipsmarshal.c: echo "#include \"vipsmarshal.h\"" > vipsmarshal.c glib-genmarshal --prefix=vips --body vipsmarshal.list >> vipsmarshal.c enumtypes.c: $(vips_scan_headers) Makefile glib-mkenums --template enumtemplate \ $(vips_scan_headers) > xgen-getc && \ ( cmp -s xgen-getc enumtypes.c || cp xgen-getc enumtypes.c ) && \ rm -f xgen-getc # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/iofuncs/buf.c0000664000175000017500000003005312605241561013470 00000000000000/* string buffers */ /* Copyright (C) 1991-2003 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include /** * SECTION: buf * @short_description: a string you can append to * @stability: Stable * @see_also: #vips * @include: vips/vips.h * * A message buffer you can append stuff to safely and quickly. If the message * gets too long, you get "..." and truncation. Message buffers can be on the * stack or heap. * * For example: * * |[ * char txt[256]; * VipsBuf buf = VIPS_BUF_STATIC (txt); * int i; * * vips_buf_appends (&buf, "Numbers are: "); * for (i = 0; i < array_length; i++) { * if (i > 0) * vips_buf_appends (&buf, ", "); * vips_buf_appendg (&buf, array[i]); * } * printf ("%s", vips_buf_all (&buf)); * ]| */ /** * VIPS_BUF_STATIC: * @TEXT: the storage area to use * * Initialize a heap buffer. For example: * * |[ * char txt[256]; * VipsBuf buf = VIPS_BUF_STATIC (txt); * ]| */ /** * vips_buf_rewind: * @buf: the buffer * * Reset the buffer to the empty string. */ void vips_buf_rewind( VipsBuf *buf ) { buf->i = 0; buf->lasti = 0; buf->full = FALSE; if( buf->base ) buf->base[0] = '\0'; } /** * vips_buf_init: * @buf: the buffer * * Initialize a buffer. */ void vips_buf_init( VipsBuf *buf ) { buf->base = NULL; buf->mx = 0; buf->dynamic = FALSE; vips_buf_rewind( buf ); } /** * vips_buf_destroy: * @buf: the buffer * * Destroy a buffer. Only needed for heap buffers. Leaves the buffer in the * _init state. */ void vips_buf_destroy( VipsBuf *buf ) { if( buf->dynamic ) { VIPS_FREE( buf->base ); } vips_buf_init( buf ); } /** * vips_buf_set_static: * @buf: the buffer * @base: the start of the memory area to use for storage * @mx: the size of the storage area * * Attach the buffer to a static memory area. The buffer needs to have been * initialised. The memory area needs to be at least 4 bytes long. */ void vips_buf_set_static( VipsBuf *buf, char *base, int mx ) { g_assert( mx >= 4 ); vips_buf_destroy( buf ); buf->base = base; buf->mx = mx; buf->dynamic = FALSE; vips_buf_rewind( buf ); } /** * vips_buf_init_static: * @buf: the buffer * @base: the start of the memory area to use for storage * @mx: the size of the storage area * * Initialise and attach to a static memory area. VIPS_BUF_STATIC() is usually * more convenient. * * For example: * * |[ * char txt[256]; * VipsBuf buf; * * vips_buf_init_static (&buf, txt, 256); * ]| * * Static buffers don't need to be freed when they go out of scope, but their * size must be set at compile-time. */ void vips_buf_init_static( VipsBuf *buf, char *base, int mx ) { vips_buf_init( buf ); vips_buf_set_static( buf, base, mx ); } /** * vips_buf_set_dynamic: * @buf: the buffer * @mx: the size of the storage area * * Attach the buffer to a heap memory area. The buffer needs to have been * initialised. The memory area needs to be at least 4 bytes long. */ void vips_buf_set_dynamic( VipsBuf *buf, int mx ) { g_assert( mx >= 4 ); if( buf->mx == mx && buf->dynamic ) /* No change? */ vips_buf_rewind( buf ); else { vips_buf_destroy( buf ); if( !(buf->base = VIPS_ARRAY( NULL, mx, char )) ) /* No error return, so just block writes. */ buf->full = TRUE; else { buf->mx = mx; buf->dynamic = TRUE; vips_buf_rewind( buf ); } } } /** * vips_buf_init_dynamic: * @buf: the buffer * @mx: the size of the storage area * * Initialise and attach to a heap memory area. * The memory area needs to be at least 4 bytes long. * * |[ * VipsBuf buf; * * vips_buf_init_synamic (&buf, 256); * ]| * * Dynamic buffers must be freed with vips_buf_destroy(), but their size can * be set at runtime. */ void vips_buf_init_dynamic( VipsBuf *buf, int mx ) { vips_buf_init( buf ); vips_buf_set_dynamic( buf, mx ); } /** * vips_buf_appendns: * @buf: the buffer * @str: the string to append to the buffer * @sz: the size of the string to append * * Append at most @sz chars from @str to @buf. @sz < 0 means unlimited. This * is the low-level append operation: functions like vips_buf_appendf() build * on top of this. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendns( VipsBuf *buf, const char *str, int sz ) { int len; int n; int avail; int cpy; if( buf->full ) return( FALSE ); /* Amount we want to copy. */ len = strlen( str ); if( sz >= 0 ) n = VIPS_MIN( sz, len ); else n = len; /* Space available. */ avail = buf->mx - buf->i - 4; /* Amount we actually copy. */ cpy = VIPS_MIN( n, avail ); strncpy( buf->base + buf->i, str, cpy ); buf->i += cpy; if( buf->i >= buf->mx - 4 ) { buf->full = TRUE; strcpy( buf->base + buf->mx - 4, "..." ); buf->i = buf->mx - 1; return( FALSE ); } return( TRUE ); } /** * vips_buf_appends: * @buf: the buffer * @str: the string to append to the buffer * * Append the whole of @str to @buf. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appends( VipsBuf *buf, const char *str ) { return( vips_buf_appendns( buf, str, -1 ) ); } /** * vips_buf_appendc: * @buf: the buffer * @ch: the character to append to the buffer * * Append a single character @ch to @buf. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendc( VipsBuf *buf, char ch ) { char tiny[2]; tiny[0] = ch; tiny[1] = '\0'; return( vips_buf_appendns( buf, tiny, 1 ) ); } /** * vips_buf_change: * @buf: the buffer * @o: the string to search for * @n: the string to substitute * * Swap the rightmost occurence of @o for @n. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_change( VipsBuf *buf, const char *old, const char *new ) { int olen = strlen( old ); int nlen = strlen( new ); int i; if( buf->full ) return( FALSE ); if( buf->i - olen + nlen > buf->mx - 4 ) { buf->full = TRUE; return( FALSE ); } /* Find pos of old. */ for( i = buf->i - olen; i > 0; i-- ) if( vips_isprefix( old, buf->base + i ) ) break; g_assert( i >= 0 ); /* Move tail of buffer to make right-size space for new. */ memmove( buf->base + i + nlen, buf->base + i + olen, buf->i - i - olen ); /* Copy new in. */ memcpy( buf->base + i, new, nlen ); buf->i = i + nlen + (buf->i - i - olen); return( TRUE ); } /** * vips_buf_removec: * @buf: the buffer * @ch: the character to remove * * Remove the last character, if it's @ch. * * Returns: %FALSE on failure, %TRUE otherwise. */ gboolean vips_buf_removec( VipsBuf *buf, char ch ) { if( buf->full ) return( FALSE ); if( buf->i <= 0 ) return( FALSE ); if( buf->base[buf->i - 1] == ch ) buf->i -= 1; return( TRUE ); } /** * vips_buf_vappendf: * @buf: the buffer * @fmt: printf()-style format string * @ap: arguments to format string * * Append to @buf, args as vprintf(). * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_vappendf( VipsBuf *buf, const char *fmt, va_list ap ) { int avail; char *p; if( buf->full ) return( FALSE ); avail = buf->mx - buf->i - 4; p = buf->base + buf->i; (void) vips_vsnprintf( p, avail, fmt, ap ); buf->i += strlen( p ); if( buf->i >= buf->mx - 4 ) { buf->full = TRUE; strcpy( buf->base + buf->mx - 4, "..." ); buf->i = buf->mx - 1; return( FALSE ); } return( TRUE ); } /** * vips_buf_appendf: * @buf: the buffer * @fmt: printf()-style format string * @...: arguments to format string * * Format the string and append to @buf. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendf( VipsBuf *buf, const char *fmt, ... ) { va_list ap; gboolean result; va_start( ap, fmt ); result = vips_buf_vappendf( buf, fmt, ap ); va_end( ap ); return( result ); } /** * vips_buf_appendg: * @buf: the buffer * @g: value to format and append * * Append a double, non-localised. Useful for config files etc. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendg( VipsBuf *buf, double g ) { char text[G_ASCII_DTOSTR_BUF_SIZE]; g_ascii_dtostr( text, sizeof( text ), g ); return( vips_buf_appends( buf, text ) ); } /** * vips_buf_appendd: * @buf: the buffer * @d: value to format and append * * Append a number. If the number is -ve, add brackets. Needed for * building function arguments. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendd( VipsBuf *buf, int d ) { if( d < 0 ) return( vips_buf_appendf( buf, " (%d)", d ) ); else return( vips_buf_appendf( buf, " %d", d ) ); } /** * vips_buf_appendgv: * @buf: the buffer * @value: #GValue to format and append * * Format and append a #GValue with g_strdup_value_contents(). * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_appendgv( VipsBuf *buf, GValue *value ) { char *str_value; gboolean result; str_value = g_strdup_value_contents( value ); result = vips_buf_appends( buf, str_value ); g_free( str_value ); return( result ); } /** * vips_buf_append_size: * @buf: the buffer * @n: the number of bytes * * Turn a number of bytes into a sensible string ... eg "12", "12KB", "12MB", * "12GB" etc. * * Returns: %FALSE on overflow, %TRUE otherwise. */ gboolean vips_buf_append_size( VipsBuf *buf, size_t n ) { const static char *names[] = { /* File length unit. */ N_( "bytes" ), /* Kilobyte unit. */ N_( "KB" ), /* Megabyte unit. */ N_( "MB" ), /* Gigabyte unit. */ N_( "GB" ), /* Terabyte unit. */ N_( "TB" ) }; double sz = n; int i; /* -1, since we want to stop at TB, not run off the end. */ for( i = 0; sz > 1024 && i < VIPS_NUMBER( names ) - 1; sz /= 1024, i++ ) ; if( i == 0 ) /* No decimal places for bytes. */ return( vips_buf_appendf( buf, "%g %s", sz, _( names[i] ) ) ); else return( vips_buf_appendf( buf, "%.2f %s", sz, _( names[i] ) ) ); } /** * vips_buf_all: * @buf: the buffer * * Return the contents of the buffer as a C string. * * Returns: the %NULL-terminated contents of the buffer. This is a pointer to * the memory managed by the buffer and must not be freed. */ const char * vips_buf_all( VipsBuf *buf ) { buf->base[buf->i] = '\0'; return( buf->base ); } /** * vips_buf_firstline: * @buf: the buffer * * Trim to just the first line (excluding "\n"). * * Returns: the %NULL-terminated contents of the buffer. This is a pointer to * the memory managed by the buffer and must not be freed. */ const char * vips_buf_firstline( VipsBuf *buf ) { char *p; if( (p = strchr( vips_buf_all( buf ), '\n' )) ) *p = '\0'; return( vips_buf_all( buf ) ); } /** * vips_buf_is_empty: * @buf: the buffer * * Returns: %TRUE if the buffer is empty. */ gboolean vips_buf_is_empty( VipsBuf *buf ) { return( buf->i == 0 ); } /** * vips_buf_is_full: * @buf: the buffer * * Returns: %TRUE if the buffer is full. */ gboolean vips_buf_is_full( VipsBuf *buf ) { return( buf->full ); } /** * vips_buf_len: * @buf: the buffer * * Returns: the number of characters currently in the buffer. */ int vips_buf_len( VipsBuf *buf ) { return( buf->i ); } vips-8.2.2/libvips/iofuncs/vipsmarshal.c0000664000175000017500000000740012530402247015242 00000000000000#include "vipsmarshal.h" #include #ifdef G_ENABLE_DEBUG #define g_marshal_value_peek_boolean(v) g_value_get_boolean (v) #define g_marshal_value_peek_char(v) g_value_get_schar (v) #define g_marshal_value_peek_uchar(v) g_value_get_uchar (v) #define g_marshal_value_peek_int(v) g_value_get_int (v) #define g_marshal_value_peek_uint(v) g_value_get_uint (v) #define g_marshal_value_peek_long(v) g_value_get_long (v) #define g_marshal_value_peek_ulong(v) g_value_get_ulong (v) #define g_marshal_value_peek_int64(v) g_value_get_int64 (v) #define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v) #define g_marshal_value_peek_enum(v) g_value_get_enum (v) #define g_marshal_value_peek_flags(v) g_value_get_flags (v) #define g_marshal_value_peek_float(v) g_value_get_float (v) #define g_marshal_value_peek_double(v) g_value_get_double (v) #define g_marshal_value_peek_string(v) (char*) g_value_get_string (v) #define g_marshal_value_peek_param(v) g_value_get_param (v) #define g_marshal_value_peek_boxed(v) g_value_get_boxed (v) #define g_marshal_value_peek_pointer(v) g_value_get_pointer (v) #define g_marshal_value_peek_object(v) g_value_get_object (v) #define g_marshal_value_peek_variant(v) g_value_get_variant (v) #else /* !G_ENABLE_DEBUG */ /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API. * Do not access GValues directly in your code. Instead, use the * g_value_get_*() functions */ #define g_marshal_value_peek_boolean(v) (v)->data[0].v_int #define g_marshal_value_peek_char(v) (v)->data[0].v_int #define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint #define g_marshal_value_peek_int(v) (v)->data[0].v_int #define g_marshal_value_peek_uint(v) (v)->data[0].v_uint #define g_marshal_value_peek_long(v) (v)->data[0].v_long #define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong #define g_marshal_value_peek_int64(v) (v)->data[0].v_int64 #define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64 #define g_marshal_value_peek_enum(v) (v)->data[0].v_long #define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong #define g_marshal_value_peek_float(v) (v)->data[0].v_float #define g_marshal_value_peek_double(v) (v)->data[0].v_double #define g_marshal_value_peek_string(v) (v)->data[0].v_pointer #define g_marshal_value_peek_param(v) (v)->data[0].v_pointer #define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer #define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer #define g_marshal_value_peek_object(v) (v)->data[0].v_pointer #define g_marshal_value_peek_variant(v) (v)->data[0].v_pointer #endif /* !G_ENABLE_DEBUG */ /* INT:VOID (vipsmarshal.list:25) */ void vips_INT__VOID (GClosure *closure, GValue *return_value G_GNUC_UNUSED, guint n_param_values, const GValue *param_values, gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data) { typedef gint (*GMarshalFunc_INT__VOID) (gpointer data1, gpointer data2); register GMarshalFunc_INT__VOID callback; register GCClosure *cc = (GCClosure*) closure; register gpointer data1, data2; gint v_return; g_return_if_fail (return_value != NULL); g_return_if_fail (n_param_values == 1); if (G_CCLOSURE_SWAP_DATA (closure)) { data1 = closure->data; data2 = g_value_peek_pointer (param_values + 0); } else { data1 = g_value_peek_pointer (param_values + 0); data2 = closure->data; } callback = (GMarshalFunc_INT__VOID) (marshal_data ? marshal_data : cc->callback); v_return = callback (data1, data2); g_value_set_int (return_value, v_return); } vips-8.2.2/libvips/iofuncs/vipsmarshal.h0000664000175000017500000000100612530402247015243 00000000000000 #ifndef __vips_MARSHAL_H__ #define __vips_MARSHAL_H__ #include G_BEGIN_DECLS /* INT:VOID (vipsmarshal.list:25) */ extern void vips_INT__VOID (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); G_END_DECLS #endif /* __vips_MARSHAL_H__ */ vips-8.2.2/libvips/iofuncs/base64.c0000664000175000017500000001652712605241561014012 00000000000000/* base64.c -- Encode/decode integers in base64 format * Created: Mon Sep 23 16:55:12 1996 by faith@dict.org * Revised: Sat Mar 30 12:02:36 2002 by faith@dict.org * Copyright 1996, 2002 Rickard E. Faith (faith@dict.org) * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA * * \section{Base-64 Routines} * * \intro These routines use the 64-character subset of International * Alphabet IA5 discussed in RFC 1421 (printeable encoding) and RFC 1522 * (base64 MIME). * Value Encoding Value Encoding Value Encoding Value Encoding 0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y * */ /* Hacked for VIPS ... does any length object (not just ints), formats base64 into 70 character lines, output to a malloc'd buffer. VIPS uses this to write BLOBs (like ICC profiles, for example) to the XML that follows an image. Modified on: 23/7/07 JC - oop, needed a slightly larger worst-case buffer in im__b64_encode() 12/5/09 - fix signed/unsigned warning 25/3/11 - move to vips_ namespace 31/5/15 - oops siged/unsignned mess-up meant we were not padding correctly */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "base64.h" static unsigned char b64_list[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; #define XX 100 static unsigned char b64_index[256] = { XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,62, XX,XX,XX,63, 52,53,54,55, 56,57,58,59, 60,61,XX,XX, XX,XX,XX,XX, XX, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14, 15,16,17,18, 19,20,21,22, 23,24,25,XX, XX,XX,XX,XX, XX,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40, 41,42,43,44, 45,46,47,48, 49,50,51,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, }; /* Read (up to) 3 bytes from in. Be careful about byte ordering :-/ we need to * end up with in[2] in the bottom few bits. */ static int read24( const unsigned char *in, int remaining ) { int bits; int i; bits = 0; for( i = 0; i < 3; i++ ) { bits <<= 8; if( remaining > 0 ) { bits |= in[i]; remaining -= 1; } } return( bits ); } /* Output (up to) 24 bits as four base64 chars. Pad with '=' characters. */ static void encode24( char *p, int bits, int remaining ) { int i; for( i = 0; i < 4; i++ ) { if( remaining <= 0 ) p[i] = '='; else { /* Take the top 6 bits of 24. */ p[i] = b64_list[(bits >> 18) & 63]; bits <<= 6; remaining -= 6; } } } /* Output to a malloc'd buffer, NULL on error. Try to be simple and reliable, * rather than quick. */ char * vips__b64_encode( const unsigned char *data, size_t data_length ) { /* Worst case: 1.333 chars per byte, plus 10% for extra carriage * returns and stuff. And the \n\0 at the end. */ const size_t output_data_length = data_length * 44 / 30 + 2; char *buffer; char *p; int i; int cursor; if( data_length == 0 ) { vips_error( "vips__b64_encode", "%s", _( "too little data" ) ); return( NULL ); } if( output_data_length > 1024 * 1024 ) { /* We shouldn't really be used for large amounts of data, plus * we are using int offsets. */ vips_error( "vips__b64_encode", "%s", _( "too much data" ) ); return( NULL ); } if( !(buffer = vips_malloc( NULL, output_data_length )) ) return( NULL ); p = buffer; *p++ = '\n'; cursor = 0; for( i = 0; i < data_length; i += 3 ) { int remaining = data_length - i; int bits; bits = read24( data + i, remaining ); encode24( p, bits, remaining * 8 ); p += 4; cursor += 4; if( cursor >= 76 ) { *p++ = '\n'; cursor = 0; } } if( cursor > 0 ) *p++ = '\n'; *p++ = '\0'; #ifdef DEBUG { unsigned int total; /* Calculate a very simple checksum for debugging. */ for( total = 0, i = 0; i < data_length; i++ ) total += data[i]; printf( "vips__b64_encode: length = %zu, checksum 0x%x\n", data_length, total & 0xffff ); } #endif /*DEBUG*/ return( buffer ); } /* Decode base64 back to binary in a malloc'd buffer. NULL on error. */ unsigned char * vips__b64_decode( const char *buffer, size_t *data_length ) { const size_t buffer_length = strlen( buffer ); /* Worst case. */ const size_t output_data_length = buffer_length * 3 / 4; unsigned char *data; unsigned char *p; unsigned int bits; int nbits; int i; if( output_data_length > 1024 * 1024 ) { /* We shouldn't really be used for large amounts of data, plus * we are using an int for offset. */ vips_error( "vips__b64_decode", "%s", _( "too much data" ) ); return( NULL ); } if( !(data = vips_malloc( NULL, output_data_length )) ) return( NULL ); p = data; bits = 0; nbits = 0; for( i = 0; i < buffer_length; i++ ) { unsigned int val; if( (val = b64_index[(int) buffer[i]]) != XX ) { bits <<= 6; bits |= val; nbits += 6; if( nbits >= 8 ) { *p++ = (bits >> (nbits - 8)) & 0xff; nbits -= 8; } } } g_assert( (size_t) (p - data) < output_data_length ); if( data_length ) *data_length = p - data; #ifdef DEBUG { unsigned int total; /* Calculate a very simple checksum for debugging. */ for( total = 0, i = 0; i < p - data; i++ ) total += data[i]; printf( "vips__b64_decode: length = %d, checksum 0x%x\n", p - data, total & 0xffff ); } #endif /*DEBUG*/ return( data ); } vips-8.2.2/libvips/histogram/0000775000175000017500000000000012651721506013161 500000000000000vips-8.2.2/libvips/histogram/hist_match.c0000664000175000017500000001146512530402247015371 00000000000000/* Match two normalised, cumulative histograms. * * Copyright: 1991, N. Dessipris. * * Author: Nicos Dessipris * Written on: 19/07/1990 * Modified on: 26/03/1991 * * 1/3/01 JC * - bleurg! rewritten, now does 16 bits as well, bugs removed, faster, * smaller * 24/3/10 * - gtkdoc * - small cleanups * 12/8/13 * - redone im_histspec() as a class, vips_hist_match() * 19/12/13 * - oop, upcast input */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "phistogram.h" /* #define DEBUG */ typedef struct _VipsHistMatch { VipsHistogram parent_instance; VipsImage *in; VipsImage *ref; } VipsHistMatch; typedef VipsHistogramClass VipsHistMatchClass; G_DEFINE_TYPE( VipsHistMatch, vips_hist_match, VIPS_TYPE_HISTOGRAM ); static void vips_hist_match_process( VipsHistogram *histogram, VipsPel *out, VipsPel **in, int width ) { VipsHistMatch *match = (VipsHistMatch *) histogram; const int bands = match->in->Bands; const int max = width * bands; unsigned int *inbuf = (unsigned int *) in[0]; unsigned int *refbuf = (unsigned int *) in[1]; unsigned int *outbuf = (unsigned int *) out; int i, j; for( j = 0; j < bands; j++ ) { /* Track up refbuf[] with this. */ int ri = j; int limit = max - bands; for( i = j; i < max; i += bands ) { unsigned int inv = inbuf[i]; for( ; ri < limit; ri += bands ) if( inv <= refbuf[ri] ) break; if( ri < limit ) { /* Simple rounding. */ double mid = refbuf[ri] + refbuf[ri + bands] / 2.0; if( inv < mid ) outbuf[i] = ri / bands; else outbuf[i] = ri / bands + 1; } else outbuf[i] = refbuf[ri]; } } } static int vips_hist_match_build( VipsObject *object ) { VipsHistogram *histogram = VIPS_HISTOGRAM( object ); VipsHistMatch *match = (VipsHistMatch *) object; histogram->n = 2; histogram->in = (VipsImage **) vips_object_local_array( object, 2 ); histogram->in[0] = match->in; histogram->in[1] = match->ref; if( histogram->in[0] ) g_object_ref( histogram->in[0] ); if( histogram->in[1] ) g_object_ref( histogram->in[1] ); if( VIPS_OBJECT_CLASS( vips_hist_match_parent_class )->build( object ) ) return( -1 ); return( 0 ); } static void vips_hist_match_class_init( VipsHistMatchClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); VipsHistogramClass *hclass = VIPS_HISTOGRAM_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "hist_match"; vobject_class->description = _( "match two histograms" ); vobject_class->build = vips_hist_match_build; hclass->input_format = VIPS_FORMAT_UINT; hclass->process = vips_hist_match_process; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input histogram" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistMatch, in ) ); VIPS_ARG_IMAGE( class, "ref", 2, _( "Reference" ), _( "Reference histogram" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistMatch, ref ) ); } static void vips_hist_match_init( VipsHistMatch *match ) { } /** * vips_hist_match: * @in: input histogram * @ref: reference histogram * @out: output histogram * @...: %NULL-terminated list of optional named arguments * * Adjust @in to match @ref. If @in and @ref are normalised * cumulative histograms, @out will be a LUT that adjusts the PDF of the image * from which @in was made to match the PDF of @ref's image. * * See also: vips_maplut(), vips_hist_find(), vips_hist_norm(), * vips_hist_cum(). * * Returns: 0 on success, -1 on error */ int vips_hist_match( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_match", ap, in, ref, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/hist_cum.c0000664000175000017500000001077112651123346015064 00000000000000/* histogram cumulativisation * * Author: N. Dessipris * Written on: 02/08/1990 * 24/5/95 JC * - tidied up and ANSIfied * 20/7/95 JC * - smartened up again * - now works for hists >256 elements * 3/3/01 JC * - broken into cum and norm ... helps im_histspec() * - better behaviour for >8 bit hists * 31/10/05 JC * - was broken for vertical histograms, gah * - neater im_histnorm() * 23/7/07 * - eek, off by 1 for more than 1 band hists * 12/5/08 * - histcum works for signed hists now as well * 24/3/10 * - gtkdoc * - small cleanups * 12/8/13 * - redone im_histcum() as a class, vips_hist_cum() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include "phistogram.h" #include "hist_unary.h" typedef VipsHistUnary VipsHistCum; typedef VipsHistUnaryClass VipsHistCumClass; G_DEFINE_TYPE( VipsHistCum, vips_hist_cum, VIPS_TYPE_HIST_UNARY ); #define ACCUMULATE( ITYPE, OTYPE ) { \ for( b = 0; b < nb; b++ ) { \ ITYPE *p = (ITYPE *) in[0]; \ OTYPE *q = (OTYPE *) out; \ OTYPE total; \ \ total = 0; \ for( x = b; x < mx; x += nb ) { \ total += p[x]; \ q[x] = total; \ } \ } \ } static void vips_hist_cum_process( VipsHistogram *histogram, VipsPel *out, VipsPel **in, int width ) { const int bands = vips_image_get_bands( histogram->ready[0] ); const int nb = vips_band_format_iscomplex( histogram->ready[0]->BandFmt ) ? bands * 2 : bands; int mx = width * nb; int x, b; switch( vips_image_get_format( histogram->ready[0] ) ) { case VIPS_FORMAT_CHAR: ACCUMULATE( signed char, signed int ); break; case VIPS_FORMAT_UCHAR: ACCUMULATE( unsigned char, unsigned int ); break; case VIPS_FORMAT_SHORT: ACCUMULATE( signed short, signed int ); break; case VIPS_FORMAT_USHORT: ACCUMULATE( unsigned short, unsigned int ); break; case VIPS_FORMAT_INT: ACCUMULATE( signed int, signed int ); break; case VIPS_FORMAT_UINT: ACCUMULATE( unsigned int, unsigned int ); break; case VIPS_FORMAT_FLOAT: case VIPS_FORMAT_COMPLEX: ACCUMULATE( float, float ); break; case VIPS_FORMAT_DOUBLE: case VIPS_FORMAT_DPCOMPLEX: ACCUMULATE( double, double ); break; default: g_assert_not_reached(); } } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define C VIPS_FORMAT_CHAR #define US VIPS_FORMAT_USHORT #define S VIPS_FORMAT_SHORT #define UI VIPS_FORMAT_UINT #define I VIPS_FORMAT_INT #define F VIPS_FORMAT_FLOAT #define X VIPS_FORMAT_COMPLEX #define D VIPS_FORMAT_DOUBLE #define DX VIPS_FORMAT_DPCOMPLEX static const VipsBandFormat vips_hist_cum_format_table[10] = { /* UC C US S UI I F X D DX */ UI, I, UI, I, UI, I, F, F, D, D }; static void vips_hist_cum_class_init( VipsHistCumClass *class ) { VipsObjectClass *object_class = (VipsObjectClass *) class; VipsHistogramClass *hclass = VIPS_HISTOGRAM_CLASS( class ); object_class->nickname = "hist_cum"; object_class->description = _( "form cumulative histogram" ); hclass->format_table = vips_hist_cum_format_table; hclass->process = vips_hist_cum_process; } static void vips_hist_cum_init( VipsHistCum *hist_cum ) { } /** * vips_hist_cum: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Form cumulative histogram. * * See also: vips_hist_norm(). * * Returns: 0 on success, -1 on error */ int vips_hist_cum( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_cum", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/hist_equal.c0000664000175000017500000000737212530402247015406 00000000000000/* Histogram-equalise an image. * * Copyright: 1991, N. Dessipris. * * Author: Nicos Dessipris * Written on: 27/03/1991 * Modified on : * 16/6/93 J.Cupitt * - im_ioflag() changed to im_iocheck() * 24/5/95 JC * - ANSIfied and tidied up * 3/3/01 JC * - more cleanup * 23/3/10 * - gtkdoc * 12/8/13 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include typedef struct _VipsHistEqual { VipsOperation parent_instance; VipsImage *in; VipsImage *out; /* -1 for all bands, or the band we scan. */ int which; } VipsHistEqual; typedef VipsOperationClass VipsHistEqualClass; G_DEFINE_TYPE( VipsHistEqual, vips_hist_equal, VIPS_TYPE_OPERATION ); static int vips_hist_equal_build( VipsObject *object ) { VipsHistEqual *equal = (VipsHistEqual *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); g_object_set( equal, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_hist_equal_parent_class )->build( object ) ) return( -1 ); if( vips_hist_find( equal->in, &t[0], "band", equal->which, NULL ) || vips_hist_cum( t[0], &t[1], NULL ) || vips_hist_norm( t[1], &t[2], NULL ) || vips_maplut( equal->in, &t[3], t[2], NULL ) || vips_image_write( t[3], equal->out ) ) return( -1 ); return( 0 ); } static void vips_hist_equal_class_init( VipsHistEqualClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_equal"; object_class->description = _( "histogram equalisation" ); object_class->build = vips_hist_equal_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistEqual, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistEqual, out ) ); VIPS_ARG_INT( class, "band", 110, _( "Band" ), _( "Equalise with this band" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsHistEqual, which ), -1, 100000, -1 ); } static void vips_hist_equal_init( VipsHistEqual *equal ) { equal->which = -1; } /** * vips_hist_equal: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @band: band to equalise * * Histogram-equalise @in. Equalise using band @bandno, or if @bandno is -1, * equalise bands independently. * * See also: * * Returns: 0 on success, -1 on error */ int vips_hist_equal( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_equal", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/hist_unary.h0000664000175000017500000000374512530402247015442 00000000000000/* base class for all hist_unary operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PHIST_UNARY_H #define VIPS_PHIST_UNARY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_HIST_UNARY (vips_hist_unary_get_type()) #define VIPS_HIST_UNARY( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_HIST_UNARY, VipsHistUnary )) #define VIPS_HIST_UNARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_HIST_UNARY, VipsHistUnaryClass)) #define VIPS_IS_HIST_UNARY( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_HIST_UNARY )) #define VIPS_IS_HIST_UNARY_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_HIST_UNARY )) #define VIPS_HIST_UNARY_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_HIST_UNARY, VipsHistUnaryClass )) typedef struct _VipsHistUnary { VipsHistogram parent_instance; VipsImage *in; } VipsHistUnary; typedef struct _VipsHistUnaryClass { VipsHistogramClass parent_class; } VipsHistUnaryClass; GType vips_hist_unary_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PHIST_UNARY_H*/ vips-8.2.2/libvips/histogram/stdif.c0000664000175000017500000002332412605241561014357 00000000000000/* statistical difference * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris * Written on: 02/05/1990 * Modified on : * 6/8/93 JC * - now works for odd window sizes * - ANSIfication * 25/5/95 JC * - new IM_ARRAY() macro * 25/1/96 JC * - im_lhisteq() adapted to make new im_stdif() * - now partial, plus rolling window * - 5x faster, amazingly * - works * 7/4/04 * - now uses im_embed() with edge stretching on the input, not * the output * 25/3/10 * - gtkdoc * - small cleanups * 10/8/13 * - wrapped as a class using hist_local.c * - many bands */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include typedef struct _VipsStdif { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int width; int height; double a; double m0; double b; double s0; } VipsStdif; typedef VipsOperationClass VipsStdifClass; G_DEFINE_TYPE( VipsStdif, vips_stdif, VIPS_TYPE_OPERATION ); /* How ugly and stupid. */ #define MAX_BANDS (100) static int vips_stdif_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsRect *r = &or->valid; VipsRegion *ir = (VipsRegion *) vseq; VipsImage *in = (VipsImage *) a; VipsStdif *stdif = (VipsStdif *) b; int bands = in->Bands; int npel = stdif->width * stdif->width; VipsRect irect; int y; int lsk; int centre; /* Offset to move to centre of window */ /* What part of ir do we need? */ irect.left = or->valid.left; irect.top = or->valid.top; irect.width = or->valid.width + stdif->width; irect.height = or->valid.height + stdif->height; if( vips_region_prepare( ir, &irect ) ) return( -1 ); lsk = VIPS_REGION_LSKIP( ir ); centre = lsk * (stdif->height / 2) + stdif->width / 2; for( y = 0; y < r->height; y++ ) { /* Get input and output pointers for this line. */ VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); double f1 = stdif->a * stdif->m0; double f2 = 1.0 - stdif->a; double f3 = stdif->b * stdif->s0; VipsPel *p1; int x, i, j, b; /* We will get int overflow for windows larger than about 256 * x 256, sadly. */ unsigned int sum[MAX_BANDS]; unsigned int sum2[MAX_BANDS]; /* Find sum, sum of squares for the start of this line. */ for( b = 0; b < bands; b++ ) { memset( sum, 0, bands * sizeof( unsigned int ) ); memset( sum2, 0, bands * sizeof( unsigned int ) ); } p1 = p; for( j = 0; j < stdif->height; j++ ) { i = 0; for( x = 0; x < stdif->width; x++ ) { for( b = 0; b < bands; b++ ) { int t = p1[i++]; sum[b] += t; sum2[b] += t * t; } } p1 += lsk; } /* Loop for output pels. */ for( x = 0; x < r->width; x++ ) { for( b = 0; b < bands; b++ ) { /* Find stats. */ double mean = (double) sum[b] / npel; double var = (double) sum2[b] / npel - (mean * mean); double sig = sqrt( var ); /* Transform. */ double res = f1 + f2 * mean + ((double) p[centre] - mean) * (f3 / (stdif->s0 + stdif->b * sig)); /* And write. */ if( res < 0.0 ) *q++ = 0; else if( res >= 256.0 ) *q++ = 255; else *q++ = res + 0.5; /* Adapt sums - remove the pels from the left * hand column, add in pels for a new * right-hand column. */ p1 = p; for( j = 0; j < stdif->height; j++ ) { int t1 = p1[0]; int t2 = p1[bands * stdif->width]; sum[b] -= t1; sum2[b] -= t1 * t1; sum[b] += t2; sum2[b] += t2 * t2; p1 += lsk; } p += 1; } } } return( 0 ); } static int vips_stdif_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsStdif *stdif = (VipsStdif *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_stdif_parent_class )->build( object ) ) return( -1 ); in = stdif->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_format( class->nickname, in, VIPS_FORMAT_UCHAR ) ) return( -1 ); if( stdif->width > in->Xsize || stdif->height > in->Ysize ) { vips_error( class->nickname, "%s", _( "window too large" ) ); return( -1 ); } if( in->Bands > MAX_BANDS ) { vips_error( class->nickname, "%s", _( "too many bands" ) ); return( -1 ); } /* Expand the input. */ if( vips_embed( in, &t[1], stdif->width / 2, stdif->height / 2, in->Xsize + stdif->width - 1, in->Ysize + stdif->height - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[1]; g_object_set( object, "out", vips_image_new(), NULL ); /* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause * too many recalculations on overlaps. */ if( vips_image_pipelinev( stdif->out, VIPS_DEMAND_STYLE_FATSTRIP, in, NULL ) ) return( -1 ); stdif->out->Xsize -= stdif->width - 1; stdif->out->Ysize -= stdif->height - 1; if( vips_image_generate( stdif->out, vips_start_one, vips_stdif_generate, vips_stop_one, in, stdif ) ) return( -1 ); stdif->out->Xoffset = 0; stdif->out->Yoffset = 0; return( 0 ); } static void vips_stdif_class_init( VipsStdifClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "stdif"; object_class->description = _( "statistical difference" ); object_class->build = vips_stdif_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsStdif, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsStdif, out ) ); /* Windows larger than 256x256 will overflow sum2, see above. */ VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Window width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsStdif, width ), 1, 256, 11 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Window height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsStdif, height ), 1, 256, 11 ); VIPS_ARG_DOUBLE( class, "a", 2, _( "Mean weight" ), _( "Weight of new mean" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsStdif, a ), 0.0, 1.0, 0.5 ); VIPS_ARG_DOUBLE( class, "m0", 2, _( "Mean" ), _( "New mean" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsStdif, m0 ), -INFINITY, INFINITY, 128 ); VIPS_ARG_DOUBLE( class, "b", 2, _( "Deviation weight" ), _( "Weight of new deviation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsStdif, b ), 0.0, 2.0, 0.5 ); VIPS_ARG_DOUBLE( class, "s0", 2, _( "Deviation" ), _( "New deviation" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsStdif, s0 ), -INFINITY, INFINITY, 50 ); } static void vips_stdif_init( VipsStdif *stdif ) { stdif->width = 11; stdif->height = 11; stdif->a = 0.5; stdif->m0 = 128.0; stdif->b = 0.5; stdif->s0 = 50.0; } /** * vips_stdif: * @in: input image * @out: output image * @width: width of region * @height: height of region * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @a: weight of new mean * @m0: target mean * @b: weight of new deviation * @s0: target deviation * * vips_stdif() preforms statistical differencing according to the formula * given in page 45 of the book "An Introduction to Digital Image * Processing" by Wayne Niblack. This transformation emphasises the way in * which a pel differs statistically from its neighbours. It is useful for * enhancing low-contrast images with lots of detail, such as X-ray plates. * * At point (i,j) the output is given by the equation: * * |[ * vout(i,j) = @a * @m0 + (1 - @a) * meanv + * (vin(i,j) - meanv) * (@b * @s0) / (@s0 + @b * stdv) * ]| * * Values @a, @m0, @b and @s0 are entered, while meanv and stdv are the values * calculated over a moving window of size @width, @height centred on pixel * (i,j). @m0 is the new mean, @a is the weight given to it. @s0 is the new * standard deviation, @b is the weight given to it. * * Try: * * |[ * vips stdif $VIPSHOME/pics/huysum.v fred.v 0.5 128 0.5 50 11 11 * ]| * * The operation works on one-band uchar images only, and writes a one-band * uchar image as its result. The output image has the same size as the * input. * * See also: vips_hist_local(). * * Returns: 0 on success, -1 on error */ int vips_stdif( VipsImage *in, VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "stdif", ap, in, out, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/histogram.c0000664000175000017500000001732512605241561015247 00000000000000/* base class for all histogram operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "phistogram.h" /** * SECTION: histogram * @short_description: find, manipulate and apply histograms and lookup tables * @stability: Stable * @see_also: image * arithmetic * create * @include: vips/vips.h * * Histograms and look-up tables are 1xn or nx1 images, where n is less than * 256 or less than 65536, corresponding to 8- and 16-bit unsigned int images. * They are tagged with a #VipsInterpretation of * #VIPS_INTERPRETATION_HISTOGRAM and usually displayed by user-interfaces * such as nip2 as plots rather than images. * * These functions can be broadly grouped as things to find or build * histograms (vips_hist_find(), vips_buildlut(), vips_identity()), * operations that * manipulate histograms in some way (vips_hist_cum(), vips_hist_norm()), * operations to apply histograms (vips_maplut()), and a variety of utility * operations. * * A final group of operations build tone curves. These are useful in * pre-press work for adjusting the appearance of images. They are designed * for CIELAB images, but might be useful elsewhere. */ G_DEFINE_ABSTRACT_TYPE( VipsHistogram, vips_histogram, VIPS_TYPE_OPERATION ); /* sizealike by expanding in just one dimension and copying the final element. */ static int vips__hist_sizealike_vec( VipsImage **in, VipsImage **out, int n ) { int i; int max_size; g_assert( n >= 1 ); max_size = VIPS_MAX( in[0]->Xsize, in[0]->Ysize ); for( i = 1; i < n; i++ ) max_size = VIPS_MAX( max_size, VIPS_MAX( in[0]->Xsize, in[0]->Ysize ) ); for( i = 0; i < n; i++ ) if( in[i]->Ysize == 1 ) { if( vips_embed( in[i], &out[i], 0, 0, max_size, 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); } else { if( vips_embed( in[i], &out[i], 0, 0, 1, max_size, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); } return( 0 ); } static int vips_histogram_build( VipsObject *object ) { VipsHistogram *histogram = VIPS_HISTOGRAM( object ); VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsHistogramClass *hclass = VIPS_HISTOGRAM_GET_CLASS( histogram ); VipsImage **decode; VipsImage **format; VipsImage **band; VipsImage **size; VipsImage **memory; VipsPel *outbuf; VipsPel **inbuf; int i; #ifdef DEBUG printf( "vips_histogram_build: " ); vips_object_print_name( object ); printf( "\n" ); #endif /*DEBUG*/ if( VIPS_OBJECT_CLASS( vips_histogram_parent_class )->build( object ) ) return( -1 ); g_assert( histogram->n > 0 ); /* Must be NULL-terminated. */ g_assert( !histogram->in[histogram->n] ); decode = (VipsImage **) vips_object_local_array( object, histogram->n ); format = (VipsImage **) vips_object_local_array( object, histogram->n ); band = (VipsImage **) vips_object_local_array( object, histogram->n ); size = (VipsImage **) vips_object_local_array( object, histogram->n ); memory = (VipsImage **) vips_object_local_array( object, histogram->n ); g_object_set( histogram, "out", vips_image_new(), NULL ); for( i = 0; i < histogram->n; i++ ) if( vips_image_decode( histogram->in[i], &decode[i] ) || vips_check_hist( class->nickname, decode[i] ) ) return( -1 ); /* Cast our input images up to a common format, bands and size. If * input_format is set, cast to a fixed input type. */ if( hclass->input_format != VIPS_FORMAT_NOTSET ) { for( i = 0; i < histogram->n; i++ ) if( vips_cast( decode[i], &format[i], hclass->input_format, NULL ) ) return( -1 ); } else { if( vips__formatalike_vec( decode, format, histogram->n ) ) return( -1 ); } if( vips__bandalike_vec( class->nickname, format, band, histogram->n, 1 ) || vips__hist_sizealike_vec( band, size, histogram->n ) ) return( -1 ); if( vips_image_pipeline_array( histogram->out, VIPS_DEMAND_STYLE_THINSTRIP, size ) ) return( -1 ); /* Need a copy of the inputs in memory. */ if( !(inbuf = VIPS_ARRAY( object, histogram->n + 1, VipsPel * )) ) return( -1 ); for( i = 0; i < histogram->n; i++ ) { if( !(memory[i] = vips_image_copy_memory( size[i] )) ) return( -1 ); inbuf[i] = VIPS_IMAGE_ADDR( memory[i], 0, 0 ); } inbuf[i] = NULL; /* Keep a copy of the memory images here for subclasses. */ histogram->ready = memory; histogram->out->Xsize = VIPS_IMAGE_N_PELS( histogram->ready[0] ); histogram->out->Ysize = 1; if( hclass->format_table ) histogram->out->BandFmt = hclass->format_table[histogram->ready[0]->BandFmt]; histogram->out->Type = VIPS_INTERPRETATION_HISTOGRAM; if( !(outbuf = vips_malloc( object, VIPS_IMAGE_SIZEOF_LINE( histogram->out ))) ) return( -1 ); hclass->process( histogram, outbuf, inbuf, histogram->ready[0]->Xsize ); if( vips_image_write_line( histogram->out, 0, outbuf ) ) return( -1 ); return( 0 ); } static void vips_histogram_class_init( VipsHistogramClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "histogram"; vobject_class->description = _( "histogram operations" ); vobject_class->build = vips_histogram_build; class->input_format = VIPS_FORMAT_NOTSET; /* Inputs set by subclassess. */ VIPS_ARG_IMAGE( class, "out", 10, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistogram, out ) ); } static void vips_histogram_init( VipsHistogram *histogram ) { /* Sanity check this above. */ histogram->n = -1; } /* Called from iofuncs to init all operations in this dir. Use a plugin system * instead? */ void vips_histogram_operation_init( void ) { extern GType vips_maplut_get_type( void ); extern GType vips_percent_get_type( void ); extern GType vips_hist_cum_get_type( void ); extern GType vips_hist_norm_get_type( void ); extern GType vips_hist_equal_get_type( void ); extern GType vips_hist_plot_get_type( void ); extern GType vips_hist_match_get_type( void ); extern GType vips_hist_local_get_type( void ); extern GType vips_hist_ismonotonic_get_type( void ); extern GType vips_hist_entropy_get_type( void ); extern GType vips_stdif_get_type( void ); vips_maplut_get_type(); vips_percent_get_type(); vips_stdif_get_type(); vips_hist_cum_get_type(); vips_hist_norm_get_type(); vips_hist_equal_get_type(); vips_hist_plot_get_type(); vips_hist_match_get_type(); vips_hist_local_get_type(); vips_hist_ismonotonic_get_type(); vips_hist_entropy_get_type(); } vips-8.2.2/libvips/histogram/phistogram.h0000664000175000017500000000502312530402247015421 00000000000000/* base class for all histogram operations * * many hists in, one hist out, a buffer processing function in the class */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PHISTOGRAM_H #define VIPS_PHISTOGRAM_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_TYPE_HISTOGRAM (vips_histogram_get_type()) #define VIPS_HISTOGRAM( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_HISTOGRAM, VipsHistogram )) #define VIPS_HISTOGRAM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_HISTOGRAM, VipsHistogramClass)) #define VIPS_IS_HISTOGRAM( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_HISTOGRAM )) #define VIPS_IS_HISTOGRAM_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_HISTOGRAM )) #define VIPS_HISTOGRAM_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_HISTOGRAM, VipsHistogramClass )) typedef struct _VipsHistogram VipsHistogram; typedef void (*VipsHistogramProcessFn)( VipsHistogram *histogram, VipsPel *out, VipsPel **in, int width ); struct _VipsHistogram { VipsOperation parent_instance; VipsImage *out; /* NULL-terminated array of input images. */ VipsImage **in; int n; /* ... and transformed ready for processing. */ VipsImage **ready; }; typedef struct _VipsHistogramClass { VipsOperationClass parent_class; /* For each input format, what output format. */ const VipsBandFormat *format_table; /* If not VIPS_FORMAT_NOTSET, upcast all ins to this. */ VipsBandFormat input_format; VipsHistogramProcessFn process; } VipsHistogramClass; GType vips_histogram_get_type( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PHISTOGRAM_H*/ vips-8.2.2/libvips/histogram/hist_entropy.c0000664000175000017500000000743212605241561015777 00000000000000/* estimate entropy * * Author: John Cupitt * 11/8/15 * - from hist_ismonotonic.c */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include typedef struct _VipsHistEntropy { VipsOperation parent_instance; VipsImage *in; double out; } VipsHistEntropy; typedef VipsOperationClass VipsHistEntropyClass; G_DEFINE_TYPE( VipsHistEntropy, vips_hist_entropy, VIPS_TYPE_OPERATION ); static int vips_hist_entropy_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsHistEntropy *entropy = (VipsHistEntropy *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); double avg; double sum; if( VIPS_OBJECT_CLASS( vips_hist_entropy_parent_class )-> build( object ) ) return( -1 ); if( vips_check_hist( class->nickname, entropy->in ) ) return( -1 ); /* Compute: * norm_hist = hist / sum( hist ) * entropy = -sum( norm_hist * log2( norm_hist ) ) */ if( vips_avg( entropy->in, &avg, NULL ) ) return( -1 ); sum = avg * VIPS_IMAGE_N_PELS( entropy->in ) * entropy->in->Bands; if( vips_linear1( entropy->in, &t[0], 1.0 / sum, 0, NULL ) || vips_log( t[0], &t[1], 1.0 / sum, 0, NULL ) || vips_linear1( t[1], &t[2], 1.0 / log( 2.0 ), 0, NULL ) || vips_multiply( t[0], t[2], &t[3], NULL ) || vips_avg( t[3], &avg, NULL ) ) return( -1 ); g_object_set( entropy, "out", -avg * VIPS_IMAGE_N_PELS( entropy->in ) * entropy->in->Bands, NULL ); return( 0 ); } static void vips_hist_entropy_class_init( VipsHistEntropyClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_entropy"; object_class->description = _( "estimate image entropy" ); object_class->build = vips_hist_entropy_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input histogram image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistEntropy, in ) ); VIPS_ARG_DOUBLE( class, "out", 1, _( "Output" ), _( "Output value" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistEntropy, out ), -INFINITY, INFINITY, 0.0 ); } static void vips_hist_entropy_init( VipsHistEntropy *entropy ) { } /** * vips_hist_entropy: * @in: input histogram * @out: image entropy * @...: %NULL-terminated list of optional named arguments * * Estimate image entropy from a histogram. Entropy is calculated as: * * |[ * -sum( p * log2( p ) ) * ]| * * where p is histogram-value / sum-of-histogram-values. * * Returns: 0 on success, -1 on error */ int vips_hist_entropy( VipsImage *in, double *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_entropy", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/hist_ismonotonic.c0000664000175000017500000000772212605241561016642 00000000000000/* test for monotonicity * * Author: John Cupitt * Written on: 18/7/1995 * 17/9/96 JC * - restrictions on Ps, Pm, Ph relaxed * - restrictions on S, M, H relaxed * 25/7/01 JC * - patched for im_extract_band() change * 11/7/04 * - generalised to im_tone_build_range() ... so you can use it for any * image, not just LabS * 26/3/10 * - cleanups * - gtkdoc * 20/9/13 * - redone as a class */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include typedef struct _VipsHistIsmonotonic { VipsOperation parent_instance; VipsImage *in; gboolean monotonic; } VipsHistIsmonotonic; typedef VipsOperationClass VipsHistIsmonotonicClass; G_DEFINE_TYPE( VipsHistIsmonotonic, vips_hist_ismonotonic, VIPS_TYPE_OPERATION ); static int vips_hist_ismonotonic_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsHistIsmonotonic *ismonotonic = (VipsHistIsmonotonic *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 4 ); double m; if( VIPS_OBJECT_CLASS( vips_hist_ismonotonic_parent_class )-> build( object ) ) return( -1 ); if( vips_check_hist( class->nickname, ismonotonic->in ) ) return( -1 ); if( ismonotonic->in->Xsize == 1 ) t[0] = vips_image_new_matrixv( 1, 2, -1.0, 1.0 ); else t[0] = vips_image_new_matrixv( 2, 1, -1.0, 1.0 ); vips_image_set_double( t[0], "offset", 128 ); /* We want >=128 everywhere, ie. no -ve transitions. */ if( vips_conv( ismonotonic->in, &t[1], t[0], NULL ) || vips_moreeq_const1( t[1], &t[2], 128, NULL ) || vips_min( t[2], &m, NULL ) ) return( -1 ); g_object_set( ismonotonic, "monotonic", (int) m == 255, NULL ); return( 0 ); } static void vips_hist_ismonotonic_class_init( VipsHistIsmonotonicClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_ismonotonic"; object_class->description = _( "test for monotonicity" ); object_class->build = vips_hist_ismonotonic_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input histogram image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistIsmonotonic, in ) ); VIPS_ARG_BOOL( class, "monotonic", 2, _( "Monotonic" ), _( "true if in is monotonic" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistIsmonotonic, monotonic ), FALSE ); } static void vips_hist_ismonotonic_init( VipsHistIsmonotonic *ismonotonic ) { } /** * vips_hist_ismonotonic: * @in: lookup-table to test * @out: set non-zero if @in is monotonic * @...: %NULL-terminated list of optional named arguments * * Test @in for monotonicity. @out is set non-zero if @in is monotonic. * * Returns: 0 on success, -1 on error */ int vips_hist_ismonotonic( VipsImage *in, gboolean *out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_ismonotonic", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/hist_norm.c0000664000175000017500000001045312530402247015244 00000000000000/* histogram normalisation * * Author: N. Dessipris * Written on: 02/08/1990 * 24/5/95 JC * - tidied up and ANSIfied * 20/7/95 JC * - smartened up again * - now works for hists >256 elements * 3/3/01 JC * - broken into norm and norm ... helps im_histspec() * - better behaviour for >8 bit hists * 31/10/05 JC * - was broken for vertical histograms, gah * - neater im_histnorm() * 23/7/07 * - eek, off by 1 for more than 1 band hists * 12/5/08 * - histnorm works for signed hists now as well * 24/3/10 * - gtkdoc * - small cleanups * 12/8/13 * - redone im_histnorm() as a class, vips_hist_norm() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include typedef struct _VipsHistNorm { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsHistNorm; typedef VipsOperationClass VipsHistNormClass; G_DEFINE_TYPE( VipsHistNorm, vips_hist_norm, VIPS_TYPE_OPERATION ); static int vips_hist_norm_build( VipsObject *object ) { VipsHistNorm *norm = (VipsHistNorm *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); guint64 px; int bands; double *a, *b; int y; VipsBandFormat fmt; g_object_set( object, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_hist_norm_parent_class )->build( object ) ) return( -1 ); /* Need max for each channel. */ if( vips_stats( norm->in, &t[0], NULL ) ) return( -1 ); /* Scale each channel by px / channel max */ px = VIPS_IMAGE_N_PELS( norm->in ); bands = norm->in->Bands; if( !(a = VIPS_ARRAY( object, bands, double )) || !(b = VIPS_ARRAY( object, bands, double )) ) return( -1 ); for( y = 0; y < bands; y++ ) { a[y] = px / *VIPS_MATRIX( t[0], 1, y + 1 ); b[y] = 0; } if( vips_linear( norm->in, &t[1], a, b, bands, NULL ) ) return( -1 ); /* Make output format as small as we can. */ if( px <= 256 ) fmt = VIPS_FORMAT_UCHAR; else if( px <= 65536 ) fmt = VIPS_FORMAT_USHORT; else fmt = VIPS_FORMAT_UINT; if( vips_cast( t[1], &t[2], fmt, NULL ) || vips_image_write( t[2], norm->out ) ) return( -1 ); return( 0 ); } static void vips_hist_norm_class_init( VipsHistNormClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_norm"; object_class->description = _( "normalise histogram" ); object_class->build = vips_hist_norm_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistNorm, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistNorm, out ) ); } static void vips_hist_norm_init( VipsHistNorm *hist_norm ) { } /** * vips_hist_norm: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Normalise histogram ... normalise range to make it square (ie. max == * number of elements). Normalise each band separately. * * See also: vips_hist_cum(). * * Returns: 0 on success, -1 on error */ int vips_hist_norm( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_norm", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/hist_plot.c0000664000175000017500000002050012651123353015243 00000000000000/* draw a histogram * * Copyright: 1990, N. Dessipris. * * Author: Nicos Dessipris. * Written on: 09/07/1990 * Modified on : 12/03/1991 * 20/6/95 JC * - rules rationalised * - im_lineprof removed * - rewritten * 13/8/99 JC * - rewritten again for partial, rules redone * 19/9/99 JC * - oooops, broken for >1 band * 26/9/99 JC * - oooops, graph float was wrong * 17/11/99 JC * - oops, failed for all 0's histogram * 14/12/05 * - redone plot function in C, also use incheck() to cache calcs * - much, much faster! * 12/5/09 * - fix signed/unsigned warning * 24/3/10 * - gtkdoc * - small cleanups * - oop, would fail for signed int histograms * 19/8/13 * - wrap as a class, left a rewrite for now */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include "phistogram.h" static int plotalise( IMAGE *in, IMAGE *out ) { if( im_check_uncoded( "im_histplot", in ) || im_check_noncomplex( "im_histplot", in ) ) return( -1 ); if( vips_bandfmt_isuint( in->BandFmt ) ) { if( im_copy( in, out ) ) return( -1 ); } else if( vips_bandfmt_isint( in->BandFmt ) ) { double min; /* Move min up to 0. */ if( im_min( in, &min ) || im_lintra( 1.0, in, -min, out ) ) return( -1 ); } else { /* Float image: scale min--max to 0--any. Output square * graph. */ DOUBLEMASK *stats; double min, max; int any; if( in->Xsize == 1 ) any = in->Ysize; else any = in->Xsize; if( !(stats = im_stats( in )) ) return( -1 ); min = IM_MASK( stats, 0, 0 ); max = IM_MASK( stats, 1, 0 ); im_free_dmask( stats ); if( im_lintra( any / (max - min), in, -min * any / (max - min), out ) ) return( -1 ); } return( 0 ); } #define VERT( TYPE ) { \ TYPE *p1 = (TYPE *) p; \ \ for( x = le; x < ri; x++ ) { \ for( z = 0; z < nb; z++ ) \ q[z] = p1[z] < ((TYPE) x) ? 0 : 255; \ \ q += nb; \ } \ } /* Generate function. */ static int make_vert_gen( REGION *or, void *seq, void *a, void *b ) { IMAGE *in = (IMAGE *) a; Rect *r = &or->valid; int le = r->left; int to = r->top; int ri = IM_RECT_RIGHT( r ); int bo = IM_RECT_BOTTOM( r ); int nb = in->Bands; int x, y, z; for( y = to; y < bo; y++ ) { VipsPel *q = IM_REGION_ADDR( or, le, y ); VipsPel *p = IM_IMAGE_ADDR( in, 0, y ); switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: VERT( unsigned char ); break; case IM_BANDFMT_CHAR: VERT( signed char ); break; case IM_BANDFMT_USHORT: VERT( unsigned short ); break; case IM_BANDFMT_SHORT: VERT( signed short ); break; case IM_BANDFMT_UINT: VERT( unsigned int ); break; case IM_BANDFMT_INT: VERT( signed int ); break; case IM_BANDFMT_FLOAT: VERT( float ); break; case IM_BANDFMT_DOUBLE: VERT( double ); break; default: g_assert_not_reached(); } } return( 0 ); } #define HORZ( TYPE ) { \ TYPE *p1 = (TYPE *) p; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < nb; z++ ) \ q[z] = p1[z] < ((TYPE) (ht - y)) ? 0 : 255; \ \ q += lsk; \ } \ } /* Generate function. */ static int make_horz_gen( REGION *or, void *seq, void *a, void *b ) { IMAGE *in = (IMAGE *) a; Rect *r = &or->valid; int le = r->left; int to = r->top; int ri = IM_RECT_RIGHT( r ); int bo = IM_RECT_BOTTOM( r ); int nb = in->Bands; int lsk = IM_REGION_LSKIP( or ); int ht = or->im->Ysize; int x, y, z; for( x = le; x < ri; x++ ) { VipsPel *q = IM_REGION_ADDR( or, x, to ); VipsPel *p = IM_IMAGE_ADDR( in, x, 0 ); switch( in->BandFmt ) { case IM_BANDFMT_UCHAR: HORZ( unsigned char ); break; case IM_BANDFMT_CHAR: HORZ( signed char ); break; case IM_BANDFMT_USHORT: HORZ( unsigned short ); break; case IM_BANDFMT_SHORT: HORZ( signed short ); break; case IM_BANDFMT_UINT: HORZ( unsigned int ); break; case IM_BANDFMT_INT: HORZ( signed int ); break; case IM_BANDFMT_FLOAT: HORZ( float ); break; case IM_BANDFMT_DOUBLE: HORZ( double ); break; default: g_assert_not_reached(); } } return( 0 ); } /* Plot image. */ static int plot( IMAGE *in, IMAGE *out ) { double max; int tsize; int xsize; int ysize; if( im_incheck( in ) || im_poutcheck( out ) ) return( -1 ); /* Find range we will plot. */ if( im_max( in, &max ) ) return( -1 ); g_assert( max >= 0 ); if( in->BandFmt == IM_BANDFMT_UCHAR ) tsize = 256; else tsize = VIPS_CEIL( max ); /* Make sure we don't make a zero height image. */ if( tsize == 0 ) tsize = 1; if( in->Xsize == 1 ) { /* Vertical graph. */ xsize = tsize; ysize = in->Ysize; } else { /* Horizontal graph. */ xsize = in->Xsize; ysize = tsize; } /* Set image. */ im_initdesc( out, xsize, ysize, in->Bands, IM_BBITS_BYTE, IM_BANDFMT_UCHAR, IM_CODING_NONE, IM_TYPE_HISTOGRAM, 1.0, 1.0, 0, 0 ); /* Set hints - ANY is ok with us. */ if( im_demand_hint( out, IM_ANY, NULL ) ) return( -1 ); /* Generate image. */ if( in->Xsize == 1 ) { if( im_generate( out, NULL, make_vert_gen, NULL, in, NULL ) ) return( -1 ); } else { if( im_generate( out, NULL, make_horz_gen, NULL, in, NULL ) ) return( -1 ); } return( 0 ); } int im_histplot( IMAGE *in, IMAGE *out ) { IMAGE *t1; if( im_check_hist( "im_histplot", in ) ) return( -1 ); if( !(t1 = im_open_local( out, "im_histplot:1", "p" )) || plotalise( in, t1 ) || plot( t1, out ) ) return( -1 ); return( 0 ); } typedef struct _VipsHistPlot { VipsOperation parent_instance; VipsImage *in; VipsImage *out; } VipsHistPlot; typedef VipsOperationClass VipsHistPlotClass; G_DEFINE_TYPE( VipsHistPlot, vips_hist_plot, VIPS_TYPE_OPERATION ); static int vips_hist_plot_build( VipsObject *object ) { VipsHistPlot *plot = (VipsHistPlot *) object; g_object_set( plot, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_hist_plot_parent_class )->build( object ) ) return( -1 ); if( im_histplot( plot->in, plot->out ) ) return( -1 ); return( 0 ); } static void vips_hist_plot_class_init( VipsHistPlotClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_plot"; object_class->description = _( "plot histogram" ); object_class->build = vips_hist_plot_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistPlot, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistPlot, out ) ); } static void vips_hist_plot_init( VipsHistPlot *hist_plot ) { } /** * vips_hist_plot: * @in: input image * @out: output image * @...: %NULL-terminated list of optional named arguments * * Plot a 1 by any or any by 1 image file as a max by any or * any by max image using these rules: * * unsigned char max is always 256 * * other unsigned integer types output 0 - maxium * value of @in. * * signed int types min moved to 0, max moved to max + min. * * float types min moved to 0, max moved to any * (square output) * * Returns: 0 on success, -1 on error */ int vips_hist_plot( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "hist_plot", ap, in, out ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/hist_unary.c0000664000175000017500000000466312530402247015435 00000000000000/* a hist operation implemented as a unary processor * * properties: * - single hist to single hist */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include "phistogram.h" #include "hist_unary.h" G_DEFINE_ABSTRACT_TYPE( VipsHistUnary, vips_hist_unary, VIPS_TYPE_HISTOGRAM ); static int vips_hist_unary_build( VipsObject *object ) { VipsHistogram *histogram = VIPS_HISTOGRAM( object ); VipsHistUnary *unary = VIPS_HIST_UNARY( object ); histogram->n = 1; histogram->in = (VipsImage **) vips_object_local_array( object, 1 ); histogram->in[0] = unary->in; if( histogram->in[0] ) g_object_ref( histogram->in[0] ); if( VIPS_OBJECT_CLASS( vips_hist_unary_parent_class )-> build( object ) ) return( -1 ); return( 0 ); } static void vips_hist_unary_class_init( VipsHistUnaryClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; vobject_class->nickname = "hist_unary"; vobject_class->description = _( "hist_unary operations" ); vobject_class->build = vips_hist_unary_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistUnary, in ) ); } static void vips_hist_unary_init( VipsHistUnary *hist_unary ) { } vips-8.2.2/libvips/histogram/hist_local.c0000664000175000017500000002053412630030242015355 00000000000000/* local histogram equalisation * * Copyright: 1991, N. Dessipris * * Author: N. Dessipris * Written on: 24/10/1991 * Modified on : * 25/1/96 JC * - rewritten, adapting im_spcor() * - correct result, 2x faster, partial, simpler, better arg checking * 8/7/04 * - expand input rather than output with new im_embed() mode * - _raw() output is one pixel larger * - sets Xoffset/Yoffset * 23/6/08 * - check for window too small as well * 25/3/10 * - gtkdoc * - small cleanups * 5/9/13 * - redo as a class * 9/9/13 * - any number of bands */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include typedef struct _VipsHistLocal { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int width; int height; } VipsHistLocal; typedef VipsOperationClass VipsHistLocalClass; G_DEFINE_TYPE( VipsHistLocal, vips_hist_local, VIPS_TYPE_OPERATION ); /* Our sequence value: the region this sequence is using, and local stats. */ typedef struct { VipsRegion *ir; /* Input region */ /* A 256-element hist for evry band. */ unsigned int **hist; } VipsHistLocalSequence; static int vips_hist_local_stop( void *vseq, void *a, void *b ) { VipsHistLocalSequence *seq = (VipsHistLocalSequence *) vseq; VipsImage *in = (VipsImage *) a; VIPS_UNREF( seq->ir ); if( seq->hist && in ) { int i; for( i = 0; i < in->Bands; i++ ) VIPS_FREE( seq->hist[i] ); VIPS_FREE( seq->hist ); } VIPS_FREE( seq ); return( 0 ); } static void * vips_hist_local_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsHistLocalSequence *seq; int i; if( !(seq = VIPS_NEW( NULL, VipsHistLocalSequence )) ) return( NULL ); seq->ir = NULL; seq->hist = NULL; if( !(seq->ir = vips_region_new( in )) || !(seq->hist = VIPS_ARRAY( NULL, in->Bands, unsigned int * )) ) { vips_hist_local_stop( seq, NULL, NULL ); return( NULL ); } for( i = 0; i < in->Bands; i++ ) if( !(seq->hist[i] = VIPS_ARRAY( NULL, 256, unsigned int )) ) { vips_hist_local_stop( seq, NULL, NULL ); return( NULL ); } return( seq ); } static int vips_hist_local_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsHistLocalSequence *seq = (VipsHistLocalSequence *) vseq; VipsImage *in = (VipsImage *) a; const VipsHistLocal *local = (VipsHistLocal *) b; VipsRect *r = &or->valid; int bands = in->Bands; VipsRect irect; int y; int lsk; int centre; /* Offset to move to centre of window */ /* What part of ir do we need? */ irect.left = r->left; irect.top = r->top; irect.width = r->width + local->width; irect.height = r->height + local->height; if( vips_region_prepare( seq->ir, &irect ) ) return( -1 ); lsk = VIPS_REGION_LSKIP( seq->ir ); centre = lsk * (local->height / 2) + bands * local->width / 2; for( y = 0; y < r->height; y++ ) { /* Get input and output pointers for this line. */ VipsPel *p = VIPS_REGION_ADDR( seq->ir, r->left, r->top + y ); VipsPel *q = VIPS_REGION_ADDR( or, r->left, r->top + y ); VipsPel *p1; int x, i, j, b; /* Find histogram for start of this line. */ for( b = 0; b < bands; b++ ) memset( seq->hist[b], 0, 256 * sizeof( unsigned int ) ); p1 = p; for( j = 0; j < local->height; j++ ) { i = 0; for( x = 0; x < local->width; x++ ) for( b = 0; b < bands; b++ ) seq->hist[b][p1[i++]] += 1; p1 += lsk; } /* Loop for output pels. */ for( x = 0; x < r->width; x++ ) { for( b = 0; b < bands; b++ ) { /* Sum histogram up to current pel. */ unsigned int *hist = seq->hist[b]; int target = p[centre]; int sum; sum = 0; for( i = 0; i < target; i++ ) sum += hist[i]; *q++ = 256 * sum / (local->width * local->height); /* Adapt histogram --- remove the pels from * the left hand column, add in pels for a * new right-hand column. */ p1 = p; for( j = 0; j < local->height; j++ ) { hist[p1[0]] -= 1; hist[p1[bands * local->width]] += 1; p1 += lsk; } p += 1; } } } return( 0 ); } static int vips_hist_local_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsHistLocal *local = (VipsHistLocal *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 3 ); VipsImage *in; if( VIPS_OBJECT_CLASS( vips_hist_local_parent_class )->build( object ) ) return( -1 ); in = local->in; if( vips_image_decode( in, &t[0] ) ) return( -1 ); in = t[0]; if( vips_check_format( class->nickname, in, VIPS_FORMAT_UCHAR ) ) return( -1 ); if( local->width > in->Xsize || local->height > in->Ysize ) { vips_error( class->nickname, "%s", _( "window too large" ) ); return( -1 ); } /* Expand the input. */ if( vips_embed( in, &t[1], local->width / 2, local->height / 2, in->Xsize + local->width - 1, in->Ysize + local->height - 1, "extend", VIPS_EXTEND_COPY, NULL ) ) return( -1 ); in = t[1]; g_object_set( object, "out", vips_image_new(), NULL ); /* Set demand hints. FATSTRIP is good for us, as THINSTRIP will cause * too many recalculations on overlaps. */ if( vips_image_pipelinev( local->out, VIPS_DEMAND_STYLE_FATSTRIP, in, NULL ) ) return( -1 ); local->out->Xsize -= local->width - 1; local->out->Ysize -= local->height - 1; if( vips_image_generate( local->out, vips_hist_local_start, vips_hist_local_generate, vips_hist_local_stop, in, local ) ) return( -1 ); local->out->Xoffset = 0; local->out->Yoffset = 0; return( 0 ); } static void vips_hist_local_class_init( VipsHistLocalClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "hist_local"; object_class->description = _( "local histogram equalisation" ); object_class->build = vips_hist_local_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistLocal, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsHistLocal, out ) ); VIPS_ARG_INT( class, "width", 4, _( "Width" ), _( "Window width in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistLocal, width ), 1, VIPS_MAX_COORD, 1 ); VIPS_ARG_INT( class, "height", 5, _( "Height" ), _( "Window height in pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsHistLocal, height ), 1, VIPS_MAX_COORD, 1 ); } static void vips_hist_local_init( VipsHistLocal *local ) { } /** * vips_hist_local: * @in: input image * @out: output image * @width: width of region * @height: height of region * @...: %NULL-terminated list of optional named arguments * * Performs local histogram equalisation on @in using a * window of size @xwin by @ywin centered on the input pixel. * * The output image is the same size as the input image. The edge pixels are * created by copy edge pixels of the input image outwards. * * See also: vips_hist_equal(). * * Returns: 0 on success, -1 on error */ int vips_hist_local( VipsImage *in, VipsImage **out, int width, int height, ... ) { va_list ap; int result; va_start( ap, height ); result = vips_call_split( "hist_local", ap, in, out, width, height ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/Makefile.am0000664000175000017500000000056612605241561015141 00000000000000noinst_LTLIBRARIES = libhistogram.la libhistogram_la_SOURCES = \ histogram.c \ phistogram.h \ maplut.c \ hist_unary.c \ hist_unary.h \ hist_cum.c \ hist_norm.c \ hist_equal.c \ hist_plot.c \ hist_match.c \ hist_local.c \ percent.c \ hist_ismonotonic.c \ hist_entropy.c \ stdif.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ vips-8.2.2/libvips/histogram/percent.c0000664000175000017500000001032112530402247014674 00000000000000/* find percent of pixels * * Copyright: 1990, N. Dessipris * * Author: N. Dessipris * Written on: 02/08/1990 * Modified on : 29/4/93 K.Martinez for Sys5 * 20/2/95 JC * - now returns result through parameter * - ANSIfied a little * 19/1/07 * - redone with the vips hist operators * 25/3/10 * - gtkdoc * 20/9/13 * - wrap as a class * - more accurate */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include typedef struct _VipsPercent { VipsOperation parent_instance; VipsImage *in; double percent; int threshold; } VipsPercent; typedef VipsOperationClass VipsPercentClass; G_DEFINE_TYPE( VipsPercent, vips_percent, VIPS_TYPE_OPERATION ); static int vips_percent_build( VipsObject *object ) { VipsPercent *percent = (VipsPercent *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 7 ); double threshold; if( VIPS_OBJECT_CLASS( vips_percent_parent_class )-> build( object ) ) return( -1 ); if( vips_hist_find( percent->in, &t[0], NULL ) || vips_hist_cum( t[0], &t[1], NULL ) || vips_hist_norm( t[1], &t[2], NULL ) || vips_more_const1( t[2], &t[3], (percent->percent / 100.0) * t[2]->Xsize, NULL ) || vips_profile( t[3], &t[5], &t[6], NULL ) || vips_avg( t[6], &threshold, NULL ) ) return( -1 ); g_object_set( object, "threshold", (int) threshold, NULL ); return( 0 ); } static void vips_percent_class_init( VipsPercentClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "percent"; object_class->description = _( "find threshold for percent of pixels" ); object_class->build = vips_percent_build; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPercent, in ) ); VIPS_ARG_DOUBLE( class, "percent", 2, _( "Percent" ), _( "Percent of pixels" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsPercent, percent ), 0, 100, 50 ); VIPS_ARG_INT( class, "threshold", 3, _( "Threshold" ), _( "Threshold above which lie percent of pixels" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsPercent, threshold ), 0, 65535, 0 ); } static void vips_percent_init( VipsPercent *percent ) { } /** * vips_percent: * @in: input image * @percent: threshold percentage * @threshold: output threshold value * @...: %NULL-terminated list of optional named arguments * * vips_percent() returns (through the @threshold parameter) the threshold * above which there are @percent values of @in. If for example percent=10, the * number of pels of the input image with values greater than @threshold * will correspond to 10% of all pels of the image. * * The function works for uchar and ushort images only. It can be used * to threshold the scaled result of a filtering operation. * * See also: vips_hist_find(), vips_profile(). * * Returns: 0 on success, -1 on error */ int vips_percent( VipsImage *in, double percent, int *threshold, ... ) { va_list ap; int result; va_start( ap, threshold ); result = vips_call_split( "percent", ap, in, percent, threshold ); va_end( ap ); return( result ); } vips-8.2.2/libvips/histogram/Makefile.in0000664000175000017500000005452112651721157015157 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/histogram ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libhistogram_la_LIBADD = am_libhistogram_la_OBJECTS = histogram.lo maplut.lo hist_unary.lo \ hist_cum.lo hist_norm.lo hist_equal.lo hist_plot.lo \ hist_match.lo hist_local.lo percent.lo hist_ismonotonic.lo \ hist_entropy.lo stdif.lo libhistogram_la_OBJECTS = $(am_libhistogram_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libhistogram_la_SOURCES) DIST_SOURCES = $(libhistogram_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ noinst_LTLIBRARIES = libhistogram.la libhistogram_la_SOURCES = \ histogram.c \ phistogram.h \ maplut.c \ hist_unary.c \ hist_unary.h \ hist_cum.c \ hist_norm.c \ hist_equal.c \ hist_plot.c \ hist_match.c \ hist_local.c \ percent.c \ hist_ismonotonic.c \ hist_entropy.c \ stdif.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/histogram/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/histogram/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libhistogram.la: $(libhistogram_la_OBJECTS) $(libhistogram_la_DEPENDENCIES) $(EXTRA_libhistogram_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libhistogram_la_OBJECTS) $(libhistogram_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_cum.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_entropy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_equal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_ismonotonic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_local.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_match.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_norm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_plot.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hist_unary.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/histogram.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maplut.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/percent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdif.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/histogram/maplut.c0000664000175000017500000004527612651123363014562 00000000000000/* map though a LUT * * Modified: * 18/6/93 JC * - oops! im_incheck() added for LUT image * - some ANSIfication * 15/7/93 JC * - adapted for partial v2 * - ANSIfied * - now does complex LUTs too * 10/3/94 JC * - more helpful error messages, slight reformatting * 24/8/94 JC * - now allows non-uchar image input * 7/10/94 JC * - uses im_malloc(), IM_NEW() etc. * 13/3/95 JC * - now takes a private copy of LUT, so user can im_close() LUT image * after im_maplut() without fear of coredumps * 23/6/95 JC * - lut may now have many bands if image has just one band * 3/3/01 JC * - small speed ups * 30/6/04 * - heh, 1 band image + 3 band lut + >8bit output has been broken for 9 * years :-) * 7/11/07 * - new eval start/end system * 25/3/10 * - gtkdoc * - small cleanups * 5/7/13 * - convert to a class * 2/10/13 * - add --band arg, replacing im_tone_map() */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include typedef struct _VipsMaplut { VipsOperation parent_instance; VipsImage *in; VipsImage *out; VipsImage *lut; int band; int fmt; /* LUT image BandFmt */ int nb; /* Number of bands in lut */ int es; /* VIPS_IMAGE_SIZEOF_ELEMENT() for lut image */ int sz; /* Number of elements in minor dimension */ int clp; /* Value we clip against */ VipsPel **table; /* Lut converted to 2d array */ int overflow; /* Number of overflows for non-uchar lut */ } VipsMaplut; typedef VipsOperationClass VipsMaplutClass; G_DEFINE_TYPE( VipsMaplut, vips_maplut, VIPS_TYPE_OPERATION ); static void vips_maplut_preeval( VipsImage *image, VipsProgress *progress, VipsMaplut *maplut ) { maplut->overflow = 0; } static void vips_maplut_posteval( VipsImage *image, VipsProgress *progress, VipsMaplut *maplut ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( maplut ); if( maplut->overflow ) vips_warn( class->nickname, _( "%d overflows detected" ), maplut->overflow ); } /* Our sequence value: the region this sequence is using, and local stats. */ typedef struct { VipsRegion *ir; /* Input region */ int overflow; /* Number of overflows */ } VipsMaplutSequence; /* Our start function. */ static void * vips_maplut_start( VipsImage *out, void *a, void *b ) { VipsImage *in = (VipsImage *) a; VipsMaplutSequence *seq; if( !(seq = VIPS_NEW( out, VipsMaplutSequence )) ) return( NULL ); /* Init! */ seq->ir = NULL; seq->overflow = 0; if( !(seq->ir = vips_region_new( in )) ) return( NULL ); return( seq ); } /* Map through n non-complex luts. */ #define loop( OUT ) { \ int b = maplut->nb; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < b; z++ ) { \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ OUT *tlut = (OUT *) maplut->table[z]; \ \ for( x = z; x < ne; x += b ) \ q[x] = tlut[p[x]]; \ } \ } \ } /* Map through n complex luts. */ #define loopc( OUT ) { \ int b = in->Bands; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < b; z++ ) { \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ) + z; \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ) + z * 2; \ OUT *tlut = (OUT *) maplut->table[z]; \ \ for( x = 0; x < ne; x += b ) { \ int n = p[x] * 2; \ \ q[0] = tlut[n]; \ q[1] = tlut[n + 1]; \ q += b * 2; \ } \ } \ } \ } #define loopg( IN, OUT ) { \ int b = maplut->nb; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < b; z++ ) { \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ OUT *tlut = (OUT *) maplut->table[z]; \ \ for( x = z; x < ne; x += b ) { \ int index = p[x]; \ \ if( index > maplut->clp ) { \ index = maplut->clp; \ seq->overflow++; \ } \ \ q[x] = tlut[index]; \ } \ } \ } \ } #define loopcg( IN, OUT ) { \ int b = in->Bands; \ \ for( y = to; y < bo; y++ ) { \ for( z = 0; z < b; z++ ) { \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ) + z; \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ) + z * 2; \ OUT *tlut = (OUT *) maplut->table[z]; \ \ for( x = 0; x < ne; x += b ) { \ int index = p[x]; \ \ if( index > maplut->clp ) { \ index = maplut->clp; \ seq->overflow++; \ } \ \ q[0] = tlut[index * 2]; \ q[1] = tlut[index * 2 + 1]; \ \ q += b * 2; \ } \ } \ } \ } /* Map image through one non-complex lut. */ #define loop1( OUT ) { \ OUT *tlut = (OUT *) maplut->table[0]; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < ne; x++ ) \ q[x] = tlut[p[x]]; \ } \ } /* Map image through one complex lut. */ #define loop1c( OUT ) { \ OUT *tlut = (OUT *) maplut->table[0]; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < ne; x++ ) { \ int n = p[x] * 2; \ \ q[0] = tlut[n]; \ q[1] = tlut[n + 1]; \ q += 2; \ } \ } \ } /* As above, but the input image may be any unsigned integer type. We have to * index the lut carefully, and record the number of overflows we detect. */ #define loop1g( IN, OUT ) { \ OUT *tlut = (OUT *) maplut->table[0]; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < ne; x++ ) { \ int index = p[x]; \ \ if( index > maplut->clp ) { \ index = maplut->clp; \ seq->overflow++; \ } \ \ q[x] = tlut[index]; \ } \ } \ } #define loop1cg( IN, OUT ) { \ OUT *tlut = (OUT *) maplut->table[0]; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < ne; x++ ) { \ int index = p[x]; \ \ if( index > maplut->clp ) { \ index = maplut->clp; \ seq->overflow++; \ } \ \ q[0] = tlut[index * 2]; \ q[1] = tlut[index * 2 + 1]; \ q += 2; \ } \ } \ } /* Map 1-band image through a many-band non-complex lut. */ #define loop1m( OUT ) { \ OUT **tlut = (OUT **) maplut->table; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ \ for( i = 0, x = 0; x < np; x++ ) { \ int n = p[x]; \ \ for( z = 0; z < maplut->nb; z++, i++ ) \ q[i] = tlut[z][n]; \ } \ } \ } /* Map 1-band image through many-band complex lut. */ #define loop1cm( OUT ) { \ OUT **tlut = (OUT **) maplut->table; \ \ for( y = to; y < bo; y++ ) { \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ VipsPel *p = VIPS_REGION_ADDR( ir, le, y ); \ \ for( x = 0; x < np; x++ ) { \ int n = p[x] * 2; \ \ for( z = 0; z < maplut->nb; z++ ) { \ q[0] = tlut[z][n]; \ q[1] = tlut[z][n+1]; \ q += 2; \ } \ } \ } \ } /* Map 1-band uint or ushort image through a many-band non-complex LUT. */ #define loop1gm( IN, OUT ) { \ OUT **tlut = (OUT **) maplut->table; \ \ for( y = to; y < bo; y++ ) { \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ \ for( i = 0, x = 0; x < np; x++ ) { \ int n = p[x]; \ \ if( n > maplut->clp ) { \ n = maplut->clp; \ seq->overflow++; \ } \ \ for( z = 0; z < maplut->nb; z++, i++ ) \ q[i] = tlut[z][n]; \ } \ } \ } /* Map 1-band uint or ushort image through a many-band complex LUT. */ #define loop1cgm( IN, OUT ) { \ OUT **tlut = (OUT **) maplut->table; \ \ for( y = to; y < bo; y++ ) { \ IN *p = (IN *) VIPS_REGION_ADDR( ir, le, y ); \ OUT *q = (OUT *) VIPS_REGION_ADDR( or, le, y ); \ \ for( x = 0; x < np; x++ ) { \ int n = p[x]; \ \ if( n > maplut->clp ) { \ n = maplut->clp; \ seq->overflow++; \ } \ \ for( z = 0; z < maplut->nb; z++ ) { \ q[0] = tlut[z][n * 2]; \ q[1] = tlut[z][n * 2 + 1]; \ q += 2; \ } \ } \ } \ } /* Switch for input types. Has to be uint type! */ #define inner_switch( UCHAR, GEN, OUT ) \ switch( ir->im->BandFmt ) { \ case VIPS_FORMAT_UCHAR: UCHAR( OUT ); break; \ case VIPS_FORMAT_USHORT: GEN( unsigned short, OUT ); break; \ case VIPS_FORMAT_UINT: GEN( unsigned int, OUT ); break; \ default: \ g_assert_not_reached(); \ } /* Switch for LUT types. One function for non-complex images, a * variant for complex ones. Another pair as well, in case the input is not * uchar. */ #define outer_switch( UCHAR_F, UCHAR_FC, GEN_F, GEN_FC ) \ switch( maplut->fmt ) { \ case VIPS_FORMAT_UCHAR: \ inner_switch( UCHAR_F, GEN_F, unsigned char ); break; \ case VIPS_FORMAT_CHAR:\ inner_switch( UCHAR_F, GEN_F, char ); break; \ case VIPS_FORMAT_USHORT: \ inner_switch( UCHAR_F, GEN_F, unsigned short ); break; \ case VIPS_FORMAT_SHORT: \ inner_switch( UCHAR_F, GEN_F, short ); break; \ case VIPS_FORMAT_UINT: \ inner_switch( UCHAR_F, GEN_F, unsigned int ); break; \ case VIPS_FORMAT_INT: \ inner_switch( UCHAR_F, GEN_F, int ); break; \ case VIPS_FORMAT_FLOAT: \ inner_switch( UCHAR_F, GEN_F, float ); break; \ case VIPS_FORMAT_DOUBLE: \ inner_switch( UCHAR_F, GEN_F, double ); break; \ case VIPS_FORMAT_COMPLEX: \ inner_switch( UCHAR_FC, GEN_FC, float ); break; \ case VIPS_FORMAT_DPCOMPLEX: \ inner_switch( UCHAR_FC, GEN_FC, double ); break; \ default: \ g_assert_not_reached(); \ } /* Do a map. */ static int vips_maplut_gen( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { VipsMaplutSequence *seq = (VipsMaplutSequence *) vseq; VipsImage *in = (VipsImage *) a; VipsMaplut *maplut = (VipsMaplut *) b; VipsRegion *ir = seq->ir; VipsRect *r = &or->valid; int le = r->left; int to = r->top; int bo = VIPS_RECT_BOTTOM( r ); int np = r->width; /* Pels across region */ int ne = VIPS_REGION_N_ELEMENTS( or ); /* Number of elements */ int x, y, z, i; if( vips_region_prepare( ir, r ) ) return( -1 ); if( maplut->nb == 1 ) /* One band lut. */ outer_switch( loop1, loop1c, loop1g, loop1cg ) else /* Many band lut. */ if( in->Bands == 1 ) /* ... but 1 band input. */ outer_switch( loop1m, loop1cm, loop1gm, loop1cgm ) else outer_switch( loop, loopc, loopg, loopcg ) return( 0 ); } /* Destroy a sequence value. */ static int vips_maplut_stop( void *vseq, void *a, void *b ) { VipsMaplutSequence *seq = (VipsMaplutSequence *) vseq; VipsMaplut *maplut = (VipsMaplut *) b; /* Add to global stats. */ maplut->overflow += seq->overflow; VIPS_UNREF( seq->ir ); return( 0 ); } /* Save a bit of typing. */ #define UC VIPS_FORMAT_UCHAR #define US VIPS_FORMAT_USHORT #define UI VIPS_FORMAT_UINT /* Type mapping: go to uchar / ushort / uint to make an index. */ static int bandfmt_maplut[10] = { /* UC C US S UI I F X D DX */ UC, UC, US, US, UI, UI, UI, UI, UI, UI }; /* Repack lut into a set of band arrays. If we're just passing one band of the * image through the lut, put the identity function in the other bands. */ #define PACK_TABLE( TYPE ) { \ TYPE *data = (TYPE *) lut->data; \ int x, b; \ \ for( x = 0; x < maplut->sz; x++ ) \ for( b = 0; b < maplut->nb; b++ ) { \ TYPE *q = (TYPE *) maplut->table[b]; \ \ if( maplut->band >= 0 && \ lut->Bands == 1 ) { \ if( b == maplut->band ) \ q[x] = data[x]; \ else \ q[x] = x; \ } \ else \ q[x] = data[x * lut->Bands + b]; \ } \ } #define PACK_TABLEC( TYPE ) { \ TYPE *data = (TYPE *) lut->data; \ int x, b; \ \ for( x = 0; x < maplut->sz; x++ ) \ for( b = 0; b < maplut->nb; b++ ) { \ TYPE *q = (TYPE *) maplut->table[b]; \ \ if( maplut->band >= 0 && \ lut->Bands == 1 ) { \ if( b == maplut->band ) { \ q[2 * x] = data[2 * x]; \ q[2 * x + 1] = data[2 * x + 1]; \ } \ else { \ q[2 * x] = x; \ q[2 * x + 1] = 0; \ } \ } \ else { \ q[2 * x] = data[2 * (x * lut->Bands + b)]; \ q[2 * x + 1] = \ data[2 * (x * lut->Bands + b) + 1]; \ } \ } \ } static int vips_maplut_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); VipsMaplut *maplut = (VipsMaplut *) object; VipsImage **t = (VipsImage **) vips_object_local_array( object, 2 ); VipsImage *in; VipsImage *lut; int i; g_object_set( object, "out", vips_image_new(), NULL ); if( VIPS_OBJECT_CLASS( vips_maplut_parent_class )->build( object ) ) return( -1 ); in = maplut->in; lut = maplut->lut; if( vips_check_hist( class->nickname, lut ) || vips_check_uncoded( class->nickname, lut ) ) return( -1 ); /* Cast @in to u8/u16/u32 to make the index image. */ if( vips_cast( in, &t[0], bandfmt_maplut[in->BandFmt], NULL ) ) return( -1 ); in = t[0]; if( vips_check_uncoded( class->nickname, in ) || vips_check_bands_1orn( class->nickname, in, lut ) || vips_image_pio_input( in ) ) return( -1 ); if( vips_image_pipelinev( maplut->out, VIPS_DEMAND_STYLE_THINSTRIP, in, lut, NULL ) ) return( -1 ); maplut->out->BandFmt = lut->BandFmt; /* Output has same number of bands as LUT, unless LUT has 1 band, in * which case output has same number of bands as input. */ if( lut->Bands != 1 ) maplut->out->Bands = lut->Bands; /* The Type comes from the image with many bands. A B_W index image, * for example, needs to become an RGB image when it goes through a * three-band LUT. */ if( lut->Bands != 1 ) maplut->out->Type = lut->Type; g_signal_connect( in, "preeval", G_CALLBACK( vips_maplut_preeval ), maplut ); g_signal_connect( in, "posteval", G_CALLBACK( vips_maplut_posteval ), maplut ); /* Make luts. We unpack the LUT image into a 2D C array to speed * processing. */ if( !(t[1] = vips_image_copy_memory( lut )) ) return( -1 ); lut = t[1]; maplut->fmt = lut->BandFmt; maplut->es = VIPS_IMAGE_SIZEOF_ELEMENT( lut ); maplut->sz = lut->Xsize * lut->Ysize; maplut->clp = maplut->sz - 1; /* If @bands is >= 0, we need to expand the lut to the number of bands * in the input image. */ if( maplut->band >= 0 && lut->Bands == 1 ) maplut->nb = in->Bands; else maplut->nb = lut->Bands; /* Attach tables. */ if( !(maplut->table = VIPS_ARRAY( maplut, maplut->nb, VipsPel * )) ) return( -1 ); for( i = 0; i < maplut->nb; i++ ) if( !(maplut->table[i] = VIPS_ARRAY( maplut, maplut->sz * maplut->es, VipsPel )) ) return( -1 ); /* Scan LUT and fill table. */ switch( lut->BandFmt ) { case VIPS_FORMAT_UCHAR: PACK_TABLE( unsigned char ); break; case VIPS_FORMAT_CHAR: PACK_TABLE( char ); break; case VIPS_FORMAT_USHORT: PACK_TABLE( unsigned short ); break; case VIPS_FORMAT_SHORT: PACK_TABLE( short ); break; case VIPS_FORMAT_UINT: PACK_TABLE( unsigned int ); break; case VIPS_FORMAT_INT: PACK_TABLE( int ); break; case VIPS_FORMAT_FLOAT: PACK_TABLE( float ); break; case VIPS_FORMAT_DOUBLE: PACK_TABLE( double ); break; case VIPS_FORMAT_COMPLEX: PACK_TABLEC( float ); break; case VIPS_FORMAT_DPCOMPLEX: PACK_TABLEC( double ); break; default: g_assert_not_reached(); } if( vips_image_generate( maplut->out, vips_maplut_start, vips_maplut_gen, vips_maplut_stop, in, maplut ) ) return( -1 ); return( 0 ); } static void vips_maplut_class_init( VipsMaplutClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "maplut"; object_class->description = _( "map an image though a lut" ); object_class->build = vips_maplut_build; operation_class->flags = VIPS_OPERATION_SEQUENTIAL_UNBUFFERED; VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaplut, in ) ); VIPS_ARG_IMAGE( class, "out", 2, _( "Output" ), _( "Output image" ), VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( VipsMaplut, out ) ); VIPS_ARG_IMAGE( class, "lut", 3, _( "LUT" ), _( "Look-up table image" ), VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( VipsMaplut, lut ) ); VIPS_ARG_INT( class, "band", 4, _( "band" ), _( "apply one-band lut to this band of in" ), VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( VipsMaplut, band ), -1, 10000, -1 ); } static void vips_maplut_init( VipsMaplut *maplut ) { maplut->band = -1; } /** * vips_maplut: * @in: input image * @out: output image * @lut: look-up table * @...: %NULL-terminated list of optional named arguments * * Optional arguments: * * @band: apply one-band @lut to this band of @in * * Map an image through another image acting as a LUT (Look Up Table). * The lut may have any type and the output image will be that type. * * The input image will be cast to one of the unsigned integer types, that is, * VIPS_FORMAT_UCHAR, VIPS_FORMAT_USHORT or VIPS_FORMAT_UINT. * * If @lut is too small for the input type (for example, if @in is * VIPS_FORMAT_UCHAR but @lut only has 100 elements), the lut is padded out * by copying the last element. Overflows are reported at the end of * computation. * If @lut is too large, extra values are ignored. * * If @lut has one band and @band is -1 (the default), then all bands of @in * pass through @lut. If @band is >= 0, then just that band of @in passes * through @lut and other bands are just copied. * * If @lut * has same number of bands as @in, then each band is mapped * separately. If @in has one band, then @lut may have many bands and * the output will have the same number of bands as @lut. * * See also: vips_hist_find(), vips_identity(). * * Returns: 0 on success, -1 on error */ int vips_maplut( VipsImage *in, VipsImage **out, VipsImage *lut, ... ) { va_list ap; int result; va_start( ap, lut ); result = vips_call_split( "maplut", ap, in, out, lut ); va_end( ap ); return( result ); } vips-8.2.2/libvips/introspect.c0000664000175000017500000000556412530402247013446 00000000000000/* Entry point for g-ir-scanner ... this program is used during build time * only. * * 19/12/14 * - quick hack */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include static char *main_option_introspect_dump = NULL; static GOptionEntry main_option[] = { { "introspect-dump", 'i', 0, G_OPTION_ARG_STRING, &main_option_introspect_dump, N_( "dump introspection data" ), NULL }, { NULL } }; int main( int argc, char *argv[] ) { GOptionContext *context; GOptionGroup *main_group; GError *error = NULL; if( VIPS_INIT( argv[0] ) ) vips_error_exit( "unable to start VIPS" ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); context = g_option_context_new( _( "- introspect" ) ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, main_option ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); if( !g_option_context_parse( context, &argc, &argv, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( "try \"%s --help\"", g_get_prgname() ); } g_option_context_free( context ); #ifdef DEBUG /* For debugging it's handy to have a copy of the input file. */ if( main_option_introspect_dump ) { char **args; char *cmd; args = g_strsplit( main_option_introspect_dump, ",", 2 ); cmd = g_strdup_printf( "cp %s ~/functions.txt", args[0]); printf( "introspect: running '%s'\n", cmd ); system( cmd ); g_free( cmd ); } #endif /*DEBUG*/ if( main_option_introspect_dump && !g_irepository_dump( main_option_introspect_dump, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( "unable to dump introspection" ); } vips_shutdown(); return( 0 ); } vips-8.2.2/libvips/Makefile.am0000664000175000017500000000521612571531237013145 00000000000000OPTIONAL_COMPILE_DIR = OPTIONAL_DIST_DIR = OPTIONAL_LIB = if ENABLE_DEPRECATED OPTIONAL_COMPILE_DIR += deprecated OPTIONAL_LIB += deprecated/libdeprecated.la else OPTIONAL_DIST_DIR += deprecated endif SUBDIRS = \ include \ foreign \ arithmetic \ resample \ colour \ conversion \ convolution \ $(OPTIONAL_COMPILE_DIR) \ freqfilt \ histogram \ draw \ iofuncs \ morphology \ mosaicing \ create \ video \ . lib_LTLIBRARIES = libvips.la # empty means default to C linking libvips_la_SOURCES = # make sure we link the top-level with c++ nodist_EXTRA_libvips_la_SOURCES = resample/dummy2.cc # DLLs need dependant libs there too ... put @VIPS_LIBS@ at the end libvips_la_LIBADD = \ resample/libresample.la \ arithmetic/libarithmetic.la \ colour/libcolour.la \ conversion/libconversion.la \ convolution/libconvolution.la \ $(OPTIONAL_LIB) \ foreign/libforeign.la \ freqfilt/libfreqfilt.la \ histogram/libhistogram.la \ draw/libdraw.la \ iofuncs/libiofuncs.la \ morphology/libmorphology.la \ mosaicing/libmosaicing.la \ create/libcreate.la \ video/libvideo.la \ @VIPS_LIBS@ libvips_la_LDFLAGS = \ -no-undefined \ -version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ EXTRA_DIST = \ $(OPTIONAL_DIST_DIR) CLEANFILES = -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_GIRS = INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) if HAVE_INTROSPECTION AM_CPPFLAGS = \ -I${top_srcdir}/libvips/include \ @VIPS_CFLAGS@ \ @VIPS_INCLUDES@ \ @INTROSPECTION_CFLAGS@ AM_LDFLAGS = \ @INTROSPECTION_LIBS@ \ @LDFLAGS@ LDADD = @INTROSPECTION_LIBS@ @VIPS_CFLAGS@ libvips.la @VIPS_LIBS@ noinst_PROGRAMS = \ introspect introspect_SOURCES = \ introspect.c # we can't get the _SOURCES lists from the subdirs directly, we get passed it # by configure instead introspection_sources = @vips_introspection_sources@ # we make the vips8 API Vips-8.0.gir: introspect Vips_8_0_gir_INCLUDES = GObject-2.0 Vips_8_0_gir_CFLAGS = $(INCLUDES) -I${top_srcdir}/libvips/include Vips_8_0_gir_LIBS = libvips.la Vips_8_0_gir_FILES = $(introspection_sources) INTROSPECTION_GIRS += Vips-8.0.gir # don't use --warn-all --verbose # we have an unusual markup with optional args and we don't want to see all # those warnings Vips_8_0_gir_SCANNERFLAGS = \ --program=./introspect \ --identifier-prefix=Vips \ --identifier-prefix=vips \ --symbol-prefix=vips girdir = $(datadir)/gir-1.0 gir_DATA = $(INTROSPECTION_GIRS) typelibdir = $(libdir)/girepository-1.0 typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) CLEANFILES += $(gir_DATA) $(typelib_DATA) endif vips-8.2.2/libvips/include/0000775000175000017500000000000012651721505012606 500000000000000vips-8.2.2/libvips/include/vips/0000775000175000017500000000000012651721505013567 500000000000000vips-8.2.2/libvips/include/vips/operation.h0000664000175000017500000001034412530402247015655 00000000000000/* base class for all vips operations */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_OPERATION_H #define VIPS_OPERATION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum /*< flags >*/ { VIPS_OPERATION_NONE = 0, VIPS_OPERATION_SEQUENTIAL = 1, VIPS_OPERATION_SEQUENTIAL_UNBUFFERED = 2, VIPS_OPERATION_NOCACHE = 4, VIPS_OPERATION_DEPRECATED = 8 } VipsOperationFlags; #define VIPS_TYPE_OPERATION (vips_operation_get_type()) #define VIPS_OPERATION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_OPERATION, VipsOperation )) #define VIPS_OPERATION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_OPERATION, VipsOperationClass )) #define VIPS_IS_OPERATION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_OPERATION )) #define VIPS_IS_OPERATION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_OPERATION )) #define VIPS_OPERATION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_OPERATION, VipsOperationClass )) typedef gboolean (*VipsOperationBuildFn)( VipsObject *object ); typedef struct _VipsOperation { VipsObject parent_instance; /* Keep the hash here. */ guint hash; gboolean found_hash; /* Pixels calculated ... handy for measuring over-calculation. */ int pixels; } VipsOperation; typedef struct _VipsOperationClass { VipsObjectClass parent_class; /* Print the usage message. */ void (*usage)( struct _VipsOperationClass *cls, VipsBuf *buf ); /* Return a set of operation flags. */ VipsOperationFlags (*get_flags)( VipsOperation *operation ); VipsOperationFlags flags; /* One of our input images has signalled "invalidate". The cache uses * VipsOperation::invalidate to drop dirty ops. */ void (*invalidate)( VipsOperation *operation ); } VipsOperationClass; GType vips_operation_get_type( void ); VipsOperationFlags vips_operation_get_flags( VipsOperation *operation ); void vips_operation_class_print_usage( VipsOperationClass *operation_class ); void vips_operation_invalidate( VipsOperation *operation ); int vips_operation_call_valist( VipsOperation *operation, va_list ap ); VipsOperation *vips_operation_new( const char *name ); int vips_call_required_optional( VipsOperation **operation, va_list required, va_list optional ); int vips_call( const char *operation_name, ... ) __attribute__((sentinel)); int vips_call_split( const char *operation_name, va_list optional, ... ); int vips_call_split_option_string( const char *operation_name, const char *option_string, va_list optional, ... ); void vips_call_options( GOptionGroup *group, VipsOperation *operation ); int vips_call_argv( VipsOperation *operation, int argc, char **argv ); void vips_cache_drop_all( void ); VipsOperation *vips_cache_operation_lookup( VipsOperation *operation ); void vips_cache_operation_add( VipsOperation *operation ); int vips_cache_operation_buildp( VipsOperation **operation ); VipsOperation *vips_cache_operation_build( VipsOperation *operation ); void vips_cache_print( void ); void vips_cache_set_max( int max ); void vips_cache_set_max_mem( size_t max_mem ); int vips_cache_get_max( void ); int vips_cache_get_size( void ); size_t vips_cache_get_max_mem( void ); int vips_cache_get_max_files( void ); void vips_cache_set_max_files( int max_files ); void vips_cache_set_dump( gboolean dump ); void vips_cache_set_trace( gboolean trace ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_OPERATION_H*/ vips-8.2.2/libvips/include/vips/enumtypes.h0000664000175000017500000001236712530402247015715 00000000000000 /* Generated data (by glib-mkenums) */ #ifndef VIPS_ENUM_TYPES_H #define VIPS_ENUM_TYPES_H G_BEGIN_DECLS /* enumerations from "../../../libvips/include/vips/foreign.h" */ GType vips_foreign_flags_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_FLAGS (vips_foreign_flags_get_type()) GType vips_saveable_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_SAVEABLE (vips_saveable_get_type()) GType vips_foreign_tiff_compression_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_TIFF_COMPRESSION (vips_foreign_tiff_compression_get_type()) GType vips_foreign_tiff_predictor_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_TIFF_PREDICTOR (vips_foreign_tiff_predictor_get_type()) GType vips_foreign_tiff_resunit_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_TIFF_RESUNIT (vips_foreign_tiff_resunit_get_type()) GType vips_foreign_png_filter_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_PNG_FILTER (vips_foreign_png_filter_get_type()) GType vips_foreign_dz_layout_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_DZ_LAYOUT (vips_foreign_dz_layout_get_type()) GType vips_foreign_dz_depth_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_DZ_DEPTH (vips_foreign_dz_depth_get_type()) GType vips_foreign_dz_container_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_FOREIGN_DZ_CONTAINER (vips_foreign_dz_container_get_type()) /* enumerations from "../../../libvips/include/vips/arithmetic.h" */ GType vips_operation_math_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_MATH (vips_operation_math_get_type()) GType vips_operation_math2_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_MATH2 (vips_operation_math2_get_type()) GType vips_operation_round_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_ROUND (vips_operation_round_get_type()) GType vips_operation_relational_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_RELATIONAL (vips_operation_relational_get_type()) GType vips_operation_boolean_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_BOOLEAN (vips_operation_boolean_get_type()) GType vips_operation_complex_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_COMPLEX (vips_operation_complex_get_type()) GType vips_operation_complex2_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_COMPLEX2 (vips_operation_complex2_get_type()) GType vips_operation_complexget_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_COMPLEXGET (vips_operation_complexget_get_type()) /* enumerations from "../../../libvips/include/vips/conversion.h" */ GType vips_extend_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_EXTEND (vips_extend_get_type()) GType vips_direction_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_DIRECTION (vips_direction_get_type()) GType vips_align_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ALIGN (vips_align_get_type()) GType vips_angle_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ANGLE (vips_angle_get_type()) GType vips_angle45_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ANGLE45 (vips_angle45_get_type()) /* enumerations from "../../../libvips/include/vips/util.h" */ GType vips_token_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_TOKEN (vips_token_get_type()) /* enumerations from "../../../libvips/include/vips/image.h" */ GType vips_demand_style_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_DEMAND_STYLE (vips_demand_style_get_type()) GType vips_image_type_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_IMAGE_TYPE (vips_image_type_get_type()) GType vips_interpretation_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_INTERPRETATION (vips_interpretation_get_type()) GType vips_band_format_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_BAND_FORMAT (vips_band_format_get_type()) GType vips_coding_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_CODING (vips_coding_get_type()) GType vips_access_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ACCESS (vips_access_get_type()) /* enumerations from "../../../libvips/include/vips/colour.h" */ GType vips_intent_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_INTENT (vips_intent_get_type()) GType vips_pcs_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_PCS (vips_pcs_get_type()) /* enumerations from "../../../libvips/include/vips/operation.h" */ GType vips_operation_flags_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_FLAGS (vips_operation_flags_get_type()) /* enumerations from "../../../libvips/include/vips/convolution.h" */ GType vips_combine_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_COMBINE (vips_combine_get_type()) /* enumerations from "../../../libvips/include/vips/morphology.h" */ GType vips_operation_morphology_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_OPERATION_MORPHOLOGY (vips_operation_morphology_get_type()) /* enumerations from "../../../libvips/include/vips/draw.h" */ GType vips_combine_mode_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_COMBINE_MODE (vips_combine_mode_get_type()) /* enumerations from "../../../libvips/include/vips/basic.h" */ GType vips_precision_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_PRECISION (vips_precision_get_type()) /* enumerations from "../../../libvips/include/vips/object.h" */ GType vips_argument_flags_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_ARGUMENT_FLAGS (vips_argument_flags_get_type()) G_END_DECLS #endif /*VIPS_ENUM_TYPES_H*/ /* Generated data ends here */ vips-8.2.2/libvips/include/vips/video.h0000664000175000017500000000240212530402247014757 00000000000000/* video.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_VIDEO_H #define IM_VIDEO_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int im_video_v4l1( VipsImage *im, const char *device, int channel, int brightness, int colour, int contrast, int hue, int ngrabs ); int im_video_test( VipsImage *im, int brightness, int error ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_VIDEO_H*/ vips-8.2.2/libvips/include/vips/internal.h0000664000175000017500000001705112636460033015477 00000000000000/* Declarations only used internally to vips. See private.h for declarations * which are not public, but which have to be publically visible. * * 11/9/06 * - cut from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_INTERNAL_H #define VIPS_INTERNAL_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* What we store in the Meta hash table. We can't just use GHashTable's * key/value pairs, since we need to iterate over meta in Meta_traverse order. * * We don't refcount at this level ... large meta values are refcounted by * their GValue implementation, see eg. MetaArea. */ typedef struct _VipsMeta { VipsImage *im; char *field; /* strdup() of field name */ GValue value; /* copy of value */ } VipsMeta; void vips_check_init( void ); void vips__meta_init_types( void ); void vips__meta_destroy( VipsImage *im ); int vips__meta_cp( VipsImage *, const VipsImage * ); /* Default tile geometry. */ extern int vips__tile_width; extern int vips__tile_height; extern int vips__fatstrip_height; extern int vips__thinstrip_height; /* Default n threads. */ extern int vips__concurrency; /* abort() on any error. */ extern int vips__fatal; /* Enable leak check. */ extern int vips__leak; /* Give progress feedback. */ extern int vips__progress; /* Leak check on exit. */ extern int vips__leak; /* Show info messages. Handy for debugging. */ extern int vips__info; /* A string giving the image size (in bytes of uncompressed image) above which * we decompress to disc on open. */ extern char *vips__disc_threshold; /* Cache size settings. */ extern char *vips__cache_max; extern char *vips__cache_max_mem; extern char *vips__cache_max_files; extern gboolean vips__cache_dump; extern gboolean vips__cache_trace; void vips__cache_init( void ); void vips__print_renders( void ); void vips__type_leak( void ); typedef int (*im__fftproc_fn)( VipsImage *, VipsImage *, VipsImage * ); int im__fftproc( VipsImage *dummy, VipsImage *in, VipsImage *out, im__fftproc_fn fn ); /* iofuncs */ int vips__open_image_read( const char *filename ); int vips__open_image_write( const char *filename, gboolean temp ); int vips_image_open_input( VipsImage *image ); int vips_image_open_output( VipsImage *image ); void vips__link_break_all( VipsImage *im ); void *vips__link_map( VipsImage *image, gboolean upstream, VipsSListMap2Fn fn, void *a, void *b ); char *vips__b64_encode( const unsigned char *data, size_t data_length ); unsigned char *vips__b64_decode( const char *buffer, size_t *data_length ); void *vips__mmap( int fd, int writeable, size_t length, gint64 offset ); int vips__munmap( const void *start, size_t length ); int vips_mapfile( VipsImage * ); int vips_mapfilerw( VipsImage * ); int vips_remapfilerw( VipsImage * ); void vips__buffer_init( void ); void vips__buffer_shutdown( void ); void vips__copy_4byte( int swap, unsigned char *to, unsigned char *from ); void vips__copy_2byte( gboolean swap, unsigned char *to, unsigned char *from ); guint32 vips__file_magic( const char *filename ); int vips__has_extension_block( VipsImage *im ); void *vips__read_extension_block( VipsImage *im, int *size ); int vips__write_extension_block( VipsImage *im, void *buf, int size ); int vips__writehist( VipsImage *image ); int vips__read_header_bytes( VipsImage *im, unsigned char *from ); int vips__write_header_bytes( VipsImage *im, unsigned char *to ); extern GMutex *vips__global_lock; int vips_image_written( VipsImage *image ); void vips_image_preeval( VipsImage *image ); void vips_image_eval( VipsImage *image, guint64 processed ); void vips_image_posteval( VipsImage *image ); gboolean vips_image_iskilled( VipsImage *image ); void vips_image_set_kill( VipsImage *image, gboolean kill ); VipsImage *vips_image_new_mode( const char *filename, const char *mode ); int vips__formatalike_vec( VipsImage **in, VipsImage **out, int n ); int vips__sizealike_vec( VipsImage **in, VipsImage **out, int n ); int vips__bandup( const char *domain, VipsImage *in, VipsImage **out, int n ); int vips__bandalike_vec( const char *domain, VipsImage **in, VipsImage **out, int n, int base_bands ); int vips__formatalike( VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ); int vips__sizealike( VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ); int vips__bandalike( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 ); /* draw */ VipsPel *vips__vector_to_pels( const char *domain, int bands, VipsBandFormat format, VipsCoding coding, double *real, double *imag, int n ); VipsPel *vips__vector_to_ink( const char *domain, VipsImage *im, double *real, double *imag, int n ); double *vips__ink_to_vector( const char *domain, VipsImage *im, VipsPel *ink, int *n ); VipsPel *im__vector_to_ink( const char *domain, VipsImage *im, int n, double *vec ); int vips__draw_flood_direct( VipsImage *image, VipsImage *test, int serial, int x, int y ); int vips__draw_mask_direct( VipsImage *image, VipsImage *mask, VipsPel *ink, int x, int y ); typedef void (*VipsDrawPoint)( VipsImage *image, int x, int y, void *client ); typedef void (*VipsDrawScanline)( VipsImage *image, int y, int x1, int x2, void *client ); void vips__draw_line_direct( VipsImage *image, int x1, int y1, int x2, int y2, VipsDrawPoint draw_point, void *client ); void vips__draw_circle_direct( VipsImage *image, int cx, int cy, int r, VipsDrawScanline draw_scanline, void *client ); int vips__insert_just_one( VipsRegion *out, VipsRegion *in, int x, int y ); int vips__insert_paste_region( VipsRegion *out, VipsRegion *in, VipsRect *pos ); /* Register base vips interpolators, called during startup. */ void vips__interpolate_init( void ); /* Start up various packages. */ void vips_arithmetic_operation_init( void ); void vips_conversion_operation_init( void ); void vips_resample_operation_init( void ); void vips_foreign_operation_init( void ); void vips_colour_operation_init( void ); void vips_histogram_operation_init( void ); void vips_freqfilt_operation_init( void ); void vips_create_operation_init( void ); void vips_morphology_operation_init( void ); void vips_convolution_operation_init( void ); void vips_draw_operation_init( void ); void vips_mosaicing_operation_init( void ); void vips_cimg_operation_init( void ); guint64 vips__parse_size( const char *size_string ); int vips__substitute( char *buf, size_t len, char *sub ); int vips_check_coding_labq( const char *domain, VipsImage *im ); int vips_check_coding_rad( const char *domain, VipsImage *im ); int vips_check_bands_3ormore( const char *domain, VipsImage *im ); int vips__byteswap_bool( VipsImage *in, VipsImage **out, gboolean swap ); char *vips__make_xml_metadata( const char *domain, VipsImage *image ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_INTERNAL_H*/ vips-8.2.2/libvips/include/vips/histogram.h0000664000175000017500000000414212605241561015654 00000000000000/* histograms_lut.h * * 3/11/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_HISTOGRAM_H #define VIPS_HISTOGRAM_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips_maplut( VipsImage *in, VipsImage **out, VipsImage *lut, ... ) __attribute__((sentinel)); int vips_percent( VipsImage *in, double percent, int *threshold, ... ) __attribute__((sentinel)); int vips_stdif( VipsImage *in, VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_hist_cum( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_norm( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_equal( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_plot( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_match( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_local( VipsImage *in, VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_hist_ismonotonic( VipsImage *in, gboolean *out, ... ) __attribute__((sentinel)); int vips_hist_entropy( VipsImage *in, double *out, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_HISTOGRAM_H*/ vips-8.2.2/libvips/include/vips/cimg_funcs.h0000664000175000017500000000240612530402247015772 00000000000000/* cimg_funcs.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_CIMG_FUNCS_H #define IM_CIMG_FUNCS_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include int vips_gmic( VipsImage **in, VipsImage **out, int n, int padding, double x_scale, double y_scale, const char *command, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_CIMG_FUNCS_H*/ vips-8.2.2/libvips/include/vips/buf.h0000664000175000017500000000600112530402247014424 00000000000000/* A static string buffer, with overflow protection. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_BUF_H #define VIPS_BUF_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include /* A string in the process of being written to ... multiple calls to * vips_buf_append add to it. On overflow append "..." and block further * writes. */ typedef struct _VipsBuf { /* All fields are private. */ /*< private >*/ char *base; /* String base */ int mx; /* Maximum length */ int i; /* Current write point */ gboolean full; /* String has filled, block writes */ int lasti; /* For read-recent */ gboolean dynamic; /* We own the string with malloc() */ } VipsBuf; #define VIPS_BUF_STATIC( TEXT ) \ { &TEXT[0], sizeof( TEXT ), 0, FALSE, 0, FALSE } /* Init and append to one of the above. */ void vips_buf_rewind( VipsBuf *buf ); void vips_buf_destroy( VipsBuf *buf ); void vips_buf_init( VipsBuf *buf ); void vips_buf_set_static( VipsBuf *buf, char *base, int mx ); void vips_buf_set_dynamic( VipsBuf *buf, int mx ); void vips_buf_init_static( VipsBuf *buf, char *base, int mx ); void vips_buf_init_dynamic( VipsBuf *buf, int mx ); gboolean vips_buf_appendns( VipsBuf *buf, const char *str, int sz ); gboolean vips_buf_appends( VipsBuf *buf, const char *str ); gboolean vips_buf_appendf( VipsBuf *buf, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); gboolean vips_buf_vappendf( VipsBuf *buf, const char *fmt, va_list ap ); gboolean vips_buf_appendc( VipsBuf *buf, char ch ); gboolean vips_buf_appendsc( VipsBuf *buf, gboolean quote, const char *str ); gboolean vips_buf_appendgv( VipsBuf *buf, GValue *value ); gboolean vips_buf_append_size( VipsBuf *buf, size_t n ); gboolean vips_buf_removec( VipsBuf *buf, char ch ); gboolean vips_buf_change( VipsBuf *buf, const char *o, const char *n ); gboolean vips_buf_is_empty( VipsBuf *buf ); gboolean vips_buf_is_full( VipsBuf *buf ); const char *vips_buf_all( VipsBuf *buf ); const char *vips_buf_firstline( VipsBuf *buf ); gboolean vips_buf_appendg( VipsBuf *buf, double g ); gboolean vips_buf_appendd( VipsBuf *buf, int d ); int vips_buf_len( VipsBuf *buf ); #endif /*VIPS_BUF_H*/ #ifdef __cplusplus } #endif /*__cplusplus*/ vips-8.2.2/libvips/include/vips/thread.h0000664000175000017500000000302012530402247015115 00000000000000/* Private include file ... if we've been configured without gthread, we need * to point the g_thread_*() and g_mutex_*() functions at our own stubs. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_THREAD_H #define VIPS_THREAD_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* We need wrappers over g_mutex_new(), it was replaced by g_mutex_init() in * glib 2.32+ */ GMutex *vips_g_mutex_new( void ); void vips_g_mutex_free( GMutex * ); /* Same for GCond. */ GCond *vips_g_cond_new( void ); void vips_g_cond_free( GCond * ); /* ... and for GThread. */ GThread *vips_g_thread_new( const char *, GThreadFunc, gpointer ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_THREAD_H*/ vips-8.2.2/libvips/include/vips/region.h0000664000175000017500000001205212530402247015136 00000000000000/* Definitions for partial image regions. * * J.Cupitt, 8/4/93 * * 2/3/11 * - move to GObject */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_REGION_H #define VIPS_REGION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_REGION (vips_region_get_type()) #define VIPS_REGION( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_REGION, VipsRegion )) #define VIPS_REGION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_REGION, VipsRegionClass)) #define VIPS_IS_REGION( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_REGION )) #define VIPS_IS_REGION_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_REGION )) #define VIPS_REGION_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_REGION, VipsRegionClass )) /* Sub-area of image. */ typedef struct _VipsRegion { VipsObject parent_object; /*< public >*/ /* Users may read these two fields. */ VipsImage *im; /* Link back to parent image */ VipsRect valid; /* Area of parent we can see */ /* The rest of VipsRegion is private. */ /*< private >*/ RegionType type; /* What kind of attachment */ VipsPel *data; /* Off here to get data */ int bpl; /* Bytes-per-line for data */ void *seq; /* Sequence we are using to fill region */ /* The thread that made this region. Used to assert() test that * regions are not being shared between threads. */ GThread *thread; /* Ref to the window we use for this region, if any. */ VipsWindow *window; /* Ref to the buffer we use for this region, if any. */ VipsBuffer *buffer; /* The image this region is on has changed and caches need to be * dropped. */ gboolean invalid; } VipsRegion; typedef struct _VipsRegionClass { VipsObjectClass parent_class; } VipsRegionClass; GType vips_region_get_type( void ); VipsRegion *vips_region_new( VipsImage *image ); int vips_region_buffer( VipsRegion *reg, VipsRect *r ); int vips_region_image( VipsRegion *reg, VipsRect *r ); int vips_region_region( VipsRegion *reg, VipsRegion *dest, VipsRect *r, int x, int y ); int vips_region_equalsregion( VipsRegion *reg1, VipsRegion *reg2 ); int vips_region_position( VipsRegion *reg, int x, int y ); void vips_region_paint( VipsRegion *reg, VipsRect *r, int value ); void vips_region_paint_pel( VipsRegion *reg, VipsRect *r, VipsPel *ink ); void vips_region_black( VipsRegion *reg ); void vips_region_copy( VipsRegion *reg, VipsRegion *dest, VipsRect *r, int x, int y ); int vips_region_shrink( VipsRegion *from, VipsRegion *to, VipsRect *target ); int vips_region_prepare( VipsRegion *reg, VipsRect *r ); int vips_region_prepare_to( VipsRegion *reg, VipsRegion *dest, VipsRect *r, int x, int y ); int vips_region_prepare_many( VipsRegion **reg, VipsRect *r ); void vips_region_invalidate( VipsRegion *reg ); void vips_region_dump_all( void ); /* Macros on VipsRegion. * VIPS_REGION_LSKIP() add to move down line * VIPS_REGION_N_ELEMENTS() number of elements across region * VIPS_REGION_SIZEOF_LINE() sizeof width of region * VIPS_REGION_ADDR() address of pixel in region */ #define VIPS_REGION_LSKIP( R ) \ ((size_t)((R)->bpl)) #define VIPS_REGION_N_ELEMENTS( R ) \ ((size_t)((R)->valid.width * (R)->im->Bands)) #define VIPS_REGION_SIZEOF_LINE( R ) \ ((size_t)((R)->valid.width * VIPS_IMAGE_SIZEOF_PEL( (R)->im) )) /* If DEBUG is defined, add bounds checking. */ #ifdef DEBUG #define VIPS_REGION_ADDR( R, X, Y ) \ ( (vips_rect_includespoint( &(R)->valid, (X), (Y) ))? \ ((R)->data + ((Y) - (R)->valid.top) * VIPS_REGION_LSKIP(R) + \ ((X) - (R)->valid.left) * VIPS_IMAGE_SIZEOF_PEL((R)->im)): \ (fprintf( stderr, \ "VIPS_REGION_ADDR: point out of bounds, " \ "file \"%s\", line %d\n" \ "(point x=%d, y=%d\n" \ " should have been within VipsRect left=%d, top=%d, " \ "width=%d, height=%d)\n", \ __FILE__, __LINE__, \ (X), (Y), \ (R)->valid.left, \ (R)->valid.top, \ (R)->valid.width, \ (R)->valid.height ), abort(), (VipsPel *) NULL) \ ) #else /*DEBUG*/ #define VIPS_REGION_ADDR( R, X, Y ) \ ((R)->data + \ ((Y)-(R)->valid.top) * VIPS_REGION_LSKIP( R ) + \ ((X)-(R)->valid.left) * VIPS_IMAGE_SIZEOF_PEL( (R)->im )) #endif /*DEBUG*/ #define VIPS_REGION_ADDR_TOPLEFT( R ) ((R)->data) #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_REGION_H*/ vips-8.2.2/libvips/include/vips/enumtemplate0000664000175000017500000000073312530402247016130 00000000000000/*** BEGIN file-header ***/ #ifndef VIPS_ENUM_TYPES_H #define VIPS_ENUM_TYPES_H G_BEGIN_DECLS /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@filename@" */ /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type (void) G_GNUC_CONST; #define VIPS_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) /*** END value-header ***/ /*** BEGIN file-tail ***/ G_END_DECLS #endif /*VIPS_ENUM_TYPES_H*/ /*** END file-tail ***/ vips-8.2.2/libvips/include/vips/mask.h0000664000175000017500000000752712530402247014621 00000000000000/* mask.h * * 20/9/09 * - from proto.h */ /* All deprecated. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_MASK_H #define IM_MASK_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef struct im__INTMASK { int xsize; int ysize; int scale; int offset; int *coeff; char *filename; } INTMASK; typedef struct im__DOUBLEMASK { int xsize; int ysize; double scale; double offset; double *coeff; char *filename; } DOUBLEMASK; #define IM_MASK( M, X, Y ) ((M)->coeff[(X) + (Y) * (M)->xsize]) INTMASK *im_create_imask( const char *filename, int xsize, int ysize ); INTMASK *im_create_imaskv( const char *filename, int xsize, int ysize, ... ); DOUBLEMASK *im_create_dmask( const char *filename, int xsize, int ysize ); DOUBLEMASK *im_create_dmaskv( const char *filename, int xsize, int ysize, ... ); INTMASK *im_read_imask( const char *filename ); DOUBLEMASK *im_read_dmask( const char *filename ); void im_print_imask( INTMASK *in ); void im_print_dmask( DOUBLEMASK *in ); int im_write_imask( INTMASK *in ); int im_write_dmask( DOUBLEMASK *in ); int im_write_imask_name( INTMASK *in, const char *filename ); int im_write_dmask_name( DOUBLEMASK *in, const char *filename ); int im_free_imask( INTMASK *in ); int im_free_dmask( DOUBLEMASK *in ); INTMASK *im_log_imask( const char *filename, double sigma, double min_ampl ); DOUBLEMASK *im_log_dmask( const char *filename, double sigma, double min_ampl ); INTMASK *im_gauss_imask( const char *filename, double sigma, double min_ampl ); INTMASK *im_gauss_imask_sep( const char *filename, double sigma, double min_ampl ); DOUBLEMASK *im_gauss_dmask( const char *filename, double sigma, double min_ampl ); DOUBLEMASK *im_gauss_dmask_sep( const char *filename, double sigma, double min_ampl ); INTMASK *im_dup_imask( INTMASK *in, const char *filename ); DOUBLEMASK *im_dup_dmask( DOUBLEMASK *in, const char *filename ); INTMASK *im_scale_dmask( DOUBLEMASK *in, const char *filename ); void im_norm_dmask( DOUBLEMASK *mask ); DOUBLEMASK *im_imask2dmask( INTMASK *in, const char *filename ); INTMASK *im_dmask2imask( DOUBLEMASK *in, const char *filename ); INTMASK *im_rotate_imask90( INTMASK *in, const char *filename ); INTMASK *im_rotate_imask45( INTMASK *in, const char *filename ); DOUBLEMASK *im_rotate_dmask90( DOUBLEMASK *in, const char *filename ); DOUBLEMASK *im_rotate_dmask45( DOUBLEMASK *in, const char *filename ); DOUBLEMASK *im_mattrn( DOUBLEMASK *in, const char *filename ); DOUBLEMASK *im_matcat( DOUBLEMASK *top, DOUBLEMASK *bottom, const char *filename ); DOUBLEMASK *im_matmul( DOUBLEMASK *in1, DOUBLEMASK *in2, const char *filename ); DOUBLEMASK *im_lu_decomp( const DOUBLEMASK *mat, const char *filename ); int im_lu_solve( const DOUBLEMASK *lu, double *vec ); DOUBLEMASK *im_matinv( const DOUBLEMASK *mat, const char *filename ); int im_matinv_inplace( DOUBLEMASK *mat ); DOUBLEMASK *im_local_dmask( struct _VipsImage *out, DOUBLEMASK *mask ); INTMASK *im_local_imask( struct _VipsImage *out, INTMASK *mask ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_MASK_H*/ vips-8.2.2/libvips/include/vips/private.h0000664000175000017500000001317112530402247015330 00000000000000/* Declarations which are public-facing, but private. See internal.h for * declarations which are only used internally by vips and which are not * externally visible. * * 6/7/09 * - from vips.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_PRIVATE_H #define VIPS_PRIVATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_SPARE (8) /* Private to iofuncs: the minimum number of scanlines we add above and below * the window as a margin for slop. */ #define VIPS__WINDOW_MARGIN_PIXELS (128) /* Private to iofuncs: add at least this many bytes above and below the window. * There's no point mapping just a few KB of a small image. */ #define VIPS__WINDOW_MARGIN_BYTES (1024 * 1024 * 10) /* sizeof() a VIPS header on disc. */ #define VIPS_SIZEOF_HEADER (64) /* Startup ABI check. */ int vips__init( const char *argv0 ); size_t vips__get_sizeof_vipsobject( void ); /* What we track for each mmap window. Have a list of these on an openin * VipsImage. */ typedef struct { int ref_count; /* # of regions referencing us */ struct _VipsImage *im; /* VipsImage we are attached to */ int top; /* Area of image we have mapped, in pixels */ int height; VipsPel *data; /* First pixel of line 'top' */ void *baseaddr; /* Base of window */ size_t length; /* Size of window */ } VipsWindow; /* window manager. */ VipsWindow *vips_window_ref( struct _VipsImage *im, int top, int height ); int vips_window_unref( VipsWindow *window ); void vips_window_print( VipsWindow *window ); /* Per-thread buffer state. Held in a GPrivate. */ typedef struct { GHashTable *hash; /* VipsImage -> VipsBufferCache* */ GThread *thread; /* Just for sanity checking */ } VipsBufferThread; /* Per-image buffer cache. Hash to this from VipsBufferThread::hash. * We can't store the GSList directly in the hash table as GHashTable lacks an * update operation and we'd need to _remove() and _insert() on every list * operation. */ typedef struct _VipsBufferCache { GSList *buffers; /* GSList of VipsBuffer* */ GThread *thread; /* Just for sanity checking */ struct _VipsImage *im; VipsBufferThread *buffer_thread; GSList *reserve; /* VipsBuffer kept in reserve */ int n_reserve; /* Number in reserve */ } VipsBufferCache; /* What we track for each pixel buffer. These can move between caches and * between threads, but not between images. */ typedef struct _VipsBuffer { int ref_count; /* # of regions referencing us */ struct _VipsImage *im; /* VipsImage we are attached to */ VipsRect area; /* Area this pixel buffer covers */ gboolean done; /* Calculated and in cache */ VipsBufferCache *cache; /* The cache this buffer is published on */ VipsPel *buf; /* Private malloc() area */ size_t bsize; /* Size of private malloc() */ } VipsBuffer; void vips_buffer_dump_all( void ); void vips_buffer_done( VipsBuffer *buffer ); void vips_buffer_undone( VipsBuffer *buffer ); void vips_buffer_unref( VipsBuffer *buffer ); VipsBuffer *vips_buffer_new( struct _VipsImage *im, VipsRect *area ); VipsBuffer *vips_buffer_ref( struct _VipsImage *im, VipsRect *area ); VipsBuffer *vips_buffer_unref_ref( VipsBuffer *buffer, struct _VipsImage *im, VipsRect *area ); void vips_buffer_print( VipsBuffer *buffer ); void vips__render_shutdown( void ); /* Sections of region.h that are private to VIPS. */ /* Region types. */ typedef enum _RegionType { VIPS_REGION_NONE, VIPS_REGION_BUFFER, /* A VipsBuffer */ VIPS_REGION_OTHER_REGION, /* Memory on another region */ VIPS_REGION_OTHER_IMAGE, /* Memory on another image */ VIPS_REGION_WINDOW /* A VipsWindow on fd */ } RegionType; /* Private to iofuncs: the size of the `tiles' requested by * vips_image_generate() when acting as a data sink. */ #define VIPS__TILE_WIDTH (128) #define VIPS__TILE_HEIGHT (128) /* The height of the strips for the other two request styles. */ #define VIPS__THINSTRIP_HEIGHT (1) #define VIPS__FATSTRIP_HEIGHT (16) /* Functions on regions. */ struct _VipsRegion; void vips__region_take_ownership( struct _VipsRegion *reg ); void vips__region_check_ownership( struct _VipsRegion *reg ); void vips__region_no_ownership( struct _VipsRegion *reg ); typedef int (*VipsRegionFillFn)( struct _VipsRegion *, void * ); int vips_region_fill( struct _VipsRegion *reg, VipsRect *r, VipsRegionFillFn fn, void *a ); int vips__image_wio_output( struct _VipsImage *image ); int vips__image_pio_output( struct _VipsImage *image ); VipsArgumentInstance *vips__argument_get_instance( VipsArgumentClass *argument_class, VipsObject *object); VipsArgument *vips__argument_table_lookup( VipsArgumentTable *table, GParamSpec *pspec); void vips__demand_hint_array( struct _VipsImage *image, int hint, struct _VipsImage **in ); int vips__image_copy_fields_array( struct _VipsImage *out, struct _VipsImage *in[] ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_PRIVATE_H*/ vips-8.2.2/libvips/include/vips/interpolate.h0000664000175000017500000000777712530402247016223 00000000000000/* Various interpolators. * * J.Cupitt, 15/10/08 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_INTERPOLATE_H #define VIPS_INTERPOLATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_INTERPOLATE (vips_interpolate_get_type()) #define VIPS_INTERPOLATE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_INTERPOLATE, VipsInterpolate )) #define VIPS_INTERPOLATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_INTERPOLATE, VipsInterpolateClass)) #define VIPS_IS_INTERPOLATE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_INTERPOLATE )) #define VIPS_IS_INTERPOLATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_INTERPOLATE )) #define VIPS_INTERPOLATE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_INTERPOLATE, VipsInterpolateClass )) typedef struct _VipsInterpolate { VipsObject parent_object; } VipsInterpolate; /* An interpolation function. This is a class method, but we have a lookup * function for it to speed up dispatch. Write to the memory at "out", * interpolate the value at position (x, y) in "in". */ typedef void (*VipsInterpolateMethod)( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ); typedef struct _VipsInterpolateClass { VipsObjectClass parent_class; /* Write to pixel out(x,y), interpolating from in(x,y). The caller has * to set the regions up. */ VipsInterpolateMethod interpolate; /* This interpolator needs a window this many pixels across and down. */ int (*get_window_size)( VipsInterpolate *interpolate ); /* Or just set this if you want a constant. */ int window_size; /* Stencils are offset by this much. Default to window_size / 2 - 1 * (centering) if get_window_offset is NULL and window_offset is -1. */ int (*get_window_offset)( VipsInterpolate *interpolate ); int window_offset; } VipsInterpolateClass; GType vips_interpolate_get_type( void ); void vips_interpolate( VipsInterpolate *interpolate, void *out, VipsRegion *in, double x, double y ); VipsInterpolateMethod vips_interpolate_get_method( VipsInterpolate *interpolate ); int vips_interpolate_get_window_size( VipsInterpolate *interpolate ); int vips_interpolate_get_window_offset( VipsInterpolate *interpolate ); /* How many bits of precision we keep for transformations, ie. how many * pre-computed matricies we have. */ #define VIPS_TRANSFORM_SHIFT (6) #define VIPS_TRANSFORM_SCALE (1 << VIPS_TRANSFORM_SHIFT) /* How many bits of precision we keep for interpolation, ie. where the decimal * is in the fixed-point tables. For 16-bit pixels, we need 16 bits for the * data and 4 bits to add 16 values together. That leaves 12 bits for the * fractional part. */ #define VIPS_INTERPOLATE_SHIFT (12) #define VIPS_INTERPOLATE_SCALE (1 << VIPS_INTERPOLATE_SHIFT) /* Convenience: return static interpolators, no need to unref. */ VipsInterpolate *vips_interpolate_nearest_static( void ); VipsInterpolate *vips_interpolate_bilinear_static( void ); /* Convenience: make an interpolator from a nickname. g_object_unref() when * you're done with it. */ VipsInterpolate *vips_interpolate_new( const char *nickname ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_INTERPOLATE_H*/ vips-8.2.2/libvips/include/vips/vips7compat.h0000664000175000017500000013605612651641775016161 00000000000000/* compat with the vips7 API * * 4/3/11 * - hacked up */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VIPS7COMPAT_H #define VIPS_VIPS7COMPAT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Renamed types. */ #define IM_D93_X0 VIPS_D93_X0 #define IM_D93_Y0 VIPS_D93_Y0 #define IM_D93_Z0 VIPS_D93_Z0 #define IM_D75_X0 VIPS_D75_X0 #define IM_D75_Y0 VIPS_D75_Y0 #define IM_D75_Z0 VIPS_D75_Z0 #define IM_D65_X0 VIPS_D65_X0 #define IM_D65_Y0 VIPS_D65_Y0 #define IM_D65_Z0 VIPS_D65_Z0 #define IM_D55_X0 VIPS_D55_X0 #define IM_D55_Y0 VIPS_D55_Y0 #define IM_D55_Z0 VIPS_D55_Z0 #define IM_D50_X0 VIPS_D50_X0 #define IM_D50_Y0 VIPS_D50_Y0 #define IM_D50_Z0 VIPS_D50_Z0 #define IM_A_X0 VIPS_A_X0 #define IM_A_Y0 VIPS_A_Y0 #define IM_A_Z0 VIPS_A_Z0 #define IM_B_X0 VIPS_B_X0 #define IM_B_Y0 VIPS_B_Y0 #define IM_B_Z0 VIPS_B_Z0 #define IM_C_X0 VIPS_C_X0 #define IM_C_Y0 VIPS_C_Y0 #define IM_C_Z0 VIPS_C_Z0 #define IM_E_X0 VIPS_E_X0 #define IM_E_Y0 VIPS_E_Y0 #define IM_E_Z0 VIPS_E_Z0 #define IM_D3250_X0 VIPS_D3250_X0 #define IM_D3250_Y0 VIPS_D3250_Y0 #define IM_D3250_Z0 VIPS_D3250_Z0 #define im_col_Lab2XYZ vips_col_Lab2XYZ #define im_col_XYZ2Lab vips_col_XYZ2Lab #define im_col_ab2h vips_col_ab2h #define im_col_ab2Ch vips_col_ab2Ch #define im_col_Ch2ab vips_col_Ch2ab #define im_col_L2Lucs vips_col_L2Lcmc #define im_col_C2Cucs vips_col_C2Ccmc #define im_col_Ch2hucs vips_col_Ch2hcmc #define im_col_pythagoras vips_pythagoras #define im_col_make_tables_UCS vips_col_make_tables_CMC #define im_col_Lucs2L vips_col_Lcmc2L #define im_col_Cucs2C vips_col_Ccmc2C #define im_col_Chucs2h vips_col_Chcmc2h #define PEL VipsPel #define IM_BANDFMT_NOTSET VIPS_FORMAT_NOTSET #define IM_BANDFMT_UCHAR VIPS_FORMAT_UCHAR #define IM_BANDFMT_CHAR VIPS_FORMAT_CHAR #define IM_BANDFMT_USHORT VIPS_FORMAT_USHORT #define IM_BANDFMT_SHORT VIPS_FORMAT_SHORT #define IM_BANDFMT_UINT VIPS_FORMAT_UINT #define IM_BANDFMT_INT VIPS_FORMAT_INT #define IM_BANDFMT_FLOAT VIPS_FORMAT_FLOAT #define IM_BANDFMT_COMPLEX VIPS_FORMAT_COMPLEX #define IM_BANDFMT_DOUBLE VIPS_FORMAT_DOUBLE #define IM_BANDFMT_DPCOMPLEX VIPS_FORMAT_DPCOMPLEX #define IM_BANDFMT_LAST VIPS_FORMAT_LAST #define VipsBandFmt VipsBandFormat #define IM_SMALLTILE VIPS_DEMAND_STYLE_SMALLTILE #define IM_FATSTRIP VIPS_DEMAND_STYLE_FATSTRIP #define IM_THINSTRIP VIPS_DEMAND_STYLE_THINSTRIP #define IM_ANY VIPS_DEMAND_STYLE_ANY #define IM_CODING_NONE VIPS_CODING_NONE #define IM_CODING_LABQ VIPS_CODING_LABQ #define IM_CODING_RAD VIPS_CODING_RAD #define IM_TYPE_MULTIBAND VIPS_INTERPRETATION_MULTIBAND #define IM_TYPE_B_W VIPS_INTERPRETATION_B_W #define IM_TYPE_HISTOGRAM VIPS_INTERPRETATION_HISTOGRAM #define IM_TYPE_FOURIER VIPS_INTERPRETATION_FOURIER #define IM_TYPE_XYZ VIPS_INTERPRETATION_XYZ #define IM_TYPE_LAB VIPS_INTERPRETATION_LAB #define IM_TYPE_CMYK VIPS_INTERPRETATION_CMYK #define IM_TYPE_LABQ VIPS_INTERPRETATION_LABQ #define IM_TYPE_RGB VIPS_INTERPRETATION_RGB #define IM_TYPE_UCS VIPS_INTERPRETATION_CMC #define IM_TYPE_LCH VIPS_INTERPRETATION_LCH #define IM_TYPE_LABS VIPS_INTERPRETATION_LABS #define IM_TYPE_sRGB VIPS_INTERPRETATION_sRGB #define IM_TYPE_YXY VIPS_INTERPRETATION_YXY #define IM_TYPE_RGB16 VIPS_INTERPRETATION_RGB16 #define IM_TYPE_GREY16 VIPS_INTERPRETATION_GREY16 #define VipsType VipsInterpretation #define IMAGE VipsImage #define REGION VipsRegion #define IM_INTENT_PERCEPTUAL VIPS_INTENT_PERCEPTUAL #define IM_INTENT_RELATIVE_COLORIMETRIC VIPS_INTENT_RELATIVE #define IM_INTENT_SATURATION VIPS_INTENT_SATURATION #define IM_INTENT_ABSOLUTE_COLORIMETRIC VIPS_INTENT_ABSOLUTE /* Renamed macros. */ #define IM_MAX VIPS_MAX #define IM_MIN VIPS_MIN #define IM_RAD VIPS_RAD #define IM_DEG VIPS_DEG #define IM_PI VIPS_PI #define IM_RINT VIPS_RINT #define IM_ABS VIPS_ABS #define IM_NUMBER VIPS_NUMBER #define IM_CLIP VIPS_CLIP #define IM_CLIP_UCHAR VIPS_CLIP_UCHAR #define IM_CLIP_CHAR VIPS_CLIP_CHAR #define IM_CLIP_USHORT VIPS_CLIP_USHORT #define IM_CLIP_SHORT VIPS_CLIP_SHORT #define IM_CLIP_NONE VIPS_CLIP_NONE #define IM_SWAP VIPS_SWAP #define IM_IMAGE_ADDR VIPS_IMAGE_ADDR #define IM_IMAGE_N_ELEMENTS VIPS_IMAGE_N_ELEMENTS #define IM_IMAGE_SIZEOF_ELEMENT VIPS_IMAGE_SIZEOF_ELEMENT #define IM_IMAGE_SIZEOF_PEL VIPS_IMAGE_SIZEOF_PEL #define IM_IMAGE_SIZEOF_LINE VIPS_IMAGE_SIZEOF_LINE #define IM_REGION_LSKIP VIPS_REGION_LSKIP #define IM_REGION_ADDR VIPS_REGION_ADDR #define IM_REGION_ADDR_TOPLEFT VIPS_REGION_ADDR_TOPLEFT #define IM_REGION_N_ELEMENTS VIPS_REGION_N_ELEMENTS #define IM_REGION_SIZEOF_LINE VIPS_REGION_SIZEOF_LINE /* Renamed externs. */ extern const guint64 vips__image_sizeof_bandformat[]; #define im__sizeof_bandfmt vips__image_sizeof_bandformat /* Renamed functions. */ #define im_error vips_error #define im_verror vips_verror #define im_verror_system vips_verror_system #define im_error_system vips_error_system #define im_error_buffer vips_error_buffer #define im_error_clear vips_error_clear #define im_warn vips_warn #define im_vwarn vips_vwarn #define im_diag vips_info #define im_vdiag vips_vinfo #define error_exit vips_error_exit #define im_get_argv0 vips_get_argv0 #define im_version_string vips_version_string #define im_version vips_version #define im_get_option_group vips_get_option_group #define im_guess_prefix vips_guess_prefix #define im_guess_libdir vips_guess_libdir #define im__global_lock vips__global_lock int im_cp_desc(IMAGE *out, IMAGE *in ); int im_cp_descv (IMAGE * im, ...); #define im_cp_desc_array(I, A) vips__image_copy_fields_array(I, A) int im_demand_hint (IMAGE * im, VipsDemandStyle hint, ...); #define im_demand_hint_array( A, B, C ) (vips__demand_hint_array( A, B, C ), 0) #define im_image(P, W, H, B, F) \ vips_image_new_from_memory((P), 0, (W), (H), (B), (F)) #define im_binfile vips_image_new_from_file_raw #define im__open_temp vips_image_new_temp_file #define im__test_kill( I ) (vips_image_get_kill( I )) #define im__start_eval( I ) (vips_image_preeval( I ), vips_image_get_kill( I )) #define im__handle_eval( I, W, H ) \ (vips_image_eval( I, W, H ), vips_image_get_kill( I )) #define im__end_eval vips_image_posteval #define im_invalidate vips_image_invalidate_all #define im_isfile vips_image_isfile #define im_printdesc( I ) vips_object_print_dump( VIPS_OBJECT( I ) ) /* im_openout() needs to have this visible. */ VipsImage * vips_image_new_mode( const char *filename, const char *mode ); #define im_openout( F ) vips_image_new_mode( F, "w" ) #define im_setbuf( F ) vips_image_new( "t" ) #define im_initdesc( image, \ xsize, ysize, bands, bandbits, bandfmt, coding, \ type, xres, yres, xo, yo ) \ vips_image_init_fields( image, \ xsize, ysize, bands, bandfmt, coding, \ type, xres, yres ) #define im__open_image_file vips__open_image_read #define im_setupout vips_image_write_prepare #define im_writeline( Y, IM, P ) vips_image_write_line( IM, Y, P ) #define im_prepare vips_region_prepare #define im_prepare_to vips_region_prepare_to #define im_region_create vips_region_new #define im_region_free g_object_unref #define im_region_region vips_region_region #define im_region_buffer vips_region_buffer #define im_region_black vips_region_black #define im_region_paint vips_region_paint #define im_prepare_many vips_region_prepare_many #define im__region_no_ownership vips__region_no_ownership #define im_image_sanity( I ) (!vips_object_sanity( VIPS_OBJECT( I ) )) #define im_image_sanity_all vips_object_sanity_all #define im__print_all vips_object_print_all /* Compat functions. */ int im_init_world( const char *argv0 ); VipsImage *im_open( const char *filename, const char *mode ); VipsImage *im_open_local( VipsImage *parent, const char *filename, const char *mode ); int im_open_local_array( VipsImage *parent, VipsImage **images, int n, const char *filename, const char *mode ); #define im_callback_fn VipsCallbackFn int im_add_callback( VipsImage *im, const char *callback, im_callback_fn fn, void *a, void *b ); int im_add_callback1( VipsImage *im, const char *callback, im_callback_fn fn, void *a, void *b ); #define im_add_close_callback( IM, FN, A, B ) \ im_add_callback( IM, "close", FN, A, B ) #define im_add_postclose_callback( IM, FN, A, B ) \ im_add_callback( IM, "postclose", FN, A, B ) #define im_add_preclose_callback( IM, FN, A, B ) \ im_add_callback( IM, "preclose", FN, A, B ) #define im_add_evalstart_callback( IM, FN, A, B ) \ im_add_callback1( IM, "preeval", FN, A, B ) #define im_add_evalend_callback( IM, FN, A, B ) \ im_add_callback1( IM, "posteval", FN, A, B ) #define im_add_eval_callback( IM, FN, A, B ) \ (vips_image_set_progress( IM, TRUE ), \ im_add_callback1( IM, "eval", FN, A, B )) #define im_add_invalidate_callback( IM, FN, A, B ) \ im_add_callback( IM, "invalidate", FN, A, B ) #define im_bits_of_fmt( fmt ) (vips_format_sizeof( fmt ) << 3) typedef void *(*im_construct_fn)( void *, void *, void * ); void *im_local( VipsImage *im, im_construct_fn cons, im_callback_fn dest, void *a, void *b, void *c ); int im_local_array( VipsImage *im, void **out, int n, im_construct_fn cons, im_callback_fn dest, void *a, void *b, void *c ); int im_close( VipsImage *im ); VipsImage *im_init( const char *filename ); const char *im_Type2char( VipsInterpretation type ); const char *im_BandFmt2char( VipsBandFormat fmt ); const char *im_Coding2char( VipsCoding coding ); const char *im_Compression2char( int n ); const char *im_dtype2char( VipsImageType n ); const char *im_dhint2char( VipsDemandStyle style ); VipsInterpretation im_char2Type( const char *str ); VipsBandFormat im_char2BandFmt( const char *str ); VipsCoding im_char2Coding( const char *str ); VipsImageType im_char2dtype( const char *str ); VipsDemandStyle im_char2dhint( const char *str ); #define Rect VipsRect #define IM_RECT_RIGHT VIPS_RECT_RIGHT #define IM_RECT_BOTTOM VIPS_RECT_BOTTOM #define IM_RECT_HCENTRE VIPS_RECT_HCENTRE #define IM_RECT_VCENTRE VIPS_RECT_VCENTRE #define im_rect_marginadjust vips_rect_marginadjust #define im_rect_includespoint vips_rect_includespoint #define im_rect_includesrect vips_rect_includesrect #define im_rect_intersectrect vips_rect_intersectrect #define im_rect_isempty vips_rect_isempty #define im_rect_unionrect vips_rect_unionrect #define im_rect_equalsrect vips_rect_equalsrect #define im_rect_dup vips_rect_dup #define im_rect_normalise vips_rect_normalise #define im_start_one vips_start_one #define im_stop_one vips_stop_one #define im_start_many vips_start_many #define im_stop_many vips_stop_many #define im_allocate_input_array vips_allocate_input_array #define im_start_fn VipsStartFn typedef int (*im_generate_fn)( VipsRegion *out, void *seq, void *a, void *b ); #define im_stop_fn VipsStopFn int im_generate( VipsImage *im, im_start_fn start, im_generate_fn generate, im_stop_fn stop, void *a, void *b ); #define im__mmap vips__mmap #define im__munmap vips__munmap #define im_mapfile vips_mapfile #define im_mapfilerw vips_mapfilerw #define im_remapfilerw vips_remapfilerw #define im__print_renders vips__print_renders int im_cache( IMAGE *in, IMAGE *out, int width, int height, int max ); #define IM_FREEF( F, S ) \ G_STMT_START { \ if( S ) { \ (void) F( (S) ); \ (S) = 0; \ } \ } G_STMT_END /* Can't just use VIPS_FREEF(), we want the extra cast to void on the argument * to vips_free() to make sure we can work for "const char *" variables. */ #define IM_FREE( S ) \ G_STMT_START { \ if( S ) { \ (void) im_free( (void *) (S) ); \ (S) = 0; \ } \ } G_STMT_END #define IM_SETSTR( S, V ) \ G_STMT_START { \ const char *sst = (V); \ \ if( (S) != sst ) { \ if( !(S) || !sst || strcmp( (S), sst ) != 0 ) { \ IM_FREE( S ); \ if( sst ) \ (S) = im_strdup( NULL, sst ); \ } \ } \ } G_STMT_END #define im_malloc( IM, SZ ) \ (vips_malloc( VIPS_OBJECT( IM ), (SZ) )) #define im_free vips_free #define im_strdup( IM, STR ) \ (vips_strdup( VIPS_OBJECT( IM ), (STR) )) #define IM_NEW( IM, T ) ((T *) im_malloc( (IM), sizeof( T ))) #define IM_ARRAY( IM, N, T ) ((T *) im_malloc( (IM), (N) * sizeof( T ))) #define im_incheck vips_image_wio_input #define im_outcheck( I ) (0) #define im_rwcheck vips_image_inplace #define im_pincheck vips_image_pio_input #define im_poutcheck( I ) (0) #define im_iocheck( I, O ) im_incheck( I ) #define im_piocheck( I, O ) im_pincheck( I ) #define im_check_uncoded vips_check_uncoded #define im_check_coding_known vips_check_coding_known #define im_check_coding_labq vips_check_coding_labq #define im_check_coding_rad vips_check_coding_rad #define im_check_coding_noneorlabq vips_check_coding_noneorlabq #define im_check_coding_same vips_check_coding_same #define im_check_mono vips_check_mono #define im_check_bands_1or3 vips_check_bands_1or3 #define im_check_bands vips_check_bands #define im_check_bands_1orn vips_check_bands_1orn #define im_check_bands_1orn_unary vips_check_bands_1orn_unary #define im_check_bands_same vips_check_bands_same #define im_check_bandno vips_check_bandno #define im_check_int vips_check_int #define im_check_uint vips_check_uint #define im_check_uintorf vips_check_uintorf #define im_check_noncomplex vips_check_noncomplex #define im_check_complex vips_check_complex #define im_check_format vips_check_format #define im_check_u8or16 vips_check_u8or16 #define im_check_8or16 vips_check_8or16 #define im_check_u8or16orf vips_check_u8or16orf #define im_check_format_same vips_check_format_same #define im_check_size_same vips_check_size_same #define im_check_vector vips_check_vector #define im_check_hist vips_check_hist #define im_check_imask vips_check_imask #define im_check_dmask vips_check_dmask #define vips_bandfmt_isint vips_band_format_isint #define vips_bandfmt_isuint vips_band_format_isuint #define vips_bandfmt_isfloat vips_band_format_isfloat #define vips_bandfmt_iscomplex vips_band_format_iscomplex #define im__change_suffix vips__change_suffix /* Buffer processing. */ typedef void (*im_wrapone_fn)( void *in, void *out, int width, void *a, void *b ); int im_wrapone( VipsImage *in, VipsImage *out, im_wrapone_fn fn, void *a, void *b ); typedef void (*im_wraptwo_fn)( void *in1, void *in2, void *out, int width, void *a, void *b ); int im_wraptwo( VipsImage *in1, VipsImage *in2, VipsImage *out, im_wraptwo_fn fn, void *a, void *b ); typedef void (*im_wrapmany_fn)( void **in, void *out, int width, void *a, void *b ); int im_wrapmany( VipsImage **in, VipsImage *out, im_wrapmany_fn fn, void *a, void *b ); #define IM_META_EXIF_NAME VIPS_META_EXIF_NAME #define IM_META_ICC_NAME VIPS_META_ICC_NAME #define IM_META_XML VIPS_META_XML #define IM_META_RESOLUTION_UNIT VIPS_META_RESOLUTION_UNIT #define IM_TYPE_SAVE_STRING VIPS_TYPE_SAVE_STRING #define IM_TYPE_BLOB VIPS_TYPE_BLOB #define IM_TYPE_AREA VIPS_TYPE_AREA #define IM_TYPE_REF_STRING VIPS_TYPE_REF_STRING #define im_header_map_fn VipsImageMapFn #define im_header_map vips_image_map #define im_header_int vips_image_get_int #define im_header_double vips_image_get_double #define im_header_string( IMAGE, FIELD, STRING ) \ vips_image_get_string( IMAGE, FIELD, (const char **) STRING ) #define im_header_as_string vips_image_get_as_string #define im_header_get_typeof vips_image_get_typeof #define im_header_get vips_image_get #define im_histlin vips_image_history_printf #define im_updatehist vips_image_history_args #define im_history_get vips_image_get_history #define im_save_string_get vips_value_get_save_string #define im_save_string_set vips_value_set_save_string #define im_save_string_setf vips_value_set_save_stringf #define im_ref_string_set vips_value_set_ref_string #define im_ref_string_get( V ) vips_value_get_ref_string( V, NULL ) size_t im_ref_string_get_length( const GValue *value ); #define im_blob_get vips_value_get_blob #define im_blob_set vips_value_set_blob #define im_meta_set( A, B, C ) (vips_image_set( A, B, C ), 0) #define im_meta_remove vips_image_remove #define im_meta_get vips_image_get #define im_meta_get_typeof vips_image_get_typeof #define im_meta_set_int( A, B, C ) (vips_image_set_int( A, B, C ), 0) #define im_meta_get_int vips_image_get_int #define im_meta_set_double( A, B, C ) (vips_image_set_double( A, B, C ), 0) #define im_meta_get_double vips_image_get_double #define im_meta_set_area( A, B, C, D ) (vips_image_set_area( A, B, C, D ), 0) #define im_meta_get_area vips_image_get_area #define im_meta_set_string( A, B, C ) (vips_image_set_string( A, B, C ), 0) #define im_meta_get_string vips_image_get_string #define im_meta_set_blob( A, B, C, D, E ) \ (vips_image_set_blob( A, B, C, D, E ), 0) #define im_meta_get_blob vips_image_get_blob #define im_semaphore_t VipsSemaphore #define im_semaphore_up vips_semaphore_up #define im_semaphore_down vips_semaphore_down #define im_semaphore_upn vips_semaphore_upn #define im_semaphore_downn vips_semaphore_downn #define im_semaphore_destroy vips_semaphore_destroy #define im_semaphore_init vips_semaphore_init #define im__open_image_read vips__open_image_read #define im_image_open_input vips_image_open_input #define im_image_open_output vips_image_open_output #define im__has_extension_block vips__has_extension_block #define im__read_extension_block vips__read_extension_block #define im__write_extension_block vips__write_extension_block #define im__writehist vips__writehist #define im__read_header_bytes vips__read_header_bytes #define im__write_header_bytes vips__write_header_bytes #define VSListMap2Fn VipsSListMap2Fn #define VSListMap4Fn VipsSListMap4Fn #define VSListFold2Fn VipsSListFold2Fn #define im_slist_equal vips_slist_equal #define im_slist_map2 vips_slist_map2 #define im_slist_map2_rev vips_slist_map2_rev #define im_slist_map4 vips_slist_map4 #define im_slist_fold2 vips_slist_fold2 #define im_slist_filter vips_slist_filter #define im_slist_free_all vips_slist_free_all #define im_map_equal vips_map_equal #define im_hash_table_map vips_hash_table_map #define im_strncpy vips_strncpy #define im_strrstr vips_strrstr #define im_ispostfix vips_ispostfix #define im_isprefix vips_isprefix #define im_break_token vips_break_token #define im_vsnprintf vips_vsnprintf #define im_snprintf vips_snprintf #define im_file_length vips_file_length #define im__write vips__write #define im__file_open_read vips__file_open_read #define im__file_open_write vips__file_open_write #define im__file_read vips__file_read #define im__file_read_name vips__file_read_name #define im__file_write vips__file_write #define im__get_bytes vips__get_bytes #define im__gvalue_ref_string_new vips__gvalue_ref_string_new #define im__gslist_gvalue_free vips__gslist_gvalue_free #define im__gslist_gvalue_copy vips__gslist_gvalue_copy #define im__gslist_gvalue_merge vips__gslist_gvalue_merge #define im__gslist_gvalue_get vips__gslist_gvalue_get #define im__seek vips__seek #define im__ftruncate vips__ftruncate #define im_existsf vips_existsf #define im_popenf vips_popenf #define im_ispoweroftwo vips_ispoweroftwo #define im_amiMSBfirst vips_amiMSBfirst #define im__temp_name vips__temp_name #define IM_VERSION_STRING VIPS_VERSION_STRING #define IM_MAJOR_VERSION VIPS_MAJOR_VERSION #define IM_MINOR_VERSION VIPS_MINOR_VERSION #define IM_MICRO_VERSION VIPS_MICRO_VERSION #define IM_EXEEXT VIPS_EXEEXT #define IM_SIZEOF_HEADER VIPS_SIZEOF_HEADER #define im_concurrency_set vips_concurrency_set #define im_concurrency_get vips_concurrency_get int im_init_world( const char *argv0 ); int im_add( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_subtract( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_multiply( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_divide( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_min( VipsImage *in, double *out ); int im_minpos( VipsImage *in, int *xpos, int *ypos, double *out ); int im_max( VipsImage *in, double *out ); int im_maxpos( VipsImage *in, int *xpos, int *ypos, double *out ); int im_avg( VipsImage *in, double *out ); int im_deviate( VipsImage *in, double *out ); int im_invert( VipsImage *in, VipsImage *out ); int im_lintra( double a, VipsImage *in, double b, VipsImage *out ); int im_lintra_vec( int n, double *a, VipsImage *in, double *b, VipsImage *out ); int im_abs( VipsImage *in, VipsImage *out ); int im_sign( VipsImage *in, VipsImage *out ); DOUBLEMASK *im_stats( VipsImage *in ); DOUBLEMASK *im_measure_area( VipsImage *im, int left, int top, int width, int height, int h, int v, int *sel, int nsel, const char *name ); int im_sintra( VipsImage *in, VipsImage *out ); int im_costra( VipsImage *in, VipsImage *out ); int im_tantra( VipsImage *in, VipsImage *out ); int im_asintra( VipsImage *in, VipsImage *out ); int im_acostra( VipsImage *in, VipsImage *out ); int im_atantra( VipsImage *in, VipsImage *out ); int im_logtra( VipsImage *in, VipsImage *out ); int im_log10tra( VipsImage *in, VipsImage *out ); int im_exptra( VipsImage *in, VipsImage *out ); int im_exp10tra( VipsImage *in, VipsImage *out ); int im_floor( VipsImage *in, VipsImage *out ); int im_rint( VipsImage *in, VipsImage *out ); int im_ceil( VipsImage *in, VipsImage *out ); int im_equal( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_notequal( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_less( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_lesseq( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_more( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_moreeq( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_andimage( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_orimage( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_eorimage( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_andimage_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_orimage_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_eorimage_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_andimageconst( VipsImage *in, VipsImage *out, double c ); int im_orimageconst( VipsImage *in, VipsImage *out, double c ); int im_eorimageconst( VipsImage *in, VipsImage *out, double c ); int im_shiftleft_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_shiftleft( VipsImage *in, VipsImage *out, int n ); int im_shiftright_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_shiftright( VipsImage *in, VipsImage *out, int n ); int im_remainder( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_remainder_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_remainderconst( VipsImage *in, VipsImage *out, double c ); int im_powtra( VipsImage *in, VipsImage *out, double e ); int im_powtra_vec( VipsImage *in, VipsImage *out, int n, double *e ); int im_expntra( VipsImage *in, VipsImage *out, double e ); int im_expntra_vec( VipsImage *in, VipsImage *out, int n, double *e ); int im_equal_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_notequal_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_less_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_lesseq_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_more_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_moreeq_vec( VipsImage *in, VipsImage *out, int n, double *c ); int im_equalconst( VipsImage *in, VipsImage *out, double c ); int im_notequalconst( VipsImage *in, VipsImage *out, double c ); int im_lessconst( VipsImage *in, VipsImage *out, double c ); int im_lesseqconst( VipsImage *in, VipsImage *out, double c ); int im_moreconst( VipsImage *in, VipsImage *out, double c ); int im_moreeqconst( VipsImage *in, VipsImage *out, double c ); int im_maxpos_vec( VipsImage *im, int *xpos, int *ypos, double *maxima, int n ); int im_minpos_vec( VipsImage *im, int *xpos, int *ypos, double *minima, int n ); int im_maxpos_avg( VipsImage *im, double *xpos, double *ypos, double *out ); int im_linreg( VipsImage **ins, VipsImage *out, double *xs ); int im_cross_phase( VipsImage *a, VipsImage *b, VipsImage *out ); int im_point( VipsImage *im, VipsInterpolate *interpolate, double x, double y, int band, double *out ); int im_point_bilinear( VipsImage *im, double x, double y, int band, double *out ); int im_copy( VipsImage *in, VipsImage *out ); int im_copy_set( VipsImage *in, VipsImage *out, VipsInterpretation interpretation, float xres, float yres, int xoffset, int yoffset ); int im_copy_set_meta( VipsImage *in, VipsImage *out, const char *field, GValue *value ); int im_copy_morph( VipsImage *in, VipsImage *out, int bands, VipsBandFormat format, VipsCoding coding ); int im_copy_swap( VipsImage *in, VipsImage *out ); int im_copy_file( VipsImage *in, VipsImage *out ); int im_copy_native( VipsImage *in, VipsImage *out, gboolean is_msb_first ); int im_embed( VipsImage *in, VipsImage *out, int type, int x, int y, int width, int height ); int im_fliphor( VipsImage *in, VipsImage *out ); int im_flipver( VipsImage *in, VipsImage *out ); int im_insert( VipsImage *main, VipsImage *sub, VipsImage *out, int x, int y ); int im_insert_noexpand( VipsImage *main, VipsImage *sub, VipsImage *out, int x, int y ); int im_lrjoin( VipsImage *left, VipsImage *right, VipsImage *out ); int im_tbjoin( VipsImage *top, VipsImage *bottom, VipsImage *out ); int im_extract_area( VipsImage *in, VipsImage *out, int left, int top, int width, int height ); int im_extract_band( VipsImage *in, VipsImage *out, int band ); int im_extract_bands( VipsImage *in, VipsImage *out, int band, int nbands ); int im_extract_areabands( VipsImage *in, VipsImage *out, int left, int top, int width, int height, int band, int nbands ); int im_replicate( VipsImage *in, VipsImage *out, int across, int down ); int im_wrap( VipsImage *in, VipsImage *out, int x, int y ); int im_rotquad( VipsImage *in, VipsImage *out ); int im_clip2fmt( VipsImage *in, VipsImage *out, VipsBandFormat fmt ); int im_bandjoin( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_gbandjoin( VipsImage **in, VipsImage *out, int n ); int im_rank_image( VipsImage **in, VipsImage *out, int n, int index ); int im_maxvalue( VipsImage **in, VipsImage *out, int n ); int im_grid( VipsImage *in, VipsImage *out, int tile_height, int across, int down ); int im_scale( VipsImage *in, VipsImage *out ); int im_scaleps( VipsImage *in, VipsImage *out ); int im_msb( VipsImage *in, VipsImage *out ); int im_msb_band( VipsImage *in, VipsImage *out, int band ); int im_zoom( VipsImage *in, VipsImage *out, int xfac, int yfac ); int im_subsample( VipsImage *in, VipsImage *out, int xshrink, int yshrink ); int im_gaussnoise( VipsImage *out, int x, int y, double mean, double sigma ); int im_text( VipsImage *out, const char *text, const char *font, int width, int alignment, int dpi ); int im_black( VipsImage *out, int x, int y, int bands ); int im_make_xy( VipsImage *out, const int xsize, const int ysize ); int im_zone( VipsImage *out, int size ); int im_fzone( VipsImage *out, int size ); int im_feye( VipsImage *out, const int xsize, const int ysize, const double factor ); int im_eye( VipsImage *out, const int xsize, const int ysize, const double factor ); int im_grey( VipsImage *out, const int xsize, const int ysize ); int im_fgrey( VipsImage *out, const int xsize, const int ysize ); int im_sines( VipsImage *out, int xsize, int ysize, double horfreq, double verfreq ); int im_buildlut( DOUBLEMASK *input, VipsImage *output ); int im_invertlut( DOUBLEMASK *input, VipsImage *output, int lut_size ); int im_identity( VipsImage *lut, int bands ); int im_identity_ushort( VipsImage *lut, int bands, int sz ); int im_tone_build_range( VipsImage *out, int in_max, int out_max, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ); int im_tone_build( VipsImage *out, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ); int im_system( VipsImage *im, const char *cmd, char **out ); VipsImage *im_system_image( VipsImage *im, const char *in_format, const char *out_format, const char *cmd_format, char **log ); int im_c2amph( VipsImage *in, VipsImage *out ); int im_c2rect( VipsImage *in, VipsImage *out ); int im_c2imag( VipsImage *in, VipsImage *out ); int im_c2real( VipsImage *in, VipsImage *out ); int im_ri2c( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_rot90( VipsImage *in, VipsImage *out ); int im_rot180( VipsImage *in, VipsImage *out ); int im_rot270( VipsImage *in, VipsImage *out ); int im_ifthenelse( VipsImage *c, VipsImage *a, VipsImage *b, VipsImage *out ); int im_blend( VipsImage *c, VipsImage *a, VipsImage *b, VipsImage *out ); DOUBLEMASK *im_vips2mask( VipsImage *in, const char *filename ); INTMASK *im_vips2imask( IMAGE *in, const char *filename ); int im_mask2vips( DOUBLEMASK *in, VipsImage *out ); int im_imask2vips( INTMASK *in, VipsImage *out ); int im_bandmean( VipsImage *in, VipsImage *out ); int im_recomb( VipsImage *in, VipsImage *out, DOUBLEMASK *recomb ); int im_argb2rgba( VipsImage *in, VipsImage *out ); int im_falsecolour( VipsImage *in, VipsImage *out ); int im_gammacorrect( VipsImage *in, VipsImage *out, double exponent ); int im_tile_cache_random( IMAGE *in, IMAGE *out, int tile_width, int tile_height, int max_tiles ); int im_shrink( VipsImage *in, VipsImage *out, double xshrink, double yshrink ); int im_affinei( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, double a, double b, double c, double d, double dx, double dy, int ox, int oy, int ow, int oh ); int im_affinei_all( VipsImage *in, VipsImage *out, VipsInterpolate *interpolate, double a, double b, double c, double d, double dx, double dy ) ; int im_rightshift_size( VipsImage *in, VipsImage *out, int xshift, int yshift, int band_fmt ); int im_Lab2XYZ_temp( IMAGE *in, IMAGE *out, double X0, double Y0, double Z0 ); int im_Lab2XYZ( IMAGE *in, IMAGE *out ); int im_XYZ2Lab( VipsImage *in, VipsImage *out ); int im_XYZ2Lab_temp( VipsImage *in, VipsImage *out, double X0, double Y0, double Z0 ); int im_Lab2LCh( VipsImage *in, VipsImage *out ); int im_LCh2Lab( VipsImage *in, VipsImage *out ); int im_LCh2UCS( VipsImage *in, VipsImage *out ); int im_UCS2LCh( VipsImage *in, VipsImage *out ); int im_XYZ2Yxy( VipsImage *in, VipsImage *out ); int im_Yxy2XYZ( VipsImage *in, VipsImage *out ); int im_float2rad( VipsImage *in, VipsImage *out ); int im_rad2float( VipsImage *in, VipsImage *out ); int im_Lab2LabQ( VipsImage *in, VipsImage *out ); int im_LabQ2Lab( VipsImage *in, VipsImage *out ); int im_Lab2LabS( VipsImage *in, VipsImage *out ); int im_LabS2Lab( VipsImage *in, VipsImage *out ); int im_LabQ2LabS( VipsImage *in, VipsImage *out ); int im_LabS2LabQ( VipsImage *in, VipsImage *out ); int im_LabQ2sRGB( VipsImage *in, VipsImage *out ); int im_XYZ2sRGB( IMAGE *in, IMAGE *out ); int im_sRGB2XYZ( IMAGE *in, IMAGE *out ); struct im_col_display; #define im_col_displays(S) (NULL) #define im_LabQ2disp_build_table(A, B) (NULL) #define im_LabQ2disp_table(A, B, C) (im_LabQ2disp(A, B, C)) int im_Lab2disp( IMAGE *in, IMAGE *out, struct im_col_display *disp ); int im_disp2Lab( IMAGE *in, IMAGE *out, struct im_col_display *disp ); int im_dE_fromdisp( IMAGE *, IMAGE *, IMAGE *, struct im_col_display * ); int im_dECMC_fromdisp( IMAGE *, IMAGE *, IMAGE *, struct im_col_display * ); #define im_disp2XYZ(A, B, C) (im_sRGB2XYZ(A, B)) #define im_XYZ2disp(A, B, C) (im_XYZ2sRGB(A, B)) #define im_LabQ2disp(A, B, C) (im_LabQ2sRGB(A, B)) int im_icc_transform( VipsImage *in, VipsImage *out, const char *input_profile_filename, const char *output_profile_filename, VipsIntent intent ); #define im_icc_present vips_icc_present int im_icc_import( VipsImage *in, VipsImage *out, const char *input_profile_filename, VipsIntent intent ); int im_icc_import_embedded( VipsImage *in, VipsImage *out, VipsIntent intent ); int im_icc_export_depth( VipsImage *in, VipsImage *out, int depth, const char *output_profile_filename, VipsIntent intent ); int im_icc_ac2rc( VipsImage *in, VipsImage *out, const char *profile_filename ); int im_LabQ2XYZ( VipsImage *in, VipsImage *out ); int im_UCS2XYZ( VipsImage *in, VipsImage *out ); int im_UCS2Lab( VipsImage *in, VipsImage *out ); int im_Lab2UCS( VipsImage *in, VipsImage *out ); int im_XYZ2UCS( VipsImage *in, VipsImage *out ); int im_dE_fromLab( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_dECMC_fromLab( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_dE_fromXYZ( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_dE00_fromLab( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_lab_morph( VipsImage *in, VipsImage *out, DOUBLEMASK *mask, double L_offset, double L_scale, double a_scale, double b_scale ); #define im_col_dE00 vips_col_dE00 int im_quadratic( IMAGE *in, IMAGE *out, IMAGE *coeff ); int im_maplut( VipsImage *in, VipsImage *out, VipsImage *lut ); int im_hist( VipsImage *in, VipsImage *out, int bandno ); int im_histgr( VipsImage *in, VipsImage *out, int bandno ); int im_histcum( VipsImage *in, VipsImage *out ); int im_histnorm( VipsImage *in, VipsImage *out ); int im_histeq( VipsImage *in, VipsImage *out ); int im_heq( VipsImage *in, VipsImage *out, int bandno ); int im_histnD( VipsImage *in, VipsImage *out, int bins ); int im_hist_indexed( VipsImage *index, VipsImage *value, VipsImage *out ); int im_histplot( VipsImage *in, VipsImage *out ); int im_project( VipsImage *in, VipsImage *hout, VipsImage *vout ); int im_profile( IMAGE *in, IMAGE *out, int dir ); int im_hsp( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_histspec( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_lhisteq( VipsImage *in, VipsImage *out, int xwin, int ywin ); int im_stdif( VipsImage *in, VipsImage *out, double a, double m0, double b, double s0, int xwin, int ywin ); int im_mpercent( VipsImage *in, double percent, int *out ); int im_mpercent_hist( VipsImage *hist, double percent, int *out ); int im_ismonotonic( VipsImage *lut, int *out ); int im_tone_analyse( VipsImage *in, VipsImage *out, double Ps, double Pm, double Ph, double S, double M, double H ); int im_tone_map( VipsImage *in, VipsImage *out, VipsImage *lut ); /* Not really correct, but who uses these. */ #define im_lhisteq_raw im_lhisteq #define im_stdif_raw im_stdif /* ruby-vips uses this */ #define vips_class_map_concrete_all vips_class_map_all int im_dilate( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_erode( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_aconv( VipsImage *in, VipsImage *out, DOUBLEMASK *mask, int n_layers, int cluster ); int im_conv( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_conv_f( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ); int im_aconvsep( VipsImage *in, VipsImage *out, DOUBLEMASK *mask, int n_layers ); int im_convsep( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_convsep_f( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ); int im_compass( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_gradient( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_lindetect( VipsImage *in, VipsImage *out, INTMASK *mask ); int im_addgnoise( VipsImage *in, VipsImage *out, double sigma ); int im_contrast_surface_raw( IMAGE *in, IMAGE *out, int half_win_size, int spacing ); int im_contrast_surface( VipsImage *in, VipsImage *out, int half_win_size, int spacing ); int im_grad_x( VipsImage *in, VipsImage *out ); int im_grad_y( VipsImage *in, VipsImage *out ); int im_fastcor( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_spcor( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_gradcor( VipsImage *in, VipsImage *ref, VipsImage *out ); int im_sharpen( VipsImage *in, VipsImage *out, int mask_size, double x1, double y2, double y3, double m1, double m2 ); typedef enum { IM_MASK_IDEAL_HIGHPASS = 0, IM_MASK_IDEAL_LOWPASS = 1, IM_MASK_BUTTERWORTH_HIGHPASS = 2, IM_MASK_BUTTERWORTH_LOWPASS = 3, IM_MASK_GAUSS_HIGHPASS = 4, IM_MASK_GAUSS_LOWPASS = 5, IM_MASK_IDEAL_RINGPASS = 6, IM_MASK_IDEAL_RINGREJECT = 7, IM_MASK_BUTTERWORTH_RINGPASS = 8, IM_MASK_BUTTERWORTH_RINGREJECT = 9, IM_MASK_GAUSS_RINGPASS = 10, IM_MASK_GAUSS_RINGREJECT = 11, IM_MASK_IDEAL_BANDPASS = 12, IM_MASK_IDEAL_BANDREJECT = 13, IM_MASK_BUTTERWORTH_BANDPASS = 14, IM_MASK_BUTTERWORTH_BANDREJECT = 15, IM_MASK_GAUSS_BANDPASS = 16, IM_MASK_GAUSS_BANDREJECT = 17, IM_MASK_FRACTAL_FLT = 18 } ImMaskType; /* We had them in the VIPS namespace for a while before deprecating them. */ #define VIPS_MASK_IDEAL_HIGHPASS IM_MASK_IDEAL_HIGHPASS #define VIPS_MASK_IDEAL_LOWPASS IM_MASK_IDEAL_LOWPASS #define VIPS_MASK_BUTTERWORTH_HIGHPASS IM_MASK_BUTTERWORTH_HIGHPASS #define VIPS_MASK_BUTTERWORTH_LOWPASS IM_MASK_BUTTERWORTH_LOWPASS #define VIPS_MASK_GAUSS_HIGHPASS IM_MASK_GAUSS_HIGHPASS #define VIPS_MASK_GAUSS_LOWPASS IM_MASK_GAUSS_LOWPASS #define VIPS_MASK_IDEAL_RINGPASS IM_MASK_IDEAL_RINGPASS #define VIPS_MASK_IDEAL_RINGREJECT IM_MASK_IDEAL_RINGREJECT #define VIPS_MASK_BUTTERWORTH_RINGPASS IM_MASK_BUTTERWORTH_RINGPASS #define VIPS_MASK_BUTTERWORTH_RINGREJECT IM_MASK_BUTTERWORTH_RINGREJECT #define VIPS_MASK_GAUSS_RINGPASS IM_MASK_GAUSS_RINGPASS #define VIPS_MASK_GAUSS_RINGREJECT IM_MASK_GAUSS_RINGREJECT #define VIPS_MASK_IDEAL_BANDPASS IM_MASK_IDEAL_BANDPASS #define VIPS_MASK_IDEAL_BANDREJECT IM_MASK_IDEAL_BANDREJECT #define VIPS_MASK_BUTTERWORTH_BANDPASS IM_MASK_BUTTERWORTH_BANDPASS #define VIPS_MASK_BUTTERWORTH_BANDREJECT IM_MASK_BUTTERWORTH_BANDREJECT #define VIPS_MASK_GAUSS_BANDPASS IM_MASK_GAUSS_BANDPASS #define VIPS_MASK_GAUSS_BANDREJECT IM_MASK_GAUSS_BANDREJECT #define VIPS_MASK_FRACTAL_FLT IM_MASK_FRACTAL_FLT #define VIPS_MASK IM_MASK int im_flt_image_freq( VipsImage *in, VipsImage *out, ImMaskType flag, ... ); int im_create_fmask( VipsImage *out, int xsize, int ysize, ImMaskType flag, ... ); int im_fwfft( VipsImage *in, VipsImage *out ); int im_invfft( VipsImage *in, VipsImage *out ); int im_invfftr( VipsImage *in, VipsImage *out ); int im_freqflt( VipsImage *in, VipsImage *mask, VipsImage *out ); int im_disp_ps( VipsImage *in, VipsImage *out ); int im_fractsurf( VipsImage *out, int size, double frd ); int im_phasecor_fft( VipsImage *in1, VipsImage *in2, VipsImage *out ); int im_cntlines( VipsImage *im, double *nolines, int flag ); int im_label_regions( VipsImage *test, VipsImage *mask, int *segments ); int im_rank( VipsImage *in, VipsImage *out, int width, int height, int index ); int im_zerox( VipsImage *in, VipsImage *out, int sign ); int im_benchmarkn( VipsImage *in, VipsImage *out, int n ); int im_benchmark2( VipsImage *in, double *out ); int im_draw_circle( VipsImage *image, int x, int y, int radius, gboolean fill, VipsPel *ink ); int im_draw_mask( VipsImage *image, VipsImage *mask_im, int x, int y, VipsPel *ink ); int im_draw_image( VipsImage *image, VipsImage *sub, int x, int y ); int im_draw_rect( VipsImage *image, int left, int top, int width, int height, int fill, VipsPel *ink ); typedef int (*VipsPlotFn)( VipsImage *image, int x, int y, void *a, void *b, void *c ); int im_draw_line_user( VipsImage *image, int x1, int y1, int x2, int y2, VipsPlotFn plot, void *a, void *b, void *c ); int im_draw_line( VipsImage *image, int x1, int y1, int x2, int y2, VipsPel *ink ); int im_lineset( VipsImage *in, VipsImage *out, VipsImage *mask, VipsImage *ink, int n, int *x1v, int *y1v, int *x2v, int *y2v ); int im_insertset( VipsImage *main, VipsImage *sub, VipsImage *out, int n, int *x, int *y ); int im_draw_flood( VipsImage *image, int x, int y, VipsPel *ink, VipsRect *dout ); int im_draw_flood_blob( VipsImage *image, int x, int y, VipsPel *ink, VipsRect *dout ); int im_draw_flood_other( VipsImage *image, VipsImage *test, int x, int y, int serial, VipsRect *dout ); int im_draw_point( VipsImage *image, int x, int y, VipsPel *ink ); int im_read_point( VipsImage *image, int x, int y, VipsPel *ink ); int im_draw_smudge( VipsImage *image, int left, int top, int width, int height ); void im_filename_split( const char *path, char *name, char *mode ); const char *im_skip_dir( const char *filename ); void im_filename_suffix( const char *path, char *suffix ); int im_filename_suffix_match( const char *path, const char *suffixes[] ); char *im_getnextoption( char **in ); char *im_getsuboption( const char *buf ); int im_lrmerge( VipsImage *ref, VipsImage *sec, VipsImage *out, int dx, int dy, int mwidth ); int im_tbmerge( VipsImage *ref, VipsImage *sec, VipsImage *out, int dx, int dy, int mwidth ); int im_lrmosaic( VipsImage *ref, VipsImage *sec, VipsImage *out, int bandno, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int balancetype, int mwidth ); int im_tbmosaic( VipsImage *ref, VipsImage *sec, VipsImage *out, int bandno, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int balancetype, int mwidth ); int im_match_linear( VipsImage *ref, VipsImage *sec, VipsImage *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2 ); int im_match_linear_search( VipsImage *ref, VipsImage *sec, VipsImage *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize ); int im_global_balance( VipsImage *in, VipsImage *out, double gamma ); int im_global_balancef( VipsImage *in, VipsImage *out, double gamma ); int im_remosaic( VipsImage *in, VipsImage *out, const char *old_str, const char *new_str ); int im_lrmerge1( VipsImage *ref, VipsImage *sec, VipsImage *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ); int im_tbmerge1( VipsImage *ref, VipsImage *sec, VipsImage *out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ); int im_lrmosaic1( VipsImage *ref, VipsImage *sec, VipsImage *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize, int balancetype, int mwidth ); int im_tbmosaic1( VipsImage *ref, VipsImage *sec, VipsImage *out, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int hwindowsize, int hsearchsize, int balancetype, int mwidth ); int im_correl( VipsImage *ref, VipsImage *sec, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, double *correlation, int *x, int *y ); int im_align_bands( VipsImage *in, VipsImage *out ); int im_maxpos_subpel( VipsImage *in, double *x, double *y ); /* These were public for a while, keep for compat. */ int vips_foreign_load( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_foreign_save( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); VipsImage *vips__deprecated_open_read( const char *filename, gboolean sequential ); VipsImage *vips__deprecated_open_write( const char *filename ); void im__format_init( void ); void im__tiff_register( void ); void im__jpeg_register( void ); void im__png_register( void ); void im__csv_register( void ); void im__ppm_register( void ); void im__analyze_register( void ); void im__exr_register( void ); void im__magick_register( void ); int im__bandup( const char *domain, VipsImage *in, VipsImage *out, int n ); int im__bandalike_vec( const char *domain, VipsImage **in, VipsImage **out, int n ); int im__bandalike( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage *out1, VipsImage *out2 ); int im__formatalike_vec( VipsImage **in, VipsImage **out, int n ); int im__formatalike( VipsImage *in1, VipsImage *in2, VipsImage *out1, VipsImage *out2 ); typedef int (*im__wrapscan_fn)( void *p, int n, void *seq, void *a, void *b ); int im__wrapscan( VipsImage *in, VipsStartFn start, im__wrapscan_fn scan, VipsStopFn stop, void *a, void *b ); int im__colour_difference( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage *out, im_wrapmany_fn buffer_fn, void *a, void *b ); int im__colour_unary( const char *domain, VipsImage *in, VipsImage *out, VipsInterpretation interpretation, im_wrapone_fn buffer_fn, void *a, void *b ); VipsImage **im__insert_base( const char *domain, VipsImage *in1, VipsImage *in2, VipsImage *out ); int im__find_lroverlap( VipsImage *ref_in, VipsImage *sec_in, VipsImage *out, int bandno_in, int xref, int yref, int xsec, int ysec, int halfcorrelation, int halfarea, int *dx0, int *dy0, double *scale1, double *angle1, double *dx1, double *dy1 ); int im__find_tboverlap( VipsImage *ref_in, VipsImage *sec_in, VipsImage *out, int bandno_in, int xref, int yref, int xsec, int ysec, int halfcorrelation, int halfarea, int *dx0, int *dy0, double *scale1, double *angle1, double *dx1, double *dy1 ); int im__find_best_contrast( VipsImage *image, int xpos, int ypos, int xsize, int ysize, int xarray[], int yarray[], int cont[], int nbest, int hcorsize ); int im__balance( VipsImage *ref, VipsImage *sec, VipsImage *out, VipsImage **ref_out, VipsImage **sec_out, int dx, int dy, int balancetype ); void imb_LCh2Lab( float *, float *, int ); /* A colour temperature. */ typedef struct { double X0, Y0, Z0; } im_colour_temperature; void imb_XYZ2Lab( float *, float *, int, im_colour_temperature * ); void imb_LabS2Lab( signed short *, float *, int ); void imb_Lab2LabS( float *, signed short *, int n ); void vips__Lab2LabQ_vec( VipsPel *out, float *in, int width ); void vips__LabQ2Lab_vec( float *out, VipsPel *in, int width ); void im_copy_dmask_matrix( DOUBLEMASK *mask, double **matrix ); void im_copy_matrix_dmask( double **matrix, DOUBLEMASK *mask ); int *im_ivector(int nl, int nh); float *im_fvector(int nl, int nh); double *im_dvector(int nl, int nh); void im_free_ivector(int *v, int nl, int nh); void im_free_fvector(float *v, int nl, int nh); void im_free_dvector(double *v, int nl, int nh); int **im_imat_alloc(int nrl, int nrh, int ncl, int nch); void im_free_imat(int **m, int nrl, int nrh, int ncl, int nch); float **im_fmat_alloc(int nrl, int nrh, int ncl, int nch); void im_free_fmat(float **m, int nrl, int nrh, int ncl, int nch); double **im_dmat_alloc(int nrl, int nrh, int ncl, int nch); void im_free_dmat(double **m, int nrl, int nrh, int ncl, int nch); int im_invmat( double **, int ); int *im_offsets45( int size ); int im_conv_f_raw( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ); int im_convsep_f_raw( VipsImage *in, VipsImage *out, DOUBLEMASK *mask ); int im_greyc_mask( VipsImage *in, VipsImage *out, VipsImage *mask, int iterations, float amplitude, float sharpness, float anisotropy, float alpha, float sigma, float dl, float da, float gauss_prec, int interpolation, int fast_approx ); int vips_check_imask( const char *domain, INTMASK *mask ); int vips_check_dmask( const char *domain, DOUBLEMASK *mask ); int vips_check_dmask_1d( const char *domain, DOUBLEMASK *mask ); GOptionGroup *vips_get_option_group( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_VIPS7COMPAT_H*/ vips-8.2.2/libvips/include/vips/create.h0000664000175000017500000001003012530402247015110 00000000000000/* create.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_CREATE_H #define VIPS_CREATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips_black( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_xyz( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_grey( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_gaussmat( VipsImage **out, double sigma, double min_ampl, ... ) __attribute__((sentinel)); int vips_logmat( VipsImage **out, double sigma, double min_ampl, ... ) __attribute__((sentinel)); int vips_text( VipsImage **out, const char *text, ... ) __attribute__((sentinel)); int vips_gaussnoise( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_eye( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_sines( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_zone( VipsImage **out, int width, int height, ... ) __attribute__((sentinel)); int vips_identity( VipsImage **out, ... ) __attribute__((sentinel)); int vips_buildlut( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_invertlut( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tonelut( VipsImage **out, ... ) __attribute__((sentinel)); int vips_mask_ideal( VipsImage **out, int width, int height, double frequency_cutoff, ... ) __attribute__((sentinel)); int vips_mask_ideal_ring( VipsImage **out, int width, int height, double frequency_cutoff, double ringwidth, ... ) __attribute__((sentinel)); int vips_mask_ideal_band( VipsImage **out, int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, ... ) __attribute__((sentinel)); int vips_mask_butterworth( VipsImage **out, int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, ... ) __attribute__((sentinel)); int vips_mask_butterworth_ring( VipsImage **out, int width, int height, double order, double frequency_cutoff, double amplitude_cutoff, double ringwidth, ... ) __attribute__((sentinel)); int vips_mask_butterworth_band( VipsImage **out, int width, int height, double order, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, ... ) __attribute__((sentinel)); int vips_mask_gaussian( VipsImage **out, int width, int height, double frequency_cutoff, double amplitude_cutoff, ... ) __attribute__((sentinel)); int vips_mask_gaussian_ring( VipsImage **out, int width, int height, double frequency_cutoff, double amplitude_cutoff, double ringwidth, ... ) __attribute__((sentinel)); int vips_mask_gaussian_band( VipsImage **out, int width, int height, double frequency_cutoff_x, double frequency_cutoff_y, double radius, double amplitude_cutoff, ... ) __attribute__((sentinel)); int vips_mask_fractal( VipsImage **out, int width, int height, double fractal_dimension, ... ) __attribute__((sentinel)); int vips_fractsurf( VipsImage **out, int width, int height, double fractal_dimension, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_CREATE_H*/ vips-8.2.2/libvips/include/vips/rect.h0000664000175000017500000000366312530402247014620 00000000000000/* Simple rectangle algebra. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_RECT_H #define VIPS_RECT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef struct _VipsRect { /*< public >*/ int left; int top; int width; int height; } VipsRect; #define VIPS_RECT_RIGHT(R) ((R)->left + (R)->width) #define VIPS_RECT_BOTTOM(R) ((R)->top + (R)->height) #define VIPS_RECT_HCENTRE(R) ((R)->left + (R)->width / 2) #define VIPS_RECT_VCENTRE(R) ((R)->top + (R)->height / 2) gboolean vips_rect_isempty( const VipsRect *r ); gboolean vips_rect_includespoint( const VipsRect *r, int x, int y ); gboolean vips_rect_includesrect( const VipsRect *r1, const VipsRect *r2 ); gboolean vips_rect_equalsrect( const VipsRect *r1, const VipsRect *r2 ); void vips_rect_marginadjust( VipsRect *r, int n ); void vips_rect_intersectrect( const VipsRect *r1, const VipsRect *r2, VipsRect *out ); void vips_rect_unionrect( const VipsRect *r1, const VipsRect *r2, VipsRect *out ); VipsRect *vips_rect_dup( const VipsRect *r ); void vips_rect_normalise( VipsRect *r ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_RECT_H*/ vips-8.2.2/libvips/include/vips/almostdeprecated.h0000664000175000017500000002311012530402247017170 00000000000000/* Old and broken stuff that we still enable by default, but don't document * and certainly don't recommend. * * 30/6/09 * - from vips.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_ALMOSTDEPRECATED_H #define IM_ALMOSTDEPRECATED_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Was public, now deprecated. */ typedef enum { IM_BBITS_BYTE = 8, IM_BBITS_SHORT = 16, IM_BBITS_INT = 32, IM_BBITS_FLOAT = 32, IM_BBITS_COMPLEX = 64, IM_BBITS_DOUBLE = 64, IM_BBITS_DPCOMPLEX = 128 } VipsBBits; /* Used to define a region of interest for im_extract() etc. Too boring to be * public API, see im_extract_area() etc. */ typedef struct { int xstart; int ystart; int xsize; int ysize; int chsel; /* 1 2 3 or 0, for r g b or all respectively *(channel select) */ } IMAGE_BOX; int im_extract( IMAGE *, IMAGE *, IMAGE_BOX * ); DOUBLEMASK *im_measure( IMAGE *im, IMAGE_BOX *box, int h, int v, int *sel, int nsel, const char *name ); gboolean im_isuint( IMAGE *im ); gboolean im_isint( IMAGE *im ); gboolean im_isfloat( IMAGE *im ); gboolean im_isscalar( IMAGE *im ); gboolean im_iscomplex( IMAGE *im ); int im_c2ps( IMAGE *in, IMAGE *out ); int im_clip( IMAGE *in, IMAGE *out ); #define MASK_IDEAL_HIGHPASS IM_MASK_IDEAL_HIGHPASS #define MASK_IDEAL_LOWPASS IM_MASK_IDEAL_LOWPASS #define MASK_BUTTERWORTH_HIGHPASS IM_MASK_BUTTERWORTH_HIGHPASS #define MASK_BUTTERWORTH_LOWPASS IM_MASK_BUTTERWORTH_LOWPASS #define MASK_GAUSS_HIGHPASS IM_MASK_GAUSS_HIGHPASS #define MASK_GAUSS_LOWPASS IM_MASK_GAUSS_LOWPASS #define MASK_IDEAL_RINGPASS IM_MASK_IDEAL_RINGPASS #define MASK_IDEAL_RINGREJECT IM_MASK_IDEAL_RINGREJECT #define MASK_BUTTERWORTH_RINGPASS IM_MASK_BUTTERWORTH_RINGPASS #define MASK_BUTTERWORTH_RINGREJECT IM_MASK_BUTTERWORTH_RINGREJECT #define MASK_GAUSS_RINGPASS IM_MASK_GAUSS_RINGPASS #define MASK_GAUSS_RINGREJECT IM_MASK_GAUSS_RINGREJECT #define MASK_IDEAL_BANDPASS IM_MASK_IDEAL_BANDPASS #define MASK_IDEAL_BANDREJECT IM_MASK_IDEAL_BANDREJECT #define MASK_BUTTERWORTH_BANDPASS IM_MASK_BUTTERWORTH_BANDPASS #define MASK_BUTTERWORTH_BANDREJECT IM_MASK_BUTTERWORTH_BANDREJECT #define MASK_GAUSS_BANDPASS IM_MASK_GAUSS_BANDPASS #define MASK_GAUSS_BANDREJECT IM_MASK_GAUSS_BANDREJECT #define MASK_FRACTAL_FLT IM_MASK_FRACTAL_FLT #define MaskType ImMaskType /* Copy and swap types. */ typedef enum { IM_ARCH_NATIVE, IM_ARCH_BYTE_SWAPPED, IM_ARCH_LSB_FIRST, IM_ARCH_MSB_FIRST } im_arch_type; gboolean im_isnative( im_arch_type arch ); int im_copy_from( IMAGE *in, IMAGE *out, im_arch_type architecture ); /* Backwards compatibility macros. */ #define im_clear_error_string() im_error_clear() #define im_errorstring() im_error_buffer() /* Deprecated API. */ void im_errormsg( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); void im_verrormsg( const char *fmt, va_list ap ); void im_errormsg_system( int err, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void im_diagnostics( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); void im_warning( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); int im_iterate( VipsImage *im, VipsStartFn start, im_generate_fn generate, VipsStopFn stop, void *a, void *b ); /* Async rendering. */ int im_render_priority( VipsImage *in, VipsImage *out, VipsImage *mask, int width, int height, int max, int priority, void (*notify)( VipsImage *, VipsRect *, void * ), void *client ); int im_cache( VipsImage *in, VipsImage *out, int width, int height, int max ); /* Deprecated operations. */ int im_cmulnorm( IMAGE *in1, IMAGE *in2, IMAGE *out ); int im_fav4( IMAGE **, IMAGE * ); int im_gadd( double, IMAGE *, double, IMAGE *, double, IMAGE *); int im_litecor( IMAGE *, IMAGE *, IMAGE *, int, double ); int im_render_fade( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, int fps, int steps, int priority, void (*notify)( IMAGE *, VipsRect *, void * ), void *client ); int im_render( IMAGE *in, IMAGE *out, IMAGE *mask, int width, int height, int max, void (*notify)( IMAGE *, VipsRect *, void * ), void *client ); int im_cooc_matrix( IMAGE *im, IMAGE *m, int xp, int yp, int xs, int ys, int dx, int dy, int flag ); int im_cooc_asm( IMAGE *m, double *asmoment ); int im_cooc_contrast( IMAGE *m, double *contrast ); int im_cooc_correlation( IMAGE *m, double *correlation ); int im_cooc_entropy( IMAGE *m, double *entropy ); int im_glds_matrix( IMAGE *im, IMAGE *m, int xpos, int ypos, int xsize, int ysize, int dx, int dy ); int im_glds_asm( IMAGE *m, double *asmoment ); int im_glds_contrast( IMAGE *m, double *contrast ); int im_glds_entropy( IMAGE *m, double *entropy ); int im_glds_mean( IMAGE *m, double *mean ); int im_dif_std(IMAGE *im, int xpos, int ypos, int xsize, int ysize, int dx, int dy, double *pmean, double *pstd); int im_simcontr( IMAGE *out, int xsize, int ysize ); int im_spatres( IMAGE *in, IMAGE *out, int step ); int im_stretch3( IMAGE *in, IMAGE *out, double dx, double dy ); /* Renamed operations. */ /* arithmetic */ int im_remainderconst_vec( IMAGE *in, IMAGE *out, int n, double *c ); /* boolean */ int im_andconst( IMAGE *, IMAGE *, double ); int im_and_vec( IMAGE *, IMAGE *, int, double * ); int im_orconst( IMAGE *, IMAGE *, double ); int im_or_vec( IMAGE *, IMAGE *, int, double * ); int im_eorconst( IMAGE *, IMAGE *, double ); int im_eor_vec( IMAGE *, IMAGE *, int, double * ); /* mosaicing */ int im_affine( IMAGE *in, IMAGE *out, double a, double b, double c, double d, double dx, double dy, int ox, int oy, int ow, int oh ); int im_similarity( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy ); int im_similarity_area( IMAGE *in, IMAGE *out, double a, double b, double dx, double dy, int ox, int oy, int ow, int oh ); /* colour */ int im_icc_export( IMAGE *in, IMAGE *out, const char *output_profile_filename, int intent ); /* conversion */ int im_clip2dcm( IMAGE *in, IMAGE *out ); int im_clip2cm( IMAGE *in, IMAGE *out ); int im_clip2us( IMAGE *in, IMAGE *out ); int im_clip2ui( IMAGE *in, IMAGE *out ); int im_clip2s( IMAGE *in, IMAGE *out ); int im_clip2i( IMAGE *in, IMAGE *out ); int im_clip2d( IMAGE *in, IMAGE *out ); int im_clip2f( IMAGE *in, IMAGE *out ); int im_clip2c( IMAGE *in, IMAGE *out ); int im_slice( IMAGE *in, IMAGE *out, double, double ); int im_thresh( IMAGE *in, IMAGE *out, double ); int im_print( const char *message ); int im_convsub( IMAGE *in, IMAGE *out, INTMASK *mask, int xskip, int yskip ); int im_bernd( const char *tiffname, int x, int y, int w, int h ); int im_resize_linear( IMAGE *, IMAGE *, int, int ); int im_convf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_convsepf( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_conv_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); int im_convf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_convsep_raw( IMAGE *in, IMAGE *out, INTMASK *mask ); int im_convsepf_raw( IMAGE *in, IMAGE *out, DOUBLEMASK *mask ); int im_fastcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); int im_spcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); int im_gradcor_raw( IMAGE *in, IMAGE *ref, IMAGE *out ); int im_contrast_surface_raw( IMAGE *in, IMAGE *out, int half_win_size, int spacing ); int im_stdif_raw( IMAGE *in, IMAGE *out, double a, double m0, double b, double s0, int xwin, int ywin ); int im_lhisteq_raw( IMAGE *in, IMAGE *out, int xwin, int ywin ); int im_erode_raw( IMAGE *in, IMAGE *out, INTMASK *m ); int im_dilate_raw( IMAGE *in, IMAGE *out, INTMASK *m ); int im_rank_raw( IMAGE *in, IMAGE *out, int xsize, int ysize, int order ); /* inplace */ int im_circle( IMAGE *im, int cx, int cy, int radius, int intensity ); int im_line( IMAGE *, int, int, int, int, int ); int im_segment( IMAGE *test, IMAGE *mask, int *segments ); int im_paintrect( IMAGE *im, VipsRect *r, PEL *ink ); int im_insertplace( IMAGE *main, IMAGE *sub, int x, int y ); int im_flood_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ); int im_flood_blob_copy( IMAGE *in, IMAGE *out, int x, int y, PEL *ink ); int im_flood_other_copy( IMAGE *test, IMAGE *mark, IMAGE *out, int x, int y, int serial ); int im_flood( IMAGE *im, int x, int y, PEL *ink, VipsRect *dout ); int im_flood_blob( IMAGE *im, int x, int y, PEL *ink, VipsRect *dout ); int im_flood_other( IMAGE *test, IMAGE *mark, int x, int y, int serial, VipsRect *dout ); int im_fastline( IMAGE *im, int x1, int y1, int x2, int y2, PEL *pel ); int im_fastlineuser( IMAGE *im, int x1, int y1, int x2, int y2, VipsPlotFn fn, void *client1, void *client2, void *client3 ); int im_plotmask( IMAGE *im, int ix, int iy, PEL *ink, PEL *mask, VipsRect *r ); int im_readpoint( IMAGE *im, int x, int y, PEL *pel ); int im_plotpoint( IMAGE *im, int x, int y, PEL *pel ); int im_smudge( IMAGE *image, int ix, int iy, VipsRect *r ); int im_smear( IMAGE *im, int ix, int iy, VipsRect *r ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_ALMOSTDEPRECATED_H*/ vips-8.2.2/libvips/include/vips/dispatch.h0000664000175000017500000002307312530402247015457 00000000000000/* VIPS function dispatch. * * J. Cupitt, 8/4/93. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_DISPATCH_H #define IM_DISPATCH_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include #include /* Type names. You may define your own, but if you use one of these, then * you should use the built-in VIPS type converters. */ #define IM_TYPE_IMAGEVEC "imagevec" /* im_object is ptr to IMAGE[] */ #define IM_TYPE_DOUBLEVEC "doublevec" /* im_object is ptr to double[] */ #define IM_TYPE_INTVEC "intvec" /* im_object is ptr to int[] */ #define IM_TYPE_DOUBLE "double" /* im_object is ptr to double */ #define IM_TYPE_INT "integer" /* 32-bit integer */ #define IM_TYPE_COMPLEX "complex" /* Pair of doubles */ #define IM_TYPE_STRING "string" /* Zero-terminated char array */ #define IM_TYPE_IMASK "intmask" /* Integer mask type */ #define IM_TYPE_DMASK "doublemask" /* Double mask type */ #define IM_TYPE_IMAGE "image" /* IMAGE descriptor */ #define IM_TYPE_DISPLAY "display" /* Display descriptor */ #define IM_TYPE_GVALUE "gvalue" /* GValue wrapper */ #define IM_TYPE_INTERPOLATE "interpolate"/* A subclass of VipsInterpolate */ typedef char *im_arg_type; /* Type of argument id */ /* Internal representation of an argument to an image processing function. */ typedef void *im_object; /* These bits are ored together to make the flags in a type descriptor. * * IM_TYPE_OUTPUT: set to indicate output, otherwise input. If the IM_TYPE_RW * bit is set and IM_TYPE_OUTPUT is not set, both input and output (ie. the * operation side-effects this argument). * * IM_TYPE_ARG: Two ways of making an im_object --- with and without a * command-line string to help you along. Arguments with a string are thing * like IMAGE descriptors, which require a filename to initialise. * Arguments without are things like output numbers, where making the object * simply involves allocating storage. */ typedef enum { IM_TYPE_NONE = 0, /* No flags */ IM_TYPE_OUTPUT = 0x1, /* Output/input object */ IM_TYPE_ARG = 0x2, /* Uses a str arg in construction */ IM_TYPE_RW = 0x4 /* Read-write */ } im_type_flags; /* Initialise, destroy and write objects. The "str" argument to the * init function will not be supplied if this is not an ARG type. The * write function writes to the GString. */ typedef int (*im_init_obj_fn)( im_object *obj, char *str ); typedef int (*im_dest_obj_fn)( im_object obj ); /* Describe a VIPS type. */ typedef struct { im_arg_type type; /* Type of argument */ int size; /* sizeof( im_object repres. ) */ im_type_flags flags; /* Flags */ im_init_obj_fn init; /* Operation functions */ im_dest_obj_fn dest; /* Destroy object */ } im_type_desc; /* Success on an argument. This is called if the image processing function * succeeds and should be used to (for example) print output. */ typedef int (*im_print_obj_fn)( im_object obj ); /* Describe a VIPS command argument. */ typedef struct { char *name; /* eg. "width" */ im_type_desc *desc; /* Type description */ im_print_obj_fn print; /* Print some output objects */ } im_arg_desc; /* Type of VIPS dispatch funtion. */ typedef int (*im_dispatch_fn)( im_object *argv ); /* Maximum size of arg table. */ #define IM_MAX_ARGS (1000) /* Flags for functions. These are for information only, and more may be * added. */ typedef enum { IM_FN_NONE = 0, /* No flags set */ IM_FN_PIO = 0x1, /* Is a partial function */ IM_FN_TRANSFORM = 0x2, /* Performs coordinate transformations */ IM_FN_PTOP = 0x4, /* Point-to-point ... can be done with a LUT */ IM_FN_NOCACHE = 0x8 /* Result should not be cached */ } im_fn_flags; /* Describe a VIPS function. */ typedef struct { char *name; /* eg "im_invert" */ char *desc; /* Description - eg "photographic negative" */ im_fn_flags flags; /* Flags for this function */ im_dispatch_fn disp; /* Dispatch */ int argc; /* Number of args */ im_arg_desc *argv; /* Arg table */ } im_function; /* A set of VIPS functions forming a package. */ typedef struct { char *name; /* Package name (eg "arithmetic") */ int nfuncs; /* Number of functions in package */ im_function **table; /* Array of function descriptors */ } im_package; /* Externs for dispatch. */ /* Struct for mask IO to a file. */ typedef struct { char *name; /* Command-line name in */ void *mask; /* Mask --- DOUBLE or INT */ } im_mask_object; /* Struct for doublevec IO */ typedef struct { int n; /* Vector length */ double *vec; /* Vector */ } im_doublevec_object; /* Struct for intvec IO */ typedef struct { int n; /* Vector length */ int *vec; /* Vector */ } im_intvec_object; /* Struct for imagevec IO */ typedef struct { int n; /* Vector length */ IMAGE **vec; /* Vector */ } im_imagevec_object; /* Built-in VIPS types. */ extern im_type_desc im__input_int; extern im_type_desc im__input_intvec; extern im_type_desc im__input_imask; extern im_type_desc im__output_int; extern im_type_desc im__output_intvec; extern im_type_desc im__output_imask; extern im_type_desc im__input_double; extern im_type_desc im__input_doublevec; extern im_type_desc im__input_dmask; extern im_type_desc im__output_double; extern im_type_desc im__output_doublevec; extern im_type_desc im__output_dmask; extern im_type_desc im__output_dmask_screen; extern im_type_desc im__output_complex; extern im_type_desc im__input_string; extern im_type_desc im__output_string; extern im_type_desc im__input_imagevec; extern im_type_desc im__input_image; extern im_type_desc im__output_image; extern im_type_desc im__rw_image; extern im_type_desc im__input_display; extern im_type_desc im__output_display; extern im_type_desc im__input_gvalue; extern im_type_desc im__output_gvalue; extern im_type_desc im__input_interpolate; /* VIPS print functions. */ int im__iprint( im_object obj ); /* int */ int im__ivprint( im_object obj ); /* intvec */ int im__dprint( im_object obj ); /* double */ int im__dvprint( im_object obj ); /* doublevec */ int im__dmsprint( im_object obj ); /* DOUBLEMASK as stats */ int im__cprint( im_object obj ); /* complex */ int im__sprint( im_object obj ); /* string */ int im__displayprint( im_object obj ); /* im_col_display */ int im__gprint( im_object obj ); /* GValue */ /* Macros for convenient creation. */ #define IM_INPUT_INT( S ) { S, &im__input_int, NULL } #define IM_INPUT_INTVEC( S ) { S, &im__input_intvec, NULL } #define IM_INPUT_IMASK( S ) { S, &im__input_imask, NULL } #define IM_OUTPUT_INT( S ) { S, &im__output_int, im__iprint } #define IM_OUTPUT_INTVEC( S ) { S, &im__output_intvec, im__ivprint } #define IM_OUTPUT_IMASK( S ) { S, &im__output_imask, NULL } #define IM_INPUT_DOUBLE( S ) { S, &im__input_double, NULL } #define IM_INPUT_DOUBLEVEC( S ) { S, &im__input_doublevec, NULL } #define IM_INPUT_DMASK( S ) { S, &im__input_dmask, NULL } #define IM_OUTPUT_DOUBLE( S ) { S, &im__output_double, im__dprint } #define IM_OUTPUT_DOUBLEVEC( S ) { S, &im__output_doublevec, im__dvprint } #define IM_OUTPUT_DMASK( S ) { S, &im__output_dmask, NULL } #define IM_OUTPUT_DMASK_STATS( S ) { S, &im__output_dmask_screen, im__dmsprint } #define IM_OUTPUT_COMPLEX( S ) { S, &im__output_complex, im__cprint } #define IM_INPUT_STRING( S ) { S, &im__input_string, NULL } #define IM_OUTPUT_STRING( S ) { S, &im__output_string, im__sprint } #define IM_INPUT_IMAGE( S ) { S, &im__input_image, NULL } #define IM_INPUT_IMAGEVEC( S ) { S, &im__input_imagevec, NULL } #define IM_OUTPUT_IMAGE( S ) { S, &im__output_image, NULL } #define IM_RW_IMAGE( S ) { S, &im__rw_image, NULL } #define IM_INPUT_DISPLAY( S ) { S, &im__input_display, NULL } #define IM_OUTPUT_DISPLAY( S ) { S, &im__output_display, im__displayprint } #define IM_INPUT_GVALUE( S ) { S, &im__input_gvalue, NULL } #define IM_OUTPUT_GVALUE( S ) { S, &im__output_gvalue, im__gprint } #define IM_INPUT_INTERPOLATE( S ) { S, &im__input_interpolate, NULL } /* Add a plug-in package. */ im_package *im_load_plugin( const char *name ); int im_load_plugins( const char *fmt, ... ) __attribute__((format(printf, 1, 2))); /* Close all plug-ins. */ int im_close_plugins( void ); /* Loop over all loaded packages. */ void *im_map_packages( VipsSListMap2Fn fn, void *a ); /* Convenience functions for finding packages, functions, etc. */ im_function *im_find_function( const char *name ); im_package *im_find_package( const char *name ); im_package *im_package_of_function( const char *name ); /* Allocate space for, and free im_object argument lists. */ int im_free_vargv( im_function *fn, im_object *vargv ); int im_allocate_vargv( im_function *fn, im_object *vargv ); /* Run a VIPS command by name. */ int im_run_command( char *name, int argc, char **argv ); int vips__input_interpolate_init( im_object *obj, char *str ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_DISPATCH_H*/ vips-8.2.2/libvips/include/vips/version.h0000664000175000017500000000067612651721174015360 00000000000000/* Macros for the header version. */ #ifndef VIPS_VERSION_H #define VIPS_VERSION_H #define VIPS_VERSION "8.2.2" #define VIPS_VERSION_STRING "8.2.2-Tue Jan 26 16:44:38 GMT 2016" #define VIPS_MAJOR_VERSION (8) #define VIPS_MINOR_VERSION (2) #define VIPS_MICRO_VERSION (2) /* Not really anything to do with versions, but this is a handy place to put * it. */ #define VIPS_EXEEXT "" #define VIPS_ENABLE_DEPRECATED 1 #endif /*VIPS_VERSION_H*/ vips-8.2.2/libvips/include/vips/error.h0000664000175000017500000001040112623346763015015 00000000000000/* Error handling. */ /* Copyright (C) 1991-2005 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_ERROR_H #define VIPS_ERROR_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ const char *vips_error_buffer( void ); void vips_error_clear( void ); void vips_error_freeze( void ); void vips_error_thaw( void ); void vips_error( const char *domain, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void vips_verror( const char *domain, const char *fmt, va_list ap ); void vips_error_system( int err, const char *domain, const char *fmt, ... ) __attribute__((format(printf, 3, 4))); void vips_verror_system( int err, const char *domain, const char *fmt, va_list ap ); void vips_error_g( GError **error ); void vips_g_error( GError **error ); void vips_warn( const char *domain, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void vips_vwarn( const char *domain, const char *fmt, va_list ap ); void vips_info_set( gboolean info ); void vips_info( const char *domain, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); void vips_vinfo( const char *domain, const char *fmt, va_list ap ); void vips_error_exit( const char *fmt, ... ) __attribute__((noreturn, format(printf, 1, 2))); int vips_check_uncoded( const char *domain, VipsImage *im ); int vips_check_coding( const char *domain, VipsImage *im, VipsCoding coding ); int vips_check_coding_known( const char *domain, VipsImage *im ); int vips_check_coding_noneorlabq( const char *domain, VipsImage *im ); int vips_check_coding_same( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_mono( const char *domain, VipsImage *im ); int vips_check_bands( const char *domain, VipsImage *im, int bands ); int vips_check_bands_1or3( const char *domain, VipsImage *im ); int vips_check_bands_atleast( const char *domain, VipsImage *im, int bands ); int vips_check_bands_1orn( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_bands_1orn_unary( const char *domain, VipsImage *im, int n ); int vips_check_bands_same( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_bandno( const char *domain, VipsImage *im, int bandno ); int vips_check_int( const char *domain, VipsImage *im ); int vips_check_uint( const char *domain, VipsImage *im ); int vips_check_uintorf( const char *domain, VipsImage *im ); int vips_check_noncomplex( const char *domain, VipsImage *im ); int vips_check_complex( const char *domain, VipsImage *im ); int vips_check_twocomponents( const char *domain, VipsImage *im ); int vips_check_format( const char *domain, VipsImage *im, VipsBandFormat fmt ); int vips_check_u8or16( const char *domain, VipsImage *im ); int vips_check_8or16( const char *domain, VipsImage *im ); int vips_check_u8or16orf( const char *domain, VipsImage *im ); int vips_check_format_same( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_size_same( const char *domain, VipsImage *im1, VipsImage *im2 ); int vips_check_oddsquare( const char *domain, VipsImage *im ); int vips_check_vector_length( const char *domain, int n, int len ); int vips_check_vector( const char *domain, int n, VipsImage *im ); int vips_check_hist( const char *domain, VipsImage *im ); int vips_check_matrix( const char *domain, VipsImage *im, VipsImage **out ); int vips_check_separable( const char *domain, VipsImage *im ); int vips_check_precision_intfloat( const char *domain, VipsPrecision precision ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_ERROR_H*/ vips-8.2.2/libvips/include/vips/debug.h0000664000175000017500000000363712530402247014752 00000000000000/* Support for debug.c in iofuncs. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_DEBUG_H #define VIPS_DEBUG_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #ifdef VIPS_DEBUG #define VIPS_DEBUG_MSG( ... ) \ G_STMT_START { printf( __VA_ARGS__ ); } G_STMT_END #else #define VIPS_DEBUG_MSG( ... ) \ G_STMT_START { ; } G_STMT_END #endif /*VIPS_DEBUG*/ #ifdef VIPS_DEBUG_RED #define VIPS_DEBUG_MSG_RED( ... ) \ G_STMT_START { printf( "red: " __VA_ARGS__ ); } G_STMT_END #else #define VIPS_DEBUG_MSG_RED( ... ) \ G_STMT_START { ; } G_STMT_END #endif /*VIPS_DEBUG_RED*/ #ifdef VIPS_DEBUG_AMBER #define VIPS_DEBUG_MSG_AMBER( ... ) \ G_STMT_START { printf( "amber: " __VA_ARGS__ ); } G_STMT_END #else #define VIPS_DEBUG_MSG_AMBER( ... ) \ G_STMT_START { ; } G_STMT_END #endif /*VIPS_DEBUG_AMBER*/ #ifdef VIPS_DEBUG_GREEN #define VIPS_DEBUG_MSG_GREEN( ... ) \ G_STMT_START { printf( "green: " __VA_ARGS__ ); } G_STMT_END #else #define VIPS_DEBUG_MSG_GREEN( ... ) \ G_STMT_START { ; } G_STMT_END #endif /*VIPS_DEBUG_GREEN*/ #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /* VIPS_DEBUG_H */ vips-8.2.2/libvips/include/vips/vips.h0000664000175000017500000001165512640732601014646 00000000000000/* @(#) Header file for Birkbeck/VIPS Image Processing Library * Authors: N. Dessipris, K. Martinez, Birkbeck College, London. * Sept 94 * * 15/7/96 JC * - now does C++ extern stuff * - many more protos * 15/4/97 JC * - protos split out * 4/3/98 JC * - IM_ANY added * - sRGB colourspace added * 28/10/98 JC * - VASARI_MAGIC_INTEL and VASARI_MAGIC_SPARC added * 29/9/99 JC * - new locks for threading, no more threadgroup stuff in IMAGE * 30/11/00 JC * - override RGB/CMYK macros on cygwin * 21/9/02 JC * - new Xoffset/Yoffset fields * - rationalized macro names * 6/6/05 Markus Wollgarten * - added Meta header field * 31/7/05 * - added meta.h for new metadata API * 22/8/05 * - scrapped stupid VAS_HD * 30/9/05 * - added sizeof_header field for mmap window read of RAW files * 4/10/05 * - now you have to define IM_ENABLE_DEPRECATED to get broken #defined * 5/10/05 * - added GNUC attributes * 8/5/06 * - added RGB16, GREY16 * 30/10/06 * - added im_window_t * 7/11/07 * - added preclose and evalstart callbacks * - brought time struct in here * 7/3/08 * - MAGIC values should be unsigned * 2/7/08 * - added invalidate callbacks * 7/8/08 * - include , thanks nicola * 30/6/09 * - move deprecated stuff to its own header */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VIPS_H #define VIPS_VIPS_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include #include #include /* If we're being parsed by SWIG, remove gcc attributes. */ #ifdef SWIG # ifndef __attribute__ # define __attribute__(x) /*NOTHING*/ # endif #endif /*SWIG*/ /* Or if this isn't gcc. */ #ifndef __GNUC__ # ifndef __attribute__ # define __attribute__(x) /*NOTHING*/ # endif #endif /*__GNUC__*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* This stuff is very, very old and should not be used by anyone now. */ #ifdef VIPS_ENABLE_ANCIENT #include #endif /*VIPS_ENABLE_ANCIENT*/ /* Still in use, but can be turned off. */ #ifdef VIPS_ENABLE_DEPRECATED #include #include #include #endif /*VIPS_ENABLE_DEPRECATED*/ /* We can't use _ here since this will be compiled by our clients and they may * not have _(). */ #define VIPS_INIT( ARGV0 ) \ (sizeof( VipsObject ) != vips__get_sizeof_vipsobject() ? ( \ vips_info( "vips_init", "ABI mismatch" ), \ vips_info( "vips_init", \ "library has sizeof(VipsObject) == %zd", \ vips__get_sizeof_vipsobject() ), \ vips_info( "vips_init", \ "application has sizeof(VipsObject) == %zd", \ sizeof( VipsObject ) ), \ vips_error( "vips_init", "ABI mismatch" ), \ -1 ) : \ vips_init( ARGV0 )) int vips_init( const char *argv0 ); const char *vips_get_argv0( void ); void vips_shutdown( void ); void vips_thread_shutdown( void ); void vips_add_option_entries( GOptionGroup *option_group ); extern void vips_leak_set( gboolean leak ); const char *vips_version_string( void ); int vips_version( int flag ); const char *vips_guess_prefix( const char *argv0, const char *env_name ); const char *vips_guess_libdir( const char *argv0, const char *env_name ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_VIPS_H*/ vips-8.2.2/libvips/include/vips/morphology.h0000664000175000017500000000341112530402247016051 00000000000000/* morphology.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_MORPHOLOGY_H #define VIPS_MORPHOLOGY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_OPERATION_MORPHOLOGY_ERODE, VIPS_OPERATION_MORPHOLOGY_DILATE, VIPS_OPERATION_MORPHOLOGY_LAST } VipsOperationMorphology; int vips_morph( VipsImage *in, VipsImage **out, VipsImage *mask, VipsOperationMorphology morph, ... ) __attribute__((sentinel)); int vips_rank( VipsImage *in, VipsImage **out, int width, int height, int index, ... ) __attribute__((sentinel)); int vips_median( VipsImage *in, VipsImage **out, int size, ... ) __attribute__((sentinel)); int vips_countlines( VipsImage *in, double *nolines, VipsDirection direction, ... ) __attribute__((sentinel)); int vips_labelregions( VipsImage *in, VipsImage **mask, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_MORPHOLOGY_H*/ vips-8.2.2/libvips/include/vips/resample.h0000664000175000017500000000366112623346763015506 00000000000000/* resample.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_RESAMPLE_H #define VIPS_RESAMPLE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips_shrink( VipsImage *in, VipsImage **out, double xshrink, double yshrink, ... ) __attribute__((sentinel)); int vips_shrinkh( VipsImage *in, VipsImage **out, int xshrink, ... ); int vips_shrinkv( VipsImage *in, VipsImage **out, int yshrink, ... ); int vips_shrink2( VipsImage *in, VipsImage **out, double xshrink, double yshrink, ... ); int vips_similarity( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_affine( VipsImage *in, VipsImage **out, double a, double b, double c, double d, ... ) __attribute__((sentinel)); int vips_resize( VipsImage *in, VipsImage **out, double scale, ... ) __attribute__((sentinel)); int vips_mapim( VipsImage *in, VipsImage **out, VipsImage *index, ... ) __attribute__((sentinel)); int vips_quadratic( VipsImage *in, VipsImage **out, VipsImage *coeff, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_RESAMPLE_H*/ vips-8.2.2/libvips/include/vips/object.h0000664000175000017500000005053512605514112015127 00000000000000/* abstract base class for all vips objects */ /* Copyright (C) 1991-2003 The National Gallery This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_OBJECT_H #define VIPS_OBJECT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Handy! */ #ifdef VIPS_DEBUG #define VIPS_UNREF( X ) G_STMT_START { \ if( X ) { \ g_assert( G_OBJECT( X )->ref_count > 0 ); \ g_object_unref( X ); \ (X) = 0; \ } \ } G_STMT_END #else /*!VIPS_DEBUG*/ #define VIPS_UNREF( X ) VIPS_FREEF( g_object_unref, (X) ) #endif /*VIPS_DEBUG*/ typedef struct _VipsObject VipsObject; typedef struct _VipsObjectClass VipsObjectClass; /* Track extra stuff for arguments to objects */ typedef enum /*< flags >*/ { VIPS_ARGUMENT_NONE = 0, VIPS_ARGUMENT_REQUIRED = 1, VIPS_ARGUMENT_CONSTRUCT = 2, VIPS_ARGUMENT_SET_ONCE = 4, VIPS_ARGUMENT_SET_ALWAYS = 8, VIPS_ARGUMENT_INPUT = 16, VIPS_ARGUMENT_OUTPUT = 32, VIPS_ARGUMENT_DEPRECATED = 64, VIPS_ARGUMENT_MODIFY = 128 } VipsArgumentFlags; /* Useful flag combinations. User-visible ones are: VIPS_ARGUMENT_REQUIRED_INPUT Eg. the "left" argument for an add operation VIPS_ARGUMENT_OPTIONAL_INPUT Eg. the "caption" for an object VIPS_ARGUMENT_REQUIRED_OUTPUT Eg. the "result" of an add operation VIPS_ARGUMENT_OPTIONAL_OUTPUT Eg. the x pos of the image minimum Other combinations are used internally, eg. supplying the cast-table for an arithmetic operation */ #define VIPS_ARGUMENT_REQUIRED_INPUT \ (VIPS_ARGUMENT_INPUT | \ VIPS_ARGUMENT_REQUIRED | \ VIPS_ARGUMENT_CONSTRUCT) #define VIPS_ARGUMENT_OPTIONAL_INPUT \ (VIPS_ARGUMENT_INPUT | \ VIPS_ARGUMENT_CONSTRUCT) #define VIPS_ARGUMENT_REQUIRED_OUTPUT \ (VIPS_ARGUMENT_OUTPUT | \ VIPS_ARGUMENT_REQUIRED | \ VIPS_ARGUMENT_CONSTRUCT) #define VIPS_ARGUMENT_OPTIONAL_OUTPUT \ (VIPS_ARGUMENT_OUTPUT | \ VIPS_ARGUMENT_CONSTRUCT) extern int _vips__argument_id; #define VIPS_ARG_IMAGE( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_object( (NAME), (LONG), (DESC), \ VIPS_TYPE_IMAGE, \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_INTERPOLATE( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_object( (NAME), (LONG), (DESC), \ VIPS_TYPE_INTERPOLATE, \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_BOOL( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_boolean( (NAME), (LONG), (DESC), \ (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_DOUBLE( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, MIN, MAX, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_double( (NAME), (LONG), (DESC), \ (MIN), (MAX), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_BOXED( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, TYPE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_boxed( (NAME), (LONG), (DESC), \ (TYPE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_INT( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, MIN, MAX, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_int( (NAME), (LONG), (DESC), \ (MIN), (MAX), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_UINT64( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, MIN, MAX, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_uint64( (NAME), (LONG), (DESC), \ (MIN), (MAX), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_ENUM( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, TYPE, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_enum( (NAME), (LONG), (DESC), \ (TYPE), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_FLAGS( CLASS, NAME, PRIORITY, LONG, DESC, \ FLAGS, OFFSET, TYPE, VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_flags( (NAME), (LONG), (DESC), \ (TYPE), (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) );\ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_STRING( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, \ VALUE ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_string( (NAME), (LONG), (DESC), \ (VALUE), \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( G_OBJECT_CLASS( CLASS ), \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } #define VIPS_ARG_POINTER( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET ) { \ GParamSpec *pspec; \ \ pspec = g_param_spec_pointer( (NAME), (LONG), (DESC), \ (GParamFlags) (G_PARAM_READWRITE) ); \ g_object_class_install_property( gobject_class, \ _vips__argument_id++, pspec ); \ vips_object_class_install_argument( VIPS_OBJECT_CLASS( CLASS ), \ pspec, (VipsArgumentFlags) (FLAGS), (PRIORITY), (OFFSET) ); \ } /* Keep one of these for every argument. */ typedef struct _VipsArgument { GParamSpec *pspec; /* pspec for this argument */ /* More stuff, see below */ } VipsArgument; /* Keep one of these in the class struct for every argument. */ typedef struct _VipsArgumentClass { VipsArgument parent; /* The class of the object we are an arg for. */ VipsObjectClass *object_class; VipsArgumentFlags flags; int priority; /* Order args by this */ guint offset; /* G_STRUCT_OFFSET of member in object */ } VipsArgumentClass; /* Keep one of these in the object struct for every argument instance. */ typedef struct _VipsArgumentInstance { VipsArgument parent; /* The class we are part of. */ VipsArgumentClass *argument_class; /* The object we are attached to. */ VipsObject *object; /* Has been set. */ gboolean assigned; /* If this is an output argument, keep the id of our "close" handler * here. */ gulong close_id; /* We need to listen for "invalidate" on input images and send our own * "invalidate" out. If we go, we need to disconnect. */ gulong invalidate_id; } VipsArgumentInstance; /* Need to look up our VipsArgument structs from a pspec. Just hash the * pointer (ie. we assume pspecs are never shared, is this correct?) */ typedef GHashTable VipsArgumentTable; VipsArgumentInstance *vips__argument_get_instance( VipsArgumentClass *argument_class, VipsObject *object ); VipsArgument *vips__argument_table_lookup( VipsArgumentTable *argument_class, GParamSpec *pspec ); void vips__object_set_member( VipsObject *object, GParamSpec *pspec, GObject **member, GObject *argument ); typedef void *(*VipsArgumentMapFn)( VipsObject *object, GParamSpec *pspec, VipsArgumentClass *argument_class, VipsArgumentInstance *argument_instance, void *a, void *b ); void *vips_argument_map( VipsObject *object, VipsArgumentMapFn fn, void *a, void *b ); typedef void *(*VipsArgumentClassMapFn)( VipsObjectClass *object_class, GParamSpec *pspec, VipsArgumentClass *argument_class, void *a, void *b ); void *vips_argument_class_map( VipsObjectClass *object_class, VipsArgumentClassMapFn fn, void *a, void *b ); gboolean vips_argument_class_needsstring( VipsArgumentClass *argument_class ); int vips_object_get_argument( VipsObject *object, const char *name, GParamSpec **pspec, VipsArgumentClass **argument_class, VipsArgumentInstance **argument_instance ); gboolean vips_object_argument_isset( VipsObject *object, const char *name ); VipsArgumentFlags vips_object_get_argument_flags( VipsObject *object, const char *name ); int vips_object_get_argument_priority( VipsObject *object, const char *name ); /* We have to loop over an objects args in several places, and we can't always * use vips_argument_map(), the preferred looper. Have the loop code as a * macro as well for these odd cases. */ #define VIPS_ARGUMENT_FOR_ALL( OBJECT, PSPEC, ARG_CLASS, ARG_INSTANCE ) { \ VipsObjectClass *object_class = VIPS_OBJECT_GET_CLASS( OBJECT ); \ GSList *p; \ \ for( p = object_class->argument_table_traverse; p; p = p->next ) { \ VipsArgumentClass *ARG_CLASS = \ (VipsArgumentClass *) p->data; \ VipsArgument *argument = (VipsArgument *) argument_class; \ GParamSpec *PSPEC = argument->pspec; \ VipsArgumentInstance *ARG_INSTANCE __attribute__ ((unused)) = \ vips__argument_get_instance( argument_class, \ VIPS_OBJECT( OBJECT ) ); \ #define VIPS_ARGUMENT_FOR_ALL_END } } /* And some macros to collect args from a va list. * * Use something like this: GParamSpec *pspec; VipsArgumentClass *argument_class; VipsArgumentInstance *argument_instance; if( vips_object_get_argument( VIPS_OBJECT( operation ), name, &pspec, &argument_class, &argument_instance ) ) return( -1 ); VIPS_ARGUMENT_COLLECT_SET( pspec, argument_class, ap ); GValue value holds the value of an input argument, do something with it VIPS_ARGUMENT_COLLECT_GET( pspec, argument_class, ap ); void **arg points to where to write an output argument VIPS_ARGUMENT_COLLECT_END */ #define VIPS_ARGUMENT_COLLECT_SET( PSPEC, ARG_CLASS, AP ) \ if( (ARG_CLASS->flags & VIPS_ARGUMENT_INPUT) ) { \ GValue value = { 0, }; \ gchar *error = NULL; \ \ /* Input args are given inline, eg. ("factor", 12.0) \ * and must be collected. \ */ \ g_value_init( &value, G_PARAM_SPEC_VALUE_TYPE( PSPEC ) ); \ G_VALUE_COLLECT( &value, AP, 0, &error ); \ \ /* Don't bother with the error message. \ */ \ if( error ) { \ VIPS_DEBUG_MSG( "VIPS_OBJECT_COLLECT_SET: err\n" ); \ g_free( error ); \ } #define VIPS_ARGUMENT_COLLECT_GET( PSPEC, ARG_CLASS, AP ) \ g_value_unset( &value ); \ } \ else if( (ARG_CLASS->flags & VIPS_ARGUMENT_OUTPUT) ) { \ void **arg __attribute__ ((unused)); \ \ /* Output args are a pointer to where to send the \ * result. \ */ \ arg = va_arg( AP, void ** ); #define VIPS_ARGUMENT_COLLECT_END \ } #define VIPS_TYPE_OBJECT (vips_object_get_type()) #define VIPS_OBJECT( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), VIPS_TYPE_OBJECT, VipsObject )) #define VIPS_OBJECT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), VIPS_TYPE_OBJECT, VipsObjectClass)) #define VIPS_IS_OBJECT( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_OBJECT )) #define VIPS_IS_OBJECT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_OBJECT )) #define VIPS_OBJECT_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), VIPS_TYPE_OBJECT, VipsObjectClass )) struct _VipsObject { GObject parent_object; /* Set after ->build() has run succesfully: construct is fully done * and checked. */ gboolean constructed; /* Set for static objects which are allocated at startup and never * freed. These objects are ommitted from leak reports. */ gboolean static_object; /* Table of argument instances for this class and any derived classes. */ VipsArgumentTable *argument_table; /* Class properties (see below), duplicated in the instance so we can * get at them easily via the property system. */ char *nickname; char *description; /* The pre/post/close callbacks are all fire-once. */ gboolean preclose; gboolean close; gboolean postclose; /* Total memory allocated relative to this object, handy for * profiling. */ size_t local_memory; }; struct _VipsObjectClass { GObjectClass parent_class; /* Build the object ... all argument properties have been set, * now build the thing. */ int (*build)( VipsObject *object ); /* Just after build ... the object is fully ready for work. */ int (*postbuild)( VipsObject *object ); /* Try to print something about the class, handy for help displays. * Keep to one line. */ void (*summary_class)( struct _VipsObjectClass *cls, VipsBuf *buf ); /* Try to print a one-line summary for the object, the user can see * this output via things like "header fred.tif", --vips-cache-trace, * etc. */ void (*summary)( VipsObject *object, VipsBuf *buf ); /* Try to print everything about the object, handy for debugging. */ void (*dump)( VipsObject *object, VipsBuf *buf ); /* Sanity-check the object. Print messages and stuff. * Handy for debugging. */ void (*sanity)( VipsObject *object, VipsBuf *buf ); /* Rewind. Save and restore any stuff that needs to survive a * dispose(). */ void (*rewind)( VipsObject *object ); /* Just before close, everything is still alive. */ void (*preclose)( VipsObject *object ); /* Close, time to free stuff. */ void (*close)( VipsObject *object ); /* Post-close, everything is dead, except the VipsObject pointer. * Useful for eg. deleting the file associated with a temp image. */ void (*postclose)( VipsObject *object ); /* The CLI interface. Implement these four to get CLI input and output * for your object. */ /* Given a command-line arg (eg. a filename), make an instance of the * object. Just do the g_object_new(), don't call _build(). * * Don't call this directly, see vips_object_new_from_string(). */ VipsObject *(*new_from_string)( const char *string ); /* The inverse of ^^. Given an object, output what ->new_from_string() * would have been given to make that object. */ void (*to_string)( VipsObject *object, VipsBuf *buf ); /* Does this output arg need an arg from the command line? Image * output, for example, needs a filename to write to. */ gboolean output_needs_arg; /* Write the object to the string. Return 0 for success, or -1 on * error, setting vips_error(). string is NULL if output_needs_arg() * was FALSE. */ int (*output_to_arg)( VipsObject *object, const char *string ); /* Class nickname, eg. "VipsInterpolateBicubic" has "bicubic" as a * nickname. Not internationalised. */ const char *nickname; /* Class description. Used for help messages, so internationalised. */ const char *description; /* Hash from pspec to VipsArgumentClass. * * This records the VipsArgumentClass for every pspec used in * VipsObject and any subclass (ie. everywhere), so it's huge. Don't * loop over this hash! Fine for lookups though. */ VipsArgumentTable *argument_table; /* A sorted (by priority) list of the VipsArgumentClass for this class * and any superclasses. This is small and specific to this class. * * Use the stored GType to work out when to restart the list for a * subclass. */ GSList *argument_table_traverse; GType argument_table_traverse_gtype; /* This class is deprecated and therefore hidden from various UI bits. * * VipsOperation has a deprecated flag, use that in preference to this * if you can. */ gboolean deprecated; /* Reserved for future expansion. */ void (*_vips_reserved1)( void ); void (*_vips_reserved2)( void ); void (*_vips_reserved3)( void ); void (*_vips_reserved4)( void ); }; gboolean vips_value_is_null( GParamSpec *psoec, const GValue *value ); void vips_object_set_property( GObject *gobject, guint property_id, const GValue *value, GParamSpec *pspec ); void vips_object_get_property( GObject *gobject, guint property_id, GValue *value, GParamSpec *pspec ); void vips_object_preclose( VipsObject *object ); int vips_object_build( VipsObject *object ); void vips_object_summary_class( VipsObjectClass *klass, VipsBuf *buf ); void vips_object_summary( VipsObject *object, VipsBuf *buf ); void vips_object_dump( VipsObject *object, VipsBuf *buf ); void vips_object_print_summary_class( VipsObjectClass *klass ); void vips_object_print_summary( VipsObject *object ); void vips_object_print_dump( VipsObject *object ); void vips_object_print_name( VipsObject *object ); gboolean vips_object_sanity( VipsObject *object ); GType vips_object_get_type( void ); void vips_object_class_install_argument( VipsObjectClass *cls, GParamSpec *pspec, VipsArgumentFlags flags, int priority, guint offset ); int vips_object_set_argument_from_string( VipsObject *object, const char *name, const char *value ); gboolean vips_object_argument_needsstring( VipsObject *object, const char *name ); int vips_object_get_argument_to_string( VipsObject *object, const char *name, const char *arg ); int vips_object_set_required( VipsObject *object, const char *value ); typedef void *(*VipsObjectSetArguments)( VipsObject *object, void *a, void *b ); VipsObject *vips_object_new( GType type, VipsObjectSetArguments set, void *a, void *b ); int vips_object_set_valist( VipsObject *object, va_list ap ); int vips_object_set( VipsObject *object, ... ) __attribute__((sentinel)); int vips_object_set_from_string( VipsObject *object, const char *string ); VipsObject *vips_object_new_from_string( VipsObjectClass *object_class, const char *p ); void vips_object_to_string( VipsObject *object, VipsBuf *buf ); void *vips_object_map( VipsSListMap2Fn fn, void *a, void *b ); typedef void *(*VipsTypeMapFn)( GType type, void *a ); typedef void *(*VipsTypeMap2Fn)( GType type, void *a, void *b ); typedef void *(*VipsClassMapFn)( VipsObjectClass *cls, void *a ); void *vips_type_map( GType base, VipsTypeMap2Fn fn, void *a, void *b ); void *vips_type_map_all( GType base, VipsTypeMapFn fn, void *a ); int vips_type_depth( GType type ); GType vips_type_find( const char *basename, const char *nickname ); const char *vips_nickname_find( GType type ); void *vips_class_map_all( GType type, VipsClassMapFn fn, void *a ); VipsObjectClass *vips_class_find( const char *basename, const char *nickname ); VipsObject **vips_object_local_array( VipsObject *parent, int n ); void vips_object_local_cb( VipsObject *vobject, GObject *gobject ); #define vips_object_local( V, G ) \ (g_signal_connect( V, "close", G_CALLBACK( vips_object_local_cb ), G )) void vips_object_set_static( VipsObject *object, gboolean static_object ); void vips_object_print_all( void ); void vips_object_sanity_all( void ); void vips_object_rewind( VipsObject *object ); void vips_object_unref_outputs( VipsObject *object ); const char *vips_object_get_description( VipsObject *object ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_OBJECT_H*/ vips-8.2.2/libvips/include/vips/generate.h0000664000175000017500000000462712530402247015456 00000000000000/* Generate pixels. * * J.Cupitt, 8/4/93 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_GENERATE_H #define VIPS_GENERATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef int (*VipsRegionWrite)( VipsRegion *region, VipsRect *area, void *a ); int vips_sink_disc( VipsImage *im, VipsRegionWrite write_fn, void *a ); int vips_sink( VipsImage *im, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ); int vips_sink_tile( VipsImage *im, int tile_width, int tile_height, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ); typedef void (*VipsSinkNotify)( VipsImage *im, VipsRect *rect, void *a ); int vips_sink_screen( VipsImage *in, VipsImage *out, VipsImage *mask, int tile_width, int tile_height, int max_tiles, int priority, VipsSinkNotify notify_fn, void *a ); int vips_sink_memory( VipsImage *im ); void *vips_start_one( VipsImage *out, void *a, void *b ); int vips_stop_one( void *seq, void *a, void *b ); void *vips_start_many( VipsImage *out, void *a, void *b ); int vips_stop_many( void *seq, void *a, void *b ); VipsImage **vips_allocate_input_array( VipsImage *out, ... ) __attribute__((sentinel)); int vips_image_generate( VipsImage *image, VipsStartFn start_fn, VipsGenerateFn generate_fn, VipsStopFn stop_fn, void *a, void *b ); int vips_image_pipeline_array( VipsImage *image, VipsDemandStyle hint, VipsImage **in ); int vips_image_pipelinev( VipsImage *image, VipsDemandStyle hint, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_GENERATE_H*/ vips-8.2.2/libvips/include/vips/version.h.in0000664000175000017500000000102712530402247015745 00000000000000/* Macros for the header version. */ #ifndef VIPS_VERSION_H #define VIPS_VERSION_H #define VIPS_VERSION "@VIPS_VERSION@" #define VIPS_VERSION_STRING "@VIPS_VERSION_STRING@" #define VIPS_MAJOR_VERSION (@VIPS_MAJOR_VERSION@) #define VIPS_MINOR_VERSION (@VIPS_MINOR_VERSION@) #define VIPS_MICRO_VERSION (@VIPS_MICRO_VERSION@) /* Not really anything to do with versions, but this is a handy place to put * it. */ #define VIPS_EXEEXT "@VIPS_EXEEXT@" #define VIPS_ENABLE_DEPRECATED @VIPS_ENABLE_DEPRECATED@ #endif /*VIPS_VERSION_H*/ vips-8.2.2/libvips/include/vips/basic.h0000664000175000017500000000354412610427330014741 00000000000000/* A few basic types needed everywhere. * * 27/10/11 * - from type.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_BASIC_H #define VIPS_BASIC_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /** * VipsPel: * * A picture element. Cast this to whatever the associated VipsBandFormat says * to get the value. */ typedef unsigned char VipsPel; /* Also used for eg. vips_local() and friends. */ typedef int (*VipsCallbackFn)( void *a, void *b ); /* Like GFunc, but return a value. */ typedef void *(*VipsSListMap2Fn)( void *item, void *a, void *b ); typedef void *(*VipsSListMap4Fn)( void *item, void *a, void *b, void *c, void *d ); typedef void *(*VipsSListFold2Fn)( void *item, void *a, void *b, void *c ); typedef enum { VIPS_PRECISION_INTEGER, VIPS_PRECISION_FLOAT, VIPS_PRECISION_APPROXIMATE, VIPS_PRECISION_LAST } VipsPrecision; /* Just for testing. */ char *vips_path_filename7( const char *path ); char *vips_path_mode7( const char *path ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_BASIC_H*/ vips-8.2.2/libvips/include/vips/header.h0000664000175000017500000001302612636460033015111 00000000000000/* boolean.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_HEADER_H #define VIPS_HEADER_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /** * VIPS_META_EXIF_NAME: * * The name that JPEG read and write operations use for the image's EXIF data. */ #define VIPS_META_EXIF_NAME "exif-data" /** * VIPS_META_XMP_NAME: * * The name that read and write operations use for the image's XMP data. */ #define VIPS_META_XMP_NAME "xmp-data" /** * VIPS_META_IPCT_NAME: * * The name that read and write operations use for the image's IPCT data. */ #define VIPS_META_IPCT_NAME "ipct-data" /** * VIPS_META_PHOTOSHOP_NAME: * * The name that TIFF read and write operations use for the image's * TIFFTAG_PHOTOSHOP data. */ #define VIPS_META_PHOTOSHOP_NAME "photoshop-data" /** * VIPS_META_ICC_NAME: * * The name we use to attach an ICC profile. The file read and write * operations for TIFF, JPEG, PNG and others use this item of metadata to * attach and save ICC profiles. The profile is updated by the * vips_icc_transform() operations. */ #define VIPS_META_ICC_NAME "icc-profile-data" /** * VIPS_META_XML: * * The original XML that was used to code the metadata after reading a VIPS * format file. */ #define VIPS_META_XML "xml-header" /** * VIPS_META_IMAGEDESCRIPTION: * * The IMAGEDESCRIPTION tag. Often has useful metadata. */ #define VIPS_META_IMAGEDESCRIPTION "image-description" /** * VIPS_META_RESOLUTION_UNIT: * * The JPEG and TIFF read and write operations use this to record the * file's preferred unit for resolution. */ #define VIPS_META_RESOLUTION_UNIT "resolution-unit" /** * VIPS_META_LOADER: * * Record the name of the original loader here. Handy for hinting file formats * and for debugging. */ #define VIPS_META_LOADER "vips-loader" guint64 vips_format_sizeof( VipsBandFormat format ); int vips_image_get_width( const VipsImage *image ); int vips_image_get_height( const VipsImage *image ); int vips_image_get_bands( const VipsImage *image ); VipsBandFormat vips_image_get_format( const VipsImage *image ); VipsCoding vips_image_get_coding( const VipsImage *image ); VipsInterpretation vips_image_get_interpretation( const VipsImage *image ); VipsInterpretation vips_image_guess_interpretation( const VipsImage *image ); double vips_image_get_xres( const VipsImage *image ); double vips_image_get_yres( const VipsImage *image ); int vips_image_get_xoffset( const VipsImage *image ); int vips_image_get_yoffset( const VipsImage *image ); const char *vips_image_get_filename( const VipsImage *image ); const char *vips_image_get_mode( const VipsImage *image ); double vips_image_get_scale( const VipsImage *image ); double vips_image_get_offset( const VipsImage *image ); const void *vips_image_get_data( VipsImage *image ); void vips_image_init_fields( VipsImage *image, int xsize, int ysize, int bands, VipsBandFormat format, VipsCoding coding, VipsInterpretation interpretation, double xres, double yres ); void vips_image_set( VipsImage *image, const char *field, GValue *value ); int vips_image_get( const VipsImage *image, const char *field, GValue *value_copy ); int vips_image_get_as_string( const VipsImage *image, const char *field, char **out ); GType vips_image_get_typeof( const VipsImage *image, const char *field ); gboolean vips_image_remove( VipsImage *image, const char *field ); typedef void *(*VipsImageMapFn)( VipsImage *image, const char *field, GValue *value, void *a ); void *vips_image_map( VipsImage *image, VipsImageMapFn fn, void *a ); void vips_image_set_area( VipsImage *image, const char *field, VipsCallbackFn free_fn, void *data ); int vips_image_get_area( const VipsImage *image, const char *field, void **data ); void vips_image_set_blob( VipsImage *image, const char *field, VipsCallbackFn free_fn, void *data, size_t length ); int vips_image_get_blob( const VipsImage *image, const char *field, void **data, size_t *length ); int vips_image_get_int( const VipsImage *image, const char *field, int *out ); void vips_image_set_int( VipsImage *image, const char *field, int i ); int vips_image_get_double( const VipsImage *image, const char *field, double *out ); void vips_image_set_double( VipsImage *image, const char *field, double d ); int vips_image_get_string( const VipsImage *image, const char *field, const char **out ); void vips_image_set_string( VipsImage *image, const char *field, const char *str ); int vips_image_history_printf( VipsImage *image, const char *format, ... ) __attribute__((format(printf, 2, 3))); int vips_image_history_args( VipsImage *image, const char *name, int argc, char *argv[] ); const char *vips_image_get_history( VipsImage *image ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_HEADER_H*/ vips-8.2.2/libvips/include/vips/type.h0000664000175000017500000001537612620616171014653 00000000000000/* the GTypes we define * * 27/10/11 * - from header.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_TYPE_H #define VIPS_TYPE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* A very simple boxed type for testing. Just holds an int. */ typedef struct _VipsThing { int i; } VipsThing; /** * VIPS_TYPE_THING: * * The #GType for a #VipsThing. */ #define VIPS_TYPE_THING (vips_thing_get_type()) GType vips_thing_get_type( void ); VipsThing *vips_thing_new( int i ); /* A ref-counted area of memory. Can hold arrays of things as well. */ typedef struct _VipsArea { void *data; size_t length; /* 0 if not known */ /* If this area represents an array, the number of elements in the * array. Equal to length / sizeof(element). */ int n; /*< private >*/ /* Reference count and lock. * * We could use an atomic int, but this is not a high-traffic data * structure, so a simple GMutex is OK. */ int count; GMutex *lock; /* Things like ICC profiles need their own free functions. */ VipsCallbackFn free_fn; /* If we are holding an array (for example, an array of double), the * GType of the elements and their size. 0 for not known. * * n is always length / sizeof_type, we keep it as a member for * convenience. */ GType type; size_t sizeof_type; } VipsArea; VipsArea *vips_area_copy( VipsArea *area ); void vips_area_unref( VipsArea *area ); VipsArea *vips_area_new( VipsCallbackFn free_fn, void *data ); VipsArea *vips_area_new_array( GType type, size_t sizeof_type, int n ); VipsArea *vips_area_new_array_object( int n ); void *vips_area_get_data( VipsArea *area, size_t *length, int *n, GType *type, size_t *sizeof_type ); #ifdef VIPS_DEBUG #define VIPS_ARRAY_ADDR( X, I ) \ (((I) >= 0 && (I) < VIPS_AREA( X )->n) ? \ (VIPS_AREA( X )->data + VIPS_AREA( X )->sizeof_type * (I)) : \ (fprintf( stderr, \ "VIPS_ARRAY_ADDR: index out of bounds, " \ "file \"%s\", line %d\n" \ "(index %d should have been within [0,%d])\n", \ __FILE__, __LINE__, \ (I), VIPS_AREA( X )->n ), NULL )) #else /*!VIPS_DEBUG*/ #define VIPS_ARRAY_ADDR( X, I ) \ (VIPS_AREA( X )->data + VIPS_AREA( X )->sizeof_type * (I)) #endif /*VIPS_DEBUG*/ /** * VIPS_TYPE_AREA: * * The #GType for a #VipsArea. */ #define VIPS_TYPE_AREA (vips_area_get_type()) #define VIPS_AREA( X ) ((VipsArea *) (X)) GType vips_area_get_type( void ); /** * VIPS_TYPE_SAVE_STRING: * * The #GType for a #VipsSaveString. */ #define VIPS_TYPE_SAVE_STRING (vips_save_string_get_type()) GType vips_save_string_get_type( void ); /** * VIPS_TYPE_REF_STRING: * * The #GType for a #VipsRefString. */ #define VIPS_TYPE_REF_STRING (vips_ref_string_get_type()) typedef struct _VipsRefString { VipsArea area; } VipsRefString; VipsRefString *vips_ref_string_new( const char *str ); const char *vips_ref_string_get( VipsRefString *refstr, size_t *length ); GType vips_ref_string_get_type( void ); /** * VIPS_TYPE_BLOB: * * The %GType for a #VipsBlob. */ #define VIPS_TYPE_BLOB (vips_blob_get_type()) typedef struct _VipsBlob { VipsArea area; } VipsBlob; VipsBlob *vips_blob_new( VipsCallbackFn free_fn, const void *data, size_t size ); VipsBlob *vips_blob_copy( const void *data, size_t size ); const void *vips_blob_get( VipsBlob *blob, size_t *size ); GType vips_blob_get_type( void ); /** * VIPS_TYPE_ARRAY_DOUBLE: * * The #GType for a #VipsArrayDouble. */ #define VIPS_TYPE_ARRAY_DOUBLE (vips_array_double_get_type()) typedef struct _VipsArrayDouble { VipsArea area; } VipsArrayDouble; VipsArrayDouble *vips_array_double_new( const double *array, int n ); VipsArrayDouble *vips_array_double_newv( int n, ... ); double *vips_array_double_get( VipsArrayDouble *array, int *n ); GType vips_array_double_get_type( void ); /** * VIPS_TYPE_ARRAY_INT: * * The #GType for a #VipsArrayInt. */ #define VIPS_TYPE_ARRAY_INT (vips_array_int_get_type()) typedef struct _VipsArrayInt { VipsArea area; } VipsArrayInt; VipsArrayInt *vips_array_int_new( const int *array, int n ); VipsArrayInt *vips_array_int_newv( int n, ... ); int *vips_array_int_get( VipsArrayInt *array, int *n ); GType vips_array_int_get_type( void ); /** * VIPS_TYPE_ARRAY_IMAGE: * * The #GType for a #VipsArrayImage. */ #define VIPS_TYPE_ARRAY_IMAGE (vips_array_image_get_type()) typedef struct _VipsArrayImage { VipsArea area; } VipsArrayImage; /* See image.h for vips_array_image_new() etc., they need to be declared after * VipsImage. */ GType vips_array_image_get_type( void ); void vips_value_set_area( GValue *value, VipsCallbackFn free_fn, void *data ); void *vips_value_get_area( const GValue *value, size_t *length ); const char *vips_value_get_save_string( const GValue *value ); void vips_value_set_save_string( GValue *value, const char *str ); void vips_value_set_save_stringf( GValue *value, const char *fmt, ... ) __attribute__((format(printf, 2, 3))); const char *vips_value_get_ref_string( const GValue *value, size_t *length ); void vips_value_set_ref_string( GValue *value, const char *str ); void *vips_value_get_blob( const GValue *value, size_t *length ); void vips_value_set_blob( GValue *value, VipsCallbackFn free_fn, void *data, size_t length ); void vips_value_set_array( GValue *value, int n, GType type, size_t sizeof_type ); void *vips_value_get_array( const GValue *value, int *n, GType *type, size_t *sizeof_type ); double *vips_value_get_array_double( const GValue *value, int *n ); void vips_value_set_array_double( GValue *value, const double *array, int n ); int *vips_value_get_array_int( const GValue *value, int *n ); void vips_value_set_array_int( GValue *value, const int *array, int n ); GObject **vips_value_get_array_object( const GValue *value, int *n ); void vips_value_set_array_object( GValue *value, int n ); /* See also image.h, that has vips_array_image_get(), vips_array_image_new(), * vips_value_get_array_image() and vips_value_set_array_image(). They need * to be declared after VipsImage. */ #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_TYPE_H*/ vips-8.2.2/libvips/include/vips/semaphore.h0000664000175000017500000000325112530402247015637 00000000000000/* Definitions for thread support. * * JC, 9/5/94 * 30/7/99 RP, JC * - reworked for posix/solaris threads * 28/9/99 JC * - restructured, made part of public API */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_SEMAPHORE_H #define VIPS_SEMAPHORE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include /* Implement our own semaphores. */ typedef struct { char *name; int v; GMutex *mutex; GCond *cond; } VipsSemaphore; int vips_semaphore_up( VipsSemaphore *s ); int vips_semaphore_down( VipsSemaphore *s ); int vips_semaphore_upn( VipsSemaphore *s, int n ); int vips_semaphore_downn( VipsSemaphore *s, int n ); void vips_semaphore_destroy( VipsSemaphore *s ); void vips_semaphore_init( VipsSemaphore *s, int v, char *name ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_SEMAPHORE_H*/ vips-8.2.2/libvips/include/vips/image.h0000664000175000017500000003746012630027444014752 00000000000000/* VIPS image class. * * 7/7/09 * - from vips.h * 2/3/11 * - move to GObject */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_IMAGE_H #define VIPS_IMAGE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* If you read MSB first, you get these two values. * intel order: byte 0 = b6 * SPARC order: byte 0 = 08 */ #define VIPS_MAGIC_INTEL (0xb6a6f208U) #define VIPS_MAGIC_SPARC (0x08f2a6b6U) /* We have a maximum value for a coordinate at various points for sanity * checking. For example, vips_black() has a max with and height. We use int * for width/height so we could go up to 2bn, but it's good to have a lower * value set so we can see crazy numbers early. * * This was 1m for a while, but someone found a use for a 4m wide image. */ #define VIPS_MAX_COORD (10000000) typedef enum { VIPS_DEMAND_STYLE_ERROR = -1, VIPS_DEMAND_STYLE_SMALLTILE, VIPS_DEMAND_STYLE_FATSTRIP, VIPS_DEMAND_STYLE_THINSTRIP, VIPS_DEMAND_STYLE_ANY } VipsDemandStyle; /* Types of image descriptor we may have. The type field is advisory only: it * does not imply that any fields in IMAGE have valid data. */ typedef enum { VIPS_IMAGE_ERROR = -1, VIPS_IMAGE_NONE, /* no type set */ VIPS_IMAGE_SETBUF, /* malloced memory array */ VIPS_IMAGE_SETBUF_FOREIGN, /* memory array, don't free on close */ VIPS_IMAGE_OPENIN, /* input from fd with a window */ VIPS_IMAGE_MMAPIN, /* memory mapped input file */ VIPS_IMAGE_MMAPINRW, /* memory mapped read/write file */ VIPS_IMAGE_OPENOUT, /* output to fd */ VIPS_IMAGE_PARTIAL /* partial image */ } VipsImageType; typedef enum { VIPS_INTERPRETATION_ERROR = -1, VIPS_INTERPRETATION_MULTIBAND = 0, VIPS_INTERPRETATION_B_W = 1, VIPS_INTERPRETATION_HISTOGRAM = 10, VIPS_INTERPRETATION_XYZ = 12, VIPS_INTERPRETATION_LAB = 13, VIPS_INTERPRETATION_CMYK = 15, VIPS_INTERPRETATION_LABQ = 16, VIPS_INTERPRETATION_RGB = 17, VIPS_INTERPRETATION_CMC = 18, VIPS_INTERPRETATION_LCH = 19, VIPS_INTERPRETATION_LABS = 21, VIPS_INTERPRETATION_sRGB = 22, VIPS_INTERPRETATION_YXY = 23, VIPS_INTERPRETATION_FOURIER = 24, VIPS_INTERPRETATION_RGB16 = 25, VIPS_INTERPRETATION_GREY16 = 26, VIPS_INTERPRETATION_MATRIX = 27, VIPS_INTERPRETATION_scRGB = 28, VIPS_INTERPRETATION_HSV = 29, VIPS_INTERPRETATION_LAST = 30 } VipsInterpretation; typedef enum { VIPS_FORMAT_NOTSET = -1, VIPS_FORMAT_UCHAR = 0, VIPS_FORMAT_CHAR = 1, VIPS_FORMAT_USHORT = 2, VIPS_FORMAT_SHORT = 3, VIPS_FORMAT_UINT = 4, VIPS_FORMAT_INT = 5, VIPS_FORMAT_FLOAT = 6, VIPS_FORMAT_COMPLEX = 7, VIPS_FORMAT_DOUBLE = 8, VIPS_FORMAT_DPCOMPLEX = 9, VIPS_FORMAT_LAST = 10 } VipsBandFormat; typedef enum { VIPS_CODING_ERROR = -1, VIPS_CODING_NONE = 0, VIPS_CODING_LABQ = 2, VIPS_CODING_RAD = 6, VIPS_CODING_LAST = 7 } VipsCoding; typedef enum { VIPS_ACCESS_RANDOM, VIPS_ACCESS_SEQUENTIAL, VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, VIPS_ACCESS_LAST } VipsAccess; struct _VipsImage; struct _VipsRegion; typedef void *(*VipsStartFn)( struct _VipsImage *out, void *a, void *b ); typedef int (*VipsGenerateFn)( struct _VipsRegion *out, void *seq, void *a, void *b, gboolean *stop ); typedef int (*VipsStopFn)( void *seq, void *a, void *b ); /* Struct we keep a record of execution time in. Passed to eval signal so * it can assess progress. */ typedef struct _VipsProgress { /*< private >*/ struct _VipsImage *im; /* Image we are part of */ /*< public >*/ int run; /* Time we have been running */ int eta; /* Estimated seconds of computation left */ gint64 tpels; /* Number of pels we expect to calculate */ gint64 npels; /* Number of pels calculated so far */ int percent; /* Percent complete */ GTimer *start; /* Start time */ } VipsProgress; #define VIPS_TYPE_IMAGE (vips_image_get_type()) #define VIPS_IMAGE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_IMAGE, VipsImage )) #define VIPS_IMAGE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_IMAGE, VipsImageClass)) #define VIPS_IS_IMAGE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_IMAGE )) #define VIPS_IS_IMAGE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_IMAGE )) #define VIPS_IMAGE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_IMAGE, VipsImageClass )) typedef struct _VipsImage { VipsObject parent_object; /*< private >*/ /* We have to keep these names for compatibility with the old API. * Don't use them though, use vips_image_get_width() and friends. */ int Xsize; /* image width, in pixels */ int Ysize; /* image height, in pixels */ int Bands; /* number of image bands */ VipsBandFormat BandFmt; /* pixel format */ VipsCoding Coding; /* pixel coding */ VipsInterpretation Type;/* pixel interpretation */ double Xres; /* horizontal pixels per millimetre */ double Yres; /* vertical pixels per millimetre */ int Xoffset; /* image origin hint */ int Yoffset; /* image origin hint */ /* No longer used, the names are here for compat with very, very old * code. */ int Length; short Compression; short Level; int Bbits; /* was number of bits in this format */ /* Old code expects to see this member, newer code has a param on * eval(). */ VipsProgress *time; /* Derived fields that some code can fiddle with. New code should use * vips_image_get_history() and friends. */ char *Hist; /* don't use, see vips_image_get_history() */ char *filename; /* pointer to copy of filename */ VipsPel *data; /* start of image data for WIO */ int kill; /* set to non-zero to block eval */ /* Everything below this private and only used internally by * VipsImage. */ /* During vips image read and write we need temporary float-sized * fields in the struct for staging xres/yres. Don't use these any * other time. */ float Xres_float; float Yres_float; char *mode; /* mode string passed to _new() */ VipsImageType dtype; /* descriptor type */ int fd; /* file descriptor */ void *baseaddr; /* pointer to the start of an mmap file */ size_t length; /* size of mmap area */ guint32 magic; /* magic from header, endian-ness of image */ /* Partial image stuff. All these fields are initialised * to NULL and ignored unless set by vips_image_generate() etc. */ VipsStartFn start_fn; VipsGenerateFn generate_fn; VipsStopFn stop_fn; void *client1; /* user arguments */ void *client2; GMutex *sslock; /* start-stop lock */ GSList *regions; /* list of regions current for this image */ VipsDemandStyle dhint; /* demand style hint */ /* Extra user-defined fields ... see vips_image_get() etc. */ GHashTable *meta; /* GhashTable of GValue */ GSList *meta_traverse; /* traverse order for Meta */ /* Part of mmap() read ... the sizeof() the header we skip from the * file start. Usually VIPS_SIZEOF_HEADER, but can be something else * for binary file read. * * guint64 so that we can guarantee to work even on systems with * strange ideas about large files. */ gint64 sizeof_header; /* If this is a large disc image, don't map the whole thing, instead * have a set of windows shared between the regions active on the * image. List of VipsWindow. */ GSList *windows; /* Upstream/downstream relationships, built from args to * vips_demand_hint(). * * We use these to invalidate downstream pixel buffers. * Use 'serial' to spot circular dependencies. * * See also hint_set below. */ GSList *upstream; GSList *downstream; int serial; /* Keep a list of recounted GValue strings so we can share hist * efficiently. */ GSList *history_list; /* The VipsImage (if any) we should signal eval progress on. */ struct _VipsImage *progress_signal; /* Record the file length here. We use this to stop ourselves mapping * things beyond the end of the file in the case that the file has * been truncated. * * gint64 so that we can guarantee to work even on systems with * strange ideas about large files. */ gint64 file_length; /* Set this when vips_demand_hint_array() is called, and check in any * operation that will demand pixels from the image. * * We use vips_demand_hint_array() to build the tree of * upstream/downstream relationships, so it's a mandatory thing. */ gboolean hint_set; /* Delete-on-close is hard to do with signals and callbacks since we * really need to do this in finalize after the fd has been closed, * but you can't emit signals then. * * Also keep a private copy of the filename string to be deleted, * since image->filename will be freed in _dispose(). */ gboolean delete_on_close; char *delete_on_close_filename; } VipsImage; typedef struct _VipsImageClass { VipsObjectClass parent_class; /* Signals we emit. */ /* Evaluation is starting. */ void (*preeval)( VipsImage *image, VipsProgress *progress ); /* Evaluation progress. */ void (*eval)( VipsImage *image, VipsProgress *progress ); /* Evaluation is ending. */ void (*posteval)( VipsImage *image, VipsProgress *progress ); /* An image has been written to. * Used by eg. vips_image_new_mode("x.jpg", "w") to do the * final write to jpeg. * Set *result to non-zero to indicate an error on write. */ void (*written)( VipsImage *image, int *result ); /* An image has been modified in some way and all caches * need dropping. */ void (*invalidate)( VipsImage *image ); /* Minimise this pipeline. * * This is triggered (sometimes) at the end of eval to signal that * we're probably done and that operations involved should try to * minimise memory use by, for example, dropping caches. * * See vips_tilecache(). */ void (*minimise)( VipsImage *image ); } VipsImageClass; GType vips_image_get_type( void ); /* Has to be guint64 and not size_t/off_t since we have to be able to address * huge images on platforms with 32-bit files. */ /* Pixel address calculation macros. */ #define VIPS_IMAGE_SIZEOF_ELEMENT( I ) \ (vips_format_sizeof((I)->BandFmt)) #define VIPS_IMAGE_SIZEOF_PEL( I ) \ (VIPS_IMAGE_SIZEOF_ELEMENT( I ) * (I)->Bands) #define VIPS_IMAGE_SIZEOF_LINE( I ) \ (VIPS_IMAGE_SIZEOF_PEL( I ) * (I)->Xsize) #define VIPS_IMAGE_SIZEOF_IMAGE( I ) \ (VIPS_IMAGE_SIZEOF_LINE( I ) * (I)->Ysize) #define VIPS_IMAGE_N_ELEMENTS( I ) \ ((I)->Bands * (I)->Xsize) #define VIPS_IMAGE_N_PELS( I ) \ ((guint64) (I)->Xsize * (I)->Ysize) /* If VIPS_DEBUG is defined, add bounds checking. */ #ifdef VIPS_DEBUG #define VIPS_IMAGE_ADDR( I, X, Y ) \ ( ((X) >= 0 && (X) < VIPS_IMAGE( I )->Xsize && \ (Y) >= 0 && (Y) < VIPS_IMAGE( I )->Ysize && \ VIPS_IMAGE( I )->data) ? \ (VIPS_IMAGE( I )->data + \ (Y) * VIPS_IMAGE_SIZEOF_LINE( I ) + \ (X) * VIPS_IMAGE_SIZEOF_PEL( I )) : \ (fprintf( stderr, \ "VIPS_IMAGE_ADDR: point out of bounds, " \ "file \"%s\", line %d\n" \ "(point x=%d, y=%d\n" \ " should have been within VipsRect left=%d, top=%d, " \ "width=%d, height=%d)\n", \ __FILE__, __LINE__, \ (X), (Y), \ 0, 0, \ VIPS_IMAGE( I )->Xsize, \ VIPS_IMAGE( I )->Ysize ), (VipsPel *) NULL) \ ) #else /*!VIPS_DEBUG*/ #define VIPS_IMAGE_ADDR( I, X, Y ) \ ((I)->data + \ (Y) * VIPS_IMAGE_SIZEOF_LINE( I ) + \ (X) * VIPS_IMAGE_SIZEOF_PEL( I )) #endif /*VIPS_DEBUG*/ #ifdef VIPS_DEBUG #define VIPS_MATRIX( I, X, Y ) \ ((VIPS_IMAGE( I )->BandFmt == VIPS_FORMAT_DOUBLE && \ VIPS_IMAGE( I )->Bands == 1) ? \ ((double *) VIPS_IMAGE_ADDR( I, X, Y )) : \ (fprintf( stderr, "VIPS_MATRIX: not a matrix image\n" ), \ (double *) NULL)) #else /*!VIPS_DEBUG*/ #define VIPS_MATRIX( I, X, Y ) \ ((double *) VIPS_IMAGE_ADDR( I, X, Y )) #endif /*VIPS_DEBUG*/ void vips_progress_set( gboolean progress ); void vips_image_invalidate_all( VipsImage *image ); void vips_image_minimise_all( VipsImage *image ); void vips_image_set_progress( VipsImage *image, gboolean progress ); char *vips_filename_get_filename( const char *vips_filename ); char *vips_filename_get_options( const char *vips_filename ); VipsImage *vips_image_new( void ); VipsImage *vips_image_new_memory( void ); VipsImage *vips_image_memory( void ); VipsImage *vips_image_new_from_file( const char *name, ... ) __attribute__((sentinel)); VipsImage *vips_image_new_from_file_RW( const char *filename ); VipsImage *vips_image_new_from_file_raw( const char *filename, int xsize, int ysize, int bands, guint64 offset ); VipsImage *vips_image_new_from_memory( const void *data, size_t size, int width, int height, int bands, VipsBandFormat format ); VipsImage *vips_image_new_from_memory_copy( const void *data, size_t size, int width, int height, int bands, VipsBandFormat format ); VipsImage *vips_image_new_from_buffer( const void *buf, size_t len, const char *option_string, ... ) __attribute__((sentinel)); VipsImage *vips_image_new_matrix( int width, int height ); VipsImage *vips_image_new_matrixv( int width, int height, ... ); VipsImage *vips_image_new_matrix_from_array( int width, int height, const double *array, int size ); VipsImage *vips_image_matrix_from_array( int width, int height, const double *array, int size ); void vips_image_set_delete_on_close( VipsImage *image, gboolean delete_on_close ); guint64 vips_get_disc_threshold( void ); VipsImage *vips_image_new_temp_file( const char *format ); int vips_image_write( VipsImage *image, VipsImage *out ); int vips_image_write_to_file( VipsImage *image, const char *name, ... ) __attribute__((sentinel)); int vips_image_write_to_buffer( VipsImage *in, const char *suffix, void **buf, size_t *size, ... ) __attribute__((sentinel)); void *vips_image_write_to_memory( VipsImage *in, size_t *size ); int vips_image_decode_predict( VipsImage *in, int *bands, VipsBandFormat *format ); int vips_image_decode( VipsImage *in, VipsImage **out ); int vips_image_encode( VipsImage *in, VipsImage **out, VipsCoding coding ); gboolean vips_image_isMSBfirst( VipsImage *image ); gboolean vips_image_isfile( VipsImage *image ); gboolean vips_image_ispartial( VipsImage *image ); VipsImage *vips_image_copy_memory( VipsImage *image ); int vips_image_wio_input( VipsImage *image ); int vips_image_pio_input( VipsImage *image ); int vips_image_pio_output( VipsImage *image ); int vips_image_inplace( VipsImage *image ); int vips_image_write_prepare( VipsImage *image ); int vips_image_write_line( VipsImage *image, int ypos, VipsPel *linebuffer ); gboolean vips_band_format_isint( VipsBandFormat format ); gboolean vips_band_format_isuint( VipsBandFormat format ); gboolean vips_band_format_is8bit( VipsBandFormat format ); gboolean vips_band_format_isfloat( VipsBandFormat format ); gboolean vips_band_format_iscomplex( VipsBandFormat format ); int vips_system( const char *cmd_format, ... ) __attribute__((sentinel)); /* Defined in type.c but declared here, since they use VipsImage. */ VipsArrayImage *vips_array_image_new( VipsImage **array, int n ); VipsArrayImage *vips_array_image_newv( int n, ... ); VipsArrayImage *vips_array_image_empty( void ); VipsArrayImage *vips_array_image_append( VipsArrayImage *array, VipsImage *image ); VipsImage **vips_array_image_get( VipsArrayImage *array, int *n ); VipsImage **vips_value_get_array_image( const GValue *value, int *n ); void vips_value_set_array_image( GValue *value, int n ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_IMAGE_H*/ vips-8.2.2/libvips/include/vips/vector.h0000664000175000017500000000663012530402247015162 00000000000000/* helper stuff for Orc * * 29/10/10 * - from im_dilate hackery */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_VECTOR_H #define VIPS_VECTOR_H #ifdef HAVE_ORC #include #endif /*HAVE_ORC*/ #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_VECTOR_SOURCE_MAX (10) /* An Orc program. */ typedef struct { /* Handy for debugging. */ const char *name; char *unique_name; /* How many resources we've used so far in this codegen. */ int n_temp; int n_scanline; int n_source; int n_destination; int n_constant; int n_parameter; int n_instruction; /* The scanline sources, and for each variable, the associated line. * "sl0" onwards. */ int sl[VIPS_VECTOR_SOURCE_MAX]; int line[VIPS_VECTOR_SOURCE_MAX]; /* Non-scanline sources, "s1" etc. s[0] is the var for "s1". */ int s[VIPS_VECTOR_SOURCE_MAX]; /* The destination var. */ int d1; #ifdef HAVE_ORC /* The code we have generated. */ OrcProgram *program; #endif /*HAVE_ORC*/ /* Compiled successfully. */ gboolean compiled; } VipsVector; /* An executor. */ typedef struct { #ifdef HAVE_ORC OrcExecutor executor; #endif /*HAVE_ORC*/ VipsVector *vector; } VipsExecutor; /* Set from the command-line. */ extern gboolean vips__vector_enabled; void vips_vector_init( void ); gboolean vips_vector_isenabled( void ); void vips_vector_set_enabled( gboolean enabled ); void vips_vector_free( VipsVector *vector ); VipsVector *vips_vector_new( const char *name, int dsize ); void vips_vector_constant( VipsVector *vector, char *name, int value, int size ); int vips_vector_source_name( VipsVector *vector, char *name, int size ); void vips_vector_source_scanline( VipsVector *vector, char *name, int line, int size ); void vips_vector_temporary( VipsVector *vector, char *name, int size ); void vips_vector_asm2( VipsVector *vector, const char *op, const char *a, const char *b ); void vips_vector_asm3( VipsVector *vector, const char *op, const char *a, const char *b, const char *c ); gboolean vips_vector_full( VipsVector *vector ); gboolean vips_vector_compile( VipsVector *vector ); void vips_vector_print( VipsVector *vector ); void vips_executor_set_program( VipsExecutor *executor, VipsVector *vector, int n ); void vips_executor_set_scanline( VipsExecutor *executor, VipsRegion *ir, int x, int y ); void vips_executor_set_destination( VipsExecutor *executor, void *value ); void vips_executor_set_array( VipsExecutor *executor, int var, void *value ); void vips_executor_run( VipsExecutor *executor ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_VECTOR_H*/ vips-8.2.2/libvips/include/vips/intl.h0000664000175000017500000000223012530402247014616 00000000000000/* i18n stuff for vips. */ #ifndef VIPS_INTL_H #define VIPS_INTL_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ const char *vips__gettext( const char *msgid ); const char *vips__ngettext( const char *msgid, const char *plural, unsigned long int n ); #ifdef ENABLE_NLS #include #define _(String) vips__gettext(String) /* ngettext may be defined as a macro if we're optimised. */ #ifdef ngettext #undef ngettext #endif /*ngettext*/ #define ngettext(String,Plural,number) vips__ngettext(String,Plural,number) #ifdef gettext_noop #define N_(String) gettext_noop(String) #else #define N_(String) (String) #endif #else /*!ENABLE_NLS*/ #define _(String) (String) #define N_(String) (String) #define textdomain(String) (String) #define gettext(String) (String) #define dgettext(Domain,String) (String) #define dcgettext(Domain,String,Type) (String) #define bindtextdomain(Domain,Directory) (Domain) #define bind_textdomain_codeset(Domain,Codeset) (Codeset) #define ngettext(S, P, N) ((N) == 1 ? (S) : (P)) #define dngettext(D, S, P, N) ngettext(S, P, N) #endif /* ENABLE_NLS */ #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /* VIPS_INTL_H */ vips-8.2.2/libvips/include/vips/gate.h0000664000175000017500000000375412530402247014604 00000000000000/* Thread profiling. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_GATE_H #define VIPS_GATE_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #define VIPS_GATE_START( NAME ) \ G_STMT_START { \ if( vips__thread_profile ) \ vips__thread_gate_start( NAME ); \ } G_STMT_END #define VIPS_GATE_STOP( NAME ) \ G_STMT_START { \ if( vips__thread_profile ) \ vips__thread_gate_stop( NAME ); \ } G_STMT_END #define VIPS_GATE_MALLOC( SIZE ) \ G_STMT_START { \ if( vips__thread_profile ) \ vips__thread_malloc_free( (gint64) (SIZE) ); \ } G_STMT_END #define VIPS_GATE_FREE( SIZE ) \ G_STMT_START { \ if( vips__thread_profile ) \ vips__thread_malloc_free( -((gint64) (SIZE)) ); \ } G_STMT_END extern gboolean vips__thread_profile; void vips_profile_set( gboolean profile ); void vips__thread_profile_attach( const char *thread_name ); void vips__thread_profile_detach( void ); void vips__thread_profile_stop( void ); void vips__thread_gate_start( const char *gate_name ); void vips__thread_gate_stop( const char *gate_name ); void vips__thread_malloc_free( gint64 size ); #endif /*VIPS_GATE_H*/ #ifdef __cplusplus } #endif /*__cplusplus*/ vips-8.2.2/libvips/include/vips/freqfilt.h0000664000175000017500000000303112530402247015464 00000000000000/* freq_filt.h * * 2/11/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_FREQFILT_H #define VIPS_FREQFILT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips_fwfft( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_invfft( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_freqmult( VipsImage *in, VipsImage *mask, VipsImage **out, ... ) __attribute__((sentinel)); int vips_spectrum( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_phasecor( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_FREQFILT_H*/ vips-8.2.2/libvips/include/vips/colour.h0000664000175000017500000001557112571531237015176 00000000000000/* Definitions for VIPS colour package. * * J.Cupitt, 8/4/93 * 15/7/96 JC * - C++ stuff added * 20/2/98 JC * - new display calibration added * 26/9/05 * - added IM_ prefix to colour temps */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_COLOUR_H #define VIPS_COLOUR_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Areas under curves for Dxx. 2 degree observer. */ #define VIPS_D93_X0 (89.7400) #define VIPS_D93_Y0 (100.0) #define VIPS_D93_Z0 (130.7700) #define VIPS_D75_X0 (94.9682) #define VIPS_D75_Y0 (100.0) #define VIPS_D75_Z0 (122.5710) /* D65 temp 6504. */ #define VIPS_D65_X0 (95.0470) #define VIPS_D65_Y0 (100.0) #define VIPS_D65_Z0 (108.8827) #define VIPS_D55_X0 (95.6831) #define VIPS_D55_Y0 (100.0) #define VIPS_D55_Z0 (92.0871) #define VIPS_D50_X0 (96.4250) #define VIPS_D50_Y0 (100.0) #define VIPS_D50_Z0 (82.4680) /* A temp 2856k. */ #define VIPS_A_X0 (109.8503) #define VIPS_A_Y0 (100.0) #define VIPS_A_Z0 (35.5849) /* B temp 4874k. */ #define VIPS_B_X0 (99.0720) #define VIPS_B_Y0 (100.0) #define VIPS_B_Z0 (85.2230) /* C temp 6774k. */ #define VIPS_C_X0 (98.0700) #define VIPS_C_Y0 (100.0) #define VIPS_C_Z0 (118.2300) #define VIPS_E_X0 (100.0) #define VIPS_E_Y0 (100.0) #define VIPS_E_Z0 (100.0) #define VIPS_D3250_X0 (105.6590) #define VIPS_D3250_Y0 (100.0) #define VIPS_D3250_Z0 (45.8501) typedef enum { VIPS_INTENT_PERCEPTUAL = 0, VIPS_INTENT_RELATIVE, VIPS_INTENT_SATURATION, VIPS_INTENT_ABSOLUTE, VIPS_INTENT_LAST } VipsIntent; typedef enum { VIPS_PCS_LAB, VIPS_PCS_XYZ, VIPS_PCS_LAST } VipsPCS; gboolean vips_colourspace_issupported( const VipsImage *image ); int vips_colourspace( VipsImage *in, VipsImage **out, VipsInterpretation space, ... ) __attribute__((sentinel)); int vips_LabQ2sRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rad2float( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_float2rad( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LabS2LabQ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LabQ2LabS( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LabQ2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Lab2LabQ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LCh2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Lab2LCh( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Yxy2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_CMC2XYZ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Lab2XYZ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_XYZ2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_XYZ2scRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_scRGB2sRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_scRGB2BW( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sRGB2scRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_scRGB2XYZ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_HSV2sRGB( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sRGB2HSV( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LCh2CMC( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_CMC2LCh( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_XYZ2Yxy( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Yxy2XYZ( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_LabS2Lab( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_Lab2LabS( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_icc_present( void ); int vips_icc_transform( VipsImage *in, VipsImage **out, const char *output_profile, ... ) __attribute__((sentinel)); int vips_icc_import( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_icc_export( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_icc_ac2rc( VipsImage *in, VipsImage **out, const char *profile_filename ); int vips_dE76( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_dE00( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_dECMC( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); void vips_col_Lab2XYZ( float L, float a, float b, float *X, float *Y, float *Z ); void vips_col_XYZ2Lab( float X, float Y, float Z, float *L, float *a, float *b ); double vips_col_ab2h( double a, double b ); void vips_col_ab2Ch( float a, float b, float *C, float *h ); void vips_col_Ch2ab( float C, float h, float *a, float *b ); float vips_col_L2Lcmc( float L ); float vips_col_C2Ccmc( float C ); float vips_col_Ch2hcmc( float C, float h ); void vips_col_make_tables_CMC( void ); float vips_col_Lcmc2L( float Lcmc ); float vips_col_Ccmc2C( float Ccmc ); float vips_col_Chcmc2h( float C, float hcmc ); int vips_col_sRGB2scRGB_8( int r, int g, int b, float *R, float *G, float *B ); int vips_col_sRGB2scRGB_16( int r, int g, int b, float *R, float *G, float *B ); int vips_col_scRGB2XYZ( float R, float G, float B, float *X, float *Y, float *Z ); int vips_col_XYZ2scRGB( float X, float Y, float Z, float *R, float *G, float *B ); int vips_col_scRGB2sRGB_8( float R, float G, float B, int *r, int *g, int *b, int *og ); int vips_col_scRGB2sRGB_16( float R, float G, float B, int *r, int *g, int *b, int *og ); int vips_col_scRGB2BW_16( float R, float G, float B, int *g, int *og ); int vips_col_scRGB2BW_8( float R, float G, float B, int *g, int *og ); float vips_pythagoras( float L1, float a1, float b1, float L2, float a2, float b2 ); float vips_col_dE00( float L1, float a1, float b1, float L2, float a2, float b2 ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_COLOUR_H*/ vips-8.2.2/libvips/include/vips/arithmetic.h0000664000175000017500000003473212530402247016015 00000000000000/* Headers for arithmetic * * 30/6/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_ARITHMETIC_H #define IM_ARITHMETIC_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /** * VipsOperationMath: * @VIPS_OPERATION_MATH_SIN: sin(), angles in degrees * @VIPS_OPERATION_MATH_COS: cos(), angles in degrees * @VIPS_OPERATION_MATH_TAN: tan(), angles in degrees * @VIPS_OPERATION_MATH_ASIN: asin(), angles in degrees * @VIPS_OPERATION_MATH_ACOS: acos(), angles in degrees * @VIPS_OPERATION_MATH_ATAN: atan(), angles in degrees * @VIPS_OPERATION_MATH_LOG: log base e * @VIPS_OPERATION_MATH_LOG10: log base 10 * @VIPS_OPERATION_MATH_EXP: e to the something * @VIPS_OPERATION_MATH_EXP10: 10 to the something * * See also: vips_math(). */ typedef enum { VIPS_OPERATION_MATH_SIN, VIPS_OPERATION_MATH_COS, VIPS_OPERATION_MATH_TAN, VIPS_OPERATION_MATH_ASIN, VIPS_OPERATION_MATH_ACOS, VIPS_OPERATION_MATH_ATAN, VIPS_OPERATION_MATH_LOG, VIPS_OPERATION_MATH_LOG10, VIPS_OPERATION_MATH_EXP, VIPS_OPERATION_MATH_EXP10, VIPS_OPERATION_MATH_LAST } VipsOperationMath; /** * VipsOperationMath2: * @VIPS_OPERATION_MATH2_POW: pow( left, right ) * @VIPS_OPERATION_MATH2_WOP: pow( right, left ) * * See also: vips_math(). */ typedef enum { VIPS_OPERATION_MATH2_POW, VIPS_OPERATION_MATH2_WOP, VIPS_OPERATION_MATH2_LAST } VipsOperationMath2; /** * VipsOperationRound: * @VIPS_OPERATION_ROUND_RINT: round to nearest * @VIPS_OPERATION_ROUND_FLOOR: largest integral value not greater than * @VIPS_OPERATION_ROUND_CEIL: the smallest integral value not less than * * See also: vips_round(). */ typedef enum { VIPS_OPERATION_ROUND_RINT, VIPS_OPERATION_ROUND_CEIL, VIPS_OPERATION_ROUND_FLOOR, VIPS_OPERATION_ROUND_LAST } VipsOperationRound; /** * VipsOperationRelational: * @VIPS_OPERATION_RELATIONAL_EQUAL: == * @VIPS_OPERATION_RELATIONAL_NOTEQ: != * @VIPS_OPERATION_RELATIONAL_LESS: < * @VIPS_OPERATION_RELATIONAL_LESSEQ: <= * @VIPS_OPERATION_RELATIONAL_MORE: > * @VIPS_OPERATION_RELATIONAL_MOREEQ: >= * * See also: vips_relational(). */ typedef enum { VIPS_OPERATION_RELATIONAL_EQUAL, VIPS_OPERATION_RELATIONAL_NOTEQ, VIPS_OPERATION_RELATIONAL_LESS, VIPS_OPERATION_RELATIONAL_LESSEQ, VIPS_OPERATION_RELATIONAL_MORE, VIPS_OPERATION_RELATIONAL_MOREEQ, VIPS_OPERATION_RELATIONAL_LAST } VipsOperationRelational; /** * VipsOperationBoolean: * @VIPS_OPERATION_BOOLEAN_AND: & * @VIPS_OPERATION_BOOLEAN_OR: | * @VIPS_OPERATION_BOOLEAN_EOR: ^ * @VIPS_OPERATION_BOOLEAN_LSHIFT: >> * @VIPS_OPERATION_BOOLEAN_RSHIFT: << * * See also: vips_boolean(). */ typedef enum { VIPS_OPERATION_BOOLEAN_AND, VIPS_OPERATION_BOOLEAN_OR, VIPS_OPERATION_BOOLEAN_EOR, VIPS_OPERATION_BOOLEAN_LSHIFT, VIPS_OPERATION_BOOLEAN_RSHIFT, VIPS_OPERATION_BOOLEAN_LAST } VipsOperationBoolean; /** * VipsOperationComplex: * @VIPS_OPERATION_COMPLEX_POLAR: convert to polar coordinates * @VIPS_OPERATION_COMPLEX_RECT: convert to rectangular coordinates * @VIPS_OPERATION_COMPLEX_CONJ: complex conjugate * * See also: vips_complex(). */ typedef enum { VIPS_OPERATION_COMPLEX_POLAR, VIPS_OPERATION_COMPLEX_RECT, VIPS_OPERATION_COMPLEX_CONJ, VIPS_OPERATION_COMPLEX_LAST } VipsOperationComplex; /** * VipsOperationComplex2: * @VIPS_OPERATION_COMPLEX2_CROSS_PHASE: convert to polar coordinates * * See also: vips_complex2(). */ typedef enum { VIPS_OPERATION_COMPLEX2_CROSS_PHASE, VIPS_OPERATION_COMPLEX2_LAST } VipsOperationComplex2; /** * VipsOperationComplexget: * @VIPS_OPERATION_COMPLEXGET_REAL: get real component * @VIPS_OPERATION_COMPLEXGET_IMAG: get imaginary component * * See also: vips_complexget(). */ typedef enum { VIPS_OPERATION_COMPLEXGET_REAL, VIPS_OPERATION_COMPLEXGET_IMAG, VIPS_OPERATION_COMPLEXGET_LAST } VipsOperationComplexget; int vips_add( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sum( VipsImage **in, VipsImage **out, int n, ... ) __attribute__((sentinel)); int vips_subtract( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) __attribute__((sentinel)); int vips_multiply( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_divide( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_linear( VipsImage *in, VipsImage **out, double *a, double *b, int n, ... ) __attribute__((sentinel)); int vips_linear1( VipsImage *in, VipsImage **out, double a, double b, ... ) __attribute__((sentinel)); int vips_remainder( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_remainder_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_remainder_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_invert( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_abs( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sign( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_round( VipsImage *in, VipsImage **out, VipsOperationRound round, ... ) __attribute__((sentinel)); int vips_floor( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_ceil( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rint( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_math( VipsImage *in, VipsImage **out, VipsOperationMath math, ... ) __attribute__((sentinel)); int vips_sin( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cos( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tan( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_asin( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_acos( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_atan( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_exp( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_exp10( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_log( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_log10( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_complex( VipsImage *in, VipsImage **out, VipsOperationComplex cmplx, ... ) __attribute__((sentinel)); int vips_polar( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rect( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_conj( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_complex2( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationComplex2 cmplx, ... ) __attribute__((sentinel)); int vips_cross_phase( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_complexget( VipsImage *in, VipsImage **out, VipsOperationComplexget get, ... ) __attribute__((sentinel)); int vips_real( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_imag( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_complexform( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_relational( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationRelational relational, ... ) __attribute__((sentinel)); int vips_equal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_notequal( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_less( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_lesseq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_more( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_moreeq( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_relational_const( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double *c, int n, ... ) __attribute__((sentinel)); int vips_equal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_notequal_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_less_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_lesseq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_more_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_moreeq_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_relational_const1( VipsImage *in, VipsImage **out, VipsOperationRelational relational, double c, ... ) __attribute__((sentinel)); int vips_equal_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_notequal_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_less_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_lesseq_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_more_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_moreeq_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_boolean( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationBoolean boolean, ... ) __attribute__((sentinel)); int vips_andimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_orimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_eorimage( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_lshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rshift( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_boolean_const( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double *c, int n, ... ) __attribute__((sentinel)); int vips_andimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_orimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_eorimage_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_lshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_rshift_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_boolean_const1( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, double c, ... ) __attribute__((sentinel)); int vips_andimage_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_orimage_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_eorimage_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_lshift_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_rshift_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_math2( VipsImage *left, VipsImage *right, VipsImage **out, VipsOperationMath2 math2, ... ) __attribute__((sentinel)); int vips_pow( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_wop( VipsImage *left, VipsImage *right, VipsImage **out, ... ) __attribute__((sentinel)); int vips_math2_const( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double *c, int n, ... ) __attribute__((sentinel)); int vips_pow_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_wop_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_math2_const1( VipsImage *in, VipsImage **out, VipsOperationMath2 math2, double c, ... ) __attribute__((sentinel)); int vips_pow_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_wop_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_avg( VipsImage *in, double *out, ... ) __attribute__((sentinel)); int vips_deviate( VipsImage *in, double *out, ... ) __attribute__((sentinel)); int vips_min( VipsImage *in, double *out, ... ) __attribute__((sentinel)); int vips_max( VipsImage *in, double *out, ... ) __attribute__((sentinel)); int vips_stats( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_measure( VipsImage *in, VipsImage **out, int h, int v, ... ) __attribute__((sentinel)); int vips_getpoint( VipsImage *in, double **vector, int *n, int x, int y, ... ) __attribute__((sentinel)); int vips_hist_find( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_find_ndim( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hist_find_indexed( VipsImage *in, VipsImage *index, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hough_line( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_hough_circle( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_project( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) __attribute__((sentinel)); int vips_profile( VipsImage *in, VipsImage **columns, VipsImage **rows, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_ARITHMETIC_H*/ vips-8.2.2/libvips/include/vips/threadpool.h0000664000175000017500000000751212530402247016021 00000000000000/* Thread eval for VIPS. * * 29/9/99 JC * - from thread.h * 17/3/10 * - from threadgroup * - rework with a simpler distributed work allocation model */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_THREADPOOL_H #define VIPS_THREADPOOL_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include /* Per-thread state. Allocate functions can use these members to * communicate with work functions. */ #define VIPS_TYPE_THREAD_STATE (vips_thread_state_get_type()) #define VIPS_THREAD_STATE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_THREAD_STATE, VipsThreadState )) #define VIPS_THREAD_STATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_THREAD_STATE, VipsThreadStateClass)) #define VIPS_IS_THREAD_STATE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_THREAD_STATE )) #define VIPS_IS_THREAD_STATE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_THREAD_STATE )) #define VIPS_THREAD_STATE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_THREAD_STATE, VipsThreadStateClass )) typedef struct _VipsThreadState { VipsObject parent_object; /*< public >*/ /* Image we run on. */ VipsImage *im; /* This region is created and destroyed by the threadpool for the * use of the worker. */ VipsRegion *reg; /* Neither used nor set, do what you like with them. */ VipsRect pos; int x, y; /* Set in work to get the allocate to signal stop. */ gboolean stop; /* The client data passed to the enclosing vips_threadpool_run(). */ void *a; } VipsThreadState; typedef struct _VipsThreadStateClass { VipsObjectClass parent_class; /*< public >*/ } VipsThreadStateClass; void *vips_thread_state_set( VipsObject *object, void *a, void *b ); GType vips_thread_state_get_type( void ); VipsThreadState *vips_thread_state_new( VipsImage *im, void *a ); /* Constructor for per-thread state. */ typedef VipsThreadState *(*VipsThreadStartFn)( VipsImage *im, void *a ); /* A work allocate function. This is run single-threaded by a worker to * set up a new work unit. * Return non-zero for errors. Set *stop for "no more work to do" */ typedef int (*VipsThreadpoolAllocateFn)( VipsThreadState *state, void *a, gboolean *stop ); /* A work function. This does a unit of work (eg. processing a tile or * whatever). Return non-zero for errors. */ typedef int (*VipsThreadpoolWorkFn)( VipsThreadState *state, void *a ); /* A progress function. This is run by the main thread once for every * allocation. Return an error to kill computation early. */ typedef int (*VipsThreadpoolProgressFn)( void *a ); int vips_threadpool_run( VipsImage *im, VipsThreadStartFn start, VipsThreadpoolAllocateFn allocate, VipsThreadpoolWorkFn work, VipsThreadpoolProgressFn progress, void *a ); void vips_get_tile_size( VipsImage *im, int *tile_width, int *tile_height, int *n_lines ); void vips_concurrency_set( int concurrency ); int vips_concurrency_get( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_THREADPOOL_H*/ vips-8.2.2/libvips/include/vips/Makefile.am0000664000175000017500000000341512605514112015537 00000000000000pkginclude_HEADERS = \ basic.h \ type.h \ gate.h \ almostdeprecated.h \ deprecated.h \ arithmetic.h \ buf.h \ colour.h \ conversion.h \ convolution.h \ debug.h \ dispatch.h \ enumtypes.h \ error.h \ operation.h \ format.h \ foreign.h \ draw.h \ generate.h \ header.h \ histogram.h \ freqfilt.h \ image.h \ interpolate.h \ intl.h \ mask.h \ memory.h \ morphology.h \ mosaicing.h \ create.h \ video.h \ cimg_funcs.h \ object.h \ private.h \ rect.h \ region.h \ resample.h \ semaphore.h \ threadpool.h \ thread.h \ transform.h \ util.h \ version.h \ vector.h \ vips7compat.h \ vips.h vipsc++.h: vips --cpph all > vipsc++.h EXTRA_DIST = version.h.in internal.h enumtemplate # the headers we scan for enums etc. # keep in sync with ${top_srcdir}/libvips/iofuncs/Makefile.am # we need absolute filenames here since this list appears in the src dir as # well vips_scan_headers = \ ${top_srcdir}/libvips/include/vips/memory.h \ ${top_srcdir}/libvips/include/vips/create.h \ ${top_srcdir}/libvips/include/vips/foreign.h \ ${top_srcdir}/libvips/include/vips/arithmetic.h \ ${top_srcdir}/libvips/include/vips/conversion.h \ ${top_srcdir}/libvips/include/vips/util.h \ ${top_srcdir}/libvips/include/vips/image.h \ ${top_srcdir}/libvips/include/vips/colour.h \ ${top_srcdir}/libvips/include/vips/operation.h \ ${top_srcdir}/libvips/include/vips/convolution.h \ ${top_srcdir}/libvips/include/vips/morphology.h \ ${top_srcdir}/libvips/include/vips/draw.h \ ${top_srcdir}/libvips/include/vips/basic.h \ ${top_srcdir}/libvips/include/vips/object.h enumtypes.h: $(vips_scan_headers) Makefile glib-mkenums --template enumtemplate \ $(vips_scan_headers) > xgen-geth && \ ( cmp -s xgen-geth enumtypes.h || cp xgen-geth enumtypes.h ) && \ rm -f xgen-geth vips-8.2.2/libvips/include/vips/format.h0000664000175000017500000001261712620616171015155 00000000000000/* Base type for supported image formats. Subclass this to add a new * format. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_FORMAT_H #define IM_FORMAT_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_FORMAT (vips_format_get_type()) #define VIPS_FORMAT( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FORMAT, VipsFormat )) #define VIPS_FORMAT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FORMAT, VipsFormatClass)) #define VIPS_IS_FORMAT( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FORMAT )) #define VIPS_IS_FORMAT_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FORMAT )) #define VIPS_FORMAT_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FORMAT, VipsFormatClass )) /* Image file properties. */ typedef enum { VIPS_FORMAT_NONE = 0, /* No flags set */ VIPS_FORMAT_PARTIAL = 1, /* Lazy read OK (eg. tiled tiff) */ VIPS_FORMAT_BIGENDIAN = 2 /* Most-significant byte first */ } VipsFormatFlags; /* Don't instantiate these things, just use the class stuff. */ typedef struct _VipsFormat { VipsObject parent_object; /*< public >*/ } VipsFormat; typedef struct _VipsFormatClass { VipsObjectClass parent_class; /*< public >*/ /* Is a file in this format. */ gboolean (*is_a)( const char * ); /* Read just the header into the VipsImage. */ int (*header)( const char *, VipsImage * ); /* Load the whole image. */ int (*load)( const char *, VipsImage * ); /* Write the VipsImage to the file in this format. */ int (*save)( VipsImage *, const char * ); /* Get the flags for this file in this format. */ VipsFormatFlags (*get_flags)( const char * ); /* Loop over formats in this order, default 0. We need this because * some formats can be read by several loaders (eg. tiff can be read * by the libMagick loader as well as by the tiff loader), and we want * to make sure the better loader comes first. */ int priority; /* Null-terminated list of allowed suffixes, eg. ".tif", ".tiff". */ const char **suffs; } VipsFormatClass; GType vips_format_get_type( void ); /* Map over and find formats. This uses type introspection to loop over * subclasses of VipsFormat. */ void *vips_format_map( VipsSListMap2Fn fn, void *a, void *b ); VipsFormatClass *vips_format_for_file( const char *filename ); VipsFormatClass *vips_format_for_name( const char *filename ); VipsFormatFlags vips_format_get_flags( VipsFormatClass *format, const char *filename ); /* Read/write an image convenience functions. */ int vips_format_read( const char *filename, VipsImage *out ); int vips_format_write( VipsImage *in, const char *filename ); /* Low-level read/write operations. */ int im_jpeg2vips( const char *filename, VipsImage *out ); int im_bufjpeg2vips( void *buf, size_t len, VipsImage *out, gboolean header_only ); int im_vips2jpeg( VipsImage *in, const char *filename ); int im_vips2mimejpeg( VipsImage *in, int qfac ); int im_vips2bufjpeg( VipsImage *in, VipsImage *out, int qfac, char **obuf, int *olen ); int im_tiff2vips( const char *filename, VipsImage *out ); int im_vips2tiff( VipsImage *in, const char *filename ); int im_tile_cache( VipsImage *in, VipsImage *out, int tile_width, int tile_height, int max_tiles ); int im_magick2vips( const char *filename, VipsImage *out ); int im_bufmagick2vips( void *buf, size_t len, VipsImage *out, gboolean header_only ); int im_exr2vips( const char *filename, VipsImage *out ); int im_ppm2vips( const char *filename, VipsImage *out ); int im_vips2ppm( VipsImage *in, const char *filename ); int im_analyze2vips( const char *filename, VipsImage *out ); int im_csv2vips( const char *filename, VipsImage *out ); int im_vips2csv( VipsImage *in, const char *filename ); int im_png2vips( const char *filename, VipsImage *out ); int im_vips2png( VipsImage *in, const char *filename ); int im_vips2bufpng( VipsImage *in, VipsImage *out, int compression, int interlace, char **obuf, size_t *olen ); int im_webp2vips( const char *filename, VipsImage *out ); int im_vips2webp( VipsImage *in, const char *filename ); int im_raw2vips( const char *filename, VipsImage *out, int width, int height, int bpp, int offset ); int im_vips2raw( VipsImage *in, int fd ); int im_mat2vips( const char *filename, VipsImage *out ); int im_rad2vips( const char *filename, VipsImage *out ); int im_vips2rad( VipsImage *in, const char *filename ); int im_fits2vips( const char *filename, VipsImage *out ); int im_vips2fits( VipsImage *in, const char *filename ); int im_vips2dz( VipsImage *in, const char *filename ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_FORMAT_H*/ vips-8.2.2/libvips/include/vips/conversion.h0000664000175000017500000001565512640745632016066 00000000000000/* conversion.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_CONVERSION_H #define VIPS_CONVERSION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_EXTEND_BLACK, VIPS_EXTEND_COPY, VIPS_EXTEND_REPEAT, VIPS_EXTEND_MIRROR, VIPS_EXTEND_WHITE, VIPS_EXTEND_BACKGROUND, VIPS_EXTEND_LAST } VipsExtend; typedef enum { VIPS_DIRECTION_HORIZONTAL, VIPS_DIRECTION_VERTICAL, VIPS_DIRECTION_LAST } VipsDirection; typedef enum { VIPS_ALIGN_LOW, VIPS_ALIGN_CENTRE, VIPS_ALIGN_HIGH, VIPS_ALIGN_LAST } VipsAlign; typedef enum { VIPS_ANGLE_D0, VIPS_ANGLE_D90, VIPS_ANGLE_D180, VIPS_ANGLE_D270, VIPS_ANGLE_LAST } VipsAngle; typedef enum { VIPS_ANGLE45_D0, VIPS_ANGLE45_D45, VIPS_ANGLE45_D90, VIPS_ANGLE45_D135, VIPS_ANGLE45_D180, VIPS_ANGLE45_D225, VIPS_ANGLE45_D270, VIPS_ANGLE45_D315, VIPS_ANGLE45_LAST } VipsAngle45; int vips_copy( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tilecache( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_linecache( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_sequential( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cache( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_copy_file( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_embed( VipsImage *in, VipsImage **out, int x, int y, int width, int height, ... ) __attribute__((sentinel)); int vips_flip( VipsImage *in, VipsImage **out, VipsDirection direction, ... ) __attribute__((sentinel)); int vips_insert( VipsImage *main, VipsImage *sub, VipsImage **out, int x, int y, ... ) __attribute__((sentinel)); int vips_join( VipsImage *in1, VipsImage *in2, VipsImage **out, VipsDirection direction, ... ) __attribute__((sentinel)); int vips_arrayjoin( VipsImage **in, VipsImage **out, int n, ... ) __attribute__((sentinel)); int vips_extract_area( VipsImage *in, VipsImage **out, int left, int top, int width, int height, ... ) __attribute__((sentinel)); int vips_crop( VipsImage *in, VipsImage **out, int left, int top, int width, int height, ... ) __attribute__((sentinel)); int vips_extract_band( VipsImage *in, VipsImage **out, int band, ... ) __attribute__((sentinel)); int vips_replicate( VipsImage *in, VipsImage **out, int across, int down, ... ) __attribute__((sentinel)); int vips_grid( VipsImage *in, VipsImage **out, int tile_height, int across, int down, ... ) __attribute__((sentinel)); int vips_wrap( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rot( VipsImage *in, VipsImage **out, VipsAngle angle, ... ) __attribute__((sentinel)); int vips_rot45( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); VipsAngle vips_autorot_get_angle( VipsImage *im ); int vips_autorot( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_zoom( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) __attribute__((sentinel)); int vips_subsample( VipsImage *in, VipsImage **out, int xfac, int yfac, ... ) __attribute__((sentinel)); int vips_cast( VipsImage *in, VipsImage **out, VipsBandFormat format, ... ) __attribute__((sentinel)); int vips_cast_uchar( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_char( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_ushort( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_short( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_uint( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_int( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_float( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_double( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_complex( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_cast_dpcomplex( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_scale( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_msb( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_byteswap( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandjoin( VipsImage **in, VipsImage **out, int n, ... ) __attribute__((sentinel)); int vips_bandjoin2( VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandjoin_const( VipsImage *in, VipsImage **out, double *c, int n, ... ) __attribute__((sentinel)); int vips_bandjoin_const1( VipsImage *in, VipsImage **out, double c, ... ) __attribute__((sentinel)); int vips_bandrank( VipsImage **in, VipsImage **out, int n, ... ) __attribute__((sentinel)); int vips_bandfold( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandunfold( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandbool( VipsImage *in, VipsImage **out, VipsOperationBoolean boolean, ... ) __attribute__((sentinel)); int vips_bandand( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandor( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandeor( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_bandmean( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_recomb( VipsImage *in, VipsImage **out, VipsImage *m, ... ) __attribute__((sentinel)); int vips_ifthenelse( VipsImage *cond, VipsImage *in1, VipsImage *in2, VipsImage **out, ... ) __attribute__((sentinel)); int vips_flatten( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_premultiply( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_unpremultiply( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_falsecolour( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_gamma( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_CONVERSION_H*/ vips-8.2.2/libvips/include/vips/draw.h0000664000175000017500000000542312530402247014614 00000000000000/* draw.h * * 3/11/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_DRAW_H #define VIPS_DRAW_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_COMBINE_MODE_SET, VIPS_COMBINE_MODE_ADD, VIPS_COMBINE_MODE_LAST } VipsCombineMode; int vips_draw_rect( VipsImage *image, double *ink, int n, int left, int top, int width, int height, ... ) __attribute__((sentinel)); int vips_draw_rect1( VipsImage *image, double ink, int left, int top, int width, int height, ... ) __attribute__((sentinel)); int vips_draw_point( VipsImage *image, double *ink, int n, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_point1( VipsImage *image, double ink, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_image( VipsImage *image, VipsImage *sub, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_mask( VipsImage *image, double *ink, int n, VipsImage *mask, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_mask1( VipsImage *image, double ink, VipsImage *mask, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_line( VipsImage *image, double *ink, int n, int x1, int y1, int x2, int y2, ... ) __attribute__((sentinel)); int vips_draw_line1( VipsImage *image, double ink, int x1, int y1, int x2, int y2, ... ) __attribute__((sentinel)); int vips_draw_circle( VipsImage *image, double *ink, int n, int cx, int cy, int radius, ... ) __attribute__((sentinel)); int vips_draw_circle1( VipsImage *image, double ink, int cx, int cy, int radius, ... ) __attribute__((sentinel)); int vips_draw_flood( VipsImage *image, double *ink, int n, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_flood1( VipsImage *image, double ink, int x, int y, ... ) __attribute__((sentinel)); int vips_draw_smudge( VipsImage *image, int left, int top, int width, int height, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_DRAW_H*/ vips-8.2.2/libvips/include/vips/Makefile.in0000664000175000017500000005320212651721157015561 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/include/vips ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(pkginclude_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = version.h CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgincludedir)" HEADERS = $(pkginclude_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/version.h.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ pkginclude_HEADERS = \ basic.h \ type.h \ gate.h \ almostdeprecated.h \ deprecated.h \ arithmetic.h \ buf.h \ colour.h \ conversion.h \ convolution.h \ debug.h \ dispatch.h \ enumtypes.h \ error.h \ operation.h \ format.h \ foreign.h \ draw.h \ generate.h \ header.h \ histogram.h \ freqfilt.h \ image.h \ interpolate.h \ intl.h \ mask.h \ memory.h \ morphology.h \ mosaicing.h \ create.h \ video.h \ cimg_funcs.h \ object.h \ private.h \ rect.h \ region.h \ resample.h \ semaphore.h \ threadpool.h \ thread.h \ transform.h \ util.h \ version.h \ vector.h \ vips7compat.h \ vips.h EXTRA_DIST = version.h.in internal.h enumtemplate # the headers we scan for enums etc. # keep in sync with ${top_srcdir}/libvips/iofuncs/Makefile.am # we need absolute filenames here since this list appears in the src dir as # well vips_scan_headers = \ ${top_srcdir}/libvips/include/vips/memory.h \ ${top_srcdir}/libvips/include/vips/create.h \ ${top_srcdir}/libvips/include/vips/foreign.h \ ${top_srcdir}/libvips/include/vips/arithmetic.h \ ${top_srcdir}/libvips/include/vips/conversion.h \ ${top_srcdir}/libvips/include/vips/util.h \ ${top_srcdir}/libvips/include/vips/image.h \ ${top_srcdir}/libvips/include/vips/colour.h \ ${top_srcdir}/libvips/include/vips/operation.h \ ${top_srcdir}/libvips/include/vips/convolution.h \ ${top_srcdir}/libvips/include/vips/morphology.h \ ${top_srcdir}/libvips/include/vips/draw.h \ ${top_srcdir}/libvips/include/vips/basic.h \ ${top_srcdir}/libvips/include/vips/object.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/include/vips/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/include/vips/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): version.h: $(top_builddir)/config.status $(srcdir)/version.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(pkgincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgincludeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgincludeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgincludeHEADERS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-pkgincludeHEADERS .PRECIOUS: Makefile vipsc++.h: vips --cpph all > vipsc++.h enumtypes.h: $(vips_scan_headers) Makefile glib-mkenums --template enumtemplate \ $(vips_scan_headers) > xgen-geth && \ ( cmp -s xgen-geth enumtypes.h || cp xgen-geth enumtypes.h ) && \ rm -f xgen-geth # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/include/vips/mosaicing.h0000664000175000017500000000373412530402247015633 00000000000000/* mosaicing.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_MOSAICING_H #define IM_MOSAICING_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ int vips_merge( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int dx, int dy, ... ) __attribute__((sentinel)); int vips_mosaic( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int xref, int yref, int xsec, int ysec, ... ) __attribute__((sentinel)); int vips_mosaic1( VipsImage *ref, VipsImage *sec, VipsImage **out, VipsDirection direction, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, ... ) __attribute__((sentinel)); int vips_match( VipsImage *ref, VipsImage *sec, VipsImage **out, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, ... ) __attribute__((sentinel)); int vips_globalbalance( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_remosaic( VipsImage *in, VipsImage **out, const char *old_str, const char *new_str, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_MOSAICING_H*/ vips-8.2.2/libvips/include/vips/deprecated.h0000664000175000017500000000754112651641775016001 00000000000000/* Old and broken stuff we do not enable by default * * 30/6/09 * - from vips.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_DEPRECATED_H #define IM_DEPRECATED_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* On win32, need to override the wingdi defs for these. Yuk! */ #ifdef HAVE_WINDOWS_H #ifdef RGB #undef RGB #endif #ifdef CMYK #undef CMYK #endif #endif /*HAVE_WINDOWS_H*/ /* Bits per Band */ #define BBBYTE 8 #define BBSHORT 16 #define BBINT 32 #define BBFLOAT 32 #define BBCOMPLEX 64 /* complex consisting of two floats */ #define BBDOUBLE 64 #define BBDPCOMPLEX 128 /* complex consisting of two doubles */ /* picture Type */ #define MULTIBAND 0 #define B_W 1 #define LUMINACE 2 #define XRAY 3 #define IR 4 #define YUV 5 #define RED_ONLY 6 /* red channel only */ #define GREEN_ONLY 7 /* green channel only */ #define BLUE_ONLY 8 /* blue channel only */ #define POWER_SPECTRUM 9 #define HISTOGRAM 10 #define FOURIER 24 /* Colour spaces. */ #define LUT 11 #define XYZ 12 #define LAB 13 #define CMC 14 #define CMYK 15 #define LABQ 16 #define RGB 17 #define UCS 18 #define LCH 19 #define LABS 21 #define sRGB 22 #define YXY 23 /* BandFmt */ #define FMTNOTSET -1 #define FMTUCHAR 0 /* pels interpreted as unsigned chars */ #define FMTCHAR 1 /* pels interpreted as signed chars */ #define FMTUSHORT 2 /* pels interpreted as unsigned shorts */ #define FMTSHORT 3 /* pels interpreted as signed shorts */ #define FMTUINT 4 /* pels interpreted as unsigned ints */ #define FMTINT 5 /* pels interpreted as signed ints */ #define FMTFLOAT 6 /* pels interpreted as floats */ #define FMTCOMPLEX 7 /* pels interpreted as complex (2 float each) */ #define FMTDOUBLE 8 /* pels interpreted as unsigned double */ #define FMTDPCOMPLEX 9 /* pels interpreted as complex (2 double each)*/ /* Coding type */ #define NOCODING 0 #define COLQUANT 1 #define LABPACK 2 #define LABPACK_COMPRESSED 3 #define RGB_COMPRESSED 4 #define LUM_COMPRESSED 5 /* Compression type */ #define NO_COMPRESSION 0 #define TCSF_COMPRESSION 1 #define JPEG_COMPRESSION 2 #define esize(I) IM_IMAGE_SIZEOF_ELEMENT(I) #define psize(I) IM_IMAGE_SIZEOF_PEL(I) #define lsize(I) IM_IMAGE_SIZEOF_LINE(I) #define niele(I) IM_IMAGE_N_ELEMENTS(I) #define lskip(B) IM_REGION_LSKIP(B) #define nele(B) IM_REGION_N_ELEMENTS(B) #define rsize(B) IM_REGION_SIZEOF_LINE(B) #define addr(B,X,Y) IM_REGION_ADDR(B,X,Y) #ifndef MAX #define MAX(A,B) IM_MAX(A, B) #define MIN(A,B) IM_MIN(A, B) #endif /*MAX*/ #define CLIP(A,V,B) IM_CLIP(A, V, B) #define NEW(IM,A) IM_NEW(IM,A) #define NUMBER(R) IM_NUMBER(R) #define ARRAY(IM,N,T) IM_ARRAY(IM,N,T) #define RINT( R ) IM_RINT( R ) #define CLIP_UCHAR( V, SEQ ) IM_CLIP_UCHAR( V, SEQ ) #define CLIP_USHORT( V, SEQ ) IM_CLIP_USHORT( V, SEQ ) #define CLIP_CHAR( V, SEQ ) IM_CLIP_CHAR( V, SEQ ) #define CLIP_SHORT( V, SEQ ) IM_CLIP_SHORT( V, SEQ ) #define CLIP_NONE( V, SEQ ) IM_CLIP_NONE( V, SEQ ) #define right(R) IM_RECT_RIGHT(R) #define bottom(R) IM_RECT_BOTTOM(R) #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_DEPRECATED_H*/ vips-8.2.2/libvips/include/vips/util.h0000664000175000017500000002143612651703761014647 00000000000000/* Various useful definitions. * * J.Cupitt, 8/4/93 * 15/7/96 JC * - C++ stuff added */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_UTIL_H #define VIPS_UTIL_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #include #include /* Some platforms don't have M_PI :-( */ #define VIPS_PI (3.14159265358979323846) /* Convert degrees->rads and vice-versa. */ #define VIPS_RAD( R ) (((R) / 360.0) * 2.0 * VIPS_PI) #define VIPS_DEG( A ) (((A) / (2.0 * VIPS_PI)) * 360.0) #define VIPS_MAX( A, B ) ((A) > (B) ? (A) : (B)) #define VIPS_MIN( A, B ) ((A) < (B) ? (A) : (B)) #define VIPS_ABS( X ) (((X) >= 0) ? (X) : -(X)) #define VIPS_CLIP( A, V, B ) VIPS_MAX( (A), VIPS_MIN( (B), (V) ) ) #define VIPS_NUMBER( R ) ((int) (sizeof(R) / sizeof(R[0]))) /* The built-in isnan and isinf functions provided by gcc 4+ and clang are * up to 7x faster than their libc equivalent included from . */ #if defined(__clang__) || (__GNUC__ >= 4) #define VIPS_ISNAN( V ) __builtin_isnan( V ) #define VIPS_ISINF( V ) __builtin_isinf( V ) #define VIPS_FLOOR( V ) __builtin_floor( V ) #define VIPS_CEIL( V ) __builtin_ceil( V ) #define VIPS_RINT( V ) __builtin_rint( V ) #define VIPS_FABS( V ) __builtin_fabs( V ) #define VIPS_FMAX( A, B ) __builtin_fmax( A, B ) #define VIPS_FMIN( A, B ) __builtin_fmin( A, B ) #else #define VIPS_ISNAN( V ) isnan( V ) #define VIPS_ISINF( V ) isinf( V ) #define VIPS_FLOOR( V ) floor( V ) #define VIPS_CEIL( V ) ceil( V ) #define VIPS_RINT( R ) ((int) ((R) > 0 ? ((R) + 0.5) : ((R) - 0.5))) #define VIPS_FABS( V ) VIPS_FABS( V ) #define VIPS_FMAX( A, B ) VIPS_MAX( A, B ) #define VIPS_FMIN( A, B ) VIPS_MIN( A, B ) #endif #define VIPS_FCLIP( A, V, B ) VIPS_FMAX( (A), VIPS_FMIN( (B), (V) ) ) #define VIPS_SWAP( TYPE, A, B ) \ G_STMT_START { \ TYPE t = (A); \ (A) = (B); \ (B) = t; \ } G_STMT_END /* Duff's device. Do OPERation N times in a 16-way unrolled loop. */ #define VIPS_UNROLL( N, OPER ) \ G_STMT_START { \ if( (N) ) { \ int duff_count = ((N) + 15) / 16; \ \ switch( (N) % 16 ) { \ case 0: do { OPER; \ case 15: OPER; \ case 14: OPER; \ case 13: OPER; \ case 12: OPER; \ case 11: OPER; \ case 10: OPER; \ case 9: OPER; \ case 8: OPER; \ case 7: OPER; \ case 6: OPER; \ case 5: OPER; \ case 4: OPER; \ case 3: OPER; \ case 2: OPER; \ case 1: OPER; \ } while( --duff_count > 0 ); \ } \ } \ } G_STMT_END /* Various integer range clips. Record over/under flows. */ #define VIPS_CLIP_UCHAR( V, SEQ ) \ G_STMT_START { \ if( (V) < 0 ) { \ (SEQ)->underflow++; \ (V) = 0; \ } \ else if( (V) > UCHAR_MAX ) { \ (SEQ)->overflow++; \ (V) = UCHAR_MAX; \ } \ } G_STMT_END #define VIPS_CLIP_CHAR( V, SEQ ) \ G_STMT_START { \ if( (V) < SCHAR_MIN ) { \ (SEQ)->underflow++; \ (V) = SCHAR_MIN; \ } \ else if( (V) > SCHAR_MAX ) { \ (SEQ)->overflow++; \ (V) = SCHAR_MAX; \ } \ } G_STMT_END #define VIPS_CLIP_USHORT( V, SEQ ) \ G_STMT_START { \ if( (V) < 0 ) { \ (SEQ)->underflow++; \ (V) = 0; \ } \ else if( (V) > USHRT_MAX ) { \ (SEQ)->overflow++; \ (V) = USHRT_MAX; \ } \ } G_STMT_END #define VIPS_CLIP_SHORT( V, SEQ ) \ G_STMT_START { \ if( (V) < SHRT_MIN ) { \ (SEQ)->underflow++; \ (V) = SHRT_MIN; \ } \ else if( (V) > SHRT_MAX ) { \ (SEQ)->overflow++; \ (V) = SHRT_MAX; \ } \ } G_STMT_END #define VIPS_CLIP_UINT( V, SEQ ) \ G_STMT_START { \ if( (V) < 0 ) { \ (SEQ)->underflow++; \ (V) = 0; \ } \ } G_STMT_END #define VIPS_CLIP_NONE( V, SEQ ) {} /* Not all platforms have PATH_MAX (eg. Hurd) and we don't need a platform one * anyway, just a static buffer big enough for almost any path. */ #define VIPS_PATH_MAX (4096) const char *vips_enum_string( GType enm, int value ); const char *vips_enum_nick( GType enm, int value ); int vips_enum_from_nick( const char *domain, GType type, const char *str ); int vips_flags_from_nick( const char *domain, GType type, const char *nick ); gboolean vips_slist_equal( GSList *l1, GSList *l2 ); void *vips_slist_map2( GSList *list, VipsSListMap2Fn fn, void *a, void *b ); void *vips_slist_map2_rev( GSList *list, VipsSListMap2Fn fn, void *a, void *b ); void *vips_slist_map4( GSList *list, VipsSListMap4Fn fn, void *a, void *b, void *c, void *d ); void *vips_slist_fold2( GSList *list, void *start, VipsSListFold2Fn fn, void *a, void *b ); GSList *vips_slist_filter( GSList *list, VipsSListMap2Fn fn, void *a, void *b ); void vips_slist_free_all( GSList *list ); void *vips_map_equal( void *a, void *b ); void *vips_hash_table_map( GHashTable *hash, VipsSListMap2Fn fn, void *a, void *b ); char *vips_strncpy( char *dest, const char *src, int n ); char *vips_strrstr( const char *haystack, const char *needle ); gboolean vips_ispostfix( const char *a, const char *b ); gboolean vips_isprefix( const char *a, const char *b ); char *vips_break_token( char *str, const char *brk ); void vips__chomp( char *str ); int vips_vsnprintf( char *str, size_t size, const char *format, va_list ap ); int vips_snprintf( char *str, size_t size, const char *format, ... ) __attribute__((format(printf, 3, 4))); int vips_filename_suffix_match( const char *path, const char *suffixes[] ); gint64 vips_file_length( int fd ); int vips__write( int fd, const void *buf, size_t count ); FILE *vips__file_open_read( const char *filename, const char *fallback_dir, gboolean text_mode ); FILE *vips__file_open_write( const char *filename, gboolean text_mode ); char *vips__file_read( FILE *fp, const char *name, size_t *length_out ); char *vips__file_read_name( const char *name, const char *fallback_dir, size_t *length_out ); int vips__file_write( void *data, size_t size, size_t nmemb, FILE *stream ); int vips__get_bytes( const char *filename, unsigned char buf[], int len ); int vips__fgetc( FILE *fp ); GValue *vips__gvalue_ref_string_new( const char *text ); void vips__gslist_gvalue_free( GSList *list ); GSList *vips__gslist_gvalue_copy( const GSList *list ); GSList *vips__gslist_gvalue_merge( GSList *a, const GSList *b ); char *vips__gslist_gvalue_get( const GSList *list ); int vips__seek( int fd, gint64 pos ); int vips__ftruncate( int fd, gint64 pos ); int vips_existsf( const char *name, ... ) __attribute__((format(printf, 1, 2))); int vips_mkdirf( const char *name, ... ) __attribute__((format(printf, 1, 2))); int vips_rmdirf( const char *name, ... ) __attribute__((format(printf, 1, 2))); int vips_rename( const char *old_name, const char *new_name ); FILE *vips_popenf( const char *fmt, const char *mode, ... ) __attribute__((format(printf, 1, 3))); /** * VipsToken: * @VIPS_TOKEN_LEFT: left bracket * @VIPS_TOKEN_RIGHT: right bracket * @VIPS_TOKEN_STRING: string constant * @VIPS_TOKEN_EQUALS: equals sign * @VIPS_TOKEN_COMMA: comma * * Tokens returned by the vips lexical analyzer, see vips__token_get(). This * is used to parse option strings for arguments. * * Left and right brackets can be any of (, {, [, <. * * Strings may be in double quotes, and may contain escaped quote characters, * for example string, "string" and "str\"ing". * */ typedef enum { VIPS_TOKEN_LEFT = 1, VIPS_TOKEN_RIGHT, VIPS_TOKEN_STRING, VIPS_TOKEN_EQUALS, VIPS_TOKEN_COMMA } VipsToken; const char *vips__token_get( const char *buffer, VipsToken *token, char *string, int size ); const char *vips__token_must( const char *buffer, VipsToken *token, char *string, int size ); const char *vips__token_need( const char *buffer, VipsToken need_token, char *string, int size ); const char *vips__find_rightmost_brackets( const char *p ); void vips__filename_split8( const char *name, char *filename, char *option_string ); int vips_ispoweroftwo( int p ); int vips_amiMSBfirst( void ); char *vips__temp_name( const char *format ); void vips__change_suffix( const char *name, char *out, int mx, const char *new_suff, const char **olds, int nolds ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_UTIL_H*/ vips-8.2.2/libvips/include/vips/convolution.h0000664000175000017500000000353212530402247016235 00000000000000/* convolution.h * * 20/9/09 * - from proto.h */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_CONVOLUTION_H #define IM_CONVOLUTION_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ typedef enum { VIPS_COMBINE_MAX, VIPS_COMBINE_SUM, VIPS_COMBINE_LAST } VipsCombine; int vips_conv( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_compass( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_convsep( VipsImage *in, VipsImage **out, VipsImage *mask, ... ) __attribute__((sentinel)); int vips_sharpen( VipsImage *in, VipsImage **out, ... ) __attribute__((sentinel)); int vips_gaussblur( VipsImage *in, VipsImage **out, double sigma, ... ) __attribute__((sentinel)); int vips_spcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) __attribute__((sentinel)); int vips_fastcor( VipsImage *in, VipsImage *ref, VipsImage **out, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_CONVOLUTION_H*/ vips-8.2.2/libvips/include/vips/foreign.h0000664000175000017500000004107612620616171015317 00000000000000/* Base type for supported image formats. Subclass this to add a new * format. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_FOREIGN_H #define VIPS_FOREIGN_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_TYPE_FOREIGN (vips_foreign_get_type()) #define VIPS_FOREIGN( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FOREIGN, VipsForeign )) #define VIPS_FOREIGN_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FOREIGN, VipsForeignClass)) #define VIPS_IS_FOREIGN( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN )) #define VIPS_IS_FOREIGN_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN )) #define VIPS_FOREIGN_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FOREIGN, VipsForeignClass )) typedef struct _VipsForeign { VipsOperation parent_object; /*< public >*/ } VipsForeign; typedef struct _VipsForeignClass { VipsOperationClass parent_class; /*< public >*/ /* Loop over formats in this order, default 0. We need this because * some formats can be read by several loaders (eg. tiff can be read * by the libMagick loader as well as by the tiff loader), and we want * to make sure the better loader comes first. */ int priority; /* Null-terminated list of recommended suffixes, eg. ".tif", ".tiff". * This can be used by both load and save, so it's in the base class. */ const char **suffs; } VipsForeignClass; GType vips_foreign_get_type( void ); /* Map over and find formats. This uses type introspection to loop over * subclasses of VipsForeign. */ void *vips_foreign_map( const char *base, VipsSListMap2Fn fn, void *a, void *b ); /* Image file load properties. * * Keep in sync with the deprecated VipsFormatFlags, we need to be able to * cast between them. */ typedef enum /*< flags >*/ { VIPS_FOREIGN_NONE = 0, /* No flags set */ VIPS_FOREIGN_PARTIAL = 1, /* Lazy read OK (eg. tiled tiff) */ VIPS_FOREIGN_BIGENDIAN = 2, /* Most-significant byte first */ VIPS_FOREIGN_SEQUENTIAL = 4, /* Top-to-bottom lazy read OK */ VIPS_FOREIGN_ALL = 7 /* All flags set */ } VipsForeignFlags; #define VIPS_TYPE_FOREIGN_LOAD (vips_foreign_load_get_type()) #define VIPS_FOREIGN_LOAD( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FOREIGN_LOAD, VipsForeignLoad )) #define VIPS_FOREIGN_LOAD_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FOREIGN_LOAD, VipsForeignLoadClass)) #define VIPS_IS_FOREIGN_LOAD( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN_LOAD )) #define VIPS_IS_FOREIGN_LOAD_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN_LOAD )) #define VIPS_FOREIGN_LOAD_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FOREIGN_LOAD, VipsForeignLoadClass )) typedef struct _VipsForeignLoad { VipsForeign parent_object; /*< private >*/ /* Open to disc (default is to open to memory). */ gboolean disc; /* Type of access upstream wants and the loader must supply. */ VipsAccess access; /* Flags for this load operation. */ VipsForeignFlags flags; /* Deprecated and unused, just here for compat. */ gboolean sequential; /*< public >*/ /* The image we generate. This must be set by ->header(). */ VipsImage *out; /* The behind-the-scenes real image we decompress to. This can be a * disc file or a memory buffer. This must be set by ->load(). */ VipsImage *real; /* Set this to tag the operation as nocache. */ gboolean nocache; } VipsForeignLoad; typedef struct _VipsForeignLoadClass { VipsForeignClass parent_class; /*< public >*/ /* Is a file in this format. * * This function should return %TRUE if the file contains an image of * this type. If you don't define this function, #VipsForeignLoad * will use @suffs instead. */ gboolean (*is_a)( const char *filename ); /* Is a buffer in this format. * * This function should return %TRUE if the buffer contains an image of * this type. */ gboolean (*is_a_buffer)( const void *data, size_t size ); /* Get the flags from a filename. * * This function should examine the file and return a set * of flags. If you don't define it, vips will default to 0 (no flags * set). * * This operation is necessary for vips7 compatibility. */ VipsForeignFlags (*get_flags_filename)( const char *filename ); /* Get the flags for this load operation. Images can be loaded from * (for example) memory areas rather than files, so you can't just use * @get_flags_filename(). */ VipsForeignFlags (*get_flags)( VipsForeignLoad *load ); /* Do the minimum read we can. * * Set the header fields in @out from @filename. If you can read the * whole image as well with no performance cost (as with vipsload), * or if your loader does not support reading only the header, read * the entire image in this method and leave @load() NULL. * * @header() needs to set the dhint on the image .. otherwise you get * the default SMALLTILE. * * Return 0 for success, -1 for error, setting * vips_error(). */ int (*header)( VipsForeignLoad *load ); /* Read the whole image into @real. The pixels will get copied to @out * later. * * You can omit this method if you define a @header() method which * loads the whole file. * * Return 0 for success, -1 for error, setting * vips_error(). */ int (*load)( VipsForeignLoad *load ); } VipsForeignLoadClass; GType vips_foreign_load_get_type( void ); const char *vips_foreign_find_load( const char *filename ); const char *vips_foreign_find_load_buffer( const void *data, size_t size ); VipsForeignFlags vips_foreign_flags( const char *loader, const char *filename ); gboolean vips_foreign_is_a( const char *loader, const char *filename ); gboolean vips_foreign_is_a_buffer( const char *loader, const void *data, size_t size ); #define VIPS_TYPE_FOREIGN_SAVE (vips_foreign_save_get_type()) #define VIPS_FOREIGN_SAVE( obj ) \ (G_TYPE_CHECK_INSTANCE_CAST( (obj), \ VIPS_TYPE_FOREIGN_SAVE, VipsForeignSave )) #define VIPS_FOREIGN_SAVE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_CAST( (klass), \ VIPS_TYPE_FOREIGN_SAVE, VipsForeignSaveClass)) #define VIPS_IS_FOREIGN_SAVE( obj ) \ (G_TYPE_CHECK_INSTANCE_TYPE( (obj), VIPS_TYPE_FOREIGN_SAVE )) #define VIPS_IS_FOREIGN_SAVE_CLASS( klass ) \ (G_TYPE_CHECK_CLASS_TYPE( (klass), VIPS_TYPE_FOREIGN_SAVE )) #define VIPS_FOREIGN_SAVE_GET_CLASS( obj ) \ (G_TYPE_INSTANCE_GET_CLASS( (obj), \ VIPS_TYPE_FOREIGN_SAVE, VipsForeignSaveClass )) /** * VipsSaveable: * @VIPS_SAVEABLE_MONO: 1 band (eg. CSV) * @VIPS_SAVEABLE_RGB: 1 or 3 bands (eg. PPM) * @VIPS_SAVEABLE_RGBA: 1, 2, 3 or 4 bands (eg. PNG) * @VIPS_SAVEABLE_RGBA_ONLY: 3 or 4 bands (eg. WEBP) * @VIPS_SAVEABLE_RGB_CMYK: 1, 3 or 4 bands (eg. JPEG) * @VIPS_SAVEABLE_ANY: any number of bands (eg. TIFF) * * See also: #VipsForeignSave. */ typedef enum { VIPS_SAVEABLE_MONO, VIPS_SAVEABLE_RGB, VIPS_SAVEABLE_RGBA, VIPS_SAVEABLE_RGBA_ONLY, VIPS_SAVEABLE_RGB_CMYK, VIPS_SAVEABLE_ANY, VIPS_SAVEABLE_LAST } VipsSaveable; typedef struct _VipsForeignSave { VipsForeign parent_object; /* Don't attach metadata. */ gboolean strip; /* If flattening out alpha, the background colour to use. Default to * 0 (black). */ VipsArrayDouble *background; /*< public >*/ /* The image we are to save, as supplied by our caller. */ VipsImage *in; /* @in converted to a saveable format (eg. 8-bit RGB) according to the * instructions you give in the class fields below. * * This is the image you should actually write to the output. */ VipsImage *ready; } VipsForeignSave; typedef struct _VipsForeignSaveClass { VipsForeignClass parent_class; /*< public >*/ /* How this format treats bands. * * @saveable describes the bands that your saver can handle. For * example, PPM images can have 1 or 3 bands (mono or RGB), so it * uses #VIPS_SAVEABLE_RGB. */ VipsSaveable saveable; /* How this format treats band formats. * * @format_table describes the band formats that your saver can * handle. For each of the 10 #VipsBandFormat values, the array * should give the format your saver will accept. */ VipsBandFormat *format_table; /* The set of coding types this format can save. For example, jpeg can * only save NONE, so has NONE TRUE and RAD and LABQ FALSE. * * Default NONE TRUE, RAD and LABQ FALSE. */ gboolean coding[VIPS_CODING_LAST]; } VipsForeignSaveClass; GType vips_foreign_save_get_type( void ); const char *vips_foreign_find_save( const char *filename ); const char *vips_foreign_find_save_buffer( const char *suffix ); int vips_vipsload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_vipssave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_openslideload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_jpegload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_jpegload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_jpegsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_jpegsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); int vips_jpegsave_mime( VipsImage *in, ... ) __attribute__((sentinel)); int vips_webpload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_webpload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_webpsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_webpsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); int vips_webpsave_mime( VipsImage *in, ... ) __attribute__((sentinel)); /** * VipsForeignTiffCompression: * @VIPS_FOREIGN_TIFF_COMPRESSION_NONE: no compression * @VIPS_FOREIGN_TIFF_COMPRESSION_JPEG: jpeg compression * @VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE: deflate (zip) compression * @VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS: packbits compression * @VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4: fax4 compression * @VIPS_FOREIGN_TIFF_COMPRESSION_LZW: LZW compression * * The compression types supported by the tiff writer. * * Use @Q to set the jpeg compression level, default 75. * * Use @prediction to set the lzw or deflate prediction, default none. */ typedef enum { VIPS_FOREIGN_TIFF_COMPRESSION_NONE, VIPS_FOREIGN_TIFF_COMPRESSION_JPEG, VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE, VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS, VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4, VIPS_FOREIGN_TIFF_COMPRESSION_LZW, VIPS_FOREIGN_TIFF_COMPRESSION_LAST } VipsForeignTiffCompression; /** * VipsForeignTiffPredictor: * @VIPS_FOREIGN_TIFF_PREDICTOR_NONE: no prediction * @VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL: horizontal differencing * @VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT: float predictor * * The predictor can help deflate and lzw compression. The values are fixed by * the tiff library. */ typedef enum { VIPS_FOREIGN_TIFF_PREDICTOR_NONE = 1, VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL = 2, VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT = 3, VIPS_FOREIGN_TIFF_PREDICTOR_LAST } VipsForeignTiffPredictor; /** * VipsForeignTiffResunit: * @VIPS_FOREIGN_TIFF_RESUNIT_CM: use centimeters * @VIPS_FOREIGN_TIFF_RESUNIT_INCH: use inches * * Use inches or centimeters as the resolution unit for a tiff file. */ typedef enum { VIPS_FOREIGN_TIFF_RESUNIT_CM, VIPS_FOREIGN_TIFF_RESUNIT_INCH, VIPS_FOREIGN_TIFF_RESUNIT_LAST } VipsForeignTiffResunit; int vips_tiffload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tiffload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_tiffsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_openexrload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_fitsload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_fitssave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_analyzeload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_rawload( const char *filename, VipsImage **out, int width, int height, int bands, ... ) __attribute__((sentinel)); int vips_rawsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_rawsave_fd( VipsImage *in, int fd, ... ) __attribute__((sentinel)); int vips_csvload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_csvsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_matrixload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_matrixsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_matrixprint( VipsImage *in, ... ) __attribute__((sentinel)); int vips_magickload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_magickload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); /** * VipsForeignPngFilter: * @VIPS_FOREIGN_PNG_FILTER_NONE: no filtering * @VIPS_FOREIGN_PNG_FILTER_SUB: difference to the left * @VIPS_FOREIGN_PNG_FILTER_UP: difference up * @VIPS_FOREIGN_PNG_FILTER_AVG: average of left and up * @VIPS_FOREIGN_PNG_FILTER_PAETH: pick best neighbor predictor automatically * @VIPS_FOREIGN_PNG_FILTER_ALL: adaptive * * http://www.w3.org/TR/PNG-Filters.html * The values mirror those of png.h in libpng. */ typedef enum /*< flags >*/ { VIPS_FOREIGN_PNG_FILTER_NONE = 0x08, VIPS_FOREIGN_PNG_FILTER_SUB = 0x10, VIPS_FOREIGN_PNG_FILTER_UP = 0x20, VIPS_FOREIGN_PNG_FILTER_AVG = 0x40, VIPS_FOREIGN_PNG_FILTER_PAETH = 0x80, VIPS_FOREIGN_PNG_FILTER_ALL = 0xEA } VipsForeignPngFilter; int vips_pngload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_pngload_buffer( void *buf, size_t len, VipsImage **out, ... ) __attribute__((sentinel)); int vips_pngsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_pngsave_buffer( VipsImage *in, void **buf, size_t *len, ... ) __attribute__((sentinel)); int vips_ppmload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_ppmsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); int vips_matload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_radload( const char *filename, VipsImage **out, ... ) __attribute__((sentinel)); int vips_radsave( VipsImage *in, const char *filename, ... ) __attribute__((sentinel)); /** * VipsForeignDzLayout: * @VIPS_FOREIGN_DZ_LAYOUT_DZ: use DeepZoom directory layout * @VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY: use Zoomify directory layout * @VIPS_FOREIGN_DZ_LAYOUT_GOOGLE: use Google maps directory layout * * What directory layout and metadata standard to use. */ typedef enum { VIPS_FOREIGN_DZ_LAYOUT_DZ, VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY, VIPS_FOREIGN_DZ_LAYOUT_GOOGLE, VIPS_FOREIGN_DZ_LAYOUT_LAST } VipsForeignDzLayout; /** * VipsForeignDzDepth: * @VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL: create layers down to 1x1 pixel * @VIPS_FOREIGN_DZ_DEPTH_ONETILE: create layers down to 1x1 tile * @VIPS_FOREIGN_DZ_DEPTH_ONE: only create a single layer * * How many pyramid layers to create. */ typedef enum { VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL, VIPS_FOREIGN_DZ_DEPTH_ONETILE, VIPS_FOREIGN_DZ_DEPTH_ONE, VIPS_FOREIGN_DZ_DEPTH_LAST } VipsForeignDzDepth; /** * VipsForeignDzContainer: * @VIPS_FOREIGN_DZ_CONTAINER_FS: write tiles to the filesystem * @VIPS_FOREIGN_DZ_CONTAINER_ZIP: write tiles to a zip file * * How many pyramid layers to create. */ typedef enum { VIPS_FOREIGN_DZ_CONTAINER_FS, VIPS_FOREIGN_DZ_CONTAINER_ZIP, VIPS_FOREIGN_DZ_CONTAINER_LAST } VipsForeignDzContainer; int vips_dzsave( VipsImage *in, const char *name, ... ) __attribute__((sentinel)); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_FOREIGN_H*/ vips-8.2.2/libvips/include/vips/transform.h0000664000175000017500000000477412530402247015702 00000000000000/* Affine transforms. */ /* Copyright (C) 1991-2003 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_TRANSFORM_H #define VIPS_TRANSFORM_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ /* Params for an affine transformation. */ typedef struct { /* Area of input we can use. This can be smaller than the real input * image: we expand the input to add extra pixels for interpolation. */ VipsRect iarea; /* The area of the output we've been asked to generate. left/top can * be negative. */ VipsRect oarea; /* The transform. */ double a, b, c, d; double idx, idy; double odx, ody; double ia, ib, ic, id; /* Inverse of matrix abcd */ } VipsTransformation; void vips__transform_init( VipsTransformation *trn ); int vips__transform_calc_inverse( VipsTransformation *trn ); int vips__transform_isidentity( const VipsTransformation *trn ); int vips__transform_add( const VipsTransformation *in1, const VipsTransformation *in2, VipsTransformation *out ); void vips__transform_print( const VipsTransformation *trn ); void vips__transform_forward_point( const VipsTransformation *trn, const double x, const double y, double *ox, double *oy ); void vips__transform_invert_point( const VipsTransformation *trn, const double x, const double y, double *ox, double *oy ); void vips__transform_forward_rect( const VipsTransformation *trn, const VipsRect *in, VipsRect *out ); void vips__transform_invert_rect( const VipsTransformation *trn, const VipsRect *in, VipsRect *out ); void vips__transform_set_area( VipsTransformation * ); int vips__affine( VipsImage *in, VipsImage *out, VipsTransformation *trn ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*VIPS_TRANSFORM_H*/ vips-8.2.2/libvips/include/vips/memory.h0000664000175000017500000000437612530402247015175 00000000000000/* memory utilities * * J.Cupitt, 8/4/93 */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef VIPS_MEMORY_H #define VIPS_MEMORY_H #ifdef __cplusplus extern "C" { #endif /*__cplusplus*/ #define VIPS_FREEF( F, S ) G_STMT_START { \ if( S ) { \ (void) F( (S) ); \ (S) = 0; \ } \ } G_STMT_END #define VIPS_FREE( S ) VIPS_FREEF( g_free, (S) ); #define VIPS_SETSTR( S, V ) \ G_STMT_START { \ const char *sst = (V); \ \ if( (S) != sst ) { \ if( !(S) || !sst || strcmp( (S), sst ) != 0 ) { \ VIPS_FREE( S ); \ if( sst ) \ (S) = g_strdup( sst ); \ } \ } \ } G_STMT_END #define VIPS_NEW( OBJ, T ) \ ((T *) vips_malloc( VIPS_OBJECT( OBJ ), sizeof( T ))) #define VIPS_ARRAY( OBJ, N, T ) \ ((T *) vips_malloc( VIPS_OBJECT( OBJ ), (N) * sizeof( T ))) void *vips_malloc( VipsObject *object, size_t size ); char *vips_strdup( VipsObject *object, const char *str ); int vips_free( void *buf ); void vips_tracked_free( void *s ); void *vips_tracked_malloc( size_t size ); size_t vips_tracked_get_mem( void ); size_t vips_tracked_get_mem_highwater( void ); int vips_tracked_get_allocs( void ); int vips_tracked_open( const char *pathname, int flags, ... ); int vips_tracked_close( int fd ); int vips_tracked_get_files( void ); #ifdef __cplusplus } #endif /*__cplusplus*/ #endif /*IM_MEMORY_H*/ vips-8.2.2/libvips/include/Makefile.am0000664000175000017500000000002112530402247014546 00000000000000 SUBDIRS = vips vips-8.2.2/libvips/include/Makefile.in0000664000175000017500000005320312651721157014601 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvips/include ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ SUBDIRS = vips all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/include/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvips/Makefile.in0000664000175000017500000011216412651721156013157 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_DEPRECATED_TRUE@am__append_1 = deprecated @ENABLE_DEPRECATED_TRUE@am__append_2 = deprecated/libdeprecated.la @ENABLE_DEPRECATED_FALSE@am__append_3 = deprecated @HAVE_INTROSPECTION_TRUE@noinst_PROGRAMS = introspect$(EXEEXT) @HAVE_INTROSPECTION_TRUE@am__append_4 = Vips-8.0.gir @HAVE_INTROSPECTION_TRUE@am__append_5 = $(gir_DATA) $(typelib_DATA) subdir = libvips ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" \ "$(DESTDIR)$(typelibdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libvips_la_DEPENDENCIES = resample/libresample.la \ arithmetic/libarithmetic.la colour/libcolour.la \ conversion/libconversion.la convolution/libconvolution.la \ $(OPTIONAL_LIB) foreign/libforeign.la freqfilt/libfreqfilt.la \ histogram/libhistogram.la draw/libdraw.la \ iofuncs/libiofuncs.la morphology/libmorphology.la \ mosaicing/libmosaicing.la create/libcreate.la \ video/libvideo.la am_libvips_la_OBJECTS = am__dirstamp = $(am__leading_dot)dirstamp libvips_la_OBJECTS = $(am_libvips_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libvips_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libvips_la_LDFLAGS) $(LDFLAGS) -o $@ PROGRAMS = $(noinst_PROGRAMS) am__introspect_SOURCES_DIST = introspect.c @HAVE_INTROSPECTION_TRUE@am_introspect_OBJECTS = introspect.$(OBJEXT) introspect_OBJECTS = $(am_introspect_OBJECTS) introspect_LDADD = $(LDADD) @HAVE_INTROSPECTION_TRUE@introspect_DEPENDENCIES = libvips.la AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(libvips_la_SOURCES) $(nodist_EXTRA_libvips_la_SOURCES) \ $(introspect_SOURCES) DIST_SOURCES = $(libvips_la_SOURCES) $(am__introspect_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(gir_DATA) $(typelib_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = include foreign arithmetic resample colour conversion \ convolution deprecated freqfilt histogram draw iofuncs \ morphology mosaicing create video . am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ OPTIONAL_COMPILE_DIR = $(am__append_1) OPTIONAL_DIST_DIR = $(am__append_3) OPTIONAL_LIB = $(am__append_2) SUBDIRS = \ include \ foreign \ arithmetic \ resample \ colour \ conversion \ convolution \ $(OPTIONAL_COMPILE_DIR) \ freqfilt \ histogram \ draw \ iofuncs \ morphology \ mosaicing \ create \ video \ . lib_LTLIBRARIES = libvips.la # empty means default to C linking libvips_la_SOURCES = # make sure we link the top-level with c++ nodist_EXTRA_libvips_la_SOURCES = resample/dummy2.cc # DLLs need dependant libs there too ... put @VIPS_LIBS@ at the end libvips_la_LIBADD = \ resample/libresample.la \ arithmetic/libarithmetic.la \ colour/libcolour.la \ conversion/libconversion.la \ convolution/libconvolution.la \ $(OPTIONAL_LIB) \ foreign/libforeign.la \ freqfilt/libfreqfilt.la \ histogram/libhistogram.la \ draw/libdraw.la \ iofuncs/libiofuncs.la \ morphology/libmorphology.la \ mosaicing/libmosaicing.la \ create/libcreate.la \ video/libvideo.la \ @VIPS_LIBS@ libvips_la_LDFLAGS = \ -no-undefined \ -version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ EXTRA_DIST = \ $(OPTIONAL_DIST_DIR) CLEANFILES = $(am__append_5) INTROSPECTION_GIRS = $(am__append_4) INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) @HAVE_INTROSPECTION_TRUE@AM_CPPFLAGS = \ @HAVE_INTROSPECTION_TRUE@ -I${top_srcdir}/libvips/include \ @HAVE_INTROSPECTION_TRUE@ @VIPS_CFLAGS@ \ @HAVE_INTROSPECTION_TRUE@ @VIPS_INCLUDES@ \ @HAVE_INTROSPECTION_TRUE@ @INTROSPECTION_CFLAGS@ @HAVE_INTROSPECTION_TRUE@AM_LDFLAGS = \ @HAVE_INTROSPECTION_TRUE@ @INTROSPECTION_LIBS@ \ @HAVE_INTROSPECTION_TRUE@ @LDFLAGS@ @HAVE_INTROSPECTION_TRUE@LDADD = @INTROSPECTION_LIBS@ @VIPS_CFLAGS@ libvips.la @VIPS_LIBS@ @HAVE_INTROSPECTION_TRUE@introspect_SOURCES = \ @HAVE_INTROSPECTION_TRUE@ introspect.c # we can't get the _SOURCES lists from the subdirs directly, we get passed it # by configure instead @HAVE_INTROSPECTION_TRUE@introspection_sources = @vips_introspection_sources@ @HAVE_INTROSPECTION_TRUE@Vips_8_0_gir_INCLUDES = GObject-2.0 @HAVE_INTROSPECTION_TRUE@Vips_8_0_gir_CFLAGS = $(INCLUDES) -I${top_srcdir}/libvips/include @HAVE_INTROSPECTION_TRUE@Vips_8_0_gir_LIBS = libvips.la @HAVE_INTROSPECTION_TRUE@Vips_8_0_gir_FILES = $(introspection_sources) # don't use --warn-all --verbose # we have an unusual markup with optional args and we don't want to see all # those warnings @HAVE_INTROSPECTION_TRUE@Vips_8_0_gir_SCANNERFLAGS = \ @HAVE_INTROSPECTION_TRUE@ --program=./introspect \ @HAVE_INTROSPECTION_TRUE@ --identifier-prefix=Vips \ @HAVE_INTROSPECTION_TRUE@ --identifier-prefix=vips \ @HAVE_INTROSPECTION_TRUE@ --symbol-prefix=vips @HAVE_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0 @HAVE_INTROSPECTION_TRUE@gir_DATA = $(INTROSPECTION_GIRS) @HAVE_INTROSPECTION_TRUE@typelibdir = $(libdir)/girepository-1.0 @HAVE_INTROSPECTION_TRUE@typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) all: all-recursive .SUFFIXES: .SUFFIXES: .c .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvips/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvips/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } resample/$(am__dirstamp): @$(MKDIR_P) resample @: > resample/$(am__dirstamp) resample/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) resample/$(DEPDIR) @: > resample/$(DEPDIR)/$(am__dirstamp) resample/dummy2.lo: resample/$(am__dirstamp) \ resample/$(DEPDIR)/$(am__dirstamp) libvips.la: $(libvips_la_OBJECTS) $(libvips_la_DEPENDENCIES) $(EXTRA_libvips_la_DEPENDENCIES) $(AM_V_CXXLD)$(libvips_la_LINK) -rpath $(libdir) $(libvips_la_OBJECTS) $(libvips_la_LIBADD) $(LIBS) clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list introspect$(EXEEXT): $(introspect_OBJECTS) $(introspect_DEPENDENCIES) $(EXTRA_introspect_DEPENDENCIES) @rm -f introspect$(EXEEXT) $(AM_V_CCLD)$(LINK) $(introspect_OBJECTS) $(introspect_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f resample/*.$(OBJEXT) -rm -f resample/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/introspect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@resample/$(DEPDIR)/dummy2.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf resample/.libs resample/_libs install-girDATA: $(gir_DATA) @$(NORMAL_INSTALL) @list='$(gir_DATA)'; test -n "$(girdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(girdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(girdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(girdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(girdir)" || exit $$?; \ done uninstall-girDATA: @$(NORMAL_UNINSTALL) @list='$(gir_DATA)'; test -n "$(girdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(girdir)'; $(am__uninstall_files_from_dir) install-typelibDATA: $(typelib_DATA) @$(NORMAL_INSTALL) @list='$(typelib_DATA)'; test -n "$(typelibdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(typelibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(typelibdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(typelibdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(typelibdir)" || exit $$?; \ done uninstall-typelibDATA: @$(NORMAL_UNINSTALL) @list='$(typelib_DATA)'; test -n "$(typelibdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(typelibdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f resample/$(DEPDIR)/$(am__dirstamp) -rm -f resample/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) resample/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-girDATA install-typelibDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) resample/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-girDATA uninstall-libLTLIBRARIES \ uninstall-typelibDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libLTLIBRARIES \ clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-girDATA install-html install-html-am \ install-info install-info-am install-libLTLIBRARIES \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip install-typelibDATA installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-girDATA \ uninstall-libLTLIBRARIES uninstall-typelibDATA .PRECIOUS: Makefile -include $(INTROSPECTION_MAKEFILE) # we make the vips8 API @HAVE_INTROSPECTION_TRUE@Vips-8.0.gir: introspect # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/man/0000775000175000017500000000000012651721506010267 500000000000000vips-8.2.2/man/vipsedit.10000664000175000017500000000245212530402247012115 00000000000000.TH VIPSEDIT 1 "30 June 1993" .SH NAME vipsedit \- edit header of a vips image file .SH SYNOPSIS .B vipsedit [OPTION...] vipsfile .SH DESCRIPTION .B vipsedit alters a VIPS image file's header. This is useful for setting the resolution, for example. The options are: -x, --xsize=N set Xsize to N -y, --ysize=N set Ysize to N -b, --bands=N set Bands to N -f, --format=F set BandFmt to F (eg. uchar) -i, --interpretation=I set Interpretation to I (eg. xyz) -c, --coding=C set Coding to C (eg. labq) -X, --xres=R set Xres to R pixels/mm -Y, --yres=R set Yres to R pixels/mm -u, --xoffset=N set Xoffset to N -v, --yoffset=N set Yoffset to N -e, --setext replace extension block with stdin Be very careful when changing Xsize, Ysize, BandFmt or Bands. vipsedit does no checking! .SH EXAMPLES To set the Xsize to 512 and Bands to 6: vipsedit --xsize=512 --bands=6 fred.v or vipsedit -x 512 -b 6 fred.v Extract the XML metadata from an image with .B vipsheader(1), edit it, and reattach with .B vipsedit(1). vipsheader -f getext fred.v | sed s/banana/pineapple/ | vipsedit -e fred.v .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1) .SH COPYRIGHT K. Martinez 1993 vips-8.2.2/man/batch_image_convert.10000664000175000017500000000151012530402247014243 00000000000000.TH BATCH_IMAGE_CONVERT 1 "2 Feb 2002" .SH NAME batch_image_convert \- use VIPS to convert a set of images to a new type .SH SYNOPSIS .B batch_image_convert type image1 image2 ... .SH DESCRIPTION The first argument is the name of an image type, subsequent arguments are the names of files to be converted to that type. VIPS can usually read almost any image type, but it can only write VIPS, PNG, TIFF, PPM/PGM/PBM and JPEG. You can specify conversion parameters in the type name. For example: batch_image_convert tiff fred.jpg jim.png will convert .B fred.jpg and .B jim.png to TIFF format. batch_image_convert jpeg:95 jim.png will write jim.jpeg with a 95% quality factor. .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1), im_vips2tiff(3), im_vips2jpeg(3), im_vips2png(3), im_vips2ppm(3) vips-8.2.2/man/vipsheader.10000664000175000017500000000131512530402247012415 00000000000000.TH VIPSHEADER 1 "12 July 1990" .SH NAME vipsheader \- prints information about an image file .SH SYNOPSIS vipsheader [OPTIONS ...] files ... .SH DESCRIPTION .B vipsheader(1) prints image header fields to stdout. .SH OPTIONS .TP .B -f FIELD, --field=FIELD Print value of .B FIELD from image header. The special field name getext prints the VIPS extension block: the XML defining the image metadata. You can alter this, then reattach with .B vipsedit(1). .TP .B -a, --all Show all fields. Normally .B vipsheader just shows a one-line summary. .SH EXAMPLES $ vipsheader -f Xsize ~/pics/*.v 1024 1279 22865 1 256 .SH SEE ALSO vipsedit(1) .SH COPYRIGHT N. Dessipris .SH AUTHOR N. Dessipris \- 12/07/1990 vips-8.2.2/man/light_correct.10000664000175000017500000000240412530402247013113 00000000000000.TH LIGHT_CORRECT 1 "14 Oct 1996" .SH NAME light_correct \- correct illumination errors on set of images .SH SYNOPSIS .B light_correct grey image1 image2 image3 ... .SH DESCRIPTION The first argument should be an image of a piece of grey card, subsequent arguments should be images taken with the same lighting set-up which need correcting. The corrected images are written to files prefixed with "ic_". For example, suppose you have a directory with the following files in: example% ls dat1.1.v dat1.2.v dat2.1.v dat2.2.v dat3.1.v dat3.2.v dat4.1.v dat4.2.v grey.v then run light_correct like this: example% light_correct grey.v dat*.v to generate this: example% ls dat1.1.v dat1.2.v dat2.1.v dat2.2.v dat3.1.v dat3.2.v dat4.1.v dat4.2.v grey.v ic_dat1.1.v ic_dat1.2.v ic_dat2.1.v ic_dat2.2.v ic_dat3.1.v ic_dat3.2.v ic_dat4.1.v ic_dat4.2.v light_correct works by smoothing out the grey card image, finding grey-mean/pixel for each point, and then multiplying the result by all the following images. It also removes any .desc files it generates, to avoid problems with im_global_balance(3). .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1), vips(1) .SH COPYRIGHT The National Gallery and Birkbeck College, 1989-1996. vips-8.2.2/man/vipsthumbnail.10000664000175000017500000000630112530402247013150 00000000000000.TH VIPSTHUMBNAIL 1 "13 May 2010" .SH NAME vipsthumbnail \- make thumbnails of image files .SH SYNOPSIS .B vipsthumbnail [flags] imagefile1 imagefile2 ... .SH DESCRIPTION .B vipsthumbnail(1) processes each .B imagefile in turn, shrinking each image to fit within a 128 by 128 pixel square. The shrunk image is written to a new file named .B tn_imagefile.jpg. This program is typically faster and uses less memory than other image thumbnail programs. For example: $ vipsthumbnail fred.png jim.tif will read image files .B fred.png and .B jim.tif and write thumbnails to the files .B tn_fred.jpg and .B tn_jim.jpg. $ vipsthumbnail --size=64 -f thumbnails/%s.png fred.jpg will read image file .B fred.jpg and write a 64 x 64 pixel thumbnail to the file .B thumbnails/fred.png. .SH OPTIONS .TP .B -s N, --size=N Set the output thumbnail size to .B N x .B N pixels. You can use MxN to specify a rectangular bounding box. The image is shrunk so that it just fits within this area, images which are smaller than this are expanded. .TP .B -f FORMAT, --format=FORMAT Set the output format string. The input filename has any file type suffix removed, then that value is substitued into .B FORMAT replacing .B %s. If .B FORMAT is a relative path, the name of the input directory is prepended. In other words, any path in .B FORMAT is relative to the directory of the current input file. The default value is .B tn_%s.jpg meaning JPEG output, with .B tn_ prepended. You can add format options too, for example .B tn_%s.jpg[Q=20] will write JPEG images with Q set to 20. .TP .B -p I, --interpolator=I Resample with interpolator .B I. Use .B vips --list classes to see a list of valid interpolators. The default is .B bilinear. .TP .B -r, --sharpen=none|mild|MASKFILE Images can look a little soft after shrinking. This option lets you specify a sharpening mask. Use "none" to disable sharpening, or "mild" to sharpen lightly, or give the filename of a custom mask file to use. The default is "mild". The built-in mild sharpen mask is: 3 3 24 0 -1 -1 -1 -1 32 -1 -1 -1 -1 .TP .B -e PROFILE, --eprofile=PROFILE Export thumbnails with this ICC profile. Images are only colour-transformed if there is both an output and an input profile available. The input profile can either be embedded in the input image or supplied with the .B --iprofile option. .TP .B -i PROFILE, --iprofile=PROFILE Import images with this ICC profile, if no profile is embdedded in the image. Images are only colour-transformed if there is both an output and an input profile available. The output profile should be supplied with the .B --oprofile option. .TP .B -c, --crop Crop the output image down. The image is shrunk so as to completely fill the bounding box in both axies, then any excess is cropped off. .TP .B -d, --delete Delete the output profile from the image. This can save a small amount of space. .TP .B -v, --verbose .B vipsthumbnail(1) normally runs silently, except for warning and error messages. This option makes it print a list of the operations it performs on each image. .SH RETURN VALUE returns 0 on success and non-zero on error. Error can mean one or more conversions failed. .SH SEE ALSO vipsheader(1) vips-8.2.2/man/batch_crop.10000664000175000017500000000122112530402247012363 00000000000000.TH BATCH_CROP 1 "2 Feb 2002" .SH NAME batch_crop \- crop a set of images .SH SYNOPSIS .B batch_crop left top width height image1 image2 ... .SH DESCRIPTION The area defined by the rectangle left, top, width, height is cropped out of each of the images and saved in a file of the same name, but prefixed by "crop_". For example: batch_crop 10 10 100 100 fred.jpg jim.png will make two images, crop_fred.jpg and crop_jim.png, each of 100 by 100 pixels, taken from the corresponding input images. .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1), im_vips2tiff(3), im_vips2jpeg(3), im_vips2png(3), im_vips2ppm(3) vips-8.2.2/man/vips.10000664000175000017500000000534512530402247011253 00000000000000.TH VIPS 1 "30 June 1993" .SH NAME vips \- run vips operations from the command line .SH SYNOPSIS .B vips [options] [command] [command-options] [command-args] .SH DESCRIPTION .B vips(1) is the VIPS universal main program. You can use it to run any VIPS operation from the command line, to query the VIPS class hierarchy, and to maintain parts of the VIPS library. To run a VIPS operation, the first argument should be the name of the operation and following arguments should be the operation arguments. For example: $ vips invert lena.v lena2.v .SH OPTIONS .TP .B -l BASE-NAME, --list=BASE-NAME List operations below BASE-NAME. This prints a one-line summary of every operation in vips below the class BASE-NAME, where BASE-NAME may be a full vips class name, or a nickname. If BASE-NAME is not supplied, this will list all classes below VipsOperation. .TP .B -p PLUGIN, --plugin=PLUGIN Load PLUGIN. Note that plugins in $VIPSHOME/lib/vips-plugins-MAJOR.MINOR are loaded automatically. .TP .B -v, --version Show VIPS version. .SH COMMANDS .TP .B operation-name operation-arguments Execute a named operation, for example add. .SH EXAMPLES Run a vips8 operation. Operation options must follow the operation name. $ vips insert lena.v lena2.v out.v 0 0 --background "128 0 0" Get a "usage" message for an operation. $ vips insert insert image @sub into @main at @x, @y usage: insert main sub out x y where: main - Main input image, input VipsImage sub - Sub-image to insert into main image, input VipsImage out - Output image, output VipsImage x - Left edge of sub in main, input gint default: 0 min: -100000000, max: 100000000 y - Top edge of sub in main, input gint default: 0 min: -100000000, max: 100000000 optional arguments: expand - Expand output to hold all of both inputs, input gboolean default: false background - Colour for new pixels, input VipsArrayDouble operation flags: sequential List all draw operations. $ vips -l draw VipsDraw (draw), draw operations VipsDrawink (drawink), draw with ink operations VipsDrawRect (draw_rect), paint a rectangle on an image VipsDrawMask (draw_mask), draw a mask on an image VipsDrawLine (draw_line), draw a line on an image VipsDrawCircle (draw_circle), draw a circle on an image VipsDrawFlood (draw_flood), flood-fill an area VipsDrawImage (draw_image), paint an image into another image VipsDrawSmudge (draw_smudge), blur a rectangle on an image .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vipsheader(1) .SH COPYRIGHT The National Gallery and Birkbeck College, 1989-1996. vips-8.2.2/man/Makefile.am0000664000175000017500000000030512530402247012233 00000000000000man_MANS = \ batch_crop.1 \ batch_image_convert.1 \ batch_rubber_sheet.1 \ vipsedit.1 \ vipsheader.1 \ light_correct.1 \ vips.1 \ vipsprofile.1 \ vipsthumbnail.1 EXTRA_DIST = ${man_MANS} vips-8.2.2/man/Makefile.in0000664000175000017500000004512012651721157012260 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = man ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ man_MANS = \ batch_crop.1 \ batch_image_convert.1 \ batch_rubber_sheet.1 \ vipsedit.1 \ vipsheader.1 \ light_correct.1 \ vips.1 \ vipsprofile.1 \ vipsthumbnail.1 EXTRA_DIST = ${man_MANS} all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign man/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/man/batch_rubber_sheet.10000664000175000017500000000137012530402247014076 00000000000000.TH BATCH_RUBBER_SHEET 1 "2 Feb 2002" .SH NAME batch_rubber_sheet \- warp a set of images with a rubber-sheet transformation .SH SYNOPSIS .B batch_rubber_sheet matrix image1 image2 ... .SH DESCRIPTION The first argument specifies a file containing the transformation, subsequent arguments are image files to be transformed. The transformed image is written to a new file, named as the old file, but with "rsc_" prepended to the file name. For example: batch_rubber_sheet lens.mat fred.jpg jim.png will read a transform from the file .B lens.mat and apply it to .B fred.jpg and .B jim.png, writing files .B rsc_fred.jpg and .B rsc_jim.png. .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO The "Image=>Rubber" menu in nip. vips-8.2.2/man/vipsprofile.10000664000175000017500000000271412530402247012631 00000000000000.TH VIPSPROFILE 1 "13 December 2013" .SH NAME vipsprofile \- analyze vips profiles .SH SYNOPSIS .B vipsprofile .SH DESCRIPTION .B vipsprofile(1) analyzes the file written by the --vips-profile option, calculates some statistics, and draws a graph of evaluation. Run any vips program with the --vips-profile option to generate a file called "vips-profile.txt". This contains timing information about CPU use, memory use and thread synchronisation. Run .B vipsprofile(1) to load this file, calculate some statistics, and draw a graph of evaluation saved to vips-profile.svg. This analysis can help track down performance problems. For example: $ vips sharpen shark.jpg x.jpg --vips-profile recording profile in vips-profile.txt $ vipsprofile reading from vips-profile.txt loaded 3622 events total time = 0.138322 name alive wait% work% unkn% memory peakm worker 20 0.069 34.5 58.9 6.65 3.14 5.56 worker 21 0.07 1.36 60.2 38.4 2.65 5.07 worker 22 0.07 33 55.8 11.1 2.62 5.04 worker 23 0.072 34.2 59.7 6.15 2.72 5.14 wbuffer 24 0.075 99 1.03 0.00401 0 0 wbuffer 25 0.075 95.6 4.39 0.00667 0 0 main 26 0.14 52.8 0 47.2 -11.1 0.787 peak memory = 21.6 MB writing to vips-profile.svg .SH RETURN VALUE returns 0 on success and non-zero on error. .SH SEE ALSO vips(1) vips-8.2.2/THANKS0000664000175000017500000000075312530402247010346 00000000000000VIPS THANKS file VIPS was originally written by Nicos Dessipris, Kirk Martinez and John Cupitt. Many people have contributed to VIPS by reporting problems, suggesting improvements, or offering code. Matthew Hanson Joe Padfield Haida Liang Ian Clarke Steve Perry Stephen Chang David Saunders Mike Westmacott Chris Hurst Jim Coddington Lou Rachel Billinge Colin White ENST Thomson-CSF We've also had very helpful funding from the European Commission and Hewlett-Packard. vips-8.2.2/INSTALL0000664000175000017500000003660512530402247010471 00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. vips-8.2.2/README.md0000664000175000017500000001741212651663124010721 00000000000000# libvips : an image processing library [![Build Status](https://secure.travis-ci.org/jcupitt/libvips.png)](http://travis-ci.org/jcupitt/libvips) [![Coverity Status](https://scan.coverity.com/projects/6503/badge.svg)](https://scan.coverity.com/projects/jcupitt-libvips) libvips is a 2D image processing library. Compared to similar libraries, [libvips runs quickly and uses little memory](http://www.vips.ecs.soton.ac.uk/index.php?title=Speed_and_Memory_Use). libvips is licensed under the LGPL 2.1+. It has around 300 operations covering arithmetic, histograms, convolutions, morphological operations, frequency filtering, colour, resampling, statistics and others. It supports a large range of numeric formats, from 8-bit int to 128-bit complex. It supports a good range of image formats, including JPEG, TIFF, PNG, WebP, FITS, Matlab, OpenEXR, DeepZoom, and OpenSlide. It can also load images via ImageMagick or GraphicsMagick. It has APIs for [C](http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/libvips/using-from-c.html) and [C++](http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/libvips/using-from-cpp.html) and comes with a [Python binding](http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/libvips/using-from-python.html) and a [command-line interface](http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/libvips/using-cli.html). Bindings are available for [Ruby](https://rubygems.org/gems/ruby-vips), JavaScript and others. There is full [documentation](http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/libvips/index.html). There are several GUIs as well, see the [VIPS website](http://www.vips.ecs.soton.ac.uk). There are packages for most unix-like operating systems and binaries for Windows and OS X. # Building libvips from source In the libvips directory you should just be able to do: $ ./configure Check the summary at the end of `configure` carefully. libvips must have `build-essential`, `pkg-config`, `glib2.0-dev`, and `libxml2-dev`. For the vips8 Python binding, you must have `gobject-introspection`, `python-gi-dev`, and `libgirepository1.0-dev`. You'll need the dev packages for the file format support you want. For basic jpeg and tiff support, you'll need `libtiff5-dev`, `libjpeg-turbo8-dev`, and `libgsf-1-dev`. See the Dependencies section below for a full list of the things that libvips can be configured to use. Once `configure` is looking OK, compile and install with the usual: $ make $ sudo make install By default this will install files to `/usr/local`. We have detailed guides on the wiki for [building on Windows](http://www.vips.ecs.soton.ac.uk/index.php?title=Build_on_windows) and [building on OS X](http://www.vips.ecs.soton.ac.uk/index.php?title=Build_on_OS_X). # Building libvips from git Checkout the latest sources with: $ git clone git://github.com/jcupitt/libvips.git Building from git needs more packages, you'll need at least `swig`, `gtk-doc` and `gobject-introspection`, see the dependencies section below. For example: $ brew install gtk-doc swig Then build the build system with: $ ./bootstrap.sh Debug build: $ CFLAGS="-g -Wall" CXXFLAGS="-g -Wall" \ ./configure --prefix=/home/john/vips --enable-debug $ make $ make install Leak check: $ export G_DEBUG=gc-friendly $ export G_SLICE=always-malloc $ valgrind --suppressions=libvips.supp \ --leak-check=yes \ vips ... > vips-vg.log 2>&1 valgrind threading check: $ valgrind --tool=helgrind vips ... > vips-vg.log 2>&1 Clang build: $ CC=clang CXX=clang++ ./configure --prefix=/home/john/vips Clang static analysis: $ scan-build ./configure --disable-introspection $ scan-build -o scan -v make $ scan-view scan/2013-11-22-2 Clang dynamic analysis: $ FLAGS="-O1 -g -fsanitize=address" $ FLAGS="$FLAGS -fno-omit-frame-pointer -fno-optimize-sibling-calls" $ CC=clang CXX=clang++ LD=clang \ CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" LDFLAGS=-fsanitize=address \ ./configure --prefix=/home/john/vips $ FLAGS="-O1 -g -fsanitize=thread" $ FLAGS="$FLAGS -fPIC -pie" $ FLAGS="$FLAGS -fno-omit-frame-pointer -fno-optimize-sibling-calls" $ CC=clang CXX=clang++ LD=clang \ CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" \ LDFLAGS="-fsanitize=thread -fPIC -pie" \ ./configure --prefix=/home/john/vips Build with the GCC auto-vectorizer and diagnostics (or just -O3): $ FLAGS="-O2 -msse4.2 -ffast-math" $ FLAGS="$FLAGS -ftree-vectorize -fdump-tree-vect-details" $ CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" \ ./configure --prefix=/home/john/vips Static analysis with: $ cppcheck --force --enable=style . &> cppcheck.log # Dependencies libvips has to have `gettext`, `glib2.0-dev` and `libxml2-dev`. Other dependencies are optional, see below. # Optional dependencies If suitable versions are found, libvips will add support for the following libraries automatically. See `./configure --help` for a set of flags to control library detection. Packages are generally found with `pkg-config`, so make sure that is working. libtiff and libjpeg do not usually use `pkg-config` so libvips looks for them in the default path and in `$prefix`. If you have installed your own versions of these libraries in a different location, libvips will not see them. Use switches to libvips configure like: ./configure --prefix=/Users/john/vips \ --with-tiff-includes=/opt/local/include \ --with-tiff-libraries=/opt/local/lib \ --with-jpeg-includes=/opt/local/include \ --with-jpeg-libraries=/opt/local/lib or perhaps: CFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \ CXXFLAGS="-g -Wall -I/opt/local/include -L/opt/local/lib" \ ./configure --without-python --prefix=/Users/john/vips to get libvips to see your builds. ### vips8 Python binding If `gobject-introspection`, `python-gi-dev`, and `libgirepository1.0-dev` are available, libvips will install the vips8 Python binding. ### libjpeg The IJG JPEG library. Use the `-turbo` version if you can. ### libexif If available, libvips adds support for EXIF metadata in JPEG files. ### libgsf-1 If available, libvips adds support for creating image pyramids with `dzsave`. ### libtiff The TIFF library. It needs to be built with support for JPEG and ZIP compression. 3.4b037 and later are known to be OK. ### fftw3 If libvips finds this library, it uses it for fourier transforms. ### lcms2, lcms If present, `vips_icc_import()`, `vips_icc_export()` and `vips_icc_transform()` are available for transforming images with ICC profiles. If `lcms2` is available it is used in preference to `lcms`, since it is faster. ### Large files libvips uses the standard autoconf tests to work out how to support large files (>2GB) on your system. Any reasonably recent unix should be OK. ### libpng If present, libvips can load and save png files. ### ImageMagick, or optionally GraphicsMagick If available, libvips adds support for loading all libMagick-supported image file types. Use `--with-magickpackage=GraphicsMagick` to build against graphicsmagick instead. ### pangoft2 If available, libvips adds support for text rendering. You need the package pangoft2 in `pkg-config --list-all`. ### orc-0.4 If available, vips will accelerate some operations with this run-time compiler. ### matio If available, vips can load images from Matlab save files. ### cfitsio If available, vips can load FITS images. ### libwebp If available, vips can load and save WebP images. ### OpenEXR If available, libvips will directly read (but not write, sadly) OpenEXR images. ### OpenSlide If available, libvips can load OpenSlide-supported virtual slide files: Aperio, Hamamatsu, Leica, MIRAX, Sakura, Trestle, and Ventana. ### swig, python, python-dev If available, we build the vips7 python binding. # Disclaimer No guarantees of performance accompany this software, nor is any responsibility assumed on the part of the authors. Please read the licence agreement. vips-8.2.2/m4/0000775000175000017500000000000012651721155010034 500000000000000vips-8.2.2/m4/codeset.m40000644000175000017500000000150012651721146011636 00000000000000# codeset.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2000-2002, 2006, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[char* cs = nl_langinfo(CODESET); return !cs;]])], [am_cv_langinfo_codeset=yes], [am_cv_langinfo_codeset=no]) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE([HAVE_LANGINFO_CODESET], [1], [Define if you have and nl_langinfo(CODESET).]) fi ]) vips-8.2.2/m4/gettext.m40000644000175000017500000003561512651721146011712 00000000000000# gettext.m4 serial 66 (gettext-0.18.2) dnl Copyright (C) 1995-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value '$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ]])], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ]])], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ]])], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST([DATADIRNAME]) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST([INSTOBJEXT]) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST([GENCAT]) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST([INTLOBJS]) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) vips-8.2.2/m4/introspection.m40000644000175000017500000000673612651721146013130 00000000000000dnl -*- mode: autoconf -*- dnl Copyright 2009 Johan Dahlin dnl dnl This file is free software; the author(s) gives unlimited dnl permission to copy and/or distribute it, with or without dnl modifications, as long as this notice is preserved. dnl # serial 1 m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], [ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([LT_INIT],[$0])dnl setup libtool first dnl enable/disable introspection m4_if([$2], [require], [dnl enable_introspection=yes ],[dnl AC_ARG_ENABLE(introspection, AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]], [Enable introspection for this build]),, [enable_introspection=auto]) ])dnl AC_MSG_CHECKING([for gobject-introspection]) dnl presence/version checking AS_CASE([$enable_introspection], [no], [dnl found_introspection="no (disabled, use --enable-introspection to enable)" ],dnl [yes],[dnl PKG_CHECK_EXISTS([gobject-introspection-1.0],, AC_MSG_ERROR([gobject-introspection-1.0 is not installed])) PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME])) ],dnl [auto],[dnl PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no) dnl Canonicalize enable_introspection enable_introspection=$found_introspection ],dnl [dnl AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@]) ])dnl AC_MSG_RESULT([$found_introspection]) INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= INTROSPECTION_GENERATE= INTROSPECTION_GIRDIR= INTROSPECTION_TYPELIBDIR= if test "x$found_introspection" = "xyes"; then INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection fi AC_SUBST(INTROSPECTION_SCANNER) AC_SUBST(INTROSPECTION_COMPILER) AC_SUBST(INTROSPECTION_GENERATE) AC_SUBST(INTROSPECTION_GIRDIR) AC_SUBST(INTROSPECTION_TYPELIBDIR) AC_SUBST(INTROSPECTION_CFLAGS) AC_SUBST(INTROSPECTION_LIBS) AC_SUBST(INTROSPECTION_MAKEFILE) AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes") ]) dnl Usage: dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version]) AC_DEFUN([GOBJECT_INTROSPECTION_CHECK], [ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1]) ]) dnl Usage: dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version]) AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE], [ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require]) ]) vips-8.2.2/m4/lcmessage.m40000644000175000017500000000253312651721146012162 00000000000000# lcmessage.m4 serial 7 (gettext-0.18.2) dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995. # Check whether LC_MESSAGES is available in . AC_DEFUN([gt_LC_MESSAGES], [ AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[return LC_MESSAGES]])], [gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])]) if test $gt_cv_val_LC_MESSAGES = yes; then AC_DEFINE([HAVE_LC_MESSAGES], [1], [Define if your file defines LC_MESSAGES.]) fi ]) vips-8.2.2/m4/glibc21.m40000644000175000017500000000161312651721146011440 00000000000000# glibc21.m4 serial 5 dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. # Test for the GNU C Library, version 2.1 or newer, or uClibc. # From Bruno Haible. AC_DEFUN([gl_GLIBC21], [ AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc], [ac_cv_gnu_library_2_1], [AC_EGREP_CPP([Lucky], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif #ifdef __UCLIBC__ Lucky user #endif ], [ac_cv_gnu_library_2_1=yes], [ac_cv_gnu_library_2_1=no]) ] ) AC_SUBST([GLIBC21]) GLIBC21="$ac_cv_gnu_library_2_1" ] ) vips-8.2.2/m4/ltsugar.m40000644000175000017500000001042412651721155011676 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) vips-8.2.2/m4/libtool.m40000644000175000017500000106011112651721155011660 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS vips-8.2.2/m4/gtk-doc.m40000644000175000017500000000631212651721147011547 00000000000000dnl -*- mode: autoconf -*- # serial 2 dnl Usage: dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) AC_DEFUN([GTK_DOC_CHECK], [ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"]) AC_MSG_CHECKING([for gtk-doc]) PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no]) AC_MSG_RESULT($have_gtk_doc) if test "$have_gtk_doc" = "no"; then AC_MSG_WARN([ You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found.]) fi dnl check for tools we added during development dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that dnl may not be writable by the user. Currently, automake requires that the dnl test name must end in '.test'. dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638 AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test]) AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check]) AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) dnl for overriding the documentation installation directory AC_ARG_WITH([html-dir], AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, [with_html_dir='${datadir}/gtk-doc/html']) HTML_DIR="$with_html_dir" AC_SUBST([HTML_DIR]) dnl enable/disable documentation building AC_ARG_ENABLE([gtk-doc], AS_HELP_STRING([--enable-gtk-doc], [use gtk-doc to build documentation [[default=no]]]),, [enable_gtk_doc=no]) AC_MSG_CHECKING([whether to build gtk-doc documentation]) AC_MSG_RESULT($enable_gtk_doc) if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then AC_MSG_ERROR([ You must have $gtk_doc_requires installed to build documentation for $PACKAGE_NAME. Please install gtk-doc or disable building the documentation by adding '--disable-gtk-doc' to '[$]0'.]) fi dnl don't check for glib if we build glib if test "x$PACKAGE_NAME" != "xglib"; then dnl don't fail if someone does not have glib PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) fi dnl enable/disable output formats AC_ARG_ENABLE([gtk-doc-html], AS_HELP_STRING([--enable-gtk-doc-html], [build documentation in html format [[default=yes]]]),, [enable_gtk_doc_html=yes]) AC_ARG_ENABLE([gtk-doc-pdf], AS_HELP_STRING([--enable-gtk-doc-pdf], [build documentation in pdf format [[default=no]]]),, [enable_gtk_doc_pdf=no]) if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi AC_SUBST([AM_DEFAULT_VERBOSITY]) AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes]) AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) ]) vips-8.2.2/m4/iconv.m40000644000175000017500000002206412651721146011336 00000000000000# iconv.m4 serial 19 (gettext-0.18.2) dnl Copyright (C) 2000-2002, 2007-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif ]], [[int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; ]])], [am_cv_func_iconv_works=yes], , [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [m4_ifdef([gl_00GNULIB], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ]], [[]])], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([ $am_cv_proto_iconv]) AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) dnl Also substitute ICONV_CONST in the gnulib generated . m4_ifdef([gl_ICONV_H_DEFAULTS], [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) if test -n "$am_cv_proto_iconv_arg1"; then ICONV_CONST="const" fi ]) fi ]) vips-8.2.2/m4/lt~obsolete.m40000644000175000017500000001375612651721155012602 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) vips-8.2.2/m4/ltoptions.m40000644000175000017500000003007312651721155012252 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) vips-8.2.2/m4/progtest.m40000644000175000017500000000604012651721146012063 00000000000000# progtest.m4 serial 7 (gettext-0.18.2) dnl Copyright (C) 1996-2003, 2005, 2008-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) vips-8.2.2/m4/ltversion.m40000644000175000017500000000126212651721155012242 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) vips-8.2.2/ChangeLog0000664000175000017500000033505112651705724011221 0000000000000012/1/16 started 8.2.2 - changes to ease compiling C++ binding with MSVC [Lovell Fuller] - reorder file tests to put slow loaders last - ifthenelse needs less C stack during eval - better rounding in bilinear interpolator - fix to "make check" in non-C locales [felixbuenemann] - use compiler builtins isnan, isinf, fabs, fmin, fmax, ceil, floor when possible [Lovell Fuller] - tune vips_shrinkh(), 30% faster [Lovell Fuller] - remove SEQ hint from vips_subsample(), fixes cli performance [erdmann] - fix double free on attach ICC profile from file in tiff write [erdmann] - use g_assert_not_reached() - better vips-from-C docs - remove Duff from im_conv() / im_conv_f() for a 25% speedup [Lovell Fuller] 1/1/16 started 8.2.1 - add a compat stub [Benjamin Gilbert] - python bandjoin is now just an instance function - small doc improvements - small vips7 C++ improvement - remove exception specifications from vips8 C++ interface [Lovell Fuller] - VImage::get_typeof() now returns GType 7/10/15 started 8.2.0 - added im_bufmagick2vips(), a vips7 wrapper for magick load from buffer - fetch unset property now returns default value rather than warning - many more const declarations to help gobject-introspection - rewritten vips_shrink() is 2x faster, much lower memuse, now handles complex - old code still there as vips_shrink2() for testing - only allow [] for filename options - add memory.h to Python API .. makes tracked highwater visible - added bandjoin_const to add constant bands to an image - better alpha handling for tiff write, thanks sadaqatullahn - better cache sizing for vips_resize() - sizealike / formatalike / bandsalike elide completely if they can for a x2 saving in C stack use in many cases - added vips_mapim() ... resample with an index image, plus test - try to improve vips_resize() quality a little more - vips_resize() can do non-square resizes - dzsave removes tile metadata by default, thanks Benjamin - jpeg strip option removes a little more, thanks Benjamin - added vips_image_new_from_memory_copy() - improve vips_sink_screen() stability under heavy load - added vips_arrayjoin() - Python x.bandjoin(y) is now x.ibandjoin(y), sorry - faster and lower-mem TIFF read - faster bilinear interpolator - TIFF loads and saves IMAGEDESCRIPTION - add --properties flag to tiffsave - dzsave defaults changed: now writes 256x256 jpegs for non-edge tiles, thanks Daniel 7/5/15 started 8.1.1 - oop, vips-8.0 wrapper script should be vips-8.1, thanks Danilo - fix vips7 pathname parsing on windows, thanks Lovell 7/5/15 starteld 8.1.0 - add vips_premultiply(), vips_unpremultiply() - change the alpha range rules for vips_flatten() to match vips_premultiply() - vipsthumbnail uses vips_resize() rather than its own code - vipsthumbnail uses vips_premultiply() for better alpha quality - added bandand() bandor() bandeor() convenience funcs to Python - oops, base64 encode could pad by up to two zero bytes - added VipsRefString as a thing that gi bindings can unpack - support "with Vips.Image as i:" in Python - try to support DOS CSV and PPM files on linux - add vips_byteswap(), remove byteswap option from vips_copy() - add vips_bandfold()/vips_bandunfold() - dzsave supports zip output > 4gb, thanks benjamin - add support for HSV colourspace [Jonas Øgaard] - skip oversized markers in jpeg write - jpeg exif tags saved as name rather than title - can now set any jpeg exif tag, not just modify existing tags - add vips_hist_entropy() - vips_log(), vips_log10() are zero-avoiding - better overlap handling for dzsave, thanks robclouth - add @spacing option to vips_text() - tiff loads and saves IPCT and Photoshop data 7/5/15 started 8.0.3 - dzsave and tif pyr write could fail for some image dimensions, thanks Jonas 4/5/15 started 8.0.2 - fix a refcount error in C++ wrapper, thanks huskier - better C++ api test - test suite improvements - remove a couple of stray header decls, thanks benjamin 25/4/15 started 8.0.1 - fix some compiler warnings - work around a glib bug that can cause segv under load - add some notes on threading to the docs - better leak reporting 11/2/15 started 8.0 - remove old doc stuff, lots of doc improvements - add fliphor(), flipver(), rot90(), rot180(), rot270(), median(), dilate(), erode() convenience methods to Python and C++ - python: use [] to index and slice image bands, use () to get a point - c++: use [] to band index, () returns a vector - add shift option to cast - sRGB2scRGB and scRGB2sRGB scale 16-bit alpha to and from 8-bit - add magickload_buffer() [mcuelenaere] - add vips_foreign_is_a_buffer() [mcuelenaere] - added test_foreign.py, plus more test images - added vips_region_shrink(), fast x2 shrinker - rewritten tiff writer is about 3 - 4x faster at making pyramids - jpg, magick, png, tiff readers now use only 1 fd per input image - added vips_info_set(), vips_progress_set(), vips_profile_set() ... bindings can now support all the vips command-line options if they wish - better conversion to greyscale, thanks bkw - add vips_image_copy_memory(), improves stability with heavy threading - jpegsave supports new mozjpeg features [lovell] - add vips_vipsload(), vips_vipssave() ... why not 26/3/15 started 7.42.4 - im_maxpos_avg() avoids NaN - small tiffsave doc improvements - better thresholding for tiffsave "squash" mode - add @miniswhite mode to tiffsave 6/2/15 started 7.42.3 - bump version for back-compat ABI change - added vips_image_memory(), an alias for vips_image_new_memory() - improvements to configure for python - remove --disable-cxx configure flag - python imageize preserves interpretation - fix dzsave as a target format 30/12/14 started 7.42.2 - C++ required output params were broken, thanks Lovell - remove VImage::scale() to get scale from header, it clashed with the VipsScale operator, thanks Lovell - allow c++ set enum from string - display param default and range in usage - better docs - more tests - renamed VIPS_FOREIGN_DZ_DEPTH_1 as VIPS_FOREIGN_DZ_DEPTH_ONE etc. to help bindings - vipsthumbnail will return an error code if one or more conversions failed - disable chroma subsample in jpeg-tiff if Q >= 90 - try to handle tiffs with old-style 8-bit colormaps - rename vipsthumbnail -o as -f, -o stays as a hidden flag - fix some small leaks - faster openslide load, thanks Benjamin - add VInterpolate class to cplusplus binding, thanks Lovell - add lower-level operation cache access - turn on leak testing in test suite - don't use isnormal() to test for crazy FP numbers, thanks Murat - much faster RGB16 -> sRGB path 24/12/14 started 7.42.1 - add gobject-2.0 to Requires: in vips and vips-cpp .pc files - bump soname - fix VipsBlob read - remove "future" dependency, thanks bgilbert 4/11/14 started 7.42.0 - better default resolution for png load - better pbm (one bit) load, better pfm (float) load/save - added pbm (one bit) save - changed vips_gaussblur() parameters, sorry - add .szi as a dzsave zip synonym - support tiff XMP metadata - support @density arg to magickload [Lovell] - support python3.4 and python2.7 in new python binding - vips_gaussmat() and vips_logmat() are now int by default, to match vips_conv(), and use @precision, not @integer - added --disable-pyvips8 switch to turn off new py binding - "vips thing" exit status can now be used to test for optional components 25/7/14 started 7.41.0 - start working on --disable-deprecated - fix pngload with libpng >1.6.1 - add vips_resize() - return of vips_init(), but just for bindings - revised type.c to make it more binding-friendly - add @background arg to save: the colour to flatten against - add VIPS_ARGUMENT_MODIFY flag ... used for draw_circle etc, meaning an op which modifies its argument - rename VIPS_OPERATION_RELATIONAL_NOTEQUAL as VIPS_OPERATION_RELATIONAL_NOTEQ for consistency - python vips8 binding - python vips8 test suite: test_arithmetic.py, test_colour.py, test_conversion.py - move zoomify ImageProperties file, now a better match to the offical tool - rename VIPS_ANGLE_180 as VIPS_ANGLE_D180 etc. to help python - remove cimg support, we have a gmic plugin now instead - add support for vips8 plugins - added "autorotate" option to jpeg load - added autorot operator - added @filter option to pngsave (Lovell) - C++ vips8 binding 27/10/14 started 7.40.12 - better tiff detection (Lovell) - fix memleak in sharpen (Lovell) - fix profile handling in XYZ2scRGB, thanks Lovell 8/10/14 started 7.40.11 - rework extra band handling for colour functions - set interpretation of matlut output more carefully 8/9/14 started 7.40.10 - icc_import and icc_transform checks the input profile for compatibility with the image, thanks James - try to make vips_thread_shutdown() optional 8/9/14 started 7.40.9 - support jfif resunit "none" - support GRAY as an input and output ICC space - fix a read loop with setjmp() in png read, if the png file is broken - fix vipsthumbnail with both input cmyk and output rgb profiles specified - vipsthumbnail retries with specified input profile if embedded profile is broken - add @profile option to pngsave, matching tiff and jpeg - fix a race in the operation cache [Lovell] 8/9/14 started 7.40.8 - fix configure on rhel6 [Lovell] - mono <-> rgb converters were not handling extra bands, thanks James - support jpeg resunit "none" 21/8/14 started 7.40.7 - width and height were swapped in matlab load - set interpretation more carefully on matlab load - fix memleak in tilecache [Lovell] - fix memleak in VipsArray [Lovell] - fix memleak in webp load from buffer [Lovell] - fix memleak in png save to buffer [Lovell] - make out of order read in png and jpg a fatal error - add thread_shutdown() to C++ (and thereby to python) 12/8/14 started 7.40.6 - more doc fixes - fix similarity rotate+scale, thanks Topochicho - fix 16-bit PNG save, thanks John - fix dzsave date on Windows, thanks John - fix vipsthumbnail on many-core systems, thanks James 25/7/14 started 7.40.5 - fix a race in im_maxpos_avg() - limit n_thr on tiny images - don't exit() on memleak detected, just warn - add "autocrop" option to openslide load - argh fix affine, again, there were sometimes black bars with nohalo and the vips8 interface - pngsave in interlaced mode makes a copy of the image, so it's always seq - vipsthumbnail shrinks to 1/2 window_size - vipsthumbnail has an anti-alias filter between shrink and affine - vipsthumbnail defaults to bicubic - better rounding behaviour for fixed-point bicubic reduces noise - fix pngload with libpng >=1.6.11 - fix colour for openslide read associated 4/7/14 started 7.40.4 - fix vips_rawsave_fd(), thanks aferrero2707 - fix im_point() - vips_scale() now does round to nearest to avoid rounding errors - improve im_openout() compat macro - more vips7 compatibility fixes, thanks steve - more robust vips_system() - add webp support to vips7 30/6/14 started 7.40.3 - fix interlaced thumbnails in vipsthumbnail, thanks lovell - fix use of "header" in benchmark/, thanks David - fits save now caches the image before write, so it's top-to-bottom - add --properties argument to dzsave, thanks bgilbert, jhenriksen 25/6/14 started 7.40.2 - dzsave write to zip stops at 4gb, thanks bgilbert - improve short option name handling, thanks bgilbert - added --enable-docs configure option to help freebsd - removed a bash-ism from configure to help freebsd - don't assume GType fits in an int to help freebsd 24/6/14 started 7.40.1 - revise man.1 pages - fix vips_guess_prefix() 23/6/14 started 7.40.0 - version bump - renamed "header" as "vipsheader" and "edvips" as "vipsedit" 21/1/14 started 7.39.0 - auto-decode for (almost) all operations, see vips_image_decode() - background render thread cleans up and quits neatly - colourspace has a source_space option - operations can be tagged as "deprecated" - redo im_draw_circle(), im_draw_flood(), im_draw_line(), im_draw_mask(), im_draw_image(), im_draw_rect(), im_draw_point(), im_read_point(), im_draw_smudge(), im_label_regions() as classes - better rounding in vips_flatten() - VipsStatistic operations are sequential - vipsthumbnail has --rotate auto-rotate option - removed embedded thumbnail reader from vipsthumbnail: embedded thumbnails are too unlike the main image - fix to vipsthumbnail --crop, thanks Alessandro - add vips_sum() - add vips_hough base class and vips_hough_line() - add "mode" param to vips_draw_image() - add vips_hough_circle() - reduce default cache size to 1,000 operations - added "postbuild" signal - vips_system() now supports many input images and you can change image argument order - support 16-bit palette TIFFs, plus palette TIFFs can have an alpha - libgsf-1 is now an optional dependancy - dzsave can directly write a ZIP file - add ".vips" as an alternative suffix for vips files - added vips_tiffload_buffer() - added vips_image_new_from_buffer(), vips_image_write_to_buffer() - added vips_object_set_from_string() - added @container option to dzsave - support 1/2/4 bit palette tiff images with alpha - vips_system() now uses g_spawn_command_line_sync() - added im_tile_cache_random() to help nip2 - added hough_circle() to vips7 C++ API - added Travis CI config, thanks Lovell - im_*merge(), im_*mosaic(), im_match*(), im_global_balance*(), im_remosaic(), im_*mosaic1(), im_*merge1() redone as classes - better filename tracking for globalbalance - revised vips8 image load/save API, now simpler and more logical - operations emit "invalidate" if any of their input images invalidate - operation cache drops ops on invalidate - skipahead is back, thanks to a new threadpool tweak 6/3/14 started 7.38.6 - grey ramp minimum was wrong - vipsthumbnail --crop could fail for very non-square images, thanks Alessandro - fix a crash in vips_rawsave(), thanks Andrea - updated German translation, thanks Chris - fix coordinate error in affine, thanks ferryfax 24/2/14 started 7.38.5 - jpeg load from buffer could write to input, thanks Lovell - fix webpload from buffer, thanks Lovell - vips_sequential() could fail under heavy load - remove support for seq mode read for operations like extract 13/2/14 started 7.38.4 - --sharpen=none option to vipsthumbnail was broken, thanks ferryfax - more locking on property create and lookup to help very-threaded systems, thanks Nick 22/1/14 started 7.38.3 - undeprecate VIPS_MASK_IDEAL_HIGHPASS and friends, ruby-vips was using them, thanks ahacking 22/1/14 started 7.38.2 - auto RAD decode for affine - falsecolour was not working for some image types - foreign memory buffer images did not have the right dhint, broke command-line falsecolour on sequential images - support many Radiance readers active at once - add secret "rgbjpeg" flag to vips_tiffsave() to help IIP 19/1/14 started 7.38.1 - bump soname, thanks benjamin - better conversion to and from scrgb/xyz for rad (hdr) - fix --interpolate flag to vipsthumbnail, thanks Lovell 18/1/14 started 7.38.0 - version bump 19/10/13 started 7.37.0 - redone im_rotate_*mask45(), im_gauss_*mask*(), im_log_*mask(), im_dilate(), im_erode(), im_rank_image(), im_compass(), im_linedet(), im_gradient(), im_convsep(), im_convsep_f(), im_fastcor(), im_spcor(), im_sharpen() as classes - im_gradcor() deprecated - vips_init() now does some ABI compat checking, though this change requires an ABI break - add "interlace" option to vips_jpegsave() - remove vips_image_copy_fields() and vips_demand_hint() and add vips_image_pipeline() to do both jobs - vipsthumbnail allows non-square bounding boxes, thanks seth - add vips_matrixprint() - add @point subsample mode to vips_subsample() - im_contrast_surface() deprecated: it was slower than calling conv a few times - radiance load supports sequential read - rewritten radiance decode is much faster - add vips_crop(), a synonym for vips_extract_area() - rename vips_gammacorrect() as vips_gamma(), now takes 1 / exp - vips_gamma() works for any format - add --linear mode to vipsthumbnail - support XYZ as a PCS for vips_icc_import() and vips_icc_export() - add --strip option to jpegsave - added vips_gaussblur() convenience function - added --vips-profile, records and dumps thread timing and memory use info - added vipsprofile, visualises --vips-profile output - auto-vectorization-friendly inner loops - added vips::init() and vips::shutdown() to C++ API - reuse pixel buffers on sharing to reduce mem cycling - conv is SMALLTILE, huge mem use saving on wide images - vipsthumbnail has a --crop option - remove video4linux1 code, it was useless on all modern linuxes - redone freq filter builders as classes - redone im_fwfft(), im_invfft(), im_freqflt(), im_disp_ps(), im_fractsurf(), im_phasecor() as classes - vips_colourspace() allows B_W, GREY16, RGB16 as source / target - added vips_thread_shutdown(), thanks Lovell - vips_linear() has a uchar output mode - redone im_cntlines(), im_rank() as classes - move im_zerox() to deprecated, it wasm't very useful 9/1/14 started 7.36.6 - fix some clang compiler warnings 20/11/13 started 7.36.5 - better cache sizing in unbuffered sequential mode - allow larger tile_size in dzsave - remove use of PATH_MAX to help gnu hurd - fix vips_hist_match() 15/11/13 started 7.36.4 - improve compat with im_init_world() 18/10/13 started 7.36.3 - fix compiler warnings in ubuntu 13.10 - reverse similarity rotation direction to match the convention used elsewhere in vips - fix blocked caching of sequential load operations - fix cache flags - fix --delete option to vipsthumbnail 10/10/13 started 7.36.2 - better jpeg startup - rename jpeg bool type to reduce confusion between libraries 3/10/13 started 7.36.1 - fix to help OS X build 3/10/13 started 7.36.0 - version bump 1/7/13 started 7.35.0 - added vips_matrixload() and vips_matrixsave(), load and save vips mat format - rename image arrays as image matrices ... INTERPRETATION_ARRAY -> INTERPRETATION_MATRIX etc. - rewrite im_buildlut(), im_identity*(), im_maplut(), im_falsecolour(), im_gammacorrect(), im_histgr(), im_histcum(), im_histnorm(), im_heq(), im_histnD(), im_histindexed(), im_histspec(), im_invertlut(), im_lhisteq(), im_stdif(), im_project(), im_profile(), im_tone_build*(), im_mpercent*(), im_ismonotonic() as classes - vips_hist_local(), vips_stdif() do any number of bands - thin vips8 wrapper for im_histplot() - added vips_error_freeze() / vips_error_thaw() - used freeze() / thaw() to stop file format sniffers logging spurious errors - vipsthumbnail uses embedded jpg thumbnails if it can - rename vips_diag() as vips_info(), add --vips-info flag - deprecate im_hsp() - added vips_webpload(), vips_webpload_buffer(), vips_webpsave(), vips_webpsave_buffer(), vips_webpsave_mime() - tiff reader allows separate planes for strip read - tiff reader and writer allow many more formats, eg. 32-bit int, complex, etc. - tiff reader and writer allow any number of bands - added vips_image_new_matrixv() - dzsave basename param now called filename, so you can use .dz as a destination (basename is still there but deprecated) - new _UNBUFFERED sequential mode saves memory in some important cases - vips_conv() is a simple wrapper over the old convolution functions - new optimize_coding param for jpeg write produces optimal Huffman tables, thanks Lovell - im_tone_map() and im_tone_analyse() deprecated - new --band arg to vips_maplut() replaces im_tone_map() functionality - added vips_similarity(), simple wrapper for vips_affine() that lets you give a scale and rotate 3/7/13 started 7.34.2 - lower priority for Matlab load to reduce segvs from Mat_Open(), thanks Michael - null-terminate libexif strings, thanks Mike - openslide always outputs solid pixels 28/6/13 started 7.34.1 - fix morphological operators on non-uchar images - remove any ICC profile when we use vips to go to srgb 7/6/13 started 7.34.0 - version bump - oops, VImage.PIL_mode_from_vips() failed for CMYK, thanks Alessandro - fix no-pango build - add im_vips2dz(): run the deepzoom writer from vips7 - vips_magickload() has an option to read all images in a sequence - redo im_make_xy(), im_*eye(), im_zone*(), im_sines() as classes - added vips_pngload_buffer() - faster --centre option to dzsave, thanks Kacey 12/3/13 started 7.33.0 - vipsthumbnail lets you specify the sharpening mask - turn off caching for im_copy()/vips_copy(), we use copy to stop sharing, and it's cheap so caching doesn't help anyway - auto rshift down to 8 bits on save, if necessary - im_gaussnoise(), im_copy_file(), im_grid(), im_scale(), im_scaleps(), im_wrap(), im_rotquad(), im_zoom(), im_subsample(), im_msb(), im_text(), im_system(), im_system_image() redone as classes - add --angle option to dzsave - another vips_shrink() fix argh 14/5/13 started 7.32.4 - icc import and export could segv on very wide images - fix centos 5 build, thanks re-boot 16/4/13 started 7.32.3 - rename GETTEXT_PACKAGE as vips7.32 to help Debian (thanks Jay) - added "persistent" option to tilecache 12/3/13 started 7.32.2 - removed some left-over debugging code from configure.ac - better handling of args without values, thanks Ruven - better error messages from vips.c - fix demand hints so "vips shrink" works again, thanks Jan - im_jpeg2vips.c builds without jpeglib.h, thanks Alessandro 6/2/13 started 7.32.1 - fix --without-lcms, thanks speckins - updates to licence, thanks Benjamin - remove "fred" from dist - better bootstrap on OS X 22/1/13 started 7.32.0 - tilecache in threaded mode could deadlock if the downstream pixel source raised an error (thanks Todd) - fix another dzsave corner-case (thanks Martin) - neater output for "header" - added VIPS_META_LOADER: record the loader name = header displays this loader hint - vipsthumbnail is better at cache sizing 31/8/12 started 7.31.0 - redone im_Lab2XYZ(), im_XYZ2Lab(), im_Lab2LCh(), im_LCh2Lab(), im_UCS2LCh, im_LCh2UCS(), im_XYZ2Yxy(), im_Yxy2XYZ(), im_float2rad(), im_rad2float(), im_Lab2LabQ(), im_LabQ2Lab(), im_Lab2LabS(), im_LabS2Lab(), im_LabQ2LabS(), im_LabS2LabQ(), im_LabQ2disp(), im_XYZ2disp(), im_disp2XYZ(), im_icc_import*(), im_icc_export*(), im_icc_transform*(), im_dE_fromLab(), im_dECMC_fromLab(), im_dE00_from_Lab(), im_icc_ac2rc() as classes - added vips_colourspace(), vips_colourspace_issupported(), replaces all derived conversions - faster and more accurate sRGB <-> XYZ conversion - support 16-bit sRGB import and export - rename UCS colourspace as CMC - dzsave can write zoomify and google maps layout as well - tilecache supports threaded access, so openslide read now threads - openslide2vips gets underlying tile size from openslide - embed has 'background' option - dzsave --layout google has a @background option - dzsave has a --depth option - update for new glib threading API - remove no threads option, glib no longer support it - better --help output for vips driver prog - vipsthumbnail -o allows absolute file names - much better exif handling for jpg images (thanks Gary) - preserve jpeg app13 (photoshop ipct) - vips_max() / _min() track the top n maxima / minima - deprecate im_maxpos_avg(): too specialised to be worth maintaining - deprecate im_linreg(): easily done by combining other operators - deprecate im_point(): easily done by combining other operators - add binary complex operations, with cross_phase as the only one so far - added vips_bandbool(), with vips_bandand(), _bandor(), _bandeor() as convenience functions - added scRGB colourspace, linear light float space with sRGB primaries - all interpolators use corner convention ... we had round-to-nearest in several of them before, causing a range of annoying problems - redone im_affine*() as a class - added input space displacement to affine - VipsArea is threadsafe - dzsave has a --centre option 31/12/12 started 7.30.8 - png icc profile write was broken 31/12/12 started 7.30.7 - better option parsing for "vips", thanks Haida - small fixes to help OS X - backported threaded tile cache from next version, im_tile_cache() now uses it to prevent a deadlock, see comment there 14/11/12 started 7.30.6 - capture tiff warnings earlier 14/11/12 started 7.30.5 - fix libtool version mess up (thanks Benjamin) 2/10/12 started 7.30.4 - remove options from format string in .dzi (thanks Martin) - vipsCC.pc required the wrong version of vips (thanks Alessandro) - larger max tile size for dzsave - linecache is 50% larger to leave some slop room 13/9/12 started 7.30.3 - linecache sized itself too large - fix a compile failure if libtiff was not found (thanks Martin) - dzsave did not work for images with an odd number of scanlines (thanks Martin) 4/9/12 started 7.30.2 - sequential stops all threads on error - sequential delays ahead threads rather than blocking them completely 6/8/12 started 7.30.1 - fixes to dzsave: shrink down to a 1x1 pixel tile, round image size up on shrink, write a .dzi file with the pyramid params, default tile size and overlap now matches the openslide writer - wrap VipsInterpolate for C++ - so affinei and affinei_all appear in Python - be more cautious enabling YCbCr mode in tiff write - add "DEPRECATED" flag to arguments - jpeg load/save note and use the preferred resolution unit - better error msgs for enum args - fix compiler warnings in production build (thanks Dmitry) - fix spurious warnings about exif updates - VipsSequential has an integrated cache and stalls out of order threads - add a line cache ... sizes up dynamically with request size - tilecache / linecache use a hash table not a linear list 20/7/12 started 7.30.0 - support "rs" mode in vips7 - add --vips-version cmdline arg - fix --without-tiff / exr / jpeg / png / magick - add --vips-fatal flag 19/3/12 started 7.29.0 - sanity-check PNG read geometry - nearest-neighbor interpolation rounds coordinates to nearest instead of rounding down (thanks Nicolas) - add dzsave, save in deep zoom format - rework im_shrink() as a class - remove im_rightshift_size(), just a convenience function now - vipsthumbnail no longer removes profiles by default - much more gentle sharpening in thumbnails - added "minimise" signal, used by tilecache to drop - add :seq support to im_tiff2vips(), im_jpeg2vips() ... helps ruby-vips - better thread safety for vips8 operation dispatch - better thread safety for upstream / downstream image linking - added "rs" open mode, removed "rd" - added vips_operation_get_flags() ... system for attaching sets of flags to operations - added VIPS_OPERATION_SEQUENTIAL flag - vips8 command-line interface uses this to turn sequential mode on automatically when possible - better handling of input files in vips7 command-line interface - sequential can skip ahead, so extract / insert are now seq 16/7/12 started 7.28.10 - wopconst was broken - vips_sign() was broken - png save compression range was wrong - more/moreeq was wrong - vips7 ppm save with options was broken - don't cache write operations 18/6/12 started 7.28.9 - slightly more memory debugging output - remove references to the static bicubic interpolator from the docs - fix temp file handling on Windows --- was breaking for non-vips files over 100mb - better support for using images from multiple threads 18/6/12 started 7.28.8 - fixes for centos5 portability 18/6/12 started 7.28.7 - add vips_flatten() -- flatten RGBA to RGB - better alpha handling in PNG load - don't save RGBA PNG as CMYK JPG (thanks Tobsn) - fix a crash with malformed jpg files (thanks Grigoriy) - vipsthumbnail enables sequential mode more and caches lines better 19/4/12 started 7.28.6 - better resolution unit handling in deprecated im_vips2tiff() - use TIFF_CFLAGS output from pkg-config (thanks Jay) - much faster vips_argument_map() - make jpeg pyramids work with tiff4 - tiff loader always offers THINSTRIP (thanks Diuming) - add "nocache" operation flag, set for sequential load (thanks Diuming) - fix a crash in the tiff reader for huge values of RowsPerStrip (thanks Nicolas) - remove use of G_DEFINE_BOXED_TYPE() to help compat (thanks Jake) 19/4/12 started 7.28.5 - ifthenelse blend mode was broken - small blend speedup - default to libtiff-4 17/4/12 started 7.28.4 - up max buffer size for vipsbuf 6/4/12 started 7.28.3 - vips_divide() failed for int arguments - fix warning for unused vips7 gvalue argument - fix openslide read: always return png-style rgba, im_argb2rgba() becomes a NOP - cast to unsigned int now removes <0 values - vips7 interface to openslide now supports :,level,associated options (thanks Benjamin) - make vips8 cache smaller - more accurate progress reporting 13/3/12 started 7.28.2 - xres/yres tiffsave args were broken 13/3/12 started 7.28.1 - add ICC profile read/write for png files 30/1/12 started 7.28.0 - version bump - added vips_foreign_find_save_options()/vips_foreign_find_load_options() - delayed write to foreign via a "w" image was not working - support operations with many returns in Python - sequential read mode - better im_shrink() - added vips_sequential() - new vips_sink_memory() keeps read ordering - tiff, jpeg, png readers support sequential read - max/min avoid NaN - oop, histnorm was broken by the new vipsstats - never use IM ping to get a header, fixes BMP load - set @filename for non-vips formats in vips7 compat layer - make Xres/Yres double - completely disable debug by default in production builds 20/8/11 started 7.27.0 - version bump for new dev cycle - im_subtract(), im_avg(), im_min(), im_minpos(), im_copy(), im_embed(), im_flophor(), im_flipver(), im_insert(), im_insert_noexpand(), im_lrjoin(), im_tbjoin(), im_extract_area(), im_extract_bands(), im_extract_areabands(), im_replicate(), im_clip2fmt(), im_gbandjoin(), im_bandjoin(), im_invert(), im_lintra(), im_lintra_vec(), im_black(), im_rot90, im_rot180(), im_rot270() im_sintra(), im_costra(), im_tantra(), im_asintra(), im_acostra(), im_atantra(), im_exptra(), im_exp10tra(), im_logtra(), im_log10tra(), im_abs(), im_sign(), im_max(), im_maxpos(), im_deviate(), im_divide(), im_multiply(), im_stats(), im_measure(), im_recomb(), im_floor(), im_ceil(), im_rint(), im_equal*(), im_notequal*(), im_less*(), im_lesseq*(), im_more*(), im_moreeq*(), im_remainder*(), im_and*(), im_or*(), im_eor*(), im_shift*(), im_pow*(), im_exp*(), im_ifthenelse(), im_blend(), im_c2amph(), im_c2rect(), im_bandmean(), im_c2real(), im_c2imag(), im_ri2c(), im_jpeg*2vips(), im_vips2jpeg*(), im_tiff2vips(), im_vips2tiff(), im_exr2vips(), im_fits2vips(), im_vips2fits(), im_analyze2vips(), im_raw2vips(), im_vips2raw(), im_magick2vips(), im_png2vips(), im_png2*(), im_ppm2vips(), im_vips2ppm(), im_mat2vips(), im_rad2vips(), im_vips2rad() redone as classes - added argument priorites to help control arg ordering - generate has a 'stop' param to signal successful early termination - added optional output args, eg. x/y for min - CLI supports optional output args - in im_vips2tiff, enable YCbCr compression for jpeg write - VipsMin stops search early if it can - C API supports optional output args - switch back to int-valued operations - add the operation cache, various --vips-cache-* flags - fallback vips_init() - vips_tracked_malloc() tracks allocation size and can report total mem usage - cache limits, drop, init, flush plus command-line controls - remove dmalloc support, was never used and valgrind is better - im_csv2vips() allows quoted strings, including escaped quotes - added vips_shutdown() - added --vips-leak flag - more VipsImage props - added vips_image_write(), old one becomes vips_image_write_to_file() - added vips_region_paint_pel() - added VipsArea as a public struct - added array members and arguments - added nary - remove VipsPool, vips_object_local_array() is much better - cache.c now drops if you have too many open files - CLI args to change max files - new format for handling exif tags - switch SMALLTILE to 128, 512 was just too big - oop mode "rd" was not always being used for images - added ARRAY interpretation for images - VipsStats tracks minpos/maxpos as well - moved mask/ to deprecated - use atexit() to call vips_shutdown() - set _O_TEMPORARY on delete-on-close temp images if possible - unlink temps on rewind on *nix, less likely to leave temps on a crash - added complex conj as a basic operation - rect/polar/conj work on any format, not just complex - new VipsFile system for load/save in image formats - options now introspectable, try "vips jpegsave" - copy swap uses glib byteswap macros, about 2x faster - edvips can change vips header byte ordering - "header" is terse by default - "header" outputs filenames if working on many files - added openslide support (Benjamin Gilbert) - allow new-style load/save options in filenames to vips_image_new_from_file() etc. - VipsFormat is deprecated - remove outchecks from documented API - support gobject-introspection - new Python binding based on gobject-introspection - only spot options at the end of arg strings - add vips_cache() as a vips8 operator - remove the old fft fallback - remove fftw2 support - much faster im_draw_smudge() 14/1/12 started 7.26.8 - interpolate CLI args were broken (thanks speckins) 5/12/11 started 7.26.7 - lazy read from tiled tiff from layers other than 0 was broken - optional args to vips_call*() do not work, disabled (fixed correctly in master) - address calculations in files over 4gb were broken on 32-bit platforms (broken since March 2011, oops) 12/10/11 started 7.26.6 - NOCACHE was not being set correctly on OS X causing performance problems with large files - update Orientation exif tag on jpeg write 12/10/11 started 7.26.5 - jpeg read/write copies over XMP data - handle offset correctly in separable convolutions (thanks Nicolas) - macros for class arg boilerplate - class arg order set by new 'priority' param - VipsExtend, VipsDirection enums added 12/9/11 started 7.26.4 - fallback vips_init() - im_openout() compat stub was wrong, breaking ruby-vips - vips_class_map_concrete_all() needed a compat macro too - vips_class_map_all() was broken 10/8/11 started 7.26.3 - don't use G_VALUE_COLLECT_INIT(), many platforms do not have a glib this recent - don't leave image->kill set when we detect termination - test for a working C++ compiler, disable C++ parts of none found 10/8/11 started 7.26.2 - oops, im_benchmark.c had some stuff turned off - configure option --without-cfitsio was broken (thanks Mike) 26/7/11 started 7.26.1 - doc fixups - oops, ==0 missing from a strcmp() in vips7compat - fixed a race in im_XYZ2Lab() table build - added im_concurrency_get() to operation db - better benchmarkn.sh runs for the correct number of CPUs automatically, runs three times for each one, and just reports the fastest 26/7/11 started 7.26.0 - version bunp for 7.26 - various fixes to get win32 and OS X building 6/12/10 started 7.25.0 - attach the jpeg thumbnail and multiscan fields (thanks Mike) - faster tiff read for some common cases - faster im_tile_cache() - if we use C++ in libvips, add -lstdc++ to vips-7.xx.pc - im_vips2png() / im_png2vips() set / get png resolution (thanks Zhiyu Wu) - updated README - don't use tables for bilinear on float data for a small speedup (thanks Nicolas Robidoux) - no tables for uchar either, about a 15% speedup (thanks Nicolas) - dmask write was broken - lr/tbmerge() cast images to match, like im_insert() - lr/tbmosaic() work for any mix of image formats / bands - removed ancient balance stuff from im_lr/tbmosaic() - gtk-doc for mosaicing - add im_fits2vips() to the operation database - im_fits2vips() is lazy and much faster - im__file_open_write() / _read() has a flag for text_mode, get rid of all the remaining fopen()s - move cooc_* and glds_* to deprecated - move im_dif_std() to almostdeprecated - move im_simcontr() to almostdeprecated - add im_sines() to operation db - move im_spatres() to almostdeprecated - done gtk-doc for other - --vips-progress tells you about nthreads, tile size, nlines - gtk-doc for interpolate - move im_stretch3() to deprecated - move im_clamp() to deprecated - gtk-doc for video ... all operators done! amazing argh - set MAP_NOCACHE on OS X, otherwise performance dives off a cliff with files larger than memory - removed man pages, we are all gtk-doc now - im_jpeg2vips() ignores weird APP1 chunks - im_add() for int/uint was broken - im_ri2c() was broken - added VIPS_FORMAT_BIGENDIAN format flag - moved IMAGE and REGION to VipsImage and VipsRegion, classes over VipsObject - Rect -> VipsRect - libpng-1.5 supported - better png read for 1-bit and palette images - fits write - better fits metadata support - renamed all header fields, old names still supported, hopefully - all of iofuncs moved to vips_ namespace - lots of old iofuncs API moved to deprecated - added VipsOperation, an abstract base class for all vips operations - added VipsAdd, the first operation object - im_tiff2vips() int/uint mixup for rows_per_strip, thanks Bubba - removed the links feature, won't work with vips8 - got rid of the tools/ subdirs - added im_bufjpeg2vips() - tiff reader can do 1, 2, 4, 8 bit palette images - tiff palette read can do mono images - im_bufjpeg2vips() has a "header_only" parameter - added vips_image_get_data() - updated German translation (thanks Chris) - fixed typo in im_conv() overflow estimation which could cause errors - vips.c has new action syntax, knows about vips8 operations - add now has sizealike - vips7 binops all do sizealike too, also gbandjoin and ifthenelse - new API is now functional - vips.c generates GOption flags for vips8 operations - added im_gauss_dmask_sep() - laplacian generator lost -ve lobes for large sigma - added im_aconv(), approximate convolution - bumped smalltile to 512x512 for testing - added VipsPool, got rid of floating refs again, argh - VIPS_EXEEXT is now part of the exported API - im_blend() also does sizealike, oops - jpeg write was not inverting CMYK, thanks Ole - im_falsecolour() converts to mono 8-bit for you - im_icc_import*/export*() cast inputs for you - im_vips2tiff() uses im__temp_name() for intermediates - added vips_wrap7 ... wrap up vips7 operations as vips8 classes - man pages are back for commands 30/11/10 started 7.24.0 - bump for new stable - added im_dmask2imask(), im_imask2dmask() - im_rotate_*mask90() can do masks of any size (thanks Adam Turcotte) 18/7/10 started 7.23.0 - im_vips2bufjpeg() writes to a linked list, so it will work for any size image and header - added im_vips2bufpng() - use GetTempPath() to pick a temp dir on Windows - added "rd" mode to im_open() - vipsthumbnail and vips use "rd" - im_divide spots /0 - remove liboil dependency, we will use Orc instead - various small cleanups (thanks Tim) - add lcms2 support - VImage(filename) defaults to "rd" mode - revise window_offset / window_size, again - fix a mixup with ANY hints that caused performance problems on the main benchmark - rewritten im_circle as im_draw_circle, im_circle moved to almostdeprecated - added IM_TYPE_RW args for inplace ops --- nip2 uses this to wrap inplace ops automatically - special-case 3x3 masks in im_conv() for a 20% speedup - add IM_TYPE_RW flag for im__rw_image, helps nip2 auto-wrap inplace ops - im_insertplace() casts and bandalikes - copy iconv.m4 and friends in bootstrap, thanks Mike - moved the stupid _copy() versions of the inplace ops to deprecated, since nip2 can call inplace ops directly now - added im_draw_rect(), moved im_paintrect() to deprecated - added im_draw_image(), moved im_insertplace() to deprecated - added im_draw_line(), now clips, moved im_fastline() to deprecated - added im_draw_line_user(), now clips, moved im_fastlineuser() to deprecated - added im_draw_mask(), now wrappable, moved im_plotmask() to deprecated - added im_draw_point(), moved im_plotpoint() to deprecated - added im_read_point(), now partial, moved im_readpoint() to deprecated - added im_draw_smudge(), moved im_smudge() / im_smear() to deprecated - convolution functions support complex images - im_blend() can have any format condition image and it's converted to uchar - security fix for vips-7.23 wrapper script (thanks Jay) - im_affine() has a larger safety margin - fix gtk-doc warnings - small mask load/save improvements - mask gtk-doc done - add cfitsio dependancy - add FITS reader - land the vector branch and the orc dependancy ... we have SSE erode/dilate/add/conv - add IM_SWAP - dilate/erode do (!=0) on non-uchar images - add multipass Orc to im_conv(), 3.5x faster for 5x5 mask - im_profile() works for any image format, any number of bands - im_rank_image() works for mix of formats, bands - morph gtk-doc done - oops, missing braces in debug.h and util.h, thanks Laurence - update C++/Python binding - oop, bool constants are always (int) now, so (^-1) works for unsigned types, thanks Nicolas Robidoux - much lower memuse for im_cache() in complex pipelines - im_scale_dmask() normalises to 20, not 100 ... we hit the fast conv path more often 12/5/10 started 7.22.2 - the conditional image of ifthenelse can be any format, a (!=0) is added if necessary - oops vipsthumbnail sharpening was turning off for integer shrinks, thanks Nicolas Robidoux - im_vips2jpeg() could fail for very small images (thanks Tim) - threadpool wasn't stopping on allocate errors (thanks Tim) - vips_sink_disc() could block if allocate failed (thanks Tim) 12/5/10 started 7.22.1 - fix a problem with tiff pyramid write and >1cpu, thanks Ruven - constant ops clip to target range - oops, moreconst and moreeqconst were the same - better buffer handling in sinkdisc for single-line images - less chatty errors from "vips" - oops, don't rename "copy_set" as "copy_", thanks Ole 12/5/10 started 7.22.0 - bump and rename - vipsthumbnail has a manualpage and sharpens correctly - more interpolator work - fixes to --disable-cxx mode (thanks Mike) - added German translation, thanks Chris Leick - fixed typos in some messages, thanks Chris Leick - fix gettext startup - all "colour" in messages changed to "color", have a proper en_GB translation file - vipsthumbnail delete profile failed if there was a profile - interpolate cli unref was broken - more accurate, slightly faster bilinear and bicubic (thanks Nicolas Robidoux) 21/3/10 started 7.21.3 - added progress feedback to threadpool - --vips-wbuffer2 switch does all wbuffer use now - im_wbuffer2() renamed as vips_discsink(), some cleanups - im_gammacorrect() can do 16-bit images too - im_histplot() could fail for signed int histograms - im_fwfft() and im_invfft() could free their output image too early - added im_local_imask(), im_local_dmask() - added im_mpercent_hist() - im_maplut() casts the index image to one of the uint types - fixed a couple of /0 problems with scale == 0 masks - set G_LOG_DOMAIN to VIPS so we can use g_warning etc. - added VIPS_DEBUG_MSG() macro - --vips-wbuffer2 turns on threadpool for im_iterate as well - im_vips2tiff() uses vips_sink() instead of threadgroup - strip out threadgroup - add --enable-debug=xxx flag - im_iterate() -> vips_sink() - better number-of-bands detection for im_magick2vips() - added im_get_argv0() - added PFM read / write 16/1/10 started 7.21.2 - "invalidate" is careful to keep images alive, so invalidate callbacks can do im_close() - flood_blob could loop if start point == ink - added im_meta_remove() - added remove profile option to vipsthumbnail - added vips_bandfmt_iscomplex() and friends, im_iscomplex() and friends deprecated - im_bandjoin()/im_gbandjoin() work with images of varying formats - added im_copy_native(), deprecated im_copy_from() and friends - im_check*() name rationalisation - finally removed old flood stuff - im_insert*() bandalike and formatalike - im_*join() bandalike and formatalike - im_ri2c() bandalike - im_vips2png() saves 16-bit PNGs, if necessary - vipsthumbnail has selectable interpolators, optional sharpen - moved a lot of stuff (eg. im_iscomplex()) from deprecated to almostdeprecated to avoid breakage - im_csv2vips(): allow lines that end with EOF rather than \n - im_vips2tiff has a bigtiff option - oops, im_lineset() needs to ask for WIO of mask and ink - move cache invalidation to REGION, fixes a race - don't im_invalidate() after paint, it can cause horrible performance problems ... for example, im_plotmask() used as the action operator for im_fastlineuser() is terrible - instead, users of the inplace operations need to call im_invalidate() at the end of a set of paint actions to trigger an update - parent/child renamed as upstream/downstream in DAG - set VIPS_ICC_DIR in configure - ICC profiles are looked for in VIPS_ICC_DIR as a fallback - im_render() mask image generation no longer triggers image calc - threadgroups scale output buffers with number of threads for smalltile ... improves SMP scaling for narrow images on many-way machines - default to max number of processors (--vips-concurrency and IM_CONCURRENCY set >0 can override) on linux and win32 - better nprocs guesser - im_render() fixes to help the paintbox, some speedups too - added im_wbuffer2(), a new distributed threading system, and --vips-wbuffer2 to enable it, thank you Christian 15/1/10 started 7.21.1 - added "written" callbacks, used to implement write to non-vips formats 26/11/09 started 7.21.0 - branch for new dev cycle - argh, missing init from colour.c (thanks Peter) - argh, im_measure() was not looping over bands correctly (thanks Peter) - removed mmap_limit, we now always use windows ... reduces VM use hugely, because mmap windows are freed when their regions are freed, while images are only unmapped when they are closed - have a min bytes for mmap windows as well, so we don't make too many tiny windows - im_disp2Lab() was broken - deprecated.h is now defined in terms of current functionality, rather than repeating stuff - im_flood() and friends rewritten, typically 4x faster - removed --with-cimg option, added --disable-cxx - added im_system_image() (thanks Roland) - added postclose callbacks - added vipsthumbnail - oops, generate C++/Python wrappers for deprecated operations by default - read TIFF images strip-wise, not scanline-wise - better TIFF YCbCr reading (thanks Ole) - isanalyze generates fewer silly error messages 26/11/09 started 7.20.3 - updated en_GB.po translation - file_length is gint64 to avoid win32 breakage 23/11/09 started 7.20.2 - GETTEXT_PACKAGE now includes lib version number (thanks Jay) 11/11/09 started 7.20.1 - oop, im_clip2fmt() was missing PTOP flag, should get a small speedup - im_conv() / im_convf() didn't like all-zero masks - small updates to im_convf() from im_conv() - im_read_imask() produced an incorrect error message if passed a doublemask - rename im_convf(), im_convsepf() as _f() - vips.c drops _f suffix when overloading - regenerate C++ binding, don't make deprecated package 9/11/09 started 7.20.0 - removed vips-7.x.spec.in, shouldn't really have this in SVN - bumped version to 7.20 - fixes to get "make dist" working again 3/4/09 started 7.19.0 - version bump - tiny conv speedup - catch lcms error messages - fix includes for gtk+-3.0 - report virtual memory too in im__print_all() - cosmetic changes to nohalo - im_magick2vips() needs to invert alpha - now (more or less) passes -Wextra - added "fail" option to im_jpeg2vips: fail with an error on any warning (thank you Ole) - started gtk-doc changes - renamed im_meta_get_type() and im_header_get_type() as im_meta_get_typeof() and im_header_get_typeof() to prevent confusion with GObject type definers (was breaking gtkdoc object scan) - revised more names, limited documented API - im_buildlut() could segv for non-zero based tables (thanks Jack) - VIPS_BUF_STATIC() does not take length arg - check for SetImageOption() so we work with GraphicsMagick too - "header" sets a non-zero exit code if anything failed - add and use im_check_uncoded() and friends - matlab load handles column-major and plane-separated images (thanks Mikhail) - JPEG save allows "none" for profile, meaning don't attach a profile - saner, simpler, faster typecasting for im_add(), im_subtract(), im_multiply(), im_divide(), im_remainder() - im_remainder() has a float result for float types - im_measure() allows sel == NULL, meaning all patches - added "deprecated" package - faster, simpler, better im_max(), im_min, im_avg(), im_deviate() - im_max() returns true modulus, not square of modulus, for complex images - im_avg() works for complex, returning average modulus - im_system() fix (thanks Roland) - im_system() rewrite - im_maxpos()/im_minpos() are partial and work for complex - im_max()/im_min() are now convenience functions - im_maxpos_avg() handles complex and multi-band images - added im_point(), rewrite im_point_bilinear() in terms of this - close callbacks now happen *after* images have closed resources (such as open files) ... this lets them delete temps and stuff. Expect breakage :( - added vips_interpolate_get_window_offset() - boolean revised: smaller, more general, faster - im_remainderconst_vec() renamed to im_remainder_vec() for consistency - added im_shift*_vec() - renamed im_eor_vec() as im_eorimage_vec() for consistency, also and, or - renamed im_eorconst() as im_eorimage_const() for consistency, also and, or - relational revised: smaller, more general, faster - im_blend()/im_ifthenelse() allows many-band conditional, 1-band then/else - im_blend()/im_ifthenelse() allows band and format to differ between then and else parts - better im_check() functions - added im_flood_other() as start of simple segmentation operator - added im_label_regions() - im_printlines(), im_debugim() deprecated (use im_vips2csv() instead) - meta, header, callback, error, region, check, generate, memory gtkdocs - removed printlines tool, vips2csv is much better - removed other useless tools as well: debugim, binfile - fix up addr calcs on 64-bit machines with >2gb images and inplace ops (thanks Christoph) - im_generate() checks that im_demand_hint() has been called for this image - im_jpeg2vips.c, set scale_num on shrink (thanks Guido) - heh argh reading history always stopped after the first line (thanks Haida) - added im_histindexed - new im_iterate() calls start and stop functions from workers so resources they make are owned by the worker thread ... this makes it possible to have start functions which create mutiple regions and therefore allows im_iterate() to scan more than one image at once - threadgroup no longer has any default action, you must attach a work function - added im_copy_file() - added im_insertset() - im_insertplace() allows small to be outside big - added im__colour_difference(), colour ops now work on any image format - added im_col_display_get_table(), so display tables are now shared by name - added im__colour_unary() - drop "set" postfix from names, so "insert" can now take a vector of positions - deprecate all the "_raw" variants, not really necessary now - removed "contrib", not very useful anymore - added im_header_as_string() - im_malloc()/im_free() now call g_try_malloc()/g_free() ... removes confusion over whether to use im_free() or g_free() for things like im_header_string() - added im_history_get(), im_getexp(), im_printdesc() as wrapped functions ... so you no longer need the "header" program - image vectors from Python work, woo 25/3/09 started 7.18.0 - revised version numbers - updated vipsmanual - revised manpages - removed name and "changed" from vipsobject since we don't use them yet - explicitly link with stdc++ for nohalo etc. stuff - wrap im_gauss_imask_sep in C++/Python 6/3/09 started 7.17.3 - revised nohalo - remove fading stuff from im_render() -- cleaner and simpler - configure spots support for "restrict" - reset dcm:display-range on magick read to help DICOM - saner im_buildlut() behaviour - added im_gauss_imask_sep() - allow open and view of truncated images (thanks Joe & Rachel) - revising rounding on im_affine*() coordinate transforms to make them more stable - added Radiance write - added im_float2rad() - added IM_CODING_RAD, support where it makes sense (extract, flip, rotate, etc.) - IM_PROGRESS env var - docs for rad2float and IM_CODING_RAD 3/3/09 started 7.17.2 - im_magick2vips.c: allow funky bit depths, like 14 (thanks Mikkel) - isradiance was returning TRUE too often - radiance loader now loads packed RGBE/XYZE instead of unpacking to float - added im_rad2float() 11/10/08 started 7.17.0 - merge vips-7.16 brach back into trunk - bumped version number to 7.17.0 - re-added type.[hc] - added vipsinterpolate and im_affinei - added yafrsmooth interpolation - added yafrtest - added yafrnohalo - ubuntu 8.10 changes - interpolators get an output pointer, not region - tuning for bicubic - revised transform / clip code, we now do corner not centre - yafr-smooth reworked along the lines of bicubic - cleanups after yafr hacking - added affinei_all - don't set im_error() on failed callback - moved im_format_t to VipsFormat, now sits over VipsObject - IM_FORMAT_FLAG_PARTIAL -> VIPS_FORMAT_PARTIAL - updated docs - interpolators use type introspection - added vips --list classes, does formats too - include sys/param.h to get PATH_MAX in more places - added vips_format_get_flags() - oop, forgot to check for cancel during tiled tiff write - don't use mmap for tiff read: no performance advantage, chews up VM - VIPS_INTERPOLATE_SHIFT bumped to 12, we need the extra precision for u16 gel data - added string->double transform for cmdline args - merged class-params branch back into trunk - IM_FREE() can do "const char*" variables - im_buf_t renamed as VipsBuf - added vips_object_to_string() - added "nickname" and "description" properties to VipsObject - shift/and/or/eor ops were broken for non-int types - added nohalo interpolator - updated format docs - IM_INPUT_INTERPOLATE() now used by affinei and affinei_all - added vips_object_new - resamplers/interpolators now in a resample package - removed yafrnohalo.c - added matio as a dependency - added Matlab save file read - added Radiance file read - better file-not-found messages 11/9/08 started 7.16.3 - oop typo in manpage for im_project() - doc fixes - returning non-zero from eval callbacks was not always stopping computation 11/9/08 started 7.16.2 - added --without-v4l option - added -no-undefined to libsrcCC build, so we get a libvipsCC.dll - removed the swig dependency: we include the generated bindings in the distribution tarball 6/9/08 started 7.16.1 - trigger eval callbacks on tiled tiff write - added vips as an im_format_t - added im_format_write()/_read() convenience functions - more cleanups for the format API, argh - removed win32/ directory now mingw finally makes DLLs correctly - removed the windowed spcor for now, it has some edge effects 24/8/08 branch for 7.16 - renames and version numbers - load plgs from libdir as well as libdir/vips-x.x for compat - complex -> complex conversion was broken - refstring <-> gstring transforms - better behaviour with Magick non-presence - added --enable-links switch to configure ... we no longer make the bin/im_* links by default - started a 'format' section in the docs - configure fails if no gettext found - revised po/ - released as 7.16.0! 25/5/08 fork for loadable image format branch - image load/save in non-vips format code moved to own dir - simple format searching added - some cleanups for vips load - im_open() simplified - add im_format_flags - only consider formats with a save method in im_format_for_name() - oops, format sort order was reversed - im_filename_suffix() includes "." in suffix - merge back into trunk for 7.15.1 - remove im_ispng(), im_png2vips_header() etc. & friends - add "vips --list formats" - rename VBuf as im_buf_t for consistency - add type.[hc], start of new type system - removed man pages for IM_MIN, MAX and RINT to avoid case confusion on OS X / win 7/3/08 started 7.15.0 - MAGIC constants should be tagged as unsigned - write MAGIC correctly on sparc/powerpc machines (thanks Joe) - oop, we were still making fade threads even when not fading - tiny cond jump fixes for valgrind in colour.c - remove -lstdc++ from libs, except on windows - push Magick cflags earlier in the include order to make it easier to pick GraphicsMagick over ImageMagick (thanks Mikhail) - fix the en_GB translation - use meta to preserve resunit between tiff load and save - small doc improvements - read and write CMYKA tiff (thanks Doron) - performance improvements for morphology ops, esp. when zooming out - oop, im_render() was broken for mask == NULL - better support for multiple Python installs (thanks Jay) - better IM_SETSTR() stops some warnings - im_histcum() works for signed histograms - better rounding for im_conv(), im_convsep() - tiny speedup for im_conv() - better /0 test for remainderconst - revise i18n configure, get rid of intltool - command-line IMAGVEC input could segv with non-vips image output - added .tobuffer()/.frombuffer(), .tostring()/.fromstring() to Python binding - add PIL_mode_from_vips () and vips_from_PIL_mode () utility functions - update docs for new Python stuff - FIND_ macros no longer search for stuff, you have to specify prefixes if the packages are not on the default path (or in $prefix). This avoids some accidents on some platforms - configure prints a summary of optional packages found at the end - im_lhisteq() checks for window too small - added invalidate callbacks - now tests for MagickWand before ImageMagick (thanks Adam Turcotte) - added "-rotate" option to vips2dj - added man page for im_resize_linear - better jpeg-in-tiff YCbCr read (thanks Ole) - oops, invalidatefns were not being freed on im__close() - VMask() can init from std::vector, so Python can init from [] - added IM_LIBDIR, im_guess_libdir() - load plugins from libdir/vips-x.x on startup - added meta get/set int/double/string/area/blob/GValue to C++ API - include time_t in vips.h, thanks Nicolas Robidoux - lock global image list (thanks lee) 25/1/08 started 7.14.0 - bump all version numbers for new stable - better CMYK JPEG read (thanks Ole) - add __str__ to VError in Python (thanks Ole) - revert the dynamic wrapping for Python :-( next version! - added VImage::convert2disc (thanks Ole) - you can now set the jpeg quality factor for tiff pyramids (thanks Joe) - you can now shrink jpegs during read, see "man im_jpeg2vips" - added CMYK JPEG write - optionally use GraphicsMagick (thanks Bob Friesenhahn) - look for MAGICKCORE_HDRI_SUPPORT (thanks Marcel) - set icc profiles in tiff pyramids explicitly (thanks Joe) - add --without-cimg configure option - add im_maxpos_subpel - make im_abs compile without liboil - add im_align_bands - fix type overflow in complex division - fix im_cross_phase and im_addgnoise (Tom) - updated docs, C++ and python - header no longer stops on error - C++ dummy2.cpp helps OS X linking 12/12/07 started 7.13.3 - added "include " to VImage.cc to help gcc 4.3 - started moving the python binding to dynamic wrapping - added im_wrap(), im_wraptwo(), im_phasecor_fft(), im_cross_phase() (Tom) - memleak plugged in im_save_string_setf() - bugfix in and docs for im_gradcor() (Tom) - use Glib macros to make im_msb work on big-endian platforms (Tom) - use Glib macros to get rid of needless compile warnings (Tom) - fix type overflow in im_c2ps/im_abs (Tom) 31/10/07 started 7.13.2 - build cimg on windows fixes - various include cleanups, updated man pages - break im_wbuffer() out to a separate API - use im_wbuffer() to make im_vips2jpeg() compress in the background - also im_vips2png(), im_vips2tiff(), im_vips2ppm() - revised evaluation progress system - new evalstart/evalend/preclose callbacks fix over/underflow reporting - but the meaning of evalend has changed in a non-backwards-compatible way :( use preclose instead ito get the old behaviour - added "--vips-progress" flag to turn on a simple eval progress tracker - make im_spcor[12] static, im_spcor is wrapper (Tom) 28/9/07 started 7.13.1 - vips2dj can print RGB images - oop, include missing - add protos for generate/iterate function args, fix warnings - add cimg package, we now have C++ source inside VIPS, sigh - added OUTPUT_DOUBLEVEC and OUTPUT_INTVEC, use for im_maxpos_vec() and friends 29/8/07 started 7.13.0 - we now have a trunk and the version is 7.13.x, woo! - move manpages into a separate man/ dir ... speeds up builds a lot on windows - don't install malkovich - don't fail on unknown args for python (thanks Simon) 1/8/07 started 7.12.5 - im_embed() is more general ... x and y can be negative - predicate.c is smaller and cleaner - libsrcCC link improvement from Pablo - support 32/64-bit ImageMagick as well (thanks Marcel) - better im_magick2vips() for Q8 ImageMagick - split repository to trunk/branches ready for a stable 7.12.x branch 27/7/07 started 7.12.4 - proto.h had vars called small, breaking on win32 - more python fixing, we now have working matricies too 17/7/07 started 7.12.3 - fix to VImage.i for gcc 4.2 (thanks Damir) - eek, off by 1 for more than 1 band hists - needed a slightly larger worst-case buffer in im__b64_encode() - tiny cleanup for make_hI() prevents cond jump on ui in valgrind - --disable-threads was broken again - remove .svn dirs from dist - now passes distcheck again 17/7/07 started 7.12.2 - added im_bandmean() - added support for TIFFTAG_PREDICTOR (Andrey Kiselev) - fix TIFFOpen() mode snafu (Andrey Kiselev) 11/5/07 started 7.12.1 - memory.c abort()s with DEBUG - oops, im_bits_of_fmt() manpage was not being installed - im_histcum() can do all image types - updated NEWS - added im_csv2vips_header() - command-line csv read was broken (thanks Tom) - removed length limit on argument vectors (Tom) - added IM_PREFIX, configure-time install prefix - oop, turned off memory.c DEBUG - fix some bogus gcc 4.1 warnings with im_open_local_array() - better vips usage message - oops, IM_ANY missing from im_demand_hint() manpage (thanks Shahid) - just warn if plugins fail to load in im_init_world() - expose Vargv and make refblock public rather than private so that subclasses of VImage can add vips-style member operations (thanks Pablo) - oops, im_initdesc() needed to have bbits set correctly (thanks Shahid) - make VError derive from std::exception more officially - woo, got exceptions working in SWIG - soname version bumped to 12.x.x - oops, added vector ops to Python - check for overflow of int in return of strtol in dispatch system (Tom) - add im_[di]mask_[xy]size to dispatch system (Tom) - add im_gradcor(), im_grad_[xy] (Tom) 26/3/07 started 7.11.21 - ooo, added %include "std_except.i" & friends to VError.i, VImage.i - im_init_world() is more lenient about recursive invocation - im_gbandjoin() falls back to im_copy() for 1 input image - race condition fixed in im_render.c (thanks Simon) - bump for 7.12!!! 26/1/07 started 7.11.20 - another fix to im_region_image() (thanks Mikkel) - tiny speed up to im_rect_includesrect() - avoid recursive invocation in im_init_world() (thanks Christian) - fix to extract_prefix (thanks Christian) - buffer cache is now per thread - combine buffer unref and ref in a single operation to reduce malloc/free cycles - new internal API for passing regions between threads means we can remove buffer locks - more buffer/region sanity checks, plus a memory barrier - lock around error buffer changes - im_vips2mask() was wrong for nx1 m-band images - liboil back to "test" - add buffer_cache_list to avoid GHashTable _insert()s - oop, --vips-concurrency was broken - renamed (in dispatch layer) im_and/or/eor_const -> im_and/or/eorimageconst for consistency - C++ API wraps IMAGEVEC, DOUBLEVEC, INTVEC arguments - oop, IMAGE % vector was broken 21/12/06 started 7.11.19 - added im_linreg() (Tom) - various C++ API polishes, plus a bugfix (Dennis Lubert) - vips.spec split to devel and python too (Dennis Lubert) - be more explicit about sizeof(magic) - init magic to native order by default (thanks Dennis) - Hist becomes im_history_get() - new history mechanism is faster, uses much less memory, and removes duplicate lines - added im_get_option_group() - added official im_concurrency_set()/_get()() - don't read bbits from vips files ... set ourselves from bandfmt - oops add RGB16 and GREY16 to C++ header - --list packages option to vips.c - updated docs to 7.12 - oops, im_region_image() snafu was causing a lot of recomputation - make im_mpercent() suck a little less - EXIF save was a bit bOrked ... cause of mac crashes? - im_histgr(), im_heq(), im_hist() all number bands from zero now - fix stride in liboil calls - set RGB16 on 16-bit RGB ICC export 29/11/06 started 7.11.18 - added im_buffer_t so regions can share calculated pixels: 2-3x speedup on the benchmark - im_region_local() -> im_region_buffer() - im_sharpen() order change to help sharing - im_invalidate() clears buffer caches - add sentinel attributes - add some missing im_demand_hint()s - paint ops invalidate the output image - fix nothread eval - raise threads limit to 1024 (thanks Christian) - manual redone - vipsCC python init() hooks - add liboil dependency - use liboil for im_abs(), im_add(), im_divide(), im_floor(), im_multiply(), im_subtract(), im_lintra(), im_avg(),im_deviate() - quiet libtoolize test (thanks Tom) - im_benchmarkn now regrows image each time - strip meta from sample2.v ... saves a lot of mem (esp. Hist) - added im_isscalar() (Tom) - added IM_REGION_ADDR_TOPLEFT() (Tom) - reduce size of im_rightshift_size.c to help compile (Tom) - make im_stop_many(NULL) safe (Tom) 24/11/06 started 7.11.17 1;5Q - better benchmark script makes graphing easier - double-buffer image file writes - reuse write threads - clean up threadgroup / iterate / generate - added im_benchmarkn to make it easier to make a CPU-bound op on large machines - im_cache() failed for cpus > 1 1/11/06 started 7.11.16 - moved im__convert_saveable() into im_copy() (thanks Christian) - missing gobject dependency (thanks Christian) - --enable-threads was broken (thanks Christian) - eval without theads was broken (thanks Christian) - LIBADD libvips.la to libvipsCC.la (thanks Simon) - benchmark.sh is now plain sh, not bash - set ORIENTATION_TOPLEFT in im_vips2tiff (thanks Josef) - oops, im_vips2csv() output separator was broken - added im_benchmark2 - move XYZ2Lab LUT build outside the eval thread 30/10/06 started 7.11.15 - print leaked windows - oops, race condition in im_window_unref() - integrated im_region_window() into im_region_image(), tiny speed up 6/10/06 started 7.11.14 - ifthenelse and affine dhints revised - buildlut no longer outputs x cods - configure asks for glib >= 2.6 (we need GOption) - configure uses AC_TOOL_CHECK to find tool names to help cross-compiling. - better configure test for libexif - add C++ include ... include in a namespace - added im_benchmark / SMP benchmark script - add im_maxpos_avg() and im_point_bilinear() (Tom) - make im_region_free(NULL) safe (Tom) - link in manpages for im_contrast_surface (Tom) 8/9/06 started 7.11.11 - add im_norm_dmask() - removed old code for gradient and lindetect - internal decls split from proto.h to help SWIG - test for python and SWIG during configure - added python dir for the binding - python binding done! - oops, --without-python was broken (thanks Tom) - added python/test - add im_lu_decomp() im_lu_solve(), rewrite NR type functions in terms of these (Tom) 23/6/06 started 7.11.10 - still more im_affine() rounding/clipping tweaks - ignore "--" arguments to vips.c - im_init_world() also sets g_*_prgname() and loads plugins - add manpage for im_init_world() (oops) - error_exit() prints prgname - various cygwin fixes - fix cache thread assert failure (thanks Joe) - "header" now uses GOption, slightly different args, will loop over args - fixed assert() overenthusiasm in im_prepare() - im_csv2vips() now has separate whitespace / separator tables - add im_rightshift_size() (Tom) - add im_maxpos_vec(), im_minpos_vec() (Tom) - add im_norm_dmask() (Tom) - make im_free_[di]mask(NULL) safe (Tom) 23/6/06 started 7.11.9 - back on sourceforge CVS again - require openexr 1.2.2 or greater - range check xy on im_insert*() for sanity - VMask::invertlut decl removed (thanks Jean) - added \"all\" option to vips.c 17/5/06 started 7.11.8 - debrokened openexr read - added im_tile_cache() - added tiled read to im_exr2vips() - im_tiff2vips() now uses im_tile_cache() rather than its own cache ... faster in some cases, less RAM use in some cases, saves 200+ lines - removed 'broken' read option from im_tiff2vips() - read/write doubles with g_ascii_strtod() and friends where appropriate - add a "thread" member to region to help sanity check region ownership - saner threadgroup fixes a race problem on gcc 4.0.3 / amd64 - added im_vips2csv() - im_open() now does CSV read/write too - oops, broke vips main prog for function name in argv1 case 22/4/06 started 7.11.7 - split vips_png.c to im_vips2png.c and im_png2vips.c - added OpenEXR dependency - added im_exr2vips(), im_exr2vips_header() - added im_isexr(), im_open() knows about OpenEXR - added im_contrast_surface(), im_contrast_surface_raw() (Tom) - added im_msb(), im_msb_band() (Tom) - im_scale() sets Type on output - added RGB16, GREY16 types - im_*2vips() set these types if appropriate - configure fixes for mac - vips main prog uses GOption - im_icc_* locks around calls to cmsDoTransform() to avoid corruption on SMP machines - add im_prepare_many() (Tom) 10/3/06 started 7.11.6 - typo in manpage and header for im_rect_dup() (Tom) - don't abort image load if XML read fails - added im_video_test() ... test video source - oops, lcms .pc finder was not working - clipping problem in im_affine() fixed (thanks Clare) - test for attr support in libmagick - im_text() returns an error for empty string - im_falsecolour() scale reversed - im_remosaic() could crash on bad mosaics - configure changes to fix --without-magick, lcms and fftw (but sadly we now require .pc files for these libs) - im_vips2jpeg() automatically converts to 1 or 3 band sRGB uchar for write - also im_vips2png() - added im_project() 20/2/06 started 7.11.5 - added im_csv2vips() - commas in filename options can be escaped with a '\' - raise tile buffer limit (thanks Ruven) - im_spcor() and im_fastcor() have prettier borders - im_fastcor() returns sum of squares of differences, not sum of abs of differences 18/11/05 started 7.11.4 - small win32 fixes, thanks Juan - added im_flood_blob_copy() ... a temporary hack - much faster im_histplot() - read RGBA palette-ized PNG images more robustly (thanks Tom) - turn on -ms-bitfields automatically for mingw 26/9/05 started 7.11.3 - better error recovery for im_binfile() file too large - all raw files now use mmap windows, so (eg.) ppm and analyze reads can go >2GB - remove DISABLE_COMPAT ... you now have to define IM_ENABLE_DEPRECATED to get broken #defines - fix to build without exif, thanks Chas - use native win32 API for seek()/truncate() to work with large files - use attribute to check printf-style args with gcc - fix gcc4 warnings - removed ebuild, since it's in gentoo now - im_magick2vips() sets meta from attributes (good for dicom) - im_magick2vips() writes many-frame images as tall thin VIPS images - im_histcum() was broken for vertical histograms - im_histnorm() is neater - simpler and faster inner loop for im_conv() and im_convf() avoids gcc4 bug - appendc() was reading past the end of the buffer on MSB machines 13/6/05 started 7.11.2 - im_copy_set() was messed up in 7.11.1 - put into CVS, phew - fixed a rounding bug in im_affine() ... should no longer get black edges on image resize - if TIFF open fails in im_open(), try going through libmagick - merge requires all bands == 0 for transparency (used to just check 1st band) - 16 bit LAB TIFF read/write was wrong - new GType for refstring makes it visible from im_header_map() - jpeg loader attaches exif data (and human-readable meta fields) - jpeg saver writes any exif data - meta not wiped by im_*incheck() in a "w" image - meta keeps traverse order - now require glib >= 2.4 - require libxml-2.0 for meta save and new history mechanism - no more .desc files, history saved in XML after pixel data - i/s/d meta fields saved there too - added base64 encode/decode - added blob header write - added a save string type: types which define transforms to and from the save format get serialized - GValue meta API now exposed, since we can serialise anything - jpeg loader loads ICC profiles - jpeg saver saves ICC profiles from the VIPS header - src/header.c knows about meta system - added im_analyze2vips(), im_grid(), im_raw2vips() - extract/grid/replicate/zoom were not setting TRANSFORM flag - better falsecolour LUT - less stupid + more portable read/write of VIPS header - better im_updatehist() - jpeg load sets vips xres/yres from exif, if possible - jpeg save sets exif xres/yres from vips, if possible - icc_export and icc_transform attach profiles and intents to output images - added im_icc_import_embedded() to import with an embedded profile - split vips_jpeg.c into two, it was getting too big - added im_cp_descv(), im_cp_desc_array(), funcs use them - removed im_append_Hist() from API - fixed meta copy bug - better history copy, removed nonsense about 1st line of Hist being special - tiff read/write now reads/writes ICC profile from meta - edvips rewritten to remove stupidness, and can now set xml - header can now print xml extension block - IM_ prefix for colour temp names 1/6/05 started 7.11 - added im_copy_morph() - im_region_region() allows Bands and BandFmt to differ, provided sizeof( pel ) is the same ... makes im_copy_morph() work - added im_meta*() functions (MW) - im_header_*() rewritten for meta - added im_header_exists(), im_header_map() - use pkg-config to find libpng and ImageMagick - added im_lineset() - added im_extract_areabands() (JF) - added im_copy_from() (JF) 15/4/05 started 7.10.12 - im_ifthenelse just evals left/right for region all zero/all one - also im_blend - swap g_setenv() back to plain setenv() so we work with glib 2.2 9/4/05 JC started 7.10.11 - docs no longer have broken links - fixed memleak in im_text() 8/4/05 - one bit tiff read was sometimes reading a byte too far in each scanline 14/1/05 started 7.10.9 - im_filename_split() will now usually work for filenames containing ':' characters - added im_render_fade() for fancier nip2 image repaint - added "ccittfax4" as a TIFF compression option - fix all 64-bit compiler warnings - "," allowed as column separator in mask read - better at spotting singular matricies - small im_render() tidies - glib dependancy reduced to just 2.0, but untested ... helps people building on older systems who aren't interested in nip2 - removing leading spaces from IMAGEVEC arguments - load non-interlaced PNGs more efficiently - 1 point mosaic functions work on more image types - better memory allocation debugging info - local memory on regions can shrink as well as grow - shut down threadgroups on render if no dirty tiles - limit number of simultaneous renders - higher mmap window threshold - allow max == -1 for unlimited render cache - 'priority' marks non-suspendable renders - im_embed() mode == 4 paints white pels - im_tiff2vips() was broken with --disable-threads - oops, im_errormsg() compat macros were GCC only - larger default tile size and strip height - tiff write sets PHOTOMETRIC_CIELAB for vips TYPE_LAB images ... so we can write float LAB as well as float RGB (thanks Ruven) - also 16 bit LAB TIFF write - im_render() rewritten 20/11/04 started 7.10.8 - im_sharpen() is ~15% faster - more quoting for MAGICK finder - im_XYZ2Lab() uses a LUT rather than cbrt(), 5x faster - --disable-threads removes gthread dependency completely (thanks Simon) - intercept TIFF warnings as well as errors ... stops occasional libMagick exceptions - add im_init_world() to im_init() as well to help backwards compat (thanks Simon) - im_icc_present() function description was broken, thanks Jay - oops, libtool library versioning was wrong, thanks Jay - can now make TIFF pyramids of any non-complex image type (was uchar and LAB only), thanks Ruven - 1st order mosaic code now works for LABQ too - build system changes to make "make distcheck" work - RPM .spec files fixed up and updated by configure (thanks Simon) - tiny cleanups for vdump - use g_setenv()/g_getenv() - tiny improvements to IM_FREE*() - tiny VImage debug print fixes (thanks Jay) - swap off_t for gint64 to fix LARGEFILE support on win32 - computation feedback now uses gint64 for number of pels, so we give feedback correctly on images with >2**31 pels - other small fixes for >2**31 pels in an image 10/11/04 started 7.10.7 - im_histnD() was not checking BandFmt (thanks Kirk) - improvements to threading system speed up non-vips output in some cases - use cbrt(x) where we can ... 10x faster than pow(x,1.0/3) on win32 - typeo in im_text() when built without PANGOFT2 (thanks Stefan) 1/11/04 styarted 7.10.6 - tiny doc fixes - scripts now only depend on 'vips' program - im_open( "r" ) is now lazier ... for non-VIPS formats, we delay read until the first ->generate() - so im_open_header() now deprecated since im_open("r") is identical - now looks for fftw3 as well as fftw2 ... slightly faster ffts 19/10/04 started 7.10.5 - fix to light_correct (thanks Jay) - edvips knows about xoffset/yoffset - better vips enum<->char conversions 4/10/04 started 7.10.4 - man page fixes (thanks Jay) - removed last csh scripts (thanks Jay) - scripts default VIPSHOME to $prefix (thanks Jay) - doc build system tidies - im_rank() edge padding was wrong - im_vips2tiff() can now embed ICC profiles 22/9/04 started 7.10.3 - mildly better im_vips2tiff() - *, -, +, /, % between two images now work for mixed number of bands - im_free() was missing a man page - revised documentation 1/9/04 started 7.10.2 - C++ .pc files were still set for 7.9, grr - im_insertplace() didn't check compatibility of images (thanks Matt) 27/7/04 started 7.10.1 - set default stack size explicitly to help platforms with a very low default - 16 bit RGB tiff read was broken (bug introduced in 7.9.5, thanks Haida) - !pangoft2 was broken, thanks Kenneth - win32 build fixes 12/7/04 renamed as 7.10.0 - added NOCACHE function flag ... stops nip memoising video & paint ops - added im_extract_bands() ... takes out many bands from an image - im_vips2tiff() scanline write speed up for area pipelines 10/6/04 started 7.9.6 - tiny polishing of im_ppm2vips() - im_blend() can now work on labq - boolean ops all work on float/complex images (by casting to int) - im_maplut() was broken for 1 band image + many band lut + >8 bit output - im_lintra_vec() now handles 1 band image and many band vector to make many band image - oops, im_lintra_vec() was missing a man page - im_measure() can work on labq - im_lhisteq() uses new embed mode, _raw() version is one pixel smaller, sets Xoffset/Yoffset for new origin scheme - generalised im_tone_build() to any image type to make im_tone_build_range() 20/5/04 started 7.9.5 - tiff output res can be a single number too - added im_text() to make a bitmap from a string with pango - im_tiff2vips() does 16 bit RGBA - im_binfile() was broken since 7.9.2 due to im_mapfile() change - im_ppm2vips() now works for 16 bit images - added im_copy_swap() ... copies, reversing byte order - im_resize_linear() was broken for some images, thanks Javi 8/3/04 started 7.9.4 - oops, config.h include missing in a few places - im_vips2tiff() can now write 1 bit images - im__find_lr/tboverlap() now exported to nip - better edge tile handling for tiff read/write (thanks Ruven) - added extend-pixels-from-edge mode to im_embed() - im_conv*(), im_rank(), im_stdif(), im_dilate(), im_erode() all use it to expand their input, so their output now has guess borders, not black borders - im_fastcor() now does an im_embed( 1 ) on the output ... the zero borders were very annoying before, since you would usually be searching for the minimum point - no change to im_spcor(), since you will usually be searching for the maximum - better im_render() cache behaviour under heavy loads - im_affine() revised * clip, resample and transform is now pixel-perfect for all inputs (I hope) * uses the new embed to make sure there are no black borders from edge interpolation * about 20 - 30% faster - policy change: Xoffset and Yoffset are now set by all operations to record the position of the input origin in the output - im_replicate() is much faster for some cases - added tile and mirror flags to im_embed() - added im_cache() convenience function - better ETA for image calculation - im_tiff2vips() now has a "broken" option so it can read tiled tiffs made with earlier versions of vips - on convert float to int format, now does floor() not rint() ... more 'mathematical' - added im_rint() - im_sharpen() now uses a gaussian mask - im_convsep() more resistant to int overflow problems - added im_make_xy(), avoids rounding problems with the old float-based thing - im_profile() now makes vertical images for a vertical profile - added im_vips2tiff() option to set the resolution in inches not cm (thanks Andrey) - im_binfile() is now exported 6/2/04 started 7.9.3 - added an im_init_world() to im_open(), to help old progs - renamed VSemaphore as im_semaphore_t - started using libtool library versioning - now uses g_module_*() in place of dlopen() - now uses pkg-config instead of vips-config (thanks Simon) - fixes to vips.h for _ADDR() with DEBUG on (thanks Konrad) 10/12/03 started 7.9.2 - patches for freebsd, thanks Lev Serebryakov - vips2dj knows about my colour laser printer - added i18n support, glib/gmodule/gthread dependency - im_error*() API revised to be more i18n friendly - List type removed, now uses g_slist - VBuf added, some more utility funcs pushed down from nip - im_thread stuff removed, now uses g_thread - im_lock stuff removed, now uses g_mutex - im_semaphore_t renamed to VSemaphore, not sure this is a good idea - build with --disable-threads to turn off threaded render - #include now pulls in most of the public API, you shouldn't need other vips includes very often - im_close() is better at cleaning up if there's an error - inverse FFTs could fail for wider-than-high images with fftw - better im_icc_transform error messages - bug fix in im_render with large caches - im_binfile() now has an offset parameter - im_mapfile()/im_unmapfile() now work on IMAGE and record the length of the file they mapped ... this lets VIPS successfully unmap a file if it changes size while it's open 20/10/03 started 7.9.1 - threadgroups now have their own kill flag - im_plotmask() now does anti-aliasing - im_iterate() fix for operations on mmap window images (thanks Clare) - im_writeline() stops on kill - fix for im_fwfft() segv for wider-than-high real images (thanks Andrey) - fix for im_fwfft() to work for non-square real images (thanks Andrey) - can now read and write 32-bit IEEE float TIFF (Andrey Kiselev) - clean-ups for colour.c (Andrey Kiselev) - no longer lets you make an image with width|height|bands == 0 (thanks Joe) - im_vips2tiff(), im_vips2*jpeg*(), im_vips2png(), im_vips2ppm() could sometimes fail for mmap window input images (thanks David) - added IM_RECT_HCENTRE(), IM_RECT_VCENTRE() macros 20/8/03 JC - started 7.9.0 - added im_rank_image() ... im_maxvalue() a special case of this - im_subtract() goes up to int earlier for better value preserving, thanks Haida - im_rank() much faster for large windows, correct result on all platforms (dratted memcpy() was causing problems before) - fixed problem with libMagick config if installed somewhere strange - fixed problem with include order in library compile - added --without-magick configure option - added im_render(), threaded background image paint - added im_replicate(), replicate an image horizontally and vertically 31/5/03 JC - started 7.8.11 - fixed a problem with relational operators and some combinations of input types (bug introduced in 7.8.9), thanks Haida - vips-7.8 script overrides VIPSHOME environment variable - better im_guess_prefix - stupid light_correct script no longer uses /pics/tmp - added batch_crop script 22/5/03 - started 7.8.10 - the JPEG writer can embed ICC profiles in output images ... although I've yet to see it make any difference :-( test this carefully at some point - fixed a possible coredumper in jpeg write - jpeg read now spots truncated files - im_invertlut() now makes an image, not a mask ... sorry :-( - im_histnD() makes an n-dimensional histogram from an n-band image - im_col_pythagoras() patch - IM_NUMBER() now returns int not size_t - new win32 build system from Juan and friends, based on tmake - sample project files for MSVC added, thanks Juan - win32/ subdir now has the win32 build systems - spec/ subdir now has the spec files for building RPMs - dist now includes formatted documentation - license change: VIPS is now LGPL, nip stays GPL ... this means proprietary programs can link against the vips library - had a report of a working VIPS build on a 64 bit system (!) - im_log_dmask() now includes all of the negative lobe, thanks matt - vips-7.8 start script now auto-relocates - im_spcor_raw(), im_fastcor_raw() now exported 29/4/03 - started 7.8.9 - changes to build to help MSVC - oops, makedef.pl missed out function names with an initial cap, and error_exit() - im_min() and im_max() gave random wrong results for >1 thread on >1 CPU machines (bug introduced in 7.7.20), thanks Joe - vips.c no longer generates C++ wrappers for functions with no image argument (thanks Haida) - im_invertlut() now wrapped by hand in VMask.cc - C++ docs updated - added im_open_header(), returns an IMAGE with just width/height/etc and no data - ... so now "header" will print useful stuff even on truncated files - tiff writer knows about alpha (thanks Jenny) 7/2/03 - started 7.8.8 - build failed with lcms turned off - im_spcor() could segv for 16bit images (thanks Joe) - im_tiff2vips() read resolution expressed as pixels/cm incorrectly - im_vips2tiff() tries not to write mad resolutions - header and im_open file type tests reordered for slight speedup - im_copy_set() had a broken dispatch function for xres/yres - im_fwfft() exploits libfftw real -> complex transform if possible for a 2x speed-up (thanks Matt) - im_invfftr() added for complex -> real inverse transform for 2x speed-up (thanks Matt) - im_freqflt() now uses im_invfftr() for real result and speedup - im_flipver() could segv on some inputs, thanks Clare - relational operators now work on complex - relational rewritten ... now fractionally slower, but 1/3 the size - vips2dj -1:1 produced incorrect height - better overlap-too-small detection in mosaicing code - im_system() can have NULL output - global balance ignores overlaps with only transparent pixels 3/1/03 - started 7.8.7 - worked in patch from Hans Breuer (thanks!) - png read/write with im_png2vips(), im_png2vips_header(), im_vips2png(), im_ispng() - im_errorstring() and im_col_displays() are now functions not externs (helps DLLs) - many include fixes to help native win32 build - added libMagick support, 78 file formats now loadable with im_magick2vips(), im_magick2vips_header() and im_ismagick(), w00t - now installs vips.m4 to $prefix/share/aclocal - added im_icc_export_depth() ... export to device space with a specified bit depth (8 or 16) - vips.def now rebuilt with custom rule in libsrc/Makefile.am - removed externs im_Type, im_BandFmt, im_Coding, im_Compression to simplify DLL build - im_mmap() -> im__mmap(), since it's supposed to be an internal function - new vips-7.8.x/proj directory holds unsupported sample makefiles and config.h for building with the MSC toolchain - new scripts batch_image_convert and batch_rubber_sheet (thanks Joe) - added the RPM .spec files to the main distribution - InitializeMagic() now passed "" rather than NULL to avoid assert() problems on some libMagic versions 2/12/02 - started 7.8.6 - now reads 8-bit RGBA tiff - C++ build guide fixes (thanks fsicre) - im_Type2char array text slightly messed up - global_balance is safer for complex mixed mosaics - removed im_lintra() fallback to im_copy() for scale == 1, offset == 0 ... too confusing - im_tiff2vips() now reads 16-bit LAB - added im_Lab2LabS() and im_LabS2Lab() 5/11/02 - started 7.8.5 - fix for mmap window of local region ... caused im_iterate() to break sometimes for large images, in turn occasionally breaking im_max()/im_min()/etc. (thanks Joe) - tiny speed up for im_rot90()/270() - on install on win32, add .exe suffix for links - vips.c knows to remove .exe suffix for linked commands - added im_errormsg_system() ... decode win32 error codes too - pagesize calcs for roving mmap windows were messed up on win32 (thanks Kirk) - some TODO cleanups - global balance broke horribly if you had filenames with spaces in (thanks Clare) 31/10/02 - started 7.8.4 - im_unmapfile() includes mixed up on mac os x - libtool patched for mac os x - vips.c sets numeric locale to "C" 27/10/02 - started 7.8.3 - configure fixes help mac os x - im_guess_prefix() adds ".exe" suffix on w32 if not there - changed im_measure() error messages to number bands from 1 - added func descriptor for im_read_dmask() to help nip, updated C++ API, docs 21/10/02 JC - started 7.8.2 - tries rand() if random() is not available - tries mktemp() if mkstemp() is not available - turns off realpath() if not available - added IM_DIR_SEP/IM_DIR_SEP_STR directory separator character/string - added IM_PATH_SEP/IM_PATH_SEP_STR path separator character/string - added im_path_is_absolute() - vips.c knows to link to vips.exe on win32 - spot mingw* and set BINARY_OPEN - open images in binary too (since we now read() the header) 10/10/02 JC - im_lintra() and im_lintra_vec() were broken for complex images :-( thanks matt - renamed im_and() as im_andimage(), im_eor() as im_eorimage() and im_or() as im_orimage() ... avoids breakage in the C++ layer - added im_dE00_fromLab() - limited release as vips-7.8.0 2/10/02 - renamed as vips-7.8, woohoo - revised documentation 19/9/02 JC - started sorting out VIPS #defines ... there are now a sensible set of new names (eg. NOCODING becomes IM_CODING_NONE, LAB becomes IM_TYPE_LAB) - define IM_NO_VIPS7_COMPAT to turn off the old names - added im_mmap()/im_munmap() layer for windows portability - removed the contents of history.h .. obsolete - added IM_IMAGE_ADDR() macro 10/9/02 JC - handle errors from TIFF lib correctly - configure fixes for cygwin - CMYK TIFF write fixed - configure fixes for mingw 5/9/02 JC - im_cp_desc() now copies Xoffset/Yoffset 21/8/02 JC - started 7.7.24 - reads CMYK TIFF - reads dpi from TIFFs - better float Xres/Yres 14/8/02 JC - new header fields Xoffset and Yoffset ... used by functions to hint the position of the origin in output images - support added to c++ api and to header - im__lrmerge(), im__tbmerge(), im__affine(), im_insert(), set Xoffset/Yoffset - now uses , not for better suse w0rkage - better configure for fftw (uses libdfftw name if libfftw not found) 8/8/02 JC - large file support with mmap() windows ... had to change im_prepare_inplace() to im_prepare_to() benchmark: - system hardware: 2 x 2.5GHz P4, 1GB RAM, 15k SCSI, ReiserFS os: suse 8 (kernel 2.4.18) compiler: gcc 2.95.3, -O2, threads turned on images: fred.v, fred2.v; both 4k by 4k LABPACK (64MB) images: jim.v, jim2.v; both 15k by 15k LABPACK (900MB) time: smallest real of 5 runs, system idle vips: 7.7.23, debug on in im_openin.c, window limit set with an environment variable - benchmarks cpu-bound: im_sharpen fred.v fred3.v 11 1.5 20 50 1 2 io-bound: im_insert fred.v fred2.v fred3.v 4000 0 worst-case: im_rot90 fred.v fred3.v - results desktop: no mmap windows mmap windows cpu-bound real 0m3.712s real 0m3.970s user 0m6.010s user 0m6.390s sys 0m0.900s sys 0m1.110s io-bound real 0m1.813s real 0m1.865s user 0m0.900s user 0m0.990s sys 0m1.720s sys 0m1.520s worst-case real 0m1.344s real 0m3.039s user 0m1.270s user 0m2.230s sys 0m0.850s sys 0m3.050s not quite sure why sharpen is a little slower (4%?) ... IO speed is about the same though ... worst-case is having to constantly move windows about (500,000 page faults, vs 10,000 for no windows) again, with an image larger than RAM no mmap windows mmap windows io-bound real 2m52.759s real 2m11.172s user 0m14.940s user 0m14.890s sys 0m29.940s sys 0m26.560s worst-case real 3m35.391s real 3m50.760s user 0m19.850s user 0m26.600s sys 0m12.650s sys 0m43.130s mmap windows actually slightly faster in this case ... plus they stress the OS less 31/7/02 JC - added -lm for better lcms detect - README notes for fftw on suse8 - im_profile() sets HISTOGRAM for output image - im_copy()/im_copy_set() function descriptor no longer sets PTOP ... helps avoid LUT problems - im_subsample()/im_zoom() fall back to im_copy() for shrink/grow == 1 - im_lintra() falls back to im_copy() for scale == 1, offset == 0 - no longer use Type == LUT ... all just Type == HISTOGRAM now - im_blend() was messed up for > 1 band images :( 16/7/02 JC - started 7.7.23 - im_XYZ2sRGB() wasn't setting Type = sRGB - im_icc_import() was broken for rgb - im_header_string() had wrong return type in function database 13/7/02 JC - added im_flood_blob() - added im_open_local_array() ... C API convenience function - oop, im_flood() was missing a man page - Type == FOURIER added to help visualisation - released as 7.7.22 30/6/02 JC - JPEG, TIFF and PPM import all now set sRGB Type for RGB import - im_header_int(), im_header_double() and im_header_string() added to aid UIs - now uses gettimeofday(), not time() - for consistency with other trig functions, im_c2amph() now returns degrees not radians (ouch) - added im_c2rect() ... turn (amp, phase) to rectangular - added im_sign() ... unit vector in direction of value - better im_scaleps() ... old code was terrible - rewritten im_rotquad() ... now partial - im_icc_export()/_import() now do ABSOLUTE correctly - added im_icc_ac2rc() ... converts absolute to relative colorimetry 25/6/02 JC - added im_copy_set(3) ... like im_copy(), but set informational header fields 20/6/02 JC - added im_ceil(), im_floor() - im_Lab2LabQ was not clipping a/b range correctly - im_icc_export(), own ABSOLUTE mode - released as 7.7.21 28/5/02 JC - im_remainderconst_vec broken for float/double - added Yxy colourspace 16/05/02 JC - auug, libtool was all messed up ... redone all the autotools stuff - uses libtool convenience libraries to build vips in sections - uses config subdir for temp files and .m4 things - patched stupid suse config.guess - vips2dj patched for better raw cmyk - released as 7.7.20 12/5/02 JC - im_vips2jpeg*() and im_vips2ppm() now both partial - started updating the C++ guide - had to change the location of the C++ headers :-( all C++ progs should now have: #include this is so things can work on systems which do not have case sensitive file systems - changes for Mac OS X * im_system() TRUE/FALSE removed * searches /*/[lib|include] to get fink libs for tiff and jpeg 30/4/02 JC - several functions were missing IM_FN_PIO in their descriptor ... this was harmless for nip/ip/C, but broke the ref counting in the C++ layer - im_system() now defaults "/tmp" for temp files - STRING input and output args were broken for C++ :-( - threads exit more quickly on error - im_min()/im_max() now partial (at last) - im_remainderconst()/im_remainderconst_vec() added - --with-dmalloc configure switch - vips2dj does CMYK and mono too - im_vips2tiff() allows any number of bands (but not the right way to write CMYK, see TODO) 26/4/02 JC - old ICC profile reader removed - little cms wrapped ... configure spots it, im_icc_transform() uses it to map between two images - also im_icc_import() and im_icc_export() so you can see PCS images - im_icc_present() to test for existence of lib - README fixes 4/4/02 JC - TODO changes - oops, DEBUG left on in im_invertlut() 2/4/02 JC - im_fwfft.c/im_invfft.c now use libfftw if available ... about 5x speed up and double precision - added FIND_FFTW autoconf macro - include/vips/proto.h changes 26/3/02 JC - started 7.7.19 25/3/02 JC - im_log_dmask() was broken (thanks matt) - casts between VDMask and VIMask were broken (thanks matt) - various error msgs improvements and tiny man page fixes 13/3/02 JC - tb/lr merge first/last cache moved to per-call state for better sharing - im_remosaic() bails out faster on error and makes better error messages 13/3/02 ruven - im_vips2tiff() pyramids stop at tilesize, not 64x64 25/02/02 JC - im_remosaic() is smarter, and works better with im_global_balance() - im_affine() 2x faster 14/2/02 JC - started 7.7.18 - vips.m4 and libsrc/Makefile.am fixes for IRIX 11/02/02 JC - vips/thread.h and vips/threadgroup.h were missing extern "C" for C++ - VImage::write() now tracks dependencies, so you can write() to a partial safely ... although it's not a very useful thing to do (thanks Mike) - new VImage::print() function for debugging - added im_print() 22/01/02 JC - started 7.7.17 15/01/02 JC - im_rect_unionrect() and im_rect_intersectrect() safer for repeated args - im_video_v4l() no longer perrror()s on ioctl fail for less spam 03/01/02 JC - started 7.7.16 - im_version_string() really does return the date as well now 12/12/01 JC - im_guess_prefix() extra smartness for relative path names - VImage() no longer uses tmpnam() (thanks Paul) 11/12/01 JC - renamed im_fexists() as im_existsf() 7/12/01 JC - ppm man pages added (doh) 28/11/01 JC - warnings on g++ 2.96 fixed 22/11/01 JC - started 7.7.15 - im_video_v4l() failed to compile on non-linux platforms 7/11/01 JC - im_remosaic() added - im_*merge() are more intelligent about transparency in bizarre overlaps - grr! putenv() semantics change on more recent clibs ... should be safer now 19/10/01 JC - VDisplay( "display name" ) segved on unknown display :-( thanks mike 26/9/01 JC - contrib tools get data files from share/vips/xxx area now - im_vipshome() renamed as im_guess_prefix(), reworked for new package layout - doc/ build sorted out - ... but of course, docs still need updating for 7.8 20/9/01 JC - fix to im_vipshome() - ip2 renamed as nip - split to library only ... separate ip and nip packages - new VIPS_VERSION_* macros set from configure.in in vips/version.h.in - vips.m4 VIPS finder - reworked README, doc/README and TODO - now installs to /usr/local/ by default - fmask4th.c was including varargs.h ... d'oh - include area reorganised: everything inside now ... hopefully the only user-visible change is that all plain C progs need to change: #include to: #include the C++ API should be unaltered 21/8/01 ruven - im_setupout() was missing some #includes 20/8/01 JC - started 7.7.14 15/8/01 JC - added libxml dependency for ip2 27/7/01 JC - im_conv(), im_convf(), im_convsep(), im_convsepf() now reject masks with scale == 0 26/7/01 JC - started 7.7.12 25/7/01 JC - started 7.7.11 - oop, im_histeq() and im_tonemap() also missed - better error messages from im_run_command() 23/7/01 JC - started 7.7.10 - im_sharpen() failed due to change in im_band_extract() offset 20/7/01 JC - started 7.7.9 4/7/01 JC - im_open(,"w") open() delayed until im_setupout(), very slightly safer - updated im_open() man page - im_tiff2vips() now embeds index in filename ... and it's page number (from 0), not subsample factor - finally bit the bullet ... im_extract()/im_extract_band() now number from zero (sorry!) - and im_lrmosaic()/im_tbmosaic() bandno param too 29/6/01 JC - im_region_free() now frees immediately 27/6/01 JC - im_vips2tiff() man page updated for deflate, 2 years late 22/6/01 JC - oops, limit wrong on im_rank() 21/6/01 JC - better post_install for --prefix outside VIPS's tree - -ltiff needs -lm in acinclude.m4 ... fixes configure on redhat 7.x 13/6/01 JC - started 7.7.8 6/6/01 JC - im_invertlut() added 31/5/01 JC - im_colour_temperature, im_XYZ2Lab_temp, im_Lab2XYZ_temp added - ... colour temp stuff needs sorting out properly 25/5/01 JC - added vips-config script, cf. gtk-config - --without-threads option added - did a bit of work on the C++ API docs 24/5/01 JC - added im_tiff2vips_header(), im_jpeg2vips_header() and im_ppm2vips_header() - header uses these to print fields quickly - switched to config.h - configure.in rewritten ... much nicer, fewer options, more automatic 17/5/01 JC - im_matinv() didn't free stuff correctly on singular matrix 16/5/01 JC - vips2dj now knows about 5000ps printers - allow RW mode for non-native VIPS image files, for 8 bit images 2/5/01 JC - started 7.7.7 1/5/01 JC - im_addgnoise() did not work for >1 band images 23/4/01 JC - configure options to remove support for JPEG and TIFF ... helpful for a no- dependencies build 20/4/01 JC - im_(v)snprintf() added - all sprintf()s removed 15/4/01 JC - im_affine() had a rounding problem 11/4/01 JC - tiny mosaicing bug fixed in im__lrcalcon - started 7.7.6 21/3/01 JC - new iblend code in im_tbmerge() was typo-d - mosaic1 was broken by affine too 20/3/01 JC - im_image() failed for FMTUCHAR 12/3/01 JC - started 7.7.5 - im_sharpen() uses seperable convolution for big speed up - new "Print" menu 11/3/01 JC - REALVEC renamed as DOUBLEVEC - added IMAGEVEC - added IM_INPUT_IMAGEVEC - gbandjoin now has function description - new function im_maxvalue() - im_compass()/im_lindetect() reimplemented with im_conv()/im_maxvalue(), about 15% faster, works for any type, partial - im_gradient() reimplemented with im_conv()/im_abs()/im_add(), about 30% slower, works for any type, partial 10/3/01 JC - new function, im_clip2fmt() converts between any image formats ... slightly faster than the old im_clip() - legacy im_clip2us() etc. functions now just call this 9/3/01 JC - im_conv() rewritten, simpler, about 10% faster - im_convsep() rewritten, now does any non-complex type, partial, 20% faster - new functions: im_convf(), im_convsepf() for DOUBLEMASK - raw versions of each - legacy convolvers (eg. im_convbi()) removed 8/3/01 JC - new function im_blend() - new function im_lab_morph() - speed up to im_ifthenelse() - speed up to im_*merge() (uses integer arithmetic for integer blends) 4/3/01 JC - tiny speed ups to im_histgr() - speed ups to im_maplut() 3/3/01 JC - new functions: im_histnorm(), im_histcum() - im_histeq() more general - im_vipshome() --- better behaviour for relative paths 2/3/01 JC - new video package - im_video_v4l1() (video for linux) added - configure.in switches to turn v4l1 on and off 1/3/01 JC - new im_histspec() implementation ... more general, bugs removed 14/2/01 JC - better vips2dj usage message 13/2/01 JC - im_image_sanity() added, called in various places in iofuncs 9/2/01 JC - added 'check' and 'name' class member stuff to ip from ip_gtk2 - new "Plot" menu - new "Overlay" menu - more stuff in _stdenv/_list ... curried forms of head/tail etc. 7/2/01 JC - started 7.7.4 - vips2dj and vdump now use im_vipshome() 5/2/01 JC - new im_vipshome() function - min()/max() macros renamed as MIN()/MAX() - new im_load_plugins() function - vips.exe and ip now load $VIPSHOME/lib plugins at startup 2/2/01 JC - mosaicing functions now have an extra max blend width parameter 30/1/01 JC - fixed tbmerge no overlap detect 13/12/00 JC - started 7.7.3 30/12/00 JC - vips.h fixes for cygwin/wingdi conflict 27/11/00 JC - added im_vips2ppm(), im_open() imports and exports it - fixed nasty implicit output conversion problem for PIO dispatch() calls 21/11/00 JC - added im_ppm2vips() 16/11/00 JC - configure.in fixes ... jpeg found correctly now - searches for libz as well 16/11/00 JC - started 7.7.2 5/11/00 JC - speed up to lab2labq 19/10/00 JC - started 7.7.1 13/1/00 JC - oops, im_open() was missing an 'else' in jpeg/tiff load 5/8/00 JC - im_vips2tiff() now has mode string embedded in output filename - im_vips2jpeg() now has qfac in output filename - im_open() understands this 11/7/00 JC - new im_image() function ... wraps a VIPS image around a memory buffer - C++ layer changes: * now use #include * error renamed as VError * new VMask() constructors * new VImage() constructor * new VImage::data() access member * more operator equivalences: <, >, <=, >=, ==, !=, &, |, ^, % 17/6/00 JC - more consts added to vips protos 10/5/00 JC - minor configure.in changes to help solaris - removed _TIFFmalloc() and _TIFFfree() calls 9/3/00 JC - fixed rounding problem in generate grid 8/3/00 JC - fixup to im_system() temp dir 7/3/00 JC - added im_system() - small tidies 1/3/00 JC - better plugin test in configure.in 26/2/00 JC - fixes to Makefile.am in ip/src* and configure.in, to help ip find the right gtk includes on systems with more than one gtk-xxx installed 21/2/00 JC - now builds ip and ip_gtk2 16/2/00 JC - configure.in fixes for xil and some TIFF/JPEG strangeness 15/2/00 JC - im_global_balancef() was broken! d'oh - note in README about enabling video cards 10/2/00 JC - configure now searches for xil ... FIND_XIL macro - im_zoom() spots integer overflow - better shape set on region drag end in ip - better zoom-too-far handling in ip 13/1/00 JC - fixes to configure etc. to help cygwin - jpeg is now searched for too ... FIND_JPEG macro 10/1/00 JC - global_balance() now uses new affine() atuff 27/12/99 JC - mosaic1 stuff now uses new affine() funcs 21/12/99 JC - added Joe's docs - im_LabS2LabQ() rounding on a/b slightly broken for a/b == 0 20/12/99 JC - new function: im_affine() - similarity*() now in terms of affine() - tests for error return in reduce.c from maplut - small clean-ups 15/12/99 - im_version() added, new iofuncs package for it - ip did not call zero-input-arg vips functions - vips.c did not like zero-input-arg functions 6/12/99 JC - Sobel filter was a bit broken 3/12/99 JC - menu reorganisation - generate gauss mask dialog 2/12/99 JC - reworked text file IO, better error messages 1/12/99 JC - reworked .iprc filename stuff, cleaner 30/11/99 JC - better menu set switcher in calc preferences - ip now thinks it's 7.7 - did a spellcheck on the ip guide 29/11/99 JC - 7.7 started! - srgb D65->D50 converter - Negate added to arith - find similar pixel value dialog - find similar colour dialog - paste into background dialog 19/11/99 JC - adjust labq was mising - shrink image defaulted to /2 not /1 - sharpdropshadow broken - Rotate.* broken - vips-7.6.3 release 18/11/99 JC - ip didn't report space free on >2GB filesystems correctly - ip did not link statically against libXpm on solaris7 17/11/99 JC - im_histplot() failed for all 0's histogram - new profile_image dialog - man pages for im_sRGB2XYZ/im_XYZ2sRGB were broken - new colourize image dialog - new shrink image image dialog - new expand image image dialog - better doc Makefiles 16/11/99 JC - more menu reorganising - new image_to_mask/mask_to_image buttons - new match_two_images dialog - new measure_colour_chart dialog 15/11/99 JC - new custom LABQ sharpen in Image menu - configure support for SGI video (thanks Ruven) - menu fiddling in ip - new "resize canvas" menu item - im_insert_noexpand() added, no docs tho' 11/11/99 JC - new ip menu item: Image=>Adjust white/black/saturation of LabQ - fixed bug in decompose complex number - browse-icons now ignores errors - better error msg for "12 12" etc cases 10/11/99 JC - open hi-res gives proper error msg if no file found - made file-select boxes a bit more compact and clearer - updated configure.in for vips-examples-7.6 9/11/99 JC - new column start point moved - vdump now defaults to subsample 1, portrait - navigation boxes were broken - no longer shrink-to-fit if loading as high res - better positioning of zoom windows - removed some old cruft 8/11/99 JC - ooops, im_remainder() got lost somehow - refguide converted to latex and updated - cppguide updated 5/11/99 JC - libguide converted to latex and updated 4/11/99 JC - ip guide now latex2htmls cleanly ... still needs updating tho' - cpp/app guide latex2html redone 2/11/99 JC - configure no longer adds -32 to IRIX builds for you - some more stuff in README - simple DEBUGM malloc tracking, made libsrc/iofuncs/memory.c - changed im_malloc() to return void * - removed duplicate im_malloc() proto from util.h - changed all malloc/free to go through im_malloc()/im_free() 23/10/99 JC - double-click on error image now pops a load browser and an error dialog - add-new-column no longer scrolls to right edge of workspace - better scroll-to-bottom on item add - load ws twice does not cause 'already open' errors - memorise directory button in fsb 18/10/99 JC - new FIND_TIFF/FIND_MOTIF macros for acinclude.m4 - new ./configure switches, see ./configure --help - enabled static libs 8/10/99 - broke action_proc_bop() into smaller functions, stops bad code gen on gcc2.95.1 (and others, prolly) - restored old Makefiles in doc/src/ipguide - vips7.6 script renamed as vips-7.6 5/10/99 - replace image was broken - some menu reorganisation - 'reload all menus' button 4/10/99 - computed regions in ip were broken - updated system.iprc defaults - new menu item: adjust white/black points 2/10/99 - browse icons was broken - greyscale 16-bit tiled tiff was broken - extra mutex locks for TIFF*() in im_tiff2vips() 1/10/99 - some automake probs fixed - squished two ip bugs 30/9/99 - fixed problem with pthreads, now works on suse6.2 as well - new API stuff for threaded evaluation with im_threadgroup_t - new public interface provide platform independent threads/locks/semaphores - no error box if you zoom out too far now 26/9/99 - lr/tb merge blend was not quite right ... should be smoother now - histplot broken for float images 24/9/99 - better mono->labq converter - more portable ispoweroftwo detect for freq filter stuff 23/9/99 - better graphics expose handling 17/9/99 - >/< stuff in ip was a bit mixed up - ink preview fixed for mono images - help popup fixed 15/9/99 - linedetect and sobel filters for ip, thnx Kirk 14/9/99 - Find_histogram was broken - im_profile() man pages was broken - ooops, ip had old set of macros 10/9/99 - im_and/im_or/im_eor now work for any integer type Summer hols: (2nd half August '99) - initial heap block larger to avoid start gcs - def slicer fixed - larger max heap - toolkits with initial '_' hidden by default - custom recomb - dialog.def removed - ... other menu fixes - generate grid menu - im_remainder() added - new cursor change code, hglass rotates during comp! - dialog.c handles cursor changes better - rubber band in paintbox displays - mag widget stays on right! - undo/redo single pixel paint ops - heap size control from prefs - cancel for reductions as well as for image calc - browse stuff reworked, no more .icon.v files - save stops you overwriting open .v files - better animate_countdown() handling - better resize behaviour for bars added to images - better code generation, bug fixed in state tracking - auto recover from crash vips-8.2.2/install-sh0000755000175000017500000003452312651721156011446 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: vips-8.2.2/config.h.in0000664000175000017500000002327012651721155011463 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* define to open non-text files in binary mode */ #undef BINARY_OPEN /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* The prefix for our gettext translation domains. */ #undef GETTEXT_PACKAGE /* Domain for glib logging messages. */ #undef G_LOG_DOMAIN /* have atan2() in libm. */ #undef HAVE_ATAN2 /* Define to 1 if you have the `atexit' function. */ #undef HAVE_ATEXIT /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* have cbrt() in libm. */ #undef HAVE_CBRT /* define if you have cfitsio installed. */ #undef HAVE_CFITSIO /* define if your glib has g_cond_init(). */ #undef HAVE_COND_INIT /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DIRECT_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* define if you have libexif >= 0.6 installed. */ #undef HAVE_EXIF /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* define if you have fftw3 installed. */ #undef HAVE_FFTW /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the `GetVirtualPixels' function. */ #undef HAVE_GETVIRTUALPIXELS /* Define to 1 if you have the `getwd' function. */ #undef HAVE_GETWD /* define if you have libgsf-1 installed. */ #undef HAVE_GSF /* have hypot() in libm. */ #undef HAVE_HYPOT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_IO_H /* Define if you have jpeg libraries and header files. */ #undef HAVE_JPEG /* libjpeg has extension parameters */ #undef HAVE_JPEG_EXT_PARAMS /* define if you have lcms installed. */ #undef HAVE_LCMS /* define if you have lcms2 installed. */ #undef HAVE_LCMS2 /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* define if you have libwebp installed. */ #undef HAVE_LIBWEBP /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* define if you have libMagick installed. */ #undef HAVE_MAGICK /* Define to 1 if you have the `MagickCoreGenesis' function. */ #undef HAVE_MAGICKCOREGENESIS /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H /* define if you have matio installed. */ #undef HAVE_MATIO /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP /* Define to 1 if you have the `mktemp' function. */ #undef HAVE_MKTEMP /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP /* define if your glib has g_get_monotonic_time(). */ #undef HAVE_MONOTONIC_TIME /* Define to 1 if you have the `munmap' function. */ #undef HAVE_MUNMAP /* define if your glib has g_mutex_init(). */ #undef HAVE_MUTEX_INIT /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* define if you have OpenEXR >=1.2.2 installed. */ #undef HAVE_OPENEXR /* define if you have OpenSlide >= 3.3.0 installed. */ #undef HAVE_OPENSLIDE /* define if you have OpenSlide >= 3.4.0 installed. */ #undef HAVE_OPENSLIDE_3_4 /* define if you have orc-0.4.11 or later installed. */ #undef HAVE_ORC /* Define to 1 if you have the `orc_program_get_error' function. */ #undef HAVE_ORC_PROGRAM_GET_ERROR /* define if you have pangoft2 installed. */ #undef HAVE_PANGOFT2 /* define if you have libpng installed. */ #undef HAVE_PNG /* define if your glib has G_PRIVATE_INIT(). */ #undef HAVE_PRIVATE_INIT /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if you have the `rand' function. */ #undef HAVE_RAND /* Define to 1 if you have the `random' function. */ #undef HAVE_RANDOM /* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH /* Define to 1 if you have the `ResetImageAttributeIterator' function. */ #undef HAVE_RESETIMAGEATTRIBUTEITERATOR /* Define to 1 if you have the `ResetImagePropertyIterator' function. */ #undef HAVE_RESETIMAGEPROPERTYITERATOR /* Define to 1 if you have the `SetImageOption' function. */ #undef HAVE_SETIMAGEOPTION /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strcspn' function. */ #undef HAVE_STRCSPN /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the `strspn' function. */ #undef HAVE_STRSPN /* Define to 1 if you have the `sysconf' function. */ #undef HAVE_SYSCONF /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MMAN_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* define if your glib has g_thread_new(). */ #undef HAVE_THREAD_NEW /* define if you have libtiff installed. */ #undef HAVE_TIFF /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* define if your glib has g_value_get_schar(). */ #undef HAVE_VALUE_GET_SCHAR /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if you have the `vsnprintf' function. */ #undef HAVE_VSNPRINTF /* Define to 1 if you have the header file. */ #undef HAVE_WINDOWS_H /* Define if you have libz libraries and header files. */ #undef HAVE_ZIP /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* define if your glib needs g_type_init(). */ #undef NEED_TYPE_INIT /* native win32 */ #undef OS_WIN32 /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* libexif includes don't need libexif prefix */ #undef UNTAGGED_EXIF /* Version number of package */ #undef VERSION /* default directory for ICC profiles */ #undef VIPS_ICC_DIR /* configure-time library directory */ #undef VIPS_LIBDIR /* native Mac OS X */ #undef VIPS_OS_DARWIN /* configure-time install prefix */ #undef VIPS_PREFIX /* Define if using the dmalloc debugging malloc package */ #undef WITH_DMALLOC /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `int' if does not define. */ #undef mode_t /* Define to `long int' if does not define. */ #undef off_t /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #undef restrict /* Work around a bug in Sun C++: it does not support _Restrict or __restrict__, even though the corresponding Sun C compiler ends up with "#define restrict _Restrict" or "#define restrict __restrict__" in the previous line. Perhaps some future version of Sun C++ will work with restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict # define __restrict__ #endif /* Define to `unsigned int' if does not define. */ #undef size_t vips-8.2.2/tools/0000775000175000017500000000000012651721506010654 500000000000000vips-8.2.2/tools/batch_rubber_sheet.in0000664000175000017500000000145012530402247014730 00000000000000#!/bin/sh # Corrects a set of image files for lens distortion using a preprepared # recombination matrix # usage: # # example% batch_rubber_sheet matrix_file image1 image2 .. # # writes output images rsc_image1.v, rsc_image2.v .. # default prefix VIPSHOME=${VIPSHOME-@prefix@} # get name we were run as name=`basename $0` # check args if [ $# -lt 2 ]; then echo "usage: $name matrix image1 image2 ..." echo "writes rsc_image1, rsc_image2, ..." echo echo "$name uses VIPS to correct a set of images for lens distortion" echo "using a matrix calculated by the 'resample' function." exit 1 fi rec=$1 shift # transform each argument for i in $*; do echo "Transforming $i to rsc_$i ..." # bilinear interp., don't wrap edges $VIPSHOME/bin/vips im_transform $i rsc_$i $rec 1 0 done vips-8.2.2/tools/batch_image_convert.in0000664000175000017500000000175312530402247015107 00000000000000#!/bin/sh # Convert a set of image files to new file format # # usage: # # example% batch_image_convert image1 image2 etc # # writes output images image1.* and image2.* where * is the new file type. # default prefix VIPSHOME=${VIPSHOME-@prefix@} name=`basename $0` # check args if [ $# -lt 2 ]; then echo "usage: $name image1 image2 ..." echo echo "$name uses VIPS to convert a group of image files of" echo "any image format into a new group of images all of the same" echo "image format. VIPS can read almost any standard image format" echo "but it can only write VIPS, JPEG, TIFF, PPM/PBM/PGM or PNG." exit 1 fi type=$1 shift # convert each argument for i in $*; do # drop the suffix on the filename base=${i%*.*} echo "Converting $i to $base.$type ..." if [ -f $base.$type ]; then echo "$base.$type already exists skiping $i" else $VIPSHOME/bin/vips im_copy $i $base.$type fi done vips-8.2.2/tools/vips-8.20000775000175000017500000000512112610427330012000 00000000000000#!/bin/bash # # Start script for VIPS # need extended regexps, hence we insist on bash above shopt -s extglob # set -x # name we were invoked as bname=`basename $0` # check args if [[ $# < 1 ]]; then echo "usage: $bname [command ...]" echo "examples:" echo " $bname man vipsthumbnail" echo " $bname vips invert /pics/tmp/fred.jpg /pics/tmp/fred2.tif" exit 1 fi # prepend a path component to an environment variable # be careful to avoid trailing : characters if the var is not defined, they # can cause security problems function prepend_var () { # we have to use eval to do double indirection, I think eval value="\$$1" if [ "x$value" = x ]; then export $1=$2 else export $1=$2:$value fi } # try to extract the prefix from a path to an executable # eg. "/home/john/vips/bin/fred" -> "/home/john/vips" function find_prefix () { # try to canonicalise the path ep_canon=$1 # relative path? prefix with pwd if [ ${ep_canon:0:1} != "/" ]; then ep_canon=`pwd`/$ep_canon fi # replace any "/./" with "/" ep_canon=${ep_canon//\/.\//\/} # any "xxx/../" can go ep_canon=${ep_canon//+([^\/])\/..\//} # trailing "xxx/.." can go ep_canon=${ep_canon/%+([^\/])\/../} # remove trailing "/bin/xxx" to get the prefix ep_prefix=${ep_canon/%\/bin\/+([^\/])/} # was there anything to remove in that final step? if not, the path # must be wrong if [ x$ep_prefix == x$ep_canon ]; then return 1 fi echo $ep_prefix; return 0 } # try to guess the install prefix from $0 function guess_prefix () { # $0 is a file? must be us if [ -f $0 ]; then find_prefix $0 return fi # nope, extract program name from $0 and try looking along the # searchpath for it name=`basename $0` fred=$PATH while [ x$fred != x"" ]; do path=${fred/:*/}/$name fred=${fred/*([^:])?(:)/} if [ -f $path ]; then find_prefix $path return fi done # not found on path either ... give up! return 1 } prefix=`guess_prefix`; if [ $? != 0 ]; then echo "unable to find $0 from the file name, or from your PATH" echo "either run directly, or add the install bin area to " echo "your PATH" exit 1 fi export VIPSHOME=$prefix # add VIPSHOME to various paths prepend_var MANPATH $VIPSHOME/share/man case `uname` in HPUX) libvar=SHLIB_PATH ;; Darwin) libvar=DYLD_LIBRARY_PATH ;; *) libvar=LD_LIBRARY_PATH ;; esac prepend_var $libvar $VIPSHOME/lib prepend_var PATH $VIPSHOME/bin prepend_var PKG_CONFIG_PATH $VIPSHOME/lib/pkgconfig prepend_var GI_TYPELIB_PATH $VIPSHOME/lib/girepository-1.0 prepend_var PYTHONPATH $VIPSHOME/lib/python2.7/site-packages # run, passing in args we were passed exec $* vips-8.2.2/tools/light_correct.in0000664000175000017500000000242712530402247013753 00000000000000#!/bin/sh # correct a set of files for illumination errors # usage: # # example% light_correct grey.v im1.v im2.v # # writes output images ic_im1.v and ic_im2.v # default prefix VIPSHOME=${VIPSHOME-@prefix@} # get name we were run as name=$0 bname=`basename $name` # names of our temp files t1=light_correct_temp1 t2=light_correct_temp2 # check args if [ $# -lt 2 ]; then echo "${bname}: usage: $bname ..." exit 1 fi echo "Preparing grey ..." grey=$1 shift # find image size width=`$VIPSHOME/bin/vips im_header_int Xsize $grey` height=`$VIPSHOME/bin/vips im_header_int Ysize $grey` # smooth the grey out $VIPSHOME/bin/vips im_shrink $grey $t1.v 20 20 $VIPSHOME/bin/vips im_resize_linear $t1.v $t2.v $width $height # and make the correction image mean=`$VIPSHOME/bin/vips im_avg $t2.v` $VIPSHOME/bin/vips im_powtra $t2.v $t1.v -1 $VIPSHOME/bin/vips im_lintra $mean $t1.v 0 $t2.v # grey correct images in order for i in "$@"; do echo "Correcting $i as ic_$i ..." $VIPSHOME/bin/vips im_multiply $t2.v "$i" $t1.v $VIPSHOME/bin/vips im_clip $t1.v "ic_$i" # remove the .desc as well name=`echo $name | sed -e 's/\.[^\.]*//'` /bin/rm -f "ic_$name.desc" done # more cleanup echo "Cleaning up ..." /bin/rm -f $t1.v $t1.desc /bin/rm -f $t2.v $t2.desc vips-8.2.2/tools/shrink_width.in0000664000175000017500000000055012530402247013613 00000000000000#!/bin/sh # shrink to a target width # default prefix VIPSHOME=${VIPSHOME-@prefix@} name=$0 bname=`basename $0` if [ $# != 3 ]; then echo "${bname}: usage: $bname " exit 1 fi inwidth=`$VIPSHOME/bin/vips im_header_int Xsize $1` factor=`(echo scale=10; echo $inwidth / $3) | bc` $VIPSHOME/bin/vips im_shrink $1 $2 $factor $factor vips-8.2.2/tools/vipsthumbnail.c0000664000175000017500000004621412623375273013641 00000000000000/* VIPS thumbnailer * * 11/1/09 * * 13/1/09 * - decode labq and rad images * - colour management * - better handling of tiny images * 25/1/10 * - added "--delete" * 6/2/10 * - added "--interpolator" * - added "--nosharpen" * - better 'open' logic, test lazy flag now * 13/5/10 * - oops hehe residual sharpen test was reversed * - and the mask coefficients were messed up * 26/5/10 * - delete failed if there was a profile * 4/7/10 * - oops sharpening was turning off for integer shrinks, thanks Nicolas * 30/7/10 * - use new "rd" mode rather than our own open via disc * 8/2/12 * - use :seq mode for png images * - shrink to a scanline cache to ensure we request pixels sequentially * from the input * 13/6/12 * - update the sequential stuff to the general method * 21/6/12 * - remove "--nodelete" option, have a --delete option instead, off by * default * - much more gentle extra sharpening * 13/11/12 * - allow absolute paths in -o (thanks fuho) * 3/5/13 * - add optional sharpening mask from file * 10/7/13 * - rewrite for vips8 * - handle embedded jpeg thumbnails * 12/11/13 * - add --linear option * 18/12/13 * - add --crop option * 5/3/14 * - copy main image metadata to embedded thumbnails, thanks ottob * 6/3/14 * - add --rotate flag * 7/3/14 * - remove the embedded thumbnail reader, embedded thumbnails are too * unlike the main image wrt. rotation / colour / etc. * 30/6/14 * - fix interlaced thumbnail output, thanks lovell * 3/8/14 * - box shrink less, use interpolator more, if window_size is large * enough * - default to bicubic if available * - add an anti-alias filter between shrink and affine * - support CMYK * - use SEQ_UNBUF for a memory saving * 12/9/14 * - try with embedded profile first, if that fails retry with fallback * profile * 13/1/15 * - exit with an error code if one or more conversions failed * 20/1/15 * - rename -o as -f, keep -o as a hidden flag * 9/5/15 * - use vips_resize() instead of our own code * - premultiply alpha * 30/7/15 * - warn if you autorot and there's no exif support */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #define ORIENTATION ("exif-ifd0-Orientation") /* Default settings. We change the default to bicubic in main() if * this vips has been compiled with bicubic support. */ static char *thumbnail_size = "128"; static int thumbnail_width = 128; static int thumbnail_height = 128; static char *output_format = "tn_%s.jpg"; static char *interpolator = "bilinear"; static char *export_profile = NULL; static char *import_profile = NULL; static char *convolution_mask = "none"; static gboolean delete_profile = FALSE; static gboolean linear_processing = FALSE; static gboolean crop_image = FALSE; static gboolean rotate_image = FALSE; /* Deprecated and unused. */ static gboolean nosharpen = FALSE; static gboolean nodelete_profile = FALSE; static gboolean verbose = FALSE; static GOptionEntry options[] = { { "size", 's', 0, G_OPTION_ARG_STRING, &thumbnail_size, N_( "shrink to SIZE or to WIDTHxHEIGHT" ), N_( "SIZE" ) }, { "output", 'o', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &output_format, N_( "set output to FORMAT" ), N_( "FORMAT" ) }, { "format", 'f', 0, G_OPTION_ARG_STRING, &output_format, N_( "set output format string to FORMAT" ), N_( "FORMAT" ) }, { "interpolator", 'p', 0, G_OPTION_ARG_STRING, &interpolator, N_( "resample with INTERPOLATOR" ), N_( "INTERPOLATOR" ) }, { "sharpen", 'r', 0, G_OPTION_ARG_STRING, &convolution_mask, N_( "sharpen with none|mild|MASKFILE" ), N_( "none|mild|MASKFILE" ) }, { "eprofile", 'e', 0, G_OPTION_ARG_STRING, &export_profile, N_( "export with PROFILE" ), N_( "PROFILE" ) }, { "iprofile", 'i', 0, G_OPTION_ARG_STRING, &import_profile, N_( "import untagged images with PROFILE" ), N_( "PROFILE" ) }, { "linear", 'a', 0, G_OPTION_ARG_NONE, &linear_processing, N_( "process in linear space" ), NULL }, { "crop", 'c', 0, G_OPTION_ARG_NONE, &crop_image, N_( "crop exactly to SIZE" ), NULL }, { "rotate", 't', 0, G_OPTION_ARG_NONE, &rotate_image, N_( "auto-rotate" ), NULL }, { "delete", 'd', 0, G_OPTION_ARG_NONE, &delete_profile, N_( "delete profile from exported image" ), NULL }, { "verbose", 'v', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &verbose, N_( "(deprecated, does nothing)" ), NULL }, { "nodelete", 'l', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &nodelete_profile, N_( "(deprecated, does nothing)" ), NULL }, { "nosharpen", 'n', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &nosharpen, N_( "(deprecated, does nothing)" ), NULL }, { NULL } }; /* Calculate the shrink factor, taking into account auto-rotate, the fit mode, * and so on. */ static double calculate_shrink( VipsImage *im ) { VipsAngle angle = vips_autorot_get_angle( im ); gboolean rotate = angle == VIPS_ANGLE_D90 || angle == VIPS_ANGLE_D270; int width = rotate_image && rotate ? im->Ysize : im->Xsize; int height = rotate_image && rotate ? im->Xsize : im->Ysize; VipsDirection direction; /* Calculate the horizontal and vertical shrink we'd need to fit the * image to the bounding box, and pick the biggest. * * In crop mode we aim to fill the bounding box, so we must use the * smaller axis. */ double horizontal = (double) width / thumbnail_width; double vertical = (double) height / thumbnail_height; if( crop_image ) { if( horizontal < vertical ) direction = VIPS_DIRECTION_HORIZONTAL; else direction = VIPS_DIRECTION_VERTICAL; } else { if( horizontal < vertical ) direction = VIPS_DIRECTION_VERTICAL; else direction = VIPS_DIRECTION_HORIZONTAL; } return( direction == VIPS_DIRECTION_HORIZONTAL ? horizontal : vertical ); } /* Find the best jpeg preload shrink. */ static int thumbnail_find_jpegshrink( VipsImage *im ) { double shrink = calculate_shrink( im ); /* We can't use pre-shrunk images in linear mode. libjpeg shrinks in Y * (of YCbCR), not linear space. */ if( linear_processing ) return( 1 ); /* We want to leave a bit of shrinking for our interpolator, we don't * want to do all the shrinking with libjpeg. */ if( shrink >= 16 ) return( 8 ); else if( shrink >= 8 ) return( 4 ); else if( shrink >= 4 ) return( 2 ); else return( 1 ); } /* Open an image, returning the best version of that image for thumbnailing. * * libjpeg supports fast shrink-on-read, so if we have a JPEG, we can ask * VIPS to load a lower resolution version. */ static VipsImage * thumbnail_open( VipsObject *process, const char *filename ) { const char *loader; VipsImage *im; vips_info( "vipsthumbnail", "thumbnailing %s", filename ); if( linear_processing ) vips_info( "vipsthumbnail", "linear mode" ); if( !(loader = vips_foreign_find_load( filename )) ) return( NULL ); vips_info( "vipsthumbnail", "selected loader is %s", loader ); if( strcmp( loader, "VipsForeignLoadJpegFile" ) == 0 ) { int jpegshrink; /* This will just read in the header and is quick. */ if( !(im = vips_image_new_from_file( filename, NULL )) ) return( NULL ); jpegshrink = thumbnail_find_jpegshrink( im ); g_object_unref( im ); vips_info( "vipsthumbnail", "loading jpeg with factor %d pre-shrink", jpegshrink ); /* We can't use UNBUFERRED safely on very-many-core systems. */ if( !(im = vips_image_new_from_file( filename, "access", VIPS_ACCESS_SEQUENTIAL, "shrink", jpegshrink, NULL )) ) return( NULL ); } else { /* All other formats. */ if( !(im = vips_image_new_from_file( filename, "access", VIPS_ACCESS_SEQUENTIAL, NULL )) ) return( NULL ); } vips_object_local( process, im ); return( im ); } static VipsInterpolate * thumbnail_interpolator( VipsObject *process, VipsImage *in ) { double shrink = calculate_shrink( in ); VipsInterpolate *interp; /* For images smaller than the thumbnail, we upscale with nearest * neighbor. Otherwise we make thumbnails that look fuzzy and awful. */ if( !(interp = VIPS_INTERPOLATE( vips_object_new_from_string( g_type_class_ref( VIPS_TYPE_INTERPOLATE ), shrink <= 1.0 ? "nearest" : interpolator ) )) ) return( NULL ); vips_object_local( process, interp ); return( interp ); } /* Some interpolators look a little soft, so we have an optional sharpening * stage. */ static VipsImage * thumbnail_sharpen( VipsObject *process ) { VipsImage *mask; if( strcmp( convolution_mask, "none" ) == 0 ) mask = NULL; else if( strcmp( convolution_mask, "mild" ) == 0 ) { mask = vips_image_new_matrixv( 3, 3, -1.0, -1.0, -1.0, -1.0, 32.0, -1.0, -1.0, -1.0, -1.0 ); vips_image_set_double( mask, "scale", 24 ); } else if( !(mask = vips_image_new_from_file( convolution_mask, NULL )) ) vips_error_exit( "unable to load sharpen mask" ); if( mask ) vips_object_local( process, mask ); return( mask ); } static VipsImage * thumbnail_shrink( VipsObject *process, VipsImage *in, VipsInterpolate *interp, VipsImage *sharpen ) { VipsImage **t = (VipsImage **) vips_object_local_array( process, 10 ); VipsInterpretation interpretation = linear_processing ? VIPS_INTERPRETATION_XYZ : VIPS_INTERPRETATION_sRGB; /* TRUE if we've done the import of an ICC transform and still need to * export. */ gboolean have_imported; /* TRUE if we've premultiplied and need to unpremultiply. */ gboolean have_premultiplied; /* Sniff the incoming image and try to guess what the alpha max is. */ double max_alpha; double shrink; /* RAD needs special unpacking. */ if( in->Coding == VIPS_CODING_RAD ) { vips_info( "vipsthumbnail", "unpacking Rad to float" ); /* rad is scrgb. */ if( vips_rad2float( in, &t[0], NULL ) ) return( NULL ); in = t[0]; } /* Try to guess what the maximum alpha might be. */ max_alpha = 255; if( in->BandFmt == VIPS_FORMAT_USHORT ) max_alpha = 65535; /* In linear mode, we import right at the start. * * We also have to import the whole image if it's CMYK, since * vips_colourspace() (see below) doesn't know about CMYK. * * This is only going to work for images in device space. If you have * an image in PCS which also has an attached profile, strange things * will happen. */ have_imported = FALSE; if( (linear_processing || in->Type == VIPS_INTERPRETATION_CMYK) && in->Coding == VIPS_CODING_NONE && (in->BandFmt == VIPS_FORMAT_UCHAR || in->BandFmt == VIPS_FORMAT_USHORT) && (vips_image_get_typeof( in, VIPS_META_ICC_NAME ) || import_profile) ) { if( vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) vips_info( "vipsthumbnail", "importing with embedded profile" ); else vips_info( "vipsthumbnail", "importing with profile %s", import_profile ); if( vips_icc_import( in, &t[1], "input_profile", import_profile, "embedded", TRUE, "pcs", VIPS_PCS_XYZ, NULL ) ) return( NULL ); in = t[1]; have_imported = TRUE; } /* To the processing colourspace. This will unpack LABQ as well. */ vips_info( "vipsthumbnail", "converting to processing space %s", vips_enum_nick( VIPS_TYPE_INTERPRETATION, interpretation ) ); if( vips_colourspace( in, &t[2], interpretation, NULL ) ) return( NULL ); in = t[2]; /* If there's an alpha, we have to premultiply before shrinking. See * https://github.com/jcupitt/libvips/issues/291 */ have_premultiplied = FALSE; if( in->Bands == 2 || (in->Bands == 4 && in->Type != VIPS_INTERPRETATION_CMYK) || in->Bands == 5 ) { vips_info( "vipsthumbnail", "premultiplying alpha" ); if( vips_premultiply( in, &t[3], "max_alpha", max_alpha, NULL ) ) return( NULL ); in = t[3]; have_premultiplied = TRUE; } shrink = calculate_shrink( in ); if( vips_resize( in, &t[4], 1.0 / shrink, "interpolate", interp, NULL ) ) return( NULL ); in = t[4]; if( have_premultiplied ) { vips_info( "vipsthumbnail", "unpremultiplying alpha" ); if( vips_unpremultiply( in, &t[5], "max_alpha", max_alpha, NULL ) ) return( NULL ); in = t[5]; } /* Colour management. * * If we've already imported, just export. Otherwise, we're in * device space device and we need a combined * import/export to transform to the target space. */ if( have_imported ) { if( export_profile || vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) { vips_info( "vipsthumbnail", "exporting to device space with a profile" ); if( vips_icc_export( in, &t[7], "output_profile", export_profile, NULL ) ) return( NULL ); in = t[7]; } else { vips_info( "vipsthumbnail", "converting to sRGB" ); if( vips_colourspace( in, &t[7], VIPS_INTERPRETATION_sRGB, NULL ) ) return( NULL ); in = t[7]; } } else if( export_profile && (vips_image_get_typeof( in, VIPS_META_ICC_NAME ) || import_profile) ) { VipsImage *out; vips_info( "vipsthumbnail", "exporting with profile %s", export_profile ); /* We first try with the embedded profile, if any, then if * that fails try again with the supplied fallback profile. */ out = NULL; if( vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) { vips_info( "vipsthumbnail", "importing with embedded profile" ); if( vips_icc_transform( in, &t[7], export_profile, "embedded", TRUE, NULL ) ) { vips_warn( "vipsthumbnail", _( "unable to import with " "embedded profile: %s" ), vips_error_buffer() ); vips_error_clear(); } else out = t[7]; } if( !out && import_profile ) { vips_info( "vipsthumbnail", "importing with fallback profile" ); if( vips_icc_transform( in, &t[7], export_profile, "input_profile", import_profile, "embedded", FALSE, NULL ) ) return( NULL ); out = t[7]; } /* If the embedded profile failed and there's no fallback or * the fallback failed, out will still be NULL. */ if( out ) in = out; } /* If we are upsampling, don't sharpen, since nearest looks dumb * sharpened. */ if( shrink > 1.0 && sharpen ) { vips_info( "vipsthumbnail", "sharpening thumbnail" ); if( vips_conv( in, &t[8], sharpen, NULL ) ) return( NULL ); in = t[8]; } if( delete_profile && vips_image_get_typeof( in, VIPS_META_ICC_NAME ) ) { vips_info( "vipsthumbnail", "deleting profile from output image" ); if( !vips_image_remove( in, VIPS_META_ICC_NAME ) ) return( NULL ); } return( in ); } /* Crop down to the final size, if crop_image is set. */ static VipsImage * thumbnail_crop( VipsObject *process, VipsImage *im ) { VipsImage **t = (VipsImage **) vips_object_local_array( process, 2 ); if( crop_image ) { int left = (im->Xsize - thumbnail_width) / 2; int top = (im->Ysize - thumbnail_height) / 2; if( vips_extract_area( im, &t[0], left, top, thumbnail_width, thumbnail_height, NULL ) ) return( NULL ); im = t[0]; } return( im ); } /* Auto-rotate, if rotate_image is set. */ static VipsImage * thumbnail_rotate( VipsObject *process, VipsImage *im ) { VipsImage **t = (VipsImage **) vips_object_local_array( process, 2 ); VipsAngle angle = vips_autorot_get_angle( im ); if( rotate_image && angle != VIPS_ANGLE_D0 ) { /* Need to copy to memory, we have to stay seq. */ t[0] = vips_image_new_memory(); if( vips_image_write( im, t[0] ) || vips_rot( t[0], &t[1], angle, NULL ) ) return( NULL ); im = t[1]; (void) vips_image_remove( im, ORIENTATION ); } return( im ); } /* Given (eg.) "/poop/somefile.png", write @im to the thumbnail name, * (eg.) "/poop/tn_somefile.jpg". */ static int thumbnail_write( VipsObject *process, VipsImage *im, const char *filename ) { char *file; char *p; char buf[FILENAME_MAX]; char *output_name; file = g_path_get_basename( filename ); /* Remove the suffix from the file portion. */ if( (p = strrchr( file, '.' )) ) *p = '\0'; /* Don't use vips_snprintf(), we only want to optionally substitute a * single %s. */ vips_strncpy( buf, output_format, FILENAME_MAX ); vips__substitute( buf, FILENAME_MAX, file ); /* output_format can be an absolute path, in which case we discard the * path from the incoming file. */ if( g_path_is_absolute( output_format ) ) output_name = g_strdup( buf ); else { char *dir; dir = g_path_get_dirname( filename ); output_name = g_build_filename( dir, buf, NULL ); g_free( dir ); } vips_info( "vipsthumbnail", "thumbnailing %s as %s", filename, output_name ); g_free( file ); if( vips_image_write_to_file( im, output_name, NULL ) ) { g_free( output_name ); return( -1 ); } g_free( output_name ); return( 0 ); } static int thumbnail_process( VipsObject *process, const char *filename ) { VipsImage *sharpen = thumbnail_sharpen( process ); VipsImage *in; VipsInterpolate *interp; VipsImage *thumbnail; VipsImage *crop; VipsImage *rotate; if( !(in = thumbnail_open( process, filename )) || !(interp = thumbnail_interpolator( process, in )) || !(thumbnail = thumbnail_shrink( process, in, interp, sharpen )) || !(crop = thumbnail_crop( process, thumbnail )) || !(rotate = thumbnail_rotate( process, crop )) || thumbnail_write( process, rotate, filename ) ) return( -1 ); return( 0 ); } int main( int argc, char **argv ) { GOptionContext *context; GOptionGroup *main_group; GError *error = NULL; int i; int result; if( VIPS_INIT( argv[0] ) ) vips_error_exit( "unable to start VIPS" ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); /* Does this vips have bicubic? Default to that if it * does. */ if( vips_type_find( "VipsInterpolate", "bicubic" ) ) interpolator = "bicubic"; context = g_option_context_new( _( "- thumbnail generator" ) ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, options ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); if( !g_option_context_parse( context, &argc, &argv, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( "try \"%s --help\"", g_get_prgname() ); } g_option_context_free( context ); if( sscanf( thumbnail_size, "%d x %d", &thumbnail_width, &thumbnail_height ) != 2 ) { if( sscanf( thumbnail_size, "%d", &thumbnail_width ) != 1 ) vips_error_exit( "unable to parse size \"%s\" -- " "use eg. 128 or 200x300", thumbnail_size ); thumbnail_height = thumbnail_width; } if( rotate_image ) { #ifndef HAVE_EXIF vips_warn( "vipsthumbnail", "%s", _( "auto-rotate disabled: " "libvips built without exif support" ) ); #endif /*!HAVE_EXIF*/ } result = 0; for( i = 1; i < argc; i++ ) { /* Hang resources for processing this thumbnail off @process. */ VipsObject *process = VIPS_OBJECT( vips_image_new() ); if( thumbnail_process( process, argv[i] ) ) { fprintf( stderr, "%s: unable to thumbnail %s\n", argv[0], argv[i] ); fprintf( stderr, "%s", vips_error_buffer() ); vips_error_clear(); /* We had a conversion failure: return an error code * when we finally exit. */ result = -1; } g_object_unref( process ); } vips_shutdown(); return( result ); } vips-8.2.2/tools/vips.c0000664000175000017500000007051212530402247011720 00000000000000/* VIPS universal main program. * * J. Cupitt, 8/4/93. * 12/5/06 * - use GOption. g_*_prgname() * 16/7/06 * - hmm, was broken for function name as argv1 case * 11/7/06 * - add "all" option to -l * 14/7/06 * - ignore "--" arguments. * 2/9/06 * - do less init ... im_init_world() does more now * 18/8/06 * - use IM_EXEEXT * 16/10/06 * - add --version * 17/10/06 * - add --swig * - cleanups * - remove --swig again, sigh * - add throw() decls to C++ to help SWIG * 14/1/07 * - add --list packages * 26/2/07 * - add input *VEC arg types to C++ binding * 17/8/08 * - add --list formats * 29/11/08 * - add --list interpolators * 9/2/09 * - and now we just have --list packages/classes/package-name * 13/11/09 * - drop _f postfixes, drop many postfixes * 24/6/10 * - less chatty error messages * - oops, don't rename "copy_set" as "copy_" * 6/2/12 * - long arg names in decls to help SWIG * - don't wrap im_remainderconst_vec() * 31/12/12 * - parse options in two passes (thanks Haida) */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* #define DEBUG #define DEBUG_FATAL */ /* Need to disable these sometimes. #undef DEBUG_FATAL */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #ifdef OS_WIN32 #define strcasecmp(a,b) _stricmp(a,b) #endif static char *main_option_plugin = NULL; static gboolean main_option_version; static void * list_class( GType type ) { VipsObjectClass *class = VIPS_OBJECT_CLASS( g_type_class_ref( type ) ); int depth = vips_type_depth( type ); int i; if( class->deprecated ) return( NULL ); if( VIPS_IS_OPERATION_CLASS( class ) && (VIPS_OPERATION_CLASS( class )->flags & VIPS_OPERATION_DEPRECATED) ) return( NULL ); for( i = 0; i < depth * 2; i++ ) printf( " " ); vips_object_print_summary_class( VIPS_OBJECT_CLASS( g_type_class_ref( type ) ) ); return( NULL ); } static void * test_nickname( GType type, void *data ) { const char *nickname = (const char *) data; VipsObjectClass *class; if( (class = VIPS_OBJECT_CLASS( g_type_class_ref( type ) )) && strcmp( class->nickname, nickname ) == 0 ) return( class ); return( NULL ); } static gboolean parse_main_option_list( const gchar *option_name, const gchar *value, gpointer data, GError **error ) { VipsObjectClass *class; if( value && (class = (VipsObjectClass *) vips_type_map_all( g_type_from_name( "VipsObject" ), test_nickname, (void *) value )) ) { vips_type_map_all( G_TYPE_FROM_CLASS( class ), (VipsTypeMapFn) list_class, NULL ); } else if( value ) { vips_error( g_get_prgname(), _( "'%s' is not the name of a vips class" ), value ); vips_error_g( error ); return( FALSE ); } else { vips_type_map_all( g_type_from_name( "VipsOperation" ), (VipsTypeMapFn) list_class, NULL ); } exit( 0 ); } static GOptionEntry main_option[] = { { "list", 'l', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, (GOptionArgFunc) parse_main_option_list, N_( "list objects" ), N_( "BASE-NAME" ) }, { "plugin", 'p', 0, G_OPTION_ARG_FILENAME, &main_option_plugin, N_( "load PLUGIN" ), N_( "PLUGIN" ) }, { "version", 'v', 0, G_OPTION_ARG_NONE, &main_option_version, N_( "print version" ), NULL }, { NULL } }; typedef void *(*map_name_fn)( im_function * ); /* Loop over a package. */ static void * map_package( im_package *pack, map_name_fn fn ) { int i; void *result; for( i = 0; i < pack->nfuncs; i++ ) if( (result = fn( pack->table[i] )) ) return( result ); return( NULL ); } /* Apply a function to a vips operation, or map over a package of operations. */ static void * map_name( const char *name, map_name_fn fn ) { im_package *pack; im_function *func; if( !name || strcmp( name, "all" ) == 0 ) /* Do all packages. */ im_map_packages( (VSListMap2Fn) map_package, fn ); else if( (pack = im_find_package( name )) ) /* Do one package. */ map_package( pack, fn ); else if( (func = im_find_function( name )) ) /* Do a single function. */ fn( func ); else { vips_error( "map_name", _( "no package or function \"%s\"" ), name ); return( fn ); } return( NULL ); } static void * list_package( im_package *pack ) { printf( "%-20s - %d operations\n", pack->name, pack->nfuncs ); return( NULL ); } static void * list_function( im_function *func ) { printf( "%-20s - %s\n", func->name, _( func->desc ) ); return( NULL ); } static int print_list( int argc, char **argv ) { if( !argv[0] || strcmp( argv[0], "packages" ) == 0 ) im_map_packages( (VSListMap2Fn) list_package, NULL ); else if( strcmp( argv[0], "classes" ) == 0 ) vips_type_map_all( g_type_from_name( "VipsObject" ), (VipsTypeMapFn) list_class, NULL ); else if( g_type_from_name( argv[0] ) && g_type_is_a( g_type_from_name( argv[0] ), VIPS_TYPE_OBJECT ) ) { vips_type_map_all( g_type_from_name( argv[0] ), (VipsTypeMapFn) list_class, NULL ); } else { if( map_name( argv[0], list_function ) ) vips_error_exit( "unknown package \"%s\"", argv[0] ); } return( 0 ); } /* Print "ln -s" lines for this package. */ static void * print_links_package( im_package *pack ) { int i; for( i = 0; i < pack->nfuncs; i++ ) printf( "rm -f %s" IM_EXEEXT "; " "ln -s vips" IM_EXEEXT " %s" IM_EXEEXT "\n", pack->table[i]->name, pack->table[i]->name ); return( NULL ); } /* Print "ln -s" lines for this package. */ static int print_links( int argc, char **argv ) { im_map_packages( (VSListMap2Fn) print_links_package, NULL ); return( 0 ); } /* Does a function have any printing output? */ static int has_print( im_function *fn ) { int i; for( i = 0; i < fn->argc; i++ ) if( fn->argv[i].print ) return( -1 ); return( 0 ); } static int isvips( const char *name ) { /* If we're running uninstalled we get the lt- prefix. */ if( vips_isprefix( "lt-", name ) ) name += 3; return( vips_isprefix( "vips", name ) ); } /* Print a usage string from an im_function descriptor. */ static void usage( im_function *fn ) { int i; im_package *pack = im_package_of_function( fn->name ); /* Don't print the prgname if we're being run as a symlink. */ fprintf( stderr, "usage: " ); if( isvips( g_get_prgname() ) ) fprintf( stderr, "%s ", g_get_prgname() ); fprintf( stderr, "%s ", fn->name ); /* Print args requiring command-line input. */ for( i = 0; i < fn->argc; i++ ) if( fn->argv[i].desc->flags & IM_TYPE_ARG ) fprintf( stderr, "%s ", fn->argv[i].name ); /* Print types of command line args. */ fprintf( stderr, "\nwhere:\n" ); for( i = 0; i < fn->argc; i++ ) if( fn->argv[i].desc->flags & IM_TYPE_ARG ) fprintf( stderr, "\t%s is of type \"%s\"\n", fn->argv[i].name, fn->argv[i].desc->type ); /* Print output print args. */ if( has_print( fn ) ) { fprintf( stderr, "prints:\n" ); for( i = 0; i < fn->argc; i++ ) if( fn->argv[i].print ) fprintf( stderr, "\t%s of type \"%s\"\n", fn->argv[i].name, fn->argv[i].desc->type ); } /* Print description of this function, and package it comes from. */ fprintf( stderr, "%s", _( fn->desc ) ); if( pack ) fprintf( stderr, ", from package \"%s\"", pack->name ); fprintf( stderr, "\n" ); /* Print any flags this function has. */ fprintf( stderr, "flags: " ); if( fn->flags & IM_FN_PIO ) fprintf( stderr, "(PIO function) " ); else fprintf( stderr, "(WIO function) " ); if( fn->flags & IM_FN_TRANSFORM ) fprintf( stderr, "(coordinate transformer) " ); else fprintf( stderr, "(no coordinate transformation) " ); if( fn->flags & IM_FN_PTOP ) fprintf( stderr, "(point-to-point operation) " ); else fprintf( stderr, "(area operation) " ); if( fn->flags & IM_FN_NOCACHE ) fprintf( stderr, "(nocache operation) " ); else fprintf( stderr, "(result can be cached) " ); fprintf( stderr, "\n" ); } /* Convert VIPS type name to C++ type name. NULL for type unsupported by C++ * layer. */ static char * vips2cpp( im_type_desc *ty ) { int k; /* VIPS types. */ static char *vtypes[] = { IM_TYPE_DOUBLE, IM_TYPE_INT, IM_TYPE_COMPLEX, IM_TYPE_STRING, IM_TYPE_IMAGE, IM_TYPE_IMASK, IM_TYPE_DMASK, IM_TYPE_DISPLAY, IM_TYPE_IMAGEVEC, IM_TYPE_DOUBLEVEC, IM_TYPE_INTVEC, IM_TYPE_INTERPOLATE }; /* Corresponding C++ types. */ static char *ctypes[] = { "double", "int", "std::complex", "char*", "VImage", "VIMask", "VDMask", "VDisplay", "std::vector", "std::vector", "std::vector", "char*" }; for( k = 0; k < IM_NUMBER( vtypes ); k++ ) if( strcmp( ty->type, vtypes[k] ) == 0 ) return( ctypes[k] ); return( NULL ); } /* Test a function definition for C++ suitability. */ static int is_cppable( im_function *fn ) { int j; /* Don't wrap im_remainderconst_vec(). * * This has been replaced by the saner name im_remainder_vec(). If we * generate wrappers for both names we get a overloading clash. */ if( strcmp( fn->name, "im_remainderconst_vec" ) == 0 ) return( 0 ); /* Check we know all the types. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; if( !vips2cpp( ty ) ) return( 0 ); } /* We dont wrap output IMAGEVEC/DOUBLEVEC/INTVEC. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; if( ty->flags & IM_TYPE_OUTPUT ) if( strcmp( ty->type, IM_TYPE_IMAGEVEC ) == 0 || strcmp( ty->type, IM_TYPE_DOUBLEVEC ) == 0 || strcmp( ty->type, IM_TYPE_INTVEC ) == 0 ) return( 0 ); } /* Must be at least one image argument (input or output) ... since we * get inserted in the VImage class. Other funcs get wrapped by hand. */ for( j = 0; j < fn->argc; j++ ) if( strcmp( fn->argv[j].desc->type, IM_TYPE_IMAGE ) == 0 ) break; if( j == fn->argc ) return( 0 ); return( -1 ); } /* Search for the first output arg, and the first IMAGE input arg. */ static void find_ioargs( im_function *fn, int *ia, int *oa ) { int j; /* Look for first output arg - this will be the result of the * function. */ *oa = -1; for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; if( ty->flags & IM_TYPE_OUTPUT ) { *oa = j; break; } } /* Look for first input IMAGE arg. This will become the implicit * "this" arg. */ *ia = -1; for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; if( !(ty->flags & IM_TYPE_OUTPUT) && strcmp( ty->type, IM_TYPE_IMAGE ) == 0 ) { *ia = j; break; } } } static gboolean drop_postfix( char *str, const char *postfix ) { if( vips_ispostfix( str, postfix ) ) { str[strlen( str ) - strlen( postfix )] = '\0'; return( TRUE ); } return( FALSE ); } /* Turn a VIPS name into a C++ name. Eg. im_lintra_vec becomes lin. */ static void c2cpp_name( const char *in, char *out ) { static const char *dont_drop[] = { "_set", }; static const char *drop[] = { "_vec", "const", "tra", "set", "_f" }; int i; gboolean changed; /* Copy, chopping off "im_" prefix. */ if( vips_isprefix( "im_", in ) ) strcpy( out, in + 3 ); else strcpy( out, in ); /* Repeatedly drop postfixes while we can. Stop if we see a dont_drop * postfix. */ do { gboolean found; found = FALSE; for( i = 0; i < IM_NUMBER( dont_drop ); i++ ) if( vips_ispostfix( out, dont_drop[i] ) ) { found = TRUE; break; } if( found ) break; changed = FALSE; for( i = 0; i < IM_NUMBER( drop ); i++ ) changed |= drop_postfix( out, drop[i] ); } while( changed ); } /* Print prototype for a function (ie. will be followed by code). * * Eg.: * VImage VImage::lin( double a, double b ) throw( VError ) */ static void * print_cppproto( im_function *fn ) { int j; char name[4096]; int oa, ia; int flg; /* If it's not cppable, do nothing. */ if( !is_cppable( fn ) ) return( NULL ); /* Make C++ name. */ c2cpp_name( fn->name, name ); /* Find input and output args. */ find_ioargs( fn, &ia, &oa ); /* Print output type. */ if( oa == -1 ) printf( "void " ); else printf( "%s ", vips2cpp( fn->argv[oa].desc ) ); printf( "VImage::%s(", name ); /* Print arg list. */ flg = 0; for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; /* Skip ia and oa. */ if( j == ia || j == oa ) continue; /* Print arg type. */ if( flg ) printf( ", %s", vips2cpp( ty ) ); else { printf( " %s", vips2cpp( ty ) ); flg = 1; } /* If it's an putput arg, print a "&" to make a reference * argument. */ if( ty->flags & IM_TYPE_OUTPUT ) printf( "&" ); /* Print arg name. */ printf( " %s", fn->argv[j].name ); } /* End of arg list! */ if( flg ) printf( " " ); printf( ") throw( VError )\n" ); return( NULL ); } /* Print cpp decl for a function. * * Eg. * VImage lin( double, double ) throw( VError ); */ static void * print_cppdecl( im_function *fn ) { int j; char name[4096]; int oa, ia; int flg; /* If it's not cppable, do nothing. */ if( !is_cppable( fn ) ) return( NULL ); /* Make C++ name. */ c2cpp_name( fn->name, name ); /* Find input and output args. */ find_ioargs( fn, &ia, &oa ); if( ia == -1 ) /* No input image, so make it a static in the class * declaration. */ printf( "static " ); /* Print output type. */ if( oa == -1 ) printf( "void " ); else printf( "%s ", vips2cpp( fn->argv[oa].desc ) ); /* Print function name and start arg list. */ printf( "%s(", name ); /* Print arg list. */ flg = 0; for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; /* Skip ia and oa. */ if( j == ia || j == oa ) continue; /* Print arg type. */ if( flg ) printf( ", %s", vips2cpp( ty ) ); else { printf( " %s", vips2cpp( ty ) ); flg = 1; } /* If it's an putput arg, print a "&" to make a reference * argument. */ if( ty->flags & IM_TYPE_OUTPUT ) printf( "&" ); /* Print arg name. * * Prepend the member name to make the arg * unique. This is important for SWIG since it needs to have * unique names for %apply. */ printf( " %s_%s", name, fn->argv[j].name ); } /* End of arg list! */ if( flg ) printf( " " ); printf( ") throw( VError );\n" ); return( NULL ); } static void print_invec( int j, const char *arg, const char *vips_name, const char *c_name, const char *extract ) { printf( "\t((%s*) _vec.data(%d))->n = %s.size();\n", vips_name, j, arg ); printf( "\t((%s*) _vec.data(%d))->vec = new %s[%s.size()];\n", vips_name, j, c_name, arg ); printf( "\tfor( unsigned int i = 0; i < %s.size(); i++ )\n", arg ); printf( "\t\t((%s*) _vec.data(%d))->vec[i] = %s[i]%s;\n", vips_name, j, arg, extract ); } /* Print the definition for a function. */ static void * print_cppdef( im_function *fn ) { int j; int ia, oa; /* If it's not cppable, do nothing. */ if( !is_cppable( fn ) ) return( NULL ); find_ioargs( fn, &ia, &oa ); printf( "// %s: %s\n", fn->name, _( fn->desc ) ); print_cppproto( fn ); printf( "{\n" ); /* Declare the implicit input image. */ if( ia != -1 ) printf( "\tVImage %s = *this;\n", fn->argv[ia].name ); /* Declare return value, if any. */ if( oa != -1 ) printf( "\t%s %s;\n\n", vips2cpp( fn->argv[oa].desc ), fn->argv[oa].name ); /* Declare the arg vector. */ printf( "\tVargv _vec( \"%s\" );\n\n", fn->name ); /* Create the input args. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; /* Images are special - have to init the vector, even * for output args. Have to translate VImage. */ if( strcmp( ty->type, IM_TYPE_IMAGE ) == 0 ) { printf( "\t_vec.data(%d) = %s.image();\n", j, fn->argv[j].name ); continue; } /* For output masks, we have to set an input filename. Not * freed, so constant string is OK. */ if( (ty->flags & IM_TYPE_OUTPUT) && (strcmp( ty->type, IM_TYPE_IMASK ) == 0 || strcmp( ty->type, IM_TYPE_DMASK ) == 0) ) { printf( "\t((im_mask_object*) _vec.data(%d))->name = " "(char*)\"noname\";\n", j ); continue; } /* Skip other output args. */ if( ty->flags & IM_TYPE_OUTPUT ) continue; if( strcmp( ty->type, IM_TYPE_IMASK ) == 0 ) /* Mask types are different - have to use * im_mask_object. */ printf( "\t((im_mask_object*) " "_vec.data(%d))->mask = %s.mask().iptr;\n", j, fn->argv[j].name ); else if( strcmp( ty->type, IM_TYPE_DMASK ) == 0 ) printf( "\t((im_mask_object*) " "_vec.data(%d))->mask = %s.mask().dptr;\n", j, fn->argv[j].name ); else if( strcmp( ty->type, IM_TYPE_DISPLAY ) == 0 ) /* Display have to use VDisplay. */ printf( "\t_vec.data(%d) = %s.disp();\n", j, fn->argv[j].name ); else if( strcmp( ty->type, IM_TYPE_STRING ) == 0 ) /* Zap input strings directly into _vec. */ printf( "\t_vec.data(%d) = (im_object) %s;\n", j, fn->argv[j].name ); else if( strcmp( ty->type, IM_TYPE_IMAGEVEC ) == 0 ) print_invec( j, fn->argv[j].name, "im_imagevec_object", "IMAGE *", ".image()" ); else if( strcmp( ty->type, IM_TYPE_DOUBLEVEC ) == 0 ) print_invec( j, fn->argv[j].name, "im_doublevec_object", "double", "" ); else if( strcmp( ty->type, IM_TYPE_INTVEC ) == 0 ) print_invec( j, fn->argv[j].name, "im_intvec_object", "int", "" ); else if( strcmp( ty->type, IM_TYPE_INTERPOLATE ) == 0 ) { printf( "\tif( vips__input_interpolate_init( " "&_vec.data(%d), %s ) )\n", j, fn->argv[j].name ); printf( "\t\tverror();\n" ); } else /* Just use vips2cpp(). */ printf( "\t*((%s*) _vec.data(%d)) = %s;\n", vips2cpp( ty ), j, fn->argv[j].name ); } /* Call function. */ printf( "\t_vec.call();\n" ); /* Extract output args. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty = fn->argv[j].desc; /* Skip input args. */ if( !(ty->flags & IM_TYPE_OUTPUT) ) continue; /* Skip images (done on input side, really). */ if( strcmp( ty->type, IM_TYPE_IMAGE ) == 0 ) continue; if( strcmp( ty->type, IM_TYPE_IMASK ) == 0 || strcmp( ty->type, IM_TYPE_DMASK ) == 0 ) /* Mask types are different - have to use * im_mask_object. */ printf( "\t%s.embed( (DOUBLEMASK *)((im_mask_object*)" "_vec.data(%d))->mask );\n", fn->argv[j].name, j ); else if( strcmp( ty->type, IM_TYPE_STRING ) == 0 ) /* Strings are grabbed out of the vec. */ printf( "\t%s = (char*) _vec.data(%d);\n", fn->argv[j].name, j ); else /* Just use vips2cpp(). */ printf( "\t%s = *((%s*)_vec.data(%d));\n", fn->argv[j].name, vips2cpp( ty ), j ); } /* Note dependancies if out is an image and this function uses * PIO. */ if( oa != -1 ) { im_type_desc *ty = fn->argv[oa].desc; if( strcmp( ty->type, IM_TYPE_IMAGE ) == 0 && (fn->flags & IM_FN_PIO) ) { /* Loop for all input args again .. */ for( j = 0; j < fn->argc; j++ ) { im_type_desc *ty2 = fn->argv[j].desc; /* Skip output args. */ if( ty2->flags & IM_TYPE_OUTPUT ) continue; /* Input image. */ if( strcmp( ty2->type, IM_TYPE_IMAGE ) == 0 ) printf( "\t%s._ref->addref( " "%s._ref );\n", fn->argv[oa].name, fn->argv[j].name ); else if( strcmp( ty2->type, IM_TYPE_IMAGEVEC ) == 0 ) { /* The out depends on every image in * the input vector. */ printf( "\tfor( unsigned int i = 0; " "i < %s.size(); i++ )\n", fn->argv[j].name ); printf( "\t\t%s._ref->addref( " "%s[i]._ref );\n", fn->argv[oa].name, fn->argv[j].name ); } } } } /* Return result. */ if( oa != -1 ) printf( "\n\treturn( %s );\n", fn->argv[oa].name ); printf( "}\n\n" ); return( NULL ); } /* Print C++ decls for function, package or all. */ static int print_cppdecls( int argc, char **argv ) { printf( "// this file automatically generated from\n" "// VIPS library %s\n", vips_version_string() ); if( map_name( argv[0], print_cppdecl ) ) vips_error_exit( NULL ); return( 0 ); } /* Print C++ bindings for function, package or all. */ static int print_cppdefs( int argc, char **argv ) { printf( "// this file automatically generated from\n" "// VIPS library %s\n", vips_version_string() ); if( map_name( argv[0], print_cppdef ) ) vips_error_exit( NULL ); return( 0 ); } static int print_help( int argc, char **argv ) { return( 0 ); } /* All our built-in actions. */ typedef int (*Action)( int argc, char **argv ); typedef struct _ActionEntry { char *name; char *description; GOptionEntry *group; Action action; } ActionEntry; static GOptionEntry empty_options[] = { { NULL } }; static ActionEntry actions[] = { { "list", N_( "list classes|packages|all|package-name|operation-name" ), &empty_options[0], print_list }, { "cpph", N_( "generate headers for C++ binding" ), &empty_options[0], print_cppdecls }, { "cppc", N_( "generate bodies for C++ binding" ), &empty_options[0], print_cppdefs }, { "links", N_( "generate links for vips/bin" ), &empty_options[0], print_links }, { "help", N_( "list possible actions" ), &empty_options[0], print_help }, }; static void parse_options( GOptionContext *context, int *argc, char **argv ) { char txt[1024]; VipsBuf buf = VIPS_BUF_STATIC( txt ); GError *error = NULL; int i, j; #ifdef DEBUG printf( "parse_options:\n" ); for( i = 0; i < *argc; i++ ) printf( "%d) %s\n", i, argv[i] ); #endif /*DEBUG*/ vips_buf_appendf( &buf, "%7s - %s\n", "OPER", _( "execute vips operation OPER" ) ); g_option_context_set_summary( context, vips_buf_all( &buf ) ); if( !g_option_context_parse( context, argc, &argv, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( NULL ); } /* Remove any "--" argument. If one of our arguments is a negative * number, the user will need to have added the "--" flag to stop * GOption parsing. But "--" is still passed down to us and we need to * ignore it. */ for( i = 1; i < *argc - 1; i++ ) if( strcmp( argv[i], "--" ) == 0 ) { for( j = i; j < *argc; j++ ) argv[j] = argv[j + 1]; *argc -= 1; } } static GOptionGroup * add_operation_group( GOptionContext *context, VipsOperation *user_data ) { GOptionGroup *group; group = g_option_group_new( "operation", _( "Operation" ), _( "Operation help" ), user_data, NULL ); g_option_group_set_translation_domain( group, GETTEXT_PACKAGE ); g_option_context_add_group( context, group ); return( group ); } /* VIPS universal main program. */ int main( int argc, char **argv ) { char *action; GOptionContext *context; GOptionGroup *main_group; GOptionGroup *group; VipsOperation *operation; im_function *fn; int i, j; gboolean handled; GError *error = NULL; if( VIPS_INIT( argv[0] ) ) vips_error_exit( NULL ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); #ifdef DEBUG_FATAL /* Set masks for debugging ... stop on any problem. */ g_log_set_always_fatal( G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL | G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING ); #endif /*!DEBUG_FATAL*/ context = g_option_context_new( _( "[ACTION] [OPTIONS] [PARAMETERS] - " "VIPS driver program" ) ); /* Add and parse the outermost options: the ones this program uses. * For example, we need * to be able to spot that in the case of "--plugin ./poop.plg" we * must remove two args. */ main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, main_option ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); /* We add more options later, for example as options to vips8 * operations. Ignore any unknown options in this first parse. */ g_option_context_set_ignore_unknown_options( context, TRUE ); /* "vips" with no arguments does "vips --help". */ if( argc == 1 ) { char *help; help = g_option_context_get_help( context, TRUE, NULL ); printf( "%s", help ); g_free( help ); exit( 0 ); } /* Also disable help output: we want to be able to display full help * in a second pass after all options have been created. */ g_option_context_set_help_enabled( context, FALSE ); if( !g_option_context_parse( context, &argc, &argv, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( NULL ); } if( main_option_plugin ) { if( !im_load_plugin( main_option_plugin ) ) vips_error_exit( NULL ); } if( main_option_version ) printf( "vips-%s\n", vips_version_string() ); /* Reenable help and unknown option detection ready for the second * option parse. */ g_option_context_set_ignore_unknown_options( context, FALSE ); g_option_context_set_help_enabled( context, TRUE ); /* Try to find our action. */ handled = FALSE; action = NULL; /* Should we try to run the thing we are named as? */ if( !isvips( g_get_prgname() ) ) action = argv[0]; if( !action ) { /* Look for the first non-option argument, if any, and make * that our action. The parse above will have removed most of * them, but --help (for example) could still remain. */ for( i = 1; i < argc; i++ ) if( argv[i][0] != '-' ) { action = argv[i]; /* Remove the action from argv. */ for( j = i; j < argc; j++ ) argv[j] = argv[j + 1]; argc -= 1; break; } } /* Could be one of our built-in actions. */ if( action ) for( i = 0; i < VIPS_NUMBER( actions ); i++ ) if( strcmp( action, actions[i].name ) == 0 ) { group = add_operation_group( context, NULL ); g_option_group_add_entries( group, actions[i].group ); parse_options( context, &argc, argv ); if( actions[i].action( argc - 1, argv + 1 ) ) vips_error_exit( "%s", action ); handled = TRUE; break; } /* Could be a vips7 im_function. We need to test for vips7 first, * since we don't want to use the vips7 compat wrappers in vips8 * unless we have to. They don't support all args types. */ if( action && !handled && (fn = im_find_function( action )) ) { if( im_run_command( action, argc - 1, argv + 1 ) ) { if( argc == 1 ) usage( fn ); else vips_error_exit( NULL ); } handled = TRUE; } /* im_find_function() set an error msg. */ if( action && !handled ) vips_error_clear(); /* Could be a vips8 VipsOperation. */ if( action && !handled && (operation = vips_operation_new( action )) ) { group = add_operation_group( context, operation ); vips_call_options( group, operation ); parse_options( context, &argc, argv ); if( vips_call_argv( operation, argc - 1, argv + 1 ) ) { if( argc == 1 ) vips_operation_class_print_usage( VIPS_OPERATION_GET_CLASS( operation ) ); vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); if( argc == 1 ) /* We don't exit with an error for something * like "vips fitsload" failing, we use it to * decide if an optional component has been * configured. If we've been built without * fits support, fitsload will fail to find * the operation and we'll error with "unknown * action" below. */ exit( 0 ); else vips_error_exit( NULL ); } vips_object_unref_outputs( VIPS_OBJECT( operation ) ); g_object_unref( operation ); handled = TRUE; } /* vips_operation_new() sets an error msg for unknown operation. */ if( action && !handled ) vips_error_clear(); if( action && !handled ) { vips_error_exit( _( "unknown action \"%s\"" ), action ); } /* Still not handled? We may not have called parse_options(), so * --help args may not have been processed. */ if( !handled ) parse_options( context, &argc, argv ); g_option_context_free( context ); vips_shutdown(); return( 0 ); } vips-8.2.2/tools/vipsedit.c0000664000175000017500000001562612530402247012573 00000000000000/* modify vips file header! - useful for setting resolution, coding... very dangerous! no way of setting non-used codes in variables like newxres so need flags to show new parameter has been set.. boring Copyright K.Martinez 30/6/93 29/7/93 JC -format added - ==0 added to strcmp! 17/11/94 JC - new header fields added 21/10/04 - more header updates 22/8/05 - less-stupid-ified 20/9/05 - rewritten with glib option parser, ready for xml options to go in */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #include #include #include /* We have to represent all header fields as char* so we can spot unset args * safely. */ static char *xsize = NULL; static char *ysize = NULL; static char *bands = NULL; static char *format = NULL; static char *interpretation = NULL; static char *coding = NULL; static char *xres = NULL; static char *yres = NULL; static char *xoffset = NULL; static char *yoffset = NULL; static char *endian = NULL; static gboolean setext = FALSE; static GOptionEntry entries[] = { { "endian", 'n', 0, G_OPTION_ARG_STRING, &endian, N_( "tag file as big or little-endian" ), NULL }, { "width", 'w', 0, G_OPTION_ARG_STRING, &xsize, N_( "set width to N pixels" ), "N" }, { "height", 'h', 0, G_OPTION_ARG_STRING, &ysize, N_( "set height to N pixels" ), "N" }, { "bands", 'b', 0, G_OPTION_ARG_STRING, &bands, N_( "set Bands to N" ), "N" }, { "format", 'f', 0, G_OPTION_ARG_STRING, &format, N_( "set BandFmt to F (eg. uchar, float)" ), "F" }, { "interpretation", 'i', 0, G_OPTION_ARG_STRING, &interpretation, N_( "set interpretation to I (eg. xyz)" ), "I" }, { "coding", 'c', 0, G_OPTION_ARG_STRING, &coding, N_( "set Coding to C (eg. labq)" ), "C" }, { "xres", 'X', 0, G_OPTION_ARG_STRING, &xres, N_( "set Xres to R pixels/mm" ), "R" }, { "yres", 'Y', 0, G_OPTION_ARG_STRING, &yres, N_( "set Yres to R pixels/mm" ), "R" }, { "xoffset", 'u', 0, G_OPTION_ARG_STRING, &xoffset, N_( "set Xoffset to N pixels" ), "N" }, { "yoffset", 'v', 0, G_OPTION_ARG_STRING, &yoffset, N_( "set Yoffset to N pixels" ), "N" }, { "setext", 'e', 0, G_OPTION_ARG_NONE, &setext, N_( "replace extension block with stdin" ), NULL }, { "xsize", 'x', 0, G_OPTION_ARG_STRING, &xsize, N_( "set Xsize to N (deprecated, use width)" ), "N" }, { "ysize", 'y', 0, G_OPTION_ARG_STRING, &ysize, N_( "set Ysize to N (deprecated, use height)" ), "N" }, { "type", 't', 0, G_OPTION_ARG_STRING, &interpretation, N_( "set Type to T (deprecated, use interpretation)" ), "T" }, { NULL } }; static void parse_pint( char *arg, int *out ) { /* Might as well set an upper limit. */ *out = atoi( arg ); if( *out <= 0 || *out > 1000000 ) error_exit( _( "'%s' is not a positive integer" ), arg ); } int main( int argc, char **argv ) { GOptionContext *context; GOptionGroup *main_group; GError *error = NULL; IMAGE *im; unsigned char header[IM_SIZEOF_HEADER]; if( VIPS_INIT( argv[0] ) ) vips_error_exit( "%s", _( "unable to start VIPS" ) ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); context = g_option_context_new( _( "vipsedit - edit vips file header" ) ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, entries ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); if( !g_option_context_parse( context, &argc, &argv, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } exit( -1 ); } if( argc != 2 ) { fprintf( stderr, _( "usage: %s [OPTION...] vips-file\n" ), g_get_prgname() ); exit( -1 ); } if( !(im = im_init( argv[1] )) || (im->fd = im__open_image_file( im->filename )) == -1 ) error_exit( _( "could not open image %s" ), argv[1] ); if( read( im->fd, header, IM_SIZEOF_HEADER ) != IM_SIZEOF_HEADER || im__read_header_bytes( im, header ) ) error_exit( _( "could not read VIPS header for %s" ), im->filename ); if( endian ) { if( strcmp( endian, "little" ) == 0 ) im->magic = VIPS_MAGIC_INTEL; else if( strcmp( endian, "big" ) == 0 ) im->magic = VIPS_MAGIC_SPARC; else error_exit( _( "bad endian-ness %s, " "should be 'big' or 'little'" ), endian ); } if( xsize ) parse_pint( xsize, &im->Xsize ); if( ysize ) parse_pint( ysize, &im->Ysize ); if( bands ) parse_pint( bands, &im->Bands ); if( format ) { VipsBandFormat f; if( (f = im_char2BandFmt( format )) < 0 ) error_exit( _( "bad format %s" ), format ); im->BandFmt = f; im->Bbits = im_bits_of_fmt( f ); } if( interpretation ) { VipsInterpretation i; if( (i = im_char2Type( interpretation )) < 0 ) error_exit( _( "bad interpretation %s" ), interpretation ); im->Type = i; } if( coding ) { VipsCoding c; if( (c = im_char2Coding( coding )) < 0 ) error_exit( _( "bad coding %s" ), coding ); im->Coding = c; } if( xres ) im->Xres = atof( xres ); if( yres ) im->Yres = atof( yres ); if( xoffset ) im->Xoffset = atoi( xoffset ); if( yoffset ) im->Yoffset = atoi( yoffset ); if( lseek( im->fd, 0, SEEK_SET ) == (off_t) -1 ) error_exit( _( "could not seek on %s" ), im->filename ); if( im__write_header_bytes( im, header ) || im__write( im->fd, header, IM_SIZEOF_HEADER ) ) error_exit( _( "could not write to %s" ), im->filename ); if( setext ) { char *xml; size_t size; if( !(xml = im__file_read( stdin, "stdin", &size )) ) error_exit( "%s", _( "could not get ext data" ) ); /* Strip trailing whitespace ... we can get stray \n at the * end, eg. "echo | editvips --setext fred.v". */ while( size > 0 && isspace( xml[size - 1] ) ) size -= 1; if( im__write_extension_block( im, xml, size ) ) error_exit( "%s", _( "could not set extension" ) ); im_free( xml ); } im_close( im ); vips_shutdown(); return( 0 ); } vips-8.2.2/tools/Makefile.am0000664000175000017500000000167312640741735012643 00000000000000bin_PROGRAMS = \ vips \ vipsedit \ vipsthumbnail \ vipsheader vips_SOURCES = vips.c vipsedit_SOURCES = vipsedit.c vipsheader_SOURCES = vipsheader.c vipsthumbnail_SOURCES = vipsthumbnail.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ AM_LDFLAGS = @LDFLAGS@ LDADD = @VIPS_CFLAGS@ ${top_builddir}/libvips/libvips.la @VIPS_LIBS@ bin_SCRIPTS = \ light_correct \ shrink_width \ batch_image_convert \ batch_rubber_sheet \ batch_crop \ vipsprofile \ vips-8.2 EXTRA_DIST = \ vipsprofile \ vips-8.2 \ light_correct.in \ shrink_width.in \ batch_image_convert.in \ batch_rubber_sheet.in \ batch_crop.in install-exec-hook: chmod ugo+x ${DESTDIR}${bindir}/light_correct chmod ugo+x ${DESTDIR}${bindir}/shrink_width chmod ugo+x ${DESTDIR}${bindir}/batch_image_convert chmod ugo+x ${DESTDIR}${bindir}/batch_rubber_sheet chmod ugo+x ${DESTDIR}${bindir}/batch_crop chmod ugo+x ${DESTDIR}${bindir}/vipsprofile vips-8.2.2/tools/vipsprofile0000664000175000017500000003142712530402247013062 00000000000000#!/usr/bin/python import re import math import cairo class ReadFile: def __init__(self, filename): self.filename = filename def __enter__(self): self.f = open(self.filename, 'r') self.lineno = 0 self.getnext(); return self def __exit__(self, type, value, traceback): self.f.close() def __nonzero__(self): return self.line != "" def getnext(self): self.lineno += 1 self.line = self.f.readline() def read_times(rf): times = [] while True: match = re.match('[+-]?[0-9]+ ', rf.line) if not match: break times += [int(x) for x in re.split(' ', rf.line.rstrip())] rf.getnext() return times[::-1] class Thread: thread_number = 0 def __init__(self, thread_name): # no one cares about the thread address match = re.match('(.*) \(0x.*?\) (.*)', thread_name) if match: thread_name = match.group(1) + " " + match.group(2) self.thread_name = thread_name self.thread_number = Thread.thread_number self.all_events = [] self.workwait_events = [] self.memory_events = [] self.other_events = [] Thread.thread_number += 1 all_events = [] class Event: def __init__(self, thread, gate_location, gate_name, start, stop): self.thread = thread self.gate_location = gate_location self.gate_name = gate_name self.work = False self.wait = False self.memory = False if gate_location == "memory": self.memory = True elif re.match('.*work.*', gate_name): self.work = True elif re.match('.*wait.*', gate_name): self.wait = True if self.memory: self.start = start self.stop = start self.size = stop else: self.start = start self.stop = stop thread.all_events.append(self) all_events.append(self) if self.wait or self.work: thread.workwait_events.append(self) elif self.memory: thread.memory_events.append(self) else: thread.other_events.append(self) input_filename = 'vips-profile.txt' thread_id = 0 threads = [] n_events = 0 print 'reading from', input_filename with ReadFile(input_filename) as rf: while rf: if rf.line.rstrip() == "": rf.getnext() continue if rf.line[0] == "#": rf.getnext() continue match = re.match('thread: (.*)', rf.line) if not match: print 'parse error line %d, expected "thread"' % rf.lineno thread_name = match.group(1) + " " + str(thread_id) thread_id += 1 thread = Thread(thread_name) threads.append(thread) rf.getnext() while True: match = re.match('^gate: (.*?)(: (.*))?$', rf.line) if not match: break gate_location = match.group(1) gate_name = match.group(3) rf.getnext() match = re.match('start:', rf.line) if not match: continue rf.getnext() start = read_times(rf) match = re.match('stop:', rf.line) if not match: continue rf.getnext() stop = read_times(rf) if len(start) != len(stop): print 'start and stop length mismatch' for a, b in zip(start, stop): Event(thread, gate_location, gate_name, a, b) n_events += 1 for thread in threads: thread.all_events.sort(lambda x, y: cmp(x.start, y.start)) thread.workwait_events.sort(lambda x, y: cmp(x.start, y.start)) thread.memory_events.sort(lambda x, y: cmp(x.start, y.start)) thread.other_events.sort(lambda x, y: cmp(x.start, y.start)) all_events.sort(lambda x, y: cmp(x.start, y.start)) print 'loaded %d events' % n_events # move time axis to secs of computation ticks_per_sec = 1000000.0 first_time = all_events[0].start last_time = 0 for event in all_events: if event.start < first_time: first_time = event.start if event.stop > last_time: last_time = event.stop for event in all_events: event.start = (event.start - first_time) / ticks_per_sec event.stop = (event.stop - first_time) / ticks_per_sec last_time = (last_time - first_time) / ticks_per_sec first_time = 0 print 'total time =', last_time # calculate some simple stats for thread in threads: thread.start = last_time thread.stop = 0 thread.wait = 0 thread.work = 0 thread.mem = 0 thread.peak_mem = 0 for event in thread.all_events: if event.start < thread.start: thread.start = event.start if event.stop > thread.stop: thread.stop = event.stop if event.wait: thread.wait += event.stop - event.start if event.work: thread.work += event.stop - event.start if event.memory: thread.mem += event.size if thread.mem > thread.peak_mem: thread.peak_mem = thread.mem thread.alive = thread.stop - thread.start # hide very short-lived threads thread.hide = thread.alive < 0.01 print 'name\t\talive\twait%\twork%\tunkn%\tmemory\tpeakm' for thread in threads: if thread.hide: continue wait_percent = 100 * thread.wait / thread.alive work_percent = 100 * thread.work / thread.alive unkn_percent = 100 - 100 * (thread.work + thread.wait) / thread.alive print '%13s\t%6.2g\t' % (thread.thread_name, thread.alive), print '%.3g\t%.3g\t%.3g\t' % (wait_percent, work_percent, unkn_percent), print '%.3g\t' % (float(thread.mem) / (1024 * 1024)), print '%.3g\t' % (float(thread.peak_mem) / (1024 * 1024)) mem = 0 peak_mem = 0 for event in all_events: if event.memory: mem += event.size if mem > peak_mem: peak_mem = mem print 'peak memory = %.3g MB' % (float(peak_mem) / (1024 * 1024)) if mem != 0: print 'leak! final memory = %.3g MB' % (float(mem) / (1024 * 1024)) # does a list of events contain an overlap? # assume the list of events has been sorted by start time def events_overlap(events): for i in range(0, len(events) - 1): # we can't just test for stop1 > start2 since one (or both) events # might have duration zero event1 = events[i] event2 = events[i + 1] overlap_start = max(event1.start, event2.start) overlap_stop = min(event1.stop, event2.stop) if overlap_stop - overlap_start > 0: return True return False # do the events on two gates overlap? def gates_overlap(events, gate_name1, gate_name2): merged = [] for event in events: if event.gate_name == gate_name1 or event.gate_name == gate_name2: merged.append(event) merged.sort(lambda x, y: cmp(x.start, y.start)) return events_overlap(merged) # allocate a y position for each gate total_y = 0 for thread in threads: if thread.hide: continue thread.total_y = total_y gate_positions = {} # first pass .. move work and wait events to y == 0 if events_overlap(thread.workwait_events): print 'gate overlap on thread', thread.thread_name for i in range(0, len(thread.workwait_events) - 1): event1 = thread.workwait_events[i] event2 = thread.workwait_events[i + 1] overlap_start = max(event1.start, event2.start) overlap_stop = min(event1.stop, event2.stop) if overlap_stop - overlap_start > 0: print 'overlap:' print 'event', event1.gate_location, event1.gate_name, print 'starts at', event1.start, 'stops at', event1.stop print 'event', event2.gate_location, event2.gate_name, print 'starts at', event2.start, 'stops at', event2.stop for event in thread.workwait_events: gate_positions[event.gate_name] = 0 event.y = 0 event.total_y = total_y for event in thread.memory_events: gate_positions[event.gate_name] = 0 event.y = 0 event.total_y = total_y # second pass: move all other events to non-overlapping ys y = 1 for event in thread.other_events: if not event.gate_name in gate_positions: # look at all the ys we've allocated previously and see if we can # add this gate to one of them for gate_y in range(1, y): found_overlap = False for gate_name in gate_positions: if gate_positions[gate_name] != gate_y: continue if gates_overlap(thread.other_events, event.gate_name, gate_name): found_overlap = True break if not found_overlap: gate_positions[event.gate_name] = gate_y break # failure? add a new y if not event.gate_name in gate_positions: gate_positions[event.gate_name] = y y += 1 event.y = gate_positions[event.gate_name] # third pass: flip the order of the ys to get the lowest-level ones at the # top, next to the wait/work line for event in thread.other_events: event.y = y - event.y event.total_y = total_y + event.y total_y += y PIXELS_PER_SECOND = 1000 PIXELS_PER_GATE = 20 LEFT_BORDER = 130 BAR_HEIGHT = 5 MEM_HEIGHT = 100 WIDTH = int(LEFT_BORDER + last_time * PIXELS_PER_SECOND) + 20 HEIGHT = int(total_y * PIXELS_PER_GATE) + MEM_HEIGHT + 30 output_filename = "vips-profile.svg" print 'writing to', output_filename surface = cairo.SVGSurface(output_filename, WIDTH, HEIGHT) ctx = cairo.Context(surface) ctx.select_font_face('Sans') ctx.set_font_size(15) ctx.rectangle(0, 0, WIDTH, HEIGHT) ctx.set_source_rgba(0.0, 0.0, 0.3, 1.0) ctx.fill() def draw_event(ctx, event): left = event.start * PIXELS_PER_SECOND + LEFT_BORDER top = event.total_y * PIXELS_PER_GATE + BAR_HEIGHT / 2 width = (event.stop - event.start) * PIXELS_PER_SECOND height = BAR_HEIGHT if event.memory: width = 1 height /= 2 top += BAR_HEIGHT ctx.rectangle(left, top, width, height) if event.wait: ctx.set_source_rgb(0.9, 0.1, 0.1) elif event.work: ctx.set_source_rgb(0.1, 0.9, 0.1) elif event.memory: ctx.set_source_rgb(1.0, 1.0, 1.0) else: ctx.set_source_rgb(0.1, 0.1, 0.9) ctx.fill() if not event.wait and not event.work and not event.memory: xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(event.gate_name) ctx.move_to(left + width / 2 - twidth / 2, top + 3 * BAR_HEIGHT) ctx.set_source_rgb(1.00, 0.83, 0.00) ctx.show_text(event.gate_name) for thread in threads: if thread.hide: continue ctx.rectangle(0, thread.total_y * PIXELS_PER_GATE, WIDTH, 1) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.fill() xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(thread.thread_name) ctx.move_to(0, theight + thread.total_y * PIXELS_PER_GATE + BAR_HEIGHT / 2) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.show_text(thread.thread_name) for event in thread.all_events: draw_event(ctx, event) memory_y = total_y * PIXELS_PER_GATE label = "memory" xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(label) ctx.move_to(0, memory_y + theight + 8) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.show_text(label) mem = 0 ctx.move_to(LEFT_BORDER, memory_y + MEM_HEIGHT) for event in all_events: if event.memory: mem += event.size left = LEFT_BORDER + event.start * PIXELS_PER_SECOND top = memory_y + MEM_HEIGHT - (MEM_HEIGHT * mem / peak_mem) ctx.line_to(left, top) ctx.set_line_width(1) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.stroke() axis_y = total_y * PIXELS_PER_GATE + MEM_HEIGHT ctx.rectangle(LEFT_BORDER, axis_y, last_time * PIXELS_PER_SECOND, 1) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.fill() label = "time" xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(label) ctx.move_to(0, axis_y + theight + 8) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.show_text(label) for t in range(0, int(last_time * PIXELS_PER_SECOND), PIXELS_PER_SECOND / 10): left = t + LEFT_BORDER top = axis_y ctx.rectangle(left, top, 1, 5) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.fill() label = str(float(t) / PIXELS_PER_SECOND) xbearing, ybearing, twidth, theight, xadvance, yadvance = \ ctx.text_extents(label) ctx.move_to(left - twidth / 2, top + theight + 8) ctx.set_source_rgb(1.00, 1.00, 1.00) ctx.show_text(label) surface.finish() vips-8.2.2/tools/Makefile.in0000664000175000017500000007142212651721157012651 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = vips$(EXEEXT) vipsedit$(EXEEXT) vipsthumbnail$(EXEEXT) \ vipsheader$(EXEEXT) subdir = tools ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = batch_crop batch_image_convert batch_rubber_sheet \ light_correct shrink_width CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_vips_OBJECTS = vips.$(OBJEXT) vips_OBJECTS = $(am_vips_OBJECTS) vips_LDADD = $(LDADD) vips_DEPENDENCIES = ${top_builddir}/libvips/libvips.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am_vipsedit_OBJECTS = vipsedit.$(OBJEXT) vipsedit_OBJECTS = $(am_vipsedit_OBJECTS) vipsedit_LDADD = $(LDADD) vipsedit_DEPENDENCIES = ${top_builddir}/libvips/libvips.la am_vipsheader_OBJECTS = vipsheader.$(OBJEXT) vipsheader_OBJECTS = $(am_vipsheader_OBJECTS) vipsheader_LDADD = $(LDADD) vipsheader_DEPENDENCIES = ${top_builddir}/libvips/libvips.la am_vipsthumbnail_OBJECTS = vipsthumbnail.$(OBJEXT) vipsthumbnail_OBJECTS = $(am_vipsthumbnail_OBJECTS) vipsthumbnail_LDADD = $(LDADD) vipsthumbnail_DEPENDENCIES = ${top_builddir}/libvips/libvips.la am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(vips_SOURCES) $(vipsedit_SOURCES) $(vipsheader_SOURCES) \ $(vipsthumbnail_SOURCES) DIST_SOURCES = $(vips_SOURCES) $(vipsedit_SOURCES) \ $(vipsheader_SOURCES) $(vipsthumbnail_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/batch_crop.in \ $(srcdir)/batch_image_convert.in \ $(srcdir)/batch_rubber_sheet.in $(srcdir)/light_correct.in \ $(srcdir)/shrink_width.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ vips_SOURCES = vips.c vipsedit_SOURCES = vipsedit.c vipsheader_SOURCES = vipsheader.c vipsthumbnail_SOURCES = vipsthumbnail.c AM_CPPFLAGS = -I${top_srcdir}/libvips/include @VIPS_CFLAGS@ @VIPS_INCLUDES@ AM_LDFLAGS = @LDFLAGS@ LDADD = @VIPS_CFLAGS@ ${top_builddir}/libvips/libvips.la @VIPS_LIBS@ bin_SCRIPTS = \ light_correct \ shrink_width \ batch_image_convert \ batch_rubber_sheet \ batch_crop \ vipsprofile \ vips-8.2 EXTRA_DIST = \ vipsprofile \ vips-8.2 \ light_correct.in \ shrink_width.in \ batch_image_convert.in \ batch_rubber_sheet.in \ batch_crop.in all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tools/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): batch_crop: $(top_builddir)/config.status $(srcdir)/batch_crop.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ batch_image_convert: $(top_builddir)/config.status $(srcdir)/batch_image_convert.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ batch_rubber_sheet: $(top_builddir)/config.status $(srcdir)/batch_rubber_sheet.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ light_correct: $(top_builddir)/config.status $(srcdir)/light_correct.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ shrink_width: $(top_builddir)/config.status $(srcdir)/shrink_width.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list vips$(EXEEXT): $(vips_OBJECTS) $(vips_DEPENDENCIES) $(EXTRA_vips_DEPENDENCIES) @rm -f vips$(EXEEXT) $(AM_V_CCLD)$(LINK) $(vips_OBJECTS) $(vips_LDADD) $(LIBS) vipsedit$(EXEEXT): $(vipsedit_OBJECTS) $(vipsedit_DEPENDENCIES) $(EXTRA_vipsedit_DEPENDENCIES) @rm -f vipsedit$(EXEEXT) $(AM_V_CCLD)$(LINK) $(vipsedit_OBJECTS) $(vipsedit_LDADD) $(LIBS) vipsheader$(EXEEXT): $(vipsheader_OBJECTS) $(vipsheader_DEPENDENCIES) $(EXTRA_vipsheader_DEPENDENCIES) @rm -f vipsheader$(EXEEXT) $(AM_V_CCLD)$(LINK) $(vipsheader_OBJECTS) $(vipsheader_LDADD) $(LIBS) vipsthumbnail$(EXEEXT): $(vipsthumbnail_OBJECTS) $(vipsthumbnail_DEPENDENCIES) $(EXTRA_vipsthumbnail_DEPENDENCIES) @rm -f vipsthumbnail$(EXEEXT) $(AM_V_CCLD)$(LINK) $(vipsthumbnail_OBJECTS) $(vipsthumbnail_LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vips.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vipsedit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vipsheader.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vipsthumbnail.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-exec-hook install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS .MAKE: install-am install-exec-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-binSCRIPTS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-exec-hook \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS .PRECIOUS: Makefile install-exec-hook: chmod ugo+x ${DESTDIR}${bindir}/light_correct chmod ugo+x ${DESTDIR}${bindir}/shrink_width chmod ugo+x ${DESTDIR}${bindir}/batch_image_convert chmod ugo+x ${DESTDIR}${bindir}/batch_rubber_sheet chmod ugo+x ${DESTDIR}${bindir}/batch_crop chmod ugo+x ${DESTDIR}${bindir}/vipsprofile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/tools/batch_crop.in0000664000175000017500000000152012530402247013220 00000000000000#!/bin/sh # Crop a set of image files # # usage: # # example% batch_crop left top width height image1 image2 etc # # writes output images crop_image1, crop_image2 # default prefix VIPSHOME=${VIPSHOME-@prefix@} name=`basename $0` # check args if [ $# -lt 5 ]; then echo "usage: $name left top width height image1 image2 ..." echo echo "$name writes a new set of images called crop_image1, " echo "crop_image2, etc., each cropped to the specified size" exit 1 fi left=$1 top=$2 width=$3 height=$4 shift 4 # convert each argument for i in $*; do dir=`dirname $i` file=`basename $i` new=$dir/crop_$file echo "Cropping $file as $new ..." if [ -f $new ]; then echo "$new exists, skipping" else $VIPSHOME/bin/vips im_extract_area $i $new $left $top $width $height fi done vips-8.2.2/tools/vipsheader.c0000664000175000017500000001321712530402247013070 00000000000000/* @(#) Command; reads the header of a Vasari picture file. * @(#) Usage: header vasari_file * @(#) * * Copyright: Birkbeck College, History of Art Dept, London, VASARI project. * * Author: Nicos Dessipris * Written on: 17/01/1990 * Modified on : 17/04/1990, 2/6/93 K.Martinez * 16/6/93 JC * - now calls im_mmapin instead of bizzare bogosity * 1/6/95 JC * - extra field argument for testing particular bits of the header * 29/10/98 JC * - now uses im_open() * 24/5/01 JC * - uses im_tiff2vips_header() etc., for speed * 7/5/03 JC * - uses im_open_header() * 1/8/05 * - uses new header API, for great smallness * 4/8/05 * - back to plain im_open() now that's lazy enough for us * 9/9/05 * - display meta fields in save format, if possible * 20/9/05 * - new field name "getext" reads extension block * 24/8/06 * - use GOption, loop over args * 4/1/07 * - use im_history_get() * 29/2/08 * - don't stop on error * 23/7/09 * - ... but do return an error code if anything failed * 6/11/09 * - added im_history_get(), im_getexp(), im_printdesc() as wrapped * functions, so "header" is now obsolete * 27/2/13 * - convert to vips8 API */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include static char *main_option_field = NULL; static gboolean main_option_all = FALSE; static GOptionEntry main_option[] = { { "all", 'a', 0, G_OPTION_ARG_NONE, &main_option_all, N_( "show all fields" ), NULL }, { "field", 'f', 0, G_OPTION_ARG_STRING, &main_option_field, N_( "print value of FIELD (\"getext\" reads extension block, " "\"Hist\" reads image history)" ), "FIELD" }, { NULL } }; /* A non-fatal error. Print the vips error buffer and continue. */ static void print_error( void ) { fprintf( stderr, "%s: %s", g_get_prgname(), vips_error_buffer() ); vips_error_clear(); } static void * print_field_fn( VipsImage *image, const char *field, GValue *value, void *a ) { gboolean *many = (gboolean *) a; const char *extra; char *str_value; /* Look for known enums and decode them. */ extra = NULL; if( strcmp( field, "coding" ) == 0 ) extra = vips_enum_nick( VIPS_TYPE_CODING, g_value_get_int( value ) ); else if( strcmp( field, "format" ) == 0 ) extra = vips_enum_nick( VIPS_TYPE_BAND_FORMAT, g_value_get_int( value ) ); else if( strcmp( field, "interpretation" ) == 0 ) extra = vips_enum_nick( VIPS_TYPE_INTERPRETATION, g_value_get_int( value ) ); if( *many ) printf( "%s: ", image->filename ); str_value = g_strdup_value_contents( value ); printf( "%s: %s", field, str_value ); g_free( str_value ); if( extra ) printf( " - %s", extra ); printf( "\n" ); return( NULL ); } /* Print header, or parts of header. */ static int print_header( VipsImage *im, gboolean many ) { if( !main_option_field ) { printf( "%s: ", im->filename ); vips_object_print_summary( VIPS_OBJECT( im ) ); if( main_option_all ) (void) vips_image_map( im, print_field_fn, &many ); } else if( strcmp( main_option_field, "getext" ) == 0 ) { if( vips__has_extension_block( im ) ) { void *buf; int size; if( !(buf = vips__read_extension_block( im, &size )) ) return( -1 ); printf( "%s", (char *) buf ); g_free( buf ); } } else if( strcmp( main_option_field, "Hist" ) == 0 ) printf( "%s", vips_image_get_history( im ) ); else { char *str; if( vips_image_get_as_string( im, main_option_field, &str ) ) return( -1 ); printf( "%s\n", str ); g_free( str ); } return( 0 ); } int main( int argc, char *argv[] ) { GOptionContext *context; GOptionGroup *main_group; GError *error = NULL; int i; int result; if( VIPS_INIT( argv[0] ) ) vips_error_exit( "unable to start VIPS" ); textdomain( GETTEXT_PACKAGE ); setlocale( LC_ALL, "" ); context = g_option_context_new( _( "- print image header" ) ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_group_add_entries( main_group, main_option ); vips_add_option_entries( main_group ); g_option_group_set_translation_domain( main_group, GETTEXT_PACKAGE ); g_option_context_set_main_group( context, main_group ); if( !g_option_context_parse( context, &argc, &argv, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( "try \"%s --help\"", g_get_prgname() ); } g_option_context_free( context ); result = 0; for( i = 1; i < argc; i++ ) { VipsImage *im; if( !(im = vips_image_new_from_file( argv[i], NULL )) ) { print_error(); result = 1; } if( im && print_header( im, argc > 2 ) ) { print_error(); result = 1; } if( im ) g_object_unref( im ); } vips_shutdown(); return( result ); } vips-8.2.2/python/0000775000175000017500000000000012651721507011036 500000000000000vips-8.2.2/python/Vips.py0000664000175000017500000011033612643524555012262 00000000000000# -*- Mode: Python; py-indent-offset: 4 -*- # vim: tabstop=4 shiftwidth=4 expandtab from __future__ import division # overrides for pygobject gobject-introspection binding for libvips, tested # with python2.7 and python3.4 # copy this file to dist-packages/gi/overrides, eg. # # sudo cp Vips.py /usr/lib/python2.7/dist-packages/gi/overrides # sudo cp Vips.py /usr/lib/python3/dist-packages/gi/overrides # # Alternatively, build vips to another prefix, then copy Vips.py and Vips.pyc # from $prefix/lib/python2.7/dist-packages/gi/overrides to /usr # This file is part of VIPS. # # VIPS is free software; you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for # more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk import sys import re import logging import numbers logger = logging.getLogger(__name__) from gi.repository import GObject from ..overrides import override from ..module import get_introspection_module Vips = get_introspection_module('Vips') __all__ = [] # start up vips! # passing argv[0] helps vips find its data files on some platforms Vips.init(sys.argv[0]) # need the gtypes for various vips types vips_type_array_int = GObject.GType.from_name("VipsArrayInt") vips_type_array_double = GObject.GType.from_name("VipsArrayDouble") vips_type_array_image = GObject.GType.from_name("VipsArrayImage") vips_type_blob = GObject.GType.from_name("VipsBlob") vips_type_image = GObject.GType.from_name("VipsImage") vips_type_operation = GObject.GType.from_name("VipsOperation") vips_type_ref_string = GObject.GType.from_name("VipsRefString") def is_2D(value): if not isinstance(value, list): return False for x in value: if not isinstance(x, list): return False if len(x) != len(value[0]): return False return True def imageize(match_image, value): logger.debug('imageize match_image=%s, value=%s' % (match_image, value)) # 2D arrays become array images if is_2D(value): return Vips.Image.new_from_array(value) # if there's nothing to match to, also make an array if match_image is None: return Vips.Image.new_from_array(value) # assume this is a pixel constant ... expand into an image using # match as a template pixel = (Vips.Image.black(1, 1) + value).cast(match_image.format) image = pixel.embed(0, 0, match_image.width, match_image.height, extend = Vips.Extend.COPY) image = image.copy(interpretation = match_image.interpretation, xres = match_image.xres, yres = match_image.yres) return image # we'd like to use memoryview to avoid copying things like ICC profiles, but # unfortunately pygobject does not support this ... so for blobs we just use # bytes(). unpack_types = [[Vips.Blob, lambda x: bytes(x.get())], [Vips.RefString, lambda x: x.get()], [Vips.ArrayDouble, lambda x: x.get()], [Vips.ArrayImage, lambda x: x.get()], [Vips.ArrayInt, lambda x: x.get()]] def unpack(value): for t, cast in unpack_types: if isinstance(value, t): return cast(value) return value def array_image_new(array): match_image = next((x for x in array if isinstance(x, Vips.Image)), None) if match_image is None: raise Error('Unable to make image array argument.', 'Array must contain at least one image.') for i in range(0, len(array)): if not isinstance(array[i], Vips.Image): array[i] = imageize(match_image, array[i]) return Vips.ArrayImage.new(array) arrayize_types = [[vips_type_array_int, Vips.ArrayInt.new], [vips_type_array_double, Vips.ArrayDouble.new], [vips_type_array_image, array_image_new]] def arrayize(gtype, value): for t, cast in arrayize_types: if GObject.type_is_a(gtype, t): if not isinstance(value, list): value = [value] return cast(value) return value def run_cmplx(fn, image): """Run a complex function on a non-complex image. The image needs to be complex, or have an even number of bands. The input can be int, the output is always float or double. """ original_format = image.format if not Vips.band_format_iscomplex(image.format): if image.bands % 2 != 0: raise "not an even number of bands" if not Vips.band_format_isfloat(image.format): image = image.cast(Vips.BandFormat.FLOAT) if image.format == Vips.BandFormat.DOUBLE: new_format = Vips.BandFormat.DPCOMPLEX else: new_format = Vips.BandFormat.COMPLEX image = image.copy(format = new_format, bands = image.bands / 2) image = fn(image) if not Vips.band_format_iscomplex(original_format): if image.format == Vips.BandFormat.DPCOMPLEX: new_format = Vips.BandFormat.DOUBLE else: new_format = Vips.BandFormat.FLOAT image = image.copy(format = new_format, bands = image.bands * 2) return image class Error(Exception): """An error from vips. message -- a high-level description of the error detail -- a string with some detailed diagnostics """ def __init__(self, message, detail = None): self.message = message if detail == None: detail = Vips.error_buffer() Vips.error_clear() self.detail = detail logger.debug('Error %s %s', self.message, self.detail) def __str__(self): return '%s\n %s' % (self.message, self.detail) Vips.Error = Error class Argument(object): def __init__(self, op, prop): self.op = op self.prop = prop self.name = re.sub("-", "_", prop.name) self.flags = op.get_argument_flags(self.name) self.priority = op.get_argument_priority(self.name) self.isset = op.argument_isset(self.name) def set_value(self, match_image, value): logger.debug('assigning %s to %s' % (value, self.name)) logger.debug('%s needs a %s' % (self.name, self.prop.value_type)) # blob-ize if GObject.type_is_a(self.prop.value_type, vips_type_blob): if not isinstance(value, Vips.Blob): value = Vips.Blob.new(None, value) # image-ize if GObject.type_is_a(self.prop.value_type, vips_type_image): if not isinstance(value, Vips.Image): value = imageize(match_image, value) # array-ize some types, if necessary value = arrayize(self.prop.value_type, value) # MODIFY input images need to be copied before assigning them if self.flags & Vips.ArgumentFlags.MODIFY: # don't use .copy(): we want to make a new pipeline with no # reference back to the old stuff ... this way we can free the # previous image earlier logger.debug('MODIFY argument: copying image') new_image = Vips.Image.new_memory() value.write(new_image) value = new_image logger.debug('assigning %s' % value) self.op.props.__setattr__(self.name, value) def get_value(self): value = self.op.props.__getattribute__(self.name) logger.debug('read out %s from %s' % (value, self.name)) return unpack(value) def description(self): result = self.name result += " " * (10 - len(self.name)) + " -- " + self.prop.blurb result += ", " + self.prop.value_type.name return result Vips.Argument = Argument class Operation(Vips.Operation): # find all the args for this op, sort into priority order # remember to ignore deprecated ones def get_args(self): args = [Argument(self, x) for x in self.props] args = [y for y in args if not y.flags & Vips.ArgumentFlags.DEPRECATED] args.sort(key = lambda x: x.priority) return args Operation = override(Operation) __all__.append('Operation') # search a list recursively for a Vips.Image object def find_image(x): if isinstance(x, Vips.Image): return x if isinstance(x, list): for i in x: y = find_image(i) if y is not None: return y return None def _call_base(name, required, optional, self = None, option_string = None): logger.debug('_call_base name=%s, required=%s optional=%s' % (name, required, optional)) if self: logger.debug('_call_base self=%s' % self) if option_string: logger.debug('_call_base option_string = %s' % option_string) try: op = Vips.Operation.new(name) except TypeError as e: raise Error('No such operator.') if op.get_flags() & Vips.OperationFlags.DEPRECATED: raise Error('No such operator.', 'operator "%s" is deprecated' % name) # set str options first so the user can't override things we set # deliberately and break stuff if option_string: if op.set_from_string(option_string) != 0: raise Error('Bad arguments.') args = op.get_args() enm = Vips.ArgumentFlags # find all required, unassigned input args required_input = [x for x in args if x.flags & enm.INPUT and x.flags & enm.REQUIRED and not x.isset] # do we have a non-None self pointer? this is used to set the first # compatible input arg if self is not None: found = False for x in required_input: if GObject.type_is_a(self, x.prop.value_type): x.set_value(None, self) required_input.remove(x) found = True break if not found: raise Error('Bad arguments.', 'No %s argument to %s.' % (str(self.__class__), name)) if len(required_input) != len(required): raise Error('Wrong number of arguments.', '%s needs %d arguments, you supplied %d.' % (name, len(required_input), len(required))) # if we need an image arg but the user supplied a number or list of # numbers, we expand it into an image automatically ... the number is # expanded to match self, or if that's None, the first image we can find in # the required or optional arguments match_image = self if match_image is None: for arg in required: match_image = find_image(arg) if match_image is not None: break if match_image is None: for arg_name in optional: match_image = find_image(optional[arg_name]) if match_image is not None: break for i in range(len(required_input)): required_input[i].set_value(match_image, required[i]) # find all optional, unassigned input args ... make a hash from name to # Argument optional_input = {x.name: x for x in args if x.flags & enm.INPUT and not x.flags & enm.REQUIRED and not x.isset} # find all optional output args ... we use "x = True" # in args to mean add that to output optional_output = {x.name: x for x in args if x.flags & enm.OUTPUT and not x.flags & enm.REQUIRED} # set optional input args for key in list(optional.keys()): if key in optional_input: optional_input[key].set_value(match_image, optional[key]) elif key in optional_output: # must be a literal True value if optional[key] is not True: raise Error('Optional output argument must be True.', 'Argument %s should equal True.' % key) else: raise Error('Unknown argument.', 'Operator %s has no argument %s.' % (name, key)) # call logger.debug('_call_base checking cache for op %s' % op) op2 = Vips.cache_operation_build(op) logger.debug('_call_base got op2 %s' % op2) if op2 == None: raise Error('Error calling operator %s.' % name) # rescan args if op2 is different from op if op2 != op: logger.debug('_call_base rescanning args') args = op2.get_args() optional_output = {x.name: x for x in args if x.flags & enm.OUTPUT and not x.flags & enm.REQUIRED} # gather output args logger.debug('_call_base fetching required output args') out = [] for x in args: # required output arg if x.flags & enm.OUTPUT and x.flags & enm.REQUIRED: out.append(x.get_value()) # modified input arg ... this will get the memory image we made above if x.flags & enm.INPUT and x.flags & enm.MODIFY: out.append(x.get_value()) logger.debug('_call_base fetching optional output args') out_dict = {} for x in list(optional.keys()): if x in optional_output: out_dict[x] = optional_output[x].get_value() if out_dict != {}: out.append(out_dict) if len(out) == 1: out = out[0] elif len(out) == 0: out = None # unref everything now we have refs to all outputs we want op2.unref_outputs() logger.debug('success') return out # general user entrypoint def call(name, *args, **kwargs): return _call_base(name, args, kwargs) Vips.call = call # here from getattr ... try to run the attr as a method def _call_instance(self, name, args, kwargs): return _call_base(name, args, kwargs, self) @classmethod def vips_image_new_from_file(cls, vips_filename, **kwargs): """Create a new Image from a filename. Extra optional arguments depend on the loader selected by libvips. See each loader for details. """ filename = Vips.filename_get_filename(vips_filename) option_string = Vips.filename_get_options(vips_filename) loader = Vips.Foreign.find_load(filename) if loader == None: raise Error('No known loader for "%s".' % filename) logger.debug('Image.new_from_file: loader = %s' % loader) return _call_base(loader, [filename], kwargs, None, option_string) setattr(Vips.Image, 'new_from_file', vips_image_new_from_file) @classmethod def vips_image_new_from_buffer(cls, data, option_string, **kwargs): """Create a new Image from binary data in a string. data -- binary image data option_string -- optional arguments in string form option_string can be something like "page=10" to load the 10th page of a tiff file. You can also give load options as keyword arguments. """ loader = Vips.Foreign.find_load_buffer(data) if loader == None: raise Error('No known loader for buffer.') logger.debug('Image.new_from_buffer: loader = %s' % loader) return _call_base(loader, [data], kwargs, None, option_string) setattr(Vips.Image, 'new_from_buffer', vips_image_new_from_buffer) @classmethod def vips_image_new_from_array(cls, array, scale = 1, offset = 0): """Create a new image from an array. The array argument can be a 1D array to create a height == 1 image, or a 2D array to make a 2D image. Use scale and offset to set the scale factor, handy for integer convolutions. """ # we accept a 1D array and assume height == 1, or a 2D array and check all # lines are the same length if not isinstance(array, list): raise TypeError('new_from_array() takes a list argument') if not isinstance(array[0], list): height = 1 width = len(array) else: # must copy the first row, we don't want to modify the passed-in array flat_array = list(array[0]) height = len(array) width = len(array[0]) for i in range(1, height): if len(array[i]) != width: raise TypeError('new_from_array() array not rectangular') flat_array += array[i] array = flat_array image = cls.new_matrix_from_array(width, height, array) # be careful to set them as double image.set('scale', float(scale)) image.set('offset', float(offset)) return image setattr(Vips.Image, 'new_from_array', vips_image_new_from_array) def generate_docstring(name): try: op = Vips.Operation.new(name) except TypeError as e: raise Error('No such operator.') if op.get_flags() & Vips.OperationFlags.DEPRECATED: raise Error('No such operator.', 'operator "%s" is deprecated' % name) # find all the args for this op, sort into priority order args = op.get_args() enm = Vips.ArgumentFlags # find all required, unassigned input args required_input = [x for x in args if x.flags & enm.INPUT and x.flags & enm.REQUIRED and not x.isset] optional_input = [x for x in args if x.flags & enm.INPUT and not x.flags & enm.REQUIRED and not x.isset] required_output = [x for x in args if x.flags & enm.OUTPUT and x.flags & enm.REQUIRED] optional_output = [x for x in args if x.flags & enm.OUTPUT and not x.flags & enm.REQUIRED] # find the first required input image, if any ... we will be a member # function of this instance member_x = None for i in range(0, len(required_input)): x = required_input[i] if GObject.type_is_a(vips_type_image, x.prop.value_type): member_x = x break description = op.get_description() result = description[0].upper() + description[1:] + ".\n\n" result += "Usage:\n" result += " " + ", ".join([x.name for x in required_output]) + " = " if member_x: result += member_x.name + "." + name + "(" else: result += "Vips.Image." + name + "(" result += ", ".join([x.name for x in required_input if x != member_x]) if len(optional_input) > 0: result += ", " result += ", ".join([x.name + " = " + x.prop.value_type.name for x in optional_input]) result += ")\n" result += "Where:\n" for x in required_output: result += " " + x.description() + "\n" for x in required_input: result += " " + x.description() + "\n" if len(optional_input) > 0: result += "Keyword parameters:\n" for x in optional_input: result += " " + x.description() + "\n" if len(optional_output) > 0: result += "Extra output options:\n" for x in optional_output: result += " " + x.description() + "\n" return result # apply a function to a thing, or map over a list # we often need to do something like (1.0 / other) and need to work for lists # as well as scalars def smap(func, x): if isinstance(x, list): return list(map(func, x)) else: return func(x) # decorator to set docstring def add_doc(value): def _doc(func): func.__doc__ = value return func return _doc class Image(Vips.Image): # for constructors, see class methods above # output def write_to_file(self, vips_filename, **kwargs): """Write an Image to a file. The filename can contain save options, for example "fred.tif[compression=jpeg]", or save options can be given as keyword arguments. Save options depend on the selected saver. """ filename = Vips.filename_get_filename(vips_filename) option_string = Vips.filename_get_options(vips_filename) saver = Vips.Foreign.find_save(filename) if saver == None: raise Error('No known saver for "%s".' % filename) logger.debug('Image.write_to_file: saver = %s' % saver) _call_base(saver, [filename], kwargs, self, option_string) def write_to_buffer(self, format_string, **kwargs): """Write an Image to memory. Return the image as a binary string, encoded in the selected format. Save options can be given in the format_string, for example ".jpg[Q=90]". Save options depend on the selected saver. """ filename = Vips.filename_get_filename(format_string) option_string = Vips.filename_get_options(format_string) saver = Vips.Foreign.find_save_buffer(filename) if saver == None: raise Error('No known saver for "%s".' % filename) logger.debug('Image.write_to_buffer: saver = %s' % saver) return _call_base(saver, [], kwargs, self, option_string) # we can use Vips.Image.write_to_memory() directly # support with in the most trivial way def __enter__(self): return self def __exit__(self, type, value, traceback): pass # operator overloads def __getattr__(self, name): logger.debug('Image.__getattr__ %s' % name) # look up in props first, eg. x.props.width if name in dir(self.props): return getattr(self.props, name) @add_doc(generate_docstring(name)) def call_function(*args, **kwargs): return _call_instance(self, name, args, kwargs) return call_function def __add__(self, other): if isinstance(other, Vips.Image): return self.add(other) else: return self.linear(1, other) def __radd__(self, other): return self.__add__(other) def __sub__(self, other): if isinstance(other, Vips.Image): return self.subtract(other) else: return self.linear(1, smap(lambda x: -1 * x, other)) def __rsub__(self, other): return self.linear(-1, other) def __mul__(self, other): if isinstance(other, Vips.Image): return self.multiply(other) else: return self.linear(other, 0) def __rmul__(self, other): return self.__mul__(other) # a / const has always been a float in vips, so div and truediv are the # same def __div__(self, other): if isinstance(other, Vips.Image): return self.divide(other) else: return self.linear(smap(lambda x: 1.0 / x, other), 0) def __rdiv__(self, other): return (self ** -1) * other def __truediv__(self, other): return self.__div__(other) def __rtruediv__(self, other): return self.__rdiv__(other) def __floordiv__(self, other): if isinstance(other, Vips.Image): return self.divide(other).floor() else: return self.linear(smap(lambda x: 1.0 / x, other), 0).floor() def __rfloordiv__(self, other): return ((self ** -1) * other).floor() def __mod__(self, other): if isinstance(other, Vips.Image): return self.remainder(other) else: return self.remainder_const(other) def __pow__(self, other): if isinstance(other, Vips.Image): return self.math2(other, Vips.OperationMath2.POW) else: return self.math2_const(other, Vips.OperationMath2.POW) def __rpow__(self, other): return self.math2_const(other, Vips.OperationMath2.WOP) def __abs__(self): return self.abs() def __lshift__(self, other): if isinstance(other, Vips.Image): return self.boolean(other, Vips.OperationBoolean.LSHIFT) else: return self.boolean_const(other, Vips.OperationBoolean.LSHIFT) def __rshift__(self, other): if isinstance(other, Vips.Image): return self.boolean(other, Vips.OperationBoolean.RSHIFT) else: return self.boolean_const(other, Vips.OperationBoolean.RSHIFT) def __and__(self, other): if isinstance(other, Vips.Image): return self.boolean(other, Vips.OperationBoolean.AND) else: return self.boolean_const(other, Vips.OperationBoolean.AND) def __rand__(self, other): return self.__and__(other) def __or__(self, other): if isinstance(other, Vips.Image): return self.boolean(other, Vips.OperationBoolean.OR) else: return self.boolean_const(other, Vips.OperationBoolean.OR) def __ror__(self, other): return self.__or__(other) def __xor__(self, other): if isinstance(other, Vips.Image): return self.boolean(other, Vips.OperationBoolean.EOR) else: return self.boolean_const(other, Vips.OperationBoolean.EOR) def __rxor__(self, other): return self.__xor__(other) def __neg__(self): return -1 * self def __pos__(self): return self def __invert__(self): return self ^ -1 def __gt__(self, other): if isinstance(other, Vips.Image): return self.relational(other, Vips.OperationRelational.MORE) else: return self.relational_const(other, Vips.OperationRelational.MORE) def __ge__(self, other): if isinstance(other, Vips.Image): return self.relational(other, Vips.OperationRelational.MOREEQ) else: return self.relational_const(other, Vips.OperationRelational.MOREEQ) def __lt__(self, other): if isinstance(other, Vips.Image): return self.relational(other, Vips.OperationRelational.LESS) else: return self.relational_const(other, Vips.OperationRelational.LESS) def __le__(self, other): if isinstance(other, Vips.Image): return self.relational(other, Vips.OperationRelational.LESSEQ) else: return self.relational_const(other, Vips.OperationRelational.LESSEQ) def __eq__(self, other): # for == and != we need to allow comparison to None if isinstance(other, Vips.Image): return self.relational(other, Vips.OperationRelational.EQUAL) elif isinstance(other, list): return self.relational_const(other, Vips.OperationRelational.EQUAL) elif isinstance(other, numbers.Number): return self.relational_const(other, Vips.OperationRelational.EQUAL) else: return False def __ne__(self, other): if isinstance(other, Vips.Image): return self.relational(other, Vips.OperationRelational.NOTEQ) elif isinstance(other, list): return self.relational_const(other, Vips.OperationRelational.NOTEQ) elif isinstance(other, numbers.Number): return self.relational_const(other, Vips.OperationRelational.NOTEQ) else: return False def __getitem__(self, arg): if isinstance(arg, slice): i = 0 if arg.start != None: i = arg.start n = self.bands - i if arg.stop != None: if arg.stop < 0: n = self.bands + arg.stop - i else: n = arg.stop - i elif isinstance(arg, int): i = arg n = 1 else: raise TypeError if i < 0: i = self.bands + i if i < 0 or i >= self.bands: raise IndexError return self.extract_band(i, n = n) def __call__(self, x, y): return self.getpoint(x, y) # the cast operators int(), long() and float() must return numeric types, # so we can't define them for images # a few useful things def get_value(self, field): """Get a named item from an Image. Fetch an item of metadata and convert it to a Python-friendly format. For example, VipsBlob values will be converted to bytes(). """ value = self.get(field) logger.debug('read out %s from %s' % (value, self)) return unpack(value) def set_value(self, field, value): """Set a named item on an Image. Values are converted from Python types to something libvips can swallow. For example, bytes() can be used to set VipsBlob fields. """ gtype = self.get_typeof(field) logger.debug('assigning %s to %s' % (value, self)) logger.debug('%s needs a %s' % (self, gtype)) # blob-ize if GObject.type_is_a(gtype, vips_type_blob): if not isinstance(value, Vips.Blob): value = Vips.Blob.new(None, value) # image-ize if GObject.type_is_a(gtype, vips_type_image): if not isinstance(value, Vips.Image): value = imageize(self, value) # array-ize some types, if necessary value = arrayize(gtype, value) self.set(field, value) def floor(self): """Return the largest integral value not greater than the argument.""" return self.round(Vips.OperationRound.FLOOR) def ceil(self): """Return the smallest integral value not less than the argument.""" return self.round(Vips.OperationRound.CEIL) def rint(self): """Return the nearest integral value.""" return self.round(Vips.OperationRound.RINT) def bandand(self): """AND image bands together.""" return self.bandbool(Vips.OperationBoolean.AND) def bandor(self): """OR image bands together.""" return self.bandbool(Vips.OperationBoolean.OR) def bandeor(self): """EOR image bands together.""" return self.bandbool(Vips.OperationBoolean.EOR) def bandsplit(self): """Split an n-band image into n separate images.""" return [x for x in self] def bandjoin(self, other): """Append a set of images or constants bandwise.""" if not isinstance(other, list): other = [other] # if [other] is all numbers, we can use bandjoin_const non_number = next((x for x in other if not isinstance(x, numbers.Number)), None) if non_number == None: return self.bandjoin_const(other) else: return _call_base("bandjoin", [[self] + other], {}) def maxpos(self): """Return the coordinates of the image maximum.""" v, opts = self.max(x = True, y = True) x = opts['x'] y = opts['y'] return v, x, y def minpos(self): """Return the coordinates of the image minimum.""" v, opts = self.min(x = True, y = True) x = opts['x'] y = opts['y'] return v, x, y def real(self): """Return the real part of a complex image.""" return self.complexget(Vips.OperationComplexget.REAL) def imag(self): """Return the imaginary part of a complex image.""" return self.complexget(Vips.OperationComplexget.IMAG) def polar(self): """Return an image converted to polar coordinates.""" return run_cmplx(lambda x: x.complex(Vips.OperationComplex.POLAR), self) def rect(self): """Return an image converted to rectangular coordinates.""" return run_cmplx(lambda x: x.complex(Vips.OperationComplex.RECT), self) def conj(self): """Return the complex conjugate of an image.""" return self.complex(Vips.OperationComplex.CONJ) def sin(self): """Return the sine of an image in degrees.""" return self.math(Vips.OperationMath.SIN) def cos(self): """Return the cosine of an image in degrees.""" return self.math(Vips.OperationMath.COS) def tan(self): """Return the tangent of an image in degrees.""" return self.math(Vips.OperationMath.TAN) def asin(self): """Return the inverse sine of an image in degrees.""" return self.math(Vips.OperationMath.ASIN) def acos(self): """Return the inverse cosine of an image in degrees.""" return self.math(Vips.OperationMath.ACOS) def atan(self): """Return the inverse tangent of an image in degrees.""" return self.math(Vips.OperationMath.ATAN) def log(self): """Return the natural log of an image.""" return self.math(Vips.OperationMath.LOG) def log10(self): """Return the log base 10 of an image.""" return self.math(Vips.OperationMath.LOG10) def exp(self): """Return e ** pixel.""" return self.math(Vips.OperationMath.EXP) def exp10(self): """Return 10 ** pixel.""" return self.math(Vips.OperationMath.EXP10) def erode(self, mask): """Erode with a structuring element.""" return self.morph(mask, Vips.OperationMorphology.ERODE) def dilate(self, mask): """Dilate with a structuring element.""" return self.morph(mask, Vips.OperationMorphology.DILATE) def median(self, size): """size x size median filter.""" return self.rank(size, size, (size * size) / 2) def fliphor(self): """Flip horizontally.""" return self.flip(Vips.Direction.HORIZONTAL) def flipver(self): """Flip vertically.""" return self.flip(Vips.Direction.VERTICAL) def rot90(self): """Rotate 90 degrees clockwise.""" return self.rot(Vips.Angle.D90) def rot180(self): """Rotate 180 degrees.""" return self.rot(Vips.Angle.D180) def rot270(self): """Rotate 270 degrees clockwise.""" return self.rot(Vips.Angle.D270) # we need different imageize rules for this operator ... we need to # imageize th and el to match each other first @add_doc(generate_docstring("ifthenelse")) def ifthenelse(self, th, el, **kwargs): for match_image in [th, el, self]: if isinstance(match_image, Vips.Image): break if not isinstance(th, Vips.Image): th = imageize(match_image, th) if not isinstance(el, Vips.Image): el = imageize(match_image, el) return _call_base("ifthenelse", [th, el], kwargs, self) # add operators which needs to be class methods # use find_class_methods.py to generate this list # don't include "bandjoin", this needs to be wrapped by hand, see # above class_methods = [ "system", "sum", "arrayjoin", "bandrank", "black", "gaussnoise", "text", "xyz", "gaussmat", "logmat", "eye", "grey", "zone", "sines", "mask_ideal", "mask_ideal_ring", "mask_ideal_band", "mask_butterworth", "mask_butterworth_ring", "mask_butterworth_band", "mask_gaussian", "mask_gaussian_ring", "mask_gaussian_band", "mask_fractal", "tonelut", "identity", "fractsurf", "radload", "ppmload", "csvload", "matrixload", "analyzeload", "rawload", "vipsload", "pngload", "pngload_buffer", "matload", "jpegload", "jpegload_buffer", "webpload", "webpload_buffer", "tiffload", "tiffload_buffer", "openslideload", "magickload", "magickload_buffer", "fitsload", "openexrload"] def generate_class_method(name): @classmethod @add_doc(generate_docstring(name)) def class_method(cls, *args, **kwargs): return _call_base(name, args, kwargs) return class_method for nickname in class_methods: logger.debug('adding %s as a class method' % nickname) # some may be missing in this vips, eg. we might not have "webpload" try: method = generate_class_method(nickname) setattr(Vips.Image, nickname, method) except Error: pass Image = override(Image) __all__.append('Image') vips-8.2.2/python/README.md0000664000175000017500000000215712530402247012233 00000000000000# vips8 binding for Python This overrides file adds a few small helper functions to the gobject-introspection binding for libvips. It has been tested with python2.7 and python3.4 and may work for other versions. ## Documentation There's a chapter in the libvips API docs on these overrides, see "Using libvips from Python". vips-x.y.z/test has a test suite. Again, the test suite works with python2.7 and python3.4. ## Install `libvips` need to be built and installed. The libvips typelib, `Vips-8.0.typelib`, needs to be on your `GI_TYPELIB_PATH`. It is typically installed somewhere like `/usr/local/lib/girepository-1.0` You need `pygobject-3.0`. To confirm that it's installed, check that your Python `dist-packages` area has a directory called `gi`. For example: ls /usr/lib/python2.7/dist-packages/gi `Vips.py` needs to be in the overrides directory of your gobject-introspection pygobject area, for example: sudo cp Vips.py /usr/lib/python2.7/dist-packages/gi/overrides or sudo cp Vips.py /usr/lib/python3/dist-packages/gi/overrides You can optionally pre-compile this file for a small speedup. vips-8.2.2/python/Makefile.am0000664000175000017500000000070212530402247013002 00000000000000vips_overridesdir = $(pyoverridesdir) vips_overrides_PYTHON = Vips.py EXTRA_DIST = \ README.md # if we build in a separate tree, we need to symlink the *.py files from the # source tree; Python does not accept the extensions and modules in different # paths build_pylinks: for f in $(vips_overrides_PYTHON); do \ [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \ done all-local: build_pylinks check-local: build_pylinks vips-8.2.2/python/Makefile.in0000664000175000017500000004640512651721157013035 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = python ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(vips_overrides_PYTHON) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) am__installdirs = "$(DESTDIR)$(vips_overridesdir)" am__pep3147_tweak = \ sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' py_compile = $(top_srcdir)/py-compile am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/py-compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ vips_overridesdir = $(pyoverridesdir) vips_overrides_PYTHON = Vips.py EXTRA_DIST = \ README.md all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign python/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign python/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-vips_overridesPYTHON: $(vips_overrides_PYTHON) @$(NORMAL_INSTALL) @list='$(vips_overrides_PYTHON)'; dlist=; list2=; test -n "$(vips_overridesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(vips_overridesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(vips_overridesdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(vips_overridesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(vips_overridesdir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(vips_overridesdir)" $$dlist; \ else :; fi uninstall-vips_overridesPYTHON: @$(NORMAL_UNINSTALL) @list='$(vips_overrides_PYTHON)'; test -n "$(vips_overridesdir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(vips_overridesdir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am all-am: Makefile all-local installdirs: for dir in "$(DESTDIR)$(vips_overridesdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-vips_overridesPYTHON install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-vips_overridesPYTHON .MAKE: check-am install-am install-strip .PHONY: all all-am all-local check check-am check-local clean \ clean-generic clean-libtool cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip \ install-vips_overridesPYTHON installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags-am uninstall uninstall-am \ uninstall-vips_overridesPYTHON .PRECIOUS: Makefile # if we build in a separate tree, we need to symlink the *.py files from the # source tree; Python does not accept the extensions and modules in different # paths build_pylinks: for f in $(vips_overrides_PYTHON); do \ [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \ done all-local: build_pylinks check-local: build_pylinks # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/benchmark/0000775000175000017500000000000012633615055011447 500000000000000vips-8.2.2/benchmark/README0000664000175000017500000000101212530402247012232 00000000000000VIPS SMP benchmark ------------------ This is adapted from the system used to generate images for POD: http://cima.ng-london.org.uk/~john/POD Images from a 10k by 10k studio digital camera are colour processed, resized, cropped and sharpened. This thing was originally processing images off a remote server over a 100mbit network. No attempt was made to make it quick (there was no point): you could make it a lot faster very easily. See http://www.vips.ecs.soton.ac.uk/index.php?title=Benchmarks for results. vips-8.2.2/benchmark/sample2.v0000664000175000017500000175142012530402247013124 00000000000000¶¦ò"º ôù³³ñ³d®é­¯ ¯Æ®D­q²x¶~· ´íµÇ´Þ´ f¯!¨ ç¢õ¢ O¥}±ï²¥²_³•±­« §ð¢r¥éª`ª±«Ò¬ª&¨þ©ާ˜¦¨ôª[¬̳Æ´|±-¬y®´¯B³D¸ñ³iªü¢£Á­Z®«b®ã¯Û¬­©(¢1Ÿ’§,­¬s´[À­¬îŸ­§´©ĪºªL¥·—Þ˜£(©éD¬Э5¬1®™³µв©é¤)ª©®ª S®÷ÁóÍe½“¬3¨o¨m¦ä¢š2¤t¯±·S»S°Æ¥Àœ7—+œA¨·¯ ­©!ªè®m­”­”¬B« ¨!rª!M¯çµw²Y²(µ³€³ª´µ¹²›­p«¯«B²¬¶ªµ ¢·"d¶!ü±f¯Pµ°±ª±Ò²¬«iªÖ¯âªÌ«;¤Ö£ò¡¸c™êš›ð £’¥ª­­§ˆ¯ñ±Š«"¥Tœ?‹[™è¥h¨±½·¶³€¡™@¡e¨Þ¤„¨š³…·´”¬¦ø£ ¢2§)¨Q¥8§‡©¬¨Ÿ¦„¤D›Ü æ¤»¬ ¨À¡g U§©޲»·§²™£Éšº˜ ”»—4¡A§ÿ±¨µO´ ÷² Ô«À¥w£ ¼œ?œ ¦'¯ ¸G·C´Iª°¡P›Ó’ ¶’ m”¯M§Å´ú² F«%éªÅ©è¡‚—ž’gšþú®ü®Ø >Ø ¿Þ "„Å'¼¬F¯ò³ù³¡­«¬C­T«>ª-¬c­g³³o°B«2¦ª®Z¶5·nµ­¶³mµ0® @¤Ô¡§¬§a¢¤ß­I³ª³N°›³D­«¬ɱqµP®ˆªš¯´ µ´Ø´i²° Ä­!ª! ¨!§b¦S­+´–·ù¶ ©´ª¯ ¬g©’¦ Ô¥•ªî­k®Û«/©©Ô©F¨‡¥å¦Ï©€®{´ µe´ò³ê²1¯¹´¹Ï·û´­þ­c°–¯&­!T®!¯® ´«Ǩ:Ÿœ‘ ¨þ¬ÿ±,¶—«¦œ Ìœ›/¨e¨¥x— ”w˜8œ©¡]ªݬß®5°¸²°_®¤¸šÊŸ`¡{ "0¦P¶7Âg´©¥¦—¦b¢Ç› ¢¶­¼³¼D¸¿¤ê•;‰û’ø¢K©ª«aªrªº¬û¯® ­ A¨8£ £!Ñ«ø³¯¨±p¶¶«±U³.·E²¨  )¡è®KµD² ª´"(²V¯i°´%­ެ!¬ªh© £l§G©¨Ф8ŸÑ•³”8“õ›Pœ‰¢x£/¤Ô§µ¡³›(¨H± ­Ƥ‘’ésŽÚ“©e±„¹¦³2¤Ä›`œª§¤Û¨3¶µ¶³™«š¨ws—ࢰ®C¨ï§û«<«ؤP¨ ©I£A¥û­§¬åªs£¼¢Χh¨^®Áµ¶´‘§œ0šÏœ/œ”¤V§G°µG²ó²îª÷§£ª3¡¹£¸«ͳUµ•³¨® Ö­¥ˤœ ” דžU¨õ°"Ú±$á«"ñ«å©\˜ ;޵‘e¢£´þâÆ €È ß ØÂ«¬ ®]³ѳ;¬Áªø¬¬.®P²g´æµæ¶`­—§„¤á«³Ƶq´×µ›²X¶ `® œ™©­Y¤m¥{±´@²ö°6¯%«~©ª7±O¬þª½­)³ˆµáµ«³"±аM¬ ®©ލ›¨’ª†®¿µ)¶¸µN±û®¬«eªãªÏ«&°K°û³#­ئ ¢œ¦¨Ũ\£B¥©¬¸³ܶµ[´ö³Q¬ѨÕ«W³ñ·6°c«²ªÊ«! ­" ¯#¡­ ΫD¨±£Àž©Ϥç«Ä®.¬@§SŸq˜é—%¥„§5£÷–y’]Š… ʼn£§«Š®#­Ó±^¨ô¢šÆšïŸ™ “!¤˜M .¤ ŠŸiž¡à¥Á¦Ç¢6ž¥ˆª‹¨>¥À®ò¦H–×…×tœ†¥¨‚«­©Õ«ä»Â u®@¡ë u¦õ«.ªå¯åµð±Ŭm±¬¸š¬²Ÿó•xœx¯¶Œ²®!1¯ ¢¬ F¬5­«Ï¥ú§K¥¢¤ œÌŸ·¦¹¦f¡Y–ùˆí‹"“†œO¡£ KŸÜœ˜è“¾¢é²;¬{£Œ|}Z‡²ˆ/›ö¦²”¥½¢ÛêšåŸ! q§m´Ü´ ±a¨ñ¦aša•\ž5¨3£Å & £ž‹™¥û«§«§@¯§Œ¡òš–C•$á¡\¨ü²A²ݧ˜œ3Ÿª¦§T©¨Þ¯…³x¬*­ªÍ¥ŸšŤÞr +©P³ °„ªõ«£®€¥©&§ í ö”Dœè§Û¬!°¯"z©©(¥äþ…¦Ž –¦ŵ︵èÃxƳ—¯®´Í®èu¥ ¨¬²dz²ã³d²Ωgžp™|§{° ³‰µà¶±²è«ç˜w’‘¨±¤©¢b¯­¶+µ<°2¬«¦9¤¸¢ú¥Z§Nª>¯´>µ·´«²b±¯`¬,¨¦í©o¬–³*¶a³l²?¯«¤"¤Ѭi¶…Æ ¾¬µà­@ UŸ*¤ب§"¡$¡ §¬±úµ²³«° ¬ì¥œŸÞšÚ¥y°©®P§ Φ᪠À­"à¯"œ¬#©ܨj¥Π/—†Ø©X®9®åªR¢i›—L§í§aœ€‹`‰À„ | ÊŒµ£î®+ªK¥v¬=£H˜ɦ`ªç¤šr’š—n˜oÒ”¯žx£§=¥ 3¤Ǧ”g“s› ¡¯šÕŽù”àŸ£ §t©fªÖ¦$¤WÈ ©Ñ Ý»Á¦¯¦O§O¥§;­/±Dª¥ ³û¾[¨Þ˜‹”¦·1·sµL°æ­_ª§¥ä¥¦õ±úŒžáœ›¡ ê¢…œ2Œ‰‡ ȇʕ㢧?§ ŸÁš‘u“Y–v¥x±©­E¡­ŠX‚ÛŒ}†G‘š1”@™õšÀ˜äš[›Ò¤Ø«L­¡©ïŸ³ R %š‰•МSn˜ ”펢’#¤î©Õ¤»¢ï©}œy‘·‰ƒ÷‰]™á 7£Á£%¡]›E P¥¥¬A®Uªà¬Ñ«³¦2¨°¨¡£•–%”ÆÕ›¬§Á£û§å§o›Êš·£% ÛT—z£ˆ«جö¥Ç ÖŸ’ †öݤ—²>²†°F½DÂ~·d±°>¨o À¡R¥ͪP¯ ¯ȬÔ¨è+ d˜]𣻩·° ³µ—°Z¬­£Œðˆ³¡«;œ¿˜¨² µ$­©§ƒ›X•³˜—Å›‰¥­êµ€·æ´E²«®@ª§Ü£ ¢¥“«²ºK¶w°þ§¬ŸÖ•W•pt®è½n¸ñ9©¥Ÿ3ž¯¥W§Ú¨T¤ñ£§ªp®ù³²µ­Xª:¤¨ iš‹Ÿ·«ƪ}  Ä¢  ©û­ü¬¶¨¦À¦Ý¢Sœ~”Ö—™¦´à¸é®   ИÊžÞ«*¨µœ‰ªŒ†’qŽ—K¦ð­+ Þ•Ížc ¨ ƒ¬³^´Ь^¤²—”ß™—\˜èœ„ t¥õª_¦”¦§œÑ¥‘)•ߘù•¼› ¡í£Ó¨^§5¦. ‘Ý®g±Ž´xªǪ¾«§ ¨I«¿ª¸¢üšC²t¿¤ñ™U¯DÅ@»µ_¹/²B¨eŸ#•蜫Ÿ¤›%˜·››kš¹˜ušS•0‰»‹T‹¯•¸¢^¦Ħ1É•~ƒzŒço§¥­lªò¢`’(‘ “·|„u÷wí…L…@ŽV™7™â™7U¡¤¦¥¥¬—Œœü¥û›3ȕݖJ’8‡Ž£Y¦… œœˆ“YŒ…¦…‘V—è”3©™t—4j£+©˰°°L¯†©— ¢{¥ê¡<šp–“Jˆí‹«š­àŸ¨¡Í È“å’Ò›õ›!Ž’ÙžÞ¨¨Ÿƒ—šåŸΗ훡̧Ó¨)¤ä­M¬˱®œª¼ ¬¡~¤S¨¨‹©Aª‰©„šÈ•’Ú#¨Þ¨¤X¤Ù£Ü®д<®á” °i™ð¤Иá ™Ë –«ª ¤$œ;‘¡”y•‘—Ý¢¯¬D²¶J¶Z­¾¤QžMœÈžW¡§¦î«v½qÁh­k—“ÊEß‘à˜‹œ. ¼Æü—ʤ£éÚ«l¨²§y¨!שÏ«‰­f­©¨[¦ͨ¨Ü£Р@§é¤@•—P£Ÿ«•©g¤Ï¡‰£‘¢es–C”›šª‰µ¶¬  ™ v”6œD‡Õ â𠣝²åªƒª §e“ ƒÂŽ›È«·p¹ O·®œ¨Šžh—ëšÜˆ°Ÿ0Ÿº¤Ȭ¨ªo«(ªð¡·˜%‘»:’’˜™¤•¨°©¤¹Ô“‡có˜'¦š¬y®±±Ê®óªä« (©ç¡-•^ž«§y›x†q‡ ²ˆÎ ͯ©Õ¶¬µå§¶š£òšv¨a¢bœò °—È’H‘”ˆ­–•w›¢¤¥£¤¯š¹‹yz  Ø›1¨ö¬¶§d£¾œšh›‰#p r ƒø“…›…žCŸfŸÉ פ§’¡ó™Ëžý¨"›Y–ùš3˜Xj¹ƒö”ê¢. µ™]™À˜ìš ™íšÓ—ešÒ˜ï”ªŒÒ’Y˜m–}™©£ä¨c¯E³ Y¬!Tªo£ ¥§¤¤é§žª‘Õ‹’É™_›œ›$›•–I¢F¢ˆ— –fŸ³£‰¤eœÜœV¢ø¨«©©¥°¢Y›³œê¥B¥"<¢Ÿu›y˜£ý«W­ˆ§‡¥î¨¡¿žˆ”–§¤7±r°×§¬™” Т²èª9Ž8{ G…1™¦½—8Š|Ž=‘­™±¤¦ã¨¡&¥æ¥,šú•…ži£ÿ§w«O³g¬8Ÿ!±™·À ”£ ¤°¤x¯G·%§‰–D‘w’𓆖]™ÈšUšÞšf—“Ü•ª¤[®c®¹¬T«UªÁ«<©©„ª¦¤ä¨¸¬{§ÖŸ÷¢òžƒ•’%Ÿ.£ Ê¡è¤£Ä ]ž„›• ‘7—Ó£&£C•,’¡˜:‹˜à£©¬ü¾„̼V«¤ ¡Š£vÛ„ ™4«g¸¡¸F·³¾­ö¦o«ž1¡8¡T¡Ô v¤{ª¶§¦Ø©&¥a¡(›?Œ?–Ó¢é©ç¦X £•=‡~ŠŽ\—´£è«-±œ·@·6«ñ©’«§¤™ª‘ŠŽÜ„cŠ=§V¶´—”)ž ªd¥}šÖ ¡µ¬¥á¡‚¡ûšÖ˜>“î“À›»˜C—™!¥ÿ«£qžr˜îˆW{ —„p›ªÙ°=ª§£Í£äû– }f{9Ž$—@—» C¥ò¥|žü§%¬U¤ž8¥­¬¤P¤ì¤-£·žÜ¡ƒ•d™Ÿ˜X“Ä •¥l¬«†±µ©š¡í›î™“E™óœ6žP¡0¦¢«϶̶ ®«#À© ©\©¨¬¾¨‘¯Ͳ&ª•ž5•Æ•tœè››¸šN™l¡ ¯t¯N¨ú£x¤¬¤æ¤ÁŸº¡ù¥Z®L´α2­;¢”™ýŸ[—1’‰ߊD—¦)±а£©ƒ¨m¨›¢ŒÚ¢á««³Ó³‰©B’ž‘í˜E©{¡«n†”þ£±ª y¤Ž ‘[ŸŒ©Á±¨®ä³·Œ±0¨»©.¤€¢F¤Ѩ³¨R¡¤ô¢)£€¢ ždž þŸ"gžC‚šæ¡P¢¿ª³°›ªž”›p˜2–xš÷¨ °ıµ°Ѳý±¸Ö²£¨±¨q¥ £²¨J«|¦è ¹¢ ›å” –Û ¦žži¤¬}«H¥N¢& s–¢Œ3‹ ¥—ž~™™–S™D‰=‡1›T¦é©ܶyÂð¶øªæŠVy½…Æž#ª²óµt±ÿ²°¿¯ð§i¦å©Q¦¡k S£b¦½¡|Û¡ç¤ߥ,£}•`‰!Q‹ý“ð›W¤/ Ÿ›“?†ÿŒ’òšŠŸ!¦â¯èµ¸—¬D©„©*¨/›ŸŽ²Šu„Ü…f¡ÿ¤.“u„㎠ˢ¼›sžܦ¼«k¨w¤Ο¬•’—ÉŸ ¤­ ¤žmªž¬,¡y›¾šDÚˆ}šä©˜­š©µ«ß®/¬ä®¦¤à™¤ºþÅ•C—S˜‘£©œ¦˜Rš2¤l¬ë§Í£B­^² ª…¬ί@­3¬¢«Ø¡>™±œžq–âˬß±ÿ··ù¬7¢Ôœ—™‹š)œß¡'¤Ö¦Ê©Ž®¶ƒ³¨!©$ª$­³°®"³£¶ö©Ê¡™ œÁ¤h¥²¢¢é¤e©\³z´ ®¾¨Mª¨³¥ž£&Ÿ~¥¶¬ѳa°*¯§>  ‡¢+™’Œ÷Œe Ƭ¢²õ° ¬øª§8žÁ–8˜£¥ÿ«Ö²Úµ©Ž“‡;”ó¢YœH’ò•œ¤‹°Q¶§Ì’E•šI§H²¶»´t´ø·¥²Ò°¬ô§p 4œàŸå£ö¢1Ÿ÷¤?§&¥5¤¢Ç ,¡^ ÿ¡È¢±¨þ¬š¸ZÅ ¸¥Ä\—G˜cŸˬ[³°д»¶LµŠºhµ(¬©‘§ ¤u©)« î©Á§‡¤Ü›)’f™⤠L¤ ”£ § Ô¬ Y­f¨ó¦¦£<“…‹ ã”BŠŠžXŸ«•‰w£œ¦¦³°5¶ ±9¥J•®‹?ƒŠ„¢ûªf«¸­v«¾« ¡ªX¯#ªp¬û­t¦"œ‘Ÿ²¢­£לÔ™\™¤Hªf¨à¢*• Š(Žbšöš¶˜ ‹‡å…×r™›ü é¨Ъί´«]¬O¦ Ô“BˆÞƒÓ‡³‹˜—A¥Õ­å™¿†+‹Òšù›ª›Ö¡‰¢ѧ«­~§À=·¥ža£ýª©¨£°¥Q¬”¬¡'™»–š”Á©¤µ%¤Ô•"#¡·²ŵè²g¨â¡ë•ûšáœ©“O˜¸¤9§æ¢¶™u›- ¢¥×¢ž¨¸¬”¬…¯þ¸ ¹o´²§¤•.•aœšGÛ©̳”ºÀ´‘¨£›–™/›¢‘¤S¨­S©—£ȧ˜¥D§°£Oª¼®j²8´e²L¦nŸˆ”~˜ü u¢¿§ ¬ °3¯ñµÈ´½°Áª»ªs©…§ £{™vŸë§|²T°ë«ئø¢Ñœ›¡ÀŸ%›z›ߟªM¬­Z°œ±*«’§6¥ʦ³¢"Õ¥¨ü¯ûµƨõ–Œù”zMœÙí¡°q¶µ÷¨Úh•­•–˜7¥°³#·е}´X´ó¯>­ªZ¥u˜’Ûâj¦ž§ÕªŽª‡§¼¥ܦƒ¦g§c¥v¥{¤y§|®!ÁÀÉŒº@«•£*›¢ž#¤›±µ‘µÿ´à³±§³g¯³ª‹¨Ô¦Û§=©›« ͬ‡«¥S›¦•?š¿¦_ª ;§ ⨠ª â« †¨ñ¥‡¦b¤»’,— 3Ÿ,œUžŸ¥¦â› ”Ç›ާ³‚¶¤®p˜ëŒ­‹–ªv¨·£·¤þ¦¾§Õ¢#¥™öŸĪÀ«5 ˜Už¡Õ¡°œ´›@¢ަ¶¬n¬6©è¦›æ‹…¼‘]ÔŸˆº„¬‡«ŽKœªš˜Øž¹¡o¤P©«O¢ˆš‰‹É€ï„•¹œÑž­©ý¬ª“ƒS‹Åš šÆ›¢ùžÛ¢¢«#¤G›‘‘—7£á裷ªŽª8¬Z®«« ,‘9Šß„1”Õ²þ­‘”‡"q“ª®î·¬N£PšF‹S•;š;ˆ–ÿŸ„¡+¨©¦®¡Ëž ÿ¤£X™ ’ªƒ°›²г€²u®¤¥÷”sœšx–Ç”a¢n¯ ·°«8¥Ý¢¯œß–]˜õ›98¢"¦Qªw£¬˜žŸŸ| (“­~«¯ ­©¦¿Ÿ“!“m™ü{¤€ª~®à¯0±>±©­ –ªY©8ª ˨ M¢¨™¼š)¤›­¸®x§?¢!ø˜óa—QÿïšÅœ¦§‚­Ÿ¯߯³$¶ «©¢r¦¬g©!ç6¨Œ¯`¶…©š.‘f“Ž˜˜ž¡¤f®Q´¦¯ï¥ÞšÝ™ •¹“0Ÿm«A±Ÿ³ε(± k­8¬ª}¤ ’‘ 3¦÷®,²R¯f®¨ªQ¨™© L« ´« £ª˧›¥¦#ñ¯@¾O½X³3«&¤G°Ÿ÷¥ÿ­ö³É·J²ª«‘ª ã¬!¥¬ ժ⨖¦í§4©„­±®R¨ŸÊМ ¦ª¨ªâªNª¶« gª ¦•¦T§‹ %–€—E™–››«£° >«B¦Ö©_®¶+µ%§y“&A™‘¡ªL¶T¦A——™5œÏž¯#Ï‚ H“¬¦²ªóž€˜ƒã›¤= yŸ¼¨ ªó­ ͬÖ¬ý¬·¨q”›„ˇ~û«†û‹Ä–Úš£R›¢“¶–›ÛŸ¥E¤C¡}™Ÿ‘m†ò«›Ç©³¨Ù¬£÷…•yŒÅž 0žÿ`£°ó¢”ª¥=ž˜˜ô«&¢°œ¡§'­=¬)«O© «‘m‹x€«ˆ§—¡’ÉŠ‘t©>¶Q©©Ÿ‚_ƒ®”bšV“º•¸ž^¡ €­ò÷§ê¡§«ªQ¶Ž0˜F¨R­=ª<¥K©ˆ« ¨3œ§–ô P—ï‘Å—¥¡y®Sž­œÅžÉœž L˜û— ¡Ô¥Õ¥yžÇ’l”Ô’»•4…yŽª¤ ª.¢š¢t õ›~Ž™œëœŸ8£¡©q©+«|ªªx©’« è§ç Ñšœ¯¡£«©¨¥#‚™")ì|®œ™«™T˜ì£ó¬O®g¬!›´!"± c¨˜Ÿ ­›¯Ĭѧ™­Úµ1¥&™¾•½˜Šš¾œO ̨ ³±M¥¬ç˜²šêE™ ê µ¦­ß±ö±ï° …¨Õ§ɧð£O•˜†¦­ ±]­9¯ªצ›¦·« S­!¬¹¦¡9¥#[« ȱ ± ƒ® ;ª½¥6ž k¦¦ªŒ°y·+²g¨ ŧ"¾©"éª è©1¨ݨå©-ª¤­F«/¤Ý›ô[›|›©¤[©%© K©̪Á¬ ª §^¦Ũü£ —^•k™¡¦µ±µ°Û²´‰µ¬±á¯ Ÿ¥!Û››ã£±¬=´;´¼¢Çmˆ <Œju  z +“4£ã«[¢Мå¡ã¤À£¦£º£‰©¬ «¯ @­ W« _¬§eš‹w„Ôy€y–Y ا¨¥Ú§ ¡–O–Ÿ¸¡—¡o¢:žÕ™¼—” ˜âŸuª­A­žê &w’‹£ѧÕ¢›¡u¢(¨Ž­Ú§S ¼p¥(°9¥ƒ›ð§-®j§Ô¤X¥‚¡Á™Y•ڌ嚭·—ëÍ£¬´÷²ÙKŒφ,™ Ÿ«žË K¤‡¢S­ƒ´²ªX¨ ®N±Ì©¨Ÿ ¦C¬gªܤ=Ÿ=Ÿ[ª6¬¥¤„£¨Ò¡y™8—–Ñ5–𔬗”8 Ö£é3—ò¢µ§#¥ œâòŽß‘é“@S’¤œ¦Ižž™3›®”ÍŒmŽãäž·™¡—„Ò¡›¢ ¦§§§á­è¨vž›˜¥™ã™¦¡¨ͤ/–銺{†„é’›“ä“> P§(¨ ­ ‚¨Òž”“7™ ª7±"®¢T– Ä™ü–IS圤º¤ì°o­ƒŸÙ– ñ™°¡w¤O¤¥ï§–«û°=³G¯º¨¦¬§b æ“›’Ǹ¦R«Y® Q« ª5¤áœq L¥à¨Ó¦d¢΢4§Lª¡±! °"®¯ !ü¬ª¦’$Ÿë¨!©X¬ò²®h¨ +§!Mªª¬ª1¨l¨F¨’©t©&© B¢¤›rœc—˜o¥£©\© ?¨%©Å®°d§\¤´ª Ò£‚• “¸š}¤š¨ë±º´³³¡¯¨t§ °¤""¥œ«R­M°ª°P®n£x•»ˆA‚¤àw s} õ•ú¢«Œ¦=¤¨%¤÷Ÿžf¢ª-« Ç® •­ ׬û­j¤5œv‘ˆ“‚‹¤å«÷±!ˆª!˜¨Ù£3šëœ*§‚£9œ³Ÿ¯M›D“Y±ž½¢ä£"«u­У N‡  … ¨ŸI¦ô«3£ì¡£>¬̳­W¡Sœ;¢¼­t¦áš˜§š¯©¦¢ž©¥ü¢š}—𔇙XŸ ¤Ù3‡\„‡ d±\®™˜Ɔø‡·H–¤d«1ªª¤h­#µø­r¬ 4µ6´¬¯'¬0´­ì¬l£8W¡œ±W°{¬Òªº±j©M¢¹šÜ—õ˜Ÿ˜2š…ž±¤ ªü§Ì¥y§C¦ø¨¦£¿”Ì“‹  Õ£K¢"¦½§¾¢ žô ˆ–ƒ—­ž¨ë¥ˆŸ>˜°œ“œXœ<¡>¡œ¢A£r©>¦Ï¡tžŸ›0¢¥À©3¡Б¥ˆÔ÷„µŠG€œ„z’¶ ´£²¥š¡Í™–ê›®¥V¬Ȧ_›5“J•g•L™à¥ƒ¥¤ •çŸʬ£¬™ }˜žz¦G©ª«;ªº«»®‹­%¬q¦l¦§¸žÑ™óœ™¢˧fª¤¬ ʩԧӠA¡ª¤¿¡¶œ¶¡G¨­«®Ú¬÷­ ¬í¤™OœÀ¦°ª¨½§ß©ªðª-ª ªªW©Œ¨ã§§,¨w¦ç›•ã›™ˆ™U£5¦Õ üŸÏ¥Ü»¤Ä¨­ï¦©÷¥X—ÎŽN•T££« ¬­­Q²P±—°ʪÁ¤™¡ œ"Ë¥ °½´”²²F®1¥L6„ ã… ‘… °‰™˜¢¡ª¥C¦ª­¥; ™¥€ªÝ® í ü®+­Ì«ù¡Å™m‘Q‹â‹¡ò®2± ó"®!®«<¢Š˜Ñƒ¨‘¤v›ï)›݉"‚w™|Ÿw“åœG§v¨@ › ·¬?©”¤þ .Ÿ k¨²,¯K£K–<—P¨d¡¥”í¥Ú®Q§Σ㨧ȔŸŽ(žA«›®e ¤»¥¦E« 5‚|ñƒÑݘÿð¤®D«h¥C§]´2¯ݲî¹°³#¯V²Vµá°*«°¦ï Ú¨=²"±&ª.¯¯Ыù¥ Ÿö U¼¡=¡ö û¥ Õ©­¬Š­ ª7¦É©˜¨°Ÿ1 9©Ö©P«i¨¤©«©6ª¦§¢=¥m¨ƨRª+©'¥W¡• 3£,¤$¡¡¢¦ð©A¨b£>¡z¤\«ߪ3ž¸‡ ZŽ ƒ §€Í}*„h–¢¥£× {A¢ʤ䥢˜•?—4}™y–µ¡;¤§¢K—›ª¬x°¨««¤…žT £‹¬Á± ¯o­a°­i«¨¦,¤c¨¡¥º¢E¢Ô£9¡‘¨;¬ ¦ªµ¨~£Ÿ¡ú£ 9šYœ ¢¥Öª³¬…«"¬}°øªΣ¥©àªD¨w§\©ª¨ªrª F© 㪠”© â¨E¨ ¨8¦ ] "F” L•œ8ž™Ÿà¤£,™–?P³ä½i¬I§i®!ªï ’]‘²žS¦ý©±©p° ´_²ªT¤á c™ 0¢ׯ[³ݲıs«Ê£¹•†3‡ÜŠ–@›£ï¦Z§­¡ó£!ª‡§è¡Ã« ÷­“²¯ Z¬E©›¤¸‘ª!‡†ÑÄ¢î¯l®s°9¯|©’œ~Ú•M£"¥©™›˜´˜”'rrŠÁ“d…äјš”£Ì´0¨ž z œ¯›¥ ®'©˜ û“-•&§XŸç’X¦=­l©˜¦G«1§N¨’†Œרf³…´©Û¤§@¸.«ßÚŒ„zvƒ˜þ¡¥_¨©á¦^¢¨«¯³„º~µ»³Á³€µDZÁ«P§"¢§w­®›© ®9±Ù¯w«ºŸ«š ›]œ±¤ã£Ò¥'ªÑ©—­ª®«¨ª¬(§"¢¢Ĭ:­Ú¯¤¬;«)«R§A©¨v¨àªì©4¢ë§‚¬ƒ­†¦£‹¦x¥½¡¢¢¤’¦D©â«Ý©j¥©¨ò©¼©CŸ¼™Ê›!Ÿ‡¾ˆÿ¥ ì§œ¤ý¡*›Üš§Y©°¤NœU—>”›¿£°žl••©§4ª`©t I£ ²é¹ã¹„¯‰žî—=¢„°¯µѳm² ±d®,«ЦŸ¦ë­°¼¨ΤÀŸ(™b¡^«/¬¦¨4£p§d­+ª§¢>¤ª¦ð§Y§¤y£›£ Æ­¯3««“«›¨,§‘¦+¨4©þªÛª °ª ™ª T¨ æ¨=¦ì¥¹£ )–"¬Ž™ã¢á¤g£Ÿ§¤¥Ë 0›Ž™b3 ÿ£mªN¯c¯l§~œ€•iš*¢Ô§¤+°³¹³'©{£*œ˜· ¯‡´‹±r«ç§]¢žŽ!j|  ‚ùŽŸ¥ªÚ®O©™¡Gœ q§ê©Ú¨W¥>¨a­§°4­§«¢h–‚„æ~Ðwªxˆç›Ž 3 ¥ m¨ŸÇ“l‡ ŠÅ•ršìAø‘â‘´ƒ_u:H†É Š Ɔø~¨´·¬«Qœp BžœûŸf£̘™´”M‘C§%¥8žuªY°Y§›£™ž€–6‘•Ü®©±¯+¬«bµ”»2©ÙÛ’öz˜…d¦¤­”¥L£¦<¦¢Y£/©c¯ª¶z¸ö·`² ¯¥®¦¨å Cžs¦aª®­ª®­¬¯P°{±K Ü—ˆ•SšŽߣO¨«¨¦?ªÛ­à¬È«+¬9¥Ÿ<¢]«V¯ Н Û®¤ª!ѧ™¤£D w£n£Œ ‹œ¡§Ò« º¤¢¢°¤‹£/ ¡!¡Ö£-£ºªuª¨‚¦¦|¦žSÀŽ'”ÿØÿ{ކ3’üšQ Û혞“¤—-¢ú¬ܨ¹£Ôž[ðžîžóžâš 7¨G¬æ­¨g§¾²ÄÿdËû%ÞÁ¢Z™¤ À¬Ÿµ³¶D´´?±>ª¬¤š§½°µ*¬i¦r¢iškþ¥{ªߦlš˜žá¨K«ö¬%«i§ü«#«Ï¥… a˜Þžy¦‚§"ªª3«p¤ð¢M¢+¤E§Þ©Å© ÷« « ô«r¨Þ§»¥vœŒM~ŸPª=«P«7©Þ§ʦ£PŸœ4—Xœb£µª.¬^«E¤Û™ª˜y¢&©Ü›x§„¶]°ޤüŸ5Ÿž”£­b´0±§ÕŸh %R‚b„ާºÑ ¯ПY—å››¤…©® ›® y­0®d­¤ªD¥ ¿–"i„&x .z9uîu ƒ‚mŽïŽÃއ[“”Œ ]„ ¼‰—‡ÙƒÖ~…Ë‘u•µ„†ï†þ~ ‚‡èŒ-„Æ“^¤ö¬.©טDŸ¤)£xš±~ ¿O”Š•¿¥Ó«ž­ݲεò§ 1Š"ɛҌ㘢³¶²`¥¥اͰJ¶§ö N“Æ}x…B«–´œ¦q¡?¨À¨¨_¨©^¯ y´œ·²"±s­Q«˧ZœN–†£ùª°¤©\© =¤ q¨¶¯>¢–ë–šA ¥žœÁ ©ã­Y¯Nª ¤M›Bž¦9­\­¯­+« Ƨٜ혗êšÛ™’šö—¸œ_žI¥¾¢žOŸ¡q é Ÿâ¡¯žŠ¢½£!r¥!ï£? Ë f™{'$Šè‚âw ˆ”ÅžÙ™¦‘ˆ‹û‡Àˆ†—¡Ü««ƒ©p¡r£ œ_™îœ™Ÿz¦œ©á«ì®è®ñªþ¯+Çüðçô0ñàø!­µz¢ý§ä­—¯#´µ´•³Aµ&¬G£ë¤Ϋõ°q§£¥8¢í¡ £ § Ÿ_‹“”'¦'®Í­|«t¨«ƒªd¦ºž:˜#šÊ£¤W¥Ò§…©w›ì˜Š™ûœš¢i©e© ìª ø¬ Œ«á¨‡¤ÏŸl–¥ro–ù¥Ÿ«~¬=¬¼©Û©¥¿ K˜Õ’€“ã™N¤T¬1­&¨@Зq¡Ê«Ù‰øÉžœ¥÷¤¥\§µ©>¨î«Ù±ˆ®‹¢½•û˜–˜Üš¿ | î¬YÁâɺ³8—"ÈŽ ¹¡~¨û¯ ± Ÿ® R¬ è©Ù©à£ä‹ Fs žr :})„”„At€…d†»Ã~ ä‚ ?€ n‰ó’NŒ C}˜‚‹ó™~žN“¼‘ê.ˆ,Œ¸ˆ –dš`™¸”ß”#Fšl¢ˆ ŠŽƒ Ü} Žcš–—…¤#¨Õ©=²b·§ ©‘p”ñœü|>”‘ž8®i³û¥a¡¥¬_´?©A¢¦› Œ´‹{§\±i«­«>¬1«XªÕ¬’«t³±‹®+°G®õ­ ªv¦˜“žm¦Ý«ï¦í ^—$;¡‚¥”Ÿ ˜4—ÿšÜ1ž™‘€–b¢M©L¬´© £ïšášì ý¨¦ûª¦ª è§F˜kŒæ £”d”²–'•P— —œTœ;š@œ Ÿf¢ŸÓžìŸ› øžœ­¡ •Ÿé˜ƒ–ï”ÿô… xõq0{ Ž –’.Œ‡Š„® ™-Ÿ\§¬|¢D—Q•’~”ŽœŒ£­©©â© ¯ô±a¦  K²ùÖû"$×ý}¬ ¢ä§!« +ªË·/·Õ«‚¨ Z¦4¤M¦s¤5£œ+”“›\£è§)¥™£¤•Ή)“÷ªZ°®™¨¤0¤Ǧ!£îžQ–—eœz¡¤;¤X¤šÔ„•~–*›¿¥|¨^«)¬¾©ª¨£Çœ[˜B—ÿ”†m˜§ô®k® Õ¬ Ï«;¦3›Üኬš6¥Mªª}§d¬—L ±¨ízt ®€ ¯”Œ¦B®ذÀ²«¯a¯,­¿¦ÍŸ£“™¢¨¯³¹·®ʲ¶¸ú¸DªFŽ$j€ ¹Ö› ¨j¯_±¼« d§! ¨j©`¤ŠÌo ko å~š’ Y”ú‹P|rˆ›“È6‚ƒ‚§™e}’N™› #šOކ”Š•o¡tšè+žŸ­œLÄŒ‘“?˜5”µ“‰‘Ç ß혞=Žôž1¢‰¡ Óª{¯ЍBŸôšÍ•‰ ‰#œœ—ªO¬|¥S¨9® ³0ªš¦B¥1 Ôþ}§ñ­̰’´²²Q¬6ªB¬Ÿ«_°ƒ¬«€®»®©®-ªZ¡nŸrŸ7šv/¡æ¡|”¶Š"ΙF›ðžïœ5›0œ'™l˜=“Ø„ì›T¢°¨~¨™¦¢0žCŸ`ŸŸŸr¤*¬§ m  ’Ú ¤é‘C‘¬ÛÍ“ƒ’—HŸO¢ˆ¢X£ S e› ”n•¹™à–¹™I•˜‘+‹Æc†¿€ú‡¸Šw~a˜\ž6ŸdŸïŸG–¿‰`‚Ñí’LŸQ¢V£Ò¨ü¨á¬£!ÖÌŸ8¢‚§‘œ.—ÙDŸ"Ϥߣš¬ý±™¥õ¡Ÿ”¡ì¡þ—V—Œ¥„yŒœy£¦¢Ž¡È–Þ¤šÅ®?°G© r¦&¡Ò¢Ø ›§›G–å“»– ™¢žØŸyšŘ·•\Žw–“›š¥7©Œ¨Y¦ë ã˜ì™Hœ•Ùˆ¿Š‡ša©9ªÛ©j§Œ¤g•|ˆî€‰6—/£•§k©‚§Ažjž¥É«‘ƒx Mt ¨ª*·µذ@­è¦Ý¢w¡±žk–±>¼¶¸¢µǵН¨õ¡Ž“9†¥†ñšê©‚°¢°¬ ¦"e©E¬8¨û™ó®vÊ „• ¢á–ꉱ˜ Ÿ>›°­Š8„£ŒC˜9§²¤o§õ¨£š’/† M|š¢-ª2­E¨Ê£I¡¶¦"¦ï¡^Ÿ1˜ ˆv…§“€š¤ë¡Ô¢ Oœ¦øªDªC« §ŽªÏ«!©Å Ï“¸U–Úš‹¨1§>¨±¯]°ЫÉ«$«¨û¦ùª~¬ˆ­²ϲ¿­¼¨Á¨ô¦!©ƒ©·¬å°q° '¬̬R¨\«J§´Ÿœ™ú–º• ¶‡)Š ™V›Oš¶¢ ¤`œÝ›f˜¬‘¾Œ w‘ù›9£W¦‹¥Î¥…£ߥ¨ ¦ýæšǤ3©#Ð¥",¡: ë—n‘öŒ€K‚@†‹Š\ ê™w Ë£g¦W§@¤þ¢ÿþfžÿýtœÿ“ž‘I—'˜žÛ Ó™F‡L‡ ‡l~ ­ƒ  M˜ú™,œ r à£M¦ŤΟ™_‰Vƒ²ŠY—k‚ž+›§¤½«U¦Œœ!Ö— Ä£*©D¦†šWŠ\›è tœŸ §’¥š B¢Þ¦DŸ“•d™ê¥)‹˜RžEžH¦)¤ëžÓ¤(¬,ªš¥c¤‘¤’¢‹ øhœö›b•Rš/¥Ö¦[Ÿ5œºžØšÓŒO‹Á蜧•« A¥ž6˜–^–ˆþ…¥€p“-¦£¬5«ë©!“¤"‰žP”|‹<‡?•‰£›©N¬¡¤$šŸén­þ‹ w{ ×s «Žì­N¶S¯€¥¢×—›•!Ùœz µ¹£B¯æºË»¸R±uªz£î¡›“#’<—âŸåª[­5ªt§"ù«.®|­(¤ü‹&mƒ %”¥§¡¡H›ˆ¤s¡u Ÿ—ï”ÅŠ‡»”ô§¼¨E¯°¦s“R—e  Å¡<±« ¡ žR§ü®’­Ù§|—I„^½•·Ÿ,¨Q¥}§B §£€¬&µG®/ªÊ«åµþ°²³³¯E¦)¡a¢<š{§P§ŨƱ°r°i°R­ ¬«z¯Ú­¬¡¯ @¶-²[«©¦$™wž w  ªº´µj«߯0°Á¶“µލ˜Å„ Û~¶… ‘”Ú›Sž8·£±§á†˜ç ‰é†‹ ÷•~›Ý¡{¡œá¡j¤t©øÀK¶ÿ­Ô ö›×¥™«@¦¯ v¨ M¤| ‹{ï L•þwœ °Ÿ®¬ʪΫ_¥ÿ £þýÇ£þü_ þýižÿü&™¨” ×!ò¥‡¦A¡ •=‡¹D†"Žá—ÿñ§kªͯ*«§˜¥˜¥ˆ ˆšŒÿŠÏ”$¢¢¥¤<¨þ¢1ªI¥‰œ ò›|¦Ò¬#­G¥ë“òŽ ™óŸTšÊ–z¤e§5 £ª›¦!žF§¿«áše’Gš÷ ƒ¤í²ʳð«f¥†›G˜þ—ÅŸð¤Õ¢´¡*¡+¢.ŸuœŒ¤2¨¥Ö¦Ý©¡¨¥„šù˜G”G’t—Ž£‚ª4¤á ®ŸY™4“ðM‡ž…P—«¨§¬®¬!ß«!ï©!÷¨y¤ã¢BŸé£Ѝ­;°;¥~š ŸR©Œ­S€ Žpµo Ú‹H¢ߦp¥ )š O—µ;𛣡¢r§×­ë²ß¶w·g«ü¦œœžj™ã“@+‰ÌŽ€›˜¤¤h§-­ˆ°´® ݥ݆¥‡gQŸˆŸ Þ¡ÒŸÒ¡±œ}œp™a‘É—ÿN©§¬ª±<³[¥ï™Õg¤k¡£’N$§a§«–ÉŒ«•Œ¡ý¦¢°š† ƒæš¯«p¯j§‘¥Щ%ª7¯´H¯ü¬E±”¹tµV²߬e¥c¨D£ ž¾««©¶µª´³@²ݬ‚ªܯ¤³¢µ˜¯È­í³U´UªÆž9º VŸ1­¯$ªš¯.³¯¹¶ä±¶•à{ >y=Œ b™ÚŸwœËžù¡¦¤›û“^ŒÚ†lj’ ƒ• ë›É Y¢nœç›õ¥m³Áÿúq¼þüz¸þ¬ý3Ÿ¤­Þ¨|µþѺýдþþ‘ ýœƒÿX |› 6Ÿ§Ì­D´þí´üb®þþu¤þûyžýûå þýŸÿþØ¢ÿýtŸþ=  f£š¤Ó¨ ¨!¢Ú“‡ £ ˜¥œ¡¢ò§w­}¯\²S­ë©k¨K©Q¥Σ¼Ÿ) ›¥Þ®Õ°ú«¤@ŸåŸ÷§ò¥Ä£ƤE§{«,«e¦yœ¡‘ë›/¤§ŸB™r«¼«K¤,¢a©§" ©¥§Õ™Æ×¥?£§ª²ü·w«º™b‹›Š¤“D£M¥Ÿ ¡\¨©)¥žŸ¦¡R¥«ú°­§L£2£¬£áž&ž¹¤ó© £Ÿò¢¤³š`7’–AŸu¨«¬E«X«ʬžª+ªò« «õªÕ° °‰©ŠŸ¨þ§ ­ Tr7f ¬i 1z‹ ’D•ã‰!Fˆ·„½ˆã”µÀœ\¦o«©e­X±D¢ƒ™dŒâ“G’¿Š~ï‚…a›š p¦ ­Ò² Ù³!©~—z‘üŒ–ˆëï–³˜¶’›&¥¢¤½¨þ¥ÒœÍ›þ8­ç°è±²¯x¡ÝŸm¥J¦çüŽ(ˆãœ«¡Ã} z„ìˆ K“S˜+›¢‚!Iƒ5Ÿd´ µΫÎ¥¾§!j­ 䲕¯ §­ õ­þÿ³Çþ°·ªõ¥Tšiœ–ꚉ¤¨â«¿µk±n²̯@¬Ê©RªC«øº%®H§¨›­Ȧµ”üœ 2›*õ‘ ~¤°ªx«²´Y¶9«-¦¹#| X}Ɖ z–Y›šf™ì±¢ß™a©‘€Ž Õ— _–Ê›® è¨[¥ Ú§v  9§~²’Âÿý«½ÿý½ÿþ‚µüвü?³vº[±*»ù ¾þù³½þû”®ÿû|–ý7Š z¡ n¤`¯þ=¸ÿsºý*¶üþ×­þü£þùüýûýý^¡þ¢ÿþt¡¤¡ ­¥g¨ª"©#«¡Š ´‘ ®§d®±E®V±ʲ´ ±ªÌ©Y§»¨àª ©à«°g¶Ø´s©.¡ÄœPž%¡f§Ϫ/¢tD¢Ÿ©ɯ §¸™1¡6« ¤¹žD®Õ³·¯¢«â®Ÿ«¡¦·¦‚Ÿ/§®«}®(°ä¯'¯R¢ö‘¢€dŠÝš¡¥"¤ן¡¨…±o¯l¨;Ÿš£0¢n Z©¸´Ù¯”©¦ǧò¨¦§¢¡Þ¥\Ÿ!$˜å™G£Jžw–êšn=¥R© ª1ª®®ı©­ϪøªZ®®{«%¬y®î®¨ ž¡ g«!ÜwBr Sn ˜m­sU‚-…žy J{ ZƒφXŠŽ¦ ¦w¦§£?’ ö†7‹¿’ê‡@ɈTŽU‘-˜•ž8¥s­O± S²$a¨ž=•gŽ•†o†3Œï‹ˆv–‡¨¬Z¯(ªýžÉœ•¨̪2§^¨„›’›?œŽ›çœ†‘FŒÑšDŸßù€ /‚"†­…Žª‹wy —€ß›šªj«û±—§Ü¢ «!2± „® .« Ö¨ ‚þÉÿæ·9œß—+u޾ŽN—"£D«ó³r¯6¬ô­¶®á¬@¨ššìœ › ‘ ŸF  ü˜ #—ü$rµ÷?8²ÿ'NƒJ‘&«»²`°!±̲2ªy§û™b‡)ü„¡‰–ל1še›F›à˜ª”–Ùœ –¥k¡þù©ÿ^° w· aµ=µŽ­ ë¨F± Ÿ½ÿï¾ÿÿt¼ý¶ú„¸úâ»ý5ºÿµµü•¼ÿú¾ýü·ýý¿±ÿ ¡Y—ÿ ò¡ÿ Ý¡d¢ü\°þQ³ÿþH³þü¬ù—¡þúøœýûSžýþÑ þþ? ý£¡ÿ¦ ¢¦ͨY£´šô’I‹I“  “® ¯º¯¾°>°¹°Ž­¨7¦ £M¦ª–«ƒ«¼±v³ê¯¢£ÀŸžÙ j£ó¨f ý—Œš ܧ›²Dªîœ’žߤæ¢1Ÿ’¦ׯDµ²¯²e¬í¤Û© ¬ƒ¬€±—´(´Zµ[¬A¤%“ ã…¶ƒì‘•œx˜[™`œ&¤ «×°)«šC”¢¡à£é¡ ‡ª »°  ¬ S©½©¨ ½¨Õ¦Ò£`žŽ›’…ŠÑܘ›™æœ¡g§m©(¨•¨Eªq°°±¬š« $«!¡¬ ¬H¬!­«°7ª'œ,›4¨2ƒ Tvp›g ám ‘r ëkzÕŠ¼Š ‰'‡™‰p‘ª—ÛŸ“¡™¨Šý{ƒ|ÍŒg™šŠ ŒÊ’¾•Yš/¡¡ò§ã§¸§. œƒt}‚eˆ–‡‹•î¤`¬™±BªÀ (œ2žsš.!ª” ’ž–E”S—§#¤é›W›Ú ,–ÜŽß‹^’÷’Ý—mƒ,z€R’ÿ”퓾£ø£7ž©W± º® …ª ®› æŸ ›Ÿ 6¢þˆ!ÿƒh~݈7ŒÜ…ù… —裩­l¦ §ýª¾¯Œ°"¦”‹œ|ÿ…ô•B–J”i ˆz“ú,ÀLƒ—Ù²w¸™±5²²¥—œÚŽ®†=xñ`ŒTÿØ‘÷“aš™šÇ™º—¦—Ñ™šY Ë»ÿqµöD½ùD¿ÿ¾ÇKÂÿÿ†Ãý ¸ý z·ÿ w´û !»ÿ]½ÿi¾ý9¸û»ºûÆ»ü ºý¥¹üË»ÿû ¿üýºüh±ÿ©Ò›ÿȱœþKù§ÿûq­ÿû‹¬úÊ«ÿû{ þúÔšýûážýþ³ ÿÿ˜ ü¯Ÿý¦žÿv ¡¡ Ð í˜ s” J– ’=š ¼¥«$¯6¬{ª¶©–®¡¢[¢˜ œù¢ê§çªͰ þ¯ q«C¡œÉŸ¹¥©v£‚™œ”ÆB¢d¤ª¥5Ÿ9›¿ŸÁ©›¥›“žõ¤¬°Õ¯=©’§Ö¦À¥³¬!±Õ±·²b¶Ç­Ÿ²‡r‘’šœ1Ž5˜Ù ©¤à¡›6ˆ —ˆ —…¢.¥Û© A¬xª Ψü©…ªø¦#Ÿ"K ôžЖ%ˆ!È‚ù`ŠÒ•H›¬œéœ°¡b¨¦c¤‡¤û¬õ³]¯%­V¬g««ƒ«ªP¯=«G’—Q¡ØŒO‹Ë~ªy þn jr{r Äq ǃ£•š±” õ–“Õ’±¾B–‘å„÷† 9–ŸØ›‘ ˆ‡“eš#œœ¹Ÿ2¡ÍœþšÙšV–Ý„ŸvÒ}2‡A ’‹›\Ÿ¤‡¬ð± ˆ® b¤_š]˜’"Ò!ŒŠl–òžá¤k¤$¬¦®7¢§¡‡¢UŸ¥î™ÿfœøª¾¯'•󉈔”E“y‰WŽ5™`žvªí³a± Ù« rš ×á¶Œ )u Öƒ(Œ ó– R‹„8‡ЕŸ$˜¯œ¦¤:© ¨ŤtŽ[w Ú}¿ˆUŽB†vz | û²Šð›š±e±Ϫ±¨º˜˜Šû…T‚§ƒ 'Ž"Í•³—Ü•ý–.š1›—ýšš†š ¾¥¡ºú·óä½÷ÒÄþXÇÿ©Äþÿ"Àü¦Àü¾ü­¸ýä¾ÿÓ¾ý¿ý•¹ü߸ýV¶ú±ùó·ú[¸ú¿ÿýÍ»ý<·ý¯ÿý› ÿú4øD–÷Œš÷1£ÿú ­üûm°üüϪüþëŸüü/™ýú¯žþý.Ÿÿ ý9ŸüpœûHžüÙŸÿ-y™Õ˜ÿ˜¬™­˜”š.Ÿ •¢x¨³¨µ¥þ¡˜¢ÖžÞ™¸–““Og£Q¥«yªù¨l¢™§Ÿ¨M¨9¤ ĜޞT ª¢BŸQžþš±—£\ž®š„–:šˆ©˜¦ó¢¡™ŸTœ“¢£º¥+§µ³Ȩ”‘_™| Ù¢èœ  í˜“œ“A•W‰_ ¿‚ f–¹¢½¤¦§ͬ+«…©F¨ §J£Êš#xž ¢Vœ–|üu ÷9±™½š@—¦T¤Ú¢óRž‘¥Ù§Ó­ϱòZ­äª5§B§(¯±ž¤ ›÷¡“»•_‹¯…Ô~Ÿ…Έ´Š{“£c›° ¤¥£´žú–ˆb‰8ŽÅ‘Ç™E¢Ý¢ý¥; ,•1Šî˜ïœK™óšu›—š¸—Ÿ–¶•…‘耓zþ… Ž“èœ¨§²«±³Ö²å­ £ªT§ ¢‡ŸxŸЛ{©"«¯µ¬¤³N°ë¦û¢  ‰¤Ô§©¥4¬ö±»Ùªjž´‘à—_£4™‰]—0¢\«¬´¹²µ¨  ž‚~~o Õ‚;„&|¤š› \§«û•ψ„î‡ìŠ!•p¢§ ª M¥™› ”IˆŠ€o’…Ž˜Ò™ ¡À¦’§à±w¬ ¤÷£*–²Œ L‡Ž  å”U””™›¤pšÍÙ–èèŸ0œtœÁœ ¤ª5»ü¹öÙÀúFÅÿhÇÿ-ÀþÝÀý‚Àü¿ÂýÙÁþ‚ÃÿÿË¿ÿü¼ü^¹þܸÿÿ³ü ¢öϪù¯û[¹ü¹þû¹þý¹·ÿûéýù´¿ýýƤÿõ3˜øÉ¢ÿúI¬üúϵüü§üþ ýýšþúœÿü-›þ;žüæžüížüDžü–ÿþT™ÿý.šû±›ÿû¸›þýZžÿþˆœü¤ýxœãº£J¦Ò¤þžýŸ· c ¦ž”˜—¸Ÿ¼¢b¥)ªy§¤J ®£*¤e¡ë¥é©·¥EžG™þž{ L ´ŸÌžÕ§¼²Õ¦†šE“ö‘©˜ª—êšfž!þ¡¢€¡CŸâž¢ñŸ ‡Úˆ›Ѩ§P¢~›ôž“¡´£Ï›/“ª‰Î…{…¢˜X£ǧت½°N¯'©Q¨<¦—¢ß›$›"¼ (¢ôŸ/„îw { ÙŠ•“Ý•]˜"›½˜k™„ší›:“œ"§̱l²L«û¢[šïŠ©ò«´¤œ£ë—Ä–t”?”x‘y“¥–ÙÍž‰¤ð  ;¨“¦Z¢ƒ™ <Ž b‹Ž‘W—€ ]©7­û©h ª–ƒ“,™_™9—1˜̘²™¿˜•—9˜4•uˆŒ†¥ ’6™+£X¦å§3¯#µʱôªµ©Á­L¯{­« ª¿­¢­¤®S°Z´É´ä§¡…—Wœ¥›«¬º´ ¶Ø´‘§Àšxœ Þ©L£V’ —9¦à¯Qµ®â©  Ö„µr Ÿ}$’™É«uµq³v§<žç‘öÑ™Y¡˜¨@¨íΦ÷ª ¬ ’“ ¶˜þ«l±Xµó³]¸Tº!°Ú¤ø #ÿ˜â‘Õ‘ô•Y™¯›¡Ÿç¨ø›àŽä”«›ç ª›Òž÷¥„¯¼Àÿ¼ûµÁÿÆþ½ÆþæÁþ»þ„¾þÄÃþÇþ_Çÿ½üâ¸þþµþ]±þ‹­üxŸú…žû_¥ú-«ÿûÞ¸þûîºþûºþû1½ýüHäüþ´Éü‰›þýjŸÿû¬ûú¶ûþ §ýÿA¡ýý8›þûüþCœÿ$œý œþ\žÿ(ÿïŸþ|þ`›þûÿþûÜœýýåžþþÉþý­›ÿýœ¢ k£I¥Q¡ó¢-£•£$§N Е"•š96¡à¤Ç£¡å¡×¥Ë¥…¢à¦j« ª'£™œ_šõž 'žI‘©¡±ñ£Í•ç“‘Z1–¡«1«O¬›«ª¯§B¢9¡[›¦‡h‰è—H¥ ¬øª©¤˦£§5¢•Ÿúœ©›h›§¥°"µ²¨²þ°’©j¦À¦à¤ÕŸ»3¡Ê©.§c”„Ê‚ìŠÆŠ’ŽJ•™vš [–!@˜;“ÀŒ š˜z¦£­ĨÕ¡ ¬•"q”´žá¦›¦¦´•ç‘f•‡š2œš¾—˜a›¼™¸˜I™9 Ò›§™ã’O‘€ŽΓŒ–.š¯¦W­¨§¶—옔´[’”³“Ÿ–Õšÿ™šÍœŒ‘`§p–šÄ¡š¡Ú¤“®·¶T¯Шe§¬ΰÍ´P³í°©¬Ï®¬^´¡»§§›yŒ‘œõ ô™ì£ѱ¸ƒ¯Ù¨W®<­W_‰-Œ€¨vµí±V§A¤_› ˆ|.€Ö”Šœޤ ­Wº^¸ˆ³üªŒ¥`¤ª®¬ö²S¸t¹§ª…µ÷¬§£È«¸­γ–¸›»O¼“¾p»ó­^¢þ•¬› •\☙ ´£ /¥‹©Ũþ«c¡z”"“J™¦ž»œN IJi»oÅÞ¿ÿr¿ÿ9Âþ\ÃþK¿þ•ºþb¾ý¡Ãþ©Æÿú¾ÿOºþô©þúK¨ÿ  é¤þCšÿûžþüvžÿüߢÿûá­ýü’»ýü.ºþüŸÀüüUÞüýâÉýrœÿ›þûv§ûûþ°û¥ü þý–¡þþ) žË›ý•–þí›ÿ1š ÿžþËœÿü„œÿúÞžþþˆžýÿûœýÿ¸™ÿÿRšð¡ ¥)£“¡3¢a¦¤ª3ª ЙUâ“ì– Ÿ·¡Z ¸™žšï£‹¨ô§R©+©q¨® –™Å–ޤž%›÷›n¨ð«¹Ÿ“¿‹`‚¬Š2•X¢.±P´´Œ²®«¦ý™3™–™Tõ›á¦S°6´ã³]ªA§…¢nšéœà¤X«`´2°„¶_·f¸+´+³ë¯L¨^§½¦M¥T¥•¦5¨7ª ¥©¨ž«–a“ƒ”͉Õ…Wט¢Ÿì¢ ›™3—Õ–œ•}“ˆž©Щoª6¤ïž¼›- º§J¢“‹ž‰ª•^Ÿ‘œ¼D‰y‹†’ã’õ”<Ò‹EŠí†~‹ñ’Þ˜¢ž¨‘¢ɘK‘r‘õŒüK”‹“y‘µ–2Ÿ›¶œšDq…´‚ŸŒP¨”7˜ë£h¯ÿ¶« Ä£Ò  ¨.¬ã«ù§º§! £©ÿ«‡¨9³Z¿}›QŒH…#žŒŒÆo‰ Þ“¯§®Ù­8´c´k¬%—Y‚Ťè¹ˆ²¦£§žΑÀˆD~T1’NŸç¤«º¶–®¾¬ùªªâ©ö§ü´VÐ tÆ6 ôž¹¦o¡S§£²²¢E®Þ¶H»À»‰·ªû‹ ‘ HÏŽß Ž© a­£¬x§«ª÷«^¥¦˜Ž—˜ðšvœ¢7¹ýàÃÅÿÆÀÿG¿þ ¿þÀþs½þq»ÿ »ÿé¼ýœ¾ ¸¢«ÿþÉ£ÿúŸýöþþŸüÅÿû!žþþh¡þÿ. þþȤÿüŠ·ýЏý½ú8¿üý§¤™±™þünýüo¡ýþžþÿõŸþýÿŸþþ8ŸHŸðœþ­•ÿÛ˜ì›ÿ#þ´žþÿVœÿüàœÿúÞŸþýžþþšþýL—þÛ™¢¦¦¤v 5  ¦¬ªá©*ž–˜êŠ„ÒŽ –Ø™ š–b˜Á¥´«e¨Y§ Τô –ø‘H–c›ˆ›˜šš8¢  í›–,Œ‰S‚%ÈŽ$6˜„¨0´µµŒ²îªD ¼”Ö‘ô“˜™.§vµµí¶0µ´*«·  –٘ᡫ­¶)¶’·’¶Ê´:²d³Û®í©¢§È¡Ÿ½¡t¨»©T©©© =™Wo Ž4ˆ§ˆ™© 8£0£®¥æ¢çŸ—EžQ«Q«„­–«¤„Ÿš£"§Ú ƒ‰¯Šd‡›ÉŸØ “Œ kz "} "Š’(‰ÝÇ–ŠMŒ˜…ú€‹†D”"šV¢§¦šÒ@„Є …Ÿ’ü—Ö—˜ÑŸ™£‚ñ˜ö€* 3z M~·€ă®ˆÅžë²´´í§ Q™v•®¡ !yŸÔ–°”Š›‘Ÿ¶£M¦ž©k†—€ñ‚&Þ’ú#¹xò ˜~ ‰d•Éœæå¶ ¬ÿ§.ŽÖw 8y š1°±°›î’—…‹~bw~{Ù‹I™iŸd©b»r¸s©À§ ã©¥¨!Ÿ*™K¤/½¥yíŽFŒéM¨ñ¢r†˜cª¶ϳi¯ ©,•~ŠLŽ ´‘âŽÏ”ì¥W¨Ö¤wžv¤ì¥r —Õ›9—˜½œd¤ýïÁüHÂý÷Êý:ÅþI¿þŸ¾ÿL¾ÿÉ»ÿè¹ÿ ʺÿÁ·ÿ ·ý)¨¤þý] ýú?žÿüþýØœÿúºšÿú¦šÿT™þWÿþAœýýЫüí¨ÿ»þüıýþÉ þ3˜þšþý¢™ýýìœþý,›þýëŸþýþüYžÿ€ž¡œÿט—ÿF›ÿþ\Ÿýývžþü—œþû.œþûÕŸþýþý-šþý„šÿ+™ë j¥C£‘Ÿ‹-¢½¢zžWšSÁ›z ‘ƒ Õ‘¡”~”g’r•2¤,¬Ü¥ì¦ТЖ3ŒtŽÿ/ ™Ù™È™$Ý¢³¯š÷› ‰“’û$Û€$¡‘<¡j¯Œ³K²-¨L›ø”E”.”™S©¯¸͹‚³ ‰³ ³«Ož“V•ªœ@¥ ±4·e´­³g²I±f°€®I¨×£$Kˆä 9žI ð§8¦Hþ›å Á£M–gK“ßô¤K¢þŸ¯¤¡Ôš¬šÛ.¢n¨©©ª‰¢F󢀨S¥®¤´¥ñšË–ˆv Ž y ²z ½‘,˜L‡´z˜€ï‰¼ˆ=ƒ9…Œ–. ¨§©û‘’„ Ð}ÕŒR›¡,šœ¢¾¦  a”f…ø ߈ÜŠ€°,…ÿ‰—S«¯G£2•{“—Øš•^Ží„:}M‡y˜‰¡ ô”l‚«……!âƒþ"õtþ} C…¯†´‰2 œ©«¢&•í…‰w –}°‹Ó›r¡¿‘ƒ i| !u Tx e€ ‹Æ•Ìœš ­S²Y¢ŠŸ%§>¦DžÌÖŠ‡ |  y ¥sý|j…Q’Ôš‹’$€eˆTŸR±V°ƒ¨¾—šÈ”>šÅ—ˆ‹Ç˜•[—¶•µ•Í›Fš £˜4–ßœ –dŽKž ߦûÊÄÿüÜÊþÈÑþˆÌþ„¿ÿÓ¾Ǽÿ§¹ÿ ̳ÿ s³þɬýħÿŸÿÿa¡ýü üú¶žþý"ÿþ“›ÿú3“û`Žâ‰?‘ü9“þü›ÿl™ÿ‚ ö{£õSžþü&›ûG›þü›œýý†œýü¯œýümýû5œÿùšÿþoœŠ›4–ø–!–ü§šþûsþûžþýžýþ5þþ%œÿý‚›ýþhþÿþ²¡ÿ¦¤"£. ÷œ‚ž¼˜–˜”»ŠR} üy •„ (‘-—™›•‚•¢°©%òž’¡x–ʃ“QžOœ™ô˜©šSž7¥4œÀ™››Ä!r·l –„±Ÿ¯B¨Ë¥µ¤Éš*—•#˜ œ© µä¸¤µ•±´­%¡ˆ“!2‘!N—0¢r¯¡¶(µϲ˰d¯Ö¯ð­ߦ!˜Ñ…L{ ‡¾–#˜à›OšûšÕ›£µ¡NŸšš9—dœ¥¨žþ›ƒ™X“¶“±›t£¾¦G¦%§¦K ýŸ¤«¨c©ZÆÿS•¨âž‚žùž]”W‚dz ù•@† f€:ƒ Œñ>Œˆ””œË¥Пi‰Yƒ™‰t‡d–C§Ë«Ú¡A ¶¢‡©J£¬—#Œ-‘;œÁ¤]”a‡Æ…‚†¶•y£Á¥¡e2–ï™öšá”ƒ„sPwŽ“n¥§¡œ±’Ê/Œ̆~š k‘  ƒ…ÚÓø¤Q—Pt„è‹#ŠŠ)‰½z Îw €x >v ”‰é§’y•љݓ.¡—6•p¢‘¨÷¦T˜«•SŠv »u q v×z>†ö–³’Lš/ªå¡‘•‚~† &”“˜ؘû‘“¡”þ“‹¸ˆŽXŽò‘î–Úœ,œ b  þ k­úìÆù£Ìû\Ðÿý’Êþÿ-Áÿ\¿ÿ³¸b¯ ½ª|¬þJ ýþÖžþý}šþýÓüüÒ›üúçžþþXšÿE•ü‚ü,w}w€ÿz‚ÿOˆ&‚²ûê™ýü¡œþýy›þü˜œþü"šýýóšýýè›ýý/›ùr•ûô™™••íߎÈ‘ûV–û˜þüvþžšþ{šÿýï›ÿüÓ›þü›ýüµœýþS¡ý²  A Àž&š—D’p•“šˆ Sƒ “~ 1‹B“ôžÀ¡“œXœ~ÔŸ»—€œï£››%– œr ¦ ùž.ž(™L–e”™Š} ®y syþœ”¯j¢h›Š£y Òž ™ –˜›m¤W¯ˆ·Í·ó²—¯º«ì£F”둯œ¤M«Ú³1¶*².­<¬{¬3ªq¦Š—ö†y†•K•§¯Žõ”û™•žfž´ŸœP“T‘«šH xše•º•6’–®žŸŽ¡B¤ˆ§¬¦£y£~¥h©¾ªÏ»ò­m¡Ö ŸŠ›Ä‹q†±‡Ôž~z d d‘ W—f›=˜j™F˜Õ™‚–Ÿâ•2•؆ªm²y¬ï¨a§Ÿ©v¤jžŸ@ =§¯¤“‰| |f€ˆ™§†ªõ£Çšãœÿÿ¦K rŒcuv“]£¸©Χ«žm•÷—I›Ö–5 µ› ¶š©– ‰=”Q¢¨¯~¨‡–oŽŒ–j› •ìây ‘} µ€<—¹¨RŸ¾K£J’Ž‚œˆœ˜ì§K«E«£¤/¡˜gˆI~ ¸z^|'ƒéˆkšIœƒŸ0›$™‰¤M›„ç€ø† b’” e¡ÿ :ŸIœ³œ™ &Šuˆ݉ ‘ ]•ÖR¦ ¥…™l«¸¹ùÄöÞÇú²ÈüÓÅþLÂÿÁþ¯¹B§Φ€ªþ Ÿüþ°›þüNœüý} ûý2–ýüà™þ´˜ÿ¡‹“ƒ£ƒ¡R‚m‚Roˆj”þþšÿÿBžý‰œÿþ6—ýƒ™þ°˜_—ÿ—‰NŒ‘ ‘Tþúá‘ù—û˜ÿýé˜ÿ›–ÿ·™þPšÿü¤™ýü1œýüüþ˜ ýW þ÷Ÿ êœ`™Ò—z‘ ”:”%Š B… s… ë÷˜¨¡¢ œÒŸ}¢J§º§à¡ ¡k¥r á‘Ÿ6¡PŸ; "£ÆšÅ™Õœš –.ŒÝ‚Ж©)=—J§Ë©p£³ŸÛ˜"˜fŸǤέ'¶Ù·´\¬ü¦'›ž¢£„§Á¯¶?²C«A©æ¦v¨þ«Y£·”'ˆ ½‘›,˜uÜŠP<“—ðœVŸËœ‹$ŠØ“Œ˜©˜r–F•f˜·›;-™ÙŸ!-¦§c¥ƒ£Þ£Q¤î¨´¨€¡ášWšxªšh—fŸ Ÿ=’ûŒÖÒw s p ó†7¡ ©s¯¨õ¥RžÈšýšèŸ8˜[˜4šÉŸ5¨)¯­£©¢#¡6£m¥'¦Ð¥‚©;¯·¥¡—p“ÏŒþ]ý‘}o?šn¢ ÞœÅ¡B¯)§V‘í|»|1›T¥M¨Ë¥)›T§ùªT¦¢®Ù¦º£œ:ž¤¦æ°®¥““†•]œ ¢²œà“?„LˆU'©Ï´‰«Ñ©‰²j¤?–AŸÙ¥~¥±†±x±Š®x¬ž$•ç“ÿ 3•ÿ >þ ºœÿvªC± ¬øœh’k›¸™#ˆS‡ g‰ {•ùŸþ 0´ÿ Tªk¨Φ/¡ ²–I•B‘i™ Ížò¤±¶ Þ½Ŭ—ÂJÂýùÇþù±ÈÿûùÈûŠÆÿôÄÿÀÿ㺳¨¶¡¢ýíûýö›ýüŒœüü›üûƒþü³ˆ,ÿ ¡…(#‰<Ó‰_‰U† ´…îŠ+ÿõš—©™ÓT•k“ ’=…~… ¶‹’¤šÿU˜þú?™ÿù™œÿú„™ÿüh•þߔŗü­šÿû<˜þú^™ýû ›üývšýÿCœÿÙ —(›Eš•?•‘“íj‘™%œf¥v¢œfš/ëŸë¢ì¤Ê¢Ê¥9¦c§£ Ÿ¡´£½§ܲ ¥B¡r¥ˆ¨¥q£ü™{”P˜‘ –?¥¯®Q¯%§¶Ÿ{“Çu•È–Í¢'¬y´ë­Q¦Q ?¥¸«á£ ~¢7©[¯­F©¥¨ £—°å³ê®-Ÿÿ˜™Û—™“y‡»…þ’—Þ ¦ ’Ê„C‹Ì”Ôj–Ô™¡Ÿ¢pŸΜb¢!Q§¥×£ÚŸŽƒ¡ ¦»¦ ë›©qž¡šQ– —ÜŸ-¤-ž—{~k "sŽ ›¨ ®µe³¯é¨M§]¥¨¤m¥Ý¡rœYŸ?¥~©ü«¸© È¡‰•™Æ¡ý¦¥‚¢ë¥û¨ä¢˜v›u™ʈI€ŠwŽAŒ°“jš&¢-« ¡å•S‚܃â‘”¸œž¢›— —•¥ª“®¬«!g© )§Õ¨¹ª8²r¬n’g…Õ‰‘-˜Üšr#¿†˜«K´õ¬~¬  ´©¨›Užߣˆ§xµ'µ[¶¶ƒ·:¨M¢)¤›c …§ß²·»?³_ž¡î”Õ’`ŽJ‰ ¿Œ ä› '¯þ ¼¸ÿѰñ±«ïœ_D 4œŸš£¸µ Ź—µŠÃ9ÆþýaÆþü[ÇúÆÇúoÉÿ*Ãÿ•¿þô»¯@¥Þ¡ü!œûü5œýüœüüe˜ýûN{ûtr„UÕ„K‹ŽÇŒ$‰l… ĆêŠÿ’Ę‘C’,þœFŽ´‹Ï… AŠç“›þýí¡üûbžüûX þù›ÿûx’þü•ÿјúâœ÷U™þøô˜þø<šþýôšýÿ››}œ Sßn—/–ú”Ê’¾—¢šr£{¦–ªP©¼¡oŸ f›Ÿ é¢î´Ÿ"¤ª¥Ϥ3 Ö ¡ ²¦±gµ!©ƒ¤¦X¦§©ªN ݘà”b•}”fšë©=²q«³ “³‰~Ž‘b”Ø£]¯³«¨#¨sº¦½Ù© ¡¢ã§¯©U§¡mžr¬ä¸«¸l©íœÙN–“«Žˆ¬“•œ#¡"¦¥¤,–ÚŠ!“È•ö›Æ£ñ§4¦f¥¥Ц…¤n¢_žYœÆ¡ ¤!g¦"j¦z£Ѥë£{›%–ÚŒl‹» Oª¦_‘âxltÒ‰Y›ü¢ý¥b«¾¤&¥œ«ªè§¤ö¡o¤)¨õ©ĬݪŸz,’YŸ¥£Þ¡§ËŸ0žé›Ö˜L¡{£•b„%Š#‘ëÖ‘•?ϙ攆†9ƒìž’´—–TŽŠî”˜™`ŸŽ™#W¥"¦¨"€®m±}ª€¯«/šèÊ5NŠMx:u  v úŒÌ¡o­Š«¯¯v²ѧ˜œË›U£ ©@­ı ³‘º¨»ý´}«T¦²§ê™¬™Ù¦Q®çº}µ¡ÃŒM‚R„û‡V[ƒ b›Y²ý{¶ÿ[¬b®*©DfŸ*¤å¨Ê©Ș{¢cµ Í»â·"ïÅÿþ”Åþþ°ÈûŒÆÿý&ÅþÚÃÿ¾ÿ ºÆ·r£þŸžüÿ‚üýAüþ ›ûþj˜üþë‰ú¼þ ¨€w†üŒÎŽ—‹–‡ä… 1€±‡›Žæ’ÑŽ·í‹ þ¹Ž „Ž XŒ|ŒV‹/‰NŽþ™ý9ŸýüO ûþû ýü2™þU“[“ª™ù·žÿõ5žþ÷”œþù"šþûî›þÿ$›ÿš-š ¼œÙ›B—–¡–‹”ºš . K¬·°­–«œ¤‡£u¢¥¡=¨7©ùžú™-œÒ¡o¤g¤¤¦¢£¦l«™¨ò£¦e©õª®«£mž\Ÿé¦j’"œ‡¦ê«\£t–•%šXœ¹˜ ¡ó¤ý¦r¥Ä­MÀÖÁK­Z¢ ŸÏ¢Â¥"¥{¢Ùž\Ÿ‰§r´\Ƹ£>™S”Ý‘·‘'•S r¤B¥‘¥ü X–)‹”•‘™¤ ¨§k©ž¨û¢”¡jלOŸí â£×¥!û§$-ª׫R¯n¥ö–?Ž­€ Ày þ‰; n«± |Œå…>†=ŽkŒ²’d :Ÿû£Ô«¡ª6§ü¥|¤+¦N¨ù©¤®K®Ÿh‘ÿŽ›¤-¡ÔžTw›­˜Çœp¦±¦i¶•Þ¸ŠÇ€JÔ„‡5–&•æŽÆ‹O”Ì•u–#”®’\ˆ<‚ ¥ƒ †¨‰!³˜"3£!ɬܪРƒ¤k§ëšW”º—ÿ–Ò‘<„}w`†_x»‰ Ý—Ó¢¨w²”´n©ì¢ÍŸÌ¥á¤æ§n«»«¶´ã¶}°D¨ФW ¯”ºŽ,šT¤Õ±߬œ›æ‚ Âsz€}èu B{ e“¤Gª«¦/¤á¥–¢z¤¶¤qªs¨¨˜˜ fª!¸Ÿ»&Å:Äþÿ1ÇþÿBÆÿüÒÉûXÅþTÄ¿ÿþiµªš¡þÉžüþTûþ0žü ›ûÿ¸™ÿú@–ûðÿp‡8‡#…?Š3‹ i‡g„î† 1‚ ¨‡¶Œ$‘ ÜŒ =І ÿñ‰›‹ ï‰ïŠÇ‹ΊyŠ1ް™fžýþ“šžŽ—ý,œÿø”žþ÷‰žþúÜþüe›ÿýš\— ›Мgš™–²Ž 7–k '«s°a®q¡q— š¤R¦ªèªW˜k‘S—Ñš¸Ÿº§Áªè§2¡$žÊ¢çŸ h¨â©¦y©­£žU¥}¬ ¦âœc–Ížd§5¨‰ ž0¦G¥ä¢t¦„¢C¡¤9«k¹w¼÷±'¨"¡â¡³¤5¦$¥U ’¡Š¥I³•È`»¡ k—­“È‘a“pša¤¬«׬C§7õ’õ‹2Œ–“ô˜ôÿ¦ÿªª©©ªU¤ÌŸ¹œÀ˜šž¦¦ ©–ª-«Ö©Яu´§M“HŠ«}:n^w o‹ U¢ ¨zŸþŸC•Y‡‘} „¨“(k¥b«‘« T« °¨¨¦‹¦Ÿ§¨9¬©òš©•™L•Ä¥Œ©=¥x ‡¡UŸæ£‹¨`¨¢ŸÜ“š˜zª{£1˜+ˆåƒô„A”’¨žì—yšé™Œ˜o˜„šäž™“1} v jw Á…Û˜!j¥ ~§ }¢ O˜0—¥›\‘ ”ߣ¢[š&‰ a §úv‹ü#}——Ÿä _¦À¯¸³­“©S©É­+¢F¡¦Q¥¹§©Y§ ¤H¡ ,–…žƒB†#e–†—Å‘ ‚ê‚<“É…‚| ‚0ˆlŽX”y˜ˆšȤ·©ô¬ûš"—z’#ÌŒ á™ɪJº‰ÆÈÆþÿÊü9Éþý‘ÆûaÆÿÂÿÀý«¯†¡ÿÛžýLŸûÿ$ûþ¯û;›üÿ>šÿú.ÿý+‘³ŒÖˆÌ„l„ºƒp‡ =‚ S† E o„ è„M†;æ‚™€€ ú‚ ï…©† (‡ († À‡wƒ & e–o«æŸÿŠ -‘O•úñ›þù°œýüwþý ›ÿý#˜œ”S—Åš&Ÿ­šV” uŒ 0Iž'§ö©A¤«™›ƒ òŒ†¥z®«ö¥£•=˜å˜šI¨‚«p¦t¦q¤¤€ŸÍŸr©ô©W¤y¦?¢+¦¡9¦Á¨²¥o: a¦§¦ö ›ǤM©™«V©É£ÅŸ¡‘ž­hµ¯¨Y£ñ¡Ô¦k©£6nœiƒ§¤´¨£˜ “kŽô©•œž¦˜ªѪ¨&¢Œ–Þ“±—’Ÿ¯¡3¦PªIª‹«P«³«»«Ž¥Ÿ›p—Rž ©«ɨ¨«H¨Ű ¸B­¤–$‡€Öx ëz …‰ —Ȧl¦©©»¥q–lˆ1–R ‹§@¬Q­¿­ ¥¬:ªÕ©±§®§ ¦ã ’£”V”#–ƒ¤æª@§{£æ£¦ï©p¬7©óPŽ÷Ž¡̪õ§vŸƒ–6›¥Ò¤™›_œÿØšl£¨6£âŽ ¢€~ò˜þ¹¥u¬x£ Bš˜+–È–”“˜•ªK¨  •ÈŸ¼ª›ÿþ¢ ¨‰§¨!E®)³²² «ر‰±Ѥïšn¡kŸN—J§©°¥»¡ï¤Ÿ‘9…¯‚q~ ‡ú—ð§ ­§\¥V? ”•)ŽŸŠ  ¤ŒÖ•›¢£®!«é•J… ²€ ¥ ÄÙ¢k²ÿå½^Èÿþ¿Éýÿ;ÍüÊýÀÆþÿ=ÄþœÂñ¿ÿ«ªÿZ¢þ¼žü‘Ÿúð›ûýõšüÿ”šýpšúî¡ý…u„É‚¬ƒ‚ °ƒ ´ Ì‚ Æ~ ü äP~{ãb€€ú„)‚ à 4‚³ƒ÷‚®ƒ å‡ ê²° ƒ‰ ƒ‡Š“ýü›þü}œýýõþûšúä–à @‘𗲡™’š [” §™úžœ¢ ŸØ›ûŽS{„ €œr§²¦ë QÏ›êšt“%¡|­4©ñ­³¯Wª”¢3› £:©¨§“¤ × hž—¡½£¯£¤ì§h¢§ž›P•™‰¤Óªݬ*¤š›7–ø”Ô™«ά  ¤Ÿ®£ºª`¬Ê¥¼š|˜f”P–Ÿ› ˜œ”»‘z‰•Š‚–5 í¨<ªª z«ƒ§#œÓšð ʧN§o©/¨m¨A©Ϭr®²¯"©Ýžn–ôŸ«©<§u¢³¥²ªƒ±ÈǾ¢š‡%ƒ"ˆŠ r™, ¨Æ©ª²§Ϥ£¢1£S¦ª²¬ê¬$¬ ‡¬ø¯ã¬‰§ÿ¨t¦cA˜æ™Æ¢„¢)¤(©&©t¥¬£‚ª°@±˜¬1 ?ކ–à¤ú«Û«K¨Ñ8¡fª¦´žêŸŸ?Ÿ?¡Y¬ͰL«tœy‘tšþ °¹µÊ C”·”d™ãa¥1¦>³÷¬$©¢¥Y§—¢p§j§ê³İù®^­>«(©bªò¯ò¨O¢“A—q•Ù—G«­°¥y£V¯=­q§n›e”£ˆÍœ]­ 5Åþ§½ÿ·§Ÿù«°§À œ ¸š _•k™º¡¸¥˜§ šq‹:ƒ ?„ 3—w¬'ºþQ¹ûVÉÿýhÊü°ÊüèÆýïÄþ‰ÂÿÓÀþ̼ÿÒ©þÿ`¢ÿÿ‹œý‰žûsšüýjü šý ˜üó”ùH…ð| ¦‚€€ ùƒ •€ Bÿ •} ž~%}}}#à ‹‚ ’ Ó‚ »‚‘ЀG€2‚‚ã†Wó™ P‰ õ‡Ý•(™ÿþ›ýþ½šýý*™þþô•ãŽn GŽÚ”•’¥Ž ¾˜Ÿ>§¨£ì¹˜«‘‡»s¸yì²·¢T¥éª~¤êŸ“«€Ùº¬±äª¡«P« ¤Ę±–¢á¬—±@ª#¥#‡  •žÒ %¥©¿¨Ê¢›Ò–Û‹>^™ö¦ʬŧd™¢;–užÈ¡Ê¥p¢Iž£#©e¯©¥Ÿï“&Œ¦qŽœ’5™˜þ‰ …@”¥¤©’©£ ¦"ª’£ˆŸ*¢Ÿ¦‘§à©[§í¨€¬(« ô¯ y­¨ô¥ÆœàÖ¢çŸFšŒ”ü­³ÍÊØÅK‘a‹üˆÁ‘ºž¦¦F§Ÿªx¦³ ¤ *¢§¦T¦Å¥Ω¼«ª¾« P«ø¬Óª̧û©g© ¦é¨/©+­N©Ø¥ù¨ç©¦£Ù©W°αø¬Æ£‘Ԍޚ.¢æ¦³«ŬZ£¼¡v¨¿¦h¡Ÿ«¡J¨2¨i¯M²È«j œšΨ'¼ÿ¿¾¹²`§u˜KЦ%¤n®]´ܵÓ­n«®{±®Ø­Ú°â¿æÂþ±Î¥ ŸÓ£„¤ö¥˜Ô—Þ—q”õ– в0®‡ ÷ªEµâ´'­V¦5£Ýž©¬}¹2ÀZº¸õñµ%´©© m£ *¢ªŸã¢Æ¥¥1¦c¡²›l ˜ › 뮾»ÒµúÇÿûêÌüþçÌýTÆþÁþåÀÿ4¾þæ»A¥ýÿùþþwœýÿ²üÿüœþÿœýq—ÿ p3Šý9~ z €¨€ K‚ ]ƒ ‚ƒ /‚ [€#~ÿ }G}»|Ä}ú B 0€ 8Ù€•€+„~º|æ~Ó€3™†  Ї P‹I–‰œÿýVšýýî›ýý‹›þÿ –9Œ &‰ÑŒ’Ÿøª6±#¥ª•å‘S 5‚¢wÖŽÇ¢’­ܲº¬ÏŸv –£ Š@€œ ½§R X¢¤t¢m˜§“¡H±µ³¿® ¯­# ¨"¡ä¤Û§ï§§† ¼™Ø”]„€:“좨®§„ Vš-¢פG¤¢¦¢ù£ò¦C¬®”®<¦I™’Ý’â—f—b—í›Ç’#‹Ê—–¢H¢IžÔ›!Jœ%Ÿkž±£ȧ’¨†§ß§©¨ «Û­!E¬ªªK©&ªߪy¤4››”Š|†…¯ñ«˜³®¨®òŒ]žúb‹ý_”i•ך~¢ƒ¬§Žž>šqœŽ›HšRš‚¥©ªªsª$ª‘«ê¬ÿ©Û¨Ô«3¬%°9°&°«Πš‰™øŸŸ§“¯ ® ¾¤ø›Û’v•œ•  ™+˜–œ›<›!žäŸ„ Ÿ¼¥ö³B²V³ ä´G©ÜŸ?˜¦¥·®¸©Ì«ž›‡…º‚™t¥P®"¨‹¥¦,¯ ²µϯ5°H½ +¿£[—;’Ø¢i¢¾™Å„MŠ=–Ò–•‘Üœ‡¨U¤?˜„§º°p­-°V¯°جɶþ½%¿úµ°9º:ºº²{© ™ª ß«­¨.®&±¯2«¹§ú¡PžR¡ü¥ k¥ °¶þWÆûGËýÿËý§ÅþþÄþýÀÿ|¾þ¹ÿþï£þþÛšþÿ^œýÿ3ýþ¤šÿÿ°–r‡”…“þ‰Qym{Àœ‚ À‚ у r‚ ~€÷}ÇP€Î}­~áÿµ€Y€€¾€r€ž€Ù~"§ß…ØŠnˆ @Šß”ÿ‚œÿü¹Ÿýüažýü€žþý’™E”’ ’XŒé‘ÿ™…¬Ųj±°ŸPŽ#v– • `‘ ‚ƒ ¿7£ê³ϵe§k”ñ]§ (¦… ¶¢Ãþ“6ÏŸ5°ë³=° \® Ø­ ¨êª»°æªr¤Ÿî–bã„}€5’9ž”¨ì&ª™©c©«¥¥˨,¨4¨<©H«º­®l­*¥ŸÁž†¥O F‘‘•!˜ æ£ð™ ƒ†!X†ʼn^‘Ξ¸¥Ǫ/ªD§Ƨ½©®ªª! ª5©U© ®Z±.¬.¢ðŸü™T‘â©¢­–$Kˆ $‚ ¶…kŒ‘˜œ–r•w¢±¯x®‚ž„˜8–T‘ßø‘œ·© ª7©­ªw¬f®÷©£§ C§ ⪠8¬ «®(¬±¨ë˜ŠŽZ–†˜ߣ©¬ ‡¬  œVR,—®š šø“®‘G‘Æ“Iš4ŸIŸÚŸ¢£²«DZ!®­ I ”´(—Ÿß Ü–šÀ”‚¶…L“¹—±˜â™X–ÉŸœ¦ì­#²¡¦ ÁŸl¡ X¡‘ýŠËŒn™Òž®Žg~~€Ã’N TˆQ‹•–Ü–D¢Cªª[­ƒ¬.ªM¬¹±¡ÅãÆɯr¨®´]µKª<¥ ¶¥ ^¦-¨¬²²{´º¨Y¥9¤¸ª© ð F©’´‘ÈÿÉþÃÉþÄÿÒÁÿHÃ辘ºM£üÛšÿÿx™ÿýu›ÿý7–þ¿Q…wŒª 3~ ]~€ÅŽ ©‚ ) ߀€¼€} A~ƒ~Õ]€hµ€Ì€Gz‚v€]´}6jM†½ŠK‹‹ xkšü±þúàžýø}›ÿù~•™‘½ x ù‘·™,«¶®«œ “ ¿ Ž¡ ”™ # Š p”`¢è´·Ê¥ ‹È «œU„©‡q‹7F¢ýª<Ÿe–í’ðŸA¯p­äª Ǭ Q®a­/¶Tº­ªy¢Ašæ–’èÚ–žŸø§¹‹Ãø²¤ª ¦M¤ƒ§ö«­ѯú­ã©Ÿ©†¬˯•¬ ¢ZŸ9¥‹¦‘—8Ú•“š ¡v¢¤•žƒw By Üjˆíœ8©­”¬%¦±¥á¨û©R¨ù§<¦¥©s­¦°”¯2ªñ©â§µ£ɦß›Cˆ!~ òŒG—¤Ž‰”Ÿõ¡úÌ¢1ª ¤©©–P‹†ŒŸŽ*Ž \” œ© ¬L¨"íª!å« ¥¬ €©¹¦®¦l¨ ™¦‡£i¡³¢û™„L‘‘–\™   Ѫ äª ö•œ‡ –™Å”ŠäŒï”L”t™ì¢ù¥ŸF•½˜D›«¥ˆ¢ùŸï–sˆLƒ»‹¿‹ëŠ„‚{à‹„ Œl‰%‰‹6’vœÍŸ.¡•©èŸ#•éŠï’ˆ>‚ñƒ‚Ša‹ …ˆ ؃{‰$™‰³¡„y‹¾?–c£”®2¬ˆ§_¤ ¡—¥u û¸íµ¿¢Ó˜è©8®©ø ÿ h¤ôœû–;“ÏŸ[¦”³¦§D¥« R§ ŠŸ ´ž£¯YÊÿÉþ­ÃÏÄvÃZ–¼§»ÿö¤ýÏœ!š¿™ýLŒü%‡{¡ÿh{m…n€ -‚‚|A€æ‚ ð‚ 0Ö€,Í~„Ê€7~럀 ;ý€@¨ƒ * ~Ê|Ä}M€ ¥€ ªÓ†û$´Œ˜ÿËÿú­žÿöˆ›ö”þÒŒJ…’… ‹Ä‘)•ž «(­ƒ¡ úœI© ö¤ Ö‘º† 0’ D˜ΨFº×¶n–½‰óˆ jˆË~YƒàŽÿ”\£E«ĦQ¦“¤ œmž~›$Í©¼²¼F¼½·Ý¥ߟ«œQŸPœîŸ$¡f©)­U¼Ä•±K¤¬¡~¢¥P©׫ñ±×±©R§Ó¨s¨Õ§è ð›¢j§eƕەƙòœå¡™ã…¶t pv ƒ„ѰŸù¬ ¯©ʦð§w§àªú¨¾¤“£ ¥!£Ù¥ù­{²O¬ã¤ì¢Ø¥ÊŸó‘F¶šf¥§ËŸ‘¤[ª~¥_ ê}”&ˆqƒ ˜ŽŸ'Ÿ 餤𤝧§ ª!*ª!c© §b£ߪz¯ L£–ÿ•šÐÛ¢>¢õ ¼Ÿ³£”¬6ª°!~OÌœs”€•{ÁŠ%釖U¥ £}•à‡‚‡%• B™I“fŒo†a‰Ÿ‰”7Š>†„º‹´Ž•ž‘IÊ›%¢ý P˜±•X’~ <|ƒö}9€‚ † Mˆ Ö‹Ô—Q—ž‰?€Û… ƒ'‘s¤¬¯]£Þ - N¡ƒ£ŽŸ³ 7¡d•ä“Vœø¦—°‰žÿ©ŸE˜î‰k‹ “gŸ›¨ɤ¤ ¦R§ b¥ •¡ A¡þ®£Æþ<Çÿ_àÁÿNÃÁÿx½»ÿô«ʤ¡˜–Š»þ&§ÿv}F€ ê€  f„L€€(v€ C‚ ¦å{©}ßa–€3€I€n€ Я€ S Ë€€ ‘ ! ) €³~ƒ¼ˆÔ‹Œ‚›ýsŸÿ÷žÿù•ÿÿŸ1…WŒ Ü’O•k’ú–D›$8˜\˜ › î• «‰ 7‡ ‘ Á’ ƹ<²µ‹ $|žˆ˜^„mx q}罙Ϡ˜®­¼­&±¸£E•V‘È“ ž¿»"ºʵU¥¢™"›¼­›ï•I— e¦§­`³„º¬-Ÿ£¡ w¡ ¤€¦¨”¬i®K©¨¤ܧ4¦W¦¤¡Ö£K¡¨–3=b”œØœŒjy Lu †J˜2©‰®Ä­0ªi§£]¦§¤Æ¡Á pŸ`ž#£k«˯~¨®¡ š*¥§;¥"¦ ©­êO¬)«]¬9¦õ”JeŒˆ˜ ¥±æ²4¶­¢Ó¢Τ|¦ë¨¨ I¦¥¤ «ð¯>ž4¹‹ªŽv—㪊´õ¯‚¦“¤Ψò¨Qw{·‡P™ÕŒ0v ât 1…Ɔå’Û” ‹Üð„U’•ž“R‡é‰Š„…¹‡ +”ʬ ^˜ÿü›œ•d– —æ‘5…<–Þ ò¦”žŠø‡Б“r“¡’Ï‹ï} ~ ™† Å” ü•ñ—ª=š!’û—¨šSž 4“Õƒ•Žßœxœ{•ø È­ 6¸Ö¸y£Ÿà•ú‰”ˆ“|¡“šÜ– ’Al“û’®”V›T™'Ÿx¤ ›¥ i£Ù¡Ó¯Í´ ØÂþÄÿïÂ|ÃIÂGÁÿ©½z¹­ ¦ƒ¤ ƒ’Ù|iƒ2˜.š0O~Ç ý€ € Ô€7€ ï É€ _~I|{j€>€ À‚wvð€ ~~  ž€ C“€¼ € ¹ Î~€z˜ƒŠ‚¼„X‰”þ™žÿùä ÿùN™ÿ0’SŽ Œ˜±  ŸÊ• Žò’S’K‹ †˜ ˆ "… Ï-Œg ÿ¦õ‚}x“Œñ—ˆš ¯ŠFƒù:—¡©­÷¬Hª µo«y›*•ÿ•ø–úžù ’® ® m’M™²žÛ™²—ˆƒ–¡Þ­á¿ÑÀ¸­¥žwœ Ù£#r¦`¡Ƨí¨®¬ «Xª.§<£Ü¥¨Ò¨ͪb¤h’U†ʃò…ÆŠ—”®™‘Ї ±|‰…ù™Ó©äªk¥M¥ΣÍ סž;œ ,= Ÿ¡±£z¤Ÿ¡\všeªZ«r«­.®a¯ %¯Ç®{«^©³§Åž~—°ž¦ ¨´Ô¯t³·ˆµû®î§%¨Q¨M¦·¦i¨Fª8¨á«ƒªùŸʘ<‘<…Ýî§ĶP¶ج¤=£Q£â•ÌÏ‘˜•Œ‡€í”ƒ“šŽÈœLOŽõƒšŠ‚™b¦MÛ’×—ÇŽª‹Kt™£"®€«¦3œ\šÊ™Óš‚œþ"1 ¦þ¦˜™†ĉXŸ¿¡†ž§3š³Œ©‡÷“¯¢ô ÆX›À˜½˜!¼¥°­`›Iƒæ‚u’З˜óžK« MÏ qÅͬË©) h4|Þƒ ¾˜Éž¾™Ü5˜™ëm¡tŠ Ù“ a ^¤ À¥ó§K±ÿß»ÀþòÃÿôÄ!ÇRÃÿaÁÿk¿]»þP§4¨ †› Šýxšx}}Å})_|} ²€T~—€ a…  ”‚ 8€ "}…~Ö€ Û‚ é‚t€.‰€Z‚€ æYT€£ ]€ ||†‚ ª‚Ѓd‚èþ¬™úžÿúëšþ*–i˜ )œ`œS—†žž’ Œ^•/–Õ•„Iˆ ¾Š‹ È þ… ~çö„y’PžQžj–kŽĘæ¤p­‹©û¤L¤¡lžòŸ„¢¹žl”ò”? <ŽX™£Øž¸“òø‘ïž'­^½”¾â°¢’š¾D¥ŒªÅ»ò¶ Щ1©©P¥Æ¡¡7¤ê©à­;¨æ ´–|‹ …O…¹‡UŠTT’•®’ǔ؞A žk¡W àž ¢ò¥¡‰K—И›˜¸ššœ›Ÿò¢¢‹¡b­u­Ò¯²0°º¯¬–§³£¾¥÷«_§á¤ß°6¸P¿·± V± O±/­i¨ «Rª—§r¨.­\±ù«ç¨í¨ e¤÷¤ŸŒ[Œn£(± +µ ²/© P£Þ  –å…'~:œ §Æ–ã—– Lš]–r¤¸¡¸•‹ÐL’dšO­ú°;¨á«Dž ž&šˆF¥òª­†­k¬a¦ &ª¯ݶ$¯ߢÄ’t†¢˜3´¼´v±)¥À ¿™kœÿŸ÷§‰¦–£ƒžΡgž$³ª ²5®ù ¡‰Ê„’È——žšs™|¯ ø­¸«µJª—ŒŠ ‹ û› ó®õ¨¨V¦-¡üå•’¼‰ ™ Äœ Ò¤ P« ª/¬÷·õº‡Áÿ3ÇÿäÇÿkÃþäÃþtÁý··xžŸ FÓùwZxjy}}P~Û~B~æC€#€ Þ ô ø ~ ’ V~ `ƒ Ý€ ó~ù~²€a~芀µ³ì‚€Å‚ X‚ ·€ {ÿÓ€“‚o~}Œ|wþ!™üœž`œ–Ì’‘Ü \\—ñ™øœS˜ÿ› —y” ®Œ ’ P„áx ¹w -u“v%ŠÆ™ L¦ #¡Šœì˜bšl¡ΧסàšŸœ¹œv¡ú¤~¢Æ–<ʆ ‚„&0 …¥H¤Kª £ž â¤!¨£Öª«Ÿ¦¢¥,°æÂMÊ#…Ἰ¦¦¤YšÌ——Ÿ^¨~²ª½(½<§˜ý…8|Ž€ÛŽGý¦Ù§Øiލ“q›V¢¦¥i¯˜³™±î¨“–x‹WŒ.–/š`œò£&¦S¥¦4¨ô¯ð´!°²¡«º¦ðž£–¹™ä¦'­N¯†ªï®7ÀªÆ½²Ь Q® ©8£>¤'¥ Z¥£ ¬ɱY®ª¨(¦N¦'ª§Iš:–m¥’­ ¯ !å± #!¬ F¢½›è˜#Œk–c­Z§ ½¤Ù”ŒŠÜ—$žÚ˜áŽÍ…÷‡Û,©ù´ä¶¸¶%¬§¨²¥  1›4“s™E§Á³5©{«‰µι¾µà¬h–À…6Š¥§º«¹o°ƒ¦œŸ¿¤« ª¦ ž¨¤ä¥¬¥Öª÷¯”¨Ř憤…Гb™˜C’’‘ˆ •ª²¶t§’mÝ”> b¨Ož÷£ï³â§œ–Ô˜'•´•†ž Ǥ:¨ ÷¬ ¨ È©P² ¸9ÀÿXÊþÊÇýéÈüÿ»ÇýúÁýw°†h˜Їª{VyâyÁyŽ~3~Ò~ 8}$~Þ~E}Ì€C  4 ‹â —‚ ƒ €í€G€V~‡b~ ' Ë„ ©‚ I‚-~8€ÖOŠ€}Ü~ ˆŠô—ÿ휛   ¡à›1”Ã’<•Ž‘3‘ª›ç¢¯¦"¤’¢ KŸ ŸžΚ µ— † D‡ :‰ é‚+ h“…¨¥¯q¤¾£ùüš«R¡As˜Å¡ä¢¢­§Y©A£zœÔ›K•0„ÊÖ ð©° ´­û¦¤' $l¢š© Χ™¦O«¬´½ áÖæ º‹£ó£¼¥á…šø¢§+´¿Ò "Ë­°q¤ œú“»Œ£‘𙤠ª^©"¡Ö”¾•[¢Ц©ã°¶*µ ´¨g—B3–õôžï 1œŸ†•™©ij÷²¨u¡[!®£¶—s¢æ®!¢ñžy¹ŽÉ %«*© ‹¯ M¨kš”•g’g’¶ÄœQ£άu©O¢ðŸ£¦§¥¤ݦª 1¬ ¡° « 6¢Ç›Æ™C“‰iœ#¡<¢¼¤Ç’Þ‚h‚¿—Ö—Ñ…do_t æv Þ“Φ¹´ɳŸ«{£» J‘Õˆsz m‚\“H¤Sœ€¨bµï´¡ŸšÕƒ "Ò{ 'Ǫ¸—« œD å¥h¯ï´^«› –‘Fˆ´˜ì¦3«®İt ìŽKy.~ȧ•î” ‡‹™¨¢k®Á·£•…fƒn‹ðž™™è™ݯZŸ¹˜+–„–O˜»¡ f¨Ϫ   ãž ’ Å´\½ÿþÂýpÉý–ÈýüîÃúÁæ¹ »ª‚bœ І û{î|}{@|${Î|~|³€/€–€¶€qv‚ n€ /~ ô€‚€ € ·æ€‚ Cnb|Á_…ƒ a‚;ƒ £ƒ†ƒY€ÿ€¥ ÉÓ~Â| ;‚ '“äž·¥ O§Èž“ˆ”gŘ•%$¤H®¿¯;« ƒª¨­Y§€ ¼’€œÊŸ —šf‘ L›!©“²—®b©è¡'šª  ÓŸ`šfš8¢÷¦¹«T¬°9©ì¤”ª^ªÛ•G–£¨²©§ŸªÁ¬|«!ÿ§E¤Õ¥þ©¸¥b¨,°³d½'ÀN¯¡Û ¢ø¨s¤ý¦d¨« B¿½Â賩m¦s¨Î¥|¦¦Ç­J«º©`©h¤£ô¥“¡E¥ªj©öª R­Q·5¹;°\ á™˜¬ |¤ñ ߦû“Eš£¨M¯®¬¤¥›\ê“ ™«”9–; ©žF–ùž0£àšµžc°2©‘>ƒ „‰“Ž]Ž~”|w¡2”%ˆzŽ šk¨Àªɨx¨ Ĭ ± 4©dŸ#Ÿøœ:™×—Š”Œ–¼¢¡–„ z©–+ƒ÷n©m  m 1v¬˦¦Å™•k‰d™à«€i†÷‰QŠš”þ¨¦Ò•ä.€ ®{”⪚« ™·‘ž­Ý·º±¼¥d˜êŠ—ƒ ”¦8¨I¨Ѱíž‚)t…~¹hÝï‰%„–ž¥™®B°££†©v zuø•PŠS|• ·B‘›”ø“n— * -  ÷œ “ êŽ N“ z±dÂþÀÆûjÈýÿ¿Æÿ÷ýÂÿû0½þþ« é¥ C™<› ýŒ dzA{D|yæ}²«~#~àxƒœÁ=€ €} ®~ x}þ€ z ]G‘ Õ‚ ¿ S}}êGD%p€°€†ƒª~$~þ„}m ”¦R¶÷®&ᓯ§• ‡— 0“ 0šì¤«M°Ú¯-±’°±ÿ9¤ŒŸ"§ È­ ئ¥› –ž¦‰²o±1£«Ÿ™™ÆÚžÇ›‰™še¤â®£¬qªD«à¬ -«!Y­!M±µ¤šcšhžš •5œ‰§Ƴ1©» ž2£ ¢A©Ÿ¬ ±@¼®žÜ™‘œX£â Ñ¥¨qª ³´ºj±¤«6ª!(«!H¬ˆª{©H®â®Ѩ¹¦†Ÿï ž3•Ô§–¦O¢»¥ª†¬­y`‹‰¢¼«Û«s¯K¥ªT«µ°I¬e£ö™ô‘øœ¬¨¡Òk J¦¤Ÿ&–”š”ú'žœ‹§†±d“’–÷Œ/Š€ >p øy ßͨ®ê© © Þ­ ø¯<¢¨”!yžµžï¨¢É‘$ Ÿ£óœ0‹í|Ê‚?‰ì‡½†Àƒ|Wn ’x‘=”nˆ •ü Œˆå|ë•% øœ•Á€EwîƒøœŒŸß‚ˆ¦€»}!’þzA’ȉш¸Ÿ•´‚ºª3œd”À*’M™ÿ%¡¯¡¿–î¥Y™¨…°tÞ„ ÓÑJކ‚v}P޽›“¦#¬Ö§ˆ’})y ¶V––׈`ƒ ?wHÚ•s’” ˜ • ©‹ S}€„ ª¦‚ÂþQÆûèÃþvÀù ±ÿ)¯ ’¨ ë¢Ë–¼— Ž&€—}§{n}i}}„A€ù~J ‚ €‚~À×Ö~Çz Â} 4  Èz~ J€ , œ~•}¢}3| ;~ 8€ s}vI}LwÜz ˜±„l†_’O³ =Ä*¯:—P‘ø A ý– „™ ±›£žÅ¥ ¯ ¤¬j¨ ½§üª!¥¢ ®© ê­ J« T£@ < ï¢²  ü—¶š„”ºœU£¾œÍŸ›¡Ä« ³ ¡ל¦¨æ°!™³"*¯!¦¯ä­y¡Á”j‹œŽù•¡ùª  ¥tšõ—ŸF¢¢J« Wª·­”¦”Fœš[šÀ™Zª¬L«²ɰΰ-¬S¨’¨#;ª #¨ ̨L­1«š¤è ’ïŒ:ò“¹Q¤¢¾¡U¤¶¢ŒÚŠ…·y€ïšå£צS¬ίt±Ù³w²5«^¥$Ÿq˜Û¡ì®m« ª4®0±¨÷¢Ä D–z’ –^“-œ`¢¦¢š¢ãœ’ÅÚóÕt Ê{ ^’²¨°M©<§h¨˧j›j!{—uŸ‹¢¨|¥Š”Ë‘¦ ó£MŸÚ˜ªŽÚƒ\„ˆa¤´–‹|¬vé´ˆP†#÷žö'G’ø"ˆ~ ž•¬Á­å¢ä‹á€ù„ž ¬˜À†;ƒ 5…z”ÿ’•PŠ_~戼šÿf«ý²Ê¡Ašd˜{œ?£žvžmš<‹–‹s–Œ†È€ê‰ c’ ¯”×—“ŠY„Š4‘æ›Э±¦”A‰ —ˆßÑ£‘E Tx φ ˜b—@—p• µŒ ]Š{R~†† ½ŸèÁý6Âý­Ãÿ_¶ÿö£Ȧ •§ ¢¬—˜4Œ=×Î~A{Õ|6 €ú¶‚ ã ÷‚³¨e€“ ~ {|  € \€ Ã} `¯€_€ q€ ª€s~’€ ß~A}äy U| ={ I ~ ’~ 4z pz Õvƒw†.’Z¢ ‹¬œyŽâJŠ † k™ ÜŸtž.œTœ Ÿ¦ ò ãš z ?¨¥E¤ ¨ ¨ Ê« S¤T¿›®œU•Ž‘ “™ ’–Й£Q¡P£’§\«œ®>˜n§Z°!‘´#í­ í¦c¤€x“ûŽá‘õ’Ñ—r¤^¨(¢v›á¡o¥É { Ý«ªͧé¨_§¼¨<¥žz©]Ç ªÁÍ®ƒ® ­è®;­Rª²§"J¨ K© © «Õª]¤š_‰i„ú”ñ·¡Ô¡UŸš¢@¢ËžS†HxPzŠuîzé#x˜!ɘtž<±г´´K±7«©6¥”¤ý¨*¯¯ȵ6¹·Õ®î­­\¤Ä£s¥'—¢š ˤj§¿±±Ѥy˜ïžl—ïg‚ž+¨F¬œ§¥ͦ[ž…’:‘˜­£Ô¨f§Xž©—,™¡¹©ôªY¡…£0–`—°ž˜µ¼ÿ±µÚ–…—~Cˆ‹•¯žû!º”ÿÒ€ xšà¯H³É­xžA›9—ÿ,¡þ­ÿ¥À˜ˆž šD¥™´ŽȈ@“}—˜™ ˜j¤ƒ®4¬/¨ k¦èð˜9‰› T”„”¶“A– ë§W¨K–ÿ¸•¿±u‘2¨µ©µ@¥û¤ Zœ¤¦“§eŸa¿…›‡ 4šO¢*¢·œþ• ¯„ €{ Ÿ€ö€ 7›l¸ù¾Çþš³U¦µœÏ¥ ­£ GŸ œ “™7Ђ‘€Át~y{[{Ð|l~÷ ‹€¼ìŒ Œ€ ~ 〠ဠo é ð~½€P‚ VÊ~Þ€ û}7~­~ Ay ß| I| €z ‰} V|Hz 3}\€lCˆ^ŽÊ’?†}ˆd•“‘ÿyœqžß›–9“ Œ–‘ŽU‰‰— Ô§ ê *Ÿ‘§ !¦¸¨ á¡pŸ£Ÿ˜ÙŠkˆì•©šÀ˜6ž)Ÿf Y£Þ¢ä£@›Ur¨y²þ´"ª ¹žª™"o‹¦’Ê™Ž›¢œd§ª¥£¤¤¦w©7¥—£"©ñ¤"d¡™¦˜­(¯¯© Ǫv±QȱÄX®b«#©!««!³.¯â©!¥E£õ¨X´n´û©&˜‘ôŒËŸÀ§­¦‹¤Å¢€¢+ ¨™¡ˆ |( “K–0—œ“¨”i—êµu¶6µ7¯̪ˆªI¨o¨K©`«P¯ô´U¸@µã­ « P©q¢p¨Þ¬X¨„¦Ï¢Ÿñ¤X¶Zº+§žR ±£"¥O§ñªͰÏ®W¦¸§û§ÄœìŽÍ“#št¤a¨©£|“V”¢ÅïÁû©ƒ¦{£ƪ°̸œ»¨³b§ok‡…•R¥å¬Å• ޶ŸA±¸;±ü©o¡¹šç¸¨-§Ï©&±¦¯µ¯[ªˆ¤¨¢<£4£‘O… •}«üU³i¥˜¢«Tµj¤™ a¬ K§¦œ! ”(¤?À2²ä¡‰ÌšÍ—q•à¢÷±¹²µ³G®ä¨ý¦  £ D•§ƒš†•×W©û¯¦¤ ={ ߀ W æ“ ÿ¢²÷é½þù£Ú—ÿŸÖ¦®¥%¢ ÍŸ¿™ Ì j~ Æ€2‚[|}Î}µ{.} ~ ì€.~ìâ‚  z 8 È Ü€ k } Ñ~·€€‚~ú}ñ€] ~ }z œ~ w} âz ¦| S} ~{ ‹~ ÌÖ„†G -ˆôм•CŸ? ¤¦¥ŸW—=•m‹áŽNŽ* ¨•—°—)¥Yªf¬u¤ ¡hŸ€œÔ“µ¨’Pœ“¡Á¥6œn—ñšH—k—G˜œ3ª¿²s² ¢© ù›3•‘Ö“ò—ø™0™ϤX¬g«0¦X¤¨Ǫ€§O¦̧“žΚ/¦d«â® E¬ ܰS²ê´"±Š«¥s¡ ñ§¯=°P©õ¤j¤ ¦ý±5³©U£*›q±õ¼x²e¨¡©ž ›ú•÷‹I‡ šâ¥w«ˆ¬Ä¢Éš.˜µÿµ½²º­J©©ª&§ U H¤2§˪Þ±°cª Ì£ ‰š‰’è©z¯Õ°f«¥I¡¬ê³KŸM˜˜ #ª ­¯Õ³ެã¦ñ©,­›ûD• ¢اQ¤!’fŒm’U§pÄÒÂV® §T«´´׳>²¨«Œ§½˜D’›ô¢¤±›â«¬H¹’¼9±¤â™I˜”•rœÞ£ ª˵²¹y½1ºê¹·²a³U¨Ä’ž€ÕF¬¢¹â²)§4£$¨̰õ®¾¬›»¶¦À¤š´€½Ö³¥¬ ­ȨO­‡¢ñ¦C­6¸·.»;¶3±\ª¦¦ \–<‚F‰—ø›X«Ú¹ª’ŽÃ{ € %| ú„ÓŽ ýŸ™Å„n’ ¡æ§\¨r¦ Q  Jœ #• "‚Ô}~$‚³;|mwdz {}l€ ®~ F€  ~ ·~ ±~„~ È~ } J€ €€Gµ€€s&þ~ ™} {} ˜~~ñ}A~ ò€ <‚ñh…•Ž uz˜˜ úšU¢¥á©à¯ê­¤dœÑ“‘û¤ T¢<¬†«‹§§í¬ñ«I°X§_¡¯¢m¦ž¨‹®@¢y¥jª´¬¤# ˜Œ§‘¡œ¦E¦b²A³¨à °™~˜–C–ë”ä’î¥]³°ã¥ïž+¢§–ªå¬¦ª¡pŸ«®¨­~­ ^« 7¯²²þ¯x¤? §œFžø©®Zªu¦†¥á¦¤y¢…¤ù¥À¥öª¿Çﶨ¬D¦ ¿A˜Q—Ô–ÿ夛²Ú¶÷·I°¤if·0µН¸¬»©â¦ÑŸ‡”C™Ÿ££=¥Áª#¬ j© ?›¤‰ÿƒ:Š÷ ª}§ «‡ª{æ˜ –‹¦‡y”Q¤[§ý§«©¤žù£g©!—1I“@˜Μ:¤æ¤•׎ G­µ¸ºµ{§âŸÖ¤­ƲݬÞ«;¤[Ÿ›—›’©™“œÿ𝠝°˜¹q¸¹¼î°{ 5‘•ˆ˜¨œŽ£Œ¥‚©á´(¼*½Z·²ñ¨c§£šI‡k—¯ð·¤®P¡Æž¢R§¶«†°<³ݸ°„²Þ»¶O¬‰²ï«ƒ°Ÿ¼üºÄø$¡³ÿ|¬—°_µE»ž¸r´_¸¬@—¦‰ %˜) —œY˜ :¦ ¡ì H{ | ~ Ï‚  Ê}Ö}i‘ צ C¨÷©¦Y  K ë•Aˆ |#{ ^2‚~åzjvÆx C~ …} ~ –}}â~ ~~Æ~§{ ýy 5} ê~5€u€ü€ §×€»‚ `~¬~ i} Ê€+;€ ~ € r€q€º‚Ù† $‘ ­”ÿ éžÿÔ¥ ™ ~ž§B¬k©ø¬ C˜x q• ¬ ÿ³ö¹ñ·å±H³¥°ͯx±ѦüŸ©f¶ûÀ—½5³¢³M±h«W£ Ÿ{•i•~žÔ˜iŸà¬ä³Õªh¡ì”Œ’ŠÏŽ–Œb’3¥(´³ª£¼™¦šä¢ÿ©ú­¬Y¨äªk° ±!¯ôªz­ÊÇ Ç´°ì¢žª–]˜ƤÙ¨ˆ¨¯¨ñ¨K§6£Šž é£.¤̧#¯“¶¡¸íµ¯Ž«¦¼¢• ažºž­§`³|³)²"®j¤€Ÿ#ºÙ¶ü­ 0¦ ¡¯þ–}”Ÿ²§–¥}¥˜§ ¨»¤Ù›gSŽkˆG’˜š “±9 ¦–²ˆÖ±‰Ã~  {  ޏŸ9¥;¦…¥À›üŽá‘Κ±·Œ,‰²ˆ\† WšÊ¥–¢'µйn±S£—“6“DŸ$­Uª¨ ”œ!A”¾€~—Ù™E“`¡ »-»€ª»µÆ ›“Ñ‚ å—¢•­x§8 †¢¬ç´ð¹¬6¢Ò”Ç¢` þ””±¬O°À¬™œ­”ó™? m¢õ¢°š¨"® ¹Á³a¥/¤Ô–„ž™ÎøÒîô&½û&ø£¦²GÀÿػڱÿ·E£ ä“d Á¹ ›ª€Žˆê…Ï„ ü| | x{“~„~ ‡ )— $¤ (£ Ô¥ ¥ a  I  ™ Š E‚ ¾| û{ *} j}6y ÐyL z|­} x~j~}Ê}D€õ}‚}Ýz Ð} }Q~8H C YÊC}Ê~Û~ ˜} Yf} j} ¹|Õ f€½€>ƒl„ ¯Œ Ä”ž <¤ "– j— u¡ £©æ ¡ –œƒ †“É® Ù»ÿb»I¹ò¹•¸«¶ã³ÿ¬¤¹•ß•[™r¨C²zö׮ä«^¨§¢´ŸGšY™Û™Ñçš ªg¶h°œ¦H‘’| ˜v ™~Ü{•ãš±§*«¤Ü›ˆ”SŸ§Z¬,§¦ ª]«N¯,°ô®¯+½IÔ „Äã¦@žožs—–ù¡ü§¥_©ž¯"¨e¢4¢¿¢’¡Ú¢'ªªH´˜ÅÒÀ¶g«%¤Z¥ ãªç©õ¯ã¶^®_¨¦šó•2³:´“© #› ”Ö„“ð«÷¯]¥µ¡¤Y£4ž¢œÜ CœŽ’)™^”¸—’šÐŽ¥‚ ƒá‹6c‚ ô•|¢ž©E©Ö¤ ˜œˆ͇ÔŒLŽÁ†¼y ê~ ,’”¡ï•±ì£›¸6¹~­"Ÿò‡…†¡š­~¬®£ã’h……‰Û–ĘP‘Êÿ^µâ´!› Í™k’ê‘­|‚Ÿ’­‡§Ÿ£2¡y¤AªG±[¡ÔŽ…™%¢Øš2’˜ãž dŸ ˆ™z‘í–=›lžê™Ý‹<“¡ º’Ë · ùœ “3† ‹wºýÕû-;‘ G "²þ jËÿ RÌþ û±7Ÿ1“…Žš} e@“½“ -|¡~p~ « { Ý}i pe„ ó™ œ ¢› Ÿ *¦   ŸŸ =› ÐŽ Ý‚ ô ¶x ñz ‚à€´yz–{L{|C|A}-}æ€(x{8|ß}p}K}ñ ‚  é~„€—“~Ø § ƒx Vz Œ~­€ëƒGƒs~ 0ˆÐŽº—mœ ¡ 3 t™ <š g™îšk€ ÓÒ‘­ Џÿq¹޹µ¯]µc´V¶€«<ž“ \‹2„¨‰^” ´š‡šü¢Š£6¢6ž0œõ™'—u™í—H ÷¬—µ³&¨ÿ—@å| ‚ ’À¤ì¬R«h¢f›Ö‘ˤ9¤µžfÁ¤ª”«ϲ!k°"_­|¼ìË J²þ›g›Ÿ¢™›š¦ –¤¤¬§ɲuª§¢vŸúšÙ–ö˜(œ¢Ž«q³¡½-À—¯¨¨ ž«$,®#߯ ë±²µº¯V¢sš‘øï¢°ü¥ü‘âë–S˜¤¹ÅÂ`¨Áš—o9•¡Q©v¤‡˜ð¦–°§å§—V‰„p… jŠêš:¥A«K¬9¢­šƒú“<“S–°•û ‚v‘8ž–:–짺·Ú¸¶¢ƒ'€ à˜ ´­™°¢ÕÅf|«ƒÓ“ù•õ‹ H·œ}˜ ª€¼y å«†|™‚—§Ÿôr£è¥†£Ÿ×  “Êù†^‘¿›ºš¯ŠŠˆ {”{–ÿ›œJ›œ&–¿fŒx  [¥ ù,‹€‡‚ F„¼‹«†èˆyÊþo©ÿNÊ[Ü뫬‹¬‰ ‘\ŽµÌ‘,‘¢{C€7Â| z ó|˜€ ¡ƒ «„K“H– :— Ö– Ñ›§ ¥ ž "œ ‘2| | Ôx ©z ~~¢w0wÓw9yåvxwŸwR{Çø„â~¯~%|*~ ~‰£€Ï~÷~ ‘~ÌyÓ~|Õ€›€ 1| {š~A+‚y‚  ¡‹b’X“ &Š I‘– ÛŽ „Õ‰ º~ Áv ‹ I–`ž ä£&¨Ò¡n¨A¨ ˆ³˜¥-“ | ã|×|"u v Ayƒ5šѦþ¥iÉ—6–ã–ï™Óœ‰ªQ²§³ ©æ£МÇ”.°–⛣¥jª¿£WŸ œ˜ö™‰ Ÿ÷š€’™ÔdŸ•£ß°Qª գ垖­¢W™nž¢d ›ÊžS¡›¢N§è²=´D¦›Ý’([Š/g•ßš—P¢¢¢]§ À¯!»³"ç¯#ݳ!ô·T¥¸öˆÝ‘–ç«ÈÃp­QŽ$¡j¥§«$¼ö«™²Þˆ2”Q¦í±–²©®ñ¶¡«R¤”–ÂŒ’h— Bš T™3œŸ£ã©`¬f®º¥¨žïŸ”¢ ¡LŸ( (¡—º˜¢cŸR¢qª*¬4® ¶£ € ×} ùšO®–±rª¦˜+Š´‡Šˆš”@–ጠˆY–EÉ|$l ؃|Œ|aFš?—Ü“—ÄמÜYŠH®“Ò—0ž*šÍ‹ôÚ‚ð€ 5 •|¡ Ѩ ´¨™¡_¡C’ÓƒW-ˆƒƒ›‰ŠpŽ ‰” P‰Çr u Æh .vŽ“¨ œ± ‰™ÏŠŽÒ™ƒŸå”“+–Ò‚P ¦{ s{ Ÿ€ Æ€‰‚ ë‡ ä– æ™ ¡™ Äš /Õ¦ <¢-› ò˜Y _} ^v Ãx —x J{zãx ¦yvxv{t†vuJv©~Š€ý~Ñ€”zûT€5Ý€’|^zŸ€«}€½~†~Ö(ð€ ~{ Ù}e=‚@Ê‚=€ Z‰àŽ”é— ‘e’¾– cˆ ny σ ê‰ ÷ ƒ{ Œ€ >ˆ@’Ý™x-›b—ƒšj¢{™€Ùs™‚ †ï{ u \zš‘ª-¦ãžÅ–ϕڙæN ²¯G¶˰ûŸ&”š=—…•­Ÿ@£;?›­”Z%”›œ'¡…¡M–Dk‘¤•÷”“9 ¢Áœ”»•õ–%”Óšgžÿ䚙ܡM¤`¡MŸy£Ê¥ä …›?—•¦‘ê,’—˜Ršs—÷Œ—‰›«R±<²‘·°9¡¸ˆ ‡ ßæš°½G¨2“R™·±µì¸ª¸à³lª•¡’ÊŒg‘_ž–°"¹ʰü¨•©¡‡•É–AŸX§Ô®ø¬¿°Õ­ů­“¯Ю§n©ðª¢¦ø§÷ª ©>¡Ö—gšâ¥ªªÀ¦™Æ™†£š›cˆDw‘©¦þª®Ÿ¢w—g–f’™¥›°š—¤ž>“F2”m“ÿ¢‘Þœÿ¦P›Ò“€‹„ÐŒÀ†rƒ“‘F›³¾ÀÛ¬{ Èr ¡sî|Å’æ§ ëÄ Ép­ˆ yœ{‘‰½Ž(ŒÁ•Yã‘ ¬™ í” ¨… t ]{ ÿ|$yu¶”5• œE¡¼«5žÒ™Ê—† Ê~¨~€ d€ Y€ Ž /‚ ó‰ È— ‘—¬ŸŽ› pž Î¥ œ $˜ ‘¹ ë| Àt  w `{Ù{vz +w x vÏs?o†t Aqúv=~oWò~)¨~Ä}¥~z}ò{‰}£}~/~3|i}¬~ ?~Ü} Ý~˜‚\‚è…ƒ‰ŸŒÓ¡'¯ ˆ¡””•”Ø‚ Õt |«…³‡ ¡‡ Ö„¶… ‚’[šô›¡Ìšä‘–ŽÀ‡œ…¶˜ÿ t£ r–Ԛђ݉Å–®ŸI¤Vžz•‘œž¡¤¥<­ûµH­ð›nŠ­–—i tª[¦ˆ–ƒ‘Ÿ‚¯} 8~ /‰©„â‘"šÔ˜&™9›½œ^•[‹‡•Kœ§ŸŠž_š®ü®üšx“÷š]¢rŸó™#Ÿ}¢(¡o¡2¢Æ£¢A™ÿ“†üŒ÷U”U’§•ò¢_®´¼_À?¯Ö˜)ƒv‹“Ÿú•¦˦“˜Žò£4´T·´·´k­B©”¡:–C‘uŠtK§R¹­„œ œàî™ü—󚢙¯εpµ¶?²4°ÿ­æ«B¬l¦.«¢« ¥ÿ£ý©`¨̤A•)³žªƪ4Ÿ[Œ‡yž”=…kˆ`™Ú£g¨J¢›…•&‘u¢›¨1¤*©î¸”´4¨’+ˆñ™ÿ  ­0µ­¡}…ò8‘‹Z™ý2£~À‡ÐŸ½à XŒt·t‡d”O¤…¶<Á²í »™¾Ž‘ý™<£ç£°ž.’ˆŒH•(“Њï…  Ôˆ # aŒ ç–ë£K¢M¥@«hª¡™èš Š›‚ Ä  ö‚ %  Q„ ¬‡ ¾ q˜ › ¾¡ p› ó› :•Ï•Œ 1‰ 8€ —| |-}†{æy ¢v uÕt’n»mºlpr\y { €X7x~ Àn~Ém|N|·}7{µ|Ñ}&}Þ~ÿ~Ú~~3}1}²ÚNI’…‡‹ nŒž ïµ ÷¬¢ž°•„ 9x Ú}óŠs‰ ጠ — Ð’ \ž©¥}®h®-¢Y• ’ å‰1¥_´¦M£L£ß–äÍ–Ò‚Ÿæ›"î¤â¯m®Ú©”«-±¹²:¦ï–RŠÍ¢ö°§ç›>’wƒÓu @pJn w Ñ} ˆ™“©ž±¥y­è§™æŠN“mŸѤË¥A¨Ê®m¿3ºŒŸƒ“l•¾œÑ¢¢c§N«ת\©q§I£Fœ™Rj{ *ƒ*—  ªš¼ž¬ý¿€º€¥`>ˆ€”Þ˜§å£”—»¦M±8´¹ÿ¹¬«ê¤ךç—!•›Šˆ¡²—¦X’”é )Ÿ¡8¢¥©Ö¯Å­ÿªá¬t° e±É®ç§X£ Ÿi¤¨¦N›\“°ŸZ¥n¡â€´’§_¥¯—2‚d…œs¥÷¢C“Ʊ—þ”â˜_›¨œS•ª– x¹ÿÌÀÿÍ«;°ʼ¹v²öB•,¤D´¹Qº»µ̯Ž–Ež Ã¥ ƒ›*¤­k¾(¨ÅЬQŸå†D~jŒšÚª6«Ϋê±l¤£¡$—c™iž§©ή«­›û•«œM ¸šÙšý 6” ’ˆ ÂŒ • ™ýü«þ"¯ÿ¨Á°`«öžù˜‡•’8‰Ì~ ó‚ 3ƒ L‚ oƒ¡ˆ /” :—–˜ /œ ˆ£ Ôži• °” êŽrŽQ‰ ¦Š * ~} .{{Í{ty¤r Ör qNmkãkÏpëu=x®~&€~e}Ó}EzúwG{ àyiusì|L,~Ä€ ̃g€‚~7 T#zå}ü{ >…e‘ Š“s˜ ° 3· « ô© “ ‡‚.€Œ Ê”t—¸’Y” ­› Ö©ó«D¬Y¸¹¶©Ï¡ ß‘y”Ï£‚¨¨0¥œþ•ƒbŽ™!¥ˆ£ ªÚ±+®«¡§e§(´u°ë¤ó“Ø¢¦®4¨ͤ| ¹•0€ –~ u¬p »s Éy®ŠÊž3­§´w²[§š›Ÿ.¤D¨ª¨ƧË­ì¯m¯«œÌ’q•Ñ ͦ‚©ý­”±L¦ "žÔà—ì–Å“þ…‚G"¤f©â§Ô M“”²‰a†¯‹)’¨ ’þ£à¬¡§#œ!ž,¨‹®¿¯M·‡º ¨ø›²Žò‘J—唊ü™*Ÿ“ŒÙ˜z¦¥¥>§A¨©&¬̬7 Iœ§%±E«Á£N›L–…ÕŸæ’ )Šד’mŸjŒ¬w Å„¶•ܘ³”v’’…Ò¥¥C nšsšæ’œŽ8—›ï‘¤—·ÿ¢¿ zŸ ¦X±}§ôžˆ™<™ŸªÙ¸Q»D¹µ·=©–R*¢ E¢Ë«çµ“¶Àõ¶š¥X£ÿ¶Œ¡_S”)¦0ªã¡ Š£²¨¼£;™× $ªV³í®Ä¢*˜Ÿ¤¥(Ÿþ¨’ Þ€ B…É8—ÿ°Ÿþ£ÿ¡¨£ªÒœ E’•z—·‹ É{ “} † † d Ž” ì™ =— – ,q¢ ø– “ ±“ Ñ‹ ”Š vˆ º K{ `w §yzyäw‡oñm¬€Yó—©…¿y¨ˆ “z ¶ššƒó‹Ïš Y— –„ Ev jp Pyxxq€‡V”¨¨ªË‘ ˆ‹ªŽ˜–<›iœ¸ õ™µŽ¥ˆʇ§…­ŠÞ”J˜<‹"¸Ë¢í±x§ñ’Ѐ)€rF•‘H•:œÚŸU[užI¡Ǧ¦ –Ÿ”Ú›Šr Ar ²wÇN‡ÿ’@“¦ˆ ž €¹$€œ ¡Y©Ý¥~ Ù£o®r¶£ìš ÿ˜é‚-x Ç‚ ‘‘ `žž²ç²±û¶ ¸!®h¤¬ž0”ÎŒ/•¥±¦³´¤«‹I|j‚†x¡^©£Ô¤õª–©™ªX¦Bž–:˜ø@¢Û ïž½£b«¦°1ª,Ÿ £á«­¨U¦‰¢<¢g›2™¡q Ì /¤~–ê‰-‘ò¢¸µQ¹ߣ޶Œ˜è¤RŸW`†‰p–ÿO-¨.´Ä´`­û¢‘Š׌S” ïƒä„xƒ&…¬‘)“´”€‹Gr ×n jy ™|èŒ ˜‚&vÚ›§˜{•5‘|†Ry’™Z¨^µ!²\£‘–Îy¼{—ˆèƒ QŽ“ ¢ƒ…=‹ Œ‰þ­Œý v‡™…} ^€ ÷… q… ˆ„  } w{ dxþ‹ ›™Ó›X– D– U™؇ J… ׋ Ž -‹ ø‹ ð… †r o eh ñh òoGm »nØpQoñplnÕqÐrs Åux ºx Îv –x›t…u]u‹v¹vsp ƒfeïiÌl¨gÃi0k¨mÿÖq ý.w ýxwþ3zþ)|aƒ~‡b“ᙇ˜ Ñž ™ v– ?ƒî}¤Œ‘Ó‹sr€ X ²‚ø <‚HƒN–––ïÇ}A| ’ ®“ °Ø‘}ˆ¬ŠY•¨–…€z¿‹šA•]q•W’£—/‘H޹ƒÓƒ=‹5‡ …ø†Z{ó|¡ˆœ‰¡ôšÿ†:{[†=‹©x‡Ó•þ›â–þ•úœɨ{«©ò¢®žõ˜‡‡u ÷v 3w®‹+”’ ˆ?~ú{au§u'…ð”{¤{­b¤KžÞ;–9† d€ Fá§l²ãš”Ë„ëŽÆ’;‹`­b±)µGµÚ¯à¦ß C˜q‰3ˆ¢Œæ‘¸µÔ¥-ˆ¾y¥„s¢“Æ Hªª¥±¥W­¢² ¯­©$¤8  £¥X¢š¢ò¥w¥$¥Q¥¤©F H™¦ ­Ÿ¯3¯"­¬ð« ¦;¤§“¥ñŸ¥šnŽT…—ö©°~« `š(‡̈š˜r¤<¢g™¹•ÿ<—ÿ1ÒŸ ¡«Ù©œm‰Üt 2v ‚ ‹Š ì—å9“:“ö—B‰ y :z ›” ¿¤ÿl¢þ °™CÓ’vŸWœ–h”xŒé€¶Œ_’û #³û´Žª<—©€¡„“— ‹˜ù ¥ ¡ •‹LJ ^†þ õ‡þ 4ƒ ê}V} ›† ?Ž ½‰ 3† P~ « Üz mŠ í›J#˜ G— ‰™ X‘ M† ø† 0‹ ºŒ Z‡ { ðx àj Ke c ài £j Ãm¹k\léq¤t¼t¤pÇqt8tÝs¾u¯w¯vÕuÖqÏp ¦qÌuºtÓlg'mZnÿ fý[eäbOv«u]t»p=}ý[‰ü„8„Ò‚‰ógŽ }‘ ëš pž W™ U”ÿ I˜ ~›å–7ƒ>† Qˆp‰A‡ Í‚uƒ¤¡k¬s›¡’¤– ^ t¦2 „ŽËŒqŒuщ ‡ »š-£w—‘*“æŽÞ‡‡á‰`ƒöè•”®„:{!w c}g„ ’?š„Š¼}ˆ€B?~Iý”5_ž/›`Ÿu¥e¯¥¸ë°$¨¥æ¡œ˜ 9銃‡— h™:•ÄÃ…ê|uôwŒ…–A¡¤¥#Ü–˜‰žy 6z A– ±R»ú« Ÿ‹±z™‡³“sޱ¤´¨ȱA¯n¨~¢žšÖŒÀ„ý ‘ö4þ`™Þ® ®¤žØ…€ ‘Ù–Ù§t´­‹°û´R¶–±=¨/¢'¡ §ªL¤(Ÿù¨ö«ë c‘îŽA„$:D¡`°®¨®)­À®Ô¯®©¥© §ž•QŠLýžì©¨ù z‰²š°¦Íž–›J™ÿzž¢fž¥˜F»ž¨±“p‚úˆ” zœ z¥Ó­òžT’Sš\£Ó§‚ 2ˆ  ‰± ¾¨²ž7™ÿc•µŸ˜£¿þ.Ÿdœ‰X} …™„õ˜h«I²¡šÉŽñŽtšûœ  ¡¯u³'©‘ÿn‡å…ÿw‡ Œ~ Oy §‚ .ë—<Ј¤~ ȃ Ã| ìŠ Í™èž e— u’ Š #† † Ì‹ /Š iƒ ôt êh/cåe òl k Ñm ¢ln¨l-ppqOwÛs"s*s£wÛv výuÈv/tanvoßt„u|qÈk)gØs—qÿ/eûùhþYfûþ¯‘›{o Rv­ÿW›3‰«‡Wˆ…ÌE‚ ñŠ Í— º£·¦0¢ §¨ ÷§ü¦™¿ž ß¡i§}š …“Ñ GªÙ¼d®m a <› ÷¦–ªg®T¥·š’ò–ó“üš Û¥ §š”U”^“ƒ xæÞ‰fšT›û›Gž·•½…÷x ¥…  /˜ã—û‡U€ˆˆ½‹¿™<›¯¦ú¤¡Ξñ J¨™°”¶D©‘¤ž¾Ÿ˜v”®˜¿ž±© ¥¡:œ€’憉Îޕ¹™àš™Š$ˆs•.“ŠɆäž‹·Ã'»Û¦ä…{Ö‹#P—4¡¥Ö£`¤HŸeU‚¹Žÿ„ ôȆù­Û£6£@—ÌRŒ½Œ¡Œ\•ÿˆ©™·=·¶3·³²KªØ¥¼›Ã¦“©  ˜³¦¸§Ö—¢×t üw ⇠° …«F­a­?ª¦©#¤¦©¦3§` ›—ñ‡w†šG¨¬:©jîˆêz S‰ :—Ù í’‰š‰™–JŸêœ5’%’4š¡œ™5ˆ› ¤¯§áªžjŠ““o¡þ›ÿN•ÿ9›ÿ)œ›C“Š–þ™ÿ ’í”   ýžÿ#¡CžQ‹3w 5y ™…y”¥§ò±£Ÿ˜º”@’4s‹0–#§ ª³« ÖŒõ„~•x ò{ ì… „”­’Á”…†B~æ™ v  6ž Ç– µ ŒŠ )ˆ ˆ êŒ JÒ‡ ôt )iødý€h žkÅm(m él$m¦noæqWy=xjsÞr ¥w:yHuÎt7u>pÑnëtˆw˜yfn•l¤l dòmÓvÿ7pygêqýi}asÓk pよ݅œ ô“ -ŒÔ† õÌ“ ìœˤÙ¤ܨ+°¡°œ£¨ {©U²Þ±¥¨ ý› – 2¥ɵi®»§ fžÁ›n>¢d¥c¬ì¦¹œÙÓ˜z § HŸÝž4•‘–@a“ƒ·Þ…6”’”•µ›iœå®‡ Ož%¨¢‹"MPˆ+•ü¦îµ§¹Þ´ ¨ä¡$˜§›Aª¡·‰ªJœÛ”“p‹æŒ[—  ü­ú°«®¥“E’˜ÿ›7›ô—§–‹–¦‚Xx ㈓ú•É™h§’·HÂñŤ¹˜Jzüvb‚—Œÿ••ç•Ažv™DŒ cˆW‹ÑŠÜ/›Ù— ì¢›/ˆR=¢z²F´Ù¸·{¬¨¾¤¿„ž¦–¦û šÖž˜¿z*‡p‘e£¼©¨I¨ò§7£ x••嘢n›¼Ëy„æ›o©r¬Å©e¥… ÿo | ‰ “ ®Š4‚ ƒŽŽÁ—¼”œ„0‡—þœ›%š›ö Û¥£ŸJ”~Œez†vŽH™€¡ÿ>£ •°†˜€ã’;Åw!€ îyüŠˆ1¶‚‹~l ?’ëœÿg¬â—O+„P¢‹–ÿ±šÿU¨ Ý’LˆøyÛx k‚ òƒ ‚‹ª² Z– å‘ c’ ¿‰©‡ • ±ž c˜e“– ¥‡ öˆ Œ EŒ I“i[} ko ¡h þ¼h Ij +pun bnTn Mf þÈnis«y¬|Ão ðq Éx#w´s Ct{upÖuÌz |%xawcuJu_iÙnFt@o.g¾hôjÿnmžv!‹ˉd¥•2ž™ø‹U‰Øý•J C ΩF®²­ŸºŸa¥k“ý  ¶™ âx™úœ 2š¯šp˜Y–Z˜4žh¤»¨Ǥƒ¡ ˜”À™?—µ”ï¢vŸ:”.ŒÈ„ч†]œ‚õ’w—6f­r¶Cµ?¥°9ˆ˜f¨÷»l´ „°ì¥‘ŸKŒÌ.Ÿx¶h¥þ”´Œ*Žòö—ò¡v©”±˜³&©œ¦…Ÿ˜à¦D¨WšÁŠMŽø—O‹ž…Þë–6¡í©д þ¼ (¼·ÀN»·¥ö“’z•׈‰d„‡[”é›n—g.‘¨–Ç‹F…:|€Æ–w«°’©åšÛ˜e¥!©جù¶ž²ªRªVªë¦ ¡d¨£¬:¢Ï”q’ˆB…ߑߓ;™… ½©§¢¦¢ü¢Oœl†!—ƒ‘ˆ–0˜‡•ê‘zŒ—¹£2©ðª:™•~ l ¶us‚ t‚Ùˆˆ «…׋ÿ˜þ”Ý€K†@™`•7‘Tžî¦ó§žð1|ös §r y Ç~¢…m“)šÓCˆ€ª€ g‰T‡]ti :gr6Š_”–—à›|”¼‘5  ïÇ€Š[ðˆЇÍR •œ›Q˜Õ‘‰þ0€ÿw \ÿ/ƒŠ K”þ=þЕ˜ÿ$˜! µ†è’š R—B“á † 4Š HŒ ¶ ©“ Ž ¥ †u ^o g ‹m Nm Ýo oq9r ÿƒrAr{EzImÓn uåxÍwèwv|t ‚{ *~ ýÿ~š-}H} w‚³}?jCnmqOo(o[o¹vœƒl‰ €~j 0¡ Œ ‰… ¿ŽC‘z’\’R˜+šL›ˆ–l™+¤e”2‚÷‘ü•|’‘ºˆÙ–’ “/˜ñ—޵‹µ”/S± |®îŸ.›U™î˜[”†–`•ý¶ž ‹Š}.~y {z ¾‚Ç5‡Õ–:ªê¹Rº]¬•7ˆú’<ž©«£ ýŸ“ˆ .‚ ­† µ‘Çž˜Ž!ô‘*ÌO˜‚œ¸¤A²¬Ø›‰™­Ÿ¡©«—D…Š“ÿ¤;m‚C˜ì¤)ª¾±¦¶A¸ A±¦®„¬© ·¦ •€Ê€à} šy €€T.£#§Ù¥¯©°§:É|¬v3Š› ¸±ÿ®“¨  –¨U£ªŸC¨?¦^¡,©ʳݯ9¬­m­›(ú{1zC‹Ÿ¹Ÿ­ªo­×®W¥kšÇ™ù—Œ›x ”w £| ­’›Ž¢Ѧ– N–¤£ªb˜÷z Ôx ˆ[;—‰(ŠW™?XŒ˜’·§œ@—‡¢g¨Á¡µí|œo ”n Ä| Rzav WtFy Œª•Ç“‡¹zí}v~òxprÓtªx¯—–•»’ÿ}Šç‡ î„ÚzÙ{é†}Œÿ= ] §‘ÿ fŠÿ Bÿלÿö—Æ”þzŠþ ÿI}ÿËyúZ‹ÿø$•ýý üù–üû8šýú}—ýûQ“þý߈ê}èC• 7— éˆ ¯‰ ‹Œ Œ ì b‘ ¤‰ Í~ õr ‰m j m ”oÏs ‘wq@yx4~€6x¤qêo ™w èxGyÍv|xqwÆ{  ă}~¹÷€Ѐÿ ‡þ{†·qip’qânûj”srwz xãy Å ”—i–¼ƒ Ó ò‰‹0¬Ý DŽ“xœ_¤’–ç…a„Ñ‘ ‡™ ”z’ ^’ Í”A† ã‹€–Æ™“^Œ……üŒ’•£ º™ÑçŽ->•€Ž÷‚LŽžl‡wŠo Gn ¦‚…ˆ^ŠßŽ A”ƒ¬s²­ŸJŒbzè€a†“‹%V‰9z x >x d…ߊÍ•`”wE… ”ŒMŒä”âšÔš~ŠŠsŒK•µž3Ÿ}ŽdеšÑžì‹úޱ¦x©ûªá±¯½³²®!J¦ •/™‹¯ ã Rˆtxžx:v šy#ÿü¦¢³ ±A´e¬º™y‚m…˜f¬­±Ø©©ŸÏœ]£ƒ«7Ÿ—m¢m¡9—Y£€²±L± 2°´¬;–‹v pýˆ››Ù§ö§y¬J®%Ô®#ô¤t™°‘XŽr‰-¸}Ø~ dˆ íú¨;©iœ>‹̈ñšN§Z ÷•(ˆOƒ´Éœÿ°¤žˆ•f’¬›I¡w™/¬­9£U¢¾¡ï—ŽWˆ¬‡!† X’ Â’€…†…‚ ؇ †”Þ—2ˆÃw¯| ï€ ÍW} íʆv–ýšƒŽ¦ŠíŠõ~SgÐj ’uå€ÂŒÙ’‰”¢ Bÿ Žý ~ÿ ¬›ËœŒ’âƒûƒþpˆüÁ…þ÷ ˜öÇŸÿøK¢ÿ÷ê þøÃ™üú|‘ü÷ßûùë€ v }† – w”³ •… N† Ò‹ «?ù ê‰}x 8p çm j ²n -o qx\K… ‚~Àl}±|£s Ér µtªv Íx Þx  ywy Qz p€M~â}ö‚ ~à&yØxþaz%u¿u6p4cànÒu°y ©{ x ~n úxA†B† \t 1yZ$£~s… œŠU‡ f„j’à£û©`ž’‘l„¢‘ ±– _Œ >… ⎠Ք ŠZ Ÿަ`— ª”D„Év * $‘—4–“—†áŒc—”#†"ʈÔ|Ùl €rbv¹‡¢“וÁ ‚Y€ Õ”½¤à˜÷„ r DqzÞ„| yr r Ðs Xv*~⋼•² N—±‹…€Xn °qyí~i‡ˆ9ƒ6ƒ Ë…E‡‰•‘›‘i›””ø‡»}¤l§çŸ¨Z¥e§'¨¨%––‘¥¥ ,Œ(t—o (v:|s¦®ý­@³!«ؘ‚ |÷’ƒ¤Œ£o ž ¥!­rªìY•O䛎O—#¤å«­β¯òœ‰~Ï}€™Q§•±û¬£­#3°'•°$¨§€ @“űŽΓhµ…n,¢‡§á¦¨™èà Õ‹„£Ъ¦ç ›–Œ“µ’˜”¡ ¾›>Óžš—ù¡ܱ½­ü¥(žšU•à› X¥d¨s e£i¡äžç” ÿ }Œÿ .’ÿ ꕈO~ „ ï‡ ]| ·‚ ­Œ ð /¨ ]± L’ }Šyƒ´w›q¢ƒÿx‹â–¯šÿ¸™‘ÿ ýŽÿ Žÿ ‘ ›7‘ 7ŠþñŽùÕ˜ý{—þøù óª¡ò£òažø¢—þûú“ûú½Œúø$‚üü„vþwzÕ’ ´˜ l ›ˆ §† œ .ü“ !† m Ml ti Ìj …n Ão œxŸÛ–ò€cÍ»~ðu…jTq,v _w ·x 0{f{y{ ˆ^¿~}ÛÎ|•qopvtíq¤hkq—z.} &€ïs ?k §yï‡æ€Ew‡|M‰R–iŠ çt ír ka ¥o ëŽ˧è°£¨•ED”÷’óvepû‚ t• QŸi¤ý§f¦˜ oŠãz`tæ€óŽC”_˜¶¡žœ²–“šš ň2u•‚ËÝ€ŠV”–À–̘¾”¼f}éˆv¤ލà‘ÿ|Fq v|~ß}­v •q ™s Ã}ú…VœŸÙ ±Áy ¨g ðc œk žr¿{ j–  ¿¢è˜“I‰b²“õŒ#òŒú‚  y  ˆ—b™˜œ#Ÿë¡Ÿñ« ¢G‹Wƒ Œ –¹n ^oÚ€!¤žÍ ù©E¤¬”‘€i}™…gŽ“’ˆ•&™ù¥)ªnªÓ¢©”G—™d€–Þ¤ô¨ЮA²²²f£ò‹Þ‰©œ:¬r²Ž­!ü­#S«#ã« ¤ª¢!˜ß•-™§œÓ‘]ƒƒ”¢¦;©b¤e—õ‰ã~惇™›¦‚©-§£p•iˆÒƒ<‘*Ÿ;žÿ·˜•&£ý­¾¬,¡­›˜›škžç¨¨/£ס¢á¡¸šAÍŠ +Š ®„ ~† 4‚ û|@s=ƒ|“ z– ݯ Ò¹ Ly ö} #‚ ž‡þ»‡þ[þ ^•ÿíšš±–¯’þ •‹ :‹ ³™ô›ÿ1”þ<ûüô“üýHžÿüÄŸö}Ÿôl¡ô¡¢ôø™˜ÿú`ýømúøˆøý8vùNlýN‡Œ™ :• õŠ ˆ Ï ˜’ø”‹‡ ™m Öh 4g ÿOi mäs .{ fƒ D‚Hf@}r~¶xDn-rõunw .u exá{Û{ |éƒ*~Û~ } ¬| Ù{‰ur‡r¾s¶ognësà~ «~yz ÷o c @y † †â†‡>‰Ø”˜Œ wqfs³[ ¹e ˆŒð¡¯­ïµ¤©çš«™ ’r}5t g~ ¦“ N ͦ]˜8µƒ ðo ¨‚¾y=‡3” ì“ z™ª«…–?’ ˜6Š PqXƒ–¿šÿx™þ!œÿÙ¡k›”fŽ=Žéˆ7†3Ÿ†°˜¤\ƒêvëzŒ‡Zq|`‚‚‡9‚ Ò ^š3›~’ü‰ ®r Ah Äq ÅcªϹA´º§ÕŸ|œ”õ‹ïƒ¹¸}²x öv ý #Žƒ3‘é“Á‰®‘ä¥ÿŸ^€ Í€ °‰ Áª’ñ}MwL‹ ˆ‘”ŒçŒk’Q™¨”Š͈·‹í‡0LŒ˜™þ¢ô¬?§[•«•|šk”þœ[ª¬(²²ç²ªgšfEž=°MµG® § p ÌšÈ£–¤ãŸWš=žÇÌŽ¦…“Á¨5©סü“Æ uË€>—§¦'¨ã¨M¦BšqM}‚'–埛œõœ¹ æ§ ¨ï¤,ž²˜Ôÿ4˜ÿÁÿª¡”œëœD dÿ “¸„^€z~0ª‚ Q… ]ƒ3v —i ²Ç•Ö” "¦l°¡™z oƒ ‰¦“Ì•ÿˆ–ÿò—ï–å‘ vŒƆ y€"ÿ²ˆ”–ÿ Çšýq–üý]™ûù ›ýú1Ÿøj óÇœô…žöºŸ÷Lœùµ™ø[’þ÷ï‹øø&…öþBjüÀb ÿ|r’¹— } † 2Œ 0Œ ùŽF–Ÿ† Ós k ¼i 0k ˆnHq<{ …ù‚O–s}ç|L‡tuo‰q_uzt¯vîzZ}[{Úf}x}Ê| ÿ~c{Czt^tŸu‡uqArPx *} z Šy îi =f !}º‹ÿ “þ3ŒŠ€‹ã˜µ” z)žúèe—iw‚”à#²¶¤ÀŸ¨—’Qˆ Ÿ“ 2–u•’AŸ|  ‚2m ×sU‚ï‹R‘ Jœçž 8Ÿ¥ âˆ!ˆ‡”{‘ |N|½žÿµ¥F¥ ­Þ¢×’`‰«ŽÕ}œ»¢ú‘b€ž„ÏäàŠ’Œ”)›#Œ|€ †õ•T¤ê­G¡%‹ o h 1ƒ÷«¦¾Ó¬™Ž›Ä¥s™V(㇑ŠA‰¸è‡WP¿’ÿŒ˜| Ax V‰Õ¢¡‡œ{é˜*¾Ô¡¤’½†ÓŽÛšƒµƒ^“–· ޝ‘(“ƒœä¢)˜æ“•£–è  §@*-¡…Ÿ$ Nª¯δ®²U¬¤¬E¢† ½•á«§±{­j¢î“ Žâ›¦ê¢C¥«9¦ š•´ž;¦T¥aœb•C…Q} ˆ›Ϫ`ªY¨`¤w™F’çmvD‹øŸÿ§¡žÿ¡ù§b¨ãã—’“ÿW“ÿb–ªœÿ¼™Ÿšâ™ú˜Ó’‚ˆ%v hutvªt`‡ Ò€ Êu pÄŠ ž&• ‰Œ8rx Œ ¦”ÿ¦™0’å’öŽ Ÿˆûˆ ‚ÿf~ûl~üd÷èŠú ŽþØ”üÿ0–ûûèœüúÈÿø† ôûŸñ9œñלô·÷³œ÷™øÒ•þø÷ú,†ô k'c­~ù‘„— &Œ ‚‡ |Š $‹ 0 ‡“¥… ~s ¥k ©o ÄnÌo–ú˜£–]“V‚v‹ry‚ÿ‘yÿÁŽ¥Ž ´ y‰»Ž›ž²’*vs €v ¿ “ ˜Nš—Ž ʆŽ…ìû‚ù‚ó}€ó@‡óχòЉóÐŒö6þ÷ýø©—þùú÷_ŸóyŸðMŸñµžô2Ÿø÷Gš÷û–÷¸øúˆö aú‚X}xüêŽý‚ Š 5„ 1ˆ ` Ð  † rp 8n Cn 5o²lÚrå|f€â~~º~+}_{ ­sÉioÿs-t )v ùs ¶rAvw2z ¦y Nx Æ{ x w~zhwlDnt£y5~ Åx ŠrÈs vl ¼rÕ‚Q¢ÿ?¹ø‡¯ X¸`›þ´‚B d‰‹(€–2 ðv st ® æ–Ì¥¶ª1¤Ï£žŸZšR¥Z£Ç å“ bî /ƒ ‰åŒN|‘ë  ‘š ׄ ü‚,I‡„ M 9˜µŒŠŠ‹‹l–™¥O°m§™ßšõ™¼“A‚d}¦ƒ“”úŸ˜”„[} ~|ð}耞…¥‡}Ás~s …“z˜«ˆωªŠÄz î… œ y 1q Çz ·Ù™üí–NO…4†ý…O}Y|@‡:‘¬‰ì‚ HŽ9ŸÓ ”™nˆ \‹ô¤?»”«=¥·’Vƒ¾Œ”ö‘êšHªÙ§Ž‚8Š¿¤„³~ª¿›‰•ù™õ¢Y²;³±\« ¨h¨«¨d¡ŸШ¯b¢:•Tš}©«x£”‰V—Ûª@«ë®Ò©dœLžï®ö°µœÓŒŽNœµ¥˜¡å£”§µ«8¨˜£RŸb•†•Y‘>€û˜§ªE¤ëœÄš•œ –¨4 ý–þx ”‹ ƒŠh”ß—e• ’Oƒs }y>†ÿ \ü ••û Jý ܘ ׈ìŒýc–ÿ#œÿ™‘«‰J‰G’ˆ ω ª” w™ —Šÿ2…÷ …÷\‡÷…‡ò †ïr…ðýˆñD‹ñ.‰ñ§‹ò¦‰ó¼ŒõE–ø”÷ ò=¢ð>Ÿò žô õ6÷ª›÷k–øˆùüÃyø—Wú•Uú§vøoˆû¡‘w‰ ¹‡ Úˆ o‹ -P ¬† jq ìl ¢i õmÿo¸t~€ ™€¦¨~| v TmAk þGn ÿesvs Îq nZqÒtÿÁw ÿ‚y Hy¬zÓy©wEy³zòrús˜y¥~ \€HsioEd úPc üqsˆý£¦[³ m½ <žüwNm °‹ž€œë; Qz ïy 0€á…Ù— Ì o£Ý¥¹¡ú© .¬W¨fžΖ“U7ÿK‘ 5”<–K˜ˆ§ {¢ á ¬ˆ ~›õ§ž Œ <‘ v›?U‚‚×ûs£Fœâ›P¢9£ÈœÆŽƒn  ’ݨ½Ÿ•‡jz «s •{Äy£v |,~~sfi ¶q %t ~s ¹} +—Á¦m—1‡Ÿ†t ¢x XtÊŽü“‘‡Ž’š— –³lˆƒ„o‹@Ž´…>í«­¤v‘0™Œ«,¹0£¹œPŠ Šx b‡7—ÿ–Oœ´¬x²¤˜ê ’”—žã« ¦ë“û‹'‰ÇŒµ¢´h¶f°È«ɪ“¨1¥E¢^¡D¥a°Qµó°Lªð§Ä«Ý«ƨå£P£•£›«?­«$¢ЗeŸ'°߬p—¶Š@Ô¢m¬¨èªzªªå¨Ô¢8 ¥šëœ¡ž”›¦š³Ÿß©ý§3œÁ’ª…õ•b“;ŒŠ ¬c ,“ — ˜ Å–˜“‹›ƒ Æ”ÿ þ'™ü±¢ûæ«þ—šÿÖ“‘“Ä ¼ ÿ°¡ÿi™š dœÿ›þ]‰’~ýåG•þÿCŠö*ƒðЀïʆðã†í^†î5…ñÔ…ñJ‰ðÿˆïGŠðÔŒòlö-–ÿúÀŸ÷÷¢ñ¡ð‹ ñüóþ ÷œöXš÷'•þø¤‚ùûlø½QýÉUþÿOtþÿ«†ýÿ‡Šމ èˆ ‡ É î¦… ªt ·i çn}nÏo±u\O1|{Ðw æn ´k Äk Äp¹o€pm!n¬iÜkÉlSr þp )u|xxXyÞ}?}yõ~ âw Úu×i£aû>SòöV õÌ_ý_~§xˆ «­ Ô¶þ%¤ÿk~Ry š„®È¥.˜l…Óÿ)üí– Ç‹——›› £; NŸë£ ì­*¤>œ;”ý—éšó–™ô›6¢ä¦¯å¨ ×›1Žìš€¨›¥w› vš `›ã )ù9–—žzžd—å˜O¨ô°ß°¸Òˆæ’D§Щ1˜B‹zµ’i>ŒG¨…‹w%j øi sv Óv õ’Ñ©€¹š¯³¨K˜QËy:þMý”Q¡V¬b³"¢ú˜ŒŽ½ŽÄ‘±˜ýš$§¹¯ö¶ß¹«î’öž&°ûºö ›’ Ø} ‹Œe7@¡­û¶³N¯;©‹¤[ ª¤ŸŽj…0Ž€œÚ§¹°â²o¬/¨{¨³§b¤õŸ1 k¦s° ­ñ«­e°Í­««†ª«‰©2ªã¬ù«ƒ¤Rž‰¢¨ Ÿ…’œ…Žužg¤ð§†­ç±–­¥•¢ÓŸ•õ•â£A£m§#¦×¢¼œd’ùƒ||m}{z 'ƒ X… ¸ 2š˜ ™ÿ ?— ”A“ÿòšÿ¢þ̘þí¡þ¯¬þ÷¯ÿçŸþΔþ«–›™1ÿÆý}ÿ ¢™ýûšûñ•üÔŠÿÿ‡ùÛþù÷–ýù¿öRðJ€í‰ì%‡튅ﲃð@…í/‚íéŽñŽÿô‘ýú“þûû™÷á ñ/¤ñ$£ñ¾žðžöû›÷¼š÷F’þöõƒûùBiúÔRýZþÿÃtýþA†þÿŠo‹ G‡ ܆ ËŠ ÀŠ E‰ „ ÿs Œk @m Úp Wlÿ$t ý„€ˆ~Æ~ã¸zÆu £k|lîp›r¸k ÿ®kïkiðgk_måp+k #o sñu{hy|£}~~ ~¤r†j8Xÿ+Nò1Nð-OóP ôBTó Uùxneˆœþ"¡ÿéŒf„F¡¡±%¬ç¢ƒ—þ¿šþv¥ÿ|¨é¥Ú :žÈœŒœ%–\• å¢ f¬ð§ -–B•Žž Ïœÿ ú¤Ô¨"«e©O®¢ªŽÞ‘q˜ÿs•&™d›˜¡ð¤¿ ¸œ‰ë¥åªŠ u”¶¢t°œ­¤ 4‰ Ï ÁŽ2§*§ò¤³¥Æ—Çž–¤Ÿž+œZ˜–&x#~÷Š E’ާO´ž¶÷µs³Ū°“9|þz6‡!¸Öš¯L¸”¹²*¦šþu‰%ލœ½©Ó³^±½²¸×®qŸB¤©²q»>¢L•Ó‡¨†€Ež¡Σ=©á°µ3·4¶¤³"¨¤——Š{yô…€~§Y¨ã­«ݤÀ¦Ã¥ÏŸ’q—£Ò©?œçž%ª1±­[«ã«·­Ÿ­©«Yª±«lªù¥Ã¥~£1žå›Ø^~3„”-—Kž•¨ò´±¬ï¢Üæ™óŠÓî~Ù‹â‘ÿ ÿœÿõšíN› “þ¸p m)~ }} x L ¸”ÿ ë˜ÿ {™ J•€™7¦¦ÿøŸÿÁ¨ê±ÿ5¬ÿŸû¸“û þoÖ–ýfšüQ–ý•þý<‘ýû®Žüú‹ÿø‡ˆöÍÿõÑÿöÀöˆò„‚îî…îòŽð†† ìZ„ìƒñRït í´~ï®ó¡ˆýû8zøW…õúòZ öÙ¢öè ô½Ÿøbšö—ÿùý•üø;†ûø¶mýû¸WþüóZýý«rûè†ý\‹s‹ ƒŒ ˆ ¾‰ ' û š† | ¤m hi þço k Üsë'€ ©}}x¢q Èi5nþ[q‘oìm»kFeÄf þœh3j)j bm ·o k Cm ‰l´q^v |OywyZv˜ihXûçNôŒMîiLòÜQõôHò­J íLFíUõ V þþu‡ Œù‚ œÇ©Bª¦Å¢ýl¦þÝ«Q°E­¢©<§¦™º— —Q–ÿ¡ã« ·¨ ø—’Ÿâ©!t«Ü®Ê«Á­ d­ªѯ<«œq›r Ο•¢›%¤E© ¥I­å¬±S²™¬¥ž;¥Q«#¤‹š©‰‚’ƒ“—8L£˜©W™°— ¨¶¥X¨=¯çšÚª³¯µ{µO·„µ.¶›±Þœ(‰–ý N¢¯¤•² ¶šµã´°¡cŽé„À–'¦ç©ž ™œœ¬H²„¬°“·›¾Ü¢‡žߘM“m •Íœõ ºœµ¤Þ°ë¶þ³¯L±›*t¼sùˆcœƒ¢LŸÔ¢K£˜ F¢££›¸ˆ2‰ožÑ£±–ƒ›'ª¹«Í© n« Û¬ t¬!€«!ʧЧ£Æ¢ó¦Q§ü¦fŸ´™O‹xéy¿Ž›”g™|§_°C¤â—´Œ ‡œ¬x}•{0€WŽ(’‡˜¢3£×§ŽÁx lñ}ˆ|ãr{½ˆ‘ '— ¼–CœÿߥÁ¦ÿ%£þf¥ÿ§¦ÿ¡¡ü Vœü)•ùQ“ûüá’þ÷”ý÷”üø¡”ÿöw“þøßŽþöX†ÿó„õ„ö–‡óe…ð<ˆó³…ðo„î†ñ„ð…ïJîut òæh óÙh îLhðküûfüyd î7}ð&•øœû˜÷“›ø¦—ø­–ýýúŽõ«ýö}løÀZõÒaÿ÷pýþÓ‚ý™‰ ÏŠ fŠ À‡ šŠ • oŠ „ U} Šk h ïp!j s|mm€Ñ|œt­n f þèmüñnþ uvmfhPd c þig .gŒi –jÑmll j ãj ]rÍuîv‡w—xTuÿÝ[ù{Nö6Kñ”NòiMóoMõ®LõŒLñdIî¡L ðhQ õYV ý^h "u} T•ê¤ú¢ÑþÀ ü¡üV£ÿy§7¨«œË–‘’ 0šǤ9¦&¦}  Äœ“ Ýši¬¼¯q±e­x«ÿ§î«²°ݧ¢¥›¥ò¥·¢Ÿã¦ªè¨£±·{±e­¯¬‚©h©H§ w í£}–މ¥ŽŒ“(”RŸ'“‹Z™-›Ç¡« £„–ÿzžr³¸Pµ[¶ ¶B°‘³ö®Ü“€œ™µ³ƒ«H²µâ¸½´Z²r§™›Ö‘~™¾¥¾¡Ý’pj ÿ­X°p¸ ¾iÃx¢_¥ަs›ìŽ’&¢‰¦|˜7’t˜1¨:¶š¯‘£L¡ç›8}.†^œÿ  Ê›”J‘!›@¡¾¥f¡bšC‰ª„v™#¤w•Ëœ¦D С”«ï­ͪͧ"à£!´ ”¦ ©>¨ù *šºtÅzʌƕE™×¥ʬ‚¥«“ ƒu0qv~¨† 1~ÇsC|:ƒ)“Ÿe¦¨Ëœ‡ {‚• —ÿ«† «w ã}χ»“ÿ ™ÿœ¢ÿ£ÿÂ¥þZ¢ü Äœý jþo™þÿD™üý—ûúq•üøð”ÿõk”þõ¼“ý÷1“÷ ÷ˆòU}òC}ò|óäƒñQï‡øq…öˆ€ì €ïc€ ï±}ñ»~ì5s ë‹p õ’^ õ´] ìR êºTõdNøŽVðì~òL‘öK•ýùu“þøá—þ÷=–ÿûáŽþû£‡ýõÜhíÇ`ð§XðÜ\îÖfözwH… þŒ ŒÀˆ /„ ó‰ ^ˆ Í… Ä m Ìh [mûmÝqïtæ„§yìpìl ¦m Qoþ›mþÃsWn(f c Øc þag øi åkÚg ÷i þÖh Ðk enœrvoròvCwçsý¢\ù¿O÷‰Hï¿JñûJôùLöL÷èIóVJñ…MñÌK ñÁN ô'Rû‰]ýM_ÿJ‚ב Xš ó”ÿá” ì”þ I™ý o›ür›ýf”ÿu ,• z£Å·©ƒž0˜ç‹UŠ—J¤Q«ú¬ã®»¬#¨kª ³X¯©°©ùª)¬¬­ä©Ý©©¯4·X³C©u§ª÷®¦Ƥs©.¯Ý£”P‡¾‚……,…ª‚ü{ W† ƒ ®‘7£¥áŸ8ª¼µá³Ú±‡³*³X´ñ­ §Í ˆ\—g¯B·Ú³…´«·+µ¦·" · ʳ׫9¡ÈžÆ¥:šù™t¥®¸•ÄOÅ€ºÑ¥‡§¥´—¼ŒØšÒªÙ°Þ£n˜¸’d˜‰§ ¡ Ô©*’ ˜ œ£§í¦¨—›‹`‡ä—¤¯©ú¨#¢•¬‹A•ÌS“2™LžzG˜±ªv¯R«·§ ¤ žË“Š‹}”ô¡Hª!‰¢K˜׊zÄ„ ñü–“¢\² ~¾ ¨nŠû~Š|t~…ˆl€ÁsEm ug‡úšj¦¦þ¡Ê–g–£x§ a‹ÿ {u~ g‰ý ¸’ÿ šýQ¤þ£þ Ÿý›œýù˜ü–˜ýüZ˜þøŒ—ýö¤•üõþ•ôš“ô~’ÿõp’ùüüŽüüàö%xñòqî`qîêq î xí‘rï_yó4wð+yéîêy ï]n ðåc çÙ[ æë\ðTó Rë•PéL ëP ìUî…~òf‘þõ”ýøêýõ;’þóÝ“þùfˆ÷Tvï2[æ³XêšVëWém[ìšk÷Û܈ Š Ђ 7… Ȇ Û… O€ Gt Øf sj ul×r¹r yI€Öy ÿ qk Çn^oâm×m¬m3cáeki½p2m¿mDoÿÇoÃnJm hþúpÿ—rÀu[zÝxNtaþýyPø¥Fï¹MóbKöoKø‚EôÎCóòJõÕPôPïÜMî{Pð XîEXëÇ_îfuö±…¬…*‰þÏ”úšùu•ý +”ÿ Æ–þØšÿšY¥ë¸Ù¤š¬œ¹˜Åˆ¥Ž,™b :¦çªx¬eª?¨)¥U¥.¥6¦"¦Œ¦ ­ˆ²ÿª3¨„©¨¬z²c¶ï²õ­ª Ô©´©g¨®«J®À§¿›!.Œ¾&zuIv ‹x ™ } ƒÈ›t¤!ž7 y®ɲ/¯3±®²Òµe´تÓÇv …œ“«.³:´¬°ù®E¬P±äªÕ§¯©r Ž™±#‘›¤0±û³ÅÁ„Å&¸d¦X««Q¦†—‰’ߥ¯µâ¬©œ8Žþˆk• ±’û‹|ŽÉ™V£dªp®n¨7›)‰U~-Œ a©’°ªcœ¥ŽyŒæ^Žœ© !Žðœ–¯o³á­"ª`«¿§²›phŠ€˜Ï¡÷›Z’¦…D‹™ƒn‰ð‘˜œX­hµ‘¥ ‹§”w–:ˆC‡á}Twºqvÿ…šc¢i¢Z Þyž ¢ ›š… Ävÿ €}þò‹þ'œþŒ þ £þ ˆ þB˜ü˜þûp–üü¤˜ýûX–þøX—þõ¶•þô&“ôr“þûkýûÃyþòouúÿYò{_è"Væ\ ë‡R ëžWéÿNë€ZñæVïÏiëÌbèkóqT ï.Q é¥J èQî%OðÈRð NïTM é`K äóSð©xÿô “ýöý÷‡Œþôþó¸ÿ÷†‚ÿøxhíòSäPT å+Q æúT æmS æbY éÊp ÷Þƒ§… û€ ܃ … ‹… +„ “ Àw te ®j žn  k Io ês hp Ãt j  l Ëk Yq,r\pmlöiÄiLk/ocoNoÐlWk‹oäo¥o×wx6w~%zþ|zÿzfÿþ”TûÙHôÏIôHöÒIöõDó‹BòIó!Nõ“NðKíPðTíðQ ælU ånTæZ^ïôYïÇhò„núûÑø nŠþ é–ü ’þ …Ÿþ Ÿ»¢¹« '¥ ¸• šø¥Ü7˜‡Ž%N’D™ G¢ã¨á¬e©{¦”r–L¢Œ¥·«ï®øªj¥Aª¯F¯޳Ñ·Ͷ² °"³6²ó®a®ܨ5¢Sœâ˜ˆ,zöyðˆP›õu žŠÅœ’›T©u±=°®à­ñ¯A²Öªq”¤| ††5–[Ÿˆª]«6«l¡Πwžºž‹›š@—-Œt€GŒ‰ 8¯æ¡ˤæ›L•t™¬ª Ì©kžÈ›ñ¨|¯±ä§‡”ŠIœ™ ˜Û’Ë—Ú¤…±í½ÿ8´½¥©œenw ¬{Ç—p¦ªï§` Õ”ˆ¥ „Ašã¥Yœ-£ü³³‘¬ «g°~¬Y£Ý–²’²™ šo–V‘¤šg¦òžþw˜ÿ4š¶–,˜•t ‹~›l›ù”´ò„¡ƒjY}…‰-—m™fœò£T¤ žþ «— %ăþêÿûîŒýþ—ýþýõ™ÿn˜ÿÍ™ú'–ö–ö•þøû˜þúg—þû€•ÿö#”õ÷“û¢Œÿâ}ö™Zì£SöœV ôÌT ëAN èOM íÕN ñJð²HòÝL÷âMöÊOìcPëËPò`Rö"Nò½KìNOìëOìoQï/QñJNéAP è^þõ{ÿõ4—ýø%’üùÔ’üö<”ûõ8“þÿÂ}ûÐaîÙTæ VæÁVæÛU åhU ãS æœi öÁ€"… Sƒ =… Ö† Xƒ Å‚ —€ ×s /i ôj n k ÿ²q þ±k `n ×n´k Èj ,j ®m¯onÿoqjf@h”iäkàl§e¥_ nukq³wò|:y|vIstaþ%RüáF÷ºDóxFó’Gô‡Hõ)FóßCðÓJô¹NòÈOîÅPïÄNì S èWçmXçVVêkV ëÙU è‹YìwkûÇu©~D€ÿ“ÿ/£c¥£ Ní“ ‘¥ͨê–'šMšÑ• ™É¥F­-­ ¦¬š  • ¨¡ ¥›¨e¯€«©§C«R±$°®²· ¸͵½­ä¨Ž««°¯ ¢çŸ‚¢¥—±~°~Œ T’‰‚ o î‚ N•¼›¤A¯ð±í±°­Æ«Ì©q° ©·›}µŽ™šæŸé¨©;˜%‡ ”Ž…Ÿþ¬ÝžŸŽè¡`–Íœ»œ (~ j| Ê€ 6€Ò«Šª.©ÿ¨j§c®½®Q¥š9†ñ4…Œœ€¢þ¡–¨¬÷·êËâ"—aˆr üx—V¦H¬6²6¯ÅÍï‚~ ËЛô¢“±³Ÿ¯¥®²ý°Þ¨‡¤ì£ÿ¦Šž—=“¡•·¨³©@Ÿ¡˜†$ƒÀ‚؇ÑxTŒ~¹‰Ú‹~“ˆß»…¹ˆ6ˆ­•¨ `£þ e’ ÿðüý¨‘üýïžýýÏŸüûõžþü”ûØù–ø —÷`—ö’•ÿöã—þú&–ýû(“þú0ð4|ûÁb þUZðGH ì[Mô(Pó Rí“Nê.NîLóÙKð%HíOñ“Lñ]LîIJï¸Mò¸Nô:PñÍLëžL êÁI éMë}RìºSêjWêÇ\ì§qþóþ÷–ýùt™ýöÙ”ûô…ö°gúC]î¶YétXè·XçoWæ1TåûRè@`ô“y=„ ›ˆ A‚ ƒ  Ü€ 4~ —q Àg üh †l•m ™q ÿvm ilÜmÿl½l /m In l ¹oþ©qÿNkîkkhkçjpndpÿs>vdu‚xp|Ðx]{ÿRq=fþîXÿý"PúßEô=@ñ°CòíFô“FôgGó¦Dñ¯DñëIñÂMðÌPðMQî\Pë¹Ué§VçüVè†VéëUçºR çUìõUò5\ô¦V÷Ò|‰”±¡ó– õ—°‘ÊМ÷«¥©3¤ô¢îžŽ t¢¬©1¯°°$®w­5¥Ž« ;§Ä©¹ªT²‚°¤­Ì®.µI±ô±«´+³Ó±°©|£þ¢¤ªd±©À¢}§ £Ž•€† Z‡ ‡gvàh ·~ ‘œ©û¶!¶]­¬¥¢æ¤}­!°B³§è¡ŠžПö£ÿª·²!¦;Žn”¦¯ïÈ๡“¡a¬N¬¦ 9z…µ…‡qˆ±º«Ó©©œ©ô©Ò¬%©§›àò‚auŠ{’uÿ3£4«=¬®¸5¯¯›¡Ž‚Jzë|–Ÿ¨—³¹ÿµ§3šH•ÿ‹¶„#Œ—Q¤º°ñˆ®Á¯Ò±Š®³ªĨ!«[±¬¨w—-‹ä‹¦™«£Ý¢Žñ•y kxê‰íŽG‰òƒ{‰ȇô‰©‘!Ž'ˆg‚Ø~š}RŒ K– 4› M– #’ÿjŽýþT–üúÑüýä¤ýüô§ý÷W¤þ÷˜Ÿÿ÷˜ÿ÷¾—ÿ÷ÿ–öZ–óì”óY‘ÿù»Œ÷/}î?déê] óDN öNK ëÓJéÿMî™Lî)NížPîQñRLñÍMí”MêµOë&Ní€Kð9OòUIï†Mî!Nê(N ç~QèQRédTêíTé¾UémZî‹_ÿò»bþðTqö…ôMþô8‘üõ~ÿõjiù5]ðŒ]ì™ › è Q{ j…˜‰þ|—ûÿ$ùù>¡ûõ¦ûöÒ¯ùø³øü×µøþ#±ûùœþú#–üª“ýý{ö)tðîg ÷Q ø“Mï“MìÌOí(LìNìZOëuOê"Që#PìÕQëÎQê÷QêˆSéURé—QêˆMç^Rë5Tí‰SéGTçÀVå×Vç»XèTXè²XæÜUåiVë:Tò|QóWOöŠLù…LûúXó4níuòübòX]ñÐbÿñI`îÓZê,XêÚVêTí9XísUí´` ÷¦vë|˜x&x Qr gp ¹l Ém 0n Žo ¸pr÷n p[o(n —l ~l rEt?q³l 6o âo Ëtû{øÂwüu·uîÏAï‹BïºHòNOõúKóALóŠOó‰NñÀNðŽMòýQïtSì\VéðZèZéVçwVèQXéUXèVæWèZë~Yð;_ø¡jÿx‘þû®Y¬mžyŽÆ…þ‰Ï“·¥„®ÿ²°½®û¯Ú®ç¶ñµw­Ħ“—‘;š;¨(±áµO¸õ´@°ϲ´F±Y¯f²}® Ø«¥¼£ݦ8§ܬ1²¬ªôœ^› ªð³§­0Ÿ ™"ÑšΖ«Ì ‚€q Ÿƒ©þ¬t¯¿¬t°ñµ]³Ê­ª \'Žæ†Æ–…­ǶuÀ_´„ª± ±yL|ˆƒŒF_®"­ O¬ ͧÚ¤xŸ\Œ#;p €s „ûy \Â¥í°ЩG©Õªj£^‘x| ‚‹p¬ã²8–B ¡‘ a!ò7”}œU™Á¢º¬p¨ 1¯ ^ªË­è©Ø f•÷–H¥«P©c©Õ©ü§˜¡ù’Б–}zÊ ª£ –©@ªþ£*§sœ;Ž5~•uÇyF~â}€è˜'—€—D”G‰ B|é|ý‹þþ­’üþ‚¥ûû¦ùøi§ùø(¨ùøÙ©ùùƒ°ùþà¯ùÿiªþõ ñÏŠüôwÿTnóZPíIL õÆIókMìLéOèšQèMQéŸRéOQèARèUê™Wê UçEUçDTèVèÊUèHTçËTéÐXê¦VègWæÄZç+Vè XérVæOUälS å TìpOñIMïzEñ“Eöþ=öTKôémðï…ø@eó×ZíÇbïbÿð8\ìåWéTèòSêåTìÃTë Z ónk—v rq\l o Ži zg Õl jo no l„p{m em Øm òp #k Ðnçp]sm  l Žl 3p+wý.üa‰üx}ÿåx3yu¶rAk ú Y îÝWé¬Uè6]ìDYíÌ]ïzaû÷ªaùù¶`ü÷PQÿô‹IóXè(VækVä4VåTVçKUçðTä:V ãÅTè‘RíÕMðqKì~Aî¤<ð=ò˜=ïE[ðµ‚ÿú=dò;YëÙaî}cþòÀ]îJZë6TåžTè Vì©SêîWî¤cû:m¬n èn=iÊh Îk Ek þ¤l f cj Zg  l &k –j þk ÿÀm ùqIsDröo  n Zp çrÙtŸ‚ÿDûÆwþ\|OzÇsVnÿQfù»Xì XèmVê¾YëXè÷Zìð]ÿò«aüö]ûø7^ýùO÷EïáFîôLòÓKî³LëçMí5Mï\Oî-KìLí Pð$Rî8Têÿ\ì`^íÂ]í,Xì~WêLVêYêBXé`XçiWçÀYéñYíohû´zÿ3€ü0z«€ Ãÿ [’þ¸‘þr—ÿé©€±ɰ­>¬o¯Ö¹,¼7¯«_©µº ‰£Ž¢à¦Fže‘ñœ,ª#·ù´ªò§§—¨ˆ—ˆ˜–¥Úªñ®@£ì˜s”ä˜F¡v«F¦ýœ:–•”“¤¿¸Ö°N§P¦}£3œgšt¢‘©Ê®H²4­V¤“Ÿú‘Ó‘ýέù. ž Ï—À£Ú °–²›Ž¥Ž܃,x´vHt®‚ß©ƒª;­ د]§°¥¤¤Ÿ™SšöžÕªU¬h¬ª¦d¦¨= –^‰¸‰- ™®¾ÏÈ—½‘¤š›W’ –Ñ”×’ ˆ¡2³'µ²¯š¥€˜_Ž=ˆ‰…êŒЙ ó«´²ó¬D¤Èš—xšø¥£Ù©‘¦Œ­þ°´¯¯¯4°¥©!™ÿmŽHˆ „ | dŠÓ”w’®ÿ ˜Œû.ý[üüMžúûª ûùÌ«û÷~¦þù;•ÿø÷œÿó ‘üõÐüšlôŒh è*Y æÅXòíLõ NíxQê–Ué3SæyUæHVå]UäâXæ5YëXìóWêNXé8VéAVéÂVèÔWé§Wê°Wé|Wç§Vå*VålWæŽVå(UãüVäûVæüVæëUä5Uç„TèùSí LðøHïÝ?ï=ï3:ïÓ<òÆHõÅkÿ÷)^ñûYí!`îFeýñ^îJYêCUæ/Ræ¦TévTê•XëT]õgðn Ôp m ®nRë­Lï~Iñ @ï;îm?ñ>ópDó¢ZñZð“\ïu_î¿cî¶_îÓZë%Uè‰TæVé&VëãUê¯Uð|aþRk ªs$p˜n Vn Lm øq Gn Öo gn æn _g ™gþ’i ðr o šs®p àm p¬nGmÓo¹ljn`p m²iþ^ù Zö*YðïZî1YîÐXïþZïôZïZò6Xþ÷š]úú5^úø¹jüöÇsþø\ñOï:JðCLíªNíÍMïÎQòŸNó›LôøOîðRìÍTè2XèYé|Wè VçUçIUæéXæŽZéb\ìà[ëXêÍXí•]ï/\ðŠ]óaüú×gû6oû‡ƒû ˆýYŠÿ˜œc¯°<³ —± .¬f¨$Ф&0¤«gç³ÛÙÐ2”²(y¯'£;‘t£3³<´©˜¦ɤ]‘¿~äŒ;šz¤:¤ù¤Ϥg§Á­²­{©:¬5§ì¤²¥Ĩ‹¥ö£•ªˆ³H·ޱ©Ë õ™žѨðµ¹ ·½µ¡µ»­ø˜ µ‡ U“ 7› œDŸ Ÿ1ž[¦Gµ›µV¡¸ ׎Æ•·’ÿ,™¥¢Ù©õ¦»™Ü—u£‡ªþ«#§Ç¥Ÿ¨’?œì¤ùªfª/¤ǧ¡©•ª«³§¨ ©«ª–Í”»›cf’¸›«¶\»Z©Zœ ›mƒʉº˜C£Y®c´­ †§ À¦Ÿb•%†¦‹7“Œ¦¬Ÿñ“=˜ò¦ÿ÷¯ÿâ£þyh~{}7pFy îŽ ™þ4—þ%“þI’þÿŠ”ûýj™úûº›úúM úùº¥ýô™þ÷zŠû€øncî¦W è—c îÒuò}sõ˜]ì¢XïZSílRë^SêœVêXëxUéqWçVæéXå?VçfVèHVæVçXXéWè×U æŠWæ5Wè|Xè{U äÇV äVåŠVæUçúVæBUåäWå6Væ©Væ½VæSèðRîYMñÔJîçHïšCñ¬EõòHø»<ïžSðZï~^ïmbï,bî­`îèZìÐUèÓUçwUéÆVêRWëéZð$^û¢lDo (m ¹o Gm bo Wp ßo Yv zúq[k {j ;p +m þÒhþk Lp ‰l k ’o þYkÀnÔmˆkÔkn¨eæ`ÿû3YóWñ?Yñ„`ÿñj[ëKî8JïMò#NñÃNï«OïÈOî˜SëuVç„YçÆXèOVç;Tæ,VçjYædWç™Yé[Zêt^í®^ï¨]ñ¯^ÿóü\ð[ð–_üøaùþ¬jûCsü¦ý µ}ý‘“ÿ §ЭŽ©"3¨þ¤Ǥ_•&Ò›‡¡ï¿ÿøÓ"éÖ#±T«a Ž’“œD¨{±\« §ϨÍ“€aœ¥©ç®ì®±³®¹з5³7³C­aª‹ª‘«-£X—c¢/­ô¸¸x³â©¢œê£|ªH³ý´µã´ݯ¶£ó!” ŸU¡y @¤b®¼·Ò¶í²’¨Ž¡=›û|ㄆ‘Y£«/¦ —v”Ë¢Ö¬Œ«L¦ö¢–šŠŽ>£·«Ø­p¬"ð¨!’©p©¡ ™Ò•û—l‹|¦Ž &E…ƒë¿—î™ ™¤˜ Œx„1ƒóˆe–¢¢ ´¹Cª#9£"¿¥ì¥'˜_‚â~5ᣕ©ŸÅœ‚—£2Ÿ¤Ì|xo ór SŒ ÿ—þ †šý+—þü™üü`›úý>ûüœûú^žûú” ýöV˜ýû(‚ùÝ] ôUì¥Yëkòlhñ¾cížSéDSëpTèßSéøUêÝWë°]íŠ]ëNWç>WçóYç¿VèˆUééVé‹Wè Yç WçVæöVçåWèÜXçæUåêSånXèWèHVçêVæ~UçþXéœVè°Væ&XèVë8Sñ0MóMî%MïáKîLò7IøñHôNQòÚ`ð-`îÎeð&dòÐ_î[ëNUçþSçÁVé‡TèÅUè«VíYø”d6m Go 2j ³o ~n ’o ør — Œ"l¯n 6væu ýþgÿ$k on oo Ño .n Xl¾kˆh‚iÿViýÒdüàYõéUò Sî4Yò”Yñí\îbXé¢Xé¬Wì¾Zí WìxXìêZí0ZðfZÿôXþö'Xþözaþó›Xí¼Pî-Lò€MòÉMíáMíGOê§PêÏWêPUæëV äXåËXæZVç¹Tç#Wç.WèÓXê©[ë^ïã`ÿñì]ïƒ^ñp_ÿóV`ýõ_ûøÈaúø­eùùâmúû!yý°|þ,…#Ÿÿ~¥¼£Á¡N¢ š‹½Ž;™F¤š¨ð¬Çžd™’•µóŠ’ÿùŸ,©ò°а §¡“´ŒÄšk£E¤æª=°ã´g³¸´6³t´”²*°Ù²Pªž€’Ü—}¥:³¦¸ñ· =«l¢R˜í—t í¦ƒ¦š¨î²ë·­¹ž-›·že£€–ÇG­d³в ´´«¡Q“—s…ö™«¦u«R¨,›U–‹£ªˆ©º¥ú¢Oœ¯ŠüŒ¤‹°¯!=­ ã©k¨u¤›8zz$}6}r‡ .‘½‰ízVz-€ÀŒÌ“=Šžˆ©‡øŠI’Vž‘·—Ì•±¤h£‡ —ÔŠ$†«–ÿ¢¢áª¢¡þŽ@‹N‘Œ“ JŽ]Šë€›{x ä†b”ýš û{¢üøP¡ûø­žûü„¡üûFüûЛüú˜ÿô1”ÿ÷ }ø|YñZìá\í‚bôSVóéTì!Né€UéùVçÀVè‚VéoVéºXè3YçbVæþWç{Vç±WèyUê‚Vë]TéðWæWæàS äWç4Uè¨UæˆSäýVæVçUè[Uæ„VæPVççYêñXè"Wç VèàWëÈQîáPîxMë½OîJOïPZïYZòORï2SñºaÿñCbÿïêbîÇbÿð:_îCZê…UåïWèèWé›Vç¢Wç)TëãTòŽaþ³oÑqn o •nho p †}ÿÓ¡¢¢»r þn »–Z™"u xl ûo km þto ÿ¸nªjÆfwk jüfùþ`ö XîTínSð¾VðˆWðj]î[Yë«Yê‹XìšYë‘WêüVìAXí{Xî–UÿñÕTïáRï€WïmWì€Vë:TîKïNìOîXQêRé;XèBW å‘U ãæW ä V åDU æ@Tæ×Wç,Wç®XéXêÏ_î?_ña^íY_ë`þóµ`ýöÏ^þóÞ_ÿòKdúö1føùrýÿvtøx ã‹U›ÿzœQ¡ý©¯¢qš “ªU‘e“ðŸŒï‰.9Þ…·’]™ɤ©i¦óžšÙ”¸˜œÁžà£õ­z´È·eµ€µ:± X°!¯®ê¶#°²^¢ó›]‘ŒŽÍ’š§4µj¸߬“ $šÙœšÌšº’Sœ0®5¸"T²!p¦¢Á£^Ÿ–­Šב½¡‹©þ«ž,“ƒ!n}Ösüœ8§‡¬’ª! ™›@¥5ª7©¦í¥¹¢é”¬=Ÿή:¯`­¾©ñ§Ó¢‘“Ÿ‚1zóŒ d˜q„ O}Š Є @{‰~å|€Θd¯ܘš*—$˜³¦EµΠù“%¹›E–Œô†͆К¥m©Ÿÿ»“ÿ!²“g™d‘!‹aްŒŽˆÁ… àˆýtüÝ¡úÿ¥ùøþ£û÷_ ûú´¢üúæýû ›üûŒ”þ÷ïˆôÖpõ"iôiï¯Yì Rô{PóÝQë RéƒUç?Wæ-TçþWé8Uç½U åT ä—UåëUæ‰Wæ_VèúWë UìóVè4VæGWæÐT ãSU ãU åÂU ä•V ä•VåVæ?SçµVæUäÄVæâWè`XèVæTSåÌUçÞSéšQè­O è˜QêÐTêXêC\î Xð`ýóócüôcýñÞdÿî_îèaî7ZêVTçUèDWéWçEUèxSèWí™[õi6p 7m …n ¢n‘l ÿl Öi ýn}f€ ½p Ok ΃º’Ås òl m Øn ¹n ÿÊm £l lkßj~hûdúï[öxTï¢Të2Sí\VðœTðüZï]ð\[î]ÿïúYëQVê*UëbWëuWìIYí9TëöTìÙXî¡WêvXéÏYíMèÿLêyI è2O é›Sè6Wæ«VänWæYèWçµWç,VçYWåjWæ»WçUYê¨Zíñaÿðtcÿï]ïYñ ZóO[ïÍXîN`ýõ¡eùúgdûÿm5lû‚ÿŸÿ –]£&±v±ªÚ¡UäŽ3„܌兿}Šu'sž ÑŽ£”| O§Ó§r6•3”2™ÿbœ4™!—¥G¯‰³ ®´#I´ Oµ µ"Ù­!û«c¬ ¥´!?­¢–{Œc‰¸Š~‹Óœ!²¶²§Σ/ ¢„Ùh;Žò¦±· —°!¹¤¸ .˜ƒ•€ŽŠÆšÊŸÅ‘ˆ“‚ *þ$,”D„UŒM–« 5©–©-¤6 é¦ç«©¬¦3¢*ž]“§‰~™X©È®A¬ª«§îŸd ‚à’(© €¶<Ÿ–G• †C„¬~ ƒ –“©'Ÿ œÚ¦¯X¤ŸŸÖ™s–à"¶… l‰ê†sŠ „ FޤŸت«¨^¢ñžïŸK¤Öž6”Í“ט®–LŽ ̉fýýû•úÑŸúþΣûøÒ¥ûøa¤ûú ¤ûü œýýû—ýûŽþõ~tîïiòaópeïrWìÊRï¬Tí(QèþUéüWçîVæQUæEVç#Uç¤Tæ—UçùUæRVæÁWæ–VèìTìÎVëwUæWî [ï)ZîYï’XíýXì[Vê6Wé[ê'XëÝWëäTëýXí¿Wì·Wì:ZìœTë(QëÁK ççO ç®RçªVæ8UåŽWçWçVè3XèkVæUåìVæPXçeYëbï¶lþòzfýð³^ÿï³]ñä_ò ^ñx]ñ]_þôÞcþøZeþûlhý–fv 0Ž "šå¥Lµζª²«H D…ž|×{Œ{†tf†kþc•Ë פݪ„ªž£ͤ(¦g£¾ž ¨u®¬#®"ƒ¯W¯"Ì®%§!ò¦“§Ôª!L¦’Š| j} mŠ.ˆÉ‘›õ£3¡Ž¢¡F¤© º—‘éŒ2œE®Ö¦8s£`¡8—;˜ÿ·˜Λàš€’Ÿ‹,­­¦ŸÊ{%‰ “A ’«+«`¦ü¤‚§©ƨÛ¢~ؘû•:Ž –|§­5¬õ­Œ§_£:™„“ë k´¸¹«Þ¡á¡Mœ¾Œý€òŠЛp±¬Z©¯е³ÔµV¬d‡ŽÜ€±{À{ ~Œ œ Pœ'¦k®ݨF£$¤o¥å§K¢—–A—ÿcžÿ–ðŽ Óýë™ûˆžøwžúþ†¡üøK¨ûø§ùúç¢øýý˜þøˆŒøÐzîYeéÏWîOðèWëøXêÜVéUSçwUç7VèÛVè9VèUæþUåÝTæoTèªUèìUç¨VæAVåÿWç?VêõYéøVæ¨Wç$VèeUèU ãïT àU á]U árV å€ZêUëÈUè&UåVå Uå„VæºVçÌVééVéäVèµWé"WèfVæ·UçQU æíV åŠXæPZé‘cþðßeýôÆaüô¶hþö†`ò [í‹Vé|TçUWêÂ]îGYí§SèUêtTîô[ùmc>k Ïn m ÿÀqm wk }k Ïj ðp €i ÿm Óh ohþ±j þkhÿjk ÿum —l l ]n ³m QgÅ^ÖWþ¥RýûQTðpWêSë›TíþVî±WìO\íÇXíYíìWëmTêÊWêKYêjXëjYì0Wë‡Yíi[îÝXì Yé.WêJUëfOè"SçîWçÊXæ|Uå«WägVæðWç|WèPVç„WæWæJWç³XéíZë¤bîÁcÿð^ÿïµ[îv\î{_î8]ï/[òÊ^þóìaöúdúiüxK‘ ¦³µº· %² @ª" C–‘’Mš œÿL…‹2Nœæ¥ޤªÕ¬k«à¯´¶M±Ú¨'§ U«Ŭi«ÿ­¦®̪w£u¥»¥Æž‘•-‚ç2`…¢Š •—™™õœƒœj1¡ý¢d˜‘…›, Mš¦›A©W¬à¨¢C¡‹ 9 óŸ:›W˜ÿ—X–þ!µ–¶Š‹¤–Z¥š®­ ª €§§‡¥t ‚’ŒˆdŠÐ’¡Ö‘1¡‘­è­/©0¥#£££!³º-²߬TªS¨¾s€( •„ S— °†­/ªΰß´áº@»2°êœÒË}›qñlІïƒ¡®¥а¨¢O¥´¨U¦ÿË•ž—ÿðšý2“ÿ¬±–þþË¢ûþŸùœúþžžûûG¨úú ¨úø†žúùÖšûüølìU æ”Qí}NíøUèIUæmU ç˜R çaRæ Tæ¿Wé¾WêlVè¯UçÕUéÐVìVëxUçËVå{Vä}UåYVçñWæ}Uæ-WéVékVçGVåV ãW âVã½Wå\Wê”WëVçîS ãåU âTV ãUæÂUçUéµTéøUæóVæíVè[VèVç‡UèÓVçfWè´\êî`ðgþõŠfüô2hþô añƒ^ïpWê§Wç¶Xê|\îkYìmWë0UëœQìœYö_ÿŒkko  h €l |l n{jún Fo _j n}k en ýn ý·r ý_p üvr³j gk o ªh Þf4TÑRþ#Rûý{Tþò'Uì¿Uî²UîUíáUëòTêÊTêLYìàYê8XéjZè‘VèÉXêŠUëUêòXêÅXìáZìêZéŸWêïZì6UêpUç~VçvVç VælVæ—XèWêAXëw[ê WåfW ã,XåŽXé°YëJ]í#^ï†_ð^ïm`î›[ìJZì ]îa^ï']ò`dþøzoþ rþ.Œþ §ö·x¹"h´#A¶ 1¬Ô¨«¢õ¢Ø¢¤§¸¥½¡"–]—®”£$¦\  ÄšÜšý¥ ³Œµˬ)¨œ¬<®Y­G¬»«¨<¥Ÿ§d¢–’|Љ‹X– |‡A„: ™à¡ ¤ѤÙžМÊ¥w¡äšc™P7 ž´¢P¯†¶Q²ç®6ª)£m¦a§•¨ö¦›ÿ<—À—fŽ\j”¥ý®M®"¯#ª!Ù¦£E—C„ Õ€!‹þ!î…$‹Š5ži°®ö£žŸ¿œ×—ë•ÙŸp¸¼À'·€¯9©|¥’’áƒ)‡ ·† ô™;©ú¨]¦ D©d«e·Þ³¸¢²”˧z i ŒJ“w—½œÛ ÷¥ý©È©Ñ©Яæªâ§Ô¡¦E¥ͦÓ ¡Ÿ(©g³V±>¥†¨S—ÿu‚aŠm—ÑŸÊš$¤‘­à²‘©åšÇ“–ÌœŒÔ¤§zª—²‹® ™«#£¨º•"S˜Ž–í™á‰«Ó´á‰Ù–ÜùŽÀ› d¦h§n¥v ã”]…k}ÈzÇ÷3’*‰Öº¢¼šr‰È}Å€&ëx|ÿš³#ÆÁ £Â’?‰/ˆÇ‘´“V—ïžšÔ˜O˜šŸ¤G¥‹”ªˆè‡Ë‹ç††EŠÚˆ°‹ˆ‚ˆ$•˜ÿ¥–•ÿ7•þY”ý²˜üë™ûÊšú%¢úþœ¨ùü œøý+œùÿÖš÷þsŒüõn^ÿð—O÷öL ïBO ç°Rè¥RéÂSèÐRè]PëtPíšPçæSägVåVæ“WäUåhTåwWæbUäÞUåVæWæ_Zç‚jëkëGXæCSåeVçqUå·U ã-W äŸUå!Vå‡VæÂVåVçÛZì[YîVé©VæVæUæ¹VçVé:VêIUéFTè>Tç©VçVçÏVçèT ãÄVåeXëÓ^ñÐcýôX`þòÕaýóoaþòm_þñ¶\þó¦XîUæ†UåVæÁSä=UæÄVì’UòÍUùEZûdd úÝh üñf úAdùf 7ccVfñhZhÒil .q†l úµo­i ël Ÿj]i »^ Wþ‰J÷CMý÷õUúüþWüûZVðÍUì˜UìØTé”W æ‰R âTåôWè¯VèpXç‹ZèVqðœtþôqZïðRè4RæAbì3lð[ëhXêXéDYç§T ã¥W ãsV ã\V ãYæÄYè»VæÔUåÒTäGUä×VæWé Yì9_ðäaþò~`ÿòµZñR]ðr]î´]ì;\ì1Xë!WêYYë9[ïð`òÒeÿôföÿ ŸV¶³ö©ÿ¿Ë ­Ë™ u‚Y€‰A˜Pœÿº”Œ‡„ä~ê‰ä›¢¸¢G¦ت‰§¬§ШÉ¥zžÜœi¡Ù¤'¢¯˜ú˜s§ò³u¯Ø¡˜œ[š£ŒÜŠT““’(#—°¨'µ³¦Þ‘®h”€˜ ›¾¥ ¨I§£§Y¨*¦%Ÿµ†„U‹ö”Úš¥´¶”¡¦?—ÿ‘Ü›n§_§~¥·žŒÃ~²‚ôޱ—9žž€ì–‘χž„^g–®—²†y„›”ô£§ \Ÿ•2»• þ“‚’ “…˜šv‹P‚²•4•f™#™Ò Ö£÷›Å–Ü“;}’}ÓˆéŽÆ”d‘M„§„Ú“ÿ­‘ÿC‘þˆ•þ+–þî›ü{šûåšûÿžüýA§ùù¨ùú–ùþ΀þþfpôšUñ~Kî"K êåQèPçÀRçIRçßRé)Pë–OìôRç\TäöXå WäCVä-VæDVçìUæõU äET â·VäZVåWå\äî^ä÷Xå¼Så„Uæ=Uæ TåOTænVç=UèœSçvSäÇWæRXêªYìbVèøUä[U ãÍT äATæÓWìáXðÉSëCPäOUå¸WåVæçVç™VæVé‰Wí[ÿñ–`ýó+`þòeûõ­`ýó`bþï4[ïXëTåäWåWæõUæßWê¯TêÝWï(Xô­[÷Î_ùî_ûü`ü„Zÿ‹]ýQVÿJaX`Ecü6lðfvgFg ùæhÿÍk %g˜Xû]ZCH ù¢Fõc?ó¢Mü÷nWûýÁYüý€V÷BTñÞUîVëìXéÜWè¦WèkVçíVæVXè!Yé¶]ë\[ì¨Ví«UìIWê~VêÏ\íxWìIWéßXé&WéYVæ;WåVå‡Uä¯VæÚVçùVæTæàVæwVæ…VæXè,Wë›ZîA^ñB\ð‘^ï\î\ím]ì‰[í‰YîEXëõYéWê£YëGbýóƒlùôgüþ‰NŸÿ§¦ü¬ Ò§´œëÃ} t kz _|õ„÷{uyåŠŽšæš¨s¨n¡§ *žœ+•ç‘”UvŸÔŸ¶›&“6™-©¤}™“ø—j–‘W˜˜‹"”s¡K¦ H— ±Œ¢Œ‡Ñ”ÿzš«¦Q¨à£]ÛÝ£ù–Yƒß{ö€£E’9°A‘ ¼«tœ1”úŸ©¨ª ¥àžRŠDx [~z‘Çžç¤)œô’²ãK‚‚k˜¦8£è™—ôžt¢Ü›p’{f“²š*—S™Êž¾Ÿ›‡ Xw¹ŠC ¡‘¤J©®Ì­±¥‚Ÿë”Þ}F| ㉠ü” ]œ ßœ¯áˆŽÿ•ýû‘þý’þ4•ÿ ˜ÿL›ýþÓžûÿ"žú¡øÿä¤÷÷½“ûú9€ÿØd·Uó1Hè=NìQí:Qé¼P älQ äzRéþQé?OêüOè*SædV å@Vã?V ãNV äÇVæUæÇUæÝW å(U âUä¹VæâVæAV äXã4Wå]UæªUæUæ‡VèsVéVé*Uè­WèXçeVèQVë¼Vì¬VèiVã~U âmRãïUæ}Wë.ZòºUíGQæ°UåRXåïVæ·WçVWè,WêŽWî^üôÜaúøäaýôæ\ÿó`üöj^þòu[ïZë.WçVçŽWé±Wç%UèMTìÝVïè\òÿ\õ[÷Ü\ü³[ÕS—QþþÔMûÿòVý{VÿÿYú„Z÷{`_ó]$_ ÷ød\ìWþûPúBHûDAö|;ð“>ò/Ký÷óVüúiXüüoW÷+RòVîu\í0^î¸\ì6Té¯VçÄWåçWæœWè.YëÛTëlXë WìŽWìSWìCXî²WìVè%VèóYéZXç.VçrWè!VæUæVèVç¶UçÙWèvVçÌWæVç±VèôXëõbÿòm`ÿóÅ\ðb_íYìã[í¼[íéXìDXé.XèÌZéj[êÃaþò fý÷ihÿûPu”Žõ—%‘>’þž©¢Ÿ•Ö‹@€•s Åk ©nÒz~ yLxç…êš £ü¤ ¤  ¼¡5£˜°–¥™ÓœÛžžŸ"¢6›©„‹Ñšà1‘ú‰è—¼™‹œà¡ǘ°•p›Ù—‰¦‡íŠþΔ^¦O©l¥Èž ÄŸ‘}&~ìž”¾ø‹‚éxì£-ª5›T’Ÿ¬©–¬J¨žü"{|Ä”·£¬¡Q•¤“<˜»’P‰¦†Θ<£u§¢¾ž6 á¢|–AŽ_‘í”äž|  a£“¦¤ÿ‹Ñ}4”ã¨vª±«õ³®¶߯o¨ƒ¤¬Ÿb‹ Ë“ »” —™Æž‹šHÿ~þÝ—þÿ ÿ+•ÿ^˜úDšþúCûü) ùþ ÷ÿŽšø÷Ëvüõ8dü¢Oø†Pí±Mê´OíEPï]RìO ç4Q å,QèïPêÏOêPæ³T ãVäSXäUåøW å^W åW äT äTWæ¸Uå«Vå~Vç™VçW æS åÁTåUæDUæÇWç¥WérTê×Vç'TäVä¨XånVé³VëúVéoVçuTã=V ã‰VæØUæýXêÌ^ñ.Rì´Q å‚T ä„Vå'Væ¿VçÅYêZìëWís[üóudùùç]þõ’_ò+[þö Yþô[þõNYòŠVê®WèòWé±VçÁUç%Wë½Ví5WïóWò¿V÷ÏNùÔMý†FýçFúÿ&Iùþ´OûOüÿ„QüüªPþú{TþæNýNü­FõPübIZQýüLý÷îH÷[7òâ=ñ÷<ó°Jü÷YSüù|Tüú÷Tüþ£Tþñ­Yï]ðM`ð>XíTèSæyTåêVæjVè¸SêXëTêÈTëÚXìtXì`Ví>XìÁXè±XåSXåuZè8Xé«YéVæƒVæØWçÆUèØWèˆVçÂXçÛWçfWè‹Xé6WêÞ[ï”\ô†býõ¹^ÿòYï,ZðÜ[î8XêžVç_UçEVèûZêÉ\îÒbýô jùý¾xþ ‡ ‚” =M…Çž•¥k¡žŸ –ÛQƒ °w w »z ¤ ¡‚2~D‹I¢þh¦¯¦:¨y©Û¦œ¦±žУ६¦¢˨4ª ¢<…þŒJ›.¡ä›çŠ‰Ç£i¨%¨ŨZ¨4Ÿs•Ž/I…‚.ŒÆ“<—áŸõ¥n£î äš¸ˆ.x†ˆœ“£’Þot Æ£`ŸM’õŽH›L¨Mªr§ † ’–ƒ·}æ‘×¥£¶—Ü™%›þ»˜þ=t™¢‚¦|Ÿo“Ä’Š•Þ”Û”5š¡W£¦P¤þ™þ†€Ú¦s¢e¤þ±D»ÿž®ÆŸ& –¢ÒŒÀ„d‘“‘ý–éœQ’þþÝ‘þ „þ½’ÿ”÷7’ô”þõ<œüùpŸýü •ýû ‚ýó¬]ìdUð PëOè‘NëÞTð˜QñçPïîPì"QìýOîÿPïPí@Sç=Vå™Wç@Vç­VçQVæVå§Vå¨Wå-XèbXéÓVèÒWçVç¸V æTTæËUå¤UåÑUåUæ§TéæTí WêåUä¥V ázU âDVçUé¾TèÅUçúTäôTãVWæîWè€cì~fï—Tç*Q âÄWåãVèIVçÝWçÌWé$WìØXíJ\ÿðÜ`ýó_ÿòÆ]ò•\þôµ[ûú`÷ÿ«YüøêUìÃSæŒVç¶Zé`VéaTé™Uê‘QéjSîPRò}Fô£Eýù¶AûþBúý#DûûEüüBHüü¦HýùÅGþ÷þHùœDú¢Cÿ÷§Fþ÷T@ýú >üükIüúGòÌHó±Bó{Aõ"GõVHüõÿXýø Xûþ±Vþö;Wÿôíeüðc…þøÅw÷’Zí:QèBSæIRäVç‚WèÚUçfWé®WéæXë@Xë£XêAXê—VëÒWé³VäV âWæ©XèôWçÖUäfUåVçhVæ%Væ÷VçøXèÊYêWêXê´Yë¥XîÎWó•Wò÷Zðc^þóñVÿóÄYïŽZì`VëÒYì9Yì‘^ì=]îÌ_ÿð]eü÷‚rüŽ…þ oŽþ Ïøa™þ‡¥b¥¢¥ߥ0¡³œ•‡|LyóvÁy{ LŒº§þt±ÿü©a©ú¨¨õ¨•§yª2©ɦÖ¦k¯.³}«¾–·˜þ⢦ ¥N“]—~­qµû°“®g®]¤¨Xœ›<Œ „‰בë–a¢æ¤ Õžð³’ž‡Ò…ìŒy† Hšn ­‚-¦+•ž™¢q¨Ψ{¨ Ò§q›ZÖ~¨‡`ž·¡”¥@‡ëŒ“Ïš‚£C¤–,ƒf‡Š Œ’f”…‘ù“š1˜b™«— nswl‹IÔ’ç¢Í·P°—I›™ þƒŽ|R‹!” Ù„b‚ åˆJÿÌ•ÿú½’ôŠòÄÿô)’õ}ü“xûbïMéÍQíÚPì:QìùOíqRîŸSï5Tî=Nì¿MðkOòPïÕSëèVé0Wè´WêƒXê/Vé(UæRåçTåŸVçŠVéäXëmWêwVèxT åÒUå»UæNRåöTäxS ãÈUååVè—Ví›Ví-Vç»T âœT ânUæþSçVéõYé\VåUæXVèÙXê¦gíÄfìRWç;TæìVè¥Xê!WèyVèÀXé4WêŒXëºWëYîÚ^ïZðZÿõ‚a÷ýö`öÿæ[ü÷—WîOVé&Yê1XêUéVçëRæÓUåuRæšTîPñ-KýøèHúû$EúüaEýúNHýütIýühFþ÷»Gÿ÷ E÷õ@öADÿ÷8?þöK@þ÷ @þ÷ãAÿôaEñAHïEÿó>Gÿö¦Kþ÷yOþ÷UcúùG\ùÿRZüü‹Xÿóýfþî½ÿõw|òŽWë2Pè«Så—UåWçºVéòWéÛWéåZê YëµYé­XæfVèÚVç?Vè Wç¿Wæ®WçóZésWèÒUå…S äWç¡WæsUåVVæ0XçYê(XéŽXêôYíŠ[òÉSýúTþùÈXòÝYñMYò‚ZðÀ[îôXðZYñsYï^îd\íî]îŽeöØnýo}þ Žý —üä£þ:»·>¨E¥®žéœ>˜9•nŠkwss5w  { 툟þ{¬ ¦0¦a§§Bª~«|¬ ¼¯ίÍ©а'µ~´#Ù¥"‡ ÿŸ~¡À ã’š"ѱ q·µµ…®j¬€§S¨‡ª zª ŒÔ–qŽ<—쨮§Öš›=“ ‹TŒÓ˜­œÝ„ ¹­­°ž#„)©¦¤.žœS¦8©þ§¿¨V¨mžÂŸ‚—ƒ°‹™‹އ¡‚W!‰µL  r¡“ ”œ†…‚ƃ‘xuš‰‘QŒÙ‘îd‹Ü~vx Ïo Ïó‘5ŽŽ—Œï˜šÚ’²– ¾’X‚ f„÷“ØšÀ“)ô|;v Rv‡þò”ÿúß—÷µôSõÞŽ÷lùR„ÿcþÒSð¢QêQì[PíªPíQìÀPë­PìLRîjPïÚNð©NíTë-VëÙWêúWê­WìÄWì1VêÐVèAUælSåÕUç’VéµXë?Vë/VèŒUä5Vå5WèmVç~Tå¸T ã$TäUUç¨Uè"UèûUæ½W ã_T å‘Uç·WèaXé»VèéVå£Uæ³VéqXêmXé¼XèWèTUéÞXë°XéVçWé–WéVéSUéÒVêëYì XíGZïYò—_üö_ûöl\ýõ-YþöbXÿò>YïXYìíUèLVåìTäêTãïRärTçÔRëÌPÿóºMýøLþúUHÿú FþüøHþúmDôžGõÈEö–Bö¡Aÿõ:Dþ÷q?óÒ>ñ Gò¯Bð€?îÆCò,MÿøwMþöîSüùAaùù§_ùûÏ`úúÒ\ÿôÍ_ï=kîÜcë»^îSê§Såî¥BòIDþöHõkBîPíUê›Xé*Yè?XèkTçtTèH\éÁnîã[æìRå=VéRVéÛXêXìZíÒ[îxZñ"\þó[ïUUêÈVé³Vée[éiWè`Xè®VêZëZê¶XëDWëÙZé WèËWè"VçeVèyUç¦TèÂVëŸSÿôæRýú‚Sûû¹Wüû‚ZûùïZýö·aüödýõÇZí”Wé÷VéJXèŒXèQZéK]ïÙfùðnHyû ¸œÿJ°:¬ý§û§µ¤/¢¸£·ž_žª£¢КÏ•V’á‘Ç£—©k¦0¢ñ§˪€¬° °£¨¥¨¦ޝ{°«}§x¦®8¸…±¤œ¡«¨Ùµ¬ݧn¥¬9´ ´c³à°E©Ÿp?‰jŠ—¾¡ µžÙ— Œ'‡â‰ —–Ÿx–G‘¬–!`¢M¨{¢²¢n¨ÿ­Ûª€¥‹¤ ¤Ÿ/˜¡”#”‰<ƒàœW«6³²´#«D£s¡ Œš™šs£³¦E©ت¡¤6—OØ‹w• ¡U­ ª\§û§f«ý¬§§ó—ŒŒ§ ‘†’ÿ„š4£¨ާ”¡g•Ù‰~ ÿ™Š÷¡Žôî‹óôŠò‰ò"ˆô|ðpZç•Qê/PëNRëMìðPíQë?Ré¶QìÙPï OíÃPé?NêNQêUæTV åSYç Zç3YèòîCòÓCñCòõ@ñ€?ï²Dñ{Fó5Gô Iô SÿúRîLXå¾UåàVæUæáWæUTç3Uçë_ènZêYWì±XíVìÛXìšXî*Xí¦Yï/Yóš[þôqXïòXéWçÆWéÆXêZékXèßYê¬VëÕZëaYë-Xì6Xê·Xë¼VéæVçVèlTèÐUèVë$Uï&Oþ÷ÙSûû7Wúþ¯Yùÿ`]ùüÚcùû$aû÷ô\îVêéVéšUè,Xê²Yê×^ìbóÁlþþÓwÿ„ ²©:±›®^°Eª ¦¢ n¢©ý¨ß©÷ –˜t™d§}«õ§ͧ§B©­±R±>¨¡£¦Ò«¿«5¦©¡_¦j³Ù³v¥•8˜ªø¨Dž¶žB©Óµ(·´ž²?¯˜¥•›é’Ö™>« íÅ®,£Å™Û‡^‚4…ÜŽ’ÙžªY°g›â‘dš~¦ǨG¦X¥ ¤h£>žù–ŸÕ'”ö˜ÿ4§ä²µàµ6²«ö£u¡â£›”Çœ¨©G®‡®Û¬• ½™ƒ™8šK|¦ÿ®¾¯@ª¨Ú°{² ¨Ášpf†°À–ñ˜—¡]©ªQ¡o”~)‹üxŽôïŽñvˆðˆñ‰ö ‡ö=pîAR ãiP åHP êëNíMîþNí|RëVêUì"TïNîµNìkOïxRê T åVå9YæåWäžUåUç/WêìXípZî;VìêVè Tç£Xé¤XéTçùWê(VìºVëÀYë“XêWç&UæúS ä“V äRWç“TélUêØVç_WéÀXëµWëyXéVæ˜T äáXè,VéÿUæTäUæÙVæßXêTYð‰WídWé$WêØYëbWêòXëßZïXîVìÀWíªVì˜WêhWíÊYðo]úùñ`÷á^ù_úýFaüö1[ì[TéúQè²Uè²TçcVç°RçmRê™Vñ'Nþ÷SHþûÄ?ÿûÁ>öú?óBô÷<ð=ï@ï?ïG@ï_<ïØCò3HôHñ[Uþùr[ûûäZÿð‰XæˆVä[Xæ†Væ&WèBWé×Tè5Qè}Vì²[îkXîãYìUYíÊTîüXïz[ðâYð,[ï WìRXéƒXéXé#Uç>XæoWæ:SæõUè¿UèžXêàYêå^ë‘Yë1Wê¢VçTçuUèæUé³VëTRì™QóSüûÜWûþVúý¦UùýüZúþ-eùüßbüõ­Xì„Vè}WéÎXì®YëÓ\éñv>ðR>ï¼;í†@ðãAô†DóKôuOëßSÿö'bþø[ííZç°WæJXç1VçÿWèÿYêQVêÉVéÇWé­[ì§\îŸ[î8[îZïhXïlYîVìzVëUê Xì³^ïòUéýVçÇYç Wç€WçWçUçUèªVè´Zç•YègXé—Tè›VèwUè]TèŽWìòVðâTþ÷ãQûûySûü‰Sûû|OûûùSûý‹aùý[bûø"Vì¼UçuUé0XìªZì!\êšZëYï»hý¹d •©$³=±P°ˆ¯Ô¨=¥5¤ç§‡­¥°¡œ¼—*£•«¨ý¨cª¬°t¯˲ê²û¬x« ®?²å­¥ޤ®¤í¦ã° ´©©i–Q“=že¦i¡N©²¦µÆ´ê³ë³ °n®Ϋ_¨Lª\ªM¬ç® 3³ ¸·5¶è­O§¥¼§(¨â¬d³ç´@•&ŠÍ—¢”¢•§%«é©£œ[ŽÅŠZ᚟䧵]»¹Ķ²¥ B”­Ž;‡=‚$…ꇯóªw¨ ¤Ñž0œ¢†¥ÕŸ©³¢5  Ÿ¤«´¤,ŸSš5–ò•;‘Š‹£˜h› š{–ˆkükŽ÷Œôr‰ó»ˆôr‡ôÿ€ñãtó0Yé¸NêøMìŒOíèNîcOí@LëÑNë¼QízPí­OìúNëRPí]RòIUë½WçºYèYèWæ…WçZëËZðÁ]ð#WéÚTçKTæþTã´Uä÷TæýQä7UèJUèfVéVêÏWê‘Væ½U åTèÚSèíTæôTæ€Tæ‹UæU åUäÍYé©WêüUæÄT äNWæ”Vè©Vé±VçVèVëÑYìYXëóVê´WéâWçT ãX ãWä.WéHWë¢Xê?Vé\Xé¨Wê¤XïSYóQcúöŸbüõküúqlûöÙrûö_jýõÍWÿ÷ TínWê YìaUì›TêßTê¿SîNPðEMþøAþ÷@ôT;ò™AôP@óÊ@òÆ?ñZ?ðÉ>ïýCó>FóÇCïÊ[ðˆeýú©lúBfîbìxSêUSéõUèÍWèWèØWè~Wé›Uè¦ZìT[ðˆYîäWísWì,XëvXêÇSêSSêµWíy[ÿðª^ÿðÎYëYéüZé²]ë XèUXåRälTçáUéÍWéŠZé~WéÔSè/Wé?UèUéßZÿñŒ\û÷ùUûýHSúý²PúûåPüú&Nüú•Vüúª^úûcûöíYì³UèõUé\Yë³[ì\ì¸XëÀ]ï´cýõŽ]üA~þÏ›ý1¯ÿr³Ô¯:²ª¬8¦ë¥Š¥ß«š¥O Cžœ§aªΪ䫾°³9´ γ"Á²w­Í«Ù¬˜® ¬ Ù¨Û©V«¥¬à´ ¶t¬0 –& Ü«•°Ÿ²æµܵݵQ· ¹´°¿­)©â§!ͦУ€¤ Ÿó¥±{´° ¯€°¦«9§ ¨Z®S±–ZŽ™æ¤º£g¥5¨ž¨¶™ Í… € G™›HžÃ¥­;¯à­]ª ÿ¦|˜Û„•…†´€¨|o”óªH«À¥Õ¡p"—*’Ï’‹ˆj&˜™¨•œ“Ÿ“¡¡¬›6š²š_š>”¶Žq’‰”F’Ê‘ ,¾‘üZõÜ‹ó`Šò¯ˆóňòˆócõì^ð«Qê‡IêœNïèNïOðNð3MîlOíOîdPîPêRìñRìKVîÅUêjXæëXå•XæÄWç×WéQYíZðfXíUè Tå¾SåøUã$Tå¤Vè;TèÂWè'VçžVè:XëÜWêTUæS ãcU äTæ·Uç,UægUæÝUç™VæVãvWådWçEVæ®Tä×Wå[Vç¼WèUç¬Rç"UéšUèbVèHVé±Vé†TéêVæêWãWë¬WëUéžTèWé"Yê-Wê¹Vé>WêËUérUèŸUè£Vç TåðVä“WèVêUéÙUèuVéWèVYê2_ÿï3fýñÐ|úúw”÷‘îG‹õò†ˆöö`jï_Tí¾QëtTèŒSç”UéaVì¤WðæQÿñ¼Qñ´Nþó¯Kþõ¼CÿõyAôCõ‚@ôJAôBõ Cô=EóIô@SîÎ|ïHŽÿó#ˆþõЂöu}ý÷ uÿö\èE[æ\æ›^ëL[ì]Zí-Zî˜WîÞVïhVïÜVðœYíªWéÌTçrVç.VêßZìXéÎVèÐVèÎXêÞXë³WêxWé[ìZëúXéXè&UçnWé˜WêøWëXWêWê,Vê7VìwUóàUþøJTýø¾Tþ÷­SþøÐYÿõO\þó ]þòúZï!WèªVäæYèòWëXìZì>Yë?Wê_^î/bô&bûü´bþ;‹ÿ u¬z®¢­®Þ£û`… Š ‡Š*Œ’™š‡¢Þ£É¢Ä¢)X™Žž $¥ Ÿÿ››ï¦p¯G³x³à¯K© ¨ª©‹ª]«¢¦5l¥Õ³‘· m­ è¥!n¡!K í¢£™x™‰§„°!:¬§©x¦ä¡=¥K£#Ÿ=¥q©©§f¢Œ—z“e–ð²Û¹]¶[®A°-µ{²¨¢®Œ×vœ{ h–º©¸§ˆ£ƒ¤¯  œË¥~ª9šÂÁ¡ëµK¬,–éSž¥}¦›¶“Ë–œ¢rªA§á¥§¤J¥ 5žÉŸÕ£1£·¨­¥A¦§V¥œЙ ó–“ûóõïŒôåŒó Šñäˆó—†ö¤{ò²_ç«PîMHï#Kë¾Në;NêüOëZKï‡NðŒNîóPîïTðVìÆWçjUå:UçEXéTYê0XèæXæõUç“Vé6VêàXêZë,\ê&WçäQæUéXXë(VêÃTëïUîïRíúRéãUêwû žþ[®¯@´¯ߦ¨›¤™ÿù”T‹&”¤P­Ùªa£¯4” ¯Œ†„üŠú‹ ˜ú§ޱD¶·O¶ Á±¨«í§‡”Ï’š W£Ýžì§žµºµ—« £Hšß—œ ( ‹©i²é²/® M©€œ®„U…(‘T¡ª«º®a°@¥›e¡¡þx£¡³ݳI©R™ šB©–³Œ§{µ˜£/›Œ© °3¬q¦2 ¢_¯U¬)ž¢œ©©­§c‡=‹•—Ÿ¤¤i“y‹Ž:“ŸÑ©¨V¦ަà§c£ÿ¢^ áŸlŸQŸ¢‘£¬ ôŸ±œ Ò˜'’øã‹òdŒò‰ó­ˆò'†ôÝ…÷vø»]ëÄNì?Nô:Nð;LìÝNíÍNï¬Oó Nó©Oî«PîˆSê³SéHYé>Xè!WæWèE[ë WêÒWé™WéBUè‘SçæRçÊXêòZéÞhîÌ^î\TêQïlVñ UíBUìVUíTì‚TêTìFRëRíQéýTçóVæò¨?ò¨HÿøaGþ÷šDôÆGôSJòHêéuþò€üøËfú÷áYÿ÷æQò£TéUèvYíÑUñoZðàWì0VîKVïŸRêßVêîWñxVó–WñÀZï—Wì'Xì Wë¡WèuWé¥YëVé4WêVéhTéjTë3Xë@Wè¿XægWæâVç°Uæ Sæ¡WêˆZï.YïWíŠXíUñaPý÷"KûøLûú Tüù0_ûöaûö dúøJ^üöÑ]ÿò YíªYé0VéXWëèZì ]ízZêe[ìœ]ï¼`óÝZõ•fþ_ü¨ü÷¬þ³°¡œ#•þŽ7˜á–%“ë— £«P¢ĘÕ™?•©ŒÚxv{«Œ |œs¯|·¤·\·?· Ô±&­!¦ª‹ÈÚÈ££̬ž¶7¶âªk @–™ɤµ¦õ§0°‚¹|³ݯ $« Þ¡:Œ®˜Ò¦®N¯`©Ïê—£¢l¨‰œ|°À¬%›–ŠÈ„¥š>¤™šy•ó–Ö˜!¤¶$´è«1£šš–´™™ž“.“/˜þ—ŒÝ…@•U¡4¡ø‘œ‰ºlÝŸx©¦¤¤‡¦>¥ê¤x£$¡õœ­™J›ÏžžÇŸï› ß™½”ýeôˆðW‰ñr‰ð‡õ…ø]hô°UêKí7KõÀJñ¢LíòNî¨NïMï¤Mï-PïÊRíZXéVçÜWç#Wç-Xé¤Zê¿YëIXêmWé“WéUé•Sç¥Sç†WêÀVèWé¹Uê¨RêRñxRþõ¹TïêTïµTîQíSì§PëBOìÂOîøSêwUèêUæ Uæ(TèbUê‚VëHVê€UèÏVèžVè’SåäTå]Uæ(UåVç¤TèpSèäVé—Ué”Vé}TéæVêbWêWé.WèNVæ¦WèÁYë•Yí¦WëªVéjRçWé VéöTéAZïzZóÕ^þôÈhÿö\ó2Vî[QèÊSåÌUçSçäTæ‡Xæ{WêH]ï•YÿòðWÿóËRðÏPÿórFýöi?ôÜ<ïô@î>Aò§Eó%DñÛHôoKñúPëÃvÿñ pýóËaûö¯XþødQîÃUèÑUèâXëªVï¨XïWUìºWíúUîÿSìÄWî~[ÿòÍWðOSïþTíÌWíÐWëWæÑT àªTâZVçÇSéþTíÓVîŠVíÏZît^ï \í(XèêWåÉYå VåT äCVç»VëšWïF\ñéXï2XÿòËQýö9Jü÷âQùüxVüúƒ^ûøÄ]üöÚ_ü÷\\ý÷[ÿó*WíNWéçUçßTç¬XèuYèVè9VéÂ[íl^ó"cþûù_üýsƒû &ú¡§ýñ¨„}|xÒ‹«•ÚÕw‰¨À Ñ–}˜.— ˆ_„g’ùõ!›ÿw¬1´¦²¸´p³?¯4­L¤¿ŒŠ¿›q¦ïª¸¯•²!µªíK‹Á &£ö›o©‹¶Jµ¯ ž­ ¥ñ˜ö™Ÿ¤¨® Õ¯!«˜a‡4Œ-•Ïj  •.¥‡ü‡N’ê–ÿ‹©F}•„f• ±ݶªq¢mœ:’ —·›v›‰‘¨„ú‚c~°…}––£¯¡‹ó‰É’ù—‚¡Ù¨Ì©!j¦Ù¦¦¥à¢=¡:›×–Ë™‘šº  ¡ ê•ì“’ùóŒ‹òäŒò‹ðˆï²…õÏwø°VòOìqLîWéþYè£XægUéiXíäXîþWëÚUè!VçdVéËWëSXíÇ[ó[þ÷ZòŒZí¬SéïVèKTçüPåâVè6Uè'UçÐVçûVé7WêÔVè+TîàTÿóQþõZGÿöÌ;óŠ;ïF@ïðCðÎCïôEî¯GóžQó]Xð¹jþókþôIZÿô€XõÅSëÎTæWæoVêüWíUWîøVìHVìªYîkRîÑXñ)YÿñýWïkTîžVîVí"Vë]VäÍW à2X á8VãVè~Vî>YñWWñXï`Xî[ívXêíXç|WæÚWæ:Tæ0Vè®VêYWïÕYñ9TíÍWñ8Rþ÷¡Nþ÷‹QýörTüøx[ü÷—]ýöE\þöŽ[ýøZþö\`ñ Yë°Tç‹T åœUç XèXê‰Zê>VëÚ[ñcbþû+_üûquø…”û×§þ¨d—~ s | ÍÌ‹¼‰S–›§­™ˆ™œ”LJÁ…ª¢úÀ†ú •=¨„°^ª«W­Á¬¬ÿ¢¹m‹ã”u¡ر¯b¦¥´‰Šp Ísám™å‘…¡ã²³ˆ³ еï­¸¥¥¤¦{ª´°!ª v¥øŽQt sâ‡ÖŠ7剘…‘ Õ™ \–•Í”±‰N€bƒŽgL©~§à ›ø“#•e |¨ ¨.˜°‰w~Åt✘ܣí•yƒÇ㛆¤ô¨ç©7©!~¨”¨¨s¥âÆ¢à¢ržV˜Á– Jž —¥êŽÓ‹ùPôcŠñôŒñ‰ò¬ˆð}…ì-~ð@gôoPößOò,LòLðûNí$MìúMíñNíMìºPíûTîWìWé4UçqWç5WéÓYê [ìÜ\íÿXë·Wê+TêˆUéUèUé‚WéâXèJVérUé Sì.SóÁNþöPý÷Qüø®Sþ÷æXõäXöPþ÷ÏOþøYNôYRêÆTå_XåTå¡Uæ:Uç¯VéëVé[Vè5Tç×Vè#TçËTæVåSäëUæWæ/UææTçôUèÓTèëUêUYí”[î)UêÆTæ1UåQUèxYë[YíPVëÛTè UèWé,VëÑWïñ\ý÷‘_ûù.[îVéWQæŠTç5UèåVéXWêVë†VèÜWèàVéUæ UäƒWíUò OþõBò˜<ñJ:ïkAðÕBïVBïÊGëïHï}Wÿù˜`üùuhýûÀ^ýõ~ZÿóÓZñNXêTåÓTå[UéUìÛTê÷Ré™WêUì±UîÎ[þôT[ýöpWðîUíSìÐTëVëÛVç—Rä™Vè©VèÀWé—WìQXí–WîWíWìÜXìgXì›Xé‰WçÁWèÀYé'YëWíVï¼Vï°VïXÿò³Tý÷ÑNü÷¬Uýù¢Týø‘Výö}WþöÄ]üøâ[ýö>Yÿô'Xð´Xì½TçTæÚVèXê)Yë1XêYìÖ\ðZcýùºh÷ýûvúÝûy¦þ©àdå€Ç€ÁŽº‘¸û¾‘唎™Eœu–Àˆxwð€·~“@¡_­û«"¥ªK¯:¯¹¦8˜6“k’–ŦôŸy—®›Ɉ’vOyì‹ýå˜ZœT¤¿¬4©¨¸­¦­§«3«O«µª ®!9©)Á‚jh 2s-ŠŒ‘‚v„%†— ?¡ î• ·”ž R“Vˆ•¸˜ Z‘•›-¡ £”#‘¿ß•ˆ¡‰¯Š´ʧØ” ‚`nìy”㜪†|CŽX¡3ªÝ« ¨à¨ ©ʪª¬¨c¤˦Ÿ§¢\x˜ a‹U„ø´‹öÂŒóœ‹òë‰ñÖŠó0†ñŽ~ñ¥mï.Wó×Iõ|NòªMï{OîýOî‘NíµNí™Në~PëwSîÂYîTUébTæ VæVéÃYì)\ìE_í'[í Wê_Sè«Sé*Tê©Tè#Tè8Sæ…UæäVéïTê‹SìjQñJRÿöJQüú:QüúPüú°Qþ÷ÒOÿö+Qÿö(Mÿ÷€Pô£RíYSçÖSåT ä0U ãwUæ™Uç1UçŽVéªXëóYìVVë±Wç!UäyVåºUç€UæLTåYVåTæUè¾Vë|XìWí”Yê5VåÕR ãVæ&Uè–^íþWë‚UéÃUè;Sç¦VëõWí\ýö‹^üö:YíÉXç,TæSSçïWê0XêWêWì1Yê VéÉWéNWêHXêXî|YÿògRòäDñŽ;ðè:ï;?ññ@ðÖCð‘GîNÿõ\üú–]ûûß[üúöXñ.WïWîrVé—SçhUæ†Sè+SémRèVèôVë¯Wë×Yï*\ü÷ìYý÷ñVïÙTê¦UèÚTè¾Uê Vé«Vè³VèXëˆVìçVíiWì\WììYìÔWë%WìYëXçWæNVè¸Xê‘WìÚZídUíÆUð°XóËaúù,Wûù›RûúÐSüùdSý÷íSþö%Uþõ[ýö—YþôºXò$VïLXìSætQæÈVé{XëñXì¥Yì9Zí—]ÿô$býøTfÿú¦dúÞ‚ú½žü;¨W§‰žàšü•¼œ"š£ |šÙœü-¢ªÒ˜ñ‰‹uÒ} *Žœ˜ƒ©‡¯,§— b©ð³ë¯,®çž¤Óš´ ä™´‡2ŒUp…•„  b—Mœÿ3£ºžš‹—Ë‘!¼¢$¯¯¸®U¬¬ªñª{¦¡Ÿ“x|† q›À§ 4„ މ ©‘ Ê™ – f”ûŸœš3‰dŽÓ ˆB,ƒëƒ Œ’“Þž­ß¼ÿÿ³“‹}¾oVz ”£˜ †ùŽ#–¤‚ª û©ª¨!§{¨§©|¨ð§½¦•¨¡ÒžÍ›Y‘ô‡ iƒú܉øšôŒóI‹òúŠò±ˆô¸ˆô>wòQYïÐPô.Ló“Mï²Mí\Oî8Nî¬Oî@Ní‰NìÖPìÇUì¨WéÜUæ¢V åCUç€UéXìñYëºXêÞWëèWêgTêÏTë9UéTçTçTTçËUç:Vé†Wë_SîäQð_NþøMýùSPýùàQýùÕPþø›LófNó.Oô„QðUíÔTè„Tç(U åU ã^V äúT äáR äÖVè]WêUë­WêÀRå¾Vå•VèšUéVè“Uæ•U ä–T ä”WæBTè°Vé‹Xé'VèÙTåæWç@WéHXê¶\ïRUíÄTê+UéVë‘UéIVî»XòÙZîÅYèŒSä†TååWéXëÌ]îIWëÑWé®ZéXè5VèüVêÎWìVîxTð‚Pó½Dò7<òh>óX?ô•Aô†Fó5KóœWý÷äbùûŒ`ùûoaûùcYð±XîôXí.Wé7UêUê—UêÇTê”Vè_UêåVìáVìÍ[ÿñ«aû÷3\ÿò8UéÆVçËWç‰TåtUç¿VëdWìÖWîYîXîWï§Yî½Wë^WèMVètWêWèŒWæTå³Xè{Xé=Xê‡VëZWíRVó[üùibùüVúýWOúüJNü÷NSÿò~OÿóÑTüõWWþõEYþôhWòÀXñXîWê†Tè«UéJWëžZî}ZïYïù[ñªbýözdÿ÷F]ýùïvü b–ý8 D§¬H¨uŸ·ž%¤ª$©¨«s©]©M¡M (¡Ó™„T{@€¥“³«¸¶’¨Í' !®®´εz´µš¯¨§ê›ÿk…‚„¨„#ÿžd©¥­{©“׈6…'„¸™f¬߯.®ß«¯¨…¨|¦d¦žg‡’a­;±;‡…Ÿ† s† <‰ê¯Šì”Y£Ê‹™l‘4!w·zEy%z‚oˆN•Q©ж¹¦…qu¢o¿} • Ò”¨ מë¨ÿ­"‹«!¨’¨T¨§/¨§ç¥z£Y¡T›‘”‡n‡÷ºŽôYóŒòƒ‹ñ<ˆòŸ„òã}ø@hÿòöLñ¼JóçJñxMð™NðîNñÃNðªMî|NíÿPí`TëlUèáVæòTåéVåWUè«Uê-XêÇXéWêpWêÂUéaUêæTêTç TåëTå¼UæUè!VévTëÐRíÜMÿóŸMþù@IýøfLýøêOÿ÷ÍOÿöƒMóOÿô~Oþõ8QñVíIUé1RèÞTèUæ Uå·UæÿTçJUê1Wê*XéxWèÏWç,TæþUé UêoTéÞUç»Væ;UæÝUæšWæ"VèËWèfWæ9VæðVèþWê6[í \òBXïFWíWëâWè³Wé[VìÏWìkZê‰UçXVæ)Vç°XéXì¨WïéWì›Wç¹VæŒWæçWè0Xê4XëŽWìTUífRòBóp;òËAõÃ>õÇCòœIÿõÝTñé\üö `ùûBcøü#aùù5[þôRYñ5XîÜUë‘WìUï¯SíVê*YêVì¨Vì¬Zï8[ýôÇaú÷wYï'UéðVç£XéöXèwWè'YìPXî\ÿò<^þóðYî>YîXìVêšWægUågUæ—Væ#WåTä¢Wç&XêZìºWë­Sí»Rñ¤UýöòaúüÁXûýÚQûý€Pý÷kNïÛJþï¹\ýó¡Züö2WýôüUÿð÷Xð dÿó^ïVê‚Rè€XëN[ï\ó‘`ÿòçZì$^ïõeõsiþýHmé€ÿ >©œ¥¨j©x£7i¥‚®—¬—®J®B° ¨ŸŒ£Ô«‹ÅŒq}àþÕ¨®Õ¥I¤l±2µ̶ ¦· È· {µ¨¸œë•ÿ”ÿ8˜×.¡ù­,´ª³y®œ‹¡‰ ,ˆ –Ü¥B® ±7­s¨–¥æ¢!¥¨ì––›ò«°ÿƒ +~¯€Z„Ÿ)vÛ…é›®§­ãœ—‡ýÉ¢z9vwfz÷Œ¢G©zš|jo‹w¹‡ÿâ–䘽–ؙĠݫ®!ª"Ÿ¨i¦ç¥€©ä¶ ¶Æ£¹ œÇ™Š[{x~÷^ˆñ³‹ðâñ‚‹ð'Šñº‰öƒø=oú—VñJòâNöSOóÎNñNò8Kò„KòyNðOí£RíÜWêøWèØUæêUåhWå7Vè XêAYëÌZë1Xê¾VéFVç4RæÌUçóWæVãTã[TåMVéAWë¼TëKTïSLþõ×KýønMýûSNüûìQþøEQóOó6MÿöMþ÷PòšSîàUê·SêTé,UèHUç˜VçUéWì°Vë‘VèÖXè«Wæ«Væ°Wè Vé=Ué¬TæìWåVç4WèjWæuVåWVè«VçTæ4Uè€Xê…Xí?ZñVï Wí`UìÈVêðZëÙWì]ìTXé0Uæ$VæUXèWWëjXì.UîÚVíÒVéZRæàVæWè/Wê~Vê©Ví’VîäRñ›Bÿó«@òÖCõACüøÆFÿõÂGïIUî×_úö?_ùû]ú÷~aøúS^ú÷œZÿò•YímWêçWíGXò´VïUëùZìjVí´Wí8Wîº\þòÖ^üö‡XðÑTëãSèåVêWëVêÆWê&WëbWðÀXòóXîRYìXëdXé¤UçÓVæqUæqTäwT ã$VåsWé˜[ì{ZìYYìSíIRðÎTýõ¸fü÷FcûúOûû;Mþö^JÿðQþòÜsûúñkùú¬VüøÉTÿðÿXí3[ì[YêŒWè/WéeXëeZî [ó¢^ñß[ìù^íÞaòàiþýrþeƒÿ 8Šþî•sŒežÔœ±¥²¬!§æ¢¤¤«Š©›ž“ž0©q®†™Ž…Žd¡_Ÿ,‘Ƙf§²´@µ~µ A· ›·!j¯‹¢)˜Á•ÿï eœŠœ5¨α³­ܨi Žב L“š˜q©_¯j³÷® §Až"Äš#å£6© ¡¨Ÿ9£E¨ê 4† ][’ ·—X”’|z]ƒØ“?© ”¤«šsšô•÷„£‡â™ Xq•–›™ÆÀ{‹rì~];–ˆ5›T©¬3© ͦ R¤£U¦½¾È¡óœ{™Y‘ƒ}Avõ?‚ñm‹ðµŒðŠð”Šñ¤‰òg†ôÊyú­Uø°Nñ+Jó)Lö"OôMðêMïÑMî'LïNîßQî#Të£WéëUèwUçìVçJWè VçæWèÒYêYYê"UèETçúVåwTåETæÝUæaTäzTäÙTçrUëJWí—TîRðƒPÿô Lþö°Kþ÷MNýú‚LþôòNñ:MñŽLõýLöŸMóØOïìSî8Sì“VëTèeTæ[UæÔUè÷VëÕYê XéºWè^Væ×VåÈUåõUèÖVêWè XçiWéWë¯ZêTæTçVè«WçeVê[ïeYÿñ¤VïøWìVìDWïhWìÚYìuYì]Wê‰Wè£TçñWçXVçeYêçWì VëšWê.Wë9WêlVèƒXçf\êq[ìîXì{Yï²RñøKôD@ï~@ñ*=ólEñHNÿñr]üóL_øûÀ^øüLVúùÔ[üö\`øøïXþñfWíŸVëRXíAYîVéòWéÎYænXæZèOXç(WårVåXS åRUæ>Tç›UéXXéáUæŸRæ¤SèìSëNðâOï¨Pî NîôMíMìÕRì WëüZê Zé˜WéøWèÄWç„WçýYè’XèWè\UèUçTçJUç4SçþRæôTèÁTèÎUè‚TèÏTêcSëCRë”RìÖQðHPýö*Oüù´Nþ÷ªOò.Mñ2MñŸMð„MíVLíÿNîzQí¦Ví·Sé¾Sæ)UæUçèVæ.Uæ²Vç.cïilòÐYéQæÿVèCVë[XìUêïVéšSæWå VåÖVèÞVéÑUèiUæcWæ]WèSé·VècTå®Uå°Sä`ç6oíß]é„WæÅVäbUä¬VæBWçoVçoXçUæÓVçóWèˆVç”RåàTãyXänVæ³VçúYé_[îµRÿöjJýûÑKþùò?ñº?îÅLüöWýõl`øù:]ùø&ZýôÎWñJUírSê€TèãUë×Uì”VëVé WéXê(VéXè^XëõXì®Uí¡VëÝVê–WéÝVéûVêÊVêÇVêiVëŒVí@XìIWê¡Wè×Tæ•Vè…Uë©Vë¡XëËXëyXêÿWê²WéUVèÎSç‡Vë+YîVñÌYþôf^û÷[üóªQýô9KýõMûö|Lû÷MMü÷ïPü÷þSûûbZüú‰^ýöµYïëUé;VæMVç§WìKYíÆYëœZë”ZëXëéZí aþò¥cýõvcýú€eüýªlõ3üÆ—ÿ É¡D›ª  ½­ M³e¶¹±ºö°× ÷—¡‡§*¦¯§+¦cª!ª‡©À¬ž°½®­kª'ª!”¯M«à¦§ž˜ ¡í …‘p†t†¢Œ¹‚~~Œu+s„ <Šq‡x“…¡p£T Ñ©±¸·¬<¢ô›¦fœ´•Ú‘µ‰7·“®9\z #x;„¶›-¡Ç¡ˆ£J¨+£8–~«ˆ Z£A¸–À²å¨ô§/¥¢¢M—cŒÍ‹ÿˆ*…•}¢i£¯¤d¢Š ‚¢D¤‘¥Î¥à¢% 3K•Šf„üô‹ô{‹ð†Œð Šî‰ïR†ð‡€òtõR[íôGïéKô¾MñLMí3Mì’LìñOíjMíçMíœOì,RëÛVë ZéGUè½Tæ_WæXæ2Wæ–WçnWè£UèZUèÂUçíTç,UêùSê•TècTèiTé€UèTéHTë‚UíPSî€PïNðòKþôNþ÷ÆKÿöúKòvLòLñENñLïÜPîWNîõTïUðyTí=Tê|WéUé¸Vé VçìWç¶pðã{òßZè‚R æŽUçÚYéWéVé¦WèTæïVå¶Wå/UçâVçwVèÝVèíTçÈVèªUçÎTæ0VåzWåVçñYçgìÈYæàUâzU â¨UåùTæsVèÉXê.Vé-Uè½UçþVçxTè XæfUä•TèØUèoWèPXêä`ýõ(Uþ÷‘FûúêLþù¨EóÒ=ñøKÿõfWüöU\øù²\øù¬ZüõÆXð˜VìÑSè5Ué VìåWëÖWçbTæ‰UèâWêáWéWèºWê¬WêöTékWéVé&Rç÷WèsXé XêyXéßXêsWêVç{WçrVé—VçJUåŸRçoVëóWë¾Wë¸YëšXêMWèîWçvVêsXì‰XíÓVðáWÿõ[ûõïUýó.Oþñ&JýóÌKüõRNûøvNûù Pûù$SúýàWúþhWþõ¯Wð“VéVæVèÑWë¥ZíÌYìô\îÃ\íWêcWê6\ïR_þô5bý÷+eüüßmû*iüŽ‚ ºw•圬«´»´´à¶p´÷§£7£à¦å¦F¦’§V«¬ ª!« ¯ ‹³%´“­¦2£Ò›™œ[“—[“—-…¯v“vD¹ƒ­€’x\l2z ‡H… ‡Ö0Ÿ|—\‘ŽŒ –¢õŸK ž™—&–⥠ƟXŒŸ€ߊý›_¦·§Ô¦ؤäšÙ‹$…œª±!ª ¦Á¦á¦A¡ˆ—B’¤‘åŽF’G Ä©…§w¥¡Ôš]›®¢M¥ï¤R¢ô¢\Ÿ!‡©t»{ óA‡ðPŠï6‹ð1ŠïˆðÉ…ôý~øïkûWóKðÂNò$Nð¾NìÇMì3NîiMîcNïÈOîNOìSéVè©XèüWé¥UçiS ãÍV ãUWä§WçhVçßVæTæ[VçUèHTè¦SéÐTçÛSæˆUæwSç TéSë0UîÃWò5TþóüNÿòûKþó—Nýö6MôœKñVMñÞJðãKï¶NðZMï—NðÖSñVóKWðœUê—UèCVéUêæTë™Wé[é]étUéòRéƒUçÓVå)Uå7Vç´Vç„TæÔVæoVæÔWç¸Té‰Vë¹VéVç­VçàVæWåkVåTåœVçÒTèìWç9Vä«U àâW âùWç0Xæ>Wå%UçŠUè¦VéêVç‚SåÐWæUæþUçLTçTç_Sç|Tå'RäyTåžTè SéVTë+UïHRóßPóMðÍMþóºMýõ7MòNïŽMð‰LððLïMð@Mï§MïUòã[þõ›XñÐSèÙS äÓVçûUéëVé"Uè|Tè0TéÞTë«UëôVèbTåÓWåhUäHVäTä7Uæ1TæõUç¯WëÈVêŽWç,VæùVç2Vç5XèéXæfXå4Tå©TåVåDV ãGV àïV áWå Vä%U âÑVã¶XæYèVçDWçXæ.WäVå]Vç›WçW\è ]êVdÿðáXÿõNOûü!PûüÔMýùÊBþôWUýøeYû÷!XüõëWýô9VþómWÿòVðÙVíÛWí©Wê´XêÉVëRWêVê·WìƒWì0Wì˜WìíVìWìtXìBVê'Yë(YëXë•[ìXìÀ[í¾WèãVç°Wë¸UíäWélUä]R æZXë“Yì“WêçXé_Xê5[ì1XêSé»Vë¹Uë¿TòKTýùŸUþõ)Rþó>Pþö€Lýó?MþôÛNüø¨NûøþPüøTûúå\ùý]ú÷½]ÿð¤VéKTå@UæFWévWêWìm\î_^ïŠXëNZê7Zíj\òÎYÿõ}bûû²hýýÌmÁn|† ¾˜¢t®<µC³ý³P°÷µu®ªª¬»«¡«€¯2±ï°»¬¨ ³‚»_¹.²Ÿ‘˜T™Hœ©–Ž•dí„;}ƒûˆ‡ˆHv„ÿ‡›ÿ¶¤ˆ¡¼©T§»  !–™:˜™Z˜Š•>’…“šl¢‹ù’Z–ð¥Ë«;¬Q¶)º°¹á±z¡4ûž•Ë“ã¤Ϭ𧍩a°v¨ôxt„8•U—¥—ÿžý—2žS£©™È™£l§ö§¤ œ“ áŠÿŇô˜‰ó!‰ô(‡ó؇òh„ð|ðïfôñVò™Tê?NéNë¥Oí]NïHMðLð×LïKïLOïQíUê±Yê¢Xë¨Vë¸VèOUæ8W åXæÒWæWçÓVæ6Vç+UèÀUèAUèoPçûSç”UèSè„Qè¥OéÇRí¸RðvSÿô|Rÿõ PÿógLþöMþö5Jñ¯Kî‘Iî6LñqKñÌMñêOð6Pï(UòîZýù…Yÿô&UëÄSæ­Uç¶TèõSç SåUSæñVè'RêèSêZRç,Vç»Xè°VåEVä¬VåˆUæÇWè^WèlXé,VèÑT äÖVç˜UéSUéÜUèNXçUålVæðVæÑVäîWåzWä¢VãjVä•YårU ãMWå/Zè#Xç$XèrVé»UåÄVã@WãùXæ¦Xên\êœ`íÆjúõ±\üùpLýúxQýû Hü÷+Füø˜UüúÍ[úøùXüøRWüùYUüøêUÿò¢Vï-VïBVñüXð^XðaVîVVìáVì¼YîtVîŽVîèSìwXí ZîWí—WìÑWêUé‰VéUéVê·UêñVçTèÈXêDVê~VèîVçsVêÀUêïXê9Wê`XêXìY[îiXí³Wì1XëžUìÎSóXOûùºQýö@NþòlOþôdMþó&KþóUNýöÖMþöÀMþõ~Vüú»Zúû[ü÷‘XížVèkUåxVå!Vç+VèÛWégXêZé¯XéhZêYìcXî\óÃeüù&hüüêpý"sý†«Ǥ±«)´£´­µϰë¯Û®pª6«$°o­I­b­:¬0«l­«®n³ö¸Ùº¸ޱV¨/£†£• ¬‘*‰Ù‰ oŽfˆU†߉y€¬‡…–ŸÓ¨ú°€·±­®=¬c¥Bš¾Ž …•‰3å—®ŸP”ƒšOH¥ô²º·¹s¸ж¨ú•›~¥µ¤A£ §œ«¢TŸP¢¦œ‡"pþ… qšÿžœþ+žÿ› GŠÕ‚{ŸP¡Å¡øŸo¤ ¢ ŸI˜XFŽü"Šó‰ñ(ŠòW‰ó†ò(ñ qï=`öËXô;Sê†NéïNì˜Oî¡Nï„OñLï“IìùNí!NîÐQìjUè^ZênXëöYëžVèT å(S ãxVå TæØUæ©Tå÷Vç¯Wé¶TèÏTèHTç¯QèØSê²RêÊSéÃRêRîÐSñîRýøƒUûûlRüú!MýùÕIþ÷œMóêNîSNî÷NòKôoMñÃOïNQò°Wö^úý6Zýù™Uï}XëYêÈYëíTêPTçŠVæ2TæEYé;[ë„SæVç UèýWè¬Væ.Uå¦XçWèwVèWéIVçXæVèÛUéSèoVç}WæiVåòWæyWæ4Vå$WæëVæ§VæçWæ£VäMT ã¯VçIXèÆWæ¯Xç\Vå÷WåöW á…W àWXæ6\𛵑4“™ºŸË›íŽü]Œ/ެЕä¤$±æ»½¹ò·¶·6«!žã’‹Ž—’“–˜.¡:‘>™ZŸM«h¹d¿%¹´¿²Ùª`ङ9ª¬g©#¨ž¥jŸ ½žëžœ•؃ž{E„£# þcþ@— ÿswM‡/ŽÔ4˜®žˆ Ÿœ“ Ô„ü²†öã‰ñå‰ï,ˆð&‡óœ†ó~ñÌeëvYôMXõ SíèOëæPïÚNðÀKïÏMñ;Mñ›MðiLðªOíœRèþXè¢YìrXíVì WéƒUåäU ãrWåIWçfUçÑVæHUç³RéÚTêVã6XäöVçWê—XëWèìXèqWè=Vè`XéìVç¬R äùR ãWæ§VçVæ@VåÍWæâYç3WåXäVä”Wä£Wä Xå±WæsWæœUä›WãºXäXæ7Zîºoûóû…þïgšñØ—ö*výõ)MýøKJýøKûøgUúü9Xùý‚aöÿ†\øüN[ûøÑWï#Uí/WïSíòXï"YïTëMTêºTê×VëÿUíÙWí VìÝWìVìGWì¨Té¹SèðVêRRêjWìYUìfUê£VêíUêWëìXî¦WìUéŸSèUUèWè1XëŠUë¥Wì1YìË[ì3[ïþXì?WîœTþölMýöwLÿòÊOþó¦NýöMü÷5NüøfNûùzOü÷=NýõyQýöÇTüø°Uþõ9Vî8Vç×WçÈVæEWåCWæÍWèBWçiWæ]XéY\êXëÏYïý^ÿô•eûùxfûûðjüþ¨rý W õ᧘¦C®²²É´è¶©ªæ¤I¦ ªJ±1­c®  ¯³ª¥ ¨ò¬z°3¶Þ¹¶¸°ºg¹3®a©]¢[›”£D§Z—d¤ö¡íš’”X‘‘Ù‘Á•“¢m±}¹9·ȵ4´Шñœ™G›Í ^œ‚›O¤¬¿Ž§ —«8²µÇ®9¤ ô¦£~˜KŒŒ˜»ùÊ ·G¦Š£æ¡w›ЗI“û’_•]šð¤!žô–ÿo…|z ¿sÛ~­€’…{’Ž›¢©¡Õ˜UŠ È‚ú”…òº‰ñâˆñÓ‡òà‡óu„òÌzï¸^ìÕVôºQóÈNî›MïôPñ»OðMð¨MïLðÓLóVç@VçyXç5VåwWæ—YèùVå‡Wæ¨YçÊVæUäÆVãžVãÿUäƒVäÃR áWåøVå»T ãFW ã£X äBWæCZës\ïãoüñÅð7òÐýýBŒüýè[ûù;GüûQFüù™Vüü"ZúûBZ÷û;Zùø¾\ýóVíeVíWî%WíVî‘VíóSêcUëîTìŽWìzVìàTë­WìCVì-WìFVëUè¾Uç_Vê„Vê+VêîUí#WìVëÙSèEWë,Xï£VíµTê™Ué“UébWê-WëÝVì`Wí%Xím_ðH[î/XîJVðÛUý÷†Rý÷“Oþó»NþóßLýõ:Kþô!MýöðNüøhOüøxLýõîOü÷sSý÷ TþõåUï@VèûUçúVè±WçYè~Xé0WçÄXèf[ëZë:YìˆZî\ÿóVaüøÊfúûújûÿ?rü ¥| œÍ¢¦¢V¦õ°²´!µiª¡u¤N¨©.©Ĭ ¯y­§ï©Ϭ‘±f¸½»»·t³òªß©bŸ$‘Ę?ª ¬A™!M“ð˜þ›'ž“÷“¦—A›Ϥ °Hº»·¬²t®ì¤F–ßšó¦"¦± ˜Ÿ«¦óy´ˆ;Ÿd©¥§‚¨F¤ƒŸ¬¤q¥V›—“YRÁçÐÔ·w¤˜¡Ë Cžø™S—œœ"Ÿ¡£r§!üš ó„Â|ßx Aw e~ € ,Ú› ¢¤N¨N§u™ÏŠ¿‡2ŠùZ‰ò¹Šò+‹ô ˆô¢†ó¯ñ½uðQ[ï›VôÅNñ~NïMKñŠKñ%Kñ)MñKïçIîÒNðYOî5PíÑTê¾Zì‚^îBXéxVåâUåæVçZUæÆS æTéuTêœVèsUç9TæÆSçóQæUNäpNäÕSè$TéƒSé3RêIPêRïšQófPó¤Oð¨Nï±Oï Lñ¤Mó(MòSLîþLí?Oó5M÷èPÿö´Wþõ`ûø8Wñ°Xñ¥^ÿóU\òWð¢Ví=VêVçhVé@WêIRè¸UépUèTçàVçVæ™V ãÌUäøVæÿVé*SèïTçÌVç£VåVTã}WäWä.Tä5Zè!XçûVänUäfVåÌVèkVåŠUãçWäúVåˆXæ!Vå´WåWå\V ä#T ã‰WäÞXæS[ê~cþï3lüï|‰òÄ›üzŽŒø Ø]úý.Hüÿ>JýúMTüù¹XûøX\ú÷„Yþò YícXê UëuXìªVêOVëãUëæVé?YêÂWêÃVéöVéìUêLVëWë$Wë*Wë(Wè7WèžXì(VìMZì*Yî(YïÉXìVênWì+WîeYìVê-Wê)WëôZíXìnTìæWíÏXíZïÀ^ñ*XîVWÿñUü÷¬TþöEOýõ®OýõýOþõfKÿóÂNþôOýöMüöÿNý÷ÒNýøŒSýøhSþõ1SïöVèNUæVè†Wé²XéˆZêÇXëôYíZí˜]êŽ[é[î‰]ÿõbûùReüúiiüü&pü¹|ÿ%™3žÁœÄ¡î« o² ¯ Y©§¢žý£¿¤JªW¯Q« ½®é­{« ã¬^±ž¸÷¼=¸Ñ´°Ú¥ËžP—C’ô¢Ÿ¯¥ ”ýU”n—6“1 3–×=³¡•­1·µ²S¬O¨0›‘™í£à¤Q¤+¥©ø–c¢ǧŸÈŸ,¦ý©ª{«¥¥e¤[§µWº\«£„ ´ ®¡¿¢ ¡9£È« ¬W¬Æ¢k˜à‹ydy n} ¶t¼ ú– å¨d« ¥K• å‡ÿä‡öî‰òÊ‹ó‰ôˆô°†òñUqð÷YîïRóýLñôMð©Lð"Nð'MóNõWMôHLï—Oð#Qï7SíåXëBZê2YêaXçHV ã/Vå&Wç&UçýSéRëSêœTèTèwTç¬TäBRä¡Qä/Rç˜SéRé‰Sé&Rê PêwNïýPÿõ=KóžOî×OîwNïLð—LòXLòMð,LïúMòsPôOPþö¥Uý÷é[üöVðŸXð#\ÿóÓ]ôRWõÊUô¢Tê‹T äW åvVçŠTçNTê×UèÏTå‚UäžUåHV ã UåùVç|WæÖUåÓVæUVæZVä{VãYVãÓVä U äÛRåÆWèWæYåçVåÕVåWææVåWåXXæ¢VçXæUä9V äÂUä¼Wå)UäžWå.Xé¸]ìïcýï‚týò…ýúA‹ýýòfÿôÓRþü”HþÿBKûú}TûûÉ]ùùx[üô\Y3xåw&‡” f££ýª°â¦k”Ÿ‰ö"‰òMŒóÀ‰òt…ôç€ö`sú…\ðéTíPí&Jí#LðºLñ¥KñMó²OòvNñæOïQíÈUîªYí_Yê1YèjYéqWèþYèJZçnXç>YèUéRé¡SèPTç#TèŒTéªTç$Så³Rä¦QåªRç£Rç»QéOìæOï Lò¦HôlFóºLñ'Sñ]TòÉNðkLíÍJìkJíœLðÊLòßOõüTÿõòYýö¡ZûùxXüûØ\ü÷?dú÷}[þóýWïOSë×UêÖUêvWéx_èØcè?VèóSè†Vç;Xæ6WåKUã.Wå?UçÿUæÃVåTå¹WåVåÖWæ SäjWæ^VçVæ}VæüWåYärWãWæYèiS á¤U àqVãÿVåoXæPVäyVåÐVå«WäïWæ@XæíYè•\íŸbÿñ*`ñÔ]ð'\òÌRýú¸GþúïAý÷ÔQûúVûüÈXüø¾[þôèYï7XîVì…WëWê¶WêXTéYë†Xê®ZìÇYîyXì|VêTéVUíYVê$WçÜYæ6Xç'SèåSêÙWí ZîXê÷VèlUèWéqVè/UçÊUèŒVêÚXëyVëu\þï?Yð«XïbWïVïôVðñUï|Sî$OïÞMð†MòƒNÿòíQðšNÿóLNþô¾Kþó>Jýõ¢NþöUMþöäPþøªQÿ÷ƒTòoXï„Wí¬Wì8VêÄWêµ\íO_ÿñy_ñÊ[îA\í=[íÜ^îA^ÿñÛcüöXfûø5cûù»dýû©kû3kÎyߊ…š„¥ù¦ ¡¤£T£j•’’Ò–ª•Ò™*ŸL£M«£¯ñ³°µg¶Õ³M¯å¦¥•¨ T®ú²#² «J©©ПÙš:•T•û–M•q’Ožf¾Œ¤2£ œ¬ú«ÿ÷¬¡£á¦ ©бAµ¬̨Û«t¢vŸ‹’W• ž ëž(„}¹™˜¯™§ ù ‰‰ô™ ¢ð ´¢ƦD¨_ªG±2¯=§; F–½›šþ ŽV~މ?’­ž«Æ©z£þ›:–„‘ú·ˆò‚ˆð6Šñ“‰ñ²‡ó zòóhõÉWîPîÓLîCKîqKî JíGKïÄMðàMî”NðÚOð™TñšZðl\î¤Vé×Uç~Uè=VêÎXè·YæÄXç3Xë’Wì_Sê½SçŸTæTçzTç_Tç|TæSæNSç\QæjQç»QéXNì"MïšIó¢Bñ,DñGKóÉMò=Mñ3LïLî‰JïŠMð–LïßNïOñüTñÐXðFYþõ`Zýöj^üödûö^þóXîdRë½TëùTéiTçt[ç^é¯[ëUè7Så VäiWãíWä@Uæ=TèìUçRWæ¾VærWæyVåìWåÝUå«XèÉWèZUäÌXâVãtVäáWäVæ|Wæ¯V âdW à3W â»VäãWä"UãvUåWæwVèVéÄXèÍXëÊ\ïZí›Yí Zî™]ðC\ïi]ï¾_ÿò_þô²aþôWaþö bÿ÷©iÿûlmÿ§wþ æ¥Ê©o¤¨ŸK¢ÿ¢ô£DšÈŠG ´ŒžV L¢”«¹µá·Ÿ³ª±B¯Ǭ ™F–©ŸK§¼±H¶ô­«ªý®{§õ§¢õ›½™Fšž™T£e¢*Žû®¤ ¾®‰¥Ϥá £®°æ³…² ¨ʦ©µ¥“²t‰<ÿ‘ ‹|u{‡z„ |Éq,‚qŽ”œ,¤,¥Ó¥Þ¥Ò®ýµT°ý£M—†sˆ‹Œ­„ñ‘¤¡Ý¥ó©¥¡þ/qˆ¼‚ øø‰ó»ˆïBˆïë‰ðɈðê‡ôyóç[ïÄSî¦Mð‹JòøIï›KíJí"IðiIñKNð>Pñ QðWð7\òØ^îxVçÐU å Uç¢UéVéÎVèÂWéýXíPVí®Uë•Ué(Tç)TæŽUæDSæTåwRç“Rè«QærP æPêÌOðŠLð«Bïú?ïâIò,IñŽIñYLòƒOô½NòLôNLô´Lñ9Mï¹OðRQñèUñìXÿôZþôx\þóm`ýô~Yð×XîÞWîvVìRçìTæêVè#Uë#VëÄSæØU äÌWä4V âÖUã~VçBRé`SèóTæåTåÏWæ1Xå’Wä×VåçVçYWæ@XãiW à¿W ãÒZåIVã7VätWänWã¿Vâ¥WäaWåBWäW ãÂVäVæ1UêCVëÆVéçYéO[íQbþòtbÿòe]ðÃ\ñçXò|MñrBð@Müø¿Xüû`YýõÌ^ýóËXítVê+Yì’XíZWí.Yí¥WëWë½ZëZì0[îYíyUëƒVì¦Wì Uê‚Vê‹WêVëVêÖVë¯WìWìðVé1UævUè¾VéÝTèHWê;XîLVîŽSé¡TçÕZîÏYïjXì/YíWîÈVîÆSîfMð@KðŽMï\JïpMñ‘QóLýô±NýõWKùúÞLøþ3MûûñNý÷bPÿô„TðEUêKò(FñôIóÏLÿö!Mÿ÷âKöØNõCNðMðÜMïcPðÅTòÌ[þõM_ýô—\ÿò’[ñ5ZîëDïFIóGôIIô2Nõ6M÷`LóÝLðµLòÅLõÿNðmNí—QîcVòqZýöØ[ýô~Wñ™WðD\ðŒYîUWîÀYë WèÍVéÑTêWë\UéûVæOVçµVç>TånVèùUë.RìøUè}Væ*VæVåîW â«U àuWåVè`WåeVãµWäWä-T âZV â^X â,W ãKWä WäžWå[Wå=Wä-SâsVä»VävW åÒT äW äT á.UçiYí*XðÍ]òÌ_ûõõf÷úÓkþû°K÷QLõôUÿõXýõv_ýó XíSëõTëWì„VìÚWì.XîWðWí VêUê™WëDWëÉVëðWëWë(VêµVësYí•Tí^VìèVëýWëŸYë>Wé{Wè¿Vé\Wé4Vê¦Ví’VìÐVëdWê7UérXé|WìcWíöYï¡VïPòüNñwLñLïOIìLìØKð˜Nÿó)Nýõ#MüøKýø Mþ÷ÛMþôÿOÿóøQð{Të½UæãVåUé¼Vë»VëîZìÛZíÉYîµ[ðLZïWîû\ñX\ÿôT_ü÷­bû÷>bü÷qbü÷ágüùjýþHdþÿOzý•³¤ž©PŸ˜ô›¢£2¦\­y¨™–™+¦ä°õ«Xž,›åÀ˜é”í„×vØsLp8n Òo C‚ȉ +‹!“I¡"§¹©ù¨1¤»©Oª–Ÿ›–óŸAŸ°q„†È—aŸa£¨à o›ÜŸþ e "™x‹RzŠiÿ`lgt±ˆf’Šgˆ4‘ÿ™šÌ™§Á„‚€oŽeš´—ÿ>Kˆ އ0‚ÌŠ›¤X™Þˆ‚5Š J“iŒa‡ ]ŒŠþxzþ?kþÝvðè‡î ‹ðôŠò‰ò†ñ‚ñËwñØYïqOì4OëúNïíKòŒJò;Jî{Gì?JîÅKîiMîÁQîüYí«aífcî`íCYé5Xè%WèØYçKVæÅUå=VåkTè€RèRè2Sê~RìSê Tç4TçUTçgSè‰RêÛRîúOîÐMðÒFï7>ìZAí}GðEòZHôIñKïkMï Hê4J é!NìùLïˆLïzNîÖQïWò\ý÷ÙZýö¶Uþõ¾Vó\[ñÙYïPWî Wì¥_í‹Zî±VïUíUêîXé‰YéÉVèFSçhUçŽRèØQçÑVçÄVæ‹Uä’U âçV âAX â7XæVè@Xç¹Wæ¢XçbVå¹V âX âCW áAW ãpWåóWå‹Vä×VäÏVä{UãvUäµW äÑU àEW álWã°VäŒVç Yì¹]òí]ý÷]ZýöÙZüø¢TþûßGöóMôñTþôËZýóU^ýòlYÿðºVîUìçVë”Té!UêšYëvVëÛVëðVêëWéúWê‚Vê”WésVéêWèTéÚVëÁZí|UëìXëäWë|Wê—Uê¸XëjYë^TêÀVê£Wë™Té¯Vè+VìÃVëãVë2VëYî$WïmWïäVð@Mï›Lî]JñpLñaLíœLì;LðýNòœNñ-Nÿò¶Lþõ{Mþö MÿõROÿó¤RñeUëcTåÜUålVèÄVêwWìZê,Zëq[ïQ`þò-_þò:[ð[ñ¨\þô1\ûùÊaûøUbûøºfûúÄfûû%iýüeüý±mþÊ„z’¨µ£™ZœŒ¡¥ª­ ¦A™Ø™eœ•Ÿ}¨ˆ±!ªrV˜Œœƒ ¤ ¾œU‰y9o m Øl ãy ‘~ °~ œn¦ A©3£´¡"¥ú¤L®˜É¢'¥­œ:‘‹)‘´œ¬¤„®e©Ç£’£’£d‘T…Q“ƒ Ë K„ Zw h‰š š>’i’¹•a“U‘4Š„í—v¤Lÿq‹?~þ<~Ë{Ÿ€F‘ p—lŒ¡‡µŽÖ‹ Ø€ u áŒÿ“þ 䆈ûŠñÆŠï ˆðňñ_†ò3~ñojïVïLíŠNìœNïUMðÝMðKïºIîËMïMïõMîñRï Yíßbì`ë“[éWç¿SåOUæVèàWéØUèTèñXêTé¢RéëSë¾Sì|Ué3TåSã÷Sä»Ræ9Rè®SìOï¹Kõ‘@ñä@îmAîGñ.EòùDñçKîJí@Jì°Ié®Lê`Ké LéÄLíFPð;PðTò˜[þö‰Yüù=VýúÝWÿõô\ÿóx[ñVð Uðb\ï[î¡Wê?VêVéVèQYç»dë_Uê#Sè—QåÒTåkTæeXçUåuVåHVägT ä™Vå„Vå½Vå(Wæ@WçXåVâ»T áÊW à]U â Xæ¥Væ’Wå3XåVäçVåÐWåÕV ã W áŒUã(VäbVåBVè»XìVWÿòý]üö§Xýõ¸Uý÷NÿùDõ}Iÿô)PýôrXþôPVò'Zÿò+VíTìüXê~Vè‘Tç\Xç4VælWæ3Vç·WéRTèWêTUéWèSèòVê›Wë@Wë2Wë3Wë9WêyVç?VèêWìhWí/UíWíWêOTè›TçñVê?Wí1VîÎUð~Xð.Xÿñ}WÿóèTó*IíƒJíôKðÈLðSKîËLí÷Nð&MñNðžNðLòNþõðNþõbOÿóQòëPêûSæÿUé#Vê6VëWë[YéU[ìxZð¦\ñ[ð:`ÿñ$\ñ×_ýøY\ûû‹_ü÷Gaü÷Tdûøeüø$gþøiúûŽfþý©|ÿ—z¥¼§»žÔ›Ÿ¶£5§Ǥ_˜ëžÍ£ª°`´‹ªZ¥ Ÿ ¢¥ ô°ä®\¥ÐÐz øp Öt ñv Þƒ hŠ—œw£"ì¥ Þ¡ ¡T©\£V›ƒ›T¤¡¨0£÷œäœaœa ô§Ù®«¦¨c¨5ªÖ‘þ{tòˆ )|!x EŒ #—Þ˜Á’ôŽ.“w‘ôŒ‡‰îœ.©8ƒ†?€û’úP€”…„•ù›’Ý…ÑŠ5‘‰›Ä„¶Ž Ήqù©’óbŠð@‰ðXˆñˆ‡ò)…ñ,{ðˆZê=SïDNîŸKíâJíÍMîRLîKïpKðOJñLîhNìQíIYìqcíûaëUYèÃWç4Wç€VæÉUæ]VèôVéVì¨Ví"SíÈSí€Rë§SéSè_TçaTã4S ãRæhSéŽVï9Vñ…KômBð?í Cð‰IósGñ • ͘¼”Þ6‰÷’o™Âªˆ³™ª}¡áû‚üâ‚ýþ²¯›R”Šœ’o–ë“6í‘ÿŽ Š¬‹÷|Šòª‰ðDˆð©‡ò™†ó€ï¬ríDSè%OífKï¹Hí‡HíœMïêNð4Kï±KîùJíOLí6Oì|Që Xëòbÿïncÿï£XéVçuSæ{Tä¦VäˆUæÈUèÞVì,Wî%SíRTí‘Që‘Rè Sè3Tç¦TäfSäRçjSêŸWðuSÿòåHóï=îe>í,Dñ Fò0Hð—Kñ†NôÓNòÖMñnLîŠMïxKîˆNíONðaPñìQñ"XòG`ûøBZûø´Wÿõ Wò$_þòw]ÿñ9ZîwVíëUëàVè;Uè¨WéLWènXæ7WæXêHWë×Xë^ìž_ì!Wè¨VæÈU äšVä¼V ãV ãcVåWçVå¶VäáVä5VåVæ@WäSUâÂVã—Uæ‹Vç&VæYVäWT ãµWä÷Vå~WåTãÃVäWåUUæªXê—XîXÿóà]üö \úø|UúþÚRüüƒBñiFínMîoOð_LîñSí RëVëZXëŽWê¶Xë$[îÅWëfWèFVêWë*XìjWìIWêOXé¢Xê*Vë*WîšWífVìôXíXê WæNWêŸYî6VíŠWîWðWî[VëWWì³Ví–Xï0VïòUðÛVÿõWþõPüô»NÿôZLð0LîšKïîMñœSï4Qì5MðëMÿõ{MóOòµPóMþóßNþõŸNýøÀRÿóTì}Tê9TíOUð"WíVëøWçÎT äAVçËXëXí Yî´XñØYÿøYUüûyYýög_ýõ“cüõ{cüöådü÷hgýú¦oý nËž »£ 1r¡F§ǧš¦Ý¢’£˜¤5£˜¥ ®0ª ì I“ì“@­-¹ÿ¯½½»ý¬° ]‘ÿ d¥xƒŠ G› J¨”¯I¯w«ãª¸§¬Ь£8Ÿ¡W£¼§P©“ªŒª›®Z±n¶B´Rª$¥ ª>œÿP‡Ý}b… ‡ ¸—ÿ=”ÿ¶ýŠÑr–P’d“¥ .œ!Š!‡¬¬N¤€•ׂ »l]xj–\ Éš¿“&\”Ë›=™ž–¾¥‹ J‰Á‹þÚ‹ô¤‰ðd‡ð„‡ñR…ñè…ñ<{ðÓaç“OæÑOê—KíÚGíYJîJNò¢OõMòELð5Kñ—KóiMïžPítXîÀaÿñê\îÐVè•UçÑVæUåèWå)WçTçQVé=UëQSêZRéGSêÊTê©Sè,RæâTåSæRçeQêPï¹KÿõûDôž>ñÆ?ïÖEñ£FñHñ#Jð]MólO÷ LôôLïIðEMðÎMðPóYNô‡Põ:Sÿõ¡[þõ`WþõVÿô#VñŽ\ïé[íJYìXì8Vê6RèúUègWé8Vç‚VåïVæßVéXéÕVéXéWèxVç¥WæpV â|V ããVänWä.VæªVèlUçœVåÔVå8Uæ VéâVè¬VærVæ@Vç˜VçWVæÿVæ¡WæsVæaTå“Vå¨VäUäÃXå Væ™YéWêÙZî4Zþò\Vüôjýuoû ä„þ¬œþ5£4 MÚ±Ÿɤu§{©g©ö©1§"ͦ!·«_¨:¡¥’”¢ç¯³a±Û¶}¸*ªXŸÿ ç˜ÿ‡•ýã”a :²d·1³g¦8žä£K§ $ #˜šÄ£¡¦[ª®÷°¼´¸I½Z½§ºƒ¶z´‹¸‚îcAïØEñƒGñGïáJï°Mï”LïTKñÄLôYMó5LòìLðÖKíÃLñLôéMôOOô¬MòIMóØQüö>OüöXóê]ð¹YêµVé¢UëTëîR çÀR åØT åºV æÄUç™WèÅUè^TçmQæXVæVæ³Wç$TåÅVæÏXçWæ¼UåÙYæXæ2XæVåŽVå]Vå©UäGVåWäµWåíUå‹UæâWç"Væ$VçÐWæWæXXçXVåUèAVévWç¼Vä9V âxVá¿YãCWå)Wæ¹Tå±WæÞVçºWç,VçÇVèûVç/VçMðGMò}MòÿNñOî3Pì2Pð¬R÷PñOí|Sì—Xë0XéXè¦Xé„YëSVë9UëcVìAVë!SêÓTëŽSî_Sð-SíÕTèþTæSåˆRèOí­Gñk=ëŽCìLEî~FñâKõNõkNô¥Pö“NôMï=Mí7MñhLó§LôŒMöNöÚLòïKïmLì7Lï‘OôwPøDOþùÂQôNTðÁ\î„^ðGZï%Wë4TçÃVæ¦VçGSè©VèŒWçvcê8ñ5uðƒRéªOæjSäóUäÜVæºWæ~Wç#VççVæÿVä=W âIZ ãáXåWçœWèÒWçaYæVæZXç2WçWYèNYç.UæJVé Vé˜Wæ@V ãÙV âäX â Wã!Vå¹WèHWîâ\û÷tXý÷•WþõrYþö4NòJì LìâOì¯OìXUíXì2Vé©Vé¸UèxVçëYé9Vé–VéÏXé?UêŒVêKVé¯Wê'Zë]XíxZðÃWíVìžXî^Vë¬[évVì XíòUëžVí²Uî×Rë9UçÿVêVï1\ÿñ.Uî Tÿðó[úù1_ùýDRýù KôIó¶Lñ†Lì Kí?NñŽJïqLîÅLñ´JïlJñ´Iÿô¼PüùuMûù2Kýõ{LÿõÕLóµPð~Uê¬Vç„S åUæ²Uæ~UäœW âEV âŽVæ=VêÝYð­WýúTûû¾SûüSUúþûXûû9_ûùèdü÷Ýeûø3bûú·fûû¾bÿ=b# h¥§O¡¹¤8°ªµø¹«¹¶Þ®ùªw²¶³3¬\©^ª xª‘­à­š­m¬"Ù´$ºë»v·—µX³™¬†©•¯7²®z­ Û«£¡Ú¡Žˆ˜ÿƒŸþ$ ÿm¢›†Ÿ¨L²o¸Þ½-½Ý¿æ¹ãžX™ÚYsy ˆ!á“ ¢ ­¤5© ª;²f²«›¤3ž¸ЕðŽÚŽ>—4š}ž ’´ˆë•ýB—ù$Å~ÿ¾ @Ž;Œ÷ÊŠòàˆðj†ï'‰ñÿõÛˆýùšmòÖQ èCP ãÒN ç0Kí°Lï\Nñ±MñxLðõMòzMóAOí‘QèQì±Pò–Nñ{QîDUëIWèWçgWè\XèèZêWê*UëãSëÖTê¯TêìSê®SìqSíMTëµRèTè©Sè Qé˜LìyGípBëÃDí6EðˆDð]JóCMó@Nò-Mó1Lò;LñÁLïïLòîKõÐLóÑKòÞMóMñgLñáKðÚMòËO÷ýSÿúVOþùèSôÎUòŽXï[\îXíFWëlTè“UèPUéeTëîWëGZë‰aêÒ|ðCtñ©Rë/MèSæ±Tå‰UäuUåÝVæU åFW æT å¢U ãRV â”VämWæVç¼VçXWæšVåWåUå«W æIUåðU ã.UæµVçŠWæÄVäçVä©WäWä»Yå+Væ‹XëaXÿòwXýö5Wý÷]Výø Sô Lï€KëQìNë»QìµSêÎVé™Wë‘Wé¼Vè Yê€WéUèVWéŒWë9WíáWìÊVêçWêƒWíVXñËWïÈVíÊXíZìWëðVëÏWì×VíÐUðpWð#Sí£UëÖWíXÿð.Wï Uî7Rýó*Vûû VþùmPÿöcMó)KóTKôÂKïKï Pï-JîbNñäLñþJð”Mó1LÿôÿQüø=Mý÷¶Lÿõ†MÿõNó+QíWê Wé2V åS äUä£V ãV â”Vã$Væ›Wé›WðÈWþ÷dTýúQQüúÆVûý"Xüú`úú»cûøÖgûøÜcûù¶eüû.fýÿ°`V{ž¥N¡¤A³9¸عɻԺá²ú¬<®B¯á®1ª§Ϩe©“¨þ©ë©Œ« ­ºR¸©µ4¶ ´Ü®u°¸¶&²Ü­}©£r‘ÅŽ>™íœâ–!X•ö•w˜?¡|­J¶ ¹³ ô´ž®µ›³—Ì„v G;‹ˆ“Ê!†¨éo§‚«y¯Ê«–«€«!§¥„¢4• ‘`šýœUšÙž-¥6©] *‰sqìi`y'‰ L¤÷Šò‡ðª‰ñ\ŠòçþõU†ýø,fðM èæN ææIìrKócMòNð«Nï¤Nï»Mò4Kô!QïmSëšSëŽPíMìÆPíSì+TèhUæŒWæXçÌZè¤WééSéÊQéSéûSèRé:Sê¯Së TëòSêºTêÈRéØRêeMì/Cí©Bî›EñÞEñHò8Jñ`Oñ=MðMðÍKòrLó4Kó£LòiKñÿMñKðåMî Mï®MñÅMñ’NòaQõ}Vÿ÷TWþøÒWÿöXñM\î“XìEVëUêrVé‘VçUèþUì¸Wì[êtcíqzò¢qò¶RîÄOê]TçŒVçšVåDVå›VåßUæYVçVç*Wæ‘W äGTã÷VäUä[Wä*Vå™Wå)W ãœW â‹W ãfV ã­W ãVå Tå¬WåVäVä“Vä`Vã6UãVä–Xê©Vð©Vý÷ŒVúûyXüø_SýùËQÿø LðˆLì]Pî%QíGRëPUêËVëHWéBVèœYê(XéEWéXê£Zí8Yò`Wñ€UëÜWëGWï"XíæVêœVé¾VêòVë:VêFWìVëVïTÿñÖVðÙUðHXï‹XïJVï¬Vï˜Tî·RýóSü÷1Qô8IðÅMñPìMì­LòPö]QñPîºQðnOòIPóÌRõVò™VíßTìPí`QíRï‰VîWê!WçYç2Xè3Yé&Wé&TëÑSë±Té\TèESêèSênRëRêÏSëêRê·Së½PîëHïÊBï‘AïCòÂFó2Kõ Nö“Nô¹LðšIïyJñ!Mó9Mò*LïNî¤Pð0MïWNíFNð4Nð%NðôRòxXõ’]þõ«[ÿõWô$XóZîg^î_WìÂVëøVéHUæªVçWëäZñ=\ýô`aÿñ\î÷WíßRí‚Ré2TæõVæçUæˆT åâVæ)Væ VçiWç¼Væ†XæÒVåWå*UäÙU ãˆVäsVæWåW áJV áVäòV âåV ãVåºUäÇXå`UäâW äQV ãÚW áîUåýUæVì!VýõzZûù Xýõ/Yý÷¨Uÿô`Oï Pï‡Sð¿PñÃRì¤TìøWêVæ§XæMXêJXé?WëXêŽYì \þóõYðóWêŽWì•WðVìpUç‡SçÀVé‘XìxVëÑVèTVëNSðrSÿð£TÿîûVïÛUîÃWî#VïPUïHTïFQýòéQÿòêLïzLî1LðÍLñDOñ LðpKî„KíìLðÍLöÉLö@LõÇLõsLóMôJIóÕLþõˆOþõxOñÆSéöTæ·Uè=Tè›UçUæ UæåUæœVæ¾VéYVïtXüùVûû©TüúôSüûÝVüûš\úüæ\ûûÖ`ûúÍfùûjdúúËdûú‡hýÿdvd—[¤ú¥/™÷—¬ª¶»dµF²¨{©ʪh¨¼§)§ä¤¤Ô¦k§ §í¨•¨ô­á²}¶ž²F·9¹c¸D²°‚®)©"¦³¨˜Dð˜Wœ —ðxLˆ’Ħ¢²†® D¦£¡¹¦+˜Þ’©ŠAÙŒô¤ ³b¯¶«7©ë¨/§§ £™D›ú¬S·…³CªÉ¢x”ކ¯õ“ég¨—­y¨óŸ3— «”ÿ p‘êûŽôJ‹òˉòô•ö“ÿöÊ~òA[í¢QïcOðLõ¹P÷¹UòTîUTð+SòXQòSPòÀTïTíxQì8Qí PîæQîÜRì²TélXç¤WåcXæÖYê%Uì¨Tí•RëÿSéëSè´Rè×RéïRêœQê•Rë’RëYRë OïúIñ&BðçAïtFò*Hò‡Mÿõ€Qþ÷›OöJMôÈLòÂMòEMóÊIð LïŸNñ6NñaNð3Mð»Nñ\Oñ–QÿòETó YóSZòÂYò’Tð”TñÿZñ8_ð9Xë¥Xê Vé€UåúT ä¾Xé€_íÂeþï¨gÿí=_í%Sì9QèèRåøVä.WæVæ†Væ§UçÀSæiVæSVçRVç Vå>VåŸVæèV ã^T áìVã|VæÅXçÃVäxWã&Yæ|VäUäˆUåºUå¦UåkVå(Uã¦X â6V àõV â«Wç(UéuWÿòVüö2VÿóBWþô%Xýõ·Tò4Nî¢RïûTï›Rë²Tì»VêÓYçVçZè WèXëZì*Xì$WïºXì\VéûWìBXï,XìWëVéÁYêWí9Vë·VêàTì2VïSîçTírTíJTìuVî2Wð!SþðýTÿð!Pýñ/NñNñËKðóMñ¾Kð›LîLî JîKî/Lð¯MöMÿö3Nô&Nó#NóQþõiKþóçNþôaMýóïPìíSæVæ«TèëUèWè®TæÝUæVç:XéVêKUñÖWûü6Túü¼QüùºQþúÃRýû—Züû[üû^ûù¶aûùÈcúù{dûúDfüÿ•iý%vÿk™•¦å¦w—AŒª™¥Jª Ì­d¬‘§g¨-©b¨l¦¥¦£E û¥v§®¦­¦K£—¥«?±دÖµþÓ½þ¦¿m±M°g²@¦Ñ£W¦œ€•VžØ Û¢Œ¡dœ©‚÷¡oª‘®"¢k™¹¢X•Œ‰n…,}í“N´š½¶³®­‘«H¨¸§`¤pž™¤w°}µ§¶e±š¤b¨—•_Ž9ˆ +Ÿo­®Ó©~žГ Ô‹¨÷†Šòü‰ñ ‹ò;Žôð—ö`’ÿõßsñõVîÒMðRLò€Ió KòoPñêWðâWïPQîOñPñƒQîtSìENì×Mì‡OícRìËUéÞWç}WæzWåûUæóUé©UìvSíãSéîTçuTçRè£Pè½PêýQëDRë¥SìÙQëÖMï›Fòù>ðZ?î%HïôPîçRñlQóOõ/M÷ÛOó=LókLò9LñMò}NöúQôçNñÙOñMQöUöPUþõtVÿôâZò%[ñfYò¬XóHYòðZðäZîzWëtXéXçSW äKV ä%[èuñs‰óy‰ñ´cë=QêŒR åJR âËTäfWçVçHWçRVçÌUæ½UæVçœXèWæ UåçTç’T äñV â©Vâ¿UåéXæÇVæóWæWç¸Wæ®XågWæ°UçPVçsWæVäßUãCV âÄVäWçXVéªUîVUýõãTþôEVÿó‹\üö±Tñ~OíRíÁRìéQêëUé.WêWêãYêÏWèßXæWê«WíYí±Uë‚XëdXêúXìXícXëWé|Vé²WêºVí€Vë…UêrUëWîäSí±RìùSí Tî`VïXþñ/Vþñ9RýñQNüõ¨LõFNóDKñ½Mñ\Kï4LîkKïRLï2KïÄLñ)Oô¹Oó6JñHð§OÿôQý÷CMýõ[NþóOÿð6RèSãßTåÙUç?UçUçñUægUæºTæ½WéŠVìSUóõVýú–Sûû¬Rüù¶Pýú§Oüû ]ûù4cúú`úúz^üøÙ`ü÷dgûùYeûý½aüü/süy‰Ÿ¢£ášï„­ˆg“r h¥m¨›§¨©Ÿª£¨¯¥Z¤ú¦$¤í¥l¥!)›!ƒœ;ý¢n¦<©‹§ ª¾°µÿ ¨«­N¬g£Dž¥V¤§ŸÌŸ‹¢z§²¬ ¬ýž:“A„£Ȫ^ž8‹-”kxlu”9ž+¹è¹¬°b«Ü­!à­!£©0©´§ê§‡­¸µ¼¸ï¸U²ʪ  ¢Ò›C’YŠúƒ`†¥˜ɤ¿¬â¨ÿšÙ‹ ÿ„ûA‰óƇð ‡ðŠŠòhõ2™÷VŽôeëýO é?J ë×Kî^JðÐJî`Mî;Qð£Pð¡KïAOñ!PòPïOï°Oð¾OîsQì”RêòVè;Wç»VåOVæÄVécTë-SìzTìfTéâQåÃTçUê„RêÄRìÄQíµRì†QêQèzKí›@ï¶Að¤Fî Kê:Që6Qï}NñþMóñMóÌLñmKðBLðMð¥OñmRõ`VÿözSþóg °` d €oH… 㕚zœÒ¢5ŸÀ–€\’BŸ„¨Nª“¡9 ?¦¯§­·¢s”ï›o¦E£B—\’q¢¤«Þ¯À® ¢o– %S•#\¨Š«†§¥"±¤#|¤"*§ ¡¦n¥ô£·›"Ž\ŠÏ„ Ê…w™ ɪ ®¨  מO–¾ŒøéˆñɉñÇŠôµ‘ùJ“ÿú_‚ñÃmê•Oæ6Jî‘IðýMôÁLô€OíÄQéTéXì Uí0Vì/UíQUîTîeUîœUîSìŸRêíUé¥Xëà\í8Xê´TçoUé'Uì-TìUëŽWì®TëPêkSì QíÃOïßNô.Fõ‹Añ·>ðç@ñ>í_CìIíYLòtIïVEïÁGð*LïRNîLð‘MðKï…NïQð­Yñédýó^ÿò[òc\ÿô_ü÷2`üö§`þóZ\ðß]ÿó¦ZñGYóÙYÿõa[þ÷ñZÿõcZï¦XëUê¢Sê²VéVéaXëS êS çTæUæVæ UåtV äVå]Vå¡YçqVå$WæÅVæVXæ‡Wå¸WäW ä‘V ã)XæYê,Xè®Xç Wç UèVæAVã¬V âúV ã VäÖXçÈVå¸V ãgU ã‡WåDWæeTçÓVèCSè¬VìÝZÿñ/TÿñpWîzTîeRî|RìqSêžTéUé¦UéÈWéZVê6WêÖWêTXêgUèfXèaXé‚WíXï;Xí˜Yîp]ð®ZïMWí‰Wê„Yé1Xë]UíUìñSì€TïbSýðfTüóÏUüô/Rýò1SþóóPý÷Nÿõ~KóøLòýMñ”Lñ¢KïõKðTMòÚKñLïíJìÑJíÔLòJòÖLð¬HñIóÐLòKðOêïUè½RåT ãTåÙTç—TèSUéhVéiVè•WêSèzUì7WòETÿõbRô—Lò£Nñ±MïGLï7KòEPòINò"Uô,_þ÷óbýø»düùneùú¬f÷ýÞfþþˆyC™ÿ §ÿ à–ÿ×i9oì“¶¢©Áª˜¤sf yœPÛƒ½†.ÿ!¸›ò£†¤²§–ouLZÞ^ 6f {žŽâ—\œµ£o¦2šH•ã–xwªj«í¤¥*­.°Û¯Aª3¤†¨QÈx³{Už¨¡ý©Y±ð¯¤X•vŠîŽ&Ÿˆ¬=ª=¦× ͘£˜R Ü¥ü¤¼ž”]|³‹ Ü“þl– Κ©œä ~” ‹òŒð_ŠòŒö“þû·“ÿýCò[å¶Mé„LðiKðNð2PíPéëRèITé»VìËVîYXìjWëëVíÚUíãTí¨Wí˜Wì9Wê WèoYéEZêXê¹Uç§Sç‘SêÐTí Uì¥VêqTé±RëPë/Qí˜QïMñ¸BóÁ@ó^Cô>òP@ðWBï·EðaHñ¸EðåGòrGòeKñýNñ`LñžMñvMðúMð(QñUñ][ÿô+_ýöÚ\ÿóÉZòšYñÿZò‘YòÄWÿóæXþö¹VÿõÆWñµYðžYò’VÿôýWòØVí°UêcUèžVçvTæŒSæìRæ¦Uå­T ãBU ã•Vå VåAV ãbW ägVæÜXå~V ãUå´Wè“Wè…VåVåäWåW äBWæÒVæÍTä³WäFWæÅWç–VåÞV âÍV ãÑV ãEWäaWäNW ã V à,W áŸV ãšWå)WçVèfUéTVì Xÿñ|VÿòÊWðÒUïPPì*NéZSêkSéÔPè VéÚVèöXêWëÁWêÝWéOTæÿWæžVèWìVëXé¾Zíá_ð„[ï YíŠWéåUè7WìˆUï¨Tí•Së>SîˆTýñTûôÆSûö»OüõISþõ¿Oþ÷LòFLñ¤IñLóðMò%Pô Mö†MöÖIñYKî£MòKðJôùJò\HñGô½HÿôôFïKEëOéÃSëEõHõ*FðSHìqSéRëÎSîRîÓTîSéæUæÜVæUç Wé0UéêUëXTî·Tò RôÏNöÁMñöLï9LîÝNîLîüOïŽQð.NîœQðWÿ÷J`üø¦eùûàhùüOcûý@fü û ‹ ûiªþ’¥Ô “þ å‘ý1’ÿ§§U¥Ÿœà›ÿCœÿ ›ÿÅ–›‘1‘‡“!à™»£§§˜ }€l^ [n G~¡™oœ?œ@§ѯĩҙÿ”J‹—‹—d ¤¦âªMª4­¹­°°w³[³¾«è§©œ®£­¾«c­$± ­² !« ý¨½««¼¦Þ¢ç›¢••šš¦ç«†¨£:¢k¥R¨†§øš¶“L›{ž §”üóЋñÇ‹ô=’ú—þÿ4‹ÿ€kó¶V æ„Mê“KôKò¦PîÜUëôU å7T åTë9SîÌUîUYîœ^ï®^ðìZïÉ[î±\í½]î"\îãYëŽXèSUäïR äðS å…Uç„TédTì˜SíÉQìÙRëRíoQðPïHLðgEðæ?ñBòŸAñý>ï?ðÚCñ÷Gó¤Hó²GòqHócJóQè¨R ä‰S å TêþWîfWï5\ÿñ`^ÿñŽ^ÿò2^ðÃ\ñ\ði[ð\ñü`ð@XépTæŸSä$Uä/TçTé!TìITíDSë¶QëÐQí5PòüOñHòÈBðš?ïOGó#Hò­CðÄAðUBï/Eñ½HðàGñ]JôaIó¢JïPLîfMórLôÄMóMóoMöüPö¼Só¢Yÿòº_üô\\ýóÞZðÌ[ð^þò’_þò\þò¿]ýô´]ýó?ZðÿXïóYðÓYñYî4XëJVæNT ã÷VåUçˆVçVæ9Vå(Uä¯Uæ~XêˆUé¨Vä V âQU äÅVæåWå=V äÁVåšXæ4W å“U äŠWå¬VäVãLVäVç°Wç«Vç£Væ÷UåÆWåZæGXå*Y ã«W âåU ãøU ãˆW ä’X åÙV äÉX ãÚUçêVê±UïCUòZþõZZÿñ5Xì&TëÝRê²UìŠTí•WêXê*WëíXìãVì`Wê”Xê>Ué·Xê€WëaXíLYíäUëŒXëBWëUìVëžUêWí2Xÿð&WÿòVþó"Wþò[TþñúRÿñ¸Tÿó¶Nÿô€Oÿô>KôÿLðÔLíÚLìxKïQKó±JòLô Kö8Kô Bî}Bò°?ôAóCñóFóêEóDð,FñüIîXMç;Q å—UèÌSëÝTëGSê²TçÚTèéUè|Tæ¶Qæ‡Uë;VñXVÿô–RÿöÎQõ¸Oò NðüNïOî¾OìËPíOîOðHQóSÿ÷ÇbúûóeúûoeüúDdùÌgûÀvö§•úç©þ“ªLª®ÿ{¦ÿu›ÿåŽážè§í£÷þ±—ÿ–ד]“:”¬—¾˜z—ý¡ê©¼¢‘“„w[^ ¡uBŒ ™ÿl¤‹­»®p³PªN“!—è—á‹:“À›‘§@­,§†¡Ÿ ФÁ¡bš­£j­=±,±r±’´“µmµM³±¶´¦Û¤ ^£¾–‡˜›¥ø©|¢™¾ €¬x«—¥« B™§ ºŒþ“ö¹‰ñû‰óˆŽ÷Дÿúþ[”÷p÷MU é NêŸKðýMî›Mé‘PædS ä¡SåpTêøWî˜ZñZ`üõ!`ýõQZò[ó‘Zóº\òR^þôÈ_þó!^ï8Xé.TèàSå¢Sä¸Sç Sé:TëåTìARëçRí0Pï«MòáMôJEóâAïBïEò¥FògGóöCó[@ð'EðHí_HðøIókIó_Kñ KîÆMñDJóŒLòÏMò*NñŒJñ”Rò"Wñ¢[þô(]üõä[þó+[ÿòE\þñ3]þñ¸]þóÀ\þó)[ÿòŸ[òkZñ=Zò¬[ò%ZïÝXëuVæ€U ã|WæûUç¬Væ—Wæ®Xç¸TäÇVåVçÙWæžWäCV âÝW äFVæìXå_Wä%WåWä$W áVU ãÉWçWçhWägVæWé0Uç"Uå“Xå=UåŒVåòYæVåÏV ã¢U áçV ã>VåºVæ;WæUå!Væ¬Uç}UéêUðÈUÿó¯Zþò¿WîOVë¶Uì`UìØVìrWìYìÉXìƒZíçXìnTë)Xë!Wë†Wê Wë¸Yí]XìRYë‘Uë2Wë®Wê¡WéyVéUê\Vî Vÿñ[TþñôUþò±Uýñ>TþñûRÿòÑSóPô Nô*KòÚNíJèïLêKñ`LôKJó±LôLõKIó…@îª>îÀ:ïÈ>ðíDðŒAîgFñäEñíGñfIíJMèOçÑSçÑTèOUêÃTéeTé‰VéUçUæ'Vê!TîàUð>Tð&Rò*PôâOñ«NîBMëOì"PëbPìvOîÃOïâSòúXóBbü÷„eûøÜeüø}gþúUkýü•sôcú ù¥ÿ ¨p§s®?¯­¡äQ–U¤0¥dŸ˜€ û‰Ž[•$˜I™–L˜e†šN—ÿɇ?kýr+‰ Ašà§é´H±(²³¬:’å‰ó •¡˜²›Z£¹­¥ОÇœI¡4 ’˜°£k¨ ­á«ß°µ´4´Ü´_° ²9°‘§¢ž7”Õi€¶Ž1 U©¨«µ¤ ›«¡÷­£ª››l—Zš/á‡ø]‹òœŠðˆñêŽõè•ÿöF”ø… øj ö•TíÂLîÑMò)Lî,LéÅQè£SåËUäþWé2Zî³\òÔ^ýö5Xþ÷±XöÛY÷‰Xÿ÷jWôÂ[þôŸ^üõ9VîÜVélTæUTæ¡SææTèªTé‡Së­SëyRìÈQí3MñJôìFòû?îF@îÓEòFö»F÷ÛGöžDóÒ;ïÍ@ïWFñDGñIò™Jò®IñÜKðËOñnNô OôûLñ¬LïSOòQòVô‹[ÿõÅ^üö…\üõ=\ýôºZÿñ…[þñî_üô´_üô¾ZòÉYñ›ZòÂZÿóñ_þó ]ðWXìÉVç¾Uæ)Wç´Wç«WæWåkVå³VäUä§UärVãŸVä÷VåSårVåáVäøWãdWäVäÍW ã UäÞWè Vç8VåVæFUè¯VçåVåtVäØVäšU ãU ä“VæIW ãW â@V ãoXåmXç˜Wè Vç•WçVçœUê)TðiUñòVí×YëVêÜUëRìÈVìVìùZí-Yí–XìœWëÊVè¿VçèWè#WêÆXì­XîVWëäVêWí£ZïmXëUè•UæeVç Uë-UííVÿï1TþðåSþðÃTþòcSýöaPþöYMó‹KòMñgJì¡L çãKèsKïÊLôIóŸJóHó¸Dñú<ï9<í†;íÙAðõFò,@îžAî‹EñÐKï¯LëNê'QêUç,Vç_UèVèUéÀWèeUç|UèMWì!Sð¦QñŠRð¶Pï‡PóLðšPìPëØPëSOëçOîÑOðPï€SïPZð hýö cüô¾dýôýjûû’“ ”&š%>§U¬z¬ˆ¯3®Õ­@­Æ®ž¬Ò¦p• ‡[‡G€íŒ„£'ª½¨1¢íŸ@¤-­V«* Ïœ Œ’_…ó¨‰ðÀ‰ðK‰ñ‚‘ôd“óˆò@v÷·\ ôORñ‚KòOôPOïïN;ïŠBñ1FòÙGðbHîqIïJð©KðdKñÚMñ?LñMò¶OóWOõpSõWôÞ_þö[_ýöß_þô[ÿòâ[ÿòk]þô°[ÿò·ZñZòJ\ÿó×\ÿòÏZð°ZíVXì¼Wè^UæÒU å‚V äÂV ãW ã’Y ã#T â²W ãUäðV ãBTäàVå…VåaV ãÙW á/Y âdýó=hýøeýˆhûÿcŽý;¨@¬à¦@©ñ°­#Ÿa—ÿСÿÛ¦ÿê£þ³œÿœ‘<“þB—WŸ=Ÿ¡»Ÿàœdšÿú–y‹Éæ }z ÑvÀ‡N"·Ó¹³\³Ÿw‡‰ šN¨ ŸŽOŸ–Ö™€›Bžÿ<H“€“UŒ%Œ'y ®„®  «A©ت°[«(¬Ù¬d›’‡»„ …N”%©ƒ®©§ŸšУÒ¤£¡ß¡  •؉ó•…ï’‡ðõŽôê•þ÷”ýöóæ_ ïíL ïµKï)Hð=Nï]PíÊRë"SçqT äAVæ¶YëiXîÁYó}WöUô½RôaPöÀOÿøÃLý÷öOýøõPþùÕMþöáTì'TçSèËUêTê}RêéRíxOîÃNíÙDïÁAòô=òúBóåEô™IóMGóÀLýjhpzþ>xúëGô*:ïAñ\GóÉIñ;GîcE íKîeLî®Mï+MñSLôÃNötMô»LóúMõµQóVóa_ÿõL_ýõ»`ýôè[ÿòwZò}WñËWðçYòYñ?Xï«[ñCWïxVëÒSæU ãìV ãoV ãäV ãQTã¾Xä½VæÚWåËVåµVåxUäÛVäÝVäâX â®V áV âW äªVåRWåÝWäYä®WåwWçÉVæõVäVä¢VæÉWæmVæõXçâVåUåõYæ8VädVåWæ Uå±U åHVèpWéXé,UéëVì-WïšXí×XéDTêÛTê_Uê=XêªXë”YíáYíuXíðÛAïnEñŸ>ïØ=ìDïKêMè—NìûQîQéÿRçTèbSç6Uæ¸U ãKTæsUéNSíqRòÑRñXRíâOðNõiMñmOíOOíPîÛNí‘MðÉPð~Pí¦Vë|`î™_þòk`ýôéoüõ{xþúëmûMcýû{Œý Þ­uµÛ¬Ø©(­ðX¨Þ£Ö¦ ªÿq§ÿ ¦ÿnžÿƒ ¦Ǥ¨ž…—ÿ³ ¡»’±€ µ~ 9sÁ”5  ܯ&¦g«¬}žœ Ê£Ÿ°·§E’‡‹BŽ4ŽÏ’9–¢•#•œÿ•ÿmT¡°™­ §-Ÿ8œG¤ש i­ÿ )­ÿ Â¥ _–s‡fƒÈ–¸®®•¡|—áö•¹· Ÿp žšþlŒõ†ð`‰ðô«˜ý÷¤’üõËyð)X ëÕK íAIîøJí•L êèRëiSíðUê9Uæ?VèâWëÛVîûWóWUÿõiTó SÿöDRýûSüüaRüúPýùLýø;MÿõSíiUè Uç|SêÒTê¿RêQð«KõíBðó<î²<ñK>óé@ò2FóÄJõäLøÌ_ž‰.˜ ¾ìJúb7ñ0?ò¼Eô¡HôÒJôGòÉHïéKìÕMîLðŽLóéMõÔOóEMòoLõMõ RñsZñ¿]þô¤_ýôšYÿò=WòŽXñùYï#XìîWëoWîŽUñðUê·TéˆT ä\U ã9R äÜVæïXè´VêWê€XêËYêÀUçèUåºTä¨WäVä¢V ãV â_Vä™WäkU ãÖR ãÈVäuWå:VåzWå%Xæ(WæWæÒVæŠXéÑUìÀVë5VéVè‡Wæ:WåqVælXæ¾VäRVã¶WæEXè"VéÁUìVï[XòËYÿó–WðÜTíNSë:WèWèúXìÚXîöXíÐXì…WëOXìßYï…Vì4Vê¢VëbXìµWì XìXìKWì¿Xî3Vï‘Uï¼VîUëò¬>òJ?ð AðÀAïBï9GñmKêÀOç.Oì«Qð8PîèVëÜUêpTèšUå3UæˆUè­VëSìŽRîæSî'RíVNïNòfNðŒNîOî*OîAOîaOðXPî¦QëbVê…\í-\ÿó˜_ýõ#oüöuýú[püþŠbýûF„þyª(¹?°½«®ð¯Ç«¨x©€¬•¯¯ݬ¨§Ϋø¦ ›–¿™EŸ¥šð'¾…ãxò€€‡ )Š ïš î˜–F®Ò­æ¬°Ž´°®¡ƒ”cmˆ ˆŠŠ­Š9ˆsÿ öŽÿ$|Ž4žIª\°:ª œŽa•9Ÿ 捻ɧ©¢ÿSš•æþÚ¯¬š}Ž‰ë”¤ §£Þ ºž v8”øÄ†ñ<…ïŠñÝ’ôÇšþöæ”þôptë´U êÀMï¦MñÙNïêQéGVéAWì¨Vê@VçÑXè1WëeVî¿SñSô«SõXSÿ÷ Tüü³Uûþ@Rûû­PýúŠKþ÷NñÎSìÖVèpUæ£Ué‹Sì!QîõLóXAöj?ó;ñ=òiEõÊFôûH óOPöÏmÿüP€ Ö ÿ»¤0† kNþÇ7ñ3?ðåFóÞGõâJõNIõ Jð6LëtMìÅNïoIò*Mõ5Mõ^MòžLóKô§Nó Wó”[þõ4ZþôÜXÿóWóXñ{XîXê Wé¦VëÇWì$TêjUçÎUåcTæTçÆUèÙWê¾WíòÚBð«@îpAï:Cï>Eïôò9ó<óˆ?ïa>íéAï3=ëöEí¹QíYQékOêRPìFQë;Sç(Væ5UèÄUé]UíWñ0Yð+UïSï8Rï÷Rñ§Pñ Nï€OîDPí&PíPðPPò PïTì\WêzYèFXëYñÇYüùkcúûŒgùÿ/kû¡qýô{Ÿ[¹[´é®n®U¯Ù¯.¬ç²l¬þª­'²¨¶µ ´ø«öš‘ÌË—m›ì˜c H¦Ç¥ šW»‚ m ¥y(’圮ˆ¶ȸM¹VºZº™· ±¦§œLž«™…–sxñ|ñ~H|F‚æ|¤,´]¶E¥É‘'ˆ‡#LŠx‘¨Ÿe©á£ D–Q—é—1mƒtƒ…OÏšŒ¤w¨/¥a—ЊúFƒñ/‡ðüô_—þù“üø¶„ñ mì³T ëåKì8MëOëþSêÎVç—Væ«Xè²XéZë¬\ð¹dþõPaýöNUöËOöQÿ÷`SþúQOýû§Nýû*Rþú@SýøâWþôñVðŠVí!Të¥SíRï5Lñ^DöÀ;öØB÷;Eõ5GõGøK[?‡ý°‰ø ŽúÔ“þ § _› À} iPø:ïF@ò©Eò6Kõ_HôIIô=KôKòñNñÚOó™NõKLôÛMñ;LïàMïŠMñvNòRóøXÿô\[ýöÁXÿó Xñ–WÿñµWð9XïwYð Wî Wë©SèýUçúVæEVç¦VèsWçaWè€VèVèÓUævVåŸVä=UåøVåVäwU ã°T áëV âœVã²VäQTã^V äÖW äxV ãÕT ãZU ãfVå”VæÊU äØW â V ãWæ_UéWèÓWçWTåÒWäBVå×WæOWå"VåWææVé¡VïVÿôUüõ.Vþð Xÿï$[ðXîXì Vè\T å‡Xç’Uè&XênVêéVëÖ]þð>Xí4XéŠSæðUç“VéåXé¯Wê£Vë WìõTëÏUì‰Ví˜UìVécVê-XÿòBWûù Tûû€Tûû1Mò$LíÇNñ^KóÒIñáNðAQñžNñRLñØLõ‹N÷¸Kõ­KõÀ?ðë9ð«:ô?õe=ï¦@ðP>îá@ìbFé.KêëOíŠQî%SïcRì½Tè¶VçyUêiUêƒWïhXÿó­Wò Sð¦TðWñæSðzPî4OìyOìjOìPíœQîwQî©PêCVê’VçbVåÅXèXïúYþóû`ü÷êgúÿPiúçoø!|ü 盵ñ¶*±"­€­}­˜¬¡­ª#© ª­š¯óµ8¶X³¢’à“¿—‘šÞ˜èžq¦rœЗŒ’†"yqþà–¢«Þ¶·¿·æ·ï¸Æ´Û¶­†¡NŸœ%œM{®x}7xPy¨‡Ú›I³µ½ש>!˜!„÷‹ð’v™#” Õ‹ŒO‹Å„à|z:ƒ·‘I—6™ížÿ-ÿ ª•$‰ú(ñò‰ñõÀ–ýù]–ýûŒƒÿôo^èYJ ëþHì:LéÕOè­TètVå®V åŠXèZëZïÉ^ðÏlólô\YóOÿõîOÿöFNþùäMþûNþú[Sýú!Wüù­Xýö°SñüQï€SìSê¿PîOHðÔ?ò;óD÷”FõÎHó^^Š}_—þ v”û É‘ü k™ ÷¡ Ù u€ ºLöL7í >ð¹Eò¼JôIòFñ\Iñ®KîôJíZMîLð–KðMïäMí~JïxMò¥Nò×SðoXòË\ýõ,Xÿó×WÿóÀXÿóàXñ{Yð:Wï€Wí VêÒTæºU ã/UåªXæ=VæjVæDVæ®VæþWåVäŸWäVäNVäVäUä?X ãS áþXä”TãŽVåüVç©TçÑU äüU â‹V â7V äÓVå½Væ¡VäVäXæˆVäÏWä7VåÌXæWærWãÅVãUWæVç§XçóTæcVéæTî˜SñÑVþñ‡UþïYZþðÔ\ÿðXë$WéoWéiXçÄWæ›Vè²VènXèbWìÁYí÷XésVæUç0XêXëSYìœXìVëßXí™VìáUë‚Wí`VìuUì"UéœVÿðXûø^Uûù×TüúMó¢HîƒMñIóMMóÇMòSñ’OñÂMñ\NôNöOõNKóìFñV9ï<òb?òB?ñX?ðú?ïmAîòDê¬LêQîèOísOð…Që¥Sê1Tæ–Tæ:TéõUï$XÿôŽWþôïTñ€TïkUîSî~Oí×OíÌLë)Oë”QìÒPíòLérQé…ZéWåóVå Wê¨WîÖZñˆbýôiûú­hüû¯qûüo|þ•—ÿ‹µжð±"­«ȪÏ©¬ªLª@©ç¦Þ¦¢¨«³³Á¾¦ •D•÷šè›´˜Ÿ™Všx• xŽP’ ‡µvfzc“ÿo®1ºøº?·ã¹:ºz´q³ç¬¾¡”š˜—™{û‡ZUtûv±„Êu™T¡—ÃŽ©ƒ É‚Q‡ºZ“q¦}ö€üƒú„5y¤xþuŒü7–ÿó—y œ• Çœ @•‰ø€ƒñˆòJõÏ—þùÑ•ÿõW|ê§[æýK êKí Pì™SêTçcW ä1X åhYè\ëŠ`íocírrî·zò*oþö Vÿõ*JóRFòIõÏMÿ÷ðQýø-Wüù[üø UÿôÝRñNQïBQïÑOñÑGðÝ=ñÂ@ôåHöIóUXð%ˆ®˜ = ÿ –ü ”ÿ †œ ž ß™ O€ÿ\OùI7ì7?îNIñ¬Lñ·OórKó°Kî5K ëMëõMìMî0LïjLïJîÅMñzNôOó Rñ«[ÿóØ[üöùZýö˜YþõÀYþô/WóÊXðïXî_Të!TèºTä/T ãTûøTýöýKñæMîŸLò¥Lõ‡KõwMóÐOñåNñÏOðeOñJðOóRñÖMñ»:ïà;ð¸?ñ@ð…Bñá@ï1BïpFîXLíÊPê—OêQíSíøVê,UçÈUå…SéëUïUþ÷~Tþõ7Rï Të°Të†QíFKð´Oò NîúOëæQêtPê£R çS æFWè Wæ3VææUêlXîZð^ÿòreýõºgý÷˜düõ¼pþñŒ ÿ¯"¶þ®¸«f©ÿN©ë¨Ø©A¬B«¥›ÿYœŸ<Ÿ2³ ¡J Õ”P›ÿb›þ˜c–¥—•‹ŒÓt— P||È”¶u¿c¶Õ³>·M¸|³ ± ¦hžv›M–]šÿ‚ŒeŒ•„>{~"‰$D!T’‘ò‘.‹‹…‰Šm£ ‡2}¦|€ƒ©ˆø™~ÿö—ÿ l ÿF˜ Û‘¶“F›ÿí›þ}Œó|€íçˆñ“öi™þú˜üúL†ýð?ZèáJ ìÜJïzOí¤Tê Væ3X äRX åZYè‘]é$dìXkì zõuxýüéXÿö{EðGï GðÊJñÍMô=Tþ÷w[üü›]ýúƒXô=QðîPï£LñÑAñ²=òáAó5IöàSöûuù™;  á™ÿÖ–ý •ÿ – Œ› › {òQúS8ï >ðºJòMòáPõZNõ#LïÕI ê6Mì“MíàKíLîdLïÿMñ‰Lñ’Lñ©PñwVòÆ[þò~\ýôS\üöZXýõ¿Xþô¾WòXï Uî°VëUéÙTæªV äŠVäõVåà[åëZåVä—Vä·VäøU âÅVä©WåGUåpVå¤W åU ã¼T ã¦VäfUä(XæWè\Uç¹V ämV ãßVæWæ0Uå(WæâWävXãbTäþVç«VæÄVåüVåqW äÅXã\XãMWå©Væ`Xè«UæÄVè‡RêáSíôQïRí×TìWìºUê)WçbWæXé´[ìYëRXé.Zë[WíjZëÏZé…YêXëô\îŠZïË[ïŒXíVêóTêßWíWí Ví‘Xî6WÿðÛVþñ¢WýôÑ\ùøæVû÷«TüøøOÿõjJð¿KòÄLógMòŠNðçNñæOò\Nñ,KïkPó.PðKWëRîŒ; í 9ïô;ïk@ï®AîÍBïŠBï²KñéNïÔOê+PèËQêSêêTéáVè¿UéyTêüUòƒVþú³Rþ÷îTïCUêÔSêxQëmLî¬LñþOîœPì¶PëPêÁR åÞT ä_WèVèˆWçVéîXì=Zñ^ÿòçbþò=gÿö hÿ÷’mù†ÿ‡¬˜µ­á§Ö¦ÿ¨E©Lª¬—¬/§*šä˜y“¾êš Ž ˆwŠ h’ÿÀ”þ³•p’®”ð™“gˆ•þiL„d‡“ ±v·s«õ®T±i¯«­o­£”œËšɘì—Ž¡§—‹Òƒí„NŽO”[—=“ é’ c‘'ŽVŠ|‰µŠ…ˆ†„ñ€&€,ƒŠ!Šä‘ÿ" þ¡§T þþ é¢1¤ÿ"¥÷^—ó7‡ïˆð˜’ô§šÿû•ú yíäWê Kî5KïˆPë£T æÍX åAYæ¬X ç…\èŽiîÁqð×wñ›ôyûyYýÌP÷'JñHðdJîËHíîJñzM÷ÀTþûÕaüúbgþø˜XôÚOöåGô·<ñk<ò DõÂGõ‹\üèÿ{® Œ¢ Ò” 3”þ ®™ Èš Ù—w’ Ñ|!Iõò9î~DÿóOÿôTNóÂNöRM÷ÁLò“Ií¿MîÏMïLï½LîÚLðÞMóLñÞLï·Pñ3Tò\\ýôj\ýôÄYþõ Xþö‘Wÿó×UñªVð|Vï-VìwXê€Wæ&Vä VãæWæUåVäVåƒUåÖVå¨U â5V ãSVå×XçøVèPVçöXåºV ä„Vä-TäúUç‚XéUåêV âÖVã}UæáVä¦Vä£YçƒVåvWãôVåVçNVç=VåÅV ä—Z äfW âV âWå1VæWUç£VçjVéìSëŸOìQMí‡NìdOëÍUë¼VêWè2WçÀXé¤WëfWëÔWëeXîUXîIXì YìÀ[ì{[í\î|\ïYí:WëYVègUéÅXí¶VídXî WÿñXüõUú÷ZWüõYûö”ZúøÆ[ûûROþùìJóýJñõMð4MïEMðƒNòuOôfOóiP÷~Uö×Wñqó8^ ñßIô¡7ï <î=íYBï¬Cð"EðîHïKNîóOêaQç5SéSè6UçgUéºTêúUíUÿõcUýúôRýùòTñœTëHRçOé½LíËNì7Qí OìÿRíTé+W ä Wå XéðWèqWæàWèXì^ÿóFdú÷¿cüõ9gþõCkúÊnûVȨ¦³u®œ¥…¢ÿf¥Ûª„¨è¬2ªþ§´žã©™*›ý–·†“† JŠþ =‹ý-‰þ)‹‹¶›Ÿª›¨‚•‡ê‹އÖƒ7…ýšf¥r¤Óª6«À£­£z¦Ó¥í¢r ¾›p—©ùœÿ[”ÿ‰Wµ˜^Ÿw›í– ’ ˆ‘Yñˆ߉r‰†… ‚,€¨4†Œ¥ùþ ÿž­¦Õ¥C¦Y£þŒö¿“ôB‰ð~Šðd“ôΛýú˜‘úù§sÿñRëgKïuKíZQ ç·V äLX äÆZé”Zì†]í_iòñvôFzÿötÿû‚XúµGøuHô‰GòjHñHîØKíuIî·Gî^LðNWóSaý÷\XùúHó?ñý=ò«Cô6HösJöÈeP–ÿs±V · ”ÿ 0 ¾› g“ cŽ …pþoHòÚ?ïHþô¡Oþó|NÿôFMÿöëOÿ÷:OõÙNòMñÕMðMðBMð1Lñ‰Jñ_KóóMñhPñcVñ7\þó™[þô YþölYõCUÿó»TÿórSÿöjSô}VìNXè7VæzXæUVçÛVé—Vé$VçWæËVæùWæ`S ããWäYåTYæšVç;YæeW ãrT âDVäîWåGVèýWéáUåèV ã¤W ãW ãRW âV ãaVèùVè…Vå/VækUèËUé@TåVåéYåW ãIU äHVäVèfUèÞVç·VéPêôLíÅLïßOñOïuQëýUéWXè7YéQXê§WìzXëaVê^VíšWí6Wì×Yî;ZîZïª^ÿòŠbýô`XîMTê­VéLUêKVìôUì}WðxXþó¤YúøôWùú‰Uù÷.YüõWüö)Wþ÷,NöKó!KóLóÜLóMòÔNôŠOøüPô UÿþÇ]rÙŽ,‡ÀWþU9ðÎ7 ëJ>íAòýDñ`Fñ›KïÒMí–QêºPéaRêNTê´Uè(UèÎUë‰Uî×Uþ÷9WþøTÿõ-TñmUëýSé³Oì.Nï¶MíëPìhPëcQêÝTå®W â£VåŸYé WçVçOWéüXî[^ýö+bùûôbûú+eüúShûýVmü„þî© ±š­b¢¥Ÿÿ¦:¨“¨(©£­A¨Æ¡îŸ@¥ͯ¸ŸÕ‡H‡ Ö”ý ¨û´ƒý2ÿ„ ‹ÿ ?™þÖ“¨s3rô€þ‰p€ {˜ U ÷¨›¯&­¡¤k¥‘¨ç©€§Œ£ó Ž›¡ ”a‘‘ `—°¡Iž/‘$YŽ%ÂŽ#ð’0’èŽXŠo…»»{Py«~º…ˆŽÎR“£H¶H´¨­ $›û•–ör‘ôeŠñ!‹ð½•õ˜þù¼…ö¥cíUHéJ íÞMìûSèÖWåöY ä[[è€_îWfô:dômó[oóÔ[ô Lø>DóHñ‹HðHïäJí‚JìQGí‹Hí¥LíhQïRôuNöüAðÄ;î¸?ñ6DÿõxG÷qOÿþàjý@•þ “ªŸþ;þ£“ÿ @œ 숅ÿ~ÿ¿Zû®Iô•FÿòMþôxNþóÿNþößMþöNýövRÿöRRóLPòtLò¼LòMògLò LñtMñ Mð•QñÊWñKYï[ñYþö:VÿõçUóWóVöÊUíWê:Yæ¹Wå WçµWéÿWéUWèVåvWæ‹Tå9VæFWæ“VåìUäãWäÞX åX ã•X à%U áÖXäFVåAVçEVç‡VæCWçùVäßU áÇV á#Vä²WèVêQVç«WæWçáWçÕUæéTäÎXå‡Wä2W ã%UäXéWéDVè`Uè7OîÈKñ€LòêLógKò˜Rì[Tè{XèYêYì·YìÌXëXYë(VêWêÏWëˆXìËWíKWîqZð+^ýô³XñTì{VëLVì`VìîUîãVÿòÍZýôóYüõ\Vûö‡Xûö\ùúzVýö¡Sÿõ„LóØMó¬Mõ±Oö¸Mö2NóhOòŸPõ…Ró?Sÿß~Ûÿ-”þñ‘ÿ 7eþÔ>ôe6 ì;íZAòËDñ@Ið®Pñ`Oí PêŒSìRìðSêŒUéøWì#VìTð¸Uþ÷ÙUþøBQòTïZTì]Rí Nï³Nð$PîÙQë•Që$RèUT äÕV áÇV å WèBWç WèqYëy]ò)aûù1aúüaaüÿ+jüÆnù;yüOþq®Õ±§ß¡Ü¡ÿý¦—¨=¨Y¦ ¨§¤7¥½³¾Ù­S“üŠÑžþ Ìžý†Œþê€ÿ}€w…ÿä‰ÿ†}9iÛiS€šŒ{ˆÏ} X– ¥S®L±#«r°\³ó¯.¬ç£z£°–j‡‡#!W•8—E‘[Š#‰"åŠ"‘Ž!“w“'Šì}–yÜz~/ƒä‰Œ¨‘5 Y²D³Ê¥˜£•ù8”ôŒñ̇ð!™ÿõ5šÿú”}õàYêæF çkJ ê/NêîTêÁYèpY äÉ\ækgðakóDkÿówmóO_ïœQó;Jõ¡Fñ„FíÔHíHíºHêúJê›KíûLï(Lï‰LðnMôSGô“>ð;îÐ>ðDô˜Hö\Qýfüá•ü k¨ýJüü÷—ÿ “žÿ¬•ÿý„ö(tøTû[Jõ^Kþô–NþõšOþö´Nÿ÷Mÿõ|Pþõ|SþõRÿôrRõPõ8Oô'PöLöaLôMð¿Oð`Tñ<\ýôÛ^ýó3^ÿòöYòXóšXòuWò÷Xò Xì9Væ`W ãáWãWæ\VèæTç‚Væ½VæœVæêVæ¨Wç@Xè˜Wç WåX ãV äV ãìW á›Wã»Xå2Vå”UçòVçTçÂVåÃVä­V áÛW á©Yä6VèTê±XèóUåíW äïV ãVäæWåUè\YìbUì]SêøWëyVëUíñYþôb]úû*^úø{XþôBVþôXVýõÙVüöüQü÷óNõÕJôMôÚOò’LòÉMòÄNòÕQòQOÿñÏTôd ¥è³È­àˆ ÙdÿÝ> ó(6 ì‘<íö@ðCïIó1Oñ‡NìNéRé@Rê²RêÑUêaVì²Uì¡XòAVýöîQü÷1RþóºTîQéçNë˜OìQí!TîPì˜PéšWè UãWâvVå„Uè‰VèÍXé:Yëä_ðocüö aûù÷XúA\ýItüßú ¿¡ü°¨ÿ¶¦ÿU¡ü1¢þ‹§}¬Rª£ï ¡2—瘣£§³ã»£¼³¹£¬V« a¨ Q¢ÿÅ”ý Š–Žÿ ó–þEÿ „ý ÷…:p”ÿ¹” 4–þ <šý ažþ–©4«E¤&®€½{µ‰­m£>¡é§ŽŽˆ4}È…Å’$MŒ$û…H‹BŒê„3ƒ0” ‘¦“ÿ‹šÿõ›Ú.~¾{5Š••q£~¬4§uÅ”üæ‘ÿù”ÿùA‘õ.Šòõ—ýüß”þþWoó÷Oë×FîvKïÚTìãXéY ã²\ á´iê›rð {ñyðÙiîÀ[ítWïêTïìNðºMó;JôˆKñjLðíOñINð‚LðÀLð–Lð^Ló‰Gô<ó“>õòCö÷Eõ¹IøQþ3eûõ’ü —¡ü@Ÿý*›ÿ @“úŽŠñÁñúeø^LùIô‘Mô“Nó±Lð¥LðZNó1NÿôPþõ|QþøÓQýùqQþùÌQÿ÷þNóEJðÑJìŽOëžQì¸TóYWýù Xý÷|VñIUî!Xï XðUîÃXï¡XíGVé%U åHW ãWãwVçyVè¡VæäXå \æ(Zæ£V ä…Tä+WæçU äÌU äHWæþWåVV ãHU ã Xæ`Væ¼WçÁUåÎUå¨Vå&WæÙUã÷V ãCVåàXåSVææWå,W ãÆW ä®Vå%VäßW ãVãûWäÁVäHVä]UåÐUçÐTêî·BñCðÝHñàJïÒLêÅOçÚQç­Uë˜UêãUèëTëéVí9Wþô¯WüúcSýúRòRìRèLêFMíQí™QìãPê*Rç¹U å Vå©Vä,TäOUæËWè)VèzYëý`ð?dýõg^þööVöæVúfmû„û^›û±¤ýB¡üZžü†£þ$©‡­+¬y¨ œJ³‹ÀŸ =µ9¼À_Âÿû¸§¯ L­Ü®Ž¥ÿoŸÿ ôœÿ¸žÿF›ý •ü‘Ù“ †— O“ ç™ÿ Q¢þ ¡þ ­¤C«­¢ã§ ¶é³ÿ„¤ ”­”Ûµˆ Ƅᇖþp¨ø­z™Οÿ<›ò‡±|ú„ t•#ŸÌ£ñ©~¦ÊP‹±€W€‰œy˜†žFœ 塦ýû»žýû[™þú —øõŠô7“þúm”ýÿixö®SîDðÔMïoUêUY ç] æ ` äÎqêëwî)|ñCxó bï•Uí^OîHQî6Oï3Mñ@LðÂLï÷MðGNñ”MðŽKï}LîxLíÐJñ•Còí?õû?÷vCùhDõ›IúÖXþv?—ü ¥ý¸¥S¥ š@Š÷ŸˆîLzðQ^øÍKùâJò‡LñLñdMñ=MóNÿö\NýöºQþöÅPýø´MþøNþù›PþøGQÿõõNñ¾LíPîxSñaVÿó"VþõTýö¯RïŸOèöUèUëƒSë×UíÊXíHWéVåUV ä UäþVæâUæhVå×WäwXåð\å4W ãÛV ãNVå‹VåøTä§XèUåôWã1WäWå}Væ–WçXç"WæAVæUç Uæ)Vå€VäYU â”Vä#WälXä¹Wæ‰UçýVåÆTãÿVä¢VãåV âÓTäÃVæbVçySëßPñ·Mí¦KëNLì§Mí—Oò=Tì1TçòVåU ããV ãSU äÝU äÊTäƒVæBVåvTåVæ¾Vå¢Tã§Væ(UçóUéØVê§VìxVíkVðËXþõûZûù9Zû÷ëXþôÉWýö VüùáTýö³KðnLóñLòÛKîÊMïƒMñjNòöO÷1QùÓUúü Yøš„^¸r¸ë¸(¬]† :I þÎ5 î7;í8Dñ4EñLïÞKë_Mè Oå\Rç|UêMTè·Tê[Të²VïcUýö YüûjVýüÀSóÔRìñPé]OíTKðºKí‹Lé–PéCU æUå­WçÇVæ#TäßWä6VæÌVè°Xê™[ìs\ïŽYñ©UôÌRÿû@\üÿ-sü)“ýˆ¢ü³ üEŸý‡£ÿ«”­m«!©š¢Åš• Œg›þ ²è¸µ¼ô¿ÿ¹K°ʰ±^²\³Pª ¥ Ÿþlžüxšþ{”ÿ´‘ ¶” ŠõÿY›þÿœÞž§¦¥£™e¦ –¨3™(ƒý‡#Œ?–Ûšæž >« ,ÉêÈy§Фžæ‡"wŠ~#k“"ࣚ©ÿ2ªþ»¦ÿæŸþb“ÿŽ…Cƒ¨‹ŒŽ~•¢¢ Ѝ·±ýþ¨üúÒ˜þù$“øŠôW‰õ!”ÿù:•û©{ö­Vð}Fð“Oï4VêZé`ëjêåwì2xðuõjõÑYóªLîõHí9JîûKìëKëÝLì-KíÖNï#MðmMò5LñFKï?HïpGñ@ï¾;ñŒ=öóDù5FöALù¡dÍ‹ÿ ïœý ¥ÿ¦ü¤ ;”(ùêyíùkíWõÛJõßHïëLîKñ`Kò^Lõ®Mþ÷IPþôTTþô Sýø‘Pýø?Pþ÷?Rþ÷USþ÷€Qó³Pï÷QòšRÿôjSîËTë[TðuTò#SërTèaVéMUëRVì¡Wê»WçVæ•VåÕWæsYçìVæ!TåUämWä9W ã£U âÃV áoV äqW åŽUæÃUè¾Vç”WåpUäÓVäUåìVæœVçÁVæTUå¬Væ\Væ«WæqVæáVåAVåûWå&WåZXæFXçlXæ WædVåQV ãSW áWä"VçUèŽTì‡PðåMíÔLì)LìNîßPó½Wî¿WèÂVäÑV â¢V ãŒXä·Vä±VåìVè3Vè™WçjXç1UäµWæ{VçUç›VéVìVîhXïvYÿòõ\ü÷ ZúúÑ]ùù•Xü÷€YüøcVüùOPÿóßJîKñ>MòtMïÔOðÑNñÒOò=Qö QûÉUù¾Zûå† G¶ù¹Ͷ÷± #Qš5 ð×:ì{=íþGòƒJñyLìMèbOå­Sæ/Sè¦TèØUéETíµUò×Uþ÷WýúGVüûoUÿô«Tí›QëªLìLïŒMíÃMêQQè]Uç!Wæ”Wç7VçJVæ5WçhVç†VèUèÊVéXëÅVíÄVò§ZÿýŒSýþÄpöùþM£ý=Ÿü ³Ÿþ Ï¥¥ª¬©’¬Â¥œ&•Tâ•þí¥æ¯<°]±®é® ²8³µË·k´Q¯(¤DŸýßžþã›þ®“ÿü &Œí‰l!“ò›Iª¨š Ÿ› žŸn“o‡ÿ wŒÿ >ª­>®Z¶ë¼G¯²ž$X–%]•‡çzJz ™†!®œÿå«ÿ)«þ§ÿ‹¢ÿd”’‹›Œ'‰—‚{щpœ y¥ ‹¢ý´¡ýý—þú$÷?…õü‰ö “ÿùç•ûh|ö½Yï§GîtOîTVì[í*gïˆrìÞ|îñwîolðr^ôMö¶IïzGëŒKíHNë MéøMê½MìIMëÇOîSMò4KôbKô{IôGóìBòQ<ñšAö{CøóFõFRü¹{ÿ \—ý Óšü¦¢þ¥Bšÿ £emö†^è—TëFPõIôkJò©KñÒIðÊLñmMó0NòRþñ|Uýó÷Tý÷USþ÷²QÿõEVý÷hWý÷Vó[RñWQô’Pÿó~RëÚUåTéOTòŸTñ‰TëæTë!UëóYë>Wè VæËXæÈVåôUæVçÂVæUæÛVå9S ãÀT â_Wä:W ã U ãeW æØVç¸VéþWé$WåT ãÞVåÊVåúVä²VåäUæUåUåVåEVåVè¼Wç¾WæÊWåëWãçYåÑVåÓVåÏWæ«UäçV ã‡UãýXåVæuUémTë7NîKíMîOMí¹Pî+PíÞTë•XçÛVä Wä‚VåôXåî2Fò›Oò]KítMé¢P æSåRæ×UèVêUîUóêUþ÷1Uüû,Xüú_Yþõ©Wî¯TëyMêÜIì§KîXNéÜR å§Tæ¢Wæ¤UæŽVçeWéWé]WéVé=VêVêVéŠVêFXðÊZö¢^÷ jú Œÿ˜§Ö£ý«¡þw¤ÿ÷¨¤©©­ê©š•Í’•ÿšþóŸþõ þ°œÿM¤‡¨s³ú²¿¸¶î³@´ÿÕ¯ÿ‚¥ÿÿ¢ÿS¦ÿ)žÿ— D`ŠŠ™ÿ¿²7´½¤µš)›¾“Œ Ê–þ «¡þ ­¢«?«”°߬ž=‘&#=C‡!{!†x Ø…  ®!®]¬Ò¤ÿb“ÿk†‡Mˆjhoøyz »œ \Ÿáœþþ—ýû´ùÌ‚÷Ȇ÷¾‘ÿúà’ûîy÷SîÛC íÁMíåWíº^îølï÷zì}ì’qëÙiïnUõýFô"Hí…JéoLê_MëQLê%LëõMëHN éªNë`LïqKñMKó0Jô~FõŒ?ó<ò×Aõ²E÷KùrUþ´ƒþnšüG›û6ŸþÅ¡ÿ k’ |üs` ðAQé•Kí}LõÃHô–Kõ2Ló¦LïöLñêLôÖLÿô·PýôóYü÷Vüø£Sÿõ›PóÐSþô³Tþõ Tÿô±UõÐUõOSòaPì Sè·Uê|VñïVóíRìþSèçVé/YêˆUå×U ä€W å˜Væ²WçVæìVåÞTåVå;UäÜVäWVæéWæWå|WåöWæQXçXæ›Wä8VåÒVç¶VæTV ãV ãZVä~WæVæTWäþV ä­VçØWçVåVãîW â³W ã²V äyU ä¤WåVå½VåìWæ‰XæWç}VéSìôOî}IïPJðGKë{NëUPëKSèÏVé€Xé:WéyWèÅWæNXåWåXæYç«WåUVäXäOVæÔW ç„VçÉWêÚVí>Wð9[ÿô¥YþöRWý÷ÎWüù¨Yüø’XüùWúý1RüùgMï¾Hê·LíNñMôLôïLòˆOò”Qô%U÷BW÷dsü ‘M¶ê·ˆ±ÓœÜЬ^ï6 ò$:ìÛ@ð/HóMÿõ$IïkNìéOèÚTçSæVè1Uç=TêÇUð/TÿôbUþ÷ VüúôXÿôKZðVêðPéÖQìNï©QéÉTæXçWçªVå'VçéXé[ëP[êjWévUêWé7U ç VèÁZîh[òfýûoý²—þÔ¯‹ªÿU¢þ‘¥ÿ™§Ѧn¨æ­÷ªr¡Ž™p•ÿùšÿšþî™ý{˜ýÖ”þ*•¼œr§ ±à¸7¸r´?´þ±¶þ*²«0«Þ¨ž©–˜Ô› Þ—™ ѶM»¦¯P¡…›¨™ÿº–ÿ Í£þ 2®þÙ©M¦|§ ­&®ÙŸДÒœï¬A£ˆ ¼‚<‰/žÿS­U­x©I­‘ÿ»|Z|z„(zŸd ¡b ²v £I—žüþ)¢üüà þûƒ‘ÿùbŠÿø4ùʈøÔrõ¥RîÚHî?Pï:[ðAeñÆuòð̃ï¸r ê~eî¾Wõ&GòGé”Kè_LëòMìrLíhLíNëÏN è×N éNî6Lñ›Kñ•IóCDó‚?ò>ôÀC÷°FöªNÿù»ep‘ÿѤý#ü^›ÿ ‹’«‚ýòo ôU î1Kë1Fì«KñLLõLõõMñ_MïÂOñEPöˆN÷äPýøRVü÷Wü÷VVþõdRóÐQñ¶TòQUóÛVôÖTóhTð-SïÂTí´Vì XðëZñgSêQåÑTåãWæ5WåÊU åŠWç’Uç¶Wç2VåÉVãâUå¨Uæ[WåVåDTæêWçMUçÒWæHWæÁWåSW ã•V ãØUåìVèQVæÌWã4V áwU â“UåzYè¬Wå3V ãîVæ‘Xç¿Wæ$VäìV âüV ãìW å™U ä†VåüWæÒVæ¿Xè€TænVæOUèSì…NðLð'LñFNìWOêQêlUéÒYê÷Zë/Wì_Xê Xç5WæWåWælXè(XæSWäBYäEW åCT æšVçcWé•Wí>Wþôò[ûú8Xûû(WûúýWüùXýöWý÷ÎVüùOþõÁLîLëàMì£Mð0KôÚMõ>Lñ·OóQõ1Sô[[ö‹Šý K¤¡¸ʲ‹±™Ÿ@BnÎA ø÷9íU;ñ±Gÿö×Mþ÷ãKóÀMíîPé\SéRSèlUçéUã7Tå^UíIîgMðtOì»Pé>Rç¶WçXçWèÆXêäWèTXæ Xæ7Xæ Wç…WêÊXé"Uå™V â6V ã+UæˆWçeVè.UïÑWüø!\ùþHYùþàWùý7WúýDWü÷¸SýõWVÿõüRò&Ií«Ié¯Ké[Mí†MôOôLòÀNóûQó¤Tõ…Zô “þ ñ²šº|°÷°ò¡V“…p²A úT9î]@ñ]FôdNÿ÷…LóNî{PéRéHSçSå¯VäAVä8UêWòŠYþø"VüüöXýûFWñ2UçÕTåk[é>ZëyUéXëÉWé"WæðVåtWçWç­YçJXç¨XçñZèCXçOUæfVéZì^ð³eüoÿX™ÿÓ®±r±Æ«ʨש¬²x°´¦I£ÿv£ý2¡ý¦šýô‘ý ’”üKœü„—ý õŒ Ç Y—þÕýž¤þµ©ÿ묋±–·ª¹ÿ.°þ¦~Ÿ}¢ ª<«¦¦B¢%ªp³½¶°®óž– Xœ@¢ ­š¨ä¥–2ön˜Už…¥Ÿ@‘Öw~~|ˆ$&†&trür‰y_ˆÿ÷ ì†}uÔj4l%„ûk‰ÿùL“üý?˜ýþˆšþüñšÿù–žþøZ˜ûû©ûý=uöÁQîÕHïÒQëÜ\ è3nìëðú€ñ+yñþkìbYìÒRöêIõ´KîUMé|O èMéÕLëOKëOLìÛMëÉOêuMîpMò1JôœJô-Eôé>óÍ<ò? ñÃFô‹UýúÐ~þ  ýr¨ ÿì’ lƒý‡oòø` ïÎMómJñ}JóíLôòKïËMí!Lì÷LíÍLïLðûOðžSðSXýô;Zü÷[üöåVþö%Sþ÷tRòŸUñhWñVï—Uí´Ví/Uî­XíÅ\î [îÿVëvTêòQæ&SäUã¤UäëVæUä]W äØX ã[WãÜWä/UåPVå¡UäDVäFVåÕWåSYäYåiWäýWå0WæÌWçRXç©WåºVäãWåUåUåžVçƒVæEWå/WæQWæ1UåÏVå TäWæÕWè(WçÍVåôVäÑUäŸT ãuU ãOVæ VçUèNéÙJìŠPí:OêR çˆT åEWæÐZæWåkXçrWæêXäWæJWæÇWç·WéVéäVæûT ãÖVå?VçñUæeUégUÿñûWýø XûüTXúýVùý¼Xúü\Vü÷^QüöèUÿöœNòIKïŠLëÇJ ç;LìÞMô[ð•aüø‡_û€I¥¹«­S­2¬º­=­k§ÿ\ ý>Ÿþ„¤ýò§þ¡ý7ýÈýœ¨ý!³û½«ý*¡þr›ÿ×–ý<”ýŠ™þ Äœþ T ÿV§,¬ø¬O§!š‹¡©ج1©už¡ñ«=¶´§Ú£|§Æ®ݵ&}tˆ½”‚G€?ˆ” “–"ƒ"r)q rbrewšvýxú„½—i¥¡£~ì ¥w¢üU ÿû ™þû§›þû›ÿù„–ÿøÜ’ÿøKŽÿ÷Ÿ‰ø—vú,QóƒJð+Têªg éÞ~îQŠñ†‚òÃpðô[ììLï˜Hò'GñHï˜JíÀLíŠNðXç_YçÓVäWWæ©Yè‚WæŒXåiWåáWåÕWæ€WåœVå|Wç2VçgWæOUçâUèÚVç¿Vç’Wè”Vè§VèuUæŽUè÷VèåVéŠVèUæÁW äT âWVäWè2WçŠVå¤WåLVæ±Wç¿Væ“WåœXçYèXçlWç{WéŽVð{Wþ÷EXúý¯Qúý¤PûùàUü÷¹UüùUüø™Sû÷_QüõPðòNî‚NòCMó1LótNõ'MóJMð´JðOñ$Qô¦SôXþõeýCŽÿ\°p´£³3²ÔŒ ^\ Þ< ú¢8íîBïºMñ•LôOÿøÕSþ÷§Tÿó9TÿóòQÿó¨RÿòwRÿóSò˜UÿòTüõ¨VýôÐ]ýôx[ð¼WêUçŸUå­UärVäZWçXì1bÿð_hñYéúU æÅT äXU äVåUæÄT á W áÉ[ ã¬\ç‰\éAbïSkýùfüÿ _ÿÚ‚ÿhŸÿ À¯9µ¯µòª{–ÿo’–šþL¡ý¥ÿÞ¨¾§Û¦ÿ¦þu¦þ£ý¢þH£þó¤T¥Ÿ˜[žÿЧÿOªÿDªã­°—±7±¿®‚¬5¦˜¨ ®P´È».¹ó´9²%¬9¦ vŸÿ%Žÿ©þ·’ÿ„Csˆe/o©t‰zIxIxYwï{xém ¾gbw” ~¡á¦P¤ù¢ œ <›ò”ZŽÿþ°þú×™ùb‘÷LŠóƒ…ï5ˆòù‘öÏø ~õDqð&{ñh“õà÷2•ù-uöàUîšEð^FóLñáOíÿMîQMïKîELîLïDLðÌNïNîùPðËPòNòMóMò.MòÊMõk^•‘ !­þ6°˜œ F|(c úÕR óÅKí7IòdKöLõÇMóqLòáMñcNðUMñEMñnMñÂQó˜UñÐ[ðòYì\Wé·VèMVçSç„Té|WíiYî,ZñZ[ýõ¼XÿôñXñùTðÙSî5Wî7Xï*WïÉVî TíWñýXó™VñWï6Vï¬Uï6SîùVëêVè´WämU ãëWæZWçÚWæ;VåÀWäLYç€YçXånXå?Y äÈX â„XåjYæZæ=YåˆXå/XèËWèñXæmXåLWäiWäÆXåzVæÙWèPVçìVçëUéèUé‚UçtUç TéÙUéGSêUêTé”Uè_UèšWæ€U ã±V âÝT ãñWådYç;WæXægVåÏVä„Uå€Vå«Wå-Xæ|Wæ¥WçrVçÈVé XïWýø'UúþPúû—Oü÷†Uý÷PUü÷uRüölSüö«RþóNOð›Oð5MôäMôKô!MôÆKò³MïÁJñÎNóîPó.PòÔUò©oüјþ.¸ý²ö«{¨ÿ¿ c éWÿ4:ñ>îwJô‘JóM÷WQþùÕTþõ1Qÿô‰MþôjRÿó4TóMUðUïUÿòÑUþòdYðñVíºUêyTç½Så‹UäõVåVèDWêéfî¡€õ#jïU åÖT âNT âËU ä™TåžU äWå¹Yç©[é§[ìX^ïëdõfÿüb\ýÌyý ö“þ `¥µºƬÖ¥̤ÿ¡™ÿç’ÿðšÿݤB¨1§â¦7¦ÿ~¨ÿä¥ÿ]¢þÿ£þã¤ÿ'¡™ýލ‘þ¢þ¯¡ÿª§»¯2°1®t®@­"«x¡·œÿ?¡б—º ¾¹±3¦˜¹• ‹Ž×ÿÆÿMqÐftbÃgqÙ{D„†}]u—mžk™r?uÕsús )€Ÿ™ ޤ‚§ìªš§˜ž~‘Óüùë•ÿúª“÷4ó:‰ñ‚‰ò€Œô™öÒö¯†õx~ñ×ð†ðä“ó>š÷áŠûýaúûJôhBïZEñëKîŽKìóKîAMñ¿JðŸIížLï¨LðÀMîžNî›OñåQògPòõOõ8Oö»PòÑN ñ2` ù” %¯ÿC©ÿ¸ÿßpûi] ùvN÷ JòÉJòÉMódIóÚLó´Jò¯KñÚKðKð+Lð³OñPðWñM[ò©YîÜWê[WçFUåtS ãíSæ™Uê}Zí»^ðŠYð©Xï×Wñ^Uñ UïGVï,WîGVí†Vì$Uë„Wî¹UïTðZWñ%WóVÿö1Uô/VðVì5Uè?Tç:Vé‚VèüWåÃVã»WãOXæ|Yç‚VåiVäÿX ãºW átX â§Y ã ZävXåëZæìXçCXçlXçyXå¾X ã­XäxVåéWæ?VèÀUç÷Vè+Té²TèFUçNUè¼TéÖRêtMëñNî&Sî€Ré¢S å†V ãBV âBW âîV ãáVäÎWå)Vå@WåUåxU ãÌV ãÓWå[Wæ0WäUãrWæ WæWæ¢Wí‰Wÿõ@Wüù`Tüö6Sþô™Tþô–TýõmQýõ„SýõRþò§QïMðLö M÷zKóàNñtMñ$Mï-Nñ€NôÏPø3Pøt[ø~zû0œþÚ¸г¦«K£y×v ’l0FõÈ7î¼Dñ³Dï%LõÎOÿ÷~RÿõPÿõÊOþô7Qÿó7TÿôÿVògTðQSñ£TñUïASëTTé©SèUçVåSåáVééWé“]çwðŒcê}T å0U ãPV áV â0V â~V äyWåuXæÄYçÍZëë^ñ añdö÷YÿþÇiý»…ÿ%œ–±ü¼вݵKÂþ­•ÿ”¼¡ª¡¨ʦ§n¬§o£Ťþ»¤H iš% ^‡ÿ šŒÿj”•Ÿ%®u²ù®«I¬Á¬¥«š%š)§1¯,¸þ­1¥¿”q‹ .ƒ |þwzþwxÿ o *gHrFxÿ7sµt\ø€ÿÇs÷fJf ìn [sæp—qׇ [žÿ[§—¦­¤ݧ«Ê›ɉøÜ•ÿø–ÿøt‘öøŽòéŒðÞŠòêŽôŽô{Œóÿ‡ò-‚ñüƒòÁŠói•ôõø¯…ýõPü›;ð>ìJîKìÑNì¤MïÙNòèLñ5IîLî2LîkNîZOîPñGQó'PòlPóSPó9QðS ð‰k û™ z¬Ÿ€ëc ö“] úRM÷Kñ›JñZJòPLò·Nó?LóQMóNóLòîMðÕOïªTð Yð\ñ4Xí£YéfVç?Væ®Vç€Ué UêæXìH[í…[ï”XñpUó¤Tò±Vï-VîVíEUì³Uì’WìxUìLSíUï™VñxUòµTó÷Uó·VóýWóÀWð+UîOUîÅUêÒVä»Vâ¸T ámU äPYæWæÝXæ¥Xå£YävYäâW á[ äZæ¦]è[Yç$YçÅWçñXæÛV äÄWåXXåNVåáUåõUç¨UçPSèÄUèÌUèTéäSìPëÆMì×Mó‚NóŽNìßO æR ã@W ãöV ãU ãÆV ã‡W äÂVä×VäÛUã/VäëXä8VäÞVäõW â¶Vã¶VçBVçÀUæáTêøWï“Wÿñ£UÿðmUÿñŸWþôTýô·SýõSüö²RýôUPÿñuKðÂNôŽMöLð£NîNñ6NñOðªOósRúðTýé[øi}ûÅœýh²ß³™°"©”˜ˆƒÿå|"[ù];ðƒ= ëÓLî~NóeM÷ PÿõŸRþöhNýö0MþõQSÿõTÿõáRòÉTòRï§SëfTéáTéøUéTéÔVå>U åWè½WçjVåúX ä‘Y æ“S æÈUå­W äV âeU áÞU â„V ãöV äÄYæ_\ëã\îÆ`ítcñedþÿglþ¾€è• ᪠³Q« ª—»ÿ޳T¡Åží¤üªV¬æ§f¦ÿ¾¬ÿN«I§H§ä¨N Ë”É‹p„Õ„ †S’ÿµŸÿ¸°ݶV¯¸°S­¢ªL£‰šØŸ=£+¤ÿÏ¥ˆ¯€ŸX[… gÿxlýüý _Žþý„ %}Ì€wËrâxƒ| y¡qÝmÊpBs‹oÚr%†ÿ +œÿñª*«Ú¤¡§ªþ@£þo•ÿÿT™ÿùÕöÁôù‘ôø“ôæ•ö”öõ‹óă ï² ìäƒ î¢ñ·žôò÷*x øYHù&:î÷@ë/JëANìOïzOðXêéWè†SçƒUèËWèòWçÏWëÙXí/Uï€WîVîVVíÆSê·UéæVçBUæUé¿WêžUé±Vê¯Yì|VìVíVí—Wì}Wê»VëQVìUêKUèçUç¯Uç˜VæVè™Xê"Vé˜UèêYê:Wê XèˆZæ¤Xä¬W äjX ä V ãÝW ã‚V ãöUäÔWååTã5XåWæ’TåžU äçV ã1W ã TçPèmNèîPê(PêNìeMñ¨MòŽNìÉRèïXéªYè}VçñWçVèüUæÁVåŸVçàUæ`Væ+VèŸVéOVèdUè*UèVèMSæTèWìÝVÿñªUþôñUýöYVü÷rTúû¥TûûISýöÈRÿò’PÿóyOõPò³Nî/Ní!LíILðºMóoNö’OóÖPòWWõ6VòÙ{ûÕ’ûj¥q´B°«°¬©^¤þ&’þô‡ÿ ÛuhOù4Jö£JôMõ¤OöÉTôžOðÉOðAPñ¤RñÕRôrWñuWì@Væ´Vè«XêYXé|Tç™Sæ{SæØUääVå‘WæVçXèYê©Yè^Xæ WæWæ>Væ'VåKXæ,Yé;XêàYçê]è `ìçgþ÷žjú|ÿÿ|—ŸÈ«Ê¢å‘ÿŒÿŒ”þÿ¨£æ¨P§§Ê•߈Ê–ÿj¤ÿl¥°¦q¬n°²ʬÄ£<ÿzšþ Uþ(Œÿ¢•þ¢O´N·î¶° K²¤¦o”„z ]n Ûc ˜ny„¬ŸwzØz¿wʧv‹l|roÆgñko~ ‹† ׉‹Ô‹ eŠ ……Ý{¨ty‹‚ V‘ ;† øwûPqüprüK‹û³’÷±Žò(òC“õY—öžšö·•õÈñ ðŒ“ò^šóP¡ókœö;z÷;LùZ<ñŒHï”NîkKë’Më_NîGNî±OírQíóRé#TæÒTéBTð0UôAUô¿Pó¨Kò˜OòÓUï$\ ðÐ{? î°y™9j ÏL ðuDíèJò„Lõ‘KõíLó›Kñ Jó2Lõ1Mô;NóßMõÑN÷ÒSôŠXòt[ÿóÒ_þób]îÝZê>Zë&Zë XêXêUé:VéWè_WçZWè+VêœWëWìÆWìMXì–UêµVéVç¼Vç8UèëUçÿVæhVæ•WèFWéIVéŽUêíVéWæWæ†Xå–VåäWå¬VæØWèYèWåÜW ãäW ã/Wå±WåTWæ]XèbVç—VçJUå”Wå9WåeWæâWæEVçÉVçüVçÛUç«VæYVäZT ãçU äÍW äTæðVæ¶W æâU åTå¦VçUçÅVå­WäVå)TåYUæVè&SìýPð°MñØNñÇLð‹Nî3NîðOíÐL æƒS ææVê©UìXí¢UìVêµUé×VéaUéUèÃUèiWé XësVì©Xì3VìÐUìèUíªTí÷Qþô¶TþõæRþô‹Sþô Sýô«SþóÃRþô˜SþöºQþ÷PôLóžO÷0Lõ+LòÒMòxMïNîFOóùPù€S÷Nõ¯gÿú ‰þ@Ÿþý«°}­Ѧý¢ÿŠŸþèŸüÄþ?~Fýö> ï»Pò¸VöïMó·MñQþøñVþùhRÿöUÿöõTñ°UíÚXíˆhì#péVZ áÎW âYèÈSê)Tæ‚VæŒVå%U ä³U ä¬Xå-YåYåXå¿WäuV ä2VæGXè·Zê:YëmWìSZì(Yê—`ï%hùü~þ,‡ÈŽÿ “Ÿþç¨>¬'¦³Œ³‹ ÿ” Ôšÿ‹Ÿý:›ÿn•ÿ*Šþ |þ ž|å~£‰ ÜŒþ S”þ½—Ë á‘ Œ Aþ† €‘ý d¡ÿq£Ò´ú£þ÷›[™º— `Œ{Ãj€_ ´\ _ãd4pûsXb zY À` #nBsóq”iÏf‚n"pr‚ §¦ 'ÁËÿ)²Îÿ%ÒÉͱ-Ž yÉØ‘ÿÆþU”2…N‰ÿ'Œy™þÿ£•ù ôXò|”ôð™ó³™òÓ“ñMñö˜õæ¡÷¤ürŸýZ€ð'K ìÑ@ òÈGòYJî>Mí&LëìMíÀMð¶NñZOìÏRèÒUæ–VèëVìéSñcQõqNô®MñåOñSõaWôa õÇ}M˜ ‚ 8Y ÿÅU ï³V ë˜JíËKïºKï_JïØIí¤Lï'Mò+MòLó°Mò;MñÚQòZñ ^ï‹_í*\ën[ëæ[ìxZëXëSåxVæmWæšU åyUæ™VèYUéæUçƒSäÿVå6Væ TåçUçATêòTî•Pò¢NõLõKï²Ní OíOìòP æCUæ9Uè]Tê&SìÑTìÆUíkVì{UëàVé6Vé VéTVêXì1Vì–Wí@UïxVñáUñÎTòÊQþöUSý÷–Týô?Rýó³Sþò#Qþò€Só‚Oô„RÿöJPÿô²Lð´MómMô]KòêKñÙLðŒMðÙOóóPùíSúŸN ï/füü#‚µ¡ÿw¯ä«¡©0§.¡B›ÿÉ›ÿÜû³…¨Fý™8 ëÔQððV÷ïGõ‹EòmKÿ÷ZQÿùMRÿ÷­TÿõßVôÔTïÌXîWk åâUÑUL Ò¼MÐŽ_ÞðTèGSæ›UèÈVçU ååU åèS ãWä?Wæ1Vå(V ãAT ãoWèYê¹Zé¾XêÁXìêXë¬ZêÒZìûföCsýšwê† ÿh£@¡¦Ÿì³†¡‚©ŠŠ— ªœ#”–Žþ ¯{ÿêoìni|”… /Œ 6 P…  ù} þÿ‚þ ý†.‹"žžuX|€ ¬z Ñw^u:lï] }[¯Zý\ <[ YlÜh b J] ¨] f bj #k8oÉrт՜2¯¸R¾u»êµ ¨v› ’v:ªÒ±ÿН˜¡žÿQÿEÿþg”÷VóÀ‘òb–ôðœôWšó’òm”ò7œòï¡ô€Ÿõ­•õrwðGñDôŽIòLï{Lí¹Lê1Më\NðüMñÛOìŒQéýUçàUçUé?TðHRõ Põ.Nò±Qð†SóúWó`õÛˆb— °q SüHUòêTñ JðKò1Jñ¥LðÞKï¬LðœLóFLõÎLõ–LôÑNò0Rñç]ÿó™_ÿñ^ìö\êÈ\ë!\ì½]ìêYéúWè©UêVíÙXíîWíYêBWçUæÝVçÀVæUæòVæ£WæVæ†WçÈWæU å¨XæúYç–VèÌXç3Wä‡WåXçNWçQWåhW â#X â)WäWåîWå"UæÑWçÀVåÞUåVæ¢UåEVå#TäwUäW äBV åžUç½VêZWë•TéåUç®Væ,TæÈUçVétVî VñYTðfQó’OõÄNîOêŒQìhUí@Sé4Uè0TéôTéTé@TéòUêUénVêXë)WìQVìNWíWïbWÿðõVð‡VÿòxUþô½Uÿó¦Uÿó­RþöÉRýõ·Oýó Sÿð§Rÿñ©Rÿò`SòùQñ¶TÿözPþö NðNò¯Nô8Kñ!KðMLðýMïqOòPøNøÀP ñCcü‚yÜŸÿö°Þ§ã§T©¸¦Øž þ]¥ü¨‹Rÿö9 ì1I íºPöšDõ*?òÆ?ó1GöˆOö§TÿõdVó–SíìXìú_ âÕ_ Û ŠýðÄpæU`á®VæŠTå³Vç`Wç+Vç“Sæ[U äYU ãíVåpVä0T â[Vå*WçŸXéâ[êžYê‹Xë¬YëXéC\ì&dó¬dô jû7yÞ”ÿœœ1Š|‹ˆŸ}û{ƒ ÒŽ¾…v† Œ~ÿ péh¦sõ\‰v ¶Œ %‚ Ý }ÿ Ýþ Á|ÿ ÷r–{{}{sVs2nØt Å{¡|-z|=o2]5Y *XCX ãu©r±oh)_ ða If Ÿrþó~§‡ ¢”ÿ ¸žê¦Ä®3¯Ó¯/¬ªy£Vœâ­³ù±r²‹­%¾©Ц WþŒ“ôD‘ð/”òð—õÊœ÷6šøF•÷–ô%žðl£ð&¡ónóid ë±DðaGôêJîOKìáMíªMí[LíêNîPïOíúRê^Xè;Yç Vé«RïkRö8O÷MôHOñTóCWñ+h÷!‘ý– m¡Sö9UñÀQòHò¦JôLõzLôÿLòBLñ§MôMö Mö3Mô’Oò†Uó^þõÜ]þóÚ]ïø\ëÎ\íi]í7^ídYê÷Wé–SêÃVìuVíñVî’WìgWèeWæWç Væ9Vå§UæGXèBVè°Wè'WéeWéVèâXèZXéœWéáXè@XèWèæWéCWèNWå.WåWæsXçHWæ¢W ã'W ãÀWåXåvW äÈW ãoWäžWæWç•Vè¨Wç°Wæ UåaVã>V ãÈVåƒUæ×Wè%Ué4VéíVèÞUæeSägSæ´Qé¨RíîUï=SîyRïøRñQî‚SêÕTëtWîßVìmSè?Té„Tè¶Tæ3Uå UæVçêVçWêXî¦WïVïlUþðÿXþóKXþôFUÿóNRÿòæTòÁUñUTÿò¸TñRÿòYRÿñÆTñSñTñuPïuRóšOýõMþóùMÿôÊLòøIïDLñ“Mð]MîÃOñ>Pô PôõTò½Sïêqý ÿ³ÿ «¦µ®7¨Û¦’©ÿã©þ˘]g d> ó*?ì¾L ôBôÃ@óV>ñ[@ïKôHRó@UðASíèVë³U åÑXåiiùò£[ízW ædUä Tä¼VåùWæÏXèuUç{Vå+X åW åCV äU ä‰VåÖWçáYé^í{[î¡XìnVêXêÓ[ë·`ï*bïiþ÷Ýrl‹Xž“ Mv¾sr}n}~ç|P‚ Åz®w }ÿ Tw  k èq ‚'” šÆ“K„ ,} £{ÿ E}þ Ów|l Ôn(wwÿÅpsp Vv´~¸V}ã{gj‹b øe z_ Âèz(vrÿþmëkÀký Ïvü<T©ÿ<½þ Û±£8¦ï¦å¦4¡ëž&—ç•ܪȶ·µMº'¸ü³‡®gŸ›’óä”ð_˜ó™öqœù›œûù–øM–ôœ›íñ®ý—€õLV ê@íCHó„KíNêNíÒOñ(NðxNíoOí–PìIRéHVç#YéÙWì—SîßPóSQôRô†T÷ºYü[eù[œÿ õd÷1U ïpTð NñÏJñWKñLô‚Mõ^Kò¸KðŒMñWMòWNó¾OñŸSïGXó‰^þö˜^ÿó ]ï”]í\]î^ï)\îä]î´[í¦Vê+VëHXì9VíÓSìÆTèÍVèRUç­VåUåçUçöWèŽWé/Wë^XëqXéXè¥Xé˜VèWWèHWç\YéWê¤Vé„Wç¼WåEWå Wæ:Wæ3Væ¨Vå”VæÐWçiVæâWä­W âNV ãâWæ WçŽXèhWæ&VæïUæŒVåŽUåXçrVæGVçìYè¥Xé–VèUçûUæ”UçTè{Sé5QêqSìâTíì¯AîÞEô=>òŽ>ïóAïDð½Oô VïŠUëêTéíS äoO âÏUçþRè¨Wç´VçÅTçtV åW å Uç%TçÃTåaVå9Vå´V åŠT äùVå§XèyZê6]îˆ\ïXí–Wê¬YéÎ[é8]ìÀdñrlÿù{tþ+ÿñ– %x(b `k w»‡ÿiŒÿ „ &{ ¸s ›y }ryÂv¾l ©2›Õ€ ly x Èy ;s öqŸpÓvåv_rnysðz Ã~Á| ƒ¯Êueq,rad û‹ €½usÿïtnæmýÏrý-~+›ÿ ·ÿ¨¸^®¦£u#û•ÓŠÌŒ^“̨~ºb¿} = Ûà ¬$›~’ô›–ðšòlšö:œù&œûZ—ùj—õ—í • ìÃŽ ÷lûîHò!@íçHñ½Mî OëæNì©MîÝNîNí[Pì´Sé&Sæ”TåÏWéšXïMSôàQõ OôÓSóøUñ®cùÈE•Üþ ׃øXñ"U í¤RïâKïdLñ!LñåKòóLô¡Lò¼Mñ¨MñÖNð/Nð6OîûVì÷^òF`þõ \ñw[ï]î~]î]ï]ï)[íàYê}VêRUêëWêuVë¢Vë]WêYë‰XêeVçvUæCVç¡WæWçtXè.WçÃWåôWæ×Xè¯YéXèÐWçêYê1Xí WêÿWæãXä,Wæ£VèøWèaXçGWçßWèpWç?Vç½Wæ^WæÀXænXèWèÁWçiUå¿Uæ°XçÙWæVçóWè'XérWéLZê¼WëšXêjTçVèyUèÑTèÔTêÛQçTéÚTëMUêÇUèrUèéUëƒWìÎWèGVå×WåœVæ†VæVæ~Xè Wè”Wé®Yí·ZïWðÑXï^TërVìMSëzýîª +½ü»µo¶ô¶ÿ¬ ¢¥  ˜ ¿† ‰ }Uÿp4 îý=ïŽ@ð#AðÍIôÓSôWîXWêUêWTèÀUætVçhV ã]T â,Vè`[íŽ_ïúXé1TåúUägVåXVä®WæSVæjVç°Wé’Zêp[ëu[íˆZë`YêÅXêiYê|^ï€aò}fôLsb’ýµ¨û>«ûážþ–‡§‹ `p#7‘pˆ5‚ ï“ @‡él Áa égýmsuÈvågU`µkÔw!sEmÇ\†X $T V fX )Z½\½\@V¿[ æ^ —c ¯g’n0oõu±|·† iàc5e+i`wІG‘˜M°›®‘ £‰ G‘ ŽŠŒÚ ©~ ök Å^UÖZ×hqyÿù«ˆõ3“öœõΚöa’ô1”ó'›óÆ›óŒ•ô6…õñløøIú®:óÊBñHò4HðŠJí÷MíˆNì‘NìýOìLRì(UênUìtWðUñòRñ>Oò›Kï®Nî5Vò‹müMþ ¯¦ÿ“®ÿ¨§ÿ ˆýÏWüAî Ií¸NíûKðâMóþLô7KóKñLð«LïßMñ]PóˆXò\ñq]ði_þò°^ýó1_ýò¼\ÿð¸^ÿï']ðYî“Xì Yë_îgÿò^ñGVí+Vé§VéOWê¿UëºVëUéïVêñVëÑUìýUéVVè0Wé@WíaYíUYêYWèAWèAWèÀWæ£Vä¶Vå=Wæ‚Væ»XçUXæ7Uå°VåªYæVå‘VåVåÆWå.WåTWæùWäV äÁWå WåyUæVèaUçöVåUVåðUä°U ã©VåKWæNVçRWèÕVé+WëXVë­WêWèHWækWåIWäNXæ²Wç~Yè"XæsU äZYç2Xç‚WæVå÷WæÞXéWãvU à³V á½VãïVäFVåÏXèKVéøWèbVèùTçÅPìÀNòELþõÉOþõÚOþô¨Oÿó¡Pó PÿóaNÿòNï‰MîŸNñTLñIOóÌQôSõ:S óFR ó¨t ü¡§ ޶׫9«œ¹¹Ä®ϧlž™ÿy¦h N ûê7 îŒEôHÿõuJôVQõÓVðîWí?VíÂUéWé»VçËV á UãôVç…Yè9ZéˆXèûVæÒWå5Vå¶WåVåWå'TäUWæHWæFYéh\ë"[ê [é ZèõW ç•]íübó8eôYpýR†ý ¨›úð¤ù7¢úߥü:¡þ ˜—’þp˜ýˆ›üÕýÉ”ÿã€åh Y›W þ] h |uÛ†é„epRd8c“l—lZ ªR÷R PY [ }Z ¡[ $] ¨a GlÈpï%@î{Ið JîLï¹Oñ†OðFMë'N è9TèùWæ—UæóUê]Sð¶QôMòâMîþQðüTóˆ\ ö»ƒx¡þK­ÿî©k† QVúBï®Kò0NòtMôåM÷jKõKôÿNó#Nñ’MðMóÝQõ"Vñ¾]ïœ_î]í[XíÚXîÚZïq\îBZëûZê©Xê„XëRVìUî2TíTë¸Vé¹VçCVæÃXçûYéWéVè…VçfVç©UæcTä¶WæjVêGWìRWédWèjUæYVæ„VçSWæVæëWèèWêYíÛYìXêÐWç³Vä U âžWäWå·WçXVç£Væ¼Væ¯Wç_WçJUäÎWäWç€Yè9Xè'Vè¨UäYV â‡VäšVåkWåRUåsVæ'TæHVçÖWè_VæQVä+WäkUã¥UääVæÐWæWç~Wè"VæñWå-VæôVåTäÃVçùUçVæ6UçÐUé«UéºVçèWåWäãVäÃV ãÑU á‚X âßWåÈS äàWæ|Yê5Yë¢VéTë)UìJRðXMýõóMýö Pþô|OþôzOò…MðLOïÇQÿñ¥NïsMðXNòcIïúMððPñŽSóôUójQ ïƒgõƒš° … )š #û­ /ºl²“§¥¡M›¨²7¥ìg,6òÜ:ïAï&Jô,Uÿ÷UðÕVì±Uë¿Tê€VéMVç‡W ãVãßVå}WåkVæõWé VçöTåWç°XçºVåVVåTäzWåVåŸWçáZçu[æOZçÉZæ÷ZéB]îebó“fôqÿý¢…ü›™ù nùÌŸúÕ§üq­þЬþΘý‰”ûwœü Ÿþ†”psC`—Yd\S\ kký{ìzÒr7nqfZj•kýgN` š] ÀY PX]] ^ `Vj®p.vˆr‚mRi#e…l<|$ŽâzQ_\T ¦S hdô{oŠÕ“Ë}~]xös¸€ h#n Sh Ki ©e\a#[ùdÿ%€þš’ýë™úrŸõšó×’ób“óÕžó¡÷Õœù­~ïäUêþJò¸? îÔBíúKíÙMì‹MìNï-NïMìåOé\SèWç?Wè³VìûTñ“PõÐMó¼Qñ²SòuTó_ÿü°‚¥¡ý!°þ0§… UúJCïEJô¸Lõ³Lõ©MöXLõáMô@NôYOôéNô Lö™NþùñSþøYñ\î YêÉYëñYî¦[ï¾\îJ[ëgZëCYìXì…Wí)VíÛVìWìXìNVì¸Vê¹Wé(Wè}WèVç’VçòXè VçCVæVæ^WèfWèwXè VçêVå!VæMVèyUæQVæ0Wç•WèWêhUê’Yé=Xç5Wä9T âËVå±Væ%Wç&Wç2VæÿWç6TèËVè¨Uå¦VåæWç³ZéYëaVèVVä[WãkVã¹V ã€VäÂUåÏVç*UæÕUæ5VçÆVå&TäþVæ VåtWåjVæYTåuVç1VçßSæVæ™VæzVæPUæÈWçòTåµUäžUçÀVêýUéáWæÑZæ„YåFWä¼WäãWäÝWå°Yæ½V åUUæfXë VííUíÎTï.UðÆSÿôâPý÷ÂNýõ¢Pÿò­QÿòiOÿñ­OîMínOîÊMîKð°MómMð¦NîæPòØUó©Wóã[ ôÎh÷B˜3¬ n• +‘˜ +Y  ý·–¹™°±¡a•zŸðª¡| é^ 6ïi<ì»Jô•SÿøˆTóVUî›Ví1Tê´Ué“Vç§U ãV âUäËYäMVä´UæÌVèðVævWç—YéÅYç}Wä{T ãŠV ä’UåëXæeYæÿ]ç7[ç'[ç?\ê^]îUbòÃföÝoþÿ|…üÞ—ù ·›ùeœúߤû}±ý¼´ÿ(§ÿzžü¿”üˆ‘ý‹™þÛœÿ‡ŽÒy Íf ež`>jŸwyÞuµz"tín%mGpJt qb š[ od‘gõjGuvH{­|2zq‹oM{̓T‰Q$…woþ]©a˜obvÇ~ÔˆÔ€}f mñzå~•‰ ˆˆÀsÞh?h ‹b—Z TZÕhý™ùp”úµŸöÀóü—ó4–ó‰ó ù@˜úåxï˜UíNôÖFò˜EïxNð+Pñ°NïèOðkOðgPìRé”Tè…WçÃWæWéoSï¹PõHLöÙRô1Só(Vôó^ýúŽ|þ KŸü#­þ1¢”wOKöþBì­Jñ”MôgMöOöLõ¹LñKñÁOóLõõMöOÿù¸QùIWó XíÇXêºWí|XðÊXò8Xî³YíYí;XïØXíWWì'WídXí6YîÍXî-UïŒUí·Tê‡TèrUæ\Sä¼TæÌVéËWé´VçÍUæUæÿVæ´WæðUå\Uå}SèÑUéVæ“VåqVæhVåÆVåÂVå/Wè€Wç¿VåÍVäŠVå°VæzVçRVæýVçUèÑVç-WçCVæˆVæÑVçŸXëXíøWéWå8VãzW â0U â0WåVæsVæ‘UåZUæ•VçeUæVTæ\UèêVçoWçzWèýTçTåXçûUæ*VæjVæVæ¾Wç WçhUäžT â–W åBVééTé*VèÐZé0WèùVåVäYæVæWæ_Væ¾VèVììUð¢ù8—ú®sðDUñÃQø)GôHó¹Oò OðMïØLí¨KìJOë‘TçUåÔUäsVæRVêTîxQõOùUÿù=XögVõëXø[tû Ÿ•ý^ªÿ–¡^q HõqCìYHîÒLòëNõ;NöXMó£KïåKîLñôLókNôzOõaPôóRð–TíSìùTï˜TóëRô´Sï©VíêVíLVí"VíƒVíVî‚WîÃZïtYîDVí1Uë\TéÏUèµVæ>Uæ³Wé1Vë™Xê.VçlUæ˜Vå+UäŽU äT äUçÌUêÍTéàTå6VæŒWè`UçòVå¤TägVç#UèãVæ¨Vä›V ãVã§VæºWçJVèUèpVæRWåWåXWæ9Wç Wé>WêíWèzWæ|Uä¶VäIUä¶Vç@Uæ•TåÛTåcTæ«TçóTèêTè¯Tè~TçWçWèÇUèÀSå±VåITåZVæ1UåwVæVç#VçðUågX å‘W åÙVè’Vê=YêVêpWè"VæÚWä6Wæ®UéÇUé&SéýSêWSìiTîóVïpSîðUïBTóhQýø\PüøñPÿò PíßOðõPÿó OÿòPð¶PòCOó²Mó"LólMòfPôÿRõ˜R ñYU óhúl‹Ä´Ôµõ” *[‚)"Ž õŸ K­ o«–ìƒ:• §ÿ þ YAø}FôOÿócRñÌUï¯WíàUêSTèGó×NóMðÑNî‚OîfOîŒPê×TçiVåUVåSUçAUê`Uí?QöOÿúUTþû÷eùSiùÀXøß_ÿ-†ÿ ô¢ÿEœ nÒIõaCíÖJíœLñˆMóMòêMð”LîÎLî©KðÀLð¡KïtJñOóiNðòMí¦Oï0LñÔMó'Kò NîOëLPëìQëÕTìœRíùSî®Pî´UíçTìÕSêûTçÌUæUçkUèÁVéýWìªXëWWé¸UåïTãõVãþUäUå UæUç'Vê½UéxUæ>Uè’VêUé”VçlWç„VçaWæ6W äMV ãÚV á}U âpWænWèvWè—Vç|Uä(T âÀUâ Wå˜WælWçWæUåXWçVèbUçâWç¥UçÄVçYWç¿TçîRçòTç©TçßUè'Vè(UæYVåýVæ¯VçòTåEUæUçyVæUåTåiUæ×VçºUæŽWæBVæÓWèeVëPXëpVè•Wç3VåÿTäWç$VéuTêëUë‚TêÂUè8Uç‰VæoUç˜Ué‰ Ü _"äž å˜…Ѓ…¢þ Ø þ Îu tJýEöMñPîÎUííWêWé³SçÞTæÁTå«UåãVåUVå VæxUçÖVëÀVêòVæ-UæPVæOVçÆVèXéäZë‹YëAXêUYë²ZëZê¦\ë__îbñAiþô¾pù“†ý—žü D¦û©ŸúÙŒú¥…þï‘•ý¸—ü Z¦þj¡ÿp£†£xÊ¥Œ£_šŸ~£gág Ht\}6nú_$Wˆ Iym¡q Œ ü{w\|Í„š^©@¦zˆ—–Óžÿ‡žý(ýƒwþ †vˆzá„û>•ø/¡õ6Ÿõ£˜öÉ—õ‡ù_ ÿü¦’ÿ÷,sòVîàOñ¬Fò5GóÔNñ^Mð‘MïxNîkOí¥Që=Ué8WéWébWéUé|Sì’NóLHö¯M÷:ZóIcõ…XøÏ[ün€›ÿ•/gŸGòáEìNLðœMó¢Nó¸NñkMñKKð¶Iî^KîNìKì Lñ§Mô9KïJKïNóRLõ˜Kò¬Kð©LîiMìLLì®QîŠQí‹Ní¶Oð‹Mï/NíNë¸Qè½Uå­UåÂUçÁVèUVê»WìÕWêµVç\Wå{T ã¨U ã™UåîUè¨UéUê`UéÝVé)VéVêÍVê•Vé×UèîWèBUç¬VæˆV ãÆV â¦V â†VäžZêhWë WêZUéõWæ}VäyWãWäÒWåWæ¥UäæW äpVç«WéUè;Uæ¯SåkUæ§Uè±TèöTè Sæ–Uç]Tè±TçúU åÝV åÚVæ$UçUæ_Vé–Xê$UæÓUä-UäeVæŒWæ7Uå­Uä–UåÁUçÒUéúVèûVçiTåÅUäÛVãVæØUæÞVçLUç‡VæìWä²VãZV ã@S ãUçÎSïåPþö„Oüø6Pþõ…MþòûPþôoQý÷eRüùUTûú¤UüúQÿùÍK÷rMóMòONöÈPófRóƒR õºT ûýoò§Œ¾p³’w"¼·û%†… é‡ ¾Š !‚z§ÿ œþ 4}ØTüÇCôéKðQïûVïèYë+WèTæTæ@WæTåUæ€Uå†Uæ¨Vè*UëWëûUæ‡TäÉWä VædWé¼Wë‰Zìw[í~Xì}YëÃYêZêß\éÔ^í€bð;iþô1oüÿ ƒþúŸû s¨ûà ûÛ‘ûX„ýRŒÿɉü ˆü Œ‹ýÒšÿ¬©Ô­¦¨ª5¥Ú¢H“þw†otr™d?^ a ‘b¦j øqØ~Îuƒ` QR£PgS]d JsßxœuûtérOm ½†¹{…Ëðn Sd ¥g_m%m¾máxÿõx‡quA€Æ) ¯¦¡£ ™ý—n–܈ˆqGd}d–pàƒû –øÝ¡õºŸöh—ö1”ô}ö_¢øÅ–öguï§ZíLUðëLñðKñyNï­OïVNî?OîPíTRê´WèXè'WêÊVêÀUéSë\OñjLö`Jô+Mð¨Qð¾QôVüÝvÿ ÒŽÿ ç“ ÆiŒC ïüBê¿Jð«MôÄMõMôªLõLôIð‹IïéMîºNíÜNñNô‰LñÀJðíLóbLò‰LïMî×LïÈMîÅLîïNï­MîïKïJñ}Kð}Kí®LìŽPé…TæWçVè%Uè@Vè|WéXèŽYçíWç:Væ TåµUçOUêUêhUê`VécVé>VìNVîITëyUç'VçiWç`Wè™Xè=UäöVã{Vä‰WæYêBWêQVèåVçRWèYíñWíÀWéaT åAVæ*UçSVç©UçåVç¦TæéVåaU äÛVåVçCWéXëDXëÖYë­ZìH]ì³^í:]ð|cþöMaþøeÿ÷rkúLwÿþý›ü £«ûu¤ûžûËšûäü€”’KŽ ª”ÿ¨þ†©“¦Ü®O­¨¢þx›þ9ÿT†fßh{~yz}]vÐbû_3e e wi e©d©YŠW ?^±jËrøu[v†x‘‚¯†’‡ q÷fÔe ×p~òwÝlsl3q#psL{†‚æ—©¢+—l­| Tgç\fšpÿ²wÿû/…÷š•öß óŸó–õP’ópšò!¡öúšû~ôÍ_ñ½YñôTí€MéÜK ç_Lê|Nì"NëöPè T ãbW ã¸X æzWè²Uæ¥Tæ³QêiMîÕLñÃMñ_Mò}Rò:Sò²Yø·s M”þK›ÿâyGô¶CíbKîîMï8LñwPôMô™Mó MòMNòsRðê\îœVïêLóLõäLóMï¿MïpNïNñ(MòŠMò`LðŠLïpLï0Kð‰Lñ•MïLìÆLìINëlPëESéŒUæçUåžUæeSæžVæ?UæÝVéûWìUëÝTêíUéiTæäS äŠTåõVç{VéHVéJUæSä(VãWWãVWä>WæTVæzUåÂVã»VâmWäÕUäÔUäËWä V ã WäóVäÏVä”W äU ãnXæVêUéÊTçTêRUêTçmUç2Uç5SçÞUêTë+PëÂNìªLêqMèÇPéæRéÛWè¬Væ(VåSWæ*VæoUç—Uè¡Væ)VåÔTå·TåUæ¸Uæ[Vè‰Xê WçŠU ã¡Vä$YæZäŠaåg\ç¹SèÒWèVç“VêmUëOSî¹UíåVÿï5Tÿð´QïfOÿñ¤Oÿò—NñNÿóžQý÷)Pþ÷AOÿõÞMôÕKóÓNð¾LïNïÚM ëXR êSî[Xøµe ´~ 4Ž%WŸ  µ½µ£S©Ô°¾  GŽ˜©R­Œœƒ D]ÿü™Qÿ÷ÌNþ÷URôÉVñóWï{VîBXð`YïàWé—TåÍWçiWç/WæêSäžWæUæ¿Uç¨VçŽUèðXæWæ¦WçrYèºYêZí$]îÑ\îô`ÿõö_ûüò`ûû|cþøtf÷[tú”û ˜¤üÝ£ü û™ ûïŸü¬Žþóˆ æ\‡ýIŸý À¦£ú¤ü¢›’u8‰"”†…Lƒψ‡$eˆ#Hz”uo¡{ br „s€΄&s 3h &V UY ’a k v¸yY‘ÿþ‡Ë¥t§m xnŠ“ÿ‡þuÿ@nÿþo°o2oóon| D»m¬#Ã| 2h9^Ž^×iHp‰xüZ‡ø¼—øò¡ó•Ÿòó—ò“òšó½žõ}öRsòlYðô\óWîèOé\LèlK éWLëcOêoQé TæŠV äÇV æÃVç²UçèTç¥QêrMîÊNð÷PñMQñGTò Vò b÷E€ œþ ä› ®r JõÆAí¦KîWLï”MòlMó×Lô2MòHNñ?Nñ3Oï£Sî‡Qò›KõõHôâKòLï‡Mï3Nñ‹LóÃLóPLðkMî…NíhLì·Lî¬KðcKíÿKêuOëPísOìQéÎSçÝTæ¿Sç2TçæUçpVçôTéõUë`VêUêVèoWç1Uæ)TæÃUæ&UçºUælUæaVæUä•Vã¼Væ8UæêVçGVæU â—V á,U â÷V äÑVå6VæŽVä‡VäÉVä›Vä—VåÐU ä Væ¢VéQUè}UçÝUèÿVé¦VêÀUêÉUé†TèESê°RìPí{Nì4Më‚NëÔNìPOê¬TèMVçWæ Vå[UæVè&VêTVéUæUè*Uè&UçFVçÞUçVè¾VçzU åÈR æèXè;] ãÔf ñ©WítQì›Vé­Uì‰SïWðEWïTÿîòUíbSðzPþôúPþö‘OÿóÝOÿôJOþöÙOþ÷âNõ[Nô:MóHOóLð—Oð J ëûR ê?S íðZ òv ©ŽøŽ(¯Ž &§ 4¸;±¯µ&®¡¦ß´зy¨êšþCˆ àdüü5Oý÷ÙNþ÷SôÈXñSWïWîãWïÀYíWWéOVçËVçäTæùWå´UäUå¯TæxTæsWè~VéæXç Yæ¢SäÅXèXêrXíÜ]îÝ\îÏ]ÿ÷W^ûü¾_ûûTbýù°_ôìgýýÉŠú 9¢û /¡üæ¡ü¥ý/¥ÿÊžýr•ü(ƒù 5„ø šü.¥ΪqªV›©„¨‚=ƒJƒtˆk†GŒ<ÿ%³Ž…ý‰­ (œÕ–¶œÇ™íšX c|G[ÛS R ë_ žo^r”¡H–ÿhŽ „sÞw¬‰’™ÿŒ•þÕþ @qþ°sct#r`osG„ Ñ™ ážé‹w eÊdb iepyþýªŒùZù£ôì¢óŠœó*–óiœ÷oûÏŠõ¶nñ,\ò¯`öAZðÓRízÿ†@…o ©_{ae¨ms%}ýð’ÿú~¢ú”¥õ­£ô2ôÓ˜ôlœùJýŒ÷uô bô]ó`ZîKRìeKì}L ëM éŸQëTèUåÕVåªVæÌWæWæ£Té‚Rí±Tð Wð+Xõ§Vøá[ðÊyÿûc‘Œè„ÿ^€ÿÚlúñWó6KñöJïWLð?Mó²Nô’Mò™Mï’Lð@NñNïZOïOòÚMòüKð"LñÛMñlMðEMð@Mð]Mð®MïŸOðÕSóQóMñUJîçKî¿LïNNï MñlMòÖMïQëvTëVê•TæwSäuTåþTèØTçÌVæ-Wê˜Xë8UèWTç¾Wæ+WåVå¯Væ‰UåßVçéVæ…UåbVèëWí@Vê$VçYWçbWèýVç{WåVå·WæKVåìVæ¡VçQVå¿Væ¹Væ‰Væ¥UçÂUç¯TèÏTèÖUé Uê½TêOTéíSè•RéGQîKOòŠLðçLï±NðbOëPéZTègVéUVçUå¿VèIUéèUè±Wé9Ué°XésXêUëÔVéŸSè²Ué]TêîUëSQî”SÿõTÿöÁiþóÎeþðjTò½RõÀSóNVòXVðEXþòòVûö&Uû÷hXÿókUòQþöãNþö¼OþöNþ÷NÿõNÿô.OõdLòëNï6OïMNï#Oñ NñèSñsUïmpøJ™¯¼~´⢠¢Œ #í–o¡$£ø¥§ë±'±à³é±s°›¤ý±ˆý 5WþÿOÿú¼VölTñÇWòàXðwYîXêÁVæUåuV å\UæúVèrUèáVèIVç´WæèZæ‡[çZæÀZç§WêîWëXç»WæýUèŒWë×^þó"cùùraûúŠYþú¸Zÿ÷¼\ÿödzûÎú f¢û£ýp¦ÿo¯߯ا:ˆþfgü xý ü ¥óªœgLƒuÁ…\Œ¡‹ó†Aˆú’[ ÿ ² <´ôºI¶¸j¹T¸ ±–± N¦ ½›Ë}(Z m\Âoñ 7š;…èl‰ ˆ ˆÉšDž1… pHl;n³q’t;n™g´joœqBh ­ZÇZýîbþ mrizþú£û’¥ö¢ó9œòn˜ó•™õÏ–ø_ø—„öŠsÿö?]ðžXêRèòL êÛL ê³Oê)Rê†VèŠW äKU ãôVålWæ WçîUë€QîTYïLiÿòöhô [ñwj÷Y‰üé {ŽþÅx õi÷P\óJXñNð—JðKòœLô®NõDOòçMïùNïOòOñ²QðQòPñ„KîÏNïlLðûNð…Oð¸MïLð~MóENó³Rò RòãQñçNïCMð(MóNóŽMó¾OðUPî~Qì»RëúTé:Så{S äPUåDSçÂUç2Uè Ué»Vé8VèfUç=Vç`XæWç4VèUçjUèùVé#Rè•Vê"UíâVêqUåVåÖXè VèïVèùVè4VçÅUå2Tå–Uç°UæèWæUæ‘VçhTçšTç Uè¶Ué¸TèGUênTëôTêTé]QêŠOîÍMóùMñUMðõMò¤Oë+QéUTé³Vé&Uè VçèVè@Vè Vç®XètVæ¬Xæ#VêúTí«Uì¨SéÍTêTîØWðQò³TÿöOþö±Sð.TïdSð¨Tñ.TóÙVðÖYïXÿò(Wüö7Vü÷ÏWÿô@UÿóuQý÷7OþøBOýø0Oþ÷‡Nþ÷™OÿõiNôKñMîsMïLOòêOôµPñ›RñKYò†m÷s”!¶ |¼d¯ ¯Ÿ  /[™É w¥Þª`¤§–©į¬ÿ<Ÿþ Lmÿ”PùuWöàUòŒVñ Zñ ZîËXéBUæðS äßVæ»Vè©Vè«UçüVèØWçX åi]èù[èÄWæ¨UçVí•TìÕVä•UãÚUç UélYî[þôdYônOørLöíPþùQvûé–û œ¤üÔ¤ý¥þ¹® ³-°“:aKYÿÕrÿ›,Ú’%‰H„σ¯’ ˜ÿÕ„áŒ+  ® Ò³ú¶¨¶V¶û"¹‘·a··ºµµ™Tt7^€q¤™Wœícˆ ˆh·s”$}#g™_ ¥h ˜v{Šxpws¬júj àf™Zû;Zócgÿ÷=iÿÂg püÈ‹ú  ûo¤ö< ò]œóè™ôp–ô:÷؉÷Љ÷­|üú¦_òúUê'QèWé6Vè[TåUçÙUèeUæ×Uæ†VçëWèŒUèmUèJTçÍTçæTèÎWëTVíTìêTêQëÀNîLñVNïLîzNðÙOìþQë,UìBVë1Uè?UçVèÜVçdWæjWåkUãÛW äCVè—Sê¤SêŠSé³SêrTîÝVñtr‚h˜ÿ'žÿ ‰q^`)[ÿ~vù6“ÿüJŽþstÿ±sû~’ÿú!¤þü,¥ù óŽžòZœôÉ™÷‘÷´‰øÈ‰÷V{ùFgüû%WðtTèQ æ²SèüXêXêäVèzVèhVçÏVæ„Væ¹U çQQêáPñ‰NóÍNöøT÷õW÷gûÏþÑ£ý '– ²}þ]d òpR êÅSëñQíÆMïXêÝWíýVðÕSðòRíÝQì[MíSKíåLî&LîÉMë«OìàTî Ví*TëÑTéÞVèTð‹Rñ.QòPòxNñÄLó9OóPñ[Ró¶Wñ7X ó)týþŸ _¡C  ¨ ´´²Ú†$ù…'¢•Éžs1Žkš˜¦(£ÿ –“ÿ Âü qý õX÷ÝSð]TïéYïÿWé«VåíU äWT ä¸U ãüWæüXè)Wç9VçÚWè*Vç¤WéYëëWèâVæµSéÂTêFTìèTìxPê‡Rë•Që‘IïEöèCõRAñÛBñ>>òÝOüNwüå‘ú y¢ûC®ýõ±ÿ)²ÿ¤›Öe„TûXXmmxVjihxzWyJs‚‚wd>v-mƃ  ª ð°W¬#® F© F©>¦ɪÝ©c¥òžï™%–˜%¢Î¥ºàŽU‚!`„‘„”„Âús–a l_Wi Í~ýø”þxžþÉ–ÿF…Ÿq ˆ_¤^0uÿyˆª„ÿÞþ˜–ÿüÔ§ýûý¤úU ù5 ÷½¢õµŸö’øé‰ú#ˆüá|ÿÿêjþþ—ZðÓWæV ãMV äîYç¶Yê WéÜUèíVèÙVæÕWæ$VèSìdPõqMöÅLöÀLöCRúVmÿ Šü\Ÿý ž— ê€ÿSk ôWìÂTêBRí‘Oí/NðKòªMòqMñ?MñLïÎNïáQî¢Uî>Tñ8PñÄRî™Ví%WîYð@XîðWíŽVð Vð³UîVíUí‚SíRíÕSí¿UíTíÚSëBTê VìLVïSñºRðjOïÍMðTLîGKí×Nî—MîMï3PðSî¶Tì#Tì3UëUè4Vç7Yé VèWèŠWçWVååVã)UãKUä¯UåAUåÿUèCWë0VéXWåUäÏUåÄUäUä¬Uæ4UçFTê’Uì\UéTåUæŠUéôWë³XìÔUí€SîóSí[RícPíáPìñSì9Uì@VïUîGUíUë@VèþVæÛVäöUã–UãµVäÜUæÀVèVé¨Ué‰WësTìÌUí¾UîWñhTðÙRï+QðÇRïRî`Tî–SïõTðWVÿófXþôøXþóXÿñ÷ZñS]ÿñZYÿñ­XÿôRþö,PðtVïVîaRð¸Rñ0Qî~OñŸMòWOïCPïÉSò·SñÍ^ ôiýÿuœÿ½¬ø¦¼­·´|·p±q¬Êšþfš“’€ #Š!÷|« ºü ý ¦–ý|ÿ Ä[ý·QòåTò¥]ÿò?Wê1WäüV ãUäÓVå›Wæ4Yé WèhWæ V åÝXç¶]ë›`íh[é±Y æ.VèÁUë‰TíSìPëRì£QíHî`AñÎAòi@ïhAïÎ=î3CóØWÿýjøcú”£ü´²þ4 þ؉¥`É]4_Þmziq oy"{½{Ãyšwpk` k Ø` †vߊ —’ù— H |™£˜=Ÿ²¡mŸ÷œèšœa¡<§“¤Qœƒšþ)”ÿÔ”þ—þŸ‘£Šˆ€áx vw qáwþÝ‘ÿ œÿΕ\ŒZ| ÐaúYìg~̈´ˆÿI•þ ÿü§û žüÙ£úŽ¥öžöò“úc‡þ*~ÿtˆhüšYîAU ä>V â,X ã´X å^Xè_WêÊXê)Yè9YæWèXWé&Tí®Qô4Nö`NõmPó•Só?kþÿ®Žú ¢ü ›™Š…þ¹sù3YíÃTé2OëÙLí(KïNLó´Môî5>ðJøÂUþþnúº™üc­þÔ”þ4wÄbndk£pH{°z‡uoz®†χq2{rÚmÂl§‚ ûƒ†zã‚ ƒõ„6}%ˆúΗ}˜ˆŸš‘šÿa ´"¬ ¡˜Ô–ÿ™ ¡ÿ`¡ÿ“á…V…e‹‰&†7zQr}f„Š…;„úúf|Yc_Gne{IQ‡ŠûlŒö…•øpŸøë¡öB™úªþ|ƒ"xµrný\_ñwW éûY åpV ä¶X è,X êHY ë”Yë¤Yé‹Yè‹XéeVêéUíüSóBQ÷:SøçVöÞ\÷qÿÿŸú -¢ü $˜؃‘p ø´X ì“Tè=Oê|MìÌLïyMóVê(UéÝTèáUç/VéyVçVå²VäÙU ãRW ã_VèTç_Uê7SîXVïÒTîõSì UíUñìUÿôPSÿóõSòÎTòNTñÒVðUï>VîTðWþò7Xýó¥\þòûYð×[ÿò¸\þòK_þòYYï_Vï[ï¦XîTð0RðÚSíêOð÷Oó8QòÈRðêRøxmú”t÷h‡ûΞ Ȱƒ²›³^¸x¹¸ó¸5­šÍ… #*z !_ 퇣£I±n™ K• !–ÿ hÿ‡Pù PòöXðµYïø[ìÊZèšYçòÌE÷‹NùLYý;„úÏœü B‚ý õs ]r "pÝuºs{µz²q¥xüˆRZ‘ŒÁ‡ê}·wÿüP• Aˆ¼}ž { %y°x]}ýó‹+Õã”/›h™=Í*N¬*è—#ˆ ˆ*šÄ¢™f!‹ˆ …ƒ²‚Pt¦` 6_ ækHx{yÁe 0XàZëe1mp€tü|õrƒòÏ’ôÀ¡ñ”ñT‘øA…]y’v 5zn~‘vý½hô½c ïH_ í×_ ð˜^ ðü[ î1[ íö] í&] í Yë VéõVëžUñMR÷RQùVüœ\ûrvþ9û –¡ü ­–ÿ þ€÷l ÷—W íJSéfPëqLíLïZNñMòãKóJô¹MôLñ÷OñëTð¿XðƒXîŽVî3VïØWîïXïHVîÜVí¶UëvVëJUêSTêmVí{Ví³RêêUê•UëVëVìÓWî@VïŠUïSîSïPòÞP÷‰MöwLô¬MñVLð§MîdNí PîéSí2Sê6TëSìðUèÆVäVä*VåYXå)VåHV ä W ã6V ã@S ä¤VêVð£UíÒUè:WçtWæšVäVäc ñ·_ í·_ ë}c ó]gÿñYÿ4Wÿÿ3RÿüýMöÿGòÎ?ï¦?ðf=ñÐBôcAöGùžPþúZWüþhp÷~ø`sù˜pü zÿ&PxÅwÝtnnÅv¶ˆ;“° ‰»{lzÿžÿ3—»}g‚ æˆüoHlnr ŸvtÅ{ÌÉŠà‹Ý“y’ j¸ V¦ hÃ~|zÌ÷^œï£‚œØ“^†é~»€5s¿[ ˆS´` Ðzþꆟ€ñq Naø[ŒX‘UüW“bø5xôëõ©£ð¼±ñ¨œðÆ{ õÉq ý/n Âu ŃŒ:ˆØxý pûõpü$s ÿAmü¡fö8e ôëh õëf ôY_ îŠX èBXéBWï:TòQôXöžký(üôú müm’ HzüÞg õYVïzQëwOí8Nð¢Oñ¦PñMðCLð[KóìLõtJóNñ‚Qð×Wñ;Xð«WïhUízWì3Xì6WìVìèWí3Wí•VìåQêøRéòSèòTçîVéŒVè×TæòTçÑTéRè|SéYSë®Rî±Rí½OìÜJìÂKñ³Lñ‡MôžNôðTíUéVèVèYUçøVç»VéÈVè,UæMTå±S ä²Tæ¼Wè>Vé1Vë‹VëÜUè TæÏTæ±Uæ_Tç„Uê5Uì›Rë¸Tê2Tê`Tè·TèTêªRëÎTë:Së¯Rì«RëzSë©UêìTê¶TêÇSêXWëŸWê>WérXèôWæ˜Wå¸WæãVæ“XèXî×ZÿóäVóRÿõ OýökQÿò­QïúRïÉRî÷QïéPò±Oó‰TÿòSÿò»Tñ@TîúRì¯Uñ*VôRòŠWÿóYýöÜZÿóTXñ“Yó˜Xñ×_ÿó[ZÿôkZÿõÁXþó¿Yÿóy]ýöµRþ÷PþøyKÿ÷Rÿû¥Xÿô²]ðÒd öDŒü ,­ 8°¸~·,µܹ^½u³.© 0— h„ %ǃ 'ÿ€ *i ©ÿãåó0WàùEœÈ’ ž’ýoyÿÒ^ÿýÈZõXôZðVé&U äžU åVè,XéXéÓYæ—Yèþ\ëM^ ëÑoôøw ù¨~ üƒ{ ûÈv úòy þM€ '{{máXýJôÎIñNFòÊ<ïÿ?òÍ@òôDõÀDôcLùÀMüüÅTøÑcò£tó ¡s÷ ezüØ âŠÏxŸjÔf Ëq}z‰­‹x†‰|yö 4ø yŠü •‰ÿ ‡•Úw¦b ` \ °^)ePmjkía Ómèxô†Áp^W \ÖeYW S 7O R ¬_ !e !bvS^Q ‘QSq q-yA‚|‘ÿ]‘»„Ö‰ñœþ«¤{-Ÿ iœS†¶kiÿ #|þó‡ÿ¾„oˆΊÿ½uŠaîg ~ÿ tŒ Hˆ/~×~ÿj… þ… þùˆ ÿ– =¤ =¦"ž§• ë ø Æ… | „y º}‚ … Yƒ ˆ Ì€ ƒ‚ ô‚ ƒ “| ’s]múÿïv÷wŽú «œú‚™úÒ”û|þTYð“SíåXï›UïPïlPïOñ£Mñ¦Mð±LíýLìLððNòŸNñKMî¼QìíUéÇVéÈVè%TèáUèGUé¾TéèTçLVçUè@TèŽRèùSèDWêJWétUç„Wæ Vä¨VäñVçÇUéÁVçVæ¹Vå VålUæ³Tè#Sê„PìùMî‹LñOí·OëYQå§UæâUéUëVèMVæZVæVèƒTéÜRè½SèRTçÿSåÊS äÈUçUéÄYëTéºRèÜRé"RëQëpTìeVï¨Tð\PòñOñºMñlPÿõjQý÷?MÿöÀNÿôãOþôpNÿòQïýSëäTèëWè˜UçLVæ¤VåVåŽVä«V âñW áXâ1Wå©VçåWìpUîBUî UïðUî¥WïTîËSïgTòTòRñóQò’SóßQÿõXQÿónRþõQRÿõ€RïSWêÂVéœTî,TñÊVñTÿòóVòÔYÿóTXò6Wó'XôØ\òÚ\ñUSýöæNýøFOÿ÷¼TýüBYøƒuú‰–ý Z“L…r…!*ˆ #Q¢ªU¾½²¢Á¢"œ § [­pž„ž\£™¢/Ÿd ÿ n’ý ®‘ý ù“þ µ¡ÿ =™ Î~ÿ 8nþï\ò VëqU è#[ê] îòk õÑkö°xú=y þM€ » … M‚ у –€ ­ Ü€ #~ ë~ óx ‘  ú‰ ž \y AyÔ‚  … e„ ”„ §… »‡ ㌠ƒ  ¿pÓlþþA{ù/•ùžù›ù“û ÔyÿÿŸXï–WíY`î?Zì†OëNíTPñNò~Mò6NðVMîKðcKò³Nñ›NïõQîàVêVVèéVèrVèTç'Vé4VéTçÑVæ*Uæ”UçôVèéTèIUèÆVç5Væ!WæVåLVæHVèzWè§XéVçUåXUã®UåUèSé÷Rë>OîÔLðˆOícOê´Rç‰VèxUêæUêoVéHWç}VæiVçs2t0hu&u ˆ'¡&…·ñ¡šœö•i’4”™ÍŸ<¤àÿ-šÙMü ~ˆûôþ«‹þáþ .›ÿ  ‰ÃwQuÿÚnû¾^ ökøit–X|l| | Ñ À ˆ€ 1 ‡€ i€ ä –} ¹| y ø{ W|0okb Tÿ“RýÑSüûXüþ€VûüD\ûÿ^úâYýÿZùhcô±lõzü2צ‰¨=ƒ5] §^ öf ëo$sJu!lìhZceiæm¡u».ŠT€ÿo†þ ƒ›Û ÿ O°þû‡ÎX‘T ÔX \ óa °` µq@wŠƒ \+yêq°aYnfu»{|„ C‡ zn,b¡[ +Z ´Z ê^ 8i eôcg›i¢wñŽæ£ J¦ëŸ ?š¿  ¾¥S¦Ò§2¨P§Ú£ 2— G ÏŠ ƒ } a{ ¦€ Ó† ¦‰ F‡ ê‹ (“ù¢ j® ª¢ üÊ~ûá‡ö]•÷ Ðù £ûNžýÁÁbó‡bïÒeî YìFOì¨MïæNð6MðôLðGLð@MðiLðŽLðtMñùNð^PïFTíVëlWë‰VèWWçåWè]SæWS åFUæpVæjUåóVäêVå"VæMUåÃTäêS ãÇVãVä¬Vå¯Wæ“XçäWè°UæTWæ%Yç%Wé UíÙTðnQñ×NñjKïPMíQìsRëîTë‹Vé”VçFVæãV âV â`UäeSè%SîSðüSíNRéÌQèÈPèîQéèRéQékPéøPé¯NêpOëÂQî°QîåQíöRí8QêUèYSæUæçUå~TåêTæ Sê½Tí-UìƒUêÖUèîXæ€cæ<^å*V äWæ¹Wç±VçjTçlQêïPðÕSÿõ±Vþö¨VÿómUñ¶TñêUï(RíSðÈSñPïÏPì¦Ní¡Oï—NñSQñÚRòRó1QñÑNîOîOîœOï&NñQMñ4Oð!MìèRìeQî®QòêP÷dL÷yJóRó0X÷ósû÷¤ü 4¡²—"O} 0êp/¹o)l#óu )àˆ*²ž8š!—×ÑŽ•x—š¦ÿü—þü’ÿ¹ƒÿ †û ò…ú=üx–ý ˜ý= ÅŽ݃àcxûf ÿœrúxÌ}æ{Ÿq~?€é BP€ e ü ¼ D &€ ›z ÎvÁy ÿS}³}šl Ï\uRÿSüý…YúþZúýþZýÿë[ýlbüd÷Æeóuióþ‹uù#‹HŸÿù§ïˆÄbec mìuÃt@rjlÐj·hCk`lõu鳆ï„ÿÉ—c ò¦»YŽõ_£] Ó] (Y &[  _ ]lsB}À„ÿö}Éo_R] ²o³yÅs«u¦{rtãmÜh 6f dcrZ ÷V 5Y Z]®itHtDv‹ƒr˜§ j£ Í¡ )¢ “¤ õ§æ§–©Kª'£û™ Î €‰ 6‚ ] N| | †‚ ㇠Ý… 7‰ 5ž X³ÿ‚©ɦ 8ˆ “qùqoû{üÀ‹ø ôžúIœý®‚ŒiõgðýfíŒXè×N è[Ní$Nï•Mð»MòéMñçKñòKñîMñÇMò2LòäOñãSïWí…WëMVè&Wç\XèÜUçT åUæ»Uæ–UæyUäÄVä Uå×UåìUä£Uä¼Vå UäÖUåˆWæWçYWçWç)Vç8WèCYëbWîTUïKQî®Oï›NòUMô¯NñøQíSê¶WéVæ¢WåWã9V á9U ã‚Sç|QíqQò2RñiRíaQêèPèëRç¢TépRéQéËRìÂPîkQíÜQìHPëÒQìãSí‘TëzSåWTåUåKTäUäéUäUé2VìæUìTë Ué#XçÞlìôcêPXæŒWæXéÒUë¨Uë.UítUñ¼SþõöTÿõÅRÿòÞTñMTòSò™RñPñ:OñêPðªOîêNíiNí|Oð‘Pð¤QðXOðWQñ¥PðxNîMí¥NïxMð¥JîóMì½M éOéLOëaRñÇQöžLø¢Kõ“Rõ¸\Ýÿ H—ú ÿ±üò±;¯¥‘f #æp )q $ép $)x $x>„…ŒÇŽÉ‘K›d™ÿfŽô8“þ ®”ý ì„ü (‚û ˆù ¯Žü €™ý Ê¢þ+ ÿ +”ΙþPŽ:„„oÿîu ý2tÈv Ì|dƒ —€  ¡ C€ } {~ n  !| y y üy{ ý ~ o ‹^eNþûPþüVüý[YþûôWýÕTÿXXg÷?kóÛlð/sùlƒ “ žþò‰¬r¢z¤€ÿéþè€pmºm/kÄhbj pqxベ‰C’)— ’ ©¡¤! b±k ýi ‚X 6T á] ˜ .‡ Ï Í{3uºm«b?a ÿl ôn,kwpmuRpYo ÌqZl ¹j~aØX U ÀZgEzÔ{°on ö ,“ u D¥ ê§ Í­ -®w¨§Ô¦¢Èš ¬Ž ¯† X‚ ÿ€ Ö} –} ]|àG ®ƒ ‹ Ø–Õ™ è®{þ )lü=dSjÊ}û H–ù ˜ü ªnù\ióNî‡NðëNóMõéMó-Ló˜MôPMô Mò¬OñðRïVVî8VìˆUé’Vç"VçrUç˜Uç!UèrUçŸWçYægUäüUå±VåòUã´Vã7VåmWåUäÏUå³WçÈWç UæáVæzWç!XèGVëØVì Qì MìzMñäMõÁMñ\Pî©SìñVèÜWå0Vå´Tã”VâoVå Tç™SëAQï–Qï.QíºPëŸPëâQêLRêGRê­RêNSíÔRïQíÉQêeQé9PèCRéÍSècSä&Wä+U ãaT â¿U ã•Uå5Vé|UëÏTíQì¡TêMUêê]êK[êeVèLVæ-VéÔUí£VïUðgUñÆUóYTòRð$Tð/TóVôùRôMOó¿OñOð‚Nï¨Oí>OëPí%OîyPí¨PîPð³RñNðÀMî­Oï,Nð Mî OìOìÙPìòQîŠSò0Sõ"V÷T÷¢Yúg ±Œüôœú÷³þĵ±¸|©¯—‡"H€"Šv !Ãs ÎmÇs °‡lŽ“ë›Q›ÿÛˆqs‰äþá„û €ú ú dŽü˜ÿ×lš ™þÿ^²þó£›ó\§û$ƒ ù_yòëxûLs ‹| â‚ é p€ Ñ€ è„ ƒ í = ›‚ ]„ û‚ ’ Ì} Ú} û9{ úT~ .rcWSRÿüEVüý(XüžYþRÿ“P€cùUqô.oó ðpûˆvH‚õ’‹†Ý}†—ý¾¤þ“–ÿïu„huiÁkíbÄaøj@n¹}ˆ‹qˆ4zx Éiœ` —h Íg ¾U  Q¨]Ä« x¢ ½‘F{pÜp~n7m àe p^ ;e¡q€x†z«~ ê€ÿ{vÿ Po†héa ìa G_áagn›p6eft ‹‰ F•  ߨ}¶ z³[©§¨¤§΢c› 3  ‰ L‡ óƒ Ö É} P| Â}ð|o| ÷} ö q A| ¹v¡rü(rÿnuûˆù A“ü ̈þ6zÿýløð`îóVèORê QíïOï^NñiMò½Lô‚LóSLñ÷LòöNóYNñOðÖSïYWì[VëVêiTç#Tæ¢Uå6UæUUèUéBUè1WæTVäWUåÂVåûUähUä VåðUäÄUäÞVåÍVåVæÀWå„WäLVä»W äßVæâUç¿RêªOë³NîñNðVMðPígTì/UçYWäÕVå»Vå“Vä§WæUæ7TèRêŸRëÂRéMPêâQí£QîéRìqRë.RìRî‚Rî­Rì9OêQêÙQçÄRçKRçÖQåõV ä`T â”V ã°T ã&Uæ[UèþUê.SíìQí&TëWUéwTéÚVë6Uê*Sæ—Sç§UëåVïaTð¯TðýTïQïÐRïwTñWó«VòOSôQôWMò‘MðKNñOðÅQìOOíDPíDPì…PîÜQðŽQñœRñ‡OïíPîPïQï˜Rí#QîKRï¤Sñ™RòTó|[ò©Uõ|[ÿúÐzþ G˜üŸüÀ­(²pµÒ·…± !¥ëšÃ"`s hhûp ý…ÿ"LŽá‘_™ÓœŠ` h2ÿ2úkƒù ûŽûPþÞ’‰ 1‡ô—þøß÷µñŠÅýˆž÷Ó³óŸšú’z.~-„ 2‚ p€ ˆ ܆ µ„ ƒ e Û… k„ ™‚ ‹€ 4€ : ú| úŽ| ©q h Ö^ú]^ýýgZý4^¯Y¥Yÿ¯bû öpù Alø -_þ ]c ªoE…œ‡p‚«„‘“ŸþÒœÿë}qe —` faõ]<`Rb ¬n3€n€°t{bÑf¹ne ò_ .` [Y .R W\ȳ視žÇwNsr.g ‹\ V_ Goi{¬ƒ‚ {^o Ui åk j .g „e‰f¤h¨b+h(}¬Œ ¹“ ¤— ~ Á¤ ÿ-¦ÿL¥G¥£§’¥S› à“¼b‹ ц r‚ ;}­}M{2z ªz Ry êz ­{Ô}‚û£‰ùê}ûênú¦~ú©šü u—ÿ Ì„“tþ¢bò{UëPë“PîöLñ°LòKOñNNñ=LñÐMïÕMï¿Nð*Lï‚Oï«UíMYêYëVëÊUè]UçTTæÕTæITçªUèTéðUåäU â¯VäiVæ`UæVæ VåVå¹VæUæ†UæëWæVäæV ã¢W âW ãïX åÀUä¬TçðPêçLì±MíoLðˆPíRëíWç{Wå Uå&UæêUå™Uå‘UæDTèTèSçQæyRçÄRìQíyQìhQíQðÛQí¿RíRRìZPê–RêþRènSèfSêDTé”VçVåmUåwTæ€Uç*Tè^TêÈSì«SïãTí‡UêTéâUê3UéTè@SèrTê]Tì÷TíŽTî)TíSì4SïQUñJVï)UîäSò PôÎMóLNó|Pó¿PñãPîçPï Qï8PíÏQïµQòPóÆTó”NîoPìcPîýQî¤Sï UðMTñRòŸQöìRõÈVôRþù–`ùR‰ü@Ÿû?¢ý¦ õ« ±ë¸à¹n³9¡&Œ¡xcj×~1Œ!K˜*•—ÿ{Ï:c NV³pþ3~ùûŒø Žú ­þ~ ˆá}û´œò!ÎòÔøªûܦø,Íù•¨øu} E P‡ • pƒƒ † ¼† [ƒŽ… )… ½‚ ñ ç é} € ýÔ| Vx n Pd [c ƒjéj¶[Õcxipl chÿ˜pDhÿWU †Y ,c Ù}ð ‡Öq z•W”Ã*i UZ }_ Ä[ ‡X ¿Z W_pšq@d ‹W ndÆtºqÅ^ ¸` ¤f B\ ÿ[Ï«1£Ø£6 “š'‰Û{ÅwÑmºa «^ ¼g hryFwxs .tÄn±n tþ¼sÿ,j Úb…fiiïk'qö€ Ì• • Ж \– E˜,œŸŤú¤ Ÿ 3™d•È  ‰ Ô… È v|Â| Q} <| P| N{ Qz Ð|Î}‡ˆû*”ú¯ú ü|ú ƒún¡ü *¥þ 9•ÿ }Íiô;Vê…Rê‰RìºOîÝNð†Pñ3OñKñÝMð'LïñNîeNïVOï«RíæVëVWëžUê’TèÀTçVUç TåƒTåTæÏUæOVå„U âéV âUæðUç„Uç¹VæWç`Wè»Uç¯UæöVæ(V älV ã¹U ã¤Xå+VåçVæ”Tæ¤RêbNìíLíyMí‹Oë–RéêVçJVæcUç¸UæNVåUåÏUç¨TèSíURìÃRìêRëMRêÇRé¥SêëTì:Vì=Uê_UéŠTé›UéXTèTèÆTéôSëÚSí­Tì¨Uê:UéSôrRñ6Sð&QïŽPîÏPí½QîNòÒOõuQõ¶Kð¯Pì QìzSíµUñTðEQð©OôºOøˆM÷ýVþú§RùüújøÎŽû ¥žû²ŸþGš_¢¨¿¹X¸Z© q”*“¡E…z ›˜¤[œ>–Zžÿ0’þÍs/^ èný¾€úÄ‹ø  ‹ù ¯Š $‡ Œˆíýúo«ø Ÿ ò̦øNùžˆýŸšþéýÒ} ¸… ôŠ ”ƒ •‚ q„ ƒˆ °ˆ à x… ;… „‚ A€ y~ m| f} rw ýv ³q ¾f ‡f +q udi_xux zk1v+nE]·] ~l¶~ì-q½n ‚’/ˆot'TZX 3g ­\ ‰ÿ ps¯zâwþ,ký 9m<|†ŽDŽEwÁgm† Ç“ /•ÿ ÿàg Sd ¦~ çr¾\ ÙW âW ÜV ØU sZUSO®Y Ÿeka Va Ii4dH¦î¤C¥ú¨ªõ©Š´Š¸{zµl¶h b °\ Z !] f ¿qý}ƒý”û ¼‘ü ¾~þäj ÕdÏcbkxyð†î‘ ;— ÿ—’ ž äo‘“ß™ g› Õ› Ò› — ª‘ †ˆ á‚ ƒ € w} á| r| { é{ ‡| (}Å}þìúš’ü8›üè˜ûRšù ù©ü…©þ÷œÿ ‚þoîˆbè=XëªQë@Rê.Nì(LîQMð±Mó MôìMïtMítNïhNî`Nì]Së»UèUè™Té£TéMUç?VåU ä‚UäzT ä€S ä‘T åÂT ä7T åS æCTè»Uç¸Vå5UçUê Uë%UéÙVærU äAT âæS ã\UæÞVèVéZUëÙRì{MðúNôPñ:RéœVå!Vä³VåUå£Tå‹Uç–SëÈOî–RòûSòÒRï¬QìPìçRð¾Tò‡Sï®Tí(Sì”QìÕRì•SìŠSëOSîZUð?UðÁUîûSìÒSêASèþUéµTèÒTægUéSê¤TéóVè$UçfUçðTè"TèiRé OéßPëôRìRíRð+Rð·PïJÿòüHóÔMòºUòaVñsTñ€SòWò“QðOï·Tñ­TîúUë$Sí{QðoOñ9Pñ SôPÿ÷ðQð:SíVï¯RòBNñÂOðÜNôNÿ÷"QýùN]úûm÷ü>€øµŽû 7”þ Nœ#&k… 'G‹ $ã¥ä­¤J–/˜CŸÿ`›þÞš÷—ù˜!â€b…¼Šÿxþ¿jNtý8‚ùÁ|û «vý On 0ubüjg¥hÃfl°[þmf ûýt z~ rƒ Ó† ƒ ƒ .… òˆ z‰ x… !ƒ Šƒ „ ð~ ƒ} Úy •x ùu?v?z jr Ÿi °iSuimücýÝŒõ“ÿ &ÿô€#yý¤sû ùxÿXƒÉŒŒ$‰â~`¸q cžþ X”þ×tÓk Š B‡$lQ\ µV JR ºP [Y ˜] `X }\ PbgvÁrJh òhg–£-¥ì¨#©{«ª¬˜¨$¡Sšìnƒ|ßq”a$[[Õ^‚m …ü ¹˜û ý›ü’ý"Dh Í_Ím ñ~œ • @– d”@”@’ ; $à ì“ T— ×™ 7— à” † щ‚ ›ƒ §€ Ó Œ| i{| î{ Øz ~H0ŠýÝ—ý †ŸýÚ¢üû¤û=¬ý$©ž Œø}ôÎtòÖcó[Tð8PìÕPîºLïƒMï"Lò¹Mó~MðhMîUMï´MîÊOí¶RëÖVçqWåSTèàTèïTçUçTæÁS åÉS ä]TåVTçðTè¸TççSèCTêÑUé@Vè[UéSëjVí‘YìVèÇTæYSäÇSæ°Vê*VìÑWìËVìÄRë*NëŽOî¸Oí€Rê”UæòVå€Wæ}UçUçëUé¯SîOñÜOò°Sð#QîèQì¼Qî©SñQSñSíÇSë“SìSíRë(RéÉSéJSíùVòlVÿôóUòšSí"NèÑRèþUê¿Vê_Té†TêRê“SèŸUéèUè¿TèqRè©SéƒQìEQïûPðèQï`RîOï^PðNñâKþô6HóHHîRï^UðRð…Qñ6SñòPîNî¢SïuUî÷VîÆXð.RóãQò2RñlSóCOôžOïPì¥QîOLð9Mð~LñÀOô,OþøPüùÞZüù'føú%zút‚ýÃŒÿÍš,Œ%} $?| 0†#â•9¡ >¤ŠŸÌ¢d©¥¦Ë”ʇ¾€Erž|-Š ŽÿB|‘g ^a ‚uü ¸výuú [mý qÿ¦]ÿ…_8jþZˆþþ]ŽþMiü­d÷ws ÿ]€ ?… ¸… ƒ œ‚—‡ aŠ q‰ ÷… ʃ ¸ƒ J€ | îz ½x -x ºt uz Ís k pa|aB^ÿô[ú‡w0‚ x~ÿ“zþ vû wyÿo‚åŠΉ]‰wh ƒdb‚Ú˜ý ò›ýåYmU‡9‹ïnÂ^XS \OžOÇT ¶` aÙeùn?€´au|nél¦¯¨•¨+ª;« ¬ü­œ¬…¬6¥æšæ‘Ï…Æwk ÞgE^Æd gvÿ ‹þ ¡—ý ç’ýšƒÿÔpDb Ãp ª¦ M™)ž '™ •"’ “ ¸“ K‘ ‡|”I—È• }’ { +Œ †  ƒ T ˜~ õ| r{k| X{ ö| !| ë~“…ˆ’ÿ ¡ þOªþ_¬ýð¬ÿ£¦ðÿ ´•ÿ¶‘þü‹ûú wýùUZôiRðíPïíMñTMò KôÉLô8LðïMïÆMð¤MðÞNð®Rï`WèìXåjWè„UèÆSçˆTè³UèdTç¥TçlTæçTçÌUénVëXVêVê>VêgVìPVíðWìAWì™ZíWëEWé VèvWêÖXí$Yî2Zð!WðUPìœM èFM èÒNéçQìáTéWè…WèRUçàVç;UéÌTíbPñ‰Oñ±Qï{QìQë¹Qî3RðRîmSë¯SëRì¦Rë¢QçWRçúRçõSé¾Uî>TóØTóJQî(NéèRê“Tì˜UíFVîSë~Té}SèdTè¿Té TêRë Qì!Rï RóšPóKOð×QñYNñ”MðÄLÿó Kÿõ‹Hò¦IïhNð‰Pñ¸Oñ«Oó€Rò`SðïRðRð£SòÁWò_Zò”UñÆOðdUð RñzRñQîEMìyMí°LìŽNïŠOñ>NóßOýøÕPüúWÿ÷G_üúYmúþèyü]…ü R—ÿ’– ö~Œ~ =¢ »’\Œ £w¦Šš‹Ÿ2£ÿ%•F‚2z Þp ‡xi‹ƒ’ÿº‹’p ²Xµ^/jüërù ymügjý[a¤fù5ÿù’þû¬nü$dùrÿi} Â… b„ ã„ `ƒ é‡ ˆ 5‡ φ Å„ ¼ K{ {wÏw  y [{ Iv u ¡z(q¡i z\¼R|Xÿùfþsfðg ^sÿ¦~þ n|þ¡týs½~å„`‡·Œ~Š]|@tñyÄ„ÿÞþµ‚¹uŒ]“ÿ0sŠY RŒRÕVÙR ²\äiIlMzYÏzr·váq»ªñ© Ш Ùª«W«Á¬?­z¯í®è§¬Ÿ—Šƒ{o Ïf ˜` —j{ˆ ÿ ‹þ x}ÿ ¡r ‰u¶ ý‹ m›ŨѦœ— — X–ã’ ¯z’¡•8‘*ŒUŒ ‰ Ï… ó í~ È| Î| È| | ½| Ì} Ö|{8‰ [žÿ¯þt¯ÿŸª’¤ c—‡’ýÿ¯‘úüÞƒúû]bþ÷îRòYPïêOñ¯Ló¢Kó½Lò¥Lñ×Mð{LïMð¹NðQð6VëðZè¯ZìVëŒSçåTè*TèUSèßTêvUéVçºVéLXì‚Wì¦Vì¸Wì–XîYîsYíˆYìYíóXíAXëåWëùXì;XívYï Zò’Vñ­PìM èÎM ç NêâPí¯Sì_WëÒWéñUæsVæ Uæ-UçfSìñQðOñfQï$Qí PïùQñ Qí?PìÑSî@SîœRê OæžQè QèÜPçèRé SîHSï÷RímPê QêíQêbTíUîõSêTé VèUTè4SéQì{RîPïöQïŸRòÊRóUPòNÿôôLþõûLÿó«Iÿó¸Gó£IóJñLñ¹JñyNòRPôQTôÚVócSòKSò9PôòXôÊXñ«Wí¦QìJRíˆQíGSî'RíîJëLì@Oê-LîØOòþNöØPþù0PýûÙVÿ÷W[ÿ÷ûfüû)uùqþ]šþ Õ¤‰ ´Š Ù ú,«ùSŠp”¯œq”"¸“ç‘ }Çÿ¼{ÿ ¤n Ñu‡ä’Í“Ï{Æ[Þb»gü³jú Œkýˆcü6TS^¹aÿhqÿø:tþùîeü`ùnnþÞ| $€  ‚ í„ %… ׇ † ’ˆ @† ¼„ { Ôuíu óz +}qxðy f{‘o Œf pW úN¢Y¤rÜm‘e Kh ¸zý þ€ü´zÿÄt]yò{¥„ÉxƈY„—€ù{©~£{1{)–àžþ©}o^]W \X ]íX É]•nysO‚‚m3búqSt”¯ɬ!,ª lªsªó«ð¬U­¯X¯Ü«å©&¦xœ*ˆÀz2pOl7lÓmªtl‡ Ö”ÿ ÿ R†ž~¨u By ·” S§‡¯õ¦rœ ˜6– U“ ¸  Š£Ž ËŠ ÍŠ Š Ì ¥ Õˆ Ó„ µ u}mz ‘y k| ¤} ó傎ƒCŒ Ÿš@® ±Ö­Ú¥ƒŸ ™þë‘þÓüü׉ùýžfþø”Rñ‘RïŽQò?Nò9Lð½Nñ"NñLðìKïÖLïWNðœPð’Uì[Zê>ZíÙZí-VêãUéJTè+RçTêuUêVèWé5WìàXîØXííYíUYîµ[î/ZîZí%[îYîtZí XìËXì¯Xí¿YðD[ó*XñPPë{L çÕOè0Nê™OíÁQíùUé VçUæ²VæóVåÕTäøUæ¿RíÖOÿóõPówPñZNïåPïHPíHPìªRîJSïcRëÉRé¡SëjQê9OèãQécRì@SìRëMPé¦Qé¶Rè÷Rê¹TëŠUéRèøUç}RéÂQéîOí,PïgPð†PðÅRòJRô NôŒKÿõn‚a Ö\ ;b :^ þ`„nyxðˆÿù‚…hÕYfpW²P¬Šªg¬¬ܬ ¬‘¬E¬©¬«Pª}¨Ê¥~˜†¶xðs|q–h ?c ‘s †ăÁƒ•v¦dÜbí€ Ñžþ “°Á®=¢D™ Ò– î” >‹ Uƒ l… Æ… ½‡ ¼Š â “ ÎŒ è || ‡s·oÂsøy ©| Ƀ÷‘þ Úš#¬ô´u°M§ þ’šý î’ÿבþûÑŒúûÏlÿ÷½TðnTðRô©QñOílNíäMï~Nð1Nñ=MóNónOò’TîaYìèZëšYëÔVëûSëRéQTçDTèùUè7Uè­Vê8Wì£YíòYìËZë…ZìíZîbYî`YífYî‹Yî–YíZíNZî}Zï»Yð`XñÊWñ˜RínLéLè…Né¦Pë;PëÀSçVWåVäVå}VåœUãUäRêŸQñ?Nô†PñIPíOëÚPêØQêQíÙRížSëRSêîUí1RìµQì·RîSïTîþUë½Uè&RçŸRæ¯RçÏSéêTé¢Té|Tè»RêÄRê?Pï@Pï5NðÅNñORòRó·PôžJÿõ´Nþø.OþøIþô¿JÿóåKñ§Kð¦LòsJó Lÿõ¥NþöòRó…SòtRñ›RðýRðRñˆTñûRðßQòSôÑRò¿QîþRíSîcPîNïMRñ'OóbMþöyOÿùVKùôW÷ _ýõ*hüüè{k— (¢ gªå¥Ñ…•“} %W† %)• SŠ &ä{ 'Fo¶jns Ósÿ4pÿ̃ÿ hˆâ|ý€wˆ•‚Cucÿ†výçaÏ`ý cûþPófJÿô4Jÿõ÷LÿöŸJÿõ[Hÿó•Lÿó&Lò–LòÎKóªMÿô¥OÿôÌNðòPîŠOï¼NïÿQðäRðÏRñŠQñ*Sò*Rÿô:QóÓQïRí{SírPî`Oð!Pò–PófNüø`QÿûVRýÿjZúMaûø€üE§O¨0©4ª¿©›¢­ )~&´"$…#ón'1g Äb ½dÿ ²^¸kÿÚ”ýù›þÚÒ€ W}ròw ^s ]ÅUþÿ³`ûûþfûÁh •f Ûh Š‚‚ÿÒmŸnþÿuü4{ üÄ A‚~Ž|Ÿ‚ ®†s„ Fƒ $‚ O} Az Öz ~} \ àu ñi rPþmKûZKúÿtOüÿÛTýlYþgþuþ –y½y]pßt±xyž„ÿ# þF—艡‡Ó‹†R~®xuÙrérBs ²wµv[u)nbkÔk(càZ ‹ZÄ^ Ar%p»bSPøUŒfø± ᨠۦ˩«u­«¯6®Ò­P«‹©Ó¨#¨!«-¬v¥­’s|éw1tAi^ °_ Åi !quoãh(j L|kŽÉ•#” 7 v‡ ~„ {ˆ”‚ [z 5} â… W‰ [‘¨¦Œ®j’çOsCeKi–}dŒO“ ¾ S¢ÿ '¡Z½¡ñ¨é®P¨œÿ%“ÿÉ‹þÓ‹ýþJˆüû\sýûöVó&QòANó·Mò^Nî MíÓMï[LñÐMòwMôLö°NøQQôuUê×YçjWæ•Vé>UìeRëéSè"Uæ%UåàVæBSéôUìáXìXëjXêNVëåUîÛXó XôßWðdWîŒUîÄWïæYðmXï]WïÏXòê_ü÷Xÿó›QïÅMíŠOëkPê˜PêzPè¡Uæ¨VåùXæ8Væ£Vç1UèeQë÷Oÿö;Mÿ÷QNðÃOíðNîLïãNðŽPðRïcTï”VðYXð9XñgUòRþ÷YQþ÷ TôXVí1UèPVçqUå%SåµTèýQê’Rí«Rì+Që‘Qî8Oñ«NóNñfMîeMí MîwNðçIòbIó³KôeLõ–JÿõZKþöñNÿõJMõLóLþô>Nÿó”Nð¹Oí Nì_MîSð}Vï RîßQðºRñøPðNð´Qï‚Sî„Rí¼Më]Nî³PòkPý÷}NúûÙQþüaRÿûó_þÿÜrøÿ¥—ûé¥ò±¿®jª7¡ ›ÿþ¢ X %†!rƒ%¡~ %7k%mi ÃcYÿ¬Xþwý…¤ýª¡þ…~½w uilqÖtîz sy ¨\ ãPþŸWüþ¬dù~rÿ s )h „sÉt™c€kSvÿByþ¾|Ó½~I|»€ °ƒ g€ˆ €{ Þ{ Þ} H} { lm ]~Jý®FûþHúýßQü$PýÌQýìYÿjÿ sppPlöp^oRnµ€ZšÿUj¥‚X…*„~#|©yAsuqËp wpGn§n…j kƒfd_ UîUS“] ˆc e ·V WSØf1« ¨ Ö¨©ï« €¬ý® ®!(¬ª®©רA§­©¬¥«ÏŸ‡Hsùl%g Ï` _3f •o Uy{~.v’s[x !wú€žŒ !‰ ø} þ| ¾‰ d‰ ‡z ªy x4† %Œ .– À™™‰ 5†  »rÆoÎ~/‰ ’ #ž ˜¤Ë¢ÿ½ Ÿÿ3Ÿܤ!ÿú’þ}†ü ç‰ú ‡ùIƒùÿòwüý©XóÈLïKJðéNñ”OðKNðÐMðæMðVLðËLð§Lñ_KòÇNñ8Tì>Xé·VèäTé›Uë£Të Té8TåÕU ã¶U åšSèTêæYì+ZíIXìVì@Rî%QõVÿ÷cUóúWð]WðIWðWñWðUð×UóãXÿõjVò]RðOð]MîñLêÆMé§N ç…Tæ“VåÉWäUåòTæÊSçúRêNòçOÿ÷ Oÿô3OðNðLð“NñaRñ©TðUñáVñjUï^UðIRñÉQõNÿöáRòTíEVéVçOTæªSærSèÆSë–Rï=PîæPìÚNîQOñ=LóÁMñâMíÃNëVNìtOîëJñœIóKôcLÿöqKþ÷½Kÿö†MôÒLó6KÿõrNý÷uNþõVOòàOîFOî'NÿñåRòÆTð«UîrSï RñÀQðBOï4Rï¯TðÀRîqL écPìAQòŒOüù•Nøü·OþøûTøŽtÿû‰ùv«ü¡´¾´®²†¡Ú– S‘ ²‡EŸÿ Õš¥† Ét (Ën $5k !òiàY GUý_wü ýÛžþ6}Lp ûkñl ðqކ E‡ÿ™` ÒMþ2QýÿÚWýhÿÎn [f _\Ha;`ÐkG|}z,z/}4|y}‹|È|¦r ìz ¯yS{ v ôx_v¬t ún _çMþSHüý(Jûý¢PûfNû³KýÆSþodÈd ò_ +d vn $o‘l¸|VŽZ 'ƒËŒäƒú"5~u­lxhµe mEmœkOc Öbù\`W ¨RRO iR ØU Ðg ³j ™bÀ`­©eª?© 0¨ŪQ««¬›® M¬!᪠˜©Ú©§Œ§(©1ª‰¡F‹ns•c¾e ×i gl KnþnÿÂw f~‘{ry½z›rq|øŽ_„_‡]” Ù ›{ ßv ø~ S… EŠ Š ç† Ù} ȃ Õ… |wil³u· ƈÏžS¬.§Ú¤±¤Ÿÿ曎ÿ ¢‚ü –€ù ‰ø …÷Y~øÿµuýùÎYïaIë¨I ìKïãNð+Nï´LîŸLî*MíLíuLï˜Lð¸NðzRïfVíÂVêêTègUé#SêxRèƒTåKT ãS ã_SçäUêWìZYí{YìvWëSîyOôÑQÿöÙRóUUÿó|UþôçVþõoUÿõÐUòÅTñRÿózTóGTó`QôÛPõÌMóÇLðFNí$Oé>QçÒWå“WãÛVäœTæ«TçkRéÓOî–OöÍLõ§LòÿLôÚNôJOñãPðÒRð´SñrRñöSðÀSïˆQï^PóàPô+QðÄUî\WëíUêàUêÐSéúSêzTìRïçPðæLîÈMï¼MòjLñFJîÿLìÃLê^Oë¡OíÊMòpKÿõyJÿõhLÿö¡Kÿ÷SLÿö#KôÄJôƒKþ÷PMýøÎMý÷ëMþõrLòõMÿôåOþöVQÿõÒTñSTïXSð:RòiNðÖOï±RïTïQîäOëTë×Tÿó÷Püú OøýÌPÿöA^úV„ Üü <¶þ¦·xµå®ø“7z p}Z{ u•ýê£ÿ â‘{ss ’n!ônl[ æRÿeü”ˆý õŽÿín>i ƒvðºn ‚iõŒþ—’þ¦kPLÿBOþ‡Pý¼WÿK_ÿaÿjT\Vàbþ)kñ}Œ}ÿ`{ÿyey {ê{+pEeÿ!lgq ×wárkoqqÈoÅcOþqIýýÊKýüÅNüÿþLüÿ%IüOüxaÿYc  \\Çi “o _pBxôÿ„þ õžÿsŸÿ3‹L¡ÊxŒibe»` Y ‰eÊnƒm|b 5\ OS ÿPÌOP jM þK ôO 'a t (n\ {©¢­$ª–©‡©üª_«K«Ô¬:« ©ö¨§S¦^¥»£û +•o}¡gpe Np )yÿ•zýjuÿwËzøv (ošmWmˆu¯… ŒŽ“þ› þd¨ E› su„x Ý ̆ Ì { FvJ Ê ‡ ’ ‡Ž ]…«”ü¬Ò¬€©Ä©à¥ÈþÐŒÿ {û¸ƒ÷ ¶Žö †÷¥{úüuýô>eí8OéGJ ì&IðVLñWLîvMíãLî¼MîLîNïnMï_NñjPòkTíXêBUèrUèuTéURèÏSæ7S äT ä\TèTêWVì2Yë>[ërYêŒVí´Rò‹OóPò×Sþ÷ÚTûûòVüûJSþ÷#UòRñžPò¨QòùSò|Qô¨Oô§Mó¾Lò:LïÄNìXQê²WèºWå~UçÈUènTééTêrRîšPõFLö8KóMôÜOõCOñµPðPðÃQðfQñËRðyRíæNíQðóRóêOï™RíÀUêîVêTTìÍQí¼TìSìSîQïMï—LòEMóoLò£LïLí LìÃNì^Oí–PòµLó‡Kõ‚Lõ KõIôÖJÿõØIþõQJý÷ÙLý÷oMý÷5Lþö×Mÿö NÿöOýøšQóUñxTïTð#Sò’PòMðÊNîRîRî]TíWXîÊUóEQýù¤Jùú’Yýü#r—˜.ª°šµ2±ˤ›Žþxn`ltz –’ý™ÿ ” v„%{sv r;\Oý¼XþNoý§tÿ¹bÎ_ rÿlùítýòŒýOšÿK|€VþôOý-RþÿßSÿÿB\ý8auUÿ]Rþ5aþÿÆgÿÊlÿ•rÿ¹vzz zÎyŸkÿl`ügjv wnq8e[h¨nvkýódÉQÿPHýý™Jþû-OþýßMÿüCJü|LûŠWü °\XÿlZýÃcþ›o qq¢z±”þ¥ÿ±ÿš¬}”8~§t+c5f¡c [ æ_ynt lê` ËW ÛOáO˜P O ]PFZ j_ l h ’V K¨¿°=°!¬Y¨ó©*©]©ôªJª¨x¦å¦2¤E¢ø œk•f X‚C† Ÿçª7¨^«¶­l¥ý –ü Ž‚ú ú„÷ #÷ˆ‰øhûø>|þñ«xî°aëÛOî2Hñ;IòOøEMþüuRþÿÍXÿøzú\“ü ï¦ç§/š&5Š )߈ &k $ÔŠ ppÜbÿôýöžþ Ÿÿ™‰Ik¸k Qs 1i “_ )] ‚j 7i ýwN‹_¡úè£þ‹¢ kž þ……ÿ×zÿt]œVÿ_ÿ¨q¢uí~ s ígBn¨xÿÿ{|ÿ±yÍp Hy-~Q|ÿtïivqé† ˜“El %_¶gý!jÿÓe„bþ»aÿÂd^YRTÿ”VþPûWLû+K^lÿ hÿ sÿw‰ÿx”Ä“u‹Öƒx†dƒž„»‡•}©oirp tw,zÈtorsho;f ŸZÖX þY ùj "s™póiÊZü­“à–/’dåS“™˜!¡ô© Xˆšy`‘5™£žÿö™þ@éghf ªk oog å]s]Šf 4j žm kbe £a ea }rÿ9‘î ß•Š 0ˆ X… ÏÌz ²z 5x ax ¯}»„'‡”…W^‰Q“ ƒ‹ Žz ÃxßvÁx8‡ ÿ §þÝ—ü˃û´€ùïŠúÿŒþ÷nÿó¿œýøx¢ýü]Žÿý]\ú}HöIòhLñàPñ,Oõ¢Oú·Oû¦NøïOóŽMñØMðîTî„XíÚWì¼Té—SçúTæªTçqSê™SëzTæjT â„T ãyUæ1WésWë–Yíô]ÿñž[ÿóüZñŽZð—YñDVóíRòÿPòhSðOTðlSí,TìþXðTñ»MíþMì»LíRNíEPîÈRíSêYA[ˆ€  ý®ÿj©¯žä|ã` ‡g ¥dÖhõdÙg Xk Wt íŒZ£ü °ük¦ ¼§àŽþþ‰‡s[ØSÿÿ£Yÿ#iâw Ø‹ ㇠Tt>hepþæy\~z y/{X|u–o­{™Œ ŠŸžyzªf^H`bóoÿsXsßj’-…S~L|}•‚‰”mš"‘ß}"fÔg^~µŒ”W”€‹g&_†d ÿl Žm ×f a^–gÿ¥s Ls Áq pm7jm if _dÖx¬†H‡è‹(’Ë‘ „Qx ]s ‡x “€ T~ýé…´ƒ¸4ŒQš “ û‚ “~Nc{¢| ÿ ›þ]‘þ.ƒý Lƒû­‹û}ŽýúÕ•ýör üùi¦ûý –ýýjú4HôFïjJîßMðhMõØNúìOúƒPö*PõtNõMò[TîZî [îWì¦Té¬Tç@Tæ SèRçÅS äƒT âÒT âMU äÀWçDWë,Yí|\ÿñlZÿó¹]òZî'YîYð4Uñ´RðÍRð9SñfSïDUîÅVòáSòÊOí~LìêNî9Lî¥OïlOï*NíÈPê¨Sæ‘VâµVâ7XéØRïÙMôHKõTLô4Lð]Lð¤KðËLíLê}LìªOð Mó¦KÿöŽGÿõöJôCJðöPòØWïØWéƒVæTç+UçgTçåTç¼VéƒWêFTê!QëˆNîÅPíæQê~QêNíÎNðŒMñùLð¶Ló LôòHðKñXLÿö"Lýù(IõÌMõPÿõµSóºOðÎRìöRìÚUî¡SîKSííSî¯PïøQíÖQëßUë0TïèOñLøÅOþçSüáaúûM•üŠœý sœÿB¥Ÿy$"| %Mz!šœ R u\~r ýý®©‡¥ø‰ÑkDmà_ fãiÚc ½k 6t Êz´’»¯þ=²ÿq þ ^Œÿz} c ©Tþ7PÿýtSñ\Zb Àƒ ;“ ‚ i¬hynþ(uô}o{ vôy sm…~«“þ þ™¤' ÛnÇ]\ë_ÚqÈw† F•« D³þ©¤›  Ÿ û” þ pŽ ø”‹·…S‹…{ Çw ¾{Ë‚þüþ@ýƒý NŒý‡ŽüR‡ýÌŠÿ W‘ÿ c“þz—þùýùÑ¢ýúœýýü~ýþS÷øIðîJñHMñfNòRPôsUïp] å˜j è!tôQUï[PínYìT]íYíPTëÏRéýTèKSçÎTçTèSéÃTè×WçNWèaWè÷XêVYí¯YñÍYóYYñ.Xñ,XððZï‘XïõSðQðJTï£SðBRòÿQòvOðŒMðñKðYKðÚLîVKì/LíòLî Oì²RèETçUYëqXîQïâKñyKðÏKí‰MìVLî¼Lí(Jê]LìüMðQGò»Eó~JõLJôMÿöPôMîæSë©WéŒVç6UæjSç Rè¨Uç¤Vå{U ãÚV äbVèÔUé‰TçàSè9Pë¹RìQé{Qå¶Næ®Qê¬Oé½OçÕPìLò¡Jÿò=IÿöÐMýûòQþøRñ¦SñêUñ5UñUðUîVíéSîQñ‘OðüNíÉMíËOðYOö%QÿüŠVûÂpûC¡ü '¦þ!¥ÿ_°æ¬s–`zîm—b4isµt#É|!މ>–›K¥9•ÿ5e vN £[ UX u\ârYmVgË€!Œ*žJ”ÿÞna^ RUŽP”Uüt¸høvþr ÕŒ Œxï•þ m™ Š“aŽï|vogUhý2s•þv§ÿ2¦ÿ8§Œ–ÿK€Á”z† [y}uxszpèno Pr sxý E——–×…ïg…d P^ åhÜ‚hŠiŠN†¤†È‹%œŠ†ï~³t´d œZ ½W /[ [ >XéY Ôb KsšqR` aUžPn[ lq áx4Lœ ù• ç“´›®rmaye 'fÏr ¨|ÿ ¹ÿ Ö†þ y…þ ¢|@‚x‰f€˜vÑnðb ¥_æh eq"z~„ß…¶yÇ„)“ ¯† µt Öx ‰~ƒ†{” -¦ À®ÿ ¨ b¤ À {œ ”£ —çŽ D˜Ú”¡#‘O º… >v »yš†þ6‡ýØ~üÏ~ý=‹þ Sý i‹ý Òþø–ÿû–ÿÆ”þúÞ—þ÷ ˜ö…–øJ€ûOVø2Kõ!KôëLòôNñ4PñÞYìæm éeäÚuîâtôÔVìUYë\ì$Xì>TìTê Ué—SèÄRçRçâTê UëzVêùWç¦Wæ¶Wé€XësXîšXñûYñXðE[ð,[ïZï-TðRð´Sï˜QîPðÂPðNñ€NñãMò·Mò‹KïEKîjMîLîÈNîNìRí¾Xî±YîeSïùMðzKðŒJíÆKíäKîþKíÞKìÅNì&Ní¾Iñ¼FóÏHþõºJÿõJþö5Kõ™Jï¤Qî=Uì©UçvTæìSè¸RçæRåþUäûV ãÝWåWéèUè‚Uå®Tç¨Qé§Që+Ré Sæ'Rç Qè}RèSQæQæ§QèôNè¥Kð‹LüûëOýû×SÿõDSþ÷ÃUþõzUÿówUôÈWòRUîÜSí/OïnOðdNîMîƒOò”RøŒUþý5ZýýbyýUÿßÿ›¡ý ¯ÿŸÿD‘þ }ý0y Ü€„w">u&øs $†y‡†Õ”9“ý¼Žÿ옌êc1Q ¤U±`^lÈ}ÿ€wÿ©i d ¼w9ŒU¤ÿ°”ýl‡üyvýbf Kg‹þ´…ÿ lvÿx„ a ­s º£ÿתþ†©ý/¨z”\yàd hü jŸˆ €¢ÿ .§M­ÿ7§Úžþ¬¨HšÄ…'t4r¦rk/n os ÿxþ|“¯¦ƒ© C– p„žjà^ }d '|!…®‹ÍŒù9‹sŽˆÕ…ð€¶rbA\ {^ Õh Õb j` ´U }R‰b ¶hehÆ\ ñQWïc 9g ò£øÊ›!£C¤ P£ɨùœ}IjÉo Îoÿ qÿ hzÿ 5…ÿT•ý,—ý؈ÿ ‚ £„n€z/rwf ÐaXh zr Æ} y†ÞІ‚ítô„ yšŽ y5w|pƒ‰ŒÜ™ÿž–œ  ϡ࣠ᡠË$… ‘6µÿü•þ˜–ý«“ý õ‰ÿ̃ÿsŠÿ^‰ÿzþXuÿF‚ÿ éþ Œþ †“ÿ›ÿñšþ ¼–þý™—þö®•ÿõ öó}øXóJKó–JôMó¸PñlRðW\íþiç±RÜë] å4wôñYìXíœZí VìÜSë‡Së*UêïTé€Tå&S ãWRæÊTéLUèæVåÆVäÔWæ=VèñWêáWîÚYïZïlYï¹XíŸVïéSð>Rñ°SðÒRïWRï1Pï“OðNðMñ«Mñ;Lð“LðHMïŒNïpPïOî%Rï>XîXíVî¯Oï|Lï Kï;LïÜLîMìÅLíYMí;LíÉJðŸJþõ3Ký÷6Jþ÷¡IÿöHô{Jó,Lô›Qð“TèÅTæUé‹TéþRæ„Vå5WäWåìWèWUéYUæuSæ[Qè±RêQêßRèQèœRéhSèâRæHSädSä±Rä;RêSNþ÷Pýú·Uÿö Uþ÷ñUþõèUþõˆTþöÔUÿôøUð'RïžNï½OïÿNïŠLð€Oÿö(PþøÇWýÿ"aþú‚ýí~‚ “þ1›ÿð…þJ~ýšˆýË•üB‡ü!×y% q!zzì…>’†™ýô‰¡€z~ïm -YW¤rb‡ÿÁ‹ÿî|ynC[J^ r¾ ÿ.¬žý0ˆÿ} { ì’ÿ†’ Ãvw‡q a „~ JœͰ÷2µò¹ÿ¯ƒŠcdlhüKlßz ©‘ ¤¡R¯9³9°ÿ-°ÿ§¨û ƒxEoþ§o–l…m dr üvP†ÿ¯© c­  ¡Œ¡ÿÍ…ÿ„m©j õt €€ˆ¶‘ °’ŸŒß¯ŠÕ‡S€~l’^†_ >f olVn2o] iMLR a[2iŠ` T^ßi­n:­ò<œj¢ © 5¬ë´;¬ c‘ y\z¸uÿ Un q ~”þ¢¦ý þ-ˆ E}V€Š€…t¶h /i :q v ブ ‘h‹Ÿz’x í ¥}‰uZuT}Šÿ‡çŽÿå’ +# §— ›G’ :ƒº| x„š…aŽ©™þ)šü“™û6–þ ŒF„ ‚ÿ)€ý˜ý(‰þ öÿ … §Œ‰žùžÿ ˜šþÿv™þ÷­’þõ$’þø8Š÷.dðLïçJó^Nò_Pð¶RðpVí+^ é^^ èÀ` ì~YíYTë¯VìWìÌUìØTëKUë VëÝUé¾TæVTåSæÆTèëVçVå:U äŠUæãUèaSéWìXì/YíkXíþVî"QïþSò*SÿóÑWÿópWò2SðzRïWPñÉLï—KïILðåMð{Kï¡LïfKðMî?OîóQíuVíˆZîÝYïßTïîKíMKîüLïïLîeLíˆKì¤Mî Mð¡Kò×Ný÷0Mýø"Jþö{Gô HôJIÿôóHõŠMõlQëžSçUé¥VêTæìWåWå¾WåÚVçßVèTæ?SçàQèÝRëkQë“QéQPèÜRèôRçõRæXSäSãWRã†TæuQïjTôdTóÚUòûTñÊTýó:Sýõ÷Tò†Sñ¤QñNMðíOð-NñNòOÿöOüø~Süÿ oü‹ý„þãuþvzÿ g ·xÖx¾kþ©Šü j£þ ,œ ª†s¾q‹{îÔ‘þE‘ºyauBzéppiâ‘ÿ¤žþâ”sz°k å_]¸_ ñ{É™š€ƒ@‰Ç‘ ™’ ‹ (v DpélSOdêŠZª÷3¹÷Žº¼‰•'iKgýˆr"w{| Hˆ¦¢æ­*´ÿM¯þ^¬o”JySh üuj!k „n ¹o qäuÿ·˜ Úª±üv¨ü ›þ (‚ü{ Œ| W|&…ß’ š‘ ·ŽÚ™6—gŽ¢sâe:g }hhk»oElÌb =R§N ÎT ”_ >^F[oh ìo´uÞŸü˜-¤ x««ë®ä¯“£o“-ˆb{½k¯e t ³‡ÿ«—þ,šþ3‚So zM‡  nÜo®z —Ž• Õ’ ‹Œ ý„ i}Zt®om•o7xÄ“ˆ Í’ h“ &Š Åü‘… G€ z-{I„ ª„ YŠÅ‘ÿ€þßþRþ (Œÿ ›ƒ Sz|ƒþX”ý—þ SŽ € „ꚇŸÝœÿÙþø·•þ÷!”þùyøÜmó¶Oñ²HóLôzPîQìñQì#SðDTòäSð‰NëVPèÛUèWVë|Uì TêxSé\VëóVêMVéVéCVèNVç:Væ#Vå\U åIUç¸Vé»Uê XëZìj[ì Yî¸VðPòWQóTþô­ ²±t­€®r®Ê«k£•ÿ÷€€e´eowu Å{tjÆw"ŠŒjƒ¹ƒr‹“ Ç–– L ¾ŠCŠ ´}RrŠl Îi En |ùŠ Ø– m—  Ž~uv²t²v†‚L† g†ÿ ‹þ Ù†ÿ›yøwgƒ‡—ÿ ý˜ ܇Šþ*¡þޤ ˜ £ ’Š™:žÂÿØ ÿû‹›ÿù’˜ÿùr–þû3ýû'Zó’LöÖMö^MïìOê¸Pë"OîKÿõWJÿõKõAJÿô½IÿóIôÑFópGõJþöÀOñESìÒTé¤Wæ†Vå~VèJUå$V âU âÊU ãSæ Sç=QçQçLQèµQèÔQçRçVRæyQ ãSäyTåBSåCSæ?SæôT äTåSçTêMSî¸Sÿñ¶QñÈMí LêçNíÇNñaOòAOþóøVôç[üÿªwùˆú’™þ”g‹ý¹zÿ[ìYí(XîèWðRðÂPîïRÿñ³Wþôµ[þöÝVÿõ(SñgRïx«™ ½¡ߢý f¥ýv¨«°¯¼« …ÄJGJ^jj Xë^ÿIˆ òœÿd«ȰTœÿuN¶FýAGüF[¾p)€¦„ ™ 1’”®Å­Ñžÿ {Þdþo…vøvHo¬r8‡ -œÿ‰ª5¥ɇ Þf ×]‚^v_Rc)p Ôq:b øc ›wŽÒ¥áŸÿcou”£ÿðšÿŽŒx‡þ•)˜‹€xýs c çe‹y‡{VkŒb :[ qQáGœLÒZÍ_ Àk ?oôk (·a·Z´åµ1¹”»ß·4³=´µܵÕ±Zªœÿ@‡ÿ%y PõWó cýûœtüŒýšÿþ$‘üøÊ™þ…oSD3@ý…Skhý‹„—˜ ­ €û ` ¥R‹PÙyÞv«¦§ÿ¢ÿƒ§l­ݧŒ¢þh€ _MËHBX†d ë`iöˆÿ ~”#šu¤ ŒEyÎb mQûjúþqßr¤~‚ Ol | #“¤˜™¢ÿ±” p–p ¢q£tVq–rù} ÒŠ (£]–_þF{þgùX TÑh m šf µb e,€.¥ ˜¸¦p7‘ÿ,¨ʪ>Á‹ù‡ ݇‚ªƒ‘¬u ,f t_ ûqôoB` à] ZzR¦N "Y è_ 4e ¨j Ìi ½¼•¶²‘·ï½ž»š·p´´ܹN½ƒ½C´¾žÅ…ožc ¼f qnøwÿ÷‰TœQ¨ üª D¨§ ¶¦ ̦t ç”´Žª‘’—Sšÿ áŸÿ¡þ pžþ Q—ÿΖµ”|Ž •‡ Ö‹ aÀŒ8Žy–F‘ ª†2Žöÿª¡þ ¦þ ç¥þ5 þ m˜þòš ì© é¯ }¯ÿ d±ýè±þ]¯±«X«ͺÕÃþïµþ Ìžÿ•øª’÷ß{øøYô"OøUKõ1Mð%OîÂQí³QìNQì«SëdVê§Zëœ\ì—WêKUç.TæüUèÁUéµVéWéSXéãVçÜTåKWæúXèéVè“VçÉVç¡Xè ZêpZêZê Zì”Ví&QîSPðåTÿó¶UÿôRÿô\PÿôQó†Qñ9NîRKîêMñøNòLñÇMðLîÉMëvOêZRé UçQUåëTæ[Ré]NíEJô÷LöMKô?LódKô‡Iõ GóÌGñmJí-MëyOëºQì¡Pï*Kó'Hô5IÿöHþõ¶KÿõMöJó LñOò!NòqMîÍKîãLðîKñ=PîºPê}QêPìæQê¢Sæ÷TæQåÒSæ¨Tæ‰SæOTè(SèjUçÓUæ1VåµWåƒTåýQèMëXNìMì@Lë[Ní°Lï¢MóROþöWõpaþùevü}‹û 0œüP™üüu¤þÍ„cQâDÿ-Xÿybü ”jg}ÍŽýX¡ý@‹ÿÍi d Keÿ Éx ›ÿg°ÿ1ª‡¤ù¦E¥µ¨6™- ±\üI™Uÿrmgpðx–ÿ ÉŠò“ —‰0L{ý¹{ü˜ü½Œÿ ŠpxD~ý ¼m \h ªc Ëv` %£ÿè‹ÿ`… ¯v øqt‚uyw|N q›þ½œÿ¦© û£ÿ  ÎU¥N³_ Àf Ëf :b ¥_ÑcƒŒzðm»u×™ÿ®‹±ɰö“ t€ {j„TÿÞ“ÿŠú|‘kzmÞ~”q÷a u] _ód @XÞ\¶_òb ˜f f m¬ ¹»¹­£¯þ·>»ϸF´”´A¹R½™ÀáÁ*¶O™Ë|f $_ Eg ÇmÀ€ÿ ›—â ͤ ¡¦=ª˜­¼¬ý¥ä*˜èžd¡î£ð¦¤ÿ m ÿ ÿ ì› ñ˜ ±“ ?Ë‹÷€y Í€›ˆŠÊ•bŸ ³§ ±­ ˳þ ö¯ÿÁ£þ±¢ÿP£Ú™ ³—Y¥ÿ ã¯*¥»¢8¢•°ͺ¹þÿ£ÿüÍ–÷ÿ”øü‚÷Ž^ñæLö¥Lö!OóQñŒRïROëPéVê/Yéß[ëþ[ìªWéVèZVçUèUé¤Vé WèXè˜VæƒUåVæzWèrUéVèHTçºUèZWéÚYéXêÜXìðUí„SïHPïÅSðËVò‘Rõ±Pþ÷'QÿöGQóÙOï|LðbLóNóDNòLñéMïÃMîˆOë Pè³SåXå Uå1SéNîúKõuMøRLõKðDIñÆHô#Fô…HôÄKî/Nè­Qè÷PêsOíGNò Jô¶Jÿõ5IÿôtIôÑJõFÿôôGÿõIþö3Gÿô4Gñ_Hñ³Kó_KõTOÿõüNñ;Lð¤Kð LìßQëðRêùRéÁTé9TæATæýUè`SåËT äT ãMU ã¸Wä2TçRéÖMëûLëÉLê[MéMë³Mî§LòÂOüöÆVýöô]ÿ÷Ì{ü‘ú N¡ý›ˆŸõ“€U =SËsþ /bü?YÙ] Òhü u‡þ ‰ òuþ þqþë{þ%yü:_¦ÿ¢®ÿ4¬¹§˜ÿA¢µŒT…hs‰R ŽSÿ jzÿLJåˆCþjŽÿʃ‰ H» UŠþ v‘ýå§ÿ¢ÿ ³k -rvþ jq ˜eŽQ÷Z  Ô§ÿ[© ýŽ ü'&xQtxIxöy5 v‹þöž §€³ °¡þ i @OhY=b /d Z ßZ ·R ÁU “X ZpÈ› /ª4³­p›™s ú‰I þQ©›¥r’ÿvt©bûs*p f Yb e GpÀnjh©dae b ^ )‘fŸ ¥©¦¨׬8±€±ü°î²„¹^¾ËÀ<Áºú¥ ‰ j ÷Z I] Éh wý>‹ÿ»™ «ž ] A¡ ï§ ý¬e¯+¬B§  ÿmšÕ˜ÆŸÂ¥ô¡õž ¡ o¡ ?š ‚Š~ñq #¿r Òy »~ Ì„%‘Œ"'“Cœî¹þ´þ¬ÿ¤Ž˜ C‘ ɘé¦ ™—“¶šï¬L°‰µý?³þù¢ÿô—™ÿ÷[ÿ÷]rÿ÷ºPõ¬JõÀOóQòðRïOìŒOêÀUéŠYçºZèFXéUèdUèËTè’VéŽVêŠUè¼VçnVç­VæuUåsTæüVéSUêÝVêxUè¯Uè:VècXé Yë"WëUìçTï;Qð¨SïÞWòÛUõOÿõnOÿô=PòžPð5MñíMôqMôMó MîLì¥MíNë+Pé6Rè‘WçïUè®Uë5NîìJó|M÷ZLõ,Kï Jð’IôHÿö´IþõžLïðQç¾RçBPéwPîMò‘Iÿô0IÿõÚKõIôšIÿõþGõÉFô“GþõFþõêFòGñùKóÁLôÔNÿö¡LÿöƒHôGódKñXMîOïQïRìSæ¿Vè:UéŒTåŒT ä@T ã‡U áU á©U ä$Qé¶NíøMë»Ké”Lè%MìÙNñOõPýô‹Vþõw^ÿ÷wýÇ”ú ¼¤ý =Œ ~ ¡(ORgÿ -ý Œvü òV TöT³` ¶v  v¾oÿ š|þ|yüã—ÿ ÷¨Œ±G¡‹”‡ {XþˆÚ` {Sÿ0yÿ ˆŽ ™‹ÿj€ÿisVuc‘ y… }„“Þ’9a_Rn ¦j °i ¨d €R tõ–þý³ä ÿ°©xƒþÈo †u …x\t`s Z}ÿÑ–ÿƒ“ ÷õ¹ ª±ýЃþàTÿGS&]çb¬S´QP5M ñRVsfiˆš“+š;›ÿ W| An ~ˆ ¥ÿ:®§‡“ÿårPXÊ_•g h nf iwsÐ{täkâfŸb X dƒ ™ûî¢ýŸÙ¤˜¨ô¨2¨©¦ Ȭ ·¯½6ÀÕÁ¤¾@® š™Ù€ ™f ïb¥f *mÿs•€ù’ ˜œ ¢ÿ 8§ ® 2´ °a®ÿ9¬¡²“•6š¬‘/Œ 2“õ• ø !…û-s _nYn^r $ð}.š„+Dw %÷ƒ 2œm³²ÿ‹¤d T— ÆŒ ‡ƒ”ÜŒ$ÿ„%.Œ$»œw›«£ÿ$ªþõã¥ÿó ÿö©žýøˆýúWöÔHóNðQïRíçQë•SêµUæ‡W äbWæØVç·VçœWèrUèeVéUê±UèƒUçSVèWè¹TäUåUéWVê&VêPVé2TçäUçqVéXëVëÔUëNTï¼Rò0TñOWóŒTóNó(Pò¦Qò=Pñ¬Nð–Mñ2MòNñMî0I ê+L ê^K éíNë¹RìSêÉUëRSí3NïˆJñ±Mö3KöPKñWKðÆIôñIÿöPIýõºLî¯QéÀQçPéëQëžNïjJÿó–JþöxJÿõdIôjIôHôŒEó`Eþô)Gýõ­IóTJñìLóÞOõÈOÿõeMþ÷²Jÿö'Hõ‚Kô]Kò LôÓMöêLð×OëSí TíRï©Vñ°TñIQñóRð/Qñ¥PðÞOïuLïéLðZMòNðqLìNé¾L çÂN êÃQíSë,Të†RíñNì×LîMòLõLôžKófIó‚IõÑJþö Lÿñ¨QîRëQê;QêpNí…Kþô1IþõeKÿõsJôºGòKõHÿó^HþôfHþôÞJÿôƒMÿô+PÿöiPÿö`OÿöEMÿöÜIôÌJô$KõñLósLôÎJõžGóéJñïOò>Qñ²QìRëÊSêíRé¢Ré Qé³Nì´NîïLî¼KìéMíáMð®NõHRòžYñÝbûöe]ÿúÅUþvq„Ž AneP.CÔM|kù•ûå¥ýŠ‚R ³KyM·UooÉxÂj Dnpÿ=tp‡ Ošþ¥ÿà 2nÑ_Ì` Šu Oi¨P\O¢PLX„U(O CLQN1P ÛtÿÌÿ ‡ná`õX‘GûhGûÉKý]Pþ U™jŽ^îR•]ƒs òœþ¿²ü Äšü ”oTY XéYµg "e¢l²ƒ [¤ÿ‘§p_L\.g|zNnOD]cìd­dgk¦i Qr #¾‡ôovd«k~ÿ ‡ç”þð–%ƒ Ìp0` S 7Y #Q 5\ ng‘qïyþ*tÿ}dc e4‘=Œqƒÿix#…º– Û–Š7Œÿø’šŸ ´Š¿,¿(¼¸Ô®¦¡þ ,’ý ?{ý|nþ¯kÿ k |—ÿ¢«á±e®«†§ ¦ˆ¯Vµ^³6¬z§%£ŸÆ™ä‘›‰(Œ ¡ Ê®þ«ç˜´…û|š€NR€ç…%OŽ& :®¢±ÇšV‰vŒ Ø’;ˆ ¡q f Òm Bp %™s %v ‚~“HœþüŸý÷ÿªüöþ™ÿúdjøÍLö1Lð|SësWè¯Xç¼VæîVåTVæøWètXéWçcVæÈVäVäVæ Vç)VçaVè\VèÍVæ/VæEWè€UçÄUæÖVæ[UåuVæVçÌYé2XëÛTêµSé‡Té7TêXìqVíÍUïRîRðMRð"PïOð`NòRLõNókMíÛNèçL æÂN è½Pë-Rë†Tì\SíàNëµJë¯KïÌKñ}Kó¤Kô¯Jó¯JõAJÿøBLþöäQñSì'Rë¥Sì‘Nî´Lÿó6Ió…JòãKó*Hò+JÿôaKýô.Iüó¯MþôKþõ™Mþô¾OÿõÒOÿôxNÿõæMôWJòËLó¤Nó¥Nñ“Nò!KôHó6JÿõîOÿöŸPóPîgOìcOëENêîOë^Nì×MíMïÊMðßMî_NïÈNñéOójTñF[ï^cüô;dþú%eÿ7nxã_ÿÎYý:Kþ…Vþkgýˆƒü üø‹ÿ:\ ïPO«S‘j N~ÿnnÿ ÖcÈfK^ êk …~&•ý†qLZ …T~i xÿFsý ñmÿ NGèH¢HßPÅPLZÿ zyýßm\ qPGûõD ÷Hø]Iû¦TÿÄ`rdëU2Z¶a 9}ÿ 5šþ°ÿ‰líW ŽWXÖd ”i Kk Moc‚9rñ\ c íjæj•m®lêNœLQ^ f³døgçqYpr{úyúb Èf €iÁrÿ¶„þ =šýT–ÿ‹‚ëy?iÉ_^W .K œRºc Øfëg¢k¸[ ’\ Sf q¨\šAŽ¿ˆ;Œü‘a[ŒÏŠ®…ÿ»:¤¼¶Q¸­µ€³ÿÙ²ÿ¨¯ B¢þ Ãý ætþ _i j îu‡‰œÿ ©ïªΩÁ§¦*¨Ì®š´“°ѦÌ£‰ª“¬Óªb£ež õ¬Úºÿ³¹k¡ˆø„à”™ 1’÷’¨œÿ¥ª¯»Á¾ð§) Ž °“ N“ ;y„h .g ¥h !k $Ìp &ÿx#Oƒê“þÖŸüüj©üö/šÿùšo÷$MöÒLñâSëŸVéŠXéhVç³Uå*Væ2VèpWè2WçSUæÈT ã[V ãJVå'UçÛVèqVé7UéõVçVæ?VæKUåóVägUä§TäžUåäUæùWæWèsUéšTè»UçžTçÍXè·Xê¶Vì{Sî½Rò QñÆQïSïOóƒKõŸLóDKíÓLêMéâNê˜Pê~Rê¤SìæUî$PíSLî/Kñ`Kð¤Kñ"Ló(KóUKõJ÷]Mþ÷wOñÍQêìRè5Rê¼Oì#Lî’Jî1IîSIðSIñnHÿòÇMýôXLüóÆPýõOýöOýõºPÿò#PðvOÿó=Nÿô¶Nÿõ¸Nõ OòUêO¡FöAGöÜJ ý,YÿcÜkÿôj µi e[˜` ¨xZwÓi ý^ *ZŒ\]øaÌn#mKiø_ •U Bk ‚{Sr-f RR_Kw\yg{eciIqÖt v!wýs¼] _ vchyþ *‰ÿs‚«v rn\j&SOºUåe ‰b x\Î[[P ZRÑfJ¼þ#°ÿ5Ÿÿ"—\—B™ÿ¡œCœÇšÿ’þr…ÿ%„^’Á¢8¥°¥'§ Æ®a³|­ ךþ }þ “tÿ yy!z||釠™‚¥ª<«¬ª.£,Ÿˆ î™M”:‘Ó›Ö¤\®|«¸©¡°¼¸µɦ†’±Žÿ úžþ ªý ò©ÿ d©¯ÿòÿ#ºÿ1¼ «›LŸé¯)µ>œ¦‡§ulxVl *j #&k (—s!2ƒ ·˜ýh¦üúKýûïvú~QõRMïNQì¬VêXë`Wè TåùUåÏVçQUæïUç±VçüUä¿W ãVå4UçåUé¤UëjUê UçÂUå»Vä=Vã-T ãóU ädT äXUä¡VåVVçÜVèGUéíUè!SærTæÀXçZê¡XìóVîŸSñ RðÛRìgTíÙSñæMô£Kò2Lî½Lí¨Nì-NíQìiQéKRëgTïVPï“LðÞLò£LñÃKñ¸MðŽKñäJówJöŠNÿö¦RÿòwSêIQå­QæíOçlOèyMêlLì’KîªKñ JþóµNþôŠPüõýPýõPýö`RýõôQþó¬PñNÿñ5Qÿõ“Oþ÷lNô–MðÔNðMòôMòîMö²Mÿø OÿørRõ,Uô:Uñ,Oï5LîvMî[LíµMíúNîÏMð×NðÝPñKNòAKñæTôÆXò§cýöótöC‡ýK”q¥SèQÿVŽm Dqqÿ=xþ-tx`ARÆU`eÿ6hÿÿþ”þ †ÿ\]NmK ßW’e` ÿg ¼qÛj _ Å|ÿ™ü J¢û)Ÿü‹{þ ÂSàMe ørâd -Y (_.h Õl¤n`fêRûwLöÜL bøv›„ãŠÿ T Í] ËZ Ca]gÄi Ck ÿÏbOa]>b§lBs€otg …Z ‘q 9Šÿžþü–ÿÖŒÅm“cb ljskÃnÐs(ySynp¢^ {\ ¨\Ø^(d DozmèrŠjèg _h ¤Y Öj\zý ë‚þgnþÁ] šQVH `O¾fU¹ÿö¸@¤Ý“d“ÿ¥™þÙžÿ¢7¢œþ®’þ½Œÿv˜–ôšžò¤5ªެy¥ À• I} ž~܆ ƒ‚?ˆ”¯ Ϭ+¯,¨‡™m™†"Û}$éyõ{΄‘õ¢›§Φ¶¥È«ªã Ô”  Qœÿ ¬þ ­·ý5·ýO®þ)ŸŒÄ¥ ¦ ʦq³ÃåÆ[¶—¢ B”ô†p !àh(l $yQ’ýz¤üü® ýýzýhPö‚Kï˜Pì&UëûXêVéUæ½Væ|Væ6VæVæZVçqUæºUå Uå¦Uç¼Tè*SçÎTçTTåŒSãòUäêVåUåÝVæ%UåUäŽUæ±Wè–WéVéUèKUæeTåÑWç°Zë`YíÝVîóTïhSíúTë;VëÜVï[Oñ­KñKðeLí‡KìÈMíîPí>Pë RêÖTï.Oî}LîcLð®KòIKòXLñëLòKógMõgMôòPñfSê~QåÜRä^QäSåãQæmPèOëLðòLÿôSNþõ;OýöìPýõºSþôVþõÓTþõÂSÿòQÿñ¦Qÿô¬NÿöãMó Lï[LñöNô"NóüMõÿJÿ÷¹N÷$NóÅWò8XòOòLñøMî’NîùOð©Nð½Nï™MîïOò'Nÿö*NöSüùÒXòÿkýùöþ{ õ鑾m‘UÅ]Š]Ñk CnÛqÿy{þ wÿ5e `Y\_›u¼s±zÿH’þ —þ Úuü óUÌL`O šX ž\ Se \uÿ ív f ag ‡•ý!±ü2¸ûoœýkù\ b r\j] ~Zí]q€ z mþa\ûR ‡qœœ‰þ œ ½ýðk ]]j^çdml´wctïg Cb ƒkoµssäp“h·vþ•þê¯ÿ š°Ø«Z•J %~Îx«kzdIm~q·z?xÂlñb Ìa ÔY ªY )[ veŒgiqäl of ´j ^pT‘L‰ÿU’ÿÝr X±M&FåQÅk Ÿ¢‘§Ùœ‡ˆÿê‘!–l›Mžÿp›ÿ­—ÿ ˜þõ›ÿ*œ7¡Û¥¦Û¤@— Spº}/ƒ˜{¢}5ˆ6$š$¨Ư÷¨­™{ŠY+ž|"rÂ{‡¶”œ £¡¢Ì£ûš‚ƒ NŒ : @®ÿ®¯ý yœÿ Žn‰ ¬‹ ÿ ­ ;»"Ã:Á+Äÿ Ãþ ¿ªøŸ´š Mm %wr%rv B‰‚ŸþüB þü)|û4Sö]Lð6Pí­UëòWêêXéVWèVç²WæU äÍVå9VåVVæäUæäUæøUæuTæATä&TåTåiUä©ýþ‹þ»l_ Ée /c å\ ÀYM]äm €€ŸŠÿy‡ p(bꆟ^’¦ ûŽÿÖx ´k ezhÿnÓsÞw Êj %iMp ysIm?m0p†x”þ {£¨³Q³ÿ¸«ï¢ÿƒ›þǯrãb«m·r•uøsImfYiN[ ¸TLU_ >g$l ¬k ®m¬n{†’ [ƒ Šh kM¾HÉF¸Pêd ã“xV–Mƒ¼yfyð‰~²– f™î›ÿ¨ÿ©¡„¢¶¤Ŧ¤¿ž[ŽŒz“r§|E|ÊmƒhãvÔ‡N—e¥Ç®¬ž¡°•™CŠÃà~ïY„]‰1”äç .¢ú¥s ,‘­„ σ›=˜Á›ÿ s ({ t l€ Uš ® ¸Kºÿ¹È *Øþ 8ÁC¥ ßBx€[„„ŒþÜþú>ÿûR|ûTö½NòQïVë;Wè‰WçäVçòVç³WæV ãV ãVä¹WåwWæUå”UåjTåÜTåóUæ´Vç¾WèiUç&Uç½UçbUæßUæãVå2VäVæÛWèVë˜Vë]UéVæ—XåUXæVç"VèSUèÉTç@TæVèWëàQíÍMïŸJïÖJïJñJò\IïSMë¯OíÈPïêNí~KìJïðLóKôtKó€Mñ>MðåMð:Kð:MïQîÓRèQå•QåóRåSå”SälRæJNîHNþ÷"OþøOÿôYQðaTîVïíWñYVïEUð†UôtPÿö,Jô›JóŒOþö¬PþøÄOÿ÷ÌMÿö»Lÿö"Jÿö†PóUì.TêGMíÃJí¥LíwNð,QòçOð/Nï¿NñsOòÍOöMQüýQVüü:^ÿó·j÷äkú|düVg0_ T_ Ekfl kðsþrÿèhÓeÿëmý þw)}Ñyw­~ÿ|qÿ¾Sÿ‘O´RF[ {\Ë` +tl ¡ F… Gv"‚Ë”þåŸüžžü‡ý nù^ ž] Ç] ¥V%\‡g ï E— ! Sogpå˜þß«xžΜÿ®ƒa} r Çkyh4kyio Qk Lk»oK{msobhd ®r%ua‚M¢צ ]¨¾¢ÿ‹¤þC›ÿ ÙiönÌqðp´o¿mg>h÷] >O¯OVå Uå”Uç³UèVë WêƒVèÌUçÔVçKUæ}UæÑWåaVä;VågVéHUììVíËVë‚WçYå¼Xå¬VæºUæÜVæ™Uå”UæUéªVëÕQíƒMðKKñÞHò[Cñ,@ðgBïFíKîOðûKí»Kí¸JïºLô LõpKòaMñYOðKðÑJñþKòÊOîdRé÷Rç_Rç|RæŽTçèSå¡SåDPìzPÿõ)PþùˆPþöTRïSí_UïyVïUî|UîsSòRPókJôaJÿóNÿô•OÿõPÿöóMówLòuMÿõ–QòéRì‘Rë`MîÔJî7LíNîsOï[NíwKîNðPïÇQôeRýýãYýûv]ÿö4`ô\]ô=Yù™Z‚aO_f[‡bqr {yþüwþÕj­c Ÿeÿ Roÿ F|-„Y{pr=kÂdÿ £RþzV7aç_`ìbJqI‹û¡ Ë› Üli³nH€þq™û> û ¥üÅmÿ«Z !XGQwU X Ã|$…µ| ÖhØký™û¨ùQCˆñn£s ao _j åh gf Êdügl p ts;qÜn´^ ^ ¢k ¶r©s‡v„± žŒ¾ŒÊŽþ …æzöjCmúk ÅkfégòaÛd Ì^SKMÒS‡[ Yi`oÙmîbÓs /n„ ŽoX ¡AþAMJ qNŠV e”<•S”×”µ•M’$Œňôzöy®zE€:Ž•ž¯¨ ª6§´¥í¥{ æ›i˜Š™̘1ƈŒ«•¡žߢñ¢Ê¡§¡Z£o§¾­?®|¥ ½¢ ·Ÿ ™ÿ¤šÿ9¡T¤¥’¢wŸ…£ã¡L”ƒ |º‚#‰þªþ ¶–Š™™™¤¢ˆ¦«e´§¸Ä·§´ ‹­ÿ z¦ÿ|žù­›ö œýù°ýü‚ýTùÙLõéPï‹Vé®VçÕWæFWæfXé'Xì$Vê]Vè2VçÌXè¡WçUå…UåXUå›TçÙUêÄWì¾WêúWç4Uæ Tç½UègUè§VçŽVæ VæVçsUèÒVé(XéžWç Zçü^èZé£WèVçÒUæœUèòUêËUëíRíÖMñ¬Kò&Dñ?ðˆ=îN?îFCï¯IðNï%Mî LïKKðIóæJôÊKñŒü¤h XU{NwRiNí]k\¢T'Q»]jüó–ú | o öb Jb Çe Þi cn Ìl&iJgÍn ˜ví~ †r¨j õb OZP_ ™npÑc õ` =Y °e d ÖfGe j -jje 8` ù^Ê^ß\ z` Ö^‹N¾NWV3f ¯y óe€T³] êa?^ ñPþLVA8@ŒK‹N;PϪޥߛ„š€ gŸ˜ü–4ׇô€}y}0‹ žƒ­ÿ±]¯ù±)±E«O¦§?§¥Å è›N˜!ˆ¡˜¢C¢¾¤jª²w¶^µÓ®(© £¨ ܪÿ °®þ ©°ÿ#©ö¨Š¥Š¥’©K¨Ö¢~–[† ì…Œþ ]”þ§š‚šN’&©!ˆŠŽŒ˜/žP­Yºç»¶/°ÿw©ûø¡õîšÿ÷c˜ýùÈüüòÿþ(]õ­NòÉPë¨Uæ¼XçWçYè˜]ê+[ë¯SêÌSèÁUèóXé£WçôUåÝTå²UåTçàUê¤VìcUéžVç€Tå§SçºTêXVìAXë8UçÂUæøXæRVåñVå×YèÑ[èfaê4cëZê;VéÕVçþWç@VèYVé¾UêÞSìŽOð±Iï´AîÁAî=íÈ?îmCñÛGòùLñ+Nð—KñéIñHòßJò–KñhLð3Kï,KîšJë"LëTLë²Lé·Që±Rê+OçRècSæ¸TäûSåŒSë_TÿôÍQüù PþôSïZVîWîWî;Uí€Sí·QòEMýöñMþõ OðNïÑPò¨Pò)Nî'OíÍPî—Uñ»UðªQîdNðMîOKì^MïOOóNóXOñPò2Sõcþ‰ÿôÿÄ\NNéKÿQš`šg Å` „pÿÞyÿyl ïbô`†eý íhÿy¢ŽpmhO wL˜N¸Y Bov éo Ú` Â[ a l Ïn(yr] W7R~M YU‚ü â›úË—û|x˜h×WXONwONÿ¾D û@ û!Po zºl ýc Pa ` _ 0e Jq>o]l k ”g ªtò‚ȺyHp+`‘X +jñn4a ¾W PP ¤M êV X_zf Æy Ëwvn¡^ ãb „] -Yo]t]-X )RZTÍO0`tC\ ·L µU.R-J ÚC·CJFÍFK ‰K~Kn·F®x Û¢C­C«áŸÿµ™”¸s‡¹†4ƒ~¨‚Е$©ƒµ/µÄ´ª¶`·´°x¬#¬¿©?¡ƒtŸM¢£ó¤Ц§­U´Ù¶M¶ˆ²B­³© ¸«ÿ ²ý,²þó°"®ä«F«E¬Ó¬*¦²›‰ ~ (ˆÿ —‘ÿ™’ò‘!&† (ÿz '¥u þ€;‰—ŽvŸ¦²6¹«¶ „¯Hªùn¡ö°™þøp—ýùTœýü°’ÿû eòéNíðPè·VåNWæØWç¶\èêiënî6WéQæTæßYè;Xç­Vç UæuUå7Tæ›Uè\Uè#TçGVç[UæwTçäUé¹VêSWéÇVç½Væ^WæWå¥XæÒ]è¹_éà^è¸[çÏXèFVèÞWç+Vå Wå=VçÒVêƒWî Pî¿Ií`CìrBí=ë]?îûCñ§EóáIó‡NñwKñóJòJòßJñòKðãKòÙKò²Lî×Kê/Lëî´AñKAñ¿DñÇKò’LòÕIóÏJõ$Mÿö4MõLõ±Jò÷Kï’Lð LòIôàIÿõøLòØOìªQíìZ>íf?îçAðAï³IðeKò‘JôTMÿ÷Mÿ÷ÇLöœKô¬JòiLîÝLñœLõKÿ÷ÐKþøíMöNñRïºPïbKí¤JîˆOîsRí•Sî{RïÁRòjQò+SðpRîMRîÈUîLWï$Xñ”UñúRï,Oï NòÎMôßMò_MñALñìOð|OîïQðÒTòÿRñsOíLìqMì^NïéMð÷OðÅRò§Wø1eû þyú}’׌ yR‰þ£IŠt ¥b¿]ÿœcþÌiþ 8qÿtèuøo@rŒuHc Í]¿b ˆpü¡‰ ‘Û…èt•c ½b *g øc fLcjc ÑcZfw u”þ `”þ { c^7Rÿdÿ Mm d] []C_ …X] g ìb U,L þ6]~ Š&uk ¾j §mž_ ƒS í[ Ò^ ¾^  Z W‘c ´‰ l б ±p®ýÖ™þî{!rÿÅ‚þ Á}þ 6e °Y ET T .Yðe 3† Ê—ùsöŽ’þ¯ˆF‚ c‡ÿxÊ}ã„È|wÙ{UwÚiwUÎIÌM3SSMNÈZ a WÖEX¹Þ·0 «~ ýÆnö} ë”´¨‡¶¬Nšÿá’ÿsŽôŒÈ—g¤¾¢l•qг‹€Ë’•ךƒ  b¦ i¯â³L¶a¸˸.³¬ß«_¬^¯_­r¨±¢.™Ôš@Ñ¢µ§X© _«$®ö±­´³Õ°g«’¦Σx ÿ ˜þ,ŒSƒ e„ 芉 )wy Ó‰$`™³»z¶¼©   œþüŒ˜üùö™üúKŸûýÑ–üüŽiýónJîNìÁTèPUäUã÷VåÞVè°UèŸUçoUæ¯WçMVæºVätVä~Uå(Uä'T ä…U å‚Vå½Wå%Uå›Uå*VçVéíWé(VçµVç›VæsUæ°Uæ°Tæ™UçåWç£Wå®Vä±WãVWä3WäfWæEWè¡Ué¼Tì~PíÌLêŽHêDí‘>ìß>íþ@ïHAðŽBðDGïìJïçLòõJÿô—LþøÁLþønKõ&Iñ«Lí³KïCKóÍLõ$Lõ_LôÛLðšOíÉNíüLîNKïfNïFPïãTï'RîÊQî’Sï|VïFSîæSîôTî~Uð@Vò°Uò2Sï’Qï€NñVKòÝLñ~NòCMñÚOî~Pï:SñÏSò­Qñ:NîÿLí´Mí½Nî‰NðQð$Sò‹UõøbþVuûmtÕi²a ‰j šzølör “n Qdþa^üã`ýmþdpÑnXce Qe Y¡a †s(‡ö™‘  óór;_ [ ®d q ®}My ¨l :^ œa ¹m O~ ñ{"d XJTÿ–gþ _lÿ ã]W?U R 1XÁb }m ¶e‹O `K‰ÿx“ …~ °} Ez !z³i Ü[ GU kS sT RS.S§i !¬u«ý»©ü`¡þ7‡þís$zÿ„s i_ @S &Q Q1Q´Uºf¦r”€2‚ƒŽˆ…•ÖžüF‰þ‘€¿Š5têvçwLm<\9Q+Q£UISzK7MßW Ž[L:¿¾hªy… ål ¶p:€›]¯T²o­(¥•šÿ-‹±˜T±²·®û¤^™‰º¡‚!ÉŠz‚— ¥ t®:³‚¶¹¸€´D­5ªª«%ªÛª$§º¢›З¬–J™1ât¡:¨­?°K® Ö±A« ¤§׬įÿ;¦ ü™ „Š ^† )³™ÿ3˜ÿWŽŒA’#Æ I²º¨µͦ ’š_—ÿú‹˜ýùÙ™üûˆŸûý¼™ýûäsÿô£Pî#Ní}Té!Væ#Vå»WæXçîÁBïƒBï…@ï¢BðGòDKò‹Jñ½JòGó Gô IñLLî2KïàLï¯KðLðLñèKð]HòÑLñNíŒOë+QìŸNð”QôRó;QîçRìŽTìVï@Wò¹XññWî>SïÁRð@Rÿò£SóSñôQð£Pó)LöÈNôOñ¸SðöVÿòð[ò‰WðÊOð»MðMïNîÝTïWRðbRðUò«XòJƒoªÿ`“þýl >i…Mz«xU‰ Ø~'e µWÿ™XýyZÿ“_Fk …nc… “Šþ iƒý ãlÂtˆ–ÿ‡ýU£ý }Šb Wñf vC‚¦„¾ƒ;qUt *p àj•X 2f jo \ “]ßoÿýbYJTQ"VcR—_Yc ¼Y hY ¬nóz Î`nþµ¢f ÿ ³— p)^ eZç^ ÛX:R€MIY¯„ þ&‚ :qÆoNbº``ýcéf ×] ff ém ]•V ¯S ¤UŒ~ç•þ®šþ Œ¦ÿf²¤þ]o®izijf §djg G_ °V2Wua e ÓSêE+J»R úR R»«#µ@µ£é” ‡€ GƒŠƒå‡UŠ³Í“ ”’ÿ¨¡Y²á·´¶×¶ ¶ô±¸¡h‘ À…!ÒtŒoHv…7š§££W¡g¥c¨‡ª§̨¯ªþªiª/©S¥‰£_¢ƒžD—o‘ø’@—ÊžЧ#­-³½²°³?³6¨™€ØŽŽ¢ÿ:«ì®¨´Z±ð®ñ­!¯¾®1¡ ˜Ò•ý›þúcœüû}Ÿûýø üû}†þöæYïJðQìXVçÝVåÚVåEXåWäKWä†Wå,Wæ#VèíWêªVé²VçUç‰UèiUèäUè¢WèåWèõVæ^UåUæÍUåãWå9WæüXçøVåÃV äKWæêXè WéøXé{WébYéSXèþWè²WéþVìCSðXSóPóÌLòøFóAò1?î7BîDð˜Bï CðcHòµKòÙJñ¿KñÜIðIñÞKï~KîÏKó KôøIñ¶Ló MõÎNöDJö¸Lõ8NîZPêíTë¬RîƒRòAQó°QïúRíDSî+TðÝVòòXð3Yí[WìSìjSïØRñPñÉQñ Qô¸NõcLðOð¹Sð:WïøZîëTîÖLðÚOñgLñèPï4SðâTñàSð“VòÄ[ò&‰ÿ÷¬ÿj›ÿÀ~ á„8Ü™ U’ÿ ’·f 4[‚Xþú`YOoƒxLŽšŸü mŸü‹ÿêzCzÀ|Šÿ9“þ Õ’uâc fIs¶‹è”“‡þ ú†ý Š}ÿqË[ •n2v bÈZ »s ÀqÿåW·TýT½YkYO__ ÑZ V n[ àe € ’‘¢ M¡3œÉ|QvLp {l X:V™OP]b Kj Þj aa æga¿^ÒcOh9„ÿ ø‰ QŽˆÿ¼r  Y ¯T=XðuüGýù‘ÿÿq’R—Ê€þªaÆc gf 6kýøs,r i Û`n^ Çb Ôk Ù[²E†EýS!Y‚Y „¡ЦÊ«ש Ÿ¡•ƒŠ¡#vpxúy2y‚ )ŠRœÓ°*µi´œ³ßµ µâ²~¥ß‘ÿr:[![ Lg 5}‹!•%œ"U£"©§Û¤Ǧ)§·« \­è­©ç§¹§ ¥`Ÿ^”šŒ°Ê”š0¡D© ä° ²µ®L¥~–̈ËŠ‘™Ì©Oµf¼µÆ«÷§˧>ŸN»Š $”e–ÿý²žýü¤üú¦‘üø½_ñÙLò„Qì¿UæVäGVå[WåWåþXæbWæ`VæúVè™Wé¬Xé#Vè¶VéÐVéFVêÞUêÖWêWê¬VçEUå\UåÝVåÛXåBXæØZç4XæÖVåÎWçåWé$WêÙWêæVê™Xè|Xç8VçáVè¾UêrRìÇSñWRògLñµAðA@ñ®AðÍAîèCîAîÜCðªHò‰Mò@Lò#MñeNð¦Nñ‘KïèKïKLõîLõKò MñçNõnM÷èIö‰KõNîRéüTèªSêöSîSRðtRï·Rð‡SÿòTòªUð¼WïÛYíXêZWéVìºTïOñ£PòkOòiMñ«Kî NîFRîñWìâVë­Qî‡ a O[„Y$O S`WÖZ Z[ ÏgxiÉbueÖoÿÍš® *ž šÿ{ÿ ÷[ ¼QJSuZ|iüöeþa^/\½R¢VdKk’tùU|Ewk †h Sd 3d °p §k ŒRD\No_ …^·—ažÂ¥+§ߥö¡¿™ÇŒôBzÁq½kânyþÀŽÿ¤²I³­® ¨ G¨Z®ì²\žÿ©{L]AX \3_Äi Y|'6Š%˜–¤¢0¤¨ŸéŸž £d¨ö­~¬J«'ªq«d©ÏŸ~‘¿ˆì”’?–ãš¼ i¥  —cšÀ“…ƒ–H¢ §òªÄ©¾¥4¢2™)ô€P|»‚úwí—þü² üúÝ–üú‹mýö%PóËPë¨SåëU ä Wå/VæÅWæ^Wæ]VæiVæVçmWè WægTæšWçEVçfTèêUé•UéVUéñUæŸUå!Uå‹Wæ@Xå–XäçYæ°YæXæ XçªXèWéãXëÊWêæWç›Wå_VæOVèÏVêëÕ?ìÄCïïHñýLñ8Lï/NîJQíÔNïyKïJJð™Nö’LõLñPLïÕLò‚LómJôNMÿö5MðVOèvRåTèjSì:Rí×Uï]UóTþöWTÿôùUð)Vï,YîiYê¯Xé1WêÝVîÁPïˆNðZOðÞLð7Oð}Pï5UíŸWìSíKNïçLíJí˜Mí–Mí¢PíçSïÐTî WïCaó.”€ Lnøx™Žÿð²6¾È·ð±›«€ck æf Rr¸ 4†f ƒz—þ±ü´¥ý ?“þhz­e@n }w~Ô€–þû‹ ê‰T‚†ýÿ™ü 7¡ý T•ÿ Îzsfy q\o‡iQ^ „Y `SŸS­W°_ 0d ` b Ý`~[ €Yü] 'c ¿f  ˆvq _8zĨþ ¢þ }[oû=_ ÿêPÔR™W |X ÔX ¡_g;nn~rŒ¼” Ô‡¦‘œrºWN)MAQÆQ{NAM ›KfI$S ÷a˜n Twþ'}uz„tÒlµa lbÁstwÿ÷jøOÿL½\ `] Kˆâ™ñ¤4©8¨P§î¥ŠœÏ–xö~åu€ýþùðÅAñã@ïŸAï–Dð†Iñ¨JïÇKîûOì RêµMíIó`KònMô`JóîJð“LïíLñLðeKò#Kÿ÷óKÿöhKì Pæ»SèkSìÔSìVTíTð1UòVñUï#Vï1Xî¤ZìQXê4VëZWí•UíSï1Tñ(OòªQôSð}XíŸTì¸QïGMð>LíŠIëáMëgNíNíåQî‹QìpXí<_ó¨iü€Z5Qu_þ÷´ÿÄý¾ý.»ýߘs˜u n ¹z¶§ŒŒvVo°„ÿ y¨ý þ«þ e”ÿ q€-a³_MrS|“€…“ÿߤþË þÑ— $ˆ°Šý ”–ü ?Ÿý ª™ÿ@‰Â~½ (y0jpjöd [ÐXãSÅVd] ¥b ´] Ý`çl§j 7f¶a Ë`÷bMg Åi/` Æ]’wߟÿ}°ý³ýKœÿ ú‹Äj?N’þâ‚ÿ—lc Æ^ Î^ ¢l0|£~Üu €w¨ˆ’½ò’šŒªZ¯°A®í­¿©P¡¶˜ÿ•‡˜q—³—:–©”Mü•(•W•D–ŠŽd…Ô• ¡ÿä£þö›þß’ÿì“–ÿÿ;•ÿ ”ÿùšÿþÝýûfúûz”ùùórÿõ·Sï>O éÁTç¤Wé VèãVçmUçUè¨Uê«Tè·S ãiV âwV äÍVæùVèüUé’VèÍVècUæ'TæÑTä³Vå¼VæãWæüYæZçXæÑXæÄXædWåýXå Xå¾Wæ]Xæ7VæýVçzWèWé'Wë=Uí%Rñ¥Rò2Kò >ïæ<ðK@òxCó6Bô@BôôHô%JòLðÙLïéOî(QìKKï*GóŸKôFNòCKòõKñ±Mð©Mñ×NñîIñâJö±Iþ÷öKóOìQìµQíéSêgýöãsþý&eÿGýÆCÿb ²• ¯Û°®‰‰íkÄ^ [ñkšˆ‡êrŠsý7}ýhþŽªÿ P“ÿ ÖpKh½pv>u Ãz ìt­…ÿx™r{tþ l—ý Уý £ÿ¢¬—–}‰6xhEg0a Ä\¼VÙY,` Ïa -Z ©X Ãi ÿ^:c {h ä`šaµbÝa"^Ö\ pm°Š™ ™›ÿ Þªÿ2´ýó”£[ øK ü²Q ûkU ÿUY¹\ŒWéT¼Y D` ` å^ )W´T ‚^ !n àz DvþïŒûr’úë‹ü©`®M FJÿqVÝc Èk¦pÙ‚¥‰L{YjIktn€q9rvË|ÿ${%{ðŠÀ“Řî—r“!ç—¢š¡¢«+«ѧU˜̉Œüº˜þ’ ¤ ^¤ ôœ;‹ÿy9t}¶‹l„ÈsOg ^‰^â`@_ *[>VVY¡eL~ÿï’ÿ ËŽŒ#“S¤°æ²·°ö±+°Ý­O¦ø¤¦¥/ Þž\“Ç…%~|%pt &Ðw "Œ²…7…3Žÿæÿƒ ÿ¬¥o¥®¡ÿ «œÿs—ÿýë–þû,™ýüÄ›üü~–ýûÓ‹ýø9põrUñPë›Sç‚Uæ®Wç2VçpUèâVéÞVêáWéTXèÑXçvXç.XçfWèVê£VêWè Uå'Uå(UäZVåŸWèÓXç\WæbXæIXæ˜XçtXç´Xå­Wä¥Wå†Xæ:Yç‘ZévXêqWèÐYæ¦ZçVè&VíÊUñŠLòýBðAðJBñêCñtBñÜEôŠJöïKõ£LóHLòNò#RñMñýIóKò»MñKó KòFLñvLòèMñ·LòmKôHó?IõˆLþõ?Oÿô†PñÎSìRè0Tæ™RåQRæsUê(Wí-Zð‘Yï`Xî$ZðRZðhXí1Xê]XëãWî•Wñ3Vñ SñHOò´JòªKð‰NðOðBMíeNíµOïOòÜSñGXðÍgþöB}þÿˆþÈa…HX1s ˜{’©}ÅhªV ÅU-g J}D}£l¯xþ –ý „“þ G¥ÿ ²Ÿÿ ‚„ '~‹‰›þ(”ÿ‰ n1j#mÎjó[æ[މŸŸþ §©ÿ6©!¡:’yŒ‚òfé[é] vXŒTP\g unS^ X Ê[ ¦[ =ajXa‡cg>`ž^\Y•e ý} iz œ‹ ̘ ȵý}«þ Ns‹J þ‡M útV ] W\ýXÀTZ ª^2__%_ oZ Zd m x %xÿ‹Šû1šûÅ ýf‚ÿ í_PJjOÖN`÷k 8n ¥vñz p5eúlÊnlÃp¨rÿì|ÿõƒm†ì¨©¢m£o¥V™ƒ!Å{dˆ:›ÿ T©ÿ þ²ÿ[µþá®ÿE þΠþ««+²l°¯C­¥•ì‡ò†‹ˆòwÌa `^ e5sÿMzÿ ©uScsX\Ík¿€ 2Ž’þ½þ òë’ œŒ¬C´©´ý´Ü´<³1¯ȬÕ­’ªk£Ýžs—øŒ©‚F€!›„&ä‰!E ‘d›þ¦ÿî§rªüªŧ4Ÿ[šv—ÿþ—ýüû˜þüD”ÿúD‰þö®qþøµVõCNìoRæ¦Væ:VæMUçpVèVê1VêÔWêèYécXèuYé¹Yè&UçÙVç&Vç%V ä*U áV ã6VåEWæWWçQWæ„WçÐXçÓYæ'Xæ~WæšYæ”XæWçŒWèµWç¿XçlWæuUåQXåXåWUçhXìhWð*Lñ°Bð ?î CðYCðŽCðFò[JôÍJôÜLôMô–NóœQñrOð®KÿôKÿó3LñmKóIòVJðÄMïêMïeMóâKóËIó3Mö!LÿõŒOþöïPýùÖRþø„SñTéƒSå QåüTèUìÉYîaYí–ZíjYîÄYðZWïÐWí XíÚXîàWï—VðýPñòLò¸Jð¯MïoMïÄOï{OíX „d ozu o‰\ Ypš“a†*| pþŠp l_à` =Y f^ \Ç\ùk ‘€à‘´yL^ X GW …[¿]³`_þ^ b`Wc×kÇwk ›s pÂsÿ£wýTˆüË¢ ÿª ]Œ ÿo›‰”ûñy u …b Na …a RbA` ti op€¯{ÿz…wÑxs?ˆÕ§¯G¨­žߎ‘€{u Öi  lטþ(¥ç¯#³̵ĶZ¹ß½»§¹(·عѾ½¼ ³Û«~ '‘ ò{“ÿ gžýB¡ü °þ Ô™ÿÞ“þìÿu†DÒxbx ß| t}}!” #’‚ ’Ñ¢έ£¯ã­°è´&²'­~§2 WœÓ¨  L¤ ~£³¢¦¢š þÞ£ÿ¤c¦uª‚±·²F°Ö« ¥¤ÿ“ÿü‡™þûË—ýúŒÿ÷ˆvÿö9UõLõªTïaVêMWéßYêWé¼Vè UçaUçiVè‹Wé¾Zë<[ë+Wè§VçVèüWæ^U âKU âõVåùWåÊX äVå•Wè}Vé'VéÿXêXéVçUæhVèôWéÖXèXçÑWæcXç*XèÙZé_XéxWëéSïÀIñ.=îpAð÷Cð1DðqEñÍGñ½Jð}Jò$KóËNÿò8OñUOñ·MïãJïyJï‹NíŸMîÁGñ?DózIÿöéIþöóKÿöMô LñNñ¤OðPÿóbRüúºQûüüQýúRïÔSéßTåLTå§Uç7SéVêûXê·Zí‚XðYXñXð*VíƒYëXZìÒUïôPðpLñ[JïºKìVNì*NëéPê•PíÀQðTôŸXôæZ÷_gþËrí ³º` ßX KýTõä|þˆÿ £“þ‰þ:nþƒfJ|å€w„_ˆ ZŒ}tŒWä_¿‚¡ÿ/¹Æ¿qÂ*½»@°“ŸjŒ †ÿ »u à^Rk\¬ˆ ( þ +ªK£H€€W RZ ÎY dY˜a‹^ ^ êb ógQv Õƒ‚b ÿˆsÖ“Ì›ø˜,‹ÿIˆýZn Ïf ;^ O\ 6\Îa˜`[ än Znúj «`µ]ÄXàVÉZ8fFe ‘_ „]ÔkÛ¨z »ƒÿr~ 0rrF‚þc—E¦^šRžý»¢û¤ªÿ: ýt›üP~þ·nhk Wh1` ¸jÖrtˆ ‰‹)‚ª{Mx{yYªŸ®¯§~–µzd 7j •pìoÂv¬„!¿‘î™@¦ 5´Ç·ÿ7·ö¸g¹¸º.º`¼æ¾ļ’¹¼·µ´ö¬ }¨!¨o¥ D¡ÿ „™ÿ㘠Ҡþ«¡þº–À‡§z$pàfêi Ýp /s $Ut &<{(½'%šV˜y™c£Ò§ä¨°¨bªE¢®°ž4¡̤›6–ç›HþjŸÿ†œZœ±·œ› ã¢ñ¢»¡þõœÿûFœýûÖ˜ýù¬Žÿõ·}ÿø¯XóoKôuPîÄTëóWë‘YêâYè/UçÉT ä~S ä‘UçÇXëeYë#WéÓVè!Vç5Vè¸XèJVå­VäWå"Wå5Xæ WæWèèWéVé^WëwWì©Vé@Uæ¹VæWçŸWçÓWç¸Wç“Xç_WçíXè¿WéÂWêRíãHò{;íž?ðSCñ³Dï#Dï.Hò{Kñ¦KóKòwNñÄPñNð—LïCJï/LðÝPîNíúFñþGÿõŽIüø-Gý÷ïIþ÷HLÿôƒMñ˜OñNò…Nþõ„Püù0RýûCRþù™SòÂSímSçVæ Uæ^Rç{VècUè×YëYî|Yî·[îAZë/Yêü\íâTð|Oò"LðyJìõKìNìNìÈPêŸQìžSï{Wòt[óEYúÕ\cl ^j Y ¢V]Reûcýü¸ÿ,”ü 5 ý ‹–þ +rj¤ˆˆKƒò€ DŠ ¦dc íc.wI¥ºÚÀš¾µmº!°<›þJŽ “Œ}ÿ –iü’nþ~´”ÿ N¥ÿ M©þ a šY yZ ‹XCZÆc î >ðæBòÒCï¬CíîGïµKñ³Lô"KÿóíOÿñOÿñ±MñªMò‰Nó OñYQî×PîØJòàJþõ”Iý÷‰Iþö-Jþ÷ MþõºMð­NñðMÿó¦MýöîNüø*Pþ÷pSó9Vò½UïUVë!XèUç‹SçóUç‰Uæ2VçWêDYìô[í^î:\ì¢Yí¾Rñ¼MòyKí¿Kë@Mì\Nî‰OíOì=PíUñXóYó›[ùc]pƒi ha@eÿþ‚êˆÿ sÿE²™ü Ö£ý -˜ÿ n{S€‹”þ·þB”Ÿ‚†„ 1‚Cq˜b1q$| ΋XªS¾‚¿.®(®o¬ Ùœÿ œ ~–þmšýWŽúä„ýzÿýˆþ»þ Ê­ÿ,šþ Nnm\ UX ‚NCS¥c èràm|g d ïk Æs sa [ G|˜b ÿ+žÿÕ ÿ0™ÿí”ÿ ô† ¸h }V r] a o` xZ k[ tpMŒWŠ—o ;SþYßi wjY-Q ›X ¾‡Γþˆ”ýlþG‚ÇrjPkXjÌw»tfxÿ¯m˜ÿR”ÿ‹‹ ƒqÒ€3œÿÉ“ ƒ:…–þ °•ÿþwmBdej E¬®7ª!ꡜ’Ò9rïwzØx|sÿpnþx Έ pœ ´n½¾–¾]¼.·ª³9°r°³ï·÷º¼mºç¹N¶>±œ¯®8°ÿÓ°¡¢ŒV|¥v4yqz6x q &xn %Ëp &{p %Ðo dq u öx ‘~‰x–éœ3¢ÿ =¦ Ú«ͧô™‰1‰YˆNÎä} %)t #p  zçËÖ…aùõ“þø˜üù=šûûmüþ7pýþ¯PùÜOî TéxUæcVæ¤V æYT ä»Uå°Uæ×Wé?Xë?VëyUê¹Uè»Uæ•VåVæAWçVè«VèªVç>Væ WçWè8Vç¦VèVéGVéKUæ™T ä­UæVæ{Wæ¡WçZWèUè§VèÎVè Tè¥TêÒQì8Gï¤?î>ðEAñÎCðËCïRFð7JóLõ³Ló]NòÈPñFOÿôOþö+PþõcOñÉPíÎPí NñHKýõ±KþöÒKÿõ…KÿöÓNÿõáNð‡MðÔLñ®Nÿó¯Nþô?PïRí½XîoXíœWë#WêxUéXUè¼Uç¥TæéTæñUèþWê·Yí$\î\í:WîkRðGKïuKì&Mì]Ní;Oî¤NîÑMîTMîuTò‘YÿônYô]õoþ(„y‰òx o…üÏý 6ÿ ?q { ú•ýÛ¡þ(› ‹ g†ÿ<œþѳý–«Ê–¶€2yØx7aÃ[†g*y <› ߸þ9ªt¢ ž D˜ 4… eŒÿ ý°¡ü«“ü ~ýkyýöŠÿÒ–>’ Mv8r q ÝO ÷MY]+nÆmrd a F\ …a ?g ]f »ƒ+–Ÿÿ#žÿ]£ÿF£þ ‹ÿ Ž‹ ±p¹X  ^ _ Ïe (_ Ò^ :h î|††|e ²VFa¨e !wvf û] ÕY ,}H‰ÏŒþn“þˆÿo{Is sn3h{excÁmœykÆf |^èzÿt˜ÿQ” Ú$Šÿƒ ý -¡þ ö…£qg¡gàn»§!â« µªã¥¡—¦‡ª|dyìyVpðfCce l+ò£ V»þÂÁ’»L´Ž®­¥Ì¢ §g°ò·Ü»n¼s½ù½ñ»ܺ»µ¶²³K­ ƒ›«‡ ¯}+~®‚8‚Àz!âp $n $…o "8n šp µq !Mp Bp 4t #²€$ZŽ[œÿ¹¢ÿ N£ ß ÿ ù œ S– ? ©”æ‘} ‘x5xÔx$z 8~”ƒ ߎÿüú+’üú»–ûýúÿ¦tüÿûSÿúrOîSèíUçHVçuVçUæËVç±Vç?Wé³VéÇVê0Ué›UçyTæöUæ÷UæÈWçSWéÍVêïVêûWç½VçìVé÷UéïVè”Vè„VçîVåhU äJUæÚUæ¥UæàWæ;WçCVèŒVècUè«Ué1Tê!PìÐGî@>í.>ï÷Að]BðÂ@ïöEóâJõ¥Lõ£KòµNñ0PñwPÿõPýø1Oþö›Oñ!Pì­Oë½NïlMþô(LþöáKóÇJò:MòNñLðßJð`MñËMòµPîÐRêuVêUXê+Vê VëQVë€Ué¶UèKTç±SæuVé6VìªWîÅXîÂYí¤VîíPð¾Kï1KîÁLï¨NïžOðXNîÿLî§Mï·RòHXõ­\ÿõ^þôùxÿ™έ{– X•þ ç›þ ¼€ªd åw ê“ÿP¥ž ƒ“ %Øþ]¶ý]¸ÿÁ¦ Ï} 5kXvšiPVo\Íq’N°ø½°®8 þ °šþ z— Ç~ _yÿïŒÿŸý c›ü ÚŠüvý m¡mtO®™þ(–ý‘dþ $M ˜Z ÌoømDi-d ïZ Z þn Jz)<”þ ´£þç¥þ)¦ÿ Ø©ÿ ™¥þ’2~}c …j Æ_ Úb b ¨a S^ ] ¥k Å\ qYðmálžŠ õˆÿ Z{þ Ôcÿ çrw•‚ÿ-Œþé…þ³v=u”{ y%jwh ¶fúb`a£T¿^;b0þQ•þªÿ tz †˜þ”£ÿ Sˆnc’o:zÌ£!¨Õªݧ”¦a¤µ–¿þzzÔseáb +dÔcelö‹ˆ¬E½ˆ¿`µ©5£ä™ò¹Ž^ W¯5·º»Ý¿À7½÷¹Ú¹¯¶ï´Ç´l«zœ i<”p™ y’€† .w!Qp àq#±r#âs !!s !¬q $Zp &"q (à}"#Œʘ Bÿ‰Ÿþ Ú£þ ¼¥ Ê  „ £b ±× Ò” ±’Å‹û¨Ñ ì”þbýúMýúË“üýÓ’ûÿìwþý–T÷8OíêRèíTçRUç´UçôVçQVçIVçsWç^Vç©Vç0UæãTåØTåÞUçéUæçWçVWé¤WêWéVæÆWæ6Wê¡WêÞVçÞWç"Wç–Væ¢VåeVæÝUæžUæ…Wæ^Wç‰WèlUèfUé’Uê\Së¾PíÚIïAî@ï¥BðBBï§@ï3BñGóÿKóÔLð1Mï¨Pð½PóNRþöùQÿõYOð#Oì‘Pí˜Pñ×NòNÿô3OòQKðYLñLòbKòsJñ½JóÄLõËOîÿRé{ Ft —u -v (Œ{"N}è‰ÿíšý c ý ¥ÿ E¬ ¯:®×´²ýª§«ƪÔ¥ÿ ®£ý ½ŸþP•ÿûö‘÷Z“þøf›ýüOýÿÿ„ÿÿåYÿùùKò»Oí"SéjTæëVå¶VæùWç/XéÂWçbV ä&V ärU äŒUå¬VæVænVèùWêHXéŸXç&Wæ(VånWæcVæÄVå·WåõXætVæ%UçâUèbUè¢UèÊVèœVè”WèÎWê“VëŠVé/UêwSíÀSî%Nð\Dò˜@ñ BñÈCðvAïl?îjGòÓKóKôMð‹OíÛQî§QñìOóÉLñOðQñNñCLð²Mí~OìPï4Mÿô4KôÕKôÓKÿö¥KÿöµKðÞMîdNìùQêÿUêTëÆUíµXìcXéƒXéCXëÂZì›ZíX]ï_ÿðc\ít\îÑVîGOðÐKñãKñ°Ní“Në¬OîNNòLPòtQñ²Tõ.Vþýðfù¬m÷û‹ ¶ùR»ñÑÁüŸ*y nÅ‘ã«þ»ÿض­7çšpžì£[—ýð{s ˆþ Õ–þ¯|ÿh%a üiêU˜z—s”zžý˜°ü©þ õÿ*ý ç„þKhøy°ü ¼hÿéhóƒÿÅ“þ G˜ý£žÿ؆ òlýmpyëkÏvrukmbµnÈrôrns¿‚ÿ›šÿ ’šÿ œýÚ ý ±žÿ yŸÿ ÿ&žþYšþÛ–N–"†/b ZZ FZ `c nïìžþB›ýú” 4|ÖtƒköiÐ^ ¹sþœ–ÿ V¡þ\¬þ $®÷¯¦­«¨yœ e‡Û~{·}ÿ'€þÛ’ý'šüú•þ þ´tÜqXt?u¢nc d`vŸ–¨î®U©Ÿ*’«eq\yâƒ_Qomovv Ër 3w2R 2˜—ºv‘[¥<¡ëŸ{¡gž/~øô†1ƒȈ_š5®ê½²½j»”¹àµý¬ ë  é› žJ¢¼ž Õ˜¼‘6ˆü€%w ³{ ^‰!“A”ç„Î…ÿÛ•üý µ¤ ­:¯ ¨«­í©–¨­â¯‘©£þ œÿ ”ùG“ÿö°™þøŸýûŸþþ †þ£\ÿüJÿõåNð¸Rê›TçòVæÚXænYèoZêRXçïVåèWåkWæ:Uæ¨Uå'UæˆVæ&Wè—YéXçXæ‚VåWVåVæÇVçjWç•XçMVæýUæTUèUèÈUç@Væ%UædWçÜVéýVê[Vé/Uë–Sì‡Sí˜QícEðä>ï†Að¿CñŒAïž>í¨EðöIôYLÿ÷òOòÐQìSí+PðNóKôÇLòRð_QîmOíPOì‡PìÙPí[MñLó Kõ Mÿ÷©KóKïžNîøMíÃPìýTì²TéíUé.Vê†Wé$Vé„XëµYìM\î6^ÿñµ]ñÀ\í [ìÍVîvOï[LðßLòóNîaMê—Ní#OñðSð»Sí/VðF[ø@rý ~ÿüF–þФ D¶‹Ãþ–Ë—¥݇ ‡äþG­þ 'µÒ²’³Φó£<¤÷ ÿxŽÿãr r `z *‹½uÿNl iÙgÓt"ˆ *…6…x“ ¯ýy¯þ‰þQ{þ{þ0a)k ÙtÂ\ –_ ˆÿ L¡þÌý©¢þr” Ž‚ ð}þ.„þþ?6~ ‚q sh ©c ‡nhqc®fèi i† Ûœþ @¢ý G¤þ ¤ÿ\£þžþ !žýóžþ ë‘ Þ‡#dd o\ ´i \r Çs Æ…ÿ p›ÿȘþ ˜ƒïla@X ·X1T kBþ‘¯ü †¿þ]¼ƾvµ—¡‡NhÄm÷|Ý‚ DˆŒÿZ–þ×þ Ù~þ.t#s qsDpÀnægWtx–­¨œ­U¨e—å‡Þ‚è~*€fˆ¾ˆE€A‚"ŒQ’ Ž‹‡{©ƒ£•ÎÍvÙs™Ϧ¥¤p¦Àœmƒ—p¼uvû‚ªÒª!¾¾R¼£»Ĺz±¦ cŸ f¢ ƒ«˜¬ ­¦ ¤ £›9” ‹ ;‡&—J—äŒ(‡üˆÿmq”’› £¢›(”6™Q¡ ô§,°9³û¬n¡ÿ Í›ÿý™ÿûKœþ÷- þö.¡üùuœûüûƒÿý•WýHõÁLð·Sì%TêàUèñWçÝXé‘XéWçˆVåÈWå¯XçmVçáTåöUåvVæWWèXè0WæçXæêWå VåÐWç€WèºWèæWçWæVæ+UçËUç,UæOVæFVæ‹VæòVè¤Vê¡Vé/TêŠRêTê_TêEIíÆ@ïÃBðFCñŠBð’@îxDï/Iô1LöOò)RíRìáPî¹Oó2JöàJôdQïSQìÂQëvRì‹SìPí–Mï×LòÆKÿõ·MÿöQLðûMîÒPìTNë:MêSë=VèoUèËVê!VêÀVé Yë]Zí \ïŠ[ðFZðgYî¹Yì¥UîANîžJíeMðINï€NíœPïùRð®UñóTîfYñòjùƒþ>ˆü ”ü¾¤n¤ {®@°{›þ ëþ •šþ„¥üö¬þ;­—¯%µó°8¯®¯ªœÿÿn~>spba 6ašljNm§yËz!±zh ԛݣþwÿOj ª` äZ Cd ­pÚZ H\ <~8 ÿ¥þ¸§ÿʤþ u™þ PŠútŽþþ=þ€þù„þ;}ÿ©s $s×i¿_æa^ ­wh“ÿA˜ ’ Šæšýû˜þ ;“ÿð˜ è‹ ‚ ¶{^s±yú„ ö— Œ îÿ—… 3€­snd ` ”^’Z ¯` ¶w½¦ÿ¶ù «¿ ‚¼l¾ïµ¨—Kpú[Lg *…ÿ‘7Œ 9Kšÿe—ý ýˆýö{ýr{ÿfwXv°nQopg Énž ª(«à¨>”ʉ$“—–  .÷Ž+÷’s–¾—”’ …-‰‹™$w©vþÜ¥t¨…¨0¥C—¸Ípíw€¯…õ‡fŽz¢·¥¿¤¼ð¹«ºþF·þ4±Í­ ¬#³K¶m³ Ž®Ω_¥ ¢ v›(™Žš±5š’¥ˆñ‚䆸Œºƒ "‰zg„ÕšS©"³ÿe¶­w¢ßÿœýý5¡ýú>£þø‹¢ûøaøüé‚ûÿüRûvFórKðÂRíbUì€UêTWé^XéVè±VæÿWæMWçÐXçWçkVæVæ[VçùVè˜Wç‰XæBXå XäYå0WæŠXèKWèWWèñWç•VçVçmUèµUèÇVèœXç~WæwWèYWé,Ué€Tè5TéTé)Tç/LìõAî>í~Aï¯CðCï.EðNIóýKõ LòäPîÅRì)Qí´NóBIöGô£OïQê?Rê&Të6RíáPïüOðMò¥KÿôwKòjNð PïPíÁOêMê¤SëRTèÒUçTè´TèUè^XêQ\ìsZîºYðYðwWïsXí‡VîcPïcIìNí;OîWOñdQòRñ)TñðUïV[óÊrÿýC’ý!ü …þÍ‹à„Jˆ ¢Ž úŒý Õ’ý Wžý/¦þ D© –«X®µŶû·›¶ª·v±&¬Ï—G‰ 6qA]WcÙk}k nnj¶f ƒ€LŠs†YeVEW8jqÏi ub:uG— W¨þ;®þ N¯ýw¨þƒ˜û :˜þ”˜ýþšþ„•ýå–þÛŒ ß‚-rè`À^˜\ {h°yhy Jy 2ŽÒ„ׇ ì‡h r “´‘ú“œ ®ठüŒÿþyÊa‡b3b”jKksi²hÏ{ªÿ h»û ¹Iºæ´ «‘Š/c ¡_ s ›’ÿ Zœ ŠˆÕƒ ~˜ÿ ã¡þ •ü9†üµƒýp~ÿºx±kFrhoJgû®!±îªL¥I˜d”Ò¤“ª_¡ǘ±•¾š¹ŸΘ‹¸„¼‡y–†¦ éþ†•†É𒍕©©”§X˜ykd{3‚!9…fŒn—d«»–·À°˵ÿ1¶ýß´ÿõ$·T¹mº ¹W·í³š¯]­Ϩé¤Ë£ D¦:¥Ê ¥˜¿ŠwXxY|×v %m Bu‰ñ™ÿ(¥ÿÚ¬‰«^žØþö–ýþžýýŸýúašþôj–üú‚}ÿ Pü\HôLïQì]Të.TëhVéUVè¨UæÛVç[Xé\Yé}XçÎVæâUæøVåVåVæWætXå¤WäïXäÛXå¨Wæ„XçfWèºWçWçVXèYéWêpUêÁVé€WèóWç^WçgWèKUè„TéÌUëUéÝWç,Qê/BîB>í„AðèBñ€Aî¾BîHòºø¹U¹»ç¼_±ê§‰rÉ[çdðqšx.q7qa hW {fnjÙb ±WÿRkZú‚ü“öŒ ý‚øv I…iþ 0§ÿ ³ý3±ýê¥þžý & þ Ÿþ` ü5 ü žý¿—U€¦p¥a„b{^ –` ƒ` þm €2rúr F€˜ˆÿÝš G¦ƒµ¯*¶þ¯v¶:µg¤†ÿæaº[h$tyt"k[súŸþ µþ!¨@ª ˜ÿ ·zslÁw‚þ4žþ §ÿ:Z€m¡þ ýýþý¼‰þ„ÿçwósȃ H|›pT¶¹;¬S¤«˜s˜έ¶h«³žŒ›ÿ1¥0§å˜Ú…T~ iŠtœ V® ë¨ Æ”<—W© ®©i¨§›ÿÚ{WdtÀ³€Dˆ{”¥u¯6¥U£'©©ß­͵¦¹uºî»ê¼;¹¸Œµè±Ì­y©é§ 2¦ ö§/¦s¢,•‚Ê{ü{ ¹t fk sk jr¦|‡’éš Ö{‘þ±”üÿŸûížýõW€õcký¸OücIõÁLðÒQíýSì3Tê|Vè UæYUå²Væ_XébYéÅYè‘VåþV äJW ã,V äUæáU åÉWä~Xå>XåWåÜWçqWèŽWèÊVæ‹UæÚXéª[ëÿYêfTéJVèµYè>XèTWèWèVèUêTìJWê=Zè™TéçFï[@ïlAïöAïÆ?íÔ@îÀFòÜKôÓLòêQðQîÓQïÅNôLJÿ÷âIöJNñhRì)RíÁTñSRóbPòÁPïFNîæLîßJîšPðòOï»PíaQëKSênRè™TæQUåSå­TèPVéXêU[îè[ð“YñYYðXïtYìYë4RíLîuMî¤Sï¬Rî‡Sî,RíÇVì?Tî»Wÿù*_þpƒý }žþ*ˆ _[U\ÿ¥yüˆšüÀ¡ü € ý ¦™ÿ˜‹œ˜ `« Ͱþ’µþ¯ºž½"¼‡¹Ù½cÁ~¾¼¸ñŸȇÕr‡xþ(~ü†:|½|kbY LX„Yÿ¶[þ ¶Vþ TPÿ­_ÿŒ R´ {°ÿ ¡þ~…5{j‡ï˜ÿ©ÿ¥±þ»ªœœýuþ y¡þv¨û 0£ú-¢ü¦ÿ´–ÿ„äpÜmzd j` T` Œg ›s1lØk7y ó… Øž €¶NÇ{»^Àþ0»M¿½A·Æ“ÿYl`akw{¶…Å}£wžkï‚L“ãŠ"GŽBx¡qFwЇ~˜ˆ–ÿF«þY³ý³›ÿÔˆ÷†ržÿ ®¥ ¢˜ÿ€É} R‡þ°˜þÒŒÿ ~?·Ÿ³J¨›Б-—ª§·Œ­_j›ÿk£P ˜“„Œ ˜ ”Ÿ ã§ `¦ þ™ /žB±l±µªè©i©œ£ÍŒóoçj9v~ ~FƒÀ“u¤ e§4›p“2‡rŒhšÿ觉±~³ĺ¶½ê»}¹¶³Û²^°/« e¨ …¨j©§8Ÿ©•ªÍŒ±ƒ •v´p 6h ýe Êh Rtçˆ:‡þ»ü4›ü—ÿ }ö{\ í„SøhHøÂJõÊMòÊQïRî¦TëMUèŽUç»UæÃVæ«WçXçþXçVæ»U ãV â>Uå»VçÎVå;Vä³WæEXç›VåÞVçúWêÓYé-Xæ\Vå­XèwZëÛXê{Uè³VèñYèfXéùXèWVèàUè¸Té0SëhTê—XéýVêuFðä?ï¾AîŽAízfhžn1~Ë‘' Ö­L·<»c»mºv¹–·ø¸¶«±„¯i¯²®J«I§ÿ¡|ž®œ$•R‡w{ƒsj /g Ru4þÖ‹ýdŽþ‹þ<Š£~¼`ñ…JïÞHõzGõLþõ{Lÿô¤PòìRðÝTíÉVédUçêUæéUå|VåeWæÇWç¦Vç±UåVåUVç³Vè[VæˆVä^VæwWç¬VæjWçWê‹XéWWçðVå^VæwVçOUçNVæ¶WækWè©WééXè8VæùUæPSæ¿TéTëÀXìtUîæHó§?ðÏ@í¾@ êAì/DðdGòqJó Lñ“Qï!RíäPîeNòúLöˆIöùMÿôóRð‰RîSí^SívQì•QìGRî4Pï0Rï*QïPíBPéµRçTæ{SåTTåTå?TéÞVîUYðjXðqZð±]ðV\ð)XíöYêïXé]VínRîIîFJí.PîlRîVïFhþõ­“üýÓ†ùþf^÷ƒ^ÿœYl] †a hY¿Zšzÿ ’ý ñ˜þ P“ÿ k‘ Q išÿ :› ÿ™§ÊŽÿð›ý uµý¸‘½¡¿ØÀá¹ɬ•¤}™Z™q†¡×–‹•}ÄrÈ`|\Q]þò\ÿ VSS o_ … É® ݺý¿­ؘd‡I‚êþ>‘ÿ w–ކ®€£ߦý=£ý ¤¤þ  ¨þ«þ稘9ˆ>mápFtÒvrùqPg ^ío«‚8ž^¶&À¡ÁËÁ“ÀQþ«q›#Q_„‚¯!zBi5^þf´c èfðeýmŸŒ M¡þ a¦ÿP¨O¡žØ¡ …æ[“‚šÿ|™ÿ©”ç—Ÿÿnšÿ Ešÿ —‚Š• 䜸]±œË™žN T™Kšòžçnƒ Ñ™¬ Ñ®e«ú¬‰¦ М °Žц(‘džó§,§Þ£Á™´†›mš_øg·q%süƒk¡ÿ °þ þ‚jµiBl4u ‡€žÿ]¯Ì·¹»V»‰¼\º¥»ïºï·$µá·Q¶дì²Ä­ú«–§ b ÿ f“gŒ)‹ ‡ —ƒ ”&—ýþaŸþÿŸþ¡”–{e\ ø×NñCñTCô0FôRLþó¿NóPò‹Rð¢TíÂWè&Wå·VåðUäÜT äŒVæ WæUæÍUçeVé¡VéðVçîUåÆUå×Wè@WçWç WèOWê,XéFWçäVå$Tå§Tæ“TæÙUåôUå²UçKUè¬Wæ]Vä^UåºTå6TçTê…Wî/Wó;Kö¿@òÐ@îœAîŠ@îïEòIô8Lõ"Kò»PîURìVPîñOòaKóðGóÃOò*Tð+Tï$QëçSé$RèQê5SïZSð²Rî«Rí±£ÁŸ0¦© ଠª Ý®þ ¶­ý­ýL«ü Ažý ylJ ôÔD ðfHókFõ`EõãLÿöëOó‰Oñ˜RñPTïñUê¤WèØZè&Xè·UçùUæWç:WèŽVéŽVé¼WéËXè/Wè²UèéVè„VçqVæ7VèÉVèÂWè§XètXçfWè[VçNUçÈVèVè†VçUçíWçtVæ”UçËUècTéõUì*UîlWòMóÌ@ð´@ðýFóDóñCò›Gó–KôEKó•Nï_OîòQï#QñLóÌHôOJõ„PõDQþö SòxRìŠRê`Rê­RípQíÑPìºQêýQçRç¬Sç"TæEUç¤Vé1Vé{XéÓWïðXóãYò[ðYíåTë|UìoVí´ZîƒWðLQð-Lñ6KõäRò¾WîV_ñO\ôUZõ¥]ôGrþ•’ÿ €´þN¥ü :–ýU‰ü Q†ÿ\þƒƒÿˆ [;„¢y k Ad &` Ù\_Z aW‚[gf ph Ìvç›3·M»d¯F•œh‚YzÇd Š[ õYZZ´b yfDgÿÑ]ûúWþ n_“WÿÁ[ÿ–‹J®йþ¹±ÿ¨ÿ1¢þ •ýºþ»~ÿ´d:ZwY_ Ya §w£–ÿ æºýJÀ´`¦rÃi3W ?pÌwa õZ&a saºlmuÎŽ‰¤ªæ³²¾/½ûºKª ë¤n–û‹ìxÿãf;ZU•açdJkþoú{\w¢uq¨‡ Þ·Œü· Žÿ¸›ý•¡ “¼—x+Š ×— Ç¡ R–)‡Ï”^£‹ þEŽÝ‹—¨p¦’’ ‚‰ ᕘ’ÌŽ“€±{£•X¬ 2²C³ µø±u› \‘ÿ›ú#S”ú-+”Õ¦®„´^¶µo¥ φøb1X”e}ýœÿ ¶ÿ ³ÿ¯¢ ‹Wx¬x”‚ ‰ÿS–ÿ Dþß™ÿ´™<¤ ßµY»P¹Ì·-¶¹ ¾E¿h¿–¾T¹µ|¬\¡–¥V´ ¶f¶Ü´º³¾° Ú­ÿ g¤ÿ \šÿ '{ÕP ïuK ïLïžEòîDõhJÿ÷ôPöROõ°Q÷ÀTôpUíWêòZêÅYê‚Wè{Vç(Wç`Wç’UæÍUæ²Wè®XëàWêìVè§VèTUçíUçðVèVéiWé…YèWçVWèöVèæUèÄUèUèVçmVçÇVçÒVæfUè‘Té¨TêhSëÃTë¶Vî Oñ:Dò©@ðöEòLEð]BîGòÓLô^LóžOð PíéQìRPíûMòJHôpGóšJó,KþõïRÿôåRðºRí:Rë[RëÓQëTPê×Ré[RçsSé@TëÛUêUéMVêVXì4ZìYîÂYðåZð YîUë»PèåQêêVíZïYïPRì_Lí·Mó'Pð¨Víf]ñÌ]ô¢^ôFcõÈrÿý@“ Jºÿe¾ýk²ÿŠœþâþP†þðÿi„‰ B‡…€ºp |À}¨²0³µ¶¸µô£ ¶ŽMˆþ¦ü ×­©¯Y¶}º»|¸¬¡ý¨{þû\Qeÿ¼‚üxŸÿ ,·ÿª·ÿʱÿr›†{Df”og…ÿ(Ÿý ¥¥þ ”ÿ½á¡ ±M·©·™³ëªè§,³×¾`¿ؽ ·>²c© îªwº¹Ô¸à·¶¦µ–¯,¢ ý˜ ZyHSômUíªTíÈGò¨BóªGõ›PõÅPöÔQÿùRöÕUî?Wì4Yê7YèXçXç?Xç$VåÔUä¨Uä¼VéðXíAVë”VèºVè†VéyVç.UèOVì VëÏVèâUæMVèÑVé›Vé9UçUæzVçõXè>VæÇVåžUç÷TéƒSê±TêwSêSíãPñ$IóCððDðÁDïŸAîÛFñóLô¢Nÿõ`OñRíPêOëØNðJôÛGóÁEñÉJôéPÿõ\Qÿô9Rî'SëTêMQê:Ré|SéISéëSë·TïºUïˆUìdVëŸYî¢Zî4ZíDXíÛZíVXìÐUé¯SèþTéÎXí’[ïûYíµUëÞZìÄUñ@NïWîP^ð1^òÇ`óÕiöjsøíˆI¨ ý¾ÿr¶ò¨ šþbŠÿn}|±wÂuü†.Wˆ9trWdui:fþzjÿ9~þ ,{lŽý Óý«×®ÿ: ýð—ü>’þH†ÿ wr!dhvx{ £| `oqÜkaW\Ô^™` rnýä‘ÿ̲ÿUºÿ³±ɨÆþ3’ÿ/þ¦|d •`Bwox Êœÿ$±þ -¾þ®ÿu£t†#-iÎROQQQU*\ ðax_ cÉiýosvT~ìˆo "­“·«E£l›æ—ÀŽszÀ_ @[8olìmÿ‰zÿ9žÿ,œý[¦þÒ­ §Q õ¥Ø©h±µþi¿ÿ@µ±¯¤²3¬Žœí“~ˆl… —,ªb‰•‘ÿìŸþØ«ä­~¡LŽDœ(ž›Šš•Œ*| SŒò§ y³ñ³¿¶$µù£ Œ‰ƒ™c¦ß­а¨µô¹ü¼™¼ίÿ_Šÿ÷bcs~Ÿ º6¼Í»ÿ»©؇ˆe`Æ&¢ý ¸ þpŽOžÿ »°¼¶@µ_®Á¦åž¯¥E¹™¼¯ºcµY°Y§aŸÛª:ºH»íºW¹Á¹Ϲز\  sŒ!j àU÷ß\îCZíÜJò„Að•Gð´RðHRðŽQó…Sò.UîWíXê9XåfXäXæIWæUåUåˆUå¬Vé²Xí—VëUçÝWèWéõVçgVèGVì„VìÈVèÊVæbVæGVçUæTä¦T ä!VæÕXèvVçôWå-Væ,TèíSêèTë'Sí´Sñ OôíKôCî'Cï CñÁ?îãBïøKô‚Oþö–Nò*Pí£OëOì˜Nî”Lô¸Jõ$GòMLó›Oÿö¦Oþ÷RïRêÑRé¿QéQè´SèTéìTìãTî_UïVíWì’YíÇYî­Zî|YîÜ[î|Zë~Wé‹Wè/Yé¸YêV^ïX]ðƒ\ïÙpòaïªNí–Xî ]îÿ]ñôcó¾qÿök}ùF€”˜ÿ Þ´,´N¥ðžÿ ’ÿ !„ YyFm‰kŸ ˜ b¢ 9“ 9„Ÿs™vCvû ×uþ̆þ©¡þ ë™ýL™ü©›û¢«±ÿÄ«ýØ¥ü ¡ý c‘þ RueoWˆÿõ•þÿ©nÍipåoþènÿ›kÏlve2x†ÿjµC±2£œÿu–_™ÿ…ÿ!zSg þl|r]“³¡ÿ |°ÿ Ÿþ{‘$¬(šq1XÆTUTX BY !X ðbìdf;j‰t¥vy‰›§dž œÀž”ÿ‰MjðoŒÊ{ÉuS|½¥;®þ´þ'µβ(© ó© ©î®f±§Î NÌö·Nµl¶!¨÷›N‰ g“Q§^–t£o¨Ÿ­,«O¡#“)•@ ®¡¶¤c¥+“Ñ| v‰ª¨ ô·á¶]¶ô±Áž ãŠËá£ô®ë²…´Ô·þºн»¤°8’q'm€lŸ¡»«À`¾`µšBu‚c噞ÿ }– ž‡7?›ÿ -®´Ä´}°Õ© Т ¶¥=µa·šµN²æ¯œ¦øL¡ ±/º}½»Ô»|¼µú  ̃f` ÿaVõƒ\î·Zï8LôwBòøHïËRìTêSìUîWíÝXì#WêrWæFWäqVãîUäµTåiUå&TæTé%VîRUìÒVèWè3WçÆWç VèþWê®XëÙXéWç`Wæ«Wç¼Uæ¹T ãS ãþVæ;WèÌWèÔVæ•Væ¾UèóUégSìpRí×Sð½Põ0Iô¹BïŠBðrDòAïRDïIóˆMÿõ™Nò{OížOëÇPì°PíLòÞKö Hó©LòòNÿö½Nþ÷ePÿñtRì$PêuQéWQçÇRææUç7TêYSìhTírVìUWíqXî´Yï ZðÓ[ñŽ]ÿñ1[ì×ZéZé¶]ê©ZéŽ\î`^ÿòu`ÿóÄhò`ïíSïYïÊ^ñÃ`ôAgõýwþø9…þý¡„ý•þ "¯ l´  7˜ÿ œ˜þ j—‡ °|Ek ×zô•¢¯ÿ &§ÿ¡œ L”ÿ Œü¼Œý6“ý ¨ü d¦û5£ýÖþ Í © ­þ§¬ý‚£þ á‘ÿ ¸uZþ¨ ý õªýÇ ÿ*} ‡h¦mxqþzs)jƒl g©iqƒs¤§­£›Æ—š››ÿÝ”ÿ¿{=k}fþ}¦‡I’—Ï‹o$jt&wo¥[æYðW·XQW S Qçcufÿî^eWhØlõÒ”°Ý›ÁšR%¡0œþŸ‹1yÝ€Œù‹ÿµ…ÿê‚çši­¿±„²¶³g²y°õ«±¨ ¦¨ ÜÆçÑž»;·±·±a«~ž p–¤’ßþ£®¬¶¨Ò¥¬¥1¡–—–× Ó¥I«a¬ š Ö‰3ª ¹Ÿ·L´o® ²ž x‰+Œ™¤y°/µT¸^ºO»ô¼»#¯þ—ãPîüPëåQëÜQîmLò IóNIñ|Mñ!MõjNÿö[PÿòVQïïPìDQêœRèYSæ¿UçTè>SêwTìçUìgVíWïoYñ9ZñgZò¨]ñ\íÀ[é^ìH\ëmZêYí¨Zï]òz\òº[ònXó\ñ”^òªbö£gõ=rÿ÷<‚ýþïüz›ü |¯þ Ͳ g¡ 3” ”ý §¨þ¡ Q“j‚z„ª’ Æ«ÿº«þ ó¬X§ C«ÿt¡ý[ŸýdŸý Õ­ü½¬ý Ѝÿ »• MŽ 8Š ]œÿß«ÿ]¨ ˜ IŠ Ç—ý•®þ~°ÿ A§ø“ r+fHjkh°b[kkjÏbÙj’Ž[¦¦†žM™›ñ£z¤ª”‚Åt {ç}ú|j{œvÙt Ïjëe­X ëXÏWïZYX ÛQ$Wulõqºa”`àh3l¶ÿ’‹œŸ4—¦ £V˜p‘­Œ‘‚§Ž!”·¡V¨|®A³¤¶`¸š°$¨¦(µu輡¹F¹´µ̯#©1ž_)©j®¦žŸ T£Ž›z—mœ±£]«8«ûœcƒ £ˆ¤ ë´ô³«¯Ó« \œ cˆqŠ˜ Ç­^´]¸ÔºÚ¼¼‘»ȶC£é‰Bxˆ~——9·ÃWÁP¹È© 2–rƒ> G§ÿ  ý üþ~¥–««rªî¢³ÿ³ظÁ¸¨³ã° ⯠® ¦™ Ú {•H§ Ó³l¶´œ·š° ±† ûY]ø—JòoFñ\EõÚBò>Fï)Pì¾SéSè{Uê²Vê¿XêWêÄWëïWê6Xê"XêgVçgUæpUçSé–TìUê;TçíVä÷W ä„Wæ^Xé/YëzYêCXè´VçiVè„Wë”XêWèWèVè¯Wé’Vè‰VèUè¿UêjUì±SìkRëõRí†QñcKñiCïZCðEñDðçEñÊHñ LïËNîýPî)QëÙRëÍQð¶Nó5KòoKð Mñ"LôüOó2QðùQîÞPíÒQêoRè9SçTèSéSêõTìUîUï Wð%Yò¦ZòäYðüYîÉYëáYéF[ìÚZìWëíYí:Yîƒ[ï›\ñf[ôËZô«\ñ•]ð®`ô`ò¤bóçnýü‰üú‹¬ûd©þó¥¢—Ó’ý бü ì¹ÿ›©ß *Ÿ å™ ¢ÿ?¥ÿ ¥« 5±–² ªÿ ž¦þ £þ ¦ªÿ«³þö±” §ÆtÝ‚ ¢0±ü¥ Hžÿ ³Ÿþ‡¨ÿ¦ è¥ Ÿÿ ý“l»kÞb¶^efñn§f~avÒ˜ ¨Ý£›’œˆ¥î3§¸þ; ‰à{ÜrŽn9o 'ohm]µZ ÑW ŠVˆX¬X6Sÿ½b #uÏx¼g6\þm1v¸}߇ò“ꜩžcž¸¡ ¤š¢Í ¦›u˜„>Šy€•"b–&Bš#˜¥ȯ«¹Fºü·¦®èª-¯Aºý»íº ºü¹#ºH¶|³Ü­’§â§ ¬¦¡f¥¨R¢j›œA¡Ü©ªüž}ˆ e‡eŸ ˱N±,­«© ±› Sˆº ¢…®g´Źä»ï»O»Û¼L¹_¬•C~@xÕŽÓ¯œÀ1À€¶à£â‘!{…õ¡ÿ ¡²ý Q®ý )¤ÿ '¦)©£;¤–¯C²"¸°»Wµx® õ­ ­d¥— Š‹ÜÑŸЦ ©&« g³…· l¦¸Ês ÿ–SýCô˜AòCõÉBñWEïàMî°RêBTè•VèVèTWèâWéLXë~XìôYìOZíYXêóVèUè#Sê9Uë,TéÒUçYWäXæcYéyXêzYê(Xç¾XåWæ´Wé XëÇXëœWéfWé[Vé¼Wé~VèäUçÜTèUë`TìíRëSRìÂQïhPòÍLòVEðjCî>FðpFðäFñƒHðfLî^OîPîRìQî`Pñ%Mô‚LòÚKñªLònLõ!Oñ‰RìRë Që7Qê’SçNSç¬SéRéSêŒSìJTïßSñàWñ1XòÀZðgXïâWì‹VêqWêæZí@ZìWìÜZï6\ï^]î<]ï^ÿóf\ôU]ñ{_ðañ,`ñ[ñå^þùòwýB’û_üÙœý<Ÿ—Úþ ··ý½ÿxµé¯L²¤­›¶šÿú£ _¬_²ÿ}¯ÿ©þ» ÿ g¡ Á´"·A  Á~4{ဠœ<¸Q°º¥ 0¡þ ˜£þ e ÿÀ¤þæ¥ V h~@zþ0q—h bIo“k©a€gk…¹¤<¦gŸ—œø£?²ï´ °f¥wŸ‰¥~guSrŽoælcb#[ ÊT¥SxUœW>e ëxûtÐe[V½h‡{Vzòv à‡½—šš ÷  Å¢ £«¦Ö§£á” „‰{”! ”&ú‘%ò™#¦oµ4»º¼ß¶U°9°η-»Rº o½¾ä¾d¸Á¶ζ,¶d¥â«¨À§zªl¬>§„ ¢ ¤¥׬O¬>¢rŽy‡ |œ ‡°²­ì©§œ¯Š‰*¥˜®©´$º¼ï»¯»„¼üºÞ¶§™“ ŒI–¡¨·®·ï¬• |+vHˆM¢ÿ 0¶þ _³ÿ‹¬ ¬–§N˜"Ž‹"ë“L¦ «ˆ³“ºKµ’­ '¬ H¬{¢Ò• õ‘(‘A‚‘ œ >£ U© I± µŸ˜{ÁZ ŠC ÷o?ñ@òRCô Bò·EñöJïæPë¢TçfVæTVæ1Væ9Vè|WìøYíYíYì:XêkVêéVë+Uë/Vë|Vé§UçWç8Xè6Xë(WëªWéWæüYå+XçRXéLYëSYëUWê‚VéêVéhUè¥Vç¯Uæ[SælTéSSêJRêHSí8QñeOôÇKô×EðsBíEïNGñ¸Gñ6Iò Lð’Nï®PðxQîuQïNñÛLòŽLòóJô²Kõ×KöÉOñLRìÂSê Qê¨RèSç|Sè¶RéRéÝTêTí™Tñ;SòÇVòVWñZXïÛXîáXìÐYë;XíÂ\î'ZíeYîºZñÕ^ñ¦]ï]ï…aýó}_þõÙ_òqcñþbòdô¬eÿöeüû%m<€ $ŠŽPÓ“¡þy·ý©º~´/°+¯§¬¤x𢠦 ›ª ͯÿ6©ý þ ÿ š ô¨ þ©’£IÿZŒÿ Ö— ž¡+¹§µ¦¦ø¡ÿ Ö¢ÿ Ÿ ¶¡ýXƒm‚E…ÿ—‚ÿî}ÿ½mæwÿÂp(n5cÍv?•«¢£¼œ‰—ݦq¶¹¶º²ö­ÝŸm”9…V}pt9r,onKe=W PN*S³W¦^ ˆohi3`sQê_¨váxgn aƒš—™˜œEœ´žDŸ¦£1§!¨A¡ šˆË•·– ä’!”" 0§$¯±·¨¸é´ ²,´r¹½· й æ¾O½œ»ˆ¹c¸Bº¢´««¨Ñ©¶¬}§l¢Ǧ–¬f°ø®˧"—W  A³x¶»³-­OžPŽ)•,¦œ®{³Ĺ¢»ü»¼b½ö½t¼I·1§ï—ô˜§‘¶صa¥`‹ }nþªn .Šƒ£ ŒµÿP´‰¯+¬|¥M(`} $Ú… v i§ O¯ÿ§¶ÿï³çª í« 3ªâ  Ó— ƒšÿu–È톥“k›» ðž i’Ãt Pþ÷; ô™<ïåBòªDôCóDóŒHòŸNìSæûW ãVW äˆVäåVçEWìQZî2[í>XêoWéVëVí¥VìVê[VèïUçáVçÉVè¬VéGVëŒVë3WèÂXç¬XéÅXêßYëÇYìæXë!WèVç UçâVç½Uç»UçuUè—Tè6SéRîYPÿô¢Oÿ÷IJÿõºCð‘AîQFñ›Hò Eñ2HòKñìMðOð Oî®PîäPðMò‡Kõ‚Kÿ÷PKÿ÷"JõENòÖSï2RìÚQêSRèSç*SéiRêÑRéÛTêUìTñHUôTõPSò¯Uî…VìlYë¬\íâ]ï]ïO[ïÔYðì[ò}]ô˜]ÿó‘_þñ'`þñ÷aþò¿cÿóSjÿöòf÷`gøŒiÿølûÿ¨oþu D… [’J”T—à¤þ`·ý=¹Ô¶ˆ¯”°©³³‚« ©Ѥ @ž )¦ „«þ _¡ÿÛ›þ åž Ä— ÜŽEÿ ³žþ `¦­­Õ»€µš©£ ž 㙎[„âk²sg„ç‹ZŒ4ÿ†Ê}Ó}ãiTklA˜\¤%ŸŽ2–/¯ÚµX´1µ:­û§ —q‰¿zcwGtrSlåbéU3RU6Z "\ó[ŒYWRÿiXÐlXvªo…Ü›,Ÿr¢מÓŸÆ¿ž)£Y¨M©e¤—±›à—¯!†‘"¨–š9 +­\¸¦·ì´Kµ·T· ǹ #»»T½«½Q¹Ö»ù¢À«©„¦r¥X£Ÿ›Nœª¨±/´3´-²Û¨¢dªž·µºc¸´£Æ“ʘ.¥¬ú´²º-¼¹½<½¯¾½„»ŠºÙ®P›jž°ù¼G¼²¬} –mÿ4mõˆª æ³ÿ ݲ Ÿ®ˆ®‘ª;‘&)v %=x ì’ ¡ Y©ÿ—²þJ²̬ >¯ ­ ᤾Ÿ3žÿš L»„n…´Œ„“» òŽc~aˆC÷Ø;ð¡Cò°Fó8AòëCòfFòºKíbQçT ãÒW â'WãúVå·Wë#Zî¨[í9Yê+WèîVéVë¶VëòVérUç£T åUåœUèTè*UëjUì³UéÇWéÝXëúXìPYíŠYîúXëßUçÃVåZVåŸWç=VéˆUèUçTçUSéŒSíWPÿó±OÿõoKôHDð˜AîÊHòIó)EñIHñŽLñ3MðýNï•Pí QìPîÜOòGNÿ÷Lÿ÷ÇKÿöJÿô.NójQñœRï0RìƒRèSç SèSê(Sé*SébUëVïÏWòTóSò¢SíœUêÆXëøZíP\ïÉ\ïÜ\ðRZñ\ôi^þõ=^ýö‡^ýõ_ð`ðbdÿóãnÿùYiûŽiû‚k÷{ü1wúó|y‹þ 8žþ ¤¤•§߯ÿp¸ÿÔ¸Ú¸§´e·ã¸ê¸E³ð­ͤ –T ­§- ™œý«˜ ŠˆÿJÿ ï —«W¶h¼¶°¬Ö¦z (ŽáxwfU¼\¹t싚`”þŒšýÛ4®~[}éuóˆ„c£·‘|?¥*ªq­å³K³Œ°=¦A›~Š\ŒtZv#rEhß[ kR ÊS ¼ZÿYQZ­Wÿ [ ][c ~h xy ŒV©}®4¯²¨1¦ëª› Ÿ¥1­¬´©¾¥›œ"áŠ$•‘ј)¡«Ķç¹î¹ ·Q¹ü»4»Ø»pºa»K»y¼Dºv¤û¬©©¤úžà’µŠ£–r§˯þ²£µ µO®qªÙ±™¹u»uºs¸i«Ýž*Ÿ ¦‰¬_´…¹ؽ9¿¿ ¾)½Eº_µ ¨~š&¥e»Àÿ­¿$±â”tQsü”þÒ® d³ÿ n° $¬ë¯ì…“ ów %3p öˆBœ ¤þ-¬þs°ÿ÷°…³p² ö°P­×£ÿ#™ 芾{,vez v‚“‚™ÿ =’­€lSù>î¥BðBñ€@ðïAò™Dñ;IîŒOëR å¡ÿ±¢«™ÿqÿŽZÁRWrVþ í_B`»`™` "l ìi”wýÁu ý›°“¿^¾R»ªµS«Ò¢˜{›U¡ª¬W«ã©¤pž¡”F ºšâ®L»†¹¹¸ƒ½:½¢½»¢·@±R¦g¨¦‹­ò¨P°/¬g¦eŸu’f“4 n¬s±γŸ´²±t±¯·»¼;»€»d¸­È©i¬O²2µá·Ûº¼Í¿K¿ž½Ÿ¹õ²§ž¾Š"—™¶F¿Yº¯Ošq€{‘b§ {¶ ϸεy°¨³“ ï} #™u #Ð{ ½€úˆ·’ÿ ?ÿ Œ«þ¸D¶Õ¯ô¨ 6Ÿ ±š H#y(i÷d Ñd €fLnÂ{ëyR_ô“Sð-Jõ@ñ?îAî5@íüBî‹KïuNë•QéäTèAVéXíXñ¬SòƒK÷°Bó°@îçCïCïrFñ;JómLò”Pñ RïFVïÁYð]Xò'WóÅWñ¢VðJVîVë“Zé ]èXå7TçLUì8Ví¨Vê>VêVìTTîÃTì§Wé;Vç¯WéÁXêÛYêWêáWèUæåUèKVè\[é$aì”dî)^íãWíDQïPOó[KôEGñ/BïóEð¥Hð|Fí/Gë(Nê¦Rê¶RëaRéåQæDQèwRîNPñ4Oó+MóLMñ1Nï×Oí:Qì©Rê$RçgTèpUé…Të-TîÛTñ3RóËTðUî0RïûQð™QíäWë:Wê.Vì‚VîiXïXïÖYð‡[ó]ÿõx\ô›_þö‡cþü&kýXoýùU~ûÿwŠüDšû þ¦û u®þİ㪪£ÿ£¢a§·¯8®M¤V™•—× Ȩµd½½ª°Ȭ/¤(¢ÝŽôx Ýq ?‹ØžÌÿ¾Ÿþ wªÿ @«ÿ–¯þ+­þ 3³û²ÿT¸ë»t¼j½»· «sÿµ˜k¢Ьâ¯u³L³)´]´:®ª ›ŠN„a€~”–£#®·"[®Œ© E¢V—6Ža¾~$wðl\m9Ž[ˆý/€þv÷xÿ ýÅ’ÿ#;žX ³µ O½½k½\¼xºù­ÕœÁ•(™TŸ¤¦X£@—ߘÉ›3™–µ“Í8¬T·â¹ ²î´ µWµÀ±ϱU±ƤÄ {ž\¢ܪ÷¹£¹™§x™%—Yž6©ò¼¿Â%¼>¹Ä»$µR­ø­ °ó¶’·#µC²G«ü© 5« {¯ å´^·غ%¼ ½•¾Ë¿ûä´:¥o”+—€¯9À´ºP§;Œ¸{ ¹‰ £µظƒ¹›·°¤_Žw"”n&™s & w!V~Þë… æžƒ´ѹ%³B¨ØŸn• Ñ’¬Ÿÿ¶ÿX¡3d &G œI÷6OöSóõTñ0RóúNöìHóÓCîèDíFEðÊGòöJõ¡MöúPõßRõBYòo[ò£Xó3Wÿõ-UõÁUònVïÙWë¼YèÐ[ç“Xç TéÑVîRXïƒYì®VéUé­Uì¼UícWëGWé½XèdXè—XéWéÂWé›Wé=TéTé„Yê¹_ìÛlñkòRbñÉWðêPò\IóÛFñ§Dñ±FñIñ HïöJíNëðTêLSê>RéQåoQçbQí!Pð¨PònNóÿNòqOðéOíòPë?QëôSé¸SçÙUèîUê´Vë¾VîRñ›Uî,WëWì­Wí5SêdTèUUê)VìÙVíCXï†[ñ [ñ \ò‹\óû^ÿô4_þõçgÿûÞý¦†ú{‡úhŽüOšü ¡û ¿¨ý p®ÿ±­ (¢ ®¢ 9©³ö±¢.e8œJ¥šª¸±·m±¨‘–Sš‡bjDmÖ“ "«þ ø¤ –˜ ÷¡ ¤î¤ÿ vž™¢þè¤0¯‘¹‚¿ÀŠ¿½lµ½©Ú {G£¥!«7²Oµ¡¶αÿ ƒ® J¥ Ý“…‰ŠŽŽ­ž® Ý£3¯ §ñ¥©Œýz íp ]r…uÙ‚’´®±AžþŒþj™ F•ý ÁŸý ‚ž÷¬O¨>¶4»x»w»»…ºl¯§™‡šFŸ8Ÿ- a y˜R—CœšášT˜©š³Ÿ°«´U±é±°²¶´>¯¦¯×¶y²*´ɲ ´'£´¸‹¢Œ‹’›žªÝĨÒËúÌÃØ4Ì®j¢"ॠ°1¶i³—¬„¨ ¢§ Ũ ¿¬ ;±.µ:¸ż*¾¾x½9ºW³ö§y”ž¬§-¿½­«©ç J‘ŬÚº¸S¹¹³³K§Ï—<…&x%ûo &p #vhv²~èšþµ³ÿ¹º‚³<§Ÿî–†•M«þ0¹ý7”y` ¡A üFò¸PóÛMïõMíQð¿RñOíåIébFìsIòáKôGMö NöìOö“RÿöYô\ó‰Wõ Tÿ÷ÛRõÎRòñVîäXêZço[èäWèÐTé¼Wï•]ò¡`ï%WèUæWéFWì¿Wí¹WêüXéóXéÍXè¾XèWéµVëöSíTí’UìþWëó]í(`ï6cñ©aÿòpXòMñSGñFDòµDòËHòÖGðÊGì‹Nê“TêXUê QêÆQéQê”QíOïÅPñœOò.Nò@Oð:OíïPëQëTénTæÅUæ5Wè9WèOVêîTíãVìÆXëÌZìÏZì½VèRåkSèXUëÝWí"Xï[Zñï]ÿò<]ñ]òñ_ÿó–^õXmÿþû}šúÔ”ú¬“ü Çšü ™ý S¤ü ¬¯ýJ°ÿ ¥ µ¥ ªÀµE¸À«y“]FšO¥•§VªC®{«÷ŸK mƒ xq Qt ñ•ÿ è®þ Ù¢ <„ù…³ƒ Q‡$ •þ¥Öºÿ¾NÀξR·Ô°ºªPŸÀ˜T™š—¡÷±¥²þ®²þ c¬ÿ _« ®™˜†tšs£E³ ªù¦©£V¦ÿ'“Ip¼` ×U †ZU‚ÿh†° $¨8¼g´ >žžšÿ )£þ §ü «þ k§&«‹¨¦²n·ж"¹θ!·ʳܧü§w¤w£1žd ¢ŸZàJŸR››‡šå—Ÿî¥å®)²a²³2°~±+´ζ¯¶¸ñ·­‘¸£øªn™…e‡—#¦fÂ+Ó ¸ËeÑ7ã±Ô®4"× ¦­~µN±È©Ô¥ ‚§ Á«ç¯³²²9³¡º¾¼½Ùºù¸P´©²•l‹1›~µ>½C¯c•‡Øš È´»¹§ºØ»8·í¯<¢L—‚‹$^w *ñl %¦m šnÎ|˜ÿ¼³¼û²å¥æž »–è”ôšë‘jlþRðC ö†Oð[ô›OïèHëAPí~SíœRéßOé›NïïSõ QøPNÿ÷'Nþ÷¶Nÿ÷ˆPþ÷åUô˜XòGUõšSÿ÷1QôƒRð„WîHXé¾[éK]ëûXèEUéBYï*_ÿò±`ï5Xé›ñ˜ £ #§ ߬Ü®_°ú¬K®ø²ɵ¬¸Ǻû¼€¼_¹¦»þµP¥!œ c›(¥ §ü¤w¦u£©¢h©”<– è› И ¶£­©v°W¯¦°×®K°àµ=²õ² ´¨ņᜬºª«—![–°™q-¢J¥¹¨š©¨B§¦Í«²]±Ȭ¨#§Š®q¸¼ÎÜÚñÃŽ®Þµ6¼\ºó¸.¶5±I©ß•‰|J;š#©ù§+š^™ ª»Ü¿A»I¼u½K¼ç»µ´Y²žö„Òo l vöS­›¸ž¨ ýŸ Û–ØŽ `… u\ ³K ÷uLî‡÷Û´þøÑÿñÐNïÊPð@VêGUééWë3aòÕlú™]ùLNÿù8LÿöÄOôNôUOÿõìSÿõüSôƒSÿóôUòÍ[ðàjï$féQ]ç£\é]ë„bïÙgþòƒ]ï4VìHUè¦UæÓVçÚWèÚWèVWëUXîsWí½Xë'Wê»Wé¼Uê–Uî/Uñ]Uî Uê‡UëKTìÛTëESíNñ€LóbJñÉEðzBïCFñÌHñ¶IïöNíëRë‰SîSò»Pó÷OñÉOìuNë¿NïÕMòÐOòNðtNî}NìCQêRæ}Tå…UåËUå–VçUéñTêVí}Zñ6]þô¸]þóyZñäXðÏVñ2Wò­WójWñ_WðîZðUZò ]ÿôf_ÿõefÿøÿqÿü¬Œþ)¡ü g¬ý«ÿ@«ÿX¥ý«¨þ­ÿ^®ë°Öµ ¸¶5®‹©ײ¹ÔºÛº¯§{°–½àÀ¹Ú¡ÿ½‹ ѵ~Q¦þ `½üT®þ¼lù|ç’ÿ>‡^ €_ ¤o ö‹ É¢ §œ³Y« à§q§ί£©•-} ²jöu°m€¦–ÿ šžü ì›ÿt…°˜ºyÀ[¾Ó»Ŷ¢°¹¢ N“ ƒªu\~ÿ’}¹Œþ»a¹¹‡²¨ gŸÿë¥{¦”¨ Ϋ9±®:±³¦¸ݹȽd½ؽ‘»JºG¼§§zŠ!FšƦâ§U¦ð£fš? ”• ¡ {¡ £ЦÁªb«©ö§¥l©íÇ© ÜŸ+‘¢ ®q¯$¢ú›Ÿ ¡Y¡™¢7£â§ª ª`ª_¬<°œµ®°¥Í¥µªn­Ô¶!ÌÅÙÂU®B´C»½»7·Š´´±ª P”"û|ízô‡|–J¢СØ¢®°†¼H¾†»Ù¼M¾¾S»¶I¶8¹Õ¯`“@y`n ôq x R—|§ ݬ Ä« °¥S˜»‹ÿ`‚þ ÷}r9_ òTé_kïK‚òžcï‚GôÐOóWì+WêYXëx`ïfõ¨Wö÷J÷öLÿöÓOÿô)NÿôÂQý÷¼#¶nµ·¹âµÿšš}on Kp nx à†iœã´»D® ›EŠþdýãþæˆÒ€øøeñ‘SñO ñ´F ôÁBóMò½Vì@[êádíÒeï¹`ð TôKøMÿùˆPþø‚Pýö-PüøRüûSýúžTþ÷8Vóg[ñNcñ»fîCcíì[é/Zé¯[ð\ÿ÷ìZÿö¶Tó-TìVçãWè²XêãWê¿VêÎVéVèfVèsVéÙWéÌXé•WëpUíZVì VéëUç¶VçTçôSê¥Mð×JóˆKð|Ið›Fñ¬Ió(JðgJïôMìFQé¤SéTë QíøQí¸Sí,Qï%PòOÿöNõGNñ}KñÆOóQíSê‡TêÙSêÔTêzTíÌUðãWñYò¶[ñE\ï‡[îBZíXï‚UñCUÿõVXýù1WÿöÃYñã^ÿñb\ñ^óaõ­e÷Qmÿúôwÿp}ÿ ÔŒüÍšý »¨ V³Á¹”µ'±¤­Hµ-º–¼È»2¼é¾G¾“¸̬2— Õt1|ü_ª¬,ºFºÒ§A›–ÿq•l‘·r'u%~É•ÿ •ÿuXnaf -a ~r+~ñ}:y-‰yaºý"Îù.!ËþÅ \–ÁrÇb ¢\b d‰mOjC‚› _¸Ýà Àã½ðº²E¦Êžþ8Ÿÿ ô¤p¤ñºé¾½¿•»ø¶t²³®î­ ̧ À¢ ®¢ ¼ª ¥´[¼6¼‚½ºë¾HÀÿ¹ÁÓ¹ʤP€—u¥C¨Ц‚›¿‘* „’ žFª 6ª Mª $ª '© ǰ×¶n²7¯©¦d¥ £‚˜H—¨»°é²»­)¨Œ¦˜¨­(¬­«5¬Ë®ý¯<°o´_·m¶©˜ù—¸¦Û¯…¯´t¸J´¥±2³Ѻºi·´O®£š” ŒÊ#€¨‡ ¬¤µ‰¶ž¹²» »8½‚¿‰ÀíÁð½ä·d´Ǹ'³—VzSp Gw ‚CŽÀ£«¹hÀ×´ýž ^þ ؈ý€‰þÅ“ÿÿ’ÿþ&ý]÷QG óÝ< ð EòlOðVWë ^éôjígît]î)Yñ Rö—OúÃQþúrNþøPüù›PüúêQÿùËRöãVÿõÿbùnsùjyÿ÷{xþùôcómY ëFUîËSõPNÿ÷ÙOõÓSîYWè:XèaYésYêKWê¦Wé6Vè“VçúWèXêpXê_WëVìvVëÿVé·UçËVåjUäkTè¸OïKòåKïJî™HïœJðJðÓKïMí\OêÌQçUSè²Sê1Që»SîRñ½Pó_Pÿö·NõNñ—Lñ,OòÎRïLTíeTí Sî©TíTïYUòÚYòZð:[ïÒ]ï…YíÈXìüWî¶TïÁSôˆWýüXXýù[þóû`ÿñ]î0^ñfaõ`eö~mùµxþþmûûú ¿züç“þ ¦ ”·,¹˜·CµY¸¶Ü´æµÓ·›¹æ¶·°®£F‡ 'k 1t<…›‘ ˜s«æ¶ø»à²&œ‚Sr-bák®w¶”‰¨6—|Kp'feFc®fQk3t ª¶ýÌ÷..ÄþçÇ p¯ òƒÝe<\Á\Šapi)dÍl5O¥”»HÁ»¿¬½”²ާ[†›zž2¡á£m¥0¶¿ë¿ ¼"·»¸¸¾·ë·ê±`¤ X ª¤ æ²¼ºA¼ã¼µ»UºZ½¸K¶à¶ή[¯3©°«y§ç£”˜®‘#Ž B‘ Vž ݬ m°ÿ®­ [ª y¨ ܰµL¶̵ð¬¨Xª–¬P’I£õ­A®Ì©¬¦Ʀ2§ܬӬ̫x® °4®ñ±²ù°]®§*š—ê¨w´Ÿ±°Tµ0»½Úºj¸ö¹µ·w³h¬æ¤æšƒ—ë“[†ÁŽË©þº™»¼»Á¼V½U¾}¿À㾓·ȵ´µ®>–¹|gzo‚žjš¡­¥»h¾ú³†  ²–ÿ Z“þVþ£ÿÿþxÿÿtQ÷¿@ ïDî£OìrWêÉYçÄ\è¥_ì¯[íH^íQ`ñÑ\øNTÿü(KþøiPýø7RþùKRÿø­U÷[Zÿ÷Cnþ ŒRšüÿô•üÖ}ÿþ_có^VïTò;MÿöãMÿö“Sð8VéÏWçTWçœXè¢Wè¦Wé:Vé©Wè½WètXêúYìVì}VíWìWêqWç¼VæyUæÛTéqNïõJó-KðlLïIðØIï+JðÛLðéNî«Oí›RëDRè·TèsQèGPìÆRðnPò‚QõQÿö¨MôÐLðQð RïSí/Sí}Sð“SðŽTðUó¥YòYî Zí‚Zï{WîYWí:Wî¨VîñWñêXþùWZýû]ýö¨^ðË^ì_ñqaõeö“nù¯~ÿçtûBpùÓsû µƒý ­œþ ˆ¯ĵj¸¹óºå·Þ¬ê©Ç©e­ ‚¬ ¥[swhrÄ… Å ¼‡Ô‡Õ˜¤ö±’¶è¨¬‚cc ^ZLbïw ™ M­ ›*|Ëuãj$`J_>kÆq_q|o U´ÿüºN¼¶YŽ ­r9dÿ\å] füféf:h4ÿ^²NÀHÀœ½Ô±1¦ÑV›2š¶·žé¥´±½î¾®¿ºe»«¼O¼ô½¹¶©» “ ¯g¸b¼j¾˜¾?¸¹ ¸`·³›²á´Ú²}²Õ­ú¨ ôŸA—[Gô˜ã ²ª~§ž¨ x§è¯ Ö·xº£»dµ`®¾­¸ŠŒ±”rŸ¦¾£ ¢m§2ªY¬†«mª¬5¬ Ьe­R¬t¤jŸ} O›ÿºš¥ÿ° ¬U§o¬˜ÍöáWÌ–´²´Ž´û± ¬7£(›œ—–>„Ջ먌ºÛ½v½.»ÿ¼»à»Yº†»Ô¼·³³ó±W«¹™Ƀ ûœ #£w°øºL¼•® × {— t–Bÿ´‡ÿ¶… ‡ÿÞ†þwþüç\òKNíæK êÜT èÍUç€VèGZí%]ï-nñ׈ÿùp‡ÿÿ~jÿþ^NÿùNþø;Rþù(Tÿ÷[Uõë\õßuý•U¯ýá°ü9™þ)|ÿ^ÿ÷`VñÏRó6OþöíTñ«WêmVç¬Vè¨VèòWèZWéêWéWêXê¸Xê“XëŒWì$VíyVìWéWç½VèVéMTêPïÕLôLòmMò†KóHJò™LòNMñúMî|NïøRîWSëTè¼SèPê¼QíQîPñxSóOÿôMñžRïRïqRíúTëUUîTó¨Uÿö“VþøaXÿõjYïÚYí»WîÏSíëTìdWíWîÝZð#YôâZþ÷²]þõŽ_ÿñ-_íÃ_ò¸`þ÷Øeÿ÷oÿý’†Iý ýðÿÉŒþ œý S§Ϋ›´!¼’¼ê»°±[¨Ò¤¦ü¦üœ°}Kbªq ‰ R’å‰b}Œ-Ÿÿ)£5§*¤<ƒ…` ‚W Ûa8v膊‰†æ€º† wwl__Áq^x¡p½v‚S’-¥ó± ©Q„šr:iŒaM_Cclki¦„üV«¬¿½½ï½ê°Ǥ[›#ší˜T™š“¤ªܹ›·N¿ºÒ¹o¹=¾ä¿Ô¾£°¡ÈžC¬l¶Ú»¿½@¹A¸Ú¸q´ö²>²Sµû¶ݶX·Q±‹«¨âœÿ=–Ý•‚•™˜ô›Ì¡ÿ ]§ K³Š»®½¸l­™¥ð´ C…È‚‹œ k ð¦í¬ ¬Kªj©üªýªV©›©ާq›Ã’™“N’4”0Ÿ¡¥à¡oœ¥ÁÐ ýçÌËš¯¯ βe°S«Kž+OŠÉ}·ˆ¦¡ºä¾W½\»¯ºݺ•¹Ó¶²µæ·ç¶ª³l°ø¬`¡¾Ž³†%— u¨ Ÿ¨\­•·ë¼D¯ — "Ž ì“ €¡Š ч Y†“ÿW•þÿߌÿþKsúWòQ éçT ç1TéWï•bôu{ÿøìþÿfœÿÓvÿ@Pú¨KövQö@VõDYñ_`÷žpŠ‘f² ½ÿ mª Ÿ‘ÿ ¦qÿñYò(SïYRò'TðTVê%VèýWé+UèÞUèäWé­WêHWê•Zë!Yë XêîWëÀUëžVë]WéNWè—Vé·VêiSëáQð‹KõøLóMò~Kó¬Kô‚LôcLñõKï‹NðOðÕQíÂTëPUë)RéÇRéKRêÍQì^RïQñiPðSïõSïSì²TéƒTêTñGVýú‡VüýÈVþø‘YðnWíÖWî5TìnSëeUíXXïXî…Zî#Zð#\òz^ñ†`ð˜_ó@aþöôgþøvqÿþ–ŽÿŸžý‰—þ熕ÿ ÓŸü¸¢ý{£¬¥º»C»X¹³”ªu¦ê£†™ÓvÔ[Kg ¢‚ 4† g| Ös Þ s© ©Í¥Û›õ…$ipòt‘…ùŽ£þ ó»ÿÁ¼š½Ö±Ù¢–ˆ›ÿ$—V–Мÿ?ŸÌž¶¤Ú¦ V¸8¹×¶õ¶N½ĽRÀ“³ò¨ù¡àªD²÷¶ƒ¹Ê»ë¸Ù·µ«³°c²i·~¸]ºظ"µ^²Bµ†ªw¥‰šüŽnˆVC’z‹ ï’_¢ʲÔÀn½;¬ –[¢§y‹tþ哌RŸ) ð¦Z©àª:ª6ªÛªk© M¥ Ÿñ–ÇŽ‰3‚ˆ¬›Ž£ª›‰” ãžضÏų¹õ«Ý­°‰¯§j–Ê„^}Ý}n}8‹]§€¼¸¾I½%¼=»6º¸¹´â³1µ޵û³è±¢¯^©™m9šݯ ®«2©¥­ô· ­²§“q„ Ï 1‹ …‡ k EŠ.Žÿ>œþ¼—Vyü7[ìZS æ U éfYò.fþû¸ ³ö²,µ«µæ´ù³Ÿ²²­V¡t™ £y³ X°Ï©b¤«© ª{’-„ pŽ /‹ w‰E”ÿ ˜…x|E–Ú¤[“‡wöV[ çôU æ7Tò¸bý^|ý¤ýÙŠÿV[÷îKö‹KöàP÷ ^ó¬}ùbŠš8©¶ï»Œ¸l° œ™qúÎ[îiYï7QðgPíuSëâVé«Xè*WèçWéÏYé¾_ë*bì7]ëVXëXëVWëWëÛWê3UéþVê6TëåSîPò!KôzLôEKñ–KðžMòLñìLñ@Ló¿MöÆMößOô Oó€RïÔTéÊTææTè²SêèSìhTíRì¡Të:SééUç{TçOUë9TðTõÉTõÃUñÀWìžUëóVìUí VîëYî7XïºXïBXî£Yï ZðY\ï]ñ¼_ÿóodÿõ1oþú×….‘ÿ“þ »–þ ªþ ¹ýü¨ýÿ¤þ&¢)¨°³µa¹Œ»¹Úº¯¦¦˜Ÿì—þä­v[i g^Ï] Zs«›þ ¦ÿ z¢þzœþ• ÿe§ ⤠͟ Øþ ý £† ‘‡ UX¼†jJ^)` œb>t‡v„wbsXn@b Úa Õnâl\÷]Îe åk¿kßi`k„z‰÷‘ÿ²¢ÿÂ¥þP­K–à†$‚ n±ŠoP•þ1’çw Ã`Ä‚ •þŠ—…›@œÿ¦ UÕ¡–›”ž"‚¦ m©!X® ‡´L²á¯€° ƪ¼  š U« ³a·s¹À¹M¶%µÔ¸vµθY²¡¡:ЦzZuÿ¥‹ ¨’³¼ íÕþÎ>¥Ù‘„™xFnwM‡N¨–¯ŸZ©J­Ÿ« ²ª © Á©Q§oŸÏ”*‹Ä — Ë•Q™%§ί5©  Û#µŸ&@¦"x«a²´v°pª´ˆ‡~q“m%{‡T‘¤©¸ì½Q»õ¼ò½×½*ºe´p±ö´ôµS´Y´-´Ö²P¨é¤~« 7µ þ¸»³¹§ Ÿ èœ-Œ ´‡ Û‘ *Œ ’Œÿ%šþ ~ ÿ ã_{¨Šÿ¡ ¥š¾…öóq ðjb ÷4vÉÿ`˜ý”‹ÿXYøõHóæLòS÷ bÿú ~ÿüÛ•Ê£ȸ_º7¹’´ ݬ 'šÿèwúÜbï‹[ñ‹Qó/LðcPí”SìˆWëÈXê9Wé5[éeìKkî‚bìAXê VéÌXéjWéDUéâVéVê7TìÊRî¿Oñ}Iò½LôôLóõKñ}LñMð2Lï•KñgMô$Mô÷MóHNò*OïÈSë)Vè"UçˆUè\SêÎUë Sê¹Uè'TçzTæ”Tç3TëSïÂSñèTï6Vï­WìúWê8Wë:UîzXïæZîWYïQXðrXï´YðÓ[òX]ñh]ð\_ÿó2cþöKqþÿšŒÿ %ŽI‰¢“s«ÿ é°ÿªÿ#£‡§Í­˹z¸²¸§º€½3º °½©º§§c¡dþ|ˆÿqÞ_ ¾s$“ÿ ‹ Á‘…†Ï‘Ó¦ ~±ÿ _¯þ v¡ü ùý ‰þû˜ýU˜ý_ˆ"l%tgj éxÄuh…${lƒ ~áyVlQc Ôi_s\jÜikúsZqôkg7qu}*„nŠÿ¨ˆ¶ŽrƒupY{ ‘ƒ+vÿz;vª{˜` ÁPÇ^¶xõƒa†ÉŒ¸‘› • Þ‹ã”a¢ ¨æ­ ’² _¯9¨«%¢!Ù“‰äœÜ«j¯ª«­³p²®¶>¹¹¹±¸=ª#˜5‚wÚ˜ù냖¿Òµ í¬º£0–5šv}–e½j|¿‰qûšm§­ã­ —« \ª © ¦àŽ;‡ÁŽ Vš žœ¤Ë®Ò°¥©?£^¡j¤¨`¬é´ʶ °®¬C¦Á—‹5ooy…£m›B¯l»ü¼¼¡½g¼ò¹û³é±g²Þ´Ñ´É´ì·޶N¬v§H®¹®¾¿¾í´a¡ Ε ^† |Š Œ–ÿ O’þ£ÿ © _• kuˆN° 5° ¹¦Ù ‹‘ Eœþ þV‹ÿõZú%Ió.OñCWÿùÔcýÿ§}ÿý!¡‰¶9¾Áº•¶Bªl¡ÿ>–Î~ùîeðÁUóµN÷ýKôKNñèRï%Wí|XêîXèz\è2hëþqí4gìYêåWéã]ézYéÀVéRVé=VêUëGRíìNï…JñaMôyLôEMñ£MïKîúLíÜKí¬Mð`NôqMôMðÁOíÆRìaUçßUälUæˆTé@Té£TèúUèÄUéØTè«Sç SèÃTë¸TíáTíºWîVZî:XìÅVíqWï?Yðy[ïàYî½YïXïDYðFZÿó¾\óˆ^ð?_ÿò~aýö÷iüÚ„ÿ‹Œ8„!ˆÛ‘Ö’Ó› ™eŸÕ§4¹Ÿ³ܳþ/µþ±º²«M¨Ôªò°*³S¶­ÿìKn |þ -þ.›ÿ· §‚?Œ§¡ ó® ɱÿa¥þK”þ 6ÿ * ý -¨ü–¡ÿI‰G‡Ú‰rŸÿáœÏ£•è› +ŒD~Lxp5jðvíw *|±}ey"uIp k¥jüq•ntdíh ñjlŽyrtMb’c£X4Y;M9N v[ #h s+yÊš 2­ ¸¦ ¥2•C–ý¢© !¨ jª »©ù ¥$Ý¢%=˜€Š›“>ž  –¦j©¯à¶/ºͺ5µü±+¢U”o‹V„ÌsÄ&›D™ $¥ ¬´ªc­íƒ»²¹2­¯®¬X­ ó£ʤ p£gœ!@¢(Þ¤#¤_šT•f–G– Žÿ9œÿ<¢À¦j®\º³»²ªÔ£ã›—ô‘q}Vo.p† ˆ¡.´Ÿ·tµ§ƒÊg åm ²€:ˆñŠæžšæ¤õ©©ªx¨§ Ã¥ œ5‰²w´x ã Ô¬]®ù£Œ’딥t±'³‘¯+« ˫모©›© ž؇šw yïƒB ˜¦e´i¼4½ñ½ º9·R´ʱ4±,´¶ñ¸C·ñµî± ®ï±†¶ß½&¿%¸ï¨ו ˆ w“ ͇ÿ ÷ˆÿ°žÿW£ – Žfšÿà© ͵¸¸ ¸·#±вû® µ¦ÿX‘ýqcýPù—Vÿùå^ýÿdý³pü™†Ùž ˲yº.³ X›êzÿähúÝgôVYï[Hó&L÷ÓPô&OïþOíÙQêVè9YèQYéÁ\êÕdífî2ZêdVé¼ZçnZæ³UåVèETêtTêRëtPîiMðMïLïaMï MïMMî2MìëOë9Ní÷NôïNþ÷OÿòwPïÚUë›Vç’T ä“Uæ˜Uè;TèÁTçâTç·SèœSé;Tê^TèÉSå¥Vé·Xî¹Yï“YïBUðZRñ_Sð UïbXð–Yò"XòçXñvXòÿZþö]ý÷`^ÿô`þõ1cþûEbÿYn |~yþp !£q !ìm % q &[q 2n Sn "š~!K„ø‡ü™’þ²ˆF–¼¤ª¸°b¶µ¦ù•ÿŸ…ÿ‰™ÿ +¥ýù§ý ¤šÿ˜œ§ÿ ÷¶ÿ¶µ±O ÿnŽü‡i”¥ÿ0¸ž±¾w»HÀþ2Àÿþ¿[»ƯK ÿlŒ}.‚O^z}Š“‚¨w9yXxÜy:||{1qømþ_õj ð€ÿùŠÿƒü6€þ Ñm-jÿRÿé] õj |œÿÇÿÛyþã€Ũã¿þÄÿôÀ;Áºñ¿‚¶Ë´ X© =§ Ú› F™& ¡*A¤ ¦§ž¹–Öˆà‡À†&’ÿ}™jžt§¸º­Ü«Û¥ nœG˜Ï™`~Ylâš³±U¸¥·jwé‚ íʘIœà›|ý¢ĨÀ¬[¨è¦¦¦?žVŒ)|t|³‹‹žX«å¯5§~˜õ˜Q¥¬­.¯«w¨7©†©7¥²¡@—‡¡z†¯Žÿɕު9³ª»Z¼–ºÁ¹¶Ä´² ²³.¶·Ä´²¯ ªqª"¯Ķ?»¾ùº±ª›hX‘ v™žŠ6†ÿÓýâ§ÀÿB—ÿ *£ÿ ûµV³·°q°³þ²õ±•­ ‰¨ý¦™üsþ³VÿýNXýü£\úàeûqÿý!}ÿ ⥠Ƹ˶sž¿{þ\ö‡`ñ7\ïQóTN÷±PóûPðpQï«Rì'Uë%YìYìrYël]ì¶fðu^ìUéÖVçWå`W ãVæLTêSêöRëOî¿LòNMóÉMñ¢Nï>Mï¤Lî¦Ní'OíœNï$MôÖNþöVQî-RëûUéˆVçûUæÉVæGUçTçžTç TèÂTéœRê>TìcTéËSçÓVëôZï¹]ñ€YîÇVï;SðŸTð¡Vï¾Wð7Xò»XólXò×YófXþöê]þõ,]ÿór_ÿó«aÿö_^ùÖn ̈f€er ´n !Žp !1o "¿n !l `m p %·r&ÞpCrN~Ñ}WŠbžO§®^´Ý´†¯„š çˆ #‹ UŸ m¦ÿ¯¡ÿ k :¬Ë»»¤·̨Ë•á‰a‘Áš‘«»¾¾ܾ;¼N³”®¢&˜Yü…-‚‹·-„û«•±š{ƒ èlHoKx{î~ |¨|Ovýnm ¡•ýr•ü ΚýôŽŽûkÿfvþ my¥ÿd¦Š€JŽ%Ÿÿì¿ÿ%Æ’ÁÖÀG½š¾Aº1»£½ÊÄÿ2  ¡¡#ò¡)Ô£ žh”½‹è}úvöxÎ|\ˆ‘iŸx²l²¼©I¥ Ù¤› ¢›6žµ›â—@ƒ_ÖŒL¥K¸X¼/ÈŒX”L˜¢s«x«Œ¦‰¤=©¹«Ó§¥b¨e£’â…Òƒž…¹y î¬®‘« ­°¬¯Ò¬¯¨»§i©k©¡ǘä’ÐŒ¼&–jžÿ-£«§k¬ù²¸ܺÞ¹ ¸™¶¸±ÿ®á®”¯Ÿ³„µ”±!«b¥”¥)¬y³j·§¼Áº ¬,¤]¡x¡ 1¢ K’s‹þúžüò¯ÿ•©½¢ÿ?¬Y¹î±̧Ó¨вö¶þµ¹²аþ £ ý™}þYþðYüþ<^ørbùþ®kÿø`}ÿ’ÿ£ À·…¹¦¡²{þr]õ$_ñöfò)Vò¤Oõ_QóoPò=OólOòhRñPVðjWííWëRZë#fðgbï·VëÛTèVçVædUèþSëÒSì\QícNïoLó™Mó|LñˆMîVLï±Lñ`Nð>NïÅNð¦OófOòåQì~SèÞUèÚUçóUæžWæUå%Tæ‡SçºTè§TëÿRíbSíTëzTê‡VítYï\\ï¿Yí"Wí¥UïéVïˆWî\Vï#Vð¹Wñ^XòíYôäYþ÷ø[ÿõÎ]óD^ÿóâbüõ¬oýýHƒý ˜þ¥Š t©«­̯°]š“í‚|‘˜™˜D˜ ð§ 뵸¹ý¹»¶m§ —电¦ µº ½Ǿ¹S­ü¦x¡ðšé”ýŠY‹ŸŒ"‚‘¦’ýŽ¢á¤~Ž ÝjÂfÄu–€O |uyìtTnhc “‚¤ÿ Q«ü š¶ü ¹« °Å”°û œ‹¾Ÿ(­geeŠ&´ÕÄÁvÀA½ξTºÛÁÀàû[èõ£ÍIJ‰¢% ¢$’nƒ¶~ýwxm{O…狦”ž¿š§œª˜ }œ·¥1¯ r¨¨l¤¹—r‡ç™CµÃÀ³† –œÿõ›¡¬s°CªO¦ݪv¬9©·©m«5¦™~oˆ³ ¡‚À’„¢ «Qµø½,ºí´L­~©ˆ¨¯©¨¨› §•3È‘`˜ô¢Ê«î³)³Y±Dzž¶)·ɸk·•´ü®£ªñ«h­z¯â±!¯9¬/§ ¦-¬±A´ä¼»˜°ܬG®ó¯³¨±—†ŽÊÿG®å²ÿ¬Ö±1¹³¨z§Õ¶¼©¼k¸жǦÿ ?‚ ™^Xý`÷‘dõóiúøF|ýŸ•§¬ ·º(·“™qsû)]ò(YðrYïŽTñ´PôRRõRöSöQö4P÷)TôØUîöVìDXëþ_í^^îÅWížSë½Sê¸Së¨RîÉPï¤Oï»NïþLñLñMð¥Mï$MíM¿C¼ÛÁíìÜé bã &µ„£õ§6§]øŒÙ‘‰¨ú—*¢˜ÎŽP•ƒo‰,… þ £kÅM¦þ w“–›@ŸüŒ”  G·SÀR• ÿ<¢Ÿ¡£ªÛ©§§†ª9«&«ëÍ®̱d©ÁÈ”¾ˆ ‘… ÈŽ ^˜ o¡1®èº­¹ˆ²È«ȨȨk©ï©d£?—ùº’~›ø§o°á¶à¸}µ’´:·*¸˸ç·D³Ä­ ©³ªe«ªâ«l¬\­¹ªé©F¯´±r±O¹å¾]µc­dz†µÜ©µ–ÈŽ1š¨βɳ¬¶=º]·£±³± º±¿¿¬º)²¸¤ ´‡ ,e5Yýbö{jó!nöûê|ÿý]› a¶Ž‡µd”­sû(gòƒ[ï!Oï*Mï‘OòRö’Zö=a÷xY÷7RÿúdTöÜVñ8WïÚYíý[ì¼Zí€UîÞPîiOì™NìjOðˆNôMóùMòPLô=LòçNð;Nð²MîÂNí'NðMOñ‹Oð÷Pñ´SñITìeTè­Uç Wè|WèCTæÍS äÆTä¾Tæ¯SçÏSéÍRíÀQïõRðSðVUò¬Wó›Zóe\ð¿XílVïœVò€VòaWñÉXð)XïçYò•ZôZô°\ÿô\ÿôŽ^þõwcþø`jùî„ý}¥þ l¯ÿÊ–ÿ«ˆ U‰J}ëo "Ûn Ts ,s"@rëruÞwÿ®yï„+Ž _¤ްÿ³þå¦ÿ žÿ œ¨þL¯þǢܚÿVû!žŽ  ‰†šúˆy“c§E¼ÀÃn·7¢ П‘¬S¯h®ø­ ªp®F±<³²»ƒ»ô¸Ô¨¥¬Æ´š¼*²±±«è©=™§Œç‡ s‘×Á“ ú‡r—` ^ ¿v™¢y°ÿ Õ°ÿ4´)¸E»}Àÿ3·ü´2¨€’¥qÝo9‚”îª ° D¾üÀX¿ ¼Î«ÉÈø´$¬M°ø±¦Œ–[›3™˜¤\¦ű™ŸЋ…yéS‹ þ‚D|… %a…„.”¢‰¤o™ O¯ Ú»8¿'¢:§P©§9©¬ï¥2žç£:§­ · ½{¶Û¨¸c–¥“² Œ )Œ Ï‘ H—:¦`¶|½!ºº­Ÿ¤ý¤¨¹¬ªÊ¢‡–»’Ù—A¡|¨”¯È·r¶Ü´äµܸùº·³k­ª\«¨˨ ©À¬ú­|¨+§l®‡¯{ª³«¾½·l­u²„²â¦]— ]ÿ6›ÿZª0±Ô³ã¹l½K¼Þ¸ü·¹×»\»¸¶‹¬w O~ ¬h hü³mújoúþLvûúø‡þþ­¡ ¹û¾N·ž Ò„¼xù¦hõoLï÷Ií[ô‹[ÿõÑ\ÿõS^ÿõ†bþ÷Ñlûû„€þ¤ÿ °W˜ A “œÿê˜e{´m Ñl "q ÷o rRwÿî L‡ÿJ”J›ÿ Òªÿ|°þË´ýסÿ Ò ¦œÿg©ÿ´ϨM¢ÿ è–°­Ȥ•†çœQ²7¿L½r®Ϋé±²±a­§a£8§­«µ ºÄ»Ø»Ÿ¶f´ó¸ª» ¶ñ³ç´w²á¨ ž e$¨Ô¦ ƨ «¡ #pAg Ypô “§-²ÿ ²¨ D­ Ç·^½ÿš½ç¹̱­“Öwgi¬mK~ ‚ï• ‘¬a´œ¼w´f¸-¹ íºÔ¸ž¶®¹}¶{±&Ÿ—›¢l¨!‡ªT±A¤G—ŒV ” ÇŒÅu|meHapx›•°¢Q©¯È»’¼#º’§®¶¯¬>¬̰¥Ï•Ê–E¢n¶mÔú&±Úù*ó½ 8¡—” ’€‘àŒ „Š &>–;Ÿü¯‡Ã |Ų°Æ¢®Ÿœ¦£®c±­Ë¢D—Ç”ý–[™"²£!ñ³·C³Ô²·µ¼¹F·¯þ©Ô¨v¥ø¢¤§ª¥°æ­Ÿ¦ž¥´ª­©]¢ô©¿¸¦¶q®e®ª=¡ }” _Œÿ|ÿ;­[°±ú¯¾w¾-»Ñ·¡¶͵Ƹ·ø¬ ™ Vu j yþxý›uþÿý~ÿüé“ý­§ $·Yº“¹«•?„]oýOPóåI íÏK îÓSðqYðIUðÊPðgOñµTñÏ[ò1rþ÷Zzö¢oñ bíóVî KîšKìZMí¡Lî¬Lñ‹JòàIóLötNö;Mð4NîÄNïPMî«OíOðâNô1Mò(RíëTçrUä[UæúTènUèˆUæjUäwTämUæåTçNSç™Tè–TëlRîFSòUô¶Zñ¦bþóq]î†WèaTçŸVëwWðŽXÿôeXó3Xð!Yð+Zòr[ÿõø\þ÷”\þö~^ôbÿöpùý\‡üq¤ÿÓ­fœÿ÷šþ§ʱÉ™a‚_t"®ytw Ñ€ÿ‡ÿ x’þʤþÏ¥þ ã§ÿ F©þ¦ÿ l˜˜yW Zšÿ u²ÿ V»Y± C° õ¬Jµþ;¬ÿõ—•…L‰’ŸP±f·Ý´f±@´µ]® ¤ŽÛ¡v¦ư¯·a¸Z¸n¶þº‰»±¹%º¸`¹¢¹é´(² ÷ªж-µÿ7¿¸¯½ƒ:{ò ì§übŸ¡™u¨ï®˜¶ÿÖµÿw¶q™w|Äm‰g Šq„|ê|ÏŒý”"°¨G©C·³¼f¼Nºd½¿¾·¿Å©<Ÿ_§Ö«!<¨Ô²é±¢Z“Ò’‚“ HŠ z^hwb` ÙsÇŽ˜ÿ/ž­“¼ó»¸õ§s¯ѯx­!­ë±À©¨–%”¢£²!Óû#¹Úú#1¸›w’ùð‘©”ÁBÿ9“ÿ™WœÝ£O´…¸c«+£0žˆ¥½°Tµ7µF­Ÿõ•!!Ë#S˜ À®;·c²¦®˱ ·µã¬m¡®™w”Í“†nªa²ò­é§>¦†¤‹›€•Œ«m¬¨y§£8—œŒ À‹sœï««ï®иü¼}¹Á¶½µ±³{¶˜¸ªK˜ ±zÂr X‚ýö{þ=vÿýG†üÿ%›ý`«(´ß·©º³|¡ R ÐuÌTõ\K ïºK ï@NïXPí7OíNí$NíîSñ.Zô’qþùé|ùŽqõõ_îÇTîWMîiKì MíœMí4Kì¹Iî¥HñÅKô?MôYMðŒNï¢MïÿOïçSï³VòÆP÷”OóÜSì3TæÌUãvUæ«UêITéúUèTæÞT ãjT ãdTåñTåÚUæETéTSííTõTýùÞZô^ÿò{ZìçUæBSäÚUçÁXìYñoXò¹Wî—XígXð YóÖ[þ÷ó\ÿöX^ôubôtüý­”ü •«ÿV°"¥Ç¥ÿ¬7¶@®œÿæ Žž‰þîþ ]ˆÿ žƒ|’þ ¤þ ̨þ ò þ fþP’  Š Kv   C”_ ÿ¯å½^¼·¬ÿb¤<’~ Ót’‘’¡¦ª¨>«ú«â´g± ¦Ÿ<¡ë«›°L·ì³+®ò²„¸º¸˜»»V»h¹Y·V·˜³Z³"¶ɾŒ¾a»¨ª¡¡ΔÿU… Bͤ¿Œ á}¶p|žþ c¢ý{²ÿ4£ˆSjªd¸q¡xozPv |+‹Ç–Ұ뺻˜·½¿_À*ÂÍ»x§‰ž «C¬A§#°¿¿ª›¸ˆUŒ6‹ ¡[„þ}†ÿ7'v?qŒvˆÿK“Ÿœ“ª*³ ³ Ü©r²M¯Ô­¯7³h­z%œ˦„§o´6¸Ç©w™H‘D”5—sšV–Ó‘ÿ “þ°™ÿ8›¯œ9¡O¥š¤ø£¡£©[²Å·«·Ô²Ц—«JŒ[“‰«>¶‘³ ­ñ­Ó²z±ó«Lœ‰…<Œ ‚š~§û±E¯)§A¥‚ž¥šŒÌ—Ï¢*¢Õž!šÈ–tŒÿ"Šÿ Ž ®_©\«°®,¶¼#¼·U´¹µ3´'´ñ³­¨ðš 9„zÿ µ‡ÿ }gqÿüê‡üÿh¢ý¢±þèµ\¶̹"¶´«ö›ÿ ¨€ÿë\òžSðTLñçNñ:Oï#Oï)Pï{Pð,SôÃYôÛgþô{ø@|ökô‹Vñ×NñqJîÔLîóMíBK êBIï¨FñïGó“Jó¶Mñ³OðëPñ9QðªVñ!Zõ’RøOô•SìrTææVä,VærVé)UêYSê›Té|UäŸT âST â\UäèVçUêŠSí÷Tÿõ|SüúïWþö YòØXì¾SåžUäUåaVèVí+WîwWì'WëWWî’Yò¦\ÿõ\ôÀ^ôÙ`ó’vüý9œý A²ÿ`¶¸°'®€¯s³·®Ó©ÿ Z¢þ þašü|˜ü \ŠÿÒ~ò‰ÿ 4žÿŒ¨ÿ 8ÿ Pÿ"‡m¶„ À}ŽS àœ’³ë¶¼®Õœˆ‹av½jJl&‰D”©—£œ. ž¢À±ÿcµ«Ϧ¸£¤"§æ©°Ù¦b£¥¾¯·d¾¼½¹ ¸“¹)¹È·Sµ¶÷¼&¼ÕÁ—ºµm¤pЍ‚"z¢r ùa Øqu‹8“ÿÓ©þ޲ý¨šþáwòhtrŸxe:‰ ‚óƒŸâ© q³ð¸Ý´ »j»»Å Òªt¢F›q¤žª´¨ ¬À´·’†~ø,~‹m'’šþášþ¸j{Ì‚éD’ÚŽY•˜©v£ ߥݰS®C±œµ*²ª©©¿¬¶©i¨¨˜¦9ž˜™™áœ–ÿ#”þª˜ÿšÿ½›ÿ®Ÿÿv¥<¤r¥¾«ƒ²Kµ¹¶t·t´;ªYžb”(ŠAg©=µb²å® Ù­ F®­Œªô Û’]ù˜ ߥM®p±ÚªZ¦1¡—A•¯šÕ™@”½’mˆU~ÿò„ÿ ¬ ܘ¢|©Ž®’·K¿¾#¸m³óÔ´±´ ±Wªf¢ÿ 5•þ ׆ ˆsoý÷‚ÿþÔ¥ý (·ý½·ãµÿ¸x·O°2£ÿ‰’ÿšzøådõÁMö’KóÙOðºOðpQñ¢Ró•VöŽ]ókó„õ†ôl{ õRgú;OøÂLó5MñÌMïzKî€HòÑDòQDòÕIõ OöûTðþRï¸QïOóyRùúPÿù}NöÙTîHUç_Wå3Vå(Væ UéíTë1Uê†UçÍUå`T äUå$Uè0Uê‚SíRò[Tþ÷!Wÿô[YñµXíTæ§Vå§Uç¬Té!SìóTì{UêdWêÞXîêZò„\ÿô‘]ÿó1`þõhdÿ÷Â|üžý ±ÿ²µ—µÿ¬µÿ™µÿ:²@©œ§ €¤ý 8¤ý U¡û èü „”þ[‰ÿ ¬ƒ{›ÿ±§ f¥ H—ÿ o æ…¦’ˈÿòÿ [„l•’§ ª9¤ë“p³` ”Z :gb~Ï‘ ˜Ò— ~•!)œÿ¸¦Ù°²¯¯± ­ ‘§²žÓšy”ß‘)˜¢ƒ©¢¹hº² ´ ¶ •·¤¹´]¹¿»½¹ÀX¿·l¯|’s¼m “k—dŒa”f'‹ï¡ý?°þ‹«ÿðˆnq4v÷†ýžþɹÿÿ&µóÞ ÛƒÓ£½ªÀ¯i¯D±²‘Æ ”¨þ ›¨þ ã©=އŸ9¦Þ§ ° Z‰ \!!ˆ~Ð\Oo—þ6¡þ•ÿ4²’ÿ¥žþ^›ÿ7‰±Šp  S Eœ ¬§ è®6¯õ³ú¶·µг8²0¯¬À«ª"¥û¡¥› •=™zšÿÛ™þñšÿ’™E™ÿ#ÿǦ§ ©i²é¸K¶P³€³Q³v°=§Oši1•—ª&´j³F°§® H­Ò­(­ªl¢g¡‡¨†§V¦7®F´®°ª<¨è¨ £cœ!½†”ÿÈŠÿGu­y #‡N ­–뤻®«¹1À$¾8¸ð³Á²]´ü´“²+®R¬’§ÿ»›ÿ“ N‡ «qÿ}ÿ! þ”·ÿº·¹Œ¹ä´…­ÿZ¤ÿ{”èsþÖNúHôRMðŠNïzPð’SòôYôdöÿoö†‰÷ª÷L€øhÿàRýhMøÍMö§MógKò#GóÁDò'EôÉIÿ÷OSûV^õì\ðö[ómPùLùMù“Oö§SïñUèGVæU åÉVæ4VêøWí:Xî¦VíaUëTêUé€TègTê Sì/RïUñXðŸ[ðÛYî…Vê‰TèÚUë8RíËRînQìÊTéµXêZî&[òz[ÿòæ]ÿóõaü÷îiþùï€ûjžü á©þø«ÿ0°X¶غÿr¹T°¬£¥ý ª£ý ¡ý ƒ£ý  ¢þõÿ„“ÿ5 ÿ Œ¦ N© ¯§ ÷ –ÿrŸÿÂûÕ–ýºŒ*•(Ÿ/ ø è h ÚS ;_ ‹mªtxŽ›ùŒø‚æ†!ËŠ]—ÿ[¥ °¸KµÁªg“®‚¿{[W†º•h˜¨„«‹§Ï«­ î® ³K¬ çµ¹a¼¿À¼œµ“£”xvŠpQb¸Z±kÁ}S‘6ÿ ¨|Šünv(š?½üâ÷”â ¨ 6ž¥?¢±§ ¿®ʪÙ¬ ë§ú°³ñ ǧ؃{‘&›t˜ •Õˆ…n‚¹xa\9d…ÿi’ÿ †ªý“ÿsšþ’ÿ »†q‚ƒ“ß~ ¦¤ Ó­ £²0´·}¹ͺ·)³³²}²бg¬²¨œ¢—y•šÿœÿQ ÿ[¢ÿ¸›ÿRþø”þ䣹¨^ª´¤¹Óµp°±¯°M²²±œ§¤Ÿ+£ï®“´Z´F±¢¯a­ݬɰŰ²§Ϥ§ª©Aª®ž±l²ì±L¯¯Dz1¤(}£‡‡šþ„‘þ\tsn ýƒ g’¬¡Á°Á¸€¾»€µ'²·³7¶%·8µDz©²¨´¯%¤O“ø}A}ÿ°—^²ì¼°¼gºnºޏijÿª¯ý¾¢ÿÕ‚ñVþ›KõMðOï#Oï£TñÒ\ópiøYiþù¹wþü |ûpiüìWþ¯RÿþMþûâHø°JõvIótGóqCó•GþöÚKøWþÁyýÒú‰„ý¸iý³Pý8Lù\PøSðTTêÕUèèVç”Wé§XëŸ]ðÆiþ÷ \ôBSñàSí¾WëJUëHTíTTïrTï›Vï'Xîu\í\î±Uë\SêñUì6RðŠPñ QîUë·Yì[ï×\ò³^þó_ÿô büørlÿùMˆüŸü ô¡ý " þ [£ ‚°=»0½—¹_±š§ÿ sœý œþ ó¥ÿ »­¬¡þ ð¦ÿ ¯¤ý¦®d´ÿ`¶¶ˆ±þÖ¢ÿR•ð—9› ¢S zŽìmAd Çw†€§zc‰ oŒ/u ga&c  p R‡{ž¶Kµÿ…¥Ï  Zjs_u«|c ˜×"—´žšíž:ž r¥¼¨°¯è¸ ¾x¿¼+©â“àŒ`€ërb~Zùb~Ö„ðŽ‘”&` 6j !š ºþ$mØù:¾Æ%6· É—¬˜©•Y™¢ ©•£¤•Ãu¢ø ÿvj˜íšE’ÚŒŒÍ‹UvŸa U\hfxzH}r»sîu¯yÕw ei…—f  ™¤ ð j´uµ-¹‰»“»¹C¶„´˜´í¶q±ù¬£«t§#{— ·—”œÿj¥Á¨Ïžþ6ÿþ=¡Ÿ§q§‹°ˆ·F´2­"ª m«ð´´©®ý¨ë­&³ ´5³ù³I²$®Ê­G±t°¨¤‰˜ʘ‚¢µ¬´¬G¨{ª»±èµ%¸þ®Ãþä°^“®Œ’“ ˜ Ž ­x ·r … ÕŽÿò”Ö¥"´ê¸˼Ô¸h°`®U±À¶ѹn¸úµ¥µ µý¶p°9ž†Ë~þŽy­ ¨¾‘¿Ò¼vº°ºµ>°þQªý ¡• lýGQó|Nð‰OïgPï(Vñ!^ó‹oúXpüûgùýûVÿüZPÿþ Sÿþ§Qþý…MýüRGÿùjGöGó„Eò‰CóeGÿöaKöaa÷ú1–øª ÿÔ‚üâUþøKÿûºOÿúRõ™Tî¦UêWè¤Yê\í.pþø~ýý,eýøPQòáRí÷WêNVëqTî’UïÛVðˆWñXî¡]íü_í}TêSêTíƒSñûQó˜SðµWî<[î.[ð^òl`þó:aÿô eý÷Mpþú‹ý—žý þœþ Œþ ;ÿ U¥œ´=ºÑ»¯ ¢ &ý M—þ L¤ ‚±ö²­­ÿ¢©@¥´©5µ¯¿ÿ{ÀѺÿݬÿ<ž¬š•œT¤g¥À—iy x JŒ¼…ȇ  È^ ”T¢T)TŒUg–‡*« §¨ÿM•£€#uÈe ÏnïlMbfǕ󊲊ƒá9“z—²’M›@®¼L¿¾´Pžs“‚mo`g A^ýBsl†ý‰¯ŒG€>tíd 'g ÃŒI®„¿+!¿'\®  ˜“»–žIŸ$žlœ•ž‹¡Š h ”ÿ§P¢ ?– ˆ 0‹Ä…™d ½Z ¦j¿s~mvˆi(c–](] £X ÅhRt ˜©“ Ïœ U­ ñµ€·¹ɺò»ºã¸¹µí´l²Š«s©X­P«s¢ ž ´™òœa¨%©Øžÿ¦â ‡¥J¥¬®´ã³w«  ¦ ÷¦´©ΪÔ¤Ÿ šªµ³Û³е>³³¯¬þ¬r«´¢¨‘ŽŠÆ” ¤ËŸ5™Ö¢ ¶þ™Âü ½ý à  ’¯—Èš ! k… Dyèuúƒ k‰À“œªQ¸ðº!¼R¶l®Ï­N¯©´‡¸4¸˜µ*²á°ʱͰZ¤ÙŒÄ}5…Ÿí¶Ž¿9¿×¾Ü»iµ’±ÿh°û“£ü ë†ÿa÷¨Tò4RñÉSî7YñÅeõÓ{ÿüÂ…ûý*}ýý„`ÿüVÿÿWþÿJUüý9NûüßJüû¶F÷£EòwBð–BòŽGõ°Kõföv õ\˜ ó¤¤øÜŒYý¶IüÂLÿútOø…TòVí(ZèV`í"lö¤|þý?þJ^óINîµSìrWé¤W醢ˆÁ„ V€ f4¤ã±}¶ãªŽ”;“l—«{˜’AbœŸ¯ –ÿ -˜g¥ÿ § >¤ ”;ƒ“‡ý‚Fc ²` §…ZŒýÈ /t7iäbwaÑa ¹a$Yùbý}d—¬„l‘ ¥¥ ó³L¹kºW¹¡¹b¸ˆ¸¶l²Ë®\¨©޳(´ʬy¦ ,Ÿ dœt¤ب¤žØŽµŠš+¢N£Ê«Ùµ¬´á­ |§ Š£Ý£‘Ÿ ˜–—Ôœ¥ç°{µu·|²ï­!‘ª!æu¤¡ø‹‚óŽ]–3‘f‡ å‹ K ÿ ªþ 5—þò ׇN—™” ȇ Õ„ N~®všx  #”ͬ»¼¼&»í´®p­‹­ã° ´·³,±‹® «¬ ٮƩz‘ zîwa‰< Ͳ®¼óÁF¼¶·$³¹²ýa«üΓþ x[bús]ö<[ó_õkú“†þÿn•ü“üfzþ eþd]ü£Wûý¼RúüNûûîHÿ÷!Añ¡?ï·Bò^JõfOùneÿœú|¡ øL¦þ^\ýÈIüJúJMøŸTôXî€iðrwúP}ÿýƒÿöyÿåUñ8MìˆUìMXê›WêìWìXí]Yî±_ñÕtúf~þûʃþûãeóuQïÙTîETîÛUï@Vî>Xî^\ïG^ñWbÿó¶bÿñfýôœhýúéiú´sÿ«ˆý ‘“ý ‘ý ~‘þ BŸýú§š¨k¨-©•ÿ }ý v–ý «ý ÿµþf¯þϯþe­œ¯þ ›ÿ©‹¢“Ÿ°þ5ºý¬½ÿµ´³ 6±ªªÔ¨¨§Õ™‘–ýµÿ=£ÿ–œÿ ÄBj T bW FY^a ÿlšyþp›pì`Ù` šmÿ½q„f|]¹p w“þ`§ý &¡ý…•þ h‹Ùˆ¡›ÿ Ú¤ÿ RŸ†Ÿÿ }žI®z¹‡¼Lº¿ºá®^¨Ñ¥ä§{˜ý ìœÿ0— ]¤ç ¶¤ö¤:œþ fœ gŸœÕ­·ù©ç$"6!Es……í¢ß¿ý¥þœÿ À¦0¡þ Zžÿ ¤Œ›~@ŠÝ _‡s„ Ÿþ<¢ý "ŸÏzic,fÃoréjÁjZrž ŒˆµŒ ­— é¥ ú³ÛºÞ¹"¶µö&µ ²J®=§Q¥®ô¸¶ç±ò¦’œ›z¡ùžD6‚Ól 8¤ʪ÷±ó±Æ­ D¨ 2£Z¡ÿ :› J” Ï=¤r¥G¨ ~­t¶&²Ë«"L¨#xŸ”– ‘´zôpÎ{†©‚\z äxÕ v} ‚p Íg Msöƒ“ Â~ šþ 7“ÿƒ_x .‚¦°æ½j»¥µįN¬m¬r«Û¬¯ñ³(°g®Ы¹§d¥ §”E~Ã{9~¬‘å  óôÀ{Şú4®å£ÿ1¹z Fsmdÿ½^þÄrSý_œûóšü †þ>nMcü}YúÿXTùüµPüú†Jÿöð„@õ’Jú‘N÷ TùnZVU «W Mkôtxp¬oaƒ8ˆz &\ êUÿßm 7s}Ž iŸþ ž§ÿ 8®A³Ý»ê½‚»:¹=¸€¹·&¶Ѹîµd¹ÿµµô¸„¸¹ǹ¶<® ²ذC±°²¶¶ì²ÈVˆ{tœr4nqíp :c‚vŒ!“y™ @‡„þÑüŒw]uþ!“ ¶¢تœµc´ÿì´ÿó ÊŠPz µwÃp‹t‡sÿx{"‚<’9‰”‚ˆøœ@«±´™¶t·¶±/¤b‘!‰Çlž’±i·v¬’™›“€Ÿ²¨ìŸ šå¡:£ ¨¤©ý§`© ™ª ‘§ j¤6Ÿ •û˜ÿÚ¥þ)'™ÿ… ˆ,— ¦K¬3«V§{¤(£€—ü~bj×fbiNrÓ{“‚ 7€]z L|Ò„ÿ5€*y6u†„ÿ)þ g¯ÿ WŸ /’ Ü ǶÇÀÔ·pª°¡2œ ¥«³ö°‹®¯Þ¬F¤<” ‡G…„™,ª†¬D©˨³«جò²‡¼<ÊÎÉ»¿¨ ¯˜ ² òw ¯‡ÿ cþ ™iÿúd~ `˜ý ß ý Ç£ÿ÷˜|‡ÿ4oýOWüþbRúüSûüºPÿö”Gñ*Dò^Où_RøUøfg_ÿ ó ÿ Û’ ~ôsÿéWûÍIøÁOùaú²}þý\Œÿ}yûƒ u’S÷±LÿóRÿô,Vó‘WïWï¡Zï1fô\"Žnÿÿ·˜ÿÿˆÿÕfø.SõÇPñ«SïÝUð˜ZñA\òà_óbýõYpúúp‹ú|ûÄlý|ý¥œý Κý a“û ý ¸³þý¯ë«Ô ÿ 2• "…úw"ï‚ /e„-<Êt–q!Wj fg_e|tÿ4‰þ *›þ eŸÿ|—þŠt&‰°œ§ƒ±è¹E´3­´™·´¦‚qq ¸xÎmóx yšˆâ“ÿ ö£ÿ®ŸÿCy¤Th[Öcspÿcqýer¤s¶Žˆ”v;b —Y Ém ˆwc A—ÿ Ó¤ÿ Tª Ó²¹a¼‰¹ºÀ¸=»f¹¹ÿ$¹ÿñº7¹å¸°´âµv¶m¶Ü´è±ǰ´+³Ò·_·V©û¢³”nv]iÿj d àoùxQy!Kw"€ŽÜ–j‚á“ý÷¥ö ·.v ü@† I”U°¯ v·1® ¤®ŒЈ$¡„!C~Ð|ttw"y—x™4•ÿ(&ŠH–¥–¬ʲx¶E¹T¹ì²`£±“Æ‹Fƒ©‰· V¯§§–¬”Ȥç³l¯Ÿ¨Ô¥dŸÕ¢–£x ŧ =® u­h«§âœ–ÙþY–Г g—-¡Š®Š´Ý´#®)¨«§Æž³‹P€=wox Þˆ–ªœ šŸ ,¡y ÿk—ÿXŠ÷„Ž·¡ÿ ú±®¥>—*˜ÿ¿¯N¸Æ£m”1žÿ¥ù6—ý-Ÿÿ³s±Õ¬Þ® ªr¡É‘ÿƒé€i•¤¬ä´ǵ¦³²ذ·³·8¹¶¹î±œ«g¢ 'Ž ‡ Ň ‚‚ÿ •w‰us„ T—ÿ ‡ þ €© û© <œþ zýYýùTûþpTüüÄXþö|WòCPô¯Wü_Xøƒ_úw t žž ŠK6ŽBwvTüSOùª[øîwÿýö‰"â…N‡Yr¼QùõIþö°Ný÷÷UÿöØWòTWðí\ðîpøQ“ÿó¡ÿ-š†žp–áyîUüOõTñöWñO[ó²^ÿôF`þöMaüù4døü5rú×oü±cþÈlÿþI†þb‘ý¦—ýF¨ ¬¹Þ¶l¸}®7žJôz &Çw /v -¨r %Ûl "7l %éh $ïigl³z‰—‘¥0Ž…~jhÏnÒ{T‰¨6³º¦AŸj­©±ï¢SŠ݈D’#~… d‘œA›ߣ©Ÿ®}(V â`™q|{ÿ÷zú”„ É…ü„ <ð“dq ök3k yý Ip § ¶ÿ£ )ª œ²$¸BµŹG¶C¹µ¶1·ÿlµÇ·õµ-¶µ®Ø®p¯š¶õ¸i´¯°í ¯º õÆM³ Òš9‘†mrßp^k<} YŒ‘‹¬pé‡þ·’’›¥ÿŸü Ù“ýšzü} å„DŒÍ¥ b¶k¤••‰„*‰%°Š#†Ä„”}]xŠ}Îw¥ :¨õ«D¨i¤U¦>©žªâ¯=²Ù´*´U®b¥šÓ”ÃŒV†&– º¨&£z–ÁšN¨£³'³¸±E«÷£?Y™E˜dŸþ`ªÚ­BªPª%¤¨ž%žÿ¨£S¤«¥ a¬,µ"º3¹Õ´¬½¨õ¡g—sÿü€\ýHÿøÒKý÷»Rþö\Tô†Wñ2Zï¹p÷A”¡¤Ž›…žH‹]HOøËUóYñN\ò?_þö@`ýøZeýùqùþ~üÇvþ7eö uýôí€þ÷‘þ œ V¯ ûæ»»¨²¢£,—U#=s ) t &ét%q%Fr%r)ût*9s&Qt wýwÿz‰€!Nzo÷_ Ëe ¨z3™ €§[œF™$§ª?§¬¦©ç©¦‘Û‘à¥Ì¡nœý•coÜTD]såŒÿé”û -£ü ›™ÿ Œ “ ¡þ‘‘n‚Åu´‚üìx /‰ Ë—ŒŸ¤ ®J³†³&³³ã´©´)³°«ëª¤‰« ⤠ѧ8¡n¯ µÿÿ±¦›¦ œ¢u·âÊD´Þˆ 6‰n‹|…š|þb“ÿU¡ÿs›b€ßüàœѬC¿ü¼úž1€“} ½ý î‹þ Ù™ÿÀ± gž¦…öyJƒ!Ö†!pŒ2‹„Ò¼|[pý£´²n¸ÿÿ·î¶l²Ú¯$¬B­'®Ñ­²«}ªJ¦·¥–:…™`²l§Õ–’𫦵®½²ÿ²À° ¦±›Ÿ’õ‘6•þnžÿ„¡˜Ÿ¢q¡`Ÿ£Ƭ}¬…©ø¯n¶;ºTº‘·õ±£ªo¢¢šŸ“€mx gˆû›C¬®±Q­Þ¨}¡1•Œ›­¯x´¸¤ZQƒn‘õ›¢Ž„v‡žˆ ìƒ ÄŒÿ£p¨<§¥ª/©ô£‡˜°‡û‡¤²¹:·?´ ´a¶p´εz¶‹¶´ë²Á¯Ž­-¥“‰at €þ¼œÿ ¤ © Õ«ÿ ×°ÿ¯þ³£þ^xmý¨WüþÕVûøÿn÷ø~‰üýáŒô€ù|ýþg‘ýÌ¡þµ¯¦ z— €”[œ·’ IhZLùUõÅxûhÿF…W’bž͘ÿJmþzJÿøäKÿöOþöîRþø­UôWïþlÿ÷«‰þˆžæ›ȘØŸ„“ÃgfPø»Wò1\ñ.]ÿóß_þöaýùtjýúp~üÿûô‰ý÷~ük÷xøÿ š 2¤*´нF½¡¹´°®¦ÞŸƈ=t "ºq "Æt& w(ou'`x)-y0 w/qq $wp"òm $+l &¢q)×p%7p¸i ¨g „pùŠ.™-˜œ§é§N¯ÿ»þX»Bº¤§ó£(¥G¬/¤™È¥oÂ^Æatê˜þ‚¨ú ­ºú§¬þ ý’‚ ’¦þ &§ÿê¢?–ÿ (˜ü‘ —•þ ü˜ÿ ®ÿ K£ÿë²Jº—¼ß¶û¶)³¾±° ŸÆš”à  ^Ç‹Iš K¥ ×¢–”͘7 dšT—’AwI…u‘€•/Ì‘U™þñ¢Ù¤×—C—ÿÕ§P´;º7½®n‘ ƒ —ý —ý‘ÿa¢ ç‘Ýy=pˆyG{I‰v‹ ÛvJž=§—¯õ²Ȭ!«j®ŰU­3¤¢ž0žg¡Zžö’΂H|•âµ9¨Î’&—¹£î«‡²вŸ®¥éšA‘ÊŽ½‹ÿ¹¯Ô‘*’ ’·š¤ ,®h¯Ô­¶±ú·%¹k¹t¹h³«¡¤–^„c‡ x—ˢʭ§°è¶s®ߥ` ?•ßË›X­Y³ ¥ <UW’ù¤G V˜˜˜ãùŒk“xž¢Ť%§Œ¨]£`šˆ†ƒX@³v·iµ–³Õ³‰µ1·,¸o·<´̳m²o³«>—E„®zÿÂþ ™þ;¢ÿ à§ «ܨÈ þ°Œƒ¯mþ[üÿYü÷kzùûa•ûþ½”ÿvƒþ.ˆýýÌ£ý°ÿ °†¦ úžoÒŸò“ kdIú³Wõ;€üà—çŒ* ¬Ž§oÿÿ¸Mö£Mô0RÿöTýûmVÿú‰WõšbõÄ}ü™—„ž›Οÿ ––lQö^Wñ“[òÇ]õ^ÿ÷‹^ø]iüà€ýùý•þ “ÿA”ö Ÿõ Y› ®x¸ÿ`º­·«´.«Ä© #©ý 0–ÿ¹€Ts ˆp &{,w*Ëx&áy28x1Ïq (Iq Åq #_r)èr)Pr$Õq r!oýr '~ušÿ |  ¾¥§¦Ö´í½ÿé¼Gº ·ù²²'±ÿ£Θÿ n‘ù{ “xœyéƒ r˜ý ‡«ûQµüέ J“ ë‚»šþ$°þѱþb²û ;±û j¨ ü ÿ ßšý¯–ýT ýq© Ľ.¿ŠÀPºõ¹¯§ “ŽÝŽZ o0e l{ „}“Q˜Y&‚ÊsRv‘tqfùvÙ…*ª–&”ø˜¡‘-”‰–$š¯˜Ú¢˜¯½´*¸º¶9¤„‘“þ !™þe‘Ë’ÿ ¡}:n:xwx / ‘…'ˆ Š шÄ‚1{`N‰„–²ž;œ?£­Ѱ¥«]ž‚‘‡÷˜ES%z €Æ”Ý£œŽ‘1¹«¼¯ì²÷±«Τša–=’Ú‰,€–ƒ¦†¿ˆ,”¢Ù­º¯¥¯|³c·¥¹j¹9¸ã³Vª¬ŒâŽh— ̦F«V®h²Ÿ½´Ç£9œ_•¤’<š§æ°Z¨ ’(†šþ5°g®v§ö«L¦æŸG˜o™ý¡]¤›¦_¥Ø£EŒþ€î–—«¯¶޶Ƶ ³Ó´½¸¹Í·Ôµæ´c³ž´®h¡J˜é”ÿ‘þ l™ÿÑšÿ` „  ™ ü‡¢cQ` 8]ÿæZþü\þô[úü¥œüÁ”ÿ6„=•ý¦°þ ³{­Ц ‰¤ p¡°Ÿä’ ¦`'KûmW÷Kþƒ™a™ò–²‹†ÛtÿßR÷%Nö8Rÿö®Týú4Vþù‚Wÿö›^ö2yÿ”4¢š  ¡ ™ XsÙS÷¦WòºYÿô²Xõ¢VöHVõ2]õïsüœ…þü˜ÿ lŸÿŒ–ûB™ü ¢ ɶH·³n¯ z­ ¨ ä§ ©¦ #›þ 7‰È{Wv#&€+à~%»|"²|1È|2Up &Ùp ‡u Äx+ƒr %u/v"u!u qu $z%·?Ÿÿ ™¢ æ› žF±î¼ˆ¹жž¼Ö¹¹°Fªƒœ.…%˜6rä~M—ÿ´›þ c›þ  ý ô¦ £’ wÇzFšÿ ,©þ ½üJÈ0¹”© mþ£†þ‰ÿqŒ ž£âª<´ä² ´¶+¦ ˜ƒ…Š%ŒW‚E\ °W Íf #wc…·“c•2x¯Q ¬^ óc ÿjf‹òŽ>#k‘ –WŒ"†ô‚ä†ÚŠ_”3©ݰ)³Ù·µP£{’ŠÒŠý\†ÿ ®hÙwÿ(ýˆþ%~)x ‡s )z rƒ p‰‰¢t¹x Q;†7Œé“½ Ó®¯â«f¢_—ë— œ(œ˜•’+• ¼§e§ ‡•Бף6²µ„³ ÿ¯ G«:£Œša™F—ŠÏzxsä}¯ˆ¯‹z‘xžå©ê«õ¬u²C¶N¸L¸£µܰö¨–­‡û‘Ä›·¢Þ®€°º­s¬…¯h§ ¢¤˜i“T‘`™é¥×®`©ô–ÿÍŽþxžþt¯š¯‰®ü´¯Þ ø‘¨”,¢k§g§ §^¦L¡4“1†r” ªôµ¤µ«µ´õ´¶H¸b·¶"´سM²Ÿ¯Ñ©Ì¥Àÿ k—ÿ ª–ÿ}™ÿb™ÿl— ÞŽÃpý¨Où‡MüºSÿý¤Vþûe]þôYúüŸü˜ÿüZÿO³ V´e­ Y¨ ¨¦ 4Ÿã›i ã`‰OüYùyÿÿ“f¥ %£/— “ͳ[úºRú$TøS÷IVô9Xò¹aùØtýµ’Å¢ÿ𢥢 ˆ›{UûUòjWÿôêUöŠNö›MöÀWñ¼põ †þù” ¤¤²¤ ²§ …®`³ °ª©%¨ ˆ¢þ Ç¥ ‡¥ ©¢ÿ»˜ÿ X oŠü‹ÿÛ‹ŒOˆ&¦‡)t@v§|Ì{'ªr $zv šu &u$ýv 0z$û#}‘d¢ÿ ¤—u” Ý£å¥Ü­z¨ýz°Ñ£±™OŽ î‹”e #\ a nq –‘ hžÿ Þ—ÿ a–•þ‘ j¢c-x›šý }¬þ WÃJÁ ³ _‹ÿŠ‚ÿÜtÿYz¥„F‰É”„™ ˜5‘Ø‚~å„ Œê‚Ýi ûc x{¤y„§“~”CrfFbKmmø~.Œñ“E•ó’&f’"á‘d‹"t„Š|$t·je…Ô¨°Y®Ùµ¸«Y“j} Íwþszþ2nÿʉý lü Í–ü‚ûÆ~Ëo~…%‡äw'v ä )¨ˆ{”Ñ¥U°ø¯ð¬Á©£ ú¤ ¤ ®Ÿ e f¬ÇÁ OÐþhÄÿ u)®š\¨ ³eµ!s¯"Ы¥%v𬗋uõkfy«‡ÝŒB‘!œk¨;«7«û±ȵç¸â¸³D¬s£ø’ðŠšš b§ Vª›°¯©%Ÿs•b–aš„˜”F—|¦4¯Æ©Ô—[ìœ.¤ê©!»±!ð¶¯ÉœóŒ’v¡™¨)©3¨ ͨÔ¤\›p”&™†­ý´³³+³ô´޶4¸¸x·µg´'³é°ܦ—œŠ a‚h Ÿÿ¡ÿ žÿ ‘ÿ÷qüUõ1Põ×Sÿø­Wþûzcüøhûý—œü³œÿ×—Æ¡F² ì´Q°¹© í£ ÌžAš{Œåg}Xÿú§dÿûÃsÿþ÷‘è¨ © 5 PžYægýèSüÊSûÈRø¡Sõ€Wòg`ÿú‰rü.’̤ÿû¤¢ ¿ž =€ìWüRSðWòxVõZNöJöüWòþõ•šþþ•˜¥ ­  ª ªC¬º¨–¢{¡þ ášþ žÿÙ¡þ ^£ýÄ›ÿù•ÿðšÿ þ  þ œÿÖ ÿ „œþЛÿ‡6‰‹‹ˆ`{ :y Šv %x~):xÞz鈘ÿ£þ ;¡ ›—óŠ rŒÿ‡»• úŒÿÜ’DƒÏsjÌl¡V .S È` ¦p ³† ç“›#˜‰áu†b XiÏ‹þýþ ù¯pÇ 8µ ÐŽÿ õþ0‡ýÌ… ñ€Õ…†$É… o}ž†ȃrЦ‡5ƒ|î†>… £#Ä“íÝoðL ‰Uu ‡ íŸJœË¡ܘ!å–"íŽ$ëŒ!¸‰Ü}èxk À~¼¢è®‰­V¸¾©ª &$Èp^antqˆ„Õ–þ²’ý i‡ûá”þOÿ q Õ|Ê€ „?} Õo 7x ½}ÿÛ‡–.§¼²ž°M¯}®†© ò¨ Ѩ ¡¤ {¤ tº^Òÿ Ÿ×ÿ&Ç`«mœ—ŸšȧܳC³ „¬ï§7¢ož˜@Œ¼v]j³wŠƒ4…‡nš‚¦E¬®ϲ‡¶®ºýºq³æ«Œ¢W“©N¡g­ã®ñ°{¬Z¡—‘!ç‡ †’W›šš˜ð–™ ¤µ¯!¨Æ–“§‘ú•$n¢"C±!¶‹¯9žÁ”=˜žÎ¥N¨ 㨠g¨¥ð£'¡l¥­ú°¦±K²Ô´iµ(¶€¸Ó¹p·wµ ´X³p¬Tš!p„±f ã^ Õ~ d›þ è¢ÿ¥ šŸþ6…þ‹cýøTÿ÷‰Uþù>Yþýhûüœ|üý™üwžþ #žÿy£Ø® T´&²2ª S¡ Ü™—ÜwþmýûosýýTtüÿÛ•R¥É£þ/¢ý—¤?—Žqþÿ´VÿüŠPÿùõMÿøjNøÔS÷Ó]ø”pý™•ª`§î¡ ¢£ !‰»[ü±SðCXñŽWôçOõuK÷Ñb÷ýü:Ÿýÿ”$™ !¥ °¥ ª_«[¤+šB˜ÿ Y LŒáÿ/šþ T™ÿ™ ÿQ¡ý ±ŸýÀ¤ýªü ¬üÀªý Ë ý h ÿ£ ’¥”©Š*ƒ !YŒ'¼†ý„ ŒAœþý·˜ÿ¯’ ä Ý{{ ‚lz} Å‘k¨a¦¦m£Þž´$ÅŽŸŠ„„|}Hk ÁrðŠqšë¤±ºFÂL¨ ˆŠ%½jLcXbb l»v° ÂŽý»¦þ N±þ W¡þ ³€ÿæzx†è„pDxþ ÿ䌬˜ç¨m²û²„² ±É®À« ›©ì¨æ¬µ©À×Äk¾0´$¬ü ^•kžî³r®O¦%¡ÅžY–މ­uCjÖyÔ„â…Ä‹ó–¢Ь÷±´¥¹8¼º©µÿ®Z¥Š˜«”ô¤â±޲2³¬+šùŒî‹á—!›‚ž3žù›ŽŸЪc¦t–ü—„šÿÇ$›™­1¶¹±s¦°Ÿ:›×™è |§e¨—¨»§9§¨§d§ðªƒ¬f¯ô³Kµ1µµɸ¸ä·µZ´ °8¥B@p UßO¡hþ íý šþî¡ÿ 3¥C‘þƒhü RýüiSþü»WþX`ýú#{üü¼ü¸¦ÿ T¦ æ§ « Ƴ°³2¬ w  _޲Ž(•ÿ¨‡ÿqyþ0{þþ|‚ü–ÿÈ¢Ù ýb¤ü7©!˜-xþ!býúCWÿ÷8MÿöoMÿøíRþú=[û½müý—iª§ ¡ ³¦ E—:k(TôôWó¹Vö¦NøÙMùPiûƒþèŽü ³Œþ²D™ÿ (› Ϋ ®é¤ÓŽQ‚u©x¹y‡I ð™! ÿôœþµ—ý³ ýݪý îû ø¨ü œ¤ý h©ý 2´ý å¹ýk°ˆ§ ´œŸ›)ž z• ¬—þ ˆþ€„3† &{ {v|«ŒÖ†ûjáh¹d=`Â] 9h n}c“œ•ÿ Tÿ Re€çä§Þ­b¨í˜g†R|ßc y ƒ ™K~ inœ_r &~£–6¤¿§ ¥€™¤œè¤«‡¦™§#¢Pª¢ˤ ‹œµ¤>¤ªÈžŸ˜ŽÕ”¶›ëª¬óª‚«Wœ [Ž%ð‰„ y$h  k Ud ¿už‡! ©"º¨ Ñ!ñcPdòn¶g cg h_ ˆl ˆ‹ ” þ ã¡þø¨ ©‡Œ}…Ž”—L†‘„ÿŠÿô•ï k©İö²‹³²{°á®ô­¬€¯®´?ºŸÀ» ³ù±ž<Œ<—.¨‰¯Ø®¦ › ’ý‡öwEm {÷…߈c•0žM«ƒ´¶ýº¼ ¼·ºÝ´r«^¡s™£¡³j´Ø´œ­7˜úˆƒŒÉšsžUý£0¤•ÄŸ^ª'¢N—|›2ý™ž-©´u³¾­n¥™o’‘›Ó¥´¦H¦¦>¦ó§¸¨Õª«+¯Ùµ/µ!ë´ ™µr¶‘·¸Š·´ï°,¤ö‹yp`\“Sý?jþ†Žü ™ý Tšþ £ÿ"”þ]fý×PþüoSütWÿ¨aþüµ}ýýç¢ýJ¯þ ¯¯Œ¯Q²Oµ9µ´±8¢ Ž qŽ 7˜ÿ ó‘þ Ç€ÿF€þ.‡ÿØ•þb¡ÿ4¤K¤Jœ<†ÿ†qÿý3pýüjüùÄWôPÿö÷Rþú.]þ!qý è—¬¦§ X¤%©¡¯{ Wù¸SõRùgLú2OýÈlý„ýü‹ü¤–ýHÿï™þ Éš ¨Õ°¸¨¶‰gh êl xE{*=Š TœH¤Ô”†ÿ ržÿ.£ý“ý AŒÿ“þ ­¬ý ù¶ü¸þf­Õ«ü«.¬Ú¬Aœþ šþ |~ÿ\p'x‘‚1{»†ä º¤ Ší†ÿ ézýcoÿqg Ç|Ø‹«¤¥È—º „öt³ ¤ªF¨i‹œrEntˆq þ] ŠU“PyUÍq  T¤ ¨ŸÇ•Ü—?§£²®¨Q 8©}°®²œ¯‘§¬¦€¨ê¯­%­0¥Û¥ç¦ü«}²>µj°/°'§ Ž'D…•8vpoHt0o_ic‰•¥ÿ|¯[›Õx!Zk:~jˆ ~vh Òu ¶zÐx™Š Â{ð‡d–ÿë¨þ›ÿØŽÿ_Œ¶—¯¤}«¾®¾°°®Ç®7¯v¯É®ð°{³ »ÄÈqÁQ±ŧ¦ª~…¤د_°¨©ó +–—ÙŠ…‚Ì}ä‚…‡J‡g-™a¡5­¤µµò·­»Ͼ{½s¸·²|ª²¡`£ °³¶!±–§–Õ†Š7šΠi¡¥Ù¨³¦Ë© ®Ñ£ó™¼– ý™ÿý¦¨q©ç¯X²À²©3™da™7£¤£—¢c£ý§U¨š©˜«±µ â´ dz&µ/µð¸iº0¸D´ë¯ú¥û‘H{¸naügzý•ý™ý¡•ý #£þØšýémýšSÿü VücþlpüP~ýj ý?®þ ô³¶¸µô´³n¨¤™˜›n¤›þ‰ÿ¬‹ÿTŒJŒÿë™n5˜#ˆyûnýÿ:uüÿtûý†`ýö…Tÿô1QþùSZývøàšÿ © 8­ 6«¬¦㈠ŸYú®L÷ÊMúAHù6MýÓts•ü>žý ܦñ¯Ó¡þ £¥ –¨ Ï«ñ§ Œ g ®pÿ 8~ÿ»‚ƒ È‹ Qžÿ ¨« `‘Œr#|¦Ž Åÿ#vÿ o3€ ¢þh¬ý j¨ÿnž-¥ ¯-³Y±ÿd ý B‹ÿ Ñ|þ èsþ tÿ1‘ QŒþÒ“‹©м@¨ Ižþ L‡ýÁ}ý€{ÿxÿ €Ÿ5µsŸ+Ž Ù€fp>~j•o§#ª©\„‘e ª^ ` UµR S ÙfvŒ >þ9°þ ¯¢õœ/›„–´ªÛ¯m™»Œ‡Ÿõ´€»ã·;¯å«T©6­,­@¶ ±è¯`«—°¶N¸¨±ï­U©_'~„^}Øxiy ƒ 3obXYk¶ŠþºªY¹ÿåþ‰F¡þ j’þô{Me ?\õT ‹` Šg ؇ œÿ ¬¨ê _ „†ç¢þ­S­߬x¬©¿©P« P­ ô®Н2®¶ÿuÈþ‹Ãþ§éš ƒ‰Š€“;¤ç¯$³ä±¥†•o‹j…Û…‰Ž”€͇¡ŒÆœc©m±i³<³µQºÔ½Ò½¤ºWµÛ²€ª P *£%О#Ç—aŽŸ…ï‰@™¡¡z£è§‘¬ϲ±öª ¥&¦9­ª²°±b¬Ôªά­¦÷˜›“òšå£8¥m¤š¡Ž¡§¥Õ¨¡©ª«8±ð¶Á´H±¹³ý´߸*¹l¶|´°¦Í–L†s{Õs¦…ü—þ““þ²‹þ Ý¡ýw ý…vý•XÿüÍ\þþ‘uû *„ý …ýšþo¥W­ Tµâ¶³]¯8®8ª‰¡ <œ œžé¸†K‰ÿ`Ѝ€Ø‹I…"|º|ª‚üùƒûzûÇsü–aüø-SÿôŽNýø1TýÿŒvù›þ.«ÿ Ö²h±e®ЫÕ‘ ˜^ûH÷pHø.Cö.JúÃtC›ý Ê­ý¾±“·­öª -© Ö¦š A‹l ïr ´~ ¤ y… ˜‰ ½ž‹­ `– p¯ubƒ‚ â| oé{j”ÿ³•ÿ wƒ‹×”«¨W±š¨ãŸÿ T’MŒýŠü^’ü Áý7›þL¡þz°5¼ë·jžÝ„ÿ?€‘þ ¾›þ z®{½¢¤’¾•Á€0~Š¢uª«¡fs"<^ ] Y…T E^¹}¬ž ²þ ›³ÿ‚›µ˜ƒ™ò¤ÿsµþº¥Xˆ#Ú„ œ’›§D²9®¢ª›¨K¬ ­ ‘¯µÝ·¹²¾­ç³¸2¶ <­C¨‡¢ ð‹)Ÿ„oztH}<{¢ÿ …ÿ[Z_*z;ÿ µÿ¶ÿ§“¬ÿY¯ÿ¥šþ õŽ €Mi¦dÌiƒX jÿ S† ž¡ÿ›Ž–—Žÿ†è­¡ò¬ެëªøª¢ž–¦ u¬ k° ³Ű=«s±T© Ù—1‹ ŒˆÖ🠪±|µ²1¨‡”sVy¤z .¡™²‰¸‡w–«¨ë±á±/±n´F¸ú¾+ÀZ¼¾·`µq¯Òê$‰$Iƒ$cˆ¶‹‹dšÉ¢¼Ÿ{ >¥ªî² ±ð°!±Ù´Ì·1¶˵ô®â¦´¥f¤¬›G’f’¡›X¢Ô£f£2¡Ÿä¢©ͪä§x®´·‚´u°#³ѵå·ˆ·Ö´“³Z¯̧ö™_" %utƒþT–ÿÑÿ K‡þ .’þß™þ—{þ»fþIkþ„ÿÓšÿ“þ 5“ØΣÖ³ DµŒ±Ôªô§¦¤›š6ŠÜŠÿ ´zÿûwÿÙ„Q†ÿ{~a‚v‚xÿf‚ý®–ûsšû `ŒüÍxþó_þùáSþ÷:NýøzRýýçtú ˜þ,¬þ ³ÿû® ñ­ I²ý _qþÂJöwFö€BõyJøæjþ•—ý â±þí´™¶´¯]¦€¥ÿ å¡þµ™ 1€ Ôi êo * ¿÷‡ Š¡%­ Ò˜ 1€`t˜x$ˆ û˜ý 5…þjpÎw üt kvTyŽ‚í \ª+”™’ •@šýÌû8 û /£ü Œ¡ü¼¯þ !µÿ·ºÿ·½˜å|<|’‘6˜þÿ¬R·J ¦‡Õ*¡þ ½¡ÿ ÿ픣q®.¯5¢™„"te ·_ Q` a^ Ýmø‚Nž §©@¨î›–§“ù¿ÿü¸Ôý®®ýzŽÿ%Žá’?›Nœœ˜|›Y¬ ©j«°®¸çµ½°и]Äÿ ÒÏ· Œ§ÁŸ$­‰)€ K}t”€P‘`«Ó—ý7mT`¾n̉wÿ§®O¯ÿœ¹ÿ[¶ž›þÞƒÿ >vhq ÿrþ‘tü |ûÂŽþ /¢þuŒdˆ¢W•Cš­¥X¬¬‡ªü§ß–‹Y• Ý¡ÿ ¬8·ÿ«³ÿ ¢T–aé‹ 6… åŽ Ùž?©X¯¾²@±±¬Œ¥V“e}‘q¾qqФ¢× Òj„óŽËŸÍ«ª±»²k³Þ·Û¼è¿ò¿9»ð¶Õ°¥¤«“~7t`ƒf‘™ËžÇ£¥ŸšŸ ¤Z¨¸®Ó±²´ž¶з«µ‡³b­²¢Æ›m•A7‰K˜‚ #ŸQŸHŸzŸt¡+©)©ÜŸ¦¿³†±æ­]±Kµ0´δ÷³z²<®¯¨«šÔŽÞ€}râ“ÿ´’ƒÿ ñ~ÿ sƒ - .ÿÑþ 1*¤mœ Tˆ\™¦™± Í´/°{¤> (Ð~û¡‡üü‚÷ ¨{ú ¤‘þÞ“ý‘ýæ ·…ÎŒûÄ”üŒžüÙ¡ü:™þÅ‚cÿù Tÿö>OÿöqQÿúçküŽþޤý ë® ¨;§Cµ C« ‚×O÷PFóEõ5MüYhüý ®Y³´q­è¦ =£ÿ »žÿ ÎŒ ¡l U`6qµ BŒ ꓚ§ v±ÿ Jÿn”%} q ý'„AŸý À’þ ×i§] ì]å` þ[‹k#ÿ Œ—…‚­{ ¡eþE¡üý£û {ü A›ý î§ײD±®Í”jv÷pĄܖÿ€¥Ø«–w„(yHŒþòžÿ»žþ²¸߸¡¨=ž\Á|¶f éq  sÕw-·¬b©—¨ §Ù  —»ÿ¶Øÿúª @–ÿ±—ÿ1“f "©’³Ž“>žÿ˜½Ÿý­¦·Ñ®ѯ V¿û 'ÝüÖãÑÇ©ž8  Ž%”„"„!©€„Ÿ…¢ûªþtýNuÿZp¢y¶~-Š‚ ÿÉ©¨§Ž˜þÞxþùaÿch~_ýðü$…ÿ2‘þŸþ HŠ݃èk"£Чÿ«6¬ªªÕ¦Wé{@‚ ?’Ï¡ÿ¹°Ú« <˜ÁŠf‰f‘æ– ž©Ñ­r­d­¤¬©Ì¥I™«ˆQx*qä…íží¥s›Ž‹Ž™“©µ6¶n¶¸©»•¾ÿ¿¶½†·h°s¬*Ÿ£…Bv¸‚ë”’¢©õ«§ò nŸ¦¤Ÿ¨P®±³г¹´7µ͸_µv°‹««žÝ€X}‹€”‡‘rœ  žš žŠ£O©Ûª| T£Û³¥· ®™­±g®È­¡²´¾¯¨ßñ‘؉Ó‡z‹ÿˆÿä 7}p4tÑœÿ U“ –•¹§r¢ Ï“ äƒ(Œ6˜f© » sÅ Û« â–  Šƒþ܆úüš‰÷‹‰ù œ›ýOŸûI¤û û£ÿ ›C•ü<›ýâ ý#¡þœþ¤‰þhþø¸VóPñhQöf`„þËý § ¢ã¥c¯ ò U‚þßTÿ÷0Jö±H÷ÕN ÿƒd n†ÿ ‰«6²аu­Šª E¥ › ~† :\½Yt … ª›&£Iªø¯ɵþn¦ÿx™Mˆ#k öÏ~nžü p˜þ mj S @V Z ëU6Véd úxÈrl …ü”ÿQŸþ  ý °þá‹«œO¬Úª9§ó“Œx8pÁˆÿX¦þp¯ÿ5žr‰îpmk¶l!~OL¡a¼@ĪÆ@µ’¢+œÀ—'}焆 !… Ÿ•ßµ¯v®€³ê§= › À«•ö–zš–`“L’&™´•Y•¨™Š¢“0ªàµ‹¡›š ¡¥þÄÿùµ—©n‚ë–â—–!¿ˆ!{ “f«i«þ$œý¯…/züf yg ˜Š"šŽÿ#8‘þ5ÿ™h@YC`aqbwÔƒÿM‹þ‘þW—þÍ–ÉŠ—’²£©/§ç©.¬ ªõ¦(”|àUÓ”ÿþšZ“ t† Š }— ¤ª ¶¯ •´A±ߪƨU© ª¤« ¦4™܈ÿv`€˜}£ò§¢$™G ¿°a¸¹5¸ø»C¼ß¿‚¿¼<·§±±­´¥S‘0€8Šyœò§^®¦¯_©5¡ù ²¦ªm°¸¶aµð´Ñ·¹$¶7°Û© —³‰,„+}é|bî„Á‘4š½–nŽšL¦­H¯-ªN¬»oÃ;·”¯®ƒ©;¤m¬©¶è²e¬´£Z˜~–§œÿ Ÿý ø–þ %† ê}ÈovÞ¬ ¹£ ø m©‘¨ ­Ÿ ” !’ ËšЍÚ¶ €Å j´ Á™ ׌ ƒÿ ø|ûÔ‡ýþD‘üe›üûB¥ü /® Í© Qÿ…žþ÷ þ  þÞœþk‰þ‡oþù\Yò‚ƤÑžþ]šþº$u€"ćn–Ÿã¬ÿ·¢‡iy Èt ê~"À%"ƒ!EzXeƒcøu| rÖr÷„ýÒÿ_–ÿ6™TŒX”þ¨)­„ª’©œ­«§›gˆÓˆÔþpÿh„!y w ª§ ˆ³µY¶¸o´1«¯§–¨ƒ¬h¯»®$§z˜ ÚztŠ.™Ç©‚¯„ª̯²·ù且¹q½!¾p¿¾d¼]¹g±Ù¨:\Žé‡8–©¨)®¯°®°«„¦Z£Ó¨/­ý³d¶´µµ^·“¹µ¤°Y¥—ªŽÉ¡þ:™ÿ€ ì|Ç{à~ ‡9‚'zÚ“ï©ñ°c±W¯ß²d»ŒÃ»0²¿¯S¦š£H´²,­¬§`¡ÏÛØ¢ t– ‚Xx§kgx ¢§µö´Ô°{°À­ª <¦ /¦ p¦ Ï« Ū ® ±u© ‰ÿ „þÆ‘ü»šü}™üâ–ût ý |¯ ß±¤ ë¡ÿø¡ÿÅ¢þ QŸþ éþptþý^ýöÕ\ÿóÙcõï|ÿdšÿlŸÿ ÓŸ ˆ•ܘÿ åŒ Êmû~UúþòSþüÑK÷ÃL ÷V öu}S¬ÿb³–¯V®dz'³ò®– Uzzw;„ '‹ ‡œ?£¦̬é³´± þ tˆÿ i{þ “üî²ü¤¬þ “Ìm Nc Giÿòlþ~Yÿ^PóQ ™W h2p Äy ^œÿ ¼€N šì²F´­¢ƈ•jÌ|ìœÿ¨¬“Nz<{?têmôq¢p’w€˜Ÿ  «˜£͸›Å-© O’¸}ª}yûnqxm’k§&‘ 7«p _œ1’¬‡W‰¦˜õÿkÿn›X‹!½±É£"§ƒ#È™Vª ¢Ž r bdW[ Ôh{háV¡S ŒjÿÛ›þJ˜þ>•Žˆƒœ #É(xžÿh©‹¡ñ‘g‡ #÷• ú‹Oƒ *{ Àx ¶vD…L„Öˆ7ƒ ݈ýëˆØ„”•ˆö“F¨Q²M¯e¬¡®]«D¨ ¢”•z“þwþK—ÿ `yr1~$œÿ³P·“¶Ôµü·O³ù¬U¨ž¨†­±=°U¬²£|{zex‹¢à®‰²*¶¹¸š·v¸¼–¾µ¾ǽõ¾±¼C°.œá‰˜j†´›¬ž±ª¯˜¯Ÿ®~ª¦©°"´E¶/µz´|·o¸4´´°þ¤>‹6‹þ¨þö¢þø€‘„j‰ ß…€¾r rÒ’ ³¬S± ±ä±+²b¶¾ºÞ¸„µ°Ú¤Ä“šL¯é®P©U¨¶¨²£€˜4 -„ «wòh„{¥'ºìºθͶ0±ß°«¨ —« ®Æ­€¬h³Q¶ì´¦ý ”û¶Ÿý™ýû–üø ý 篑³£ª¦ ª¦ ‹¦ÿ ï£þ ¯ýÍqýÿW`ûûÀeüûHoþ¨‚ašÿôÿ®› k˜ Y” #• ‹ÿÒlýßWüý²´úµ—·?»3¿y¿Y½ ¼À¹¡®J™wzºm €4’½›ß J¤h¤ù¦\§2¢h¤›¬p³Uµ Tµ;¶‡µØ´*²® " ˆ$Ó|phi²n~‹«5²n¥…•÷‘už©¹¬Ó° A±Ú´Bº0¼¹tµ§²"©E˜Í–ªº®“©‰§{£%›p’ÏtÝc ix A‚ º|`…õ¦C¼u½x¸&µZ²|«ó§£.ªž³•³± f´6·›­ ¡7¡þŸžü <•þ¿Ž#šû¤ÿ ¬¨ å° W¯ª¨ Æ«ÿ«Öÿ¡ký0]ýÿbþ‘by”—:¢¢ÿ ·«j³©« ”–òp—Vÿj_^^UùZê€þ«ÿì¶È´I²S²*®y®v­©œà‘ÿ ‹ý –ü V§ ©&¨½¤¸¤n°*³ÿ+±þ»µþÖ¸ÿ¸µÿñ´þ®¤þ¢ƒ…i çj $d  cjùéuD‘O¨Œ¢ÿ ˜¦ÿ¯ÿ¯ÿ¤ÿÏ«i¸\·pººÚ­û OŽÿ ã€Ój'`sDÿ ‘ü Ätq… ý• ógÀmaqb}È ±©l²¦±¨¤‘†kÙM ³LªRsc fMªF¨ˆªÞ²«žŽe‰ ý¢ ®ÿ X¨ ¢ 7¢¹¨&º¶H£yÊø”êòûàô гþe“4{´r|ÿ.…ÿ¯Œ°|Bh~‘!䘣–$•à’‘$„•ðž&”"À$oŠ %G 'f %{Œ Ì‹ AŠ !ƒŒ !6–æ¡RáŠ;{Ìr 0ŠMzsÄ”ˆ¤#¬^­„«™«ªr¨š£Už:™‰¦}òŠ’  p±Ú·з~¶E³¯5©F¥¤ê§!‹¬¢²m³´®ò§Ö¦´žþ)ˆ {Ì„a’=ž…«³´@´ȶë¹Ö½J¾q¾íÁ)¼.®ã0uî…} Ž­Œ$™‘!ƒ˜}¢:¦*ŸŽ G¨%­ ϳ S·ì¸½µ¢³^°Í©“˜#ý…$j|+oviËv‘'¬§¸A³0£â™SŸ¨8«°v´|¶kº,»ï¹Ç´[²ª’œ§™Œ­³«%¡Ä“Õ‡ý†gqLb Çm ×z å{¤…¤Z»ï½]¶²„¯Æ«•¦Y ¯¥Z«a« <ª %¬ ‰®R  ç˜ 5 þ ,þ #‘‰¶”µ¤˦ >¬ ®Z© ›¨ ]¦£?…M\CNýâV Vm ûŠñž6© ¯ï±² >© ,Š Ee T‚PIX @oýJŠü õ­ÿJµÕµ²g°®ª¤Ò› ’'Œý ä˜û ¨ÿ á­c¨¥’¨¶³þh³þs²·Þ¹iº7µ~²¸¡ Õƒ k{n`v}ó|ü †Œþ 4›ÿ®¦À¥ÿ M¯ý *´þð´ÿÔ«¤¨S°i®iµ´5©ýX†ÿ —yÿ«f:\Ä] »v þFwÿ¾fþ }wÿè Ò ‹e Æsÿ{uý5~'Ÿ £¨ >«‡ºÊÿµ©=zÜQïHôQ[i  ’Í®J§ަ”¯>°Á¥J“ —ÿH©q° «¶¤ › Œ£ß¶9¸¬ò¿ Òð$“¾ù¹þΗ°v|ý|Å|ÿ¨ƒŒz0V¬‘‹"kŽ"³‡ ëx9] …TÉb§p¶{ü?g…‘vŽ þ î–ŽŸ•¨Bª–¬Q±X¶¥±(¨ª©®,ÿã–”¡ÿ°7¹ɼm¼Ì·̯ †«¸¢Åœ:¡®§š¦¯£ã£ð£˜W‹Š…€Ž€C†ì‰7—Å´ëÂj¾Ĺxµì·ܺgººî»–µÆ­`«N°^¨±—ŽŽ`‡&€äfŽPŸ“©Ÿªûª ó® K°v²‹·X¹?¸p¶.±ªsœkšŒ ûˆ n‡ š’Þ¥c¸»»tºͳ“«¨š¨ͬ!±޹Ÿ»j·è¶Òµ €³¯²"°­H°–´'§C–9†œ€¿†gƒ {Ê€〠î 2«f½k»µb²W²±´¯p¬ž©“¥ÁŸuŸ…0Ší¤š§ µßµغÒ¹e·A±®­ªL¨M£"¢k¢ œ¤„£ï–Aôxþb†þÄ™˜¤ {®æ²ý³,²{®U¢Á•¼†™zI~ÿ ¯’§ÿi­ͯO«£¦Õ¦®¥ß¡Ù”† ă²°üóÒüé»ÿ Á¢·§›ª ³¸´¹\µ2¶q»u½¾z½ƒºι“®I¬m«X¥ èš$”þÅþ”¢ Ç´Ò¹_ºqµ¨”š“`¦Ž—1v¼^€kû¹½o¾ê¿P¿â»Õ¹E¯_¬® ¦² ȘpþúþФ ô´E¹d¼V·n® y—+ ø“ÿwt-bjþoûiý vnwrëm§kq®kÂpÓŠÿb¡¦““Ž1¢ª¾q¹W¹ ·/§4‹šVVvqþ,‘þÞ±j¶ž³ÿ¶³« "‘ŸÕ©f§Ø«m³é³_±z²–°~ª ©þ \ûg‚q‡'› ^·ü#±Àµ%¸,¯-œ‡Ѓ!¦ˆF‹é£¤V›€Ñ{¨^ ^ùb j n°loT{ b…!¤3ƒ†‹‰ð}!kY[Òd;yWv|vÿ…H‹Ø•á §öª ©¿«Í®v¬§ç¢ž› 0ð‰ ¾™ N­ ”µŒ¹‘Ã!Á!²wª¾¤kŸB¤©ýª¥º¥r¥ž4•EƒrŽtƒzÿV|%…'›ö´=¼žº µ ®«¬â­‡­­t®Š«$ª+®¸°ü¥Z’X…å„ó‚!Ô‰!å™J§‰¬¼« b¬¬ÿ­W´3¹Þ¹ ¶u±v¨ç™(mL‹ÿSŽÿØŸ ´B½»Ý»º ·±6«¸¬G¯˰Gµœ¹Ò¸¶´*³<²βʯÚ® ­ލ¤ƒ©N§mŸV›ÿ1žƒ«¯¢Ž›ˆaœ c³á»Z·,°”±,³±į«i¨$¡$Ñ‚>Œâ˜v ‡«ˆ¶À´ä´@µݹ§»+µª°n°Н&¬Y¬Dªª˜­¨¤š—™6¦\®h³d²á±R°ì±ªð žž— èy `} »¾œÆ‚³è–¨«Ä¥Ì•íŠq.–e¡˜­iµɹ$¶”´ µƒ¸¾0À–¿ï¾ç»5¶ž¯­®q­§% 2•'ˆÿÿ˜ý µ©þ ³ÿ:¹ã¾|¹ɵö§C™í—}ˆ!³lha jFpþ^jþ 6w1xSp~nlyŽqpb€šçšS‰§"ÀÒ»‹¹*·´­ G‘MWýPÉkƒk‹Z—”›þªŽ‘'£˜5©Æ«ó° µܹR³ß°¨ ì¤ Xªü߆ Œ6²ÿ ¹Îûľý#͸ݶ>¢M›²‰Ö‚ÿŠå“­³²:¡¿‹"h  e5a rm þr4sws›zåzìp Tus{€k}4oìod{+‡³Q€#ywZ‚Üš›« ­R«‡¬Ú®S«»¥О¯™ê”…ˆJ v’ ©  ¶¹ºÅ·õ°X«ã朡µª¤¬ ©¨L¨ t¡y|ifmSu x} ˆ=˜m¥[ª3©•§º¨-©à« «Á­I¬h¬7¯ž²©f–DŒÅ‹!p„!ƒ È‘œ£ú«áªº¨ ̨"©¾²…ºu¹´¶4±©œmý‰È„A‹ ó¡ ¯¶Õ¼¨»âºè·Ÿµ±Õ¯ª±´²²̶#¸·Õ´•²!±n°#° ®i©Q¡T]žs¦å«©»¥ñ§ §Ç›´Š<…½• ž«=·L´°š²Y³£±ž°‰«ž§¾¡ŽH}ߊK‘vž ­ ª‹Ÿ™ K¬–¶N·°Q¯&°²n°>¯ñ®Ó«ɦg™S˜›¬¦I¯дZ±’¯£¯u«™¥ ΞU£Ï©¹¢ hzØo—–v¾üÈ[µ´¨öªâ¬§ÏŸÏ“ÿ¶€‚}ú‡¥ŽA©¥²¶·³~¯ E¯ 0² ‘·bº¼æ»Á½y¹T²¯¬2§Ÿ‘á„ÿîœü ú­üQ´þ|¹Û½´»¸ªØŒ’!/{"Ûd©d›g tEzþ q‹þ ¸0p~nÊncjÓm q2|~€“ˆ?¨ ÀV»+¸ó´¥C’U‡M=kÄ}bzñn}FŽ f€%„ ´žñ«Û³Ù¸—¼q³§­§X”ì•%¢‡¹‡°›Èü&þºþ &²z»¸Šª„Œ…UŒ"X‘"€¢ñ°(µ©™‰.|Sm ­p &óu#øvcv*s:n%c =cRwÿp€ÿs{#q¡x*…p‚oz†w¥lÛw”«®Lª¬6®«¤¦{ŸH›‰—Hˆ¢€(+§Ò¸ž»8·$´|¯Ý« NŸ ù–žUªõ­]©¹§¨]£1’P{Ãn»qKuguxÉ{ €Š!m“F𡡦ò©Áª•«|¬5¬®f®«ø§–cŽ´Œ"Õ„ g€D‡¹™¸¥ѤÅŸêœ!Т›¯çº;»ð·¢±’ªBŸ4`‚ }ˆ ±¢ ,¶u»}»ž¹Öµ+´&´%³¤³¿³ µF¶î·…·èµF²¯6®ã¯ª£ ù”™’I›V¥‰ªâ«,¨[¥,Ÿ“ƹƒD ¦ o´²¯ y±C³â´w³ˆ«¤¦8 Ø’ö…é‘i‘n–­¤¯œ´RŒiŸ ®X¯©«%«/¬±â²v²¯¯à« cšp‚ †«›®¦¯´´å²¯í ©vÅÏ’¢C¡ ž{ ½h ^{ޤ b¬§¯M«T¬­±¬<¬ô¢i’Ý„!ŽªT±´¸n±ò¬/® ¬  ­ ° g¶ß»!¿%¾f´ްÚ¬0¦}žBš‰þežü n¯ü¶þºj¼,»·ºð±¥¦*s(jjtmoÕ{ÿ‡@—ÿ gˆâw p éj wc ˜päq "÷p $ywpƒþc¤O¼•¹ϸ·³z¨ «˜ì^ AM Fj ‰ RŠ Bf i ™vüs Œz·Œ ¥¹¼³¹˜¯‰¨ñž½~~?€ gYsm’p¦"€¤žD½ ÁŸ΂3}S†]‹Œ'¢•&€¥_µŰ×­·¤r¥ wˆ &Êw $Ïs ÷pÅrµnV`S]quÿù}OzŽw%} |—våußjʉ|Ž€ó•«©©y¢§h¬ߪñ§u¢²­—€Š©Š¥™çª·š»·´®M¥ t” 0‹=š<ªg®Jªk§­¨(¤Õ™ÂŽV‡=…Ì€”yº|¤}z}Oƒ¬‹ðšÿ;¦Ž«f«è¬”«”©æ« o¤—šþ—~Œ@ˆZŠ"Q„ù|f…¸“Ÿ—L••ížö®ºÆ»øµœ°ø«@…¶uŸsjˆa¤ µº8¹ð·a³’³G³â³Ù´ºµ@·½·Ë·\¶ãµh²ǯ•­ܬT§-¤Ÿ”‡Ÿ6¦Œª¨ï¤âŸ1˜,‘KŒDŠß’ b£ Ò±£°¼­ Я ô²È´Z²ú«Ÿ¥÷¢Œš±˜ n¢ h`™Ÿ1™!”“¨Z­_­ U«²¬¯¯â¯x§u›ŽÓh¯~™ë¦5²pµU³A¯G«¦C—,ƒ†H–®™-~Wy ³~ Ž*—ë§Ò¬3¬;­2¯¡´/­˜£= 8¤è© ª÷²ñ¹L³¤­ä±ñ¯Ò« Þ¬ زo»¤Áy¾´—¯•«÷£q™·ŒQþ¢ý Ù­þ€´ÿW»)½h½@º³´Ž©Þ•sbkÍ}~ ‚5”SšôŽì‚Ì|Oy 5r€¥'cƒ " üw–úr§ÿZ¼ÿ·ÿ¹»#²ž©¢¯¬:²zŸ1¢y¨D© ˜¦ç¡÷œZ–ê—3šÿ¯šþvÿd¦ °{± ° ‰± H´7³[®¤«¥æ¤£O­ îÁÿ ø°i¡»Ÿí»žòžœ˜ë§ï±ζ»²“°/®g­<«x¡ò‰ ÀZãT MqŒ˜e«Ÿ¶U³”¯Ûª=©!¥'™í‹›‘žžz¡‡ÜŒ &™ !ލ˜¦±«¶¬l¬]¬~²f°Ѩ¬§†«”ª«­Õ¶¶Ž·÷Á¿ nà º‹­ñ°—º!Àjº¸±ÿ­–¨{œ!•=Œ •þ Tªÿ­þú³Nºö¾J½\¸4² ´« ?zåg|p›y…ôÿ°¥Ý—ž‹&2ˆ%IŒ܆•!HŸœë­ÿ÷²þíºÿ·@¹l¾<¾§ŒÓemBn¾^ÜZ\…£lŽ"ã“ "­ޏx‡´ ¨½©x$†ü#Ýl"õu0zÏwÔ}J…t¼u^w yx t "„ !à“¶œ n¡ k Ê¥A¥§;ª­C®r¨¦‹tu ©r y#ŒxÿZ’ÿX™ÿ~‡IkÌqÍvl—Á| utqyÝšW”Y“qœ÷¦Ý T™E£¬À¯ª½¥¢.™ŠxŠÝ"­e·¹¾µʱC­Ô§9–5‰’”¯¦q¬Ì©Á¥¥t¨ø©E¤f ÿø£ÿþ¬‘ÿqŒê‹µ‰ù‹‹žŽ–˜¡¹§Ó¨/¨ʧ3¡Ž’òy¶m~wn\ Óƒ´…¦†Ç~‚| Qœa¤T££«&¶µ¹ñ´­‡¢ŠŠÞn&f¡y ­™þ ¯þ I²é·h·×µŒ²вÙµó¶4³àµ ¹r¹‡´Ƴ”³_°i®ž­„¤|—®©£}  ¦Cª©ª~¦Ç¢Iž¦Ü¡Ë¥ ¤-¦É«½°ú³)µSµYµ²±Gªþ©œ¦ý¦ܧ.¬À¹"µs¨ç¢ð¡§©c£n¬ä¸ɽ•¸£³ƒ¯ ¬Þª9–Ws–KzIçiì—гy¶ ±ªª¦k¥í¥ë ߘ£—‹«Dzn§¤Gªâª|¨ü¨’«n¬ª!§ì¯±6¨S©ˬ®ñ²/¶ž´‘»öË MÆ ÆËªÃ쯷²ñ¹•½7¸¶³ò¯¡§Z˜j‘¹‹ «šý ö­ÿ´°ÿÜ´2º–½ܽäºà¶¯“§Z“ b{ ¨gÚf¾}ÿ¡ÿ ­©Ÿ¼&‰"Ž “@Ÿ8®3³ÿª´ÿ@³ÿs·¹á¼°¿A¾bµ˜˜K×|eaM;PÁ[…̤¨›¨– žy¯TÈ;Ô н¯©-“_@{ÿ8s´|~|ö…@Ú‰ªv ïo"í%@ )oŽ !‡ {¬ «€ªߪm¤µ£D¤8§$¹«—¬T ;Š e€§~#y}›ÿ xªª•³wB€ )‡ñ“»3“ 7Žw“ÿ«™¿‘V ¶™ ¡z ¾ .¦U¬­ç«l©¸¨K‰Ï‚¾–Y­ó¸÷¹aµo°š¬ƒ¨—݇gð¤í¬¨F£ݤ𨗪_¦É 2 ,ÿ“—ÿe”ú‘8“õ–j™x ¶§-§þ§6§¹¥Ñ i‘/yªqöº‡}… ß„…=Š<‹‡Ž ƒœÿ)«$±ª§Œ«‹´à¶p°q­7¢ìˆNjjlæˆÝ¡þ@°ý /²ÿi·"¸D´j¯ϱ¯´ð³Q±¬³…¸l¸y² ë®k­–¬« ¨ª›wŽB —¡¢Æ©„«ïª;¦;£á£ð¦íª1®*«®*°‹³´®·ä·è´#¬"¦¥§9©¢ª”©§w©d¯C­_§-¦Œ«®˜«ŵ¡»l¿R¹éµ K®iªþ¥ïŽ‹g¥FuEØl÷Ÿ¶¿´®¤©æ¥¥Ùª½ªE¦Ú§(´‹¸·²Ë­û´Oµ2±ƒ©°¯ç³7« …ª©«Y©è¥¦- ÷¥º­ ³‡µ£½øÂ”»z»jºi¯Þ³h¸·¼«·³ü±c§ •ŒëŠÿ —þ ¨ Û± h¶kº•½€¾žº“·H·y²Ò° œ Ñ eom›þÖ¢ÿ(“"!*€‹† (‰ ÒŠÇ› e© ©UŸ®!¼¾Ô¿p¸Œ±©Ÿ ’q…Óg¬IqNë\ ñ“™Í—6™  =«8ÄžÌ J½m«¡¨­ O—Gz*yɆk›&œå›ûŒ#§„ $8)ó–-’'Ÿ Y¬ §!­˜©!’¤ã—隘™*v¥f«vªþ¥ 4š†˜®ˆúœ½«§©•Wœ¤û¦^ ¤±žê¡,š˜‘ í x’/›gŸÐ¥ª¦­¦­ù«6©W¦ †š 8†j€x–Ó°˹ä·õ³ÿ°]«ï¥^z9‰`¢>«t¨¥¦J©,©i¥  zŸTšO“ë”Ýš­¡ ££¥Ü«ž¯C¬oª ©p¦§¢ê˜÷†¿|†Lf…®ƒR‡qŒr“O£²´Ô¯¦ªˬS´¼·w°s¬(¤ØŸt¹|Í• —¥þ™¬þ€®ÿƵ"¸Ͷ! ±±µ³º±U°î²û·W¶É® ÷¦ A¥3©Š¢Иâ§M™`¨ªmª«òª¹¦æ¦ µ¨!"¬®Þ±¯®¥°±»³·X¸+²ª\¢N¤ï©è«ùªO¦¦}«J­£©¨À¯+°¯·¢¾«Å¿¾¾À¶¬ ¡½ŒÛsŽXžL‰j ( M·À´³®b©M¨8«+²Ú°`«“­&µ1· µ ²U³´q¯ ‡ª ç»ZÆ·´¶ Q³ uœž<‘ªŒ¤™ΪЭ[³¹X»x± “¬ á®s±³Õ¶ß¹ ¶Ȳ“«*Ÿ…Ž /ˆÿª…ÿ Ï,¦ ´ lº6»9»b½H¸à¸a¸p´·o³ ŒRd e Ÿ‚ÿóƒ ^uçeSq³z’{pt èŠØŸÿ– Ö…¡ЧÀ½~¾»ç°|©ç¡-š:нl­UŒ[éd|Ê›aœ¢œ$Q ¢ªD³²ºŒ¶(®o©o³q¬‘3~µ‡‹c–öŽÐ’ø‘'XŠ (’,@“1C”/Ö+Ôž ža¥ Ïš’†ãeŽ"Ä–ºžü1£+ܨ2¨m• ª«)¨|§¨Чõ¦ϧ6¦¸ ›à” Œ£ˆ,“R£&¬Z¯d¯`®4ªœ¥… RŽh}1}Œ˜Ͳ›¹¥¶³T±ª¤å$k‚tŸxª’©´§ð¨¨ §„¥ê£. ˜;‘–±¦H¬i«³­…®°²-±z­m«Í©!¥p  “Ê„؇ð”哇‡ó€šƒJ`™È« µ;´Á°z«§«ϳ¸²û­ § ”΀‰›žþ ¨ý ¾©þ`«ÿS³¶¹-¸œ´ý²²ö±y¯t°”µ¸µjª ¾ Ò›†¡þ”ùˆ{†r´¢&¬©Ѝ—ªxª¨v¨à¬(°º°;°®.¬Ä­õ¬·®X²\µ¯w£b˜õ¡‹©;¬ ʪ–¤¦¤¨Ĩ(¤¦ž¯ä²—°C¸§Ê)ÚÒÓŸÝ˜Ï ¥¶a «Ž È€@_Ðj h’¢±«´w±«€¯„³‰¶²ׯ°³õ· ·!º´"± û²³„³†ÀS;śÉPÊî/§ ý˜‘ pÓ{› _­¦« °×¹œ»“³†® +­á°Ì´c·s·´”®å¢!”ÿ† í ùD‹ù¤ÿ :µÜ»–»Šºü¸E¶H´²¢°/±u–“wëa ›c Z[ Š`p\Ïc Žjp3c ™xt’ÿ¢‡ …y˜þªªB»¾ ¼z¯”¦Ò¢eš¬‰]x"vvÿm [€l¢¶£!Ÿ%#¢G«ó³µo³i±o«[®N¬ΣȘ'Ž7—r– zl{µƒ$©ƒ (µŒ )E .‰’/Ž1þ’ 'Ž 'š“ *h~ 'à{÷m®€Ÿ†ƒŠºÿ ¤ˆ!½ƒ$7›á­ܤÊ¥]©}­N®~¬…©›§l§©¨ðª^¦Z›o“zˆÝ|…ˆ>¢b²j²–­˜¬5©C¤Bš+Šy ›{R—m°F¸·$³ دª¨M•2w$hlÍžΪ©]§u¦G¥.¥‚¥Õ£ý j›™F¡ ®V³b¯/®¯K±²Ù³°Ý®gª©§s¦öžÕŒö‡Ï•#—Š˜~¥}Kˆœÿ ¯¦¶3´ °ªT©%«°ʱD°0­ýžÿcˆŽÿñ¥þ ¸¬þ Ä«þ,«ÿþ±'·%¹ü¶À³² ¯—­°¾¶P¶´¬ !_þ¬¦øà–úøˆ¨Š€™L¥ªï¦þ¥õ¨©*©“¬¨±ø³U¯߬ᩱªQ­¡«ƪî¬è°b©c˜"užŽ©«à© ¦3¨a©’œ•ä¡„®´³…°X·’Ð è PäÏåþ Øÿ 5·¢£ªš=£ÿ œþ  ‚¿Žû§A±³®à± ɳD´x³)®¯f²•¶´t²!²_³œ¼›Æ ÄPÆÁÈ ÒÓØóÓú¾Šþ l*oÊϦf« ]±²¼¾l·e³!±G´`´q¹̸˜³W¬°Ÿ [† R€eƒRŽþ sŸÿ Þ°†¸Sº¢¼¼W·³_²H±²¯¹¯  +“9 Ž}èouhd[\Ë_gmi¡p [€U}„ 1œÿ´N¼½œ¼x°ȦÝ¢y–G~} ‘þ dŽÿ?þ-Ší¦ —±Z£#Ø¥-¬·´Š·[µ®´|¯ˬ¦ʦ r£ fšˆ£<˜÷{Špìr!ñ{ #Eƒ%¥‡ &lj)F† -©‰ (“„ &+ *§m&Äc £_*m×wôv,i=k#v$œ“_©«ž¦3¤ÔªË­Õ¬`©¬¨¨¤¨ï©>ªJ›Øù}ªp}Ó›u°£±3ªÈ©>¦õ¢¸›ª‘ 6 ~ !˜º®M´æ´ U² £­ ¦¶”|#u©‹Ø¡«¨N¦»£G¢©¢k£?£¤¡ŸžM£m«J±Ù´/°‡®j°´²®²¡³‘´?°׫*©ó¬%§­”gˆ m’ã—oõ…k~%~5‘¦s²´c°.¨•¦§´ªª®&°”¯j£õ”]–Ȧ Q®ÿ G­ÿª®¯µ~¹ظu´-±^¯®¡±r·º¸‚¯÷¥O¦ÿ®öˤúM”-œSª«̬+¨¥!§I©&©à­ ±¹°g­Û©R¦ö©Ê­ß«#§ O§?¬¿¥›–c”4¡ ¨Þ©y¨!§®ò±D˜/‚Ÿ.±¿·D°ò°O¼çÐ?Ø“Äýº3­\ªë¨0±•´ÿ–Ÿýž—ÿ…™µŸi¯±µ\±ï²?°Ù²õ°è«Ç­n®¨­ÿ«¯¯ÿ²~³¼‚Ê’Æ À„Á 4ÏJØÿFß>’ÿys«pdŠ¡¯ö¸޼½hº¸´È·L¹0¼§¸&µ:¬‚ Ó”y‰ _ƒ ±Œþ &•ý Œžÿ |ª %³ÛºO½8»e¶¥±α‘¯o¨Ö¡¥¨ÿ®ÿ«® 6§ Ù”ÿuÿ±V†U‰X¯dªppCj OvŒ «£ì»½»5»r±W§%ž`‘ÃqKw ›þ©š–…s‹r° ï¾D©K¥»¯#¸ ¾F»º¬¶µ¯µê´ iŸ ´–ÿxœð˜Ü…hz¸o"no!åz R}!Ù€ "ã| 'Û| Œo Wr pb  \•]rdŠb•e1_jbûuÆ“…¨ñ­Œ§!¦-§ó«­«Ò©$©¨‘©«C˜›‚ãoAfßy9•ô¨†©̧>¦´£Π˜Ÿ ¿– ›€ c} ¾— ¬d³³ ²õ®‹¨.œçZ‹˜Ž¥4¤Å ¹žìž   ~›àšJž‚§ú°{´mµ×±u­ƒ°‹³#±”±±²¿¯ݬ’­ú±Æ®I ’‘ø•JŽhÉ„þ—Q©;² ¯¨_¦‹¨J¨û¬3²s®Ù£´—„•ÿ½ ÿ ä¬ Ô¯ ^« ¹¬ «³ï¹9·;²è±µ±7²´s··[°¤ª™²šD§¦ëL²î°«Ô§Â¥[§4¨¸¨§Ū¨«¥«Ç©k¨1ªC¬q© Ù¦ °¥á©«¦=¡"¢Ñ©©e©]©,¦Zªì­ ê— wYž›³¼å´hª5¦ ¨Œ¯i­‹§Œªv®n­v²=¶Z°”¨Žœmœ©¾±³æ³í¯¼®ÿª§§f©¡§h ¥¡˜«·°³°ý±  ¸ ¼ã¸Z¸cÏ ÂÚÄ t—‹ŽX‹Û¬¦{³Ǽƒ¼)»£»»æº·¶¼b¿~»q¶ð®ϧ5›çŽň ´’ü ù›þ„¦ܪ ª¶Œ¼ø½‡º˜¶…²:±¬ Ÿh“嚺ýpÇ 6¼2¨ áz ÒUMT ‹\ÏeeúhÿuÒ‡ý ’þ§n¿Q¾>¸j¸†°¥O™Љ„n‡pÀ™[Œ#J†¯ ÎÀÿ¨£:®µ¹¿¿¾s»£¸ŸÉgÆœÆ^—Ÿì”<‹"çr$5g îr…{}z ¹tÚkDkžbbs_Íd‹b‘d‚_Õd0q¨‰Ú¢‚­€­ ¥g á©X¬i­ ©V«@©Ê©c¬x•®}ûk üh `y…‘ÿB ¶£ÿ¤m¦÷¤i¡ž Òy ‡xQ”‚«´j´õV¯p§¢£œ{˜ûŸw¥à¡ö›˜—à™9[žd™˜ZŸ׫‹³µ’´Ü«s§«űy±_¯m® ­>­M°[µ²µ1¥è•`’a”zšüŸ–‰ü‚Ì"¥õ°¼¯Þ«¨ƒ§ð¦¨©R±e¯³¥¥›g•𠕍u°Ú® Ù­ ÷³È·³8±X²¬²¥´+¶¶¸¶űb¥ ê˜ À ƯÒ³Q±âµŠ­š§Ó§®§ç©¬©ާu¥"¦*©¬V¬m«n¬Ÿ® ®z« ©ȨN¥P¨ý­P®À«ç©Å©t¥$ŸÜ›¾’ nx v´+¿θý«?¤ Í¥j©%ª¦­ž¯í¯Œ°X³Ô·µ2¦-žy¤$©ñ±Rµl°ò¬%¤š¢ ¨¤2›l›ö§!­”±âµ ¶y·ê²z©V²×¶ö¦ØÊžÿŒ¡ÿí¡ °Á·P¼è»š¹ »“Â@Ãú¶سWºÚÁ"¼”±ö¯ ªBœÂÿ ¿”ýæ þÒ²Á®…º ¿<½»}¸ø³²Ú­l¢)šÿÓ‡þ²þbɰ· û¹ ÿŸƒÿ ìVU idùeð` ed—‘ãœÿ f•þÿ¦~¾ʽ!²)°Å­B¥›ŒÖr²p:„¿”2’˦÷ºú¨Þ¡’¬¶4¾yÀ¿X»®¹|ÄË»°—n‰÷Á¡¨¢ƒ¢ƒ€ol(r{4zusªs„laR]ã_›b¤bBeŸ`!` gb e€yšÿŸ®ÿg®– ÿ¸Žÿ½œv¢|¬#©Ú­ª\©Ì©–ü†ã{ Mr x‹cœ™¢¿¥[©e¦U¡——£„êv } þ™œ¯:´Wº¥Ç2»B§y£eŸ€šñ4¤ ¥Ÿiš —Y—ˆ­Ÿ~™o˜9¡­׳ಽ­þ¤àžü¡Ó©Ê­å¬ªg©ý«ì±à¸|¹<¬Aœ •¹—M ˜žâ‰vE˜¦©K³±è­|©/¦0£b§e²²Ö¨'”*’ ¯œ©§@ªvª¯–³ ²6°/²´ã¶¾·8¹·¶³A­‰¤±¥«ª²¤¶+«z£ ¦›©g«ùª¿©?§ ƒ¨ª¨¬­a«H«t®ð°÷¯%¬ §_¡í¦”® °¢­@©}¦Ì –±“¨‘ a”H¢U³%¿º­¬q¥¤õ§^«“¬ì®¯_®¯2³A¸š¶ª°é¨âg£j­à·m´1©L ž¤ˆ­§©c¤:¦lªJ®ð´‘¾o¼ƒµ½°îª¯«w«Ñ¡7ÿ¦¥‘«ß±_¶@¸Ù¹½»\¹â½ÞÏ uÛ ºá§R´eÉÖÈî·t´Ë·ú« —þÜ’ÿ£ŸÔ²ƒ²L¹Ú¾·غ4ºR´È´D´&£u™ú?™õ"§ý ¾+«úÕ² œ„RFT’hn1miž”å¡1•á gµ'µU¬R®¯ܧ^žß•ÿúyÿ°|c”•x–“—ø£ã·j©ë¡¬~µE½À¢Ào»Y¶ɲ¾¦ä…ûb²}—– ¨w¾ Y ñu t©| —xµr¯pðt¶rßeù\@_Daä`_am]é\ æe C{ÿ#©E±d°b  ö|å†!c—üŸí›…¥ ´© "§n¥ú—ÝÿýŠ ä| åvy‡ ):¥ĨVª‘¦¼¡*–Z…™| Љ ­¢ÿ Ŷz´XÅ Æáþ’Ðÿ ƒ¬¤!¢Y™i•£ ¤©ð¨<£¬žšhžî¡ò˜J’w›%¨¬»©ô¥¤™Eq‘­3§r¨…§¦ùª#²й¶¹x³̧˜c’—H”…xˆ‡˜b ¶©.°V®7ª!q©§f¢`¥Û±m¶"­:žY’™ÿœŸGn¢«°ì¯þ²ªµ=·ž¸Yº·¨±í®=¥JžÈ 9 M«ü´¬£G¢h¥©bª’ª Ùªë«ç¬…¬ˆª§§C¥,¦üªb­«­ì©> M¢«g²§°¨g£û˜É’ Ë—  ´¬l·µ¶V¬†§£§Å«ê®©®¬R«z©A«§´qº·ì²º¬{¢ƒß«i¶á³@¤oœ:¦ܳ¾²°å³ݱh³3²÷À¹Ž´þºî³ºª°ª¤¨Ì©©³±´÷¶±Ò±J¸ï»g¾óÑ ¸áÿe¼ ¢ ¯“͕Ѽµ­¸A³gŸþ;–Ô¡3­ ¿©W­`¹4²ë·w¹§´”µ·æ¤˜ö*´õ«û 1± ¿º ¡ÿÚzIW±S¾uÿ5~qË_ 'y g‰žŽ€šX¨qª¤ é¬ µ-­¥–­|E‰fžÿ§žvšæ—¨¡o±*«ÿ¤š«ê±þ¸Á¼P¾e¹[¶ã´»žBv×S¢f l€Р q­ Øws~"M€#•y"r ìsôuâxo³búebÕdu`q\Ì[+l¥w­–I¨ §3¡þ Äzíz}ƒ&Ú ˆ œ²¢è§¡¥p˜‹’ÿkŽ  äx ³… Ïœ§„¨%©Ϧî T•§…| ~ˆ|›þ¿«ø®· ÕÉþ¢Âþ s¬¥2£˜ yœàª¬ª@¦; ' Ô¤Ÿ˜Š('— ™Ô˜ ù–`ˆÀ|Ž…:”V¢”¨›§„¨%ª±¥¸T¹(¸}®ò›RŒ!¹‡"~ v‚=•(š'ž-¤¤¼£!ȧð¨h¥Ÿ¨©°`µ°²²¤Z’ùmŽIÿ±•ÿ]‘¢ •«¯=±ž²ð¶@¸Õº>·B³:®¶ Ó‘˜7£ §j²[­Ê£N›“™¼£Ü«i«ö« ¬V®/¯R©á¡­ž2¢¨³ªâ®B©Àœ¯™þ§r³^³©é¡…•W‹“ÿõ—þµžǪÚµ^±}­t©Œ©*®°¯«6¥¶œ­£ÿ´¼ã²š© ¥°¢`¢²©a¯÷«Ÿš™•“§²÷³öÖ·϶´±p°£±šµ)¼ȳ_¬6°-²…±ή{±IJP³‹­ó«­µ$º“¹ݳá³Ĩ¿¡|¯i¾„ÄJ¸¹²ç³¯@¦e¡Ц_¦ uœðŸÔª´¬· ¹ò¶¥¸›¹ѧ·žó§ÿ  žþ ¢ý ñ þ þŠ ¯pƒoÿÛeZˆ§ŽPlìR q\ -b ±u6™¥å£·¢Ñ©5¸4·ç£e½u(‹}¤Ø£¹ž—A ƒ©«W¦á«ѱ´²¸¯¸¹¾³ë³ºžnÑO[W1j9ƒÓ“#„Á€"7‹%vŒ%+€$Ø{#Iz"T|#ìw3ri=d÷c³bû`ƒ\ßYZiþ½sŠŽ Þ¡Μ šþxƒ¶f!·yˆ†’N§¤šd“!Žÿ>†ÿ ²} Çö—¥Š¥d¦6¤òŸЖ|„\væyù€ VŒ`‘d’*• ¾ T©e¨˜¦ž›Ó’"›Ũ÷¬a¬Oª.¥¢Z¦VhŠª†…^„‚Õ‚H€| w‚ ð’c£©Ü© ©‚¬ ±£¸†ºí¹ÿœ±t{‹#"ºpöi –wó‹qÂ’™rП«¤§m©¬±˵µµ¬«˜âŠÚ‡¢ˆO‰ð£í§X®R¯±…´¶ ¸Ž·î´‹°Ë¢†Ò”ͦǨ­±D¯¼¤@•úŽY?©x«©Щɬ>®¥©: ³ Ʀý¬½ªÖ©®¥ê–¼B <®e¯«¨¤ˆ—ñ‘è”Ç—ÿý˜ý|ŸÿF¬v´°œ¯’«]§4«F¯Õ¯í¨Eœ M©˜ЫD³¤gžW¡8£i¨µ¨G \Ÿ$šR°å­~«…³ µà´T°Ä®Ô¬¡¬¥­‹­ì«z®¿³´Þµh³U²ݰµ±ä¯ß°0¶_¹†³C¡Uš¤´$¶:¸¶ð³T°q¨ê¦»®»°(¢ ”—ŽX˜=¡ÿ-²Eµ ¹L¼º[§tŒŽ–þ —þ Ÿü 3Ž öt©r~zÿ ¨‚ÿL–'†˜]|L 9O ìS`tR™œ§¢þ£ò©¶ƒº4Ÿ«;r?Šf£“¦ˆ¢›³¢é§ì©ݧ¡ªV®I³L·u·˺ZµÁ³³¢yjSS¬Z ºz†Ôzw‹:š™Ÿ“‹#©€#U!E†#Ä"x~er[h‚`r]q[\pY?f¯hÙ‰ÿ ­ þ›þ ¾–ÿEþpWo€z}|I}Ž*¡…˜Ð’ Oÿ zŒþ w…ÿi>’£³£¨¢£@¢Ì[+~ lr 5m uq÷ryψ¢A®ë±Ê®D¡k—(ž£©²­­yª¤¦/¢ا^¢‘ž‰¼„ˆ}°zõ|Z¤~«€ ®¼£תó©©¡¬³ºr»ÿ·þ¬®К?ˆ!dnøhFtÍ…,’.›ÿ\¡ÿo¡¹¡£`¦ª«ð²ĵ)²4«Ÿ™ÿ„éK…U‚BuÅt¡Š}¤n®a®-¯]­e­ó´M¸¶űŒ¡õ‹+‹™`¦b²¸´p©Ä™z^œ¦¨hªJªe¨«¨d§ Ã¥ Ö¥¤«˜±y±˰«ù¥—щ.£½¤¿ª£«"¢/¡ $Ÿ Ô™O—þ<žÿ«Œ±ܱ±¨­ˆ§¨!ý®ܱ8§ð›J”˜ðž¢vš@”O™œ¢©ê¤—Øšš£°ÿ}ÂD±%¨L­à±ù±’®´­8«¬}ªŒª¿¬‰³mµF³–²ë³O´U°â²²ã¶ ¸‘¶ž±î¡CˆÅ§‘·þ¸Ù¸ˆ·³¯­•£¸¤°ã´V  »•'…cŠNšÿ°§²~¹)¼Õ¹ ©¶œfþ Š£ü žü ½ÿ ô„I‡I — ¸’înQ rN Ò[ ']ÿè€ûX˜ ¨£I¥ôªRµ=·®œ ´vì0Šÿw£Z¥°¡ÍŸ?¤åªH« §§\¬¼´|·d¸Ô¹й>¹ý]¤ëŒÿÎj9] !mʆz‰K€ó¬¢:žâŠ#€|"k­…!z„!u}"oT`ÆYÞW VÛc1Z±^ „mVˆÿ¡ýb¡þ •ÿñ“ÿ…}Žn!«uìréinµwž•\• ù Šÿ ã‘þ ýŠÿ ;€Û΢{¢^ŸU¢\¤ã¢›ÿ ‰ ßt ¤k dkÜmu`‰ï¢ 9´ø·³þ¤ÿ¼›—¢tªø­Ö¬ º©”¥¹¢Ù¨£K’kŒ­‹Ƈòƒë€|‚ÿüƒsƒV½¢óª̨Q¨(ª޲k¹û¸L±ð¢Z‰Ò}Àyæj°iw­„¼‹ñ“ÿrŸÿž§¤4É›ŒŸ¨¼³µ"®Ô¦‹–j„€?ƒ ”zåmw¿“ݨq¯­O¬ʨÒ§À²n¹‡·(­¢š¬~¦oû žXµ‰¹F°g¡ÕšÖ¢‹¨ÿ«’­Œ«‹ª&§ ¦™©e±ð¸'·¯µЯv£Ƙ*”ÄžA õ¡'«J°¯w· ¨)”b’ÿ&—ÿø©4³²Û²¯®ø¨²¨"O«p¯4ªÒ¡ç›ÿ2š›”iQžʨº£C™œÿç¤ö³òÄ{¹'¯Õ°¤³ú²®Á®„­<¬ö©‰©¾±à·r¶C³$±³²h²Ù³´†µ®¸œ¹¸<³¥‰m”c©#¹S¹è¹õ¸nµ ¬ÊžÏ /ª’«†™ºÖ‚ú†ÿ¸™ÿ¥¨¯<·TºO·®V¨ ªÿ G¦ý ¹Ÿý <˜ÿ §—ÿÑÿ “ÿ³¤ 7‘æhW ~^ðzË€ýþ é7¨+¥ΧÅ«_¬­}Ÿˆ?y‘‹¥œ¥¶ éœž¦¹§ã¤¢–«ã²€¸>¹¯ºS¶¹¶„© ™þc„þ |ý2“ÿ }•#•FŽ0” ›ü–"Pˆ$õz"%||ƒ˜wn!Ódo\—W Çhý ùküw9hÙa2c Ôyý‰üM†ý¸tmÏjz8Œþ‘ý¡…*šòŒºr#0s }wÒx u5xZ_ ƒ‹ Ïÿ ˜‘ÿ ~‰ Aˆ ,” -› õ˜ :— õž¢ŠŸ ûš(ƒöj Èg ³l?gRf}f˜T¤Ö Ö›ÿyšÑÝ¥gª^ª!K¨ P¦¢¥m  ›—‹ $„ ý ʘ¦›õ”ïm’ª @¦x§+§&¡œ¡¡ê­¶ª¶v©¢ŽkÏhÄng Vm¡|Ùÿ{—ÿª›˜¥ã§¦£¡šã•œ™ ¤¥ γC¶’­ÿ,ÿÞ‡4rcxõƒ „  '‹£U³N´Ú°ø­¥ɤ"¬¿·ÿE²ÿ (™è‡.Ëv|­Ÿµ¸T¸ù¯Ñ¥À¡S¥•ª‹®î²²»°f«ú©!¥ƪ(µ#´ð²ªC›c„v…y—‹¨-«“¦¢ú§Ū<𠹇 ŸˆŠŽ¡âµ¸¨´ ‰±ö¯À®Rª‹«U°G³b´é­‘"”oˆ¤}x–“­®ªͧ{ªºª3¬L³½··½ÈƵ¼Ò³÷®ªë¨ ¥[ª·»ï¹W°ò¯¸©!ø§"D³B¼R¼»ý»V»3¶{³¨£ ­h¹;·E¸´»œº¬V›ÆŽ,’ì™ÿñ–þ¤’þ&Šþ—ý €¥ÿ lª©«¶´e´¸¶s±À©È¥ í¡ ©˜FƒÓoi}oálo… ùžþ ®ÿ s¤ÿ†¬ÿ +­¤l¥åžÿ-“ÕŒ †Þžø¬_”IŒ5›#¢ÂÈ• “瘛CžOž½¨T´·$ºz¸š¹‚´)²ÔžÿÓ}Ôˆg–"Ÿz¡ÈŸ`—”’(k¡/¥½˜ÿ«€†–þ šþÚ„þŒn¯fl@{ý“üæþx2j¾rÿ|ÿžƒû `ÿ ‹ÿ¤ •)|">z#‹| zd|{ßt9ƒ ¯†É † §‹ é— i `š l— Ÿ£a£x›½† ïwàx¤zvylÊ{¸6‘¤dñ—ï¡M§¨‰¨Q§¦™¥ ,˜åz… ”€ ³‡ -–0œ<”Ì/’M¡š©Ò«©Œ¢›œ ¨°j®ë§bÚwür ld he Xtð$¥Ÿö¦!¨u¥ˆŸF¡¥ `®ý´µÿ­þ$œÿ‚Jmåvƒÿ Ýÿ !~I‰,Ÿ̲ö…±÷­Š©Y¤ɨòÿž«ÿ ¨~уá|á€] ÿ¿¸˸Q°e¦µ  £]©įH³à´ѳ)­Ú§U ¢Í­­µª ^£˜“­~}Õd¡-ª ¤ ž~¥?§”–çÀ‚ ‡†˜ɬˆ¸±·!Õ±аð³G©×§ø¬³„¶é¯Û÷Ž’¤ŠVyÙÇ­x®¾¨b¨©q¬Ê´¸Ú¶h¸ÆÀÆS¸:¯«ª-¦j©xµv¹L·ص.¬ã#;›&j¦Ñ»6¿#¼mºÒ¸Ê´¯°è¦¤á­R¹Y·¸ú鸔¯š¢1–eœA£Ù¢J£ÿÿ ¾‘=¢ž¬ r«÷¯в‘¸ÿV¸©³u¯›¨Ó¤´™Ï€üa #_ûgšq «ŒÍ¥ÿ ѱþ m©ÿ ¦­«C’‘"Ý$xše Wx<˜ŒªFŒ´‚œj£ÞŸì– ”ÿ•„–T™«žÿú©áµ¯·“¹¶¶µ ´¬ îœr$qî‡"– ¡§¦5 “%Æ  ¥œ,‡ “þÿ›ÿ „úeY`dp)€þ×xÿ¬mjgt}ÿ‘ýÏ–þ˜þ¾¥ÿ ™»|"oy$b| z mzþw mC|ðy:~ ýƒ ¬† Š ²˜  ½› §˜¦¤`¥U¡“ ˆŒþ‘$“û †b‹³•VŽƒƒ؈–0£©2§Þ¦)¦¦x¤С£›í‘È… ½ … 6‚”¼‘Œ‚‘µŸÕ«ϵ:²8©x£*ò£<©ª §G›>߉êw;a Ð\ Üi ¡Œ²¢I¤ó¨ ©`¦o¥!¦Ý­ ¶´dµpµÿ«þ}™³lÄr¯wq VpzE” ­Xµ”²J®[«}¥é¤5¦ð ÿ )‰ |ú€y|c„¡£¸½·=²ЩdžŠ¢Jª²®в‡³˜³a¯—¨-žãŸ¬¨ }© ¦ rŸ _‘°ÿ|¡ƒ\”ô¢é¤M¡,¥Œ¡ ž ø~ ‚$㣻²ú·O²S¯«ñœÈëªÿµv¶Ù±7¢'•F—2‘I}9ƒƒ w¬–¬#ª ¶«+¬¯®Ü´#´ç±ðµ¾ ½â·`­øªH¨7©¦°(³G°P±´£ ’  ’á«#¼H½Û½šº'³ײÿ«=¦«ƒ·±¸˺@ºµ¸´Ü©.¡ÿ/§Pªç©2®3« — /¢~° µ¯j®¥±Ü·{³/¯J²g«C§Þ„! Z FY¶f˜vü²‘þ'¨ †±‰­¤°†£ÿïvm#¹g "Fdpz|’–¡ $¸‰‰¡Ƨ€§x›“”¿‘ì¹²œÿ©˜·ù¸<·Œµé´2³ƒ® oš rq’išœ¬1©ã¢¸•#¯™#3Ÿ3› ¨ŒÿÄ‘ÿ Þ<\,Q™\JgjÓ_Á_0aßv¹ƒ-•ýà£ý} þ ¦ÿ ”žO!Æu %Ly :|ãz@oÒ\}|ôv | |‚ ʇ ÞŽ K– ïš %–|– Å£Á¥C¦o¡ ðœÿý£¨š¤œÖ¥¶]© 6Ž ‡´”—¢‘ª¨o¤¤ɦ6¥¡©k•~‰ ~† à‡ʉCÜ“ê‘â’œήÀ»Ϲ¶Ù³µ¨f¢ú¤"§c©’§Ä£ žÿ T qK] Œk ~n¤C¨ˆ©Ȫ?¦Ù§«£³Æ·ÞµܳÚ¨n–Œ€Ymhmçn›h ?g—lºÓ›¢¬O°”«&§î¤5¡'œ+b‚ôyÑv#vgˆ&§N¹|· 6³ÿ«\ U¡ 骂­v¯y±©³±j©÷Ÿ\ © 9¨ ¤ ÿŸ ƒ‘ ý‚–|ÓyqŠx¡ª¥æ¢T¡¿— Þ -‹¦‹î‹ tŽ%΢Ÿ¬¯±¯ÿͦ왆+ŒU¨¶޶ý±8¤vœê©™ƒ/zvþ£ï­ „¯›­|«%ª½°xµ|³)®±+»'º¿®ˆª¾¬Û´ °S®§æœì‘k€uý윣µµ¼ê¾ºtµ¶G°ìª²°ܶºܼ›¹»¸³·«æ¨ªÀ­k¯“´p°ãœG Ù£ U´’°0¬…®Š´J° I«³°n±®'¡ƒŠ#äZûS¤c £q•—þ [­¢²Ô±±Gÿ õhPÝR§VWqV€r‘Z¢œœ#8šï§ް¯T¦|›ÿf“v‘Šù +ª¬¸0·‹¶­´S³r²9«f› €wGz « [­ ׬¤Ô!Œœ" ‚ F– ÖŒþ 3ÿ …‡ü\éV³Yö_ƒg‹g9`/aNpÌ‚ •þg©ý5¦ÿ N¤ÿÝ¢ÿrŠƒu&Ðx!ù}txgh´U ƒ xz]~ÿ|…ÿ 7ˆ Œ Õ• æ˜ Ë’ ‰“3›ó¡ž¢‘¤ 0§ OªÀ³X¶T°v¤Ì®wÅ»™ÙŠ“:¡´©ç¨Ÿ¤t¥L¦9¤œ¢›À‘øˆ´ˆ ý‰$ˆ4Ž”“·‘ü›û­U¶³‹º(¿̵j¨,£ƒ§Æ®÷¯7«¨ ËŸÿ ‹„ ¢gésü’§Ÿ¬½«IªÞ¨O¨š¯ ¸¹E³¯V£g’¨ƒ roq²o~kmî}ª‰›˜À¤³£p£¡ž•”ô„gp{ÄoÑoχ/¦²¸˜·б¹ªÊ£&¢ªª­1®­±[±€²2®¥Q¥„¬ f« ŧ C¡ p‘"z¿u Œv/Œ£¦J ­5”Þ‘©™OžÈš~š ¥Q¥ ¤¢¥Á™ˆé6†¦¦ϵ^¶D²¿§Ž¡âŸ÷šCŠ/|…d ¯°¡­a© £&¦Ù±î³űc­0±²Ñ®w­L±Ó¸)³­¤{’¸ÅyÎsîn£‚¤¬·ž ¼n¸º7µe³u³é¶¹f½ º[¶ì´Œ­¼©Ы¬´©µ¬™Ü’ $§ ·Ú²|«'­-±²°®¯´5ºü¸¢¢ÒŽ!½_ïP}_v…Ÿþ ò² 6³ z±«ñ– å^ ƒTÐY«UÉa.~x’œ¨=¬ ýª± ³Ø·¶±k¥Û› ”Ûÿ ô¢ ™¬¢¸1¶%´³w³l±±±þÛŸˆˆMŒëªZ¯ ƒ® _ª À¨>¢ï¤¤+¡™ „’þ P•ü ì—ý {oW`j]€]\fÁo•h fùj y‹«žý'°þ …­ݦ¦—m€vx|Yußf‘Rÿ‰ Á‚ Ä‚þ à†ÿ Oˆ XŠ Ò‘ ò— ?’ ?޳—úŸŒžX› Ôœ æ§´º¸q³B«X°£»¥°à˜l‰´’¤ªà¦Á¤b§u¦Ƥ$¡Œ˜1‰‹Õ…?ˆm‰ÄŒA˜_š¨¹ª?£R¦%´i¸ð°®ª«ͳú´%¬ ¦§ Ý  ‡Š `pèvv’Uª!¯g«½ªZªO¬ø´@¸ò·¥³+¯™¢c—†5z2vA|{tïzdˆ\…†j‘ç›-Ÿ;Ÿ€h“{€Â~Á€Àqñl€ÙŸøµ”·$¯G©&¤¥™ª ­ ¯ (®ö® ¯¢­{©^«¯¯ˆ¯¶¬ ½£ ò òqAj ÖxÄ“ÿ'¥Ö¥Úž–›”•x”ÿ¾žÿ–ª;ª¿§$¡ÔšÚ¡™Á‘ƒ ¶z÷‹£ð¬I¯±¾¨–¡!œ¡–}‰Þ{ß„?Ÿg° ±©®"¨ÚŸá$°µ7´°±®Œ®!š°k²b²¼³œ³ë±8ªXšTôƒ^wÙj Lq*‘(¯‹¼c»¹ ¸ùµ‘µ(¶(¶¢¹»*¸зR´Q¬­Ь*¯Ó¶t¶ g¤F’Ñ” „«ÿ ¼¸}´t¬<ª#°ì³ê´‘¸5¼º ¨d”ãd ÅSîe Ÿ€¾¢ý m± Ú­ ›¬ Æ¡ ~Œ¸`?belÖfVi¬€ð›ì«~²!g´£²ù³…µ0µŠ­£§J¢ÿ˜þ ±¥ «¬¶2¼·MµE³ ²$³ÿ·¥’’!«©6¯ *­ ¡ª©ø§§§ù¦ÿ£Pž B˜ý ªšüžžþ †ƒp!fù`¯cOi}fWl°vT™ ¦©ü Ÿ³ýq±/ªÿ¤«ÿ Ÿþ ‘Žÿýwêy\l'bI[­ŠƉþˆý?ˆÿ ߊÿ 7Œ  t“  […Ý<2À˜ù•­­œ³ð³Ÿ±ç·#¼«é’)욢í§hŸ§ŸO¥í§‘¤j •‚„è}j‚X…e…¬„ƒ…®‡¸ ˜K¢›q‘Ö’­ >³¡¹ÕµѱѶv¶Q¬ ¥ £h‡‚mËuO“û«á²S¬™©êj¯J·S¹θÁ¶ܱ™£š”%‰—Cº‡ƒÿ6}ÿ…ŸˆR‚„þ’ΜÕ¢Ÿ’ä~óxt€6x¢n[{Ñ™C°í´î­!¦ ¡ Æ¥ ƪ!¬!¿¬!$«(ª{­Ю'¬±ä³Ò³?²ò©=” v‰g Ñvw’/£º¥Ä™\’] ¬šÿ î°¼l®ý˜ &´$ÌÁ‹ —‰ fz ‘ŽšR™T˜S ÿH „šg—H•Š ‚~½† :£®R±·®ªÈ£ö¢x¯ѵ_´)®ú® ¯!~²Ú·λ´u´‡¹·©!žL‘÷‚/k —m ÊŽ í¬-¹Aºݹø¸µþµc´½µW·w¹j¹£¶t²¬}®ʯdz\µ³}Ÿ³Œó˜ ଠƷ´½«‡¦Ы•°Þ´¤¶@·'¶;©4—ñl 1V ýh ¬„ ï¥ý Ÿ¯þ ÿ© 4¥þz™Á}œgPp©€ –xxbŽ’¤ø¬M®³b´f³%²4´g´&°3¯&¥ ê¦ v¤ m³Q¿¿.¸”²±¡²Чé˜òŽ%”¤d¯0­ ™««ϪÛª£¨ö¦«¤ Gžþ KšþΣÿ+’ÿ è~möi k·kmÃkÀyõ¡ *³ý ºý5²`²ÿP­þ0 CÿŸr×qa^`,ŒÿëŒýðŒýñþ7Žÿ ÿ Y’ÿm’˜‡ ×~Š™šÍ P›ú•#•ì¡ …ªU°³í·û½5¯™–}‚£„Å”°™*•ë˜ç¢¦z¤ô ‡—ò‰€ÕƒˆƒÔ€y~&↥Œð– ™’î“B ¡®·å¸j·@½¡ºj­Ц™j}fc  o+‘ª³t­ϪFªÿ¯U·¹”¹ʺkµˆ§÷šŒ€®…x#…¹|Ä~]†­‘¨Ë“Nœ£¢û—L‚#t}m~ r†{¬•å®à¸-®¥¡u™ߢ!ò« «ý«·©v¨“¬Y®Æ®ü²ã²Ó²Öµs®P›ÿþ‚0l 8v ˜‘£™¤ìø—R¬‰ A” Š©K¶îª:‚%;‚ Ž{ÁräzÉŽö¢=y‰Tz¯„ è‘ 2“Ÿ•Z’ö‹ 2Œj˜«|®A«ЩÑ£q¢ µ±Iµá±ã­d®Y°ý³ûʽᵇ´Úºè»Õ¶©¨Œœc]v¢xd”W° ȹ(ººP¹&µä´±ë±fµp¸ɹȳt¬xª4­.¬ÿ²²C¬mŸD] }® µµ/­—©…«f­´±î®X«%¬ò¥8•{m “Z ÿm³ÿ¯«ý g®þ¦ÿ ¡ þ enkxV„ÇzkxfŽÿ¶¥]« ±ï´ñ²K²$²M³ò² °r­mŸ Œ J® ôÉ̸C¯¼¯ΰOª ²”!¬¤ ̰­®  «„¬ªž©±§&§…¨ÛŸþ ÷”£ÿ!˜ü7{þÿmêhÂk~kenìo 6¤ ]²ÿ 9¸ÿŸµ·¬ œªýÃÿÍ–ü1rþµj`%[Â](’‘þ Wý¥þÿ Íÿ »’ "’+‚«y‡ˆBšÿ£R Ç—R¤¸­ž±²³ ¶N¯¡(;…i‡ Œó’–!¥¥ ¨¢ÀI“êŠP‡J…€×{4}^†tŽ–š¥›O–ªœjª¬=¬D­§¶mÚÀK±m¤ý˜ ú€ ºi±m#‡ë¥b°]­Ä««ç¯·µ³¸¸l¹(¸(¬•›ÑŽƒ ˆ ’ Ú„ávXoê?˜Vžù—Ë”Е|™Ó ›¬…ötç}à‚wù}Ví©þ¹ö± ¥˜_¥0¯h¬¬A©§y©G¬K°=´û³*±´£²¦¤þ‹o ¨yÕ•*§À§ÀŸP•)Š"† Ž G›ñ¡û‚‰H€ƒ‚ÿ€hˆU¢-°ªÉuVz ‰‰ÿ ¿” “› ˜pŽ ä… ‘ÿ“žç©j«ª©±¥m¤“±f¶b°«­ Ÿ¯;²вû²ï®¦¯ô±~· º[¹­¦£-‰­Œ ?” æ² »`¹Z¸5¶Z²è°ª¯³¯1·w¹Sµ!®,©d§#z§%n§"-«¨ªÕª2¡¬•¢ ϰ O¶@µ®í«h­YªÈ©¦¨B¦¨¤”Ìs Úf ‚Ôžþ[±þ œ®GŸÿâ•×€fÿjxu| s~ný|Fˆ À”†¤U²»µ¹´"°´!ù³k³‚´¸°_°(œRš š­ xÎ 1ÓšºGªÒ¯˳ܱ‘£˜v¤!Õ®³°µ¬Ó«†ª¨-§ß©‹© ¿šþ 𜯣þµ™ý²{ÿ gî]¦a©gòmÏt|ƒÜŸ<¤ ˆ¬å²ÿ<¤ÿ T¤ÿ ¤ŸþUšü_wÿ_iUfWRÿŽÿ $˜þ ª“þ ÿ Sÿ £ Ñ 8–…·{pˆÿ騈§ b•G™§c®_°|±±S°²¬¤Ñ™u‹€ŠÖŽC˜¨¤¡¨!c§(¢™Ë‘N‹î‡Ä€®wçz’ˆß‘G—È£¨d¤š¥‘¬H®FªʨM­š¹ï½s¶¬?§íœÛ‹A~õ„š¦§#ªÝ« ¬4°µÉ·L·Z¸3·ªÍ—ÉŽ+ŒØ’ ј ŽX{¦p“„¢œ¢h›û•±‘û“L•Ù“†å|B€›„(~ÕƒH¥?¶A³è§‘¢ü®¨µÒ²|­p¨Ϧ³§x¬ ±ý¶Š´}°,°‘²4©ÿ”›r ñz ߘ'©ZªK¢Ì–4 Š Š ›‹^Œ†’Óˆj‚‹“áš{¡q° ¶!±ÕŸ ‡è‰~˜ý£ þé¦.£@š[  úŸu©$ª±©©p©C©?²œµ(²ª° в´¸±F«"̧ ª¬¯u²Ô²å©Ťºž«“ Žó˜þ˜³ »ݺW¸^µϯZ¬«s°&ºEº®³·®?ª $§$ø¦!À§º¦¥±§­žÓ“ ¤~²­¹K¸г¬„­ШN¨Ĩi§Ú¥Ë£œ•å{T™‘ C«þ ä²ÿ ·°ÿ¡ÿ X‡ˆd …h;jókmÏnÕr­láz ˆÁ¤ ²'³r´%€´!ý³x´R¶¨°°©¬•[½ª ˆÂ¢Çÿ?²÷ª¹¯P²´ ¨MŸj¦²« ° ‘¬«0ª§ë§Àª`¡ ““þ ­–ÿ Jžþ—’’wÿ íc=Z]Z”c Lo%zfŸ³Ä   „¢ ¬ý ¢ý ø¡ÿ ÖŸþ ™i~]sPe¿W(YL§ü¡ÿ ²—ÿ 2ÿ ¶ ‘‘„’ÿ r“Ê’ý‹¢”¥¯P®ã­F¦Z¦`­x¯®¯Ʊ ³E¶q¶Þ¸5°-¢¯•EŽÈ‘…™y£ð©b¨% Ÿ˜d“R3‹€avúgð•_˜l¤–¬#©¦­«T°ݯ}ª…ªc±"º<»G·ؼ|ºÈ¥y3ƒŠ!_™Ú¦Dªù¬ ³ª·µ¯¶a¶>´%«7™”û£¤§® ;Œ}vМÒ Ÿ"K¼š5‡~„M‚¾\߇dz¢üµ˜¸²¢±˶Ϲ«·¯õ©§4¨ó­‡´î¹}¶8®®j²T¯–‰z z|g˜=©Ϊ1¢æ™†– 5“ |Œ 6}Zz`ŽýTˆ“”V¡¤®Õ¯ T¸¹#³À¨±“²Ö¥¯ÿv³°{©šœþ«—Р<©̪—«sª¢¬%¯Ѷ¶n¶p¶ ¶—³©®ì©!Í¢ p¡Ò¤Uª¬ˆ«y§Û Ê› –Œà›ÿ“´K¼5ºo¸ûµ‡°wªõ©W­·®¹4¶³É®®e®Ь³ž…›}£{–|¦º±ë¹.¸gµ|®±¹¯â³9²=®©©û¤4šM„Λ¯² «µ;°† ƒƒ'_ ÜeâjÈlžcl?»p h':š׬IJ{µ"¡´³‹µ ¶_µ’§Ï$Œ¦l³Qµůs­ ô®²š³° §Û¦+ª H¯ v«ͪo¨Ũl§[§(¢”ÿY’ ›ÿ 𖇀ÑeZYv\ ßb5o žx >Æóàþû¢þ¢™ÿ,¥ý ¡ý ¿¡þ ­¡ýƒšý¨‰ÿ£|"hö\b‚«§.šÿ ¥ÿ P ’ƒ–ÿМ[¡¾ ¦ï°Á¶$¶´ä±°°²±ƒ±ú³K¶Ù¹ô»»b·ÿ«Oœ‡“a“^š/£¨œ¦U”µŽ÷ÞŽ©…<m‡®“—`£†«`ª¡© _¬ë³†³­®¦¬Û´c¼—»™¹¼¹¾¯NšÔˆ"Y€"ö‘"‘¦±Í·»aº@³³—¶œ·k°‚£:žœ¦%¬b±â®‹›»ŒU“£›&›ÅX *£ž¢‘Ɔ „’†|¨z=‡p”´—¦£´J» ·_µî¹uº¹¶j®b¨÷¨/© ¬Þ¶"ºÚ¶ñ­­&³"¯ݘå.}M˜ŽªÅ«¤úŸÝ¡F› ˜Œ ×zÜrÜpœš—K›R«'´Œµeº·ç±¥¥‘%‘ب[³‰µ¶N² «¥×£©ª*«w«Ø­…´I¹}¹¢º”¹ µ¶®Þ«3¦íží˜z¡x¨Æ©ö¨³¥J›^—"™Z•‡¡ ·d»Lºm·_´y® ª¡©«Š´4¸š¹¹¸˶a¸pÅX¼Á¥Řü¥ ¥ºû„²9©°Æ´µü´¸°p³Ÿ··¼·¨°»¯~¦«Ÿ"‹# †™Ÿ ·µ L¶ý° ‡Ÿÿ =}ú[ Iasn²s“kÄhÓ~ÆuÛk4w!ˆšmª^²³²²Þ´жŸ¸~¹¼­)𔦍²CµÒ³ª²È´÷µ(´ͳŬI§ ǧ Æ­´¬»ªN§ ö¦ “¨MªS§e¢!𠏢þ —¢ý ©ƒ5hŸa&gshh àu <šôþ þ•ÿáþ Jþè¨ý’¨™ÿ $ˆs|#«f`\÷f‹vips-8.2.2/benchmark/benchmarkn-osx.sh0000775000175000017500000000236512530402247014644 00000000000000#!/bin/bash uname -a gcc --version vips --version # how large an image do you want to process? # sample2.v is 290x442 pixels ... replicate this many times horizontally and # vertically to get a highres image for the benchmark tile=13 # how complex an operation do you want to run? # this sets the number of copies of the benchmark we chain together: # higher values run more slowly and are more likely to be CPU-bound chain=1 echo building test image ... echo "tile=$tile" vips im_replicate sample2.v temp.v $tile $tile if [ $? != 0 ]; then echo "build of test image failed -- out of disc space?" exit 1 fi echo -n "test image is" `vipsheader -f width temp.v` echo " by" `vipsheader -f height temp.v` "pixels" max_cpus=`vips im_concurrency_get` echo "max cpus = $max_cpus" echo "starting benchmark ..." echo /usr/bin/time vips \ --vips-concurrency=xx \ im_benchmarkn temp.v temp2.v $chain for((cpus = 1; cpus <= max_cpus; cpus++)); do echo cpus = $cpus /usr/bin/time vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1 /usr/bin/time vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1 /usr/bin/time vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1 done vips-8.2.2/benchmark/benchmarkn.sh0000775000175000017500000000303412530402247014027 00000000000000#!/bin/bash uname -a gcc --version vips --version # how large an image do you want to process? # sample2.v is 290x442 pixels ... replicate this many times horizontally and # vertically to get a highres image for the benchmark tile=13 # how complex an operation do you want to run? # this sets the number of copies of the benchmark we chain together: # higher values run more slowly and are more likely to be CPU-bound chain=1 echo building test image ... echo "tile=$tile" vips im_replicate sample2.v temp.v $tile $tile if [ $? != 0 ]; then echo "build of test image failed -- out of disc space?" exit 1 fi echo -n "test image is" `vipsheader -f width temp.v` echo " by" `vipsheader -f height temp.v` "pixels" max_cpus=`vips im_concurrency_get` echo "max cpus = $max_cpus" echo "starting benchmark ..." echo /usr/bin/time -f %e vips \ --vips-concurrency=xx \ im_benchmarkn temp.v temp2.v $chain echo reported real-time is best of three runs echo cpus real-time for((cpus = 1; cpus <= max_cpus; cpus++)); do t1=`/usr/bin/time -f %e vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1` if [ $? != 0 ]; then echo "benchmark failed -- install problem?" exit 1 fi t2=`/usr/bin/time -f %e vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1` t3=`/usr/bin/time -f %e vips \ --vips-concurrency=$cpus \ im_benchmarkn temp.v temp2.v $chain 2>&1` # echo $t1 $t2 $t3 if [[ $t2 < $t1 ]]; then t1=$t2 fi if [[ $t3 < $t1 ]]; then t1=$t3 fi echo $cpus $t1 done vips-8.2.2/vips.pc.in0000664000175000017500000000044212530402247011340 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: vips Description: Image processing library Version: @VERSION@ Requires.private: @PACKAGES_USED@ Requires: gobject-2.0 Libs: -L${libdir} -lvips Libs.private: @EXTRA_LIBS_USED@ Cflags: -I${includedir} vips-8.2.2/missing0000755000175000017500000001533012651721156011034 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: vips-8.2.2/libvips.supp0000664000175000017500000001141112530402247012005 00000000000000# hide GObject type init allocs, they can only happen once and are not really # leaks { type_init Memcheck:Leak fun:*alloc ... fun:g_type_register_* } { type_init2 Memcheck:Leak fun:*alloc ... fun:g_type_init_* } { type_init3 Memcheck:Leak fun:*alloc ... fun:g_type_create_* } { type_init4 Memcheck:Leak fun:*alloc ... fun:g_type_class_ref } { type_init5 Memcheck:Leak fun:*alloc ... fun:g_type_add_interface_static } # module init does this { init7 Memcheck:Leak ... fun:*alloc* ... fun:_dl_init } # g_get_home_dir has a private buffer { gwd Memcheck:Leak fun:*alloc ... fun:g_get_home_dir } # selinux on ubuntu generates a leak report we ignore { selinux Memcheck:Leak fun:*alloc ... obj:/lib/libselinux.so.1 } # gdk and x init { gdk_init Memcheck:Leak fun:*alloc ... fun:gdk_display_open } { x_init_ext Memcheck:Leak fun:*alloc ... fun:XInitExtension } { gio Memcheck:Leak fun:malloc ... fun:g_simple_async_result_complete } { pthread Memcheck:Leak fun:calloc fun:_dl_allocate_tls fun:pthread_create@@GLIBC_* } # hide all dbus reports, not the app's problem { dbus Memcheck:Leak fun:*alloc ... obj:*/libdbus-1.so.* } # hide all orbit leaks, not our problem { orbit Memcheck:Leak fun:*alloc ... fun:ORBit_* } # other lib init { fontconfig_init Memcheck:Leak fun:*alloc ... fun:FcConfigParseAndLoad } { fontconfig2 Memcheck:Leak fun:malloc fun:strdup fun:FcValueSave obj:*/libfontconfig.so.* } { fontconfig3 Memcheck:Leak fun:realloc ... fun:FcFontMatch } { fontconfig4 Memcheck:Leak fun:realloc ... fun:FcPatternAddInteger } { freetype_init Memcheck:Leak fun:*alloc ... fun:FT_Open_Face } { harfbuzz Memcheck:Leak fun:calloc ... fun:hb_shape_plan_execute } { goffice_init Memcheck:Leak fun:*alloc ... fun:libgoffice_init } { g_module_init Memcheck:Leak fun:*alloc ... fun:g_module_open } { gtk_module_init Memcheck:Leak fun:*alloc ... fun:gtk_module_init } # gdk-x11 makes a toplevel object { gdk_x11_init Memcheck:Leak fun:*alloc ... fun:_gdk_x11_window_get_toplevel } # the icon theme allocates stuff on lazy load { gtk_icon_theme_has_icon Memcheck:Leak fun:*alloc ... fun:gtk_icon_theme_has_icon } # tooltip labels are not really owned by anyone and will not be freed on exit { gtk_tooltip_set_markup Memcheck:Leak fun:*alloc ... fun:gtk_tooltip_set_markup } # pango makes a PangoLanguage for every script you use { pango_language Memcheck:Leak fun:*alloc ... fun:pango_language_from_string } # pango makes a PangoOTRuleset for every font you use { pango_ot_ruleset_get_for_description Memcheck:Leak fun:*alloc ... fun:pango_ot_ruleset_get_for_description } # pango makes a PangoOTInfo for every font you use { pango_ot_info_get Memcheck:Leak fun:*alloc ... fun:pango_ot_info_get } # fonts pango has loaded { pango_fc_fontset_get_font_at Memcheck:Leak fun:*alloc ... fun:pango_fc_fontset_get_font_at } # font maps pango has loaded { pango_fc_font_map_load_fontset Memcheck:Leak fun:*alloc ... fun:pango_fc_font_map_load_fontset } # ... and font descriptions from every "sans 12" type string { pango_font_description_from_string Memcheck:Leak fun:*alloc ... fun:pango_font_description_from_string } # gettext has annoying uninit warnings { gettext Memcheck:Cond fun:__GI___strcasecmp_l ... fun:__dcigettext } { gettext Memcheck:Value8 fun:__GI___strcasecmp_l ... fun:__dcigettext } # libz has a warning too ... see this from libpng / libxml2 etc. { libz Memcheck:Cond fun:inflateReset2 } # libvips can generate this one spuriously { libvipswrite Memcheck:Param write(buf) ... fun:write_vips } { pixman1 Memcheck:Cond ... fun:pixman_image_composite32 } { cairo1 Memcheck:Cond fun:rsvg_cairo_surface_to_pixbuf } { rsvg Memcheck:Cond obj:*/librsvg-2.so.* } { murrine Memcheck:Leak fun:calloc fun:g_malloc0 fun:raico_blur_create } { signal_connect Memcheck:Leak fun:calloc fun:g_malloc0 fun:g_closure_new_simple fun:g_cclosure_new fun:g_signal_connect_data } # ruby has some annoying ones too { ruby1 Memcheck:Cond ... fun:rb_parser_compile_file } { ruby2 Memcheck:Value8 ... fun:rb_parser_compile_file } { ruby3 Memcheck:Cond ... fun:rb_file_expand_path } { ruby4 Memcheck:Value8 ... fun:rb_file_expand_path } { ruby5 Memcheck:Value8 ... fun:rb_enc_str_new } vips-8.2.2/py-compile0000755000175000017500000001107612530402347011436 00000000000000#!/bin/sh # py-compile - Compile a Python program scriptversion=2011-06-08.12; # UTC # Copyright (C) 2000-2013 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . if [ -z "$PYTHON" ]; then PYTHON=python fi me=py-compile usage_error () { echo "$me: $*" >&2 echo "Try '$me --help' for more information." >&2 exit 1 } basedir= destdir= while test $# -ne 0; do case "$1" in --basedir) if test $# -lt 2; then usage_error "option '--basedir' requires an argument" else basedir=$2 fi shift ;; --destdir) if test $# -lt 2; then usage_error "option '--destdir' requires an argument" else destdir=$2 fi shift ;; -h|--help) cat <<\EOF Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..." Byte compile some python scripts FILES. Use --destdir to specify any leading directory path to the FILES that you don't want to include in the byte compiled file. Specify --basedir for any additional path information you do want to be shown in the byte compiled file. Example: py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py Report bugs to . EOF exit $? ;; -v|--version) echo "$me $scriptversion" exit $? ;; --) shift break ;; -*) usage_error "unrecognized option '$1'" ;; *) break ;; esac shift done files=$* if test -z "$files"; then usage_error "no files given" fi # if basedir was given, then it should be prepended to filenames before # byte compilation. if [ -z "$basedir" ]; then pathtrans="path = file" else pathtrans="path = os.path.join('$basedir', file)" fi # if destdir was given, then it needs to be prepended to the filename to # byte compile but not go into the compiled file. if [ -z "$destdir" ]; then filetrans="filepath = path" else filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)" fi $PYTHON -c " import sys, os, py_compile, imp files = '''$files''' sys.stdout.write('Byte-compiling python modules...\n') for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue sys.stdout.write(file) sys.stdout.flush() if hasattr(imp, 'get_tag'): py_compile.compile(filepath, imp.cache_from_source(filepath), path) else: py_compile.compile(filepath, filepath + 'c', path) sys.stdout.write('\n')" || exit $? # this will fail for python < 1.5, but that doesn't matter ... $PYTHON -O -c " import sys, os, py_compile, imp # pypy does not use .pyo optimization if hasattr(sys, 'pypy_translation_info'): sys.exit(0) files = '''$files''' sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n') for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): continue sys.stdout.write(file) sys.stdout.flush() if hasattr(imp, 'get_tag'): py_compile.compile(filepath, imp.cache_from_source(filepath, False), path) else: py_compile.compile(filepath, filepath + 'o', path) sys.stdout.write('\n')" 2>/dev/null || : # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: vips-8.2.2/po/0000775000175000017500000000000012651721506010132 500000000000000vips-8.2.2/po/en_GB.gmo0000664000175000017500000000315512530402247011526 00000000000000Þ•´LÀÁÝò- @Mh|©Å)Ú$%)Of€œ¹Ïáô  !/K`r¬*Â%í&:R     Color for background pixelsColor for new pixelsColor for pixelsColor temperatureDestination color spaceSource color spacebad colormapcalculate color differencechange color codingcolor operationscolor space transformationsconvert to a new colorspacefalse-color an imagemeasure a set of patches on a color chartunimplemented input color space 0x%xunimplemented output color space 0x%xunsupported color typeunsupported colorspace %dProject-Id-Version: vips 8.0 Report-Msgid-Bugs-To: POT-Creation-Date: 2015-04-24 14:19+0100 PO-Revision-Date: Last-Translator: John Cupitt Language-Team: Language: en_GB MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Colour for background pixelsColour for new pixelsColour for pixelsColour temperatureDestination colour spaceSource colour spacebad colourmapcalculate colour differencechange colour codingcolour operationscolour space transformationsconvert to a new colourspacefalse-colour an imagemeasure a set of patches on a colour chartunimplemented input colour space 0x%xunimplemented output colour space 0x%xunsupported colour typeunsupported colourspace %dvips-8.2.2/po/en_GB.po0000664000175000017500000040242012530402247011360 00000000000000# en_GB for vips # Copyright (C) 2015 # This file is distributed under the same license as the vips package. # John Cupitt , 2015. # msgid "" msgstr "" "Project-Id-Version: vips 8.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-04-24 14:19+0100\n" "PO-Revision-Date: \n" "Last-Translator: John Cupitt \n" "Language-Team: \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../libvips/arithmetic/abs.c:230 msgid "absolute value of an image" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:112 #, c-format msgid "bins out of range [1,%d]" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:289 msgid "find n-dimensional image histogram" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:298 #: ../libvips/arithmetic/hough.c:185 ../libvips/arithmetic/min.c:429 #: ../libvips/arithmetic/avg.c:214 ../libvips/arithmetic/max.c:426 #: ../libvips/arithmetic/stats.c:420 #: ../libvips/arithmetic/hist_find_indexed.c:391 #: ../libvips/arithmetic/deviate.c:221 ../libvips/arithmetic/measure.c:206 #: ../libvips/arithmetic/arithmetic.c:611 #: ../libvips/arithmetic/hist_find.c:399 ../libvips/colour/scRGB2sRGB.c:271 #: ../libvips/colour/scRGB2BW.c:243 ../libvips/colour/colour.c:445 #: ../libvips/colour/sRGB2scRGB.c:241 ../libvips/colour/colourspace.c:555 #: ../libvips/conversion/conversion.c:200 #: ../libvips/convolution/gaussblur.c:123 #: ../libvips/convolution/correlation.c:160 #: ../libvips/convolution/sharpen.c:324 #: ../libvips/convolution/convolution.c:135 ../libvips/create/create.c:101 #: ../libvips/foreign/foreign.c:952 ../libvips/freqfilt/freqfilt.c:104 #: ../libvips/histogram/hist_norm.c:147 ../libvips/histogram/hist_equal.c:114 #: ../libvips/histogram/maplut.c:703 ../libvips/histogram/hist_plot.c:348 #: ../libvips/histogram/stdif.c:298 ../libvips/histogram/hist_local.c:306 #: ../libvips/histogram/histogram.c:231 ../libvips/iofuncs/system.c:266 #: ../libvips/morphology/rank.c:409 ../libvips/morphology/morph.c:140 #: ../libvips/mosaicing/im_remosaic.c:170 ../libvips/mosaicing/merge.c:121 #: ../libvips/mosaicing/mosaic1.c:501 ../libvips/mosaicing/mosaic.c:192 #: ../libvips/mosaicing/match.c:216 ../libvips/mosaicing/global_balance.c:1777 #: ../libvips/resample/resample.c:96 msgid "Output" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:299 #: ../libvips/arithmetic/hist_find_indexed.c:392 #: ../libvips/arithmetic/hist_find.c:400 msgid "Output histogram" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:304 msgid "Bins" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:305 msgid "Number of bins in each dimension" msgstr "" #: ../libvips/arithmetic/getpoint.c:104 msgid "coordinates out of range" msgstr "" #: ../libvips/arithmetic/getpoint.c:149 msgid "read a point from an image" msgstr "" #: ../libvips/arithmetic/getpoint.c:153 ../libvips/arithmetic/measure.c:200 #: ../libvips/conversion/falsecolour.c:381 ../libvips/conversion/gamma.c:143 #: ../libvips/freqfilt/freqfilt.c:98 msgid "in" msgstr "" #: ../libvips/arithmetic/getpoint.c:154 ../libvips/arithmetic/statistic.c:168 #: ../libvips/arithmetic/unary.c:89 ../libvips/colour/scRGB2sRGB.c:266 #: ../libvips/colour/scRGB2BW.c:238 ../libvips/colour/colour.c:505 #: ../libvips/colour/colour.c:597 ../libvips/colour/sRGB2scRGB.c:236 #: ../libvips/colour/colourspace.c:550 ../libvips/conversion/rot.c:360 #: ../libvips/conversion/grid.c:200 ../libvips/conversion/falsecolour.c:382 #: ../libvips/conversion/flatten.c:373 ../libvips/conversion/replicate.c:197 #: ../libvips/conversion/subsample.c:272 ../libvips/conversion/cache.c:102 #: ../libvips/conversion/gamma.c:144 ../libvips/conversion/rot45.c:272 #: ../libvips/conversion/autorot.c:133 ../libvips/conversion/extract.c:200 #: ../libvips/conversion/extract.c:423 ../libvips/conversion/wrap.c:120 #: ../libvips/conversion/zoom.c:392 ../libvips/conversion/tilecache.c:415 #: ../libvips/conversion/flip.c:241 ../libvips/conversion/copy.c:343 #: ../libvips/conversion/cast.c:537 ../libvips/conversion/sequential.c:322 #: ../libvips/conversion/embed.c:567 ../libvips/conversion/msb.c:245 #: ../libvips/conversion/scale.c:152 ../libvips/convolution/gaussblur.c:118 #: ../libvips/convolution/sharpen.c:319 ../libvips/freqfilt/freqfilt.c:99 #: ../libvips/histogram/hist_norm.c:142 ../libvips/histogram/hist_equal.c:109 #: ../libvips/histogram/maplut.c:698 ../libvips/histogram/hist_plot.c:343 #: ../libvips/histogram/stdif.c:293 ../libvips/histogram/hist_local.c:301 #: ../libvips/histogram/hist_unary.c:90 ../libvips/histogram/percent.c:111 #: ../libvips/mosaicing/im_remosaic.c:165 #: ../libvips/mosaicing/global_balance.c:1772 msgid "Input image" msgstr "" #: ../libvips/arithmetic/getpoint.c:159 ../libvips/arithmetic/min.c:457 #: ../libvips/arithmetic/max.c:454 msgid "Output array" msgstr "" #: ../libvips/arithmetic/getpoint.c:160 ../libvips/arithmetic/min.c:458 #: ../libvips/arithmetic/max.c:455 msgid "Array of output values" msgstr "" #: ../libvips/arithmetic/getpoint.c:166 ../libvips/arithmetic/min.c:436 #: ../libvips/arithmetic/max.c:433 ../libvips/conversion/wrap.c:125 #: ../libvips/conversion/embed.c:572 ../libvips/draw/draw_image.c:267 #: ../libvips/draw/draw_flood.c:552 ../libvips/draw/draw_mask.c:329 msgid "x" msgstr "" #: ../libvips/arithmetic/getpoint.c:167 ../libvips/arithmetic/getpoint.c:174 msgid "Point to read" msgstr "" #: ../libvips/arithmetic/getpoint.c:173 ../libvips/arithmetic/min.c:443 #: ../libvips/arithmetic/max.c:440 ../libvips/conversion/wrap.c:132 #: ../libvips/conversion/embed.c:579 ../libvips/draw/draw_image.c:274 #: ../libvips/draw/draw_flood.c:559 ../libvips/draw/draw_mask.c:336 msgid "y" msgstr "" #: ../libvips/arithmetic/complex.c:216 msgid "perform a complex operation on an image" msgstr "" #: ../libvips/arithmetic/complex.c:223 ../libvips/arithmetic/complex.c:502 #: ../libvips/arithmetic/complex.c:717 ../libvips/arithmetic/relational.c:224 #: ../libvips/arithmetic/relational.c:562 ../libvips/arithmetic/math.c:207 #: ../libvips/arithmetic/math2.c:205 ../libvips/arithmetic/math2.c:403 #: ../libvips/arithmetic/boolean.c:218 ../libvips/arithmetic/boolean.c:521 #: ../libvips/conversion/bandbool.c:220 ../tools/vips.c:1059 msgid "Operation" msgstr "" #: ../libvips/arithmetic/complex.c:224 ../libvips/arithmetic/complex.c:718 msgid "complex to perform" msgstr "" #: ../libvips/arithmetic/complex.c:495 msgid "complex binary operations on two images" msgstr "" #: ../libvips/arithmetic/complex.c:503 msgid "binary complex operation to perform" msgstr "" #: ../libvips/arithmetic/complex.c:708 msgid "get a component from a complex image" msgstr "" #: ../libvips/arithmetic/complex.c:916 msgid "form a complex image from two real images" msgstr "" #: ../libvips/arithmetic/invert.c:165 msgid "invert an image" msgstr "" #: ../libvips/arithmetic/nary.c:80 msgid "nary operations" msgstr "" #: ../libvips/arithmetic/nary.c:87 ../libvips/arithmetic/statistic.c:167 #: ../libvips/arithmetic/unary.c:88 ../libvips/colour/scRGB2sRGB.c:265 #: ../libvips/colour/scRGB2BW.c:237 ../libvips/colour/colour.c:504 #: ../libvips/colour/colour.c:596 ../libvips/colour/sRGB2scRGB.c:235 #: ../libvips/colour/colourspace.c:549 ../libvips/conversion/rot.c:359 #: ../libvips/conversion/grid.c:199 ../libvips/conversion/recomb.c:207 #: ../libvips/conversion/flatten.c:372 ../libvips/conversion/replicate.c:196 #: ../libvips/conversion/subsample.c:271 ../libvips/conversion/cache.c:101 #: ../libvips/conversion/rot45.c:271 ../libvips/conversion/autorot.c:132 #: ../libvips/conversion/extract.c:199 ../libvips/conversion/extract.c:422 #: ../libvips/conversion/wrap.c:119 ../libvips/conversion/zoom.c:391 #: ../libvips/conversion/bandbool.c:214 ../libvips/conversion/tilecache.c:414 #: ../libvips/conversion/flip.c:240 ../libvips/conversion/bandjoin.c:171 #: ../libvips/conversion/copy.c:342 ../libvips/conversion/cast.c:536 #: ../libvips/conversion/sequential.c:321 ../libvips/conversion/embed.c:566 #: ../libvips/conversion/msb.c:244 ../libvips/conversion/bandrank.c:244 #: ../libvips/conversion/bandmean.c:198 ../libvips/conversion/scale.c:151 #: ../libvips/convolution/gaussblur.c:117 #: ../libvips/convolution/correlation.c:148 #: ../libvips/convolution/sharpen.c:318 #: ../libvips/convolution/convolution.c:129 ../libvips/create/invertlut.c:289 #: ../libvips/create/buildlut.c:261 ../libvips/foreign/foreign.c:1419 #: ../libvips/histogram/hist_norm.c:141 ../libvips/histogram/hist_equal.c:108 #: ../libvips/histogram/maplut.c:697 ../libvips/histogram/hist_plot.c:342 #: ../libvips/histogram/stdif.c:292 ../libvips/histogram/hist_local.c:300 #: ../libvips/histogram/hist_match.c:161 ../libvips/histogram/hist_unary.c:89 #: ../libvips/histogram/hist_ismonotonic.c:117 #: ../libvips/histogram/percent.c:110 ../libvips/iofuncs/system.c:259 #: ../libvips/morphology/morphology.c:117 #: ../libvips/mosaicing/im_remosaic.c:164 #: ../libvips/mosaicing/global_balance.c:1771 #: ../libvips/resample/resample.c:90 msgid "Input" msgstr "" #: ../libvips/arithmetic/nary.c:88 ../libvips/conversion/bandjoin.c:172 #: ../libvips/conversion/bandrank.c:245 ../libvips/iofuncs/system.c:260 msgid "Array of input images" msgstr "" #: ../libvips/arithmetic/multiply.c:173 msgid "multiply two images" msgstr "" #: ../libvips/arithmetic/hough.c:176 msgid "find hough transform" msgstr "" #: ../libvips/arithmetic/hough.c:186 ../libvips/arithmetic/arithmetic.c:612 #: ../libvips/colour/scRGB2sRGB.c:272 ../libvips/colour/scRGB2BW.c:244 #: ../libvips/colour/colour.c:446 ../libvips/colour/sRGB2scRGB.c:242 #: ../libvips/colour/colourspace.c:556 ../libvips/conversion/conversion.c:201 #: ../libvips/convolution/gaussblur.c:124 #: ../libvips/convolution/correlation.c:161 #: ../libvips/convolution/sharpen.c:325 #: ../libvips/convolution/convolution.c:136 ../libvips/create/create.c:102 #: ../libvips/foreign/foreign.c:953 ../libvips/freqfilt/freqfilt.c:105 #: ../libvips/histogram/hist_norm.c:148 ../libvips/histogram/hist_equal.c:115 #: ../libvips/histogram/maplut.c:704 ../libvips/histogram/hist_plot.c:349 #: ../libvips/histogram/stdif.c:299 ../libvips/histogram/hist_local.c:307 #: ../libvips/histogram/histogram.c:232 ../libvips/iofuncs/system.c:267 #: ../libvips/morphology/rank.c:410 ../libvips/morphology/morph.c:141 #: ../libvips/mosaicing/im_remosaic.c:171 ../libvips/mosaicing/merge.c:122 #: ../libvips/mosaicing/mosaic1.c:502 ../libvips/mosaicing/mosaic.c:193 #: ../libvips/mosaicing/match.c:217 ../libvips/mosaicing/global_balance.c:1778 #: ../libvips/resample/resample.c:97 msgid "Output image" msgstr "" #: ../libvips/arithmetic/round.c:161 msgid "perform a round function on an image" msgstr "" #: ../libvips/arithmetic/round.c:169 msgid "Round operation" msgstr "" #: ../libvips/arithmetic/round.c:170 msgid "rounding operation to perform" msgstr "" #: ../libvips/arithmetic/subtract.c:162 msgid "subtract two images" msgstr "" #: ../libvips/arithmetic/min.c:421 msgid "find image minimum" msgstr "" #: ../libvips/arithmetic/min.c:430 ../libvips/arithmetic/avg.c:215 #: ../libvips/arithmetic/max.c:427 ../libvips/arithmetic/deviate.c:222 msgid "Output value" msgstr "" #: ../libvips/arithmetic/min.c:437 msgid "Horizontal position of minimum" msgstr "" #: ../libvips/arithmetic/min.c:444 msgid "Vertical position of minimum" msgstr "" #: ../libvips/arithmetic/min.c:450 ../libvips/arithmetic/max.c:447 #: ../libvips/create/invertlut.c:295 ../libvips/create/identity.c:158 msgid "Size" msgstr "" #: ../libvips/arithmetic/min.c:451 msgid "Number of minimum values to find" msgstr "" #: ../libvips/arithmetic/min.c:464 ../libvips/arithmetic/max.c:461 msgid "x array" msgstr "" #: ../libvips/arithmetic/min.c:465 ../libvips/arithmetic/max.c:462 msgid "Array of horizontal positions" msgstr "" #: ../libvips/arithmetic/min.c:471 ../libvips/arithmetic/max.c:468 msgid "y array" msgstr "" #: ../libvips/arithmetic/min.c:472 ../libvips/arithmetic/max.c:469 msgid "Array of vertical positions" msgstr "" #: ../libvips/arithmetic/unaryconst.c:203 msgid "unary operations with a constant" msgstr "" #: ../libvips/arithmetic/unaryconst.c:207 msgid "c" msgstr "" #: ../libvips/arithmetic/unaryconst.c:208 msgid "Array of constants" msgstr "" #: ../libvips/arithmetic/project.c:322 msgid "find image projections" msgstr "" #: ../libvips/arithmetic/project.c:330 ../libvips/arithmetic/profile.c:300 msgid "Columns" msgstr "" #: ../libvips/arithmetic/project.c:331 msgid "Sums of columns" msgstr "" #: ../libvips/arithmetic/project.c:336 ../libvips/arithmetic/profile.c:306 msgid "Rows" msgstr "" #: ../libvips/arithmetic/project.c:337 msgid "Sums of rows" msgstr "" #: ../libvips/arithmetic/avg.c:206 ../libvips/arithmetic/stats.c:412 msgid "find image average" msgstr "" #: ../libvips/arithmetic/max.c:418 msgid "find image maximum" msgstr "" #: ../libvips/arithmetic/max.c:434 msgid "Horizontal position of maximum" msgstr "" #: ../libvips/arithmetic/max.c:441 msgid "Vertical position of maximum" msgstr "" #: ../libvips/arithmetic/max.c:448 msgid "Number of maximum values to find" msgstr "" #: ../libvips/arithmetic/statistic.c:161 msgid "VIPS statistic operations" msgstr "" #: ../libvips/arithmetic/divide.c:225 msgid "divide two images" msgstr "" #: ../libvips/arithmetic/profile.c:292 msgid "find image profiles" msgstr "" #: ../libvips/arithmetic/profile.c:301 msgid "First non-zero pixel in column" msgstr "" #: ../libvips/arithmetic/profile.c:307 msgid "First non-zero pixel in row" msgstr "" #: ../libvips/arithmetic/stats.c:421 ../libvips/arithmetic/measure.c:207 msgid "Output array of statistics" msgstr "" #: ../libvips/arithmetic/sum.c:141 msgid "sum an array of images" msgstr "" #: ../libvips/arithmetic/binary.c:89 msgid "binary operations" msgstr "" #: ../libvips/arithmetic/binary.c:96 ../libvips/arithmetic/measure.c:226 #: ../libvips/colour/colour.c:690 ../libvips/conversion/extract.c:205 #: ../libvips/draw/draw_smudge.c:197 ../libvips/draw/draw_flood.c:579 #: ../libvips/draw/draw_rect.c:173 msgid "Left" msgstr "" #: ../libvips/arithmetic/binary.c:97 msgid "Left-hand image argument" msgstr "" #: ../libvips/arithmetic/binary.c:102 ../libvips/colour/colour.c:696 msgid "Right" msgstr "" #: ../libvips/arithmetic/binary.c:103 msgid "Right-hand image argument" msgstr "" #: ../libvips/arithmetic/hist_find_indexed.c:377 msgid "find indexed image histogram" msgstr "" #: ../libvips/arithmetic/hist_find_indexed.c:385 #: ../libvips/conversion/bandrank.c:251 msgid "Index" msgstr "" #: ../libvips/arithmetic/hist_find_indexed.c:386 msgid "Index image" msgstr "" #: ../libvips/arithmetic/deviate.c:213 msgid "find image standard deviation" msgstr "" #: ../libvips/arithmetic/relational.c:216 msgid "relational operation on two images" msgstr "" #: ../libvips/arithmetic/relational.c:225 #: ../libvips/arithmetic/relational.c:563 msgid "relational to perform" msgstr "" #: ../libvips/arithmetic/relational.c:553 msgid "relational operations against a constant" msgstr "" #: ../libvips/arithmetic/measure.c:167 #, c-format msgid "patch %d x %d, band %d: avg = %g, sdev = %g" msgstr "" #: ../libvips/arithmetic/measure.c:196 msgid "measure a set of patches on a color chart" msgstr "measure a set of patches on a colour chart" #: ../libvips/arithmetic/measure.c:201 msgid "Image to measure" msgstr "" #: ../libvips/arithmetic/measure.c:212 ../libvips/conversion/grid.c:212 #: ../libvips/conversion/replicate.c:202 msgid "Across" msgstr "" #: ../libvips/arithmetic/measure.c:213 msgid "Number of patches across chart" msgstr "" #: ../libvips/arithmetic/measure.c:219 ../libvips/conversion/grid.c:219 #: ../libvips/conversion/replicate.c:209 msgid "Down" msgstr "" #: ../libvips/arithmetic/measure.c:220 msgid "Number of patches down chart" msgstr "" #: ../libvips/arithmetic/measure.c:227 ../libvips/conversion/extract.c:206 msgid "Left edge of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:233 ../libvips/conversion/extract.c:212 #: ../libvips/draw/draw_flood.c:586 msgid "Top" msgstr "" #: ../libvips/arithmetic/measure.c:234 ../libvips/conversion/extract.c:213 msgid "Top edge of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:240 ../libvips/arithmetic/hough_line.c:142 #: ../libvips/conversion/extract.c:219 ../libvips/conversion/copy.c:355 #: ../libvips/conversion/embed.c:586 ../libvips/create/black.c:129 #: ../libvips/create/gaussnoise.c:153 ../libvips/create/logmat.c:208 #: ../libvips/create/text.c:291 ../libvips/create/xyz.c:193 #: ../libvips/create/point.c:143 ../libvips/create/fractsurf.c:102 #: ../libvips/draw/draw_flood.c:593 ../libvips/foreign/rawload.c:123 #: ../libvips/histogram/stdif.c:306 ../libvips/histogram/hist_local.c:312 #: ../libvips/iofuncs/image.c:1123 ../libvips/morphology/rank.c:415 msgid "Width" msgstr "" #: ../libvips/arithmetic/measure.c:241 ../libvips/conversion/extract.c:220 msgid "Width of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:247 ../libvips/arithmetic/hough_line.c:149 #: ../libvips/conversion/extract.c:226 ../libvips/conversion/copy.c:362 #: ../libvips/conversion/embed.c:593 ../libvips/create/black.c:136 #: ../libvips/create/gaussnoise.c:160 ../libvips/create/xyz.c:200 #: ../libvips/create/point.c:150 ../libvips/create/fractsurf.c:109 #: ../libvips/draw/draw_flood.c:600 ../libvips/foreign/rawload.c:130 #: ../libvips/histogram/stdif.c:313 ../libvips/histogram/hist_local.c:319 #: ../libvips/iofuncs/image.c:1130 ../libvips/morphology/rank.c:422 msgid "Height" msgstr "" #: ../libvips/arithmetic/measure.c:248 ../libvips/conversion/extract.c:227 msgid "Height of extract area" msgstr "" #: ../libvips/arithmetic/remainder.c:174 msgid "remainder after integer division of two images" msgstr "" #: ../libvips/arithmetic/remainder.c:324 msgid "remainder after integer division of an image and a constant" msgstr "" #: ../libvips/arithmetic/unary.c:81 msgid "unary operations" msgstr "" #: ../libvips/arithmetic/hough_circle.c:113 #: ../libvips/convolution/sharpen.c:230 msgid "parameters out of range" msgstr "" #: ../libvips/arithmetic/hough_circle.c:233 msgid "find hough circle transform" msgstr "" #: ../libvips/arithmetic/hough_circle.c:240 ../libvips/mosaicing/mosaic.c:275 #: ../libvips/resample/similarity.c:118 msgid "Scale" msgstr "" #: ../libvips/arithmetic/hough_circle.c:241 msgid "Scale down dimensions by this factor" msgstr "" #: ../libvips/arithmetic/hough_circle.c:247 msgid "Min radius" msgstr "" #: ../libvips/arithmetic/hough_circle.c:248 msgid "Smallest radius to search for" msgstr "" #: ../libvips/arithmetic/hough_circle.c:254 msgid "Max radius" msgstr "" #: ../libvips/arithmetic/hough_circle.c:255 msgid "Largest radius to search for" msgstr "" #: ../libvips/arithmetic/math.c:199 msgid "apply a math operation to an image" msgstr "" #: ../libvips/arithmetic/math.c:208 ../libvips/arithmetic/math2.c:206 #: ../libvips/arithmetic/math2.c:404 msgid "math to perform" msgstr "" #: ../libvips/arithmetic/hough_line.c:135 msgid "find hough line transform" msgstr "" #: ../libvips/arithmetic/hough_line.c:143 msgid "horizontal size of parameter space" msgstr "" #: ../libvips/arithmetic/hough_line.c:150 msgid "Vertical size of parameter space" msgstr "" #: ../libvips/arithmetic/arithmetic.c:359 #, c-format msgid "not one band or %d bands" msgstr "" #: ../libvips/arithmetic/arithmetic.c:363 msgid "bad bands" msgstr "" #: ../libvips/arithmetic/arithmetic.c:544 ../libvips/colour/colour.c:321 #: ../libvips/conversion/bandary.c:141 ../libvips/conversion/bandrank.c:204 msgid "too many input images" msgstr "" #: ../libvips/arithmetic/arithmetic.c:605 msgid "arithmetic operations" msgstr "" #: ../libvips/arithmetic/hist_find.c:390 msgid "find image histogram" msgstr "" #: ../libvips/arithmetic/hist_find.c:405 ../libvips/conversion/extract.c:428 #: ../libvips/conversion/msb.c:250 ../libvips/histogram/hist_equal.c:120 msgid "Band" msgstr "" #: ../libvips/arithmetic/hist_find.c:406 msgid "Find histogram of band" msgstr "" #: ../libvips/arithmetic/add.c:172 msgid "add two images" msgstr "" #: ../libvips/arithmetic/math2.c:197 msgid "binary math operations" msgstr "" #: ../libvips/arithmetic/math2.c:395 msgid "pow( @in, @c )" msgstr "" #: ../libvips/arithmetic/linear.c:385 msgid "calculate (a * in + b)" msgstr "" #: ../libvips/arithmetic/linear.c:393 msgid "a" msgstr "" #: ../libvips/arithmetic/linear.c:394 msgid "Multiply by this" msgstr "" #: ../libvips/arithmetic/linear.c:400 msgid "b" msgstr "" #: ../libvips/arithmetic/linear.c:401 msgid "Add this" msgstr "" #: ../libvips/arithmetic/linear.c:407 msgid "uchar" msgstr "" #: ../libvips/arithmetic/linear.c:408 msgid "Output should be uchar" msgstr "" #: ../libvips/arithmetic/boolean.c:210 msgid "boolean operation on two images" msgstr "" #: ../libvips/arithmetic/boolean.c:219 ../libvips/arithmetic/boolean.c:522 #: ../libvips/conversion/bandbool.c:221 msgid "boolean to perform" msgstr "" #: ../libvips/arithmetic/boolean.c:513 msgid "boolean operations against a constant" msgstr "" #: ../libvips/arithmetic/sign.c:152 msgid "unit vector of pixel" msgstr "" #: ../libvips/colour/scRGB2sRGB.c:219 ../libvips/colour/scRGB2BW.c:190 #: ../libvips/colour/icc_transform.c:236 msgid "depth must be 8 or 16" msgstr "" #: ../libvips/colour/scRGB2sRGB.c:259 msgid "convert an scRGB image to sRGB" msgstr "" #: ../libvips/colour/scRGB2sRGB.c:277 ../libvips/colour/scRGB2BW.c:249 #: ../libvips/colour/icc_transform.c:931 #: ../libvips/colour/icc_transform.c:1072 ../libvips/foreign/dzsave.c:1870 msgid "Depth" msgstr "" #: ../libvips/colour/scRGB2sRGB.c:278 ../libvips/colour/scRGB2BW.c:250 #: ../libvips/colour/icc_transform.c:932 #: ../libvips/colour/icc_transform.c:1073 msgid "Output device space depth in bits" msgstr "" #: ../libvips/colour/XYZ2scRGB.c:105 msgid "transform XYZ to scRGB" msgstr "" #: ../libvips/colour/Lab2XYZ.c:169 msgid "transform CIELAB to XYZ" msgstr "" #: ../libvips/colour/Lab2XYZ.c:175 ../libvips/colour/XYZ2Lab.c:228 msgid "Temperature" msgstr "" #: ../libvips/colour/Lab2XYZ.c:176 ../libvips/colour/XYZ2Lab.c:229 msgid "Color temperature" msgstr "Colour temperature" #: ../libvips/colour/LCh2Lab.c:120 msgid "transform LCh to Lab" msgstr "" #: ../libvips/colour/LCh2UCS.c:206 ../libvips/colour/UCS2LCh.c:266 msgid "transform LCh to CMC" msgstr "" #: ../libvips/colour/dE00.c:235 msgid "calculate dE00" msgstr "" #: ../libvips/colour/scRGB2BW.c:231 msgid "convert scRGB to BW" msgstr "" #: ../libvips/colour/scRGB2XYZ.c:90 msgid "transform scRGB to XYZ" msgstr "" #: ../libvips/colour/icc_transform.c:291 #, c-format msgid "unimplemented input color space 0x%x" msgstr "unimplemented input colour space 0x%x" #: ../libvips/colour/icc_transform.c:356 #, c-format msgid "unimplemented output color space 0x%x" msgstr "unimplemented output colour space 0x%x" #: ../libvips/colour/icc_transform.c:368 msgid "no device profile" msgstr "" #: ../libvips/colour/icc_transform.c:399 msgid "transform using ICC profiles" msgstr "" #: ../libvips/colour/icc_transform.c:403 msgid "Intent" msgstr "" #: ../libvips/colour/icc_transform.c:404 msgid "Rendering intent" msgstr "" #: ../libvips/colour/icc_transform.c:410 msgid "PCS" msgstr "" #: ../libvips/colour/icc_transform.c:411 msgid "Set Profile Connection Space" msgstr "" #: ../libvips/colour/icc_transform.c:455 #, c-format msgid "" "intent %d (%s) not supported by %s profile; falling back to default intent" msgstr "" #: ../libvips/colour/icc_transform.c:459 ../libvips/iofuncs/operation.c:371 msgid "input" msgstr "" #: ../libvips/colour/icc_transform.c:459 ../libvips/iofuncs/operation.c:371 msgid "output" msgstr "" #: ../libvips/colour/icc_transform.c:505 msgid "corrupt embedded profile" msgstr "" #: ../libvips/colour/icc_transform.c:514 msgid "embedded profile incompatible with image" msgstr "" #: ../libvips/colour/icc_transform.c:529 ../libvips/colour/icc_transform.c:773 #: ../libvips/colour/icc_transform.c:996 #, c-format msgid "unable to open profile \"%s\"" msgstr "" #: ../libvips/colour/icc_transform.c:538 #, c-format msgid "profile \"%s\" incompatible with image" msgstr "" #: ../libvips/colour/icc_transform.c:577 ../libvips/colour/icc_transform.c:988 msgid "no input profile" msgstr "" #: ../libvips/colour/icc_transform.c:687 msgid "import from device with ICC profile" msgstr "" #: ../libvips/colour/icc_transform.c:693 #: ../libvips/colour/icc_transform.c:1058 msgid "Embedded" msgstr "" #: ../libvips/colour/icc_transform.c:694 #: ../libvips/colour/icc_transform.c:1059 msgid "Use embedded input profile, if available" msgstr "" #: ../libvips/colour/icc_transform.c:700 #: ../libvips/colour/icc_transform.c:1065 msgid "Input profile" msgstr "" #: ../libvips/colour/icc_transform.c:701 #: ../libvips/colour/icc_transform.c:1066 msgid "Filename to load input profile from" msgstr "" #: ../libvips/colour/icc_transform.c:765 msgid "unable to load embedded profile" msgstr "" #: ../libvips/colour/icc_transform.c:781 msgid "no output profile" msgstr "" #: ../libvips/colour/icc_transform.c:918 msgid "output to device with ICC profile" msgstr "" #: ../libvips/colour/icc_transform.c:924 #: ../libvips/colour/icc_transform.c:1051 msgid "Output profile" msgstr "" #: ../libvips/colour/icc_transform.c:925 #: ../libvips/colour/icc_transform.c:1052 msgid "Filename to load output profile from" msgstr "" #: ../libvips/colour/icc_transform.c:1045 msgid "transform between devices with ICC profiles" msgstr "" #: ../libvips/colour/icc_transform.c:1117 #: ../libvips/colour/icc_transform.c:1131 msgid "unable to get media white point" msgstr "" #: ../libvips/colour/icc_transform.c:1191 msgid "libvips configured without lcms support" msgstr "" #: ../libvips/colour/dECMC.c:61 msgid "calculate dECMC" msgstr "" #: ../libvips/colour/colour.c:439 msgid "color operations" msgstr "colour operations" #: ../libvips/colour/colour.c:500 msgid "color space transformations" msgstr "colour space transformations" #: ../libvips/colour/colour.c:592 msgid "change color coding" msgstr "change colour coding" #: ../libvips/colour/colour.c:686 msgid "calculate color difference" msgstr "calculate colour difference" #: ../libvips/colour/colour.c:691 msgid "Left-hand input image" msgstr "" #: ../libvips/colour/colour.c:697 msgid "Right-hand input image" msgstr "" #: ../libvips/colour/rad2float.c:188 msgid "unpack Radiance coding to float RGB" msgstr "" #: ../libvips/colour/sRGB2scRGB.c:229 msgid "convert an sRGB image to scRGB" msgstr "" #: ../libvips/colour/Lab2LabQ.c:138 msgid "transform float Lab to LabQ coding" msgstr "" #: ../libvips/colour/colourspace.c:145 msgid "too few bands for operation" msgstr "" #: ../libvips/colour/colourspace.c:511 #, c-format msgid "no known route between '%s' and '%s'" msgstr "" #: ../libvips/colour/colourspace.c:543 msgid "convert to a new colorspace" msgstr "convert to a new colourspace" #: ../libvips/colour/colourspace.c:561 msgid "Space" msgstr "" #: ../libvips/colour/colourspace.c:562 msgid "Destination color space" msgstr "Destination colour space" #: ../libvips/colour/colourspace.c:568 msgid "Source space" msgstr "" #: ../libvips/colour/colourspace.c:569 msgid "Source color space" msgstr "Source colour space" #: ../libvips/colour/Lab2LabS.c:80 msgid "transform float Lab to signed short" msgstr "" #: ../libvips/colour/LabS2LabQ.c:126 msgid "transform short Lab to LabQ coding" msgstr "" #: ../libvips/colour/Lab2LCh.c:132 msgid "transform Lab to LCh" msgstr "" #: ../libvips/colour/Yxy2XYZ.c:93 msgid "transform Yxy to XYZ" msgstr "" #: ../libvips/colour/LabQ2sRGB.c:526 msgid "convert a LabQ image to sRGB" msgstr "" #: ../libvips/colour/float2rad.c:201 msgid "transform float RGB to Radiance coding" msgstr "" #: ../libvips/colour/XYZ2Yxy.c:92 msgid "transform XYZ to Yxy" msgstr "" #: ../libvips/colour/dE76.c:113 msgid "calculate dE76" msgstr "" #: ../libvips/colour/XYZ2Lab.c:222 msgid "transform XYZ to Lab" msgstr "" #: ../libvips/colour/LabQ2LabS.c:104 msgid "unpack a LabQ image to short Lab" msgstr "" #: ../libvips/colour/LabQ2Lab.c:124 msgid "unpack a LabQ image to float Lab" msgstr "" #: ../libvips/colour/LabS2Lab.c:78 msgid "transform signed short Lab to float" msgstr "" #: ../libvips/conversion/rot.c:355 ../libvips/conversion/rot45.c:267 msgid "rotate an image" msgstr "" #: ../libvips/conversion/rot.c:365 ../libvips/conversion/rot45.c:277 #: ../libvips/conversion/autorot.c:138 ../libvips/convolution/compass.c:156 #: ../libvips/foreign/dzsave.c:1885 ../libvips/mosaicing/mosaic.c:282 #: ../libvips/resample/similarity.c:125 msgid "Angle" msgstr "" #: ../libvips/conversion/rot.c:366 ../libvips/conversion/rot45.c:278 msgid "Angle to rotate image" msgstr "" #: ../libvips/conversion/conversion.c:196 msgid "conversion operations" msgstr "" #: ../libvips/conversion/grid.c:165 msgid "bad grid geometry" msgstr "" #: ../libvips/conversion/grid.c:195 msgid "grid an image" msgstr "" #: ../libvips/conversion/grid.c:205 ../libvips/conversion/cache.c:114 #: ../libvips/conversion/tilecache.c:420 #: ../libvips/conversion/sequential.c:334 ../libvips/foreign/dzsave.c:1931 #: ../libvips/foreign/tiffsave.c:210 msgid "Tile height" msgstr "" #: ../libvips/conversion/grid.c:206 msgid "chop into tiles this high" msgstr "" #: ../libvips/conversion/grid.c:213 msgid "number of tiles across" msgstr "" #: ../libvips/conversion/grid.c:220 msgid "number of tiles down" msgstr "" #: ../libvips/conversion/recomb.c:166 msgid "bands in must equal matrix width" msgstr "" #: ../libvips/conversion/recomb.c:201 msgid "linear recombination with matrix" msgstr "" #: ../libvips/conversion/recomb.c:208 ../libvips/conversion/bandbool.c:215 #: ../libvips/conversion/bandmean.c:199 #: ../libvips/convolution/correlation.c:149 #: ../libvips/convolution/convolution.c:130 #: ../libvips/morphology/morphology.c:118 ../libvips/resample/resample.c:91 msgid "Input image argument" msgstr "" #: ../libvips/conversion/recomb.c:213 msgid "M" msgstr "" #: ../libvips/conversion/recomb.c:214 msgid "matrix of coefficients" msgstr "" #: ../libvips/conversion/falsecolour.c:375 msgid "false-color an image" msgstr "false-colour an image" #: ../libvips/conversion/flatten.c:366 msgid "flatten alpha out of an image" msgstr "" #: ../libvips/conversion/flatten.c:378 ../libvips/conversion/join.c:264 #: ../libvips/conversion/embed.c:607 ../libvips/conversion/insert.c:501 #: ../libvips/foreign/foreign.c:1432 ../libvips/foreign/dzsave.c:1863 msgid "Background" msgstr "" #: ../libvips/conversion/flatten.c:379 ../libvips/foreign/foreign.c:1433 msgid "Background value" msgstr "" #: ../libvips/conversion/replicate.c:192 msgid "replicate an image" msgstr "" #: ../libvips/conversion/replicate.c:203 msgid "Repeat this many times horizontally" msgstr "" #: ../libvips/conversion/replicate.c:210 msgid "Repeat this many times vertically" msgstr "" #: ../libvips/conversion/bandary.c:136 msgid "no input images" msgstr "" #: ../libvips/conversion/bandary.c:187 msgid "operations on image bands" msgstr "" #: ../libvips/conversion/subsample.c:228 ../libvips/resample/shrink.c:373 msgid "image has shrunk to nothing" msgstr "" #: ../libvips/conversion/subsample.c:265 msgid "subsample an image" msgstr "" #: ../libvips/conversion/subsample.c:277 ../libvips/conversion/zoom.c:397 msgid "Xfac" msgstr "" #: ../libvips/conversion/subsample.c:278 msgid "Horizontal subsample factor" msgstr "" #: ../libvips/conversion/subsample.c:284 ../libvips/conversion/zoom.c:404 msgid "Yfac" msgstr "" #: ../libvips/conversion/subsample.c:285 msgid "Vertical subsample factor" msgstr "" #: ../libvips/conversion/subsample.c:291 msgid "Point" msgstr "" #: ../libvips/conversion/subsample.c:292 msgid "Point sample" msgstr "" #: ../libvips/conversion/cache.c:97 ../libvips/conversion/tilecache.c:408 msgid "cache an image" msgstr "" #: ../libvips/conversion/cache.c:107 ../libvips/conversion/tilecache.c:799 #: ../libvips/foreign/dzsave.c:1924 ../libvips/foreign/tiffsave.c:203 msgid "Tile width" msgstr "" #: ../libvips/conversion/cache.c:108 ../libvips/conversion/tilecache.c:800 #: ../libvips/foreign/dzsave.c:1925 ../libvips/foreign/tiffsave.c:204 msgid "Tile width in pixels" msgstr "" #: ../libvips/conversion/cache.c:115 ../libvips/conversion/tilecache.c:421 #: ../libvips/conversion/sequential.c:335 ../libvips/foreign/dzsave.c:1932 #: ../libvips/foreign/tiffsave.c:211 msgid "Tile height in pixels" msgstr "" #: ../libvips/conversion/cache.c:121 ../libvips/conversion/tilecache.c:806 msgid "Max tiles" msgstr "" #: ../libvips/conversion/cache.c:122 ../libvips/conversion/tilecache.c:807 msgid "Maximum number of tiles to cache" msgstr "" #: ../libvips/conversion/join.c:227 msgid "join a pair of images" msgstr "" #: ../libvips/conversion/join.c:231 msgid "in1" msgstr "" #: ../libvips/conversion/join.c:232 msgid "First input image" msgstr "" #: ../libvips/conversion/join.c:237 ../libvips/freqfilt/phasecor.c:112 msgid "in2" msgstr "" #: ../libvips/conversion/join.c:238 ../libvips/freqfilt/phasecor.c:113 msgid "Second input image" msgstr "" #: ../libvips/conversion/join.c:243 ../libvips/morphology/countlines.c:142 msgid "direction" msgstr "" #: ../libvips/conversion/join.c:244 msgid "Join left-right or up-down" msgstr "" #: ../libvips/conversion/join.c:250 ../libvips/conversion/insert.c:494 msgid "Expand" msgstr "" #: ../libvips/conversion/join.c:251 ../libvips/conversion/insert.c:495 msgid "Expand output to hold all of both inputs" msgstr "" #: ../libvips/conversion/join.c:257 msgid "Shim" msgstr "" #: ../libvips/conversion/join.c:258 msgid "Pixels between images" msgstr "" #: ../libvips/conversion/join.c:265 ../libvips/conversion/insert.c:502 msgid "Color for new pixels" msgstr "Colour for new pixels" #: ../libvips/conversion/join.c:271 ../libvips/create/text.c:298 msgid "Align" msgstr "" #: ../libvips/conversion/join.c:272 ../libvips/create/text.c:299 msgid "Align on the low, centre or high coordinate edge" msgstr "" #: ../libvips/conversion/gamma.c:137 msgid "gamma an image" msgstr "" #: ../libvips/conversion/gamma.c:149 msgid "exponent" msgstr "" #: ../libvips/conversion/gamma.c:150 msgid "Gamma factor" msgstr "" #: ../libvips/conversion/autorot.c:128 msgid "autorotate image by exif tag" msgstr "" #: ../libvips/conversion/autorot.c:139 msgid "Angle image was rotated by" msgstr "" #: ../libvips/conversion/extract.c:150 msgid "bad extract area" msgstr "" #: ../libvips/conversion/extract.c:193 msgid "extract an area from an image" msgstr "" #: ../libvips/conversion/extract.c:387 msgid "bad extract band" msgstr "" #: ../libvips/conversion/extract.c:416 msgid "extract band from an image" msgstr "" #: ../libvips/conversion/extract.c:429 msgid "Band to extract" msgstr "" #: ../libvips/conversion/extract.c:435 msgid "n" msgstr "" #: ../libvips/conversion/extract.c:436 msgid "Number of bands to extract" msgstr "" #: ../libvips/conversion/wrap.c:115 msgid "wrap image origin" msgstr "" #: ../libvips/conversion/wrap.c:126 ../libvips/conversion/embed.c:573 msgid "Left edge of input in output" msgstr "" #: ../libvips/conversion/wrap.c:133 ../libvips/conversion/embed.c:580 msgid "Top edge of input in output" msgstr "" #: ../libvips/conversion/zoom.c:341 msgid "zoom factors too large" msgstr "" #: ../libvips/conversion/zoom.c:385 msgid "zoom an image" msgstr "" #: ../libvips/conversion/zoom.c:398 msgid "Horizontal zoom factor" msgstr "" #: ../libvips/conversion/zoom.c:405 msgid "Vertical zoom factor" msgstr "" #: ../libvips/conversion/bandbool.c:75 #, c-format msgid "operator %s not supported across image bands" msgstr "" #: ../libvips/conversion/bandbool.c:207 msgid "boolean operation across image bands" msgstr "" #: ../libvips/conversion/ifthenelse.c:469 msgid "ifthenelse an image" msgstr "" #: ../libvips/conversion/ifthenelse.c:473 msgid "Condition" msgstr "" #: ../libvips/conversion/ifthenelse.c:474 msgid "Condition input image" msgstr "" #: ../libvips/conversion/ifthenelse.c:479 msgid "Then image" msgstr "" #: ../libvips/conversion/ifthenelse.c:480 msgid "Source for TRUE pixels" msgstr "" #: ../libvips/conversion/ifthenelse.c:485 msgid "Else image" msgstr "" #: ../libvips/conversion/ifthenelse.c:486 msgid "Source for FALSE pixels" msgstr "" #: ../libvips/conversion/ifthenelse.c:491 msgid "blend" msgstr "" #: ../libvips/conversion/ifthenelse.c:492 msgid "Blend smoothly between then and else parts" msgstr "" #: ../libvips/conversion/tilecache.c:427 ../libvips/conversion/tilecache.c:999 #: ../libvips/foreign/foreign.c:972 msgid "Access" msgstr "" #: ../libvips/conversion/tilecache.c:428 #: ../libvips/conversion/tilecache.c:1000 #: ../libvips/conversion/sequential.c:342 msgid "Expected access pattern" msgstr "" #: ../libvips/conversion/tilecache.c:434 msgid "Threaded" msgstr "" #: ../libvips/conversion/tilecache.c:435 msgid "Allow threaded access" msgstr "" #: ../libvips/conversion/tilecache.c:441 msgid "Persistent" msgstr "" #: ../libvips/conversion/tilecache.c:442 msgid "Keep cache between evaluations" msgstr "" #: ../libvips/conversion/tilecache.c:703 #, c-format msgid "error reading tile %dx%d: %s" msgstr "" #: ../libvips/conversion/tilecache.c:795 msgid "cache an image as a set of tiles" msgstr "" #: ../libvips/conversion/tilecache.c:995 msgid "cache an image as a set of lines" msgstr "" #: ../libvips/conversion/flip.c:236 msgid "flip an image" msgstr "" #: ../libvips/conversion/flip.c:246 ../libvips/mosaicing/merge.c:127 #: ../libvips/mosaicing/mosaic1.c:507 ../libvips/mosaicing/mosaic.c:198 msgid "Direction" msgstr "" #: ../libvips/conversion/flip.c:247 msgid "Direction to flip image" msgstr "" #: ../libvips/conversion/bandjoin.c:165 msgid "bandwise join a set of images" msgstr "" #: ../libvips/conversion/copy.c:306 msgid "image size too large" msgstr "" #: ../libvips/conversion/copy.c:331 msgid "copy an image" msgstr "" #: ../libvips/conversion/copy.c:348 msgid "Swap" msgstr "" #: ../libvips/conversion/copy.c:349 msgid "Swap bytes in image between little and big-endian" msgstr "" #: ../libvips/conversion/copy.c:356 ../libvips/conversion/embed.c:587 #: ../libvips/create/black.c:130 ../libvips/create/gaussnoise.c:154 #: ../libvips/create/xyz.c:194 ../libvips/create/point.c:144 #: ../libvips/create/fractsurf.c:103 ../libvips/foreign/rawload.c:124 #: ../libvips/iofuncs/image.c:1124 msgid "Image width in pixels" msgstr "" #: ../libvips/conversion/copy.c:363 ../libvips/conversion/embed.c:594 #: ../libvips/create/black.c:137 ../libvips/create/gaussnoise.c:161 #: ../libvips/create/xyz.c:201 ../libvips/create/point.c:151 #: ../libvips/create/fractsurf.c:110 ../libvips/foreign/rawload.c:131 #: ../libvips/iofuncs/image.c:1131 msgid "Image height in pixels" msgstr "" #: ../libvips/conversion/copy.c:369 ../libvips/create/black.c:143 #: ../libvips/create/identity.c:144 ../libvips/foreign/rawload.c:137 #: ../libvips/iofuncs/image.c:1137 msgid "Bands" msgstr "" #: ../libvips/conversion/copy.c:370 ../libvips/create/black.c:144 #: ../libvips/foreign/rawload.c:138 ../libvips/iofuncs/image.c:1138 msgid "Number of bands in image" msgstr "" #: ../libvips/conversion/copy.c:376 ../libvips/conversion/cast.c:542 #: ../libvips/iofuncs/image.c:1144 msgid "Format" msgstr "" #: ../libvips/conversion/copy.c:377 ../libvips/iofuncs/image.c:1145 msgid "Pixel format in image" msgstr "" #: ../libvips/conversion/copy.c:383 ../libvips/iofuncs/image.c:1151 msgid "Coding" msgstr "" #: ../libvips/conversion/copy.c:384 ../libvips/iofuncs/image.c:1152 msgid "Pixel coding" msgstr "" #: ../libvips/conversion/copy.c:390 ../libvips/iofuncs/image.c:1158 msgid "Interpretation" msgstr "" #: ../libvips/conversion/copy.c:391 ../libvips/iofuncs/image.c:1159 msgid "Pixel interpretation" msgstr "" #: ../libvips/conversion/copy.c:397 ../libvips/foreign/tiffsave.c:245 #: ../libvips/iofuncs/image.c:1165 msgid "Xres" msgstr "" #: ../libvips/conversion/copy.c:398 ../libvips/foreign/tiffsave.c:246 #: ../libvips/iofuncs/image.c:1166 msgid "Horizontal resolution in pixels/mm" msgstr "" #: ../libvips/conversion/copy.c:404 ../libvips/foreign/tiffsave.c:252 #: ../libvips/iofuncs/image.c:1172 msgid "Yres" msgstr "" #: ../libvips/conversion/copy.c:405 ../libvips/foreign/tiffsave.c:253 #: ../libvips/iofuncs/image.c:1173 msgid "Vertical resolution in pixels/mm" msgstr "" #: ../libvips/conversion/copy.c:411 ../libvips/iofuncs/image.c:1179 msgid "Xoffset" msgstr "" #: ../libvips/conversion/copy.c:412 ../libvips/iofuncs/image.c:1180 msgid "Horizontal offset of origin" msgstr "" #: ../libvips/conversion/copy.c:418 ../libvips/iofuncs/image.c:1186 msgid "Yoffset" msgstr "" #: ../libvips/conversion/copy.c:419 ../libvips/iofuncs/image.c:1187 msgid "Vertical offset of origin" msgstr "" #: ../libvips/conversion/cast.c:131 #, c-format msgid "%d underflows and %d overflows detected" msgstr "" #: ../libvips/conversion/cast.c:530 msgid "cast an image" msgstr "" #: ../libvips/conversion/cast.c:543 msgid "Format to cast to" msgstr "" #: ../libvips/conversion/cast.c:549 msgid "Shift" msgstr "" #: ../libvips/conversion/cast.c:550 msgid "Shift integer values up and down" msgstr "" #: ../libvips/conversion/sequential.c:317 msgid "check sequential access" msgstr "" #: ../libvips/conversion/sequential.c:327 msgid "trace" msgstr "" #: ../libvips/conversion/sequential.c:328 msgid "trace pixel requests" msgstr "" #: ../libvips/conversion/sequential.c:341 msgid "Strategy" msgstr "" #: ../libvips/conversion/embed.c:477 ../libvips/iofuncs/image.c:2699 msgid "bad dimensions" msgstr "" #: ../libvips/conversion/embed.c:560 msgid "embed an image in a larger image" msgstr "" #: ../libvips/conversion/embed.c:600 msgid "Extend" msgstr "" #: ../libvips/conversion/embed.c:601 msgid "How to generate the extra pixels" msgstr "" #: ../libvips/conversion/embed.c:608 ../libvips/foreign/dzsave.c:1864 msgid "Color for background pixels" msgstr "Colour for background pixels" #: ../libvips/conversion/insert.c:460 msgid "insert image @sub into @main at @x, @y" msgstr "" #: ../libvips/conversion/insert.c:468 msgid "Main" msgstr "" #: ../libvips/conversion/insert.c:469 msgid "Main input image" msgstr "" #: ../libvips/conversion/insert.c:474 ../libvips/draw/draw_image.c:261 msgid "Sub-image" msgstr "" #: ../libvips/conversion/insert.c:475 ../libvips/draw/draw_image.c:262 msgid "Sub-image to insert into main image" msgstr "" #: ../libvips/conversion/insert.c:480 msgid "X" msgstr "" #: ../libvips/conversion/insert.c:481 msgid "Left edge of sub in main" msgstr "" #: ../libvips/conversion/insert.c:487 msgid "Y" msgstr "" #: ../libvips/conversion/insert.c:488 msgid "Top edge of sub in main" msgstr "" #: ../libvips/conversion/msb.c:166 msgid "bad band" msgstr "" #: ../libvips/conversion/msb.c:238 msgid "pick most-significant byte from an image" msgstr "" #: ../libvips/conversion/msb.c:251 msgid "Band to msb" msgstr "" #: ../libvips/conversion/bandrank.c:238 msgid "band-wise rank of a set of images" msgstr "" #: ../libvips/conversion/bandrank.c:252 msgid "Select this band element from sorted list" msgstr "" #: ../libvips/conversion/bandmean.c:192 msgid "band-wise average" msgstr "" #: ../libvips/conversion/scale.c:147 msgid "scale an image to uchar" msgstr "" #: ../libvips/conversion/scale.c:157 ../libvips/iofuncs/system.c:293 msgid "Log" msgstr "" #: ../libvips/conversion/scale.c:158 msgid "Log scale" msgstr "" #: ../libvips/conversion/scale.c:164 msgid "Exponent" msgstr "" #: ../libvips/conversion/scale.c:165 msgid "Exponent for log scale" msgstr "" #: ../libvips/convolution/im_aconv.c:224 ../libvips/convolution/im_aconv.c:230 #: ../libvips/convolution/im_aconv.c:751 #: ../libvips/convolution/im_aconvsep.c:131 msgid "mask too complex" msgstr "" #: ../libvips/convolution/im_aconv.c:981 #: ../libvips/convolution/im_aconv.c:1202 #: ../libvips/convolution/im_conv.c:1056 #: ../libvips/convolution/im_aconvsep.c:799 #: ../libvips/convolution/im_conv_f.c:341 ../libvips/morphology/hitmiss.c:732 msgid "image too small for mask" msgstr "" #: ../libvips/convolution/fastcor.c:215 msgid "fast correlation" msgstr "" #: ../libvips/convolution/convsep.c:103 msgid "seperable convolution operation" msgstr "" #: ../libvips/convolution/convsep.c:107 ../libvips/convolution/gaussblur.c:143 #: ../libvips/convolution/compass.c:170 ../libvips/convolution/conv.c:139 #: ../libvips/create/logmat.c:229 ../libvips/create/gaussmat.c:205 msgid "Precision" msgstr "" #: ../libvips/convolution/convsep.c:108 ../libvips/convolution/gaussblur.c:144 #: ../libvips/convolution/compass.c:171 ../libvips/convolution/conv.c:140 msgid "Convolve with this precision" msgstr "" #: ../libvips/convolution/convsep.c:114 ../libvips/convolution/compass.c:177 #: ../libvips/convolution/conv.c:146 msgid "Layers" msgstr "" #: ../libvips/convolution/convsep.c:115 ../libvips/convolution/compass.c:178 #: ../libvips/convolution/conv.c:147 msgid "Use this many layers in approximation" msgstr "" #: ../libvips/convolution/convsep.c:121 ../libvips/convolution/compass.c:184 #: ../libvips/convolution/conv.c:153 msgid "Cluster" msgstr "" #: ../libvips/convolution/convsep.c:122 ../libvips/convolution/compass.c:185 #: ../libvips/convolution/conv.c:154 msgid "Cluster lines closer than this in approximation" msgstr "" #: ../libvips/convolution/gaussblur.c:111 msgid "gaussian blur" msgstr "" #: ../libvips/convolution/gaussblur.c:129 ../libvips/create/gaussnoise.c:174 #: ../libvips/create/gaussmat.c:177 msgid "Sigma" msgstr "" #: ../libvips/convolution/gaussblur.c:130 ../libvips/create/gaussmat.c:178 msgid "Sigma of Gaussian" msgstr "" #: ../libvips/convolution/gaussblur.c:136 ../libvips/create/gaussmat.c:184 msgid "Minimum amplitude" msgstr "" #: ../libvips/convolution/gaussblur.c:137 ../libvips/create/gaussmat.c:185 msgid "Minimum amplitude of Gaussian" msgstr "" #: ../libvips/convolution/im_conv.c:219 ../libvips/histogram/maplut.c:113 #, c-format msgid "%d overflows detected" msgstr "" #: ../libvips/convolution/im_conv.c:222 #, c-format msgid "%d underflows detected" msgstr "" #: ../libvips/convolution/correlation.c:142 msgid "correlation operation" msgstr "" #: ../libvips/convolution/correlation.c:154 #: ../libvips/convolution/convolution.c:141 ../libvips/draw/draw_mask.c:323 #: ../libvips/morphology/labelregions.c:125 ../libvips/morphology/morph.c:146 msgid "Mask" msgstr "" #: ../libvips/convolution/correlation.c:155 msgid "Input reference image" msgstr "" #: ../libvips/convolution/compass.c:145 msgid "convolve with rotating mask" msgstr "" #: ../libvips/convolution/compass.c:149 msgid "Times" msgstr "" #: ../libvips/convolution/compass.c:150 msgid "Rotate and convolve this many times" msgstr "" #: ../libvips/convolution/compass.c:157 msgid "Rotate mask by this much between convolutions" msgstr "" #: ../libvips/convolution/compass.c:163 msgid "Combine" msgstr "" #: ../libvips/convolution/compass.c:164 msgid "Combine convolution results like this" msgstr "" #: ../libvips/convolution/sharpen.c:312 msgid "unsharp masking for print" msgstr "" #: ../libvips/convolution/sharpen.c:330 ../libvips/create/logmat.c:201 #: ../libvips/draw/draw_circle.c:248 msgid "Radius" msgstr "" #: ../libvips/convolution/sharpen.c:331 msgid "Mask radius" msgstr "" #: ../libvips/convolution/sharpen.c:337 ../libvips/draw/draw_line.c:284 msgid "x1" msgstr "" #: ../libvips/convolution/sharpen.c:338 msgid "Flat/jaggy threshold" msgstr "" #: ../libvips/convolution/sharpen.c:344 ../libvips/draw/draw_line.c:305 msgid "y2" msgstr "" #: ../libvips/convolution/sharpen.c:345 msgid "Maximum brightening" msgstr "" #: ../libvips/convolution/sharpen.c:351 msgid "y3" msgstr "" #: ../libvips/convolution/sharpen.c:352 msgid "Maximum darkening" msgstr "" #: ../libvips/convolution/sharpen.c:358 msgid "m1" msgstr "" #: ../libvips/convolution/sharpen.c:359 msgid "Slope for flat areas" msgstr "" #: ../libvips/convolution/sharpen.c:365 msgid "m2" msgstr "" #: ../libvips/convolution/sharpen.c:366 msgid "Slope for jaggy areas" msgstr "" #: ../libvips/convolution/spcor.c:311 msgid "spatial correlation" msgstr "" #: ../libvips/convolution/conv.c:135 msgid "convolution operation" msgstr "" #: ../libvips/convolution/convolution.c:120 msgid "convolution operations" msgstr "" #: ../libvips/convolution/convolution.c:142 ../libvips/morphology/morph.c:147 msgid "Input matrix image" msgstr "" #: ../libvips/create/mask.c:111 msgid "base class for frequency filters" msgstr "" #: ../libvips/create/mask.c:119 msgid "Optical" msgstr "" #: ../libvips/create/mask.c:120 msgid "Rotate quadrants to optical space" msgstr "" #: ../libvips/create/mask.c:126 msgid "Reject" msgstr "" #: ../libvips/create/mask.c:127 msgid "Invert the sense of the filter" msgstr "" #: ../libvips/create/mask.c:133 msgid "Nodc" msgstr "" #: ../libvips/create/mask.c:134 msgid "Remove DC component" msgstr "" #: ../libvips/create/zone.c:90 msgid "make a zone plate" msgstr "" #: ../libvips/create/invertlut.c:124 msgid "bad input matrix" msgstr "" #: ../libvips/create/invertlut.c:129 msgid "bad size" msgstr "" #: ../libvips/create/invertlut.c:149 #, c-format msgid "element (%d, %d) is %g, outside range [0,1]" msgstr "" #: ../libvips/create/invertlut.c:285 msgid "build an inverted look-up table" msgstr "" #: ../libvips/create/invertlut.c:290 ../libvips/create/buildlut.c:262 msgid "Matrix of XY coordinates" msgstr "" #: ../libvips/create/invertlut.c:296 msgid "LUT size to generate" msgstr "" #: ../libvips/create/mask_gaussian.c:81 #: ../libvips/create/mask_gaussian_band.c:102 msgid "make a gaussian filter" msgstr "" #: ../libvips/create/mask_gaussian.c:86 ../libvips/create/mask_gaussian.c:87 #: ../libvips/create/mask_ideal.c:84 ../libvips/create/mask_ideal.c:85 #: ../libvips/create/mask_butterworth.c:95 #: ../libvips/create/mask_butterworth.c:96 msgid "Frequency cutoff" msgstr "" #: ../libvips/create/mask_gaussian.c:93 ../libvips/create/mask_gaussian.c:94 #: ../libvips/create/mask_butterworth_band.c:141 #: ../libvips/create/mask_butterworth_band.c:142 #: ../libvips/create/mask_gaussian_band.c:128 #: ../libvips/create/mask_gaussian_band.c:129 #: ../libvips/create/mask_butterworth.c:102 #: ../libvips/create/mask_butterworth.c:103 msgid "Amplitude cutoff" msgstr "" #: ../libvips/create/mask_butterworth_band.c:108 msgid "make a butterworth_band filter" msgstr "" #: ../libvips/create/mask_butterworth_band.c:113 #: ../libvips/create/mask_butterworth.c:88 msgid "Order" msgstr "" #: ../libvips/create/mask_butterworth_band.c:114 #: ../libvips/create/mask_butterworth.c:89 msgid "Filter order" msgstr "" #: ../libvips/create/mask_butterworth_band.c:120 #: ../libvips/create/mask_butterworth_band.c:121 #: ../libvips/create/mask_gaussian_band.c:107 #: ../libvips/create/mask_gaussian_band.c:108 #: ../libvips/create/mask_ideal_band.c:98 #: ../libvips/create/mask_ideal_band.c:99 msgid "Frequency cutoff x" msgstr "" #: ../libvips/create/mask_butterworth_band.c:127 #: ../libvips/create/mask_butterworth_band.c:128 #: ../libvips/create/mask_gaussian_band.c:114 #: ../libvips/create/mask_gaussian_band.c:115 #: ../libvips/create/mask_ideal_band.c:105 #: ../libvips/create/mask_ideal_band.c:106 msgid "Frequency cutoff y" msgstr "" #: ../libvips/create/mask_butterworth_band.c:134 #: ../libvips/create/mask_gaussian_band.c:121 #: ../libvips/create/mask_ideal_band.c:112 msgid "radius" msgstr "" #: ../libvips/create/mask_butterworth_band.c:135 #: ../libvips/create/mask_gaussian_band.c:122 #: ../libvips/create/mask_ideal_band.c:113 msgid "radius of circle" msgstr "" #: ../libvips/create/sines.c:121 msgid "make a 2D sine wave" msgstr "" #: ../libvips/create/sines.c:127 msgid "hfreq" msgstr "" #: ../libvips/create/sines.c:128 msgid "Horizontal spatial frequency" msgstr "" #: ../libvips/create/sines.c:134 msgid "vfreq" msgstr "" #: ../libvips/create/sines.c:135 msgid "Vertical spatial frequency" msgstr "" #: ../libvips/create/black.c:125 msgid "make a black image" msgstr "" #: ../libvips/create/mask_ideal_ring.c:93 msgid "make an ideal ring filter" msgstr "" #: ../libvips/create/mask_ideal_ring.c:98 #: ../libvips/create/mask_ideal_ring.c:99 #: ../libvips/create/mask_butterworth_ring.c:106 #: ../libvips/create/mask_butterworth_ring.c:107 #: ../libvips/create/mask_gaussian_ring.c:101 #: ../libvips/create/mask_gaussian_ring.c:102 msgid "Ringwidth" msgstr "" #: ../libvips/create/gaussnoise.c:145 msgid "make a gaussnoise image" msgstr "" #: ../libvips/create/gaussnoise.c:167 ../libvips/histogram/stdif.c:327 msgid "Mean" msgstr "" #: ../libvips/create/gaussnoise.c:168 msgid "Mean of pixels in generated image" msgstr "" #: ../libvips/create/gaussnoise.c:175 msgid "Standard deviation of pixels in generated image" msgstr "" #: ../libvips/create/logmat.c:147 ../libvips/create/gaussmat.c:126 msgid "mask too large" msgstr "" #: ../libvips/create/logmat.c:197 msgid "make a laplacian of gaussian image" msgstr "" #: ../libvips/create/logmat.c:202 msgid "Radius of Logmatian" msgstr "" #: ../libvips/create/logmat.c:209 msgid "Minimum amplitude of Logmatian" msgstr "" #: ../libvips/create/logmat.c:215 ../libvips/create/gaussmat.c:191 msgid "Separable" msgstr "" #: ../libvips/create/logmat.c:216 msgid "Generate separable Logmatian" msgstr "" #: ../libvips/create/logmat.c:222 ../libvips/create/gaussmat.c:198 msgid "Integer" msgstr "" #: ../libvips/create/logmat.c:223 msgid "Generate integer Logmatian" msgstr "" #: ../libvips/create/logmat.c:230 ../libvips/create/gaussmat.c:206 msgid "Generate with this precision" msgstr "" #: ../libvips/create/tonelut.c:221 ../libvips/create/buildlut.c:257 msgid "build a look-up table" msgstr "" #: ../libvips/create/tonelut.c:225 msgid "In-max" msgstr "" #: ../libvips/create/tonelut.c:226 msgid "Size of LUT to build" msgstr "" #: ../libvips/create/tonelut.c:232 msgid "Out-max" msgstr "" #: ../libvips/create/tonelut.c:233 msgid "Maximum value in output LUT" msgstr "" #: ../libvips/create/tonelut.c:239 msgid "Black point" msgstr "" #: ../libvips/create/tonelut.c:240 msgid "Lowest value in output" msgstr "" #: ../libvips/create/tonelut.c:246 msgid "White point" msgstr "" #: ../libvips/create/tonelut.c:247 msgid "Highest value in output" msgstr "" #: ../libvips/create/tonelut.c:253 msgid "Shadow point" msgstr "" #: ../libvips/create/tonelut.c:254 msgid "Position of shadow" msgstr "" #: ../libvips/create/tonelut.c:260 msgid "Mid-tone point" msgstr "" #: ../libvips/create/tonelut.c:261 msgid "Position of mid-tones" msgstr "" #: ../libvips/create/tonelut.c:267 msgid "Highlight point" msgstr "" #: ../libvips/create/tonelut.c:268 msgid "Position of highlights" msgstr "" #: ../libvips/create/tonelut.c:274 msgid "Shadow adjust" msgstr "" #: ../libvips/create/tonelut.c:275 msgid "Adjust shadows by this much" msgstr "" #: ../libvips/create/tonelut.c:281 msgid "Mid-tone adjust" msgstr "" #: ../libvips/create/tonelut.c:282 msgid "Adjust mid-tones by this much" msgstr "" #: ../libvips/create/tonelut.c:288 msgid "Highlight adjust" msgstr "" #: ../libvips/create/tonelut.c:289 msgid "Adjust highlights by this much" msgstr "" #: ../libvips/create/mask_ideal.c:79 msgid "make an ideal filter" msgstr "" #: ../libvips/create/mask_butterworth_ring.c:101 msgid "make a butterworth ring filter" msgstr "" #: ../libvips/create/create.c:97 msgid "create operations" msgstr "" #: ../libvips/create/identity.c:140 msgid "make a 1D image where pixel values are indexes" msgstr "" #: ../libvips/create/identity.c:145 msgid "Number of bands in LUT" msgstr "" #: ../libvips/create/identity.c:151 msgid "Ushort" msgstr "" #: ../libvips/create/identity.c:152 msgid "Create a 16-bit LUT" msgstr "" #: ../libvips/create/identity.c:159 msgid "Size of 16-bit LUT" msgstr "" #: ../libvips/create/eye.c:98 msgid "make an image showing the eye's spatial response" msgstr "" #: ../libvips/create/eye.c:103 msgid "Factor" msgstr "" #: ../libvips/create/eye.c:104 msgid "Maximum spatial frequency" msgstr "" #: ../libvips/create/text.c:164 msgid "invalid markup in text" msgstr "" #: ../libvips/create/text.c:206 msgid "no text to render" msgstr "" #: ../libvips/create/text.c:273 msgid "make a text image" msgstr "" #: ../libvips/create/text.c:277 msgid "Text" msgstr "" #: ../libvips/create/text.c:278 msgid "Text to render" msgstr "" #: ../libvips/create/text.c:284 msgid "Font" msgstr "" #: ../libvips/create/text.c:285 msgid "Font to render width" msgstr "" #: ../libvips/create/text.c:292 msgid "Maximum image width in pixels" msgstr "" #: ../libvips/create/text.c:305 msgid "DPI" msgstr "" #: ../libvips/create/text.c:306 msgid "DPI to render at" msgstr "" #: ../libvips/create/gaussmat.c:173 msgid "make a gaussian image" msgstr "" #: ../libvips/create/gaussmat.c:192 msgid "Generate separable Gaussian" msgstr "" #: ../libvips/create/gaussmat.c:199 msgid "Generate integer Gaussian" msgstr "" #: ../libvips/create/xyz.c:139 msgid "lower dimensions not set" msgstr "" #: ../libvips/create/xyz.c:156 msgid "image too large" msgstr "" #: ../libvips/create/xyz.c:189 msgid "make an image where pixel values are coordinates" msgstr "" #: ../libvips/create/xyz.c:207 msgid "csize" msgstr "" #: ../libvips/create/xyz.c:208 msgid "Size of third dimension" msgstr "" #: ../libvips/create/xyz.c:214 msgid "dsize" msgstr "" #: ../libvips/create/xyz.c:215 msgid "Size of fourth dimension" msgstr "" #: ../libvips/create/xyz.c:221 msgid "esize" msgstr "" #: ../libvips/create/xyz.c:222 msgid "Size of fifth dimension" msgstr "" #: ../libvips/create/mask_butterworth.c:83 msgid "make a butterworth filter" msgstr "" #: ../libvips/create/mask_gaussian_ring.c:96 msgid "make a gaussian ring filter" msgstr "" #: ../libvips/create/mask_fractal.c:88 msgid "make fractal filter" msgstr "" #: ../libvips/create/mask_fractal.c:93 ../libvips/create/mask_fractal.c:94 #: ../libvips/create/fractsurf.c:116 ../libvips/create/fractsurf.c:117 msgid "Fractal dimension" msgstr "" #: ../libvips/create/point.c:134 msgid "make a point image" msgstr "" #: ../libvips/create/point.c:157 msgid "Uchar" msgstr "" #: ../libvips/create/point.c:158 msgid "Output an unsigned char image" msgstr "" #: ../libvips/create/mask_ideal_band.c:93 msgid "make an ideal band filter" msgstr "" #: ../libvips/create/grey.c:89 msgid "make a grey ramp image" msgstr "" #: ../libvips/create/fractsurf.c:98 msgid "make a fractal surface" msgstr "" #: ../libvips/create/buildlut.c:134 #, c-format msgid "x value row %d not an int" msgstr "" #: ../libvips/create/buildlut.c:149 msgid "x range too small" msgstr "" #: ../libvips/draw/draw_smudge.c:193 msgid "blur a rectangle on an image" msgstr "" #: ../libvips/draw/draw_smudge.c:198 ../libvips/draw/draw_smudge.c:205 #: ../libvips/draw/draw_smudge.c:212 ../libvips/draw/draw_smudge.c:219 #: ../libvips/draw/draw_rect.c:174 ../libvips/draw/draw_rect.c:181 #: ../libvips/draw/draw_rect.c:188 ../libvips/draw/draw_rect.c:195 msgid "Rect to fill" msgstr "" #: ../libvips/draw/draw_smudge.c:204 ../libvips/draw/draw_rect.c:180 msgid "top" msgstr "" #: ../libvips/draw/draw_smudge.c:211 ../libvips/draw/draw_rect.c:187 msgid "width" msgstr "" #: ../libvips/draw/draw_smudge.c:218 ../libvips/draw/draw_rect.c:194 msgid "height" msgstr "" #: ../libvips/draw/draw_line.c:280 msgid "draw a line on an image" msgstr "" #: ../libvips/draw/draw_line.c:285 ../libvips/draw/draw_line.c:292 msgid "Start of draw_line" msgstr "" #: ../libvips/draw/draw_line.c:291 msgid "y1" msgstr "" #: ../libvips/draw/draw_line.c:298 msgid "x2" msgstr "" #: ../libvips/draw/draw_line.c:299 ../libvips/draw/draw_line.c:306 msgid "End of draw_line" msgstr "" #: ../libvips/draw/draw_image.c:257 msgid "paint an image into another image" msgstr "" #: ../libvips/draw/draw_image.c:268 ../libvips/draw/draw_image.c:275 msgid "Draw image here" msgstr "" #: ../libvips/draw/draw_image.c:281 ../libvips/iofuncs/image.c:1200 msgid "Mode" msgstr "" #: ../libvips/draw/draw_image.c:282 msgid "Combining mode" msgstr "" #: ../libvips/draw/draw_circle.c:230 msgid "draw a circle on an image" msgstr "" #: ../libvips/draw/draw_circle.c:234 msgid "cx" msgstr "" #: ../libvips/draw/draw_circle.c:235 ../libvips/draw/draw_circle.c:242 msgid "Centre of draw_circle" msgstr "" #: ../libvips/draw/draw_circle.c:241 msgid "cy" msgstr "" #: ../libvips/draw/draw_circle.c:249 msgid "Radius in pixels" msgstr "" #: ../libvips/draw/draw_circle.c:255 ../libvips/draw/draw_rect.c:201 msgid "Fill" msgstr "" #: ../libvips/draw/draw_circle.c:256 ../libvips/draw/draw_rect.c:202 msgid "Draw a solid object" msgstr "" #: ../libvips/draw/drawink.c:86 msgid "draw with ink operations" msgstr "" #: ../libvips/draw/drawink.c:90 msgid "Ink" msgstr "" #: ../libvips/draw/drawink.c:91 msgid "Color for pixels" msgstr "Colour for pixels" #: ../libvips/draw/draw_flood.c:548 msgid "flood-fill an area" msgstr "" #: ../libvips/draw/draw_flood.c:553 ../libvips/draw/draw_flood.c:560 msgid "DrawFlood start point" msgstr "" #: ../libvips/draw/draw_flood.c:566 msgid "Test" msgstr "" #: ../libvips/draw/draw_flood.c:567 msgid "Test pixels in this image" msgstr "" #: ../libvips/draw/draw_flood.c:572 msgid "Equal" msgstr "" #: ../libvips/draw/draw_flood.c:573 msgid "DrawFlood while equal to edge" msgstr "" #: ../libvips/draw/draw_flood.c:580 msgid "Left edge of modified area" msgstr "" #: ../libvips/draw/draw_flood.c:587 msgid "top edge of modified area" msgstr "" #: ../libvips/draw/draw_flood.c:594 msgid "width of modified area" msgstr "" #: ../libvips/draw/draw_flood.c:601 msgid "height of modified area" msgstr "" #: ../libvips/draw/draw.c:112 msgid "draw operations" msgstr "" #: ../libvips/draw/draw.c:116 msgid "Image" msgstr "" #: ../libvips/draw/draw.c:117 msgid "Image to draw on" msgstr "" #: ../libvips/draw/draw_rect.c:169 msgid "paint a rectangle on an image" msgstr "" #: ../libvips/draw/draw_mask.c:319 msgid "draw a mask on an image" msgstr "" #: ../libvips/draw/draw_mask.c:324 msgid "Mask of pixels to draw" msgstr "" #: ../libvips/draw/draw_mask.c:330 ../libvips/draw/draw_mask.c:337 msgid "Draw mask here" msgstr "" #: ../libvips/foreign/jpeg2vips.c:188 #, c-format msgid "read gave %ld warnings" msgstr "" #: ../libvips/foreign/jpeg2vips.c:548 msgid "error reading resolution" msgstr "" #: ../libvips/foreign/jpeg2vips.c:585 ../libvips/foreign/vips2jpeg.c:491 msgid "unknown EXIF resolution unit" msgstr "" #: ../libvips/foreign/jpeg2vips.c:776 msgid "unknown JFIF resolution unit" msgstr "" #: ../libvips/foreign/jpeg2vips.c:943 ../libvips/foreign/vipspng.c:500 #, c-format msgid "out of order read at line %d" msgstr "" #: ../libvips/foreign/radiance.c:672 msgid "end of file" msgstr "" #: ../libvips/foreign/radiance.c:752 msgid "scanline length mismatch" msgstr "" #: ../libvips/foreign/radiance.c:769 msgid "overrun" msgstr "" #: ../libvips/foreign/radiance.c:1005 msgid "error reading radiance header" msgstr "" #: ../libvips/foreign/radiance.c:1082 #, c-format msgid "read error line %d" msgstr "" #: ../libvips/foreign/vips2jpeg.c:143 #, c-format msgid "%s" msgstr "" #: ../libvips/foreign/vips2jpeg.c:505 msgid "error setting JPEG resolution" msgstr "" #: ../libvips/foreign/vips2jpeg.c:525 msgid "error setting JPEG dimensions" msgstr "" #: ../libvips/foreign/vips2jpeg.c:704 msgid "error saving EXIF" msgstr "" #: ../libvips/foreign/vips2jpeg.c:941 msgid "trellis_quant unsupported" msgstr "" #: ../libvips/foreign/vips2jpeg.c:953 msgid "overshoot_deringing unsupported" msgstr "" #: ../libvips/foreign/vips2jpeg.c:966 ../libvips/foreign/vips2jpeg.c:984 msgid "Ignoring optimize_scans" msgstr "" #: ../libvips/foreign/vips2jpeg.c:971 msgid "Ignoring optimize_scans for baseline" msgstr "" #: ../libvips/foreign/vips2jpeg.c:978 msgid "Ignoring trellis_quant" msgstr "" #: ../libvips/foreign/vips2jpeg.c:981 msgid "Ignoring overshoot_deringing" msgstr "" #: ../libvips/foreign/openexrload.c:128 msgid "load an OpenEXR image" msgstr "" #: ../libvips/foreign/openexrload.c:140 ../libvips/foreign/vipssave.c:114 #: ../libvips/foreign/rawsave.c:145 ../libvips/foreign/csvsave.c:103 #: ../libvips/foreign/matrixload.c:149 ../libvips/foreign/radsave.c:120 #: ../libvips/foreign/rawload.c:116 ../libvips/foreign/webpsave.c:166 #: ../libvips/foreign/csvload.c:135 ../libvips/foreign/jpegload.c:250 #: ../libvips/foreign/magickload.c:196 ../libvips/foreign/webpload.c:176 #: ../libvips/foreign/matload.c:138 ../libvips/foreign/jpegsave.c:253 #: ../libvips/foreign/dzsave.c:1827 ../libvips/foreign/ppmsave.c:121 #: ../libvips/foreign/tiffsave.c:159 ../libvips/foreign/matrixsave.c:121 #: ../libvips/foreign/fitssave.c:138 ../libvips/foreign/pngload.c:140 #: ../libvips/foreign/fitsload.c:119 ../libvips/foreign/vipsload.c:134 #: ../libvips/foreign/tiffload.c:192 ../libvips/foreign/analyzeload.c:129 #: ../libvips/foreign/openslideload.c:185 ../libvips/foreign/pngsave.c:188 #: ../libvips/foreign/radload.c:132 ../libvips/foreign/ppmload.c:129 #: ../libvips/iofuncs/image.c:1193 msgid "Filename" msgstr "" #: ../libvips/foreign/openexrload.c:141 ../libvips/foreign/matrixload.c:150 #: ../libvips/foreign/rawload.c:117 ../libvips/foreign/csvload.c:136 #: ../libvips/foreign/jpegload.c:251 ../libvips/foreign/magickload.c:197 #: ../libvips/foreign/webpload.c:177 ../libvips/foreign/matload.c:139 #: ../libvips/foreign/pngload.c:141 ../libvips/foreign/fitsload.c:120 #: ../libvips/foreign/vipsload.c:135 ../libvips/foreign/tiffload.c:193 #: ../libvips/foreign/analyzeload.c:130 ../libvips/foreign/openslideload.c:186 #: ../libvips/foreign/radload.c:133 ../libvips/foreign/ppmload.c:130 msgid "Filename to load from" msgstr "" #: ../libvips/foreign/vipssave.c:104 msgid "save image to vips file" msgstr "" #: ../libvips/foreign/vipssave.c:115 ../libvips/foreign/rawsave.c:146 #: ../libvips/foreign/csvsave.c:104 ../libvips/foreign/radsave.c:121 #: ../libvips/foreign/webpsave.c:167 ../libvips/foreign/jpegsave.c:254 #: ../libvips/foreign/dzsave.c:1828 ../libvips/foreign/ppmsave.c:122 #: ../libvips/foreign/tiffsave.c:160 ../libvips/foreign/matrixsave.c:122 #: ../libvips/foreign/fitssave.c:139 ../libvips/foreign/pngsave.c:189 msgid "Filename to save to" msgstr "" #: ../libvips/foreign/rawsave.c:139 msgid "save image to raw file" msgstr "" #: ../libvips/foreign/rawsave.c:245 msgid "write raw image to file descriptor" msgstr "" #: ../libvips/foreign/rawsave.c:251 msgid "File descriptor" msgstr "" #: ../libvips/foreign/rawsave.c:252 msgid "File descriptor to write to" msgstr "" #: ../libvips/foreign/csvsave.c:95 msgid "save image to csv file" msgstr "" #: ../libvips/foreign/csvsave.c:110 ../libvips/foreign/csvload.c:163 msgid "Separator" msgstr "" #: ../libvips/foreign/csvsave.c:111 msgid "Separator characters" msgstr "" #: ../libvips/foreign/matrixload.c:137 msgid "load matrix from file" msgstr "" #: ../libvips/foreign/radsave.c:109 msgid "save image to Radiance file" msgstr "" #: ../libvips/foreign/rawload.c:108 msgid "load raw data from a file" msgstr "" #: ../libvips/foreign/rawload.c:144 ../libvips/iofuncs/image.c:1221 msgid "Size of header" msgstr "" #: ../libvips/foreign/rawload.c:145 ../libvips/iofuncs/image.c:1222 msgid "Offset in bytes from start of file" msgstr "" #: ../libvips/foreign/webpsave.c:91 msgid "save webp" msgstr "" #: ../libvips/foreign/webpsave.c:99 ../libvips/foreign/jpegsave.c:142 #: ../libvips/foreign/tiffsave.c:174 msgid "Q" msgstr "" #: ../libvips/foreign/webpsave.c:100 ../libvips/foreign/jpegsave.c:143 #: ../libvips/foreign/tiffsave.c:175 msgid "Q factor" msgstr "" #: ../libvips/foreign/webpsave.c:106 msgid "lossless" msgstr "" #: ../libvips/foreign/webpsave.c:107 msgid "enable lossless compression" msgstr "" #: ../libvips/foreign/webpsave.c:162 msgid "save image to webp file" msgstr "" #: ../libvips/foreign/webpsave.c:229 msgid "save image to webp buffer" msgstr "" #: ../libvips/foreign/webpsave.c:233 ../libvips/foreign/jpegload.c:329 #: ../libvips/foreign/magickload.c:277 ../libvips/foreign/webpload.c:245 #: ../libvips/foreign/jpegsave.c:322 ../libvips/foreign/pngload.c:208 #: ../libvips/foreign/tiffload.c:266 ../libvips/foreign/pngsave.c:250 msgid "Buffer" msgstr "" #: ../libvips/foreign/webpsave.c:234 ../libvips/foreign/jpegsave.c:323 #: ../libvips/foreign/pngsave.c:251 msgid "Buffer to save to" msgstr "" #: ../libvips/foreign/webpsave.c:276 ../libvips/foreign/jpegsave.c:367 msgid "error writing output" msgstr "" #: ../libvips/foreign/webpsave.c:292 msgid "save image to webp mime" msgstr "" #: ../libvips/foreign/vips2tiff.c:284 #, c-format msgid "unable to open \"%s\" for output" msgstr "" #: ../libvips/foreign/vips2tiff.c:300 ../libvips/foreign/tiff2vips.c:1751 #, c-format msgid "unable to open \"%s\" for input" msgstr "" #: ../libvips/foreign/vips2tiff.c:796 msgid "tile size not a multiple of 16" msgstr "" #: ../libvips/foreign/vips2tiff.c:806 msgid "can only pyramid LABQ and non-complex images" msgstr "" #: ../libvips/foreign/vips2tiff.c:819 ../libvips/foreign/ppm.c:810 msgid "can only squash 1 band uchar images -- disabling squash" msgstr "" #: ../libvips/foreign/vips2tiff.c:827 msgid "can't have 1-bit JPEG -- disabling JPEG" msgstr "" #: ../libvips/foreign/vips2tiff.c:838 msgid "" "can only save non-complex greyscale images as miniswhite -- disabling " "miniswhite" msgstr "" #: ../libvips/foreign/vips2tiff.c:1099 msgid "TIFF write tile failed" msgstr "" #: ../libvips/foreign/vips2webp.c:87 ../libvips/foreign/vips2webp.c:105 #: ../libvips/foreign/vips2webp.c:149 msgid "unable to encode" msgstr "" #: ../libvips/foreign/fits.c:181 ../libvips/foreign/matlab.c:111 #: ../libvips/foreign/webp2vips.c:201 ../libvips/foreign/webp2vips.c:256 #: ../libvips/iofuncs/vips.c:163 ../libvips/mosaicing/global_balance.c:1192 #: ../libvips/mosaicing/global_balance.c:1530 #, c-format msgid "unable to open \"%s\"" msgstr "" #: ../libvips/foreign/fits.c:244 msgid "dimensions above 3 must be size 1" msgstr "" #: ../libvips/foreign/fits.c:260 #, c-format msgid "bad number of axis %d" msgstr "" #: ../libvips/foreign/fits.c:276 #, c-format msgid "unsupported bitpix %d\n" msgstr "" #: ../libvips/foreign/fits.c:580 ../libvips/iofuncs/vips.c:191 #, c-format msgid "unable to write to \"%s\"" msgstr "" #: ../libvips/foreign/fits.c:641 #, c-format msgid "unsupported BandFmt %d\n" msgstr "" #: ../libvips/foreign/matlab.c:119 #, c-format msgid "no matrix variables in \"%s\"" msgstr "" #: ../libvips/foreign/matlab.c:202 #, c-format msgid "unsupported rank %d\n" msgstr "" #: ../libvips/foreign/matlab.c:210 #, c-format msgid "unsupported class type %d\n" msgstr "" #: ../libvips/foreign/matlab.c:259 msgid "Mat_VarReadDataAll failed" msgstr "" #: ../libvips/foreign/csvload.c:124 msgid "load csv from file" msgstr "" #: ../libvips/foreign/csvload.c:142 msgid "Skip" msgstr "" #: ../libvips/foreign/csvload.c:143 msgid "Skip this many lines at the start of the file" msgstr "" #: ../libvips/foreign/csvload.c:149 msgid "Lines" msgstr "" #: ../libvips/foreign/csvload.c:150 msgid "Read this many lines from the file" msgstr "" #: ../libvips/foreign/csvload.c:156 msgid "Whitespace" msgstr "" #: ../libvips/foreign/csvload.c:157 msgid "Set of whitespace characters" msgstr "" #: ../libvips/foreign/csvload.c:164 msgid "Set of separator characters" msgstr "" #: ../libvips/foreign/jpegload.c:113 #, c-format msgid "bad shrink factor %d" msgstr "" #: ../libvips/foreign/jpegload.c:135 msgid "load jpeg" msgstr "" #: ../libvips/foreign/jpegload.c:141 msgid "Shrink" msgstr "" #: ../libvips/foreign/jpegload.c:142 msgid "Shrink factor on load" msgstr "" #: ../libvips/foreign/jpegload.c:148 msgid "Fail" msgstr "" #: ../libvips/foreign/jpegload.c:149 msgid "Fail on first warning" msgstr "" #: ../libvips/foreign/jpegload.c:155 msgid "Autorotate" msgstr "" #: ../libvips/foreign/jpegload.c:156 msgid "Rotate image using exif orientation" msgstr "" #: ../libvips/foreign/jpegload.c:239 msgid "load jpeg from file" msgstr "" #: ../libvips/foreign/jpegload.c:322 msgid "load jpeg from buffer" msgstr "" #: ../libvips/foreign/jpegload.c:330 ../libvips/foreign/magickload.c:278 #: ../libvips/foreign/webpload.c:246 ../libvips/foreign/pngload.c:209 #: ../libvips/foreign/tiffload.c:267 msgid "Buffer to load from" msgstr "" #: ../libvips/foreign/magickload.c:96 msgid "load with ImageMagick" msgstr "" #: ../libvips/foreign/magickload.c:108 msgid "all_frames" msgstr "" #: ../libvips/foreign/magickload.c:109 msgid "Read all frames from an image" msgstr "" #: ../libvips/foreign/magickload.c:115 msgid "Density" msgstr "" #: ../libvips/foreign/magickload.c:116 msgid "Canvas resolution for rendering vector formats like SVG" msgstr "" #: ../libvips/foreign/magickload.c:189 msgid "load file with ImageMagick" msgstr "" #: ../libvips/foreign/magickload.c:270 msgid "load buffer with ImageMagick" msgstr "" #: ../libvips/foreign/webpload.c:89 msgid "load webp" msgstr "" #: ../libvips/foreign/webpload.c:165 msgid "load webp from file" msgstr "" #: ../libvips/foreign/webpload.c:238 msgid "load webp from buffer" msgstr "" #: ../libvips/foreign/matload.c:121 msgid "load mat from file" msgstr "" #: ../libvips/foreign/tiff2vips.c:324 ../libvips/foreign/tiff2vips.c:342 #, c-format msgid "required field %d missing" msgstr "" #: ../libvips/foreign/tiff2vips.c:356 #, c-format msgid "not %d bands" msgstr "" #: ../libvips/foreign/tiff2vips.c:370 #, c-format msgid "not at least %d samples per pixel" msgstr "" #: ../libvips/foreign/tiff2vips.c:383 #, c-format msgid "not photometric interpretation %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:396 #, c-format msgid "not %d bits per sample" msgstr "" #: ../libvips/foreign/tiff2vips.c:412 #, c-format msgid "%d bits per sample palette image not supported" msgstr "" #: ../libvips/foreign/tiff2vips.c:466 msgid "unsupported tiff image type\n" msgstr "" #: ../libvips/foreign/tiff2vips.c:858 msgid "bad colormap" msgstr "bad colourmap" #: ../libvips/foreign/tiff2vips.c:879 msgid "assuming 8-bit palette" msgstr "" #: ../libvips/foreign/tiff2vips.c:1018 msgid "unknown resolution unit" msgstr "" #: ../libvips/foreign/tiff2vips.c:1023 #, c-format msgid "" "no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per " "mm" msgstr "" #: ../libvips/foreign/tiff2vips.c:1128 msgid "width/height out of range" msgstr "" #: ../libvips/foreign/tiff2vips.c:1137 msgid "samples out of range" msgstr "" #: ../libvips/foreign/tiff2vips.c:1365 msgid "tiled separate planes not supported" msgstr "" #: ../libvips/foreign/tiff2vips.c:1396 ../libvips/foreign/tiff2vips.c:1633 msgid "unsupported tiff image type" msgstr "" #: ../libvips/foreign/tiff2vips.c:1436 msgid "read error" msgstr "" #: ../libvips/foreign/tiff2vips.c:1727 #, c-format msgid "bad page number %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:1759 ../libvips/foreign/tiff2vips.c:1861 #, c-format msgid "TIFF does not contain page %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:1854 msgid "unable to open memory buffer for input" msgstr "" #: ../libvips/foreign/openexr2vips.c:116 #, c-format msgid "EXR error: %s" msgstr "" #: ../libvips/foreign/foreign.c:360 msgid "load and save image files" msgstr "" #: ../libvips/foreign/foreign.c:509 ../libvips/mosaicing/im_remosaic.c:87 #, c-format msgid "file \"%s\" not found" msgstr "" #: ../libvips/foreign/foreign.c:518 ../libvips/foreign/foreign.c:1485 #: ../libvips/foreign/foreign.c:1560 #, c-format msgid "\"%s\" is not a known file format" msgstr "" #: ../libvips/foreign/foreign.c:586 msgid "buffer is not in a known format" msgstr "" #: ../libvips/foreign/foreign.c:754 msgid "images do not match" msgstr "" #: ../libvips/foreign/foreign.c:847 msgid "" "VIPS_FOREIGN_PARTIAL and VIPS_FOREIGN_SEQUENTIAL both set -- using SEQUENTIAL" msgstr "" #: ../libvips/foreign/foreign.c:867 msgid "ignoring deprecated \"sequential\" mode" msgstr "" #: ../libvips/foreign/foreign.c:869 msgid "please use \"access\" instead" msgstr "" #: ../libvips/foreign/foreign.c:947 msgid "file loaders" msgstr "" #: ../libvips/foreign/foreign.c:958 msgid "Flags" msgstr "" #: ../libvips/foreign/foreign.c:959 msgid "Flags for this file" msgstr "" #: ../libvips/foreign/foreign.c:965 msgid "Disc" msgstr "" #: ../libvips/foreign/foreign.c:966 msgid "Open to disc" msgstr "" #: ../libvips/foreign/foreign.c:973 msgid "Required access pattern for this file" msgstr "" #: ../libvips/foreign/foreign.c:979 msgid "Sequential" msgstr "" #: ../libvips/foreign/foreign.c:980 msgid "Sequential read only" msgstr "" #: ../libvips/foreign/foreign.c:1396 msgid "file savers" msgstr "" #: ../libvips/foreign/foreign.c:1420 msgid "Image to save" msgstr "" #: ../libvips/foreign/foreign.c:1425 msgid "Strip" msgstr "" #: ../libvips/foreign/foreign.c:1426 msgid "Strip all metadata from image" msgstr "" #: ../libvips/foreign/webp2vips.c:239 ../libvips/foreign/magick2vips.c:664 msgid "unable to read pixels" msgstr "" #: ../libvips/foreign/webp2vips.c:275 ../libvips/foreign/webp2vips.c:294 msgid "unable to open buffer" msgstr "" #: ../libvips/foreign/jpegsave.c:134 msgid "save jpeg" msgstr "" #: ../libvips/foreign/jpegsave.c:149 ../libvips/foreign/pngsave.c:122 msgid "Profile" msgstr "" #: ../libvips/foreign/jpegsave.c:150 ../libvips/foreign/tiffsave.c:190 #: ../libvips/foreign/pngsave.c:123 msgid "ICC profile to embed" msgstr "" #: ../libvips/foreign/jpegsave.c:156 msgid "Optimize_coding" msgstr "" #: ../libvips/foreign/jpegsave.c:157 msgid "Compute optimal Huffman coding tables" msgstr "" #: ../libvips/foreign/jpegsave.c:163 ../libvips/foreign/pngsave.c:115 msgid "Interlace" msgstr "" #: ../libvips/foreign/jpegsave.c:164 msgid "Generate an interlaced (progressive) jpeg" msgstr "" #: ../libvips/foreign/jpegsave.c:170 msgid "No subsample" msgstr "" #: ../libvips/foreign/jpegsave.c:171 msgid "Disable chroma subsample" msgstr "" #: ../libvips/foreign/jpegsave.c:177 msgid "Trellis quantisation" msgstr "" #: ../libvips/foreign/jpegsave.c:178 msgid "Apply trellis quantisation to each 8x8 block" msgstr "" #: ../libvips/foreign/jpegsave.c:184 msgid "Overshoot de-ringing" msgstr "" #: ../libvips/foreign/jpegsave.c:185 msgid "Apply overshooting to samples with extreme values" msgstr "" #: ../libvips/foreign/jpegsave.c:191 msgid "Optimize scans" msgstr "" #: ../libvips/foreign/jpegsave.c:192 msgid "Split the spectrum of DCT coefficients into separate scans" msgstr "" #: ../libvips/foreign/jpegsave.c:249 msgid "save image to jpeg file" msgstr "" #: ../libvips/foreign/jpegsave.c:318 msgid "save image to jpeg buffer" msgstr "" #: ../libvips/foreign/jpegsave.c:383 msgid "save image to jpeg mime" msgstr "" #: ../libvips/foreign/dzsave.c:189 ../libvips/foreign/dzsave.c:195 msgid "unable to close stream" msgstr "" #: ../libvips/foreign/dzsave.c:733 ../libvips/iofuncs/vips.c:700 #, c-format msgid "unable to set property \"%s\" to value \"%s\"." msgstr "" #: ../libvips/foreign/dzsave.c:751 #, c-format msgid "unable to set create node \"%s\"" msgstr "" #: ../libvips/foreign/dzsave.c:830 ../libvips/foreign/dzsave.c:835 #: ../libvips/foreign/dzsave.c:855 ../libvips/iofuncs/vips.c:837 #: ../libvips/iofuncs/vips.c:844 msgid "xml save error" msgstr "" #: ../libvips/foreign/dzsave.c:1158 msgid "output file too large" msgstr "" #: ../libvips/foreign/dzsave.c:1481 msgid "overlap must be less than tile width and height" msgstr "" #: ../libvips/foreign/dzsave.c:1638 ../libvips/iofuncs/util.c:1450 #, c-format msgid "unable to make temporary file %s" msgstr "" #: ../libvips/foreign/dzsave.c:1817 msgid "save image to deep zoom format" msgstr "" #: ../libvips/foreign/dzsave.c:1834 msgid "Layout" msgstr "" #: ../libvips/foreign/dzsave.c:1835 msgid "Directory layout" msgstr "" #: ../libvips/foreign/dzsave.c:1842 msgid "suffix" msgstr "" #: ../libvips/foreign/dzsave.c:1843 msgid "Filename suffix for tiles" msgstr "" #: ../libvips/foreign/dzsave.c:1849 msgid "Overlap" msgstr "" #: ../libvips/foreign/dzsave.c:1850 msgid "Tile overlap in pixels" msgstr "" #: ../libvips/foreign/dzsave.c:1856 msgid "Tile size" msgstr "" #: ../libvips/foreign/dzsave.c:1857 msgid "Tile size in pixels" msgstr "" #: ../libvips/foreign/dzsave.c:1871 msgid "Pyramid depth" msgstr "" #: ../libvips/foreign/dzsave.c:1878 msgid "Center" msgstr "" #: ../libvips/foreign/dzsave.c:1879 msgid "Center image in tile" msgstr "" #: ../libvips/foreign/dzsave.c:1886 msgid "Rotate image during save" msgstr "" #: ../libvips/foreign/dzsave.c:1892 msgid "Container" msgstr "" #: ../libvips/foreign/dzsave.c:1893 msgid "Pyramid container type" msgstr "" #: ../libvips/foreign/dzsave.c:1900 msgid "Properties" msgstr "" #: ../libvips/foreign/dzsave.c:1901 msgid "Write a properties file to the output directory" msgstr "" #: ../libvips/foreign/dzsave.c:1910 ../libvips/foreign/dzsave.c:1917 msgid "Base name" msgstr "" #: ../libvips/foreign/dzsave.c:1911 ../libvips/foreign/dzsave.c:1918 msgid "Base name to save to" msgstr "" #: ../libvips/foreign/openslide2vips.c:187 msgid "invalid associated image name" msgstr "" #: ../libvips/foreign/openslide2vips.c:236 msgid "specify only one of level or associated image" msgstr "" #: ../libvips/foreign/openslide2vips.c:258 msgid "unsupported slide format" msgstr "" #: ../libvips/foreign/openslide2vips.c:265 #, c-format msgid "opening slide: %s" msgstr "" #: ../libvips/foreign/openslide2vips.c:272 msgid "invalid slide level" msgstr "" #: ../libvips/foreign/openslide2vips.c:354 #, c-format msgid "getting dimensions: %s" msgstr "" #: ../libvips/foreign/openslide2vips.c:361 msgid "image dimensions overflow int" msgstr "" #: ../libvips/foreign/openslide2vips.c:479 #, c-format msgid "reading region: %s" msgstr "" #: ../libvips/foreign/openslide2vips.c:558 #, c-format msgid "reading associated image: %s" msgstr "" #: ../libvips/foreign/analyze2vips.c:309 msgid "header file size incorrect" msgstr "" #: ../libvips/foreign/analyze2vips.c:354 msgid "header size incorrect" msgstr "" #: ../libvips/foreign/analyze2vips.c:372 #, c-format msgid "%d-dimensional images not supported" msgstr "" #: ../libvips/foreign/analyze2vips.c:425 #, c-format msgid "datatype %d not supported" msgstr "" #: ../libvips/foreign/ppmsave.c:112 msgid "save image to ppm file" msgstr "" #: ../libvips/foreign/ppmsave.c:128 msgid "ASCII" msgstr "" #: ../libvips/foreign/ppmsave.c:129 msgid "save as ascii" msgstr "" #: ../libvips/foreign/ppmsave.c:135 ../libvips/foreign/tiffsave.c:224 msgid "Squash" msgstr "" #: ../libvips/foreign/ppmsave.c:136 msgid "save as one bit" msgstr "" #: ../libvips/foreign/tiffsave.c:150 msgid "save image to tiff file" msgstr "" #: ../libvips/foreign/tiffsave.c:166 ../libvips/foreign/pngsave.c:108 msgid "Compression" msgstr "" #: ../libvips/foreign/tiffsave.c:167 msgid "Compression for this file" msgstr "" #: ../libvips/foreign/tiffsave.c:181 msgid "predictor" msgstr "" #: ../libvips/foreign/tiffsave.c:182 msgid "Compression prediction" msgstr "" #: ../libvips/foreign/tiffsave.c:189 msgid "profile" msgstr "" #: ../libvips/foreign/tiffsave.c:196 msgid "Tile" msgstr "" #: ../libvips/foreign/tiffsave.c:197 msgid "Write a tiled tiff" msgstr "" #: ../libvips/foreign/tiffsave.c:217 msgid "Pyramid" msgstr "" #: ../libvips/foreign/tiffsave.c:218 msgid "Write a pyramidal tiff" msgstr "" #: ../libvips/foreign/tiffsave.c:225 msgid "Squash images down to 1 bit" msgstr "" #: ../libvips/foreign/tiffsave.c:231 msgid "Miniswhite" msgstr "" #: ../libvips/foreign/tiffsave.c:232 msgid "Use 0 for white in 1-bit images" msgstr "" #: ../libvips/foreign/tiffsave.c:238 ../libvips/foreign/tiffsave.c:239 msgid "Resolution unit" msgstr "" #: ../libvips/foreign/tiffsave.c:259 msgid "Bigtiff" msgstr "" #: ../libvips/foreign/tiffsave.c:260 msgid "Write a bigtiff image" msgstr "" #: ../libvips/foreign/tiffsave.c:266 msgid "RGB JPEG" msgstr "" #: ../libvips/foreign/tiffsave.c:267 msgid "Output RGB JPEG rather than YCbCr" msgstr "" #: ../libvips/foreign/matrixsave.c:112 msgid "save image to matrix file" msgstr "" #: ../libvips/foreign/matrixsave.c:192 msgid "print matrix" msgstr "" #: ../libvips/foreign/fitssave.c:129 msgid "save image to fits file" msgstr "" #: ../libvips/foreign/csv.c:194 #, c-format msgid "error parsing number, line %d, column %d" msgstr "" #: ../libvips/foreign/csv.c:249 msgid "end of file while skipping start" msgstr "" #: ../libvips/foreign/csv.c:258 ../libvips/iofuncs/util.c:944 #: ../libvips/iofuncs/util.c:950 msgid "unable to seek" msgstr "" #: ../libvips/foreign/csv.c:269 msgid "empty line" msgstr "" #: ../libvips/foreign/csv.c:309 #, c-format msgid "unexpected EOF, line %d col %d" msgstr "" #: ../libvips/foreign/csv.c:315 #, c-format msgid "unexpected EOL, line %d col %d" msgstr "" #: ../libvips/foreign/csv.c:536 msgid "no width / height" msgstr "" #: ../libvips/foreign/csv.c:541 msgid "width / height not int" msgstr "" #: ../libvips/foreign/csv.c:551 msgid "width / height out of range" msgstr "" #: ../libvips/foreign/csv.c:555 msgid "bad scale / offset" msgstr "" #: ../libvips/foreign/csv.c:559 msgid "extra chars in header" msgstr "" #: ../libvips/foreign/csv.c:564 msgid "zero scale" msgstr "" #: ../libvips/foreign/csv.c:612 msgid "line too short" msgstr "" #: ../libvips/foreign/csv.c:656 #, c-format msgid "line %d too short" msgstr "" #: ../libvips/foreign/pngload.c:128 msgid "load png from file" msgstr "" #: ../libvips/foreign/pngload.c:201 msgid "load png from buffer" msgstr "" #: ../libvips/foreign/fitsload.c:110 msgid "load a FITS image" msgstr "" #: ../libvips/foreign/vipsload.c:122 msgid "load vips from file" msgstr "" #: ../libvips/foreign/vipspng.c:303 msgid "unsupported color type" msgstr "unsupported colour type" #: ../libvips/foreign/vipspng.c:413 msgid "unable to read PNG header" msgstr "" #: ../libvips/foreign/vipspng.c:836 msgid "compress should be in [0,9]" msgstr "" #: ../libvips/foreign/vipspng.c:858 #, c-format msgid "can't save %d band image as png" msgstr "" #: ../libvips/foreign/vipspng.c:965 #, c-format msgid "unable to write \"%s\"" msgstr "" #: ../libvips/foreign/vipspng.c:1069 msgid "unable to write to buffer" msgstr "" #: ../libvips/foreign/tiffload.c:86 msgid "load tiff" msgstr "" #: ../libvips/foreign/tiffload.c:89 msgid "Page" msgstr "" #: ../libvips/foreign/tiffload.c:90 msgid "Load this page from the image" msgstr "" #: ../libvips/foreign/tiffload.c:180 msgid "load tiff from file" msgstr "" #: ../libvips/foreign/tiffload.c:259 msgid "load tiff from buffer" msgstr "" #: ../libvips/foreign/magick2vips.c:246 #, c-format msgid "unsupported image type %d" msgstr "" #: ../libvips/foreign/magick2vips.c:308 #, c-format msgid "unsupported bit depth %d" msgstr "" #: ../libvips/foreign/magick2vips.c:340 #, c-format msgid "unsupported colorspace %d" msgstr "unsupported colourspace %d" #: ../libvips/foreign/magick2vips.c:705 #, c-format msgid "" "unable to read file \"%s\"\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/magick2vips.c:744 #, c-format msgid "" "unable to ping file \"%s\"\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/magick2vips.c:755 ../libvips/foreign/magick2vips.c:842 msgid "bad image size" msgstr "" #: ../libvips/foreign/magick2vips.c:797 #, c-format msgid "" "unable to read buffer\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/magick2vips.c:831 #, c-format msgid "" "unable to ping blob\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/analyzeload.c:117 msgid "load an Analyze6 image" msgstr "" #: ../libvips/foreign/ppm.c:111 msgid "bad int" msgstr "" #: ../libvips/foreign/ppm.c:123 msgid "bad float" msgstr "" #: ../libvips/foreign/ppm.c:174 msgid "bad magic number" msgstr "" #: ../libvips/foreign/ppm.c:225 msgid "not whitespace before start of binary data" msgstr "" #: ../libvips/foreign/ppm.c:617 ../libvips/foreign/ppm.c:634 #: ../libvips/foreign/ppm.c:668 ../libvips/foreign/ppm.c:682 msgid "write error" msgstr "" #: ../libvips/foreign/ppm.c:799 msgid "float images must be binary -- disabling ascii" msgstr "" #: ../libvips/foreign/openslideload.c:168 msgid "load file with OpenSlide" msgstr "" #: ../libvips/foreign/openslideload.c:192 msgid "Level" msgstr "" #: ../libvips/foreign/openslideload.c:193 msgid "Load this level from the file" msgstr "" #: ../libvips/foreign/openslideload.c:199 msgid "Autocrop" msgstr "" #: ../libvips/foreign/openslideload.c:200 msgid "Crop to image bounds" msgstr "" #: ../libvips/foreign/openslideload.c:206 msgid "Associated" msgstr "" #: ../libvips/foreign/openslideload.c:207 msgid "Load this associated image" msgstr "" #: ../libvips/foreign/pngsave.c:100 msgid "save png" msgstr "" #: ../libvips/foreign/pngsave.c:109 msgid "Compression factor" msgstr "" #: ../libvips/foreign/pngsave.c:116 msgid "Interlace image" msgstr "" #: ../libvips/foreign/pngsave.c:129 msgid "Filter" msgstr "" #: ../libvips/foreign/pngsave.c:130 msgid "libpng row filter flag(s)" msgstr "" #: ../libvips/foreign/pngsave.c:184 msgid "save image to png file" msgstr "" #: ../libvips/foreign/pngsave.c:246 msgid "save image to png buffer" msgstr "" #: ../libvips/foreign/radload.c:120 msgid "load a Radiance image from a file" msgstr "" #: ../libvips/foreign/ppmload.c:117 msgid "load ppm from file" msgstr "" #: ../libvips/freqfilt/phasecor.c:108 msgid "calculate phase correlation" msgstr "" #: ../libvips/freqfilt/fwfft.c:137 ../libvips/freqfilt/fwfft.c:252 #: ../libvips/freqfilt/invfft.c:120 ../libvips/freqfilt/invfft.c:194 msgid "unable to create transform plan" msgstr "" #: ../libvips/freqfilt/fwfft.c:335 msgid "forward FFT" msgstr "" #: ../libvips/freqfilt/freqmult.c:127 msgid "frequency-domain filtering" msgstr "" #: ../libvips/freqfilt/freqmult.c:131 msgid "mask" msgstr "" #: ../libvips/freqfilt/freqmult.c:132 msgid "Input mask image" msgstr "" #: ../libvips/freqfilt/freqfilt.c:94 msgid "frequency-domain filter operations" msgstr "" #: ../libvips/freqfilt/invfft.c:252 msgid "inverse FFT" msgstr "" #: ../libvips/freqfilt/invfft.c:256 msgid "Real" msgstr "" #: ../libvips/freqfilt/invfft.c:257 msgid "Output only the real part of the transform" msgstr "" #: ../libvips/freqfilt/spectrum.c:101 msgid "make displayable power spectrum" msgstr "" #: ../libvips/histogram/hist_cum.c:148 msgid "form cumulative histogram" msgstr "" #: ../libvips/histogram/hist_norm.c:137 msgid "normalise histogram" msgstr "" #: ../libvips/histogram/hist_equal.c:104 msgid "histogram equalisation" msgstr "" #: ../libvips/histogram/hist_equal.c:121 msgid "Equalise with this band" msgstr "" #: ../libvips/histogram/maplut.c:691 msgid "map an image though a lut" msgstr "" #: ../libvips/histogram/maplut.c:709 msgid "LUT" msgstr "" #: ../libvips/histogram/maplut.c:710 msgid "Look-up table image" msgstr "" #: ../libvips/histogram/maplut.c:715 msgid "band" msgstr "" #: ../libvips/histogram/maplut.c:716 msgid "apply one-band lut to this band of in" msgstr "" #: ../libvips/histogram/hist_plot.c:338 msgid "plot histogram" msgstr "" #: ../libvips/histogram/stdif.c:236 ../libvips/histogram/hist_local.c:248 #: ../libvips/morphology/rank.c:352 msgid "window too large" msgstr "" #: ../libvips/histogram/stdif.c:240 msgid "too many bands" msgstr "" #: ../libvips/histogram/stdif.c:288 msgid "statistical difference" msgstr "" #: ../libvips/histogram/stdif.c:307 ../libvips/histogram/hist_local.c:313 #: ../libvips/morphology/rank.c:416 msgid "Window width in pixels" msgstr "" #: ../libvips/histogram/stdif.c:314 ../libvips/histogram/hist_local.c:320 #: ../libvips/morphology/rank.c:423 msgid "Window height in pixels" msgstr "" #: ../libvips/histogram/stdif.c:320 msgid "Mean weight" msgstr "" #: ../libvips/histogram/stdif.c:321 msgid "Weight of new mean" msgstr "" #: ../libvips/histogram/stdif.c:328 msgid "New mean" msgstr "" #: ../libvips/histogram/stdif.c:334 msgid "Deviation weight" msgstr "" #: ../libvips/histogram/stdif.c:335 msgid "Weight of new deviation" msgstr "" #: ../libvips/histogram/stdif.c:341 msgid "Deviation" msgstr "" #: ../libvips/histogram/stdif.c:342 msgid "New deviation" msgstr "" #: ../libvips/histogram/hist_local.c:296 msgid "local histogram equalisation" msgstr "" #: ../libvips/histogram/histogram.c:222 msgid "histogram operations" msgstr "" #: ../libvips/histogram/hist_match.c:154 msgid "match two histograms" msgstr "" #: ../libvips/histogram/hist_match.c:162 msgid "Input histogram" msgstr "" #: ../libvips/histogram/hist_match.c:167 ../libvips/mosaicing/merge.c:109 #: ../libvips/mosaicing/mosaic1.c:489 ../libvips/mosaicing/mosaic.c:180 #: ../libvips/mosaicing/match.c:204 msgid "Reference" msgstr "" #: ../libvips/histogram/hist_match.c:168 msgid "Reference histogram" msgstr "" #: ../libvips/histogram/hist_unary.c:85 msgid "hist_unary operations" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:113 msgid "test for monotonicity" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:118 msgid "Input histogram image" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:123 msgid "Monotonic" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:124 msgid "true if in is monotonic" msgstr "" #: ../libvips/histogram/percent.c:106 msgid "find threshold for percent of pixels" msgstr "" #: ../libvips/histogram/percent.c:116 msgid "Percent" msgstr "" #: ../libvips/histogram/percent.c:117 msgid "Percent of pixels" msgstr "" #: ../libvips/histogram/percent.c:123 msgid "Threshold" msgstr "" #: ../libvips/histogram/percent.c:124 msgid "Threshold above which lie percent of pixels" msgstr "" #: ../libvips/introspect.c:54 msgid "dump introspection data" msgstr "" #: ../libvips/introspect.c:71 msgid "- introspect" msgstr "" #: ../libvips/iofuncs/window.c:237 ../libvips/iofuncs/vips.c:905 #, c-format msgid "unable to read data for \"%s\", %s" msgstr "" #: ../libvips/iofuncs/window.c:238 ../libvips/iofuncs/vips.c:796 #: ../libvips/iofuncs/vips.c:906 msgid "file has been truncated" msgstr "" #: ../libvips/iofuncs/base64.c:169 msgid "too little data" msgstr "" #. We shouldn't really be used for large amounts of data. #. #: ../libvips/iofuncs/base64.c:175 ../libvips/iofuncs/base64.c:240 msgid "too much data" msgstr "" #: ../libvips/iofuncs/type.c:772 #, c-format msgid "unable to convert \"%s\" to int" msgstr "" #: ../libvips/iofuncs/type.c:964 #, c-format msgid "unable to convert \"%s\" to float" msgstr "" #: ../libvips/iofuncs/memory.c:236 msgid "vips_free: too many frees" msgstr "" #: ../libvips/iofuncs/memory.c:239 msgid "vips_free: too much free" msgstr "" #: ../libvips/iofuncs/memory.c:295 ../libvips/iofuncs/memory.c:298 #: ../libvips/iofuncs/image.c:2489 ../libvips/iofuncs/image.c:2492 #, c-format msgid "out of memory --- size == %dMB" msgstr "" #: ../libvips/iofuncs/vips.c:306 #, c-format msgid "\"%s\" is not a VIPS image" msgstr "" #: ../libvips/iofuncs/vips.c:394 msgid "unable to read history" msgstr "" #: ../libvips/iofuncs/vips.c:427 msgid "more than a 10 megabytes of XML? sufferin' succotash!" msgstr "" #: ../libvips/iofuncs/vips.c:475 msgid "incorrect namespace in XML" msgstr "" #: ../libvips/iofuncs/vips.c:599 msgid "error transforming from save format" msgstr "" #: ../libvips/iofuncs/vips.c:748 msgid "error transforming to save format" msgstr "" #: ../libvips/iofuncs/vips.c:892 #, c-format msgid "unable to read header for \"%s\"" msgstr "" #: ../libvips/iofuncs/vips.c:917 #, c-format msgid "error reading XML: %s" msgstr "" #: ../libvips/iofuncs/init.c:215 #, c-format msgid "unable to load \"%s\" -- %s" msgstr "" #: ../libvips/iofuncs/init.c:577 msgid "show informative messages" msgstr "" #: ../libvips/iofuncs/init.c:580 msgid "abort on first error or warning" msgstr "" #: ../libvips/iofuncs/init.c:583 msgid "evaluate with N concurrent threads" msgstr "" #: ../libvips/iofuncs/init.c:586 msgid "set tile width to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:589 msgid "set tile height to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:592 msgid "set thinstrip height to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:595 msgid "set fatstrip height to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:598 msgid "show progress feedback" msgstr "" #: ../libvips/iofuncs/init.c:601 msgid "leak-check on exit" msgstr "" #: ../libvips/iofuncs/init.c:604 msgid "profile and dump timing on exit" msgstr "" #: ../libvips/iofuncs/init.c:607 msgid "images larger than N are decompressed to disc" msgstr "" #: ../libvips/iofuncs/init.c:610 msgid "disable vectorised versions of operations" msgstr "" #: ../libvips/iofuncs/init.c:613 msgid "cache at most N operations" msgstr "" #: ../libvips/iofuncs/init.c:616 msgid "cache at most N bytes in memory" msgstr "" #: ../libvips/iofuncs/init.c:619 msgid "allow at most N open files" msgstr "" #: ../libvips/iofuncs/init.c:622 msgid "trace operation cache" msgstr "" #: ../libvips/iofuncs/init.c:625 msgid "dump operation cache on exit" msgstr "" #: ../libvips/iofuncs/init.c:628 msgid "print libvips version" msgstr "" #: ../libvips/iofuncs/init.c:1001 msgid "flag not 0, 1, 2" msgstr "" #: ../libvips/iofuncs/sinkmemory.c:109 msgid "per-thread state for sinkmemory" msgstr "" #. File length unit. #. #: ../libvips/iofuncs/buf.c:521 msgid "bytes" msgstr "" #. Kilo byte unit. #. #: ../libvips/iofuncs/buf.c:525 msgid "KB" msgstr "" #. Mega byte unit. #. #: ../libvips/iofuncs/buf.c:529 msgid "MB" msgstr "" #. Giga byte unit. #. #: ../libvips/iofuncs/buf.c:533 msgid "GB" msgstr "" #. Tera byte unit. #. #: ../libvips/iofuncs/buf.c:537 msgid "TB" msgstr "" #: ../libvips/iofuncs/system.c:165 msgid "unable to substitute input filename" msgstr "" #: ../libvips/iofuncs/system.c:172 msgid "unable to substitute output filename" msgstr "" #: ../libvips/iofuncs/system.c:207 #, c-format msgid "command \"%s\" failed" msgstr "" #: ../libvips/iofuncs/system.c:216 #, c-format msgid "stderr output: %s" msgstr "" #: ../libvips/iofuncs/system.c:251 msgid "run an external command" msgstr "" #: ../libvips/iofuncs/system.c:272 msgid "Command" msgstr "" #: ../libvips/iofuncs/system.c:273 msgid "Command to run" msgstr "" #: ../libvips/iofuncs/system.c:279 msgid "Input format" msgstr "" #: ../libvips/iofuncs/system.c:280 msgid "Format for input filename" msgstr "" #: ../libvips/iofuncs/system.c:286 msgid "Output format" msgstr "" #: ../libvips/iofuncs/system.c:287 msgid "Format for output filename" msgstr "" #: ../libvips/iofuncs/system.c:294 msgid "Command log" msgstr "" #: ../libvips/iofuncs/threadpool.c:205 msgid "unable to create thread" msgstr "" #: ../libvips/iofuncs/threadpool.c:339 #, c-format msgid "threads clipped to %d" msgstr "" #: ../libvips/iofuncs/threadpool.c:385 msgid "per-thread state for vipsthreadpool" msgstr "" #: ../libvips/iofuncs/operation.c:218 #, c-format msgid "%d pixels calculated" msgstr "" #: ../libvips/iofuncs/operation.c:303 ../libvips/iofuncs/operation.c:324 #: ../libvips/iofuncs/operation.c:332 ../libvips/iofuncs/operation.c:344 msgid "default" msgstr "" #: ../libvips/iofuncs/operation.c:307 msgid "allowed" msgstr "" #: ../libvips/iofuncs/operation.c:335 ../libvips/iofuncs/operation.c:347 msgid "min" msgstr "" #: ../libvips/iofuncs/operation.c:337 ../libvips/iofuncs/operation.c:349 msgid "max" msgstr "" #: ../libvips/iofuncs/operation.c:565 msgid "operations" msgstr "" #: ../libvips/iofuncs/operation.c:640 ../libvips/iofuncs/object.c:1523 #: ../libvips/resample/interpolate.c:609 #, c-format msgid "class \"%s\" not found" msgstr "" #: ../libvips/iofuncs/operation.c:646 #, c-format msgid "\"%s\" is not an instantiable class" msgstr "" #: ../libvips/iofuncs/operation.c:1106 #, c-format msgid "unknown argument '%s'" msgstr "" #: ../libvips/iofuncs/operation.c:1230 msgid "too few arguments" msgstr "" #: ../libvips/iofuncs/operation.c:1351 msgid "too many arguments" msgstr "" #: ../libvips/iofuncs/header.c:944 #, c-format msgid "field \"%s\" not found" msgstr "" #: ../libvips/iofuncs/header.c:1112 #, c-format msgid "field \"%s\" is of type %s, not %s" msgstr "" #: ../libvips/iofuncs/error.c:270 msgid "windows error" msgstr "" #: ../libvips/iofuncs/error.c:279 msgid "unix error" msgstr "" #: ../libvips/iofuncs/error.c:408 ../libvips/iofuncs/error.c:410 #: ../libvips/iofuncs/error.c:458 ../libvips/iofuncs/error.c:460 #, c-format msgid "%s: " msgstr "" #: ../libvips/iofuncs/error.c:408 msgid "info" msgstr "" #: ../libvips/iofuncs/error.c:458 msgid "vips warning" msgstr "" #: ../libvips/iofuncs/error.c:549 msgid "image must be uncoded" msgstr "" #: ../libvips/iofuncs/error.c:577 msgid "image coding must be 'none' or 'labq'" msgstr "" #: ../libvips/iofuncs/error.c:605 msgid "unknown image coding" msgstr "" #: ../libvips/iofuncs/error.c:630 #, c-format msgid "coding '%s' only" msgstr "" #: ../libvips/iofuncs/error.c:655 msgid "image must one band" msgstr "" #: ../libvips/iofuncs/error.c:680 #, c-format msgid "image must have %d bands" msgstr "" #: ../libvips/iofuncs/error.c:705 msgid "image must have one or three bands" msgstr "" #: ../libvips/iofuncs/error.c:731 #, c-format msgid "image must have at least %d bands" msgstr "" #: ../libvips/iofuncs/error.c:759 msgid "images must have the same number of bands, or one must be single-band" msgstr "" #: ../libvips/iofuncs/error.c:786 #, c-format msgid "image must have 1 or %d bands" msgstr "" #: ../libvips/iofuncs/error.c:810 msgid "image must be non-complex" msgstr "" #: ../libvips/iofuncs/error.c:834 msgid "image must be complex" msgstr "" #: ../libvips/iofuncs/error.c:860 #, c-format msgid "image must be %s" msgstr "" #: ../libvips/iofuncs/error.c:885 msgid "image must be integer" msgstr "" #: ../libvips/iofuncs/error.c:910 msgid "image must be unsigned integer" msgstr "" #: ../libvips/iofuncs/error.c:938 msgid "image must be 8- or 16-bit integer, signed or unsigned" msgstr "" #: ../libvips/iofuncs/error.c:965 msgid "image must be 8- or 16-bit unsigned integer" msgstr "" #: ../libvips/iofuncs/error.c:991 msgid "image must be 8- or 16-bit unsigned integer, or float" msgstr "" #: ../libvips/iofuncs/error.c:1019 msgid "image must be unsigned int or float" msgstr "" #: ../libvips/iofuncs/error.c:1044 msgid "images must match in size" msgstr "" #: ../libvips/iofuncs/error.c:1070 msgid "images must be odd and square" msgstr "" #: ../libvips/iofuncs/error.c:1096 msgid "images must have the same number of bands" msgstr "" #: ../libvips/iofuncs/error.c:1150 msgid "images must have the same band format" msgstr "" #: ../libvips/iofuncs/error.c:1176 msgid "images must have the same coding" msgstr "" #: ../libvips/iofuncs/error.c:1199 #, c-format msgid "vector must have %d elements" msgstr "" #: ../libvips/iofuncs/error.c:1224 #, c-format msgid "vector must have 1 or %d elements" msgstr "" #: ../libvips/iofuncs/error.c:1249 msgid "histograms must have width or height 1" msgstr "" #: ../libvips/iofuncs/error.c:1254 msgid "histograms must have not have more than 65536 elements" msgstr "" #: ../libvips/iofuncs/error.c:1291 msgid "matrix image too large" msgstr "" #: ../libvips/iofuncs/error.c:1296 msgid "matrix image must have one band" msgstr "" #: ../libvips/iofuncs/error.c:1330 msgid "separable matrix images must have width or height 1" msgstr "" #: ../libvips/iofuncs/error.c:1357 msgid "precision must be int or float" msgstr "" #: ../libvips/iofuncs/sinkdisc.c:122 msgid "per-thread state for sinkdisc" msgstr "" #: ../libvips/iofuncs/sinkdisc.c:261 ../libvips/iofuncs/util.c:526 msgid "write failed" msgstr "" #: ../libvips/iofuncs/sink.c:106 #, c-format msgid "stop function failed for image \"%s\"" msgstr "" #: ../libvips/iofuncs/sink.c:143 #, c-format msgid "start function failed for image \"%s\"" msgstr "" #: ../libvips/iofuncs/sink.c:176 msgid "per-thread state for sink" msgstr "" #: ../libvips/iofuncs/generate.c:410 msgid "too many images" msgstr "" #: ../libvips/iofuncs/generate.c:675 msgid "demand hint not set" msgstr "" #: ../libvips/iofuncs/generate.c:694 ../libvips/iofuncs/generate.c:719 msgid "generate() called twice" msgstr "" #: ../libvips/iofuncs/generate.c:756 ../libvips/iofuncs/image.c:2793 #, c-format msgid "unable to output to a %s image" msgstr "" #: ../libvips/iofuncs/region.c:235 #, c-format msgid "start function failed for image %s" msgstr "" #: ../libvips/iofuncs/region.c:583 ../libvips/iofuncs/region.c:655 #: ../libvips/iofuncs/region.c:803 ../libvips/iofuncs/region.c:1506 msgid "valid clipped to nothing" msgstr "" #: ../libvips/iofuncs/region.c:700 msgid "bad image type" msgstr "" #: ../libvips/iofuncs/region.c:745 msgid "no pixel data on attached image" msgstr "" #: ../libvips/iofuncs/region.c:751 msgid "images do not match in pixel size" msgstr "" #: ../libvips/iofuncs/region.c:784 ../libvips/iofuncs/region.c:1488 msgid "dest too small" msgstr "" #: ../libvips/iofuncs/region.c:873 msgid "bad position" msgstr "" #: ../libvips/iofuncs/region.c:1281 msgid "stop requested" msgstr "" #: ../libvips/iofuncs/region.c:1366 ../libvips/iofuncs/region.c:1559 #, c-format msgid "unable to input from a %s image" msgstr "" #: ../libvips/iofuncs/region.c:1390 msgid "incomplete header" msgstr "" #: ../libvips/iofuncs/region.c:1462 msgid "inappropriate region type" msgstr "" #: ../libvips/iofuncs/mapfile.c:131 ../libvips/iofuncs/mapfile.c:298 msgid "unable to CreateFileMapping" msgstr "" #: ../libvips/iofuncs/mapfile.c:139 ../libvips/iofuncs/mapfile.c:310 msgid "unable to MapViewOfFile" msgstr "" #: ../libvips/iofuncs/mapfile.c:179 msgid "unable to mmap" msgstr "" #: ../libvips/iofuncs/mapfile.c:180 #, c-format msgid "" "map failed (%s), running very low on system resources, expect a crash soon" msgstr "" #: ../libvips/iofuncs/mapfile.c:197 ../libvips/iofuncs/mapfile.c:304 msgid "unable to UnmapViewOfFile" msgstr "" #: ../libvips/iofuncs/mapfile.c:203 msgid "unable to munmap file" msgstr "" #: ../libvips/iofuncs/mapfile.c:225 msgid "file is less than 64 bytes" msgstr "" #: ../libvips/iofuncs/mapfile.c:230 ../libvips/iofuncs/mapfile.c:264 msgid "unable to get file status" msgstr "" #: ../libvips/iofuncs/mapfile.c:236 msgid "not a regular file" msgstr "" #: ../libvips/iofuncs/mapfile.c:270 msgid "unable to read data" msgstr "" #: ../libvips/iofuncs/mapfile.c:330 #, c-format msgid "unable to mmap: \"%s\" - %s" msgstr "" #: ../libvips/iofuncs/mapfile.c:340 #, c-format msgid "unable to mmap \"%s\" to same address" msgstr "" #: ../libvips/iofuncs/image.c:511 msgid "unable to close fd" msgstr "" #: ../libvips/iofuncs/image.c:592 #, c-format msgid "%dx%d %s, %d band, %s" msgid_plural "%dx%d %s, %d bands, %s" msgstr[0] "" msgstr[1] "" #: ../libvips/iofuncs/image.c:626 #, c-format msgid " %s, %d band, %s" msgid_plural " %s, %d bands, %s" msgstr[0] "" msgstr[1] "" #: ../libvips/iofuncs/image.c:762 #, c-format msgid "%s %s: %d x %d pixels, %d threads, %d x %d tiles, %d lines in buffer" msgstr "" #: ../libvips/iofuncs/image.c:780 #, c-format msgid "%s %s: %d%% complete" msgstr "" #. Spaces at end help to erase the %complete message we overwrite. #. #: ../libvips/iofuncs/image.c:804 #, c-format msgid "%s %s: done in %.3gs \n" msgstr "" #: ../libvips/iofuncs/image.c:992 #, c-format msgid "unable to open \"%s\", file too short" msgstr "" #: ../libvips/iofuncs/image.c:1002 #, c-format msgid "%s is longer than expected" msgstr "" #: ../libvips/iofuncs/image.c:1020 #, c-format msgid "bad mode \"%s\"" msgstr "" #: ../libvips/iofuncs/image.c:1096 msgid "image class" msgstr "" #: ../libvips/iofuncs/image.c:1194 msgid "Image filename" msgstr "" #: ../libvips/iofuncs/image.c:1201 msgid "Open mode" msgstr "" #: ../libvips/iofuncs/image.c:1207 msgid "Kill" msgstr "" #: ../libvips/iofuncs/image.c:1208 msgid "Block evaluation on this image" msgstr "" #: ../libvips/iofuncs/image.c:1214 msgid "Demand style" msgstr "" #: ../libvips/iofuncs/image.c:1215 msgid "Preferred demand style for this image" msgstr "" #: ../libvips/iofuncs/image.c:1228 msgid "Foreign buffer" msgstr "" #: ../libvips/iofuncs/image.c:1229 msgid "Pointer to foreign pixels" msgstr "" #: ../libvips/iofuncs/image.c:1629 #, c-format msgid "killed for image \"%s\"" msgstr "" #: ../libvips/iofuncs/image.c:2023 #, c-format msgid "buffer too small --- should be %zd bytes, you passed %zd" msgstr "" #: ../libvips/iofuncs/image.c:2190 #, c-format msgid "bad array length --- should be %d, you passed %d" msgstr "" #: ../libvips/iofuncs/image.c:2735 msgid "bad image descriptor" msgstr "" #: ../libvips/iofuncs/image.c:2857 #, c-format msgid "auto-rewind for %s failed" msgstr "" #: ../libvips/iofuncs/image.c:2924 ../libvips/iofuncs/image.c:3054 #: ../libvips/iofuncs/image.c:3232 msgid "image not readable" msgstr "" #: ../libvips/iofuncs/image.c:2968 ../libvips/iofuncs/image.c:3192 #: ../libvips/iofuncs/image.c:3209 msgid "no image data" msgstr "" #: ../libvips/iofuncs/image.c:3075 ../libvips/iofuncs/image.c:3262 #: ../libvips/iofuncs/image.c:3271 msgid "image already written" msgstr "" #: ../libvips/iofuncs/image.c:3099 ../libvips/iofuncs/image.c:3283 msgid "image not writeable" msgstr "" #: ../libvips/iofuncs/image.c:3151 msgid "bad file type" msgstr "" #: ../libvips/iofuncs/util.c:509 msgid "unable to get file stats" msgstr "" #: ../libvips/iofuncs/util.c:591 #, c-format msgid "unable to open file \"%s\" for reading" msgstr "" #: ../libvips/iofuncs/util.c:613 #, c-format msgid "unable to open file \"%s\" for writing" msgstr "" #: ../libvips/iofuncs/util.c:635 #, c-format msgid "\"%s\" too long" msgstr "" #: ../libvips/iofuncs/util.c:655 msgid "out of memory" msgstr "" #: ../libvips/iofuncs/util.c:682 #, c-format msgid "error reading from file \"%s\"" msgstr "" #: ../libvips/iofuncs/util.c:729 #, c-format msgid "write error (%zd out of %zd blocks written)" msgstr "" #: ../libvips/iofuncs/util.c:978 ../libvips/iofuncs/util.c:985 msgid "unable to truncate" msgstr "" #: ../libvips/iofuncs/util.c:1057 #, c-format msgid "unable to create directory \"%s\", %s" msgstr "" #: ../libvips/iofuncs/util.c:1081 #, c-format msgid "unable to remove directory \"%s\", %s" msgstr "" #: ../libvips/iofuncs/util.c:1098 #, c-format msgid "unable to rename file \"%s\" as \"%s\", %s" msgstr "" #: ../libvips/iofuncs/util.c:1243 msgid "unexpected end of string" msgstr "" #: ../libvips/iofuncs/util.c:1261 #, c-format msgid "expected %s, saw %s" msgstr "" #: ../libvips/iofuncs/util.c:1575 msgid "no such enum type" msgstr "" #: ../libvips/iofuncs/util.c:1593 #, c-format msgid "enum '%s' has no member '%s', should be one of: %s" msgstr "" #: ../libvips/iofuncs/util.c:1611 msgid "no such flag type" msgstr "" #: ../libvips/iofuncs/util.c:1627 #, c-format msgid "flags '%s' has no member '%s', should be one of: %s" msgstr "" #: ../libvips/iofuncs/sinkscreen.c:184 msgid "per-thread state for render" msgstr "" #: ../libvips/iofuncs/sinkscreen.c:1107 msgid "bad parameters" msgstr "" #: ../libvips/iofuncs/object.c:316 #, c-format msgid "parameter %s not set" msgstr "" #: ../libvips/iofuncs/object.c:751 #, c-format msgid "no property named `%s'" msgstr "" #: ../libvips/iofuncs/object.c:759 #, c-format msgid "no vips argument named `%s'" msgstr "" #: ../libvips/iofuncs/object.c:766 #, c-format msgid "argument `%s' has no instance" msgstr "" #: ../libvips/iofuncs/object.c:1573 msgid "base class" msgstr "" #: ../libvips/iofuncs/object.c:1587 msgid "Nickname" msgstr "" #: ../libvips/iofuncs/object.c:1588 msgid "Class nickname" msgstr "" #: ../libvips/iofuncs/object.c:1594 msgid "Description" msgstr "" #: ../libvips/iofuncs/object.c:1595 msgid "Class description" msgstr "" #: ../libvips/iofuncs/object.c:1793 #, c-format msgid "no value supplied for argument '%s'" msgstr "" #: ../libvips/iofuncs/object.c:1796 #, c-format msgid "no value supplied for argument '%s' ('%s')" msgstr "" #: ../libvips/iofuncs/object.c:1916 ../libvips/iofuncs/object.c:1935 #: ../libvips/iofuncs/object.c:1988 #, c-format msgid "'%s' is not an integer" msgstr "" #: ../libvips/iofuncs/object.c:1952 #, c-format msgid "'%s' is not a double" msgstr "" #: ../libvips/iofuncs/object.c:2267 #, c-format msgid "expected string or ), saw %s" msgstr "" #: ../libvips/iofuncs/object.c:2309 #, c-format msgid "unable to set '%s'" msgstr "" #: ../libvips/iofuncs/object.c:2322 msgid "not , or ) after parameter" msgstr "" #: ../libvips/iofuncs/object.c:2329 msgid "extra tokens after ')'" msgstr "" #: ../libvips/morphology/countlines.c:131 msgid "count lines in an image" msgstr "" #: ../libvips/morphology/countlines.c:135 msgid "Nolines" msgstr "" #: ../libvips/morphology/countlines.c:136 msgid "Number of lines" msgstr "" #: ../libvips/morphology/countlines.c:143 msgid "Countlines left-right or up-down" msgstr "" #: ../libvips/morphology/labelregions.c:121 msgid "label regions in an image" msgstr "" #: ../libvips/morphology/labelregions.c:126 msgid "Mask of region labels" msgstr "" #: ../libvips/morphology/labelregions.c:131 msgid "Segments" msgstr "" #: ../libvips/morphology/labelregions.c:132 msgid "Number of discrete contigious regions" msgstr "" #: ../libvips/morphology/rank.c:357 msgid "index out of range" msgstr "" #: ../libvips/morphology/rank.c:405 msgid "rank filter" msgstr "" #: ../libvips/morphology/rank.c:429 msgid "index" msgstr "" #: ../libvips/morphology/rank.c:430 msgid "Select pixel at index" msgstr "" #: ../libvips/morphology/hitmiss.c:321 #, c-format msgid "bad mask element (%d should be 0, 128 or 255)" msgstr "" #: ../libvips/morphology/morphology.c:111 msgid "morphological operations" msgstr "" #: ../libvips/morphology/morph.c:136 msgid "morphology operation" msgstr "" #: ../libvips/morphology/morph.c:152 msgid "Morphology" msgstr "" #: ../libvips/morphology/morph.c:153 msgid "Morphological operation to perform" msgstr "" #: ../libvips/mosaicing/im_tbmosaic.c:90 #: ../libvips/mosaicing/im_lrmosaic.c:114 msgid "bad area parameters" msgstr "" #: ../libvips/mosaicing/im_tbmosaic.c:111 #: ../libvips/mosaicing/im_lrmosaic.c:135 msgid "overlap too small for search" msgstr "" #: ../libvips/mosaicing/im_tbmosaic.c:144 #: ../libvips/mosaicing/im_lrmosaic.c:168 msgid "unknown Coding type" msgstr "" #: ../libvips/mosaicing/im_avgdxdy.c:65 msgid "no points to average" msgstr "" #: ../libvips/mosaicing/im_tbcalcon.c:103 #: ../libvips/mosaicing/im_chkpair.c:205 msgid "help!" msgstr "" #: ../libvips/mosaicing/im_tbcalcon.c:117 msgid "overlap too small" msgstr "" #: ../libvips/mosaicing/im_tbmerge.c:164 ../libvips/mosaicing/im_tbmerge.c:218 #: ../libvips/mosaicing/im_tbmerge.c:536 ../libvips/mosaicing/im_lrmerge.c:216 #: ../libvips/mosaicing/im_lrmerge.c:265 ../libvips/mosaicing/im_lrmerge.c:606 msgid "internal error" msgstr "" #: ../libvips/mosaicing/im_tbmerge.c:635 ../libvips/mosaicing/im_lrmerge.c:806 msgid "unknown coding type" msgstr "" #: ../libvips/mosaicing/im_tbmerge.c:653 ../libvips/mosaicing/im_lrmerge.c:823 msgid "too much overlap" msgstr "" #: ../libvips/mosaicing/im_lrcalcon.c:204 msgid "overlap too small for your search size" msgstr "" #: ../libvips/mosaicing/im_lrcalcon.c:243 #, c-format msgid "found %d tie-points, need at least %d" msgstr "" #: ../libvips/mosaicing/im_lrcalcon.c:288 msgid "not 1-band uchar image" msgstr "" #: ../libvips/mosaicing/im_clinear.c:137 msgid "im_invmat failed" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:115 #, c-format msgid "substitute image \"%s\" is not the same size as \"%s\"" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:160 #: ../libvips/mosaicing/global_balance.c:1767 msgid "global balance an image mosaic" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:176 msgid "old_str" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:177 msgid "Search for this string" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:183 msgid "new_str" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:184 msgid "And swap for this string" msgstr "" #: ../libvips/mosaicing/im_chkpair.c:201 msgid "inputs incompatible" msgstr "" #: ../libvips/mosaicing/merge.c:105 msgid "merge two images" msgstr "" #: ../libvips/mosaicing/merge.c:110 ../libvips/mosaicing/mosaic1.c:490 #: ../libvips/mosaicing/mosaic.c:181 ../libvips/mosaicing/match.c:205 msgid "Reference image" msgstr "" #: ../libvips/mosaicing/merge.c:115 ../libvips/mosaicing/mosaic1.c:495 #: ../libvips/mosaicing/mosaic.c:186 ../libvips/mosaicing/match.c:210 msgid "Secondary" msgstr "" #: ../libvips/mosaicing/merge.c:116 ../libvips/mosaicing/mosaic1.c:496 #: ../libvips/mosaicing/mosaic.c:187 ../libvips/mosaicing/match.c:211 msgid "Secondary image" msgstr "" #: ../libvips/mosaicing/merge.c:128 msgid "Horizontal or vertcial merge" msgstr "" #: ../libvips/mosaicing/merge.c:134 msgid "dx" msgstr "" #: ../libvips/mosaicing/merge.c:135 msgid "Horizontal displacement from sec to ref" msgstr "" #: ../libvips/mosaicing/merge.c:141 msgid "dy" msgstr "" #: ../libvips/mosaicing/merge.c:142 msgid "Vertical displacement from sec to ref" msgstr "" #: ../libvips/mosaicing/merge.c:148 ../libvips/mosaicing/mosaic1.c:597 #: ../libvips/mosaicing/mosaic.c:247 msgid "Max blend" msgstr "" #: ../libvips/mosaicing/merge.c:149 ../libvips/mosaicing/mosaic1.c:598 #: ../libvips/mosaicing/mosaic.c:248 msgid "Maximum blend size" msgstr "" #: ../libvips/mosaicing/mosaic1.c:485 msgid "first-order mosaic of two images" msgstr "" #: ../libvips/mosaicing/mosaic1.c:508 ../libvips/mosaicing/mosaic.c:199 msgid "Horizontal or vertcial mosaic" msgstr "" #: ../libvips/mosaicing/mosaic1.c:514 ../libvips/mosaicing/match.c:222 msgid "xr1" msgstr "" #: ../libvips/mosaicing/mosaic1.c:515 ../libvips/mosaicing/mosaic1.c:522 #: ../libvips/mosaicing/match.c:223 ../libvips/mosaicing/match.c:230 msgid "Position of first reference tie-point" msgstr "" #: ../libvips/mosaicing/mosaic1.c:521 ../libvips/mosaicing/match.c:229 msgid "yr1" msgstr "" #: ../libvips/mosaicing/mosaic1.c:528 ../libvips/mosaicing/match.c:236 msgid "xs1" msgstr "" #: ../libvips/mosaicing/mosaic1.c:529 ../libvips/mosaicing/mosaic1.c:536 #: ../libvips/mosaicing/match.c:237 ../libvips/mosaicing/match.c:244 msgid "Position of first secondary tie-point" msgstr "" #: ../libvips/mosaicing/mosaic1.c:535 ../libvips/mosaicing/match.c:243 msgid "ys1" msgstr "" #: ../libvips/mosaicing/mosaic1.c:542 ../libvips/mosaicing/match.c:250 msgid "xr2" msgstr "" #: ../libvips/mosaicing/mosaic1.c:543 ../libvips/mosaicing/mosaic1.c:550 #: ../libvips/mosaicing/match.c:251 ../libvips/mosaicing/match.c:258 msgid "Position of second reference tie-point" msgstr "" #: ../libvips/mosaicing/mosaic1.c:549 ../libvips/mosaicing/match.c:257 msgid "yr2" msgstr "" #: ../libvips/mosaicing/mosaic1.c:556 ../libvips/mosaicing/match.c:264 msgid "xs2" msgstr "" #: ../libvips/mosaicing/mosaic1.c:557 ../libvips/mosaicing/mosaic1.c:564 #: ../libvips/mosaicing/match.c:265 ../libvips/mosaicing/match.c:272 msgid "Position of second secondary tie-point" msgstr "" #: ../libvips/mosaicing/mosaic1.c:563 ../libvips/mosaicing/match.c:271 msgid "ys2" msgstr "" #: ../libvips/mosaicing/mosaic1.c:570 ../libvips/mosaicing/mosaic.c:233 #: ../libvips/mosaicing/match.c:278 msgid "hwindow" msgstr "" #: ../libvips/mosaicing/mosaic1.c:571 ../libvips/mosaicing/mosaic.c:234 #: ../libvips/mosaicing/match.c:279 msgid "Half window size" msgstr "" #: ../libvips/mosaicing/mosaic1.c:577 ../libvips/mosaicing/mosaic.c:240 #: ../libvips/mosaicing/match.c:285 msgid "harea" msgstr "" #: ../libvips/mosaicing/mosaic1.c:578 ../libvips/mosaicing/mosaic.c:241 #: ../libvips/mosaicing/match.c:286 msgid "Half area size" msgstr "" #: ../libvips/mosaicing/mosaic1.c:584 ../libvips/mosaicing/match.c:292 msgid "search" msgstr "" #: ../libvips/mosaicing/mosaic1.c:585 ../libvips/mosaicing/match.c:293 msgid "Search to improve tie-points" msgstr "" #: ../libvips/mosaicing/mosaic1.c:591 ../libvips/mosaicing/match.c:299 #: ../libvips/resample/resize.c:239 ../libvips/resample/similarity.c:132 #: ../libvips/resample/quadratic.c:355 ../libvips/resample/affine.c:583 msgid "Interpolate" msgstr "" #: ../libvips/mosaicing/mosaic1.c:592 ../libvips/mosaicing/match.c:300 #: ../libvips/resample/resize.c:240 ../libvips/resample/similarity.c:133 #: ../libvips/resample/affine.c:584 msgid "Interpolate pixels with this" msgstr "" #: ../libvips/mosaicing/mosaic1.c:604 ../libvips/mosaicing/mosaic.c:254 msgid "Search band" msgstr "" #: ../libvips/mosaicing/mosaic1.c:605 ../libvips/mosaicing/mosaic.c:255 msgid "Band to search for features on" msgstr "" #: ../libvips/mosaicing/mosaic.c:176 msgid "mosaic two images" msgstr "" #: ../libvips/mosaicing/mosaic.c:205 msgid "xref" msgstr "" #: ../libvips/mosaicing/mosaic.c:206 ../libvips/mosaicing/mosaic.c:213 msgid "Position of reference tie-point" msgstr "" #: ../libvips/mosaicing/mosaic.c:212 msgid "yref" msgstr "" #: ../libvips/mosaicing/mosaic.c:219 msgid "xsec" msgstr "" #: ../libvips/mosaicing/mosaic.c:220 ../libvips/mosaicing/mosaic.c:227 msgid "Position of secondary tie-point" msgstr "" #: ../libvips/mosaicing/mosaic.c:226 msgid "ysec" msgstr "" #: ../libvips/mosaicing/mosaic.c:261 ../libvips/mosaicing/mosaic.c:268 msgid "Integer offset" msgstr "" #: ../libvips/mosaicing/mosaic.c:262 ../libvips/mosaicing/mosaic.c:269 msgid "Detected integer offset" msgstr "" #: ../libvips/mosaicing/mosaic.c:276 msgid "Detected scale" msgstr "" #: ../libvips/mosaicing/mosaic.c:283 msgid "Detected rotation" msgstr "" #: ../libvips/mosaicing/mosaic.c:289 ../libvips/mosaicing/mosaic.c:296 msgid "First-order displacement" msgstr "" #: ../libvips/mosaicing/mosaic.c:290 ../libvips/mosaicing/mosaic.c:297 msgid "Detected first-order displacement" msgstr "" #: ../libvips/mosaicing/im_lrmerge.c:706 msgid "mwidth must be -1 or >= 0" msgstr "" #: ../libvips/mosaicing/im_lrmerge.c:735 msgid "no overlap" msgstr "" #: ../libvips/mosaicing/match.c:200 msgid "first-order match of two images" msgstr "" #: ../libvips/mosaicing/global_balance.c:148 msgid "no matching '>'" msgstr "" #: ../libvips/mosaicing/global_balance.c:157 msgid "too many items" msgstr "" #: ../libvips/mosaicing/global_balance.c:451 msgid "circularity detected" msgstr "" #: ../libvips/mosaicing/global_balance.c:485 #: ../libvips/mosaicing/global_balance.c:545 #, c-format msgid "image \"%s\" used twice as output" msgstr "" #: ../libvips/mosaicing/global_balance.c:594 msgid "bad number of args in join line" msgstr "" #: ../libvips/mosaicing/global_balance.c:636 msgid "bad number of args in join1 line" msgstr "" #: ../libvips/mosaicing/global_balance.c:672 msgid "bad number of args in copy line" msgstr "" #: ../libvips/mosaicing/global_balance.c:730 msgid "" "mosaic root not found in desc file\n" "is this really a mosaiced image?" msgstr "" #: ../libvips/mosaicing/global_balance.c:741 msgid "more than one root" msgstr "" #: ../libvips/mosaicing/global_balance.c:1060 msgid "empty overlap!" msgstr "" #: ../libvips/mosaicing/global_balance.c:1783 msgid "gamma" msgstr "" #: ../libvips/mosaicing/global_balance.c:1784 msgid "Image gamma" msgstr "" #: ../libvips/mosaicing/global_balance.c:1790 msgid "Int output" msgstr "" #: ../libvips/mosaicing/global_balance.c:1791 msgid "Integer output" msgstr "" #: ../libvips/resample/interpolate.c:181 msgid "VIPS interpolators" msgstr "" #: ../libvips/resample/interpolate.c:357 msgid "nearest-neighbour interpolation" msgstr "" #: ../libvips/resample/interpolate.c:528 msgid "bilinear interpolation" msgstr "" #: ../libvips/resample/resample.c:86 msgid "resample operations" msgstr "" #: ../libvips/resample/resize.c:226 msgid "resize an image" msgstr "" #: ../libvips/resample/resize.c:232 msgid "Scale factor" msgstr "" #: ../libvips/resample/resize.c:233 msgid "Scale image by this factor" msgstr "" #: ../libvips/resample/resize.c:245 ../libvips/resample/resize.c:252 #: ../libvips/resample/similarity.c:152 ../libvips/resample/similarity.c:159 #: ../libvips/resample/affine.c:610 ../libvips/resample/affine.c:617 msgid "Input offset" msgstr "" #: ../libvips/resample/resize.c:246 ../libvips/resample/similarity.c:153 #: ../libvips/resample/affine.c:611 msgid "Horizontal input displacement" msgstr "" #: ../libvips/resample/resize.c:253 ../libvips/resample/similarity.c:160 #: ../libvips/resample/affine.c:618 msgid "Vertical input displacement" msgstr "" #: ../libvips/resample/similarity.c:114 msgid "similarity transform of an image" msgstr "" #: ../libvips/resample/similarity.c:119 msgid "Scale by this factor" msgstr "" #: ../libvips/resample/similarity.c:126 msgid "Rotate anticlockwise by this many degrees" msgstr "" #: ../libvips/resample/similarity.c:138 ../libvips/resample/similarity.c:145 #: ../libvips/resample/affine.c:596 ../libvips/resample/affine.c:603 msgid "Output offset" msgstr "" #: ../libvips/resample/similarity.c:139 ../libvips/resample/affine.c:597 msgid "Horizontal output displacement" msgstr "" #: ../libvips/resample/similarity.c:146 ../libvips/resample/affine.c:604 msgid "Vertical output displacement" msgstr "" #: ../libvips/resample/shrink.c:334 msgid "shrink factors should be >= 1" msgstr "" #: ../libvips/resample/shrink.c:341 msgid "not integer shrink factors, expect poor results" msgstr "" #: ../libvips/resample/shrink.c:406 msgid "shrink an image" msgstr "" #: ../libvips/resample/shrink.c:412 msgid "Xshrink" msgstr "" #: ../libvips/resample/shrink.c:413 msgid "Horizontal shrink factor" msgstr "" #: ../libvips/resample/shrink.c:419 msgid "Yshrink" msgstr "" #: ../libvips/resample/shrink.c:420 msgid "Vertical shrink factor" msgstr "" #: ../libvips/resample/quadratic.c:271 msgid "coefficient matrix must have width 2" msgstr "" #: ../libvips/resample/quadratic.c:293 msgid "coefficient matrix must have height 1, 3, 4 or 6" msgstr "" #: ../libvips/resample/quadratic.c:345 msgid "resample an image with a quadratic transform" msgstr "" #: ../libvips/resample/quadratic.c:349 msgid "Coeff" msgstr "" #: ../libvips/resample/quadratic.c:350 msgid "Coefficient matrix" msgstr "" #: ../libvips/resample/quadratic.c:356 msgid "Interpolate values with this" msgstr "" #: ../libvips/resample/affine.c:501 msgid "output coordinates out of range" msgstr "" #: ../libvips/resample/affine.c:572 msgid "affine transform of an image" msgstr "" #: ../libvips/resample/affine.c:576 msgid "Matrix" msgstr "" #: ../libvips/resample/affine.c:577 msgid "Transformation matrix" msgstr "" #: ../libvips/resample/affine.c:589 msgid "Output rect" msgstr "" #: ../libvips/resample/affine.c:590 msgid "Area of output to generate" msgstr "" #: ../libvips/video/im_video_test.c:52 msgid "error requested" msgstr "" #: ../tools/vips.c:154 #, c-format msgid "'%s' is not the name of a vips class" msgstr "" #: ../tools/vips.c:170 msgid "list objects" msgstr "" #: ../tools/vips.c:171 msgid "BASE-NAME" msgstr "" #: ../tools/vips.c:173 msgid "load PLUGIN" msgstr "" #: ../tools/vips.c:174 msgid "PLUGIN" msgstr "" #: ../tools/vips.c:176 msgid "print version" msgstr "" #: ../tools/vips.c:219 #, c-format msgid "no package or function \"%s\"" msgstr "" #: ../tools/vips.c:1000 msgid "list classes|packages|all|package-name|operation-name" msgstr "" #: ../tools/vips.c:1002 msgid "generate headers for C++ binding" msgstr "" #: ../tools/vips.c:1004 msgid "generate bodies for C++ binding" msgstr "" #: ../tools/vips.c:1006 msgid "generate links for vips/bin" msgstr "" #: ../tools/vips.c:1008 msgid "list possible actions" msgstr "" #: ../tools/vips.c:1027 msgid "execute vips operation OPER" msgstr "" #: ../tools/vips.c:1059 msgid "Operation help" msgstr "" #: ../tools/vips.c:1098 msgid "[ACTION] [OPTIONS] [PARAMETERS] - VIPS driver program" msgstr "" #: ../tools/vips.c:1271 #, c-format msgid "unknown action \"%s\"" msgstr "" #: ../tools/vipsedit.c:83 msgid "tag file as big or little-endian" msgstr "" #: ../tools/vipsedit.c:85 msgid "set width to N pixels" msgstr "" #: ../tools/vipsedit.c:87 msgid "set height to N pixels" msgstr "" #: ../tools/vipsedit.c:89 msgid "set Bands to N" msgstr "" #: ../tools/vipsedit.c:91 msgid "set BandFmt to F (eg. uchar, float)" msgstr "" #: ../tools/vipsedit.c:93 msgid "set interpretation to I (eg. xyz)" msgstr "" #: ../tools/vipsedit.c:95 msgid "set Coding to C (eg. labq)" msgstr "" #: ../tools/vipsedit.c:97 msgid "set Xres to R pixels/mm" msgstr "" #: ../tools/vipsedit.c:99 msgid "set Yres to R pixels/mm" msgstr "" #: ../tools/vipsedit.c:101 msgid "set Xoffset to N pixels" msgstr "" #: ../tools/vipsedit.c:103 msgid "set Yoffset to N pixels" msgstr "" #: ../tools/vipsedit.c:105 msgid "replace extension block with stdin" msgstr "" #: ../tools/vipsedit.c:107 msgid "set Xsize to N (deprecated, use width)" msgstr "" #: ../tools/vipsedit.c:109 msgid "set Ysize to N (deprecated, use height)" msgstr "" #: ../tools/vipsedit.c:111 msgid "set Type to T (deprecated, use interpretation)" msgstr "" #: ../tools/vipsedit.c:122 #, c-format msgid "'%s' is not a positive integer" msgstr "" #: ../tools/vipsedit.c:135 msgid "unable to start VIPS" msgstr "" #: ../tools/vipsedit.c:140 msgid "vipsedit - edit vips file header" msgstr "" #: ../tools/vipsedit.c:156 #, c-format msgid "usage: %s [OPTION...] vips-file\n" msgstr "" #: ../tools/vipsedit.c:163 #, c-format msgid "could not open image %s" msgstr "" #: ../tools/vipsedit.c:166 #, c-format msgid "could not read VIPS header for %s" msgstr "" #: ../tools/vipsedit.c:175 #, c-format msgid "bad endian-ness %s, should be 'big' or 'little'" msgstr "" #: ../tools/vipsedit.c:188 #, c-format msgid "bad format %s" msgstr "" #: ../tools/vipsedit.c:196 #, c-format msgid "bad interpretation %s" msgstr "" #: ../tools/vipsedit.c:204 #, c-format msgid "bad coding %s" msgstr "" #: ../tools/vipsedit.c:217 #, c-format msgid "could not seek on %s" msgstr "" #: ../tools/vipsedit.c:220 #, c-format msgid "could not write to %s" msgstr "" #: ../tools/vipsedit.c:227 msgid "could not get ext data" msgstr "" #: ../tools/vipsedit.c:236 msgid "could not set extension" msgstr "" #: ../tools/vipsheader.c:88 msgid "show all fields" msgstr "" #: ../tools/vipsheader.c:90 msgid "" "print value of FIELD (\"getext\" reads extension block, \"Hist\" reads image " "history)" msgstr "" #: ../tools/vipsheader.c:192 msgid "- print image header" msgstr "" #: ../tools/vipsthumbnail.c:112 msgid "shrink to SIZE or to WIDTHxHEIGHT" msgstr "" #: ../tools/vipsthumbnail.c:113 msgid "SIZE" msgstr "" #: ../tools/vipsthumbnail.c:116 msgid "set output to FORMAT" msgstr "" #: ../tools/vipsthumbnail.c:117 ../tools/vipsthumbnail.c:121 msgid "FORMAT" msgstr "" #: ../tools/vipsthumbnail.c:120 msgid "set output format string to FORMAT" msgstr "" #: ../tools/vipsthumbnail.c:124 msgid "resample with INTERPOLATOR" msgstr "" #: ../tools/vipsthumbnail.c:125 msgid "INTERPOLATOR" msgstr "" #: ../tools/vipsthumbnail.c:128 msgid "sharpen with none|mild|MASKFILE" msgstr "" #: ../tools/vipsthumbnail.c:129 msgid "none|mild|MASKFILE" msgstr "" #: ../tools/vipsthumbnail.c:132 msgid "export with PROFILE" msgstr "" #: ../tools/vipsthumbnail.c:133 ../tools/vipsthumbnail.c:137 msgid "PROFILE" msgstr "" #: ../tools/vipsthumbnail.c:136 msgid "import untagged images with PROFILE" msgstr "" #: ../tools/vipsthumbnail.c:140 msgid "process in linear space" msgstr "" #: ../tools/vipsthumbnail.c:143 msgid "crop exactly to SIZE" msgstr "" #: ../tools/vipsthumbnail.c:146 msgid "auto-rotate" msgstr "" #: ../tools/vipsthumbnail.c:149 msgid "delete profile from exported image" msgstr "" #: ../tools/vipsthumbnail.c:152 ../tools/vipsthumbnail.c:155 #: ../tools/vipsthumbnail.c:158 msgid "(deprecated, does nothing)" msgstr "" #: ../tools/vipsthumbnail.c:562 #, c-format msgid "unable to import with embedded profile: %s" msgstr "" #: ../tools/vipsthumbnail.c:754 msgid "- thumbnail generator" msgstr "" #: ../libvips/resample/vsqbs.cpp:400 msgid "B-Splines with antialiasing smoothing" msgstr "" #: ../libvips/resample/bicubic.cpp:501 msgid "bicubic interpolation (Catmull-Rom)" msgstr "" #: ../libvips/resample/lbb.cpp:860 msgid "reduced halo bicubic" msgstr "" #: ../libvips/resample/nohalo.cpp:1581 msgid "edge sharpening resampler with halo reduction" msgstr "" vips-8.2.2/po/vips8.2.pot0000664000175000017500000040516612651721506012023 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2016-01-26 16:48+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: ../libvips/arithmetic/abs.c:230 msgid "absolute value of an image" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:112 #, c-format msgid "bins out of range [1,%d]" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:289 msgid "find n-dimensional image histogram" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:298 #: ../libvips/arithmetic/hough.c:185 ../libvips/arithmetic/min.c:429 #: ../libvips/arithmetic/avg.c:214 ../libvips/arithmetic/max.c:426 #: ../libvips/arithmetic/stats.c:420 #: ../libvips/arithmetic/hist_find_indexed.c:391 #: ../libvips/arithmetic/deviate.c:221 ../libvips/arithmetic/measure.c:208 #: ../libvips/arithmetic/arithmetic.c:638 #: ../libvips/arithmetic/hist_find.c:399 ../libvips/colour/scRGB2sRGB.c:271 #: ../libvips/colour/scRGB2BW.c:243 ../libvips/colour/colour.c:420 #: ../libvips/colour/sRGB2scRGB.c:241 ../libvips/colour/colourspace.c:592 #: ../libvips/conversion/conversion.c:200 #: ../libvips/convolution/gaussblur.c:123 #: ../libvips/convolution/correlation.c:160 #: ../libvips/convolution/sharpen.c:324 #: ../libvips/convolution/convolution.c:135 ../libvips/create/create.c:101 #: ../libvips/foreign/foreign.c:961 ../libvips/freqfilt/freqfilt.c:104 #: ../libvips/histogram/hist_norm.c:147 ../libvips/histogram/hist_equal.c:114 #: ../libvips/histogram/maplut.c:703 ../libvips/histogram/hist_plot.c:348 #: ../libvips/histogram/stdif.c:298 ../libvips/histogram/hist_local.c:306 #: ../libvips/histogram/histogram.c:231 ../libvips/iofuncs/system.c:266 #: ../libvips/morphology/rank.c:409 ../libvips/morphology/morph.c:140 #: ../libvips/mosaicing/im_remosaic.c:170 ../libvips/mosaicing/merge.c:121 #: ../libvips/mosaicing/mosaic1.c:501 ../libvips/mosaicing/mosaic.c:192 #: ../libvips/mosaicing/match.c:216 ../libvips/mosaicing/global_balance.c:1777 #: ../libvips/resample/resample.c:96 msgid "Output" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:299 #: ../libvips/arithmetic/hist_find_indexed.c:392 #: ../libvips/arithmetic/hist_find.c:400 msgid "Output histogram" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:304 msgid "Bins" msgstr "" #: ../libvips/arithmetic/hist_find_ndim.c:305 msgid "Number of bins in each dimension" msgstr "" #: ../libvips/arithmetic/getpoint.c:104 msgid "coordinates out of range" msgstr "" #: ../libvips/arithmetic/getpoint.c:149 msgid "read a point from an image" msgstr "" #: ../libvips/arithmetic/getpoint.c:153 ../libvips/arithmetic/measure.c:202 #: ../libvips/conversion/falsecolour.c:381 ../libvips/conversion/gamma.c:143 #: ../libvips/freqfilt/freqfilt.c:98 msgid "in" msgstr "" #: ../libvips/arithmetic/getpoint.c:154 ../libvips/arithmetic/statistic.c:168 #: ../libvips/arithmetic/unary.c:89 ../libvips/colour/scRGB2sRGB.c:266 #: ../libvips/colour/scRGB2BW.c:238 ../libvips/colour/colour.c:480 #: ../libvips/colour/colour.c:572 ../libvips/colour/sRGB2scRGB.c:236 #: ../libvips/colour/colourspace.c:587 ../libvips/conversion/rot.c:360 #: ../libvips/conversion/grid.c:200 ../libvips/conversion/falsecolour.c:382 #: ../libvips/conversion/flatten.c:377 ../libvips/conversion/replicate.c:197 #: ../libvips/conversion/subsample.c:275 ../libvips/conversion/cache.c:102 #: ../libvips/conversion/gamma.c:144 ../libvips/conversion/rot45.c:268 #: ../libvips/conversion/autorot.c:133 ../libvips/conversion/extract.c:200 #: ../libvips/conversion/extract.c:423 ../libvips/conversion/wrap.c:120 #: ../libvips/conversion/zoom.c:392 ../libvips/conversion/tilecache.c:415 #: ../libvips/conversion/flip.c:241 ../libvips/conversion/bandjoin.c:394 #: ../libvips/conversion/copy.c:272 ../libvips/conversion/cast.c:537 #: ../libvips/conversion/sequential.c:322 ../libvips/conversion/embed.c:564 #: ../libvips/conversion/msb.c:245 ../libvips/conversion/scale.c:152 #: ../libvips/convolution/gaussblur.c:118 ../libvips/convolution/sharpen.c:319 #: ../libvips/freqfilt/freqfilt.c:99 ../libvips/histogram/hist_norm.c:142 #: ../libvips/histogram/hist_equal.c:109 ../libvips/histogram/maplut.c:698 #: ../libvips/histogram/hist_plot.c:343 ../libvips/histogram/stdif.c:293 #: ../libvips/histogram/hist_local.c:301 ../libvips/histogram/hist_unary.c:90 #: ../libvips/histogram/percent.c:111 ../libvips/mosaicing/im_remosaic.c:165 #: ../libvips/mosaicing/global_balance.c:1772 msgid "Input image" msgstr "" #: ../libvips/arithmetic/getpoint.c:159 ../libvips/arithmetic/min.c:457 #: ../libvips/arithmetic/max.c:454 msgid "Output array" msgstr "" #: ../libvips/arithmetic/getpoint.c:160 ../libvips/arithmetic/min.c:458 #: ../libvips/arithmetic/max.c:455 msgid "Array of output values" msgstr "" #: ../libvips/arithmetic/getpoint.c:166 ../libvips/arithmetic/min.c:436 #: ../libvips/arithmetic/max.c:433 ../libvips/conversion/wrap.c:125 #: ../libvips/conversion/embed.c:569 ../libvips/draw/draw_image.c:265 #: ../libvips/draw/draw_flood.c:552 ../libvips/draw/draw_mask.c:329 msgid "x" msgstr "" #: ../libvips/arithmetic/getpoint.c:167 ../libvips/arithmetic/getpoint.c:174 msgid "Point to read" msgstr "" #: ../libvips/arithmetic/getpoint.c:173 ../libvips/arithmetic/min.c:443 #: ../libvips/arithmetic/max.c:440 ../libvips/conversion/wrap.c:132 #: ../libvips/conversion/embed.c:576 ../libvips/draw/draw_image.c:272 #: ../libvips/draw/draw_flood.c:559 ../libvips/draw/draw_mask.c:336 msgid "y" msgstr "" #: ../libvips/arithmetic/complex.c:248 msgid "perform a complex operation on an image" msgstr "" #: ../libvips/arithmetic/complex.c:255 ../libvips/arithmetic/complex.c:548 #: ../libvips/arithmetic/complex.c:763 ../libvips/arithmetic/relational.c:224 #: ../libvips/arithmetic/relational.c:562 ../libvips/arithmetic/math.c:214 #: ../libvips/arithmetic/math2.c:205 ../libvips/arithmetic/math2.c:403 #: ../libvips/arithmetic/boolean.c:218 ../libvips/arithmetic/boolean.c:521 #: ../libvips/conversion/bandbool.c:220 ../tools/vips.c:1059 msgid "Operation" msgstr "" #: ../libvips/arithmetic/complex.c:256 ../libvips/arithmetic/complex.c:764 msgid "complex to perform" msgstr "" #: ../libvips/arithmetic/complex.c:541 msgid "complex binary operations on two images" msgstr "" #: ../libvips/arithmetic/complex.c:549 msgid "binary complex operation to perform" msgstr "" #: ../libvips/arithmetic/complex.c:754 msgid "get a component from a complex image" msgstr "" #: ../libvips/arithmetic/complex.c:962 msgid "form a complex image from two real images" msgstr "" #: ../libvips/arithmetic/invert.c:165 msgid "invert an image" msgstr "" #: ../libvips/arithmetic/nary.c:80 msgid "nary operations" msgstr "" #: ../libvips/arithmetic/nary.c:87 ../libvips/arithmetic/statistic.c:167 #: ../libvips/arithmetic/unary.c:88 ../libvips/colour/scRGB2sRGB.c:265 #: ../libvips/colour/scRGB2BW.c:237 ../libvips/colour/colour.c:479 #: ../libvips/colour/colour.c:571 ../libvips/colour/sRGB2scRGB.c:235 #: ../libvips/colour/colourspace.c:586 ../libvips/conversion/rot.c:359 #: ../libvips/conversion/grid.c:199 ../libvips/conversion/recomb.c:207 #: ../libvips/conversion/flatten.c:376 ../libvips/conversion/replicate.c:196 #: ../libvips/conversion/subsample.c:274 ../libvips/conversion/cache.c:101 #: ../libvips/conversion/rot45.c:267 ../libvips/conversion/autorot.c:132 #: ../libvips/conversion/extract.c:199 ../libvips/conversion/extract.c:422 #: ../libvips/conversion/wrap.c:119 ../libvips/conversion/zoom.c:391 #: ../libvips/conversion/bandbool.c:214 ../libvips/conversion/tilecache.c:414 #: ../libvips/conversion/flip.c:240 ../libvips/conversion/bandjoin.c:174 #: ../libvips/conversion/bandjoin.c:393 ../libvips/conversion/copy.c:271 #: ../libvips/conversion/cast.c:536 ../libvips/conversion/sequential.c:321 #: ../libvips/conversion/embed.c:563 ../libvips/conversion/msb.c:244 #: ../libvips/conversion/bandrank.c:244 ../libvips/conversion/bandmean.c:198 #: ../libvips/conversion/scale.c:151 ../libvips/convolution/gaussblur.c:117 #: ../libvips/convolution/correlation.c:148 #: ../libvips/convolution/sharpen.c:318 #: ../libvips/convolution/convolution.c:129 ../libvips/create/invertlut.c:289 #: ../libvips/create/buildlut.c:261 ../libvips/foreign/foreign.c:1463 #: ../libvips/histogram/hist_norm.c:141 ../libvips/histogram/hist_equal.c:108 #: ../libvips/histogram/maplut.c:697 ../libvips/histogram/hist_plot.c:342 #: ../libvips/histogram/stdif.c:292 ../libvips/histogram/hist_local.c:300 #: ../libvips/histogram/hist_match.c:161 ../libvips/histogram/hist_unary.c:89 #: ../libvips/histogram/hist_ismonotonic.c:117 #: ../libvips/histogram/percent.c:110 ../libvips/iofuncs/system.c:259 #: ../libvips/morphology/morphology.c:117 #: ../libvips/mosaicing/im_remosaic.c:164 #: ../libvips/mosaicing/global_balance.c:1771 #: ../libvips/resample/resample.c:90 msgid "Input" msgstr "" #: ../libvips/arithmetic/nary.c:88 ../libvips/conversion/bandjoin.c:175 #: ../libvips/conversion/bandrank.c:245 ../libvips/iofuncs/system.c:260 msgid "Array of input images" msgstr "" #: ../libvips/arithmetic/multiply.c:173 msgid "multiply two images" msgstr "" #: ../libvips/arithmetic/hough.c:176 msgid "find hough transform" msgstr "" #: ../libvips/arithmetic/hough.c:186 ../libvips/arithmetic/arithmetic.c:639 #: ../libvips/colour/scRGB2sRGB.c:272 ../libvips/colour/scRGB2BW.c:244 #: ../libvips/colour/colour.c:421 ../libvips/colour/sRGB2scRGB.c:242 #: ../libvips/colour/colourspace.c:593 ../libvips/conversion/conversion.c:201 #: ../libvips/convolution/gaussblur.c:124 #: ../libvips/convolution/correlation.c:161 #: ../libvips/convolution/sharpen.c:325 #: ../libvips/convolution/convolution.c:136 ../libvips/create/create.c:102 #: ../libvips/foreign/foreign.c:962 ../libvips/freqfilt/freqfilt.c:105 #: ../libvips/histogram/hist_norm.c:148 ../libvips/histogram/hist_equal.c:115 #: ../libvips/histogram/maplut.c:704 ../libvips/histogram/hist_plot.c:349 #: ../libvips/histogram/stdif.c:299 ../libvips/histogram/hist_local.c:307 #: ../libvips/histogram/histogram.c:232 ../libvips/iofuncs/system.c:267 #: ../libvips/morphology/rank.c:410 ../libvips/morphology/morph.c:141 #: ../libvips/mosaicing/im_remosaic.c:171 ../libvips/mosaicing/merge.c:122 #: ../libvips/mosaicing/mosaic1.c:502 ../libvips/mosaicing/mosaic.c:193 #: ../libvips/mosaicing/match.c:217 ../libvips/mosaicing/global_balance.c:1778 #: ../libvips/resample/resample.c:97 msgid "Output image" msgstr "" #: ../libvips/arithmetic/round.c:161 msgid "perform a round function on an image" msgstr "" #: ../libvips/arithmetic/round.c:169 msgid "Round operation" msgstr "" #: ../libvips/arithmetic/round.c:170 msgid "rounding operation to perform" msgstr "" #: ../libvips/arithmetic/subtract.c:162 msgid "subtract two images" msgstr "" #: ../libvips/arithmetic/min.c:421 msgid "find image minimum" msgstr "" #: ../libvips/arithmetic/min.c:430 ../libvips/arithmetic/avg.c:215 #: ../libvips/arithmetic/max.c:427 ../libvips/arithmetic/deviate.c:222 msgid "Output value" msgstr "" #: ../libvips/arithmetic/min.c:437 msgid "Horizontal position of minimum" msgstr "" #: ../libvips/arithmetic/min.c:444 msgid "Vertical position of minimum" msgstr "" #: ../libvips/arithmetic/min.c:450 ../libvips/arithmetic/max.c:447 #: ../libvips/create/invertlut.c:295 ../libvips/create/identity.c:158 msgid "Size" msgstr "" #: ../libvips/arithmetic/min.c:451 msgid "Number of minimum values to find" msgstr "" #: ../libvips/arithmetic/min.c:464 ../libvips/arithmetic/max.c:461 msgid "x array" msgstr "" #: ../libvips/arithmetic/min.c:465 ../libvips/arithmetic/max.c:462 msgid "Array of horizontal positions" msgstr "" #: ../libvips/arithmetic/min.c:471 ../libvips/arithmetic/max.c:468 msgid "y array" msgstr "" #: ../libvips/arithmetic/min.c:472 ../libvips/arithmetic/max.c:469 msgid "Array of vertical positions" msgstr "" #: ../libvips/arithmetic/unaryconst.c:203 msgid "unary operations with a constant" msgstr "" #: ../libvips/arithmetic/unaryconst.c:207 msgid "c" msgstr "" #: ../libvips/arithmetic/unaryconst.c:208 msgid "Array of constants" msgstr "" #: ../libvips/arithmetic/project.c:322 msgid "find image projections" msgstr "" #: ../libvips/arithmetic/project.c:330 ../libvips/arithmetic/profile.c:300 msgid "Columns" msgstr "" #: ../libvips/arithmetic/project.c:331 msgid "Sums of columns" msgstr "" #: ../libvips/arithmetic/project.c:336 ../libvips/arithmetic/profile.c:306 msgid "Rows" msgstr "" #: ../libvips/arithmetic/project.c:337 msgid "Sums of rows" msgstr "" #: ../libvips/arithmetic/avg.c:206 ../libvips/arithmetic/stats.c:412 msgid "find image average" msgstr "" #: ../libvips/arithmetic/max.c:418 msgid "find image maximum" msgstr "" #: ../libvips/arithmetic/max.c:434 msgid "Horizontal position of maximum" msgstr "" #: ../libvips/arithmetic/max.c:441 msgid "Vertical position of maximum" msgstr "" #: ../libvips/arithmetic/max.c:448 msgid "Number of maximum values to find" msgstr "" #: ../libvips/arithmetic/statistic.c:161 msgid "VIPS statistic operations" msgstr "" #: ../libvips/arithmetic/divide.c:225 msgid "divide two images" msgstr "" #: ../libvips/arithmetic/profile.c:292 msgid "find image profiles" msgstr "" #: ../libvips/arithmetic/profile.c:301 msgid "First non-zero pixel in column" msgstr "" #: ../libvips/arithmetic/profile.c:307 msgid "First non-zero pixel in row" msgstr "" #: ../libvips/arithmetic/stats.c:421 ../libvips/arithmetic/measure.c:209 msgid "Output array of statistics" msgstr "" #: ../libvips/arithmetic/sum.c:141 msgid "sum an array of images" msgstr "" #: ../libvips/arithmetic/binary.c:89 msgid "binary operations" msgstr "" #: ../libvips/arithmetic/binary.c:96 ../libvips/arithmetic/measure.c:228 #: ../libvips/colour/colour.c:667 ../libvips/conversion/extract.c:205 #: ../libvips/draw/draw_smudge.c:197 ../libvips/draw/draw_flood.c:579 #: ../libvips/draw/draw_rect.c:173 msgid "Left" msgstr "" #: ../libvips/arithmetic/binary.c:97 msgid "Left-hand image argument" msgstr "" #: ../libvips/arithmetic/binary.c:102 ../libvips/colour/colour.c:673 msgid "Right" msgstr "" #: ../libvips/arithmetic/binary.c:103 msgid "Right-hand image argument" msgstr "" #: ../libvips/arithmetic/hist_find_indexed.c:377 msgid "find indexed image histogram" msgstr "" #: ../libvips/arithmetic/hist_find_indexed.c:385 #: ../libvips/conversion/bandrank.c:251 msgid "Index" msgstr "" #: ../libvips/arithmetic/hist_find_indexed.c:386 msgid "Index image" msgstr "" #: ../libvips/arithmetic/deviate.c:213 msgid "find image standard deviation" msgstr "" #: ../libvips/arithmetic/relational.c:216 msgid "relational operation on two images" msgstr "" #: ../libvips/arithmetic/relational.c:225 #: ../libvips/arithmetic/relational.c:563 msgid "relational to perform" msgstr "" #: ../libvips/arithmetic/relational.c:553 msgid "relational operations against a constant" msgstr "" #: ../libvips/arithmetic/measure.c:169 #, c-format msgid "patch %d x %d, band %d: avg = %g, sdev = %g" msgstr "" #: ../libvips/arithmetic/measure.c:198 msgid "measure a set of patches on a color chart" msgstr "" #: ../libvips/arithmetic/measure.c:203 msgid "Image to measure" msgstr "" #: ../libvips/arithmetic/measure.c:214 ../libvips/conversion/grid.c:212 #: ../libvips/conversion/replicate.c:202 msgid "Across" msgstr "" #: ../libvips/arithmetic/measure.c:215 msgid "Number of patches across chart" msgstr "" #: ../libvips/arithmetic/measure.c:221 ../libvips/conversion/grid.c:219 #: ../libvips/conversion/replicate.c:209 msgid "Down" msgstr "" #: ../libvips/arithmetic/measure.c:222 msgid "Number of patches down chart" msgstr "" #: ../libvips/arithmetic/measure.c:229 ../libvips/conversion/extract.c:206 msgid "Left edge of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:235 ../libvips/conversion/extract.c:212 #: ../libvips/draw/draw_flood.c:586 msgid "Top" msgstr "" #: ../libvips/arithmetic/measure.c:236 ../libvips/conversion/extract.c:213 msgid "Top edge of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:242 ../libvips/arithmetic/hough_line.c:142 #: ../libvips/conversion/extract.c:219 ../libvips/conversion/copy.c:284 #: ../libvips/conversion/embed.c:583 ../libvips/create/black.c:129 #: ../libvips/create/gaussnoise.c:153 ../libvips/create/logmat.c:208 #: ../libvips/create/text.c:297 ../libvips/create/xyz.c:193 #: ../libvips/create/point.c:143 ../libvips/create/fractsurf.c:102 #: ../libvips/draw/draw_flood.c:593 ../libvips/foreign/rawload.c:123 #: ../libvips/histogram/stdif.c:306 ../libvips/histogram/hist_local.c:312 #: ../libvips/iofuncs/image.c:1118 ../libvips/morphology/rank.c:415 msgid "Width" msgstr "" #: ../libvips/arithmetic/measure.c:243 ../libvips/conversion/extract.c:220 msgid "Width of extract area" msgstr "" #: ../libvips/arithmetic/measure.c:249 ../libvips/arithmetic/hough_line.c:149 #: ../libvips/conversion/extract.c:226 ../libvips/conversion/copy.c:291 #: ../libvips/conversion/embed.c:590 ../libvips/create/black.c:136 #: ../libvips/create/gaussnoise.c:160 ../libvips/create/xyz.c:200 #: ../libvips/create/point.c:150 ../libvips/create/fractsurf.c:109 #: ../libvips/draw/draw_flood.c:600 ../libvips/foreign/rawload.c:130 #: ../libvips/histogram/stdif.c:313 ../libvips/histogram/hist_local.c:319 #: ../libvips/iofuncs/image.c:1125 ../libvips/morphology/rank.c:422 msgid "Height" msgstr "" #: ../libvips/arithmetic/measure.c:250 ../libvips/conversion/extract.c:227 msgid "Height of extract area" msgstr "" #: ../libvips/arithmetic/remainder.c:174 msgid "remainder after integer division of two images" msgstr "" #: ../libvips/arithmetic/remainder.c:324 msgid "remainder after integer division of an image and a constant" msgstr "" #: ../libvips/arithmetic/unary.c:81 msgid "unary operations" msgstr "" #: ../libvips/arithmetic/hough_circle.c:113 #: ../libvips/convolution/sharpen.c:230 msgid "parameters out of range" msgstr "" #: ../libvips/arithmetic/hough_circle.c:233 msgid "find hough circle transform" msgstr "" #: ../libvips/arithmetic/hough_circle.c:240 ../libvips/mosaicing/mosaic.c:275 #: ../libvips/resample/similarity.c:118 msgid "Scale" msgstr "" #: ../libvips/arithmetic/hough_circle.c:241 msgid "Scale down dimensions by this factor" msgstr "" #: ../libvips/arithmetic/hough_circle.c:247 msgid "Min radius" msgstr "" #: ../libvips/arithmetic/hough_circle.c:248 msgid "Smallest radius to search for" msgstr "" #: ../libvips/arithmetic/hough_circle.c:254 msgid "Max radius" msgstr "" #: ../libvips/arithmetic/hough_circle.c:255 msgid "Largest radius to search for" msgstr "" #: ../libvips/arithmetic/math.c:206 msgid "apply a math operation to an image" msgstr "" #: ../libvips/arithmetic/math.c:215 ../libvips/arithmetic/math2.c:206 #: ../libvips/arithmetic/math2.c:404 msgid "math to perform" msgstr "" #: ../libvips/arithmetic/hough_line.c:135 msgid "find hough line transform" msgstr "" #: ../libvips/arithmetic/hough_line.c:143 msgid "horizontal size of parameter space" msgstr "" #: ../libvips/arithmetic/hough_line.c:150 msgid "Vertical size of parameter space" msgstr "" #: ../libvips/arithmetic/arithmetic.c:378 #, c-format msgid "not one band or %d bands" msgstr "" #: ../libvips/arithmetic/arithmetic.c:382 msgid "bad bands" msgstr "" #: ../libvips/arithmetic/arithmetic.c:571 ../libvips/colour/colour.c:296 #: ../libvips/conversion/bandary.c:141 ../libvips/conversion/bandrank.c:204 msgid "too many input images" msgstr "" #: ../libvips/arithmetic/arithmetic.c:632 msgid "arithmetic operations" msgstr "" #: ../libvips/arithmetic/hist_find.c:390 msgid "find image histogram" msgstr "" #: ../libvips/arithmetic/hist_find.c:405 ../libvips/conversion/extract.c:428 #: ../libvips/conversion/msb.c:250 ../libvips/histogram/hist_equal.c:120 msgid "Band" msgstr "" #: ../libvips/arithmetic/hist_find.c:406 msgid "Find histogram of band" msgstr "" #: ../libvips/arithmetic/add.c:172 msgid "add two images" msgstr "" #: ../libvips/arithmetic/math2.c:197 msgid "binary math operations" msgstr "" #: ../libvips/arithmetic/math2.c:395 msgid "pow( @in, @c )" msgstr "" #: ../libvips/arithmetic/linear.c:386 msgid "calculate (a * in + b)" msgstr "" #: ../libvips/arithmetic/linear.c:394 msgid "a" msgstr "" #: ../libvips/arithmetic/linear.c:395 msgid "Multiply by this" msgstr "" #: ../libvips/arithmetic/linear.c:401 msgid "b" msgstr "" #: ../libvips/arithmetic/linear.c:402 msgid "Add this" msgstr "" #: ../libvips/arithmetic/linear.c:408 msgid "uchar" msgstr "" #: ../libvips/arithmetic/linear.c:409 msgid "Output should be uchar" msgstr "" #: ../libvips/arithmetic/boolean.c:210 msgid "boolean operation on two images" msgstr "" #: ../libvips/arithmetic/boolean.c:219 ../libvips/arithmetic/boolean.c:522 #: ../libvips/conversion/bandbool.c:221 msgid "boolean to perform" msgstr "" #: ../libvips/arithmetic/boolean.c:513 msgid "boolean operations against a constant" msgstr "" #: ../libvips/arithmetic/sign.c:152 msgid "unit vector of pixel" msgstr "" #: ../libvips/colour/scRGB2sRGB.c:219 ../libvips/colour/scRGB2BW.c:190 #: ../libvips/colour/icc_transform.c:238 msgid "depth must be 8 or 16" msgstr "" #: ../libvips/colour/scRGB2sRGB.c:259 msgid "convert an scRGB image to sRGB" msgstr "" #: ../libvips/colour/scRGB2sRGB.c:277 ../libvips/colour/scRGB2BW.c:249 #: ../libvips/colour/icc_transform.c:983 #: ../libvips/colour/icc_transform.c:1125 ../libvips/foreign/dzsave.c:1958 msgid "Depth" msgstr "" #: ../libvips/colour/scRGB2sRGB.c:278 ../libvips/colour/scRGB2BW.c:250 #: ../libvips/colour/icc_transform.c:984 #: ../libvips/colour/icc_transform.c:1126 msgid "Output device space depth in bits" msgstr "" #: ../libvips/colour/XYZ2scRGB.c:105 msgid "transform XYZ to scRGB" msgstr "" #: ../libvips/colour/Lab2XYZ.c:169 msgid "transform CIELAB to XYZ" msgstr "" #: ../libvips/colour/Lab2XYZ.c:175 ../libvips/colour/XYZ2Lab.c:228 msgid "Temperature" msgstr "" #: ../libvips/colour/Lab2XYZ.c:176 msgid "Color temperature" msgstr "" #: ../libvips/colour/LCh2Lab.c:120 msgid "transform LCh to Lab" msgstr "" #: ../libvips/colour/LCh2UCS.c:206 ../libvips/colour/UCS2LCh.c:272 msgid "transform LCh to CMC" msgstr "" #: ../libvips/colour/dE00.c:235 msgid "calculate dE00" msgstr "" #: ../libvips/colour/scRGB2BW.c:231 msgid "convert scRGB to BW" msgstr "" #: ../libvips/colour/scRGB2XYZ.c:90 msgid "transform scRGB to XYZ" msgstr "" #: ../libvips/colour/icc_transform.c:293 #, c-format msgid "unimplemented input color space 0x%x" msgstr "" #: ../libvips/colour/icc_transform.c:358 #, c-format msgid "unimplemented output color space 0x%x" msgstr "" #: ../libvips/colour/icc_transform.c:370 msgid "no device profile" msgstr "" #: ../libvips/colour/icc_transform.c:401 msgid "transform using ICC profiles" msgstr "" #: ../libvips/colour/icc_transform.c:405 msgid "Intent" msgstr "" #: ../libvips/colour/icc_transform.c:406 msgid "Rendering intent" msgstr "" #: ../libvips/colour/icc_transform.c:412 msgid "PCS" msgstr "" #: ../libvips/colour/icc_transform.c:413 msgid "Set Profile Connection Space" msgstr "" #: ../libvips/colour/icc_transform.c:457 #, c-format msgid "" "intent %d (%s) not supported by %s profile; falling back to default intent" msgstr "" #: ../libvips/colour/icc_transform.c:461 ../libvips/iofuncs/operation.c:381 msgid "input" msgstr "" #: ../libvips/colour/icc_transform.c:461 ../libvips/iofuncs/operation.c:381 msgid "output" msgstr "" #: ../libvips/colour/icc_transform.c:558 msgid "corrupt embedded profile" msgstr "" #: ../libvips/colour/icc_transform.c:566 msgid "embedded profile incompatible with image" msgstr "" #: ../libvips/colour/icc_transform.c:581 ../libvips/colour/icc_transform.c:825 #: ../libvips/colour/icc_transform.c:1049 #, c-format msgid "unable to open profile \"%s\"" msgstr "" #: ../libvips/colour/icc_transform.c:589 #, c-format msgid "profile \"%s\" incompatible with image" msgstr "" #: ../libvips/colour/icc_transform.c:629 #: ../libvips/colour/icc_transform.c:1041 msgid "no input profile" msgstr "" #: ../libvips/colour/icc_transform.c:739 msgid "import from device with ICC profile" msgstr "" #: ../libvips/colour/icc_transform.c:745 #: ../libvips/colour/icc_transform.c:1111 msgid "Embedded" msgstr "" #: ../libvips/colour/icc_transform.c:746 #: ../libvips/colour/icc_transform.c:1112 msgid "Use embedded input profile, if available" msgstr "" #: ../libvips/colour/icc_transform.c:752 #: ../libvips/colour/icc_transform.c:1118 msgid "Input profile" msgstr "" #: ../libvips/colour/icc_transform.c:753 #: ../libvips/colour/icc_transform.c:1119 msgid "Filename to load input profile from" msgstr "" #: ../libvips/colour/icc_transform.c:817 msgid "unable to load embedded profile" msgstr "" #: ../libvips/colour/icc_transform.c:833 msgid "no output profile" msgstr "" #: ../libvips/colour/icc_transform.c:970 msgid "output to device with ICC profile" msgstr "" #: ../libvips/colour/icc_transform.c:976 #: ../libvips/colour/icc_transform.c:1104 msgid "Output profile" msgstr "" #: ../libvips/colour/icc_transform.c:977 #: ../libvips/colour/icc_transform.c:1105 msgid "Filename to load output profile from" msgstr "" #: ../libvips/colour/icc_transform.c:1098 msgid "transform between devices with ICC profiles" msgstr "" #: ../libvips/colour/icc_transform.c:1170 #: ../libvips/colour/icc_transform.c:1184 msgid "unable to get media white point" msgstr "" #: ../libvips/colour/icc_transform.c:1244 msgid "libvips configured without lcms support" msgstr "" #: ../libvips/colour/dECMC.c:61 msgid "calculate dECMC" msgstr "" #: ../libvips/colour/colour.c:414 msgid "color operations" msgstr "" #: ../libvips/colour/colour.c:475 msgid "color space transformations" msgstr "" #: ../libvips/colour/colour.c:567 msgid "change color coding" msgstr "" #: ../libvips/colour/colour.c:663 msgid "calculate color difference" msgstr "" #: ../libvips/colour/colour.c:668 msgid "Left-hand input image" msgstr "" #: ../libvips/colour/colour.c:674 msgid "Right-hand input image" msgstr "" #: ../libvips/colour/rad2float.c:188 msgid "unpack Radiance coding to float RGB" msgstr "" #: ../libvips/colour/sRGB2scRGB.c:229 msgid "convert an sRGB image to scRGB" msgstr "" #: ../libvips/colour/Lab2LabQ.c:139 msgid "transform float Lab to LabQ coding" msgstr "" #: ../libvips/colour/colourspace.c:145 msgid "too few bands for operation" msgstr "" #: ../libvips/colour/colourspace.c:548 #, c-format msgid "no known route between '%s' and '%s'" msgstr "" #: ../libvips/colour/colourspace.c:580 msgid "convert to a new colorspace" msgstr "" #: ../libvips/colour/colourspace.c:598 msgid "Space" msgstr "" #: ../libvips/colour/colourspace.c:599 msgid "Destination color space" msgstr "" #: ../libvips/colour/colourspace.c:605 msgid "Source space" msgstr "" #: ../libvips/colour/colourspace.c:606 msgid "Source color space" msgstr "" #: ../libvips/colour/Lab2LabS.c:80 msgid "transform float Lab to signed short" msgstr "" #: ../libvips/colour/LabS2LabQ.c:127 msgid "transform short Lab to LabQ coding" msgstr "" #: ../libvips/colour/Lab2LCh.c:149 msgid "transform Lab to LCh" msgstr "" #: ../libvips/colour/Yxy2XYZ.c:93 msgid "transform Yxy to XYZ" msgstr "" #: ../libvips/colour/LabQ2sRGB.c:526 msgid "convert a LabQ image to sRGB" msgstr "" #: ../libvips/colour/float2rad.c:201 msgid "transform float RGB to Radiance coding" msgstr "" #: ../libvips/colour/XYZ2Yxy.c:92 msgid "transform XYZ to Yxy" msgstr "" #: ../libvips/colour/dE76.c:113 msgid "calculate dE76" msgstr "" #: ../libvips/colour/XYZ2Lab.c:222 msgid "transform XYZ to Lab" msgstr "" #: ../libvips/colour/XYZ2Lab.c:229 msgid "Colour temperature" msgstr "" #: ../libvips/colour/LabQ2LabS.c:104 msgid "unpack a LabQ image to short Lab" msgstr "" #: ../libvips/colour/LabQ2Lab.c:124 msgid "unpack a LabQ image to float Lab" msgstr "" #: ../libvips/colour/LabS2Lab.c:78 msgid "transform signed short Lab to float" msgstr "" #: ../libvips/conversion/rot.c:355 ../libvips/conversion/rot45.c:263 msgid "rotate an image" msgstr "" #: ../libvips/conversion/rot.c:365 ../libvips/conversion/rot45.c:273 #: ../libvips/conversion/autorot.c:138 ../libvips/convolution/compass.c:157 #: ../libvips/foreign/dzsave.c:1973 ../libvips/mosaicing/mosaic.c:282 #: ../libvips/resample/similarity.c:125 msgid "Angle" msgstr "" #: ../libvips/conversion/rot.c:366 ../libvips/conversion/rot45.c:274 msgid "Angle to rotate image" msgstr "" #: ../libvips/conversion/conversion.c:196 msgid "conversion operations" msgstr "" #: ../libvips/conversion/grid.c:165 msgid "bad grid geometry" msgstr "" #: ../libvips/conversion/grid.c:195 msgid "grid an image" msgstr "" #: ../libvips/conversion/grid.c:205 ../libvips/conversion/cache.c:114 #: ../libvips/conversion/tilecache.c:420 #: ../libvips/conversion/sequential.c:334 ../libvips/foreign/dzsave.c:2019 #: ../libvips/foreign/tiffsave.c:214 msgid "Tile height" msgstr "" #: ../libvips/conversion/grid.c:206 msgid "chop into tiles this high" msgstr "" #: ../libvips/conversion/grid.c:213 msgid "number of tiles across" msgstr "" #: ../libvips/conversion/grid.c:220 msgid "number of tiles down" msgstr "" #: ../libvips/conversion/recomb.c:166 msgid "bands in must equal matrix width" msgstr "" #: ../libvips/conversion/recomb.c:201 msgid "linear recombination with matrix" msgstr "" #: ../libvips/conversion/recomb.c:208 ../libvips/conversion/bandbool.c:215 #: ../libvips/conversion/bandmean.c:199 #: ../libvips/convolution/correlation.c:149 #: ../libvips/convolution/convolution.c:130 #: ../libvips/morphology/morphology.c:118 ../libvips/resample/resample.c:91 msgid "Input image argument" msgstr "" #: ../libvips/conversion/recomb.c:213 msgid "M" msgstr "" #: ../libvips/conversion/recomb.c:214 msgid "matrix of coefficients" msgstr "" #: ../libvips/conversion/falsecolour.c:375 msgid "false-color an image" msgstr "" #: ../libvips/conversion/flatten.c:370 msgid "flatten alpha out of an image" msgstr "" #: ../libvips/conversion/flatten.c:382 ../libvips/conversion/join.c:265 #: ../libvips/conversion/embed.c:604 ../libvips/conversion/insert.c:550 #: ../libvips/foreign/foreign.c:1476 msgid "Background" msgstr "" #: ../libvips/conversion/flatten.c:383 ../libvips/foreign/foreign.c:1477 msgid "Background value" msgstr "" #: ../libvips/conversion/flatten.c:389 msgid "Maximum alpha" msgstr "" #: ../libvips/conversion/flatten.c:390 msgid "Maximum value of alpha channel" msgstr "" #: ../libvips/conversion/replicate.c:192 msgid "replicate an image" msgstr "" #: ../libvips/conversion/replicate.c:203 msgid "Repeat this many times horizontally" msgstr "" #: ../libvips/conversion/replicate.c:210 msgid "Repeat this many times vertically" msgstr "" #: ../libvips/conversion/bandary.c:136 msgid "no input images" msgstr "" #: ../libvips/conversion/bandary.c:187 msgid "operations on image bands" msgstr "" #: ../libvips/conversion/subsample.c:230 msgid "image has shrunk to nothing" msgstr "" #: ../libvips/conversion/subsample.c:266 msgid "subsample an image" msgstr "" #: ../libvips/conversion/subsample.c:280 ../libvips/conversion/zoom.c:397 msgid "Xfac" msgstr "" #: ../libvips/conversion/subsample.c:281 msgid "Horizontal subsample factor" msgstr "" #: ../libvips/conversion/subsample.c:287 ../libvips/conversion/zoom.c:404 msgid "Yfac" msgstr "" #: ../libvips/conversion/subsample.c:288 msgid "Vertical subsample factor" msgstr "" #: ../libvips/conversion/subsample.c:294 msgid "Point" msgstr "" #: ../libvips/conversion/subsample.c:295 msgid "Point sample" msgstr "" #: ../libvips/conversion/cache.c:97 ../libvips/conversion/tilecache.c:408 msgid "cache an image" msgstr "" #: ../libvips/conversion/cache.c:107 ../libvips/conversion/tilecache.c:799 #: ../libvips/foreign/dzsave.c:2012 ../libvips/foreign/tiffsave.c:207 msgid "Tile width" msgstr "" #: ../libvips/conversion/cache.c:108 ../libvips/conversion/tilecache.c:800 #: ../libvips/foreign/dzsave.c:2013 ../libvips/foreign/tiffsave.c:208 msgid "Tile width in pixels" msgstr "" #: ../libvips/conversion/cache.c:115 ../libvips/conversion/tilecache.c:421 #: ../libvips/conversion/sequential.c:335 ../libvips/foreign/dzsave.c:2020 #: ../libvips/foreign/tiffsave.c:215 msgid "Tile height in pixels" msgstr "" #: ../libvips/conversion/cache.c:121 ../libvips/conversion/tilecache.c:806 msgid "Max tiles" msgstr "" #: ../libvips/conversion/cache.c:122 ../libvips/conversion/tilecache.c:807 msgid "Maximum number of tiles to cache" msgstr "" #: ../libvips/conversion/join.c:228 msgid "join a pair of images" msgstr "" #: ../libvips/conversion/join.c:232 msgid "in1" msgstr "" #: ../libvips/conversion/join.c:233 msgid "First input image" msgstr "" #: ../libvips/conversion/join.c:238 ../libvips/freqfilt/phasecor.c:112 msgid "in2" msgstr "" #: ../libvips/conversion/join.c:239 ../libvips/freqfilt/phasecor.c:113 msgid "Second input image" msgstr "" #: ../libvips/conversion/join.c:244 ../libvips/morphology/countlines.c:142 msgid "direction" msgstr "" #: ../libvips/conversion/join.c:245 msgid "Join left-right or up-down" msgstr "" #: ../libvips/conversion/join.c:251 ../libvips/conversion/insert.c:543 msgid "Expand" msgstr "" #: ../libvips/conversion/join.c:252 ../libvips/conversion/insert.c:544 msgid "Expand output to hold all of both inputs" msgstr "" #: ../libvips/conversion/join.c:258 msgid "Shim" msgstr "" #: ../libvips/conversion/join.c:259 msgid "Pixels between images" msgstr "" #: ../libvips/conversion/join.c:266 msgid "Colour for new pixels" msgstr "" #: ../libvips/conversion/join.c:272 ../libvips/create/text.c:304 msgid "Align" msgstr "" #: ../libvips/conversion/join.c:273 msgid "Align on the low, centre or high coordinate edge" msgstr "" #: ../libvips/conversion/gamma.c:137 msgid "gamma an image" msgstr "" #: ../libvips/conversion/gamma.c:149 msgid "exponent" msgstr "" #: ../libvips/conversion/gamma.c:150 msgid "Gamma factor" msgstr "" #: ../libvips/conversion/autorot.c:128 msgid "autorotate image by exif tag" msgstr "" #: ../libvips/conversion/autorot.c:139 msgid "Angle image was rotated by" msgstr "" #: ../libvips/conversion/extract.c:150 msgid "bad extract area" msgstr "" #: ../libvips/conversion/extract.c:193 msgid "extract an area from an image" msgstr "" #: ../libvips/conversion/extract.c:387 msgid "bad extract band" msgstr "" #: ../libvips/conversion/extract.c:416 msgid "extract band from an image" msgstr "" #: ../libvips/conversion/extract.c:429 msgid "Band to extract" msgstr "" #: ../libvips/conversion/extract.c:435 msgid "n" msgstr "" #: ../libvips/conversion/extract.c:436 msgid "Number of bands to extract" msgstr "" #: ../libvips/conversion/wrap.c:115 msgid "wrap image origin" msgstr "" #: ../libvips/conversion/wrap.c:126 ../libvips/conversion/embed.c:570 msgid "Left edge of input in output" msgstr "" #: ../libvips/conversion/wrap.c:133 ../libvips/conversion/embed.c:577 msgid "Top edge of input in output" msgstr "" #: ../libvips/conversion/zoom.c:341 msgid "zoom factors too large" msgstr "" #: ../libvips/conversion/zoom.c:385 msgid "zoom an image" msgstr "" #: ../libvips/conversion/zoom.c:398 msgid "Horizontal zoom factor" msgstr "" #: ../libvips/conversion/zoom.c:405 msgid "Vertical zoom factor" msgstr "" #: ../libvips/conversion/bandbool.c:75 #, c-format msgid "operator %s not supported across image bands" msgstr "" #: ../libvips/conversion/bandbool.c:207 msgid "boolean operation across image bands" msgstr "" #: ../libvips/conversion/ifthenelse.c:476 msgid "ifthenelse an image" msgstr "" #: ../libvips/conversion/ifthenelse.c:480 msgid "Condition" msgstr "" #: ../libvips/conversion/ifthenelse.c:481 msgid "Condition input image" msgstr "" #: ../libvips/conversion/ifthenelse.c:486 msgid "Then image" msgstr "" #: ../libvips/conversion/ifthenelse.c:487 msgid "Source for TRUE pixels" msgstr "" #: ../libvips/conversion/ifthenelse.c:492 msgid "Else image" msgstr "" #: ../libvips/conversion/ifthenelse.c:493 msgid "Source for FALSE pixels" msgstr "" #: ../libvips/conversion/ifthenelse.c:498 msgid "blend" msgstr "" #: ../libvips/conversion/ifthenelse.c:499 msgid "Blend smoothly between then and else parts" msgstr "" #: ../libvips/conversion/tilecache.c:427 ../libvips/conversion/tilecache.c:999 #: ../libvips/foreign/foreign.c:981 msgid "Access" msgstr "" #: ../libvips/conversion/tilecache.c:428 #: ../libvips/conversion/tilecache.c:1000 #: ../libvips/conversion/sequential.c:342 msgid "Expected access pattern" msgstr "" #: ../libvips/conversion/tilecache.c:434 msgid "Threaded" msgstr "" #: ../libvips/conversion/tilecache.c:435 msgid "Allow threaded access" msgstr "" #: ../libvips/conversion/tilecache.c:441 msgid "Persistent" msgstr "" #: ../libvips/conversion/tilecache.c:442 msgid "Keep cache between evaluations" msgstr "" #: ../libvips/conversion/tilecache.c:703 #, c-format msgid "error reading tile %dx%d: %s" msgstr "" #: ../libvips/conversion/tilecache.c:795 msgid "cache an image as a set of tiles" msgstr "" #: ../libvips/conversion/tilecache.c:995 msgid "cache an image as a set of lines" msgstr "" #: ../libvips/conversion/flip.c:236 msgid "flip an image" msgstr "" #: ../libvips/conversion/flip.c:246 ../libvips/mosaicing/merge.c:127 #: ../libvips/mosaicing/mosaic1.c:507 ../libvips/mosaicing/mosaic.c:198 msgid "Direction" msgstr "" #: ../libvips/conversion/flip.c:247 msgid "Direction to flip image" msgstr "" #: ../libvips/conversion/bandjoin.c:168 msgid "bandwise join a set of images" msgstr "" #: ../libvips/conversion/bandjoin.c:387 msgid "append a constant band to an image" msgstr "" #: ../libvips/conversion/bandjoin.c:399 msgid "Constants" msgstr "" #: ../libvips/conversion/bandjoin.c:400 msgid "Array of constants to add" msgstr "" #: ../libvips/conversion/copy.c:181 msgid "copy swap is deprecated, use byteswap instead" msgstr "" #: ../libvips/conversion/copy.c:235 msgid "must not change pel size" msgstr "" #: ../libvips/conversion/copy.c:260 msgid "copy an image" msgstr "" #: ../libvips/conversion/copy.c:277 msgid "Swap" msgstr "" #: ../libvips/conversion/copy.c:278 msgid "Swap bytes in image between little and big-endian" msgstr "" #: ../libvips/conversion/copy.c:285 ../libvips/conversion/embed.c:584 #: ../libvips/create/black.c:130 ../libvips/create/gaussnoise.c:154 #: ../libvips/create/xyz.c:194 ../libvips/create/point.c:144 #: ../libvips/create/fractsurf.c:103 ../libvips/foreign/rawload.c:124 #: ../libvips/iofuncs/image.c:1119 msgid "Image width in pixels" msgstr "" #: ../libvips/conversion/copy.c:292 ../libvips/conversion/embed.c:591 #: ../libvips/create/black.c:137 ../libvips/create/gaussnoise.c:161 #: ../libvips/create/xyz.c:201 ../libvips/create/point.c:151 #: ../libvips/create/fractsurf.c:110 ../libvips/foreign/rawload.c:131 #: ../libvips/iofuncs/image.c:1126 msgid "Image height in pixels" msgstr "" #: ../libvips/conversion/copy.c:298 ../libvips/create/black.c:143 #: ../libvips/create/identity.c:144 ../libvips/foreign/rawload.c:137 #: ../libvips/iofuncs/image.c:1132 msgid "Bands" msgstr "" #: ../libvips/conversion/copy.c:299 ../libvips/create/black.c:144 #: ../libvips/foreign/rawload.c:138 ../libvips/iofuncs/image.c:1133 msgid "Number of bands in image" msgstr "" #: ../libvips/conversion/copy.c:305 ../libvips/conversion/cast.c:542 #: ../libvips/iofuncs/image.c:1139 msgid "Format" msgstr "" #: ../libvips/conversion/copy.c:306 ../libvips/iofuncs/image.c:1140 msgid "Pixel format in image" msgstr "" #: ../libvips/conversion/copy.c:312 ../libvips/iofuncs/image.c:1146 msgid "Coding" msgstr "" #: ../libvips/conversion/copy.c:313 ../libvips/iofuncs/image.c:1147 msgid "Pixel coding" msgstr "" #: ../libvips/conversion/copy.c:319 ../libvips/iofuncs/image.c:1153 msgid "Interpretation" msgstr "" #: ../libvips/conversion/copy.c:320 ../libvips/iofuncs/image.c:1154 msgid "Pixel interpretation" msgstr "" #: ../libvips/conversion/copy.c:326 ../libvips/foreign/tiffsave.c:249 #: ../libvips/iofuncs/image.c:1160 msgid "Xres" msgstr "" #: ../libvips/conversion/copy.c:327 ../libvips/foreign/tiffsave.c:250 #: ../libvips/iofuncs/image.c:1161 msgid "Horizontal resolution in pixels/mm" msgstr "" #: ../libvips/conversion/copy.c:333 ../libvips/foreign/tiffsave.c:256 #: ../libvips/iofuncs/image.c:1167 msgid "Yres" msgstr "" #: ../libvips/conversion/copy.c:334 ../libvips/foreign/tiffsave.c:257 #: ../libvips/iofuncs/image.c:1168 msgid "Vertical resolution in pixels/mm" msgstr "" #: ../libvips/conversion/copy.c:340 ../libvips/iofuncs/image.c:1174 msgid "Xoffset" msgstr "" #: ../libvips/conversion/copy.c:341 ../libvips/iofuncs/image.c:1175 msgid "Horizontal offset of origin" msgstr "" #: ../libvips/conversion/copy.c:347 ../libvips/iofuncs/image.c:1181 msgid "Yoffset" msgstr "" #: ../libvips/conversion/copy.c:348 ../libvips/iofuncs/image.c:1182 msgid "Vertical offset of origin" msgstr "" #: ../libvips/conversion/cast.c:131 #, c-format msgid "%d underflows and %d overflows detected" msgstr "" #: ../libvips/conversion/cast.c:530 msgid "cast an image" msgstr "" #: ../libvips/conversion/cast.c:543 msgid "Format to cast to" msgstr "" #: ../libvips/conversion/cast.c:549 msgid "Shift" msgstr "" #: ../libvips/conversion/cast.c:550 msgid "Shift integer values up and down" msgstr "" #: ../libvips/conversion/sequential.c:317 msgid "check sequential access" msgstr "" #: ../libvips/conversion/sequential.c:327 msgid "trace" msgstr "" #: ../libvips/conversion/sequential.c:328 msgid "trace pixel requests" msgstr "" #: ../libvips/conversion/sequential.c:341 msgid "Strategy" msgstr "" #: ../libvips/conversion/embed.c:474 ../libvips/iofuncs/image.c:2771 msgid "bad dimensions" msgstr "" #: ../libvips/conversion/embed.c:557 msgid "embed an image in a larger image" msgstr "" #: ../libvips/conversion/embed.c:597 msgid "Extend" msgstr "" #: ../libvips/conversion/embed.c:598 msgid "How to generate the extra pixels" msgstr "" #: ../libvips/conversion/embed.c:605 msgid "Color for background pixels" msgstr "" #: ../libvips/conversion/insert.c:509 msgid "insert image @sub into @main at @x, @y" msgstr "" #: ../libvips/conversion/insert.c:517 msgid "Main" msgstr "" #: ../libvips/conversion/insert.c:518 msgid "Main input image" msgstr "" #: ../libvips/conversion/insert.c:523 ../libvips/draw/draw_image.c:259 msgid "Sub-image" msgstr "" #: ../libvips/conversion/insert.c:524 ../libvips/draw/draw_image.c:260 msgid "Sub-image to insert into main image" msgstr "" #: ../libvips/conversion/insert.c:529 msgid "X" msgstr "" #: ../libvips/conversion/insert.c:530 msgid "Left edge of sub in main" msgstr "" #: ../libvips/conversion/insert.c:536 msgid "Y" msgstr "" #: ../libvips/conversion/insert.c:537 msgid "Top edge of sub in main" msgstr "" #: ../libvips/conversion/insert.c:551 msgid "Color for new pixels" msgstr "" #: ../libvips/conversion/msb.c:166 msgid "bad band" msgstr "" #: ../libvips/conversion/msb.c:238 msgid "pick most-significant byte from an image" msgstr "" #: ../libvips/conversion/msb.c:251 msgid "Band to msb" msgstr "" #: ../libvips/conversion/bandrank.c:238 msgid "band-wise rank of a set of images" msgstr "" #: ../libvips/conversion/bandrank.c:252 msgid "Select this band element from sorted list" msgstr "" #: ../libvips/conversion/bandmean.c:192 msgid "band-wise average" msgstr "" #: ../libvips/conversion/scale.c:147 msgid "scale an image to uchar" msgstr "" #: ../libvips/conversion/scale.c:157 ../libvips/iofuncs/system.c:293 msgid "Log" msgstr "" #: ../libvips/conversion/scale.c:158 msgid "Log scale" msgstr "" #: ../libvips/conversion/scale.c:164 msgid "Exponent" msgstr "" #: ../libvips/conversion/scale.c:165 msgid "Exponent for log scale" msgstr "" #: ../libvips/convolution/im_aconv.c:224 ../libvips/convolution/im_aconv.c:230 #: ../libvips/convolution/im_aconv.c:751 #: ../libvips/convolution/im_aconvsep.c:131 msgid "mask too complex" msgstr "" #: ../libvips/convolution/im_aconv.c:981 #: ../libvips/convolution/im_aconv.c:1202 #: ../libvips/convolution/im_conv.c:1054 #: ../libvips/convolution/im_aconvsep.c:799 #: ../libvips/convolution/im_conv_f.c:339 ../libvips/morphology/hitmiss.c:732 msgid "image too small for mask" msgstr "" #: ../libvips/convolution/fastcor.c:215 msgid "fast correlation" msgstr "" #: ../libvips/convolution/convsep.c:103 msgid "seperable convolution operation" msgstr "" #: ../libvips/convolution/convsep.c:107 ../libvips/convolution/gaussblur.c:143 #: ../libvips/convolution/compass.c:171 ../libvips/convolution/conv.c:139 #: ../libvips/create/logmat.c:229 ../libvips/create/gaussmat.c:205 msgid "Precision" msgstr "" #: ../libvips/convolution/convsep.c:108 ../libvips/convolution/gaussblur.c:144 #: ../libvips/convolution/compass.c:172 ../libvips/convolution/conv.c:140 msgid "Convolve with this precision" msgstr "" #: ../libvips/convolution/convsep.c:114 ../libvips/convolution/compass.c:178 #: ../libvips/convolution/conv.c:146 msgid "Layers" msgstr "" #: ../libvips/convolution/convsep.c:115 ../libvips/convolution/compass.c:179 #: ../libvips/convolution/conv.c:147 msgid "Use this many layers in approximation" msgstr "" #: ../libvips/convolution/convsep.c:121 ../libvips/convolution/compass.c:185 #: ../libvips/convolution/conv.c:153 msgid "Cluster" msgstr "" #: ../libvips/convolution/convsep.c:122 ../libvips/convolution/compass.c:186 #: ../libvips/convolution/conv.c:154 msgid "Cluster lines closer than this in approximation" msgstr "" #: ../libvips/convolution/gaussblur.c:111 msgid "gaussian blur" msgstr "" #: ../libvips/convolution/gaussblur.c:129 ../libvips/create/gaussnoise.c:174 #: ../libvips/create/gaussmat.c:177 msgid "Sigma" msgstr "" #: ../libvips/convolution/gaussblur.c:130 ../libvips/create/gaussmat.c:178 msgid "Sigma of Gaussian" msgstr "" #: ../libvips/convolution/gaussblur.c:136 ../libvips/create/gaussmat.c:184 msgid "Minimum amplitude" msgstr "" #: ../libvips/convolution/gaussblur.c:137 ../libvips/create/gaussmat.c:185 msgid "Minimum amplitude of Gaussian" msgstr "" #: ../libvips/convolution/im_conv.c:221 ../libvips/histogram/maplut.c:113 #, c-format msgid "%d overflows detected" msgstr "" #: ../libvips/convolution/im_conv.c:224 #, c-format msgid "%d underflows detected" msgstr "" #: ../libvips/convolution/correlation.c:142 msgid "correlation operation" msgstr "" #: ../libvips/convolution/correlation.c:154 #: ../libvips/convolution/convolution.c:141 ../libvips/draw/draw_mask.c:323 #: ../libvips/morphology/labelregions.c:125 ../libvips/morphology/morph.c:146 msgid "Mask" msgstr "" #: ../libvips/convolution/correlation.c:155 msgid "Input reference image" msgstr "" #: ../libvips/convolution/compass.c:146 msgid "convolve with rotating mask" msgstr "" #: ../libvips/convolution/compass.c:150 msgid "Times" msgstr "" #: ../libvips/convolution/compass.c:151 msgid "Rotate and convolve this many times" msgstr "" #: ../libvips/convolution/compass.c:158 msgid "Rotate mask by this much between convolutions" msgstr "" #: ../libvips/convolution/compass.c:164 msgid "Combine" msgstr "" #: ../libvips/convolution/compass.c:165 msgid "Combine convolution results like this" msgstr "" #: ../libvips/convolution/sharpen.c:312 msgid "unsharp masking for print" msgstr "" #: ../libvips/convolution/sharpen.c:330 ../libvips/create/logmat.c:201 #: ../libvips/draw/draw_circle.c:249 msgid "Radius" msgstr "" #: ../libvips/convolution/sharpen.c:331 msgid "Mask radius" msgstr "" #: ../libvips/convolution/sharpen.c:337 ../libvips/draw/draw_line.c:284 msgid "x1" msgstr "" #: ../libvips/convolution/sharpen.c:338 msgid "Flat/jaggy threshold" msgstr "" #: ../libvips/convolution/sharpen.c:344 ../libvips/draw/draw_line.c:305 msgid "y2" msgstr "" #: ../libvips/convolution/sharpen.c:345 msgid "Maximum brightening" msgstr "" #: ../libvips/convolution/sharpen.c:351 msgid "y3" msgstr "" #: ../libvips/convolution/sharpen.c:352 msgid "Maximum darkening" msgstr "" #: ../libvips/convolution/sharpen.c:358 msgid "m1" msgstr "" #: ../libvips/convolution/sharpen.c:359 msgid "Slope for flat areas" msgstr "" #: ../libvips/convolution/sharpen.c:365 msgid "m2" msgstr "" #: ../libvips/convolution/sharpen.c:366 msgid "Slope for jaggy areas" msgstr "" #: ../libvips/convolution/spcor.c:315 msgid "spatial correlation" msgstr "" #: ../libvips/convolution/conv.c:135 msgid "convolution operation" msgstr "" #: ../libvips/convolution/convolution.c:120 msgid "convolution operations" msgstr "" #: ../libvips/convolution/convolution.c:142 ../libvips/morphology/morph.c:147 msgid "Input matrix image" msgstr "" #: ../libvips/create/mask.c:111 msgid "base class for frequency filters" msgstr "" #: ../libvips/create/mask.c:119 msgid "Optical" msgstr "" #: ../libvips/create/mask.c:120 msgid "Rotate quadrants to optical space" msgstr "" #: ../libvips/create/mask.c:126 msgid "Reject" msgstr "" #: ../libvips/create/mask.c:127 msgid "Invert the sense of the filter" msgstr "" #: ../libvips/create/mask.c:133 msgid "Nodc" msgstr "" #: ../libvips/create/mask.c:134 msgid "Remove DC component" msgstr "" #: ../libvips/create/zone.c:90 msgid "make a zone plate" msgstr "" #: ../libvips/create/invertlut.c:124 msgid "bad input matrix" msgstr "" #: ../libvips/create/invertlut.c:129 msgid "bad size" msgstr "" #: ../libvips/create/invertlut.c:149 #, c-format msgid "element (%d, %d) is %g, outside range [0,1]" msgstr "" #: ../libvips/create/invertlut.c:285 msgid "build an inverted look-up table" msgstr "" #: ../libvips/create/invertlut.c:290 ../libvips/create/buildlut.c:262 msgid "Matrix of XY coordinates" msgstr "" #: ../libvips/create/invertlut.c:296 msgid "LUT size to generate" msgstr "" #: ../libvips/create/mask_gaussian.c:81 #: ../libvips/create/mask_gaussian_band.c:102 msgid "make a gaussian filter" msgstr "" #: ../libvips/create/mask_gaussian.c:86 ../libvips/create/mask_gaussian.c:87 #: ../libvips/create/mask_ideal.c:84 ../libvips/create/mask_ideal.c:85 #: ../libvips/create/mask_butterworth.c:95 #: ../libvips/create/mask_butterworth.c:96 msgid "Frequency cutoff" msgstr "" #: ../libvips/create/mask_gaussian.c:93 ../libvips/create/mask_gaussian.c:94 #: ../libvips/create/mask_butterworth_band.c:141 #: ../libvips/create/mask_butterworth_band.c:142 #: ../libvips/create/mask_gaussian_band.c:128 #: ../libvips/create/mask_gaussian_band.c:129 #: ../libvips/create/mask_butterworth.c:102 #: ../libvips/create/mask_butterworth.c:103 msgid "Amplitude cutoff" msgstr "" #: ../libvips/create/mask_butterworth_band.c:108 msgid "make a butterworth_band filter" msgstr "" #: ../libvips/create/mask_butterworth_band.c:113 #: ../libvips/create/mask_butterworth.c:88 msgid "Order" msgstr "" #: ../libvips/create/mask_butterworth_band.c:114 #: ../libvips/create/mask_butterworth.c:89 msgid "Filter order" msgstr "" #: ../libvips/create/mask_butterworth_band.c:120 #: ../libvips/create/mask_butterworth_band.c:121 #: ../libvips/create/mask_gaussian_band.c:107 #: ../libvips/create/mask_gaussian_band.c:108 #: ../libvips/create/mask_ideal_band.c:98 #: ../libvips/create/mask_ideal_band.c:99 msgid "Frequency cutoff x" msgstr "" #: ../libvips/create/mask_butterworth_band.c:127 #: ../libvips/create/mask_butterworth_band.c:128 #: ../libvips/create/mask_gaussian_band.c:114 #: ../libvips/create/mask_gaussian_band.c:115 #: ../libvips/create/mask_ideal_band.c:105 #: ../libvips/create/mask_ideal_band.c:106 msgid "Frequency cutoff y" msgstr "" #: ../libvips/create/mask_butterworth_band.c:134 #: ../libvips/create/mask_gaussian_band.c:121 #: ../libvips/create/mask_ideal_band.c:112 msgid "radius" msgstr "" #: ../libvips/create/mask_butterworth_band.c:135 #: ../libvips/create/mask_gaussian_band.c:122 #: ../libvips/create/mask_ideal_band.c:113 msgid "radius of circle" msgstr "" #: ../libvips/create/sines.c:121 msgid "make a 2D sine wave" msgstr "" #: ../libvips/create/sines.c:127 msgid "hfreq" msgstr "" #: ../libvips/create/sines.c:128 msgid "Horizontal spatial frequency" msgstr "" #: ../libvips/create/sines.c:134 msgid "vfreq" msgstr "" #: ../libvips/create/sines.c:135 msgid "Vertical spatial frequency" msgstr "" #: ../libvips/create/black.c:125 msgid "make a black image" msgstr "" #: ../libvips/create/mask_ideal_ring.c:93 msgid "make an ideal ring filter" msgstr "" #: ../libvips/create/mask_ideal_ring.c:98 #: ../libvips/create/mask_ideal_ring.c:99 #: ../libvips/create/mask_butterworth_ring.c:106 #: ../libvips/create/mask_butterworth_ring.c:107 #: ../libvips/create/mask_gaussian_ring.c:101 #: ../libvips/create/mask_gaussian_ring.c:102 msgid "Ringwidth" msgstr "" #: ../libvips/create/gaussnoise.c:145 msgid "make a gaussnoise image" msgstr "" #: ../libvips/create/gaussnoise.c:167 ../libvips/histogram/stdif.c:327 msgid "Mean" msgstr "" #: ../libvips/create/gaussnoise.c:168 msgid "Mean of pixels in generated image" msgstr "" #: ../libvips/create/gaussnoise.c:175 msgid "Standard deviation of pixels in generated image" msgstr "" #: ../libvips/create/logmat.c:147 ../libvips/create/gaussmat.c:126 msgid "mask too large" msgstr "" #: ../libvips/create/logmat.c:197 msgid "make a laplacian of gaussian image" msgstr "" #: ../libvips/create/logmat.c:202 msgid "Radius of Logmatian" msgstr "" #: ../libvips/create/logmat.c:209 msgid "Minimum amplitude of Logmatian" msgstr "" #: ../libvips/create/logmat.c:215 ../libvips/create/gaussmat.c:191 msgid "Separable" msgstr "" #: ../libvips/create/logmat.c:216 msgid "Generate separable Logmatian" msgstr "" #: ../libvips/create/logmat.c:222 ../libvips/create/gaussmat.c:198 msgid "Integer" msgstr "" #: ../libvips/create/logmat.c:223 msgid "Generate integer Logmatian" msgstr "" #: ../libvips/create/logmat.c:230 ../libvips/create/gaussmat.c:206 msgid "Generate with this precision" msgstr "" #: ../libvips/create/tonelut.c:221 ../libvips/create/buildlut.c:257 msgid "build a look-up table" msgstr "" #: ../libvips/create/tonelut.c:225 msgid "In-max" msgstr "" #: ../libvips/create/tonelut.c:226 msgid "Size of LUT to build" msgstr "" #: ../libvips/create/tonelut.c:232 msgid "Out-max" msgstr "" #: ../libvips/create/tonelut.c:233 msgid "Maximum value in output LUT" msgstr "" #: ../libvips/create/tonelut.c:239 msgid "Black point" msgstr "" #: ../libvips/create/tonelut.c:240 msgid "Lowest value in output" msgstr "" #: ../libvips/create/tonelut.c:246 msgid "White point" msgstr "" #: ../libvips/create/tonelut.c:247 msgid "Highest value in output" msgstr "" #: ../libvips/create/tonelut.c:253 msgid "Shadow point" msgstr "" #: ../libvips/create/tonelut.c:254 msgid "Position of shadow" msgstr "" #: ../libvips/create/tonelut.c:260 msgid "Mid-tone point" msgstr "" #: ../libvips/create/tonelut.c:261 msgid "Position of mid-tones" msgstr "" #: ../libvips/create/tonelut.c:267 msgid "Highlight point" msgstr "" #: ../libvips/create/tonelut.c:268 msgid "Position of highlights" msgstr "" #: ../libvips/create/tonelut.c:274 msgid "Shadow adjust" msgstr "" #: ../libvips/create/tonelut.c:275 msgid "Adjust shadows by this much" msgstr "" #: ../libvips/create/tonelut.c:281 msgid "Mid-tone adjust" msgstr "" #: ../libvips/create/tonelut.c:282 msgid "Adjust mid-tones by this much" msgstr "" #: ../libvips/create/tonelut.c:288 msgid "Highlight adjust" msgstr "" #: ../libvips/create/tonelut.c:289 msgid "Adjust highlights by this much" msgstr "" #: ../libvips/create/mask_ideal.c:79 msgid "make an ideal filter" msgstr "" #: ../libvips/create/mask_butterworth_ring.c:101 msgid "make a butterworth ring filter" msgstr "" #: ../libvips/create/create.c:97 msgid "create operations" msgstr "" #: ../libvips/create/identity.c:140 msgid "make a 1D image where pixel values are indexes" msgstr "" #: ../libvips/create/identity.c:145 msgid "Number of bands in LUT" msgstr "" #: ../libvips/create/identity.c:151 msgid "Ushort" msgstr "" #: ../libvips/create/identity.c:152 msgid "Create a 16-bit LUT" msgstr "" #: ../libvips/create/identity.c:159 msgid "Size of 16-bit LUT" msgstr "" #: ../libvips/create/eye.c:98 msgid "make an image showing the eye's spatial response" msgstr "" #: ../libvips/create/eye.c:103 msgid "Factor" msgstr "" #: ../libvips/create/eye.c:104 msgid "Maximum spatial frequency" msgstr "" #: ../libvips/create/text.c:170 msgid "invalid markup in text" msgstr "" #: ../libvips/create/text.c:212 msgid "no text to render" msgstr "" #: ../libvips/create/text.c:279 msgid "make a text image" msgstr "" #: ../libvips/create/text.c:283 msgid "Text" msgstr "" #: ../libvips/create/text.c:284 msgid "Text to render" msgstr "" #: ../libvips/create/text.c:290 msgid "Font" msgstr "" #: ../libvips/create/text.c:291 msgid "Font to render with" msgstr "" #: ../libvips/create/text.c:298 msgid "Maximum image width in pixels" msgstr "" #: ../libvips/create/text.c:305 msgid "Align on the low, centre or high edge" msgstr "" #: ../libvips/create/text.c:311 msgid "DPI" msgstr "" #: ../libvips/create/text.c:312 msgid "DPI to render at" msgstr "" #: ../libvips/create/text.c:318 msgid "Spacing" msgstr "" #: ../libvips/create/text.c:319 msgid "Line spacing" msgstr "" #: ../libvips/create/gaussmat.c:173 msgid "make a gaussian image" msgstr "" #: ../libvips/create/gaussmat.c:192 msgid "Generate separable Gaussian" msgstr "" #: ../libvips/create/gaussmat.c:199 msgid "Generate integer Gaussian" msgstr "" #: ../libvips/create/xyz.c:139 msgid "lower dimensions not set" msgstr "" #: ../libvips/create/xyz.c:156 msgid "image too large" msgstr "" #: ../libvips/create/xyz.c:189 msgid "make an image where pixel values are coordinates" msgstr "" #: ../libvips/create/xyz.c:207 msgid "csize" msgstr "" #: ../libvips/create/xyz.c:208 msgid "Size of third dimension" msgstr "" #: ../libvips/create/xyz.c:214 msgid "dsize" msgstr "" #: ../libvips/create/xyz.c:215 msgid "Size of fourth dimension" msgstr "" #: ../libvips/create/xyz.c:221 msgid "esize" msgstr "" #: ../libvips/create/xyz.c:222 msgid "Size of fifth dimension" msgstr "" #: ../libvips/create/mask_butterworth.c:83 msgid "make a butterworth filter" msgstr "" #: ../libvips/create/mask_gaussian_ring.c:96 msgid "make a gaussian ring filter" msgstr "" #: ../libvips/create/mask_fractal.c:88 msgid "make fractal filter" msgstr "" #: ../libvips/create/mask_fractal.c:93 ../libvips/create/mask_fractal.c:94 #: ../libvips/create/fractsurf.c:116 ../libvips/create/fractsurf.c:117 msgid "Fractal dimension" msgstr "" #: ../libvips/create/point.c:134 msgid "make a point image" msgstr "" #: ../libvips/create/point.c:157 msgid "Uchar" msgstr "" #: ../libvips/create/point.c:158 msgid "Output an unsigned char image" msgstr "" #: ../libvips/create/mask_ideal_band.c:93 msgid "make an ideal band filter" msgstr "" #: ../libvips/create/grey.c:89 msgid "make a grey ramp image" msgstr "" #: ../libvips/create/fractsurf.c:98 msgid "make a fractal surface" msgstr "" #: ../libvips/create/buildlut.c:134 #, c-format msgid "x value row %d not an int" msgstr "" #: ../libvips/create/buildlut.c:149 msgid "x range too small" msgstr "" #: ../libvips/draw/draw_smudge.c:193 msgid "blur a rectangle on an image" msgstr "" #: ../libvips/draw/draw_smudge.c:198 ../libvips/draw/draw_smudge.c:205 #: ../libvips/draw/draw_smudge.c:212 ../libvips/draw/draw_smudge.c:219 #: ../libvips/draw/draw_rect.c:174 ../libvips/draw/draw_rect.c:181 #: ../libvips/draw/draw_rect.c:188 ../libvips/draw/draw_rect.c:195 msgid "Rect to fill" msgstr "" #: ../libvips/draw/draw_smudge.c:204 ../libvips/draw/draw_rect.c:180 msgid "top" msgstr "" #: ../libvips/draw/draw_smudge.c:211 ../libvips/draw/draw_rect.c:187 msgid "width" msgstr "" #: ../libvips/draw/draw_smudge.c:218 ../libvips/draw/draw_rect.c:194 msgid "height" msgstr "" #: ../libvips/draw/draw_line.c:280 msgid "draw a line on an image" msgstr "" #: ../libvips/draw/draw_line.c:285 ../libvips/draw/draw_line.c:292 msgid "Start of draw_line" msgstr "" #: ../libvips/draw/draw_line.c:291 msgid "y1" msgstr "" #: ../libvips/draw/draw_line.c:298 msgid "x2" msgstr "" #: ../libvips/draw/draw_line.c:299 ../libvips/draw/draw_line.c:306 msgid "End of draw_line" msgstr "" #: ../libvips/draw/draw_image.c:255 msgid "paint an image into another image" msgstr "" #: ../libvips/draw/draw_image.c:266 ../libvips/draw/draw_image.c:273 msgid "Draw image here" msgstr "" #: ../libvips/draw/draw_image.c:279 ../libvips/iofuncs/image.c:1195 msgid "Mode" msgstr "" #: ../libvips/draw/draw_image.c:280 msgid "Combining mode" msgstr "" #: ../libvips/draw/draw_circle.c:231 msgid "draw a circle on an image" msgstr "" #: ../libvips/draw/draw_circle.c:235 msgid "cx" msgstr "" #: ../libvips/draw/draw_circle.c:236 ../libvips/draw/draw_circle.c:243 msgid "Centre of draw_circle" msgstr "" #: ../libvips/draw/draw_circle.c:242 msgid "cy" msgstr "" #: ../libvips/draw/draw_circle.c:250 msgid "Radius in pixels" msgstr "" #: ../libvips/draw/draw_circle.c:256 ../libvips/draw/draw_rect.c:201 msgid "Fill" msgstr "" #: ../libvips/draw/draw_circle.c:257 ../libvips/draw/draw_rect.c:202 msgid "Draw a solid object" msgstr "" #: ../libvips/draw/drawink.c:86 msgid "draw with ink operations" msgstr "" #: ../libvips/draw/drawink.c:90 msgid "Ink" msgstr "" #: ../libvips/draw/drawink.c:91 msgid "Color for pixels" msgstr "" #: ../libvips/draw/draw_flood.c:548 msgid "flood-fill an area" msgstr "" #: ../libvips/draw/draw_flood.c:553 ../libvips/draw/draw_flood.c:560 msgid "DrawFlood start point" msgstr "" #: ../libvips/draw/draw_flood.c:566 msgid "Test" msgstr "" #: ../libvips/draw/draw_flood.c:567 msgid "Test pixels in this image" msgstr "" #: ../libvips/draw/draw_flood.c:572 msgid "Equal" msgstr "" #: ../libvips/draw/draw_flood.c:573 msgid "DrawFlood while equal to edge" msgstr "" #: ../libvips/draw/draw_flood.c:580 msgid "Left edge of modified area" msgstr "" #: ../libvips/draw/draw_flood.c:587 msgid "top edge of modified area" msgstr "" #: ../libvips/draw/draw_flood.c:594 msgid "width of modified area" msgstr "" #: ../libvips/draw/draw_flood.c:601 msgid "height of modified area" msgstr "" #: ../libvips/draw/draw.c:112 msgid "draw operations" msgstr "" #: ../libvips/draw/draw.c:116 msgid "Image" msgstr "" #: ../libvips/draw/draw.c:117 msgid "Image to draw on" msgstr "" #: ../libvips/draw/draw_rect.c:169 msgid "paint a rectangle on an image" msgstr "" #: ../libvips/draw/draw_mask.c:319 msgid "draw a mask on an image" msgstr "" #: ../libvips/draw/draw_mask.c:324 msgid "Mask of pixels to draw" msgstr "" #: ../libvips/draw/draw_mask.c:330 ../libvips/draw/draw_mask.c:337 msgid "Draw mask here" msgstr "" #: ../libvips/foreign/jpeg2vips.c:190 #, c-format msgid "read gave %ld warnings" msgstr "" #: ../libvips/foreign/jpeg2vips.c:553 msgid "error reading resolution" msgstr "" #: ../libvips/foreign/jpeg2vips.c:590 ../libvips/foreign/vips2jpeg.c:497 msgid "unknown EXIF resolution unit" msgstr "" #: ../libvips/foreign/jpeg2vips.c:781 msgid "unknown JFIF resolution unit" msgstr "" #: ../libvips/foreign/jpeg2vips.c:953 ../libvips/foreign/vipspng.c:500 #, c-format msgid "out of order read at line %d" msgstr "" #: ../libvips/foreign/radiance.c:672 msgid "end of file" msgstr "" #: ../libvips/foreign/radiance.c:752 msgid "scanline length mismatch" msgstr "" #: ../libvips/foreign/radiance.c:769 msgid "overrun" msgstr "" #: ../libvips/foreign/radiance.c:1005 msgid "error reading radiance header" msgstr "" #: ../libvips/foreign/radiance.c:1082 #, c-format msgid "read error line %d" msgstr "" #: ../libvips/foreign/vips2jpeg.c:151 #, c-format msgid "%s" msgstr "" #: ../libvips/foreign/vips2jpeg.c:605 ../libvips/foreign/vips2jpeg.c:615 #: ../libvips/foreign/vips2jpeg.c:620 #, c-format msgid "bad exif meta \"%s\"" msgstr "" #: ../libvips/foreign/vips2jpeg.c:660 #, c-format msgid "field \"%s\" is too large for a single JPEG marker, ignoring" msgstr "" #: ../libvips/foreign/vips2jpeg.c:733 msgid "error saving EXIF" msgstr "" #: ../libvips/foreign/vips2jpeg.c:972 msgid "trellis_quant unsupported" msgstr "" #: ../libvips/foreign/vips2jpeg.c:985 msgid "overshoot_deringing unsupported" msgstr "" #: ../libvips/foreign/vips2jpeg.c:999 ../libvips/foreign/vips2jpeg.c:1015 msgid "Ignoring optimize_scans" msgstr "" #: ../libvips/foreign/vips2jpeg.c:1003 msgid "Ignoring optimize_scans for baseline" msgstr "" #: ../libvips/foreign/vips2jpeg.c:1010 msgid "Ignoring trellis_quant" msgstr "" #: ../libvips/foreign/vips2jpeg.c:1013 msgid "Ignoring overshoot_deringing" msgstr "" #: ../libvips/foreign/openexrload.c:128 msgid "load an OpenEXR image" msgstr "" #: ../libvips/foreign/openexrload.c:144 ../libvips/foreign/vipssave.c:114 #: ../libvips/foreign/rawsave.c:145 ../libvips/foreign/csvsave.c:103 #: ../libvips/foreign/matrixload.c:153 ../libvips/foreign/radsave.c:120 #: ../libvips/foreign/rawload.c:116 ../libvips/foreign/webpsave.c:166 #: ../libvips/foreign/csvload.c:139 ../libvips/foreign/jpegload.c:254 #: ../libvips/foreign/magickload.c:196 ../libvips/foreign/webpload.c:176 #: ../libvips/foreign/matload.c:138 ../libvips/foreign/jpegsave.c:253 #: ../libvips/foreign/dzsave.c:1922 ../libvips/foreign/ppmsave.c:121 #: ../libvips/foreign/tiffsave.c:163 ../libvips/foreign/matrixsave.c:121 #: ../libvips/foreign/fitssave.c:138 ../libvips/foreign/pngload.c:144 #: ../libvips/foreign/fitsload.c:123 ../libvips/foreign/vipsload.c:138 #: ../libvips/foreign/tiffload.c:196 ../libvips/foreign/analyzeload.c:133 #: ../libvips/foreign/openslideload.c:185 ../libvips/foreign/pngsave.c:188 #: ../libvips/foreign/radload.c:136 ../libvips/foreign/ppmload.c:133 #: ../libvips/iofuncs/image.c:1188 msgid "Filename" msgstr "" #: ../libvips/foreign/openexrload.c:145 ../libvips/foreign/matrixload.c:154 #: ../libvips/foreign/rawload.c:117 ../libvips/foreign/csvload.c:140 #: ../libvips/foreign/jpegload.c:255 ../libvips/foreign/magickload.c:197 #: ../libvips/foreign/webpload.c:177 ../libvips/foreign/matload.c:139 #: ../libvips/foreign/pngload.c:145 ../libvips/foreign/fitsload.c:124 #: ../libvips/foreign/vipsload.c:139 ../libvips/foreign/tiffload.c:197 #: ../libvips/foreign/analyzeload.c:134 ../libvips/foreign/openslideload.c:186 #: ../libvips/foreign/radload.c:137 ../libvips/foreign/ppmload.c:134 msgid "Filename to load from" msgstr "" #: ../libvips/foreign/vipssave.c:104 msgid "save image to vips file" msgstr "" #: ../libvips/foreign/vipssave.c:115 ../libvips/foreign/rawsave.c:146 #: ../libvips/foreign/csvsave.c:104 ../libvips/foreign/radsave.c:121 #: ../libvips/foreign/webpsave.c:167 ../libvips/foreign/jpegsave.c:254 #: ../libvips/foreign/dzsave.c:1923 ../libvips/foreign/ppmsave.c:122 #: ../libvips/foreign/tiffsave.c:164 ../libvips/foreign/matrixsave.c:122 #: ../libvips/foreign/fitssave.c:139 ../libvips/foreign/pngsave.c:189 msgid "Filename to save to" msgstr "" #: ../libvips/foreign/rawsave.c:139 msgid "save image to raw file" msgstr "" #: ../libvips/foreign/rawsave.c:245 msgid "write raw image to file descriptor" msgstr "" #: ../libvips/foreign/rawsave.c:251 msgid "File descriptor" msgstr "" #: ../libvips/foreign/rawsave.c:252 msgid "File descriptor to write to" msgstr "" #: ../libvips/foreign/csvsave.c:95 msgid "save image to csv file" msgstr "" #: ../libvips/foreign/csvsave.c:110 ../libvips/foreign/csvload.c:167 msgid "Separator" msgstr "" #: ../libvips/foreign/csvsave.c:111 msgid "Separator characters" msgstr "" #: ../libvips/foreign/matrixload.c:137 msgid "load matrix from file" msgstr "" #: ../libvips/foreign/radsave.c:109 msgid "save image to Radiance file" msgstr "" #: ../libvips/foreign/rawload.c:108 msgid "load raw data from a file" msgstr "" #: ../libvips/foreign/rawload.c:144 ../libvips/iofuncs/image.c:1216 msgid "Size of header" msgstr "" #: ../libvips/foreign/rawload.c:145 ../libvips/iofuncs/image.c:1217 msgid "Offset in bytes from start of file" msgstr "" #: ../libvips/foreign/webpsave.c:91 msgid "save webp" msgstr "" #: ../libvips/foreign/webpsave.c:99 ../libvips/foreign/jpegsave.c:142 #: ../libvips/foreign/tiffsave.c:178 msgid "Q" msgstr "" #: ../libvips/foreign/webpsave.c:100 ../libvips/foreign/jpegsave.c:143 #: ../libvips/foreign/tiffsave.c:179 msgid "Q factor" msgstr "" #: ../libvips/foreign/webpsave.c:106 msgid "lossless" msgstr "" #: ../libvips/foreign/webpsave.c:107 msgid "enable lossless compression" msgstr "" #: ../libvips/foreign/webpsave.c:162 msgid "save image to webp file" msgstr "" #: ../libvips/foreign/webpsave.c:229 msgid "save image to webp buffer" msgstr "" #: ../libvips/foreign/webpsave.c:233 ../libvips/foreign/jpegload.c:333 #: ../libvips/foreign/magickload.c:277 ../libvips/foreign/webpload.c:250 #: ../libvips/foreign/jpegsave.c:322 ../libvips/foreign/pngload.c:212 #: ../libvips/foreign/tiffload.c:270 ../libvips/foreign/pngsave.c:250 msgid "Buffer" msgstr "" #: ../libvips/foreign/webpsave.c:234 ../libvips/foreign/jpegsave.c:323 #: ../libvips/foreign/pngsave.c:251 msgid "Buffer to save to" msgstr "" #: ../libvips/foreign/webpsave.c:276 ../libvips/foreign/jpegsave.c:367 msgid "error writing output" msgstr "" #: ../libvips/foreign/webpsave.c:292 msgid "save image to webp mime" msgstr "" #: ../libvips/foreign/vips2tiff.c:297 #, c-format msgid "unable to open \"%s\" for output" msgstr "" #: ../libvips/foreign/vips2tiff.c:313 ../libvips/foreign/tiff2vips.c:1804 #, c-format msgid "unable to open \"%s\" for input" msgstr "" #: ../libvips/foreign/vips2tiff.c:477 msgid "rounding up IPCT data length" msgstr "" #: ../libvips/foreign/vips2tiff.c:907 msgid "tile size not a multiple of 16" msgstr "" #: ../libvips/foreign/vips2tiff.c:918 msgid "can only pyramid LABQ and non-complex images" msgstr "" #: ../libvips/foreign/vips2tiff.c:931 ../libvips/foreign/ppm.c:812 msgid "can only squash 1 band uchar images -- disabling squash" msgstr "" #: ../libvips/foreign/vips2tiff.c:939 msgid "can't have 1-bit JPEG -- disabling JPEG" msgstr "" #: ../libvips/foreign/vips2tiff.c:950 msgid "" "can only save non-complex greyscale images as miniswhite -- disabling " "miniswhite" msgstr "" #: ../libvips/foreign/vips2tiff.c:1211 msgid "TIFF write tile failed" msgstr "" #: ../libvips/foreign/vips2webp.c:87 ../libvips/foreign/vips2webp.c:105 #: ../libvips/foreign/vips2webp.c:149 msgid "unable to encode" msgstr "" #: ../libvips/foreign/fits.c:181 ../libvips/foreign/matlab.c:111 #: ../libvips/foreign/webp2vips.c:201 ../libvips/foreign/webp2vips.c:256 #: ../libvips/iofuncs/vips.c:163 ../libvips/mosaicing/global_balance.c:1192 #: ../libvips/mosaicing/global_balance.c:1530 #, c-format msgid "unable to open \"%s\"" msgstr "" #: ../libvips/foreign/fits.c:244 msgid "dimensions above 3 must be size 1" msgstr "" #: ../libvips/foreign/fits.c:260 #, c-format msgid "bad number of axis %d" msgstr "" #: ../libvips/foreign/fits.c:276 #, c-format msgid "unsupported bitpix %d\n" msgstr "" #: ../libvips/foreign/fits.c:580 ../libvips/iofuncs/vips.c:191 #, c-format msgid "unable to write to \"%s\"" msgstr "" #: ../libvips/foreign/fits.c:641 #, c-format msgid "unsupported BandFmt %d\n" msgstr "" #: ../libvips/foreign/matlab.c:119 #, c-format msgid "no matrix variables in \"%s\"" msgstr "" #: ../libvips/foreign/matlab.c:201 #, c-format msgid "unsupported rank %d\n" msgstr "" #: ../libvips/foreign/matlab.c:209 #, c-format msgid "unsupported class type %d\n" msgstr "" #: ../libvips/foreign/matlab.c:258 msgid "Mat_VarReadDataAll failed" msgstr "" #: ../libvips/foreign/csvload.c:124 msgid "load csv from file" msgstr "" #: ../libvips/foreign/csvload.c:146 msgid "Skip" msgstr "" #: ../libvips/foreign/csvload.c:147 msgid "Skip this many lines at the start of the file" msgstr "" #: ../libvips/foreign/csvload.c:153 msgid "Lines" msgstr "" #: ../libvips/foreign/csvload.c:154 msgid "Read this many lines from the file" msgstr "" #: ../libvips/foreign/csvload.c:160 msgid "Whitespace" msgstr "" #: ../libvips/foreign/csvload.c:161 msgid "Set of whitespace characters" msgstr "" #: ../libvips/foreign/csvload.c:168 msgid "Set of separator characters" msgstr "" #: ../libvips/foreign/jpegload.c:113 #, c-format msgid "bad shrink factor %d" msgstr "" #: ../libvips/foreign/jpegload.c:135 msgid "load jpeg" msgstr "" #: ../libvips/foreign/jpegload.c:141 msgid "Shrink" msgstr "" #: ../libvips/foreign/jpegload.c:142 msgid "Shrink factor on load" msgstr "" #: ../libvips/foreign/jpegload.c:148 msgid "Fail" msgstr "" #: ../libvips/foreign/jpegload.c:149 msgid "Fail on first warning" msgstr "" #: ../libvips/foreign/jpegload.c:155 msgid "Autorotate" msgstr "" #: ../libvips/foreign/jpegload.c:156 msgid "Rotate image using exif orientation" msgstr "" #: ../libvips/foreign/jpegload.c:239 msgid "load jpeg from file" msgstr "" #: ../libvips/foreign/jpegload.c:326 msgid "load jpeg from buffer" msgstr "" #: ../libvips/foreign/jpegload.c:334 ../libvips/foreign/magickload.c:278 #: ../libvips/foreign/webpload.c:251 ../libvips/foreign/pngload.c:213 #: ../libvips/foreign/tiffload.c:271 msgid "Buffer to load from" msgstr "" #: ../libvips/foreign/magickload.c:96 msgid "load with ImageMagick" msgstr "" #: ../libvips/foreign/magickload.c:108 msgid "all_frames" msgstr "" #: ../libvips/foreign/magickload.c:109 msgid "Read all frames from an image" msgstr "" #: ../libvips/foreign/magickload.c:115 msgid "Density" msgstr "" #: ../libvips/foreign/magickload.c:116 msgid "Canvas resolution for rendering vector formats like SVG" msgstr "" #: ../libvips/foreign/magickload.c:189 msgid "load file with ImageMagick" msgstr "" #: ../libvips/foreign/magickload.c:270 msgid "load buffer with ImageMagick" msgstr "" #: ../libvips/foreign/webpload.c:89 msgid "load webp" msgstr "" #: ../libvips/foreign/webpload.c:165 msgid "load webp from file" msgstr "" #: ../libvips/foreign/webpload.c:239 msgid "load webp from buffer" msgstr "" #: ../libvips/foreign/matload.c:121 msgid "load mat from file" msgstr "" #: ../libvips/foreign/tiff2vips.c:329 ../libvips/foreign/tiff2vips.c:347 #, c-format msgid "required field %d missing" msgstr "" #: ../libvips/foreign/tiff2vips.c:361 #, c-format msgid "not %d bands" msgstr "" #: ../libvips/foreign/tiff2vips.c:375 #, c-format msgid "not at least %d samples per pixel" msgstr "" #: ../libvips/foreign/tiff2vips.c:388 #, c-format msgid "not photometric interpretation %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:401 #, c-format msgid "not %d bits per sample" msgstr "" #: ../libvips/foreign/tiff2vips.c:417 #, c-format msgid "%d bits per sample palette image not supported" msgstr "" #: ../libvips/foreign/tiff2vips.c:471 msgid "unsupported tiff image type\n" msgstr "" #: ../libvips/foreign/tiff2vips.c:863 msgid "bad colormap" msgstr "" #: ../libvips/foreign/tiff2vips.c:884 msgid "assuming 8-bit palette" msgstr "" #: ../libvips/foreign/tiff2vips.c:1023 msgid "unknown resolution unit" msgstr "" #: ../libvips/foreign/tiff2vips.c:1028 #, c-format msgid "" "no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per " "mm" msgstr "" #: ../libvips/foreign/tiff2vips.c:1135 msgid "width/height out of range" msgstr "" #: ../libvips/foreign/tiff2vips.c:1144 msgid "samples out of range" msgstr "" #: ../libvips/foreign/tiff2vips.c:1419 msgid "tiled separate planes not supported" msgstr "" #: ../libvips/foreign/tiff2vips.c:1450 ../libvips/foreign/tiff2vips.c:1686 msgid "unsupported tiff image type" msgstr "" #: ../libvips/foreign/tiff2vips.c:1490 msgid "read error" msgstr "" #: ../libvips/foreign/tiff2vips.c:1780 #, c-format msgid "bad page number %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:1812 ../libvips/foreign/tiff2vips.c:1914 #, c-format msgid "TIFF does not contain page %d" msgstr "" #: ../libvips/foreign/tiff2vips.c:1907 msgid "unable to open memory buffer for input" msgstr "" #: ../libvips/foreign/openexr2vips.c:116 #, c-format msgid "EXR error: %s" msgstr "" #: ../libvips/foreign/foreign.c:362 msgid "load and save image files" msgstr "" #: ../libvips/foreign/foreign.c:511 ../libvips/mosaicing/im_remosaic.c:87 #, c-format msgid "file \"%s\" not found" msgstr "" #: ../libvips/foreign/foreign.c:520 ../libvips/foreign/foreign.c:1529 #, c-format msgid "\"%s\" is not a known file format" msgstr "" #: ../libvips/foreign/foreign.c:588 msgid "buffer is not in a known format" msgstr "" #: ../libvips/foreign/foreign.c:756 msgid "images do not match" msgstr "" #: ../libvips/foreign/foreign.c:856 msgid "" "VIPS_FOREIGN_PARTIAL and VIPS_FOREIGN_SEQUENTIAL both set -- using SEQUENTIAL" msgstr "" #: ../libvips/foreign/foreign.c:876 msgid "ignoring deprecated \"sequential\" mode" msgstr "" #: ../libvips/foreign/foreign.c:878 msgid "please use \"access\" instead" msgstr "" #: ../libvips/foreign/foreign.c:956 msgid "file loaders" msgstr "" #: ../libvips/foreign/foreign.c:967 msgid "Flags" msgstr "" #: ../libvips/foreign/foreign.c:968 msgid "Flags for this file" msgstr "" #: ../libvips/foreign/foreign.c:974 msgid "Disc" msgstr "" #: ../libvips/foreign/foreign.c:975 msgid "Open to disc" msgstr "" #: ../libvips/foreign/foreign.c:982 msgid "Required access pattern for this file" msgstr "" #: ../libvips/foreign/foreign.c:988 msgid "Sequential" msgstr "" #: ../libvips/foreign/foreign.c:989 msgid "Sequential read only" msgstr "" #: ../libvips/foreign/foreign.c:1440 msgid "file savers" msgstr "" #: ../libvips/foreign/foreign.c:1464 msgid "Image to save" msgstr "" #: ../libvips/foreign/foreign.c:1469 msgid "Strip" msgstr "" #: ../libvips/foreign/foreign.c:1470 msgid "Strip all metadata from image" msgstr "" #: ../libvips/foreign/foreign.c:1604 #, c-format msgid "\"%s\" is not a known buffer format" msgstr "" #: ../libvips/foreign/webp2vips.c:239 ../libvips/foreign/magick2vips.c:664 msgid "unable to read pixels" msgstr "" #: ../libvips/foreign/webp2vips.c:275 ../libvips/foreign/webp2vips.c:294 msgid "unable to open buffer" msgstr "" #: ../libvips/foreign/jpegsave.c:134 msgid "save jpeg" msgstr "" #: ../libvips/foreign/jpegsave.c:149 ../libvips/foreign/pngsave.c:122 msgid "Profile" msgstr "" #: ../libvips/foreign/jpegsave.c:150 ../libvips/foreign/tiffsave.c:194 #: ../libvips/foreign/pngsave.c:123 msgid "ICC profile to embed" msgstr "" #: ../libvips/foreign/jpegsave.c:156 msgid "Optimize_coding" msgstr "" #: ../libvips/foreign/jpegsave.c:157 msgid "Compute optimal Huffman coding tables" msgstr "" #: ../libvips/foreign/jpegsave.c:163 ../libvips/foreign/pngsave.c:115 msgid "Interlace" msgstr "" #: ../libvips/foreign/jpegsave.c:164 msgid "Generate an interlaced (progressive) jpeg" msgstr "" #: ../libvips/foreign/jpegsave.c:170 msgid "No subsample" msgstr "" #: ../libvips/foreign/jpegsave.c:171 msgid "Disable chroma subsample" msgstr "" #: ../libvips/foreign/jpegsave.c:177 msgid "Trellis quantisation" msgstr "" #: ../libvips/foreign/jpegsave.c:178 msgid "Apply trellis quantisation to each 8x8 block" msgstr "" #: ../libvips/foreign/jpegsave.c:184 msgid "Overshoot de-ringing" msgstr "" #: ../libvips/foreign/jpegsave.c:185 msgid "Apply overshooting to samples with extreme values" msgstr "" #: ../libvips/foreign/jpegsave.c:191 msgid "Optimize scans" msgstr "" #: ../libvips/foreign/jpegsave.c:192 msgid "Split the spectrum of DCT coefficients into separate scans" msgstr "" #: ../libvips/foreign/jpegsave.c:249 msgid "save image to jpeg file" msgstr "" #: ../libvips/foreign/jpegsave.c:318 msgid "save image to jpeg buffer" msgstr "" #: ../libvips/foreign/jpegsave.c:383 msgid "save image to jpeg mime" msgstr "" #: ../libvips/foreign/dzsave.c:169 ../libvips/iofuncs/vips.c:700 #, c-format msgid "unable to set property \"%s\" to value \"%s\"." msgstr "" #: ../libvips/foreign/dzsave.c:184 #, c-format msgid "unable to set create node \"%s\"" msgstr "" #: ../libvips/foreign/dzsave.c:239 ../libvips/foreign/dzsave.c:244 #: ../libvips/foreign/dzsave.c:271 ../libvips/iofuncs/vips.c:837 #: ../libvips/iofuncs/vips.c:844 msgid "xml save error" msgstr "" #: ../libvips/foreign/dzsave.c:340 ../libvips/foreign/dzsave.c:346 msgid "unable to close stream" msgstr "" #: ../libvips/foreign/dzsave.c:1210 msgid "output file too large" msgstr "" #: ../libvips/foreign/dzsave.c:1567 msgid "overlap must be less than tile width and height" msgstr "" #: ../libvips/foreign/dzsave.c:1707 #, c-format msgid "output directory %s/%s_files exists" msgstr "" #: ../libvips/foreign/dzsave.c:1735 ../libvips/iofuncs/util.c:1467 #, c-format msgid "unable to make temporary file %s" msgstr "" #: ../libvips/foreign/dzsave.c:1912 msgid "save image to deep zoom format" msgstr "" #: ../libvips/foreign/dzsave.c:1929 msgid "Layout" msgstr "" #: ../libvips/foreign/dzsave.c:1930 msgid "Directory layout" msgstr "" #: ../libvips/foreign/dzsave.c:1937 msgid "suffix" msgstr "" #: ../libvips/foreign/dzsave.c:1938 msgid "Filename suffix for tiles" msgstr "" #: ../libvips/foreign/dzsave.c:1944 msgid "Overlap" msgstr "" #: ../libvips/foreign/dzsave.c:1945 msgid "Tile overlap in pixels" msgstr "" #: ../libvips/foreign/dzsave.c:1951 msgid "Tile size" msgstr "" #: ../libvips/foreign/dzsave.c:1952 msgid "Tile size in pixels" msgstr "" #: ../libvips/foreign/dzsave.c:1959 msgid "Pyramid depth" msgstr "" #: ../libvips/foreign/dzsave.c:1966 msgid "Center" msgstr "" #: ../libvips/foreign/dzsave.c:1967 msgid "Center image in tile" msgstr "" #: ../libvips/foreign/dzsave.c:1974 msgid "Rotate image during save" msgstr "" #: ../libvips/foreign/dzsave.c:1980 msgid "Container" msgstr "" #: ../libvips/foreign/dzsave.c:1981 msgid "Pyramid container type" msgstr "" #: ../libvips/foreign/dzsave.c:1988 ../libvips/foreign/tiffsave.c:277 msgid "Properties" msgstr "" #: ../libvips/foreign/dzsave.c:1989 msgid "Write a properties file to the output directory" msgstr "" #: ../libvips/foreign/dzsave.c:1998 ../libvips/foreign/dzsave.c:2005 msgid "Base name" msgstr "" #: ../libvips/foreign/dzsave.c:1999 ../libvips/foreign/dzsave.c:2006 msgid "Base name to save to" msgstr "" #: ../libvips/foreign/openslide2vips.c:187 msgid "invalid associated image name" msgstr "" #: ../libvips/foreign/openslide2vips.c:236 msgid "specify only one of level or associated image" msgstr "" #: ../libvips/foreign/openslide2vips.c:258 msgid "unsupported slide format" msgstr "" #: ../libvips/foreign/openslide2vips.c:265 #, c-format msgid "opening slide: %s" msgstr "" #: ../libvips/foreign/openslide2vips.c:272 msgid "invalid slide level" msgstr "" #: ../libvips/foreign/openslide2vips.c:354 #, c-format msgid "getting dimensions: %s" msgstr "" #: ../libvips/foreign/openslide2vips.c:361 msgid "image dimensions overflow int" msgstr "" #: ../libvips/foreign/openslide2vips.c:477 #, c-format msgid "reading region: %s" msgstr "" #: ../libvips/foreign/openslide2vips.c:556 #, c-format msgid "reading associated image: %s" msgstr "" #: ../libvips/foreign/analyze2vips.c:309 msgid "header file size incorrect" msgstr "" #: ../libvips/foreign/analyze2vips.c:354 msgid "header size incorrect" msgstr "" #: ../libvips/foreign/analyze2vips.c:372 #, c-format msgid "%d-dimensional images not supported" msgstr "" #: ../libvips/foreign/analyze2vips.c:425 #, c-format msgid "datatype %d not supported" msgstr "" #: ../libvips/foreign/ppmsave.c:112 msgid "save image to ppm file" msgstr "" #: ../libvips/foreign/ppmsave.c:128 msgid "ASCII" msgstr "" #: ../libvips/foreign/ppmsave.c:129 msgid "save as ascii" msgstr "" #: ../libvips/foreign/ppmsave.c:135 ../libvips/foreign/tiffsave.c:228 msgid "Squash" msgstr "" #: ../libvips/foreign/ppmsave.c:136 msgid "save as one bit" msgstr "" #: ../libvips/foreign/tiffsave.c:154 msgid "save image to tiff file" msgstr "" #: ../libvips/foreign/tiffsave.c:170 ../libvips/foreign/pngsave.c:108 msgid "Compression" msgstr "" #: ../libvips/foreign/tiffsave.c:171 msgid "Compression for this file" msgstr "" #: ../libvips/foreign/tiffsave.c:185 msgid "predictor" msgstr "" #: ../libvips/foreign/tiffsave.c:186 msgid "Compression prediction" msgstr "" #: ../libvips/foreign/tiffsave.c:193 msgid "profile" msgstr "" #: ../libvips/foreign/tiffsave.c:200 msgid "Tile" msgstr "" #: ../libvips/foreign/tiffsave.c:201 msgid "Write a tiled tiff" msgstr "" #: ../libvips/foreign/tiffsave.c:221 msgid "Pyramid" msgstr "" #: ../libvips/foreign/tiffsave.c:222 msgid "Write a pyramidal tiff" msgstr "" #: ../libvips/foreign/tiffsave.c:229 msgid "Squash images down to 1 bit" msgstr "" #: ../libvips/foreign/tiffsave.c:235 msgid "Miniswhite" msgstr "" #: ../libvips/foreign/tiffsave.c:236 msgid "Use 0 for white in 1-bit images" msgstr "" #: ../libvips/foreign/tiffsave.c:242 ../libvips/foreign/tiffsave.c:243 msgid "Resolution unit" msgstr "" #: ../libvips/foreign/tiffsave.c:263 msgid "Bigtiff" msgstr "" #: ../libvips/foreign/tiffsave.c:264 msgid "Write a bigtiff image" msgstr "" #: ../libvips/foreign/tiffsave.c:270 msgid "RGB JPEG" msgstr "" #: ../libvips/foreign/tiffsave.c:271 msgid "Output RGB JPEG rather than YCbCr" msgstr "" #: ../libvips/foreign/tiffsave.c:278 msgid "Write a properties document to IMAGEDESCRIPTION" msgstr "" #: ../libvips/foreign/matrixsave.c:112 msgid "save image to matrix file" msgstr "" #: ../libvips/foreign/matrixsave.c:192 msgid "print matrix" msgstr "" #: ../libvips/foreign/fitssave.c:129 msgid "save image to fits file" msgstr "" #: ../libvips/foreign/csv.c:197 #, c-format msgid "error parsing number, line %d, column %d" msgstr "" #: ../libvips/foreign/csv.c:252 msgid "end of file while skipping start" msgstr "" #: ../libvips/foreign/csv.c:261 ../libvips/iofuncs/util.c:967 #: ../libvips/iofuncs/util.c:973 msgid "unable to seek" msgstr "" #: ../libvips/foreign/csv.c:272 msgid "empty line" msgstr "" #: ../libvips/foreign/csv.c:312 #, c-format msgid "unexpected EOF, line %d col %d" msgstr "" #: ../libvips/foreign/csv.c:318 #, c-format msgid "unexpected EOL, line %d col %d" msgstr "" #: ../libvips/foreign/csv.c:541 msgid "no width / height" msgstr "" #: ../libvips/foreign/csv.c:546 msgid "width / height not int" msgstr "" #: ../libvips/foreign/csv.c:556 msgid "width / height out of range" msgstr "" #: ../libvips/foreign/csv.c:560 msgid "bad scale / offset" msgstr "" #: ../libvips/foreign/csv.c:564 msgid "extra chars in header" msgstr "" #: ../libvips/foreign/csv.c:569 msgid "zero scale" msgstr "" #: ../libvips/foreign/csv.c:617 msgid "line too short" msgstr "" #: ../libvips/foreign/csv.c:661 #, c-format msgid "line %d too short" msgstr "" #: ../libvips/foreign/pngload.c:128 msgid "load png from file" msgstr "" #: ../libvips/foreign/pngload.c:205 msgid "load png from buffer" msgstr "" #: ../libvips/foreign/fitsload.c:110 msgid "load a FITS image" msgstr "" #: ../libvips/foreign/vipsload.c:122 msgid "load vips from file" msgstr "" #: ../libvips/foreign/vipspng.c:303 msgid "unsupported color type" msgstr "" #: ../libvips/foreign/vipspng.c:413 msgid "unable to read PNG header" msgstr "" #: ../libvips/foreign/vipspng.c:836 msgid "compress should be in [0,9]" msgstr "" #: ../libvips/foreign/vipspng.c:858 #, c-format msgid "can't save %d band image as png" msgstr "" #: ../libvips/foreign/vipspng.c:965 #, c-format msgid "unable to write \"%s\"" msgstr "" #: ../libvips/foreign/vipspng.c:1069 msgid "unable to write to buffer" msgstr "" #: ../libvips/foreign/tiffload.c:86 msgid "load tiff" msgstr "" #: ../libvips/foreign/tiffload.c:89 msgid "Page" msgstr "" #: ../libvips/foreign/tiffload.c:90 msgid "Load this page from the image" msgstr "" #: ../libvips/foreign/tiffload.c:180 msgid "load tiff from file" msgstr "" #: ../libvips/foreign/tiffload.c:263 msgid "load tiff from buffer" msgstr "" #: ../libvips/foreign/magick2vips.c:246 #, c-format msgid "unsupported image type %d" msgstr "" #: ../libvips/foreign/magick2vips.c:308 #, c-format msgid "unsupported bit depth %d" msgstr "" #: ../libvips/foreign/magick2vips.c:340 #, c-format msgid "unsupported colorspace %d" msgstr "" #: ../libvips/foreign/magick2vips.c:705 #, c-format msgid "" "unable to read file \"%s\"\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/magick2vips.c:744 #, c-format msgid "" "unable to ping file \"%s\"\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/magick2vips.c:755 ../libvips/foreign/magick2vips.c:842 msgid "bad image size" msgstr "" #: ../libvips/foreign/magick2vips.c:797 #, c-format msgid "" "unable to read buffer\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/magick2vips.c:831 #, c-format msgid "" "unable to ping blob\n" "libMagick error: %s %s" msgstr "" #: ../libvips/foreign/analyzeload.c:117 msgid "load an Analyze6 image" msgstr "" #: ../libvips/foreign/ppm.c:114 msgid "bad int" msgstr "" #: ../libvips/foreign/ppm.c:126 msgid "bad float" msgstr "" #: ../libvips/foreign/ppm.c:177 msgid "bad magic number" msgstr "" #: ../libvips/foreign/ppm.c:228 msgid "not whitespace before start of binary data" msgstr "" #: ../libvips/foreign/ppm.c:619 ../libvips/foreign/ppm.c:636 #: ../libvips/foreign/ppm.c:670 ../libvips/foreign/ppm.c:684 msgid "write error" msgstr "" #: ../libvips/foreign/ppm.c:801 msgid "float images must be binary -- disabling ascii" msgstr "" #: ../libvips/foreign/openslideload.c:168 msgid "load file with OpenSlide" msgstr "" #: ../libvips/foreign/openslideload.c:192 msgid "Level" msgstr "" #: ../libvips/foreign/openslideload.c:193 msgid "Load this level from the file" msgstr "" #: ../libvips/foreign/openslideload.c:199 msgid "Autocrop" msgstr "" #: ../libvips/foreign/openslideload.c:200 msgid "Crop to image bounds" msgstr "" #: ../libvips/foreign/openslideload.c:206 msgid "Associated" msgstr "" #: ../libvips/foreign/openslideload.c:207 msgid "Load this associated image" msgstr "" #: ../libvips/foreign/pngsave.c:100 msgid "save png" msgstr "" #: ../libvips/foreign/pngsave.c:109 msgid "Compression factor" msgstr "" #: ../libvips/foreign/pngsave.c:116 msgid "Interlace image" msgstr "" #: ../libvips/foreign/pngsave.c:129 msgid "Filter" msgstr "" #: ../libvips/foreign/pngsave.c:130 msgid "libpng row filter flag(s)" msgstr "" #: ../libvips/foreign/pngsave.c:184 msgid "save image to png file" msgstr "" #: ../libvips/foreign/pngsave.c:246 msgid "save image to png buffer" msgstr "" #: ../libvips/foreign/radload.c:120 msgid "load a Radiance image from a file" msgstr "" #: ../libvips/foreign/ppmload.c:117 msgid "load ppm from file" msgstr "" #: ../libvips/freqfilt/phasecor.c:108 msgid "calculate phase correlation" msgstr "" #: ../libvips/freqfilt/fwfft.c:137 ../libvips/freqfilt/fwfft.c:252 #: ../libvips/freqfilt/invfft.c:120 ../libvips/freqfilt/invfft.c:194 msgid "unable to create transform plan" msgstr "" #: ../libvips/freqfilt/fwfft.c:335 msgid "forward FFT" msgstr "" #: ../libvips/freqfilt/freqmult.c:127 msgid "frequency-domain filtering" msgstr "" #: ../libvips/freqfilt/freqmult.c:131 msgid "mask" msgstr "" #: ../libvips/freqfilt/freqmult.c:132 msgid "Input mask image" msgstr "" #: ../libvips/freqfilt/freqfilt.c:94 msgid "frequency-domain filter operations" msgstr "" #: ../libvips/freqfilt/invfft.c:252 msgid "inverse FFT" msgstr "" #: ../libvips/freqfilt/invfft.c:256 msgid "Real" msgstr "" #: ../libvips/freqfilt/invfft.c:257 msgid "Output only the real part of the transform" msgstr "" #: ../libvips/freqfilt/spectrum.c:101 msgid "make displayable power spectrum" msgstr "" #: ../libvips/histogram/hist_cum.c:148 msgid "form cumulative histogram" msgstr "" #: ../libvips/histogram/hist_norm.c:137 msgid "normalise histogram" msgstr "" #: ../libvips/histogram/hist_equal.c:104 msgid "histogram equalisation" msgstr "" #: ../libvips/histogram/hist_equal.c:121 msgid "Equalise with this band" msgstr "" #: ../libvips/histogram/maplut.c:691 msgid "map an image though a lut" msgstr "" #: ../libvips/histogram/maplut.c:709 msgid "LUT" msgstr "" #: ../libvips/histogram/maplut.c:710 msgid "Look-up table image" msgstr "" #: ../libvips/histogram/maplut.c:715 msgid "band" msgstr "" #: ../libvips/histogram/maplut.c:716 msgid "apply one-band lut to this band of in" msgstr "" #: ../libvips/histogram/hist_plot.c:338 msgid "plot histogram" msgstr "" #: ../libvips/histogram/stdif.c:236 ../libvips/histogram/hist_local.c:248 #: ../libvips/morphology/rank.c:352 msgid "window too large" msgstr "" #: ../libvips/histogram/stdif.c:240 msgid "too many bands" msgstr "" #: ../libvips/histogram/stdif.c:288 msgid "statistical difference" msgstr "" #: ../libvips/histogram/stdif.c:307 ../libvips/histogram/hist_local.c:313 #: ../libvips/morphology/rank.c:416 msgid "Window width in pixels" msgstr "" #: ../libvips/histogram/stdif.c:314 ../libvips/histogram/hist_local.c:320 #: ../libvips/morphology/rank.c:423 msgid "Window height in pixels" msgstr "" #: ../libvips/histogram/stdif.c:320 msgid "Mean weight" msgstr "" #: ../libvips/histogram/stdif.c:321 msgid "Weight of new mean" msgstr "" #: ../libvips/histogram/stdif.c:328 msgid "New mean" msgstr "" #: ../libvips/histogram/stdif.c:334 msgid "Deviation weight" msgstr "" #: ../libvips/histogram/stdif.c:335 msgid "Weight of new deviation" msgstr "" #: ../libvips/histogram/stdif.c:341 msgid "Deviation" msgstr "" #: ../libvips/histogram/stdif.c:342 msgid "New deviation" msgstr "" #: ../libvips/histogram/hist_local.c:296 msgid "local histogram equalisation" msgstr "" #: ../libvips/histogram/histogram.c:222 msgid "histogram operations" msgstr "" #: ../libvips/histogram/hist_match.c:154 msgid "match two histograms" msgstr "" #: ../libvips/histogram/hist_match.c:162 msgid "Input histogram" msgstr "" #: ../libvips/histogram/hist_match.c:167 ../libvips/mosaicing/merge.c:109 #: ../libvips/mosaicing/mosaic1.c:489 ../libvips/mosaicing/mosaic.c:180 #: ../libvips/mosaicing/match.c:204 msgid "Reference" msgstr "" #: ../libvips/histogram/hist_match.c:168 msgid "Reference histogram" msgstr "" #: ../libvips/histogram/hist_unary.c:85 msgid "hist_unary operations" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:113 msgid "test for monotonicity" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:118 msgid "Input histogram image" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:123 msgid "Monotonic" msgstr "" #: ../libvips/histogram/hist_ismonotonic.c:124 msgid "true if in is monotonic" msgstr "" #: ../libvips/histogram/percent.c:106 msgid "find threshold for percent of pixels" msgstr "" #: ../libvips/histogram/percent.c:116 msgid "Percent" msgstr "" #: ../libvips/histogram/percent.c:117 msgid "Percent of pixels" msgstr "" #: ../libvips/histogram/percent.c:123 msgid "Threshold" msgstr "" #: ../libvips/histogram/percent.c:124 msgid "Threshold above which lie percent of pixels" msgstr "" #: ../libvips/introspect.c:54 msgid "dump introspection data" msgstr "" #: ../libvips/introspect.c:71 msgid "- introspect" msgstr "" #: ../libvips/iofuncs/window.c:237 ../libvips/iofuncs/vips.c:905 #, c-format msgid "unable to read data for \"%s\", %s" msgstr "" #: ../libvips/iofuncs/window.c:238 ../libvips/iofuncs/vips.c:796 #: ../libvips/iofuncs/vips.c:906 msgid "file has been truncated" msgstr "" #: ../libvips/iofuncs/base64.c:172 msgid "too little data" msgstr "" #. We shouldn't really be used for large amounts of data, plus #. * we are using int offsets. #. #. We shouldn't really be used for large amounts of data, plus #. * we are using an int for offset. #. #: ../libvips/iofuncs/base64.c:179 ../libvips/iofuncs/base64.c:245 msgid "too much data" msgstr "" #: ../libvips/iofuncs/type.c:844 #, c-format msgid "unable to convert \"%s\" to int" msgstr "" #: ../libvips/iofuncs/type.c:1036 #, c-format msgid "unable to convert \"%s\" to float" msgstr "" #: ../libvips/iofuncs/memory.c:236 msgid "vips_free: too many frees" msgstr "" #: ../libvips/iofuncs/memory.c:239 msgid "vips_free: too much free" msgstr "" #: ../libvips/iofuncs/memory.c:295 ../libvips/iofuncs/memory.c:298 #: ../libvips/iofuncs/image.c:2561 ../libvips/iofuncs/image.c:2564 #, c-format msgid "out of memory --- size == %dMB" msgstr "" #: ../libvips/iofuncs/vips.c:306 #, c-format msgid "\"%s\" is not a VIPS image" msgstr "" #: ../libvips/iofuncs/vips.c:394 msgid "unable to read history" msgstr "" #: ../libvips/iofuncs/vips.c:427 msgid "more than a 10 megabytes of XML? sufferin' succotash!" msgstr "" #: ../libvips/iofuncs/vips.c:475 msgid "incorrect namespace in XML" msgstr "" #: ../libvips/iofuncs/vips.c:599 msgid "error transforming from save format" msgstr "" #: ../libvips/iofuncs/vips.c:748 msgid "error transforming to save format" msgstr "" #: ../libvips/iofuncs/vips.c:892 #, c-format msgid "unable to read header for \"%s\"" msgstr "" #: ../libvips/iofuncs/vips.c:917 #, c-format msgid "error reading XML: %s" msgstr "" #: ../libvips/iofuncs/init.c:215 #, c-format msgid "unable to load \"%s\" -- %s" msgstr "" #: ../libvips/iofuncs/init.c:581 msgid "show informative messages" msgstr "" #: ../libvips/iofuncs/init.c:584 msgid "abort on first error or warning" msgstr "" #: ../libvips/iofuncs/init.c:587 msgid "evaluate with N concurrent threads" msgstr "" #: ../libvips/iofuncs/init.c:590 msgid "set tile width to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:593 msgid "set tile height to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:596 msgid "set thinstrip height to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:599 msgid "set fatstrip height to N (DEBUG)" msgstr "" #: ../libvips/iofuncs/init.c:602 msgid "show progress feedback" msgstr "" #: ../libvips/iofuncs/init.c:605 msgid "leak-check on exit" msgstr "" #: ../libvips/iofuncs/init.c:608 msgid "profile and dump timing on exit" msgstr "" #: ../libvips/iofuncs/init.c:611 msgid "images larger than N are decompressed to disc" msgstr "" #: ../libvips/iofuncs/init.c:614 msgid "disable vectorised versions of operations" msgstr "" #: ../libvips/iofuncs/init.c:617 msgid "cache at most N operations" msgstr "" #: ../libvips/iofuncs/init.c:620 msgid "cache at most N bytes in memory" msgstr "" #: ../libvips/iofuncs/init.c:623 msgid "allow at most N open files" msgstr "" #: ../libvips/iofuncs/init.c:626 msgid "trace operation cache" msgstr "" #: ../libvips/iofuncs/init.c:629 msgid "dump operation cache on exit" msgstr "" #: ../libvips/iofuncs/init.c:632 msgid "print libvips version" msgstr "" #: ../libvips/iofuncs/init.c:1005 msgid "flag not 0, 1, 2" msgstr "" #: ../libvips/iofuncs/sinkmemory.c:109 msgid "per-thread state for sinkmemory" msgstr "" #. File length unit. #. #: ../libvips/iofuncs/buf.c:529 msgid "bytes" msgstr "" #. Kilobyte unit. #. #: ../libvips/iofuncs/buf.c:533 msgid "KB" msgstr "" #. Megabyte unit. #. #: ../libvips/iofuncs/buf.c:537 msgid "MB" msgstr "" #. Gigabyte unit. #. #: ../libvips/iofuncs/buf.c:541 msgid "GB" msgstr "" #. Terabyte unit. #. #: ../libvips/iofuncs/buf.c:545 msgid "TB" msgstr "" #: ../libvips/iofuncs/system.c:165 msgid "unable to substitute input filename" msgstr "" #: ../libvips/iofuncs/system.c:172 msgid "unable to substitute output filename" msgstr "" #: ../libvips/iofuncs/system.c:207 #, c-format msgid "command \"%s\" failed" msgstr "" #: ../libvips/iofuncs/system.c:216 #, c-format msgid "stderr output: %s" msgstr "" #: ../libvips/iofuncs/system.c:251 msgid "run an external command" msgstr "" #: ../libvips/iofuncs/system.c:272 msgid "Command" msgstr "" #: ../libvips/iofuncs/system.c:273 msgid "Command to run" msgstr "" #: ../libvips/iofuncs/system.c:279 msgid "Input format" msgstr "" #: ../libvips/iofuncs/system.c:280 msgid "Format for input filename" msgstr "" #: ../libvips/iofuncs/system.c:286 msgid "Output format" msgstr "" #: ../libvips/iofuncs/system.c:287 msgid "Format for output filename" msgstr "" #: ../libvips/iofuncs/system.c:294 msgid "Command log" msgstr "" #: ../libvips/iofuncs/threadpool.c:205 msgid "unable to create thread" msgstr "" #: ../libvips/iofuncs/threadpool.c:339 #, c-format msgid "threads clipped to %d" msgstr "" #: ../libvips/iofuncs/threadpool.c:385 msgid "per-thread state for vipsthreadpool" msgstr "" #: ../libvips/iofuncs/operation.c:228 #, c-format msgid "%d pixels calculated" msgstr "" #: ../libvips/iofuncs/operation.c:313 ../libvips/iofuncs/operation.c:334 #: ../libvips/iofuncs/operation.c:342 ../libvips/iofuncs/operation.c:354 msgid "default" msgstr "" #: ../libvips/iofuncs/operation.c:317 msgid "allowed" msgstr "" #: ../libvips/iofuncs/operation.c:345 ../libvips/iofuncs/operation.c:357 msgid "min" msgstr "" #: ../libvips/iofuncs/operation.c:347 ../libvips/iofuncs/operation.c:359 msgid "max" msgstr "" #: ../libvips/iofuncs/operation.c:575 msgid "operations" msgstr "" #: ../libvips/iofuncs/operation.c:663 ../libvips/iofuncs/object.c:1511 #: ../libvips/resample/interpolate.c:634 #, c-format msgid "class \"%s\" not found" msgstr "" #: ../libvips/iofuncs/operation.c:669 #, c-format msgid "\"%s\" is not an instantiable class" msgstr "" #: ../libvips/iofuncs/operation.c:1129 #, c-format msgid "unknown argument '%s'" msgstr "" #: ../libvips/iofuncs/operation.c:1253 msgid "too few arguments" msgstr "" #: ../libvips/iofuncs/operation.c:1374 msgid "too many arguments" msgstr "" #: ../libvips/iofuncs/header.c:958 #, c-format msgid "field \"%s\" not found" msgstr "" #: ../libvips/iofuncs/header.c:1129 #, c-format msgid "field \"%s\" is of type %s, not %s" msgstr "" #: ../libvips/iofuncs/error.c:270 msgid "windows error" msgstr "" #: ../libvips/iofuncs/error.c:279 msgid "unix error" msgstr "" #: ../libvips/iofuncs/error.c:408 ../libvips/iofuncs/error.c:410 #: ../libvips/iofuncs/error.c:458 ../libvips/iofuncs/error.c:460 #, c-format msgid "%s: " msgstr "" #: ../libvips/iofuncs/error.c:408 msgid "info" msgstr "" #: ../libvips/iofuncs/error.c:458 msgid "vips warning" msgstr "" #: ../libvips/iofuncs/error.c:549 msgid "image must be uncoded" msgstr "" #: ../libvips/iofuncs/error.c:577 msgid "image coding must be 'none' or 'labq'" msgstr "" #: ../libvips/iofuncs/error.c:605 msgid "unknown image coding" msgstr "" #: ../libvips/iofuncs/error.c:630 #, c-format msgid "coding '%s' only" msgstr "" #: ../libvips/iofuncs/error.c:655 msgid "image must one band" msgstr "" #: ../libvips/iofuncs/error.c:680 #, c-format msgid "image must have %d bands" msgstr "" #: ../libvips/iofuncs/error.c:705 msgid "image must have one or three bands" msgstr "" #: ../libvips/iofuncs/error.c:731 #, c-format msgid "image must have at least %d bands" msgstr "" #: ../libvips/iofuncs/error.c:759 msgid "images must have the same number of bands, or one must be single-band" msgstr "" #: ../libvips/iofuncs/error.c:786 #, c-format msgid "image must have 1 or %d bands" msgstr "" #: ../libvips/iofuncs/error.c:810 msgid "image must be non-complex" msgstr "" #: ../libvips/iofuncs/error.c:834 msgid "image must be complex" msgstr "" #: ../libvips/iofuncs/error.c:861 msgid "image must be two-band or complex" msgstr "" #: ../libvips/iofuncs/error.c:887 #, c-format msgid "image must be %s" msgstr "" #: ../libvips/iofuncs/error.c:912 msgid "image must be integer" msgstr "" #: ../libvips/iofuncs/error.c:937 msgid "image must be unsigned integer" msgstr "" #: ../libvips/iofuncs/error.c:965 msgid "image must be 8- or 16-bit integer, signed or unsigned" msgstr "" #: ../libvips/iofuncs/error.c:992 msgid "image must be 8- or 16-bit unsigned integer" msgstr "" #: ../libvips/iofuncs/error.c:1018 msgid "image must be 8- or 16-bit unsigned integer, or float" msgstr "" #: ../libvips/iofuncs/error.c:1046 msgid "image must be unsigned int or float" msgstr "" #: ../libvips/iofuncs/error.c:1071 msgid "images must match in size" msgstr "" #: ../libvips/iofuncs/error.c:1097 msgid "images must be odd and square" msgstr "" #: ../libvips/iofuncs/error.c:1123 msgid "images must have the same number of bands" msgstr "" #: ../libvips/iofuncs/error.c:1177 msgid "images must have the same band format" msgstr "" #: ../libvips/iofuncs/error.c:1203 msgid "images must have the same coding" msgstr "" #: ../libvips/iofuncs/error.c:1226 #, c-format msgid "vector must have %d elements" msgstr "" #: ../libvips/iofuncs/error.c:1251 #, c-format msgid "vector must have 1 or %d elements" msgstr "" #: ../libvips/iofuncs/error.c:1276 msgid "histograms must have width or height 1" msgstr "" #: ../libvips/iofuncs/error.c:1281 msgid "histograms must have not have more than 65536 elements" msgstr "" #: ../libvips/iofuncs/error.c:1318 msgid "matrix image too large" msgstr "" #: ../libvips/iofuncs/error.c:1323 msgid "matrix image must have one band" msgstr "" #: ../libvips/iofuncs/error.c:1357 msgid "separable matrix images must have width or height 1" msgstr "" #: ../libvips/iofuncs/error.c:1384 msgid "precision must be int or float" msgstr "" #: ../libvips/iofuncs/sinkdisc.c:122 msgid "per-thread state for sinkdisc" msgstr "" #: ../libvips/iofuncs/sinkdisc.c:261 ../libvips/iofuncs/util.c:526 msgid "write failed" msgstr "" #: ../libvips/iofuncs/sink.c:106 #, c-format msgid "stop function failed for image \"%s\"" msgstr "" #: ../libvips/iofuncs/sink.c:143 #, c-format msgid "start function failed for image \"%s\"" msgstr "" #: ../libvips/iofuncs/sink.c:176 msgid "per-thread state for sink" msgstr "" #: ../libvips/iofuncs/generate.c:414 msgid "too many images" msgstr "" #: ../libvips/iofuncs/generate.c:679 msgid "demand hint not set" msgstr "" #: ../libvips/iofuncs/generate.c:698 ../libvips/iofuncs/generate.c:726 msgid "generate() called twice" msgstr "" #: ../libvips/iofuncs/generate.c:768 ../libvips/iofuncs/image.c:2865 #, c-format msgid "unable to output to a %s image" msgstr "" #: ../libvips/iofuncs/region.c:235 #, c-format msgid "start function failed for image %s" msgstr "" #: ../libvips/iofuncs/region.c:583 ../libvips/iofuncs/region.c:655 #: ../libvips/iofuncs/region.c:803 ../libvips/iofuncs/region.c:1505 msgid "valid clipped to nothing" msgstr "" #: ../libvips/iofuncs/region.c:700 msgid "bad image type" msgstr "" #: ../libvips/iofuncs/region.c:745 msgid "no pixel data on attached image" msgstr "" #: ../libvips/iofuncs/region.c:751 msgid "images do not match in pixel size" msgstr "" #: ../libvips/iofuncs/region.c:784 ../libvips/iofuncs/region.c:1487 msgid "dest too small" msgstr "" #: ../libvips/iofuncs/region.c:873 msgid "bad position" msgstr "" #: ../libvips/iofuncs/region.c:1280 msgid "stop requested" msgstr "" #: ../libvips/iofuncs/region.c:1365 ../libvips/iofuncs/region.c:1558 #, c-format msgid "unable to input from a %s image" msgstr "" #: ../libvips/iofuncs/region.c:1389 msgid "incomplete header" msgstr "" #: ../libvips/iofuncs/region.c:1461 msgid "inappropriate region type" msgstr "" #: ../libvips/iofuncs/mapfile.c:131 ../libvips/iofuncs/mapfile.c:298 msgid "unable to CreateFileMapping" msgstr "" #: ../libvips/iofuncs/mapfile.c:139 ../libvips/iofuncs/mapfile.c:310 msgid "unable to MapViewOfFile" msgstr "" #: ../libvips/iofuncs/mapfile.c:179 msgid "unable to mmap" msgstr "" #: ../libvips/iofuncs/mapfile.c:180 #, c-format msgid "" "map failed (%s), running very low on system resources, expect a crash soon" msgstr "" #: ../libvips/iofuncs/mapfile.c:197 ../libvips/iofuncs/mapfile.c:304 msgid "unable to UnmapViewOfFile" msgstr "" #: ../libvips/iofuncs/mapfile.c:203 msgid "unable to munmap file" msgstr "" #: ../libvips/iofuncs/mapfile.c:225 msgid "file is less than 64 bytes" msgstr "" #: ../libvips/iofuncs/mapfile.c:230 ../libvips/iofuncs/mapfile.c:264 msgid "unable to get file status" msgstr "" #: ../libvips/iofuncs/mapfile.c:236 msgid "not a regular file" msgstr "" #: ../libvips/iofuncs/mapfile.c:270 msgid "unable to read data" msgstr "" #: ../libvips/iofuncs/mapfile.c:330 #, c-format msgid "unable to mmap: \"%s\" - %s" msgstr "" #: ../libvips/iofuncs/mapfile.c:340 #, c-format msgid "unable to mmap \"%s\" to same address" msgstr "" #: ../libvips/iofuncs/image.c:514 msgid "unable to close fd" msgstr "" #: ../libvips/iofuncs/image.c:595 #, c-format msgid "%dx%d %s, %d band, %s" msgid_plural "%dx%d %s, %d bands, %s" msgstr[0] "" msgstr[1] "" #: ../libvips/iofuncs/image.c:629 #, c-format msgid " %s, %d band, %s" msgid_plural " %s, %d bands, %s" msgstr[0] "" msgstr[1] "" #: ../libvips/iofuncs/image.c:765 #, c-format msgid "%s %s: %d x %d pixels, %d threads, %d x %d tiles, %d lines in buffer" msgstr "" #: ../libvips/iofuncs/image.c:781 #, c-format msgid "%s %s: %d%% complete" msgstr "" #. Spaces at end help to erase the %complete message we overwrite. #. #: ../libvips/iofuncs/image.c:803 #, c-format msgid "%s %s: done in %.3gs \n" msgstr "" #: ../libvips/iofuncs/image.c:987 #, c-format msgid "unable to open \"%s\", file too short" msgstr "" #: ../libvips/iofuncs/image.c:997 #, c-format msgid "%s is longer than expected" msgstr "" #: ../libvips/iofuncs/image.c:1015 #, c-format msgid "bad mode \"%s\"" msgstr "" #: ../libvips/iofuncs/image.c:1091 msgid "image class" msgstr "" #: ../libvips/iofuncs/image.c:1189 msgid "Image filename" msgstr "" #: ../libvips/iofuncs/image.c:1196 msgid "Open mode" msgstr "" #: ../libvips/iofuncs/image.c:1202 msgid "Kill" msgstr "" #: ../libvips/iofuncs/image.c:1203 msgid "Block evaluation on this image" msgstr "" #: ../libvips/iofuncs/image.c:1209 msgid "Demand style" msgstr "" #: ../libvips/iofuncs/image.c:1210 msgid "Preferred demand style for this image" msgstr "" #: ../libvips/iofuncs/image.c:1223 msgid "Foreign buffer" msgstr "" #: ../libvips/iofuncs/image.c:1224 msgid "Pointer to foreign pixels" msgstr "" #: ../libvips/iofuncs/image.c:1627 #, c-format msgid "killed for image \"%s\"" msgstr "" #: ../libvips/iofuncs/image.c:2027 #, c-format msgid "memory area too small --- should be %zd bytes, you passed %zd" msgstr "" #: ../libvips/iofuncs/image.c:2242 #, c-format msgid "bad array length --- should be %d, you passed %d" msgstr "" #: ../libvips/iofuncs/image.c:2807 msgid "bad image descriptor" msgstr "" #: ../libvips/iofuncs/image.c:2929 #, c-format msgid "auto-rewind for %s failed" msgstr "" #: ../libvips/iofuncs/image.c:2996 ../libvips/iofuncs/image.c:3126 #: ../libvips/iofuncs/image.c:3304 msgid "image not readable" msgstr "" #: ../libvips/iofuncs/image.c:3040 ../libvips/iofuncs/image.c:3264 #: ../libvips/iofuncs/image.c:3281 msgid "no image data" msgstr "" #: ../libvips/iofuncs/image.c:3147 ../libvips/iofuncs/image.c:3334 #: ../libvips/iofuncs/image.c:3343 msgid "image already written" msgstr "" #: ../libvips/iofuncs/image.c:3171 ../libvips/iofuncs/image.c:3355 msgid "image not writeable" msgstr "" #: ../libvips/iofuncs/image.c:3223 msgid "bad file type" msgstr "" #: ../libvips/iofuncs/util.c:509 msgid "unable to get file stats" msgstr "" #: ../libvips/iofuncs/util.c:591 #, c-format msgid "unable to open file \"%s\" for reading" msgstr "" #: ../libvips/iofuncs/util.c:613 #, c-format msgid "unable to open file \"%s\" for writing" msgstr "" #: ../libvips/iofuncs/util.c:635 #, c-format msgid "\"%s\" too long" msgstr "" #: ../libvips/iofuncs/util.c:655 msgid "out of memory" msgstr "" #: ../libvips/iofuncs/util.c:682 #, c-format msgid "error reading from file \"%s\"" msgstr "" #: ../libvips/iofuncs/util.c:729 #, c-format msgid "write error (%zd out of %zd blocks written)" msgstr "" #: ../libvips/iofuncs/util.c:1001 ../libvips/iofuncs/util.c:1008 msgid "unable to truncate" msgstr "" #: ../libvips/iofuncs/util.c:1080 #, c-format msgid "unable to create directory \"%s\", %s" msgstr "" #: ../libvips/iofuncs/util.c:1104 #, c-format msgid "unable to remove directory \"%s\", %s" msgstr "" #: ../libvips/iofuncs/util.c:1121 #, c-format msgid "unable to rename file \"%s\" as \"%s\", %s" msgstr "" #: ../libvips/iofuncs/util.c:1260 msgid "unexpected end of string" msgstr "" #: ../libvips/iofuncs/util.c:1278 #, c-format msgid "expected %s, saw %s" msgstr "" #: ../libvips/iofuncs/util.c:1592 msgid "no such enum type" msgstr "" #: ../libvips/iofuncs/util.c:1610 #, c-format msgid "enum '%s' has no member '%s', should be one of: %s" msgstr "" #: ../libvips/iofuncs/util.c:1628 msgid "no such flag type" msgstr "" #: ../libvips/iofuncs/util.c:1644 #, c-format msgid "flags '%s' has no member '%s', should be one of: %s" msgstr "" #: ../libvips/iofuncs/sinkscreen.c:188 msgid "per-thread state for render" msgstr "" #: ../libvips/iofuncs/sinkscreen.c:1088 msgid "bad parameters" msgstr "" #: ../libvips/iofuncs/object.c:316 #, c-format msgid "parameter %s not set" msgstr "" #: ../libvips/iofuncs/object.c:751 #, c-format msgid "no property named `%s'" msgstr "" #: ../libvips/iofuncs/object.c:759 #, c-format msgid "no vips argument named `%s'" msgstr "" #: ../libvips/iofuncs/object.c:765 #, c-format msgid "argument `%s' has no instance" msgstr "" #: ../libvips/iofuncs/object.c:1561 msgid "base class" msgstr "" #: ../libvips/iofuncs/object.c:1575 msgid "Nickname" msgstr "" #: ../libvips/iofuncs/object.c:1576 msgid "Class nickname" msgstr "" #: ../libvips/iofuncs/object.c:1582 msgid "Description" msgstr "" #: ../libvips/iofuncs/object.c:1583 msgid "Class description" msgstr "" #: ../libvips/iofuncs/object.c:1781 #, c-format msgid "no value supplied for argument '%s'" msgstr "" #: ../libvips/iofuncs/object.c:1784 #, c-format msgid "no value supplied for argument '%s' ('%s')" msgstr "" #: ../libvips/iofuncs/object.c:1904 ../libvips/iofuncs/object.c:1923 #: ../libvips/iofuncs/object.c:1976 #, c-format msgid "'%s' is not an integer" msgstr "" #: ../libvips/iofuncs/object.c:1940 #, c-format msgid "'%s' is not a double" msgstr "" #: ../libvips/iofuncs/object.c:2255 #, c-format msgid "expected string or ), saw %s" msgstr "" #: ../libvips/iofuncs/object.c:2297 #, c-format msgid "unable to set '%s'" msgstr "" #: ../libvips/iofuncs/object.c:2310 msgid "not , or ) after parameter" msgstr "" #: ../libvips/iofuncs/object.c:2317 msgid "extra tokens after ')'" msgstr "" #: ../libvips/morphology/countlines.c:131 msgid "count lines in an image" msgstr "" #: ../libvips/morphology/countlines.c:135 msgid "Nolines" msgstr "" #: ../libvips/morphology/countlines.c:136 msgid "Number of lines" msgstr "" #: ../libvips/morphology/countlines.c:143 msgid "Countlines left-right or up-down" msgstr "" #: ../libvips/morphology/labelregions.c:121 msgid "label regions in an image" msgstr "" #: ../libvips/morphology/labelregions.c:126 msgid "Mask of region labels" msgstr "" #: ../libvips/morphology/labelregions.c:131 msgid "Segments" msgstr "" #: ../libvips/morphology/labelregions.c:132 msgid "Number of discrete contigious regions" msgstr "" #: ../libvips/morphology/rank.c:357 msgid "index out of range" msgstr "" #: ../libvips/morphology/rank.c:405 msgid "rank filter" msgstr "" #: ../libvips/morphology/rank.c:429 msgid "index" msgstr "" #: ../libvips/morphology/rank.c:430 msgid "Select pixel at index" msgstr "" #: ../libvips/morphology/hitmiss.c:321 #, c-format msgid "bad mask element (%d should be 0, 128 or 255)" msgstr "" #: ../libvips/morphology/morphology.c:111 msgid "morphological operations" msgstr "" #: ../libvips/morphology/morph.c:136 msgid "morphology operation" msgstr "" #: ../libvips/morphology/morph.c:152 msgid "Morphology" msgstr "" #: ../libvips/morphology/morph.c:153 msgid "Morphological operation to perform" msgstr "" #: ../libvips/mosaicing/im_tbmosaic.c:90 #: ../libvips/mosaicing/im_lrmosaic.c:114 msgid "bad area parameters" msgstr "" #: ../libvips/mosaicing/im_tbmosaic.c:111 #: ../libvips/mosaicing/im_lrmosaic.c:135 msgid "overlap too small for search" msgstr "" #: ../libvips/mosaicing/im_tbmosaic.c:144 #: ../libvips/mosaicing/im_lrmosaic.c:168 msgid "unknown Coding type" msgstr "" #: ../libvips/mosaicing/im_avgdxdy.c:65 msgid "no points to average" msgstr "" #: ../libvips/mosaicing/im_tbcalcon.c:103 #: ../libvips/mosaicing/im_chkpair.c:205 msgid "help!" msgstr "" #: ../libvips/mosaicing/im_tbcalcon.c:117 msgid "overlap too small" msgstr "" #: ../libvips/mosaicing/im_tbmerge.c:164 ../libvips/mosaicing/im_tbmerge.c:218 #: ../libvips/mosaicing/im_tbmerge.c:536 ../libvips/mosaicing/im_lrmerge.c:216 #: ../libvips/mosaicing/im_lrmerge.c:265 ../libvips/mosaicing/im_lrmerge.c:606 msgid "internal error" msgstr "" #: ../libvips/mosaicing/im_tbmerge.c:635 ../libvips/mosaicing/im_lrmerge.c:806 msgid "unknown coding type" msgstr "" #: ../libvips/mosaicing/im_tbmerge.c:653 ../libvips/mosaicing/im_lrmerge.c:823 msgid "too much overlap" msgstr "" #: ../libvips/mosaicing/im_lrcalcon.c:204 msgid "overlap too small for your search size" msgstr "" #: ../libvips/mosaicing/im_lrcalcon.c:243 #, c-format msgid "found %d tie-points, need at least %d" msgstr "" #: ../libvips/mosaicing/im_lrcalcon.c:288 msgid "not 1-band uchar image" msgstr "" #: ../libvips/mosaicing/im_clinear.c:137 msgid "im_invmat failed" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:115 #, c-format msgid "substitute image \"%s\" is not the same size as \"%s\"" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:160 #: ../libvips/mosaicing/global_balance.c:1767 msgid "global balance an image mosaic" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:176 msgid "old_str" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:177 msgid "Search for this string" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:183 msgid "new_str" msgstr "" #: ../libvips/mosaicing/im_remosaic.c:184 msgid "And swap for this string" msgstr "" #: ../libvips/mosaicing/im_chkpair.c:201 msgid "inputs incompatible" msgstr "" #: ../libvips/mosaicing/merge.c:105 msgid "merge two images" msgstr "" #: ../libvips/mosaicing/merge.c:110 ../libvips/mosaicing/mosaic1.c:490 #: ../libvips/mosaicing/mosaic.c:181 ../libvips/mosaicing/match.c:205 msgid "Reference image" msgstr "" #: ../libvips/mosaicing/merge.c:115 ../libvips/mosaicing/mosaic1.c:495 #: ../libvips/mosaicing/mosaic.c:186 ../libvips/mosaicing/match.c:210 msgid "Secondary" msgstr "" #: ../libvips/mosaicing/merge.c:116 ../libvips/mosaicing/mosaic1.c:496 #: ../libvips/mosaicing/mosaic.c:187 ../libvips/mosaicing/match.c:211 msgid "Secondary image" msgstr "" #: ../libvips/mosaicing/merge.c:128 msgid "Horizontal or vertcial merge" msgstr "" #: ../libvips/mosaicing/merge.c:134 msgid "dx" msgstr "" #: ../libvips/mosaicing/merge.c:135 msgid "Horizontal displacement from sec to ref" msgstr "" #: ../libvips/mosaicing/merge.c:141 msgid "dy" msgstr "" #: ../libvips/mosaicing/merge.c:142 msgid "Vertical displacement from sec to ref" msgstr "" #: ../libvips/mosaicing/merge.c:148 ../libvips/mosaicing/mosaic1.c:597 #: ../libvips/mosaicing/mosaic.c:247 msgid "Max blend" msgstr "" #: ../libvips/mosaicing/merge.c:149 ../libvips/mosaicing/mosaic1.c:598 #: ../libvips/mosaicing/mosaic.c:248 msgid "Maximum blend size" msgstr "" #: ../libvips/mosaicing/mosaic1.c:485 msgid "first-order mosaic of two images" msgstr "" #: ../libvips/mosaicing/mosaic1.c:508 ../libvips/mosaicing/mosaic.c:199 msgid "Horizontal or vertcial mosaic" msgstr "" #: ../libvips/mosaicing/mosaic1.c:514 ../libvips/mosaicing/match.c:222 msgid "xr1" msgstr "" #: ../libvips/mosaicing/mosaic1.c:515 ../libvips/mosaicing/mosaic1.c:522 #: ../libvips/mosaicing/match.c:223 ../libvips/mosaicing/match.c:230 msgid "Position of first reference tie-point" msgstr "" #: ../libvips/mosaicing/mosaic1.c:521 ../libvips/mosaicing/match.c:229 msgid "yr1" msgstr "" #: ../libvips/mosaicing/mosaic1.c:528 ../libvips/mosaicing/match.c:236 msgid "xs1" msgstr "" #: ../libvips/mosaicing/mosaic1.c:529 ../libvips/mosaicing/mosaic1.c:536 #: ../libvips/mosaicing/match.c:237 ../libvips/mosaicing/match.c:244 msgid "Position of first secondary tie-point" msgstr "" #: ../libvips/mosaicing/mosaic1.c:535 ../libvips/mosaicing/match.c:243 msgid "ys1" msgstr "" #: ../libvips/mosaicing/mosaic1.c:542 ../libvips/mosaicing/match.c:250 msgid "xr2" msgstr "" #: ../libvips/mosaicing/mosaic1.c:543 ../libvips/mosaicing/mosaic1.c:550 #: ../libvips/mosaicing/match.c:251 ../libvips/mosaicing/match.c:258 msgid "Position of second reference tie-point" msgstr "" #: ../libvips/mosaicing/mosaic1.c:549 ../libvips/mosaicing/match.c:257 msgid "yr2" msgstr "" #: ../libvips/mosaicing/mosaic1.c:556 ../libvips/mosaicing/match.c:264 msgid "xs2" msgstr "" #: ../libvips/mosaicing/mosaic1.c:557 ../libvips/mosaicing/mosaic1.c:564 #: ../libvips/mosaicing/match.c:265 ../libvips/mosaicing/match.c:272 msgid "Position of second secondary tie-point" msgstr "" #: ../libvips/mosaicing/mosaic1.c:563 ../libvips/mosaicing/match.c:271 msgid "ys2" msgstr "" #: ../libvips/mosaicing/mosaic1.c:570 ../libvips/mosaicing/mosaic.c:233 #: ../libvips/mosaicing/match.c:278 msgid "hwindow" msgstr "" #: ../libvips/mosaicing/mosaic1.c:571 ../libvips/mosaicing/mosaic.c:234 #: ../libvips/mosaicing/match.c:279 msgid "Half window size" msgstr "" #: ../libvips/mosaicing/mosaic1.c:577 ../libvips/mosaicing/mosaic.c:240 #: ../libvips/mosaicing/match.c:285 msgid "harea" msgstr "" #: ../libvips/mosaicing/mosaic1.c:578 ../libvips/mosaicing/mosaic.c:241 #: ../libvips/mosaicing/match.c:286 msgid "Half area size" msgstr "" #: ../libvips/mosaicing/mosaic1.c:584 ../libvips/mosaicing/match.c:292 msgid "search" msgstr "" #: ../libvips/mosaicing/mosaic1.c:585 ../libvips/mosaicing/match.c:293 msgid "Search to improve tie-points" msgstr "" #: ../libvips/mosaicing/mosaic1.c:591 ../libvips/mosaicing/match.c:299 #: ../libvips/resample/resize.c:297 ../libvips/resample/similarity.c:132 #: ../libvips/resample/quadratic.c:354 ../libvips/resample/affine.c:566 msgid "Interpolate" msgstr "" #: ../libvips/mosaicing/mosaic1.c:592 ../libvips/mosaicing/match.c:300 #: ../libvips/resample/resize.c:298 ../libvips/resample/similarity.c:133 #: ../libvips/resample/affine.c:567 msgid "Interpolate pixels with this" msgstr "" #: ../libvips/mosaicing/mosaic1.c:604 ../libvips/mosaicing/mosaic.c:254 msgid "Search band" msgstr "" #: ../libvips/mosaicing/mosaic1.c:605 ../libvips/mosaicing/mosaic.c:255 msgid "Band to search for features on" msgstr "" #: ../libvips/mosaicing/mosaic.c:176 msgid "mosaic two images" msgstr "" #: ../libvips/mosaicing/mosaic.c:205 msgid "xref" msgstr "" #: ../libvips/mosaicing/mosaic.c:206 ../libvips/mosaicing/mosaic.c:213 msgid "Position of reference tie-point" msgstr "" #: ../libvips/mosaicing/mosaic.c:212 msgid "yref" msgstr "" #: ../libvips/mosaicing/mosaic.c:219 msgid "xsec" msgstr "" #: ../libvips/mosaicing/mosaic.c:220 ../libvips/mosaicing/mosaic.c:227 msgid "Position of secondary tie-point" msgstr "" #: ../libvips/mosaicing/mosaic.c:226 msgid "ysec" msgstr "" #: ../libvips/mosaicing/mosaic.c:261 ../libvips/mosaicing/mosaic.c:268 msgid "Integer offset" msgstr "" #: ../libvips/mosaicing/mosaic.c:262 ../libvips/mosaicing/mosaic.c:269 msgid "Detected integer offset" msgstr "" #: ../libvips/mosaicing/mosaic.c:276 msgid "Detected scale" msgstr "" #: ../libvips/mosaicing/mosaic.c:283 msgid "Detected rotation" msgstr "" #: ../libvips/mosaicing/mosaic.c:289 ../libvips/mosaicing/mosaic.c:296 msgid "First-order displacement" msgstr "" #: ../libvips/mosaicing/mosaic.c:290 ../libvips/mosaicing/mosaic.c:297 msgid "Detected first-order displacement" msgstr "" #: ../libvips/mosaicing/im_lrmerge.c:706 msgid "mwidth must be -1 or >= 0" msgstr "" #: ../libvips/mosaicing/im_lrmerge.c:735 msgid "no overlap" msgstr "" #: ../libvips/mosaicing/match.c:200 msgid "first-order match of two images" msgstr "" #: ../libvips/mosaicing/global_balance.c:148 msgid "no matching '>'" msgstr "" #: ../libvips/mosaicing/global_balance.c:157 msgid "too many items" msgstr "" #: ../libvips/mosaicing/global_balance.c:451 msgid "circularity detected" msgstr "" #: ../libvips/mosaicing/global_balance.c:485 #: ../libvips/mosaicing/global_balance.c:545 #, c-format msgid "image \"%s\" used twice as output" msgstr "" #: ../libvips/mosaicing/global_balance.c:594 msgid "bad number of args in join line" msgstr "" #: ../libvips/mosaicing/global_balance.c:636 msgid "bad number of args in join1 line" msgstr "" #: ../libvips/mosaicing/global_balance.c:672 msgid "bad number of args in copy line" msgstr "" #: ../libvips/mosaicing/global_balance.c:730 msgid "" "mosaic root not found in desc file\n" "is this really a mosaiced image?" msgstr "" #: ../libvips/mosaicing/global_balance.c:741 msgid "more than one root" msgstr "" #: ../libvips/mosaicing/global_balance.c:1060 msgid "empty overlap!" msgstr "" #: ../libvips/mosaicing/global_balance.c:1783 msgid "gamma" msgstr "" #: ../libvips/mosaicing/global_balance.c:1784 msgid "Image gamma" msgstr "" #: ../libvips/mosaicing/global_balance.c:1790 msgid "Int output" msgstr "" #: ../libvips/mosaicing/global_balance.c:1791 msgid "Integer output" msgstr "" #: ../libvips/resample/interpolate.c:183 msgid "VIPS interpolators" msgstr "" #: ../libvips/resample/interpolate.c:359 msgid "nearest-neighbour interpolation" msgstr "" #: ../libvips/resample/interpolate.c:553 msgid "bilinear interpolation" msgstr "" #: ../libvips/resample/resample.c:86 msgid "resample operations" msgstr "" #: ../libvips/resample/resize.c:277 msgid "resize an image" msgstr "" #: ../libvips/resample/resize.c:283 msgid "Scale factor" msgstr "" #: ../libvips/resample/resize.c:284 msgid "Scale image by this factor" msgstr "" #: ../libvips/resample/resize.c:290 msgid "Vertical scale factor" msgstr "" #: ../libvips/resample/resize.c:291 msgid "Vertical scale image by this factor" msgstr "" #: ../libvips/resample/resize.c:303 ../libvips/resample/resize.c:310 #: ../libvips/resample/similarity.c:152 ../libvips/resample/similarity.c:159 #: ../libvips/resample/affine.c:593 ../libvips/resample/affine.c:600 msgid "Input offset" msgstr "" #: ../libvips/resample/resize.c:304 ../libvips/resample/similarity.c:153 #: ../libvips/resample/affine.c:594 msgid "Horizontal input displacement" msgstr "" #: ../libvips/resample/resize.c:311 ../libvips/resample/similarity.c:160 #: ../libvips/resample/affine.c:601 msgid "Vertical input displacement" msgstr "" #: ../libvips/resample/similarity.c:114 msgid "similarity transform of an image" msgstr "" #: ../libvips/resample/similarity.c:119 msgid "Scale by this factor" msgstr "" #: ../libvips/resample/similarity.c:126 msgid "Rotate anticlockwise by this many degrees" msgstr "" #: ../libvips/resample/similarity.c:138 ../libvips/resample/similarity.c:145 #: ../libvips/resample/affine.c:579 ../libvips/resample/affine.c:586 msgid "Output offset" msgstr "" #: ../libvips/resample/similarity.c:139 ../libvips/resample/affine.c:580 msgid "Horizontal output displacement" msgstr "" #: ../libvips/resample/similarity.c:146 ../libvips/resample/affine.c:587 msgid "Vertical output displacement" msgstr "" #: ../libvips/resample/shrink.c:130 msgid "shrink an image" msgstr "" #: ../libvips/resample/shrink.c:136 msgid "Xshrink" msgstr "" #: ../libvips/resample/shrink.c:137 msgid "Horizontal shrink factor" msgstr "" #: ../libvips/resample/shrink.c:143 msgid "Yshrink" msgstr "" #: ../libvips/resample/shrink.c:144 msgid "Vertical shrink factor" msgstr "" #: ../libvips/resample/quadratic.c:270 msgid "coefficient matrix must have width 2" msgstr "" #: ../libvips/resample/quadratic.c:292 msgid "coefficient matrix must have height 1, 3, 4 or 6" msgstr "" #: ../libvips/resample/quadratic.c:344 msgid "resample an image with a quadratic transform" msgstr "" #: ../libvips/resample/quadratic.c:348 msgid "Coeff" msgstr "" #: ../libvips/resample/quadratic.c:349 msgid "Coefficient matrix" msgstr "" #: ../libvips/resample/quadratic.c:355 msgid "Interpolate values with this" msgstr "" #: ../libvips/resample/affine.c:484 msgid "output coordinates out of range" msgstr "" #: ../libvips/resample/affine.c:555 msgid "affine transform of an image" msgstr "" #: ../libvips/resample/affine.c:559 msgid "Matrix" msgstr "" #: ../libvips/resample/affine.c:560 msgid "Transformation matrix" msgstr "" #: ../libvips/resample/affine.c:572 msgid "Output rect" msgstr "" #: ../libvips/resample/affine.c:573 msgid "Area of output to generate" msgstr "" #: ../libvips/video/im_video_test.c:52 msgid "error requested" msgstr "" #: ../tools/vips.c:154 #, c-format msgid "'%s' is not the name of a vips class" msgstr "" #: ../tools/vips.c:170 msgid "list objects" msgstr "" #: ../tools/vips.c:171 msgid "BASE-NAME" msgstr "" #: ../tools/vips.c:173 msgid "load PLUGIN" msgstr "" #: ../tools/vips.c:174 msgid "PLUGIN" msgstr "" #: ../tools/vips.c:176 msgid "print version" msgstr "" #: ../tools/vips.c:219 #, c-format msgid "no package or function \"%s\"" msgstr "" #: ../tools/vips.c:1000 msgid "list classes|packages|all|package-name|operation-name" msgstr "" #: ../tools/vips.c:1002 msgid "generate headers for C++ binding" msgstr "" #: ../tools/vips.c:1004 msgid "generate bodies for C++ binding" msgstr "" #: ../tools/vips.c:1006 msgid "generate links for vips/bin" msgstr "" #: ../tools/vips.c:1008 msgid "list possible actions" msgstr "" #: ../tools/vips.c:1027 msgid "execute vips operation OPER" msgstr "" #: ../tools/vips.c:1059 msgid "Operation help" msgstr "" #: ../tools/vips.c:1098 msgid "[ACTION] [OPTIONS] [PARAMETERS] - VIPS driver program" msgstr "" #: ../tools/vips.c:1271 #, c-format msgid "unknown action \"%s\"" msgstr "" #: ../tools/vipsedit.c:83 msgid "tag file as big or little-endian" msgstr "" #: ../tools/vipsedit.c:85 msgid "set width to N pixels" msgstr "" #: ../tools/vipsedit.c:87 msgid "set height to N pixels" msgstr "" #: ../tools/vipsedit.c:89 msgid "set Bands to N" msgstr "" #: ../tools/vipsedit.c:91 msgid "set BandFmt to F (eg. uchar, float)" msgstr "" #: ../tools/vipsedit.c:93 msgid "set interpretation to I (eg. xyz)" msgstr "" #: ../tools/vipsedit.c:95 msgid "set Coding to C (eg. labq)" msgstr "" #: ../tools/vipsedit.c:97 msgid "set Xres to R pixels/mm" msgstr "" #: ../tools/vipsedit.c:99 msgid "set Yres to R pixels/mm" msgstr "" #: ../tools/vipsedit.c:101 msgid "set Xoffset to N pixels" msgstr "" #: ../tools/vipsedit.c:103 msgid "set Yoffset to N pixels" msgstr "" #: ../tools/vipsedit.c:105 msgid "replace extension block with stdin" msgstr "" #: ../tools/vipsedit.c:107 msgid "set Xsize to N (deprecated, use width)" msgstr "" #: ../tools/vipsedit.c:109 msgid "set Ysize to N (deprecated, use height)" msgstr "" #: ../tools/vipsedit.c:111 msgid "set Type to T (deprecated, use interpretation)" msgstr "" #: ../tools/vipsedit.c:122 #, c-format msgid "'%s' is not a positive integer" msgstr "" #: ../tools/vipsedit.c:135 msgid "unable to start VIPS" msgstr "" #: ../tools/vipsedit.c:140 msgid "vipsedit - edit vips file header" msgstr "" #: ../tools/vipsedit.c:156 #, c-format msgid "usage: %s [OPTION...] vips-file\n" msgstr "" #: ../tools/vipsedit.c:163 #, c-format msgid "could not open image %s" msgstr "" #: ../tools/vipsedit.c:166 #, c-format msgid "could not read VIPS header for %s" msgstr "" #: ../tools/vipsedit.c:175 #, c-format msgid "bad endian-ness %s, should be 'big' or 'little'" msgstr "" #: ../tools/vipsedit.c:188 #, c-format msgid "bad format %s" msgstr "" #: ../tools/vipsedit.c:196 #, c-format msgid "bad interpretation %s" msgstr "" #: ../tools/vipsedit.c:204 #, c-format msgid "bad coding %s" msgstr "" #: ../tools/vipsedit.c:217 #, c-format msgid "could not seek on %s" msgstr "" #: ../tools/vipsedit.c:220 #, c-format msgid "could not write to %s" msgstr "" #: ../tools/vipsedit.c:227 msgid "could not get ext data" msgstr "" #: ../tools/vipsedit.c:236 msgid "could not set extension" msgstr "" #: ../tools/vipsheader.c:88 msgid "show all fields" msgstr "" #: ../tools/vipsheader.c:90 msgid "" "print value of FIELD (\"getext\" reads extension block, \"Hist\" reads image " "history)" msgstr "" #: ../tools/vipsheader.c:192 msgid "- print image header" msgstr "" #: ../tools/vipsthumbnail.c:117 msgid "shrink to SIZE or to WIDTHxHEIGHT" msgstr "" #: ../tools/vipsthumbnail.c:118 msgid "SIZE" msgstr "" #: ../tools/vipsthumbnail.c:121 msgid "set output to FORMAT" msgstr "" #: ../tools/vipsthumbnail.c:122 ../tools/vipsthumbnail.c:126 msgid "FORMAT" msgstr "" #: ../tools/vipsthumbnail.c:125 msgid "set output format string to FORMAT" msgstr "" #: ../tools/vipsthumbnail.c:129 msgid "resample with INTERPOLATOR" msgstr "" #: ../tools/vipsthumbnail.c:130 msgid "INTERPOLATOR" msgstr "" #: ../tools/vipsthumbnail.c:133 msgid "sharpen with none|mild|MASKFILE" msgstr "" #: ../tools/vipsthumbnail.c:134 msgid "none|mild|MASKFILE" msgstr "" #: ../tools/vipsthumbnail.c:137 msgid "export with PROFILE" msgstr "" #: ../tools/vipsthumbnail.c:138 ../tools/vipsthumbnail.c:142 msgid "PROFILE" msgstr "" #: ../tools/vipsthumbnail.c:141 msgid "import untagged images with PROFILE" msgstr "" #: ../tools/vipsthumbnail.c:145 msgid "process in linear space" msgstr "" #: ../tools/vipsthumbnail.c:148 msgid "crop exactly to SIZE" msgstr "" #: ../tools/vipsthumbnail.c:151 msgid "auto-rotate" msgstr "" #: ../tools/vipsthumbnail.c:154 msgid "delete profile from exported image" msgstr "" #: ../tools/vipsthumbnail.c:157 ../tools/vipsthumbnail.c:160 #: ../tools/vipsthumbnail.c:163 msgid "(deprecated, does nothing)" msgstr "" #: ../tools/vipsthumbnail.c:502 #, c-format msgid "unable to import with embedded profile: %s" msgstr "" #: ../tools/vipsthumbnail.c:693 msgid "- thumbnail generator" msgstr "" #: ../tools/vipsthumbnail.c:724 msgid "auto-rotate disabled: libvips built without exif support" msgstr "" #: ../libvips/resample/vsqbs.cpp:405 msgid "B-Splines with antialiasing smoothing" msgstr "" #: ../libvips/resample/bicubic.cpp:506 msgid "bicubic interpolation (Catmull-Rom)" msgstr "" #: ../libvips/resample/lbb.cpp:865 msgid "reduced halo bicubic" msgstr "" #: ../libvips/resample/nohalo.cpp:1586 msgid "edge sharpening resampler with halo reduction" msgstr "" vips-8.2.2/po/de.gmo0000664000175000017500000016425112530403101011137 00000000000000Þ•4L0h@"i@Œ@¦@¿@ ß@.í@'ADA'ZA#‚A,¦AÓA8ÖAB$BBB]BbBB–B¬B¾BÎBéBCC%C,C5C0;ClCrCˆC›C ±C%¼C âCíCòCD#D,D4D*KDvD•DœD°D-ÂD'ðDE*E9E@E VEbEuEE ¦E°E ÆE ÓE ßEéEFF F-F GFRF(YF‚FšF¡F¨F­FÃFÓFïFøFG"G4G:GNG]GdGvGyG’G™G°GÌGëG" H -HNH cHpHH–H §HµHËH ÑHÝH òHüH II6I9I>IOITInI‹I¤I½IÃIÉIäIJJ!J:J=JBJSJ mJ wJ˜JJ®JÎJçJðJ K$KCK"`K ƒK K šK¤K«K ÆK ÓKàKçKïKôK LL1LFL\LvL%L¶LÐLØLÚL,ãL&M7M"LMoM#„M!¨MÊMÚMàMúM N#N(N ;NEN ZNeNzN–N³N¸NÊNÑNçNöN-ûN)OAOXO_O{O „O#ŽO²O1·OéO"ìOP &P1P 6PBP XPcPxP|P•P±P ÉPÖPéPMQQQkQˆQ ¥Q ÆQÑQ×QíQRR-R/R7RRFR5KRR–R'˜R*ÀRëRúR!S7SFSdSSS!³S!ÕS÷ST%TTTThT qT T ŒT šT ¤T ²T¿TÎT/ßTU U1U KU YU cUqU ‰UªU¼UÑUàUïUVV5V=V SV`V-qV ŸV­VÍV íVW$W 7WEW TWaWvW W‰W ›W¼W ÚW"åWXX% XFXYX_XaXpXX«X*ÂXíX Y,Y'EY+mY™YµYÓY ñYÿYZ1ZFZ&[Z‚Z•Z±ZÇZ ÜZ êZ ["[!:[\[q[‰[Ÿ[¹[Í[Ü[!ù[\ *\)4\^\n\(€\©\Á\Þ\í\ ] )]4] C]d](]ª]À]Ý]û]^$^6^#T^!x^š^"¯^Ò^ï^ _ _4_K_i_„_ž_º_ Ð_ñ_``2` M` Z`f`y`Œ`Ÿ`-°` Þ`)ì`%a“i$Òi÷i j5+j$aj †j ’jžj!°jÒjéjÿjk,kGk `kjk€k”k§kºkÍkçkûkll!1lJSl#žlÂlÒlílþlm%m*†X†0m†*ž†*Ɇô†û†‡!4‡V‡o‡‡‡#–‡º‡ ʇׇñ‡ ˆ*ˆ;ˆ Lˆ&Zˆ:ˆ¼ˆ ׈"äˆ ‰‰‰'‰:‰I‰X‰Z‰m‰‰‰« ‰$L‹(q‹š‹%´‹Ú‹4é‹%ŒDŒ%\Œ)‚Œ.¬ŒÛŒ>ÞŒ2Pl"q”¯Íá(ó2Ž*OŽzŽ€Ž†Ž —ŽC¢ŽæŽíŽ  8E cot‹,“ÀÈ7à6#=&a>ˆ7Çÿ‘ $‘.‘ I‘W‘l‘‹‘ ¦‘°‘ Ë‘ Ù‘æ‘1ï‘!’(’1’2@’ s’ ~’EŠ’Ð’ ê’÷’ þ’“%“06“ g“+q“-“Ë“Þ“ç“ ” ”&”;” >”_”e”!…”!§”!É”(ë”0•E• _• l•z•“•¨•½•ו ß•ë• ÿ• ––>,–k–n–u–ˆ–'Ž–&¶–&Ý–——%—,—J—j—Š— Œ—­—°—¸—%É—ï—@ÿ—@˜F˜]˜|˜˜˜ ¡˜ ˜%ã˜( ™$2™ W™e™ v™‚™Š™ ¦™ ²™ ¾™Ê™Ñ™!×™ù™ š$š<š!Xšzš*˜š!Úåšîšðš=ùš67›n›#…›!©›Ë›é›œœ#œ?œ Tœuœ~œ’œ šœ §œ³œÓœéœ ! -N d0r£À Ü$æ žž5ž Tž8`ž™ž"œž(¿ž èžòž ùžŸ Ÿ-ŸIŸ'NŸ&vŸ&Ÿ ÄŸÒŸæŸ` g ‡ § &Ç î ÷  þ ¡%:¡`¡¡¡‰¡Ž¡¡˜¡6¡Ô¡ë¡1í¡0¢P¢_¢*{¢¦¢'¾¢$æ¢! £-£(I£*r£.£Ì£ê£¤! ¤+¤E¤W¤n¤„¤–¤¦¤»¤ؤì¤@ÿ¤@¥^¥!y¥›¥­¥Å¥Ø¥'ø¥ ¦8¦Q¦e¦*v¦¡¦·¦Õ¦æ¦§§70§h§/~§/®§0Þ§¨'¨?¨R¨d¨u¨¨ ¨±¨>ɨ+© 4©<@©}©“©+œ©È©ã©è©ê©#ª,)ªVª/mª%ªêJݪ5(«J^«+©«.Õ«1¬6¬I¬g¬~¬›¬0¹¬ê¬$­&­!?­a­#s­1—­%É­4ï­"$®'G®&o®–®µ® Ò® à®8¯:¯Q¯9Z¯”¯¦¯+¹¯å¯2°8°%I°)o° ™°¥°1¹°0ë°5±R±"p±)“± ½±Þ±ï±&².5²2d²!—²&¹²$à²(³.³F³$]³&‚³©³ɳç³´$$´I´d´€´#•´ ¹´Ä´Ô´ê´µµ57µmµ4µB´µ&÷µ"¶A¶a¶.¶®¶#˶ï¶·6·9L·†·¢·'¿·ç·7¸ 8¸&C¸%j¸¸°¸ϸIá¸@+¹Wl¹ĹÛ¹õ¹ºR+º1~º°º#˺%ﺻ.»@»V»e»~»™»4¶»Dë»+0¼*\¼/‡¼N·¼$½2+½^½a½e½i½½œ½%·½$ݽ!¾$¾6,¾c¾y¾lŒ¾eù¾_¿o¿ˆ¿!¿¿¿ß¿ó¿À'ÀFÀRdÀ@·ÀøÀ&Á;<Á@xÁ ¹ÁÇÁÙÁ'íÁÂ-ÂDÂdÂx” ®Â¹ÂÏÂäÂøÂÃ&ÃEÃZÃuÆÃ(£ÃWÌÃ-$ÄRÄ eĆėijÄÌÄ4ãÄ1ÅJÅ-aÅÅM¤ÅòÅ! Æ/Æ1ÆKÆaÆqƅƚƺÆËÆ)ëÆÇ.ÇXNÇ§Ç ¼ÇÝÇ$÷Ç"È ?ÈMÈcÈ.‚È ±È&¿ÈæÈ2É8ÉXÉ*`ɋɡÉ+ÁÉ#íÉÊ!,Ê?NÊ4ŽÊÃÊÚÊ!ëÊ Ë#-Ë%QË)wË5¡Ë4×Ë. Ì9;Ì uÌ!Ì)£Ì)ÍÌ$÷ÌLÍ$iÍŽÍ£Í²Í ÆÍWÑÍ)Î:Î AÎLÎ"fΉÎ(¡Î+ÊÎöÎÏ/+Ï<[Ï;˜Ï(ÔÏ$ýÏ"Ð6Ð PÐ'qЙÐ:©Ð&äÐ9 Ñ%EÑkÑ „Ñ¥ÑÁÑ!ÞÑÒÒ 9ÒZÒvÒ%’Ò¸ÒÕÒòÒ ÓÓ,"ÓOÓ"dÓ>‡Ó#ÆÓ#êÓ<Ô#KÔ#oÔ=“Ô'ÑÔùÔ&Õ>Õ(XÕ#Õ¥ÕÄÕäÕ.Ö2Ö!GÖ!iÖ!‹Ö­Ö$ÂÖçÖ2×)8×1b×A”×Ö×,ï×#Ø@Ø"YØ|ØØ Ø³ØÃØÚØìØûØ(Ù%9Ù$_Ù „Ù"¥Ù$ÈÙ(íÙ!Ú*8Ú'cÚ'‹Ú/³Ú(ãÚ. Û%;ÛaÛ/yÛ"©Û#ÌÛ"ðÛ.Ü.BÜ2qÜ2¤Ü6×Ü)Ý08Ý@iÝ"ªÝ2ÍÝ>Þ2?Þ!rÞ'”Þ ¼ÞÝÞ ÷Þ=ß Vßwß$’ß(·ß,àß à("àKà+aà,à"ºà*Ýàá#á*Cá%ná”á ³á¿á"Ùá"üáâ8âTânâƒââ#¶âÚâ<øâ 5ãVã tã"•ã#¸ãÜã ùã*ä*Eä0pä¡ä!Áä8ãä2å2Oå‚å!Šå¬å$Ëåðå æ&æ/;æ kæ yæ†æ æ1¸æêæûæ ç8çATç–çµç*Îçùç è èè5èFè`èbèuè“èlš]%áhHn’1ñ7/ÊÓ $ic «Ã¹ã™ð¡ëã›Fa@¾ìD§ÀaèÜç‹ò}ß_£¢8“•}ä¥C£Ø0ìžýìü3'Æ ¤cBJóªÖ6ïy —…s]&ÆdyTb²8ª{`óg‹a vú‡±ttS2Î' ‘YâDç爻k5rŽ3w2xnËŒ‹³NexÌ?kµ¯¬@†:hÑ kf¥pqLm¡ˆƒC+ù.G°£Q¹bhA#*Õñ%Ù˜Y½jB‚¼ž®z9í|öú¬È¨M´ïá¢+ËgØl¹=EÇû–u¨×»‚MªzýÚ¥–X|)pEH[§ë±Åxß—ˆ¨Ž”Ÿ¿!UÈÿ*=!/É:~^ÿóm]‡Žböe)ÊÎôZK>  ÔV4¶ÍÅ>Ó’šÝ¶àºþŒ,·Æ…п 9‡oT¯öí[9™õå0î°ÁÀ?¬-û$Vw½½df-;Þ!œ¼QÑq<Þ’„ŠÕ©ºà0Ìõ(èÍ?´ |€Î/wòú»ôJÄ«tZl"H¸p%Í `Ùé”~­«Wå•éË×8BÔ#D\æ³®Äå°ÖƒØ˜jO23W5²êÖY_‘.i‰d1ï•êLÂÉþ¿O,"Ï(Þ”â¾ô)<—'CI(.Á W: ,ÑÒÉ1ÅÜœü¦²þáR´7yIŸsÊ©n±ZéîR&Ç ÄÀ7€¶V<Û} ëÒŒ@_†UÂÏõã\ýäêâÚu‰g*à ­ÛPR{OùM›SEæo^ºä ·à{ù;Q–‰qF­+¼›µîŸÛ¾X§j4„œ÷v·ŠPÔAµ&“ÚÝuc^¦¤so„÷eJ"פ‘‚6š¦>N#TðGñЩ¯=ƒÕ`røÿ4ÇXÁ5F¸íŠL¢®Èß™÷Óz;“ÌÜÐNrS¸ 6òøèû\†fæ~ v ÝKÏAUø…ÃÙÒžið€K³G[¡Pü$-mI˜ %s, %d band, %s %s, %d bands, %s bins out of range [1,%d]"%s" is not a VIPS image"%s" is not a known file format"%s" too long%d bits per sample palette image not supported%d overflows and %d underflows detected%d overflows detected%d underflows and %d overflows detected%d-dimensional images not supported%dx%d %s, %d band, %s%dx%d %s, %d bands, %s%s%s %s: %d threads, %d x %d tiles, groups of %d scanlines%s %s: %d%% complete%s %s: done in %ds %s is longer than expected%s: '%s' is not a positive integer- print image header- thumbnail generator1 to 5 bands only10^pel of image3 or 4 bands RGB TIFF only3-band uncoded float only4 or 5 bands CMYK TIFF onlyASCIIAcrossAdd thisAlignAlign on the low, centre or high coordinate edgeAngleAngle to rotate imageArray of constantsArray of input imagesAssociatedB-Splines with antialiasing smoothingBackgroundBandBand to extractBandsBicubic interpolation (Catmull-Rom)BigtiffBilinear interpolationBlend smoothly between then and else partsBlock evaluation on this imageBufferBuffer to load fromBuffer to save toCMYK input profile needs a 4 band input imageCMYK profile needs a 4 band input imageClass descriptionClass nicknameCodingColour for new pixelsCompressionCompression factorCompression for this fileCompression predictionConditionCondition input imageDemand styleDescriptionDirectionDirection to flip imageDiscDownEXR error: %sEdge sharpening resampler with halo reductionElse imageExpandExpand output to hold all of both inputsExpected access patternExtendFORMATFailFail on first warningFile descriptorFile descriptor to write toFilenameFilename to load fromFilename to save toFirst input imageFlagsFlags for this fileForeign bufferFormatFormat to cast toGBH not in range [-30,+30]HeightHeight of extract areaHorizontal offset of originHorizontal position of maximumHorizontal position of minimumHorizontal resolution in pixels/mmHow to generate the extra pixelsICC profile to embedINTERPOLATORImage filenameImage height in pixelsImage to measureImage to saveImage width in pixelsInputInput imageInput image argumentInterlaceInterlace imageInterpretationJoin left-right or up-downKBKillLABQ coding onlyLeftLeft edge of extract areaLeft edge of input in outputLeft edge of sub in mainLeft-hand image argumentLevelLinesLoad this associated imageLoad this level from the fileLoad this page from the fileMM not in range [-30,+30]MBMainMain input imageMat_VarReadDataAll failedMax tilesMaximum number of tiles to cacheModeMultiply by thisNearest-neighbour interpolationNeed more than one imageNicknameNumber of bands in imageNumber of bands to extractNumber of patches across chartNumber of patches down chartOffset in bytes from start of fileOpen modeOpen to discOperationOutputOutput array of statisticsOutput imageOutput valuePLUGINPROFILEPagePh not in range [0.0,1.0]Pixel codingPixel format in imagePixel interpretationPixels between imagesPm not in range [0.0,1.0]Pointer to foreign pixelsPreferred demand style for this imagePs not in range [0.0,1.0]PyramidQQ factorRGB input profile needs a 3 band input imageRGB profile needs a 3 band input imageRadiance coding onlyRead this many lines from the fileReduced halo bicubicRepeat this many times horizontallyRepeat this many times verticallyResolution unitRightRight-hand image argumentRound operationS not in range [-30,+30]SIZESecond input imageSeparatorSeparator charactersSequentialSequential read onlySet of separator charactersSet of whitespace charactersShimShow VIPS optionsShrinkShrink factor on loadSize of headerSkipSkip this many lines at the start of the fileSource for FALSE pixelsSource for TRUE pixelsSquashSquash images down to 1 bitStrategySub-imageSub-image to insert into main imageSwapSwap bytes in image between little and big-endianTBTIFF file does not contain page %dTIFF write tile failedThen imageTileTile heightTile height in pixelsTile widthTile width in pixelsTopTop edge of extract areaTop edge of input in outputTop edge of sub in mainVIPS OptionsVIPS interpolatorsVIPS statistic operationsVIPS_FOREIGN_PARTIAL and VIPS_FOREIGN_SEQUENTIAL both set -- using SEQUENTIALVertical offset of originVertical position of maximumVertical position of minimumVertical resolution in pixels/mmWhitespaceWidthWidth of extract areaWrite a bigtiff imageWrite a pyramidal tiffWrite a tiled tiffXXoffsetXresYYoffsetYres[ACTION] [OPTIONS] [PARAMETERS] - VIPS driver program[x,y,z]^pel of imageaa boolean operation on a pair of imagesa relational operation on a pair of imagesabsolute valueabsolute value of an imageacos of image (result in degrees)add two imagesallocation failure in mergeupallow at most N open filesargument `%s' has no instancearithmetic operationsasin of image (result in degrees)atan of image (result in degrees)auto-rewind for %s failedaverage image bandsaverage value of imagebbad Lb, Lw parametersbad area parametersbad argsbad args (ac)bad args (f)bad argumentsbad bandsbad coding %sbad colormapbad dimensionsbad display typebad endian-ness %s, should be 'big' or 'little'bad extract areabad extract bandbad file name format '%s'bad file typebad floatbad format %sbad greyscale mask sizebad greyscale mask value, row %dbad grid geometrybad image descriptorbad image sizebad image typebad in_max, out_max parametersbad input matrixbad input matrix sizebad intbad interpretation %sbad lut_sizebad magic numberbad mask element (%d should be 0, 128 or 255)bad mode "%s"bad number of args in copy linebad number of args in join linebad number of args in join1 linebad number of axis %dbad page number %dbad parameterbad parametersbad positionbad shrink factor %dbad sizebad sizesband-wise averagebands in must equal matrix widthbandwise join a set of imagesbase classbinary >8 bit images must be floatbinary operationsblendboolean operations against a constantboolean to performbytesccache an imagecache at most N bytes in memorycache at most N operationscalculate (a * in + b)calculate a*in + b -> out, a and b vectorscalculate a*in + b = outfilecalloc failedcan only pyramid LABQ and non-complex imagescan't have 1-bit JPEG -- disabling JPEGcan't have strip pyramid -- enabling tilingcannot get video capabilitycannot open video device "%s"card cannot capture to memorycast an imagechannel not between 0 and %dcircularity detectedclass "%s" not foundcommand failed: "%s"compiled without im_video_v4l1 supportcomplex to performcompress should be in [0,9]conversion operationscoords outside imagecopy an imagecos of image (angles in degrees)could not get ext datacould not open image %scould not read VIPS header for %scould not seek on %scould not set extensioncould not write to %sdatatype %d not supporteddemand hint not setdest too smalldimension should be in (2,3)dimensions above 3 must be size 1dir not 0 or 1directiondisable vectorised versions of operationsdisplay unknowndivide two imagesdon't delete profile from exported imagedon't sharpen thumbnaildump operation cache on exite^pel of imageelement out of range [0,1]embed an image in a larger imageempty lineempty overlap!end of file while skipping startenum '%s' has no member '%s'error parsing number, line %d, column %derror reading XML: %serror reading from file "%s"error reading radiance headererror reading resolutionerror requestederror saving EXIFerror setting JPEG resolutionerror transforming from save formaterror transforming to save formaterror writing outputevaluate with N concurrent threadsexecute named vips operationexpect 1xN or Nx1 input maskexpected %s, saw %sexport with PROFILEextra tokens after ')'extract an area from an imageextract band from an imagefactor should be in [1,0)factors should both be >= 1failure opening slidefield "%s" is of type %s, not %sfield "%s" not foundfile "%s" not foundfile has been truncatedfile is less than 64 bytesfile loadersfile saversfind image averagefind image maximumfind image minimumflag not -1 or 1flag should be 0 (horizontal) or 1 (vertical)flip an imageform a complex image from two real imagesfound %d tie-points, need at least %dgenerate bodies for C++ bindinggenerate headers for C++ bindinggenerate links for vips/bingenerate() called twiceget a component from a complex imagegetting dimensions: %sheader file size incorrectheader size incorrecthelp!histograms must have not have more than 65536 elementshistograms must have width or height 1ifthenelse an imageim_invmat failedimage "%s" used twice as outputimage already writtenimage and band_fmt must match in signimage classimage coding must be NONE or LABQimage dimensions overflow intimage does not have that many bandsimage has shrunk to nothingimage must be %simage must be 8- or 16-bit integer, signed or unsignedimage must be 8- or 16-bit unsigned integerimage must be 8- or 16-bit unsigned integer, or floatimage must be compleximage must be integerimage must be non-compleximage must be uncodedimage must be unsigned int or floatimage must be unsigned integerimage must have %d bandsimage must have 1 or %d bandsimage must have one or three bandsimage must one bandimage not readableimage not writeableimage too narrowimage too small for maskimage too small for windowimages do not matchimages do not match in pixel sizeimages larger than N are decompressed to discimages must have the same band formatimages must have the same codingimages must have the same number of bandsimages must have the same number of bands, or one must be single-bandimages must match in sizeimport untagged images with PROFILEinin1in2inappropriate region typeincomplete headerincorrect namespace in XMLindex should be in range 0 - %dink image does not match in imageink image not 1x1 pixelsinputinput not 3-band uncoded charinputs incompatibleinsert an imageintent %d (%s) not supported by profile "%s"; falling back to default intent (usually PERCEPTUAL)intent %d (%s) not supported by profile; falling back to default intent (usually PERCEPTUAL)internal errorinternal error #9876345invalid argumentinvalid associated image nameinvalid markup in textinvalid slide levelinvert an imageioctl(0x%x) failed: %sjoin a pair of imageskilled for image "%s"layer buffer exhausted -- try making TIFF output tiles smallerlcms library not linked to this VIPSleak-check on exitlinear recombination with matrixlist classes|packages|all|package-name|operation-namelmcs library not linked to this VIPSln of imageload PLUGINload a FITS imageload a Radiance image from a fileload an Analyze6 imageload an OpenEXR imageload and save image filesload csv from fileload file with ImageMagickload file with OpenSlideload jpegload jpeg from bufferload jpeg from fileload mat from fileload png from fileload ppm from fileload raw data from a fileload tiff from fileload vips from filelog10 of imagemake a black imagemany image statistics in one passmap failed (%s), running very low on system resources, expect a crash soonmask image not 1 band 8 bit uncodedmask must be 1Dmask sizes power of 2 onlymask too complexmath to performmatrix of coefficientsmaximum value of imagemeasure a set of patches on a colour chartmeasure averages of a grid of patchesminimum value of imagemore than a 10 megabytes of XML? sufferin' succotash!more than one rootmosaic root not found in desc file is this really a mosaiced image?multiply two imagesmwidth must be -1 or >= 0nno embedded profileno file descriptorno image datano input imagesno matching '>'no matrix variables in "%s"no overlapno package or function "%s"no pixel data on attached imageno points to averageno property named `%s'no resolution information for TIFF image "%s" -- defaulting to 1 pixel per mmno text to renderno vips argument named `%s'nonsense mask parametersnot , or ) after parameternot 1-band uchar imagenot a RAD imagenot a regular filenot one band or %d bandsnot whitespace before start of binary dataoperationsoperations on image bandsout of memoryout of memory --- size == %dMBout of range [0,255]outputoutput coordinates out of rangeoverlap too smalloverlap too small for searchoverlap too small for your search sizepangoft2 support disabledparameter %s not setparameters out of rangeparameters would result in zero size output imagepatch %d x %d, band %d: avg = %g, sdev = %gpel^[x,y,z] of imagepel^x of imageper-thread state for renderper-thread state for sinkper-thread state for sinkdiscper-thread state for sinkmemoryper-thread state for vipsthreadpoolperform a complex operation on an imageperform a math function on an imageperform a round function on an imagephase of cross power spectrum of two complex imagesphotographic negativepixelwise linear regressionposition and value of n maxima of imageposition and value of n minima of imageposition of maximum value of imageposition of maximum value of image, averaging in case of drawposition of minimum value of imagepossible actions: pow( @in, @c )pow( left, right)predictorprint value of FIELD ("getext" reads extension block, "Hist" reads image history)print versionprofileread errorread gave %ld warningsreading associated image: %sreading region: %sref not smaller than or equal to inrelational operations against a constantrelational to performremainder after integer divisionremainder after integer division by a constantremainder after integer division by a vector of constantsremainder after integer division of an image and a constantremainder after integer division of two imagesreplace extension block with stdinreplicate an imagerequired field %d missingrequired field %d=%d, not %dresample with INTERPOLATORrotate an imageround to largest integer value not greater thanround to nearest integer valueround to smallest integer value not less thanrounding operation to performsave as asciisave image to Radiance filesave image to csv filesave image to fits filesave image to jpeg buffersave image to jpeg filesave image to jpeg mimesave image to png buffersave image to png filesave image to ppm filesave image to raw filesave image to tiff filesave image to vips filesave jpegsave pngscalar images onlyset BandFmt to F (eg. uchar, float)set Bands to Nset Coding to C (eg. labq)set Type to T (deprecated, use interpretation)set Xoffset to N pixelsset Xres to R pixels/mmset Xsize to N (deprecated, use width)set Yoffset to N pixelsset Yres to R pixels/mmset Ysize to N (deprecated, use height)set fatstrip height to N (DEBUG)set height to N pixelsset interpretation to I (eg. xyz)set output to FORMATset thinstrip height to N (DEBUG)set thumbnail size to SIZEset tile height to N (DEBUG)set tile width to N (DEBUG)set width to N pixelsshift by zero: falling back to im_copyshow all fieldsshow progress feedbackshrink factors should be >= 1sin of image (angles in degrees)single band images onlysize must be even and positivestandard deviation of imagestart function failed for image "%s"start function failed for image %sstop function failed for image "%s"substitute image "%s" is not the same size as "%s"subtract two imagestag file as big or little-endiantan of image (angles in degrees)threads clipped to %dtile size not a multiple of 16too few argumentstoo little datatoo many argumentstoo many imagestoo many input imagestoo many itemstoo much datatoo much overlaptrace operation cacheuchar or ushort input onlyunable to CreateFileMappingunable to MapViewOfFileunable to UnmapViewOfFileunable to close fdunable to create profilesunable to create threadunable to create transform planunable to get file statsunable to get file statusunable to get media white pointunable to input from a %s imageunable to make temporary file %sunable to map memoryunable to mmapunable to mmap "%s" to same addressunable to mmap: "%s" - %sunable to munmap fileunable to open "%s"unable to open "%s" for inputunable to open "%s" for outputunable to open "%s", file too shortunable to open file "%s" for readingunable to open file "%s" for writingunable to open profile "%s"unable to output to a %s imageunable to ping file "%s" libMagick error: %s %sunable to read dataunable to read data for "%s", %sunable to read file "%s" libMagick error: %s %sunable to read header for "%s"unable to read historyunable to read pixelsunable to read profileunable to seekunable to set '%s'unable to set property "%s" to value "%s".unable to start VIPSunable to truncateunable to write "%s"unable to write to "%s"unable to write to bufferunary operationsunary operations with a constantuncoded images onlyunexpected EOF, line %d col %dunexpected EOL, line %d col %dunexpected end of stringunimplemented input color space 0x%xunimplemented maskunimplemented mask typeunimplemented output color space 0x%xunit vector in direction of valueunit vector of pixelunix errorunknown Coding typeunknown EXIF resolution unitunknown JFIF resolution unitunknown action "%s"unknown argument '%s'unknown band format %dunknown codingunknown coding typeunknown image codingunknown photometric interpretation %dunknown resolution unitunsigned 8-bit int, 16-bit int, and 32-bit float onlyunsupported BandFmt %d unsupported bit depthunsupported bit depth %dunsupported bitpix %d unsupported class type %d unsupported color typeunsupported colorspace %dunsupported depth %d for LAB imageunsupported depth %d for RGB imageunsupported depth %d for greyscale imageunsupported image type %dunsupported rank %d unsupported sample format %d for greyscale imageunsupported sample format %d for lab imageunsupported sample format %d for rgb imageusage:usage: %s [OPTION...] vipsfile valid clipped to nothingvector must have 1 or %d elementsvectors not equal lengthvectors not same lengthverbose outputvips configured without FFT supportvips diagnosticvips warningvips_free: too many freesvips_free: too much freevipsfile - edit vipsfile headerwindow too largewindow too smallwindows errorwould result in zero size output imagewrite error (%zd out of %zd blocks written) ... disc full?write error ... disc full?write failedwrite raw image to file descriptorwrong sizesxx range too smallx value not an intx^pel of imagexml save erroryzero input images!zoom factors should be >= 0zoom factors too largeProject-Id-Version: libvips-doc 7.36.5-1 Report-Msgid-Bugs-To: VIPSIP@JISCMAIL.AC.UK POT-Creation-Date: 2012-03-08 21:02+0000 PO-Revision-Date: 2014-03-12 21:58+0100 Last-Translator: Chris Leick Language-Team: Debian German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; %s, %d band, %s %s, %d Bänder, %s »bins« außerhalb des Bereichs [1,%d]»%s« ist kein VIPS-Bild»%s« ist kein bekanntes Dateiformat»%s« zu lang%d Bit pro Musterfarbpalettenbild nicht unterstützt%d Über- und %d Unterläufe entdeckt%d Überläufe entdeckt%d Unter- und %d Überläufe entdeckt%d-dimensionale Bilder nicht unterstützt%dx%d %s, %d Band, %s%dx%d %s, %d Bänder, %s%s%s %s: %d Threads, %d x %d Kacheln, Gruppen von %d Scan-Zeilen%s %s: %d%% komplett%s %s: Erledigt in %ds %s ist länger als erwartet%s: »%s« ist keine positive Ganzzahl- Bild-Kopfzeilen ausgeben- Miniaturansichten-Generatornur 1 bis 5 Bänder10^pel des Bildesnur RGB-TIFF mit drei oder vier Bändernnur unkodierte Fließkommazahlen mit drei Bändernnur CMYK-TIFF mit vier oder fünf BändernASCIIüberdies hinzufügenausrichtenam Rand der unteren, mittleren oder höchsten Koordinate ausrichtenWinkelWinkel zum Drehen eines BildesFeld aus KonstantenFeld von EingabebilderndazugehörigB-Splines mit KantenglättungHintergrundBandzu extrahierendes BandBänderdoppelt kubische Interpolation (Catmull-Rom)BigTIFFBilineare Interpolationnahtlos zwischen »dann«- und »sonst«-Teilen mischenBlockauswertung dieses BildesPufferPuffer, aus dem geladen werden sollPuffer, in den gespeichert werden sollCMYK-Eingabeprofil benötigt ein Eingabebild mit vier BändernCMYK-Profil benötigt ein Eingabebild mit vier BändernKlassenbeschreibungKlassen-NicknameKodierungFarbe für neue BildpunkteKomprimierungKomprimierungsfaktorKomprimierung für diese DateiPrognose der KomprimierungBedingungBedingung des EingabebildsNachfragestilBeschreibungRichtungRichtung, nach der das Bild umgedreht werden sollPlattehinunterEXR-Fehler: %sneues Kantenschärfungsmuster mit Halo-Reduzierungsonst BildexpandierenAusgabe so expandieren, dass sie beide Eingaben vollständig enthälterwartetes ZugriffsmustervergrößernFORMATscheiternscheitert bei erster WarnungDatei-DeskriptorDatei-Deskriptor, in den geschrieben werden sollDateinameName der Datei, aus der geladen werden sollName der Datei in die gespeichert werden sollerstes EingabebildSchalterSchalter für diese DateiFremdpufferFormatFormat, in das umgewandelt werden sollGB»H« nicht im Bereich [-30,+30]HöheHöhe des extrahierten Bereichshorizontaler Versatz vom Ursprunghorizontale Position des Maximumshorizontale Position des Minimumshorizontale Auflösung in Bildpunkten/mmWie werden die zusätzlichen Bildpunkte erzeugt?einzubettendes ICC-ProfilINTERPOLATORBilddateinameBildhöhe in Bildpunktenzu vermessendes Bildzu speicherndes BildBildbreite in BildpunktenEingabeEingabebildEingabebildargumentZeilensprungZeilensprungbildInterpretationvon links nach rechts oder von oben nach unten zusammenführenKBtötenNur LABQ-Kodierunglinkslinke Kante eines extrahierten Bereichslinker Rand der Eingabe in der Ausgabelinker Rand des Teilbilds im Hauptbildlinksseitiges BildargumentEbeneZeilendieses zugehörige Bild ladendiese Ebene aus der Datei ladendiese Seite aus der Datei ladenM»M« nicht im Bereich [-30,+30]MBprimärHaupteingabebild»Mat_VarReadDataAll« fehlgeschlagenKacheln maximalmaximale Anzahl von Kacheln, die zwischengespeichert werden sollModushiermit multiplizierenNächste-Nachbar-InterpolationMehr als ein Bild benötigtNicknameAnzahl der Bänder in einem BildAnzahl zu extrahierender BänderAnzahl der Patches über ein DiagrammAnzahl der Patches ein Diagramm hinunterVersatz in Byte vom Anfang der DateiÖffnen-Modusoffen zur PlatteTransaktionAusgabeAusgabefeld von StatistikenAusgabebildAusgabewertERWEITERUNGPROFILSeite»Ph« nicht im Bereich [0.0,1.0]BildpunktkodierungBildpunktformat im BildBildpunktinterpretationBildpunkte zwischen Bildern»Pm« nicht im Bereich [0.0,1.0]Puffer für fremde Bildpunktefür dieses Bild bevorzugter Nachfragestil»Ps« nicht im Bereich [0.0,1.0]PyramideQQ-FaktorRGB-Eingabeprofil benötigt ein Eingabebild mit drei BändernRGB-Profil benötigt ein Eingabebild mit drei BändernNur Radiance-Kodierungso viele Zeilen aus der Datei lesendoppelt kubische Halo-Reduzierunghorizontal so oft wiederholenvertikal so oft wiederholenEinheit der Auflösungrechtsrechtsseitiges BildargumentRundungstransakktion»S« nicht im Bereich [-30,+30]GRÖẞEzweites EingabebildTrennerTrennzeichensequenziellsequenziell nur mit LesezugriffSatz von TrennzeichenSatz von LeerraumzeichenScheibeVIPS-Optionen anzeigenverkleinernfalscher Verkleinerungsfaktor %dGröße der Kopfdatenüberspringenso viele Zeilen ab dem Dateianfang überspringenQuelle für FALSE-BildpunkteQuelle für TRUE-BildpunktequetschenBilder auf ein Bit zusammenquetschenStrategieTeilbildTeilbild, das in das Hauptbild eingefügt werden sollaustauschenByte im Bild zwischen Little- und Big-Endian austauschenTBTIFF-Datei enthält nicht Seite %dSchreiben des TIFF-Bildes fehlgeschlagendann BildKachelKachelhöheKachelhöhe in BildpunktenKachelbreiteKachelbreite in Bildpunktenobenobere Kante eines extrahierten Bereichsoberer Rand der Eingabe in der Ausgabeoberer Rand des Teilbilds im HauptbildVIPS-OptionenVIPS-Interpolatorenstatistische VIPS-Transaktionensowohl VIPS_FOREIGN_PARTIAL als auch VIPS_FOREIGN_SEQUENTIAL setzen – verwenden Sie SEQUENTIALvertikaler Versatz vom Ursprungvertikale Position des Maximumsvertikale Position des Minimumsvertikale Auflösung in Bildpunkten/mmLeerraumBreiteBreite des extrahierten Bereichsein BigTIFF-Bild schreibenein pyramidenförmiges TIFF schreibenein gekacheltes TIFF schreibenXXoffsetXresYYoffsetYres[AKTION] [OPTIONEN] [PARAMETER] - VIPS-Treiberprogramm[x,y,z]^pel des Bildesaeine Wahr-/Falsch-Transaktion für ein Bilderpaareine relationale Transaktion für ein Bilderpaarabsoluter Wertabsoluter Wert eines BildesArkuskosinus des Bildes (Ergebnis in Grad)zwei Bilder hinzufügenReservierung in »mergeup« gescheiterthöchstens N offene Dateien erlaubenArgument »%s« hat keine Instanzarithmetische TransaktionenArkussinus des Bildes (Ergebnis in Grad)Arkustangens des Bildes (Ergebnis in Grad)automatischer Rücklauf für %s fehlgeschlagendurchschnittliche BildbänderDurchschnittswert des Bildesbfalsche »Lb«-, »Lw«-Parameterfalsche Bereichsparameterfalsche Argumentefalsche Argumente (ac)falsche Argumente (f)falsche Argumentefalsche Bänderfalsche Kodierung %sfalsche Farbzusammenstellungfalsche Abmessungenfalsche Anzeigetypfalsche Byte-Reihenfolge %s, sollte »big« oder »little« seinfalscher extrahierter Bereichschlecht extrahiertes Bandfalsches Dateinamensformat »%s«falscher Dateitypfalsche Fließkommazahlfalsches Format %sfalsche Grauskala-Maskengrößefalscher Grauskala-Maskenwert, Reihe %dfalsche Gittergeometriefalscher Bild-Deskriptorfalsche Bildgrößefalscher Bildtypfalsche »in_max«-, »out_max«-Parameterfalsche Eingabematrixfalsche Eingabematrix-Größefalsche Ganzzahlfalsche Interpretation »%s« falsche »lut_size«falsche magische Zahlfalsches Maskenelement (%d sollte 0, 128 oder 255 sein)falscher Modus »%s«falsche Anzahl von Argumenten in »copy«-Zeilefalsche Anzahl von Argumenten in »join«-Zeilefalsche Anzahl von Argumenten in »join1«-Zeilefalsche Achsenanzahl %dfalsche Seitennummer %dfalscher Parameterfalsche Parameterfalsche Positionfalscher Schrumpffaktor %dfalsche Größefalsche Größenbandweiser Durchschnitt»in«-Bänder müssen die gleiche Breite wie die Matrix habeneinen Satz Bilder bandweise zusammenführenBasisklassebinäre Bilder >8 Bit müssen aus Fließkommazahlen bestehenbinäre TransaktionenMischungboolesche Transaktionen mit einer KonstanteBoolesch zur DurchführungBytecein Bild zwischenspeichernhöchstens N Byte zwischenspeichernhöchstens N Transaktionen zwischenspeichern(a * in + b) berechnenBerechnen von a*in + b -> out, a und b VektorenBerechnen von a*in + b = Ausgabedatei»calloc« fehlgeschlagennur LABQ und nicht-komplexe Bilder können pyramidenartig verwendet werden1-Bit-JPEG nicht möglich – JPEG wird ausgeschaltetnicht ummantelte Pyramide nicht möglich – Zerteilung wird eingeschaltetVideofähigkeit kann nicht abgefragt werdenVideogerät »%s« kann nicht geöffnet werdenKarte kann nicht in Speicher digitalisiert werdenein Bild umwandelnKanal nicht zwischen 0 und %dZirkularität entdecktKlasse »%s« nicht gefundenBefehl fehlgeschlagen: »%s«ohne »im_video_v4l1«-Unterstützung kompiliertkomplex durchzuführenKomprimierung sollte in [0,9] liegenUmwandlungstransaktionenKoordinaten außerhalb des Bildesein Bild kopierenKosinus des Bildes (Winkel in Grad)zusätzliche Daten konnten nicht abgefragt werdenBild %s konnte nicht geöffnet werdenVIPS-Kopfzeilen für %s konnten nicht gelesen werdenauf %s konnte nicht gesucht werdenErweiterung konnte nicht gesetzt werdenauf %s konnte nicht geschrieben werdenDatentyp %d nicht unterstütztHinweisanfrage nicht gesetztZiel zu kleinDimension sollte in (2,3) liegenDimensionen größer drei müssen die Größe eins haben»dir« nicht 0 oder 1Richtungvektorgesteuerte Versionen von Transaktionen deaktivierenAnzeige unbekanntzwei Bilder teilenProfil aus exportiertem Bild nicht löschenMiniaturansicht nicht schärfenTransaktionszwischenspeicher beim Beenden ausgebene^pel des BildesElement außerhalb des Bereichs [0,1]ein Bild in ein größeres Bild einbettenleere Zeileleere Überlappung!Dateiende während des Überspringens des StartesAufzählung »%s« hat keinen Bestandteil »%s«Fehler beim Auswerten von Nummer, Zeile %d, Spalte %dFehler beim Lesen von XML: %sFehler beim Lesen von Datei »%s«Fehler beim Lesen der Radiance-KopfzeilenFehler beim Lesen der AuflösungFehler abgefragtFehler beim Speichern von EXIFFehler beim Setzen der JPEG-AuflösungFehler beim Umwandeln vom gespeicherten FormatFehler beim Umwandeln in das zu speichernde FormatFehler beim Schreiben der Ausgabemit N gleichzeitigen Threads auswertengenannte VIPS-Transaktion ausführen1xN- oder Nx1-Eingabemaske wird erwartet%s erwartet, %s gesehenmit PROFIL exportierenkeine zusätzlichen Token nach »)«einen Bereich eines Bildes extrahierenBand aus einem Bild extrahierenFaktor sollte in [0,1) liegenbeide Faktoren sollten >=1 seinFehler beim Öffnen des DiasFeld »%s« ist vom Typ %s, nicht %sFeld »%s« nicht gefundenDatei »%s« nicht gefundenDatei wurde gekürztDatei ist weniger als 64 Byte großDateiladerDateispeichererBildmittelwert findenMaximum des Bildes findenMinimum des Bildes findenSchalter nicht -1 oder 1Schalter sollte 0 (horizontal) oder 1 (vertikal) seinein Bild umdrehenein komplexes Bild aus zwei echten Bildern erstellenes wurden %d Verbindungspunkte gefunden, mindestens %d sind nötigRumpfdaten für C++-Anbindung erzeugenHeader für C++-Anbindung erzeugenVerweise für VIPS/Bin erzeugengenerate() zweimal aufgerufeneinen Bestandteil eines komplexen Bildes holenAbfragen der Abmessungen: %sKopfdatendateigröße nicht korrektKopfdatengröße nicht korrektHilfe!Histogramm dürfen nicht mehr als 65536 Elemente habenHistogramme müssen eine Breite oder Höhe von eins habenfallsdannsonst eines Bildes»im_invmat« fehlgeschlagenBild »%s« zweimal als Ausgabe benutztBild bereits geschriebenBild und Band-Fmt müssen im Kennzeichen zusammenpassenBildklasseBildkodierung muss NONE oder LABQ seinÜberlaufganzzahl der BildabmessungenBild hat nicht so viele BänderBild ist zu nichts geschrumpftBild muss %s seinBild muss aus 8- oder 16-Bit Ganzzahlen mit oder ohne Vorzeichen bestehenBild muss aus 8- oder 16-Bit vorzeichenlosen Ganzzahlen bestehenBild muss aus 8- oder 16-Bit vorzeichenlosen Ganzzahlen oder Fließkommazahlen bestehenBild muss komplex seinBild muss ganzzahlig seinBild muss nicht-komplex seinBild muss unkodiert seinBild muss aus 8- oder 16-Bit vorzeichenlosen Ganz- oder Fließkommazahlen bestehenBild muss aus vorzeichenlosen Ganzzahlen bestehenBild muss %d Bänder habenBild muss ein oder %d Bänder habenBild muss ein oder drei Bänder habenBild muss ein Band habenBild nicht lesbarBild nicht schreibbarBild zu schmalBild zu klein für MaskeBild zu klein für FensterBilder passen nicht zusammenBilder passen in der Bildpunktgröße nicht zusammenBilder, die größer als N sind, werden auf die Platte dekomprimiertBilder müssen das gleiche Bandformat habenBilder müssen die gleiche Kodierung habenBilder müssen die gleiche Anzahl Bänder habenBilder müssen die gleiche Anzahl Bänder haben oder eines muss ein Band habenBilder müssen in der Größe passennicht gekennzeichnetes Bild mit PROFIL importiereninin1in2Ungeeigneter Regionstypunvollständige Kopfzeilenfalscher Namensraum in XMLIndex sollte im Bereich 0 - %d liegen»ink«-Bild passt nicht in das Bild»ink«-Bild nicht 1x1 BildpunkteEingabeEingabe ist kein unkodiertes Zeichen mit drei BändernEingaben inkompatibelein Bild einfügenZiel-%d (%s) nicht von Profil »%s« unterstützt; Rückfall auf Standardabsicht (normalerweise WAHRNEHMUNG)Ziel-%d (%s) nicht vom Profil unterstützt; Rückfall auf Standardabsicht (normalerweise WAHRNEHMUNG)interner Fehlerinterner Fehler #9876345ungültiges Argumentungültiger zugehöriger Bildnameungültige Auszeichnung im Textungültige Diastufeein Bild invertierenioctl(0x%x) fehlgeschlagen: %sein Bilderpaar zusammenführenfür Bild »%s« abgeschossenEbenenpuffer aufgebraucht – versuchen Sie die TIFF-Ausgabekacheln zu verkleinerngegen die »lcms«-Bibliothek wird in diesem VIPS nicht verlinktLückenprüfung beim Beendenlineare Neukombinierung mit der Matrixclasses|packages|all|package-name|operation-name aufführengegen die »lmcs«-Bibliothek wird in diesem VIPS nicht verlinktln des BildesERWEITERUNG ladenein FITS-Bild ladenein Radiance-Bild aus einer Datei ladenein Analyze6-Bild ladenein OpenEXR-Bild ladenBilddateien laden und speichernCSV aus Datei ladenDatei mit ImageMagick ladenDatei mit OpenSlide ladenJPEG ladenJPEG aus Puffer ladenJPEG aus Datei ladenMat aus Datei ladenPNG-Datei aus Datei ladenPPM aus Datei ladenRohdaten aus einer Datei ladenTIFF aus Datei ladenVips aus einer Datei ladenlog10 des Bildesein schwarzes Bild erstellenviele Bildstatistiken in einem Durchgang»map« fehlgeschlagen (%s), die Systemressourcen werden knapp, ein Absturz steht bevorMaskenbild nicht 8-Bit-kodiert mit einem BandMaske muss 1D seinMaskengröße nur Potenzen von 2Maske zu komplexdurchzuführende BerechnungMatrix der KoeffizientenMaximalwert des Bildesmessen eines Satzes von Patches auf ein FarbdiagrammDurchschnittsmaße eine Gitters aus FlickstückenMinimalwert des Bildesmehr als 10 Megabyte XML? Leidende Succotash!mehr als eine WurzelMosaik-Wurzel nicht in Beschreibungsdatei gefunden ist das wirklich ein Bild?zwei Bilder multiplizieren»mwidth« muss -1 oder >= 0 seinnkein eingebettetes Profilkein Datei-Deskriptorkeine Bilddatenkeine Eingabebilderkein passendes »>«keine Matrixvariablen in »%s«kein Überlappenkein Paket oder Funktion »%s«keine Bildpunktdaten in angehängtem Bildkeine Punkte zum Mittelnkeine Eigenschaft namens »%s«Keine Auflösungsinformationen für TIFF-Bild »%s« – Standard auf 1 Bildpunkt pro mmkein Text zu rendernkein VIPS-Argument namens »%s«unsinnige Maskenparameterkein »,« oder »)« nach Parameterkein »uchar«-Bild mit einem Bandkein RAD-Bildkeine reguläre Dateinicht ein Band oder %d Bänderkein Leerraum vor dem Start der binären DatenTransaktionenTransaktionen für Bänder von BildernHauptspeicher reicht nicht ausHauptspeicher reicht nicht aus – Größe == %dMBaußerhalb des Bereichs [0,255]AusgabeAusgabekoordinaten außerhalb des BereichsÜberlappen zu schmalÜberlappen zu klein für SucheÜberlappen zu schmal für Ihre SuchgrößePangoft2-Unterstützung deaktiviertParameter %s nicht gesetztParameter außerhalb des BereichsParameter würden zu einem Ausgabebild der Größe Null führenFlicken %d x %d, Band %d: Durchschn. = %g, sdev = %gpel^[x,y,z] des Bildespel^x des BildesStatus pro Thread für »render«Status pro Thread für »sink«Status pro Thread für »sinkdisc«Status pro Thread für »sinkmemory«Status pro Thread für »vipsthreadpool«eine komplexe Transaktion mit einem Bild durchführeneine mathematische Funktion für ein Bild ausführeneine Rundungsfunktion für ein Bild ausführenPhase des Kreuzleistungsspektrums zweier komplexer BilderFotonegativbildpunktweise lineare RegressionPosition und Wert von n Maxima des BildesPosition und Wert von n Minima des BildesPosition des Maximalwerts des BildesPosition des Maximalwerts des Bildes, durchschnittlich im Fall des ZeichnensPosition des Minimalwerts des Bildesmögliche Aktionen: pow( @in, @c )pow( links, rechts)PrädiktorWert von FELD ausgeben (»getext« liest Erweiterungsblock, »Hist« liest Bildchronik)Version ausgebenProfilLesefehlerLesen ergab %ld Warnungenzugehöriges Bild wird gelesen: %sRegion wird gelesen: %s»ref« nicht kleiner oder gleich »in«relationale Transaktion für eine Konstanterelational durchzuführenRest nach GanzzahldivisionRest nach Ganzzahldivision durch eine KonstanteRest nach Ganzzahldivision durch einen Vektor von KonstantenRest nach Ganzzahldivision eines Bildes und einer KonstanteRest nach Ganzzahldivision zweier BilderErweiterungsblock mit STDIN ersetzenein Bild nachmachenbenötigtes Feld %d fehltbenötigtes Feld %d=%d, nicht %dneues Muster mit INTERPOLATOR erstellenein Bild drehenauf größten ganzzahligen Wert runden, nicht größer alsauf nächsten ganzzahligen Wert rundenauf kleinsten ganzzahligen Wert runden, nicht weniger alsdurchzuführende RundungstransakktionBild als ASCII speichernBild in Radiance-Datei speichernBild in CSV-Datei speichernBild in FITS-Datei speichernBild in den JPEG-Puffer speichernBild in JPEG-Datei speichernBild in JPEG-MIME speichernBild in den PNG-Puffer speichernBild in PNG-Datei speichernBild in PPM-Datei speichernBild in Rohdatenformatdatei speichernBild in TIFF-Datei speichernBild in Vips-Datei speichernJPEG speichernPNG speichernnur skalare Bilder»BandFmt« auf F setzen (z.B. uchar, float)Bänder auf N setzenKodierung auf C setzen (z.B. labq)Typ auf N setzen (missbilligt, benutzen Sie »interpretation«»Xoffset« auf N Bildpunkte setzen»Xres« auf R Bildpunkte/mm setzen»Xsize« auf N setzen (missbilligt, benutzen Sie »width«)»Yoffset« auf N Bildpunkte setzen»Yres« auf R Bildpunkte/mm setzen»Ysize« auf N setzen (missbilligt, benutzen Sie »height«)»fatstrip«-Höhe auf N setzen (DEBUG)Höhe auf N Bildpunkte setzenInterpretation aif I setzen (z.B. xyz)Ausgabe auf FORMAT setzen»thinstrip«-Höhe auf N setzen (DEBUG)Miniaturansicht auf GRÖẞE setzenBildhöhe auf N setzen (DEBUG)Bildbreite auf N setzen (DEBUG)Breite auf N Bildpunkte setzenverschieben um Null: Rückfall auf »im_copy«alle Felder anzeigenFortschrittsrückmeldung anzeigenSchrumpffaktoren sollten >=1 seinSinus des Bildes (Winkel in Grad)nur EinzelbandbilderGröße muss gerade und positiv seinStandardabweichung des Bildes»start«-Funktion für Bild »%s« fehlgeschlagenStartfunktion für Bild %s fehlgeschlagen»stop«-Funktion für Bild »%s« fehlgeschlagenBild zum Ersetzen »%s« hat nicht die gleiche Größe wie »%s«zwei Bilder subtrahierenKennzeichendatei als Big- oder Little-EndianTangens des Bildes (Winkel in Grad)Threads an %d angeheftetBildgröße kein Vielfaches von 16zu wenige Argumentezu wenige Datenzu viele Argumentezu viele Bilderzu viele Eingabebilderzu viele Elementezu viele Datenzu viel ÜberlappungTransaktionszwischenspeicher aufzeichnennur »uchar« oder »ushort«-Eingabe»CreateFileMapping« nicht möglich»MapViewOfFile« nicht möglich»UnmapViewOfFile« nicht möglich»fd« kann nicht geschlossen werdenes können keine Profile erstellt werdenThread kann nicht erstellt werdenUmwandlungsplan kann nicht erstellt werdenDateistatus kann nicht abgefragt werdenDateistatus kann nicht abgefragt werdenweißer Medienpunkt kann nicht abgefragt werdenEingabe von einem %s-Bild nicht möglichtemporäre Datei %s kann nicht erstellt werdenSpeicher kann nicht abgebildet werden»mmap« nicht möglich»mmap %s« zur gleichen Adresse nicht möglich»mmap« nicht möglich: "%s" - %s»munmap« der Datei nicht möglich»%s« kann nicht geöffnet werden»%s« kann nicht zur Eingabe geöffnet werden»%s« kann nicht zur Ausgabe geöffnet werden»%s« kann nicht geöffnet werden, Datei zu kleinDatei »%s« kann nicht zum Lesen geöffnet werdenDatei »%s« kann nicht zum Schreiben geöffnet werdenProfil »%s« kann nicht geöffnet werdenes kann nicht zu einem %s-Bild ausgegeben werdenDatei »%s« kann nicht angepingt werden libMagick-Fehler: %s %sDaten können nicht gelesen werdenDaten für »%s« können nicht gelesen werden, %sDatei »%s« kann nicht gelesen werden libMagick-Fehler: %s %sKopfdaten für »%s« können nicht gelesen werdenVerlauf kann nicht gelesen werdenBildpunkte können nicht gelesen werdenProfil kann nicht gelesen werdenkann nicht gesucht werden»%s« kann nicht gesetzt werdenEigenschaft »%s« kann nicht auf Wert »%s« gesetzt werden.VIPS kann nicht gestartet werdenkann nicht gekürzt werden»%s« kann nicht geschrieben werdenauf »%s« kann nicht geschrieben werdenIn den Puffer kann nicht geschrieben werden.unäre Transaktionenunäre Transaktionen mit einer Konstantenur unkodierte Bilderunerwartetes Dateiende, Zeile %d, Spalte %dunerwartetes Zeilenende, Zeile %d, Spalte %dUnerwartetes Ende der Zeichenkettenicht implementierter Eingabefarbraum 0x%xnicht implementierte Maskenicht implementierter Maskentypnicht implementierter Ausgabefarbraum 0x%xEinheitsvektor in Richtung des WertesEinheitsvektor von BildpunktenUnix-Fehlerunbekannter Kodierungstypunbekannte EXIF-Auflösungseinheitunbekannte JFIF-Auflösungseinheitunbekannte Aktion »%s«unbekanntes Argument »%s«unbekanntes Bandformat %dunbekannte Kodierungunbekannter Kodierungstypunbekannte Bildkodierungunbekannte fotometrische Deutung %dunbekannte Auflösungseinheitnur vorzeichenlose 8-Bit-Ganzzahl und 32-Bit-Fließkommazahlnicht unterstütztes BandFmt %d nicht unterstützte Bit-Tiefenicht unterstützte Bit-Tiefe %dnicht unterstützte »bitpix« %d nicht unterstützter Klassentyp %d nicht unterstützter Farbtypnicht unterstützter Farbraum %dnicht unterstützte Tiefe %d für LAB-Bildnicht unterstützte Tiefe %d für RGB-Bildnicht unterstützte Tiefe %d für Graustufenbildnicht unterstützter Bildtyp %dnicht unterstützte Rangstufe %d nicht unterstütztes Musterformat %d für Graustufenbildnicht unterstütztes Musterformat %d für LAB-Bildnicht unterstütztes Musterformat %d für RGB-BildAufruf:Aufruf: %s [OPTION …] vipsfile gültig an nichts angeklammertVektor muss 1 oder %d Elemente habenVektoren ungleicher LängeVektoren ungleicher Längedetaillierte AusgabeVIPS wurde ohne FFT-Unterstützung konfiguriertVips-DiagnoseVips-Warnungvips_free: zu viele Freesvips_free: zu viel frei»vipsfile« - »vipsfile«-Kopfzeilen bearbeitenFenster zu großFenster zu kleinWindows-Fehlerwürde in einem Ausgabebild der Größe Null resultierenSchreibfehler (%zd aus %zd Blöcken geschrieben) … Platte voll?Schreibfehler … Platte voll?Schreiben fehlgeschlagenRohdatenbild in Datei-Deskriptor schreibenfalsche Größenxx-Bereich zu kleinx-Wert keine Ganzzahlx^pel des BildesXML-Fehler beim Speichernynull EingabebilderZoomfaktoren sollten >=0 seinZoomfaktoren zu großvips-8.2.2/po/ChangeLog0000664000175000017500000000002212530402247011610 00000000000000started 17 dec 03 vips-8.2.2/po/LINGUAS0000664000175000017500000000000012530402247011057 00000000000000vips-8.2.2/po/de.po0000664000175000017500000030256312530402247011005 00000000000000# German translation of vips. # Copyright (C) 1990-2009 Imperial College, London and others. # This file is distributed under the same license as the vips package. # Copyright of this file (C) Chris Leick 2010-2013. # See also http://www.gnu-darwin.org/www001/src/ports/graphics/vips/work/ # vips-7.12.4/doc/pdf/vipsmanual.pdf # msgid "" msgstr "" "Project-Id-Version: libvips-doc 7.36.5-1\n" "Report-Msgid-Bugs-To: VIPSIP@JISCMAIL.AC.UK\n" "POT-Creation-Date: 2012-03-08 21:02+0000\n" "PO-Revision-Date: 2014-03-12 21:58+0100\n" "Last-Translator: Chris Leick \n" "Language-Team: Debian German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: libvips/arithmetic/abs.c:215 # http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650& # db=man&fname=/usr/share/catman/p_man/cat3/il_c/ilAbsImg.z msgid "absolute value of an image" msgstr "absoluter Wert eines Bildes" #: libvips/arithmetic/statistic.c:147 msgid "VIPS statistic operations" msgstr "statistische VIPS-Transaktionen" #: libvips/arithmetic/statistic.c:151 libvips/arithmetic/unary.c:87 #: libvips/conversion/bandmean.c:197 libvips/conversion/cast.c:474 #: libvips/conversion/tilecache.c:422 libvips/conversion/extract.c:194 #: libvips/conversion/extract.c:353 libvips/conversion/embed.c:516 #: libvips/conversion/rot.c:355 libvips/conversion/flip.c:240 #: libvips/conversion/copy.c:318 libvips/conversion/recomb.c:200 #: libvips/conversion/replicate.c:196 libvips/conversion/cache.c:106 #: libvips/conversion/bandjoin.c:171 libvips/foreign/foreign.c:1379 msgid "Input" msgstr "Eingabe" #: libvips/arithmetic/statistic.c:152 libvips/conversion/cast.c:475 #: libvips/conversion/tilecache.c:423 libvips/conversion/extract.c:195 #: libvips/conversion/extract.c:354 libvips/conversion/embed.c:517 #: libvips/conversion/rot.c:356 libvips/conversion/flip.c:241 #: libvips/conversion/copy.c:319 libvips/conversion/replicate.c:197 #: libvips/conversion/cache.c:107 msgid "Input image" msgstr "Eingabebild" #: libvips/arithmetic/im_point_bilinear.c:74 msgid "coords outside image" msgstr "Koordinaten außerhalb des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:298 msgid "absolute value" msgstr "absoluter Wert" #. Name #: libvips/arithmetic/arith_dispatch.c:317 libvips/arithmetic/add.c:186 msgid "add two images" msgstr "zwei Bilder hinzufügen" #. Name #: libvips/arithmetic/arith_dispatch.c:342 msgid "average value of image" msgstr "Durchschnittswert des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:431 msgid "standard deviation of image" msgstr "Standardabweichung des Bildes" # im_exptra() transforms element x of input to # pow(e, x) in output. #. Name #: libvips/arithmetic/arith_dispatch.c:450 msgid "10^pel of image" msgstr "10^pel des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:469 msgid "e^pel of image" msgstr "e^pel des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:498 msgid "x^pel of image" msgstr "x^pel des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:527 msgid "[x,y,z]^pel of image" msgstr "[x,y,z]^pel des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:546 libvips/arithmetic/divide.c:225 msgid "divide two images" msgstr "zwei Bilder teilen" #. Name #: libvips/arithmetic/arith_dispatch.c:565 msgid "photographic negative" msgstr "Fotonegativ" #. Name #: libvips/arithmetic/arith_dispatch.c:596 msgid "calculate a*in + b = outfile" msgstr "Berechnen von a*in + b = Ausgabedatei" #: libvips/arithmetic/arith_dispatch.c:622 msgid "vectors not equal length" msgstr "Vektoren ungleicher Länge" #. Name #: libvips/arithmetic/arith_dispatch.c:633 msgid "calculate a*in + b -> out, a and b vectors" msgstr "Berechnen von a*in + b -> out, a und b Vektoren" #. Name #: libvips/arithmetic/arith_dispatch.c:652 msgid "log10 of image" msgstr "log10 des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:671 msgid "ln of image" msgstr "ln des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:690 msgid "tan of image (angles in degrees)" msgstr "Tangens des Bildes (Winkel in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:709 msgid "atan of image (result in degrees)" msgstr "Arkustangens des Bildes (Ergebnis in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:728 msgid "cos of image (angles in degrees)" msgstr "Kosinus des Bildes (Winkel in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:747 msgid "acos of image (result in degrees)" msgstr "Arkuskosinus des Bildes (Ergebnis in Grad)" # hinter diesem String folgt ein Flag. #. Name #: libvips/arithmetic/arith_dispatch.c:766 msgid "round to smallest integer value not less than" msgstr "auf kleinsten ganzzahligen Wert runden, nicht weniger als" # hinter diesem String folgt ein Flag. #. Name #: libvips/arithmetic/arith_dispatch.c:785 msgid "round to largest integer value not greater than" msgstr "auf größten ganzzahligen Wert runden, nicht größer als" # hinter diesem String folgt ein Flag. #. Name #: libvips/arithmetic/arith_dispatch.c:804 msgid "round to nearest integer value" msgstr "auf nächsten ganzzahligen Wert runden" #. Name #: libvips/arithmetic/arith_dispatch.c:823 msgid "sin of image (angles in degrees)" msgstr "Sinus des Bildes (Winkel in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:842 msgid "average image bands" msgstr "durchschnittliche Bildbänder" #. Name #: libvips/arithmetic/arith_dispatch.c:861 msgid "unit vector in direction of value" msgstr "Einheitsvektor in Richtung des Wertes" #. Name #: libvips/arithmetic/arith_dispatch.c:880 msgid "asin of image (result in degrees)" msgstr "Arkussinus des Bildes (Ergebnis in Grad)" #. Name #: libvips/arithmetic/arith_dispatch.c:905 msgid "maximum value of image" msgstr "Maximalwert des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:940 msgid "position of maximum value of image" msgstr "Position des Maximalwerts des Bildes" #: libvips/arithmetic/arith_dispatch.c:968 msgid "position of maximum value of image, averaging in case of draw" msgstr "" "Position des Maximalwerts des Bildes, durchschnittlich im Fall des Zeichnens" #: libvips/arithmetic/arith_dispatch.c:1012 msgid "position and value of n maxima of image" msgstr "Position und Wert von n Maxima des Bildes" #: libvips/arithmetic/arith_dispatch.c:1046 msgid "position and value of n minima of image" msgstr "Position und Wert von n Minima des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1094 msgid "measure averages of a grid of patches" msgstr "Durchschnittsmaße eine Gitters aus Flickstücken" #. Name #: libvips/arithmetic/arith_dispatch.c:1119 msgid "minimum value of image" msgstr "Minimalwert des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1147 msgid "position of minimum value of image" msgstr "Position des Minimalwerts des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1166 msgid "remainder after integer division" msgstr "Rest nach Ganzzahldivision" #. Name #: libvips/arithmetic/arith_dispatch.c:1195 msgid "remainder after integer division by a constant" msgstr "Rest nach Ganzzahldivision durch eine Konstante" #. Name #: libvips/arithmetic/arith_dispatch.c:1224 msgid "remainder after integer division by a vector of constants" msgstr "Rest nach Ganzzahldivision durch einen Vektor von Konstanten" #. Name #: libvips/arithmetic/arith_dispatch.c:1244 libvips/arithmetic/multiply.c:172 msgid "multiply two images" msgstr "zwei Bilder multiplizieren" #. Name #: libvips/arithmetic/arith_dispatch.c:1265 msgid "pel^x of image" msgstr "pel^x des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1286 msgid "pel^[x,y,z] of image" msgstr "pel^[x,y,z] des Bildes" #. Name #: libvips/arithmetic/arith_dispatch.c:1317 msgid "many image statistics in one pass" msgstr "viele Bildstatistiken in einem Durchgang" #. Name #: libvips/arithmetic/arith_dispatch.c:1336 libvips/arithmetic/subtract.c:161 msgid "subtract two images" msgstr "zwei Bilder subtrahieren" #. Name #: libvips/arithmetic/arith_dispatch.c:1384 msgid "pixelwise linear regression" msgstr "bildpunktweise lineare Regression" #. Name #: libvips/arithmetic/arith_dispatch.c:1403 msgid "phase of cross power spectrum of two complex images" msgstr "Phase des Kreuzleistungsspektrums zweier komplexer Bilder" #: libvips/arithmetic/linear.c:249 msgid "calculate (a * in + b)" msgstr "(a * in + b) berechnen" #: libvips/arithmetic/linear.c:257 msgid "a" msgstr "a" #: libvips/arithmetic/linear.c:258 msgid "Multiply by this" msgstr "hiermit multiplizieren" #: libvips/arithmetic/linear.c:264 msgid "b" msgstr "b" #: libvips/arithmetic/linear.c:265 msgid "Add this" msgstr "dies hinzufügen" #: libvips/arithmetic/remainder.c:178 msgid "remainder after integer division of two images" msgstr "Rest nach Ganzzahldivision zweier Bilder" #: libvips/arithmetic/remainder.c:327 msgid "remainder after integer division of an image and a constant" msgstr "Rest nach Ganzzahldivision eines Bildes und einer Konstante" #: libvips/arithmetic/im_maxpos_vec.c:121 #: libvips/arithmetic/im_maxpos_vec.c:186 msgid "scalar images only" msgstr "nur skalare Bilder" #: libvips/arithmetic/im_maxpos_vec.c:126 #: libvips/arithmetic/im_maxpos_vec.c:191 msgid "single band images only" msgstr "nur Einzelbandbilder" #: libvips/arithmetic/im_maxpos_vec.c:131 #: libvips/arithmetic/im_maxpos_vec.c:196 msgid "uncoded images only" msgstr "nur unkodierte Bilder" #: libvips/arithmetic/im_maxpos_vec.c:136 #: libvips/arithmetic/im_maxpos_vec.c:201 msgid "invalid argument" msgstr "ungültiges Argument" #: libvips/arithmetic/min.c:317 msgid "find image minimum" msgstr "Minimum des Bildes finden" #: libvips/arithmetic/min.c:325 libvips/arithmetic/arithmetic.c:382 #: libvips/arithmetic/stats.c:423 libvips/arithmetic/measure.c:202 #: libvips/arithmetic/max.c:324 libvips/arithmetic/avg.c:218 #: libvips/arithmetic/deviate.c:219 libvips/conversion/conversion.c:89 #: libvips/foreign/foreign.c:897 msgid "Output" msgstr "Ausgabe" #: libvips/arithmetic/min.c:326 libvips/arithmetic/max.c:325 #: libvips/arithmetic/avg.c:219 libvips/arithmetic/deviate.c:220 msgid "Output value" msgstr "Ausgabewert" #: libvips/arithmetic/min.c:332 libvips/arithmetic/max.c:331 #: libvips/conversion/embed.c:522 msgid "x" msgstr "x" #: libvips/arithmetic/min.c:333 msgid "Horizontal position of minimum" msgstr "horizontale Position des Minimums" #: libvips/arithmetic/min.c:339 libvips/arithmetic/max.c:338 #: libvips/conversion/embed.c:529 msgid "y" msgstr "y" #: libvips/arithmetic/min.c:340 msgid "Vertical position of minimum" msgstr "vertikale Position des Minimums" #: libvips/arithmetic/boolean.c:209 msgid "a boolean operation on a pair of images" msgstr "eine Wahr-/Falsch-Transaktion für ein Bilderpaar" #: libvips/arithmetic/boolean.c:217 libvips/arithmetic/boolean.c:519 #: libvips/arithmetic/math2.c:204 libvips/arithmetic/math2.c:401 #: libvips/arithmetic/math.c:205 libvips/arithmetic/relational.c:227 #: libvips/arithmetic/relational.c:560 libvips/arithmetic/complex.c:222 #: libvips/arithmetic/complex.c:476 msgid "Operation" msgstr "Transaktion" #: libvips/arithmetic/boolean.c:218 libvips/arithmetic/boolean.c:520 msgid "boolean to perform" msgstr "Boolesch zur Durchführung" #: libvips/arithmetic/boolean.c:511 msgid "boolean operations against a constant" msgstr "boolesche Transaktionen mit einer Konstante" #: libvips/arithmetic/arithmetic.c:164 #, c-format msgid "not one band or %d bands" msgstr "nicht ein Band oder %d Bänder" #: libvips/arithmetic/arithmetic.c:168 libvips/histograms_lut/im_identity.c:80 #: libvips/histograms_lut/im_identity.c:143 msgid "bad bands" msgstr "falsche Bänder" #: libvips/arithmetic/arithmetic.c:324 libvips/conversion/bandary.c:131 msgid "too many input images" msgstr "zu viele Eingabebilder" #: libvips/arithmetic/arithmetic.c:378 msgid "arithmetic operations" msgstr "arithmetische Transaktionen" #: libvips/arithmetic/arithmetic.c:383 libvips/conversion/conversion.c:90 #: libvips/foreign/foreign.c:898 msgid "Output image" msgstr "Ausgabebild" #: libvips/arithmetic/stats.c:415 libvips/arithmetic/avg.c:210 #: libvips/arithmetic/deviate.c:211 msgid "find image average" msgstr "Bildmittelwert finden" #: libvips/arithmetic/stats.c:424 libvips/arithmetic/measure.c:203 msgid "Output array of statistics" msgstr "Ausgabefeld von Statistiken" #: libvips/arithmetic/math2.c:196 msgid "pow( left, right)" msgstr "pow( links, rechts)" #: libvips/arithmetic/math2.c:205 libvips/arithmetic/math2.c:402 #: libvips/arithmetic/math.c:206 msgid "math to perform" msgstr "durchzuführende Berechnung" #: libvips/arithmetic/math2.c:393 msgid "pow( @in, @c )" msgstr "pow( @in, @c )" #: libvips/arithmetic/round.c:160 msgid "perform a round function on an image" msgstr "eine Rundungsfunktion für ein Bild ausführen" #: libvips/arithmetic/round.c:168 msgid "Round operation" msgstr "Rundungstransakktion" #: libvips/arithmetic/round.c:169 msgid "rounding operation to perform" msgstr "durchzuführende Rundungstransakktion" #: libvips/arithmetic/measure.c:163 #, c-format msgid "patch %d x %d, band %d: avg = %g, sdev = %g" msgstr "Flicken %d x %d, Band %d: Durchschn. = %g, sdev = %g" #: libvips/arithmetic/measure.c:192 msgid "measure a set of patches on a colour chart" msgstr "messen eines Satzes von Patches auf ein Farbdiagramm" #: libvips/arithmetic/measure.c:196 msgid "in" msgstr "in" #: libvips/arithmetic/measure.c:197 msgid "Image to measure" msgstr "zu vermessendes Bild" #: libvips/arithmetic/measure.c:208 libvips/conversion/replicate.c:202 msgid "Across" msgstr "über" #: libvips/arithmetic/measure.c:209 msgid "Number of patches across chart" msgstr "Anzahl der Patches über ein Diagramm" #: libvips/arithmetic/measure.c:215 libvips/conversion/replicate.c:209 msgid "Down" msgstr "hinunter" #: libvips/arithmetic/measure.c:216 msgid "Number of patches down chart" msgstr "Anzahl der Patches ein Diagramm hinunter" #: libvips/arithmetic/measure.c:222 libvips/arithmetic/binary.c:95 #: libvips/conversion/extract.c:200 msgid "Left" msgstr "links" #: libvips/arithmetic/measure.c:223 libvips/conversion/extract.c:201 msgid "Left edge of extract area" msgstr "linke Kante eines extrahierten Bereichs" #: libvips/arithmetic/measure.c:229 libvips/conversion/extract.c:207 msgid "Top" msgstr "oben" #: libvips/arithmetic/measure.c:230 libvips/conversion/extract.c:208 msgid "Top edge of extract area" msgstr "obere Kante eines extrahierten Bereichs" #: libvips/arithmetic/measure.c:236 libvips/conversion/extract.c:214 #: libvips/conversion/embed.c:536 libvips/conversion/copy.c:331 #: libvips/conversion/black.c:128 libvips/foreign/rawload.c:122 #: libvips/iofuncs/image.c:845 msgid "Width" msgstr "Breite" #: libvips/arithmetic/measure.c:237 libvips/conversion/extract.c:215 msgid "Width of extract area" msgstr "Breite des extrahierten Bereichs" #: libvips/arithmetic/measure.c:243 libvips/conversion/extract.c:221 #: libvips/conversion/embed.c:543 libvips/conversion/copy.c:338 #: libvips/conversion/black.c:135 libvips/foreign/rawload.c:129 #: libvips/iofuncs/image.c:852 msgid "Height" msgstr "Höhe" #: libvips/arithmetic/measure.c:244 libvips/conversion/extract.c:222 msgid "Height of extract area" msgstr "Höhe des extrahierten Bereichs" #: libvips/arithmetic/math.c:197 msgid "perform a math function on an image" msgstr "eine mathematische Funktion für ein Bild ausführen" #: libvips/arithmetic/relational.c:219 msgid "a relational operation on a pair of images" msgstr "eine relationale Transaktion für ein Bilderpaar" #: libvips/arithmetic/relational.c:228 libvips/arithmetic/relational.c:561 msgid "relational to perform" msgstr "relational durchzuführen" #: libvips/arithmetic/relational.c:552 msgid "relational operations against a constant" msgstr "relationale Transaktion für eine Konstante" #: libvips/arithmetic/unaryconst.c:201 msgid "unary operations with a constant" msgstr "unäre Transaktionen mit einer Konstante" #: libvips/arithmetic/unaryconst.c:205 msgid "c" msgstr "c" #: libvips/arithmetic/unaryconst.c:206 msgid "Array of constants" msgstr "Feld aus Konstanten" #: libvips/arithmetic/unary.c:80 msgid "unary operations" msgstr "unäre Transaktionen" #: libvips/arithmetic/unary.c:88 libvips/conversion/bandmean.c:198 #: libvips/conversion/recomb.c:201 msgid "Input image argument" msgstr "Eingabebildargument" #: libvips/arithmetic/invert.c:152 msgid "invert an image" msgstr "ein Bild invertieren" #: libvips/arithmetic/max.c:316 msgid "find image maximum" msgstr "Maximum des Bildes finden" #: libvips/arithmetic/max.c:332 msgid "Horizontal position of maximum" msgstr "horizontale Position des Maximums" #: libvips/arithmetic/max.c:339 msgid "Vertical position of maximum" msgstr "vertikale Position des Maximums" #: libvips/arithmetic/complex.c:215 msgid "perform a complex operation on an image" msgstr "eine komplexe Transaktion mit einem Bild durchführen" #: libvips/arithmetic/complex.c:223 libvips/arithmetic/complex.c:477 msgid "complex to perform" msgstr "komplex durchzuführen" #: libvips/arithmetic/complex.c:468 msgid "get a component from a complex image" msgstr "einen Bestandteil eines komplexen Bildes holen" #: libvips/arithmetic/complex.c:666 msgid "form a complex image from two real images" msgstr "ein komplexes Bild aus zwei echten Bildern erstellen" #: libvips/arithmetic/binary.c:88 msgid "binary operations" msgstr "binäre Transaktionen" #: libvips/arithmetic/binary.c:96 msgid "Left-hand image argument" msgstr "linksseitiges Bildargument" #: libvips/arithmetic/binary.c:101 msgid "Right" msgstr "rechts" #: libvips/arithmetic/binary.c:102 msgid "Right-hand image argument" msgstr "rechtsseitiges Bildargument" #: libvips/arithmetic/sign.c:151 msgid "unit vector of pixel" msgstr "Einheitsvektor von Bildpunkten" #: libvips/colour/im_rad2float.c:186 msgid "not a RAD image" msgstr "kein RAD-Bild" #: libvips/colour/im_icc_transform.c:202 libvips/colour/im_icc_transform.c:212 #: libvips/colour/im_icc_transform.c:1000 #: libvips/colour/im_icc_transform.c:1010 #, c-format msgid "unable to open profile \"%s\"" msgstr "Profil »%s« kann nicht geöffnet werden" #: libvips/colour/im_icc_transform.c:223 #: libvips/colour/im_icc_transform.c:1022 msgid "unable to create profiles" msgstr "es können keine Profile erstellt werden" #: libvips/colour/im_icc_transform.c:242 #: libvips/colour/im_icc_transform.c:1042 msgid "unable to read profile" msgstr "Profil kann nicht gelesen werden" #: libvips/colour/im_icc_transform.c:363 libvips/colour/im_icc_transform.c:372 #: libvips/colour/im_icc_transform.c:737 #: libvips/colour/im_icc_transform.c:1170 #: libvips/colour/im_icc_transform.c:1179 #: libvips/colour/im_icc_transform.c:1522 #, c-format msgid "" "intent %d (%s) not supported by profile \"%s\"; falling back to default " "intent (usually PERCEPTUAL)" msgstr "" "Ziel-%d (%s) nicht von Profil »%s« unterstützt; Rückfall auf Standardabsicht " "(normalerweise WAHRNEHMUNG)" #: libvips/colour/im_icc_transform.c:382 #: libvips/colour/im_icc_transform.c:1189 msgid "CMYK input profile needs a 4 band input image" msgstr "CMYK-Eingabeprofil benötigt ein Eingabebild mit vier Bändern" #: libvips/colour/im_icc_transform.c:392 #: libvips/colour/im_icc_transform.c:1199 msgid "RGB input profile needs a 3 band input image" msgstr "RGB-Eingabeprofil benötigt ein Eingabebild mit drei Bändern" #: libvips/colour/im_icc_transform.c:401 libvips/colour/im_icc_transform.c:551 #: libvips/colour/im_icc_transform.c:1208 #: libvips/colour/im_icc_transform.c:1340 #, c-format msgid "unimplemented input color space 0x%x" msgstr "nicht implementierter Eingabefarbraum 0x%x" #: libvips/colour/im_icc_transform.c:428 libvips/colour/im_icc_transform.c:767 #: libvips/colour/im_icc_transform.c:1235 #: libvips/colour/im_icc_transform.c:1552 #, c-format msgid "unimplemented output color space 0x%x" msgstr "nicht implementierter Ausgabefarbraum 0x%x" #: libvips/colour/im_icc_transform.c:444 libvips/colour/im_icc_transform.c:567 #: libvips/colour/im_icc_transform.c:1251 #: libvips/colour/im_icc_transform.c:1356 msgid "uchar or ushort input only" msgstr "nur »uchar« oder »ushort«-Eingabe" #: libvips/colour/im_icc_transform.c:516 #: libvips/colour/im_icc_transform.c:1305 #, c-format msgid "" "intent %d (%s) not supported by profile; falling back to default intent " "(usually PERCEPTUAL)" msgstr "" "Ziel-%d (%s) nicht vom Profil unterstützt; Rückfall auf Standardabsicht " "(normalerweise WAHRNEHMUNG)" #: libvips/colour/im_icc_transform.c:533 #: libvips/colour/im_icc_transform.c:1322 msgid "CMYK profile needs a 4 band input image" msgstr "CMYK-Profil benötigt ein Eingabebild mit vier Bändern" #: libvips/colour/im_icc_transform.c:543 #: libvips/colour/im_icc_transform.c:1332 msgid "RGB profile needs a 3 band input image" msgstr "RGB-Profil benötigt ein Eingabebild mit drei Bändern" #: libvips/colour/im_icc_transform.c:634 #: libvips/colour/im_icc_transform.c:1427 msgid "no embedded profile" msgstr "kein eingebettetes Profil" #: libvips/colour/im_icc_transform.c:726 #: libvips/colour/im_icc_transform.c:1511 msgid "unsupported bit depth" msgstr "nicht unterstützte Bit-Tiefe" #: libvips/colour/im_icc_transform.c:815 #: libvips/colour/im_icc_transform.c:1605 msgid "unable to get media white point" msgstr "weißer Medienpunkt kann nicht abgefragt werden" #: libvips/colour/im_icc_transform.c:1672 msgid "lcms library not linked to this VIPS" msgstr "gegen die »lcms«-Bibliothek wird in diesem VIPS nicht verlinkt" #: libvips/colour/im_icc_transform.c:1682 #: libvips/colour/im_icc_transform.c:1691 #: libvips/colour/im_icc_transform.c:1701 #: libvips/colour/im_icc_transform.c:1710 msgid "lmcs library not linked to this VIPS" msgstr "gegen die »lmcs«-Bibliothek wird in diesem VIPS nicht verlinkt" #: libvips/colour/disp.c:397 msgid "out of range [0,255]" msgstr "außerhalb des Bereichs [0,255]" #: libvips/colour/disp.c:423 msgid "bad display type" msgstr "falsche Anzeigetyp" #: libvips/colour/disp.c:537 msgid "display unknown" msgstr "Anzeige unbekannt" #: libvips/colour/im_disp2XYZ.c:86 msgid "input not 3-band uncoded char" msgstr "Eingabe ist kein unkodiertes Zeichen mit drei Bändern" #: libvips/colour/im_XYZ2disp.c:139 msgid "3-band uncoded float only" msgstr "nur unkodierte Fließkommazahlen mit drei Bändern" #: libvips/colour/im_lab_morph.c:75 msgid "bad greyscale mask size" msgstr "falsche Grauskala-Maskengröße" #: libvips/colour/im_lab_morph.c:86 #, c-format msgid "bad greyscale mask value, row %d" msgstr "falscher Grauskala-Maskenwert, Reihe %d" #: libvips/conversion/im_gaussnoise.c:124 msgid "bad parameter" msgstr "falscher Parameter" #: libvips/conversion/bandmean.c:191 msgid "band-wise average" msgstr "bandweiser Durchschnitt" #: libvips/conversion/cast.c:123 #, c-format msgid "%d underflows and %d overflows detected" msgstr "%d Unter- und %d Überläufe entdeckt" #: libvips/conversion/cast.c:470 msgid "cast an image" msgstr "ein Bild umwandeln" #: libvips/conversion/cast.c:480 libvips/conversion/copy.c:352 #: libvips/iofuncs/image.c:866 msgid "Format" msgstr "Format" #: libvips/conversion/cast.c:481 msgid "Format to cast to" msgstr "Format, in das umgewandelt werden soll" #: libvips/conversion/ifthenelse.c:395 msgid "ifthenelse an image" msgstr "fallsdannsonst eines Bildes" #: libvips/conversion/ifthenelse.c:399 msgid "Condition" msgstr "Bedingung" #: libvips/conversion/ifthenelse.c:400 msgid "Condition input image" msgstr "Bedingung des Eingabebilds" #: libvips/conversion/ifthenelse.c:405 msgid "Then image" msgstr "dann Bild" #: libvips/conversion/ifthenelse.c:406 msgid "Source for TRUE pixels" msgstr "Quelle für TRUE-Bildpunkte" #: libvips/conversion/ifthenelse.c:411 msgid "Else image" msgstr "sonst Bild" #: libvips/conversion/ifthenelse.c:412 msgid "Source for FALSE pixels" msgstr "Quelle für FALSE-Bildpunkte" #: libvips/conversion/ifthenelse.c:417 msgid "blend" msgstr "Mischung" #: libvips/conversion/ifthenelse.c:418 msgid "Blend smoothly between then and else parts" msgstr "nahtlos zwischen »dann«- und »sonst«-Teilen mischen" #: libvips/conversion/insert.c:349 msgid "insert an image" msgstr "ein Bild einfügen" #: libvips/conversion/insert.c:353 msgid "Main" msgstr "primär" #: libvips/conversion/insert.c:354 msgid "Main input image" msgstr "Haupteingabebild" #: libvips/conversion/insert.c:359 msgid "Sub-image" msgstr "Teilbild" #: libvips/conversion/insert.c:360 msgid "Sub-image to insert into main image" msgstr "Teilbild, das in das Hauptbild eingefügt werden soll" #: libvips/conversion/insert.c:365 msgid "X" msgstr "X" #: libvips/conversion/insert.c:366 msgid "Left edge of sub in main" msgstr "linker Rand des Teilbilds im Hauptbild" #: libvips/conversion/insert.c:372 msgid "Y" msgstr "Y" #: libvips/conversion/insert.c:373 msgid "Top edge of sub in main" msgstr "oberer Rand des Teilbilds im Hauptbild" #: libvips/conversion/insert.c:379 libvips/conversion/join.c:233 msgid "Expand" msgstr "expandieren" #: libvips/conversion/insert.c:380 libvips/conversion/join.c:234 msgid "Expand output to hold all of both inputs" msgstr "Ausgabe so expandieren, dass sie beide Eingaben vollständig enthält" #: libvips/conversion/insert.c:386 libvips/conversion/join.c:247 msgid "Background" msgstr "Hintergrund" #: libvips/conversion/insert.c:387 libvips/conversion/join.c:248 msgid "Colour for new pixels" msgstr "Farbe für neue Bildpunkte" #: libvips/conversion/tilecache.c:418 libvips/conversion/cache.c:102 msgid "cache an image" msgstr "ein Bild zwischenspeichern" #: libvips/conversion/tilecache.c:428 libvips/conversion/cache.c:112 #: libvips/foreign/tiffsave.c:213 msgid "Tile width" msgstr "Kachelbreite" #: libvips/conversion/tilecache.c:429 libvips/conversion/cache.c:113 #: libvips/foreign/tiffsave.c:214 msgid "Tile width in pixels" msgstr "Kachelbreite in Bildpunkten" #: libvips/conversion/tilecache.c:435 libvips/conversion/cache.c:119 #: libvips/foreign/tiffsave.c:220 msgid "Tile height" msgstr "Kachelhöhe" #: libvips/conversion/tilecache.c:436 libvips/conversion/cache.c:120 #: libvips/foreign/tiffsave.c:221 msgid "Tile height in pixels" msgstr "Kachelhöhe in Bildpunkten" #: libvips/conversion/tilecache.c:442 libvips/conversion/cache.c:126 msgid "Max tiles" msgstr "Kacheln maximal" #: libvips/conversion/tilecache.c:443 libvips/conversion/cache.c:127 msgid "Maximum number of tiles to cache" msgstr "maximale Anzahl von Kacheln, die zwischengespeichert werden soll" #: libvips/conversion/tilecache.c:449 msgid "Strategy" msgstr "Strategie" #: libvips/conversion/tilecache.c:450 msgid "Expected access pattern" msgstr "erwartetes Zugriffsmuster" #: libvips/conversion/im_text.c:132 msgid "no text to render" msgstr "kein Text zu rendern" #: libvips/conversion/im_text.c:219 msgid "invalid markup in text" msgstr "ungültige Auszeichnung im Text" #: libvips/conversion/im_text.c:252 msgid "pangoft2 support disabled" msgstr "Pangoft2-Unterstützung deaktiviert" #: libvips/conversion/im_zoom.c:331 msgid "zoom factors should be >= 0" msgstr "Zoomfaktoren sollten >=0 sein" #. Make sure we won't get integer overflow. #. #: libvips/conversion/im_zoom.c:338 msgid "zoom factors too large" msgstr "Zoomfaktoren zu groß" #: libvips/conversion/conver_dispatch.c:918 #: libvips/inplace/inplace_dispatch.c:171 msgid "vectors not same length" msgstr "Vektoren ungleicher Länge" #: libvips/conversion/extract.c:147 msgid "bad extract area" msgstr "falscher extrahierter Bereich" #: libvips/conversion/extract.c:190 msgid "extract an area from an image" msgstr "einen Bereich eines Bildes extrahieren" #: libvips/conversion/extract.c:318 msgid "bad extract band" msgstr "schlecht extrahiertes Band" #: libvips/conversion/extract.c:347 msgid "extract band from an image" msgstr "Band aus einem Bild extrahieren" #: libvips/conversion/extract.c:359 msgid "Band" msgstr "Band" #: libvips/conversion/extract.c:360 msgid "Band to extract" msgstr "zu extrahierendes Band" #: libvips/conversion/extract.c:366 msgid "n" msgstr "n" #: libvips/conversion/extract.c:367 msgid "Number of bands to extract" msgstr "Anzahl zu extrahierender Bänder" #: libvips/conversion/embed.c:430 libvips/iofuncs/image.c:1777 msgid "bad dimensions" msgstr "falsche Abmessungen" #: libvips/conversion/embed.c:512 msgid "embed an image in a larger image" msgstr "ein Bild in ein größeres Bild einbetten" #: libvips/conversion/embed.c:523 msgid "Left edge of input in output" msgstr "linker Rand der Eingabe in der Ausgabe" #: libvips/conversion/embed.c:530 msgid "Top edge of input in output" msgstr "oberer Rand der Eingabe in der Ausgabe" #: libvips/conversion/embed.c:537 libvips/conversion/copy.c:332 #: libvips/conversion/black.c:129 libvips/foreign/rawload.c:123 #: libvips/iofuncs/image.c:846 msgid "Image width in pixels" msgstr "Bildbreite in Bildpunkten" #: libvips/conversion/embed.c:544 libvips/conversion/copy.c:339 #: libvips/conversion/black.c:136 libvips/foreign/rawload.c:130 #: libvips/iofuncs/image.c:853 msgid "Image height in pixels" msgstr "Bildhöhe in Bildpunkten" #: libvips/conversion/embed.c:550 msgid "Extend" msgstr "vergrößern" #: libvips/conversion/embed.c:551 msgid "How to generate the extra pixels" msgstr "Wie werden die zusätzlichen Bildpunkte erzeugt?" #: libvips/conversion/im_grid.c:164 #: libvips/convolution/im_contrast_surface.c:140 libvips/iofuncs/image.c:710 #: libvips/iofuncs/sinkscreen.c:1082 libvips/morphology/im_rank.c:342 msgid "bad parameters" msgstr "falsche Parameter" #: libvips/conversion/im_grid.c:169 msgid "bad grid geometry" msgstr "falsche Gittergeometrie" #: libvips/conversion/join.c:210 msgid "join a pair of images" msgstr "ein Bilderpaar zusammenführen" #: libvips/conversion/join.c:214 msgid "in1" msgstr "in1" #: libvips/conversion/join.c:215 msgid "First input image" msgstr "erstes Eingabebild" #: libvips/conversion/join.c:220 msgid "in2" msgstr "in2" #: libvips/conversion/join.c:221 msgid "Second input image" msgstr "zweites Eingabebild" #: libvips/conversion/join.c:226 msgid "direction" msgstr "Richtung" #: libvips/conversion/join.c:227 msgid "Join left-right or up-down" msgstr "von links nach rechts oder von oben nach unten zusammenführen" #: libvips/conversion/join.c:240 msgid "Shim" msgstr "Scheibe" #: libvips/conversion/join.c:241 msgid "Pixels between images" msgstr "Bildpunkte zwischen Bildern" #: libvips/conversion/join.c:254 msgid "Align" msgstr "ausrichten" #: libvips/conversion/join.c:255 msgid "Align on the low, centre or high coordinate edge" msgstr "am Rand der unteren, mittleren oder höchsten Koordinate ausrichten" #: libvips/conversion/rot.c:351 msgid "rotate an image" msgstr "ein Bild drehen" #: libvips/conversion/rot.c:361 msgid "Angle" msgstr "Winkel" #: libvips/conversion/rot.c:362 msgid "Angle to rotate image" msgstr "Winkel zum Drehen eines Bildes" #: libvips/conversion/flip.c:236 msgid "flip an image" msgstr "ein Bild umdrehen" #: libvips/conversion/flip.c:246 msgid "Direction" msgstr "Richtung" #: libvips/conversion/flip.c:247 msgid "Direction to flip image" msgstr "Richtung, nach der das Bild umgedreht werden soll" #: libvips/conversion/copy.c:314 msgid "copy an image" msgstr "ein Bild kopieren" #: libvips/conversion/copy.c:324 msgid "Swap" msgstr "austauschen" #: libvips/conversion/copy.c:325 msgid "Swap bytes in image between little and big-endian" msgstr "Byte im Bild zwischen Little- und Big-Endian austauschen" #: libvips/conversion/copy.c:345 libvips/conversion/black.c:142 #: libvips/foreign/rawload.c:136 libvips/iofuncs/image.c:859 msgid "Bands" msgstr "Bänder" #: libvips/conversion/copy.c:346 libvips/conversion/black.c:143 #: libvips/foreign/rawload.c:137 libvips/iofuncs/image.c:860 msgid "Number of bands in image" msgstr "Anzahl der Bänder in einem Bild" #: libvips/conversion/copy.c:353 libvips/iofuncs/image.c:867 msgid "Pixel format in image" msgstr "Bildpunktformat im Bild" #: libvips/conversion/copy.c:359 libvips/iofuncs/image.c:873 msgid "Coding" msgstr "Kodierung" #: libvips/conversion/copy.c:360 libvips/iofuncs/image.c:874 msgid "Pixel coding" msgstr "Bildpunktkodierung" #: libvips/conversion/copy.c:366 libvips/iofuncs/image.c:880 msgid "Interpretation" msgstr "Interpretation" #: libvips/conversion/copy.c:367 libvips/iofuncs/image.c:881 msgid "Pixel interpretation" msgstr "Bildpunktinterpretation" #: libvips/conversion/copy.c:373 libvips/foreign/tiffsave.c:249 #: libvips/iofuncs/image.c:887 msgid "Xres" msgstr "Xres" #: libvips/conversion/copy.c:374 libvips/foreign/tiffsave.c:250 #: libvips/iofuncs/image.c:888 msgid "Horizontal resolution in pixels/mm" msgstr "horizontale Auflösung in Bildpunkten/mm" #: libvips/conversion/copy.c:380 libvips/foreign/tiffsave.c:256 #: libvips/iofuncs/image.c:894 msgid "Yres" msgstr "Yres" #: libvips/conversion/copy.c:381 libvips/foreign/tiffsave.c:257 #: libvips/iofuncs/image.c:895 msgid "Vertical resolution in pixels/mm" msgstr "vertikale Auflösung in Bildpunkten/mm" #: libvips/conversion/copy.c:387 libvips/iofuncs/image.c:901 msgid "Xoffset" msgstr "Xoffset" #: libvips/conversion/copy.c:388 libvips/iofuncs/image.c:902 msgid "Horizontal offset of origin" msgstr "horizontaler Versatz vom Ursprung" #: libvips/conversion/copy.c:394 libvips/iofuncs/image.c:908 msgid "Yoffset" msgstr "Yoffset" #: libvips/conversion/copy.c:395 libvips/iofuncs/image.c:909 msgid "Vertical offset of origin" msgstr "vertikaler Versatz vom Ursprung" #: libvips/conversion/bandary.c:127 msgid "no input images" msgstr "keine Eingabebilder" #: libvips/conversion/bandary.c:173 msgid "operations on image bands" msgstr "Transaktionen für Bänder von Bildern" #: libvips/conversion/conversion.c:85 msgid "conversion operations" msgstr "Umwandlungstransaktionen" #: libvips/conversion/recomb.c:160 msgid "bands in must equal matrix width" msgstr "»in«-Bänder müssen die gleiche Breite wie die Matrix haben" #: libvips/conversion/recomb.c:196 msgid "linear recombination with matrix" msgstr "lineare Neukombinierung mit der Matrix" #: libvips/conversion/recomb.c:206 msgid "M" msgstr "M" #: libvips/conversion/recomb.c:207 msgid "matrix of coefficients" msgstr "Matrix der Koeffizienten" #: libvips/conversion/replicate.c:192 msgid "replicate an image" msgstr "ein Bild nachmachen" #: libvips/conversion/replicate.c:203 msgid "Repeat this many times horizontally" msgstr "horizontal so oft wiederholen" #: libvips/conversion/replicate.c:210 msgid "Repeat this many times vertically" msgstr "vertikal so oft wiederholen" #: libvips/conversion/black.c:124 msgid "make a black image" msgstr "ein schwarzes Bild erstellen" #: libvips/conversion/im_msb.c:134 libvips/conversion/im_msb.c:213 msgid "unknown coding" msgstr "unbekannte Kodierung" #: libvips/conversion/im_msb.c:169 libvips/resample/im_rightshift_size.c:116 msgid "bad arguments" msgstr "falsche Argumente" #: libvips/conversion/im_msb.c:183 libvips/conversion/im_msb.c:200 msgid "image does not have that many bands" msgstr "Bild hat nicht so viele Bänder" #: libvips/conversion/im_system_image.c:76 #, c-format msgid "command failed: \"%s\"" msgstr "Befehl fehlgeschlagen: »%s«" #: libvips/conversion/im_subsample.c:202 msgid "factors should both be >= 1" msgstr "beide Faktoren sollten >=1 sein" #: libvips/conversion/im_subsample.c:221 libvips/resample/im_shrink.c:286 msgid "image has shrunk to nothing" msgstr "Bild ist zu nichts geschrumpft" #: libvips/conversion/bandjoin.c:165 msgid "bandwise join a set of images" msgstr "einen Satz Bilder bandweise zusammenführen" #: libvips/conversion/bandjoin.c:172 msgid "Array of input images" msgstr "Feld von Eingabebildern" #: libvips/convolution/im_contrast_surface.c:147 msgid "parameters would result in zero size output image" msgstr "Parameter würden zu einem Ausgabebild der Größe Null führen" #: libvips/convolution/im_aconvsep.c:130 libvips/convolution/im_aconv.c:223 #: libvips/convolution/im_aconv.c:229 libvips/convolution/im_aconv.c:750 msgid "mask too complex" msgstr "Maske zu komplex" #: libvips/convolution/im_aconvsep.c:798 libvips/convolution/im_conv.c:1038 #: libvips/convolution/im_conv_f.c:340 libvips/convolution/im_aconv.c:980 #: libvips/convolution/im_aconv.c:1201 libvips/morphology/morphology.c:721 msgid "image too small for mask" msgstr "Bild zu klein für Maske" #: libvips/convolution/im_conv.c:215 #, c-format msgid "%d overflows and %d underflows detected" msgstr "%d Über- und %d Unterläufe entdeckt" #: libvips/convolution/im_conv.c:1125 libvips/convolution/im_conv_f.c:403 msgid "expect 1xN or Nx1 input mask" msgstr "1xN- oder Nx1-Eingabemaske wird erwartet" # ref und in sind Objekte #: libvips/convolution/im_fastcor.c:134 libvips/convolution/im_spcor.c:247 msgid "ref not smaller than or equal to in" msgstr "»ref« nicht kleiner oder gleich »in«" #: libvips/convolution/im_sharpen.c:325 libvips/histograms_lut/im_stdif.c:196 msgid "parameters out of range" msgstr "Parameter außerhalb des Bereichs" #: libvips/foreign/rawload.c:107 msgid "load raw data from a file" msgstr "Rohdaten aus einer Datei laden" #: libvips/foreign/rawload.c:115 libvips/foreign/fitssave.c:128 #: libvips/foreign/ppmload.c:126 libvips/foreign/radload.c:126 #: libvips/foreign/openslideload.c:176 libvips/foreign/tiffload.c:142 #: libvips/foreign/fitsload.c:116 libvips/foreign/vipssave.c:125 #: libvips/foreign/radsave.c:119 libvips/foreign/openexrload.c:137 #: libvips/foreign/analyzeload.c:126 libvips/foreign/pngload.c:136 #: libvips/foreign/tiffsave.c:169 libvips/foreign/vipsload.c:133 #: libvips/foreign/magickload.c:146 libvips/foreign/matload.c:128 #: libvips/foreign/jpegload.c:245 libvips/foreign/jpegsave.c:193 #: libvips/foreign/rawsave.c:166 libvips/foreign/ppmsave.c:118 #: libvips/foreign/csvsave.c:121 libvips/foreign/csvload.c:132 #: libvips/foreign/pngsave.c:166 libvips/iofuncs/image.c:915 msgid "Filename" msgstr "Dateiname" #: libvips/foreign/rawload.c:116 libvips/foreign/ppmload.c:127 #: libvips/foreign/radload.c:127 libvips/foreign/openslideload.c:177 #: libvips/foreign/tiffload.c:143 libvips/foreign/fitsload.c:117 #: libvips/foreign/openexrload.c:138 libvips/foreign/analyzeload.c:127 #: libvips/foreign/pngload.c:137 libvips/foreign/vipsload.c:134 #: libvips/foreign/magickload.c:147 libvips/foreign/matload.c:129 #: libvips/foreign/jpegload.c:246 libvips/foreign/csvload.c:133 msgid "Filename to load from" msgstr "Name der Datei, aus der geladen werden soll" #: libvips/foreign/rawload.c:143 libvips/iofuncs/image.c:943 msgid "Size of header" msgstr "Größe der Kopfdaten" #: libvips/foreign/rawload.c:144 libvips/iofuncs/image.c:944 msgid "Offset in bytes from start of file" msgstr "Versatz in Byte vom Anfang der Datei" #: libvips/foreign/fitssave.c:119 # http://de.wikipedia.org/wiki/Flexible_Image_Transport_System msgid "save image to fits file" msgstr "Bild in FITS-Datei speichern" #: libvips/foreign/fitssave.c:129 libvips/foreign/vipssave.c:126 #: libvips/foreign/radsave.c:120 libvips/foreign/tiffsave.c:170 #: libvips/foreign/jpegsave.c:194 libvips/foreign/rawsave.c:167 #: libvips/foreign/ppmsave.c:119 libvips/foreign/csvsave.c:122 #: libvips/foreign/pngsave.c:167 msgid "Filename to save to" msgstr "Name der Datei in die gespeichert werden soll" #: libvips/foreign/ppmload.c:114 # Portable Pixmap msgid "load ppm from file" msgstr "PPM aus Datei laden" #: libvips/foreign/radload.c:114 msgid "load a Radiance image from a file" msgstr "ein Radiance-Bild aus einer Datei laden" #: libvips/foreign/openslideload.c:159 msgid "load file with OpenSlide" msgstr "Datei mit OpenSlide laden" #: libvips/foreign/openslideload.c:183 msgid "Level" msgstr "Ebene" #: libvips/foreign/openslideload.c:184 msgid "Load this level from the file" msgstr "diese Ebene aus der Datei laden" #: libvips/foreign/openslideload.c:190 msgid "Associated" msgstr "dazugehörig" #: libvips/foreign/openslideload.c:191 msgid "Load this associated image" msgstr "dieses zugehörige Bild laden" #: libvips/foreign/tiffload.c:130 msgid "load tiff from file" msgstr "TIFF aus Datei laden" #: libvips/foreign/tiffload.c:149 msgid "Page" msgstr "Seite" #: libvips/foreign/tiffload.c:150 msgid "Load this page from the file" msgstr "diese Seite aus der Datei laden" #: libvips/foreign/fitsload.c:107 msgid "load a FITS image" msgstr "ein FITS-Bild laden" #: libvips/foreign/vipssave.c:114 msgid "save image to vips file" msgstr "Bild in Vips-Datei speichern" #: libvips/foreign/radsave.c:108 msgid "save image to Radiance file" msgstr "Bild in Radiance-Datei speichern" #: libvips/foreign/openexrload.c:125 msgid "load an OpenEXR image" msgstr "ein OpenEXR-Bild laden" #: libvips/foreign/analyzeload.c:114 msgid "load an Analyze6 image" msgstr "ein Analyze6-Bild laden" #: libvips/foreign/pngload.c:124 msgid "load png from file" msgstr "PNG-Datei aus Datei laden" #: libvips/foreign/tiffsave.c:159 msgid "save image to tiff file" msgstr "Bild in TIFF-Datei speichern" #: libvips/foreign/tiffsave.c:176 libvips/foreign/pngsave.c:103 msgid "Compression" msgstr "Komprimierung" #: libvips/foreign/tiffsave.c:177 msgid "Compression for this file" msgstr "Komprimierung für diese Datei" #: libvips/foreign/tiffsave.c:184 libvips/foreign/jpegsave.c:124 msgid "Q" msgstr "Q" #: libvips/foreign/tiffsave.c:185 libvips/foreign/jpegsave.c:125 msgid "Q factor" msgstr "Q-Faktor" #: libvips/foreign/tiffsave.c:191 # http://de.wikipedia.org/wiki/Abhängige_und_unabhängige_Variable msgid "predictor" msgstr "Prädiktor" #: libvips/foreign/tiffsave.c:192 msgid "Compression prediction" msgstr "Prognose der Komprimierung" #: libvips/foreign/tiffsave.c:199 libvips/foreign/jpegsave.c:131 msgid "profile" msgstr "Profil" #: libvips/foreign/tiffsave.c:200 libvips/foreign/jpegsave.c:132 msgid "ICC profile to embed" msgstr "einzubettendes ICC-Profil" #: libvips/foreign/tiffsave.c:206 msgid "Tile" msgstr "Kachel" #: libvips/foreign/tiffsave.c:207 msgid "Write a tiled tiff" msgstr "ein gekacheltes TIFF schreiben" #: libvips/foreign/tiffsave.c:227 msgid "Pyramid" msgstr "Pyramide" #: libvips/foreign/tiffsave.c:228 msgid "Write a pyramidal tiff" msgstr "ein pyramidenförmiges TIFF schreiben" #: libvips/foreign/tiffsave.c:234 msgid "Squash" msgstr "quetschen" #: libvips/foreign/tiffsave.c:235 msgid "Squash images down to 1 bit" msgstr "Bilder auf ein Bit zusammenquetschen" #: libvips/foreign/tiffsave.c:241 libvips/foreign/tiffsave.c:242 msgid "Resolution unit" msgstr "Einheit der Auflösung" #: libvips/foreign/tiffsave.c:263 # http://de.wikipedia.org/wiki/Liste_von_Dateinamenserweiterungen/T msgid "Bigtiff" msgstr "BigTIFF" #: libvips/foreign/tiffsave.c:264 msgid "Write a bigtiff image" msgstr "ein BigTIFF-Bild schreiben" #: libvips/foreign/csv.c:183 #, c-format msgid "error parsing number, line %d, column %d" msgstr "Fehler beim Auswerten von Nummer, Zeile %d, Spalte %d" #: libvips/foreign/csv.c:237 msgid "end of file while skipping start" msgstr "Dateiende während des Überspringens des Startes" #: libvips/foreign/csv.c:246 libvips/iofuncs/util.c:1072 #: libvips/iofuncs/util.c:1078 msgid "unable to seek" msgstr "kann nicht gesucht werden" #: libvips/foreign/csv.c:257 msgid "empty line" msgstr "leere Zeile" #: libvips/foreign/csv.c:301 #, c-format msgid "unexpected EOF, line %d col %d" msgstr "unerwartetes Dateiende, Zeile %d, Spalte %d" #: libvips/foreign/csv.c:307 #, c-format msgid "unexpected EOL, line %d col %d" msgstr "unerwartetes Zeilenende, Zeile %d, Spalte %d" #: libvips/foreign/vipsload.c:121 msgid "load vips from file" msgstr "Vips aus einer Datei laden" #: libvips/foreign/magickload.c:131 msgid "load file with ImageMagick" msgstr "Datei mit ImageMagick laden" #: libvips/foreign/matload.c:116 # http://www.dateiendung.com/format/mat msgid "load mat from file" msgstr "Mat aus Datei laden" #: libvips/foreign/jpegload.c:118 #, c-format msgid "bad shrink factor %d" msgstr "falscher Schrumpffaktor %d" #: libvips/foreign/jpegload.c:140 msgid "load jpeg" msgstr "JPEG laden" #: libvips/foreign/jpegload.c:146 msgid "Shrink" msgstr "verkleinern" #: libvips/foreign/jpegload.c:147 msgid "Shrink factor on load" msgstr "falscher Verkleinerungsfaktor %d" #: libvips/foreign/jpegload.c:153 msgid "Fail" msgstr "scheitern" #: libvips/foreign/jpegload.c:154 msgid "Fail on first warning" msgstr "scheitert bei erster Warnung" #: libvips/foreign/jpegload.c:234 msgid "load jpeg from file" msgstr "JPEG aus Datei laden" #: libvips/foreign/jpegload.c:309 msgid "load jpeg from buffer" msgstr "JPEG aus Puffer laden" #: libvips/foreign/jpegload.c:315 libvips/foreign/jpegsave.c:260 #: libvips/foreign/pngsave.c:228 msgid "Buffer" msgstr "Puffer" #: libvips/foreign/jpegload.c:316 msgid "Buffer to load from" msgstr "Puffer, aus dem geladen werden soll" #: libvips/foreign/openslide2vips.c:134 msgid "invalid associated image name" msgstr "ungültiger zugehöriger Bildname" #: libvips/foreign/openslide2vips.c:159 msgid "failure opening slide" msgstr "Fehler beim Öffnen des Dias" #: libvips/foreign/openslide2vips.c:166 msgid "invalid slide level" msgstr "ungültige Diastufe" #: libvips/foreign/openslide2vips.c:202 #, c-format msgid "getting dimensions: %s" msgstr "Abfragen der Abmessungen: %s" #: libvips/foreign/openslide2vips.c:209 msgid "image dimensions overflow int" msgstr "Überlaufganzzahl der Bildabmessungen" #: libvips/foreign/openslide2vips.c:274 #, c-format msgid "reading region: %s" msgstr "Region wird gelesen: %s" #: libvips/foreign/openslide2vips.c:348 #, c-format msgid "reading associated image: %s" msgstr "zugehöriges Bild wird gelesen: %s" #: libvips/foreign/analyze2vips.c:308 msgid "header file size incorrect" msgstr "Kopfdatendateigröße nicht korrekt" #: libvips/foreign/analyze2vips.c:353 msgid "header size incorrect" msgstr "Kopfdatengröße nicht korrekt" #: libvips/foreign/analyze2vips.c:371 #, c-format msgid "%d-dimensional images not supported" msgstr "%d-dimensionale Bilder nicht unterstützt" #: libvips/foreign/analyze2vips.c:424 #, c-format msgid "datatype %d not supported" msgstr "Datentyp %d nicht unterstützt" #: libvips/foreign/tiff2vips.c:262 libvips/foreign/tiff2vips.c:285 #: libvips/foreign/tiff2vips.c:303 #, c-format msgid "required field %d missing" msgstr "benötigtes Feld %d fehlt" #: libvips/foreign/tiff2vips.c:266 #, c-format msgid "required field %d=%d, not %d" msgstr "benötigtes Feld %d=%d, nicht %d" #: libvips/foreign/tiff2vips.c:650 #, c-format msgid "%d bits per sample palette image not supported" msgstr "%d Bit pro Musterfarbpalettenbild nicht unterstützt" #: libvips/foreign/tiff2vips.c:659 msgid "bad colormap" msgstr "falsche Farbzusammenstellung" #: libvips/foreign/tiff2vips.c:716 libvips/foreign/tiff2vips.c:747 msgid "3 or 4 bands RGB TIFF only" msgstr "nur RGB-TIFF mit drei oder vier Bändern" #: libvips/foreign/tiff2vips.c:818 msgid "4 or 5 bands CMYK TIFF only" msgstr "nur CMYK-TIFF mit vier oder fünf Bändern" #: libvips/foreign/tiff2vips.c:869 msgid "unknown resolution unit" msgstr "unbekannte Auflösungseinheit" #: libvips/foreign/tiff2vips.c:874 #, c-format msgid "" "no resolution information for TIFF image \"%s\" -- defaulting to 1 pixel per " "mm" msgstr "" "Keine Auflösungsinformationen für TIFF-Bild »%s« – Standard auf 1 Bildpunkt " "pro mm" #: libvips/foreign/tiff2vips.c:946 #, c-format msgid "unsupported sample format %d for lab image" msgstr "nicht unterstütztes Musterformat %d für LAB-Bild" #: libvips/foreign/tiff2vips.c:956 #, c-format msgid "unsupported depth %d for LAB image" msgstr "nicht unterstützte Tiefe %d für LAB-Bild" #: libvips/foreign/tiff2vips.c:995 #, c-format msgid "unsupported sample format %d for greyscale image" msgstr "nicht unterstütztes Musterformat %d für Graustufenbild" #: libvips/foreign/tiff2vips.c:1004 #, c-format msgid "unsupported depth %d for greyscale image" msgstr "nicht unterstützte Tiefe %d für Graustufenbild" #: libvips/foreign/tiff2vips.c:1052 #, c-format msgid "unsupported sample format %d for rgb image" msgstr "nicht unterstütztes Musterformat %d für RGB-Bild" #: libvips/foreign/tiff2vips.c:1061 #, c-format msgid "unsupported depth %d for RGB image" msgstr "nicht unterstützte Tiefe %d für RGB-Bild" #: libvips/foreign/tiff2vips.c:1075 #, c-format msgid "unknown photometric interpretation %d" msgstr "unbekannte fotometrische Deutung %d" #: libvips/foreign/tiff2vips.c:1331 libvips/foreign/radiance.c:959 msgid "read error" msgstr "Lesefehler" #: libvips/foreign/tiff2vips.c:1444 #, c-format msgid "bad page number %d" msgstr "falsche Seitennummer %d" #: libvips/foreign/tiff2vips.c:1465 libvips/foreign/vips2tiff.c:286 #, c-format msgid "unable to open \"%s\" for input" msgstr "»%s« kann nicht zur Eingabe geöffnet werden" #: libvips/foreign/tiff2vips.c:1520 libvips/foreign/tiff2vips.c:1550 #, c-format msgid "TIFF file does not contain page %d" msgstr "TIFF-Datei enthält nicht Seite %d" #: libvips/foreign/jpegsave.c:118 msgid "save jpeg" msgstr "JPEG speichern" #: libvips/foreign/jpegsave.c:187 msgid "save image to jpeg file" msgstr "Bild in JPEG-Datei speichern" #: libvips/foreign/jpegsave.c:256 msgid "save image to jpeg buffer" msgstr "Bild in den JPEG-Puffer speichern" #: libvips/foreign/jpegsave.c:261 libvips/foreign/pngsave.c:229 msgid "Buffer to save to" msgstr "Puffer, in den gespeichert werden soll" #: libvips/foreign/jpegsave.c:303 msgid "error writing output" msgstr "Fehler beim Schreiben der Ausgabe" #: libvips/foreign/jpegsave.c:319 # http://de.wikipedia.org/wiki/MIME#image msgid "save image to jpeg mime" msgstr "Bild in JPEG-MIME speichern" #: libvips/foreign/rawsave.c:159 # http://de.wikipedia.org/wiki/Rohdatenformat_(Fotografie) msgid "save image to raw file" msgstr "Bild in Rohdatenformatdatei speichern" #: libvips/foreign/rawsave.c:266 msgid "write raw image to file descriptor" msgstr "Rohdatenbild in Datei-Deskriptor schreiben" #: libvips/foreign/rawsave.c:273 msgid "File descriptor" msgstr "Datei-Deskriptor" #: libvips/foreign/rawsave.c:274 msgid "File descriptor to write to" msgstr "Datei-Deskriptor, in den geschrieben werden soll" #: libvips/foreign/ppmsave.c:109 # http://de.wikipedia.org/wiki/Portable_Pixmap msgid "save image to ppm file" msgstr "Bild in PPM-Datei speichern" #: libvips/foreign/ppmsave.c:125 msgid "ASCII" msgstr "ASCII" #: libvips/foreign/ppmsave.c:126 msgid "save as ascii" msgstr "Bild als ASCII speichern" #: libvips/foreign/vips2jpeg.c:132 #, c-format msgid "%s" msgstr "%s" #: libvips/foreign/vips2jpeg.c:363 msgid "error setting JPEG resolution" msgstr "Fehler beim Setzen der JPEG-Auflösung" #: libvips/foreign/vips2jpeg.c:510 msgid "error saving EXIF" msgstr "Fehler beim Speichern von EXIF" #: libvips/foreign/openexr2vips.c:115 #, c-format msgid "EXR error: %s" msgstr "EXR-Fehler: %s" #: libvips/foreign/magick2vips.c:215 #, c-format msgid "unsupported image type %d" msgstr "nicht unterstützter Bildtyp %d" #: libvips/foreign/magick2vips.c:275 #, c-format msgid "unsupported bit depth %d" msgstr "nicht unterstützte Bit-Tiefe %d" #: libvips/foreign/magick2vips.c:307 #, c-format msgid "unsupported colorspace %d" msgstr "nicht unterstützter Farbraum %d" #: libvips/foreign/magick2vips.c:622 msgid "unable to read pixels" msgstr "Bildpunkte können nicht gelesen werden" #: libvips/foreign/magick2vips.c:658 #, c-format msgid "" "unable to read file \"%s\"\n" "libMagick error: %s %s" msgstr "" "Datei »%s« kann nicht gelesen werden\n" "libMagick-Fehler: %s %s" #: libvips/foreign/magick2vips.c:692 #, c-format msgid "" "unable to ping file \"%s\"\n" "libMagick error: %s %s" msgstr "" "Datei »%s« kann nicht angepingt werden\n" "libMagick-Fehler: %s %s" #: libvips/foreign/magick2vips.c:703 msgid "bad image size" msgstr "falsche Bildgröße" #: libvips/foreign/vipspng.c:230 msgid "unsupported color type" msgstr "nicht unterstützter Farbtyp" #: libvips/foreign/vipspng.c:570 msgid "compress should be in [0,9]" msgstr "Komprimierung sollte in [0,9] liegen" #: libvips/foreign/vipspng.c:650 #, c-format msgid "unable to write \"%s\"" msgstr "»%s« kann nicht geschrieben werden" #: libvips/foreign/vipspng.c:749 msgid "unable to write to buffer" msgstr "In den Puffer kann nicht geschrieben werden." #: libvips/foreign/matlab.c:106 libvips/foreign/fits.c:178 #: libvips/iofuncs/vips.c:143 libvips/mosaicing/global_balance.c:1181 #: libvips/mosaicing/global_balance.c:1516 #, c-format msgid "unable to open \"%s\"" msgstr "»%s« kann nicht geöffnet werden" #: libvips/foreign/matlab.c:114 #, c-format msgid "no matrix variables in \"%s\"" msgstr "keine Matrixvariablen in »%s«" #: libvips/foreign/matlab.c:175 #, c-format msgid "unsupported rank %d\n" msgstr "nicht unterstützte Rangstufe %d\n" #: libvips/foreign/matlab.c:188 #, c-format msgid "unsupported class type %d\n" msgstr "nicht unterstützter Klassentyp %d\n" #: libvips/foreign/matlab.c:236 msgid "Mat_VarReadDataAll failed" msgstr "»Mat_VarReadDataAll« fehlgeschlagen" #: libvips/foreign/jpeg2vips.c:167 #, c-format msgid "read gave %ld warnings" msgstr "Lesen ergab %ld Warnungen" #: libvips/foreign/jpeg2vips.c:489 msgid "error reading resolution" msgstr "Fehler beim Lesen der Auflösung" #: libvips/foreign/jpeg2vips.c:510 msgid "unknown EXIF resolution unit" msgstr "unbekannte EXIF-Auflösungseinheit" #: libvips/foreign/jpeg2vips.c:718 msgid "unknown JFIF resolution unit" msgstr "unbekannte JFIF-Auflösungseinheit" #: libvips/foreign/fits.c:240 msgid "dimensions above 3 must be size 1" msgstr "Dimensionen größer drei müssen die Größe eins haben" #: libvips/foreign/fits.c:256 #, c-format msgid "bad number of axis %d" msgstr "falsche Achsenanzahl %d" #: libvips/foreign/fits.c:272 #, c-format msgid "unsupported bitpix %d\n" msgstr "nicht unterstützte »bitpix« %d\n" #: libvips/foreign/fits.c:576 libvips/iofuncs/vips.c:171 #, c-format msgid "unable to write to \"%s\"" msgstr "auf »%s« kann nicht geschrieben werden" #: libvips/foreign/fits.c:637 #, c-format msgid "unsupported BandFmt %d\n" msgstr "nicht unterstütztes BandFmt %d\n" #: libvips/foreign/csvsave.c:112 msgid "save image to csv file" msgstr "Bild in CSV-Datei speichern" #: libvips/foreign/csvsave.c:128 libvips/foreign/csvload.c:160 msgid "Separator" msgstr "Trenner" #: libvips/foreign/csvsave.c:129 msgid "Separator characters" msgstr "Trennzeichen" #: libvips/foreign/ppm.c:109 msgid "bad int" msgstr "falsche Ganzzahl" #: libvips/foreign/ppm.c:121 msgid "bad float" msgstr "falsche Fließkommazahl" #: libvips/foreign/ppm.c:172 msgid "bad magic number" msgstr "falsche magische Zahl" #: libvips/foreign/ppm.c:222 msgid "not whitespace before start of binary data" msgstr "kein Leerraum vor dem Start der binären Daten" #: libvips/foreign/ppm.c:599 libvips/foreign/ppm.c:611 msgid "write error ... disc full?" msgstr "Schreibfehler … Platte voll?" #: libvips/foreign/ppm.c:716 msgid "binary >8 bit images must be float" msgstr "binäre Bilder >8 Bit müssen aus Fließkommazahlen bestehen" #: libvips/foreign/vips2tiff.c:270 #, c-format msgid "unable to open \"%s\" for output" msgstr "»%s« kann nicht zur Ausgabe geöffnet werden" #: libvips/foreign/vips2tiff.c:692 msgid "layer buffer exhausted -- try making TIFF output tiles smaller" msgstr "" "Ebenenpuffer aufgebraucht – versuchen Sie die TIFF-Ausgabekacheln zu " "verkleinern" #: libvips/foreign/vips2tiff.c:922 msgid "TIFF write tile failed" msgstr "Schreiben des TIFF-Bildes fehlgeschlagen" #: libvips/foreign/vips2tiff.c:998 msgid "internal error #9876345" msgstr "interner Fehler #9876345" #: libvips/foreign/vips2tiff.c:1251 msgid "tile size not a multiple of 16" msgstr "Bildgröße kein Vielfaches von 16" #: libvips/foreign/vips2tiff.c:1257 msgid "can't have strip pyramid -- enabling tiling" msgstr "" "nicht ummantelte Pyramide nicht möglich – Zerteilung wird eingeschaltet" #: libvips/foreign/vips2tiff.c:1268 msgid "can only pyramid LABQ and non-complex images" msgstr "" "nur LABQ und nicht-komplexe Bilder können pyramidenartig verwendet werden" #: libvips/foreign/vips2tiff.c:1285 msgid "can't have 1-bit JPEG -- disabling JPEG" msgstr "1-Bit-JPEG nicht möglich – JPEG wird ausgeschaltet" #: libvips/foreign/vips2tiff.c:1463 msgid "unsigned 8-bit int, 16-bit int, and 32-bit float only" msgstr "nur vorzeichenlose 8-Bit-Ganzzahl und 32-Bit-Fließkommazahl" #: libvips/foreign/vips2tiff.c:1470 msgid "1 to 5 bands only" msgstr "nur 1 bis 5 Bänder" #: libvips/foreign/radiance.c:885 # http://radsite.lbl.gov/radiance/refer/Notes/picture_format.html msgid "error reading radiance header" msgstr "Fehler beim Lesen der Radiance-Kopfzeilen" #: libvips/foreign/csvload.c:121 msgid "load csv from file" msgstr "CSV aus Datei laden" #: libvips/foreign/csvload.c:139 msgid "Skip" msgstr "überspringen" #: libvips/foreign/csvload.c:140 msgid "Skip this many lines at the start of the file" msgstr "so viele Zeilen ab dem Dateianfang überspringen" #: libvips/foreign/csvload.c:146 msgid "Lines" msgstr "Zeilen" #: libvips/foreign/csvload.c:147 msgid "Read this many lines from the file" msgstr "so viele Zeilen aus der Datei lesen" #: libvips/foreign/csvload.c:153 msgid "Whitespace" msgstr "Leerraum" #: libvips/foreign/csvload.c:154 msgid "Set of whitespace characters" msgstr "Satz von Leerraumzeichen" #: libvips/foreign/csvload.c:161 msgid "Set of separator characters" msgstr "Satz von Trennzeichen" #: libvips/foreign/pngsave.c:95 msgid "save png" msgstr "PNG speichern" #: libvips/foreign/pngsave.c:104 msgid "Compression factor" msgstr "Komprimierungsfaktor" #: libvips/foreign/pngsave.c:110 msgid "Interlace" msgstr "Zeilensprung" #: libvips/foreign/pngsave.c:111 msgid "Interlace image" msgstr "Zeilensprungbild" #: libvips/foreign/pngsave.c:162 msgid "save image to png file" msgstr "Bild in PNG-Datei speichern" #: libvips/foreign/pngsave.c:224 msgid "save image to png buffer" msgstr "Bild in den PNG-Puffer speichern" #: libvips/foreign/foreign.c:384 msgid "load and save image files" msgstr "Bilddateien laden und speichern" #: libvips/foreign/foreign.c:525 libvips/mosaicing/im_remosaic.c:76 #, c-format msgid "file \"%s\" not found" msgstr "Datei »%s« nicht gefunden" #: libvips/foreign/foreign.c:534 libvips/foreign/foreign.c:1022 #, c-format msgid "\"%s\" is not a known file format" msgstr "»%s« ist kein bekanntes Dateiformat" #: libvips/foreign/foreign.c:740 msgid "images do not match" msgstr "Bilder passen nicht zusammen" #: libvips/foreign/foreign.c:826 msgid "" "VIPS_FOREIGN_PARTIAL and VIPS_FOREIGN_SEQUENTIAL both set -- using SEQUENTIAL" msgstr "" "sowohl VIPS_FOREIGN_PARTIAL als auch VIPS_FOREIGN_SEQUENTIAL setzen – " "verwenden Sie SEQUENTIAL" #: libvips/foreign/foreign.c:894 msgid "file loaders" msgstr "Dateilader" #: libvips/foreign/foreign.c:903 msgid "Flags" msgstr "Schalter" #: libvips/foreign/foreign.c:904 msgid "Flags for this file" msgstr "Schalter für diese Datei" #: libvips/foreign/foreign.c:910 msgid "Disc" msgstr "Platte" #: libvips/foreign/foreign.c:911 msgid "Open to disc" msgstr "offen zur Platte" #: libvips/foreign/foreign.c:917 msgid "Sequential" msgstr "sequenziell" #: libvips/foreign/foreign.c:918 msgid "Sequential read only" msgstr "sequenziell nur mit Lesezugriff" #: libvips/foreign/foreign.c:1370 msgid "file savers" msgstr "Dateispeicherer" #: libvips/foreign/foreign.c:1380 msgid "Image to save" msgstr "zu speicherndes Bild" #: libvips/freq_filt/im_freq_mask.c:108 msgid "mask sizes power of 2 only" msgstr "Maskengröße nur Potenzen von 2" #: libvips/freq_filt/im_freq_mask.c:155 msgid "unimplemented mask type" msgstr "nicht implementierter Maskentyp" #: libvips/freq_filt/fmaskcir.c:158 libvips/freq_filt/fmaskcir.c:303 #: libvips/freq_filt/fmaskcir.c:394 libvips/freq_filt/fmaskcir.c:476 #: libvips/freq_filt/fmaskcir.c:556 msgid "bad sizes" msgstr "falsche Größen" #: libvips/freq_filt/fmaskcir.c:172 libvips/freq_filt/fmaskcir.c:228 #: libvips/freq_filt/fmaskcir.c:242 libvips/freq_filt/fmaskcir.c:317 #: libvips/freq_filt/fmaskcir.c:321 libvips/freq_filt/fmaskcir.c:408 #: libvips/freq_filt/fmaskcir.c:412 libvips/freq_filt/fmaskcir.c:570 #: libvips/freq_filt/fmaskcir.c:574 libvips/freq_filt/fmask4th.c:120 #: libvips/freq_filt/fmask4th.c:129 libvips/freq_filt/fmask4th.c:163 #: libvips/freq_filt/fmask4th.c:172 libvips/freq_filt/fmask4th.c:205 #: libvips/freq_filt/fmask4th.c:214 libvips/freq_filt/fmask4th.c:252 #: libvips/freq_filt/fmask4th.c:261 libvips/freq_filt/fmask4th.c:292 #: libvips/freq_filt/fmask4th.c:301 libvips/freq_filt/fmask4th.c:333 #: libvips/freq_filt/fmask4th.c:342 libvips/freq_filt/fmask4th.c:373 #: libvips/freq_filt/fmask4th.c:387 libvips/freq_filt/fmask4th.c:423 #: libvips/freq_filt/fmask4th.c:437 libvips/freq_filt/fmask4th.c:473 #: libvips/freq_filt/fmask4th.c:487 libvips/freq_filt/fmask4th.c:527 #: libvips/freq_filt/fmask4th.c:541 libvips/freq_filt/fmask4th.c:578 #: libvips/freq_filt/fmask4th.c:592 libvips/freq_filt/fmask4th.c:629 #: libvips/freq_filt/fmask4th.c:643 libvips/freq_filt/fmask4th.c:697 msgid "bad args" msgstr "falsche Argumente" #: libvips/freq_filt/fmaskcir.c:490 msgid "bad args (f)" msgstr "falsche Argumente (f)" #: libvips/freq_filt/fmaskcir.c:494 msgid "bad args (ac)" msgstr "falsche Argumente (ac)" #: libvips/freq_filt/fmaskcir.c:655 libvips/freq_filt/fmask4th.c:791 msgid "unimplemented mask" msgstr "nicht implementierte Maske" #: libvips/freq_filt/im_fractsurf.c:72 msgid "dimension should be in (2,3)" msgstr "Dimension sollte in (2,3) liegen" #: libvips/freq_filt/im_invfft.c:105 libvips/freq_filt/im_invfftr.c:124 #: libvips/freq_filt/im_fwfft.c:125 libvips/freq_filt/im_fwfft.c:241 msgid "unable to create transform plan" msgstr "Umwandlungsplan kann nicht erstellt werden" #: libvips/freq_filt/im_invfft.c:130 libvips/freq_filt/im_invfftr.c:145 #: libvips/freq_filt/im_fwfft.c:301 msgid "vips configured without FFT support" msgstr "VIPS wurde ohne FFT-Unterstützung konfiguriert" #: libvips/histograms_lut/im_stdif.c:186 #: libvips/histograms_lut/im_lhisteq.c:159 msgid "window too large" msgstr "Fenster zu groß" #: libvips/histograms_lut/im_stdif.c:191 #: libvips/histograms_lut/im_lhisteq.c:164 msgid "window too small" msgstr "Fenster zu klein" #: libvips/histograms_lut/im_histnD.c:227 #, c-format msgid " bins out of range [1,%d]" msgstr " »bins« außerhalb des Bereichs [1,%d]" #: libvips/histograms_lut/im_identity.c:139 libvips/other/im_grey.c:101 #: libvips/other/im_make_xy.c:95 msgid "bad size" msgstr "falsche Größe" #: libvips/histograms_lut/im_buildlut.c:120 msgid "x value not an int" msgstr "x-Wert keine Ganzzahl" #: libvips/histograms_lut/im_buildlut.c:133 msgid "x range too small" msgstr "x-Bereich zu klein" #: libvips/histograms_lut/im_buildlut.c:278 msgid "bad input matrix size" msgstr "falsche Eingabematrix-Größe" #: libvips/histograms_lut/tone.c:194 msgid "bad in_max, out_max parameters" msgstr "falsche »in_max«-, »out_max«-Parameter" #: libvips/histograms_lut/tone.c:199 msgid "bad Lb, Lw parameters" msgstr "falsche »Lb«-, »Lw«-Parameter" #: libvips/histograms_lut/tone.c:204 msgid "Ps not in range [0.0,1.0]" msgstr "»Ps« nicht im Bereich [0.0,1.0]" #: libvips/histograms_lut/tone.c:209 msgid "Pm not in range [0.0,1.0]" msgstr "»Pm« nicht im Bereich [0.0,1.0]" #: libvips/histograms_lut/tone.c:214 msgid "Ph not in range [0.0,1.0]" msgstr "»Ph« nicht im Bereich [0.0,1.0]" #: libvips/histograms_lut/tone.c:219 msgid "S not in range [-30,+30]" msgstr "»S« nicht im Bereich [-30,+30]" #: libvips/histograms_lut/tone.c:224 msgid "M not in range [-30,+30]" msgstr "»M« nicht im Bereich [-30,+30]" #: libvips/histograms_lut/tone.c:229 msgid "H not in range [-30,+30]" msgstr "»H« nicht im Bereich [-30,+30]" #: libvips/histograms_lut/im_invertlut.c:132 msgid "element out of range [0,1]" msgstr "Element außerhalb des Bereichs [0,1]" #: libvips/histograms_lut/im_invertlut.c:287 msgid "bad input matrix" msgstr "falsche Eingabematrix" #: libvips/histograms_lut/im_invertlut.c:292 msgid "bad lut_size" msgstr "falsche »lut_size«" #: libvips/histograms_lut/im_maplut.c:97 #, c-format msgid "%d overflows detected" msgstr "%d Überläufe entdeckt" #: libvips/inplace/im_draw_line.c:389 msgid "mask image not 1 band 8 bit uncoded" msgstr "Maskenbild nicht 8-Bit-kodiert mit einem Band" #: libvips/inplace/im_draw_line.c:395 msgid "ink image does not match in image" msgstr "»ink«-Bild passt nicht in das Bild" #: libvips/inplace/im_draw_line.c:399 msgid "ink image not 1x1 pixels" msgstr "»ink«-Bild nicht 1x1 Bildpunkte" #: libvips/iofuncs/sink.c:105 #, c-format msgid "stop function failed for image \"%s\"" msgstr "»stop«-Funktion für Bild »%s« fehlgeschlagen" #: libvips/iofuncs/sink.c:142 #, c-format msgid "start function failed for image \"%s\"" msgstr "»start«-Funktion für Bild »%s« fehlgeschlagen" #: libvips/iofuncs/sink.c:175 msgid "per-thread state for sink" msgstr "Status pro Thread für »sink«" #: libvips/iofuncs/memory.c:231 msgid "vips_free: too many frees" msgstr "vips_free: zu viele Frees" #: libvips/iofuncs/memory.c:235 msgid "vips_free: too much free" msgstr "vips_free: zu viel frei" #: libvips/iofuncs/memory.c:295 libvips/iofuncs/memory.c:298 #, c-format msgid "out of memory --- size == %dMB" msgstr "Hauptspeicher reicht nicht aus – Größe == %dMB" #: libvips/iofuncs/vips.c:286 #, c-format msgid "\"%s\" is not a VIPS image" msgstr "»%s« ist kein VIPS-Bild" #: libvips/iofuncs/vips.c:374 msgid "unable to read history" msgstr "Verlauf kann nicht gelesen werden" #: libvips/iofuncs/vips.c:407 msgid "more than a 10 megabytes of XML? sufferin' succotash!" msgstr "mehr als 10 Megabyte XML? Leidende Succotash!" #: libvips/iofuncs/vips.c:455 msgid "incorrect namespace in XML" msgstr "falscher Namensraum in XML" #: libvips/iofuncs/vips.c:579 msgid "error transforming from save format" msgstr "Fehler beim Umwandeln vom gespeicherten Format" #: libvips/iofuncs/vips.c:680 #, c-format msgid "unable to set property \"%s\" to value \"%s\"." msgstr "Eigenschaft »%s« kann nicht auf Wert »%s« gesetzt werden." #: libvips/iofuncs/vips.c:728 msgid "error transforming to save format" msgstr "Fehler beim Umwandeln in das zu speichernde Format" #: libvips/iofuncs/vips.c:776 libvips/iofuncs/vips.c:973 #: libvips/iofuncs/window.c:237 msgid "file has been truncated" msgstr "Datei wurde gekürzt" #: libvips/iofuncs/vips.c:890 libvips/iofuncs/vips.c:899 #: libvips/iofuncs/vips.c:922 msgid "xml save error" msgstr "XML-Fehler beim Speichern" #: libvips/iofuncs/vips.c:959 #, c-format msgid "unable to read header for \"%s\"" msgstr "Kopfdaten für »%s« können nicht gelesen werden" #: libvips/iofuncs/vips.c:972 libvips/iofuncs/window.c:236 #, c-format msgid "unable to read data for \"%s\", %s" msgstr "Daten für »%s« können nicht gelesen werden, %s" #: libvips/iofuncs/vips.c:984 #, c-format msgid "error reading XML: %s" msgstr "Fehler beim Lesen von XML: %s" #: libvips/iofuncs/generate.c:343 libvips/iofuncs/header.c:611 msgid "too many images" msgstr "zu viele Bilder" #: libvips/iofuncs/generate.c:606 msgid "demand hint not set" msgstr "Hinweisanfrage nicht gesetzt" #: libvips/iofuncs/generate.c:625 libvips/iofuncs/generate.c:650 msgid "generate() called twice" msgstr "generate() zweimal aufgerufen" #: libvips/iofuncs/generate.c:682 libvips/iofuncs/image.c:1873 #, c-format msgid "unable to output to a %s image" msgstr "es kann nicht zu einem %s-Bild ausgegeben werden" #: libvips/iofuncs/region.c:212 #, c-format msgid "start function failed for image %s" msgstr "Startfunktion für Bild %s fehlgeschlagen" #: libvips/iofuncs/region.c:528 libvips/iofuncs/region.c:598 #: libvips/iofuncs/region.c:745 libvips/iofuncs/region.c:1241 msgid "valid clipped to nothing" msgstr "gültig an nichts angeklammert" #: libvips/iofuncs/region.c:642 msgid "bad image type" msgstr "falscher Bildtyp" #: libvips/iofuncs/region.c:687 msgid "no pixel data on attached image" msgstr "keine Bildpunktdaten in angehängtem Bild" #: libvips/iofuncs/region.c:693 msgid "images do not match in pixel size" msgstr "Bilder passen in der Bildpunktgröße nicht zusammen" #: libvips/iofuncs/region.c:726 libvips/iofuncs/region.c:1223 msgid "dest too small" msgstr "Ziel zu klein" #: libvips/iofuncs/region.c:813 msgid "bad position" msgstr "falsche Position" #: libvips/iofuncs/region.c:1102 libvips/iofuncs/region.c:1294 #, c-format msgid "unable to input from a %s image" msgstr "Eingabe von einem %s-Bild nicht möglich" #: libvips/iofuncs/region.c:1126 msgid "incomplete header" msgstr "unvollständige Kopfzeilen" #: libvips/iofuncs/region.c:1197 msgid "inappropriate region type" msgstr "Ungeeigneter Regionstyp" #: libvips/iofuncs/init.c:366 msgid "evaluate with N concurrent threads" msgstr "mit N gleichzeitigen Threads auswerten" #: libvips/iofuncs/init.c:369 msgid "set tile width to N (DEBUG)" msgstr "Bildbreite auf N setzen (DEBUG)" #: libvips/iofuncs/init.c:372 msgid "set tile height to N (DEBUG)" msgstr "Bildhöhe auf N setzen (DEBUG)" #: libvips/iofuncs/init.c:375 msgid "set thinstrip height to N (DEBUG)" msgstr "»thinstrip«-Höhe auf N setzen (DEBUG)" #: libvips/iofuncs/init.c:378 msgid "set fatstrip height to N (DEBUG)" msgstr "»fatstrip«-Höhe auf N setzen (DEBUG)" #: libvips/iofuncs/init.c:381 msgid "show progress feedback" msgstr "Fortschrittsrückmeldung anzeigen" #: libvips/iofuncs/init.c:384 msgid "leak-check on exit" msgstr "Lückenprüfung beim Beenden" #: libvips/iofuncs/init.c:387 msgid "images larger than N are decompressed to disc" msgstr "Bilder, die größer als N sind, werden auf die Platte dekomprimiert" #: libvips/iofuncs/init.c:390 msgid "disable vectorised versions of operations" msgstr "vektorgesteuerte Versionen von Transaktionen deaktivieren" #: libvips/iofuncs/init.c:393 msgid "cache at most N operations" msgstr "höchstens N Transaktionen zwischenspeichern" #: libvips/iofuncs/init.c:396 msgid "cache at most N bytes in memory" msgstr "höchstens N Byte zwischenspeichern" #: libvips/iofuncs/init.c:399 msgid "allow at most N open files" msgstr "höchstens N offene Dateien erlauben" #: libvips/iofuncs/init.c:402 msgid "trace operation cache" msgstr "Transaktionszwischenspeicher aufzeichnen" #: libvips/iofuncs/init.c:405 msgid "dump operation cache on exit" msgstr "Transaktionszwischenspeicher beim Beenden ausgeben" #: libvips/iofuncs/init.c:428 msgid "VIPS Options" msgstr "VIPS-Optionen" #: libvips/iofuncs/init.c:428 msgid "Show VIPS options" msgstr "VIPS-Optionen anzeigen" #: libvips/iofuncs/image.c:293 msgid "unable to close fd" msgstr "»fd« kann nicht geschlossen werden" #: libvips/iofuncs/image.c:373 #, c-format msgid "%dx%d %s, %d band, %s" msgid_plural "%dx%d %s, %d bands, %s" msgstr[0] "%dx%d %s, %d Band, %s" msgstr[1] "%dx%d %s, %d Bänder, %s" #: libvips/iofuncs/image.c:403 #, c-format msgid " %s, %d band, %s" msgid_plural " %s, %d bands, %s" msgstr[0] " %s, %d band, %s" msgstr[1] " %s, %d Bänder, %s" #: libvips/iofuncs/image.c:529 #, c-format msgid "%s %s: %d threads, %d x %d tiles, groups of %d scanlines" msgstr "%s %s: %d Threads, %d x %d Kacheln, Gruppen von %d Scan-Zeilen" #: libvips/iofuncs/image.c:542 #, c-format msgid "%s %s: %d%% complete" msgstr "%s %s: %d%% komplett" #. Spaces at end help to erase the %complete message we overwrite. #. #: libvips/iofuncs/image.c:559 #, c-format msgid "%s %s: done in %ds \n" msgstr "%s %s: Erledigt in %ds \n" #: libvips/iofuncs/image.c:738 #, c-format msgid "unable to open \"%s\", file too short" msgstr "»%s« kann nicht geöffnet werden, Datei zu klein" #: libvips/iofuncs/image.c:748 #, c-format msgid "%s is longer than expected" msgstr "%s ist länger als erwartet" #: libvips/iofuncs/image.c:765 #, c-format msgid "bad mode \"%s\"" msgstr "falscher Modus »%s«" #: libvips/iofuncs/image.c:820 msgid "image class" msgstr "Bildklasse" #: libvips/iofuncs/image.c:916 msgid "Image filename" msgstr "Bilddateiname" #: libvips/iofuncs/image.c:922 msgid "Mode" msgstr "Modus" #: libvips/iofuncs/image.c:923 msgid "Open mode" msgstr "Öffnen-Modus" #: libvips/iofuncs/image.c:929 msgid "Kill" msgstr "töten" #: libvips/iofuncs/image.c:930 msgid "Block evaluation on this image" msgstr "Blockauswertung dieses Bildes" #: libvips/iofuncs/image.c:936 msgid "Demand style" msgstr "Nachfragestil" #: libvips/iofuncs/image.c:937 msgid "Preferred demand style for this image" msgstr "für dieses Bild bevorzugter Nachfragestil" #: libvips/iofuncs/image.c:950 msgid "Foreign buffer" msgstr "Fremdpuffer" #: libvips/iofuncs/image.c:951 msgid "Pointer to foreign pixels" msgstr "Puffer für fremde Bildpunkte" #: libvips/iofuncs/image.c:1215 #, c-format msgid "killed for image \"%s\"" msgstr "für Bild »%s« abgeschossen" #: libvips/iofuncs/image.c:1815 msgid "bad image descriptor" msgstr "falscher Bild-Deskriptor" #: libvips/iofuncs/image.c:1917 #, c-format msgid "auto-rewind for %s failed" msgstr "automatischer Rücklauf für %s fehlgeschlagen" #: libvips/iofuncs/image.c:1973 libvips/iofuncs/image.c:2168 #: libvips/iofuncs/image.c:2185 msgid "no image data" msgstr "keine Bilddaten" #: libvips/iofuncs/image.c:2041 libvips/iofuncs/image.c:2208 msgid "image not readable" msgstr "Bild nicht lesbar" #: libvips/iofuncs/image.c:2062 libvips/iofuncs/image.c:2238 #: libvips/iofuncs/image.c:2247 msgid "image already written" msgstr "Bild bereits geschrieben" #: libvips/iofuncs/image.c:2086 libvips/iofuncs/image.c:2259 msgid "image not writeable" msgstr "Bild nicht schreibbar" #: libvips/iofuncs/image.c:2132 msgid "bad file type" msgstr "falscher Dateityp" #: libvips/iofuncs/sinkscreen.c:185 msgid "per-thread state for render" msgstr "Status pro Thread für »render«" #: libvips/iofuncs/sinkscreen.c:537 libvips/iofuncs/sinkdisc.c:236 #: libvips/iofuncs/threadpool.c:606 msgid "unable to create thread" msgstr "Thread kann nicht erstellt werden" #: libvips/iofuncs/mapfile.c:130 libvips/iofuncs/mapfile.c:297 msgid "unable to CreateFileMapping" msgstr "»CreateFileMapping« nicht möglich" #: libvips/iofuncs/mapfile.c:138 libvips/iofuncs/mapfile.c:309 msgid "unable to MapViewOfFile" msgstr "»MapViewOfFile« nicht möglich" #: libvips/iofuncs/mapfile.c:178 msgid "unable to mmap" msgstr "»mmap« nicht möglich" #: libvips/iofuncs/mapfile.c:179 #, c-format msgid "" "map failed (%s), running very low on system resources, expect a crash soon" msgstr "" "»map« fehlgeschlagen (%s), die Systemressourcen werden knapp, ein Absturz " "steht bevor" #: libvips/iofuncs/mapfile.c:196 libvips/iofuncs/mapfile.c:303 msgid "unable to UnmapViewOfFile" msgstr "»UnmapViewOfFile« nicht möglich" #: libvips/iofuncs/mapfile.c:202 msgid "unable to munmap file" msgstr "»munmap« der Datei nicht möglich" #: libvips/iofuncs/mapfile.c:224 msgid "file is less than 64 bytes" msgstr "Datei ist weniger als 64 Byte groß" #: libvips/iofuncs/mapfile.c:229 libvips/iofuncs/mapfile.c:263 msgid "unable to get file status" msgstr "Dateistatus kann nicht abgefragt werden" #: libvips/iofuncs/mapfile.c:235 msgid "not a regular file" msgstr "keine reguläre Datei" #: libvips/iofuncs/mapfile.c:269 msgid "unable to read data" msgstr "Daten können nicht gelesen werden" #: libvips/iofuncs/mapfile.c:329 #, c-format msgid "unable to mmap: \"%s\" - %s" msgstr "»mmap« nicht möglich: \"%s\" - %s" #: libvips/iofuncs/mapfile.c:339 #, c-format msgid "unable to mmap \"%s\" to same address" msgstr "»mmap %s« zur gleichen Adresse nicht möglich" #: libvips/iofuncs/base64.c:170 msgid "too little data" msgstr "zu wenige Daten" #. We shouldn't really be used for large amounts of data. #. #: libvips/iofuncs/base64.c:176 libvips/iofuncs/base64.c:241 msgid "too much data" msgstr "zu viele Daten" #: libvips/iofuncs/object.c:148 #, c-format msgid "parameter %s not set" msgstr "Parameter %s nicht gesetzt" #: libvips/iofuncs/object.c:505 #, c-format msgid "no property named `%s'" msgstr "keine Eigenschaft namens »%s«" #: libvips/iofuncs/object.c:513 #, c-format msgid "no vips argument named `%s'" msgstr "kein VIPS-Argument namens »%s«" #: libvips/iofuncs/object.c:520 #, c-format msgid "argument `%s' has no instance" msgstr "Argument »%s« hat keine Instanz" #: libvips/iofuncs/object.c:1248 libvips/iofuncs/operation.c:287 #: libvips/resample/interpolate.c:615 #, c-format msgid "class \"%s\" not found" msgstr "Klasse »%s« nicht gefunden" #: libvips/iofuncs/object.c:1297 msgid "base class" msgstr "Basisklasse" #: libvips/iofuncs/object.c:1311 msgid "Nickname" msgstr "Nickname" #: libvips/iofuncs/object.c:1312 msgid "Class nickname" msgstr "Klassen-Nickname" #: libvips/iofuncs/object.c:1318 msgid "Description" msgstr "Beschreibung" #: libvips/iofuncs/object.c:1319 msgid "Class description" msgstr "Klassenbeschreibung" #: libvips/iofuncs/object.c:1509 #, c-format msgid "enum '%s' has no member '%s'" msgstr "Aufzählung »%s« hat keinen Bestandteil »%s«" #: libvips/iofuncs/object.c:1769 #, c-format msgid "unable to set '%s'" msgstr "»%s« kann nicht gesetzt werden" #: libvips/iofuncs/object.c:1777 msgid "not , or ) after parameter" msgstr "kein »,« oder »)« nach Parameter" #: libvips/iofuncs/object.c:1784 msgid "extra tokens after ')'" msgstr "keine zusätzlichen Token nach »)«" #. File length unit. #. #: libvips/iofuncs/buf.c:520 msgid "bytes" msgstr "Byte" #. Kilo byte unit. #. #: libvips/iofuncs/buf.c:524 msgid "KB" msgstr "KB" #. Mega byte unit. #. #: libvips/iofuncs/buf.c:528 msgid "MB" msgstr "MB" #. Giga byte unit. #. #: libvips/iofuncs/buf.c:532 msgid "GB" msgstr "GB" #. Tera byte unit. #. #: libvips/iofuncs/buf.c:536 msgid "TB" msgstr "TB" #: libvips/iofuncs/util.c:639 msgid "unable to get file stats" msgstr "Dateistatus kann nicht abgefragt werden" #: libvips/iofuncs/util.c:656 libvips/iofuncs/sinkdisc.c:262 msgid "write failed" msgstr "Schreiben fehlgeschlagen" #: libvips/iofuncs/util.c:720 #, c-format msgid "unable to open file \"%s\" for reading" msgstr "Datei »%s« kann nicht zum Lesen geöffnet werden" #: libvips/iofuncs/util.c:742 #, c-format msgid "unable to open file \"%s\" for writing" msgstr "Datei »%s« kann nicht zum Schreiben geöffnet werden" #: libvips/iofuncs/util.c:767 #, c-format msgid "\"%s\" too long" msgstr "»%s« zu lang" #: libvips/iofuncs/util.c:784 msgid "out of memory" msgstr "Hauptspeicher reicht nicht aus" #: libvips/iofuncs/util.c:810 #, c-format msgid "error reading from file \"%s\"" msgstr "Fehler beim Lesen von Datei »%s«" #: libvips/iofuncs/util.c:857 #, c-format msgid "write error (%zd out of %zd blocks written) ... disc full?" msgstr "Schreibfehler (%zd aus %zd Blöcken geschrieben) … Platte voll?" #: libvips/iofuncs/util.c:1106 libvips/iofuncs/util.c:1113 msgid "unable to truncate" msgstr "kann nicht gekürzt werden" #: libvips/iofuncs/util.c:1297 msgid "unexpected end of string" msgstr "Unerwartetes Ende der Zeichenkette" #: libvips/iofuncs/util.c:1315 #, c-format msgid "expected %s, saw %s" msgstr "%s erwartet, %s gesehen" #: libvips/iofuncs/util.c:1485 #, c-format msgid "unable to make temporary file %s" msgstr "temporäre Datei %s kann nicht erstellt werden" #: libvips/iofuncs/operation.c:97 msgid "input" msgstr "Eingabe" #: libvips/iofuncs/operation.c:97 msgid "output" msgstr "Ausgabe" #: libvips/iofuncs/operation.c:246 msgid "operations" msgstr "Transaktionen" #: libvips/iofuncs/operation.c:273 msgid "usage:" msgstr "Aufruf:" #: libvips/iofuncs/operation.c:699 #, c-format msgid "unknown argument '%s'" msgstr "unbekanntes Argument »%s«" #: libvips/iofuncs/operation.c:810 msgid "too few arguments" msgstr "zu wenige Argumente" #: libvips/iofuncs/operation.c:931 msgid "too many arguments" msgstr "zu viele Argumente" #: libvips/iofuncs/header.c:210 #, c-format msgid "unknown band format %d" msgstr "unbekanntes Bandformat %d" #: libvips/iofuncs/header.c:781 #, c-format msgid "field \"%s\" not found" msgstr "Feld »%s« nicht gefunden" #: libvips/iofuncs/header.c:949 #, c-format msgid "field \"%s\" is of type %s, not %s" msgstr "Feld »%s« ist vom Typ %s, nicht %s" #: libvips/iofuncs/sinkmemory.c:108 msgid "per-thread state for sinkmemory" msgstr "Status pro Thread für »sinkmemory«" #: libvips/iofuncs/sinkdisc.c:121 msgid "per-thread state for sinkdisc" msgstr "Status pro Thread für »sinkdisc«" #: libvips/iofuncs/error.c:210 msgid "windows error" msgstr "Windows-Fehler" #: libvips/iofuncs/error.c:219 msgid "unix error" msgstr "Unix-Fehler" #: libvips/iofuncs/error.c:304 libvips/iofuncs/error.c:305 #: libvips/iofuncs/error.c:354 libvips/iofuncs/error.c:355 #, c-format msgid "%s: " msgstr "%s: " #: libvips/iofuncs/error.c:304 msgid "vips diagnostic" msgstr "Vips-Diagnose" #: libvips/iofuncs/error.c:354 msgid "vips warning" msgstr "Vips-Warnung" #: libvips/iofuncs/error.c:438 msgid "image must be uncoded" msgstr "Bild muss unkodiert sein" #: libvips/iofuncs/error.c:466 msgid "image coding must be NONE or LABQ" msgstr "Bildkodierung muss NONE oder LABQ sein" #: libvips/iofuncs/error.c:494 msgid "unknown image coding" msgstr "unbekannte Bildkodierung" #: libvips/iofuncs/error.c:520 msgid "Radiance coding only" msgstr "Nur Radiance-Kodierung" #: libvips/iofuncs/error.c:546 msgid "LABQ coding only" msgstr "Nur LABQ-Kodierung" #: libvips/iofuncs/error.c:570 msgid "image must one band" msgstr "Bild muss ein Band haben" #: libvips/iofuncs/error.c:595 #, c-format msgid "image must have %d bands" msgstr "Bild muss %d Bänder haben" #: libvips/iofuncs/error.c:620 msgid "image must have one or three bands" msgstr "Bild muss ein oder drei Bänder haben" #: libvips/iofuncs/error.c:648 msgid "images must have the same number of bands, or one must be single-band" msgstr "" "Bilder müssen die gleiche Anzahl Bänder haben oder eines muss ein Band haben" #: libvips/iofuncs/error.c:675 #, c-format msgid "image must have 1 or %d bands" msgstr "Bild muss ein oder %d Bänder haben" #: libvips/iofuncs/error.c:699 msgid "image must be non-complex" msgstr "Bild muss nicht-komplex sein" #: libvips/iofuncs/error.c:723 msgid "image must be complex" msgstr "Bild muss komplex sein" #: libvips/iofuncs/error.c:749 #, c-format msgid "image must be %s" msgstr "Bild muss %s sein" #: libvips/iofuncs/error.c:774 msgid "image must be integer" msgstr "Bild muss ganzzahlig sein" #: libvips/iofuncs/error.c:799 msgid "image must be unsigned integer" msgstr "Bild muss aus vorzeichenlosen Ganzzahlen bestehen" #: libvips/iofuncs/error.c:827 msgid "image must be 8- or 16-bit integer, signed or unsigned" msgstr "" "Bild muss aus 8- oder 16-Bit Ganzzahlen mit oder ohne Vorzeichen bestehen" #: libvips/iofuncs/error.c:854 msgid "image must be 8- or 16-bit unsigned integer" msgstr "Bild muss aus 8- oder 16-Bit vorzeichenlosen Ganzzahlen bestehen" #: libvips/iofuncs/error.c:880 msgid "image must be 8- or 16-bit unsigned integer, or float" msgstr "" "Bild muss aus 8- oder 16-Bit vorzeichenlosen Ganzzahlen oder " "Fließkommazahlen bestehen" #: libvips/iofuncs/error.c:908 msgid "image must be unsigned int or float" msgstr "" "Bild muss aus 8- oder 16-Bit vorzeichenlosen Ganz- oder Fließkommazahlen " "bestehen" #: libvips/iofuncs/error.c:933 msgid "images must match in size" msgstr "Bilder müssen in der Größe passen" #: libvips/iofuncs/error.c:959 msgid "images must have the same number of bands" msgstr "Bilder müssen die gleiche Anzahl Bänder haben" #: libvips/iofuncs/error.c:1013 msgid "images must have the same band format" msgstr "Bilder müssen das gleiche Bandformat haben" #: libvips/iofuncs/error.c:1039 msgid "images must have the same coding" msgstr "Bilder müssen die gleiche Kodierung haben" #: libvips/iofuncs/error.c:1064 #, c-format msgid "vector must have 1 or %d elements" msgstr "Vektor muss 1 oder %d Elemente haben" #: libvips/iofuncs/error.c:1089 msgid "histograms must have width or height 1" msgstr "Histogramme müssen eine Breite oder Höhe von eins haben" #: libvips/iofuncs/error.c:1094 msgid "histograms must have not have more than 65536 elements" msgstr "Histogramm dürfen nicht mehr als 65536 Elemente haben" #: libvips/iofuncs/error.c:1123 libvips/iofuncs/error.c:1151 msgid "nonsense mask parameters" msgstr "unsinnige Maskenparameter" #: libvips/iofuncs/error.c:1176 msgid "mask must be 1D" msgstr "Maske muss 1D sein" #: libvips/iofuncs/threadpool.c:217 #, c-format msgid "threads clipped to %d" msgstr "Threads an %d angeheftet" #: libvips/iofuncs/threadpool.c:281 msgid "per-thread state for vipsthreadpool" msgstr "Status pro Thread für »vipsthreadpool«" #: libvips/morphology/im_profile.c:104 msgid "dir not 0 or 1" msgstr "»dir« nicht 0 oder 1" #: libvips/morphology/morphology.c:311 #, c-format msgid "bad mask element (%d should be 0, 128 or 255)" msgstr "falsches Maskenelement (%d sollte 0, 128 oder 255 sein)" #: libvips/morphology/im_zerox.c:141 msgid "flag not -1 or 1" msgstr "Schalter nicht -1 oder 1" #: libvips/morphology/im_zerox.c:145 msgid "image too narrow" msgstr "Bild zu schmal" #: libvips/morphology/im_cntlines.c:81 msgid "flag should be 0 (horizontal) or 1 (vertical)" msgstr "Schalter sollte 0 (horizontal) oder 1 (vertikal) sein" #: libvips/morphology/im_rank.c:365 msgid "image too small for window" msgstr "Bild zu klein für Fenster" #: libvips/morphology/im_rank_image.c:303 msgid "zero input images!" msgstr "null Eingabebilder" #: libvips/morphology/im_rank_image.c:308 #, c-format msgid "index should be in range 0 - %d" msgstr "Index sollte im Bereich 0 - %d liegen" #: libvips/mosaicing/im_lrmerge.c:213 libvips/mosaicing/im_lrmerge.c:262 #: libvips/mosaicing/im_lrmerge.c:603 libvips/mosaicing/im_tbmerge.c:163 #: libvips/mosaicing/im_tbmerge.c:217 libvips/mosaicing/im_tbmerge.c:535 msgid "internal error" msgstr "interner Fehler" #: libvips/mosaicing/im_lrmerge.c:703 msgid "mwidth must be -1 or >= 0" msgstr "»mwidth« muss -1 oder >= 0 sein" #: libvips/mosaicing/im_lrmerge.c:732 msgid "no overlap" msgstr "kein Überlappen" #: libvips/mosaicing/im_lrmerge.c:803 libvips/mosaicing/im_tbmerge.c:634 #: libvips/resample/im_affine.c:469 msgid "unknown coding type" msgstr "unbekannter Kodierungstyp" #: libvips/mosaicing/im_lrmerge.c:820 libvips/mosaicing/im_tbmerge.c:652 msgid "too much overlap" msgstr "zu viel Überlappung" #: libvips/mosaicing/im_remosaic.c:104 #, c-format msgid "substitute image \"%s\" is not the same size as \"%s\"" msgstr "Bild zum Ersetzen »%s« hat nicht die gleiche Größe wie »%s«" #: libvips/mosaicing/im_tbmosaic.c:89 libvips/mosaicing/im_lrmosaic.c:113 msgid "bad area parameters" msgstr "falsche Bereichsparameter" #: libvips/mosaicing/im_tbmosaic.c:110 libvips/mosaicing/im_lrmosaic.c:134 msgid "overlap too small for search" msgstr "Überlappen zu klein für Suche" #: libvips/mosaicing/im_tbmosaic.c:143 libvips/mosaicing/im_lrmosaic.c:167 msgid "unknown Coding type" msgstr "unbekannter Kodierungstyp" #: libvips/mosaicing/im_chkpair.c:200 msgid "inputs incompatible" msgstr "Eingaben inkompatibel" #: libvips/mosaicing/im_chkpair.c:204 libvips/mosaicing/im_tbcalcon.c:102 msgid "help!" msgstr "Hilfe!" #: libvips/mosaicing/im_tbcalcon.c:116 msgid "overlap too small" msgstr "Überlappen zu schmal" #: libvips/mosaicing/global_balance.c:145 msgid "no matching '>'" msgstr "kein passendes »>«" #: libvips/mosaicing/global_balance.c:154 msgid "too many items" msgstr "zu viele Elemente" # Propogate a transform down a tree. If dirty is set, we've been here before, # so there is a doubling up of this node. If this is a leaf, then we have the # same leaf twice (which, in fact, we can cope with); if this is a node, we # have circularity. #: libvips/mosaicing/global_balance.c:448 msgid "circularity detected" msgstr "Zirkularität entdeckt" #: libvips/mosaicing/global_balance.c:482 #: libvips/mosaicing/global_balance.c:538 #, c-format msgid "image \"%s\" used twice as output" msgstr "Bild »%s« zweimal als Ausgabe benutzt" #: libvips/mosaicing/global_balance.c:587 msgid "bad number of args in join line" msgstr "falsche Anzahl von Argumenten in »join«-Zeile" #: libvips/mosaicing/global_balance.c:629 msgid "bad number of args in join1 line" msgstr "falsche Anzahl von Argumenten in »join1«-Zeile" #: libvips/mosaicing/global_balance.c:665 msgid "bad number of args in copy line" msgstr "falsche Anzahl von Argumenten in »copy«-Zeile" #: libvips/mosaicing/global_balance.c:723 msgid "" "mosaic root not found in desc file\n" "is this really a mosaiced image?" msgstr "" "Mosaik-Wurzel nicht in Beschreibungsdatei gefunden\n" "ist das wirklich ein Bild?" #: libvips/mosaicing/global_balance.c:734 msgid "more than one root" msgstr "mehr als eine Wurzel" #: libvips/mosaicing/global_balance.c:1053 msgid "empty overlap!" msgstr "leere Überlappung!" #: libvips/mosaicing/im_avgdxdy.c:64 msgid "no points to average" msgstr "keine Punkte zum Mitteln" #: libvips/mosaicing/im_lrcalcon.c:203 msgid "overlap too small for your search size" msgstr "Überlappen zu schmal für Ihre Suchgröße" #: libvips/mosaicing/im_lrcalcon.c:242 #, c-format msgid "found %d tie-points, need at least %d" msgstr "es wurden %d Verbindungspunkte gefunden, mindestens %d sind nötig" #: libvips/mosaicing/im_lrcalcon.c:287 msgid "not 1-band uchar image" msgstr "kein »uchar«-Bild mit einem Band" #: libvips/mosaicing/im_clinear.c:136 msgid "im_invmat failed" msgstr "»im_invmat« fehlgeschlagen" #: libvips/other/im_zone.c:80 msgid "size must be even and positive" msgstr "Größe muss gerade und positiv sein" #: libvips/other/im_sines.c:88 msgid "wrong sizes" msgstr "falsche Größen" #: libvips/other/im_sines.c:101 msgid "calloc failed" msgstr "»calloc« fehlgeschlagen" #: libvips/other/im_eye.c:83 msgid "factor should be in [1,0)" msgstr "Faktor sollte in [0,1) liegen" #: libvips/resample/im_affine.c:410 msgid "output coordinates out of range" msgstr "Ausgabekoordinaten außerhalb des Bereichs" #: libvips/resample/im_shrink.c:346 msgid "shrink factors should be >= 1" msgstr "Schrumpffaktoren sollten >=1 sein" #: libvips/resample/interpolate.c:180 msgid "VIPS interpolators" msgstr "VIPS-Interpolatoren" #: libvips/resample/interpolate.c:361 msgid "Nearest-neighbour interpolation" msgstr "Nächste-Nachbar-Interpolation" #: libvips/resample/interpolate.c:532 msgid "Bilinear interpolation" msgstr "Bilineare Interpolation" #: libvips/resample/im_rightshift_size.c:120 msgid "shift by zero: falling back to im_copy" msgstr "verschieben um Null: Rückfall auf »im_copy«" #: libvips/resample/im_rightshift_size.c:124 msgid "would result in zero size output image" msgstr "würde in einem Ausgabebild der Größe Null resultieren" #: libvips/resample/im_rightshift_size.c:132 msgid "image and band_fmt must match in sign" msgstr "Bild und Band-Fmt müssen im Kennzeichen zusammenpassen" #: libvips/video/im_video_test.c:51 msgid "error requested" msgstr "Fehler abgefragt" #: libvips/video/im_video_v4l1.c:241 msgid "no file descriptor" msgstr "kein Datei-Deskriptor" #: libvips/video/im_video_v4l1.c:246 #, c-format msgid "ioctl(0x%x) failed: %s" msgstr "ioctl(0x%x) fehlgeschlagen: %s" #: libvips/video/im_video_v4l1.c:295 #, c-format msgid "cannot open video device \"%s\"" msgstr "Videogerät »%s« kann nicht geöffnet werden" #: libvips/video/im_video_v4l1.c:303 msgid "cannot get video capability" msgstr "Videofähigkeit kann nicht abgefragt werden" #: libvips/video/im_video_v4l1.c:312 msgid "card cannot capture to memory" msgstr "Karte kann nicht in Speicher digitalisiert werden" #: libvips/video/im_video_v4l1.c:458 msgid "unable to map memory" msgstr "Speicher kann nicht abgebildet werden" #: libvips/video/im_video_v4l1.c:470 #, c-format msgid "channel not between 0 and %d" msgstr "Kanal nicht zwischen 0 und %d" #: libvips/video/im_video_v4l1.c:698 msgid "compiled without im_video_v4l1 support" msgstr "ohne »im_video_v4l1«-Unterstützung kompiliert" #: tools/edvips.c:82 msgid "tag file as big or little-endian" msgstr "Kennzeichendatei als Big- oder Little-Endian" #: tools/edvips.c:84 msgid "set width to N pixels" msgstr "Breite auf N Bildpunkte setzen" #: tools/edvips.c:86 msgid "set height to N pixels" msgstr "Höhe auf N Bildpunkte setzen" #: tools/edvips.c:88 msgid "set Bands to N" msgstr "Bänder auf N setzen" #: tools/edvips.c:90 msgid "set BandFmt to F (eg. uchar, float)" msgstr "»BandFmt« auf F setzen (z.B. uchar, float)" #: tools/edvips.c:92 msgid "set interpretation to I (eg. xyz)" msgstr "Interpretation aif I setzen (z.B. xyz)" #: tools/edvips.c:94 msgid "set Coding to C (eg. labq)" msgstr "Kodierung auf C setzen (z.B. labq)" #: tools/edvips.c:96 msgid "set Xres to R pixels/mm" msgstr "»Xres« auf R Bildpunkte/mm setzen" #: tools/edvips.c:98 msgid "set Yres to R pixels/mm" msgstr "»Yres« auf R Bildpunkte/mm setzen" #: tools/edvips.c:100 msgid "set Xoffset to N pixels" msgstr "»Xoffset« auf N Bildpunkte setzen" #: tools/edvips.c:102 msgid "set Yoffset to N pixels" msgstr "»Yoffset« auf N Bildpunkte setzen" #: tools/edvips.c:104 msgid "replace extension block with stdin" msgstr "Erweiterungsblock mit STDIN ersetzen" #: tools/edvips.c:106 msgid "set Xsize to N (deprecated, use width)" msgstr "»Xsize« auf N setzen (missbilligt, benutzen Sie »width«)" #: tools/edvips.c:108 msgid "set Ysize to N (deprecated, use height)" msgstr "»Ysize« auf N setzen (missbilligt, benutzen Sie »height«)" #: tools/edvips.c:110 msgid "set Type to T (deprecated, use interpretation)" msgstr "Typ auf N setzen (missbilligt, benutzen Sie »interpretation«" #: tools/edvips.c:121 #, c-format msgid "'%s' is not a positive integer" msgstr "»%s« ist keine positive Ganzzahl" #: tools/edvips.c:133 msgid "unable to start VIPS" msgstr "VIPS kann nicht gestartet werden" #: tools/edvips.c:138 msgid "vipsfile - edit vipsfile header" msgstr "»vipsfile« - »vipsfile«-Kopfzeilen bearbeiten" #: tools/edvips.c:150 #, c-format msgid "usage: %s [OPTION...] vipsfile\n" msgstr "Aufruf: %s [OPTION …] vipsfile\n" #: tools/edvips.c:157 #, c-format msgid "could not open image %s" msgstr "Bild %s konnte nicht geöffnet werden" #: tools/edvips.c:160 #, c-format msgid "could not read VIPS header for %s" msgstr "VIPS-Kopfzeilen für %s konnten nicht gelesen werden" #: tools/edvips.c:169 #, c-format msgid "bad endian-ness %s, should be 'big' or 'little'" msgstr "falsche Byte-Reihenfolge %s, sollte »big« oder »little« sein" #: tools/edvips.c:182 #, c-format msgid "bad format %s" msgstr "falsches Format %s" #: tools/edvips.c:190 #, c-format msgid "bad interpretation %s" msgstr "falsche Interpretation »%s« " #: tools/edvips.c:198 #, c-format msgid "bad coding %s" msgstr "falsche Kodierung %s" #: tools/edvips.c:211 #, c-format msgid "could not seek on %s" msgstr "auf %s konnte nicht gesucht werden" #: tools/edvips.c:214 #, c-format msgid "could not write to %s" msgstr "auf %s konnte nicht geschrieben werden" #: tools/edvips.c:221 msgid "could not get ext data" msgstr "zusätzliche Daten konnten nicht abgefragt werden" #: tools/edvips.c:230 msgid "could not set extension" msgstr "Erweiterung konnte nicht gesetzt werden" #: tools/find_mosaic.c:112 tools/find_mosaic.c:122 tools/find_mosaic.c:144 #: tools/find_mosaic.c:154 tools/find_mosaic.c:163 tools/find_mosaic.c:184 #: tools/find_mosaic.c:194 tools/find_mosaic.c:203 tools/mergeup.c:238 #: tools/mergeup.c:248 tools/mergeup.c:270 tools/mergeup.c:280 #: tools/mergeup.c:289 tools/mergeup.c:310 tools/mergeup.c:320 #: tools/mergeup.c:329 #, c-format msgid "bad file name format '%s'" msgstr "falsches Dateinamensformat »%s«" #: tools/header.c:85 msgid "show all fields" msgstr "alle Felder anzeigen" #: tools/header.c:87 msgid "" "print value of FIELD (\"getext\" reads extension block, \"Hist\" reads image " "history)" msgstr "" "Wert von FELD ausgeben (»getext« liest Erweiterungsblock, »Hist« liest " "Bildchronik)" #: tools/header.c:210 msgid "- print image header" msgstr "- Bild-Kopfzeilen ausgeben" #: tools/mergeup.c:381 msgid "allocation failure in mergeup" msgstr "Reservierung in »mergeup« gescheitert" #: tools/mergeup.c:391 msgid "Need more than one image" msgstr "Mehr als ein Bild benötigt" #: tools/vips.c:101 msgid "load PLUGIN" msgstr "ERWEITERUNG laden" #: tools/vips.c:102 msgid "PLUGIN" msgstr "ERWEITERUNG" #: tools/vips.c:104 msgid "print version" msgstr "Version ausgeben" #: tools/vips.c:147 #, c-format msgid "no package or function \"%s\"" msgstr "kein Paket oder Funktion »%s«" #: tools/vips.c:917 msgid "list classes|packages|all|package-name|operation-name" msgstr "classes|packages|all|package-name|operation-name aufführen" #: tools/vips.c:919 msgid "generate headers for C++ binding" msgstr "Header für C++-Anbindung erzeugen" #: tools/vips.c:921 msgid "generate bodies for C++ binding" msgstr "Rumpfdaten für C++-Anbindung erzeugen" #: tools/vips.c:923 msgid "generate links for vips/bin" msgstr "Verweise für VIPS/Bin erzeugen" #: tools/vips.c:1043 msgid "[ACTION] [OPTIONS] [PARAMETERS] - VIPS driver program" msgstr "[AKTION] [OPTIONEN] [PARAMETER] - VIPS-Treiberprogramm" #: tools/vips.c:1111 msgid "possible actions:\n" msgstr "mögliche Aktionen:\n" #: tools/vips.c:1116 msgid "execute named vips operation" msgstr "genannte VIPS-Transaktion ausführen" #: tools/vips.c:1118 #, c-format msgid "unknown action \"%s\"" msgstr "unbekannte Aktion »%s«" #: tools/vipsthumbnail.c:54 msgid "set thumbnail size to SIZE" msgstr "Miniaturansicht auf GRÖẞE setzen" #: tools/vipsthumbnail.c:55 msgid "SIZE" msgstr "GRÖẞE" #: tools/vipsthumbnail.c:57 msgid "set output to FORMAT" msgstr "Ausgabe auf FORMAT setzen" #: tools/vipsthumbnail.c:58 msgid "FORMAT" msgstr "FORMAT" #: tools/vipsthumbnail.c:60 msgid "resample with INTERPOLATOR" msgstr "neues Muster mit INTERPOLATOR erstellen" #: tools/vipsthumbnail.c:61 msgid "INTERPOLATOR" msgstr "INTERPOLATOR" #: tools/vipsthumbnail.c:63 msgid "don't sharpen thumbnail" msgstr "Miniaturansicht nicht schärfen" #: tools/vipsthumbnail.c:65 msgid "export with PROFILE" msgstr "mit PROFIL exportieren" #: tools/vipsthumbnail.c:66 tools/vipsthumbnail.c:69 msgid "PROFILE" msgstr "PROFIL" #: tools/vipsthumbnail.c:68 msgid "import untagged images with PROFILE" msgstr "nicht gekennzeichnetes Bild mit PROFIL importieren" #: tools/vipsthumbnail.c:71 msgid "don't delete profile from exported image" msgstr "Profil aus exportiertem Bild nicht löschen" #: tools/vipsthumbnail.c:73 msgid "verbose output" msgstr "detaillierte Ausgabe" #: tools/vipsthumbnail.c:412 msgid "- thumbnail generator" msgstr "- Miniaturansichten-Generator" #: libvips/resample/bicubic.cpp:430 msgid "Bicubic interpolation (Catmull-Rom)" msgstr "doppelt kubische Interpolation (Catmull-Rom)" #: libvips/resample/nohalo.cpp:1577 msgid "Edge sharpening resampler with halo reduction" msgstr "neues Kantenschärfungsmuster mit Halo-Reduzierung" #: libvips/resample/vsqbs.cpp:400 msgid "B-Splines with antialiasing smoothing" msgstr "B-Splines mit Kantenglättung" #: libvips/resample/lbb.cpp:861 msgid "Reduced halo bicubic" msgstr "doppelt kubische Halo-Reduzierung" vips-8.2.2/po/Makefile.in.in0000644000175000017500000001760412651721147012533 00000000000000# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # # This file file be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. # # - Modified by Owen Taylor to use GETTEXT_PACKAGE # instead of PACKAGE and to look for po2tbl in ./ not in intl/ # # - Modified by jacob berkman to install # Makefile.in.in and po2tbl.sed.in for use with glib-gettextize GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = @SHELL@ @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ libdir = @libdir@ localedir = $(libdir)/locale gnulocaledir = $(datadir)/locale gettextsrcdir = $(datadir)/glib-2.0/gettext/po subdir = po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = mkdir -p CC = @CC@ GENCAT = @GENCAT@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ XGETTEXT = @XGETTEXT@ MSGMERGE = msgmerge DEFS = @DEFS@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ INCLUDES = -I.. -I$(top_srcdir)/intl COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) SOURCES = POFILES = @POFILES@ GMOFILES = @GMOFILES@ DISTFILES = LINGUAS ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \ $(POFILES) $(GMOFILES) $(SOURCES) POTFILES = \ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ INSTOBJEXT = @INSTOBJEXT@ .SUFFIXES: .SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat .c.o: $(COMPILE) $< .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot $(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(MSGFMT) -o $@ $< .po.gmo: $(AM_V_GEN) file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) $(MSGFMT_OPTS) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && $(GENCAT) $@ $*.msg all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: $(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES) $(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) \ --msgid-bugs-address='http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=general' \ --add-comments --keyword=_ --keyword=N_ \ --keyword=C_:1c,2 \ --keyword=NC_:1c,2 \ --keyword=g_dcgettext:2 \ --keyword=g_dngettext:2,3 \ --keyword=g_dpgettext2:2c,3 \ --flag=N_:1:pass-c-format \ --flag=C_:2:pass-c-format \ --flag=NC_:2:pass-c-format \ --flag=g_dngettext:2:pass-c-format \ --flag=g_strdup_printf:1:c-format \ --flag=g_string_printf:2:c-format \ --flag=g_string_append_printf:2:c-format \ --flag=g_error_new:3:c-format \ --flag=g_set_error:4:c-format \ --flag=g_markup_printf_escaped:1:c-format \ --flag=g_log:3:c-format \ --flag=g_print:1:c-format \ --flag=g_printerr:1:c-format \ --flag=g_printf:1:c-format \ --flag=g_fprintf:2:c-format \ --flag=g_sprintf:2:c-format \ --flag=g_snprintf:3:c-format \ --flag=g_scanner_error:2:c-format \ --flag=g_scanner_warn:2:c-format \ $(POTFILES) \ && test ! -f $(GETTEXT_PACKAGE).po \ || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \ && mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot ) install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \ catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ case "$$cat" in \ *.gmo) destdir=$(gnulocaledir);; \ *) destdir=$(localedir);; \ esac; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \ $(MKINSTALLDIRS) $$dir; \ if test -r $$cat; then \ $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ else \ $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \ fi; \ if test -r $$cat.m; then \ $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ else \ if test -r $(srcdir)/$$cat.m ; then \ $(INSTALL_DATA) $(srcdir)/$$cat.m \ $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \ else \ true; \ fi; \ fi; \ done if test "$(PACKAGE)" = "glib"; then \ $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ else \ : ; \ fi # Define this as empty until I found a useful application. installcheck: uninstall: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \ done if test "$(PACKAGE)" = "glib"; then \ rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ fi check: all dvi info tags TAGS ID: mostlyclean: rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f $(GMOFILES) distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(DISTFILES) dists="$(DISTFILES)"; \ for file in $$dists; do \ ln $(srcdir)/$$file $(distdir) 2> /dev/null \ || cp -p $(srcdir)/$$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ cd $(srcdir); \ catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ echo "$$lang:"; \ if $(MSGMERGE) $$lang.po $(GETTEXT_PACKAGE).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$cat failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done # POTFILES is created from POTFILES.in by stripping comments, empty lines # and Intltool tags (enclosed in square brackets), and appending a full # relative path to them POTFILES: POTFILES.in ( if test 'x$(srcdir)' != 'x.'; then \ posrcprefix='$(top_srcdir)/'; \ else \ posrcprefix="../"; \ fi; \ rm -f $@-t $@ \ && (sed -e '/^#/d' \ -e "s/^\[.*\] +//" \ -e '/^[ ]*$$/d' \ -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ | sed -e '$$s/\\$$//') > $@-t \ && chmod a-w $@-t \ && mv $@-t $@ ) Makefile: Makefile.in.in ../config.status POTFILES cd .. \ && $(SHELL) ./config.status $(subdir)/$@.in # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/po/POTFILES.in0000664000175000017500000002546012530402247011630 00000000000000libvips/arithmetic/abs.c libvips/arithmetic/hist_find_ndim.c libvips/arithmetic/getpoint.c libvips/arithmetic/complex.c libvips/arithmetic/invert.c libvips/arithmetic/nary.c libvips/arithmetic/multiply.c libvips/arithmetic/hough.c libvips/arithmetic/round.c libvips/arithmetic/subtract.c libvips/arithmetic/min.c libvips/arithmetic/unaryconst.c libvips/arithmetic/project.c libvips/arithmetic/avg.c libvips/arithmetic/max.c libvips/arithmetic/statistic.c libvips/arithmetic/divide.c libvips/arithmetic/profile.c libvips/arithmetic/stats.c libvips/arithmetic/sum.c libvips/arithmetic/binary.c libvips/arithmetic/hist_find_indexed.c libvips/arithmetic/deviate.c libvips/arithmetic/relational.c libvips/arithmetic/measure.c libvips/arithmetic/remainder.c libvips/arithmetic/unary.c libvips/arithmetic/hough_circle.c libvips/arithmetic/math.c libvips/arithmetic/hough_line.c libvips/arithmetic/arithmetic.c libvips/arithmetic/hist_find.c libvips/arithmetic/add.c libvips/arithmetic/math2.c libvips/arithmetic/linear.c libvips/arithmetic/boolean.c libvips/arithmetic/sign.c libvips/colour/scRGB2sRGB.c libvips/colour/XYZ2scRGB.c libvips/colour/Lab2XYZ.c libvips/colour/LCh2Lab.c libvips/colour/LCh2UCS.c libvips/colour/dE00.c libvips/colour/scRGB2BW.c libvips/colour/scRGB2XYZ.c libvips/colour/icc_transform.c libvips/colour/dECMC.c libvips/colour/colour.c libvips/colour/rad2float.c libvips/colour/sRGB2scRGB.c libvips/colour/UCS2LCh.c libvips/colour/Lab2LabQ.c libvips/colour/colourspace.c libvips/colour/Lab2LabS.c libvips/colour/LabS2LabQ.c libvips/colour/Lab2LCh.c libvips/colour/Yxy2XYZ.c libvips/colour/LabQ2sRGB.c libvips/colour/float2rad.c libvips/colour/XYZ2Yxy.c libvips/colour/dE76.c libvips/colour/XYZ2Lab.c libvips/colour/LabQ2LabS.c libvips/colour/LabQ2Lab.c libvips/colour/LabS2Lab.c libvips/conversion/rot.c libvips/conversion/conversion.c libvips/conversion/grid.c libvips/conversion/recomb.c libvips/conversion/falsecolour.c libvips/conversion/flatten.c libvips/conversion/replicate.c libvips/conversion/bandary.c libvips/conversion/subsample.c libvips/conversion/cache.c libvips/conversion/join.c libvips/conversion/gamma.c libvips/conversion/rot45.c libvips/conversion/autorot.c libvips/conversion/extract.c libvips/conversion/wrap.c libvips/conversion/zoom.c libvips/conversion/bandbool.c libvips/conversion/ifthenelse.c libvips/conversion/tilecache.c libvips/conversion/flip.c libvips/conversion/bandjoin.c libvips/conversion/copy.c libvips/conversion/cast.c libvips/conversion/sequential.c libvips/conversion/embed.c libvips/conversion/insert.c libvips/conversion/msb.c libvips/conversion/bandrank.c libvips/conversion/bandmean.c libvips/conversion/scale.c libvips/convolution/im_aconv.c libvips/convolution/fastcor.c libvips/convolution/convsep.c libvips/convolution/gaussblur.c libvips/convolution/im_conv.c libvips/convolution/correlation.c libvips/convolution/compass.c libvips/convolution/sharpen.c libvips/convolution/spcor.c libvips/convolution/im_aconvsep.c libvips/convolution/conv.c libvips/convolution/im_conv_f.c libvips/convolution/convolution.c libvips/create/mask.c libvips/create/zone.c libvips/create/invertlut.c libvips/create/mask_gaussian.c libvips/create/mask_butterworth_band.c libvips/create/sines.c libvips/create/black.c libvips/create/mask_ideal_ring.c libvips/create/gaussnoise.c libvips/create/logmat.c libvips/create/tonelut.c libvips/create/mask_gaussian_band.c libvips/create/mask_ideal.c libvips/create/mask_butterworth_ring.c libvips/create/create.c libvips/create/identity.c libvips/create/eye.c libvips/create/text.c libvips/create/gaussmat.c libvips/create/xyz.c libvips/create/mask_butterworth.c libvips/create/mask_gaussian_ring.c libvips/create/mask_fractal.c libvips/create/point.c libvips/create/mask_ideal_band.c libvips/create/grey.c libvips/create/fractsurf.c libvips/create/buildlut.c libvips/draw/draw_smudge.c libvips/draw/draw_line.c libvips/draw/draw_image.c libvips/draw/draw_circle.c libvips/draw/drawink.c libvips/draw/draw_flood.c libvips/draw/draw.c libvips/draw/draw_rect.c libvips/draw/draw_mask.c libvips/dummy.c libvips/foreign/jpeg2vips.c libvips/foreign/radiance.c libvips/foreign/vips2jpeg.c libvips/foreign/openexrload.c libvips/foreign/vipssave.c libvips/foreign/rawsave.c libvips/foreign/csvsave.c libvips/foreign/matrixload.c libvips/foreign/radsave.c libvips/foreign/rawload.c libvips/foreign/webpsave.c libvips/foreign/vips2tiff.c libvips/foreign/vips2webp.c libvips/foreign/fits.c libvips/foreign/matlab.c libvips/foreign/csvload.c libvips/foreign/jpegload.c libvips/foreign/magickload.c libvips/foreign/webpload.c libvips/foreign/matload.c libvips/foreign/tiff2vips.c libvips/foreign/openexr2vips.c libvips/foreign/foreign.c libvips/foreign/webp2vips.c libvips/foreign/jpegsave.c libvips/foreign/dzsave.c libvips/foreign/openslide2vips.c libvips/foreign/analyze2vips.c libvips/foreign/ppmsave.c libvips/foreign/tiffsave.c libvips/foreign/matrixsave.c libvips/foreign/fitssave.c libvips/foreign/csv.c libvips/foreign/pngload.c libvips/foreign/fitsload.c libvips/foreign/vipsload.c libvips/foreign/vipspng.c libvips/foreign/tiffload.c libvips/foreign/magick2vips.c libvips/foreign/analyzeload.c libvips/foreign/ppm.c libvips/foreign/openslideload.c libvips/foreign/pngsave.c libvips/foreign/radload.c libvips/foreign/ppmload.c libvips/freqfilt/phasecor.c libvips/freqfilt/fwfft.c libvips/freqfilt/freqmult.c libvips/freqfilt/freqfilt.c libvips/freqfilt/invfft.c libvips/freqfilt/spectrum.c libvips/histogram/hist_cum.c libvips/histogram/hist_norm.c libvips/histogram/hist_equal.c libvips/histogram/maplut.c libvips/histogram/hist_plot.c libvips/histogram/stdif.c libvips/histogram/hist_local.c libvips/histogram/histogram.c libvips/histogram/hist_match.c libvips/histogram/hist_unary.c libvips/histogram/hist_ismonotonic.c libvips/histogram/percent.c libvips/introspect.c libvips/iofuncs/gate.c libvips/iofuncs/window.c libvips/iofuncs/base64.c libvips/iofuncs/type.c libvips/iofuncs/memory.c libvips/iofuncs/vips.c libvips/iofuncs/init.c libvips/iofuncs/enumtypes.c libvips/iofuncs/cache.c libvips/iofuncs/buffer.c libvips/iofuncs/sinkmemory.c libvips/iofuncs/rect.c libvips/iofuncs/buf.c libvips/iofuncs/system.c libvips/iofuncs/threadpool.c libvips/iofuncs/operation.c libvips/iofuncs/header.c libvips/iofuncs/vector.c libvips/iofuncs/semaphore.c libvips/iofuncs/error.c libvips/iofuncs/sinkdisc.c libvips/iofuncs/sink.c libvips/iofuncs/generate.c libvips/iofuncs/region.c libvips/iofuncs/mapfile.c libvips/iofuncs/image.c libvips/iofuncs/util.c libvips/iofuncs/sinkscreen.c libvips/iofuncs/vipsmarshal.c libvips/iofuncs/object.c libvips/morphology/countlines.c libvips/morphology/labelregions.c libvips/morphology/rank.c libvips/morphology/hitmiss.c libvips/morphology/morphology.c libvips/morphology/morph.c libvips/mosaicing/im_tbmosaic.c libvips/mosaicing/im_avgdxdy.c libvips/mosaicing/im_tbcalcon.c libvips/mosaicing/im_tbmerge.c libvips/mosaicing/im_lrcalcon.c libvips/mosaicing/im_clinear.c libvips/mosaicing/im_remosaic.c libvips/mosaicing/im_chkpair.c libvips/mosaicing/im_initialize.c libvips/mosaicing/merge.c libvips/mosaicing/mosaicing.c libvips/mosaicing/mosaic1.c libvips/mosaicing/mosaic.c libvips/mosaicing/im_lrmerge.c libvips/mosaicing/im_lrmosaic.c libvips/mosaicing/im_improve.c libvips/mosaicing/match.c libvips/mosaicing/global_balance.c libvips/resample/interpolate.c libvips/resample/resample.c libvips/resample/resize.c libvips/resample/transform.c libvips/resample/similarity.c libvips/resample/shrink.c libvips/resample/quadratic.c libvips/resample/affine.c libvips/video/im_video_test.c libvips/video/video_dispatch.c tools/vips.c tools/vipsedit.c tools/vipsheader.c tools/vipsthumbnail.c libvipsCC/VDisplay.cc libvipsCC/VError.cc libvipsCC/VImage.cc libvipsCC/vipsc++.cc libvipsCC/VMask.cc libvips/resample/dummy2.cc cplusplus/include/vips/VImage8.h cplusplus/include/vips/VInterpolate8.h cplusplus/include/vips/VError8.h cplusplus/include/vips/vips-operators.h libvips/arithmetic/unaryconst.h libvips/arithmetic/nary.h libvips/arithmetic/binary.h libvips/arithmetic/hough.h libvips/arithmetic/parithmetic.h libvips/arithmetic/unary.h libvips/arithmetic/statistic.h libvipsCC/include/vips/VDisplay.h libvipsCC/include/vips/VError.h libvipsCC/include/vips/VImage.h libvipsCC/include/vips/vipsc++.h libvipsCC/include/vips/vipscpp.h libvipsCC/include/vips/VMask.h libvips/colour/pcolour.h libvips/conversion/pconversion.h libvips/conversion/bandary.h libvips/convolution/correlation.h libvips/convolution/pconvolution.h libvips/create/point.h libvips/create/pcreate.h libvips/create/pmask.h libvips/draw/drawink.h libvips/draw/pdraw.h libvips/foreign/csv.h libvips/foreign/tiff.h libvips/foreign/analyze2vips.h libvips/foreign/jpeg.h libvips/foreign/fits.h libvips/foreign/dbh.h libvips/foreign/dzsave.h libvips/foreign/vipsjpeg.h libvips/foreign/openslide2vips.h libvips/foreign/magick.h libvips/foreign/ppm.h libvips/foreign/matlab.h libvips/foreign/vipspng.h libvips/foreign/openexr2vips.h libvips/foreign/webp.h libvips/foreign/radiance.h libvips/freqfilt/pfreqfilt.h libvips/histogram/phistogram.h libvips/histogram/hist_unary.h libvips/include/vips/conversion.h libvips/include/vips/vips.h libvips/include/vips/private.h libvips/include/vips/vips7compat.h libvips/include/vips/debug.h libvips/include/vips/memory.h libvips/include/vips/operation.h libvips/include/vips/basic.h libvips/include/vips/image.h libvips/include/vips/error.h libvips/include/vips/internal.h libvips/include/vips/inlines.h libvips/include/vips/cimg_funcs.h libvips/include/vips/draw.h libvips/include/vips/dispatch.h libvips/include/vips/interpolate.h libvips/include/vips/intl.h libvips/include/vips/thread.h libvips/include/vips/resample.h libvips/include/vips/semaphore.h libvips/include/vips/gate.h libvips/include/vips/transform.h libvips/include/vips/util.h libvips/include/vips/version.h libvips/include/vips/morphology.h libvips/include/vips/generate.h libvips/include/vips/enumtypes.h libvips/include/vips/region.h libvips/include/vips/vector.h libvips/include/vips/format.h libvips/include/vips/threadpool.h libvips/include/vips/colour.h libvips/include/vips/freqfilt.h libvips/include/vips/create.h libvips/include/vips/video.h libvips/include/vips/type.h libvips/include/vips/mosaicing.h libvips/include/vips/almostdeprecated.h libvips/include/vips/convolution.h libvips/include/vips/object.h libvips/include/vips/buf.h libvips/include/vips/foreign.h libvips/include/vips/mask.h libvips/include/vips/histogram.h libvips/include/vips/header.h libvips/include/vips/arithmetic.h libvips/include/vips/rect.h libvips/iofuncs/vipsmarshal.h libvips/iofuncs/base64.h libvips/iofuncs/sink.h libvips/morphology/pmorphology.h libvips/mosaicing/pmosaicing.h libvips/mosaicing/global_balance.h libvips/resample/presample.h libvips/resample/templates.h cplusplus/VError.cpp cplusplus/VImage.cpp cplusplus/VInterpolate.cpp cplusplus/vips-operators.cpp libvips/resample/vsqbs.cpp libvips/resample/bicubic.cpp libvips/resample/lbb.cpp libvips/resample/nohalo.cpp vips-8.2.2/test-driver0000755000175000017500000001027712530402347011632 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2013 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then estatus=1 fi case $estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: vips-8.2.2/config.sub0000755000175000017500000010577512651721156011435 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-09-11' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: vips-8.2.2/COPYING0000664000175000017500000006364212530402247010474 00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! vips-8.2.2/configure0000775000175000017500000321127512651721155011356 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for vips 8.2.2. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: vipsip@jiscmail.ac.uk about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='vips' PACKAGE_TARNAME='vips' PACKAGE_VERSION='8.2.2' PACKAGE_STRING='vips 8.2.2' PACKAGE_BUGREPORT='vipsip@jiscmail.ac.uk' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS TOP_SRCDIR EXTRA_LIBS_USED PACKAGES_USED VIPS_LIBS VIPS_INCLUDES VIPS_CFLAGS VIPS_LIBDIR HAVE_PYTHON_FALSE HAVE_PYTHON_TRUE PYTHON_INCLUDES EXIF_LIBS EXIF_CFLAGS JPEG_INCLUDES JPEG_LIBS PNG_INCLUDES PNG_LIBS PNG_CFLAGS TIFF_INCLUDES TIFF_LIBS TIFF_CFLAGS ZIP_INCLUDES ZIP_LIBS X_EXTRA_LIBS X_LIBS X_PRE_LIBS X_CFLAGS XMKMF ENABLE_PYVIPS8_FALSE ENABLE_PYVIPS8_TRUE pyoverridesdir PYGOBJECT_LIBS PYGOBJECT_CFLAGS pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_PLATFORM PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_VERSION PYTHON PANGOFT2_LIBS PANGOFT2_CFLAGS LIBWEBP_LIBS LIBWEBP_CFLAGS CFITSIO_LIBS CFITSIO_CFLAGS MATIO_LIBS MATIO_CFLAGS OPENSLIDE_LIBS OPENSLIDE_CFLAGS OPENEXR_LIBS OPENEXR_CFLAGS LCMS_LIBS LCMS_CFLAGS ORC_LIBS ORC_CFLAGS MAGICK_LIBS MAGICK_CFLAGS IMAGE_MAGICK_LIBS IMAGE_MAGICK_CFLAGS MAGICK_WAND_LIBS MAGICK_WAND_CFLAGS FFTW_LIBS FFTW_CFLAGS GSF_LIBS GSF_CFLAGS GTK_DOC_USE_REBASE_FALSE GTK_DOC_USE_REBASE_TRUE GTK_DOC_USE_LIBTOOL_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_BUILD_PDF_FALSE GTK_DOC_BUILD_PDF_TRUE GTK_DOC_BUILD_HTML_FALSE GTK_DOC_BUILD_HTML_TRUE ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE HAVE_GTK_DOC_FALSE HAVE_GTK_DOC_TRUE GTKDOC_DEPS_LIBS GTKDOC_DEPS_CFLAGS HTML_DIR GTKDOC_MKPDF GTKDOC_REBASE GTKDOC_CHECK_PATH GTKDOC_CHECK TYPE_INIT_LIBS TYPE_INIT_CFLAGS GTHREAD_LIBS GTHREAD_CFLAGS THREADS_LIBS THREADS_CFLAGS MONOTONIC_LIBS MONOTONIC_CFLAGS REQUIRED_LIBS REQUIRED_CFLAGS LIBOBJS CXXCPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL ac_ct_AR NM ac_ct_DUMPBIN DUMPBIN FGREP SED LIBTOOL LD AR DLLWRAP OBJDUMP DLLTOOL AS MKINSTALLDIRS POSUB POFILES PO_IN_DATADIR_FALSE PO_IN_DATADIR_TRUE INTLLIBS INSTOBJEXT GMOFILES DATADIRNAME CATOBJEXT CATALOGS XGETTEXT GMSGFMT MSGFMT_OPTS MSGFMT USE_NLS EGREP GREP CPP GETTEXT_PACKAGE VIPS_EXEEXT LN_S RANLIB am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC OS_WIN32_FALSE OS_WIN32_TRUE VIPS_ENABLE_DEPRECATED ENABLE_DEPRECATED_FALSE ENABLE_DEPRECATED_TRUE host_os host_vendor host_cpu host build_os build_vendor build_cpu build vips_introspection_sources HAVE_INTROSPECTION_FALSE HAVE_INTROSPECTION_TRUE INTROSPECTION_MAKEFILE INTROSPECTION_LIBS INTROSPECTION_CFLAGS INTROSPECTION_TYPELIBDIR INTROSPECTION_GIRDIR INTROSPECTION_GENERATE INTROSPECTION_COMPILER INTROSPECTION_SCANNER PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG LIBRARY_AGE LIBRARY_REVISION LIBRARY_CURRENT VIPS_MICRO_VERSION VIPS_MINOR_VERSION VIPS_MAJOR_VERSION VIPS_VERSION_STRING VIPS_VERSION AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_introspection enable_debug enable_deprecated enable_largefile enable_dependency_tracking with_dmalloc enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock with_html_dir enable_gtk_doc enable_gtk_doc_html enable_gtk_doc_pdf with_gsf with_fftw with_magick with_magickpackage with_orc with_lcms with_OpenEXR with_openslide with_matio with_cfitsio with_libwebp with_pangoft2 enable_pyvips8 with_x with_zip with_zip_includes with_zip_libraries with_tiff with_tiff_includes with_tiff_libraries with_png with_png_includes with_png_libraries with_jpeg with_jpeg_includes with_jpeg_libraries with_libexif with_python ' ac_precious_vars='build_alias host_alias target_alias PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC CPP CXXCPP REQUIRED_CFLAGS REQUIRED_LIBS MONOTONIC_CFLAGS MONOTONIC_LIBS THREADS_CFLAGS THREADS_LIBS GTHREAD_CFLAGS GTHREAD_LIBS TYPE_INIT_CFLAGS TYPE_INIT_LIBS GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS GSF_CFLAGS GSF_LIBS FFTW_CFLAGS FFTW_LIBS MAGICK_WAND_CFLAGS MAGICK_WAND_LIBS IMAGE_MAGICK_CFLAGS IMAGE_MAGICK_LIBS MAGICK_CFLAGS MAGICK_LIBS ORC_CFLAGS ORC_LIBS LCMS_CFLAGS LCMS_LIBS OPENEXR_CFLAGS OPENEXR_LIBS OPENSLIDE_CFLAGS OPENSLIDE_LIBS MATIO_CFLAGS MATIO_LIBS CFITSIO_CFLAGS CFITSIO_LIBS LIBWEBP_CFLAGS LIBWEBP_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS PYTHON PYGOBJECT_CFLAGS PYGOBJECT_LIBS XMKMF TIFF_CFLAGS TIFF_LIBS PNG_CFLAGS PNG_LIBS EXIF_CFLAGS EXIF_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures vips 8.2.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/vips] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of vips 8.2.2:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-introspection=[no/auto/yes] Enable introspection for this build --enable-debug=[no/minimum/yes] turn on debugging [default=no] --enable-deprecated build deprecated components (default: yes) --disable-largefile omit support for large files --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-gtk-doc use gtk-doc to build documentation [[default=no]] --enable-gtk-doc-html build documentation in html format [[default=yes]] --enable-gtk-doc-pdf build documentation in pdf format [[default=no]] --enable-pyvips8 install vips8 Python overrides (default: test) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-dmalloc use dmalloc, as in http://www.dmalloc.com --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-html-dir=PATH path to installed docs --without-gsf build without libgsf-1 (default: test) --without-fftw build without fftw (default: test) --without-magick build without libMagic (default: test) --with-magickpackage magickpackage to use (default: MagickWand, ImageMagick; try GraphicsMagick to build against gm instead) --without-orc build without orc (default: test) --without-lcms build without lcms (default: test) --without-OpenEXR build without OpenEXR (default: test) --without-openslide build without OpenSlide (default: test) --without-matio build without matio (default: test) --without-cfitsio build without cfitsio (default: test) --without-libwebp build without libwebp (default: test) --without-pangoft2 build without pangoft2 (default: test) --with-x use the X Window System --without-zip build without libx (default: test) --with-zip-includes=DIR libz includes are in DIR --with-zip-libraries=DIR libz libraries are in DIR --without-tiff build without libtiff (default: test) --with-tiff-includes=DIR libtiff includes are in DIR --with-tiff-libraries=DIR libtiff libraries are in DIR --without-png build without libpng (default: test) --with-png-includes=DIR libpng includes are in DIR --with-png-libraries=DIR libpng libraries are in DIR --without-jpeg build without libjpeg (default: test) --with-jpeg-includes=DIR libjpeg includes are in DIR --with-jpeg-libraries=DIR libjpeg libraries are in DIR --without-libexif build without libexif (default: test) --without-python build without vips7 Python bindings (default: test) Some influential environment variables: PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CPP C preprocessor CXXCPP C++ preprocessor REQUIRED_CFLAGS C compiler flags for REQUIRED, overriding pkg-config REQUIRED_LIBS linker flags for REQUIRED, overriding pkg-config MONOTONIC_CFLAGS C compiler flags for MONOTONIC, overriding pkg-config MONOTONIC_LIBS linker flags for MONOTONIC, overriding pkg-config THREADS_CFLAGS C compiler flags for THREADS, overriding pkg-config THREADS_LIBS linker flags for THREADS, overriding pkg-config GTHREAD_CFLAGS C compiler flags for GTHREAD, overriding pkg-config GTHREAD_LIBS linker flags for GTHREAD, overriding pkg-config TYPE_INIT_CFLAGS C compiler flags for TYPE_INIT, overriding pkg-config TYPE_INIT_LIBS linker flags for TYPE_INIT, overriding pkg-config GTKDOC_DEPS_CFLAGS C compiler flags for GTKDOC_DEPS, overriding pkg-config GTKDOC_DEPS_LIBS linker flags for GTKDOC_DEPS, overriding pkg-config GSF_CFLAGS C compiler flags for GSF, overriding pkg-config GSF_LIBS linker flags for GSF, overriding pkg-config FFTW_CFLAGS C compiler flags for FFTW, overriding pkg-config FFTW_LIBS linker flags for FFTW, overriding pkg-config MAGICK_WAND_CFLAGS C compiler flags for MAGICK_WAND, overriding pkg-config MAGICK_WAND_LIBS linker flags for MAGICK_WAND, overriding pkg-config IMAGE_MAGICK_CFLAGS C compiler flags for IMAGE_MAGICK, overriding pkg-config IMAGE_MAGICK_LIBS linker flags for IMAGE_MAGICK, overriding pkg-config MAGICK_CFLAGS C compiler flags for MAGICK, overriding pkg-config MAGICK_LIBS linker flags for MAGICK, overriding pkg-config ORC_CFLAGS C compiler flags for ORC, overriding pkg-config ORC_LIBS linker flags for ORC, overriding pkg-config LCMS_CFLAGS C compiler flags for LCMS, overriding pkg-config LCMS_LIBS linker flags for LCMS, overriding pkg-config OPENEXR_CFLAGS C compiler flags for OPENEXR, overriding pkg-config OPENEXR_LIBS linker flags for OPENEXR, overriding pkg-config OPENSLIDE_CFLAGS C compiler flags for OPENSLIDE, overriding pkg-config OPENSLIDE_LIBS linker flags for OPENSLIDE, overriding pkg-config MATIO_CFLAGS C compiler flags for MATIO, overriding pkg-config MATIO_LIBS linker flags for MATIO, overriding pkg-config CFITSIO_CFLAGS C compiler flags for CFITSIO, overriding pkg-config CFITSIO_LIBS linker flags for CFITSIO, overriding pkg-config LIBWEBP_CFLAGS C compiler flags for LIBWEBP, overriding pkg-config LIBWEBP_LIBS linker flags for LIBWEBP, overriding pkg-config PANGOFT2_CFLAGS C compiler flags for PANGOFT2, overriding pkg-config PANGOFT2_LIBS linker flags for PANGOFT2, overriding pkg-config PYTHON the Python interpreter PYGOBJECT_CFLAGS C compiler flags for PYGOBJECT, overriding pkg-config PYGOBJECT_LIBS linker flags for PYGOBJECT, overriding pkg-config XMKMF Path to xmkmf, Makefile generator for X Window System TIFF_CFLAGS C compiler flags for TIFF, overriding pkg-config TIFF_LIBS linker flags for TIFF, overriding pkg-config PNG_CFLAGS C compiler flags for PNG, overriding pkg-config PNG_LIBS linker flags for PNG, overriding pkg-config EXIF_CFLAGS C compiler flags for EXIF, overriding pkg-config EXIF_LIBS linker flags for EXIF, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF vips configure 8.2.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------ ## ## Report this to vipsip@jiscmail.ac.uk ## ## ------------------------------------ ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by vips $as_me 8.2.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_list " stdlib.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_header_list " sys/param.h" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # required for gobject-introspection # gobject-introspection recommends -Wno-portability # foreign stops complaints about a missing README (we use README.md instead) # and missing INSTALL (the standard Gnu INSTALL is not very useful) # subdir-objects lets us have dumy.cc in a subdir am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='vips' VERSION='8.2.2' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_config_headers="$ac_config_headers config.h" # user-visible library versioning VIPS_MAJOR_VERSION=8 VIPS_MINOR_VERSION=2 VIPS_MICRO_VERSION=2 VIPS_VERSION=8.2.2 VIPS_VERSION_STRING=$VIPS_VERSION-`date` # libtool library versioning ... not user-visible (except as part of the # library file name) and does not correspond to major/minor/micro above # rules: # sources changed: increment revision # binary interface changed: increment current, reset revision to 0 # binary interface changes backwards compatible?: increment age # binary interface changes not backwards compatible?: reset age to 0 LIBRARY_CURRENT=45 LIBRARY_REVISION=2 LIBRARY_AGE=3 # patched into include/vips/version.h # put into library name by libsrc/Makefile.am and libsrcCC/Makefile.am # init introspection support if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # Check whether --enable-introspection was given. if test "${enable_introspection+set}" = set; then : enableval=$enable_introspection; else enable_introspection=auto fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gobject-introspection" >&5 $as_echo_n "checking for gobject-introspection... " >&6; } case $enable_introspection in #( no) : found_introspection="no (disabled, use --enable-introspection to enable)" ;; #( yes) : if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : else as_fn_error $? "gobject-introspection-1.0 is not installed" "$LINENO" 5 fi if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 1.30.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 1.30.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then found_introspection=yes else as_fn_error $? "You need to have gobject-introspection >= 1.30.0 installed to build vips" "$LINENO" 5 fi ;; #( auto) : if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 1.30.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 1.30.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then found_introspection=yes else found_introspection=no fi enable_introspection=$found_introspection ;; #( *) : as_fn_error $? "invalid argument passed to --enable-introspection, should be one of [no/auto/yes]" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_introspection" >&5 $as_echo "$found_introspection" >&6; } INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= INTROSPECTION_GENERATE= INTROSPECTION_GIRDIR= INTROSPECTION_TYPELIBDIR= if test "x$found_introspection" = "xyes"; then INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection fi if test "x$found_introspection" = "xyes"; then HAVE_INTROSPECTION_TRUE= HAVE_INTROSPECTION_FALSE='#' else HAVE_INTROSPECTION_TRUE='#' HAVE_INTROSPECTION_FALSE= fi # gir needs a list of source files to scan for introspection # # build with a glob and a list of files to exclude from scanning # see also IGNORE_HFILES in doc/Makefile.am introspection_sources=$(cd libvips ; find . -name "*.c") filter_list="deprecated " # contains(string, substring) # # Returns 0 if the specified string contains the specified substring, # otherwise returns 1. contains() { string="$1" substring="$2" if test "${string#*$substring}" != "$string"; then return 0 # $substring is in $string else return 1 # $substring is not in $string fi } introspection_sources2= for name in $introspection_sources; do found=0 for filter in $filter_list; do if contains $name ${filter}; then found=1 fi done if [ $found -eq 0 ]; then introspection_sources2="$introspection_sources2 $name" fi done vips_introspection_sources="$introspection_sources2" # add headers that form the public vips8 API .. don't do a find and exclude, # we end up excluding almost everything argh headers="\ basic.h \ vips.h \ object.h \ image.h \ error.h \ foreign.h \ interpolate.h \ header.h \ operation.h \ enumtypes.h \ conversion.h \ arithmetic.h \ colour.h \ convolution.h \ draw.h \ morphology.h \ type.h \ memory.h \ region.h" for name in $headers; do vips_introspection_sources="$vips_introspection_sources include/vips/$name" done # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac cat >>confdefs.h <<_ACEOF #define G_LOG_DOMAIN "VIPS" _ACEOF # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; else enable_debug=no fi if test "x$enable_debug" = "xyes"; then VIPS_DEBUG_FLAGS="-DDEBUG_FATAL -DDEBUG_LEAK" else VIPS_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS" if test "x$enable_debug" = "xno"; then VIPS_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS" fi fi # option to disable deprecated code, shaves a bit off the library size # Check whether --enable-deprecated was given. if test "${enable_deprecated+set}" = set; then : enableval=$enable_deprecated; fi VIPS_ENABLE_DEPRECATED=0 if test x"$enable_deprecated" != x"no"; then VIPS_ENABLE_DEPRECATED=1 enable_deprecated=yes if true; then ENABLE_DEPRECATED_TRUE= ENABLE_DEPRECATED_FALSE='#' else ENABLE_DEPRECATED_TRUE='#' ENABLE_DEPRECATED_FALSE= fi else if false; then ENABLE_DEPRECATED_TRUE= ENABLE_DEPRECATED_FALSE='#' else ENABLE_DEPRECATED_TRUE='#' ENABLE_DEPRECATED_FALSE= fi fi # this gets pasted into version.h as a #define # we are a C library with some optional C++ components inside it # on most platforms, but not all, we just include -lstdc++ in the link line # for programs # we ought to write a proper configure test for this :( { $as_echo "$as_me:${as_lineno-$LINENO}: checking for needs -lstdc++" >&5 $as_echo_n "checking for needs -lstdc++... " >&6; } case "$host_os" in freebsd*) vips_needs_stdcpp=no ;; *) vips_needs_stdcpp=yes ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vips_needs_stdcpp" >&5 $as_echo "$vips_needs_stdcpp" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for native Win32" >&5 $as_echo_n "checking for native Win32... " >&6; } case "$host" in *-*-mingw*) vips_os_win32=yes ;; *) vips_os_win32=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vips_os_win32" >&5 $as_echo "$vips_os_win32" >&6; } if test x"$vips_os_win32" = "xyes"; then $as_echo "#define OS_WIN32 1" >>confdefs.h # makes gcc use win native alignment VIPS_CFLAGS="-mms-bitfields $VIPS_CFLAGS" fi # CImg needs flags changed on win32 if test x"$vips_os_win32" = "xyes"; then if true; then OS_WIN32_TRUE= OS_WIN32_FALSE='#' else OS_WIN32_TRUE='#' OS_WIN32_FALSE= fi else if false; then OS_WIN32_TRUE= OS_WIN32_FALSE='#' else OS_WIN32_TRUE='#' OS_WIN32_FALSE= fi fi # Cygwin/mingw need binary open to avoid CR/LF madness # ... should be a better way to test for this { $as_echo "$as_me:${as_lineno-$LINENO}: checking for binary open needed" >&5 $as_echo_n "checking for binary open needed... " >&6; } case "$host_os" in cygwin* | mingw*) vips_binary_open=yes ;; *) vips_binary_open=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vips_binary_open" >&5 $as_echo "$vips_binary_open" >&6; } if test x"$vips_binary_open" = "xyes"; then $as_echo "#define BINARY_OPEN 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mac OS X" >&5 $as_echo_n "checking for Mac OS X... " >&6; } case "$host" in *-*-darwin*) vips_os_darwin=yes ;; *) vips_os_darwin=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vips_os_darwin" >&5 $as_echo "$vips_os_darwin" >&6; } if test x"$vips_os_darwin" = x"yes"; then $as_echo "#define VIPS_OS_DARWIN 1" >>confdefs.h fi # set the default directory for ICC profiles if test x"$vips_os_darwin" = x"yes"; then profile_dir="/Library/ColorSync/Profiles" elif test x"$vips_os_win32" = x"yes"; then profile_dir="C:\\Windows\\System32\\spool\\drivers\\color" else profile_dir="/usr/share/color/icc" fi cat >>confdefs.h <<_ACEOF #define VIPS_ICC_DIR "$profile_dir" _ACEOF # we want largefile support, if possible DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi # Checks for programs. for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi case $ac_cv_prog_cc_stdc in #( no) : ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } if ${ac_cv_prog_cc_c99+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include // Check varargs macros. These examples are taken from C99 6.10.3.5. #define debug(...) fprintf (stderr, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK your preprocessor is broken; #endif #if BIG_OK #else your preprocessor is broken; #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\0'; ++i) continue; return 0; } // Check varargs and va_copy. static void test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str; int number; float fnumber; while (*format) { switch (*format++) { case 's': // string str = va_arg (args_copy, const char *); break; case 'd': // int number = va_arg (args_copy, int); break; case 'f': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); } int main () { // Check bool. _Bool success = false; // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. test_varargs ("s, d' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' || dynamic_array[ni.number - 1] != 543); ; return 0; } _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c99" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac if test "x$ac_cv_prog_cc_c99" != xno; then : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 else ac_cv_prog_cc_stdc=no fi fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 $as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } if ${ac_cv_prog_cc_stdc+:} false; then : $as_echo_n "(cached) " >&6 fi case $ac_cv_prog_cc_stdc in #( no) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; #( '') : { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 $as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; esac ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 $as_echo_n "checking for C/C++ restrict keyword... " >&6; } if ${ac_cv_c_restrict+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. for ac_kw in __restrict __restrict__ _Restrict restrict; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ typedef int * int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; } int main () { int s[1]; int * $ac_kw t = s; t[0] = 0; return foo(t) ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_restrict=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_restrict" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 $as_echo "$ac_cv_c_restrict" >&6; } case $ac_cv_c_restrict in restrict) ;; no) $as_echo "#define restrict /**/" >>confdefs.h ;; *) cat >>confdefs.h <<_ACEOF #define restrict $ac_cv_c_restrict _ACEOF ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if malloc debugging is wanted" >&5 $as_echo_n "checking if malloc debugging is wanted... " >&6; } # Check whether --with-dmalloc was given. if test "${with_dmalloc+set}" = set; then : withval=$with_dmalloc; if test "$withval" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define WITH_DMALLOC 1" >>confdefs.h LIBS="$LIBS -ldmalloc" LDFLAGS="$LDFLAGS -g" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # we need a fully expanded version of $libdir # without this we get something like # define VIPS_LIBDIR ${exec_prefix}/lib # argh test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # set $expanded_value to the fully-expanded value of the argument expand () { eval expanded_value=$1 if test x"$expanded_value" != x"$1"; then expand "$expanded_value" fi } expand $libdir VIPS_LIBDIR=$expanded_value # this gets pasted into version.h as a #define VIPS_EXEEXT=$EXEEXT # vips.c/im_guess_prefix.c need to know the exe suffix and (as a fallback) # the configure-time install prefix cat >>confdefs.h <<_ACEOF #define VIPS_PREFIX "$prefix" _ACEOF cat >>confdefs.h <<_ACEOF #define VIPS_LIBDIR "$VIPS_LIBDIR" _ACEOF # i18n # we need to name our .mo with major.minor so we can have multiple versions # installed in parallel on Debian expand vips$VIPS_MAJOR_VERSION.$VIPS_MINOR_VERSION GETTEXT_PACKAGE=$expanded_value cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF # the 'malkovich' one is there for testing only, remove for release #ALL_LINGUAS="en_GB de malkovich" ALL_LINGUAS="en_GB de" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in locale.h do : ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_H 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_val_LC_MESSAGES=yes else am_cv_val_LC_MESSAGES=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } if ${gt_cv_func_ngettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_ngettext_libc=yes else gt_cv_func_ngettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 $as_echo "$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } if ${gt_cv_func_dgettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_dgettext_libc=yes else gt_cv_func_dgettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 $as_echo "$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if ${ac_cv_lib_intl_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_bindtextdomain=yes else ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dgettext=yes else ac_cv_lib_intl_dgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } if test "x$ac_cv_lib_intl_dgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dcgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dcgettext=yes else ac_cv_lib_intl_dcgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do : ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" if test "x$ac_cv_func_dcgettext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi done MSGFMT_OPTS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 $as_echo_n "checking if msgfmt accepts -c... " >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : CATOBJEXT=.gmo DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-1" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 $as_echo_n "checking for catalogs to be installed... " >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 $as_echo "$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES # Checks for libraries. # build list of pkg-config packages we used here PACKAGES_USED="" # build list of extra libs we need here # the main one is jpeg: it does not have a .pc file, so when we make vips.pc # we need to put -ljpeg into libs ourselves EXTRA_LIBS_USED="" # Checks for header files. ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi for ac_header in errno.h math.h fcntl.h limits.h stdlib.h string.h sys/file.h sys/ioctl.h sys/param.h sys/time.h sys/mman.h sys/types.h sys/stat.h unistd.h io.h direct.h windows.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # uncomment to change which libs we build # AC_DISABLE_SHARED # AC_DISABLE_STATIC enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dllwrap", so it can be a program name with args. set dummy ${ac_tool_prefix}dllwrap; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLWRAP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLWRAP"; then ac_cv_prog_DLLWRAP="$DLLWRAP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLWRAP="${ac_tool_prefix}dllwrap" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLWRAP=$ac_cv_prog_DLLWRAP if test -n "$DLLWRAP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLWRAP" >&5 $as_echo "$DLLWRAP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLWRAP"; then ac_ct_DLLWRAP=$DLLWRAP # Extract the first word of "dllwrap", so it can be a program name with args. set dummy dllwrap; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLWRAP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLWRAP"; then ac_cv_prog_ac_ct_DLLWRAP="$ac_ct_DLLWRAP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLWRAP="dllwrap" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLWRAP=$ac_cv_prog_ac_ct_DLLWRAP if test -n "$ac_ct_DLLWRAP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLWRAP" >&5 $as_echo "$ac_ct_DLLWRAP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLWRAP" = x; then DLLWRAP="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLWRAP=$ac_ct_DLLWRAP fi else DLLWRAP="$ac_cv_prog_DLLWRAP" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args. set dummy ${ac_tool_prefix}ld; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LD"; then ac_cv_prog_LD="$LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LD="${ac_tool_prefix}ld" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LD=$ac_cv_prog_LD if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LD"; then ac_ct_LD=$LD # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LD"; then ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LD="ld" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LD=$ac_cv_prog_ac_ct_LD if test -n "$ac_ct_LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5 $as_echo "$ac_ct_LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LD" = x; then LD="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LD=$ac_ct_LD fi else LD="$ac_cv_prog_LD" fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" if test "x$ac_cv_type_mode_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define mode_t int _ACEOF fi ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # Checks for library functions. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 $as_echo_n "checking for working memcmp... " >&6; } if ${ac_cv_func_memcmp_working+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_memcmp_working=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Some versions of memcmp are not 8-bit clean. */ char c0 = '\100', c1 = '\200', c2 = '\201'; if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) return 1; /* The Next x86 OpenStep bug shows up only when comparing 16 bytes or more and with at least one buffer not starting on a 4-byte boundary. William Lewis provided this test program. */ { char foo[21]; char bar[21]; int i; for (i = 0; i < 4; i++) { char *a = foo + i; char *b = bar + i; strcpy (a, "--------01111111"); strcpy (b, "--------10000000"); if (memcmp (a, b, 16) >= 0) return 1; } return 0; } ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_memcmp_working=yes else ac_cv_func_memcmp_working=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 $as_echo "$ac_cv_func_memcmp_working" >&6; } test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in *" memcmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; esac for ac_header in $ac_header_list do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in getpagesize do : ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" if test "x$ac_cv_func_getpagesize" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETPAGESIZE 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 $as_echo_n "checking for working mmap... " >&6; } if ${ac_cv_func_mmap_fixed_mapped+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_mmap_fixed_mapped=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default /* malloc might have been renamed as rpl_malloc. */ #undef malloc /* Thanks to Mike Haertel and Jim Avera for this test. Here is a matrix of mmap possibilities: mmap private not fixed mmap private fixed at somewhere currently unmapped mmap private fixed at somewhere already mapped mmap shared not fixed mmap shared fixed at somewhere currently unmapped mmap shared fixed at somewhere already mapped For private mappings, we should verify that changes cannot be read() back from the file, nor mmap's back from the file at a different address. (There have been systems where private was not correctly implemented like the infamous i386 svr4.0, and systems where the VM page cache was not coherent with the file system buffer cache like early versions of FreeBSD and possibly contemporary NetBSD.) For shared mappings, we should conversely verify that changes get propagated back to all the places they're supposed to be. Grep wants private fixed already mapped. The main things grep needs to know about mmap are: * does it exist and is it safe to write into the mmap'd area * how to use it (BSD variants) */ #include #include #if !defined STDC_HEADERS && !defined HAVE_STDLIB_H char *malloc (); #endif /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ # ifdef HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE # else /* no EXEC_PAGESIZE */ # ifdef NBPG # define getpagesize() NBPG * CLSIZE # ifndef CLSIZE # define CLSIZE 1 # endif /* no CLSIZE */ # else /* no NBPG */ # ifdef NBPC # define getpagesize() NBPC # else /* no NBPC */ # ifdef PAGESIZE # define getpagesize() PAGESIZE # endif /* PAGESIZE */ # endif /* no NBPC */ # endif /* no NBPG */ # endif /* no EXEC_PAGESIZE */ # else /* no HAVE_SYS_PARAM_H */ # define getpagesize() 8192 /* punt totally */ # endif /* no HAVE_SYS_PARAM_H */ # endif /* no _SC_PAGESIZE */ #endif /* no HAVE_GETPAGESIZE */ int main () { char *data, *data2, *data3; const char *cdata2; int i, pagesize; int fd, fd2; pagesize = getpagesize (); /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) return 1; for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) return 2; if (write (fd, data, pagesize) != pagesize) return 3; close (fd); /* Next, check that the tail of a page is zero-filled. File must have non-zero length, otherwise we risk SIGBUS for entire page. */ fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); if (fd2 < 0) return 4; cdata2 = ""; if (write (fd2, cdata2, 1) != 1) return 5; data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); if (data2 == MAP_FAILED) return 6; for (i = 0; i < pagesize; ++i) if (*(data2 + i)) return 7; close (fd2); if (munmap (data2, pagesize)) return 8; /* Next, try to mmap the file at a fixed address which already has something else allocated at it. If we can, also make sure that we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) return 9; if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) return 10; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) return 11; /* Finally, make sure that changes to the mapped area do not percolate back to the file as seen by read(). (This is a bug on some variants of i386 svr4.0.) */ for (i = 0; i < pagesize; ++i) *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) return 12; if (read (fd, data3, pagesize) != pagesize) return 13; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) return 14; close (fd); return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_mmap_fixed_mapped=yes else ac_cv_func_mmap_fixed_mapped=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 $as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } if test $ac_cv_func_mmap_fixed_mapped = yes; then $as_echo "#define HAVE_MMAP 1" >>confdefs.h fi rm -f conftest.mmap conftest.txt for ac_func in vprintf do : ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" if test "x$ac_cv_func_vprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VPRINTF 1 _ACEOF ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes; then : $as_echo "#define HAVE_DOPRNT 1" >>confdefs.h fi fi done for ac_func in getcwd gettimeofday getwd memset munmap putenv realpath strcasecmp strchr strcspn strdup strerror strrchr strspn vsnprintf realpath mkstemp mktemp random rand sysconf atexit do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cbrt in -lm" >&5 $as_echo_n "checking for cbrt in -lm... " >&6; } if ${ac_cv_lib_m_cbrt+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char cbrt (); int main () { return cbrt (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_cbrt=yes else ac_cv_lib_m_cbrt=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cbrt" >&5 $as_echo "$ac_cv_lib_m_cbrt" >&6; } if test "x$ac_cv_lib_m_cbrt" = xyes; then : $as_echo "#define HAVE_CBRT 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hypot in -lm" >&5 $as_echo_n "checking for hypot in -lm... " >&6; } if ${ac_cv_lib_m_hypot+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char hypot (); int main () { return hypot (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_hypot=yes else ac_cv_lib_m_hypot=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_hypot" >&5 $as_echo "$ac_cv_lib_m_hypot" >&6; } if test "x$ac_cv_lib_m_hypot" = xyes; then : $as_echo "#define HAVE_HYPOT 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan2 in -lm" >&5 $as_echo_n "checking for atan2 in -lm... " >&6; } if ${ac_cv_lib_m_atan2+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char atan2 (); int main () { return atan2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_atan2=yes else ac_cv_lib_m_atan2=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_atan2" >&5 $as_echo "$ac_cv_lib_m_atan2" >&6; } if test "x$ac_cv_lib_m_atan2" = xyes; then : $as_echo "#define HAVE_ATAN2 1" >>confdefs.h fi # have to have these # need glib 2.6 for GOption pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for REQUIRED" >&5 $as_echo_n "checking for REQUIRED... " >&6; } if test -n "$REQUIRED_CFLAGS"; then pkg_cv_REQUIRED_CFLAGS="$REQUIRED_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_REQUIRED_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$REQUIRED_LIBS"; then pkg_cv_REQUIRED_LIBS="$REQUIRED_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_REQUIRED_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then REQUIRED_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0" 2>&1` else REQUIRED_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$REQUIRED_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0) were not met: $REQUIRED_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables REQUIRED_CFLAGS and REQUIRED_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables REQUIRED_CFLAGS and REQUIRED_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else REQUIRED_CFLAGS=$pkg_cv_REQUIRED_CFLAGS REQUIRED_LIBS=$pkg_cv_REQUIRED_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi PACKAGES_USED="$PACKAGES_USED glib-2.0 libxml-2.0 gmodule-2.0 gobject-2.0" # after 2.28 we have a monotonic timer pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONOTONIC" >&5 $as_echo_n "checking for MONOTONIC... " >&6; } if test -n "$MONOTONIC_CFLAGS"; then pkg_cv_MONOTONIC_CFLAGS="$MONOTONIC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.28\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.28") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MONOTONIC_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.28" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$MONOTONIC_LIBS"; then pkg_cv_MONOTONIC_LIBS="$MONOTONIC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.28\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.28") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MONOTONIC_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.28" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then MONOTONIC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.28" 2>&1` else MONOTONIC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.28" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MONOTONIC_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else MONOTONIC_CFLAGS=$pkg_cv_MONOTONIC_CFLAGS MONOTONIC_LIBS=$pkg_cv_MONOTONIC_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_MONOTONIC_TIME 1" >>confdefs.h fi # after 2.32 there are a new set of thread functions, annoyingly pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for THREADS" >&5 $as_echo_n "checking for THREADS... " >&6; } if test -n "$THREADS_CFLAGS"; then pkg_cv_THREADS_CFLAGS="$THREADS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.32\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.32") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_THREADS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.32" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$THREADS_LIBS"; then pkg_cv_THREADS_LIBS="$THREADS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.32\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.32") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_THREADS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.32" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then THREADS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.32" 2>&1` else THREADS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.32" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$THREADS_PKG_ERRORS" >&5 # the old threading system ... we need to link against gthread pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5 $as_echo_n "checking for GTHREAD... " >&6; } if test -n "$GTHREAD_CFLAGS"; then pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTHREAD_LIBS"; then pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gthread-2.0" 2>&1` else GTHREAD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gthread-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTHREAD_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gthread-2.0) were not met: $GTHREAD_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi PACKAGES_USED="$PACKAGES_USED gthread-2.0" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } # the old threading system ... we need to link against gthread pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5 $as_echo_n "checking for GTHREAD... " >&6; } if test -n "$GTHREAD_CFLAGS"; then pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTHREAD_LIBS"; then pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gthread-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gthread-2.0" 2>&1` else GTHREAD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gthread-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTHREAD_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gthread-2.0) were not met: $GTHREAD_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi PACKAGES_USED="$PACKAGES_USED gthread-2.0" else THREADS_CFLAGS=$pkg_cv_THREADS_CFLAGS THREADS_LIBS=$pkg_cv_THREADS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_MUTEX_INIT 1" >>confdefs.h $as_echo "#define HAVE_COND_INIT 1" >>confdefs.h $as_echo "#define HAVE_THREAD_NEW 1" >>confdefs.h $as_echo "#define HAVE_PRIVATE_INIT 1" >>confdefs.h $as_echo "#define HAVE_VALUE_GET_SCHAR 1" >>confdefs.h fi # with 2.36 and after the type system inits itself pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TYPE_INIT" >&5 $as_echo_n "checking for TYPE_INIT... " >&6; } if test -n "$TYPE_INIT_CFLAGS"; then pkg_cv_TYPE_INIT_CFLAGS="$TYPE_INIT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 < 2.36\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 < 2.36") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_TYPE_INIT_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 < 2.36" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$TYPE_INIT_LIBS"; then pkg_cv_TYPE_INIT_LIBS="$TYPE_INIT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 < 2.36\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 < 2.36") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_TYPE_INIT_LIBS=`$PKG_CONFIG --libs "glib-2.0 < 2.36" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then TYPE_INIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 < 2.36" 2>&1` else TYPE_INIT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 < 2.36" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$TYPE_INIT_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else TYPE_INIT_CFLAGS=$pkg_cv_TYPE_INIT_CFLAGS TYPE_INIT_LIBS=$pkg_cv_TYPE_INIT_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define NEED_TYPE_INIT 1" >>confdefs.h fi # check for gtk-doc gtk_doc_requires="gtk-doc >= 1.14" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gtk-doc" >&5 $as_echo_n "checking for gtk-doc... " >&6; } if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtk_doc_requires\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gtk_doc_requires") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then have_gtk_doc=yes else have_gtk_doc=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gtk_doc" >&5 $as_echo "$have_gtk_doc" >&6; } if test "$have_gtk_doc" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found." >&5 $as_echo "$as_me: WARNING: You will not be able to create source packages with 'make dist' because $gtk_doc_requires is not found." >&2;} fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_GTKDOC_CHECK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$GTKDOC_CHECK"; then ac_cv_prog_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_GTKDOC_CHECK="gtkdoc-check.test" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi GTKDOC_CHECK=$ac_cv_prog_GTKDOC_CHECK if test -n "$GTKDOC_CHECK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 $as_echo "$GTKDOC_CHECK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC_CHECK_PATH+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_CHECK_PATH in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_CHECK_PATH="$GTKDOC_CHECK_PATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_CHECK_PATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_CHECK_PATH=$ac_cv_path_GTKDOC_CHECK_PATH if test -n "$GTKDOC_CHECK_PATH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK_PATH" >&5 $as_echo "$GTKDOC_CHECK_PATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi for ac_prog in gtkdoc-rebase do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC_REBASE+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_REBASE in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE if test -n "$GTKDOC_REBASE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 $as_echo "$GTKDOC_REBASE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$GTKDOC_REBASE" && break done test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. set dummy gtkdoc-mkpdf; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC_MKPDF+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_MKPDF in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF if test -n "$GTKDOC_MKPDF"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 $as_echo "$GTKDOC_MKPDF" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then : withval=$with_html_dir; else with_html_dir='${datadir}/gtk-doc/html' fi HTML_DIR="$with_html_dir" # Check whether --enable-gtk-doc was given. if test "${enable_gtk_doc+set}" = set; then : enableval=$enable_gtk_doc; else enable_gtk_doc=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 $as_echo_n "checking whether to build gtk-doc documentation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 $as_echo "$enable_gtk_doc" >&6; } if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then as_fn_error $? " You must have $gtk_doc_requires installed to build documentation for $PACKAGE_NAME. Please install gtk-doc or disable building the documentation by adding '--disable-gtk-doc' to '$0'." "$LINENO" 5 fi if test "x$PACKAGE_NAME" != "xglib"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5 $as_echo_n "checking for GTKDOC_DEPS... " >&6; } if test -n "$GTKDOC_DEPS_CFLAGS"; then pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTKDOC_DEPS_LIBS"; then pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` else GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKDOC_DEPS_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi # Check whether --enable-gtk-doc-html was given. if test "${enable_gtk_doc_html+set}" = set; then : enableval=$enable_gtk_doc_html; else enable_gtk_doc_html=yes fi # Check whether --enable-gtk-doc-pdf was given. if test "${enable_gtk_doc_pdf+set}" = set; then : enableval=$enable_gtk_doc_pdf; else enable_gtk_doc_pdf=no fi if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi if test x$have_gtk_doc = xyes; then HAVE_GTK_DOC_TRUE= HAVE_GTK_DOC_FALSE='#' else HAVE_GTK_DOC_TRUE='#' HAVE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc = xyes; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc_html = xyes; then GTK_DOC_BUILD_HTML_TRUE= GTK_DOC_BUILD_HTML_FALSE='#' else GTK_DOC_BUILD_HTML_TRUE='#' GTK_DOC_BUILD_HTML_FALSE= fi if test x$enable_gtk_doc_pdf = xyes; then GTK_DOC_BUILD_PDF_TRUE= GTK_DOC_BUILD_PDF_FALSE='#' else GTK_DOC_BUILD_PDF_TRUE='#' GTK_DOC_BUILD_PDF_FALSE= fi if test -n "$LIBTOOL"; then GTK_DOC_USE_LIBTOOL_TRUE= GTK_DOC_USE_LIBTOOL_FALSE='#' else GTK_DOC_USE_LIBTOOL_TRUE='#' GTK_DOC_USE_LIBTOOL_FALSE= fi if test -n "$GTKDOC_REBASE"; then GTK_DOC_USE_REBASE_TRUE= GTK_DOC_USE_REBASE_FALSE='#' else GTK_DOC_USE_REBASE_TRUE='#' GTK_DOC_USE_REBASE_FALSE= fi # optional supporting libraries # Check whether --with-gsf was given. if test "${with_gsf+set}" = set; then : withval=$with_gsf; fi # libgsf-1 1.14.21 crashes, .27 is known-good, not sure about 22-26 if test x"$with_gsf" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GSF" >&5 $as_echo_n "checking for GSF... " >&6; } if test -n "$GSF_CFLAGS"; then pkg_cv_GSF_CFLAGS="$GSF_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libgsf-1 >= 1.14.27\""; } >&5 ($PKG_CONFIG --exists --print-errors "libgsf-1 >= 1.14.27") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GSF_CFLAGS=`$PKG_CONFIG --cflags "libgsf-1 >= 1.14.27" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GSF_LIBS"; then pkg_cv_GSF_LIBS="$GSF_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libgsf-1 >= 1.14.27\""; } >&5 ($PKG_CONFIG --exists --print-errors "libgsf-1 >= 1.14.27") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GSF_LIBS=`$PKG_CONFIG --libs "libgsf-1 >= 1.14.27" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GSF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libgsf-1 >= 1.14.27" 2>&1` else GSF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libgsf-1 >= 1.14.27" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GSF_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libgsf-1 not found; disabling dzsave support" >&5 $as_echo "$as_me: WARNING: libgsf-1 not found; disabling dzsave support" >&2;} with_gsf=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libgsf-1 not found; disabling dzsave support" >&5 $as_echo "$as_me: WARNING: libgsf-1 not found; disabling dzsave support" >&2;} with_gsf=no else GSF_CFLAGS=$pkg_cv_GSF_CFLAGS GSF_LIBS=$pkg_cv_GSF_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_GSF 1" >>confdefs.h with_gsf=yes PACKAGES_USED="$PACKAGES_USED libgsf-1" fi fi # Check whether --with-fftw was given. if test "${with_fftw+set}" = set; then : withval=$with_fftw; fi if test x"$with_fftw" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFTW" >&5 $as_echo_n "checking for FFTW... " >&6; } if test -n "$FFTW_CFLAGS"; then pkg_cv_FFTW_CFLAGS="$FFTW_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5 ($PKG_CONFIG --exists --print-errors "fftw3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFTW_CFLAGS=`$PKG_CONFIG --cflags "fftw3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$FFTW_LIBS"; then pkg_cv_FFTW_LIBS="$FFTW_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fftw3\""; } >&5 ($PKG_CONFIG --exists --print-errors "fftw3") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_FFTW_LIBS=`$PKG_CONFIG --libs "fftw3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then FFTW_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fftw3" 2>&1` else FFTW_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fftw3" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$FFTW_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: fftw not found; disabling fftw support" >&5 $as_echo "$as_me: WARNING: fftw not found; disabling fftw support" >&2;} with_fftw=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: fftw not found; disabling fftw support" >&5 $as_echo "$as_me: WARNING: fftw not found; disabling fftw support" >&2;} with_fftw=no else FFTW_CFLAGS=$pkg_cv_FFTW_CFLAGS FFTW_LIBS=$pkg_cv_FFTW_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_FFTW 1" >>confdefs.h with_fftw=yes PACKAGES_USED="$PACKAGES_USED fftw3" fi fi # ImageMagick ... detect attribute iteration too # Optionally look for GraphicsMagick instead ... use # --with-magickpackage=GraphicsMagick # Check whether --with-magick was given. if test "${with_magick+set}" = set; then : withval=$with_magick; fi # Check whether --with-magickpackage was given. if test "${with_magickpackage+set}" = set; then : withval=$with_magickpackage; fi # recent versions of ImageMagick have split parts of the library off to # MagickWand, so by default we test for that first if test x"$with_magickpackage" = "x"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAGICK_WAND" >&5 $as_echo_n "checking for MAGICK_WAND... " >&6; } if test -n "$MAGICK_WAND_CFLAGS"; then pkg_cv_MAGICK_WAND_CFLAGS="$MAGICK_WAND_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"MagickWand\""; } >&5 ($PKG_CONFIG --exists --print-errors "MagickWand") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MAGICK_WAND_CFLAGS=`$PKG_CONFIG --cflags "MagickWand" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$MAGICK_WAND_LIBS"; then pkg_cv_MAGICK_WAND_LIBS="$MAGICK_WAND_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"MagickWand\""; } >&5 ($PKG_CONFIG --exists --print-errors "MagickWand") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MAGICK_WAND_LIBS=`$PKG_CONFIG --libs "MagickWand" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then MAGICK_WAND_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "MagickWand" 2>&1` else MAGICK_WAND_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "MagickWand" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MAGICK_WAND_PKG_ERRORS" >&5 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IMAGE_MAGICK" >&5 $as_echo_n "checking for IMAGE_MAGICK... " >&6; } if test -n "$IMAGE_MAGICK_CFLAGS"; then pkg_cv_IMAGE_MAGICK_CFLAGS="$IMAGE_MAGICK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick\""; } >&5 ($PKG_CONFIG --exists --print-errors "ImageMagick") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_IMAGE_MAGICK_CFLAGS=`$PKG_CONFIG --cflags "ImageMagick" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$IMAGE_MAGICK_LIBS"; then pkg_cv_IMAGE_MAGICK_LIBS="$IMAGE_MAGICK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick\""; } >&5 ($PKG_CONFIG --exists --print-errors "ImageMagick") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_IMAGE_MAGICK_LIBS=`$PKG_CONFIG --libs "ImageMagick" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then IMAGE_MAGICK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ImageMagick" 2>&1` else IMAGE_MAGICK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ImageMagick" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$IMAGE_MAGICK_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&5 $as_echo "$as_me: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&2;} with_magick=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&5 $as_echo "$as_me: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&2;} with_magick=no else IMAGE_MAGICK_CFLAGS=$pkg_cv_IMAGE_MAGICK_CFLAGS IMAGE_MAGICK_LIBS=$pkg_cv_IMAGE_MAGICK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } with_magickpackage=ImageMagick fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IMAGE_MAGICK" >&5 $as_echo_n "checking for IMAGE_MAGICK... " >&6; } if test -n "$IMAGE_MAGICK_CFLAGS"; then pkg_cv_IMAGE_MAGICK_CFLAGS="$IMAGE_MAGICK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick\""; } >&5 ($PKG_CONFIG --exists --print-errors "ImageMagick") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_IMAGE_MAGICK_CFLAGS=`$PKG_CONFIG --cflags "ImageMagick" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$IMAGE_MAGICK_LIBS"; then pkg_cv_IMAGE_MAGICK_LIBS="$IMAGE_MAGICK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ImageMagick\""; } >&5 ($PKG_CONFIG --exists --print-errors "ImageMagick") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_IMAGE_MAGICK_LIBS=`$PKG_CONFIG --libs "ImageMagick" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then IMAGE_MAGICK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "ImageMagick" 2>&1` else IMAGE_MAGICK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "ImageMagick" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$IMAGE_MAGICK_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&5 $as_echo "$as_me: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&2;} with_magick=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&5 $as_echo "$as_me: WARNING: neither MagickWand nor ImageMagick found; disabling Magick support" >&2;} with_magick=no else IMAGE_MAGICK_CFLAGS=$pkg_cv_IMAGE_MAGICK_CFLAGS IMAGE_MAGICK_LIBS=$pkg_cv_IMAGE_MAGICK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } with_magickpackage=ImageMagick fi else MAGICK_WAND_CFLAGS=$pkg_cv_MAGICK_WAND_CFLAGS MAGICK_WAND_LIBS=$pkg_cv_MAGICK_WAND_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } with_magickpackage=MagickWand fi fi if test x"$with_magick" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAGICK" >&5 $as_echo_n "checking for MAGICK... " >&6; } if test -n "$MAGICK_CFLAGS"; then pkg_cv_MAGICK_CFLAGS="$MAGICK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$with_magickpackage\""; } >&5 ($PKG_CONFIG --exists --print-errors "$with_magickpackage") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MAGICK_CFLAGS=`$PKG_CONFIG --cflags "$with_magickpackage" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$MAGICK_LIBS"; then pkg_cv_MAGICK_LIBS="$MAGICK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$with_magickpackage\""; } >&5 ($PKG_CONFIG --exists --print-errors "$with_magickpackage") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MAGICK_LIBS=`$PKG_CONFIG --libs "$with_magickpackage" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then MAGICK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$with_magickpackage" 2>&1` else MAGICK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$with_magickpackage" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MAGICK_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $with_magickpackage not found; disabling Magick support" >&5 $as_echo "$as_me: WARNING: $with_magickpackage not found; disabling Magick support" >&2;} with_magick=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $with_magickpackage not found; disabling Magick support" >&5 $as_echo "$as_me: WARNING: $with_magickpackage not found; disabling Magick support" >&2;} with_magick=no else MAGICK_CFLAGS=$pkg_cv_MAGICK_CFLAGS MAGICK_LIBS=$pkg_cv_MAGICK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_MAGICK 1" >>confdefs.h with_magick=yes PACKAGES_USED="$PACKAGES_USED $with_magickpackage" fi fi if test x"$with_magick" != "xno"; then # we SetImageOption to disable some DICOM read processing, but that's only # in more recent imagemagicks and not in graphicsmagick save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" for ac_func in SetImageOption do : ac_fn_c_check_func "$LINENO" "SetImageOption" "ac_cv_func_SetImageOption" if test "x$ac_cv_func_SetImageOption" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SETIMAGEOPTION 1 _ACEOF $as_echo "#define HAVE_SETIMAGEOPTION 1" >>confdefs.h fi done LIBS=$save_LIBS fi if test x"$with_magick" != "xno"; then # newer ImageMagicks use MagickCoreGenesis instead of InitializeMagick argh save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" for ac_func in MagickCoreGenesis do : ac_fn_c_check_func "$LINENO" "MagickCoreGenesis" "ac_cv_func_MagickCoreGenesis" if test "x$ac_cv_func_MagickCoreGenesis" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MAGICKCOREGENESIS 1 _ACEOF $as_echo "#define HAVE_MAGICKCOREGENESIS 1" >>confdefs.h fi done LIBS=$save_LIBS fi if test x"$with_magick" != "xno"; then # newer ImageMagicks use ResetImagePropertyIterator instead of # ResetImageAttributeIterator argh save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" for ac_func in ResetImagePropertyIterator do : ac_fn_c_check_func "$LINENO" "ResetImagePropertyIterator" "ac_cv_func_ResetImagePropertyIterator" if test "x$ac_cv_func_ResetImagePropertyIterator" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_RESETIMAGEPROPERTYITERATOR 1 _ACEOF $as_echo "#define HAVE_RESETIMAGEPROPERTYITERATOR 1" >>confdefs.h fi done LIBS=$save_LIBS fi if test x"$with_magick" != "xno"; then # so ... do we have ResetImageAttributeIterator()? GM does not save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" for ac_func in ResetImageAttributeIterator do : ac_fn_c_check_func "$LINENO" "ResetImageAttributeIterator" "ac_cv_func_ResetImageAttributeIterator" if test "x$ac_cv_func_ResetImageAttributeIterator" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_RESETIMAGEATTRIBUTEITERATOR 1 _ACEOF $as_echo "#define HAVE_RESETIMAGEATTRIBUTEITERATOR 1" >>confdefs.h fi done LIBS=$save_LIBS fi if test x"$with_magick" != "xno"; then # more recent magicks have GetVirtualPixels rather than GetImagePixels save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" for ac_func in GetVirtualPixels do : ac_fn_c_check_func "$LINENO" "GetVirtualPixels" "ac_cv_func_GetVirtualPixels" if test "x$ac_cv_func_GetVirtualPixels" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETVIRTUALPIXELS 1 _ACEOF $as_echo "#define HAVE_GETVIRTUALPIXELS 1" >>confdefs.h fi done LIBS=$save_LIBS fi # orc # Check whether --with-orc was given. if test "${with_orc+set}" = set; then : withval=$with_orc; fi if test x"$with_orc" != "xno"; then # we use loadpw etc. pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ORC" >&5 $as_echo_n "checking for ORC... " >&6; } if test -n "$ORC_CFLAGS"; then pkg_cv_ORC_CFLAGS="$ORC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"orc-0.4 >= 0.4.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "orc-0.4 >= 0.4.11") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ORC_CFLAGS=`$PKG_CONFIG --cflags "orc-0.4 >= 0.4.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ORC_LIBS"; then pkg_cv_ORC_LIBS="$ORC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"orc-0.4 >= 0.4.11\""; } >&5 ($PKG_CONFIG --exists --print-errors "orc-0.4 >= 0.4.11") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ORC_LIBS=`$PKG_CONFIG --libs "orc-0.4 >= 0.4.11" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then ORC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "orc-0.4 >= 0.4.11" 2>&1` else ORC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "orc-0.4 >= 0.4.11" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ORC_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: orc-0.4.11 or later not found; disabling orc support" >&5 $as_echo "$as_me: WARNING: orc-0.4.11 or later not found; disabling orc support" >&2;} with_orc=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: orc-0.4.11 or later not found; disabling orc support" >&5 $as_echo "$as_me: WARNING: orc-0.4.11 or later not found; disabling orc support" >&2;} with_orc=no else ORC_CFLAGS=$pkg_cv_ORC_CFLAGS ORC_LIBS=$pkg_cv_ORC_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_ORC 1" >>confdefs.h with_orc=yes PACKAGES_USED="$PACKAGES_USED orc-0.4" save_LIBS=$LIBS LIBS="$LIBS $ORC_LIBS" for ac_func in orc_program_get_error do : ac_fn_c_check_func "$LINENO" "orc_program_get_error" "ac_cv_func_orc_program_get_error" if test "x$ac_cv_func_orc_program_get_error" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ORC_PROGRAM_GET_ERROR 1 _ACEOF $as_echo "#define HAVE_ORC_PROGRAM_GET_ERROR 1" >>confdefs.h fi done LIBS=$save_LIBS fi fi # lcms ... look for lcms2 first, it has better threading support # Check whether --with-lcms was given. if test "${with_lcms+set}" = set; then : withval=$with_lcms; fi if test x"$with_lcms" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LCMS" >&5 $as_echo_n "checking for LCMS... " >&6; } if test -n "$LCMS_CFLAGS"; then pkg_cv_LCMS_CFLAGS="$LCMS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5 ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LCMS_CFLAGS=`$PKG_CONFIG --cflags "lcms2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LCMS_LIBS"; then pkg_cv_LCMS_LIBS="$LCMS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5 ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LCMS_LIBS=`$PKG_CONFIG --libs "lcms2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LCMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms2" 2>&1` else LCMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LCMS_PKG_ERRORS" >&5 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LCMS" >&5 $as_echo_n "checking for LCMS... " >&6; } if test -n "$LCMS_CFLAGS"; then pkg_cv_LCMS_CFLAGS="$LCMS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms\""; } >&5 ($PKG_CONFIG --exists --print-errors "lcms") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LCMS_CFLAGS=`$PKG_CONFIG --cflags "lcms" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LCMS_LIBS"; then pkg_cv_LCMS_LIBS="$LCMS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms\""; } >&5 ($PKG_CONFIG --exists --print-errors "lcms") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LCMS_LIBS=`$PKG_CONFIG --libs "lcms" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LCMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms" 2>&1` else LCMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LCMS_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: lcms2/lcms not found; disabling lcms support" >&5 $as_echo "$as_me: WARNING: lcms2/lcms not found; disabling lcms support" >&2;} with_lcms=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: lcms2/lcms not found; disabling lcms support" >&5 $as_echo "$as_me: WARNING: lcms2/lcms not found; disabling lcms support" >&2;} with_lcms=no else LCMS_CFLAGS=$pkg_cv_LCMS_CFLAGS LCMS_LIBS=$pkg_cv_LCMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_LCMS 1" >>confdefs.h with_lcms="yes (lcms1)" PACKAGES_USED="$PACKAGES_USED lcms" fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LCMS" >&5 $as_echo_n "checking for LCMS... " >&6; } if test -n "$LCMS_CFLAGS"; then pkg_cv_LCMS_CFLAGS="$LCMS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms\""; } >&5 ($PKG_CONFIG --exists --print-errors "lcms") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LCMS_CFLAGS=`$PKG_CONFIG --cflags "lcms" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LCMS_LIBS"; then pkg_cv_LCMS_LIBS="$LCMS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms\""; } >&5 ($PKG_CONFIG --exists --print-errors "lcms") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LCMS_LIBS=`$PKG_CONFIG --libs "lcms" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LCMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "lcms" 2>&1` else LCMS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "lcms" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LCMS_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: lcms2/lcms not found; disabling lcms support" >&5 $as_echo "$as_me: WARNING: lcms2/lcms not found; disabling lcms support" >&2;} with_lcms=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: lcms2/lcms not found; disabling lcms support" >&5 $as_echo "$as_me: WARNING: lcms2/lcms not found; disabling lcms support" >&2;} with_lcms=no else LCMS_CFLAGS=$pkg_cv_LCMS_CFLAGS LCMS_LIBS=$pkg_cv_LCMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_LCMS 1" >>confdefs.h with_lcms="yes (lcms1)" PACKAGES_USED="$PACKAGES_USED lcms" fi else LCMS_CFLAGS=$pkg_cv_LCMS_CFLAGS LCMS_LIBS=$pkg_cv_LCMS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_LCMS2 1" >>confdefs.h with_lcms="yes (lcms2)" PACKAGES_USED="$PACKAGES_USED lcms2" fi fi # OpenEXR # Check whether --with-OpenEXR was given. if test "${with_OpenEXR+set}" = set; then : withval=$with_OpenEXR; fi # require 1.2.2 since 1.2.1 has a broken ImfCloseTiledInputFile() if test x"$with_OpenEXR" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENEXR" >&5 $as_echo_n "checking for OPENEXR... " >&6; } if test -n "$OPENEXR_CFLAGS"; then pkg_cv_OPENEXR_CFLAGS="$OPENEXR_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"OpenEXR >= 1.2.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "OpenEXR >= 1.2.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENEXR_CFLAGS=`$PKG_CONFIG --cflags "OpenEXR >= 1.2.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$OPENEXR_LIBS"; then pkg_cv_OPENEXR_LIBS="$OPENEXR_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"OpenEXR >= 1.2.2\""; } >&5 ($PKG_CONFIG --exists --print-errors "OpenEXR >= 1.2.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENEXR_LIBS=`$PKG_CONFIG --libs "OpenEXR >= 1.2.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then OPENEXR_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "OpenEXR >= 1.2.2" 2>&1` else OPENEXR_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "OpenEXR >= 1.2.2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$OPENEXR_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenEXR not found; disabling OpenEXR support" >&5 $as_echo "$as_me: WARNING: OpenEXR not found; disabling OpenEXR support" >&2;} with_OpenEXR=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenEXR not found; disabling OpenEXR support" >&5 $as_echo "$as_me: WARNING: OpenEXR not found; disabling OpenEXR support" >&2;} with_OpenEXR=no else OPENEXR_CFLAGS=$pkg_cv_OPENEXR_CFLAGS OPENEXR_LIBS=$pkg_cv_OPENEXR_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_OPENEXR 1" >>confdefs.h with_OpenEXR=yes PACKAGES_USED="$PACKAGES_USED OpenEXR" fi fi # OpenSlide # Check whether --with-openslide was given. if test "${with_openslide+set}" = set; then : withval=$with_openslide; fi if test x"$with_openslide" != x"no"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSLIDE" >&5 $as_echo_n "checking for OPENSLIDE... " >&6; } if test -n "$OPENSLIDE_CFLAGS"; then pkg_cv_OPENSLIDE_CFLAGS="$OPENSLIDE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openslide >= 3.4.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "openslide >= 3.4.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSLIDE_CFLAGS=`$PKG_CONFIG --cflags "openslide >= 3.4.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$OPENSLIDE_LIBS"; then pkg_cv_OPENSLIDE_LIBS="$OPENSLIDE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openslide >= 3.4.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "openslide >= 3.4.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSLIDE_LIBS=`$PKG_CONFIG --libs "openslide >= 3.4.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then OPENSLIDE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openslide >= 3.4.0" 2>&1` else OPENSLIDE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openslide >= 3.4.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$OPENSLIDE_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: OpenSlide >= 3.4.0 not found; checking for >= 3.3.0" >&5 $as_echo "$as_me: OpenSlide >= 3.4.0 not found; checking for >= 3.3.0" >&6;} pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSLIDE" >&5 $as_echo_n "checking for OPENSLIDE... " >&6; } if test -n "$OPENSLIDE_CFLAGS"; then pkg_cv_OPENSLIDE_CFLAGS="$OPENSLIDE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openslide >= 3.3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "openslide >= 3.3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSLIDE_CFLAGS=`$PKG_CONFIG --cflags "openslide >= 3.3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$OPENSLIDE_LIBS"; then pkg_cv_OPENSLIDE_LIBS="$OPENSLIDE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openslide >= 3.3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "openslide >= 3.3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSLIDE_LIBS=`$PKG_CONFIG --libs "openslide >= 3.3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then OPENSLIDE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openslide >= 3.3.0" 2>&1` else OPENSLIDE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openslide >= 3.3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$OPENSLIDE_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenSlide >= 3.3.0 not found; disabling virtual slide support" >&5 $as_echo "$as_me: WARNING: OpenSlide >= 3.3.0 not found; disabling virtual slide support" >&2;} with_openslide=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenSlide >= 3.3.0 not found; disabling virtual slide support" >&5 $as_echo "$as_me: WARNING: OpenSlide >= 3.3.0 not found; disabling virtual slide support" >&2;} with_openslide=no else OPENSLIDE_CFLAGS=$pkg_cv_OPENSLIDE_CFLAGS OPENSLIDE_LIBS=$pkg_cv_OPENSLIDE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_OPENSLIDE 1" >>confdefs.h with_openslide=yes PACKAGES_USED="$PACKAGES_USED openslide" fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: OpenSlide >= 3.4.0 not found; checking for >= 3.3.0" >&5 $as_echo "$as_me: OpenSlide >= 3.4.0 not found; checking for >= 3.3.0" >&6;} pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSLIDE" >&5 $as_echo_n "checking for OPENSLIDE... " >&6; } if test -n "$OPENSLIDE_CFLAGS"; then pkg_cv_OPENSLIDE_CFLAGS="$OPENSLIDE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openslide >= 3.3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "openslide >= 3.3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSLIDE_CFLAGS=`$PKG_CONFIG --cflags "openslide >= 3.3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$OPENSLIDE_LIBS"; then pkg_cv_OPENSLIDE_LIBS="$OPENSLIDE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openslide >= 3.3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "openslide >= 3.3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OPENSLIDE_LIBS=`$PKG_CONFIG --libs "openslide >= 3.3.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then OPENSLIDE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openslide >= 3.3.0" 2>&1` else OPENSLIDE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openslide >= 3.3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$OPENSLIDE_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenSlide >= 3.3.0 not found; disabling virtual slide support" >&5 $as_echo "$as_me: WARNING: OpenSlide >= 3.3.0 not found; disabling virtual slide support" >&2;} with_openslide=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenSlide >= 3.3.0 not found; disabling virtual slide support" >&5 $as_echo "$as_me: WARNING: OpenSlide >= 3.3.0 not found; disabling virtual slide support" >&2;} with_openslide=no else OPENSLIDE_CFLAGS=$pkg_cv_OPENSLIDE_CFLAGS OPENSLIDE_LIBS=$pkg_cv_OPENSLIDE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_OPENSLIDE 1" >>confdefs.h with_openslide=yes PACKAGES_USED="$PACKAGES_USED openslide" fi else OPENSLIDE_CFLAGS=$pkg_cv_OPENSLIDE_CFLAGS OPENSLIDE_LIBS=$pkg_cv_OPENSLIDE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_OPENSLIDE_3_4 1" >>confdefs.h $as_echo "#define HAVE_OPENSLIDE 1" >>confdefs.h with_openslide=yes PACKAGES_USED="$PACKAGES_USED openslide" fi fi # matio # Check whether --with-matio was given. if test "${with_matio+set}" = set; then : withval=$with_matio; fi if test x"$with_matio" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MATIO" >&5 $as_echo_n "checking for MATIO... " >&6; } if test -n "$MATIO_CFLAGS"; then pkg_cv_MATIO_CFLAGS="$MATIO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"matio\""; } >&5 ($PKG_CONFIG --exists --print-errors "matio") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MATIO_CFLAGS=`$PKG_CONFIG --cflags "matio" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$MATIO_LIBS"; then pkg_cv_MATIO_LIBS="$MATIO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"matio\""; } >&5 ($PKG_CONFIG --exists --print-errors "matio") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_MATIO_LIBS=`$PKG_CONFIG --libs "matio" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then MATIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "matio" 2>&1` else MATIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "matio" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MATIO_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: matio not found; disabling matio support" >&5 $as_echo "$as_me: WARNING: matio not found; disabling matio support" >&2;} with_matio=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: matio not found; disabling matio support" >&5 $as_echo "$as_me: WARNING: matio not found; disabling matio support" >&2;} with_matio=no else MATIO_CFLAGS=$pkg_cv_MATIO_CFLAGS MATIO_LIBS=$pkg_cv_MATIO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_MATIO 1" >>confdefs.h with_matio=yes PACKAGES_USED="$PACKAGES_USED matio" fi fi # cfitsio # Check whether --with-cfitsio was given. if test "${with_cfitsio+set}" = set; then : withval=$with_cfitsio; fi if test x"$with_cfitsio" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFITSIO" >&5 $as_echo_n "checking for CFITSIO... " >&6; } if test -n "$CFITSIO_CFLAGS"; then pkg_cv_CFITSIO_CFLAGS="$CFITSIO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cfitsio\""; } >&5 ($PKG_CONFIG --exists --print-errors "cfitsio") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CFITSIO_CFLAGS=`$PKG_CONFIG --cflags "cfitsio" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$CFITSIO_LIBS"; then pkg_cv_CFITSIO_LIBS="$CFITSIO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cfitsio\""; } >&5 ($PKG_CONFIG --exists --print-errors "cfitsio") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CFITSIO_LIBS=`$PKG_CONFIG --libs "cfitsio" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then CFITSIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cfitsio" 2>&1` else CFITSIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cfitsio" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$CFITSIO_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cfitsio not found; disabling cfitsio support" >&5 $as_echo "$as_me: WARNING: cfitsio not found; disabling cfitsio support" >&2;} with_cfitsio=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cfitsio not found; disabling cfitsio support" >&5 $as_echo "$as_me: WARNING: cfitsio not found; disabling cfitsio support" >&2;} with_cfitsio=no else CFITSIO_CFLAGS=$pkg_cv_CFITSIO_CFLAGS CFITSIO_LIBS=$pkg_cv_CFITSIO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_CFITSIO 1" >>confdefs.h with_cfitsio=yes PACKAGES_USED="$PACKAGES_USED cfitsio" fi fi # libwebp # Check whether --with-libwebp was given. if test "${with_libwebp+set}" = set; then : withval=$with_libwebp; fi if test x"$with_libwebp" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBWEBP" >&5 $as_echo_n "checking for LIBWEBP... " >&6; } if test -n "$LIBWEBP_CFLAGS"; then pkg_cv_LIBWEBP_CFLAGS="$LIBWEBP_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebp\""; } >&5 ($PKG_CONFIG --exists --print-errors "libwebp") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBWEBP_CFLAGS=`$PKG_CONFIG --cflags "libwebp" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBWEBP_LIBS"; then pkg_cv_LIBWEBP_LIBS="$LIBWEBP_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebp\""; } >&5 ($PKG_CONFIG --exists --print-errors "libwebp") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBWEBP_LIBS=`$PKG_CONFIG --libs "libwebp" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBWEBP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libwebp" 2>&1` else LIBWEBP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libwebp" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBWEBP_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libwebp not found; disabling libwebp support" >&5 $as_echo "$as_me: WARNING: libwebp not found; disabling libwebp support" >&2;} with_libwebp=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libwebp not found; disabling libwebp support" >&5 $as_echo "$as_me: WARNING: libwebp not found; disabling libwebp support" >&2;} with_libwebp=no else LIBWEBP_CFLAGS=$pkg_cv_LIBWEBP_CFLAGS LIBWEBP_LIBS=$pkg_cv_LIBWEBP_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_LIBWEBP 1" >>confdefs.h with_libwebp=yes PACKAGES_USED="$PACKAGES_USED libwebp" fi fi # pangoft2 # Check whether --with-pangoft2 was given. if test "${with_pangoft2+set}" = set; then : withval=$with_pangoft2; fi if test x"$with_pangoft2" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANGOFT2" >&5 $as_echo_n "checking for PANGOFT2... " >&6; } if test -n "$PANGOFT2_CFLAGS"; then pkg_cv_PANGOFT2_CFLAGS="$PANGOFT2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangoft2\""; } >&5 ($PKG_CONFIG --exists --print-errors "pangoft2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PANGOFT2_CFLAGS=`$PKG_CONFIG --cflags "pangoft2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PANGOFT2_LIBS"; then pkg_cv_PANGOFT2_LIBS="$PANGOFT2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pangoft2\""; } >&5 ($PKG_CONFIG --exists --print-errors "pangoft2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PANGOFT2_LIBS=`$PKG_CONFIG --libs "pangoft2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PANGOFT2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pangoft2" 2>&1` else PANGOFT2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pangoft2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PANGOFT2_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pangoft2 not found; disabling pangoft2 support" >&5 $as_echo "$as_me: WARNING: pangoft2 not found; disabling pangoft2 support" >&2;} with_pangoft2=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pangoft2 not found; disabling pangoft2 support" >&5 $as_echo "$as_me: WARNING: pangoft2 not found; disabling pangoft2 support" >&2;} with_pangoft2=no else PANGOFT2_CFLAGS=$pkg_cv_PANGOFT2_CFLAGS PANGOFT2_LIBS=$pkg_cv_PANGOFT2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_PANGOFT2 1" >>confdefs.h with_pangoft2=yes PACKAGES_USED="$PACKAGES_USED pangoft2" fi fi # install vips8 python # Check whether --enable-pyvips8 was given. if test "${enable_pyvips8+set}" = set; then : enableval=$enable_pyvips8; enable_pyvips8=$enableval else enable_pyvips8="auto" fi if test "x$enable_pyvips8" = "xauto"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pygobject-3.0 >= 3.12.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "pygobject-3.0 >= 3.12.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then enable_pyvips8=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pygobject-3.0 not found; disabling vips8 python support" >&5 $as_echo "$as_me: WARNING: pygobject-3.0 not found; disabling vips8 python support" >&2;} enable_pyvips8=no fi fi if test x"$enable_pyvips8" = x"yes"; then if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.7" >&5 $as_echo_n "checking whether $PYTHON version is >= 2.7... " >&6; } prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Python interpreter is too old" "$LINENO" 5 fi am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.7" >&5 $as_echo_n "checking for a Python interpreter with version >= 2.7... " >&6; } if ${am_cv_pathless_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do test "$am_cv_pathless_PYTHON" = none && break prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5 $as_echo "$am_cv_pathless_PYTHON" >&6; } # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. set dummy $am_cv_pathless_PYTHON; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi am_display_PYTHON=$am_cv_pathless_PYTHON fi if test "$PYTHON" = :; then enable_pyvips8=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python not found; disabling vips8 Python binding" >&5 $as_echo "$as_me: WARNING: Python not found; disabling vips8 Python binding" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 $as_echo_n "checking for $am_display_PYTHON version... " >&6; } if ${am_cv_python_version+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 $as_echo "$am_cv_python_version" >&6; } PYTHON_VERSION=$am_cv_python_version PYTHON_PREFIX='${prefix}' PYTHON_EXEC_PREFIX='${exec_prefix}' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 $as_echo_n "checking for $am_display_PYTHON platform... " >&6; } if ${am_cv_python_platform+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 $as_echo "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform # Just factor out some code duplication. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[:3] == '2.7': can_use_sysconfig = 0 except ImportError: pass" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } if ${am_cv_python_pythondir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 $as_echo "$am_cv_python_pythondir" >&6; } pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } if ${am_cv_python_pyexecdir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 $as_echo "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi fi if test x"$enable_pyvips8" = x"yes"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYGOBJECT" >&5 $as_echo_n "checking for PYGOBJECT... " >&6; } if test -n "$PYGOBJECT_CFLAGS"; then pkg_cv_PYGOBJECT_CFLAGS="$PYGOBJECT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pygobject-3.0 >= 3.12.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "pygobject-3.0 >= 3.12.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PYGOBJECT_CFLAGS=`$PKG_CONFIG --cflags "pygobject-3.0 >= 3.12.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PYGOBJECT_LIBS"; then pkg_cv_PYGOBJECT_LIBS="$PYGOBJECT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pygobject-3.0 >= 3.12.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "pygobject-3.0 >= 3.12.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PYGOBJECT_LIBS=`$PKG_CONFIG --libs "pygobject-3.0 >= 3.12.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PYGOBJECT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pygobject-3.0 >= 3.12.0" 2>&1` else PYGOBJECT_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pygobject-3.0 >= 3.12.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PYGOBJECT_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (pygobject-3.0 >= 3.12.0) were not met: $PYGOBJECT_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables PYGOBJECT_CFLAGS and PYGOBJECT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables PYGOBJECT_CFLAGS and PYGOBJECT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else PYGOBJECT_CFLAGS=$pkg_cv_PYGOBJECT_CFLAGS PYGOBJECT_LIBS=$pkg_cv_PYGOBJECT_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pyoverridesdir="\$(pyexecdir)/gi/overrides" fi if test x"$enable_pyvips8" = x"yes"; then ENABLE_PYVIPS8_TRUE= ENABLE_PYVIPS8_FALSE='#' else ENABLE_PYVIPS8_TRUE='#' ENABLE_PYVIPS8_FALSE= fi # hmm, these don't have .pc files on ubuntu 5.10, how odd { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then : withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R7/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R7 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R7/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R7 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.i conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. $as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 $as_echo_n "checking whether -R must be followed by a space... " >&6; } ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ac_xsave_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 $as_echo "neither works" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_c_werror_flag=$ac_xsave_c_werror_flag LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_dnet_ntoa=yes else ac_cv_lib_dnet_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_stub_dnet_ntoa=yes else ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" if test "x$ac_cv_func_gethostbyname" = xyes; then : fi if test $ac_cv_func_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if ${ac_cv_lib_nsl_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_nsl_gethostbyname=yes else ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } if ${ac_cv_lib_bsd_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_bsd_gethostbyname=yes else ac_cv_lib_bsd_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" if test "x$ac_cv_func_connect" = xyes; then : fi if test $ac_cv_func_connect = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 $as_echo_n "checking for connect in -lsocket... " >&6; } if ${ac_cv_lib_socket_connect+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_connect=yes else ac_cv_lib_socket_connect=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 $as_echo "$ac_cv_lib_socket_connect" >&6; } if test "x$ac_cv_lib_socket_connect" = xyes; then : X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" if test "x$ac_cv_func_remove" = xyes; then : fi if test $ac_cv_func_remove = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 $as_echo_n "checking for remove in -lposix... " >&6; } if ${ac_cv_lib_posix_remove+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_posix_remove=yes else ac_cv_lib_posix_remove=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 $as_echo "$ac_cv_lib_posix_remove" >&6; } if test "x$ac_cv_lib_posix_remove" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" if test "x$ac_cv_func_shmat" = xyes; then : fi if test $ac_cv_func_shmat = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 $as_echo_n "checking for shmat in -lipc... " >&6; } if ${ac_cv_lib_ipc_shmat+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ipc_shmat=yes else ac_cv_lib_ipc_shmat=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 $as_echo "$ac_cv_lib_ipc_shmat" >&6; } if test "x$ac_cv_lib_ipc_shmat" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ICE_IceConnectionNumber=yes else ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi ZIP_INCLUDES="" ZIP_LIBS="" # Check whether --with-zip was given. if test "${with_zip+set}" = set; then : withval=$with_zip; fi # Treat --without-zip like --without-zip-includes --without-zip-libraries. if test "$with_zip" = "no"; then ZIP_INCLUDES=no ZIP_LIBS=no fi # Check whether --with-zip-includes was given. if test "${with_zip_includes+set}" = set; then : withval=$with_zip_includes; ZIP_INCLUDES="-I$withval" fi # Check whether --with-zip-libraries was given. if test "${with_zip_libraries+set}" = set; then : withval=$with_zip_libraries; ZIP_LIBS="-L$withval -lz" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZIP" >&5 $as_echo_n "checking for ZIP... " >&6; } # Look for zlib.h if test "$ZIP_INCLUDES" = ""; then # Check the standard search path cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ZIP_INCLUDES="" else # zlib.h is not in the standard search path, try # $prefix zip_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ZIP_INCLUDES="-I${prefix}/include" else ZIP_INCLUDES="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext INCLUDES=$zip_save_INCLUDES fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # Now for the libraries if test "$ZIP_LIBS" = ""; then zip_save_LIBS="$LIBS" zip_save_INCLUDES="$INCLUDES" LIBS="-lz $LIBS" INCLUDES="$ZIP_INCLUDES $INCLUDES" # Try the standard search path first cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { zlibVersion() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ZIP_LIBS="-lz" else # libz is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { zlibVersion() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ZIP_LIBS="-L${prefix}/lib -lz" else ZIP_LIBS=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$zip_save_LIBS" INCLUDES="$zip_save_INCLUDES" fi # Print a helpful message zip_libraries_result="$ZIP_LIBS" zip_includes_result="$ZIP_INCLUDES" if test x"$zip_libraries_result" = x""; then zip_libraries_result="in default path" fi if test x"$zip_includes_result" = x""; then zip_includes_result="in default path" fi if test "$zip_libraries_result" = "no"; then zip_libraries_result="(none)" fi if test "$zip_includes_result" = "no"; then zip_includes_result="(none)" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $zip_libraries_result, headers $zip_includes_result" >&5 $as_echo "libraries $zip_libraries_result, headers $zip_includes_result" >&6; } # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$ZIP_INCLUDES" != "no" && test "$ZIP_LIBS" != "no"; then $as_echo "#define HAVE_ZIP 1" >>confdefs.h with_zip=yes else ZIP_LIBS="" ZIP_INCLUDES="" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libz not found; disabling ZIP support" >&5 $as_echo "$as_me: WARNING: libz not found; disabling ZIP support" >&2;} with_zip=no fi # look for TIFF with pkg-config ... fall back to our tester # pkgconfig support for libtiff starts with libtiff-4 # Check whether --with-tiff was given. if test "${with_tiff+set}" = set; then : withval=$with_tiff; fi if test x"$with_tiff" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFF" >&5 $as_echo_n "checking for TIFF... " >&6; } if test -n "$TIFF_CFLAGS"; then pkg_cv_TIFF_CFLAGS="$TIFF_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtiff-4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libtiff-4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_TIFF_CFLAGS=`$PKG_CONFIG --cflags "libtiff-4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$TIFF_LIBS"; then pkg_cv_TIFF_LIBS="$TIFF_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtiff-4\""; } >&5 ($PKG_CONFIG --exists --print-errors "libtiff-4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_TIFF_LIBS=`$PKG_CONFIG --libs "libtiff-4" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then TIFF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtiff-4" 2>&1` else TIFF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtiff-4" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$TIFF_PKG_ERRORS" >&5 TIFF_INCLUDES="" TIFF_LIBS="" # Check whether --with-tiff was given. if test "${with_tiff+set}" = set; then : withval=$with_tiff; fi # Treat --without-tiff like --without-tiff-includes --without-tiff-libraries. if test "$with_tiff" = "no"; then TIFF_INCLUDES=no TIFF_LIBS=no fi # Check whether --with-tiff-includes was given. if test "${with_tiff_includes+set}" = set; then : withval=$with_tiff_includes; TIFF_INCLUDES="-I$withval" fi # Check whether --with-tiff-libraries was given. if test "${with_tiff_libraries+set}" = set; then : withval=$with_tiff_libraries; TIFF_LIBS="-L$withval -ltiff" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFF" >&5 $as_echo_n "checking for TIFF... " >&6; } # Look for tiff.h if test "$TIFF_INCLUDES" = ""; then # Check the standard search path cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : TIFF_INCLUDES="" else # tiff.h is not in the standard search path, try # $prefix tiff_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : TIFF_INCLUDES="-I${prefix}/include" else TIFF_INCLUDES="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext INCLUDES=$tiff_save_INCLUDES fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # Now for the libraries if test "$TIFF_LIBS" = ""; then tiff_save_LIBS="$LIBS" tiff_save_INCLUDES="$INCLUDES" LIBS="-ltiff -lm $LIBS" INCLUDES="$TIFF_INCLUDES $INCLUDES" # Try the standard search path first cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { TIFFGetVersion() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : TIFF_LIBS="-ltiff" else # libtiff is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { TIFFGetVersion() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : TIFF_LIBS="-L${prefix}/lib -ltiff" else TIFF_LIBS=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$tiff_save_LIBS" INCLUDES="$tiff_save_INCLUDES" fi # Print a helpful message tiff_libraries_result="$TIFF_LIBS" tiff_includes_result="$TIFF_INCLUDES" if test x"$tiff_libraries_result" = x""; then tiff_libraries_result="in default path" fi if test x"$tiff_includes_result" = x""; then tiff_includes_result="in default path" fi if test "$tiff_libraries_result" = "no"; then tiff_libraries_result="(none)" fi if test "$tiff_includes_result" = "no"; then tiff_includes_result="(none)" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $tiff_libraries_result, headers $tiff_includes_result" >&5 $as_echo "libraries $tiff_libraries_result, headers $tiff_includes_result" >&6; } # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$TIFF_INCLUDES" != "no" && test "$TIFF_LIBS" != "no"; then $as_echo "#define HAVE_TIFF 1" >>confdefs.h with_tiff="yes (found by search)" else TIFF_INCLUDES="" TIFF_LIBS="" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libtiff not found; disabling TIFF support" >&5 $as_echo "$as_me: WARNING: libtiff not found; disabling TIFF support" >&2;} with_tiff=no fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } TIFF_INCLUDES="" TIFF_LIBS="" # Check whether --with-tiff was given. if test "${with_tiff+set}" = set; then : withval=$with_tiff; fi # Treat --without-tiff like --without-tiff-includes --without-tiff-libraries. if test "$with_tiff" = "no"; then TIFF_INCLUDES=no TIFF_LIBS=no fi # Check whether --with-tiff-includes was given. if test "${with_tiff_includes+set}" = set; then : withval=$with_tiff_includes; TIFF_INCLUDES="-I$withval" fi # Check whether --with-tiff-libraries was given. if test "${with_tiff_libraries+set}" = set; then : withval=$with_tiff_libraries; TIFF_LIBS="-L$withval -ltiff" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFF" >&5 $as_echo_n "checking for TIFF... " >&6; } # Look for tiff.h if test "$TIFF_INCLUDES" = ""; then # Check the standard search path cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : TIFF_INCLUDES="" else # tiff.h is not in the standard search path, try # $prefix tiff_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : TIFF_INCLUDES="-I${prefix}/include" else TIFF_INCLUDES="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext INCLUDES=$tiff_save_INCLUDES fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # Now for the libraries if test "$TIFF_LIBS" = ""; then tiff_save_LIBS="$LIBS" tiff_save_INCLUDES="$INCLUDES" LIBS="-ltiff -lm $LIBS" INCLUDES="$TIFF_INCLUDES $INCLUDES" # Try the standard search path first cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { TIFFGetVersion() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : TIFF_LIBS="-ltiff" else # libtiff is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { TIFFGetVersion() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : TIFF_LIBS="-L${prefix}/lib -ltiff" else TIFF_LIBS=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$tiff_save_LIBS" INCLUDES="$tiff_save_INCLUDES" fi # Print a helpful message tiff_libraries_result="$TIFF_LIBS" tiff_includes_result="$TIFF_INCLUDES" if test x"$tiff_libraries_result" = x""; then tiff_libraries_result="in default path" fi if test x"$tiff_includes_result" = x""; then tiff_includes_result="in default path" fi if test "$tiff_libraries_result" = "no"; then tiff_libraries_result="(none)" fi if test "$tiff_includes_result" = "no"; then tiff_includes_result="(none)" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $tiff_libraries_result, headers $tiff_includes_result" >&5 $as_echo "libraries $tiff_libraries_result, headers $tiff_includes_result" >&6; } # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$TIFF_INCLUDES" != "no" && test "$TIFF_LIBS" != "no"; then $as_echo "#define HAVE_TIFF 1" >>confdefs.h with_tiff="yes (found by search)" else TIFF_INCLUDES="" TIFF_LIBS="" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libtiff not found; disabling TIFF support" >&5 $as_echo "$as_me: WARNING: libtiff not found; disabling TIFF support" >&2;} with_tiff=no fi else TIFF_CFLAGS=$pkg_cv_TIFF_CFLAGS TIFF_LIBS=$pkg_cv_TIFF_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_TIFF 1" >>confdefs.h with_tiff="yes (pkg-config libtiff-4)" PACKAGES_USED="$PACKAGES_USED libtiff-4" fi fi # look for PNG with pkg-config ... fall back to our tester # Check whether --with-png was given. if test "${with_png+set}" = set; then : withval=$with_png; fi if test x"$with_png" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG" >&5 $as_echo_n "checking for PNG... " >&6; } if test -n "$PNG_CFLAGS"; then pkg_cv_PNG_CFLAGS="$PNG_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng >= 1.2.9\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpng >= 1.2.9") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PNG_CFLAGS=`$PKG_CONFIG --cflags "libpng >= 1.2.9" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PNG_LIBS"; then pkg_cv_PNG_LIBS="$PNG_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng >= 1.2.9\""; } >&5 ($PKG_CONFIG --exists --print-errors "libpng >= 1.2.9") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PNG_LIBS=`$PKG_CONFIG --libs "libpng >= 1.2.9" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PNG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpng >= 1.2.9" 2>&1` else PNG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpng >= 1.2.9" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PNG_PKG_ERRORS" >&5 PNG_INCLUDES="" PNG_LIBS="" # Check whether --with-png was given. if test "${with_png+set}" = set; then : withval=$with_png; fi # Treat --without-png like --without-png-includes --without-png-libraries. if test "$with_png" = "no"; then PNG_INCLUDES=no PNG_LIBS=no fi # Check whether --with-png-includes was given. if test "${with_png_includes+set}" = set; then : withval=$with_png_includes; PNG_INCLUDES="-I$withval" fi # Check whether --with-png-libraries was given. if test "${with_png_libraries+set}" = set; then : withval=$with_png_libraries; PNG_LIBS="-L$withval -lpng" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpng" >&5 $as_echo_n "checking for libpng... " >&6; } # Look for png.h if test "$PNG_INCLUDES" = ""; then # Check the standard search path cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : PNG_INCLUDES="" else # png.h is not in the standard search path, try # $prefix png_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : PNG_INCLUDES="-I${prefix}/include" else PNG_INCLUDES="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext INCLUDES=$png_save_INCLUDES fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # Now for the libraries if test "$PNG_LIBS" = ""; then png_save_LIBS="$LIBS" png_save_INCLUDES="$INCLUDES" LIBS="-lpng $LIBS" INCLUDES="$PNG_INCLUDES $INCLUDES" # Try the standard search path first cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { png_access_version_number() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : PNG_LIBS="-lpng" else # libpng is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { png_access_version_number() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : PNG_LIBS="-L${prefix}/lib -lpng" else PNG_LIBS=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$png_save_LIBS" INCLUDES="$png_save_INCLUDES" fi # Print a helpful message png_libraries_result="$PNG_LIBS" png_includes_result="$PNG_INCLUDES" if test x"$png_libraries_result" = x""; then png_libraries_result="in default path" fi if test x"$png_includes_result" = x""; then png_includes_result="in default path" fi if test "$png_libraries_result" = "no"; then png_libraries_result="(none)" fi if test "$png_includes_result" = "no"; then png_includes_result="(none)" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $png_libraries_result, headers $png_includes_result" >&5 $as_echo "libraries $png_libraries_result, headers $png_includes_result" >&6; } # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$PNG_INCLUDES" != "no" && test "$PNG_LIBS" != "no"; then $as_echo "#define HAVE_PNG 1" >>confdefs.h with_png="yes (found by search)" else PNG_INCLUDES="" PNG_LIBS="" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libpng not found; disabling PNG support" >&5 $as_echo "$as_me: WARNING: libpng not found; disabling PNG support" >&2;} with_png=no fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PNG_INCLUDES="" PNG_LIBS="" # Check whether --with-png was given. if test "${with_png+set}" = set; then : withval=$with_png; fi # Treat --without-png like --without-png-includes --without-png-libraries. if test "$with_png" = "no"; then PNG_INCLUDES=no PNG_LIBS=no fi # Check whether --with-png-includes was given. if test "${with_png_includes+set}" = set; then : withval=$with_png_includes; PNG_INCLUDES="-I$withval" fi # Check whether --with-png-libraries was given. if test "${with_png_libraries+set}" = set; then : withval=$with_png_libraries; PNG_LIBS="-L$withval -lpng" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libpng" >&5 $as_echo_n "checking for libpng... " >&6; } # Look for png.h if test "$PNG_INCLUDES" = ""; then # Check the standard search path cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : PNG_INCLUDES="" else # png.h is not in the standard search path, try # $prefix png_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : PNG_INCLUDES="-I${prefix}/include" else PNG_INCLUDES="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext INCLUDES=$png_save_INCLUDES fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # Now for the libraries if test "$PNG_LIBS" = ""; then png_save_LIBS="$LIBS" png_save_INCLUDES="$INCLUDES" LIBS="-lpng $LIBS" INCLUDES="$PNG_INCLUDES $INCLUDES" # Try the standard search path first cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { png_access_version_number() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : PNG_LIBS="-lpng" else # libpng is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { png_access_version_number() ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : PNG_LIBS="-L${prefix}/lib -lpng" else PNG_LIBS=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$png_save_LIBS" INCLUDES="$png_save_INCLUDES" fi # Print a helpful message png_libraries_result="$PNG_LIBS" png_includes_result="$PNG_INCLUDES" if test x"$png_libraries_result" = x""; then png_libraries_result="in default path" fi if test x"$png_includes_result" = x""; then png_includes_result="in default path" fi if test "$png_libraries_result" = "no"; then png_libraries_result="(none)" fi if test "$png_includes_result" = "no"; then png_includes_result="(none)" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $png_libraries_result, headers $png_includes_result" >&5 $as_echo "libraries $png_libraries_result, headers $png_includes_result" >&6; } # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$PNG_INCLUDES" != "no" && test "$PNG_LIBS" != "no"; then $as_echo "#define HAVE_PNG 1" >>confdefs.h with_png="yes (found by search)" else PNG_INCLUDES="" PNG_LIBS="" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libpng not found; disabling PNG support" >&5 $as_echo "$as_me: WARNING: libpng not found; disabling PNG support" >&2;} with_png=no fi else PNG_CFLAGS=$pkg_cv_PNG_CFLAGS PNG_LIBS=$pkg_cv_PNG_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_PNG 1" >>confdefs.h with_png="yes (pkg-config libpng >= 1.2.9)" PACKAGES_USED="$PACKAGES_USED libpng" fi fi JPEG_INCLUDES="" JPEG_LIBS="" # Check whether --with-jpeg was given. if test "${with_jpeg+set}" = set; then : withval=$with_jpeg; fi # Treat --without-jpeg like --without-jpeg-includes --without-jpeg-libraries. if test "$with_jpeg" = "no"; then JPEG_INCLUDES=no JPEG_LIBS=no fi # Check whether --with-jpeg-includes was given. if test "${with_jpeg_includes+set}" = set; then : withval=$with_jpeg_includes; JPEG_INCLUDES="-I$withval" fi # Check whether --with-jpeg-libraries was given. if test "${with_jpeg_libraries+set}" = set; then : withval=$with_jpeg_libraries; JPEG_LIBS="-L$withval -ljpeg" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JPEG" >&5 $as_echo_n "checking for JPEG... " >&6; } # Look for jpeglib.h if test "$JPEG_INCLUDES" = ""; then # Check the standard search path cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : JPEG_INCLUDES="" else # jpeglib.h is not in the standard search path, try # $prefix jpeg_save_INCLUDES="$INCLUDES" INCLUDES="-I${prefix}/include $INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { int a; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : JPEG_INCLUDES="-I${prefix}/include" else JPEG_INCLUDES="no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext INCLUDES=$jpeg_save_INCLUDES fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # Now for the libraries if test "$JPEG_LIBS" = ""; then jpeg_save_LIBS="$LIBS" jpeg_save_INCLUDES="$INCLUDES" LIBS="-ljpeg $LIBS" INCLUDES="$JPEG_INCLUDES $INCLUDES" # Try the standard search path first cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { jpeg_abort((void*)0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : JPEG_LIBS="-ljpeg" else # libjpeg is not in the standard search path, try $prefix LIBS="-L${prefix}/lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { jpeg_abort((void*)0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : JPEG_LIBS="-L${prefix}/lib -ljpeg" else JPEG_LIBS=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$jpeg_save_LIBS" INCLUDES="$jpeg_save_INCLUDES" fi # Print a helpful message jpeg_libraries_result="$JPEG_LIBS" jpeg_includes_result="$JPEG_INCLUDES" if test x"$jpeg_libraries_result" = x""; then jpeg_libraries_result="in default path" fi if test x"$jpeg_includes_result" = x""; then jpeg_includes_result="in default path" fi if test "$jpeg_libraries_result" = "no"; then jpeg_libraries_result="(none)" fi if test "$jpeg_includes_result" = "no"; then jpeg_includes_result="(none)" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $jpeg_libraries_result, headers $jpeg_includes_result" >&5 $as_echo "libraries $jpeg_libraries_result, headers $jpeg_includes_result" >&6; } # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "$JPEG_INCLUDES" != "no" && test "$JPEG_LIBS" != "no"; then $as_echo "#define HAVE_JPEG 1" >>confdefs.h with_jpeg=yes EXTRA_LIBS_USED="$EXTRA_LIBS_USED -ljpeg" else JPEG_INCLUDES="" JPEG_LIBS="" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libjpeg not found; disabling JPEG support" >&5 $as_echo "$as_me: WARNING: libjpeg not found; disabling JPEG support" >&2;} with_jpeg=no fi # JPEG extension parameters available in libjpeg-turbo >=1.5.0, mozjpeg >=3.0 if test x"$with_jpeg" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JPEG extension parameters" >&5 $as_echo_n "checking for JPEG extension parameters... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { J_BOOLEAN_PARAM test; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_JPEG_EXT_PARAMS 1" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi # libexif # Check whether --with-libexif was given. if test "${with_libexif+set}" = set; then : withval=$with_libexif; fi if test x"$with_libexif" != "xno"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EXIF" >&5 $as_echo_n "checking for EXIF... " >&6; } if test -n "$EXIF_CFLAGS"; then pkg_cv_EXIF_CFLAGS="$EXIF_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexif >= 0.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "libexif >= 0.6") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EXIF_CFLAGS=`$PKG_CONFIG --cflags "libexif >= 0.6" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$EXIF_LIBS"; then pkg_cv_EXIF_LIBS="$EXIF_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexif >= 0.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "libexif >= 0.6") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_EXIF_LIBS=`$PKG_CONFIG --libs "libexif >= 0.6" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then EXIF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libexif >= 0.6" 2>&1` else EXIF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libexif >= 0.6" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$EXIF_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libexif >= 0.6 not found; disabling exif support" >&5 $as_echo "$as_me: WARNING: libexif >= 0.6 not found; disabling exif support" >&2;} with_libexif=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libexif >= 0.6 not found; disabling exif support" >&5 $as_echo "$as_me: WARNING: libexif >= 0.6 not found; disabling exif support" >&2;} with_libexif=no else EXIF_CFLAGS=$pkg_cv_EXIF_CFLAGS EXIF_LIBS=$pkg_cv_EXIF_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } $as_echo "#define HAVE_EXIF 1" >>confdefs.h with_libexif=yes PACKAGES_USED="$PACKAGES_USED libexif" fi fi # some libexif packages need include , some just # how annoying if test x"$with_libexif" != "xno"; then # cppflags not cflags because we want the preproc to see the -I as well save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$EXIF_CFLAGS $CPPFLAGS" ac_fn_c_check_header_mongrel "$LINENO" "exif-data.h" "ac_cv_header_exif_data_h" "$ac_includes_default" if test "x$ac_cv_header_exif_data_h" = xyes; then : $as_echo "#define UNTAGGED_EXIF 1" >>confdefs.h fi CPPFLAGS=$save_CPPFLAGS fi # make python binding? # Check whether --with-python was given. if test "${with_python+set}" = set; then : withval=$with_python; fi if test x"$with_python" != x"no"; then if test x"$enable_cxx" = x"no"; then # if C++ is off, we can't do Python with_python=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C++ is off, disabling vips7 Python binding" >&5 $as_echo "$as_me: WARNING: C++ is off, disabling vips7 Python binding" >&2;} fi fi if test x"$with_python" != x"no"; then if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.7" >&5 $as_echo_n "checking whether $PYTHON version is >= 2.7... " >&6; } prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 ($PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Python interpreter is too old" "$LINENO" 5 fi am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.7" >&5 $as_echo_n "checking for a Python interpreter with version >= 2.7... " >&6; } if ${am_cv_pathless_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do test "$am_cv_pathless_PYTHON" = none && break prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] sys.exit(sys.hexversion < minverhex)" if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then : break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5 $as_echo "$am_cv_pathless_PYTHON" >&6; } # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. set dummy $am_cv_pathless_PYTHON; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi am_display_PYTHON=$am_cv_pathless_PYTHON fi if test "$PYTHON" = :; then with_python=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python not found; disabling vips7 Python binding" >&5 $as_echo "$as_me: WARNING: Python not found; disabling vips7 Python binding" >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 $as_echo_n "checking for $am_display_PYTHON version... " >&6; } if ${am_cv_python_version+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 $as_echo "$am_cv_python_version" >&6; } PYTHON_VERSION=$am_cv_python_version PYTHON_PREFIX='${prefix}' PYTHON_EXEC_PREFIX='${exec_prefix}' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 $as_echo_n "checking for $am_display_PYTHON platform... " >&6; } if ${am_cv_python_platform+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 $as_echo "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform # Just factor out some code duplication. am_python_setup_sysconfig="\ import sys # Prefer sysconfig over distutils.sysconfig, for better compatibility # with python 3.x. See automake bug#10227. try: import sysconfig except ImportError: can_use_sysconfig = 0 else: can_use_sysconfig = 1 # Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: # try: from platform import python_implementation if python_implementation() == 'CPython' and sys.version[:3] == '2.7': can_use_sysconfig = 0 except ImportError: pass" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } if ${am_cv_python_pythondir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 $as_echo "$am_cv_python_pythondir" >&6; } pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } if ${am_cv_python_pyexecdir+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c " $am_python_setup_sysconfig if can_use_sysconfig: sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) else: from distutils import sysconfig sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') sys.stdout.write(sitedir)"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 $as_echo "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi fi if test x"$with_python" != x"no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for headers required to compile python extensions" >&5 $as_echo_n "checking for headers required to compile python extensions... " >&6; } py_prefix=`$PYTHON -c "import sys; print(sys.prefix)"` py_exec_prefix=`$PYTHON -c "import sys; print(sys.exec_prefix)"` PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" if test "$py_prefix" != "$py_exec_prefix"; then PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" fi save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 $as_echo "found" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } with_python=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Python headers not found; disabling vips7 Python binding" >&5 $as_echo "$as_me: WARNING: Python headers not found; disabling vips7 Python binding" >&2;} fi rm -f conftest.err conftest.i conftest.$ac_ext CPPFLAGS="$save_CPPFLAGS" fi # we don't check for swig: we include the generated bindings in the # distribution if test x"$with_python" != x"no"; then if true; then HAVE_PYTHON_TRUE= HAVE_PYTHON_FALSE='#' else HAVE_PYTHON_TRUE='#' HAVE_PYTHON_FALSE= fi with_python=yes else if false; then HAVE_PYTHON_TRUE= HAVE_PYTHON_FALSE='#' else HAVE_PYTHON_TRUE='#' HAVE_PYTHON_FALSE= fi fi # Gather all up for VIPS_CFLAGS, VIPS_INCLUDES, VIPS_LIBS # sort includes to get longer, more specific dirs first # helps, for example, selecting graphicsmagick over imagemagick VIPS_CFLAGS=`for i in $VIPS_CFLAGS $GTHREAD_CFLAGS $REQUIRED_CFLAGS $PANGOFT2_CFLAGS $GSF_CFLAGS $FFTW_CFLAGS $MAGICK_CFLAGS $PNG_CFLAGS $EXIF_CFLAGS $MATIO_CFLAGS $CFITSIO_CFLAGS $LIBWEBP_CFLAGS $OPENEXR_CFLAGS $OPENSLIDE_CFLAGS $ORC_CFLAGS $TIFF_CFLAGS $LCMS_CFLAGS do echo $i done | sort -ru` VIPS_CFLAGS=`echo $VIPS_CFLAGS` VIPS_CFLAGS="$VIPS_DEBUG_FLAGS $VIPS_CFLAGS" VIPS_INCLUDES="$PNG_INCLUDES $TIFF_INCLUDES $ZIP_INCLUDES $JPEG_INCLUDES" VIPS_LIBS="$MAGICK_LIBS $PNG_LIBS $TIFF_LIBS $ZIP_LIBS $JPEG_LIBS $GTHREAD_LIBS $REQUIRED_LIBS $PANGOFT2_LIBS $GSF_LIBS $FFTW_LIBS $ORC_LIBS $LCMS_LIBS $OPENEXR_LIBS $OPENSLIDE_LIBS $CFITSIO_LIBS $LIBWEBP_LIBS $MATIO_LIBS $EXIF_LIBS -lm" # needed by test/variables.sh.in # :( what's a better way to do this, argh TOP_SRCDIR=$ac_pwd ac_config_files="$ac_config_files vips.pc vipsCC.pc vips-cpp.pc Makefile libvips/include/vips/version.h libvips/include/Makefile libvips/include/vips/Makefile libvips/Makefile libvips/arithmetic/Makefile libvips/colour/Makefile libvips/conversion/Makefile libvips/convolution/Makefile libvips/deprecated/Makefile libvips/foreign/Makefile libvips/freqfilt/Makefile libvips/histogram/Makefile libvips/draw/Makefile libvips/iofuncs/Makefile libvips/morphology/Makefile libvips/mosaicing/Makefile libvips/create/Makefile libvips/resample/Makefile libvips/video/Makefile libvipsCC/include/Makefile libvipsCC/include/vips/Makefile libvipsCC/Makefile cplusplus/include/Makefile cplusplus/include/vips/Makefile cplusplus/Makefile tools/Makefile tools/batch_crop tools/batch_image_convert tools/batch_rubber_sheet tools/light_correct tools/shrink_width python/Makefile test/Makefile test/variables.sh swig/Makefile swig/vipsCC/Makefile man/Makefile doc/Makefile doc/libvips-docs.xml po/Makefile.in" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${HAVE_INTROSPECTION_TRUE}" && test -z "${HAVE_INTROSPECTION_FALSE}"; then as_fn_error $? "conditional \"HAVE_INTROSPECTION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_DEPRECATED_TRUE}" && test -z "${ENABLE_DEPRECATED_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DEPRECATED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_DEPRECATED_TRUE}" && test -z "${ENABLE_DEPRECATED_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DEPRECATED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then as_fn_error $? "conditional \"OS_WIN32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then as_fn_error $? "conditional \"OS_WIN32\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GTK_DOC_TRUE}" && test -z "${HAVE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"HAVE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_PYVIPS8_TRUE}" && test -z "${ENABLE_PYVIPS8_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PYVIPS8\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by vips $as_me 8.2.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ vips config.status 8.2.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "vips.pc") CONFIG_FILES="$CONFIG_FILES vips.pc" ;; "vipsCC.pc") CONFIG_FILES="$CONFIG_FILES vipsCC.pc" ;; "vips-cpp.pc") CONFIG_FILES="$CONFIG_FILES vips-cpp.pc" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "libvips/include/vips/version.h") CONFIG_FILES="$CONFIG_FILES libvips/include/vips/version.h" ;; "libvips/include/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/include/Makefile" ;; "libvips/include/vips/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/include/vips/Makefile" ;; "libvips/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/Makefile" ;; "libvips/arithmetic/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/arithmetic/Makefile" ;; "libvips/colour/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/colour/Makefile" ;; "libvips/conversion/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/conversion/Makefile" ;; "libvips/convolution/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/convolution/Makefile" ;; "libvips/deprecated/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/deprecated/Makefile" ;; "libvips/foreign/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/foreign/Makefile" ;; "libvips/freqfilt/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/freqfilt/Makefile" ;; "libvips/histogram/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/histogram/Makefile" ;; "libvips/draw/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/draw/Makefile" ;; "libvips/iofuncs/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/iofuncs/Makefile" ;; "libvips/morphology/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/morphology/Makefile" ;; "libvips/mosaicing/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/mosaicing/Makefile" ;; "libvips/create/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/create/Makefile" ;; "libvips/resample/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/resample/Makefile" ;; "libvips/video/Makefile") CONFIG_FILES="$CONFIG_FILES libvips/video/Makefile" ;; "libvipsCC/include/Makefile") CONFIG_FILES="$CONFIG_FILES libvipsCC/include/Makefile" ;; "libvipsCC/include/vips/Makefile") CONFIG_FILES="$CONFIG_FILES libvipsCC/include/vips/Makefile" ;; "libvipsCC/Makefile") CONFIG_FILES="$CONFIG_FILES libvipsCC/Makefile" ;; "cplusplus/include/Makefile") CONFIG_FILES="$CONFIG_FILES cplusplus/include/Makefile" ;; "cplusplus/include/vips/Makefile") CONFIG_FILES="$CONFIG_FILES cplusplus/include/vips/Makefile" ;; "cplusplus/Makefile") CONFIG_FILES="$CONFIG_FILES cplusplus/Makefile" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; "tools/batch_crop") CONFIG_FILES="$CONFIG_FILES tools/batch_crop" ;; "tools/batch_image_convert") CONFIG_FILES="$CONFIG_FILES tools/batch_image_convert" ;; "tools/batch_rubber_sheet") CONFIG_FILES="$CONFIG_FILES tools/batch_rubber_sheet" ;; "tools/light_correct") CONFIG_FILES="$CONFIG_FILES tools/light_correct" ;; "tools/shrink_width") CONFIG_FILES="$CONFIG_FILES tools/shrink_width" ;; "python/Makefile") CONFIG_FILES="$CONFIG_FILES python/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "test/variables.sh") CONFIG_FILES="$CONFIG_FILES test/variables.sh" ;; "swig/Makefile") CONFIG_FILES="$CONFIG_FILES swig/Makefile" ;; "swig/vipsCC/Makefile") CONFIG_FILES="$CONFIG_FILES swig/vipsCC/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/libvips-docs.xml") CONFIG_FILES="$CONFIG_FILES doc/libvips-docs.xml" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: * build options native win32: $vips_os_win32 native OS X: $vips_os_darwin open files in binary mode: $vips_binary_open enable debug: $enable_debug build deprecated components: $enable_deprecated build docs with gtkdoc: $enable_gtk_doc gobject introspection: $found_introspection build vips7 Python binding: $with_python install vips8 Python overrides: $enable_pyvips8 (requires pygobject-3.12.0 or later) * optional dependencies use fftw3 for FFT: $with_fftw Magick package: $with_magickpackage file import with libMagick: $with_magick accelerate loops with orc: $with_orc (requires orc-0.4.11 or later) ICC profile support with lcms: $with_lcms file import with OpenEXR: $with_OpenEXR file import with OpenSlide: $with_openslide (requires openslide-3.3.0 or later) file import with matio: $with_matio file import with cfitsio: $with_cfitsio file import/export with libwebp: $with_libwebp text rendering with pangoft2: $with_pangoft2 file import/export with libpng: $with_png (requires libpng-1.2.9 or later) file import/export with libtiff: $with_tiff file import/export with libjpeg: $with_jpeg image pyramid export: $with_gsf (requires libgsf-1 1.14.27 or later) use libexif to load/save JPEG metadata: $with_libexif " >&5 $as_echo " * build options native win32: $vips_os_win32 native OS X: $vips_os_darwin open files in binary mode: $vips_binary_open enable debug: $enable_debug build deprecated components: $enable_deprecated build docs with gtkdoc: $enable_gtk_doc gobject introspection: $found_introspection build vips7 Python binding: $with_python install vips8 Python overrides: $enable_pyvips8 (requires pygobject-3.12.0 or later) * optional dependencies use fftw3 for FFT: $with_fftw Magick package: $with_magickpackage file import with libMagick: $with_magick accelerate loops with orc: $with_orc (requires orc-0.4.11 or later) ICC profile support with lcms: $with_lcms file import with OpenEXR: $with_OpenEXR file import with OpenSlide: $with_openslide (requires openslide-3.3.0 or later) file import with matio: $with_matio file import with cfitsio: $with_cfitsio file import/export with libwebp: $with_libwebp text rendering with pangoft2: $with_pangoft2 file import/export with libpng: $with_png (requires libpng-1.2.9 or later) file import/export with libtiff: $with_tiff file import/export with libjpeg: $with_jpeg image pyramid export: $with_gsf (requires libgsf-1 1.14.27 or later) use libexif to load/save JPEG metadata: $with_libexif " >&6; } vips-8.2.2/Makefile.am0000664000175000017500000000167612530402247011474 00000000000000 # turn on Python if we can if HAVE_PYTHON P_COMPILE_DIR = swig P_DIST_DIR = else P_COMPILE_DIR = P_DIST_DIR = swig endif # turn on vips8 Python if we can if ENABLE_PYVIPS8 P8_COMPILE_DIR = python P8_DIST_DIR = else P8_COMPILE_DIR = P8_DIST_DIR = python endif SUBDIRS = \ libvips \ libvipsCC \ cplusplus \ tools \ po \ man \ doc \ test \ $(P_COMPILE_DIR) \ $(P8_COMPILE_DIR) EXTRA_DIST = \ m4 \ benchmark \ bootstrap.sh \ vips.pc.in \ vipsCC.pc.in \ vips-cpp.pc.in \ libvips.supp \ acinclude.m4 \ depcomp \ README.md \ $(P_DIST_DIR) \ $(P8_DIST_DIR) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = vips.pc vipsCC.pc vips-cpp.pc dist-hook: # make sure we don't get any .svn dirs from EXTRA_DIST # also "fred" gets left around occasionally -find $(distdir) -name .svn -exec rm -rf {} \; -find $(distdir) -name fred -exec rm {} \; ACLOCAL_AMFLAGS = -I m4 DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc --enable-introspection vips-8.2.2/compile0000775000175000017500000001624512530402247011014 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: vips-8.2.2/Makefile.in0000664000175000017500000010042712651721156011506 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = vips.pc vipsCC.pc vips-cpp.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = libvips libvipsCC cplusplus tools po man doc test swig \ python am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/vips-cpp.pc.in $(srcdir)/vips.pc.in \ $(srcdir)/vipsCC.pc.in AUTHORS COPYING ChangeLog INSTALL NEWS \ THANKS TODO compile config.guess config.sub install-sh \ ltmain.sh missing py-compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ @HAVE_PYTHON_FALSE@P_COMPILE_DIR = # turn on Python if we can @HAVE_PYTHON_TRUE@P_COMPILE_DIR = swig @HAVE_PYTHON_FALSE@P_DIST_DIR = swig @HAVE_PYTHON_TRUE@P_DIST_DIR = @ENABLE_PYVIPS8_FALSE@P8_COMPILE_DIR = # turn on vips8 Python if we can @ENABLE_PYVIPS8_TRUE@P8_COMPILE_DIR = python @ENABLE_PYVIPS8_FALSE@P8_DIST_DIR = python @ENABLE_PYVIPS8_TRUE@P8_DIST_DIR = SUBDIRS = \ libvips \ libvipsCC \ cplusplus \ tools \ po \ man \ doc \ test \ $(P_COMPILE_DIR) \ $(P8_COMPILE_DIR) EXTRA_DIST = \ m4 \ benchmark \ bootstrap.sh \ vips.pc.in \ vipsCC.pc.in \ vips-cpp.pc.in \ libvips.supp \ acinclude.m4 \ depcomp \ README.md \ $(P_DIST_DIR) \ $(P8_DIST_DIR) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = vips.pc vipsCC.pc vips-cpp.pc ACLOCAL_AMFLAGS = -I m4 DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-introspection all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 vips.pc: $(top_builddir)/config.status $(srcdir)/vips.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ vipsCC.pc: $(top_builddir)/config.status $(srcdir)/vipsCC.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ vips-cpp.pc: $(top_builddir)/config.status $(srcdir)/vips-cpp.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ dist-tarZ dist-xz dist-zip distcheck distclean \ distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-pkgconfigDATA .PRECIOUS: Makefile dist-hook: # make sure we don't get any .svn dirs from EXTRA_DIST # also "fred" gets left around occasionally -find $(distdir) -name .svn -exec rm -rf {} \; -find $(distdir) -name fred -exec rm {} \; # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/test/0000775000175000017500000000000012651721507010474 500000000000000vips-8.2.2/test/variables.sh.in0000664000175000017500000000061412646657322013335 00000000000000top_srcdir=@TOP_SRCDIR@ # we need a different tmp for each script since make can run tests in parallel tmp=$top_srcdir/test/tmp-$$ test_images=$top_srcdir/test/images image=$test_images/IMG_4618.jpg mkdir -p $tmp vips=$top_srcdir/tools/vips vipsthumbnail=$top_srcdir/tools/vipsthumbnail vipsheader=$top_srcdir/tools/vipsheader # we need bc to use '.' for a decimal separator export LC_NUMERIC=C vips-8.2.2/test/images/0000775000175000017500000000000012650470344011740 500000000000000vips-8.2.2/test/images/sample.tif0000664000175000017500000273676612530402247013672 00000000000000II*@¼ :À÷ sÀÇ¡s¼Á›Önã³ï’~iò°”UoºÈ›‚q3Á›Ÿµp­ÁnÚqÂ:Ÿ4qÁÂýžþpFÁ–×q’À·æs'Åm£þvÃÊä¨xÎÉÞ¤ßtWÄÄžÒp”Á¦žhq•Ä¥wMÇÁ¥õu±Å«Ÿ…rgÆæ¢¼w˯óƒÎè´j‰îÇì©~~NÁÚž’u®¾œPp ½ šo躊™8w³•Ïu˧5Ž¡mý²¥˜ør±Ã_§}ÉÉ´« |(È—¦ÅuÄŸ¯ks½c›Žo4¶^—¸nŒ¯é–†mp±à”Ck4¿œár%Çø y=ÀG›7rh³5•„qb¹ÅœAwoÈ&§nwzÈé¢FqVÆ ¤méŵ¢ßq«ÅT¥>t¥¿‚ŸbiZÀSŸþg6ǦÈp,Ë}©Âx¥Éƒ¦ zŸÄë¡êsÚÄ£¬wFň @y£Ç¥¦}ŒÈò¤åzmɦÒ|¥È–¤õyÅ(ŸÔtvÄ ŸTwǦ׈Ę́¡€ ÊE¨Uz®Éè©îtÈÔ©ÚpnÊF«s÷Ȉ¥u¦ÆÜŸ–uÊ¥~ÇÉç¢ {4Ë#¥zîÈü¢gsÑȽŸQpëÆžzl-É"£…uÄʯ¦Ñv¼È¢XwÃvýy¼†™q@»,˜m.¶•Ãm³²“«o$¥ ‹^iRŸ|„Wg½žp„Üjf¤‰òiÁ¬!Œ0`ϲg”ŸjƒÅ¼£vÇ+§:vÄÅ1¦x•Ês¨[zéÄâž‹qp½À˜ o粆•0j®{–áh¬§û9f!­·˜>u°¬¿—juè±Ê—¹t¬¾¡éy Åï¦ v‘¼®œRr6§Ž\¥$Ž>_˜­9•mj¾°é•Ipq±æ”‚u{µ¤š‰yÅߥ€kɬ©·¶£Ítü˜œÄlôº^šÎj•¹|™çn·B˜çr4·K–hا¦‹\~£±ŠEg¨£@‘fqU¯ò—ÔoX¼ãÃl²¿@žkŠºn›xhˬ´“ðcM¤rËe¦ ‡Ïd›É‚7bA£ï‘ín®1•àmï¬{’’jÚ¨nxf:°—Èm8»ìœ§p·ÈMªRzÞÇâ«~ô»-žvð«k“mª ”#n­­0–‰q¤/‹b—¤ jŬç“llK¾“ž tŒÉa¨|{Ê·¨ƒsˆÆ²¥Vo¿ŸYmF¶ìšËkŸ±Ž—?i×®F•jh ¨ºrfîŸçˆ'd™ †×_ ®žŒ›dôµ$šÚx.Ãc©gƒ„Èx« {UÊݨjue¿gžbp"¬bf7žl‰}ošS†˜q¡‰ƒr%§´‹‡o °K’Jl†¾/Ÿu†ÇS©:~âÃü¡Pq½¿-ž›eÀ°žKkGÀlžÐj°¼ šÛcL°ç’tm Ÿ°ˆapK’ȃ½sšd—°ˆLÔ½A¥ƒúBÔt±Sô@Ìæ”ØÉù«w#¿§ž n‚Ã9¤øy«ÀS¤£|K¿¨¢“u§¾ªŸßlj¿ ŸAre½Öž.u» uß¹x›wµº1š¾yʶ²”1q"º˜!o÷ÁŠ¡³q3ÈŠ«ÖuÃÖ¡srg½jš:mÃŽŸsuÃÅŽ¥ v3Ç©ãw‹Ç§)w)Ê7§4x“È©£èvÎÈc¥,~šÂSž_{P¹—0s8·Ñ˜ûtØ»IŸD||¹›®w„±¡“œlJ¸ð˜ørÈ¿Ÿ hzÅ?§#}9ƧsyÑÆÿ§~y¼Æ§ |Å¡Tx‡ÃQŸ s«Â¼¢®r@Ä £@vËÄY þxvÄVŸ*sFȘ¥´rÊyªüxKÌœªu~ÝÌ<§¹y‡Íž¨^x%ÊŠ¨¤uÉu¨WqTÆÊ¡‡kq¿:›×eL¶¤•ðe;³×•Ên^´í‘Þoʹ0—qsûÄx¥±{ÉÄܦ'ylΦox|Ũ$z…Ű¥juÃW ¶n›ÁQ!nº¾–™lT¸ô“h ºÉ—5qïÀæ›ñuÿÂÙ›}p¦ÃtxqÁÂõëte¿;œFt½S›s±¾å›îqn½œ™­mD»:˜¤lÁ¾¾š­q£Àpœµo<ÄœžÖsÉÊ’¦uxyË#§Žw™Æú£Ãwã¿‚ŸèsâÁö¡Kw ´¢/|>Â6¨RƒTÅH¯Ì…ÇÁÛ¨•|R¼—ž‚sý±Ö•jF³n—¸rù¿p |ð ¡™sù¿‚žFkìÃ%¢nrƧ¢ŒoÄž¤o}¿›,o%·Ì“´k¬³Š‘i滉™:l‡Ã}Ÿ‘puÃHžµqÃÇÁ§×‚3Ï”¶M”¶¿SŸïŒ³b‘õkw¼‹™tf¾Ó›öy¾®ðqV½[èt#¸š˜¬m£§ÙŠdU¤è‹Õk½²Ë–n¾¾®œqkѽ4œ‘lâÁ¶Ÿøp<áŸpxÁ¨žÞq0ÃŒ¡-vÌÆ§!w[Ê©PwˆÈ ¥¦sƾfœ¡o€µ6—`oŸ¼ñÑu?Ää¡ p…Àõœlq£Öˆš\«™s|ŽU]¡¬…ée ´$• oü¾œPm…Áækؾ\'lu¾£p+ÂfŸtyÅo¡Dv³Äl Ö}´ÂõžÒ¿¼|šùoI·ü•&`¸Ò–h`ÁÏžAlåÈ<¦÷vàÇ.¡†wPÉx£ˆuWËî©ãvQÉ«¥}÷Æò£»{6Ëè¤T}ÌûªÝÆQ¥Ñ}¤À™lr÷·‘bz·‡“ hÈÃÚ Xw·ÊȨ^zKÊU¥¨p´ÌÓ¦Ünh̤qq_ɹ ¥o™Çl¢,r½É3§Äz.ÅaŸt‡Ãž7nJÅ3žÒmŽÀÉœÑjy¾X›pt¶Î•n™ÎkÞ¾[›‡m¼³›ƒrÙµ—o(±ú’Œg¦²ˆ­W¤Ê†Ía†¢¹†Äex¨ÅŽºq(©,‚tf°– u®²Ì–Ënc¸}—Òk!½ì™¨j‰³”§j¬òûdà¿Þ™Ÿl ÊË£ r†Ä@ p·L—n¬¡-†»\•t,HN˜5ƒeª¦Æ’Zq±¸f?wCævÄÉf¯~FÁ¨ó}é² ™ûrm©lLcʨÚm:¶¾š’yµ9˜Fs຾š’vËà©®„̩ϾÈǦ.{¿ƒžŸv=ºŠ› tý©‘sa£ŒáhN°Ù–×oµ½à¢ÙzT¶rxa´cœ›{¹¨Ÿ{躠àz*´Í—tsõ¶Nœu(·'žrtŸ°l˜#gp´…škp¾¶¡`wn¾Ù is;¸[Ÿ!s¯ë˜n°Ù—Xg¸›Šiƹ2œàlÁÀ³¢1xÞÇ_ª+x2Èó¨ t¶·²š‰rU¨G mŒ¦ãŽ o#§5vo©…tnY¶“—Òj:·x›Oo`Ák¤wÈó©³w+Ç˦pr ÇÚ¦»qù¿`q¸ðš@m§²÷–€lq»oƒx‘±•àl9¸Ë•¶i Äxín~È’¦ÿy[ÉŽ©4|%È»¦4Ç¢Ÿs€ÅÂtŸju¶Ò™ìl7°Q™p|࢑V|Hžˆvxž“†'m¬¨’âf(¼[œh%Ç0¤k6É¥‡h¿žgfÖ¿ŸÈna¼¢œ`n­¨«‹XVAœñ]äšA…ÒmÁªZ˜Dvz¼Ú¬§} Ý_¹§Vâò¹É¤;ô”ÖÊÃÖÓë¸Ú‡1À}Ÿx Áí¡ËvœÃj©£u`Ä2¨•rë¿y «p·½žztÊ¿Ÿ5v¿kŸUtÁü¡vTŦ/|ÇÁ¨Æ€}Ç_ªãOÅ ¬ú}"À5¡”uh¹›wnܵ†˜•jK½ž>tÆõ§æ}«É©è|/Ë ¨SwÒÊX©w“Æÿ¥fvòÊ™ªÀtÓÄe r\³3’2l®¬A:o:·ïœ¡º¼7¡§˜´˜—%t‰¸Å— r‹ÆÂ£>{_ÉÁ§KzYÈÇ¥#{ÒÄò¢8z·Ã¢šwöÁ®Gl4¾Ã›.k³¾¤œ-r·Å–¤_yVÂbŸOs9Àwo¤ÁN oëŨ•wÉ5ª¡yòÇkªÿvºÇ±¦±vrÇî¤óuµÆQ£oÇà ŸÆiiÀµ›‘j²¾¡šúm¾Âšp À÷œqlÃK¡x.ÉÒ¨¥|#Ì'ª°zîË™¨/v<Êå£WuÑų µsؾ¡ž"p÷½³zw½õ_xQ»µžs|êÁÒ£q‚Ãe¤HfÆÕ¦|ÿÂ? `ym»5˜õk¶•ži²¸å˜bqŠ»Þ›/sŠ» ›ïrXµ4–mnU¸É—pm¬¾C›pUÇž~t2ɧ½ziˈ©†|EËŽ¨ŸzPÊZ¨‡wCȘ¦ìz¾ÁGŸ$xÙ¼ž›‰oÁžlHÇò§¢w™È ¬g}æÅ<£Ÿu*Äàœ@q.ÃfœÈl0Ã%ìfIÄÌŸ·fJÆÄ¢3høÅ   kÂÀl—½›gn`·–mo0° ‘Ÿm`¯€·ió¸Q—&k0Â.žo3ľ ×p‡Â¹ž„p¿½˜ôj¶N@g‰«’Š h†¦ŠZeß´E™•uÁµ‘š~/°Û—$|¢ô‰Xn\¾…Öneš¹{LaH›sv/L¢×~Rûµ¥–Þi÷¿…žqSÁ¡+uh¼Á¢{xʽx§[y`ºŠœ°oÝ´Ó”i•«üˆaÅ«²öd®°Ê‘*k×§ {]¢à‡ÜOÕ£0ÿ`æ®Ä“ßm ¼€•nÇ´ö_eS®V’çd-±••Tmz¸¾˜Moó»™%mµè”Ðf[®¶‘Ób¶ˆ™‡ke¼/žs£·x›} µ¨˜šâÂ?¡<+¹/™pG¥uŠaJ—®w¼RÍœ0ÏfHªÔoƶ€˜‹k ¼ö›ˆh~¿Ÿ2l÷À| ?pã»QNr„¼sŸ×{CÈ{°•æÎ+¸£øÀ6¡&Oµ§”“cȲ—“Á_ò¹IšfÝÀŸßm©ÂJœ¤q¬Èr¡ÅtŒËd©xOÄÑ¥FziÀŸ²vkÉY£H|4Íœ¬~ËÂ¥žÜuZ´†‘Új;¨N‡¯]G®fdÅü¡lp8Íí©çwÌs¤PsùÈAŸ¯jËl ¶orÆadm#ÄëMm»ÄØž*se¦ÒuϺ˜xk»¿º˜Ag/»ñ—¬eO³˜dnبW‘k‰¯“Œiü¹™alÄ·+™Áw²ˆ”§lð§x‰¦`‡$z{I2}¤QW¡R‡^§¨_Rob®°”Nx:±®—wth®¿”xgñ±×’ ew®©Žcܧ؋õiØ£@†ú_/¶C•blÈâ¤=yrÀsŸ›qv´I–låšóiP‰vqšDÔË{Ê_ “À{9_Ï¥¬ün3µÃš tí½‡¨O„–­Â›÷vì°d—éió©OÍ]䦰ju®K’Úo°°`“Moqºû™ŒsàÈ9¨H´Éì¦ó~#ÇÑ£©|^»ÿ›BrJ·¨™hs¦¢Žk¢w‰1`ªÊ’›|d¦ænù¬Ô“nlKµÌ™‡v ¸Èšãq-»‡œql¹Îœ q¥À¤ vñÅr§{B¿fŸjs×À0¡âqh¾ÑYswµ{™moަ]ßh"µñ—êv~¯:‘‚i·³a’jgº¾Œ›;qÝÇ;¦Â|˜Æ:£ƒw(¿¸zö¾žº}lð¡²r&µñ˜n ·Øœ«Ž³µ›Î‡w§ë‘{}ÙŸâ‡~m€«m™°s¬ÃC¨í…Ð…³‹ì»7›Jzo§Ô‹ ³…O[%—y¢Uožø¾jà²9˜TyMÂϦ|]ÂħØxë¾€¥Gz4É}´¦‰Ò¯¸fŽÈ¬…‰Âu¥TxhÂz¤Ñp×»m›·l€²¥“ll*²%”âq…·É˜Ús½ÆHp|ÁM£Åp5¤ûq}ÀM ýo5½±›Nl_¸ñ›Ór«Y•Dpˆ£²Œj§ ŽPiJ±×—öq¹Œàx4Ãf£{|ÜǼ¦JuÎÂö«ˆ{ä{y&ÁUŸu¸¥•ôižj~´\˜Þzt[Ê®•Åq?¼ržU{¨ÒVq¹¡ÀŒmƶñ›{bô¥Î…ÇÆ®¨³ŠTÁ‘Ÿ­…D½Y™€rÌ®œÒ_Z¥Óˆ!]Ž¥ð‹çdÙ¥¡‹jbPªZ)e’´™Lps½|¢ävQÅôª?}µÉ{¬é˜Æ~¨¢~ÅU¦3hÃó xÀËœ¢p仃šÉnÞ´ê•ÆoԳŔ(p·¸Q˜nR¿ž$pÄü¦ÿz(Ël¯ú†Ìù¨„9ÄF¤îz¹Ïš'r²±{’çk_¦È‡vaÞ¢_ˆÝkC¦æ‘Øyb»i£ÌˆË*³‘’Æ=®{1½)¦‰¹(,{]°ü‘je¯“‘lj·¦˜fm » ›„k>¼›Eoú¶Ý—Nnµd–¿g_»ÕšÜfè¿Íœ…nFÄ¡svšÇm¦[{,Éñ¤}„Ä ŸwÅ¿œ5u2¹€–2p%´,’˜m4­™Œ~g:°’’6mv½!Ÿi{%¾ïœ‹vx·Â‘­k ¹ö’élrÀ¨›q¤ÄK 8o‘ߦkì½MšÚkhº¯™Ülغx™’m'µø”jkb¬9 lR£ú‡·dc¦!‹Kaùǘ m)ȱ¨x~·Ê~­„»ÆÏžT~¥· ‘—lªc‹+d›­–’Ôjj·ìŸ•´Hµ}˜¦ qé— |`°›<Ñ\¡žâ…êfö—žm¤¢êŠkr/¸š$tàÀb Vr̰÷”ÇaS¤{‰±^¶ªÕ‘]y­†”äv?®­”o ½­Ÿ6xdÆ §óu(ɲ¨æxç¾ÕŸ’tè±f™¬md¡ú‹öd ±ˆˆk¤Ëp⢢‹~gr¤{pd°§¦‘'gÈ«˜•ýhØ·ë˜3pú¿ƒœurPºL™‹m¸Z™`nR¸xšŽr…©Ë_o"œJ„f)Ÿ „ücW¤‚ˆšlS¥Œ_t{¡-‰ólˤÅ(q¯+–Åoy´¢—!iòº¢›Än&¼s™lѶΙVnQ«g” w]—v‡¬jl¹…£¨†©ÀH¦•ŧ¨ž5¿Ê4o¿‘Um;õÁtªºã™nW¾}šVlwÃ[4nó¿pµ´Á•zmî¤öŽilÖ¼!¨‰Ïš´w³Ô—%‚±ž¦ƒ¹a…›¤‚«fü¹f¤þ‹©Ð.½‰–7̰rˆÊ®¨?ßÊ¥®£w&È¥tL¾Sšoi´Å«db¨ö‡'^C¯mŽma²‘‘Æom¬‡Ki§¥,Œ¬kɤÓ|p?¤¼‰k³¤¾­g#¤yŒ j~¥ò&w_ 5‰þgÉš-{v\dœÈ|la©£}ËR¦¤F‰"Z´°¯–•ji·àšÖku¶9šïi–«2’{en¥{ˆ8\Ÿ˜ t¸HœÒ~ªe©@‘«uâµ=›–~ÀR f}‡¾ùWp.² –l<¤†ë]a˜q‡æ`yšôˆ2j≈oœQ7…øg~LχæiXK!Åt¸Ã¤QuÄ9£…nW½oœ§qL±0“*ie³Â•…iaµ«™¤r‚«–žtÉ¢Hfr¢¡‰nh¢†÷eœšéz¦PΚÏ~ÈQ©¥Vl”¯QOk…­W“‡pK®x–¿o±!”‘j)¤9†d£ •…Äj‚¨Œq ¨ÛŽ©moœ¸€cÆ „…þjP­/’rè¹›éwT¼]št(°è’§hC¤_‹A^ §…pc«¬[”¿kͤå‹1d¬XÈmô±:•Dnº5›ônh¹e›'u»³¿˜sTÂÙŸ¸w²Â­Ÿl®Ãؤ'{¡¿Î¢8w»nžëv¼²€“žg ³'”¼io¶—q©º›ªrõ»ì›)j{¼Êœ[k¡½žrn¾vœÐl­Åš[L£O‰˜apž ‡Ía­§•‘´r ·œÏ}ç·Ó›ðv²³;˜Èoû·z—VnV¸J–/gR½Ñ£+z5“©Y€ÂM¢ˆtò¦P†³W•èoJIKq¦H¢£)gh²l™9p㢱•i‚—K@`¤n޵m¯“hw?¼ö‹”»£œP‚·¨–½nM­×Žg¢Z„ÉY­£Š‡/^/£R‰ bûž›„Ô\h¤ Œ.dD°V—»hv½— FqÆÄg¦NzªÆ4«%ƒáĶ«ó„¡Àá ­w[¹Ð–«dõ¯s‘Yc(«­hhì¬%’j2²1•Úgö¸qš‘iȼ,Ÿ‹s‰Ìh³“ˆrÓ ·5‰Â™Ÿz¦TŠücÚ£k†çbÙ¡âAd‡ŸÚÐfž{…àd£ìh“ª¬ôiÀ­Y”vɦ»’Pv+ª’ªo曆|dˆ¨Œ‹=ee¶ª–àln¾œcošÀñmp{¼˜›Fl¼#š–gܽô›äc»¾¡œ`lÁô:ssß­uĹŸ?ul¾^šºm ¼™œm½cšLo'¾úš¨q9¸ê• m±/“½m©·J›Vzÿ¶»–Šs0©A†9bÖª«ˆÙf ¶?–_oÁÚQrñ¿M›Îmð¹î–/kã´1”|gH·,–si´^•ij¬Ùj:£6ŠþdÞ¢¸‡JZ®k޹]¿åuƪ-…8Ãîœd€«¯¸‰ˆg¿¥8†`¤ª8g‚¦å’spߤ¦“årÞ¨!–+zl¢?±oÁ¬w•Qk—ºÁ¤Þ¥º©‘Ú¹ž„‡»AYz‹¹’šÙo·£t†QD•h±¸R™âd»d›7lc´[”íg£À‚ôUxšÏzM`£°Š‡b³Ú—gs×Â¥ÖoÃ1¤7€/ºLšÖu¥¬ôŠŠa§¨ø†Ta³k•iÖÁÕ§ €;¼¼Èo‡¡äXQ3‘“kÕC•½wöM\£²Žh³…›ot^¡#Œ´bŒ–Ä}^1›|e˜Ÿ!„ªj¼£~Óvù±˜÷tl¸š¢qܺéšHtܱ8”m‘¶)™—s’±¡™Óv²¤šçný¢d‰ b]­^’-d‡¶%—dÈ»:š h%¾lž wóÄF§´‚·À¯žÆuŠ²Ã’>\ö§ê|ZT«F’´eï®í”~g·²H—5g1µ¢˜Ùf°´Y˜sh“£žsŸËh«5vì»Uš‹k0¦y‰q_û¡Šƒ0a墰„FkG¤¶…^eÔ¤ã‰ü`c¥MŽi§7Žle§²Žnï¤ÁŽTo}£ìŠKiɢ܆lb@¦Yˆ4_‹·ô–cmÅÂ>¡OwÔÂΡNtÁ6ŸfqÀ*ž,p*À° k8¾=žÐsȼx›—wˆ¿i›CtIÁ¾›¦pi¼ ˜…h£¹>—+h½½õš£n©Ã4ž·q?¾Ý™³jE²£’6fš´a•dsp°ÜýnУÕ8_¥¶ƒ]DzW‘ÁeaºW•i¬·"’Ïdä·{“7f«¹ü•Æi{¸ÿ•áj²d“"g­…’5i:§y!iÕ£°ˆ\Œ¤ú‚jTkªº‰Ôd›²l–zt›µ»•¬só¦F‡`Å¢g…Š\š¤„ŒxaT™¥~&]iš „åb骳˜Ózδž²{â¼G¡suËŵ‰èÖÅh¤íÉF²­â½“ž£{j¯W”®mLšÎ}6MX†…ißCÝxw’Zc¤KÈlo¾Çb~ºÊA­ù&Ê®­y€ÈT¬¤yìÄI¨äy]¾V¢#túµœšxl«-’ïbΪ¸’†gg®H•,pŒ®c•"sp®f–úo…­•–h#µÝ—Om2¿*çrô¹Lšík·/› iͺ土m´H™.tðH”rR¨ ži6žÏü^›Î~\(OƒRd»¡ÑŠ^n°È–w\¹èKw¶¶šdj}´ì’f[¤¾ˆ„Xc”­zÃWÁ“Î_1˜ƒû\£)Œ!d µé–Šmð¿¸ÉqÁÅä*|ɼ«ª„ȬCÂOžìmüÁ›kçœÏoM¹ãš%rÿ¨c]£ñƒxX’£\‚²X ¬€{_’–ŒuÄU=—j}˜Z­¯øœÃ%¿B­¬ú£Š‹ph¶§†ÏVU±‘‚[B¹\Ÿ\mX¶ã˜ÖmªŽÔeꤊ‰`|² •ShÞÀäžØq¸ó˜ŸkÔ±•§lа|•r§6©hÿ¢®ŒÁg¬Ÿî‡«cG¡›‡¬_§¨¡j©¡vŸhý Œóds¨Œ0hŒ¶p™³o‚¼Îžét‘²y—æjÓ«y’6kÞ£Š®f›™¡zµOSlÇE>—Îu™M^¨îŽùj„ºŽžS}[Á³£¹½ Yu·œÆrK¯™ÛoÖ­™Twê¦Å’3uø›q‹ar.†_q^Z†p‰Wº–æ‚ bHž j, ÐŒ«iµª˜•ªnº³¥šmµ¢™jo«]‘Éi^ªû“‡g<¶›u»¹  |1°R™élݨH“„iò0šwsK½6¢/v´­˜“fµ˜sU·“–…n·ø•”mH©á“Ènª.–€~Ÿ®‰àj¸¢‚޵cCª9” jf¤T`Z ˆî\K®”_p µ¯˜+wÚ½6Ÿ~}ì½<Ÿ÷qÉÀߦx@¶Úžmtx­Ã–¹oì¥#‘Ág5¢Ž~lm™¬ˆëm³Ÿo½tð¤v‘emɨj“bm3®[•+p´¹@™ªq¯Á.žr|Êôª°}Ê]«Šs?Á,Ÿµd½½Aœf𻮜7pd¼Ðœeq4ÀQŸbzøºˆ›®u0¿h¤¼}y¾É§‡KºYž*|1¬&’{h¹¡:ŠbdŸ–‰§lJ¦Î‘MqÀ¦†ìjÿ§²lë¤}Žçr¤=&t2°Ž”"qDÁ墊}Y¿_£´€¹¹œPyô–\ióµ,˜¨i»·ä—~i8¶E˜qlæ¯ý’ßhK²M•Nkú¶š˜ŒnFÁ‘¡»zíÆü¨Á€‘ð¤í}ÔÀG 2t—µ¦•d ©Œ eû¬ÝSq °x’>jê¦ÇŠ®Wù¡¦…j]µš>{aŠ™|¨eõ¡Œžjp´|š@qÄ¥¸zĤÑuH½ýœHig»é›‘gW»[›ÕjŒ¬…ŽeË…~T[fžØ‚_`±´–´q]½Ÿ.xUÆÓ§š~䯧²€ë»hœ]tƒ¥H„O]ç£òƒüZð¥.Œ²d ·×}y2¯à•+nŸnxVÏš:w†H¤ˆW_¯ß—Žrf¾)§€­+•n›0€$bšM€xjЙà‡jœœ!…?gn­‘“Îmi¼îœuòļ¤Ã€—ÃJ¡ }«Æx¦¼"Ǭ£‡¶¿†¥¤…ƒ¹Ù›Öxº»Nœ[q\¸Q—Ðhš¶ì”ec·˜ j5»º›ŽqºÈ›‚q䲕àdP¬Ú‘§fµ±Â•[mY´ —Cmޱ –éi>¯E”Dd*®V’Ñ_ıî‘8\´û‘ÆX{°r‘"`{­è¼h5©Ž"n#±Î“R{ôµr”às¾Üízá¿§¤M†ù¹\®€*®Þ‘álž©ÞŽ’jФ²‹Kl‚£Ï‰Ci÷­÷Œ7c]½NšoÈÄ)¤ŽyCÅ¥zðÅí£’v:È.¦Äu*Åb¥UvbÉË­œ†Åò¥¼„Û½Œšðsé¾%š5n¿º"—#i³·è•k=¾ š{sÂÓœbr>¾‹˜ng:´;“Õb<´Ö”úlǬWŽÑkɤ)†¾f†§L‰™e€´{’µlå²v…jù³uâirºs•?m ĵÐvpÁ,ëvö·*˜o˱Ε6lª¯ë“ÿl¥ Š`µŸy};TŸ'|^§/‰ˆn1¯Ã¤q1§Nžh`a3¤TŽýc˜½{,V„”qzU­¢ ‘ßn ³ç›ÂsQ»ÂÑn&È)«õ{$Ô ¹ÒˆNÊ«¿|•½v¦ª"’›kO–y~8UØ„µmPIvRzÿW©ÿ’zlǼŸœª|¸Æò¥X·Ç§©~°ÄÕ¥õwÇ奟z]ž¤ez?¿¤2{0·£›ÿl· ›¼iz¹n­r„´'š˜uõ­·•ˆq´­Ä”kÕ³—µjÞ¸™ópë±Å”"j±­q‘e»²ü”›mi·Š—œpC¹„—l µ»–7ha£I‰±[Š™š|ùFÅšü~+U* g‡—h)¦ÜKn‡¯™Ms&«–ZjÕ¦v`kTŸ‡»b£‘jzÆ_Y”7öf\™9ˆjE£\þsy­f’os]¸šÜqÓÂ_£tyœÇC©²~­Ê_­’€êÞ~qÛÀD›Än½¶›Rr'¶+œþz¨æ-i3ŸÃ€ã]_{È\†˜ïuýN—ív}N)š…=`\«I—×rw¯ ™†sŸ 8‡^ï˜Fv0Fàžã€'R°¶”Õiá®Ë—`iɦn†b «¥“¼e}¶¾škm}¾œžpr(»r›dp͵B˜ônµ®8“l_¢Øˆ¬b»žj† dY¢[ŒkjM­“½kѵÁ—Çp~­÷”Ân-¨m’Àci­î‘”jѾíœix‰ÀÑžØtL±Ö”¡l]¦ÜZr•¤“ŽWsq|„²a<––{hU°¥ªim¹«ütï½Ò¡„xl¼Áœr’¿¾ž»u2¿)¢áw¼¼u¡–sN¾R£·v|³Æ˜és~£ ŽÏp)–ß„igÇ‘:ˆfÚ›‹6i`žøŒ,kŒ¡޲e‰¯Ñ˜àl¸2ž1rIµ<š[px¥ŒŒ¼a´§ŽCeݳ˜´pš¼û 4{<¶†œ7p|°˜Fnc»Ê¡y€¿×§M{#»Îž'q]Á_ŸÒx—ÆQ¡>wKÄŸtr®¾ “w[¹D R€¢«ü•+tv¢äŽGj9¥T‘Ûm¬¨7“Çp¡Ö‹—ce°÷– s=¿ïŸ3|ÝÅD¥Üy²ÉÅ«{&ÈY­j}O»¡Dp¯S˜êeŒ§ú‘Íb‡¢$7f—Ÿ1p„¢²’Îvï©»–r±ú™În·Yš×q±¾å›îqlÂÄ …zGÆ—«…šÅj§Ëwº¼5›dN¼Lœ#n㺠ž¿r¸Àì †vüÅ™¢ßxªÅ¼ŸewmÇO§¬z™ÇK¬_yk¼QQo£¯ð”žnÍ£ž2kø¦•‘q¤±U˜Óxu¶Æ˜Ctͱk•¯q°°H–¼z]²á—U{¤¼)œís´ÇÒ¦¬zâÇm¨8~ÓÃA¡äva½ ›‚i ¿„~n¨»®›¹o¢¸E˜Âo ´G–o}®Ù’&m×·0˜7ujÂÀž×{¹ÇЦŸ~bÄ £"{Åy¡àw_ºšmh°“£pÀ®Á“õxg¯þ•ëu¥aÜgüŸZ… bb‘~/bÌš×~b”¬Ž•UpX¼5¡ÌsðÅì¦w¸Ä„£Nr‡Àv /mq½qDm{ºšmí¯£‘ l·£‰>gK¥¾Œ]e¶|™…q®½pŸæu&Å+§=xKÇ’©ã{¡¼œµsõ¤÷…Ã]ÞšòwâTh¡dˆçhI«§—Mxq¥Š‘ož ;†ßaU¨Ì‡0[k·]—Ÿm2ÀÔ¤T}íìB€Ý¶œ%tüŸZ… b ›É‚§fНk¥çŽÝl¶‰›tæh{@ÉæªƒmÉj§ô~–ËB§o€4Ì «ÖƒÕÅD¦ŒwÂz£:£ÀžŸBy©¹sšqb²é’#g4¬hŸfK¯“;jµ]—Mj@³Š•æg@°J“úg‡µ‰—Sj{º¾™?q·%˜vo1´ó—ªk²ǖ i±Œ“@e±³]”fg²&”Pe³•ºi𳤕¶o»†›DzgÂgž^{#Ìú« ‡cÔ˜»q•¢Èð¬Q†¹­˜Ël\®_@f©¥§Šèf9¥ Œ‡j¹¯/“†l@Á$Ÿ¢q`ÇצrváÅî£ÍvžÉ¨×yNËHª˜w[Ê©PwOÍü®"‚(Èí¨“€ÿÁaž sYÀ©›»k½0™àj@¸µ–ôlZ¿‘šLv¼Ä´œ veÁ~›ÞmǼٙãma¸ý–&se¬y2jz£œ„Ï^qªRŒˆj¸¸–•ïy1¹Ä•/z„¹£” svÀ¶˜ñnðÅDBrÅíž»uнS›p9¹¿™ m̵ޕ:kL­kûe£F†ÄcÞž|¨eú¢A†PsSª¿£z+©»‘ss«´’¤k­Æ“ej£Ã‰#\A—}´NAšR…$a¥’l®¶ÆšÎkeÅU£(qÌé©ãrîÆG¤:q´s™rPžÜŠCe[”©†^׋“wÀY¦“ŠbY×®¨—,q÷»Æ>v²¿7žwÔÀ- !{ À-ž¼uLÅhœ…q´½¦qnܾg£t}aºEž“wa¿•  rÉ¿-¡Nrìµô™q©û²i-­Á“ol|²?–ðl‚´2—o•«”ƒgq¨äŒOb*¯!Õjú¶—n@ÀàœEk­¼ø›k€±6–›g½¢¥‰!S¥œp€TOf™Ý|qV(›N‚$X󢪉hQ¤ÕXh>¢¦Œÿk`œm„ýb“{ìb4NyHbR—„6g¢¯†r'©mˆoΰl”Pjh»7œÌnZ¿·qožÄc¢XxÃãœ!rÚžçn<º­˜êkݸ“‡tŸ;‡dÏ™¬zPY–)uŠS½™‘y"N0œV~³PYžÕiN±­š"yr»¾¢…}!¥'Ž3g–ËxsNd˜€![¢¥ƒŽk ¥L‘a¯¦7‘Lb3¯–øjë±Á–nû¸Ýš3te¿¸ {¸†›uÚª‘QiížåƒÑ\œ=„Tdá¨à’btɳo—ÿo?¾SÞuï¸Kœžuc±â—ÓpC¶º˜—p¤Áÿž5w\ÂtžÎo^²*”k¤hdvð¡‰/uœ;ƒ~`Vö‰qg-µzží~8Âæªó‚Ÿµ©˜ái§.ˆÊOœ´c”f=Äm§`yeÆM«åwæÃ§«t¹XœKyŽ­å•{Pž ‹÷g Ÿ‘“r!¡Û’vC>ˆaŒ£Ž[÷±Å˜—ko¶WœÕq€¯\—lw¥äÍcù¨µŽýj—°Õ“ n¶²}•ÉkÓ´Ršõk—²X–áj¨¶•œ}D»þ ˆ| ¾a ÝvÀÄ›¢úyZÍ««³GÎC­ŠûÆ)¨×{ö §€²9˜&s¡2‰àdK š‰h­¤G‘7qç¡lkÈ©F’nÖ»ïœx>Èã¦T|TÌò¯w„´ÃØ©¸·œÊo¹°‰˜j§¦»’]géŸk‹:_ð ñŽšfµ£:‘olê¬Ô—&s ²ã˜ o;» ›cpÄ(Ÿ³¾•duͪtåuǬ¬–xtNª”mÚ§mÞk¡ªm­ì’n#º‘ž“tO¿«Ÿo¿Â$ qhÄ0¤”up¾¥˜tT¾£žqxõ¹°™åtõ¸0˜”t¸´™fqéµV–\v·_˜}iº„œ†q™À_¤ÔvõÅ.«|#»œ+sO¦‰7_ãå~¬Z† Þ‡hjEtñ¥ò‘qÒ©*’mo‘±x”kSÄJ£s}Ç·ª^€šÅT«Ü{‡¶²|s¥}iÞŸKЉe.ž‹ucc¥Œþc ´æ™ýp‘èz|ÊF¬"{Êç¨ü{°Êÿ¦~ÌD§å}'Ç Uy+“Ÿw ½6aur¸Ö—“qn¨(‹w`ñ¡ü…^ ©ÎYj)°—Ígi·mšül”º&›¨l®ÀÖœ@o²ÁUœèpj¼ñ™‘nô¸÷˜i¹î™0hC¸ÿ™×h&¹ ›¾jí·Æ˜Af%¹&˜Ûh·9—þkúºAšnlÿÃ_ “wÌÔâ¶cÛFÀ|”:ÍE¯^~ÄÀaž“n\µ–†j…ª*Âf[¬Ï‘“lKµê—7qªÄÚ¤šuPɪ uÊð©@xʨ wäÉ/¦ÔqÿÉÍ£HrÇÊ7¦rWÆ4¢.qÈÁ·œejÀÒšrh¼Y™ƒh&¹ššæky¾Î›utâÃTvZÄ]ž q˜¾%ž!s”¶A˜Ÿuùª°ŽLkò£[ˆ&aj©üFh`º ˜ly«À›%~l¿¶˜ßtlÁå˜6lYŇ›Ýl2Ŧœ€n㿚Ýl’ºÉ—êkú٘ðkiµ˜ŽmÚª‚¬q 3„§pf£Ú‰‚wV¬’|}Y©Ï`sÙ­G’Œhæ¶`˜³ld¹tšÈfª§è`ËŸM‰bd!¥MQrË·¢šÿrÉè¦8wÕͱ©íw®ÆÌŸHvM¥ùŒgg]—N€6Z—z„Šh®–N„}lŸ2‹Sg›¸ãžûw¹ÒœÛl7µ —þg›µó—mtw¸¨™Šrƽê™Ål@³—QZò¨¬­^¯L“n`¾á§rù¾7žæo2°¾“g¡¥‰Œa¬’†j±´•.l›°®•hi;ª‘½a§ª‚a‹¶·”Øl¦»î˜Gk®Ä4žtk™ÂŠžm½úœ÷mç·Û™1g‹©g¶^Ušæ~÷Le”*ymFà› †Û]Å›"…2aeœ3ƒc_v—M{X£“ùvnWì”%zpa˜P‚f¢¥—‘erö§É6hÓ¨Ú‹”d ¯à‘}dõ´”*b{¸ç–•ha½Ë›o;Áž%j´N–c¦d6š]pR(’s¶Hs”«v=W¢}‰ìbj«™0h¡ªî’+pÛ¸Ëe{ûǠ}ࡇU^O“8vEH¹—­8\7¤Œh¦@©]¥ãÈ^Ö°—Þo“® ’\mʲ֕Hq¢»¬žQ{Œ²ƒ˜Îq.¨R6fRŸ/…M]ë d‹xoT°¼— }ý²ç”bmø·à•ðiC½§†vò»Raw[¿XŸ2yÂ%¡GwžZk0²ý’"gŸóƒÂeª˜t}ñaˆ’XwøL\œ^Š…f¼)©‘‰ø¹µ¢ýa£Œˆ|Uäœ}x{CL¥3†ÞWšÁV¢éxÈa¬‚{~¾üŸŽt‹°—q{†¢3 ty— 2\£Ú‰—lÙ¡ u¹Ÿ‡‚HV‘¥‹V‹¬$”#j=­[–Kf)·ºsp¶kšzr±³*”þs—±š­oH´“âj²~™šk}ª¢‘Üh3¦óŒXh6°î“LoἿ4w…Å £¶wrÈN¥Ô{ÃÈ~¦!»ÇB¥ÞzÊÃù  {€·ô˜q¹¢²‡Pa)œÃ„0_Þ¡½–pu z‹§k- }ˆzcô²z•#p¬Ã½¡Â{ÃÆÑ¬³†Ž¶T °}þ³Yšp#²H–LnR§Ï‘%l2¡‹­bQ£öDc)¦)di©¬‘—h±Ô•m๙üm!ÀSœOtª´º–p裌&kÙ­G’Œh-°¬’[fS®B”ÀiA —‡`<­µ”gEÂ!ýlÇÝ r'ÄÚžbv¬¾C›pโ™×l(°»‘Çn#ŸX†ólÁž ‡†j§WÊkw«R‘5h˜¶—pº½úœ#xNÄ6¡bzéÅ6¡úv:È=£ry*ÊD£JyhÇžžWrÂÓ›9p™ÀQšærAÄ]›Øu$ÁϘ¹tó´•üo¥®k¥[ޤlöµh—ât‡Ã¬Ÿ'yŽÄâ ~r´»ã™ÎgØ·j•´_£¦ZŒ?i^‚Jb€¢¹‹(hפR”bi—¥vtl«ÎÚo‡¹¤šrt?Á ¡æq Å?£Žn“Ä%¢¤p5ÆK§,vFÇI«yd¾wž‚zˆ´Ð”qü¹^˜âq­Á Ÿ¸p÷¿œÛe,ºšŽmÖ¸@œÂvè¹|¥?~[ÂF­´€º²œ‡t™¨ Ž»`¶ŸÁ„õ[CŸ{‡ÿfú£îŒ›i8ª“(p§¯ž•ŒoO¶x—¨lgÃÖ ¤y>Èd¨Õ|gÃÀ£ap®µ¿™çoŠ¥»×h¢ŸŽGeÒŸœŠaZ¡Ý†ŒYW­‚“²i]½ŸÝr"Æ+¥t\ɧhxÄÊ5¨ï|(Ëg¢zz1ÅèžuoâÀòžêpœ¾âœ¸t>µK—˜oh¢©…·Z(Ÿ‰‚§Yô­Ð“&rù¶˜š€riÀ ¢ s|ƦíuÿÆ€¡#r£Ç  ×rYÂÛ›`np¿‹šÀjB¿þ›g+Áž4i·À¸žli À¤plm¼*šk¨¸?˜-d漇™_ÞÅÙ¡s=Óh²:ŠÔ±gƒ°ÊÑ¥ÍrÕÁ Ão¸¶4—Gn]««‘ij®z“5o<·í˜cs¡erÉÈ §ísPÌY«yqÉl¥et“Äék¡ÄœÝh‚Åvž0hÅìžJjšÂÀœåj~¿˜š—iíºÌ™hT¹£šHj8½ŽœpLÄ¥Ÿ@uDÅ£  rƼH›Lo«¯/“Àlú«¬‘2kl¨–hA«ôTi¹†˜ÒtóÀ!œxÂNœTrÔÂÜ›]kĹ›¦kÁÅœ n§Ãöš/nŒ½ ˜mm¢»k˜Zm¼̙Înc±°’þo£¥‰ar £|ŠˆuC¦¤Œvc¤Y‰úo]¬|Ž—fú¶C–æiÆ)£1mì¿Kžoº·LšÁr·‘kzmÀ´¡ìwáÊЩV{b͇§x'¿s˜ol¢n† Zœƒé\;¡ÍŽkqAªé•‘{<¹8žò}QŹ«¤‚#·Uš1jÆ¥¬‹@\ò£VVn¨k‘ùm«Q“uhO¡ƒòGZ—isÃBv¢†øc~¸¶™ q$¾žóq›®]’×b@¦ÛŒ^5¬Á‘³h ³q—]n£²³˜×h–­\•[bµ¯q“äb]½Nšo8Äœ—l¯ÈÒžBm:ÆTžük,ÅŸž n5à ŸGmùºç›[jÅ¡‰•V8“\xšIe“Kzp] ŒQqiWtFX–„y|TÖœG~«Sn¥ô‰g‹¤¸Žœlp¯˜·su¨Î‚h¢ì†ë_ʤ©‰ð^­ÌŽ5cµ± ‘Çg³·@˜¸oɵ¾—}k¬±:•^dó¤ÌŽ^ø»…­V€•zSOý™ `Eª±Ùeü·œ¶pú:œ=r¿Ÿòxã³ —u2–õwZO„Šk?DS˜¹€ï^­©“ñg­/•Vbô§¤”©^ݱ՗oÛ­D‘îfù²ì•o×¹íÖy ³`™ÿrÖ«ê’jó£z#g™§¤‘Ari»Aží›µü”.n±;ޱbŠº¼™q²ŸŸu^ÀÖžˆu¾`ž8u‡½ä›@m±”Ëg ;„“að˜2~p`\ŽtK:—s‚][̲‡œ;|i¬,–›m î†;W©›t|¤N¡„y\>ºYœ¨x#Æ£«£j¹˜vú©e”–s­˜Ö„j¡'wóU3œäˆ_q~£”Ž6x1£R†¦b‰¦5ˆ«_t««’JjS®— `Å¿¥¡»v¤Ä§¦|m¼å™Çtr¶“o»4šorźž1y@«®‘“i0 ‡€tOªãŠû`9»7›bsoßpÇÀè›qÖ¹…—jn×À6›±oUÁäœýuл¤šïrá«)šf3 Œ%eਬ•ˆvb¢ŒGgúžš…k^þcç²;”®l¼î¢(‚V§”p,©]‘i8¬D“FhN¨š…hi«’‹gPªÂ‘ñg© ŒE`ö¦‹¸_²•vl¹˜hnyº—ºp¼­M’=n¹Ÿd…hE¢ˆ´h)¡E†eXq¢þˆø_—QwDNŸÖ€á]M·¢–Õm Àœtr·¶•”Ãm¶§”7kù³(“UkM«4Žk ›£ìaš›ÚýaI¦þŒ7g†ªõµgά+e°¯p’gX·–äcھ›Mm7¿ ›Qp1ćœŒpûÂzœÇlÕÀ2œBrã¾]›]xðÃËœQyj½Ø™ýoô²|“6l¶¦ާj›¨ÞÁm;²À”Dní¿qñuF½·œ·maº±˜^ªÃŒTSœ¹€o^lnLš7"^:¡zügТñp¤­ŒäqÀµg–(tÊÁ¿žot&æ¡ðnpÀg xhTÇɨp„ÅU¥ofº‘›mÈ¥ë‹d³¯T’ hÃe qåÅá¢Jo–ÀÙŸBvú¶/›z½·—£œƒl¾¬ …(°­šoÔ¤šŽ÷a¤¡Š.`¢¥i%¦-fh|¨Ðåi·¯Á”kkš»ñšµoÇÇL¦K|„Ƥ#væ¹w˜)e®X‘1dð¤óa죞dލj’¨g´«NXô°”*iA·˜™ o²Âº  t±Ç­¤Jx·È-¤ôyàÉõ¡dwMÁ;š j2¼—šÊk]»gš_s«±h—Òp½¡:‰f`Ñž„ÉZÙ«‘oµ·™¤sÃV ºqûȬ£ZtÔÆEžIo,È® ´q9ÃWœ|m較˜+j‰¼Õ˜]g8Ã`GioÆ”Ÿ*i‚ÃöžÑlšºR™zkœ±ó”4c*¹Î˜—]nÃýwj2Ëe¢¨t˜Î"¢¡oßÈ5Ÿlhþ›”o"¹y—vmҬߑ0iØ­—”ðlR¸×™´pg¿lÏmFÇë¢fr£Í>ªf|ùÉ­¤¿v´ÁMšffìÀÿ˜0aÑ‚›d㜂i–ÀÔšDk¿Ôšìkˆ¾S›jÔ½œ]hÓ¾Ãík‰ÃÇŸøq§ÁbqÁ·€—?o³©Ûƒf«’‘_fç§E§^§¯‘_|µœ—(oa¿ŸšbuáÁYš¦pÁÁf›.m‚ˆœÚnUÅ7×p£ÄŒ›øjà¿™˜mhÛ½j˜ÓkÓ¿‘šnA·6•§lŤ–ŠzlU¡–ˆyp³¤¬Œ{sª–WtG¯ù”øo¹¥™o¯ÈG¤´r@ÆÖ£vøÃk¦àxöÄÅ©(zǪ~zHÆc¥­uÉÆR¢~l‡ºÌ˜æaæ«‚Ž.]eªw”h²`—Ctw½yŸá{~Å^¨­€Æã¨ó€ì³8–îj‡ €£V›”òzbššž‚ f‹~öYp4d°>ëjG‹ ††qc•²¸—=r(½Üžv¦³“–g+¬×ø_Z±•¦lAµ_˜Op(³Ï—(h^²(˜3gëµÑ–ŽguÀ»š–mÇB_nËæŸÐqÈAž)nÅ%œ nIÄž q'»õ™æo3¨0ޏ`Z—D†Y ‘°wL`æ‡kÅSŒqsìZ(¡°Šøh?³×“e«¾\™jj¸™bké·x›.q–°’”àn2£)Šäe0¢hŠ?bì­1“Špıx”™tù°‹”‡rµ±¦•ónέŸ’=i¸¤Žkbe¡Œbc|ŸpˆŒb棗Çeo®W“f-¾OõjóÂJ ‚mÄQŸxuK²7sŠ“ÜqLW.‡Ôh¿Nh›-‡)j“±Ê˜¤g9¸DœÛh°v—Íg¯ü•øg¦°º–Vd¿¸²œÈp¸½!¢˜zw¶p›âsó¬I•ìla§¢’•jS²Ž™tœÁ­£Ð€‹¸˜tY­+Ž(k+º¹™MsÒáÝs ¼‹šñl©¶|—^jŠ·þ˜kƱ¼•gQ¥£Sh2 9Šj-˜‡€xb6™Î€O^K§¾Ž©h¥¬Š‘èc”¥Ñ‹ a ãƒ¼[!ž‡U“²b—ÆqÃlªh€üÁî§ö}«¥¥’ãr”…òh1]zë]檎jx ª±“X|-®4’Xm§®K”÷lij­˜lnB³ –Óe¬ Ûr,È»¨(xyÀuœep–¾,šÉiHű qùÃÌ¥Z|ýºõœßvº°8’Ndżõ—Ÿmeƒžst­Áèœ n ¹G–i±Ù‘Âg|°l’nhF¼æœ‚{ØÁPŸmqe·Ü—ÿen¯˜m浦_wl¯ä•g¦€aö¤ÒŠÒb€¤‰Š'd¨Ü‘ÜlÓ l‹aeÑ §ˆc-£\Œ`/«~‘RaZ±ˆ”e†´w—ok¡°=dN§'‹Ta½´…•.kOºÃ™îqÇ·t—0u󪉔k5žÑƒ gÓš‚gAñ…Øb-¡‡g]¯ž3~\¢(„äg¶f—¨tÔº˜Ûo«±Šlö¨õ‹Ág³ª©Žm0¤‚‡Áfp~£^$Λ_‡ª$’lJ­›’´f¾¨=c9¥Õ‹ë\†­ñ‘ï]£²2•eç³O•±goºÒ˜rh»¼Ÿ™Ìk*¼+™(p*¼û™ÿt>© wý»[›ólð®*’dÛ¥°Œc£¦Ž”f®°ûhŒº)™>nÞ¹Þœ–mh¶—ËdӤŊ¹^Ë—|}a…‹fmRe’bwƒ]/š›‡!jüº‡¼n§šþƒ‘gú¡ã…Ód³v’šo0¹Eš¿pª¸œwg{À¹¡‹kô»(œ~l]®G’˜eã é†“[J¥w›e¡¼Nõs—ı¤fxÀÀé¡ò}C±Ñ•,t#ª•‘Çp쪸•+v¢&mmB âŠ»j ¨ï‘'qª/’¡m?ªn‘´gÿª­›c’¬~‘ ec·ß—ÊkkÅ;£fx¦Ã èr³¹’;`§{Š™Uœ§ô\4®–(k²ð˜!nT³“˜Æf$¶–™°o+ºvšs%Àuž«vøÄà¢uzïÇJ¦ñ€SƱ¡ÜxY¿²™™lyº™do¹-šÙwf­B•[pšžHˆ­^pŸ‡K[ž­ó_g¹%™gq¤Á}(qŠÇyŸv•Ä"œw[ÇÈŸ—r.ÀÆ™f ¿B™c«Á œ¯i7Ârœ l³ÁÞ›AlK¿)š¬kÒ¾~šTi¾2››h×½Pœ´j¾¬›»m0Á{š²roµ•Cmq§òlf,¨‘)g—£´‹Û\-¥ØŒÂ^·Ò˜epÛ¿êšt"¯™.s,¿}™¿p¶¾=œfrÖ¹ ëx«Æ³¢"y]¿§˜»j}¼ •âi@Ãá›3t¸À•kí¢Éˆp`úž‡ŠfZ¤¾m#²­˜Ðv{ºû›Gwü¿o¶uØÇQ¤wMÉN§®{(Æð§KxgÅf¨tuÙÂ¥£Fuá»]›im„¼oš3f¹á–^?¸À˜®j ¾až1x´Àx «w³Ä ¤v²Ã¤?v ÁÑ¡ixj³æ–Ón9¢†‰Cd “Þ{„b˜Ž_uß_#‘fsd^Œg Pa’MnÕK¿¡GŠa®ª–)s¼]ŸÀy ¸‘™êj–¶_—©f^ºY›–pÞ¶ß—Ân询’©bÚ­_’2a´.•žhuÂb›o‚Ç7œ¹l{ÊùžÆq)ÈÒžƒp`Å$žtöÂŽŸox·Œ–Wp¨«9aa›ì…ï\¹’~|Ž`qŽŒu\^¿•僦lú®šxÅÀäžzlHÊð£In?ÁRg‡¼ œâj¦²¿–´or§Zi ¨É&gí¶Z›xg²H–jw±©F|pu¬s“Ut«¬¨lkh¥w‰iƈ¬`xx„Q\Ûª:“¼jà°/—Zmÿ³·–£hµÁÃlSŘŸÂuA·™”Gzá–Hxftx¾h’¦Ð”áx·›Òkj¾Fž3r ²˜†lh­–Ài?°Í—mѼ-¡Lw©Ã«§}~ë¾ ¡ÿxP®×•çml¦C‘°h °@—Ak¿Î ˆ{¸¸™ayW©Ç¨k#ºišwt'Åc¢Wuw»™Yjw°å‘ù^“¸:™6g¦¯ï–Úf ¥k»dì ‰Œêiž2‰vi'£GŽJj®s’$m~·²—ÜmE¨wŒdsšïx·M<™½uæFǯ”ójÀc¦š}û½ø¢g}[ &ŽošŽ${±d%Ý{,b–•†‹hc ôŠÅc µ ˜¦‰ÑX™²p’_grÂÌžžu«Áðžæw•±:“šlð§–‹\¨® ’L`Õ¶í™r§º2œªx¾oœÒxÿ¿'y½Ç™uß¿2žlvÄ¡—wÃNŸ©uéÂXžt½˜µiqºQ˜pÞ¹7š‘x)¬Ê’Œoý£™Žèk¨s‘Ùg½²¹–øi|ºyšók†œ l•Æä«pôÁR›0m¾â™dk®²Ë“;iä¥è‹Žc®§"÷bH³•”ßjÖ¸à–Àl"´q”&h«‘ûdœ®ì•+k»Ê›qLÃ%`r Çs r©Ä»žoonÅÄž+p Ã÷žju}·«–;lꨅŒGe)«M×mn·Ò™µu(¿{œöqnÀ5šÛiâÀ™ÕfîÁtšÀhåšœ`kµÁì›Rk›Á´›Eo™› nÃÆ›$käÁ›kÀ·š‹jÀ¼Ž™¬f»š¡fä¼B›i=»Ñ™®e«˜ê\¢[Šo[|¥‡i&¤%ŽZlZ¥±mg¯³¤–žkÍ»ú˜roF·×‘«k¹´Q‘ÇkV¸—˜Gr}Ê;±°‹ÊÓI»’Îà  Êw$½u—+mŸÁ!› rZ¹è—hk`¥ Œˆ^ì›öY&¢‰˜eÒ±ƒ—Ìs½Ažüy×ÁΞÓx7òŸútžÆš¥þ{ꦆy†Â9¥9vn¾ßlrý¶¼—cj—´”§^¯F4WAµ ™ôk–À>¥ÎzÇ©…y¦ÆÁ¥ÑsªÄͦîtD¿ˆ¢Øq¶„˜3oPªÂ‘ñgl˜QƒãgÛµwªe4’†wNjù“wgÄšf{^YM¤ØŒ*if¬²•kt0ºÈzá¶Æ˜yl“¸u™Ši8¾Æeor¸ð—rjÁ¯ì[o©r&Y®®ÈÀcåÂQœÌoËPŸÄnÐÉYž‰m©ÇuŸÌoÂæ ¹tî½#Ÿçx-µ”Ïf‘¨3—\œ†^YÞ”-€Üc!•t\gI£”SuJ»_£ÄzCÅ)¦†oÉȦˆmkÆ¡àifÀž•jްª–6q¥>dc¬t‘¥fW¹$œ¡uß³—ˆwî¨ÚnШ—‘r8ªF‘4j×¢ô‘„k¿”'}µVR‘Œu5H£Ž”gž©A”6rv¡`‡'b×®èŽÑb³ºå™TsN¸0›S‚›'ƒ•p˜ æu~·¡3†Ž»JrT¸©—ƒiª®9”dhˆ©Ž”âh”ªÄ•×lH·7œ tÅÀ¥¡|.Äl¢štè±b—ëoÑ¢ІdŽ£ Œ‹]¸Qœ©tC°d•‘ov¢Äˆ³]ú·™7m6Ť Hr ¾ñ™±jy¶à–2i"»ô›Œn޵ɛn®©c’ðl žu‰ãe£—Á‚h_“¨““rù»FŸÏ{ÉÀå¡¢xp®ß”$keŸ=‚Î\Š¡Û‚Z]ä¶{™ôwɼLŸ>w‚¯§“Mlm`£‡“p%T­Œåwå_M”é‚“hm¢àŽ\Y4µy˜fi5¿¸¢u²¼=Ÿs“¶>™çfŸ¸)›løÅШ™wƒÄM£ãpQÈH¦¨s£Í®¦}ÇC¦é}]âü~‡Å·¥!€Uɼ©?ÄÅ碜u~¿Kžwp·)š-vНª”²m¹R›âwÀÄ×¥}XÇô£Òs•Àœ-i0ÃK¢lv»Á¦£E{ ¿vŸÒmë·H™'d¯¬ð”ŽbÛ¦’÷h>ª‰•Ôq¨N’”mº­Y•¥rÿ°~•šo³”Žb»K˜Zcù¿û›êhÃäžNp=ÃvŸ¦rÀ€œ¨lÒ»™†nÕ½à›övºØ›áu”¬?“+l¯¦“o.»óœ<{G¾™›s9À‡}x˜ºu›£xç¼ç›´pÁn‚oнœ›jq•¼ xK¶}š>rä°˜– eÅ´—™òk¹“œŒvš¹Ó›Us¨¼\ s¼TœIoö™×g°ó•>hÚ¯ž“ñjµ–äkíµ9—Þlô°Î”hi­°Õ”‹j_²‡•&m/¸š$tc»vœiv¯º)›w,´–äp)­–ëo¢³Î—)vŸ¾×žay½0_o$¯í‘‰fÔšP€•\`’R{†^җЃühä—’òmn‘Kufe¸ƒrîXÚŒ|oKô×wzTª¡ëŠSh"¯¸– m¿²šo³K—/sưÀ“air¬*‘ eN±ß–§o5´³˜1qà¶S˜žmR±z–ßoÓª ‘9j]¢óˆa8£)‹Eg±©€‘ón)¤‹yoÈ ØŠ¨m´­ì”ƒx ¶Ù—ˆsŸ¹ò™s•³1•×p}¦<Šc¶°!ašÂRžvWþ£•½'žõ„œ¶—Cv°`‘•c(±B“îhjµm–DpÂèžÔ{ÕŪ£M€‹ÃÑ¡˜€;±Ÿ{zÅÆ£sxCÄjŸ(s²ÂÏoa¼á—Kkä¸N–Do`»`›±u„µB™hrC°v–Hp²¼–dm´Š–¶jW´£”Åc-À¨™úgƒÇR«m¡ÃÆ›ºm¾/šrö³–zru¬”Fk¯}–ùj{²û–/mc°“—i4¨yŽb©yf§¯«–kÿ·™Kl¢Àœ¤s]Ãyž/u Â×nlÁYŸqmuÂW¥ÒtL½až:q´V—Cj@´™¿p“ºXïx6¿Ãœ s¾°šîj›¾1™ûfÀ›îhÕÀ kœEl„Â~›Ær—­šýrÅêš·qÑÊš¸mÀÀÔ™Ägò¾"š*hs¾LšhɺX™Écβê“áY{£NˆzR8¢V‰à[e§¿6k«’ãr®Ÿ“ønó´‹—†m.¶•Ãm¿«òŠñf¹§5ˆd-®šlOÅÑ§æƒ ÏÆ²ä„È£žJp¾$™ak€Æ¥ŸósÆ¿sq:°i“ÞkÉ c…‡bÕž…pbªÜ’n”¶•šÇtY½5œáty½è› sÎÁؤ%zPÃù©UzYÃ¥¦Ûx¾:sK¶{˜¿hd¯¤q[m©ÆŒþW¤°P—¨lC¾?¤ýyoÆ3¨‹xíÇ(¦ÝwÞÄØ¤Fz‹¼  s ³¨—&kº¤ûˆMXë”oxÑZð”z«f‡œƒÐmš {Іnó©¶Ž—e,´—3s+µï™gz"¸ôš`wÁ±i•©l³Ä–±j~¾”Ìpñ¼Jš lÝ·Ä“Ða¤°Mq_]³©“0g§ÅEŸúra̹£÷pÙÇw¡ym£Ãšž¦kο©›÷n‰·—øq¡h„ï^iž·PÏ–ûy@N^‘HzÐb|™ðƒiž­ã—tdÀ|£Òy`ÀE¢au9Á˜¤±uQÆÛ¡µp¿¿›/onªm/såq„ì_\£‰`[²s–au/´™±{´¥âhÀ¥—Œ'eǤdŒcb¨žÉˆÙa±Šör†Oø£ehCß”G\[œÂ‡slÄ”HxœX•žà‚u]§¤û‹'iB¥®Žšsíš|ƒÛl>­k˜$‚—¿ã©˜ˆµ¸ œ9nt¯ ’š\ì®N”¤eA§Ù‘tfn¤ ‘Tk‰­•AlÊÁ¡Ïy{¾AœÂmð¯h”MoñŸ£†üdªŸÎ‰ cZ´œVvÌ­”ºi%¡4†XS ¸‘™êj¯ÃퟵnÀ¢›Ðmü·^™ãsa½bžRv¸åš?s~«Øöseœ ‡ùe«•¹i^¼±Ðû~oÂë¨Æ}ŪOx¢¹^žþn ´•—×q*¸šFx"Èଉ¿ÊžŽw}®\‘­a™L€×W—†øm’K+ŠØwD^ÒœôŽÑt­¤•±o´·†˜”kعó›QjY»³ƒoÓ¶¢š(g¿²ì•àd㺃› kKÀ¶ž9lÈx§ÖtÎÊ®¿€ËÉ;©~tÇ_§ÇÇš¦Í‚ŒÉ~©•¥Æ ¥ŽwŽ¿Æ²xR·š}诺•wS¹ šŠxŠÂ{ŸUvÍÅРrÍ¿2›Nj'Ã1¡p°Äœ¥7{Â2£Àq"»r o©­/” c&¥ód=¦Î¿nî¨ÈPmQ´@˜äv½¶„–mzºq—áe½Áôœ÷l©À ›XjuÅ“ŸzoÅm ¤pÜÁ<èm ¿zš8nœÂ°„y÷¹Z™ty¯±o•"rײU–>o]À¹ž%wyÄ isJÆÞ¡‹vñÂþOsÂûœšõn@¼ê›#t|¹œ‘p¹:Ül½ºLŸœq[»Jœ¥s$µÑ• j-º›?k0À( nuÁ-¡fnÞ¸Q™j*µå–ÃjĸW™pP·¡˜Çq—°…•îk}°ð–mí²¦˜2s-¶ÿ™„t§»;Ötê¿´ž[tc½ø›’r™·¶˜ o¼y›ºu¹½œ3t¸»Þœ–n"°Ú’‘i'„‘dþ•¨ÛbŸ*Êm‘¡ÃÝrs˜›ƒjmh”†z_ð”e{;ZÞ•Þ…>Z0ª_–¸pÞ´Dœ®uƱ7™\v²µ“tsÙ«îŽehŽ«a‘Nlµz›ùw ºqu•¶š—ûhϬâ‡_,¤o‹Ë][ŸÄˆB^*¥Òåj毘=vLª®’%pz¢W‰žeç«<‘‹lźš™·qT¿‡œäuÒ»œfyU°@“èr×µ8–÷pâŦ ƒŒÈ﮲£Èj®‘;Ãé¡Þ…²"‘Tg®§7ŠQ\ì³ï•‹i³Å~£¦xÊR©!±Æ—¦8ƒàÆã¤;QÇÌ£ù{^ÄF ävÂÚQoÖ»¡˜¿nëºç˜^u¤Á¢Ÿy©Â—¤?y¤ºZœq*¶F˜«lJ¯—’gÊ©²ŒS]¶ª“pb¬Ãiœ™oÅžNqì½÷™ïp\´k–®pKµâ›žs5¼¿¡¿w¹ºÈXw)·¥š.vR°9–þmó´G˜Åmº×™Ùl ¼ë™OkW»m™ qÈ·´–°o–·–iz·ý–a°À® ÕnÂõ¢nr!¾•ž,o(¾Ÿ«rõ¼,Ÿ+xºS›¥r°»Mšbm*»v˜¢iÄ¼Šš or¿7œ~n6ÃIœjnÄC››r´Äçš=tÒĨšxqéÂ{™Ðkß¿±™]iq¾…˜fQ»Â—Çgc·Ý•ao§6ŠïPÿiçN¥šŽ†f¾¯M—§qâ±]˜?w~³õ–ñrtºRšt|¹"˜Šrm²w’‡mm¬BŽŠi;©RŒkf¯ÙqdF²L[¤¸’•£dÓÀ‰œ(mDÇx¡ùp¨Æ{¡ttçºÒ™Us]«ÿÎkX¢W‰à`ʦ§Ž–aÿ²¥–Ài»Ì™Zm³ç—r¿á¥^ywÇ•¯|FÄï§Hw<¼mœMr3´¤–¥h¨®êŽ¿]7©Í‹M]=®”|lÕ¾4¤}ÉÅA©t}ùÅG¤e|À¬ï~k¸¿š|sù°ñ–ÓjŸ]zK~àlËE•æs‹V7›H¼a€«”&q£¾® tÃî zE¼~œ®v×±¹”Fkÿ©×j¯û“@o¼»kšqÀî›qo˜¿Ø™²nW½ –íið¾Aš[l±Æ Ÿ9pÈ¢€qQÂÞ 2nÁÀêäi¯·‡”øbz¥Ô‰¹c蔺vY’p‚H¡‰ûh`H†kçSŸ“’|ð_„¥¯"kì®¶“Žn­¬ž”wÔ©k•nu¼Wš0s´q‘’md¡ç…—l“––yf`ü™ }ª`x¡„ˆ´p›¥ÅŽ¢u˜„\›Ÿí‚Vu =…Š[\™…òa=›v¼ZgbhÅL]ŒÒtVZO“FyVfØârr]¨—Ö|`3ž$„œbq—ïx3Uò›Â‚ëbµËœ”|à­>‹7º¨Ÿ$z,ªÍ–`˜®È”Ýex¨3”Öh›¤´’ølʪѓxrÌ´Ç–çse¨ ‹Hb©‚ŒÎiߞȈ f>š]†×a³Ò›dzɵ¨˜»nȯ ‘aQ½°pxÆ;£_rc¾™o¸«›Žbh2¨4Œhhl«±’ƒoÌ¡/Š¢g—›a…ác]‹~iº ¤ø€&Áû¥x¹À˜£‚p¡½H -oN½ÊžTvÒÆÑ©©…îËò¯³‹¡¾œ)u´¯ÌTcµŸÁ†%_Ȇ`nœI ‹\zœ`•®œD¿S¡ïy,¹ ˜zj\´å–Œcc¶-šk±·á™h/´å•›b¶–gνmœiçÄÜ¢|oƒËí©Õ{5ÌI­9ðÊS«þ€vÈݣ΄ŸÅ|¡†`Äé Ãxõ½ðšCs¡®ë“hrl©·’ósu·3™âx&À¬œÇt³Ä}ŸDuNÀ`m‰Ã< Ïp–Âû¢@uSÂV¤:y1ÂÖ¥0z±ƒ”Ìg ¥`‹eŸ¡%‰˜g6§‰Ž l¬›‘mkE¶ –{kž¼0›™q#º'›·tS¹þ˜Yl1Áõœ3pÄ às·ÃŸ+o¸ÂøœÅlˆÃxzw‡·—M{$­´’òpk³‰•»l¶ÁŠÿoºÇᡵmuÈû¡¼m|È 2nˆÄ2œrg¾¼"š¶iœ´”—ãn´W–fsT­—”§o£¯A˜*oѬs™šqì®”6mc¬Díe-±Ç”hº£›Àgª¿ŸžiÖ¸ —7jÛ²(–Cl½³ ˜Vo6²Ù–špo®í“n³¬ –në¬ú–zov°u—q³§—ìjf½õgk¾Ói·½Y›—hƒ½j—‘km¼™—¶t´ºš!xo¯‘élÙ-„ïcè–á‚baˆ˜¦‹Ûf-ž¬Ž…ht”J„Æc¨—ì„xi·š ˆšfp¢ñýjú­A•kmPª’£mZ¢ao· Ì† i·Ÿƒ¥d<£ÊŠklí¯—@s;½¡Ow•º-œLn£³¸—Žl ª:“ië§%“k©)”áhª”ÀgD« “hq©¾ˆ`õ°€“ff ¾”šÊl€Ähž;uâŸÍyt»›t;º.š5wŠÁò¥B‹ÃÍë¼¢’AÖ»Æö~Ï7¸Õˆí³ •qá©"ŒÙ_²¶§˜gc›ÂIŸAm‡Ê5©×z¸É€ª-}xÈ×§bxgǺ§Ï-Ťæ~4ÀÖm¹—`h¦º"šŸuÛÂ`£Œ~žÆˆ©€z¿©Ÿåsö·ë™×k'²n–@fǨ»ŽHZ¶®‘ ]ø¹˜)e©Àw‡k~»·˜¦i(«–zd ­—’Ãm€¸ÿ›½vн;Ÿ“yX½§Ÿ z{¼Òž5z/ºêšjr€À·nžinº×—3nä±ì’Vo·¨Ý‹e}®¶‘ágH·*š–q¹UšHpí½äœØr쾞œCq ¼Àžrz¿²,™rN²2–iⳕ#kV¶Í–v¥º¥šÎsÁÀ‘›Ÿp5Ã~šr‰Åd›—sŽÆpœ@o"ÅzœvkóÁš h7¿/™ViηY˜¨mŽ«ZteçžV‚ƒXhœµ‚)a«ç“7p!ºôxr½qžwzi¾Ô§xë¾ œt"¾{™*q»%˜eo¡µ–ånŸ®q’êlË«?lå§Ò‰Àfy¬aXi:´(—l'¾4Ól±ÂüžakÀFžPnSµ£˜ókÏ¥0ŽébФnjða°²¶•’hø¾~œm¦Elhµñ›†wÆ—«’€0Ãl¤ÌxX·Ä— m0°q’dW²’èc¬°*‘Sik³–t¾¡Í}îéxFÔ¥¶}n¸ïšD{–¬–“£lô­Y”ljGŸÊƒ~V3–ÑsDÇ–\uÎQBœ½€Ác"µ_›`€EËñ¯Î‰™Óޏ8ŽPÄw¨±L’kcH¥y‹Ðg¨m´má¶y—únN¿#›=n¯Ç²Ÿ¶w‰ÈŸvþÆOž¨m4È¿ŸómÆŸÃr°Á œƒoPÀÖ•‘fŸ«+ˆ˜Q?—2uaQk‹ßhÀIóŒ6k.Ir†sgÀL-† gÞNQ‘ÀtUþ›M‚®^xŽeaÍšä€ýh–Ùy>Z*¥ñ…Ý\[¡Ö|rY—KtA[–’ÌräYD—Ö{ûeP–‚y[g4“|u_ŽšpI«”âx÷O'W…{a4¡®‰_g,šð€®aU’z‰a¯’TyW_’íp¤RƦoWR•jzSb)™Ía‚–3w:G¥Ÿz‡›_Ʋ¼˜ûw,¼FŸ¾„·TŸ‡X£ßŒsh›« ”ƒeT­.šos«ü˜yï¢âŽ*r€¡P‚]e ——m¶HMŸÝw]Þ~‰¤aÇž¶Š eÚ³ü™v²¿pžàs2Ä t>Ȧgw×ÌΨ„yF¿¡—›t± {~ UΜŠ}•F—¤l‘pj ˜`oV:¡²Œ5pü©š—z‰À7©ƒÂ<§z†µé™€h#·˜™ôiŒ»©š‹nÄ'£å€yȹ©øˆ@»išÒsƱ‰“äfá ˆ¬Z Š:qÜFMýyœ]¥·4 "„½Æ ©c{ñ¹E™Jjr°¤”¥n©¸œœéwmºœšpÞ»‰›Új½Vš7p}¼ŸœëmÉãm~Êç£ya˽«7~ÞÆ+¥K{´ÆÀ£áêÃ+Ÿ±x*­»vï»|™trå¨ÅRhu ‹wd³u—çp÷¾Uœ.u{Æ£9{ü½œnnºÃ™Olc·®—ºbú¹Û›Vv+¿6£ž~%´ç”„l5¥Lйc~¢Šˆfì¦VŽk‹«ÐËi"±5“Øi)¶ü˜"xÁ¨'“;qð¨b‘îiw±-“{h˽œÕr±Â% =qÓÆ°¡ApŒÂ%›r‰¶¹–v‘§g©me®×‘ûk¼¾—ÿkãÆÈžól¸Å‹ŸQnŠÆkžÎnJÆÐœ k˜¼ošÍk=©‘§lµ£ø‹ nV£ž‹•oð£ä¨nW¢±Ž¥m`¦ nؤ‹{jªÁkþ¬ž’Rb8·„™˜d²à•>iB¬D’çkE¬”‹m¯•anÉ­*•°oÁ©h•åpF¨z•øqz­ –yt;¬Ž’Fm±'—_gŽ³Í—ˆ_¯¼˜ aH·Ä•ãc›²#“s_±ˆ’8w‡§WŒoAœ-‚?d'–ÙS_Ž®€õ]€‹ xñN•‚$k=Gõ|e–œ ŠjªÌ“Ûk”¨écl B„¶d6˜Ó~~e—•0zWbT—dzCeÕ¢ð‹Ém¯G–-nóº­Ÿvp“¼ÐŸÃp˸Hex®§•Ãq“±!—æoöª)h‘¥êŽ^·¨Î‘°^ ¬_”þbL·pšqm-ÀÛ›­oëÃAÞrnÅ¡¸vß¡HxG¾¢xˆ½š¢áEÏÂ¥-ïá輆§æ=ß`œRÁ®ªñŽÃ´¿•@m1¼Þš\gðÃ[ `lbÅÕ¡«pËÈ«¨—ujÈí¨°s>Ä‘§9‚êÆª¨>Š#ÁßžBvë·«–®cÜ·š—/m"¾ºž}}.Âö£;Ø·õšðmx³Ó–jF²Nši»±x—ëc{±;•<_Dµ¿–N``¸H›“e^²8’4`(Ÿ2}"Pƒ¢‡Žej¶w™mu¹À§¢y‰¿%¡)t[½¬ž¶w–»cš¼wüÀžÃr¼ÁCœËk£»à˜5l÷®ñk§$‹hS©,Žqkš±¿–!u•´Â—ÞqÞ¶=™Ûp«¼Ü™Xná¹»œ|zz¦©Úk‰¥áŒøaG©'Úd«Î+m—³i•§mö¾h›îqg¤š˜t’Äq›ÜrhÆŸõo@ÃÖømP¾Öš m6ºs–³p÷­“–mޡ׊Th£›j‚i?›‚‚½i¢çŠzi&¶ù˜sÅ¿ë|uäÁžóp?ÃþžûmWÁÉ›«ie¿L›9k ¹˜_q’°È’Þw9§¤‹úoí¡×„>i¡ü†»i¼¤Îüh¢´0˜9k(Á#ŸBl ÂN lG¹hœelÓª8’Wi=¤W‹œdÁ²%•kÀÁž}s™ƒ|ýW}žÖ+_l°#‘#kڸϘl‚¶E—¾hg¸s˜™h»–šql[¼®›äv2»¡›qxĽîž|ÌÁ+¦ù|Ø¿t¢({m²%–Änc£¯‰ì`J¤‡Œ¥m¤ÅŒpѧ•Ž9hý­ ”øsᯔ tºH C„ŒÏ‚¸†’4ØÁÆ–¬Èm¦Quw¬Š;S¶ŸÑã]Ÿfƒ„c‚¯t•Bm“¼Ð›$nÈ6¡¬u$̳¢v±É;Ÿ˜lìÆžŠk‘ÁN›ºoÕÀT›Ÿsy¼à”žc§¢»{ÝIE‹¸bWBzˆªa…CHŽänãKIwÆa “*vŠ`h“|rzT‘’^q¹NÙ– vùY+—@xX[7’LqHLÁ“ZovIЖjrQY“qàT{—O|šcÚšˆ†Opß–xélœŸoPš?uL8—Õ¦\·¡¡Ž~lò¨s“l% ‡by…÷g¿››‚è`VœqyÔJû›~âXÍ”ßzbq—€µiê¡e‹ÏYc¥!°gU¦›Ñh<¤e‡hå Ú† qºœ¼ƒ¦e¥†"c˜®·—!l»ªg•`v6œ„giD•ÁtÄ]¢um¸R}›ÚO]¦¤–)jý£ö‹bB´Ö— mÙ¼ž›‰o“ÀÆš2l±Éµ¤çwŒÎÝ©å|.ÀG˜9qµ£Zƒ×Y‚Ÿo‰ìcöžJ”¥f½•%‚]S ˆhn ¨ñ’Œrt½£uy[Ã+©ÈzË´¤™kÙ±V•œgźµ—ìkÎÀ½žîyÇC§\…½Ø›vve´ª•ðj«¨a•b ™ä€dR{“Ø€µV»´›èzzÅÖ¤ w ÀJžt½êT~'¾Ÿ¥~ˆ¿*ž+s¿²…q¨¿  r2¿{ž`pTÈK¦HyÚÇ4¤ÀxPÄH w‘Å £BzÅ¡@y$ăž8{ª¾|œÿyü¹A˜{s©ˆ‘Ôh!¢Žsc¤ª“«h­¹ š®knÀ‰žès2¹û™[o|¸[‘¾_¬M‰N¬°•Êj%³Æ™Zwè°Ã‘Cj¦ý‹af¤Ô‹Vg税¾lW«äÉi|¬Žvh°«-’'u¡AŽ™oËbÔ¢wŠhcg±J–«l²¼EœrÊÉžºq*Ÿ™ÞsB¶g–qq½¨ŽØiJ©õ•n’˜r¾™o_º¿™+lœÿrÅ‚›-o༌™ l:¥kŒ enšoÕe!œnƒqƒž<ˆ:o ?ˆhl5£J‰Îl¢Ÿˆj8£×Š¿kÅ£C‹ÈbSª’Ycª üfݦXŽXk⦱”n&ªO”Õn†¬û–ƒvt§>•ðxؤ ”yyǦ ”}q£nÆ|æ¥^”'x@«™bcç¶ë“5_—°N“±e©×Š«lÏ¥^‰—m“£?‡hm`[‚îjјoƒ]dˆ z_V÷¨mLJ–|«d0KPˆ—màV¹™P‚@eË¢NŠáeˆ¢`„!b¶œ¤}:c–Íyò_’¨vhaJ›¡Ûoܤߌ%pᬨ“éiž¶„›Gl€½3 ÖvQ¯ –Šyú¢®‹`f飓ˆû]1¢s…XYK¢¶ˆ–Y ¨ú‘Ò_°à˜qfº¯oÊ¿æ›IqrÀ­šƒn>Æ¢ s¹Åݤ-u¹ç˜ßnu¯W“ v&Á;¨ð}tà÷ÑÛçÜÆÒ¡¯&¸. r‹ÿ´ã•ÑiE¼½š©b\Àžðh À¤pl”Êu«[{%Ëq¬±z°ÀšZzݼ¡™0€Ñºþ—˜r ¸—Diz¸û˜£v³j—My©±—[p1¬hc…£ˆˆÌT´¨ù®^+´ð—fe¹¯šië¶T™zi§´8—«h¦N‰2W›#{üO„¡C‡€c†»à&w¢ÂJ¤xr·Á–¢¨n£ºn›Óm¶—Êm•¸”—JiÛ¼ã—Mhþ·8–gj£®‰‘µiz¥‰{cW¦^Š`g«ÎkÔ±G”ilX·è–vi·q—‰h‰µà–ðs8¨WŽÇnÿ¢×‡ c—¤‘ˆÓ_Y¤Œ‰8cóªõŽtg—¸Ã—Ïqܾݙ•rZÃrœúpCÅÝ+sNÁîšqù¾¼™4n,¶°–Ém,¨½šl½¢îŒ­jd¡#Œúq1Ÿ;ˆÏp³Ñ»f\¦D‹Sj˜»`šur¿Äú ïo¥Å ¡6læÄýžÑiðÁeßj¹“˜ôp ¬yŽÒmàªßbëš|Ë_Ó›º‚äh¥YŽoÓµÔ˜~q«¾ÞœðnǾPQmŸ›[lîªÄ‘j¤%‹¿eU²}“ j ¿Ãšo΋Ÿk;J<ŠJdZHñ•øpnJ~¤ ‡Ä]‡¹4™¾mÜÃÄ¡ÐtŒÄ/¤zz9ÅÞ¥¾„ÉÀœ¢¹ƒ ¾`£“¾ˆ¡:yü¶nšËt°²’LlB¢‡Û[c¤ö´mªµ[œ‰„Dè!†³Æ ¬ù…c½n£=¥Áƒ§A€PÇš®ž…ËÈa­µ„uÁ…œqi¥qFd–ÍpJ^“³srM0¤«sgõ¹œÏmÚÆ“¡åqËþ¢êtÏÆò›.i­À)˜d0¿,š"l†½œ1q,¹|–åd Þ{rMO‡y^l=^…È_…BÇpiW\šy†(s  {ˆjnö›F}]ébmŠGc™qz¼Y>¡ ‡Øföã3_¸’‹t]U«’Ótê[)’tgXۚ냒gsŸrÀ£ï’ÅwŸž’†Ø\¤éc§hkCª%• r0¥Nfòž­Ç\žÈ€d¡kˆOeV¤!‰JXϰð”Ám:¤U´tY¢ã’ºy£§·“zi†«f”³kÔ§á]lû jƒÉ]©œgZŸ“†h5£¶Œ/f<¡úˆ›[pŸv‡Ufáœe…&lË™Rƒpoû˜¹ƒnç @*jüª8’åmˆžú¥TM¯e‘+b޵D•Jj[»[’òaoÁ!œ»o/Ç|¡ w2Àã™PjC³’Ähʤ}pVœ6‹"j,˜|ÎR¡›@zDZ‰œ‡€¥Z·¨q‘¬dǹšžòuˆ¼M }zoµÑ˜Äsй>›*u߆¡?xËÇ ¦~ Á9œ»u »–˜Ëm#¸˜åj_°¢”œi]¤”Ücµ·«›Üt.Ä; ïrãÆ£ýwÈØ§,…]Æ.¥'ƒÁAžíy+¾àœ;wfÀ†Ÿzvz¿,žfsœÅU£m{µÀvžÿx’ÀÎzÝÃÌ }öÄV }¬ÃåŸ×뿜yT²f”Xm_­s“bjN«Í“Ãjü¤{dMª°‘\c—°¤•–o2±i”6sµ¦®†3_€žì|{EP¤RŽŠcf§„*ié«ÔˆgÍ­ä’eª‡f½§5FjI©IßgϦbd£?Œ\mjœ]ˆÏm,˜ËƒOl^š„ÉcI¦FÀgf²4–nZ½µšÙnN¿š%ræ·ì˜>uޱI•Ùtã©"’Wy¬Ò’@yz®Z“VkL°·’üd*·—–3oµÂMž pJ¼:šÈd±Â“a8 †6g¦›{ƒœrM›}ƒ?f›Ã„Gg „!i㛪*`/„h”™§ç_z û†³g¥Ÿc…`c%£‹iž©Ô‘¦j<ª ”:rë©À—¼A§u˜¡¼¤IšC…lžÇ–/ޱ›j“z|›‘`‡®œÊˆp—¤Úˆ/aö¨Y´cƤõ‰ºe ¦>&j£ÍˆSjUž#„g(—¼k^$—zåZ Ž•z`´Š_uê_°‘rœYÆ–Èy°\‡ŽƒiRžÀ‚èe¼›g|0UöámVCë™g-¤Æ‹2sﬤ‘êkú­~“Ifs®ö“êgš­R“k¡µŠsk²–`|Â\2”µt{O”es&J{¢P…ÏY­¬(”>c5°7—eÚ´˜—…g̽=›Ío~¿ÆšÙlŒÃ5žYlB¸Ë–<_.°Ûm_F±Ö‘giµV•j0¹›þp›§ú¨t÷¥0‹Ihæ©åŒ+Yí°ë“Y;µ™te™³Ð—ceªÀ |s…Æ®¤,y™º»—rž±êއn粟‘*l7³à”{l3±j•›oº£š‹vcÕ¢„‹de›éTm”\wFm𥀣Mÿ©Ã0bS´A— j˳å•ëj³•ºi±¤ãŠ”]œö€ Wަ]ßhy½ª¢®yNÁB¥Èp]»tUg·Ö™€lô²•k,¶a•Çj™³’We©« bH©:*g¬¤iŠe¢Ý†˜`ã£Ï‰ÚaI±Ã“ëk÷´·•ÐfL°N’n_°±’ g9ª!Ž.g§ŒSf³£áˆ?`ú6‚GZ8!B^¥Å‰g3­Ž`awºU—½gŸÀ<›œp¾ó™ŠuJ¼Á˜ìoi±ú“†mh¤Àj`¤×Sj¥W‘Nn" ;ŠAj&˜\z—aušE|„c3¨þ[i.½ œm ÂÞœ‚lKˆšUk«½²™èjf¸Í–¨j¦û‡S`g›bz T’­sEPÉ•|s`Ù£¹Š4jÊ´p–osSºþ™t§¼œÉr ¸óšŽr «‹’4kõ®ä‘!hý¹†˜Òi&ÂÈŽozŽ v2aˆÃiV2‰kdM#ŸŽdÁ½Ìœ$uºË«íz·Ê3©†,ÃM£+ƒ½¥¡5„Ÿ³‰›…vбi–ŒhÒ±• kp®d‘álJ¤Ò‰`_ ¨’éi£¾¦<„(Ì ²BŒóÊɬW‡ãǪˆÔÆPª±~ÀÚ¢Ð|V»Ž›­xⵤ“ jp¥…]^˜GxåSÇ•šyëT#¤.zi~».æp‘Æt£@t•Èù¡$sÞÆ äiä¾ò—-`Έ›‹jrÀ)Ÿ4pA¼JœŠh]ªk_y‘µq2D½‡šhaIPŒ¯q-bxž¤‰Ötc°Î–Ous¤ÎŠN`$™¶|ŒN(¤tŒÜd ¬=“§nG¨¸ÃjH›5ƒ e­– }¸bÑ“wçU$šŽl[Ž¡= g5³³œêw˳Œ˜€jU¹€›xnæ¸>œˆvޱ˜—tV y…?^½™ wAWŽž~Üf §`oŒ³!•lÜ»cëv'º¢‚š³ï›~Y­™hnO¬ö–emø³'šPxJ¶¸šPtž¯¨•ši¬L“ùmУ}Œ3fl˜ùz¯QÁ•vw‚YËž'‡£mB¡ÑwG¤“ìv•¯Û•Ôq©³å”=oÞ ?ƒjU¯(Ž&g^»1™½nÐÀ#œ.s À­œ°oöÀcåp/¾£™šh¼Áœÿrǽ|(¹EÞ€n¯È”l…£I†Pažƒ\bÀ¡0‹\™ñ}KS¤¢ÌŽMe(¤ôÑhh¦4˜f\²è•hg±µø—|h¯ª ‘ne·§³cg¤4Kc½œœ… e.˜<ƒj”J€toªš†imæ¥ÄÌkϲ<—3mä¸ñ™ákf¹–˜Wlåµ)™»q¤±ß—ñté«àšh€_®&žb#¬Q9§ë’»rH¨ÄŽzhµ¢—;kýÀTœÒbó¸n˜_I±”žqä«[•lv/Ÿ¼Œ†j´š‘†ÿfœ˜ôe—rW ŽÉuÓWˆ‘ zi`¶“°~<`E™Î„zq´£އj=®è”q­¨—ü€q¨„œf¥¦Užï’dœ/–*˜š[œo“]–l𔓦“ •¥“W‰%÷™í…ciP¢È‹õb0¥ªŒŠ[«±“Èg&¯0•÷gäFŽ»a;šJƒ_á‘Õz¤b©»z€i(“|zï`¶“oIž™svKD›€cî¡ ŽTi§°Z¢®z¹Z³±ó“flÊ´5–`q­º¨™·k"·˜yiˆ®t“„i3¥§Æh0˜å{|[1“Ruc\² tX°–‰}û`O¤Ï‹â\Û¬Ö‘­]3­’zc̪#¡e®¶—ùnÅÀ¤çsd»<™hù®9bX¥¨V‹áU8¶ý•ÝfT»éœ2p!¹‰™ºpШ› k›¤|ÕUrŸ™ƒbRA¨ç4^¯¬•Ve¨Ô‘›_[®,“Mc¼Ò™±rº­—¸pÌ´ï‘cm+µ|•Ün§¶ò™³rä¬ÿ“`j˜¡ã‰Š\£)h¦&“o*›Ÿ„Ç[õ—Ñ~NW¤°Œgu«g’%nE¯…‘Nf¢º…˜îkä¶í—×m;­®’€k=±†˜ s®¹Ù |gº(Ÿ÷oXµ–™¸hÒ³˜ÌoX´˜Àm´Ñ•ógž³•“÷fc­ÌNeåªÝ g §if¨ ŠÈ^¤WÓe‡´ë™‡s„¶;šAoÚ­U“¾ck¬þbê­È~`5°â‘Ïf©WŽ£d-Ÿ>ƒûSQº~DU˜œÞ}}[œ žƒá\²®}@fǽ-™rZÜét~»¨–ïkÿ®þ*j¥Ô‹*i‰£Š!fÖ¢çŠHb´œ©ƒF\5•†w­[Ë;rËWñŸ£†üd¹Ã™¼m¸Ãö(oŒÅ·k¨Á„›°e›º—R_°²©_@¤{‡¶[™T~=X!–ÉyšU‚¢c‰¸db´m–±u¼ã›ÇzÆ¿ˆŸ®yQ´Ô—ÐlL¦ÜŽaˆ®8”Pc¿½`œ‡Öb_œ£³U»¤òŽábh¬/”dd¨•Î\ý£œŠXZ0´ ˜¨n!·Þš5su²Ë’„hS³å–Äi_».žþxݵõ™Kq«͒¥f^´œtzô·É €¤®ƒfzž£†œ\‘§„ލo_­U”xx´ž˜øpÇ0¦|vÇ|§z}Š½Ãžju¯°š¥x¤—¢>‹âeñšzu]¶¤»ˆQb´¬”sjE¶Fšquү斦q)¦Ž’fU˜TxÏFÁ”vM䣮tÌ·®ŸA…“¼N¤‹0¹›þp"ºs˜j÷½­›öm”¿ŒœnûÆü :t`Ìy¦B|iÇi¡_|zÁÖžât¬Ã쥅vCÊò®[|ÃÆiªåwäŧ8u¾ÝŸwx’±ø™Kw¶µÆœzò° —ýký¬•’Àhå¼8ž)€‰»LžË€–ºòœ%y%Èõ©Þ|2ȨøvžÆS§³Õ¬²Á±ý³\¹2¨k®—°Ú˜Ä—Μ.…2w›|'‡IsÏa€ŸÜzçžM•ÀŒv¨ØÁ™W­¤9˜C°ã­€¡>§ë® ª£§©»•=פÐC˜,ž’™¢œ±”˜›—š“ž1™Ú•I™¢ –ð†å°˜[p×¶ˆ˜”dɺè›2e‹ºÈœ¶d ¬ ’DeχÐi.’}z jБ`‚Ÿl8ŸÄÜt«=Âi…²è–Zhi±oøp°¸#£{%À.£YÖÄÉ¥¥‚zÁ¾ {zä½ë›ƒpÛ¼›Òkº¼6œÇr¶ï˜ y²â–Óz ­Ò’Ðoa­š”ktø¯ÁšO~„º¤ûƒ.À’¥•} ½ŸQs´]˜l®­”.j½­û“kf¹ ›¯t|·I™½lä²è—èmn²†˜Brk¸÷šEp·¾Lžpf¾¬žùqæ·n™msð©Éèggž>†›W¤¥Qþdݳᘾj‡¯“c¾¥Ü­b³ºŸŸ`}É»Ÿºy„´Á—ÒlDZ–—m º4œ{°·zš½u ®e”Hiö·Ã!{¦µœ^yM¥ÈŽ7bñª¢’>b,²v™)v4² —Xx[½­œyÕÅo¦<"ÉØ« ƒ7ºŠ Ær{£1ŽÙi—˜¹~ÿ_‰™u}ËW= “‡¦Z(°j˜åiô±Œšùf$®0” `\­ŸQb±•j½¶§œ)qж$žWrk±.š¾o©~’i­à“…kƒ°ž•e'·L˜zl=ÁãÆxhÅÆ¢ŒyRÁ ¬tâ¸Îš pƒ³¨–Mlª´º–pº³º–üy”ªþ‘s®÷‘h¹$—?jÀòš¢iF¹t•™h‘±¶’*i%­/—¢p,± ™Žvm¤:Ekœy„¦X&œ_‡qXl¢·ŠÐa­z“ƒkí¼°šÑkDÄ„œBjÐÄžmÙÀž¤mí¿BŸ¾kŽÂKŸ}mSÀœOqu¿úœ–y¿íÇz¾ÀÿçyM¿9wˆÄ£Àyuž£Pv$¼o€­3”½cº¬/’Õ^k»$šte‚ÅsŸk„€udjLy{‹VËB%~JYù>>‰ÇlaH –Ï~áa5Ÿ·…Df3§•ˆš[ØðzFÈ—äzS\3“êv²ZŸ—¹{[Va×§ “âl¨-‘íf%·š[n†½ˆžTs׹؜yR¾› íbÃã¤e2°.—}kT UNi$™Ù€X©¤Ò…ð[¤…iY]œÇ{5U’ào¿Hg”úr_Lý—ðvLN>¡ñ‚Ê]ö¨j>h}¯ð“¬m¹ç˜ßnµÄ ŽqÊÁ¥ qÒË”¥‰o|À›n¤B‹edÛh†êcï–ç€q^°–2|ŠTýœÚ„Ç^¡>‹õfh¥¡Œf$£…YT«‹Ž¿a¶í˜@t&³[˜)vy¹$œ7zS·1™ o8¨Ô‘-g4¡á‘ déº:£\yî¿$¦›vLÁb¦~|¹ÁË¢¢|Ͱ­•nîªÀ“³r²6™Ç~<·=š+v󬼑×dÊžM€\«š…zvVwª@èl°é•on?„¨Zä‘ÀmL…˜ÓuÅP›†zŠGk ‡b-¤Ñ‹Ömš©BZj?–ús @à“«užGž©ð“}v ©nˆVÅÁªf…£¾óžÅw”¹d˜ih¾•™­cwÆÐŸ‡k7Ìb¤ÊsAËïŸv@ÈžÇ̯s‚º“£ø€»ç™€kª¼K›Áo(·S£†‰Q±âš·„±¡”‰¹T£©þLZ©"kd·’sçY>žrƒ´tŸ³]˜¬s‚¾Wyn{¿âr^Ã4¦ ÏÄó¨]ìÄÁªUŒ9¸øžƒ‡ì³›3w8ŸÁ~ZH‰Nnï_î†ÈpÊf?¹}jŸäŠ pÝ¥‹^kE¥$#hX§äd<­œdn°ä–ÀuJ¥ŽãbÍ›‡…UT˜Õ†Ìi¤•ƒPr—œAŒÿ{%•R~ƒ¶œåÂŒ^¤F’Û…Àµ›œ!|'¨Áœ<†üª4âö¨Ó“õ‡¶°-œ7…Ѳ©‘£¹¼üÀ¯²å·¼T³Ž·ü¹‹«À®Óµc¯˜¨`°³ªo£Ó»²¦È® ¨4©®Ÿ´«ÀC¯"¹ôÃA¯1¸û¾t¢§½®Ä’‹e‘I†ðq…£ü—™‚¤‹š<•˫襪î±N±¼®‰¯e´¿°<§á±±æž0§­¦“ל1§ìФ–rŽ¢–ߘŒ•ݙјm˜nšÏœÁš™†˜…£Ú—nˆy³X™pvW»[›Õj¾Ä\dI¾ Ãa§¬!‘]^œÓƒƒjN–D}kVš‰…Wqt´›&‚Í¡ütÆ¥}p¿£çpÁí¦yèà ¦®~ñƪ§ƒÝÅã£}ÙÀõo »6+mú·¼›ÌlH¹ÄœkrQ»¸u¼2ws1¾ Ÿ®x|À°¤Ì}ÖÆ¬a€^Å+©U{ºéœNq±Ï•”jª˜Adð¬Á‘Tj!²z”Wm™¹N›Ýoü¹£ }^®U–Q{V©|‘÷p¼±o–In¼ÚœuðÀ뢙yl¶ä›ùrУ1Ž›bh­Ý•ôlF»'Ÿ|v"´±˜"l»ªç’¸jF½c£c€K›¨ß‚Ù¿â£\|ã¼iŸzz©ÀСÈüVž4zÕ¯ì•jеäšbp§µÅš‰qT­§“¥a-¸Ó›@jv¼'Ÿœu–À!¡(ĤiÂ'¢¤|ð€¢]zW´I–}gpž+…lbdÑr¯Q˜^~ÀW¥Ý d ²š'n.±ø™”n=«³“•l¯)•™n ·ìœzvƽ\§üz ¾—¤ v>¹¾›q0®a“wlÙ°]—Upޱ~–ÅhŠ³Ì’ßg>Àïš wWÊž§‚÷Ä ¢4zƒ¾½››oZº±™mǺèš6o‹º› së·â™Krٳ㕱jгí”_hgºÊ—ÏfM³Ç‘[þ¦ÚŒ¾_¥Óöfà°|—Âsª“Ök³¡í‹d^ȤŽ}d§F’7i³´T™Op,¿D›mÝÂH›'n3Âý›s1Äs¡›wÅž¥…s™Ã½ zn®Â’œ;mšÂÅ›'nZÆ·Ÿ¶srÅV ŒuæÀ9«s©ÂPžÙuQÅ ¡.w¾Á¡ rz¹ œk ®’ó]û³·”d^×Âcžg8†ÎiKöƒ¬c€H{€ü_DÛ}_eExŽfëMDVun]Öhw|Ti!JWlÀRë§v?[W“yyæYà–g}Ë\Ešèµ]霢„ù\‡©Ž‘»iwµ.š£uü²Nš{"¶0›ÜsÔ²—JiÑŸ”‡~PûÍz!M!ŽðtÆHÁ›™~O$¢ †µZ2›’x¥N “&q4Iz•{ëZóš–ócíž„ÞdŒ¤íŒ²f‹©Ë’+m¹¶v˜úq¼Á\ ‰sÅ|¥ oÆÉ™¥iq¾?šŒi‹­‡‘XjüŸ ŠcWšÆ‚D[õ”1yáTí’y\–¥€iŽ˜Ì}Õb®šKz+N8¨Š‰¼W{¼m›Ón2Á%ŸÝq‹ÄÞ¡už¿[cs`­¸’$j©ƒ;n—¹uœ0u‹¹ž*s6µò›(s¾ºª›ütªEðdÇ¥Ç?lݨ¡Éo© g£¦,’Õd¡Ÿ„_X:ÞXV¤qhŠªã”oÖt€ÌYî“§p÷P£’òsÑS0•ÞyjNÆ”ðwÓL«ü€)cý›|}®YåŽDj>$’séFQ¦©o–»Qw~Ø¿ žÿ}Áå̂T¼wšólθK”‚_ÄÜmgÍÆ¢Vo"ÌŒ qÀÇš›btu¿Î™˜uÌ!»Z ÏGÃÏ¦ÔÆ›¬†~ú¯1Sc¢çŠdp’–$«kÈ›‚ÀeMö€B`‚Eƒcr£cЦp̰—Ms4¼ÐŸcx¹ÂE¨€êÀ£Gwó¿# ŒuœÆïžPrIÅ¡{vÈÁ@ŸÀl5¾®š p?ªÛkŒ¦ /„J£~õ©Z‘lj8®Ò’ôn¤¯ª’h†ùžcŒ©}žÑŽâM¿Œ¯ˆ/ÜÀG©¡aK’õu-SV˜Î„yí·æŸ£†Â<§z?Â8¤ºu$Áö¦iz¬Ä½¥ï~¼3œÊ‡à³œÙ‚;©RŒkfC”þr MúŠàq/]ØŒu!_ÃŒyÜ^½™•ƒ»g/¡¸‹dñ¤á‘Ggk¥‹a§ÒVg*§9“nJ¤7¿cûR‰O]àœŒ­n9 ¯’|¨ÔšÞ“0¡ø–»¥ ÷¡¿±¶§ —!¼„®;š6³û¬v¥5³ß­í£³´Æ£=Ž$²Ð›¡”³.©‚–ø·4·©³¹¶Õ·‰¸Hµ·´Gºk®£®f¹”¯V±?¼‘³ë³¸È´=³V´Ñ­Ü­v´þ®¶9¿õ­T¹’¾aªÕ±9´±©_©b«¡œI˜0—ΕïŽ3w U™Ó†ï˜Ä”³›™l ¨§Ê¨(¬€¨›¬…¯A¥ã¬)²×Ÿ*¥Ï¯’ºš6¤…ŠÖ•œ¤9˜Ã™À”˜É™—F˜²š€™„”ž+—‹¿©%—ˀܴ›ŽvR¸Æœ!l{µ—Ùf ¨ÕŽŠe±œë…³ou—>~0g›2‡Îr@­<”Ðy쨠cyNÅ´¢€oèÃL£‚nÄÝ£àp—Äò£%x[ÄÜ£°z³Ä}ŸDu¼›Èhf¸l™(kȱӗói¨³4›‰jN»ŸUk¿ŸmÀžžÉnÈÄL¥ùs•Çø§ˆuFÄü¢Xq*´V—Roù¬þ’Åm+¬*“jÞ¯ô“hkÖ´a—üj¹6œŽpu­•frE¡/ŒmN¤±Ž-n𬑽o<¹šÝwÒ¦[‚½ºlž~©¨‘Ek ¬-“j+³<™Þn—¯È–ži‘¬t”e(¶åšzr†¿h£T]Īg„«Ãë¦;~5Ŧ¥|ܾN ùx¶³<™åkعžšmÁ¼ó ou‚½ß rr¨Âw¦ès.Åó¨ëyÝÅרr}ŠÆð©€Õ¿ŸG{l¶,—Ñjz£–‡@R<–+x‡Kx” v¹Odž´…Z©Ü fÔ¤Œeþ£¸çm,¦‘nm±™˜su¸× Þ|»0¦Ç~&¼,ŸnqÞ¬ÙŒø_V¤ ‡2gW¯V•õyP³'—Zv·©’%q1Âk›{ŽÇ’¡°~†Ä{KwÞÁÁšlp4À›ci¾]›f‹¾o›(h,¼b™âf0¶U–gݯ¾‘/eQ­ìì]®¥Þ„™RSœ¬|ÉX›ø€ña%¡„kØ¥ /h¦~Ž>bb©}:dõ®«•mY¸¥šPu&¾'›¨tâ¾6š s%¼Éšt޼š“uæÂÑ£xLÅí£qt[Ä¥žžlbÃóœÐh1Är#hhÄžSi)Ùž¬n;Â=ž¿sÂÃߟv-Äv£Av"½]Gp>¬.cÆ«\Žf`Z¼›ði ZvÚTÇŽtÎWk„§hyL®«bçKÚx,YºGÄ}I_›I¯…echLn‚cZHBŒclpL³•~ÿ\ –p}º`•Ê{weÏ•(z¨\—:|Å\“œ»…'d]¡YŒNoN¨t”ƒz|®}•Âlÿ¦Žê]š_~KŠÚn¤D Š’pMEº—Û€U£õ–g€ž„ \Ç—~¡X,•Ò_³›@‡»g’  ‰8fC¥ÏެgŽªÛ‘°j˜²S•@inº›ønm¹&›Šm?½c™9f-³›’*gÖªR’mšÕ„p^?’ŒvÏIÒ§oJNfŽuk_ã­|ÓffÃz×ePšß€èac¦ ‰ Y¸G—ÛdNħžÙlAÊ@£:su‰œo޳f’h}­áŽe×°‘ÖcÙ§‹Ž]Nœ]„wLº¡ˆ”^l "†ð^<¤Š÷`9£Û‡æ[¶¢m‹!fP±þ›=€¹±å˜åzÁ¨,Äj̤Y‘rjc©™•úoG£‹oc*ܸ^Ñ•”@]Ìœx‡6d&ž‡éb¤ŒŠ>p§”TtÙWwkØIT’*reI¥ -†ŠbN¤¶‡.có¦…`Hµe–£vÕµú•diƱ•ó_aÀ]›jÃÌÝ¢Ìo£ÍÈp¡Æ‘š›m´/Œð`S¬B’Šƒ§_“ „ª³N–'k¡žçy\Eî‘ét?cŠÎqÉ]h”³zezíFq•ÚsÏT¸³prSnšQ}GZ£ ‰ a;©­CfܪìYf¼ª™Wf[²s”olì»hš°uð¹ð˜^oN¸R— i¼·º—l:¿ÄŸ~~Ä]§(ƒ·Ã¢šwïߟûq­Á Ÿ¸pyÀÔìlAÀŒžo9¿÷:r:¾4,r²Âg¢‘wÞ¾gžasS®·ñfŦ܊n],³m•1d¦—/€È_í•ϬcŠnq2^Іl˜Z!Ä_Jƒòc,Jl„ÓcÙMŠƒÙbKL=‘vèTÍž€ŠøgÌ›8„»hâÁˆÃtÒŸ+Š_q¥Þ‡‚n«šg‡–j®™Î„kdšf„¡w”Ö›l¤ûšÜ§[­Ðž¼«Í®þš ¥Í¥€è˜4œþ‡Ø’ š:‘¸–°™8–Ò–’˜——ñ–!žË‘·“Ȝٕ–i®—–}—Z˜b”M‘å—ˆl •Éy‘ƒ’²‰j”¥–Œy•ÅŽ—S˜si‰)£^•ª„¹­Æ–˜x¹bœTsî¼›&q¸Ö˜úoIJ¿”Qkµ´–Yiò®s’ce¦ Ž`cš¡e‹a—žˆº[z©’;g_³,—íjz¶Í˜†hë¾åžxkÁ%k­»r›gm»±˜•¢oͦJÛj‚¬&“üm¹ï›wt滓šes ·b–Øró¬@‘"l^©/‘ŸjOªœ’ÕkΩ.’Ddm¯¶”øg±b–Wm®(“¢jÝ®>’ iÈ©Žf¿¯¬gs´’–ñmè¯ô‘€aݪ6Ž7\K¤r‰eu¨ûmm»»Œœ¹x–»Æ˜s ³•Ðpѯ~•wpÔ­/“ÃkÚ¬»Œg´½”ojµ‰–«n ¸˜njï¹&›‹jðĨö‚.¹²šž£¹†ÎgU…›d:£ŽülU®8•l6²þ–ÍhªR"`L N‚MVžÅ‚æaô¡/ p™¥Á‘_p^§ˆ’+l¤¡’‰Na_œñz·Pa—ËqaKó—Fr™Qæ¥h‰Žgœ±Ë•Ñw9³˜‘yÙºJš²w£Á?žõvAÂn1t®Àÿšn¿õ™jJ½r™kj¹Ö•¯g¦­@¬S¸¯Ÿ‘®[d±«–ëf‰©\‘BaGœ%HRÿßmK#Œ]e•GU“õoŽHŸS‚>]'¦Ÿ}iV§LŽŽiü¥‹Åc˜®fnd ¸x—nWµ¾•jޮւ]â­Â’¼`ï³í™zv›µª›Fé¾<¡Ô€µÃᥔ|MÅ!¦}{ÏÁÄ jxl½9¿pæ¹Ášky¸Èš mÀ£V|AÃx¥Taµq—Ÿlû«ž¸\³•ó`/ž²‡iiužÖ‰½m·•Wf‘Éx°dÓ‹XqKVö’£x]]?•){¤e•}}h.¢qˆIn—<{4[.“¶yˆ\™„èo›c†Žl[¡}Žk^®|˜Rrr¶Ãšòrº š=nÄú¡8væÊK©3}3ɤÎx0Á€œZq|¾CœPsEÂÛŸów|Ä ¢TxöÁŠŸŸx”»gž2;¸¹ž¥¼å¡~ÄÈŸŒt}Æ  ºsâÅØ¢l{Æ©èÄý©#ª¶!›Ðq¸±u•tf¥k‹\·§©Äjü°ËšÞs¤·p Öv-¼  }-ƾ§È…‚È}«n€ßÅ0©ì}¯¹êš&uà®>Œ]æ±úŽaZ²¼Eœrø±ã–ƒv…žJ…qj# ×‹8mÿ²Š›vy¿È£S|þÅ© €ãÄ%¡xØÄ3™Ôo­³h“Cir“ñvöX÷„Åc/F¦¢n|Sšg‚ãkžÓ…Æe¥èúo–·´Ÿî…¨Â «#„Æq§Ôw!»ô™XjR®u’Íh5 (…<^¸ ùOHªCŒu^¨ý‘wi%£}Œ]d΢cw¡ˆˆGaŠžbƒ aüŸZ… bŒ¢þ‡VcÈ¡¯†eW£§Š›hx¦mkhT¤ Ž+b§¤ì j–¦H‘øq8ž|„õg!› € a‘œoƒ€jŸŠên¿¢”Ëj ®‡–´jþ±•;iž·H— mLų µvkÍ©L}ÿÇ¢¡éu"½æš8m/ºÿ™+oÕÁRŸþvõÅú££u1ÇR¨ô}²Á©i…½e¥Ãm»ŽœDoËÂ8Ÿs8Å\ wv#™ž¬tKÅ#©Ÿ³Æx²¿Œ²´¶›Ñs¬ŽŽTa‰ž^~äLüœÞ„ëc¤c’¶s,®•oª¾Œvf·—•FxÄ¥ø€ɦ­1…‚Áž£â|«»œ›Ùj~Ä™ RqöŸou¤­r0ià˜a{»Y;˜t€ ^è´öœm{öÅ骀9Ä"¥Žy༙¶r÷í–zl…«9Ž d•:{7\û‰¶nvR“>s„_eœO‰Úo•¥Î‘±o0±O˜Nv>»Ü¡=€gÉ]°z‚òËK­½z`ÈU§¶z½(uœ¶•˜Ôp·¡—ÿkÁà¡”|w» ¡üÑ¿ž§€‚SÇ¢­bˆ•ȹ­U³µîšTƒX´}Ÿ¼ˆ¿ö«é‘‡·°¡â„·ªï™öy+³¨¡b…»¢r†LÄL§‡ŠÈ”­½ŠÔʱ‡²Í1²¥ƒJÏ޳ቩËL±VŠì¼¢¡{N°¦–Ëw  m‰up’£j){]ŸS‰3pCœƒÑgu¡2ŒŒuÒ¢–°y¦D™ô…ï­2›á|е{žÇ€—´‚ŠÁº~Ÿ²y½¯n•ZlŸTˆf>h‡êl£…ŽÄl4«1“`iå¨ÅRh=¨L‘¶ô§k¥î¹J³@¯Ám¿P¾ˆ¹U¸ºº`¸Œ´‰¼’¼›³½Ì½ä´?º¹ž®˜µÒ³ñ§‚¶¹G°ªº¾û¼r±Àœ¼^¸õ·Z²æ±š´ò²¬˜í¢i«Ç v t¢è™D˜i˜Þš^œŸ±Œÿ’ЙÓú–¶›«’#—œl•T›I£º§…¬†¬Èµÿ¹¡­Ð´B¹$¯1¼Ó¿3ÑGÝ à÷À£Ä9¿a“”ò‘ÖŒö“\šß“~¢P§²ŸC«T¦˜úžž›“‚™Eœ¤”Ê™"œà˜Å—¢•ê—f–"”““¯’h—>‹Ë½”¤’6—”c‘Ä‹•••ä'”…—”K•WšªŽ;•°ý~—À™ù‘Ê—”—W€•ì•ߎc‘0’Ô™¯GGª•1…*´˜ey‡³—r¯×”#sX°=–sã¸V™×t ¿œùt§¾ÐœÝo&°¨”…jÐ¥¤¡eeÜ„R\ù›¹ˆ#k?œj‹€qŸ¦@•Æw:± ” p|¯+”ºoí¤ök6§@jͳ —7p;¼v›Eu¡¼w™Ìn¦¿ýš{n#¿G›ÜrI¸œÄ{®©“øz…¤qŽzk¹¢êŠ»b1«Ë‘4h­¬5’ÖdªV}iÒ¨Ìl=·Ýœ…{»—Ÿ=|¿®Î’ÃfU¢×†´_á—w~*b“¤u:WP—v}}Yr¡‰‰àb–°ß•¥qdÂR¥r€ØÄ+©~[ÅK©Äö¥¯~&Á¢Yyp¸cš}m §Bb[¥‹ ns¤[™p¡šíƒ‘cС•‘au¿²›xvµÂž£|]ÇÆ¨wõÃß§oÙºž[w·U›XwV±–pT§ÍiÝ©¦›ob³Ô—w踠Uz€¿Áª}ÜÁ~¥Ýo¯Ê®ªútË«øyvˉ¬K}¦Èµ§TyÓÈe§8wÇ6¡Sv*À¹™m¾P™dn|»~˜mð¸˜Pl¶y™9l̵Kš°l»¸š©u=ÀΛûh¾@›t|x®’¨g©£aŠ `ó ï†îe‰ŸÚˆökü—æ|X"”VxdPÀ™¥„¿])£bTgÓ­”ijÀ°–Zg£§É¸]çP’Úg™¢³Œd¢ÓŠûdî Í‰¼aéž[ˆ¾[öª÷’µb3¼¹/j2¼ûœòi=ºožip·²¨™ñj·«$“VgK¨4Zg°”ymû¸[švq²û• qEžË|ü[þzMçœÐ€æS¢ ‰ïfy¬œ“rAª˜ i½¡§‘QEžzáJ š=~Ü[pš@€­_±ž÷†–a¿žÛ†îbHœôƒÙi›ë>a0\€è^Á˜–~Ë[±” `t’ÇyOZÈ™·~ñ^až † hù£pŒckÒ²ã•_pIº œüq·±Ô–n}£ÎŒ­hãD…˜^Ÿµ…Ÿ\0œñŽTöp‚†\½¡ê‡­h|¡7†ðg u„—cg£Šba4¬q“?k§F^iŽ¥>‘jmv£†qêšC€"b:—1wñT •ÕsQy™„ž_›„¼Y7¡kˆÜXƒ§¾Œc^µe– mÏÄš¢ÀymÍϨã{^Åëœ5o·l–xiQ²™“†h­¼›š–nàÂ}ŸpnྠŸ?uµœøw×´¤› t¾±”!d½ìœâq׿%žVw¤» ›Ûm¾Âÿ§Ìƒ:Ç·m˜¦¤oÍmEŸ~OS‡–¸x‹>K•Ì­Mb˜·€·^O Öb¶žWzÚVe¤l…´h ¸Œ™~}À¢f™½¡TzùÃk©Ùż¨ÁPž~v¨<ŠM_E‘ÛpÌG„’ouˆN3³¿˜¸u£Ë®X0Ǹ¥·|ë¶§• sp²Þ*iX¢Ò„V¤”³{§\ÀŠ=qhX,‹Íq0]Óšô†k©f• o`°Å˜tS¹gŸÚ|yÈ8°ÙƒßÈ7«í|ÓÃA¡äv7ÃÖžXv§¿mœæoK¿8rÓ»Âuœ·Ÿ›v‚ÀMªÊƒŸÕØÉ«µ¥ÊÛ½Ÿ³ï®!”xH«Â’HoÞ¯:›.‚»ª3–zz{³ZœW{󻃨ˆƒ¿™§‹±ƒ•\y`Á¢p~È«~¿Ëž±n…·Ê_±ªˆþ˫Ճù»\zx¨’×oL–„~„dyš…krî™jƒ°mRš(‚>i‘¥’ù~<±“ž"Šå´ò£¶†Ó¶½¡’‚²bœó~¯·ŽŸ´}º Nu-´™uñ¡=^oŸä‹lqñžÍŽIm’¢¹wm¥Å`v[§M–B“µš±]¸é½¥¼3º;¿*Àm¼”¸Oº#¸â¸ ¹±s¹ ¹<¯»7º¸±ô¹Ò¶„©‰¸.´z¦Ü¶û´B¯Q´¿µTº×½ÃµÍ³º¶Þ°þ§Á ´¤a§×”´›¦¤—U—‘›"–!•¾—®”Ö—‡„d•K´‘õ–‚™–­™D™L“Ñ™œˆ—F£«²ä¯,®\²p«ü¬*¹L´°­º{¼Ï¡>Ÿ÷œy“¬7z‹è‘‰–´–kš”iš ›ß“J—+—ž“`˜J›õ’˜—Kš/™r–—Й—וF”þ“ª–6‘ Œ}ŽŒ“ã Œ±“Ô’„ŽT“ñ•X”‚’ —k–•~›ªŽ;•°$‘˜|š@‘ê–²—3Œ'“>–¹ŽI6’ò™ŽsˆP®ã•k|y¹F™’rz¶æ–ús¬”ÙxÚªe”Dy¸]™vxØÀñœ€r½¶›Rr«¬t’blš¦ÖŒmþœ3…`dõ¡ŠÀfY©sýh§ª4fe§ÓŽiè¥6Žàl±«G—}v¬­¿”v-©xªiô¡8ŠKfâ—ƒÜb]• }JZcx@9Žš;ƒbD±¥}Œôf5ºÐšyuÆè¨ß~oÇ@ªa|`Ä#§ß|ù»ÿs̰w”Þcí¡úˆt])æ…õcÍžl‡jΣgnòœ~&Ä}ªÉ'ª‘zCÉ_ªü{IƪHyØÃ©÷¼žh€y¯T“q>¤‚Šñe¦„Œ®i·°å”ãn¯º, ÌuéÂ̬«y.ÇB¬Hv&Ë&¬FyÁËÒª‘xçÉv§Úu/ÈR¥cw«È§Ñ|¤Ã¬¡[wÌÀ›„k'¾ï™;j‚µ*“õgª³µ‘|fþ°Z•lf)¸Ýœuq~»Vœwx¾>›;|²½›Ãx°{“¯h8¥Ž„a!¦Î’dnE¥f’sÅšŠd`K–—{ƒZY„`ã£bŽRjS­@”/oñ²¸–’n²ß—¤m#²éš¡qQ¬}˜rÚ¨à”mr)§’öm¢JŒÔaT¬¢’úeÕ¿0žqOÀŠžËnÀ6¡ÏuL¼Åž„v˜³±˜o‘¬ù“jl/²ç–ëoB¹<›Ør0¯””ek¼õz^Míž¶{K˜ëytS‘ž „ôaW®¦“*m °b”˜i 3~VKn”¥hÒ<>“mVHu˜À|]Êœ°†´_ß—H}?SŒìqMV’Šs¸P™ø|§\™Ê\cY”+x‰\ò¦rnP†”yY©ŸÖ‡%j†¥ÌŽÁk°!–mË·{›£që§²Žfkäœ,‚ f£”Þv‘Xò”vfRz–ßwêN^¡†¦_ü£·‹#kÕ¢ïŠhl¾¤ÃŒ:mo­ã“iM³“—íj±«ë‘$iÖ£pŒáfjœä‚´hõqq,W’·oZT3©jH‘*pwHt‘ZsGD”;vÙGC™Ã{$KD«&“o0Ãê¦Ã€<Ëݧ«yþÀ˜¡iŠ«÷‹O^·¥×ˆ¢ZT´•”²d³t“ú\H¯›“¢hÔ£‰ŠQb>£0ˆ\\¶Ÿçƒ³Q†§„ji­º“ˆkÕ³.—,h²¶š$v€´Å&†þ•§x/\^•µqeHƒŽ2xÖ5‡• ‹\K‡Jl‹@–CqÝZ°“1n‘J3š°zAaŠ¢ÎˆmqY©|NtQ³ƒ›Ux ö«—ˆê½K ÿ}Ô»™ s¢‚€$V.‹²g±FŒŒ‹j¯J€¨#†nšÄ£´}åÃ⑚«iŽóp¤~„kbÚ˜Gw®H—Óp„Nè†ZiN>‰3nqXq˜$~·cá£…ŽØb©«º“Toú¶“]}Çû±ö‰Æ$®à„Z¼ðœQu^À›˜qÂåš¹l½žšl°’lh#©~ŒadS²ú—4uåÀµý¨ï¢˜›S™Áœ>‚Òe›Ý€|c†—x‚êh<˜ €žh8ªè\tзϜ|yÅ®J–ùy†—šw X§Y‹g½qar[ÆA¬™€ä½ªT~ØÇB Ðy¼Eœûo—Ÿï‰Üfì“Z~Àc • ƒÌn™j†«pQ˜ä‚0iœB‰­oJ¯Mš“}"µºz °Ý˜yp§V“uɰl™axë±Ó™ˆw5®=“vxM¢OŒPkP£³tãžé‹rš/Ž™vA¢×8…¥£™´ …·»,§¹¦½ï¸Â`Å Àm¼-À½?¸»¹¨³á¸ê·5±¹ºW¸Å®æ¹¸´2¨5¹­²( 3¶$´‰ªJ¯X°ž­­$±û«|£¸Ÿ]š —Vd  g™Î †“Þ–Cœ®“‰•Κ쎼”RžŒÙ’[›ñS’‘ø²‘Ñ‹ƒ‘¶•D˜‘Œ=–¬™š º¥t5¢ {¢×­d¶E»£$¬¤­æ—Œ—ºš'1}’õŒ9“ó–¶Šê’¶•ôŽ­”˜–Žm”˜Î˜%›}Ž3–Ûi”Þ–B–X—––»–Ï“À”b’ØŽ;†SŽSƒk“•Ì~˜õš7€—¼›[Í”!›DÊ•œ“!˜–›²•ߘ5Œz“~–U’`‘È’Ê—8щi§§•<}+¶i˜œu/µô•úwPªs“$~J¥Ã‘#{œ²°•:t^·s”3f™­¤‘Âmö¦:ŽxlñŸ‡ƒÿa¿‘épOPŠåk Y§ÃuÂgk›z…1m žøˆªguž‰ßc]Û†_ÕŸ®‰ñc¡± ˜®w¯¿pŸ€ËºÄ—†pѾ2˜PiÔ¶\•g£Šôbu˜Öx`ã™Ö‚+b§’üo«ÏEl©öŒéh‡¦ÃÜjú£qÅlj©O’ko¯û–“t)ªØ‘ñlÈ£ÀWq€¡Ås±’>L—üŠ?I‚‹þuÝ8Ÿb„¿_ª°“”¦s)Âí¢Ï}ÆT§@||Ã\¦Y|[¸sœýpg©Bïa ·ˆÆ`ÜЈ£eµžiˆgF¤ÌqkÉ·º}|pÉH®_nÍ^®eyðÈQ§ÎqÜÆe§Çp¤År¨8yª½zžÞx®]‘èi´¢Ê†tXó£t‰|[%ª²lb޳|™©n-ÀZ¦Êw%Èî¬9x#ÈʨswxÉZ¦±wzÉæ¤Cv»ÆO¤ÆwnÅZ£|ÄÒ ÷ui¿åštkݶˆ•j!¢=‚—]½ºy1OX ‚HNªW“¼gî­•ëoÓ¸À™ßy¶¸<™Ùq­¹‘cd3¨Šid¬–þkD®š˜-q ¡‹d“œ „û`UŸˆoc®¦D“o…±˜Tvm³ä•srD­Ì“Mk¸°)™xl$«’—áo€¢'nð£ä¨nð§í‘ l±‰–˜j|»I›k‚¾­›ºj½Ô›óm÷¼®ªw̰h–?n1ª’£h¥±›–9l»®›œm'·2™.j;²ð˜¸r?±åšfv{¢#3rq¡ ‹¥gGªì‘¨e ®e”Hiæž‚€EXI‘×h0E0zjžJPœÇ„hÌŸŽ%jz”k{PQÉ6m¹Iwòs¨VT”*}c2šƒ´kø—ÒyÐ_•žt€Q””Âwà[ hŠñlY¬0•rqY¶6ÿu<¹Á z1¡ „ƒb\–ËuÚ]¢‘“rXïêo,O šuk]ª8Èh¬©”i ¥¬ŽÔjܨœl;²™–i¹¸c™Çið°å“,fÈ¡Sˆý\Æ–æw~R’¨p-Tû–ûz/dV˜¨|{_=“rJ “¿r5Me”˜x,VË•[|¸\ŸŒt¸%Ÿì…ýà ¢{’¹®”üf¦iˆEY £!‡-V§Ä‹œX©ŽØ\¨¢i‰ñ].-‚ËY•˜v;IåŒøoiI9“ÌzY\„¡³kÿ®*–öj¯ú”fk•¢Ã‡ap–’sMì–ÖvðP&E{5CÒ‹4z¢>3†¸f7Cmh`›”‰wµ^ ”yE`7—{™fŠmÖ¥_¼w ¸A {²K•ão§Šˆø\ИØvWPù‰ªhüJ¦ÊnPgœV}Ýc«ÙYq»°M”Æ{Ÿ¾ƒof|—Õs”SVºlSIöˆãeeI¯ŠJižM·rT`ù—:PaÉ ‹NY.¨q‘ g)¬Q”!t“»c¡Ñ„h¿+§NŠ4±)–Ýt?³ç¨i%¿)˜¹m¼{˜«iòÖÎgo£š‚ [Ÿ›k|3[ž’zmˆ«m#hÊ¥jãSŸƒïebI2ˆ-o^Zñ‘¶wåd%žG†ÊmE©v\p4 …Hd4“„qNf™7z„W-®&“hjð¿s¦"}_¸´§”€´!žSt¥8‹©dl˜YÉi¡š‰úqzžüËx£œwdqΕJ€~]l™IÆ`± ‰ÆeC¢>ŒCg: È‰éj÷žtŠålv¢U&y΢Ҏ¦|N¢`ŒYo‡¢‹Wf¯£E‘äuãõŠ©t[˜›€{¡•nƒ~¤6œo§9º?¿Å[Á4ÆÅ«ÈÍ[ÌqÃ$ÈüÅõ¸˜¹²¶Ä¹ ¸½´¸Íµ®®«¸¹²†¡+´\«c—­6­&£¹ŸÇ¦¤©ž •d•l——˜S­š/Ÿ<‹š„¡ˆÒ–šx’Ï•˜BA“‰œk‡àŠx“w‹1…­€q‡,xÞ†Mˆ:ý…¢‹+«’$“’j’ª’ô”0—'©Ë“M› ®Ü–r›dB“-šïŒb”‚™ƒŒ–˜ðŒÈ•¥™sŒ‹•Ó™‡ŒR–\œùŒ• \“O•ø–Œ–˜“Õ“–’VŽU’¬&‰w¿ŒidŒ ŽŒ“x‹ö’û™Á–ð›]ü–t™M$—˜»²•—ø•™±Œk”a–‘Æ•‘•ÔӕD‘&Ÿ™æ‰v­ó˜>I±–ÞyÁªj•äzô¢’²wV©a“[pô¥ÈŒa裌&kØŸ8ˆômΘ|igŽAnPb‰j^ ^vVgÄš\…Jh&¡íŒïbƒ¤°je ˆŠÏ` ‰Ùdõ¯t–w5ºœˆ|d¯«6g±Ž‘ž`^¯å•Jg€¢£‹j^ƒ›ü„d_4ˆsb…¨~“›m$ªÖkæ¨ÐŒÔk¥IŒmؤގ4n©Ӓ—kA³g™gqõªÁgh+¦ÖTf§pÞk™š3ƒk^Ò€ÏeÓ@$~+^ B—§utV*¬!“pç¿^£ö}Ǽ=›…u¹¸˜Òq µV˜çqb¨ޤa€¤=‹ò^°¡™‰¶Z¸¥ ò\CªÝÏh´¸ÖœÀy]ÇbªZ€ßË"­}ÒÉ©Yz³ÄˤNvƉ¨“{ 8yϲڔ{i^£¦†ïO° <…LM¤t‹ƒ['°•–$oI¿ñ£j~ëÆ«È}\ÈrªzȦxÅG£=w¨Äå¢CvõÃ2£Çu$î 3r¼ú—úk_©j‹ûgO˜ v6Q)´kæB˜ziM¡ÊŠãbO£¦hà§¾g§Oéc¸¦ªmcú¦†“£dѯå˜jݬã–Òe?ª•±h)¤;0gò¡Œ«e‰¤X‘üpx± ™ù~ˆ·P›’ͬâ’Íj§–˜d¢ÏŽsh HˆîfZž»‡h§¥(mk²¹—¨m¢¸½™µjæ¹™CgݺЙ nò·Q™Ìt“¯r”¦pƒ¬ü’?p:µÐ— s$¼›Xqo½œºptÌ¿?žvËSºÑ›]µ*x€âª,“jkÑ«i“Ch쪺’Qlo¡‡Ri€”’s«SùjL™afM†Šìiæ‘#zŒRŠ#shU؈îs_„ŒEwúc×–€”h$œu‚ë`6š)k[—Âz5bQŸû‡êiM¨e‘m~³tš6qO­“pš›–zïZä•Út¿SO—4|æ[]”jzº[Í¡[ŠTj¹ëšxξҞ²xj¯i•dn~®Á”ƒlì²y–ùfy½/œánÚ´%—¬hk£«‹s^p›KÍQŸc„ø_B¤D’t»­C™Ñ~[  ˆØhÀ—ôyZw³UãtBU3‘ÐyödͰ‰˜rì³í–_vê·Å—òoN¯¢•§k´§Q’hø¡æ‹B]s¤ùŽdû¥¢óg߉@c’œw2Qx€rfçI|ƒ+k}Lœ&ˆsh²`™·u!¹çšÔrc¬ÿ*f§¡ö…`#šŒ€]Ë—%–[ƒ“ÂyÍNÙpORw‘p™eµ™¦…¤r_˜ˆƒ=e¤’$vÚS¤’‘x÷_ø›D„l®¿mÔ¸k–ãm §ÒŠ×[ú™Ê€¬_œmxpX&—±~º]˜[}±aþ˜ |Qd™]{ûbGŽRkÂOGgNŒ;hòN·‹wf™Jy—Ë|]S›òƒpnr˜´‡lΞ©‹Ä[|£ÿŽJc»žíƒÙb£ "†Yh%®b”=}€£´Š3l¤,ˆÈdè¶Ÿ”+lÈ¿¡šSm8½Ë—hm@ªßŠ…eÚ£ ˆ:kâ˜8|‘bˆxg×O¶„,fOXD}£cUȃni*TY‰l]RŠ“iy‡cò ŠLnWž,‚·XžÝ‚÷ZJž.†udʤێxiS¹Ÿa|°•Nrœ£©ˆl^B“ýsðTH y§iå™ê‰sŠ›Fv›œøŽ{uÈ™†Òc‚ 2‡”d1Ÿþˆ»kž«†Îm@˜‹~*dQ”u{¢\½—J‚=j𗪂Èmõ…‚c¢•‹ b^¡Û‘ƒxÙžm’C€ý—€ßmd9˜¹…u¤¢¥°i»·À´ÌdÃØÆÏYÇÌkÐ7Á Åêĺ1»è¹«¹ ¹r¶¯µ¬°‹©•´°¥Ë–8®E h“€¤_¥éœA’?š»šÛ‘Ø–-šÖŒ›“û–àŠÝ—ÿ›ˆÄ•Xœ8‘—€™’t’ÌWŒ²Œù’.}¸w{„Æu¥p‚CqÇlÅu)y3xz"‰2}twù„ªv x"‰ ‡‰ñˆÒ’Û—\Ò”ü˜–Œh”*š“Ö”@šÜ‹á“ö–E‹ù“ž—SŒ,”W–jŽ “ÌžãŠ=-•e•A|Ÿ•`‹^ƒ”Œ˜ƒßŽƒñ|°éƒ\†:‹>‡4‰Š²4•³ŠÐ‚•Ó’"–ä“ôy’{ïÏ’%–æŽ'”Ì™&Œ ”˜ð‹µ” ™P •½–Ï—r𒓬Ÿv—7†©è•j|ª¥U“RxD¡Ì•r, |Œ5iøœy†g±Ÿ‰ûmð‡wr3•’>jp­¬“7lM¥g‹KcÀªïÍf,±~˜Èh§9)^4¡íй_m¦˜‘'iû«‹•Bn©š‘‡kœ«q‘bpI«Þ‘JqGªf’oâ©“pbȬ¥”³`㦖n`–¤Ü‰Éb¢£ˆ‹\«™ñ|ŠSJŽnÕZüˆjç_µŠ£kFKN§)‘1p@¾³£—a²ù•l«ÖŽ—hN´í•¶w²‡“Êm®Ë‘ cÓ¦È0Wè¦ò‰MY©jËeæ³D˜0nêÁô¢¹~*ÉB¬µ‡ìÈr¬P†6Ä–¦€ £m|-¾9Ÿ`vj´½–¦k˜£¥ˆ¸X¬ N…àRÖ¬F3c¶¨— kÔ½ížV|7ÅØ¦‚³È{ª_}˜Æ˜¥ v§Ÿt³Àúž+wȾòža|S¿jœ€wµºÝ˜²q3¦E‹Ñe×—Fx[KòŠk B|“;yAWПωŠgÛ¡¸‰Yc»ž÷ƒÏ\¤œš‚*V À‰@\5¤ìŽX`9ª–“êbYªÁ“ue³ª ”&i˜§F‘ÓgÇŸ„‡B^:ž#…ûc…¤‡Ž;t“«¶”›v­¥fz¡ŠÛ`ŸÁ‰fnœ‡NgD¢RŠym;ª"’Ör®‚“k·±,•e‰¶å—™j¨º?št¸é˜Êt«³o–t|²–Vx¶&˜êyl¼@œ4y˜½çŒvQÅ7³Ž4»³¡†‚¨°¿•ÅmÑ® ”9jO­”“An´¨„tk€«f‘qâ›G€ôauq»Oâ”þxv]€”{1\¯Ž¿tT수qÝ\‰ƒŽmz`‰ˆuØhâ—†Òp¡.ŒÊh'¥×zn,¡ÓŒs§£‹êqG¥"%e²§×{]Ü£DŠ%f²Ý‚bþ›Ø‚\]Ÿº‰¹eÞ†Šãl⣭Œ¢m¢»ÁMxäÄd¦Øyë¿2 Ùt³¹%œn¹h›çk§¼pœÇoƒ³“˜¥k†¨”4j¡¦“½hO«N•Wj²eœ,w¸º]¤u„+°N˜B{Yž‡+g‰–T|ýXwˆWpjA††q«BvOt©K¥öŒ$n,·S›wŽ·‘Ÿ(~oªš.zÜ¡Þþj3£@“l[°Ñ›9x§z–:tå–†€ß^Ѐ¨hL‚¨i‰K=¹‡´h°õ—?vSº‰wY·x›&t´©*“Gl}ŸŽŠåhR¡æ‹´kz¤‘¿pžžìŠm½– „o!¡Ùë|v¤smB¡ìŠ€_¾•x|e[ôžLˆ\l³/–pjÅñ¡ós»œílA¡þŠdÄ—ƒOdKœæ‹¾or¡ì´zžSŠjr¿™R€Nbõ‘ÀsQUŒ(jSkŽ|n [F’.qOS-¡LŒðk²®5ž ‡¿¦Ä”a}«Ñ>q%³a–tw´ Ø„ieAžÁ€.c›ªdoù©æïi\¥÷Œ.gޏgššwBÁ³7p¨Âoþ¶–áoA°+”vÞ¢¶Œ%m“;|D]øƒ5s˜c’}uoKc¹…zp`P·ävYyµ|Àc¸ ¿±u)§´‘/i4ªU”­hm¦ß…g£ Ž‚h#±š˜®wõ¤9l•$wÁQ,ŽçrÒ`ªŽçyµjç•퇺of”ÞŠVyR M˜À†º£€•e|›¢@’vw.£‘z†¢ºŒK|¤—Ù|bep–y{u`i“;|øis˜…ÇtŸÍŠQg2¦õ’èkê³›ÕŒ¬·™‰•JœjŽª…W¬Ý¡¾œ¢®Ï±ß½¦¶¿žÏ×½”Á1Ì-ÀÞɾ3¿èÁoº ¼ »áº»»Ìµ²·p±žª¯_œD’ƒªÝ› ”¡ $£ìNG™¾š‰Œ<”–˜å‹â• ˜cšŽœ †=•;Õ‘>9“)‡ùˆô|^tÃoO‡ xLpÚ†¬wØu„#uÑv!†UvÅskˆCvík/‡$uKm#ˆ}kêŒì‹‚ŽkŒ’4“’—t’6’÷“ç•åŒO°“v»‘ž’ŽžŒW‘oŽ^Œ-}p”GuטL…v§”c†(zDc…Ý€–ˆƒv刘‡n“‹èŽÉ•<Ðf•Hyu&ŽÑвêg”8޹’J˜îˆ,’X—‹…•6š†Œj—ª˜™“•™w–«›á˜nŒ^£ä•‚Ò¢¢‘¯y®¢…ŽBsx Œ?mY›î„,k¥â‡ðr=ˆDr+”ˆ}çl•ŽHxýl¼xjçš–„èl_¢üŒ¸p~®É”‚v/²å•‰s{©î‘@dǧёªi«’–ÿa;®–>jıEšrn¬È•Óm­© ’yln«]“qp§¬–üsOªÙ“GoV¬\•´cq±é˜zfR¦Ïjcj¥?Ž´iõ¨x‘Ùb ¦YôY˜¡BŠ g¨˜¬Ak‡’åt®V}¢x‰æm‘¸1œ×‚u¬^iì¦xŠªbXºä™h±»¥›Å©³7—bn´® ”*e'¥2ŒNcʦá‹d¦°#“þg¶Ì—qtʾğ‘…&Ç/«J‹ÈÇÛ«a„QÄp©ï|¹¾5  {j¶w™muø§ëŽ6m˜­i‘¶k³7•üi ·O–ÀhÓ»=š'sÈáê|ÊÈ©ûÊo¤Œy3Â%s©¾œÙuFºX˜v=¼õš|3¼„ž¯αח=op ‰JSö”?} G¬šñ…`­¥åkð£êŒ¢dÏUƒöZ­˜a}nXÌ›ë‚\õŸ£‡$U"¤ÁŒYZ©²Sh£­Õ“Gný¨ ‘=i°žwƒkYX›*}2W‹ Y‡bN£Pg8¤äŒ‚c³¢°Š°`™ ’‰äfè¢NÌiƒ¤è´p&ªÚ†p>«ºŒè_j°ç’ÁZx¸x™j–ºš-re·‘˜=r´³9—js(²Þ–Öuµ´'˜8v^¹ë›šxº¾›¶w“²p•¤gTªáö^Ê©޶^º«¯‘Úf»¦…މiV¤‹âhò­ë’'t3¬Í’Ltk 3†mcWœV]o‘·q³Jùˆi„Jtƒ}dNOÅ}ýb#V‰Þz)p𢗱…´žž}"¼9¤®Ú´Šö}á³ú˜fy÷°y‘©hQ­lþ_½§ûŽ;hªÞ“ôo„¢¢ia£«Œd¾¡Ÿ o©r”ùlºÃ›ókÃÄ¢–qOÅ¥Ÿ|Q`|ëzRl0Ô}Ymnšj‹Át»œÓ–\ƒµ¢¬\–± àˆç³x'ƒJ±^𸨬1•+‚ù¡Ü‰pʡψckÔš5…³nÙŸÙŽh{=¨Ó“ŸtÝ®´™Ãxè¼}­nšOÁò´ð¬s¯¢pšd¼Ø»v»ï± ½ÇŸ¸ÖÂ4Î>¾aÃéËŸÀ[ÂsËÑÁ_À´ÁؼD¾)¼…º…ºÅ·ß·ú²…­É­‚––YŸ‚—Ã’®–ü›™K‹˜W™”Š•A™t‰–†™ø‡£•Rš’uå{m†5~vÄŠ¯„:u»†‚zîn\„vojBŠq~muäŒ@ƒ=ç‰ ~¢}š‹~îx‹E{àm‰³z p*~‘}Á)…ˆó”A‘þ‹½’‘Ž®‰@—²Ûä’XˆŠ@•q‹ €ø“R‰xH•æ†-~w(w‰qD“¾vin’”ã}±sX“4ˆØ~ ‘Q’ÏõˆŸ‡˜Ë‰’(n3•Ú¼Œh‘á—6LÓŒHŒ9‹n•ˆ’‰™ˆ*‘þ˜Ý‡ç’Ò™¾Šé”Ê–®‹£“ì’Ù•¥”ûŽ”åƒ=£b’4|=¦‰Ur#¥ŽŽõk 0‰ýiž4ŠLoüšÒˆons“V‚jÁ“€„²ms˜Ú…£l€¢—Þq1¨As µ2˜õ}˜²•Ks%­N¤fʤێxi1ª ’n´ªÄ”pþ­Ù—½rR²|™Âoó±<—{f µ)™Ëjµ¶šam¶‘›Wn±—sl_­„”kV¬”ºkÚ¬|–ƒqB®’˜àv$µ†œíu]ÀT§“~ѳ‡™r—®™•öog´!šyké¸nœ.h]¶ð˜ëlè³û–°uI¥nyk—¥M†ªeŽ¥g‹Šl¡„Yt¥S‰R`7¶j˜dz¿¾Ç¡ƒ„ý¾d£}·Ö›ðm¡­^“)j:£ù†)^>ŸËmOØ£‰gÆ£<Š2l•±c•Dsõ¾œŸ“w¼ÄÞ©‡5¿’ ~Œ·N™w ¯6“ãt‹¶¶˜¹tÊÀŽž›ql»´”Ç`'·?”Îd}½œp<ÄŸ¡dz.ÂëŸ|w2¾_›5q²¸'˜"q±ð’ñmé´m–ürª¤£€Äƨç|_¾®¢œt=¨ƒ•Å`„¢ŽF`¼¥•Žêbô¥-‹c¶ŸC‡‡b}”ðz¨X ”yQÕž½†‘R/¤|Œ}^o®í“nÁ¶|™as­¦” jðž‡8^D“nwÆL¼˜„éX G‰~c/ Üˆ×]_¢š‹Ç_¥PŽïd¾¬õ“½k¯±–4sÚ¬è“3q ­À:`É´â•â^[»¹š»h ¸™lº³¨—mf¬”€kÝ©$’6j4°Ô•eiá¶²šÏk·‹™ülǵ“¨bZ®EŽö]š«\‘Øfzªl“Ïi ¥Esg“¢ñ‰üf¬¥‹¢kk®?’ÂpÍ´I—r?¯Á‘™hØŸ°ƒ˜ZfølqG’`[:B‧e¾M ‘v„§p®džÌ‹–¾ø«Š¿©ü‚›¾®¤Ë|¦»9›Þp”¾¾˜,n»d—¸kt¶f—älˆ¶¨™zlP±R• e¢«b^á©P”¸jœ³š¬kþ¼^&kXÂîlŠÃ¾šQlr¸é’Åeõ¥ˆDYç¦3ŽEb]®‘–ìm!´íš4w=µ<™9t¤²„–£m^µ™>t9¸pœu|T­z–xy¡4o £Ítp¡ù¢f“z}„InŽ!sM¹˜»|{aÓœZaô˜€Õ_nœ²‡äl£ o«´—‡sF´¶ ƒ©¬—©xežPŠgãýu·UêtwOUhœK…Ç`%ŸŽ‰}^Á¨‘$jªw“dk’¤”Çf%£o‹ªcz£é‹¹eW°šyw¯µ ¨z¯»£d|=¿;Ÿõu¡ÂÆmfŸ¿q›~gø¸Â››lU·a0nC»Õ®ssÄ ¦ ¿CŸñ{ù¡5…ˆ^b–Çw¯VÄ–Î|s[œ§…¡]¨¢/ŽycQ¢¿[n}›Íƒ f”£rT¸–±wO[Ñ£ŒïlÉ»Ÿºy Æ®©_{9ÂОøp´ÃVgx%Ê]¦H„ýśÊxª Óeª®é’š_µV— d´¸ðš oÄ;ª²€ÙÅrªQ|ÈĪj|ËÇo«wÇ&¬åƒo¸©›vq©Ø‘Sk©՗x#ª+šB~ø¡‘ªr…¨–pw~°i €º¼Û¨m…¿Ç ²î‚6Âì¨Uyñª`“h½œÂƒzZÝ›kŠLh÷™â†Ùo^–ó‚hv’\}TiÁ‘‚ m3œ­‘Þ}X¯Ø§t‘«»?±9–9¹¾¦&޽¦L‹LºŸŸ9„¨ãAxvªñÌrs¯¨“†l6¦~’Ìgh§f”½u“¤¡Ž¬re­§˜Êy‚½¬Õ—‚¿°¢Ó¹¬R¡g¿%¼°º¥ºTÁwÅ®¹uÁׯ½@Â…Ëé½UÁÃÊ‹ÃWÃÞÀV¼¬½¼:·ò¹G¸ˆ¶‚´I±v¯>¦Ñž¾ iì˜B’ÒšŠ˜rˆM–‚™{Š©•mš6Š(–Ê™’†Å‘5—ßpVr·ygv.i¿f„† yþsýƒ’vŠq͆y·rŒô€CzÖ]„_¦ŒÔ€&ŒÏ}(y²Šbz'm¿Š5{³sŒ~Û´“g‡“‰Ó™h³…˜•…¡—…çˆr•¼‚ê‰ê–•ƒíƒ~–f‚È~k–¯{ª–~ùu{’qvðpb“„}dx’¬ˆ†ÐŽi”•—ül›h¡lŠg˜¸žIŽR™¯£XŽd“´›¬Šè‰æŒCÛŽQŒ‰ršÝŒw”­¢,ˆ©’~ž¦†Í­œëS“Æ–YŒ6“̑Ŕ “]ž™ ’]‡Š¢X‘Y~J«B‘ltb¬ç`i„¢¶‹÷bLž(Œ¶l㙨Š@n¹•§ˆkp—šêstB¡Ùéq¦°/—öxŸ¶¯™˜{{¼ñœó~M¼Cœ¨yP° •ánpª±“ÖuHª•Òxþ¤¡€n¢¬¶•Õm»°%—¸noª0’[f;¬c“îkݲ혊o€µMšEh2³³˜œeÁ¯!•se¯¿”]f°˜”&fW³Âš s·½þ¦Š€{Âߪ‚ ºEUtÛ²…˜wj-µÎšn¸Lšíjþ]›ým÷¿ œ×p:²ó“ri« ‹ØbÙ£A‡“a¤ŸˆÖa,¤¦‡mY?©ÓŽ$b„¹Ýœ3uçïw¬¾DŸmR°È“°eÇ¢Ù†]pšÏ{Oeœ(]JŸ_„d€¢pˆrbå²,—©mؾø£îzX§¨ó¼:šËt«º ›¡x ʰ[ˆ-Ïu³c…¾Õ›ñj™³@”Xb5´h–Tf”º²šÏm¼<œ±sðºoš«o“±ê”åi+«‘ßhp­à‘BkA¿àŸä|_Èà­+…«ÈŽ­Ö‚ ¼#(t“«°ëe«¥µfeÙ¡qŠ—cž;ˆCb-˜‹‚¥_X•{|?Rˆ ¸‡z\„©Døfz°Ì”#l¹¸Ì™ogµ¨—*iv¢‰‹=`”Ø~µVÙ”c‚,^(œø‡‹eΛ/…N`e xŠe(¨UÓg*µX—it¸ºšõmn¶/šgptµ÷˜ök’¶y™g³¢‹«e¨ží}’Y»ŸÚ|øQ²“*lC½! sеNšýq“ö…Ø`SˆÑj Eé‚ÊgpG“;}sc¢g‘v„­]—{ü°šQyQ¼tŸuw¾·—eB¼n—gÔ»œÌoÜÁÆœo¥½ š›k¸±—«ga±^•äc±ë˜“kϸ$goüVm[šŸÒowÁ››”q⃑¼hm Ë‚{Y¿žs†ú]Zª’”Mo”±á—+u ±à”ÄrŽ­"‘j…¬A“el%«)“„o›¥{’r¢òŒËm\­¬•#u€¯©—s)  Šcb÷‘‚wÙM–±}Å\œÝ‚f. r4L¥Žâr³Ihœf…6_bŸ¬‰ef§§’v=¢áŽ‘pƒž&‰êgÍ’vy¬W ‘Gw_QòœB„Vbõ§†¯dj¢u‹>g ¢^Š™cs„—YŒyWlœï|TQ¡HˆÃeǤŽëd6°G“rbo­ú‹Q¾+—6_dÀœš…c¡Á2¢[o0Á|¦öu’ºmž¨yo¿“¢º…5¼žæƦé®l-žN„a`+œ„YZ›pƒXVþš™ƒÁ[ÿ–œ}Z^$Š[i’Jö‹ìc"MgŒ^fýL?žO~a ¯Œ•4kÀ8¡ s¤Â pÅÆô g{êǘ¥þòºSšHq6¬’dóª_ÒZ2µ%—M`m¼Ëœ—k¿À‹¡ÑrÕÂQ¥ÎxÃÄ#¨ë|¹Êk°j€¨Ê7²Y‚·ÃG©B‚²¼…ž1}à¶Rš“q”¶×›Ax ¢ŽÅp)¡ ps·²­š`|V¾+£~ûǸ°Œ„vÄvªæ}Ϭ—UnÒœÈ~W-ެu#Y9Žýxõ\¢“˜z]ç‚qèW5ŽÎu•i£á‘%z¡³«c‹8»W®¶½µ”¡]‰C»¢<‹¹´œÊ~M©×zy;­^’uͶþ—am?¹îœpη;ž®z¢ :l«1— ½þ«§™õÁW²¦g»o­·¤.ÁA¼µ»œ¼û¿%Â'»OÀ ÃÖ¾îÂôÊø¼nÀÄå¾›¿êÂÜ»Ñ¼Ž¾L·V· ¸Œ´Ý³ˆ²M´ˆ¯Pªñ™Cœ˜ð˜|—³Šk—ï™ÅŒY—«˜÷ˆ{•ᕇˆ^’“ÃP€iŠ©~•s zÌs~u$‚êt s¦‡Ð{\xš‹»‚|bŽY„í{RŽÏi~ŒÎ{´wŒ£x"mʇÊsßmÞz”~|•º¾œž…/~ë˜þ€®xþ˜ýGé’Y}{†7–·€i…E˜€à€ñ•À~Òx®• ¦v–}øvd“–{ou‘Iƒ§ß_±•ÂŽå˜zœ1›Y›.`™až;ßO“7^‰zˆ=Ž Š§Š71‘㛘‹´–¨ùŠç—2¥µŠ•ƒŸŒ„“Ö™r”“…“!“ú’ºŽWšE`„j¢ ¥zXª9ürs©5}f!¢…ŒßcZ Œ«l=›{Œ‚qn›‚‰˜q=žéyæ¨L•A{Þ»F -ƒãÀ¤¤ÅÀ² †y®½§ž¢{ϰù˜EyJ­˜Õ}Ÿ¬T—I{8­g•qtƒ¸n›¨B‘ld¹¬”RhB¬8–h±Ù˜ði޶Mš¿adº›á\œ¿£7oq¿;ž´r°À£ç~\´¸™,wì ¤Š–ež›‚â^°•Žq¢H‰’æhAÉÖy=Sǰl“+nQ»Ÿkz7«-•rþ—ø€&]펚yˆUêšz³Vš]‚D]¢œÏ~¼]YŸê…µb:­°”BiÀ®@”xaø¶ï–Fe¬iqØÁe›ƒrþ¾ ™’r]º“—…j2¶“—·eG¶]šn󹈜6ri¼ÝœxpþÀ ¢fuäÀ§¡v¯Ø’Ag …Í_Ûšg‚÷]ࣘ(j‹±}˜þq±µ•il~¬’Keá©ö‘>gå§Ïnk1¥ÒŒjŽ©p´iX¶`šžsµ´¾šq‚¦²’ºh…™˜„"Z…ž÷Šùg³©ë’ßt!›Z}ŸU^‘ÂrÂE‰gu,J’ÉwpQ¨šp€¯[Þ¡HŠ×e¥  Š'i¨šH‚ôež˜Œ~]WŸL‰Õfð m‰ gŽ ÕŠ­dÑ¡ˆ_èžo†N]¾ƒˆ^«™¢yYN–2s½S’—·s*OQ›rwúMŸ¾zûFÓ­Û‰ÏRd¹I–u`ŒÁ" HlN½Ãž+k¹® ”4m³Q—h븷š½{%¨ŽhF¡ìˆK\°¢CˆZˆ¡ŒŽ\œ…=cv”v‚ZE‡æi?C‘‚zÃT÷…leE( ¸y W@¦è‹”[Ô³C•×h;(šªnÄÈ6¥_{,È ¨–|V½ânâ´–½g÷±ò’4c<¸l™ fú¶h˜ÀeYºßšZf+¿·ž³r`¿NžŽw£Ç0©zcÈ#«{ÅÁä£6‚~º1›½|·—xl²“““jH¡ˆâh7›òcªzîf´·˜ÞgíÁV¦Mƾ²Ÿ¢|‰§/¾È½á¼S¶¹¼p¯’­Q«¦T¢õœ —£š™—9˜˜ÄŠ<— ˜‘Žê—6•iŠŽ•Ô”¤‰æ‘[›t‹LŽ—ú‹I†‰?ˆ|ÂwŠˆ)|fu#† zþußt\ ¥o¯ŒŸ{µoPŒxöpÈûxpl~uJi]#zhu®•ª~Øv›þ„ yŠ—N~5s‹‘~|N~‡ŽŸxÿë|”€¦–Y}ã|Æ“Q|üsb”¢};s-—õ}yt8“@}tˆ‘4}2wF;ƒi„?“…Ûk•—Š•ö•ƒZ–ÇvŒF”„ÂyŸÝ‚"|á“û‹6•_¡SŠ˜Ú¥˜d -Ž•Ù™ [“›–f•‘Ћ“›™ŒÂwÚ¦îòs⪋cou¨¿ŽÍg"£ÿ&iž$‹m"˜…toÔ• ‚*qЛñ‹Iq‰©Ë”!z<ºÿžÒ‚Á ¤{¹À=¢ÿs¬®)• u'¡ ‹Îr£Þ޹q°™ƒv®µ·š9r‚½±üym½×œ{D§Ç‹bcK _„s^¦¤¥‹±h-§Yd:¬9”•jõ¶œsß»Ožïyœ·ašw©¯â”MoZ«[“«k•°7—}n¾®A“žeÀ¯÷“Ük›¸eœ{‚ºDœoxmº¸˜Øop¿—›/r¶«•cló­›‘il’¶l˜Ws-Á†žu¾»R™˜j­¿ÿ_=¦hŠ\Q±#‘î_ü¼\™QhÚ¼ðšçsN°ù“)n¿ªº’Àg4µˆšøqLµ»™.rä±ø•½ns¶AšÄt‹±U–Kk-±ñ”÷e©·ß–hCÁkatÍW­…ÁϱĆUÅž¤du^¼#›h³b•”eư©•¹h ´.˜ãhó¶Ø™õlµÚ˜u®•” qà°}•Ëj¶Î˜•p×Àˆ¨ªŠºÑ÷¿š¨Éå°ÈŒf²B•E_¥ŒÙZrŸ)ˆja횆NbÛ쇲b¿¤œÎcX´Æ˜ši4¾bŸÖs¾ =uŒ¶]› o4«e’dÅŸ+‡X¬—ô~ÙV ™ÇK`á T‡ðe£$pÕ¨(’ZtT¸õ™`t7¿9ûqJ½Ü›oç¼ç›´p™½E¯t$¶9˜–m=®—“ i0¨â‘}fœ£Î?^9«Y“ÝfŸ³Èš9qï·Ožsš»è°p ¿LŸbp¾£œ×o;ñ¢øu{Ư¨ä/¸pšõxŸ8‡Ofv— }Ì`+ n½K$ˆq\i?b™eIû(|Aaº°¤•$t·Aœ“zͪ¦”#q §Ò”¥v–žÓ‰Lmö”»zY¨‘dnaI’–6v\QMž¦‡á^§“•bv¶ ™ØjFÁàˆge{žTƒÊ\8¥ófÕ¤cŒ)bÂ¥@Öc]¶þœùxö¹wŸ~È´@šxµ7šþvÒ²Š˜ýoÒ³«˜1n$¯­“fh_­s“bj¹ÔÎy޹üœ¦x¡¶E—Ñmìº`˜fléµo”^i®¡ªi¡²ù“olŸ»™…n¦½›,n©·k˜lmI¬† j©±b“Þipº,™³n5¹{™uv*° “‰qͨ°t^-´¹˜jeQ»xjm˜½ßž‘s¼ÚœušµÀ– p"°Ú’‘i¨´)”QiŸ²‘û_OÃ…ŸwÉ~¨þ~mÃ(¢ we¼z›Šh*µX—i±µ•il_· šqmr»œœWnZ²Ç–Öpzª‘Œpy«Ü¹gÓ¬h‘Õdy²tœ¸~R½ò©¸‘]·<œ=~§ŒVú¡!‡HWV›¾‚Á[H™A„ `ÙŸ†‰0f‘©á“h°¸Û™inH¿«™pĽhákæ¶­j,°Ž—¸e£y‹†]PŸ¢‡‹dè¤W‹qfî°’˜iz°°”¼mW¶Þ™ou ½SÄsé¾yâoÇ¿2žSq•À-žÀrÉÀžÁržÀtžVn<·L™h~§]_Ì¢Œ¶`ªª“’{jç·jÖu¼ 'uºVœƒn™»"Ÿjz ¾'›”oÄM£ yªÈd­*…o¾F¡˜}F¡WŠh£”VzW`…{rpZ$ iÛLà’)ivL‘0y^¥:‹‚l“´Ršx´›`u½µAž+·¯ šñ~A¡’ŠjjšÆyoRlœÓÚZ[ =‹!eÅ­•YkZ¹ÐšMm¨žûsÄŸB{Ŷž¾{ ÄjluÓÁœusj¿‰›s޼ šBl”»Ë™!j“¹™€sаT“lk¯£M…}Xç£ì†fΡ1‡5hk¡‹øf8±o™vE»žÃuà¸êšqn´³š—ïmó³V–šn¼Ç˜Õp9Á ›åi¦ÂˆžÈl ½ùœöp½¬(÷qÀ¢½^ýžr€¹X$²Æ”¸s½¯||¢·©š·xü¨~”ðvƒš‹iÓšÙ€FTk¥™ÉaëµW™|t³´ú—zsõ¨ÆjG©ún˜¨d’RrZ¥—hάבè]äµ±•Kmò·~›E{…²º—xrGŸºŽM=’æqFHö‰ìrÖN"œŒójͳšj”ÁTŸ¿lM¸ã•˜aa¯ŒPcõ¤)Œâd¦¢4‹QdÏ¢ÚŠ/cÖ¡(‡¨]»¨Œç[£¾7£oЏ$œénˆ®”[k¿¨´‡ú_)±j’Ijm¬/‘…jÁ¥à‘¹\·‰”Ø`4Àš£l½ˆ™hd¾üšëcQÂd¡òqóÄV¨õxÁÅf¦Õn9ÀŸ9lÄ€¥ôzØÁf¦Ö~4¶ÿ—’pÞ¨LŽù`e¯’•l̬Y“én¦Š>fÚ·§šÓ|z½¾››zV¸˜tԳϔûiJ²“˜ÀlG«÷“{hßP„Ú\÷”\x¥P‹’ýtœI’“RoýD|ž„i¤"Œ’E¯¶œB‰F±/Uuî´N™goSŸ@Ì`U•Ts5žz‰ÓnPž%€ßj”Y|švš„‘rWœV]é£#‰µ`˜¯—õpfº#£R‚¸7 ¹ƒ{¢¯ˆ iåšàuúQ§•œpêQ‘Šph]0š‡ƒ2|[§3–õ—űh©4¬ß¹¸µ=µmÁÓ¸Äg¾€ÄFÄ^Á’ÉÅ¿ÛÆûÄh½¨ÀšÀq¼2¿†»¼Âº|ºCº ¹œ´Y¢Æ¢< Œ™øš¼—ï<˜m’OŽiš¦•%‰ù•—”ŠJ”ð’¬/“Ú‘ýê‘®›ð˜R˜5žA‚ñ€ ‹£xÄv|‰x†zœ‰huKtÖŒºul¨ŒxuŽgi{v_i4Œˆt²g,”u;hÓŠq%cšˆÿrogÕ†½rziÿ‡XpkP„«nßh’…ÆuŸlŽ„’t"jç‡lt~j^Œ1wämÍŠAv‡j‰…tŸh ‰2t lü‰¾ugo‹Šzw n•‰CvUkWßvdi€’>z¬o‹“Ø‚´s¨N£%¸¦…–•±{yo»¬z¤y¶ŒnаãÕ“Ô˜ Žì•—˜f–˜œ–Ž‘’œX’5Âr–Cƒ¥uæœô„mÈ£=‹“m8«]‘Tn¦ÿm Ÿk…Èo›Pƒ“rr™Û‰¼ua æŽŠxG¥ü“{~¨¾—¾~­©Œ”ßwªV/læ™D$mç„€nldœŽÆw f ¥P‘îs~µ›› {¬µXš}|j®Õ“©tDªç‘Ìp[¦¬Ll¦õŽÍf2¡«†Ÿ]匃Ä\Æ«A–Ýt?¸„¢™€?·sžoz!½½¡É}ù¾Ë£È|»¶ž;sQ±-–7i¹¨_[b¤±;—n¹ÚœzwT¹®›zqx»ÄšUgšº@—èa±ú4\ˆ°ž‘#c´´R”f2¸è•hú¶C–æi~¶ø—oov¹†šþp´µ•‡lË«[‘hk3§Âjt¢4‰‘\¦ç*c¬´Â˜Åm¾/ž¡oSÁ»ž¡qP·C—®o䪎™j‘¦ž‰>fõ¤Î‡^x®¤,gîÀÏ„{œÄ=ÀtŸ¸š–€f(°“"fC´—Ìl-¾tÂLŸvȶ°˜Ñs‹§æn‡¦z‹¯kX£j‡bM¡ôЧiW£Urp°¤ÜŒìf·£>ˆXñž…[,–=}SX•û~àYvŸA‹1d÷® •+k]»›o÷¾óœìkG¾Ïch§»èŸqtP³9œŒs踑Óe>§g•d²”Kh¥¼„™àmw»Þ™soÉ»Lœ qK»|›o¼;›nM¾­œ9n=ÂÞž p,Å)¡kpTÅסçpÙ½òjà¬Ø’N_+£O‹Î_¬Þ“nu¹ßœmuò¹kšÜo@³­•qš°>š-}n¿šseÄN¥ý€øÐ§º$“ÄÊ–µG#¤YjA•œy]âŽQv•[1•fzBfšœùzpd†¨Ÿ‹±nH®‚“¤t ¸­œ-zI·yx9¸Çžp€ªµ·›^~Ù±#˜ju¬ªØ‘zI¶L›Ùv¡w‘n›‰ämüš¦zuRªª04u´|¢u’óÉ)¿\ž|ǵ·ƒPÇ߬:ƒ«1”ãu~³A¡‰±¦m¦å‘¨}í–¨„œxò 2y{¦ˆ½^N¨ÔÎYE®K–m³º™Bx&¶Îšyš¨×^i„œ6|cc’t`h†Fv´f]ŸùŠ•f¬)¢¡ ¸š±à¶ê´¸°ºÀìÃüÈN¾»Æ´Ä9¿ÇÃӼ¿|¼L¿]º-¼Ñ¼è¹8»Æ¹½|¶S¶æ±³`¢-£=˜úš€›ßŽÕ•ì“1Ž]˜=•‰ü“¢–y»–:½P“‹~’Í–“6ˆ)˜%Œ¥x zà‡†ÙpØd!„ùqßhÍ;qkj†ƒDpn¿‚œpgm„@tåiŒ„Št0bY‰ÝvTe.Šu’i»ˆªv>jþ‡”vn„…jso‰…t¶o@„.trotƒs‰o=ŠuÕo§átnŽÈxy•¾„œ‚ ŸÕ•|GoèŽ'{t\™‹áŠcT‘s“ý”Œ•½Š/“h–È:’ÿ“1‘hŒûŠÄ’­‚Az—Ž€{pƒš#‚—h¡î‡ÅkôŸD…bmnœ’€Šnu¡2ŒŒu…¤Õ”×|”¯,ƒl¬#™¸|K¤)“!wr¡€=n—À„abÂ’³zÛdù}%g‹RC…ÈlFYAšÍ„whá©Ò‘¾n±E–¶nRµ­™Þrø¹AžÚyƒ¯ú™úv¦ªH“auy¡œ†ºgÿ’•rJë›”„2cY¶W¡ …ˆ½–§ƒÉº žÂuK¼Ÿ™xs»Üžµyݳó˜ZoQ¥]`㣠ŠÛ\Ȳ–El¿* •tìÆ„¤”sQÃÛ›¸a¼½o—]<´“,^÷°Û‘²bj¶²‘…aEº/—3k½¼©œ¢q³¹ãœFn7±–Gk_§NTl¢‹se›£}KT¡œÏP_H¦òi¹5š[l[Ã6ŸÛo²¼X™.p¢ªŒh, H‚¤b£¢ó‰°k…­F’Ðoµù“m„¹¸—Am´’•*h ®²’GfÆ´2–l‚¾u›ÂsòÅ ¡Jy¶¼cœÇuº­›“që )†“fœü~š^CšÂ€“^–™Ì‚ _gž †n`v¢9Ž[i-¢Žoh°”P}yT¿£y PÒž¾‰X] ´˜Gjô½^œ!oS¾Ü›Úhwµž–@aP²ÀšDx·µ>ŸÒ…°Ü—xÌ­-“€fˆµ™•6eš¼š˜žjx½×™Ão}½œp.»ëš®lżs›Àl¦žen Ã3ž‚iÿÆÉ¡­m¨Ä1ŸEnI½Ë›6jûµà™:lÿ¨—‘„f¨­‘hd)µÞ•"i²ú‘÷eªÏ+gðžp‰ÑfcÁ“ îwjÆm§³ƒ÷Ú¨Á]œÃÓ ¼_’wªQ‘žmoj…Î^̃Lšk~Z7žš„Ik¾¬è‘›ss¶‡™‰yU¸ ›u•º2ž•wý´ƒš™x£®k”œpƒ­X”ëlZ¯—Üqõ³Œšx¶›q·¶™Žhv½–œ§n‘ÂV½s ÃÉ›/q’ÄPœ}qÄÌsîÕžèuGÁn꽚†iÇÀ6›j-Á˜šJk ½¬˜¸lr½šrƾ›%rbÂØŸ}wÍ»Eus€µû™]mD¸ßœLv=º/œðz²¸™Çol·Õ–!d˾ý› j®É¬¢ªsÌ:£=túÂAŸyqU±º—UsŸ…Ëel™s€ù\¢‰7m®k—ïu¡¶è™¥x­¿ÿ]„¿àž´~²U—du}¯•¶r¹ӛîwô¶¤™tuZ¯D•âu3¬z“:uÈ­•Çz6· ›iƒa½^š¯sèÅÉ¡2tSÅÒ¦p|½Ãž)xœ¬ˆ•km¡‘Mjù°™M€öÄ´²Éøµz¹Áâ¦?ƒë¶,›Eu¦Œ'e£™r}[Weœ—‚–]Ú¯ò˜:yÈ»W£~2Ѫc}…ħ«Ä|¾Ø¡ÉqÛ¼5ŸÌl|Á¢°qÅO¤n{ ÃW¡4|“Ã/ w‡Äö£·}Íöµû–IÏü¹t”6ÂÚ¦>vÀ¶r˜wlÇ®¨“¬jw·C–ëfí´ò˜ei×´y™Tm¤­…c›¤rŒ¬\a¢^Œ_Ìž‰—fh ÇŠPp3¬•èx0À§õ‚ À ¢Ã¢°ô“ r[¶ŸH Ài¬ˆºÀâ©Rƒ6¼Ã¡Ô|X±¾š}‹°—g~ƒ«j’ær3¼åŸ’ÝÂa¯’”\Ë£·Ç’ɾ°„<È®"‰)Â<«ÚL¾G«Ã¬½´ª+x³ÞI‰%©š˜ƒ¨Ž˜qýªÊ”3n±`—9iŰљ*x¹²™[yï¶³™ÅtS²•iN¨ Žgtz˜M‚&tl™¯Ž¬xó 2‘Ò}‡±Ò¤îš=¼ø²Ì²±,¬p·Æ¼o•Ê.¿fÉ8É©ÁNȰŽÁG¾Ø¹(¼Y¸~¼‡¸zººe·º:¶L´°ö˜ŸGŸ°‘Ì•ñ–Q•z•L—M–ªÅ”2•¡”×”%‰q–RŽ£{EN†¹¹‰T~†³†6pgqà…çkòdµˆÀs³j Š s'h6ŽSt¶iͰu%hçŒ v?h劊uj›†åsŠi„s'i­‚ÆsljØ5r k:‚wqÞmÁ¦pîl£‚r=iŒ…esQgZ†»r‡g“‡£s€ho‡ÄuYmc„ÃtZpü…{sUpч1u0n(ƒtr oÀpEsº†YqÚp5Šr iŒ¼s7mk‘Åwër1•,|ÓsØ’by£oi’Ã~²vç’ÔŒ3Œ¤’”æ—ô‹ì“N–e‹þ”¸—‡ ”é”å÷Œé‰‘J„»zE“1€io”D}´eû—€ßd<œ†‚i_ Ô„fg”°p¨µSŸR{¥¼Ï¦ƒ²¸™7}* ¿‰zpg›N…Àj¹˜ƒQjÅ•ñ€)mV‹Žv6`¥€l}S…—qƒ¤es®®—m¾ˆ¢»r Ä6§öw£¾ ©v1¬’“än•©v•×z×°U–"~ðša|HZþ r:N²¥ 9~s´5›Ë€¥®ž”*hN±–½kßµö–;vÀ± –në£Oid¢ A‡vW`±'•\gCÅ¥z‡ËÍ¥ßyÐÊ:Ÿ³kºÇƒžmeþ¾wšIbµK”¶j÷¸_—:jã¼KšFlsºF›kȸ™›Ejâ­1•Ki°£ÉŽÇj¿Ÿ–ˆ\d@•ZvºKú’Šq3I ¢B‡™`·²a•bm𽙚ËrĽJ™tp°²ò’–j¦<Ž,hÚ¯÷–¾u.´é—Ûq>·¨—)j¿¸F™fk9²â–jj@²˜În‡·Û™Io~ÁožuîÅg lw±ÂË ¯x µ~šVs£Ž`i®‡¯d€‡ù_r ªŒ+eZ¡(Œægá£ý‹ÅgɦyýlMœÊ†Ï`Ä–Ž€åS¢âŒ/^ç²"–fK·Y”Fh±Ø‘=bò¬ÊŽÜW´¨Yj†§z”Ÿ}§ß‘„v ¬»’®k¶µ—Ýi¾»Lš(mï¼üšÂr»‹šîo»£šƒkf¼¶›àjûÁ{ž•kÅŽŸæhíÅç‹nfÁœ•q•½¸›‘o_¼^ž‚v'º=ž,y޳;˜ójQ«‘ˆ[6¥‡œZ)žmA\Ì–¬xaWÂV£{ ÀôôxœÊ¦ð{c¾Œš÷pŸtû^S›±Rlš—gùŽ«‚ R© ˆ‡-nƒ£‰i&¨ÖÕkޱ.–Ör¥¼ÈŸÛ{a·@› w#­‘‘ìku§cކgº§,‘ômÿ¦Õ}j7©þ¹cĪ9ެ\R·F˜Ëk·¿› qÓ“›Èo Âl›sm3Â)œvp¦ÂÙpqCÃGŸco‚Àà›_mkÀUš n©Ã[œ†péÄ}2oVÉ}¡÷u‘È¿¡¢v3Çh¢ºtž¤nn²Î“dU¨lŽÊg4¨Diy±Á‘gj³Œ‘b^:¼>škDZ -uðÉ5Ÿ…qoºý–EgU«üŽkjsžæ…“g Ÿ¨‰fh¤Q’ào™¨x•œu¤`ÿlî¨.‹hhž­¥Ž=h´§(-ke§Z jþ¬“g:­¤“Ím««5”ñw‹«Þ“.s­±lš»z•ÁG¨›…ÍÅ"¦¶x]Èò§OqeÇÚ¨Ôt’»L_t «Æ““lŸŽöfæ±Ë›;vÄ®]ƒ€Ä8®Áˆ°¸³q}ͽ£ž-{©ˆ5i›–¤wÒQ*“`t£I£"Žúlö°#šõw»£G€ú´‚´xm´.™un˜·º™!k<Áã¢rxêÅ^¦´iËʨ£åƧ yÊÁc£ŸˆVÆU³ØŸ?Ì7µ‚•˳‚—c”£~‹G`\ k†„` ´\•Ök;¯V—pn¥dޱiÉ’nwãO˜S}WmŸä‹ôj]žL‹ër%›×…†n-§Ûæt²¶œx²G˜½o¥üŒPcå²­œ»yʾ0¥]½:¡{Àؤ~H¿£u€ÁÔ¤™ƒÌ½£ ÝycĬé‹ÉÈ'³ ˜γµ–1Å‚©n‡*ÁF£!ˆÇ°nŒǬ°ÈŽó¼¡§Ge²^ž7Œ3´ Ÿ&Œ^µ² ï‡\³âœÇ~¼º£0y¼œ¦x†’¼‡£Ë†§½àž§xÚ»½š‹kޱ5”!t©’}“© —M~¯¼™®…ç¬H™Ÿ´Æ¥àh´N­B±ƒ¼ŒÀÐÇ¿ ÇáÆ’Â@ÇV ¾NÀC¾ñ¼=¿j½½¹¸¿º ¸¿¶ê¹#±&³Ü´5—Ü‹ž§ŽÜ’O’뎕¿”1Ä–Ñ—âh’ì“©”öŒ;í‹N}¶bˆ¶y›r“¡‡ÝŒžg}xAƒlµb°…On6g2ŠEsâiÉu>kÆiušg…ŒºvfNŠÏugiᆓtÐlÿ rkû‚öskÀ„wuFk:ƒyqjûƒÍr lo„tÏko„âsKjé…Jtäk††±sl"†Ttyn„PtqrE†¥t%r‹†tkÍ…×tnfƒ@qsO‡tqPqmˆPrªk{ˆ¢rçkºxGs>•G|qv‚”ûyZrŽ“}Ø{Å’Ù‰|§˜”›ÌŽ¿˜ÐéŒ@˜=Žz—›”>ŽG•å‰})—ó‡s6˜á„$l – eÛ…e£=Žm±»X¡¸z¼À̧Y{RÁò¥€‚*«“{ö˜h!k—ºƒ\m§›‚‹°{-š4Љ{Ê–‘†âsm‡ykcd—ò„Xj™­Ý™Ól ª+t“Ç8ªEv¸›Ap+ óˆ‡g’™¿„Œgç³ÞšÊ‚¬ÇJuý’ërÿUù“qw“g¨œŠƒ`m)ÙXYʪR‘ZfÚ´¯•µmݬP‘­kùŸ‡c_Pží„ÆU¹­!“¥gFÅÔ£¨{y̧¤ãyͬ çqZʯŸm¶Æ‘žLkQ¿¼šwnŒÀ÷œn Æ¾£muؾ\'lÁ¸*—Ôhð­”õiJ $‹ífŸ™"„ÁeØ‘7w®X&’ räD‡¡Ð„ma6­÷‘xpº“›~0Àuž¼{×½zÚuvº8epºPt¹µr˜*r.·C™Ínä¸ã›ÅpAº@›¨rþ¹9›{tN»ÛœqÀ¡ž?oJÄäžu0Ä– ùxùºM¢v±^š•n ª• n©È“Elµ±š‘t‡¬þ” ndŸ¹„ŒX’ž´„¶]‚ M‰ûe£¢úŒCe©­¨•i³ÿ—žk§ÎŒ»bn£n‚wX]œ(w«D¨˜¾x’P—÷{¸`ëœÃ…gªN“©mÀ¶\™µo ¾ÅœtÁ¾Ðœôtf»»šNn"º›jþ»KFlH¾LjWÀ¾œ”f濃œm¾›¿s?½Á›òp‚ÂS¡ˆw›Ã½¤}‘¾xŸ*v“³]–°j‘¯Þ’»q¦ÂŒ¥pZŸí„?f¼tœ7shµ€•…g «dˆUMH ^x”?A™¼r.GD˜ÙvÝM§™Ø~êb’š †ÜiìªÇt¥F‰Üh£Çˆôd¯€–¨xZ¼É£Q‰s¼Ú¢L†I­’ªn0¥Œ‘e#¡¾ŠLhTžƒ…Sc*ž§‚c^Ÿ1„à`G¬žfù½e›r,Áì›nŽÁ\›ùhIœkÄTžNm"ÆZ¡¤mnÀ‰›!m•¾u˜NrQÀ˜Ÿ—„a* …`¥Ÿ)‡RdJ¥ÁŽZh$«^”¶h5«Ò”œlh«œ“:w¨Œ’pb¯ƒ˜"r±»1 ›u,ÂÓ¥Ñt©ÀH¢¬mYÀc¡‰k«®ç“/m{[‰jý”R‚f^¡ŒfQ­Á“üp¬¬õ”xã ˜Š|fX¨ÂŽ@h½ sˆkf¥’Ót¡Qû’ƒx‘Tñœ=ˆ hñŸyŒzo ¢ZHr¡{Žfqæ¢ÁŠ~iú®Ý’«o¶<š©x÷¾2 0‡È ¥ë}]¾ç—sp³­+’/zæ¨å•Ú…;²“U{%£Ê„ÐQÜ™o}Ð[|™[ÓaQ§ ¢hr­Ç‘Ôq–›û€ÏhãŒNpÃYqŽAs[Úšˆ†OpF˜‚„‰pÓi|ðe‡–‹~ýbIŸ¢‰ƒg½ ¶‹õfŠ T‹áb®—¯pÓº©~x–»Þìv~¿c¡{v§ÀÍžctw¿®œçr´¿ÑŸþu\¿@¦º‡Ñ¥¼Q¥VÔ:½(£H¼Ø£Üˆè³øœ·„/Á/ª/‚¹Áf«¥ƒÎµdž±†rªC›‰Š®€™)Œ’°pš5„p²¦œÅ…û´”¡÷‡£½‹§£ˆ°¦h„{ÆÚ¨’e¼z›Šh2·¡—Úub²ÿ—‚~ɵ:ž»ˆ¦¶1ËŒö«ß’¸Šb¯Gž†˜ðµ'«»§ÌÁ(ÂÍÂ>ÁÅdÁóÂùÃ3¼8¾ù¾H¼;ºÝº­¼aÂq¼é¹Àŵ\´'´D³;²O™È›%¢Ý’«“lŽ9‘ •nÿ’h–¨!ö޵„t½‡£z°m!‚XvJo3ŽÂ€¶ƒ•‘Ï„årè…r d@‡‚qjiY‰Ës—kcŠstlbŠªtÄi÷Š“ue©Šuºh†ˆásêmú…Wtænñƒ tÓkU„?sÒi …Üp¤e±„@r{kBƒúrõl‘ƒÚs j8…«tbjt…\sl†tÖp†„•tým/†Žu¢lN‡•vÁl6†Bt kc†Ørôm›†>oÚl‰ˆt³lÓ†culÍŒ5zÜr-“&}QuȘ»Øvž–¯|/|…ÃJ ’ü˜;Í– ‹Ã—ñ¢+|“å¹OŒåŒµ“é†é{,•܃àsb—(ƒªn‘˜„ukž›Æ…Wh¢ôºl±¹lŸÍz“Å ¬2‚ǿʡU„à¥ïÚ|²š ˆÍtҟ哟€¤ô—…åš&Œ~“'„¬txŒ€ãnÚ™ó‰8nm«ñ˜îoâÁÿª0x‘É­vy›¸Á—Ll›„–e{‘·gR¨Ù•{{;¨\Žq”|v™[ДdyØf—°}#i>œÊƒgg™° —Åp~»ÐÃrK®“kG£îŠe„Ÿ2‡@Y¡«ò“al„Áߢ |òÅjŸÚt·Ä^›sÝÄqëumÅ ´yúÂCŸ w¨Éfª 8ÌÔ¯+3¼vžlj—³–•b-§ƒ6c( ‹c®›¢‡…gܘC„¹g HŒ‡Y0°¬“7bï¶Çš}uxÆt¯‹·Ñ}ºî–pÄt¦Í€Y½„s×·Ä™Önˆ³³˜Uo‡·°›‹u’¼DŸÙx–¿Ž¡ y¶ÁÑ£õxà¿Ú¡s¾½œ`h̿՛il’Â>Ÿt÷ÁÆ£or¦¼Ã FmÚ®M—pk(«Ã“ lZ´´™$rí¶ˆšnG¤l‹W]åq„ì_é €‰`k¿¤¥ŽžlÕ®“•o¨¯—»p™¡Í‰‘c –VtTOÛ­f Já(jM„8qùRõ•F|¢W¸¦;‘gJ»„œ¦p5ÃüŸ_vÁPž~vʹ“™_l6¶šÔgY¹n¼¸œÕnç¼È›Âl³ºÿ™/l*¹À™GmQ»“nÃY 1rÆ+£5{Ãú¡ø{ƽ›Ãyy¼Aœ~ú¸]š {þ²h—‡tY¹šm¢«ûŽ+]|œ³yÓD”—o?ÇŸ~ìO¬§Š«iŸ.€òf£X†èl°n’ u ³É”Án¬¹‘Jjp® –óyí· žÛŠÿ·Óœï†~¥p‰ñcËt}ÔTp›!`š.!f˜ÕŸniž(‡;xª‚æn¢½n›}sòŸž™oQÀ›‘bŒÃ¥œwfþÃwiÄØž2kT¿ð›ŽmG»“˜¡r}¼µ—ãråÀy™3rÔ¼=˜Èn,·»• kûµÌ“gø·ö”vfF«+Œ¤b¡Ê‚‰[ã —„Z]á£ü‰Êd&§lŒØjC·«‘+nPÛ”u³Ä}›{q©¶‡ŒWê—ÀyªJœÓ„½^b£ùޤi\ êˆ±a ›†…c_D–n^4 ¥ˆaJ _ˆšdèœ)ƒ‡bѤ’Žh ®)˜ôm=°›NtA§Í”ùuì ¨‰&iz¤UŒHj-©®|fµ ™/oî²a–n›¯i“Éi)¦–‰Ú]I•”{éZuŽx€OЗqÄYΚ:~L`©™Ë|¥`Ò’èt,I{œ0`V·™ ~íX¿‘ØvRY·•—€écn˜0„íeæ–¦{´`ù•Ú{¥bP–¬~Sbsžæ…“g1ªXrú¬e’åu°•uƒ¾û›8w’³ÝLhâÿˆãmd–q~`¥ŸR†|`;šz¼Oé’£t8X,’ßugZšC|azœ¸|±f[™ÖyÛfí‘=u'_Ë“h|fŠ˜ …+lø‘á}öd*‰‚s&Z¬Žùw®^ô”¼‚d ˜Æ„Ùf»Ï‹6jJ®h˜éx¾µ¡b€¾ÒŸ¶{‰¸¼šsO·Ì–Nk¶ƒ“hÀ·Z˜ãmP®•@oÍÇÉ­8Ž{Æ’©~Šÿ­¸–hÞ Žúwÿ´ÂW›µ ¥û~Òµž‹…â ‚—ù«EšƒÞ¥Q‘“yFŸbŠ#qLš‰ùm…«^“øtηš$q„Å&§9|ä¸l™)hæ¸kšu²ü˜õ|+¸üžŒh´¬šÚ‹¬:‘¾ §›‘ÛŽ“´Á¤ãœ¾ÆZÄ)¼IÃ_ÄÕ¾a¿W½º0À—½¶¼ô½Å¼‹¼¿º ¹j¹Ö´8´8¶´qµŸ´›— l—Ï’Ì‘‡”¥‘­¦”P^•wŒÿs‰ê……|.~š9™–•ô‰M‡‚f{ qyi‰%zïm~†Et³e^ˆòu¯küˆòu8möˆatnžˆt]kÊ]vui—‹ uÅh^‰˜r»hN‡YsÀl……v'nÀƒÃrŒiI‡Js‰i‚†`s~o„QrËpÿ„s•k.†3tÓg„†zs•j=†þsÐm|†çu˜k‡âwåj’†$uÃkD†Nr‘hÄ…Ño@fŒ†:p†fgˆAt7f6†Øt‚h#†òuNpëðyFuQ—šv»™‚Rz»’؃Ô“?Œ‘Îß•±ž6‹‰—ݧvŒ¨’У2¾‹càŽ ÕzfŽ[xÞp ‘ˆwËfw—Ú~Àhšô„tnBž”‰Fmo¨“ónþº ŸQx¥½"¡Kƒ « –(„o¢Ž§‡÷®®ŸÞŽî¨0›^„–‡[pl‹¯zÓjq•ð‡äu«œÝŽ˜v“²ƒŠÆ·±EˆÇa«~¦-ŠJV•Ê}ûX•½}¡^ ˜ …Ùb2– |ÛY²ŽãoºU“Óu[…šY‚ºeÙŸ'ˆñiX±~—Eq(½›ŸWvAµjšXs«´ÃšÄvš²+˜qާ‘RjË«k’l¬ÿdñ¯ÏmAºÙ›CÉÊÒ±p–Êí±d“|ÉÆ²%Äî­”‡T¶šof°‚“l_¹©¢Øeµ§•pˆ¥M’ n¾¨)”Ÿr]¯¡•mkW¼=œÕnF¿¡ wÊʲŠÓ»–‡ÃѤ¡F¸ —lm岫”f;°–Tj•´W™ÄpŠ»[®s”¿ŸqNÅš¥úw.ÄØ¤bxˆ¾œ2kì¼tš}i¼æš/sɺGœQq9·5œŽoW¯ô”~j|§eéh“±–/oþ¹†šnÒ¬²‘6f`¡­‰ kƒ €‰ r ¤,Ž‚q ©*‘¦lg­˜•Òp¤³Žj‚–EwX‰dÊLÞ‰Ag¿J.’jxlOžûƒ%`æ¬q”=i‚¿—ŸoŒÄ ¢ƒr¾´œ_og¸sšËl¸·‡› k¥¸®›šoI¾ñ0rw¼‰›4må¶Í—ëi³î–(hþ¶²˜&gl·Õ–!dF¸Ñ˜LoÚÀ Ñ{bÅÉ¥äÌÁ(Ÿ†yc·ß—Êkj³‹–×h“·8™3mm®é“Õh›0…FašzZè¥ _ ´šboá¨x’Úo›­“ës3µ3—ov ½pt¦µ-™[mò¯„”µmq¬ZÕp¤…†Óe„›QyAX…–Ut~W¸A€²b©H“»|¢–Æ…-®[—¸ŽÎ²¼—ßp¸—¼l¾˜™þiH¾ ™eÂÂΛpfäÂ"œqf—Àƒ›[f¶¼Ë™>iR¶–Ÿo#¾|œ¸|MÆÖ ˆ¹ž”ájΩԈ[_à¦d‡Ã^ϬOÅd¯lmlŒ³•n´ß•oº¯%”Ônì̓nº·®•InžÃ…TvñÂÚ›¸p“£J‚þLȾpù@$š‚3W¨‘úhX(ƒ·Z‚sqLñŠ™nåHÊ– ~pS œÕƒ_]ô–2z¤U¬¡°ŠKf ²Ì™ r¯6˜sAŸDŠnÕ–Çyy\;—öx^[¡ùˆ‘g‰©ä‘1jp§ÆdÉ¥|…dZ5ŸÜ}"Wû•´x>V&•K})]Õ“{}La™.€gò™D|;\Ç–rx™O’âwˆR9–<üd ™¦ƒ#jî›ÉŠ­q×—P‡wjq•_zee©’ uà]8œK„†j'¥”r=°¨–x°Ç’Szg¦ª‹Òn¾¥Ë‡Ðd€¢ý„Ç^B,„çaø›„‚`¯œ8„ù^$“%vKVCunýW­ÀqðY%’-sÍ`8—ƒvlšÑyÖc,™þ~B^aŸuŒpmŸ¶ŒpÖ“}©\6Œ›tT¹Žy)_\•|„öos–$…lø˜.†¯j”°¹˜}ÝÁŽ¢+µ—)l6°¡“«h±+“þoı±“~~«³–Ív³­³“gjõ°€“ff´Õ“ l#¡¦‰-m›ÿ‡‚o ¥?’Dq3­1Jy-¶Û§Vˆ[ –••{Ÿ¦q”\}l¡\ït´—È{¦_L–„~„d‡žŠ‡»dx«ƒ”Uj[ºaœ9rG·\–ñqs²¿—´w#±Ôš‰ü±X›À‰y± ˜·Œ\¬„“*’œ¦@”›@µV£~êÃÀ²ˆÂ|Áú» ÁR¼y»Æ¾Ÿ¹_»^¿\¼›¸"½¹ºXµM»\µ¤°—¶ó´g°¼«¢# 0¦Ú™:‘É Ë—ÇŠï˜ Ž²‰‡Ãsxá‰j{6µ¹´w«W eŸ<œu~Wrœnw†uÀh †‡tžd‡ ubhΉ\x$o1ˆ¤sâm7‰¸rñkŠ^t*jψ»skf†Š8vîg€†¢sàhG€›o¨j›‚èq’k…;síj±ƒ)tjŒ„þsMpæ…ùsKo±†tØjñˆ(t=i0ˆ·rAhœ‡+tcfJ…TtÜeè…t`j&‡}t¿h—‡MuÏeˇ:uÐe)ˆît¿gQ†\tjmT‚Éq…qd‰×vAuL‘¢{Wu*”n~hwÀ‘§L{ç–„=ƒ(’»’“—mŽM˜¦…Ž—f¢Ð‹qE¤‘úƒ |„Žxo˜¼3mãšò†Ìj‡Ó‰$rÓœÿ†©j6¡×Šfm¦ß…gø¦ë‘qÈŸ¡vÕœF~8žß‘¥€þšÅŠÚu”‘}…jØŒ}{tlú–Ô†Ztn™µ†Ñoü©Ï•KylÄ-¯u_Ãt¦†—ž}ìIg‹¢o²Fj~Ø[@”Æ‚Ô`‚wÚ] Š@iâQ~1o‰P#›¨„f5¢ nv®ë”:j}¿=¢uµ½¢2vY½?¡ðx‡ÁÝ¥‚‚± —¹vº¢‰^cç ì„Ï]ë¡7†Y`Ë«F’[sÈp°¶– Æå°º’»¾¢«0Ž/°dš*}§ª`¬Ö޵b#¬6‘¥kH¨:kl¢‹‰@]‰£d‹b ¬ü˜iˆ¹E™XrÀ_ {|2ÄݧŸƒ,Ê-¯ö‰0¿öžz ³a’ˆ__´‘”h^±U•d`H´Ÿ˜^l·š/jZ»î›¡mBÂyžÕuðÄF :y À†›«op¹R—)h±¸Dš{s=·Æ™rA·˜™ o¿µZ—òkyµê“ìmG¶›•áqèµj“>mý¥‰‘`üt.e¼š„ h9œv‚•e¤ Ø‡ eb§Î‘ìkð¢ê‘¸pG˜{.f Š-jõXõ†?f?Kî“„yóUº É*ca¸Qžq¼Â¢pö©Ÿ?q¼%žp°·"›l/²­—÷i¶ šÆn5»Õ™½k\¹—Öeͳ•Öe°¯Y”]fÞ­ï“Î_¨¬£’ç]¤³ü–Plù½ŸGzÂÁ¢B{¼±›0mг•Ê_L­ô;]Å·H˜ iû¶C›$n¾±ª™wu$²îš«v—¸Æžló¿¢Ioj»ÿÿuo½$Ÿt€ô½UžVyÀ3ŸÒqˆ¹Tšõgâ­Ÿ_W¥B‡ŽXBŸxåT5™ráf¡ù‹.z²´˜vÀú¥‡Šï»~§šŸÀƒ«£•“¾æŸá„¸·Ñ”$jÖ¸N”Sk‹¹–o”½˜mjK¿ šzg“¿[šÉf ¼ÿ˜Ïgˆ¶â–~nt¿#ž«~½Å¸ Ð~À³–{cˆ£y‚WŒž}ÁUùŸf€6Y÷¦L‹a’¿õœÖsdÈŽ¨-ÕÁ£C~å¸r™>sº¸‚—†iZ¾<›”ló¼›Jl5¢Ô‚£S‡HmsG•rzXWo¤XŽEmN›Ô~ZЊ£gFD*‡ød'GÄ’·x[]V”ÝyJY’ssÎGLŸÚ…p^½ª,’zjØ ´ˆ(bA˜vu\2Ît©Uo¡wbZ››…‡cdªŸ“âhç¢Ä†ŒWÚšUy§Pª™“{]3™Ù|bb‘“úw>^Cƒz„i°‰sqŸ¤ÂŒ¹h¨¬Ñ”Ûo7R#nü o‘»]·«»» ¾I»Yº½!»_µ>»cµX´¶>²ˆ«6¯6£Kœ#¬µ›Ô ­ê˜GŠŸ—߆•_‚[o{p^ˆLw£lE—¹Ž\€A—~zŒn‚¦sdpÒ„írxg…utmeš†VuVeŸ‡¶tZhÔŠtän‹ýq‚jž‹IsÏgõŠu˜f£ˆtÙc¯…ÓqKh2‚-p~lykoák8…Kt“jv†YuÂe¼…'wlJ†•rImð…–s¡kAˆ×sxgɈKqjeVŠÇt³h£†`th…›s¼j-†¾tÊiʆ—uÊe;ˆ‰t¥c³ˆ%sNeó…þpNlí…¦s{rÔ„)swpH‰,wCr‰Éu”rð‹0wws)}ïxn‹ZÄP—ù¡Ì™£0Í£’’ˆÍ~’•w‚Çu¬¢zŒÖuM¨N‘esëªc” ye©®”jwŸ™‰Ùhs›N‚Žaw6†6h»›q†ym •m~Þh›‘ŽyEf ‹!unai‰ÛtHcy¤{il òxxg*@t YA•E€Aj¤£©’I„ó´ì™…Ý•±sØHð‡ÝjsL„’Ó÷këš ¬vUŸót}—Ë|£h'”‹u+Y®L‚¸Z˜¡è‹ødv°¿•-i‚À­¡rƒ¿âŸipõ»§r¢ÄªZˆÙºážy‚¦Ïúgt¢4Š,^Æ¢¿‰cc)¤MŠNiЭê‘4s­¡”×r9²¶¥?Ž §¢•‘| ¡ …fÆ¥·'jܪL“o¢¤AŽPh-œ ŽTB™{{‰I‚£ºŠ,a²•¢ož¾¡„Û̶G–η’“{¿*¡¸y¯°‰‘Z]®7j[êµ —Ö[P¸ý™›hL¯ý•^qå¸)›Ïu{½¥štTÄEåu$ÁŒ9sã¾­œ‘pѹšÙoÿ´—on·\˜l„»4œVnϽ ›kq€ÁÖ›ªs¦¸¸–pj£1…ÈWl™*xÔT]–èt‡U&—^w?Xmš }ðX; "‰ú^ӟ׎ŒmWš¿…´n}“Ïy:lèŒHn\RÓ–SxK‰¥§Žèb»»ªp²¾oêk¸™˜Zh ¶Á™fj4³@˜Åfϯ•8eɱŔei°9‘ ^C®IZ ­ß<`…ª‚‘ùdÓ©ó‘÷a&¬û“9c ¯D– iÀ° ˜sl_´s˜qn•³a”ƒf%¯u^žª½n_Ø¿ùœ1l`À[žIk}¼#Ÿ pݼ­¡9u5ÁL¢Gp¹ÄZ¢jl2Åô¢Qré¡*y¾TžyN¼Ãœ‹r¼¹Y›{nš­<’ßd¦_‹ \«*’“no®¦›’‡¨¾¡ª–‘éÁb¢r›¿+ž@x&Â,œ;v˜´Ç‘še–¨ÐŠÆdK¡Gƒccá˜w=S>ŸùºX{¾€™ßnΩƒzÇÌ'ªÓ|‚ÃÑ¢r»•Hg¬¶d–¢c¦³ ˜{gû¤ûˆŽb¢lqTfÁs½XR¡^Œýs¹ …‰ lv›°:Wq’Šr‚NΜæˆ,sΜ ˆ^kœt‚YÔ§á]l˜¨î‘wnÑ›°‚ÀYµ%wÎO¼“%_–¶„ÄfZ¡ÒŽ•k€µàškÆ­Ý‘µ] t†ò^ ¢Œ7p¹œ©f˜šz}–a–&ãkôŸ]Ž[s°—­q!¼Â£½{µ´O¡ yR¯6œxr"¦2’^a¤Ð[`ˆ¡x×kÿ£Â k–¥¢’Vn²Î“d–·zšêpHµ šöq+¥bŒ6k®—jx_[$—ô{I` ©Š” v1­Å–˜k)¬A“übô¦ø‘ãp·¢’Ásñ›ð~´_ášÕx8X$ŸH‡SjÈ­d—ûy²®é””nŒ¬ÿgà©»mgh¤âdñ¤á‹T•²š,kb¸™¦a…g´µ£#‡†ŸÎ‘ sÇŒ2xW[©ŽiunƒÃäŸVpõæ ÊmPÂË£pÄ®¦4tÅØ£7t6Æh¡VrôÿžŠmÁ½g™×n³¶–þt¶™0uq¼ïžÔxL·Ò›Øtµ©˜Ýl‹¿b¤q Á×®h’ɶ—óÈ]«sŠÙÈÕ¢©ÉÍ¢4}jÇp£ {5 ñt¼äš¤mÁœÂr§Á9œÁr¼M™Itþ»;š¾wÀl {°Âz¦Jyœ¾;ŸÙs)¾ÝšEs˜À)™ÞrX¹*—*k0¶Ï–tqø­!’’tòœ9~_ì~©\º<”$kÌò¡Ör6ϧ´sÆÌ£ûp-Ã%šÔkÙ¸<–ád©³œ’1dA¦Ð‰e:•øv Y“ŽÙoÑQN£ð­{ ²œïƒE¢‹Òa—¢Œie¨Å•lwe¢åãk ¡çŠ^c0±þ˜>wÈ«Š–vžŠ•fÌ•0€ _p—^„;c3›.‡%f¸¤[ägnÀ¡¡FsúÂù£Iuç·èœ©w ¹rŸ‚ت!’ìo«ñ‘HqŒ¢ÙØpç¢`“»u1¯›a}à¶ýžûy¹º+£¤u™º£_r]º¡»s ³åš”rñ©-•*s'´¯Ÿ}<¾C¥JvmÇ«ýzJÃo£ýu3´0–ÊiÝ 8…‰dŠ–|x‹[¢ ‹ŒÜtê¾èª&ˆ·Áfªc|$Áp¥î[³¶™"|L¬í”Juù¦ïŒºiq­®†j2®ï“½iä¶½›ÂrÓµ¥šur粞—†la­&“~cQ°ˆ•g\¬ø“æT?¼ŸgqÔ¾¥§Ät¸ã¤ƒµ¥ü–Dxc»xá^õš‡Òl4¡·‹‚s©î‘Þz¢¤­ŽÈqÇ¢¯t蹚¤Û’´¸!¢óŒg¸Ÿ€ Å3ªúƒ·7žƒ°ŸWŒ\rìF~«m“r€XD‚>h×S…_h#Mõ•S~Öc&žÞŽUy1¬Æ›Z†Î«n–^wÑ©špå¢!gd¤q_¯R–já¸T›…s>³î”‘kô©%ŽØbx¨4‘­iV§‘ækÛ¨„‘Émü¯Š•tµo—ïs´Ã•¦pz£ˆ‰"hª›=ƒÍgŽ•¢x;T•es¼I[˜uLÌV‚_Y½¬A•‚nj³„™ct|°«˜íy§¶2ž[…‘¯¬˜3tü°-’ ]зú—Ua¦¸P–ßdù¿ñ›6uú¿ö.yëº5˜ïnγð”àm8·-˜ÜmÁä„zÒ‰¸¥ŽCß‹Á2‚ñ¿Û੎Í1¾˜Ài>¾—eN¸ß–2j9©Že¦7‹¼a³µ‘)dË¿þ™:kCÉý¤Ú{³ÌE²ä‘öÉO³ä~¹\›Ôi¯Ø_WŸ‡‚`^;“äwÿVŸ¢nH­’.rxR¶œËa;ª’qo¸¹—™"rн›™ÁrK¨<‹­eXtE^h >‡õ^•¦©ý_ò®—èh µBšDq*¶™élÆÃ¥¢>y Ær§ù|Àà ¦zv¹!œ-uP£BŠßcƒšK~Vâ™v»X  ÕŠ[gÊ¢Î9k˜¨‡‘±i~´:–?m¹#™-qõµl˜Bqþºm˜?ku¾9›l©Ã«£'p1È+©q¾ÈŽ¥zvUÂz sG»´™Rg³Êw`[¦[‰Çen©ÞŒ?h_·]™Ìq)¾-¡ {ìÀ£w{M¼CžXx^¼d¢Ö‚³Éû·sš&Ò²½ê¡€Æƒ¥+ƒÆÚœÌwºÇÑžÙxñ¼ž›žt±¶b•RmH»M•†jœ¾ø•Hi¹¹µ—Úqyµh•¨sÁgŸöyö¦¥Òx›À&¢i{~ºÖš>w»ˆ˜·nº¸9™Sl½ž®wo¸išx䤽ޙjȤȉÊb½ð–wi Ê5mkãÍkPÎСðiÙÆVˆkÌ·±”Âe­"`^¤<ŒàdÆ™Sº`#‘;sŒQûŸÁŠ×mÅ·•¢Ä† ²œº{`«Ý•¥l‹°û™Äqßc‰š]¬™3~ÕPW¢[‹ i§ ”št… šp–|ƒ”i=îyYô•Ùz*W DƒT¬¼õœAs¾ÆG©~}7Ƭ?~YÄÚ«E€]»ß ®}ê´?•|õ¯FšÞu9§,–ir¥¡¨üs G‡L`*§œa^·¶‡œumF¿0© `µpžpy ·À É:ÀެA…‚Å„°ƒÁÄ…«y}RÀ“ŸqpЍɉ¿W“—™v„Pz˜$}$b‚²›-ÆN±ÎжÆZ¯¨ˆbÀS¤%ˆ¥µ»™¤_­@“Žr8´u—Âr8¾ žmuνY”lU¹»™—l|«¯’Jo¨z’vn ³@™So(¶M™Mn(¹Ž˜-n"¾‘gx7À„£—+µÔ~x‘ UŽýk…Ž{Úa­Çy“^›Lˆk„¢`‰t£Œfs)Ÿ×…Ói¶žð…³j©O‘Dyé­+”–wF¹¬žÒ|ôìv„¯¯^œ¯‚­œ"†m—Îhj†™‰/p¥N–0}o³òœm‚ª¤“ n¯N™m%¼äªó…‘°±œ„F¡ÝŠèo¢Œ¬n= Z‰wphœzŠusŸ¡0•á…©š¿‚K³CUˆJº"ŸªŽ®¶m›e$³¿œ—µú§°¤…µÐ¯ÿ®¸(ºÀ¹”Á0ÆŽÄ;½=ÇÁÖ»‰Ä²Ãyĉ‰²°½’»}ªb¶/¦?›ù¥¯òˆŸ¦ ‹¸u}—þxxc5„@nfs|'nÃm1}ßmüm6~tm k)ƒ÷q«lB„ár8jîƒAr‡fÉ&r h—€™sp ‚=r‹q8…èpClE‰Bs×igŒPsGhôŒ]sMe‘Žsëaç‹rõ^‘‰RsV_%‡Òs°_€‡êvôcV‡xåg€…/uk%……tMlm„RtSm‚–sšpwür§oKƒisÅoƒ rÆm±„skT†Ïs˜gY‡õt·jΊ¾xæj¼ˆIvoj-ˆouÞq!„eqoü…àtmð…åuÚi5…¤J–ʆs°È”È{.«Œo뢲‡ºjC°…Jk,Yжq,˜û…1lý™i†¡gw¥ÐÀn °î–p+±K›iv”©Øšo­¥J˜á‡}¦””º€`¦Ø“¤|çž[VzŠ›<Œ+|›˜yMjýŽõz³i7‹®æo¶…vòs¦‰JrºbÞ›KˆslŸ¯Lž¥†ÞµÂ¥“ŒU®´™={f¯P˜Ýyƒ§¶’1s~¦@veûª’<_Ô²ž”.gæ®&fÖ¥é‹ÈcK©{’›m[®M–ËqÁ¯¾–$t’°r–*tX¸Pšßyc»vœiv³ï–.p´©Æ³nL«‡ŽRf¥Jˆ…[†–%w%H•›d™XᮕNl7º“œ®uE¿°¤¬~\Áà©R€q½`¢ƒxª¶jšƒe~¸š—lUl´y“V¶•j^¿4›.}±»Ì™¾t§¸=™r¾ž¤{¨Ä;¨©† ÎͲ%„ òqÜh«ò¨áW¾bÊ̯íŠÛºf•§e8»•Vc»˜>kr²ò”(j{©²ŽÕb´<•²g½ø˜WnžÈ¼§ „ÛÝõÉa´šÖMéÂl¤®yB¶ —dŒ¨æ‘7d.ˆÔe{š€XâŸ1…’_ £޳h±)™ku¾¸œúy5¿¤švò²¡”zq럣ˆôg$¡ô‰Çc3ªª‘üi±–—m®·™#nñ½ýœjk—Ĥ£ q£Ébª§yÂÈó©œyéĦ¨»8¶œ<{¡fŒfù™”ƒ*\ ¡‹çmÒ§»’gqÖªŸ“ƒj•®.”ˆi‹«¼c¹®|“ëg´¦“‡ò\å«m‹Ç^ï½ÅœçnÈÞ§_t–Ç'¥˜w½Êšo]´K”c¯£ƒ¿LVŸM¿\;¢;‚b§.Š fÒ²–nrï¿@¡¥€g³ò•Äq«t’>mžÂB°%”χÁÁ­•¸îžd†á¿Üšþy—ÉŠŸg™»š{zu­„ŒGgw«8†dZH¦ÜƒDYÑ¢Ú„cd¢Û‚_®âŽÎgµ´:—ømÿ»øŸ‘µí¡H´Û•`n[®Ù’ZhÞ¯%˜átp¶Y›„zI³/™_t ·˜Œk¿î—˜ejÆô™mlþÉœÉp´ÍóŸŸrgų›äoö·è”cgì«…Ì^L¥Íf”Ÿe‡f-š„{‘Uyœû+Xü¥ ‘n­Ù•8o°4—ni´â˜Øl± c†-_’’-t:V5‘ît_X.Ÿ \p—œŽÖm7zk[~|‹btFt‡ÜexHy‹gã?Í¡‡V^·@šÎq]Çb©šxºÆá§øuߺQŸ‰{`«F™Þz£­f”ËpŸé…Y+˜’zwYÕŽîjØFÅ•ìsqEâŸú‡Vj®­™=vÙ£q’2oŵüœâv¸Â¬„à¿/ªKƒ®–Þp¨ ªaL›t@‰¹kGº™}ƒ¯ml¶:Ÿå‚>Åɮ߇†¹Ÿ‚€=§‘‹sx­Ò”v<³P™xMÁ‡£.ÂÇ4¨“|KÚekÒµr’ne`Ÿ%„ªf–{î\¿£!gÙ¶À™oñ¾ÿ_sžÁ+¢9{^Âñ£‹~-«G–mî—Ë‚ˆb…ýkuVØŠÔqºY—ÚµbTŸ4ŠunŸç‡Yl›ƒ6h™—F~Daô£ôîoŠ®Ì–Rt"¾h£Ï{hÅ­áæ¯?˜JsX”Æw³Wl’ºuÑU—–å_u¥h“Px£%ŽxqLƒk_\¢Vœi¡·T¥‘Š£ç•¢|¢hŒÊm¼£Šejء߉pΠ wÞ§_–|„Ò²”…†?¶Ú:‹2¬”Ä„bªa‘ƒ„¸ª”i‹ð¶¸ªþ¤‚·#·¹µ[¸,½ºë¾NÅ@Â.»‘Ä×È—¸ú¼"ÆÆÂC¹ ºí¼Q±éóµ‘à—ø¦3KŠ8©Jú~'•Nxhi»„“n?h{€Jpèmí7oPl.€5p/l€pÖin‚¡pÉf´ƒri€q-kƒtlox„Át$pŒ†VtÈl#ˆ{sñkˆíq¤k‹^uoiáŠúröaФq·_މZt`4‡0tF_¹‡@t˜`X‡®tÂeô„4t h€„ tµih…~wîifƒÀvjæ`t¤j%!q+j¾„RsXko…­sžh½ˆ£wak¡‡;vtk$‰ßw3küˆ­wûmˆêv u……¨À• }Õžš…tnF¢h’~{*Ÿ–ê…$š4²‰^—Ã…¹v¢·q‹³,ŸI}O»4©<‡~¸ ¤„cµ°ž€«3–ísY¤ápg ªí‘ a1±Œ”1fë®÷’ij¦šŽûiG¤ÍŽÔl‰¯6—ìsl´óšcuŽ»ŸT{õ¾×Ÿ¨y Äk£¥wV½ân¸;—“kÌÀlœo&¿¡üq¢ ‰²]¹ ‹Ø`¿±—Ñp?¹î›y’º‰œPtp¹]›jC½pžˆp$¾’ me½ ²fL¹A›Œf|µ=˜qQ¶”˜«|Ž»Wœ_|aºJ—©nY¼1šbveĶ¢¾çÇ…¦ï}¢Êi³{Œ5Ë÷ב¦¿ £f~}¶2”žcD±q&]ϵ£•ìhïºx›Nqg·Â—fmpºâ˜Pmz¿‘™Âm¶œ&z°ÏÌ´,•éÑ÷¸í•2ŧÿ~E½nœQlà¸Ò™íg/ºeœér¼¶Ø˜=l‚¸i™³j8¶›¥pæ¼O¡š‚¿Éù}^¿êšÄvX¼œ¬vű3˜õtm°D˜—u•³º™Åu§¯b•}m7¶Ž˜Óm6¾|ÿmê¾ÆœàhxÀ÷œwhìÂ- boŠÆA¬ …Ãì¯ùŒ¯»¦ ‚Kªj–•oÓ¢0ŽhË¢È>cq¬z•,g4´™_lœ³Í“cĸ[šl¤Ö…c\­ãŒÝc2»F›²rÄ€¢·y Âמ8w2¹[—×n¬HŽ~b´žw€2Tž¢Œ…/f™ª†‹soÞ£_†·hã£|‰“fH°Ã“Wq¿®1‘nç£ÂŠ"dŦ“vã«Ò˜ƒ%¦aŽfs²¸špáÄ ¢-†º¹ç›¶¢ ƒ¡]š_sQCø—UuBJÔ™{n\£Ñ€~`VŸj€Å\2£(‡{f;©½ {ªÃ•~m¤y†FdMyùP휹€v`Ñ£<-n)¸©œ¹y>À-{rÁe™ªlÂÂD™ùotÇ’œy[Ë¡ç¾j›)r²é‘ä`0°¬“7b‚ªhe¨Œ¸eœ©Š\_¢¥‡_ƒžEƒv]¥YŠÑ]ì²¾•¼f±¾”æf£ò‰Nd”ºup\ˆŠPllR‹šIƒÁg¬{‹ùisÑwmRuo`ÆC•²]±JË×]Gð‡†hCI…IZO·—™Ðng»"™noߤgÁh¡w‰Ée™3{»]Ç’ËpÁJ–ØrˆI"ž{‚V`Õ’ñq¤Iö”zÆQX”'}:^u”x~od V‰ÑbC¶nœãvɲ=›s~¤¡š‰ik&Ÿµ~[?–ïpâH—lÊFœKŠøh~¶Ÿ„Û¹Ÿ`ø¢kŽVnüš†þf¸¦q“rÝ»Q¢4Ǻ¬>†àÅù¤ux¿½x–ïf;ªŒ0Yš}´Z’µu¹RÓžO‰z^·µ?š×mµºÄ›nî¸éœ.rÁ&¥Ä~t«’¯m*u1RZƒ¹f(OM‰Ôq­\˜®ƒoiš@… h“™„£fÚ”K|db‘‘Áv~[< ‹kmè¯yšb}%½î¢è|Ñ⤠rf±%—”pƒ™x{OƒŠgH4ŠKlbO!šÙ€h¡¹ˆšm¢˜õ|Ø^Û™ù‚\j½ž‰Yz6—„øh[V…»e ¢×‡$m€ þ…§o|¡ˆŠ®w\§D„”®H“îƒi­[Œs…_¢y…UvÑ¡Å}íq"Ÿ³„ƒ¼²*§©c¹‘½º[º‹ÂºQ¾ìÃÏÂ¥¸}Á.П¶/¼ÍÄ4»>·ç¨¸gŸev±Ž—”£¢®‹P‡¨8ŽÞ‚¼˜.~±s$‡r9l;n"k=³oÄiâdpUkzmJk4„åpnlz…ýrØoƒ§qpçƒÏrVl›„‹smijˆþw¯lj†osmk3‰´sïpˆs€k(‰ÿr-i6ˆpäd{ˆ7qycº†ÛpÉf Š9sªfö‡’r½fĆru”kOƒ3tkoƒÞtgÚ…-x*d]ƒVtYeÑ‚žqjÚƒ®qDi…sŸiÂ…õr]kІsr¸mŇÖq™k¥ˆèq8k¸ˆDsÏoµ†Ësãq̆ x6rn‚r i…¶rk]…r}n†Qu‘q0‡‚oŸkŒpg ˜¥ˆ¡€¨Žœ‚‘n¾ž­å’½ÿ¡é„~©c‘{W¡0†ímèœ<‚jN ÏˆÞvŸ¢í‰êy¤¡¨„ v¥ÓŽfwD²8—^W¹ìžÊ‡¼Â¥ýEºÏ£X”»*§åŒô·¿¦^…¸P¨‰ï¬(š¨{ª¨Q“Ö}´p›òˆü·D¢ž’@®Ûš9‘‘¢€,{Z¨H“:l®³Y›Šsó½¨7…°ºä¦ÇŠ£¬Ö˜çzà¨Å”Èsì£ìŽ g%«"’åh÷­¶’öf¿ªNYcõ¤aŽ´dʦ̒>kt²O™˜qϾբ {Á¾¯Ÿ‘w ¾V=qšÁxž$n+Èž„i·ÃCãgVÇÙž÷h¯ÈG¤´ròµq—jiê¦ùŽ˜ab§Ž(m¨Ç’’t0§>޲e¤Æˆ®V­¬<­`|¹Ï›ªhÄH¨ sË»4Ôn»ª‘Zkš©j’$r‘³—q¢² “vc?¸Ù“%jÙ¿4›juÕÃÈ@qäÇ‚£ë|üƳ²^’Ú¼<¢ž‚þ¯ç‘·g\ª˜Œxaç«íQd‰µú–mŒ´ß’Cl™¹3—Ûn½WšuÇÀ:›»zBÈ5¦•…Í®!‰#Æ7¤¸2À¤qÁpœØfEÃmhÅ;žúnÜÁœäm‡¾ ›:qwÃM¡”}¡ÄÖ Ù}¨¿Ø™ÿsø·šÙn‰­”‹kVªÒ”vm¦'“8w› <ŠÏgùªŒ‘÷l²¹ƒš^u¹1™Bp²µ]•þgE¶˜™m±¶BŸNG²4£dˆ‡¸¹¢Š—«x‘>eTšfP šÇƒ‘Xô­ã—m‹¼ñŸµt½%ŸerG¿@¤qtN¶b˜åo'¿¨œ÷tQ¿PžÈwðÄ£y}‚ žqzv¸©•ëoÔ©·ŒChL ª„ñdI¬1"rP¼Œš|³°Þ”‹yÉ©,‘s5°³“>m\¹I™s®Å’kÙ¡qŠ—cM Ðˆ~cô¢-ˆÏc» Ó€_T­‘r0§.ùss›ï}«[P–Dy&Qš‡ƒˆa’žë‡Ld ¡†‹h½™ _˜¢|œ^6›W‚Ng÷šC€Åf¢”vpuO†‰;_ DQ¬jiI'œƒ`ë¶ß›={'Ä+¡Ã{/Á1šNqÂÉš tÆÃž'}“Æ¡ ž{Ž·Ô”eߤׇ]QÖ«D‘a¬)“Ie…®b’ÏhÏ»‡šŠt´·•Éqy ÷ƒ^ü æ‚GT²®“¾hc´m—Ïl ©¡üccš!(U:Œo›IކuUT)•v}Ð_ø–?zÁTÖ’z©­, må¬J¨mæ©Þ²aðª}Ž_]K¦‹ƒdú·žÃ¹¾Ÿ €’ÁïvªÈ“¥O|»Æs£'yÄ£rzNÁ¾ž0w²¿“šªh¶Á}™€`ľšäkÍÁÆ™n<¿ð™`oqÄ—žxx°Â6åt ¹0—i–²“†hÔ¡»…”b`™û~wb…™žƒmχ^mªN‘Ýok¶É–‹pŒ´|•Çl“²Š”íiü¶“—ël]±æ•m„˜÷€EZ~—§}{U£–x€I·Š¾k•C¶u¬GW¤¡„aƒ³*˜QfĶCšlmÄ»¸¡ót,ó¢3vTÆþ¤D{ÙÆ÷¦4}üÆ ¥u|ºÁcwƹ—Ço°M’„l®¦ŒÕl´ç“–uQÂÉ  €—º‚ž–‚ñ¸°V$¿«¡Äx¤g~ɺœ‰t°±ã–am[­è”ßj¹¢½ŠÈ_v @…ñ`0¤…‰»i’ž¸T^xŸ¯†ÁfÒ¢ ’RtS©~˜ùz­¬Í—¼t²¬˜v¢—‘úv8ç†jaœ{ƒ¼`)[„ef’_s)Xpˆe}NÜŽ"lK柆gcî¶Ñ›ì{3Ä#£6€ì¿cš¡u]½Ã˜ÉtǼ=›…uK¹ûšûjd«+‰[‰ŸÎ‚%L1¤Ä‹A^°¬”^jÙ±”•.oi»êš™v¸s˜§p‘£oˆ`\ù¡Ì„(SE²È“»k±²Þ–!sN­/”Újؤ”›ZÁš`ƒöTú(wœYd w”b•–{ÜUf£“Þvs¥›A5šT‹!ƒõ‰BoUW‡ÞhØGâ{sÖYn™Æy®]z’|7?Û›r™%M’†ŒQM—‡•r [=«+’aw¾ª x½¢¾{°Ö–nvØ™Ð~-]:¦sQJJxâVþ©y•Ôx~¹Š ¡ŽXmÙyeƒíuùf’·x¿VÜފ Vh¡ŠŸ[±™Z|‚a9piS™•î{cYQ¡ÄbdÚ¸‰ +™¿×§”Š°è” r¸©ÖIc*¥QŒîfš©ªoä°A—³qqª “Bj“§Ì“n§ Žf ›ï~tMΘJS5 +‹l”žyâ]V‰sî\ð’Å|úiñ…%ry¡,ˆ“k™ Gd{”~d]ëw\Xl—s} Y[£„‹\¹ª‰¢e‰Â—Ÿ¶tÆ&¤6xè¶…™rˆÝot’Æ|CpŽ–v{` ¬«‘øjš±¿–!uVžA„djåvp3[‰/joT6‘¦yéfÙŸw"¡Œ‹Eqv£Šs‘£´‡¡u¢èz…n¶Pjµ_êšÚeñTñ˜ßk9U ˜¾vgÛ¤ ”ººQº·¾ ¸Š½õº,ÂÖ¼®¸´®0°ó©ß—Ù”ñ´j™œ†ƒ³”šö‡Û« –e, ¡‰Ò†h¢1ŠˆÈ–ñ}zo…ls;o‡…v\qEƒŠrði8ŒpVhu~°pjm&ƒPsŸm®…u&læƒïsÆk½†´woj`… wãf‘…²wk…ýu pìƒ%s×sâƒîrŠr†˜tµkæ‡sf¶‰§p‘dã‰1m¦eÐq¸i|ŒsúfY‡úoée‡Õr¡kô†/tïhLJ\tfceˆ4tÛfD‡þsËi6†ýqTh¤‰tÃg€†^qj‡pêh[ˆPjw_'lÕcåŠZkûhŒ,pékíˆHqþd‡qd†ßk"h†4lšl©†r±p+ˆ+w¤r޹xìsØ—L†"Ĩo—ü‰¹& ˆ…£h‘zy®™+‚lÞ²‚œmò˜þ{!nzš ,s4¥ìŒÃ{]­%’ø{}¬ß€x"§ ®zÍ£‘Ià±­šA‰ê¨´•SS xÌz¬ ñ’í]°HÙ†µ® šmƒó¬M˜‰U²ó›RŽ#µœéŽ4¹ü“?°4˜é€1©¯’¡eâ©£\¥ªšhü ‰ p&›0…r* |ŽzçŸm‹ûnã¦ÅŒ=g"¶–Úl½²…”?iS²’—fp?µƒ›y ¼DŸ•{“ÁÛ ·}²¯H?iH¨«‹_ä¸"›øj—Τäl™Ì*¨wlKÈŸ]k>»Ì˜ßi0·â—ëfœ°éç_£†rd»œkg^s…iÞ»†#i㥽Špdg·h—(gw¼›‹h̵•8e¨®8û`u¬?ø_a±^•äc…·:™nmͲ“žg>¶¡’éeBýœmTÁâm ¼`š|o@»(›t—º$šÚuʺ?šŸ}M¸Ë—ñrh¯‘d²¸“œ.‚GÏ@¿è¬YÍr¸÷œoÂX¡}ìÆ@Ÿ4w¡ÅÙŸ0pħ fsѽŸ”v·ÀulH¿;™Öa›Á8™ýk:Áš›s¿ÕšttÁ¼¿{{¾­œcx·Ò–8l‡«ÓŒh›‡zp^C•†væYÅ¡[ˆ“gà¨ì‘Qr¸°M•­s³~”hf°&“`cn³³•6jX´–j™­’egŒ–;yðIô‡k&D⇆m.Pú„ h³L´‰Îm1F çƒøHw¥Ž€U£¥¾Œ¡]-« ’ÚfþÆú¤ÍwÉ“¦Z|Iɶ§u{uÆð£'yÄÀîLuнœ›jq7¹C˜l¸>—q³¼'šuìÂà¡Ï}¿ï£“‚ÏÂLªIˆƒÈH®c‰äÉ ¬à…cÄ%¡Øz$Á¾Ÿ5z̼¥¡w{Á±˜™qõ°5—*wô´˜­{Â¥$‹«d[¦aŽ)hôª–÷p|¯i™®tâ´ œ¦xL¼å¦{ƒ8»ë§´‰ð¯Ô˜\zí£‰uf¨¨E“pƒ¡;Œ3p›²ƒ1nªžD‚“`¬¼‘•l{¸ œ væÀŸÝzܼ¥˜Øs2»—$rÇ»Y˜—m²!‘Ða\¡°…‚TúžÄ„YZ¤>ßd<²Ý—ró¹=›¿y㺘™ˆvаl‘ˆd@¥‹I^å¦[#^±$•¯n”·‹¯„í¸%žq€a±ì•Þ`±Å—iã›fŒÔj”Öm媓°m£ÀE«t…†ÂÅ´”¾9¬ “¡ ƒŠðh¿’Ãx¨WOŠeqœX³”}{duŸ)‹.Z=£Ó–€ZK›I‹$^Œ”rne4¨ŽÛktÁ'£îxÕÄz¨)}„¿´  zz«Ô’Çg™£Ôhzq|c@ªe—©v‡º£ }ï¯X›—vœ—ŽçuD¥¯’æ¥…Ž’qD²Ô™tpõ¤¤Ž™`u›%‚Åcc˜pz"Z¡±†xc9¢×‹bð¡&^f»¢¹ùnB£žŒ|l•±å˜’v³¼\¢³Ò¾ÿžv{»–›rv¯ÿ“ýlõ,šN~`¸Oœ_}¤£ŒKeþ’a}Ú\w ×S{}ž»ˆ±m¸Ÿ¶ˆòg ½†ægJ¡FŠ7ws¶š·‚·œ\z—ÅŒb*œa‹h?œÔ€¸Wd£~mQe¢¦ƒLW¦¹{›£ršÇªó~8Å=ª–‚&±lš5}w­Ü˜á„·§‘4p¹Þ™ãkÙ»p™˜su±a‘ýqÿõKh†’ßw¶dû|zk“ Â"v ¬0— v®—yuc©ÿx’¤6‡ùvýœ“qßi0™Pf:^U™tn'^ù“$pëW{ hB‹’±L°í¼ÉÀÁÏÄÏ»ô¦«²­]š_˜å¤.Œ²e˜ºŒ­ —¥¬“:†ù¤‰4‚, k‚a˜ñ~óx‹‰Stmt¿‡.v1so‡jtfl … sýkÓ‚8ro$oªkÖpk£€apolÓƒ!s&i …tŸe3…?t6kT„ks›o„ƒás‡q¶‚Ot,l‘†v iˆËsud›ˆèqMc‹Ysbg.Œ®rñcaŽtAcÛŠ8r¤fC‡/qÏlB‡Ès"lM‰.vaiI‡Js‰i`†1rkiŽˆ[t–h×…0pÙer†Îqei¦‡@q¤f©ˆ6k!\ ¨l…ayŒ˜l·h"‰1kŒfõˆêo“_ц‰ov\-† l6bN‡šo%jQ‡0srÞ‡}t’qm²|äp’€ƒ˜{»–†Fz•‘qy9c“©{Xe¦˜£ƒl£œ’‡m(œ†…ãmÆ›Y‚Qib©—vz­»‘`´¥ @d©™®|]_—Õz2d§ŠÔrº£¥çrï¨ÔІb°®„‘üc,®ç“k^²®”ðg²Ô—]s3±I–Ex µX•‘{_«Žm[¬ÚHj︜Šs3ÆÖ¦VwÌË4§ZnÀvíh„°ã‘¾^÷©€Œ,Y„ µ’Gƒ›\~¾T8ž¿†&g£BŽYp¦rq‡ª£jùºÍ™”mì¿eœ¿n¹˜Íl<·Á–slÇ·²–,jÖ¹H™Àjo¼,œMo`¹?˜ßk›·t•êf?À/œj~¹ —U^ñ´„”ïaKº>™wnÂ\ŸwzòÅd¡2À,›Uy%¿oœ.x‘Âܤ½…×Ö9¿B¡»Ó9º;›lÂÕ æ~«Á$tp­Àè›§eÒÀ®+mÈÆ¼¦U{ÄJ£ssï¿'œTfØ»[—ÄdJ¹’•ƒl`½{šrYǰ§Ô…ìÅÁ¨Òˆ¿»é›ßv¯#k} C„aiü›n¹]Y¯F“2mŸ¸çšu8¸“™ uq¶?˜‡k´³õ•ujn³$•ôl²’“Yj—§¢`a —‰{ÖJ›‡:p6IÐ’ÐDo4Ô‡^g´¡žŠÈaÜ õŒdl ’‡j_j¢È‡Àa,¤ö‹§fçÉû¨û{ÌÊÄ©€|3ʨ¨hyÅj¢œxÿ¾v=¿´œÑs¿¨™‹p¾¾þ™nq®¾p›sà¾KžÿtOÂ^£7|Æq¨S‚´É׬…‡"Ê4©‡‚—ƸÅxPœzü¸Òœ¦}é­<—Yq§¸rœ2z¿¾hŸy{—¹:œsôµùšyr¯»–m²¬„”qbl:‡1s©nB‡)tòkF…„r>j—…q…ijˆsdi˜ˆitÏkú†Yr>i»‡KqËe8ˆ„l¿[Ü‹ pb”ŠMoºgƒˆ‹kze¼‡õnA_цºp„_ņMn‰^’ˆ¥qf›‡ÇrËmÕ‰x±nß‹eztp‘¦…|{eª…Ý}¿Œ‘}Éq9’ç~-ižŠ×l$¥\’4t ©ù“Âs"­“”ýuôµ/™‹{g´@˜p{«y“ÚuáŸÝ‹nªÏ‰µqd•´šg–ú‚àhg˜B‚‰bլѓ†w¬·ß›l£¾‹mjÝ¡Z‹|kO±ž™-}C·²žµ¹¡Ù}±À˜œpg¯ÿ•re«­”—e ©E‘k¢í†$`Ѡ»[Až"†Ye‹¤Ú‘ïsz¯ù•±pˆ·˜im«VêbY£ÕŒÆ]&£ìžg!¡!Œvi£Y‹kjv¤cŒ›i„¨C`lñºžŽ}Åþ¥ô~Êi¥§pÚÀœ>hªëŽ¿^Œ¢$‰]aŸ¬„tY)›obZ/žˆÞiý¡Œþo¾¤ÔŒBqñ¦¸LiA¸ß–lj´Ã^žìn¾À”Co’¹™ p­¶Ð–ºn¼Î›æpü¾†ºnö» šéi«»~™Dh:¼>škù°é‘Æa «[ê\pºâ˜PmsÂínq\ÇœŸ&uÉÅÞ½uÓÇ<¢gyÉN¥ò}Aʱ¦3½Äû¤s~…¿™íuY»†—6eÄ·ä“h`s¼ã™BobÃá¡J{ÞÄu£%xr¾Óœ÷jÕ¶Ë—Wd·C—HeS»¤™heÅ ¤J}ÁÅ4§Ñ„ô¼/œÝq˵ –³h­©ÝŽYj¢«{n:ÆÕ¤ ~xϱ †SÇj¥Ûzù½ÑšVoAµï“ViB°±zgïª?Òh…¢Ô‰šcá˜ò~ŒUp¤{Ù^gJ‘ny°pš)xȽ1ŸZs¹¾˜ u-²È–@lº§"ŽZd ¥þ‹ëf¨ÈªÓ}½ÈÈ©0|TÇü¥xžÂÑŸ“v%½IœßtR½æœ vÞ½ˆ˜Ào¨´J’iš²“!j›´°—Hm‡ºÄš§r¿#×vêÅÅ£u~:È¢kyåŶšªu¡¹Ÿ”­r§ ŽˆrAžõ†dÚ«ÖÁg¡¼cœ³pÜÀ.¤;xÀ¿3¥Nz»UŸÝty³‚™)tg¬D• z5¸k¡ì‰€¾ö¨ÐŠ—©”wt†¢ÏŒGrÒ¡–Œãn ­”ísp»DÍzÊ¿œ uÊÁ¤‰tÜÄ.¨Á{¥À»Ÿ¥w¶¸ú™rN¼Ì›„uÿÂnŸt¼¬\a„œj€ÓV ‰…e”§9’j²¯–Nnº/šžr[· –›mN¤…„<[µžë}ZYº¢<…–YœµO›zRδ¼óÏ+¹’[ÁE¡y캦™Ÿu¼>žü~bÄM©‰«Å© †“ÄL§û~qÄG§±t§»J ¢n`´õœn» Œ÷k¤™‘‡1cü¢^‘òrñ«î–áyu¯7™f|U£;‘/s¬À—x¼® ¶wÌɯ±‚]˲N‡´À¥¥:•±÷˜ªz©¡òŽ7hࢄÞf<¡f‰f^©/‘Ÿj³í–ígºŸˆuVÂË«l€£Ç–¯¾€̘³¬‚nÈ_±âƒïÄ2°·Šz¾¤§rˆÑš§¢ˆ ºœÝx¨ ¯…Rdƒ’]r¶PíŸm‰9lú¹¡q‚þÉ;¯Ñ„Ç¥ˆ{Ѽî˜òo´·q•ufL½.›xsäX„1¾J¢n…·Ë¡È…)Âô²Œ’ÁY­yƒ½¶òš–nq¯`™]zÀQªòŠiÊk´R Ĩ§‡Þ¼mŸ†¥»s¢ƒ€Ã·œuyÀo Ÿ€g³ò•Äq‘³CšÂ}á¼¾ ‚ Èþ¬cˆ+Äû¬™†pÆ-²”‡ôÃ7¬ý|ÖÃ¥Ý{(ÀFœHz9½H—¼t™¤úˆôi)’t!Z“}æc±ž=çoJ¥R>l®¼}Ÿxz´ÇįUƒô¹ÑžXw¨œ50j ’liø`@™Çld£—®hbÖ–÷raz­–€÷‰­¢çŒ†„™crbmº¢e‚°y«U•0Œâ°¡šÖ•±°œJ—Z¬¹›¦ŠE©g”n„ù¤Kb|…,‰¨u ‹¯utoY„Ào/p­‡SpŽl¡ŒFtÛl†tr@sƒsqóp0lk{”k—g适nŸ`.„ðqu\¡‡´tEda…TrÒcO†"t h6„…sDgA„;sbq…³rkcõ…ræg²†CrMg²†fqådj†ªpbF‡ásÿf ‡¤sja‡.s=n/ˆut¹p†MsUjÁ‡äsóh߈gsÕiÕ†\rªi-‡hs­hê†ÝqÛf¨‡7pâa‰ pa‰Kp€g6‰ßp>lô‡êohˆJrKiÕ‡áqçf܇œs§gn‡wMnUƒYv´n¿Š”yÛqº'„/ut=†G{¡•ùŽjƒsœ“Ž{Q¢ v‚¬Ž–&|²š¯}†¸Ž,€h¿¹£Ç…C½s¡ÿ€å®…™vݦ}‘äró›.ˆmg–Y‡bpü¦Íšß‡×©L—Œ~Ƚ÷Ÿú} »zŸ}ʵ+›éuœ´yœVy™º!¡î‚v¸ãŸ•þ¼õ¥w}J´ œvå¯Î•sk˜°—–¤lè³7›;tB¹5œ+uzÁ(¡U—±‚•¬v“¯š·~hºŽž¼x¶À‹Ÿgtµ´É—8k]«1•·k ¡*ŽÐf嘴m]˜Å™b3§}‘"l¨u’wi=µOšòt¥Ãx¦`±Æê¦;y?¼œølœ®¿”lΤç/gž¤MŒ¥dj¢Þ‰ém0 =‹pŸó‡vk{t‚-is¤’„¬dYºZ—ømeÉ.¦ßt'Æ<¤}p§¸ã˜l*®#‘¢l:³•#p†»RšnÁÀfÿkÁÂ6Ÿ~m¦¿Lt/²\”µnI¯À’|d(ÀÞPn Ƭ ÈrƤžêstÆ_žÇutű›©oUÆK¡f~Æõ¥S„×âÚzú·×–µfµÛ’Sc[°MŽcC±‘Ol$½hœx‚ÂS¡ˆw³½{ÿpζ§š÷l‚¶›™emÀ¹x™8nƒ·,—+ji´â•}gQ·5˜íf$¸7™üi¿¶x™n÷¼ ž6qXÒ7µí‡×㸫÷ËÕ©K€zÃ*žUs1¼³˜ˆk¶³I“eŽ«B‘ªh ¤²ŒXg¯£+Œ0f˜›cahã©-›Í{Á¨hÉ7«Ô~®É¬ú|qÂÿ¤YtW´}˜5hë«o‘ác¾Ç"¬§€~ȳ©¿~«Æ¨¡{wVŸèqϼªœ¶v˜·ß™^yï¯í’iò¥Ð†ÿ[p¨,®cU²ñ–nn³–qmz¸¾˜Mo9¿@œõtÅ?‰w’¢™Zq̯I©dD›g{Ó[ó“-uyOè›_}„±q“g=ƒ°rcdþÏrùgŒƒ s kÉ„srïh™ƒpo[c±·l^]Œ„r{b‚ƒZr(g;‡’syn‡6so‡lsiû‡Lt|gD‡=s,j ‡:t»k¥‡§v j[…Wrâg‡jqðd~ˆp”bo‰³rOk8ˆ¡q l`Šarèjbˆdq fŇñsPh…—t-j'ƒtumІUwInM‹Ízõi”c‡ëti’ó‹k|©›p–Œ‡ª¡šíЍ ä¸zÔ¦ˆ’D}è²x›^„‘º,  …¬¹Ea~q¿(Ÿ÷uú­j”Ãn„¢•Œ|pW˜Á‚»s|˜7‹¤z<°É£ Žv½;ªÁˆœÇ̯¶ˆ+Äè­l‰¼P§óƒÍ½ª…źݦ󅡺ҤɃ¿§æ|7²ã›ˆx—§’dlª1”êhç¶ržpqyíPƒ`Ìt· •ÈŒ³.–O¿q©Ê…^”¨‡}ÈÃu¥7wý¾¹žÏmç²þ–¬j6¬ƒ“’o ‡‰h—Ÿï‰Üf“¨”“p £Pg®Ÿ“øn¾p {žÃû¨1|!»?žësä­¸–#nW¡?ˆìZæRŒMš]},YF›Ôùc› „{d…™hñ`¤µƒÙb¿¹—±p ÊE§w_É §xsÙ¶c–¾hG©šŒŽgÒ©cŽ”eµ)–me辸œÐiæÂÕŸén²À3Ÿïs"»"œq¨¼žµmGÅ ¤Ír=Èg£ãv!Èc¡²xøÂ€›pBÁ‹ a~Ó<¾ö©ÔM¾¥·Â‹¤ þ³?•(hÞ°j‘Md=§3‰o]B©‰‹Úf·“—÷q¼x›np®»»›Ìn§º„œŠn`ºÍ›qoº¹(šbo‹µÚ–)i¯µ’N]j´ž–ºg°µF˜hoþ·ãš,ngÁÕ£ÀtýÈ«~#Ìæ¬…ÄÈ©|…íÃK¢g}V¾žøt¶¹‡™†mð³Ó•'k°ð“ÿg6­’Øg"®$’i´õ›WvÂ<¨zÅ즂BÄä¥ë~“ÀN¢Âs³ ™¦h§­>“Dfȱ¶‰É5«aâÆÜu¼&˜oi©²¦”]mݬP‘­k.¥¢‰Îb£:‡g^$°“ gx¹ûšÚoãµï˜©o®¶ë˜q¦¸šÿuºÌ›wû·z—Vn® °cÇ Ä‚‹]>/^]˜èzUN ¸…¥e ¨L»na£Z†aG®à…hý±1“Bp6¢GŠ]nv˜ozÊc`G€ŽY›@|5P “ÜmSüzjCVQš‚DeN¬9“úmõµ¤˜ nø¹r™Mmæº ˜îkò­}ŽcŸ+U^%¢ëƒqeÀ®´‹™kµ¡*ƒW!›x~Q`0™h{åa›|yÑU$œ=wåDÜ­ÏŒ+fn·á—q0¦ Š,b¨ž]kT²W•vq7ÅDªRŒ‘Ê®#‡¯Å‰¤Lzž²Š—DoùŸ‡c_¢ˆ†#`÷­È’ˆknÀq y;ÀOœKn‹ÂY™+j[¯JYnŸ°ˆ¹iX—J„¦iÚքA`£›Œ;cÍ£_Ž‘etˆ¯b¨¦–¼{¾Â¢²/’ÃÄݲ/ضܞ …Äðª‰>¬%•”r¾›{ˆWoé·uQcϘú€h¿¬k—|y`½_¡g|{ºšmi±é“óhô°ò•³n̽y )|jÅN©ôƒBÍ>­¼±ÂŸúy˜¯–¬%¡á‡àpµ]”–q® •`pš×€rchžØˆ•lÀ¼ºŸ"¥Æƒ£°xwþžp¨¬–·j¤ˆ6^7§`Ù[ö­•”|l¡°<–¢{s±M–²q1©@ŽšY%·œ¯vºÙ¢L…¼Ã‰¯±“/Ét¸ 4¹–ªúŒ—±šªp¤²f™Oo¦Å‰|a° k”ˆþÉ¡ÌV£ÇððÉ ˆÇc·Np¬ ˜È}®a›?ƒ·×©cŒ Ç|¹`—Ä}³ôn¾ç¦iˆÉL«êŠË» ”t2¡ú…•lg-q^~›3„|j„«¦”ÁrÄ®åŒèoP —kÖS÷¦Çti\n¡SsSÊš&sxg6“Hi eˆ•åhùaÅ•WhâY™_kÍZÊš4lØYR•œlWŽ™Ùv1j¡¤óˆ›|ͱC–YŒ6±5–1‹ñ±u˜qˆ®ã™ç‡1©j”¦„V®W’¿‚ ©Š¡†ƒ™‚`vÀÞt¹iD‹øm5c~‰ìk es‡ ošk‡°q?s˜ƒ×p´gÐMmb<mÒb¹ƒ tGgЂnpmgÆ„ñpÙeù…•qÊiǃrJij‹r6i–~¼rói$‚ßu‹pYëq^l­ƒÍq hÍÍn¾aû¡qUe¤îqBg\„Ëqðiˆ×tm¾†Fs¹c5‡s)d±†Zs9kÖ„ sämqƒƒq¦lŽ…Fr¼kg‡ÐqaeŇýodˆr¡k†|pteNˆkpÛ`Õ‡ìoâ[£†s}fi„êt¦n­ ušoö‡©w&nÍ‹¥xégä‘]t”õ‰Î~sž¯”…yª=™'ˆ Ÿ^ŠåvñŸY‹ýxѪð•å»¶¼†¸¬ª“ýyš·o’q §€‰µ_qšbk ‹uètw•#‰Ä€¥±(¦Ÿ“Âk³ŽxÆ\²*Š#ÇׯSŠaÇO¯>‹XÃ=¯œŠê¾®œŠd¿þ© ƒ¿Ðž}¯¡™Åx@Z‹Ôhx Š]`×£ãŽ]Ʊž|‡ºK¨F‘•ÎÛ¹žaÅ»¬´~w¾˜£mw̽˞“s[¾›Qib´þ•Þeš­R“kŤ?@iߣŎjŒ£ÚŽŒjÍžJ„ ]2«°Œ‚f²¼Aµy3Æx«½Ï½™¦]u"³‹›þmÚŸ…ÿS„‘£mv=i‹æf FÍOpÖS——h\cUŸ­Šÿg¡¨Ž*d[»˜™„n”™kAº;—yd ®¢$i1¤ä†òd®â’¶iä¸"›øjÒ¿VŸqعOšcl<¸p™Økнª"o)¿Ãž.l£ÅÁ¡rpfÉà¢@r=ÆæŸq}Äl¡È{sʳj—ÐÝ+Í.¼!Ô)»L—k¹7™3nk®Ô‘fÕ®º‘še¦¦Š_ ¥6Šøe8²à”éqHºÒ™=q"¸z˜¿i—»rCl§Á£¥rˆ»ƒ›*mÖ³{•ae%³– e*²r–Èkű#•‰p¾²´•XhÞ¼zž$r¡¼n¤wIÆ4¨F‰½Ôó»-žæÎÔ¶l’>Ä'¬é«½vžs2¹Å–Jfè»&˜ÕcÜÀdˆkˆ»“rp¿±¤~z(Æ•«W€Âî ”:»+›XyÇ·r™ás¨äŽg›£àˆ[q¿A¨ÒŠ+Æ·¨ ƒÂÁæ™?rÞ¯µŒva9¥t‡Üa¤iŠ:cR¡µ‡Þ]+«‘ßh޾ Ÿ²uRÃg¢¯y’·¨˜ôo@±V”«nå±û—9|ž¯~—Øt>°Š‘fa­è’g°Ä“mJªÏ}iÜ›ÅÇaGžC…ûkh¦¬Œ5p£ä‡:bM£î‹df/¥f]o7›L:k5’+s—`~’Sv^W—˜p~ŽY#“kpRH–cs«W2›2‹Âjî¬Æ—Õs&»}œRwɽ:œ¨w[¸>–£mǨ”‹pcË™ÈzÄW˜Ðy‹Z<›bªW‚› ‚NT€šœz[!–ÍxWYÑ€jÇHj’ nFL¢¶„"j¤²”Ýtô£øˆ÷b’Ÿ-‚+b´ø•{BÇè¬:xÊý­þˆ¬Âæž±}|¬”Hpè“óz¸[“>yç`¶£FŽkv¿O g‚]¿žÅv7»•]i;¤é„OUv“8w_òxe¶”}`› á‹(e%¢¹b!›2‡\[Ë¡%”NpÀú«‘p½Å©S“Ú j‘™{ᣮolŸB‡ÊXñšº†^P‡;p¢UênuæX¼¨Ö”ŽsŸ»8¢©~§·›gq÷°[—áo<­¯•–u¬°³˜’xÕ¹Æì€¢Åtεá“l¹œ]€if铨w”VV¤ÔYeŸ°Õ–ºsÅ£{ކs››~†—hE¥šŒËlDz1þs̲Êâw»¤|zmñß…/`u¡‹]2¦‹d±«“~m¦Žêg›~JO«x‡ j¿¦¬–;Áí±ã—iÒîÂW´Ì½Z®qž"¢þ‘dsa£Ê…`^®šÙv[A÷} ³7´ ¦jÙYÑ­£³§¯’Zbù—Á…Ut †–‹§±æªº”ªËtÅv´¯ÌKÇѵϸ§0‹ü¯•‘µq‹¥’…C`ç¡€²fñ&nFR¨‘sWƒ¡†iB¦üƒhCŸGiŒY›žeÐYî›ØiX,—Ìk`Ë”Om§c“Si´^)•%kâ[€˜–o(^+˜ m‡Y •Žu5YYÌ~üq”¦¬‹øɪŽ†Ú¨®Œ[„調‘̆ò¯Wšˆ»©‰”Z…Ô¨µ’M„Ž©èx€­›C€lyµtÚm§p@eÚŠWh˜a.†|khª…dwäqW„cu¿iÈlUd €JnVjr oÄisËnAgj„ýn¹l¤‚™omyqôlt€{rnml.u,oo‚UvrÓ}Ÿol™îpšj+‚Aq’la˜qëk\‚2rrii„=sœi6†0vtiÅ…jsøa‡ysXf_….r•i¢…8tqqß„Èrt5…Àr;s´…ÕqÅoU‡qžoj‡Ørði ‰~uâeQ„þj'YR†ÕlÇ`r†Îqei¾…¾tXo솛wr»‰wgn™‰spDc÷3|rtÐ’j‚“€œÈ‹wƒ>¥f§‚œÇ‚œp™¬‚Yq» -u~½¡¸y|¢bŽìu2¨‚p £iý§qgêˆ6r¬nÐ|±v¤òJ½P°’äÀF±ŽŽÇޝa‰$Äi¡è‚TÁتàŒ9ºÀ«ÙŒ˜Áë¬G‰~³¡+‚Ť ”–|L˜ ˆgs–³~2c(“twSM‘Ô}dn˜Ù‰äyf£fárK¦riްª–6qÓ²»–o³•–hü±:Udý«Si„£é|hõ ŒÍj飩Žuk¨XŠ´]ï²µ“iº¿¦ŸLxÆÎ©â~ÆÁ/¨À€2µtƒ} ¢á‹^hó’tJÓŽ!müL5’+s—`aœý†ÜlM±_™“vÀRŸˆubÀöXq’¶µ”g8®LŽcdl¡ƒ*eÌŸ}ƒTcñª ‘ÅiÀ´ž—…m>³Ö˜Ýnôª“žfk­¡‘¶c‘¸œ–»fš¿YÑmóÀµžZnßȤ¥=nnÈ£xiéÀ —{§Åг§›ÛÓzÃ&­õƦr‚Ï«¿Žò_ý¨Y8a”®¸“)e§¾ºbT§]Ž×mÿ®”És µ^—–oóµ,˜¨iý¸Î›­k½Ã§w;½îœr˳ƕg¯Ì“?ge§ÿg«¤MŠ¡fզЋÐc­«^‘Ûkí¯K–XyÇ»òˆ^Ä»¦+‘ɳ˜Ê¸n—î¿Ò£Ò|ë¾ ›ÒeÅ´œLaIÊ( 9fÜÈÒ¡ÀmèÆë¤Ys`Ç]ªøz^À§£wÁ²á•VkM©EzhÁ „-c矓‚\Zi¬t—›zÁš¤Y†i»"—vã¥WƒXãŸçÓU|¢›Š+c«£ŽŒùe¦³’—tÅÇ«¯¥‰@Òe¸±‘í¼G›%tú¨¯*d¢ž‹,l`qƒ8a£6ˆJdþ¯Ï”ÛsPº¯œæxs´+˜r=¢¦am‹°,›y„â¼Ñ¤>ˆ‹µÿ›0{±¦“×l´ TŒÆhW—_|Œ^š’Rv¾`‚"x^fœ•†~óbg!„mVŽŸð~”UB£Rj ±.šta¾gž"vÕ¿Çž3y+³¾•œpë¨ü÷jŸ „d\(Ÿ ‡fcœ=ˆÈcŸFŒ)b(ŸRŠÒ]œ¹ƒ·^éŽ;qûPe’´s˜]! hƒÇgc­a‘Imt¢|ŠŠ_f£|Š jÕ¶ûšz}³Ç½¬]ˆ®Èü¬c…*ÆÚª5…­Ò–vÎŽæuka ŒLsæe/¡ ŒszB¿Z ž…¥Ä¯¢Õ~6´–fk>Ÿê‚üXëqÇS„ˆjodZU2w\-žeˆ¾dŽ ÞŠ^…–o€»J¢š˜…ÞZž§”‰q‘£“‹·|ƒŒ«s„Zu‹k¥J̘i‚ºX`¹# â|ˆipºN‹€vaXΟÃhv«£”ümø§“’Shª­q™Çr¯%›™x¼¬ ˜{wª†”„t ®•“ñq٥ą-ažý(_÷”¸y<œ|† Z¦RÚmn¤èrh–X}`Uš|É]}œ³x^[Þ¯~cúžtˆ$j$žÁ‹¶r½¡w‘trŸ¥Y’Ða´§Ù·`ƒ¥‚‘ËiÜžÓ‹•iH—,øgP”¡€jà¥è•Ž€¡²ö˜ˆm¦ê[‹C”Ág˜|x]]\“ saPŒ£w&q¦“²~‡vd’zRaZ’{eÅ‚ÔlËc#ˆü„wà¥q¡•“¾Éöú\Ú`ØØ•°¹  š<Í|®a²œ!z§UÙŸïƒg’ð€CdÎôq@Qè/„™hT£ç‚çgûšùeSƒžÄj _Ñ™õkíX€– n¶_b’Yjj]c“hƒ\h•ìik[?˜çnÏYišÚr:U”nvpWže†°r‹£6ˆˆxʦ:‰ò|ݦ.‡X‚@¥óðˆ±ðšù_¯¬™–˜¨S‘ûƒ¥Ô~dÞ‚zkнl2hnmchŠ-hYaØ…hk4jÛ„—qn†isDi?SiødEýj­fŠ{$küg=€\m)h€–hêeæ+jøhz|(khú+pŸi<‚ºt@mÔ†Þy²q#‚sFlG‚(rìm€²oþo”‚ÞqÕoºƒ·r/jz„üsin…fu^iq…r0iá…ëqrj‘† s2k:…jr„ky…rpu…ÿrzs„ßpÖrÚ„_oznê†vtj…‡t(c†øn*b`…émßhç…nq²kŸ†ítæm ‡vÑm§ˆîvtgX‹rËb“ˆ~~v«–ú……†S—W‡šÏœíõvšz{hRœ0„ p:Ÿ‹*w —˜ûpÊw„c¬›ÝFk|˜ýz“jRŒûoíhF’hU]‘)€@lî›’‹uù£W”š€jª‰˜Ö¹ð›#{ȲZ”‰k8²…¡³VœGý¾©Ã‹b³“˜|ô›Õ†;uü„‰pYaô‡èou[H‰in+Z}€h‚V €ÒiDX:†³k\To‘uEY¼¤qëp&¶ š]vz¸ä—©pí¯qug³¤‹sad ±‹øhϞ̋-oΤOŽïk«ªßrb޽·5n]ÅͦÖvkÅ‹§Ùv“ºæœÝ~P®B˜y°¤Î‘§x{nˆ¿l)šŸ€f¢­Š˜nm¤¢-q[´3™ös‰¾/Vv¸[•‹k¬°9’ˆd§ªï¤e¤w°f.¥ ŽŽhA°w“õj2®ï“½ií¦ (fŸN†YȨyÊb8°ö^±²’efbµ›–ƒe^¢›‰ùh¨jqf§}‰ãmp®p•[$©¡—h}¸¯É–qnž뙅fõʹ ´kÂÏW¥mRË5¡®gÏÊ!§€o–ɬ&~‹¶¶˜¹tª¢è‚™[ÜœãyˆRn ÁƒZaº¢ ‹Xfq´·¡×ƒóÍQºªŸÆ¾áŸ4„œ¡ŽTàžÈ€ùSå­¹•Áq<³¨™}x&ºÔž†€àǶ³.Ïó¸w“ ¾ ž¸wœ§‡øb&œ‚ƒžaj—`z1[¡§‡¥jFµcš×}¦¥û‚‘Áª¦Øó´ží{®·¥Ñ„©¿Q­±Œ3¸ÜŸ,ê°I™tÝ¡Á‹8`˜Ê€ W$š;‡Žj‘›ƒŒ}1¢µŽ+|O¢ÂŽbÀ§è‘Ïb{¬š;p··ï±tÀ©ŸåpÍÀv¢Þu´x™©t'¬¡’Îq¢­~“Ðmp®¼–rp «¥– s ©€”Jl«o•¦ið«T–Òm¼ XŒ}mäšn‚¼g„¤ã‹*kn± –ôn¬Ë“*l>± –9q®º‘ŒzT¿äžUzÓÁ9¡EwÅñ«_…o¨á˜ƒ•‹âs÷`Šp"a¥ ŽxÁb¡¯ƒ}ÅU¤:~>¼ žv4¢HübÕ”lYS|^F‘}»`àðˆÿh)¢„‹Dbç—ù€vK“’}dTÍŸûŠœk…œ°„¬c¶‹“n?J:ƒf\é@“‹u†T?–¬vÓž¦xFS8œfxVn«0‘¦t §€Žbmлú¤õŠïȦ³ý•°·„›+|¢Û†+[ÿ¦—se÷¿Ô¥\€©Â¬«É…Å¥®ãŠìÄÿ®™‹Á~¨"…Æ»2ž¶vЯì”ðm“=‡c³˜ë ^Ì…Øbµ«’ùo Á棑€×È‚¯¦†NÀ¥ }ø¶ÓœNxÁµ%žˆ€ë¬D–› u?»š˜qQ»’ž³s›µ›;rn¶<œqsR¹]žbvð·vëtŽ®c–‡oÊ¢˜‹h¸¥=înϲ/™ÜvU¹âžŸy±¹>Ÿ x´Mš•uI¨4iΩÌ"b_± ˜Šn ¨µŽžt´“Ì{"`DŒõqqZ§œL…²iK·š9x˼}vÙ¾â¢4z{¬8˜7jYŸ/c›iŒFkð–î‡kÕ ¼Žt¥ä«j¤¢4tk÷š÷ŒÀu6«7š`‚µ¦]’—l$žÊ‡'cC=q5H› eˆ—b®›Á‰ƒWO›‡E\©Ÿñ’Àqš­tœx|Œ¥S‘ÖfY CˆtT™±Læ’WxL‘—Í€Êa–“Iy8[a’+vñT[¢…à[?§×sc¿M©ˆüÈr¸PœºœŸˆ1$m`ÄlKÞ„¹cxGÄze5IIoÀJ”ž† hµ±Sœ5ˆ±Éì»ÌªwÑÁ ©8º½¢d~Ð«Š•®iݦ‘^nt`…Ÿd̚ĀÐ`_—k|¬]~š1‘fk›ùÍX ¡”‰pd™Šßc¢™š…„s{Ÿ¬Žñ~ ˜YŠ{uAŒ@yQgÊ|Üg<\Ú…3o0\2†p€T›„‘lQû–C…ÅlZ›’ƒ”_œŸ)ˆêeŸ™‰Ùh¥”‘àm±••hs¼ìž†sܪƓh]¤ÔŽ»f9¢×‹b™QwüZј´m5W˜)l|VS–öl^[ñ•énoa”•obÍ—/nµdF™FoYtšp9i3ž®xÚnI¢NŠuW¤^ŠvÖ­6’}3¨³ò"ª¾‘¤…+° ˜€‰Í§$~–¥2Šf{â>ƒWf&ß~ûqÇŒ½mË^… e'RɃýhéaö„9nÿjÓ„‰m'k„ßkEl©‚iià€ûj8d]}–j.c›y¥fïb‚xûb:Yï{h ]ôxõdtd+|)i=kâÕrl‹…áuk…—rßmÜ…+sMp„îq¸iz…jsbk…}rƒk£„öpjÄ„rÂi„›qEi´Aoi|„ùp‡j(…þo´j…\q-jþ…AqWiÞ…n~kÄ…\p lC†yr·j† qeІ%r(h„¡pîg…Ós@lÍ6slî†\v—pjŠv”nF×wûnÜâ|hu ‘~€W€Ö ¾–®• ·ê¤+–Ù­P•_|ˆ¢È‡xfŸÊˆÕnÖt~hÏPeÙ^m†5o>f Œ>y™p¡ŒP|lwŽ|Bk<‹:xün„Œ‚y«kšá†pmù¢>gn¨÷ŽPlâ®û• sÔ¦ êj¸ž?…À_B›8‚Ãcc“ëysb³ŠûrŒYêŒgz³^n˜Az£/šÖŠÈ›¨ŒŠqÆŸÃ&v¡šm‡=o>’~ƒf Ÿ‹·rtª–“0w®²Ò˜Šlw«M“/`ñ¢"Š'VŸ¨ù,lʪz–d{j°™žz޵®˜¤o¡s‚ÉM©dy­ÅTŸžwe­¦†gO›È|¢W8›`ƒ"c¡$Œèi%­œ”Sp¿»ik| ¸—™ºud¤_ЍažC…c›“Vt4S²“ÍlÌH””^nù@ šÏ{’WT•>vb]ס‚ëjÍ©¡dpÆ¥F‹7mu§Œ(h"ªz=d5§B‘j¡…‰5bÁœæ}WTyž €sV¤òˆÛ\á«)šfe¯î’lz«’\n©É‘zn¬¤cøað»¤æ|r¼¤{n¥Î¶\žàˆý]ö¡… s¥­Õ–$xx°D“g‘©pŒÛ\c±’h(´•jǰ•mÕ­d•„q”¬@˜t ©›™'wªì—zí¢§Ž\p¯Ÿ‡j !ƒ©f´žk~í\“Ÿæ‚ib2 +ˆóg3ž¼†;b#£Ä‰$a‡³‡•Glñ¿*¢~ÃÊ"²›šÎa¶”úÂ-¢žˆ(¦.‹ŽlD˜"t›Idœ}–\«²“FyQ¡Øˆ>h;µ ›2u·šŽtÝ¢ÿ†ZpžýUµ²¾–zoIÅõ¨Ó~ŠÇ½¬îƒËƬ"‡ÍÃñ¨l†Ü¾¸ Ò}¶¼œ+tx¯,•lŠŸm‹­f›ì…oa†˜œ}¿Uöp‚†\·ñšÉwQȽ®„·ÀР$x¡¬¥ jº§K‘Xqš¦T“o¤õŽEfž¤IŒ0_B¨›ŽUYù¯x—Bha»¦¥=jÁ—«z‚ZÃè«oyžÄ†¬‡t«ÂB§6sÃÕ¤ÎxKÀ_¡èwõ¼ Ÿxt@¾ËŸ´xѶΙVn8¾lŸQm¾úžŽiã·L™6j´´V—]l‚¸ûœÝ}¸œ¢zÄ´Ù—–o8£Šˆzb]„c*©¬’Çp¹º³ž\zܹ žrF”j |ĤŸ•,:½$¬^—¸·<¡©‰ö¨ “¦v6 ’‰ÍmDvÖh‘ƒ°jìg‰„"qvlß~~ƒs6’e}Tnì•IÔnç“äbrãŒx„ýsš‚†?t|¥Ý“µ{õ­—šÌкT£Ï‚¾E¢|±7–eo±ž7‰òoŽ˜“‡:vÍr}¤fü”4†‡d<©œ »¹«–Œ¼­~œV{tªe™‘x¥«R™Ó}RžPŒzj$™W„LeŸw‹Np3§Ô’üm­–”Cfµ« qU+µ™žfN¾"¤`{Ѿ-£™{»tï¼|ž:wDÄ$¥ª~‡Æ ¥ý~”¸š™x›¥m‰~cB™œ|[:›µƒ–cø¯,—XrÚÃ÷£Õ{A¼kšn|¨©a¥Ô†d^ø”ºu¼Qd°H‰Ÿ^sE•„ ^ÑD@ŠuhpQƒ n*Qh˜Œz©][¡Ÿ†+h®’íiȳšüj/»%£#y·›¯sÿ©ÏŒf¤œ"|§S¬ Ø†uc©®«“ k‰¶.˜ýk۵ᘔpý¸…œvw¶¼#£4|ʶ†žÈذ …C®÷“c2uˆ,^œb‹Éh¥’pm]¯³–"lå±–#m±¹HšKs^¿Ñž¸u¼ÐÞtŒµzžx«°Zvö«M™´r¦(‘ qU£ŽQn]ƒÈd†“†r+SÅŽÂkªK®”ÄtEQ*£‹¼i¬•›t¦1Ùh¨M“!mW±¯£äŠ8Çá¶hŸßÈŽ¯×”³ò˜s}œ„`—={‘XFœI‚²bx¡Œˆsf_ xƒ×Z_¹››žlâµ0–²eµ£y‡.YÒ¤‹id‰¸A™ˆrÈÅô£›|lÇ«§€˃®F‰¨Éz®Š‹6¿«ž¶xû¸m—NiÕ¨ëŽ c  ŒnkužŠÝn6—B}]}—±zVS®/•üq‹Â3§ €¹™Ýqí£„Ò^ ¢aˆÌe2©Ÿ•§p¥•ênĬߕp²É–ggǺß1p˾ï¤+x)¾N¢ÁuÓºXŸspP¼?¡mâÂᤉm{Ä/¦½sп£ xp·I›îp›´8–Ël °Ë’5eJµ?˜gl¸/š3gÞ«ËŽË^¥-†#Z ¬â’Ìx³T™xx¢²n•igu YÊX“#rüJ۞ʅÊa“·Õš©vŽ¶Ò˜ sŸ¢9‹~iŽlu@Ut’KxmU©¦'‘\nhµœ™TsıߕÈp¬žKˆ£c͘«„ ]õŸˆŸeÅ ýˆ½c¥ŠŒ7de§IgU¥‘p)Š o°™ Œùxļ\²–»Åµ¹è™±µüŸ†Ù¼Ì¥[Š²Ç¾²«ŽÛÆI¯åˆ¢ÂѦ½‰-¨š‘út  Þˆ5n ³”—”{uÅʨ…ŰH†ïÆ‹±[ƒ Æ«”|!Áz£y{C¨®‘qn©‹oî¡)•þ~ ­nš°‡õ¢½Ïy6ª7š[}Ǹ΢A~гª‰ ÖзhŒ'Û»’…š½•Ÿß~¢¤>–jxk“ŸyBW!ˆ4rÃX+•6€¼fà£åánü¸ žj{*½Ÿ<}ºšŸ‹ƒ®¼›¦dŠ·¯L™%z ­”•Úr½ ¢Œ dô¢œŽrf訕“ªoU¹£.{| Kz¼ÀÄÓwd©ÖŒhÇžfŠˆi£Ã‘Êvˆ¨¹•)|Üž4‘Wt‹—’uyû“H‹;zõ‹õ}ypaò€br)–±‹zun›i‘>mȯϢ6{´Ê¦þ·²ž*{‡¿É¤:1¾¸žC}´éümX¨É‹¾b¦(ˆ|c—¢C„xc¼œ!{:WÏ”©nAMî–‹qm\n˜”r!_k˜Åp¸b4™,qqo  ÉuLhĨ„ôm~¥ù‰uT¢“‹Uy¾¥ƒU§¯A—Ê……­›¬{ù¦q†u¦¿…ás%¡bEa¢ƒhZž¡yl_µšƒz‘nopÂk*‰•nˆir„†mi‚ovms‚7n5m€‚ÿkÞik|e£dw®e³eXuˆe½dcrÝ`%bÝq~_%`'s_Z_ùyãc²\ }hMeÙ€xkÉf„€ql5†£tÛj½„sÕib„8riSƒãq iô—qÏi€¸n»i¬}$k§c DpZdš|`nec¼zàh eR{ófMd*»pnÁ§so„sÊia†Nuf ‰!w‹m†ItRo®„Ðqvh†´½œ‡|›®šX÷¤Õ‘wbŸ.Šiî™…aΖþ‚E`…¡…ŽÇi³Ešôpö±É—ucÀ¼Ãžln­Ã-¥EvßÁ›¡;qÓ¼’ŸsÞ´í›5u¤µ›õw%ÄÚ¨ø…&š¤-¶ò—{qz k†:eÜœŒ„çcí°w–"r}ÂÞ ®x¦¼²›ˆoô±™úl«×•½k\£xˆµbŸ”Kq%N©ŽWoLX†8gñL ƒaîF¡…(e˜H)‹üjÎLx›B}öT®y‘\e_¿ž¡²sjij©~x¶Ã¼¦4{#ºišwtÿ¨}Žëm\¬ä’Frð´Õ—ènG¼«›Elñ¼¹›umo»¬šoi¿h¡|÷¾¡£iÃ’¢<|E®ëb1žÅ†&\ÿœÕ‹ûbiª–Úl§µÅš‰q»"¡y*À Ï{ÆŽ¤8x=¹G™ghÿ°+“5k3«Q“m©¨Â’èl5¢•ŒñgÖ p‹Sj¿Ÿd‡ÌjÙ“;wë\)@uÑYØûƒ6V>´˜mn.¹}ê}«µ©› !ª-•>waš2ˆ k ŸZˆìoÊ›ƒzñZ§˜1xvSŽ˜~~ãX¥Q†äjšœkƒ¢ez¡†4_¶z–6qÀóŸKræº$šµhP¬‹ b‰­¢‘Áh¼úšEu¹Å# B|ŸÆB¡ïwüËI«€u˨®±Š »ú›QtZ¯«saøŸe'U¢œ<…²e1¡ã‹÷u=žˆ§mú—,~‡[¤a8mw­’€p7£‰…c. ú}ÀZ‘¥FŒ]e޳3›Gvi¯*šñyé³Î›‘{—¹}›Ýr†»aœYqd¿y ¬sK¿VŸtç¯*”úgóª,&`Ò¹²šUfÃÂ¥*t~¼¬ŸÛx²]—=o5ª=dÅ¥:ŠÉ[š­‘¢d©°[“‹d¿¤’„-Q*žx|SPJ¡Ê†*f¸ª‘Œi‚®c“ìdμ~üW§‹ghÁI•TvÊX‰£‰¯iä¥&ŒÈjtŸuˆ´gÛšü†ue4›©‡`da§ý’ p%³B™#tŠ´™um«B•Òo<¢+¹hV¤ÌþmkŸ=†ñbìœBmX•£öŠ.hߦÅöu"œh…ÉjÐŒyn|»¶¯ã’ÀÃc·P¢¡¨“ƒ€Ï·Æ˜¿|“Á’¥g·³›þu‰®*|¤EnÍ©)Œój"» žý€oÇg­ðŠ£ÇÞ±\‹ÕÅk¯Á†§ÁÀ«[„ÑÂo­Ë†J·Ð”x¬Ÿ¸‹a'¡j“"xœ¨¥—ìƒhªý—Q”µs¡F‚ÀÍ«>‹ùÆþ©žŒÈÖ)µ¢‡nËsª2zµ[˜³{Ѧ–š°}®—#¦V±‹s?N>—Ü€ lLŸÒ‡"lAµé™)uмCžšu|®8•¡pc¬Ï”kvý®˜byAµ)"|­˜Ÿxí¢êŽÇlx¬€”p»ûx—Æ¢§€Å™¡}M±Í•ðn”¡õi¥¡”L}ج¢™¥‚r­ãšoy_¡—jwW“Y‰âu‘†atHhxyIeŽ–d…Vhõ›ŽlÛ¡"—Ñs¦ešËyþ¦{—ŸuÕ¶Kœ €I¾àœÚ€(²4ÙhF¦O„!X2¨Þ†rd¨¦‚ŠøhÕŸ|š[Ø“~j–H7‘TmQ-—w¢a˜*vÑhgŸ4}[vÓ§¤„ÁxR¬M‰:yÀ¥‰_y·¢iˆÕy禉ø†3¯q• ‹£¥Uˆ¥v÷¥×ƒ§tK¥†ƒŸrÿ¢5‚ßcèŸ8|¶Zç_zYešZx“p§‘³pÊq׊0kßjlƒLid€¬lQh\‚·l¼féUjKgÛxub"aÅst`%aau cbÉpÑ]?\€oR\ÖZStža­aGyµdµeçzDdR`é€&iƒ`Ç…~oÍe©‡štkií†Cuÿh…-qàe ƒq“hå€Kp›hç|$müg8~[oÞeËÃqddV}ˆnŸf±vrd­cÉx·eñ`}q?k4„Üs4oÑ‚fqh܈Çw=iëƒ,sLhdƒÉoDh†ªsfa†r5cŽ„ qŸh Om)iå|5j=eïi±f‰ñs:oê–sƒØyöˆ~1ˆ°v&ž"‹o~$¡UŒò‰°s™™‹Cµ]¿‡[œÆ”oƒ‹ÂuuŒGØs*žŠ³w½§!“jq!¢ÑŒ3jD™…©l¼›FÞzì«ÖžšŠ¶^¨[Žï°uœì{°±ã—}i‡Âž¨#|ÄÁ¬õ„¿`¦§‚̪=šnuAžvŒ†rHœyŠuoÀ¥¶‰Enܦð†6Z‡Ÿ9ˆweøŸ»‡åw:žX‹Ë{Ÿ‹rКÆªcÂ˜Ž…1`”¡%i²…šrƒªp•šlüªŸ“oÞ¼ê›;v2ÁÛžwp‚¹¸ és믆™Ðpˆ°ø˜]p/Æå°ÌŠÔÄm±ôް¨™Ïxʧ*‘ºmÀ¢ÁŠýd¯–“wo5Àgžk|½›üu¢°•ÖlK·eœcwP»HA{¥×ŒÅj;—"€{gîŠcq]Zš‰Åm8M‰apóXç‹rõ^À™,~“a(©;Ôi®·™#n)¿HŸìoDÀm¡6wß¼ºž‰y¸dšKu`¸œ™®sç¼Óœôsq»›š!jd·º”aê²9†b]³’Ém ¶–mq’¾'™¼xP¬ðŠÌc½šð}}T©šw„é`+¤hކh:©(eþ¯’éofºÑ™váÆNŸÖj¹´/”\$§ Œ{bJ¤-Œ>h¤7‹jH¡ˆâhžš…phå J‰Dn;¢Ê7uÚ Ž~rA©\’2j‹¹Õ›s+¼ï¢…†0½ªÍš°zš ›óéWR‘k*CX‘ýgJFR“®n6KR›œÏ^s¡±ŒtÅ ‘‰&kÙªÿèj²¾ož_yCÆy§þx# Ÿ¿p¹ò˜ƒjŽ»6œ§sôÁi | Ç]£~“ijn.Âw›wiõ¿‡z"·˜yù¨î‰ŒdTš«wÇJ¥›æ~W·¨&rö¤øŒ]nǘ¥}TY—J|T\T™ºzH[Ô˜ævZTž‡‚çc„¸žßxþÁ¯ªÅô¹Ö ê̽¢Ð€ÀFŸ¯v ÂÑŸ;t%ø¡ÚsI¾ñ0rA©ŽŽ=fž W„]ú¨×©a°s•Mjå­(”Öro§yÒnh¤ºŒJj$¡d†|\«Ó:_'¶¢—e›©FŽÜ\} ƒƒ}YϞ̀ZË¥„Œa`C®_”`hW¢¯ˆ%eš“¡r3Q²‘³pS’>sYF—+{D`± ‰Æeþ¦“·kø¨å”Ll~ª©”CmD­•n±´8™êq7±´– m²¤ŽTc“§;VlǧUo¦‘·q+§y‘€v›žØ…vl•–Üy¯\8—õ]üŸCþkªc˜·}E ØŠpƒ¨Ðro‡¡kˆ¡b™Ç¬cå”yî[¾ž—†¸f„«ù“Óq<»mž…{ÅP«‡ÀÆ!¯r‹&À@ª-‹Wº±”LĵºË—+¼…§º€p›²‚¸Oœ’U|Y^H”(`j¦¡rŒŽq«–•Öoä¸p …ƒ¯,•P„—®íSm»®†“%wþ©×–ü~q¡¶”Ü*‘ªyöRš~sa?„=g#N+‡ h"I)m…ƒZž®1•íjN¦ä-j|¡TˆYi%¨“)vR±GšXyF¡–ŠÈn4–M~÷bˆ©ª’çx·OœªySÄí¨É~’ÃK¦Ñ|!²–k¹¤†Ž;iW¤!•k~QŸ·sɨ­“…i˜‡whЊ$u¿]¡{^>M… jQˈp×Oõ‘Ž|Œ^š’=ƒTb—/ŒÄo ”•ˆ•j’ ¬µ{G¬q’¢nÅ¥£ƒ'Z…¥px¥EªI‡ª^L¢2Q]<Ÿy×Z—7kÒIn·kÒLê“Ìtq_e—ävØfã‡Ðw䯂ö}¨¬‹}¤_†nzС«ˆ¯z_ªÂ“`‹M¢3Љ„„£e„u•£À~âoë¢ä‚[s.£ÀŠýq¡‚NkãžH}ýjÓ›q{úo°”vurÏŠùj_iêƒißd}~:f¶f—|¦iÃdT|kf6bñv aQ`Qsø^ù_6tï_š]tS`MZùtøa=_üuWbpb@wš`=dþyWfœd}ÿd_¶‚­jÞcV…oãg°ˆésÿhï„Gnµbí‚o´fk}úlúcÇzlze{n$g}kqÎf{2m¢fAtBe²`ÔkÏZ{Plv…g;^Þz¤l‹i·ƒ™ktey lPb¶ynàeš~ÈnßbÒ€ÖnFafÚnÕfó€âm3kÍ~lÚn{imTyvfØex…ápCoã‰wœs”Úù}H—õƒÓvW“íz¸lS•z‰qãŸìˆ±妞ŽFÜšOŠÌ{ˆ8y3p~}os# Ýt©d“|l™FíZe‘vxéXã—#ˆ›mGª¤žµ±¥Ç’’¦j–%wA¨>”Àn…© •r«í™`}m¦ü”Mwg¢—Ž'd œB‹´oùŒqw9d–.yô_*”ìm±>ü’:o…Dt’[tYs››…{to¤w’+ޫėtª˜!|jŸAŒÌeâ.ˆ¦^»š¨‡Ðf=še…ae€®'*sû¹@š(r:´bœBwެȗt`±t™¹ok²ù™ymN®:–ã|TšˆVb|›„·W™šR¢P>§Ôôo&¶ßš7}Ó·7•÷n©‡ŠÇWŸ±Ò•ålM¼/Ÿ]{и9yÝ¡¹qב¡y‰_¸‹’q±S±öyÏ`÷•‹ƒ‹k­Ÿ„ŠFrÒ¢·‰ìm=¯Û“)poµ,˜£li·°™¾l/µ¬–ùmºšÿs$¼&š´r޾͜t¹¹˜øjâªÓ‰T³¢L} OÅ£>ƒÐ`«¯‘lj¯¿„›†|¬‹Ãhz”-uîQ¡ŒqpZT¥’˜u{VpE?—Êx÷R£}‡ dè¶ôŽoe˪Kƒ3In Ø~kWš^{Á]’›| `0›?|`ušS|Í]¦£ŒGm‡³˜Ãw«´Y™“u8²—gm8³(˜ímsÂ­ÔØ˨µÅ'±(–µ¬À’ƒrø¢X†Šcä˜dvÃVÅŽªi®IÍ‘,rªWü˜2€clÉžy‰.l²Y™õr½º&|uWÆO¦¼x¬Ä>£½vŠÁ”ŸçtÏÂÅ£;y8ÇJªq‚ÈÅ´¤Ü|Š¿‰šJjZ½·—Ûgʹ˜ŠuÚ­š€x[¦}ŒÊh¤é‰by¨k7¼"£¸~¥ÄžªP³¼–å|$©Ú¦k²¯n”3p¦äŒCdq” tïD¸‹ïixHiwt$^ðš†ágÙª_•*qy¦J”¡q‡Çù¥½|Æ]¥ª|¡ÅJ¥ÈzcÇÖª2zÇo­…TÂ<¡×y"»J–ýg"³¨4fÇ£‡Nh`š~(c­¢D‰ŸeÖ´ÿ™ËpÁv¦·yõÅY§Ò·¯–¾v4}}Wén:IûïqŸVD‘zyLdù•€e¯« –xc¸ðv1´˜Oc¸¾—¼iŒ¿èœÂtоśs ¿›œâu ¸M™dqڬБÞi³¢ ŠødÊ¢(m¦E“Arô§ ’p+¯i—s«Þ•°s–§d”¡jW² ˜>cn¾fŸdlKÄs£Ëug½Öœ‚v)¯ó‘q¼´ž–ev®½žyLÁ ™u”½öš…iѺL™Žj4°=–rn¯Ì–qª÷ŽÌ`f­ž‘î]å®k–zax¬ð•Qkµ«ó”ŒmI²˜˜r¤ÚŠbš3{«RÙ …Ž[û°º– nݪR‚hÈᯚƒ‹¯¶—r䘶‚æc0—€‰_I£Ž•b,²M™çgƒªÌ”zešòƒG[¡o{{V‘ï~yU œñŒb¥ “õjtµ­œwjļ©ƒÃð©÷{N¿0¢#q­®Í–¢x¤ s}±Šž‚Ëx—›t‰vO“Íu;Z§’²vŠ[‘¦u YT‘ÀxC_›U…igj?ˆše¢ž#‰xgú™~)]W…›c‹KJ~Ý_oMoƒÏl]g~]rífÓ‹%ƒÃrSŠñv+Vï‹quÊSY‘„fg€¢=‘r£óŒ«h%¡ ‰eÕœQ…{cÐ’”y2[&Œr^`‡xkfQ¯n… l‡¤K q?¹^›{ׯ©q~Åû¦ùz$¯S˜þuëŒ_oƒØm¶N…³oU¦ŽÙ}‘fTŽ7w}Q˜›ƒx`6—‚5jX–r‰ÍuG‹üw­VnŠvz `ŠN‚¢rÙ„,r&ˆ;„do׊[}ÑfŸ–&wYÉ—hkÞG¹š:oÚJžÅsãSúœtÀ^N˜nsDcà#mŽ_ÃÙj¬a¿‹v+dë`—t|b—bdy¿dád^yeRe¬|ÇeÇjè|ègÂfè‚Ejká‚ßj¿hÌ€žh•f:€¤kggŠzhrf’{4h.l•{iÔg {¨jgÀyüj%e/u eY•iÿ[ PËfé[ëWáj_8ahnÑa¾_klã\ÈU˜n«]–WßoŸ`BXºq¸aWfiwcÕl›|˜isÊy¿l@l@rImqq‰v¾oÕtzáq²s˜„áwçwÀŠc{Vy(—fˆ‚žMŽÅNŸºŠyȤ­’äƒR €ÎŠÏzŽOv l¼…ØpôfÊ–…hMœ2†'d˜‘­sSmƒ eüLÏŠ]súa·Šumdó‰;wbµ” „@oð‹öun`êŽRv$`úž<‹ñp°RŒ]mÒ“ƒ h§†qt[ㆿoù]ˆ¾uîf嘱ˆŠt囦„lg‡Ó„Õfw”»{"bL— }€df¡Üˆaq BŠbo)”Ûw¼\}‰˜lQTK•ƒ~Ki.¢=»uZŸ¿‰§jÝ›[„ga#pŠíkÞ™–‡äk<¡j‹³mÍž…G]™ƒé]xŽxGSo†vµU»–¡~Ì`>”Oz¢X$” yžP\— y­GnÆl‹AªŽëm6M:” {ÁbC¥Ö‘Ïpø«H—çoÑ 3‘÷ej’y3Y+ŠmpR<“þx\`˜}ÂU¾’as¿J+˜\y`¢VˆakT­D‘àiíªÖ°_R¤#‹¼[œ¤‰½[å°2^]x¾–šj;õÁtº;Nzœ±V–VpK¯Ð‘íl¸¦V‹kgJ—Jy¢`#ˆÁf˜LûˆífEJ¹…KjLU“sgfšÝ‰ÄiŸ™Ÿ‡…b¨•^{V*}pO(ŒÖl6Qs†;g™Jî…Àf#J\•xÀWW¡6ˆDa#µÝ—Om‚ ÝrÚ¸ì– fK«®“gۥݒžiԤщ5\ûvöL™:oJÖ¢ÿ‚ Y)¶N›Mws½Á¨tˆˆ£³.nÜ‘ìsXS ’lwÎ^™Ò‚'d‘†md$˜Ý~[`ÄŸzxnŤ^|?Éb©žyÓÆîª2{V¾Ã¤}踚ãnjµQ’dX«jŠX`%—_|ÈT8”¦|nƒžp‡Kf©Íu£Y£‘¡{vg‡–Š z– °‘‚Œ¯Ùšú~¶¤e…d¡ô”±z˜•‡$ogǹvN¨†š×|e–†i¤‰vÞdŒµ|ëqÑ ——´„âµ·¨T‘±ž½ƒå£;”vt” mÊš‹‹lu¥•±~ˆªZ™Ž}Ë D”;n¶§a•“k£é‘~p”¥|¶cÖWnV–øvÛZ…–àvåLƒ¥cŒdϼ‘ž |‹ÂJ¦‚ø«=–1tC¢’BmŸ•%„%eC”ºƒ‚gž‘:y\ ¿‘~Φ –zï·‘¥;†I¼•©À‡N²KŸZ 7”swŒÝ};_]‡à{×_jˆ~Øgš„Årâa…lÐ[v“ërf]Až€ñ\B§c‰ùj y‚Øl|—'zpg“o d+‘ÑuÄdnŒ mhcš|'kY§ë‹YuG«·Z{}¬ÄQ~उ‰y=ž„tÖ•o|9nx•ñvÝj3˜ôvÿj…š|mnèšÅzoz—lsccÊamZ}U¿]Œs½S¢[tWûU×v•^´YÄv8^ZAwê_s`!sj_Ê_`váax^«s„_·\zv¬ceYw|dägF|=kÿnùxrfJgkz>fþcÌzÊfCdA}kOhc}[iÈdÎ~±iüfÑ}žhg2}*igÍyh\e“u¥aI`åvÔbÐdxMhkey|iVgØwÏeÜ_ÿq_JY3lÂ\X@u³húdZrÄe6i¨gZ.fok‡\¶cùhZleO€}v{4‡½†àænlx¼abþxöj¦k¸ˆ{ƒ…6•1’O–‰&ÖwŒ]{ÛtcŽ£{Åt  xkrqŠ:tcjnŒÃuHiѳ~ßqí2Œ›{_¯§—®}±Æš ~§´˜ã–±ÜKˆ¶Ç›n{@´;šÑu¡úŽp¥Þ“¾V¬s•Ã|´j›€žSÞ}á’%Šö~µ™ „éožÀ‚ ɰ²AŽ2»Ú¢(‡Š¦Ê•:VŸz“È~§ž1’{±›A}³¹âžArZ»Þ£³x”­c›÷{B¡ùuH¡¼…ve £yŠŸl®™B‰Ÿn—‚g¬>𠆲𛂤U©p‹Ÿ©ˆ[dªž‰NbîžF‡&a•”ÒuÓLóŠ?j¨H^ŽorƒRs“}] ,8s…¢Ç‘‘oó£‘Ðh¬§”¡o,ߊÓjo”6xr[Œei²H˜{u´]ûƒvc¡¢KKp¢qŒ.hÀ•^z|T!s¬Y•"{'g$™s~å`ò£µ-i=£‘?p)²›Ûƒô³Š—úr³‹•Ìbˆ®Ã’Øbб“Km÷¼]š8{Ä`£…‚ÀÈ›ªá€½xœs!¶Ñ–­q5­!’6n릌”óu³¢ŸŒ&o ½ˆ+fy éPm±¡•g}V°–ž0‰á°Ššøwkh€¦Ä‘¨kö›>‡…k.”ÉxêY—}ÍZ&š™‚+d÷œzŠ q¤HŽ+pî¬<‘åf© %\Ÿž¡|åBñž „mTˆ >‰¨f!ŸÔ††fš‰|Ëfp˜xe[ç­ó‘mñÇ‚«Sˆ£Ó²¸v–ÏÌv°óˆµjšC|”x Oè‹cn Fz–/'Zô™¦ƒ£`¢ Ø‹Çjªí–sn®²öš÷ml´…–Ûn•µE—sú«”Ògk¡”ûTm—XsJ’F…Ó^ºæ7xC„ÜýKu™P…:j­¾—\}‡¯­—Íw|£>Œ/fdœR€YRšÞ7[ô—±€\tq‚ÄcG˜tŒÎkNµ„žÊ}ýÃ㬭ˆ’ĬŸ‰NÅ6«|„{È¥¬v€kÅ:¦fyKÀ‚&mä¹[˜gƒ¬/cT­\«f§¸é™¸m%»–œip®ø” lÚ¦÷’Àm°±§›0y¬´2œÀ|Y¢}‹q¿ltnR½ŠØdBàŒ{hí?„™z€G8²Ô“ˆe)šJlîÆ¹ž¨m¶ÄöžŠq-½ðÖr¿›OpG¶D˜6lÙ±¾›$w³þš¿p—ºvš}kþ²%“„k½¡“Œgjy‘{úa–Šyb-¤ o‚ºŽ›ªlÃpžlµ¾Ô›m³©™’Ãi-–e{Úb/†ôl¬[«’\|¯kœŸ†Œ uØ©•} œ®†Gmõ•É| `C•H}¹\1Ÿh‹°h#«¹”mnk¨²zf*ž™†2YW›Ç†ëe)¢»/tS¦±CqP£Ó»j¾›?„D^-š‰ƒ3fW …M{·«š*‚µ¯o2ƒ±ë Í„Œ¢‘“Ót¶“¯`{™Òˆ´k)¢¿˜z-žV’äqý—Ÿ‹©nœ ’Þy5ž¸’ãzB¢Åvt‡žŽ‡¥i®Ÿš‹¤m6èkZ™Gˆæiɜ܇ßv+£î–®‡ÃŸ!•£z ©A—hqÙ¨h“)mþ—~û[€ŠÕg I‹™j OÓ®wF\ŸN‰Çbõ²ùyº½G§´,¨n”´q†ŸjŽÒjœšŠçh8™g‡£gË•‚NcD’†jÄš:Œvmž¯*xx]¶jŸ†vl¾ç©°ƒs¦N—˜uÀ”‚Ô^¤Œ‹yXî„_sj]³€Œlo_°ƒˆoßaáhx]aÑçƒÐb¨¢›‡Bh­ŸË…»l™˜ƒ”j¿”½w9[“;y³^äxp÷[™èÙjo¥,ŒÖz ¬"“[ƒÚ¬‘î¤Æˆ^x¸‚htq–P|ñlû–RyÙjlš'yëiXô|Mm/ „‚&n•–Pyqh0‰yb€[>{†XabáraT-b×t Z—\6vÒ^õUx¬_-X w`æ`#s3_Øafu‹`¡q‘.p6¦j’bn´®B—Ïll°ƒšpu8·b¢(‚#°Î›]~•¦Ÿ‘orÜ£ûÙty ÊŒw¼¢ ’„‡§n•yg©•"s©ã’nÞ YŠ@_Ä N‹ûa/¨=’1lŸA‡|`>’fvKR^ŽorƒRe‘‘x`W¨!‰WlÅŸŒˆôi¹ »‰$iµ£_)sð¥y‘Xwqœª‚µf ›ÐwÆU}Ÿö‚÷aY¨¦’uP¶Cœñxm²ô•Af‚~F²ËqÚHâ|C^á‹…in³ß›Ÿr¸Áö«MÇý¯‰‡Äרƒ¹½œq—°É”¯k³¨‡‹‘d5«)Ž2lõº+žE{ÎÇü¬ …¼â§q߬ö™i7¡ä‡AaZ @‡._,œ‘~0S_œ'UT ¢Œ‹èg ©a–v#¹=£ÐŽ¿u¥}Õ¿4¢ºs4¶Ú™Ok” ‡Ý_äŸ4…¸dþ¤åŒjo£{ûmü¢^‘òr­¢v‹þoӤ؉gv¤&Š˜db–isþIúŒiäEo—‰zÅXážç‡h»Ÿ`Š>jû¤ýìd$ºèšmÍÊ«˜Öþ·pŒïØ »l<Ë®‰ ¥9Œóh®‹ m›E˜…iaE)ØuVÒ–î€Àc§žŠ•d˜¤K‰`¦ì‡a`¬‘(uE£lŽ–gëšû~Z“s§M“–Ð{—O¢•ž€zYl•9~ÁgÚ—\€kÄ™•„…mM˜­ f  ²‹«on«g•üwL°–.qz§J~jZ“'|][•Åbd¸¬M—Nv­¿N§U‡Að©5‰!È'­×…ëÇZ¬‚Ï¿•ŸÃx¾ëšBmð¸O—Ze¶¯¬-_¿¯=‘ôaÒ¸å™ mß·sšÇo嫯”%om¤å2lO«"’tmž¢G•kE›íƒ`eCŒìrR†Tm±O’}zˆc ·„cZE·W–éfó¿ ›‹jÀÀÆ™³hñ¿œš¢l¹ªšnkØ´/—îa§é‡³T¡Š™g¯¢nib¬ç`i§6Ói*œ¹„þd ŒötZk޵xÉ_ ¤G pm¼vœ±p[Ã6ŸÛo«¾ã›^lf¬=‘Öi¿‘rxÊeŒ|$aäSPˆ1n`aé”|ºmQ™ü‚(q·”O}ÅhŽŽt!a-‘vb`"˜aƒrcÜ¡;Œ~iP£6‡Gj•4vO…”ÌyX^6 ¬Œdp祑¦m(§_ïjæVŽ—fñ§ ?mƒ¬g•ÓrR±GšXy¥ê”7|àš²‰élD˜‰…eõ‰ëlMÉŽ z0a…”ôƒcŸñ4lö¤á—hy’¤š„vš/‹÷r›“¸y"ZŽxr˜Xx•T‚Íjª–ˆUk“˜ƒeÄéi*MÔ†xuÅb]~roaW”rXëžVƒZŠšnVXô‘+u€PÜŠq!Z–sƒ¤n8™JˆVjz “äp¼µ”¢9†Ÿ’ŒEhc”Ü‚Ö^®”ù„#cɔЄêdÕŽ¢xhTzŠavSH_qš—lbŸ ‘ÿiï³ýœ³z-§Ä–sy™‹‡ik~™_Œ€o‚R„~m¡Y_„£xáhŒ\wdæ•Rie7™è„÷k•„°q¼œ¡‹1z?–"†ëv8šú†rÕ”Ë|zeŠ™%x¿c¾¢Ê‡?xȫ׆€Ä¨ê‰ßtØ¢O…·qº›ì/s!•xy'mõ—Óx+lÓœ}`nÊç|Ëk_£Ï„Õp)›ˆ{jïŒým¸c¬{«`Ed’tgY„cntòY¼[ItV]SÎyRcÑ[)y`ä]ÍvMa_Ìuase^qCX bàwsaY$xng‰gÞ|`mypN‚˜pwkƒxZc Y4|îdkW€}kãa°}kßgç|§edN~¡f`cÚ|žö‰mÊ©C•¯wì§Í–£u³›žÏUºœ£=†…ºß #‹#­Ö’yΰä‘[n—¸à—5pŧ²‘£u¿™@‰gnK¥–€bžvŽàxð–f„¶nê–yÃe¨hŒ/u ¥Vy£â‘ M\v ¡Hùl'¢Ai¥ vŠœi¸š…ƒo^Ï£:Œjf©2“gmB¯/™À}0³˜¸„¥¬Ð™J±¨+–%¡„k  ±‰ï\ç£!Žcn¢¤Œ@`‚žн`·«s—ýx<©ô“s7¡3‡krš˜£c*“vwMX•¢y[?–Kx¦ZÕ‘sÝYT‘Ït>^ž‚…knU‚Dh‰ƒàaĪ ‘ÁnF¼‰¡•Uƺ«O}xÈ«©²s|¹t˜ñgÁžÀÅ\5“ç{6aꎖrO³žv}˜Èð±È…¿Æ¥©ùq Â¥S{è±æ™¡{ó«Ý“ïk!¡û}¼TeŸ<~ð`«¢“Ôs±Å…«•ƒn¹²˜~jR¤Î‡ñ[špØWs›N‚ŽaBž>„Ô`ç£ð‹rhլƕ@vU¶xž{yWÀ§XwDà ¨9{"º˜>r1·œš\kc­ó’2ls¤Úi1µš"xQ¶šœjyÖ¥pkd›F|0YŸÿ€V`n¤»Š>lõš›}îbk–Hwx]­˜ôQ`žY‹‰gЪr—GsC¹už­oîÆù©¿qIÎÒ±lz½Ïıþ~‹Ò»µ‹Š¾Ë°¿Žï³S™i~/£‡ënn‰Lm]Jn_rMn•j{‚a嘵{/Z)™uèFs›Òx„Hé íˆøcm£Ðqn"Ÿ`Œ¨o¹˜Wƒ!fAœ.†9_UŸŒÖiå”jFd‘x:_ŠwnŸQŠÇsXÚœ`‹øsÏ·HŸv…/Á“¤ã¹jm{y£ƒÍu+¡áŒårO²-™Wyظ”\~½c ,•Æd«,†“Â-¦}ƒ÷ºŒs~¶¼]x£¾’©u ºÎ˜üjœ´7”Ùb³»É›ßmŸ¼ ßxñ¬½—HyÁ æ‡Ûh!¡Ê…`^™ÃzOÚ”ÂxÞP)šÆ†ÂfE˜ŽˆÜo‹ Ž¢w@°”Ìlí½½›Dm¼¢™éiBµ“•Ig˜µ¨•Öi›µù”­h¶¯úŽ)\ºœswGCu”uóX»–-z„a £¡‰iÊ£hX¡lŠaû™q†bã“,á_­¡@Œ)j5´&–ûo‘½zœ[u½6Fs%¥ýui¶‰„qž^)y÷^3SÌ€}gZ_'¶tæirœuQ]/“k{ñb\’ò{@i²[yd–Q€¹[P£}Ej ¢ˆBjî’¶qÁL°–hx}VÝ¢AŽl]Šï`m…c–¬•’^gxîmXX3zZv•lïyáwiŠ‚€¨qú¢‹„|0‡ò‡F€jÈ‹ô‹·À>‹N–tŽº†Ý˜ƒ„RrؘxˆZ@¡Íƒ>p™§ÛŒùzº§‰q€ œ†;q¦›§‚©s4”1wŸmŸ›vzCoTžÖ|onbŸå}Ân/£D„ªsjž¡Žp ”r×h"eg gZxažf@sIY>\¹vÞ_b_x$`p^%zhav_½x.dKbyDe˜kûwöee„xf0f{„p8pƒ€ƒsÇtoŽnfÖuLa~[lxž©wûʨ®Ú|òÌ“¯J{‚À§žawâ¤à‡ûbM—™{Z~™é†ôl©¥b“¥w¤»äœ]tÞ½”'g¶°º‘Økn¢=…GkŸÆw€Së›q†Gpœ[v”W¢ýƒ7e¯'‘©gmªñŠXW^ ÈKÜ …‘\Œœ’ƒ^Çl„MUI£”¶co¦h‘q%³s˜‰oÔÅ:¦3qUÁ( 6mPªZ)e¥CŽ×eT­õ’llQ¯´”™s͸qœŠ~¹»Užn|¥¬Š“g;™ÌvYNA¡<‡Heî°˜€{‡E‚ka}”;t=IE£šëhø¬Ë™ivh¶ÅŸÓ{Áv¦·y¡Ç™«.xÉ8®`væÃ:¦kpÁ`¢iu½LŸp€È±³žÙŠV­Š›*+˜ 3jO’ÅrŸK‘Žse]–Ž¢nEX£jºJðÁråH™6TѫҘöt°teñ­üš—¸´×ž-|®°Àœ0yÔ˜æ…We‹ŠŸohL†%h*J•i~{bh§@–Uzü¾Ù¦—†Ž¿l¢ý|¸Ð›{v,¬C”ÎtT¬Ã”QwT·œ¹{î²X—jpÔ­L“+j·÷›2yc´š}A­•Ür¹©|¬ÅÖ§Óŵ¡Üt Ã`žÌlPÃøŸUpfÀE ¹v0¨ÉŽäm´’Ûp P0Ž7l[H£‹tlœCšŒ~ËN²«G”žl©™”ærAºæJ}ïÂÁ 2r[Ä/¡ûn*¹B˜ÿfzª‰Žn_ ¥qŽÊh¿¢ Œ¹g‡ tƒ+ZŽÅhûA Šh}RËÀm,_’™w€åj)¦3Ân°N—4là²@›»s[¸‹,h†—º'_Õ¡é‰5k³˜=z¿ºçËzg£‰ŒÄgËôt[8…nä[Þ€âkãYîy}me/™!…Û^Þ°Œ}l‡˜<…Ùj’R}ë_Ž—X~žO˜¤¤¶f/©W‘©sÔš™X\¡ ô…„`~µíš¯z£<’¼pžùŒ¦q­—ÍxÚ¸'œ)}X´ù“àmüŸä`UïmÐJ ƒ×_G ±_(T…‡n¡iFŠök±S‰hgèGLƒãfàGƒƒvmëI»“{JfמŠùo–žž† lŽ‘?{„cÀƒÝn:X„Úq \È…ZsP^clðVÙ~fàM•‚g N¯„7kŽO3–îôgn §‹XnyŸ¼Š–kjœ[‹­g{—ˆd’Åc-Ä{Ögàvzn'…gniW;‚RqXQ‹*|Ð]_Ž‚ÆfŠ’&…8o“’_…Æp„‘5ˆãpõ‡’Yn·Ž´„ÀiÑ †“fsm›RŽCp%–\‹ækφ±ml|Åx£lÄy>u"gªlqyzÑzFƒM݉xŽ+Œ¼’[šK˜ƒ¨0–‰“D›5…¹E—l†YŒíŽbŒ§}6r¡oÎL/µ¬jíŸeˆt™£'ŠßržƒÑqH—:yßra˜qzEq­}¢nÈž }amŸ¨}‘l£z‚nU™{.jQNocÁ}CdÏcxv^Sdâu=[âaøw_´awyªb˜\f}Âe¼dñz…kâi¦‚Bvrß|vmnhð{:lüi‹€orFq$„t[qK}»l!gÉwfÇ]Åw½c–SÍ~¸k’`­—kPfj‚ÞlÖd‡€ùh`(ƒwjLdÔej¿bœ„ n®bЈÉuœgj‡x5l®ns$jÛ‚GvcmLÞt%o‘ƒuVs×t‡x&†|žº…/|ow¢ufy]Twd˜a»w>ef1sÊb dn_W` {qfm_ó{:eL]c‚üm0\‡±j Xö‰ÉjåZ½ŽÞpˆ`É¢®Š¤t÷ YŠ5s<Œw‚k9†ùsf!˜F…(l_—‘~e^H™rñP‰`s²^Ï•\o ™¦ƒ#jšÿƒ2jr T†­kĬöޤm³µ}—uA¢‹!ho‘ñxòVµâxÚ`|•‡ÂrØ™Âm{º™Œˆa}˜‡ÅsØ–Oˆnto–¦‰‡Ž‚zgn_–Ýe„¢ØŠ'j¡¦ÚŒtg:¡ä†©_场Ws˜¶w{Jˆ™\sf±ˆK›®=—÷…R¤‹’‡u‹¢ôŽn{„!daœlYç˜þ€0]hŠDq¹˜ƒ­e·”'tI÷ X|]ìª0’Ås¬•ºyY†ˆTiJYi`RH¨‚Ä^ëG¹‘ÑtWù•øzÃ_–~£cÀ‘©suRÇ“pËHc¥'‡Õ_õÀŸTu±ÅE¦ç|-±’j© Á}EO±Òk±=másýL#’¿y6Wl£ò…ª[ ¡¢|Y@g›z)WôŽtj‘RÐfîI­Çg–C•˜ wŽT›Ò|l[šž©ÿ^¦Ÿ}u[Ǣ숸d ¢Ä‡üc(ƒsXL•éxD™ƒ^º˜ €9f›¤M‡pg¦®—\ò§IŽifÕ¡x`§œÜ{æW„µ~`TT¢$‰1i˪ݑÀså®Î’’kJ y€V盩|ßU@¥d$oTª>“nr'œh~åU'kÒ_²èš–|eµŸÁ{í¸ŠŸÈwtÁ‘¥z|)À°£…}þÃo¨©|îÁb¢kj߸¥™¨dh¤jˆ‹]–¦ Uo°¼Ô£lH­\—°…ã˜zÊ\w‡Üj\8ŠSpfE“³{‹l¨0’wu>¹¾›qº'Ýp%¥c‘gmã“n€&ež‘«|*h¡=*xµ†›yZ®•Wn, H‰ügŒ”¨{¿]OŒÞwE]…’™ƒ¦g° B“µr6ª7š[}r£®”z~ž3ŠžhÒ i†'X‡§Çxh‹®,•v¥qgg>«½€lµ½HŸC}˸h¢xªÊ™´t詳˜u¬æ–­t¤ëŠef‰›‡Áaß•”{ì\z•—y0\láyµg­˜Å‡`s„œ‡‡e™––wµR ˆÆsEYý†#x6d•‹Ÿ|¯lè˜¦Š§r½œ£Œ@r—‘ü|@dŽ€°kÀTÒ‚ˆq½^Ô„ßu]f„Úsìg߆_q2`zŠüuÅ]H”zv_§šëŒsé ~u™`‚og •ñ~]“ù'[ņRsÑOt#[ÉGvÓ]/MÈ|k]N‡vJYã‘s‚±fÍ•óˆ:lv—ÝŠ~q»’c†Öp׎E‡*q‰<†s•‚‡t¡Ÿ\’àt!¢÷’ p£•‰Ço€vzÐs{${âs`~çÝsXqë}¸‹ ˆ‘S kŽ ˜w¤ä‘Ž›&ªªLš¦Ý…“kš•zÒ‹9—œv ˆíwlww}œjg\[ŽÑy¾hÈœöŠDy¬ŸÜ‡?smœØ~Jqž• u¨q3—wÖnWœt|œjŸe€mœ¡‚§lQ£Í|&mk™œz>fŠxhùVu{ëbá`.x^csw@[–bFz_·^˜{bÌQ8Ekžcb‚t$lc†Ìzýlð„w ls‚)sn©ƒRs[oƒnqìj×€qÎg y¥hØZ ygÜXˆ{'hbiYjEƒ¹jÂhì‚j¼e„tk¬e€„Ÿkåa8…Øl]aˆÂsbi¤ƒ@sh½‚(rdh3‡v€oF„Zr½oe†”t\r~6m“qºyel3sœ|Ònjzjðaæ}ˆgÇfËvÌc _ jYXUT—ubbí_–|iucd††kÌ^ŽŠ\l5[UˆòhT^Õ|`#[iújïe]1yão@‘Õxlo¹fY'm!YÉ–…ýjišã„{fcŠ~qãVÔ8yiP“¤|z’8z&iè‡w€^6ž—†^iµ²Œ—tƒºÆœžv-©¨“.moœw…xcgŽox°^â–©†Zr˜UŒ,y0qˆŒþy/j‘”¡ƒŠpý˜‰Ãx?”Ë}niŸ˜Â€ b”¬§“ôp?µß™Üz¢ ‹-xڠȇùip–Hv¨V÷‡gáM‘Œäp¸a’›±„*m¢ Ø‹ÇjÚ  ‹‰j2›º€G_f•ÀyçTl–“€ `œˆ*qœ“ˆ(oY•x‰W}NrGJ—Þ{V 1n³KJ³]>BéSe’H‡…hYI\—ïy4W/VˆjRœ.‹}o4—{"_“:t…R•q"R[¦Æ…±mb· —©wðª‹àdÈšdtFæˆIbV`æ–9‚y`• „Ri™Þˆ?m]˜áƒVjG‘xÌc§—`€®kN°O–SwQº›moí·DšŠl”¤˜Ži9•Å‚/fɈvøcl“A€çdX¯–˜wvºÙžy¶ÌšOt>¬%•”ržÍ‹ÎmÑ™‰el̘=‡Ôk»žëuÄ©–{«y•¬s¥EÖh‰ª@’xjª«’àp ¤Þ‹¬hã±!•p„Ã8¥i¼†¢Ä}K¬j›–wâ¤P“nr –Ÿm#žÌŠ4l¢7A|É­Wš ƒ¢³¨œ$…·¥I–…|F¨Î™Î||©¡—wˆ¦”Øx"˜ý‰—pr ‡áq‹õ‚8o]’¾‰ûtW™Œ‹*si}˜dÿ„Cs}^pŠxyhsŒ|ôjDƒÀpìa±Š’vÿb)•»€ÿmð’²$p¡¬Yž‹·Ë§b“˜y†Vxʼn(pD]‹uŠ]¹Špx:]*}Ym¨NGt)h[Nôƒ÷yáb°‘è€i;›°Œ×n=ž/‘…r‡œÓr˜’ƒˆœq挾…oq3‹X…1t¼’2ˆèt'Ÿxr¸ (‘qA’]‡õsc‚±‚Í|è~i‰‘z1Œ ‘'†“|k˜å®?’˜¯±ö”FšÝ³H—–ñ£‰Wž—'~ª=”’që†/_oU|È*mznÄj–xNqðh»•ᇥy`¢Ù‹v€pº‚ötp«t”o9‚vt`lŸ€CtÝh¿y}jþ^ýql^²Töw^dQcY~hÅlwgi®j ‚áiõjЃÀmÑlh…Úmxe»†ÒmAdâ†s¶i>„És#ha…¼s0h†rÀhŠ„KqÄjÇ…qsÁmZ€Õpsl–uLe2fsudaTyj hŒyŸhThPuxf½^ål„]›T¸weÕ_ô‚Þlf Šënc_:Yr©]ó„0c‹WIzŽ\·X-€»m]d茺{’u=ˆ]sËl.‚ñj€Vº…æpKOµ‘@~*\jžF‹>n¬“Y~n®€”fÐa—ƒ1b¨\¤vóPëG*‚“`RK£› ‚cô¶Í›åvuÂÆ¤wöºù›Šëb¨—Žî`÷Ž2oŽSš{y$^ß¶ú– v5½›7vp¢o„I\GŽèm Jj‚cVJÃ…ehšMšþp”V~Žún.TÿŠfÊM+‡aJÄ„PeKìˆyqàTb”áwñUÝž¡ƒar¬Ø“tÝ­c”âtžºƒi‹ŒjASö}‘VfK—wS(Më|L\O7ÜdáL„óns^Ë™³‹Kxû¨–3u…±¢–ðq¡£ŒšmŒ›ÿ‡m’~lZâ— ‚¹\П܇åc‰›WpPK›5]3™Õ¬fÔýr3U¦1hHU˜zÆc[Ÿð‹Tt¯¢Ž j¢¤uŒ'bº§Šs§€•Vu(­L–¨rë¯S“Wi½?žÁy†±æ•°qUž}˜Rd˜sL B|üc¦ôˆêlÓ!t‡K~€·_‡Bo~bMDŠ…s^×™]…°b…§;’Yj ®§’lgÁ°R”#lò¶\R€M³˜z¦ø†€^¶‘rÍGw‹¸p;Lv‘\yKP¾š'ƒ­R’ 9†°\ˆ²f¥£)Žsɯ`™N‚]¶ºž°„O¸Öž„ѯ†–Üv¡ˆa`”£‡‹«j:£Ìpgš…˜c`ŸØ‹Øk#´™˜sØ»+œõlÄT¡€neÆ•¦JtpÂ?§wz'¯Ò˜0tW–€º] ‘p~àa0¢’ÒqH¿ ŸuvÊ¥~suLjŸ®i¢ÆSŸžeÄÃ;žd\ž?i ¿ÔœSm?±J–Õg©¡±Žï`“œâŠ+c@Ÿ·;n#£°’#t»œ…Ïf“Äu¹V® KˆÞh'µÞ™Mv’»ªœƒr0´ ˜¨n¤ë‹ÇgÌ“~<^ʈPr‰]ëŽwôZ£Ž¦kT¶Dš8uºßœ²oW¶,œIoý®D˜VrŸ¡‰Œk˜”¹{Jf/—u§^’›F…neª¨o”;o"©”Hl8©P’k{£xŒ8hÚ¢¡ˆ#cfµÓ– pNÁ\ c{£¾Ÿ%|Û­–!s}¡à¾q£œåŽ®qTž—/uú¡\•O|<°gñ…¿± ñƒo«e™Ò}b¦H—{©¨×˜!~1¦ê—}cŸVàs&“B‡&mN‰ˆ€eq’‹\4v’]…»rˆÝyYdkˆÌ{äiüˆév|jŸ†ou\L€€eËRRŒw;b§šÅ‡çsK›Ó‹¯}{³X¦µ—X¼D±¨ •ß„3y…Ql¡_Æ…¹pæ_ˆHw»bó‡Ÿ~Ób»…¾~fŽÑ‡Üo¡˜€ŒnfŸO‘ŒpS ¢p;›°Œ×nSHŠÆuM‹YàpcŒ‡s’P…cs¦žó´ræœì‘xBŒó‹n…ü|ÌŠ,Ž·€Þ™‘_—­œ0’¶–¡§‹“à•l«9—¶—}®ž—K˜Ì®Ä”î“2£‰šUšp|“‰j”Áqˆ¡‘ðncƒ\„cDq#i b†e ^~ˆÝ|ªuA¢˜Œð~q¥W‡ëu»œz·l›Üx•jàž…~»i ¡”ˆg£œ„Hk¤]†šq¤™÷w{e €ð]ÞRuÞXÌ_ s™X`´sÒZ`v½`?`ðyŒgtW]Np“bׄ y¦jÇ„€wElRƒýuŠröSvÊs_~srÂmçÎs¦lŽ’uúi9{Hm*eDtgbžYy~fc| hük€il~ugjC€lkm³„¯n0g™„ýmPcõ„pÞf*ˆ_w¡l"…½rThM…èqÝd€†·pFeƒ2qºa²€ÆoIgzÿhGfx8fÃeÑvÐfGdýulh3esæcõ`×vb^–|ßf)`šŠp†f+ÖoE^Œ¾kWV¢4_‹Q,u´S­MׄBkh`x‰{”uŠŠH{²sjŽIz¯b’¢{-YP’°~]œ¦‰½lo“Y€-që{e‚MË€wfèLàk7M_FV{OT™LSšÅßao¯Ú•CmíÁ%¡)r<Ét©N~'»×œÔ|6¥ôŽ?p»¢¹ùnœ†+jÀˆNpþV!}1hÈVÕ„Ýr d±™-ˆs‘©Í•N{޵ݙíwzªœŠ§\¨ I…c¬”¨tb=‚¾`@C,“uDZm…°l£J ’Fz^d,š˜‰,z»›=‡°u; VŽyrص ŸJ~tº—Ÿø~‡¢Š£eN%…åq‘˜%Ž&‚ž¡~ünÒ~d-MðwsUÜžÓ‹•iŸÔ·n€›Q4mü¡‘“Ym)«Ø–¢od¤˜tgÄŸôˆ¼^8™~‚ÅZ}˜ƒè_›”ˆ{Zc—*xKP±`’¦khľ£|‹µš—ínÁ”veN!ˆWhçJøŽ:tÄT •Š€c‘;{PavŽèsé[ñŠnàZÌ|t]`@•yädl•=sI]êŸ~µd"¨-Úoœ§sÃläžÉ†(cÉ”„|Ä_LŠ~r²a~vdî\tz^Y¤NüycªLÚ“Z‚ˆhٯ١ø‚ÞÂÙ°8†¡ÂªP"µ&œ,{«¤„•(x®Ÿ¢’Éu,œ.Šj˜Ê8Xí’²vîH§ŽXr–Lò‹pS ‹œiáMúµehL`“áqñW²š‚d ôƒd[- 7…]ŽŸi†jcšÄ€Ýgv™ß{ýYF¡¸„¸^ĵ™Íxó­@’ôw–tq‡G‚–ØprHH¡MyHVº¼Jœ6nŸÈ†C`åŒøoiI\ k|SŽý€«là—/‡ g:™k€…^‰~½Y å…;\Ô£cŽ‹jS î‡}er™~ŒNQåu§B”‘|¬X½• €wa>’­z^(šBƒeï™L÷Z+œÌ‚Bfå¢<ŽïuÌ­ô–aüºIŸî‰d¶„šŸ€|¢-‰Ûg¡\‰[gФ"›jdžé‰ÄbE¢(’muL¸žE ÀPŸ1pÇ,¦qƧ9u>Ã=§æ{B¸Ÿ½w“¤¡|d¹˜‚ÕR5¨X“ÿkÚÂ+¤ÇxVË·¨ÐwsÆ8 Kk=¼-šôe6²”Ögÿ¨£Žufµ³þ–Zqþ²A™o:«N”,i²£² bÚ¨”no©j’ÖmB Á€§W—mwHRŸÉ‡‘f?·œÔw—ºtTwø®–Ðq"Ÿ?ˆÛa&GrlK÷…¹gªKöŽnr€Tp ˆŒ^lj¶w™mui¼ÿ›Gl/ºBœei1·Sšöiš¨×^iS›¶‚©fG‹VoÛV|Êu V½ÈŒ¥f2¨«•:jœ§ ’(g"©¶Qm+°”ArĹü™¯qª¼x›Ârö·–krĬ:’ožŸ8Žÿqñ–¨Šmýšâ‰pøŸ”–xЦº—û}!¢ ’·rÔ¤“$u%¡j’övî£ß–³|•žC”xœŸ‡j3Uxa”€Õuønà{ås>r¶‚wËlõ‚nx–hç…]{[lqˆJwll™ei¥Z z¶ZÆJÄr—P¤‡Šöq¢™Ýˆx;©Û›¬”ͱ@§êŸ„œvVkT’n^…‡\x™c®~¸gÚ—%Šk,—ŽŒWo™…ëqý›ŽÕqDœ‚ŒTq¸™C…×r-’+‚iˆ |~lþ€­uUkÏ€dvezS‡k~Tx-•.Ž“y”ª’œƒÒ„þܑـȓœ ‰_”êœH“»–¤.—ª–'®‰“<’W¨í–:”–§o—W•'¦µ—û‘ŸÃŒ³Dž5€¡‹Q˜‰l熭ŽwgôbŽ_“dˆZnmU¹S­Ío‘nv˜¹†|¡¥f‰^w´ž²}pk°˜Ç[ª †íµÝ—üs8±’Õny£{‹Èk“—?esŽI}jï—9ˆ[u[ž:‹!oqŸ^ŠžrUÝ’Œw»X˜µ„}e9•Å‚/f)“¥b[”€flš'‰OqG¢GvŽ›@[电p¹Iå—ðxTRjŸ7Š·c×­šîv1µØ£è̤¢—:} ’^!mlB`:PE~ËVlKl‘Uvÿ\ݶ¡Ï|Êp¶¦‡*¼E zw;¥tŽûa$£’ h䫯›ÅzŠŸ‚¢jÀ™Ã„Ta™/„‚g ’v{L^³•_}òg*•§|´e.‘Çs5Y>•ÿyÙ\{™²ƒgb‰› …^xZ‡qb’š1icÓ×lP#‹YiöIŽ—ò|`Z¯0–Æt*±^•„p2™ZyUF3møO›£ß‹ÔoÍå´Ü²5•‰h c†Y]_‘´z%]«”üƒºk˜˜…ghM‘€v:V´’_uRY Ÿä†fý¢+‹ùbFž ‚×Y†•˜z)L•—#„MUm™»†[$›ÉˆSi\¡Á’{LªÈ—:vl£ Ž8a ŸN‡•_2 ã‰“i%¢žŠ oÉ®¯’¼|T¸–™(ƒ®«ÒŸv…¨r‘{p9¯$– j¾©ç”7bì§<–YsǹïzGË£[t¤È½¨YuÕÇx¥%w Âמ8we¿ŸªvJ³o–]eŸ „¸NÓ£_‰2c5¿üÒ|UÈ…£bz-ÅPŸ;o»µÁ•‰gן݆Mb–š€‚Mc¨é'nŸ·%šuþ±H–yin´r™OjyºŸ½{å´9š£rº¨#Žq^ü¤Ýˆµ^¹©Æ’ló´sš{t™³U™ýu­¥[‘[póž]Šìc“‘syNIŽŠo¹@V™Tz_P§öcrC¼LK{]¿En¼s›¡j ¶Ó—»h\¦±Éaÿ ‡?dË‹}r­Uç jÀK›“ú€ù^ü¦%–Gi°«¸–wIz¡xtr}:ytÃ{üyRw•ˆ›FŒ6ƒ!‡-†ˆ„f.I‘í–a‡—èžÀŒ]–ù¡v•I—<­F–û“2±q•b‘€­:•Å‘ì§É”Å“†¤G’õ’Q¢çŒJ‘ŸZ‚ŽŒ™ŽpF‹¹KhÁƒä{íjÑa>V«|ƒ×o*`T€;m^aß|FkPeoy i\dv&e¦b7tRfSdrsdgaCz|gÑb€iã`̇lQ_‡ iè^6ˆjib‚)hœ^u®Y>P‰z-lŽIð<…}\¸£Z™é‚›¹ÇŸÃ’¨“{:š/ƒ£`‚”Ñ}êgj!ˆ_uÄŸé…t-‹mÇI ‰ÞqØJ8t‰LjŠÝl¢^ì†Þif+‹-o†jB– ylƳۗÎy§Ä䦸~>ćŸ‡qÍÁÍk ´r–Ýn¶¤¹‡·`2Ÿ4‰Öh^§Ç’ör̤ŸŒodÑ¡(…vZF›)€`\Üt5RA—6}ˆb]˜'„tk›…Êl¦R ˆ†vx]¥–ƒ‘i\”Ñ€Šb™!€œl™ ƒ‘ÖCž"1{”—ƒ›i¶Mƒtaâ• wåGý‰œk—Jz“Õ|qo^”"Ôp=‘~`e‚_€–¬enŸ#n@¥Ã‘½l·¬{–ñl »Ö£Oz¾·¤ˆy…¨ä4aö›Ë€Tåƒq_Nž‘…§b‘Ou3HÏ‹«n H*“vwMXÓ›“†`f©6Šwg™™2ƒ¹c ”ZxbXꕈz\Œ”;zD]?“ý| aÜ’¹~ðcΚ«‡Ek„¢dŽ×kÒšà¯]‹%léFˆõjÐD.•LZr¢Õ“¬qš³…¤€yµÃ£¯&œÓ†ffшzhJ™‚$WÏDQ“!g`K)¬~`pøÃ«ç‡ù­š{vŽ–FzÖJ·ÿ…€_N³¤žs€ ¤Ü“Ìn´žóŠNgw¢ÁÌsR›(ˆgË›~ˆe&žŠíg3—œ£Z5“?zêYO’]|o_­–Ê€bfê JŒ/rfž"‚äcg’ÛlóJSrÎRèžœ†=`ʪÑ7eH«1ŽÜe™ßv!T=‘s…S˜®•£utÏ´M‹…º»›­oô´o—!oS Q…·`§™œ€ÜcE›î…Äl£•~ÐcH‘wÑ\R£œŒCl²Ë–´l¿¦ Œ;bÍ•ÙvR9•à|yRw›Ÿ‹Wùœ`ˆ¦`Œ²nžÆ¿½)ª~S·žon«•Gh›¢ŒKb2›˜€VüŸéƒaT³{–.z¶®›‘Ò·7~»¸[œOpX´°™Úl,±0˜âr-·Õ›MuÄÓ¦}ÈA§~}õÀËšvoJ·}•Jh,½sœWr5¼ž›mm ¤µ‡½X°ž|a ²ý“˜t3 œœw5ÃOs³1“›j‘…”^œšµ‚2`N îŠÖi™º¡zŸ½o&rvÂ'¤{7ÁH¦X~³c˜*k®7”LfŒ²l™Îtà¶™zõ²!˜Àox£¼ŒbdªžX‰Vd9¡Çn¢Z“Öoó£W½Pß§'ŽB]Õ¯•®p£¾†¢{`À8q_º3škè®…“Rf½¡ˆïZÒšø‚¨`ãŽúuVx~XcRIÞŠ…pÃR£›Ž9fz´…œt®«Õ“¾mA®_’Ùo°t”ÈtãµÂ›‹¯Îœ³}¸¤±“êm ›®ŽœqA•÷ŠLp[òÈj`|(ci˜ŠbnœÈŒon$nõšŠŒCm@˜‰«mψ×w*[€uj®T%xþeƒ`yoÅd~ây)l±r¡qij‡Œ:…ØxÏ„jpˆžsÈ]`}ðn¾Twç~%c¨•m„[O¦&”Tt{™‡ kÀŠjU³|:gWq~»jàXžƒ”t–eà‘ƒÌn(œÃŽÂp| iÍrp—Ž‚Dq Žy‰yìˆßy"y?|ösÑ}­}ìwË…y_w׎VuóuÖï}>} ”Rzæ}9—e{a€—Œ|»ƒ]“2{í…¨’,|Þ‰ˆ•#‡}›_×”P£ ”A•â­‚–"”Z²™ì“ß°,–]“šª–4–H¥“è“]£OŽ’˜¡¡‡GŽÊ‹s†ŒŸ´nc„¦z˜U\“L“X¼OÎKÕlðqÔjU…8‡{ÿ– „ w’šyz¥o—Hs¼jš‰éj*ª1RjB¿ÜšŸròÁ;@s=µí•€m\ Lˆà_¨•o}}RÁ ÔŒ·kI¹Fž }¾:ŸšvÀÀ—¢ÏyºCrc©$‘£_4©4”wjHºV¤è‹ÀܤY€­üÊgšŽV˜Æ‚àaž¡Â’3ut¬¨›…}¬_—Ûm¿±˜Bl›¸I› pÂÀ¨v÷¾™šÔl¹´ —1e¯U“g_˜¡aŠ|ZzžAŠògt™¥…¯j²‹Nt²_[Žâr.`@¤mŒ5o‘¸Yž…¸°n™šxK¨‘BrS¥­ŽasN¥ï7|¤µ+œz}*¢˜Qo˜hLnÕ †£oa€Fm‰èwÆb¤Ð‚dú˜ ‹m›–Çq-›¨Š0m—%ˆwlJ‰Õx´^õx8hÞWyÀnÅh„i}ÁkiŠH‰ûqîŠåŽˆ|ð—c–³„¨šhx’}Œ`‹„ÛcŠ˜ÖŒ/on¢®“i»Ÿ)€iË—r‡Éc ~¤fà ~ÒcVáƒåháŠj~^o¤‹^¸mÒ–‹Š«s©šÖê!‹@~ê‚%‚yQ‹x}äzH‹@}ç}R|p|z–Íz4{ošz{Œ—Å{~˜|‡›rz€:™b}‚Ì™ízM€l–'|އƒŽ(›9‘=”K£ä”–¯™—µç—»“8¯¶”Γ•ªÕ“—ü©{’n”¶¤Tޝ’¢!‡žŽœ?t.‰@‹æeÒt^júJ4S®GÄFpQËKÊaq•jðz‚¿xg“¶†9{ñ˜~zCn‰š9w'n:š)x‹mn›ÿ{jkd“VkX›X‚æoH˜žvÊey„bR^xI^ç]ÞsÃ[2aOvŽ`HažtÛc\_Ã{UgfÚ‚lt÷qì€`tßq‚@uÎqA€Àt_p €årLnÒ€MpÑh‰}ÏjWÈut`]sÄ]se¾uß`g{çe×dê~@iÊ_ñz h×YŒwÞePTv-bÚX®vteºgsy h*n½‚AhÆp®…«j/gáƒËk‰f±€~n‰iólke­~ k¼`Õrm÷dÎËnºi®x f¶h¿yóf‡f(€…mÝbì†rà`T‹×scYq~‚fÏSävubsaúmU´f2oTXbbw"h%cìŽó‡ég׬ –w‹´±g™´ˆ¼ï¨w“Ã÷³¥©ž–óp „þi×Tžò]ŽP½˜C~W[ª­“3h1¤Ø’õlÆ¢¾’½y˜þ‚ûqü…ÉmF[R€Gm³\>ˆtklO“ìxvWœ£Ï‹[Ç­Š‘cƳ©’‘h¡µu—þdÅ´Å™òn=¬Z–9{F³šÏˆd·¡Eˆþ³ºœª‚c¦D”Ewƒš‹ii›`ˆ¦h‰™Q„£hÓŽ2„¤f¼—›…År œâˆ'm¹‹ÇmœpЫa‰˜¥ ™‡*’½‚‚oðŽÁ|jΠ”‘Ñyî±ý›‰}o¦ÿ’;y7”„Wsž™Ù„x|¦ÚŽ:uæžgƒÓ^l_uJQÜ vU[Ÿô‚¡WýªÙ‘³b@³L—Äim¬ÐÒ^†§‘Û[ž®@—¾gy¯ ™-oü£¶’ão—/‚üi²v+`Üìs9c±›R‡¼k¦³ÀÜ{ñ©·”JoH—yùV˜ŽÈj1P§‰ûbaI包m‘MóˆºkO£‡ùf}QŒžmfVµŒÃp•T«ƒepJ«|ZZHù‚âa¸Mx‡%eH­…ŒdÌK‰ oež •Œ»oÔ²]›[r+¤£ŠÄiÞ”ÔyÈe\“UxdF‡)e:Nj‹Bi‰I2„³g€@/šÏ‚aƒží‡„dà•¯z}T¡›w‡e™ Œ0g +Œà]ƒ–Û‚ûRÈ‘ø|éS¿ŽÛv—Tx¦[–Ý~Ÿe`™=‚âgæ•bw«N˜œh‚(_‰¦U“Vo2¹kŸN}À# gzi·Ì–\ph nƒfç|ŒîpM¿ãœ¬€£ÏÞ«”†å´—–µp®äŽhy {SQ˜ÊgDÀ•sy¢\1ŸÆŒ²sž‹;r ¨Ý7pÔ¿„Ÿ#t~Ãx¦¹zL°K˜Ïzå£AŒ©w« _~Sbs¦ †µiÒ­’óp칟&f³s›Ëx 3ˆ&]~™r~þSG—}ìYùšÙ¨W¿¯–5sr„©;…ZÅœ« „øÀb¥8|ŽºA £z‚¸÷ž‘|Ùµ”œàv„³™@s–±º•»se±U”8s3¶ ˜krÓ¤´y ÆÙª‹€{½—¥?€ä¸ÿžUë¹ãš>tùÁ ž’rwÖ‰põ½ðšCsz´ –m´ó–Åo² —¤uøº”žÝ’¿0 :|Ò½žQyܱ–MnË£ê‹=^ʧ­”p–½ ¦»ƒØ¿Ÿ«yʤ‹»c˜}|_̘n…Àk3©+˜ôz¶å¡à~ºµð't|º£ž–qɼ‚pÁ꜖qA¿êš%l³ñ•bÔ¯º”se3¤-Ai›¢Z’v^££”üz0 u‘Vy¡¼y%ª”Ov%¶ž÷~°±GœÎzR¥*’ q½œh†õmg“SxV_{ (‰!mh›@ˆLeþŽ[‚Êf¼‹Ü€lq–ƒíkôS…)oÀ•ü‰v¥˜H9{š|š˜ ¨u—I‰ k¦ƒa.†ÛyÕcH‘R‹q{)Žm†®lV—ñ‘ôrî;œŒ~&¬Ð£B‡ÜÁ‘hq¦˜¾‰ëgU™=‰ap §G–:{ˆ¨— jµ¨ê—]l^žçÇomœÑBzËœN“Jy›ì’iw‡îxb|ðsezÁ‰~† €ˆˆú×£'€?’xòxŽ–r²v´”xæ|ø˜gx{ýœßy{>›Áya{ –Åv‹{ë•]z5€6›z'~f›¶{èœ|Hƒûš/Õ†ª–‡XŘ³‘ŗ륊”¦˜6³—–—+µz˜¿•f²¶“©“1«Q”,—ŧs‘Ð’ž¥P‹ÿ‘åŸ]ƒtŽšh;}ç€ \½g[™I£LñDbKOÐNCim8mHx“~«ŠZ€sv³—v{ôlç™ x9lšuwìm:›-zÀk²›A_k:šJ€ jc“:wfhÕ„VeèX÷u£[JZ§v a*b!vôa5bewYb-d}{7hclƒÀuºua‚µu u‡|-qoúævôpˆ|7qkp}SlF_Œxb¿Syux^¼\ s»^Ac]våcÀfÁv½b·bÀw÷cû`Ès a+[tóbð[%qï]ÞU…oN`‚`oÓ`ØcCx¥d.m|apaf~ hnb&§k¤cíÔk¿bI€Ómãbr„´pÑe¯„%pèjþ6l?mᆠpŠlû‡{sod…}^lo^‘jNsÖ]VJëa*V™`UO'J;b˜XHKÖ`%d„S—[à{Supj³}lm÷©ÅŽt‘Ϲ³¡Á‘P»h®u‡u©>›ìw‰×qÉX† lëY £Ìbll¼d¤nv]°ššoúžJŽjʪyuZß‘¤… g¾ŒˆFj£˜¨ya•X«]ç£N‹ma=£u‹VmШ‚Ž•nQ³Ÿ–æmÀ«•¥q¨š”T~ª]™Üƒè³j£>ˆÛ©hšr|A¢’™q·œ}Šðb3 œ#c@£¢jgºžå‹G^S `Àrz¦Âáhɱ—µiq°k›6x¸Ð¥6Œº°(žFˆ1ŸM‘`v›•3„{d5¡roZ´wV|“¯šcX¡;€Q¢•Ž}{¨¨½oú¬e”ónÕú‚¬`˜”ÙgŸoŒñ\ñ¬M’šgT­l’|cë¥Õ‹Ç^ͤé\·¾•ot¿K¦ÓvÈ¿R¥Ê}ê]‘‡u:—ÙyFcöøs]ƒ›ð†ïg³8ÇvFµ7žÒw¡ƒ¡j —U~:e “>söPèžè…%eOœ‚{qÂʤõ|ÑŸsÃÂ$Ío0ÃTIpøÀ'‘nv¿“ž,sĺYœìuÿ¼Í{-ÀœŸÅ{ ¿8žzô½—1qŒª&“smý«_—Åx*·Aœê~$´&‘úkݣ脴]{’Ðw9\o•3ƒiG¤•”èrð¯Nš%pF¶Iœæm/¿í¡Éu€Äe¥Îy#£ŸRvĶ÷˜íoà°K—¿k¬ƒ“kÄŸm‰ùgñ•˜‚e~›à‹æiD¬Ù˜|w“­u˜vD±mœÌz5°Æœ÷uN¬w˜ùlÏ¥X‘éo܇áj×Tvh[Á‰oŸT‹‡qWÅ~modZÄ…ÌxÏiz‰°zNj ±‚°m8š|b‚÷• o¼—]˜Ê;w€˜±Šhj©˜9Š%f•› ‘Ruѡٚ〚hq¥ñ˜>tã±…¤©}l¶;§·€Å¡x—‚t —¦‹_h…šrŒ uŸËŽøw •$véœ2•™wœè”4ƒ4“!’n„"S”Ì…}‹øŽáê‚ |í~‹Šn^ˆÅ‘{„µ²˜OUˆ—˜±q«w“)p¡v–yr/zå›"zS~Ë¡˜zi|+Ÿx {¢™&s¾yû•Êw)z{›®vkwršs~W…ØžyJ‡¤šï}mŠ”’…@ŒH“PŠÌ‘ó Šq—Ò°—…šÌµœ™*™Ü´Ù’ˆ“6±h“¥•’§“¢‘7¢ZØr ,©‹}šÏjÒ}†ØW»dä`)HgMKÐOÍT¯Tôd­mo/zÿ~‡~Z‹Ïv6˜Y}›n˜kxðkœ—wêlò›~{‹j%™²{bl™ßylE’jvj±„¦cö[xP\o`v\`ôcÆxÉbSe({š[MeU{¸f¬p´‚Žt.x“ps(uÝ~t°p™x(m6{Åpge†{j\at‹^öXHsY`~`gu dc¦vjfÚhLs+^Ad±rî^¡b7pí^CaÅnš]b2m¬Z´^Pn5`É^qìb \¬wÂcó[ðvÚ\H\êwŒacJ{æfìd‡|_hic,?oFgn€Rl g…go™i¨‡YolkZ‰ypl¬€®s.kw¾fIdËm_1UìYFNZR¥GE³]DMF`æJ FT\—O"F•\›MK bòM­MºYŸy(¹O¨Ç~¿±j£N~šÁ˜n~­‹OŒsˆ0‡F~J† …ïƒh‹ öˆ˜ŒÛ“ŽC‹Ê^’Qˆ`ßÁ€žŠJ yç‡C³z„&ðwÒ€:Vy†|—~ŽŠ‹šOùˆ™{À~"—€ry›—-uó{“›EW„h ­|ìy¡Ÿ_wWyu}yÜ“}u+vï“ënšg9‹fq't‘Ðk±w¾Œwó€ë‡¼q“pØ}åzÚ{›Y|s„qœ;”˜ª¦˜]™y¬t•—ˆ¬ ‘]—º¤l‘Ë¢|‰é{šjÔŽº™o¹€/ŠQ]èf›máK×Q§V=MàTWŽbÉlejäzõ~[y¦€lt¾˜‘}ýmÆ›0}um¾˜gy€j¿˜ zÂj¯—p¡˜)ƒr”nwUi„ŒÒl/fwzä]þcîsk[dty abàx—\¼aOz f&k€cs5ußuuR>uqnÐ}ÜrkkzDnlbýw6fÝZ¦p2\Ë^zq8biÃsPfúeÛsâc_eçrae0pZ_¬`”k¤Y‚]+m¬Y~aánT[ß_×o;^œ[€ ²œ~…[¢Ž’vÛ¡$‹bn†¡Ô‹¶kŸž!Œšk)§Ù—v~±p¡¤Ž°õrTž:ŒƒpÛšˆU` «&•Key½ËœenÀŸKkÃõ¡.v Ćÿm|ǨžkLÄJŸöna¾ÄEt3Á¢K}¼?ž||v¨ù g›©¹S]ì­õ‘%[-°Ä’º^¤‰ð`ͧ⎎nñ±“˜t·ozyÔ«‰› }“³Ç¤x†NºŸ |_Ƥ~×ÇA¥¿­Àüžv|m­Š‘ËjÓ´á˜v ¼ŸžyC³¬˜'q•©ŽfË ‹_±”ðs–R2“vrQ’¡³‹hž¥“?mz­H™µpÁ¶$ž»v¤QŽj>¡ ‹ËjɵºœTÓ²w™xt·î›ÖwÁ›£,e¦þŽÃiâ“ăž^)„ÇWê¿ëoéÀù¢çx°ÄYª»ƒ„Èg©V};Í'«¢|dʱ¨Åw`É«Å{ÃÈ¥iĨܨp¤•ÿ{jbžÅ‹&s5­ß”=lX´ –+eX³ ™/k¹Á1§y=Ê«FxNˈ©Zw Èà§Çy Á¤xN­¯–‡f›=ƒ3UÀ‘‘x O7ž{‹MgD±$œ¤yǶðƒ~}±M“`qD°nŽngÃ*žv\È_¥]{~¾AŸžyéÂô£à€]Ì«r‚Õ²²º‡®µO•êhE¯û‘¨jA¤MŒ×kÒž›†Ôo•œý‚]k÷žtŠål‘£p’~uת•’tæ©’‘wg«’5e4¶˜÷n¢Ãs¤›{ÇΫހsþ§{~¿Ö£¡{æ¼v¦{†F¡SÅyhØg.Jè}?hSHÝ}ía ¼’4y¨«L—>{ç­À“n˳›•‰i˳]—hkí­Ù”šh|²Î–1jí°v˜žj¤L‘gè”ì{;Rq—}ãLB«¼“jf´-—m@¥HŠ ^_ª Ð]f¾¤UpH©Gv@Ãö™'nŽÅ/×i.ÅžjyÄÍžTiXÂŽžh—» ›Fhá¹ù™:q;´å–?u™µF•o»|˜Ýo:¶¢œ™nDµ¾š†nЯ “jh §‘À_4™(~?Zv…­kåSb‚÷m2SÀ“œ„¥b9ž†‰t^¾¥:ޏ\Ö·>›To7þ£õ|Û¶‹—sF£¸‹‰i-šÊ~ô` ™îx\M‘ísQY‹tuÔVPˆ†q>RxŠñmäDJ@s”Dß™°ctœ‡Àe¾¡žhO®é–žnŸ¯ü˜io­¥/“mp¦–ƒømdƒk\tw²`lJbƒ~r†]z€gq»i‰yôeW[.ÔoÂd4‰Í}pJ’‡uwL›IWyÄ›Œ]hÞ¢|“3j«˜œây!ª9Ð|¦àšx*©½œ©}•¨îšƒcš‹šú… “#•‡Ž‚?(‡ Žâ‘«}>‹d˜E~¸É™Þ}‰Ž¢™ú‚ŸŒ£›¹¶Œ›—9yY‡è–°oé~’1tú{îŒvô{µ‹vÎ~Û“3wïzõ–…{Ñ~¡•Ty¸z˜–‘vîy…šQu`xø˜Z~^zì•æ|›xN–‡v vE•wºuX–×s„g¼‚žkÞZ1vÐb/\.} _j]kzk×`áijçYe9`ÆWYx¿p©rSެˆXŒl™¯}”꛾ŒƒBŸ©ç’ôŸ¿‰Oý›í‡¹“f}m†M˜ük‹z‡ˆ‹aAdæqZN\SÞdœP‡ZÒgHb"j1k,y{1q‚Œ\ n^—Œ|bjò›~{‹j´™õwDeá›{õj]œÙ~"mÀ˜v{’l!“´tÛp_ýmßeÍxÚ[”^×ràZÖ_nzªbn\"va\šUŒyg†f¾}q‹oÂv¸rH‚vým)}éq™lôxÕh¾d°u5a­` o0Y”bûo¯aIl±mBcZhjt=kÐf©ppbò[n¼\‡X»l(W}YÂn¦T_¢q*YÃ\rºZ6Ris]ÿQSuÀ]ÚUcv`#^ät¢^Û`Qtá\Œb tà\À\šyFfcâ{tiÅe|jžix}çj˜j>‡khxðiBnÕS/SÎ^ŽHCF{V›ECO\ØEeFê]êDáE:Z÷FôEŽW±FÏDWóD-D]hBì@§_¬JøAk_"UE9\þ\¢JeS q \ÃO~]i¹Pƒ3r#^šŒ‹‡t«®ší«>˜ËxŸ…•Ýs×̘Cx³Dš} ¨!š0yÒ±±œkt³èM|`¢Ð’èu…a‹uä˜.†[xS edxç­™™Ÿtk±E›u8±j›œyñ¦–¡‚ꢑ¥uN‹‡Ìe¸š~„¢ZÖ¥s/`¦ÁœŸìmõÅô¡fq_ÇÊ£¾{Qźž wéÄ[p¾)šöfP¿ç±r½Ã*¦À}ÛÁ¾¤¢€·¸òšlt·R™ir¹À˜‘i™ºä—jP²l•ønǬ“®s³Kšz&¸ Ÿ";±%ž´„¸)¨×ƒé­ª…Äߤƒ?Ã\Ÿâ~ËÁ¤žZ{Ý»"œ}xê¸;zµ7œ9x.¬"•Ìm€®•úlì°˜Ãk¡~‹®b–}WXØ™u‚šbpœÖ‡ÿe 0ˆho­D“.gð _†tcìšT}Ñaû¦9Œln÷ª0€i¯•)nü¹rŸùx®ä˜Õoœ¤ŒÌfº©“öleÅ}§ÉwŒÈ*®czSÆfªvzʪN{-ÌÍ©ûyäÈh¢mvÇë§yv»j¤ß|Ùžö†f /s¦SPŸÉŽªpܿū0‚’ÂV©Åvš» umƒÂ+§ŽuõÇêywÒËj­y-È›¨&tÄú¦ÙuL·–›Ær¥ê,mßšð…Ádñ üŽKpۮʚ~'¬“–¾x¡2…§cu¡izWü³‹“^eIÁL þvò¿¢¤=„Ʋ­B†§Ïã³Æ‡N×u¸1”·4”¾hÆ·y˜q8µ4š‹v>¨¡Mq]ž€bÚŸ&…›e·«“—)|Á±ïš|}É£¦ŒñcW !†»Y ¥ŒVe?¶ œ!|@Áʬ€Œ»è¤¥…}±l—€q'®ä•Yx;£›CzÅŠ$p,NŽD{î[÷›“Îyù¥ü–ã{Y¤±ºpù¢ï‡\ß¡Z„‡N/¨Ãe>°©•°kô¶Œ˜wo˜¯›•„j˜£ï#e)•~ËQ`¯x-J!¢vŽ‹g̲)˜uu8¤~‰$_S¬™a£¹1™Im}´á’|lŒ·ô’jïÄ$~nEÆŒŸép)Âøœ-jľ%šÁb¬¸?–~_¼°\“Õi ¢¹‡ÌiDŸ'‘bűϒ%lØ»ŸœÌkºóœÌjF­Ë”mgº§bg›3€ [„êf´MK…~n}U‘ƒ bÒ›}‹acù¢¾`í²š‘rò»' R„µ²8™ž€ h†qg’“u§S‡f„F4€dhC§‡ðróUÕgyDg™ŠÀrÂM$‚]f§@‰!o‘Q ŽÝuµb¾›²‡Okp¨å”o¯²îšñsXµTm~졘‘ky†Ž7{›hU„ßo$V~—)‹v¼”ÌŽz€¿… }ùm;}Ylç_'€shš‡t}kr«’$Š@sœyfr¢¦™¬uʧ›žw“¦'|~_œ—‚ª–¸”£ƒÆ”˜•é´Œ’¶‘Ÿ†“•)™‘ø˜„±'›(ÎŒ>žÿvDžå}jŒÚ™´„‘Šò™Qù†$•vu€—–ÉiDuº‹æo>sÄ‹lqÀri‰ãrz ”Öneuâ’ß~1}<Œº}ÔzŽßpõuÿ™yrúuü“b~…rÓ”°ptsćkptN–~hÐg´±o÷cPzU_¦REhYUóQŸuÍHšHunäQ„Jd^¦NBEéS¨O)M«h&q„tžŒ1€g‰h™¹‚…ŽÖ—8³Œê˜À„Ù*%‰üŽÒ–!‡æp`‘ NNbz~IUUW‰qnKÈP‰jáLµT=q$]0]qn¨p·n“kýˆ{¯là–0Îkêš¹~gl{šÚw—kw–uÙeÔšRy¸nßšjx0pדJwði`oRgD{_]ëqÿZF[;vþ`']+v6a[Zw§ebc}x¬hh΃tq[‡"yÒs&|"notvAd]f»t _”c®t `Oe´rkcHjmc…h[ricÀqc@\¶m YPYo³UíZpT"_Ôs&Y¹^ùs)]pR†tD_/X rÛYä^vs•[Ad·q*[>ajsò]–bBqVc~b’vfCe:z“j«gÝvµf­h2y…jÕk…{li vEgp«SÖT,_nGqHCWGB7@ü[D£BÈ[WC|C~WÿE@EBU²EµEæT|@B¦V½@hC[¤E»Ek^†H]B*]ßNÃCY*T³HòSªaÒQZc%T\Y]Ky°sÅ‘n‡9yŸŸ{—•‹fnh”^‹Í{”'Œ`xŸ–a‘}xœ{“‡kõ›1“ p·–õŠÍnK”1„>oã™}ŠUyJªœ™ € Áû­«‡ÛµŸž²y‹¥”Þn.žánO™²…Ìe–´[ê”r~X½ `Œág³Z˜]qGÀþi|u¢ž7}ÝÃÌ }äÁFžu9½Õš°mw½ s¤Ãè§•€¿¾£‚J½7œu-¿?œ¤oé¿‘œ0lAÂvžDpa¿ ŸÎwˆ¼2¢ž]¶²žS{3´7ž }™³8žÃ̹¥ì~2ÅG­°‚^ÄŽ§ÃN½í›¸ss¼ã™Boœ¾…”v!¿ä¡|³³›vtA°H™¦r‡·œèt<¾C¥Jv³°˜#g¡ˆR^Q•mz‹[böt@\–”lw)Vþ–µwCN/•ásåUá kZN¡š/v!ZÑ™ÖsäI— Øƒ _𝵗ãqR²åšòp«Å“Zlûë›z¬ÇZª2BÆ8¨>yÅr¥ÜuïǦ³vRÉm¦twÊb¨±xô¿B @y.ºÎšt¢œ£k\7—ÖzúZ©ŸSŒämâº,¥Ð}¯Å>®}Yĺ¨\vÕÆ]©þužÉÿ«€x[Ènªit]Ƀ¬œqÑÈœ­¥u½Ãø¨»{yºŸ½{ý­€–àpG© ”ƒl­¯$š yh¢êžp¥›â„le£"Žúlý³+™÷p©½{¢L{cÃe¯Iˆ¢Ïy¼ÑÓ¼¼“ËËä¯ô‡'¼)—øk¼ï™q„·ª˜.pè¦ÜŠrb¢Ä}R®¼Œ,fܸ*ŸH}弌¦B€£¯A˜*o¤!fYŸê…µb¡S=rǪ4{Œû¤'˜‘ƒƒ„°aÛ›ðd\ K…·bޤjŒIcÝ¥ ’õjV±9µ~á±P›Ó|£å‹ögzœù}©N šëyTL£‹ôiݲ˜³uO»x±·œ¤tõ¬]—oH @ŠúcÙ•»ÏZÈüŠMk§ ’¸tMŸ‡b(§"æe=¯2‘Qká¡2+XVªÎŠúeÀUœ‰tbÆ®¡ s®ÃcYlT¾þ˜ÌeØ·—œdb®’fá P‡Ç`¬™~˜]ò¡Vˆéf5°´•ye¼Ÿäf­m˜ÀcŠ¥‡f]q™!}õQ"‹mI‚‘Kw T¯–…‚yb ˜÷„ïaž(Œ«hC©D˜`yö»º§8’ôÇu´ ž³ÄœB†ø”ç~ô`܉r\Pñ…qL݇-scQ ‘¦|ÎaAtwTÓúeáHä|ö^#I_h QÅ|9e–¡Þ"p<³Všmy´Öš”}üªË–1{á›ý‹fpšìŒ}uÙ¦Ö™e‚>©OžÆ‰Â‹ú°k¡xDkjQ‡}èt eʃŽrq¬‘¡‰ºt´œw•çt¦[œ}k¡›™ƒò˜B˜uˆ”Y•j‹Š’õŒŠ‡™‘W–£…¹‘,?1‘œŸV}̟‚Á†¡‚%‹Ržÿ~¼ŠÐœ+{Ï)|hˆÎtFug†«gÿo‰ú["iå†g¼f‡|ie÷…c×oÃû^jÊ„ah™pŒ…¸hTmÒˆÚj=nÍ–¥j¹yZ—¼xkŽŒòkña7€^XñW¹„LQÕ}gUÅQ–mMAKØa_EóI;lkBVGölICêB&f H^FàgbIMcj5lóu!Œ {@ŠÔš“€.Ž´™@xlˆÀ˜{Œ°ŸT‚Œ“•‘x/€9Žr^n˜‰/CŽS‚}ƒI€ORt*HHM¨oHFNtåL RtXd brkƒ‘sìt`’²zCo–K}ßm¿‘psThK’üp7hV•ŸvÖji•x#k7”2vElÕÈp&i|(fßb„s¨WyY‘u\m^ñtè_¬^§x6f²c3{€dd/©lßk¸†ôsÔsÆ‚Ejkr„x“dIfØt^¬bSuga•c$tèc#dèo»bÌboÎbƒaOp²aGayjâWbWÑmžXmXµp¨\æ`²vôb¼guØ`__As$a¸_`sÆc h·s½c;gJt baMv.`uajn\d†tYdÈhÃwƒfrg#xgiˆlqyap¶o¬yamÁièsti÷h‹U˜Zh^ØFJÓU£?„>>[ÜEwE7[vBãD¬SDÐDËQá?Ù>àQí;g=KR@¹DUCIþ[°F{HkdÔFDÝbÆFÖGïaõKOm M8OûqªSÎUÀsõp/jÈ}B…ÇzÑxB„½zPuD‚î}–…FŽí€:‘s”xë‘(u¨“Œv–ZŽtcš;‘Ûx/Íbw¿¬c›Q„µÀ㯧’1«¦™P€5Ÿ`Êx¢©’QtS¡ Ž;lV™oƒ¸aœ’Ñ|š\F–Mƒz^ù¡WŽ0o#­h“Y{p·T™Þ»-ï~B¿LŸWzJ½/"r=»4›Ùmì³h™Cs˱-™Ñ{еԗz滊—s¼©˜ìi˜»²˜cžÁª du®Á½§‚¥·±ž;zQ´¡Iz/¶Rž8|‘¸‘¡«|BÂD§){°Çç«Å~KĈ§‚wFÁŸ Fl‰¿žohï¼# i°º2zo¹qœ£r6¼Ÿ#x²Àµ¢lx©º›=hƒªg˜V ›&€`Nu‘js´L‹¡lmJ¾…5gìIχãgNöŠ•iüLÊ‘p…Q’;mXMè”Yu«W£¤9¹p±—˜är®ö‘½`B²'“ãiGÃ}¡÷{»Å¯¥z½ÃX¢|rÀÆ‹¤àyuÈŠ¥í}ôÉ©zqʪu|.¼b‚už"‚‹hŠgfK/“ÊwÀXð¥"’%i«º˜Ÿ›(„`gf™C‚<]§r‘Bmê­ì“Êp¡H*Pâ­Ÿ?c¯Â΢XwõÈp§ÐuJÆ€žoÁUœnƽNŸºq¸·Ð›m~§]_/š>¥W¯—Þ}-\1¥2°dD±å•h+¨÷`矆N[ÿ“uxDOO˜PÊ¢+hd%—†$`Q‘ ]Õ˜ ‡|dî ²’Etⶢ׊ٿc«9‘8­šD„j”òFdæœ#‰øjÛ›÷‹îkè‘Ò|[É“{T` ‹pSR …CjÕP€QcuJ ƒjOüŒ©ywcé ü®q_­ê–[xœ­‘–¾{ª¥•{Å¡‰“x Ë”Œ}i¦ì˜àù!’,z‡é{çgýsnÉ[ÿvŸuelþƒy}––Ï”þ†R&˜“‚ìžò›p‹.–™”Àô•‰ñ‘˜D„C”Y†°‘†˜\ƒS¸› ƒ’ô è~<Ž Fƒ³Š6Ÿ!„á‹Ã’g}3‰"arĆ0p²kvUT&OhdOU ~OC#M@xPVîPÁu`M‘GlVKN5t=>GKiuTÍPjêOîL«iY2`„ƒkL)Zz€Çgm_“xæO’Ij“dsekE•Zvôiù“+vsiå“Xu±jŽøoépS„_hf¼u¼U;Xhwá[Û\Ìv©`ïatš]lcyxbâer|neh{KbSh {gh$tF\Ç^Xvñ^Òb&të]$``vôdHcšuàfodÏrîde¨oabCmå^µZ"o¹]¦X¢q¬^Ÿ^SuÖb|c÷tcÛb9tdåbPq™`!^pý_;^ösWdh`Ät”c¤a½umc"c|Öj–gX~kñgkykKk,{tÝrñsr–h,v†q]gJ\G_0aµLØMãUñ@BtT?¿BoUï>âBMRÛBûB¯R(?S=ÔRÞ<›;»Q@4BaWEœG Y‘DF6`ØBcBbÉBßH{b.D:M4lBH)sÒDºKTxåAxK‚v7XþSrRÂO–l×Y`»vwWæi…n—~ˆ¦s¾‡I‚ oȪ|’ˆŠ@yžì–Z{l¥º•Øv‘©ä—€±±ˆ ôÁ§â›žs˜¶Š-x/ v*x±+šÍ~²¦ÿ‘ÇqežáŽªi —Gƒ³Zü—®c]°œù… oœ¢8Œz°f–|º@œäu¿·Ÿ÷r„»òœ”n°©_’³gŠŸäˆafAŸ¶‚œf`¦†ˆl µà”·r¹˜já½@Ÿ„wþ½ £Ë¸|ž|ø¯Äšt¶ùž|Ÿº3¥º~B¿‹¤ÙuÏÄݨŽw‰È£­Óv9È#«v1Æ"¦p¤Ã¤ìo¡Äʧ‡w:ã§­{Àù¡b{¶Âã¡iy‚¼›>i²Ž–b>©ü‘µ^¡üd•ˆ{%W]‡n@Q…mNSG‘]|md¬˜…»k:t\VnˆfpGË—%}[m© ’s˜©î«g!±÷ŒK[;À(›GnÕÅe¤àuËë£Pu2Ââ¡)|Á® ñzÇÁ-£ÙvÆ §”s9½Dy꡼‡=jÝŽ¬mO!”…xÙ]©ŸA‹zhM®ç“Äc½¶ùpv¿*žÒm ½³žàuê°Å•ókd²2“…hj²³0fj°?‘ŒioªÓŽ a8©‡ŽÿZޤ€‹^Z›ÜUVírýI_™I€JZS­@”/oí¾Ô£®†«Ê–÷zP±þ˜{•«Žˆk6£æ‡Np‰£;s¨ÃAžñjîÀŒ|h)½pœÇlì® ’jjF¬¹Žiâ»ÞšÈt!ÂÙ¢tÁ=§¬vF²¿vž¢ˆüf8™ò|Æ[š7"^¡NŽínÇ ó>p­œT‡âfÑ¢4Œ5jδ!˜¾pÞ¾h§­lÄ!µ­‘l¾ôªÀ‰m²š1v¨³ómæž‚ã[›Œ¼gHlum/K ›ŒOh²P›¢q€¹mŸlv µè›‡t쫃•*t:ŸnˆBi/–š{óZw¯s©NÊ’|wþN£XÔl¿±šîu«@_‡µA—ïhíÆ‡§0ztɦxwõÅž€rÕÀ…Ju¶¾“¥Fzλ¡Æs,³&˜ŸhÊ¢‹`ݜƧh:£޲q¬¦…ŽÃi§¢—ŠbœÊ…´cÿ˜jƒµc‹¢>f‘°óœžqé¢l•qmC‡ŽÖi¨ šro¼{‹Ài€ çg!žŒŠyeÒ—<‚b[{•Òw[M£Ôãnk£±‘plÙ›ï‰jV–$‚Jilçw«`â¤vû`¸Œr’VùŠpURÜ’J}Õ^zž8#g¡ØŽzlz¤î‘úwa¬O˜~Û©¶šå<œ\–0‚™™ \zY‘©†Y{Á|sz:~ùrÀwg~@} ………Žˆ%²Ÿ’­––’k’ñŒS\ ‘&¿œ™~‡–ï^…Žž?„ƒŽšxˆ‘Ƙֆ•Å—µ‚Hx„§Œì±‹ü‰Y“,ˆâ‚”…rçsº…UNQærSAI"\VôKbbÖI›JÅnŠCÅDwlöHÃC‹d^K'D_FxAR]±BAõW"I±DT:JUE WÄCÌFäg&EçGðj«LžF`ÅNøH[ GqFa]¸AÓBucgFŸFfhŸD®FgDI dèB‚Jb’?óEl¬BÛFZoÿInXçfyhxs(„ù‚…a›}ÈŒo•ezê‹á™“x˜Žˆžè†tŒˆŒƒqu°}ôLmZ%wz=ÂLwKCùM2y€D½MÍx²CÏK‡yDEÄJ{ÙGIlumiš]4r´…sŠpbûwmX‘$tjô–îuOkÅ–çv iÚ’¿tˆi‹‘gs›ié‹‹r¡n‹´cua“xRZš\Ÿv›[[Éw`dKvæ\#eøyTc½l!vÄ\«czœ`¥`gx-a±]Ét}^._…s\Z^Àtô\Ë\«uw` a}@µNƒ:R>S|=@ØT˜?û@HSŸ?šA\S–>4@T;Ü<´VCBCBWG–F˜^òEPG×dD8Iddœ@µF¼g†E‘INrVGëMMw­G OxJ¸LìqêL¬L¥Å’!n L‹$`ê£Ú°dS¥ôŽ‚tUœ‰ºvw£Žîoü´h™mF½£¡sƼ½¡Ât)µûšqª£Ðlq—€µiŸ‰¡v:±j”øw ·p˜àuÀ¸Î›x~¾Í£"„;»=Ÿçú²æ›·~ß¹AŸ7R½O¦†<Àc¥zŒÃô¦sbÈW¬zˬ­l½ÈÈ©0|Â1¡þp¼è›wi¿ì›s]¿öwEÄ,£ùyB¢Ûvd²—0gV­”õf2°ø–²ny¡RŒ(jGŠ3rR0†JrX\Ò¤‹lu—ù‡qBétðX–…²_QB±—rÕV¡ËˆtÁ¦&pG·%—lƇ¢ûs%Ç>¥ärûæÖqÊÁ‹ ¤{ ¾Ÿ z®½Tœfk Å´£`m‰¼½œ¡qä¦ó[i]™!4c ˜Œçjd¤tŠjɬ¤¾_,´ ’úc¿»ßšño€»7œás|¨üнbÙüwDL²¡ï…[Ž®i“qoL»9¡a~¯©Ž“l}œ?‚°\³›‘€Ù^Qœk„^ŸÏŒq_ ©$‘lg«gkLYâ\©“Án®G7”ZlcF0•spõK’½rdMnÂÏwm•Àœ-iT¾Èœ]l¬º›‡qù¸¢š r%Âá¡w6Ť HrÀ¹L—l3£SÆjõ’Tz Z!Žèq™^~àš!•|€Ý‘¨ˆwbˆB‡Çƒó~ ŠA‹ÖŒ+N˜3šS´™1Ÿ²— Qˆ¦ŒX”Œ‡Žš^‡æ„›¥‡@ž¢†´ xƒRŽž‡Ñ´—“„@6–Ñ‚¨‹ä”ýn£uÁÇ|¶p­|éh¿U@]T"P{kÜ@|?.a½KqCäY©KÞFA^†GÈIyiÅB5E@iUF+EûbÔFDõZ°D•B1]b?í?,_€EÊGC`CÆDÉ\_B$DBbNA¢B8_GG El]/HÛEbZˆHmHa#BçC9f‰AðCi>A¥f¶?kEgVA.K2k®>0LoÉFOrÎJƒTtIYŸj ~ny†Ñ’›ƒ™Û‚˜“œ¢vöŽcŸå~wz Ž£\]_¥h“L¬U÷q“C²Q6v&D‡P}vZDíOÜwúBWNpy"B½KjxÄA­I½q¶]|UùklÉ–»yKk¾”°qÍe”9sÛhœr…iÝŽGp nfŽénxg߯aÁaÂx¤W$Yv‡ZÎRÏvq_NX‡xc_¯`ÊzùbÓi†v¬_b/w_ÀX(xÉ`jW„uP_Þ^!u€^EañvØ_Å^w¢`z_ìtñ^œd‘t²b»jVsºe­iÏm®`¼bÿoå_w_Uqø^I`-rv_U_óp½^~U¹s3bó]¼jèW¥YšsècSivmghkzœj f‰|öh¶dƒzjdã†)oÑh§{­ljjw¹rñd§rtfUaDd.]'a1N£Q‡UGµJˆRá<Ù>XQk89:´R ;†==SÖ<…@Sä9#AR­;×AùT»<¸=Uÿ?ç<%VNC°A[‘DÑEú_!EšH'bD‘ItfBeHkVDEMðqåBtNùvÄDNºt0GØMýs§E8L*vDCÐHrLøKÛm›NÝK›cqUHSmgkNüNè](}rŠkŠ5nߥG˜o~œŒixú›E³vÀ–6‡œpñ–„dmD¤ô‘£x ¹‚Ÿ7†©¶6µ~€²2™÷r»°%—¸n·§Û“ªqħ‘•Ë|­˜ÔnÁ¹TälI¾Í¤7wZ¿ó¤„z­¿X¢#x2¼B¡¦~%®Àš ¡µŽŸ†‹ ¸¤ší€@½·›1|—¼`x÷ÂÓ¦ƒ7Áv¤p‚“½Ñ¡¦Œ»ˆ¢Þ„AÂzª[¦¿Ö¦žƒ ÃB¦ÜtëÇ;¨Œueɧy|Ä-¥ }¾¼`œ>p̶­–\jî´µ”ñja·®–°lÚ¾DqãÃý¤èw§»tœq³Ë•ãj ¸qšatå°Å—èt¤[Š‚oôsz=gòŒ}|›h^a|›cÜ„¡ioKž€W`=§”mhT~›&…îpª£{‘5s*»¿r`Éwªáy“ʱªruXÁr Ÿn ¼=¡ót®k—ïuzµd—ZrmÂaŸhx'ÃÀ£0}[Â觱ʹtœ©xü®¯•r¹­2’ÑoÔ®p“¢møµÄ–Çm¶¼àGv2Äå¥&[¹Œ˜Çr/ n€kWì Eˆüga¼ç¤„ÓMÁœ{įŒ4­Ï•ûx®Á•-p@ºK¡x%ºn¡ |¯¦“oû é‚.ZR—w™M5”’w%V•”Hzd\8—b{VX8›â€Õ\ŒÄ[ŒmÁÀ›Ðj‡¿$œ"iø½àœ m,¼I)q­¿hŸàpá¿ œqh­²Žb›hƒfŽˆu]Y[…ôgtFº‰ëm*J,›‡´g£™“*mÏ­†˜So/¼äž\u»¿ŸovmÀl¡×{½ÇܬŸ‹‚¿ú¢à‰²¨ìމs0&€Ýf“’õsFYÉ`mÈL¶ŠÐo9H­Ÿ‰‹›ix´â€IÀ¨Çˆ˜Æ×¯ÝŒ*Ãv«D†_µ{›œsM¤eviÍŸ Š@n×–,Îb¨¦w“Sv˜Ú€­VÖ¤é‹ÕW>¶ ˜!j[Æ‹£Öy×Ȥ£V{´Äð |ÞÀ½£z~¿À¶¦žz½Âß¡ÖsÁBl¾ƒšfd³¿%ž{r†Ä:¥ |c»úšéu¤"‹wc/˜ÖW»–¶¼[S &òp*­,™æxs¯‡–2npœ ‚W0ŽmtE[<…Ðkl\„ÒkÁXJŠ®uö]‘¶~übþ–ð‚)eÏ–Ð|M`“”òtËT/–%}÷^)’ï{\1•.}|^ì›Þ„4i»™T…hF•þzccu‰]ý‹Tq¦U§ˆ`pL[ ‘5†nk˜XŒ vŸ‘ ~"—'ŒL}%¦‰¨€GU‡8ˆ¯Òx˜Œ¤—ΙL•Hžä¢F’‚¡¹­Ýžg¬+ŽÄ—¥jˆÑˆžÇ‡ ‰ž…\ŽÒžºƒôŽ&¤S‚Œ4¢ì‚‘‰w”H™‚|‘ik¾ss‘;Pö[%‚Õ\‚QBj P DÒV©BÆBfü:[CmgB¬Eqc/A1Db–@&GùdõBzHÙdúFcI"bC[EA]CAEpdd@CEñh±>¹G—hÝ>kG$fR=“Dä]àBƒH^³=­B]ÞA(E÷bËAHEmj…AE;n†AŸHp¸@YJUoÐBüLýoßA¶L#q§?N râEÅS–oèJ=Yn•GÊ\´sñ`þiÌxnpqvþ‰Òxþ‡&›7w=‹š!kÁv܇)]7akfK_VoTGßUuEQ.v£D?PpuÐFHQáu¿B%Oñr½>BK¹lPHjM-j+dÎ\Îj„qs³jZ“Óy¨lö–¶vìjŒóo1jw‹Ôl˜j Šýpérȉ»m«o „CcÐb }V]uW0z=`0P8wî_ßPöx_Ð]€x=]†`ðxÓbÀ`uwša ]½w3ai\Ãt¿]Š_/u ])amsYWcxa!^—wFb.dušbzh­sÿag¬r aÌbŸrò``KqÃ`‰cEraÑcøsÞcŸa@u*da¿v!e»cû|Ùjãl~kØj€dkŒjÙ|ücvf»ƒ™håiîƒ%oílT|‰oäjxUh·eãk°`ê^OP¤Q¨[ÀCaNÃUjC‰M©UK=ÚC S"9Y;LRð:c<¨T8`= U9fA/V|>EE²V‡=Ï?ÆV=†;^XD@­=+[TFbG©c(EMJa @úH™fCyJ¾h+BœKSmKENP)xÔ?jN©w…DyO[vÏA‡KOv«EîL£{ DGKzµFêMNxÞESO)uÅF×P”tWÚXénƒw½m~m¨ƒ…zëuµŒœ‚œu“]‡uº›ŽôvTžuÛŸ+,o­—Ýz(¹EÞ€®¶œÞyˆ¨2”›h§§”´i ¨×–‚tè¶ÚñyvÂÝ¥VxNÃЧ>~íÁæ¤~˜Ãa¤/w£Ãj¥›xgÃó©…gѫՈŸ¼íž4}9¸¶˜!q¯¼Y›Õn Ç:§t}ïÆU©;ÇÀŒ¤E~ÛÂl©„wÍ·§•zÊβ0çÄN¨BjƧ¦ûx{˧¥}=ÆŽ£Lz³Á ŸØx»»›8xK¼Z›®{2¹¦™-t ¼º ÍsFÂ㤠q»À¨¡0qñ½Aždo'¿@žFn,¼I)qe®‡–Ÿs—º€ÿ_èrxyV¨•ój`¡šÿƒtW„›®ƒQ›3ywKk¡ð[ms¬ã˜!vÚ¹±ÄwÅÙ¦—}mÊë¬C} Á¡ãqK¤÷mÍ™í„*r¥ÜŒõs|»™{ÅÀM¼x„Æî¦íyÃÄ_§Kwù¼)2t*»—˜s—Á|žDyîÀ“¢ yĦIy¤È®¬gº‘¡Óx¦dŽdÏ¥(lje½¦… Ëï·3?ÇÕ±‰ˆ^¿Ù¦­§Ç¹²þ‰`ÌA¹ÆŒbÊí°Ò…g¿Ýœ"v¥¿‰ra˜ÕïZQ˜ˆŸgÓ›|‹³m´¢eHq*¥oJÃ~mjÂè›7m>ÀûškǼٙãm¾·ç—o½°…“OgŽ­Œ [Ÿz|#PK‘]u~iO…jˆc‚bjL ‹çi7Mà—Ä{þ^Ûœ»Šk^;§4‘Ãj ¸ó˜™ny¼gšºrʹq˜àqö±Ó‘ðh‘¨òŒhf˨à‹ïn½«s‘dyŸûŒ/|¦—…Qp±vàI›7Š_u±äšƒzQÁõ§ †ƮɌ“Ä¢«}‡ì½âŸ'y–ªè‘Çiý¡WŒll¾˜P³hVŠjpWʼnÜmÓJŒž×‚¥K¹cšDj¤Ã¡UtÞÃàž÷q…¾Æœ?qC¾ãsßÁc£ sôÄ¡¢År°Å[ Úm*ŨŸÔi-ÈÞ¦LqFÊÿ¨§y„¿9œy—¥WŒ§i”ºy¼Y¯tvˆZ ˜éƒmkß›ЇlaŸ]…&ep–ny%Y 5qYUVŠ>nþVò‰Qtc:—惇sè–\ƒ7nƔ܀šiF”=wˆZâiH…sêS”‹úpM-Ž}pP/•:z _ך ƒ†išý„kÝ’Ó_hfúxžep„Jo3]1*oÄ[‹F{qªŒ¬~Äuéú…lwú‰_Œ„€è¸••ª‡ã™¾§ ޾œÁ¨[•ã¥p¯ “¨¨^²ô™ç®¸Þ’ ¤²ÚŠ­•*£¿ˆ¾§š¤‡€\œ÷‚ƒŽŸ£jwR…Yš¯y Œ¾dkZ5q‰Q~S‘y:„DckÒI‰E4bG,A$]?WCÿdÝ;"F×f[?“Gbfu@ÊG@eÖ?Hµcé=[E5`:AÂF$bÐB¼H³g‘BvHàiC„H·jä=G°iM?uHi?@mIaì@žI¯`æ?vH)jrC£JJo’BÍI¢sB.J!v @fLËvá>žNÌuy?Oäu AâMwEQt/G÷RÏiÍGzRˆgS@/K§_ÖJLJÐ\¶IHN\ÑZxdS|–WlÓ‚_e=m†¦Rè\p±IŒW_nçHÍXjrEIIDXY@(E·\Å@D3[ãCŒF?\mCGG`“CHHØbíCI]cDœIfÍB¯Hj€CLépµB€Oçv B&OvêA’Kèu;@œGÎy BJ|àCM§wEÆOªwnBŒPæxuI®Rmw“MÈNk¬fvcmqÀcffd®zVlÀ˜«Œ†p­'›c|ç¨)–¾t:¯—Orä¥F–må¢Nômúy‰ÍZF¡˜¢a%©;˜Gp·G¡9xˆ¨zÆ[©C€¤ÁŸ¢z´Âc¢úqbƵ¦GxIǨ¾€ Æc§p€†¹ž›Åv©¥`ðdÙ¯þ’iRÀŒž^tÙż¨¾Á_§N|ÃÆÚ¬Þ€¥Ï϶+ Ò7» –ÇÃF©‚=Ãy§~ØÈO¦ß{}Æà£Ùy|Ä飢~dÃP¡Þ‚öÄZ£µƒÁ¾Ww}½p!u¼Á´p‰ºœ%p¿ºž)s¬ÁôŸenÅ¿FŸqlè´þš«l@žˆ%WòžÈ‰ü[(«†˜÷qú¶_¥ ~Ø¢?Žu[›ž˜‰NÆ¢Ï`ë§“jg\­<“‘mb³“–›sNĦɀq´Ô—¢qv•³y²_È„shðV¼“ŸxHc¿¯Ã“t™ÁuŸKv²ÈѧtwÈÇû¦ßwEà y:Æk¡>};Ê‚§Â~%ÉEª~TÆë§˜w<ÅÖ¨R{•¼éœgtӨNJ2^È¢`}UÅ´é–M|&Á§Ø‡‰É‰°Ö„zËù±ªêÙöÅO ”Õ¦ÃF¤ÕË °7€!½Û™„e£E‰.^’é| Y–Z€­eäšZ„{fŸÖ‡VhrŸ¢‰ÄkÓ”žýpÃbr ÄÕœ¢rN¾ì™Vo;µ:”3p¹¥Šo_Ê W} H9’8lODßdÓg|fyÕ}ãa^¤ÌrtUkŸw†ödÌ©5“%kr®5•›kMº"™p¶À¿›Ûs¡¹l•Ál¥Y×RšÜqt?B¦ˆDce¨´0ÂC°`št¥Ç“N –yêP³šë;R`¦Qžfh²t˜çm±´iœËyW¹Ÿ} ½7Ÿw]«“d±¢øŠ bB›…hiÔm|rΕû§m=¬!”6`‘¾ Ÿ9kØÁŽ ´i~¾²œ‚fP¶¡— j[°q“þdv½–œ§nsÅó¡jtˆÄGž6kè ž¬fòÅc£ðl鯣sZº•rL¡ž‡Ùdš–e| bN“Cz°g %rÁXͨr~RÇ‘¯ze\™ „Ôn鞬ˆwgTž„‚È^œ2ˆ•o™žÒ.y_›þŠqqû“pd ŽmnïNІY_AЇ¹fâEaˆYi¶J¼ƒ*e_I:ŽulU™š1†¥gFž[rÅy!’ƒžpK†ÎuoiÚ5p½aø vèrý–{S{Ø9~…‘T¦‚ˆ˜‹Ÿ®„Jœ·«¸‹3¢°Ë’²«´Ò™±Þ±+²}°¦š0­§µÓŒ–”žŒޤ”„%ŒE¦~M„~•áhjð…·k•Y»l‹TÈFYWG„DˆaËA¥E=fpFâE²fpBdCÄds@‡FgF?ÔG i·>UGøj @’I kå>âIäh{@iJBk˜@*J§lì?ÒIÌmnCÕJ"pC!JoBFIÑmq=ýD8mÚAQJ·kàDÉLÅk@CòJ»o°BLÎuvCÝM™ywB=Nìv:B›PÔvñ@!Qyw&BªPz¬A]LOyoIÔLEp›FEMþb F9Jû]aHüG¦X¯KD­PóL1DgN¨N¢OeÖ_hd$„?jËk„ RZ^qqJW‹nXJN\¶rêI Z¹uyE[RYuEÓP‡tCbNqÒAýLBk÷IÜO onK9L5lMdáSŸfs~Cj]b|‰ýn[M‚fj¬d^ƒ:jûe €cbb€ac[&{g^„Tµx_}[¬yà`§[sx cÐX`wzd])yzf±bx„`A^zcæ]mxÃaû^–x`®c;wû]Áa(tÄ^Fb[v f;icxAhƒeÂzddbèx"]ë_tz…aEd w{bMg}rÅhÇst¬qj€!ul£t`xçiEj%y>igI}=kÝg-„ pÂA?WfEòHhZ/AzD}Y®B†EzZHE=H‚]ïCGG!`©CGH`ŠDNF¥\÷EFIãdoEKkÓD]N’t•E·Q2yÜF QÊwàDxMåu*D¹M{uFóO u3FfO7vuD˜M¿wÕFöMØuN®P©sdN6PkVoWÙdgbëV“Óˆ>iäµ0¥€¿¶Û¡m°:–t…žq4]•wxQ/—v}’Tªœ&‰ä[—­œ¶qI·›¥Iy@½q¦´z«ÀÄ¢¹wÃv£$wÀÀì¢ñt°Çh«Á…ºÈ§¨Ÿ†ÅÃáŸSz\¹f™lqÅ£C‹ÈbºžØ„Zõ§Ž eY¹g›auCÂ?¦Ù~%Ɔª„y;Ê]®¾yrð©×}:ÃD¤5€oÄ ¦ê{AÉħÂz=Æk¤ìx•ÃQ¢uyüÆH¥~ËÇøŸ¦x Àn|uA·£˜rµ —clU·¤™ämIº ›»nÛ¿GŸÏqïÄʦdyØ»"Ÿìm?¦/’é`Ф¢fǸqŸØy ÀÍ©=}Š»1¢¸tÿ©•]Œ¥|‰T§°`ad¤·‰íe ¡Ê‚Í]°ªn‘uĨ5‘‚rN’Át²TZ‚Ÿb!GMät‚Yü¨~”ðvfº£·uÚ¿‘Ÿ6s^Ã颛wŽÀ Ÿîv[Åã|ÏÈC©Ð}Çϧ"{ÀÁõŸÂsÉ»Ùt¯$”Àl¯ž¯¹N^Ÿÿ¶N%”ïzéH%£€Š“fSÂ| –y¿Ê‚ªXwUÑ/¶FŠ“Â1©Äû½L²wõ¯Â)\Áš@êY„íl@PʇˆoÓRb”|Ú^š™.–c¯œÎ_‚ÄQ uªÅ“ž^wrÅžu=¾Ï™ kã·#—h;°â’­b°ŸK~xEŇ…`S6 ÝdT=‰8xzS‚¨l…_7„Ae<³¿š7n}ÀÐ¥}x »ðœWq©¾"œ>t@ÁΛuX¹¶”¥mç£FƒÙY¹”lÐ@}Ÿ6|ÌW>¾‰Ÿ7†gÍ˸9 Á¦)Œ¥§âˆó_Ö¡#‚ÌN­ …TP'œöâJΚ›„^xžîˆf~©¨¿fº¨ŽHZޱ«–Ãký¹ ¨‚¶¯/©Š:·ï¤î’¸MŸÑ|s¿Ø¡‘u¾ @j÷­9‘¯ZB¢GŠ*^H¢‹“\yµ™ kÇ¿2žSqe¿Ï› i¨¿yœ#i+¾Ìœm«ºÌš»kV´¥”Ši ž ‡=be›…¢iÍ™ƒ«m¡‹ãoãLÕˆ¾mÀLuÄ~@rqªÈ˜ø„3¸;|»ºž‰x ¯˜Òo¡³ñ›{r¤u‘ÜoM˜8‚£cÑŒJqQ¿†°gaG刮kÄJ‹¦q[X†kqš][•U…ÕiDž·Zpž÷Œmq¼Œr™Ç‰÷qi‹ö~5oåhqÕk’ysðoCЃE…á€SŒîŒ h¤Ã‰g¢¬dŠ2£"­È‹'¥Â® ¦N­z𭲬Dš[«©¬”ë£Ðµï{…šý‡ÈWˆïužlÝo«d8dD{ÍFGG³g£MÛBõV»G&@SW§AàD e#PI‰pi?¼J÷pkDPM‰qïE¡N7sêAÿLIuºAM{uMB$LòsD=NÇuÀBäL°t„CòK5uûCCLšr_HïO€sÃE‚MJtÕDÙN˜yJE–Qiz•?ŸNÌt>BÍPŸu¾?xNuw«@oLOz`AûIGv}FÉKWmÄD§Gj`DEva@Ä=ÖV¡D¾=ßNÌ;©6wGÍCƒDnXO^èd£~uy1|]Š?WÇ]ÄqfIS«p0K‹[ƒtEJÉ[LtœHMU£tHCØOâsÒAžLÊsšA$LoáC'M3m‡FcK²m@[XNùf%rO_t]»öi X³{êcþ\|w÷]l]{Yaë_ªx·YëZ`wXˆZ®x{]÷`zjaª_ëxìaE[¬tÇ_h]‰w‚cÐb:w§_™_Àw.`u_äw`²`º{2aúeuwB]â`¸v»a9bOu_dZbjxgèb½x€^uaSzà\³cx:](b¡uŒcÙeJsØlƒrc„½†nÓ€ô˜‡ç|Ñr v6zÏl)jx oöhôxÙiÑhMx€ephkq.]ÄlFWæM§nJôMtìD=LBsNnTbu|LX];„CÀV]:“<œVë=Û=QX*@kASšCòFåY­BðFm`œB®E^„CêF¬\ƒC+G_GH¢cWDF5e»FŸHÓ^æFaJéh“BæJoíJ@WÂyûKèXòw$J)Ts F¯Pkp(B5Nq GáP uØH—PØt;H´N/uH!MõtI3MÂr·K‡OÒkàT Tö_Nvºp‰W\ž ˜Hzµ’¦^q“ȨkW2yIYô){û]”¿€‹b—x…t_¬¢D•›k´2¡Êx.ºg£~zI¼A w𽓟prØ¿£³wYÅ «’†(É7«G†ëÆ£/|â¿çu§¶ù˜bpIž[Šb¼©h‘+e [ŠÚ]P¬d”mÁ ¦‘tD½oŸuf’¶ œýo¿¸¨ž‚z³Åæ©’ìÉPªÒ~]ÈS¤µy@ÁÓ(tÏÀ n0ÀÔœolŸ½”œ„s:¦ÿŒqgå¤äŒYe竞“˜d´šñkå¾6¡°v¿Çبu~q» ›Úm6©Ÿ_¥ML^¶³Q—lÓ¾GŸw>Äc§n$¸r›EpŦMŽ^[t£'ŠñX졆ƒ\Õž !W2¢|ˆ·hM¬†–}}\£‘¼kŸ¤ˆŸaîœ4…˜dëªW–Æw¸´~›Ëvú³Ô˜€pö·FšØq»I›&s•ÀZžÂuÊÄú£†vYǸ§­zV¾sœwq”«)cХ܋¯d”«~¥P+›0›¸k“‘!4†¢FŽÕ\‹±Ê’òr½½`˜»rq½«ww³ñ•ŠqÓ©˜b"œî~ F‹Ær…Fã‚f?K[~bþJn‰ruYÀ•Å{Ñd1“gwöXûÃßžw Äoœdx&ĉœTvX¿Ñ›\i» ˜ú`´å”dN§…ŠŒYŠ• víA¹àoðC¥ŽÇtHÓ’@†;Y`¤¦“ñjç¼µ¡³n=ÄR¦s€¿ðqݽL›/ta¿hœEwÁ¸Æ˜Âr¨¤¼ˆŠbÏ”qp›HÏ™»u¶Oܱm•tváÇ«­_nÊ.±žŒPÁ}Ÿow@´“`eÚ¦QŒ&c~š6MVö•Í~<]^›#…NhŸ]…·[–¥hŠñYz¸{™ŒoÆÃªÀ„@Âhªm‰AÀ4©„‰[»ñ Ð³¢—[v~¨‚ŒÀg\›â}nWË“G{‡WØšL‡ý`ö«ï• nm·5š6p¿5ž«o\ÂY p©½‚œ©n+·¢˜òl7¦×iá›e†ycû?‹Äk œê‰giF˜„‚ZFš@…§\_ŸQco赩Ÿ±<Å!¬§‚cÄÇ©-}>½ÂŸ’s ¼æž—uâ³Ü™[rJ¡_‹—c“9|‰UÝ‹Ðs Lá‡}nLY…­o‹X¡† y›^©•X‡o¡žçŽ6rï‹úk¢—Á†4dΓ‰…udaŠÓ}Ø]â{Eqý`ÇwëxÇykƒxl#ˆã–ý—‘ ¦^®^“_ªˆµœŽK ç­rˆäžÝ®ƒ‡è– ¶’Õò¡\„©‘qš—z¼ƒA __ah}i´\r±W9Mú^øFÌGgj@©D;g‘CåE‹cþ?DFwiÏ?ÁJ6rç>µJ¨u–B~L)yHC§LLuŠBKKºn]BgKSnC§M†qÍB2O™tÌDªNÑtDþMTuÂBµNŸwÆBvNu D´LØqïA9NÐsÞBáOXvêBN¡x5D5NpxwF!OnwD$MNx¯A M{@N¯yŠ@jN©vâ@©MÆv›?/KvyÖCM>}|B LÀs!DKGiþBšE`>AöBsc³9b:xW´6‹5O±9¥6sNg4c7ÂQðJ-Túl¤tíy‘‚3Q÷\rrËIQ#tL,ZÔuqJ6^¾rQHVV}rzG+RYs]AÀKŽwwB°Kur„HåMXo BLÎn!J5O†lÍa¤XHc…s‰aN^#yü`k`*xž`]4tÞ\µTUtíZŠYáwW\ a…xÙ[jfrx]Èb:t¯WÝ>p\ D9E\CA§C$aÑ@šDAfÀAEÀcAÝE ažBbGddAôBBc'CoC4cxE/Hb"EJùgÂEGLžo‚KÒS0ucLÖVžuDJcUzsPEíPpðCŽO¤r”BSN6r\GóP u¹EáOvnEsOy”EËNÊxßGQYwDIXQ6o[^›`hµs…qïkîvÌxky>qd<‚’vqhhŽU†Oq{’Á‰çoÐ’dˆùhœiŽ lu³IŸ%|½8¨Ø|j½¡¥°z½½{¡esæ½´ Ùl5À¯¤@tÆÉ®|µÎI±\€¯Å…¡·s¾Ržáx´º œJ„ÑØ¬#‘o´ø–¹m¯Í—6n³"›%r+ª—“%c¢›ã†i]ç¡8’]q µ}Ÿü{…ÉU¬ï„É §Ž€MÁÇœJr$¼­™…hC»ÊšBhÚ» ›Äws¢Œ×hϘßj[_¡Ž_fY²„š4v$¼9ž·yhÃó x·´–Le^¨ ŒlXf¥ˆ·Voª×Š,_9°o•Ÿi鼜žèz®¸ì™sË«Þó_—¥ŸŠ>V3§öˆ(Uœ¥‡õV¡¾ˆã]w¯—™kw(Çt®hˆĘ£qzÛ¸Ášùpѵ…šÅnÙ²)—^hy§.‘Ýi¥djS²þ•qÒ½Gœ¾vÄÒ 2v¯Æ†¥wnÁW uu¶Ù—ÀkÞ°»’Élœ¢†Ç^V•Z‰pX´¸¦ƒOâ«%”Â[‰¦BŠåq.´J–`}°<“üvS¤¡‰¥l;;„r ?ÛJµuª?Máw›@ëM|yu@üL5{·D5O£yiGýP“r GõPqJDˆO=r DýOËuèBMNÝs‘CÀN(tC±N\uD¥OäsÐD€O²s"D@O@t[CNOw™B MÜy;CM»uéALýsD_K…i BEË_{?IA“\;5¬9ÙSI5Ë6ëQ34–4×Og7¬6œLü;ŽCv=AÁIûs€CLépÆAõL¼oˆFPPr—WMSUgÐl¶[5`…zþ`ªZ¯{§cÃSöwa¿Pw)aŒ[4ybkc\y_¤d™y`dÞz®cÉb»xe\®`px}a«a v^d^¯vö^caŠv¡Zhév3[eou`ÚbÌwèceaÔyÔf?\ŸzSf^”{dc@_é{ucñ`äwZbTb vdId¨r@eëboâ^g½DlKzpk^N¾W/fL)Y \éZH`V^˜dxc=Ztzýt“gІT„„j¹J†ßg*–…ƒÊ[M©U–spÖ»C¥*}V¼¥Šx ¿M¥ÆsUÀÍ£Žo=¼¦ŸAi?¾”£mƾ2¡òkŒ»³˜Yc´ž1~=èÃÍÂÎéñ<Å­™œü¿ç ÂßÊÏ­¶~-±Ý™/pö§ˆ”lÜ•ƒ_8µ~9] E‹?fü¼ŸZxÌu¯v„±Ä]£uz$¼¯™Rnl½º™™q“¹ö—œyAž£†|h’áxdYqœ’…èaµ­©“RpJ¶–ïnD¸b—YhD´¸•ïd“¬sÐ[°¯'¢_ÿ¢FŠÉ_Ù¦ù“$o?²‹˜ðrº‘› w…³•çgP±®“Ta–±ð‘V’´b”I`±J•ãf-µž™õn.Æ §¼ÊpªlÃú¡tǾƒžflþ®¬”&_E¡MŒ¨`À¿‰0cÔ§µ‘kÉ»œZtiǦ“{æÉ|ª{|žÉ8ª;|OÅУvÄ–¡|õ°• uG˜8‚ SU– †|Zj˜ŒJbðŸÓŠÚq&¯1•¥|£¯h”Ôzb¨™Ðs)šó~¾^LJIq„ayˆ"o—O‰›ƒ¥Z”·¬™l\´h•JtÁšJz—ÅS jz½¾%›uqº-˜pn.´P–²md«ù“GmÒ°þ—-r¶›qº5ìrh¾öœ¶t•¿„›krp¼Ú˜ m³ãþbÛ°ÈWf°³“oh:¯ø”òj?®b–Uv1¤¦ŽKov¥»Šæf’³Ñ•®rŸ»jÔwË´3ŠþÝ¡Íı©Ì»äŸÏ¸ß¤w†ü·¦Ÿ€[¡n.m¹ž:‹ph ¢zŠb$¢*…Rm¬–ª`Š»žísʶ³ª…ÅÆí®½ƒµU™~§5æx›…js”d 1~I`g•iƒpfúrŒ>j¬ •žo!½žÃv|Åœ¤Kz˜Á¶ž vî¸Ì™½x¥¯´“-pæ£ÑÒgä¡ÒŽæh\Ÿ·>k$§Q”úw¾¯'˜Tu rÀŸnÓ»©› oú±è•2oµe™m3¿¤¦Örý¿I«¿}k²´œ‚vžñŠÌbo–ÇÏVü|9lx‹ˆu¸gˆ†¬s*d½Ž‚5g›ÔŒ’hŽ•¶‡’`‘Ú‰Ùo¼‹k‰$€ë‚oŠ[…‚Q"‘xØ”nšˆŠÓ¨AŽ ¤|´‘ž¯®MŽ‘Žu“L‚l}òƒNz ~M“iðmC‹(m†`íw dŠT?t_P]Ô~À_"`œ{RuQ°h8GIè^B—H¡eåCkLÁoÈB‡MÇtoC7N•w+DbP]yuC|qAL:|®CýMtzÐAqM¤x”?üM|z>@ Pã|‚=NÔzàAÔM%z¼@LgxáAAO…y×A.N6tB×J3lø?5E¯_@MB&[I5/:€T«0ó5eQc69MQH:7¡Mð=«=S“LR¿jµJSjloJöTPo»JƒX±sóKÝ\Ôw÷HY¼tDØR†sù@§M·t BQKBu¢D¾M¡rxEÏNÃpÞC¦MTp#IMM(gòb”VÑ\¹v¨^hQ9f˜O¶|nc}Qœy`l[±y+`$_z3_à]}›b³dèz`…bézï`!aÀy‡`~b¸y`,`|s&Y§\wñV cxëYObézldúeyæaZbð}ùe``}Lb¶`êyA^9_¢y;c;aÐtža]c2q1b¦czrzdÃ`jrÎ_Š^âqÀ]K\crRc×Zår¹e"YgnžcM[«c2`AcTõVwbZOcR‘bYI˜RßjED…S|oòD Sto€E(R­kßH“S nîF?SælH¢ShìFSs_dGÄXF^IFJZ³c°R~e¡qû_^l¿w÷IBU£kë?AHc/=ÐCË\–@¹DÚc)@…Ggeá?óFaˆCüJÄ_=CµG(\:CÑEŒYÍBHËe D³JßjCCaKs×ESO9w FQ‹bзÀ”šjw¿Ò›DtB»ë˜Îm©¨ÜJ]£NŒa\ƒ±1˜kW½|ž_oîÀ¬µl¥¾|™0n¨¹Û–ms®±’mq¥òƒ/W%¡oëRw«ÜÛc¶Y˜ol÷»Æ>vm¼bòs'¸ —k4»>šq;½qœr¾¼í\uEÀ{¨Ü¾´§›Û‡9¸Çœî|«º¼Ÿ|iŸò‹Ij–œd‰Üm­¤S'o’¿‚ Zp ë…bI§ßªm|Ä¿«U†9ÉŽ±#ˆ~¸˜œÛ‚!©0‡€x™§„PiXKxüViÏ~â_Ú•?„˜g¿ !Œq® ˜Œw/Àõ¡ízTÉÿ§¢|oǺž{pÚÁ5˜n”ºé—uߪ<”!l[Ÿ@ŠÔ]R’¥zvS`–«~b e‡åc¡·e™ùo¤ÀêžÄrʰ;“³eú Ú†\¯¢޾eµ®‹Ar+·)§2~ù¦¦šXwr™½T]Œ¦qóHfˆXpFX-~»b_Nâƒílè]’ƒãn ›Bpß–Ž6sŒo‹€â…‹C‹ö€`ŽqÄ‚J”N™S‚ˆ–2œÌ‡ª›¤oŒwŸ¬°¦†-’) :ƒ€>‰z´u„€[¤XxJ©M‘u?`LW y§m(jZƒ»g>j}MöTvwKåOl0EWKøi‰C1JÆk CtKùn2CTN6q EPÒr,?NÚrQBûNœvtB/N0y F§NÝz(D MvµCÎM®uóBCM xÃBÆMHwdCEL.sx@Køg<@AG\^¯@C¥_Ó>Aë\¯7ê=³Tm8AQ@±BÎNh6ý5çP„FzKbd÷HS)müIhW@q=Ks[ u¹L{[w:JäYVvOE¢S©s ?SNt¾AMâtUCÉM_rçB˜NriH#O*rÁNTQÇk‹^T_t`ÞY {iaU‰{E_4UË|`Þ]:zà^X[»|×`ŽZÃ}Ôa—bÑ{q`cbðgÿb:‚nh.t‹e¨h›vþ\É_ñx|Z ]^z½aóe­xÌ^óhÑw`Wµb0{p[h\Ë~aøapzc\û`[w]=`ˆubƒjém„`øc–qdÅ] rNbÌ[o¸`<^«l‰atZrc `çd‡\XpTY `TIRR¿exF\Pšf‘F%Sši²I)ZŽpZH S½t`HdRUpüF½PíipGûRèm}F}R+laFTRáhGëWúh­FkYµgÈFåVigHN¤_wgãIZ´eÛG:UîjíCØL°h©>·C:aI>øBS^?ãFE\tBÇG†_ CÝFpb¸DÁGoP«ß“o¼®ˆ•1p««•1qè¯þ˜Sxt½Î¢6‚ˆÈ¶¬¬„Çê«<Àä§ü‚³D²„Ù¨B–S} £º‘Çm(Ín°NÔ•"vW\¢©ƒ,]ȵµ•ÀmÂÀ/ uaºš˜&l¥­‹bZ>Ÿ#ŠfZk¯Ý—kŸÁŸÊo@ÄÝœõj=¾˜Loå´×”tͪŸŒ§i2ø{—X‡Ä€z\ã³1—ymùÀ—žüoÄÔŸÉmÀÄ,Ÿ¯g~À|šðd÷¿0›moо8›rq•³Ã“/j?¤]ŽðmñžŠkI£}‹‚gÆšÒ€&`n‰_oXVy–‚èm¥U’˜yÙü€7cv‘bv!\±—?Àir¡=Œlp^£©Àl¤‘dtG¢Ë‹åv@•ó€Aa÷ŒÂxkWÐŒxÀVᑞ|^Šž™‹Cn^­A—Óx„Âb©…%ÊÚ®x~MÂ2œÞbñº•ü\øµœ™_pg°:šItü¢+öeJlvŸRÙŠ˜q‰M×›èƒ^]¦³ÿ–”q ¼tœQuݫˑjûš—Zz˜Šb,ŸÏŒn>¨™¼‹¢'–º}Ù–4„lc쌻u¶TȈooñSè€aGK‡€dçUÙï˜qc•dývE’•’l†XˆÑm”’†“É—¼†¨•z–ˆ“—¢›†å– Ú‡N™ÔŸã‰QšU¨˜†L‘F˜Ý|@x$…\¥QšhëIrL–m÷H•P–r™_ÕayºZ°_úwQR [‰y˜@‡KNp.B„KìmíAÁLÉr;BKœqVE~Mýp2FfOr[I#V]tG VˆvHA3OÍvdCsO*xFðPyóCNíuÈC‚MasÇCqN¶sËBOÎu3CñPfy5C‡NxÝE|M5xtDNÉv?DŠO[v_DwPŽx[BÎL›y¶@zJQvDËOwwBDO§võAN^wBAN¬w@Nu=D«P{u!C>NìujB€Mow7DðOÿuëBN›p|CQL'dµ?ãFBE/bºC½E bÝ=D `"AME“Z}BbC]PEû??TâF9JaÊJyYVq%JZujO=^v/P^Çs«JÔWtUG¨S’t@Nuµ?¯K˜t9DuNêr»@ûL-s<@åMOtAC OãlRmQ‹^ájÿW;XLxÀ_DZÚzaø\ÜxŠ[:ZŸ|aY¢{ aëP©{©a^¬|¼cf醔tup©•$|‡t‹[¶suÛ_ƒY«x a4V } jjŽ|ügzq$vßV…` |[Ñ[‘|·^ãa{|`,fúxÓ`fÊuì`zfp®`~cÞn…`.]ãkº]ðYÅf±_ça`eV`sf¾a[¶c©Q/Q*d²EZNåc7> MhDHðRh9H S¨i+H6UƒqQFPçuïFýOu›D¦¤’3p(¾¡X}§Åå§!AÂ#§lwŒÃª'}‹»CŸ~Ȧ{’ÄoK›ªˆ7jú‚%eéHa”8xª[õ¤FŽJf<·ÿ™ÑnÁœÂr‘¼š o³§!b> ÿ‹´_ã°†—ÒmZÀßœ¡pŽÂ­špm½ò–:oô´š”ÊqܪÇkq0š}"_6š×~`[µ˜coìÆ‡£üpSÇt¡žjjÆÑŸÃkÅÀ'› k ¿šJmñ·­–|iëOŽPaÔ™-ÅZ¤†ÌmIHB‰@pU/‰ºo]\(Âd“NëŒz–jñ—‚†¾oX•}Úd¹†Sm9T5…±m;R•‘s¥U÷‘nrS™)€·b¨œ¶‡«fr“h|\u‘K}¯[Æ’;|*T¬—Š}¹[Z …giu¦X”óp ÃÕ­‰ŠòØÞÄÌž³Æ¥Swè·>—µfX¶b–¸k±­cmrY¤­‹ÎiS–?}Öa ‘¹zeYžâŒ^Û±§–æo¢½ruwƒ°ì•ïk°š‚ÅVâ— ÃY œ“…i»ša‡âsZ–„wlY•]ƒQg{’¬¤bò‹\tÄS°ŒÛq˜Y·‚ºj×jZˆ\{+s‹üŒ}\‘Lš‰•+‹Öœ2¨¾‰YœH¦W‰J™Kœu¨›‚ §‰ô—2ž@‡˜•„œÞƒªX¤·°Œíš€u1s~¦PÔO iGLàQ†sOL5Tjs9X]Y”mâL•NsdéE®Käl„=½FtlPD_McsiBoNÆw DN‡uOEãM®r5E NísE“OÐvDúPÜy¾AˆN,x0CìN«wÍATNRwODØNxvÌCMTqEeNÞo½@M“r®A»NyóB.OczR?-Jx E2N=wåAeMít+BÇL&xù?êJxÂBGM?xC¨M¡uªACMtk@XMTwì@òMâx¢BžN]v#GŽQºueDºOwPC‘N wÑB›N*vE÷OVrQB…Jg‚CoHGfïAEag_C`Gîd‘BÇG¼c3MÀQ6nÏPQ;hmDƒJûeo@µM3dtIg[RqnI¯\@v¿I†\Þv™JÄ[åsJBXAtðF›R§uALM—xDtO)wEE9Oµt¨CçM#w9DNNÖwuAƒMÇn{IÒLÞbªeòUå\Ax+c&\Ý{¯cåZI{Ç_ÂX[|báRÍz"ajO—z]aFZS{rb‚bbMeGFjOiDFWPpiI2VKr9FÏQtsçE£QuÌCwQ qERØsßC&P!sØBO oDdQþnŸBURmŽ?‹P½e(@¸NÆhÏ<ëLÈfjCéPijÚC=PxpDCyN5p E(Mûh=‹Dz^ïAíEHfyE¶FXeqDHõl3CaIOoÚGOIw?EN’{îAzL|ƒC¿M|DM·yÙCLëwØ@|Lýu•BÑN7wqC?OPwdCWKu¤H»WxK¤Zôl¢Km[íg¼H,Y kIaYÁmÂH³_:lÏH£bmhÎe>kdj r7käeêxooX]>‘PŽ[J¡¾‘­k¤ ’¼nƒ­9–úve¸9&€¬ó–ñ{ ˆÅvh™‰ m”n‚WfŠŽ„^jУ&†ìfÉ©þ’ù|å”:÷h­–ž{:bûÈp=Q‹7s[Y ûy³c™r‡õlØ¢úŽSl.³º—Qtðº;œâ{e·šw ¬æ‘mУçoE›ð‰¸láœçt £Ë’Ér'«¤“xh€´j—[lÁ ÕrôÈÆ¨äx/Ì1«|9Ë©±yÕÉ©ítÆÆÏ¤ÐoIĤ*lZÃŽ¢‰qmÆì ’rGË0«Io²½©ux{¬^˜ìr¦=UiIŸ=… \H›)‚mdÛœ†2l°µ”šR~È-©]€Ìu­}ö¿ Ÿbw¯Ã“´jЧ=ëc¥^Ž@d8¦Yåj°§+ŽÀn ¢ß„cX«‰µgî¿w¢oéÈ®Öq Äi§Ænjµ~šÀk­ ˜l³¯Z˜UmTª!”lpjžŽ‹_oº’dGešL†½h ¯®•Îq‘º.8{Ǩi’þk«T’Olª¡§‡•V^&x@Ÿ‡sC•HpBkFo‡BoIn+CîKÝo«HwOÝs$O S‹q.I.Q«iÑHc[“mŠHG^êm»H‰^"súH&^xFIôXYuüMvY2uiG:R5uÁ?ìK uAtMÞsDsOu×CÔNFw]DyL´tAÜJ«q'LLNÀnÛVÌQe÷p–\±YB{åb8Vo{ª_Q z‰aŠR‹xaa[“xÎ^w[kzˆ]¦`ttSZpeí‚opr Šsög³aVHx8]^ˆìv_w𕥇ª€»~ˆfÇZE{¿\Z-{u^Õbzž_™fxb`>h¬wn_cÁu²^~`‹sò^\_óoô]`a=f˜]gÕ[¡\reºPpS+dAFìLehAµL>n¨BLñi_G=OUhÁDåM¡fG=S³lƒG WÖnÚF3Tzo¿¢aml¡ßŠðdK‘~öWìzŠRO›ô{D^I™~Åcj¥­¶uÂÁ§Ë…9´¦ï}Ĺٚœu®²Ì–Ën¸­{”¼iÖ®R—µp+©~’n3¤¥èmj›àµ_ ž‚åVp·²š”hÉ>­9tûÃä¤Þl†´¦˜ˆj(«•“oÙ¦$’o¢HAn¤[Š‚o‘•Oƒ»ky—„Tj½¦ÞŽõn•¬ý“kq—À„abŘ‘zy[’@uÖA–lƒÃC³È‰N]ù’[wäOs˜€´\¬ŸÙ‹e[®4”pjå¾Ñ›ðqº½¥›Îo´,˜¨hé®z•ºdñ·›šmD¿ž`p®Àt›èlμS—q›²É”tdG‘NUuÅD}LõuæF¿N yéD¬L›vDvKlv?EiLµs˜H4Qzs}I¨\÷sƒIF`­pnI+^ÌoèIÔ]£qÌKo[Ôq¡J‘Vo HQS†sØ@MwsDéNhtODPýtG}S0vóF±O3s¤BúJktAELñt®H²L«gmaVU1Zqv=bVZøy´^Vƒyw`Ý\üu½_õ_}xaaõ^îwI[WY¸vóW–^[x$Y'^}i^žY¶|o_Z“w&Zb³uzU"^„~éa¬^óxÔX–W×yZ/`uzèZÞ`G|}`ªc-yß^+cwéXÃa*w&[Ò]†s4^·_®q8[Õ`mk(]bd?YWG^¬RrU1_¹DÌL£`ìsH?LHtÉCP‡sÞHXV{q0G-Rnoe?©KKq9AìM©pDžMÏiZUÄRn^Mg²WzZ¨uõ] aJx_Lf¡u#`§g©w/d6fÂw|_3_Twé\À]Zx6]Ô]ôw\\hYy{mbb$v…Y3cžz”^ÙcxbX:\0w9X.daw—ZkenwýWbWy^[Zd"yî^Âb|xZ]_yŒ]·^Ù}Ç^­_|j].boj­\$_2\žV†QªNvQ·OûB”MtS@?NäfmB´Oûq@pLm?A$Núj CÇOlñBcPÐnGøU˜r:CbQ#nEåRBp @ÃPÌpþ>ÒMŽpÂC‘O×rF'QuÝD«PkrÝF9Qöq­C@P«p;FòQcpìGÇTjpšB&Q¿pnCQu•C•O sŽDgM±n÷=þF#nBFKœs DAO`xÎBïOz @ M$yñBINµ{ŠB NdyaCéNxw¿B3O¨v±@³NµveCôN!y?DYN~y'C9Oëw4EÀPˆuGÉR=tðJ\x’I]Eu.F—XuqIF T¶oIURql|”à…þ[ zÇX–³~2cWšZ„i¢“os°ìš.s°:™ùnk¹)Ÿz4½æŸ“|A½_Ÿy8¿G¤zzÃd¬[‚rÀ즑~d·öœ˜hº›³d>Â,žÝn•ÃTžRpâµ#rEÃÞŸÃwŽÄÍ¡+p…¿J#iÿµ?–j¸Œ˜˜n¡¹ž˜€j¤°›‘¯bŠ¢œˆ&e™’WtØ]Ò¤pÃ^Å‹ŠrUm}tDT~‘Êxö]à“€~ì\"œ£‹ùd1¡ÃŽ÷g¥~Žãgfª†Hi`ªh£eÆ«‘Éd[±Ö•…hÿ­Á—iˆ¡›™aý›x†J\ ¤yk«ƒ•8nb¤îˆf,¦cœfã¸}õt¼ˆ¡YvŸ¶Æœp¥¯a—³eƒ¬4—–ho©è•2k'ª½–yk†ª?”:hì¦6De`£{ j4Ÿ?ÞbuŸ BR„ ·‹©b–S} bR–U;c—ž\‹>l³´™ar¤Ä‡ q»Ä[Ÿ:k?Àc*i6ºõšòk<·R›ävN¶˜s8³I“h&¦áƒ•_º–D{mWö””ùVPž¹†Êa‡ý‚¨ažù„Ì\Û¯ø•'i‰Á/¡ÆsÁ\ jqA¹aön ¶[˜·qx´Y—¼g³K—«dÞ§’–j^®&˜ÚqO¿©r€|Éõ¯x‚‡Ç{¦FuÁ6Ÿfq?¹šž°x.³Ëq}o™…rdÖ‹Ms-Yßðr¢e´–Ktceœ °‹m1¾Ý¥4~»¿ ïv­Á‘œ9siÇ΢~~»Æ×¨Ãƒ†È.°v‰„È+±š‹¬½ï¥á„M§Þ‘wkžð‚]Ž$o˜Tš~fduR_wH`ªK"ŽK{ådí¢=“|'ªÎ–z‚°òštj¾±¥pt’¸ œÿfE®w—l°'›sÔ¸è›Jvµ4šõq@¤•”shÁœ‡‹kc¯›eŽ n<šÙ‘~q•SŠ pRކúxk‰‚‘—ŽÌœ×œ¨Škšœ”1ˆf—@–wˆ™#z £§ª•ƒ¤e­9…%ša¡G„¯”„˜{uôw£…+\8bø„]EL_w¶I¶GægÈDFpfïBàL}tÇAÂLävXFöK“v¬CìH's+?’IEtÂ?vL¼uºDuOtEIO¦r#D8N†tòBQMÉuÊB¹M’shC§NÎn'CºNÚpLBjM/v—CMéyjB1M{ALNyADN–woFâMéxºCùKªvMFNN¡tDðMzs@CâMáuu_B´MRrAM”r'B,MËw:C!NcxŸB-Nu‹ANju~CN v D=M—t(D Mv]@/PvCFiU¨w#IÏYºq/Rta&q±LÈ`Eq§QbsÔK#[–qrIfWBr&AœPAr{AºOLwYDœPŸs˜H#UPqEþQ0q™C{O—qBANOo±?‚JÒi¬PÂP bµ^ VY/rá^ ^ƒxa-e)tÙYawÿ])b4wa^TZdxJa´XTv^]¬U®xÆ`]•x¯a»buª[Ø`Bwû`‡`–uE]þ`õwB_œjexÚ_Ej{®cæmcyœaÐm‹z6e¥fw \"YæxÅ\a\+ _—]5v(Z•YÿloYÅ]ÃQuMëJsIkLKBNèOò=2ObŠ>kOmZBÙNéj·B»Nk¬BÊNõlÃBNNöo4AKM“på>WM«oçD”R­rXDYQ*u.DTP£uF.R±y-BÌNõuÆD»PFtù@âM7oUAhNqFEýPës!D¤Q~qIDïS?sDSØvÝC?P†rÌHR¿q­BpMzqÔAMu„B NvYB¨M¡vB°Mx‰BN»w¨CàO4w!C©O‰ mö«b˜,zƒ³ùšptJ¬¹•îim­y•,mx¨¶c¹§Muc<³­™€mÃͨ*|+Ç’ª·~^ÀÖžˆuE¼V›[qñÀ©žÜtĶ ÑwPÀ ~*ÁÞï|@ÁÓ(t†¼‚šäpè¸Ë—uݹ¦™{“³ö”Èn¤®‰Ãbd ¤…ó`$š±|_(•Î~Õj嘇ŒNv6Ž€|ô]Ü3x»Z䙋„Ècœ Ý°jY«U–ÃpŸ³Þ˜Üqӳ˘Þq^¬2“‚hk«‘¢`b¶_™÷e†¯œ–Øf=£,Mc!¡\Ídi¥ö’ƒj1¤U“(kÒ¥”Ap»®ð–_qgÁ£¡yÇ‹«í{ÿì§wü¿v¢Ón§ºqžßmù°˜ìiγQ›Ém·œNl}ºˆœ:oµºš­r¢U‘•e  â¸__¡’Œ“aè—±‚dª™à€`†ŸÒˆb+¶é™jyÄ:¡“mBÅé ug9Å…¢@fü¿ûFg·‹™ülr³Ø–ƒoê©T‰ŠbêšDuxIÄ2t@>ΓD‚ÊGב y*Mõ™(}/d>š¸|Sî¬j’ÿe—ÿ£Nu/âdsJµÅ–êk°é’ëeà«ú_ؤQŒ^]¡!Š´f®©?”üqÙïdŠOͷʋȭg}KÁý¢˜v⺒œ‹w\±bšÁw ›À‡ižÂuH_˜mxšgu™owì^¬£'Ž÷c»úr™¼t›œgL½Z˜dt¾w›üs,½\žú|ÌÆD­…Ãx¨Ð€p® —˜vŸ_‰ gè—+S]:‡ l&V¤vz[MìuÖ\H†pÇRËšˆºkŸ‹¬h}§)’f‚¸·›³c,´˜"^©©N“¼ḑ—’i!ª ’‚l§s‘{m² MŽ“f˜ªˆ‹hÕ•ï‡òo.”â‰ÙtÅ‹^†¥z;ŽÞ}†1‹©—À™dŒëž]¢ž‹œhš„b”"•ö…畖 g¡œ„)œå©kŽšJ†ƒ†é†Äv=r”sUÊU­uçDSH¸rÜE§F6kÑ@JFïk ?àI«rœA€KÛt]D_IhqDµHßo?C.KDt¶C÷L¾t¶GºPÈs³C~NvqCJNªsC°NNsDmPqvB PGk„B^Po«@Nžvý@vL´yãA£L8{tCMNçz¥D•MŒwCÀJGv/AÿIzvhBŽM-uËAËM vs?øLw-BAN0yíCÍN}BÑLà{DšN%z©DçO†yÕC|N^uÑCøNMp—AÛM‘tCóK–{ BøH‘|C'L`züBæM#x@2LãtùB¶M_s8C/NvXA!M2y]B2NSwŒBæO¯txB–P’tAbN4t‘C§NÃt D-NítCkOÊrAGŒS qLiZCOüqôDáO#suCŠL³uLFEQÓzJ,Yë|›?lP«uL<&M„n¾@½Nerü< MCtõA?Q2s[EáUÁs»DÝQuu1F`QGv!HûQžuïD~OžwÔC»NàwFC}M^MÐu ?ÿLnw AM3yýAÞM¾y EÝO}žB¸M{ŒF§P zµF3PŸxŽAÈL/sóGÇQ˜nèHæRlp‡GÙNpw FLKzD$MNxûAIMcw€BðM­vÅA¿MùtÕ?ÔMPuÁA­NNulArN'qÀAPžri@éN×sÈ@XNÁr«@M të@ïK&w‘@»O”t7E.Q§pKéWnÎPª^småK©]jo RdaCoK \âk¨Iå\ÁlôFjVbh\A¦O mS?½LºtÙD¥OÏvÝAÂLÖt–BRN.xß@,MÓs¨FùPimLëSø^`R+S T7a]SøV‹s…X&bŠxëY{`«wW0_ouaY/]°s3_H\óq‘ZÛ[¤{æ`4bUv~_½YuÀcíXÛte¸[u4_HZì|·c£a§wÀ_ücA}Ágêm>ƒ¦oœqµxé`6f—s _ðbKxÓXë]gs/YxUÀl{W’RápÌRYWAHžD—Oï>kG QÉ>–MáVöC$Qç]3@hNmGB\K¹n\D¤NvonB N*rÁBVLèwC'L`zCMnNsSƒ\{LîS±BÂCûQUEPYhÄB5N„nCoNÃnRBˆLŠqzFN÷y’@.Hæy BÌK6xE"OƒuãBN¬uóDïOëx½FâQpxî\Âiù‚_^m¦%F#TÒnZ= J¨pN:øJ®tsI%[7zÍY‹dÃ}IìRÎuµEPÉr\EP?uHE%Qy€@ZKùz]C¿M%~ºA Mî|›AÙLF|ŒD>Q’{¤DnQJx3BYN”x6?’M•yƒM/zy?%NÑwABmOýs-E¬Q¿q"JPYJqéJZ[oãK8Z•nzG½S»jýGÝV?oH½VSrPI\UKuàIüS¹tdHpOir(H]NHs H³Pbssä¹nœ t¸Ô—t¯¬@’KtM¥W‘^r÷­d–vr´Ü—ôm#²H–Ln°¤íŒ5k£–Œ n³´ù›z\Áh¨é„IÀ/¤:{r°Û•g‹¦R‘l  Ãpœ–“Œ[z– ~[‹œŠˆÌeݛdžBcÖ—Ö€åd柌u˳uœ0‚'¿¬9‹È®pœ¯›=†ra2˜Þ_Y[šcŠêjÓ›ƒŽ¼ps¢€‘§nT³<™vs†¹s› yq¸‰š{{ι)šqt引š¬m ¹/™ójD®¤“"hÒŸ“‚ëT%“âs“ES{xN9”÷€ã[Z9Š¢cÌ¢»ëf¯všow×¾øª°‡8¢´‡#ie´ò™y¤¡óŒsežb†^W©Çf\ĺšßi®¼¡™l»ï–uX­‘³r;š€ª]GpMf’ u Tèš‚‚.\¢¥‹fÆ¥B”kþ¦e”’mN›éƒA`™^5a—E…gj– z’[j’^w3S)™ „_@ŒøgBžw×iÊ’*z•R:‘ÄwSYG=‰pq¼¬«—Ó®›œ7‰§¦y”1x¢šˆ™g¨œˆ‚`gûœTŠ?wšzˆ]r:™Õ†&ož©‡¼jN¢`ð`Ñ£¢b5šÁ~ePû“¬tvKÉ™ø‚ñeaWŠgðžûŠ)Z…£SŽ$b¢¦Žýd¢­é”ýsH¬™Ø}¨ P’ÞpŸžVŒ²h'>‡¯jÕ‹àowV½ˆépA]Ľ}äb˜ë‚¨g°šu‰åp¥˜†ÃmîxÖ[p‹yàZ•û†hÓ–*ŠŠjM“?ˆÃh|“ÛˆUdD”wŒqsËŽàŽÃ‡Tª”1’\Šà”2‘߇S”Õ’¸‹s˜÷šŒ¥£â«×ƘŸ×"’Pøs£xÎy7^i¼{žH¹M)eíC?Bä`7BµBGgAhH‚pÙ>mHØq¿@´I!s·@~Jkr6@J¯o¤A­HjêB§G*hÖA…IŠrÞ@áKiyBúO¾|û@ŸN€|›AMÜzbCzMxŠD Nüv‰B&Mdw¸A5LzÓ?LK.|©@ƒMµ{CBBM yº@¥NÖzÌChTiäCºV7ƒ¾C·Oò{'?KóvÙ?ñL¡v@ÕL wÂ@§KwAÖK³u]BÁMvBzM t¢?MKs`>aK3xKBÖN{yÚEvPItüHQÓq¥CfN,vã?–L‚zÞ@´L9|î?ZKêy@‰LÊvSE1P‡p†HzQkAáKQm>;#H·t@M¿yŠA—NzA¹N÷wõ@‰NPwd@ÊM¡x7AOt¾?ÿPŠmEÜUkØG¾Z×lµGžZnwK¿`†nVG[°mGd\uOE ToúC¹P]q:?~L0x C!NszyDùNcyÕ?àMøv CPGr@§MöoˆH,O9kTL"QµcUSæab#T§b)bqTÖ_1b“Uí^]MP±T[ TÇZíPOÍPimU´UîY†NùO _8W_Vc_¶YÏ`šid“\ënWZ˜P k [^:k [aj‹l ]¿aur]×[`jE\í_ÅSûOnXb`îNïR?PL=¶MìDó=pQ2O;KNÄ9ŠI T•E”S_UøH¿T;WÿG1PZ]=E N¥dòC˜NîiÊCDO‹p£F[P¿u¥D7O¶u"DôNvˆB“NÄvÔ?jN©w5D½O5w^F]QvCGðUñvÖF!ThtØAéOFmÿ?žN nA2P7r–?P‚qMG!U†sDïOpDòO#t1B§P‘t}BO×t¬BUM x&C;NØy©BÆMXy„AŸLõyBNNüxSB~N’wòA•M¢w@qLdw+A!Nyw–A?N x­?!NwÔB-P—vÊCPzq,GSÂoœHXšn.HìU¹n·HÅWÕpëE”Upp›G4U„rüI¶U2vgIÃSríHœQn7H}PVrpFªP1vÎD™OsuGUQjr×Hh]Dož`Ïdholb¬^Se Š sÝ¡­–æy§²eœrt„¨’hº±›3…]¶Ä¡‚o³@œî|˜© ‘Ok·–j‚Ìcþ‰Âw5`a…ùpœ^ €ùfµW„Žm)^í„Eq_Xp÷w¡_Ɖ`müQ&‚hËLa„ÅmyPýA€®a«¡®—nʵ˜š_sïºx›Nqqº“›pr±¯á•qkºªx•kÚ¨”)h©°Lc£â‰`k…ƒcuJ‰f¥D“Èl¬Ê”†hß­¯“¹iݧàŽUnZ †jܤߌ%p5¸œ‘€à²˜êu¿¦òŒme>ŸÞ‡ÈfuždŒˆr/ž-‹Æk£Ÿq„ad¡  j6¡9 iŒ—§~0\®œ½ˆ+q§—Ũo.‡Á™ä2x.•Ž€”kØ–-€Èh—r„nkᘵŠih¶£\cíµÈš'j2º¬œÁnn²8—zoâ«¡‘Sl^­z‘ufQ³ê—ekß¡ ‹û_Ù“;vÏPˆ‹7nUKEŒ±t»L™–I‚É[œ‡¨]™õ V«—XÍc˜2†Ãiž­Ë””p8ºpŸ}ñ¤á‘GgÌ «‰ÙX'¯š“cѺx›5lÔÀœQn÷»>—zqM­¬‘án0™}[.‹IiJ> pRP9†µ_ÿ¨F”ujH®šxk률’Ug¶œ4‡NcŸ™"„Áe™˜Å€èfˆÆtbYÑÃumN} µ¦eÖ®5œùtª­q™Çr £޳hë ¨ŒImæg“?wÒ®—z÷¤Å4uwò…Àkvœo‚µdP‡=l ¤Ï’D|Ì @wŸŒVrC¡‹l¥§b”hj2¨«•:j¯•+{Gé‰Gi•A˜}…Y¿ª'•oÔ¬´–nL±™qb¸\t…½k£É~»¹„¢¥ƒ¿®,›€ye§í•èoCщåi Šèo{Zª‰Ànxa¸•q|Mj› ‰6t{¢H’*|:£>’ËtN˜4†Œcާ}[[r‘U…wc–om’öˆn ’K‰‡n´‘~ŒÞ|©ŽXúŽÎŒ•9–pŒQ˜ô–+‹ð˜ ”iŠÆKš‚ƒˆ¡«%}0˜”åzExÂoÕb\ÌQ¿G÷Mºb‰6 Aµf¼CßE’gGC0I/hÏ@vI›nB@ÃF\ubAŒGÁvXB“Joo¼>„I€ms>RHKk<>íF#n•AwJuICM„zó@ M|‘A&M†|”CŒM8{C&MsxwCúLÿvéCÌLgweEhMG{.A‰K±|ß@L*{^B=NüxÏB„M²xqAõLß{BüN®~•AÕN|z(?”M¸w>;MÒv¹>ÚM¶v=A„Nu7BYNœrBDNisž@ßMésBøNhv³CPBxùAENwuDèNMpèDñNµnÍBNyuý@JM…|Ú?LU},=;JÎx@,Màv^DyOdp(J‘Sei}QSlaEZÊiðH‚]6fæJY\Sl²G/VËhmI>[oh­GœX^l©FU%nEÄRTsú@,Ogw\A›NOvŽC–Ou~BàNw@?èM§s—>€NÀlíNbtr?‚Oˆu˜DbQ vìC¶OÐwÀANßv?CÒN6vÞA-N!x@ÇLSPwqH‡[¤oR_`ÝlîZ-aŒh¡q¼ld’ã„9k'ŸƒŒ¸hßš†^]ö›€‡ùgZ©“£tÁ¬G—Nq+«š“en™ôŠ¢lI‘™€}eù†VuR_<|‹gZ©vª^QÕy[b¾MS„®mëV<ˆ‰èeM¯“˜­q¬r–NnŠ GŠ.bkœ&ˆ…aŸtŽal*œÄ†gÒ”F}!_³’žz@W ¡´¸b]®+™ýg'µÓ›²oh¯ã–çs,§“Åtkªû•u]­<—tŒŸ‹~l2™$‚8e©œ”…Ñjuž:‰'lb¦Î“¤s™§î•t¯§–Gv›­æ˜u°î›¸r¹«íššq‹–ð€¦NF‹tpÊEçž.‰œj’¶\œx{_»žH{{½=ŸÎy\©­{çÃA­¨~î½,¤À|m¶ýœ¿x8®>šmt ¥&•“vö•NOlq•áoûšˆîsH›]‰tq¡¿Žæu-©J“ar,¢5kᔉ…%_ä’à†Æ_(˜‰Ž;m-§‡ëoV‹;†½yQ¤ŒC‹Iy™‰r“µ›¹ˆo—k›3‰®›Ó™…†+„˜ÜyJ—S¡"]pæ`K[ ceJÝGÃThBÐHäg->ÓEi^B€Gçe†BI³cDDäIYj AÎE\o}BSG„t¿AWIÚoq@I¯kŠ>qG’j=hH”ro? Kxz”@’M{‰BAOt|…B±Lz8F²MRzDÃMD{­C¢Mz|A+KRyÀE.N)zOBL)yòA¡MKy2CüMUwÏD!M vrF|MEy AÉJÑwæ>RL½wÞ=©Mwø>Növ¶@ßO~wHAáO¡t2@²MoéAîMŸuü>LYyA¡M]|TC™OJ{÷B¥NµsúC(Oòp-CoN©rSB NFv>AKvzÅ@rMÇ}±AUNbyÐBMew^EðPtMJW’mL?¿KÇj?¼HauÉ@ŠK‘y A˜MÖx²AIN¹w!AëNÁv=CQ(uwDíS sb>QømÒA±VÐg+K¼`ÚfIòWlgûO[W–m“HåUNdüE´SòcNGÝUud¬E‡SchJ@£Oyq}BçO¾vŽC–OušBlN“w@ MuCWPq'FPNolíIÂO\kìK²OŒe+K PÞ\›EŒHÕRçEÀGK >±B$@37pCAº7ýF"F A5K@HB_KJ2BMýP}CKÏRËO‰M6PøK'H²D©HëGÇMÜ>š?ðPMHP“D–ChC"CYL'PS;ŸHšS>ÊBPÉ/23¿H5F8ÐNh3š7õKØ5ûF7RŽAÉNëVD"P)V”FËOnP =²O†dæCÙMôp‰<¡Nïn‹B‰Qcp{C1Q2q…DÃN7lQGÙP…qC›P±wÝAØOâ{iCŠO~{ÅFbQhyšDŒP¯uûC.QÇv1AFN†x±AUNbyIBÒOwS?LN'uµB€OçvËBiN`w¼EP,yìBOwFCuONvïDûO˜tMEÛO½r˜JTÊnK-VLgÓLØ\vlH X"läD‰RPlFG3TkltGáS±pFŒP{sD®MâuDrLMuTFÏM˜uãHGR¹vHÎUr²J]EnQUÎefðsÿoa]%‰«}j–JŠu;ƒÄw1^{é\9§E”Bn|³&šƒj—°i•‡mS¦ù”s–ŒÏq«‘ƒêh͇¸x¨f2}Wkj_&Pk·_.ènô^†Ós]dGŒcua¶Ž pYSr ~c±£ê™ñ{¹±Â›—wþ¶®™Co¿ºß›6lϺÐãp8µ›8oŒ³…›³q©¦›”lq ­"™z˜±3š yÖ³bšÎud¯—£vå·›*Q½ŸœñyI²—•¯l­“„y¦K­“kˆb¢ªÂqʯ(–^lލmi˜¹}0\¸•«}àYÕ­o˜·u¬´Îœ”yv·¼œ5|Ú¸Ù›úv)¸è›mtâ­f“Xh% Ï‰Y`]™•‚‡Xš„?Y¯’–xqO?—tX&™ÉŒg·0‡´hM¢ ŒÒf®ñ“2jq¶ü˜Äk¾²˜l³¯Ë“iÿª’Bj£¤Àæg9•†{´Vö†ÛjhG‚”ºyßTw›@…“[ž³ˆ[™‡Ü`š|ƒ¤bæ²s0WY†6f&Jõ³’–«p¯@’Ñrt¡·…ÍdûQãV«ýŽ›`!¾ƒšBmÅ”›p¿³˜ßq᳨’˜m9¥/‰³cÀ“ÎuYRuŒgp¦PtšÍ†ýd,°€šÎ{.®4˜|Ñ ÓŒk  ÖhóŸŽ’¦k¯¡Ž8jœš'„“eܘTÜ]`£dŽèaܯ¤—,f7¶{š+m ¬£“©nžZˆÛeOü†Rcàžï‰Ce÷˜«„„aV˜÷ƒ]d³žA‰šj£žCˆsi†¢Wçm–*t0®ô—|u„±9›Âzª<›ý~°™‡Nr‘nz¾R匱tÀNb qUv›²xšŠÕ³•6r²·I—¬re¿¦•}§Åy³™ƒE½î£Çxþ«i“Õlu¨þ•yn©s˜¹/˜P€Teb‘ÿv^T™›…ÈkKšOˆði°šî†ßaš¡‹>kx¢0’t’“M‰³gKÿ„&c M‰q±Š"‡ÇyΈ—‰‹¬‡,‹³™ä‚ω¨ž~óŒ¾#‡I–) Ë±˜ŠÑƒÏޱ•,i)|8BSWEuaIïLëfŸDGšjÛ? GÖnC@G^hæFìL6gÏD¶J˜aŸCfIþcPD}GÑh"GÓHði$BpHgd?AIØc~@IÕgz?K s@4N‰z @pOAx@äN€v­BÔMwuD˜M¿wÆC~M[y±B„MÃz'DçMBzËFgOFw2FpPòu¤B·NÂuUDsNÓvAF)MwFÅLxB LÍvõ?.Mðx?–MÈyK?_M»xà?”M¸v?¬M[qf@_M kdEÍOñrÔ@¸L[ziAnL“€ƒ@áKŠ}£B¯MvÓB Mr»@ûL-sH?N[v%>wLÊy=ÑKz%B•O*ynBOæv¤M³[àzUQY_ýxM?L£t =µHz8D±Nh{²AVNvuùA¶NÃv/BÇOôwÛ@ÂOús¼BÌP´p:BÊQ-oâDWSn%GàZ mÅIáY¢mJ'W¬ktHÏVxg F±V/]I3]ãY©EU_@O#nÄ>tKXuÁBDNRv¤G¸Q xÏA“NÛs˜=’MrBìM„q®?fI¿n CL'iõBòKÝ`¢7ãA S97çAÝIÄ2L?•?Œ1@&A2©AŒF&6PBÌEh:÷DûG‡8+EML9‡CO6@ÜBM‡=/?IHÚ6p?îJ~6BýM 2=õDZ1Ò;^?Ã7DFçLÇ7ÚBWt8§CÕVj3>¢P¾3ó<£LZ9“B¡Q 4~EÂRuESÅ\œHÝS‚T­D•Px^ÔE÷Qëb;F€`ÔvÀrÏ~²‰Ûg¤o»}¶KkQøp,A¿H[p/@·J¶uê>†I¸vB.N wáCOÁv2C¶Lu0D—OtôAlPRt'CQÎrÔB|QqrÞAQ4tëEšPGsÆDõNôpëCO²tu ‡¶ˆ[‡$ˆŠj–iƒ+‰ÖœZy ‚i™…z”‡ôšîƒ‰Ê›Æ‰×‚U‹TlÞo¹vJž[îuü4 H«j÷D˜IìhCÕGÎhŠBùI¯j>A¯G®f«E«JgÍEdK\fÇESLèhwBkF_f C¦E¯__BOH/^½@"J)dcB LinïA9NÐs¡B¦OvºCÝOsDzPÅr©AJNÏsC¯LÀvä=£J™uA½K[wEŽM%wÿDtNÅsaE¢PÒq©C¹O r)CñM­uÅBŠKŸxÝBlL*yÚ@M¯vð;KÉu=ÿKzÕ=õJ8{g@dMýxAöN~trC…OJmÖCéNilwB=Nìv£@ûJË|`A•J%|CM2wÒ?ÌJÛs‘CÙNŽsõD\Q9vÃ@ªMÕx<@öLâw»B©N÷uGF{P{sQY`"~zNé^®~óB²NlwAQL˜vLAÛNæt¿BPøsBcOsv´AáN(v”DPþt-DÉOãr£EÄP¬r,CPlp‹EõRo¿HyW—p9HSçkÒGÆTdßHn^¯]dGë]}YFØVDa~C¹Pœk}BHNœrkFÞPûtµEPÉrBMTs&BšN+wÐ;DKÈt}@ÌL~x÷=oJÁtDÊLãh8?JF`³:³GIRæ4~EdI"3ûBóEÐ6çAH=<.D+Hr<,E×IË7pBmNs8ÉBEOå:Ú@fMÏ6;©J7Ä?¹LÐ.o›J$VÓJ_leJHuX&V‰IªU)YFØRxetJ«`úzæz›…!–ºintVŠH^N;qóA´GnoP@æJ\vÎ?€L?y=C*OxCãN't‚EsOõtúCæOŠtŽDœR#u¯D@R s¹CûQBv˜DO¯yëB¦NÃu¼BºM uBëMku-DOw$DÍNïxdCsO*xZD¢Rhw\A,P¼vLAãL¿xK@ŒJ_xnDÕNTx›C‹NIyÐALMxÐAqM¤xýBßO5xÌC|Q)uDÇPuD#Qt’EmRlpžG UÄjíBFN¸UÓD›O$YòE­Rg«DXS#ijE–SbhÚEoT5mmFUšp DèQbj¶G‹R“iGšRžlAH’Ws?H¨UÏrG WèqÄW^Knðd/g¾_Gz8u]ai‹„†­mM•EŽpa¨;štqÇŒ²£‡¤Åº¬ì‚»ºÒ›#mn·º˜¸o‚©À“xoF§Â©koŸÜÆhêšS‹MjÞ“ü~)[ì‚k+K÷|/gžMŠ·gXM€Œfl€^,&|¤gg£t–"qe·ü¡Twk³öš›oš¶+š¸o•¸šºp‘¸åšp ½ptȽŸTpE¿¾ jøÂ¤·nĘ£ov!»eGuÖ¶£íyTÊS©>taÊõ¨Wmyµ€š ^m©ˆ–Haª‡”aiÔ°Ö•}k·°}”Úi1 °†rW8¨îUŽÂg¦moKÉÿ¬›viÉ©©UzCÄ¡r¢ÁŽŸÛn,¹(›âh»œílß¿2rh<«œLhµ®ô»fC¡‹Ph홎„qh‹˜¸%iY¢&ŒSm@ºâ›ƒtu¹´›‡jž¤­_C§ `¡ˆ¡RØ–‡cX“•P˜dÁFŽÒt8¡Ñ’ÌzP¦ê’qS¯”j3¿$¡{Áv¤Ñ}6«\’ºj®’ôvRRؾ¶›Çsï¶ž–p­’VoÙ«Opɺñ—sÞÀ'›ìuû½ß˜Fu¿½ š6vŠ»›Št¯­½’h†Ÿ‚}_i’2tá[­‘vÒZ˜É~.b™\~ÞbN—ñymW*vuQŽ5tºTH•²|dC›¹‚áf暑‘&h0®î”Ùeø¯õ•³hÇ­z”i¹ŸJ‰k_Ù“Fz)P‘’nuNNX“uuÈNL…˜b³¥Ì’£p€¢E:k,›À…àeX˜#€ßfo„ui¯›\€ÎfB™‹€µfÆ“W€çf‡†»r“YÄl[Ž}ÇacTZŽGrèTxž€„Ja©›Í€ðeoœGeÙ—î€z^Ò¡–Œãnr¬ÚŒUm¢Ì…zZoŸ€Šxš§…Þ}v8uŸbóxYaqž)ˆÂf¢¤úòiášhˆºeX‡°tòW¨$qt[DzòkæW¦tOl¤e&ë~5‚¥†1•‰Q¼^€\†Ùšˆ~:…ç–N†b”ƒõƒcM}ßzë{g`–Z_‹DsLÕe.?pINmcE­HÕiKDSH·gèB®Hæg¥D`Içj>DîGJjDåG©h-E\JÑg}D IËdçCËFDaæ@fFeyC4L«mÞDçN(q«E¢OŒslEO²rÝFäOño$E_OÌoCOòrjAhNuuR?SMwà=µKýv$B!M#vTCžNOsâCÇP)qrAO1oBˆNué@LÝy8A{M>yLBzO¥uŽ@ƒNv?L¿xÍ?êJ¬z?¸Ky[@M†vƒAúLtßKœl>KK,^¤;IFRü>¬G¶N¯¬Rù@úG`R=!IVm?9O|W%H¥]»cëG\Ö^nI\mbrIÜV¸g7KúWþqWàcƒ€-Nˆ[c}BM‡VösÏCXKanb>²Jtvæ=ñMæ|X=GNôw CQ©t¯CBP¹rÜDÆPßsuFÇR.séEFT½rsCQ€s~AïNtÚA@MásâAÍL~výAÞM¾ydBVNax‘CæNEwÐCBP¥vêC³RŠu~BªQõuÃA N‘wœC–NôzËBæNVzAC6OÈyÚA’NÅwÝ@Nxk<©KUw AâMwûAZL w DNO t!I¤UgqZGXS)d^G˜Q!†ljf”]z4aÀ¡ŠAdI¸¿š¥n «â’`]¼šC…MÅ–M}ÜF?”ûw0IÅŽ-uÖW’s|¥a :u-±9±ˆG®×–úyWµ’—†pVŤ…}0ÆL¥!}ܳ1”hm¢¤L‹ c8¼;›2s¹K˜Ár%·;—KvA·á–`ut½´šìs†Á9ÆupÀjœÚv‘Áe‹xŒ¼¾š÷rª¬³Fe{¢ï‡ _î›§‚xd —G}®]_ômnI‚…˜cXER‹ m?Hˆ™­}pTÍœXƒ¤e“•Ž}Êj™¢Ú‹på´´–o"¶ ˜–j"¦ÚlZôž‡‘R­ŸŠ×]͇‡õ]”Sy.Rj•DxU¢ì…Œ^ª­Â—rp½¯â™öq? ê‹f:“áxXE sOTñDrGW?“½{-cPšü†hN–àƒ›ejˆƒx¬fSj‚Arÿœˆµj°ä“§pð¥_Œ—lžðýbE”Gx*Vù“ŠwæW'–_Ζsx*U¾“2|ähT“¢€€r‘Ÿ~Tèk–G†YÁgkI·Y«_oI"[ a¤GºYšhHJWFnÇCqN¶sÑ=”H v}@SKuwÝ@FLyê>šJxt=3MIz?£Kñs3CuO·bq?\J Y­<~DÌQ{A2F®M™:j@žD@ÇT8™>ÉU§8`={T!7!COÏ:SBdU:jD•W™>êLÊ\ìE÷YËi GYÿk~D.UnlÙF€SŠmAF‹Oq†DäMÇožHÈRäsNTnX¡wNGP¼s¦=)JÁvN?ÖN¢{ =^O°wAQhuñAµPrÏCyQsŸDR—r_DÕR›obC SÌo]CrQØq|BaNrBRL‹r­AWK©uÖA0Mz^DîNÊyÄ?}MxuD0SovAC(RÙuB>P–vWBžO³vL@ºNwr@OÐxÃ<æNývL@ºNw‘<ÆJ˜vAúKÀvE¸MWu5CèLãs I/SwpÄGòS¤c½C«ORîB\OqQW@;PÕT†GèUaˆJ”XÏiÐO‚^µp6J¦Z]nGÉQðmAF%OhoÏD²L§p°H€P§uîILR yêH=P¿r8Q¼ZÎln\æ`=dÏk°\‘VÜ~Zv£gà¦9œ {g¸º§Èz3ºà¤ÅzÁÄ«u„j¹ÃšLsµ¯¯“µj¯•(n™¦z‘jÊŸ^Šj¬ åŠhð¬Y”Ûoƒž{Š¿ie—‚wjF˜š}îaì•~Òe5–0‚odd¦f“o9¹Æœ¦rm´.™unK¬°•ßoгš¦tnº<›øqRÁÕœ]q`ÂMYuKß3xKÂ)ŸÆv¼£øs{ºWtc¾2¡tQÂô¦#t.¾¡q+»HžlmQ¸ø›üfH½ÈžqÂ-¤w‚º€q´‰˜ãn¹Ð›Çp_Å©¤vKÌ‘¯!y)É’¨åtiÁÅŸ`x4¾evzçÄÚ¤aCÆ£¥_}yÆ|¢¹w€Ê¦Ëv\ÄÏŸxr’´(˜¦q>£ Š=gH–)z Zp›±‚Wa ¤˜b£uŒcV*¢èŒDW¿˜ò|NߎåvFSnˆq®`$izæfŽ‹¦p"µ‹*†¾&¤>‹š´—¡vŸ¼-™hm¦¿s›Tmª¸3˜ìjF©©)bõ¹°™åtþ·ú–iuU»š+x´¾‰œyíÂ'¢äy£Ã‰¢ûuc¾RœJmí½’›Ðow¼›ÁrĬn’®f֤Ћ ^Ú¡ŒÊfŽœ$ŠÃht‘€uTkc_H÷‘txÚUYª¹Žc¼¸±— r<´˜ay®·$šEuä»­š>lR¶f—Ïg@¤G[Bœl†xUh Œ‘cú£zJkùŸÿŠUeª }ŠÅc6£NŽ-dX®–Êi›µ°›Æt«)”"lpœØƒêZüŽes KY‹ÓsbTù™»‡uiŸ¦k‘¿jªÞ”Ël¢ …‘¬vÕ¡›wx°”m»nštll¹\˜oʨµŒ«h`šNMX"“Òy7["˜ëzhÇ”º}cÕŒÎuMY=–OƒMm« KPrhª –Ytϯړ;mÒ°Œ”ùm}¡ïŒÀk–Ö‚@ỏ~{7prrœjsìq(tJ|)~h…õ‡r–¹~7„™0|H—Ã{°€A‘ÔtÔŽC`{o8„–O™StjìFCHieø@SHEox>FýjóAcGDe«CêH(gBDŒIˆl¬D©I-mœDGIyiÿDI„iªEJ>k!BdF-iâBÚIãjB§IXq¡BQKPvgFxPyyºG›R”xÜE\PãtüC÷N4ttCYOµv CžO£s·AO=qË=öK»sAgM vV?dL¼vãA¶Nx»=FMW{3;èJ–w2@+MÒt÷A®MwTAL&vCjM!sPDN‡u´C5M?wžF(Py¹DæOuwgC4O¨uCãN'tBéMWyÁAƒK:zùBL4uMBNtº?ÕMusFB@Nwµ@­LÃz`D¸Fí6@fE 9ñAqM•7;>rP­8^?O*4=?MI6ü=*Pý7¡>KQ~7]<™Pž7w;=R.:‹=ÄTD5L8rTU6=“R¹3A¶MŽ:PC$SÆ9ç:!XÁ<­I\g3>ãNq¸A£P^u­BvQøváBkP w6@pOøpãCüR¸sbDBSmuÝCúPr­C[PrûB’RÁwõ>ÂPƒv4AZOþuÅA0NDvYCíMzuoCðLWu^BzLËs‰C"O²o BTNç^áAüM U{A_O•TyES XMFLVZ]GDUðaRJ\&hûMY_jm4I¼RqÿF2O*tE­M°s—FÑOwFŽOyw]GãQnwVHWqtZ_cjUiâež_q¬r2`™œš“ÞzC¹¬¦Y€¦¸¢Éxèµ<œ.v1·o›…u¯´¼—#lW²—–’h±K˜¸iZª5“3hЬµ’Õg­µ6–fR²¶–{l £qThó zŠ‹V`›!ˆîa,›j†Êf©°½—}vI¼‰œup"·¸™ãm¯²—ÏoQ¶œ0v¾žgrµÃ¼£rSÈ|¡¸{“Çp¢U}«¼pšq‹·¸˜Do··š®p¾ÀV£z¿¥ÐyK»¶Ÿºs´¸ðš o•¸™;puÂÒ šyËo­M}“Äê¤"u·¶Ä—‡kѰH•8n/¸îœÕuÙÆÈ©,{ëÁ¦Ÿ«qºù™RsI·ó—×pÅÀ­žŒu‰È§}æÉy§z{‡ÊÓ¦v°ÇÑ¢zqåÀƒšKnDZ’e¿ž.‚VÁ–¾|W§›ì„Ÿ_]¤eŒ¾Xù²o•_V¬““Äbr¢TŒeP—4€þ[Œ”^{WW©•Ê|÷V™¡ŒŸl«2“9yä1‰Nk`¤ƒ_Wø§‰ŒS+µv•’cG»Ñ›æiƒ²Y•ùnÄ­Ž`l)¶?”=pÁ½Ëšvv•Àó K|¤½ª=t<º5˜Fgû¸ž–ôcO¶X—¼h®&“]eì¤4Z`ÅŸ¬ˆ^]®‰~b”}‘[´wg^¤ ‘“t¿¿¯fs}ÊE¥&|MÆ¥™€ˆÆü§µ€³¾lžtJ´Ý–je®§•³j>«Æ•±n'¥,ŽmZ£·lߣ˜Åhh°h˜Gnz¶fšòlÛº_wõº+žE{J²\˜öon¢5Œba™‚p] •€MbøŸZ‰ûg\¯½•Òië½Z¡UtÜ·Ÿjxå´VœÍy…·9›dq¿ŸTt¨¿‹Ÿ#z}¸&›xD¢Œ‚iö•å€~c‹”¿‰h˜—P‡¬f:—E‰å`vŸ'-qª ™z͵ÿœ²{¹“š¢w@±‘”¹p‚žÏŠ5jc©~b%tÝczÅuŒxÓ~9:‘þ€…²™è~‚Ƙ|}«€þ˜S|ü~˜:y&“šgt»ŽQE;Rz¼EåGúk&EjGÜiÁC¯I‡lj@æEgC H¢f‰CÆH^jìCÝI5oC´I±jvC|HÞc{DnGÍfDôF”lB¶E{iSA IÑl÷BmLwkDäLìy.F®P‡z‘E…QizˆFiPœw`FbOvÄCOÜuÄBÈOsÔB¾PèpÈ@XNÁr“@L±tU@ZMyuµ>®LíuÜ>Kæu}BnN·uÉ>N@sæ?×Nýr5CqP`tHCÀO}tíB¿N(u5AkN”yÙB·M|w¨B»M°wè@„Ly[A”M“v„CšNqENPqƒEZOuGRÒvòCPcuWDrQtÁ@FOs…A>N|xAvK±|FCjLÌrÇA…N'p·AjOÙv´>'Ky@?æJy{"@óMxÚF[R$s§DÛOçh2D8PpTAqO@w B8Q…vˆBtOdsCíNÀsmAZNÀqaF²QÍq¦CýNrÑ@æK¥s`EÞNpnEÏN¶n˜C¦Nµr/BÇQ m×EàSFjÂF×W7bsIØ[-ZªJÃXàV.M€Z¬^FKAVhk@ÖL sŠAM¯u‘@åJ8p•?’Jœs°?bKAxN?JJuöA¿L§lêAJNk3EôN¼b–?¦HöTê:úA IE:e@‘E:8A˜S‘6µ=ØSm9ù=9S7:°Ra7ù8qT•:ñ=žUÃ8ä@ÀS2;‰A‹Sš?C|VÇFMM“US>,LZg?ÉP{a?vMýy”AµMnw4AWM0xàBËNáx€=Lktç>;N(v1JÜVm}ïH­Q KcW‡AìNñRBFiS^RÏEUÃSûFZZ\MKõ^‹bmJý\Úg7H UBpDÞNÁr#DQNës(BâL¢sFePIt5I6QˆtÀH¡VyvUœZ pP`Äe[gNqÔn d‡‰¥y{e«µ±}¿4§1|[¼H£÷{Àô¤f|"½‡¹m ¹h™wgC³Ý•’b¯å”@a–±O–ˆe9¾ËœÓlþ»œ1mºº©§s%®•­jñ¢phù¡ÃŽZiÇ·—šòxøÀlž‰r<»"›öh˸êši‘¸åšpñ¼zœAs»ÄØž*sÉÉ0£òv:È=£ry轨šrüµ]–n¹¶™·s*¿Fž(y½\žhu·Zšùoü±Œ”m#®Öàiz¸{™ŒoªÆ-¨wÇe§ùuR·F˜Ëkù¡ýˆ©b9¢Ôf"»¶žxïº[›êrН€‘¨j½®¡‘©gd½·œÑrÉÓ¨á|ºË«ízÞÉF¨duðÇV¥°r”Åt¢Ûq\¹°˜èd㫯@\Ÿž‡­YØ£#ŽJc­µŠbbà žÁiÂg¡m0¼U£¡vò°õ˜ŒhÙ¥ýŽ‘[–¢zwIi’LtØOo˜w6U4 Ò[l¢Æ…^l¬’,i½¤7naŽ£ípï«ÞŽÚhK¢žƒK^c­ö‹2jκÀ˜x2¹Š›y·¾™¡så¸Ç—;jè·>—µfƲ—„iD¬^“rf¢M‹¬`2›ÚbS"œ“„ÕV››¥ŠFf ›ºŽðpQ³9œœ‚sÅ‹¥‘}ìÊ©‡æÈX¨Ä„ Å#¥*…°½Åž ³þ–oK±‘•àl³—–}oº§oí Ãˆ5f†§g‘°k¢¹Ñv†Áã¡Iz¯Áþ¡L} ¿¶Ÿ”z¯˜”i󣣎Bf“¡]ŽÎkX¡n³¥)“pkz¶›ÏnÚ¿£ s\¿L¤GsPº¨žFr¹¸àœÈsYÀ‰¤€<Á]¦[‡Í·BœÃ€ç£ÀŽ7t%•Ϫi%Ž÷zrdi”ƒ)f_œÏŒálpŸDŽImϨ-—]v¿¶k†{Fºž{4®±•¢p9·‰tktŒ³{ªb{Ït:kø€„‚—‰š…z™•%„ižb|+}õšê{ ~ø—*z†€ƒ¢y~|Ž7\ãg¯…@ºHŠy3F7EœtÓF'G‹làCŸEºdD‘E¸bÿB#F'eBDŒIˆlFqM=rûD M§m5HˆLlgQDSF¢cCÔEífÕAúGºc1AJLnKAKxõBçLzÛEôPb{´B™N(|ùAÊLZx:AóL¢tTCHP s?C}Q–oáDoSo®BºOTo4BNkt²?žLîtLB#Qvu¾BSPÈud@ªL•uDO3süB]OoåCOYq¡IîP|sEIO9sàDONÕv=BMÿwfBîIÊx©BM¹{BOèwº@¤LIq{DŽMûqD®Mâu)D±OŒu¼CTQ rB(PžqBoPausAN"yŽA†KmzE¡OœvBKO$s>BM8wÿ=¥K yë@hM/xÍ@ÊNöwûBñPœs1G°RÐk•D"PÓmC:Oÿs>DîOðs«GQlsgE´O‹sªE4QèqGS´m‡E}Q n$CO¼o¿DRPynµCOoBßOnsÁATQ¯nÇD(SXjvF’YaaÉIr]éXKZÇTK[a[=Jæ[]i”FÿSŽs*?†M)r-:¼J‹pS@ØMƒtt?cL¯tœAXN…wì;KJr:=¦KŒn¿B#Pe=·I—U:<”D)JÉ5#<¡Be5;:I´3ù:¾M@7ê=ÖNf17O»1¯7sRå3:T—4 9:S36M:*Tê3Ð6>Rz8V=èRÏ:ÊBDT^9ÅBSY¶F¾OàKcuŒA¶M„suBtMºs™G"w>¸žžârùµY›·l ¸´šíjÀ¹Ú™2hæ´Ÿ–»d×µc™Ànå¾ó¢]~-Ãʧ„‚·­š*y¢§’$qÄœŒ©pB”ŠƒŒnV—W†ío¤šŽŠòpp›$‹:o£“ís¨¯™ÙrW°’šût.£—js„žo’ïs’œ„WsM€}|„¾‰þ’熸š=~€Ð›\}¬‚›«|Í~¿˜úx[y?”Ós v÷Š S ^}áCKÀo1FñOùxöDAN wOG&QzîAÀNZ|yAïNò{DCR+xÕF‰U€qHFoWn5EaS'qAO£qÜ@MmtY>ªI·vr>÷K£vç>ÉK w~>°GpvõDúL¾r×C“NœneCÚN§o+HâPúqJgP tRE N>wWC€KxÙH¾LÕw1C Mÿv\>LovÍ<'IPtÛF¥O¹wÜAoJÆvçAKÞv¾CóP‡v DqRãt¸CR¦uÆA²M:w†A L›wSDRP€w¹?ÉM¶ubBEO·xª@NFxAAN¶vxB~P-uÛ?œO9pWEnR’n{F>QNpÇC‰Ns'E‰NukFÀMËunF}NVwƒEZOuêG!R°pFnR_m7D¦POo²E,P.rgD/OAt¤CVO‚v\CàOaoNDRÜjåF«[ôfI],^–KT`Óf8Jü^‘d½J6]ÆjqH·YÌnF¹Rœmë;ÃM>qÝ=N u‰A½N?séA—M¹s3AcMùoõ@‰NPw–>NL0h>·JêX;VG˜KC:$@ÜGM1d5ÜIü1—8#N¥4=nNš1»9lO³29·Q739S€0 6óR“5&;ÜSQ83<æMë<_=ºR”>EW/=ûHi±C{MÜZBQÚ[%f"G¼Tr{ER„{?DYN~yvE'OÕxuCiN_v´CÆO¿u•E]Q8uíB"O¾rJB:O$sÎA$PFtšE£TûrÓFøU»pQEeT¬pE0U%phE½STn0DØQ•k¶DÐR5o’@§OÓnÆ>{O’pÁ<”Nûp›BÇQÕpH[XSrâBÞM’r»CXN`v3CñPfyÞ@«O€xÔA÷NiwBÿNÏvAÏL£uEB^M‡t«A¼NuQE;RzPD[Q:w‚D³Pátµ>MPsýAwNAt B=M­sõ@­L¼råC”PPp}CvPîhßCŠO³[t?NM~RA§OÿR AOÃS>îKQ6B“O QVK<]Û]ûJK]áfTCWO±nC•LLu'CÄL×rwFÎPqsGDR¾r"IJT?xOKQetÔI×Q mò_m`aeAd¥[šI”†ƒï[±µÙÎzWÂ÷§ÿ€²Â»¥ y—Ât¼Á¤ÅtϹ®›¹nÞµ³˜–mNµ•˜ßlº›ñk‚  öm¶¶Ÿ™úe„¯a•¬hŠ¦Ñ‘Àjž QŒ d‰±§—Vsÿ¾ý%sh½H›gq¯»›+sô½[wHľ£2wnÄl£yoxÆì¦ˆt‘Åç¦âyýÀñžv.Àxt|Ä&  x É\¥@}‹ÄÏžÇtb¸Ù˜^hw±™”n7°è™t™¸‰šAj‰Ã¤cp¸Æ`©vvº4²ré¡©Šge«Ÿü†fa™«š’…jÞµ0š]s´”¿iŒ¹¤œ-x9Á©§>€%Ç ª~ÈÇ©Bz»Æ¨y:Çê¦5vQÈw¢#sÛÁø¢¹mn¾+Ÿ jº8œÅg ½·5qYÀ–œ;o­Æ*žÄkÇëŸlÙÆ¨÷qÇ­ v Çg¬Äz0¿¡(w[·N›pvA·£˜rº,šm¿ºœsls¿¹Ÿ2swÇ™§Ù{ºÇ_¨=z·¡-‰Maš×}Å?¥ŠŒI±é˜õ… ŸhˆBo]É€$]×–µyƒR uˆQö“Qx…\ã©G‘ïu¾Àˆ£ì†¾óœAtB½Ršˆo`¹ð–an ­¡‘wkø¤[‘ÀnO¬þ—ÑskµÓ™pI®±“7gu©J’3j†°B–gl²Ö’j‡­H¬f»­“?iÚ³œ˜ân¡½ïžõwÒ¶¡–p®«Õ“¾m=¢yrmVŒ=p뚇Šp#˜Í†k’‹€e£û«o¤m“êo{¡îqp à=uà™œŒ¯u¼Ž€†ƒ~Õ‚£„÷Šì†K•-€€‚˜¶~-±–)|~à“–zq~E’uLv‘Ðh jk¸GÒPMwʲF©hB¾HÛfÔDXK¬aPCúMo=C*Ox)G8PÑw)G8PÑwŽB)O yb@6OxVF–L¬tÎ?´L/v>ËK){Á?VM1z›?·Lavj=wHyuCÝLJtJ@³MvsA{NšsþCOŒq F7OsŠCÃM$xIC²KàxLE¶KÑs&A»K3raA?L™vë@ïK&w‰?aL‰vŽBOLsvCÄKßx6@(MšzùBRw¬A­Psª@“M”w9A6Këx$E{NXy CKN¸u™B«NtA—Nv-A.N6utB€O"qUD+RûqžC•Q²riBOäq™EdO(ufEøM xÓAƒJzE(NÈBN©{ôC*OuâC P­q£DWPÇrADNEsYH}OSvûD–Oår:C RÆkÀH§RÇfcHX_…jºI¨]œk&X_eÑlbRÇgÏt‚X myžSe´sáFTQ>^>QNwj?ePŽršDRüq\E£Mðm¡BM–oRA#MUo±AŒLògç<»Jbò=yHR@2Å=I’5€;MÔ07WLÿ3è<ÄNb4uN±sˆE S]rÒFUñm$FßR©nÑB‰PnCCîO-o¬CQšqsCQ€sÃ;äLÞn<;[MµnŽ@QdnëCÍUƒmF YàoE¢Q%r†FQºvgDàRÚwKFÙUãvkB˜P¡vñA¥O{c;CJLw‹?ÞL“u>AENŽr]BéOât.E‡RÎv?C P¼tš>‘K qnDüNgs†AMns(BN)r‹CU‡jžE?X¦cpC7Q?S`AÁO:QÎ@LŒwK>nKÿwt>cL©{ü>DLñwFA8NÏt*@MÆs(BIOÿt¨?OLvÏ>ÄNþt&E=QrTFòN©rC,Ltv!A¬I$z?B]L^z¶AûKÀuÛBpL?uâAÍL~v´A[Mbw:BMVvÂBGM?x³@\M„|«AÇN¯zœA`O@wï@pNëwî?&L3ytCMNçz¨B9N¹vXCÝNÏu"ArMºu=ZJ§rAñMér„?ÀMBtAZN©u™B«Nt DyNsC”L2r§B+NýxPAN­}›A/NB|ÔAzN`x?æLt|? LÉrFH0P&tEÚNOnšE*Pn F)Q4m GySkGe[§kÀO"cÿoÓkêxS…f\|‹Fp „KŽÎgÑvý|…K¸Y¡c¯@O$a®DýWRqgW%e¯x8M#YÏq?A$NújûBˆN)n¡@kKËjB?Ijdà>I‹X<FÅP6½@ÓKÚ4Ÿ=`L2÷8»Oã3Å9wQ!5Q}3Í9úS¿2¬5UU©7áDd\Ãdñw•…=}€‡—ˆ³Žm‘¾•±sB€Ó’ÅdÂsÔ†£EtQi-ADJk¡C MðsnD†O(vÍCPÚwÅBÖO¿vù>NNuÉCP‡sEîP(n9FûQïm E,QŽkƒDP:nÒCÎO;q#EPGoÇB^O>m\?RO{l‡BŽQâk%CŠQ¥hGBQ jDR­nzDžQq‰ETÓv D}S¬u‹D÷Qýr*EES[xÁ?rOS{5<©KA{(?]Ky7BAN6sGHSEsšE£TûrDœQósˆFPP7x]F–OÎtšBÃN€si@NòqeDßTÙn†GZ"b@\OõPe>lMáPÛ=•K RŒApKÊPCáOUAFLX2_ýHA]‘e„Il^ŽmFATzpÃE&Qr·Â˜ªu㯖”Br¨­SOež­ó_gî›´ƒ,e]ƒrh#K€ƒÃk;NÜ“€žj‰˜Ú}+bqj•DÝ—Õw~L5´…•#n_Á–ív!¾ìš”r½³r“YbªŒÚ_šj|\YÄÐluG÷ùnLKž‘]q•YP”Ywšb\›‹„aksž>ˆroxŸ5‡ŽnžžðƒJc©ŸÂ…Æ]7«¬/hi³¦•!k¬€’¬fȨ–’¸ná£[‘âsѤ~‘”r±£‘°n¹ŠFmš’ˆÓpÛ™Ù‰Œoj—ËŠïm´ì„©oÙ‹¹†&‰‘ˆ3ˆk›øþƒ¨˜|¤}Vœ[~Å{ë˜è}\}–{c~–§zi|f‘pOi½{–N_INbpARA e ?#C-f‘C#HÔcÛA:F‚d]BoD~bzDìE1]2D”D^bD*C¢d9D7C¤fPBGyhA„JµkÝC”N¶r8FMOÃtŽDˆN÷s§I„v>tIžtT=K—s€= Mvs<‘M?rÌ=¹N®r:D—Q±qÙC­NpwBÜLJuB?\JÇzÐ>xK”|iAþKxGAeJtïA Mñvñ@²MKz>M wÂA#Nˆx>gJRz}@ L»|–=‡Kexj=˜Mx>{Nªy–@¯O£|5@MM¨{!@KœwbCzMx“AºLpur@ôLÆsÚ@ƒM¹u¯@?L˜w_B‚M†sYC„NÏoCqNÏpr@îMÃuÃ?NÑwè@KNÞvÈBçNivËAZMTuõBsNêtµCOo|GcRmmìD¾Pƒm—EQhn!F«RÐm‰FHZÄm+YÔk¾yLÈ„»›……‚‡¨Àye…tšyoOêQldüsö@VNu^SG»ZÚmûj6v#„ãQ^azëCQokBäNƒj5@MK'jg?ÞH$d/=HÇV)6áE¹Pà4½B—Lú5æ@3Mç0Õ:XOé1Ž:­QØ4>R²<üCPSÈ41<ŒT6³5MV<8p>fT 64; VµB'Mrfyi‡€¼Ž$„“’¡•Ì@ŒÉ—\¦ sAƒ#ŒÖIA\{lÌ<4IUjVD|OŽvLAENwvæDÓP—w)CYP w4@ÔNx¤CÓO|s EËP)o×EËPpäGÍP«n|DcPxn¤BêO n#E“Pl¨C¶Pikd>,PQjúFÖT¥j—EˆQ¶fãDFQ&lØB”Nëk¥FnQôpÛCÐQñrZDšR7q†C:Q¿nÃBQDu(A$P3y3@×M\|?ùHÔu¨BáMÒt˜EKQ@oHÍTÁmóFÈTÃo9CPO@uEUO@rD=Pat(B¬O”r3D.Qóm¥HªT|^¯FºQŸRÅ>òL¢Q§=¿IU?ŠIGQ@F{SŸZBDVWJc4H¨Zµg'I¼ZmªDqQ—m¦AOMÇo˜CBNu?DŠO[v6E¿PysHF7Q÷rèB€N¨rªH*SDqtNX8nfNîRh[Tn Ħßx,ÌϬùzuÊ?¦sÆ ëcÕĺŸ]*É—£znÍÄ}¢^{Ác¢ßu¼{šJhÞ´=”Ä`p¿+™7nžÀh›n1³b•¨jf£\ofðœó†d`/šøC]è¡¼Š¬i‰³Û—¯pwÁ^žwpPÆ WjäÆË!jkÇ¡VvöÁ(zšº›år4¹nš7n ­x’j5¬’ene§ŠŒCb¢°¬—cr5´)žº}òÀP«|ˆÄP®p‰Â­;Šÿ½¢‡‰f³5–Z†‘»‡"uçawÕd.˜\„¸rK®=š½‚Ôµ7›ÿtT§¥Æ\y¢¿‡&V)«Æ3eÙ®O’šmk¥!ŒJhÏ¢ÚŠ/c©¤êŒ?fô™²~I^„ hàL剆wúgR¡‘“ç‚˨©‘!vÅ¡¼…ÍbÉ£ýˆ£câª&‘hhñ¼Kœ?pлã™'m¬¯:`·£hƒïXú— xžY7|p¯TjŽ>t’\…”|Nf_™Ü‚`x¢YŒùiV¤OŒSpÆ£mŽ2tS¥T—oõ¢Lºm‚©…‘Ÿo ¬ó’~h˰‰”µhü²%˜ÇtŠ­–yß­°•lwƒ«£“\qJ¤ûr ¡atÿŒ)qЖ~ŠTtÇvŠå~<Љ0“©ƒ…~|«~äœ1|p|„›Tô}6™|z¶–8u¨xFœIpårâŠgb™WÛlæJÍAäV8Bì@ b@GD’e(AúGèdÍ@"GÊf‹AÄEÕcDJFž]îD4E»\íCóA¨`’EFe0F JAjäCkLÍq F™O"y&BGLyDDM*zCpNÅvWFR²yüDuQ {ŸC,PswáCáPr¡AmPœp—B@Q2rrB÷P'r1CÎOItÃA(M‰vÏ?ÆJŸy @ßLz¨?üMv›>–L¬t¾<’JÙqå?0M+s”?Mru?¦Möp­>·N|q¶AxP5p/CO¥nØ@Mws<*K=vN?KLVwûAIMcw›AßL}vTBMðuB”M“u AqNëv5AàMâxÅAýLD{@ZKÛwõ@‰NPw?\NwÌ=YNóv< MPw?ªKNyf@rJëvQAgLÊuBNžtùA8NÂqTAN[s>KãsâAûM]sBvN4rš>M·s/@œMvÅA+ODxLAENwv(FõNëtQBUL¾r)BBNDum?zNäqÿ?äODpËA…PÜq`E]QMqYD.T±sÔGh`ujäxM€Œˆ8¢€Â‡g¡|tø…³  oЇ“#TÊiØ{éAêLU`ÂAçN g©M[^LxïD¹P#vð:9H)m/CbOrlî>#MJf#@¤KOaæ>»J¾Y<KOV0<àO€5h>ÄP8U?¿Rµ40<—Rx8„>qS;µ<ŸX‹FJ¢g%pÛ‚ø’}²¡–Àwµ†²“†¶šQŠôŽ}]Fk{…AKNôqÒ<–KosC¸P6z.EP v@H Q“u¯E`PuG„PáqÍE~P¹mZBãMm‚D‡NÑmDOlåB-Pík9@ñN±mTAÞO“rÇ>PBq$BQ nÏC!Qtjœ?4N)mïBÛO-pMB}N›qOD¥Qiu;EdUÜr°@#P¶o@^O{sG§RQw:C NlwÝCïM˜xø@ Lüt_DhPÆr°EéQm_FSçnØCYPús¼@‹N™sÔAfO¼r@íLzp×B9MYlÓFùP:aÌLZ"Z KnWšYDSO{ZÇCZP”WÁD¶QÊ\’D"VpgHXYÕj“FSšj%EgP“q(B:MˆuCN]uDÌOsEÚPqØFäRÅqINRþqCKHS^p`L!XÃnfP®Zga°SÌW›m®a'Q5—¥‹¿q[¶Ê¢Ã€¿£QX¿žÏ Á©›²x}ª«ñdC•­}]a–ŒïvQcÙ–)€*dÙ˜këVžnŠb¦Ñ‘tm㯽”½j״啹dp¶­—¾hϰĕâf­”h@¬ “ûe ²Ð—Tnñ¸·œ=ÉJ¯à|½kŸ‘|y»¨›ŸvÆ·%™6m À'œMqÓÄ"Ÿ¨yð¿œér×¾¿œju¨­W•Ýmî®r™°q‡º! ,wÇÂ;§p~dž¨ç~1¾Ñž™v’´(˜¦qª‘¼i¶õ™áuåÅ娄|dÍ’°{Ÿ¢‰jdÀ›e[޾ƒ™VSÞÀE¤ýp⽟Þ~⾞šsï°3’dcƒªæŒ‚[´¿Àšîk¡ÇŸSo+Àf›Óp_³‚–Eo1¬h”mR§Ï‘%lO²-™WyF·_›úu¸°•=fù½ø˜Zh–Á³›riRÀ>œÃn ¼–™dpk¸ä—ãp;¸@˜ÀlÉ©jÍh"¢{‰aewº7œXyì¿££9¿ ¥8„¯¿ £»€ À…¦/ƒHÅÛ®Ö‹£Á™©ú‡J­±–ÃvT™™~äb¸Œn™K¨—d|”\˱ޗDyɼõœxR°š’˜fè¥×ÿa…«“‡jW¬E“mü¤sŽië¤V’bkùªÛ•énkÅ„ cŒfsÑX šƒ‹/yø·‡¥G‹˜¹ýœt}‘ Ê‚o^Aše{çV¬ª‘¿j›¹þ™Õl«»‰š³oj­âf¢ì„ô\Ú›C‚`Úš–ƒgdŸv‹lè£Ò‘^m¬þ‘/fĬá‘ii÷«Š“xp嬖~vü¨6”Ìu´¨»’w‚©O‘‹r­ß’èn°³“•,pÙ·E™ðu‚¸ßšº{‘¶ó˜{A±g”ýrO¬“>p›£SâržåŠâtf—‹¡vLvŠ4Šy‡Tˆšò€¯… œu~‘åšË|by™!~ÀJ–õyÍ|•¸u–v½šû_Åf†êNMÃcñFxC®Vë@VC¯a">*C‰e@ÓGÛgo@H}eR@žEÁb÷B*En\ÉCÔEó\%E³F„_F÷FÌ[šGKâh=CàKr5D%OÇx>@ëL;v­BÔMwÑB›N*v;CPuxµE˜R¯}ÁB.P§xBPŸr @™OpÁB™PÛoÌCõPçmŠEÒPxr˜CBNuC6LxŒ?…L–w?¹O¹t ;çMpq@OVo]>ŠMûj¡A€M”n}=õJvn„?ÍN°oö?ôO“k§A0Oòk~@øMuqè?¹MÜs¸??Muâ@©MÆvËCOxûAþL;s[CkNvrýB/Oft`A­MùuB{M.v×BþNÀsöB"QfrFBâPõrUB|PCq=BÏO“q½AäMrÀ@'L=r¶B?Oet²DlQ)tCôO{sAžN™r BPPs]? N§rp@úMsô?öMOt°@)NvŸ<õLùxÓ@ÌMÁ{>EbNÔuwCDN6qA/N[se>N¦sŽ>OÈs¥A©OpuoDdQÃtPFYZrJJ‚aPw+eávA|Oˆx‹À›Ý}lˆ{¦Å\“‰n™ÞaO…ˆS_cµ|)EÜLÆjû@¦I.k”@´L!s™@HKÁs CMâr†B‰O¯nôBØQiÏëKãap:JF[-:GñU_4>?áNI4½<6Mè6ê>ñN(3sOp<Ê>®R’<£C7V3D{Lsh0gösmmx²†5›drôö’xWx³‰g«vó‚ôb¹mw|nCõT—z{CñRÏ|œE#T†~ÙIxVów IqS,s¨IRXpLR@pgFŒPSlÅCˆOsj[DP$jOCEPJh€D¯RjpøBP»tÒ?CLãt¾?kNÎu&@üO„q»CSS³qB‹QMu@HO$vâ@EOðtDOQµsaCZQsrq@DPjsÜ@ÚO`s+GxSìsÇGØRätÂC6PütíB8P0v?¼Mu‹BÍOJu'C3PísCèOÔq'BÄOúqB˜ObryB’NÍpUC$OÙmßCÐO—cƒDPÊZÝCƒOKY&DdˆDòHbe HL¿fHHhN•n§D†Nâwí?ŠLÙx®?‹MDuºCP:uDkQ)u¦CèPîv4CrP^z@ªMëuÖ@¯N˜r^A{OïrŽCœPÄr¶DÊRºsDEÇTévC“Oõw6>3Iøsc@½MsÔ?ƒQˆr‰>:PMr >qNòmA™O$j±>\LÒi×>ZKp ?(Nfp&=xNÛj¨?nNk0>0Mžo‡>:Mêr >9MÄtÕ>ÝL“vª@“M”wBNžtÆCFO¦tBN6tÇBŽN‚t CdNuâD‹O[uðCQs?C}Q–o!Cv°ƒO“ÒTdsŽMe§‡÷•Ì`·‚ò‘åGó\Ö`>8FpJDLKìs;D¹P5yS@SL½uí@dNBv|>[OÅq%GÉVˆlÇBÊQqg:¯Júc×<>K¹`n™K¤3¤6ÂS¹:ABUX¶.$:ÆcÎO©]ᄳs_€GšðbQoÑ‚pbhqtELQ‹fäL€[<{3B>T¦z GœX‚GXøde‚šSõbÇ~2GÜV3uìF|Q§kE6OwjnCO n‚<„K4hãAÐO(g¢ESÌkö?ŠO`nåCóOHr&A M!pî@ºN2rÃ@P÷qÛAeQdrAQvº=TOòx¶?îO’t!C›PmíE¬Q‹p¦AÇLRu[?IL2y?›LÉw…CWO˜rŒCïNÚnJ@ZM‘qØ@ûNÀv}?OãmHBWOq`A¤K%X 8-FÄT=ÖI–USC,O¢ZìGœTcÛGóXViVGmXìkGTnµC;Oÿr BN˜y DÛOÝwzGnQÞsšFQq÷H3S¹rÙFÓQ“v FäPrwsIÙU0vÞM•Zr°X ^°föQ¤VóU%|«wfj$¥s˜P½¥¯}e¿$¥¦q<Ô¨s6¼¢9xt©•¨w—œi‰Mr©˜z‡ n¦–Ò†Ôl¡‘ü{^ò—hD\ª¦y’;kû¸·›Øré½Sœ˜uj´z—äkаè•E^ü¦ú|R›l„]_É£}3d0—„ÈqÚ’nyŠfõœ„Ãj𬠒$l÷•šêsêÃö£š{AÌÙ©ÎxËø¨ruÃŦ5uJ¼p'nF³™Ÿq ¤»8gI°–jÒ¶²™òo;µ–™¶y/¬5”{u뵜%yãÆf«1­È¿«Â{æ¼ý  t-°f—Dh¦Ta-¡b‹ d„¡ ŒÍh`¢êŠìiO¡æ‰óhT§¸Ž5c¸Â[žoAË ¡nÕÇjœ¬me½3žPsø°–÷kß k†›]ŸV…:bš¤>µd¯T”r^¤¸™bhâÂ'ŸsQꢳz†´»–2kã£WA^µš¸‡[¨™ ‡ŸZ¨š’çaøÅm§ÖŠÆ¥¬…Ö Ÿy¼¹Y›{nz¼¨ž|Ç姆‰„ÅŦ£†«°–N:je@”Mìm8?ÄKåp¨?EL%oñ>9M/l,=!MIk[>äL8q <L¹uÑ9JKRuø=7MŸwö=iMt†B`PªqZBÓNrq¢B_NÜs”B!NjsˆB4M"uˆCÓLÍwAF×OtuACfOŠpìBO¥n¶DsOþoEìO¯p—BèOlmC?PÅlÉB­O•qÂ@_O{raAPsÆA*Qt¥AQOŠs±ClOÊq~G›R•róA>O|qfDP1unDŸOuÕF¸QsÒH'SqŽBLþr£A´J‘u}AÚKæt`A­MùuBOót×F±Rìp™KYgÖYmi¨p5tW}$†¿ˆÒ™s>ƒ©„Ûom¡ŠPH”YVyD_KÞq’CMJrÄB~OØt@}L"u|@jN–zø?vPÜzBýQ+nßC®Rùeð@tOpd=¯Lè^¿:†IÕY 6@¦Q§5Ø:;Mé5à<¯M2ä=ÀJ—4|?–Lü4x@P9KB O-8ë@\Rø:±CŒV/‹>¥a²Maƒ~l¡{¢µZçjZ~CO>T;f¤K>OŸ_wB×MEo=C3PÙwbH7V¥wÆQ2]“txHåRuÇDRÉqØ@/Nèf FQ\k=WM*n”?dNökþBíOIkÀB¿NsfSDQNlÞE¼RÏmÄEëQ"oEF¯RíqC£POq˜BƒP©pHB„Q s>:Os¾:kOurBOPÐpwD…O r†CN¨qDïOpC PÒpüCGQ,vÐ@ÖN³uß@-O‹uOC)OvNA×Lw]CPN y¬CÊN´q&FœPRlßC×OÈnuA­O£u[CTRÐk,C˜O¸aœ@rK„U­=ÅJ"T4;ùIÃR©AºNëY"G·UjchG€ZÝg†FYh¨EÇUµjþFäU«n·D}PÓs‰CRMØvBC6OÌsJÖUérfHRp™GÑQOs3B/O‹sgH1S»sÝPD[nÝT\njCQåSV\mnkpé[¬žö•y[·Ã¤lz ¼|¥+sóÂá©ùwº¿¥@p\­ãz  y‘ÇyšžPnF›ê‰h4–6B[†ž—ˆneå°™ZsDÀm¡6w<¾És#´8—¦kœ«€‘^£ÖˆüQÝ™I€eW7‘Ax•W÷“•~åiœ’ä~epWŸLŽ6r¼µÛ›wÁ¦¢}CÇÙª©òÊï«Øw½Êm«üt÷ÄŸ¥Àsˆ½»Ÿlr·º›ŽoŸ«‰ø^‘Ÿ‡æTï­¿”4j„±â—duÑ©L“7t¥µÁ›æxjÆwª®~XÇ4ª‹}F»'Ÿ|v›¯ ˜[r¤LXhÌŸ€Œ—e零’#qí«€”Ärs®™”oŸ¹@†t™Ç\¦®vï˨£µtMÊJžwš¾ö›wq¬Öf”Ïv¶Q ‘;xì]œ†I\5°3–ccÀ¡ž?oÅ} LrÆý¢0xN¶b˜åo˜¥¨¯e1©ñ—ænä¦d˜^n¶®™Ùln›¨G‡ï˧„­½œân˜ªTŒ Xö©˜‘eˆ»-œ¥~Æ,§­ƒ º[šRpäªI‘q—Ÿ&Ž/nošÚƒljʨqj¼kœêvxÆÅ¢‰sÃÈžl¸¹™Ði°®“”n`®ì–isX¿Â£h{F¾€ŸOw^«{’«r,¤‘w´‡ž6ƒ¸¹Ÿ¢F‚ñ§×‘órp–ÀyHTTšNQ‰£EŒÕ_ñ²Â˜™q°³˜bq-¢”†_ì˜Ý}ü_i˜»•ižï†Dj=­Ñ“ˆp–»'œXtZ¼›Ðn¨ºP™?k¼I™6iY¼Ô™Ûjj¶¸–ök²®•îqº®²”ˆqÝ«¨“VoŽ«Ù“1n…­œ“¬lv³o•XsVµ7–­sS® ”vté­Ï’ºuó¦žc}B™îŒ€ŒSˆq‰—Þ|É÷™s€%š{~KA–z€~ö•[x½}¨‘Ûxø{ÀŠÂnœlözQMýT}wBøEãe/HÛEbZ F¤Em`‚A™De'BûFme@AcG9büC”H±]qC™G\ÇBÛGödABIfŒAÎK)oé= LqûC_Q‘u5D½O5wEþMrxNEºN¬uÿHÃRŽuUDùO‰sêD>Ou/F©N¬tqC M½tÂAWK›s8?±Jhs[FŸP‰tÁF¸RPwšS%a€}JWscA‹LØnÄ?ëJÒdºCØOfNA”NBl'ANmæ@\N7l^AwM"m AyLØoçC©LlÂ>(KJk.>‘K~iß<ÁJn:>?M)uN>jNÏwL>dMx>ŒMŽs\B.PønDSP«oìEªOòriFP tÙBïLJt›CÓL¿u9DNSuCåMtÒ?àKXq!DYO¦sõDPŸrÍD)Quq1E¾Pkq—CPP…rÎAQrž=ìN­qF?£N$sóC]OÙsYE)OÍp&GQ’rZC(OtgDãNvÏEŸOxwjEpPs F}P’o/DÚNŽr B=M­sjB®NNtcBýPEvê=ÑNïs{EkQõr`IW¯mVLß]ggYÂfÓq¤tÚx5y‰béiÍoÑ\êdÄqØ>GMükË@õKfqBNNs BÿNår»B©N÷u™?¨Lz|AQP¨y\D*UoE¦U\e’@ZP^4ATabv=ûJé\:E¼R@4«;LÐ3}9LOÅ2Ü:4PN;§CçN“7“C†O\9‘?áPÎ7®B¼S@9òD™YÓ/ÂCe [Èn·ƒÃiÒz…L]bGmÄJ¥Sà_=AxK‡`O@…L¢pØ@MwsHRäpYDáNêdúHªS>m×BéOúoäAØOnkƒBSPGiXŸ•ŠÈi¨ž÷‹œm,¡™ŒÄqz¯þ—8‚~Ä÷ª¡‹áǪ¨R€ËÀ“oH´½–f¦f¬e¡=‹¼fµ¥zc~¨™—\£Q†=X… ”†Åbo£¦o¢®‹úo˜)€½g»Lt^UG’yPa Šè_õ­a•qܝޕŽt„b3—p|S^ؘö€,cœx„aƒ¬{“rn<»…œàpfºž™üg¹¸G—5g·»J˜õh¨»˜íeN¸—¹f9³Ì–ÕkA°–(lÓ§_‘‘j`¢uŽkÙ¤‘»nÒ©I’Òrª“Yu®«Ð“&x†¢»ù|bždŽ5‚PŠ>~!„ß—œy~ª™ì~šÛ~º}œöx}kazž»‘§xhwK…`v^ZtWEuLBqB>ÊCkaRE>DWC¢B»[ýBTDdXCsF›d`A¿FòaBFHa×CóD¡`îE£HÏdqC—JciEßOÿtÈAºN÷vBæNjwÆBÎNwƒDšP{u$IREuµFVQžs"F2PpsEJOµtoDÉNttCoMTrUA Ksm@dKZs–E˜Oós’BïMŸtÕC„Ou¤B¼M¹qžA0Jèl C‘Koc@vM]—@¥N”hAQN¿gÑ?°M×i9< K…g8@ÁL(k>*I•jè<%Ihì&M wŽ>ÖLEs¥A NOq±C—NÛpfDrN·rVBÎMÅsjC^N·t•DðMˆu†@K6wí@ŠK‚w@™L¤wO>ÿLnxÑAmN·vø@/L±s±@ÑKeršBÝNærÚ>„N~r*AÜN sLA$M`qqCvNr†EZO€s¶C!Ošs—C1OtuæBôMïwE›Ißjè]7o–…«Vþj[}6IÛ\h;H°R=]Œ?HKg~AÐMøt@5NÁtEæPªrDÃO±jøE}QkÝ?÷NncCñP³nAxO&jAÂLlÌBÜPÎk$FVòiöCQjh¸>NÎfH?ŒN\k÷E>P!oD˜O0p•BNO.zE=Ki€,;ëKè|:?mOVvµ<M\pŠAûM”kD’OåkÑCÖO¼l#G4S'o°HnWþp†FUFs,CäP½w¬@|OÈ{·B”P;|$BMy”BÁJ‰y¨D¯MñvªB2O±p]DµP8j]HdVZmäC’Q½k CQSqg×=~LZ²6^G}Rc<(NQ¯C"R‘X5GqZXc”FYffITZve«GûV[b=GUŸpŠ:aX§Ã’7n§··œˆ{P­ò”u¡èŠFfÒ¢8€`ã¢KŒW–÷zŒ_‘úvw]üŽÇ‹ŒW(†Vˆ&H¿ž’zs5º½ Þz—Æ©È|7Çÿ¥ˆxÇÇ{¨_xäÄ´§MwpÂ|¢Êw{¿ ¡vú°q™ÿqó–K€¥\Þ•‰~W\Ó£¹Çm(´_›vÛºtžÔwÇÀu£‰}2Äå¥&ÝÄÑ©á„9¹Qž‡w@ž.ƒÀZf‘ÛsÐKü”_€`7§Ý•²v °M˜ðv8¨ñhÞ¹Kûw&È «™}kÍ£§;vÛËퟋrcÉïœÊs¼„—éi¤w°f[ŸðŽnnC«{”ìk—¼åš¥j=Ç¡ElùÇ7¡hjÀa§s•¥Œ1iþ–¿yôP³˜€ WŸpŠsl¹™„ƒ½c–©\”HŸöˆIqŒš°€=c–/z¾_q•zR[IŸÚ†`£C‹ð`™þ~]Y‚Ž9t]W.ŒDpãNb”s~³•Sní¯ •Jj‡¦Ð]iÈŸé‹óh;¡ÍŽkqj£w©•7‚£–˜Ã…@˜O‹ž~$“þ‡(‰Ì‰/ˆK•q}¼„‹š_}I‚|šp]š÷}´€1y™~¹œ"xÈ|Žþpmš|OöL*dùAEdaÜC*Fý^•D½F³diC´E!gžBšD"eæB8G¯d¦C5G…e”DyG1d@DtIÙf%CL8m³B¯Mùs­AGLÿuÜA£MnweDPêxIFRQ{v IVøtHSGsÐGQÅqÈDËOãq ANÜoNAhLØoÍALsgB6MGsûCOšsìD-Pbss=ÖKîtž> K¥s®AZK­mŒC¯LaavC£OO^@‰N{cÉ>çM’edB}OSfHüSîfPEAQßfÁ?èKTbÙ@L“_E?¢Jò`@KÜnY=(Kwd>²L z3CèO«yÈ@ªMëtÇBŽN‚tcAM”qœA N\sA N7v|B×MHwB LÍv=AäK¬z¢AªLŽyB’M~yÒ@ðMÐ|AúMWz¾CÈN¬wÍFXPœwƒANÃsrCaM¤vâ@µM„t1B·M…rICOLp„CoOýq÷D¯OYtFQMxÈDŒO{yNC MârHüPQo]H4QPmÚCWPìqÄ<N1tM?¾NsvÔA6OñsHCðO:qoE½Q°nI¼Tsg8IeUÖaèFoTôhçGSqÌ@&L2pBPNuø@ Lüt6=VH tÀCµM:tpBêL sBbMÉvµBwN,w5C#Njr¯DóO"s·@ZNÎtÉ@ON“jM@ÈNa>ŒL¹[q8€CìP|3†6­JÅ2¦5¸OP6Ÿ:øUå9m=V¶5?>ýW<6ê?˜Z…9fBóT"D²JZ^½EåQÖj#SsdÁvqT e­v`FßTŠf˜H RMb;@ÃL2mR=TLvÛAOwxìB;O$r8D@PŸmeDàP‚mÄ@ŒO:oA@PoÅEZR_nŒ>™LmhíCûQ¼hœDïSžiCïPÎj%?–Ni°A…OÊkCOmôBíNÙo1ANš{@OMñ‚X@¢N¼‚§<úMq|Ö?òNqt A¶O–jLGÂRÄhÜD¨PcgaEpQel‘C]Q½mðD¶TPquD1QêsWDÔOwxC:OûysCCN>yBK«võC;N¹tÿBŠNBr0E QéjaEÈRµiu?‰N)k]CñPøgŽA~MùYz=JÒUõ=ÅL&ZÞ@ÐO6ZFØVDaØG7Xôd“IõVd(IAV`¸GÁTObüJ¤Y·oùEÈQtAELñt/C6Kùw}DuLvYF¯OCv½F3P~t~H¨Qùt EäNõpM|SŽk=T‹[íaéMåY©_ŠdÌp=`¦é©n!«Çžúv»´„t[¢v‹xg͈;q}]V{(g:^b‚^qbt•|‚ÔhRšS~L\ —Þ|7S‡ äŠdЧßùjO¬ÃqB¦j†¥RŽrbl §‰Z[×” {WY “’xÃX7¢sœKhr†ã~÷Cð™ ‹ÓmÕ´”xx®Áž¤ƒx¹¾ÝœµnF¿@ždsVÀ%¡èz󿔟^}:¾´ ¦vµ®Ð—j¥›Ú„ [e˜d¯\¸¢Õ†Zm,°N•`vbÁ?¥RæÁC¢Ç}®Z„h·³Ì™2~1°Iš†~Ê—³|EWïXbcH‚ggÐKZ™…ÿc¡]0m¯œû…é_C¯5–hn¬Ãs¦zÊ¿¦÷s™ÌC¦irÎE¨Cz Æñž‹u7¹³—Oo´’™Žuݶû™qù¿°oÂÇp£>mà¿@g¹º˜ßk7ê€^a•†¿e&J…‚9f²K’º{/_˜•~Z‚„"hs–M|ÿc‚‘x_^C˜™†¿q“ž¹ŽWy+žÝŠÿorž€Š¨n@œ‰šs“ê|–gŽørNWA‘kup[› ŒjªªÝÍr½ã›Ru*½Rš2jC°<”Ädú¥‘iŒ\‡%g) 0‰:nn¬2”Tyë·T›Š}9·Ÿ›}ï ­ps‘¨}–eÚ‡ sXÎ;hfGvuòIУ¦Seè²¢—Ëqø¢½ˆKfD’"vJ[’“g~niÌ£è}pü²%™'qÀ¸Òœyt²»±œk޵œ˜d6¼×›ðiŠº›ºt«¹(›>|S¶†˜Y}%²ø•Øw˱©–p¬¯¡–ópʨþ’Bs$¡§{rÞŸŠëvȦ’…'¨Ð›‘kŒc„°…t†A€ÜŽÃ‚ƒ×˜Ì{:,›t~)‚×›U}d/˜–z(~š`x°y¤0p=tÜGe[ÅqòMÚGçXE“G^à>ÀE¹[9?F+_@¨Fâdü@ÎE fÕAÊEAe,A;F®eÀ@”Eaf4CóH¿g E(MûhE?OpÄE‹NtÏB£Lv C½NwCPïtnE-Q’t EøTÓsÍFV˜r9FÆP«q™DOšrš@MºpCAoMŸqµAM;s_B›MìrnCðO#uA³P:wS@öN¤s‡@•MÐqØ?>LÞj.C¸M}aW<˜ISV3=»KgW±>YMsV[C˜N+ZoIbRƒbNHçQþ` @L&Wo?ƒJ]U>ïH°ZÂ?|KÑm?Lw`DùNu{¨@ÀKŽxƒAoL?w´AhM uîBðNósçAžNts`ACNht&@íL`t¨BáMÒtUA€L0u¡@wKtvnB&Mtyþ>Ky"?ñL¡wAâN7xë?ÒM+wl>aWp:ž@la>A\³IˆQÃ[YMðZc$WÊbùh“IËXVgbFUÈgÓGÂSïiHC¬PÃrq>¥Lbxˆ@‘KèwBB Mr_AíN%n?ôMŽo­;¿K"pšAæOùq™A†NNníAZOYjFæUtfÓFV dNEFQi÷?´Nhk®>2MÈlAoMºmCiO½pÖA‡NvÄ<J(xÐ@ÖN³um?jO#vVAPPÞs*BdPpEdQ¥nrDP.l1DŒPÝmoCÀPèo°DQÍoFíPÝpUEMPv’CWO’xàD?O+w‡EQau^E‘Q&rEªOým'E—OèiCD³O²j-CkOjDÇR6gA(P\›:²J˜UŽD”PpYûAÛOBZ/CHQJ^¬DžRê_IÏXÓb°G®UžbG*S¸cóEíQr;ÄßÜsÀ¨Ar¾`ž8u>À6ž tÂÀ@œýkÆp ‘j;ˆ›4k²­,‘5id’¡tƒPxÐYFè|Óf²R““v`Wšì…€b“tïTµËv`_jŽ»z/f˜p§{¢­˜lˆ9™M‹²vb™ƒ‰Iq$¡”~€vš ˆAq”Ñ{,`ÿó‰s» ŒŒÞxçè„ÙhXªŽše¢µc”Ÿ_¤õ‡“M$œ†=a,™;„ ffŸ Š8jǬU–t'½R¤¤ƒ¢À~ª¿Š?²bœK…Ù›F‰#wà‰Ùv¦^2|ïa¤FA‡l JÁžž‰?e¨X‘piu•÷xŒO#‰XoOS••ì‚ïk¿¬í•qo¥½;žyqu¿ÔírÙ½f›m]½Ášhw¾¨œˆm&½$‚s~¼‚u|¿¸]›~3´m˜u¶„šjpöµP›ñr¬”—Õu¶¦9’—sÒ ÊŒÞpd—ê„jo†Š¹€O~x|mzΈ2€C‚”í~ƒŠ™}}:‚´š|븙—~ÇÙ—v|™{h–'stbŽN\Id½~QNCdEAT^D%Gï]q@$F9aÖAvHÌd¼AHYe-AõF-eËA«FøeÏ@NFäg•B*H¢iVELBiHI}Q5n7CM¯r­AWK©u–CM@x¿C½Nös£DÎQ½qÝDUtçEÖXÈtNE*TIrÿDbO r³BûJ_rWAüJxpÞAÎLŠp¾@L×rAãKrs®>ƒK$u„?ÙM‘wvAmO"sò>”Mpb?…Lçká>†K bœAM[I@¬L¦SV?üLÚRX?IL’S†@êLYÆ?ÏIáW.A©KXZâ=´H}U¥@åJn\?¨K‹iþ>L–s·?gJCveC#JæylDIKZ{éB Lôw’BiLÙužB%MVu‚B¹NçsžC•Q²ríD-RûpMCOåpóC`NÕw @ULêzdAèMXzí>×Mƒv)>˜MwÓ=&LJxûATM y(BÌK(vŠC.M¼sÙC­NpDõPÁo$BQ nÅBâQ$tÎ@rNüy«=ÀI÷xjB€Mow­=–N°sTFlX¿tÌBPP«qËBÓMør„BÃL×s…AK\s:D0OXpœAðP2m GyW¢dÚGYEf¤E«RßpŒC¼O6x”?LJvÅ=ZL`s)B“O/sDVPÇsÂD(OÍq$E_OÌošE*Q^t¨C²N\tEOÛs9C›OpsC°PörfCÎQ.mèDŽS#gˆBšL‡aé7?>Uå0Å6ÇO /15O$0–;½Q~/½<:SF59>ÊVc8õ@›\=IàX J”W¢]—JY]RJ¤Vð\µDíQ¾g(B×PÂjÛA÷P™la@dOár/>rKJt CÄLóv@KÛq¾=@Lpµ;áJqqèAöNZuëA‡O®otDYPëp©F R»l™GÝWc²FŒTÓ`àCP¼jS@XM…oõA¼MÅt–BDL¿r_BÍM¸q±B¶N´szA¿NMuÂ=O”tqA·Q sA?PPnCA´OmmöBJPkoùCŸPéoE©RßqÃAP‘p¹CÁO•oLFQ‘s.CÛOxÊBÚN­xgC,NìuÞD¬Pzt:E?PSpzI_RÊp‹DxNúk—D±N$hRF½RàeŸI¬\âcJBlS[g> O¡UÒ@öNéVAOXZyAüM:[bBlP*_GpVâb}EüS-e[EîQŒf^C¾O¦iE§P*pî?âJu‰>_IktCXNvsoEQs³FÖPwpKG%QÄq­I³RnpLJêV+h Oª\ÂfƒYg_FgžSá_¿[{×{ã`žU–šq€³¾w·H›AxaªK“‡q†¡¿]nv›s‹kNŸ„’èx¾¢–l¯¬•­l¬¢nEmԤؑ‰w‚©X‘çl{²®–Cf³¬’œa裌&kÝ™[‘bÞ•S}ÃX‚biJÛ„/qa^–‘ƒf¥žÛŽÅh¶ŒžøvÁ £äuú¹íšÊm°û“—i/¸ZžwÅÀ÷©’|<¾I¤ïs“½æ£¡wý³[œÚx'°7™~Û¤\llÄ­9•oš£ÆŽfŽ‘þ{™Mt’åÖaz“²‚«e&-zª`›Š;yñeÑ•(‚Âaµ ËŒÈar¢‡’bj=«´™¨uý¥q”×q¾¢Ô-pã£3Œd¢… N³­•3gÚ›¢ŸsÅÄâÔqÄ·  u'êžs‰Â¤œþlÛÃg›l὘!k(³µ”¹iiŸõ†/cD‚ lM°Šq{i¢Æ‘r»³ê›Ùu\þr]Y3©wÄdw.~Kl]”o‡“w2šDÜ™6Œ¥w§šGŠÒoÁ¥•Î}£¡u>–Ú|RX"™-ƒCa2™t„hh‰“o{ý`µšš€]^% µïTä•åuÒH¨ŽOwüX£“¦‡d1´ˆaeP¨;“"m*¹s£Ö~Îŵ´Œ.¾0©X„WœˆËeå†ÔqsUzÏb_M!„pmöZn›©‰šo,¡,ói”*z¡Vº••‚ k#œÖ‹blEµ…˜>hÂÄhÿÀk›…k<¾ šóm¼±™Œn½2›Øn¾¼`œ>pÙº œOt¹Àš“uÜ·ÿ™êp—¹}›Ýrö®ë•tý§±“‰w°¢þŒo•š”†pg¡y{’mi€™x³„§~4€FŽ^~„¨—É}ò‚ë™Ú}‚íš1~Z€Ý™U~~—”¾xB¶’bÎo †VHoRàmJHKHw[ÚDêDOZ8BèE­aA‚E-dYBOGeBòFÍcÓBwGQeLAÎF÷eNAÿFÌfÓBíHˆhaEŠMŠn°EpOÁt`C‰LÂwÞC MêyiC½LŒvCMpq«D‚QqmD8R£sDOQµs DnK£bt=IbTÂ<#I‹Qÿ?9JG[ê=dKdb¥BãN[lN@ÅL!s%A”K uÛC¨KFxgC…KŠ{‹DM<|ÇCóJrz@B5IqwþB'N«t¹B,P¬rž@£No–E˜OósM>7JŽuÕB©MÀy­BkN„u¨>ýMrY@OKu.A2M"w¹BGL,zZAfK’yøCkN~yù>ôLës—AúN±s`B¤P^t|@4OòuN=MÅwåBåNFxôC*Ou«DâPwsÑFÄUâoó?‡OUl”?ÜL¡oúBùLÖquF3Níp9BRMàr—A4P«kWE·RÝg/F TmoaEIQxì=*K&xn?{LýwBXOËtœD_Q€rDJÓU¶rEãO#r0D—OtfE8R\vLCPdv/BåN[u£A›Oºq-CžPoýBO lpB#NÃf‰@ÅJœ] 8®>SÑ1ˆ79M]2Ï9‰M81Í;2L–40=ÜMÃ8ä@ÀSÛ:€FYÅDÉRR^J¨^bgIE\S_„K€\XdjFáRÎkºEÑQ°mÃCAQ%núA—ObsBnMmpCÚMRpÆB6Npi?€Mêo(A«N@tUANópP døGXV _~K‘^×_|C|RÇR[;2LÚN£9®JöTþ?ÙM”aó;íJ¤]=BP‰]9C8RÒ`rDåSTe{CýQgÐD½Qñh|GbPÇmBDÔO|rAqLVsgBOM­rODPàpG Sõn†HÃR„m¸GŸR«mhI´TõkÞM…\gj‘S½]òiüL&XA`nn7oc^û”ÏŠq¨E–þqD¸–š-qN¿uŸÐwU··œ’r¨‡•ölj¤I”Rq¤°Ù˜‚qX»þépµ·+žÅvö· Ï·û‹s«¹æSjå°¢•{bë¬g”-oÞ¬–šuœ£ô\gÌ‘èwINÃ…to|OAˆ„u´V¼›ÔˆÆeO´Œ¡ÄSÃ5¬µŠ®¸Žœ™x5©Ú‘üfJ©–]i2»p¤žvÍăªuuÓÆ‘ªuâÄ©py”Å΍~»¿G¤Bwà²ëmᢱ‘:d!ózÐI=‰wScçxZ][‹œxdaΕ$‚¯k©Û’·s»ºuä¼Û¡x¶žxvœÒˆíf°‘Ö{¤d³Ùx[\†x¬T¢¿Žèh4ÀÕŸŽx ÆB¡—u Æ ÓxÃÁ§¶s¡¾Îš§k¾¡š¡kˆºQ™ãe´²šÍm"©F“Ÿm»‘þzK\ï˜f‡Öm›ºÌ¡ûÁ®¥x”ˆyld¢yÅc Ž9z g²]yXh†’»}êh3–îôg7–u~Æ` žÃˆj¬ê˜ú~¹£‡“ßtÿži©n+˜e†ªfP‹½rSO ‡j1G¿‹l;J/‰¹j¬Qó„ämaZ懻s–XH”|¬XØ ¦‰odLµÛžC~ÒÀy­P…Ö³'›pÏ“yÞFˆi HCyÉc¨Kþ‚¡qaõ™M‹x²£›’‡wù›‰‚n´•&†Jp䥆”"v ¼PœwiUÆ´Ÿ¾gbÃîfß¾ªš\ló¼–šûr§¼›æs1¸_štQ¸2œ,zS¸G›*wݶd˜6rz´!–t%±°”–ox£Spÿ˜ª†ïh08{¢e®ƒasZrF‚H| ŽHƒ)„Mšè~’ƒëšý~Ä‚~›I~Õ€v›Czz–`L tO?pLdx×?Lòw]A¥L=vSAýL:tAêN×r'>4NYoô=—Lki;ÃHYZÑ=ÏH#R9rEÑNÝ;–HÓRÎ@¥J V?‘JVXÏ J¦ZÁL®aWBqOpm*ALMŸrÕ?óJqAÀKtsƒBL¨w[CpL\xZE|LwÚBKétB2MqlDOÍr†F¬OvgFOÅuÇDDN½M[q€ARMíu¬BUM x´A[Mbwà@+M¼wœBxN;yBÅNu5B‡Oquþ@ÓNlyC@®N_yR@gOïtÇ>PòqŒISSrJ¤UkKE¡Q1kPCP,n?F½Oñq¤DOPvÜBˆOqtxBíOSnTC,PŸo‚F–RuvŒ?hMEvºAMpxœAXN…w“C9P/u FÔPwqbGaP»k(EPáo C.ORx­A1NTxB£OöxbA=Ofv×CrP_sØF•PàqéFLOuo CFNzkXA LÎ`²4 =8QÞ0Q71L“3×= M€1*; Iw4ô>"S¾9>E Té@üN˜e¹DyWïcsG™\P`(J]_aîG]©cÑEëUÚf½EÍRéhïDR­mDA[NçofD¶OÉn-DÄNVhžAxLÆjLA´NËqUC¨QÀtB„O{o@ýOªnŽCäSnfDñVNfIHö\¾fE’R¶k²AþMs AqNëv§E¬PVuèCMP=v(BIOÿt F¸Q3råD QÁmÊGôUhjH YAlpDzRƒm½DQRnzCQ¿o8AJOIr’A.OwxR@èLx’A+M¼vÖAŠM xTB0NA{;?ÙKõy¯BÜNÐvE P–sáH„R s¬DòOq°AƒL`jAuLÜbBèPg^ÎK]\`TGTTVÒ?ÑMÇO>ÕKsW¨:JI—b®0¯FÞ^üCŠWÖiåCSUnbBÔRc§?\PïfXDÅQŠi^O¼]ùoIhW˜p™BõNLrž=Kòq|DãPœqHTGnÄI.VæiçKZlnÕEÃRr·JÏW¿qrUø]În”[‘b:f½lzd´[ôÑvæaÁ—î…eÅ«,g]»›9u¹4gx¨®˜Qr¦:“~h´¼™‹p=Á@¢“v¿* •tÓ¾´¢kwq½U£…u“¿¥EwOºœq󬞓›o°ƒ˜Ãsˆº‡ŸmK¨”’0qº•‰€’doˆrSN²”܇*] ¯[žª~„º¤ûƒa²c™*vä¦ñ’…h±@™Én’¿j¦zçÇîªuéÉp«‡s\Ê­-vŽÉŸ¬ôt2Æ-ªÎxü·âœ$r.¥À’\i}™Ö‹§d÷—ƒŠ`jŸEŽÃs@œ½Œs§§¥—í~ì»W¡Þ~ Çç¨Ý{IÅô§w¶¾Ó¢Av¥I‘únœ”‚i¸›}pi»ŽO}‚h.›K„Uoܸ;—¼wzÅiŸê|&Çi£â|†ÂÿŸ}t}½B›ak©»,˜þd·q•B^|³´™ªkJ·êœœz ¡‹ßi¦¦nL¼Ÿ«qKÃA¥Tq‘u³a&Œs4g0ˆ2qi³rå_’?wø[FŽ#t»T±† i IÏ’ßxõZü U‘“wm­Úœ=†[³a¤cŒÅŸ#“IxÖn|Û[‹¼s¿QÇŠìrûY¹…ål'Zù€¸imP³‚>k‚J ‰Óm#J_›jƒÎa­%—dsø·¿v#§rž^±‹9o˜E{|cÆEE|¢mOˆ£~Äf_™1u¼žŽsa ŒxrñéAvT©–Grj¾šžm•ƪ hiÃiœÝcö¿š¬hO¼Ï˜o¿¹ß—VoO¹yv}¿æ¬r’½Áì‡P²M—Et^°X“lÒ¨f‘aj·ŸÀŽVo‘ó~!iù¤n«jì}¡qãƒ5ª|)™ë€À€ožË€JƒžÛ~‡€Žœ…}[€_›|x€ ‘«u†zþ†7gŒfáo6H¯Nf×>\D[ZÏENGBWPDðHÀ\TBG^D•FÚ]–B:D¶Z¼AD[ŠB©Fc`KAH‡f0BŽKui'C3PísAA"P#wg?ÏMùw.?ïL}y–B^N×y”B`NëuD”P9tEKR}s½H°Q_t%IºO‚sÎC>NÝråAÖM9v >ÆJ™tvAžM-v¡?OyË<N |3=ÊK{]@®KwèBMNÝsáBZPDq+@AMGn}?]Nãgy:wH„V ;1GªP»>IsN?¦JžOA{LrV9B‰K,^?uIý[5>HVâ;³HkTä=!K¿_Ú?eMšiÿANOpt?¿K¨n}@jL qÀBäL°t9D‡LŽvÏD!M vBMTsrE×O|p^D¾NèpbCªNötUEPNw’CØN‰yLBåM$yËDwNvCNÑrëAÉM„rAQL˜v»B(NÚzåAÖM9vòCøNCvýC…NãxúBgMyiCENRu¢ANžue>LÕu7>ENåtÙBKQ§swDQómqIzSek¾CÔO±jêC.P nwB‘NÁnìAYOðrVD¦Su¼ADP]o‚JaUXuÚCPÊuAžL×vèAáMáwÌB’P;v½AGPjqŒDÓPÂoåCÀN+k@CÔO»m¸A¡N¦s>ŸJguLAÇMmwoB8OÿtÀCªOÖP2’<3Pž4/?âN114AÀIã5ÃBèQ53B×[>IPjGEÚZ/flGÎ[_²D$YcÎEò]¨b|D’Z±d=EÜT½hÆDlR‘o—CPP…rD\P8mTFDR g-CkOj¯@ÈN$pÿEóRÅrHBÖOmVBFP^n\B#QØl]EpW³j7GÙY»eÇHiQkuAƒMÇnà@ÍK3r¨BwN5qÉB­O•q]A«Oºq³B¢Oûq¥CÑOnq%E&QOjiFRzgÞC¢Q–mžDçQ#qñD·Pr«FP€u“BXM/v@B¨M°xHA¾L±w”@iK¶xÍ?êJ¬zA½Måy‹BÍOJu¦G¼SsHES÷r„DõQïp†?²Lƒj¢?ïLEd¶?ÊO/_oO aÏkÓM>^Ìc°=;KP*<ËH¢UR5ÕEð[;9M`>^nuqRg^lÃAwR[\þ>`Oùe†C:Q¿n´HwS’sF QÝtoB8OÿtCqO tE³PÑq®GÇRën|IU½h¤JRXnÉG8Tut›I§WÇtÞM[Õp\;b-ekj°`³€þy.k&ŒäÎa°Ÿú‰¿eNªž‘noÇ©Ëíw«¨’“üuʧR‘xku¶Æ˜Ctá¿~žÞ|鼿™ rg´–dµŠ—Lm¾·žoxy¾Î›utw¯»‘±gJªÅ’i5·áx¦¼E£åd¢½ŽÀlc‘`yV£›|„º`ˬñ•7tîªå“pk^ž‚†>Sp¢—‹bÝ´œöwŸÄ"©¼äÉ_©v²Ê;©‹s©Ê–¬;u‡É¼¬Is2Á飿t֯ϖÈg9£H޲^Tœ'Œša—¤Ï–²z*£ ’´wÆ¢«‘Àtß³ç´}WÀ¦[z´Åƒ§°u¨Â-¡Fm½Ùš&n(­»”¼s‚˜îƒ§mÌ•¿†mqIœˆ m¤ŒMp'¾›z]Å*¡ö‘È릙;Ãç tH¼š˜g,´.‘Yb¯\S´‹–¼g3¹Êœðw‰®ò•§p¬«“‚hâ²Ã—md1º ³h‰“Lq¡^—jv·mM—ï’v…š“†˜uÆ£‹6jG qˆÛhûˆûn(T܆BmqTZ$w¸\4šô‡oN±öžµ‰Lªžš;¨Ÿk¦qA ëëqÅ›V‹ëoùzx1`H‘µ{‡c÷Ÿ,ŽCzæœcxG­±tO‹EZý¤;±\Iœ„3X‰çníIU}íf6JË„wsXÿ’…)j>™’Œ¦ow±|&_G‰ÙrÕX‰”Íàg±£òKkœ»˜œ¦mÄîÄmbÃÚm°¾,—ëmº¹ˆ•2p™¶„•oqnµÝ™õ~•ć´¤˜QÄ·ßš ¬Ú–”uî©X i7£EŽjv—ꆦl¥žq§jÿtpiÁ~ðz…vH’ŒQ€‰0€K®žnŸ²œùõšB{ÀA—ywé}K’5so/zPûL”[ÒDN@s?7NôuW@nNÜv›BOvqB¡N‘všC¡OÁvÚELQ9u-HqPÌtdCåL°s–@§LbuÜA¯My@¿K€w¼@qLdvk>nM«w›8M©yš<·LczÒ?CLãtð@.Nuo¨BúPsmã?»Mri§>ÍLžd–=K»[e;þGVÔ: GiRH>TJVQ’9[H Yp=3Hõ^>”Gµ]V?7GöVy?$GÈTM>Hý[k@ Igcó?„Lâhû>îLòkèAæN˜oZAAL±rBuKOvsCáLšw±CwMÈsHEìN[pÇE(Q+tøDlPäu"DOuuÇBONúwÍAN{ù@AMþxmBÀMøsCINœqœDzN:vnEsOyEUONtEìO¯pXGüQÂt`APKBv(B[KÜtiCENRuïDŒNHwÈBÚN³rÁD/UInkCæS‘i©BaPìjZD’OÉo[C OsnµDtPlkCÆPNp«CrR+qER.q¤CÓO|sD@OOvTB.L™uºC°NGx€?ºN@vLC¯RztÅB€PvpªB2O±pùB’OüqÞAîO_qÚBÓO¢r BœNOuãCPx]GiT0xHKTssÏDõPœpLEõR3m}A‰Läc=ãELW1—;NTL2];ÌQ0C9ÚK°5B@W99yI'_"BßXïi—D˜\7`E[d\l?NÀnö?1NÎn&AœPAr? L¾pE©Q£m£EsT´hC2Q~mîCcP…q8G©PýtÃD N t½C‚Mou™AaLswñ@(M™yä@OMÊxÿ?ÎKLwL>³N#t@AêORp$C~RÔsÏC»R6q/AfP[o1íN aë?±P|\áOn_£kHU7_fd-?tIéN5vC½R:-J¯Z_7qM3VI#^ÞdK·^0e|F¨S^îD#R¿e=CÜPom?DM^s ?ÇKýtBñL|u—CJOÙt8C´OÖr¡EªP8qHR/lJ²Vo‡I4WzsL—Vq±NXZFmCLª`;eVuáxÊoh†‚„vø†a°jy•œ†f­š%ˆCe­˜:„ icŸ‘cxpª¢”*sû¯“5rফ‹blˆ¬’ômÎ¥‹Û]¥"Œú^¨?¤^+ªŽða£¡ƒžSÌ «‰ÙX±oš^k¤ÁÖ§{°ê—«t˜˜³Ld>Ÿ|„ªb÷¨V4nO¢°‰¾fd•„y×L(˜;LUÒ¬Õ•“unƈ«Š<Ënª7.É¢¥šx»Çç§ÆuöÄÓ¦Ór À´£·lò´A›Ah¤}ŽªY%Ô‡áV½ *ŽmÁ Z‰ n5¢'‰¢iÁ¬²•amR¸Æœ!l#½«šåj¿G˜lvµÐ”!fK¤Ž”l’M|lf=š¿†Lp@¬%˜ü{¹Ó›vFÁž>vòÅ£H}ÆI£ÑvyžLsw½ëšéjµ”s^+±iZij?”qgO´a—ôm¬ “¦i ª«’ÎfA¯–6e­¶9›§jB›v~¼dc¯‡r³¢.”9ƒL°î›h…ºHù}©·Tœˆ€Á¼w'Š"umWG…±g]E’ìvëXô åŽv¨D–*|q¦^”²uΦ‹”§qnŸ`Žj[äwFW¨‚Äg_IÌ~.b¬H¿€eOµ‹ÓqAJÞœS…!C¹ lŠYRŸ–aýR‘ޏzÝVÿ‹tw¡Z£ñ{hÖ–hƒ^io”Ÿ‚gV†=oO~*f›PG‹“vÀd”¡Žco¹UšHpÂHr‡¿_šŸr€º+—ÐoT·Ö•Fn ²–“Ño-«Ó‘irá§Ð”Ïw/§Ì—kuÖ¥n”†mꥲâhäŸhŒªk–á}›faz²mKk˜vs †ù|~e• ~C~ÿ–ú~~þ˜¬~¸™ñ|¥}–"xÛ{/“WpZzøŽ6b¡`+r¶GÊCYW¸@×CaZ-B G®VnE3H'VŽEÛFŽ]ÈDtD:fBcBleyB¤EeaAFCdZ?©FfÎAáI€nŸB-NuBBÅOäuþ@ÙMƒs›> LüskBàNsìC}PøróBºO'wÀDëQ0y*G\U¹x(F8RJy˜@ÆMnxBÐMòy±@„Jùw”AáKixîA‰Múu¢@òNLuÝ?eQTyX@1PzBBLNÝtèA+NpùC1OslLCRM¸hé>LK¡cz:{I]:ßHP[}=bJ>Z€>?JãVš>IîXt<²F`°=“G°`Ü=÷E\P@zG˜\·>˜G¼^K?(I]b8C¢N¯h‡E}Q nÞA»MÒnú@ñK2q^BÑL°u·CçMuºENTsLFNN“r FKPätDOZukEOÁt'EzO[uµBwN,wBvN,x×BþNÀsCB NEnü@MInèBÄMqûC N+o¶DåNkzBæNŽl«B\NÂoæA?MÓqàAÛL?S,aÒBVåc¼ET]Vh#C:TgcC™RÏiøCÈQ¡nQFëV4vC=Tv³AOüskBÌO`q¾DZSåoyAPmÂC:P`lF‡P+oTAN[sšAóM÷sÖAÏL•rOAtLŠsn?ÂNpnCÆRmîCÆSFn_A©O­oDˆOWnþAÚNØqJAìQ…m)D‘V¹iÁDŸQ0lÑC5M oèF@OösþE¶Oªv˜G8RwêAÿLIuÝ>ÕK²x5BbOPxA@N5të@pNtU@?OÔq„@xPv°@QPËxCgPÞo ANzeþ>cOµ^@oP©[^C°P ]F'Q½S¢A€LQOÆ:ûH7T9ÆIhX7qJ;X¤AiPƒ[úEyS¬`YC1Q½cGcR†i6E±OYkSBfPìs9B˜Nu×ESO9wlDTO^wDN)t’D€M/rFäOoîI:V{pTI‰UÏq KèX?pM[ãl«T—_Uhûe9njÇvÅ{ïpã|{°j¬ŽÕ„×l¹“Ê„Pe?”Æ€£cœŠoŽ¥’Zuš¡‹>k˜[{U^ߘ~}?ež|‡h> æ‰O^"¢F‰IWLŸ¸ƒ:Q œ€R ¾‰\á±Õ˜ kù»AÆr¤ŠŒ"gr—E€¢dh›¥„Öiá¡¡‹žl›(†mÛ“òw)]Δ§y¾Yà¢EŽËp‡À3¤‰ÏÈ»¦†ÈØ£ï|îÄ©€t9ÃB£.s€½g n@³Ö™öjá§ràa£@ŒL]¡,ŠaDž¿…eÞžiˆ?k†¦a’Cmð²Ð™mõ¸Y˜Èlòô– l®¨&I`K™ƒ'b8ãzeü™.ˆm«³°š¢waÀAž¾rÓÁÑðpPàJt5ÄkŸcsÄŸžKtbÀ†œîoG¹—‡f:¶G–Ah ¶%—àlˆ³ã–_n(«Ã“ l¤©V” k{²Ø›•rq¼w¦c~a¦~,j…®C—2x²·Å¥r‰Ü¾¬…ŽÂ ª¨Œ­Ât¬Ry±l¢¢‡½›Ýlm=“*|JL½™Ñ~EXmž‡g:¢ÆKs⪯••{l­é•z{J„…Ÿhì‹çr+TˆXm²Q¦Š s§]ˆ`v…c¤†‰[ŒœïˆM³£¿¶^ÒžiÕgŸ@”Éxs£É”¿x©=–©|õž‘òs¤—¬ƒžkŇpV“~ug³T³ˆ†se­¢¥Ždvœ»Ñ›íxšÃf¡„{óÁؤÊ~¹’žwíµö—mw±Ñ”ókתˑuoú _‹jÙ Žiò¥Î“wk“¤Q‘løš%‡²gÓ‹ z5h7‚‚wG|Ñ—~ö’N „3š‡蘎~}~Ô–3~~<•y}}},“3t¢w‘­`Aj®„O¨NbfJB`@|V‚BÀGïZ®BH5V‡EøHoW|DHCb?A³Dèh4BnDçfAîB d¤BÙFmeêCØH(gWDNÒpYC·N®xCbN yPBƒM”u—AÓLÖtCãN'tVCPUtšCöPªzBðO6yqD{R7xÇBÉOyÖAªN{âAnMzQA-J wGBaLsvj?¯Lít>EN søAhQOv—?¦M¸v¥>WJ[t÷@¿KfrÈ@µKßl @Lig™<âJxa? M¢\í=ÓL(WÝ>>M£YÞ>°J"Z§? H \>°Eã^U>TF[_¾=*F]Ÿ>¼F9^{<)Dþ_M?°H…eo@»KDm DgOrslEO²rUCÚL r7B!Mt‚C›Ns™C¯L¤r’CYK·t’EŽNGvºAM{uíGiPfuEUO@r’DOiwÜ@ Nkv·C O4tCÀMìp/BN¶pAãMs5C#Njr)D¸MImÐDÿNnC¬N)mrBªN(n‚C‚N¶sÝC9OÚtEªS sGÅTo C"P,n;=@MœpYAÀNss°?œJ6sØ=«IÅqbDzOqrÆA)OJru?OýM¡z¨?àL°~CîMª{ìAŒLæwÌBõMÿy§@ Nh|Û@JNÊzS?'Nàyâ?ÃK³wˆ?×KØui@VKšuâAÍL~v-CÏOFzÁ?3O¾|}AøO­{\B3Psý@€Pôn¹@ßMKi^PÙd\@mP”gLCQ lyEÕS`vEBKQ•xV>DLuõ>çLEr§BÏSpóB½RÚk±E=Qto?>ÈK>pm@ÖM^vjBO5v>—Jõr—@ÅKÌrËByO¯nëAùPêg¹D¶T¾j|DcPxn´BÈM_sƒAÛO`r¬B¢SÆlCòTgàDµQck6HÇPFnéDNan¯C˜NèrvCÖO¯s COq,B[N©tBPNuÑBuNs§BéNtýAP®tNA`P–wÜ@¸O+zC8OñqÝAîLliªBßOñbä@µP ]Œ@P8Y–C`PøTû:ÃJ§QÔ:EJ&V¦;vJù\­3yEqZ[?VMßW|D»Q/]âG¼VžfÇGmVwÍ?+L}u.=úJ˜td@(MŸt:@ëLSrü@¹LbtÚ@K[ti?ÒH‰rÌ<ÇHñná/O×Te?'NÃXV?GI,_~=^F#\>vCf[^>DG]@ãF_|>RF)_È>gFbbø?†I†kJB»Lcrc@°K™s¦AÌK sCL's¦B›L˜rUC°MúrQBMŠv÷@-L™wfA×L u¸<­Hls C~NƒtÂAnNÍr@A‰MúvúADNcyDFN`vB„Kt@BôM÷rË?DN³ríB"O¾rnDûNZq,CˆNr]B¢N§rÜBýN²q”B;NÐr*@MÆs¦C2Qu]CúOÓpØB/O}p(A=O¢p,A"O0omAZNÀq”B;NÐr§DiOrrºCÛOq×A¿O¢t„@ÜNõwÇ:K{è@XMP|úA¨Jy E…KÝ|G@ Lï|J@Mrzº<^L{xk>TM#zÙ<ÙJ¥wêC=MµxA­L²wÉ>ãKxÿ@(O@?áN,óASPítfC›QVlÔ>®M„b-7‰GºR;EFNA8õ?Pê0[9õNŽ>_HKTIH4VÐ\*IÖ^"eZC9Yçdt=îP _ù=­O±[»F/SdCCaOŠe×@€Lg‚A M8iãBŒO×kîAoOHp†@^NuÝ?M¯w1?#MlvÓ?XPÁqBÌQ`oŸB¯Qoq$AâOÆr¥^Ï=®K7Y‰CPñZZFzSƒbJ>Y|jEG[RnïA9NÐs¿B3O¨v¶C!OšsA…L|qÔG?RgtçEoQ(rrEúP¸sCßQÎuODØNxvGRrƒPÂ^ïo}T¢_9k®OÏXybpN(W(]¿YÒd(kêƒ$„NwíšÇDsù¡©m¡ž&‹ënj£…ZtOŸíжn¤õ”Žx÷¢D˜½…©ªC›íŸ±y˜Â€¾­¼’Þg!¡ë‡iUºƒ"Y\¦âôi‚¶m˜‘s­ß’èn🕋Ál]¤;kר¼’;lߣØñp¢Zv‚£œŽƒc¦ÏŒ0Z'«“’Ãg‚´u–QoIÂöœŒo­Ç$¡s´È¡tÂB¡ârª»ßœÑnS±ã”·kF¥=Žc¡ž×ˆ,aÚ™óƒg ”|dÊšë„)i «[”)qϰh—^jo¬Z“Ãe¨”qg9œP€ïM„-gDš€,jëKüyW¬«€“GmÁáž|vp½[šëmE¹˜–h »#šÒmÃÝ uu,Å ¥9{r¿`tœ»˜ãl©¹IœAw†¶‡œly1²+–«o>¦ÂŠ0b¦¢ÖŒwlæªGֆƱø˜Do¼¶ÆœÚtš°Ì˜kr¼¤2Šk.£ #u±h›Ôƒ½·[£ÃȯœLw+°2šàu°e˜Žpš±;šksíµ5Ÿ–€°*ž¾Švž0~à•"}‰e¥“Äz§_h§””:x»ø¬‚÷¬Â’œº•¥¤ˆ‰¹"›mþ¹±šxkvº¶ž5và¿/ªKƒb¼È¦¢„<°ÿ–|x“§G>läžÕ‡Üc¡½kú 5Csj›Z‹ló¦/“YoºŽ›tÂÁŸŸx À7Ÿ`w ¸›ópе¶—RmÖ²– l®R”Sfî©’keñ¦‘Ñn_¨¤ zl¤0‰ivQ‘‘{÷m:‚Lw2~²U€Œ”€ù€ÿ›8¼Î}œ|$~ä–µ| ~A–¥xô}ø” jÉq!ŽmIhOÐp/F8D·WÍE0FòUÝDêHÎVRBGGZ¯BHÃ_yBiHÎa A`H’c¤AHUc%@hF@dæA8Heh\C\LÞlH\Tbw‡EyQ¾xËC¸OóuDpP;uXCÝNÏu³C¤NŸvCŠN:x B·MzrB#N‡weK}tAmL#tkCoMatáB«MÆs2E5Mþr1E-L6q>¦Jßn¡=mLkÊ7üJ³a%;-MåVú?™OÀU©=\K‘Y’<IÕ^¬<ªF»]M?ÇFª\TA7F_¥>…Cg`%?E9`?ÈGacP>Jöi¸=×JÔl\C1Mïs1CGK·u'D0L¶v0B¨Ks´BÀL¤s¼@qLdvÔBN wDEROtÝDO›rAFOñsæA…Nt…CÀN7vÚCPÊu9D2Ott–E¨NžsbBÌM¬oÔAïM¶qw?øLs‰@NsP@mNórÿA¨N sCXNvs´D†NÓu±BìMzvCãN'tBTO°p†?Näp >ÅLkrœA%NÂrA{NšsYB¸OvíDëPítµCPàq„=/Mp@½NNwß>ËMÆx~CðOy™EŽM4xAËH™y@aL„{á=kMxxE>QNix=ôMOx<´J˜w0CLõwÍAM¨z=„JêzS?:O%}ŒA‘Oé},C¼PŸtÎA4P„mBòL¾_!8FéN`=ÒFòNÀ8ê=uP21 6ãOú7©A^VÁA±P[GŽ^ ebBèX¬f0CDT(g£A‘Qìc BP÷dÞ@¤Lf–AMKmøAN9l˜CQùd™?Okf'B.Pm4A‘OmnèB‹PSiîBbReµB#S°kå>(NncAGM`pBXOãoËB“O"p­BOKqÑC‰P·pWESqgF£R0t\C:NªsCJNªsHB€P`uâ?ºO”uyAöOÓs†BQ²oÓB:Rjm3C,S>hDU˜a¶B]QÝ[=?¸M‚W:8I0Ty9uKoV›7J–X:¹IÒ[S=HLDZ,@ÞN®[ÉD®R¿aáEKR¢g«D®OWlöB¾NsBùM8uCcNsDWO‹oóD>Q§p¦F«R–sCEQPs•E]Q8uØFŽRýs¯HT3rRL›\NoQ™_#l·S=`¥dNñX7bÔT0hi4ƒ­‡Ë|]Ÿ ˜g€nª ˜ìv¢.ÁsÛ¡’µÄªi˜œƒŠ¸Ñ¥ñ‰ì¹H«Y޽û«u“ã¿Ô¤Öˆ£¾óžÅw×®ÄcØŸ‡…@`§*Ž=j4¶B—Rpß³š—…rà´!šBy µÿ—pq¶¸ú™r¾´™Ism¸œþ{{»Ã›uß¾ížÛvž²Å—TqZ·,˜®rƿښÖiÖÅŒžkåÇ0¤èrп/¡§w¿¹›³|²Þ–Hq¬J”Yj®ø—tsGŸTŒXth—`‚«jî˜cÝaûž„Šra‘¡Œµb"—|pSÏ™'~E\ˆSqKmƒ›fQK«‹wtÂ]­–¨|^Ÿk†¢\¿³B—>mÞµ4–xk®³¼’—mü²k“fg~Ä]ªl„ÀÍõ¸Ð”ûÁJ£ø~÷¶n”ñb´(–dkj²—Bo1¯Ø“&k¤£)ˆ;`´›9‚Va]•ê~Ã^¸£ |¶¸œy«¢PˆYcƒ–zy Xi—‚CeÀ£’‡pɮ͘9v㬠–hrº®Ç–¥s,´8™£t}ºhxxƼ£¢¢‚d­¸š7…]“á€kŽFw;anŸÚÝr&½-§Ö…tÊ ¶”ŒÆþ®†Àï ½yN½u›Rod»´™«l4½Gœ¥tÛµ.™ývõ¦¢‘kp¤à†kñÓƒæ]¢—vx‡I‰£*‡_wª7“þl ¥Ç‘0m:¬•*o²·“šÙn ¼í›ƒoŸºÈ™ßoâ¶ó˜youµ«—xnδZ˜‰mä±9–e?®{”Åfƒ¨Ê’Vrù [{y³›Ùˆnx£©~„zTƒŠ{h‹fn€?š7‚Ÿ_xÿi}8~›o|Ó|;•/{¦}Ž‘_t x0Z`cÌ€ÚAJgfCrDiW§C¤EðYôA"G8^BœGIa†CÍGücƒDHe{BG d!@|Eîc7@FfšC JŠjEE Pˆq©FïQ+vœGRJxãCÂOŒumC¾OYvåCO¸w D[OÄwIE=Qx¿CÒOhwÄCOÜuB“M…sÚA©Lpu©@Lätï@ëL;u$>;L”s.=úJ˜tù? Mùs2AçLûrC*M‰taAäLÈr¹AŸLäoAáKQmø>”K_lÎ>6LžjE=¢Kd’<°K÷Xî=iKlSR>ÆIV¤?I‘]G>ÚF^®@îFŠ]:B2F·_)AŽEÉc >ÔEcß;.Hæcg=]KÐgÊBÍO{lì@ÍK'p A5JyuC,LtvÿDžLÏvàDÞLuw¸AõL¾w¾?kNÎuN$\þvÜY e»{æEÎP0vW?iIsüCÖMu›BôN?pE§P*p÷AiNŽpõAÜNæsË=K u¥B7N¦zAnNÈyrA#Oòt¼A+OXt×A'M{tSCLLNw[E+NæxDhOu`<éLêo­@¦N u­?,L‹wÿAˆLÂyk>KôwrG"XÈ4\:gš…ûEVmz‚@ðO[y›>N±{—>8M‹zÀ@NzxcCOÝvmBNßu$BP3x¼>ÿMÄw*@O&wq@ PâvAAN¶vÀ>-Jwô=ŠK„{¶AµOæ|Ÿ@iN…x@@OZwLCÛQšuyHYT.p–BÈL![D<ÁFŠL$>GbPY2Í:WQz3-:–U¼6+IUNBiRa²DŽ\Hc°ByYL¾o;?GMsc@ OðnÕ>CO®m¬AgOâpbA[NÎsAzOÊt—@Q'ti<ˆOsž@ QjvÃARFrÜBÏQ;pH@O±l@AêORp­AOO|q´C÷O‰tEAXOðsç@§O†rM?.PqÉ<üO4rG@ÓODpçA…O¢m×B`Qýp@®PtsQBP¼u6@HL#vhB•NétB(NéoÂB$OäpoDbQ³rCQšr,CQsCPGsôB“O tâ@EOðt¡¸‘QqЦê•'‚¸Ì¡.D¿I¨àüÀÍ«šÅ¿¯Ñ®ÉS°QŒïÃ#¤c~~²Â“Ój¤±‹ c¶«‡‘\itº°™*r»¹1™Zrƒº¯™ðqŠ»Q˜lo+Á•›¤sÏÀnœ’t À¥›™swÄ.ž$sǸ¢,y+á£|™ŸzoÀ‘œïh?Á+`fÁ££t ¿Kž©~¹·˜n„í§Ø’Wtº¢H `ȯˆ–Ÿf›ªä•Cp-™“†CdÀ’7zéQ”uzmKø–ÿ[*[v¼T£ŠrqSû‚ägäJ€°eO6Êvtf.–Û}5_딞z‘U# Ý‡w\â¯x•üjʳ³–¿oå°%”÷m¸³ƒž…µ¿‡¯‡–Ý»¤ŸŒ?¶¥•+frªš[`à©’¥eÌ©‘c‹¢ü‰a˜&…gØ•|<`QÃ𬯔N½Í¡†á€BSMŽÆj G0ŠZi[Jf‘ox Nt¢ ‘Ëj]®–½tÝ®²•zrx³É–2pœ»¸šírÁ´ –¡nž ‹Vkÿ‡”sÙ^¡‘Ú{6iG¬ÿ—M‚<ÅZ®¬xÐúµŒÌÈ×¥¨w À™š-lW¼ ™q¹+˜Ún糘•iŒ¥âŠ3d°˜5€>dA–á aN” |TY”$x#L÷¤‡ˆ?^û±–™mȱw—µt/³;˜‚rÙ²m– h|²Ì“cd¦³­•LiY¶Ü—5lå¶K™ñoÿµ¨™toä±9–eˆ­¶”4g0¦—’q“œæ‰Æpa’€}¦t/‡ xb‚B…¬Ö–)‚(€Sj†¥Ÿª~Ó~üžÔ||~‹ZyS|ß—Êt“uHyhkå}hK SErœ8ãAX\ÚB¢D6WXCÑEì]rAE$d~A`EdfŸApDßeE¥F†fCBÛEdTA»EkdøA GpgƒC¯JÛl@D)NžpÌGèQ v\C1Mïs¤@öKuC|Nnx$D>O=zOCOîx4COwD@OOvzAGMFt AïMÄt‘A©MÆu±?L=tmAZNÀq¥>“L¼nÀ>ÒLs¥>ÈLys A¸LUrùB®L¤sAlLrBM½nCóM¯l®@èL^i;„J`d:†I6aò6GdWÜ=CJyU2=ÁF Ul>&E Z=A¯E7\UBùDÇ\~D\F¤^'?ñEŠ`T?¾IÛd’<ªHÊckBNÂg·BçN¯g|BòLwj²BhL³oxFeNÓsF™L[s DFNRtWB–Nøv+?BPGwP\ûhm‚¤kse‰J1Q‡y•BgIýs¨BJMcv\E×PÊv*DôNtöB¾Ns˜AlOþt=^Möu›?zN…y@ýNÑyj>NNZvw@‘NÚuyCœN*u'FëM0uõBüKÎu:CHN…u£@ëM‘u”=+L¡v&A¯MzˆB,N{ BN‘w?DÑP™xQä_€œB’Q_|g=ŒLì}?aL–~t@=MËyo>[LHv-BÌNõuìC}Pør”B;NÐr,A½Mës@Nu^?—NAw˜;*MfsYBP©yé=iMUz<éM$t*<­N:s}@½O£vÉAËQtÒIZ:jÌC_PÌ\¹4óC1JU>ÕGuQ!7ò@Ts.Ê9Py;…FUUÂ@úR4_/ANYñ_6AYYŠ_fBkVícgBªRk±AïO…o€>†KqqÇ?¢MrîBÁO»nGD\Pq(B$OÝw"?hLïv²=½N¼tB@éP´s¸?PøsC@%PzvÞ@”PÛrÂA¹PµrP>0Mvq)B{OÊs}BHNœr=`Kcr3BnO vMC1PÉu—A,Q4tŒ@ìQu®A8QÍs¹B,P¬r÷?N§vs@ŒOÙwšBÝNærW@nNÜv‡B§L[xÇ@æIíqâC7O¾pwP¡aÚ7¶J_L3\GKX%4H V:ÈJgSy9ÇJÌQä;qLÛSà@PØQ;Eˆˆo™v†Z!¡4‡/U±¡5ŒÃ_az{P„úiSE{ƒàiÝDo‹!v•QyŒPxV¶‰u©UƒWl“M{(^H½‹¾jíV“¨z“\jxê`A”œ{TU´¡žŠÈa:­i“¿kg¥ôŠøcÃù„Ÿh­–€*bù©’Yk~²z–o’­D“ük®ç“im ¬T’¦fl¤ß7d£ÚŠ1l£“Škí°„™#‰_«ô’{(œ¡~$XÑ”ÃrM¥“rNy–À~B[Ο­‘s7´—šM{»·s›Õw™¶]š¿w¿¶þ—›m½¨üŽ”b£–à»Y‡‰Ws]P‘ ym\¦¹`rµº;â~åŨ£€KÃý›[r¥½p˜¾l칄™#r¹B™Ìo´·”þcÙ¤˜‹"]w›n‡dfœ˜J‡)g-•ñƒ`š‡:g­•ltïºÌœcy¬¸ŽšÞtu¶ß˜am¼°*–âfA§þŽP_8ª“/b糘•i·û˜½o#³X˜#qH± —]mŠ­n—npZ¦Ð” u |0e‚zºg3jów³n£ˆ”}Ö{4šå~z…€Ýàï~Î~Žž}û}„›Vxw|¥=qovH‚ÙcbjGIøO dg>,Ej^òC½F]0C$GF`ñB”Ff)B£D¸eCC7F+deB\EÑbÜAdGAcBÞG d“B¿FâJ7z¥AMº|0C„Nõ{GDŒNIxŒD#Nav B M;w=LFvá@&NÐu‹@pM«t’?M¸r¬>pL”q¨?éL-uö=ƒK$vpBªLv×?åJAsÙ@2LØqÏ?ÒK©mGCïNöjEßPde6@§OÐah;ÆIà]í6}GqX—;ÅIQVÑ=:HfY?>ûD™[¬B¤Fþ]„@yCM]ö@Dü^lA9GÎ`>+G§`6<;Ip`kAŒMcDnPxcLF®PGiCÚMRpCëLt FWM×rÄEjMËp˜@`MìnÎBJOþs¢FùRöwœIÛT6zTFßL4sØAQJÉoW@äM*v@›M z¥@‹LØw`BJN¸v±@³Nµv˜;›Mv”>½Nswê?æNx”@¼O€x=´Mr‘CðNæpDàM r{DÌMŠv…C)NÉwAÊM¡wÀA¹Näz@­M y²>ULðwYCENawëA¨Lcs‘B¸NÒw°A–MÃ{£@»K°_D²M¯€OD@N xôB­OkyŸA‰N[Nßy÷@»Nzù?(Ns|AHOÿuÂBOQÆwðC˜Rt"GÂX¡n¿@bP|]…75IN†yPËAµO;YK@©Tú^ÔC»[¥f¯=USÃa.C9W¿hBÒRfjÙ@ÏO.kÜ@OmoãAwPr’A¢NÌqcAMLWtž@UM!wDPQy…@}O"tL?uOrÊA²Oûrº@NNrfC'Q™qBØP€qJ@£Oyq/CPsIEOAs1C*O%rØBëOrC•PƒqÙE«T`r_AJRwqBA,Q}pƒA«O•s¿?ùK±vÂD(OÛsz?qNÂk>RN×r?BIíwÌE)KyM ^E;ùK‹[Þ8ßIX:8ÄInRÏ88KÓQÎ:LU¦D&S²UÁF\VìXB'RŒ^:FŽR*lwAõMr­A1NTx±BNOtöCAOXpïDœP‘pØIØU qOJµV>l¢J4W1oíF3Rãq“E2RtãGpT”pŠKrXykNMÀZgIR©_Sd«_‹d™aBjWd bšv·e^Ç’_zÁh¿ž ‰Fm(©¥“•w ¾Í¥¸‰ÂY«³Œ§Àü©WŒÀ¹¨‚‰3è\†Èì…†®½pŸæus´Ä˜$iP·¢™Uh¹ºWš§ly¾ªœs×»²šrB¾Ó›ÕoTÆâ£ót@ÅW¡ÎxãÀ›ÈtDÃ¥›âqIÆžulÈ=¦5ʬ¸„«Ã»¤Æ|ó´‹—†m·¢h…Ã\Ï›|ÞYÓžP† jܘ{ƒ{cé–õ€Æ]gœ‚…¤]Hš¦ƒ@YŒ€t›K­€†iJï‚ÕoíS ŠDx Y"DzrZüÝ|-_µŽFvXß‚ýfðHûUt¦X0™3‰{q‰–ÇoÝœz‡xX~¤%ÀcR¨Sjž‚àag”„uÑR°’vÕIÿŸW†?^ô®V‘ÚjÒ­î’™t²ß˜O~…ª’ÔpÝ¡(Œ6e露ÆfI­Ç“Íe'˜ { \š}CZ&¯ƒû^‘¡nˆ’g¥‹lú©}‘Ìr°§;”_{ظ³Ÿ…\Ã0ª&‡³Ãqª-‡r¹Ãœwë«å‘=hŒ¡k‹üfzšá„Cf–û~èay¤â4i±•kY¾ x㾚©ta¼Ÿ›”w†º-£.ƒ· ’|ª¤À^À™•|ÏE˜~ƒbÑœ¨ nªè¡k`ŸØ‹Økʬõ•øxp¶Y›„z$¶¢˜¤r%´—Am§¯ –&i•£7‹é^…¤±Šªar³_•oö¼s›év¹¾šYuw±R˜woû«‹•Bn@£‘ìpF’oƒUoÁ{óqltöxw|6~N™h}€ô™¼n·š/}=| ˜Ìy†z—TxÒx_”¬o G¨`Ý:ÁGþa CÝO”džGVLeÅE^R¬iÚ?ëKýrj@»JyåDéM1w#D{MûrîCËMmsñBùLãs»@õKqs.C«Leq«E$L“n6EÀM•o¶BNEuq>¥Lbx$AÃN~{¬>ÅL{?†MÙ{ª;JLmxÂ>MmwR?ÉLavu?òMuóBPQr“CØN€qÇDDNN {ÿ>»M×z—>ÎL¢~ò@–MÅ|²DO>zÎDÈPÿw#>OqvØ?P|w@[Pey°?·N×{›@ëM|yXAƒNêvŽB7OÛvøG”SbzçEV%x;L^ÎvF–R›a³=ZKÚN&? MßOÖ<¨I1Rå/#?MN¯CeP/Z_AëT`oAITŸbò@*Rôb8A&Q cþAQ\eCˆP i‰ADPƒmpBÚP¦n]CüOárúFnP¾t(BOqpBºOarÁ@OFq5B»PÚo×BéOúo§D P{p$DœP¶o @6Pn^? Qbo½BnQÊpîAµNÌp:EbQs E~Q'sÑDQrVFÄSNsÜBêQ®qrEáTqBPŠvœAXN…wvFUOr,CÁN]laAìO:tL@Lz#BIŠt®HPrÉFêQØqcA×P€rVBðPtDoP,síHS¼sC½PÃrà;åL¶peAxOáp…A{N´nC,N'c D¬OƒWÜAáO|_ÿ=MË^=üKÖY“6HçXÙ9nIÉY+;©JÑTµ:.KÞS¦<­L³U^A¼P†VƒFSXXÈDcY‹cÜEµWoYAÀNss?ÑKx’@M®v9DKOÚs DMOÿqÇEžO>oÉJ²T‡pÜLäV"r›F[P¡qFFARÀtWGÜR,qNI‚V½jÐH&SÇbOo]‡b°YbèdÏeµe€eÞoÑcì^áÊy¯fÆ¢}ŒkN¯«–Mr;»ã¢© Á«‹ç¿©¹Œ¤¿\¨^Ó¾S¥o‡œÄhªDƒrÀd¢ÝxU¼Þqɼ‚pFÀŸ²sÀXž1s]ÀžIuÈÂs¢iv¼Äð¥vµÄwŒÂTžNvEÂ~™~oÒÄéu¿Æ(§u€çËi°ÈŠJÊÔ­â†-Á´¦7ƒù«©“Þsæ£IŒØmS¥¿¿fç¦â‘Ïgž)Œ6fwžÉ‰hnª—y‚^“Ž‹x¼Q¡„;r=Q}ˆIya~ŽL}h`‘Ø{lSb’¸|ðY––1f}UxhZ‘z{ÀXñžK’òscªÑšM~W­Ï–8jºQQnG¶y›™yÁªÏ“߀#Ÿ/Š:tÖ¢Ò/m£’Œkfƒ¦ðiÕ£¡Œ‡nâg‰@qqœ³†…k/އ>f4¤¿f‹±^–Õd³›t~åWŸ¡º…iXУ>‹]«Y‘ˆd«¹Ž˜2kc½â2};¹y Ý‡£Á¡«íKÇD°õ’¯Æ¯bÁ˜¥Ìþ°£”³k°¬T‘Zl+« ’{oX PŠh)žŽˆb©±™Bry¾+ ‘wË»šwo3¼'œpvœ½N¥xƒx²¨zˆŸ‰„­T.Šj-<(‘Ûw%M`ÔŠ:e‰ž‹`g­Ÿ%”lt¦ñ“{ߤb’u}¡Â‹«gv§Œ“r¯˜v>¤ÖŽ/g¥‹Óer³‘–asйšByz¶·šªxW¯í˜îv¬«” uV¥Ê˜t±˜¬ˆÔyW‡‘€ð‚^|i}Œ“D{z‘–j|V•Š}+}Š•|œ|½–®xGy‡•îlvsÐ,]Z]fr"K’NÈeúB%LÜn >™Ful@¿FSh AÖGäefAñFÆbH@>F¢^‰@âEg^@ÂD<`>?3D _íBG·bwCI•h4EM‹q‰FsQFuÀDíPsdCóNqøD·MItUCæKªw6DÀM{ùE§OÿzlBùNxxFB¹O(x»@éMlwlAêMlv¾@öM)u->Nst>'N?s¥:‹I6q™@HKÁs&C‘L tŠAPK)rã@6Iÿoò?ÇGMl@@£Kþib>«LÈcBµMÔ^½@¶LÙ\Ö=3Kó\d::HVŠ{D€ai?cA,^g?¬E‡]+>„Eu\·>˜G¼^?³Hµ`@PIldÕEDOdˆHnU]ßF-Sëc¤C'N‘oHB›J,uùCÌLXu_B“L1sD?ïJÚs­?³J‚vÓ?aK4vdCÔMt@9KoS@ÊKoÄ=BJBrwB=NìvÕBžPäw½? Nzy“?"N‹{=?ZN»zø>NövíA™OpuB}OÙuODPýt¤D.NûuþA˜KlyCNˆw¬@ÅMvrœA%NÂrq?åMtsµBñO4x@áL°xŠB NdyœAdN.y=@UNd{B˜N{.B•N÷|?|MQ}æ>SNV{ËC€P}`@?L¸{NBpNÖy€FQÌxDCÎO6x²@æP9wh<(P¦s3:ÂN$yž=ÝM¶}lA»N ÖDÊOîyNF.P=s–K¸SÞwBF¾Zµv§Mýe8tI:W3`°=åGªO5BSLR¥4ÒDÁO‡3‹CjMC]QzWÀCµWa†CÊS•]ÏC½RA[BLQ9[©@$P„d@BÂO2iÉBÕO jÁC«Pïf@EÝQ—iºDÚQ•j¨B¿O×jéLæj+BŒQ»n{A?TÛnx@|Qmm£BÚPp³AÀOÇrB@NsÚAyNgrT?pNKrÁ@OFq'AkNÀqx@NÑv@úL-tÁFP¥sÍB¿N@qBOótòAN¬v½F NûrDàM“p’CjPùs–?wPhs½B¶P]sˆE¸PqjI´SÀpÿC¯QRô~†Z“‘VƒÖe—#ƒØa–Þ{ÓQ•ÖyWU«”G}µZhŽÿsÍJ»“8|òGE™Œefn¨‘•ðo׸píÁ ¥nv£Ä›¬c‰û¼n¦æ¹¢UŒ:¹Í ÆƒU²®™Šw.¥FûkQ™ôbG‘êxM] ”³|a@™+„g”¡]Œ iö®“”•wtª–“0w)¡‚Œwg‘+„­~¢Š4ƒŒ}Ü—?{=š½}R€N˜ä|%‚•Nyñ{m•}suw€^ŒhóƒØTïXÚh/JQ›cw@+Ln6>GQk[@ÇF»g:BòGZeûA0G:báBäG(`{@DE„`=—Mìw>ÝL”wªBRNvuD…Ot(?nMÃr•?†L­sEbK,tBI@q^AÑK[oN?wKœnCsKqA.Jåm‚@L¥hÆ@N¦cð?NûWóBQžUV@ÆMÄTv=“IQŸ9ZEýP?îGš[â@îFÀcíBGvc?BLGv\œ>ŒE¼Vš?dGŒ^B?ÒH…bE?àKaHËP `hK€Y:ZÁHIUZ^%DnNh¶G–OšrÛIÐPôuçH{QRs£@ËL|pç@IL$u4BjM>xh?1Lãu¡EßP/vIrSöJ@tÌByM wjA÷M*tYB¸Ovs@ûMlw >³M…x‡@…PÈwµ@ëO:u‰@wNgt#D'OÛt_CˆMÕuFÛN¦yC¢Nu¶@’Mq×>ËKJqšBûMGv'EN´y›C¦Mœz€CN±yNAÛNÒx>/NkyAŸOÄyØ@N·wA¹N÷wAvO„y´@M{1AAK”zfBåMwÁD£PñvBWO·xô@¥Ppx=;ÄO‰yv>*PÁzÖ>šN4E@ÀM.‚¬B¾OkyfGžU mI³ZÉzpMýi}€£iœ…‘®aÂväÜISeA9ÅCOË;H,RÇ.“DûL D;SIVSE[>^HD XZ­DÂTUC{S*aîDSÿlü@ÕNk^BØOfhìC7Q§iET«jäC™Súj>žMm;A¦N%ppGQJsœCPR-rŒDÓPÂoIcSPqHDºQ°p²AQ>nA5P¶nü>Ml·?ûK‡_J>UKVÚ::K×ZÙ8AJ>\;;öJÓY£:J†U~@wM!Wb<¶K“Vä< K[l:M®x?[L2yd@@MïwD(RµvÄD‘Q6u FËPx1GÂPƒxÓG‚Qít9GæPRq­H­QnsKÕUQiåP=_ZhjTa=g3aeôfip#b–X¨Šy.fa§J“ëue°– pä¶‘Éx‡ºN§‹Ó¼º¨@³¿ç«j¼(§Ž*½Ê¤V‡â¼µ¡b,·m˜lu½þœÀsµÅ¦2uIÅm¢ós ÆÏŸ*tÿÂFžxtd½€™…o޽y™ i”Áol­ÃBžÉpÅuŸpyEÈU©…`É“­¢‰ÁÊ>¯b‹UÌ?±ïŒ<Ë7­E…‹Å´ž5v@»Š™jê³–Pl?µh™øv/´gšÂs™§¢}`ÌŸÉ„êTÄš`…“]Ÿ–#qU¨6•\u‰¦§ kõ›Ÿ‚úY}˜ñuV ˜è€³Km—'„úUÌ“ ~»c† #Š˜iÛ³à—¢nÂD¦‰bȶ±ƃ¯Ž“EÃ)­(’)­òW¹YŸ‰}l©Ð“o<œ‚‡Fa™Ú‚_^±ž^†íd¹ /Šõl=£VŒZk±“”(l+Ÿ_„M_椯äi˜«æ“Imé¼Çžx:Ê.®˜‡oÎò´ ½È—® „¡Ä{©6€§Á§ÜŠÃº)†?°Íòn£¯‚iV{¨ÑŒG]º-žuï¹)¡{ɸ¢u9»ä›o¹C˜:g‹²´’.]›¯E’CdÁ¬d’Öl§¢Œ‰úfº’vLTÙ‰-n Kx›K„cS®™YfħT—Žc¨ Ï”3l®šŽ!w€Š-uÑ^ކ·iÜJ™“Szé[˜.·^¬›™‚ý[%¡”‡/fd¤ZŒooªÅ’ât‹¬”@sÉ«”Xoy¢ö‘Gr™½ˆlw…hx‡‚à={ÈŽc~6÷™œ{“~Öœµ{Š}§™Ý{t}g”Çw¡|x“˜n§uÊŽNT\‘~õMQpd"J9QœbýBaL:ksAÜGWi}D IËdÌB^G°a$@D_ƒB¼Eà]BsFW^Ø@4F `N@…E$_.C‰GYf CJ q G¡O†woGnQÏq«FïPÝoŽC½NnvDmO´twBÙL4y0AïKU|~BxNM{ìBOw1B_M•väBvMæxmCÖLòu‘@åJ8pO@·Lpo2?ýJ¹m9A†G¿m’AHpR@€KçpAMúqÀ@ûJloã?OJØl®ANYhÓ@N@cÒ@¬M÷Y AŽM+U­?ÄK¸Tí=jIRŸ8 EáR’8VD®Z}>uF.^Ò?îE.]?]E^”?¶E"_>DÚ_¿>jGbk?ÂJÃ_ºE!SÍ^×FXö\NE;SmaÒ@€Oçh$FQhmIH«Qs HP×pQDxM»p¹@—JÒqIC—M¢u9D>O,xIKÞWpyPH’Q·s¾?˜HVsáB%Kìv!C>Nìu€DpQlvüAÂNlxt@"MD|~BPg}]>šN™vÏB7PFr„D—P^qËDgO\vÿDÕOvwBOgu@°N¦uÑBMQ¶uB\N¸vr@Iox[@'I•xDÜN¼xý?)NwY@Náx„@„NûyAµO÷yXB%Qeyy@ÏN:zAZOÜ}AÉMŽ{bB’NÄ|ÄAN^}ÛBÓOŒ|ZAOEy4C÷NUy!@ÐLÁzcA}N”~*APX}ÞB¼O7yOGdSÍoõR¥jT|Yi½~ ˜»Š±‘Ϭâ†üŽœŸÜ^µo¶v;DIS•8]F±Oó6)HlPáA(QbTrB/UÒU GÚ^.ZC YZ‰DˆWan@EQŠjó>ÿNkSBÔPj(=ØMÆj\C³Q»kCÛRMlT>ÀMÜml@2MSp2@²Mo³B OîogBÛNôl¹CP`m©BÒOºnºBP+oºAˆOÕm CpPwpö@ÆL"r}@ºK2sçB˜Nr¼=GKnpBSPp„?âN mº@KNqŽBZOðqÎ@œM7q¼D/P‡qJE±Q m=CP“nµ?iNåq=L®qlA MÔs“A;O3vÐA°Q£r>8OoCæOÇoÂF6RrúDTKs3FsU•nC5Q‹oÃCÛPul¸BO›\;IlUÔ7UH)\î:Ki\n:J€V¨9DIT…;pJkSÏ:°J¡Rµ;KàU,:JY˜=‰MŸYØ@PqZ^BÁO}_ÁBCOÌkBÀN\v¨CHOÆxXANàw›B„NæzCRO`y‘BOOAv?BOx(CºNáx¢EðOÚuÕJmSÂv?GÎPìqXH“RßlTKoXiišO$`ÐhÒR~agØZsdÂe4léj–Y+„“w’e±¦ó’Øsɹäšgo µ šv0¹¸£Ý‰¥¼¨eŽ¿ÜªrÀ¬eзǞ‡‰³ì—uä¸Ç™knø¼ÖÐoÄÃ¥½vGÓŸ]vÞÅmŸ¡zdÆJ¡,~uÀ¸›°u¿º"—#i¤¾Áš"r·ÂOžžuÍÅd¢Ë|Éýª¢„‰ÊU®?‰¥ÉϬSËÒ®VOÌ­-€ÝÄ¡‡nÒº<n±±'–"mÈ©Zh”³C—ehä¸"›øjѬØbìœ+ƒëPÙŸ¹Œggd®š|{S«e—zq¾£kg­Ÿ‰G^-!…6S¡œˆ†q]Pž­…aã¡f‰Ögﱕ•÷s!Á-¥rˆïŘ®0‘ìÄ­%ƒ½­«#ŽêºD¬çŒ•´‘Ü~,¦/‘,kK¢ðŽe ¥n‘õg¨¬Ñ”Ûo"¦Í‘mt¦ã€lIµÏ—Ðrv”`pèE1 S€–^e¬Á”w»„žÔ}¨ÃŸ¥–…€Ç³©îˆqö ´u«¹“—“b ¹Ë˜{p¶¾•0qªÔŠ©aOŸÉ~%MB¥çŒcÆ©²’‚Óx¦£]ÇZ¬Ø„ߺK™Tj ·Ñ–¬fÀ²½”ËeGª•pga¤*‹kfΠµ‡É`Nœ³†Jg؞̉jl¨Oõ`®´p˜¿`¹ªj”K^Üœ©ŒbÊŒ®ydƒ%n`(g,R‡sOX)ŠuíSÉ’7xZkŸ}…&m½¤¹r®®—u®q–Žq&£íŒ>c*š(…«^­ŽÖ&qð~owpƒ}{µz„”|Ò–š§zó~T™ÏzÂ}:—†z}ꓟu{?“iHq­ŽLÃV¡vJ0OdbVEÐJÓ_]AGþc¼BF†a¸EæH7a7DgGõ`ØBèE`;CEÒ`ÞAfE3_*@³E—YøCŽGÆ[ÌBÏG`g B|JFr²DÀOXtFYR:pŠEŽQóq\C:Nªsp@íK tj@ÎL¢vvA¶M}yCãMzBKÃr’CMJrB±Låv­AçLzË>LouÌ=)Jñl@aK1k&@ÁIÖod@ÂJCsA@‡L®rû>õJ4rÍ>›IÇp,?uJ mï?L¢ix@ÙLµeç@;LÍ]Í@ºK‰Z¨@ K¥]¾<I?Zš‚TtüGV-píP¹j:c÷‚žžY€éƒr«~ˆb‹4{@†D‰FsVe^H7DSIÈ4wC³KFPQ)UD~V¨Zu?6W,Z2AôVÝ^ D©W¡h;=»P—lä>¦PÙl–AÕPÀkuBtPölB PlYBP†mW<ÃLßnAÚN%o-@ßMRl±C PÓo5DIO¾oÖA2M#n!DùO o~BOÿm£DñOoB¿Nep\A¹M·sé@QMßtôBïNæq{A°N™q‡@ÝO¸qô=OÊkæB PùnºBoO#qL?K²qD€OÊpF£Q lsBÓOál!?yMƒpé@ÿMµr A¦MªrËB•O/r3BÕPNq`?ÞO7ocBhP]mÕCQ—n6HY™qóErTDošC³Q•mDAQµhüAìPÉ[Y?NY@;ÜJ]#:`J‚[J8HÆVP7æF—W€:™I@Wò:nJ–TY<:K†U 9ÅH²Ve;TK~V°?”NÓYóA«Ot^†AïNwiÿAèNuAM`vPC:N¸uðCßNÞv!GžPuwF‚OÏu#DLOøw*CrPovIGRS»tG&R'tFRqrFF'S³n9HfV£h LÁ\§fTQæa•f™Z9d2bkŒk6ZA|¨r–_D¥’òq´–cª±6–rl ± ›X¡¹j¦Û‹¾#ªŒ¿p«D·¨žQ†ë¯ •#qµµ²—£l ¸À›5tͺfœu¼öœ;v,Äâœ|2Æö a~,ß©xã¼KšFl¿&œóqbÂêž:tSÅv¤L}íÉ\¬¿‡Îè±ÔÌñ¯Ž‘Éh«L‰œÆ“§²€Álªiy¼’œØnY¬`“{kížœ…¥^o¤‰Œ%b?¼Ÿgq‰ÀbŸrƧêUlŸ¾ˆVX/¡ŽlÝ¢ ‘‹h©‹“üi„¢•‡®XDŸV‚ÛO ‡^¢ß‹%hü¦fþlZ³˜yý¾¤3Œ$Ç:°”¥Ä­¾†§™‰‡¶-¥Â‡F®_™ÿzÙ¡š‹¶bX¥©eôš1o½·;š'n:±Ä“%l¦®9“Al¹r™Su´j’D©—KzûZˆ¨ ” z•¸CË~2¹;š»{áºxš:Ķ|—oo{²b’ýbP·A—)jN¸ƒ˜!hQ«žšZìŸÞ‡ªW1¥“osÉô¹‹šÉÛ¨É ©¢ÉË«/‡¸"—«jϲ#•Ýj_¯F”Vië¬à’ZjÀ§Ud¦(‹kb ¨j–l<¬õ“sn…µ»–8e¼*›—cU¨¶ÜX0’ðx F†åpùWøûkÚ`þ~7k_]=„!scc`…Ìt-d“ ƒ¶l²¢a|®°¦˜@y^¶Prµ:œ´o£_e‘?€1\͆ }#r4‚P€[v{ÙΘºy ݘ|"‚–ì{ã~ ”ÉyÚ|·’òrðwj‘ðaõlg‡¥H{TønjKSO bDÔF{^$BâFÌa•?ËD \C@D•[ð?D[\úCF”]“DSC_RBEA±_3C´FaÜBQGd£CÅH%hGCLŒo GüRsÿHUWys^D8P v CÊM›zÛBÒLÎx#C¿MâvGCþL2w[CSJ.uiEwK qüC]LõoqCøMu¢@äLÕu@£L/v‰?ÌK1t=UIër@9F"t¥9¿F¡sù?!K¨qšA®L¼q¡?rKAp¦>KQnk;WIƒk@5Lkfž@¢K^¥?÷JÌ]·<ÊIVbä:æHÀbÇ<ûHpcŸ=‚F'] @ÅFN[Æ@ºF†\9?¾E·ao='E\bá@øH5\1A#HÃUAKY\CàQÊ`ŸI=[]e‘CwQshÁDvRlhðIGXÆjrJDU¢j?F¤P®i\DÆNjl¸DÉM;rzEMNwâDÅMtEOBs’?†J÷qdCþLs(A3M:sY?áLÇu÷A®Mw¦ANïx¥A¢Mn}é@ÍL{ðA…NùwBDNisƒAµKÎq†A|Lýt AqNëv…@ùMHyo< L²z¿>ÓNq||@N¤{ï?6KÜx"F”Q3ydBØP%y¿?ßMäzÉ@yLèy™BøM3z,C NuöAÆMZzÕ?MÏ{ø@*O4}=?ZN»zAòOkz1?Nìy#AžNoz¥CIN´z-C£LG{AKÉ{óBÔNi|,AIPCzaEãS,vßGY]Gv™Lg?Zx`˜ˆ™ïü˜;y¢p2jêz‡‚m>JŸXHY5=*DôB;eFÙLLBöO®XqA7Tô]ÐAÜXÄbpATCgøASòoÔ?SQ½s#<_OÑn'BÚQq?§Oq*AßO¸pÂ@ëN$o ?"Oar~C{R~uÃA PPsA_OVsCíNÀs B¹M«p§BJOpÂCOÉp­C…O0qTC‹O–qµB'Ou+BÔO°u„CåPôp§A~O;n“C=SrâB¬R´n)FS§m¬CûP'p @hO:qCñO`oõCPl&DRºpØAªN2q?DOsEPˆqùFÇRpŸB”QüoÍ<îN‰lŸBEQ±m:CbQ#n¬FTÔn±IŒW_nˆD—QÊl-@ÑQðfò@Q,\A`Oe\ˆ;EKGY SÏqHØUix-F'SŽw~F¸T÷pÆJùVÃfÌK“]€eDR³_gX(cZföe¹isa-x]s¹f鞬Žt-­Ë’"jõ§è‘eg‹«‡–|Ѳ¨ k޼»3¨’W¾x¢k¥·[ò\°–õpj­d’®n°†—æ{⯺˜ñ{Ë»v‚{.Å[¡Y~ïœd}Ä-¡ý{¹ÂëŸtÿÀúž«i#™ž¬tÅV¤ƒÿʃ¬°Îò¯T•ÞÊM¬é’FÈ‚¦—‹ÎÄý£ß{ëºl˜«eP°[‘«bÀ¤.‹-d—œØƒ£_tžN‡À]¥²W–§j˜Ã#¢pvl·Â˜mc½¡“‰~T*š(…«^uŒ‰EbŒ£‹˜_¾£.†¾UázàMÖ¤€ŠÏbí¨L‘}p ªÌ‘Ùm`®±•ôtĹ€¡Í†£Â¨­¯Ž ½Ö§Í‰à¸ Oˆ½¯œy…w£ðšq“-…\Ì¥xŽHdO¶å–âi[¹Ð–«d‰¸r–i̹—Ýn9¿6›Rs.N„°e EŠhq¢«ë—Ú|Š³ï›‡v¬×”œgîªå“pkð´/›»tM¹ÕœÌvf¼‘òva¿kžñu´¶™Äm£¯€™¢r¤°*Ã}Àƒ«Š ËQ¯›ˆM­œ·s-¶g–gl×®¸”'kÀ®È”²jt±•Tm›³¿•nÖ²‚“äq³è–fxq»±žÿ{Á¾çŸUt×¾–  uP¯%—9k¯¡:Žøgµ’¯€wby‡m¶XÑmd]Ö† pÛdÁ~"hPTˆ¼saÜœýŠ,tV¬^•-tV·Óœöpf¹5 àp ®Q›_u•–VŒySƒÛ}!€Ü}Ý}W|òܘé|i˜Ñ{.€[•(|Ä~”Üx<|!”zovQ\Mj–‚ãFÆRnRHHKÑ_ DEv]AnFJ`¥=¨E¤^9@fG“_=@mGÌZ„CÜGX#D#FZõB¯DÂ_hDKGZa)FIdEÚKBjªExPmrcEPRÁuF;Q9uUF/OJy©BŸL|C MyàDONÕvMDøLÌuâD‘JdqµDéI–k CtKùn@?ZL;sÓ=,MCrå=M¶tÑ=æK²y= J(x!=‰Hyu&?[JsÎ@Kwpš?ÑJ+p¢?‹K§o#?ÀJHm =VI+k<I5bZ@§JþY&;{F®XÝ>JI_d^=Iâc'=ÂG~b\>.F$^¯?ËE)\T?3F2\?xF5_Ù=9Fë`Û=}G~\/BRJm[4?³KàXÈBæP]FcV¢b¯A½P¬g´BRìi>HåV¸i¿KÊVÔh„G«QñaE|OaaJCƒL&p(CPJJyG{MTzEŽM%wkALt]B*M•oVBÎMÅs¹?LYx¿@ÆL'zV@©L€yè@òL¬|t@=MËy*@‰NtvJAÊO)yk?Mby¡?mNÝwO?fNwx´?ÇM{¿>¤M„}a?#N}È@³M]|§BzL{Ó>_JÏuACìNœuCŠN:xîFyP›|CãMzuB?MÙxDO/y~?åM:y@çN}{ËAeP·zF>¨NevApPsy >«L¥z–BžM9|{A…L‘z`CõM{k>TM#zl=‹Oz»= R;vÐE/W/uD±^ðvpXHn‚Áq¹~œ†¡| „Û‡ÉR>`ÝqOF=MQú>åCùC–9ßG¼M#AàPºUD„YaBÎVhfJCëRLl½CÛQ¯peAxOápR@‡Op®?ßOër˜>_OŠwî9IL)qB’Pup©;qM™qŸ?ñO¡vå>ÔORt½AœO¤uÍB2O™tBOr BIOq©?œN¾r_@M:uF¶PÚwIA»MÅuFA©Nv‡BOÈrBP_o™CˆR‚nñDTÅnYDÕQbkÙEUUþo|@âPrqÕ@øNÊpþA­OºpÙAÃPNr:A»MÝqEþNvt˜DçO{qsB§PÎm9CÙR'o?JPÃj™CQ€mæ@wN¨m÷CóP´m#D’Q–mÉA[Q=l†=¾PÚbàBÈN-\ò?MV =ÛK4YA:öJ›V2»®šj㟵„&OÅ•}}ÁV†—J€ŒYѠ݇M^¢”‡sX ê€²H½¢ˆn[ª¦ˆUmû¦‡Šõf §=‘ipú³TŸƒºR©‹ï³)¡ZˆO²ýŸ †Ô§Ð˜îМšˆžmš=a §È‰aã¸ú”f8¼¨—œcŽ¿ø›´k`ÀÇ›¯o9¿Wš&o °š™}6¯f˜d~î³²›î|ç´g›ÀqÛ°¦˜Øm½²™œqWº“¦>q4ĉ¬‰|ëż«Ã„óÃ¥‚<½÷œ–u²™}r˜®šÏz(®Ò•Etu·¬˜ipw½üšÈoo´U˜Ñoë¯<•¯h´­¯“åd¯?”'k诀“Plº²™”sµ»—zµ»dž¿~é¨Ôƒ™ÃžªR…ý¸¡5|Ȧ–Vu ™îƒ@ku‚do™Rp¹lyU׃°k>WÙ} c Lª‡ÚpûY4š¨…vp‰¥“ôvS°³˜ão’¹ó Åuï¶ü¤“~kœ˜–}8wˆ¬ÂL€½¾€ÒE™5€ €­˜~GU—|Ð}”4wýy·‡oítž*QÉa=xFDwOLl·FCIƒc¯B®Cj`×?ÝC^…>?Er[ >çFÔ[ú?ÁH\XïBlJ}VËA HŽY0@iGÇa#@ÏG¤e$D>J#fGyOÏkÍC-O2s!D–M's‡>:Mêr>LJxÿ=@Kgyï=|Jgvï=WJ[u@„K&s@ÌJÑpÏ@}JVn®@JÒjð>¬HSh>’H aÏ>ÛFèUt={C¥U°;ÃBŸY±@dIr`pCLa‘=ODãZ4?LD‰^–@FI`8AøG²bñ>ÛER_oCãGÉ\@åG€VöBMÊ\äG„Wü_JGeW‹_ÒEQcdFtS&eœFUÈfGS\gôDFPâb~B±MKe@EKžn+CVKwsŒD³LwF2O{¢AL4wˆCiKxrÞA§J¬q!>fK‹v‰A NVyÆBvMözí?K1}ÿ?¶M€{B>NNvÖ:qLŸxÏ>OOX}H=BOÒ{„<ðMùz|@jN–z~AnOûzG@“NØ{}@àMãy”BÔM$y7AëKåtCG÷O sECGNvsÍA‘N³{W=«K_}ŒA2NdzEˆO7wtBÕM5{?C¥Nä~Ù@&N¼y^A*NuBNàvŠ?ÔJz{¦@ÜL{}lBFN„|¥AâM|¯@ñN{2<ÐOþy‰C>RùxFI\YwYJ]ªtœN;_gr§TUc…wŠVg0{&BNg=WB„Kx8bA_F;KLQÓ@|PFTšBtRÆZfE%WujUDTRwl‡BPájkCÑOˆm>sKŽnˆB\Oþsè>"L uŸA–N t¢A;NnDÇPuæD°R2vpCõRvrùCŽQLr0ANr{ANÍr>AHO;pÒ?žOFro>êM¶vRE±P½{sG.RŸ{7B€N¶uõAÜNæsW?YO“pŠBnQðnChQdpÎC¼PqÁ@wOáqÚ?”O‡t¸B˜OMvA>ÎLÞs°?3OuÓAOŒtASL±rº>gPæp^BR8o¬C’S”klEÐSykËBPâjøAN9l*HPQèlCC±P6l:<þM*k¦>O²daAÀMÌZâ@#MYØxFÈQzzD’OÑwF#Qåw‡BõL¢rj@J,pæ>ŒK±r7?)Lot”@´L!s™@åLíqi?&L;K&w>úI)w9>óH_uÿ??J÷rÑ@ Jùr¼AµHºm¸@NHÀgN?ìHñc=èF2[‚;ãBTð:Í@ÐT?„E\«E+Llc"G¡Md BGž`M@/Ecf=ËB c“<”C„a?F^_A+FG[ÎCpIÿYDO_×DƒT+bjEÆUG^GT´YÔGWÂaKÅ_ jÕF!VXhÇD¢Pj­@¯Lm"CNÄp¹C]MIp’EÁNugMoV.ÌRY FàM—uçAJKÃqûAÈMmv¬B¾OkyãBqNæz-?JLB{—@ÚNÓyD@ N\uw@–MÇwI?èMmyv:1Mƒx@A3O»zAnNÈyµBóN#zð;3K±xACO©x+AžN‚vANàwYAŽN“xtA¥NÕy)BœP¶~¬>{Nw~‹?+Oiy°EÑPuxŒ@‰Ih}@%Kd°A»MÒ|“AÁMyE9OæzœA?Mê{BôM{A N$z·C­N7|SAOàyœ@QYzŸC¾Qàw¥G‹U[rXKÎ[FrÍKKZ§pJ3VnI‡V#kMC—MvUç;nC8J‹0õ>ÚI=bMTÔC«R8VE±S ]ÃF9V½g¢EpR·køCaQñlAÉOyn÷AàO“q¸CöO{rÄCyOqs|A3LØp‡G“QÜrfDóPwsúE¯S@rÖCÃRÁnÒByQdpÖ@àNdqF@ÑLápïAeNwl'?DO`qx@/Pðw¥C©PkzÖCÃOœw¨>XL.rj>ÉLÇo C"P,n.EGS²oåB¡Qs&A’NÛtg@@MtAäOÔt8?ÖNýsÛ?øM\vL?'NtvA…Oˆr9EPŸrb?ÇOÑo5B«V•n^DoSbk˜CîQúk}BÑP\j CfP jÚCWP"iêAôN¬h¬=,Mh<*J÷b¡>8GH_”>—G¼\2;àI{]:<6L×cÊ:—I¢[<ØIëY¢7ÀF-X(6ÔF]U­<ÅIÁV•<5I}V+A†KWVãAQL§X˜BbNZb6EâQÕkôBÑPnCØOúo1C*O%rŠCùO®rÞFpUr!IYÈoHJpYpHT½pçG×TGrnFáT8r§FÜW¦sèGÞXániK8^½k¥Oñ`$j]Nt^„fxTl^²d\]e__kPbsZAy!p5d”=~i“ªaËjm¹@˜+q¶©™Ftد•nk ´•—×q@´¦–ïm©²—,põ¡öˆhm¶ p†G^ò¨0‰ëX3¥V‰Â[.¥ÖŒ o=¯©’ÏkµŸ–jÒ½•žÞ{EÂí¢m‚WÆÝ¦r†Æ|©eˆäÄY¬š†¬Ã’§ù„g¿Ç£…´³é™×|†¹É—ÙqºÁ°˜#sÄ¡Æ{ÓÃ牢€ ÂI¦Ÿ„T»¸žA%¹H qC¹už­o%«Ô”Ölæ£ÖŽ*nF£Œˆlg~¢Ç‰€dØ¢ŸŠë`Œ¢D‰â`Ë£,…®S¬€’¬fâ¨K’!m‰š€ÞW,™>ƒCe(¨_™(‡±´£’‹E°£öƒ`¯Q£¥‰M¦¥—þ)¦”’ÿz®®×šP‡ù¶BžO~ÝÁí¥¥zÙÆ¬©Ï| Â=ŸÈsϽv›Slé¿öt{©˜¼z2©k”ñvq è…®\“¡Äˆhj¦¡“ ¤”\uÇœu„ÎTg’x«H|“ë‚qg$žkr¡èõgé $GnZ–M„jr#ˆZsÿ`\•d}Ñ_Ä¢†Ž³hΧm–Õk ¬Ò˜nE¬i•¸nÜ®,—Àw-¶ÿ™„tï¸GœQp»º žÑwæÀh¥Š—¾E£«€»¶Úš{u¯N”xj^ A‹j)²‘åy¾š’vÔ–Ú‚#ge‰"r*Xè‘H}žc¬™Ž‡6mk¡ž”:z´Í¡I„R°ÆŸc¥G›·z¡T“ëyÖœGЏ„€±†’¾~ž}—&~Ð|¯™X€‹2›;~Ù~[š¯|‰|”²p-pN‰&[—`­r0EüO–k2A¹I$fmB0DÞa¡BçBOa^ACÝ`ÿ?rB¹``A-Dž_ÕB3F¾`Y@?FÖbê?3HDat@äH-bkDÝM2eSGœSïk»HlU[qþDN*sD€LuâB¼LpsÐCO¿q&D‡P}vŒD>Q’{£C®OjxKDQ¨rzCAPÑn@?L¿n:?¸K$sî?ZL#v@2Lãtó?gLâs}@+L}t5AmKÛu%A¦J·tËBmJ‡s?œHŠsÜ?"Iüqì@I)oo>ÆF×f‡=(G¡aý:+D˜We4=HS 5\?ÌT>ãEëY@¬Fä[_@TFÚ]P>GE`·>rEubB>ŒCË^A’FO_›?èEõ_ÿ?G bUAAIB`D-NÓeyDR”i^EáS½cîE$U±bG:YÜeÀJh_kZHòXÿj»D|Q1mT>ÃK*léAWM.oZB#LæqhB°K‚t·JR"{BOðTåz KQRøtúBÇL s|?ÛJÃwAcMé{®AÐN9~Z@ªN}‰=}Mvµ?3M^sçAæLãu±DªNðx-@2Nxx=AO¬ywA@N0zTD¼N{ @ M$yÙA,Qíw)A¥O=v¥=¹MÈzò?ÝO.€æ=ñMæ|â>yNe|÷>ÏN=|Œ>¤NxBWO·xV@MŠ~T@KM¾‚>BN€¥AâM|¯A!Nv|·?rLƒ{i@uL¦x#B Oxx¨A¢Nµu½ACO½sžBQ wBDeQçr;H1U@ocKN]˜pdJcYGp–H5V¡p¿HºWMlVIåQ0\ì8×AñPX.º<ÙP< MQVñAŠR][ÂC±Sû]JF¹V+gnCñQ-l¯A«Pqæ?òOpEEýRƒqÚCšQ p-D%QfpElPÆpF}P qD«PqD:Rìo2C¶QïkrCRpèA\PpÑB´OmìBtOql`?=Nrqƒ@dO¼t?C%P!t1@PM÷qrAÊN sdC„P„qÀDŽPÞlSD¢PmçB)PyrŠCKOév²@HMksÒA˜Q>s÷@nPªs=C=P†s{C1Q2qsBÓOálÀA¸Nÿp(B¬O”r2ESmDR9lÂBŽQ¼m\CˆR¨lmC½QUk9C•PÄjìA'Oƒif?ÖJÊcï?öH\`‰@OE`ÍB·E®_P:ªDü['<4J‘b ;âI­]…;J˜Yª8´IzOÒ; K^Mt< J9R`=*J:WN>KÆWÈA=N­]ÒA5OOi³?øMšpk?ñM4qB÷OÓrÞCãP«tdCTPÇt›E£RUs7G5S6q GsQ'p1H$Sp®H»V otG•UpØGWLppIYmÎJ§Yùj$L[¨kM:[fiRÑ[Gi]ça¶hfže`b$odo¢e"—~…Lrm¹#˜Är$À9›ÏmU·——¡j|®-“]hÞ±}–-ræ²p–kmW¶–Uj¨»Ž jš{|^D•ãohH“š¿~k_ë©t’ua² “k”´Q•oǼ†žÄBƪGŠ:Ç~¬Íˆ­ÀÒ¨«‡CÂŽ¤þбÃ6¢Á„߸¶ ±ÍŸÃŽ˜so£4ŠFi뱑ðm¥³,œï|ž¼C§ ‚Ŭƒ9À– á}sºÈž•z)º%¤¾zª³ñœ|wɳz›Œ{б”–žr"ªz=dx¥ÈdeÞ§ÊŽÓdJªÀŒ/Y)µr–çkÔ°Ù•¾pSœ–‚jX®™T…d"©Ÿší…÷³W¥È‹ç­›rƒ^«ÚšX~,¦–±x/¬ ˜}-¸û£ùŠìº°¦‡åÀ©Kƒ@Ħš|¾›Ep,» ˜¶n»æœwm±`š‡wލô‘osÚœ€mZÚ•á|„T–…þb šä…d"™¸~$]#‰~o°Kæ| jEM„pK8–{zÎOY”fvÔP]ˆëoTYJ{Üd`Oh‹,v3`h—Ÿ‚b]a‰Ç_`¥â‘Èd÷±s˜hp|´}™¬y·² šÃz¤²‹šctÕ¾ô¢—~ÌÃEª‰å¾C¥ä‡3²ë–ïtm¤ïŠ(dŠ’Òy7YÞŽY}mgí“w¢e(üwé[HŒírWý™ †~l̨S—~­º›è~N±´Ÿj€M¢¡˜êzu“P…i@“âz³q¸ˆãsˆi„j}Å–N} }„œ4}Á}М~û~Žœ,|C~J›|}ˆ‘¼p7oÅ…ONOSo³B•L2he@«Fä_ùB!CÌZ½AnA²]ÙAŸBobù?Bwa?BC\??BSZ»B±FÌ_˜D!IËajCÍIÕcE‚P0hëHqVòk†JæVäs(E¾MÌw-C§KFy²BýL$vBB MrD¢N]sHDNNÇuÊD³OŒtSD;Q™o[BàO®lúANNo´@`MÒr?LÖt!@VLðu-@MwÃ=üJ¥u%BMKw AÕIûr¿AJbqÓ?ŠHŠsú>IGrë?IFl@Iúa<‹Fè^½4S=oWI3`:¡TÝ;8CNXkéFÕa @·H½aB=Kób]D_OýeEEVRcäE³TLfÇF¸VÒhGJ¿ZájŒFNSØjDEýQGm¤DhPÓk“C¤Nœn³@dJsíBÉKwÑDTM×tãE«Lo¬F‡N’pA KivJB›LÑzªBõM|¬@¥M£~@aL„{PBóMàvÌ=ðJp A±K™rA`Levù>©L•wµ@åNlyèAPV|ÝBãN4|ÇAGN–y¶@NNwSAOàyTATOˆž?2Nn‚BN×~mE:QP~O>­M |Ÿ?ÖMK{º@ÊNå{@úNŽ}j>ÛM’~ºA_Nê|hB‡N{fA3Nu|íA¥NÖ~+@tMÙz»?úMlxa?TNØpËB“O"p.A~O!sôDuQžuSGþSYrHKa\zpMþ[Jp&I2W‹oIdV&lZFøQÌf<•G>^D/>>ÄUº;“I‰RàF{S=Y‘CøTdc—EÏYkÁAöQÅn??7O”qyDtRrÇB©Q.o§@ÙP&m¾D¸RÐo’C¬Obp4EÐOqGRôs¯E­RírFLTp¢DVR_pÜ>üN{o²@PDnB4P^on?’NJqÙ@iOr‰BHPEr¬AgOâpêA‰O»qëA‡O®o-CžPoŒCšP¶pB6Nœs?B­L²v\A¹M·s‡@•O‡sL=M©sûByO—rðC­Q/m B Pk.?L#qÃ?óLÆtÇFõSoÍDÊRôlBVQŠo"C`RQpËBBQ~m˜BVPRkc@ßLîg{=G6`?ÖDg]AÝE añ>Cõ^’?G´^?–K _7›HûXÆ9LJæW5nIñMÜ7´IH<*JAOß;JÅUÉ=žK3\™@bNée ?(Nfp½?XMktTBµM_t7AáM÷tA—Nv®BäO‹v>FrRŠs|HTq¸I²UþoÝHÉU‡n8J¤VOoQHÊRùoÿH¹So:MXãjèL¶XÅkªKFWÇl2IV‰j O"]žm\UKaôhh`ahdgös n<`—Ž„|p¼všwŒÄÒ6r]»ç˜YmG¬½Üf“­q”k¡²/—Hi®¸A˜ÿiZ¶å˜s˜¥•Žsn2Ÿßˆah£‹ôi!¬“šlƱ“ h‘³S–ßph¾Õ ‹ƒÆ>§ˆÅ«¨=‰×ºÒ¢d„¬À!¡§ƒ¦½‹ž<}m­ ˜¶|Pöxê\É­qòP‹™´zhZ ŒÍlÁ§“rͼ˜ž¿pÖ«á‹Ü]Ьê’Çt޳oh€‹ºo¢ì€m¾\¢S~q¾žÏyŸ·R–•pÈ­»‘€kˆ²þ–7r"°Ú’‘iª¿ežzs¼sSxh¥G2bŽ€‡À_t¥•êu¯—›y/ ‹ÃcRœ¡† cñ“‰Ãd‡ª¾•Ár†¶Z ~‚¶Ë¢ä„¸h¢Õ}á·O›µs¥´ù’6j8µÜ’nw¯ˆ’l—µ/™•mt¢”ˆ/kœ|~B[¸‘C‡0T£„ƒ€cCb‡upÄFL“tpXÈ„jíI^uÊ[•A†r­Và:ƒzÛ]=g‡¦lJ‡amLކµoèQ¥e}ZcN–lƒÒad—ÓåXŸ¢ŠŒafH®¨“cm–§ñŽ•iŸbˆåeñžáˆVd‘±o˜­r‘Á¥ ƒúº@ z‡¤ª¦‘ar÷¡Ô‡‰c"opL°{^8HÔ~bÉJ±„˜iïL˜Ž‰w-[³›£‰ºnt¢)’?y§€•Vu·¥Í”3s’’&‚4l |Hm’]ïxeèið}Rr÷†ï€î}i˜Ò~ò}"™|™~yšó|ø}A–R|{}ô•Àxøx˜Œf `{MÃ@@_¥>…Cg`¾>ŸD[_ÛA°E>]àB FûWBQG®[ÙB,KÛjÈE—Sÿp‘K[´sÓMTYjv«DN>xv@ƒK+zyAPMÙyV@âKqtšEuNÅr F`N t`D‹N*tùB’Oüq¤@pNAn(@ýMÏo>)Mré?ÒK‹q¾@ÛIIpÐA•KtR@pK w\AÑJ8wuArI‰sJAºH3r B6Irí?5HoÚ@ÒJj.AÐL`/8ƒCŽZ2Ð95X½4v:®U‡=øCÝX?ŠDüZ¾<5@ÅW =DáV<,GtUT?¬HYUÅ? FuUcD„GÎX2A$G–_M?FGë_µ=ÛF2avA,J–bŸCŸNoc*GàU¨dkHWZïi£FÁVGkšG¨TÚj9IbRïn[E^R¸lêDœQþk,DPPxo:B¢L uôAPKQw8DöMîuEwMŠoÙD3LœqÙBÝLwzA{K¶w„C9Mrw”BäLÍxîB¹LZwŽBLApiC²L¶l)AwJñmÔCsM£u`BJN¸vEŽQñx C³Q~t?ZL0~AL©y‹?rK3v®?4L{×?Mg@Mq¥AMº|‡@¼K{|Æ@ØMk}A N‘}¯>(Mœ|"?MN}f?þMŽ|~BxNM{ÎA`Nûx>@ïMÀ{y;L|¡<½Mý{ž?NáyjEqPuÐBNur AòMáw¯AüMg{DOæt`FgRølgHSŽmHH™TÄnZIO]èi¨YuiŠvV aâq[;ØDƒV‹A[HÍU¨D}O†ZˆE©U]d©CºXkàB>T,q¹@dP6r3=+O nÊ?YQnoL?úPVn§E`TEpbB@O¤nDíOûmX>ÓKØoñ>AKsr3DRP…qGCªPµpXBdPÝqMBjQ—q>]OFnµ@óOêpËA…PÜqo?LOÇp¸AQKpAïO¬míA)PÄoÁAÎP pøCìRÜq¯AO±rAÄL võA4OÍunBâPÑt¦BLO$rZAaMÓqmCrPžmk@ýOÑlA‰OàpÊA²OûrÇAšP4o§C¶Q¢o-D[QNsæC RTqSFgV sŒ?`Nìi¬AÜLŠcø@©IK`¢?TE|_I@3F:c{>€D¹b²:åBÀ^<ÑHf^À;ÐKò[°8ûJÀV´7ÂIÔPò:ÂIMY;¤I»RŸ<JaWW>™KÔX‡?ÒL}gƒNìu'CØMHvCB¶Mmv\BqNÜsÜ@ÚM©q<¹K½o™= Mjq´=3Lqn”BÔKio´@J!q?A/K[s¯@KJŸsœ@„I{r2AùIån‚@J mû?J>n@ðH kî=ÔDŠa!7•>ž]Ÿ0:8„Xï8>X;CU=BåGöW‚@¿GKU @ŸFZ ?ñEŠ^@bF¨[xA²F™Vf@•G5`x>»GÀd @‘J›fÌC8Pve˜E¾Uc¡EV fïB¥Q>h9C'QidHôUnNE‡R÷m†BSQ}m¬DQórâC©O'víC N\tÜAMVoÙESO qªDXMür8D^M€wÀDºMŠv¹D0MÙu­AcKPwÔCcNùu”DMrnOCåJÛkCöL°sìA|M=xŽAœM xÝA9NÉy¨A)N€?«K‘€QCN@zWB&N«uÞAÃN|z¼@šMø|¤AHN§{•BNÝ{ø?ÈJñ|x@M#~^BšNN€îAN"~ASNA|´B™N(|tCMNçzzBSN>z•BNÝ{S;ÉJµ{=ŽN»{ @ÏMåz¯EGNŸ{ñ@âJFymBßMß|r?yJ}ŠBµLv)F´QñoGôQJjðIvWlZF=[ðh½H¦cég]Šd¯k9@EASÚ@ÉF-WµC”OP^ÆCBS“aûE Z¨k AåQn=}M]m<Nfm+@;Q¢oï?_PNoqAmPÂn"D^Q¾l1DJQ¨h7CPùmÁBPNrGBÛM„qëBPq!C}Pr,AÇOSq A*P÷p"AP‘qb@•O¬q?ÍO6pB\SÉo>;ñNqj!@DPµo#@,POpRB”P¨p¨D¶QXrÀAÍOotëOp:APÄq]? N§råBµP9uC^‚@AE!\™@E_|=WAÜaº>4E fš:ÍEˆ^#;'Iþ[w9þIsX9wIjS•98GÏPK=4I!Uz;&IY=¢JÚ]<=¹Kjc>NnõO%p;HSs²HSßq—FR8n9GËTçlGˆSðlãD×PélLIUmIWVpgGJpZe3K&]±gŠL]öh~Lš]qi†R˜a´i‹[öcˆeGY ]Ì\ÿvHrŽVÙÛŠ¸g…´ÿ—(t@»]œxx…­œ“¬ló£z#gë¨Âµfµ–ˆj¹‡™kkå¾6¡°vÙ·7œ¨qGªÌ‘ÀaѤգbM¢KŠac£lÅn ¶]šuzzÃh¤ü|t½Ôžót8«»’e§‘Šb¯¦”“kEžêŽÕnÒ™vŠ q`ŒØyHZ‚ÒjœIº}7gN^|&c¬Mƒ_Et…_…BŒ*u‘]ð“è{kH˜¸};e ‡‹bz°Ì”#l»ˆš]m¼¾Kœzq ½‚šèmQ¸`—hݼ@œgqN¼#ž¨t­ì“bj£P‹`ðªq”´h¾ªØ”*i48„\“ÀvSì“zXJ¡)Œh§©Ç”~j(®a˜‘oŒ³Æà€ã¨‚•xµ¦RvoŽ®i“qoè®”Vn3«•«n¸¦ÛŒ1l¢›O}R^´…˜n£L©l–`Ä>ÚuÚ`ýFÜ~,hCSvÂ|c§š‡teW”ý~‚X!Ž×}vZ–ˆebI¢ü(gl¢ÿŽíhRœÂ„ªcÔ“9w—RH޼séI”™x‚–^¡„SlŠœnlh=“‚„h†Ža}h>’­z^t‘€uT¸–¿}ç]Σm,DlFug~?@Hj§? H?bù@°D±ZÝ@õB}YZ@wBó_Ž9B@%_y;lDû_:E;až?£F¨c…AÐJçf«D­R6pßGõZ7wÛI®\îw¸IHYÜv¶EêPÈuñD°OhvC—O(wqC+Q¦yÔAzN`x‡@€L?xÆ@ÏMäyŠ?ÒLìsU=ˆJAqö<¨JqÂ=ˆLInxtAóKLtkBÉKçsBAIKÂr@RKkn @DL>hÊ?ÙHÃeÀ>\GN`/:¯?ŽY¹1a8ÍWH5;‰Xr<_@ZY¤9†?0US=BU7=œBZ>zDO_þ@ÂE™`=Ï?Õc¢>NAëg½?CGÄgÊ?^Ea`?@Ev`Ñ?àG c€@dJüd#F¨PeµH‡W¯cùFFU#b‡C+Pú^ªDLPGcûHUelËE}R^m‹DPblÁEëO|omKþW$vøHñRpLEpOµj~CLN¸lïCãMÆpxGÀOvªHæP[w†DÌM{tl@æJOtžB%MVuæ@zJ8rŠ@.I£r,CbNùvzA4N‡x¢?æLôz{@“Lo}Ý@ÕL&HC}Nµ7C‚Oz9AkN©uDPQyCíN¼y CPÜx0AìMŒzo@àL¯}GC¡NÄ€|BIMËÀBÊM¿~‡BOe{"C¬N'{ãAøM4{šA N3{B8M„{·?rLƒ{¶<¯MSzîCgNn}ôAðJ—€ABuM.ª@•Nû~½@ÛMŽ{~@-N6v¦E#R=rK3Wìk·IöW]c¼E¼U\cFÄU¹_HIO¢Th;ºB&Q[>LH:Z¶?òOj`üA…UÛfE+Y‹l—BÑS‘k?2P]k*@UOUmŽ@ÂOEpg= MqD@`NLqŸDR—rã@ðO¸p,AÇOSq2B`OVr@D¼O&uŒCàOIsPAUOâqyAÞOnt…@}O"t×@‘O/u>ÊM'r®?'Pq±AAT·p!<çO€oA8Ryrn@¥PqÏB7PFrA"Nµq°B3QfrÎC4R”r‘@bMøp®A7OrpC PßqƒAÕLïp·@ZNÎtA Po*AßO¸pÓ@O0p @DO.ooE-RìmjCéPijuCrQk¿CÄOÚh°=%Goa™? EraZ?^C×[×@HEŠ]h@ÖDuc‚=ÃD¸d‹=žFÂ^e>ÌHy]V;ÊHX^c;”I ]µ:ÁGÖVË;IW8<}HùW´<ŒJÓ\ù>·Lgb¾?N?o•<M+x«=nM¬xvBÓN[uµBÍN q¥C·OûoyE[RYuÜFvR™tÕGVT oIOZn.HGY´mG‚TÜl GRÛ`DeYéb]f™U¬_dbûfPfa[ú‰°yU^§»’Êoĸkœ±t ³í–èj°¤Žvd󦫑Ãj´°•zk‹¸œ˜'k1À< Uxÿµš2uC¦Ž>gͤ£kר‘™jU¬“ o¸Sœ{yîÁi¥B|]¼žËo^¬‘5`™£~Dct¢“’ás€¤,–|~x«û™/„¡R’†x1¢~H^ùnöS[z$b_Rj|¨_¯PIz7_O.‚þla`ÿ‡—qee^Šq%`™— †.db§Ž‘Ÿdþ¹˜™²d„¿e›åhv¹·•Ecϵ[“ c`º&˜Lmz¶—pió«©‘óeؤ; fÏ®Š–]q®²šJu‰¦ÕXn”ý„Hi”™¿¤jœO…Œlr¥q’gA±È™Yky»P£Ø}¶jž†~S²’—fpOµÓ–ÿjúµ\–zhôœ&…Ce@“xƒZ#åsu]¤Œ‡w¥d;“'‚ÅmôŒðwgò€ŠjÊ\W‘!}-h¡Únݡߛin™ˆgaš;ˆ¨a~žžŠbÍ#ˆÆ_ã›1…ÿd·•†}(a¾‘NxÚScŸªŒˆj¬`šÄwŸ¢ë“§o*ã€îa]€u«RC…ÝtêJ_Š;n™L r„VŒœŠ„Œj(¨¶‘¡sÑ¡£‹Öl0—Z€Ùdà{šb”„Ïlᑆ€÷ló†rtñe¦ƒ'uÔb’Œ†ƒ%kŒ=…Úmãƒv|Ds·ö~̆z ¹šÊyC€¶ž¸z(~‡œV{–~¡šïzV~ô—ðy×{É”xqJt¯£USbP}ƒK]MåhxCåCâcA»Fòfo@YGÈafA¾F¾_{AÅE _ž@ DÄ_u>mBu_Å>6Faü>(GJa?ÅF§c+A]Kóe EýR§oH‚[Ëy°G’YZz¢FùRöw-DOwÊ?¾JvT@ÝLnv“@%O%vÈBP‰uA™Mìti?,Møs3C¢P*sS@öLíq?JKpt?ªLñl>âLkP?ÏM4ræ>RL½ws>KÏyR?¶JÄxj>¸Iwtï=KÀp6?mLªj:@·HÁcd>ðE’V3<R.3Ï: Vu40;†W;ý@™Wæ:¸?ÛU»<>VU‡@_C`õ<Cbe=ýBßc@=JAqfç?ÉC¸h_=ÆBi®>‘Dûi¿?ÊDÒb4BIFbË>èIpbMCNNýcöGVdêFT \ÒF³QqX GÖQŠaŸH%VÙi÷GŠTkeDnOÒg(D‘NgUH#UtoLG†Tùp±ClOÊqBvN4r‚BÒNMsùAENwu‹GoPïyÈTÒZ_}oBNM¡pv@¯Kq=bIuAmKéwˆ@êKåu°EáOx}@ÌL~xPA’M€z÷A`MµzA^K,zBÐMòyýAÞM¾y4BMBz–CrNåy²BfO‚wkA¡OÖ{á>¬Mû~">€K €B M›‚Ž@”KJ}¥DÎO"zA&N»xËAlN¤z¶BOÕztBÕM5{BôM{ÉA\Oüzè@òL¬|©CeMpâ=`Lv|›>N±{?*Nz~?7OJuûCAQÿoþCRfTG¬XÈdcC|ScžA_Pè[TAÛHR½7œ?OÔ7‘D½U¦:LT\¼B&S\dôC Pd@E;T©hBDOþlƒ?BNõl´D•P9sõ? O±u=úLvt’A6P2xK@=NxAÞNyµ@ËNvfBO¤t'>ÏLrBPŸrÊ=N˜rt@˜O–uY<ÇLÃrgAGOr4BPÒq‰?€P'q¹?~Póp¢?sPZq¡@AP6s‚@ENœuwCƒNÄuÎB5P8pþBSPølâA–NDkàB%P_nLB Prò@”LUs@»L”uŽ@ OÉp=BSP)nÜBEPSklAZO¬ftCRTi6C‹R*híCReÎBN†a¿<^BÃ`†?CÈaI@šDÓ^?zE³^U>ÀDYaß=åEc>íGÀ_ø;„Gi]><òH4` ;õHÂ_Ø8>G©[G<JÃY›;ÁIæX™<™J \³?#LÀ`Ð:LJnl»ÞF?fÇ?[J–h%EøQýq”J(]QzÇH@Z²z)E™QŠxÜBÀN8w"CO…xSAvN-yò>rMÞvèAöNZuSBíNærB„O{oí@†OûlÒ?*M2ksA{Løj@jKÈk?6LVpH>íKIq?jLu>VK©zc=5Jwzä=JètI?3L#pB­OÿiöEÛO…fW>‘EW-6xgBáY°@•Eø] >"DF] >E2a‘@¶F¸e’>‡J²cäAòO)f·FâX+dÇF9XÍ^íA O]Y\EÆQPe1I{YFj%HPVqiýCÃP-h:?›Møfè>%NƒlI?»NŠr§>ƒMÞvMøu-BFM0wËBúLxÇAÍLŒxz@1M#x’BßMÎzˆ@¨J{hB—MÂz¸BŽN~z BÜMœ{pA NE}VAšN*N÷´>PMã‚t@"MD||B×MHw£B NTw‚@JMˆwƒBNÿy]D­M#}•@¢L){e@yNbz>@ïMÀ{b@NF~A‚O-{)AÌO:{&A]NÙ{êBÆOãtòFÑR©mrFÐS;g$FëXød_CrUlb²EqRâYìB=K6RÃ4œH§^ñBµLó_ºEÄMlcD”N²gŸAôNŒm‘BßO†n×DQLqÖCåP»vBáO|uhCQCtDÙOÍvpAþNÐwšA„OctÎ@ÍO¹q8B^Qþq÷AšPqŒMrÑ?ìM xbB,OWsD\P8mˆCÓPmyCôPjB)QŽh½AåPro¦@ûNýp“AuO®pöCûQzoãBhPSjßF•Q k™A¼M@d[C7QùeC0Tõg³>½Oñ^E@]KyY¾=Cµ^â>»Bé` AËEÓ[Þ=©E¯Y¿>€FÌa=;Eb£= G`˜;‘Gj[×=Iá\D?dK `¶;°IG`8<åI‡[¿9¯HV3=“JBYWAJMö`>M”mŸ>aN¤q°CüOîk4AÄN]dC¤P‘j;DPGq;F×O„wnCÆMHv>FiQÁqSFÞQIlF–Ržn^F+T8nÅJaVfk­LÔVy^×GTStXúEŽT7bßK7]:k‚NÎ^ƒkÆPœ_ÃmåJ±Z¿l"L‡b¼hLdÊgÓe­vtîZGs‹Cg)³œ™iĶٙhï±`”[júªujeÙ®±“dŸµ0—fi¬· ™FoÞ³—™œ!sá³nšät³š x¯à™"9¯&šÕ¡¹Ì ê|‹¿“§>´ºÞ Ð{š´š´q¹Cœ¡o¿yÿqM›Ò“J} Ž*{v]1~alSR¾ˆ}k-“öˆŠr’…ÿlíê‚ãmF˜í‹Zw‡0ŽÑv:œê‰mm,—E„Ä`¢’ê~þW™Ÿ‡/eW¢–“~u%¡1oqý˜9ÚcX“£|M[ޢ듀sÛ³( ‘}H©¥—Äwû”£‚ iÔ‡²wX_·wPHˆÒyÚD_›h„R}©V’JiQ§¿ j­Ÿsˆ»k•”u~då—܇|l7›øŒøo[™ˆ°k^˜¼…ÁiR˜)‡BjH–ë…lË’ƒ‡qSŠÄÉ}m„—€k‘€Õ­™®}…~c›É{~>›rz‘}Á–É{n{½“wût”y_TiƈQB’JzqkE«F½ey@Dö_tìBµ`?³D“b±@¬GªgB?ÅIk›EQêr¡I+\òtJq]ÊvCBPÉuSB NFvÀ=aKJu¼=ZL#yè?èM[|&@Max}@9Nôs$@‡O-n–AÕPÀk÷?ŸLQj!E¸LÆk¥?.Jl>pJÜp>K×qG@“LUtÏ?‘Kèxx=Jux=ƒJçrI?|LWnÛBDQÎh„?€N>b+=âBôU%477GS”5^7³U¯:š=”U¾:@GVª<B^Zé?ÑDÚ[lBnHÐZ£@HW]Ù>G{]Ú<öE>bý?,FÏaœ?D¶aþA‚Fd…A,GaµCÆI;al?KÑaEaR/fPHß[/eØDVO_´D{QganDQ•eíH†YñlGW”m‚E°SˆnB$P…mÞAwN[pFA8NÏt¨?ïMèt~B§O=t|BvOruÞB¼O7y½B›N9xTFüOrtFÑOñpõEP/r-JüV*vJqW«wÑC:OêvaCêMfy5BCLùzuBoM‘{=AùL|ÏAùL"}B»M¿y:C NlwçAìMŠy6NÑx>¡NÛx6? O}|¿;~Mi~ý?ÛM|‚@JMˆw¸AñMÒugAÞM¯xeAƒM´zA6KúzÿCšN7|§?.NFy@A3O»zÊýM¡zKAçN{zpAM½wëEšPGs2DjQXl˜DSuf4EoX~e£D&Xô` CñQºQ BPN´Q'4Y=T|7+@]W?QFÿaCHÉ`.@VEµbËCeKéiAK1lnB÷Nrp¸DQÛq¸CöO{rµD|PÅq:ItTnpWDÅO¢pPCBOtu’@aO®r@?‘P&qéAŸQÈpäAuPpLB Pr&D¡Pâu`EPÊsÚDN9p•GÕOålÊB¡Pimå>ªPän1BtQVoBÎPÂsƒ@eO¨xC&PFrIFRˆm¿B©O{m‡B~PlAIQh5A&Qdl >Pho¨AÛPÙoŒAP¬lgARl¹BkP†jtB˜OÃgÑC™P `BR-a&9£LY\6fGZ3@I=^»=ÉJå];9wIZN<ÿI(X&<¶JU-?ÛLœ^9?ÉMFl†=GMpV?NGjÜAÚN=giCP`n¡C/OXqïF¥N—w/BÈJïyBCSN-wpDPÅqDQŽnnF‚RknHÊQ²iqJ7SÍ^ýD„P=VuE9T½`IMZ"iºK^ÃlÜL–^8kNù^k¯V]a0hhd1hDarl.fâX “Œ€²b3¬É•xi ²u—Wh0°•“•iϬÎzh±=•ÏgIºJ›/læ¹ášñn>¶Õšðr°—Œm˳]—hkR´¸—ln%¸”•bmŠ»2–YrÃçŸË‚$À œD‚ò±£’õrº¢Á†6dAžÇ‡µbò¶£€~ÎÁf±ÅˆÇ µ‘ÃŰ²“*µ=¢<ˆ1£ý–@~]‘9ˆRq]ƒwuj¸|7nXçŒS€åi¬œ’®{"³¤·ûÁ£Ûv«ÄŠ¢òo)ÀŸdmX¾¥pæºÁ™»n¯ÁHŸ_x Â_žÐr‚¶Ù•Vg±¬r“†hp¬t–Ân¶¯m˜°q£´œƒtf¹¹Kt»TžÀx˸rž ‚»ø¢†b¾à¦ñ~–Ão¬1x­©ë‚½»ó{ ·ù—¿qí½«œv©œŒ“Q{íŽ<} Zô„¸rRM‰{g’dž@s£˜Êu —5‹Ônå’©ƒeÚ“G]a𘊃Ag£ì‹iTšˆ']Éšo‰¶a.¥k–qx*£½‘rN—‘}îWà“ˆ{S£X“Çp÷µ%¢-²®/™6€ ž&‰~‹ãt\j'zÀ^’L„7m¾H_ž6Œa8­Ý•\h§’dTŸÁ†‡fó—̃Œhõ™¦Šn¯Ÿ4‘u± ÍŽÛs ßŠøpš„m¦’*Iq¼Ž‡}Wz‹K€`†í„#€ß–©~:~g›ë{Æ|“™þzå|˜þwÇ{ß–ExÙzA•Ÿnq¬½KÂXð={G>r—CÁF‚jg?/Dc9¸@ü^ÍŒLuí@¡NÌrA N¨oS@ÊKo0@•J»nA@aL—o¯?WM…p>šK¤q~>˜Ju×?…K@w>SK~të=‹JNrÔ=ÅIKm?$J²d=<ÒFdVÕ9(?§PP69ïOA7j9èSÝ<·>ÎV8;¿?@WC=uA"Y@Co\´BpFÉZäAzI$Và=]G³Xn<áE7_š:iCp[AÜF‹_ú@ F_’DPI5^ABJHËYáA0J™Z?BN^7G½U©exCÓQý`¯CnP£aWDKPMfíG V”pE‘TrDðQ¼qDÄPöpKB•Nq÷=EKËqz@¯MDs+COÍtB.N wB6N—yÍ@ÊNöwNAóNKtŒFiP‹u¿CNkr¾EÇO™t DÜN«vBjN„vC•Näy7AÜL‹~MBnM£} BQMézÈBN©{hBðM½x[CNßtËB M½uáBæM3z@{M>zê=^MÑvyBO&tcAÌNuÖ=½Ntx>¡NÛxÂ@ŒNƒw˜AKNÝuðA…NùwîANïx›C‹NIy°AÌM¯x2>kL#xh@N¾z @[Mt{?AM{mC$OÚ{¦ANïx+D*Q“vù?úP³s˜BÿSÞnûBU­hZ>¯Qba B¶QDZÆA§M3X4£>*X4=Di_‘A[G¡_¿BœG`«BMH3bd<·FTd"DÑM°l¿D1P•s‡BOÈr:DÁPÃpÍF—Rxo¬E¶Q=lFbP n>>XKôn™@¥N%qª@>P)qU@P¶pxAœOàoÛBÑO”pêCÀOoqèEÃOWrªDXMüräC@M¤n†CÿO"lë@¼Oßo B¥P§p‡CER”r/? Ms BˆMßqGD¡O£q—CbO?t^?ÌM(p+BêP¦n]CRlmØEøUpAhPŽoÔ@O$n©>ËO…lMB·RÍj?A PÉhÌ@P<[ZAžO4XÞ7œLOWa8šG\a=XE/a¾=°Cûb?lEdË>ÉB¶`õCäFäd:@GYf‡=‡G_?@2JT[P@zG˜\w?H \›>kJJZ=dJ¡X=ÐJU/=éK@SE?EM©]¾>~LÔh¡=%KoSA˜NYptB”NÛrBiNvtFF”PïtóC`NÕwÚAßMÏ{²=€LUxÃ@˜N@uD­PŸsG|Rîq9FïPëiÍHÄR^7F”RW~DUV¾`VH—^«k—I+^èlN]blÄM¨^Èh\LrZf]^KdndÜnSaOTá‹ |Þ[,¢Â‘ñf\°Ü˜_mš±ó–ëlX©©Ïe ®.”{l𴑘(oŸ¹‰›òqƒºe.sÒ·¤›oÙ·z™sm+·G˜°f¸¸#™\aµú’ïa]¿eš•xø¼ª™u®CŽ1kp™C{3X™„‚Z`G¶PŸ\xAų°‚CÆè¯mˆÅÃɭ㌃ÁX­í¡·Ð¢|„_¡“vˆŽ‹€~daƒqI~‘HWôž¬Žèi¥¶jïvÜÆe¨y—É„©¢uPÆ¿¤s‚Á)%qð» š´oa¿Ëay'ÞÌy¶i”uhê¦‰Ž»b­¥ ‘>j®V—tU´ƒš¾v½jžvwÏÁƒ¡ªxÀëŸ}ÖÁ§¦È…âÅ;­G…QȽ®„¬Ç3­s‡Yĺ¥Ú…ºÁÍŸ{ÁÃÍ Ex“Óˆ«kK…ßqÌGÕ†Œo£Gý‡Ks:Ỹeq|`jƒp°Xé¿|a¾”¶@c.—¸€Ç_;ÿ…,bå¦Y“Oml¢Avf¢š ‡‡`î…¨oež2úl™“‹{“N;“NzÒF¡¦ei߫ޘt¨¦)’Àol ”‹”xÁoxuj­~«^*Q²ˆpÿY" ìŒShƲLšÝq)§[¸eÚœþƒoaþ”*€lcÀ–e‡‰i™¦˜}ª¨—s}&ž`‰`pŘ„6o•¥ƒŠr›§O}²ˆÃ~4ŒŒ‚PšÄ}ýœµ|u€—™¯}õ€/–F{áz¨“@uøu¥^bÝe`ƒ*B×NŒ{¥9¿F¡sCŠGÓkB>R@Æ^L<ð>²^‚<@ aB®E=_ BîF \Š?¨E%[…@4FÝY8AmFÀV-@GÇV°@ÉF…^å?9I6eÃEæO2k¢I¶Vst>FŽRwÊ>*MÒvíB OTyžC#O¸w±C”OõvêCDO‚v"BŸM-upCèNiuAtMÞsM@NKri@„JÆp%@´Kço¡>óK¥nâ?±L0nB?yK¦pä>…Jõr¯>ôK‰r”?Mr@FK¨p>qHk[=FHøb5¢@-SL76=VO,7W<\Q,9è=UV¨:?„XÌÏDþ[z@ÕDBaò@ýDaà?¿F^/>"F‰\€=SEÍ\ž>1E¤[ü@zFå]wC¿GÄ]&B$GY¸AGnXØ?÷E™ZP>H ]@Má_Ë@ËN`BšOFa ? Nif7G¨TèmåDñS=ràAÖOúqæDaP;tICOXr\BqNÜsAÄL v¨@ÐJ8xÆBÜKe|…A÷K»{ŽB)O yH5UgzcLXß{¥HüRÏv6E…Ow@ L›yäARN/yÒBNdyñ@@LÈ|ÅAˆM÷{4BÿM™zfA3Nu|ìAœNL{ûBÖNyxDN?ybE@N:|8ANðy0BVO§v¦CýNrqCO3tAAPîu=AžP,ví@dNBvW?ÏKdt,A¶L/t BNEv!BNÅwtANywHAÁNmybBòP{|Š?¿M z|@jN–zP@ÑNL|@XN˜{7AÜNõv7@±P{H>vP ošCÄR6h÷AÆQ™f¦>ôOd´?aK¨aÝ<8C]>ÙB€]@DMGY_ÇD‚Gfa¯@F{`Ò; G\VBÒM'i4ANÌrÆAùP6ušB&Q¿p­BŽPBp´C¯PèomC Pîk=E9R¬k¨B¿O×ju?§N¥n¶?šN±p›?ØNIoÙB‹PpâCòO:pvCÊNÎm H£Q·s)D¸P7s GŸSs°<ÕK/pµCPàqBPrÐAÄN¥r…DíN›s DÜN«vC@†L–v=@uMsAO£qBYPip‰CuQ#mÎA4P„m\@:O¼m=¶O«lh<¦O`j}<êM­dˆ9öMTX‚9OT+:ÙM‹UÌBè`]B{DNd¹ADE_`y@ùA²^À>-C]`‚=IFê^>GC^æ=éC ]ù>”E#X/C KYI@õK&W4=îJ¼S(>´LaR5BÔO¬\òC}O²lþ>JQpDúMtØA˜MÇu@¯Lís”BhO¥uš=³L/y‡@hNt|@@NExg?ÏMùw&A¦O+z…D+R×s—FT™jÉD„QòXéD£R TÖDEW]Z¡HÚa2j#Iz`CjOWbFjÑM´\úhBP]Yxgß^{cDaÐgJiyTœ†’{ÉXf  “¯kÏ­†˜Sož­Ô”§j"ªf’uj«¤`mAª•¡n!´˜|pà¸êšqn"»&£m¥½éœnnj¿h›\ij¾Yša%¼R™¸a÷ÁtÇos¾Ù™’oüµv“l6 ˜…]¼ûˆ×cú­ç—r¨½¤0zºÁ{¨&‚¿¡¦X‰ ÂÅ«‘{Ä®­ìг†Ÿû…° — ±žBnbS›W˜¡ÄˆÎV®™”eêÄŽ¦HwµÉï«ùxÖÇù¦£wÒ»G˜hÞ±¦‘k` ¶–dlɽ˜Kw¥²’ko£åŒb=£‡ih®·˜(tš´nš†vº»JúxÝÁA¢°xÔä#{ºÆE¨J†tÉЬ#‰%ͳ;ŠèÌV³ UËP¯ÏŒ–É ª<ƒEÉ]§ûz?‘Vq`‘Š,wXQ3‡‡m/I=¥dÀJyñ\~MávÅ[¶Lâ„o¡Tš ‰k1¢Mõj£¢j‹&aþ¥ˆd® PŠÔ`t–ö~$X+•Ï`M˜…‰“là•†bšN…qW颣‘êdù¦¶”iÊžIŠœZYšç…X]Ñ•ÄÄdêˆwpf¿”yài#¥ƒ‘Ëp ¯r–lߢš‹Ô\?—r~îUðŽyý\“ê‚9g¥¦¿—‘x®œ{‰ž±woO˜š…_p§’¶ƒAwå×}‚…™~ 9%o™É{~>›»{&€¢˜Ú}†”ú~?|Óâ{{s¸‹¶\z^9zÜ@(Kv¥<àFŒrÈAsEheÕ@™@XiA±@Z“B,D¬aŒA¦D|`NApEÈ]³?jF=\¶AŸHÎZÂ@ FEX@ºE)^ò>VFb`=>§HBc@ôL(j«F¬R¦u¯CõP˜x?MÓv5@ÁM,wŽ@ƒNvBòN'u®A>Nv©@‡Mìu}@9Nôs`@¥MªsT@ïK2r@½Jøoò@UL×p.AwL°qA!LØqå?IKÛp¥?üKñp,?FM«o^=~KOm¯?±Iõl’@Gbge@fDÏ]+8³?6R~4Ü9ÃO6Ç:@SŠ9M?ëV4;ýAMYÉ;µBÑYe>¦F]µAEHôaZ>uDaö>žEä` >÷Eî\¦?…FØ]4@ÇF_@•E#_R?ªCC^o@5EVZ‹AyF‰Z-??D½\X=>FO]¯?‹J‹^×@Nk^È>ÞO$[w@ôOk\E‰RlgõFYT†pìCÒN(sÖE°Nu±B+N÷pÕCáNôrVBIKëvBEÛL¥|DLç|EyMY}ÔC­N%zÍE]Py¥I‘RçyDGQJv­BkN„up>fLËy >OMàxêBN¡xÏB*M¶z(AnM‚{I?èMmy\@`Nýz­AaN {VAN‰yÂBBN?z·A‹MzdBZPz’A.Owx@ˆMûwBNNüx†ArNúxè@WN†x­@.MïwfD1N>x#BNyvtB»Nöu°EëPÙw\A›NOvfAÕOÁx<ßMAx\A›NOvdAÀN\wú@rP…{AšOq|ªB@ObzBPVvGöTYn½FS„eoCtQjfá?ÕOocA>äI›\yADãV_@EM]}@¿Bþ_±BZDdÒ@ Hãb•>MH e ADLíj2@+MÒtBªPÅt1B3P7qø>kL:së@òK?sï@>M kâK‰rD‹Opr®A7OrBVO½riCfOrt¡?dKfvhBðM½xMEÂOguL=ñK¢p,AÇOSq5@ªO,mÝAÑOàm¬AìOym<@äO“kg:mMõfð9]NÏ`È;’Of[þ9 NW28TJvU´=|GZ†@¿BÎ]‘AÇCÆ_?.Ep_â@ñE [€A9EcZŒ?†EO^¯<ÑE8_f> FTe=·A^9C°F>Za?–GjVµ?JøV·9[JZRÅ;~LáPWA¥PZŽCÃP6kQBvMßq—@nKèp2?“KrÐBPàrÖ?òNqt[ASPº{'B8MsySDIOÅwGD$O·v2FoPâszE&Rpr;GSdlD1PÈTÁD PÖRíD©TtUÓG`^DfOelVQ˜cŸh²M][ùf‰R÷]tgª]u\ï^XcÛ_¯Rÿ~Är­Vd—h‰†h}¨¯•sm¬ ”/lªØ’i@«ù’Vl”¬8•ÞoIJ¼–@o¸Å˜^kEº=›m?¼›nÒ½V› h ¿âh§¿OžRjóÂJ ‚mÁ$nż™¤mT³Þ”l §(Íg'²í—‹q½äž×{F¶ š`së¶7œµ{{ÃЫlÈ•²l’“½ ­˜3³)§J±ÈžƒÛ§†–·tš…dZh ›ˆ©Zo»rœâp‰Éb«}|ÇǨ¥jzµ’)eg§¹ˆñWm³ñ“XhN¶è–goM®z“ljŒ¡޲e° Î#k@¬©—“sHµ³š€tùºÙœyx<¾yžæurÄD£©wÈͦý€êÌz­‰Î²½Šòͳ«‹RÍí°ŒxÌq®¡ˆKËˬ€f v“vÅ ð’†v§x£Z‡~}`ŸH›yÙ]#M{ f7S‚‚@p7U˜Î‡¯b¬¡ ‘fnâ†ñXQ´ƒX朄)[T–«|úTÒ—ü€Ï]¢¯’Ïx ª‡™‚K§¸“‚p¸¬––Wkب7”ffšdƒ˜P”{|#N!–B¡b蔇€m0›aˆs^¥íŸmÄ«„’Deä¡t‰¨U—ù€ÙV Ž£zÙ_Õ‹ y+^â•Jƒ°`”—…%b—Ò„im‚“‚mÇŽ"€ty‚ŠC„̓¢€¥ô~²–ú|„~BšT~©€é™ì|K7”ã~…t“Ã||ň‚\ã[1wÑAìHt–=‡FzoC(G¬b›@>AyX÷C¦D^ C¦E¯_ˆBóFŸ`Ä@ÐE6\ß@šF‹XÙ?àFéZ½@±F_š@EF `iA¨G`:@PG^by=GofûDZPßmrFúRt}@9Nôs @NÒw)AÌO:{B}OÆy.D;P>v;H”T~s?CøPsD?‘MÃq+AeMrmALÍo:@‡JøpÀ?vJt/ACLÌv@Lvc? LÖt-?€Lnr/@ßL­pA!JnÒ@_G6e¡=¬A-Y+5)91S½48—Th8*;ëV:?ÅVÁ:®AÞW^:pA\\8=ÅC-_˜?®FAas>E`í=”Et\7>¢FÓX?)GPZC?–F×[d@åE˜^Ñ>`DìbÁ?DE~] AsFRYZAGŸX BjIP[N>RGã\K<’H÷[ƒ<êLYò8äKÛX/GRfmJ‰V¸o–GGQ­thD@NìsAÕMko?BiM/nìB¬I×sæBI wäCõJbx F_Mœx:BMVvÈE/O+vwFL…svD/KStYORy˜AõLÎy}FÐO@{$D>O=ztB©O9z!>ÑNƒyE>wNwy@NŠzØ?¾L²yAWM@z[CgN^|áD—N{/AØL&y?ßMøwêAêNwB‡MÖwøBLNÇwàA¸NÓx.BËNáy±D›OGyNAmMryœ?úMZ|8AOV{±@ÀN]x C:Q§söFVÌj,EÃQFc¹CQ-fB·OæbM@…K±ZÝ@äFÆX—?8DX^@?7BuaŸApDßeÓBµEf¶=H+fÜ@íJ•mÕ@L sèA+NpqB™OˆpÑ@WLðtò?J…rŸBÀNgoÈDQpgDØPrÎC¼Pq:FXRr1DjR’pÎBNRRqü@âOëpVBFP^n‰?ßOqí<)NMwb;6L_wë@pNt-Pc!<êQM^6=lPXY9„JëT•ØEOd4@ëF„^ÿ>éEûWà>©F \[<F ^g>ÛE€dþ<ÞAT] >EÝWQ=YFöW(<÷GQW¦<íJçTv;MUQ÷<´MkYu?2N d?„MEn«C\P-t2@ÁMCsÈ@qN&r¯AO±r±@ÀN]xO?•LryŸBNîwbBòMÒtD×O¯rµFØRp,GËTcEúPS5DZO}Q»BîP˜TƒF°X‡còIÄ`ÆkãK&a;j1M:]¸eQ?]©dx\`‚b`]ÈYunVŽd€¢h˜£Æ”Mx¬@•¨lå°æ–ùk&¯e—úm$®2– o²°—¢ox·ˆ—apýº°™2oܼîš_nÖ¿okæÁ+¢0nܾ ž;gƒÃ, ãkŽÃ#ŸÝoÍÀAœqKÀ™œu©¼ºšƒr½Xœ.ta¿‰ž¢yâ¯a“¦hΧgcü¿m¥”€4ÊÚ³§ÒÓÁQ£OÓBÄ•ªJÉ.´‰’¦Äɬó‹=§”àq1œÙ„ùW#±–æfŸÅ¤w4É£¥ö}Ô´ß‘™h4¦‡^Uï²ï–]kc´ÔšòqO©À“$kœŸÖŽ|i”œØ‹*j4¤Ø‘‘k3³»™ÏlN·›No¹€šúmÿTmƬ¡,xƒËtª\uÌÕ®DƒöÍ‘°‰®ÎJ¯AŒ[Ϊ®ž†ŽÏç²Ü…*«åšQƒº¬B›^¸–é®`}–b‹G®~1häS؆$uRbȇ‡vÄYc’Q©Xœ¶‰‹a— Ž[¹“Ï|ªV‹™ €aWŸ2|WR ÊƒÁ]ç«|—¤wö²Kœ~/®¶• uð®u•2p•±Š˜q©à’i} ¸ŠHaäœ#†ña±œœ†£fQ ÒŒðm+¥~‘Òk¦ÄŽX^Ù¡ZŠXYþ˜j†=b©J}©d‡‰uÁcމr#f Œ'u©iמ}Hq‰Wyõno…cz”xä…#—ˆ“~~{€$˜V}¶p˜æ|¦€¦—Dz)~H•×vwz/“¤lóo»†íTÍUáue?#Gtä>ÞFaoCA§C$a¦A@Ì\?CB¹]ŠCjE^³?ÚE(`e=3F³_@SH`Ì@¾IƒdÏAI°gRBYGC^ýDH†UEùHþZ%B3K]e EO´j-D%Qfpü@1Niu7<«KdyZ…L­tLCÑN(tB MÈpâ?0Kuq·>Kšq–B¢KpBNJ–oj@¼KNot@µLHqÞ8IIp@¶I*lƒ?F‘aÛ9¿<‚\ú3¶69ZO5­9A]9‡>µ\ô;+@UW=yASYœ>WDP_&AGÈ]P@zG˜\BžHÏ^:?gF6]O?·GdZ—B)K\VÖAÁHyT@`E™Vº>WEÙ^Í<D\ÿ@üF.ZíAÛFÕV¬AàF9WAEc]Æ@ºF†\;JêWò7gKZ^.B„OÁhñH—VíqdHÈVÊs™C8P sl>/MPsiCœN9wÔGßMÄxbF¼LÈyELMx8DöMîu;BOrJôP®r„K­SEx—F™Qdxz>L v¥?N8x>M¡xAOOfv5AéN³tV@ðMÒwù>‹MDv}BnN·u”BÔM$y÷AoL]zA|MN{Í>"N|±??Oi~¢AWQ!}^A=OSz5AkN”y¤C/Oay!BMfxáD¦N½xŒ?…L–w-A²Oæw\@“Nêw±AÜLYxC>Nûw9D>O,xäBfNEŸZÇ>˜Bä_]A]F€dm?LEFdBãF:h_A¥H¢hE‰NÞnQB]MzrÜA½MÞp&BMNõp AŸLïrCA¯Mt³B¢OûqCÚOr7HXTuEîQdráCáPrDQrzAáPr4B1QBu÷>GO“qd>òOBr;¸M¤rŽ=NorkD{QrÚCWPìqºA¥OTqÊBÍO{l¾@ÍN¨k6B¼PèqTC¾QrA*Opp>„Lîob>°Nr B”PÎn‡AOÊn•EÅOel(DPªeÍ?ÙP‡`—A¬Wú_ÇCžSVç@ÿLRæ?G£UC@,EëZÏ@^Dk_¨>õD i—<Eöi³>ÿG—b*>óG)]?öH‹\æ?8Gò\‹>ºE€\½<E`WU>ûFçUÜ:NG4U=MJ8YÊ7ñHUk:rKR">ŸL*S[>ƒLï]@ƒO­rÄ>N)wt=ÛLªt×BO%sCíNÀskAN½ys@¼L |­A‘Kz_F}OiuÈFkRumF“S½mèFpS¸aœCP‰R~COsOÊD{RÓRF&XÍ_IO_n¦Hl^ªqvK^Âl(Pç]­d Wº^ dVa÷U^·iÎ]!V„ˆâ{ah¨U˜œ{±°ï—Gn—±– nø°C˜àr´¯À—Àpì±Oš¯p‹¸H›¹j³º¥›jJ½Ü›o1¿ ió¿gž%m—Â]¡ÉpNÄ1¡7oÂÂÁž©nHÀØ›7oÀÃ#ž.r\ÃèœÓoªÂq©qlÄ2¡íy³²K”+g¯ªì‡a½ ŸRy!ʱ¯XˆÕÞåÈ£ªøáÃÊǬRÓª¶Íò¯#†_µûšnu½ dŠNYuª]¢YMÃ4 ªr>Ç’£z>»W˜kƲ꒗^e´Ýš·k³¯›ýqÄ¢Y¿h>O¤fPœHŒ9e£L‘ÿc_­,—8d±Ô—Nh”³—Éi »îšèiZÃúž„m‚ȧ§uòËɯž}r⫇VÏ“¯nŠ%ÑQ±*‰qÑͲ…ˆ¶¥c•ÿy1«¹–2{x›„)c‰ˆ]tvVó‚8p?X<ˆ¨sµ\ …nPSP‡Òn/P •¢} ^³’Ü|[åp~¯]Uœê…Ïb UƒYE¤÷‘¾n’²›Ôwg´/›twë©¶‘ph¨e6po¯U—Èr¯—÷m£  б_fšY€ýX¢›Ê€õ[ó…“^" “‹Iaþ£TÍ]a¤"Œ]Ê ‹ÂjW}iã×nFXŠxtì`cˆëwWeK‡ìwÓi4„!w•nm{jv'}Ð|—|ŽŠL|eÚ”6} €é˜U}Í~>—V|~w–´zʀϕv}M€jEukz„ÔOXR¸r¯A-I¼tâ=ŸC¬nAÑ@Âdk@@_CßD•`ABãDÀ_A?Eq_Ð=RFT`Ž<ÖF$aÖ>nHÞe„BJjD4IÅ]‚FiI(TF%IB\uA+Ieâ@nMÚiŸF÷RÔsC€P;v4@ÔNxÓ@÷OÀxdCÓD_`e;+D_[£?óFôU|A¸FÖS›CHVu?~GWø@cIC[@ FÐ[e? Cg]Œ@Eã_5@ºBe\:@YCKZÃ:¢EbVF92KÆ]/?™N(k…FÝU5t¥GXÒpòEñR¶p£BØOãtç?ÞMÔx¹BžM'z…B±LzCrM²xÁBDNRv>øO¨r`L^/|öu{,¿i§oÿ‰?pKsó:5H·t~?fM|D>,N[wåBµP9uB½MÔu©BòL}tDC`NÜržC#O¸w\AMª{[@ëLYû=»MÉDA’P!€Á>O{{AHOìyò>+L‹xÕC,O.yFB@Nw•BÑN7wƒAäN[v¼?qO‰uð?hNšu-BÄM:vHD=OvDN)tYEOØy DwMm€I>nIÔ€¬AýM±‚©?Oö}^A´N¡yjBXPtyEýSj]FËVm^€DRÍYïEÕP”a‹FØQç_·>ÏF@[ @HD^aKB7G§cƒ@éF‰d”@8HŠhÜAbKi EËP)oÄEAQ uÜCOv @àL¹rÀERP[w:AúM\tSBíNærB˜Obr^C¸P\r¦E#R=ró?üLRrcE¥Pðu­B‘PPr‰>™O8rˆ@PÎqßAëQqp>¬N pñAP^pºB0PlñB˜P¶qÑAQDvX<ÂMlÇB©Q.oè@ÕOEoCˆPÜoöBvO}nÞ@­N‹pO=ãMtv[?O£t%ASOümC"P!kÒAÖOdi˜@—PýeÙCIWØaEVWž?ÄLsQ±>ÿD„S0@CãW›AgDÛ_L=ñA(j¬<„Cºgç>ÕG,a’;ŒFE^“>-G¬_>JE7^M>ËE\“@fHïYy=G~T>7J³R¤>ÝLeU05#G“T™<„JÙU¯?uLÉV8AÚL²_a@MMÅqnC)NÙyŸBM˜wqA’M…tC±N\u:C8N¶{¸A¸M°~RCM±}ƒBÀK¬yÃBdOsu^FSHkóFR)\+D¶PmSQB¦O P!?IOèNB TV[ñF\Y¶gtK _ rIKd^3mÖOt_Ûe¦T~` iQ^sVÖ_ÏnUQó‡z†f©—{uÀ³µ—lñ°Ã””oÕ¯I˜ }lµÕŸy„]»Î¢}’Äô¦€~¡^{õÀ¢§{*À»žƒrSÀBžør×ň¦@x·ÈÓ©Öubĸ£qùÀ—žüoÃôž›oÅÂ{pjsÁVÒnÏÄš¢Àyß¿OžÎt†¼=õiS¿}Ÿ¹k É­ªÜ}­Öß¹,’¸Øì¹’4Îd®æ…ÊÌD«ð‚u¿£¡â}ʯ:—m ·î”a`#Ä Õp¾ÄÊ¡u­¿¯nŽ»D›Ád^¸ïœUiF­_––kpš½…^_Å—ÿ†÷_=›aŒ(^’¢;’]©ã”`ݪ7”ÝfϪ)“bfü´– fÓÀ‰œ(mnȦšt—ɲ¬±y-Ο²†=Ðè²Å‡ØÑ)´ ‰­Í°Ç‹ð£ìej'¢AŽxjÀ™G„c”ˆzY‰~vò]IˆtK\Ÿ†íoeX‡ÕmÄRS•|^>˜„AcõšAŒ!lÚ _‘Ür`§S“€p²Ù›ªy·o¡;~Jµ7›¸w¨¨!äkœ¢ ‹Êf¦†‘Ük$¥´’Dj#æˆE]–Ê|©NC“Qw{Hà”ŒzÿJÖš$ƒ9R¢ŸˆGVïŸ8ˆÒ]•Ššn9‹òzdÆxÝxPEÇH¥K¦‰’Ì:„hxëL<å‚u»ƒ¢Ç~~Œ€•‘Ê|Zñ—{³~‘—B}ó}u˜e{—|¯–yÕ€“2x´‚2‹Çm¢m’}WL/N'o^A6Hÿt_?ÎDòpû=Ü?âe±>BaÓ>D~^kBðEä^;BaF&\ATG6\@‚G._•@àGvdÐ@qHÈhRB¢IŽbïF¢K—XeDÌHð_õ?HfÎA]L,kŒDfP“rsC«PŸthC­P¯viCßPyu.EÈQ2sC|Nhp DpMIoõDŒNoIB¯Nfpƒ>ÔL`oð@rMímJ@ìL¼g¦>mM²dË>M0j¥@ Múr9?ÐKqv >KÀw?RJp×?vHfÑ<º@nXÜ3Ö6ãW8Q<+\Z6”?ŽZ:à@!X¯>÷EÌUÙA7HÆX AH,Z6D^JSYœAÂGMZ‚@äE˜`@–EWcí?¦F«^Q@PFyY$BðE…XHBÈF¥VÚ@9IÛW½=G=[k>tDë^ç?>Dõc/@IEç`UD–H„ZšEJÇUQ@KTA¼K‹\ƒBaN4g«G®UXq"H!X4oÏGSmKDnOËpA‘L/uæBôMïw@CâMáu*@KÀrBˆNuí>PwÁK1[ 3pxßdÅlB‡Þ@ˆJúo =ÏFqH?Ky•@MÎz÷BÎM¾xFßMµxzFÊMtwÑDNbv(DöMýw,BöLÝz'B­M)€×E Q‚ÍBúO¼{BiO¶wšC¡OÁv1DšNxßFãO>zšAÚM|xqC±OxŽB7OÛvJC‘QlwäD¡PÎxPB…L€w’CÑMÓsÇCWNQt–CrNåy™AˆM~Õ@ˆM Á@ëN³€Ê?ANE~Û>zN†z3@ÎO¢vÇAŽQmTEÏW‘bE—SÕ^QDâQoaQGiS a×=eHÍ\>PBcJAD«eçBuGUg?ýGph0CÕM l"DÏPp@EOt*>­OEtO;¢N tà?%O&wDEåP–vkBàNsB(O%s5CqP`t@|NåpÏB§NÚqjC©NèráBŸOÉq¿FRÊs„CmQ—oUFgTœlÇB3P+n™B”OHnËD‡QËlcA‘OGpÝE…SÌw©>ÏOnßAqR¨o>EOßnñAÛOzm[BGO(j!=[Kwl÷=“NWu‰?ÇO«q³?>PøiVF$V™kŒ>4O2j >|OÃfîCÿVÃ^ÝH‚[Á[‡@ŒMXVå>EzWœAwBåV‰D§D×\°BÎCÖe>ºCla?{H©^9‘D´^P=7Fåa>aF)][=‘C)^>>DI[99ÝD£U¼>LíSp9›IxQÄ7RGáU1<HíV§<5GÒYá>GJãaYC¯MípE™M¿vö@éIGw¸AõL¾wJ@)M­vW@ÍLŽz]@BNV!@}Ma~CNM¤w-DóNóqÈFçRk§F~R!ZCAPˆTFAZOaR±DµQ‹QE‰SÉXùI [„cªN†_‘jpN`”i»Nv]"c’S$aŽe_ Y7[æc\XR=„w¾bž¯šóy ¹Êš^o¢°1•}pa­Ì˜}3¸›¦y(Á¶«7Œâǯ¹‹ùƵ®øŠUƵ«Cˆb²¡Ç}-Â¥›ˆrˆÇ(¥ÓwÐɉª\vCÃ\¨Ov²¿ÀŸYqý|œ]hÅ¿4éhp¿]‚n ½ €w" ótŽÂ lžÂ ^gÈǧy¹Í¯h‰*Α¯‹?ÊÍ«QƒÇr©~„âÁ_¨ï‡I¾éŸ)|¾Zœqn’Å´¡qºÆb¦zußÁ¢pÌ¿Z¢…ku»“ kO®É–òjš˜`„cbG•(„”aûS#ey¦ –b•ª˜–t_ §v“ßd£¤=‘{gã®y“=g€¾yš¥kÿÈ.¥ØtÌw­W}Ï|²´ƒeÐV³µ€ïÑzµD†gÌ®aˆy©K“—kr¢¾ c$›k…¾T¹ŽríI½ˆlBQ&…rá\Àöv€XÕ”±}RFzž‰R;®Ö”¼l¯™‘u¶ŒS}¹ž|oÀs§Ó À\§¹ù»FŸÏ{â´9—r@®’(j³©Š‘ i@¨ç’ålÕŸñŠ|a’™‚S™ƒXZn˜ï‚EXš›ÆƒÉNd¡/ŒÌa·¢§²m¦“Xzêšö†;of®}¸` ™ôŒáZ£˜R‘fM+…´t;H ‘j‚šs¸ŠH„qf‚ƒW“Ò}Á€Uš«{Ã}Åš»z {™l{)™zZ†—ØtØh‹rcÚc—{qGG7pRBgFßwö?÷D*o‰A;CMcŠBlD`_C-G±_SBÿE²^4A¤EÌ^ÒAiF»\!AÊFZ[x@-HêfT?ïHp BÐIpj FI _§CÝF_RCÄIqfE M²oâDhN:vCOÝvŒAžO×uE_P(x¼GªQ.vlDOÍr†DäMÇoŸB+L7mÇ@DMSoy@ˆM+p§?^L‹nz?wLl >*M´iò?¨Mn§>XJxpAxL¼s%?UK¦q?ÉIcoi=EYe¯;ÿ?4_ì7ƒ;o]¦9=öZª8Ž?áXÑ4H?¶VÇ<•DX?PG‡[Š@´GÕ\m@²F[ë>ËEU[W@þE^@ÆEö_‹?Ft[{>-FW&A7FãZ@GE†Zµ?ãF[À>'GI]`?AFÿ]"?ùDk^ý@=Gÿ\DÈI«V,N%|Ï@áN(}ð@ìNÀ|%AáP |ËsOáuE¾QªuˆB\OþsòAKMzs»BâO|tÞAîO_qD¡Pên²DaPRp¤BdO‰qºCÝOscD=PmmùEfRi D+QækûBäOºmDQZo†GORWrOD+PSrAPëoALQIo¼@^Pn.@{OÜgáC®PúhÁ>9MYjö=Oo?,QUmOA‚ROiê?MQ#kk>YOei²:¿M_âBÝQWÁG³P”Yª@K Y0@ÂF[ BPDêX˜DND>XCÓBî^$?ÒC«_Å>ÅIlc`7ÆD`«= IF_è<Gþ\ >æCØ\OB.F"[”<ÃGX›>ÈL/V?wG°0“Ònä™{õ]FÏddIÓqƒ^UB¾An«RpO~ÒnªŠ{ƒw‚\ƒBƒ½’Ö|!€™îx—}÷™‰{^¢™ÅzÐǘyuˆ•˜rD'ŠA^ñ[èw•E‡C3làA`In@Lþpe?©KKqÄ>|JyoÕ?[LXn%=œL£l¤?ëMõny?HLWo×@QMøpÿ=uK˜p/@ÆJ‰m–>¿Eæd:3B#Xó<DÑ[ºB H^_l@Fk_ÕBXFÃ_Ä?®DÖZî?ÃE–YÞ>sEMY`>*Fó[%<FÙ[?¬F]Þ=fEÒ]£=cFUb¨>üFÚ`å?^G)^·? G‚^ô?HØ]jCLK2[ÒFŒPñ\ G^R']­EjQ`ÐEêQ1h HUqiEßP6p{DINkoCjMq±CfNtsB³M;vÈChMüsåEgM‹n_GOoñFrS˜v²KA\>zøgMr'‰D^çi:´B©Kßg5?—Gžj ?ÎL¹t'A†NwÕA–M²y¹BžM'z½CËMšy«BeLµwäC2M wrCaM¤v“D…NóyDN¸{n?úKÏz”@mMszã?–L‚zùANw|SB¥MŽz`CõM{õB-N0~ÒBßM€gCÙM‰}¿BMü|CjM€~yAPMÙyE?3Lñw@A©NzÔ>×MozÓ@ÌMÁ{‰@yM|t@"MD|=€LB|?ON"{¬EyP|t[C-PãhàBÎQ!]ÿAaR WuD°S˜\^B#O—WC’K9Wù@FEŠ_ A&D™dLC[H e‹BÓImg-@ßJïl"@¹NWqÿ<(PÌp:=ÌP˜tˆ>wOuÌC|Q)u[C¡PuˆBtOds—C Qt+E SOqéE ShDWQth@O‰oqCPmpˆDDPÈjRF}Qæn—ADOâq—AOsIBROŠrDCyN5pC®NAq`BP‘o@eO-oÈAîOËhË>O”dð@ QiÔ>ÊOØgA×Rþk›@ŸRókh@¼PÜi[AgP«jó=ãNéhk:îM^€>ÈNgZjA2K]=XCï[Â@@F©]Œ@LE½[:A]C+X«@¼Bœ]Ç>˜Bä_Ð=$F¸eõ8E_ó;GG7X>—GïXF?šE\W¥CEG[WI;îF[WÞ<°H¡W;+J¥\©=ÊJ1kç@oLJrÈDýLñr§B•JÆt—ALvyµ@ˆL´y*B\M‚zpA7Mtz¼A N#yC ODwøCÉOûnªEàRfLD?QP\ØCGOÝUA OöS•DÔQVH9X\çHtXã]§J [b M^a¥hšMh`»gS`ÎdõVGa1b|f=XX x:oóZ¬ .qųð—,n‹²™ýo^§ô–vg±¦ g‹®½Ë­Ì“Äð²}’7Ê̳ZŽå̱|Œ_Ê ¬¶ŽÀž7ÂCž¾y–üžªu3¿àœ‚q ½·5q»ðš_mÆ»gšNkмk›˜n¼šo>»›™ùn•¹é˜l¼ØšÌn’¿ž+yÍÇϨ"‰vÏHµó”+ư÷¼ƒ¨ãˆ)À¹©&ˆìư¬¡‡@ÆJ¥æ|Ç!¢Ès†Éû¢ÃuSÄZ¢×tBÀjŸ9sÉ»D›}oé°e–Ëm€Ÿ³ˆ~^„™BƒGcê *ŽšqO¢"ÂlÓ—Ÿ€YRó’ÖzJLL–z(\>™Ö‚]`B§°Xg7½Ÿ¢r”Éá¬Â|ÊH§øwÁéœÅk·–ªlíº€˜–u`£W4d|ž‰Xœ3‚!NÚŒ›nÔA$Šm©Dÿ—„"dÁ¡”w¦µœTt2À›GgdÅ›Njõ¿.›œi²¼¨šªm‘½iœ½pf»ð›órò°•ÊjE¬‘;hƽœAyKÆë¢†}9Áížjz^¼H›w²¯l}nX£§‡/i$ ¡ˆúkC ÆŒÕnA “Ìh ¦¸“¬f¬¶{qjN¿ãŸ}k/ÁñÄro¯x‘q”ggj¾„šxÐg]‡œzžb$ŒØ€[oö†P ‡N‚„ƒ;–€…Bšc|ù‡™,{€®–|#†þ—{¬†s˜¦rcpˆÅW?U(vÛEGi¸>8FÅeq?µEòZLFŒIºXiE¦Ia D¤H!f=EÄIçbBžHÏ^CaJ^–D1L¿[IGŸO½eiF-OÃlDALFl‚A¼H×gÐBwI0g€COK¦f›FORkúC)Os²BfO‚wiDœPœyìBPËv&C’QuMúmô<çKYmF?­L%më? J!f©<ýA!]Ý:V;tWB7¤:6V¢5ã>ÂS[6iANT^<ÞEHV†@ ImW7AjHõZÒ?¦E#_j> BÐ]Ê>CCh[ª@¡F[AQF}\!@çDA_ÃAGÍcwC¡HábÑ?lFn`›?G¹dH>ÒG$`í?lG÷_õ@ûGâ`;BÿKØasHLR©büIÀW;giIUëd¼FØPkb²EôQÁeGLSŒn{HšWtrnDrPQp¡C/OXqÿB@Nt¦CxLÃwD/MÙv¤H,OqöH'SèiÛDŽJxoÿ¡HÝbPB~I‹cF3LÛdYBJiaä@ZKËjü@ÉMÅm¹B,P¬r‡> O²wIATPÛyVBQt5CqP`tžBSPÞqNC7Qts@DRîpG WOiÞDšS¡kZBKPxrC“PvoýCÃP-h!B9O=oO@¿Mu:==LÆt~AïNtjFwP:qtB€O"qÿ=MOÓtg@’OŸo§> MˆeVôOìj?AÛP&lÚ@‘D¸b >}FÃ^q>‹G+V=*GåUÖ?"G”VF@XFæVd=GÔYÐ<$HŒY,9ùD:Wö8]H¢WüK2k‚>-MDqÀCCPµxwAÊNäzCBµP(z5BR#tò>O{n??Nëj·<|LþkÖ=»LøpÊ>þK#r¾?KÏpÚ?sIÇc±<ÖBzYÖ9V<ýT^7;®Uà8‘@àU¢:C?W§;ÛH—X­@ŸL£XÔ@ÍIRXà@žGsZ³?jF=\“@ÕF!\ôA+G¢[Ï?™A \2CDÃ_·A2G8^«BGr_@PG\`è?ÌFâ_ð@¤GÖ^*@SI_*ûI8qó:Kûv=2NŸzØ@OixD®MòwEEbMÁw§C÷LÌvIAoJ¸u¾CZMMxÝBÑMávHCîM‰w³AfM y@ANUyBB2Ncy#BM‡|Ã?/K¨~’@QMì|ÔAzN`x¬BÇP%y?ÒM|Û@/ND}ÇCÚP{2?BNV{…ŒMTy\@'MŠxÌ?åLäxê?ŸM=z`?ÐLÃ{CNè†@ M‚ª@?Mþ~ÏAßNx©=‰N r A˜Q'f9@Qž^ŒAÿP¥cÛBÓQ-b&D{Sa,BNµbj=H'dŠC¦K~f(FúL2h‚=ÝKÁlEA…Mîl^A“OTrÝCØPyÆ@N7vóE—QfyúA×Oäu0C»PrÂE¸R†rñCêP(p±C QAkèC6QfpEAXOðsËA‚PÏoôCQVkXCoQÊo=BÏO“q,AMOVtpEQ-u£D½O0n1BwO¯o?Pêré;*Nšl•@P”i²NDkò>ÚMEl®@ÑOakpA4QYi‡;øNbeu<ïNmfû6LÌ_Ð:éHW^Â@:H€_@ÄD<^A®F¿]=BEø]#<“EÂaà>ôD3a+?„B³_¸G™V6>ïGV¸@H‚Y"A´Gª[)=ÌH[p>pLì[­7™G®XB:ØI¦Z 7ÑIŒZ=6Jáh˜>K?tšBíMŠx¼A¬L–sB“M…sºB±O±uu>ýL_vJA=M»vËAËM vlE>PLvÏB§NÚqçCŠO•eûERIUËAªPTS·?3M­U9CÐL.TêCÃM„R]HJU{YlHHVÐ[ßIÃYaÍJ.]leL²^@fzN_feÊWµ`H_=]ib`ãq¿mMcKŸgBrë¶¶šqm¶šr“¢Ô‹\f—©€”]²ŸÛŽþm­³ ™eyÖÀ4œÔ|ñÄñž0v„ÀŸŠ{»†™Ävh¼/š)vB¼&œ6v´¸2œØrïµõš+m‰¶šTk´6—Tfp±®”b‚·Ñ˜hͽ虷f;º•™›iȹ™…m$µØ–®kd·S˜¤jü¼^ž›xð»Ì§ˆc¹\¥Œ—»2®øƒãÇøµöÍ1¶¢‰þÁk¥È¢UzyÈ„¥¶rC¹$š—lOµ‰–›iŽ»Í—?qI¬æ6hÍ¡!‰îfDªí’ìvÑ©–\v2ª‘˜vª—st¥’6m³™y„ [všä…å\‘¬H–•pˆ»8žŸw Ä] Xw·™”õe{ªOŒeT¶W”ømý¡Þ‰k`Æ—¢|‘RÅ’xxÉPnŠÕq2F œÇˆ}_W½F«jŠ×Æl´W_ư«&ƒ•Ãì Áq9ÅÅŸÕm Äãœãk¿IšÛlQ»ñ™7oM´˜ÍoÓ¨¤“6o€¯Z™\uPÀû¤ŽzÂÇ ªŽ}'ÉWª†‚ÎÅN¤+‚ë·i–ss­¤Ñl:¡©ŒŽfœQ‹½di”˃Þ`F‘ø|ËVœ†„¾W2¯Q“òaÍÂeŸvÃs¡W}º©œ·z»¦.”Ôvt”ŠÕz·‡ ƒi…ë…N•}u™czKš;}Uï™x€š…þš¡†TN ©`‹Î›6ckgƒeNM?lçEÆDé_A±Ei\‚?cB.WB+DãYmCËIŸa}HYPñiHšOukeA JÊeé>I–`!@dJ&aÍ@mJkf×D8K\kvAüFšfÍ?ÿEceAËGIfCBCK?kúAN\rTAqO@wpA OyyÏB Oe{ä?ºMÆw ?ZNs@ÁN mÇ<õM’j <7M[p$>ÄLEt¦Hoj=¿Il;K kB;yL#lé<¢M‘lm•JRe?ªLšbs@îKŒ^)AZI®XA;H,UAèH5\È?FZŒ@LE½[ð@E†\;BaF&\¨CyHäWDDKÚ\ò<#IÛ_‰?,I‘_ëDÍJhYCF=Oa^ÅBP"_:D"Qb\GÅSHhyGUäjGAShoGÍQfëHôRiˆG#Tkl%I£R”o¡FOqeF:PätûD¡O¬xŽCýM†|‘C›Làz9IsR?ydd”lU…Gx¤€È–‹zùà™>RóY…|µB9Im@WI!v½; J7{;«Lßxú@,Ogw5BèMGwÔC»NàwrCPNúv“BÙL%wqBµL'xÁCòM»v¥F8O vDN?yÎ@^M–x.A7L$uBbKnzB³LjÁ?žM-~†=íMÆyâAÔPôyÝ@£NÅxïAN¢yÛB1O…xçA[Oêxñ@4P{ý@^Oz…AíLIvòAN¬vr@OÐxÜ?uN0{J=èL|¦?ÑM 3@×M\||AyN q?=àNanë? Rªlu:!Nµj=vL™kÁ=ÍLtj$>\Nj@ÙP¨iž@èR€gO>ÿPÃf7RNc–7áJ{YX=/GHVqBªG¸[ˆ?äD \@¼Fã]E:5EÖ^Ì=vEÑa0?(D„_×@D=`u?·D™_î>ƒEI]1@ÒIá[?uIý[;<ìC“[;9ùBUZ= J˜Z¶= M_X‡8^I¾W¨8ßIÊZ=92J¦` <K?p‘=GKÎyQ>›LÊx‹?[MžtI@MuA¥M“v¢?ZMyv¼?qMºw]?}L"vD_Oçt¸CìN§nE£OœbyF…QX^AwOýSä@#NÒU£AàK;R+>KP9H_X`"KÍ^`d?JË[÷a IÐYúc•J6[lf–PHbˆjeT`añP}[‚^hdldsŒØ~ h¨9•ºq.¯ì˜˜r›¤¸Æmñ£x‘Si-} ]¨†‡bi²Ù’‘opº­—phÒ½¸š£qãº8šs-»›œÄz”º5ž¡|޶#v²ešdné±¢™¿oi´‹šp«´™ži¶v™§fi¸}˜–a ®„ŽìWC«~×h¸ª÷‘¦mD²ü•wl·ª™Înj¸ß‚=®·œu„½¸;žþ„â½£¥&x@»ÿ¬³†p¶·œe|‰ÃDŸ_yÄât¾´´–Gj민‘õdçºæ–lqW·4—^p8­ß“Úoa«Æ“4u<­@—‚t¶³§œvº¹å {wº†¡[~¨^“¬l BˆÝ^K¨¸’ði5³Ñ—vm4¿ önn±­¡`‰žŠ|ÔR9¥ž†1co€Ë[Q…“këK€ÀiKerJÓ¨ø’Hn&Æm° ‡]È|¯„8ÄÜ£ÍuÂzžZkÅj ‰jóÄ# •iZ½œbkѼ¶œ|ph¹Œ›Pm·º›Žoñ½ ¢FuMÆéª—xeÊ÷­ï~tˬ°‚ãÉü¤ù}TÂ+›ýr|´ –BjJ¦`)f¥š²‡qa‘‡€‡])ŠºxÞVg[{çXœ¡cŽïe´³˜—lm¿N þué»ã›äp©‡Ž h±“·ønŠ‚¯x)„”RO–²yÈ| ™íyM}û™•{Á€Ë™T‡ší‰`‘SŸÛ{½†'™ÏR]A÷FæD¤k5DAA`dÂ@™CP`ACå]A(BŠ`ö@xEbØBJµcŸA»I#c‘<ÒD¯_u?ÌH`Ü@ÚI_‰AëHpdÑAEH÷c/B“H6aÑ@H´d„A JÖi¨@"KŸnFA8NÏt-A²Oæwo@Ny¢A}N“x.BŒNts3?CM m½=èLãk“>÷MlQ>¹M'rê:Jduô>RLÔsBNépf?ƒK6n@ØKk–;ÁKÿgÏ;ŸLZj:ÒJEl‡<éIQp/9‡E¡b3_;Tr4NîI†jp@ÇJ¢dº>ÖHä^-?áGÍ[T@©G9[½?²E¿\á?2Dõ]@ßD¬^iAsF‚_zBgHš_ÛDòK!]¸FTPí^›> N#`BOÍ`ŸEDOò\iIR·`ôDkQgaµFáQ]dNG'Uj I´WækNImYzjHlWYhcHÛWoi°GeUalfHœPÔlGGM›n2FnM rÂCsM²wŽ?ŸKÄzùDúO•z‰I·T;{Ëa7i•‡6emÿ’0yS{À—3np3>EbKáoÃE4MvB>ÌJçwä?ºMÆwÓAÿO$wBæNjw\AŸMÐN_zMAzPéz®?öNlz@˜N-zlBùNxx\>]Lmt²AP›o$BR=fXE(Tžfõ>ÞO gRA£O•kAƒOÈlÌ@hK™jnC«Kûlü@sIhn±@ÑKer?7Nôu@ÖOvCáPÁqÌD±QpUCQ›rBßOns—AµMwqÁEëO|oÙChOŠoéAN¶pD,PypòCJPrÕ@²OFpÅD–Q¤nWBÿMrÊ?ÀLÖwX?ûNåv³A§OasmA‹PBr.B¾N@r(?nMÃrL=îNpÞ8©N“m 9ÊMÙl@¦N›kÙ@OÓgD˜Qi}?NPMeh@qOneø=ªO‘e:ˆNl_”=’L»T`@rGáRÑ@ÅCVLAñCÿ\/?\E`º:vE~^à?¨Ge^q?ÎDÒ\â;>C¦^Ï>}F™_¨=MElZ?Ii_%:F›`=òE b=NFN]== Iv[¨>×LÈZ²;öJp[Õ9‚Jêa<†LLf&=ÇLs¬?¬Mù}T>#MY{‹@OuAäM*uÏAfMûv™@8NÏuÔ;M¨uiAñNzBiNvtD’OåknEQ4cE}PÛ[ºB»OWdC¬OäX¨CµMYD@PúWÀH‘YÎgN»_×l$KR]Ef‚J\¬dÙJ¯[ûi¥K^&l¾Pñ]ïeÒT4[nf’VÁ\ºhŠuˆqviEK‡ k± Æ–üsL¤ý•cx ‘µ~Äb‹ƒIs%`šrzmœ „¥g ±.”šlºðš[p¶¼ü«tZ¹‘Òv· ìyÀµÞžþ{ʱ·œuy\¯¸š¯wû³Xž[|…³¼™ÿup±{˜,m ´h•cex¢‚ Rxœ6‚´b £—úq®z•@o‡³—˜îpr­Ú–ÏxËœ<òu3žf‹’m‚ž˜‡d› Á‘yxù¡’’vû®r˜u½yœxé¯N•Emï§e`¶–do¾½4ìtT²’š…uQ©q”q~©¤•Øn¿¯O™loq¸—Ýu ¾?£~F±;˜¿qß ÀŠÏh A‘?5`‹=LA·YÄ>ZBëXÞA(E÷bùAˆE¢fíB[Gíg@E|fe@1F@g³?üG>e¶CØJÅb!F Lçc_D0K¦cRCAJ„gCGJégYBgKJlœAÙKÍpAÃLüs)ANÐurBOxATNhtG@ÕMnþ@ONjlù=#M"l>uL?l«?¶Lnp >1JBraÎMo]=®Kl™<Jae}:¸I b˜>$Lïd =JDeé88F¸d./÷;…\6’<Vš1[<•V'3Bè_Û>ÊFjëDºJ hAöG|^þ?íG=\§=×Fÿ\Ç=kE7dr>:C“h³?ÌB(e‹@•D¡`—@ Fal?ûF°aÓBJn`eG~QŠc2DS§gEáSÆfkH|TcVJ{VÕcØE‰S‹e~FšV;j/H+XÍnöH%WâmZGÒVîkaG÷X›lGUóK[z©CXNoxºCGO¶v‹C-P„y¸A*O2|9> N}{—BWPéy–?’LUuÛB²N|yR@üM{y„>ûL:x9B˜NužB§NõmpCuNp‹AMÿxmAÕL7€ÿA3K,pCIMµ~qA€M‘|ÖA Nez.AQN/zy@ÏN:zÁ>¡NÚwÞ@!OÏwÞ@!OÏw$?UM]såAlN©to@£MqBÝPmD¦PŠf,BÆPêh7AäO:l¾?N?o(@K¾kÓF'L nPBéH”mASJðn ANösšBPOTee?ŽPïeœ@PêdE;MLa}>’N.\Ý;éHªR«AªEPTD«E/Zú>!A„^ >ÂCb"?Hja7>TF[]^?{E´\e>™E¬]k?ûG7_Ú=°E^Ú=§F-`Í5ˆC;^©=ÂFÈ_j=ÿE¯\·BðJS_,=HI\65KF[Ä8ñIÿ`[:íJ i;tKºrK=MM¾{=þLny"?éMÎq½?•M÷pmBÀMøsEBN¨s·?FNÀt)ANÐuWBæM+sGD©O#m ELQ¢d$EaQÈ^nD—O ZÓBðMàX{CüMO\‡CN…[nG¹Pvd¼K£RÇjL¤SåióE"RSaýJ‘Y¶h¶JCZÈhN]hhðMe^ðgÄL‹[ jX_€dgwwbG–ó‘vrH¤Sš’}xš–Ž˜uÒ;rìbˆ~¸lWfÆ‹Ëqð^»›²Ye´P—jnà¹Nœ[pº @r|¶Lœ”w¿°Qœ£~¤­h›H€3®©™^|A²¹žE:±~—±€6ª#–©np¬Ÿ’…e¾œ<}6S·™ €1a@£X‘r/¯˜™o/·­—êo®°­–†z›‘ó{cÚ‚ÖdçH*ˆ÷n£XýЦt!cˉ¼uhPŸv‰™]M¯v‘þf‰¬æ‘Pj ¦¡¹gŸ®¸–Äoã·­šÚq”¬?“+lªŸÁˆVbŸ‹ˆc+©ì“Pi»´tšph¹8vX°+–®nP£û{h^¨¹‘Qm»ÿšÃqIÂñrK´‹”_kþ›O|âN‹¥ÜVɨtèkŸ¯ãˆ‚©¬Tž(€¨ž.Œà_­¿•ådïǤÔxfÁŠŸIv¾áœeo/»tšh6·˜•Ú`ô¾‘TXT¹•–TbÅ¿½zr%¾œ¯q¼BšÇk|¿ÈžØiÃÃm¥¬kYÇ]©ñr†È•¨gx[¿ Ÿ|r »zœEo¡¶ô•ÎjÍ¥Žà]’”åßYʇ²t’UÁÄoÙP ‰/{Ãe蛦’_€R¨™’ƒ6±V˜›H°ï“t§t’¦n¿›»ŠÝ{ІžŠ}xyÒ“M} {ó•9¹Æ–j€o†—©…$•­„ª_•ÏcÀrû@»J÷vÙFýEUg(CXE]ù=ºCUÕ@BEÌV›B³FjfC¨Eõk>AáC§mÈBÏF…mBÐDÇjÝA»I4iG˜M²fJZKpªMwmý>NÀnc>ºLl¹?…L g>[Kü_&@¥K\8B‰HkZí8¼?u]Ö4—:£XR7<×TR4é:{Wõ7ð>àa×?•Df6FÃHmcó@€D\>šCmZ)?+E>_²=ŠC÷e_>ÅA‘g¿A Dd¦@E_à@eFà`A(GþcÈC;KodlJEXolgH«\ÑpŠH$[pûH£W jÐGÜUf›IÜZðexGæXâgHmXro»HøW¯qHEWòpAGvVÁn‡HŠV{iøJÌW{gJÎT eËHuSXj–F Q¿oðCŽO¤rÂD(OÛs6FfO(tG2PKswJ²RIq_NWŸvøQžU¨~EKUQ·|ÇChJ#rÅC¤K·r§C÷LÌv{OlråMm÷<×MðhQ;öNh?pQÚf–;ÁOd(;hOey?FhUÆ@4CîW¹A®D…[ö?FÊbL>aE¤e“³MÁqóA¯MqJCOórÜ>ïM tCNÑrô@·JªrIB¦M–lÁBUOb]D¤No_ B_MúYæBJLã[@ÉH¿\!CÞG‘]EõI‚_³J”Lb¯IµLDcöF M’aMJ—R2d(Mf[Çg¤Ot]Ái¼M>^áfVNÞ`ÏgvQf^feMgý_‘Š……:pÖ¥‡œÅ„`¡™Ë‚ÉŠ”~Úm{0h‹[~°b TÒŒänTOªW‘ùi »fˆr[½žšoF¶ us«¿™àz¨š)ªN˜¤y"­`˜Æts¢µq ™Ù‚Î`;šï~/YÍ— zÇRï™™7Y‡¤m’ l`°Ä™`p‚¶›™emP·o›z˜$‚lcÏzXt?sÝPd?2w=U¯FÄ~øa.Aå•yEΤ|‰¿[,¨CŽƒef©;‘·i¯g–ÔqŬù“¾pR£{Šçeéâƒ9]õ†…_rªÆ”åkÖ¶ {pºÃžJuÉ­Æ•Hl¬Î”m¸´=šQsrߢP{DÃÁŸ_yú²k•Òp$¢Ìˆ _8¨ñh¾´$š¶y¬°—Ásé¡»‹ k‰œ…†¡h9²U–)m‘¾Ùž›ypÀs£o„̾‰¡r‚Þ±– n,¦’‰åW<¢>áB’§wˆèM½]›Ll–Áõ;p?¼ª™h޹ã˜5`P·˜X\¿·j—^,¼•šôeºQ™"iعC˜©nñµ‰–µkb¨@8f€™‚ d!”ã~Qeœ†xÒe­ŒçxÍm:„~­/¡a‘t°ȉӮ[”™uk«ì‘çtšt‹w‚䇜è‘ì¶|Û™ŠP~”™Ë~·€• ƒ/‰n” …‹§“*r°y“xUoe³ˆõ9G}p? C`´>ãBó[§B*GFZcA FJY­B÷G•f¤BâH8oEôJâqþIÐOqkDuMrlïDsNŸmÕEhMlÙFM­j>G8L)iõIäL˜jGM}i!DÃK2kÃ>²KnÔA×MQr¸D9QOsGæTGsPDèPÝs@DLãs·A[MlqANm@MM lâA\NènD^PEoz@åL n_K¨hA<'JÄb ?‰H}Yñ9A‡Q’6kAð`¢DDp[Ø?ÊAÛ\v;ß>Z2=@ñY@ Ex`«AGšc[A3EY_ÄA¿E<_a?zD*_÷A´F*acC‡JQc GStjþJ½^"púG?X!l:HôTäi¸HVfg¨IïY¡eJ~[«g‡IŸZMm†GŠV¿mæIqWÚi·GÐS»iwGS=g†G`Sc„JìUÂbºHIT dZFøS`mþC¡P÷q»BÇMRq^AÑK[o|BNÑsýCNßs JOŸqJîH(nE›Içr`APKBvöA@L§wjC.MÙw‰B@L¶xÇC"M_{ÞB\My›B“MŽz«FMPzµBMuyEÖNdyBÞM®w¤A™P³y÷AÚN¿{ºA:NÚ{¯C-N-}oA´LI}âCiO¡y…DnQ\t¯CœP°vGD}OŸxàCˆNwÜ@Mmt@N­x<@¯M+}IAYMtoA?Mü}¯AüMg{ D3PÆy@C`MÄzÚDXLY|CóK–{ÎB€N³z-A5OÝx=„M(uËAaNu¹@…K'r©BÒOºn¡DETuil>øNJeTFÞO¤lDEÁL$iD¾JhgÀBJ+kaCmK”nxBüK§pBÔMrN@TNs­B‹O¤tKB•NqÞBuP·rBPŸrDÆPs>;Nqs8B‚Pow CåPßu@DôOamfFûPkÓDeQÙoŠESRùn˜HW¯n)EðSRmXAQ¤nr?çPØr|@RŒv­BKQËq@¦N›k¤?EO‡nä=Mˆl°=ÀNh8(O®d»:îP)a^=ÚPÕ_u9ÇMRaà>ÎN a>*LIWè>I'Xe?„E!Z¡CgE²[¤EoE/^J?F]&=[Ea_º>’DŽ]7C™F7]v?:DZ\Ë?ÌEZ`È6KÝzQ>›LÊx¡=ôLsñ@›MsB‚NÛs¼@ýNät‡C=O2s©@.KNr)BþM lÉCzQžeCÀN—^‰BÎL‰]¦>oFÌ[uA³G«_FAFr`ADE_~BþCHZÄFyHÏ_­CÃFu]ùHëM`}N¦Y2f_Pš\7gôPÆ^§fÑLYaf¼L_cmbÙYá_øakt-pël¸–q‘¨YŸ¬ˆ—-&q5‡ètUéuþ[eJö{c˜LeœÄˆUc·¯—{hl»êËkIº*Ÿmp ­šxê Å“Cy¦ƒ– xÙ¢‘’mɘ°„.bàÐvTåŽQr}Kí“syHQš^†ÅM¦¥†‘/c…°J˜moý³Â˜æk ·«›þrÛ¢iŠd ‚ÖhóCiRNó:‰l±PYD(w½WÔBJymäE÷›\‚^ˆ£%‹kNª7An±A—Bvϲ)š¹}q¥ÜŽMkË¢ç‰ç`·¡×ŠÒcQ§£’Îj¦¸ðžwyºz àw±Ì˜±oî²~™Ùq¶¾œ ÒzÝÄü£¤{Ä ¢¡z•¼Þœazé³9˜#tñ¶‰œ&wÃÓ ÀIŸ»Ã;§‰g¬¡:m&ªh“Ùk#±l•Õo¹~œ{H¾‰¦¬øºá¤%‹ž¯¥˜1~£¡ïˆ~j½œv|xYÞ !€ÆQÞ³’C`êÃã)oÀpœ!m–¹š7k«°§”Žgž¦œŒô_R¦vŒ^°›”nk$¹G˜Mr¬¸å–oms¬÷‘Ûiß  ˆ/f,›CƒÉ_C™ÊƒGg—‘Ž€Ômˆ’®Š€q­—€xüžfsyj¦m‘ÊuP©=™€î”Ÿˆ~‹éƒj`™Çƒ®€çä€cZ˜<Ý‚D”…Œ'’­†ˆ‹Nq^u9ŽÇF…R~ë8ÜF¨jî?NE_i@ÑCV]ëAÍF“`C-H¡f€AbHn5B˜IŠq‘E¦KÅqH`N.oBF²NàkMH P×p½HOÄq§G³NÆmE>N”l±CMõk HiOèngENOÌoXCZOËr¬BsO?uPDQv0E…R½t DáPxtnAzMu@RKZt*@VLþoTA¨MïkÁA›N‚m¡AàN>r°@×L!r•?ÄJ}lô=IYi@>üJiÖ=ýJ\e«<ÄGß^Å5î=Qû4;@NE8å=DOà2u9OL3N;œRï8€X®A«@;Z>w>4X>–@Wõ=°@ƒVÂ?EG\™@žGž_ˆA…EÎ\ëBÿE‡]ÓCùE\`bBuE`i¶FgTióEÍS:h‘DRNd²FêR>aíDCQ,`XDjQugkFSÍjùGõRihhEêPøaCDÍQg˜AáOßm«B‰MàpuBtMºsE@”N vn=èLRv"@hK™u=AÁIûs²B‰LÂxw>tKQ{è@hLù{ÞAIMsy;A MLzšAýLU},E¸Mº{°D¹MšxFåNP{äAÆLF|ˆ@ MñxŒCcONv^C€Oæu®@BNTy.AQN/zTB0NA{CN¸|E½NÿyBhNax°=@L¾y™A”Nç{ÍBdO_y›BtONwKA\NÈy*@»MÖ~OAšM~A;M¸|ºA_Nê|ãAƒNç{íA´M}~žAÚK‹ÙD4M×€AJM•}A…N {¬@$Ox?AœNstÛ@ÂMCrâ@KO•nCŽR]hAzQµeåC‚Qåi!DJN~iŽ@ƒHÈhL<ÓFÎk A¥KênœAÙKÍpy<šHn2BO%tHBïNôtqE$PÈrÛBŽPrõBgPër CžO£s@±Lüu—CðNîx“BNt°DŒOdoáCaNÐoCêPu=EìS×qÔHTY q&DxUˆoiCòRgpÄAoP…t‹>ÛMsóA³Ptpö@[O´i??NëjÅ<ºLplU:[NPi+8 PÌd\9aQÂ_=<µO\V7ÉKûY×ARNâ\j>VJKVà=nFøZ}AyE3]uAæA*[ÊCpE[MAYFç[1C£I0\iA¾GìUBØG*Vò;-C¬ZÛ<ÛDa>@G%]¿<åD·\ä;‡EhW‰:÷DtYK9‰BæX‰9”B™SM8@DïTL2ÇA}Zó/ð?±_Ý:çH mŸ>;LÚlÞ>ÐJGmÇ>oJ¶q=SK¾pù>‰M\r€?§MÝt?5Mku“@•M¸u/AFN›t=A,N(s(B5NqÙ@ºMj5@*NÝe1@ÅLØ_ÿ?I-[>$DN\2AïE_‹C§GÃb6BxElbnB€E£_ÚA F±^×DÒFƒaþF=IcüI]P‡dCNÆXãeR„`¾hžJ0a¬fÒJcõb¤P^‘_õlgŠj6‡Â„Ýt]¤8Ÿ/„¦ƒ›&tÆši‰‚\SÄj'JzÉjtQf޹„aA¢“@i¤³šš:nC¹F•pŮۘ‹u¥Ÿß‘lvŸŸ“½v, Ê“¶r“šh‹½j¶”º¨[‘’‘z?SÁ–»‚­SR‡]M&ª‹“d²Ç˜¦p̱û–Qk´ÿ˜s  Œ‰’s'„^kK)cGN?œdoP3Hùp£XÀN©‡8k-N{›ˆOmo¢³Œ^o§}Çk¸²˜ówe¼‰¡ñƒ¼´®™ÑuG©Çqdl¢·ŠÐaF{†+`E¥+‘âo+¯Ä˜ßtl¯Â—Ÿl«´~™nb¼Ér[ÂæŸÌvÄ¡6yÞÂ% q{ÛÀõ¡Ì|ôÀ§­}¨Ë-µ´ŽÒÅ?ª´„к„šºtš¶z˜nr·¹Æ›Øx‡» 'ƒ¶ Ÿ½†f³KŸ€Šµ¾ )ß²ˆG‹,«3—ƒ•ªJ“™u¶³Í“ÐhXÞÅp×ÀÍ!që·šïm­•}i”¡#‰¦b Ê…ï`†§.Ùkâ¶Ø˜qà¾Wpé·×šSoç©•Ûnú£Ð^j,£9YlŸ f\r‰œ–ŒoĪ{£W¯–]j¦”brv¨0“Š„­‘þ†C¢‚”iœæ‚'‚íœ5‚ /–žy…U“…õŒ‘“Œ€·…šjdiƒJÆS ~-=HÌj*A“D[œB©D(\D“IwetD3K'l¼CfJ.tèD˜JuàD«JÊp>E¢K>l‰EâLûiùE°MŒlrGŒOÛl~I™Rìl GSR ncG™S¶rI TósAJOXíu÷GãU"v5CXPút³CPBx*CDO”y:C!Ncxý?K˜t B€L$r«AL@qÚBRMÊmAAMlÊ?¾Lým¿=Lmd@¾Lõjï@Lsh•AhLéfO>]JFbe==E•]¡5¹:qRÝ8Œ<Q¢7å:¥O€3¾7On;>"Si:9¥Ra=­?ÄU¦@B2WÀ=@Wí<‘@àT>BOUy?ðC\AýEÖ^bCÚEöX7E‡F%W¿BE;Y?aB€\ŸCˆIË`DEcL bÛH­RñcœGOW e3FDX7j’DõSÞk‘DíRÛpqEÇRwpEHÿT}idHrT…c„HVTÙ^ÐFÌSì^ÅBjR…gÇDS§oPFSNo„FyRìiÖE5Qõj˜@úOŸlÉC_Oþq¶C!Ošs«C\P-tA—Nv`A­MùuC$N†v@ L›yt?ZL0~AÕL}Ó@Mz¶?}Mcy:AM™yDaL yÝBØI—xŠCHJäx€C5M_{I@ZMdyíAúMGw›?.L°uCbN yÂB6N•xKCõN2{ðCòN"~E`N|ô@çL{E@íMž}æ@®NM|Ä?NÚvÒBP2w:>iLÿy@NÇ@N|~BO|„C,Pt}ÎAÛNÑ}ÖAÆOëm@£M—‚{@LNäDOPt€æDP¸}¦ANïxÑ@ÐMøu{AfNgsó?çN?l/@+Peð?ªP¹aÏBR eF+R­jÇ<|H×jß<0Hun/A©L|p.FO—kÚ<3PCj;£QWf/9PDa.9O\>:5N•W-@N•UC>öH$Uj>Gß[‡BòFl^’DD^/CD]¯?˜D[Ä=.F[XASGàT‘A4GáTÍ>EÚYX<}DÙ[úAƒI¹Z->EÕXÖ<|D³X_ÂL_p:?êM‘w®@¸M¢xQBMŠvE˜NÒtËA N*s ANÜo=BßMôh|BöMNc„BMÅ]@kI X|AùFû]î@Dp`þAôDñalBHF#cá@ùKYh8>ÓEè]e<þ>þWÄ7·8QQ½9ˆ<±QŸ8¸;çRŠ5è7vR26Õ9"S•8 >]Tf;ÜA\U^>#B´Vá=˜@GWÐ=BFV[>çCµWk>@C^^|BAE_™HìG¦XDŠDT¾F×HEX—ClFk[ E G)]rBàEµZtGóPªbGåXf¦CVdgúB¢UœkBD]VròDáSbp,G€Uj HMWZh5GgUÓe*FµUÄb’CüTHhš?›Pl4E¿RqGFSÙlE÷RZjñESVn”DPTr×CÙM:s¨CªM¡tTBMðuÄB]N·uŠBTNCti@ÿLXy5@oM–~ß?EMC|z@»MÕx`@ŸN§uøALO2uôBNM´yQE©LË{0F'M yC N1yÿ?kMcy¥AXMO{EAdLµyÔBžMxC1MzÔB¹LiyÀBrNø|¶B¿N7}È@³M]|¨@¨MÄ|é?Náyš@ÀNvAÓN€ut?¨MÇx]?%N¾{èAPV|BþN½zBBbN|î?öLâ}¨AOY€ëA?N1 BãM%MBùMV~ôB¢M|}ÄA LíznC)NÙy_@M:u‰?N(nBP¢iƒBfPrfC–Q“ccEaTµiCOØnß?ÞKMo?ÞKtniEyP…néAROÊl­=¹NÕp¡BQ´twBÇP\sûB¬Qs÷@‡Psz>—NŠtîEPñuvBØMQqçDóQ¦tèA\Pp’D»RpØDLSpˆDŽQ=oçB@R…qõCZQdo DçPèl*BíNÿn@vM+qÅ:TLÅo<=˜OÞmJ@jQ½iê>]P hµ=¨PêgÕ=}Q3fï=âOùc«< O—`=LNå[`? M£WëºHH]í>_EC^Œ@œC´b{>Õ@@_ì=«D$\…?´FzZu@èEsWFAðEƒU•@E‹X›>ýCêXAþDÊUÓ>ƒCRš<àA7U$=ŽBVš;AøR8Á>$P&64?&WK9BÙWf9ÌBz_Ï>[Gwp€?BIÉqŸBCL¨nö@öK fçAMÇcü:‘I½lW?M|xM@:LWv¤BúJktPC…KtÆAyL½rÄAËM«p.? L‹dÔBNå\ÝA>M*V_AmJ9W]AfF´]rB"FêaãAMEûa/EêGzdµBZF`fnCxGZfE´HÅcØDýIbqDmJV].J±OùY NC]IbÒN¡` cÚQ#a†fëV±a›g!b»i²eƒv0sÍb„™¿–xz÷°©£6yOµ£oxܫ®|z£Dœ9w›9”Är•Pˆ(bQž†‹/fë±—xt³¶þšî}º¥5•‚w–’6s°™qzr T÷oœ Ž©eE qŠZ[i &‰¯WA¤–‹ÑZõ¤ÞŒª_„ªó‘Õci·S›®jºdìuׯñ—–|J–8€ f¬m¨T²J†]¬N'H{vf»M®Š™}›_sœ Ÿk§’ji~°P–·k๟¥y¹¿e§Þ€›µ‡›wÀŸÌˆ7amŸå‰3hzœV‰Jj¾YyO*˜ö‚cY·§ã“þky¹+žìr:¿tŸ¸rWº œÁqa»µ›Þp½œœkZ»å ˜r*¸ižVvF½óšdqQ¿PžÈwIÄ:  xEÀµœÖmŸ¿ž¢sD¾õ¢Uv½ˆ¦ä‡å¼k¤tˆV¼¤)‹)ºï¥…e»š©š”­¿¿«(’ù¾ü¥ƒ¹¥›:kQ¹}™pd‡·™ o®¼’5qM£'ŒmhØ¡ï‰0`—¤ãŽÀ^ÿ±ˆ˜Gið¹ œkd²—0g„¨“’_e°¬õ—vr˜µ žÈ}ºŠ¤Ù‚¥¹¤äë®äšt|ã ¨Ž p%òŠØn—™‹íÑŒy†Ÿ’ãËRš ¹~J™ä~€B•†CŠè’”“•‰ŽS®ˆÊ‚hq`¤rÉGÚJØthA4F…iÌD{DÞXFE£D¬]mDTGœi_B¥HqÂ@ I0x¸AJJÇw„CÖLÌoDŠPÑkPAQ&jXE€V mGºXnIèW¿lJ!X…pFIÚURm»HU}npHTzmWI;VÁlK‘Y™rDJP vŸ>¼Lºu->vJxA*LuyZA«K@tØAûK¦qVC§LmÐBMéj.?»LñlM;wKilN=ËJˆgr?K›_Â>I¸_<ÈBÙX†:µ;¹UŽ88ES…>f@ Uu=@BªW_9ƒ=}V×5±;ñSS2==ÀU06@XVY<@Bö[¡<Ö@ X>EDùVì<«CžWø=HCò^êAmDFaNFUE8[¿E.EÌX~CæEÂZChF4ZÏD G—VOG‡I+YD:Ma'E¦SahØEŽZFj¾DÉWi¢DÕTdlEöT m]FY3mƒGZ’mŸFãVEj)G?Xh2FÄW"i³FlTÏkØF¼QJlýGÕRªk‘F„R…iöE RîmîEgPnrDaM²w¸AiKÔz–A[Mry7?ÅM„v0@%NÐv@éMmxê?ŸM=z8?-Mðyý=´M©v4BJQ¨tï>^NKsu@bMÙzsA±L'5BªLžzóB3NbxzBSN>zbB¢Mk|†B¢M[z†D8OÖy¡E N+{àCÕKýzrD`NõzÔ>×MozÍ>½Mè|‰@¹M²zœAXN…wàBJOêw AqNëv¨A–Nøwt?¨MÇx@ÖN zœEªQx{‹DÝNÜ{LEàOi€ BnNÙŽAYL=}áAúKþ|ãC)Nú|½F#OÔ|ªBMl|ÈCYOÙý@³M_vÞAO~rBçNßhBaOcRFÙTLd“D;TÛiHDäPÂoŠAŽM`nl@çJ`n“BPNn??NëjdNþo8@ÔPòm A’RNiJA=R¡fC@Qec@JRúeP=ÖO\e=NMœcBùN2a_;×I[y>ÏIiZ¡=_F/W#>pFö^U>žEdE?|De ?+Dµ_?XE²Yx@U#:Ü?Tñ4ó>­V'9,A»W :ñB†_;EŽm•@†HdtõCLMct˜@¥Lemœ@FM{m2?ZLVou?ìL`u]A²LüsElLès³CoKøu`?IÈr~B‹Mo´CPAgDüP„a›BrMÏZúB’Kh\ãB©HA_"CdGç`C.FbŸE%GfdqEçFdh7C+HofˆCG~dŽAHH&b@CJ³^sDWNüYzM$^ŠbP‹`diQú_bf·Yþ\§g8aº^+h¤cnr _Žm#sÏ­a¡yyo³ï št[²´ x,µx¥"€ñ«ÀG&rV@dJ,yÎ?}JƒwwBéLüp6EbPFm»G¬S¼j—G'[jjI[BjœHèSÇiØJ¾TôhOIÿSÇg~HVkƒHFY¢jxHeYJlTGœWþqxB–P’t¥>QM)t˜=cKXw³>ÂJ]yè?¾Jt¸?eKtpÎA}M`nõ@@Mm>*Ll^=ÂK|ié>?JLd?•G_]Ç>¦G‘YŽ9S@TÀ8m:ãT›<´:V2>›>åTR=Ç?1U8>mAüMµuF@¡N¶wçA[OêxÓCP„y[?IL2yÃ@ªMÕx2AÃNwUA~Oéxû@ŸN€|Á@—M×~ÞCNë{ C%N–xôB¹O{LBNÜ{»B(NÚzBN|ÎA¥MÅ€UB1L }ÝCnN¡w BODx¥@ØN±{ç@ÎMÓwE˜NÒt6BˆL¥uwAÆL&ysC=O>{?bMîxYA5N—zªEP>{/CîM™yÙA8M–}ALC}LI|¤CYM]z¬BUM xmEƒN¾x&A5LyËBéMVx¤AMHuËA N*sŠC>O^håBòOôaÁDUThYA;Q—kBzOâoËBéMFnEæMÈnšD¬NÜnCB;PÄnBDÃRxr'C¦QÖpAFÚS£pÈDQpª@ÉLpn.D„P_rCCPßpTAÞO“rì?ìP r BS‹oAÑQÇpERØsà?&N4o±BvPÝpEB'Pys_AÔOÔtI@[OHs'>¥N¢p"?%Pkö?öPžf`=àOödæ>„P²d+DgÜ=êDÄ\ë?sDÁX*@âE:Xø@(FéVG>bC WÚ6:äV7Ã7§U§195aPc2Ó9šQH:>2Wè9!:ªV!>Ð?ÉWÚ9ä?žV;GAÔW™:žB³`s_GªpD@ŒK™t­>øLErÛ?ÊNWqj>:MqL?-Mr“AqNs B¿L£t¤A’L>vC?NråBËM˜jCCžNtf‘AãM{eÌAßK4a®B£Jâ\kB¦H;`4B‹Föc„BhDƒfPEFÞgBEAG§j±CHBh¾CâG6eÛAšHÏcèCXMãbyGÙQe¦K”]•hNå`j9Q®_riÃWÂ`*h¼[0eüh†[?pf^ã‡JŠ sX¨gœ|»²žAwW²íœÂs¢¹è£i{1º°¥1‹ª†—€sU™!„Ò\ E‹?fq°Œ˜½vs¯›šÓx°¤.•°w8›.tÀ“b…*pg’q} _m›T‚VS¡£‰L\Ĥ­ŒÁc3¥l»f{£!ŠÇd¦cŒa‘©,’Vkå ŽÐi=›±Žl!b|á_ksÔ`AJ¬yëf¿NÎ~CjŒŸ­&x…¶Ù›{xÏÅõ¨ |ÛÁÍ¥évHÁû§_{c´Š¢%~ɚƇðid”}¿hÉ—9ƒ lМ‹ìiv¡ÝiÁ¢üRoÿ­™˜Æw×»ž¡m{³šsÚ¨”nI¦ß‘»e˜¬]–¹ic¦µ’-iÕž¢†jTY£Ž[1´]—c¤¿ò™Éf8ÆbŸ³s¤Ážòs3Ã&¤½|ÎØ¨ò…鹩YŠ’Â-©'‰¾¾'¥…‰¼>¨x„éºï¦D·Ž›_t­’‘bÝ£Zˆî[ƒšÊ€Í\„ t¦Oó•ß‚8f‰§8–^uµ·+žÅvˆ¼}ŸÚu_²Ÿ˜šk{¥æ0hé¬V–Pxϼp¡Eƒáº;žÏzE¥¢¸gÚžI7dtŸ5p±“L„Ò|ð… {|‹½‚`€Mš, .œ<},~“™D'†<™U‚Žßœð†o‹@™‡¬w ‰k ^"rêJlKàk1?šE³bü@TF¯\´?²DgaÚ>DÈi‡@_'FÎQ†c G Vf†FYhC*Pºk¢BxNBsù?Läuý?3Lñv?@sK3uOAtLŠs%@+Mìp¹>ÎL#m~@ùKµm¤?ÔKÒk?MJñg6?Fm^Á= E×V,:AdV#549òTC:S9øVä?f=8U¤A„?P4@r@ÁN‡>«AaPë;Œ>6Sf1Œ6YP4â:%Tà:'@HW¯<—@lW7?ÌBcYg?DZYÀ>C—Z¸@’D>^ƒDÞGm_­C#G·ZDIÅ[¹AhE3]*BDL`…CðG—^DD€JŠ_[GP'bdIéU(eìFÞY"fEE.WYe0FEW hpCUTjôCfVUkåFœZ†jxGˆZ j°F²TÌi/G÷RÏi¡H>TžiGÍT1hûGYákºGWöM;zŠAN­w/CNMˆstDNÉvCAºM±y½@ÿMœ|è@¾Mõ{Ÿ@ïKE{ BRLÅzCrM²xC­M}ôC.Ma€èBØLU|^E O‚{ïDÕO‡yœDzN:v«CN‡v²CüN†xŠAN·vXBDMqDAN¶fBBÕO]fÃ?ÌP²l4BRˆsÓAO"rÆAÉMŸn¤?ÔKÒkoBÝNoÝ@ PƒoOC¡SIp.BXS–oôAöQŸpOCzPëqB N‚t‘A¤NÄweAWOËuQB–P¶r¯BÒQnpcBRÄl@LQ|q>aO,rƒBäP@nD1TPmøA;Q$qÆ?Nçs³Nþu›;4O‘n =6Plz=½Póiœ;PWf+9hOÂe‡=wOc?¼N9\,>’KjY>òG)[»>´DeZ–BFS] ?B±cÙ@_C\m==ìBJjn=2Eø_Ï>XFnWu;.D¡VŒ=&DWt<›BWÿ8é>BV0ð6TQf1ë6ãS¤0!6!TP5cDDf¤>^Fi)@8Im§@ýL:uœ?ÄNÙu?¡M›s'@}NÍt@eNŒsBŠO¤utAM{u|A_M¬syBPÅoAoMe?ÀKIb²@eL dP@J…cB¢I\]Ò?¦E#_‚C§G5i+EÍGˆkíDbGsjœCMG*iíCÅGœeËCpG‹a;C IïdKDðK“gEHSkRUb”o7KO^nZN_voœV‚dVi-[Oh¤hÐZƒo°]&…4†Wsf¨‹šë€}²Î›Oxº²ûšsBºú¡y„À,ªL€>µ7s{}›Ü‡Je˜†âdS§–8tê®úšNvþ¦{—ŸuUŸ-“y¥’a„go‘‹†xÔ\V–w‚oZÄ¢sÆe‚¥+Žòd©Z@fÉ£kŠ®^ˆ¢Ð‰+^d ‹aR™å†Yo—ý…™`w~eaœq9X¸wggúLF‰cw_1–‚Kk‹¯H—x‘ÅÜ«cÆ©wŒ¼@¦vWºN¤Ö|îŸ?Œ­m#Œàsg^X³záfÞžð~o©ê•?rc¥³’\nª¢Ñ«kˆ«¦–p“¨©–Lo°£4”kü¤\“ f̨®”êjŦ|“(qîž †õSB¡ˆQ^¥Ó‡iFR®åŒ8N¾O™—h Ä*žp›ÄFžÓpPÆ· ×{Y¡† ¼ ûŠ{¼‹¡Kˆ7¼&£Œƒiºî X†ƒ³ð™ ‚e¡]‰)`蘋yàM²—gy§W¾Fs®S•º€§g«k˜K{.º†žUzºE›Vs§³j–Ši¬Ü“üh-±˜@yt½Á /„D»¨ž]}4«–p¤T’¢mR¤¢’›}Ù”•†³†ŒyI“¦}ÅœÑ{ •›ÆzÛPšý~Y‰ªœOa‹ŸK|ø}—:umjæ{I]ePg…IJYc?¯DZZDfHä[ D,GºbCŽF¨jŸBŠJ s´C"Nƒ{tKXu½@M“r?§L¡qì?ªM)p»?eLjš@ØKhé>‚Júh‡=(G¡aŒ:)A‘AÇ]=@4Cs]AéC•]+B\Dä\C±E]_BEc\7D#F6\FãG\uD”HSZGÒL"^fIQÃb7LpYOg6K]Zøf£IsY«iwFîUŽjjFdUßi¦HËWoi„G…URi¦GnSJjkH·S"iÖHÛVëhaGÿV„j1GÑSûlHI{Rbp7E.Q§p"DOuuCèLxòB^L^y–BžM9|AÕL}BBFN–~„D~OçÁ>_K.}CFN”}Ÿ@ßL{q@FMS}?L›zEBÍM¿y]BYMNz™AˆM~K@ÃMN€ñC`ORùC O†}‰BOºyV@ðMÒwŸA‰NÕM_yCOíx†AøLòw^@7L2xÖAŽOÅy)@þMŒ{AˆMø|oA?Mü} C“M°}NAŽKÄx`D¢My{å@›K°|.B¥MŸ|¡C»N|ÝC`NæyAFXO|xODØNxv¿C£NtðA#P"vf@NAqä@POjÉ@ËO$i¬@&PÃqè@gPüwÜBˆOqt7B‰N[oýAðN2oÙB‹Pp,DûQUqõE UÏqªCÆRôn+CsQýoˆBÐN@q7D"PÉt¿AOçw¿AOçwÑC¤P*rƒEÒRpŸB”Qüo¡@YPœrÌ@ÝOnuÿBQ£q³C‹Uºo3LRÞ@ÊLTU>YGNZ>|DX\NC!Gâ]A]E)eÊ?¡C¹kÔ=ŸBkÜ>>Epa~?¡FNV?#F:V:>D‹Võ<Ú?aU§3¢7€S½1P7ÛP×1Ë6PÀ0ø6³R*7?3Vi<9A¸UÙ:<1U¾:Ì8PWÄ:E9[X@øBŸd!=ÃCeiu?žGhd@‹I¼j@¶Kþsr>÷K£vn@^LVuí>±K½sï>ÃLuW?M|xô@†L—uã@1LÌoøAN9lw?‡L–`žA5Ncâ@ M-h³=²I’c@¹G8[AvE+^*B-GAfà@^G:gCHžg®E2IhDmsLa^ZpU b·k._î\¿bÒWÃbTa釆õvå¯3ž‚‹º­¡Ö{ ³›±q¼¸Lžùtâ¾Ë¥®{ú¹¢ 𤦕=ub›¡Ž=lè¦À˜ s«­±4uµ§êšUu£ž˜“$w”%‡co “ÔŠãj}wuh ¦ •‡p£ªÃ“Õnš¯º•.n<¬ª”siù¤B’Õf;¢‘ÊeŸñ‹³a—€†Y>‰Æs[ކïuàfÉÔo^Ñ}ÔkR:‘½{mYK¤Á’ÖršÃ®à‰¨Ç/¯ø€pĄ̃qtŽÂS¨¼z ª4”jp||cÑå}ñmñŸ;Ær‡³_{¾¨`”¯oŒ™¡‚[\®™R„ƒ]àÞŒŸdü Áeo£}‘ydW¤Œ”ìmA£K“Ku#ŸbˆíYÁžtˆÜT›G€*A!žš\>W²0“ýb‡Å hwÈ0Ÿ­q}Ãm|¼Áœ(w/¸îÄ»·¥—‰à·qŸ1ƒ¹³@£f†ã±7£.…%¡â‘„o ”ýzhZ<”#vvUù“Œwï\˜›¬ˆ9rE´Èž!7¾F£ßw¸ðš@m†­]“e©¦ÅŽp`@§“|p¯1˜=}³˜=z'«—uvý¥?˜±yf —OƒO•ØŠw˜[~M–yÀz¤™Öy»}–™|~6†ˆšl€RŽî›‘}RŽBœ»rÆxŽm^4SôrÀJ'B>`LC§B…_þ>Ì@QZ…D6FÓa€EGH÷gìDeIWl CAJ"t/BÈJïy EBMõwÖI„P¥sÖG1QOn“HÎRúeêGñP@_:FCOÌ`êCL€^—CÀJ$ZUA¦JtU“;HšS2?:K UBÕKlT*<ºM kÛ<ØLœsj=‘L’ro@ìMÐo…>uMvoÂ;DLÇn@hKÀiÃ?òH,eÜ;{H&f˜4‹?~Y€7:<ŽQÀ5,8AN¿<<ÏPé;—?ŽRH>CÑV?CÁ?uV‰M¾CÝJ"i¡^ÇV,r7qµsspXoÔy×=È@ÅS÷-5çN:3<”Rd<ÌA.Vß>'BZÈ>t?]`> <]»BþB‡`ADD‰aiElD aGE8E$^ÖC¹E÷X EŽG WJDvF¬YGDZE»ZMEmF»WŽF¨I½^kH>OëcÁL"Y»hOJÿY%iSIf[lHGJUi[HÐSˆhG÷P!hóMz‘A°Nmy2B…Ly—BL„yãBN¬u*DôNtODPýtÀ?ŽNñrR@„Oúm BLQ>kÖC!R¬n,C¤P9uíA%Map(B¤Lo”CM=p®CÿPDt¤DQBrpFyRàp E[R’oöC&QŒn D"Pàp D"PàpâGSrïAœNfqÅE7PÈqtD®P¶nAQP)pðAâO¡sYB?Nu7F,QnuÖERFqCG0T#qíA˜NOm_?#Môiþ?BO.pÝ:õL´qy=ÓOnyêN [@DÄM…Tø>HSë>´F¥[|>¢DŽ]Q@“Fz^@úEýbBÜEhnBBEhc¶@}EÁ`AUFZU?uE,TÅ?SDqVl;~<ÌP82Ú3öQ°04RÏ2ô6OO‹3w9þQ5”;GUU;C?Vc9u7&T4Þ6QWw:H=X>ìBgì<·E®k>ÅG[gp@J÷fq?1J=në{I_a–AôL€jl>¸Mt2? MvuS>×L“o!?©MOoÿ<œKmAK°cö=oFVØ1I>­U/„7Sé3Ò60NV<~7ëM‚>8iPA_?¼T±<›EFU.FÜE’R5gITþKÆŽ~=gã˜çtn°GÄB›M<, 3æIæ11;nOe8ˆ@„R¹>‰BdU1A8CøV?Ø@ÂWa?2AZ]EB6C"dÍDED1c²C¬De^²CEêZ‚DìF&XXE H~\ãC÷EÇ[DïD#V'EÏEÙW0EKÝb¸I˜Sþi¹HáW¡híGSZñj&E(SMgsF"Q¯e5I…Q‚išH“QlBE„Q~p¡B8PjpCöPlñAÚOÂfÿANOp{CL[rcAKRyA§KH|ì?½IÓw›CNüw—C’PwÂA‡N3rYE]O´s0EóPStCRäuL>ENÀvi@ÿLXy?ÏK\zfA3Nu|2A¬Mö{¦@ÜL{}¯@Mï}³@ÂM)|lBFN„|\AŸL|,?{I;z"BCM{áA^NØzÒ>y¢A®NK{õ=ÆN x'A®Pæy_@•M´{ò@–MÅ|QBîNàxeDºOwbCÃN[tÒ@RNlŸA$PÕi!EÒRvg¬E×SûezDmQ€ifCM„j‹B2KImDÐNuÅBÖO¿v,F+QOq FËQImÌD±Qp¦EQup¶CôOmpåD£QJpNFÌRœl–BòN3n®C±NNr³BæNrpõBÁQnpB4P^o›F'PÈpoGLP¢pÇD:PoÜD"Q'mbCòO|j&B/Oêh'A¦OÈkJ>”NÊnÑ>ûO*m?ðPhh“?òPjg¨8$Mh`6?ÛN [EgM[*>sDÁXÒAÛFa`>nD³_s@G‹aû@ F×`É@DobBC$E¡bi@½DØ_+BHšT¹@ÃFŸRþ>9DTì8c<‘Mp1å3OM²37ºPb4r9‹Ní2€9®Nÿ3:CSû6Ì;_Ul6þ:pUå5*<ðV4;9AX\<+D4h}=úFìn.>”Hh­@„JÍcn?J·fACfOŠp~@øMuqÂ@—L‰s×?˜L¤xè?UM"xÒBTMîsÌB¾N3o=?õLYkì?jLsgR@¢L~gµ?ªKŽh>¿G a“BxGå\aCG¬`ùAQF¹c*BkG­dúBtGeòC/G"eúCžG-béCÌHVe@ÎI‘kñ@tO®q4E|U@rÒG¡VjI¶Y§hqV›i8v)c·n8vÑ_wjkÅQ\„aL~ñ{Bq]³  |jɯ®%¸Â•¤yÛ»OŸôp”¿_£«tÀ^¤šyn¸îŸzr³èpu‚µŸÝt͸‡¢ýrӸ凉wÞ¸¢¦Ž}º·½¡0y¶etXµœ¤s“º\ y¾³.›™u«¢Ã¼m¸YŒÂg Cg|§G•Ñh™±)šo,¥Vf|š6ƒÝ^ƒ˜—0a-“âxÇXl„”lÅL-‡ÓuÂW-ŠÅ|hÄ"€Xq¹ fzu£u d­ªÆ‘«eCÀ¤¢¤{ª¼/¢*½¸« Õ‚©¿Ê¤›…ÅÅ×§v†Ám¤Ðƒ/¬s–Xu›œ¯‰·d­–‚Z_]’|Ä^]‘}û^Ö’]9`““8~ib–•Œ|(I‰š³†wNd™üƒ Ej›Q‚/PÁªØ’gk ½·5qÉÇ¢®u/Â=›Árh®/ëfœŸ¥ƒ¼V¡‰fܤU•·‚%¦pœA•6£W›I—ۤ–8ŸšR‹Yž(v¿›Ú‹iæ 3•Úok¸c¥j¡¶Ù¡} £ {fœîO†˜ˆ}ŸJÞ׉*af©8–—q­™àv÷¦¶–EvP¢?”¡6ŸÏ‘g‘ê’ÕˆŠ™9{D{O–xfz™-}Ü€úšéŠ–ã†ö“—¢×}dœ ½`FklŽÏKƒKr FçDï`ÜC*Fý^EFåbmC”HÊmEÂMâsDG_OpDF«M}rWEºM™wéF O;wUH³NàpiH—NñjûDhLc¡C“MG_šClM^ÀCœM­YAEÍO“S"D5Q¬Q—@‰NÞRQ@L0SÓ:¶F’R6=6Ià^¾? M˜k©@N¨u?¢M…w¢@N´r³>^LÛk[?cK¯fð<¹F‘Z"7ŒjSºIY>¨U‡MþGæX“`äeÂkUZw¢b££p—]{¨¡š\¡Š€{«hÒLJGJ²,3XI 3Ã:ˆRÄ:=AET|=òAéR]AÒC|T+@’B{T·@¢B\RB~Caf¥C%EfDE Fpa1A®AÁXØDúECW†DcFKW†CUF4\¯BñDZDKDW–B]GJ[GQdHXU déE_UùeˆCR‡e[EýPÿc GŽQ›häE^Q@nLDEPÇsëC¨OtøBOïoÿBÿO,o¢?MpÛB`M•uÉAhLèx·@iK§vŸA‡L—tÅA¿MùtýCåO{r"EµO—mHF Op¬GìP“rUDFRos+?NÃvUA†MÖx:BMKyEATM zºAJM„{DAöLð}U@Nâ~nA©P‘{/BßOH{WBdMø{OEwM{DÄM3y“BÉM|w“@÷M&{³<åLç|EAhNs{ÔBNnx½B›N9x&B'NÊy˜C‰O\weDFQ2o2D/OLn2DÒMÇpåEOÜrCWN`wäARN/y> N]x?FNš|Ó>lMg€F@êM}KAÓMy @Khw»CÌM{mªDLPGckC Q(`fDßScvCeS›cbGÞU[ioC°Mðe7E|NoœC³Nkv¥CoOçu.ISFqœF£R7mÊB¡Pim#AÄMˆkC{Ppý@"Q o·EÈT?m8DsPxnC•NÛq°>¡L`p CÎQoÕCˆQ#lEÿOÉk¡GmPno§B0O¤nÉC]P`kMC#PJiä@POjAÒPÀlc>;Ool¡=ƒN¡gà?™På_¹AðRàb¤=|OÝ]¯?=O€Y^@}LÏ\¤@¾Fé^>@ØDC]Ë?ƒF¦]D@¬Fã]³?¥D™_‘@ÆDta~A›Dà`4@ïC"__CIÀVAµFÎT…?“DU\;œ?ÔNÑ/65{G3Ó8J¥17¨JØ3Ï9%Ob7ž<U4G:W&5F;ÏU7ü<ìV9Å>0Y"?sGgv<µFp¨=ØGmme?IbgÔ>¾Iâi<¹K½o.>~MÁs?þL…s)@NÃu¤AÁMsìF«PoÑF*S³m§@¨Nj^?‚LßiAŽM©ha>ÙKßb@@ƒH·`Ð@ƒDp^B"Gmb:D‡H†f»BÊF eµDœG9eÏD$H¯cºCúGib“CuIh BäL½o\B3Ps©D5Q3o-H±SØdLYO`ÁOš`6g£Wf”ið]ŒhJbweÎa#ezsãnw®ù™ð{>Ët¯¦€õÆP©Þ{ ¾+¡öu ½µ¡`sg¿•¤ttѼs£wy·f 6x繃¤"|ŸºP¤åuƒ»¥¥Ÿs8½§†vëÀ§§évgÅ”¨ƒxcĸ¦»wûÂn§~z׵ΛU| ‚Žéps—„†khu˜ˆÙgª¢@’UmŬ?–¦j¦ýÎa°§¦‘'g «0“Žd¶©¾>d㘂ÓWÁ‘tK_Wˆñx fÕzn2^÷‘샂jæž’Ýl¥4’dö¿:¡Dvǘ©Ñ|kÈQ¬[…WÈoªbŠÊÁªôŠYÊ笷ˆÁ:§‚G°=š¼tc£·pH—y„Nlû–9ˆspL•çƒeG–®aÖŒéq×@1“N|C’ y®=S’Eu ?lŸý‚RP‘³‹”ùcÀœ¨l°½m›Cse¯ “éjN¦q‹~VZ£Ã‰S.¡©eè \“e~7 3–8ާ£ß›$>¬ŸƒŽÆ«jœÉ„µ¡6’Km¥•” i=¶!¡Vy«ÿ˜vX›{†¥_À™WvO!˜»}®IΛE…SY¨O”†nà°n›òu¬'›wम˜ƒ}¥œÈV‰ŒEƒ-‘|”{z—;|¥s›uÞ„¥š[ƒÁ›~:‘BŒt¤ŠBŸCaÜh~ÎIäHþpêAB’a‚?SDó_ A%F@b1AÿJ nDO…w=EHNnvHFMN°vAE NNy¶GáOøvKiR pæH™PYgnEÿO¨aCÞLüZ€A.IãVÉC•J‰X@HINVWrDOƒR9@ºLzP³ALJT0>×J¼WS=)L`¯>àLyh@µMÃoÒ@ NrO>—Lmi@¦Lkh>ºG¾b“=j@WRö4é6ßD 47øF¸;…9J}=ð=`M<)=ÔS^GTHS¡QbRWT5SÝgi7kÞwtÄ‹H‰‘uuš[“ùx> –2F‰îzzlöJIùNÄ(‰33J¡/5;Sá7RB@V=»C{T%>BUa@sBƒRÝACùV¤B9D_ŒB9F!a±@FD£YCDõD†V©DOEeUÑCE„VAåDº\ŠA†E_CE¨[bD'HD[ÛFÖN_`ûG^UüawGUY@dÇEÁTfçE¢Rxg%ERchQDQ‹k—EQhn®H>N%|“@÷M&{WBdMø{@BLÈ{”CŒM8{CYMNyÅAýLD{/AM¼}ºB8Mƒz`C‰LÂwD*MÅzLACL ~­A÷Kªy?E„OærUDïN´ogD/OAt‡CÚNuAB'Nºw1AFN†x+A!NywºA:NÚ{|AÝMÔª<ïJÒ|ÈCíN»xÚB)NÐr@D€OÛiFE^Q•^?áPÝYØ=àQ5cLALT&jÛCSKj™F”R^k)D®Oco´EŠN$x£FëNqx@FÇPºs×@SP\pJBQüpýAgP6pÿ?…PZp‚BÉR€nBDR-j÷EqPùodCíMksÅAgMsŒ@ÄM‘nvBfO°o/C™M­oDNÆo­C@P«pÃA=O—mABîOzl‹ASQÖl:?ÔPKmá=™Oßl_<­NkhÍB?Sí`ÔBvTÐ[³?¾Q_V¿@(PpW~95Hš\w>¿Eã`¤?šEW[šAÙFþYTBSFY\AiE`Ÿ?E¸_ A2ë7òK£4o9_TÙ3˜8ôV3×;™UM5µ6"X|:_>Y]YB²IhÜ?cInk>²G5k*@I9h¹>æIkŸ;ÂKt7>xN›w@?rNYt?5N roA’js9¢•.{ßž‹@rÄ‹ÃmQ†_lND?ˆUqTDމsMB(ŠpAŸ“‡uUE R‚Q6µ>—‚p2Åx¨†KÇÁª-†ö·.™™k´¢M…ŠCø—œz¤@‹”Ð~ZJ˜”†Tm©¤B•…{B±’Ÿ‡|¨6™Uƒ1÷‹¤j¨ Va#ŸÒŒ7d¦—Ž„t_ØŽ¾w{Kw¾wGC‘òy9Gá—©‚ ZÏ¢Òõoü®g™*w0²Ù:wx¬Q› }išDƒ}†EÖŠ xhx“’ôy¬}Ι#‚B‡›ž…q™~V†—‘oõ{W”]æcÜ…ÝKºJznBABfd(@òDGg5B¨GYiCËKÑn DúM"vÍD^MŽx‘G~O‡w5GÒOvsI/RCtˆKUÂnOR^`nöKè[œhàF¼OB^AsIX;BßKYÎDNùU­AåJ¿Oû?„IWOOCMM;UíA O]YxCoR±cxBkP®hèBO3m’ACM"nÓ?WLFjà@†KZef?ÐEŒ\v<ø>O/5æ6ÉFÔ<ý;jJ¥=Õ>ÑO¶?e@£RÐBl@¶Mä\¹QõMà€­3q v>„üv±€èˆÐzN4‹xVž”€\¡‘€~¢‰În$iM-HëUû+P6¼NÉ/³<æPÛ4@"T0?˜E/Uê=)BUx@gBUÍBöC†WõAžD†[C—Gº_ãC¢H~]DrGÏXƒD†EúX^D4Eå]ªBÙD]aîB´E¯aëBÿE‡]nBÅGR]ÞAßLº`¥ER—cãEÙVPd“CŠR!edD”R7h@BéQpg>BQ\iîD¿Qýj/G1R»jxERPGmFuOæq°A˜K4rÀCMfv’CwMåweDÚMVv=A„Nu÷A'OxnBOævMBNtÔB´Nu@:M­v@ANUyà?†MØz@@AMþyÁA?MÙyˆB©L•xÆ@£N´|5AkN”yûBÖNyxA“NÖzß>ïMÔyÜA§O*y BÍNtCfO›i›C†P ar>ÉPt^ì;gQŠgS?®RKkD)U;mwCkQŠmdEoPùpøDMãtïBcK_w EàO yÆ=N2sõA?Q2s–?íO·ré>|PpZD‡W(n²C7Q‹n¥G½OêuÛAÕJkvTBMðuCûNŒsSEPâtÎD™OsÍCVN6phD‹P·o*?/Nôm<@ÙNKnÆ@PÞm·=mOEn¥=›OjsV=µO)q%BìR'g™AS3Zˆ@µP°U°AäO UG=aG\a>ÃEc9AžGs^_@NEÀYp@ƒB1[`D^F aF J’aUB4G?_ë@ÎE5^2AaF$WUB±HxV½=6FÉU>LFÿVë46:íR@1I4)M)1¬5+H€4ç:}JÔ3Û7ËQý7Ô9ÿSì29kUË5ƒ9¶Yý90>c+>ÉC¡g_@;H·f?BËIþe>EÅKýf½?¬K–jÞ=iMµr‘?“Nwf@NAqž?Nq˜B÷Pgk^E¼R9eÐC.QaeAoMe¿B MLeCFAQ…gC‹L“eªAÄH;e4@¶GAhÛ?ÕG hï?®GÓf BúHLgHCÝIÙeTD²IIg?¸Hûk#CÓNMr1A:NÞvƒBNÿyYF¯OCvñF¯Q~l­DITÐfK¤[Og+Tnbô`JZxd]Y¨j{f€vsu'`© ’ºo<Å]«A}ÙŦ«h{TÀ¦ú{ »¶¢¼z±¹ £twѸ £Óxž·¢ó~«·]£ý¶dŸZxF¶8žrŒ·YŸ@q–»í¢¼t Â×£àvvÊ“¨/y“Ê?ªE|ÁÀs¨‚à©ì—6vW™Tˆ¶‘­xNx•m€B]›€‡ b~žÑŽýs™Î‰ðy±“-€±dK–(žX•É€ZZK¦yVX>…#q¯H^ƒ7oE„ŒªxSPZ™g†ÓeŒ^q¡Ÿ~Kt· ý”kx(ž©”è}û–:ŠƒéƒJ~ÖŠyv&w[’{=ñ˜ƒ‡Ašù‚¿Û˜„ÿו¤o½{”!LUx}]C|AdŠ?? a]?iDÊiYAÇFnÛC”KêrÜCoMŽy1D5M^zJF>OwŸHØQs3KâR¬nOûVÃo,\æc¾xjZçdwIbR¾eÇ?‰JŽY1?PJ„Wœ@æIÄRZ@CH¢NÅ@rIòP*C8N¹UEÒRµZJDxSjaú@éM d!@ÿJÛeÐ@ L®j_@9LZnùUWA+BþY£AÝC0a÷?MB´a¦A^EûaB$E`^¥BÉC£]F'Ea#FDÖcíBÛA_ŸCGFf\²B H+]PCŸL–d!EÒRvg°FÔVe E#Se BfR{e˜DSufþDR–h]FXRk·E}P­k C"P,naCOŒrAúKÀv®AµK{B“L\yýD"O£y*B·M}x&ANxï@pNëw¾AˆN,x÷@»Nzž?;Nðz„A£N³{è@™Mæzó@MM§zÝ@[MszO?•Lry’C­NI~l=­J;}ÿBO}=LÀz»?ªN-z…AfNRwjCæKœuõC-LÕzCwK~”CLµ}YCvM|ýAÞM¾yîANïx'AIMtz+@tMÙzÔBP!{šA N3{CCêMv{™BøM3z§B¥Oz'AOxy5@*O7~P?§Mµ|DB±Nmx#@îNvBêP$yÛ=~LGv4CøNZsfB¡MYj2?BNŸdÙ=ÒQ f–9¸P2i~@ÂUZlÖB–V0n‰BQÀq!DYO¦s6EáNÝtEG©OýxCûNˆyIAÁNuD?OptiBP=wBûPp±CPS¤onBÉPkuóBCM xbBlL v{D)P/t;DÛP6rE]R¡qD°PÃpÆC^Oño×BçQ o³N—mÔ<øNyr?ÆP+gJB*TÄ\ü@ÓQ¢X†A¼OÒV›>ÅG][9oB8^?´F¤]H>CÑVŒI^a< K/kIÑLìuG>Lo ¥M‘Mds£Óî^ÿ£ªŽá_¥Ø‹^¢Šà[ƒÆWÌ™‚$\¶š‡ i†Ó{à`â~újªNÞoÉM7™©‰û`ºë£yîÊ•°Œ‚ßÍ…®C€1Ë⫨‚tʳ­Ñ‡¯Ë{¯}ƒïÅ«¨Š'ȧ–j½ ux*®$–»o}¤ƒk! Œ¥iߟ9m46t†X’"{Ø]«‡èsHW2#hSLІiDa•´wCFÞŸöŒX̨š‹€rM¯”y{÷¥0‹Ih9 $ƒQš”®vºC„_vÜE3”Ï{TL ™w¾Zø›ˆŽiÖ•o‚àb܇ r˜Kãe›=JÏ`û7dBZ³6¬7ÇON?.9€MD@QUGW@ïVMyO¢iü„â~M{ËšMŽÒwß”—*€ÃÐŽoug“Ö‹ÐuV¢‘‹~z¨­’ÒÇçŽnzp{¯w¼l²J‹GóSÀ*j2Pn1-:éT%;ÀCQZŽ>YF”\~D3H]¨BQDïYA.CF`-AFBÃeßCÒD¤g§AàD e3BE*cºBOD`C³Cª`3CEB`vDpET^€E2G4[:CIH \6AgLcGîUZi EéVOd]EƒURcÍD–T5d?E˜S³c@EÓQedF0RáiõD„Q—l0>`Mkn¥?ÜL†s @AKvx¨@³J®z.CùMC{øCWPÖ{xGT•~øA4O¹yœ@Pz?ÝK(zC?ŽMQ}I@¶NÆ~Ü@ÁMz-AÈM}yAWM@zQA¢L(zÆBvMöz!D–Mò}A±L|¸ANÌz @ÏMåz<@¤Pqy{@ªN@uÇD–L[uzEL‰zCíKt}½BLH|@ L›yNBpNÖyALM—xEAÞM¿z†@¨N {¹?…Ny”AJNÉyô@]LOz|AªLŸ{BN2zAäNHz¾@PÀ}æ=ñMæ|VAšNO u-AP)qC·Q±r‚BüP#x—F™Qdx…C*Pyq0FTäq”F+V¸o†EU°mkBPm}CÌNÚoöBJPkoc@ Oðn¶@•NLo‚BCP*n@%P7lQ@«P³lã<™Qxk“EÏVÃgE,Z™`Â=ÍPhZÑAåOÝ\.9ÏF\ =1G6bï>iFi[zAhF^Vã?hE1UëA G\™DeH`@CªG¿^CH.aCøG-_#CòAÙ[ýDÓGs\G=KÄbÒD§E_^94|4hP 3è5’OÈ0";´Q¯4*;=SS6Y=‘T×1ý: U·5u<\WR9À?¯\Â;GF dZ>LIlkK= GZk£>yJ‹gG?KM1kp?4Oaqu?ÿMÃvLAãL¿x@3LýpòBNØgrEÊO˜[ B×N[]!=_L¶e\C¨L&oÎBûLòmcBÖIŸgë?ˆDÍ]ãB©HA_r@˜GkdsAÜGWi¿C§HÌl^B HAlrCÌHNrC(J»t¸E¾Nív]CPN y$C0N/xó@ýM¨p)FÏP*m+H)SMkSI#XþlÉO­_/ošR²aGn M3_Çmq’eÛk\d‚nt»¤—}¯Äö¬é~é¼»£xs¶6¡ wĝޠÂv"²G Õy¤²Åž¼w¡³gŸVt ¸ð¡&wh»ÏžŸz¬°NšÈqàŸ’«m¹ ‰’tr_ª×“ oñ­>’9s$½î§?˜ç¢ÿ–÷ؔЅ¶wl™®‰‚sΜP’xòžó’·j²ŸEŽÃf Ü‹ßbO¡gŒÖ^Ç iŠË^-›Q€½Tš˜Å}XçÉŒíjÍ”]‚ñcÀ„¡p`S4„0qÚ\õ™Þ‰üiÀO­ú…EÍ:¶9ˆÉo«{;Æ®¦ÁÅå¬C…7Ʈ䀗Á^¨¨Â¥p}+´ÌšŠsU¨«“lŒ£‘k¤žÆ‹4f‹Ÿk‘i,—€¼c–“€sg9Ùw…bE†·nNR“Œƒq’CA—É}w@¾ƒÎK·¢…eV˜£\„4VÈ¢©ƒ’TA x‚ÌSSš |OR–}üM ˜#~P]œì€wUÜI‚ `·‘'{ZãˆÆq K’‡qâG<¤xRL²]~US†zuL+‚Pu¶TÊ—@Ž?wá Â—ù}‘š]üx=’‡&»’L‰à€å—B“Ó‡u“’’b•›ëR™Duru—û{)~¼™ó„žŠô›:Šç‘Ò™Sƒf’]™úi»-— K'Qýy(EAic\AcB—^sAHUfD‰Kp—D×LxÕFENÀ}˜HN%|gI%P¼xúJ6TûyªNr\}oWebƒ‹h_q³r{VŒ¯hãqÄv°H+R¢`q6¨?ÐW;n@x[;ˆAŸZh=›DQ[{>…G¿XlDìNsZîJzVZ L.X4_‡H‘Q0cÈADKWc´@ÌIQdæ<äFø]ã3ž<2S¿6Ü7tN?X9>O”C£BªSµMpK{\$iˆl(xí”ñÇŠ ¤—=ƒ‚šòwÅ‘oŽWv2”9ŒÁvs‹/z4¥UŽö€ö Æ†|šp\qLºIÙSp+â3œM00:ëQs9ØDýY„=HY]C*JÙZ>C‹GXèBîDc`K@@md—CÎD7f#CcEwe’@‚CJcŸAsD©a|BEý_)CF¿^žBEš].CèDÍ]êC8I+`‚E€PõdME»UAiÈDTW—g/E›W”dgDkSža&ESlc¹CQ-fE\QYkBßNOkèAæN˜oA/N[sx@L¿vŸBQMù{S@FN˜{\@`Nýz'FÜRi²DQC~¤A¾MôzÆBvMözåA·MŸ|ß>ãLÓ}GAM*|dCuNzy?ÝL~y2CˆMõyôD˜Mßz!BL0|´@VKÆzÄAcMèz™?CLÜz>APgyŒAžO×uSCËLYvDÃL!{ÔBrMÔ| C¿MòxÈB[N£yð>µL>yAµO÷yA¹Næ{×>ñOP}<ëL`yèA_Nëv¢A}N“xBN2zíB5MOz)D~NŸ|`AmOí~AO¸~—AúNŠ{0?[NÞxÙ@/QEwª@“M”wñDN‡tñ?HKÑn´?PMejV=ÞKrdW@LØhk@GM¤kíCHPpXBDMq`D—Náw¸BƒNÔxExP|u-EüS³sÎBQRasxB–P’tgF£R0tƒDP:nÜD¶SÛsƒE´RAw¤EœQ«uËC’QrpE&VºqNElT6n,FU¿nDQZoxBOOVr?>'NŒocB QrmþAîPÙn­@ PªmARƒl@oR¨i>¡Q gN@(S©cuB=Yÿ`¤?…RK]SAFP¯ZÅ>JÝYË;“D<\?~EèZ@F=YŸ@Gô\è@HJ`ëAHí^úBuH;^CÂF ^ÍCÚB^_xEçH]ØD H‹bÈJ©Mq—H¾I²g85ü3{Sª0ƒ4³N©/e6@PÕ4ì:“T‡5Ü;xWý6v<9W18!<;W´>JE ]½>THob=ÊGÁj?ÃH§o`>»I´l(?¥L•o>¼MZrE@)O}t®AuMßrAfM,pêCbOYdîHÑP¢X±BžM)PoED?—R]ZrS\eˆ¨†¡‚û°¥”;¨˜Hƒ©•_Š vy‘(ŒKy°™ª%~ÊŸÞÏ€k oŠ]k¡EƒË΄unël½F|AßT‡+5ROŠ2>@vQ(=\J[¾<¤Iƒ\*@ÕHbWBñG“UúAˆEÖ[÷@KA`ŸDkE‡b.BGE˜aøAèD#`ŒAýD‡b‡BMEž^]CèEóZŸC6E]äChDÅ_C Iµ`£A‰NðbnE(WÍgÞDèWÞg¨DÐScrE8S;a3D5RdÄAªOfDÉOhUD?O8iUC$OÙm$DÒP¬t"AöNjx ?pM§{œ@ôM}?B—Nyä>ÜLoxó@MM§zàAÔM%zLBöLÍx±B„MÃzå?ÈK}NçuyA(NßvDEbNÅsµ@dLÁlê> H>h?oFÎcAoFµf…@Hˆi=EsMWoEÂMÔqúC¬NvaCZOÅxƒDšP{u.BLPpîCcP…q+DÈOÕpuFQmŽE1QÍm!CQ%pûEPR¯r¦G¼Ss;EÂTÆrÿDVq©EiV‚o‘DRío3CåO¡qoA™N@t·>ÝN‰rWB+RžnP?=PÏlÞCoQ½lŽ@µQ$g\@²S³a©;òQG\,?ÔR¾`Œ@ŒU…a±A!W_nGÙV¢[¾AÀJ²S+?‘D9Xœ>HDT[[?gF6_?”FÑ`,>AGÝ_AÞG]½CºHµZ DFHC]yF¸I÷VëN‘M’]{JCOÚfh™fp~±[iSNnÁFñ@aVz/=2aMo1r6ÚR2n7ŠUA8-<ÚVq7"='VÑ8ø?õWd:Bq\Z@¦G9dÆ>’Ghk{?ºHqü@KDp±>ƒK?qî>ÊMÜtâ?6Nær¨@mM’p³A+N9l D©OY_FšP¶W‹BíMÝV³BYNÇdÌAÃLän¹AßI•r.AGwlñA©Dèc³C|Eçe.FxHžg CŒG”gND JZixBâKAqƒC¿M| C0N?z’D¿P‰v DêNwv-EŸNgz1DLOèu^EˆP_p’IdX‘j•Kü_âi2KÎ]ìlÖQEa²p1_d0mödÒe2mçDv\œ³éÏyŒ¿t©OOº4¤s~¸¬É›”z¤¥a™£zÉ«kœA{Tµ@ lz<µüùu¹ɠu|̼¨~|´%œRy›¥•·pZ¤­“ðoJ¡~ŽYkB£J‘»r&žñ‹ZkZŒ*|Ä\Ï…ö|js†{æplˆä‚0iŠ+€7aj*°ayägÖ”Q†dmS¤…•8~¥ ¬s™’yuG}1WƒNcd [|à`Ð*w8UÜëy¾[±¡~št²b™ø|½³Ú˜hq º‘F}¼GŸf€ê³]–ØxX³–{û³¯š€}­P›‚s§H˜û€ü¤æ–…| u‘Ls‚ž ŒEjL¶ëž“x•¢ó’ÏhOš'‹ë_“™ …šZõš…†YO¡Á"f ª4”jpªáyd–¥¬ŠPUg¡†ºQ 1…*R‹œ±P‡–½|gL{•©}ÅOT–¿}OÖ’­xúLÌŽ™u|Q}‹¹tæPÁ‰6v¤NEŽÈ{M%—›R˜À‚ÍW™—ˆ†ib$¤˜—ww´ñ£å~T­wýyªÂ›õרlœöWœðš&ž£ä”Y¥¾‡k‰FŸ¦ü}ûš«:qœ…ôŠàžªˆ•¤†xfŒr“Ö[&l'‚Ì?/KŠkwBPC÷^ÈB¢B¯b…DH;qþD}LV{VEdOm}(J|QwÎMNQJr‹N¤T)sV‚b‡xŽcÀn¥€(g´r‚cfmtRP:ZD@XM#>cBYUÿ9®A WÚ;wB2Y—9B _*<’Db&<ãBj^,;‘@{\¼=F^/GÉPudJM»[igØMêQ–\B?qAIUÖ6ø9 Q658ÕMÄ<Ÿ­HµV*AŸI†VyB¸I’ZYCáFB]+D0F5^ÄA¿E<_µAþEÝ_Û@éEÑ_Z@´EÅ]zAõBZDC‚D—YºC˜E¶^ÝBeIñ`CCPžeÞEWÛiÅE¸UfMG´S\aÉHS-cÐBÝO¿bBAÉN¾aC³M\*D4M§^õCôNn«CPþu">«Nux“ABPÜy–A½N*wšBÝNærBNNsCB¶MmvëDÊNËyC N1y±D*NçyY?³JŸz…A>N| CÀP°|ÂDÔP¼{-D:MrvGïOæz)CÃMX~…?øJˆ|‰BÆMi{dCuNz_BâN'u?CóOWuöAÕLzCB1M/}ÏAêMz}B NU~2B`MêeAMˆ}ÔCcNùuhB•Nét?NÒx@@NExW?dNŒt‹?ðM s3@ËKw"C¼MÏzEöOt|ƒA!N‰~þ@5L{Ý@[Msz?AœNst}@9NôsòBANv†EaMqs;AÀHJl@@E~c‰A`Eú_ÞDNG``VBüGÀbàAJyk‘C.M°q×E†OvRFìPØvNDQCs±C PÓoF7P£ràC{NCqGCˆO}mCEP+m®CÈPNoFþQ"n™F"SMnùEóS-n>H¯X8mwJá\nD«Qülk@KM¹o‰A½N?s©?DNÙp!A'Pênñ=7O;mPBBQÌiâBMSfeBÞU’^p>fTÕYf:R<[AºTAbº@›RÃ_MFŒQ£]Ó@H/V@ƒD>YŠ?7E³Yæ?¡FIZ°AáEáYq?­GÈ\ÓAGHÄZ¶F6ITU—C›Iš[‘LµOÞP‡aMRÜRƒn«igŠØ„½}(‡¸}uæTíNÅR_63áL{/û0ÉR57€Uµ9¢;cQs9+>.VÁ9µ@³W¯=!Eø_j?QFdÛAcIkmG>“HömŽ?÷JTmƒ@=Mìo,?zMjtì?[Nósþ@lNço[BGO(j‘D›OW\úF–QÛ[CoNÅ] CûMXd£E«Mco]DÎJÉpHBG g·CÄFÛaÓCHEád{D«GtiqCÍGpjŸCMImëAœKw®C¨M€CMZyÏEÃP˜v|CuNx†CÒMáuœD¶O¿tfF QimŠI¢Xf•K›^Pb‚M]ucÇQÝ_˜fãUübøc<`Îf[`†Ú{TZA³Ÿ=už»d¨S|Ͷz£n¨™]y¢%–€vb­Xœóy…³ž©xi³NÜxµ{ž&mº ¢—²žMáªq—sâªr”ïh±²šRw纥 „ä§ –Ók§5|lU‰@~©g*‘”ŒRu("ˆ-c„…zV‡‚ôw Zi…ŒzÀbü‰ÞÃoܔב‚œ—¯‰rmø‚¯ex@V~ÅfÐF5ˆ£u0Zî~Üa‰•tS¸ƒ1pÖTU’8…7oÁ ?”}F³’ñø¼˜£„¬¼t¡¹ƒp²Ð—É{'´Ì˜NÕ¶“œ0´^ž@…Ô­}Ø…•¨Kš§~¦¦–÷x›¢u8r°¬œ–™pVžƒ‰^ó›T†³R÷›Ð†`PŠ >SaÝ«–pñªÂ’(fã¡…ÙHöž­‚MD׿‚HçŸQ†Sôž¸‡·SéšÎ‚OQ˜–µ~•Oã’SyàM…UtO\ŠnhJC†?m HLj!sÏLÒŽyzÅS*˜'„˜W*š’…"XÛšˆÒbºª^™«w]À­$‡­¾%«†±žƒ–Ÿ’–nŒº“B’ñš]ˆ—Üž…¦‡‡œ€ì~›ÖÔ€ƒÓ„³Œ¸Ÿ$ˆ=‘s›tu^}ëŒ Iû\fyÁ7ç@½e½D’AraE®DxfÇDÒJrXE‚NÏzF®OŠ~ J$RîzSSïU‹sõZ]qq2V–\Vp Zôeòyi\jh:|ML‹TgJEKE|Qå=>=—Q=B˜Y$;ÎA©Z¾;KB»\~;ÍCåaC:Cic'9 AÕ^ =.An_ >EûcN@J—dCZL´]çCuHWC;°:¨T…2‘5—RE2b:P5$@þOŒ=»AOFGJ¼L;e÷`Tgëv®|r®¡a…ë g– xaŽõ† nD’ŽŠ$t]{“‚,ŽŸ†ã‚:€Ë{¹~{utOvcVëQZZñ=¯C~U“2!BlUú9ÄHèY0;#J„[¦=&JÖVÌ;”H—UÐ;ÿIVÛAöL [nD¾K_šD+I1_ƒ?;Fœ[G>F‹Zå?G»[&@ôEf\»AE÷\úBšEá]×B F†_^CöJ‘b”DQŸgãBæRmYFUojKG^S†a FQü_œBXOEbÅDQÊd©GªPi_úCNIkõDòNÎr¯E‘Pñ{Ž@ÁNnzIA½OwøB6P!tôB“O t´BOšu©A³MJy­DN‹y¾>¥K xŠAN­w»B O‡ywA@N0zS>ˆMþzóBÔNi|¼E†N|F’N‹C¼M^ƒO@GLA•B€Oç|;A MLzáBéMGv~CN v1C}MLx~EÚN–x,BæM4{ð?hL @hL€ÅAˆM÷{åCÓN6u¹BœNArèA_Nëv?B—NyrBOx¨B²OÁw|AEM1xp?;Lfy›D›OY{CBüMx|ôB¢M|}/?ŠLÙyCBPÉu7B¹Oq6:Kø0X/„PO2'5~Så9†;ÆQe:è=1V7LÐk.>¨Lîn¾?wN‹sÒBP_oAA-OÉnÀ?»N"gFDŠP ]ED.PÉZe> KÔ_µAÎMhpBMMl›CÆJjHCÌFpb¡CaF4`E›H“foD IBkJBIój-CxIÀpËAœKŸyAC½L€„CÃLzÃDÃNFvàCˆNw DêNwv-FxQœsÑIŠVþk†K*\ƒdXLÊ\å_!ST[Z]ÃdÚ_[i&e¥m—r“h¬`†@gD¹¥—|¿»‰§<}r°×–z§S˜ÕxϦ˜Ëvl¯œ‡w%´ ½wþ´ëx(°Ž›¿w”³²œ%€,±œ€¸®%™êv•³ã™~sµÁù§üƒñËcµ©¼È¡ƒ}dzˆŸgú¬€õiYœÔ–m€ñÜ–uzŽàƒÚbCøvð^VÌvÂhÖ}gp–…÷€ëqü˜raYàum]£E#tŽ]vC=‡vÖS·‘‚BbÕŽ ~McVƒÚqÙ\Ôƒ7w»bš Œ7sR­ëšn~컣í~¿¨¥ó„+ºŸ ƒ ¿q¤¢‡bÂr¨“‰ƒ»°£‰Ä³û¢–‰­]=ùªr™hu¹­­˜þwm¡ùŠ\cG–‘zaGO–àzÑ@®›N„ K Š+]¸£¶‹áa¿¡˜„ÄQ휖|›Bóšæ|©D¶™e~8Fà›y‚ìI ˆ—R' ƒ‡V˜³}:Qu¹tOR¶otPBŠçkóIå‡LmH¥‰0rJKSîwPQW”f}"U„–55\7™K†êb ©–ãpû¿¶§m€µÁ:©h‚ž¯ šƒ¡—ŽÙþ‰ŒÈ˜i„U‹8 ~ƒC {°|'œ}+‚Üž~†‘‘Ģ⋓ɛÿq+tà‡xG¡Q¸tç8>g#A A2ezAqFõiéBÕLÊpÆEÃP¨xœEOPq^J¦RQ~ôXM^fy—[,cËw‚WRd w.Z fyžP"W½r•D;J…^¥AæC°U;`@…Wâ8O@î]<í@À^d=A`¶;ý@íd}<ÏBjf’>rDëbY>.E›`÷=áEá`½ÒQõ>[BuQIïJGN bn]feÀŽ_|O¦¡ …²šµ•Iuí‹"ˆWmj•äŽö|œø•O‡A‰&s|wÂzƒŒ´m~j'x-NÚLUE<3EkT8lGW”; J"Y§>­J"XÐ> I÷U»=+HšWw>aKgZŽ@”ND]›@ßLD^RBéL#]œA5JýZÃAÿHAZ*C J Y”@iF¼UòAxE©WiB:F _KBH(b@C£MOd„E¼Wh?FÎXæjfJ‘X­lKIRŒgsFdRÖe?FR™fF‹Q¸e/H"Q.gjH¯OÍp¹C@MèxàB_N #@HNª}±@IOyºAOót\>åLuNAPNxO@uHDWOu}AANCví@dNBvÓAOŒt¼@‹N™sD?ŠN¾s±B`P…síD¥QXrÄDT4nÚBUQ¥j´AÑL±nìBdN)oÎ@@Oünµ=„O«mWBŸR·f†D_UÖ`tC[Uc¯@ SÝcW@ Rƒbå=ŽQ¾`&CNT>_‘<:N¬U¡@•KƒYg?³EÃX™AöH×ZBŒHZöAGZ±A˜E¥YûA%Iy]‚AƒH_^ÐChKÕ` A­JbõUÑLJ—ˆBfܢꘙyI–óŠÈp8…ÑyqlÛdiZ´_"?N7FM2v1>Q1G4PSA:M€K*mS=àKôl?QN¦pFAˆO»rØ@=M^~A;OµiðC»KÔm>CÆIªhTBbFÀdôBCGJd†B¨H°hC·H†i.<ØD"l_D¶M;sÀA¹NäzóAOZ€¨BkM]{ÎCÙMGuŽDˆN÷s¼DBOOu*GåQsMKqZøm KE[eMwZG_SSVÏbCeb¯kmt°lD|^€Øp]›<’Ñu·¹]¦n‚ ¸¥(~«œ7v*§“™+vn«0›“t»³"ŸÊwi³øœdx,²(›€xZ®X™ÿu`¯Tšæww¯6š yµ®sšxyÔ´øzÂǧ$…÷˲§gÅ¿ª+…|®K™{äš¼’†zÔ¡…›.Šâ¤êšx˜”‰PiR‚Ex `µ|Ît8mL}Év.p…t~lº{rc`pûb TwäfwK–ŠE{îXì‘ö…Hgc‘[„ l¾‡íwçgß…Î~i&ŠÈoî ë•™y¹¤¡N~+¾t¤‚|¸ÿœ¦‚®Á¡¨zŠÿÇ~²‰0ÀŪú¬µ*¨}†/±2Ÿà}ø­›ýs´´—íx\“—:S ’ùwþDÕ–Ì}ÊJ}žj…¿XŸnoT§—ùu¿Gä’ìrçD”½vxFÌ”Šw´FŘÃ{ŠN1 D…©\Ï¢‰å[!šp}YNe¦uªL’…yPÇ–D};NU“"y&T¨ŠÙpTIœŒFrõH ’ïwFL»”Ø~…X·š¶‡%f䬘ãur¾Ö¥I}¼ñ¡Û|¬©˜”è„Û‘û‰*…ŠÒ–K)Šiœ+}ƒ4áw˜{7›€{΂Q… nˆ×Q—+l{ov€…FLŸo6:@…c˜?uD,egBâI‚mëF&O‘tŽH=R} H R&ƒATL]‚]Šb1|Ya>i~i`³lúª_ˆj\jN£WTs+D=dDB_ì>‰Bç]°>Ý@ª^¿> CÁb—?DDXdê> EbY>G>aÆ?Jã_J?8I^]ª?ÁGÎ[©; B4U·2Ø5•N6ß7ÅOH:#>\P=:@‰QôA:AmS_FP> Wï^ûWTeÕˆ#ŠéyNœ2›È+—ý’ås$K‹»rT’õ‹£|‘R‹F†ƒ †E•€r z¥‘t_ï]pEDíQÉ:»DVÒ9;I÷Xž<„IéX[?I'Zf?ôGÒZu>îGÅ\ÿ7QG?Z3BO`ÑAÔNW[,DFP1Z?A·K*WQ> FýUÉ@FáWXAÍD#Y”BEþ]XBÒFdè@ºHÎfÛCOûe,FLUä`ÜHþYøc#I4VrhñE3RR/g¥FR¤gýGDQBk‡IKSÛnˆH†Oœq¶C_LNv'AýL:~[?ŠNc{`BSOtvïB0OuvvB­N9xÎBtNy4DO {ÕB©MÀyC—MÁyÃCcNxzC­MÔtgD¼MÞzæ<üIF| BÜMœ{¹A°M({û?MF}…C;O}GD~NzÄEHNyñCïMˆvëBNTw?DIOÖy¶BNËy.B¥MŸ|Ã@ M€’@¼LÕO@ZK }dCN‡v D‘Nƒr¤FO:w©FNÃy¹E,M|]BYK|ÿB¬N8}ûBíNÍ{@@Mh{#BWNƒ|†A³M[{'A“M‘|`@¦L]{ÇC}Nmw’CûLãrB JœdwCSI[ê=óD1Z?ÈGacâ>uG»c(>“HfB?Jo.>üKûtÚC¿P›yAÖMIy`AÄMJy@™L¤w\AŸM°Oìl|DïSîdÊGÈXE]WF Zc„B@Sõc(A=Qrbá@RavA;Rð^§=žMÖXó?UIÓXÁ>DÅUžAyGZ•D?Há^³A×Eu\ÉBÇFÒ\kBH]4BâJ³`:K˜_ÑE£Ma_kkY†GO¯›’vZ»«d†{µÁ£M‹s‹C~ón i Yô]Ù>º5uM.0.0ÈP3¼6"T44˜:ºSµ2>>¯Vâ:›CSWÈAîHo_>ÚFg‹<&Gtkç>«Jp?>pK[nå:vLÅn@NAqÖDçNoA§NMnDpR`gGCÚQ^±<òL…XÖ=œM`9@µM iÇ@ÛI@nATFRixA.Gng^BfI_h…F Lêh9B•H¬i@OHnœDzN:v´>MŽ{ü?bN"BÐMòy,CM¼tE3N.u£FkOjuzHŽQ„sfJ¿X2p;K^¯jMÒ\d˜LÕQµZ‘V>TÆY6h-n”gÁƒ‡rŸŸ/š{Þ­žŸM}ˆª’@{|¡u™6s”¥;šOtý¯†åv ¸ä¡Ñz£·zž3}a¯l˜‚x©Q•euªž–8s៱•cuž«Ž]l—«ý˜•}±¿C©X‹àÉJ±ÄP˦²4‰SÅD°ï‡&²á¢^ˆ¶¯n¡ƒ‘®Fž‰<¥0šV{X’ŒXmĈGòr‰ŽŸ…ÖpÒ•÷°pXŽ6†©n€Å|˜iˆ{sbâ“b†l¾•F‹qs½•]ŠÓu‘v…Àl””s»w§• ’S~¼`–1|:²ðž‰|„¸ïŸ¬~‚°8˜Ðz鸤©†­ÆÈ´I‘Á¼­Ç‰ ¶~£c‚{«™tr⨠˜"t ³Žœ¥zç™åì_p”{¨Z0ЧqÝJƒ‘…z#H°ŸK‡°HUŸ›7DÔ•4x/GW–®ÒXÅ—[sX·“7w!GY”žu Eÿœö€¶P¾¢ˆ‹T´†#Q^™ Š‚^< U‘Ml¤£à‘˜h›£„r\£‹kr¯F»‡oªCŽ(ušE’–#pNó‘Š$fr¬v˜È{ž¶‡¡ht°¯œ€ûŸ`“ù‰AŽ%‹’ln‰“¹ƒÜŒµ—L‚^ˆEšÃ{’€˜ã|–„3—ž‡ ‘½”‡ÛŒ²¯c‚f±{CpG)iý:{?Š[î=Eù_ÕBkM0mÑFNOÒuG=O¢€ÇG4Rƒ†óWí_…õd2hƒ>mIq5‹Ÿl›o ŒÃ_å^tòLžRÍqˆI×OŽkGM?h­@¶G að@œFºZÏ?/DiWN@ODg\÷@µEÌ^ÞB/Hd`ì@¦G a=›F¼_5<³FQ^;>æE^Æ>F ZÊ:ATå2Ò7cKô5á9ŸJù;$>¿LÓ=@? QÊBrB~O|LJ[MƒdF[OežŠv‹¿xÈœqšh~­ž—7xš·’|S‘&‰rƒV†›ƒŽßy®Ì›ÄlYw5Ç[Ü\biÂD†EäP;9D>Vn=LH—YÜ?Hƒ\Ž>F‰^ =ñEà^m=šH\n;DIŸZw>aKgZµAÖLNWAL¨U›BÑLŒU*DLRX®@*H€[Â?¡C®]?µB·bæ>=Hi@LJžjcB}Nôa1E%R×ZùESÎ^XCP g0AˆNžjE\QYkÝD¥Q‹i(AsOñjÆE©Qql GÁP8nuDÁMÔr—BL„yØAÃMI~äABNR}×ANwÄB]N·uÂB6N•xÑCOs{“IvR«~gHQŽ|ñBYM^{=?OKByLDOûxJB›LÑzþ@5L{¶BrO+yAäNHzO@;Mº}¶? Lß{©EOçzYCÇMXx’CWO’x¾?–MÇx·A›LÂyC MyE®N3zj@ãLÐ{§@BM }§BÑM{%DJOç{$C0N/xõCëMuzEN ~€EãM/|çBMAy,BæM4{ÏAêMz}Û@ÊMŸ}AOh}©?®M|GAyM{A MzBbMÉvvB.LuoÛBgI'cCÈG`ñAÚFbbÙ=EEÿbµA‰ISdÎ?kHˆh@J‡oÝ?M¯wÎ@^M–xÊ@®KžzÐ@ JczûC®Lßy(BÑLÏyÓ@ÌMÁ{]?[Mu|@)M«|B@bKPy8A^Nìw?PNEyĦ0|ÒÅ!¯”…;Ű0‹û¡i“JyQubÚTJ½9éIº/Ý+ëL#4¬8 T5Ô< T]4Ö>>V–;®BfZÄ<;D_<ŠE.hå<×Gsp°??I–qƒCÅM p÷@‡NYqy@ NŽt_AyM-o‘AXO0mÝC4RCbXE˜RHYBvNèUD?L-aa?Kåj¾B¨IYpå?ýC‰gâ>ÒEëc•BìIÛh DœIMjüAžG÷k˜BIds¼B×KÞx@NŠz?­M {'?ÂK³xüBöLÌw°E3NŸŽz8»Ø¡h{~½ÃŸ }˜·Ü›x_ª0•ép룒‚nè—F†G_6‘pbƒ¡ˆ•‘€è¼®«¦ÀÇD³‘GÌ·ÃAÍ »xGÂe¯]ÿ¸q¤›±¶C£>Œ¶#¥8…ˆ¨wœ7B ó–ÈŸJ“Fv­¡p•s;›‰“gs’‹Jn]’f†¼m┈BmÌ•´‰èt¿˜é{á•-Š*sþ˜†ày Ÿ2š%†0 b™þ‚‹©ªš*…¶– U„Á¬™—û{°Fœ‚ѽ(®½Ž÷¹o«Vƒ)¬í™ox‘›mŠxdÇ™ùŠwj­¢É“1všìybÝ“hvÁb ŒJ|)fø˜aÀjʵez{§¾Ì Ñ}˜¤ÍŽÕe㤠•µp?¢Û‘Éo?–ÎzAPdÑnõ>0–Ëv‹C°¡™‰¶Zʨ–•çm—©3š…{™°¿Ÿ~­¯àœwe£¤“æoÿ’8*Y)‰©u·IzŠØtQI0“S~sXò˜èƒ*b ×‹mf£u”€x€žn“L~Hœ™”J– º¦ÏŒÕ—žÃ‡’Úš£‡.œ €m„ã–žzQ”lƒï‹”–†->ýjëo›EXKðgÕ8É>iW@9Fp`«FLƒp©J$O¨x(PèQR¾QŒU…‡`¬g†,h÷l›Œ²o(r~Œ&n•mw…%YWX‘u×H¼L‰kAïGLeÜDIÓe¾C@GëbBîE²^@A‹Ec_V@µE÷_‚@wFß^ì@îG_á>'GI_ë:[Eâ^È;ãEcbÁ=µEtdV?ÍC[ ;†==S07®:YK7ž:NG‰;> IJ<›>»OèCtCSL}SR"GvÓk¬et‘Ðøw•¤ÐÀ‚橜X~J©}›¹ƒ]˜ût‡3¬€÷tVµÓfÕq}ŒãV]VYcÜD9EyP\>WD%Y½>ŸEä\Z?ÅEð\æ@>Fw]¿?îF¶Z¿>>IúV¹;4JWW?M Z½?ìKïU°<¥HCS@½IºRb@ŒKU³AOL¤[{@H­^“>£D¿c|?€I=fWA,M+d[B…Pkc(BøP;`]AÄO;\Ë>¨LjeO9Inõ?†MsAwN€o>5Múl BùNÀl-FÅPžoüCÞNÏt—BnM€y"BÜLx{ B¸Ljz^B=NüxÍ@ÓLäwvCÝM™y‚C%N¶{*EO}IqR{CkN£~‘A&M†|(BÂM&z~C›M{B@ÇKõxéBPfwt>ÒM,yb@NF~…A>N|¸BŽN~zXBNîw˜BëNvâBÕOœxÇCnN±y‘BJMrx1AÁLÖuÂ@•LqwEAÞM¿zt@‡Mè{ÿ>‰LÇ}é@3MB{ BBNP|ÑCNO.~LD—NòyB†MÇu¶BNËy¸?èKÐz2A¬Mö{f@øM7}@°M=…>WLÿyâAÈM|x×ANw CLm6B÷Ib`áA¤Ed~@ìBeß?ÓDod’?MFÏcÔCöGÏ]QB LÛlN@¸Lbu–A[MryQA…L¡|‚C‹L&} CsLŸzãA£L8{F>L¿yÀ@Nzx©A³MJy›?pKx€AMNìw‡@NVzš>äKŽz=?NŸx2?)N(vÝ@2NŽsgB*OJqfB(O=oœA®OmÜB¤P¹hF3S¬bREˆUØ]ŠCzVUaCªS£dÜBªRt`šC8RÉZA¾O]Ê9ãE]3@xFàZŽ@6F\$@:Da×BÃE|a!BFM^€CÊG`]„D²HÃVlFÊKËUÆ@yQÆSRPèQë^ŒÏx‰]’Ç ®gyȘ®ÐõÆß­›R¶¢jE‹{ïfyQm?gF«4Ä-XKÊ0<5 S`8J>+UÑ7@"Wt?ëE'`+=ßCÈd*<«Emá;G½rÃ@ÍI‡rWD,M}pQ@ÝL†rC?8Mßog?±M·näAPÕi’@ZP^FHVTÈYjGÉQDVBNâ`$A|K£kÚ@ H0m´BaGfî=E,^Õ<ŸDªbL?-DYiÍA¹G˜m?EšKyv²B‰LÂx{BÏOYw?Nx7@L4yCîMª{$DÝM™xKE°MñuDGP€t~IDS•s•KüT^obKÒQAj¸HÞNCaF¿L²S¶NžVjU_i)lƒ`ãÈ‹rŸ]›Î€›n™~G ˜#{‚¦4š|zÕ¶%¡o{¼ ¢_y~¼–ž"x´ºgv¦¯†—ënK¢W8k™k‹wlA‚Yhªš ’Fxϸÿ©³Œ’ÂB¯ÕeÅ_´a’Ƹ”¼Âb°1E¼Ú¥+Œû¸°¥OŽºe§³‹à¹ÿ¨P‹qº'ª<Ö³WŸxƒÔ­zš}Ò Ë–xµ–vX›”‘uè–8‹Do“•3‡8qX—ŸŠu1”è†,mÁ’ ‡?hŸœ$“|w, T“ÃxN¢ •Iz[°„›^­r—Ö ˆŽšuè«zœö‡­´žì‚wž.MoŒðx…T¥Š-}¯`ž ‚h¢‹seM£æqŠ ~”W°|¡*‹ËУÂɧ©Ò–À%ù´{o›®å™¢l÷§`”Jný”êzJ¸ˆ+j:ûŽwq…8gŸB‰ Oìªñ™Ós®® å|õ¯¢€z©¬Öìw(¢¹–"sž—KŠüdcÌz Q5xéQL•i:]˜Ö€!Yz˜¼ÕY|”ŠHm¦˜•†±¦ÙŸ8–|£Ó«¬.”r£ «ã†ïëš¿‡Þ‰v˜Á(€à”[{á“S…ŒA—Š‘•ss3qè‚EH½NçgD:X@@YõAÆG´bõG%MÛpÐK‚PŸvOW‹z…U!bï…%d¡mºRh©nŠ‹gEl3~0_äa«tfQPìfÉ@JEîaÆ<•@»_¯B]Br`¯BCˆdIA>C²eW?VDWdÌ=¾DRbe@Gïa|?¯FA_ß?½Fã[¬>FŠ\=™DG^);ÃA]¾;¶@aX:7D:™Tc3)6OM46ë8Hø<©>ÉH®?Æ?8P#GdEbQµf[…RRŠÁ‚}p€˜o”|ߦ‰œ‚€É­¾œ}Ыó˜+†Kšw‡Ô„z,uÂ/h(p‘þZ°ax]QêNßa&D›CÉTÕ;=Bî\?ãD3aÉ?eDÉ\?ÕDZÅ>G‡V<ãH U<ÀKò[·>FO`AïNQYë?aKâTÐ@ùJwV`AYMóXXA©N[é@ÃKò^ @]JÂc×@‹K¹`[@ïLC^`=Nûh@<)N>n@‚NçeƒABNæb8>ŒL}m\>ÙLxs¹AºN s6ANvo$D OMo›EdOsðCßNÞv&BN"xCãMz›C‹NIy=EXQõyrA‘Mpx@ZKÛwÞ@kLzXBîM«| CNd~Ì@ZL>~åA€L•C¿Lï{ìEN‘zµB MÌw\A¹M·sAAN¶vnA²N{@M{Ý@[Msz}@VM1yC«NyÌA|MMz·Kl]œ;˜Câ^8?nD`[ô?ùFR\Ó?èF~aiB¨HobÊB¨G¹_ÔCöGÏ] FfJ5Z‡I9KSM_NÃXáRGS»ZK z1fÆX¬E~ZÉå¯v~8Æn¬º~¿¹­§Ë„›Žcƒkm(VÍG{I‡6~.I@14âSG28 U%94BWß;TDœ[Ç=™DOeM¬DTdc@REQ`«@,FÙd@ÏD~i}BHÅo1DýKÜu$E{NXymC¶Nžv–BáMávÇB`M¤wGDŒNIxNC!NSvìC~M BŸ]´vE‚Wï<ÙCBVÜ;B˜Uw8q<˜Rs4ë6œN?;h;=K ;ˆ>sJ¾;Ò@¾PžJøK8Rjx—r×bt“" y}–:“#x|¢ò™å{5¨Vœ$‚÷˜Ñ‘ùÑ‘Jò|âk¶aØt;O°T†|¬F¬K½m9JãGZÊAAB³U¶>DQZ @ôDÞ\À>ÊB‰\½?²E¿\Z>6GI[µ;ñH–\V;…Mb8?Q&b6A©OÏZCGNºZÃ?8L&[C_Q±]C+R^„DNPzcÔ@RLbì@ñK‘]s>K']é`MknÅ@ÓN¾oÊF.Q]r=EHNnvóCàMÌxREÀOf{þCŸM6zXB9LAwËBiN`wÆA²M:wPAaMÉw³@xM z‰=K7{³>IKì{‹BêMx|CTMM~|CuK¾{G NlzD¹MŠwDÄN[sC:OÿsBENrzª@¤K{4BÿM™z¢A#N˜zÅAˆM÷{pCÃM4z"?ñL¡w´?XMTxÊ?ÀLÖwB’M~y¼B-MÚx#DN uþCORw~B]Oúy=B.Od{ÎAÛNÑ}7E±PÐ}¯BêMfz/CîM™y’CØN‰yzAêL5z»AnM’|J@ØL8|JDOA{3E MéwÝA‹MrúA¦LAmê=UGdÿ>—CmaDB„EbÙAEe-EÄGwe¥D¤H*g;ERL+n…C“P(y>ïMÕzAÞNõ|ÀA.N1zACAOr{ŒBOß}¸AŸN{ŸCžPÀxpBOÞwKBTO„x‰BOºyEžNy|_GvNxëGSNñu‹FMG³r@øJ[vê>ªJtø@6Mls2CTN6qïB!NpjjD»O3cRD«OV\¥DaPiUƒFŒSnYÿE TÈc©B5QØkpAáL°n³?´E`i?™A‘aÇACaTA&FðkBIIcuiB¡KÃv¯EVNZyOC²LóvùC£MIv@FçNubE÷NtüCÞNÏtCNÑrŒCNNÐpªB^NÏq¼EçMîsDG˜MKq¨JðPíj»MpSc\HåZ Sj^ŒdÿRBŽRƒ•f\­šž`~E¢Ü›€.¢ß˜õ|̨қì|ͱƒž6z£³±ž&y‡µŸŽuº¡£ótŸ¶Pžãt,¦0“ôm$›§‹’nâ’ô†m—–ƒŒnrbŸ0•ÌvÛ£—,q6£ï— v˜žl“âtÏ«Qš~:°Ù…dºxªÆ’n¹©[Áú®8ŽƒÀy­Ï‹šº>ªg‹†¹Ð¬¸‹4³r§ ‡J¨óœPƒÍ£§™ß~ª-¸}u Õ•x?›õŒy“m‚íj–¶„ÄfL€ aþœº[¿ŸìØhä½¼§÷„KÁЩ«‹¿¯Á˜ê€º @;wH ¶‘Åud–e‰)m iƒoð“)Ž0z«0™†ø¼M¢¢v9½Éž;qÁ½$ŸFt}­¤X~0¿PŸŸ°ÔÈfH¥Œƒ·C‹¡áÃG| WƒPV¦˜Çy²DŒŸn9¾‡_l½9$’ùyAGÚ¦û–s×µÛ¤]€+¶*¥³“³½£°€¸©E›VvÏš‚‰°ZP’%záOÂâ{à^B‘ }:[d‹^sxJÙzâc F»}ønUWÑ‘²…ào&žŠ’”É› —Sݔڕц®ä–Ä¥‡u’Cv·y‡‰Lx~Œƒú‰¡“Ô‡>Š©‘Âpoµ~JÁJiê<§;¹[âCTE|dTK‘NŠnS3Uxtr^lcOi(pü‘±or{–e˜fQŒ‘^ _|ÝNTMŽ_F@é>áR>é@p_>òAùfÍ@ÄCYgÎAµDíg~@C€gþ@|D¦ffAÊDhFC>ElCzEiú>TE§`ä;EÅ[‹‰DÿUï;A\Qà6–9"M567hLê;C;/M4>‹?úMC'EþO O NFQN‚›zŠa§–!“të– ”u$ŸÂ—ß{â ¢˜ÿ„³ ˆ‚‡~°oz `eS¦rÖC°Hnnl>ùC bÒD¤EkW?EBdT?;EìU/@RFªY0@¹E)`Ã?-FÎ]?GSX<™GÝWC;uL›\HC¡Tá^“B R»[GBN®]Æ>[KÏ^Ü?N<_ë?3O…^…BòN›`¦EÇOn`äEPO“^BM˜b<;ÒI»h=|L…qI?bN¥p³CÃPVfÄEŸP‘c=B[K§j ?PLÈq¾@½Ner_E¬Qªu~BòLšx5CîKc{UENÆ{ãDOMÂx”EôMÙw C%N–xKA\NÈy€=úKÖwAqM¤y•@MÎzeAƒM´ztB/N0yaDˆN&zÁDN¶zXE‚NÏzUDJN²y£D]OÔxûCæOˆz#BñMÞ||BíMšzÁBDNRv¶AäMx@M¬|PAMT}T@½Måz{A¿N9y¶AäMxD‹Nk|UDýLa{mE¬MÌw­CrNÔwÙ@&N¼yç@âM}óAN€hCüM˜~ÜC­Lð{âB*L“zôB?N zýAÞM¾ywA@N0zB%OíyµC†O9y‘CæNEw«BNžs–B]Ll`AHQdû>ÛA^‹A¶B\zAŠBe^CŽEh®DsGsj°DàJÕq¾@OJt@Q[u_AÔOÔt›C»O&vÊBÚN­x˜COB|ÒB¤NÁ{iCOÔyÎD QèyKAçN{zg>ÞMÖzCjOµ|jDËM™x/HòMÂwEÌM˜w™DèOŠsC@ÍO-l>BQ\i I‚U…fGFèS¿aJDòRë]gDÝR²[«DôTÄ^ÜCS'\lDSªTN@NdU$=^G×` >7@»c2?EdBúF_ÂBÑF=Z©CàE/X3CEo\ÚD:H}^ÜHGIš\ôHÅNn\S8N ^=jQlµ[™˜y†vh‰ÉF«!~ËÅ«`ÄÅ¥¤|¼¡Å’?ys³€OgêfpSK«8h.èFª2D4\TÏ3å:cRñ6ŠCÆUÅ<H\W"66DW]9?eGÃgh>½GÞn)A®Kst(?äJ@tÖBÅM:ufA×L uÔALM”oèB¼N@fîAÔN*`:CõO \€ER XþD±RÉc“FS°kDÏNõr=AŽH{m=C I-iÀBãFÔb"C Iwo§A>KCvïD~OžwäDÀN"xJC MÛxûCN–wŸE"P¤t´H!SÌuyHÿRw9DKOÚs+A–MÑp)D Ogs²EžK¬u>FÃMþu\JBRþoËLfSNjÀUò_…e“cŒhèfP˜O¡p€·•¦”Ï®¼¡CФFš]x:ª²œ›y_°æ"zÞ°Ž›`ye´ž>xM¼û¢²uûº5žKu®4–Fo} 66j5˜qŒ(qÜšJ‘3v›C’´v”˜‘t3—ëærè”L‹hmdš‹ˆnÿŸ¡’*y ¬]‰G¶ ©N׿]¯¦ŽÂ¯CŽ»«dŒ¬¸Ï¬‡Š½ºh®ý‰´¸ú©‹ˆØ±¯¡7ü²—¢Ç~|¯8žç~¢• {þœßŠuŽŸŽŽsïj’N{ªDjoµ§/—SqÆÁü¬N‚éÈÒ±.‹£¾c£åƒË«|–°v¡¼‘Ãq3œB¢t|–Ž‚vd¢Ôšeƒ]¯0§í‹ê¶-ž\uõ‡šo¹€šúm À  y鿟¢µ}¯¡“Šim¤Ü‡B`Z§G‘Zs;¸® §‰z¯J—=xô—|eGRÀuüD‚’'~ºSå¡Q•¿s ¶¨£Ž€N·E£ç̱®ž‰†R¡ö“¾y똤‡ÔZx‰þoJGé„­p×VpŒxËcÕ…£mVYØrâV Iûi\WLLLx³l@[bŽƒÍvd‘;Ž Š¤É—ø˜A휦¡^Ñ™s Ð‡‰j”Pz#‚IŽu…Þ§_~#yišh{IÛIVhº@Ý? ]§FGdwP>R›m$\ê[NuëgrkÞƒwr$x–“xmx˜h:f|?\áZúyyO«NŠ`÷>@|VF:À?ãd,=Ciƒ@†D7E\È=.C3W<;t>ùR¬9v8@O<Ä7—L›=f=ZL^?.@?PÍBIÃR¬c\sZþ’»ˆ6m1£eœÄ~À™–yW™ “ö€Q‰l‰Â~Vxý~Ýn bèz_OJÆj¸>ùB¼eò9v?s_…AD\áBÖE¿Wû@ÇFûVs@´FN]ÿ@ˆFæa2C5Hœ_uEôIîY]BIêUE>óKVAA@Rƒ\BåRl].CQ`›@/M·`ö>åK~aì@¡N‡cDØOÿbJF¹PÈa¾B_N(b«A×M®et@ŠMžgh@ÿM kjABOýmÅE;R­j¼HŽS½i¶@‘KÞmi=eIÐu?‚LcxA×NŸx.CêNš{9CKL^y>FfN%xùCÌLXu¯D9N£wBNÍzÂ?NÑ}m?*M¾yÔ@ìLJwnC)NÙyÕA–M²y¶@XLþvDÂNFwbB[MbvÝC`NæyCDäN2z+C_NçzàB;Nû}dAŒM<~}@VM1yùAENwuêAkN”xAN¬}×?MÈ>ŒLû}×=RMyFDŽQxËAlN¤z2CQM }šC›Móx$EPxCqNÕx#BÍMÐ{µAQM ÊBYMp}†EýM“{)BlL+zBN2zÇBKOûy²AIN¹wdC|PåwÀ>cL®uBìMzwÜ@Mmt CýK•kCèFØ_7BŒD¶]xBöD•\÷BýE#fCÚFåj~C¹HËlHE&M1sÚCR|t CGSszCAPÑn§D>PasD§Ox‡B†NyÂBBN?z…C™NyLD¯OiwuC½OGzÆ@£N´|\CmP~×DóMêzND!KÇvšCªM°v1CÎOIt3A¸P'mžCmRc)GhVf]óD©SûXÕDVSXYßC“RÔYëC"S¾_JDòRë](C RÁYÊ;^KZ>:üE"b¯?°DŸg*@ÆE.f¶@íE`©A(E4XeCkF W^BOEŸ\CAH6]H¢IÍ[uJiK _ÏXQQëcyƒ°‚ƒqø®Ì™óv˜Ì­-€÷È@¥ÁyùÆ¢¤Sw›¯Ì‘Âup”:†škkysb‘N¦HÕ7H¢2ì2QC2c6ÝM9jCYP‰=$I"U½;uFZa>ÞFšH^mÆ@kKµp|@KKèqC*M—v®?4L{Ü>LJw%AdNžkAOgd¿DXQfbÊE4Q¾VÂFRäZ¶FQ*j÷AÞKtáAìKæsåHRóqNFËNQmÑA¤KÃoÇE(Q+t`C²O±t½DwNx}BLCxYCENawD•PIvÇGxU.yF#Qåw½FçO`x‚DFO‘wøDJOÄvEŽLw\FDLÄt;IÂPûpNÑT|pØ[®]ïdFiùjáiqœ”,vƒ¹©Ö°¶Ë¥Ò~q²¡E{°±¥Ÿ{zk±ß¡zƱ¼ÞzŸ·8Ÿu}ؾd£]xÁ|£´{¼²¬™>p¿§–˜kšC”¨mžÑ—µzšÔ’ xyÏ‹\t¾‘gŽUrÚ”/&l…‘>ƒ_g(‘ulm•”ŠÏuþ›ä•¥{4® £„£¸¬¨h†@¹z«óŠg¹­6ŒÈ½6¯ØŠ·À†°RŠÈ¼Û­lˆˆº’ª~‡äµ5¢·€Eª™ty8¥”v”°›Ÿ€m°¦Ÿ{‰‹§ë˜.}˪O™Ÿm<¾æ¨xªÈå°„zÇf¬°ƒ=¶my΢í‘*q‡BŽ{ùœÉ‘é}S§„›I‚O´®¨_Šú¯-›£x?±3™tͺ³›‡n.Â"£ˆAZ÷FÀHDdÐN¬OpèXœX3{Äk"pî‰>rxÎPpu=|_‰dîƒf[³XÌw[R“Pb¦BíCXL;ãAfX@öFœlóCIÙk®A{FYgA]E)e4?aChb€=ÙCedé?>GkÅ?ãGçk‹=qF"b AéG®\ @bEöZç>CÕW :D=ºTØ8 98Q<@:DM">7=ŒL°Ba?Q2M|L,UµpkÙb©›“mvDªŸuÄ›¶•Ä~_’ԋ:‡¾„s]nW{Gc)VuÜK.H bX=kBg_•>¸C;_oB¡D½\A÷C9\‚@gEW]I?ˆDø^^@óBa’@[B(^AÃC0Z¯?ŽHƒZƒ;BKÞ[Ú>;P2]gBjR0^SCËS›`BêN__½@˜K†`A|MÍd¢OMÍ{_?kL|@BM|,@¼N+y/BvPÇu‚@ÕM:xâAnMzäBfNCP¸iÁB…Rš\ÜF—X#XREVÐU1CiSuSŒCSJT¸BãRÝ^O>ßNœ\`FÙP–`!@eLf`÷9C½`k=FA@fÞ=C¸hç@éEd‰BMFÅYoD=H{ZTAëE¦\fD¬Gh\YFYJÐ^€H³ML^ÕL£R$f‚\‹¥y´¿Þ§Ñ„|ÍÛ®ƒÍÇ £õxÎÆœ£]v ²¶“3x˜~‰nO{EdªM’H’73E72M3“OY6ª:Q7¨AŸRp?‘ItU×>FÅY$@"G¾c¨? H"mVAJ#pÄ@»JÝrç>?KYv”?½Mç{Ò>˜MÙ{¢@rNMpÑC¬Qtf«HhSX^¤GÛQUH1SXyEzP—gòBQMÉuAmKéwH®R’w!GdR™t_ANèqDiQs¶B?Oet¹E{Niz‚C*M¶yfC„NÔwACCOƒw|E¢PÞy|E²Oˆy/F×O•yÓG‚QyrE¦OÞwâCAL¶vÆFºMVsyIîQŽquMþVPp¯\é\©cbjg@]x›Û¢tž¶¥¡ƒgº¨š.¼\¨^Ķ~¡"|³^ž¡{´±ž®~ߺ  ì5§·}RÀR¥{¹²•›˜oáªì™oG¤›žx- Ö™`}ʘВáxôŒÇ‰©sÂÙp_™i•8u!•Êrwƒ?s÷Ë…Éqž–vµu‹Ÿ• t]¨ý›®wž­¡×‚հ£s‡¶º¨ž„Ÿ®>„ Àí°VŠA¹Š§Øƒœ¯ÿ›Wy_¦[•’rͪ†—_wεӞ?´N¡Ü…å­œ¥~®ÿ–Vl‡¸SŸüq·Âò¨ì{0Ç›«%€×½Œ£V{0§ö“Çr›J‹‡|Õ›è’÷…!¤î˜‚u³Ž¤…A£ü“ÏpE´"ž²xP¶Ò˜7i§¦@‰6ZcÉ‚4e¤›„cgT£ÄŒjš©L“#p²°r™^}]­é’rÞ¢aƒ­X¨’“qwDE†Gj¦C#q,E¹™{þ>K—Yyî9ŽžrFLƒädDE 4e I¹€ynzO{‹Qva*’%‡žr‰†_{[y!{±i,fçvþ\¯Jzs—_¶\Ôz'{œƒPy¥Ê‹Â‚dŒŽëˆÞ‘‰“­Œl“/™+‹“¿‹…—ž£-ƒà’„˜|áˆsŠjhmç}mDJ¼fç<ìA"]ÂD7I³k9OQÜzdsc1‡©u*w”¬rvRcm¿oQ‰@\Wa΃úL†P[r6D|`ä>Ewjô@+F\nN@OEÃjœ?\DÃe®>wCÌd8?+Eteø=SF^hä=íGœjr<ÚFXcM?ÇFª\ò>†D V?ñCøU¿:1@ÆRì4Ò9MÅ5X6¸K‡?-7‡Q1@‹?%SEáP|X"x vÂgÌ F˜¬wà­vŸYó¢â—*}x’Lj”wá|z ~Ëe{e×~Ü\U´stF^E£Zf>ÆCÜZ³>±D7XACÝE(YxADÑ_¦@@E†d™@êD®d>B£D„cqBÆD$`(A™E0_5?XI.a¿=ÝMSe-BS„c.DùU´amE Wc4D¿P^ CNZ{@çL­`7AuOFfÊB)Q^g?BdPGiXAêNlBgOþkt@cOKjEÄQoMG*Uq0GUpíC¸N¨oŽBôL–pÌ?gHrã?nJ·wó>ØL)|Ÿ>vMþz¦>3Nxö=MzDXN¢}~CàN%â@÷Nk~±@ŒNq{N>%M|yS@"NŠz9?ÈLLzž@«MæzÎ@rNüyã@íNâz1AºPp}NC•PL}=?­O•|Ö>O:{âBVO“yÔC»Nàw¬E®OUy^BÓNY{¥AâM|ƒCN z.?ÊLpx¾=ÄM„x~@·NèvXANàwNBpNÖyBÙN®yúBWNpy7BM™xÞAIMsy¨>sKAy\C@O`yVCÃNkv™D8OÅwÀA.N1z§@ Nh|ó@ÂLôyÒ@üJ»zÊ@8LR{0A¼MÔwg@;NvAM¡sÑ@0F‡lw>ÂB~cYBHH7gUAaG|jòBaI˜sPB0K„wbBRObz‘BÞQž|ÀA¹NäzãE_OâxŸCOüyµB$OÜ|BèNzy/C^OøxèC+Ow;EÇNjsÿDtNÅsfCNËx`@µK{æAcMØx BN‘wxK‹uš@XOÜx¯>VN‰{[=XMÛqC³P±ePH5SuXÚGíQäSÿH€UnapHØTKjËAZMTuž@KwxµBwN,wÙB=OAvÑ@ÐMøuà@¼N?txBìNÀtÐC¡N|xŽBeLÄy¶A«Kky‘?VK¨xWCGMNy¹B“M~xEÂPªy£GSÂ{-HìQ|ÌD5N€yóFÊO¨tÈIvQëqbOT™n¼Zð[¨bžn jªRR’:†„k⪚p¹´¡¹‰ºÑ¥½{«¸1£lzJ¶˜¡ } ¸S º€T½É¡>ˆÁL¨ízηѠíuƒ¬›¹pçdšr=§%È{%¢£œÞD™¿”­y葜zݑՑ¨w󠺟X† §ë¦;÷Ç™††œ“_zïl”¹x!šY‘þn,˜ÞtiÞ›c•^yž:—Q€›®.Å ¸$£X{ú¾­¬ê~æ¶A¤‹~&§—žpúžæŽ·k÷©°• vþµÿm|±¸4¢«‚Œ´É!|à«ÿ••mb³€™Xo#¿¨¡óyCÃ<¥<}¸¼Ÿ Gzï­N—suôœÜÆx™¡d—Pˆë«Øœuƒ‘ºÔ©;‡ Ÿ@’Ån®Ë—µpR¦l†‡S:™yG2–î{f[O“{=]>—¢°\žYŠ(f‹ž ‰@i’¥nˆJg-¥ä€ÂS9>m2:J~·_:ä€ e A_‰þiR?׉6jo>a„½g¬D„ãdöKŒ{ d‘Ov…úq“Z`›\Šgk„«2›¬‚öž••d…Çzg¾ˆlk)Y'ƒÑsHzå…Û‡©’߉î‘zšú…€Ž“®‡ß–=ŠÚ‘Cš6ˆ4‘U˜‚Bþ˜}퉖|‹‚¦Œ‚k°n4wÜHAK¨c >“@˜_8EŠJþp²Y¬\ƒ p©o-‘!{{v˜$ueu†’·ff‡|TÿZÁ|¶HyNbmíDÃDèXµ@’AõUþ@±D_wAsDf¿A^Dh­AQEad³@&E·^¹?D!_?æBŠc@ÁD§hƒAKHjj?bHc?ƒFÑ\mARF%W^@SEÏTÖ<ÊB—Rñ:HAÏNƒ9n=èM¼B‹:¯R`HŽFöQEZïT¿TZõ|¿jo¤¸™…vO­£œS{4 ‘ŠyQ‡ôwu©jÉg^ga‰„rTšR/s¹DíD€Zó=×AœYÈ>‰BW³BÂE¸X¤?ŒD\‰?-D¼^E@;B„_-BëCÓ_NC6FÄ_½@`G3c<>Km,;ŽMŒoÛ>æOHi:C…Ríe"FNTvf¡FZR%^C‚O§U÷BÐPvbxA¶PEh‰BJQ3iïD)RûgìB P>hŠBP iùA@PohC˜Q#lEMU˜pHF»VÎpÖF}Rp$B‹L¾qB@QHLrý>TIßuu?Mx}=¯MRy>ÈNØ|Q?¥M”~éB¬M'±C¸Nâ}©BüOÏ}@ËN÷}=M°zÎ@rNüy@MrzÛ@/ND}bBÜNã~u@©M×~ì?.M‚«?ÙKK‚Æ?ÙM€í?±N‚}—A„O>|5BŠNL{C}M\z}CN§zGBwLÃyÉB L©wä@OMÊxr;ML x¤?’Nêx”@+Nx»@N#zãAƒNç{ÕDÙN˜yòBQMÉu CÊM›z@mK }XB$N—yÂC6PütiCfOrtÃ?NÑw@ïNzÉ>ÙM’xA@ÛLZz+@OMÊy)?€N%túB9RÙuˆA¤NÚsB L¨oïA÷I¥ióBIJ*l‘CJrp7FõMØv›D¹N½xgE"Qùz$B¡OÔzRA·M{ºD?OM{ @DM2zÝ@?Mì|ÛF!PÄ|dBbN z{BÞNñzbBçLygD¢N‹yaCÛN½y³BäOzzê?\NÞw2?)N(võAÜNæscC¶OlâCïP¾dzC¶Q\_ B¶QDZœDcS*\¶C›RE_5@¬P\<üN¼Zþ9ÍLWE@zK[â>ÐE·_ß>~BJ^‹CFÀ`BpEc#A-Fw]0DxIj[ý@=Gÿ\—DGIc”DŠH_ØH†I;]âM…Ll`ÏBçHPV‡vÈk•Xú™b‹„rÍ»€¥@îÀU¥$}!Ķ£ì}F»>Ÿy„D¬]ÕtìŠs S2N¨;ŠP 0Ò2\Q¯7-@\VÞ9ÌAÍZ ?OEE\Z@…G4\$@3HNg8BJŒn¢@¬I›mGBMüoï@\M“pÍ@kMkr&@ƒMÑr‘AXO0mnA}O®eGdR%Y£GæQ®TCJNUcG®R¹p\>Lov@Kxþ>ÌJèvä@OMÊxÌ@IL2wB OŒtDQhqòCuO>s–BcM×wAéJ»zED0M<|DNsyŒ?5MVy²CsQ‘{”K“Zr‡œFRÞ†GÊQƒGÐPazÑIQ_sæMaSm:L‰\ge²SÆYQfÛvÎ_¡Ÿ¶“Çz««ð›F}˜µ¡(x€¹R£3t¹Þ¢âwƒº;¡ø|®¾ `‚#¸L£{é­Xž€©‹š/wyxs‘ód¤fQ‚ðM±RêsG@"@pW<¨AH]e?úBbAsDÜcrB¶F0`¼BòFáVn@DÖVÍHÕhé>ŸLtJ>óN€x >áMq?DAQkOC+Q_fRDÅQÍ_h@òNåW CsQ“dæDNSdk‡BêQHiÝC¸QfÐBÝO¿b²BbPdaÌA!P`5APZf˜C»R[oîC8SrcDñPhq+B.MÔqë?XJjt;=&J§sBCPs'?,Oúqø=INàz´>ÖL€»@ÊLŽ•BNÝ{B˜N{¢A®NK{'AOxy|CmPx”?(M®w"DUO’}Š@ªL²~ÿ?ôKœK@5Mzæ@ÙM¤‚@ÇM‚€Û@ÊMŸ}AöNY|ËAöNW{NA}LynC)NÙyC]M€xšBKvzA»L~wB?FMVy*?ÞMÕy?*NzØAÏN'|AUM|[B¾MóyCÈN®xAyM,}ƒ?.Kº€MB_Nú}Â?¤O?xÕA‰P×w©?¤M”xBèNzyÇ@²N’x=?5N­yã@NP˜x®AQuS@öN¤sdAtN4sB°NnBNxnJCƒL&pkCÝKèqEE9OµtC ODwHCPD~ƒA!N‰~„ANÿz{A²Nw??†Mìw¦A}M^|ìF÷O“}ôB¹O{D)R™~ÖDìOð~ŽCýM†|mCO/zcDQ@yûBvP¢vÆBÆOúpˆD)QmýHeUúi3DÍT™cC²RÜ_DRUe_2DSY_eC‡RcgA@QÎ\=O“Xj:JL`U™>xI`Zá=VCÀ^KBE“`ØAŠE\D¥GýZ¬CÎH»W‡C…Ic\Ï@.GbdÖ>¼CÚfŒBÈH _BGýI6]ÁI¾Lt`B¸G¸_ U6PU'†Óu¶\µ¡¡ý|„»Ë§€^Ë·µÃa­r‹ ³§˜Ãw_˜?úc^PÁ;q@É0¹2ÐO 4¿=ÙWn:{Cl]1?ŸE¼YC>^F÷\™>®Gkg?_IXo? Jm¼@ìLqm&@¸L—mB>sI¡j3?CM mû>øMzK§xE?XLÿxñ@²MKz=A}MRuD©Q°pgEU~n™C6PqæB„M¢våBµLF{óB*Koz"DlMLwß@,MÓs½?EN‰zXETÌŒ(BGP¦Ž²D2QsŠ`F’Qx„…IûQŠwÐLáU¯mîRmZCfNîR¡R4sarSM¡›~’v&¨ü›–}¸¤Z{þº%¡¹pÁ»E¡v»B x׺ޞª|C¶ÖŸ˜{™¨¯œw´œ„•:tîœè•¢w §Ëœnwã® ¶vÙ«e¤w$¥Éš£xã ™Îvê¤Áœ[|Œª²¡¡~r­h ly:«ìšt¢-“Wm7˜ éhY—ÆKsӘᔪyžJ—î|!¢™({«•›õzh¸¥Ÿêxo¿9£°w ¼s¢ay°°õœ7vR±â›Šr´º† W{P¼¡½zg¼¤ý{i¯¹˜ðn÷´›éoT½¥¡·xÅÆ•®BƒÉv°,ƒ¿ÃP©4|‡½c§è{Vºö¨Ç<´—¤6±ñ¡8†k—ÔÕOÅŽ`w(L4‡†qSí„Ûpº]¡‘A~ÞjøŽýxÞb™sOUÎB€½`•@—Øx†FY­#‘þeá§CŒð]Æ’7v„E8‡kuC·}¼kýCµ~j]CutgF:ÅhH|„ym„I]ˆqÇL²tgX“–Ý€j¦#”-z`ªÝ—`~Hªæ–:x<²~΀)±]¥’§¡C¡+Ÿ~—ŠŸÃ†O“ œÀ‡ã“Κ4‰¡‘k˜Ë‡1@—€U…Ø”ȃ “êyÈuŽ«fm»ªHQKháAkA]óD´Jor÷]Oa±‡yxhvs“̃ý„›Ò{Ç~]’?eägf}IÁMm­;ž?‘]ç@ŽAðWÄ?0CZ®?¶E"aÆ?çEøcã@«E˜ebBÑFÍawCÔGÉZÉA?FôV†@DW A¼D}\“AXFb·A4Gk`ŠA¹FZ]þBÛFØ[%A¸DZJA×D’VgA|D+TæAš@Q8B¼9mP»IFPW bc i—’–‹ïŽ¦Ø–¼m¬'”~Wš©z®r©q_6mMqPòxUFˆK:sÐEîCgc;Bà?$\ƒB B_!AnAÜ^]AD™`˜A Fñ]‡B±GðX›A+FíWÌ@qF{^”?8G"d@ÝIfmþ>L¤MôrUA7NÂr#BzMr#CÓNMrÅAßNtÞB¼O7y#AÙM€º@;Lº€ÂAÉMzŽ@ƒNv˜AGOÛw C»NòzbDzO}zªCrQ¡wÕA‰P×wfE#Pè|ƒD)O|àBFPêyEËOíx}C OvvÝC?P†rD²Pm(EUai7GÐUÅ_ÿB/R½V¢DéU«^ÈG­WGd®DôSB_CTSIZ=aOkUí9L$U?sJƒ[ñ@&F?`N@©E)^Å@ÃFñYB!I[qA¤H1[ÒAH»^Ó@ãF%dµ?¥DÌc¦E•Ia¶F¿H YðKnL…`½C.Pa`ÄYUd›~rmeX¯jžÑw†Áá´lˆ”ß:ÕŽ±ƒÐbÄ:¦º§¿•Gß“=v%`vO/7E;1Q2ÅO5>}Z¼>OFø`Í?|EŒYM?ÇFª\â@#J3hJC MÀl@BêLkk?L:jF<èK he>[KÎaƒ@Ma³BŠPŸb‡B8QÖZïC¤PœTÎC&P–^'GÿQãið?hNšuF;ÚJ¥y¢>"L{÷>M¿z6?’M•y#BO4vqE”RžoäF°Wum.EÈQ2sŠCüKÝv=C;K~{_ELš|NDOM³w7DŽNPrÊ@ŸLöz£@œLÚŠ‘@†NôލBP¬‹÷EQ׉—IRH{9M™VÑn´L\´b‘NïSóS*m”pýKbœ?•'y ­S¡™‚—¸¤Œ|:¿b¤hxˆÅ«0…hÁœ¦!~¾ºPŸívÕ´Fž8~©%œ~&– tŸž™òvӦ뜾vú¬žs9®$Ÿ½r‡ªCžµvµ¥ÕœÖw^¥¢œ!w ¦ãœx‘«Pœ¼x’° Ÿ”xl©™›w ¡J•Pu¡V–FxQ¥²šÛ}|¦p›}}# ‰št©|›Rv\¶»ž•u·Ãï§MzÁé¦V{b¹À£‹y¶¢œyhº¾£!¾¼M¥o}"¼y¦mzŽ·€ _võº £Wvù¿§]z—Ãyª³|È&¯’LÆÏ­h€˜Äﮦƒ}½ë¬™‚±³2¤íƒÂ¢"—=~¦—š€ŽYÀ4€°cb–q‹å{M—n‰€v+€#híL¡píS‘Tem.Sã]¯LeEJxšlæR§§%0fÿž6‚úS=ŠâlÿE ‚ÛlaKµƒbrÚH+ƒžpdF2~oh4IŽy¯` IO}ödHi†qËMŠ0v‹M™”IºT”£‘Ïoþ«—D{q¬–¼x«±ž›¥~æ±=£…‰CŸv›²0˜2 žÉƒ­ µ0•U¢ð¨ŠŒ •©…Mˆy’ù~Œ~{’ø{ø~lîx;€ý_g(n’ŠMNõPÄuFFëGäpGéR€ˆlnètÁ”„€t—‹Jר…äˆÐ™‰g¨i”‚C&IÍje8÷=k[ >%?X°>áAg^å?ðE•ez?7F›f€?SD&d BECVú?jE_Wû?}Eº]YB Fù`+D‚G’bEADg`¤A^B\NCËDsWCƒD;UÜDèDUÐInI°VJ_~Ub_ÊyPy;sž™´†£¢?–)|ž¶‹˜sþKtýj¬l]XktK²Nås/=­Cöe!BB?`OAA_ÛAæCi^³AÓD‹Z†AÙEvZÚB(GF\vA¨E¥YmA¡Fñ[¸@G a‰?GeãA¢IÌi"ArMºu4@L_|l>fJ5vÒANwnSB3PzjÔBFR¦cÇ@QÄ\”DµSˆfâDœVh DAVogCWS¯i«AªR3lƒ>›O¿b£?(OJZ¸AþNÂ\ÑAñN¤f¨C¶Pik1DŒPÝm}C†OVo8DsPxn–G Tm³F©Rj}DŸPÝlBBLNÝtAsL’{ŒB4N—~$>ÜLoypA OyyAÅN yBèNzy4C÷NUyŠB NdyB6N—y=@0NVz€?OmTAùMl“AŽOɽ?½Or}RB¿P²}HBâN${wCÌNðyÎD@N*{qBôK†zÝC`NæyÇCnN±y4DO {‘BÏN%{ÍA‘N³{ç?ƒM¶|†@%N¾o@6N«}ã@íNâzæ@öOžz¬@|OÈ{dAsN {lBùNxxËAPOQy¡A™MæyM†x—?™Mu @÷MOsDOQµs5C?P–uæ@êL%yKAÎLÀ~AËKW}hBðM½xâA¿OŽxc?âN]yåAÝNáy‹BOvw"CQÝtDA°OÖu¢C O¯zYEãP…z.CÛOx]DnOÓxPC‘N whCO×sê@ÊNukD—Q9d…EÂQþWz@ÊN²PBùP”XD\ArI]AG¦^BGÒb—A}FaDåG`}FeIƒYzKN\SMÜRµ`e3TOg8 wkY²±ž>zÃ}±RâÕõÅH“´Êá¾Ùžœ™‹ z(ª^¯N]Gl/=%2µ3çR¢8k?ØYèA—E`–?øDY^>"GWà?—J)`­@¢KôddCçNfn>&L!e¦;L”a/@‹K—wP?0LÍyÊ>ôLÁ{C=tMïzL@ºNwmDúPônRJuYfmØIvU­sEKûu³C*JKyÐCL×{jCŸM&y5BbOPxøAéMh{±@æK–‡Â@ôL³Š6FÈQÏŠªH‰Q2…ÕI&R#|tL÷W†t½Ob^ÜiWNë]RYzk¸bSQžWˆ×r6­ó °†’¹:¥:~ØÅE«ûÉ€®±‰OÂá£_zZ²R˜¥d«6—Sur¡V”y¾ŸW—Tu¿žL™kr@¨–#vU¯} ºy¯Æ øv‡ªûu”¨OžÖyR§žÜxÙ¦·œyy¤¨$œJy€ª«œ´x¬æ™à}Ä®L›±|¬+š;x¬â›}ªbœUȦŸ>|tªŽžx¡³ Huü½Õ¤]xMÀ¹¥ÎzÞ¾¦Æ}λ(¥Æ~1º)¤˜ùº¤Û|;¹t¢kw”»Ë¦x޾¨;xûÀƧlzâÅ,¬µ~SȪ®’ÇW«U„/Á¨ÖˆD½%©„Ú´™¥Œ‰Ø i—s‚Ä”e…Ñaý“zŠ©rp£°š¾‰ëœ;‘|‚FowSßtˆ\FMz½aT«Ž/xÚ[š}ˆ*fu—f€3XÓŒ>p-E·…ökI:„¸pªO¼…3t^M–„£rK‡|UgÑM6sšZNÃp W´PâvAd¥Y‹ŸyÏc\óˆæ`-¨€’Th:¨Î“ßoݨ+”ëv¿¯AœÑƒÆ­Ê¢lë˜Á•€ˆ™ó› š°â¼TÁ,Ÿëª,²×ŒG'–n…í“R}‹yo–öyyÔ“\{3€^“|sÖzacù^¯|'N¼LÌtù[úa¤¡y3`œ}‡ÆˆQœ! ‘„ —ˆ²ŒÇœ^g n؈•G$Lzo8ñ=X=j>aVõ?ÖBa`A FgëB*GgéAÃDQc“@ÁC¹a£@‡DÓ`‰?aEJ_y>F%\?©F^ˆ<ÆCW`<@æDAa‘BÈE­_¯BÕC?]óBBu[ÎC«BýYzEúEHX)D8I=SùSèPOŽ{boßg0˜J”:ƒ³¦§ ЦR™~~Ì’ª„ tdißhqgàSÃmAJLdo>žCË^Î@õBOWØA~B}XHA`DA\dBþF\ CEªUhg4E„TdDßRfQA*PŽeBßO!dúAOreÐB‰OÍiáE=R¹låC$Ql1CP‡l“D½PŸisGÓTegöH°VygËEqQZirE×O|peAfL½sB/MïuEA¢M`viAÙNÂvÍ@ÊNöw­A×MYz&AÏKjyöB¾Ny±B×OÏx?VMFwÓ@gM|Ÿ>¤NëyÍ@üN®z8@pNìxõA¥Oww?¯NƒxŸAOïzBúOÎxçC­QàwÉCöOvx0CìN«wCÜOtÞANPO9b->ZLƒ_ø>ûLl`l>èL—_V@äMcÞ@+Pëc=aP)_9?=Ræb–FþW,iîF'U#m›B±OÈq'A‹Mur@M½x6>òL²zN>N±{È@/O›wöCÑPÂpJ3\s`Sa2wOHQ&wAEqLkwÑB•J$zÍB9L_z\@±MªÓ€Ÿ¼û‘o„§“]Üœ©Œbk˜§ˆdaœÉ‘¿m^¡D™avHªùœˆz˯øžZ}{®ržs{«eÀ•—Šcwݪ—`r‚´ìšâo_±¯™Êq¼ª†——wJžt’È}Zš•’ĆÛÓŠ3†ÚƒD†i‰“ß–zžâ‹ ‘¶œøŠz†š—¨…V~Ï—Î}¿x˜ ~ó}˜1ƒR‰™N·Q•ÎuÆs”‡¢jGe9‚€m q‘{~±›÷‰“‰‚ž'”D“8¤åüŠ¿—Ôn'k4~ªIêLýjÒ9#?€Wè<ª?‘TLA»E^äBÿGþeA…E3c Mßg’D+PakºEQÂkID)Q³klBëOGl?ÉMojÖD•Q´gNFgR fÀDsOg¬EPþi£D¸OæiÐCBN hçB¬LoiqCJOñp«A¼NuÔB?N|šAsL¢|“BÄN{y\B«O\xeAÌNy„ANÿzzA‰NN|ÐBQ€zCÿP2yTC™OJ{×C7O×ziERP¤»CØNÑ€ÊDO|;ENP:z´D‡QŸ{0BQ½}ü@èOÑzzD›PŒw„D_O÷v®DOâyDYO³{BLNë|B Og|CƒO|äARN/y¿B3O¨vWB–Nøv[D N0wšC…M”s_B›Mìr,A&Mzu“AºLpuJB»LcrCQM®q@KÜnÅCÞL>qRBˆLŠqgB6MGs¸AM†tÔC­N%z;A.LÉ|CMÛ~}@K|«AÇN¯z¡BQeyHAÁNmy‹BPvyì@}N”ys@ìM{K@ôL¿yA N$zèAwN=zÎBïOzkAoOy¸BOÞw±B^NÆwÝAÑNMt¦CÆQ¼jŠEþQp[óB?QQW€L½]Ã9ÝHƒY?´L4_wB’N)a-AýNmg§?.Oœh4@€Pòd>`PÜc‹DŸSl6BÊOzmô@äMCqë@bL‰t›±u`©–›xdŸdik™ ‰~^Œž¤‘Úo ªžš™}f°ø~ǯه}ø¬pœžz:¬(@y ®üŸ/|©„œ|¾¥1šyŒ§P›‘uÉ©ûšõt>©ô–KryŸÒ·pM‘½„lôðˆxnžž•owè¥u˜5w6°]}¹™¥¬{ƒ¼j¦¬s½m£1s€¾Ë¢ßwr»à¡ÎyºÖŸ‡xâ«—ún塈’m¶¨9˜Šr¾Z§ò~öȰ¡ƒåËQµ«‹½©¦ ƒô²Ùš¹sš¡ÌOi÷•Û‹É|²‰Ú…Žèš„2a‡…òwGPÈy1géDãqnZ’@nWG:™pz\u8Îz gAAß„õo×LnŒ#x€b Ž•z`t†7r¶L#}ÜjHJîtºböI%tI`7I¼zµf;L{}°jP¿yi:Rœy•g~X5‡nt,i‰šNÑz­‘š sҵǜ•ny¹?Ÿ¤sö²âœŠv¢£” | ’™‡N~¦zwTœ€]…£N‡´—<ˆŸ‰X™ó…†•𑂆}jšj ~™„g‚}˜ÎHˆ#™ïR‡¿–7yï|…-smt5Žˆsãtõ‘~&{Ö˜¡ŠˆïŸ)“ˆ¢‡Æ؉˜aøV„cQB.C6W@7<þVQ=ß> W‚@õC‹` ?D~dI?ÜCFa£A«F]¸>ÍCD\ó=!B0`Ã@Eaö@‘EÆ_æ@'Frb]AGþc²BëH`‹C±Jˆ_JC"Js_vDIHZGF¢HmXtGÛHI`LïC _|k1SåWý•rŠÙsh²;§aˆ­¼ Fƒ®Œ ‡àw$s£ccp¥dðOZ`IMåD/Uá? DZû=D‹ZODúEÎZsBeBêWD,EZdAC.Y+B\Dä\jBEC*]ÕBC]•BèDø^†A_H[_ÇAÜIõaèF|P?gjH$U‰jàEïR¨nB÷OÓrÍA]O wJ@ÏL±x @šJ:zú@ÍJ÷uÑCOM|pDHòR8qÕGZXup(FòRÎkyHnQk‹EÛPgWBôN¦e@^OhBÅOeiSEEP¡k'C®O¯l BO1nBAtNMoSD¢PmòBNØgùB¸M‡fkE“Pþf‰EQgcF,Pâ^ŽEêNì_ÀDPOhÂBïNnAAMsÝ?øK¤tTC†Nés/BåN[uÌ@†Oa{;>N[}o@›NO}ÎBïOzsEïPz¥BGMOzMCžM7{­DÕNœ‹BcM.4CO4€tC¸O€øCzQé~æ@¦P`|«D_R‘|nDÅO«xûEiO{xùEPOyXFO{·DîNÿ~^CO!~Û@JNÊz.B¿N8x´AáN(vü?N\uîBÐMÓt CHLóqBùK€raBêLu.C5M"tëB¼LdqŠ@¨J¼m/=†F]hšAŠFîbÆFRKni¹B JþoÇA~J’v¾B´LW}AÑLó~ŠBXN§ãAvM ~eANg{A…N {A¤Mz½A“NÕyÃ?ÌL~y¨@¸Ll|ºA“M¢}tCMNçzÈB[N£yºA:NÚ{Ý>LP|ZB¢N xÔBNnxCíN¼y„C—P©nŠDÈQÖaíC°Rt[û>»Oð[È>³NŸ_1@ O—_´?¡Oö]¾;iMŠ[û=-O=]‘<ÒM¢`î;…K¿dÒ<#G˜^É?]FMUuA‹GêT’@2E$ZCëFÞ^òAíE¬]@F—`ÌA”GÞ_‘DðGZ^HIÈUµH7IÒUÂV'RÚ_Al solž`”v£Æð®4„§Æc§¬}ˆ¿Ôx¬ì˜zw™”ö…ºdaxÊlÆYÐf„cÇ`D?>@fRn11&Nk<³=ßU„9Œ=XÍA”FÌVçAÏIûUÍ@ËL\#?»KE[[PhS“T5cNb‰U}€R|)qÒ  ’Rz‹Á(¦¬ƒÑʈ²'¿§¨‚‚2½¯¬;‡ÁÆe»*˜¶å¢Ë…ž‹gœÐ‰Mh§¨”—švê´ Á~鱆ž~®œ½y¯¶xx;³£÷|®ÏÝ{²©šþvª»›äp4¬ÇšcqH§–¦ržW¸rWÂ…³p‡‚~>hŽŽë‚êeq™ÈŠÇiz¥P•Nrº4¤Hz¿¿:©mvH¼|£Øsx»•Ÿ¨tn¼E¡úw½»P yå°²š±u¥Ÿ=*o—Ÿ1pî°Æœ˜w—À,£¼w‰¾|°V…äºó ¦ˆ4²švx8œŠŽaeŒYŽlUÕy†rLs¥N{…qªSãv5oŠ[ïoâeºR\mk]!By@hŒ@í}snÅCw{i¯Cé~yhàI†“uÍQí„‚w^O—zri¥HžoïZêE˜oB[çJu cQPhyCi^QJv8fuL$zYfaOOŒ|ak4Ÿ‚•§|‡±€ät ´†›ônç²Q™oaµªœ¸r´Â¡2…Ƙ‘’DŒ9}þ€Ž„š †ˆŽâšÃ…fˆ§š2„„Ož6‚ÈžH€€ï™‡ƒßƒ/™‚n„ܙЀö‚*™ä|O|j•åyvwý’Úyéxî’©€ƒê— Œ}‹A¡ð•º“ã¡—…#zkR8G"PŠ5µ4’N«3¶7ÓVÆ@þA`¶?ÑCåd@A©Fóf“AXFbqBëGŠ^¿?hEƒ\®=ÐA‹^“ADÑa·AdDÜaîBVFøcCGecDI,`~BäJ´]}@BJ%_šD[IÐ]GEÒHû]zG©Hác¯PÊH,f\t\\(jùœ…{}²ª¢ò„«¡Ó•S|d€vWtdŠW³kahQ}_^I÷DgTH>,Ek\=Dm[aACOZoC9E[EpZCîEW[4DèFO[MC‡E€[CGFÃ_ßAPH’cDM€f}G-RUjbH™UluCÑQ;ocCÍQÎu‚@ENœu-CãMðw_D§M‹wC\MUs«CôMÆpÔDÝP6qŒEÔTÄqpF U¿nUF§Q3i9D‹Ob.BœNÈc@BÂO2iËBPâjÀBwO¤lòA€Nèm×B@NnyE‹O>p®BNymžAxLÆj¶BöN…iªB@P>g´C}OócuD³NCa&EcOúaCFP’c¹FhQ†e#DPúhŸAâNªišCêN‘jmB#Nqó?N¿{5>·M•=JKî}GA#L{’FAP|z¤C/Oay¥DÎO"zóD`O)|DEþOì}dD¦P:WAoM·€%G}Q€ÆF¡Qï{\I T |oF+P:yjH‘PÈy8EìN•xoF’OÍzüB—MÑ{ÜBXN{/BßOH{‘@\NÉzù@AMþx[@M†v…AíLIv–?LcrõCLMctlB¸L=tC LËqÙB^K²k]A INj‰@F¢e/EöEp[ÔFÀFœ[¬C^F f²@¬EŠq©@†H¿yuD)N ~B\M“|É@ÃL|»AnM’|‘CˆN:}ãAøM4{\AôM|c?FL{ïAÑM|CÜNá}øAéMh{žB¸M{•B Ngò@–MÅ|PBóMàviBoNÆw4AWM0xK@sM÷p†B[Q keARÔg•>ûOÙfë?;PeÙAîQ)cM?ÛOa_=ÉNõ\ñ=NO?\à; N ]Ž;CKy`k<°Ee^\B^TBG^C9Hb D0Hà\ÍHhLÄUMN¼R TàRÏ`5n»w²p<œ=”'t[Áþ§B€NÇ€²Ã.£ö|U·^ž×um Ïán¿„•z`{qFsëTæRl^P7º4 OÇ5w6¶X B8DGa¶?kH}[Ö?°GªT@UKZX@IM€[º:ÓI{W :ùH&XâA¾Mk\cC9OD_UAÒLbþB×MPc$ALoee>¢L²l_@4M_rAM”ržBMƒ°q{Kê’oCHR{•fœExôaoIôweOÐyi±LËvReÆGþv h‹Ld…ì|Nh!žÅ“{õ² ü}ܸÀ 1|D±@˜ÃvT¨t—Áy/©À¢[‰Åžy›3‹Hª‹‰u’øœ:„Ž‚žÛˆ†Ñ›¹…ý‡$žÅ‡,ŠêžfŠo‹óœ‹÷‰›\‡x…1šDƒÃ€Õ˜Ï}±v¨—^|q„˜3~Tva™õ…Ò…‘ “O•W«½—*’G¤´€¨hd}™K—>jLˆ4\4™PR5D9 Z…>*Be7@MFÛf"BôGVc]CG%a,A„F_³>ID‚_b=áA¹by@DÃaÃ@¢EúcÅCQH³hVDsIßh{CI3c›C„Ko`¨CÊJô`HE¶G?adGuKÏbBIÏK‹c$[eO¥d/†ñqÐlí¬Vš(~ÿ²Œ†q•€-uµky`(qþKIj¯LÒDx^…CM@[g=ªC‘_V?E¦[oCïDÖZ‚DÞE3[»AXEYìAWE[ûAF´Z„BÇF¢XûAF´ZB.GÛ^3D¶JÆbPEãQòfEI®W•f–JÁY‘júE„Sðn°E'Tós†F:S‹vwDTONuEeNøsÌBMoq\A[LrâD¤OÀt„D²PÑrdE£Q=mYEÓP¡gÚB±N¦fB„N;i°@ŠMsi‚?kMÿiëAOókíA˜NOmC$N…nÂDNpÄA:L5nµBÅM;mAC OãlsD&QkC‡M¹g‡BfLŽgCA Nâd´BðOí_F ScÌEVSµdˆB8PûbQCIO#fUAÃM`m?ÂLúv·>fM}Æ>ïL~CN˜~˜FÍP0{BDSP‘yÏC‘OÒxÄDrOzLEµO»y}J“{1DQOrA±M;x¢EðOÚu˜BëNv€AMNìw'ARNZrÎ>ÖNpn·;ßN?j@?$Päf >‰Puc¾BÔSfaÔCäRO_=³O§Z>;)OTU˜>2O§V,>XL´ZO=ìGë^?ÍE…_§@PF¨_A D0e‡@g<ß\eN(RõoEjIq\ê?)E“TOBrKÄY>)K\Z;HJVC¡{_¶š£”z9¼›¢y{µº¡„y¹¬ 2|߬I™§s$žÈÉe0Ê€@c>‰©z˜k…MzckÌ‚{Meùˆ‰€•e™•ˆ¥h2¯â™¯tËÞ¨{|ȇ«Uz%ÆØ¦‘wšÄ ¢ßwr㢽|.¼„œø€ §ý’vež2úl»–ˆkÈzuH“…‹Êu¥€•S{]žyŽ~o˜‘X€¡bj‘2~kcve·WâBeÅ]D™~–wÉXÈ‘†|kd{ge|_bó’Ì‚ÀfŒz-YWk—JNz^eŽH¤}rlåIŸ‚¬pÎHƒ…Zo]G΄_oMK\€«oFO£o L¢iLFž{‹cJG~]k#M˜ˆmã±= A…g¼p¨y‡x±dÄ€›¢Á–¤‡ÿ›‘g^´ˆž~O…–€~a‘ý˜,‰‘8¢é€‰…oö…`‡ÂœÄˆ2ŠMœçŒ–ל"ÎoR#ŒÓ›æˆk‡!›æ„‡€fœ&„žŸ ‚Å‚A¢%ŠrŒ¢¬u’ì•°¢‘SŽéœyígÑsbJs?ëP'5ì8·T4<ê_g8O>Ídk>ïD0fºAŒGvb’B$Gsa…AMFb÷@sDÕbè@½Bieœ@„Fçf˜@7HjœBoKºmpFÖN÷nHHP#ktDFM¸dqC7I[cýCcDøc»D½E—f÷I¿L[iœd¼SÔfÛ•@‚Œnß» ¦©€t°]›åx~Œ¦xXmfT¬MÄh.?K=1egEÄ@û`j@n@\v?!E{ZÌ@€EjWðBôCã[£AóB~\žBsF+]LA»E^+@†E%]‚BøEíY.CEßWRBŽHÐ^åB¢OWdŠGFZ{iI \ãfÄHYZÌkFHãXnêGcWœrYFÞSÄtþDöP•vYD¿Nu™ClM/t§CM;u FÁOSx®CUOrtVCñNm[DP$jÚ?N¯iÐ>Nßj@¶Njj8AOMkÜAZNÝlwBLnA¦KôpfAwKgsOB¨M¬pÎA8NÝmåAþNþn)E,QšnÄC«N÷k3CDNGk#C%P|iÅC¢QÚfµDIRÓi+GÂS!koEQ&ixB†D[h¯@êEvjµ@‡EËh4BEEÎe’C¨CÝ^CDmF£^@åF“k;CêKÏu&EÝOþz¼B³N{âAnMzýAÞM¾yÄB;PRzÞANO0{%A9NËz+A!NywR?SMwAC½PŒxAOzo@}Mbx¾C»NñyïDŒNHwüEéOtumBOšuE@ŽMRv—@®Mu3>rNÊo¢<=O€hÓ@ôP;eQ?µP‚bAËQ°`£B’Rf\q>;PöU7<‚OÍUx> N/Y>”KœY`>Iµ]˜BhHÑcžBbGd%DúE5hó?AˆevCE¡^uCÛF}XQDuI7[üC”H±]@FJa^\JHO‘_nR Ság/j»u8q‘‘Fvj‰¶Ð wÈÇ;ª]€wÅ'¤p{ÚÁõ¢ó~¯¹ç€Ò†ŽDqX}ÐkŒîx9l^`–=øT85K=ÜV~8Dc 9)Cµef>:EmfÖ@RGfcTA»EkdAµCWefD1G]feA†G~i˜@J“pú@ñK2q~DOYp`GÎQ$mÏGRfVCPL!bÇ?F–`¤FoHÐdñIJÒi†ONp¶qß`÷m'Ÿw‹…v}¿N§+ƒ ²À™‰wUˆq,e8NBGoaÎ9„:.^œBUBIZrBnEäVCºF|UžC|E[V¤CPC¢\5ElE)_…C Fp\®@ºEþ\ô?F3^AÔE?Y˜C HsVëC(M]­FAS(f±H¡[Fi¾I¨\ŽféI­\€kGH{Xq!GTñq›E£RUs½C=Q¶tC}O³uÚ?nKòsÇCOM–t³D\OÄvÂB½OZw­C[PrïC>Qòm›?«O°i|AâPkƒ@APÒj=AlPélæ=ÐLTn@BN\rPBóMàvœ@ËLovÒ@&Nèq®@¯Ptri?INsy@ŸOFqìEßQdqoBÝNoÖAGO0m¸APxl4DP:o›EdOs!DƒN©pÑC¬NnÜA½MÞpõ@$NÂsu?òMuÊ?¢M…vç@ÎMÓw}BnN·uEPÊsÇCWNQt‚B™MÆtµDSQÄt*C]Oþr¬CjPæw$D5RP|ÚCgO’}{D¸M¼|ŠDNã}lByM;}ùCØM™~zC?M }K@MÍz[B9OýzE>SKvzÊCO|‰BOºy]AÀKŽw¶CZL:z¹A¢LI}äAÜM®}²B8KÝtBsGËnÐ@Fm¦A¥G\lAÍGk.AmFƒfBZFî^.AüF-\?@ GÆg²B?JÖp•FPçuóF¡P¨wADN–wiCœN9w/BåN[u@M-x@ANUyIA¶NÄw6>rMßwÙ?NxeAåNtB³N¦rCNÞtóC\L t™C•L?srBINªte> Krt?^LnslABQ°o’@Qg A–PÇa°@¢P^›AÅQG].@åP²T¯@iPCU§>`Oâ\]=‚M¢a´=K!^ß?‰I×Y±DgIŸ_þAvF½b“A&F}e-A™KevÞ@õLÎz B·Mz½B›N9xdCN‡v×EmOžv¡FeQzu FäPrwYEOØy,DN§y5D5Npx›B}M=wêA‡Mæy?DIOÖyÄGSP5v™GOg`=CðIŸ^å@™Dx[œHcG÷^¼L¸KŒhƒY6Q_o~.ožo;¨$–Ø|ݼ¥ì€>¤®hõzc[hV~KÖAt^;P=×\®AUCÅYCÓEŽW°AoEVDCaEJZÿBEC\XCkB(XtCEWB‡F-YBhH˜[MBwG´XC¶HRVwDVM|_FRÌf*GùUóhÛHžYUl¬G'W\r^F2RôtòFMRXs EŠRðs³BQsaDPP`sŸA8Mmr×CÙM:sPD OBuàA6OÜw®AEOÌu—ADOâqÙAP+pøBìP€o˜BhP6o8D|Q>p¤A$NµpÚBNjs¨B9N¹vgAÒMwy@ NŽt÷=“NWu{?JNßxß?¨NxAÌOouïA±OÖt$BñNs›AoNôpñBNsµCßKDw¼BÍK6wCãKNrWD,MŠrÊAðMÄsÀ<óLuÅ=’MÏuö?†MìvºBQNtZBNêoìCüM8r'CöL£q!CëN¦oS@µLem4CøNZs½BPBy·D¥OñzGOu{ÐD1O{šDªN{KF N+z°DÒLìy÷AÚN¿{!B3Nt{1AüL4z*B·M}xzBÆNžw~BâMðx«BpL]y)CÕM4zrDîN¹wãB¥KöuRB>Iq÷@yF“lÐB¦Gjl]A’Eoi@ID˜d@F^Ä>iFkYŒ?KF›_íAGGlúC]Lr‚GïPÆr D®MÇq¹CNÞsCþMks‰AˆL¥vî@M‹xÔ?jN©wè@ÜOKw@ÑMu A¦Mªr;CÅN€rBDþNqWGÐOËqEC‹MíqPA”M«rAãMs:@«NŠqj@žPçlƒDÖRfSE£QraùAQÎ]øA.QšYgA‡P€Uy@ÎOdXã@^Od`“>åLd_ ? KcY)@·IMUWAzFŒXAÈDI^@9Fp``AFª_qBkFÁ]§BÉF] E4Hæ[þD£H&[tFJÇ^ÿJôNÅ`“L

3Hsg?aIše9;µH!_´?„K¬`’BN½dØAANlkuATO¼s¡B PªyÅFçO@t¢Lp]ÏtÇF*ZhuÃBdOsu ?ÕIq@ÉLauöA0Mþw÷BÎM¾xC„O*xqC?OPwYD¿NuƒFÏP/uFôPNxH'Q'|±D*Nçy¨DNÙx CµMXxWC8N¤yEDlPöx«FÕQ¶t¨HØQŸuÒG‘P¸xÈH‹PPwÃK,X˜v]TÍ[õoÂ]ØaOmÿuáuwæH‡Óxš”ŽÁkÁ¯”t€µï¡|ŸÃ’¹q’S„]bŒ {=Wî™x»s¦à›ª…¾­íž‚Ò©vš¾qß·ž´q¸Ÿ3×`qŒÍ}1câ‘-ˆËo}Ÿq–ïnX¡û“aj{ž¶ÚlÚ¡bÈlC¹Èœ¶w?æ€g¾Œ¦Sƒ¬²œÓ”¬Ó›“•v¬™dYlùš‘swž–axõ°.žxÄë¬wÆf¬tÌÊv¬lv!Ê ¢›t÷¾'­æ‚Q´.Ÿ!tKžÙ‰±^î„5nû?±s.eÖJ iþV¥LugÿPºDÑv_ZFPQ{Tº¨7”òq'zÍe!H¬ych»Mz|îk„M¥Š%zY¾˜ ‹OiÍ’³„v[q€µmö@¥v<^Œ?qmÉUóJ6hrSÚP2|õoáf¤”8ƒ¶´Ÿ„x±]ŸeO¤ç¥n£ä™z¡uuo ’|U­=kKGxYc6HRr:\æKïyy`[“{Ÿdla†‚[†2~QƒB“pÜh˜g4wiu€pÌ}r‡,‹ ØˆÁŠF—ª…ƒóš´‡ç‚“œ«‹q‰Yžf²Ý¡)‘¸Ž¤×‹ˆ5 Q…x†œ+…œ‚™¡‹PŒ‹›W•¡’q˜¢«‡\Žv  `ÔbO{öA¶;Qí7ä6rRP;Dêb@>ûFÝgþ?DFwié? DeqAoEÈ_­BÊF6_5CÇGb¸DªIëh'F¨KÇpÇD–L[uúDÉNvm³BþL)Y-E&MUúEÄK)\èDµHŒ_$F¶F^]kIF]$K2M9fìVyU¾gÉäpìmS¥&—Œ|«o›ž~a‡SqÉb7eL]U}IB]eR>]@c^:B­C]¦BjDˆ[%D†FÛ[C[EA]sCãDj]’D/EQ[ C÷Dk[…B‚Fù\5@§F‚Y:Nx®A>NvYCöN5uÓD4O‚uÙB÷MtÎAfMq@ KoBmMbvèAwN=zC—MÁywEOMÑyÃC—L­zD My ELQvkFÉM„y¢CÀMzëBšMôyCÙMWxLD¯Oiw”@NjvºC O•y0E9NÃz$DÝM™x:C°MwÊBLguªBØJHo\A‡GygBF¹f¾AØEeh?9Ca¨@¨F³aÞ=ÎFfcò@vGmd¦A7Fúl@DÂJ;s*I·PbqMDNTmfE‰PlrA'M“qBüLuÈ@¯L×v¶@NNwW?dNŒtFA8NÏtCA¨LbtD«Nös¹EàOðqlE‹O1nÂCOÉp‚@šN‹qJ?ìNUq@&Péoµ@ZPlí@hOþ_€C“P×`™@·OŸ`ž?O°] B!P]Ñ?•O)^B/P¾aˆA/N\Ó>§L0T_>×JÄTï?^GWzB‹G»WÂ?£F{Zm=FÃ\c?ÝFâ[ù@kE^¤B*FTa¡DåG¤\kGJÕYZLÊL`_&EZRÞ[§hïrÙot…j†£ož:”Íu›¹ƒŸôƒÁ—¥P…»»Ù£k|»®–á{ШŸ0y.ªôœ0v²ž•Yq“øˆ¬i±q¦_ÅOH@3‚CÏB=éU*F-F‚\ÎEOIª[%BaHb`N?ÆG3e³AfLÜ_x@žL [@ÆKƒ[B·M¬bArMåjÂA‡N3rÇCòPwt†Q!Y¸uìoŽqÿ]zuŠ`_zházKE‘N9lë?êKòpóA¦LLwÏB„M²x¢BœNKzCnN³zÌCNÉwÿG˜Q?xMH«Qb{ýHõQ“~üDOé{C}M\zÆC‰M{/CîM™y8B‚PowRFTSt¥G(R&súF^Qu4JGRƒtOKÒUpuRyZ.r\©bQmõz+{ yó ‹7}©•qŒïm§§ ›Àx?±lŸ|¬7œ^ SgqÔ‹ßz”]Þ“½Š¤x §ÙŸ‘÷£bœé„ᡦ•6tD¦…•Âp‰œ(Œçe†ˆæ}8eó‡Äõka”ñŠìj4˜`‹5lÓuˆtm9”ŠŠiÑ¡ ”¨qI¹õžú}¸º™¤N†—¢˜î|oŸ%’¼sM™|ˆ;g‡–ÀЬm‘Ÿ.˜ñ} ¯ŽŸ˜‚¼_¥òºÃr¯–€â¹Ý­<{]»~¨{v¸»ŸŸvu·Ù›P‡ªš˜pK–Å+N“z÷^$6 k1W)EØfœU8J¤hŒT”F|vicÝF5Š%xëYç—‡ÏmHoe[°JhhxT™HKq]J}‚ÑrÃXúŠ4Ëf„‚zvQ£wöbê;¼o=Y[:ÁlFWòH‡enS\Tþ}Ôsúrk±ý¥­–õֹǛî=ÞBz‰ñÌáWƒåßÅÐü²iΈ½ì­ÿ¯Û™€+Œyu R|{h0J8uÞ`J|uIbàYwu1nòrQz‡3‘uõ€‡’’|1pŽ{ „>} ‡>‘ú’ˆ‹-˜Í†„Å›èˆÚ‚Úœ«ŒŠ ’զؒŽÞ§!Ž1Šß£ã… ƒòœJ‹„‰®›.”û”“žC–5™F&•>”œº{—u’­IgLzrAX9mSl<Ž=ÕV•8ªAáauG„^2EnIFeèB‡Hêj1CNJ°q@D:MVrE@Oj E1N™\F&L8VöD‰HŒYôD„Fâ^ÅFJEÔ\{I F{X7N¶IP^¹ZgKÒfÄ{|jq¶žÔ&~¨™´ŠZséz·b¶]3XÄHÄdpJI qãAŒCÂbÞ@*AÔ\€BC'\:DÌE^±C²EQ`¨B%E6]•BEj[´A3D§\7@8D.]?|D.[A“GÖ\@Lø_SH¯R`gÚG7WIoÈH=W6raI£UDs{HRUév·FÚSnvgF£R0tÔDÝP6q.BæM:m E:OÀn2FfOr2D¨NÃsmC¾OYv{B×P{ZAåNY|cAHOÜ}5A¿N<[AÃL}èBN˜yãAFN†w³AfM y‰C4NryÀB&Oìx·B Pˆ{.AQN/z2BïNðz±AUNbySBOv=CSQùvÞANO0{}CTNq~¤CˆM}$DYN{]C\N´z(CºNáx¢DôOAwÖA‡NvW@nNÜv=ÝMêxY?îN{Œ?POxzAµO÷yQBîNàxáBZN”wåBtNùv–A½N*wñ@uMìugAÞM¯x©@ƒMµ{'AKÓz²DL£zFM~{ÒB½Kjw EBMõw´GNzçB¹KFy¤A¯KwIC—M¢ueBuMÈukAN½y!B3Nt{fB Mz"@˜KNxJA=M»v5CØM9tCHLÓkøAœIWcÕAµF)_C¼G¾^{?ÅEï^©?ùF€cá?®GÏdŒBàG_g;@øB²n“DSJrhDúNMoNDÌP\pƒAòO¸o.?YOºn†>‚Ozlý>´NÂj{>£LÀ\B©OB^¦=áMF^ô=YNñ^‚= O6_H=*Oa¶=ÊMÞ^ABJNL\}@%LÇWû?ŒJ[>ãF¤YeD´HõVÐ?/FªV>>ËF9\¡?óF]IA¼E6`ÍB~F.c E˜H¾]HËIBUK£KaY–BgH;XY`'hƒKír S—°} ·°ŸÚƒ”À¤…H»Ý¢™|œ°xœBxǨ‡™(oߤü–álŸ˜DqŸQ”+uá€të]†M =5E3^R€œa\eEíPQ„ž?õM€5IuP/ys@qKoOAèKÀvæC£MYxçBMAy>C LÇz)CL”zEÒNB{¼EÝO|¦EìOÚ{TD¬OX{C-N|‰CL{{òCpMw&D‡P}v©E?RÁuTFŽQÎr„B^PoŒG6RòrKmPOt~OXs ]ë`„k:t+vôr™„³~>s Ž—…Õn+ w—s{ׯù€€Ùµµ¡‡‚[®œJƒN‘‚ƒi=ŽåYkD–[‹Ìt œ±‘^uŸ÷–9x‘Ÿ’"pA™›‹ i@ˆ=hxVt”cJ€ s…V†sAU¡‹¾†mŠàƒ˜l•³‹o¥¦4o–¡Û“t~ב‡Js‡Ž_‚$m†Vw>`³…J}*këR‰=qঠ˜™s³È—Õn4À¤ª½Š–¦M›z¤E‘DdU¢nŽ9q)Ÿ‡‹zºI‚ed …ãp;H‡w1^9@œhdTSDvb RíBTi­T€Aq¾Wš>Nze¦MåyTh4RmjWvJ;`ªO¹D4iŠT_¦DZq[‚?®yãaSFŒ|sc{M»Œ‘uf\¬U›ÙŠyÎ9¸à‹ ß½Ãx_ßÇ5ƒ.Þß˪ÖZÄO¹V»â¦ ˆ›—Œ‚ƒb€‚‡nŒOä…cuLU[’ãˆÛm­—€•‰‡†mв‡U…KzÜy°„L€ªtëŠY‚÷zÎ ’4’E‰?ŒÆ˜‡œ…ŸœƒˆÚ„BŸlŒñ‰S¡›’<Žl§Ø’FŽs©.‹Î‡ë£‡}„ Î™Žl¢-—Ê—½§qšœç¢q•—ë›Ús™u/‘‘C³Bïd’?~8~Q/=Ë@FW±:ÍC_s?»Eˆc•@’DØf+BªEteBOFR_’B#G?_$BõG‘g CöI×q”C Lôv¦C€N‘u¤D5OŒo©C¥LÌcŒDåJþ[JCûGZÅB—F1^ÓFçF8_/M¿Jú]ëPÛMXc-cUÓjáRqísœ-Žû|³‰vLeöc¼LÀS¤T¶ISi‡LuL1qBQBbZDóBÏ_äCòB–^wB”Bx_Ð?ŠA™`A£DD_!CÈEQ\øBðEˆ[¹A½EÛZ¼A-FM\0@6GÀ^1>˜Kk`sGfSåj«FmXÞqˆGQXÑu5GÚTuuFtT uöDKT%tWDéR…s[CÐPÂq¾@M‘o CYNip°E#Ogp¯D¾OnKÿw4BäNGyOC}PöyRB•Nåz BBN@{‡@NVzÈ@iM?z¥AŸLæwÞCßNïx_DžN{}åC Nv¤CîMº|)CÕM4zhB‡N{²@N¾zzBGN•x«BÃNkwHAÁNmy„@(Nß}âAN¾~´?üL7||@jN–zªA=Nýy©BÆMXy0BÐMâw¥?N8x A¬N;zh@N¾z‰?ãM{à?†MØz^BòLªz@kJ„w¾B¬Mãw EpNÀymD§KUyéB Lôw@B4Nxu@BN\rÇAAMîu>rK2xkAxM yØB8MrxÕ?tL—wâ>™Mvb@~M‘pôB£M\i-@’JÅ_A HºXb@FÝVs<*E¹_Ì:ëG:e­>@H/M•l$@+Nl«@ÂNlìBO¥nÞAwN[pÖ@¯N˜rì@ˆNfsÐA¬N@sÅAAO°qöCÑPÂpTB¤OGnØBpPn?OqiBãP…g”APeGA$OÏcc?L’Y«@öNèY?WOè^—;#NÖ_`9JG[œAM[?GK›\é¾=¸P4=äB XŒ=ÃE?`ò>$EdV@iCIh‡B™DWg"CdGç`V@2GŽ^d?NHäg?9J¡nŽB?MÊvÃA(M‰v‡B(Moq/DZMñfODàKL\«ECIÜYMFŽF(^æI³H2cGN™JmaÞQøM9eT]#V–jT‡ ~…x™ô,zcufòZ~URIGS>R…Köd‰KbK4dPAÈB\CiCÖZªA#C![‡BMEž^o@(D__BEÄ^¾BSEwYŸCFÑVÎAJF‘VW@¤FQY@±GÏ]¿?'M}bçHŽWÚjØFRY¸oÞFXavHF8UàxÎE¾TNvÒDéU[téD>W1v÷CRwÇAÁO²v‰AwMqrE?Oôm•FmQæniCP`n\GóP u–C€N¡w´A[MbwiBoNÆwnB N"xöA0MþwRBÿM‰xeCôN!yÈAN|×B#OÉzKCNÜzáBëL3xaCZOÅxKA\NÈyà?@¦M£yH>øK±xk=ôLÖyCN¸|EM’yâALM‡uû@O rÞC%PqA'M“q„AkMSuPBuM×wpALgw¸@ÖL v³@ïN>sRA£O•kÜCýOgÌAN¹eµCK-_(BáIúYH:]Hcb:IkM?2J^jCN­lÐ?oKp°AÞLotzAMÇqë>ÂL9q–>Mrâ>—M(rÎ@œM7q BˆMßqBvN4rEBûPZr*BdPpÓA{O nòA}Pm~@‚Qûj.A:RDiã@îP«gÔAªP¤e?BAPÁ`~BP%bšB÷OXbï?ùMÄ[¨>ñMê[X75K\=jNÃd³¿KÙY<ôHf`T?¤Hå\„BvG´Z“A¡C`\Œ@Da]qA“EÍ^×A²E¢aÃD²GÒ]IÚHeUÃJµF@U¥NÎEaµZ®[b¾xÇoåiÙ¢¶–ñy޹L§±…À³œ—{‹²Úo÷µªžx–°Bœ8{¢¢œ”u’ «”±n…¦%žvX“J^hoUaIïL±8A0.S}G ?a-M­G¤YTAu<‡Ow6S:TOö1Ã:NW=ÚA…QjBÌI—WYC¼N3^éFP%c£CULojGI\PWq1R”S ˆ»95VH“Flý„¹œ†]­eD’˜X@RMŠGA8N»x[?%L%x C´MIw˜DGNowvEyMóvAJQuÄA LízBkL;|ºB8MƒzÞ@MÞ{Õ=WK¹|™B MÜyEEÓN wŽFPP'vÞHQSsvçE£QurEáPDr¼F Q_sPG‘Owu:L…S¼sqTô\!qàU&\€aƒN@fa1MrDc»M„>¶|'kHxPh{Js@eÔJmü]šGžg*U³CDgWHgî]|KÌs3jØKE„$tVc‰q}ÄkГs‹èx"¤•Ov´7›•x„¼Ð¢j|𾨤{z¡¼¤'€­¸Ÿ ½ƒ%¹WžÍ|0¯˜žt6¦Þ‘Úpö¹¢[~ÁÈ©2{ÎÀ”¦¦v;Ä…§rÞÀ+¢a†¸öžîkú©Ëœr‡"–¿”ï—þ‡e‰×ž$‡æ…Ù¢]Œ…‰Ô¤€AD¢˜“4’L¢I‘òžž‹ð‹º›å‹ä‹‚¡Vš”p±C•Œ™¶×”ÿ—ݮͯ… ÈZ2Yë~T:¹=ŠWƒ>sAwT“=\C#_7>:DàdƒAŸEÐdâBøDedÀBfDdÙBF‰cC‘Hd@—Hóf@ÕJUmeEOÑvÍE]PyÙD+N¹s“BRKf\FrKW[ýF HgV³GEZÁHWF _PM‡K°a‘R¾LŒgGdP]Ìn‚Lˆ|O–°Œ3z¢mect`9P­I6\êOýKëfRG)I¸`\=NBxW @DjW9BÈEWKBCF+X&ArEÉ[çAqEž\éCéEÉY7DCFyVøAòFV??ÐGÎYÖ@_I ^@EµNbÇJ Y;h0GFXÞjGaW¿q–F”U vïF?URsÄFTVÖräF¨W«tÚCR|t'ASPtó=õL_oÿB*O>n$D”OðmVDOækÙE©O×n9DO©uC|NnxÃCcNxIB\MqxÆC~M[yûB†L€v¹E®ODw!C>NìuYD¿Nu§EæNt+DÛNœt÷@O¿u B‘POwãDrOõu9D2Ott—C1OtuBtN zˆB,N{›C‹NIyUF/OJyOE]NÀy\CšM}ÐCNAˆB,N{›C‡OK{rC}N¡}ãCÃMV}´B™N(|ÚAžNnyjBxOwž@ÚNæuJ@ÎOx©?5Oyº<ŠMEyd>ŸM@|Î@°M;~àAÔM%z‹?ñM÷vÇAPOeu?ËMrKCëNŽs§C˜Nöt€AÔLäv ?¥J¶w,@K[u\=0J_o×>qLiêC4NAhoB7LòhC®KgA©K.cÑ:Lÿf¡n(?nK qÉA«L‰q @àL¹rÙ;«LvÏ>êL;x²@½L£v+DNbw)ANÐu4@:Pöq)C4RmêB_Q?j,@Pži¼=ÊPëf³ABSYeC6S*c~AùOæaÁ>“MaÜ@7Od8A—OGe6@Oõc9@oNác==:M˜ah<åM§b+@dNFdŠ@§MfdaCëMYdB?ïI«cí@ßL`¶:ìJ›XW9II½[?;IÿY,?€F \?òA=]à@Eb]ñ@JFD_äAFIcÀD‚G2_EG’H¦[IëH_\’LãKc©IK·gAj£jÏ[_ y—0·«ŠV³H¡ân±“œmn¾/¢{K¶ ¢|&¯+œ~­¯û ™{Ü­¶¡·yƒœ Žýpgmx\•N«@5MÓBq4cX,LBÅX @:;¶Oœ6;DN_2s9PÔ5:Tœ>^EX©A[LA`ERNµgýBaL:kÁErN…p¹EäK×y=ÂPB|FÕeµwäL“R3rªIõL$yD?|L z@œKy±C—MÐzªE¾NþxÚG:O®vuCŠL³uËBM¨yþD­NE|×DóMêzsBäLÞzqAlL+{ECßMÍy¬DO”xFJQw´IõVæteITÿpãF‡PpJCFNjq•GVPXt&KS¦t@MŽX™sL†[ÅtdWLc{ou=gÃb(w­cA§Î“&jr¢K‡JQ³‰6h<´fÌG‰qP‡yr‡JX„ÎtQª€)r&WXˆÀw+co€¿o±WªymäSl{ƒt_atw=nÊ\Os‰`¢Nƒ`bˆCБçtÏIJ›G‰Ìk#ŸìÍv×—/‰Rn-†àyógy|3t@e{xºrí`*z‹ubµuümlbüs­a·N]vcVHŽ{]moLÏyÞnYNvÅeÃNšveÝTEzœk$`Ç€ºta^€‚Ÿu§Xé„r¯Q9‹”v\QD„9p*Lárw_àGKi XHK\kpZÊNi~T÷DôŠöv°L‚hoAG {}l/G¥v€iÙGAsÛcbG6ocbIÿg‚dàLsknõQ¸ƒ³k„§µ ’ë¼N·@¢Ò¹§A…]°Ê—¨lJ¶¸šPtë¶¶šq³² ›Wrd§1˜yÙ¢o”tv ¡*netŸ"‹’`½·ÑŸÐyBÄĬl~’ݪŒÏÊŽ®hÊ÷¬«Œ ÃÛ¨w{®·‹¤œô•½–g‰ˆ ø‰U‰@¦Žš¦:„D¢ø’b“îŸÜ“Ë“QŸŒÃš Œ{Œ>¢&ž£²å’"“x®¸—%”™¶{ƒtª‰rK L~qL45:ùW==BNVz=’Dãa´@ŸE7jâCgFfUE,Ga`DrF:a÷BC”Gôe¥A{H;iVAJ#p\CoMpvGPQWw G~OoÔFÎKGhvFÕHÖ]åHéI­\vIåJÑ]­KMÄ[äQçQ!X›a-[shðwMvgt«™”d„¤ë†•~—bÓXðj†PµJ¢i›MfJœfE#GÄ^c?ŽC{Z@.D”[¦AFçX¶BçFEWô?ÜDv[¢@UDÏ]úC¸EX]3C)FÅ[´BïG[Ž@@Il_ÚBƒL+fÏGRfKÃX0g&I!XîjRHéVµpÙGFV³s$H%VÖqI7WÏqÕF+V•qçEAWMr DUŽq??7O”q†AOÖpXF9PÈpƒEJOŽmYA¼LœkAêL.s)BBNDuSAoM†u$BMy CÎL›x7DM˜uüEßN¹uäCOfsDÖO¢põDPŸrfDìOÌu8C°PâvC¸PHvC2NDt«D¸N¬vzD¢N{wæEÎP0vûD–Oår°CNƒsžC#O¸wC|Nz C0N?zsCCN>y]CPN yB÷M#y£B¬Môy¨CÙMfywD‰Nx^B=NüxCyN]|2CšM'BrMÖ}÷A©NySB…OMwOBuP£w"AöNjx_A§Nøw<[NLwz@ENˆyÝ@ÑLÀy°CìOÝxt?‰Nuw@!Oóv.DœQáwTD¶Pu“BNt¾AM.vü@5MUwGA³L vÍALsþ?lKÛo?ÉIYm¹A„LilRBôLªjNAºL“iÕ>N‚m ?"Oar"@ŠM{l5C²Oh‚B¼O‡ožAMsÃBM{s‰B¥M¸w‹?MHxwB=NìvÆF‹PwxC*M‰tŠB¤QÖq.DS¾k~CŒRj€B•QqiM@cPûgA@iPŒe"?GN3bB@xN"hØ>¾N…hl@HOÛhQAxOOhX>óM1h9@¯LKgZ?ONAf.>0NÍf…?ÙM>ih?ØL¶i5CNšhŒ>TJƒfñ>@LcZ8IHZé:ÞI¬[(;YIÑ\/7)D,^]BfGFb\?¿DØX²@7F?`AEûc1CÿFBavE Hå`FI` L!LbÙO$O¤cÂmªT|UY–Ë€{³V¬Ð]´ú¦8ˆõ¸0¡ÕzWÆD©ÏÁ<¤Ð€¡·l g@¯Á¯¢)˜¯z†˜P‹Ry%‚,ygGOJ£S?C3EWF‚6wWBA=iQ¹3­9(N 3^9ƒS¥7:V8¾>úV9@?Ij[ZE{OOj~B`NõocAM”qAJ»w<ÊFnwPBƒM”uSCIÿqˆE§N¼w\C^NÆvhB°K‚tDÈLCy?EŸMDzêDïKu>CL4uj@†KNxõBçLzÀCdMöy1D5M^zeBOKnzÆC~M[yEEÃOvwFDRót8H˜V#s½IæT©n¤GÞP«n?E„OæriGcQUv(I4RÌxåK}UªvçQÖ\‰tc^Ëdo¥nlt_)“Q…ˆe¥¥2”g㢋ÑS{‹OiNB·v½Q6KØ{î\þLÄ€bl”I]‹»}ZZŽä‚°cœ…bzd}rqTb´vPiuX®yco_ð{ásëf)|5o¤cN‡~hFH«›Qƒ:\Í©?•ïruµÄ}7¢§‘´r…€uù`àz-oÆ\9yo—Z2y‡oG_¥voij[xšfO¾xÕe6JA|–l?O¢y¿lP‡v;hL*tÌcWMÔxhhf^M|q“]D‚4uÍUW…„páQAxãSîˆÈtïM(}}j~J¦ug†M‡urh©RèlÁYžG¶•;€yY ‹|uÛF}ÒjS?ÂwŽjÓFövÀjDMÆq~eûJl?fHÆríiEm„ðsÂMPœ£’”z꺶¯-•a¿Û¯º+¤Ó©³]—Pf°h‘FVë¢kŠÆWB–„›gU’{ìeI•()^g™Š¸e°;žÀ€[Ä©±âˆÆÊN¶î’†Ï|µ¹Qж ¼äÏ»¸ö¥Æ¶0¡…n› ¯‹C‡Wž@‹4‹†¨WŽT°©hŽÇ΢‘W“ºž’Ž“ZœõᲚOˆj¢:ŠŒ¸¯ÐtˆÍ¯D”‘•+p>`ók{CÇ? X_6T:²WÏ<5B5Yz=fF‡bsAÜGWiCFgéBÚEçb’BEFñbÞAkFVeœCTHåhâCuJ±oGAÕJ]u>ALšwEAvNYqrE5OtrE˜N¶pôBíNÙoBºOarÌDR×s¶CÌPjs„B Nv:B“LLwwCêMUwCŠN:xØ@…Oswô@¯P+v´AÛO&xºBO1{¿C:Oùx F PvHAP5vaFP+xìBˆO]xADgQöt)D QôngDPˆr‰C$OÈy\CñN}KCêN‰y¥CfN,v}C OvvöBDPÙwQC›O[wÚCíN«v³C¤NŸvØB6N†vYC·N®xDçNezÞD~O¯y¿CÒOhwÜBÈOóv?BOxiAíLYxTAüL$x"C™PŽyDB±Nmx DûM0wYD¿NuuDCP¤u~B§O=t~F¯RÚuCP¬qœE;P t%?OL¡s"AyNuu~AÐMøtAÜLasíA%Map;•I©qI@BM,r‡@;MâmÆB6Np@MDt@'NõtAwN€o=CÜPoFAÉO;u5AkN”yäC…NôzÈA;LÚl>?ÅNIp?ePŽrõ=N¿p?œM«m1>Nnâ=MrI>N t6>®MŽr?2M]tÊ=Llt@©Mr‹?VM¢lD? Mdq:µJ(]‘<Kä_&=×Ki`å:ëGž^N> GÙ^‡BòFl^ƒ?ÔB)_-AýE cB¿FüdíCÅGœe­FÙIÇa@LMÉZ¼SÝQVdIa|OxZÒŒ³ƒ÷x)­t¦?”›µ©|’0½ ¦É…”Ê›®I…Åô§2ƒ‰¶tý€A±Àœ …5§±˜q›÷´zíeRxGu}ÑT Nùl¢>Ã6óSV=ç:¢LÄ4¼;êLx4";ÏS¥:i=ÅT)=·A…P™?—GgXýCqN²hÍAMlpBÌLbrÐCêKÝv²@YH wcC$LxfAtKOw­?˜Mìv«A|Nšr±CM.s¾CZMMxÙCàMÝz1C MÿvFA1Mu @•Lqx@üJ»{BŸL{›B£L7zâBL7zÆD«MÍxCM.tJFRæsAG'Tšs2I?UÄqÎG¿Q@qGP³tLD&N¤x§GœR»|KÂT­zUb\4tùYÕ`ÞmÇlðgª^œš²Œ~qI¬ÙšIu[§…•Vko‘„u#gv Ok!yüTHT"lFû‹U|Wä–…‹Dk-†hmÐ'wxkzÌkäbe{´löZy€˜uŒ]K‚Èw]¼‡ÒuñT.œÚ‰¡ió@›·y¿¬£/{Y¬ß–Çs‡‰sñUãzÙhÌJWo.Q1€toX¶~l×VÖIkËNw}hGHwìb¥IWpæ\„HçpèZNDûpZ‘FÆr¨]ÛMPvIešO³|ÍjM&„àl%OþŠ¥uòU„‡pòLà~Ik$J\z¼gwIÇwÄe;K o†Z E=“[~ôQc’%~†NåˆÇsn@I~[j @1y4gHNrlc›Hem`a³C2t a‰=u„ðláFÂŽ€´ddœ–‘Úy¶ë¥2Ž!À-¯ÐB¸›Œvœ¦«Š N˜o{ÊE|Îb‡Gõ8hÓQº‹ŽvYh—€ñ_Εb‡ímê “¼tt½˜¨…ŠHÃ5¤¨¹²ÁG¤_ÐiÇD´ÙªŸ¹×|Þ¥¿R‹‰œi‹ÞйªÆ‹ÖŽû¬‹`/£©Ž·Ž&žåŽަ™ ŽÉŒ—šI‹ŒcžMŠåˆW’‰!™Ó‘„2‰lÙX5c =s7¸Oï7L;êVá;œ@_=‹F“g-?ûGDj•AgGëkJB`Fûh¶@ÇE3eEAçF`eŒBÀHjCK_q B¦L>u—CJOÙtfE¶NDmÁG)L´a}GI%UIH+U®JJûYN?NvdaYÄXòlPƒnxBzg¢`‘ù•­­œà™¨©ýœø’7r¥sAl\I’JËb†L‹H¾g[E3C|`A?jB^\AwDz[æD¤Eü[¢DÊD¬[äDÖEžZ·CþF²[6CŸG#_/B·EÚ`žA-E'a(AGÅbÉCM(lIÔTÍt{I=Wq…Kt\vo,I&X1mÐJÊYçnLKC[•qGÌS£o(HòTÍnÉGLSYmPG'SjqÔGüRâs™EöPvqjDO¿pÈDN­r B€L$r¨?,Nsq8B^QþqÐE~Sšq$DqQ¥pöB¾NsÇC?NìtòCøNCvD@$N­x?FNš|J<ÇL@|ý>yM~ÜA¿M)€³BvLä|¯D9N£wHF{P‹u¨EPQ|w&B¡OævéAÐPösgDÉStCŸPãv‘A&M†|ZANMÈ}4BäNGyâ@µM„t§BéNtkA OüsÖCQ…uðB OÂw{A²NwºCGO¶vVD|OŽvªD P—tWE!Qêr•C•O s6COuv C¥N¯x,DN§ymENµy\B³MJx“BÉM|wEuM±uHôO÷uâD‹O[u!F"QÔuEDP£t¬EyP|tôC*Ou^A*Nu(A«N@tÒ@ NraCOŒrBYN¶nã>&MÞpm@âMtå@ÎMêsÜA)O4v'A‘NÆxÐD¢PàzB•O>u&C’QuÛA%P2x•B€Oç|?C Oˆ~ B§NåzcBÐOjyÔBPvyOC)OvnFÄP—u#E›P{tŒD!Qr|DãPœq\BIPjp B²PNr…?ÒN¥uë?HMyvAäMyZ=Nñu~?ùPmx;÷Jbw†ArNúx==´M©w<”M¼{¾<%M~{–?rMÉy >¾Kqx©?®M|å=Md{›@àO¢u'CùPhjË?¯M)cñ:JI_Ü>Ja5>xJ]«>ÂHäZ4@ëF„^oAïCþ^ÄBñD”`ÚB¢FkfñBŽG‡dìFIIP^rIÊKî`èM°OÐcÄ]ÖL’h/|ÏqntÙ¡À›¨“£³Ê¨­”.¼û¦Û‡nÇ ­’…/Ç­1‡4Áªqˆ¿¿|«®‹Ý´X›ôÛ¡‡©tˆ—ŸŽ”„—9“|’«~%|:ƒlN†N£Y)Cø@—M39²< M>4”<­PÑ:Ð?SÐ8ö?ôNW<]EÌWØDO9i¼B•M†r A˜K@tKCêKÁsÉBÂKsyA°LÖuÈ@¯L×vº@`Mºv¾@öM)uòBANvøBLNÇw¿AOÞxA¹N÷wC=ëL`xåCôOTz5>ÕJl{uBoM‘{BMzC My½E¾MÛx¸COM¥v¶EêPÈu„GITut0IcVñrÙGRqÈG÷P;t/EqMwóFQO}ÎI³SåzìP[æt¤^`in—mEhVcÑ–‹±uR³Ì¥üƒ¨¸íª †{–û‚‰t~X‹bLÁ[ŒKG‡¯nõ@šŠÿv=N  [r–’‰do’Ά6wµ†;x†h³ƒ²r{TO€{oeGæ~¦oGQ…çt UØ‘=€±gª“¯t(³é–sj¶ž‰ëgc„•oÝO|ªeDMlFµ†8rãUŠ€dn QË„ÚiÏMJ{ÿ^ºBp`U_GÃcºNÖCŒg+OAÃovUÆGs»[™Nr\“Nßs8]„IEz bíEº„lŽL´…ÍnZIØ~ÍjßFòw^`/BŠu[_ EŽw­cWG~€in½FΈ…u!H}‹¤u¯@!„`nŸ;{Fh#BÓqÁ`ëDPhVYç>(i WÒ8yÎ\É;GˆIl¿JšªŒ•x]Àî²ÆœºÌ[ÀÑ©L» ¤†l›j}VLþ€2`(=úp‡Sƒ>jsŠU|Eˆyi_G´{ÇgàKñ€äpV]–¨~j!•7„Qk0™9‰Ë…-™×‘^™U“FŒ–}©šq¹˜SŽ~‡j¿ˆyš®&kªoŽ ‘u¬2ŠÆŒM¡#‹‹‹8;‹ ‰ý˜Õ‹Þˆ§™<ŠSŠ˜ ¨‡‡S¤²ˆä€À’U{]jdi‘SâC¯P‘;T8~P9o>.WF8¯>]Ž:£D.f¶?Ily?lG7k@hFzh”A]G fBLHdedC·IäjÇDLp C7MRÉ}hDPã{^D™Q®wÂDlTàwIE R#zÛEôPb{æF¸Q3}/FR,|D£PzDPQyPF/PLuH=QtODPýt²D~Pãu¤ANueAJOxY?îN{p@ÜNä{‚?Mñy3?Mi|&>GNÐxä?ÇO=w>>ÌL€{ì=®K‘|>LNñ{P@ÑNL|±@ŒNq{@çMJz)A£Moxs@ÈM~z1>RMñ¸>ËM´|BANOoDMæfº¸I[x>àIoWe?iHw^AÉD{`)ATAq_éA²CÇaºCúG4`þF¨I][wIJ¸\LPuNÇb/[öJŸh§m\f rU–ì‘ã‹V»—°g–ÝÁ¯NŠøÃ¬(…Å­Ö‡ûÄw®Qˆ €«ü…ô´¿š§z†§\òoVž‘ïx¶—[¶„³”Ή¥ƒ†|ÕzÚLÏC%O6¸3™K118¶Mù5,?Q96Ø>ÿRèCÇMhzbBçLymDeMõx¸CéKìxmDÖMCz¹DæOuwÙFfSît:JûX†sÉFêQØqfGcQEtŸGÍN†sdG—Q0w}IÎTxvÒRT\tö]fa™p«hÖgvb’óŠatc°è¨x„:³zª·€ó–^†Ôbí…xÈOµˆûeùCΊ®hê7»‹‰m(Ckªu9M£‘š~¯a˜H‹w’—ÍŒCxÂŒ«yÂ_Ù€,iãC(|#aÊBÙ|™e§K‡ÔqÆY–­ë_³™'ƒÿX “¼|”`z·jSO7za·B€ iVBa†Km5LJwi9M~DfpJ3w£U‰AqiJOöFÿZqHEÕ]XI©AujÿQŽG)st[FQápÁ[ÜSn‹X†JnAU…Aòx÷aCI }Àk°Gµ{Üg5E{x)aC\v²_¶E\{agHIgsc^G wÝd Ba‰]u@G xDK}$fþA”n?]ó=Kj¸[0> p/[–:×}¸dJ6¾‹Ìx_F ŸA’7vξ­CŽOÅJ³’!»É ÷WŸäÊP˜€š_r71w5[?Ìuõ\­B¾q/[šE]u-b8Oht+c>Tu{dkÛ]œ„ÖrPeïwÑiÑa‹g*_FaNt4i§fßzÁn~i߆å|2…ù‹|ˆœºŽT¨PŽ×‘E¦Ëˆ=‹…ŸuˆšˆUž2‡„5™ù†’‚S˜ˆÈ„Æ š†J…2£o{ÌxK‡__PýUØC¥8ŽQû7::TÖ:¼?/Z<í@À^0=±D²eÄ?üGNkqAH-jô@dFgå@GýfvCLJ%idDIL¸mBCàKp!D{MãnxBƒL9kBKðcE¯Jœ[FF/G¦YéHËEš[$MýK!a(T¡Q%e²k>d8e‘›ƒ#i”±œ/ˆ¶P Ý,™M’PyÇf/m¨ká>'GI_ÉDºD^íDŸDB\sCèEV_dCýDÔ\.DEPXSCŒDÔV C(E Z=BFê[ AF@^4A€EÇ_+C”Gˆ_eDvLf»E7PºoŒIûW‹r JÒZÒožEVænùG#XhoŒIYPm*GUJkRFÿRtmŽE‘Q2k{AÄN2f)EHPÔkFIV?w.K?]H}‰MÁ[¬zLDxM°n:BÚKÏo|?šM6s@ÁOsúCRîp©DQ[nœEÕOIpvFDPorûF›QgqžDOÊoMCâMÒs#ALYvCÙMWx\B³MJxÝCïM˜xDNÊwÁCòM»vÇB`M¤w*B0O†y¤@³N¢zŒA2NdzbBEO·x›BgO“yBtN z¼C¹OxõD\Q9v§BªNxCŠN:xjCO†xñB´MYyiE’Mhx/EGN~xpB”NÔxóBºO'wÙCõOfvµCOìwdBcNv DùPÝs¤B·NÂuDÐNw1DLOèu/C{N_v\C^NÆvDFN`v…DGNyþB!N…|‚A^M–wC$N†vú@¬L¤vÜCOvC°NNsCbNqÀBgN\oêC¦OüoPDnQrpCQšrÿCŸQxâBQ ~îDµQ'~úD“PyÚF>TðwlF‡W¦zŒEÎR«|­FXQÐy³ECQÂy±F»Ru{øEQ^zìEPùxHfPCwlEhO\uÁD¼PVvWBžO³vfDOØzàB¡N }Ø@TNS~ A¬N;z A{N„w;A+Nÿz? MyàA6OÜw?¾L³zc>GL"~¹@ïNô|ì@OFz}@ÂN‘xD@ÓNmz¸BƒNÔxCÌNàwr@¢Moy/AŒMO€?$L/r‹ELªhs> I`H=EHö`{>÷I [¥>YJKXg=äH?\@SGb_IAaDr^DFh^uDÂGŸ[XFÇH£Y IhI:[ƒMmHðaºSÓGÖgMU`Q¹aÏ‚‡H‚,¹î©ž&ȳžŒ/Å­…"Âu¨£…„ÄѦ¾ŠŽÄr¤R‹!·³›d®¤€ŒqF¡eX}¾šwŒ˜| “²†¾|V“ª„ÝqÁS¢D£Lô5h/¬Jx2Z7YOx2%<}Rû6Y@2TU<³C7V„DN9]ÂDôPŽn_B‚M†sÿC!N7qCuMºrtAM{uÊDMO÷v†A L›w AØL7{¨B9N¹vtG¤SNr½ERq|AHOÿuy?ÝL~yW@CLÛyL@LzÿAˆLÂy½A*Lux]CPN yCMx`D—Náw\CgOv´C‰QõtèG>Uûs+EPP„N~r¹?ÄOwqÕ?ÈOùlÂC:P`lC‚O#pGD\PqEG[Rn]D6O¨k/CmNœp²@HMks,B[N©t¨BOXs!C©OssANƒv`AÄMJyÝ@FLy™AL)zGAM*|Ð@¼N|ï?¦Nùy¶@iP0xï@„OPy@{M>zBhNaxÈAÃKBWØ>ÜHUWéBYG](C E¹X=D›F±X?E8G˜[êGsI`]×KãH³]ÎQéF1[×OI%Wrz]oBvh²CŸuŠ.Êš´êéÉϰlj±Åê©°„qÇüªsŒáÇpªK‘¿bTŽÚ®=–ñ~A§•ä>šéŽd{°ˆ«{TjÀŽß}£nä[JP6é,‚KÙ6þ6ÔQæ4~:)S 62P=tqGýP¢t6JW‚ræPÖY^o2VË^6qNnj¥e‘JŠm”¦F¡ |µªU¥à}‡Ÿ8–ÚvÆ!}K—:€ÁJI…bª+{‘»sG-™“†Cdl|Ðdcˆ}w/f/“ª‰2{%æ|gn}¡^’Emu)SÅ6‚v™ZÑA/ya­B¸}«gÌAôiôF¹ÏjúK«s[JANnbTõ7†wÕ_)B0}ÃlêL`}·gºHÍzIaaCjPÜ:w`§M4?·W¹K¸< Z¸M¸>]ÀNQAŒaòOžG÷d9QyIeåP§HÓ]@LžC¾d¡PdE…h)S×Bm"X³E q \GwjbJ©ydŸJ zÃk4Mž‚ r3TCŽ {¿WŠbsI±u8^\:k÷X÷9™k [*AVp_HBv~QmùG¥Žôzz]:šï…òbý¤§ŒÚb±¬«gpÿ¥“´wë™ …ýq›Ž?~»jâ‘?‡Ëv…Ym7ƒêi¥è… r"€u¾`ob%OZbÀS÷N¢UZM{L­[ÔQµMNcî_]«jÅq)|#yG¤‘î…ж›:‘~““¦Ã¯N£Ï‡º‡5ž‰ë‰¹ å‘Š‘©•“£J©g!ŠG q|]{Øød=cóq5ItA/L8M4 JV7><ãS4;DB^W¯;3BT[>‘C.a.B_E7e8D»E“gVDFg0CþF±g"DÎI#kEãLMpÿC»M|mEiPÉhPDTObf°CGKbôD,H¯^pD C_‘GÁD1c¡NšMme hÉcØjÌŒ&ˆÛvÄ«½Vxu·¥¥æw¼­.ž's“†Ê€c™OãOV64@;†Wî?aAba:E FÙe'C×Cw^áC½FàZbA§EvW©?–DnY,?dDÄ[s@Eò^›?èEõ_*@¹F±]1D­I¢^H0Qûf(HÜUÞlGñVroHÕY—nîEÓXMkÏF8ZÅmE¡VånE:XpyFþV•nPGBR¡ndEoPùp^E‘Q&r[H[X3t!Qœ`ÁtcI Xšm_AsOÉlñ@COârÜ?;O¢rûAiPCr @ŠN²o¾AÐNep@‚N%rBVO½rtB€O"qÊB¤NÂm:A»MÝqk@SNhuwAÅO uîA¯Pgn÷CRoªCÕQ4u`BSOtv`BSOtv«BËO&wKCêN‰y”ByM){AjM?yøA4O¹yè@WN†x#C(P@xÞB¼O7yÿAˆLÂyC}M\zFD_P;{½?EN‰zzAÛMŒz¶BNËyBtN zAëN®z¹AƒO,zîAÀNZ|bB¢Mk|?B>N {ìAœNL{k?ßL¢w‡B"NxuB”M“uR@üM{yñ@=Nþz`@¦L]{ñ@@LÈ|êA‡MæyÊBÚN­x @\NÝvðA#P"vý?ÉN1sCèOÔqºCOp EäNs«D¸N¬vTCNIy~BxNM{ãAƒNç{ D´O½zÁCâNw[E¥Px“DvOJz÷A L¹zœFP¢y|DPyÚAžNnyXB$N—yÕC,O.yÙDñOÿt‡DÃO}r»C`OvkAæNjxÍ>4MWzÆ@XN–z!? MayTAóN7x)BbOdt@BTO˜tŸA‰N^NzÍARßxØ?P|w@@NExV@gM wþ=ILHw_?}L;r’=IIˆfÆ<µIR^;ÍJe[]8ŠJÜZî:Ki\W;éJZ*@NcZ_‹‘jr{Jd8}õKïš…÷lÒ–!Ž£s–ö…šqô–‚nm<‹svb]K|‚\†F"oSPr:¤kRNAøq¯[GHyugüHo n M›‰w/[›‚ßq–Q«s~^žBÚrõYÜAaw˜bÊHc]ENµA½^¢M%G`xQ?HeÏR•JÌnÑZwK‡px[HfdQŒAMf’R»CAs~^¾Iûv'^Iuxâdm?‡v÷H±’¯Vzƒy¡GÅz¹dK?OfÒRÄ;}YÛL=;Yg^TB‚¨qnR5™ ‹wtX¥î“{{Ížç…q`_’ÑwžWvD{wl3“­‹›„`’éÅ‹z6†7~2‰áy÷c ©|—^H’`…um¯‚®xTb»k]bLâa™VXOÂ]¹W‹U=`„`¡Yˆa8fSilšw&Ч~Uˆšù†nŒæœ¼½“¯¥3‘\¡1ˆè‡Ð›ö‰±‰„ f”’’t¬Ê–}“®‹’JM£ú{Ìv˜¦U6YLoöDÞ@Oæ54îM68Ì;âBÅYî?NE_%CHÈ^JBßFša5BÈF›f CeGŽizDJmÚEYMu»D9N“uwBDNxl}AìMc®AJùYDÁE’Z?E¯CñcøF`D¾h¶MHMšiÌe&a0mŸg‰Öyÿ¯6£é~§»H©z‘¸/ ¶u²|´eNíH@U#6zâCªa©@¸D§aéB¯D`[D0FIVßAÖC±U™A+E•ZA@ÂE“]a>D_?FEÚ`Ù>G{]JBK"aEGîRBl)HeXìqpGìVr¿F…Upo7FóT~m9DSYlrBøRKmmDúTMp$E#S´p[HÚRãs E©PGt¢B"PsÌ?½N±oáB¸NëjpE‚O¬gÛ@N_l“>wM[sà?NÂu™@8NÏu¾@öM)uATNht~@ÂN¥tÄAÆN´tŒA¶M„sÊAðMÄsN@¸Lbuæ;.JwD>,N[w{AÃP™n¼DRFmCCÇP8t0BVO§vBæNjwdBÔNkwïB©M°wCMZyŠB Ndy¿AOÞxBîO%w¡C R vC¦PJwÓAMWw~BòLšxó@MM§zAENu|™A”Nç{>B´MZzH?hK¨xÓ=&LJxt?¨MÇxÜ@6Mey @MWyµA{Nqz¾@uMé{ü@fM z„BzN_w/C{N_vèA_Nëv4BäNGy @õLÐ{IAYMtÚAßMÏ{TB‰N;yj?jMTxˆAzO¶x±@=OgwŠAN·v¼A³MQsDîMlr‰BN»w¸A5LzàBNí|Ï=ÓLç{{BÞNñz C¥N¯xfD!O”x9D>O,x›CNüwwClMLxIAHMcxQBîNàxKA\NÈy`BøNh|-CjO´vóC]OÙsˆB“NÄvB>&M wõ@‰NPw@MDt¢AûNœwICÙOßyæAÐN8xüAÂNlx¯AEN…}1AWK=MBL:€AßMÑ|ž@«Mæzì@}N”yÀA°Pwg>èO„trA”O>vÔCcNùu2?MÅtL;—JÚi†;=I]V9•H­W¶<.KOZ€;îJ\><”Ji]ý=ºJæ]íN> R#9¸C½Rí:VEöUfBL \_DZP#h†C2PùlÔDoO¿mâBM¢qUFòN¸tBCSN-w @—LµÉ?îLj|â@°NvÉCQ1xG(RHxF2PwÎA`Nûx1BeN=zçAìMŠy÷AON {?ìM¡yB‚NÖy?¸KyÝC`Næy¹D]N±xòF»P w*H3T vHRS©wBH‘RúwHR%yáHËMw€KóU9tR‚ZoFW7]ßpYf,h¦lý€¡~ÊlÒ”q•Ýxn]žê{œŸ‡œ{s¦y'u ¤­˜™rôŸ8Ž‚kC—‰õ]™†k°™r”{r –duÙ˜k‹¨h‚Œ†t“S{ðXžBh%M×8Pa'M=fúQ²Cïnœ]Jîz²k½NúŠÓ|&_uˆczä[žxPeEHr&W"AÙq}VºA¢wž`“Exv)`yHjcØO=@YgI¨>gY«H >8aVNåCÅbüPáA¹azPd@lbƒPEÅd0SICshˆVHxvašJ÷{coIÔp0W¼Bf«QÌ>7mÁVlDÅnÙTÇBlv^X5„…pñA5–3„cV¦— ‚…Mû‚üjOAýe„QŠ<äSçFÂ7ëUÛI"?jtwbhK…ÍR`Š «Õm•ž-‰Ûa$s|!_'ÐBsÚ™ä‹0–ô‰Š‚uqÝ`¿{)j€Q­„„rW:ƒæqX©yâm÷WPjaN`cjYÍOëd^¤Yýa¹`g\"eqk±pR|`…Å‘hŒé‘í$忞‘ª”ž§Ãå)¥DŠˆ”žÞ‹<‹þ @•픬Ԙ|—r¯×”Oö¤ xápƒJˆNnºD@wTŸ9­6‚RA7¥9yVì="B\¾>²BN_t?|Eå`£AñH¡_2BHHú` AÓDfÌAÅDem)FqKt²EqN¿x'B,MËwÁB”Myp¥CËLe…DÚJc\JEF>]ßEE½bÉG’IÍcfM¸K…b[^¦Pód°€Þypý¡$™Az|µø¤H{G¸d†y•˜w]iR~MæX¡6­–F_?H[BIK‰[ÔCkPMfpF[W°pxG‚X˜t®GIVæsfE›Q±o›DRn°C,TníDûU{qËE]S¬t•GQRwvÜDÆPßsDßPirÈA$O1nâAcNmj¥@gMsjP?¦Mo§@#Ot@@|N¨voANÆx£DMP*yûC.QÇv)BbOdthB•NétöA,Nv…AfNRwAÛLJwŸ@§K)y"C N|y?C«Nq}DÚOÕoQCtO>tºAƒO>v >€M«wdACNSx CÍM®v¨DNÙxØB(NÊxÓAÿO$w4@:Pöq]D StprDêQUqíDëPít'C9OëwÈ@³M]|º?oLa}ØAENt{CÓNWzºC°NGx AqNëvATNSx!AmN¸w“@¯O×vOAYOÛwj@$Mfz¤AHN§{"CO…xýEsP6xNE©OvÛBNNëux?žLçz @‹M.~è@¾Mõ{Æ@ÏMäy¯@ñN{Á=`Màx\@ N8w°>1LãvâAÄNvB•O>uAîM®x3A"MC{lBFN„|)?ÔLõ{Þ@õLÎz¨CÙMfy×DN¦xÁCâNwoCÏNv¼BN1yèAwN=zA N’x@ÂM;y…>WLÿySB~N’w«@M t»@éMlw¾?îMÄvƒ?TN²râ?6Nær‘A¤NÄwÃASN@{¡BÍN}}@*N|OAšM~õ@­KÒ(CcOu€ÈBñN|`@¡J yDvNyøD[Q)tšCkR¡s“A‰NfrÌB@LunWBNÞmº>kLùdÃ9¥I8XÃ9}IWM=tKö[ÝF8` DúF€]¾BcA#^-E†EÄ`˜F»H¡`†L3Ka;OLÛbØMGke‹pÒW`q­£˜Ö† Æ`¢†»tŒƒIr·ŠÚSÅ1‡ÈÈá¯BŒ Áº§>}Á´Ê›½|ݬ•Gx=¢Ëñx »b¨¿†®6›¹~Òm´[§Qç5B0‹GÔ5M3ÊN5m; U';óDVˆE]OZ\ƒB¢O]gŠBqOIo§CóM¹nBžL¾påC0Ns~CN vXAÙM|~‡@NÐ|r?2NzyÀA¹NäzCNcxE1OPuÿBN’væ>RL½w”BBO„x4DPy…@ùMHyZAFMAzÚ?iK·y C!NszCMZy¬DO”x/F¹QBzÜF„Rz|¿FR’{ÀGµQü{ IkQ§w­K•Uêq¬OÊ[WožTï^¿p0fÆi×m²|b~nd‰“xŽ•<˜Vv¨œs™(oÁ©ËŸøsB³¾¥Áz ´Ó¢b{D¡D•&m/™„Þjד͌Áa¯›™”ulJ¡H—AtS›´‰´j¦€ˆfŒGÎlXTpAŠ`¸OÎ9„e‘Q\>¹cRA]rWa‹H)‚ºqqKg‚`p=IÕ{¤f$GÆxbºF‚ttYg?÷v'^:D]u8`£Hçnw\›GdjûT¨Eÿh™QÛFmeÐLF&_NüCaeNRÞB4g%S½@™hÇU§?=q=`„E|´cPGr„ixIZ~efGwâa”E@t-]@CsXCŒ|Ù^o6ŒŠŒoGAŠ˜ì‚ÒWÑ›q…D\Ć(nhG‹i/T–=ãV¤L!=‚VþJÓ>‘oYˆBD…p¯HÍ”˜¤WEžÁˆæ^Ç”v3_°†q·VþˆÍqÜY·…l®MC~‡gÂK#ƒ±uìfp·vÉmâsEcEU6l/^¨O]i¼` Qîdq\€QUb{W®RëZSdQµ^«[]y_wüz‹‘‰àŽ>X›Ê“¯•c©{‘\Ò§“Ї  ŠA‰ë ’Y”7«q˜l˜‰¨®“9“Ÿq}t;’‘H§LÑpJFÎAšZL;â7ÛU :d;Z??3DQci?úE,fn?~Eeñ@íFŒaæ?$Gîa³>ƒFf¼?(Gil B¤Jzq³C¤NŸvpB©OLvdC•O"oQDéMþdæD1Jº[7EF [#HXIbb[I[Kâa§JºLa…T•X“^,yZk9¢™ u¶Ñ§ }®”ˆwb‡{@e%QìLÌWâ7&=ZW0AÌCnWXBF(WÜA&FŠWöBâFâVÜApFÆWB¸FÿYðAïG»ZßA¬I"\[@H%[±>2GñU¶@ÎI[SVCæMXhFªR·hHwU)rÊEåQ¶ubFRt:FžRn÷E7UWn4EëU{q'FúS[t¼GMR4tFQóp¦EQupDßO.n®C¿O‰mƒA5O0nB&P‘o¶CQQþo£BbO|o$B O~ržB5OÌtÚBWO¦uXCÝNÏuC N!w_Ley?A•M£xCAºM±yŒA½N{gAÞM¯xƒ?ãKwRAßMÓv[B°N\v >ëJ¥u¦ANïxw@ Nyxì@òMâx&@Max4CwO]xÂ?L¾w¿@ÆL'zrA…MÇvC8OñqTAN[s•BNO.zGEïQS|àBÝPG|%AéN|¡BÍN}¿BØNœ|­AìN¾{qFƒP#{ÌDÝL…y±AÐL±vD«PqkBPm·BíNõk¡BgMg7D=O/gzA_N±_=—LXÄ9uJYÌ5rH­cu9kJOe¢;VG“cV?“D”^©DçEZME^E[_8D¬F¬cGÍH|`ºKpM@c×MOe´\ñOÑfqY o𡮊ƄfÁ¦!…c´/„ã?°·à†‹B®»kf*Éé«;‡òÉÿ®î‚F¯¤îy:°•knö _‰Ìgf¦Ž••y©²¸ „€@€1r¨aXbšS“P™00LP1–6ùU;’EcV–D NYÝB€Nø`ÓCƒNºj„E\N:mªB´LñoCuMºr“D×M#vJ@èKà{o@àL¯}Ì?/M{¥C\P~-BM{,CóL™w^CxN+vù@$N«wÌBqOwøFxQˆvE¼PCyþB!N…|NA K–{èB?Mù{BÊLhygD“OáyØDFQ÷zþFÊT—|»F‡RšzGRRœz–IT2w)K·Uèq:N;\2qnW}_;nÂdÇgïg4}~'n<¸‘\xt’•5w,˜l–'q=¤;®sw·Ò©½{v½l«j}®žˆwížÒ–2qJ”匕c’a‰Ÿc›=‘ qÉž¼“®tK““„'j@}to@\n¬[ÈHtoZmDGj­T"Aau±^pEkûF-…&nÍEƒËhuG¦„lnhJ¨€¸hµFÕyßa±E‹v b2Fëvðe8H¶zŒi«K1y³e¯NÓn»U,IƒcšPCŽmFY.F¯o]òDpV` E.{Þj5JœpjiGqˆ.ovIä‡%pÈHÝ…ðn F²~c#T$>Ãg‚W˜CzvÆdRGß~lúG~ŠsIS•|ÕWGŒCtÖM"v®Xu;š{á`¯D”ˆümJ猵q†J$k~Ãj6‰7~¿w t`i½cÂj*^ÞQÄhŽ_rQb‰Y:SØZÎPÎP¡TÉKUH†[ØQNTii]Še}ys¾‚½Šy‹q•P”¡–J©u“¯“¢«;ŽDŒŒ¤ Œ(Œ©¤q‘:“D«±—é–‡¤`Ù™%j}nªŒÙGLIlAHÔFLZ@?ÎVƒ<ø=;ZÒAÛFa`&C†IÇaÕB GCcßDsG˜aMCHÊ`™?ÒH`hl@¶J“o­B6LóròCPO+xE@+OhxðAâO¡sãAßL—g5DÎIA[¢BlF9VF%KK^II*K a°JyOnb“MYŽ_ytã^ Ÿx—ùnײ·¤¡{q«e˜mrˆkÙRJCnT›6ë;B[AHCQ[ãCdF§X¡BJGêV6CïHºWx@‡F†Wš@3ET\n?E]è?8I2\?FGõVô>ËG¡UYCóIET‚EiK·UGvPÐd…G8QµnbFSPJt^EðOÖm­HwQèj†EÈQYgTE™Q¤m$GeQ[pìJ|PÊo§GrQçl}E'Q4n‚CõO”n•D"PÓmD1Q&n‚EStnìD-QÀl¬BOëhÚAâN‚kh?™MPo?´LFsAéLw†?³J‘xú?—L•vÔA6OñsDŒOt£CLNÆvÈ@¯L×vø@šMúvCÙMWx¹E{Niz³AvL´xÆ@ºLx“?ýKýrBBM¢rüC”MŒx¨@ÄMKz{?JNßxn@‘NÇy›?ŸN”z?NÒxnBOævõA¥Ow„@„NûyS@áMô{²@N¾zw@ Nyx @\NÝvŒA‹N`x]B2NSw~AÐMøtŒ?nNv8AfO§wá@?N!yœAdN.yBuNvECP”rF]QpÎBJOþszAeN?{&@XMR}Ï@­M€Ð>ÚK~íB%N¦z£B¡MKxšC›MóxNA}Ly.A2M"wÅA0NDv"AôL°v@Lv‚B™MÆtmBNßu¼@{OÙwAUP!vÃ=gLu>ïK=w£DMP*yô@’L>w*B·M}xA±M;x€AMNìw§AOw BODx¿@ÆL'zÄ@Kc|¥DöM{¼DlN_tKBåKtqDB¾N)vŒCpRÃwN@cPívß>ïMÔyT?‚M§{C›P¡{Ê?,N7wŠC³N{xºCÀMñwÁBìMltC³OînÞ@%OÔf¤CÜP¼e«A:OØdCÓOúd€A\N¬Z?}MFWæ:˜KJZÓ:ÞJþ_K;Kvd¶:‘J[ba;¸Jgbµ7nIfû9BI÷g!CGx^åDsEZ]¡D˜D ]ÏDhGÉ_¶G&Js]qJ¹MhaMoMg^£R‘fÄhn`nêšô†3€ÁÚ¤I¾÷”ÂbŠ´B…P@4­‰yBϸ•`pÛÊ´ª³„ÃÊ“ª |D°h—UmQžž~ŒPªšà€“Z=¬Ÿ›ß~•–Ÿ~vnwÄo7_ï;‘=øI¾0©7FP®JNxBæNjwÜFØOstÜF¯PtwÐDÀN3zƒBôJcz,C Mëz|CõMþx]DnOÓx EêPÚx¤FuTþx4FnT»w´FõSåwÅIÃVv÷J÷V®rNÆZ«r¡Zã^¸nK`øja–~Θo^Ž’â|g•À˜~ •½–nr¡—3ní°ê •vWµ^žLua¯Šž{”´N¬Š3¯ ¨Rˆ›Î’{r%“†dî™àdnNŸŽ”•zëš*€‡ˆôwEd/€îl3OoŽU^ArÇU¯@ÿ€#g#G݉pgJ–ŠsoI°‡!lvE^€ gåFÖt[FD¥s=^gF…v©b'B‚pÄJÉ„«s4U—y™g€JYmVöBGpŽZ˜GsÜa+LóuãeêMˆõoNTN†’p–KŠˆÿp]Hÿ‰UqIEvŒ¡q4B’ˆl AÀ…£iÓEh°~ùV|‹(wµE‹rqB&›µ‚P]è°‡q`Œ x›K>tÖhJDèqni=G;z^n‘N*~çm§P‘j·I=EhE…{÷cGAxqzYT<€­m4Lš8‡fC O‡º^Tš‚ aGŽ|~4i[ƒAy¼i³{Úpe^Exm¢]Ýv,qÛhÞj­cqX[­R¹Hý_±WCmIžSîHîNoXELNQâ_zKvOÙ`¥KÅQ{]0k n¥[È“Hvoý­¢è‚騿–{ö|cbWïFš?°S6Á<»\¢={A²^çBE\îCZG‘XÞCÉGÒWB½F7[‘@oDj_\?œC¦`J@Fk]È?FZ A-H‡ZAB4IZLC€J±\¸CŸKd*CÍLFjXBTLžl°CŠMÄhEKNbC–L#^_AM–gFOÂmüHÐMèl3GñM mÂD1OMm_B&O2mÐC¢Oäk&EÆPélSF¡S‰m·F%R.noCãN4mÖANo¨@TM,qå@ÎMêsAØMmw¦?M†wÙ@©O”tI@»OßpìC}PørÜA!Nxvz@1M#xˆ@”M£y,@éL&z?B]L^z%AßJy|BfMüu±B+N÷paB­L—r¶AKw­A1NTxA›O¥vþ>-N[vš>¤NëyN;¨L«x%AûMkvkB§M“tB÷M#yAºMÂ{û?MF}“@·M|µ@ZN¹xOAYOÛwCANjuîAM¯tRAëM{x†@¨N {@çN}{þ@ÓNlyuAO4wBˆO–s‚CEPìrJB`O@vÖAOyM?M%zß?«Mç{M?M%zíAúMGw.A2M"wALhxÐ@Kèwª@LŒv€@µL.uŒA¯LÉs:BdL‹rYB L€rØA8L%tA!OÍvÁA>P»u¾@öM)u÷=CKŒw„AŽMMzU@”KxBnMqxã@ÅLxÀA™MÖw%AûMkvÚA’NÅwR@èLx9FúN“|ÄE9NÓ{•DðMˆu†DþM9q‚C½Qòsá<ïOgrè>âOùuÌ?ÛN÷xÆ@~N¥{çA[OêxVAON(r‰A^M qú@ L™pò@ÌKn5?ˆLl®?©N÷iíAûOoj:>ÇM–iÚAêNi¾B_N(b¯?ÉL V–=¦LºV÷:FK _œ<¼Jãfê;fJ•a‰<,K]:FJ°^Å<Kb?•JS_×BòHI]ÒCÆEõZkE{DãYYE‚Eþ[ÁG\Iö[bJ­Jo]1OHbc–T÷Ic_bæ^{i©÷8xB¿’ªÄɨ©‚ °&„@–¢Äng1º¥ƒ~¬]‡µ3>l—Ävž®~§¼Ëõ´¥@Š´auMHá›ê‰¡sä§©žV†fާ‡n‰U¶QÐKÝ9?<ÍGD7†AÏQR_McBGOQhbD¤Po!B«Mßp¿AÖK§r¶AéLvªÈšmQŸ8ópuzíX‡vZ|CômRRŽ>_pE{‡ÛjÔI¿qÜEÔ‚Jf&=¿t¡Xœ?–g•O@.iºR›@zuœaôBù‚æoïGµŠ!x?R÷}"iEänTÐ=*i¡Q§E±l¡YeNÕsH^#Nø}jaQv…;p$P6…ým;H¹‡SnWD&‰ðlí?‰®jkB!‡ºh©E+…r8Le|ÿeÖBYzã^F?ꎡvWüPŒòp\”)†h‡æ}G]mËx]Fv l@V`vÞjé[{n[]¾zÐi¿Lõ|©jùHº‚ínMz*z2ZZ¥y‘&kf¶Ô–Yj£­.‘nišž¯?o-”&‰šp ‘Þ…n,˜Àyœ–º’í}R‡^„„l²rcnXr‚nikrñqéu«}À|¬ƒB‹‹3—ö•L—é«3–w—ÿ¯Mö¤J$Žu¡ “Ç“§¢“k”A v;„?˜›dlji€)H¶M&f.F³F˜X®>I? SB?(AU%DÑF\€BRFŠ`oBÄF4dÁBªG"dòAHÂd´@üH°k“AÌKu—BnM€y2BuMçy(A Mv"B’Myq¿C×M k¾DOKÛZ€CêI€Q´HO¤TMZi]WhiaÆ`\m0P*Q7]1ZèV\X–„Ã}ømè¢Ö™3€ç ¿‘×{½w»aR^ÀE/A—Tw6¢=²Z> CˆaB/Eý]CîEW[®CxF9]³BF¸_¨AE¾a¦A£D|b @«DÒ^ê?˜EU_„>eD_±=ŠC—[]©@HFaå=µFýc[?WHwcS?YFh]£B?F÷Y§@:DZÙ?ÜFåcâ?£G=iQD,H»j«DEI€k”D¶LÄl§@ÚK jôB„L3h@¾I±e«C¹NÄk¥B‡MÉl B÷Kho†A|Lýt–@²L w´@;M­uï@òMöt¥AQOŠs4AïP pÂBVQeq¦C‡OLuALM—x?L6{{A¿M}¯?uL¦yA]L@xÊA]L@wó@M¡tÜBýN²q~AxMs @îLnvqA’M…t¾@ÕNÊqÚ>„N~r?=5OnvZ?'P¯wÿ@=NwðCFNpxôCöM|ÎA„MÖ}³?öLó?LV~©A Oªx„@îOnuBáO|ujBþMyv™?CLÜzÁ< LÒ}ÿ;²L}Î@!O½{CA'Oy(AOÏwïAN¢yè@„LyBôN6w{@ªN@uj>NNZv¶@ßO~w÷?Nöu¶@NNwõA¥OwÌ@¼L•ta>æJfs–?’LUun@ÛLatpBêL sŒDMMqu«BeLµw;BNþy!AmN¸w„Oàth@NOfwX@ŸN“y7<L yMBãN7wCcNsvBMcpCòM¹oï@\M“p½?XMktj?ÂMPvã@2NxwÊ?¢M…vÉ?ºMr-A¼MDgLA Mú[ã<ÙKlTf: Kh\M;uJadÜ<ãJ¬^l=¢KÌW…<´KaVÙ?àMWGEfPrYüG·NÆYE¦HËU¹FXGãYüDkD?[…GmGïYyI;I^?MF¢`ÞV.L>aËfãL¾Z¡ƒæn=ec¶é¡!‡ÁÉ7²*Œû»8•Daº¢-pI3±¢~x7Y%¥š|Õ[í¢L‚¡JÖ°ù"}„¦Þ‹yk›–0xëNÃŒ·w]M¡Ëš’ƒ™žá˜ÿavsk6]PFqCºHÂ7Š@úNP9HÇ]Þ8ÇKxe{A3O%l'BÄOúqëCO²t|AjK›s[A&L3wUA§K)xEBÜLhy—BnM€yBFM@yVBšMäx!CNM–uF“N^qtDÉNr€BrM£w4BzLçwBìMzwŒC[N“v1DmM¬]BEÄ^GD9Fn[EóFÆ\ EvF_5CÔE^BúCp]Ï@DAl^ï?lCÚ`A>âFqf ;DD½c@÷E˜\¾AFYÝ@°Cˆ_¶@ýCö_¥BŽG\CÅEÀW¹CäCºZCCl^kAjD?bTA2EÁeêA9D¦duEiIgeD~IzhUAòFûd(DòGÓa>BxE9` AßFöe @šFOi®AIp²B‰LÂxñ@(M™y£A‚M”v¸B8NªtBOrVCÎPµoŠCùO®r„C¸M{vDNéz¿?ZKú{]@dLÇ|ä@OMÊxåAeMítÄBbM­q"B’MyqËA"NrÙAGN›söAôNKsuAžOíq@?ØOªqU>%Psr<%OìsN@ØON#{þD£RfvUA™PrïAûOsi@xNŒrBOßxH?ÏMæ{ ?]NÝ}ÙAôN6}­@ÌNzkAoOyFAîLhz]D­M#}èA_NëvúA~Oýs >×MÍsÙ= N´v;ŸKàvà?”M¸v!@ÛM¶t^@Mùrˆ?HL;s(=çKît‡@WMFueAfL½sÊBLgu•DVLyüDKMŸzB‡MÖwÃA(M‰v›AßL}vkBàNsKC”P^sAsMÈw @1LÜy•@}Lz­A1NTxæAÐN8xr@M½xv@ØL'z½@,MÌybB[MbvWBæM+sÿAèNuGA,Nw’@4Lx`@ M{H?iMB|±AUNbyæAWM0w÷BÜMzvO@¿MuÇ@²N’xn@Oó|÷> MP}@MMº}š=1JDz£@ëM‘uä?ÂMg>óKY±<KT=LlZ_8YIè\<=‹K^[þ>ÊLþW?'NÆUA‚P|V/C‘PùV™DRLaUm?ÍE SCGF6ZÍD³EÊ[vGTGUXI"HG]²KïI`üS“G-]q\…H]U~áapPù²"œ‹€ÉYµ “3Å®¦P„𨃹UÍ¢lƒLKû¾?±yjqš'wÃEçŸvå[X ÓzÍI_–MsyE²…qnO9=‡pš˜Ô“ý‚ªr_p3OgM)S#5h?àPÁ7Fr]ZLLfzœ@ZN¨|FBÁMx‚FîN„t EºOãqGÓRÆq\G!TWq%EðP5pBG×QµsVE;Q]t-F%S|u HªT´yµI(WÁuåL>[·s›S¨bxt|_ïhgã}p{Žp†˜¨˜¥h¢U‚=šØwXŒGŠküƒ|ëX,Ž´ƒ™f ‡g,]‚Jaj®‹‘ƒ`÷œh‘+uµâž*[|°VœRwE² î€Ý¬ç›R}k§ö˜mxØ”óеh¥{ n`€³^B½Œà{÷^s†Ãvú\®‡>|íb×v‘_lucOPµpWL%s[3D]t›b¢D¦rŽcäIrd'K|poQO˜}ën}IÕxŠf8D}´jäG¤‰AvšH œò„ßP²“““jSº½˜‘uü³–)sÒ£‘Ž@me›ƒqOš'€q¹‘}­]uŸgM>cÂ[[Pòa_\üQ°l­gXe<|y›‚cŒB›—ý—|¬ú–*•Ϩ ŒùŸÁŒO‰·ŸT“Å“!¥ü—šÈ§uŠËqdŠlˆµH’RÈpGoNÏg·?"F2^»>¶D”\fA`GbsCµGbzBSF¾bXC.Gd¢CHHgàBVJn&EVN;vNE©OvD PˆsyB7Oñr‡BõL¢r%D K%möCéG5`DgEùUwBíBfVŒFÐDŒ`zK7H7c¨HdI5\ÈO”OeU—sEnö^®…8nô”wŠ]s¢j×^û`Aì:XÆ6j;õ]†@.C]ßDœF·YùCHFÜVµCšFÜY9BEãV{CíDvX`BzA%\K@BN^C=ýF2cx>íG•eD@•G4^‘CÇGüZ÷CñD>^àBØBð\#CE?ZUCE>\…CÁCw`ÚDYEˆbôAE[a1BFåbÂBËDaUCØF bÃA¶N wÅA+ODx6AãO±vTA‘P`vŒ?ZMdz\@UM}@åM'|Ö?OjyCRÿtyAP9sŠAO&u @\NÝvmBOšuSAiN„wï@¡N£z÷AÚN¿{1@|N•zHBÎPŒy B›N:yÂAÉMzSAiN„wÑ@eNgt>>ÂL8r*A—MÆv¾=¡JƒySBµL6zî?âJu@ÐKesA@÷Lùs%?OL¡s—A|Lðr¬ABKQpôA˜Jßq@:H%ttC´J­v÷BëL$v¤CVO‚v7BðNwmANÛtéB®OuBÅMIx©C~Ml{-?JLB{G?3NŠ{Ø>ÞN+z >MJzß?ÜL}~3?MG~o@}MbxªA%N«v¢?íKw?2K›w*B·M}xóCMO|‹?±L~A‘Nµ|àA¸NÓx‚BìN¬x@NŠzY?JNÍ|a?íNå|^@P{|o@NyG?‹LîuÞ@­N‹pî@O`bˆ?(MY°:›J/V`=£LN\“;+Ku\Ê<–K]Y‚@‡N¦X(AyO-Wv?FN•Wt@ MXÓ?ùGåTAÜE|VXBD\ÒDŒDUP·Law:?êL8}Å>6Ký}þAîLgy¼DBOOu÷@YO;pVDªQÖnEE/RnžEfQ³p(F‘QskGèSwpF/SóvºHÏT®w¬JY.t L‡Zæp3XP`¤p-\š^jmuÙr§q¿˜)˜ð”¨a¥>ñŸÑœx¢˜:–ÎvTí‡geÁƒ5}`b ‹¿|ùZ¬´³w½Žèˆ=s„–H‹}Ù³%¥[…ö¶y¡s{صܟ!x ¹¿¦W€e´O¤1„“¥~›Þ{âŸS˜v_Œ¶}ÕZǃýr²OŸƒdp=M|{°hõIr¼\~K•p¡WÏKë|Ge¬O8y”džJsÕZ}L¶r§XùE–}#d Mî}AdˆI÷nGR.G8]NFì;·^ÖH~?wY‹Fê>ùfN+BzÛ]ÔE „4hEi‰¤j F‡fÐBº‚çdC»Õc¯CíŽA}ã^.”Á†'ow•çˆÛrÊoCQÏh¬Q–BÝ^KgA¥lU-Faz]iK6y¼g}J.sÖaG€v8gºF›xUiE†sÆbeAûwjf²EC…örVMª’­|~S£à‹Äbϲƕöq‘²Ó“(t ¥tŒyoÍ›&Œžnk’Ù†g9úluSMfØTgMÿ^wVTWŸaV^ˆg®güdNsâ{Hxz‡Œ‹ÑŒ—’•—Z®#•&•…ªìŽ|‹F wŒvˆc¡B‘Ñ‘T«Ý•l˜ô®¦Žš±£/oÃtWŒK`WqoF O¥f§?íFèeN>DDf"B9GhKBÁE«dB­E¦e¸AyF^iAÇGcnMA>IÉv}CÜKc{EMxEôM»tBDöMàs¼BžKur–AmH¯mM@mEíaù>·B/X,CôD9[F¡F`_ÏGáH¶aïEJ)b›PhU\‚mgØQû‡©xg—¿Š“tu‡`Ó`yFJ?öV¥7*<î[W@6D-_ÆCÿFã]ŽDIýZJDZIYŠCGíVîCçEhWìCòD\ßAÑDŠ\ÿCùJšc`JœQ¨mÎDóK–fA¿F¿[ûCF›Z DïDÜ[œB®E^”AGE‘`B@–CIaE@D‹`y@!F_ÉAªF_5BüD)_ABãDÀ_“@¤Eø_¥=C¸\i@÷C\\Þ@ŸE”_x@áDcT@™Dc >cGºfò=ÈJÞnA“NsrA”O>v‰@íM wæAÐN8xÊACO¨wMCóODy%EkO°yD„NÅtËCpN©qBÞM·qKB•NqqA…MÒp„@OLŠuq@LYw”A3Nxv@1OãsNB¬PpõBžP6m@=wN s';ÈMÝyf¸M¤{‹?1P$y›@jPSv¾?–MÇx9?cL§zu?M?{ë@·O| @pOAx©A Oªxù@UNczU@WMA{0C„Nõ{wB¹Nây1?Nìy¯>VN‰{<@NÏ|ŒA2Ndz•BÍO7y*@O&wš@KO3w@MN'tAFN´pAÏMêr”@YL yÝ@ñJycC3LÛu¨@ŒLïs¬@ÅMvrIBROŠrªAtKo_A×HwiÒ>F™j³?CF½ofBëI;s¦C¡Låt¸C7P wÜ>/Njx A¬N;z¬BENbx-BFM0weBgM x˜?èLyx>õM|@gPî|ª?îM°z¦@ÜL{}?L|©>³KØw C¬OZw–A½N*whBkOÆy§BÁNY{*B×NŒ{ ?]NÝ}â=„Ow{»CTR*xåCÓN6u2B…Lyí@,OU{‰>.OÀx"?ˆOËw@ŠN™t™@¥N%qý@eP‚mA„QPe1=lMÌ]Ž8BJ__:ÀKaÎ94J«_[:4I÷\Y>`LZËA`OeYÌ>cL#Yˆ?ŒKwYx?4GÄV’@äCXãCþD=`MDõDÛa•E1Eó_pG°F f3K’HhIOBI…aÔZ«QHRÅtsRÒD¥–n”I ­r¼År¨>’ÇÉG­9•~¶Þ•Zr¡V_bä r„ÙiEµuioŠ¥{w99nž{yšTÝžgŒ‹pöžh p%•É…c_Š·€klCxço|f“J>¦I4WOD(OìbÖD/P‹híEyQ²oC‚Mnn IÏQçppE`P oòDòNÝtŠA=KQxìA|M=xÛ?oM«u…AfNRwIA»MÅu4BgNQv„@\L2w]BYMNz§BzL{$BMy@@|N¨v“@ÓOùsÝCúPr9EHQr‘FÉQ s¹F¶R/s[GjVÃuMI¼VÚt§JEVÞn¸OP]ÆjYO[“erUW^¾kÇ`cRlno­q¢”€”Ü€ƒ¨Û¤½ƒ¹ tÜz³š(˜Ùu×—È“çoÝŠˆ…m™‡v§Q¡˜„ÛkÚ‘àƒbt¦w‹”ѧâ <†Ù±ÂŸ=}´}›ïtS»ì£x𶻣õ×¥ž™“vKŸ’œk–­…žV9Ž|‚OÏŠ¬v;R߆>tœVðµpˆQ·ƒ÷m1F‹épÇE×€ÒkÇ@õpöUe?!oÝQÏ8~hSG>°w¢UyLñnX^VNóq°Y;is Wd<-d²MÏE¿_ŽLR?ilR<ÕyL]öDw€¥e+KX„±g*KŽ„›i-Hm†ákÛEÛŠÊw$QÄŠR|/bi‹Y|h<|ìeZJUs+Z F´oðYgI«uÀekL…ƒÉtŸU×~smMI³t­aAõrýa¹@¢wéfBEUw)fÐG~zÅhÙH„µpÙJlŒw¤QÍž¥Œ|hæµt#g¯þ•ëu0 9ŒÊlÁƒ¾k#}r.bn…\]S_RNPeV]—YáhkhIfŠj&oƒuœ{º{ï‹¥‹ŒL¬”[–Ç­”>•€¬÷­‹#¡ÎŠç†y n—ªa–¿˜ôª]x‘:šñoòu|‰LÊX>oTJ{RáivDÝL÷kR>ÎEñjÔ=ŸBkNA…CògsB°EáfAÒF_h¨>H…nèA˜JW{‰E]MúHEN‡z³HNvðCL(w$CyK‘vÿBÂHbm¬BëEæb„BqE¤]5D§EY]æEQE1\àI¥ILa×L†JÁbŒQªQð]irUjcYГߋ,oTÓ’žx‡~?mxdëEø>SÚ7”<[Æ?sDÇ`´AjE—aB@œE\\0DxIj[C¾F ZCûE$[³B@F(\£B^G{] F,K"e‰PWSqqJaNšjDAzEY DäE7WŽBôD4ZCARF¯`¾?=FÎa‚@G&a@SGb_Ÿ@Gô\Õ@¡F]CA@E'_Æ@ÏDÞ`˜>Eœ`E>åD_^(A˜Eÿ\"IþiA°KŽp^BBMývVBªLx€AÔLävs=ÖKît6AÕM9w´A[MbwzCÎNõsD¢OÉo{ByN[o¨@…Møo!A˜MÝrÒ@cL˜v°?–Jøx@XLÿw÷?N§vÉ@ÉN t)AÃN¥s >hMjvÊ8ŒKÓxY=.NJ|>O~}¶>ùN¡{f@[Oyw@ Nyxñ@(M™yœ@M_}x>MR~vBêN›|K@MÍzÌ?/M{FA(NÝ|oA?Mü}3C©N}E?˜N/{¯>VN‰{CQN,}¹AôK‡{CDbO:y’@aO®r¯@NN's ?DLtÌ>LMpS?NfpÛ=ÕLDtŒ@òL¡uAèLuF?öK–sÎ@œM7qAÃL n±@Ik/AžFXgŽ>1D‚h¾>‡EðkÁAjH|mßBVJ pD,Ov=?NŸxé?NáyäBfNNkW,„7L©R\}ôAnKÏrBøNhvÃ>OävÝ?kOmq¤?¤Nqnp>yM&i?ÅOl/>²P(iý==ORf–;÷Kcd*:µJó_i;·JÌ]ß:ôHó]×;­I|[w>‰L‹X‰>­KØWI?©JYâ?HuY‚@KEŽYE›FM`žCØC¯_mF%Féb½EC*háH H“m|K¼I¥hãXNƒ]þ{ìSoM`™ÛkCGÿ¡Ó€ËB[µzÞqÈs¨±ŽŽÇQ¨¤‹š´H•z~õ¸¼œUˆç£ßƒ·/‘²hz Y€˜\^´ñ„ ¸6¢å‚ô¦.’ômt“Øe+ƒ˜yjRäVy\|BzL²XÃ=³I4U¬A(Mò^dEd—2|sB †ën*E}áiûNl}¨b’DÚŽlãKY‚¤b|YqƒZzîp¡ˆNvïM9‘–w)Q~|ÑfÊTFn*]ÞNV_LA:™f]MÜ=¹oYS¬G½x°]–J.‚VjKê…m~F„–&ˆeÕ‹ ~è]·…Aw}^ {×iÈL½v´aíDï~ámM Œˆ€^f•аj-Û}WNy{ lÔ9ütleÌ9×wÌd˜D¼x]cJ}x˜dQIÊxdÕDò…œpM‰¡“¸Äá± ˜D·$¡yƒž–“†›fi‚Lpb mP\ú\ùcHS¬Tb‚TSµiÜ_Võn÷fŸaqÜn3vï{v~Ì‹ÇdŽ÷œ8–ç—^¯ ”é•»¯àŒŠŒ¡¥À‰"ˆã¡=Xü§–”l¨ ‰€…»˜pcjq'IRykÖKU i÷E|P†mœ=´Gdl>ßCkM@{Bõg®A¥C’fBàF@j°@ãHQn–A×KÁv”CŒM8{ÚEbMÐxXF4M(wÿDžLÏvoDzK’tjC®H0müAF|cRCmGQ`:F„H–`/GwI&aYJßK2c|Q LceÀaWrht}Ìv¯k›‚”«|—žŽ‘¢~K{bdòdÔF¿BUå6ÿ:—X«@§C`‰B·DW`~CÿE\\ÛBG«Z»@´EnXBMF ]BG^IA:GÍ^¹CÖGec¶I°Jh¢HsI`·CÚDVý@âAlU’A‹DZ–@ZE»_ø?úEû`ˆ@HD_ ?ÔFyZ¦>IF–ZF>ÎE°^@]F¢bç?ÜFée`>;Ekd*@%Eâaø@ëCÆ]#AÛC)bI@°BÇfÂAéFŸhx@I=g®>ÒGhëA‡IuntCÞJÒs&DYKÆuÖ@“Jªs„@ÍL”tf@4MGvžB…Nøvt?Mq0?ˆNØoAÝN1qÔAïM¶qæCýMFtD=N×wÂ@•Lqw~?­LÈv1?#MlvOAVM!v–AÆLw·@áL°wµ@ÑMxé=iMUzs>N(}Ñ?ìM xg?ÏMùwAoNÛuyAªMÕw¥?~L-} >äLåAoLp}óB}Ml|kAxM yB*NíwAáMòz]@ Nh|Å>HN½{R?LNïzBôM{ô@÷K«z BN¼xAA¶NÙsï@‚M«s8C@MÉuÊAðMÄsÁ@FOs?@¾OìrÂ?¿N½qê@NrA@‡L®rA×KÁoPBzJîi¼BHCgIAFyf´?œEòg­?GÁhß?ŸF}gÚA$Gk´BêK´r«@Nžvi@€Oz3@òMâyS>WMkv¼>ëN/tÓ> OžqNAóNKtÎ@ÈL]OFn%<¸M©fAA¤QÊh?}Q!k;ªOj>YO;lë>Mˆev=íKÓ\%>ÛK¦YÓ<ÔJÝ\›ÅL.w{BÞNñzo?`LtzC‚L\xœB7Këv´@ÎKMv CTOsuþ@OUslBP3x EÃP¼{ö=gK™xøDSPv¸C³Pt»E”QKoÏI¤Vbr¿JKUq¦MWcMYS\[K—Z_ÄPž\5f­VÏVôjiX¡aŽd¢ƒq(œ}›&JŸ˜šÍ{ïŸNš0x_¥H}5§[›‚çœ^–{-‘†Drw}.h¥tö~)j0–¦’¥wi®o›t|r¹^žüz&ºòžÊn\¥è£hƒ”x%Q¦Òu_HnlwŽFŽ;xÕGí‘b} RV‘­zúRU–û€wUךG…‰Dx™ƒ/O6Œ{b]Á‰#hw –´„Þrµ¢P’ÕzU–®Œd‚Ï–P”q`v¢ìmô#ƒpo%yör¥k^cÓP+Ie]Iv:\UHò= m]RLGŸ{¤bJ62fåDq§Ó—×sv›ËŒ_eÛ}NFø\ ?IF–bÍ@ªGtefA£Hfd—AÔF+c0C¯Ec~B¦Ca”B8DzcªB^Euh¼@BFIhÊ@yGŸdÈA'GÑbÛA-FêfîB¦InkE€LÛp{DŽMûq±B•M“t,A¨LqvOAVM!vi@ÊM¶t)?€N%tÀ@.O°sRE~PÓrÑDN^s‰B¤Mnv¿@yMv@N·w÷@0NUyTC£L.~@'Nàxù@ÆNØs—AOs9AkN©u2CiO£z@M{Ô@ìK{­AOKo{CãMzÔAzN`xAOz?ÂN“zc?Olz\?eNTzä@cN/zAóMñyRBÿM‰x#BNyvº@fL¼t BÐKMtýCîMyt)AÃN¥sAçP€r÷=ØN¢oí@ëNýpÎAMM qí@øJ9oOAtHÇe9BŽG|a|AsF·cv@ÙE2e÷@ÙGfâ?YGûfœ?•Fl“AKPqëCwOMu@{OÛx>ËMÇy>†N‹u@?ÒP¦sâQóh“NFhÍBìNe?NL¼[>ßJ Zä;‘IáY>)K\Z˜=UJqZÃÇl³¶‘Y½R©f†¬¯s¡H`’£¨v/ch«b¿=›J»RCÊKBUSGOœ`ˆHQbgEG:PshHHP#kŸIßPSm?GšPq–DùNCuÉC–NÒvÔBžMxŒAÈKy°D¹MšxŠCÃM$x1C MÿvûB†L€vsB4M1w„B‚OwƒC°OvWEÕQÜzßHéT}‘A¤NÄwSA–ObtLCÛQšudCAQ s¡FÄRûrH&S6põJ¨Wac)L«[õ^LZ&]GNhYa]ÃSÍ\Yf•P¡X¾dr xµm}•R˜¬~žœn™šyß¡š´x©õœd{ý°„ å€“®žQz– rÀ€ëa‚lÕr¸Oæ‹P‡lj¢j”=x½‹£>‚A§yÖ¥–”Ak~’zÈPtŒ£q‚HMŽu?KuŽMwFOc“`}RUí“|ØPl—ˆ~vS¥šÚƒ M^›„ˆåUo—¿jqý¡gšü‘6²ã7ŽÒ¾&¬Âo®Ò§•B²Ùª ›·~£³‡=¸Ö¢=|  ã—¾•Q]Št„çtËjȤk”OAbZO'?ÒaÉL=Cyr.U F_{caÕCA±hœþu¤È‘³gx–è‚^Ê,giIŠâw/]÷‰’oKq“Í{W:£Ý’>l-£t“i§Œ‹{ÇNÿwqiÑF‡vêg¬K)yÁgdOŒwg-Muýd4Fátk_¯B$yDc»I††xnGO ”y TŒ™uýU…sHezS¬_/V Qß`ÅWàT`dF\Ynîb±\\s¦hâdv‰t^zù„9ŠÛ’–²š'¤%™Ôœ°j—±™Ö¯“ú“ªZŒ³Ž¤,ٟٓ!“¿”–™Î€½‚z‘fplG€¦QÑZÝmÉN»UájÒKôQgoèD JejAúB¥cÔBóB¼f§BlD&jRC¤HŽkÓB©KrBùLyC}M\z$DÝM™xDúM@yEZNy¨E—Kùq@FJÚi­FgLºf/H•Oi]MQºa¦OÉN‰\-SRëm lsq‘x_‹Ò‡Ð†E‹¥‚KƒKyE|ª}ov›y™f%cxnCJÁO¨c©?,E\æ@«B]éBYD¹]»DFo[íC³GËZö@èF']@A-Fªa@EL_ñA’G¬_/BÉFcbÉDìF cåFàG$_hDQF×\™@µC»]l?LF›]@›Fä]8@|FB_z?‹F<`þ>ÐF?_Ü?åFK_K@•F¬`ÿBH§a¸FãKaBEþIë^¶C½E»]ŽB†Bª_BŠC^`[B‰D¶_dC'F*bhBFê]…C Fp\ÚB-Ea\CIÎjCDçKFnÉE@N¹qyAÀK€u3?‡Jx|@BLÌwž@ØL.tI? Mùt@@þMŸwD³O±sÐDTP”r!BHMGsA_LVtÒ@ïNyƒ@3O¼{ÑAûMVyTC­MòxÅBàLšxûCN–w–A?N xN?úLypA OŒuØBpPncA¾Neq¶@NNw(B$OÝwUCÌO%v9BN¬vÊCN zBéMWy4BäNGywA@N0z¤?’Nêxm@`Nw@eNSy‚@^NíxA;NîxµBøM#xÔAMav´AhM uaAäLÈrxAÖLûrç@æMPs¶?šN±p4=ÓM o,?žMq@µKòq0@•J»ngA>JŸfrBÖHÚ^AÁEh^'AEê`ªA)GÏ`9?}G1i1>¡HÃm¸A;LKrÿA¨N sø>NÿuÃ<NNxn?àNqu,?˜NŠs×=cN±t"A™O•tuAÄMQs£D?PpuqE$PÈr+DN’oßBËNçrg>Lˆr{C#MrýBùLÊo†C’MHo@éJ¦f®A«Mg]‚CcO®]“R¸cÏuðJw_wC‚Nþb[D§L˜]²A¥M`ßBjP§eS@¸PÒgB‚S¢g,>)RÍ]>dQ³\×D‡Rae_BDOCc@ÜLqZÿ=µI3Wà=`JW¿=üIoUQ=$IX=IwY¿@¬I~YAF\ACPF`aøD@GÇb>DðEúaòF²Ff`¿HØE/`ãIíJÞcAOxh5gýfõt_šKù†‹Ç«².•vÈ6¨•ƒ¤»’ím©s{ F$«V‡Žbq±Ó“Êt…²—½t²N™¨xÖ³úœv¤¿¦€~±ÁN¦é€xÁ˜¨Ø‹Í¼ù¦…—ºU§{즆œ»vƒ€/m>M´QHQ½DØIòQkHðOŒ^£D;NpdŒH¸P%g4H&Qki²HaQÂm¶FP½tÀA™MÖw»B=LƒxàDÏL¹ynDLxiEnMKu9D!MþtäCËM{u’D½M¾vsENhzÚEåQ¹{·FTRÑ{üF©Qg}?FRz¯CBP¹r CµOûp%BPæx8@PZyL?'NttDYPëp°GrXk™I;_lféKÛ\+cKS\ëK+Tÿ`ÊKV@dÍjÂt=o “[—âe{›s|Уc›{Q«XÑzÿ¸Ÿ¦}ǻJ‘Dw‚{•Œfb}kÞy5N²U¿n˜H9Oks+D®IÙq—B³C£hCBCfhæB,F5kºC-JœmPDN‡uŽCýM†|B]Lo|;CJwQœlÉTúb{w•Wy`VsÞQ:RÏj_»aäpÚ{ó‚+§›t—ð“/Ž€ƒÁˆjw:kÀïd§^7pSaS’iìI‰P3h#BvG`ÆA[BÕ[ECD¸ZNC©E%X­BH–X-BTI^™@œFb÷A´F*a…CðG—^mDHs`F7IßbºF€I‡_ñGGH aã@+D˜`A)Gûa9?F+_]AGt`LA£Hbb?¼Fa5?¤E^¬AÀF”ZñCƒG*\¤F•JCaIF•KÄa¶F0Jža‡CpF4bbBuE`]CèEóZEHG—[ËAGžZ‰B)H-asBçHe¡B¹I jPBøJ mÓBÂKuq®@aJëvQ?RJyÛ@¬L²xæ?¬KetŒ@òL¡uA(M sHB©M¸r6B(NÐssCNxtfA×L uÍ@ANEw(A$P3yš@KO3w‹ANjuºB±LåuÞByMûtðARN5sårà?ÕM_x[@Oœx>ÌMêwA/NEw8?²L uÂ>ULtAËM·s¼A³MQs¡@€LIrOA÷MCp@åMnß?lM¸oˆB9LqG@ÌIgmU@ÛHÈdXAOGÓ[×AEFµ]B‹FÁ_žAÐF’\p>±G/ij?‘I&nAÐL»qG@ÑN—r<NdtE?/O¿w9AkN©uBëMku:@àNMvAàPÒv‰@wNRxÇC_Oz¸D¸Nr-DM]kLCN…nV?qL•pÃ@ŠL×o¢BÜM˜j_E@Pdiº?ØKƒ`öC}Nc\=>´J·XÏ>jM€d>»N­gi@oM/f C¾MècØBòNob™C‹P"hªE×RhmíBhRRgÝA~R”^{A|RÀ\`CÛQkc B­Obˆ?lL`WÖ>®J)UÜ=—JOU«>ðJúU²=çI7V¡>"JZÍ?6HyZ¥@åC]\ÁD«DØbÜDéDaƒEFH _ïGÉG0[~HH?a§IÏIêbâM|Q®g>h·b„sG”]‰=†c¾¬Á–9ʲ±¶•‚Ä¡Šv´ë·p£_}õWî¢ ‚Ó[©gô®þ“³oð†›¿ov¶ ìq¼³˜àk‰µc›Z~Ò¶bžd}Cº_¥²xϲ£¤}‰›v—y„MeÆeûbõG¦I TïJêPÊ`LFÍN-dpGÖNuf+I SOj:H{SÚoE!P¥u’A7Mdx}AšJ9xWE:Mx5E¾M½uE¸MWuDûLÿuºD N/vfEøM xÌF‰NU|’J×Tõ|rIáRZz5ERN'zå?$Mlu„COäl¥B‡MÉl+MÐ|—?Mv®AŽMEr½DQRn¡FÇUufTI×R/dDWI:UÃAÄFnUAiK¼TYgžphl‹øš{6¡é ,¤[œ+{^©úœ•yr·Ü¤“x׿©»uø½“¥x(›°ˆ!`PdxX©BÁRS;Po je\¹“…ofžC…fQ2ža…àj—æ…W^Ý’˜~!P_}y“H­ŽxÓLĘ´‡žeI’Rjd•Ê‚ÃT‘Dy%H¥“Y‹^Þ Þ–p„f´¥F‘¯¿©hÓÃÿ«/‹zÀ ¬'óÀE­ƒŒ\Æë±‹‹ÂÄm°bˆ-Âó­ò‡0Â"®ƒŠUÅS± Ž Á̪ۉ   °n€{8iULj­RAÄ}-ehGd¢hŽJlœ¦Ç‘0pšx„Éc{вuäWP‹~4hÜŠz~f ‰>t$Pä—„¤G…a^?^GUaV@G‰_(A™E0_VE¶IcúFLfRKÂOCmÿBNIj>{DcYA Hµ_œ@'I`Ñ?UJYd,BK6j$@Kµi¡CbNíkD+NºlB;Këof?BIÓs}=IësX?ÖJhruAïJ¡nd@K8oÙ@2LØq×@LqržAMsr@qM¹vµ@ÑMx¢AûNœw:?mOVvü@ÕP9w©@N¨u‡A„M¹tmBÀMøsCWNiq¶@ÃMjp©@ÝMêvà?%O&w9AüOv`@¥Mªsì@iMEtz?MÆt„@ÍL”t2AçLûruCíOqÖAGO0mÌ@ãM_mcA‹LØnJAJvlÏ@²FQcA\E‘\AÅFUb@ÏD b¼A°G{ap?£H½g^>JêjB'NÞm¥@OcpÔ>ÊMs¢?MMÑtJCŸN]u”A3NxvÝ@.Owyl?EOßz¯>(Mœ|FCN…|yEßMˆtMCcKún+BœK^o@çK¿põ>Lo[AQN•iCúO6f¼>M=b—AÚM a@@%MJ_*<‚Kí_=¥Líc??¨LipAMžilCx¡ |RFݦ о\ä­‹˜ãhbµÉ›5i°n•‹dX°¦—3t± ží|s»õ¤~n«Ã—{à—”ˆ‚¾b¶gJdÙEfI"SVHONaa÷E)NgF&Nìf¾HÈR«jÍGáRnr]EçOtv”CNTv«ArJùv{EéM@xQB]MzrâDÅMt¾CLvðD¦N­v¼EOÖx·EKL{yæHPàwDFwMÀuµE3M)x©?îK0sã?»MriÊ@pLen @K {#?§K*{i@ÃLûtJ@ZM‘qÄ@ÐN³m:DO¸cáGõJûSQB A•L> =N:<AAN&]8WáU‹ˆ3„OnÓ¡zœ}~î§l Ž}|« ß{…µ…¤1|ã¼Ë¨ýzù¿&ªò}„’Òhýj$YU=LåG³C`\kTçK&¦p LWµsD勵s™M²ˆ.u—NæŽPyÛN_ðx-L~Šs5H픂 c̦z˜­|•ž½f&’›{4J+‘|{a]ÀžmŽÅw­³£ž4ˆÐ¾¨´‹ßÁz«Œ¢À#¬øˆgÁ­½†Åø±õ‹¹Á©$Ãø§G‡¦ÆL¬âƒ&Êß²½‹˜Æ°¼Ž¾³ÆÀ„s‘ÖOgxócŽJ¨‚×hcI‚¡^‹âgr¬z• wH©3”kyË–ÃOg—Œ¥yfeŒ{­j-ƒ0mùO¼…doKŽ‹^vö\Š€si&Vºvg`QMh>T“HãbÙQdGud§N­¶qxXP‰x‰Zj”©†¼j”Ÿ‰bt1|Wpc^ükt\ÊPçaT˜QÚUñS€XJj¹tñ€ „ÁŒ”ü{ |;oômZe„PDkheén„¡ƒT[•ò˜Èž€—D™î©-•”ϯú“’.®µls¥»Ž´Œ¹ŸAˆk„³—mø}CszÙ„£‘œjoy`€ÖM#\ùjcE•MlAãI±oû<·E¨id@‹I¼jÍDÔMÔq FNqv¯F7NxDHMMxÊCN züB—MÑ{~DÜMË}ÍEÕK zFÐGnGFˆdâF G¤bßLwQßi¤f„k\xþjˆk1yçkÅm:uœŠ,I†ê«­»–‚˜¦”0ŠÜx~nv1\"RWlàFìG‘eVCöIGgEKI>dÚEïFú`}CJF˜\ìBHHV”C™I TÆAbGUeAðG^VBüGÀbB§F‘cQBŸH eaKER½kE\Ã`~qwS&Uhj2HñJÄ];EIw]ËDÇKì`˜E%N×`ÓAÕL a5@šK¸cÅ?áJ=gò@LK÷hþAÈJPfðF1N_g|CšKãf•D¤MmAELõlY‡J„e@ÛM@h?çMémÔBIOñqàC¤OðmÞEŒQÌjÄB`N i A¼KFl®?lJ{nçHNuÕ?çN³vŸ>ÂMuuÇ@¥NévO@NM»wQ?¦Ky¿>›Mx©A½PÓvhAoO0u\A›NOv ?ÿLnw°>M’uCPïtìAxNPvã?L°uÖA‡NvÀ?N§q_BËM m9BMqÕ?ýLIxå>LØy¡?ÄL t2A¬OßoL@YPèn’>ËMNo}@´LMVeA‡Mgdö@²Mþ`ú<šL²_?mMWe°@ŠMsiDBŒM%kà? L\c9AHP0gQB¡P¸i¨AàPZkSA4Q nBâR>lAÿR‹hÓ@R«j©>kN•_æ9ŸJ÷Tª;MäYK;ûLF]ÂfL"p‚@ÆKØt|AXLñs¦=8JÆnn?ÅLbnq@0MGnj>‚H>]ÿA+D¯MŠ>¿=ëI/?#>:O0;R;QNH»B€Kf•^’MÍ’ÊtqËœOšv{«¨û¡â}³O¤d{k¹Ñ¦”}Ä¿¢®„p§¢‘l÷qyY+9ºOFÍ?¾W4OìIWx>f{Kƒµm_H }5fÀFGx¶azF×…ônÅKÔ‹ÊtÓM ‰¢pBK?‡ÂŽ¨Ìƒ›º¬¡›{¡Ûm€‘| [H‘‡z¤U ›†)_ô¬Î”ºså±T™Uy²žw‰µg׎êv‹XåŠ t}]¹ƒðm‡Qb|*fÝEø~(eôEÏ¥g×JÚ~jYMŽp \‡I>bÞOoEêi>XLJlw®jëPbˆÃwfY†œ³Žðj¹ 1•ºuw&U_-wàf^M°eEUOÕX¿R²TÀiºmxè…‹‹B‘†3†Þ‹o l¶ciÙjrhƒ9Š«“B–"¢1™Õœw© —X–®©•j“h®‹“u’|©‡ùŽ} …Šó†Ù—ø{Ã{ž€ØŽqmCsI}!URaBfÒFAP iMB$Lòs8B3HÎs¹E~JqrG®OsFH0P&t­E]MLuÉD‡M°uDFN`v CµMXxøDAMöxFËK vH¡aµHrF\ÆHîFYXÌMÜLp[/Q‘N/]'b™^Áf½†Ì…œzAŸ››Ë…E–ý}Þ~PqJwyc¹W‰sÍGKInäDjK~LÔh„?8M)i3?&M'jk?"NpêCSQèsåCèPnqCŽPTh9A”M fE@L=iI?LJÆi§<§FTd@D‹b¯A3Daé@#E¸b?ÍE¿g»?`Híh2BMÝi3AvOülW>1N&oÍ>½M[qwA5Nœt­A1NTx%C+O/zˆ@àM÷u*@MÆs(A«N@t’AZPSuh?ÕNµwY?°Nr|é;Låz>M¡xK?_M»x8?-Mðyx@NÑvAB…OcsíA™Opuã@½N*xÚ?µNÆyˆ>(Nyj=L¢wAôL¾xAúKÀv9B‘M`u£B¨Np~CVNIjÙADLÎmK>nKÿw–?2M3{µ>§MtX@;Q|q#@nQ{pÚ>ºMOoü@MIn@K¡k(>“Hf”?ÑE¿b‰?DSe³@gH(g'CLÞk?âJlh|@üL·dûAUN j×B@NnCjM!sGCÞNßw0CbQµz•B€Oç|D@—L¢}u@–L‘{@M-x†B*O3uŠCONÝr­@ÞMÜq§@ÊN1râ?õMhp;A¤Nn?úM?hh@¯NXfº>=MãeD?JÀcÎ@YKå_Ï>IKœaµAM2fõA‹MGg×AN&hŸ@ŠMÆbðB%PÉb»EÈR«f(ADQ­d!B²Q³MébÅ@‘NŒf)?jLøaˆ@K `^BªIô_|D‹L-qü>aMDo–BcMÉm¥BÌLMmÐ=nIkk%?‘K,l|=µJýk»7¥CŠ\Ü:‹@äOÔ:“=ÂND9{;KSÏ:f;÷R´988¥NFJUHHNÐnÅpŠb¸‡ÙŠIuèœó›è|F³§l|!¸u¨‡v·Mª©‰ò£‘†rBrY“©z­j(a w bCJËáw€Z[¤ì•‚w±— Û‹"»2¦,ƒ[½5ŸþÛ·t£ Žø¯zž1·¬œzƒQ¹¿™rBº•ž;~¸w„yC³±šçnÖªŸ“ƒjÄ¡€ŽâhŸs‹GcU©æŠ!_±æ–Žpç²õ™úu+¨Î’´n¢™’‚Í\ëŒCvR'‡ØvrX*Š1zL[ºÑxRs‘™xõPQ‹jvXS³{vhL©kUÔJÅe;TÁN´ja“K<€7v¸P˜.‹Ae¢S–AoÇ›Gb´ŒýzvW±uüf;Wîa•UºR]ÐTäVSqwk~nZ…Ù~rzj1|grÛtÑwBuë‰k”Ñ—g¡˜§û—€œÄ¥†—À–(£\˜Ã–=§E˜™à¬€•G•‡¨"Œ=ˆ˜„U~2м¨݆st‰u—^“c`dñJ=S¨l,DN§yÕELÂ|ðF Ls{ÑGwPTyPHîP±uËGãNÆt3EM3téDNüušDÈMfx3EáMÚx»D|M t«CKŒkQGôH[XJ_ExVáH…D€VÁH DtUüNJ8Túe>em_Š#ƒýr›œò—ï~X—qŽ<È~ouîxÅiÄ^ãuŽLDNfp¶DÒKpDE[JØi©CéFIe¯B¥F1`Â?øD[sA|Fì\.A8F]mAF^é@†E+`½B.GcM‹i”@Nk£AíMÇkÅ>kL~m>&MpzA€Onn BÝOÌho@µM3d”?EL–d=ÌI,c˜>ãFp_A¯DaÛA¦C+b¨C“F;c1@ÅE÷aø?úEû`÷@bICb%AøL.hþ?BMplˆ@!MqllAÏMo:@\Mžs:@VN›u+DDQøuõ?€NuÖ@P{vJ@ÀO×v?ÛN÷y¬<ÔM@}—=ÖL|8?-Mðyì=DMGy_?¶M“xÖ@wMt™C{O—qXA§N tØ@°NnzI>®M.z ?¯M-yã?qLsyé@©LzŸAzLØvBüLu=AþLUp5CîMzm‡A-MÓr?“K xO@NM»w9@{N¿r3@ôPqqéAARÞp2AÕNçlâ@ôLÁ{À?°L÷{AñMÏ{Ü?¡MaxBƒNêu#BÀNNtB@Ns1B3P7q@ NölóAÔNµkö@»NŸiCLQ5h5A²N0gM@œK¾e¬@’K"c*@ÂKód@ƒK*hC¡M)ik@¢MgU?¼N€e/C¶PÝbDOSÛd¹@S³eºC S?hE;TƒjVFyWmØCÓS_irE_Rôb¬@M{Z6<ÝJAb¸AãO1i\B­OÖk@eL:eŒ@êK+caCÏI fhD7Hw_E¢EÊ[sDWG*cÉE¦He¬KKÀaåN Jd agQFjKt÷yKybžj“|z¾º¡*ƒu±Ðšò„Û»m¡Í‡SÆ“¨Û~ƒÈY¬ œ½S§_|†¶‚£·uV¢‘XY#§¹Žc^Þ¥Þ…·Y¶—Pp‚:¨-}Gÿ§’ o”¯“¢îˆ$·a´Ø—â›™D…“9Žïsz(tâ`T6TØW¹C+Kf`ID1Nc,IÜVÇj„DOs®C“NÒ|2@ M}@M{¹BžM'zŽCMNÖxqF’PÌv“CþNªvsDïM¨yE@MzøHûNZxžKUnwÊNíW†w³MšQ"yâI OyzDQNùuþ@lNçoxCEMõjfB‹KJk¡²ŽÂrx¥Œsd7«ô“Ÿsq¬L– qôª•£i¨’¨dq£fz¥Ì‘*k¥®A•Eo½¶³›"t˜²f˜-s‡¥H’"iÓž‘g™€‹¥fç”e‹lS—Bs——„‡Èc •°~_Sí‘‹|²YäˆPuJ[c~m°Z¢z\l^wthhÌNIy'o›L‘’ü‡¸j1Ÿî“(uã›U‹he”G‹b0ØqåaTeÑWÄN±[ªPÑKÚj“\¿Wþ~CtÈn&‡£~šv ‚Üèv[ŠhÆŠ¶”ߘÙ̓ɔžÀ—}•qøš¤šÑ¤þ™ œe®•%•ѧeŽ¥ˆ«”‡h{›ú}­r]w`süiZl›c&_àfNL”P×nCwK¯yîDKS~0I´M=QINW{~IÙNJvRJdN—sbIêNt"HåO:x;FûO¤zC!O¨vqC3O™s˜B†MÀjŠE4JÂ\©G­FßWˆG¤FtXHLhGÀ]èOMIÁ_í`Idêc1ƒû‡.q´Ÿ›“‚è–¡y„n‚ïzB€sîfòuÃOþO“pªDGKzqfBqGWjÁAÀCÈcpA¤CÂ^@B³EZ"B…FüXbByGåZûA€Gz[QBèFÑ\ÒDŽGamF8JªhâG$NüpñC©L(nB\M€j B›OÕlºAˆOÕmD1Q&nâAïQ…lZAèRo>áOêl7@ÉO#j©AjOYjêA=M½mB€LpcB²M:n.?»Lñl>{Mnp@DOVm¦@UNÐlŸAOýnÇ?zM„oò<_Kªl§@ÕM±iÅ@áM£d]@šMÅbÚ=ùKÝbœ<¥IOaŸ@ÚH“]"B*G¢]%AdD£^ì@D0]ëBÉG‹^‹@¨F²_5?ûE&`C4K;htB.LjmÐ@ L®jÃAÊLbhV?]K+m£?âMAs­AïPuÕ?çN³vž@òN8yø?¿N^y¼>INßyâ>yNe|ç@#N™{6BšMõzå>LØy"@jMTwXA0MsBøM*s0@%NÐv–?˜MØzO>öKŽzñ>PL™y€@KÝx¯A–Jx•B’Két£BÀL±uŽA¢L vz@MÓtú?«Múw§>=L‹x"ArMºu0ANq÷@ŸN¿pt@]NqÏ?GM­nZ?µLµj‹?šLkn@MÍjAN,lÜ@3Mrk_BQNEl @¥Mìm>Nxký=KNçl>VMÑnºAmLq¨BOXscA7N«vAáMòz ?pM§{r@¢MoyA•M³zAæLòxÊA]L@w D-NítnBñMÄr1B½N2pjA!NÇj`AËMðj0AˆNžjoCÐQ}hÿ@ßN÷c‘AãM{eÆAìMãd²A,N…e@RM“g—A¿Nªj†@ÈMhS>kM„gyAP[fÉAŠRßeFBRX içDVLjìG¹SblG7WlmÒAÆSxh°DŸT¦f¿@fOÏbË;M‹eBÔQíl7CôPçn–@2M”g‚=Áô²J…÷å¦#C­”mdužyÝAŸ‘6f+4d|HDI©Ï‘®l'¾U¯\‘EÌáÅt­zœ-›.Œb•øŽL€e†Á¦lWXXR)C#I¾XËAòJ¯^ÆH÷RCi3GvPrwCÆPz BðN}œAîNày¨CHOÆx¦A NFw¸DQ”vJCÿOÿv¥CIN´záEæMr}1JÔOYyÖO'V•x>TÝVa{ÜS¬RgzÎOTRTy4J¯P)v:F½OxúF-M(nõAdJ¦d%>ÀIdbzDêK(eâBöH±aV7P@MZ 6@;ITJ9W9£Rf:Ü:8UÏ7û:UJ5»7ûSp8;7[QðC$DQ”JbO'P+gBh³Nð—¶‘²nð®"¦iˆ…“_‹?r }amÐSÇgÉWÕL¹hµYlNoqRa·H‘yDe–C‚qTQ„‚cobR~ðiˆMášo•R¾‰évßN}’x{rJt”${öOOŒ"uñP=†4oUì}Žf]LÉv‹b´G@sËa,LˆÖw—c=Šbx?`ŠƒÁo‘LÖŽ7v¿F‰“õvqF™;w _Þ…"qXZ2”Æ|ZÍ›kÎV¨¡ø‹ió¡©‹iȪ,”h¤ d~¡Á³cJ¥Ð’:mÀÃ,ªˆnè¸O¢Úi>­‰–Ki„¤¡¶aŸŸŒ h]ŸãŽoº¤V˜1yQ¤2˜ x¿›Ÿ‰E_F“Ey±E‡’?ybK3”Ÿ×_"~‚eSŠœ{dŒ~œpàO–uÂhIP«sæ[Š×yN`Žz RRçy^T‡CtE_ñkl[ïPH[ÛO¿N¥cŽTŠS÷oöc]‡{:qïf€w·l±®~gyö…)†ŠŽ:ƒk‚.”éŒK‹ÕšÞ•©–¥–(˜nª+‘I›œ¬…uŠˆ•v,uy~©k©mBw1fÝh‡mncrjHYÒTÁn¯LzMuL8N“}I¼K8{=OÄLµvWP#MŒt»O;OYsGN©OUsØJPºv}I0PUxšFÑOuÔAfO¼rõCŽN^l H´Kâ`yHíIxXJMzX-NõN²^˜VÇR\chªii©…½‰étÓœ›¢ƒ—­k‚S„xêz>sgcút¬Q¤Müp!FµJ~rBÇFØj¼CEBf C/D²`ïBFŽZœBôFWTAF¸VÓ@#GeY¹?ÖEÅ[~A›Dà`ÔCHæd³DJM m…CUOŠpCÆPNpBgOþk.D”PkkcDQçk§AQ2lA±QGmõBsQ#nSAòOßm’AsO¡n»@½L¯pN?AJp;B‚M•mÀ@ŽM‡me?÷L:o*B3NƒoåDPàoBÐO¹oA¡OGpy?¶MÉL˜_/AÏMrd?ÂL¨eÃ>ÂJð`k?[H²WA8GBWGCvGˆ[úCGé\„BFG\_@cFÚap?ÐD5cwCRIÿfICcKðlå@HL(mmA/L²h.A†K5i®?—MsÌ?âO²xé>N9yC>§Lrzç?MNÿ{`AcOc{.AOò{´@M{RAÆL7{@ƒKxB”M“u³CJN‘nâA-N)r?@ˆNQx’?aN zÄ>öLäyu?ÂLö{&C­Lñ|CËI½v|AQH[rBL'u§@&L3x¤?ÁLæyí>?MðyÕ?ýLIx#C¿Mâv¢@ñL”s™@åLíqë?êKòpz?+K5pá?#KÆm+@ÅJxi}BMhB!PykÑ@yOWk\CPTlÐAóNdo­>@O-rD=0O…r†<ÖMòsú>~Mti@éN×s+AžN‚vAúMWzò@ûMi| @8LS|RCçMU}ÚD÷Mît&BÛKçs©C M×ov?šMïD)H^RFPSNNÑ|g~Û`È•o•H~y~¾zafñsjV²r×h„U—tÿfÀN%}kæGæzKiªCe‚üp@Pcƒþn}S|OeDLA®möMo°}áU1›j……Tµ›*„Tß—0xZx’ˆ{`¨‡ÍqÊQæ|;n´G°‚5ug]×—v‹úuÙ};`;…s¬L‹UvD ‰ o—:é…;mqJÁylzRD‰ÚqBMyžuÈF‹•¤WX4—]‚ bÖžºŠÅiìψjeh¢T‘)lX {ŽpTç‚Ã&w”¿ù¡õWA¤–‹ÑZ—‰{+G’’8| [“˜¹„ºgc£jn?­:—o9£ ^øš‚_J¿–â{oFt’/y\F7Žx·OøŒ8vËWó€ h¼IªiÌTÀB¬ewUïHöqÁ`$I€˜meEáˆXtµIì„mZQÐm&Y O’ZkOàNT[¸QPfŒ[ŒS¤m]c`Yøpof5`7pËi=q súqø…þvìy›‘…‰(Ÿ”˜ ³¡‘“¢®)ë…Œ–Šxxà{ó*lFjË÷g¥i`‚Äl…m´€õršrÜtªkDr³fž\jsL`ÕVhw\™SÂu×_zRrbÌPžp^ZCNµpXUËPúqVR4s@U+Rht¯KFPt‘CÙNŽs]C%OåoG!NWe~HcK¢YˆGJƒU¹MÝOUU!V TÆ\Tm'njb‡é‰5uFoš!S•ÐU}>‹uév§oT_r:Q{L]n(FJõoŸC°GÖjŸB‡C—cABsD~`BïFf_µA G]Š?7E³Y™=ÏD1Wn@àF¾Y·@FÖ\¦BàHx`øD£MÌePFÎQqj€DãQmüBKO3k·CPîjåBpQltB$R^lé@­P´kŸBÐO¯lÕ@TN¨nâAOqp!B«MßpWB‡LoCDOm>óL«h%BÏL˜g¾@ÒJ9_ÞBßJ!XÙ@¢G}U7A2F‚XúABF„]É@‡E+^œ@ãE™bý@WFIe£A‹IŠfßB›Kjt?ØKnw@ýLpmÆ?ïLÊl¤?lNòs—=N{§>´Mq{É?ùMIzBoO |PA’M€z"BÜLx{¹CyMJ}VB»L¾}ð@XJ“xtDÚM:rxEµOƒhOBéNÀlØ=ÛMtØ@…Osw‡@‹O·yT?‚M§{øAùL{ìCKÒv'DœJ;t5?FItÖ@þKóvAqM¤y»@gNuvA×NŸx>AþLIv&@pLVu:@ëLSrÚ@”Lqo)CLCoÌAK¢mICÄKRhú@ LÏc‹@GN+k@„N›lC™O|m¸@}Næo(?“O‡u)?`QgvO>ŽPªvÉ>ºN@weAJOxIA¶NÄw©B¶N¯ypC´NŒz´AðM¾yaCÛN½y&CäMøq4AmKÎiHAˆKXbùAxMe^KDÒQvdhAöM‚g5@ Lk@´L…i6B¬N›e\> L_³BôN¡bT@Nba@lN®c´?ŸN´e^B7ORhWFÝPág&E%Pêe÷A¦OaÒ@gQ8_rBåQ_bìCØQ¼iþBÐQˆkÁDHT‚kéDœWo©F9XqG¸Sqo‰ERojÑFóUÀi3HçUgÓAâN÷_ÖAjNaÇ=PK^É> HqVÀD×IMW°EÓJ£\HCÎIÑa[JPþTÒ‡Xx–v‰ ÆJ“&‡;†Nª’ހĥº†ÓÂ馮‡€¾¤w€¾Ç-®Z‰FÉø±šŒËÆ©«¨† Çü¨h…6¼y–”zئ.|wJðž€qF=3™u¯F •ÂmS:°˜.f»=C¤2„h`C¥Àƒa͡ĈºpÐ4VÆAˆLrLuÔm¼]œK¡LTR´AšGåXnFžNšg]LÊU^j“L•Z{oK„X¥wåExOGx‘CM˜vèF&O vÎCÙMGuqB¡N‘vìETNw²EqN¿xMGÁNOz*LÀP®|OMzQŒz¸Y£S”sZdlVsp^rRŒuoX“SâxeCVñoO™4ï<KÊ=qBÀKrBFKýRúHLR’S^Æk•Zym7y¶i®d7nl_µi+iSðyCq´W†tQ°xuÁHf‚êmCC×~smMI‚{‰iÅL!xcMõ k4Mæ‘™|YžÇ‡2^pœâƒVTt”„½Z“˜K|ÚXƒˆçn²GÞqFF ‘ª…jL›²?t„gr§VW„$yÚbù…O€Â] z'dÃ; wC`ëHx¶gUç}êj²O€ ióDx„åp†K<ˆwuZ0”$—aø˜ö~Ì_=œœ‡án°™o†nv¦Ð/ª0ˆ¾û—eQžú„ÜTÓ~q’Ax†Én³Jô‹cs7RӚ܀éY$©†‘Àf°D˜…nä¦Ú‘·m©œ2ˆæd—’A{£MÝ‹er‘EÔ‹t™M¡~}gFJePA+UµKÍ?ZcÿWtDè}×qÚJF|)Z5‡Êuù\ÁtÐfYdãWÇPõ[RüNÜVcPaNGSNÔL¾T’O8P:`hWfxp!nîƒ(é‡Õšœ›ø¶Í Ã©.ÅÓ‘:’q¯A|WnÒ…²zSb±lzÅ_£fôfri™ŒëuÃrê×\|4‹ }õ|zÔktr˜dp´s^cámÈ|ÉdÍl| \GlîpÈUënÑfY)q•j¿[|rjkXrv_.Rôt÷KúMSwE!P¥uWGŒOÏjÛHTLûb.FìIŽ]üMQV`Èaóbüg•wžzÍoD‡ã‰¬qšð•Sy¡%‰+z@y”oìw}h€ZjqRN­L+j…CIœjCÜF¨f­EPFa‚D)Hª_‰B8I‚`ì?‚F¦_½?iE´^x?šEYYg@VFµV¢>RDÃXBGz_,CîJ(càEgPfg‰ERojµDtPlk A¥NBl/AfP[o©BIQ¾oÌCÌO.oFFONrDO&q‹DO¤q‡BN·oÞCGN_nýE/PHmmGVP.nŠBKKºnÿBòKp;B¯L¾p¶@L˜p BIOqz?Oˆpµ?ÚN0s:?eN²r¤@¶MÄnùAZLùjS@ãJBf?@‘KK_p>ÅIÎZD?VHtaÓ@³G×`AŸFaû@E•aÄA*Eö`MAÊFZ]õ>iI-aÜ=OK®k½?­M\p@òM5pyAÞOntÑ=N\x@±N’y\@‡NAvÿ@=Nwò@8LAyB¤Jðz†AìIÙ{ZA$KûziAþKxC§M†qWCúNjB@¦Nsm}?$NçsÀ>òMvÉ?eO©y±?½Mùw'B,MËw§E©M‹uòB%Lôr‡@ñJèscAMLWtA4MGu@ùM]uA“NêvB N‚tA@÷Lùsõ?.Mq¹?™Lòl’A#Líj±@ÂK¬lÀAóL§k)C NGlÓ?sL¿mÓ?sL¿mpC[Nn@èMok>ÕN"s’?ÐPOuûA”RwA2Py²AjOÇzíB OTyÔBNnxC„O*x®CÿPDtâGSrÀAèM‹iQ?ÏJ_@ KÔY’=ÆJä[@gNyd©>fMg?ÊLéiA?£KQgBM/c=ÚI,^î@äLMb @?N>c~@âO´f/@ÓN6jÝATMkG#P6g/DÛO.`›BRP_'BR`a£D$SkcšDµQŠidBçQíkŽDÂSk FKV¶oñHöZsK2UoAyHrRæG–LŽSyG!Mb]†JéN”dKhlWc:“—‚T}ð˜5¤¤9˜RŽp³Wš‚ÑÆ1©àˆ Æ!ªFŠÁX¥b†hÈå®Ù0Ò‚¼d‰Ë>²¤Ë¦Ùƒã»š({À§‰x§F® =n 8( «y·D«™ªmF/ )x L¥¡€2qõ¹'©×~¾­9›KsŸ „_˘>ƒÞkQ‡U‹s‡V:W¦YrGRIõWpH±MÁeŸLS€iÖL9V…m G“P¼s)FtMßyE¬K‡wFõKRtóFÀNítG Oùt$F¼PAxŽFO¢wâJ‘OÂy©LQ·{TXùVƒyiB\¦vF|³hµx,rDaÚwco~`Yz(y¦d•p̃Õn‚pvseåaèbã\œWNOQæC#F§UÃ>"?ÀV|;2:=Sÿ5!6ÇNl7:õN.4Š=FNZ3c>¢K²>hDjK?ÍJÓPëCQ¦SãHÙ^sRôKªgëZ¦TtjpW\ceiúM3{=q&R_z_QB›#€QwPtMD´~Vk¯D¦t×dÝJ,qn_2L‚3hŠJþ=u‘P­šBƒpbï™P‚rY–Œ„aT7“™wJJÀ†jÈB™€rnjE½—KgqA˜ƒŠômhudL»m]cÔPé{wräU&mQS3: bˆM{A cSIŽp^ÜJtÕ]&EOw¥fKçx|kîL㉻s¾M&odH¶ÝtRa.ƒòqûd9ÉÞ±:Ž5±/š({ÕŸ5ˆGiU×u“C4ˆŸosCŸ‰¬pÙFú’@y6Hl ÔŠë_‰°S™ÛuH¸]¡»{ªªø™»t™±ˆÊj­xºWñ‰6rIæyêa¡D‘^ÍNõ=ÆQ7KÙ;[²T-DÓzöo‡Rñà~¶eÚŠÚ}ui–~Uwhi…lKh‰[s]U¤O8YÊR®OÉRvO¸M+QþMTƒaäS n[wCmÓ Šœ7›©G¸à©¶²êÁ8–ǔ֧Œ~+nË€¨~Zgbv„ãhÑvB¡m‹qÐ’azät±–½„|c‘È€<|vƒqît}Þiìnki‹Ãm,f•‹ÿh+g\`Mk5t¨[fm»s]÷n“uÚ]ínNoYÑpðY#QsDIàL^tJNql~K5QUg‡E RI`ÆL5[ß[ƒn™rvi ‚@‡´u ‹¯Œu¡—N’ÐzÕ‹„â|Ènˆe¿xF^±SarUKM@i.BÈH|hC¦GôenEÆHb`iCóH\ëA?Iâ\‹@ÌF·^/@ƒD›_\A†EÐZ§BÁFV¯AÇEHXB8Fï^C Iëb8EµN0iÃE'R†mõCPlÜAZNÝlî@tMùoÐBÒMëpdEÖMÕp¶G×N.uwDJN“uMCNžryD8O¿oµDÈOÉmŠFôOãmG±NÅn¿A¤In_A±J:pÝ@´KÌrÌ@¼L•tÆA÷Ns[A1O¾t¸>ÓLúvú>M’u1?™LÔqß=ÊJèpª>æKäpè>ËLñlc?L2hA”Ki#@eH#hq<—C¶cè@tDr\ÕB-E \ÂC±FY?6I][y?¶M"NÂv5@ÇNçvDA>OŠtè@WN›t¨@ Mâv8AœKxA;JúxjAôKZvÍBO4uB6NœsMBPO|pAíO…pÐ>²M›sI>Møué;'MévY?kMxvASL½tPC&MÓKùj=“Kƒlÿ=ÚLîmlArN'qß@7M‡oÔALM”oö?ÑK€o{D P­pSA÷OøqHAáO¡tÕCÌPVwlBO"z÷AÚN¿{‰C$OÈyÂA#NˆxýAaP•vCRm GæT—gD¡POd!@áL¥\ <þJX¶=aL`/ÉL=g¿?hKåe‡@uJù_‡=EJl]AÁNVbÂ?Nhbö>ÙNLeÇ?›N*jŒ?ÆK0j]C´N©e°D/P¦a5?M§aéBŽQ,d>EÆTÏaFŽTgëCœRÐhGWS3gÕFKRHhÖJ,Y&lÚGMT¸eéGUýdDSÐdûEYS¿f›IX6eŸAžMÊXKA/KOVÌyŸ–2Ž ±“£¶‘Q»ƒ¥_†#Ç™­Å‰[Æã«ÓŠ´Å*ªj‹“Èõ­3’ŸÐ¡¸›ÎƲ±‡ÑÄñ¦¯‚ʹ›RŠÒ­¶‡Zc¾¢ry:Ž @r‹5=žFnÄ-µ¡›€Spò° ¡päéèæx‚Sâ'ß¡«§Ö’DˆÊ”‰ˆ®u¸Š¥ŠÅ}ýp­q;oŽS!X?\INžR(cKëPc6LRókºF0M¦r/E¢K1z»E'KJxZG¯LªtÂGIOktbJSOüu GFP¾z¹I…PùwPPfRØuJTT)yik*d—{ |•i{=†êor|ÿ€Þmü{v|®hKx²‚Œjsµ‰Ùqör5‚n j¹rïaÊ`óV¨O#UdDMC‰Vù?6B¿Y@>ò? VÞ5v6ðPa8À9ŠOÃ2Y<–P 9Œ?P=â= QçBæF¿Q>ôIñLAAÍQ9LÈHÝa—O)_¤qåU˜eˆnT@wKs‡UýŠðuÌK+ŃÇWn™U~$PìƒílnDàq/`ÛGÄm\hI;{‰eFʼnAq/Hl•)}œ]¸–GÕ\”$z}M;ŒÈn(C¥‚²dA/„ÜoÐL ™ ŽÖt…˜ô‹°l[r¶`¯GQVKÒ>1gÍQH@_ÞI*9V‹Eö;½UFH;YeòQÆ>ãp+[E¨soaIJ!r½`„HïfgØC„Ñab<¢~¢`óJ5o]UŸKù¢•{•¤z™È†Þ§’—î~ ™W†À]E•¬rY£vxBRVŽ8vJ–â€c­¨Ÿ–‡tiÃ۵]¹È볡Q>´åš¶q&œ†Épô×y Wò{RhšGaf.W“EŽZoT,G`c²]L¤w#lŠSÅlsH]~;q—\uˆk$Y’jÂa2P+^ÔTÏK@e ^5QIh®aÛYgeÁ]àa0i=cƒlÌsfpßyŒƒÃ…!’ù“™ü z›è›Î¡ï˜kY•ü‘8}L‡A•´€#Œe*‡f’Ÿxƒû„Šž5†~Nœ%ˆí}o—hƒF|‹ uFvzƒ–l9r¢…„i‰k#Òl‡f>”;of^Œqk|iÊ~©ajA}øaj’€ûeEhE‚ðd¤kTuU[MoOjøX˜rS_iV«háSXTÊb0HRo^OO™]m]óu‚zÆj£‰Š/xÕŽ…Žwl“kŒ›{H‚Žw£{ødß]+vgR(PîpÕF JŒifATG©hæ@fFe®B'Hû`¾ALH(]AÞG]¡@vFà`q?UD%bæA»EÚ\SBKFgUäC@GøVEÞGA^ EàIb¨EdN–jDE'R”pDºQÕnîBìNÍm—AMVonCºM†p§EÄMÕp›DM%sÃA·L=uASL±rD¼M‡oC¸Lk…E M¾mÕDfLip~?QI‹oZB#LæqÛ@¢L"s€@µL.uå@?N5u@¸M·uÎ?ÈM’wL@0Niv¸=×LRvÐ=°Lüx->4MlwŽ@ OÀv|? LÉrÏA>K)rñAUIžm$B:GÙc³A›FŽ[Ú@2FÛ]ý? GQ`%<[IdR?ANkÞ=iMµrn@êNÂw AOèx”?ØMnyA N$z @õM*v|?šM6s¬>pL”q@õKqtŠ>èIu”@´L!sB+NtgAÞMÄtB”Pƒr5B»PÚo±@—NXq ?ÚLyrä;ïKŸr>þKIqZ?qJØl@QK\iºBZMHgC¥Lûd†BWLºe?1K´iç>TJ;nü½†OmÒIK‰epvM›ˆµmIQ~=]ô8Q€Qd$E]†:sXh™´ŠÊoÑ“±}q^ÐqŒZVDiVëGy<•V'I¶@Z¾MºI^S†G;BU&Fˆ;ç\,Kç7kTYAåp\jKMp[ßHhuYŒ=s™PŒ0×lNÌ?h`TG°@+‡Byg‹e€`pð”‡ãk;•ª‡íg͘ p²—‹†àfðþxèXÑkygœôŽ;q°½ ®PQPÈê°ãKì¹Çœ’y󦿓†y¦–m„2a^…ãnJWlá]«E€c_1K³hfU^un4b²x nQ^#u‰juXÞqµiÍZÝf] Pª^xS JiÑ^ôN^xžr®f|ÓvWp•xÃq%oQzsxƒ‡~A‹CŒt‰S“Ö‘B‡»ˆ•×€ù‰œdƒ5‰Å¦àŽk”ɯ’——¬Â‹£N†0ƒ[m‚V:˜J}9{uŽ0s–tÕ…‚jÑr4†iÑp [ldks— p$g4–ïpVgŒjžf݇ºfKdÆ„i±_ˆ“þm bY›iÂd­…ñfg4{dUeÌgk^aÐMß]$[USigm]Äx }boµŽ«vwÌ‘ô˜u !Œàu£vuÐsÏYT^oLyMÓlëDñI¾f]CHkdFG©I1dµD|H„aæBOG¯_d?ŸD0^Ç?îD×a×?dD-eÓ@­E•cW@vF¯Z÷A•GXÖC«G“]èD¾I°cèDžM²lEÜPsODæPÏqfBnNÂoŽAN¶qqA…MÒp&CM qÌBL´q9B:Mzs×@LqrZBNK÷pDK•o—CÉI3p)D@Lgr×AèLûq—A|LðróA´L u”AµMnw#AžNoz@›M zcA7N«v@ùM]uB>&M wŠ>„MÊzù?åNmz\C»Pjz–@²L w±AïKtMD‚K¡n‰AEG¡d3AþF_^Y@ÒG¢^E?IYcý:IÏgw:%K—oñ@LŒwÄ?¸Kx@eNŒsl@JOnqDGPìq(CÝL=r&AÂLîqñ?HKÑn?qIrià? Kµi-DdNîj~G«O`gqC¼L.a*?J»aÂ:|Göc–=åHßd¦>KÅ^1AgOü\? Lç]z<2Këc<ÙK h\:\KSjL:LrlÍ?¤NJp¶?‚NKqÉ?+NMsÜ<ÔKásåAeMít}@+L}t6AÕM9w…A)M¨zû@‰KÂ~D@“LV@jN‡~:?mO~Ð=úN w‡CÛQÔn5CÁOÙi CžNTjðE^Ore DªOdd0CCPAf=HMfÒ=zM®e?NfG>IM‚h©?MM]h¢;¡Kì_nBèQ¾_PB-Q>^5>6L°[—C;OJaÖ@jMô`Ñ?RM¾e¼D¿R[mSB:Q>lœAÏORe:?QOSa®A€QÁf“@dP'e¶CQñc@EÓQe€HERLeG\Q²b½FR dOE\RÉe†EAR0f“D¿På_=XIXT@BI£VGOeWÍHÌQ,^W]{l`j°{1}øzÔƒEuiû–˜{Qjh 7ˆNkm³®˜‚zÅF­üȶŒ“úÊ'¶óŽ³Ë§³A‰¶¾«£Ô„±°šÀtžº}œ zÛ°ø”C|Q¦”’Ï~k®G›~~O´è•vmÞ¥Þ| =䫸†{cH«”†qï»ÿžziÐÉÀ¿\áÆë¿ÊŒý›äš ¹”’tì‘·‘9}¬W™<„J‘;ˆŠqle)X‹QTƒVI|NhH¾KbtðE×JØw»JÂKixæM=PŸt8VûO(s£P‚Q’v¥]¨\Ñ}ÕkØZÉu|ädŠt­|.m\yƇ®vµçŽ v{;‘åwÑyÚ‹ûr‚uŸŠþoJsBrsqc7r÷otzkï„f(]ŽqYXFSjUˆIµQšGîAY|A%CãadCëCîXCPD:T1=DVkAÕD`V@LðPßbÿkÿmyøJW`´=L\QäGù_‚Rûf¼tb`nqÙybeƒUƒ‘oé‹2€ôa ˜”„E_° ,ŠBh‡2j©Eòn2U}F†hœTrJõe*Q­EŠj×Qn@ÞsXFB(z``G;zˆ^nErTE;z a@H?Sm!S9W{ Z‰”b•C”kQl>·^M}>Í`ùRÿJLfî[%RÉZ†NÐEà`µF‚=ÑYzD€9sY)Iá;›g¬SUIn-Y”K q U§AGbcG,1e^°EV=ô[%FÍ?æxDe›UPxþeO •n•K^ˆxU÷’ ˆÚkË—ï†äjà’¸vÁTRšröU ‘?~i— ¹“žl¸°›™Skù¬>ÅwÔ«\’*€±¤ù‘lÂ’èzIL™rm`“ESh¼`ìLywƒt×g¾ƒ™~jsƒ‚ãzWnp…·§tý…¬Mx˜s8lØb8eíWóMjjf]LA}:uXb~Šƒ;tfˆŸ}€uÉ€7sEsn‚ƒqDwôŠfwS`vÃ€à•®w€¡£e†(‹à´ú“Ç—+ºí”̘y²,ý¾¥‰…å‡[ž3…™¢~”‚B’-v:xB‰õlìqj‡ioo‹½kl:—OqÄfMšwthc–šs˜cl”Ùqa—7o[Yà™qp`O•üpðjT“Ús)m艭m;hvåg×fÊ[qhÀeõ`ìqâhøƒ;ˆÝsi”™–#yF“‰“ßr.JÃrÕq¤t9q‘OwPkˆGOKFjãI§PlnHMçg²FäGòcÚEÐGåcD0H@`®BZFÂ]QA]FK`Ï?QE~cé? De{@³EÅ_´B¿Gï\D»F_}C^EÞb®BJäi‚CÆM-rzCµNtCÛMltAÃLüs•AjMFsÓB Mr¦B›L˜r AL~tsB³M;vzBõL°tC!LÁr(B0JrMAKéq•C•O sÝCRO?tøA>M»uZB¢N xA¡M]|ÐAÆMj|»CXN`vnBÙM^sø@Nv‚@^Níx@%N½zú@ËM°yéAñL‹w¾@L×r@B¨Køn›AI¶iò?SFc>ÐEâ\]>åHµe¤;šHËiV: JWt?ßMøw¶@’MqË@åMjo6@ÓN¥tO?fNwxÜ>/NjxÇ?%OJuk>ÃMÀq <‰Kïp=LGrN?!M^tG?DKšw…?ØJžyI@MuÈ@XNÁr F/Q‘s&AÂLîqu?ùJhq @&J{o„BJ3mL@³Iøk³BðLNlF=O·jIE.M(fÁ@®J5`Ï>Ic`< GÙ]­?KÎZÇ?]L`W=IFW=ÌIÀZˆ;¤JË[¤8|I»]²<>Le>M”mƒ?6M‘sCC]OévÄ?}Mxu„BûMUxuB?MÙx¿B·MŒy°A–MÃ{Ç@oM§Ý?£M…¢?$Oå€??‡O†{ü?/O¿vC$P9p¥B}N¬j­B2NojCOøiRBñNPjDePÇj}@xNùiÁ?HM$f'A_N²bS@„Nc¤?MGcŒ>L³`ÍB÷ML`Î?L#\Û>L^•>‰MÝ\0@iMP]À?LúeÉCP‡s@^O{sá>N i@:Oce;AjP1f§@QOšc¸EfP\e$E S$f)FÉQ(f FåPicŠGRãd8IlVŒk»GVlJ@%O·[ƒ<4JnSßAJšV`EvO‹SLS©^Éeöo&f¸§ŽÝ{‘™›ˆ$n¨—Ýv¢Qs›ÂuCz ƒx¨B^´D”@tw¸ÎdžÉÉ4µÀŒåËû³ ‰½Ž¨½‡«Ä˜‰qy¯y–ân$¦©™rS¡”y’«»’‡ž»š¡Ú಑%`¼±Dñj·A•x ®–šxÞ§ó”q¹ †—¨¬ŠFw9޲‰%t”‹‡x’ F˜†æ› Ý|°{ uXfof7gæa%NKT­j!càO=AÜ^þN¢F1^.MäFåb¸NÐGq6WÙEüwþ^›F¾uÿY³D‡q¹TOC>q§UŸFÒw›axJö}>hHÅv‰]ÿCÅsÜ[ªD5|òh‘L1v—i¼Rºp¶e}Q m*SÒA@xiUÅG¸liSâD¬Y*LCåXVL1D…eÐR”HØlrT…D‚eN2;3`hJ>>ö]pIæ;`}ÙgƒU |–g½L¸}j²GAƒ¿p2OŠ?xÖb0¥|a/`t F뇲jµCkŒtxa÷”†‚wV˜8†ëuô™¬†}rËžI‡*uߣ‰Gq9˜Î~Ž[¦v`ÍF…dVÁI2r?iÈV\ x¬b˜ƒözezl{ôkG|íujdqg [-k\P‘l¬^‡Páz®p­c쌱‚às"’nƒOx@ŒÛwoò‰Uto¥“zíz”àe…𡧇~Œî²?”³»Q•{š ¾¿“똢µí6¦†„Ä„9  :‚Ñœ€z…Ê–—y€ûŽÎq„q‰ûhijÈŒ€hüf“–Ëqedšät_ä˜Qt‘^n™$tð]F›Ýt ^=™;x»h¤—;¦pN–»€dmœ‰uwh6rf+c+_neGg$i¯um(Š|©s –m˜—v‹“=•ƒr†ŒsãotqJq L%Pk÷G,Ovn4KûX0tÉIgR?rwD%F¦hE_E.eF;HŒ`GCEGç\@ºF²[ÃA?G`ÌA\EÊaø@ëCÆ]ÿA^DæZÑDÒFP_ÍCGJb)DJ¹g¸ENGqHC†NøuBCüMFu3C¥Mnuý?L£s«B,NsÂBNÑs;AuL—uìA|M=xü@5MUw¨A›MùuHC†NøuÆ?ƒL{sàAâM÷sBÒMvrA‘MpxÖBO yB„M²yäBvMæxˆCêMFuÓD4O‚uÃDåOeuá@&NÐu™>M|y«?¿LÃ{-ANLtx›BµL tAL2p0@ÆJ€kn@ÍHûd =RF_?SHDfò=*H kÉ>{J[sñ@}N¨uƒA}NÀp}AóMpÉ@ÉN tTAqO@w¯?FN«xì?ON5v?³Mœr;èJRl>½Ltj@*M mÞ@%Lt(?&JvØ@‰L¼s¼=_Kƒm?¹Kim ?zKÎnAéL!q$?åJ\pÈA,J¿n¼@˜H lØ@Kôj ApKjõAzI‘h«@9If|>H«e¤=‚H9e?®KeB>ÃK©cá<úIøbÆK[pù@±K¦t/CƒOvÿAQNwäC…NôzWBdMø{lBžMJ~g@Mqu@ýN³€s>€NË|m@fOËvW@ðMès|BL¨l CNÍhdBÜN?fƒB²O3i†AöO:k~BkQãlZB´P›mAÁMi[C6N–dIBïM_3A^L¡^?ãH„bð< Fïa2>&Hü]1=ïJ` >5N½_B‘MÍZ‡C!MØbÒCðM†n@ChO—rì=“Lcg1@¹NdëAÊOídˆBrLM`ôFOÓcHFvQ|cùF†Q!d±DP`ÓGÍQÈb KmRâh°G_Rf=>£L%XJ:šH»UeFÔKÈZÇGGN„X¢NßU†SãgBrygIŽzxFžö‹Je–p}:Ö•cwn›0gz ©ŸâsöC"£ý„÷ec¸Ç›uqÊò®WÅ“²vŒÐ°Æ›¤v4¬’–d¢§¸Pjô¢Â“Muw¥×•ƒº°Wš^{•²p˜8mӳ˘ÞqÚ¬sš}æ¨,“z´Œ'uÌ“$zÕ„„tSŠ]‡vx–„Í~)r:”ë‹Hz;›±‘)}”„~îlþn¨mfÊ`c%m“RxQïiTJÛLzn]VòVotÔlÒ[)qEÊkÚs²xn-q$zÖnÄnö†Xpo2resþ‹²r5t§Œßt²uÔŠr†tÓ‹8r=rOƒql² qj0£nçjü’j›g* k]eæ‹…j–eƒek/hos~aýe·]œM[äNëGúU»J9H¡S]F+H6TC7IÄUkCëKV›BëN1^¬Pn_gnT/^÷`£EUMWRíCgPüP L\e-\3d#rÇd€Czüe› ‹4m´,ž.~>¤{” jšžló@‹^5O)=E]NA{cFSH«jW¹K®w bJÎ}f’IéxQ_ÞFåtAZëE‚nƒTüCªsì\EUv”b€D5u±c”IÇ~¹mÔJÙŒê{à]e€˜tG]L¢ƒœh²Œãƒ‚j#r bNÙWaJr@VXúJ?ÙcúPA§h S)?bi£SCAfd9OÖ> µjíUèn‡V=€¥qµQÔ€yo¹OЀÐlMbƒ“mÑHA@c2:)x W8¸{ bÃL˜…¸oÖ_•¸y”d<‘~ kÑ‘|øjb wÕXu‰nÖHxm*T:@QYeLÒAÄbRRfF n˜\}E%sãeHH¤u¬kîT}pd•U m]²Q°l3[>T p \u[ˆy®iÕdG…wwŸ±’‚‡ž“Œþxœ™È†{7˜…å…¶¡‹K±t“ò¹Ü’זؾà”*šGÂô”›)¾ƒ’•’±"`ˆA¤î„½€×Ÿ€|û™"{ðzR’…sóp`ŽhkôhÒ^kQfΕUqÃd™®t~bšWu8csšºtdŠ›¼wóg¡Ç†Cqã²zš1yuÃK¥Ë…ì¯m•mŒ}zHp3mõb™m*dÛ{HˆQuu”—{"˜õšÅ{ ›-›ª{&’7’–zñr´tDtwO„RXk L9Tq¥SPa¿yþI’Tu"C+FÆfûCéCµ`ÞCJEH^C!FŒ^,@_Eî[’B#G?_xBÖE{_€CE=^E¡Eû]—D˜F_ÛCÀF©afDqI§f¥CJLénöB‹NOt4CøNZsãCÂOŒuBuNvB“M…s‡A&Ls»ChM vàA>MÊwr@M½xê?zM0y³?áMy)@ƒM¹vÎ@ÈL“Exf?ŸF°jÂA3K„p*C]OþrÌ@+O¢qAO°sÑ@eNgt·AcNwÉ@ŽMM{ @DM2z]BÁMv??ÈL•nu@½Mth@mMi!@¢LÛI€lç@0LÁm˜>úJ®lû<ãJžm;µIžoà>®Hinr?…G¦l@õIÆj½@”J¥gÞ@¡Haeƒ@ÒIÀh_?„I{jÍ<Iíj=>nMpR9¥Kpï<°L…p;?ôMgqm:RJÓlÕ<K–j¢=«Jµeì>LŠd1?ŠL$nA@‡L®ròAªNuA×NŸx–B¤O÷})CMN èAGK}–B)Nì|¬AwOr|\?eNTz’A.OwxÛBTMáqùA;Iée³ALa¿CöPObÐBQ!fÎB˜PieCùPAlzA€OnnO?Mcl×AfM=fHB#Ma`BL b/?‚Hçf <F9e?Iˆa=œI¹`#@¯NƒdQAEM¿^B$LÛ]ÄALyfw@ÂKÍh…>uJcAçLSd˜@xKµa@PHã]Ý@ÊH”]_AwII\/F:NæcHE‘Nc/GjO¬bÿD L^ùCâLZÇ=I#Uà>FI\[ E£L=aqJ5MR[I\-_Ÿ[AqPypa“2“؃@¨‹Wd{œøu4²•ß^… A—Ú_Vb”>bI*¨2c_5öžÝyU;”µ •¸S:Ä:®È„@®–1pÆ«Æhc £4‰x[uœ@†ºgrˆòp£ôŽokÍ«²“¤iX¬-›†uÌ Ü“Ýs¡*÷w²’<…wm‰È‡ tw}‚ît&ˆ‹ˆ‚+…¥ƒ¢x ‹u„mn±›±’X|cˆ1€™tks n¼iÆr«kÊnImƒc’må_ëQÿf4j­_`p´zŒg>k׆Br“nýrpnüöoYo¯„†n´lpŠœqën•‰Ïq,pQŠrŠqãŠqÝpÑ‹ÛpqmÕŸq¬hônq,eèCo¯høKlÞg‹„jŽdnŠliÄg…Im¢l™€£ojpzvÕM_ye?cN2| @©MÖy AòMáw%A%MeyÄ?L5z?îJÐy2AFMQ|äA“M{ÑAûMVy»B O‡yþC~PõxÝA³Oåvs>‡Mwï@úNxlD¶PyDéNht‚DTNùlDŒM¿e_B[K’a+? H6_é<´Dâ_œ>üESc@JÈi3>L5l1>NnÐ?nOzs×@rNvB:NÉx?M­}w?#MW•@}Lz)@Kuq‹KÌof?µI:qy>I o™=kJžo >»Jo°=íIˆn4=aI£n·=2Im <Gj¤=·Hjc@²Jrgé@ÿJ³fJ@óJhÈ?.K‚i]<@J|l ?ÔMutâ:cLuÌ=YNóv­>DMGx?tL—x ?ìK v@?L¿n×?˜MqjQ@äNäm÷@ŸN¿p ANös‹B%P {´H[Û„*HõTâÇC"M_{¾C»NñyÅB?OQxyA(Nßvî?NL|tT@;J§lõA J—b½BóM^9D2Qˆ_JC¨Pc¦BOUe"CyNke›BcN9H_Û?ÛK‡bAL˜aC½KÖ_{AlK¾b¥=Hcj@œH&ds@ƒH¾dÉ?hHIbA@¼Gk_„@QF¨] DPG¾a&BkEgäB•J`jA²JCf‹C#Ký`¹CnJRWn@¦F-T-;ÐDWêB¿K`EQŽPŸ_ÿoÃjRa… ‰{yH3‹\¨Ã—wu±ªŠ Q©œ®kYë‘Ò\q3¡\"ŠXZU)Ôàd&ŸzÊ4󪧒Ág³¢%pe£3ŒNgàaƒÖY[™ÙrcGž¤‰q:¡©ŒŽf‰¥eah£X”zoð™éŽân@”1‰¹oå‚¡zMco}é@n:xÃ~qî…"‰ÿ~ªŽ‘}:–ìðu®ž¾”GMŽý„yè¥y3v„Gv­j݆kþeqrÂWù_¿vgXeåØkkb¸‡|pÐfƒˆnviD†(r¾q©†EpúpÙ‰ sqþˆTqåo抣sÞn¥‹êq“nÏŒqñj.ަp£e>’œq­eÛ’“p%jz“‹oTjMZi„bs‡úe°ieƒjjArP„p­t4†þo*nô{i]Œ[ìb;QNK6L„MD'O«PRHíTÿSªHeV-W%OûT¬TFQRUÃQÁVI\‘S¿OFaÈVF_c<\®Fàgíc eµo‘cŠŒÏjÙ£’–w¶¯9ž¾x‡‘;~WR¥p4UØAßp¤U¦HsuÖbžJB{ÏkOK…}”i>@Š}_fÆFÿxQ`QGíuz^uEZrÌ\5Dwtð_‰Gu·a&F|{kÄK¸‡Ét7OK|$Uú‡…{ôW– ŽB€\ªôŽï‘3¥‘c‹°È+±Î˜?„_Rîn…Rã:g}RùB¿e+RàBˆb NTAfÏOÎD×jÉRÕHeŠysÜNn}Lg~NÖ^s¶]O‡V{Ú]Ö‚t­OÀydqDãlSÏ:ûfRQAHtŽe[Lp°o–N÷|.h]I~Aj÷M¡€|póZÉ{±iùR¨uƒbüM£mˆ]4Mçkú[[J(jîXÈDD_¬Qñ@™VtN7@ãX©Q´C_ŽT KŽhœ_MYÞp#kbe­r¢j–dXx¤kghˆ%wr+ž@ŒF‚3²E›Á‰Ô­î—……L«f”‰é±Ì“ÂJºÕ“ÀŠÁ$•{”êÂѓ֗lÅ•œ*ǘ•œ“¾+ے㬠‰† ž€})—Hyqzª‘%rRrt‘…n)jY‘\jwbo’zj:d–¬q„lª™Swíp‰˜9tnj›My†i®ÂƒÜÒžS®PزŒPŸçÇ¡ˆ‰†Š~ýoÌaòki`ÓdÖh‰XjqütjgÜ}i†áp]–Y˜{Œšª”,z‚x$tua4_Åq¸Z†^y]T^î|ŸGðOÄv\AAE=m÷C‘Eìd„DFb¼C½Eí_ŒC{Fj] C‘FÍ]ÜB(Dæ\*C.D\ùCMFÐ];CºEƒ\ÎBœEâ[SDkH}`E¢KôeFPâm]CúOÓpAbN4tDB/Ouw5EuPZwMCAL§u‰BàJw0BàLŒw?»Mëvñ<ÅM©wX=ËMÇz ?pM§{<@M•x}@VM1yk@¿LÂz{A…L‘zhB—MÂzµ@Mgz”@âLÀyïAN¢y®A9Ox²BfO‚wBÛNÑw?\Nw@ÖOv‹E©Qgs]E,P;lXDRNåhA²JCf‡?ôHZc @H]¤@“GØXÓ?cH`!>‚J"h¶=ÓL‡n¬@ÝO’s×?N·x@A©Nz®@ NG~Ž>ËL‚€³?–L’|‡?CK€sý>J”h?gK<`­@2L6cd?—KŒi?QJ né= I¤o’=ÎJ&sC@ Lr!@?JânB?Jo¸?ÞKlk]=J e+?+Kwh;>wJ\jõ<Jk@¯JCj#BVLÇjAÞL~nÍ=:Kv=L¢w£>,Máx)>‰Kty‹@îLi{ã?qLsyYAIMlrC½O‡në@ENÐl@MÖmü@hM8rD‰PxWXEdÙ„O¯ZgÕExOXzÖBO yÖCþP vèA+Np{B¤Mmn;C+Nàk™B„O»e®AŸNP]ôBmOw^~>¢Ma@¼NPdCBN\bˆBaMÕbÔ?&LÄbD?JÞ`‹@gI¤`@+JíbÔ>'I\e>aG±e?6Ge4@ôH-b@6JˆbéA}Jdà@©HÃ`XBKºaüARIc˜@ªFçcÁ?1F4dê>™G¿bx?ùF}_¥>…Cg`,CþDÐeeCêCêiIA½Fll>HÑiÃDâKŠb»E0K¯YaFuE¼R"DbDAVËEûK`]ª[ÑS¸T~xvº`2T‘äv¶¯C«²Žç¹W§xˆúÂ9¢ƒé¥Æ‚ìT¹—úo”9“‹ç^ çŒx`?,‹Í^¥*‘ÔgJ2h“dp1@u’ËwáQú—€A`V˜OƒtcÚ—ö†Ve’¢ôªpLŸ×gV›¾‚Á[ž–܃(i‘‹vÌúŒñyd}œ|hjw‚{ jÇ{º‚Ïn‡‡l‡qÝ•3’zÕ¡Í™`€9 H—÷ôá‹Q‚²êg”‰m„…G‰äw£yH_h@{_gqÿ}†gËbö@iá^ †oÊeKLuãnŒYs q‡‰rBqù‰Fq]p¹‹9sôoýŒÒqþmRŽCmse¡ÓnÕbS“2qGe¶”pÛg•”çoiRŽ2ksg®‡²h÷nσ¢i·ww„Ÿlpxg‰ipolq{Oaä^Šf™RHN¤JçGNKÕCùJ¥OGˆQžSñLÀSêYIQPÀT¢QÌL£N€S"QINoTöbW¡N§iá]@G+k`AeÒm\^öƒy_dw—Y‰ùh££ì•Bm$’%']²Jê<ŸgeQVC$œÞ¡w ‹@}>iRƒVu÷a^€¥p\U¹| kŸIÜvlbàCQlŠVºBAhW’J¯qƒb§N•vüb~Gw_ÉBÕz†d´G,|°jÓLáuñe~MrâebVvpêg&]SnOc÷Nâmþ`àFeÒX»CÈW‹PÉAàT£Nõ@\Z¬QiI·g ]XÔw`qÓjyÞqilírÍcÛ^h{­`EZÐŽVrÄh;œÑ†xl¥r‘º‚q°J™œÐµê™¤’%ÀBÁ›HƈœƒžjÂå”6— Ô‰˜VÁǒ̘kº]m’¬6Љ'›z«ö‘úv_|VsÀu¬‘Œp”k\‘‹loc9’¡k"e‘’jlgà•lj…–þl#g{–zr·eœm|³p®ÿƒ#…o¸x„m‚A ‚ËnKwµr…aHakeþ]ÐhY&Tœq _3Wfs¿vÂc—ŠŽ/v “?‘‘z½{+x¹q eaeëp]`unQqXTxÞD_Mv5@éF oÆBâF g-CµF:cjDGa‰DÉF‚[ÐDÂF½XoD­EaZáBiEßZˆB—FZ4BlF’YÛA¿F“\vBØHaFDöJme×D¾NÒk-CAO~o¹@Nèró@ÿMžvÀANßv BMŠvBŒLØuMBMIt'A‹MuŒA Ohw„CQvzl?OMÌzì?M‹yYA5N—z‰?´L*|©@M|-AÈM}yŠA—NzŸ@!M3zT@M$y¨CHOÆx?DØNˆx4AWM0xw@ Nyx¹AíNÐwuD*P>v²DêNZqPE;Nmn^AöI¡j>æEf¸@G]^ÖA˜G³X@¼Fã]\?ØIGfó?ìL—lA*OXuÖ>O:{1?Nìy]=L'{è>‡Mì}@%N½z?µLSu—>nL±mp=ÒK¥dÅ=-K+d…=8K›h¶;.JÏi=âIk@>J¿lw?K!m°@ðJÇmŽ?÷JTmÆ@Mhjž?-L.e>TK i=fJ‰l¡=—I¯nB>aH(o’@þJžo@_Kr—>nJ©w.B NC|h@L‡|@9K/|è@hLù{?@‘L>x.CUNCsKB”Nôn›A2MBjq?{JijDAÌL|oéGch @úH™f¸>•Heô?mIhÕ?/I›em@J»b³C#KcÚ@åG«aC?F bº?\H®b/?žGõ_:@(FŸcŽBÚF¤g­CXGÅhˆC”Hˆi~CóIg”F¶Kšb¬GLy] MsN•]1IÔM»[âO]R\ gÒ^ëPЉ…–gk–l–Nxê´—¬…ŽÕ½9¬UÀÄÕ­‘Û·Öœb‡€¢³Šqú˜z‡C³”8rê<ŸŒ¤g´5‹›b¿Gx‡4[•J§‡]dÀAíb|õP¿”Àƒ¼i–Ɇ—fW¡•‘µm ¡ˆ’ëk2“O|1V)zœeÇO“†'€B{Í– –tŒ4z{}hi{u×ydìƒë†òn3‹€†#j!šÜ‡td Ä“|{¾šÙ2|¢Ö‘I‘¹›ý¬ÝÁ܉#“æ¨Ì£Òœ<§#ˆ*ug…u†m]ˆÎx8l–w—}¨fOZ ˆ\o¤aï”t©gqŽ˜rŒkúqïo)ްqxnË‘uoÀ’ztôlM’Bneî’øn“bñ•§qÉd7™Ïs¤gZ–yqiÀºo¶lúŠöm”sè†\m}J…wkk|0ŠojÈ|>eŒ]¾m±VMO™PfK{LˆG¤L)QóF5QûSÅO²QÎVU QøS.TtIGMJNCIÕHÇT§^ÌPYnO] Xm\XdijûPæynl8Sã‹€w^Uˆ™]N€|œLÝ…s^G+’P…$jd–Zus ¥~œLЙ o4ði·L v<[•E|wû\ÀBRw³_UEÃoxV%?Æn–Ul=v^ET{©aiJN‡1q2R’Õ|&T/•Q€kU&“C{e"†n+Gõ…mk92wn]™7k~TLF`n^¿OÜoê[vNF]ØK:šX¢Hn5!h‡Rˆ?ó³p iŒÓ¥™O‚3•D‡tm„’ooO¼{eöDykeDys dvH…q®c RmçYœM&iPRœA@qgYÜCfyªfÕI9~wn6M”}Òp‹VÛ}^u«fˆ{{w¨nñrÌmè^@q†fSM?kÆ_4H™bVYÆGÕaÀX÷IÀb(VMKa:XR•l`e£]Bo+fÉaúhQZÚU¶nñYR~háWg“‚|kvŸ­ˆç{D§:‘$†Hµ¨šì”2Äf¨;­Çð¢÷©î—ח>ÃQ•‚—À•˜›5·v‚–)¬·Š{‹`šW€pW“µzw~”²xÎy®“¡sâqË”ãpCj·’¡kÑbs’ÀjNeý“Nkeh¨“Ci1gb’áj?dN’ðl˜^d•8nKZÍ’Vo6Z¸…pÜ_ss‰mücUenkdf1ij¿h°jÇd"cGiÐné`zÇ‚nŒÄŒåxG‚·ÝsšsãqûrìbÚcëq3S§WÒuøD·MItªA†JÉnADñIìg±C¤G‘bÈD{Fx_PDFh\|CEíXÐB8E Z™B‰EÜ\®AüE{[¿B€GO\?BøFÐ^#CšHua²DÜKagíDÆO£o2AòNdpZAñN>r7?)Lot0@/L¾vr@ŽL xñ@÷LãvXA0Ms"BaM­ràAÛL´Imfõ@%M¦k¾?dMv!@xO—|G?sN z'@>N"zé?)Nðz®A»Nyö?üL;v>>ÂL8r<LXmL>÷Kmè=Ko<üI£l?âJlh†@úJ}g¬@K&k¨?çJkµ?$Kèi@úKhÊ?"Lhg’>CKäjÅ;™H k¹>pJÕm]>ÔIrî>:J·rA@“JrW?IuÓBçL!|Y@KÊ|FD†L~6@âJFzÔ@ìLJwšAóM÷sA½MpAÜLjj?fJYg&A$M}m~BsM­q˜D+L5rÇEóMnoY@ÉMÐp]=äK»t‚?§K%sÀBgN\o¬C–O@jqBFNÅeáBfNif™A©MgÌ>›Kf[?=L-eçAWNïc-FUQ¯dqEøOIdwBËMÜ_eAªKZ\È<üG]+“Hf?zIg">ÊI¥hw=®Jèez>ÌKcï?›Kæa‘B,LHb’@I4cÁ@úHleBùHcìBGJãežCHJóhjC¶I¤f³DKfBGéKyd.GŠJz`“IªLqaDP S j®JñM:_SNwU2^&w(r#\Š”Âãq7›å˜ç|ǰ ¤CŒÅºS¨é ¿/¬bIÁ®­.” ½v¥"’E±„šf{¨£}mg™‘†tã=¶ˆ0bSTõ€Swhç† `BJñ~{M@³”W„ãf‚˜Ì†wd០Ëk1¢ö’Óoõ‘ Ù^siNTÝI½i„]´\N‡W„%}]sylh‰xÃ} g<‡u‡Xm¥ŽC‡ mx—bˆElI”$„æo¹‡Ä}qr?„FœƒÓäÛ’ê=¤B®ÉøÀd¾Å&“ì•Ë¥|¥Æ«'Âz‘V‘Pœ„‚Wm-cÅŒ¸o,]““ ug’us"iÐnp™lדXqši÷˜Nv‘jø–¥sNg³˜èqÌe¿—jpaaÚ™gtif‰–‰tÃg³”1rÖhü%pAkjpteˆærùІ¾l>}dŒRlákn€Yb/Uv[¿OÊcTáP_V¸U§UæPhXUZTTRW'`¯TeTeZ2P¼QTžRN¶ZÓ\XKbdøjÎS“`øfYME]X™CqjVÙFÂ~˜aõFlNzæRZå|ÍQ¥ŠÐwRЊPyd–l‰ n´¡m—iuBŸ¸“Ÿw¯…»qþW~u½WÁB¾p€R": tìX˜Dªn;UþBÓi2Q:ënjSc=rÐTôC½z?a‡IºŒQtJ_‹u•K†~·h[HåmhW_gŽP¬BåizS(E¹uÍdçJ€§q"Rņïxy_S„xc8€TwikµxÈqåjHpße­UØlT`¢K¶l bLGkaEM?i!^ZP%fM\_RSh—\ûUYlÕ]WdKXRÛk[]VV„\qëf”t€Eo=ž‘†NwÆ¡>Š~O©ÜÔŒe²\”û¸ •¶Ÿà½k’—çÀ›‘r–^Á”BœV¼÷’Þ—õ­‹îŒäŽ…Šƒ¬˜†²Õ—ñ|{|1–áuçv»”Ñp.o}“imµh\’ÅkgV’Bk„h¹¬hÿf‰Ïh"c®ŽJiÑ]ÁŒCiý^£ˆyk±eÇvoKjÎy´s•l1u|grŒy?„ýwlq@wJlaáhÊ\ºqexÐiG““ð€ß”D¾~*‚ðzÜr‚mŒk+o‡SDZÆp?CÖMp?@I¢jªBmIefAbEú]^CØDž[rEšGp_³CFp^“BXE:^ÔCÔEWa,CÈE´`•CUF˜`ÆAàD¹`÷CÄGfc6FmM¶k°E5Q÷s9D±Q%s\BŽOîp B=M­sGBßL}ut@‚Lcvä>.L°vÈ?L"uäA MsëB‰L˜rwBÙL4y†@GL/}AcMé{}AÏMãxæ@DM!w0A¼MÔw@ÂM;y0AìMŒz)A£MoxÐ@RMîvàA>MÊwºC1N?yABØMh{ÙA8M–}'C\M´~`D8N×}¹E^O}é@©Lz$B2LÍu8AÚH±kj?ÃD›e BVE™cù@FEŠ_@I4f0@™Kml0CìN«wZ@ÄN¡z=>Mxg?ÏMùw ?JM‰yAÍLyjBLw@¯Lís#>·Lžr0>fK¤r°= I¹sS?½Jsï>%Kk@?}J•hM?2J^j¶>ƒJ%gÀ>íKçca>*K g?µKXi @7Kñj,>OIŸk}?KÐm²=åJp•@UKqBnK¸nqDüKq*D M wmC9M‚yC6Lxë@ïK&wD@M u ?ÚLyr×@QMøpË?¼LókªAFMngrAÖMŠjÔAïM¶q½B¦L1r÷B,M¢p@©MrM?—L­sc@@KNrÎAªL~oíAÄMbl‹AÈM½j…@ŒM¦iEA8M§jÄ?4LEkZ@÷LVg“B/Oãe³CKOjzDªNÆj·A M'bŽ@HK\î=µG»ZM@•JRe³=ãIfdi?›J_e6>ZJçfU>”KÙdÎ>ŽK£_(?lK¡]ËD@NŸa@>½Gðb²@ËHÓhÀ@åI¾eŽBBJ¬fD”KVgÕG°MñfîEâL¼d]FaK¾`,FOKQZXHK¤]5J­NbÃCmMÜUÁM\¯V„úÆfb›˜ÎxEŸ­šlö¬sœvˆžµŸ4Œ×ºË§æŒ4Ã*¯‘ů’½ë¨ÒŒ¦†—oyW—–0Q…‰ÞiHL`¡XñTÙ1pðCŠ–óI•ž ŽRj|ŠRd§Œg§£;”œp+•Ê ekJXéH1W&NIïhDhŸ`Foyþl%~ã†ur$†ˆ7nìŒw„5k–Ý„qkŠN~br¥ròt|K‡ƒ”¬ÁÆpƘáèÐÁÍÆÞÉŸ#£«˜Džc«½ÄÓÇîÓ¡Éž£­]ˆ7oõi,”ºq“Z·˜!x hŸ’8q>ha“'nci„˜br™e‚›óu:bz›quñc嚟qsbs›wsïd!šˆtñgÅ”¢rÊg±’áqîhßñoôiÆ‹¶mYo¾‰âqÎ|lðrôˆhÚ`ŒJ^žOwuUöMÍo÷URÇl$`á]2ebÂ_j]IR¥PóhÉWWk_aYjkvcéTÿh3` H^r6gÂLh`HV;NÅ:zd[M.@*ySœBø‡ rÎQW“°‚uaòŽá|_þze®MµÇn"U¾˜®‹]o˜I‹ûm£‡ås}Rµx[t@yd—Iß0ŒfMN‚?ªk`SBF¢gkOÕAîd¯LŽ=Åe¨N?qkuSöAí}¹cöFU|ÜdÉN oUX¾J¤]‰MGA·mžY_EêyCj‚O”xgNiØRGD:jòTßFmª[&I@eDRš?åf‹P‡;¹¥Ÿ xþ±D˜lm°Ô—Ik.«&–oi¥âŽ«g]—V}yU¼„ëpŒIu|!nÕKèulb&I?n¤THQidRUHÕnE\€J‡v;hL~IoVQ„}ÙlOVwžh´U{u‚jpcNo•dt\KnÖdˆUOtökURuj™M}nà`ÛNäe|XxP§h@\½T‚l†_ÉViýa'[žmðhdchƒÖt™kø•˜–qáŸÚˆ-xŒ¡jˆpz~£Ô‡¤’†j‹Ž©·†?T³áˆ)^º{‹¡“À½l‘f™¶“_•­|¢¢¯‹‹©žSˆ¦†Vœ­ž€4™©yíy¶•«uksk’ÈpÆmqykñf¾Äje¤ÈkÂf®^kcUîkÔ^3kJbdˆ~kWj‚p„l[y«t#kM|gžt<ˆzŽ,~o„I‡0q‰qâu2`!v"}owš𡆢¤Öœ£…“RŒÑyÄvuŠr"Za#t"CìN³q A·J”ngC¥J7kÒB2HÏdmCGG`EƒH»`ÐCÆG/_¶@ÛDJ\!CrEª^GC´D,aœCM»uAYMTvµ@ÑMxÅA+ODx¸B˜OMv´AhM uºB"M1wÁCóL¨xåCÇLT{ÀDpLÏ}ˆC´K2|½DÙN©{ÇAGN–yôANTx”@)LXvÇAEJ%näAÎFgBÒCÔc¢BVE¡dµ@ÆGiAÃJ9p–BáMávÍ?QNEx£>çM‚v‘>‘Mªvz@»MÕx7BM™x—BòL‹vŒ?bL¢rŒ<KÚn¼>àJo9>­Hfoå?IKÛp> Kâkå>µJÐi0?Ki¡>žKGf&@ßLfy@–L¹iå?ÛK:k AŠKpkÇ@áJòkï?yKžmù>K\o„ALgo¿B‹L©lEVNnCŽMp¥BŠMìriBzL¾q–B3MsÅ@°Lïrë@øLúrzAMÇq@®Lým_?#Môi5@¯M†må@§MÑpýA1MrÍAMÔr@@òM÷u~@2M9tÏ@8KÝo`AÐKQmF@`Lm—=HKFl9AwNÈhž@LMiP?L˜hw=®Jèe?>KÓcÞ@6LBg†F2PIl¸D@O0f“ALÒ_CK%^iB&JÒYqEÊLC_uAÚKþa¤@ùL…dH?aK©dˆ?CJUe9?ÂIg@lJ“e@šH^\AŠINY‰C”K;[5<™E.]Û?ÁH`h+@ JûiÑCLÿiDH\Mf–HNLþeÁD J d$DÌH»[¬DfIÛUFBøGÍTïHèP×Wþ=…OR«V‘f^°‡™‡@nAš¬—ly_Ÿ,—%y&£go¯¶•Š{…µ²œé€±Ä¨¯ðuÅü­ŒÞ³VÎÓ˜¸‰ qš‰bd2•m‚a’·x¿VÌ™¡#M4¤Š‘0eö®ý™ónø¤Ò‘ögÊDŒ?cc¤™”mž• Ѝb8wkiOKÿbU3Iœg"gA[Trúz mÊ|P†~qÕ€–…lš‹_€Hj鈣}Rkß… zËo\zTsœÉ£±ÇœC“¢¯Å¡ã›X«‡!‡Ü’$†§}¶ƒB›Væ•’Eƒ5ŒÛŒ(nHfWšÄuJ\Μ{ºg“–s¯gI—ÙpcgšOsJb žîwŽa}ž xâbq™¤q-ez™ tâg¸—9u†k—“r´jÆØp¹h”oñeO‹¯làh´Š»m¸o¹‡hc!‡=gôYW‚Tb¦TnwVW6O/u@WÈR†xdóc¦sñjÝh-hÃY P/n ^X:xyn4c`xÎnÆ^§q¬`G~(kžKþqÀdÁJd``T;HiQýAE|œ^¡GЇƒrtR1—D†,hl•~„BfŽz1fJwv9cxNz“/†™tÛ”Gˆ´o…޹}S_ÿ~$hIŸ_Iõ5Ä`„Mi?ßpè[¿Iãe›PnDX_mKrBCa‘M¥@ÙaûN=lTS$@kNz½@¶M~z­BÔMwBDÞMztAÛLqm9@áL!hS?L,fªgÍÇJ·oS>óJFm¯="Km–>ãKùj¾@œM f'@ÏLFdþ< KWft9G `¼:õEúZAžK½_êCbOYdŠF‡Q\g3DNÍcâAnLE_DE:O`C„L#aüAL×aßA„Mcª@±KÇf¯?ÉIUj¾=ÖG[g•@¶IecBPHc`BŒG[­DrKÞY&A¥IéX?@uJüdBâL¨kEžNûi_IOe?EŸIäcfCªGõbAáE [;?øE£T|AºJ{T‘IÿWÑZ‹J=\]ñaÅqsk²†¢‡„qê– “ÑxVŸ.’Çnƒ£Ý‡¥S ¦ ‡›XÞ°Ÿ’`næÅש±„ÍÆ¥¬Éˆ€­ï—×}ï‘5€Üb‹š¡ŒëmS›áèsÀ“Ó†™a¸š¶…A^î«í–fjM·™ïjg©P”¼a7œÿ‡|_䊳`Ú“›Œ¯dµ‡µwXÖncQIcoœiŽP·v\wé`›x8«jBzM};gŒ~v¦_Ÿyln Zq}Twót¼mïs…yŒŠò†Øƒ©„!y÷|Ðv•kÜlYkæb`l«kÙT²[Ÿ|³`=g&‡MkqmnŸb)š*u.`C›&wBgc˜2t0g™™%sœdJœlsaîž"v¨`Žž^wŽa˜ãr?f–jsÕi“¬r#k‘Jrºo/ŽëpÉjíŒEnˆ`ïŒ ncÉŠ'lþdªƒf\^C„Whñ^‚eiEZN|½`‡UÑw7WµRLv?aŠa{}¾qÜpGpf»_[otbî\™ƒ­}`v̆J€EqxÑi\H`‚GpÿJmwnnDQÁe¦cTsŠbåIø„q‹KJøzvT#—Wƒ¼^–Ûƒ°\€mwH„q“[:Fx‹Ð{j·”f‰.tä–Œu*†|w^òoæ[êIUlMY±Kn°t`.wfh.P¶e›Q°E`oMa?}`qMa=¼_€L³;«\ŽKîå‰qi}y#B°L×tDÍL?q(D/M¥n>C¥M`srB¥M~xé@CLêz–AK¥| A»IðyæAWM0wë@pNt¸A¡N¦sëCüM,pUCgJÇjîAƒFW`“C1G„Z8CûHè`±@¥J”oÕ?­M zC= Nº{<ISd!AìL¶a@)NÚbÔ>Lf.=&K™i¥=@J{hùBÒKdEêM b*BòLšf A"MskMAfLÄkéACJâiBòJjÌBõK.lBÃK‡lAwL½hkC›NBfpCLO+hCOöj2A¦LglS?LLo°?!LüqƒD)MWrèBWLÌsë@äKuý@Mžq?uLðn?”MöqW>ðN•t»>ÍMuCMËvºB…Ksâ@=L}sè<æJ¨o::.I@l:<@J§j{=†KájT=óKKh?L&dÙ@bLÙc';IŽb[C6N–dþC“M5jüC2M×ntAHL!jyAÌJªb(BH&`2BWIN`sDãL^ABKKXü@JicÄAÔK}j!G*OSiºDfKyaPBÉG·_CHÚa‡?ÚHðZŽ?æH”U}@ÑL«TjGäX]—R:ij—l•{Ss&…*‡ItýŒHw¡Y’\sO¢.‚ºB’ŸìtÉ6¥È{CM¾û–lg»Á­ŸìwDª‹šš}Ä›ŒÐj\³Žl ¢T–ýx…ž+“Ènƒ¡Í°mò¡Vº]›¤?U›î…ŸXŽ‹~tyN¹^y¬T ’wƒ¾fV‹þ€HcôzœoäLÌmç`ŽHysãk˜Mex}0`ot®uº`‡pÎn¯[unìdßSÍp×kiÞX³ZÐ`&g"^NX¤h}_œVdõ]‚VLgþcAa|\RQVgo—Xsfüd¥h 5n@c,˜s>cä™huÁgÌ—øqe™uqòahtb äv6_Ÿ˜xGbɘOtKh)•>s¶kÝ’Ksm葞ut4)oüiûŽkn¥]錛i©U†‰Zi\w€3gó_Í}ki}bp€©nÒ`³|’e5Z±y`ZfSos_\¬UÃw)jBfgm‡c]ceåX1`ªˆ%ƒzÏ5Š•y„7vžRð„v×T–w‚qBU{k mˆZ˜x^oµV¸‹Ýx'W–w[O—Ÿ€€U”ß~,Pˆ[s]JínÖS[<-z‹e¿K\‘·†Vrò›4–Ò€A”WŒŒp¹yËjÏM-q`šP¿Š†€&p‰S}§e¶taåI)gQyA‘^8Lq<±Y IIaK3xc?*K'vyC+NÐqÙChOŠoÞD^PpíEøNõn'CáISl‹AeF#hÐBÂGŽeÑAÉG gÕAœJým±?½Mùwˆ<öN¶zY=PÕx,=>Nvç>;N(vD@GNçqŽ?»LhT>J:`p=J1_+@Me@>‚Kªg¡>ÆJÏiJ@ÁJ?gÙDFL5dELûbßDLÚiàAùKm+AêKâj8C|KNj½@qJ³l×? Kip€@|Kµp—AÃLkþC@PÞdàDQ\b…D4OŽd[B½KjÈ:vGn»>7KqeDƒMVp&FìMq$B¥L$q|?MÔnR=±K'n…>(Lˆq,?˜NŠsO??Ns(A,L~sbAJÈq¦@ÄKÀp­<üJZi€>ÃK|eÞ=íJŠc»<ˆK–e· J¡bH;I¥_˜8¼F¡VÏ6¾CÇV74Cæ]f>qL^etAOofAFL>dŠ@ñJ awB~Mudð>‡IÏdj=H'dBªLfvE€N0j¾FLO]k’GþP_i‰C‡L(`CdJF`"C¨K¥bC=Mž`é?JåZz@¦HÁcBAÿH¬hDªIÛe/@óDÝ^ BF_2@F3^«?vIÑZY>yJQU”>¶L/TZG/U«\ KWbÐf‹hˆtÖpïx~{qWˆ9„w‘b|vŸ»~â@ ›sjB5F˜Åi1?È}w÷@ú¦¸†øg¸¬%”#†<¬9šå}ǧ¯•q—«þ—1ri²™ŸÌ|"®I|àFŠ `Ä”U{àPkˆœtg]øy…g‘N[ƒq3T5ù”htŽa…QkâçrkU[oé[“LàgÙVZK¤pngWŠnžnaÖiMo']$ffV=k\icÑU»V±S¤Z&W‹T¤aHb7e‹{¯€ÿ¸†–„Ðaa.gtcYøi…z¾eík^Ž-q-gÁ—¼ueB™_tLe0™/r‹dšŒpIa•ž©uªc~ œyIa\œrzàb™:ug´–·rwj\”s)mep6nŽel¹g²i»[ìŒSgVCŠþh´X&~gÔ[hyÖiÈ_Qíoí^0}–fcTxÄ]¡QˆkUrLfÈVôOœ`rTsX;\ QÆ\ìuŽlmÜ‚–xgð€ÖtzWƒx“`¾váqö\ÎnuoôYy{pÅR‹¤w[UË•"=YΕ^}¸R¹•£}¥N!FuÎH†yZ¢?|q£W“Bj„0yþaî•ÕyG›Ð“Qto…ätœTubPM&‹”|[f‰È£b y_cŒC`j:RØ@ÎYûIˆ<éT¸F‡=&T1G?8YïK˜;{jŽTÀAxlV¿C¹oZXGjy,bŒCÆŠ(u;N†ÇtâR=}TjnLèycÊC‹xŸ`@•¸Á™{p½P›tm4¾pšçgi»›òi½Äœ‹mJÆ ž1p¼ÄÄŸÚp¥ÂŸuqXÞÅpþ¹[˜]lÎ¥¦Ÿh«›º†©_µ’‘yQ[ƒ"kÇMÊqÌ`URkç\?SbeÛSäL i,Z.KUuEmÂWëˆ ƒ nÙ”éÿv¥‚Š¥mÏ„­z_îs­fÍL«hwXIsWf…WÆ¡w5jyUƒýnŸJŽxͦ_’E)¡Y¶z¹Ÿ†ˆòsu ðƒ2rÝ¢”„ z£´ƒf~È¢è€ £•~ðƒo§x‚¢ˆS¬á…!„E…¤0i„× ~kÌ {ëzÁ—@us°”ör¾lN’µqyhÏŽ]o¾dŽËkifMŽÉiSjƉk3j?WkÄfÌŠìld¢„…p cl¶shq‡Èz$qБ‘‰ót:¡˜\x¯¢PyÙ±î¤åw/³Í£ˆ|Ž«lV‚ð›Ï”Š„ÐŽ Gˆj‚¦‰ŽDtI…ŒdÉpryoMÊR/f{F$K‹dyCiI0d³AHFè] D…ET\±D?DpXZDžDÜX"C'En^CóE$a+CîE¹_qC3F’_¶BFGE`ÝCåJfËDgO\v‡B¦O|/CƒOv DWMüsÂAÙJ‘tÅA`LWsB/MásKB Lt#BÁKtfAYLþu†A|Lýt0DüLäqQFéMâp¾E¶M q²DûMqPDfNqOEmNEoH…N-nöGíNpÒDPHpGsRUq;EƒO×poDãNtÍAzNutEíO½r\GKP”n·GŒQZnmHõROløGüOÛhÝBˆHãh+@ˆDªkv@äDñl @™FUk­?µJ¨jY>ÌLÒqÓ>’PÜu>>P8v>UNÀv¹?RNhvAGNÁrH?ëMFkî;XKaUOKeœ=‹J¹hØ>aJÿkh@6J_fC#K0d§CÝJ5g`E.KÍlDzK/m:ATKgjJAñJÊl?3Iïp¨>ÕJfsö>ÜJÍrì@ÍK'pÍBGN£i³BôN¡bDNÇa¶AÉIûfò<+G±l†?)K+nìCÂLŽmF{M‚kÞEzNÔk8?pL³lB?Mqü=æKâqY>UMƒrR=2MÐpÃ@ŠL×oy@ƒJ²lù>JíiB?ÝK»eí@ßL`„>ïJ¿].;ŸJ.a'=èK:bÙ:pI_q:yHÞ_\9ÞGÃZ‰:õF$V~7ÎChW5?Dì]ç:I,a[=üJ·at>¬I0`%?ÚI£]{A0LÖaÇCMeœBOKÉcÃA L¦dDKMcÓH@PFe.KZSijE(Ošeì>IUa¢EüM­fVALcB·KÍayCÁI?f\@^EVfsA“E5eò@€D¤dÚC›F¥bÞB H,_4@éH’[8>vKU*>LS¥GQK]1L%Z@aZhÕh'm‰r­jÒ|&~ÏlÝ—¬Ž)v#¤ ‹QTb›úkkB-˜mlýFf¤6™O†mœ‡Ò`"˜}#k¯e—n}f´Øšüv°¥‰pe.¥Ò”,zÈ¥8šf}?Š´o‹‰ëvZ}dp_`Úr§fvV+|‹ntQ`‚xh¾“>‰AqÒŽkxjbxþd RÑ]WNJd^ UOñbdUf–l YÎd‘f-Xcbc˜V¬WTN _Y|TRZ]^¦hŽ}ß…y€ˆµŽdíe³k’^ZgZvÜe¹k<‰«odi –Òu=h"™ýsìeišÐrkd›rR`Ó—uØcøœ‚wrcYšFx³b šÍvîc~—2t%gß’qQi´6j h¹ŒæeÐb†Ž7ee]fŒàhŸ\芴l¾Y¬˜isX3x?ko\q}ço%Zbzôe¾NÙqŠ]AOëa[R™IðQ¶JõD VyP]Sg[Xa hÇ\¨X´h*^Nìs³j±Rêzßu“c vkthðm¢lÕ^Šyo=X{v¦d‡R»n0[{K‘h£U8FZp§_žHxâphVÚˆ–~‹hÞφúq;‰š‚nÝ{¤t@bkr&i7[“uËk^`,¤u gAŽ m‡Ÿ’Éy²ž=„Ó®B›¯Ò£ ‘!x>¢¬ŠrE¢iŠ&zá¡ôˆ‹ƒý¡J‚z…˜¡¿~·¥‡€™ˆX­ÆÁ‚[©Ö}–|Y¢ûy,w¸Ÿœz)xàž.|D{g›yœww—.uq9’àq kýŒÙotg>‹imXiZ@lZlI~kæhŸŒ£lªg¥‰zn¦dÚ†qdc'ƒovl‚îmÎm’{}¦kïŸQ•€wyµ§3}¸×¦yµ+ ´|ö©ì™‚ìœ"”‰„ë’ÎŽ›†v…Y‹*Šq{„Œ·Žûkø}ønQ‚\|hOE6K®aCrIÆdáDHy_-EËDZMEªCþXŠDØDy[…CEEÞ\C„E°_ºBÀDÁ_uCÃEQ`÷B FÍ_QCJ¥b|E¶N]qËEpRyx8F‹RïrDÅNNp’A[KÏsÕ@L sÎ@eL°rø@ØKÌqÇBsLMo·A)M¡rFB@Nw¸C3NDs?GšPqëEçOIoÄDÛN‚ofE PHoóF?QAmHÄQenZGìQ×pFQópLGQR{pFÓPjo—E)QOrÀDP!r­F3PbplH^Pon°GÉQ¾lçHãSai5G‰O‰fBH4hä@èD'll>^Dbmz>G¹j?ÞI¬f·?—LéjaAïPæq’AZPSuh?EMFwË@ÃM:xG?M v»>ÍMuÀ=qM“lðJlp>¢HÕq ?\J¬o¶@žL!iÏBM¥feBõJÈhÝ>pHðkú?AJ mÕ@^I*m©DCLIk%E†N•jë>‚L¼nó?üLRr¸B8NªtD?sL¡r®>L±o8>JÃi±@fKŠfà?aJôcõ?=Kxd|AÏLéaã@­LB_Ê=²J}^¶=ªIZ(;5HNW:ÇG/Zl7üDòWZ7ÜB‚U™8AD¸VÎ5zEƒ[Ù9ZG´]Ì7TE’[ž=§H ]¤?ÐJ“\$DÛN©`ÀF½OcDÀL7bC¬L]b9AKÝ\9K§QˆdÆHfQÝh%EWP¬m•>pJ÷iÇ@Kÿij>ßJbgdBL„gEÝJiòI>X¶AôJ¶TÝA&LR5G…PZ\òLWUcbôSW`fÛg­o9_Êx9w„k|˜¤’6|È®Z™¼s…¡yÑQS F{]UT™Þ™5|1«œ¥9lÍž,{UF¥ä†Rd÷®‡`룦ˆèOX›@‰äf.“‡çr£•&…ñj5Š~ë`}y¶rfavnæeXTçx|kîLŒÒ}µ]U–-‰—k÷–;Šãm·€RqØX `ûQJÍaµYhR `é`Rj`éd‹ODddZV¸Zº\{PYSÐL^EcKTŸM×`oW‘[Ùasiud¡mÌv´Z^deXóWøbÚsbùh†ämn¢çok[– rúfe™ s]aq›òtâ`©œÐvFd€™yvfÌ™óxgfî˜)wj`0–#tZertfâŒk~eÀ‹•c¯_7ޏbÔ\xŽUiüY]‹poàY§‚Yl#Y¼{ên `_~øq0VxÏcLQƒjj\&K>XP`B_MëGÖ>ÏSQRÐQÅo*ihmSd*Xºgä[ÛLÏiŽ_#MŠuárãaYvay”n¦t†riœzºiªNë‚ oÕDᇵoD—‘ˆx/Q´›Ž€~YŒžjƒU·•E|JMê‹zÂT/†¥vÿU€7q@Vß…üsPæ„ÉoÅIi…`oKMY›Ünô ð•jtÑ…•r{Jšh@S}<']°MªA½[qO·FÐb¦S‡J{_OÐ>h•R/:äwcþDú|hÓD‹ßw—KЇwŽKƒy&a¦<`rËUø8ÞyØeN8}øhâP+Ä£hwíÁŸÑg“¿V÷gÀÈœÔm8­œan˜Ã°7n3Éž`o!ÃyŸsjÄI¢Pu’Ãg£Ôt޽WŸøw{·=fzp²K›QuÔ£ ’§j·’J}hZ3„^nàMÆy×dóH taeHEt b9Hˆub#I}y½iñSíˆÛ}Ül%“(‹mv~w†CsšƒT}sr5}Âtõk@xÆj­]—}çnM]¬•ÚŠ†t¶¬žTƒz¸¦½†Û°›¹X¥¯ðuð¡ý‹vE¡‰U} Õ„û€œœW}=€©›*y€ö ö}¶{ ¡qxErô ®wq yqrñ b|Xx- ”ø}B™Šx½u½”’tlo;Žžr.lŇroñi:†Zlzf‡6j=coŠ‚mÒg{Š3o5i"Šøq]lóˆ°uÛsBˆ ws•’Iêm0žÜGrP¶Ï¤Å~ð»´¨¥{ »Ö¢3~i¯AšU‚¬Ÿ–kE•¨‘³‚#‡%ŠÔ†W~ŠŠ0r™„™„úT2`äj)D—K|cBDAK«eîEÀIR_F F®]ïDFD›^tDQF_ïCŒFp^¸B0E_!BD<_»BuD…_ÚCæF­`@CSIõbEiM²m^F2RôtGvSÜq™G—RSpDéN[rgBOM­rAýKØrî?gJ*r›BvL€o±BVMp¯B„NétÎCOÍs'E5PºpbF‰QnkFpQoFR•o—FR8nHîSIoÅG8S5pVG¨RRp×H¼SKo2FGR,nàEæRqÐEJQqIG¿PpG Qvn*G}RøjEI–TAhVIàP;i/B%Hlj¡>Dñl">áFˆn¦;G¨j>I!g¸?ñJi'@›M7r0@%NÐvs?‚M¹wÝ@£NÅxÎ@rNüy–=tL˜zo>êM¶v>¢Li˜=¥Jß\X@–Jú\@üIaf?0H>bDAGI­d¿@îHÕgA÷HDi-B)KÉg3AÐLòfd>éK4m:>'K'pñ=žL}mê<Jm¯<4H¨ni=þI‡næ>pKUk‹AmL+kÇ@áJòkl?½H8mæ@‚I5nõB-J×p BOJ˜nbBöL¾n@©Mr“=KK1r¤AMHuÁ?K6p¸>WJnn#=ŠHÏe? JEc^?qJ!bp?¯JbA[Loa!AvL ^;>AIVZµ;#FUÉ>íH^TÑ:pG;TÇ6DW9©D“W39,E X™7mE.[ì;ýF¿\%<@FàZž=ÞG$Z?®JðY3EHPÝ_ÀFP/bÐA]LEbpB)Md+@òI±_%FBMûc9HµP.jºCTN l§?³J¡hò@¦L‰hû@ûL`hZB‹KCiwC8Kyi@HGødÛ?GºdY@šG¢fAsG8b…A*IÛ[‡?xI VÍ?ØIURFD&HZQHGaPX]ŽIÇWÕgiT…_ŽiNh~f—cÏ…u|Rp3œ_•:S´øžú…^¨µ‰7`À¤Q€M÷›wŠ\Π¼ˆïG¯£_øJ›¦d€ƒKo§‹ƒA)¢Ð‚QFcŽòvQ¹N4>bJÙI?>ûR¶SOS-q#nÇo°w»qqgqsüfŒO}n]µI—tmþXx«{õmà{˜|-n}2qŽVņrÒM‹¥tæN›“>{YGš7~»X²‚WP›ƒ´W7‘wGW䋸wZW‡i4N>~xgwGåf@X‡²p³Nǘ‰{o*©=šÜ|ð}Vax,cE¬k1VùEæb¾QD°hUW1Jµg©SÝD¯kþTº>äwcþDgnF˜ß~óRy‰”x0LuÝ\&:DfÔM¡.®oZèE‘wleFL$Ʀ¥Ö}ÃäžNp·ÀÓœ.iÃ6ž˜oÅgžr4Å žØpmÄ=žqrˆÃ*žsÝÖž‘pGÃ/žpnñÀŸ7s«½üœ\xò¹lœÒs´ü™Öió¢w±[“Õz©HÊ„ôlwD#}ÊgîH:y•fôK]pË\ÂI¦kXpMZwi†YƒÐu]c†Öy1c¨‚Ðynæu‡lYf‡jcYV›iMWgRÕ€wÖhßœt–¢~Ѷ#¨Ä†‚¸—£…n«ò–¡€…¡5Ž|[ ^Šz[žó†Üz8—æ|ªwm’ s6u—u.rž™tÉn©›vôpažšyŽt¡I~¾{§¢Q„¶Ôœã|™x“¨pƒlO‰ÛmÚh{g`ñvÔc@Zº}—f„^¦„FkÞh+‡¿nþk‘‹òvÆo ‘?Rz¶’H‡hÁ“I†˜vežò‚xºµæ¢‚ñ¾«D€¾ˆ¥0~„±œ5~¿ [˜…{Ж “º}iДЇ¦”Š¥‘u¡‡!‹î\)e7rFMÅeEþL„eIF«KÃ^„G Ia]EŸF"f»BÊF eÍB’E©`®CHFÊ`³CFp^ÚCÒE‘ZßCQGX[°BÅHÛ^¤DÌLîiOGûQ³rwFáR£tÔE;R~s&D%O¿pSAyKym£?…JìoÄ@L~téALýsúBÇL sÒBTMîs§CN8rmEñOâo"GUR¯pÂF6Rr-F StûFaS©r`HÕR‘oGîQýnÊFôQco GSR n´E¾Rn¡CpRoòFS\pI™Rún½HJSn€EÊRÂkÒEiRFiæF¤P|hBòJ•h—¥Iwk„>’Ksp@·NÕz?]Nïzr?2Nzy¦@)NïyÞ>æLõ{@=Mny<LXmê>^KÒ`D>LIñYÚ?JNa¯>DIûfq>„Hj¿?Im>@\IlÃ@®Ji4@ÔKÍhQ?ILmã?˜LÊn[@~N6lL=@Lj·ÛJálù>ÜI§d?µImcš=ÞH¦`è<¿H4^˜AûKÏ`fB£L_Ò@îJ×[;¾EUm?6IîGÁaCuKÐa2@ZI]u<šHœV°BùIÜR€EEP(KJP€]/I¨YÛh_WèbUgá{þp7h¾›_ŒÀy¥˜2…Á³  ÷ˆµ´æ™Úr(° ]ð¦pˆˆYf™ºkl3 ŸýuÍ<ΧˆËS’¤·z>ꕈj¼-îaFElq`'T¥t›jCU²sj¨Rüp4hÝNø‚'z•dN‹ f³†rqELŠ€t^TŽÇ};e‡$xsZ{k”Lâzwài`n`o‹d0`^YâPµTZ]VÙR£]Å]'T‹SN|bPàD2lÔSÈJÕgð]GP(p3pãkÚm°qpqdRfèjCh÷^Igÿuag2oÆ2p:x€Žhs@r+”Þvi‚zr´céÝs=gJ”ÛuJgB•wãe––Íz¹cß“twtc‘tdÖÚoåb«Œüg aáŒseË^J‰'jõ\ˆàp“\ë†~nÙVê~Ðh`Xg"ZÌG×RdShI IvN?G¹INrFIvMÄGTÿTU¾kmoLx`tnj—zmEPI{öeãIbwcgáNÊxösqa||ùhÊ‚ uLY{ˆ{wÝW ˜uŠÓjKšè‡weï—£øU¶›I€‚]›œ·„i]”¯}ûQ ½t¹Rü~:fK2~eHEn}udM>måjfLA‹©wÏd¾˜9„Òhx"y\T%ƒlæJ»v¶`"IoÍWFgq¢\­F6lWkEZiCTOBgra\ I»zèe•Hv‹Jz€Xk7ttNço²Y=ú]£I`/¡fSR.<’pÎ]_DÏÉø«lˆz¼žOvÀZ›¥l©ÁÚœo¶ÃžtôÄ>žu]ÅŒžás=Ŭž¸rÄÑ¡oªÂùœmPÀô›]mg¼¢š»o/»©›ìlP½Ñž;j1¸æœõjÑ£”ÅcÛw9NS¬iÿIv{ÛhÀLuêd“L©g_UnIŸfTGæqw^˜GzxWfANåvlj_Ÿl!bE_ÖcòTYÉa%S¿S£nYdðUŽ¡†Bjdª=œ z,²7á)¨–¹†+ó‹QÞ›õ…)wç˜ tâ“•|©t-Œp÷ozŒQkUjc‘†pmˆ–†vßrÔ™Oyw|uN¨_‘v„©µ‘S¶—ÕyKzqƒ®fzd;s¸_‘XÍkÌ[(Qšpï^˜Xhz›im1†orÔrDzq®˜#ŒÐ{$œ]“ȃ}Ý‘G ’({¬°ÜƒD¾È¨U„»[£6¬šFÇ¡ˆ•÷z¸•üŽOv ˆ=†â~"‚Šg‘0yB†9Ž7bi¿s=IŒOfKÁn@…MÞt¹AtMÈvæBM˜wëAL>v…AçKšp”FPVoúGïQæq@EZPÕs D/QÆuÍDCQèrÑF¨Q%o"GR"l#G'R"kéDúPèk»C'Q³l3CHQ²lqFRUmHÙQ‹kÚGiR l[E^R¸l EyTôjÖEÀVÄgÖDNPPe;?tHe×;jEXgw=‰H|kÓ>íHýj?½I·k?dKsqw?hM0zä?sN}¬?dMýy"AŠM yþ?FMUxf>$M‘u/= L1nD@GK_ê>I˜Y™:2Géa¨=pI–i!>>HkG(h¾?èH•gn?âIâeÂ=…J€fì@L÷j»@ŒM}kÁAÒPŽkAGQŒiN@ O

7M8]EANÕ]ªDLPGcôD¦PnA²MQt¹AtMÈvýB KÑwBÉIotC~K©r¦@ÄKÀp¤@¶MÄn9?„Mp‘OHe_p=3Hõ^>ËHu`e?žHaÊ@àJ a´?¸J*]m9_EV¦;ñE®T“= GÃTè9¶EúT6VDVÔ9[G"Yš:†G+[šc®? KÑa¸BÉL)b¡@•L^!B¾K2_ÜAJ3e–BÙJ.i ELK]jÅB£HEf>@_H³aD@¨Jü^´?¸J*]±:}J•TQF©K›QIG#MMçPSÕ[6Ja\Oe…r²y.s¸’^†¤l[²è›jT°¯ƒ±±‘žËƒiµÞŸ9z¶gž·y±d–]rÒ õ~L–#o3š $‚ÚIXvÐ?HŒj[#äz%Yp;ÙfÕXWH¡b\èMÅ\tV¯MÎkUcYL“ˆŒp‘œY“u“‡FuãMZ…TtXÈ….ub2€sžZôy h=Lçw–m­^õq(j%YÅ_—TLML‘OØO7N°[`‚[aHSÂkÕ^ÏM¦rÄY{NUji_¼Lm|n`MQÓ€erS–P„^Š“lÔ™½ˆÇx“˜×ƒwB”õxanô‘tuÖmD“·zlsóêsAoÀˆhj—h“Œ.n*k»’Mv_qÈ•Èzjt¥™¾„!}6­¯šË–xµˆ¢¡dš®…Òƒ,‰±qqk]xÒgø^½içZ/P,mò^ÇVÂ}3rgrð$1}$—Έ5zož”;l¢d™ƒ¤ ˜ë(¡ß“†{¨©—#}`´¤Û~¸º£ù€w¯ËW„Г3x¯“rL†¦ƒÀtÒ{c„ž…ÑtõG‡Àc÷lyrÝH÷N±b”EúI½`vDxGc[LCF÷[8B@F¹c)A FÚdiAßEnFÉd¾@aGri›A;HØl­@BH2l5?\HÏo AM$xoA'NÌz D4O¤zRBÿM‰xRAßMÓv@¶Mªs¶=K kB@°IâWE>YHUJ=äH ak=4IRg$>]G|c??ãE½`Ë?H=`è>þI¦aF@çKûeBNôgšBP¤h-CðQTjÕD6RÈg_BDOCcASM¼Y@CLÆWfCkN”`oCãN4mÒ@_M¬tANwïA'LBx A¦JÄv¥B‚L1se>DJcm:@»Keib>^K}j|=µJýk>²Jòft>¬I0`>mH7\„=’Hh^¨:oGXb)<}Fd…;IGöaä<I@`Œ7„DáX§9‡DcW,<FW >IG…VÄ9¹E+UÜ:NG4UßEHŸ`{BtJ|ehEÐKŸhòFûIDi®B–D%gBäFdX@EJW_Ô>²KW=:³K%PMELQ‰WPREŸQÏQ¦IÀsço‹V>£çœIä£N™ªtóˆ…sÿDÇ|*l¡[2k!_X…v…g-Qœz)jNR}·oŠ`ÉzpR[^PT´F@HKëH¤IRSëVM_ŠQÑo”iøW x%htXDjv_QLÄpk¯_Eq©kbggYÊP"ma`:a v=kSo_zím^s0pãsƒ‹sÃrë3rcrÙ‚çoíl¡‹õr\gœ§ue¿ŒsŒ`PŽs b”ßqÛX£‰¸m‚\#‰VmHcTˆšoîeˆ\o•c.ƒ oea¶oc T½^T,HéD»Eü;é6LC6C­7FoF-EsLçIÐFÞK"H“H‹LI)SëRMñiËaNvIftL wkeLVuUaªL7yÌdˆLJy]c}Lôwéb'Kv„xvW›h‘tv‰–Å…!h>Žr€Rÿmu¢RC’†xýR‘Òw´N†ˆÄr•HȇÀp5K[…TmyF €gãA•|»e7KýzžcS;~ºb*N~©`™G½`¹?´Eð^¾@›Gl_ìBêKycåBzMf§CwO”fvB[PØf/A0ODh;CÅN°g'BfL³c¤A~K¾Z ?©IXfB²KiaúBM¶j’CêM9s†CÒMáux@L¿vŠ?èJuö?LýqD@xLôl"AuK[e%@J‰e¥>ÛI|i~<HdÏ>IS_ËC›L[MMHWd\9P©h [ÿJocDUÒHsjŠYMu»báO„w:dNUwd`hJTrïNÄ`k¬“Ñ……oY‘ w`S®—jX]‘w­J¦Ž’tµK7Š*v©Lj‡ süJÒgi«EózM_(@qu‘[IsW)N{à_ÑK›{Y`8GGxo^ÞGqÙV?Fžn§V C]h½P):û^@M»BÎVÉHÝC}XƒHø?¢V1F 8X JC;B[ÌLRömVX¥=¾mZþJ næ^ÇOmucJNsmêe K¬oCfJWzNm÷WEºsmh_|}pÐkZwpoynw"qyl6th²\V}ÏqZe¹½ƒ:yQ؃v͈Æxzn¡ÿyòq!Ÿí‡1yŠç‚ q7‹mW\䃶hi\/ˆq:f°xÞj¿•}}'o(”ß}qõóy'mH†¥qŠ_Ɖ™x$d݇úz+i4|Ük„aatW`©Xëz§i¡c€ˆ8sMe¡“N|oc¸ •±|e±í¢I†°ß¸{¬ÄšuMªºšv¤³–’tŽ‘ÊvÆ„…Ìp{T{“gÈsVzÇc0{܃%kMr¾€FpôgÈymvˆb`o¿wŠJLQ7må>)A€dA?@Hb-BëCÓ_ÒAÛFa`AQG9b!@>EKaUA-DÐaÍB¼DõcøBØC cD%D$aBDUD”_HDmF×`ÃDÔJneÔDoO¿mBcO‰r„?ÅLFrü@hM8rÝ>L~o3>öJZq÷?µKçwÑ@KÈ{¦A°IWyŠCÏJtuDÒLspØF@OÛo%IBQpHbQq˜E2O3poB7Lòh/?[J\‚AuLÚZã@­LB_»BŸOObB¦P–`ÛCùP}_ªCFPh`fBP,d”@ñN)d®?äLÖ_BNÄ`}BoN'bŠALœ]NCºJìZdB.GªZ]A E"^ BFçdá@¡FÇk¹@*IprjCšN'{«@ûNŸ~û>ENŠ{c>§L‡v½?QL¯tI>}Kÿoy>ISd­A:J4Xª>'GUV;>ïF>[Ï>GY™A HˆZhBñHw`AJ.clBçKudB Múc@ M±blAyMof?BÁLËgœA‚JrdHA½JÖ^o@bJõ[;BK¾cÊE¿MOjG£OYq¿D}Müq7D Mûqn@L1qµFYJHGWK}I PàPQNïYÄWKPá\·Y`QtO{MjKQ¾O~N,[þZÚS h&c]mvßtrívÎt nãuŠr}hÔu?pwgx#oégS~{pUlì~žo htr8eócgåYø^Ore`‚\G}Ud‰YÑ‚j$bd{éd"_[t¦^¨[Ìv“bŸ`›wje×dÕt d8`öd}Y~PUI¢IND=ÆE]H>­G$K7CDJ Iþ?óG»Fn>ºE]BÔF{JãBB^°Y¼LÚd˜Z×K¤[ÒS7J7\KTéMlÙ_ÇPÇseSPÎw€eóIÚ~ÅniJã †l c•u}Уï”0p#¦•…k¼–€,QÄsúF»‰´thJ´€Åm?JZwA\ÈC(uñWéAêmåREfMvDsÆXvÄbVL‹dÓQõ?ê½Bœûp7ÅŸ§l!Ÿœ´iÙ¿Ó›.lïÀš›oÂÖ›­p_ÃöœånmÃïgkÃpžlíÁH¾l€À(œðh¾A›çg»šƒnÿ¸™Qr©·˜˜jpú²ó—Äl©§/–(pý›9‹ˆf)ФqE rá[ê>zmZI‰t¶eHRùy pÑVéz÷qÐMGxûk™H{}¯m*M´€ão6YÔx«k]znÜey`ÐlNcž`vpßbÃ[|wÝjŽcº†äy“u_K‚µvw“ùŠrn<¢×—BwT±4>ˆk£~+~Œcqñ[{phLUâ*lÕ^˜‰ rugh’ïxJnÎŒ7s¥gq„ÁnN_¸}ØjLV™„ÜtlbL‹€Önm‰"}9o5ƒ¸sñh8‹Š{;r“+ƒ…sœŽßy©]™×Šo”³Q£+†´¶i¢'¬µížˆ{’´@Ÿj|&«•œê{{œ¦•Æ|Û‰9ƒïp¥qÀt{eFs©~jN|Ö‰{q`s÷\rÒcìu®xý]¢nW¦OT]8|‹AÆFÔk%Cî@HbÆB'AU[CÑDe\z@ÕDBa§AçEÛd‘BxDéa¼C¶Deb†BÖCÓa EF¢aâCIEz` CGA_OBÃI]_xCEMõjCD‘Pt@MDt¨@“Mªs@ÔLqx?KÎpD@JCtã? JxcAKRyòB%LôräAµLo^DqNžnÊF.Q]rüG_ScuF QÝtfDPOmgA’Lzaì<ÔI%] >^K_•B±NóZ~B“PŒU”DÉQõVGBîM Z{B8Ovc?ÿLqb>K$`è?L%a½A_MþaaAÆK÷]8BsIºZËAGžZ°@IEŒ[`@œEŽ` @F}g˜AuIjm»DO…v¡@OFzu?ÿMÃv‘@¡Mvs§@#M`ré? MpÝ@ÈKhàBPJZë@F´U\?¿DØXý?õG¨Y’AoI³YAIÒ_ª@gI¨b(A1JúbAßJÜbˆAwKYbüA¥KÏdÅBwKiw=³Gd“A;Kïc©AúLU`6?úH¾cÓBEKBjïCãMÆpaEN­qwDMÎlý?®J+G§`¿;ðF$[`=íG#Z­<ðFÇ[Ý;÷Eš_;šERcH:mFheÝ:HBf&=*IäeAjJ0_n=GqY<‹FZV­<ñFWŠ<çE³Uz:ãD~Uí90FVq6]EhTW8ùF³R;)HñR©;ÌHTš;dHøTR=H–VË=2I¼V×=4KaUM?‘K¨^ÍCÓNMfsBGMFh&CjMfkDìL¨bÝB?I¹_hB`FX`’BEFñb‘D[JÇf'CþJ3g¾AzMMjD)Rn"COb/AâLMU#3aHM¿JœSËWEs;hTb¼œ9މp °Ü 1€e½6¦A}tÆ ©w‡‚€¥š‡V³˜oxX‘)…;aó…­\ÂJŽKTMЉ¢jŽjˆÉŠù€?–‰Æ¿–Šãs¡Uwœ]UŒ“m„D¸…°iù>z~æeëBèaOR3JþH%IQMFP7R MÐlßg°N­wCkfEK8E”JåLÏBHòLË?%FÑC•C HW;òQÎQÏ@ÓZ]TùFñS^QPJÒQþT¶Lí^M\\NØpf‚QÚwgÃL±€pæQÔ”t‹ k}¨dœ’{O¸©Êdµº¢ä{4 xˆ^#‘kt¬C^жrüIz}©hÒI¼pNVØ@t¶Y)CÐqzUÒE‰h]OFBµjpS…A[w¦b(HH~Áh\N\x;`êK;l¹TDˆ^ N"?UéF¹>‡TÂF±>ñU6G;VXµE¹5:WÃG‡1c‘Oi>ùiÿR]Fìw)_(Nud[M;]]LAxº1œÁnÆ6£Lo€Çâ¢VkœÃpžun#¿²šp)¿ ›‹p¢¿d›Bný¿7œAkÀŽœn¿Qœ¿qP¾›šµj¸¼6™5fg¸%™No·´j—øu³í•Ìs[®” l¨£gn Ÿ‰ªhgauÍE”vÃ`´>ÔrbFJ0y"kDUB‚Vtê\“†ëw[Šƒ¼tFVí‚âspV9€pœS•wõh¬Tèln`cZ™hhW®XšqgZ¸WýyÑbb`€únNoŒ=s§ ¢œmמ>ÿÕÄÀפ߿i#“ër!^ù|4dmOç~ jÃZ¥€Kl™bžƒÚn³ilc¥|øgñR4|(hÔM¶‚Ðro\6Žš…\r:’YŒ©|1‹ˆIs]Ž?€ÐqW”'„Ûsk‹v~a×îy`§™•:v2µ^Ÿç|À³=6}æ·e ~€rµú£ï~(¥ê&À€oyâw_|TjsN5k®z$‰ßvbts„ }ðg/y‚Ýbßu˜ŒJ_q=ŽgK'Z {hBZG®dÐ?»@)Y@BZX‹A`EÈ]­C"FÆawF FLa;F‡EÒ`áC$EuaJD‹ETb‹CE=bùB F‡aRC¤HcÕD‰JqiEANßpÕCàNçpcAGM`pÌ@ LÌpHAÑI±o˜ByI´oóB¶J’sâ@BKhuq@„L|rÚBlM;oÐDNPqE!P¥uhDLQnwDõQÛuéEÖRCo(FõQ£i?@Nvf¿AùN6d EQí[ G›RTU]F¨QW‚BXNë]AuLÜbÇ<ÕIñaÏ<ŠIµaD@ELhcÀ@oL¦c0B­K7dOAvJÏ`>ŽF˜_V?YEà_¿@BFÚ_JAòFÄ`’A•Hf´C¡LÌpDtO)wˆ@æLús7A+Lqqþ?lKÛoã@ØMo°ANj‰@ÅJœ]†AgGãU#@[DØW?_E]N@ÇG_W@ùGÚ_^AˆHÅ`CI¸b(B(I¯aVBJ4_ÈBþJ#aÁ@DJ,cx@­K¼bA„L­aÎ@1K¬^Š=GÒ_AB˜KisDžOpq/DÚNŽrDLpkãC‡K²fºBÊJikÞBoJqoíDÚK{m¦CØK[i?îHbÖ=H=Y:ÓFWí<~GÛ[Ä;çEÎ[ð< FïaÐ>‡HFe =ëHqc^?J²dL@jHOa£>–F]ŸyJW9BÉLR^EZNe'DMj³CaL j‘CŽL—dÌCVJL_ B)Fð\BA²Còb??øD¢fÙBL/k‚F°Rm•E¢R¡eC‡MÖ[C€JƒU5mMO‰MI[þUÁ†³|†eQ°žá|‰¼8¦|.¹l˜3dº5—fqý±Ù—˜xù´ûš}|š“Nq·†u Vƒì[Mã‡gyÊrω&‰×}ä†}ñl–y‚#lºŽèz‚b …ÞkI¸ƒÜl‡L|åpÆW^NT PiG4H‰NÒSUQK‰je^HGÒl·\ÏIåf3U¬Nrþ\VLp~q…X.|ŽzŒd…,m$a„V]MèŽeic‘g‚Ñ_ d\óFH|J´EcOœQ[OzQRàNVšUúP¯d‘]X`fYŽT´N„N?Só[â[Õ_y_?bbÜ`aÿ\_yZ’S h]VPt¦jXb½zÊs4l¡{CsÃnqx=qÒmEnõe(g+g?Z6`¨n‹eäW7‚_p~bx…9na¶wiÏbúc8V”Yµf[Ë]êmà`z`4q1dûgEe£[YI³IÎJ%;jB\G^@BF MGäKxPGÖK«R±G\I˜EîDUKú6ZIïK(7JO/N€@iM^LF¥M¦P™J_ñYšLNo¨eˆO¸zâiÏP ‰Êx¥[t”ç…'a§£O“Ûh6¶§¡”|Ò³ÖÐyÿŸ³‰)]´”aw{CnŽvyKÄ‚|n>IÒvåb+B¿tÀ]:B®w¨^HþsŸZäERr¿\ EçzzgVJšƒWonR*Cj^M`yïesJlVþHé<#T0GY;ÃU°E>c“OÂ<w¡_H©q[YýF@o®TåFÞjˆQñFÆWîH->®Ù•Ši;¿UŸÂnÇo¤ím"º|p¶¸–qc³˜• l·Θ½l7¸P›lÒºœÙm¥º”š3of»ªšni¹x™Äf€­M•:oN«Ó‘²v®„’#t»ªç’¸jå¦HÑidžé‰Äb–Ž`wóF×wôb³@tþdzK{˜kTöƒípX_ˆ%uC[v†ÇvOai„:w|d…}”o}YtqÜa=O~ld^óW”iàWWWÜoêWÆSšv±\êW€x`e)€VnmH› —z}WÙ¼€‘ìØ9¼ò‹sÍ¢>x W€ühU‚m[(ƒJn»]‡†¨t_iƒŠÚG|,Æ…ã€hqHbgz†dçN¢{Ùlw\é…Y s¼Ž$‹j~¥Šsƒ›s}‡®wªg“‹½ui‹»pb¢‰ênVÉ”·}C^8ž;rý‹y"ž®vqM³ì ÒzT³È¨V~Ÿòšð|Æ„÷„¥nŒmx{Ojn®€yvs÷ƒ^„¾p{€•ŽZpq‚Ù˜ìvô†Fœp{pŒ«T:[ªnÔ>ô@_W~?@»X]AçDì\8BAD«_¯EfD§`DFýDõ_ÍDuE¾_ÕD¬FL`ŸC¬Fp`EËFTcÞCcGòcwDúITgEEMÐkLF¨PømüB¢N›oYB L€r›C„J»q~CK”pJB÷Jqº>ÂIûo­@ÜKncB LinREcM±uŸC4Naw˜B P¼uTBÚQârÄE\V¶oÔEU`n[CÞQoyESÿkG$UñaxHrU·ZE›OòUK@’JÇZ?Jàb¡>žKGfu?cL6fáBfNifçB?N-e/BVNÄe=A:Møc>ûGa@áE’a*AsEú]ÆB[GJ]C!HÏdB„ICnüBvM×v¦A NFwŽ@LKuÐ?ÇKòqÃ@NAp–AñNkŠ@gL=d/AfIJXƒ@0EöWH@E^£@šFä_?ØE!_&?ADí^ßCºEîaõ@¢FOaAaLÓ^AêK*[­@bK}]2?OK\ž>OJ¯XP?hHW6@HC[vBrKÇ`?E(QZlDC PŸp[E_Nmm¯CšKül›BgJ pÚD²KžtyE×L´p6E(MmIA–J©f@²I]Y:ŸFYâÛI£bS>¹G¼`9>Gu\l;^E+W¤9;F–X«8ƒF0X¦:KFCV„8E¯Rk8ÍE,Rá7xDšQG9VF¦Sb;ªGBVª;=H…Xâ>;IÈVù?ÿIX¯@sK€ZùDÌN{_¬CEMàcSB1Mi@B¸L9jdBL°eˆBKJ bRA#G˜a@„DfÊ@&DiRD,Mrn'H¹Q¨gûEO.Z-D7KCRžD§HQë:fSüUY¹h+ctŽ%‰Ôla³¹¡Â~ݽ>Ÿ2r‚¶þ’B^(©jßAø¤Í€QP‹·h‘8p‹£…”‚gŒ„)~5[ªgxbÜN8~Æ{ƒo®’eŽ$€ C€j’ƒi5‹‚xÅ^)yÇ`ÞI¹|"iÁU{fr(cðe*^ôTiN†M(NÌ\SKq¤_çIn_MÇnòcZ߀coÃUR–cжd¤šŒ•>|¾›‘ï‚ì•C†;ip“Š„•Z‹–~ÿ^Çsi'N\NîNMÆP¨QN‰XVO;bØ]ÔV i[_ŸVoKflY©_ÕWIX#]#^]Ûb&e]f¿k)nQkÖccoa-h]°^“kí_«Y{erBkÞ|ÜtÌoÇ{¤tráqhWhñiõZU]bmbyXq†ju3iuÑzSiz‡Ìwyjg8Y´V–b—W^’j afGoÞf‰hç`wZ&XKUMaP¦ByG…J1MèOPP®L±P^SŒK‡N¶RÛGºH'EpJçM>D)IÌ:E•HX>OLÅHGÓSÊQ'Mó`sZMPjaN|lbQ¥d€sa¨—/‡c›j†’V+¡ÑŽIgDžE‡S_Ôšå€^S“0v&D°ÒxÿK‹ÃxK‚{mGÌw,`®@*x`)EðyŽdGD|ßhHÖ‚oÈJ ‡™r€N 2lvJ{ h7Kxw‰cáIyiZTùDaaùP>DpUJ½@ TçJQ>(f½ROBz>e«My=c!MÒrÚXoG~i Q•AYIN;ež¸‹ÎbB°$˜”m™¸f›pn¸¯ó•ÊoN¤0‘+oÔ¡(•i”«ÿ’Mj8±ø•álº²Q›slº[ ftºšj²¥Ã~dyšôˆ2j~žc‹&qN«Ó‘²vS°´—„sX¨G—ÊlíœDP`ÜŒ#v¸Huª`2DÈq¬dÚL‹v~h.Mð}¾jæL;€Ól~P3{mÇW+udi©Y®nµ`PÌgðWKsh¼Y@Î=ëSI@dC\¤A-Eö^®EòFø^FGFë[ˆG\G]U|H I2U¬EEGØW2E.G“`ðDGH·d-FvKegÏEaNdjŸFÄQ¾n CàN p/B¹J¸r0D'KítXA:Kõrý@aL}r…?BK’mB~LlBLr­B¤KzBÈDÃ`yA0EYa}BxFÂaAaFèfB0IekÌBãL£r‘BOOAv¦ANïxY?‰LÊwn?æM^w7@bNYs”B®NziCKŽ]‘@‘EjW @¨DsZ_@TFÚ]n?ºES_R?|D\a¸@øB;`u?ÃDgaR>áI6aŽ?K©^ý>J _3=ÿHÚ[‘;H„Uy?`HíTÇ?nFHW×?wG’]/CÞMšiâAOqpÎCO²oCÇLýpkBÉKçs×D«M¾vPD,M—tUCÚL rC­LmPA(Këd•>wI*_Ù=H`Z†>îEaV¨<ŒCùXØ>éE _â>OIÂ_Á<#HR^š<‘FS\{>ÀHåX:ÕFƒUŠ:GXW¥9±FtW¡8mD\Uõ9‡EjQs9ÜEªO8DÍP9GUr;J…[g:IŽY7>áJXW?®JðYGAêLƒa¹BëMˆeÒCeNg·@ÙLŠgSB1MiÿBàKäe!@ÅHŽc?EHvf`@ÐH>kzBKHnyEYOfosFNådþB°I T•B5HLéHUMéLTI/Rl\°h¨t&oŽ]ŒÃtY­\[{¶¹§š»gñ¯VŒšL'¨iy!8c£ˆw˜<žªJ6Gû&|&Jžwæe O^[ûS÷xûwj®›œ–IØ¡D–ÑuœŸ,ói/“S}´aËwÜ^‰IÙu¦^]Q>xhuX!m¾_~M<`[V&I}a*T FªpR_‹Kfl:`ñNGvÕmbªjg¹¡›.i¤¦D›Mu奘¬‰x¤´’Ƅ哧†]X’‰i|™Wx{qÂW X VîSiO—OûLR\úWóL n®h_Çw€k._=scÂtj”[¶g^ÉS·jre1c*oÿoêp³s.tÓsOu”pýlPrdf®W(yÖnMgo}8t6m"{ør)luuBj(f€m ^{[KtÈfæb–‰ {'mž‡¯sᘹˆ¬o§qmapOÜa~UîSof}\dži˜`úc¯c“\†Ë‰ŒW|SÌ]¡C¦@|QR?tBZY(A¾E6^íD‘Hˆ`NFeH0Z[HáHiQ¦HòH PvGäGÖSïE0HŠ\¹C-F._B™FŽ_UDBM’ifE›Q±oEDBP¬oÛB~LòpÔA0Kitx@L¿v¡?FLua@LŒo«@öKƒm:@ãKvÅ?2KÉ|I@øJˆ{ A„Lrw®CUOrt D"PàpXEÔRCp6GªWm¾H¤U‘hHýS,j@GT“k^HgRai½GP—c´CaLò`æ?MJí_A@bMŽd¾ANfÝ@-L°iB¶M•l4F:Q(jE˜Meã@4FBdßBE5f’A(DŸcqA™Fðd}BJI¿fIB“JUi„AEKynô? J+t;?ÙKõy]>ÄMO}Ä?èN zEåPœp‰D”Lžb,BzGæXÞ@gEX’>DƒZS>‚D¹^@ÆEö_Ã?ÕD<^­>¡DŒaßìDwVZ>\D‚] ?ÁH„e™AÌMÒnýBGOËsÝAÂLÖtu?ìJ§sBCüMFuÂBeL¦uwCúLÿvTCžNOs†D)Oçm\A`Lga>pIÁ_›‘GVcM>²HÝbã=ŒGK^>-F'Z>&H7W`8ZF1UN9áEÆTy;…FUU_9ÉC~V);F­T&<õG_Râ=±G˜SP=³H¨VŒ<Ká[Q<¦J×Wv?LLŽX/>šJ\'?¸K³dµ?}Lzi`BÉNi¥@œLg}BL·gñC’KLfÞ@ŒI´eJ?FIhzA©KnØD PUrD*Pln;DùKîbD@úERR‹EõGJ·JEPÚI}K"TŽ_V|É‚è{³fzµ£×—¼uá´õ™qeQ¬‰ @x¥=|>öŸµqÎ6>wrÞ8R––mIA>b N½E(^QnQ] všfÑžO™·{µ„¥²|ýµÅžóvô§õ“*tÔ…Gq¨S¦k)TŽI9q‚[MnzYbE¬m_ÃEkZTFømv\!LocaGNµt„kÒZs‘ˆ?k.¥¢›lÞ¯”©z‡éªNœÈ¥«dŠ“½‘®…'bªŽ¼2[°u¶i®NSUT±TÂK\MN[T!R1K·g1aVX|ål"]n݈Q}k„v©iR]*iï]ò]lo=fÊj¯sppÚyu°lª{µpN`ôyÄn6e9{'qÖh\z‰rAhËvkÀcVt‘cIcŠy“qæm‹EƒRrØ¢·•Äxf£‚”Ôwš;pUˆg—\lQy_KT*Wc=ø>ÊZr@#C¤_B¯ED`=DæFíX$GIHKQ\HÉH1RóG´HY¯GìHƒZpFºFÒWåB$FŒ\DB•M¶h3GÏR„o‰GTHoÏCnPDo÷@ÞLˆqÿ?'LJu ?ìK v©>QKrr„?¹JÏr›?¥JÄx,@OKq}@âJV|3A¼Lž{§C×NywD€OÊp$EMRÆoAFeV>l$G‚Tôg2I¸VÉkÜFSNn°GHRÔmtHßQ¿jbDOÀeŠAqL}d´?íKŒdBM/ccBŒLÂf¨EdN–jÃGÊOûeYF´LêbFBGµeˆAD¬eƒCÚEïc@3E°añAHñbiAÜGc_A GgfBHÙl´@ßJöu?·M”~‡<ÊM§}¾CóP‡v8BíKàfl@+GúYm@/EÈUþ@¯E X@dEQ^Z@EÀ^Ë>E9^>÷Dbp=ŸD¶gL=\Ede~?‘H±a5=9H‘Z<ÛFTÔ8BCRá=€D“V™=\D¯\ÙA`Jk`·F†PíkvDmO´tTBŽM+Jg>0JYl`>ÔIlH>H0e~?H¡`=ûGê^0;óFM^§<—F¿Y˜=bGY&7»B4[¡;}E¾\²<*GCUû;ÚGùP;äDVT1=ëG%X@+KvZÙBŠM aî>³Ijaà?ôK¡j^>1Lik¨AüNk4A•L‰hÌCRLH(HïNnKKÿ\±`‹½ŽP€¤™j”]|KŸh“ûqµ°[šÞp®±ƒ’·_w£F~áDr™2j3OŽBl@9mžd’~“T‚JìPwò`‘MåhÕTEJ¨WhK¬D/XãIÚ<½mrT\D w„`ÆIíemîS胰sTb¹ž`Œ“gs’úx?JúWd?w©XX@Ë{qfYJW‡ vŸZ‚nnIâx7`Ê>Õ{ydõG>†\müKŠ÷n¤Hû~ÉhJtp±`£LNn÷Z…Gò|ãdÞEÀ†–nMFó‰µs¼G “(yUÃsBUÛyÏ`ˆJ¨k»TK«jrWVLýj­ZŽM>n`MQoaËPm¢`hOw4n¤Z†ÿ{ïc+ˆÒxO_W€qö]ÿwlÙbñ€~v-n.¸‚“r½|$q__l¹\ÿO<|Ul`ûŒ—{Ún¿Ž}•su“v†“Æžô–‹J¨S›»€Ïž€$s÷‘z+liŽqáhINuafûŽæ}Xm°ˆCymmó‡¢xJo‡‹„}s+ŠþzOtä…ûsïr`0~`x=’ì…Dx;€:oˆˆŠw6iA„xƒoƒé|5u›z]ušj³vTq´_º+{a飇ùf⊨„0càå|Š`U‚ö~6l~…º…¥{ƒ‚©‰ÅŠÙ‚4X›ÐŠi𢶩Ÿ{¡s‰`”!•clùn]u²HHA\ @r@Þ`ÍB_C.bmCŒDÃ_òDƒFMZ$G¿HU>G¡J°_9JÂMtqnMìN@uGÛHbÊCF”[ùAK»dF¹Rœm+F•VÁo}C…QýnRBŽM:o£@¥JžqG@LKu§@ýL:u7AëKåtf?`JÝvó@ÓKyALDzÞ@€M{(B$OÝwÛCƒO sOE QÛpàF5SLm?HùL~ÇCæPÌxðBSNFkÆAI¨`Ï@íDôVúA2FVY–@ZE»_@žD6aï>þDÏ`Ø=ŒD€cA=ÐCýfÌ= Eúc‚=IFê^ª:œD>W :D˜SO;ÔDWT <ŸDèVO?·GdZ~@âJ9_vCáMÆfáBöM÷qìAxNPvù@¢N¶v¼?çLw?AŽLütÅB[LòqE(N†sF[Ožv×D‚MœyÌB¤KxÁ?K6pi? Lïq @ŠJ+q$?rG•iT@KgÚ=:IŽh­>BHSmJ=tEÐfÖ?Hµcã9fErd¡¿J“hã>CLBl˜>iLŸiJAN$iJBÛL:iWCtLElwC&LËiXCÁKfóAÒJåc@@0HenA(H”isAHUf6A|G¡a¿AnF—UGLˆKrE3M&NDPTcidW™N›Ü„Ñ¨ŽŸ„€&¤~—txë³Þž“±¸”z¢Ü†9X™’;m\<ë‚d×7î~PsY2aZOt;zŸWêA×…)p\Cm˜w…åQÛ¡[‘1i1ž3ŒŒgÆf‚o#œÖŽt—‘¾…¯kŠ~ài>j$V.IË^ºMòAcj–YˆHÿb RŸHïdyVP#vÖh2X0uÐ_uEÞ€ShFŒ£‘k"´ŠŸIu­¤j—rAŽ~ëVðtã\1>/]NëC,J!F-HI]H«KìN¨M”Qê`WS+XÙ^ŒL{?#}²k Hz–6‹?q%å‚tÔo…m‚Ivôu„ósþb „¢u6_…u0jÿbàrŠih#mºaŒaši`]Š^Vt up1’¦€€£›È}©äœ xp•ñó‚:xòjÆhZ¦Nhwƒma]¿oe‚\’t lüdMvmj§t)i@bQvÌhý_³rId€ZDnxaöPpiKa3R¡f[m;c’unzT{"²oƒqü}¶nò]ÿl²b‚Ocl`ÎP"xpdöQÃr^ Mù}jÐKþŽ-~®`!·~³kÿŠív f·‰‡wñU_‘|Z€”K}^[®”J|#Y¹•õ|£YZ’|w,W™‡¸mT´zÿaúM¸nËV¡Iki‡S}Bïa3P>–[…LT>Ç`!N?@DfVQ’=Xs+]=H·wOe MÙ|bj R‹q[]@Jö^N”D¼WVG~=ª^‚Ië?õnXVIÖ‚_sVfçˆÙ}uPSˆj—ñ„b¶‹Èvw[)‡Šq X8¦xüQ¶–G‚W[ÖŽ¨w×R]rÀW·;¾d0QP>xjÞT­F»q›\J·wÙh…U\xm7Zvši(Sæx$kÙQZ}ØlÂJ^€djND‹Œ u.K1UyXGƒlsOxu•aOM}n7[LLgÃTÿJÑhY^Mp=btPÿr{eASð|âp«Xž‹—|TZÞ{>XŠŠun\„írKbˆBzEhÊtƒ'l>ƒˆt_†tðcÓRÀ}ºm^‰‰Œwðd„Œ¿zËiª–o‹/¬Î¢óŽBµ™«·‹â®ïŸ×‡! ×€â˜?„bu˜=…:qCšå‰7vä“t„r`’ÿƒu •kŠ~}uˆýy´s;Œ=€Çyላzane‚WpÍ]K}Tlª[„zAröf\|}zÚp®yoy‚nÒv¤wˆiY}{Uh‰¸„/jWŠÑ†ti1„è=fa‰YŽkkfˆÃv…ŠE‹Ø†€…üšÓ‰—†¡ Û£BŽÝ•Иvóuz‡LíKy[B@{BÆ[@+CÙ[ND˜E‹]JE–F¶]’FIC\IöL‹iQÁQàÔcj\|‰ùlliÖÏH"Mñh³@!I¥f•D3RaqøD¡V¡sDE'R”pxC"Mþm+B–J¢oXBñKsñ@KšsºA¤KÛswAÏK@sã@ÿKÿp§AÒLÈrBKOw@A˜OrvnC×O¾u‚EbP;srGRoo:IËR«iI—RÈf¬GXR»hrFqQ)hE3RFkE'T^nE;Rßk?A©L·e°?K£c]BõM(hGAþLe¹AâLí`ó?–K°_d>I‘a—= G}`<E^"?ùDk^pADDa®@ÞBcAáDdBA¸D®b]BsGQh¨BœI¿pAóKLtèEŠQ›sFõP]l´CkJ¼e£@0Dš\IA†Dw]|@‘CcâAE^e¯>‹EÞaÒ=ÖD½c™mE?e#>ìF`æ8EBW‡6¥@ØR„;WEÍT:EëUÈ=#H9U³?‘Jó[J;àG¡b0@TLóm»BâO|t@ZNÎuê>YMyw¨=JK t?©JöqCöL½u—CMéyCLÙ|9CàLº{C±N\uB@NsY?áLÇu<@÷JBr@ðH kª@îJ·i=>ËI‰nK?ÒH”t¬=Fp­A€Imó!`?N™=þaÁRHAuéh’MÉr…c—Dr@\ÃCð‹ÄsRú–š€½WP£Ó”tØ™_‹mdŒu4dÁ?aDU¯F÷R„NÞEªO I‚F\O‹MaTþo”kGg l(_JðyXmõD3’K‡¥pL‚ƒnÀmm/TÅŽ†ƒk)’íŒCzñ˜s7œ4ˆÇgkšä‚¡^ýƒÒpdYNqYeÂ[Êg]þ\çgI]×dGmyj:f ‘øŒŠ}©[ž°…=©%Œ÷ª—žöƒ+˜NjoÙ†ˆvETÕ—fŠDq ‰Á{l+yo8isv˜jpfEu•hsbuu2eŠ`ðtb[5u2d,Uueh˜Uqäp­_G’Ù'‹‘—›Œ¤†‰œ,ŒqtŒÑz+b[lÔ]KFÎm’XvIiÉR½Fs]"Fä‡Ðw [FWÍgâyhÐŒ|\±Á{µVâ•©VÙ™©ÃX´˜ }ÁW˜–"y)W‹±qhUá~–h‡Mín¨X@G bKP5Az\ÌM;?«b}PGDcJP±D`5Oú9Í`èO?Ýi^WœH¿z‚hUPCzÍeL¶l‘SVG^K]A`X5FÔ?PdPXEwf¢ZLyMm@hY”u‚Ïd€•F† oŽ]“¹‚™³‹îvã2ˆÓc"¦we›0…µ^~PflD?kàUECWiîZ~M]hc]®Pr_i½Y|gsž_~övWcU‚Â}nJ‚}µi,ÌrcUÓŠwºWè;~Š`I‡ªu€Y¶|>lÕQòuËc NJkêV¹K¤gsT9L÷n[]ªMèu¯fTQ}~ùoYŒÑy\ž`yU¤‹%s2R烜m/UK‰,ycÕ•Û‰ìrÉ‹œ{Åf%|Yi¼Ux€l\†çr+\‹Ä{{c™•nŠšu¿§žx‰C¯€¦9š¬Lž8Žù«»™`‰ô¢—’UÈ¡’’|™ª@˜Ë’žýŒ®s7•³‚Mpk™¥Ž…g“ÓŠvî?…ˆ{;‡¡~9êƒuÁ‡·z€hUxŒlñ\ðvwpûdD€·}çqÃ/€%s3uÖwÖhx#vèfÇú‚o@ŒPˆ©r‡øƒn ‡ôn:˜Œ9u¶‘zŽ‹‚„—a•ÙƒœÃžˆ‡Ö  ‹9c›6xàvÄ~ÁM|Nœ[G@ÝD"Vh@ˆEÿWDC{Eã[/E(F¦^lE[IÛ`JpQ„q…`;b{Šš\JX‰‹³lj1‹5hk£DçNAnÀD¨QŒrŽE#UtE²PÃoªCÓLŽm)CLCoÎChMîqÇAŠKhrAßI”s @}Jjsò@nL>pBÉMyoaBDO½rè@ÜOKw/BIOëxëCwOMuNE—P8ryFHQÚm€GRijF‡R¸iPDRÇiïEÐT¥l¸D{U‡nÚCöSmwAñMHeb@jLpd°@$MÇgg=Keà<7K"c=nJ¢a×=œHÔ_‡?H}_š@+Gù[¨BFÈ\A¸Cò^¥@‚Ca¿@pE&cÂ@&Eéb(B4FdÄ@PFàe?A‘KÐhEžQ nÕEeRøm)D”LÛgyAFÜ_¢@UDÏ]O@çBfaõ?D½bL<_E¾`<4ENbÜ=sDd?¹Ffˆ=ðGñd¦9!DMZ†6UB T27cD‡S9¨E‹TÚ9±EÎR¶<_FVL9âD[^ë>¤JöeTA–NMnN?ªMuÕ>ÝL“vL>úKïr˜>ûJ™r‹>qJÎu†AÃL{lByM;}*BLNØzVCåO‹uâ@µM„t¦@MŠx A LŒu‹@¢InP@€I!kO?YJzo·?ÁJAt‚@yIárN?TI¾o„>™Jqƒ<IDsE>eIÆrS?ÜInp¢9•Gmz8dFì]=×HùMpA>KùOqAN=]úAÝN¿Z¼BúO‡_ëB§O·aGDìObãEáP=f8D»NÆjjCKi=B HbàB H`a¬AVFd©AÛE c÷B¿Hw^ F˜LÜWnJ8O!R¬L¶T“W/m5r n÷‰…¡wÞz†nΟN™o|L´Y§¢ƒx¡•–x:Œæˆlx»uPu®hZzkpd\6‡9v¤Q‰„rkà2ĉÒg¹+þ‰idN,¹õjè:°“vzõS˜Š{o¯’=‹5nV’R…ddQœŽÜs/ë‚/h°nõVACQXSHþ:«_|KT2ønÈS7Is™bqE3XtÝM«{.nÙIpŠ^ÜJ4pãW’JT‚ÜjMn‘ÿUe,©€›¦zÇ•ä‹fÄh3a»u6nˆMÈk½[ÛMég½]UR …=ƒ¿wI…|§eØyìl\L̈Œyre^„[t-e{ÜgWÙ‘þ…ík°¥-›{ù¬³¢;‹®¡¶p·¶mŒž!‰Ábý|ºoçYud ZìYŒfƒ]Üf³h)aú]»‡Imê¡c™…ǪSž}ƒ2²]¤jƒi®tž¬{Ƣŕ[n­°žP€²œ‘øxq†–z$o÷u]i¿bïsªgãevuÇfTbkr_XÀuîb'Qz£h@V xœo×Up”“‰¯{ô®‘𝑻;šë’¹¡½ˆq~«Šz8ZBrr`öA€jRCÊo‘WÝG¿‚—qØO5mz÷\V’ÿ€ãd¡‘F‚2jà’Ö‚ªaT•µ€±Møš5‚÷TߘD{ôU«”x2T„ t¦O‰}òe×GLnV—BdàQ’A¼fT EŽqN]ßJ}lxVAGgeV…CX#M>‘U%JA6lµVêIVr—\"G/sÒ\ICfdQ´EÿWBGA)_|M'CmWÅI«o?\€OË—(Ÿ‚?Š„Ë£¥™û¦äšŠŠí«f™“{§³ ž}c w’ét/… rAVšs?_àK2q\fET1l´f¦W§nÀh0Záw(qsa瀧|èo¾‹—©„xŽ€†,…Ð…p„…\xKc̈çyç`…su^[e·oSÒx gNMo[O{iqUpPOnE]QšvFhÑX¸}rt`1Žd{acù“E^?wiUž}fi¶MEˆqyáh8š|b‚‘€ƒHqœmÙTÀÞj(U«…‚*k:‘x²gÅ’†k€bª†U~?Œù‡»~ލQ„!âŽhgŽð‹{z8…8Qtuzâo¤… vî‚¥€Êvþqurklo$m]c€ßy·j9‰Ã„©q׈Y„¦oì“ú‰1pjŸˆ’†sñ—)’º‰ˆ4 “؃4ŸA«¬Ÿð€ˆè˜âo‰t*™KÀP©eÍ>ŒE¸X:>D‹VÝB“FÍ[(EËHÆ`•EÜJ©cêLvTÛrXç^…Š÷=¢Gð„ZN5R‡€›m¬mQƒ^HQÅpEZQ o FãRêpŸDNOònBLÄlå?ÝKCm÷AiNŽp A¸LUr(A:Kw?UJQy£=ÍJÿt ?èLFqÄ@(Nõsn@‘NÇyFANÎ{D8N£xŽCuNøu±DÙO½sÄE—Pm$F-RºlF²SˆmfEèRgmÞCÖQnnKB~P¸jW?JMdï>ßL¡c-@ÕMfL>~L+e">Lf">oJJdÚ?•Hé`2A$G–_BRFX^ƒB¼Eà]¤A-Eö^¾@ EM_NA8FFaB›FÉbmEØG{d_BsGdJAsK)eæCWQXm‡CÛQÔn×CÆOåju@uHíbî?ßD×_N@–C_AiE`¦Lov¢@N´rë?yM]qƒ=JYt8A{M>yØAENt{qB*O1{ DOAuÄB0MárB±LåvAJQu²@ IÌpžA0JèlÌ?]J¦l{>uJpD>×I-p>ßJp>aLÇr¾<`Jåtk>¯JNxŸ>ÐJ)y…;êI@w=vKçmŠ=xIùTBÂKGbUCZH×bîA%GŸb¼@WEŠ__?×IvXÖ@L–UcK‘QdQŽQÞZÅbúwT{°uüyuçlÕ€JyµjC’`Šëqu ì½uÖ“<†{dr7}•nÑs5wspH=Âq²‘ÿ…n⋌¡Cч'm(/»ƒ§cÂ05‹¤me>’Ûx‡Nÿ–㈙gö˜®‘Yt¹Ž c׆£uW¿ƒjt½YVsBb·N,^¶NeLÑbáL3R}Bg­8Ó‹|~GWÙ?‚O_–ƒ qP†u5c£NrbƒPèHÀfãR5Fy7hlI ¤ð–vj²ü¢Iž÷•ãuÛŠÀ~t]Xro]›{Yr®aŽŠŒ|Ô‘¤‰Dxêzk¹Tþ~ƒlKQ…yAeæRjl±TîO¿ƒDs‚_Ó ^“ku¿©½«~‚¦Ì³Ç}”Áò°´…eÁ£Üê–efZÃXrfï]{fâjNc`ºzqo_S“뇜q”¥ó—‘z¹¸&¥Bƒu¼Õ©›ƒR·b§š­¶¨Lƒ·®[Ÿãw’°†šr zfmKhŸqäcoiØrJdda\rFa‹Våu~aâP÷zgOTnz¸laLû‰ }Ò[è·@›¤”ñ¼Mž|¦§•/•ð¨™"Œ>‡t|<]ðyÚ`|IÔs÷^`Nö{iÆLÛ‡)vOd}’a‹”L‡Et¢–\ˆ9pU•…‚ŸSõš„õY—|~ƒY±“{¢V-tJzï_ŸAhj£R×?jhØSzCÁl×[HŠta…JÆucFKtñdLdSwDOR×Dì;ëVœIÆ=b@Qc=Þo _ÉH‡h·T:I8YK‚F g‡SIÆs´]FHéwUb§I¯«ez/ž’X‡ž¢J˜îŽS¬~ŸI޶³%£Ä‡Óº%«N=²W¢€Žò•ý…“uÅmWF}ÁpäX¨t•l5VYqîdP®rg Zhz¬toâ‹®Œ[†§›UŸj˜3˜a˜g‘Qˆ~Do9„rPZ‡`u?^…þu]€{Ái´N‹qò[¿N”pi]KR_vqfdR&zdl‡[†®xëm‡“„`s˜S†m‘²€³gp8Z|An]3†evg‹…Ýq§[Õsi9KSiL†Îq¼Yã‰%vf^ÉŒe}Pb–…+k7“ˆSye•i„.y'™˜„#pcšØvŸ™e’aƒÅ˜†jt´’ýtcŒŠòmE^íŠjxnÛ†Ñzõn‹O…*}c‘&‘c‰>Ø“â†ÐŽ~’ð‚Ï(Ž«€s‰<ƒbvÓƒ%zêmª|]yÇpÎtEy†tMw‚y£q´†<¶n-Œ„ãnKˆ]{ g¯d‚/h ¥ë”ÂtœžØ•W^§’R’Ç†Š’ÂŸ´|‹¨›€¹ŠU—K{·—­TD\ÕuÙ?×Eö_È?ÚC’WyB†G²\ÛB‹I*b‹E¬J e•IRMÞlXT#Sçz×UÐRD~ÇXýT xÍMéOwpGD£LÂm)A;O–näBáPçoCoNÃnRB¹LLnAíMÑn@AêORp£@)Nr+@ L±u5@eKtw?¹K0uƒ?6M‘s)ANÐuç@tMØy¥AhLøzÎCÁLÎw¾C¬LtHA­K[pªD¤OÊn¸DÐPoFìQýoGKQçnKBoOeký>»Kåd²@JM$b?•Nta¹C‘Qe¤DæPüeAMŽed@ýK0eMBJÎa!?¿E·_Ë>;Dµ_¹@ÆEË^A Fª_À?BDô_,AßD²_ÝAPCð]uCâDÎaACH5e©?JËggB¯Oám×D]TjoŒESSqlYE’MÔgë>ÖCbõ?VD+a@ÆEö_Ü=EmaD=E6dr•Jk‘=WK×sœ?_NLr¸? OûqÕ>ÝL“vŠA—Nz(CÅN‹z¾CÆN›{ŒD#Nav»D|M tAtKAuÏBÝJÒtÜ@‚I>p}A£JZlþ?(Jœk°>Iðn=(Ipo>OKfq²TLáur?ñJ7e5DPNË_þBïNJX)=-K[T.EŠNÞMù`Çh&e:€\„Ù|èwÉwÐo«o7m°aÝw…qBa͆¥vˆaj~žn,Ovv?oàd6ddÂ\-ƒè‚üo©Ÿ›ŠóŸ’Á~ˆM{‡Mˆ}Óh¬:ò}ºe4=ˆêoæEâˆ$u"HÁ‘ɈGhe”ª‡Pp{ónOÉ{ÔjÐL~×oÕdw›clc#vÃ]?<™Ã‡øV ¡5–¤rcš5Š:h›„ÞnÆNls”`™MudžTLaÝSFK6g4UE„†p"S¤û’³z# Œ’rÓ¿w²Q#(þeH’ˆtj“ˆrâ€o|kèZz‹eDG2wÅ_öI¡WNJ8B}nrXPîz“g¦¡‘¥Q}0¯r¶Ø‘Ïü±ezÐ-°C‘fžƒ‰mn=^0W2f.]¿dochÐg uým¢bmîq®_¸}Vc€­†—…yp¸¢;»%¬ßƒÝ³[§d€x³£á€–ÒŠ;qî|¬m¸i4n<[6fšpÈ]D]ØqE`-T‚v™bûUy¦b RB{!fªLøzl;C'¡£Œª~§²§›&¤¤«`¨§Ÿ-¢”ÿ–æ’Û‚¦‰¬w=^py\·Aq?^oˆÇorK;ŽJzÀ^.–þ‡–v½–¬†Ér‹–6„Ÿ_ øŽije_Aj •‡ƒaª¤uLK×gnFìpÁXÝDýp‡[‡IMp*]ÆIt`%L™u©doM½t¦adKÙj³VHWÚId>_SœF³9âV»Lí;‚eTEHneVSÖJaÑP{Ip·]²LÈyÈcìHwojIÇŸš—?l¨œÒvp¦–šXŒå¯¨¡Î‰Í³ý¡$ƒP¶@¥Á‡jµM¦[Œ«¨Z™Þ€~™ôˆËdC‘}TáƒÉpKºr#aŠD>mÔYI-w.j¿\f„¤~Ÿp µ†F‘8’x/€y‡kKwÅckLø¶nmY³ŒT|´b…ˆšsR…yÁbñIcv˜d'OŠ€ån)Y‚†xv÷dʎƒyS˜u‹¤|˜‡©t‘nÊsRˆ!yRl‚¨rÔ\\~²hÊNð|ÍanIy{j`Gø{-bœI*ƒ›l/ScˆHvý^ƒŒC~¤jÉ’¿ˆµvF”‰©y‘=cnØŒu!_U‰Çu+aÈozþk·‡þsÎc††êlêUÁ…ýn,VS‰·yzeË…IzÒh(‡ËÖv‹@‰Q€Ó‰Çˆ~ŠAˆ&{®Š¯†ävWŠ­ƒr¸„Yymg®xépMeZyx{Ew¿ŠªŒŽ‚³”*y(1…Lo8‚vôa˜ŠEz]+¢Z«kC£k–ù{•¶”½^Œ}–¾¡t Žó›yƒíŒ´—L•‡1”†]peœy„B˜Hm`Â=×AvU1AÝEªX›BåHãdND€I´jfEaH˜iBKPJEeÎMÉKŽcQKJf†CŠEëg‹? H§oê?ÒMBs²A5O pC$N…nþAuL~p:?ÝKKp¸A½O¹pû@(OpqªAcN5sECGNvs¡BFNwtËAËM vÖAŠM x¬B`M³yÉBLQy#CÏLŒv$NÒxVA%OïzÌCˆNyIDNézBjMNzI¦n®<¶G›o>äH|qi>Jvr7>J©rü?ÌI’uØ=€IRx³=RKgy->ëKõzý<}Juyé?ËJÏqfBÅLñoº@¤LIq¡?M¬p»;ÆKÛk³= Nýg>Njdƒ@dO¡e·>×L9dÁ?œIØbAEÇaˆBóFŸ`ÿBàGÃ]ÀA{HÉ[çx8eøIÉxLfMHÔ|‡q PµÆƒNlP‡vnXß„Bl…I½„Æxûiž‰ ~`pšŒxNT„¬:—Þmñ³ÂŸŽ}¾œÄŠdi~“h&K-e"T«Jy]S©Ksi_+U©dYhN/aBQ³Ir‡µsHh–ø„Ío ŽNxMì›ã‹¬g~¬Fœé~P˜ª„µ_k~Fj L)qÆYQGn–ZS>~lr‰E6LÞBì22dgQêQn~j^ZY‘Í|¹g‹ŸGŽŒq<±9¡@€ß³N§V´&¢–~™)Ž—n`}lœaûfäQ.Z‡m‰UcXëpo]–TZuœbÃV;xb(Tvã]ÞNøq^ÁB„œr?QÝšÙ”“Y›«A’…Öž Œwž;˜ ŠdŽï~âbÍ„tYQÈ~iì’€zü\ûÇ|ãU,— …ék÷–؃{lq—¡…¸e£•ïtõª)œ{}eœ‘=lîéyV€‡óp^Oÿy¨c‘Iäq—[¾HEtc_IK}wTdJMéq`IOl’XôG¤h&VH²ZM CâRúE[?9RTG“AüWûLúGe`ºPDºkÁ>3GMsêApM”v6CMMooyC4L«müALærÂ@—L‰sØAªN2q‹A¨O†q¥AiOïrºBjNus2D\N’uhC®LÏx”BŽKÒxñDM6yCL·x‰B6L wsANƒv_?‰N™uÅABQfs(F”UMrEF|Rq§GñQýmËFÀO»eõADKT^Y?Ke`>-Mœ`mE Kû`3<ÌGt_B<_Fy`þ;·D>_M?\Fš_lA9GÎ`“A¶EÓ_2A[EÂ`ó<0Eòbï<HTe¥>“Jùh¹?óLàp¤B0PÊvùAeO—tŸBCL¨n$AEH%eÊ=@D]y>%DPZ>OD¾W0>½FmZ¦9¾DaZF;‡E‘X¹<4GàT6âDVÂ9ïDuVE8*AðT¾8ÚBSP8ÄFsT+;;J†_ ?,Mblv>xM‚qx@²Oçx§?.NFyDÇMHu½A*Lux?M­}‚>ÜLn~þ>&LE|>K uz?K s=1Ißq*>OI‡qF?ŸIüoi@–IppÛ>ëHäpÇ?JrÞ@cI»t;>¾GIxª>„Jêxz?ÊKxµ>ÞJçv‹@ŒJDt›BÇJŸu%AßJyÔ>—K@xF>áK‰s?TMxoC>|MYiµ>9Ncc?Lëbç<ÈF)e…?³DÑg6BGe«BGr_ÖA¯HÎ^;KÔ]ëF•P–aðM,V‹URgMrèdx€½‰º}E‘P‘ˆ{7‹YƒÌƒ»ƒ]xvDq´fûR>IìBH:+>…K«GÈGËl`møYâ®>|•P¦x’”È¢ŽÔšäÁ†Äz·pÐgóF¬c®V(K.^ýP½Iòa T³Iz‚xußcH“7ƒ5iµ˜a„Öf`’!Œ;và™{•‰{¢Ø’àl⹿Ÿ—z%ºL¥£}§——Éqd‚¨r˜V‰SûJÕF%QŸHÁEáh^ýQVj cVœSMbHk]`V:ޏçqç™^‹4d¯jœgs-»¹¨° aŽÀ_nvþ^ù?\WµE¥EsWJ>¶^U`=àL–B£7Öj&]Y—{?sYk‡=„ p/G‘Ç~À¯¤ŸÜ‡‹ÀR¯‡7°Nž^zDÊ€xkumv^äZ§jU]Ë^µu>mhjºx®pskâu»kÂcƒyÝgÄ]Õ…pšaÔšŽ(uʪŸ3©¶Ã¦ð€t¡$–:o»€bq\dP6QñfwP”P6ldVsQžpž]ÂSuçaæU•w;cFV{sñ^ÜKÂkzZ¨Cý{¨tVNò“/8k ›†ÿt¹ Î•S€ê•´‡*d¨‚NožM3‹pxØZ*œa‹h2£‹[_;˜Ó„±]•ò~Û_æ”óßatŸ©‘IuÆ«rœÌ¼›„ŒîiO9xñW†un¤QÚ~óg§LÍq[xGtM`¢Ižm@P{w¼d’G‰lZíDôe-W›GáZxOFzQ¢DŒAjNAéAR&GëC©^Q`JUgNU§Kuva=LÚ{§fL+ydI¿Ÿ¨ ˆZ¾#©4‰¦¼H©ŠÊÀö«—ŠÁ:¬Qˆ ¼Â©"†¶ü¥U„å·á§k…o»«Œ‡ ¸Š©/Œ;ª‹ Cކ˜ËÅ|:‡ßxcY&w3j@J©oKf†N.p,fTRNvQk¤Vyx²kÿPµxhkOf‚ãv¢_‰ƒ0k’rˆ¾qÍ ŠâvA•®Œ·u€Ž’L{Ÿ Y˜=‰SšÎ“P‰ê—³mÚ‘Eƒs|‰÷xŽi‹z kš|\k‰ªr|\P}iX+uie'zÎmEg¶„‹m­_Ë„apW[†w‘gŒ”†Hy˜š‰Üy”Ecp(Šs§cüƒkX^‡íp©U†uÐX¹…,|c0ŒÇ…mo˜†Ñ~ljõyÃsV_0‚g}¶n¾—xYkvÝi[èrŽi…`Ô}wúqä™c“z‡Ú£šlŠÖ“EŽ‚‹0Ó…ô¡[ž«Ž^­Ž¡¤‡¥Oš´ƒ[›•N„ÔM•-€¶£Ý“VuÉ£ï•K{3Ÿ6š ‘½Ÿ­£x¢‘•šÆqŠÉ-™™„mÉ—{vˆGåVãg v/AHJ4V]BÎE*T‹B"D­]{B)Føi«B]G^l+@ïDKiàB`Fj BC¶gÍCÀE.juBJ—pÈChMüsFGNqzC4LÀq B¦L>u4AKM‡vkANs»@4N´që@pNtYB?NuQDNítaC MÌvàCM§wÅD*N×wˆCÓLÍw7AL4x˜?M%ztA0O‡zðDKRŽvÀFÈS€rÔEºQWpçFgQ€n¤FîOgiÑ@‰Le^<KMeL=VMcÔC*R©b>I%VŒc¤DRP¨`5@œMøbå>ûKˆe—=²H d»=lE5bê>ÍDü_ÈBòGõ_i@`F§_ @qE`Ð>mD‡`®>9FÃcÕ>¡H´f@ÜIWim?úH²o7AL4xŠDÂO‰zDƒKërBI´fî?–E$]Ž@6F\a? EB[h>pEFZÞ=!FX•< EUÇ;ãDüRØ;F¶Sx:¬E5TA:©DBU)7HBÊWz:IFY 9ãG'[95F’W«7*CøT57AQÙ4øB½Og8FöT)@ºJþ`dBJªràA KFo‹@¢InP?ÖH±pÞ>tI”q@uI­sö=#GŠvŸ>áIÒx³>0J)un?ÇJœrü@5K«oÛCáKqyC%LvÕA¦L[yr@ŽL xfA×L u³?ÊLÀkÌ>ªLÇ`@ŸJ’_¤?F•e{@4E$iƒ@/F e÷AýF4_áAGH[@fKà`wGíR*g4Nü[K`Ph¨qˆe¡‡‹Ç~y—czv–s‘M£‰€ÏqÏiQƒK·<6]F€7QE×\ÍRÂEÎRæICLN?>èOìDb=1^¢Q'F hœT—HÜt_L¿y£cäOtA_üM-Âó­ò‡3Ãy­™‰|Á?ªŠwÂUªn‰#ÆÝ¯–‰ ÆL³@‰BÀ)®Ïˆ¢»|©ß‹Œ»ÝªÈê»G­ØŽ‰ºu­B’p·¨`Ž¡²ÈŸ6ƒ˜žy“5t‡Þ}eeÙyxob]urúeAOr›cÅKÎu hMî|r‘V*…P{ÿbû‰bƒ³r씀ӄä¤ë›=‹”¯>¡–‹­÷ û·¥4œR@ b—'‰JœÛ·~?”7†qňÛv“c-‰°saiŽwÈ`€ˆ¨x…d´|[sšŠ^‡ƒ‘’šŠû~@Ž€…tsê‡ó}¥oé‘Ì…ßz‹“c…ay¨‘Í'rŠLuHhÀ‹&vtc7•Àj¦•\†ßmg”Ì‹Mr/˜¸’m|tŽ:†hr6{ˆq‹`|wóméˆI‚s(‰Â/gIŒ†t爸…|U•«ŽÒƒVœ†“\…Λ˔9‰R¤Ò‰ð±tªD´–ªÇ‰À¯ù¦}ˆÐª7¤Œd¬7¢kŒ“­Qœ ƒÆ­$œh„¬¸Ü­™è¾]»©¨X¥»¤A™¡i’n—Þ„ Žšm}YŠ —„eEm_}uGŒPÌ`èDÍHU~BþCHZC£EfHCHxk¤A¾GÃkrC8I×kCKG&jUD—I#lpDÁM»nwEÇPÞr7G Rr˜C¦Nµr×?ÞK>u<@öLâwA™MìtqAlMlq®AuMßrºBQNt¶C!OšsæBNu#C¿MâvŸC4Naw€BðM­v@A‰MúvèAwN=zrBO†y\E¾PewFFARÀt5FèQÙršFQq7E”Pn…B OŽk¡<¥J|g|=Lªb1CýO‹^­EjQ`¨BÂNÌa+>’Lbç=tK6dé>Jáeã> Gæe¬?GEáa(BáF™_æBOG¯_¥@,F£`@~Eìa"@wD2d±?—D7hD@$Hk²AJ¾o:C°MwBDSP‘yµB6LæpAZIðjÖ>ˆE¬an?%Fd\Ÿ?½E]ZÌ>£DiXþ?ñFÀW/>§E\TÎ<)E§Sž:àDMU”7ôBµV49BC‘Z¤7þC‘^ý8“Gåa&:xJïcî9FI(]j7ÄDöT¯6BtQ.8DhO÷8E¹Qb>®G2UÛAÄJ[j?;Kteõ?LNnNE‡Kân´AâKSl@Lòo#>ÝJn{@}Iöl?cH&k“>õK°pK<èK:r}>÷IqBNJmñB”Jqn´>ËI„u/?¤J¨u•>œIÞt°?rJëw`>–Jéx>tIžt;>¥I_qEAøKnVD4NEr5CèLãsˆB–M±x@‹LçyãB…Lx“<6HÒlª=\IºcPADIvbØ@ØD®dŽ@öD}f«@æFWdi@…F¬^‘AîFW'@”JùZÙFœPdiS“] cÅgmÅd,…[„ˆty’G”uzí‹–!‘ù‘ÿˆsýeGÂL×:=:¡Fÿ7Ê?zPïK¼J"fJa¾EŠz$S é‰0„^ JŠeŽÐ±Ò£Õ‹¹|êxÙR1`SX«IìPUKZE›MÍIØHûyÐoee¢§”Ez‡³É¡4‚ªižƒ€g¥ä™¿y©°$øx¹j£x}¿·7›Ãuj¥Â™vÞ„9uweØPEÜEÃKœ@„<ñTeQ)Jêe½[N:a,WÐR¸l¤^5_z†-o“—LŠoËŸg3qz­‰™wE•¹nU=¨oP/eÖXXK I’JQ`½blk±oæh\¨rûhC\¼{Ùtyh]„Yxåc\ró`(Rz€q=b›+ˆóq–ÎŽ”n,¤²™_M”ÍŠAЉ+uñGã¨ê›¢„Š›ÊŽ¨wbŠbs¤Uª{d©C²•‡ c›¯–ŸÚzгS —w’£J”'pÜ“€OiQ‘U{h½’{`ì=vW¹Š£xeZÙ‡ÿvÓWÚ|cigVÌp¶YkOûhTÁDtxgNHЇ¤t:V:wdXG´i­U¢Da§S0F\nQxIÜSŒJ@CÿQ>F>8¦^ÃP=>§gúS|Ep{YüHÓu,^¤N…r]1MÄõ´N“|Å۳“ÔÂî«u+Áæ¦šŠ„ÄÑ­øˆ‡Èµi‰>Çx²3ŠÂm­“ï¼âª‘–¼¢«Ý_Âj°WŽ}ÉS´À ÌX³Õ‹ØÁ1ª„I£q•uZ‰ÑzQ`ót=enMBk XéG–lÏ[XIrSeAL(y£nÆTU‡ €&rs˜ƒ“ýŠˆ«:Ÿ ð¯{ kŠë­ž‡¹¬À+‡k¬Äœß†’­Ó›š„ΥؖZ~³™$ŠqÑ•~ƒ9hÞ˜­†^i«›;t™’©€M›¿–X‰gž5™g‡$›S–^‚\”O €|”A“‚g•7Š}!“~ƒÂså'|ùl¢‘òDl+˜„mm³–°Wfi—ó‚öbúšGŒ™pô”æ†YwȉØz…o]ŽÔ„¥zÜšô”¼†¸ž3™‚ü¤ñž¢‰\¡-¨5˜G…M˜9`wH›o‘ €;­R 'Žd³\¦@ܰ*§l"±Çª0Z²Ë©’Á³ª¦˜Žø±F¡Š³Ù¡ ˆ3Á¥²À“CÈ4½Šœ¦´Þ®Ý—•Û•P—P‰½Œ˜š­…Še˜ðmjs¿€+L°QÈd GH®TŒB8D)VÚBxE_—CåGhe§C²IxhbCSI8i$DQIjgDK&mD¡NOqÐFÛRïJŽbBùN2a¨BO|`$@ MÞ]Ì=K \Ø?LX^@îJb¹>yGíc*?DŽaÈBqF,_{CßF]0AîE×\l@Fk_é@#E¸bAìDðfÅ@G:kHAÑI±o¶AéLvI@ZMdyÜ?LJv¢@gJ"or?"Gëde> EDVd@FôTÛ>3EV¯?FÑYŠ?•EùVî<DçTø8ÅBUC7;BüW­8DÏ`¥8G×g²8—IÐi;„K`j.jHÔ]o<‘GÖb ;™EQa-?8F”^%=õDŒ[õ=8Jf¹:ÑIŒkŽ>ÑIèk§A5I¸hA˜IimÀ>ÙKüt>L¬E±`Ö?*G%[ >ÙJîWHéPàaªQ[d`jgoviã‚„doÎŒ–Û“ª‡ï’³–.œ•C–^‹³y)WÒSkIôD I´;Û?rSRQL([[\‹Kæn§`³Fµ€9trW!Œ9†ðiÌŸÊ™àz¼‹Ô‚úi~jö_šM*dõ[ŒEÒݶ9Œ‰¬l‡õœ]«t€§q \.n¬ZØKÙgT"GÏl§]K%oâd÷LÐ~¨w³d¨•ØŽ¾€ó£n™­‰Ó¦•š¹†c£Þ—€à«œ„~³×Ÿˆw¸–¢fˆ¶d¢^‡âªœ „úŸ†“­{:ž‚Žht¤.”øx˜§Á—Í}}©Ê™'C«„|¥››„Mžµ—(„ú›"•É„Kœi’·æ›eŽýzj—£ˆ{rV–$†«m­–x’d¨“çqÉJïæi¾;,“Jr£Gr”Üzdå”b~-h²œõ‰t¥ù”–ϬQ狤¯L¥ð}´R¬“Œ±â§ùŒ´¤0›Ã~“£¬™Š©¦ šo‚zœvM}c—’»€¸¤mU‹P´¦=Š€­ëšJ‚@§÷—.Ó¨¥˜0{5ºê¦Å‡Ák±x“¿·è²§¢—xœ«¡ÀˆvކœS‡`Œ]™»vhyˆ®R,VdnçD”E>U/B¯E†U…CšH\\E0Jõa£EyJN6v¹>ÀMgs¥AÚM„r DFNRt¶CÖNiu:DGPçw1AFN†x6@yLÙx¹B“M~x8DçNDvBMTsµCÎM®uŒBßK(u§CºLKtUEwO(u¸EÐPcvçEÍP!t FþP·qüCDN!lB†Lg+>ÅJ"d@áMÓe E3P¶eÈC‰L(]@'KuV"A L2YB³K—_u@uHíbÕ?\Eæ^QB™E«ZND%G½[?BLGv\ž?0Fÿ]%A…F´atAÒE¢c2AçF›i@1HkoD?–JÛu:C(O |o? L y*AKpr@˜Gkd¡?mE”UIAÇGZSy?LFvV>>³D]S>@C2ZÌ<fD]Ø=¨E§d¡>¯Jpl“>œKÍn‘?Kip|@QL£q›>?L¯v›?·Lav`A_Dh½>ÍDkj]?¼EÀgS?›F“ZÌ–±;œ‰G_TZäKq?¥SöKƒF>oìjXZ·Zª[¾MÔ[#QF`ÚTÖGÜc^aJš†}~a‹ÿ{jJrwm)]qpiúOCz~r3XéxqáJ=“}…ÂgD©Þ– ³m¥…¶ˆ¢½€ž®(9}!#gF®è—øj—ž€á\ɇ}{cxhHaìU}Jc;R†LR>åvUrgcÿ„ƒ~æsÎ…/_q‘€‡ÀiÙ©…f…ryL`=½~{jû‘xƒöfrä…¦rׇ®zm ĉÄo3©~ž4ƒ£Ì™}„‹j0bWSq¥h^«rnÊ\"p˜hsZh¹[dQœV§HvBfc·N¡Es”)…öo«šž‚~Ù°Ÿ"V—í~6‹—ÙŒ~«{Yn“Vëx i§bŽyÌmÂe1w´nÝkwboñh¼ƒwàdf£‚½[ïŸ/“ûL­n›žS·ñª½”G¡ì˜W{Æk·_ƒO#RCFZIwa—MKo¥T˜LŽmVX;I©bHP§BòcSODƒZ'I!;»Z™L=ï\?Oy;(dZO¾9Ó{¾d?Ikœœ‘à} ±ž NdÀP©}¼¢…z͛둅Ó)tWiW{hUWS# e)¢ó—!vè°7 c{_¬£›1y<™ˆª\5}¡iY¬F:m~V³GÇg’R9EܙDžÏk?¥•”vB°Ãšówq°k›6x[±†ž I´ ¢„øº0¨R‚3º›¨P…¥·_§øŒa¼Z¨uÖÆ¯›Œ¡ÏA´mhӵˊVÓ{¶@ŒçÇá°3TªùšÅ…ó‰_oán°`~Oz_šPòDÙbØSH id_ÄISw¹ncM¸‚¹fÈ›ý½y9Ÿ•×A”©!¤~˜à‚Ü®[±‡^µœ¡~Їµ¥Ü‹¯°£‹õ¨4ž·‡¢]—q|6¢†(n¤^}hB«”?pí°íš‡wn©†—«xÇ¡ “)zð ?”°€k£“—¼‡?¤—¸…O3ÐyÔõ„©l¡”~ c’Rp²DéŒ`…,â%au4jYi)CŒ”loPBšùu5;øž‰~bFS¡.†Di¦?‘”yµ?¤‰“¼ß±V󶦬8Šû¯@¤±„†¨h›µ~›€ŽƒxÑ“å‡Fts›.¬wÁ±øšx„§À`_¡l‡G\ꤎf¹h¡:|¶q§Ó¬Ô®…¨¹¡6­>¸_ޱ›®Ë‡ä‘õŸò}±‡)•Lbúj¿xD?J³Z=fEV@¼Iª\€CKba\EXJfelC8Gîg.B6GlÈDýLñr]GrP"z[HxQtx¾EÇO™tB/Más—AÛM‘t:>2Mƒsé?yOsª@lOGrü@ÀMt=BNvJBXN…vÇ@(Nßw@ÓLäx¨A.L™vÏC%Nxs:C NøpäCHNwr/CNMˆsVBÆL tæBNu6EÑO3uoGäP-s»E­OqpDIN`m«BOM®g>›KBdÊ?ÐMÐf¿FDQ†fjF·N»_S?JYT>ÒI›Zƒ@—Jü^E@žIÝa(?G'^¼A×FÌYóBQFÌX#AF[–@²EÆa†ANDØdZBÆD‹d—A´E@h‘AšGÁl“@OJÅqÞCwO\wÎ@ÜM¶s“B–M¡nB@´Gd–>!DñW‡@ÊGçT >«FsV5=}D¬^À=ëC;](=ZCÕTQ:àC¡Qª7{E®S9SGDa¥9·JVqÔ9bKßrŒ;oI¿lì=±IdeÈ<üG]ï7„DïUQ9EE´Td;FEVí9¤DVÜ:þDòSÝ8 C S#7B So5=C\Q 5ðBæQY7ç@>V›9B?Yã;rFåYå<œG±XÏ>oIËWN<ØG†UK9@C«S-;£A U=ûDÃ\î;ÉFƒbÑ=ºHscÑ@^J˜dË@®JkAKÂtKC°MuCƒM†ri@ëKówº?^KzÃ?›K‘z@ƒKM~Û?èK€eBµKzæ@‚I5nß@-Gefž?«EÀg>OCÄhÉ=µC¡jÒ?FÏfÙ@fGh^??«IZ±9…L[\DéP~_ùMËWícxkÚp+lŸŒŽVt!¢Vœ³ƒb-ýzçƒõrÉf³‹9rÌT1VþE< eè^™OŒ‰ê‡ºt8qkoÖYoVTNgBßWïKPEçUBL¤EÄgíUfF>zl>ZÖs[m dGm!gvV˜|zsæWE{Òq‰B5‰vASÁ˜«Žw]®ÿž9ƒ¡ºî§L‚I«Î•9xõ“뀆XB˜ày×Eg‰énzA›‹Ž„ðj–ˆï~ rwh‹UŒCgTL‘6svupÊ^B‡<~ãrâz„qý—¦X…ªv~Nìw_izMý~åiBI³†ÑvVB’–‡ƒu…¤{VlŠÁyÆWpŸ¢‡iy›ß…0qñc!W~PvdÆTNpõdSxj aDRtlª_hQ&h»ZÐLõWöHþcUÆD¾6WëI™4U^ÊLÅ5ÑtPY ?D}3d󘘈Wl¥ã’8mÓ¢]lëš•’N|1šq‘dx+bÁO1ޝ}s\ªï›µz£¶v¤þ±*xÏšŠ„\Kz¬g^EFb_NØ9ˆmËR_?™w•XEH¢v[Z¬Mq½Y©I`sn]KI|±héK5„)pÂGö~ÄiÙ?¸v:`Ú@÷qmZ,EmýUFÉ^|Nù@Cw@W%’²Xº§ë™Ýb„¨•ep„¬š[~>°kž!‡œ±n£*°žžQ€^ª`¹‡Õ³¢Ñ‹ÚÄ­pŒ>Í›²ìŠ@Ó1¶L‹sÔØ¶OŒÎà³t1ºé¢Xº›Fƒg¡vçf²i]O¯e´XÖNgN]lJJnd6G\xüiGÇv V‹•wˆ€s6› “š‚Ý¡I™n†°«+Z‰z´¤†a¹«%”¾´‹§‹Ù±|¥i‰h± ¤†\¨Ã—wuìØ‡÷]÷ ‘‰x_ ©ï‘i¦J g³…<]1—Ù½a—„6tÝ™ˆ||T›}Š |r“³ùmÖeyô]V’CsdI4‰Ÿc‹<*‰N\›9øŠ“[Ô6"ŽXaj-”ËnM!¥™Jv.«’»fG.¹›‰rEɪïljfºXª†º¶†ªà‰§›‚梗w~™ˆŽQw¤Ž¢‚ÑmØ”½‚ƒcÛ t‰ \}Ÿ–CC;š;u‘9Ÿ[úCªÎÐ`Ä Ä‘àrlš5› šÛ•¬¤ñµäŽ~žœ³Y‹8–›¦[‹¿—€¢WuQˆI‚Qø_:iC°UŸ;Hë_˜>äJÅdíBtKÞhjB˜I=kýC·N|qA²MQtBãL°uëANuWBžO³vj>K¦xùAÊLZxhA¸M«qÀA¸Nÿp‹BŸNtrNB3Nis!@ÔLút˜@0Mv%CˆNt^F PbqEîNŽpÆCšM®nKCÁM÷gº?UL”aY@·NëcPE“Qyd?D-NÉ`=­H5\Á>K÷^Ò?OK¦_†?’Jò` >H9`;@VF ^eBðE³\©BïF;^3BE*c•?6@e˜B6Cg.A½B×h;B F"i=BoJTj@dLÊo6ANvoö@Lâi¦?²GþbÏ=DÞ[@qGV2=$F÷Td>øDg[þ> E£]¯<2D}Vx9ÓDS 6ÁEpT96«G3aá9FK–o‹:ýI§p6=yI n¦>•Jk:¹HObõ7F·WŸ9çETL:¤EÉT2:LDÍUè9*DüTÒ8ØCµTá4ã@ûS02vAþQ04 DÿQ’8ŠDóVF:_Ez[G<›GÛYí?YJ¼Zñ>'JGYª=ÎHU“;PEpR[;\C“SÝ=±EW³ GèXl@2HìV—>gFa^T@DGÎh‹D¯KkaDnL¯jiBzL¾q~B(M{s¬BcMÈuÐ@KèwB@bKPy|@dJwÅ>¦Fk†@G]e?ÉDf>6Cahô?£E`i·AãG„d;BõGôYÿB˜JZ¶B"O>a¹HOW~eòOWB`3bšY)Y‡„a~öj8œ”ozY€¿s¿gvq6^YQ`'J’IºN:C|B=g·gŸU[’¨’}Œuªmf^ÀJ…WéH?·TE‹A±T˜Fß?U`SËKvnòfí_~mhz]jsÔi+N¥zŠnàCÄ}¯lPE–…wÛ`žF’òw¨¯˜ž³sí­M›…{þ”‚c\‰‡Îb"7y‚¤f9v~|v_¥ƒŒ}¿k.o^wGRFI1ÓdMWêN}n°\OWdIn‡X%~òh'A©k`Z»@Ù[¨N¥?àeHN3:€oZ”>6‰—}Sff|±q ^z¾eÕC¼ÍdkEp{ dfTnQøGIÁ;û]=M×:“h«Sh@0h Rå=én]U·:/~ÐdEêƒífûHáŽarWP¿”g|u\H”{‹Hr}emXÞr£X\E €lÜAT™z‹‰eÕœ¿Žßmmx®hs•‚¥^‘}ÇoLŸhT@fÓN ;«dWMï:ehÙOGAÌfŠQEA’qY%Fêw—a/Ep‚Õo]FkƒWrEE|‘hDCŠr]ZæBôm’VC e/TRB«‘wY–F‰H˜æŠ(DF—À¬^UŸót}o¯1ŸgŽŒ¬©™‰ƒB¡£’Sx‰š½ôyx¢Ó—×ò·&ŸÐ:Äl©ˆ¨Í×´ÈÒÿ¶0AÒÿµšÂÇ;¯qa´•¡sŠœ™ ûx‹„‡zžf;v¢lÃW²lwc Kíh@`µGþl•a´G3v»gK¥Šå~™j“œÞ–‡\«L¡"Ž.³æ£hŽL¶s¤Š‘ª¸#§6ïµô¢V…$·o¤ÿ„#ºÞ©™ˆg´n¢…™¨F–ƒo/¤iLk ©‘m‡¦i3eûøRà“òu3I·Ždo?R7qÔ_ì’f€¯rXš|Œ±y Œo²›í…çeëovFYÖ‰Ïg(HÛ‰6^@:¿‹æ^…1‹½b_$JPe¡“L_ƒc™½l}6´¤Æˆ÷[j³EW~Ú°wžûƒ—šqŒÑtN”“‡Ùq –{Žg.•ÊŒA}7”Þ­c™ŽÌnBEÓ‰åa¿4aôd;0 “¡k‡2–˜5sG˜L™f£B‹P|g}AFNe¸>(LRb >}LXcH>L¯aO>üJ[bV>Iµb0?×E!a‚AåDë^=BFê[B Gaé? DepBžEPk°ACmºCµE”jB}I”g?@×KÞl«@ƒMímc@êK jr?†G”f¿>ÝDûan?èF~[?_F§VANFX ?2E}Xõ;ëC›Wæ:ÜDêTx8ÿEüR7øGß];ùKeg’<”KÝkI=J²l°ÉH‚Vò9÷DàUè:EV©=iFËV>FÿYà>(GRX‹EÞax>)DádZ?wF:eÜ?åFK_dBýG^YODèKê`©E¯S¡iYI¥]½iLPjW_QRXMµPårNg¯^Ž›„vµl eþ\bNæH§ERG-rK[FE‰a4f=K¼éŽžsÄ¢Fž„4„ouX X¥I <ÀQ9Bâ=óPüDOCRS®M5JÚl%gä[uïo?dîjœa›SÐDÜAëUBH}:yulãP€ÄxcftÙdGÊjtUBYÌOÕLZGo?¿IÆK{>JNhBfIiOÛG‚L…T(MÍN]m`XYÈeSƒNÛX“H"E€f R1IâuçiáXé˜O”™„:®Ö¬ß’—”|“|ìuˆd§M…dM/C•]«NKA]ÑOmK p[×NùnZåFÏs¢aK&‡ªxÂeí§4›\zA™[‡Ž]Ìz£cNOÔg;SQž^áQäSÑa¬^w]úvEs s¦vVp»n3PýFÄ:éRôG’2Be¹Rú=Õo«W¬A&nwYe@Do¸XÌ?Ëxè^BC9{™Z D­ƒScùIë uTÓŠâ}©dFuËd7M8n YÉEs3a“AƒuÒN(‹ó}EbQ–ó‹Ól=™^ŒOr¿†Yyºgšt frMj~T™DLX„J}8ê]P÷<¸V«H5TgdPIDærn[©E`x•gÎF¯{,p÷JxõjqIoÌX“D‘mXW DÿkZôEª›)…‹f•×…T©ŠmyaHSƒýkÙK„Ž\yÒdI›>ŒÕx%öŠKs¿•®¼clê7_ì&ƒ™aƒ™ˆÇfݦY”ÞxÊ¿IªRŒÛÌ|µ‰LKméB®Ou•DP·xkCN0xeBrM³yÒBNdy•DàNÞuEßOÿtZB O©w AyN`y‰@¹M²z5@MM¨{Ë@ÃM:x AñMÒvÿ@=Nw•@µNÙt±@HO#u¥@÷M8wXANàwnBOæv÷?NöuX?ôM*wƒ?bNDx->YMyxd@ÊM¡x7AÜNõv-EôPbvG·PºrØB±L¿o_A¸KõoOAOLrpƒ@$M†p2D QqVA_Pm&@‹O±ix&GOhû<Cd¾=,E•_`=.EÉ[?qEYÕ>ÅEøV×<ôD“WÊ<ðDeUF<­E‹P¯;MHUJ<ÚKÈa”=ÐL§j‚=öK)lŸ>ôLWl:ôHºcW:ÂJTZÖ=JÑ[ >±IXÄ=H”XV:ŒEZtH?_¹?ÏGœ]¤<¬EBW¾8(CgUE;FßTG@YJW·@.Jñ\×?IÜd®=kHÕg³=:HiT=‡Gìiª>HÕhr?†G”f¹>ÕEdE?þFâa¿?=GU_Ø>rFþaá?ëG;crAþGç__BÈH ]DÈM(d§DBkÿ\Ž@!bˆU&Gíq¬`ÿNJƒKs²\ Ž˜}K‡|¡n«xlf$L6c·OÚB2VPL@/kv_íPWtäo8aÞoýkBWGmšdgKÝTaE×=ùNÀ>‹<¤M@O>‘Là@Š=%QÞHFRPÒGýIuNRDØ> Z¾RcALwÙqVæqôb_LØ_%SEqN I>GãFN@:I9Gì:ÍKÌJø>ZNRKç@®JdT-LOÕcªUvU¹gbZ5VsYL›AmaPkG$föVrI9}âs‹]K•p’à…U‡!…|s7aqXaaˆK!K§ZJMPLäZàOéHÍiZ¬MÂoz^WMÕpÞ`M¶tódÕMˆkw¯Zn~Wf—LËi·NÁG#pZV8Púl,`Û\¦ia[äm·c\Ís·`»ZãRQFq;HP#E—0»hS.9ˆsZ AênŠY@Ér\óBV|e1K@}äbpL¹ÂdšL·‡moOЂ0nÊR¨jÎW H£kv\¿IÑnð_ƒGÓtui·L?‚T{ëed—“’\xG—©/s¹…¿wÖmVyo‚co«^nVýeTJðXêNñ@‘P’CD7šV[I¬E~mXI|mJ\¾Gãi¦^ÚFÅn7bEIccQ¸B®d@QnFŸnÉZ²LѰó9ðŸIrΓg„Me‚½|F^ˆ•zœbO—܆PiÇ–U„ùfî•¿£\â’-€‡SMŒ¡{qOcˆùvîO”P‚>c­Ò™Ek¬„Œ_Æ®Œ^¿ù«ì‹#·Ó«B‡µmª —±ä¦äßž(›:ˆà‰Ò…oarlÑTóg•`oP|k×aO*|_jdL –|¶ZD f“²rܵ£ž~?¸UŸò}·Úì>´ ›õ~î°Öš¬}0³‹e…±¹Õ£9†uÁîªt{e½¦»}*²[›Ê°Ú—ÔwºÃžJuû»5¡0{º¹žj~¯—|`£¶””~ü±j£—‹°Á…²iŽÜÁ®°+¦C—Ï|~VaZŒ¾yÏ[ —ü‰Éršˆ3})™>ˆ9k ˆkS!¤ “üdá³ Ó‚¯Å³^ŽšÉP¶öX±]œA{(—;…°g“³ƒ\q¿•a‰ªtí•LjØvjmhptXZôS¯z®Xe>ÔGXÏ'x„º[â%µˆ/a•%ÙŠ¾j"2þŠ$yéV ‹Œ¹„)6™‘²‘£X±ïŠ“úf£eùtpCaGöVˆ;BGÂ]µ@dLÁl™CtNêsýEÏOvbDÁMñv ALÜx4BjM>xãBN¬uúC¬NvD·N­whBMfx?9K{¼@4MS} A˜MÖxž@ÓM+vÚ@ŠNtuA¬Neri@xNŒrqANÑu6AÕM9w¢L_a =L·a <ÿKže?@ÒLMfŠAQI]j?ÒEkU¡@ÜEÔYP?>Díbê>ÆCxhM@5E[kÃAßEéj[A5Hhk>@KúmH@þL™k°ANjp?\I:g1>1EÍ`Ü=êDÄ\~=/EÇ]ì=«D$\$?ÞE\Zp>UE­Xt?EQV6>E‰Q>ˆHåSä;ŸJ`c;RK4mD;&Kqp«<ßKòmM;¶H“g ;iF9bž9ìC `H:ùBñ^Ë:OCÔ[99D­Y¿4½DjWÊ6yIàYê2«IÃY:æKéZU;íJoWu;0KZÂ;K_Š<ØJÝa*=æI*\Å=kIðYN>VIY{>ÀHåXØ=€Ið]Z?¶Hç`½@¿Gq^ê>FoZE?G%Vø>HSµBpKeVqDÝK\7DLña½@³Ièdœ>|G#fb:Côcó>ÝE†ct>™D"b?ãDheTA0Ggc-A’G×^Ç@ÌG@`3B×I”cáBäG(`BÏH£_ÚCÚN­c{D¿Rk˜J¶Z&mS`¬D,N£Bw@S]­R4Iâ]TÉL¼SZMoA€TL29ñjÍ_IP©H²>"Q«Qq?ŒHÄXòO S#f3YîY~dÕcSaçk~añMmnÝ^‹N÷a QêG²iôTLIiy¶m:gÅwúl;m„rL\+açgÙPµVq^)PTQ´^„RMÄ`'TMêg WÌL v¯bnN$w„aoJv3]ðGDmdRâEW`ÒIj@´pË`èRŠwïq3md{uq;vhëOvxXuDV¾I»?ªM9Dó7­ioP³6œqƒYÛ: u‚]×>í|¤e—Jgg€Pã‚ i¢ON†djMŠùf¨Läf»QµB‹fÃTEE1jÑXwAžlS^“G(w–pXZŠþhÒˆýwüX’yÇkø`r¹gcãrébV]¸q^³UsWJdBèQšGÎ?ÏQ»NK¶eº\OÊf•XGœaºS>Ab¢QÅ;ÕVEGH:TWcIF¶mºZbQ´ÁÊ´ ŽÛµw§… £ô•¹tþœvéjÁœ£i¶E½m ã’–sa¢F“žo_ ¡ðeé–‰N_‰Š{VWì‰åy·[˜>ˆp©S—pé¯Pšk¬§šª‚®«ržd‡™²q¥€‹>¸„ªÃ‘Ý®P¥¥’€•’½€„z?u`gtNk#V9{|o@WË‚$o\O'‰wp|­U¼¢,¢dð°:šqë·žz˺¹ŸŒ{Þ¸Áà€÷®¾–s´«¾“t𱯔ò_š¦ Ž«Z§ž5ˆj朅3då© hbî³5˜ànR¾ý¡Òƒ »%Ÿó§¶å¥·»)¦õ…]ÂÛ®ŠÁ ¬Iˆ$°À› K–¦ˆnG‚…RoRš*–þ‚¦²£c’Ô©ñ ‹V®  d¶´™§nƒ•¸Ÿ©çƒµÂرӈ¶ÄÔ³©j´Á öÜ E‘4t¥º•é|”¶u¥²ˆêºK¬J‘œõ’nˆTŒî{¨qý‚–h¶EhˆdkÌ9T€¤].ì‚ÜYÍ%A…K[tj…feW2ª†™MOc=WMØd :¢LæiM?tNõkB”MªcÝ?­GžYŠ?tD™ZÌ@ÿD±aG@¿D=d2A!FFf AßFöeŽA¨I1jÈ>¨I‹nÌ?/KŠkBÓMQg2@íIOd¯>YF“^¦>oFÌ[°>}F™]Ð>òD]Ö@¢FO_æ>REw\Á>)D]Wp>EæS{?cIÓVø>ûLl``=vLGo5:J½t 4N½\´<ËL´^ ;öJ8a~97IT^5@YLÉ[C?oJWVÃ>-IóY =ÙGå_a?ƒGZ`i@mGË\s@xGg\o@èG±V9?HµR*B×I4UbEœK\JGTNï`¬E+NIe!@IH|b„>]E=a6@÷EËbT?(E@cC@@F e¶AgGrcsAÉFZ_QB¥G³`"B—Iï`ì@ÇGÛ]<=ÏE\öCOÝ_EHÚQuf'Oþ]§k+r9h'|Ð…|Tƒ4”•‰E„ˆu¦gsO2T¸KG(OxJ(J3U’NKØmdTpu-gáLÔtÑgvFïyDoÙL‹yj³OŒdKVýKTS KuCzSNCEÒbÿ\/Oak `—Cg‡x`ÚŒs~r^}¶qÎ[T¥JOG>nQºCW5Ï_¶M´8`m+ZWDÆg"V Hj¨]bPÂoh¹`—má_LRšlESÔB"xós h]–s–ÖžB›Œy¦œq˜mxÜxœsí\QT`KEJUQ˜Dÿ>µjÓ[I†u]iƒOêhHZoFï^”O8?f1TçIrjœ_ÿM,mÉbðY1ondÄZ7g±]®Q÷IÒK`RóIGD¼UCYg?GEôecXõTÂs*mïf1~Ú{ây‹ˆlím¢‚]xbõe·RÉGÓcúN¨DÑihUpOcoU[Z­r²[{_Ör²^FdIh¶V_VúcðWëNç_xSÏLægXÛLäu¤`¹I_}ügJ{øb¾H\t†ZÙIfàNç>[tg.S³ƒ†ïy ˜æ––Ž©™¬zm8–.‚T¡sèbéM=hDX-QfrZTc>¤zU_Ö;™u_c8—xÑ_‰;bz¶b»EÞ~fVKÔ†:lÏNˆpkòOX~2cLÓjöQáAAe´QmBe}RÂ=+fS@±jÑYŽH9w%dmLœw4b(H&všgo^nø_0Yìop[­O©rü[|QnbíN”CoI`®J¹vßrq]‚}ÿyj{lîfDOb[T,A·VIö3LP?L5ìRºFME lB[^RÀ±ˎ Àô¯øŠ<®5šåy¡šÃˆg,˜Š9e"‘]j-¢•¶q%¨Z˜nx¶§™˜w1ŸÙ“Rqú“Ÿ‰Kk}Žà‚Ëf”̆‚j~›äŒÁoõŸçOr6£$•áyh¨—š>€=±¡ü‚V¶É¡'„ð«M›’ˆÍ“.Œï|Ñ~tÕ])ƒ’t_Z«‹U{½a‹Àw [j‹­v;TÓ‘„}`VGЦ^ˆªŒ–fl¹Ú :|ø½à£[{Ô·iœ³y~£·Yp`œ‹€O[hšÒxrB^p´6?ˆ?mË@[‹€nÎG|•ÑvVHÛŸž…Y °œ–št'·›/y·LšªpÙµÖ™›mUºwŸëv ¹†ŸTw9«–¿pÍ™k‰¢p?‘l†GvE™ž“ƒ«ä¤óe·:°q“V·Ç°c‘£¯4¦\‰8¤'––vK£ç“¬v.©e›K…†ª\G‡Ÿ«nœ<…{»r©æÍ㻨•ÏÆ¾pœßºK®f”¦O˜S†^ž´ˆ;sÞ›Þƒ,c÷“/yHUɆ˜aú0w…ûUSOˆüZ‹& †¼lÀK9‰«ŠU‚“Ÿž'¢õšœVr,qævÒJmHœY\?VD$`ä>Iùg4C;NÃo-E6PÈr‚CiNPt“BÙL%wCŒMxøB\Mqw4CM§xÔCKM€xÆCMwÿAãL¾wK@kL y\@'MŠx±AOM»uÕ@L sñ@KšsRA÷Kti@ëKówa=$KÏzh>yM1{Š?¿M zbBçLylDôL¨w$B­LÁx,@éL&z??†MìwãAäO°u~BÀO¢sÚA`NsAfMt€AÔLävV@LÍx”BBO„x&F›RËtÖF}Rp°CüOîkË?6N}ho=ÈMÆj'=­MnAíO…p»C OÚiÂ@%IÑ_?fDõ[[?mD^]"@EÝbN?æCed@VFAdù@ÅHif—>³H¾jL@ZKÒm¡BgMg]?‰HLd‹=‡EÑa÷<‚FR^|<…EþZÆ>åD7[è?+Fœ][?ŸEº[/?/EKX:AVGW>IHZK=âJK`Â=ˆLIn<×I3u‘=ÒIévD<¿HwuT@ Kiwê=!Iìr0> HOo;=€H jÆ:8GR_K:§GdXI–F].@#HHZÁ@±H*\@HƒWÿéH#W‘@„H’Vƒ@ŽOÄWAGgR¯f&XïdÐmuár‡–€Êlä…@–g…¹‚øuCb K)]ƒKXCŠc¶R%NñbcSòLðm™a¾PyreRMòs+hðJ|ÞrTÉxßmÍR£h¨[ÚKxY;Q†FwavV×J’y]kUêx½iðG-}-qPNùò‰\v^“²&tn˜n¶]mRÐNH=MWE¹;³RH]6n^8O=4cÑQeF eÑ\–Lvsmf]zGlÃXOvSX®Dlj]ÞJ_“ýŒRp²%ªÿ‚ʸk²(‰^šR”v1qua³L¨b¸QõEÝnOUxE”{®fMösP^„H=fERƒCX`lPKÏ_nSœMBrÄgö[6‚v™b{¸pßY`f´eÅ\<\ÛQ¤[|]ìFHC:x g¦JQKƒ”{3Š}3ƒ¶ž’cƒüc‡'f7q»`M!eR¿J©eŸSNNl0XqU¹rƒ`]]Wzlf[wj-athU^MniºWsJ®oaýKDwÜdíF5{ahiE}|h`IzdoMuŽ[²Hó{wlsR‘“è~g¯¢§»“ˆ¸Ñ§]ƒO´å¡æw›—Ö‹7rŽ ƒòsB‡ÝsŸOׄºlÌAÚwk_L;sW7zã`!CH~eÈFˆm/K•‡Ùj¿Sn{ù^8L'qfUÈEm¡UlF‡`‡Oç@‚_ O@B+bQFCp²YƒFLq™[ G¹v˜f«[½r a™R p{ZûMMs¦^ LÇvçe~I>•‡˜hè³P†”¥‰QmŠq#iŠV“WâPlFÒOvEA;ÚKï>9GSªIZD‡o)aS>ª˜ |𳥜;z8¨§im”ÄzhP´‰…v»IA¶Ra˜ã†i^÷œÔ‹‰m7Ÿl‘Ky< C•{z’¶w‚™Žaní›æl’Ÿ¹‘ÿnP¢!’´p¿©¨—„uñ­®šçyî±³›c|ò®N™Àx.œôŒ­pöƒ¯tƒ^ay@e8J4ˆ@qLêŽUw>Wä†foPOá‡uÃ1²¿”îÌïºt—ŠÈ¹±šVÆY½Æ¦ ŽХ´ÜŸŠÂ©«“ç}F¡‘Ž<}‘âs#Mã‰h[È$‚_¸*‰g»JJ†´*}év˜›Ì‘映žÔt`r-{šL;Kš[¼>{Eß]³>ãIgÃBNNöo#EÅO‹s?FñOÙtøDZNnv3DÄM$wxD N y}B—LžzõBçLzÈBkMMyÂB6N•xÊALM–wÚA%MexB±Låvß@²K³v‘?VK¨x?“K xi>LKx¯> L zU>¢M…x¨?üMv§A*M®t1DmMºMOoÍ>½M[qÁ@FOs²B†O|n®@Jd(?™E€^¢=[Cô\>ºCla™?QDóa>@aEQb£A1Feë>óGÛjL@ZKÒmâ@KKðf%?ÉGde»=åD‹cÇ=jF¾_;=.EËY(=šCžW@çEšZA9F[ô?ŸEZ®?¥EóZÜ=÷E\Š<ÊHÌ`˜=LÃk6<JšsÙ=äIöw‰;üHév>ƒJÛw)=PIv>ÎH`vö?Jìq<H{b;¯G¥VO=¤I‘V\;$J½XŽ= L>^!C[P§eµESèf4B}Q‡cØ@'QfÍAxPÎd‘C¡N™^n?NI›W…:ŸDoWÓ:'E\ñ=HþW‘@³JŸV@ IãWD@H„U)>(F×R®>/F TÑAbH`\äGvOjj«G§P”knA$H ay?lD]_?Ekb/@×GaPCbKš_ B3IH_C°GYcbBÑFÍa…B{Hž\SA^IµU D­J7SµCóOºUNHÔUij\ÿf¨oÐsƒqT|XrxaÉuÑ‚pÑjælVBÏ\Ij>Òm×VEMl‚[LO`ji[ŸOøh][ÊIørikL>{«sV»ti¦K÷jà^òG¨aY]R‚OH®M“E9B^Q;Hq>x\XOy<báOÌAdj*\‚Jñw°lTŠmy–a¬gx‘bLqp\ÉIŒ‚ud;¡—D{á°©º„Ǫ¢‚ ŒŸ‚®f ožbÒK lESAEÜrÊW0GßoLWjFdVR;D£\ÞO˜IøbHSóMqªc%P‡ƒÔvX[KŒÕ€óeæ…Ñ}‚l¹r}ev\ziˆXSDzB{§N£Å“h’ù—¤…øˆ§§]”å’[’x…,bì|åmM[ErÒ^¼Zµi›Z§Sãmn]0Y´sic]\w$i]{z”m«\Ÿm`3OKqQ^ûGGv½ewI:€¨nJ“{©hWD–wOaF°xh`‘Lè{dÖLÛDmóKP“ž‹wt­¦=𢂱» ª]‰º«õ‡š°¶¢œ‡¡£ šÚœy“ró”…€dP~àfME(rªUØ6z'apAß~PHk\?dKÛdpCuNpEïN¹v;EOûwqDþMcwbDÁMñvåCN¦y›AÙLF|ÏAÕL|ÚAyM+|ÔB™NzCŠN:xªAÃLóxÞAZLy7AL4x™?_LdxÙ?|MSwÌ@¾NNv‰A†Orv}>’MÏt£?×Mƒu:@PMàuBTMüv˜APMÊw@†M×y‰@¹M²zHBKNÈxÎCâNuuD¯NqEeNÞoÄBbM­q‰BN»w‰DCO€{†EåN@z,CrM£vYB?Nu7AáM÷t¶=²LEuÙ=YL:uÞ?ŽNÌtÅCMPRròBFÅYq>„EPWg?:EåY A:FE]¤A­F¿_>AÖEŸ_y=D²]Ñ;*G(`õ=ªKg <K?p¯;ªIÀt¬<¥Ihu <J¦um=Kñvµ>JOxi?ËI„t<HLd =aIU²?ÓJÐTøoKÑc'@ªMrióBsPìi´BjQh'ANPmiêA„OëfEOÁ`Ð@µJ Xø:ˆEÆVr9¹EXh>½J!Xs@L,V­@§JÒVç>SH{V²<*GCUì:FSB¬I#^ÕCŒM×lzCMLo«@,FÙdö>÷BXai?éDžb@^G)`D&K`bA=Hˆ`.B8G¤alCîF_üD‚H‡^CFIÂWBMbO¼F#Q+U|K>X¡jV\,c¸pR`;cQlE\:\îaiU]\RËfSTCEø[¶IýAÆj‡RLjp[`'UpObTÓn…bI»s©jYJ„tÌi6NDkê_Fáfr]Ek föN¥v‰m`Ô‰puÐYæ‹kqCÃnE½„‡uñSÀ€ÛtX‰r‘hÙPVO'MEãNïG,G QÀJ±G°]­RÃCëb4S·>QkÖS«Fðz˜iäNa”c„el¦¤O—2†~ŠDzÜfÃ};kÔKü‰‰wv^=–Œ¶k™Ÿ˜—ptšÙ–zƒ®g’q^e·M1g©SC€fµR`EmcaSG¤W³MEÓb7RhGCm[]ÃLƒqw[c—¢2{9“=†¡p‡wÛcÀN¢v¿fHöœô?f‰­x¡é˜À¢V“ ¡£0õ”oŒ¯w7ZÛ€rudàzVe¸gãoÙ_Ã\±mM\¾Zr6_*[én‰]ÌW-sÎd•V;oa;RŠq)afJ wwdÓHu…¤ocNj~YgTH‘p)UßBÜrÔV=J¡|ÖeiNâ~èi°Ið‰hw›VÖ™ÿ„Êg5©y˜d€È«'œð‡ƒ±õØ‚V©y™m¦7œ¦yЛ“_|ŠrJYxxù\ />±F=,8K¾?“8;R~EY<ˆaÑQtA>›,}£Wõ¥ã‰`V£Œéch˜»‚¤[NŸ|‡V¹Š'w¯PVˆús>Mȉ{u\TCˆysVUŽåu„V@•;{ŠOt™·ƒ/WBž¹‹Ïmû¨Ô’Vy·û™}z°º'›Àqºšj<´ ˜Ñiªü”üo¨žs9m —í…|cì’:‚ß_Þ’¡‚‰d¢‘J]ŽvAF@ƒóiEº}¨aêFàŽ¼uËH ŠùVᯪ“j°¶7š’n ·œvs¥°^™ºt¯¥Ù’öo?¡£‘&w' ;‘Âwk¢Z‘æpÖŸ"’åvß–‹Çz\™O‰îsBšˆ…^0–4‚ÀY­—ý… dh£œ\q\²1˜rê·ŸšŠrè°\—pÍ¢˜ŽÃl 3‹5q眚†¦j)“¾yAQÅŸvÉR»ˆ!yfŸlwi |²rdh~+uåf¸‹öÙnŽèxU³!›U}ä½á¤Æ‚ñ½Ç¨ÈŠ·¶ë¢Ä‹æ½¸­Í“Ùǘ¹Ã HÆ…¶Á™Iº¾¥ÃŒ¾´…£I•¨ œ›’îœe“w€­™]’^½Žë‹‰8‹›ˆ¿˜Ž¢0Ž–1žnñpï}ªI`LdYl=‡GNXƒ=úJ„aëA>MÈoÇBpLMwÍC¢MizCMZyÜCNºudB N7tÜ@MawŽABM z BÜMœ{ñB¤N°y½B›N9x³AfM yìA"MBzªAÃLóx9AdMíu|?šM6s•B'OqºCÝOs½BÁN\uˆ@àM÷uŠ@jN©v@,Màv¢@zM/xAÑNJ{u?M?{KAÓMyÿB@Nt4DBNùmAE[OmDÝN´pfC„NÔwñFPø|kEKOö{÷BÎM¾x‚A^M–w¦ANïxa?QMïx>;MÒvR?WNår(CtOVp$BJth+@qF§_Ø@ØD\1@"AÙWÈ<å;LTm99­R]9S;5V:?Ù\¸>{DU`ùAÕH bR<ÀD©bÜ=ADCcÅ=®CÊ^?FiXá?`F{W'?ÑD[„A?F}^QC’G‰a¬@†D¢^þ>5D#[=öEF[W•Jèq>YJƒrå;KïsS=[MÂub=fKŠwé>ÚJ´v=©IýhO?ÐJÄZú@µK*UW>™KÔXR?èKVeò>MOilAýNDiâAàOþh—@ OBjHB›Nxj2B4Mdb…?°JÁ]´:DEîV*9–EMW <«IZÝ=)JÖXšAWK‡Yž=ÞG$Z=;G"[=­HoWlA¨K)aÙ?†Kbk¶@½Jñl“@xFc>ÎBê^³?tDùbÞAªFÃcAC¬G'cAA¶F‹dj>D¸`(CƒF2`gF¦HÓc‹CKÅ\òEÆMhPÞJÂSY÷L£Vûd°ViWnk×R¤ThRO\R]VðR‘Q’e-WOM#iZS3JÃe¡O6Hžh?WO¼uGhîSó|Ãp=Kþy"o$IFní`¬J¦e‘ZÉH®c\]RKcnéfeP·z³reI‹ñx b2‰ñn›H&}¿cA@·|f'DFs2aÕElc„\pJ©M0L°CñQàNoLÞ^YY¹UCbˆUJ¤d»WBmVYBzáeÐL»AÊh¡¡ì˜L‡Çm’¿{y‚_Cát]dJku’c8Jú„wèJ¨•ß‘Pq‰™šÝŒ‚‰ùlïo°dGË_*P»D£[OIH%SEIòA‘Y¸LÙ@ü\ÄOAÔzWr°h„ƒ³{#u4ƒŽXx¢`p‹ªtMeð™èÂ\v—‚\Où‘‡…ê]ô‡|d†'n^Vxq]ÈBµx’a$K¦xŒ^¿My¨]ISuÈY@MsÛ[WBnvUbCÑo‚X$Išg–RáIrPÎBd@XOXF<>±S LÂ@ÄcEPîEs‘]IÐwÐd¸IÛv±b)EºnPWž8Œ|ÝfóS;~$]lfk”XuYh`}/cüŸ~ˆö^µ¤Óˆ [ú¡øˆ;]Tž°‰ô`§ÚŠocΙs‡d¯“‚d+~w`u‰ v Se†ón€H$‡&mâCõ†>nÂD ‹tÀQ£˜‡‚¤gb«l’Xsuº›Dt½C[r!·q›¿uÞ°Žš¿|ﮚª|¿ªó•çs”¢æVqD†Ž³s[ ¢,oX¤˜Œ±a朗ƒG\’a|®[¯–0Š[Ú¢Ÿ‰Q_·¯ï‘Øh/³h–Hl¯²»–3j—°Ê•ÌgM­Q–Fl-­€˜öw=³7œI~|»F¡ÔG¹_£)‰•ª2›ÃŠ›¥¼˜<‡h¢Á•zFœggrœÔwܦj—ò{3¯þ˜³v)µ"™ v™±–ÞoÁ­–“Åk•²¸—=rR¯]•‡oÍžÓˆ€`OGxèQ%rfZ[€±xKk™„1ÃrwS˜)4u{£†ŽOjeªŒ“]˜­+ hÊ®š˜³}c©9˜!~¯!›^‚I¸NŸÃ‡\Áˆ©âŽ]ÄÖ®5+Áç­à‘P¹Á«•;­ ¥=“" ;žÞ™Ú‘k–†¡3ŠV“W£r‰–t Œ–x›½w¡y}ôJûMYS>`G»WÞ=€JIdB@N(q›DíL…tz@¯MDs·@éM‚s\A›NOvË@ÃM:x)A£MoxòAN¬v®AÍMÅt©AJNÏsšD¥Pu€CŽNmwîH’QûzôIÈU:|@FuR«wACìNœuYCENawDA$MVw@NÂt"@¹NWqCVN\oIDKi¼@ÔF!^Ÿ?‹DÒY;z=ÆUë8´8PSx5Þ6S#549òT®7‹=3W˜;»B0\¶>ƒG†az=fF‡b@EF`ã>ED ]²=ÚCWn>æD=Wð>tDÃ[fAbEú]NC6FÄ_ÊAJD@`?ÛBŽ]>1EÍ^$<ÉFWf—<¾H‚mù<¯Io=ÔIp;õIrÐ<Lt<K=w§=K¦y4>K r4>LKÏd @kLýX’K_a’:7F WÖ9¸FßV+H4];<ªFµ`t@êJ¥cH@ØK)dB}Mzg8B M hÑA³H8ce?ÃD6]@ELa9AŒCíc—A˜Dáb|?ßEŒb >¢E@`ÓB¢Fÿ_F†HþbÏDZJ$]2M‘O|PSceX[eXhÜd›YåY'`TPOÖYmPÆLZUmQ-LøNbõR|K¾r-_vL/j¾T„IU]èPzF!seKþ€ÞrÀJ;€üpÎK²næ]oLa U]Kabw[FO˜iÈdäOGuÛmaë…üwjjB‰vybFu÷_ÉG«hR2:+[ŽMŠ;R‚L´BÜN‘KçB3cF^V†u}p˜i`lRaTRd­UxG{lXoDèxdƒLÁƒèt’\}¡ˆ-tú˜ äsx4_ËELePwKDYL`F©]¦Où?V}‡vZ˜ü˜–~oŸˆ¡Á‚U‹¶„R`Ýj_HK›UþLvI¹P$FgBW)IƒBSgFy;T^ùSÐP_[ŠSUY÷IÊJ%ZÂF®D›fQÈJ“‰#†Clú‘‡‚fü‡Oo7^Ë?a§O o,T´R+slSdáQÅAÀi\UMH/fwSJ«S¨EÃ?“R›EZ=WÝNJGZZŽLG‹mž[¨K}ŸoøZoDZÿCb]K1¨duS·DøjÏT8Mo,Qõ=µZ)Gs0¦PøC¿=qEu9ž<çE89ë62NGDö8OÂF?>»Q%IzAõºŸvϳï™ív&¦¬ûg¯£5f ªÝ•½m¸¦ð”ªqÏÛŽºq(š.ŒÈp˜”‡6i猯}¸]°ˆŸuÉR£…rÿMIMnŸI톿qØK>˜P~Q]:­’ãnZ½ó¡ô~ä¼²¦Uˆö¸¥S‹ »é¦õˆƒ¾D¦‹†]¸vŸ…+®R›³ƒ8²¾›\ʸš;vֶ꘧u«Ý•vs¤õ i;¥œŒ<\K­O‘³c)±Z•Ckn²=–¥gƒ³w–„cƒ³“˜¥k¾·”ž`{Ý¿e§D…>Å<«—‰)Ãëªk·g£hª®ˆŸ{¬WŸ©Ší«¢{‹>®ç¦Kݲاˌ¤²UŸ„˜µ”œ ‚å²k™=}©´/™Ùwµ»_œ÷u¼µ›÷r°ˆ– pï‹úk!Š€|.gƒ¿{ln܇„sÕ“Œr1 ô¼lªõ._ͨ?„tF\¢t~?JÈ™‚zmVØ™u‚šb΢aŒèlͬI‘ƒvo¾²ŸžŒ¤Ç¢°˜‘iÇ+±®Ç¼õ¬ñ“­‹¨4žCŸØ¡èªc“™Í«‰Ù’¡\„|’ˆœâ‹˜—œ‚Ò„ã‡P6Vçf¬?­HP^.=I7k"@jMTwæCƒOy¹DöNw1E3QæxôE­UƒxwDªT–tk>áL-o:A”KsöB„M”tUDP¯u•CpO÷wbBçLykA˜K\x¨A9LAx—AULËuCÀMìp?DÊN¨nåCZM"r_D§M‹w—?:LWw=L t´>BMwpØBO oÐDTP”rÔAMavÚA%MexCCÀO{z%A9NËz5AkN”yWE|Qòx>H«Rqy—NAXW|OÅZ}|×EUÉ:B¶WD=Fá\0@ûG `Ÿ@ÄD]É=‘BLY•;C|WÇ<»DRY>ÙDÄ\;@þDy^ù?µCå^e@ÞCTau=4B’dW=ßDUf1iLÿy"=KðvM>¯L~lBqO `ê=MÿTz;‹K\©>fMgBŠOþjÔB‘PkB©P)l2AÕNçlû? MiC>øKÝ_¥:—I W/:¤HXG{{c¨_v:cx\pJa V½q–`ÜP¶n#\åP`xíiå^R†|w}n¿†t_N‡:lL{ÏcPK köTB˜_NÅ=€si_5JâxÞaòJr4SòEbaqK¾D²VJFOB™[½E<:>ZC‹3å]1L@zfOTñJÁkP\TO[z p`½|ùl7QÆzáaeJÉj¥RPBïk W G’d²RÔA¤]÷OlDsbSFJbôRØI]ÀNQA8Y£H8?8WÛK¨HçPÝFnDPcV,O„twjÐ_êd°Q¾OéB7»I};û8"GÂ;³<9J??'< II?ˆ5›KAE¹7 KmDÝ?ôJ(DöB‹Àä­ÿ<»-£Ò‚Ҭ̕ŽkL®ƒ—1kȹù¢ëw+¶Ñ¡‚z4¤N–Žtáœ{cr„˜Š1p ’>ƒ÷d¢J}¦Z5Œn{Õ]·ay;^ÿ„t"T`ŽŸvÊTºŸ`‰Þhhµ=žú€…½º«s½é¬ßŽ2½.«@ŒÁw¬¶ŒKÁl­ì·¼}ª”¼»p¥KŠÖ¼CŸÎȾxŸœʸœÛ}X®Î•˜s*ªî‘fo­¶“ fıܕ†k³µI—Rg~·Ë—wfa¸Õ™ypL½6¡í~Að©5‰æÅÖª¯‹ÔÅ#«D¾r§á‹Dµa£/Œ›®ÌŸŒŠ0­5£°Šº±«ˆŽy´,«“P¶°¦–¸-¤v‹î¶©ŸQ‰±¹ñžü…ì¿xŸù~ÁNžy‘¶é™ßx^¡†àv0k~>j}–t®d¾…Ão_’uˆ¹nÖ›û‡¸a ¤”ƒ7MO¡rv36¿•~iV-ý‡e6 ”kqœCÞ{µI¨¢©åS±¨‘çr}Ãj¥‰ëǦ®G‘᾿¬—ñ®<¦Ÿ  ¢r¡¸­¢“(™«)‡0’Øž›ƒØš^ŒÇ•/›»„ªŠ«’V¹]žt•>ÇG`f<;I—n;@ NGyªB@Obz¸C.OQw G–T»{ÅNƒbô‚VÞfS‚ÎBJOþsƒ>±H®rAjLþu)DùPÊw8D.PƒxHCîM‰wB±Låv¥@‹LØw@=L‹vÚA@Más³A÷LÕsUALåsTC»M¯v4@7MzvÙ=^Mõt²?9NsC•NÛqiE›O&tØB6N†vaBÌM¯w B›N:yBþN½zÀC6Púz"H)U°|ÃJ_W…}KUê}ÑHàR]{FD-PrvrA#OòtdBÔNkwBFM@yzBSN>zAÑN\wÇBòNrGTOÏlÖ@¥Ie;rBa 7‹<‹\g7ô;¹Yú1 7ÓWá4¾9ûUâ7ò= Ti9V@MT©<ÞC¥V'@íG>^ÉCYd=âD^Y:<ÔDã[‘=kE6^_?UE~[þ?çD[@‰EˆaÏKh>ŸJ m^?QGßo=>HHÀo[>ÇKr”>~LGuó=1LâwË?DN³rÌ@©Oye]?]NýVÃ;ÓKZY:?hM"f9BŸO2jSAPÓjh@áO`k±@KO¼lr@UNøjý@]O e =L]9±GUZˆÑFnd÷@Iæe)C~LÆe$FNÕjC¼Kéh¯BhK6ew@MG.d$@©De†A½FÀaöC>I-[GCvGˆ[BGz_øE6Iu^L°M^qdØeÓd’ÓŠ1“mް‰çŠcˆµ~w’q»_Œ^7T´EªPåL:J#LêFMkW3M‹Nnl~]ÍN’p’c;JÍy²n¾KÅwk#HI}\oTžyäkWânÔc—N gŸa KkRi)Pa`Ï_8Nïg ažZÄ|Ïu9xd[ðWgOÈG¥CâNæG¶JeXXOIblaªGÇkcamKºhœZyGukð_N-bfüaòZzN9PSèFFTR‚H¦BÙSeL%H‘K¼@ŸE(Im8:GŸME=µHšbhLÙN'wÊU]Q¾vÃOúOyr“P=TêoSáToÑP?R"oNÚP€o×NNN'w9]¢S2u¬efXujZ{Çk°Z»qÅ[üOJwpg¿[ ‚ÕslŽ<~öho˜$Š_hv‚õf0{dm•WÒ\»NµBÚhôSQD0omW=H‰iõP©G^”LrFòVkK¥CüUCG3>ÿTÃAŽ8N[=KÛ>¼jKV6I2rwgRS ˆy€¤rš•…Íq l¦i@ƒ¦p2c4y«eï[Çg–TîE[WôL^?»XOÁK&^SLLfÜTFFMgXSvFWÎNwIsN!EPGOYßO>KeµVÚLÀWaJÛ<RBÞ6Q‹FX>‘M D|:OJš@“>ÃC ;¤AE=;É@POEŠ>XQJ-;áM/HŒ9KI.AŠ?HEõ<»@ÇÀ5ª¾û¶œô{ ¥Z”©V’Û\ù»¦Iuú¿Ñ¬R}v· £ý{é¡Õ“#tˆ”d…h ‹—xBTôƒ•n3F»…Sq6Ní‡kxaO„‹uäZ/ˆÕwdYÆ•†9gážq–só¨8™RÙµ¢¥—‰ƒ¸¨M.»sªÑÀ×®ÊC”¯ìcÀýª%IÀK¨R‹;Á¶¦Õ‡]¾õ ú†¸ž›Š€uµÖ™+uô´û™Vpðµ ™Óm»É™‹gá¼ã™®f$¼›Xq¡¿‹¢:€Æ…«/ŒkÆÐ©•ŒïÆ~¨PŒäÄ®¨±‰S½^¨‰¯²k¤Š#°±£†ú²‰¨=ˆ´”§:‹¿·§DŒ¼»¡¨ÀŒº¥,â¼Ý¥Ž›Â­§ ˆ1Å㤠‚ÀvŸTƒˆ®Ê—¯k•€… lûv~^"ƒ‹{Zh2‹œ€÷hRŽwxbTÀ“Wqg@L’:h†2Šá^ã)q‡B_ë,åÏg÷5š’!j(7™“5g–3gœ?t®B䫃Œ™j`¿¢ÊŒô½ù©¹—²]¦pœ¥:£"¨O—›Vª¹Š•Þ¢ù‚…a›¥Š(– œ±‰Þ‘=˜Öbi~@KIjC>(Ijl@B4Nxu—B\Oéw°D3PµwHêT<|‹_‹j9‡èlTtщíK¼VQyç?qHrB¨Ku’DOiwUE4P³vADæN5t@B4Nxu×>M¡w„>ÖL-wáA½MÔv–BcM×wŸBM˜wDàM¼vËAZMTu`A´NµuFB×NŽu±B•M“t¿C£NtdCX^n83ÚFÛ\Ø=WE\8=‚C3Xç:RCWA;3E¸XC>±D][/A'FæXY?PDhW?E£_.=8E[bÒ<ÝEÓ`û9uC6\'8õBD\“<öH f>-I¥ns?XH“m)<¨Gçj|<`IÃkÂ=ËJoi?2LüqB™N3qö>ÂMÞlK>M`Ô;hKZ–=øK a™BÑN{hA­NÒiú?!O¦jMAªPZm:B)QoºA¨OÊj4BMcc«;«GÒ\s>‘H _F?NFÍ]ÁA=GÔ]`B›HŸ`@HGôbS?…GŽbb>WGaA©HÊdsE4LKj¹DûL‰hCåJÅe®AyHþd‰@Eæeã@ÖD±f>BœE>_ÎBœEâ[BïFf_wE—I_^MGN.^daMe\b‘ Ž‰Ø©I¡2ª7“ŽÄŒ¨—ŠC‰±‰j†h¢ƒý qÚxÎrÍq·^ïR-S‡`ØRÄI÷n#`ÉHz‰k KòviH›zñmàR^~€raa‡|$r$\éwEpþQ§~zÍa’v¥qÍW6`˜TCJé^ZR†QQWŠOTKFRõMÈJ¢`’V)T‡zìkW†Žv½W‘ucd³G9i{T @]³KYaçS(Q@b»RÑGGj”WéC!^1Oé:òTHÌ=-NŒA:ÄM¦C.>JNFEªJËCIDÍK Bå@FTfK C±_ÑS¼E‘XŒOÅB´L0B\@\D_9ð@‘ÁFªL„¾´›§r†¨ª…`-¤—ae¨™„pÃ¸Ž¨&};¿¤©#~z±ZœÍz'A‹jé‹(sµJã{_C>‡|cÓBx‡ês$S0‡ÃvP^é‰iz&cO‘g3dªË{ž`h’_g\žZŒ|@ª†œÅl¯`¤Õ’䳨tŽ%º5©@Œ/»8¥K)ºï¥…À¾W«€ÁØ©KŠ|Át¦…Àû£ê~h¾=¢Üz½Ížìq{ÀÃÃgÁäœmeg¿øœønsÅg§§ƒ.Íݲð‘TÈ´¬ÏťɉÅR¤^…Þ¼Ò¢…‰q¶ £dš³è¤t‰³£Ò†,µ2¦ г¸L¨ÿŠÈºö§‹x¸£‰Œ5¸W¢{ŒP¿Ð§,ŒsÅͨkŠÅÌ¥[‰8»8žHƒ,£ê‘t‚‘‚Ühû†B|ºe‹…Èz_¸†>t=R%ˆÏk­GЇSU ?)E[™@AFª[ =DáV<îD“TX>íGÑUIAèFÍWBF‹Wÿ?-DfYj?aDÁ_Q?LE^å=$F¼Z:ÓD§V: EU3—HFh…?:JÀgv=JÓe\:Gg²;~G¢he?ÞJjßCáM¯l?LAm<>ÔK{e>ÄK \?êKã^ù@7MÉfA?uL=h?àMÖi=AlPélœDÞRoNDªPžjÎCjMédÃ>§IÌ_Ü>Iï^fATIE]\AHˆZÔG+_ B»H¥dDÕJfäEÄMse•C3Ke—AIH`f\@^EVfQ@Eég/AmFKbpC F[^vCiG`cF5JÌ_.NNÈ[¯`ïbûR=‰‚†ñu4¶€ªÛ¥¨U™Ì—m“h‰#Ÿ›m˜«|b±W¨ˆŒ>œ‡x~QtšdKXÈWúNèD¼aVôF™mÚayJZtLhLjwlŠP4}^q³^Oƒ¶uÄaŽ~ÂrÐXWƒ\yÉ_š‚üuXšgÝT‘GGXYK|F‰XÅMvD•TX“HLnFghPÆz~¤]~”1}é\À„_iJúsšWƒCWpG\Lºm\^N®]¾QÆJVƒNÊL?UÅMIx[8PFÑ`ŠQ DÍm=Z\J‹}ðn›XZ–9¤z¦˜á”Ð~!²…÷q§gr[zNÇL#Gõ>»YkPJG{f³WWK"f®Y|M+nôb XWsù_5YÐ_pN E^lOEædÝVÀG¯VéOëENJ*>5C³TÇAiMÏ_ëOfUwnº`¶f`xßbFi#x\VÖY4x–OnNEu^SÙLÒrÏRÜJ‰jÆM¼Fžb2I@Hùt^^S |@j¦S^}ylŒY‹oÌZ§P2l9XnT«…swp딩àyã°\¢q“ë³R¦všÙ¶Ì¥¥™·œb“çsI‹ôz Zïmš\çEoïcQLmf RZogTN¿foTQHñ^íK@FÕZîIŽ@_]¦LÏ<iÝ[‰GsЍwjpdœ'<‚`œ%ž2‡<“›(‚˜dŽ ¾½tNY„zÚa6GÓnò\½J‰te*TÔwµaÿH÷~ÙiJz›k!OŒuh|Syu@c”IFz\gîD“q°^Ab¿P©CØODõ;”Ko@?ÊO¼HæEÀRWKÕESJ3AU,MÞE¼gñW4KiVˆHéT,H‰CÒEI8ö?KÃ-¨ÓƒA»ŸŸ¥za¦‹«hŠ“|{f ‹Óxøhèš?‹Cf²›*kD»*¢v ¶…x° ˆËa ˆ²qªK·‚oL ‰­vUV¹_}c3’ ƒ“k¹—*‡äl•É} [Ü‘azZ¸‘œ˜k[˜Z‹½}U ê—ó†%§n›„÷«¶š6‚ã«Â™“€Î®—„‰1´U¢*‹K½²¨û„KÃwª®ƒöÄ¥«k…ÄB«p„VÃô¨ ~ÇÂí£Kq8Áœžh÷Àž>lư£]yÌF­[ˆÇK¨‰k¿ÞŸA\¼.p|w³Ç—H|0°ÑšË…„¯/‡²Xž®‡r³c¢‰·D¨t#·¦L‹¶M¢–Š:¶Õ¡G‚»E¦èŽÂ̧#ŽûÂw¢Ç‰×½™žx…ʱû™ïYŸàây÷’{ˆ…pRŒ²‚~d‰ÕxÆZOˆFs²\‰ks\‹uúRÖ®m> ŒAc÷1ˆœ]î1|ŽÙ`A,G™~m….¤Í‹cdð¹|¥¼Œnñ”È»d¬‘t¯<¥ •B¡ œö™]¸—ñ›^…“K›Ô†Q•’™ ŒÑ˜‰–zÚ…ˆ÷JŒX5i =„Ež_aCEI­mC¯LÀvBENrz¥B7N¦zîGPHyØJPºv6HÃMÙt’D*LBt€CGM/uEßOw°CŠN9wA@Mîv+A!Nyw?A•M£xÉ@yLèyßA(K.zÇCÀKºy›DáL¸yŸDÓMzeBL¸y×?‰Iy¥AŸLæw´CÞO$u¸C³PtlC;PTsEÔOfu1C}MLxB}MLy»B(NÚzÃDòN{ÃC N!vBBLNÝt»?úMlx}>MÀ{@ñMÒ}@fNS~$@®NO}§?¿O´y”@pQ viBCQeréBCMók´@SI{gþ=EÎg,EA[–<ÝD^VI>H×T?ÝH^T?+G]UP@LE‘W\@VCZþAôDña@AŠE2]×>dF WË<GÝSI=/GXQ7?ÇG=Uc?¦G__AóKmfB>J@d 9tEpb˜8´D²`³<#IªdÆ?çKÿh®@¶Lˆh]?£LÙf@›Lla?sK `q@%Mòe~>)L'g>¬LŸh AëNCjÁBÁP]j&FR£h‘DCOcfv@™K‹e·>ŸH«bd@ HW]d@íGY¨?"Gº[Ú>öFv^>«Fe]®?ãHWa£?IadnBüJ$d‹E6NÜbFTeA¥G cgB…F]_nD7H«a™FPK¾`ÅLïOº\Å]›_N s›r²T!–%‰êl–v€‹hPªnôSò‡€Âe¨’™~a”~>`8|øh¹UheúXÌL¸YCVêKÕ^¨\aNf a)OlqmhwN½y?j@U#{k2VBsJePÏtQiØNSzRk3Mñm«WFKhQmHéhºW®Lh°iÒZž†âŠrG˜_‡˜g”¼xñUV…bfbHvÕTÍ?°nUºH¹p\¦LÇiX&Mh\TfeÚY}NbhÔYOJ~j Y{AÖn[ÃB¬z,m0XÍ‘ç‹Üv©•G‹Qj\pv\GbéSMeMêKDša\ M«n6dO^aÆS:GÉa}SÚHiÅSfG`%NÂ:IeRLF“mS]¼K^gÒW)J‹WáKªJ}TAtHÇaÊRìSßy¸tLp"в¯w/¸gµ_žÏZ|R!{Ö[KLz‡`xM9nôQQFEbzFäDÒjpMÂLÍl°P?Ki]QêLb:OlM-_&L§MKm[V;X?‰¸ºn¢à–VŒ¨¶§~™°¹F§ãŽì±l§~Lœ‘n qeKÇtjºI—~£z>gày“tabÏl™ZŠJøb N\C@[WJÏ=æZëJ8-aP;arÊW¤I„%{miCG‘ðqN’™Nw²“¾‰×jc•2{¾_ŽŠ0r=[U†›wÎd̈Ù}ú_‚æm±Egˆ¯q¤T@Šzú`9ðqŸR(€êl8J™„JpIÔlˆFÆrè]ðEtW›MC¸K B B‚L¯EEJS2KsE|TaKŠBãPÜFAÁ_ìO¼GkU+I„]ÏMF Jë¨ü†Ä@«’ŒÎÆ®§ŽoÆ}­‰ØÄ7§Á~2ßsÏÂ]lHÄ]žpkúÅ«¡˜u²Â‡ŸDz´¼›r{´•¢hå§‘dfº££p½¥&“uê«·—vy—°gœô‚z±šžÉˆ±±b¡Ã…¾µŸ¥t…“¹¨TŠ=¼_ª‘a¿÷¨`Û½ƒ¤fŒë·½Ÿ®ˆ.±s›î‚“¨B™p‚šŸ˜—œ€˜vlt9‚@iŽˆxgð‰„y›im‘±~Jfr”d}±ToÚtA‡Ðiê?ujEÐ){¿Að¥hÿ¾¨ïŽSÇ…±e‘ó¿!­Ù­­Ÿ»‘É›Ÿ—‡•”‰•QšZ„¡’6›5„o“šº‹išœÀƒq¢“ Q~cMuÆ9 DV_þ?1GÅgBéK³sv@MLtyj@ãLÐ{ŒCÎMÎyKE°MñuÉDäL‹s¦C¡LåtfBõL¾vDÂNFw÷BÎM¾xîAFMP{B-Mêz;A'LBy¾@BMwKCëNŽsžB5OÌt‘BGN…v‘CõMîv£B¡MKxTAüL$xTAüL$xòA¶Kõv}C.MÊu—B\OéwK@vO…z;?N&|„@Nƒ}&@ˆN@|p@ÜNä{@{OÛx0?[P¬vþ=¶N{rAAMlÏ?ÞIƒg[>²DÃgp<@ocL:I=g\þ478XW"5f8V”6ý9‚Uß7s;T81<U;VAÉ[ <‘D^²=G¡[O9 FúUv»BZü@¤D©cÚ>GDP_§>ØE%YÐ=»FrV4>ýFVò>GèXÛ=+F_a>ÿH"gn=/H“e7;5F4aO:‰E®^<}H‰aÇ< K„ds@÷MÝfs>§L;hŽ=rKg@ M½fnCÊO@iÚ@TMkh A9MÑhB˜MéhÑBÙNâgàCvPæeËBOdÑB«Lfg!@ÿJÛe?1Hl^>ÍE³Zm>FŠ\C?DHr]7>¸G»^v= Id·†F1d@?Gadæ@Gõ`|D¡IcBFvLzb¤JqN~`…\F[ÖOcq:n—M3~Ši[H[xL\ZBÞloU-E3m aïLÅ`oòZÍy—_ÌL6z»f¢W›pedœU_]Q®TúX_PœXµY‡Ml6eGM0v~fòMëucFO¼hDX(O9f_\;M‹gš[ Mž_ÞNFLðoÙS#IÙui,Pó‚1~ù}¼—°Å‹·¤Ø–΂®•ƒ:`Æd¾Dp$Qú‚z¾qöWtüiçVhT‡FdY¹I=ŸVoH"9XW™H*3cYH 3‹aiJ7‘t;YGo{lg6Hy‡ÁuULOTvÇNÜŽrwíUu‘¹|“cÑš ŒÆj9 Å–Hf9Žy€ÈQˆ÷të^{þ~³f‰#vJQNiMG¼€SkÈIïƒÚj@Iòuäa˜F½^ôRHOÓI#GAPãI+IåTYMCHkUK'CXOCæ:TS#EÊ;&] N{A}_kQ6GÞM$DçB~Ì¡µþŽË5µ¢‹¸sžk€Q‘WwösE{z\¸cô}‹bMM…ŒÅt×I΢e‘;i®¸´¥ú€ô¹O©ó†5³ç£ …"©oœ»Ö®r˜‘Zv^;œ´Ž5qػɧ»ƒàÅ­R}^½ù£ŸwЮ•™’uè¡GŽ]kz—B}Pj’It}CÚ“©uô@€—~M†˜I…/jž!ŒÕ{Q¯§™v…‘º„¢f‰-ÀE¨ÕVÄf«~Jȸ­º‡«ÈÔ§}¬Ä‘žŽw°Á€œ[n ÃýœrjŸÁéœ[n.À%œq+½Ý™Zk¶±”Md—«rbT£0ŒSbŸ D‹Vcå¢IŽ5fʧؒ p>¦S’yt¶©˜–u³œv·÷¢~|¹û¥3ð¹H£~S»“¦†á³å À‹Š®§m…X°$¤G‰Ó±£¦™©ŒœˆÈšU~yáŒ-€Ûk¥‰R{‘jå”(†'o¼šÑld™g¼”²‚œd˜3€”]»Ÿæ‡ÒJ3¯Î“qiÀe¦ÆŠTɰ˜‹ Ãk«k‡³¬ú›®Š1•‘pxˆå˜ÿ„W’Qœ…¥“șə™›™ˆ“5™y_^l€~÷>oIge1?3GëdØAûK¦qÖAŠM x—AåM%zTB‰N;yD™O7xžC#O¸w1CmN¢xÚA%MexTC»M¯vÃC N!vÙCÅNŠy5BªLžzê?¤K|Å>Mt|ˆ>ÎKMyZA»LyËBM¨ycC…MÁymAMfyAWM@zAB'NºwjC©Nèr»B©N÷u±@SMýxâAÈM|x&BN"xx?¹LpxBA/MþxdAÚKôvŸB–M¡v @çNwÌ?âO²xD?×NÅyÖA5OË{OCþOîzv@ªN+yŒ@P{v£@ûP²rÍ>6NZnt@OM5i°?7Jg:=4D¤f³;.@bñ:¡>ÝX…5É9šVL5:V47Ö:Uy6b9zS|8‡=ÜUb:‘@ƒW±<ÚD]®=GÒ];•F WŽ<¥GQÅ<•F¯OÀF»^d;æD _F<¦C„_<|C`õLÀgk=aK×i@N†k‡C P6lµCÌNîh÷DÅN/iØC‡M’hC-M¨eÊ@|N~bÁ@ÀNƒ`EËOØcVCNÓd—? JJbê;ÁE—\¹;]EöXD?4I+[»>ÎIa>™K>ef?éNd DâQvdUEëN)eÓAÃIb$>Fµ_KB7G§cm?LEFdÖ@}H^fA,H¸c£D‰J,c¨HõM_cXKNIb pKi|^ ”èqïƒetY`nPUçGiÛQŸC)tEeÅPi_YáPmY]YYVÌp)eÇz;mc[6gÒ_\PRTGM¤SæUK¡`i\†Jòn²añJ\r“`-N€nëWúM8s>i [rl¬cbZ&a%X}SáhQÿBBy—lóI╇u}]ž¨•½Š’°ß¤ûŒ–žs–ºwv…ËoýKîiûN±?<^¦KÍD>lëZkMzIm¨Y2‡Ízqeb„ätÉY*xhØPŠbùSæGin©^QµkÉ_ SrcN-lAUB#ebRC eV3LbUžO¥F’`ÕZíMne³_²Py[™RZMºZ$OAJ‘UóH©?ÓRîEf<,V%KùEë[jMÊIrº]PfuF^uO7fìJŽGiQ\S€øt«n2Œ—mXŒ}¯dx”B„Gv%–n„~…Ñ”h‡ã…bŽV|!q܆)qÀbéjÀN§MReaF\MöaÇD\Ejb3Lc>NŽ@š` L!=hOÍ=¦lÙNU;o…PžAT l§UG‰Š|Ba㔂…¹dY¡ÿ”ÕeϬ^žÃm—=…E{'n_¬†'qVQƒíkEG”v?^E!sáZGœwŠ\3HŠiîS’EøUãMŽE£Q'M´Gu[¦SÒL¾`uT†MÖVûJ4EœNtAË9ÐNˆA8WSQI¢8W®Mý?·PFGADº®QLÈ´¶¡ŽÑ¾¦+‚˜ŸRˆ­c¯×q8I‚×h3GZ„¾o±Mz“(„Gežžh‘zw}¡”zT¦^˜‹v°ªÌ›–~ß”!zê—*ˆGh„£ü”Ôu9Àºª}„ÌÉí¯O ÈK®ö€Ê«“‚Ó½[¢9|ª›¿a¯šðzæA‘Rpt7Žrò<Ä‹ru(OFG}œfဋvrw«ž—XW¹¦£±Á*¬ÉˆÆT§wyËÆÍžÎxâÃéœðw5À<Êqå¿¿œsoÅ¿Ž›Ðp¯¾'›¯qœ½êšp§¹Ë˜‚m´G—ôj®+•bh…§;’Yj¤ÍNkܦ<¹jë¦Æžh^¥tŒÆc§<Ž­`j©L“ÑkÈ«&™h©±hôˆ2»²¦›ß¹~§ß¶ä§W޶–©ÝŽJ¸Úª’Òµ&¨u'¤š+U‘~…pk ŒJ|)fc™‹•ob¨~šx®Þg{õ¥‡—¨y?­˜,sn±×—Åe¡¹©]yÁ󦈅SÆ£«„çÀ ¨ÞV®ãœƒ†Æ•ª‘J»ˆ%šF†à’ýõ†•• šˆŒ™~™`‰x“œššeôpƒCENµh¢?•FÙaÇ@ÈJ”n AqNëv#BO!zB>ORyC€P*zÐB PË|øAÿNÏ|â?ûL&zÐBN¼w¬DOAtSEPâtBNàv¯>;Lgzh>yM1{V=²KÊw7>óJwã@ÅLxšBíMŠxÐAqM¤xp?ÖKÁyÐAqM¤xöB„M”tæBôMïw0AìMŒz†ArNúx?B—Ny÷?íLZzŸ@zLù{ CÊM›zLDOûx€AËNövõ?”Ocv…>ãN¥v(AšOxÜB:P@xA7Ow?A^Pªs2AYQ7EÝZ±<‚D[PDç]ç=ºEª]€=¶F,^?~D]]N>1B®X—>¢E]¸=ÕGVeO<9H*i>ÿJ5i¨;I—`ArKO\žA)Lm_(?~KIfL> L_já?hM£kuBÚOpj9GÍP±föH–Q‚i¹F˜OškaB MÕgî=›Lød>`MqaxAjMÆ_ÅByMd×@!K°cü@ûIî]O>ŽG]V±>¦HIYp<JÂ`Å? N9eB0QfbGdU†j¾G‹Pïi¾A›HÌaD@‡FÞ^ªBJEž`æAKGØcIDLM$gcCOK d¹DÇJœcINhdlLNPDg%‚Öyªk­É¡Ñ…“ ‹ÉqKr6a?OtÔ\ãH¦‹zÝcºz²pduYoÒdí‹·©lð…ŸrYŸlžZ'K=SÄP£H{Q4REIþU˜S÷JÚ`iVÿIäp-aNMLyÇa¿N*ˆy{,fñ…åÿqB~ð{yiµtbEà}¸h™F‰ž~>gÄ–Ât7›˜•Yy° ›¹„Ê‘cƒïhpo#UªDø^tMWDmãZNu{îk R͈ xTXdŒ¸yÂVU‰úwh`et—gâP(sÝjh\Ýq˜gSÂp `¾J¸^ˆNV<ùkì[ÆJÓrìdaRñcÿQE‚_ÜT JlNgµ\G`"Z0SJZ}P¼KWV‡KÑDS½HGD6ZìLHGVªI­D hƒSÌL¸ovVïLRhlK²G.g^KžPzu›b^m€hop`Þ‘‘…Êl£÷g¤7ö—몕]—÷ »—y‚ՙό!|){‡bÊZCoíN€N§nÚJ3FÎpÈO½Eê` MiDÀW1IòBmUPC³?Ma£NîGÅ‹4x¤dÊŽ+„6b¹ˆvFh¯wg6Q<}‘bŽAjshU÷1OlßTä<—l4Ut;]m[X…E5l+\"O¼d–RµFälY\ÌIAr7bT dSºH]^²L¥;ª[—IÌ<²Y‘K¼L}ItåtHŽ‰Â„œ–“’³¨±„ÁµÜ§‘£”Ÿýš¿ž×nfT\)tK]G®uÐ\gEÜpZOzobW¡OÖqøZqLåhóSdHÅXM:GªW=OFÙafX'JhhL\RMuYJCEKj<—<¹M­BN> TcKY©ð‘0»‡©<꺪ò‡‰­žƒ­”¼†‰h}ˆÐuIV&”D„ˆeݦ՘·wG³v¢>†¶P¥Ï¿¿ªý€FÀ6§O{6½œ£ }²½Å Æ}`Á£+Òºü¢U‚-¦â–Ù€˜ÈŽK‡?Œ4Œ'‘ ‹3”œŠ–Ž›áŒš½œŽ(š·ŸÐr¯íH¡QZlo>ÒC§\à@ÍIbjùA¶NÃv|@jN–z½? Nzy$B¡OÔzEAN|ØAÏN'|µA{NqzÎBtNyDyN+uæDŠOKsÈB¨Nès”@Njvj?ÂMPvœ?²Mvtc@.N[tÂ?úM‚tBP#vCÝO$vaBÌM¯wùAÊLZx]CïLfwEBÜLhy­AaN {RByO’yDVPÄyBNez”BM…{ÓE‡Nz2F3OmwãCÂOŒuµB¹Plu·@PŸtCBùQgv?B>Qëv@B¬OvÉB9PTtA”O¡n§?UMðe…CÒLd`CaJ^,?€F \^;¢@4Ui6™;mQ 2 9€T•4rñWØ6ÿ;_VÑ7X=3VË;³B¥W_?UE~[ü<}D°Z±<åEq\-9ŒCÍZ-;D)Z=ÕDµ^ö<:E`s>{EâYy@oE•Xž='CôYv>FöYØ@üG¶W®CðG W’?©DMTþ=–F:Wì<íGècÞ<áI l}?¼MQn>yLÉgŸ@mL¡ay@ÌK‰_U>ÆK¯eªàMhe@L`bO@”JÉa$AÃJ=aÐC&Kþ]AGHÅXÚ=°E^f=§I%bÊ@ÔLPe˜CLQåk.G¾S×oaEUMli @ßE`_„BrH5_dA­E7^áB­HªcÆD®Lf•F‡MÚe*F L¦e(I€OfeVN#Si9‡Ì€úq¯Ê£f‡Qœ“ y‘¬t"`¡‰ y¹c3¢Ú“|%™O~ªô‰jxr“ç†ÐkçŒ3uSWps¹XYJÓ\”R4L«S*RIL_WFN‹V÷QI«tke^LyƒflJ.“«„ŸdEš*˜¦€c›s˜V}™F‚/`N…kn/LG0p[RÐ_r‡SL‚¯wÌ^ß‘q‹ƒsÝ”nˆ·m}kMMFlaWóI(o'Z Q›z_hßR¤‰«vHS’¢']‡– ‹sl†whî€Ó~ jã|5t¿Z¨xõf~NbƒQx@¹rd/KÃ{•k Q[píULCì`ÏP÷?êrÝj:Yn`iï\æUPGyViLzE™VÂKlHZ^€O×Fc^²OqDÐg÷SMakàRTMj²KÍG­dOH­Kg©NAP¾qRWþQ<‰És_7š…Ÿ†ê«¥”š—t«â“æÇž“¡{o•í‚MyE„SoÄiÍ~zi²ajÅaTšÂ[@PNcîKF¡[¯LîG™UZEdBéVxFC¿ošT¦MÖr9_ÍO´qÃ^RŸi¹V/IÓrT[„Byn\Uh=ÅhÍSŠ=ok¦X"Bhjú^.Iv‚»{ál(~Pjm‘”„šmí…fq‰sæhÆYá^PvATV¬K^ÚMÔhÉTKf3T=FfjY¿H_nSbKNcdP'IM.<‡?¼Jˆ=\>¡UàJù?ù`»O<¦aBOë> ªr—âqܱ>œSuﺘ »sY¸¾xnô¨!•Zn2œêŠÍni‘$Ïiˇs«\`Ój@N(KnP«n’NĉnAXü„jwfh¡Ž€Ëe’£“ñlŽ|¥îz§ÄuªV‚FÅ1©í€æĄ̈x&Ä#«5u2ìõ|Á9§Ø±›u–—k‡SZÚ{ÿfKA‹gŠO97Œk7N÷6Äx·X”?ɉÓpLI•™Û~@Lѧ∠K_³ÚuV|¹Y”lÖ¾?›boˆ½Vš¤g¾¹—-kú¹%˜uÖ¼ ™âx7ÃhœåwQÄýŸ¹u~Á  üsz»@…u¨¶o›>xC·°š uõ·q˜\k}¯ö’àe Ĉ´a}˜€•au—ÞgÈœ‰hç£Ohgû«/–ßt¸³yžŠ-º#¥ît¿º§Í‡ù¼å¢H~аâ™|´‡Œvjô‘º}òWà“jZc¡ˆœkʲŸï}›¾d¬¸„àÆ…³á‡BÂû«uƒK¹‹ ä|ζœ`tÜ·½š)q­ªý“¨pršƒÆcc•~®dQ‘ç‹®•¨JRYHpÁ?+F[=A6J=i‡@ÙLSLkj¿A^F÷\®6Z;·T.7¾:ŒQ 62yH£_TGÃVÝ?EFâU>?Et[&AGÈ]D­G7XÖD!GÏUi=!D*Sû;ŽF‹V<áGwcÙ?$KÐo?þL…só=MÅn[?M…h'@0L2d–?xLleM?ÂLÕcá>ÛM!aBªN”ckCOUg!EQOkEbRÓpäBæPt@@HPsÏ@âOoVA¹Mg3>¼I/`X@EJW_AàHÍ^—@ØFS^¥=D¡`Û>ŽG#c¶AÓKvh~E.PTpÔE~Np×B›I3f>@ÕC¸_D@/EK_Î@ÞE5`þ@ÛE8d2FnJ«g¨I¨M=hìFUL»fðJOÇ]êUDL­iq`AO?h2`ÎO“}÷mÈR Œ…sÓIY‘a§ |›‚f¯>ªBŠÉ›.”Ôvñ‰üz!`8|\h×Jýuþ]êFðx>hŒNÃ…dzŸ^m‰ðzQYÒ„5teW´‹nwX\{l¨Yk€¶k¥Yq‰ÛvÊVh€ŽT–±#s¶‘·Žxw‘”q“Å|쌅’nÞ~šmAVXkM[qH;p bSI3}+j×Iûx_‹DZk­S?‚mþ]ÏG¿k2coNµTN‹BiUZKúB½YwLÔF&b.RÅFiµTÏF¸kZU©KCq˜W*QJkŸP*K~b½G#Ië[tE€PôgVLˆNÌ}2V2L'‡}kå_g¡ŽR~¤“øsÊ‘}´iÚ»d?hI‚‡ožrŒ„¼6’é†myŽåzlnîjŠTèS`§PÞSµ_ïMjN™WkDþC ]òGMEib LEÛbWOÕD/cÁQ­>qð[ìCs4^§GlHWb>šmûZ?FpD‘MJv¸E¾NívþEN€x#B³KÂv×CÔNFwöA,NvR?:MÄsHAøMOr:A»MÝqâAûM]sÙAM½v&A5Ly/AØL&y–CrNåyøDzO{hD©O7}7E¦P$|ÃDcPmz2CiO£z¦C9PyDòO3vCíOðtBDeQçrjCSP¸rPBmOèwûAÎNzBìMzwKC¹NÂt5BŠNgqk?“M;Kwh=Hˆbó:CEy_Ù9äDb]d@IžW¼?HFV9@mE»]AwE]`hDVz>ëGŸUå<`G_Q=“G”mv< J@u×>ÅLEs°?)LªkW@LØhC°N|hC8OFbcB=O\COÙ`÷AÌNpgð?FP`iKCäRÀnUCcR;tÐA”P’uõBgPërãCàOVl`=ˆJàd];ÂH¿`p?“Ikaê<ûE¨]ÎA\H*a A1Irc=ENŠk(F4O4oDŸK(j¯A¥GßaÙAñChbä?ŒBTbdAÆEdDA±EÏd EHùfªHQKh£G²K¹iáKŸNæj?U•XZmdzDkgTKFÕožW GlT]IEn UäP!k•S_N¹gŒNBKOaóMMRŸlòM¶QÙyRžLf{#UiKšŽãs|Vø”1|[SFbhP’r+NÜQ¾~_nµq—’”²Ë¤l AŽ "šP‡)§v"s qØbRnwg%SèYõXúEíFÄZéGeDÊ`ILÃAEbêMæ?<`–N=²i,T´A†q5[mFÅwµbüD¼wc¡EïwŸh-I]•Í€¦gœšJ‰ñ{X‹š{¼x´‘¶‡Vzovzh²RÌZÒM,F)P›EtFiOËDTG±S=INGT³HÃBTTIEj=§V¼CQ9iT®AS8]OÉ@­6VÝKÜ=7hvWöAqs¸c¸Qy kºpì€Ëq|kàto»Tâ|Ei8Sua¥Lm‚TÝJ…kñVdN‹v´i‘O‘{in=L—rÜ_·HS¾G=CPfD&>æa@R÷F÷c7SoB ’}òYª X¤q/°“˜£w7¹åœUvS¸eœéq*¶QœªsϲݙÌw§x‘Ão·¡×ŠÒc©™8‚»VëŠìräH¦€$i EÉ„õwmH¹}7x“A|+mDAg–š„Ú_۬뚭v ½Z¦}ÕºÞöoԤŽs_ÊžõŒûc–§’•ÄnXµ§zT¨Kš{Œå€\jzk÷Dt:fŠH’l+^EE¡eYSÇ<¶k—Râ8äv/V¾5€d›@¸‘{aÔŸÖ‰ép]¤RˆÅdªŸ&ƒŒXš‰‚+`±œ–‡cÏ¡£ŠóZ£§J-^±³˜Ënä¹Óž’wÝÁ¡px'ÅÅ yvXÇY¡ar.Å顪pºfœ nX©Í‘tlPžê„¥f•›0a¦œÈ„«aw”‡wd~›†ÊVn>ÄB![ý>ÈC^Ð;gESaLgKÄmÿ:åFJcy:÷C¿W;<¸EZ:?{GöYÕ>¯DXÑ?bC]¹ADE_`XBEý]*BÌDW^5?“DgZ#>»FLSþ;qFóT19¡DPd;ãHr>ØKr‰A LlgA%L kÅA/MjLAÒMyf{B8OvcŸCåOÒe¹@íNžh³?>PøiÓB:RjmE(S÷r×CrP_snB÷NrptD|PÞm”APNlk?ýLg"BÏMeƒ?™IÒ^˜C¡J†]„CƒLüd HÊPynôD}L‘mC,JCdÐAÊEØ^AsDÜc ?pA‹dHA E½f,A;F®eâBÇFne›EfIçf˜GðGsj#JOœnS=Wma^êa&h½XŠQ‘P`VÈGŒEµh-T¢Ji…ÛwŒ\U»ö«ûŽŒÌʽC†åÅ·.„ÃÌ´ÆüœŽÉvG‹Ás°J¥|&j¥VÐpÉd,T fhiT¡@Hxàg;Mdr¿VÇ„ÛvÛT´•¥ŠÛmx¤àœV³Ÿ»˜Ž½šïŒwÞ‹š~…dú…³‚^lÿ¢Žzœå—›LšËt˜Œ5€…cY…{sýYÇ’Û…ÉrI„Gm1H¥w^—<u>_,DŒnÝWIJcÝP,H§`ýMuF4J†zAãLð}wCMŸ{6E{M6y‚FËMduêBxMír±@HO#u­@¦N u¤A’L>véAL4w@²KÂyÊAáMñyB:NÉxDìN—yßFãO>zïGÙPÖzÉEªO3{ÍEÄO—z6D–Oz5COþz]DkOÃ|"D°O‹{ã@FOÜxÞB¼O7yÈCýMdx;DwMåvENluŸC0Ofs•BáO“p£BNnkCArL©b BÐK5aQ;Fi[3u9ðRž4c6µO²7_:ñP 8º=ÌPQ6k=µOí4n>bO/;·BTR>LDˆYæ?âE‘_0=]FaÎ=HeÁ>mJÄi°9JE9_©9dBÃTH=ÞEêVC?DHr]¼>œEµZ¡@zDÕ\üBåEP`“B³FÌ]DiGó^´>CúZ›=6ETÖ:aEØPO;¹EbYÙ:ÊHÄg\…—k»•‚)hU~h H@h ZAHOs{qjèšÑ˜¸‹ï¨—¡jª‘#†uo™FmâL.pPW“Dð^NÝ7›nY[Dôtc0Nœ|ƒnª]ç†|z¹aÙ˜“Ýtº¤Iš:|)–m…¦iÄ‹æj—|Æ{.iŽ–C~€šò—q‚šŸ8•tuÚœ÷×pp’¤~)b|žŒ©yžŽÐzUiu“\@ãsD\6CérÙ]¿J.méWõOi­RLO^ÃLDGwWÕJH`e›PªJšmšQPI¿häMÝI™jõSfPy…lftoU`^QÔrÎ_IQ¡vuX¸Rks3NNQäwdPÄVÙvŠMyRêwÙMNu[N\KDsSQÖLfspgèb“‘Yˆ¨€©ø þ‹¯Š¨&Ь€¢%Šx£šYˆÍ~oƒfZ&DÚFqYPDóJ¨\ÏI†Oë^KÀNÊ^lM»L@bnR;Kè[iNsBRcdQ»B(s^`FDxf[zEÀsU@òg^P»Ej\¤K²H¼]ˆMäDYc¥SRH¾fŸYªKYg«[ M3]|^îQ‡p¹q9e>x,oYLyv¬`Ø@CZèF×1‡SEDe92PvDHAvS´JûI}dÛXùMük]ÀHŽq?b˜I-zAlJTHŒ©ngÉB„Áo‚Ïq^r×Z¸HªqhZGLu¼c†Hò{:mrL}ám¸L\upfIšl‘_KIÅn„`5Ict±^£J_¤hwC1ŠUt½G^”é{¼O_¤ðŠbdήš“[kç«’D_ã«Ï‘ß]°®…•*k´]š u§¶áÙz´´<žY…¦û•Ax†˜á‡Fd÷ƒ—q”NÅxªauIц´rLH“ñ¦E"œA‰=]¡òÇwV€Œ vÄŽByu[ƒ jOCß‚Õd-=¨‡³kÈFÙ{ÑZ#˜(‹¡jrŽÚk•ŽÒ|[W:vfJ g-WºJ¢`ƒQI^,O2DÓbóQTBxppWGAæz™X1>œxcTŒ4oxõZ 4±†Õs×GX•ˆGg{—y‰l’‚¸dô––ƒhaÛ¥†Âdô»(œ~lÓÅ£ÐrZÆ~¢—rÄ*¡Oq1Â} ·tq¾^Žy0µu˜äyª “v ¨ï‘'qC¨]“Ãp§¦K”´u ¢F’‡tß¡ÿÿl žðƒOŒ—ÎuÂ4—ëtÒ3,•“u\?­–Uz0UÝ™‡:e´”]€ñf‰4xt^‡¼‚iØž{’¥vÆ¡8–·v‚ B–åvlšx’°v¨“’Uƒ|Ú“7”%ŠÏ —Ú‰T§•úŒ–ÉšHŠÜ—Нƒž”×nu$†¸—<^×f÷|;JÚI1h±DÖGl¼BŒLËr4CÆNŽtSBOvw@ŠMvYA MâuÎCÙMGu¸C]MUr©CÜMls-AÈM}yÀACO—{âBVO“y|CuNxÜE}N9t%EpNwoåDPào„DÛOâq©BòL}tAïK5xŸ?µK|AáMòz•CpO÷w0E)P+yrC3O”yôD`P:zDÛOîyrE¦OÞwDƒOxCCÜNÎ{(CNí|æCO§{GC[OÖzúEŠQ­{jEüPØwšD¥PuòC“Qkv DmQ:w´CpQuPC¤OüpÎAÁMOhIA(LmbÊ9pFe[*1;ÙS6x9¸Qz6ð:ŠQ8q>pRŒ5¶=DQÊ3»?‡NñW(@ÊG9_¥=#F³_t>HÆ`%?ÊI£b¥:tE\»6â@;U›;ŒEËWø=gHÎ^oE5[±?ƒE^Y@›Fä[õBOH]/?óCSZ„>hDVž<D»R–;DeµD Pg£D)Ni}AsIcÒ?VD|d%?ÝFe—BøG‘d¹DœGÎ`­D¦Kb F`Q[igRëa‹o9f·krn_Í\Ì]ÌH@FƒJÚ9e?ûi\WLLs˜‹mt®»¥s…нž¥;z|·–¤e†‘¶~übnzÆ^@»g$SšB0]åRK±nb3L~‹×}Þf7ä|åf¾x%hûK«p kòQÂuŸuëhÌ—Ò•‡Á¨G¢–“ðŠu¬veÇNÀoù\ÚR¬wekK{{läJæx¥kãX†€1obLzíiIR1ˆe|•^À‘±‚ó^s‚möJÏw¬gLRqq lÏX-‘SŒVŸ™›’…¦gšzϨè˜Ìw ÝŒ–m霻‹oÐŽß~»\ €YmIRt+\.B r4[¼C;kîUBKæd:Q¬Iå]KLŸF˜^ÑNIlÖS MFpSèHjL G8eÿK*H&vT\R7hÿQàImnÆV@K^vøZ*P~sáOÕR‡v`O X±yùOVÜx$NÒQuâLèNÎmåLL,tÖa‰Xp0t®›±¹}”› “}1¬{¡ºˆÑ´Û­•‘/“A‹ƒ}¼fúN§NGXU>òKZçD†R…^I‘O8bN¾JBc¶Q»…C|óŠUŒqPЧƒ`Öe[Wx<ŒQEÁ8ËMr=Œ=¨N4A6FVEN+O§jÙX5L«peakKgu…fLQB‡2x¹]¬~²b ƒ’o:[s¹^ÄIŸtÒ_aH‹v^c)LÞwWf‡LàwÀg&LüyXmœOÝ}ÙrüUï/qºOwƒ¾pSS"–&WÜ›g‰úaɚфÝZؤGŒÀcÒ­R‘?f<§‹±Wz¢ˆfO¼¢¸ŒK]p¢œ†jú§}—Þz]²× £‰ù²Í¡‰æ­‘ñ‹œH±qk‹~dÁŽB„Vþžˆ@\Å¥—±v]§¶šo‡!ªqšpˆ·¡¸‘¾xª”u€þ`€‡ lH8†¯e Bdp¤G–fñ[ñ‘~x¢OjefüD¶q«ZlLÜcµSÛPaæTnRÇbyVQ`f*TIWe P¬<ûacKI5thvM1Nt†X 9„Ås RÇŽ„‚k2’õ‰s? …²l÷‘Ëcœ=ˆÈcˆ±¦˜µoMÀ¹¥Îz1ÃZ§€zQÃÞ¤.wcÄ©¤zĤÚ~ྩ ‚~Fµ·š‡yp±I˜huº²ÑšQu°4švX¨§–¥u”þoô {ˆS ™†w™:Å‘›mÍ3^Ìd+N ga4ô’ q*E´x^\Š~zÓ^Å’U…/b® ¯”þrÜ£…—Xyù«P›L*¬“›Æ%¡ä˜@…8–è“ ŽpŒÆï“‡¬Ž_•ˆS“q—Šê”˜ñ„2R–1w,„æÉ_hØy‹J¿LðenCH­jÜAäJ*t6BùLñvzBÆNžw^ANFw;BªMÆtEN^sÞEcNÆrñD OBt`D‘Pów4BjP x®A@PËwãCPxãD‚NŸuøE#N r!EæMÔp'EpN uRB LÛw;A'LBy®?šL´z@ANUyÊCžOv;CPux“@?OwyÈBÖO­zeCñO"{DåOvxOD P¶x_C×O½{ÉB‹N]|pC´NŒzkD-O=zÑEÏPSzGRÒv‰C·P8tø@3P#wCBQéz»DºQgzAbN4tûBäOºmÎBjO!fó;sGœ[q2h=iT7E;‡T 8ÂpE)S!?ÌE1Vg>XF•Zj=!Fµ[ >JH3]>@L“b¡;pH^å7XDKW‚:XFÑZŸ<>G4^<‰EdYø<ˆEZ/>"F‰\¯> Fž\x?@G‡]ó>F-[!?þD{Wö<BBU9<7DåT;}GÔU,=°JÝZø<†KÃ`È>iLuk’<®Jsq´?DLñvæ=ÙIOvÅ>þIPtú?ÐM5qy@ÜPXm,D‘TÀl3DàRZm[BÄQílDSTNl•D)T·l.C?Q%opCÝPjs>E/Q¶rÁEdPGl ExPegšEXO=fuDZLfdBIt^Ú>D Z4@^De^v@2G`œASHÁa†?øE÷c+?}G(eœ@HzcoCéHµ^9EXLcInQPjÐR3aEoBq|u°tdÙ€ßuÍa¡XzO_Né>”@^YMêJÂ|g>Yò—ž€Pg‚"„£[Y™ÿ‡Æh… s^Rás¢\C³ZöMø@ÇTKMªE2l$]«K‚Ír°Z•„ rVès¬a„JSvEpYÜyìwpcÒ*‹v"¤2?—4…Rƒ—z®j±} sãnpóh£œf’õra”‹DrÖŽó}ûh¸xãa’Kkt6^|G/wtbßFžsf_ËIÄ`ÛQHâ]nRÒI ˆ3€Áq ž_—ˆ€ª¬L 7ƒÅ®ËŸÅ€§:—Äv^˜ˆ¼fB/‚Nc“ˆ£xìUsuZXCáeÝP¸<ŸcS­Fê]”N‘G=Y´JFp`KR·HÒq[4KÝzIaMPmðO6IiJJÞm­L9BjÎMD@ÚhJVMót5]˜U°t}PúUw8QWt|íT%X;zôLOtv–KLMlJHöséW8M-ˆDpê^:‡ l_«‘<€OqCžu΀µ[®y“•§ú£’8wh-_ËWº=GÚX@‡k€Sñ@#jfSx@Zh6T}Cç[R Cbd–[ÐIBn›dPÈxAn›_rDpg-Jƒuÿ“M”Œx?žš˜é}§¼ytfÀcØTP†PuAÍUD}´\ š©’»~.©j¡ŒµIªÁº+®ˆ«²¦HƒßŸÅ˜p~¢˜†yU¶u ÿ|y»½¨­‡z¶º¦÷‹É¸ó¤]ŠÔ¹¶¡×ƒ¤¯î™ü{žÀŠm5™çy)R¾›žwÝGFšåzSáˆþiÝBVsdSy6>lQB j]Z0Q™m#kªaÛw¾qÃb«xÒk9NlFXWA?]CO©9(gõQƒ9îwC_Cî„3u*aâ‹É„!xÁ,ŠÂ|*ŽAˆ¸tg”ð†Ûk?œ‰†Õd§;‘0p°¶³¡µƒ½«ó†âÀ««‚àê!ãÃù¨f€ãÂ÷§;~[ÀI¤`y޽ ¡=u½g¢Èt2¹ážu8¯ø˜¯q€¦D”£lŸ¢ÚŒ¡a+œÆ_Q}“ÇtµFY“³r|>,˜:w£8T™»|F²•¢dT•t‡]jOžf’[kg­·v•¯’w8¸rŸ”|£¹Ðž7~«°ó›ƒâŸÀ•Zˆ‚•U‘#Œi‘#ˆÏ •‰>‘ì• …ÁŒQ•Ëu_‚½…`~juuµKÍNa`¾AUF f=AÁIûs{BXM>x AòMáwf@4MGvªBúM8tCNrÛE}N+rèF@Oös6GÂPrv‰CSP¤v‰CæQwãC#Q.wxBMM–vêCeMÖu»ChM vBC“Lz{BKP~½BLH|B’M~yBCÄNzx¤C¾Nx]B-ORy¯AÃOÂx=C¤P'yECÊP6z3CèO«yÑBþN»yÞDàPT{CpOz+DO¹wEOêu-DOwÉCöOvx¿AOÞx„>!MHyéAŒO£{¬BËO{@EMGvÁC Q3qûC P-i…=mFð]ý3ò<U5ï8çT19è<™VÄ7¹=ÚU>5 >gUÂ8ç@éUÕ>ÞD©V+?ÀDÜVõ=‹FWÛ=DHY’=6Iå[>¶K b•;9J$a+9GEXû8]FÆXË;¶Fµ\ô;–E2Y¦;œC&XÊ=@D]C@¼Fåa>ÕFÎ`Õ>þG™[`>ÞEˆY=CöVa?–GjV“;ÙGâV ?ðJÈWH@LL4TB¢MÏWè@ MˆcšA®L¼qÿ>gJBw*=I5u'>ÏLr=>—O…nCôR¿n_DÕR›o5EaS'qE!S¦nEÔR[kcDQçkCP“mfE›Q±o¥FxQnOGHPJj¼H2Och«CºIŸaÝ@ÂEh\3?«CE\xB²Ev`KAƒF‚aHBñG$c¼A[GÛe4AEH)g–AzHúbµCJÝ^UELLqe¡IÚPÖh8Pç]íl pÁtÍqÜ——ø„ɉŽ3g VIW=SE.EtYK°K\mkVP%|(g_Mûƒr„R%€Kn«J‰sÖb«E?VlNý=W-NŸAgvoaJ‘‡dr¼N-ŠnsKà‚Ñk›K €up±TVvûl½M¯wùmeVޝƒmtçŸ}˜†eœ—v‚Ö™Y’î~[¢Ö•wt²¹/¦âæ°GŸ~±œc]mW‡@m¯Ler°RpA³nÌU÷H|oja˜P`ÿR(JCUïI©D n^cQTf…jpM¢›š‚â­a¡ƒé¯š>{ŽŸFûiS÷~ìbÿuo9Tl}SÏBýV§Gë86\APýF|]ýO£H˜ZeNÿGëY¤O DÅp¾]ûH€ókãSWuC\uRhvëW=Y^qAQÙFŒkLÞ?Yno][W|qÑnyQZ’Z{ÒRRB|OT([x¥L NÉvÛKèHqSL2Fn¨N,EewTWJ“ugP#O\€pacÞq4q{¦—›P¦Ã¢^”~»u~i¶Y#EþA´\iCáI9bJBLØl£R/M(jaTÄMñbcSòL}^ÆNÍF­e:RxBÁi×T»AÏkyWBšm¬Y`@OrÔ_ÃEãjcYÀH]mŒ]ÞI=oy`ŒGŽu‘hLätålåP~$Ëhn.•QzÚ¬››±…E–Ó~ý‚†¢{Èvƒo—`fDòtÉU>Îc*K=<Ûd’RNFñkéT‘Gìo™Y)H¯uí_óJmuR^@JÑs¢YhJõoTUcHwËb•Lzüg«L½z]cyDzzh¸DiwTi]Fü}–o:M3ŠLyZS‘¯€§Xå´÷•ÝnÄàävX¿„œZpQ¹Ý™ÉuS¯–7zÝ¢_‹Nk+o*B{òW6â|iieL¾ò†uŒžÎšQ‰R±Æ§©Š5» °Ú‰0¹Ü®¥Š‹¶h«š8»¼«•{űgŒ ÉJ´'qÄL°¡‹ÔÂ~«i‡/ÄM©Õ„/ ª|ˆvºx§0‰Ó²a›ew°y’„g¦<Œ‹hG‘ãyÓYÈÈl÷M¢€jNÆ~hqD`‡„k†{}‘’;`”Ð÷s‰c}Žf.x‚n:VxkrRê€åj-OΈuO^q…ÿxÔl†h¿u ‹0„Üu‘1>a±™˜~@V^Ÿ…±dE¢Žüpá­sœ€»i¨¹ƒª¿AªIƒÊ¿–ªNƒÉ¾"¨ {²Â«©ÈvÄÂx¨xw÷Áš¨Èy ¿6¥Äz2¶pœw¨¨q•Ÿp[£Å‘ºp¡ qÖžN‹·pk£Fåpx©»’i´¨%”Ûm¡•“vÖž”ìt¢¥-™—s(±ÿžˆv<¸¡Ìt¤¿%£±wýÀ@¤EI»ð¡¸ˆ+²ÒÏŠ£‚™å‹%”;”‘bБܖ ˆWè–†¬Œ^“TyÒ‚¨zaÄk°v\KNC\“B³FÌ]4B&LnBƒNêuÊACO¨w„BOÎuzCµNtŠCNthE¼M{slFÛM"sFÅNEt1DeOMu~F¯RÚuTERNu˜BëNv÷A®Mw"AôL°v¼BlL:{‡AlJJ€nCâLqB°M&zÅCàN{gD¸Nß|>CÇMhz±DLPw-BP{t_D²Qw;DaPLwfD!O”xÖDÊOîyCáNxD OutëDXOsrD¦OóuBÉOzÚ@ÕN~{X?8MŠyFB;OyD¢PòwÈAºN÷v|D'P rQE§Nci‡;€D5]w2‡:UF6ˆ:—T»7ú;ÿV¤8þ=¶V§7õ>4Vu9º@X>=D¸[h>‘DeWý<ÊFšWš:˜HZó<Jø]=¨J`v;†IÚa™:dG%\ò9nF4[C;bG_e<Gö]k:ÌA«W<6A§X?>œEÝ]s<”F„\Û=§GïX=0F¶Y2=ÁECZ9@?Ij[><Ij]ã>YKÐYCQN$R¿?öLJONB¨MWA²L+j?¹K0uá<{K½wG<öKàs >ùMóp;@~OmpzBÄPNq}FQSßsˆER•pFEnQYj”DQŸgâA“P=f0C‚Qk"F3R qˆGkQoHôN#iòBmH cA/Eö\t?áBÇ\6BxElbþ@ÛE8dAGËfö@´GiÄ@rHÃfûCúH¾a=EIKy\HHAOdPM¼S²f,[¾`Õk p·ppja•БB|ǘXlbk©T&@üUÑIªFêMÎC!IIPúH_TåshIe‰^rÈY܇tvgUy=lÍJ#c[)DaöRf=ƒˆk¨IŽt9I”nyûJn•ez9PMLw¹U©uÒ`uH†_ŽP,I—q.aÂRÄI…•kœ­E£3ˆÌ¹)¬b‰Æ¾8«T,È?²mƒT®õ€Ê¶ˆ£¾~ºžZŠljòŽeqÐX{rf¦[Šx:o[aÞjÀ\ÞM¸_ÀNwIÔW%KÙFçtofÙX¨“<‹Èw•¨îšƒ[³g¢´P§z–¤mð…&sÁV;mìT`EùfµOœAWäIš=0W“NADÝbÒTmLƒ_|RNJGY¢P¨BòlX JFx c$Näzaiú^§„GuzqåyZbMZmkÔMkMëv d>cfaЇ:‹WzŽoÚ‹ôl¥gY~;`¬k.}Ê`±g°tÝN,L+v¿NÑIHk0J•F`p;NµLnpLýO^o5LÀRõ{Ž[¡[ÈtðjžˆPz#yNof”hÙQãI c*LwH“`­KäLeJOMg¨QÐJìfðT¤M´fÎT3LofoS4E­iCU AõlöXJ?uœ`ÕD;~[lbM`tÚ_ÑM'uGiéVÊvˆf\JYxGjCB#yošC)…K,b>¦T™‚´µž¿{™<|V„䘰’¶†û“W•c ”‚ð[Pƒ:m°N¹wãk„V„jMW`FXnæTgDil,U_FƒlãUøMÂmçRJ—uù[?L÷wµcN…0v]´‚“qÍJKpJp~Šm)JI~Jn*J!ˆºv²O®7~uW¼#™ÉnlÇ:¡ÈsÉÀÔ™–m±è%p›lXjþ rµSç‰Äf¹@R} Zq7…{e_œ@(ˆdw¨U˜š;tlF¬Rœ[z\µ ¦a†´¸^«œŽ¤º­¨è¼Ä­üĽ°ÌŒ‘É»³'úÈбóŠ5Èz®8ˆȳ¬ü†aÇ™¯lŒœÇ(¶ö“-ÆC³¡Ž\Ĩ„ºôžóƒ¿¡”’ó7—è†arà“›‚e¨“;Š¢r%–>—*‰ ›“𕇇›»•nß–7‘‚µ‹²ñ‰b„”wÚ‹£{Œa‰¶tðM—ÚlõMä~·m?YO‚ýpç^äŠRžv^D8P vWF¯O%rAD†L hý:HCvYè1¬74T‰7Ú; TÇ7=YVæ8>†WÎ:£? Vè;QADX)?VCm\p>«CCYm<^F‚Y>: I¿]²;Jˆ_H=Jc_<ÒG§a[9Dµ^X8E‹^§A­MÏPA~L¨S`@zLCfA@HL1pÞ=?L¯wE=ÆLSwC?mMt<>°K×p½B>OWrØDßPDs]HäRlqŠFhQšj:EªQ¿hÎBR j{@;PCmíD¿QÍsÍGSGs:FrN2i²CÛHcâ@TE']´?&CÏ^@OCpc¸@+FÜfð?óFZi@ÉHÖkõ@tIQhD´I?c‹FNv_JïQ¹cÚN%S3`dm^³bõqCiž_ù…¹vd¤‰¸sÀTÍnxSžF]ÁMEL'K¸C’I(M LÊ^\v~r¶u‡Šrl/“…ŠÛpHˆ:€ógim–fEKùj]Ä@!†¨q@LøŒ>tÛI"’Òw¡MZ˜‘{¨GZ™€`WßShÙKÁ]¯MæF g‚T+Jo†TxÕU¤˜özeÄܰR‰^Ì£¶È†ÊϘ¹y‡œÉm´ƒþÄú²}ˆº˜¦ú‡Ä¥®”~1‚:qx„s}ñmÃv lØ\hc¥SùK¸RúIâI“_KR*S©‡~]nužÙ—í¯Z¡^ƒ{¨þ™ly2†ìu4['`M¼;#eKOìBÆ]PmC†[éPþEŠepWXNceT›J$eqT:GÀmaVÊJ¾pÐ[ G|èkvYŽ>…_yk‡Ôw9rOo’S]vâhÅc_ŠÂˆy›’‰Nš4&†t‰u€U„e…r}‡„¥xÑ`êcówàU{TQmYOÛRíkßLþP"o™L'Pñs\QîPQsÙOŽL¸lMžGxõaBR0ucóZEse^ƒSûgªTSpdRgTÕ^/NÊK‡]pLœF§_¡OSK-jô[RkúZ“M÷gÄT­BágÝR?<`ul`±E•…8w_z qcb8~‡zËq…[t™_p{JgÝ>H{h­7+‡yˆJ³™ì…s‚®ššõŽêžb…ל›–Ø|öŸÆ›’w¦­L¡!…‡žz˜]~X–-”3zÈ}ÖuÍ\Ætoc>OŸoð`žQôiå]X‡k:TXIçwã] GÂzf+RÇŠ&~²ni¨€|hWŠow?Y—ƒrp”Lm€ m|H߀Qb~8C…jn:‘¥¯Ø`× —Ùjç ÝŽ%m¼°ß˜ko´e¯lÞ°ž¿~²[…ƒª´šŸ<ò¨å˜Ywâ¢Ã“†uC¤È“»xÿ©ä–O~ö¬ ™"€:¡²PuhœŒäpäžÞ‘ u%Ÿ²”¼tà¡Ó–àw¯£o’âjQ©—‘µ^y«’b±¦¶@o¶¤ "|>¯Ð–³z™¨g˜;r™0šø”YŽÚ”g›d‹T–Þ›¡…ì‘i›'|Þ†j—n½uÿ€2MoP®dFB{D*WÛBPIöeDØLÍnPE¨OäqÆF­Q…u‡FƒPwDâLšvâBÈJïxBõI0yÆBnMbuE³PÑq{EkQõrCPït @rN4uÕ?]Nv/A·NçuÏC)P@wkAN½yõ?wM {A“NÖz1BeN=zøD O>zpB”NÔxÓAÿO$wAzOÊttB”NÛr EŸOqpYEåOIpºBQNtÍAæLòwÊC'MswEEÓN w€D,O,xÛB1O…xBOèwÍCPÚw~C~OÃwlDvP~v…D«O&uèEÔNrHB€K¨i‡;oBÌW=1Û5õR©5s9zRÈ7Ü=åTG7>nXû7ÿ=ÜWm=ìAÒWÚ@ŽDÜ[©?–DnY£:$FÎYŒ:ÉI>_^;ñJÓ`$<ÿH`Å;7F;`•9WDM]z:_G»^>•IÊe+?°Güex7§ATWa7UC×Qó6¢EÂN7DÈN]8HE…Q:ÿGŸX‹9ƒH×^=ÛK"sä>GNÐw%?oM«v_>]JµræBNuœB½MÆs{GQ,r…H°Q3néFzRÒmýET¸p=EÁR sÇEþQuqI>U¡sEFêL+f˜D©Gh^i@,E_o>&C$c?&C+d„@`Fße@#Gøg¹@±HqkBôIriDLúf-GšPÚe£LTîgáNSV[Œ\-SzQÆqºauOŠvî\_M%fáLÝE^]ëJELa§RGTJdÔ\ WÐTK]Ub6xªx w­Œòx¢›A™%„l“¦±ytæh`NßoÑ`5DŒ/~w_tŽî}°\ÂŽãwEUÊNsÇ?Ÿ™L~ÊH´ŒxuøN¯mèW¢IjíWMW‚puã[:–˜…ßkô°ˆ™{1Éù°Æ…aΤ·º‰èÌx´ë‡àɪ…å±’¿´§oŽÐ™"“Õy@C…Ïu‰ñ‚ušzÚt’dB^Kc—Zpfˆe¤hb{EuÄl’ ‹y©¥îœ… ¬A `†×‹Ç†tqéi|V…F€bŽNU?SaEPÏDê[ùNGò]QQÂJÂf]YŸJGr¼`‚L¸rì\Jïr½\¿F7{cdœLS‰=yøfÔŠ¼{”q¸pÃT«VªkìUÛTÈ‚2uªx¿›q“?Œf9˜Í•U•]Š–ý]†B|Ì{„\t`ny´fñg†njQæUðiJâMtšRÇNqIOúI½j KG;iÈMáHÖmãS‡Ns±cÕ]™uêmÞq tsjml±gKY•O0YÂJ²E']WM×Lënß`DYõo~`fQªd}RHm^¿L?wh¯SÐ@$…={khl„¥„ÍwQ‡õˆ\€†»(n—^l`E'z¿_í0©}ëf»<ô3nêLIŠLyb—ðˆÙqh‘Ò„ŠU •WŽHg£œ\”=z¿°u§£‡A¦ëŸÈ|’/ju/xÊo$dày/u oÀ\|øvz{+nÃYOÍhõGlÁnÖV*ŠºVsù“w†‰saŒ x.UD‡ËpßGE¤h"E#x\aOGÞiÿP Ã’ØoŒÆÏŸ(q¾¿š;jš¦‹B_’znrEzwËSñ4Ãw»U<Þ€¦e:Cb…j‹òsoF:‰­v|Z©–fˆfx©­øœ˜Œ[»%¬M‘ÜÀ|°6AÄ ¯\‹–È‘®UŠšÌÇ®¦ˆ?Îÿ°ì†Ïs±p‡ºËÕ¬ˆ¼Ä¼©•‹èÀ|ªtŽÀœ¬/Çt¯2 È&¯8ñÆÛ­TŒÖÂ4¬“¹4¤‹ó´C$;®•Ënf¥c’¤rĤ盟‡ª8£†Õ§Íš€áš9‰hdB‹/t’I¢~ežA¨y§ZK7³{ÇXs5Ø‚Y`G9–ˆcñ0ÍŠ×_‰%‰:a$:‘ah¯'S’ÌoI7ŽÊoÇDzÜr7J!œ~/NÞ‡†"\£œOdsó¢è•Z¯ H‚Ë«µš[~¥S—2{™¨™S| ±ûœ‡€±ÛœÑ¢œWAn“‘xó_«‘y’aï”K‡d¥›KŒYhŠŸZ‡‚VT î€”>7š6zÛ=7’vÙQ~–¶FrÁ™ø„Qm÷—aˆ`sÈ ‹‹Z†îŒ šé‡â’*Ljƒ•˜օ‡€—{÷€²€C[¬[f°E2F$VBÜG$f®CìL qRBœMút;EOûw;FLNÀx²CÏK‡y>BK{É@ŠK‘yñBNžs7E.Q§psCPzrA N¦t´@BNiu?MSwÃ@ªMÕxÎC O„w’DOiw AòMáw‰A NVyLBåM$yôCÑN"y´BèNyxjBxOwcCOÝvCCMîs5DNCpùDaOÿoæCýMFtÉB L©wmDeMõxGC_NÖx«CTOoz–DOaxMCO©vwA¦Nèu˜BëNv"B§NètâAûM]sFDöMÓq)@÷JNj¤:âAßX&2—8óS<4_9nQ*7a=ÚR97”=ÆW87p=´Z>; A\[?úDm\_>UFfXµ9GYî9HJâ^4:žJŠ`f:^Ht^ˆ< H]Q<çHÎ[P;JP`¡>žKGfè>6J¶f—8ãE®Z8vFþT·6öEŠQ¶8ÙDàQ”9ìErQ°;åH3X”9lHn_|;uI `0;¶H‹Z;šIVÿ:0J÷Sà?SKX>BMÆ`áDXPêdÜBÀN{hIB¯Nfp^BZP/vÐ?»Mêu‰?ÌK1t­A6MUv,DçaE=ŸC)f×?šE½e@?GadÛ@2H!fŸ@pG:g¢A H8fUDgNfGR fuKIR¦f•OjT¿^lZ UµOx¼e÷I~y[œGwköTAMæaÍ]ÁTí~y£oò…2˜lXo k­\ã~0xln¢”¦’&yúŸ~›w„½—]P{Ó~DqúX`„ÙvWm•Á‹nKœ4• zA™¿Šk ‘)vEP”&wðCvI|iePMWiVéP˜r›fá_~ƒ×pdš”HTg£¶Þž¾†Êeµ‘+Îê´«]½è¡v„ã·£Œ¢°‰£j՜Ót|V¦…ìu$‘Ž€€¨“å’F‚)ƈÓzxÝ|×uØt,r?l„ €“q$›Ð•ÞS¯­¤R‹…–M’}tÝcÓJ¢f Qž?£_tNžA€SÃEp;?VðJ`D`h®Y&LswÊhJNÄu,b€H¾tæY¼FGwªUxEzä]îKÍ~ýepX”qÁRoMºf÷M—Q=~0ps\—£Ž…ל•—Њ֘­–bŽÍ™Ë—Š’Õ•4‘Î…‰“΋zM‰Í{²nouñY­Wg~G_IIoANJœq¨RbJo¼QN{iQLH^gqN;JQr—e¡`t‡è‚‡€)‡Z{äpNeáUXiJtD`OPKooA^vQsp~_JJ=`¥N«D¡VðH%;²]}OŠ=…¨~õqŠҋ„ûŠÓŒçƒ¿‰I‡Uw7…Byw]|ÒfÔB@wÚ]²A=wÝ^ G“vƒ^SFó‚UkMã~=i.=Ù} oûE‘„rw\‚›-ny™;‹cP©´mÃqúgO_Ë|Âvqnë–¨”v‹¹’Ö‰ÅvˆÜxèW€ˆØ{ã_꓎Úzö–ÿ‹Ýr£‹Êv_K>„éj>@ozË`JBÎp·WGW®;+G”Yt;®Iw^?< KH`<óI8cù>LühzEbQ™lEZQ o•C“Oüp­B½Oosc@½Msü@ÀMt A€M†u„@\L2wÌ@IL2wÈChMüsFiOMr:F¾Q‹o±G.U@pgGàTárúEýOplEþJ§c–@ÛCñ^T>C/c@˜E‹e§@wFe´@rH¿d?ïG›d@F˜bH?FFdb3C\NÊcZGXS)dáIHRôdHMnVýe}gcgH`}Œy"[æ—C|b!|Ám\&|Ë~¤o˜e•…ƒAÃBnvÓfO }r¼^©”ÂÙnÆ¡­˜{|ӛÑN~ÿŒ6pªˆ†||_¼œ”xu³¾¬Çô¯û¢ê†‘ŒXm2†sNNY‰plIG’„Uk{NªjþUM_“Q§N6o%[RÙ‚‹l8Zl¡B‘+{Âr¯dÚÊe´’¾´EŸ…¦Ù˜„*q•M…F™~Ž‹{¸†<{§j<‡€ƒ.w––߈æ˜Íš<ŒƒŠŒÅzOv¥vñj srJdG‹¹ígñ™&ŒrŠ“âˆr²|—k9Lv^hÁSçq²hRVØQ¥H&7ûR¬Dö:ûcZR¯Hžu!dKTv*bŽEtCVA“tRè@ðnÒM@üs†QýF1vYNs^XX¦‚NxŽv”㌀“›Ÿ–ˉM™–Œ£žV›5âŸÝ›þˆSœ•Š€åŽÌ€§q…zuc<[hïIÌEvp¡NHØo…QdG}tFVØP¾ozQgH‹l2PþI6pK]i|°s[gk„䀒zå„*„€{LŒ ‹Ù}…]€p)Hp-[s{™g²O©{¡g7N½z?a‡IŽw“Z FÁt¹WNB/oX@Ás?c©Hãºn†JAw÷_¹An¿Z¸MhdTNÉv…qCeø“Úhƒ•i‹½xš„§t.W;‹¸e}U˜«e¡‚™?Ò‹zaÿ~LdB†u›ZhBs“[ÀGzËaþNz¾-š)dÏÂïiÁ^šj|·ÿ˜Yk8®‘•úl¾Ÿüh‡d|^…,qL1†ðmºBˆwl$@$€•cÎ@>sÁYBÞkýW3D>oƒY‘CÈz¼^fDz‘±sÈXð°–á„áÉù°––žÑ7¸ä‘¨Ñ®·•ŽXË"° ‘0Åm¨Š‹l„¡Æzî·¾˜Crˆ­f–zyг ›£À2¥ƒÕǹ¬ç‡ºËQ°ßŒêÍ7±æŠÐ'³j…MÐ.³ŠƒÑÍΰn†?Ȱފ¡½«¬}Š£·W©²‹;¹Rª/u´Y£Ì'ž.‘œ„`Ž|Wgjˆ¤qDˆ¨sÂD‘ŠÄv}W]vUQÂŽml}9ɇ_`ò(ñ…_ (¯…ª_-„_Q0b…Ôab1Xˆ©aQ0{‰‘_2­ˆ„_:3½‹ód/0^•Âqí8m›T‚Vžq“^{óŸ šàˆ×£áš9Š£ þ—ò„Ñú“À~d“:~—lŒ§zò‘‚(p•ž6‰·kç ¥„t\ì‘MnóHT‰iYMð…Èk×O“zjÀföƒUkðqš‹þp\Šƒx·c܃÷…q…ìz¶ˆï~"Œ­“Ù_q’G}ùŠAˆHf%nim¯GXMÑUÔ<ÌHŸdñ>FL.r>AþLIvƒDMJvãDøLÚvüBöLÌwÍATNRw‚@ENœuëCO²tuD°N)scCN7r/AîM¶rà@MvÃA8L3vëBMþvhBMfxD·N­wTEOt EÊNqåDµN\rÎC O„wWB–NøvìCÒN(s´BùM*rÆBvNu9B˜Nu¸BN‘vrBJM‚zfA.L¸zAeMüwz?›MwAZMcx¤C?N ywCÛN«wBˆNuæBNusB[MTt*ALMŸr AkL p%@jIåi|9Ö@¡]ù/î8DU±1Ô9¼R6¡;ñS-8¨<îUL5;ÐTŽ9S@T}>àDßT@²F!W<äEsZßK]Zå>~K VÆ=ÞJRXY;ÌI`%;JžhF9ŽI9i¼82Iæa;9¨HªYC;TH"VÅ:àF¶Xÿ8E˜Yœ;`HO\Ì; H¿^Ì:ZGW^¢7ER]Ô;VH‚^`<1HR\¥>FJµf>-K…moCNuqŒEýO—síBfN5qúA O¤p}AjOq[@:NrAfMtß?LUuÞ=kKãtC&Nr“D÷NoxEÀP„líEµQn³F5RpÓEOkCzI+bÆ?­C{_¿?NDÁaÃ@EaC÷FÙa B'H'b8A‰Gqc_@-ELa?èF©`¹@`LÔa“IRbÖJlVãe8JåXsjÚoêoFl¡%Rró¿ÃŸð„"›²‹>wõ‘Œ|û˜/“»€)„Evä_}jŽZÉH xfnœ\z”AŠæn4©é›Â~ªž–•>‚1”‰àyfƒ¢uâ].ù”ey0·ˆ¯~¼G±’ª뜋$ƒ¸qh_²xG^«G°€´jN»pS^¬JÀXÌMGCdâQ¬IÏ{˜d´ywa£Pbnˆg2Š£ƒ{Ü)Œ|{Ÿœ´Æ GŠŽø¥ž:‹ ©L¡Œ¦¼œGŽ©4ˆ{€×€ÔrÓoùn~VöOÆvD]ÜTlNR]PdoiTñTq~TäLào|S†I™i¼Q|FRh QœE²sX`DOPdQ6E‡\$P:N…lÂcøcQo;bëWÁŒ•€pL…zÙoØx…s5^d±[«EÏq”h4\OsQnÏj}Uyîog†–„¡y=} rÏv)ld_ßwùj×`¤6pQ^× nƒJÛuÍ]@J¨sÄ[uO>rsZHélãVs?¿m™U5>ßaXIZ0Se$SšIMhWwOÉvpw¼o§Žäƒ‰0‡ÔsCÇoXS†nwÑZ©™—oQ¢êš‡^Š·|xQ{a´H2rrVJ@lwÛc…Jgƒo¸V ¹Y•G_!ÀÑš7hºÁçœæm\¹ýšNp´ÞšOs&°“™At[ŸÆ‹ÎgMޱuAMK‡ÕmpC…ˆƒnçA€—f·Dr&YiGMl;VÓF×neY‚B$rƒVp:h~ ^o?»™Ù}õe½ÍžãˆÏײ!‰úϵãŠÁÄ©Ž:»h›2€Y¶s–Np ¦ùejDšü€”`­›uûa¥¬r”uS½s£M„}Åã¬Â‹SÌô°Á‹\Ò8´Š…0Ó‰µl„oÌ´h‹ÅΰCŠýÂݰ©ŠC¾®^Ž»ä«ýަº!«Ó’ã°¼ ì”úžÄ‘ ƒr–¬„ÞcŒ“Å‚>_å–‰Šss圽{þœ‡Âcû”Ây“D‡`jW6!…=b¾2‡´b˜-ˆ dz.:‰½cÉ2k‹c¢2²ŠÊ`o+õ‰w_U&⊷a?$-od9±”ßCam—?ö}ß™>•ð†VœÚ—n…§¢R›=…·§æœ9†× £— „ &“°Ä­˜êz;­â”?qžšÔ„#k(”L†Ût¢–ÖŠ:u‚“ׇ݅¦Œó~‹¨“‚„¤zÌ“ˆÜq׊~Œ×‡l|®ˆë®}8Šâ‘Ò†»†±Œ‹j:p×rUGµM¤[~=?Iífû=]K2qð@ýKåt›CÓL¿uÙCMþu­BÔMw$@qNw®?žN§v¥B(Ow¾CÙMVwYCVM w˜APMÊwk@LyœAûKÎwC*M—v^BBMýv“D­Nw¶E#Oƒt+FÂNr£FaN s>DèM1x´AÔNkxEB'Pys#CdP¸r*B³NvêAêNw›BtONw BN¼xä@ÚM|yg@ÑN]xd?©Mëvž@UM!wYC·N®xšC OSxPDñNÝu~B(M{sêBxMír”B—M¬p™A$L÷lÿ?ÂIég9$C¸]41'<ŠVo2;¾TË5»ËEXYü; FÒ^§;Gbô>„JRbô>çJ)]pAMÉ[ò?Lñ[z<^IEaÜ:QIrh";–Jhd=sK’`€;éH,]ã<þH Za>’IÅ^s8F^Ó8G£\D:7G·[:/F”Zª8‚E[k9FZX¡=šGUW>{I]d"?vJo<@÷JBrC\MUs B¸M n†BwOÌjðCàQnÔBÀPör @QMt°@)NvN?ªMu-B×N¦qÛE;Q@o‡BPájÚEQhnÚGÕQdnÈEOßi¥BÑG#a‘A6D_¼AzFí`+AðE;aáC¬GúaöDXIÖa|BùGbyA0EYa0BFHÆ^~BVK)_„J}Q@bpMY»gXL°[Nl&s‡pPmÿ¨¿•o~æÃ¨²Å‘o³ ­Þ‰¤¨¾7œuasÕ€ŽmÜLfgÈXƒF}Rz>h˜œ7”@|Ÿµ¾¨Òˆ’©©{‡›ÚŽû|s‹z‚d´›ücs‰ªùŸÀ†Ñ¸Y­C‘¯“¤%’„†'|öhÀmï]ûKÑ~sm`ñxMl«TEh UaFòc-Q˜FHvr`]JѸ}ÊX˜¤ú“ny,İU¸§ð‡ØžÉ˜†O™ö”ˆåœú˜‡‘‘mŒûyO`y2gB{+>ŠîpgDyÀ‡ëq^•å“P…‰›­™ý‡0¤6;‡W­C ……¬°¬ ÿ„´i¡„r»ç¦K‚÷¸y£…掠—&|ó¡—˜pj¨¦›À€¤º™¨…#œµ•ú‰º– ‡šÖ•©‡óŒü²€+‰”S}sˆ“ …êá“a‰‰Ž]qqRxdG&N];GˆcŠ>ŒJnmXBñKsÌCPLvÜCþLAxïAM™x?ÂLúvè@KNÞvLCyN;x×CïL…zOCoKIzƒAHKùyW@SK„y°AìKx:C°MwúC¬Nv’EÁNuºF]OžuÀFO^u}E,M´vwC…LžyûAÎNzAØOwuCÊOxCnN³z~AYN•yêAêNw…AfNRwæ?7NÐv&?uNgv@ùM]uYB?NuíB¿N(uøBäN6v•D,OtèC/NqãCbNÝqCN÷oAL]k­?ðJ gm;Fg]å4>>5U42: SÐ5W=…UÖ4å<Ve56;ÏUÚ69ÑT”=UA)W> F [>:¹E‚]:G$b>Jîdè=“J{aþ@äMÓaÂ@Lq`Ü<¹Gaf=LI»f=8Kôdä>'KÉ]“<›G¨[×<óG€_=šIXbš:DHÙ^º9gGïXÇ8ûEUW‘:^F>X¦:KFCVŽ9ÒEÇTE<%GýZ<¥Gc&?ºImX?eJqBÌLbrõALNm¤BëOgg´EaSnzCñQÌt+BÔO°uC²PuHEwRòtOCzPëq³ERbpøC SÌnFîRƒp‹HuSto F OàiõC5H¦bEA–Bl]AŽE•_ËAéFed)CXG„e;FüIûc¯BHÃ_C•G‡]DŸHL]èF M%ZJLQ$ZòRZµiSÏ\Tm8y‡tPtI’ª†Ê±@´Ó‘øtŒ#³§«€@¥ ŽKm ƒhrG.lÑZ»Jõˆ‡‚úoY§é;„y¿8²% º«D©è˜è‚㙘†…jsŸÛŠðn¡(—2€ó°Ê¤ŠŒI£>ŸLŒ€‰ç‚žm€rhkeXÙ„qsˆ€€In#x‡feMÙiS(F(mëVG3¯mI”F‚RhJ³)ž’†æ±Úž—ˆÕœº”aŠU›UšlJ¦¤¤ÓŽ¥LžÂŒØ¶ˆá|ùs{zeg€?s™MžƒøtZ\å‰ù‡Ú~Ñ{µƒ+w sk{L>h3W¶@­{ƒqàP‚iw8Z›—r†´ J™§ŠO‰u{XjñkVYËH0iZ5L•vžfOøtÈ\®?N‚úh¹CÓƒkiF€x­`l?Ap„Të>yma'Kh…8q«V§†švDT‚‚yÓeú’3’l„¥¨› '›»…w£œø‘}¡œˆ–%‡7™ë‘Š˜Ç’AŒq‘mŠè€ž”3<…?ŠL…yƒ7ˆ¾‚(Š£ŠÎûÊ…ðt$iøj&O7Enb¿G>Žb·I¹:PoU/J’s‡b [‚{C~É‹v‰|•‘XEΗF”ƄԒdžct¹Š ‚nj„Ü|Òl|‡tæbÎu=lÐUg~={i"‹ü}ñŒ…“|Oé‰ ™]ŽLu%¡P“Ìo°˜³Žgr=Ö•±ˆ’–®‹`x0‘Á…“h"„+r¹Cá–*v C;•'t¼KX|¿o:SŒcŽI†­šîœ‹’šÉ—†{ˆÌ~ÚbwoFM‚þo\DG‚Ks*ai€q]Éw¤^”B-i!PÃ3Dq…^CEºÙp£U,©F‰ìU½Úšak冠pÀ½*œHs]³f–Þpö«^•ƒk˜‚SZŠ’h@D…ÇlGKÞˆ|uaNˆ‚hnÛKâvÖ\-H€wQZÿD«uí^HJOmÞZwMr½[ÔJq‰Ztì[Ú§­”S~O»¢›Í’´]”ûvŠœy„Žf[‹)q‘Kà”·|y\6£ûúvX¥¯ðuŸRˆXfÑŸŒÎe·¦Q” pá¡(‘ o«™Vv¢¾–¨D…§Ç-±fŠ¥Èݰö‰ÆÄ¯q‹0À¶¬a¥¹þ¦ó±’ §¦Á™£†Õ¥ƒ—hªt—z’¦×“Kr傌Ëi™„6Y–xßAI‘lü:¥Œ)dd8±cÄ5 ‘ÙeÀ'{l37LŽ%p?Ia:u¾H$ˆft7G£‹r€—d&•«’¥ŚĘ‡„ˤˆH³‰¢%ƒgºü¤}‘º…¤~M¾ÃªÉ‚默©D„²± „€®lӃ̵6¡T„·²¯ ‹…?¦ôœÙ†èž œQŠ—Ê—ö1‰Ç¶”“3‰æ—X$ŒO—­ŠÅ”V˜a‘º–¬•ÿz„|Ó|ÑL[S´]‚:XFÑZˆ<¡H3f”A7K·pCÅKÐv"D]MyC N1y&CÇNžvzE–P$v`D—NáwÃC—L­zÈC¼L¼{ BaL’z€BŒLöxöC MÚwïB©M°wÔCcNùu`EOusíFPætÖE:OÓw¹DÞM¨yžC5MOy C¯NHy¢A}N“xBéMWyíBOþz†BPzö?Nžwµ@ÅM_v„?ÀMBtÂ?úM‚tgAÞMÄt CdNuÆBvNuD¦OóuED»OsFDËNµpðB4NjrÃAâMp?;M2ký?¨LãgÁ=—U25š;¨U¹5ë8·UË;ÌAUW>7E Xu;FÛVP:2HÔ_ù:ßIµfË<ÄKfž>5LbÅ?J®]†=Fö\ø=óH­a²>ÓKzb<ÚHû^š<}F_`<ÐF½cc;ÀH.gÈ<:Jšc <HêX"<²FŽWÚ;·FòW§<¯F8T!=F9TÇ;öEš]–<ïFb©=ËGÀg¸>¡J£lBÒMpç@¾M,n„AèNçkD)Q™p:CâP¬uýB§PmuüCvQærÝEMSÐrzFSqôGdVkpXG\YûpŠE«U³rñGÑU3rnFÓN­j2D#H§b‰BHD´\}@}D]ÛA¶F“e8B$FŠh÷CTG%dzC*GL]šD+I1_DFáI]bRIèL¤]‚KàP¼TG\c^[iÊ_ÜeásL…ÇÆ€‡›¹“ŠR­²•]¦í»;“-ÄI»‰½­Q’7s°†lIMtr dDZþŽ–ˆ=~_«B£ˆÂ ´…Žh¿Œ¬ŽX·-¢‰l¥~“urP£; pø¡O•û|5¦š´û•·u‘|§qTY;tÍi&T„‘€§o”‘]ŽP€‰}írgVsÈ[óFëlËUÈDÄqþ^·E{‡VtRf ¢glÏŸ5ŒÉnN–·‰N¤—@—ˆæ«â©vŽÁ©Ô¡Ž‰ôŒ1‡8y’|ìy¯fz…™{¾X“m_ÎFhwGpjey x"e§j5`ÕD l¦_"FìƒÛzˆ`t‹Rtõ‘ÿg‰›e–oˆÖ‹á{§gíu8a7KnVcÖY¯w‘pehu`åI×}FkÀJà}Hf$Fév _>ŸpÊUÁ>:wêc E»~ºfEh}Ëf²@Àwhi•Rð~Îy½kÄ—’ñؘl‘™|š•L{BÞ˜Ö‚°œˆ•ö…‚–D„ęД‡“˜~–o‰j”ñ’6‡Ô’ùŒX‡ô”…‹…‹Æ‹pywds'STL=i¡LÎEÙnÅJ=’tWSyPµu cDX„Šˆ„Å{>—–öŠ,•0”ª†I—f‰"{³†ápÄT3yHj®R7n”b“KmY`°G²d†TóC†s*kN•ŠOyö›‘™Ò‹œ«T¤Œ¸[¥| ºÁ¥õ~ö³h¤Ý„®Ëž€˜žÜ’|»‹ò}©_©…tùC¶…¦pÅA„€¬sQ%HxÈ_‚‰„Š@‘Å“`‡û\{6švÍUè|mjŠAŸz†fG?±{&iWLV~;jMD{Ãas>ðrâUj9Šp¿WBFx}Øk¡Nj¦o‰˜Xż蛘k¤ÂСdo8¼œÕq­Ñ’–o ž£†Yaî©q‡Iµ>cSGƒDn¢Mè‰ÍxWÄuTVay1c‡Ijzˆ`TFY}kRPz'læ^sy{f{UׂpjQPa›ÅƒÉk#°µ’ vN¨®‹Žd1‘¯t E‹ƒ™iCû™Ñ…¶jl°4™¦¾¯=•Jy²¬w“ÆmB®+–SiM©/“žhM˜”“WQrqÍD—ŽrAC;šgw¤IÉ’ávúLx’}ÖT–  em¼É£ ÒËųPŒ Íù²Œ™ÊT±Ô‰’ưNJ\ÀÊ«¹Ž½´1¢£ —ɆçD‘"|S£j”fy@©X˜:}„¢•~ªžŽJsЛž…2_¦˜t{cT+’\qWQžgF†‘Ðk×<—||pSΚˆÖnNšwŠín77zêO ‰i|:Zç±'q›¯•+}a¦ïš?„Æ·‚¢ß‚-Á¿£Nw¹ü›²n¶¦ ×{зz£À„¦²Õž«…f±W¬1ºÝ¢Ø»è¤¥…ý­Ÿ‡pžy›CŠì“”¿k†@Œo–Pí‹aœf†¸’ŸŽ:™€ž;’Í—Gš`?}À^PU@[ã:FUQ<ÂHcaË?K,n„B+LguODÀMyÞD~O¯yÅF¾P@wØH»QvGÕOaxïB¿M{ÀA¹Näz2AÐN9y AM$xRB LÛw+BÇL&xjB€MowHDWOuAFÇPÉuEVOmx.EO¾zúBgMy.BQMÙx8BsNùwyA(NßvjBxOwÜB:P@xŒA‹N`x¾@úLw”@$MltAäM*uö@MHv9BƒM£wNA×LwõDOúwÖCÇNsZC…NÜqðB4Njr'BKNén$?M&k@ÎLõj¦<,K)hD6Ž@QXÎ19²R¬3–<ÅS½4«>«T=5í;‚Uv3c8èV9ç?õWk=pCVç>¥GlT¢<‡Jl_:GKIiZ<6MØie=åJNb]>sHp[Þ=OF0W«;´F¶ZÙ?XL™c >þJ2f>}HÙf‹=ÜHHgO$HËd˜<;GÏd>JâhÕ@™M!m,?žMqš?ÖM›qOCéN€qC:OÿsA O~s¼CTQ r|DAR-qþFRUspÉHmX=nÓG§W„nÇECUÝrÛF‘T¤sÅEøNßjAC¬G'cªBJEl^EAF\AÒF&d·?ƒE‹hâA Fe`DQHa_G¶KªekEK"i©H©Nµg5OCTñ`FhÀiÅn6qˆv4{ÄŽÌŽà„䥛¤‰¼Ï­Y•Üǽ¤š_Ô‹ÄڢĮߚ‚ìŠr|óhÊ‚µ~Ž1¯¨œP|t«³˜Zx«Çš—€½£%—z‘“B…P_˜xhD…vôg•T¶y¦pn` ˆ/‚ {–u‹lŸRÇu¿`ÎCts^ð@)q´\Bt~œhãDô–Â{_GÓ¼x~E¥ŽyKc*’ã‰Lx£¯ñ§šŠ4±w§–…h‡Ò€bhuy2sl[Y}rþN&hÚVQAioÕaüO;vžk SaySw?MdaUC€‡a‡h¾œ)šŒŠí”B–+Œœ‰šÖ¸”D‹›wg…‹xåe5tuÞozx'|U}·|°u%k×~ÜtÀdys|gRV¢nš][PŽmëW·EuÉcC·v•[W<°týU'75rŽZÙFdp5^ÆM‰´|iØ™L” }=ž ›=ƒ4¢ œó…˜¥³›s‚£¤Èšäz÷™ –©…d—g—>‹%›»–ú…Å’ä‡jx?‹{,wº†7rlo5qQV‰SàeçOMSñ{ŒY|Mk~ceÏXM|‰gáYcƒ=|§kC—ƒ“&‡œ–?Py4 w«^Szy_›;Òl;U†C\PK=/\OØ:§W»Këx{A²Nw4@TLËw°@ÉLKxKBÛM{wÈBçNiv’DOiwLDOûx˜DPýz?B>N {BôM{"CO…xˆBœOv°BýOñuA!OÍvŒBŸNmxBxM xLBjM/v§@ýL:u AM{vŠAN­wzA4N‡xîBNýxSCSNu€C´NrðB4Njr÷@MTp =9Kvmÿ?,MoÍ>dMwog9›Cb`R5û:cUf6°<®Tk60>U6Ó<®UÜ47:W"8ü=«Wå=CÎU?±FQTà<§I…^ü;Lyi?<¨L˜k£;½J?f|>€IÄ\:=‘ET";KeÈ>õJsj8?(JÄjí?Küjõ>fLBkí;•J×f$:gHÚ`YqIšh»;3Gehø9OFšhÍ>8L§lu?O]#<ùn4Su5³n,TÀB[lKQ™FHXkëP?•IŠ&kZ™¶Žå|”´ˆŠv¢;”üwóœd’©l핱{·Ž‹š‚œšØŽõ~šÓ¾m¿ˆ·vši‡SnXêt†hãgKu n\zi‰„y¿k?š±§xG™‚p£‡x­_T‡Îz#iá†vªVŠ:geC¯reWž9ÆjýT¡C9f8T‡@P_vQ?ÅhjUHó|‘m~L«¨ù³‚ó¬1²±˜lÂ-¸Š¢ŒÇDz˓þÑå²”Ú¿¬=ˆ§¢/Œ{`¯”cÐCªg†O¾;9n\€Kuˆ{-n’ù†4y›‹j‚Ìse‹æ…ò€å“ú‘‹»’óz~þ†‚€e¦{ìrzPº|&rVËzPmÛUú~‹kKà||aL>‹~¹aPFáy7YAYy!bDÏ­¨’Ðbd½H p¿-ŸÈq|¸Ò›ús9ŸO‰Gg’k}È`•˜W‰±m<%Œ‹b–›áƒëL%˜É‚sV”sƒúc–ˆ‚ébøœå†aA °‹vd´Ÿ£gÒ›þ†Y`•ËwM˜<|`\塦ÛsÝœR„äaqˆüi¼?†UitH·›=„—mõ¶þ—9w^¿Fšcoj½xšMl ¸6˜[n·£ž‹§h4Š>tO¬z{e¶D¨>lF†‹!uJ¼Kz*Qú‘ë{WR¼—Uƒ [Ǫä—brBÃ"®p…1Ͷ¾1Íà±Ì·Æ¥¯Ö‰DÀ³Ö‡Å¼T¯¸ˆú¸¨Š µ¢ô_¸( ÆŠ¿x¨ާ¾¤¬²”¼~©z“Ϲɣ ‹É³ò ‡ìªcšFŠ£§×—v…ç£\q…£5Ž“n£ˆmr‘¦’9rܤf³ž‡­Y‚”5}RQÜýv!RkŠxr8XŽ”ùxi_d æ}ïTΚñs@OŽ~k AgµxÏZ†œéµx­óŸò…ºíª¶„IÀ䬅幯¡‡g§+˜‹–è”=]&•Зsš¢¾樶‰;ô§?ƒÊ™œrr|ðzGMÍJŸRy:¥@”TF8±FZ^h=LTi÷AgN‚nOB¨M¬pEôNÜsÂGIOktyE¬M½u(DöMýw˜BÝNàx¯AÃOÂxµBñO4x¢BOªw”AµMnwÌA×MHxSB~N’wMBrNêušC OSxðDVO~zŸC!O§{éB«O\}%CLP@}@B"OºyÿC%P wÖA¦O=uLBëOòvjBxOw]B2NSw BNEvå@ÎMêsBßMÅs CdNu}BXP x#B Oxx6COuvZC(OtB¢MRsu?oLnrÍ=Mp°=ûLqD@ L¤sG>zE e+8;:-W®4÷7‹Uâ5É;SUw7E=2U7=ëVW9D?WD>¬CHWG>`EMV ='GÑ[Õ<ÜJ´eÑ;èKÝjh;ÄK1hJ<0I \ñ:-DßR†8ÈBùS®< I>c>óIçk @‰JmÍA©LtmÛ? Lj½=ØJSdÌ<öIõ`Þ;QHP\û:xF±Vž9AFÅZ;~Hæ`ÿ=öIkc ?÷Ih <HYjU9GiQ?ILmx>mMÂs>?TM8uôA]L%sGB™KAs@ÄMus*@€Q0tñCÄU‚t.EèSÈoEŸRƒkG–R^jpE[PÕj3EƒQqnÈD"OvkxB Id@?ç@|aBìEekBÊGîcBzHË_GD5JM_ZFjJ cþHÝLâeI*MYhîL„TifÁjZnòˆ‘ŠŽ€.ˆƒ‰3w3€±}nn}‡A‚ÒñVzBvÞŠý}6pÃ…Õröˆç„œlÒŒŠÌv~—›–Ô‡Ÿ¢Èž‹:¬³ #‰:°Ü¡ƒŠô²-¥Âˆ½T­‰;Á¹­…éÂ9®å…Á!­ÍˆØÁß­|Šh¾£¦Ù|]ºÜ¡8z¤œ=—oL4~jl_yÿe}Nh´Q×<^*Nv1=máXâ>¶zf]]H‡|O\ÊGí~·`æBÜ|Ra;ús_HGÙlñ[ÏJyŠYtÂVH‘ˆ€ÙV -‘t«§L“®¨ÜŒ“§ç é†ÐA‘Ž}:‘Âv†s’‘ÂK”Ò’ø„™‹zŽï† Ž iˆØ<ƒ n„‰ÇwˆM|²fÆ@¯nT;9 khRs?eižOWCwôZ‰H!ƒ¸m›MÒ‚Il¤ag€ÙlYað”„2jØŒËy‹X‹}Wm ‡î|Av(š‚âty“…;qQšˆ+p+ž¾…Ý`‘‹‰£~G–£”t‘BŸC’@|â¸&¤ŽŠ ¨k›Í„G5ƒÉc¯oôPÛm`U±@^oÕU^;$kØWp@¬pÕ_CIƒsX`àF?nÕ_Gtpà]ÃHòpÚYp«ã¡9‹Ÿ³I¶?Ÿº-±f¥nÃ(°Ñ§ß¼©˜C·¬ Ë{š,}J°wÊTð4ÈnRR—>˜tLj U%}‰÷wûZ“î|lî}b,ˆ]x$e{–ù>:™!‡á’Gˆn¦…~aZ¨ƒÓznXauWzm§LBy`^C~äe¥JÛ~õaÁ@+w…Zæ>K¿Ã¡õ|ñÔ¥—<»ž®v´™Òw¾¢KŒ(sQœ‹‰Ûq„¬$š­}_·šŸtí°@–XdG£¯bšœW‹g”¡vm «ñ”²k6¤oÉ`æ™9œP{”¡waGí–gzpLŸŸG‹fmǮ盚‡9£ö“8vñ‘3{{Ln’¥zXXî¢WÄuà»ýštx]Áuš:lÀ¤› kp·I›îpŸØÈj?ŸnGJ1sz`¨FÚ€™p¦Svˆˆw5Wʉ)vOOvúy;RC—o€8^ûŸKŒÉl%µj¡¼ÁÆ’²‹vÇî¬÷†¥¿„¥!¼§¬k‡¹ð¯c‹ºÝ¬ˆ?¾·«yŠ'í®ŽÆû®…JÅ&°“ûÄ@¯á‘ýÄW­&!¿©O‹A·\¥²‹[µí£´‰D³Àu‚Ò®g™–N«˜1…ª¯Úšƒ³š x­ö”ˆnø¡Ãøg@•O~OXû…juHÇŽj¨L8=nbJñ†eË=0…Ü\“6g…³h¥?L’ó~QY®›ÙÍr¥§7ž‚š³£T„Þµ  J‰ÈŸð”¢‰Jê‹‹$†`ø”¥—…šÞŒä˜V¡ïƒ”“t¦ °ý—¤sÑt„tiK!I™OF•W9=yGx[¿Hè`Þ>éJ¯l#@DK”lßCìM?jA˜L¸es?ÑJ”a¦=Jga¶;AHK_D;FÍ[–9‰D ^==ÜI,cÑ=”Iôa÷>¡I·K‡jE?ÛKAnY?YLu2AÌL}wNB&KÞuB-K6t–@DNŽsn? P¨tMD•Teu¯EàS.oNDRÜjùE RkFZP£iOGÒQdo«EùQïn€COK¦f±@ØCð`ÃAIFOdóCZJ½euC!JvašE›JÐ`„E J÷dF¦L–j_H@NkÌN£Uìc›bHgµe:‹åŠ-yj˜¬”å}†~?smde%^ã`‘k*j+k÷k°luh€†å‡j{뎃ŽXw}”³yw$˜Ÿ’Â}ã™…Îzñ¤W™‡â®+¤²Žz³Z©é‰b¼­–…oÄ °Ú„®ÇV±ˆxÆŠ¯A‡¬Æ,¯†XËà±ÇƒàÌí±1†N¿î¦„©¯P<€=•ƒÝ\†|f DüdjQÓ9…kZZŒF5|feäLˈŸiÕN×~ÿcH0|ÞdŠJêiVµFÝXtOŒ>Zl¬\G> qaÿ?ØcòYqGÆS8PEƒPNKŒCZZ{RzKˆÆw«a)šÙˆºq²Œ$ƒ¬sòƒÐw‘sÙ‡›g™L¢‹OzCaM›¶”•z¦äž‰•³ó«ù‘²§ª‹Ý£6 „žšd–6˜œ˜¯…yšg—éˆÄ—*™EŠ˜f™î„'”–ô{Tœ“vlŠUuˆOhyfeáGãnBUb<ªp UæCæjR¼DÅnïRÕHyp(RXMz_‘P ‰`t¨Xú€–e IGzfU Av=le…€iqé™@‘Ü~*²›÷}¤Äó©.„´³&¦ Œœ¶ ¯â’Gºé¤<„°Æ"ª&ŒÁЪõ‹1ª•š›xj‹;}WŸnXUÉ‘ ˆf»Šä€„]˃VvôQ²hlTux‚iRt…Uy¤dt„r¦J–}ŒcMFcÆbªLŠ®Ë!­z‰†¾îŸ@uì²ë˜Oo£–Œ n¯¡‹bqŸ¹*¢Î~TƬ|â¼tŸ{t©¸“¹lÁ ‘¦k¬X›—w¼²$IyA¢Î#k¡’£w‰bË‹p¤aj” ~ƒeõŸm’×{Ö³¥ª”ú®nžŒâ™í‰‰ižþŒl ¶õ­¨Â6¡Æ}ÔÁ•šhmÀ€™;ke¶›¤sfŸ°’qzqOwmµXêDÝ|Èi0Lm‡çu_Uˆwu2S·Œ{uCTì“Ô{›^L›9‰wlt«N›‹M¸>¥ïƒ¶³Ü™ÁmDZa—k³—ž>}ɯ› *€2µÉ¤/ᾨ¬ù„dà °™Ž Æ±óÈ%²ZÉ3²@Ž9Ço¯PЏÃü®>Œh¾ƒ¬ü º¨¦ŒC¶ñ¢Çˆ˜²öžÛˆ®2œ6‹%®è›Ь°œï‚z±›´}«H—/y× Ši"˜vÙPö†‚o’RĆinC])†xeiKy‚)[M6B‚³[~-X†ých8GŠ6oI¡{Î`ª™Õ‡UnŠ õ×|¸–QŒ 3‰‰ƒ“„‹¦‹m‘ՙΒՑ¹—•ì€Î‡D™ÖtšvljQk`žh›J*HàNX<}DïTÏ;øFT_c@åJHh·A°K|k²BhL³o§CM;u«BeLµwdBL]y“BÉM|wéCfP£uËDRƒvEAQ²xnBNÊyaBM¹{ C“M°}³B¸Ly{nCÈL4xEC‰LÑy—CNê{¥C;O {ÍBúO¼{ÞANO0{‡BOxÔCkO´uTC³OÀvzA4N‡xAeMüwlDPâuqG>TÜt×DµQ4t@?ïL¬qÛA¸Nçt¸DïP0wtDPÙvÈBçNivBøNhvdB N7t*B`M pfA,MälVCsO0rWFR²yŸC•L2q; ?’Z:65:½T26ô;ÀU®6Ò;ÁU4 9QWŽ5–:WE;Õ@5V´?¹EýW=G6\¼=EK“cõ=ªKg?®Ke>IZ£<öEŽRo;bD·RØ<’H•_>eKâjÉ>NLjB2N»dó@•LÚ_??K2`Ý=NJuc7<ÈH—c[<„F~a†; DU`s>×J%ck<¸IRc†=ÆI›gW=…JXkj?$LLn¦>ÉJÁq-?L°v@rLrxÂ@·JÄvBéK³sÚAyNgr)CîPis¢G´TlqGùTXm¦FÂRöixFJRSk‡FDQ›kèF]Qõp0FEQÃrÅBŠJ¾hT@×Dsa×@F×bßEìK gïDÞJg-FK&híE¦Jæh{GÇM¥mÙAÛM¿iòIíPæZVˆXPVÌ{(e,ž •ÒzŒ›}¼iñ\ÓQ.PMYT V©ks¢möŽR”Љ]šíšÇ…ßê˜ðœš›ÒvÐÄ€j"›KŽòz­­0£rô²í¨ˆÉ¼¤­÷€¯Äù±4ˆÉþ³½‹ÃÉ ³Š€Çø¯Ø†>ÌŒ³ˆ‡Ñ·‹ŸÌ?µ‰Ãí¯˜‡]¦;–p¤‘›|ÌTFy%h7I,xmo S †¯s¹X“y¹\‰pâM¬†™o½W.ut_~J©]‹Pù<‹[ÊP¼5>\ÔQ06ØZ[Tm>pSæOô>N&J@=[³W{L®¨ùl$¼tªë”®a¨~– F™e‹ÐxA`"†’o’KŽ9}Ù^Fš”o¬¡¼…[³È©MŽ4¯„¡5…^”BqœÕ”Ù}ÓœX™d‹öŸâ¡'Žá›ƀݟߚzzqª¨Yz— (qoˆˆz‡c?z eéDÞyé`ùCînKXqGŽlBS•Keq«QRJ…xYGfÜeÉGÞ|ø^Dovò^èEƒ|­o¨\?‡È{}jlž›•è‚ÕÀ¥¬R‹4Õº¾–ÓÃî²…ŽãÆâ¸‘vȼ±I‰<ÑÕ³†Íβ2ާÁË® ‰õ—â‰dñv’`”?flrT‚=ãsæ_KÛ„Up¡LóŽ_zöYe„ sÏPR¼lZLxtÒ`ÐD½…x1Z‰ª`Rœ}³Dó›)¤dZÁmÆQÞ|7e»FonlzJÜË|yP(žÚŽ;ko–‚tÿª”£*ŠøµQ¬‰ÝŸ±’Eo7~R\ÕŒ¤{Å\äž·•˨mœý…©š–.qÞîƒÕe…’uÌV·Us{^ò2òr ’÷g…BŒè‚Rkq…îr`W”Ũ¬MŽyȹ¥Í…p»Ùšr÷§«·c–…®]A Œ3i‡¸JŸýwOÆ‘­J~¿÷ ye©’^hᢱ‘:dÕª¹™8r¬§p–¾vºšhˆ-pk“|Ëv •°‚ý|_œ%Ž|Ú —–…ƒ¶ªVmW«Œœ˜CáŽgx^¥Ú“¨w ÀÖ¥ú„vÅ ¤ $ÂJœŸtúÀ­šqù»…œÑw«{™C~Yñ‚sk`vPeJ ug^0A„ÙjÆGM†ÿrúQ݇~r)V4òw¨\æ—U‰l§›„Ö­¼=¥– h Ÿ†‡¥\)’Ì{>S•{%Z,¢2‘ldï°œ@vй£§Ü‰ç¾Ž©‹±Ç©°ŒâË´Œ6ÉV±,‹ÕÄh¯›‹åÀà¬ôŒP¾s©úŽO¼è§”ަ¸ü¥Œ°³  F‹ý°†JЧ±VQ…,´Éº‚¼±Ê›î€:¨º”^wûеiÑ”²†0mŽúÎwŠlwÍjP†i0Ep…Ö`;6Ú€&X.7[|dU˜=¥{YC‚YgPRꄇspŽƒÈ{j{K€JpwFƒˆV€-‘G”ô†¢ÌŽ‚†‹s\s…?V]QsESVIˆYØCÖAGO°;ÏE§Ué£E/Rk=eDQ=HŒY9=FK”fÖ=¼LŸhÔ?NÔd4AÊM9bk>ÀKwcÅ<žJCe-<_If=®GJe6>šGìc%=êIùb;QNp´D•P9s·D@O&oôBnJ$i1>ŠB@aŸ?¯CÞcøD‹Ig^E@J7hGÊKjJÛOÎl\äfy F÷\um§C/NðTËONµOÇhy\ÃM׋/zëa‹x¯eƒdtR˜PµP1G‡K#uuXjX‘ ”(…Ϝᛇóœs–i~ߚǎvñÇ€,iЙ:Fwj¦r›Â†7­›E€ ¬kœ$rS·’¦…»ª}‡ýÉ·è-Çz²oŠŽÉɳsŒvÌ̵㌱Ïy¸$Æ:¯í‡ô®Ú™DvmžŒñcÓí¸W_*…`e˜Ï„ðc°Ÿú‰¿eQ•«{ÐSâ»tÖRçtj®Kp¿]Ck`ÚR¤8§\R8ÔYYTÞ9}VˆR/>`RbN BrU¦RE‚mÌVì¥ —{ˆÞ¿=¸p¢6³/­g’"ž6“‘yÑD~Ì`Û‡(r·PJ~.Yíší@qzŸ— ƒ©E™0~#–†\°Ã‚Üb]“Ž|}#£[£…4 !¡ …Ρ霚}«¡9€m¦>’‚­™ŒKz‹àx3ZZ‡®p4I!ymdFH{u)_ËL{J_J„~haáEô{F^D®{`_LE’x“` F7vûa‘M˜ƒ0pùb:—Å‹¤t;¼$©âˆvÎ ¹b”ËG¶’3Ì·K ζQ‹[Ó·ì,Ôî¶ŠŒË‚²;Œƒ¥•3ze‹xbOk€ ndG¢ƒhp>Rü‹ vVUÏ‘—}ÒZ†xÿT½†òq•Tçu)`FZsÌZ׉ü‚„¢Ž—H‹Ö«ê›†e«â›Õƒšª¼œ©…í§äšx‡#œŽd{Ÿt‹Kr˱ٖÞw¹ì˜fy÷» ˜Ôx ¿ÔšŒv˜ºu›£x®¬"™Y€À™HÔvî‚dsaS-püX¤;0qýWü9Ñ|Yh£G Wn´O „t”W‘€†Fk¤£O›õ…­` ˆ6NŠYh܈imbF\w‚[ê>z'b´?܉™såCD˜æ†Ü^-¤„—¾|0µ^£ˆ^Ã󬾊™É±‚fÉý°åŽÜÆt°š,Åõ¯ÏŒWÃÓ­BŽÃ ®5ÁÁ¢¬HŒá»?§žŠ¶¹—¤ØŠk»¨¤B‡@»£2„_·ÿŸ2ƒ³…œ€·ª]–rxÚ¡ •J|Wš÷’“†/•š‹~I|l^èˆùnëI_0f‘M5zÌ[H xUX`J1z1iÆc®x0yY{‚‡u‡ †I}Y…«‚Bw›‡H w8}ÚsKu¬ZÝUcpEóAT^@G†?Sù=AØQµ:ÁGÖV-;¿GpXò@¶JŸ_ BPL~d CŒMþk…DþMFs5C&Mdv|AEM1x’@¾L±x&CKM‚yeEÏNþx[EÄNTwDÇMWw’AGLx—BnM€ybDÁMñvÊD¡Mu"C±M%y{AuMçz+A!NywCFO·w*B·M}xðCßNÞvDÌOsEDxP¡tÑB}OÄxÏ@çMIy+A!NywPA]NÜu(@wMu8A^NìwA*OEyÇAÁO²v…CâOWuØD‹OjwC N1y4BzLçwAKÂt“A L¦qBIMbo¶DQhp¸B)O\jµ<¹B¸Us6è9/R¶6ì9¨WÈ68Ê[„7 :yYÞ86>òVá=˜@GWH@JCQXó>#F]]Ê>ÉJ+e:>‡Lkio=&J;eS?ËH^ú?ÖF'V+=zDdS©<ÄHÐY˜>ÃLe{=L€gÅ>M‚i”?ÕL„iu=Kši=öJõhk? Kg9>ÃIhd$@ŸKðeÖ=ýJ\e <JfgŸ='Igm„<}J¦r¸>ILHv.=EK±v=L¢w©=LÕvA5M_q–D=Ok"H0RbkMG6QjgIJSÍl«I’VunHDU>n×F\QçnæGQ…t.DmPu;D OtlûBÏJf5>Be^å>pB¬`ŸC†H}eèDŠBuƒ“R‡És’›† q[˜)‘vZœZ’(‚¼žZ]u –à…À^{…El˜n“±|_µ@®üÁ‡¯äŒÅWµÕ“RÈÅ·‰”_Îr·¹‘óÉö®ÇˆÏ¼Ö Óv² ™¿l\¢0½`  AÆkK¦U“=ku­ì–qm¢»Šµ]TšNQΉ¿q»K­xÐh{GDfôV;a_%T©9¹]cVÿ=h[–TºA=TOEóSýK_=Æi-S$E7ŠÊzXj©°>¦S’Õ¼¿³î’ü²ã¤™‡Æ Žso{>cˆˆKx+[>)„9i,;ˆçuPš‘Œ^t?Žl{ë]üƒ¼v}Z‹†¥yΠµž¥ŽÖž4œ¿ˆ´¢˜œ ‡þ§L µƒ®Ò£èƒ…­gžø„[Žâo’‰|V,z‘aíB˜zedâJX€èhœEâ1jìC_~¶fuG|2eeKØrbZeJ¼iIR–K-wGcz[”‡wÎaÁ¡ß”Az¶½ì¬…Êó·û–øÎ»¸F’‰Ð:¸oŒÁÑ2¶î‡¤×h¸‘†QÑX³JŒº‘ž·ˆ=¢´¤p¸–Q†v_o•?‚ibhýw…U‡²vÿRJŒ”uAb"MÂŒã‚øm *™Ø-§à[… °"žV‚­ªK–˜t£Q•‡x>£˜E¢;”üw˜’„ŒZðš7‰/dÌžÛ›oqž&÷k?šáŠ—i‰›_ým„¡S–8{¤˜Ä‘}˜g‘$~&™AŽ0vˆÀû`5œŠ«wœ§oCx ­&\é“¿sÿH©›¨„icš¤.’-t5£’ÃnZ«í‘ u®Þ“Çu¥ÆÝg©£—Öe§x”¨q™)ƒ¨kyвwåký—^‡Â¯«£5‘ý¶/¤àˆÞµB¡lƒš³£T„–ªM»‡èž“e}í–Ѓjcw“y¬YŸöƒ¢j÷¯Ühv転˜yUº;š{¤¯Í—H µŽØwª”{Ž^òt cDOjÓTå9>r\Z?|yìeJÐzøhpN’‡îx˜`ƒŸº˜¸„±©z W”azň†sÞQæj±FLF}Ÿ\!¡V•àvS»9¥6…kÅå¬ý‹BÈD±}]Ç"²*ލÇO³ZŒÆ^±WŠ¿Ç›²)‹]Èò°0ŠpÄ’¬ÆŠMÂT«Œ¡Äô¬ß‰ŽÄa¬À‡yÀ¹ªpˆa¾s¨?ˆk»%¢ˆ…ìµ_ ‰‰Ç©Ø(‡žÄ—݆ñ•ž‰ìp’iÈŽ€Óqz‹‡|1n‹_wPiY‹y…Ê~ˆ` ’q“i˜ì—œ˜×—=Ž¡‘~‹U€5}pãl_ Q2a9IêD³^>Ç;‹TÆ='<{Pº8OAS%9HeYÁ;ûH1\’?ÀJ‘_œALØdôBšMËk*DÁN6uCÓNWzñ@=Nþz•@MÎzAwK‘y÷CzM(y|D#Nqx]CïLfwC¹LKu:DCNtÓD]N’tçDN–v½AMÌx<@M•x0BVO§v²BfO‚wC•NÓwÆC.OAuB˜ObrŠCžPÓtC“Oõwr@¢Moy—?:LWwÒ?OLŠvó?L1wÆ@EM1y @MWy’?Mªum@âMt(CºNáx{AuMçzi@ÿLXyy?¦K w$@æK¤t(UÕ?tBV C=EæVw>XEÜZ?ÄI?eU>ÁK"jÂ=…J€fâ>rIÇ^9=FZ“8×BÁU=¥IS^??\Nfõ?ÿMtg)=AKkD?’K pJ>xJDpa= JLlÇ@äL$gý@ZMËet?(LÍgU>§K³hu=]Jjã=ÝI“pJ*L|wd?•L‡uÖ>TLáu?8LIvÃ@ŠL×o«BcMÜd\I]RYeòHdRñeHSÛiÑGÅT[nàGSn¢GÌQþngI•RæsºEÐPTtäDGO€l·CœKÜa"@+D4Y@OD;XíCKJ´aDÁKïf"GßPºhgSÂdòpp{ÔˆfŠx~yˆ_‚Ã_ËiwQäsðo{U~IjYW«fäMK†T[LñL›`êNåC3}÷c®L¸}YrÃXê…4|¬jƒ‰\|}kz‡÷zâj*jˆoÇ£ßpêu‡ |HŽÝòo}˜›‰•jtˆtr[HBm…_hKl y‰f…“sŒrn¢áÆuž²`ž´“>­Â F+¿Â¥ÿ‰KÊ-®]‡âÌ|³Ä…ÎÄ ©1} ¯Ñ•g¦¤æŽd¬ð–6oŒ¬Ø—|oÚ©’f¿œ$‚ìP¢ˆqçKVk]EG1_ÄRy;`)Ts?î_5WÞCá`gXÏE®T©OE™VõN B&[zOÝ@ánªcFLR”Ø0x;¯Ô£‡ˆ$¸#©*Œr©˜í}–²…n£ŒŒtmÕŠE†ërìAˆÆyX˜„xq‡„du‚`ÿ~|v€eèƒyàp]–=’|·‘š…hqƒ˜³ì|a™Ñ”Ó|,­U£‰„:¹Ñ«m‹®±L¢QˆˆœŽ3s‚qmèL~ jLª~niœA¹| iAt…×tCUúˆ}xû_nXzJ[ÃJÄHFlVT‚P#y^a0PÏŠCy§dÔž—ñƒàÀ§³”–½Êµ!HÑ˹²F϶´LƒÏÖô·I†÷Ò󳮋'Æo©µ8¯˜˜~¢~oû™ð‡‘f¼xHWoxkñHh…hn¿KZsÙ[!BbÜQ9>`aRí:ikÀU[?­oWd;+wV^6@ÚzWb.CÀvŒ`bFÏ~&lfMº‹ä}·i(‰8}½f“Ïi¹’x›`•y†fWÿ|Je>žŽtKœˆ‰cû–Æ€§ZŠ—1…_f¹˜v†hÇšªˆ¤le¥L– y;²õ¡–…Ö¥O™æƒ£–iˆo[›E‰”kö—…}a‘ƒtfc¸”Äs_ô‹¤lwJ’esKMº¢am¬Ÿ•äv¤´Œl¤7‹±l¦QŽ–o0¥%Žúfó£·’3e$§d—qª—üƒpgň xrf¸š”®ˆ¿³Ö¨Ã“©º)©©Š~»ß§.„ ¸Ð§§…Ü­·¡­Œ¦šš‚`¤–BhÞžmŠyc™› 6eö¤õ‰ën^¸¿—h}½ºH›BQ´ðš€Ü¦–Mz4—êŠCm·|3rêU:gWÏD¯h÷S¯;vsü]è@ow±bG·HoÌM¢œD“gzéµÂ®s”Ò¨çÄ‹–0‚^ou~†m…T`{³hcJ‚zggcHŒyÀeGÏ€/odI••­†ß_x®åšutžð§*ƒ)Ä}®Æ‹/Èü²<Ž!Ë'µVŒÊ€³òˆ‰Ê<³!ŠˆÉ°çŠ6Ç-®ã‹¼ÆÔ¯hŒeɸ±CŠËì±ß‰½È¾°!‹üÆ×°ìŒÅ_®[Ž¿À9¬‘–·£¨¢§èœs†j›ýÅwðšjŽGz(™b’$…™a“S†U›\“ ‚­›ÿšÜ\˜HŸ6› ž{¤n›þ£”£b–m™”K‰»{LlûiŸP?CSjDK<W³>ÍIÖbAkKÀeRB(M€kÕBÍNõt BPDzu@5OÞy A"N‰ywAÆL&y_BMM¥xÈCýMdx¨CçM#wBDöMàsE3NqhFO¶sÎE¯N"wBxM x$@çM]víA™Opu9B{OµwàBJOêw9CPO@u­B¤O t¢CPuaCòO3wÎA`NûxPBóMàvý@³M_vª@“M”w AòMáwÔBN w®@ MQuz=ôLt©A Oªxi?Nzd>\Nx@NÛv&@íL`t¨A NDo–AYNüh,ESP…d}@ÌFaU¸7´:íRò8Ê; Võ:1?U8ð<R9Ï>“Qp>ÖAT„?D˜VÊ;EWX‡=I¯cÒ=bKg×=jK›dG>J£_Q<’F…Zä9:CU¾>ØHZA,NÝa3AçN_c•>®Khô?žK´p?›J)rz=lJÇmu?ÈLâgB@7MùgØ=ÅJ÷hÉ=ŠJŽj­<ÌIØlD=2JiqnKÿwsBÃLåu,BdL˜t6AÚL;uB/Más*D¥M.gLHsQ•dGŠR‡g`GëT²kéGÚU»oÑFRan%HRU¤lÈJóY6kËTÁdn#cjk›lòk³hÌ\Ÿ†r€tgÝ›‘}x€RuÖjÆa›eæd4lsh}Rñ‚Àsê\ïXt^Yƒ›v÷[3‡Rxû`•‰í{l‚B}úiÊQy#dã‰t‹aÏ€kj]LcŒ!r¶Fb|Ã^K9~aPº=ŒiZÝFñvó_ÖC™ƒ4dGHÔ'yUr0‹ŠzJi%Ÿ(ˆZhµÃø¦O}æÐm¹QÎ÷´‚‹=»«›>rÏ¥ÙŒ×`¢ímžá‹ˆg6Ÿ†[ŽŽóo’Dx8bµJrV‰NÑC.VaNÊ>»\¿QÝBnc£WrDÄbYaAWRS³@5X2Q@ó_ET¡> XÓQ—<x-psM眎’tÀ· §P‰N¸´§¸ŠÇŸN•ä|I•aà{’O}ãï‹ìy†épPÔq SOs¾iÝOåjæd“HÍ{çloGÆ|^cfHb‚MoQT<†–{Y_ñŸ`™š¾å²ûŽHÆ|µºŽ·§Ÿ‰¯˜Ãˆ‰t)„¦rÂR3{GfšEÌp×\ Bëˆ6zì`>’!…|g,n¸ZâFÂV×HxCf×PæHqT/Gh}©fŸM,‹ ~#j:® ‡5“©Y€?̵³À…µÏ¯µ@‰aÔ&¶”‹qÒ”´ùŠšÄH¬Æ¢´¿œÒˆN©Ú”uR›PŠJl\£zJ^¶u'd$Eív¼bDPiåS9[”Nø1¶a T¶8ßfHX'=anÊ\b;ycABO~Lg8D]{ýdÊB$s:W¬Cªw2`BKHx`i%U‚nuJj(}˜iåfö~jj]Z¦„4n6H®—åŠ,puÉŽ*tt•ÿ[^h“€"cµŽœ{Áb¾’uiÍ¡¶•8}þ±é£Š!¤B—€F”0‚écºœ¬‰EdP¡jph!œÇ|+€ó—Zî­„—€r3´šús©¤Ê‹a-Ÿ@„z[ £¯Š¸i­¥ðqgH¢[p[½ŸŽÐc¼‘[|o]–†åtbP™Ž‘Â…$²B§9’X»«¶‹‘¾ó«Ý…h¼q«`‡­±)¢vŽTœôc}’ ²•odè¹[¨5hŸ¦ä‘äVz Ù†ô^¶Ý—O}G¾(  ƒR½¤Ÿ†ü·n¤.†AªÛN‚Dyˆr­q§dRö`ŠPA:¼júT¦4ìpg\e=#|†j=Jº™"BvX·® ’‘±§0’˜8Žÿ…½w”d pœPƒ±s.S…¹wp[bˆy×[“„|c ’Àj ®›Øu¾µ¹žÖ‚sÀ‰§šŠFÌ‚³¹„ÍÕ´‹ŠÚËR²‹ñÇz­–Œ9Å‘¬2Œ,Çî°ÖЇËy´F‰BγωšÎn²è‹£Ì³|›ÈI±¥Ž Ä ®$ ¼§¦Ö‡”ª•™&U£i•“zb¬ê›áƒu¬Ü ¿Šâ­‚£>³­ñ¡£ŠŒ­é¦Ç‘X¦m¦`—/¦Æ¦˜0£3¥“°—Ö–„S|”mÜl\NÙ?W×Cà:°VjC_@WVz?š?òQú9§@×P¿=ÅGÆUŠ?ÇIr]ƒ?SIÊ`ÊAãKlcËBNÌhé@HNçpAA"P#wÙDR,x&D‡P}v[A”M“vd@¶L=wÂBµNŸwÔCkO´uPDgNsŽEN‡sG Oùt’E˜Ov@B¬Ov@'Nõt9B˜NuANwî@æM9w-BÌNõuBÚNÁu¢B¾O~uYCVP×vãCPx•COvA`Nvu?ÿMÃvü@1Niu˜B’Nµt)ANÐuN?4NÁuØ@…Osw«?«NPx½=N%vj=EN tt?MqANm/B©NEj F“PÍe9B&G?[Û7D:vSt8h:‚SD;A@–Sþ8S?_S78÷=]S=vAþT ?aE WÀ:FßXÞ:ËHTa×:JRe=EKÁdÛ>1K4bz=BGBZ÷:CìSk=#EU°@ÔJmZ¡>[L¹Y"AjMÇbÁ?“K/kI?×J†n†>wKÃm™=ýK»ic>DKiW=ãI;i\>¨Jmë<îIq?>¶JÁr >CK¥sh?1LãuCöL½uID«M¡sCXNvs2FpPòu{GSPïkI RçeƒG~RígZGrTÜlGmRpöAØLn:DÃMãlfDPOm¼GQSšoE”PiíBJ×bÇAßDW\%CþDGVFE¦Kí`®E&PÕk–JëX”nà`LM½8»i´N2;[uTXÎI£wýZšIú…i}F¦9d:Åó¬‡6Ê÷°o‹ÎÁº¢}b¢¸‰n`h•&‚õc‹2wT̉£mhHw•U¯? e~P™Ek[«P_E<[1R«GÚf“XMGcl…\d@ØjJ_0=6ZºW–:VˆPC<1e%VÞ=MX´Pä8\T3;crù]?µ¤¥r‚Àొ<¶P©iˆý©gŸì†…ŸAš±ƒ”W^r,¦†j¼‚ütrQpi…Zp@‹_„Q`8­a Oh8ŠkµRmF¼m.UùCB|ÈmçLø•èÐyp¾Ÿ³¹ˆ‡ËÞ· ‰ÀÆÎ§3‡2´m™8…ŠçvS`t£\ïIÔ]*MÞ@®yae¹K»ËlIâj|V'Fš_/PTE»jûU|D;ncUo>Jy˜_ÖEñªiªQ”—ƒød °-™äo·¹uŸÐtèå…éÏ ³Á‹#Ï>³­ˆþÄç°¾·Iž#R¯ÿ˜{ “‹ˆlø‘=WcÛ|uoJÌmÅ[¾>²bP¦7…ZbMø2FfYÿ9æj‰ZY=sbé8+yàdù@„…%pÎEž~'m¹IÒ|˜iÞSD|´e7Hd‹+}/kÝŠx‡È„Cˆ‚q‰£†FsÚ_®”¹„5\ƘړbyÑ ˜5‡õ™ôˆŸl @™m»”«…êlëŽ-€)lKšŽäx©£¶—H…¼™EŒpq®Á|àW\œ+ŠŸ^q¬ø˜¾o9“û|a…‰—#D€’€õc>O¤fW¶?pn·zšlM¡ †BQ™˜“}=I¡J‰ÜbT¤pŒ/d½ž‰‡OX¦˜]ƒ©[†‹@t¬W ‚{o3e6”:‹ñ…C¯¦¢’Lº±¨b¾ü¨‘‡ŽÀ3¬ˆº=§Á]žg‘ }ô”Rˆ eòI”>S;š_Œ@8] ù‰KV_·™¯u[À¢ ~ Ã!©Ž‡Iº«Í‹Ê½þ«³Ú©Jœ&…¼‰Ø|d–j–WJ=O`vO‰D€þg•¢üw>ˆ•:{A6¤p¡ž¥ŽŒu^®W™F„¯ÂSª^ƒÉ$±XŒêÇš¯â‰¹Ä~¬ŒŠýÃ<«wŠzÆÞ®1‹ËµYŒªÏµÁŒ”ÒW´ ѳ¼ŒÉîӊsÁ«öˆ¡¹Ð »¾«b–DxįAš|6¿1ªH†%¿€­“‡Ä¾,®`Š5¾ùªpЍ»ªúݳ@¨r‘û¬8¥’R¢ý›[‹Æ˜F‘—~ž|Ìp o=N†EÖcÝG*AÄ_¶F„Cÿ_Š@6>öTU:Ë> P_=ÒE.RùA¦JCYê@ÐIƒZ¤CLY$D;N–`ˆA.Nkl=C=P†s.GÖRæuuE¸QCuzB^O v×@ôMwÅA+ODxÖAOx$A~MawìCfLÃw G˜N»uÛF¯PTsTCHP s­AÔN€t‰BN´tù=tMNrC? Mxpm?ÝLÉm @¥MìmïCOkMBHô_,;:>³T]8v:QST;?ÒT­9&?±WQ6þ;SWË;ÌAUWç>•FÛW OG±\2;ÝBFUâ:òA½Uø;‰D®WT:bG—Uþ@mM&^S@`LÕd@(KiÓ>MKSl?ÒKÐlË=qJ&ki< J¦k>øJ‚o>nJµrÜ?”Kq/A”MÆnBÒMpòBFMr›CŒNBqzDÉP)pmG]R#rîHRoÌH¯REkEHSk(FðQUn÷BN„o>I>or?KJ£mC%Ol#G$SMmÞGøQcmõB Jûi¤?#EÜb@F0EZšEžHac FªNylËJ W½mzLæVi´NNWihRç\ïmÇeÇjøn4”†‰y￲]‘ÄÀÜ·Ý•'´Áª`‘œw”W{ͪ‡khSŠ¡}‹VN…™uJ ˆôyë^ðŠj»k)ŒÕ|R^AŽàyUýsˆP¥ƒa)AHvxS;7s;Ud=p U£<„n[U*B]öNñ@™]ýPNHpÇ`ÃJmycËJàr¤ZáF×ç€Y“£è‘Ïmì½:§†»£]üšŒh[‹¨}ƒ`ËrUQL~Ýi‰M¢kôSêG6]ÔM«?^mK_QIlK^ÔN*tðdçKÆv]cr@Àv‹f\?¨c¯[88VJP¤;‘^‘PÏ<8XVOE:áRrN ;”}¬tÏP¨`œ™}&Âv´{‹eÂS²ÔˆV¼úªáƒ´z¤ª~›¤æo‚‘„`õ†yªU.p`‘C–dªQM=Í^“P"H”nV`‡\›t„_L9yr4^º“€Åˆ »Ö³_ÿÇÞ¶‚ˆBÇŽ©|vs¾ÐžËÍòx?IÐoŽU¥J;U?GE³\˜JH@]4Kî:\aQG/euUG l\\D8iñTj>®rì[ÔDÔw=a«JY„kl(J8—Hƒ._ý™n‡mcŸ£Å’¼u=Ãbª)ЬË;².“È´ö’¸ð¥1±Ašíz=£µUjœš%‰ÜfÊŽF~*[»weOFÜ\#L¼8|XcJª4akJZj>×q³Z B¹l¯c=ì{jAð“æ€S˜ˆrzU“ƈTl˜˜Ì‡Ê_Ïžfzt —§‘XŒY›D™˜çì’~箈žK}“¨=¢‰°G¥±’Þ©v˜¶}ʲ”œ{¤­h›H€œµ'{™ÝŠtÚ»‹Vxñ’Ù‚f¢¸y|U£œ3ŒÈdj¶¿žjzv‰ñwip‰>}:e¹– ¦jy«Ê™csî»F s µ}˜jSuƒ‹Oý–c~+Lý¢F`d©¤¬Yc0ž Šx^K™†–e»ÌwÎ`±‚pjjþt……ü«Àt’€º¨§Ö¾a©ÆˆxÂ㬘…¿[¬?‹•©™ó„R“©ƒˆlŒzÝVô“›‡Ma¨I“ˆ`n½^œrˆ¢B~ÆðªØ‰È~¯ywDZï‰ÀÀ¡¦™\yΣrÒI7eRÙ9g]ñB)€czéZâŸ0–÷~µ»£¯å’µ»#°M‘ε騭Š]Ÿ'’õs2‡MoiIv(YB?bwGd¯Iâ…Ê{Õbo›ÿ—µ‚÷£·X†¾—‹Jm·•t†Ul¤V—µƒº§•ÜÃ(­¤Ä3­÷‹Á©²‡Yºwž`¶™š„|ÏÁº¨£ˆCÍ.´n­Ò’´5ÒÏ‘±eŒÂÅG¬~ˆ+¿“§+†ñ¶+nªí•´u¶#ŸÑ€®Æs°e‰ôưþ‡xÅò®Á‰'ÅH¬A‹ŸÄˆ«ƒ¿ä«7Žþ´›¥rF¥ÿ˜µ‰Ò™wŽ~~1m`jR IÖ^ÌLÀKŸlÜJ`KFlCF?ÅW–:^O*z»=FMW{{A…L‘zÓD]N’tFÓPjo¿BLÚm"AïLœjÒ@¬I}`ƒ>RC W5:)=DW¸;æ=X:>'Xµ5Á;ÚWÁ8?AëWàxKèh›;UIPk>ŠHj¡>´GX`$=CEW>:^B(VJ80@_Wg;§EgWv?"KiZ“?®KG]d?¸K†fþ>L§mDAÌL|o=Jäl(=8KMo> Lãp@3LýpA1LÄlúBÇM]hD•N¼ixCÝMzm‰C"O²o“E©RÐnæFøRènsH£RÇpE—Q~o6GS]p‘EBQµqvB¿Mëq°?!Lüqy@WM^qåDpQroÖGøT4ocGRÖo¨BvN)o³I¨RärîI0M^fMC6F÷aÈF±O m°L‹V:pOhW‡lOPœY@måYÅaKqjjÉwX‰1}~zí¯ežµˆ·Å…¶’G¿÷­ÙŠÅ®cžÊ¡šË‘QuÂŒã€ccƒ s®O¼‚rÅSO|ÙmËP{ßkK"Œ}{e]y˜é„œj•ôz]î¯gŽI{¼f{Lèt´Ve;xÀ[èA¤e\^LGÛfÃa{V»|Šu\c‘c†áqAyr@fÙŠï†o’-ˆs`I²K¢Ö… ³_¥…üŸè˜1|†“q°tñ鉠oº†}úeHu4hmR×jôYFòzmlN¹|¢q¯aù~9rö]"{åb×C'}úe*Dípoa[?¯cÜX*@aT,;ád´T²@:bÈW“Ckmg–Iÿ’LjŒlÓ¶-ª+‰eÃ\²ßˆ¾¨&y¼µÆsvF C”´p^˜Zˆý]𒦇Ócfr…TTmLYÿF#f¼UÓKlyòl1`£~ïlÛV’„bw9f”ê“‘3¯­©`–Ã5·Ù¯¸/¥Ír}¯¤˜jk”pM»y?@MðxÈB¨NèsºEaQrn^BºNpAÌMÄuCO4u…DÄO‹t&B)NÞuŠBTNCt˜CFO²niC|O½o]BÈNÂuâAÈM|x¼AýMzwË@4Nu>FMkv@ËK(yÓ@ØJ¬ydBVNax¹CPPqvžB…NøvèAwN=z @NÒwå?0M+sû@#LÿorAÈL?m—AL,jrCçL djB¢IZ[l?EµVŸ94úItg­;hHõh!=¿Hªh9=1HÂcT=G>Y<îD“Tu9æAuV™=ëF9Zb@LJÃW,>fJKV>9LSe.=ñKËn÷=iKônÑ<üI|mß<-J*pK>qK>r4AMÇqÕBkM0mLCRM¸håCN@i¥DNmºDPp`FªR«oTFR8neG#S(oàEïR¨n9F•Tp×EÞR”sŒBæO¯t/@ÁOútYCèQDwLD×Q3t¥H—W@réHöVLodG-V“pm^žhr~·PnYuO>¾GódðEÇPÄm8MÓUrPªUÌmBTÜ[Àoµ_÷ióxKq°tP^z´wÆst˜ö zœ»Àªî޾˜ª‹Ê¬À›•nŠ•Ó~L‘‰utb†;zgÁRn‰V¹tÙbRIŠpua4K5…hvˆbä›8ŽÀx·¦˜¼‚'•Úˆyƨycp|`hzKò}GkGO o&p¹X9nn;d>…ß}½eDžÕ™‰&5’ðˆy’’’„M—ª”§t¯£¶ˆŽ´é©…Œðª¤@‡g 6žß„ÂÄ™$ƒ툵q·wÐkäRös„e•IFŠm]e§žK¬‹À†«zÄxðbfKw \B{w©fšDÎqCgžDßq§eßBÊq²alF«qabGˆpDYÝ?©~ln|KµŸ=”Wx&¾:¬‰æ½§ zž¯Ð—KpU¢Ñ’úkž=Œbšœ’œnÞ…IlR~g^TO˜@gY0B7g][ˆ?†pDZ…Ey]ÑFŽ~ºhMMŽ|ßkòMĶ}_c¨¥”oµ ›[€@¥”XqϦ@’¹mÅ¥’|oÒ¨!“lZ™>‹cZ‰`víSñqû__JWz‘cñHU‡‰tZÚ|nr‡[P{ÆjPñ‚\r®Mb¬M›¹x´z¦3|û»¬½{Ä«ë}"Á™¦Ó„[²îž5Š7¬I Žc®¢ Ï…˜³Z¥ˆîµß¨F!Ó÷Ç.±QÕ¸Å(¨ëÅq¬™ŠFت)‡AÀ®¬ƒˆO³žv}õ¡Õ/pZ’§‚Xk¯"~éoš€ˆ mC³µ›Ü— m‹a¸®Y˜r$¶Iþuê½"¡’w%¾lž w™¯ã”‡os¼‡:b èŠÂb‹ª–7nú¬z–qù¯ý˜xì¯Ë™r|Gœnˆ–m„hp…^ÔŠ  t¡¬.ŸwŒÜ¿-¯ŒÀ ­®‰–Àj­EŒ!º´§ÿ¤¢w”[„I“cªb;—’‚ñ^í°7˜És†Ã°¡ÑwkÈ]¥!{ªÇh¨ò„WȬڎ(Êœ¯H“³Ëв“ÓÈe±8‘¿¹Æ¥þ‰˜¬‡™iR|7eŽDOw‹aD|‡¬u.S¾¥Ú•²s£Æk²®Ì…·e‘ÌÉcµV¾É«xŠ3ôbu |k MÖm[XC=„GuZ²q•Pƒò˜˜Œ£yƒý{`c¹’… kÇ›’¿z_±z¥t‹­½C«äÞ¿©©…»ß¥ü²§žæŠ!©ü—)‚`¯¾™—wÃ2ªŒ‹ Èø«Ô‹ßÄÇ©oŠÏ¾0¨¤‰ëºÞ¤É†‘²l›}좼“Ép!¦˜E{èºì¦i‰Fɹ¯ Œ4ͲŒË±ÔÌ-°W¨ÌE±‹$À=¬â‰S¡Ó—J„“Šœv}o»j{R¢ZºTLL½`®QSØpÊMBQ-n÷FLDÃW¿; LKxà?²L xU?ÛK vf@xLÖpDFO§kCzN\n{BýMkt*D©NÒu‚DFO‘wC•NÓwBÞNôtsCPzr DGQs5C?P–uÅA+ODxOAdO„y_A¯O³wˆ?tMíwo? KxzÑ@qJz¬BUM x³C­OZvùCœOZv&BN"x€AMNìwÁ@NtôA–M¬qqAôKRlkB–KÝh¿C¾L:eGCÅI[”>hCGVÆ:d;BWü:I;Uä9þ=kT#4Ñ;V½4Ó>ÓWõ9`DùWŒ<ªHhX=ÔHl]i=Iåe`<.Ii·<úIŸi2=™I*g=1Gn[s=ËE½T0:9CÚVA= G6\@7IW@>”I6Uc;EK«`<ïKEjq:áI‹k›=J¼mð>ÊIlqG?ŠJ5t€AáL¢tA·LIp-ALRlöAFMMkDçNAnœD Pmn~E–QqmuEPRìlÛFFTlíFmUk¿FW“mKEU9sDC™R&wæB[SwF+ViyøE Rw×G;UéqÈIXdlœKÂZgmCVa{vtP²XÁs Bl‰-r¤RpÐaMQ}Ýogë—ï‹;t°㦶ŽE¤rŸê’1˜æ’Ž.ú†Øs9“&‹5vEƒ@…¬x†ƒ„©~–ŽW‹Bt]£–¡õ‰œñŸZ¬œÅœâc›Ë•4žÚ“3À°cžá‰ô¯¨¥®…8«‹¥‹‡¢Ï›%†¹hˆðufxhk>Uˆƒnv2Lž ™l€Y¤#¤“‰šÈ—Tå€Èr€d:s+]Ä>Pt„c’;¨t{h BUwhiâJ/tù^ëG·tÜ`ÿGáwÙY"?¶sÎ]/BåŠ%xz[¬š_€#¸¾¢~>®B™mC£’¬gž kŒsb\ ÈQn~žÅ’ftá—‹Ùl—q/SktÊ_ØIt=Z©@„s)P„é{½_5šv‡Þa`­pV•†Œ`¥”¡p8õŠ8e½(ózYc¿HJaÍQèFÙ]hPDF”YíNüE0[WOIF‘Z…NÇ>ÖUôJ2>×T´I°=.gfZ?Cj*^òhJj³> Lïqh?ÁK²pB…MÈmC’OðnÕBPlqmB´Oûq…CWO˜ršBûMGvhAgNayç@ÎMÓwJAYL xº@KµwCÄLätßAúK›opAÏLÈh—BêMnlAàL•rÓDhNJxÙCàMÝzfCNËxDØO½t&DÐPr˜D’QZs¢CPuoAtNwŽB§O)xCPïtmBOšuÛ@¬L²xkBœLÂxêBMvãB OhuïB0Ouv-BÄM:v¢ANžuŸ?ÊMÜsRAÆMwq>ABLÃl¥@SKdkBöLÔhpB1JŸ`Š?÷BÒYì<™<êW¶:½;&U†8-?JUÙ4ÿ>{V77A?Wè93DUY6=}G©]¼=%I±`†>lJêeÛ;^JsjVþJ2fP=/F‚[‰<˜CšVi;fCZ¡=ýF6^é>ÒGX>@I,Wð;iK´^~{ŠÝnGË‹+q´H؉ÙoMG„‰Àn¸Iú†iÕGò‰¹ew8‚~…\P0ÄoíY¤Dë[P$Ci\ÆOôC,Z,O D@^¡P¸IŠ[&P!C\Q©I´@:X0OŠDyqQcRDŽw²g.D™kZV–?rlöTË?quv[½@y?`qB%†)uCW—lˆ–mc „’>tÀ¤H•và¥Ú’tƧ’çnY¬•ÛgM±?˜fh ާeÝ•¡‡ejþ”ƒ¶_÷™¬†dÅ•8…†dL–ˆ†³ch˜»‚¤[- ‰HY‹¯$–3bº¹jœi¬À!¢Úu³Ã“¨0|ÊÃ2¬‡ƒpÃ箌Ž>¼Ó¤÷Š6¶kœí…¬¯õš´æÁ­ªnŒ¾ÒĹ´–¦Ñã¯pþÌǬƌ7Éš­÷Ž:Äq¨õ…¬ÄÒª±‡ô¹U¤Rˆ²žˆ6¥!”¼t¯x[jZº¼œüw× ÙyÙºT˜mw±‘Øf³é’:io´ø–¹m¥€/h¡Œ›c’§Ä‘f¼±¹—Êk\¼ßž¬t伯Ÿ‘vb§Ã.p•vßgí‹‘|tp§+›fŠ¥¼w«´y¾ ©»Žy»¸¤îŠR·Ÿ3Ѣɮƒ!“÷{Æ`Ò—²}ò]„±À“ApÛÄŸ¹u‚ʧÁ~ÌŸ¬‰UÍÉ®3ˆÍX°“JÍY±-‘̱ ‹ñÄn«mˆ¤°Ý—æy¬™×{ˆSJ‹j¼B_§qQH EŒÙg|Âj­£ˆðÏȺüúθšËÄè¯ý“T±½c›ï‹Esɉ\vúKaŠHxW`œc”¢ƒ ¤ Ÿðý™n‚ž°”2y¬S›aƒÃ·' íˆ-ºž}ˆÞ·ž†‰·ý£w¹«™‘s¹1«µÓÁð¯#Æ®;÷Á(¨:¼A¥u“õ¸ª£Y”¹¢EK°“š¿ƒóž@Gz߆Ôu”¿‹®€®ËœVF¾Ä¨@Žg¿~¬¸ŽP¼^«œÄÁç­[Û½—¤h”÷ª$šØ”œ’b’'Œ xP†ý\èRÜa)AFCòX–;õ?KW ?4?Q:Ø;nQ9Ñ?µZ#@QIwh‰@1KvpØ@+KrCC¤MSq7C÷NLqðCKP.t%DP!s?E&Pîp>COüqîBšPÅsDÆPs&B)NÞuAÂLåwúBMŠuºA˜K)p=AûL?lA¤Mžpš@¿LÈtC±M7{¸CFN’|YC·N®xØD PdtYFuQiseEzQÑt—C’PwGA,Nw9B˜Nu²C'PFqáD“Ps(CàNvÈBçNivôAÂNt£BØOãtïA‘N¶uÒAüMkuŒA¶M„s•@Nq™A†NNnŽ?‚LµkK>Lhli?LËhÒAÑJáa*@QD˜\ê;ê;øW±:+<’VÜ7v?¬V×5¤?ÍVq8.@.Wî8„B«Y|<™Fµ`Ö<™HËcË<èIÆeÆ;dK6lè4EØYr<êD]È=ûF^>MG´X|>€IÄ\^=3LId•<Luf¡=XJãgµ=OJ%lG?JEqÒ?ÌJÛsÓ?PL¢r?6LVpû?ŠLýns?cMnliBCNnjÏBéN¸i1D¨P”h GLS™géGzT5i`GStk÷F”REoØE!Rt€DŠQÑuáFyT?tGcR‰rèD,PTq°F’QòoÊFcR n¥H{TøntJmUâk7LðT3gL…Sf LHUXl¶LV»n|PXYhl9SHXßnôRW[În¿_€gAkØš‚âr•œ—²{h¨¦Æ†<ªÉ¡4ˆá¥6œ·¶”ÔŽ?„pŒøŠ!xP®n«Þ‘ð¿­±_·0žŠ~æ¤r–VyÛ£z•í„Ó›Ezy„¥õ˜ø{–¦ùœG…ý­ ¢´Œ ¶÷¨®½¶ˆ© «N¢ê‹Î£?žP‰%¢„›È„•¬¢‰j¶&¬Žäµ©r‰–ŠŠ0yß…»ta^9{Ìi;T®†w9e꥘Z5º-¨ÒŠã©L›ˆßž«•w€lžŠ—ö|à©‘ŸV…~©ª´‡l§ì›î…ëŸí–ƒs‡–wQet¶b¹61qob>ài“X¦<Àg²SÐ:ûp[šF¡vcI¸l‰\K>¹f¢W=£yTm‡Q᛼Gzü±û$…õ­L˜×q¾¥‘Èd¥9’Ðil´ šbrÌÀ¡ÛxÈ´~œìrŒ¢”„iƒyM·™ }]Kç‹ÂnL?¬ŽeS?KÏ_UC!d`²Dº€ý`>·v£[|;"fÿR ?¦_pQ*BlZO@ÄVÍN@C ZðOzGuWdPúD¤PÐLADd¯X„Kz9l°H€VnôDq"\±;Ïe›R›7‚w^a–E—‚JjhIoˆ»qÆS«’v{` ™i‰ oøŸö’¡y'¥ª“{©h“@q°D•gßµK˜Dh_¯—»pШG–œsç£"‘sgñ¢eǙ瀥Y╬~ˆTÉ„W¯¢2ŠPò¥ÆŠsIš«fŽÑS.¹ ™Mf0¿Ä¤Ïr©Çˆ¯r¨Éµ°1‡5Æû¬%‡·¾£¢hƒÍ¸Âõ¿ì¢´ƒÌ–¯ÂŠxÓK®õ‹Ñ#­ªPÎu®ÄŽÌA­Å…(ÍǮޅ~Æãª<ˆŒ¿T©‹º¦¢ñ}»‹šær¹éšsRÁtžËu€»˜Xmž´Å“Äiá·ñ—§mš¹Ó›UsÔ­L—äpq£Ëxiû¦Ú‘b¯£–eœ¹ ÓpÚ»£žWuDª“’¹q“9{Uj’{áqd¢Æ•‡1º§[=»u¦Ãa·Í¢kЧ³žqŠ|¡SZ})“/|ˆbO™k€-cƳƒ•¡p«ÆëŸ©ttÊǧ=òË%®ÿ‰‚ÍG° ³ÌŒ¯:’ÏÌv°óëÌ—±£ŠtÇô®‰Šº  ¼„ڡ͈+kTúoÂP‰kÍHš ƒó[¼´¤TWÍþ¶3qÏÕ¶ÝåÃå«öO®&˜Ò€pœÃ…ZYÝŒ…s=/ÝzQj¡ë˜êƒ ¯°«æ”ç«ñ¦¾Ž)¥h›RƒV¬"œf‰·#}›µ€•žq¸­eÛnНþ˜â~×µ¨¥ð­¹­¨„‹ZÃ/¯N‹åÈ4±kŽåªq¹˜£³ ¶Ä¢I^¶ª¢¼‹t­$šì‚C“ŒÔyÞŒjhvvº†1Å¡!•kŒ‹®éš‡ó±8žø†²5¡ÉŠ“ºª×‘»½â­j›Q¦ºœX™¨R„ù†i3dl3UtIP’=Ë<ðPÛ7B;Q´<“=nO:ñ;ÿR[:&?­Z¹>ŽF›c¸@‹J#n AŸLïrªBúM8t‰B]KSl‹=cLgk=wK—e@ôJj_]>NFùZ¶9 ?EXG8L’j„=K.g÷>+JE`Ã>ðGÌY|>¼F9\ª<‘E˜\$=žFöZg=ÃFW)?qI–`d=“K­j¤Ks5?ŸK¾s>ªKrpº=/Kµna@ Lónu@BLêkE±M g­C"MÞdSE}PÊgyFiRhˆG¤SVk+FáQ|l¡D$PàoÍCWNCr‘EÊO¾rÌG¯R”q˜GZRðqE:PíozHÜRélÑI$UoàG6VÕqÆGÖVÚo™J%X•j÷oŽZç3‚]ÛMð.Puæ[\E ‡Ên±Qå‰NmM`аgpFA“{u]œk|t¡/z§Í‘¯rw°»”Œg“³X•iƒ²d—ry³™›Iv!´2œ©oŸ°Ç˜&mðŸdˆÄ`Þ‘»w±J]˜ã|+J𡛈ÈP¤T‰H_£?…5GÚ©ñŒåQ¬µ›áfBÆó©Ú{ε°oÎ[²ù‚Æ(«N„’ÀÈ£t„?¾¨¥Ð…~ÇÆ«ì†ðК®:ŠÒ)¬±FÓç¯`‘¹ÓƲOÒò‰RÊ]­Ì‡ÑÄù«ì‹Äc«ì‡èÆ«Œ„¦µ²™Ñpù¾ðt7¾#›än¼³™Çn%¾ ït¾kŸÕyhµñ›†w”ª–Nm¬ô•fgÓ´Ršõk¾ )v€¾]ŸxѰ–Ír ™âŽfí#{Ìgú L’«}.º­¥R‰¢»¨1Š—¶˜£™ˆ²»ž@‡ˆ¡g’z~”’~çb ›»ƒDfÔ·[˜ðrBÇ ttåÉ»¦”€BË­®b‹éÌõ±Ì °v’öËk°r ÍG²"‹Êr°›ˆÄ€«‰†hµX›z$¶††qê–ÖhŸ€‹ñj†´›œþ|kÆè¬'‡Éý«‰½Ýžnˆ. ˆ wjŽXmQL͇}hÙ>7’½|˜Zñ¢>™ß‚’¶,¯ã•NµÎ«-’ó®A£#Œ³£Ò†é¶s›_q­»Š‹R+£g|MG¢ †JgծԚ݆³‘¡3‡¼Iª)‰‘ÅÙ°CŽÁC«X¸µp¢›Œº³î¡f½´ñ¡‰n©s˜¹›þŠkwJ‘‡·zï@‡:~R“D„œz+–÷…ítÑ’¦Á™£†÷¯Úžé‹E´ë¨+•pší– ’‡}gpçocf-MOPJ³8ýJé98'QÒ6­:PJ;ú<àOk:V<´QyMEw`=Ku·?ÛLzqÈ?ìKow> K„n“>œLvj>ÎKraŠ?lJíZj<­F,W)6@ X^6´; Yú;O>Yô>R@DY>=h@ŸW¯<úB‚X›=;F_Œ=gHÊaî=XJcä>ïJ3fV?ËJ/dB=Iw__<G0[f= G\‘;[EùVƒ=™F UŠ=¤FGKõnð>fKšoMA€L?oVC0MÁkE#M‡dÞD;MèaŒEëO|dðDæPÓgFîQIlÎFuQMn‘EBQµqHF7Q÷r¶FFQµo¾HìTDp’GãR’pqHñQ×niJ§S¤jL†WnÙGqV7pÉEˆW{pÝIÇ[©mHKZÍi.L”X1n;PÈ\6säOÚZqSe]|o2So^mBSk_Vd>ldWipv¦`bŒt€ðe’Œ„‘f7“4‡—mò–ñˆµpñ¡Ø˜M~«¸¾°5‘›Ã“±„‘ÁP© ‡@»N¥Y‰¹¥[a·|¡ˆÈ®ò˜,~!ž,¹v¤Ø˜ÆªóœÐ†¯¡ªŠ×±¯¦êŒE¨Q¢L‰ Ÿ~—óƒ#œN‘J~E®úžqˆK® Gˆ[§¯™.‚&‘1‡HmuŒÏƒylÆœ…Œv|¢«ª•uxeÇ2¯£ŒÀ°«fŒæ¬Óœ-„£¡H™ ƒŽ¡…™Û„=¤y•¢¡y™Nwd›É“͉c†:xæm2ŠnwÜTð‹é{¸Lþ‰òx—HÛ„¦sóC´qrd³F&yín´Ps~c‹CÔu4d 7éndXm<-ƒ°iùCœžÕŠ&dT­Ë–.u²H——sñªkðgò£Œùe¹µ¶™¥zÃÕ¬…ƒvÂQ­‰@ÁF¨Ç|h½)¢½{A«%”tkØ›S‰{hý‘‘xaYô•oÊHÓ€ÊgrC‘|5f…Ióv5d÷Guvvc9FmZZÏ@<[RNjB$P`Fx>TÑK$C1[{N¡D„eñSlGvÂdoI+rƒ^©:Çj¾Uð2¢V:J -øjÅSO@·kŸS^†k M΀Ÿ_æA8’ûv­HÉž¾Œ9q)ŸVóu¨¥%‘Fsf«‡žcÚ®Ÿ‘5g®­a“-ol°i—êq˵Œ›hpζÉo«[–ªq›Þ„,cÙ—H|ŠK<£å‰yX§£È‹ÄTl¡ò…iOú¢‰°N7¬q‘Ê[³»œ™8løÆ®¡guèËv«g±É˜­È‡˜Á©Í‰ ºˆ¨?‰òÃߨ¨††Í­k‹WÐ+©ÅŒTÒ/«‘ ÕN±â¡Òy±+ŠYÌŰòˆeÇç®w‹Ç­±Šeʽ¯Ÿ‹‹°Ó–ïne¾ž½t$ÁlFo½™›Ÿnì¹tvu—¼K Cz#·5›¬s<°w—¥l!µ&›Ány½^ †t,ÃÔ¤“x¶Âÿ¡Êw¹UšHpT£¤‹e)™„kfl§ë•Þy‰¿ø¨†–Áù¬•ˆÉ»”© ŠóµÝ¢ ‹ƒ¤Õ“ª{Ò˜8‚ÿ`ã 5‰Sež¹P™3q dzŸ™uóÉ5¦/‚Ëó­ ŒÌð²Å˰¯ÞäÌn±÷ŒšÎY³Õ‰oÎȲ퇔̲·…GÆH¬ö…Ú´“›ÈƒUŸÐŒ—rŸ¦xkœÇ{ÅÄN¬Â‡ìÇÚ¨û‡p¶C—ò‚a—'|’~$€«\Ði`}´_°O´ÔdܤœšJ…*·›­ª”§¸=¬â‘ê´ž¥«·G¡!‡J¶È˜¬o°¦‚©@¶™/l7¨™¾uV+¥¡‘œ‘¬RˆA³<§‘‰€¼²®Rñ»|ª*Œ£±  ºŠW±ã ;‡³ ¤‰0¦~– 2šU}ø—‡‘΂ ”Ó½þ‹±}HsÙˆ–{ÆrÏ‘‰‰„z›½‘ˆ—ŸY”j€ž•ý…¾Ž‚‰v„ uLi²fVF†LÇ>3I¸6&6SQ„9t<¥Ry×QŽ:=¢Pã9â>“R[;ÞBAWX>ÔF¤f@HKÎuÖBýMˆ}4CCN`} BÜMœ{áBéMGvRDÝOp“FþRNo GæSqWDµPsÊAO/tJAäN˜p DnOål CÇN›mZC…NÜq`DrNÅt¾B;M—váBZN”wcAÌNuÐAÄN¥rDÅNNpHEýMp>E9OÅvD2P¶xÖCQ…uEDLQsÏETRârïE‚Rzq.D„P_rpCèNiuYB¨M¡vµ@ÅM_vš@ÀNv=?ÞMéu?®MBu(@ Ns¦?lL»KsoZ>Lòg‚>fKš\Õ?9JðVú:´EjUF59>ÊV§6à:ÇW‰=ª?½WÆ?A:W¼<'>ˆV<B’W0=ÅEr\s<G`_u=I¬a,=eIPd»=JéeÇ=LJqa.= Hð[<‹FZVXIR]SAxLèf^>1Lik"<ŽJílU=ˆJAqV>2K¥s8?ÄKåpf?jKÏn>lKp8@¬LÕoZBãMmbCÈMWeSEÊNOaFDfN_èA²M£a^C¯NSj¬D·NvneFÌQ@sNGÄUœsËGfVžpNHµVÛoÇHÄToçH¡RxkHK;T†iôKûVyi¤HžWÙjåF~YMnI[pMK”[$oTN] pžY¨c¾rxYg^*m„Y1`èkYbÁm¼[ÍffUmúfƒO"|üiV‹‡6{§g|”ˈEo¡™{Šüg¢ŸNj-¦œ%|å¸ °ËþÂã°Q†Ã>¬T‰C»ã¤÷„¦»×¥Nн?©g†¼¼Uª¹…ײ¡…9°ÇŸÍˆ¨Vš‡·Ÿ¬”p€‘©8\ˆ‚©µ£6Žìžx™ÐЍ˜¥“¿€Zžå• „þ˜dއyY΄´jNa†’q*œ"–Ó€>ªPŒ„“º€¢Ó„øÉ±RÕªeæ±bž(…ɦt™Ò‚¡q•ù~¢É0qð”8„]ˆÀyKnVrº`LL:~lgSH{zL•ã€LÉ•~þO´„§wÆS£ˆ>}džˆ.réK‡ts:?ÌvØ\D>•w_Ú:’ŒvÙD5 Ü(jÙ°˜Ës©­Þ“hjœ^ÁY® YŠôjŠ»†¥*€Oª«é|øÄꨋ{†ÇS©:~¿¹¡ºvÈ´¦›Ht£à‹Äb›|CM‰bmIE€ƒójRJƒg±CIìe)Cz`›DEoCV³D„YLiA€TËIØA±W—L\BÒ^ Q>ÕcÝR½>›bôQ':Ø]ÜPy7ÚTDKã0þ\oPu8Vvp`(J!k Næ~ËauHe’FzFQ¦h¼n<¨c”æv¶®ƒ—æso¯t’ib˜°%“7hª¿‘¿nשr’’p2²>—bpÞ¸eœín±¸f?w³B˜ùwÔ¥u‹t_g¬@3`2¥ÿ‹cZšžƒ KF Å… M&¥Š=Yu«ÅŒËcI³m’;iÞÂ:Ÿ|}¡Éë¬ð‹YÄg­5—¿ªÕ‹ Å„©©‡oÊ «|‡=ÏÝ©F‰°ÐóªS Ðf¯jŽв®uêÍ.³DŠ(ËóhŠCȃ¯m‰4ËI±§Œü°õ–pKÀbžçvC¿ä›¶n‘¹O™ækÉ´D™ÆpÒ²w—EoPªÉc¦ªªáeW¸œ…pCÂÂ¥JuÆÏ¨^w¨Æ\¨ªzoŲ¦š},¹A›Xx}®m–„yt¸zž,ƒºÇG¬G‰ É鯥ŠQÃc®÷‹†¾â©eP®^˜~Ÿ2ˆÁbk¤£ŒŽ`'¸ê—ƒlàÄ2ž+v½Ê§Ž€ÌT®нÍx±xÎû±JZϘ²>‹óи³‰ÒÐG²>ˆ{̰{ˆÈÉz°Ã‰®¾É¡¾„Å£]ðr¥÷“±r·»à¦`LÈh³î‡?˧²o‰?¼qŸ ‡h˜E}‹|c\DfGy$aáM'“à…Ægµ¬ú¡ŽÞ´¬Ÿ•&¶ª’¢µÂ¤ Œ…ºÎ£Ñ‚ιlžñr&¤ñƒàD–“¬cZ-c/hDŠœ†“ro¤——¼ƒ+«6¡‡ÿ³åª ‹Ÿ·Pª–¿±]¢¾‹‹µJ¥ ¶E£¹Ž ª°™çžh•£‹ê𶕆9™C‘HÖ‚¥vÞ„uyuuF‚h{0|¦‹‚“zŒ–¯‰rÒ’‡Qq*}„Ézþ~ñruq†d#WhU9B;<¤LZ4‘5eO1<Ã<ûSé=Y?ÆTü8É;ÃQ¦8¦=RÎ9â@XV3=5D b¨@}HµpÖA1K×{¸A¸M°~¢A·NÕ~BéMWy•C“OüptF‹S2pIFõSrWDrQt÷BìOñu‚BÒNMs*DòNçoµC:Oòp‹BmN©sáBúLñu#BWKÅxòA±Lôx@GMktš>ŠLsBêMwoDøMím‚CÆM-r´C÷O‰t¶C‡QærïBSQ1q’EmRlpšF²RoªE4QèqB{M.vGBgMz@ANUyA7OwAOKt@Nèsp?QMuH?LHté>:L‰p¬>MOi¬=]K]^v?JäX±<ÞEXE6?ìW 5å; Xù;úAõWt>¨B]W«;·>ñVƒ;•BYƒ;rFÜ\n<H±_œ<šHúa=µIÄf¹<™Jµiw=®JèeÅ>¢I˜]/?÷HÆU >öGpSÓ;MFñSw9jE¶UŽ=âH\ï?›Kæa÷=LPf}=&Löjq>ÀJOp§?èJusµ?LKqE@tKCo+?‡Ksp!?ÓK±p–AäM8nPD,P‰ibF˜Pe?D-NÉ`íBOM£bÍ@ÃL+j™B9NÃp‡EQQs6FSqÛFOV’páG%Vùo-J*UMnIS‚ilK­Uh:KXRgII^YÁe”GÙXh6I·X%pIJÍY/rBPL^‡q_þfuq2`Wa–hUaé`miîaàa q_n'tènLrqMP/€öq\Yˆh‚‚odN–k~¨­tš.t,³&wDµ©¦¤ƒc¾±4Ž"Ã:¯£,Å@®I9¿Rª†‰¾Á“®­‹wÃò¯ƒ… ÂįG„߻Ϫ@ˆ5µð£(Š4©ÿ™P„šAŒ‘tŸ!” ¤¨œÎ)žO— ‘N–•o…˜Žï©ŒS€af‰=Æc2Žš„?mažb”]€š°L¢zƒeÂH¬ ‰Ë‹±9¾ÅO«<‹¹¡e…Ï®¦›zM¥þ•c}á™ÿ‚ó_V…ðkFxqZCC<_{Kø4eh×Pr=4}æiŠH9–€“Lš¢<ÉeG•Œ«k¬˜ù’Qwø–Ï…Z` š<…|`ºˆ?rU.…0sÀOä k˜;¬‘ð}QP…¤n“qm°¯{˜qœÃ…^b—‘ê\®Òš.w¡·jŸku<À`¡#x´Çµ¦M|TÇ|§‘xþÀž¤žv?¶lšÝmy©B”eˆ—à}€WJ•_`ØŽCr”F†®hrA?‚kdHwS[§E4d‡Pµ@êU¾Je<`V‹K¨Òp²{‰”ϲx‹CÊg¯š‹ûư©—†l¹’›èw†¤ïްiü®§šfzóÄ–²ñˆ̸‡U˶¯‡³¿‚¦Á‡4Ÿ‡äoy€ñgÛHðyÚiÏEy”QŒão˜¯·¥×“3´i«´–r³_§:¶³%£Ä‡øº¾¥ë ¾a Ývî¦@†dR“`e¨.¥Š_U5Ú•’{×WwŸ§’tv¤Ü›ñä¬e¤¿ŠË³…¨zŽ•µ‹§¹Žºù©åç¹ü¨€”ò´[¦‚šà­ü¤Þ™t ²šŒ§›ÞöèŽ;s}ÌoÜl.vmkmÂ~0o¡a»ŒïvÚS$ŠöwqRŒÕƒmptS‰K€8| w)pÅKÑK1B_XB·FÓhÚA©HuC-M ~ÙB4Oà.B¥MŸ|D5O™r¡FfRÓnGCSq×EeQžtÔDYO x:B“LLwaC¢M;u“C PÊuáBÝPWx¦ANïxA:Kyz@ÉJÃv7@ÓLírç?×LGqBŸM9oJCXM o­B›L‹pÇBòNr•BžPrCOQþpFüROpFYR:pEºPs5BxMûu B·MzÃ@4Nˆyì@kOþuÀAþO9sõ?†Msa?¢L/w\>LovÕ<KqçœEµZÌ8€@ÈZú5ü>âX´8ÙBºWƒªJˆdP=J h¸=ðJ;lE=sKµm}<`Jwi=JÊaÛ?ãJ˜[åhJä^>úJ)eÒ=÷JÍiH?¾JoA®Jr+B|J;p|A£Jcn1AÔKŽoÖ?*L‹oÝB¯N\mhFQ¥kGQsjuD°Nf%E¿NÀfHCUO¥l†D™PlsåCóOHrETQÙo_FSçnÛG TânJÐSñmAJSÃjõKÅTièJýU§f…IÐWRb9IpVÉc¥JCSmˆKÌTÇpmQ­^jq/\Nd·r bgêjakm°lÙnÃröwׂ¸ˆö}m‰éƒPeŽý…Èi‹$ˆØrPž-–m|ɲ0`x]¾¿¦u{§Á{® ƒÃÅp³‰Èo²‘ûÅÅ®„“QÄî¯ôÏÅh³cŽ™Å]²öˆüÀ¯¶‡,¸ž¦†Œ³¢´‡A«›^…]žg‘ }&Ÿ”Fà É—ŽŠHžß–´‰U“ØŽÝ€±`ƒFvÌ€t¥\ë„9|IaeŒÝƒ l#™A‰|‹±é¢Ö…ÓÂ!¬‰:Ê3±OEƘ®´Šx¾-§¼„™´Ÿx~è°¨ØnžÉr2„»o¶X0o³T¢=eN).`WLJ 7]m[MN„•³‚M[Y³ð j=¥Ê …f¨ ¢Œ¢¦W™S€g¬e˜ï…fš¬Œ±–æ‹é{$‡4]©M9T(J2\TóJ$8ŒaÚQ\<^cÍRI=ÙdÖSÑ>cTÌ@ôi7[#GzkàY ?Äp^Z…1ímJTgQx†«z×uÁªä’ÞyÔÌX¯PŠ4ȱ@‰¢Æú¯£…çÁ%¤½xȾÁœ¥u_±×‘Rq §¬Œrž«¶"pÆ´ï–[lÞÀäžØqKÄ#¡&pÍÄ‚ ÝpÎÁxwp–¶º•ºht§…ŒQ\=µ}o? Ÿ•€$IS©¼[j޹3žÈŧ3†UÉÿ©V‹ÏÇp­½¦È"°—Ž;ÊÚ°ÔŒ…Í8³¨‹§Ïã³Æ‡>ÌŒ³ˆžÊˆ­TެÉ;¬žjÇz©K‡¤Æ5¨Y‚~Å­Q޼ÆK­«Š¹b™€xöÂÁ¡0徨2{ŶY˜Yse©˜jW™ù}­V•z@X료‹©h{»>›Žq4Ãu¢ÝsûÄB¦£u?Ǩ{Çù¥NãñJÁµ£ó>ÈDªˆ®ÏŒ¯-ŽkÏ’°;‘̱- Éá±&ŒºÃƒ«Í‚湟)sÚ·bš&kT½ÕœoqÀÄW¡{êÉ𨠂GÌ{¬Ò„—Ï]¯±†pÒ©±‡ˆRÔð³SŠVÒ³ëŠÎS±¶£Ë¸­ŒÅ¤!,³²–ªmà¡ÁŠœ^Í«”—»qkÆ÷±ŠLÎ[·ÆˆËV´Oˆ›À@¦Ý†"¤RŽoOˆés’HH{äiCñ‘©…Ak„¬ 8’?¸®m˜„¸¹«‹·¦È…¼ð£ƒ~¾»žðsK¦(ˆÓUÝ”«j60‹S`ô0fEq·@(—8†“^ï™–:uÛÙ—%„&«“¡¥‹£¶o©¥ŽÑ¾œ®÷’i½%«•é·¹¦í—÷±q¥ª–q¦¾šŠ8Ý~ëŽï}cuÈw°hYj pk^ù_2yr_/Mpõe1@l€šlBƒ4uxXA(†–xB‰æ‚·zWXsTg¦?{Bï\`=÷?VÞ8ò9©SÆ9?:"Tv8:GS´8Ú9’VÍ9 =ÅZ?ïDcÄAžG:pµB½KyyÊB}M~A>MÛzD²O¢qeG¹R7khHASl,GõP,sÑDxMów'CKìvuD1N.vµC˜Q¯xCìS¾|ÕBžPÔ{#B¢Lw ABK\r™AøLïo®AÀMqzA:M”pPBÓL¾oNA¬KQnµAM9pEAXOðs-B6PEs‚D(RÈq˜C Qr DrO s‚CiNPtB¹M v*A—MÆv¤A9O$t¿@§O¬p=C=P†sC`Ow”>~LGuª9/J¦p =ÁL×k°AµLObìCþIàW»ArF÷W6;#AÇZ8Œ?ÞWº:ÁC‹Vj=>E¥Vµ<6A€WvY„=dG`.>J}hþ=•Jnz=LKYpëHúk·@@JïoÂB–J®pùCLJ~pHBOI9mC:Llõ@%M¦k¸C°O±knFQQgk G#QœkñE˜N]f¥D¡M¾aØF¼QJl°D®Pžr‚BÒNMs?B>NozEbQ™lÝE RákI­RmšHÜQ‹jœJñRRhJT”e™ITU£a£KdUÈd{LS³iN~WíluT0akqÝ[\hgxl_sÏo€ †2vž„þŽ™ƒ›š·ŽYŸà™Š{}›X•àv’OŽxaœ“|yVª–™Hq—¹!ŸÌtpĬÅ|TÉÆ²ä€qÈ]³BÀᨦçÂ@¬Œ†Ã×­;ˆÈ´B‹dÃi±¢‹gºK§á†Ã´'¢c†˜®ž¡ˆ¼©‚èŒN¥8’‹¡ŸŸ–xƒLœ¤•ìjŠH€p'†všna€fs4oÍ|$t¯h§Žˆ+uêšV—þƒk¯£~ˆÌ¾jª4ŠÃƝgŽÂ¯àŒÔ»k«D…·‰¢¹{/º©¦N,¶I¥Œæ›±»Œúw•Y*Œ/xrHCjrc×=nt$nT]—(‡àd(·W¨{‡î±©©ŽÆ²b§·’Þ³}¢ ͳޠÀ먛’ø£Î™”‘ø—UŽzuÌ“`ƒ!Z9o{wFô Tdc£Jm “zoMè „Œõdʶí›ùuýÁ‹¢¶~Þŧá€=ÇЩ;~‘ÅP©xuª“}¶@¡©u³°ºžæq.©˜lѩϘmtUìIoÓ…v‰Eìf÷OŸ.XÐI•0õ[ÓN_8UPž=—fU0Aíg§V;6jiUò@i÷TCño c›N~uA]2Ef{zoî9~Œiø[g—U‘’‡¾g¤eGЫ´øÌQ´ôŽÊ9±ŽõÅ©x‡_Á´œz®¶‘“›q¨·Š0nH©°ŽÖnÿ²,•DiP¿Ìœ+l!ŸmJ¿)Ÿq­¼í›žq˜¶ã–†s¬Ö’Üi£iˆÚShŸƒwN0§’it¼ò¢€ðÊ÷°ûÊù¬ÈŽ–Ëö­(ŽÉ2­ÄŠÌ©²Ìl³ ÞÌϲù‰<ʱ±Œ†×Ŭ"ŠkÀ†¥I‡B¹™rù›­w³µÖ™~6»9¢‡…«¹a›Hy¸Ã£§}Û¿<Ÿxþ·–™®p­z“ƒk½œ‡b`✽‡e­¬”ßoÀ Ÿ)wØÇ~¤'z Èʦ¤{LÉk§ zðÉ¥tw0È—£%zaۤ)Êæª†‘ίé‰ÏN°‹ŒÇÌV°¯Œ¿Êé°–‰’lj­BƒnÁù {w9¾â›"oÊÁ¿žotRÆ¥ü~ÿÈS©©†"Ë«:ˆgÎÌ­Á‡oÑÔ°)‰Ô³.Œ{Ô£³œÊѱ.Î\­Ô‰ÅÆÄ¥S~¸®g’uaœ™Ì}ZD¯ ùŒ¼dW¬[‹ÄÎCµ^ŽYË®‹ŒÀh¢¤‰Ú¢F.rÕŠtåLb†‡oºD嘴†ÏcЫa‰Fº°®z–â¾–°t‘…¿¸«š‰ÏÀ¤.¼¢›ãmd¥ç†fQí”ãmª8¸ÙeØ1zŽmJ; $uFÜŒ‚~Daʑ݈ètÏœü”7ö°“¢Ø‡TÀ€¯›óÀ*­å÷¸¥¤Šü®®·‡Ü£ƒ•7€Kžù÷| ’ „áyzðmkmCod^~XotWOCOxVL4TuwYï9[wŒcMJJ€JpgÒ{]m¢pÂ\TkœHÕJÎdj@³CU99R¤9%8kUÛ9Ì9ÐV‰8Ÿ9JXÚ7<“Xª>bDì^¡AVFVh\BXIÜn´A Ls3AxNfsöC&QŒn9FQRÖfæF­R¹g¾GòQ p‰F‰NÒr‚ErLqE˜NÃrLEÒRëxLE½UF}‡C PÉ{ªB„KuÿC+Lo®C¨M{nCAoMŸqf@NAq›BÚNÍnÒAýLBk'BKNénA]O2vŒ?nNv©A PssCQ€sºEÐPTt²EWONs,C Nu›AßL}vBšN@sA¤OSriERçtñFrS˜v©AóO s’=…Mtp?NMckj@&KbD/J³Xþ@3F„V);Á@%Yà8=qW%;Ž@+V¿>÷BÓVè<Â>”Xl;*@ž^ë<¯FÁeÞ=ÄICk>¿JFn!?ÓK±p<ÔJ¦pc=ÛJ1kÏ?rK€e=•I#`“=PJ]¸:cHYÅ9jEWÙ;Gj[É:@IÍd,<ëIÏjy>JÈn@dJ÷qßA•Kr.C£Kªq²C’JAm›DhLAhTBM|fA$O¤eîD€OªhnE;O«i"C¨K¥bõ@Jò\UDÁN#hKDCP¹q;BÊNçs_AyM-o‚D!PÈkŽE‘Q2kÿFºQlGÓQKjJOSµfkK-WhfJ$Uãd/LfVðeÿOzZd¿UæZÙf¥Sà`NpÙcXqx_yˆ~òo:‘j“0|s›—Ÿ1Š ±A­µû±i¦|†µ¦ýœ€Óš –M~p  •°z¬Mš(qd¹~6róö¦HzõÁù¥|yƒ»£™‚²A›_¸`m}¿É£|‘É´Ù†ÿÊ5¸®Œ@Ãh¯Àˆw¸¹¤…q²ÞŸ‰‡o®5 ËŠé¨`œÔ‡~’¼}¨’²‡ {I}¼o+a¹‚¶u!p0ŒCƒdƒ@t„º~*™”ƒg¡ÂýŠë¬ñ¢pŠKµ‹§F‹É¸­Rº§®aŽh»Ò­á„^¼ó©r‚c¿½¬ † Â#±96¼*«—R²¡œ }÷² ?t§”Œ¼Wÿ†‘]ò™Ö‡ hÙ²¡á„à¶ ªa_»ÙªL“Ĺñ¤qI¹È¥b¼µ¤“.¶ª¥D•¸ªŽ› †c¥¼—kyÚ•@ƒ^VÙ–8€ÿRQœÏ…]d,WrFI"”–y³M|§Ý”øn;½nŸkx¬Å“ª`{§Ç¦«=wÞÇýªft¸½g¥¢wµ}¢mns®óšzh„¡Ä‹\‹£Ç“0mzœµ sõ‰0zÀKf‚P{*À]éID,árî_5F2`ƒYBO d]ÞIIs¼^ Aµu,\?iEZF¼{æqU숵qëE¿•ä}ÔI¶ˆdmp‡°…¥ðš:Ê²Š‘ÛÐD³dŠªÏQ³XŠŽÍ±,Š…É(­c‰’ÃDŸp~tµw“ oå¤óˆØh£¦yŽ©jþ±û”ufƼ7›ljp¿]‚n ¸À›5t%®K”­o­“ wã©Ö“†q/¥3®g🶆”X>£êŠÍ_£´å›ÍvqÅc®IŒÊo¯ó½ËÕ­®Èc«]‹ ÉծȎXÇí®WÇe­µŠ¾ÅZ«¬…cÀ{©:ŠÃ·¶ ¬†g¤9h¡|®H•™kî¢å2iƤê‘ôl£µf›dsÐŧ{´Ê›©MWÉ·§–€·Êr¨EÞË®§ÁxÊë£EvÐÆ„¢ýzÈ‚¦Z‚òÉm«°„.ʾ¯j‡XÉa®2‰È|¬:Юũ¼†ÎÁÀž¾y†À!›®r†ÃáAw—ƤЀ?ÈѨ׆VÊ)«S†\Í­ý†Ð`°m‹ìÒD³ÞNÕ‚³sâÓU´pŒ„Ín°Ï‡ûƉ§R÷°”Td^ŸFƒ(Rl£ˆŽˆj ¼ñ¦ÿˆGÍE¶’{ËÁ¬BU»J›ß…§œL…²i¢‡7oÐM$µuØS†¡BÁn³'¤U‡d¼y¯8’Ãw±q‘JÆ/¬:ŒoŪ¢@€»³˜.læ¡®‚KÚ;j†1ò‰‡dÏ)¯•j«3ŠÞm<ü‡÷vXREˆ!}"g¡Ò„Šmߤ¡˜/~®¿­…‹àÖ¯Œˆ¦½‚©{‚±–ÚÕ¢”({§›0Žz)’eˆ }j„ €|æ…‡~FxˆGr]«ppOb2cvH®5˜`OñLÒcéS7\ØaÛR)e‚P=OÁhìGLbQ‘t±DÙO½sXCÝNÏuûAIMcwAfMt•@µNÙtèFéR÷wAJhZ†yNKt]Wy1G#X]u†CePÑmj@¤JŸeBæHØ\ ?aE WD;û@hW‘8WóW?A¾ZJ=T>¯\˜:?bÔ<^G­iú>dKm½>BK¹l6?TK›oM<{Is6=éISoÃ@£KúfR?Jy`a>I’\ï;4H¶Z<^G3^*=ÎHÔa0;ôH0f=ðJej—=KwmO>„Jèqø@/L±sêB‘MSryC4L«m+EMMjÙB¶M€dÌ@7M `ÏDMêe¦CäM×j‚A+LyfF@7Kdo?Kxh7DcO1qùB’Oüq@CLOo BO×k¡EÏQ£kHF÷Q¯kÚG°Ržj–J[TwgÖKìVžgpKVçg=LÒY¾f,Vu\ª`“aRc7hn\iŽqÌmxÙuÝ€UƒúrX”ï“æ{üŸçŸ­‡î®b§:‹¶ÿ§Ê‹â®q¡x‡ò¤Üšìj¦æ˜–})´-œszÄÀ £ªxÏÁƒ¡ªx†´Ã—r%£1Ž”på rŒ/p®¯S”Éq»›Mq¢Åjªò}hÊù³¯…ôÊX´Šˆ™Àû¤–ƒ¶¢¡ˆ‚ѧ²š[(¨ð˜ ’å„qk¼~RmÁ^Öv fWUÒŠ‚:wXš1–¢Žõš×” ‡<œ&—š…©©M¢ýŒu®2£¹…˜¯Z§‹´«\¥êi±(­‡ ¹ù©‚PÁ&°¨ŒVĹ²ÿŽÒÆG³†ëÇ6´FŽÈÈi±ò†SÇI¬¤€Z¸~ Êw&£&”oŸà¸oN©â˜Äz´+£.†¹¥ˆh½©:Ž ¼ ©¢Žª¼žªÐI»­ª7‘´G¥Œ¸¯l s‡íŸ’†s!”*ðVÌ’²wgK+rKy‰r™Xb™hŒ5qb°ò—!jɽܣVqóÇo­q%ÀÜ¢„s+¹Í›m‰#ª¦˜ßoͤl‹%Zšž…bOŒv»N-‡rT}¡lüF v°a#8 zú`Þ7•“ñƒµgN„•}/ƒßv;xòqq~vkTŠfs³Q4xµÜˆØÌI±‡„Ȩ§F}©·k˜lmС‡ÙbR¡<Œ*l๛¤…ÿÌ·¼nÌY®$³¹Â˜E‚N™‹ e7…o8]ÂŽ~}Õny©º˜¤€7¼@­î‡ÀůWÆZ¯cÕÈêªÑ‹9Å+¢Á‚íµ—»söœ/‚ Ukˆ“jþ3„ü_ß$ó‰Ðc!)^‰ÄiA5¼‡tŒHb‚v6]zˆž{g½¡N•`y潫‰éĹ¯ö†wÁ¹¨€¶%O}ñ¤.•M{¥˜m‹Å{²åˆ„í”b—Æ–ê­¯¯¢ó–zJv UýD³TC<,:fK}?dPçKPF XkN£JÖ`.J¤K.e FÖKb`rC•HWÌ=›B¼V}9á;V«œA_\ô;%C;aò=pGˆiAÏL°o¹?ÇKn ?kJyo¸<5It]<¬Iéq9>tJUhµ?1JQcÈ@=JÁ^:?)I[x>jHÔ],?€IgbÂ=.IîfW;L±nÎ@eL°rXBDMqDWO‹ojB}O m‡EÜQokëGTukH|TBkªJÌUk‹KVÁiºKºW$ibLâYšh][–`ÚfÛs:x÷sftf€æ|$w\gyb…G‡Gv°““ |¾šòš8„÷¥Ü ‰é°2¦‰#°/¤Ž4¤U™¢…ü¤˜˜²‚Áµ%žˆ€²Ä7¨‘ÃÂð¤˜~°ì•rs´˜ób˜‚^Fª4FiM¹3˜m¿ HtÄݤyEÊÈ«ï}Ʊ£w~´È|š¬Œvo² ÔÞo—“ëzŸXív“]’Gt!c…M8’­‰~zó¨¤ç“R¤½›4‹Jš=¢{a¦:—²{ñ¬›,tÈ¥ˆ›Îƒ'‘•þ‡a¥TšÛx•¬Ç™qxǸ¥j‡âÃ0°Ž%Ì©µ&œÎK·W΀µÅ‡8ÎÛ²ë‡ìÃ&«¢‡µ5ŸSxr¨Þ•Øu¤D“ñq¬õ˜rÛ¯´š'p¡´’ VƒÐº—¨{Œý½Q¬¼†®:‘I²Ô©î‘°Ô¥¬"ª(œ›…$šK‰g u7E5–e~’\Ö÷ƒ2wžb•ç†Vªv–­n)¯c˜jÅ¿<¤Ãk¬´DdmÅ´˜¸„*•ii UkÊC.†`%=•jôP9”xÿh0?„~ðj¥F8ˆµwãU²š‘‡œ]0¿ ªåL®©>¤¾”––âÄ‹‘ƒ[i­šÍxtZŽ’{õš=˜•´¨”Éf?¿wŸ x«²Øœb‚¿¿1¬‘ ÊѰ7ŽŠÌ.°ÍŠ̰‡GË_±à…Vű*Œ¾¤…‚a§X‘-wÍ¡nŽªsu¤nh쬖“e­®§’iä±ì’Vo쮂“yv¡ýŒÈq ž±Œ…p¶¡«‘jyà¡ 4v9¢Œ~qU¢i k@£…ûq^¨©”˜wà·ŸG‡€Ä&¨W¾Ã'¥C†ðÁp¥1†8Á§ž‡`Á9©‰Š½­£ Šv½¤Š2ÁJ¬SŽ,¼†§=6¾ºªC’ö¼¨{„|¾ˆª…Á®O—`{˜Â›¨p‹7É“­3…»±ë•ÖjQš/€IVW™XT`¦pƺ‡žk|îÐÿ»Ê•—ÚPË=±ŸÔÄÏ«²Ö ÅǪRàÒV¸‡ÖïÄvžGÀÆ¢"n}´Ð–¯]&³šËr½¥[„+Ä««Þˆ:ÃÚ§nˆoÀÉžX€´Àp™Ís†Â!˜k«Ãi±ÅÆœ?uÇø¢Ð€ÛÉ0¨‚ÃÌ«¬… Ïj°êŠ?ѧ²‹´Ñ ³ˆ¯Îh²„†ñÊÔ¯K‚Çë§yv?»:šHk¢3ˆ¦b­šÏ„Df6²Ú›~|̯µJŽ'η²h}½žœƒúš’ƒ­fà†6sðcÔ”‡mz¶,¢ß‰"Ĥ°`’-Ä*®ï6É©­FŽ¥Ì8­µ\Æg¦Z‡[¸ÿšÏzI¢ ‹qeb“áxyEØŒ»j¿/ˆ¼^$=†õ`Ê+.„ôi±>Ž}l‰J+uç\Š›ã‘ét¸ºÿªæ…Å¡±)‰Á†¨V µDœz—¦*•ž}Õ™Ö‹ò~“d‹–†º¡î£q¡©±Å±êµ9–âˆEˆÑo—R¥GiK7DB[D°=ÜV¿J#H\^šFE`ax@]E!d4BåJéb´B‰KbÑ?ÀH[f<0Aúfî;¡><_Ë=zC›YP?\E½V°@DGìS¾:¯>‹Tü>$B¸Wî<A¤ZÛ9ž@f`ä=GGjé@ºL|púA|M:pÐ>“JÖl@<Jn<ÅJùlr>”J%gO?ZI1cA0J÷`¤?I‘]Ò>MH^$?®H~aU>0IòeœÁÃ!¬¨ŽkÅ×®`‹©À®‰âš_…êpx°V—SX¼=Á{†§ÝŒFbŒ•xK_•£z>XI¡w‹Ïlﲋš}ÍÊ£¹ŸÎÙGÍ7¸ïÔ§Ãצ¡ÚØÉ4°è6ßÙШÛν°OÀm¢mmì®Ì‘-W}«˜•pÅ·Ì¢„MÀ‰«wˆÀ¤¦„/½Kœíy½›–ýnÀÀ˘ókPÄDUpVÇ/¡ƒzuÈÙ¤‚Ç…¤í‚ªÈH¦™‚!Îá­û‡»Ñk³B‰ÝÐØ²p…ÛÍg¯F„uÊ­€ÄÇ ©Žu¾•œjkƒ¢R‰4`c•0á_A¢ÓËsÃ8ªKˆ7Íʲ¼A¿7£:ƒ»ž°‰ipØ{­emŸm´{–Á%©‰fÊè°UȤ®…Ž•ÌP¯ï‹èÏ–®kŠ0ÌF«ñ…3Á¢K}h°d–„pC¤ð‹þ`žÌ}BÞàgV% †)\$!‚µ^Ú4ö{,b‚D,qY!šT»vθŒªlŠ´Æ2´íŽêÀû§‚ì²ù™Äzú¥I“¡€­šÆ‹‡€–WŠ—ϑ̊E$‡ó„‰w\_ÿYo]JGNC‹Gü9àL&HÕFza´UçQg‰GîFDd§:ï@c(?…I¢fÍ@ÃL+jN?_K5oË?eGÙlÙC Gåa2I¾Kæ\}FîJW2@ÚHT?­IAU?ImV@ÛKŒWŒD‘OÆa GàQ5fïExOÍ_mDWMyZ‰BKc]ìBÆKvd†FÂO m¯E`PuRHÐRnxÍJU«wBF¤Oªv"BaM­r©F R»lXJRYinÇI~YôrÙDñOÿt@M{wB°O²vxD@P†q®EP»p7DcO1qYEåOIpÂFR=qÿB{QMtxAÁPwB®O£tÉCoNoþD LMh‘F¬MÜdúCÐMhå?RMFn¢@ÏM+nVC‹NRkEZQ o•JqYòqQ+Zo5G¥JPdg>IBZô7=SR¢9U>R>?AÈV=@"ZM: ?i_C=ªF`g!A‚Lgm¨AMtk}?LùeG>¸L•c[>ELb0@‹Kæa?tIÉ`N?KIaa>íGÀ_>yH£_$>I`¤=FJ d!;XIÚgù=VJŒkÌ?=KAqïA'LBx@‹LçyöBÈN¾z-DN°xBBEM"uCjMqÇEžO>oºH&SoxGV'n~F¸T÷pEB'Pys¤>?LÇr0AKn‚F#NËjÈE›Oôj…D¢O³jšDµQŠiÇHU¾jcJ UslÚIÂVoNK¤Y£lÀNF[=h½fgÞeí‹BŒI{[™2œò†â–—ÇÅ“‡áw˜ •@}O˜•ê}³žŸ›Jƒò°î«£Š„¶¬Ï‘þ±!¥ ‘œ³££¸ñ¡Q†•Â#ªk†øÅù°ÊŠ‚»×§{‰®¦Ø–Ïu†¤•’Éij¬W•ônݵ¬h|P¸¤žÇ|$¼gžz|CÄÌ¡+}о«œ)xë«¿’!l“Œ‡n/EæŽOcEBgY1G‚ÙaÞIº,x.lšŸ— Œ­§” æŽy‹†Éf=KJ‡[…>¡‚(d…Ið~¸cyK+uU®JëyùVwF_~-iÊQµƒró`MšW‹‚zU¹«£oŽxÃE¬0Ž Êê³/ªÊL´;… ÃÈ©‡~¬Àô¥x…_íª~Q³q™Àž+ƒ“O§•y¯R[z a,”_‚Éf\¥ˆ•Ðoí¨CŸ#T²]«y•Y©Ë¦$‘ê²û£B…L ˆ‘Ksð˜z0[=±×›€‚¹ã«¤”pÁù³£™²Á®‚^¾Ž¨ß†ò®“—^l€¢ÊŽ‚`˃iÿC|jNg:ƒemK|8ŸkËTÐA¹{«b>Œ”~ÖY—V‰~tù¢•|[Ào£¾z%ÌÄ­°ƒž¼ Ÿ¤€@ ¥w›Cûñ¦Þœ•‰¬I¤µŠ½¶ˆ© »º¿¡„6¼ÎžØ€¶ZžwﺡŸ‹äÃ2¦mGÄe¨D‹ÆÎ®¨‹±Æ­¬È”­½Š]È-°…}Æî§¢´ÈC«â‡ÀÂ}¡µ~R¸™tp³•ªgy²-•:l‡·‰™ yx³™øu­>–Hl°˜úsç­Ù•*uô«›”/q«§K-p6¡0Š…j÷ž’‹fqŸ~ŠÐwg£NŒ2y³Ù™­{£¾c£åƒèÁ¨a‹—À?§”¼ÂB¨ÅÀõ¥Ù‰Äª/ŠEÈo®’ùÆHªÉÌİ®8½ì©k‰½4uÓ`'£RŒ u³¡™d~ÿ©x‘Õm7™Ò|eR‘–t{÷Zºˆ†tl¤ ‘sͶ՟¹‡‘Ʋ.‘ZÈe¯˜Š§Ëœ±k³Ï/¸óš°ÉK®¾ˆ.Àœ gÞ´Þ”Übu±?™}w+¹­¤d‡b¾*ªhŠx¾B¤<ƒÚ»Ðš²uºŽ•'n,Á¡œ’zÇ0§}ƒ¿Î©±/‹FÓœ·,’ÊÔ«åˆùÆ¢žtÍü©j†{Ñi±†‹–ϰó†Í­Å‚ÉËy«Ý5È,§\xh½V ok¡Û‰!^ŽªwCQA—ºƒûbĵޛà{óÆt©¹„®¾?Ÿý}ª¢Œ8l#œ¯…çk‚°Ê˜}MÉÛ­%†ZÏ>²ÃІÌ㯟‰ÍÎB°‰ÎÑ­¯‡¨Ðô¯´ƒÇO¬êº)¢¶}`¹XÌy³¯•~lž÷Cgh20ƒZY0H5]%D_†No\X®;޶u ¼ «»‘ÝÇɳ”‘¾N ¬„`¯ ”í{ë£è-‚:š|‹_ ”F†¯y׋L}l?~ñiHVÂiÆM~F—S´?{H5FCŸTÂfükæyÂŽÁÏ—glyƒ‰=cEÎd–AäI›h3AcMùoã?§LzrÊB/MÉnýLŠRühA[F["g¥O¾Qq\3A'IƒRð=rIcT^?J³V‘?>JSW9AKÝ\CDTNbfCËM`ÖBðL^^UDÊM%aGO÷hJ»RòsãFßQOzˆHXSíxðI^U[vñG1R¬vrF=Rt|F V7q.EGS²o2D8PpÃD N t·@áL°w~@·NèvD›OKtRE©OòsYC>OKo9ESPmkEQôlUB|PCqBÆOt:C‚O thCëMRoèDõLf&FëMpa%DnNhAèNËp~@äN½oAO¿lB@¦Nsm¹CP`m¥K)QÇi0G-Iê`xADâ\;a?ÑUÚ8û<¢To>i@{Wý>ñ@YY0=0Bû\/?ìGhdÌB°Lªkµ@9LtgAšM—a¬@”MŽ]]@PL0^6?Kgb>ÞIdŽ>Ib’=nGª_=EH&_zK§xu?(M›{œ@ZN¨|/CîM™yÈB—Lqt¦B´LýqúD/O&o‚HWS¿kàGW„i¥F…T4k EåQl°BtO™jœA,Mf«GzPÜeæF³OîeÆD‚OÝhvCÀP+iILSój²IiSfk2JëVImLLYdk‰T*_…i@f gÜj¶Šß‰¡z1œœŒ…º dœXh 4™R{⟚݂š™<~Å¢òœ¡‚²à¨Â‡K¸&ªêŒÿ¹¿©S»‹¨äŠl¾º¦ß…ÂH¨ƒwÀ槯€¨´„¡£€®µ×ŸQ~q»Å£ñ~a¼ü£À¾;¬U‰Cº §Ê„Ù¸½¡ƒ¥Äž©‘ˆàÇ ª¥†r¾Ž£r}µ¥ÇŽkŒ”/}±\Ú|tbO){ød¦I†Yzdm¥M¡¦’ µt¯ì—Ÿ8”~}½‰ýo)VÇ{£T…A„yÂZúFœz`bXI’x|Y;EXk›M½6¼n£T¤E¢z“k_•ÿ‹¿~r­Xž¶Ž¢¸¤H+Â_¯ì’F¿ö¨;Œ¹W ryÞ» Ÿ0zõij© †a´ ™{­œ8~ªH9‡—fO|Ud÷uôˆÆu0g=•:‚ YÅ™EŽ n¼¦¡‘q¢´¦¡e¯vžçvלŸ‡ÀaÉŸë‡9c×¾U§ÀŠÆÈ³÷”\È´¨“LÇ?°OŽGæ«:í¹G h‚±žë‰…k „÷kõGÖrœT"B¿_žMR:@pébšFãƒ9l/>Œ–|+QÍžÁŽx§º¤ç‡È ¨zGÍ’ª3èÀ_Ÿc€Y£ê4w'›7Žbw¨¦O™…j¬8ž/‡}´Á¢`‰Xº £ˆ ¾W¥dŠ—¸— 6‰§º`£lŒÊÁ¼¦†ŽMÅΩþŒßÆ'®»KÊį½kÎX±Û‹ÏD±a„üέʃ¢ÑJ¯ò‡"ÊH¨–„¸µ—hpK®ŸzZ1¬_ަ]{·Ã—sr/ºêšjr ¶Ó—»hÙ¸c™ßnͳA—mN°ž–ÆmN©î‘póŸ8‡ËpØžóŠ”yA¢b‚¾ «ŒÄ{Ȭe˜Ý˜¶€n½¥è†¾Ÿ£=ˆ6À÷¤£…ˆ½f¢3‚¿j¥a…Ä­©fвÃC¦Ô‹™½y§÷’½´6…À–½x\ ¦gfvð¸ó à‡œ¸Ëžf~ߢ¹‹¶`øœûƒþ`u áŠÂn¦úŒ½m»¬&mL³¨••kzºÙ—skÍ¿ špRÀ¡šåo2Àã™Pj¶¿™ãh'»™Cq4»TžìŒ¾A§]¾Í¦Šy½@ŸÛ~¼:šËtô¼S™ŽtfÃ( Ò‚•ɬ@Ž!ÜNÆÙª®å|Ô&ºgÓ칑ÆŸ y4̧݄[Ñ­¯|ŽœÏa®v‰]ˬ„JÉì©H‚]ÅŸ¤Àz{»¾ nÅ ÓŠìWUˆ¡pªC"Žãt¬Iq¦RŽh[½pœôv”¹È™’uÚ¥IŽ%qÒ¡chwc¸é¢Ì]±…„èѬ´ó†UÎÔ¯§†>Ї°¡ˆ_ÒQ±GˆÕÏ·±å„bÉL±…ÁΫ1†ÁÅ©¦ˆ2¿§Â‡©¿“ñqÞ”´wåI,†_ù4*ƒÄ[™9uˆ?hDJr›Ãƒ‘kȹ͡KŒÚÄå­ •k¸\›êˆ—¬„’˃¤Í‘ ˆë˜ Œ„æŽU„BvŸˆðzb9fiJûinOËFñNí@°R˜ABDÖ`1x î«¢!¯³»ófÈx‘0@åGØb-DºH c?C«NqœA N\sDqOýp P¡ZØob1d(n{TmU~`ÿA–HáR«<H‘Up>ÅIÎZe>õHèY€?JòY¡CN¼]eBâMD_ANNà`°D‡O3dêI—T8nÔV b}³P™]ÛƒhHåTê}AHZTAyÝHÖU3wêJP\xv{N¾aÔuÇF³V5pðBO?o»BbM»sAsMÈwdAÀN\wáCOÁvÜCOuu¢CêOÔpE]Qem©C­PÜmCùP'quCïOs_D{O€tæBÝM…pDàMtiŽE„NSeC,N j[@ƒNLpç>±N=o9>†N&m >ÑMÜm&ALIj´CGä_òD‘DEZ€BC'\KX˜8Ä;ÐVp=@ÇW™>¾AYz;CG]Ñ>ÎGÉeR@(Kûla@qL°hÑAMmbÍ@ Ks]d?«IÓ`n<ÉHmgî:Hág×<ÔH7bÜ<9HŠ]~=zI¸^^: IW`>:§HKc€9JHÖf=ïI²l/=qJæs>‡L»w!? MayÊ?JM‰x>BMw DpMbs­B›L‹p—DO¨lÛH5S´ièH»Wpi G’W™j²FTÍj[EqRÞi}BPšfLEeQßeÌEQ¤d²EÙPÖfNEFQiÂHGSÀkIÇSÉiÏJ!Wh£MïX‹h³X•_‘jÆeÃio¤…Ôƒâxóœ;šn€Å­¦¤©¯ç¢“®Ù¢…`¤ï‚Á¨. $‚½±Ø¤áƒâµ©¥P„~ºÖ¦Œ‡NÀ?«L‡[Å1®…BÄÀ«"‚†¼©£{´gŸ¡|6¿d§dƒjÆ °Ø‰aÅÆ±åŒb©±ÅŒÒ¹Ú¥Ìƒ¡±„œÝ|’½Ð¥àâʳ´B‰9ËÉ·4Œ6ĸ°Œ¤£˜{ÏŠ‚ïpF‹bxH[BƒtW‹¤jžçˆ¼¡·d–—¯®¦ÑŒ‡“Ìrlt|Í^çH‚rL[„“µˆão‰%täQØo%Q4s EPÒrãL­Xds·[©]µpâO¬Ov_y?PEÑQ=óGÄU@=üIa[æ; JïZ`?dLöWDCuN&VGCeNXY`B"Oj_•D^POeJVoJZ?d||­Y3b…TLwW½€JSUË|‘J£TòwcO]—rïX¹e¥pfRƒ`¹mÖE5Qõj|B¥Myp£B NTw7BðNwËC¸OóuCÔN[tCO‹r†AOÖp‹A¨O†qB\Pwr C·O sD¿OXuŒDNPœNãqÐ>vN×p¢?2Myo=C1Kj×A1Du\gB0A`W‰AGBŸZL2I÷dz=sIÉi¸<@Ihœ<¥IOa=8IIZ9?fJ¶[f<ïH`;;qG^aç<¤HfcÎ=ŸI:j˜=^JÛq!?IMžuo?ÇLStù?’KòrpB6M;q~CÄMngBÔM0k1FàPhI­SWhÀHõUk)HxWÝlŸFVwn¹E„SmäBQ‘g:DRe÷ESEd§EÀQêd6F~RRj@GT¨lIU½i£KµWâf½O ZXh‹Vk_IkécTj£nÝzœw$sø’áŒjsöž˜lo÷®“¢‚ø³h§%‰€¶ŒªŠê´­¨Ý‡Áµp¥ë‚|´Œ£!´ã €»¿,«á…ÔÈ©²…&È%²…Ã|¬ ƒÁªD„rÆe®q‡åË´C©ÉD³×½ç¨qˆ¯q›~ ›L‡@eJ§¡hü¹Ì ÈuÆ0¸ÕŽ¢µ4ñ½³²9’ª¦›{‰NšÃˆ„m¤Ž•|º_¥Ÿ½–+tcµ‰ªª…û®Ì£ã‰ßŽ{"e<…éi`J²Š{|Ví “˜ª|S”„Ta9{K]<ªuÐSÑ;ÖuV}G"}~cN ——c]¡AÛk…£Õ”Ùw< Mòyu§Â”p¹®Ç™Ém¨Á¨1wHÊ£³«…g¿ªPÉ¥ý“ †P„«j¶X@~¸_K@y„e©9P}ð_à6w€pcIá†êu4MMWvæG6†‡l†;¢š‰Š~lκ"§ˆ»Í²·e–¾Òܸ2Ž»ÎV³]‰ÿȼ­DŽbÀi¦]“¸ìÕÒ«S™­¨œ‹Zk¨˜ÍŒEjñ•H‹åmk›Œ†®c¸£Ö~h­m˜|Ãɱµ‘ÏÓ¯Rˆ)Ñ^²œŠ¸ÈÄ­/ª½W§Ài³>  ˆÔ³t¡»‰²»ž@‡—±nž^Š[°œÂ‹¿°Ö‹w³A &Œ¼»¤ÊŒÐÅÕ¨4ÞÍn¯RŽ"Î[®ö‹åÑç°‹­Òα@… Óß³ù†RÑ㱋1Ë›¬ž¨Ñ–»Š¡'¾ ¨oŽˆ >‰¨fB™:{¿YÁ ™‚žZÕ·…–yl:¿k™ªk¾Í˜tp­”éqü оlÜބ-sù—µƒGn8›*©v;¨±›€…ƒ§•œl†˜«Tœ–† ±nœ>…º¶0ž!…±¹º£˜‡…º8¤3‡à¶µm±Wšý|g­¹˜¥}ý²Gì„®U™X|EŸ Om2¡é‹&lµš•xÀ0¡œÄ&£ì}:¾VœûmêµÉ—jµd˜ýpbºš,r6ÀË›_p=¿a›Épê½g›YrÿÀS—q Å7ŸŽq6ÅŸks§Ã]ŸMw[Äl¥›áÅR¬W‡¬Ä®~…¼[Ÿ¬t¦¬“^aÊ­I’Æhû»ÝœJxc´ vÅu£CzϤ²O‘¹ÓBºÔ•‰Ë¬î~ŒÆ÷ ,qɧñ~žÍH®NŠàÍA®b‰îÊJª±„ÐÇ“§ÒËİ£uºN™cÿ A†’Lø‘SwD% shC%n;>ä™ýwA鳇’øc–¾ ž z/½ƒ¡‰€dß«"ˆË©°u‹èÎ/±£‹yÐÙ±ŠfÑy±‹zÓø²æ‹ˆÓµSŠ¼Í ±Çˆ[Çwª¥‰“ÄCªrеÆþ¯PŠ}À5¬¼ˆ¢ÌösÕŽoÏJ½†°]~5’ˆÜ_Í4.Žki‚?˜úwŒTX¦‘^{ß¿4©ô©Çþ°}–ìºÚ¢l‘øœE‘åƒN…‚sóxxiC|‘y l§ý~¦v>wÕ…ÕY&\v.JuJ:d¤MCE+`MA;ðS«@ÿ9üOvB›Fc\ÊDNDoƒHŠSµweNf]Œ{ÖRœ]AyiS!W r§K¦L‡_BE-Q*@€HeR÷?ÒKTV=©KbX—<'L UAÃM3SýC²N5U…C²N˜[XE4P±b¿L¦Sòj{WsZªs÷V=]E{ÁR*[2zéK³QhwvM¬PívoMëR†l†MdV#cêJJT/b=CNï`•AõLÚkÞA«N*w@B¬OvÔCHQOt*DâOHrÐCO¿qÚA`Ns?AœNst=A„NuBOYtøBP»t%DºPGuÖCµOÕqBbNEl=AEO0n¶@zOîsŒ?äMOuÆ@N7v±@±LûtxC_KÇnsAÉFZ_š@ÀCúXî?>D‘];=óB\o8A~W~:®CƒWÍ<D\>óC£^_=QFRe×=5J”n(>ÖK pJ@M£mŒ?ôJDiP?ºJiÝ@-L°io?¾Jbd >£J}^.?üI­WI?ûHöW>dHœ^?<F \¥?ºI¤]r>”J%g¥@(LZn‘A,MÇpã@IL2oYBoLp‹CƒMfkÆDOÉg­DQÓfG,SšgZHÃTkoIU$oGHTŠpùEØRQqäDèQ;lxBŸtªÅä lwâÅ)¡çwôÄH£J¨Tö=L‰T•?LiS\DWLÄUÚDÌLn[ÈFÑPþ_~XZZÜdékˆiHvôh‹qD^h}q/{>W´ZÀoOOO²rIFMkJEûL^Ü?¦IyV•@BJ'ZfAzLðh B&Ov8B‚PowcCµQivªEiQÑtTEOrûCOšs–ByNPu„BzN_w:B Ohv[CºPktËC×Ps}C¡OÈp*C'O n³B Oîo€A!Oãr @õM*v’@ÒMzv@rLƒz¥CËKös.AHb*@9E¹Z?gD$`_=…C‹`D;#B~\=”C\\ >"DF]Ï>ñCx_? F)dû>0HLk¡>9ITq @yKr·@`Ko2?ZJšk~A9LLhBAL¬bš?ÅJø\æAKƒX?ÁHºWe?iHw^j=ÿE¯\T? JD^§?LÇeïA_M³jƒBÙLk'B’L/ixCEMõjœCMMThÀDoOÌd&GœR¹gMGESlvHÉTjoJƒV†p–G'RqsEiQæpàD¤PlOCóMÎh1D[Má_’HR¾ViHæR [ˆF%V¾hTH"Z´pIÍU¨rSLJWÕm½RÖYˆkûXG]›lJcüdöo¸rro‚r-cqg[Ãu yld™r¤sOchŽÝŠ¡z㨗‹†ÀÏ­ZއÅÞ¯[Œ,ã­ƒ‡ðÀ^«Ê‡ÊÃs®÷ˆUÃá¬Ë†òÀ»ª%†Yųª†¦Èè«Ä‰žÇ¯­’úÃ}«òÃÂZ£Y‰f¯°—@x¸{’hQt-_ÉMŸgÎNNŽ˜yÝbˆ–f†!nöu¶ø (†«ÁÓ¬SÅä²N’<¼n¨Pƒ¦¥÷‘ b‘ÈuxEè~ŠeõEqV|<z´^1>VƒXkÁJ™iŠ9n ¯žK‚OŸ´Œ eŒeoø?Xbìtg¹Ë™ùpʶÀ™AoÖ¹,›pRÂ6ŸÚuÃ1Ÿñq¦Á·«môÅàŸ³shȦ¡òxØÆ] cxlÇ1¤K{Ħj…¤¾~¤9‰“»Í¢6ò³œöq*£ôwaÊŸ¦¶dr´}õÄ:©‚7Æ0¤ÒvÌÅé¢õzÉÅ©À‰ŽÅJ±—Ș´¡—¸Éɯ‰5ÌI­9¥Îw­D€ò̪JÞÇx¦Ü~ÒÀ¶Ÿöv±µ‹˜Ek𥑟câž½hܚʈ„eO”€zO e‚£V¦½iœÑujÎÕ® „ Π¯³…ZΧ° ‹Gΰ™ŽæÍþ°ìNÎ’²o‹ôÏM³WŽåÐݳ­‘Ó¶£ѳ™‡àÉ/¬-…MÆe©ˆƒãÃ+© ˆ÷»`¢á„üžÐ‹#i¡‡Œp¨IY…’nIH‹w&Z£–›PeÁ¤zJk.¼a¢žyüÈw±xŠ Î†´Z‘Á.¨Žþ¤‰–é”~0z Œc‹¿€U…º‡„!…8…'‚ú‡Ä†á„"…s| op´p@KÏIýWŽ<ô7öT>y<ƒZD¬FhHöNÆsF#Q÷yDI×SäzêM=WúvKS–r,JÈVOuuOKYNqQUµ`²IùMÆSS<ÄF§Q®?pKâTîBHM6V>EÕL§WêGO8\âIbTï`»eNf¹i3†ƒRƒÐ‹G”6“܆V狾r4u§vÇXIZ‘oÓGìN¼iHDMîbg>¼H´V²=¡HwVx@ÙLµeB(O%sûA@OuwBiO¶wßD/Pw¥D7O¶u‰C OgtSB½NtC‘OæucBkOÙuxDQ„tEEŸQòqCCO?nnD7O³mADŸO–o•BËO;s_A¯O³wD@$N­xPAaMÉwžBLçqæ?H?b>D‚Wt?_D]9@ÙDs_ð>®Bí\>ïA/]^>DG]c@ÁE“_ÛAôFÿc AH†fpBlJ)l˜@J“p‡A&LsÃ=ÇIToŠ>J°h>B¸KÒc+AQJÈ__CìJ¿[£ALÑZ:=ŽHhZ™;BF^L?ãJ—c^@GLme\A$LiÉABL¼i.BM›ecBMeAC€MMe^DˆO]b\GR hBFãQ‰n]HäRlqHSÂm$E$PÔlÎD»Oým»E@PGmrE|OZlíG¸PVhI·R[ÌIØTMZ¦H2X5f:H“XpI‘VyvM&XÒo{P7Z¨j¬Wß]qmfueŽpwv{vµdknhÏ_¿k)a³jål![a~›{ÏhSš|”J}B¸¦ËˆpÁ6«“‡OÅÇ®¥‡5ÇÖ¯ŠºÉm°°Š÷Ƕ¬q‡.½{ Öºÿzö¹cœ–~-º|¡XŽú·ð *Œ€²™#yO5„¡[)‚@k„M—zxgíPÞŠÇzÅg9•„¾oì^|Oaã‘+|!ZJ Cmd®š|{عçیV¾®#²µ§ýrÑ‘™uªCrtmUþ; fO7ÒqŠU@@ „XimXžtŽk~:·ê¡¤Œ¥õZmÿŒioÝE“†ìgÂD·z©\,8!oÞS 5×iTý7µt aì?È||eC“dY@©‹ìrPÞ¥`–ºzc½1¬Î‚¨É°;†çÌM±t‰4Ãp«8À˜î©nØTefCpkY7;`Tï:µ_íT#;0n„\â@uròZù?EpµZ¸@®lÍ^;@’‡èhè»|¨‰ëÏo¶ÂîÑk¶\‰ Ðk³ï€MÅœ£¼ƒn·Tšäs¡ª¬‘gv¦.‚b)£\~f¦ “pp#ªC“s‡³™œ~W¤©‹ÐÐ×±8“CÓy²sŽÔ5³:‹?Î ®RŠ×Ë'°a“Ì;±7“wÍÙ±àŽnËþ³HPÄÓ¯W’粉ž)ˆRŸM”¶}ߤ#–`}”¿¼¢Í‡tÌo«±Œ+Òz¯+Õî±+Œ1ÓÆ±·+ÌG¬.ÝÉ3­‘BÇÞ¬Œ’Å.¬ÞŒfÁܨƃA½4©aƒs¼¬Ìˆù»–¨v‡”À°§ˆý»¥¡1‰³H‰\¦ã”àx•žåŒ.kô–”…Íhp—Æ…zmœŸÍTwã© ™„}°{ *ˆ¯¬é]…ªª¾žm¬AÑ,¸y¥¢òÿ¬Ÿ.̯Ռ"ί¯®‰ŒÅü©s„Óº‚£X…ü·ó¡‰ú¿X¯®——A€šfáˇe±¤‘gk®»l˜¤rú¶>•ÉmÒ³b•¾ló¶ãšãsw»âaw[Á#Ÿ½vAÂO@pþÁ¸›»lâÄaqÏÅìÑtãÃåötnÄŸ¢v;Á†ž¢zæ²Å—7zÔª¨“€tªªŒ•’o ¡ ’¶m$ž{µr1¯ ›~FÀk¤Q}*Á5Ÿ*qw»Þ™soã»þŸ—†ÒÅÆºkâ@Ý„ÔòÕ%Åë§,È»¨(x…ËħsËħ|[Ǥ$}ü¿ÑžÓw´§–i"¨_¨aw¡ú’ôršŒXp=‘ïx±Lí™›&Pòº—›þtÑίփîш±‡ÒÓ°‹(Ðq¯B<Μ°JŒCÍΰ8‰3ÍÖ¯7Œ°Ìº®ŽEÎ^°.Š”Î¾°ÍˆSÊ‘«†+Æž§N‚öÂѤ_„´»¢ž`…ñ¢ŒŽ´q¬Øw¨PVŒ.wKR3”r†ârc •‘Ô…®ã—Ïy.À"¥’ƒ¢É“¯HŒKËþ± ’Ÿº6£wŽ>¡+“K™¬ yU“b4KŠë‡ðÕ‚º~u“‚ä{ nƒ ¥s`|/~Zy jgpt`N†TìjõD7FBe¼C7B}g[G?KõJ,Xÿ@½NõdCÐOnrB\N¸vÛBNNëu½CqNÅueCOBv´CÞO$uˆBtOdsƒAÃOúrÞCãP«t8E¦Pt‚FœPGrExO2oïC OtmøB»NopBQOet‘A¬O€wAìNåt¹AºN sñ@ L o½@"J)dÛ? F£WÚ@œE3[ÔB‡F2\HAlD¯Y @±CUZ @ÜEþZ(AòFÃ^VA¯Eœb_A†G@c6C KÎf'A}K¬m@ÖL s#>.Lîqÿ<ˆIlæ?JŒhEAõI”f3A¿I„aÒAMMù_Ë< J \„:sH¬][?ÐKîex@ÌKafÒ@×K×iÌ@*MâmÁA‰N iùBšNebôDñO^FÞPð[ýFaRibØFÞRumRGR=p FªPleAßLjˆBóL€l"FŠOm?FP†l»HïRékÿHhSteI¿T^adI÷WžfýHõXºn>IÐX]v…LÃX¤nINÍZÁg½Sq^ãkÐcùgãkÓ~’}É{%€ó…9‚"sux-w?zYwàl"‰F„oo˜°”W|‘¬ºž,€Kµª¡ž{ÜÀߩ܂’Ëg²P‹·ÎƱȉÏį‰Å¤ƒƒÖ¹ð›#{™±ä—ðy°¬›'…R®Dœ…µ¥ˆ‘Ør+ðoHSqUU ALx frN–¨~j ˜ü‡ôpU’A}³f!‰mpVSâ’äf¢þ•…xï§™t} ® –~Á¯þ˜ýsK“šv Hœq—R²=³cCL<@oåSbCf„3iùS&“„xÑb7™Ê| c2•èxÖaÙŠürTjIŽÖym.€FlI(nŸRP3“k9Td;ÜzfñDð„[lŽGö€*c<­…âhÃ@®ŽŸu1Wˆž<…kºË—bt¨Â¥p}¶¼”}Ú|wìc ~ñeÙDûsK^a>ÕfÖW?¥bŸV:?ilY…>“u,a=>¶u‡`ƒ<v]>–‚”|X°x¢ˆpÊ·oÀÌ´‹‰ôÎϳ_\Áõ¤'€n²\˜‰tC¤~i¤šWcYŸhކfÞòŽqô¢Á/pM³—#v[¼ì²|ÄÉ"®zZɪ9ˆÑø³C‹ÍE¯Å‡~ÈM®EŽÉd­1’ÒX³g‹Ñ0µ^Œ̘´Š”@À´£ö†Íª<—9v´¨“!r‚¾ßž°ƒ•Êï©'‹gÐ]®åŠkÕ«²€‹¡Òå°¸Œ0ͬŒ’ʹ¬üŽÂǵ¬U’lÁ%ª°‹0¿§‡1¾Ç§ú‡¤¿J¬{‹¾Á­Œ Ãâ«ëŠð­];ºY§J‹´Ð f…ï±Éžêz¶ ¤’q¹Œ^qâžÏ‰ßpÊ/Šq¸žiŽˆsA L’àrs ‹˜gƒ¶Ÿ“í…²‚›¹‡8Ãè§½‡ÀÎÛ¯{‰×ѱôˆûÌ:¬;„¿7¡Ìxú²l™Œ\¼aªì”qzue•Ž\uNVš”}Ñ]ôªNm_°ç“^i;°Ý”Úf·¢š!q˾:Ÿzx¹ž„sÔÁ2œClÆÁƒ›Rk†Â–œìm1Âß›oÑÁýš.m”Á!›ylƻșo‰¦âm›…‡ g£šëˆÖd—ˆYi8—;Štq6¥}•áz´Û™¶v²Ü”gÏ«´zbl³´™é{îÖÔÉ¿¹DêäUÞAՉÑ«yÃC¢Eu7È¢m¯ÈE¥Mu5ÆÝ¢YyvÀ»[tT¯œ‘w^¯ñƒÌWŠ•ª… nl.€ÿi0ˆ(rI}•|êK ¸Þ™×qÏÿ®ƒóÓG²`ˆÔ“°÷‰§Ñ¦®2‹˜Î¨®ÔŠñÌ ¯¬ˆûËA®^ˆ'É…ªQ…QÉJ©„…Ê€«ýŠ”Éª‰!Ç‹¦‡ÄË£€¯¿Yž¡„©°O”ÿ{”œèÊ[Œ“y”X¾š±Œ(~(®ž./´Sœ¼†<¾ƒ Qˆ´Ç/¬‡ÂȲ†—ê¶Z¤‡”tš‹ŒÏ|Þ’ „xrq“ë‰q{èŽ7‡öyæ‰sÓp+‡Ó}²kw„M}«oŸ…ô„¾.Š?Ž~½€P„x†×k†iŠsR M‹f¼JGYnÞE]Jät2FõJäpÞL±NÀjÅS­Zml tàö‘à•e••Ä”K$mn–oˆFjJªSì>ÖEÒS#B´K—Z)FSP`I.RËh0XîWofOsZe*c§•Ä…<}´¾©™Ž¿øµ|Ÿk­C¡[D°ˆxþi¡i²gåKIQah®BcL\gG@cL3`ö@ENf’A»N2q_BâN'u+C+O3t³B¯Mùs›B¤M`tD›OKt9C›OpsrB=P«rF]RXt’G`QtÇF¤P»sØD PUrkB;NênôBíNÙoÜB¡OÖsBáO|u€A!OãrZAñN>r(@ L1nBÏJ³c©?ÝEWø@tEËY^B_Fõ[AÝD#Y¾@ EöW @ FvXn@F:]S?oDŽ_ó@G‘` A#I¢a&@ÝJßhç?:Mànj?:Ngo{>’K3o¼?‘J†oúAäJ nÌ?BJ/iñ?ºKŠe®=ÉK;bÎ;DKJbk@¢MgI@ºLåfã?¯L&lf?7M·qQ?ŽM·o(BFNðcF¡QÎW³F"RªTÄE9Q+\³F©RjÛD³Pêm@D1PÇkAcMld@LélßCáM¯lqFâP*l-FqQ?mMH—R o»HïRékÇI´UkxIJX nîIZÕr®KäXÄlmO˜[‰ièV¤`:kýfÎi\kœˆ†}•‘—+çŽLŠú‚~| vå”ýŒ·wƒœ'˜±|2£Cšryâ«™Èqh¸ ¢8|ÆÈݯ\‡¾Íò¯ ˆYÏ*¯¥Š ÌÛ¬âŠÄħv…H¹ñ\Ÿ°¹›‚ªX™’÷Ÿž-q‚‚ÔjGÊe&Pƒ=‹o\¡Mˆ%zË]÷@·…efÏE2š¯wsK§œ„`[Ž™…©=’ŠfÔ«9”!a©°Ñ”e!ºù˜ÃmÀЛn[¼›-j]ÂÊ›=iuÂÒœ¨jKÂ%œ-jv¾šåf½V—-c\°G“…gÓžŒœkƒ“ºƒ&f¢Žä~b]ш™w_T˜Žý}8`# Ÿ‘w>®@˜+{¶¨ñe£/‰%S­“³fªÇ>«ˆiÕ]»µ^Ë®uiÂü»pƒÆ;ŸXn…Ç£„t]Ã)¢[wºxš¶n}¦aŠåZj’^w3SIƒs÷Z¦ÿr?Z*…Gr‹M^–ðTB¸7›s¿ÏD±J†ÝÓW²ç‡Ô,°¡‡ƒÓí®{ˆР®‰ûÌd®È†ZË­ÿHÈ®¨~àÆ9¦‚ƒÈͨȊ´È/©â‰ïÇ §3[Å¿¤w~ ¢¡‚%»7œÿ¦ùŒk|šŠêh=Ÿü†§¶+¥Í”¤·ùžý‰,¹Âœq‚™½¡Çˆ%Ák­Ù—ëµ,© ø”Ȉ…~ŠKyŒkÐá„uÞŒ³oìˆ}Ög†£r ŽÖ†y¹„ð€Â|Û……,„õ”¥” Ž“kŽ•†÷ymv[©MýsßH!Hñt J_Kòq=R—OAg‘X2_eJhÀs¬rCàŽÏˆS‹š‹:ˆà^‹a6j"EëGîS¸?±D¹S3DJ}YˆKSìeý^¦f€w”t“m”q.ƒùkF[žÉ‹`wV·›¨b‘öôÁ–O½Xªƒ‘3§p™Å…%‡¢ksµXo[úk0CÕM l›B³MRg…@¥K&el@ÔK«l_BÍM¸qiCfOrtCÿMyukCoMat-E`Oçs“DPct1F6R'uîH UÛu¼IÂRZt2GfQir¼D/P‡qCaNönJD)PFpRCaP…rr"AáMqÙ@¬LÍlëAýIÆ`R?EƒVAE”WØ@ØD\i@uE%]A™FˆZw@‰E-Zt@€EÁ\&@ôEf\%A™GZý?ÙGX"?bIÇ^`AâKnfùAçMbk@£LGr?œJ4t¼@°J8qì@*Kn-A¸K j³>©Kâe¤·Lysô>_L”q BëM¸fGaQÔZžFQŽVèD÷Ol`dEòPPkëCûOÇmmC Pîk/CbOrlB£Nèl×DÞOýlQF;Q5l·F¶QñnhG‡Q4q:HjQ[n“I×R^mWI TˆnëIkX²nÜKìX*ldQx\An½Y3dÍm?qÒmUoD‰‰œyc—̗ˆb’e’1„Q’åŒ?~u¡®™Iƒ0 jšwz-¤N™Oxë©ð“òoß²œlwó¿ê¦ÈÛª7†8ËÔ¬œŠšËH¯ä‹Ç­k‡„Ây¨’ƒü¶ÇžLb­ ™•y¡†’²k´‹ƒ{øNTndYf@ n³WëKpxædÙ[8x‰cTës¢[ˆKúuØfrSH–TüR¯é¨û‘,´}ªa‹ß­ß¡…§¥ ˜þx²šuŒzoùŽÆ|h`&Œ xQ`¼w6jÌUz‚JyLd×ÌnOë€ûh¹UØ|Sq‘s«‘Âb–M®†«ì¬½{¡p­\cmÔP-ÁnQñ/ÌsâU=9¿€òf FT¥h¯C§xŒ^DÃu|\D+x9]…E{€ü_Dσéc@4„…n|K‚tÃaFyf¸QÊ61oõU¼?³rrXDs‚^÷EÛrO_XE”tdaFzdefI(€[p"K ƒ¿cH›”‰E¶­™‘ò·Ÿ°ñÆQ´ýõ5œX|±Ž€{9ŽÓƒxiZœŽólº›§ˆc%úŠ|it¡Ý•ne¯ŠŒèf¦žB:V:‹¾xÜd+š‚‘¬ÿ£ €I¹‹¢j€ÙµÑ¤Ò·‘§Æ‰ÕÄî©~ƒUÈ7Ÿ€Èͫ螹6¡…™»ÒšÄk4¾–(dY¿²™™l&Ÿ†szÆx¤¾iÉȧ ‰ªÉ ¬/ˆ‰È­¨O‡ÓÇå¦ÒˆöÃ¥õ†\ºË¤a…¤°žî!º'¨ ÀÒª‰ÃV®)†ǧ²Ëˆ¬Ä¨®%‡—À*«‡$¾6©2‰åÀ«{‹†½z¨¬‹Š½¨á‹d±&š±u󠃋ZcËŽ*wOyŽázd@ˆxWbжu$cAŽxxhû]†gvظƒ¢KŒ(Ù:Ê£ÜÀÊñžâ¼ž]r ŸÑ}Ñ]f˜‹{:_”zhÇJCy»fœI‡ûrSéš…ð`Œ¤¡Žc¤¨¶‘Ä`Å®”dùǘ meÁº›0p¤Ã^›ômiÃwšak}Âøš>i½Àb›‰gdÁ³™®eV¸”2`”¤çŒ@a¸–Î…ÎfÈ=„“k)™„•i‹oz´X’´‰_Á¡ß”AzL°üœœh®ã•Äl,¦q\TXªKÍR¹ºQ–q]ŽÅœœálâÆ»ž·s¡Å±ž,pˆÆs DsvÅÖ¡ v¿ ŸYwo­›’kü—“z÷N‚°hœG1y¢h§L˜~ r TÖˆÚyWnšò…8\QºõœuóÏ ²`‰WÓs²‰ Ôb°®†ÞÓÒ°c‡ãÐ*±F‡óͰ¯:…àËE¬ó~¿ÈY§cx¸Æ!¥®|‰È©É‡FÈf©.‰\Ç›¨Èƒ…ŧŒÂû¦ƒR¼O¡S‚L­M•Qzf¢ÚŒg{Å«<—.¼¤¨@˜,½S¥´Ž”·ƒ°»˜È}±ûD¾¬h 4—Ì“‡f|¢‰óx!içƒÆr–l¤Š×—g%“(‹mv••ù‚ ƒl{öu’xr"q‘ﲈ.¡®›¹’³’*‰&†äuójˆ~ÕQ=P|ŠJ!JSv…OÔJ"dg[5Zk^Er(unç…}‰Â‚ð€‚d€•PkTÖaMAgEªT@ùEuULE1J[XÌNQWFkâoÿt$€µ‰í5~ڙσ´ma´š„ª½*®1Äà²ô’^Á´®)•©¶Û¦Ÿ’Ó–à‚deÝi;rSG;T»p²GíQ½k4CXJ¯bÍBŠHÝf‹DŠK nÙD+N¹sªD¨OwEnOÂu­E‰O't£FKQv"IuWyWL”ZmyIsUŽvCDP÷qÀDÒPqeC¯O•pDTP¹qµBŠO–rà@cNZrKB•NqÎA}M`nABLähAžIƒ_I@÷DºWÐAÅEXb@¯DÛ[}?µDh]AjFæ[ôA¢Ep]¥AE¿]AF{Y£AøG(V™@EHóUÇ@4I¢ZAYI©]oBöKHfîAÚL/r5A\L1v•AcLŠsû@#Lÿo-ALRlÃ@AM?k}¨›TsÓª»—mt´ëœîz½¦µ€íÖª,„Wɺ®¬‰Ë2°_Œ¾Èi¯‚ˆ=Ǹ°ß‚6»7¥Ô€³N›gwö§ß•ámn›íŽ¿g&ˆ_w—Pü| k?OnÙ^#N+f¹SK¼fRVD vj°Qí–“N)§Ÿ‚ˆ£Þ™í”Osߢa—§z}ªÃžDˆB¦æ›U†»Ÿ½–ó…8ŒXˆ vm‡Â…¸t2†&}õj¹‡m}Mn½{eu$uv|ZxÆt+†{¬u$pã_ KTjHRƒ;flWT­C¿röTa2D€(in;à»jÆF €ík¾NÁ~gŽKøzÍaPEesU>³rTÜ:Æyc’Cjua˜@¸f(R9ihrR!?wDWEyvÖ_÷BOuÖ`»?²sé]´@w@_UEŸ‹oÛTŠŒê¬gË•ý‡¼el¤CšÍ}š¥J¹€f³a¤Æ‚ü¢n‹ã^öŒ¤zÐd…x!dõ—Ü…e4–¿~bQ¶–,‚ç\@˜ Œ‰g|¤…G]Œ@ic8Šl¾TCBLJñvtbN™ÃŒhbÖŸ6œe¢`zz  h“%s»©–•Ÿs­° sÆ®¥”÷v«£¹‰Sdy¯àP]â¶²aYT¾ô—ìcnÁ2›&fíÅ D|«ÈߦŠæÆ#¥‹þÃã¡u‚^Èj¢Á~\¾3w˜©ò”âwœ€—}¦³X XŠA½È©¸…Áa®t‡ûÃæ°´Š¸Å«¯‰Ê¬΅ìÀ¬p‰Äc®dqÁ“«¯ŒÃ¥®…ް¾X¨-ƒe¬é•yqÒ•¡S†ÄmŸQ”zkkÁD|“† cGM€çqb”+‡†Â¾µ~¤µ×pÐõµ3Øâƾ¥ê´Ó™ÛrË ƒBb·íwñ^ñ mNKrv&cËEyŒláHÍ‘|ŠPœ…±Zú¡3‹{bĬ¬“]j¼Tœ_t¼ÄPŸ”wQÅJœ$sDÅBšðnöÄ-š#lºš±i¿¾™'h±³R’“bzŸ¦ˆe_o£e††)q™|Žûwš‹÷n¹Ÿ³Žpm¯Ÿ‚·\¥Ë‡~¶Xžfz®Ö•¿½—`aGİœˆmSɃ¤0wØÈì§¾z ÄÄ£x½Ø#uã©’åj±“+{1Tq{òeAIt;bcK»pØPœŽÅ|XÉš †}^ö³b˜¢qËö¬#‡òÑN±›ŠÛÑR¯Q†žÑù°†‡Ðï²æ…Ó΀²h„hͯö€kÉݧlx±Ç­¤JxÉ ¨#ƒ¢Çþ¨„‡uÅq¨…/Ĩáƒëí©9†<À$§ã†ô´&€‚0¯y˜;‚ì·€žJŽâÀݪ®—óÄ® ’ Á­¨é‡á³á›ªï¤S•‚A’¢„Á¹DpÒŒŸ|Þk’‡Œx™ƒ#m1Ò‚€h$™Æ‘„{ÌžN˜ˆîŒvƒ4w’{âp&nX‡—üýœV˜Ô‘æ¤ñ›Зón}¯z¾ p¯caƒ.iêSˆhv†lPil‹¥‡[}‘­‹_‚þ‚ø€ÅOoR‹^Ì<õB%Vj=!Fµ[!G¥LOZU«[¤drÚvX|-•Ì‹C„ǯ¼—ƒ?Å®1[Äְ莻ðg‘õ»C«õ”=¯Â¢æ!—5’(†nk”o‘xwJ/\Ïu’JpTÄk„FÍIÀ]ÀCGD¿^ÎEõGUg†DqK˜lE÷OVr¼EàOþsñEˆNÒs IvRaw˜O}]}}ÆWSc°€LÀZæz CQ©tÄ?ºO¹söAÞPžu7B¹OCœX­A\F¿X¾@nFZN?ªDÎ[ð@E†\çB^E¤_®BµD%`Ã@QDo[oA¶FúXA½GYP?@G‡[$>=He]®<ÚI'd¸?àKvmyBäMu{A9MˆvÚA@Másù@TLÌná@ðMo =ÒL…o=@uMs@2Lãt@KLVvÇ?LptBfL§n‰BM£gçA”MÙdÐ@ÚMgÌDµO´iGFûOVp›DøN5s7DcO1qbBN¬jËFÖQ°k¦HéRnHöQ0msG3QijÄF~QÙkýGÕRªk„G U|j­HÝV nžI‡VÜn9KÃXlrOU]-kÐe:j‚jr‹û‚´m•”óƒàbf”¼}µZ6—e‰Nn­r£†ŒA²¡¨¥Ž ² ¡t—¬ð™gkä¯ÿ{a·»£^ƒèÃa°á‡gÛ¯C…­Áᯣ‰úÅ'±]dÌ!³Ú‡RÈ$±9‚;¼Š¦a~?·ž÷yJ´{›ys°Ëœ¦~D§°—v¶Ÿ‹”Mt9‰ç~ãb'uh$Qrh\TŠEät±i¯RjòЏz㔲ƒc•†‡ëm£Ã{îV˜q‡—g>©§‡\²`©˜’X®³§Œ’›Âšž‡íˆ_‡u_…MÍrl‘Ü´€cæÇƒM„Ù~vv&`J*~éh{G3mæ`Tpw”nJl÷€£i?A‚¶zG=áƒ6pNÓ†mx¼e­ˆ(sƒRq‡•lsEˆ{_÷?õsV'@wÁ\¤=ù}ègBÿsƒ_>Fs]„Já{Ì]F\Yg„B<|½f!=`w _º>twPY?/{€eL†ãqãN¹ŒëyÚKŠÎ€™VD‘­}Wñ•ùƒ‘[‘ wéE«z¤dÙF«‚ðo']5ŒvãPQ†'j+8ÍoŽFÉ}lÏHê‹ncEu\RÈ)ÄX·Gh3Ñe§StIp€7n>JëZx®Fm‘”{fOS•¢+\˜4†ûi=¡o|-ž°‰)lfŸH„®YŸÑ}±LA¦þ†üVFºV“V_¾ÁšéiuÇ%žÒx:É磈…êÃë e…«½WšÒw5Ähœ\l¬¸•€_ ¹†Âbg’8~>c‹¤’½u‰¶¹ y}Y¸Ý¥X…󵤠"†·ÂÕ§†;¿=¨ ‚?Ám¬b‡gÄŽ¯™‹ ÇI¯õǯ0Œ Åä­Û‡Ü·Yžä}p ÑJdŽ u[%Ñm$A˜@’*Z½ˆ±xqYß•ŒmƒÏ¾­¸Ï­î¹[­ë•0»I †"³C– tÏ£‰ fģΨtí…/rlU(qAYWF tL^äGŒ†1qšKÊ“Ö}!W“›O… _r¤,òk>·•š£v_Ã& ²x—ƵžÊuÆ‘›¢p^Å?šzn¤Â꙼l;˜*kZ°DdÈšŽ„è^ ‹Ã}Re~Žà„sqœ ÉyF¥h”¦uh°­™ÇvOº¤©„%»ò¥5‹a´Ñ^½®s˜÷p¯–Òf̵º—´e·½Öš°jµÃ䞨r?Ê1¨VzQÉzªz^»¤Åx„»É Ùxm°Ûœ®sËÄÎg‡Ús“S wAd_KGæn…KpŒ]{S(–å‚Tö¥Óã`6Âh¢iÍÎ °Œ¨Ð°)ˆÛÐß°†dÐ?²g…ñϘ±† ÎÄ­´„nÉã¦q{hÈ®£™wkÈ|¥Ú~yÇm¨¢…—Å©”…òÄi©Þ„¼Æ§¬‰ÑÄc«”‰eº’ L0µ0›¥},½˜¡>‰iÆ=¯ŒÂËTµ"Œ‰Ì¨µ‰ÃÁ£©Ô†ù¨ý–lX™ÀŠpxIºzÊfäršlð•wŒ'~IŽq†np}‘¤‰Nlã£qšN‚b­×ŸŠ6—B‹Ïzö„ºu`o]ˆç|}Êš”²Œ½µ£¦ M·•¦R“ ©:œ3—&œZV”}~ùv>“ ‡)x󗔆¢˜Æ˜¨”…ƒù|VQ§R›[B=CaVü>BIõ_-JÉQ4[tW:]\@quYy7 [˜›Ž¦Âk«ŽvÌµŠ‘]Çz°óqÁÆ«ž“Þ®ãŸ9•šžs˜-‹“êT„ñsÓuÕ€gP¾^ÕwÔFçNdbÅFÛGÈU|DÇC•WEòF$`bDœJce^EðOÖmÇF¤P»s˜G2OHwÊHGS{¿Sv` ‚Ì_¶g…‡ÿS„^Ü~$E.Ræt?üPçtÀBjVzÞCRƒwqA²N¦sí@¡NÌrAÏNeqA0Nvn¡@óKqi+@´Gb?}C¥[øAÆFÌYô?HFXY@èFR^æ@ÐEg`•AÑC”a’BƒD·cù?ÎCbt@HF>`À@@H¸ZË>\GVY <Hy`¯:Jfþ=¯K kdAÆM^u«@oLOz+BÇL&xÐ@}Lr‚@òLºqâ?MÅsAéM]tC¨M“sAqLVs×?åJAs˜AŽK›rA M"o¼AßMûkU@õM‡k®E&PÕkéHgRUoâEUQ´p¬COsmFPÌi|HR–kºJ(T×oéHèQ>nH¬Qók G#QœkxGxR’jàGuTõf^IAVj¿IsWûnKùX*mÖM\èhj\¦cº_Á„‹{¯aÔ–„€ùY™mv~B<—šyK½™H‡žaý˜àˆ4cê¥éxYœ¥eŽ¢ZÚ¥:– sj®ðIÄk°²ŠÊ½\ª‰…vµl«&¹ì­a¨ÆÆ°÷„µ¿r§-€?¹ÏŸÝ|&¶1g|4»Rž}¾˜¤ü…ֿǨ,‡KÁ­ˆ¢•” s „†ubRµsác¼I˜xªs¢a$ŠÓ‡Ç{ ˜ê’#‡¾’¼‚möŒvHTÚ“†2e¤s˜Åƒú²¸¥¦h³;©V^¤s¡ƒ“j‹ssŒïƒUoÏš˜Â†€ 5¢ëÆ™½ŠL”C}ç\ƒ—®zNP±†ævô™š—K£'“Õm° ˜Ïj ›Þ‹l¼œ•‘ÿ|Y”Ð9Y¨Áp§Ac‰Cjâ@N€TbŠBÁ|®\€;ƒ‘jEü€PkåMÒ‡wsµW|‰…p(DÅŠNqU@}…@m²@Û‚ÏhÝBQ‚ŒaŠA<{Å]?EÚxñ]VAàzjf`Erwc FWsxWD|®Y±>@u:^®BÙtÇaD‚ÆmRRƒHgàB³s¤Uå*úlÿX09®_nN¸80hdLm8X7C¯,’U¤E3OdçO¸Cæn&]4Läw[iÁH|ƒÕnÚD‰•ñ‚7b噫~ë°)¤”g®¹››}¦±‘™Hw8¡K‰”gí æ‹"cá·’”%g¦Áé™´r7Ä—ØqQÃÔšä|¾ë›£zÜ´ú‘Äfݾn—ç[³¸v”AVg¨Ç‹…bà–8~|[:œÁ‡7hG¦±“±p¥+– |ǛÌ5pi³qš+|d³/ž»¥ó‡ìÀ"¬°Œ´É(°hŽ/ÌN®à‹§È£©„¾"¦ƒå¬Œ—rЭˆÅl¼– _nþyŒE$€õg?Ñ…!t„Xsšé‘Ö…››’|v®'šq~ƒ¿ÿž$‚–½·œz|¿ÿ ƒ~‹Yw…^ro!VÖImÒVÓL«€7m¬Ro‘ízFNx”^}ÔNÇœA†Ñ`6¯¥”»o?¾”œžu.Ńžu€ÄU›&oÂI™nÁv™¿q¬¾—Önˆ¯YŠcu–,€»[õºs]Y„cy}hÛ•†‰wr省”âs2¸tyI¾‰£§ƒŒ´Jœ…=¤"’{¦’srµ-›tr¿¼¡0wPÄ£Ýt¹Å€¢vŠÈ1¤¤zMÇc£ÙvÍÁ= ît¤»/Ÿ~yf¹Ô¡.z3®™–oz’Ÿ} Vâ|ƒiäJ<|Fm{OÎ…`wˆW›’‚ N> ;Œ”Ug·tšŽwñÇګΈàΦ±¸Š†Ñc²ƒˆÒÁ±üˆzЇ®VˆãÍt«R…,ʦÛ|È8¡çupÇ ¢|{QÇΧr„µÆÅ©Ð†ðÇ4¬H‰½ÈÊ®¿‹ˆÆP­[‹ï½ø£”„‘º¬ž‰€ŽÀˆ¤·„²È;¯ï…³ÍMµÇ‚•Ï{¶ÓƒÓÆj®\…q¯R›Ù‚E™6‰xuð‹vøa&‘×~8j╌>{v‹E„oâ‘ȉpm~¦vš›€×¬‘œŽ‡ù™Œ‹›}»‹é|ótÃp‡¦€E —/‹é¾Pª½>Å‚­k“üÁÕ¬í–@º­¤—±Z›„έ^œ†„§$Œž¡„œ‡M„|‰TÁSÚZBñE-UTF/N_8OäVºZZYª]1\lµmou³™ž‘‘‹%¿ÑªÙ‘Ƀ³~’<Ç °Q‘V¾E¨÷“Ÿ£–V‘PŠ?„u¯ƒ|r{ßrŠró~:P¦[Qt=DÁU*DbEiS“F˜GRXÜE—HÈ`¨B€H>eÐA¼KmöE+OøuëFPM{òFvR­|!Oâ\€d\:c¯„¸Wm_Æ FRt¹BsQètFXX5|,EÖUÈzÅ>ýMÚsCAçN¤r@>NspÀAûMwoá@K¢k,A,H¼eRAîE a*AsEú]ÿ>D\t@HF>`f@ÎEaa¼@:D—b5AÐDMfî>ÌD5h@’G5ejAJ\Zm?èHÆU€Ó¹‹¯Y’ȼ–¢RƒæµÀ™Jy_¬]ŸU‹»=´:˜°ÆCµÁŠ¢Ê¯³¾ˆÁÀì)ŠY·u§ˆƒÎ¡!’Âh<–¶xUHYbn@t¦n4CbˆhŠAß„%l“E˜†SmyJ’}Y˜®€éH%’SvA¨ŠÛm^>_‰Ül¶?«†¸jo?ç„FfJGóådkIOy1bI˜nÂVUFÖm`TI`cÈKt?8f S‡BÍ}qvMb‰Äw-Tq|jÑDta‡=ÌhaUÊ4¿b Pr7W>F5õTüG¨5 aUMý;›wlõHÂvhŸTètômUs€¯nGHž¡ü”[yÖ²ö©§’[Âè¶Ñ–µÆÊ²QˆPÆ ¯‰¿º=¡°…¸R¦¾€¾ëŸÆw#È ž±zéÀº‘‹v-¼ý“½|Ç·Ó”¥tܰ°ŽhYѹl•èPL¹ê–¬\Š·–ÈsX£OsžŸ«‰ojkŸ‹ïl÷š‰‹tu¶Œ„Ög ²’s#«ø—j~3±©šWƒŒ¹ £ýŠÈ0°nˆÍ¯þŽ Æ…¤q…ì¸Æž‚o¯y˜šwࢱ½m¢ŒUm‚žÇ„jb}ÙopG}{´bµD2x¯ddN|‹}{“ið§ß–|yrÄG©êƒGÌŸªÔƒÃÊe¨…ñ‹ox/\vpD\œKbuµaÖTY‰ásØ]‚”5}RQ}–RRuª‚ma)ªë‘j[¸E—DoÐÀüš'sn›Or'À™p¯¾™Ÿtý»&–Šp®ÑŽc;•Œ}öXw}ÄlMU¦{ÉnZõ…ƒãjt§Ê–àwÁº³ á}‡½£%ƒ­˜€æšK‡°o릈¦g‡³ª™¦qÆÂS¥ yÒÇa§iwàÅF¡HvÅà ÉvÝÃCsü¿#Ãn(¼òœ±p°º¢œ>r­“³f•”{)NQ€ÊklJ}pýTe…Éy_”ƒÈX£YÙ\lµKšDtƒÂ‚©…ÌŽ±\Š}з²/‰•Òk±‹…Ðä¬7‰ûÌRªQ„ôʪ§~ÏÈ;£5v´Çh£äy\Ç‚§ ƒRÈåªz‰ÿÉ^¬eŒ“Êc«`ŒhÇo©×Œá¿.¥P‰¾³¢r…ÁÂ>¥×„ôÇ‹«ƒ‚©Í³ŠÕÏ?µÏƒ6Ǹ®t„}²ýä‚ÿ™ƒŠ?t³‰?u]ÍŽÒ|ËiR”ŠœzBˆ…~lgK‹a䟀•üy‘¦†™Ñ‚þ˜ŒñzŽi„jxç–G’'†É­ –Âhª„‘ÃÇ?¬;“èÅï¬ô’©Â¿¬}¸»ß§ˆºÅ©5Џ±´¥Gç¡Iž¡“‡Ë‰Fƒ”[g[(_‡GJáS×I»PZÑPWXX>Y^7\Üemh¿n΄±|òx‡¡$•Ä€û½‡§ŒöÆÄ¯‘s½…¨¡”šÕ‘›xspEs­gÔ]×i,_]ãq—JXQÐlAMx,B[N©tF@M®oA„LqoëAJ(l+CHfnAºE`IA¼E6`p@îD«`Ø@ÅEÌ`9AûE×`@EÁb¥@îElf°@ Gši¸?²GeÛ?5IÿYh=zI*U:\n4e0R%ˆWpåI3¬jm;ŒË^`0(ˆtb÷0F„b^V&Ò‰]a'Nˆa‚4áƒé^#7ð‚¾_/6k•|p<’ pu<@ŠœzÿYº„à®_.•‰¨fÕ‘>} U¤ñ‹Êm@­/™5}L¸·žå€‚½ý¤ ˆÊÂ>«º=Â&ª}‘ϯ²›Ó…_–ˆŒs¡…Ž|cö–F;€/ zžH£] ÐŒ¨› ‘ÐwHž¶’«z‘©(Ÿ‡Ç»l®"å¾F«@Qº|§¤‰Ü¤%—uÛ•{„(_S’Õ{®Qøœ~‰Ÿe[§<œS‚óÀ°äPÌå´lÍ´†‘Ä•²Æ‘sÆì¸g’²Êî¸”Ž¢Ìéµ¶ Êɱu‹-¼þ¤íyT§é–ƒlË—±€RWš‘Ås†E¸“³t}F&°q‡GkŠ—l‘C…¥ruHÚ‘ó_±ø‡G] “3u§DFˆ[iK?Èbl³?ñ†vlG>‰rkîGƒŠÑn#Sì„önëUz‚fzM‡v7b—Mïi­SÞJbm:a>OƒJwhYb΀I\ €B{È]ž}wxŸcÂuibŠ?ânAa?7 TØK%6ŠcìSDxtæ]ÐO:¡Ë“Çmh“‰‡Khd{ qæN3‰MvœJ\°ðž€ÉÃ5¸o“RÏA½J‘ÃÏ´¶C…îÏ¥·ÜŒsÆ‚±ˆ‹Ëô¶GŽtÉ« $Î<¥ºƒ½¾"™‹³ºÓ˜uŠÚ®oŒ’pÍ­µ‹Lu¶«”£L2¸—a»¸è˜n{³¨“6xߣšŠ›fx—½{W]‘é{z`RŠ|W]{—ˆd2£+Ž£kn¨Ð’Jw&±¢›n…Äá­þŽ#ËF¯2Žf¼Ó¡…Ö»¯žÍˆA¯·™… £Ò‘Vv%¡Ž’m©£¯÷j8™ „Õ^ø…Zs¸Sdv9` HO‡Ët¥V럫äq Áç¥?£Ì¬ò˶ªH„XŠ‹u³UC|›mnT †!xFhj—‚„5k:¢ZJgt¥\’¬m|¦ÆpE­E‘j˵••Øiz¾¨šmt¨Âžyz¿Dšut®¼˜­r ºy˜ p3®’åd|˜€X¿ƒAq§Tä€6r.ZÉ`Çf £¿”@v¯·Ð ö€»¤†¶°-œ7…æŸáuò¡Si‰´ç™?n#Àv Tuêà ¢üu!ÂD£qÀE™ynöÀA›Onx¾ƒ›„m½¸‰˜(kƲ ”hge¦ŸŠ¤]Ä—SzƒN-CunO™‹}|Þ[<¸…ˆhœ¯Šûh`«’þgÚºáGuÁÁ·¨„gʱ Šη±”ˆ½ÎÏ® ˆÎa¬ì‡£Ëþ©,…ŽÉþ¦·~ÎÈ®¤£w~ÈÆ¤xxÇ7¦‡ÈÇ© ˆ2Ë5«´‹`ʱ¦îˆ˜Ãå 6‡#ºi„º>ÑÖÁÜ¢c…ðƪu… Ë¿°­„ïÎá´?ˆøÈа ‡µŸÆ€+Ÿ¢‘×vá“…k"”‡vt$šÔäG€ff]Šn}lY¼Ö•/uê«×ž…7ŸŠ”‰va—ŽowI£#›Q‰9»d¬b“=ÁÔ§‹‘‹¿É£Ïw¿µ¤@Œù¿©ŒM¼0©ö‡Å·Î¨sˆ6¯ ¥!“ ³¡S–HŒ˜’½‰œk¶kŸeVL-PSIJ$SSW©L?XÛSuU¾_™[šeLimÀv7t/q³»‡Dqm°šˆ…<Æ)®|·¾”¬(•:šž•C‘ªwÏpŽtAXÕRdWV¥Vqo”N Tip§EAJ‘^D>HKV:F{IM^œERH$cÐE”ISeüDÊIÂi6F¤LªnfHëP_qoGnQÏqDHQs(NÆT9uW¸]“wIKV¯uÝC¦M`rCM†G¸a>~H>YÐ<ÃIVAÞJm]BöL³lB×Lüq¦@…K3tD4O‹pVFÕSan—GjWEn’ES nsB§O™iA|MÍdNCäMùfwE‘O‚iE‚P0hoF6R=gGR5eH6R±fùGüRÅeFBSGa¨IFWŒf—I Wjj•KHYfl•PÈZvhX6VaSm fWÁÙ}Ga`ŽÇs‘H‹ðaJ7%ˆÆ]Â-»‡`*0o†`X, „¨^Ô-‚Ì\x2`„z]Ð1g‰m`y'ʈdŽ'$}ˆd‡8‡vâhgG(5u÷Z™‚sáT–Å•`¯£a”IxT²‰œ ƒ×º£ì†µÀ`ªæ‹³¾qª ̶ڥ)Œ-P‘zÈŒB}¤hn‘§œpµ ü•”‚B©ÑC‚+¢…˜qÌŸp“u}}°¤‚‰gû²Ž©Çò±UTÂ?®Om±’ž$€œ]‹ðk–Ý|ûXÙ¹…ÝbҢšp¦¸Ÿ„÷Èè°~Ì´&Ì_µ÷ŽHÊQµÈˆÉزî‹ÃѧJ‡cÁà f~˱Ε6l󡱪cÀ™(‚/W—“bxMÖ“‡tÌN¢•ñrD\’žpD{„ë|EN‰š-‹Àr¤†ÇhL•dvþC~f^]9Ñ}€bÃ>÷†öj¨EŒ4nÖGŽp:K؈:p8MiƒŠqCRJ}UlMåuÍb–MÅoûc’Q „SwÑ[¶” ˜nOŽÊŽrz’V“¹ˆc“°ƒ?g‡wUÀl¬b»GtïmÎXÉ~ónvMaªXœ¯x…«g~‰Qu'På•̓ÜXÉ¥~–£oçÆe·¶ÙÔ%¾â¿ÓÄ·Jˆ±Ðj¶AŠ=Ìä³”ˆÍ_´x‹øÌ9®‰VÍ›¯k“™Án´P±[Æ»V¿u­9“þ„b·`”Z4· •`Ná·—•úbl®ô÷rg¢ô‡®dœ†~‹TWŽvpnC„sj Cý‚fm]H¯‡˜pŽH³–{‡Tãœÿ„³g ¦Œ”v~z¿ §t‹6Á§‚5µê.ß²·˜NŠ_ªq˜Q‘Þ ŽYX¢+ w1©r“ pY¢ó‘ýmé™çÜrŠbxS\|ˆÇt‘PÍ“hbu±$šxuÿÈ¢­ €Í‚±ó…‹½s÷QÄ‚*hµ–ΊËpPŸ«#l6°“–ên0»IŸfzŸ»kŸ’{ɸõ™VlH¸Î–Seu¾œ;qÁÀ8ž°vs½¢˜¨p÷»ª–·nA¼ÿšãp´³Û–*h:ŸT‡ÈXƒŽºzW=‰½x9`Å‹wz;cv—*…çk;¨$–Ø||µk¡À‡©·¤ß‹ôµ°Ÿ—ˆÔ».¡b?¾¤;yAÃ~£Iu¶ÁEŸÑrT¾åšlq¾™‰iïÁ’šòlì¿Éšáom´•”j†¨CŒ`k£¹…dYt_TN‚ÎYÞž¥‹âfh¢Ö”s–­*™Úq긛—lú¿ =vÅÂ(¦Í‚ðÈÈ­ìˆSÌȯΆeÌ9­ž„ÛÌ2¬Å…fËÈ©ÿƒ/Ȥ¤}åÆy ŠvÒÆN ¾sXÅ¢†yÞÅ?§ªƒúÇ@©Š‡‰Æ#£Åƒ>¿>][´Æ˜¢~“²©˜Æ~…¼kŸ"†£Âå§¢…ÌÆì¬…âËÆ²ï‰˜ÈÔ¯Áˆ¸¡qUªoš»~V¥¶—›~¶£¡—¯6¥À˜J„¸–Tˆ’kߎ£‚d^ž:—Ztµ-§¼‚Y±÷ŸÅ|¨¦Ú˜cxij¬¢„žÂðŒ’VÀ¹¥£Žžµ9›³„_µÕœŒ„=¿ ¨¦‰Â8­%ˆ¡¾†¬ù‡3·ªÉö®.©€”Í™N™ê‰Ñwåt,frQfS4QwKÅSjTÒKdZ3SNN7^Õ\d[!d]pãtôtLvI4†îw ¬˜gˆ[Åg¬p’lÄ|¯ –´  ˜,xãpÜuV°S¶fTøV`oDXl]ãtâIO+e§D³HôX¾FJý]™FVHÈ^)H.G¹\¡FOG_ºEÚJvcWGçN~hŠGüO$nUGàNwqJAQüsàVÕ]*w¤PÈZu5EáNÂp¦B­KBrD/MÙvzD2MxæEÚLtD­KniC’K‹këBšI8hcC˜FkaCgE­ZMAÓFÅZC>;Fò]l@ÿE4b'AEê`³@KE¼]Ï@8GÇ_f@îG@b‹>`H:`Ë>ÏI8\ë=[Js^”< K'iH<ìLöqg=ÍN»t2?)N(v¨AMðvGD N@yïA'LBxCB×KÁua?ƒK%tÂ?ÿL…rÏ@ÌMøm?”KYižAxLÆjAÞL~n—AMVo+DOÛl±FbR’l-I U#oæEÅQñoûDZPßmwCOÄi EO´jžEP3’ƒÀ`P2„¾bÿ4ׄ~bí/õ†0do.Áƒ#bk)ß{ú^a2usY`Guw²nS[—|u†\ü‡<~"YršýŒsjªï™€Æ´vžö€&¹"£0ƒ*¸ý¤Ò‡Ç·P§‹ƒ ŸèpFÙt’TTŽdu-\à—¸†Qm=ž[ômœžÂ sœ¨Žu{F®„ ˆâÀr«õ‹ÇM¯5yŨ¯]å¿ó¬†‹3²zœŸ/¢¢ŒEg㦂µS£ï‡a=²}š|™Á¾ªˆ‡ÈÕ¯ûˆèÍ¿³³‡[ÎS´‹‚½ÉW®Ï‡õ¿Ê Œ€¸ì˜RwI±•™tw¨zޤk«¢5ˆëdñ–ï}íY\˜À~ß`Žž[ýG~ž†ÝT½”>Š‘^Ì©»˜z±³s˜“l~Ÿ ‚MT}ï\I2AuzZ.5¬…Kh>둲rÓBaœqòGç‡ÓpøB…nH#€h)H+y'bUJDmnWM£†éwÜZ‚¤Ù›æ„ø¤0¥P‘,²u°›÷°œ¡ø…»â¦„ݘ¢Šmn»…·†9oy“Xâ¥9•£q#·r£J~Θ}„Z• ƒ&Xî÷ë[׻«txÑ»M•nÑ0·#‘<ÏŽ¶`ŠÍ»³Í‰ZϤ³°ŒÇÌK¯=‹ÌŸ¸ôŸDßïÚyå ç>ã0ú©Ò*Æ>¾EÆü¥Ù}ê¸T”9W¸a”7cf­" iú ±…ì\§“¬v)D¸Š4sJE„„k“?,Š,j"C ŠnžJ ’y]Ù—-‹]+MˆÖoÁªa’ëvø£øho£9’!t'œ ŽÝyxŸµ‘ Š“¨ršH’´î¥Ä‘§°’ž½~ʤZ“9mo­Ê™'~žÊŒ÷n§ŠFsªJ]¢|g[Ÿ@¬pÃæ«u€Ïi·ƒ‰L“Ny@WVœTŒ¦n¿ ˆ“ sX¢O‘egP¯u•ªhÀŸýx²Ã±£{Ú¾1·n³»a™åi]¿ÜœÒp9Á¡ž¶s¿œnš¿H›p<¿½uu´·Œ™7m¥NŽé_׋„_ÌŽƒ}¯e™‡BvØb&Š(w’bw—ˆèpp§;˜§àµ ›ˆMÂ*«ŽÑËͲÌ%°HƒoÇʨŠu)Âm p¾iœ¾m$¾›,kÂÙšâmø¾%š„sè°¿“/n÷£hˆ?`ýŸÇ‚…Vk¡“„JT+¨ŸŒX\<²Ç–l º† yyþÁ‹¨{zÆ›§@u‡Æ#¥xÆæ¥c€SȪ …ðÉ.¬ò„tËb¬…ÉË1«Óƒ´Éé§N[ÅZ T{×Â'œ’rÄ©œoÓÃYŸvîÂø¢‰~¿ÃV¤ÚMÃp¡¹ô¾‰žó€¶8›é}C²Fš×~ª¹# \…S¿/¦Ïƒ’à ªú‚ÊʲŠÔÈâ±¶Š!»¸¦0†@µÖ¡8ˆÐ·“¤Ù‰¸×¥ñ†Î¯™ž‚)›Žpø‘'…[hiž”úxˆ·"¥æƒÃ½þ¨Ûƒ¶£~ºÎ§“Äa¯:ÂU§©Šç´yœÉֱ蜈€DÁB¬w‰@ÉV³‰É³åˆRñ¯²‰¼ˆ®+ý¥qµŠ¿)yÌh|[VÔO“L%SaQL];R KøašZ.Oád msÿsŸw •¼‹kº¶:¡ò¬ÇB¯P” ÅS¬»”›nŽˆÃphþr?UZSUlWLQmkÅJ¬QtlgG MÔd†EHIr\LHàJ[’I¢J˜ZèK K&\RI†I©Y2E«I³W¾GÝMaPGûMhj~GùM}n£HhP#r3L˜WKuL?WasôFáO±m…CK/mfC:KÇo;DDK0nxFJ‚hËDºH)dƒB+HbcDBuGbCE¡\ÍBŒDŒ\iAsF‚_¡?FÈ`!@|EîcAvE^b¥BG?]CB¦H9^UAI>aš@JT`èAMau?öK÷fÓ=‚K„lR=(Ms­?QP6tÒ?ÚN u€AÔLävBÿKzè@SK“zøAÐK[vÉ@EKŽs¬@gL×pŠ@ÓL*j´@LŸf¢@KÅguB=M´j€C÷N]j E OýfdH-QÒh‘KhSönÕGsQqkFOPím5FÏOÂh¹E¤O„h?EP0k]D¥OæjªDPÒj²G R~h§IÊRmfÜISe·IúUôcúIªV¬eÛJàV_g±L¯YióN=_hlÌs†zuí—s”›yö§Óœï|‰–`ˆäfM‰Än×DðŒcfÇ5±£c…1ꊱb1r†ÈbJ2›‡rfÃ6†Ïe‰.Õ†RhŽ4gƒ¶d-4“~,dC;½x·gH¤um¥\qõw¢g²ˆÎ€+cל%PsÛ«sÀK±ðŸ@‚f­Qœ.|­,ž^ƒ«²*¨­˦¡˜§p-™„€ÒW-œ‡‰`^È›Æa¼•V~Ý_&×r¦L™Ò‰HsH¢h“ª|Ó¦T‘!u%¸uœxÁl§w‰µÈ7´µOƆ±þ‹j¶¼œqԤ㈪KI¢ÞŠHZ´Ÿžé~º¼G¨ƒþ¬«Ï~Ǿ¬{@ɘª³xÆ™¨ÇwÀ~£®~Ú»tI{%À ¤d…G¿ðŸb¶}—¸{ɡފzmŒ¤”“\uƒ±9š˜n+¸-žAtVª„šÖxY³#Ÿ¦~J¼ñœ‹u¹®jŽReVt§CÆökó>‰`ké4v–ìv¢>“3rPJŽIz IÁ‰µjC‡€x`äAåsjTiCrj_RC\…ns¢Z¦¬Ñžè‡R¶Q°i–w¸›°½“^†°ôŒbÆ ¯¯‹äº£¨‘‹+¯O¡î‡–¥+•¡xr°â—’zˆ´Ú›ñw5žG‡Œ_‹ v“O}FmáTS [”Êí¾Ú¥•ŽôÈʲ—ZÄ‹³ÿ’ÒÌK¶ÌŽùÏÞ´ïMͲ=‚Ì.¹Z—Öò=é)Þ6óqäÕìõÝsÉðÅ’©¸¹†•±jÆ»~™›mW¹¦š×oã­4‘žgE›®€åM©˜ö†·[9–ê}ÖLÙ£¸‚ Wæ¢?‹µg «÷–u}£Õ¨fzš‚º_ñ‘t›KÊ‘:vRD}·g*ŠæzCiN’ÝÇpD¥Ó˜•“qÂÕ¾z¸£fžµŒœš%‰Üf­¤‰:l-«”ËoH™Ê%WAš¯‰k’¢Ê–(ƒl®¢…âÍs·w‰ˆžŠe´¡¬“Qrn¥Ý˜Š}4¥ç•|u6¯Ì—r˼á{Ô¼`œRu„¹›nò¼8s‘¿^êx Àö~=¿pž±{úÂ…¡}¶Ä†¤—ß¼âœCsˆ«4’¶e-À‰fs”U„Öl,Œø}Ck‰N{Îh«’ŸƒÌoCŸyF¬•„|·¾£¢hƒ]Ëy¯}Š¥Ê™®…ŸÄU§°xƒ¾hŸÃq4»KœÊn¼h›Ëkª¾jœpæ»/œ“w¦±Ì–9t„¤Ò‹äf³ŸÁƒ]Zü¢^…¸UÌ­ñŽŽ\½ºdšºkAÄp¤`x¯ÉP«º|¼Ì–¬;{¿ËÚ¨=y-Êü¦z{ýÊøªI€,Ë9­€… Ë­Iˆ‡Ê%«¢…NÈÖ¦#‚œÂŸ¡{ø¿y›Òp_ÁNœimCÀ…ôr ¿"“ys¾¸ž¾ùžßÕ½+¡îF¹ŸJ}h¶Ùp|¨¼‰¤+ƒ¿F¦¾tÀ¦ž€ŸÈ^¯«‰5ÌÇ´]Œ½ÀU«,‰þ·Ý¢—‹½d©Žù¿x¬‘‡¼±ŽŸm€™a"t~7„mYœ³‘wT³ö‚À;¨uƒ}¾æ©uƒÀù¬º…@Ç”° ŠxÅ­­‰½=§`…™»§a„,Æ>±F‹)Ížµ÷‹Ïܵ+Š4Ȱ‡u¼f¨ŠŒ“¨N𽋣ˆê|’l\e\QNNøSQßLø^UKhê_èOšk8n¶pNtÃwV› ’4í¿^­¶`Êͳ’öÁXªU¶•'Š¢€*m)i$s¯Zž^øu/LëRíniAÜGcC¦EâaFAG;^’I,Kt[*P;RûaLWöXYhaNÌQ_F‰L}TsH.N%]‚FO gG€PˆkîI²Qp'JkS¡sJaRØqF.Nej+CHfrCG†híB×Eg EpGnbMEºFXZ9CÊFÙ[AB=F!].CEßW4C”EM[MB¹Fb``BAG a¾AF{c~BFQdKCËF=`aCcH=`QBÚHAaÆAJø`œBÛL.d“@vMIl©?õLìrT?FMkui@ãOÔu@ÖOv,@”Lbvt@ÕJjxè@•K*ypA L¿u AŠKgs…AçKšp¿@ÌK=j¥@LKeèB&KbdiDNLÌdPEO*d©GôP³d¼JiSôflLUmÚGuPÔn,FTOêigFÔOíeQE×OzeÇFüP†hÐF Q]jóFÓQ}kiHíRÐg|J^SOeèIÿS•fIVÿf[IžVGg|KZX(gèQ]hµ^ñb mìy±|-w ¤G‡³±§‰‹—p÷tÅŒ£}ph• }€Z#ðo£?D‡ `‘-À„Ì^ˆ1Ö‡Ldà3£‡ÞdC1ó„Ïd;Ò‚Zd™?ˆÕjBñ{'nÃH]w˜pÜe …+y'ty=„Gq­©M›{p³¨vˆ‚¶?¬}Œ2¨‡š…ížÑ•t~x©f  `´ ¨Ð~Xª»˜xE¢Çé^Œ¡ –X š‚´Tà“UpËJ›¢°“ÂwS Ü]rq–{†TB¡Ö†V`×¶›wÊb³ŠTÏ»QÐÄL­î~M³ —gaåª •Ce…¶ ¢ €ºh¥A~{¼~¤’t¾Å¡Ýl)¿TÃjÀ2¢ax•ÀÒ¥`}ɨY€dȲÿ‰zÉó±é‹Ç®nŽOµrœú„b³£·Š0À’ªÍ†:ÈÚ²¹Š.¹3©ê†¹¨>‹’¼ñž<‚ò»G›f~ ¢žŽp÷‘d‚"gß”„{aF{Ÿr…ý]å›DƒCfì˜êˆv†–Ay [·ƒidjD=p¯õ†ÜÃ,­m…Êǯ ‹*Ë|°QÍ\°ÔЧÇôªæ†¨·Ù Š ,“·ƒ+etö`5h_0QŒ]$b[!^Ágº_[9jri@a÷pIxE{Ì@&¡˜R†mÔ°i‘Yˈ´’“ˆÄ.¬cc 2•ˆ„ð}u{"{¶kMp‘z|ZR`óp@B-Eü_îAS@&`þElDß_ LLaŠX•Y%kƒYz[nl€M"Q!aÓELeW°GLNX`äG¢Qjf¢J]]q×Tí_ôwÇRö[@ybM:VÊuGÒL×irB D¦`D¾C±c–C»C«dpDcEê`=D›F±X¦BzF5X_A"EûXCÑE.UþCžF´VACPF-_5CÇGbðBÇF9c,C>E=dîC«EUduD GíbßB®F›_AFë^ÞA²Jgt@µLHq&@M¯wfASMüwD@M uùA¶NÃv@M{wAæLòx¬A·LKwBBEM"uAqLVscAöKsrBtLtn´B©Kßg±DpJÅcëE]K¹a×F›N(bÝIR;h3LDZkqJW‹n#E’O¤pÒCFNSlWDbO8hpCµO.e F Q¥d HbQÑg{GŠQAjØG¬R_hiI}S€fJ6UïfVIÓUõeJFV fLyXšg P¾\{iŒšýƒc£žM‰%x¾mŸã~ÈÛ¨îshË豟ñÄp¨›‡ дªÚ~=ÔO¬Dw'ϯ½{Êä¬AˆÇ=«/†vÆE¯ùŠmÆåªwˆŽÃ[¤‰‚ư»’Âgº®Uª^¼´º•ía/½Ù›¡c¼PžumáÀ¦R~²˜žs ŒOhÿ•"ŸZ”7‚Éd,—÷Šìu¦’‚—gieGêzl`„?±s,XEBæmËTŽCE4m¯Otš˜‹¥m«¬—€vØ·d–€ »Ñ¤š‹ìÅ8²v“ùÊınŒÀ̯]‰„±œ5~Ÿ¶Ô¤‡»³N¦þ‰:±Ö¢ˆ§´Ø¢‡à»g¥>…Ý´ð™{qØ£õ‰áYË£'ŠÂb…°J•„~0ÂM¬½‰:ß™Ð/‡–æÙ×,…xÌï³U{?´¾“ˆfº¥3‹ýcýœ±ˆ kM˜ò‡Gn•”‡q‚‚n}ŽJ¨ks–ü„n5ŸÏŠÍk­ª©”—q»•¤Â‰ÄÊÿº?¤ÌÎS½„¡¡¿“¥V€D²´–/g|®Ç“²d’µš÷tˆ½¬¢‡~Á›¥Ú}†¾¸¡;|­°k–³nͤ)Œ`¯£‡ˆZɦ­‰`XЪ1IT:· —``}Èc¦óvåÌåª|æÉ§wKÈð¥.s%ɾ©zËR®ÅÉ`«ò€Mâx»öœ°{´¹™›v÷ߘXq¾±m•èqI³˜Wy«¹MžË0½ ¦É…º5¢ï…´Tš%–´ø˜{ ¼€ƒÐ¹œ„È­d—ûy‰¶.žt|©ÆŠ®m„sÅ}«3…eºl£{ƒ_·ê£ç….´üžm†ü¤T—¥„X”íŠæxŽÞ‚ùh† È“v÷¸w¢ì‚¾±¤(„x¿¿¦¯…È®°î‰„Í|´ŠkÍA´gˆ‰Ê²)…pÇ۬ĂˆÇA«‡ˆZÆÒ©ÏŒ»È{¬á‹áÇ€¬¯Š¶ï êˆ˜›x_|œxÆjüW»jü`ÉPrÊqÉf‚o.qg!knnSr½vÆ|Àˆ.Œg†Uª‚¬ŠùÁ(­“ïÈq¯ÿ•È·­¡’MµÎŸî‰”•‹å~j~X{Bwvg´f¬jpI˜Hó]ME<@P`FzBoaeJ}JÛeÓNSP¨k±KMhFaHÄaòBH×_ÚF¦Mwd4L•Sj_ƒkvxAj…rk‚ê`ÍeHçUYsyÌI€MFkLBRCYa—A¼B=dC'EeB›Dça†B'Eg]r@ÜCÃZ??hB‘W:CÀE/UêDFGW.CXEA_÷BøF d’CVFÌbÝB„Ec\DFGfõDûGDbjB„GZØ@VFá\ŠBoK©iÒ?CLãtã?–L‚z=BMÿwÏA-LrýBMït2AÌL}wŽARL¶yä?ƒKyûAIMcwkALtN@@KZt;AœL¼rŠCrLnD§JgèD[L2aFQO™`ÒJHS4j LT\woñH—Víq}C Ovv0@¢L"tôA‹„k=¯‚ŸkLJM„ÉtŽdk€œw¸^ü„8~QoòŠúНž`}D¤ß¹‡¢§ŸÎ†ª¡œƒ…§±D†™˜ÛŽ4‚€ñl”eK—qƒþo–šK‘Å{ɳsª’©Á"³0•¹8§×‘ä¹Ï¥\–´Ü¡'‹_¸]­>Ž˜°8¤<‡ºO†nIÌx_›’~ò_ªô“r÷¿æ¥„„Äî­”‡Ã¿³ªêï¼H§J€'¿%ª4‡¿ð«Ô†Ì¹É£V|¿²(™Çl¬ ’ eÚ­­•©r¤²]›Š}j»¹¦½™ÅÀ¬ ˆåÄ ®VŽ'¯W<쬊ŠÈj°W‹+Ê'±=ŽöȮ̊ɭ¯Äˆ¢ÆÐ­K‰ÃÈŸ®Ö.ÉÑ®RŽö¿x©IŒ]¼R¨’_¶Ÿ*ŠŸ¿°¬E‹i»¸¬µ‰´È·d–AÆW­FŒé¾¦£%„t˜˜haòŒÈvþ^R…ŽpþK†¢vAiè¢:Ÿv÷¹í´Ä­Íž–”ŒÇ™m ƒh±Èži}¤¶h¥E(»ú®]ã¹&­rfÀÚ¬žŠ‰ ËŽÒo‡ñp¾Q{ƒ`ÖGüxYE= ›dW;{‹Êo”IŠnSçžÈ~;VD¥"ˆ÷OÿµOœÝ~´µ|^„HÉ­«È‰ãГ°¬„•Îl±™„ÚË0¯Ã†ÀÌü²ˆÏï´Œ¹ÌÛ´ŽÃͶŒL»­œnﳜ‘C`½pšËh6ÁìÙf|¼œ/j’Ã8§ÝÒ¾¾¦Ðƒ¦’s0‰_‡šº‡Ïfõ’ Š®wcC£càÖo¨IÑt¡\†7s´TT4²rSÑ5þ}0hÂH¾‘@„5g5œ®Ž¸ls¥“Lv»ºÃ¡¯ˆüÉ¢²–”%ʰ“)É&­²œ€x¸á¥|‰Þ´9¦ôг£FŠ…¶š£Óˆ½^§S†\¸«tz,£%в`û¢ˆù_²D–oyÕ¿8§·‚ÞüÎŒ÷ãÃÖÂ’cÆ®[zªÇŽ4g-ŸÁ† bG™˜…Yg@—‡Qk~˜×Šûqá“H†Ym6~ƒe–»‰gŸ2l‹¤€’!pa¬]˜\}G¼« ‘tîŽÑ¼ž¯wÙ³Ÿ–ïj–¬„’ík5³~™ÂzÙ¾ö¤!‚øÄªµ€šÅ3ª5ù»á¡ wq«z•ã`£Ž‰5R‹¡)„•MÉ ‚‚mHû§öŒ´WïÁR¡0u™ËA«r~“È’¥-wÆ/¡up®Æ1¤t¾È2¬[zÇÙªøzù¾EŸ+|‹®ƒ•ŠvV¤”#n¤¡5ˆ?j.Ÿ‡RlJ§Ù‘Ùuw·¬žg€^¾Ž¨ß†îºM¢¿…~µ‹š¬6¶×™•{,µ'—|d¨¼ŽRw„»Šk¥£U“Ûm¹Ÿ³~Óº …²Ÿ€®äœß‚ªÕ˜Ô|…šùt¯Œ~ƒ‰oÍpþiñ¢’Òvè¹¢ž(„k»Ÿ†½ù¢‡²Ç®ùЍÍ)²À‰˜Í¢±®†GËâ®8ƒâÈðªå€wLJ©_†/ÃJ§ðŠfÃ&¬,‹`Ã}®XŠº´Ÿ#‡¦š„Ž~~*}/p™d r6iÔW |æzIktärÇjdjœnnqŸv[û} “õ“Wˆ¤® ¢:Š¿‰ªéŒÅ¬3•BÉÒ®¼’Û¿¨ŸŠë¤™—¼IŽŒ†±wpÀlûj=N²KV^íGÏAÙ_âEBû_°E¸EÒb¼F1GFf!F)F‚e÷C‘EìdGC³F=eöGEKcM5S8faÃjßtçnltŠ~xe×hÄz7C+dTA»Ekd™AEòcµ@@Cªd??úAÖ^'?ØAxY†B,DŒV·DÿEÖYVD˜E½_DgF¦bgCFò`ˆDHÚbèGTKAgTKóNe{CÈJW±@ÙI]·A°K|kú?—L•v·?rLƒ{¢AMŠw¦C9MIqŠCqL3r‚CŠL¥s!CßK6vë?KT{ @$KízwAÖKÏxÒ@ L›x`@MávBMLKqÌCRL`2ƒg~°o”xFtGnÌej½ow•€L€w›]›Ï´ ªÆ‰¸½¬ŒŒôÂ'¬Ü‘§Ç%®((Ãq¬dˆ³¢†M™Ú’fƒ«zgwWyU÷R¤j·K-JGeËE˜Då\&EF _*E×FïbEËFTc#EPH d´EHb@1W„>ù@–U„B[CÕW˜D¸E^^UEçGbüDwH aÏF€Ióc´K˜MèfûOšR§dšE/LW‡?J[ÈAíKík5A\L1vfAM{rB¥M~xD¼M s.DMJqÞBwK,oFALJqó@ÂLôyä?ØJ½|d@ÁJ‹|V@ñLœ{0@%NÐvêAúMPqRBÂLÓiDŒN5^èBEO:U_DÚQ_*H%Si¤G PGpe@ØJv9?cL§z?ýLIyBùM8uCîNÎlÎDfP kEoO™nF[OspTGæOål IÊRŸgüIVše€JxV½hBM$X{j§MêY—meƒo_rÓ–ô”O€¤¸ç©Ø„¦¿–­9‰Œµ.§Š"³ä¥Wˆ4·¦ƒ‡»ª9ˆÙ²¦‹ªø ¾‰¡ú™?= ˜H}»–È’Yx&“‘x´ŠÆ©iË|iuj€‡ósn,›?–J‡§“ŸOŽË›¿”ž†ì†Én¡‰}¯eŒÞt+` —au›_”kR]×oƒ!yŽ8„‰p¡™’oy™½Fª›‡¼Âݬ¬„©»Œ£×…4 &“Hv—fY›ƒ/jÞD¦t1^BK)sFaBJ!‘–}ùgOŸaˆanÇ ŒÕp9¤•‘.oŽ«–Âh”¯ô—·h칡¨Í{0¿µ¬ˆ£¶¡M‚`®fœ‹~%©.™[|V¬|™i}Ž´œ‘~ݸ·œ«zŸ¸c§¦ˆ² šÂj²—Bo8¶/™®oM»í£r‡²À®ÅŒ½Ì˜´ù†[ÏÀ±WçÍV¬‰„ÍF«•ŽÏÌ­¬ù‰ãÉ÷®‰§Ã ­{À°ªÁ‡Âˬ¡‹¢Êͱ–cΈ±ªŽÏÓ“¶“2ËS¯E¯ÁÁªlŒQ¬ª™éˆ’dOaùŒBvÝQ+ˆÁmúJO|„fúTŽhJWGv{Mf«C€žipA·ï€ucÜ–—Šqi\°2¡ŸoP·«€Ëœ(’µp–žlF‡w}[I8‰fBDZ†ƒk‚F÷Š¢uäP¡M|´tÿ†Pvx±‰yY Š tÁOk°‹ž¹,¨±Ê)­½ˆ<Äc¨¦†tËX°Ê˱ð‹`Ê«¾D§Ýµºžñ†8´¼”ÏsÁ±«Œ\Gº –°pÒ¾Áœ³zcÀ¥™¤r¦ÂJŸÛrzÃ6©m‰Çš´‡íe…Žöq Alu6K…fs"\œs®b”G …ÑwëY©›B’Ct³žŒ‘Xk÷–þ?^¹„wpÅPc†xBbX´ƒvf—‰€j›–=ƒïbBž"Іoõ¯(žË“Ùª‹˜`Š+¯š&„þ·(¦°ŒÔ¶§O‹¶p¤‡€¼t§ …´Áåª}…»À7§†ˆº»œcƒ~»Yœ™|„¿sŸ2|g¼œrv¼¼ôš\t2½Êš%t'ºu˜˜oG­V’ÏjD¡ºþk~žÞŽRst*!uò Š“uw˜ r’?t¢™¼Œ¦k—¨‹™h¶›áŽBl©Ÿ ‘Ùmâ *’Îl¦Ø•ålŲՙ·mî¶K—Âkû¸˜šq½nžRôÁ$¦¿‹ÆŽ© ŠÖÇϪ·‚CÇy¬®ƒÀ½©†“µYŸZ€Ó¨N“¿n‚ ˆ®aÁ˜{}lV±ž¾ƒÇZž»4œlsPÉ(©©|ƒÉP¥h{ÙÇ÷ŸkxÛÅœžÂuÁÅôŸ±s)àín“¼Ÿž«qÜ«å•-oî™Ä‡d¿”I…m½œ~ŽÎzî¦r”Mw±.šÓvp»¤£y{òÀߦ¹| »íøxò¶M™ütr°%”ou¹¡|‹IoãçŠÒfŒ¢èðfC£×Ž:aúž“‰*_ð™;‡‹f>—´…¶er‘–}©Q … uXI‡„^{îd¥ŽB„ªož€ŽapS¬V—§wf¶¥óƒ¿»Ð¢í‰ÜÆè«)¾Ð´õ‰HЕ³PƒçÊã¬Í€Çi§{€ Æh§Ã…ÃÄ£¨×Šà†¨7‹©¿š¥È‰•µÝž{†³¢C™ŠƒÕ’’Žx…Ì|åj‡Å~fqÒ~two iÚf-kžw¼z¼|“ŸÈóŒB»i°ÍŠÀ)¯¡‹¦Á:«#TÇ#­ÝŽÓÄý¬|ˆÌ¶õ¦¡‡ p›õ‹R‰]‹ItbpÌ~~^°ZÚnÇFFÆV$D2DýYoEŽG b°DkG.bËEJ[bÉHÛJ–_MÜNt^LMœV±iíVdx7xZ{޹vTa9?%Tê=@CTFÛH¨XôHÒLGfÉFcJâfˆGiHue;HGP]JãK÷VžD–JT¸@;I X¹CMjCÄLät DÝM©z4BMBzšC*M¦w}DuM•rC/Lvn]BþM„p¬BcMÈu0ArL‚yä?Kwyx?¹Lpxu?iMjt¥A NOqžAxLÆj­A8L>aìBÞNc[”D¥QÕb?HÁRkiòF_PÇn)AL¾u‰A NVy"ArMºuØAûK¦qkB`L7l&CÃLµlõDúL²pMEÛO½r9GaQn±HþSúhåHšVGh6IæV_jL\Z~j…S@^=kýmyuHpã™)—?Ö·©w…g½ç¬hˆíºe­ºŒÛº‚­“‹û¼†¬[…<»©ê„E¯óŸ †Š¨Ýž;Šb |œaˆðŸ~‡P›G›u‚è—§–R}¨“É‹ñpkˆw€6m÷yRs8˜æ’³†V¨cž;Œº¥ƒœ¼‰}•tŽš};_‡dwêŠ{¥^ˈ±hžŠeHd[ŒR„ZoEŒ'yzZž Š¼i¡²Kœ v°¹ožfsÚ±â˜rzœ¶‡Si5ƒbQ>bqóRõ9´e$N{A¨sŽZ“H¶‰`r/X?šv…aiõŸªwÊ 5‹w1¢é‰ðQ«¦¢’ý\^° ÿoñ¶§…ç¼ ¨f…²¸Õ¥5„c¸8¨G\µ(£tŽ‹µ¸š{†;­®’€k÷¢¢ÍlöèˆruŸß„—U¤3lY˜«˜Jvï³™žû‚†É£®Ç„Íÿ®â}?Ƥ~‡\È6¦ÌŽ!Îg¨xˆ$Ì «„IÇh®‡ÛÁΨð{ǯ~ŽXÊM±t‹$Í%³sŽ‡Ñ¸µ­HÑð³äŽÈÇ—«õŒ£¼Á£iˆÀœZ‡×`…ïe§9à _Ç@·x˜^HÓn0Y @‘nœU9esØYí:‡itÜMò’Œ×Y^¦˜×h­µ»¨©~%¯6£Y‡OŽ&~AZE}le¿:4‚¨jK…‘mz5`ž¯–Å{Û°\²y²º§*®ÐÄkh‡Mv%CxƒX7©{™’;¸ôžõ‚Û¿£Þg½ £›†„À䤊¥ÁK§Bƒ!Ë ¿-­”¥ì Žm§ÿ ÅŠ‹¸÷œÕx¤«LP²¯‘s4½Q˜q¾Ñ™Bfô±h“Ñg{–·}H“ãt6?{‘A}ûP’…ctâPÉgöPX:OycFE'šŽ&jt¢Å˜qxý—­‹þm>“…Ýjz”S‰mMžÿ•,zWâ‘Æv;’E~e^õ’U_ड•«‡‘™„Yp ‰’P~ ®ŠÍˆ¶â£ŒŸ¹¥™ˆ8À{©†6Ä|«†Æ¬‹Çe©Ó‰Ç'¦J‚¯Æ¥›}ÚÄ@¢ yÃ>Ÿq•ÂËÅlè¾»œ¤oǶj™Én¢®ü•„oœ¢här›„Š o2ža©rÁ¡ ”¸ujž¨‘Mp+œÿ»oßy‘EpŒž´¡lÖ²k͢Ŕölk²G›Dpp¸‘š}pg¼œrv³ÃĦh…÷Çö¬0ŽÈª ‹ÅT§i†Ó§¸‡}Áô§4оz¤!‡*¶›Dz-¥CiLš‹ƒÔZ [г_ ¼kWrßÈú§ÏyÆÉ¦ÎyGÈ\¢•zéŶŸË{üÄ¢Ÿ"w1ñŸco¿À‚ +qº¹Óžóržª€˜¨oÇ¥Q˜°y°yžÏ‚[²¶œ¼v·±Ž›Éo»¤:xwÃ$ª¯|‰À¤Èz´»YKxҹƛj}«µœ…Á­˜BuÑ¥•‘g5œŸôIŽ~rAC†{"Wd–Ì‹›nÕŒ!`_‰zÃk¡J*y®o•]ö†‹}Ëo¢’P…6qÛêŒ4n®'šxv¿º £2„‘Èò­AÒLµ¢Œ=Ðl³ç…¯Éû­m‚LÅ ¨ã€$ÄÎ¥Ù…sÅͨkŠ˜ÄਉˆAÀ¯¦É‡5¹¦£÷…O³£ê…tª¾ž-„#›V’z ”ñ‰Ÿttˆz}ün2o÷g4h¿tVtv¬›Í˜I‰i¼'¯¤ŒWÃ3±¦ŽìÃü¬|‘ÙÈU®‘Èm¯¾‹y½k«á‡ý®¥Œ¡ç›îàG‹ãˆïqFi²mÓL¢EPOEô?UèEE&` EøEkb-EËHûb±IÓKŽb˜O%Qd¡XË\ëka†g¢v/~$€þыℙ–TŠs…)f!_§b­JÏKžPÞADHYA3V7Î> Sí5kA¹R<;¿D3P¤K}L‚S³VËUbh.PCT n•Q±RþgmJ—H TúDEP•BíGØQjBÌI—WèC¦LÚgÀCÞLKs–CM@xEC‰LÑyÆDÓLÜw{F2NûrßF3On]G+Qméݦƕ²n› “¯•‡……jñ¤Í”ÐqŸ¤ü’nĬ4—1|Û³H›‡Š¹?¤w†»ž„{–°o£Åd ­¡p†*š·³Ê’l¯ðù}‰—›t¡FQž2„ffªdŽoö¦½‹õ_[¡”Š–^n”}/HU’¡y§EUowÑG­@m7GjµOÍ9:sÚVx>‹‹‡{£O<•A‰©j4‰¸|âc`’¶ƒÄf°—‰6gᚊ‘Úr9“J‰Èra.{`t‹+wQW𗡉sq[ŠpqÃRy ®“¢€.©¾š¤ˆTµ £ÑÖ¼h§â¯Âé©öˆ€Æ~¬$‡¯Éü®³‰2̇®Ûˆ•ÌZª‘€Ê˜¦ayßÈ.¦æw¬Ç¨¥Du1ÈÈ¥:vTÆZ¤dy-ÁEŸÏu3ºÿ›!s&­Â–‡v$ÔŒ¸r ™‹Yqužã¸p>¡ “ÚlO¥4—$rZ¨B™u@ ’¦kä•€‡†\º™¼‹u_3­„™¤nð·bœ3t¼¡w¦ÆŽ¨Ò‚uËO®7оǨŠôÀî£rŠ×½¼¢îŠÆ¾%¤áŒ†Á¤¦6Œ”Á¤¥D…¹¶˜›¼u¶©o”Íi,±¬˜ÉkíÁ-¢ÏsëȨðw·É¸§çxñǤØz—Å2¡\~÷ðŸð{uÂAŸxt!Ĭ¤“u¿Ö¥ÀwÀ³3\s ¯T™Õrÿ²ÆœèwLµÑždt‰¶ŽŸˆs!½~£bz¡¥ª}ÂÃ3§-pÂ_¥†«¾5£ Ü»9¥³‚R¼Q¨w„˜¯™s–š/ðO㉫qgF½ŒS}”^ø˜k’¤x¡½ˆÇm{w­jµP/o˜e2U{zy2nnŽFƒÂs`—™ˆÕiYª+˜ kù¼´¦¸}ÂÇÆ­’‰rÐʲ£ÔÍ;°üˆ9Æ ©¿€àÃØ¦=~“Äé¦K„ÎÆJªž‰–ǧ«ˆÄîªÖˆ@½n¨©ˆ¼ú¨‡½âª$‡¶û¥„騛p|––õ‰ör}árñm`w(tÃv?“YŽ–†ã·ªlkÅ´3‘!ÈÆ²A‘†É^¯‡ ÊÔ¯ŒmÅ+¯÷†[º#«©…«¯:¨‰‹ëŸšb‹|„Ðw¨qY‹LRñHNBªU‘FE-_GJFõb EKGkc6J“LeR›Sõi_³`Hn£Y²bÎlñgêou§t¨rD|´cº`§gõPPˆRMILgN]AßH!O´=GC[O±@DzTO?ÈBW=AºU5ë>kQ­6ßCJQú?§EP@Q—PõSòtÄo vòuCvø€uzë|ÊvWblb*WI¢IŒNÌA¹FPCjJLVDTL0e"D¦LpODM2u¤EuMÀvQHŒNîs•IäO´q®K¦Vön©U¾boRJüUÛg¦A¤MÙd@ÿLÃiüD|OqqÙD#Måo_EuLïj†DM#h(D‚M-hiFÅN×h€IJP mvJ#TµrÚJÍTüqöC~MomALÍoýANÓl×@?LÖdÆ?âIß`Ü?oJÆe?A‹N³nFQópIK6TonçIýUkmG‚XkBKüXKjÅMí\&g4]*e¬nµ|:EuBš­˜'ƒžu™UFž?˜+‚z¤²š»…Ë·c¦¡ŠëÄ`²ø‹ÖÇ<µ‹Ä(°qЧº¢§ ‹k§Èž‹Ð—•=ù™Œ”4‚§Æœ½…€´Ÿ£ƒ³w¢&ƒë Œ™•‚¨íمѨZ›Ê‚+«eœò‚Ô²l¥ÓŠq¸;¬0޽ž­HŠX¾®1‰1µ)ª‘†)§X™Wto¡\ŠŠa%¡½‹­iÂ¥€l±G–ðn—«#•¼pçšj‚Ýbå|ª_KDÏoX†HŠnkJSÆsjVÛ† n¼Hþv~·j°‰°‚ªw˜vkh]òsÈZÅ>Er²S>3mn2WtJÒu™eURQž{‡d·§B“Ít½n­r‘å¹À­yŒ±,›2só›U„Í[ƒºt"bmª`SH?|~hC<€ûi FƒÓq¥O ‡¯vAV:šé„$g•¥ZŒ—n—Ÿ Œül¨ gŒ m7¬â‘Yl¬©›cü¥“×s¢G”ƒ€õ°¹™&‚”·œí~F¿¼£;†ÄÉè¬{‹‰Ó ²¾Ô%³³‹sÏѰ5ƒ½½‘œsë¢9‡\.—~€Æ]ú‹[u^IÉ~få=ÉnVí? b%P Gån U(A—çqÆH«‘CxôTã–ï‚·`š†ietŠ?snL¦q,R 9O{¸[C—¤=Žár¯Ç"²žoºê³Ô’`þ݉»œy]̪ʓ25KrŽŸ„Ž@iVÈŠf  Mùt<«$—Žƒ'³Èž„â±—“sb¢O‰¨k“™Ô€6aµ’~{‰5…»wTU– ‚`1 RŽþm9 Ø’v÷šd‡&n#”¼€¼dã“ód5–,ao„âiuD1r¤Sk:Tk€OC:sgYH-póJ…‰qÁÀ¬,‡1¹®¦“€÷ ”‚y¥‡ |#u±yýs"xÊŠ„ ‚̱/¤kÍÆ€¶“·Ë·ŒŽiÌϱ'ŠKÌS¯ô‡\ÉίG…ú¾é«|„²º¨Ò‰¦v£ÂŽ¿‘ŒCæl#aëgqJÛH¡^×D†FGaôEGebýCAHwdÐI"NâfMUvUŽkÆb_gqK\>j•oaR1cd…K&PxUôG´JkM`KdMÏNíE`LâN‹?òHMÀ;BDL~=QA}P1>AdUý<Ù>¦U½7>6QP8çB Q‚AEÓT5YXïgó ƒÏó‘s‹À›lœa—‘™z–{l:M³OOÏA,FM(C§IÛQúD9L+]¦EøL0iEDM¾pnF°N!vjK™O t¶M\S"rÛ]Qiat oõv¨yOQ‹_wj#?8L#aH?^LÕhJDˆO=r.E>N¬p†D&MøiQE§NciGFjOiåH«OgžH³PneI{V4tÖHcXvuAèLoAûKÁnÅ@áMUkÓ@ìM>d·?ûK‡_wAQM4e:B§PökæGðS|oK{SmnK­WœlYJ#ZmÖLâZ¤l¨P¡_k`3iAp|‚„Åx½š—…ƒZ™’”ñtš¼”u‚4œµ”„€gªÙ›Êƒà½nª>‰"ÆÁ±¨‰\Çš±‹à¸™¤ª‰Î¢ò˜æ†¬Š‹‡Êpê“1³z,¦­›õ„¹·¨­†zºÂ¨ò†²¤‡V±¥Û†¨®áŸß„<¬„›:€¡°Ÿº¾¡¬—†cÉL·à‹Ë°¸æ˜ÂⲊB²(£v¦(”r5¤6q§§kŽs´µ—~uˆ¶ò˜Èv!¢š‹»kY…—l–L"}tm[«’{kÚ™~„«d51zÑUŒð{Žhz…ävdhódZTùDž\KKÒ2J^ÂIè5\NJmBZÞKÔ@)sf[ D^{O_\¯,¢—ŽªïŸu„| HŠgb‰sŸ9âyåkQiI\ÞJìw¤cÝEHxU`³@ÞlÉV<Õlÿ\ A‹||·eðšj‹Žré–2„4cŽ—i~˜Tó™{™M—`uSI3—΃1gZ—U‰‡n[ž 5oß9†fñ¦wãoÀï¡]@Ïw°mŽmÒ¶³YŒÐV³>ˆ5Æk¨£­ë‘Õl9ˆ~h¹ŒvðTõz~c Axpˆ[þK”`lSš[ z7hS׎ˆ{b^D޼eú”‚€€hÆŒ…sïP„‚h E…sFV±D>xxYKGžœÎ~bXvÂ<¢ÛooÔ8µßgØß³poÜÄŸq„ð %ƒkóž ˆ~`¼Ÿ‹9fa¤P”vŽ¦Ì”]tË©»’ïqé¨aŠh"¡Ù‰YeÞ”P€É\ÛŒ€)m 6vidÊ–àŠÊj‰­™Ô¤›˜$ƒU™Œ„vûŒ#}Kiu;PjDøxŸa©vÑUXB lÃL89›xG]8Gx¦h#R²„`s½YÞ®j¥GBw^\7=ÕsAVÑ8&mP6ŠjóPØBù_Oi<ˆt \ÐB €µg Fç–4…:iZœÑŽæsW–â‰ðt]ª’ƒ!´Æ£~ð¿|«îÅ ¬ÏФËX®ÓˆbÎõ®Ë‡Ï¯KˆÎ¯‡ZË­ÿÉ'ª‘zÍLj¨nwÆr¦xÚ¿öUtu»Jœyx<ºõ¡¤ƒ ´ë K†Ä¦É˜‚Ÿ” ÈœsxK¢„’}p…³Y¸wgµ9ŸÇxT£]•Šq`“3…4f2•Î…d‘¨–q屚âsÕ³"™UrO¿†Ÿ1|ÈB¨0…bÄÆ¦ã‹hº}žÐŒ?²£š"ˆŒ¯}›æ„³²*Ÿë…¶íŸ,€S´ý—Ij±“Ø]"¼£Ýq0ÆZ©°„5Ç;§U‚IÈ-§}*É(©»wÇ §u.Ä!¢2s5ÃIŸžoçÀŸu˽yžw}߲ƕ½q9 $…•XÝ–åS¶›‹‰fK®þ“ÚmO»U–'ly°ù‘ió¢~Ž`rl§½—3ƒN¸O¯ ’ܿǼˡIºå·¼¤¡Ú–Å2›Ñ‡#bQœ0ŽnQ›¤o|X”’…)té‹·y‹gKoBX±yžk»Uë…y»e4&ÆeIjˆÏc÷·+ŸFwMÆ0¯R‚ýÇ(°‡ʰ²'‰½Ã&¬t„]À°¢~z ÂR ìqûÃõ¢psþƽ¨l~Cɵ¬V†eÈ‹­—‰RÂfª2‰¿+¨õˆÙ¼Ì¥[Š'¾Ó¦±Š´¼¥]„H¬eš,€—‚±uš{pršs#ƒ¯z“y£Ÿ;–õ‹¾¾#­â’çËçµ ŽÑ­µã‡«Ñð³ ‡ÎËÀ°”†Á³«Ï‡ ¶ð¨O‰¹«Åª!jôœ1‰«€p}¡s­Z?X¢hìI LÌbýGÔJÄcçDuKŠgæLÏQµi¬Z][oSnt‘yËq÷~ÿ€[mÊv$y3TäYN_bMäOìO·LQ£QŸF'PÞRõ="KtMµ;¸FVKÚ:©AvNá<Ã>CT¨<0;ûTö:'<çQœ;B SßAjD'Vb]7] mΑy‚,šç–ˆ‹:¦¦`˜Mªd†ƒˆ~PSÁOQAyDøI˜AöFðN8CêIÜT"GãL^b#GæMqmãHTQvx‚VƒUôvÎ`Üc tÂoNtw‘uÑv´y!OÚV¤kXŸJ›j'A2NÇj³A}O„g AOeŠBP iDíQ¡lwHlU~o,KûU múL¶YómK'X‚náOÞ[Sn,Tëb‘kñ^ešk&zwHpu‘öŒ=x&•†{°–²’*‚É—‘ù|&¡u—*|°±ðž–¾í¦m‚‘Ãɍބå°LŸ©‚Mš“‰|&‚ý}Íg|‹w¤Žì‡ºÿ¬À‹Y¸¦¨ˆ{· ©›†K¸«†\µû§&Š“¨¾˜³k¤Ì”Gt ²OtwÌÅx´8ŠóȽ· óÆ+¶­ŒŽ¼¾¬K‰oµ€¢}ˆd°Œšÿ~®,–/u«´]—ßvºÌ™xh±é•#r’I¡bˆŠ}€kAœ,þyp¦¶—éy;•¨†àkEÛ…¼s ˆã}ÝoÊl^HJêc@PJAcŠP4=ªzjOI¢”ÌŠ|pÎO…©a‡—¸yô? ±`3%Tlh]¸B=hX\/Iu:b%Fvf^a@ˆgLQÔ6Elƒ\›JTˆdza¥Öž·­è”È|=šLаlã™D| W/“vUR٘܊8pƒž‡”$~±šŽxvò˜¸ˆtoMœ †afºDžª~ÖÉ}°mŽ8δäŒŬ±4‰Ã$ªäƒÉ¯O—ovøŸÄ;v<–õ„^oYŒ}`\J~Ôt'k=qøm›wîˆT{`”µ…vj#“MŠ$x¹˜Ëˆ||ø]zÞ^¥‘Ï}bX‡6zSd,‡‡td¸žÏ\†¸ë–as[Æ/¤¶{ ˺ªñ}¼7ž¥tÊ iˆ–[¢ ‡W¸£&ŒÀ`Æ¥¼’qÝ¡+h“ ÿ…lZ :ƒ€U7¢Û’-qÏ´Ö¥c‹ô•Šwd— c€µ£·œŠ ªËjˆ8§‹šœ…4˜Š oNˆáx“b£‹Á}¸bZ‡¶w_cpVüNAo¨R§IbŒíyÌb”‰å„7jìgƒpÆôgPG!zv\­9çqaUy7•oéT3BómÿT5E}l7UÖ@e1O1×r½U¨6¤‰q MœPÑu ˆ÷ycä“u‡ét«}›­‰h½©:ŽÇâ®O¿ËÝ®¥‹¬Í:­£ˆuÍõ¬&ˆYËw¬«‰Êu¬ª…É»ª)}pÆ´¦ xþÀî¡ws¸Å›ät¸|Œ~&½©9‹˜¼½«|Œu³}¢¸‡ÁªGœ†«¡ô•@I¡‚’-u{¯šuµÆÏt·¥•–o–”ùƒˆgø&VbÄ l@­‘—öod²ç—£pC¾áž¿zsÇ•©®…Ä©èŒØ¹I¡¢ƒ°`œ)ˆž¨šÎÖ§Þ™p‚¤•â|*£Ók ¦q‹Ú`½§›rkϰ/š·X¿2¤²‰íÆJ©‡öÈ?¬!~ŒÅu§pqÚÂë úiÁ–×f亹˜m3¶d—üx}±ó”št*ž=„ä[ŒkuNG‰+x:Ya™‹‚”^¦ÒˆDa…ŸY„céÙ{ h¿ã€ôpŒž°—~ƒ¨C¢1ì‘«j„—‚ÂuÌ_0Z| [âšðçrÙ–òŠuw‹?}ek‡ˆ¹y\di„tIV~ÉkHLå~emÏXHˆ;u®ckžc‰'jŽ»T Ây|ʱô‡ÊM²×‰ÈȲ…c¿Ì©©Š™¼£Z}žÀ6¡ÎraÂ&¡_o]è£Ûw{Ư¨äÈ‹«ñ†öÁ­§À†¼½“¦åŠù¸\£·'¡“˜¹Ü£‹»³+žŒ„3—ë…9qH~ioÙh…w^l+môŠ‹}U|Å¥½•M‹R¿[§KÍN²‰õÓÓ¶±‰6Í²ŽˆGíäˆã»wªÆ‡l³4«Š+©8¥Ø…’ÇŠ¥s{ußnŸhÇ\-YécmVóSeéP¤RXgcVEVh"aHcÅlùzy~~K‡ ?‰K‡uŒ)„÷q%rÙjL^^EVHQúWT^GëR’T#? OEQY=K5O:€C4Pþ88;qS­;Ð7ˆSôŒ ÅVµŒƒÁq«5‰Ž¼—¨ý’ð¹¨2‰²·ÄŸ»z¸¤›Šxf»“š!vbººšt S™oA•·Ž}r…§6š‚|»©¬,Šó¥ßš«}Ó™u”Àƒ0‹ÆƒþyKm4`›OMZHKœ:“_/M†<­dyN‹9ak•Q˜ú„‚œ¬‘U›°‰Btk¨Y‘FrW±¾˜»tO®š\岬œˆ~¼¡ ЏÅת‚‡$Ãë§ñw¿5Ÿe%½ž›Cax±¨’Ìda­`ßpﮓ¯vž…‡e,†nëOÒwúeðLM…póM»•byêRÿtÂXë¯n—bg}mb€…ìsVa>‚§r|`)sÖfWßl]iI1{ûhPLë‰Oxb‡ÉvÙbû~uVa'…‡¢tÞ“¤Šq—Œ¸wéX‚:k?\å…wap´£r“¶z!©¤i€EÏN²KŠË±Á‡ëÃ󪅉¹^¤Zã·P¡HƒÐ¾­ŸVw³ÀŸž#qNÀôž$tÂV£{IÄp§~ú¿½¤¡O»•£ø†€µ“ Ùˆ¡±Ñ›°…¯«™‚*´g›¨ œ‰ñn‡„õrPh?}­o~mŒ„r¨nk˜¡…B|“¨†•å‚sÂq¨Y‰ìÑçµ;‹áÔx¼¸‘Ï“ºÓ’¶Ä̰Ã2µ[¥&‹³¤6šài’ƒíjs{œp(^3oßiCfeh.dÆb^x\…]ÁYŒVïY°m¦iÒb‡Ðˆ}`’^–a‡Ø‘(“T,—}2pÁiÙe—^BX"]aW}G&UÉS³?+QS¥>•LcRä;(ES 6:ÌQ;õ8’O«@C?mO†A¡EæTH‰LÁS _:]‰R}ŠÂƒ§xª\€•z­nŸ“Ч„AxsPÌQÒP'B§C‰I>@PDFK¶C´GQXJÅMÊ^rSÇZr÷pXuo€D~{{ßz¯t=‰¥„ w„y‚sêkXIBKC`ˆ;ÈFQgéBÒN\l–E!P‡pâF©N_omFµMËmHQ¶mMÓRco~]H[Ho~n€k8s+tWw×{Ô݄҄Pd%h8r¾FÇLócÌD©M8h/@ŒLIh§@MÅhDðNÏk G‘RoL0VToˆMWUÚmèP+]lqs[m]| j{u‚†bXníqg“n t*muuz섈~Ž÷Š¥vƈ‚q.‰Ÿ‡[uê¢t„þ«ãž€Ó¦ç–7y}Ÿ¹‚oñ’Z…kmd‚huý’WŠñs‘ ±–1«›ê„¨®s¤Û”£œŽš’Š\¤ ›l†Ã¡q5†ú˜ê—Ü“š‡Fäq {k^\M‘s|]_˜†“ýu‹®]¨Õ„•¼æ«3€T³j™5vó«œN>¶I£A‰Æ½4©Ú€¼5£ø{þ¿£¡#{Áˆ¡|©°”šk}¼¤]šÚ´±˜¡ƒiÁj²Œ=º³ª‡ñžš’XyÞ‹a}Aso•Y[Pù[ZI1>Uc¦OCfeN³6.túUëDùsšnPªˆ†||_è~yp¯Dot1_ù=kTƒ5cßQl;Z[ÒOéC8qºd»N€|ánøO9w·bðGŠqj[ƒCë}ÆtŠ\Ë‹W„êl¼ŽAˆŠrMyZw1lt¹pÅb Tq`B‚ƒrBf„•¡Ž¹žˆ›ÀŒjž šOþ«žžÛŒŠ¹1¤&‡ôÄ­­‰•Çp² ‰ÀÇü°\‡Ç­Õ‹öÈó®ŸìÄ.¬°ˆ>¾ð§¯…c¿©é€Àá©å~Ò²¤¤Øå°æ¦s‰S¸“¤”‡Ò¿ì¨±º§8”2»¡ª!’N¾¡«N†J»š§³ƒÓ­mžeƒ²v¡ܳé˜Luh¹~˜|x¿3 GyÇ4®FŠÀ¼ˆ¨‘‰•ž•ˆ6eg•ÿuÆC¤ŽMnÄ@÷ÏuC]?‹ÝtUÇŽÕq&HËŸqKmœo¸r”¨Ù÷Ÿü’\iÿ™ÚŠ$k ï•Á‹5•Ï‘'‚‘nˆ]iŒ0wã]Ý~|j,^±…:x“l¯––Ö€@ž—z‡§šµ±¢—…–¯Ì¥˜Ž®Ö¢ñ,—g…"jÇ„i)=cyë\!0*u_H<ÊyÒcïBõ}ºj¶GA}•k7I;€Ÿj%G¬{FeðA¥‰mUàlCW‰HÏqYNDê‚hšIjƒ×i‰PA}ªh#Yü{õiå[çvb¡Ræn1UýJikùTEÕk\•E¡pj`õJ£y}cÇM•zÃd®J|}ûpÒTQ•K‘s~~£9¯‰ÿ™»‰op‘x*i¶”߇}´*¢‰ñË„°'‰{Ó#³‰gË䨢zmºÝ›Ósl®Ò˜OÛ²?›Ä‚CÀé¡u€ãž¢ùxÀןësY¿Ò `tÓÀu¤FtE¾£‹u²´`ã{6§¢•át5¢•Œñg’ ‰¼cÛ­°–t©Õ–ˆyÄ™ ŒÁx —2‰;z陆…Ns‹¢‰{±ª–s¢¾]¤†éÐĵՌ‘ßFÊˤyàhÎo¬9Í„¹Ñ”ٳşé‹äœÖ©}ü‡:t¾_wFjäW±{Úvwixs¥p’cÐ]*]·S³YTØP·y±rÄ`†‘Ì‘¨}Ý—È™ó†7˜D–&…‡OÖt…nñjmd¶Ys_{YGºSoSì>=PüQk>ºL™Q<;ˆEÔS¾2n9Q):¥:ALD+DøM×DkG V¶I†M¸Wùa±\´Uû‹Ý‡Ót~žÒ›†É›Â•~ÏWzfnP„QËTýAíCM7>µA±K EµGŒPCNZR` cCmŒw$~‰„#}zwôwí|*tˆoRŠ„St3z.v¤jôH¾N>_ò8øGc'A:NXhŸF”Pºk0G-OœmGKNmíHœQnN|T¤o fñbpyrznŸrßxáz‡~Iˆ¨‰_ˆ¶qPržwÔLQZeðGiN9f?AŒKdNA7K¿fñELMÞjBH¯R…nÐL VïnÛMÑUŠn¤Pü^stgÅz|„χz”‘Ÿpœ|Ðyf¡n±qÂyÀR”¡– ‹W•G’hYŒi†±oƒlè{¼¬W¥½ˆç­= ³~ƒ¡ê•%w—͈*m‰Œï}0j¾ˆSxŠgëâw7T#¤—ˆ5V1¥ñ‡bZuŸÄox¡ŽÂ¹i¼•£Î\ψs’U… vs}lÀbÑ\mpScÊVy£om^è‘׌—s󦢀 ²Îš:s ¡¶‹»_”›D‰_o¨£®’W{‹»/¥°p¿Û§Ã{·Á[¨©~™Ç?®‰ÆÀzªKŠý¹@¨ÑŠvºkªË‰°Ä:´qj»¹¦½I™lƒÎ\Z†ÚkƒVôwoY²Mðh"QsH€j+\;N±lUuARzIh¼P؃¡}j˜¹“Õ{ò‘Ô„æ]wy£bhAÎ_áKÐ5OZLF@][[NkAjp^b C`yrjJ‹yUeH²€´hÎ@Ø€…gêAÓƒ mCZ…×oFGˆfw Z¼™M‡‰f£¢~4a*‰³vB_—ˆ¶rú]Þ“õ{µfU¥Á¿yí¸Ÿçƒð¿³¦„“ÄD©tƒÖÇϪ·‚ÈÒ«:ƒvÄ„«v„Ás¥d€í´ ˜±kïž‚…³MÚ•~ºRZ˜§ƒhœ¦}“ƒ{S»,§6‰Àw®qй¶N¢‡€M¡’-f®œ ‰{]E¨•IlÌ´tž[q·§A•égz¢ÐÀh?«s–Ÿo ±/—îqs¹œÇv-¹3žtÞ±§œëyI±èžbŠ…± 1ª­؇Q«z™ä$§”V{]·ŠØp¡(Ž\ç±À›_P^¡vß[VEy kC{“t  –‹q¶VšimhÀ8Ÿo7¿AžŸsƹð™£wĶ0–ìv·´–1x?¢ Œoï‡GrÁX£r´_™J±nJ[äEdrË]xIozbgÓR¿‚Wp™WO‡$wbŒƒYuGiÑ€jnbc…mqÜSù‡uz&X‚Tv__¬€§mUV \jGˆzEW°›•G~¨°I§»ŽÚ¡™•W~—Wˆs)“š*½{®V²Î†·(]ÊF«³„À¿œpƱ”„h/¦Ãqš«º”{Ûºzž®‡Ãƨ­0À›¥Šw¾Ó¢]tiÀ›¤Bt¨¼¬ t?¯ ™Ìuàšˆ‰hD–lz{P•”yoFT£KŽºcÄ·&Ÿ±}¶±¡zƒãµlž=ŽSFéH¸RI/K>WKKhNZÝfó]©W°ŽÏ‡x’ž`˜ˆþ’?ˆ‘w©|u»ník;kölsO²PæW-AÄCXP GhHGS§VZPc¸oÓuïx…ƒ^ƒS„®z­r8tÒyom‡€ƒy,qZoîlwiÄFMMøZÕ8üGÂZj@°L¢]6FP!dQF?P jåF8P|k½IcRïm¯V©^8q_{©wx‰6…q‡(ˆ4ˆájÛŽ.‚Œà€ñ\o]jHýL2]aAJ*aÄCÌLgÙE^N(hÚH]Sòj6KßUùk[LtXUlŒKÚ\5l½X1kÚq¤zÔ…ž}"m¿vîo›_ue‚bÕsujŸ–{•>ƒ÷–ƒ’ÍzÖ®Œún œë˜†¶¬Tއ·§¦ƒ§²B¢´„ÿ *—k€I—‹y4üy ^”ÉhÈ3Ir!#ë~Cb›Kÿ‡kîC߆‡mŽ7…âkÄ4+™‰ƒ®[ß¾‹pjyvÊY]’™‹Œo¿–¹¡|„“€¾vŠp|…hßt;о{\gÆ™Šm¤>“Ywµ×¥½u®§’¸\£Ë‰:¬š™€ë—~MU—Å|‚@a’^x¾Aj‹ùr£D‰ÂoG©„×f¥?4…ÒjA…‰Ás»Iˆw>Q6 ˆŒPhwŸ¤l™ž‹’i–ã„)] –~~ûR< ëŠe±iš¨x¯ºd¡ ¬ÀC§8ƒœÅ]«!†ÎÉU®•‡ÅÈL¯ç‰fÃE¦Kƒ´-—m·Ÿ›ˆÎX –µ´YtŽGwZP“S}ße{¦æ•~=¸$¥‰…²ëœdzžjŒØd´šýŠÌeõ­›šÍuÆÀc©üy¾ü¤“u¶¤êvù¯Žšw2©•!sÞ­O—¬u²®>˜&t§î–¤w—ª¾Ú†²c¥8Ž)µ(£ÍŠð·Ÿ}…·i›é{÷¥‘mmKœÚhœ—©kx›m ˜ˆxZ™-Œì„L§J—>€¿ø¢ªw‹ÇA©ŒyÚŨø|%Á¡}×¼·šw§»BšÖs3«Ñ’Ôn¶’[€b4„všY°zrm¤OrŠeóM¦{Õn`Y¢}Ï]ø›ŸŒilÊD“µ~»¢•Ñ€ê©Ü–~uA¦—[pû™&ŽMo4©€ï_?Œdy¨Q‹’“„Ìh£æ˜.‚O·±¨à‹z«øš²™c¸uYšNv¸d¥Ö‡ëÃP¯ŒÖ²—~oÔ¤1‡³Vࢠ•âm„Ÿ¼€—ÕŽßm¥§a•>vÀù¨}ƒ@¿‡§ú{³»¡Ìv@¾y¢Qx€ºAžw­Š–tr”œç…Ôf’Àv×S¥säEH¢Š÷Z˜¾d 2yŪ©x€²ÇªÉ} Èp¦ÎxÙǦ¨zpÅv£~zÈǦ<€ñÊjª-ˆaÍ%­.‹zÎb­¾‡mÅY¤Šƒº­ž[‡Z©—?ƒu“ƒ–q&…awácˆ*~Eh]¢y}du˜n—axt kkbF†ãy¡kô•ñŽSzEœÙ˜ž†f«Í wc®@Ÿ$‰çœ²“´sv/rùY PÒSúP£DðOÅP/DaP—SßF§Rj`{I÷Of£J3HÄ[¹NˆPqUÖN+QÂ]U‘WU`^xem_¹’„†µsÑò”g„y‹€jsÉ€¬v‹pÌŠè„o~KrVnXjM]MvSxH‹HôS„QYT>`m¯o!s`ƒž€-us…¼zmvG„¯}µw6lÌi|iŽG…KkU´8IENS=_JEUE#PÕ^.FÜPØe0GÅPTiLdUÿm¹aŠhuAŽ(‹±ƒœœ¹˜íŽe”’^Õ™l•ÈJ”>6‡BwÐo€nˆM)NÂSàA‘I†ZþC^N¢d/EùPÔfýIýT¾h»JQX÷hêL|ZÞgêM¨[ïcÜK/`ªaabJm—eeÃhØ^•\¼[o_7aÛdNgG~@~hvñŽ‚‰Mo””-s ©²Ÿ¾Ì¿±T”óÀÚ¬ˆYÁu¯³‹ù´h¤ò‰&¢…”ò|ê™k„5``’TkÕ.f•ód%’jeÉÚ‰rcl*„‚Þ\')ªƒ—]h%QÔY9"'}![8,ˆ|p_Ù8;ƒ«o%J˜½v`•À‡%lµ”†Ih5›Ê‚âU ŠÕr°CÝs±\4G"{6bºHô‡o­G±˜ï„nYT±t‰€×¾S©v‰Ø´‘šUs멳”FjÒ·0£˜ƒÛ¼™§‰†Æ¬—trË—Ò~YRÉ–y{ÞSøœM†hd½†¿rLS‹z…g›}…2ed¥-‘*t¢ž‘ t ­Ì˜ŽyX¦T•ýwéƒrQ—^ùLC;áfÄUDL¨wg³H`%rýH˜r4tÄWª„ {·loˆß{wd†/zd·Œ•‡\sŽJŠº„ÌvKgàRÀt‹_²F mÃa6NsÇqË_9u9f}QÚ9ƒ oš.•)‡ý¢šÍгsŸ[Žk¾ì¦Ç­±Š¯ÅUªW‰’È ®Åîª#Œ¯Ç¯gÂï«’ˆ“¾¯‰æ¾(­!ƒMþ®ôšÃFªØ„öÀ¨¬}˹®£fŒ*¼³¢­„Ú¿›¢×Œ;Á묿ÊÁ¯}ŽY©J‡àÁá¡Ý‡©¼n¥™Ûµò¢ìŽ"Ãd±.›ÈÇ¿´kºNª›”Yž5duŠ™‡–_Šßs‡GÈÄfz=ë~Ãcº9Xtñ_Cƒ&rÇ^—â€Ç]Ô•ý€ÛKè{Áe7eŒA~(Ržœ=ˆïR)¤Nàl§lœjšÙ˜‚‘”‹bpò†nIdH€·s`†Äz‹_Ú’ ‚™gª§Ã›‹\½1­J“Ͳʗ1wŸŠÿiU’ÖwwEN—)~¸?µ™×}°Bì•TzšGs’x½LIŠþpQIˆæjñJøˆ2r}I€l¨E¬©x•qp³‘žoxͳ¢mw]³qžÒmV²H™6gn´Îšjl©·Hždu%ºúžmy—¾E£«€mÄ[¦D‡ÐÆt§~†‚Å~¨)„ÇÀt¡Ú~ßµ|˜Ìp(¦¸¯e—žl‰ÑhÖ•Q€ýf²Ž zmd³š9ŒwÁ¯·„–«ø˜ yÑ‘ŒXiàŸ§dmï³á¬xÎÃû§#yÅ:¨’wŸÁó¥{K¹‹ ä|¨«­˜®w¾£%“u»ŸÅŽÑs…›ªŽÀt~ž —H~¶®Ù¡¶‡³·À¢ñ„Pºµ€L¼éy¿²ñ˜þoV£c”ätG ˜•Î{é¨}™,~¬šFŸª›Ò‡Õµ:¡«ˆfŶ©½ƒBËI¯ÿ‚ÃÉ]¯„©Å>¨œÅÁ³ž©zJ¼t› u®Å• pNíl8“Z‡›k¸„“uJ] {˜jiS´‡v´[Áœ‰tbP³¹›^u-·§¡‚¿|¨[„eÂñ§¦{Ó¹Ÿâsç¦Ë•ùnë˜\‰£ax”&‚`^•›µ‹Duͯž®ˆ¼ ©·Š}®*› b™ƒ‰Iqä“5$i)£ï‘ y8¯Aš{~Jž¬‚èV$•Øpž>Ç”Ž‡oa‘¦šë‚—†…‡sj ™f‰ÒjÞ¸l ‰€º¼£å|»ûx۽͞¨x-ºÅtõ®O—Apž Š·jX”°z ]ì‘dxkQkªy’»gqÆ©‹|³È{ª_}(ÊB¨ÞyË=§qus̹¨&wvÉš¥rwÉ{¦É€ÉÊ(©4Š Ê˜¨‹uȉ¦_…þį¤L†^¾¼ µ‰=²á›Ú†»Ÿm‘wÿœ‚bh¶„³yc|Ns°`ª~öwái.‹ZƒÀr°–¤‹òsñž_—xã Jœ×ˆV®z¤ܶ¡¨ò„ƒ¬°œ°n:ˆi|Y]8\GN/IžRS²B®PøVHæ]@gcžlOt½j’flYjCe¾bw_ÉbjfønµpÉm’•†Øl¤•}{«¡Ø—¼‚Ž …cu‰£~ÝsÔ—ìŽ+„Y‰Ÿõt©]?YJW;HH¶R¼L*NT[Þhh…psx{\}°ƒ|xåtý’‰ -˜Ù’]‡„)€šv…SæTYh;5D*OJ:fGSg@_M¶Z»CÆN _{GöOgwJÉRln@`¾h»v­Ž¦‹aˆC¡œM’E™:”2Œc™I’`‰ró”Á‰Î‹¾€àuý[dT”ToCJ|UíB0OßbåFÔRöhEJlUÔi K§Yçg)M»Z=ecRM_bgPZxlPk@q1xIq|pðm3bŒ^K[¦l ^oK€«k$y£†§Ž°ˆæq=žÿ’Í{®²ò¦Ô“ÏÂŽ³”Ǧ²ˆZÆà²Æˆó» ©†|ªå˜#z£ UŒiŽ”@pþ8/aÍ"éŽdç*=‰}eñ+m†Øb'(±‡Vcb)L‡ÚdÓ!ψf]! ‡2e.)ñ†µekB{zc@JnœRHCEu™WÚEé„ám%Qç9tzë­Ò…t£3’eoµ¡Žiµ±,œ+|îµ>Ÿ{w²@Æsp¯§p ¶Ÿ1wˆ¸´y_›§†Wb왿†Nh»©–‘%hÖµf™t ®§• oǪe‚nìž½‰Ýl—{-c•L)\J¡@KcRNÀz!iƒLŠ`ƒßdàŒ+hu²œÕœîˆÏ˜BgyfŒ‹‚@odþ‰…}qœÜ™öŠ”‡‡/ocÔv+WàybkdS{z{«kk|um1Z ´~lQ”¢ŽÆƒ+œ7–@Œ›§šn‰@·ä£c‹Æ¾G©aŠ:Àç§Â‹·À†§JŽ÷Á(¨ÚÂã¨L¾ÁÛ¨Œ ¼¤©1‘5·Î ;ƒ·ŸìwK´!˜wsz´± ª;šèŠ›°Uœа´“Uº¹‰£Ç’B»­#ŽI¾n¦O€G¹ç˜¸xB¯ÐšâA¤(˜ŒŽ°¾Ü®•±ÐÃÁ„º_µp«{ªŠ9~ëga’Ù~¿N÷“Ì€³T'¤zŒHœˆGp¦AéƒWx¨RC”GŠŽo§˜&sT¢c‘µk¹ˆ˜vXHïˆÂaì¤î’üg*½. æxÓËʶӑ`È›³3ä§“QrQ‹{t}Up~Þsua4‹õˆHw¯‡{ƒ¼q¯•x‘_ƒ)¶$¨®’j¨4“w&”¬xcV$ˆlAÕ“#w©@—WylD&™éVú•V•Z±®x¹Y2Šªs–R£‡™pÆH¥}¦dž?ü­¦˜wB½‘¨¼Ä5°¼~%Åž®Cz?Ææ«2{Ãǧ0x­¿Â£ûs†¾  ¡s¯À Ïx¡ÄÖ Ù}—Ä(Ÿ‘z¶¿ì¶u8½^]uR¸º™Nr?«Ê‘ûg  «Š´fP—ÿ€Re펔y`c3mx¹÷¨ô޲° „¦ž°‹{lò¢—lv´›yt%Âá¡wäÇ7¦(wÆÌ¦¼x+¾;¥|U¯\œ¶z2¡j‘’u ™×‡÷p…”&‡3m}–ŠŒÀm?¡Â•ŒuSªP—Xrx«““FmT³a•wo+°•¥n‡¥ò” w ¨=šV´h¢…eµŠ¢vƒk²LŸt…É»ó£Â‰MǪŠÌÕ®~ŠþÊ­¯Œ‰ˆÈ}¬±‡lÄØ¤æ†¾ŽœÃyʲ֕HqH¢/ym¶—÷ˆùl=†duX]$€—lÓXå‘}ƒb©¤ôf±»l ±wˆ»§£€¿ˆ¦€ì¾¢v¡¹ý›ÍpŸ¬ñ•äoäœ5‹wg˜«ƒe¢ÐšyY¸ ¥ ‹7¿sªÃŒñ¬W™Gð• „mn Œ@wËa™¹†|l³¢8‘[q¶šÝð[)”wíM”ÅzC]v[}2i­‡PyMd·”Žse¡¯Æ—þuâ·â›@vä¸îš½sm¼bòs» ƒr•°I˜3o÷¢L“iP”<{¥Z¤“¾z„U˜²æ˜\qÉ·®O€ÝÈ÷«-}Éo§¾z³Êd§;xÌë©‘xzÊ+¨iy"Ês¨E‚ôÉÑ©¨Š¸Èk©¾‹/ÇJ¨ÛˆÌÖ¦@‡™¾K£Š¸¸¡N‹ð­%›}ƒ˜e‰?mŸ‚uè^»s kÊW)|x‘i´˜¸“჌¥›Z…j¬÷ ž‰î¬ž£)‹³á§¨‹Ö²–§Ï†§Ùšdt%–…†`•jíeMNJIçR SBˆR*[DOµjáqxHƒ†Æ†¶ƒ©²{7wxKn4uœu†‡Š_墙Þ{)·ƒ¥‚…Ž©ýœÃ†|–~ަ}È“‘Š¥œÎ’8ˆs’“ˆýyg[_SVMEzEïOKSNƒ_®n[oCx[†2„-… „¸zëw;’ˆÂ€Pï•\‡ˆ”Ún7d¾e$cè=ÞE¢P ;fF¶Tè>óJúW\CSM¡WÚG¼Nœa›J©OÄj1\Pežr…\w„ˆ›‡•‘l™ƒ’»Š—­k‚ÉÊ–Uˆ­“ĉK€›g ]j^{EhJ4V}DéP/fnH£UŸkJºWäidL-YxfPf[3d YëclömŽw«v¼„5Š—~¼ƒáçqw—tñ{ÿtÿˆw„°„ ™™•Žšœ½ƒ¬ý˜Ò‚»¸;¬¨‘ÅÄVµg’óȵ¸ˆ£Ä§°Ð…¶¹ä¦r…R¯ô›°„±¢ –¼{e–¶{.L¨‹èd2þˆ.b¥.K‰?fŸ*·‹Ui1'¹‹Tfe)³Œ jN&vgkb+i\ ˆËa*†b“.ÃÙ]!'xƒg]Þ"Ö†©cÇcƒeb&À€1c=©{[„?zwXöAµ€ cÈE•”Í}c—œ[FuœbŽ0q¹¡ú‘duK³šœÚ}O´%œöt]ºH¦H{µÂ᳎†«Åê²+†½È¬°ë†3µ[œüwƒ®˜r•´r™)o¬½Ÿ˜y¼³˜àkÜ¥AŽ;gÔšC…ì^xzuc§NÖgÃRNÝggUWR}{i!N¼–bwŽŸí¢¶‹¶¶µ ”¬ó¤jŽê‘ôˆÀ{Ž„ÙoƤžO‡ÐªŸÙ‚¦˜”•£xûŽF‘1€§Cˆèw¯“?zHK¨™‡$_²œßЏbÕ˜O†Q_ƒ•Їah>å+l«™±o6¯*šÕuÄžr,b·hŽøc%´œTvýÅR¨Ö~þË6¯4€Ï¡³DƒÀê¡|b›…øhÐ…àxjd'{Ž€ŽN†Ëг‡Þ~£Æ™6‰§›5†?g°‡l9Gã}@dÁ>{‡¯luCšŠ npH“}d•a…oj{˜k<~Åd˜Š±vSw‚YjCg—»ƒ2g×§ö’7s½¶"œ¯mÛ¾ ¥Ov*•§ç—½ Ÿ"yµ½"Ÿîn[ˆ¢»q›Åa£%uKÄŸtr?»U–šfÔ°ÌtbÇ­ó‘PhÖ²”pZ¯Î‘³lfŸ †ºbñ“t¨YŒŠ}n{R8ãŠJo‚½Ÿ«ÔŽ¿²–½†,›{†Êj-¡LŒðk|²­—`sNÀžƒu1ÈÈ¥:v?Ç7¦uI¾‡¢dwÚ®››'xcŸVàsÀ–6‡œp‘Ÿ„¹l¨Žý­cØ“eƒ _Q™…Yú›†W> ³…O[. ÿ…Kb> pu¢¨5š„²µ®¤(ˆD¹Ì¥ý†e¸¦¢ð‡7¿c¦h‹\Çf«wŒËš­‹¦Ê®›‡{Ⱦ®yˆcö§„„¾´Íy¾²²”:lA¡‹sbî–œ…xcìˆðyÓ_œ‰ÿ|÷kœÁ½rƒ®˜½mM¼^¢)yÖ»Œ¦J…ø¿ä¬ý‹ð»ç£ãƒ´=™˜rƬO”6qbžÒЦj šÄƒÉeá¤ðjsD¸ˆ¢0…¦½Á¨aŒ­ë™,…"”‚›kãˆöu.\`˜®ˆüh­Tšxs(©–Áo× ªãn6£ÏŒßsYžÀƒFg4˜ë®`œþ‡h/ª†“Coæ²T–o‡µC—vn›¹›ynF¹?œñn/±¹—Ànä£4ýhÈ”b|%W½Þv?Nð¨ó‘qlúÂ?¨-]Èj¬Ð~jÉŒ©ù{‚É §¥x@ÉÖ¦uwÛɱ¨ÍzŸÊ«¬+Ê„¬ ‰yÈ«âŠiƘ¨šˆýÃQ§Ô†@Àú¦ôˆñ½Ç¨ÈŠ‘·ÌŸÿ“&l•Šz÷[±zþqiXµ}Lzmj_˜é”¾‡P¡Všôˆÿ©²Ä‰Ï²Ä¡)Š0±*žA†= 3˜‹áu‚Dj•ŒMx¢UÉk®eqLçLáUßTyp :˜™ƒ¿™’kt=—!Žh‰Ÿb˜x{g¯õŸè‰Èÿ³…Ž[ͬ¶Ó†¿Ì ·I“Iǰo™#ÇÞ­è”ÄÀý¡è†Ý²™›Š‡bŸ ‡Slº ëñOž ùP–,Ìh|}”asI€|Uú5{ŠÇmG˜‘ªweSÛ€‡dr¨¡Nßj*œ ƒöWVv ]>~gÑLZŠøg[;öˆweˆ7*xèX; XkžG#‘y+Q·™½…Ä]  N‹^`ÐbŠ­^YŸ•Ž>iõš•†Tpžï‰l\ìŸQ‹Ñ`b¤JÓ`E¢¢Žo^+°—nÏÁ£‘}!Èçi{`Ìë¬ ~’Èbªx#±ñ˜%x~•ö†ukõ®Š&w‘‚‘ƒŠ&ŒûˆmƒÐ‘‘‰ót ‰ q·IQzb?†~æmƒI‰~FlõL¡³k¢X´†ssfˆz-oû‡Q~-‘Nmɺù¦íy!»¤`v»³ïœAwSºCŸó~¨·2š•t"­^“álp¢ŒiR¤„Žxkî°¨”+qq¶[—s„¹ ™EpÝ·™¬mJ²e—¤m©§‘Ÿj„™§€hYbŽEt]Lš ‹lk"¼%Ÿ»|±Çd«¡€eÊ«7}•Ês¨[zeɧyEɨ;{bË6¬q‚aË`®¿‰ÈÈ=¬É‰ Çö©M‡FÅh¨v†9ÂW¨Ë†éÀ¦©¢…¾¢e}“¬–ˆsEžêŽÕne”2‹ñpùàˆƒvƒ•b‘ê„—´‘åƒbœ«”Œ„ޣ땄ž!ˆ‡}èpEh…XRhêTÐHOZkV¿K@M3TôW'GÈVžg„k|‡~Ï¡–b’ Žt‹…N~ãzºxÖ‰WŽò‰,®¬¨ª”ºZªŠŒÇ¶O£V‹g¬œæŠ7¦©šWŒsŸ”˜ÐŽTŸP–,Œ1–Zˆ2rïdÌU.L˜F‹D^LÅNO.^NyvÍy•\´‰Z™І½—#ŒLƒBŒ¦€^BFxGWHöEiW3N¼NÅgr^“h`y>|Ð~ò}6•‹xpªšv5¦]›ˆE¬C–ŽÞ¸#£²&½<©vˆþ¹Ý¦Š„w²+žf…Dª`ŸÞއž0›‰þ¦¼œ£†*©p›l柚^)–›_~.ާƒDpÓ%€!d—£éNY˜ô… P“&€ ^W“Üà]c–@}[;—Ä{ù5&†fr9·…CiBFbŽAos>Â’FlÀ.ÑÇ`|,GŒ=gf9RŒ§eÀ*8Œ¦f.™‹œf=OKmv3ò‘³q9Z˜*‡Ä_aŸÝ™×ˆØ£çš Žr™ÐŒ§Ô™»‰òyB¬È˜äô°:š—€e³¤£ŒE¨› Gƒ¿õ¥Ç}Rµ —‰g¢ÉŒšU–á‚r™‡ÚMã|ÎTÌ0ÊjµNöB,mîT”ESwÆf©R‘ˇuwž,–ÎY—VŽæwR˜¨Œ‚r™ò‹žs>“Y†Ù{B‡ u8iÍw‡]=H”qÔU†BR~èm¾T§–d’u}«Ä¤nŠÐw¹CŸlͶ?¥ÖÀM§ð”…ŽL‚ì_÷†Wy¬Sw>kFJµ‚*o‹Tó’ wüTÒ˜Ý|.TÇ›k‰)qÛ¡”Œ±€âªK‰—mŸö„ëd³‘Št|PêÃqIÒwÍQ—UaAzvõQ}[½;ïrcUuED„¬o$YûƒìmÓ>c‘ôx·D;š‰Ódÿ–ÕŠ@o||fPØP³<Ì4´Q¸Bs8w'bƒK¾ŽÌpð@Ù› €8UŒž¿‡™aâ ÕŠ5]€¢m†²D£ƒ† Nr …|Qã™k0Fe‘±xˆI‰´obHÿƒ0gpDÃ{_\®;”’zy‘ð|Å\v›ÝŠÍcù®.›s²Âà¤kz¾Æÿ¡¹wÂèžÔ{Ô¶‰œi†9ªÒ˜°‰†¨ç™ˆ¨Ôš²‡×Ÿ–X„¸Ÿá“Ï|2µk¢‡Šâº¾¨4ÎgËû½ÈT½ú¤Ç¢Ù’fx¥—‡… kÉ ¢Îv¨¶æ›$|Æ™§ x1Éñ©qÄØ£jl½ Ÿlb³€™Xoi¨’ál£^lrž>l¯“–€÷^)jDKy•^©?£„kmöNÅ‘¶{$as”e_˜‚†e!¢’5w°uƒ´  #…_µO¡…ǽK§T†XÄ «#…âÈ,®Íƒ:ÊÑ­ømÅr§Û}ß¾¬Ÿw¾µ:—hᡇ†­Ué•R~6_Ÿ¿Š|S­2ð†²Õ ÞR¼Ë¥å}Ó¿\£yë»Vœ¾oŰª’íbɣш³`õ ;Šp§¢yPuôŸXmœ%‰Òi™õ„PgnžµŒ‡n˜¯X›.}@»I¥À„ë³þžÆ‚Þ›‘®n“–»†œd•£’ŒkT³˜™ih²º/žle}Ãã¦Gn7È—«ätÿ“£‚uß«U‘itš§~fa ž„…¢n±|”½w¥¼)š@u‘À`š5rÿÀÝ™…q¿zš‡s:¶—šræ¤3Õo,ïˆgg½¥ Ž¢e¯¿µ¡DvrÆ‹¨y©Çl¦ {>È"¦|,Èi§´zEɨÝ|¸Éà©«€bÊ{¬ÏƒÊÞ¬¬…±ÈQ«1‡£Æn©†CŨK…ÕÆ›§0Ǽ£,rж‹š”nÙÚ’§zõŽ…Ak{ˆYwœ^ê†ær‘›º–¯ˆpž¹˜¸ˆþ›•냎øˆY}‡fýhýmúGRNŽ_îC¢JWZ&FÀM—X§JcQ÷W.Nó]„hAl£yqzu’±•®Š%™j” †á”‚އºžB˜Æ¤º‰¨Ì–YÁé¨×‘½½¦¤Õ´çjo¨N™þŠÄŸa”͇œÑ…’Žä©zza_^˜LCR¿Y‚Wô]‘d*j·kZm=Žšˆ €Z­­6Ž.¯`ž&ÁŸð–Ê‹Žœî”T‰H„A‚°^Ú_ÜdJ{M)S|I‘MU`FpLtXñFÔLT^ûJªOLežR÷Y„b®fTkcBý‰7„CŸœÄ–ü¥$›÷2¨˜€…‘¡û“_&ƒÓu_mûM£PlV¥?"MeÔDQ f‹H§OŠ`ÿF–F¡W˜J¦AèSÁM…N~eëk¬z|ŠdŒÜ’•“mŒç€‘©›T‡“±B¤j3±}Ÿ¯Œ7¶•ž.‡ì¸c¡j‚ ²*ži}X¨˜”yŽ ®™Y‚»–õ‘~“Ÿ –™}5 3™»€ÂœÜœŠŒü—&“·ˆ4’!H—‘Æ€{œÛ”#y£žâ—Ѐ™l”Ù†ºS˜Š‡ôžN”qŸà‘5o?‹} `DŽê~Zh¹•PZ\‡›ÞyŽOî’°jm?ßrjECÿkÊF}™]ƒALŒîq¹J—¬h˜Êqc½“£ØwµÀÛ ßq‚Èr­È;Îôû‡Æ”™ÕpÜ¢w‚ÈGF{åc3IÛa´T$JŒqädóJs_hÂNŠª{òp\‘TŽiîŽJŠâr…r€¢Z«”Ì‹‡lgf”§ux7gBs%Wa‹2uÌI“=w¤KíÊm[[ü‚±^‹P‡zßnTY^€ŒtgT”‘S{SX[žk‹ˆgгœxw¤Äî¦êxÇÖ¢1uSÄž¡>&¼p¢ªŒ!²…ž×¯Rž2®qž‹ÿ§ršˆ©dšU„WÀ²×”5×øÌ“³gÞ£Ñù².Ó¿€šð·¹Ÿ„á *’·vmœccsТq¿·Ó›VrÆÒ§ÄtEÇý§ q¤¿ª Co¶h›àp®8—óm¡§“kØŸ Ž?i&”À’`¼€ÖjKF­wH^á=ƒ£k!HSwÜN¿‘ÏyïL–‚‹[Ï {Ypͯ€›—¶I¢>†œ·Ü¤‡(½µ¨p…%Äf¬?„<ʧ°…i˯¶ƒîƧ§í}-¿šžRt ³–¾f• ú‡ëW™E…8`§@—J{u·‘£3…|ºP¤:1¿¥®~¸½õŸ%y˱W•ÖgÙ¡„…M¦˜pzF1ž#†‘e¿¤;þtn¢1]p¹¡³'oR 6‹øj›¡AŽ&m˜®º™©y|».¤Uƒ@´}Y–5Œrj.–ЂŽ[Áœ¹†™YÄ£ŠXKJ³”–v\û¥q¯Èº«vÁÁñ¢Àt¶¬Ø’ðkUŸ#ˆ±gº¡TŒ«r…­Ö‘«u´ºú–kqV‹™WnýÁ™íl'À™p´¸b˜4s⮬—õu\«g–Ût³B™]tݽU¢çv¡Â¤ëv|Åœ¤KziǦ“{ÐÈû§ z—ÉǨ{ÂÉʪ\~µÊ©­ÀèÊ®®†EÉc«œˆHÇ˨̆dÅs¨P…ÅÄ §Ã~ÊÀ±ŸÇk¨-7W(àxÞ^[qIZrN0iîR»FÄt­`Æ—«“ƒˆŸ³™.Šï¥­œV‹|𗉢zâ}zÝO]]Gg˜DOß[4GkO7XM"S V1U?c?fsj±u¢wƒR’„†Óšù•sƒÿ›˜•¹‡m¥è™fYº9¢E’”Ã×§‡Á¥^B¸a¦ŒÂ¦—øˆ0™Z…:•}G…ÁÕ†¼…Õm˜nÊqj]»fëkécžloYeenem™jŒo…Þ§ œpÈH›¸Žö™–›ï2¢›˜‘”?Žœˆ²fjjMKP²U×DKvT!@HVSáBI\T*HBMÓZbP´VFb€hÓg!msYŒIЍ¦ñ¡]›œªÜ,’¦?—•…ö¦Ý˜‰ù‹Ó~´rlTÐS¦ZoAûL\e2F#R=hÅIQ‘bªHzGfY¢LGBãS ZYi4}ä…ÙŠ•§˜5”b‘ÜŠE€uœ—Ž4¨å›Ô‹ŸªåšŽ…#·SžK†¹HŸ›„,­Z™f{ßžÌpæ–Šg|Ž‚ƒet2“Ý{hO“†³f=—1’±}:•†‚ƒô•(…!™ù”sˆ>œš,‰?˜À˜\‰b›4>‘Á¢Å£75¨}¦Ó‹¹§Í£ôŠU›Ì˜Z†Vœá—?‰Ž¥šõƒ­µšG}®øˆVn˜$|g˜š”s·Aƒ›ÿ€´=HN|:P(ŽFwYeH‘‚sd᛽“|w㛞•ôz¥›JÃpN–žˆàr†ˆ{sbŠ·mKüˆ6n#JL‹§vZZµ…(nAHç‚I`ò9»€®]u>'q’UÅ>?hARò8‘eQN6Pc2LCdo!TƒHzÿj`|ßu|g’‘b‰x@–å‚vdS˜Ÿ~6X³¬â˜z\µ©Ÿ.‚ë­“Ìrù…jfÖ‚OlO²g†J¹¡ƒ\¨zte_Oq‚ wAe›¢˜‰‚•³E´•¥«yšàŒ|ÑhÞ€ÕrLÞ‰F†8r^ö‡QxO–§Šë€2œhŽ‚Òœš‹Âu¼ž޼sn“‚mn|’¨ƒft˜ÍŠ„ofž“mv–Ž”vµ—Ž:uø›©ˆ\}ŸV#hÖ•bмp{”Z‡ÕsÝ™õ…RSN¥M’U^t¢göc¡(ÿo`tLQZ2j/GðlmY"ÌnbEž³…QU@¹2œÞoª´Ý™ÊxG¶¶™ðwf´–—GjÓ¬“Ûaï ´„eGôžÐ=NÔ˜,~“Põ‘¡wÛQdéoýFéÑ\‹:°„Édv=)™÷}K¨Sp^©µ–˜Äd½Ç±°-†—ÏB¹Ž’,Å´—“r¿ž¸|Ç?1{š\ß;ãlýW C•jõWÞAŸiW›Iurç`DZþz!k®bÀ‰uþeHŒJ† m¥†žÂ…S°ª’;ž€™ÄˆÐƒkw•Vˆƒxo½E¿‘W{oQ^x¡^xeœNlwpéV8„wx±YÔ•FÙ^E¢ÀÏkP·Vœx|ÆÏ¦-vŠÈÍ¥åsÿÆà¤Æ~ÓÁ’¥à‰Eº\£;ŽOµ` ŒÒ²ðž.ˆ®±ö·†zµ_¡nˆ\¿´«^:Í«·”øÕUºSµÐý²«‰ÙÂͨÇ…¶X¢É…”¥Z–K|lœZŠXp·¨«“it‰¿ç¡¾yÈÆk§çv8Á¢ztï´}š‚nß­ü–?j`¨Ò“‚iž)Œ6fN‘i~aR¨iþJšvß^Õ@‚„EnüGz‘ÎxaM“‰y®O.•u€\^2œâ‹k¨ª˜z§·Û¡ô†Uº#§+‰ä¾«†GÆn¯p„ÕËç±b†ÕÍǮć¨Ëk¨Z…VÄ: }v¸f˜Õn¨¥^ޟщ\R°ó™\s¿Ö¦8ÙÁè¦ÿ|¸Ã©§B~F¼& ¡xǦЮ`ᛂ€ÄLÚ˜Å3T ŒÞiä¥.’s0¥Ylq«©h’ëq«“‡o¨¦&ùl‡ª„”Kt/¸*žšƒË³é™'±¡ûŠ\l>v»nŸ¾‘Ñk› ½ƒ/Gü«¸_”¿w QxmÈm«6|)Ä\¥†v9·Hš5p7«Â“ækŽ¥èôl;¥ŽŸlû±/“k ¾3™sj·ÀšCk¿]šÖo0¹(šZr®¶Š›¥vtµo›y´nœzz›¸Ÿ¾z*¾ÛŸ=xDÃE£‹xsÇ.§±v’É+©'u9Êà¨âu ÊÒ©©yáÊn¬õÖÊ­ùˆ¢ÉÔª‰LÈÞ¨ë…êÅŧ²†£Á:£‹†˜¶]˜t·œÑ€¢NOzd€K5ZL7IûQøFBFea-Q:ˆ‡‡Àu–¨’ ƒŸl˜Kˆ¶£¾œgŽŠ‰Å‰¢˜Y'b|_œDVMçQ:HÝM³RŸOuP¬SROIZ˜aAjótÖxm“­–]Œ¥žÓ‰;ª;ù‰‘®ð›XŒ_»tžŠKÅ…¦—QÄ ¦p@½~žÛ#§ð”Ô†Š‡ƒ}-ŒA„ê|HøŒ\„®€¤~\y^nIq“po†sKu“t\{±t¨…Žš…ã šŽc˜™ûŒ•šks‘\¬¿žc–C˜d*‹ mnpaorP§\»c1H÷Pu^º>/HwUó@ƒH9SNE›L T{RLTk[ÒiÛcYkJ”¿v‰Eª· z˜ ¬§œ¢×§ú–Òy­¹›-†š?»uWjnaŸ\G$NM`cF:QeˆJ´Oj^ÏIG UHLšDWR¢_Ç`!i{Å{vȇ‡òs¦‹ÎƒXk¼•,„Äm­˜Ÿ{€Ž’L{‰¶¡ŸË†¼Y£Â†;±™nz>“„#hŸ€îw k vYkqa‰€m;U35n•KÑ‹¯|›fÑŽ°ƒÆuù–ê4„8W˜!—„”Žˆðõ胲™™™‹¶¤¤"’¨Õ¨G“¢ ¢Ë1 âœŸˆá¤Î¡ÍŽ3³®Ã”·º–²’E´¨Ž ± œ‡‰ê©ç(jÔ¬}“(g« ÍjvM b”Ð…¯—è‹u”lz ‡oiÔŠÈybSðŠ@{f‡ƒRo…\Þ­i-Lõ…ZqvLœ•º¡^ ”&z1V¨z ]ºCër£\4Höl^YA>2k·U<‚ÕD4˜{|[R‘VwËUI‰“kùCË|Yƒ3.~Ò\è: zcU1K‡ gŸ>ù”â{qE\³ƒž}ŒÃ<±D)¾šP}œ÷K7uÒUž/riX>us”dÎJÛné[ÔNÑsZïM;næQíFWu€`¯RçŠ.‚êpÞ˜þ‡ÀÆ™v‹!ª˜ŸÖŒ?ŒR}ù`…0sK•‰„]i»‹:|ð^î„ðz´_àIKb'ž(‹gᬰ”‹p¢» xhÅ4¤cuÇY¦t¡Ç^¦|]Åt¥€„¿÷¤¥Š»ºl£ƒ‹‘¸ä¡:‡N·í¡Ô‚Wº@¥{„,¿à©¨Š¹Çc°ìÏÁµ·‘íË¥°¨ŒOÁð¨*ˆŸº*§’‡¥¨“õví•Äñh †‹rq§¸EœpwâÂz£šw{ÀΡv€´–šiom«1•}k¦£¸yiÆšˆafW|¡b{”kjLxòaŽD“…‡pæJd‘÷y‡R•“q|‹W–"„f~›ðŠÙg¿¦”n’·R þ‚á½DªP‹Â9­`ˆhÈ:°„mͲ8†$ÐÕ°GŠÀÏ®¸ŒÊn¦¬ˆKÀ/×|5±æ”+l+¥Ø^`û±î—ôl‚Ã?¨g|Æ×©ÌxŦ©U{+¼±¡¬x­¤Å…^瘅{[Kš}€ÁX㢱Zl˜§ˆ“¦q˜¨›’doÙ°]—Up–³•˜µp_ªò‘¬o ªƒ“¤y0¸oâ‡Ê° •Q€¥è‰ tÌŸÔ»yµ%•õo¨.ÌY0¯‘”h#»¸œey.Æ¥¨Ÿ~’Æ­§ñy  ¢uà¶S˜žm`¥óYc?Ÿ»†k\J©çdÙ¸†˜³j¦»z˜nl¹Ù˜ÊoL¶À™þq¼¶Ÿšjs·c›¨v7¶/,|··kž¨}T¼ŒžyñÂx£_w²É6©½s.Ëï©«qwÊ6¨Ñr¦Êç¨öxëʪä Ên«X‰ÌÉ­*‰GÉM¬Ž†êÆQ¨Ä‰£ÂT¢õŒ÷³¼—>ǘ£~èZyÂdÌM&`cR-PÍOGKP.avc ^ô„ ‡uv“Õ‘,€‰–ì‘5] ³šPŒïHŒ;€f\A`EZFEúJëNeK±LSRaTvOdRUíZq_ãnÀvÅxý˜p›Çίè§öŽEµ^¦ Œ2ºE¤®ŒÌ›¥ƒŽ9Ǩè4ǧ¨’€À¤ÎŽ¢¨O—sƒí’qƒåpÚǃ qߘŷz¢³‰TvÔx x_q¡w@wŸyj€[z,ŽQ¢ƒzš˜b.¢²›*—¤›¥&º‘+Š_ˆ•z‘~Ef'i(m1_­iõmŒUMeUmYFëPb BNK¿XöD¸LØS”UlVÑPm,jBW––;ŽL€É¨';0®£œŠ­ü˜\€a´¨iƒf§~—T}Á{ìqbvLÇPÌ[•DáLÕ]I”KƒU°I3D9OwT‚E†N„iõaŸgK}ó|q톄ØiΗ!ŽSeº¡”)tŒ—¨‘Tz=›¦¦|ıž"…‰¼¦:ƒ‹´·xUŽä~Âc´h`;PlåbèT‡{un¸U˜€¬pÛSð†ts6\»¸~qGšg“ï…£"œu‘þŠ €„Ê|Àn$‡†r›€•ˆcšœ«5ŒÝ‹Ôz"Œƒqj¤‘ ‹uø¨ª¥à’V³ ° “q»±ßP¸)£—†ì¹ýŸ@4¸ØŸ]|…µ§¢7†·°£J‹¡™s”e€Rв„”rm-uÐYýufæFö~åmÃQ ‰Žv¡aŽ6qðZ¼c{‰e¥¨"–QvY°e˜:y„Þ'iÆ„Ë}ålÅzr—M„s$fJBÃj?^²Lô‚r¬W€ýV‚±°˜¾y9£Ü“‘w:›³wt•߃tÐŽxÌ_‰„ gÖAÙš¯€ÃVŸ¶r—ÍpR¿Áœ«ržºŽ›Áq;©•‘Újº—©ÜVÕ€oe A¤|ß`àC€MhÿJ‹xªfëR&eóRƒDÄ_¬Kž.óW¼G´-=\¿L8õx]e$T¾Žô…™tÏ£É›ŠŒ9®ž†Û§O•@v1Ÿ¾ŠÄg¾žÏŒufD±ÿœ}þ¼â¨Òƒ³ÈÝx ©ˆ•¯r½¶oP€¬½¥¥¸ƒw¼¨Ê‰»è¤¥…â·k›r¸šdnº¡œ#pËÁÆ¢wÃBŸÒs<Ã-ŸÑv²µN™vÿ´Ã™Qs®»›™gfSÁLÃuxÁ¦ÍŠ Â¸ªH‹Á¾õ¤}}ÀÕ¤#v¡¹Óšcež „‰?Í•nxìI»ŽgtîMz…Vi‡@ ~yb®=ÓógG;| b JºlxRµ>KuR] @ ²[wª.œ‚z»ÿ¤n¤×‘Kd®„ülÑ6Êzü]w9Ôut•X‹†}lK‡±r#Q‚¨i‰Kâs8\7M‹zƒjp[.|-pahíxnYi¸ŽL€k™ƒRpX‹‹÷|6dš{(n¬±Ÿ*xW ™’an’ä„zaŒ”Ã^^¢OŒg´²˜qpl¾Ìž¯u©ÂÓ¡ÿtcÂB¤Ut×ÂÓ£NxÒÀA¢1~õ¼å¡†Õºý£a»Ð¤`‹’»Æ£Rƒì»Ú¥„“¼J©JŠ‹ÃF³ •JÏóÀq¦ýÇœ¹f›M¹5¨<ŽW°©œs…šUƒHi…Œòp XÒ›‰„Nd³M™hn¢À‘£Gw|¸¤Oxº»evùª•@pÓžŒþe—E…“bW‘ÅïafŠçwKWB„UsRuŠ­wUt¢|—O †|ØSx–…:g£ N/h§¬]–i–ºŠ¢RB¿K«l‹¥Á¸«ë‰áÆÜ¬‹…Íý°“‡àÐ5³‹1ж±ÒEË1¬šaÄŽ¥ë‡iºž­~‘­Ï•3r›°:—‚se¬¤xyØÈ «‰r=ÄÝ¥2t‰·›Üq¤‹›_F™¼w½JWšµ|S·¤êfj«J•òp¼¬–)m°´GšWm¹bœTsØ´§šx|l´Eî‡]»#£6Œ"²È–²€=¥ÛŒúwޜዪvVžVän¶šOn[º‡›–s»LWwbÁ £ÆzÅå¦n|ÎÆf¥Ex¯¾}›˜l|§]t`ž<„­VN¥Ÿc<´O–xm÷]–8oaµ`–-qô°-–Âp¯±˜Âq@·ìšw!¸7œÙz¹CM| ½2ž¬z¤Å@¤!yÌr©Ös̨±qʦõs,Ë)¨O{ÚÊ©cLʬ)‰†Év¯?‰FÈn­†€Åé¨ÏˆÂp¢‰—µ§˜"išâ…Ùgó€¬p[–oˆcN_´[»Xé^imürÕoaŒHŽ¿‚Î’’Ø‚ÀNhzíž!œzÛ’^“Ÿ‡b°f±aHM×RðLzOUH]\ËRÁcÝi c£qwEuŠ˜§˜fü®§áŽâ·†ª‡ŽU¿Ž¬BŽêÅC­ÎŽ[Æ{©òÐÆ[§P‘‹Ãê¦ìn²šSƒ¶ŸåŽòv# "‘yâ¨E›ñ~ÿš\“Ávs„Ѐ„wÄ‚‚‘ƒ¸…‚ƒØë†&„­|Ñ–ÀfŠžÑ’öŠœúˆ8~´t²t»pfmaggpe¾nmaónÐoÝJE[hB}N!`DBNLHU?P;TiORmFqêOù—Œ‘Z~Zª  ^¸³ô¢™Ž­µÒŸ!ˆô·n¡C†2®pœˆƒª‡$onO¡RéZwAøFtTÐGAF†PÞH”?^L S›CLqÖjqfËŒË÷~›?—f€#°’œ(yܺ¦¥Át i™§x¨œ²ˆƒ°;žDˆÕ·° á!µX›Ívk‘ÅcÕh³^úJ p5gaR[Au³]…x;`rŒwIeˆ½0sjœð•l†`««¢s“E‘Ú‡TzówŒg²N½…qÈR}’X„}p‹M†¼yåsfmô[ÈseäK‚-va𻯍7¥T¥«—Ÿt‚G¨q“.j•°È™…yº¹»¤4„{¼è©‹‡¶ü¨dˆ›™„4‰ƒÄq’yat·aªpkßW„Ôu™^ϑᇿsˆ†¸„­w –ΈY~º²àžÃ„Tdz‘É­Yž‰šn–wƒ|…ׯa}~u?Q©wvrg(߆îså¥+•QrôÃyª…æ©ÿ“Do—ƒ¾h"–ƒtq­ˆÊt¾Y¸~âbüCŒŽªpK*¥¿‡˜h6»ª™Gn¾îœ­ÝNÀ ¤ë{+¾^ž¼wѼ"œ°mhëŸvn«ÅŸ¶oYÌû¨Z9Å¥AÂu¢~~x¿+n–Æz¢DwÑÄc«”‰MÄ·®/ÖÁ<¦&“¾…¡ås›º±h³¢•ƒñ@²”wˆHrŒâp-I‡akåC–‚µmiK‰AxÍ]•‘Ï„år—uÝd°J‘b!Nl1©vF`˜:S ‰RG³m £|Ѧ±Ç…Ò£.”­_“–삆WÇ”®„‹kŸ4™/…ƒ”å‰þi…”Ê…?lkApTZàpVXjJ‡exQHŸXÚK]?îkTDtpQ\ýJý‰p}fiœ»“ÿé¯YŸ¯|A§œ–Jq ˜…˜^ü`x›QMUƒÜ]š±ó–ëlÀì htÁX¡þs©¾ >rÓ¾œŸ´r¨ºRjs·0¨P¶œŸwŒ»¶£޲¸ ¤ˆ+¹»¤´†ëµ¤½‰0ºG®Á’èÊÂÂ"¦øÃê¼è¢©lžw‘hžáÝ©”™|¼hÜksàVö”‡Ëa²Æ™Ãl6¿Î£ÔuÆ.¨£z Ã÷¤Á|[³Ü™u Ÿ‚Š9aº“ƒ€„ZBŒM{RZ{‹5{Z#’6„äe¼™ÚŠTg£˜¼†¬YlÃ|¢S¼”ëa`ô£[’ªj½·ábu±¾i¦Ëƒß½×¨RŠ„¾ž¨VŠ—ÃJªµ‰ðÊú¯ôŠ1ϳɊòΰ²ï‹5Ëë®|/ƪЉ À€§M…0·xžx¶¬p”Öt¤± “giv¹ª–Y±V’NV*¥Z‹3_ÄïZü˜SwpMÚ›*{xP§¿ŒWfK¯§•çp•®ú•{jM³˜Èi?¸›£t»ê gƒ½“¨YŒ•½ §tŠÒ¸‰Óƒœ±Ð˜:³°Rš…Û»|¡‡qÃ䦨Àž¥pzª¾~ Zw軆ž¹vr½²Ÿæxî¿I¡’u7¹]šXil¦®Œó_iŸSˆ)_¾¥¨Ùh3²½–2rN·˜/uæµj—u;¯¨• qÁ®ú•oµ_™žu깈›!{E»|œè{1¾Ë?zYÇ·¤¬y’Í=ªúvÌõ¦£vhɱ£hwÊ´¦ˆz‹É(¨¿~pɾ¬ò„¿È·®‡ÇÖªg†¥ÄJ¨ø…‰Áv£„ ¶š|Ê‹‹mð‹S{=e“}qLh¸lôjj+xA~Ív¿­…üŽ8‹ª|ˆtƒßp›ä™"‹ÿ—œ™ŽŒleo h°MR4WÙPcVPX™mIn$XÍ}K|þj{¥}~tý“R’—‡‚¤’œ†Š°,¤ ‘"½°¬-‘nÁì«)YÁ²§ŽÀɡΌz¿® û‰Ï¸ž!†fªA•õ‚Æ *’€W¢F•ß{õ•i†g¶ƒÀ|“tÏ€‚€m‚ª„}‹~«}>w…q°‹A€1v‰¡xØx}€pÈnVyör£n…x’{lq$v®|Upm¢týie(måiÁLÇ[WeAIN¨^=«I/T¥HmO¯Nnktp0UÓ–ê’LƒÛªÍ£Çg¶£©¢‘¹r§ŽÛ·Z¤ZŒf´>¡ù‰’®‡xyÌVòUž^R>¢B­P÷BSAÑM\Cç:]L?L×AðM˜r¤jËdð•l”[)®¦°‡"¼ø§Ñ|Âj­£ˆ¡´'¤ê‰v®} ¸‹ž­p :‹¤­Bœ€ƒo¬%”zì’¥¼e­qbNRu¡hžUø€vtõ`”ƒ wòe~ŒÆy§hñ£~mᜱ•Œ‡­Â¤‚•|–]ŒI}ÆzÌd3I„ hvD–wŸWU‡xÊcc{Èr{aªrjfôLÂ}q)YÞ‘¬‹{}¤“YŒœ{.”Ó…—c`˜W€WMžÆ‰ea³[É~s½\§îO°]Ÿ¤zŒÕ–„„J‰J~¶‚œ„éy~kƒ({ä‰ä‹Lzf—r•…G’Æ“ÀŒõ›^™ ŽÖµ §•бÅf´Ã0À®T£ß”Ê|φ„zí\U‚ñv3_-މx7™â’(Y¶ƒ¤}‡£Ç/´æª®—VtH—ÿc™à‡ri×—lŒìrà†uÂZ•~‚Ú`*#€å\´O•ÀlÄ»-ZzE¾þ|F³ê“2o~ŸŠƒS…„àeë/¼r¥O~*ÖoOÆ2›gÆMÓ1ËY$KÈ>+g SJÙ‚¿r§\ûï”öƒÝ°[«–G¶Å«ÃŽÉ¢‘zr¨¢ÍŒ×q¸šçƒ‚ž+œ?–ì¶®s”«¬Ä›vá–}eBj”Ùw°C+œi‡c ³ä›~~)ÃH¦ùÁ¢nnÜ»!ž,w¥¹p›™x„À Ÿšq ÄY èk ÆO¡kqË+©^~ãÉŽ«iˆÊÄÍ¥·‡#Ã, œy’Å$§ý{`ÂC®¶‘z½Z¬P˜€¾O å„иOœvæ°í—PaN â}K8•÷vSHa‰Þl÷E<ƒEg:B@„ÅrÞJ´’V…&lñ¡š"…D‡Ï{U\EfÎP0¼lvS¾.åÃoÊD ¡ ”Epݽ¦¬V{¾Í­Er­Ož}L°Õ£„µ³1§4ˆÿ™N’wzÑŽx„ÈpLƒHvý^¥sÅ]H©nxY€B!r‹^LEÊ\\O©:®ibjLɆ }åi›¾˜a‹“Ÿ’ösT;ŒUk,—ñƒP`j”:zQS¯žm‚ ^<±x•²nï¿®Ÿ±vOÁšŸÒu,¾õ¥r·½8q˜²Æ•hh§Õ“usÍ«ý›½‰´°Ú¢vŽ0¶Ü¦€‹ìºÊª™Œrµ§fŒ•°¢5†¸¨š†®X Š—*=‚Ð €Èr%‘í|g¹˜Š„Ÿd|ªý“Ul/ºTžCrÇÂã¥?v½È%©Lz¾Æ¥`}rº²›vÝ ½ˆÑ[7…uûJâ“nëLÒEo^M唆öfb§—™sT¢Qžd •ï} Tj’Å{"R$ Í‹Tc:·ìœÖz¢¿ƒ¦û‡Ÿ¼S¦t‰d½‰¦ˆÝÁi©]‰õÇ®[‰ýΩ³ëˆ†Ñ*¶“‰™Îb±wŠËܪ”†ŠÆÆ©e‚±¾f¤A€D«•‘&p^¡P‚P[ÄžÇzŽAe—9uj;M˜±{zLbš£~,Wáœ)€¢X\ ƒeUð«æÜ`ú³‹• o®S“Zh¯”fh]µ{˜…s7ºzžÔ×½”§D‡b¿Ý¦‰„xÀö£ž‚.ÂÞ¥a„CÅ(©¹†¤É«†òÉ«ÆDZªÀzvÀô¢vã´õšãr±qšòrѱv™6m©®®aÈ Ã…ê\·œN‡½a¦£æ2l®”—_v:°d—Fx °ô–$w®–t¯¬2”nå°ó•ìni»ûœ¤y½Ëãzg¹lšÔr‚ÃW¡XwÍ*«}˜Ë»¦î|}ÇÝ¡{Ñȧm{ÝÈ;ªz:Èñ¬i}ÇK­³ƒ!ÅÒ¨´†]Ã~§‡=¿ö£|ƒµä›Ç|¢bŽn«•{ÐfÞ‡Fuõdçs®kàc{a{sp‘Ž2ƒŽªˆ}xµƒ~lû ŠÑzD“³‘…uVsjå\b_ [ªd¦cøWÃ…­{4`CšX‘öwh¡ŠÆypôŠõ2—ôŽé‰d¥Š™k“ºp©I—Û¿p«ˆ·½Ï¦¾Œ4¹žU‰úµÊšÊƒ°s˜,ƒž<„‰©€G|cˆ‚£q¢}aqTSt=oÎa}‚{ÎyV }¦y!{uwkW…©vvobxGk–j”p£oOp;v3{ xùŠÁ•‚‹Õ“þû‚Ö…ôv6oópnÇO¥YccàBÃMAZ²=ÕI:T`F¾M OËh4nÝYÚ’êy‚þ©’¤2ë¶¢«w’´â¤R“›³£Ë‘M»Í¨‘£,–…ˆumh‰lý?nD¹RÉ?@¤P@Ë:N3J=BkPÕhh`ödÑ“Úy0µª¢ˆÀ”ª‡ÃÃ󫌓¹¶¤î‰>¬œ¸…6¦KQ‡®¡3™o¹žEŽÄyc‹çsšaùr£]bQ%uÉc2V܃¶tcÖ…™vRjÚ“{)gû“¦}âgT  ˜¦‰p®Z¥Ä“©™tŽsz-Š£t#TF…WfuI«„kŽRߊì~Liq“7÷| „Ÿ|Rd«uüfyI8z´m=\Lwôi×Z1njJ‹„ nE‹ xÐQN¤ã–ézì¶Òž |ËœhŠ/^O—™†ÚyB$Œ_‰åΓ6ŒÐ‘¥–Š ˜–™x„Sœöœ²ˆ1š˜š?Š®§Í^»M­ Œ:IJ̳Åݬ‹ƒ¦ Œ,nd‡%pÙKµƒSqÁXõ“5‡òn}™ƒts²Ù¢x‡wÀØ­êæ®õ“—u”ó{LQ§“t‚;c¢ >™ƒÃŸ´˜„{”V‡féža‰µVͲ—gp:½ì¡ê„0Á+¢”‚á¶þ“Rj/¬×‹C\Y•OwÃ?»{KV±,ÜtLPÒ-tÎQÃ3égoS²F”|Û_ZM¢ŠívæY9¢¤”¥.¯hŸˆ‘³&žß{D©äŽ´fN¦‰Îi®”åˆÿ…&µ[¹FÀÏÊмÆE¯Õ¦‹‡••<„hSN•Œ‚FY¯–%„Ú_”†(^¾¬aŽ5`d®ƒãa¯¥CŒêdž§=¯o ¾KŸüzG¾à›çnbÀet,ÅŒ£·z‚Ê­ ŠîÆ©¥Ž½¿¥;‡å¿Ï¯„—Äo¾Ž­lÎÆÉ]Æ/Àº­˜õ¶œs¢³²’¦UëŸkz6Ü“ r'@¾šo¥C3„`g×?YŠ"uRKėцÇg£¯ô¢ˆQ–ÚŽùp„srcžAWk}UP9ƒu}dlF"¿\]¤#”"i|¶Ñ¤ì‚i³F§lˆ_ÁA±”‡zÁ3­†›z“uye‚×y}f,{lQ?x3fŠLp‚Óu VŠô†9i6sôlÝHöu vYZ劑…¨rÆcš¡Œè“=Üc_u}ô^?–ô…gœŸâ‰ˆgæ¨&޶hïµµ˜£rÀ±žúxžcx¿iqu*»—šÁqĤʼnX]•¨`^–hŒy% Ÿ˜žƒú±Ä¢Ù…½…¯¶(«ÍZ§ê˜Tyšž¹‹g—À„¨i‘¡hn¾Œøy‹ih“„£oŽ£7”?v¬¸uv¬Áˆ£ÉwöÅ:¦avÈY¤uÃrž@w´·#˜Sq¨ R‡@\*ŠTqkJ|žeWJf{ze)K”‘Šëc¬3˜sw·­U•£mþ›HƒäZ葨x+MLšƒñ[J¬ø“7s;ºWŸJƒ+¼E§‰­½¨!†WÁ(©+…šÆI­>†ëÍL²z†ÒZµ7‡šÒë³›ˆŒÑZ¯z‡qËYª8KÂY¤Ž~¾´Ý—ØtÕ¡H†æ_â£o:FV‡Åeà>v“vhI.žÙ„³]¥TŽ$j„­Â’Æhàµ"–Ÿf¹:˜*n¦®U“©jíö’îinµ—boS¹Þ›„y$½f£×€™ÀJ¦T†Ä¤¥:Ȩg‚#Ëbª`‚CÍÞªœ€=Ê ©¢}qŪ§™z~¿¡Ýt:¯‘—€p´¡e‘ŸnÁŸIŠË`Sžž]Ré™Ã{RS%˜VF\»ŸWŽÔj§Õ•”uU§°”wº¨.”]w&«Ÿ“as¬ˆ“‹m°9•:hGºåœp’»L_tj®Ø’ h†¸§™Pr¤È‚¦–%ɺ£ç}âßœy|Åœ¤Kz÷Æá©y‰Åª@y±ÄÑ©u€þ§¦…2À•¦d‰)¼ £%…p¶·œe|N¤è¤l&š™‚+d[‹…s}]üu"hþ\“y6v0pŠÅоÓýˆÈz’‚¯zFhÅ}.uÜ`]‚‹y$jl€wþgÏ{*w~iµ|xvöa(• †fv¬´™É~S²’§~„Ž’…Õy ‹|›{ZšÿÜŒC«¡›Ø“Ç»§ò‘·¾—©'ž½_¤ C²ÿ–‚o¥R‘Ñ'…r€Ôrv<~‰t¢€O„õr¨}ûf3r5uÓ]ŠÜ‰û€vˆæ‹×‚Q‹Šz»TƒIr/…«{{sç|¼†Áÿ…ŽS‰¥”,˜¢‹~™š.Šâ’’¿…Ýzèyx—T6\»f0E9N\ù?ÿIXpF LpSb–dÚUnˆ‡†‹xø avˆr±¥è$¬xì”Ë©5”­»¬ê•’°Ú š'}}yÆx´C0I-W??«SÆB==ãOÖNND‡MCgª_©Y‹/‡r™³g¥à‡ Áé¨Å‰^Ã}¨:ŽØºß¡o‹þ¬Š›ì…ú¤³š¸ƒèž3–@~\’@7o”w…_ÓO,j|S½Oòw±eí\ê„tvzg>‘‚5ožý†ši⣡Žq3«›}Š)²©è‘ÑžR”{ušž‰kŠÁn czgb°l…z÷m ›ƒ˜G‚þjŠršqÌ^qD?fãR[D(cªSìH$jyU EšdòP±=tn{aŠKÞŒ¦„¢m×g½l ŠvdLoõo8b·‰L†9‚ú”Ô•ÏŒ‹šÙšHŠéœ»œ…g—k–¼}$™ó“2{i­.ž˜ƒ¼…¨²‡Ý½O¦üƒeÀ=¢y€V£¯‡ò]‡GiC»}+d¿FeŒÊyðZn—²r=©¨œƒn³k WŠ]¤X‰Kküx¬P4ƒëm!Jçƒ\fÝžB• |H˜Æ…¥d©”‚lë¾ß§fƒÃ1¯~oÆ ®(‹!¼š|ru±½we‰ R„ºQ0ŒÏo«=3}Wˆ+¢„KbÖzà³gŸ~xì²þœ)ufœDhZxpòV$inWiBÐlåWEE=t7Y鈣jØ‹7…Í`Ò‡{9]¤™ˆoà›n——ƒ²’Âr`ý‹¢x"Y–Ð…©im¥:’©tD³—@rä¹òšsqÀ)w¾Ã%ž¼wÄ¿+Èä­¢…eÍœ°ð…3Òª³ÑˆñÓú³¸‹ÌÓ±½‰QÌ­ªæ‚ôÃT£Ò~ƒ¾Ÿ™|[¬ñ“næ“wx¶O¬†ÿhTDû’ŒuŸI ãˆ|c7­Á–Nv̺6 y^¿åvrǺèš6o+¯”n(®U“`mýµØ—~n(ºT›yw=¿=¢ÀÃÛ§ê…ÆÇ¦9†É·¦g…JËͨ‚íÍË«m€É©rˆÂ~¤T{ľߞ°rw«<“ÏlÙ–{úeævsÂPCŒožF4‘s IÞ“S{lVÇ™„† b£+’äl4¨Ò•©rF¦a“ùtT¥ÿŽ!o;¬Ž’Fm³7—Œi³»¸3m:¼ž-qê®7”¿l³K—äuÃÆî¦vƒc˫Ն젡}§Á6  {½Ã¥}lÀ¯¢Cz=¿1¡¢z‹ÂJ¦‚ìÁ¿©‰µ»I¤à…¶»{þ¦<“qnRœ$†Òd“×}9eé‡(}­p8…ƒWzüŒˆB{åŒrƒ|sÍ'så[×tf›L›yÎj;N½’ø†nš½“Gç“.ŠŸvM› ‹ÿp^±+œ…‚)§¸˜¹…š–J‰àz ‰ÝvÊnPŽý€¶yŘŽí…„°û…Ãð±(œÎÎè¼Ûª;ºËžjŽrŸ<Š{CÉ~=vty|œxÌo-,„½sM…*ys}Ńùl“”ˆ”“M™UŠ[œwžõ‹”¡¿šj‡H™l’B„[Šþ¡„¶”ov—å˜EŽFš”™RÌ•¹”†ŠG½~“WÓaªm¿E¨O§c´@àIƒaŽGcJzY»]PXñRY~Å|—o”˜˜•Áª'(<¥Q˜L‘ÿ¤œ’;µe¦ygžx—¦ŠÂxûzýv5EENœ[C±C(T¯H @PPV¶C½IBjY M©ƒÑ}¢lE²9¡R…øÀi§Ú„õÀ¤£I‰­¼» ˜Œ•´¾žŒÓªc› ‡ÁŸ¹“—~"Š,{]jóbÙQKô]¼NüL»xðh¾\$ˆS{hŸh‘Bu(°ý—Rp¹ìžW뵘¦?‹,·Ý­s‘G¨…a…“œ×¼s7W{ÉtÞrë\s#}t‰o´™ —ý~A•ý?}ìp2_øKôYJ&:ZŽMM´‹ýmxŸvêlçœMŒFgE¨ˆ‹Z=ž‡Qš£ÆŽfŸÆ‰ˆk¶Ÿã‰l#¥­ómž¨{fX‹¢q…õgË»íj¹É©i€¶“½j¡]J{ÑŸ‚1ǡ½,ºÃ’ªlŠ%² ’À‰[wéaðž„oY[ž¥ƒXR¬¡PŒ*^¡3‹\l›Y„±R¥–a|‹DøŒrm>;͈Yaô±˜¡²†s¬£¢…Ö›”fv?‹zsa*„Šo_L|ŠV'9]|X"<ç–wÜEš˜Éƒ¦Gc˜—‡‘RÉ“çƒnW¹mz^²D.`óO^8¶i'U[Bíx¦ftG}nuI—‡ìy(R:úWVØ’–ˆf—zðs꛳ŒnpÞ‘ƒa‘˜ˆl®Š—•{‡»á›wxлwšðoð¾›vqÃß²tj¿oas¸<™Âo;£A‡…_ë‹_oM²…t!^Š;„gl˜W‹PmBË*w –‰Þv‹zùl/î~Uqo›©ŒˆwÖª¼™Á€ ±W  Œrµà¥]‘;¿ªIŒkÁc¦",¼žät„¹Fœm$º Õmo»ž>ss»ÜžµyG±¿š;}ÿÀ x\H~ÀfÏ|þk¹JȈ“t`L”¡…,hK±-˜nrƳ‰›ÝzWªh—÷z|¢Ž~jÁ®­”Kl¿Ô¤Ó‚7Äâ®T‹ƒÆ¯ßˆàÈ®!†‘Ì‚°"†ÏرÀ†îÒj´ÁŠÔ%³³‹ÉÑ‘¯ªˆÔË«9…7Ŧ¤Š€Ø¾¡›}©±šzu_œ…÷\*CsæEœ˜ù}4Oý¥4’û{0¿£ ‡ôǪ©ŒoÉ·¨pŒÂÉH§b‰Ì<ª½„"Í%­Ö>Èzªì³Ã¤Ày°½ß›l¥ˆ‹œbi“Ñ|‘b‹Šxfay†?r¿V=‡-p»Q¶‹vsmRý¦xñRp›†:ZN£K¹fŸ$‹™i›öMcT¦XŽnO·šFržÀì gq“Á£Ðsߺž xî¼kŸLËËO°£ŒÕÒ¹€•Èú«‡‰«Â»¡pÁs¡¸€º^œVyí³˜zpÛ½ v{1Å'¬Å‡×¿‚§ãƒoºJ¡‚|T¬™ s§ œ„k°œ0Œán†›Q“*~š4˜Ÿ‡ ’ÒÀ|Á‡ }Iiƒ2sPZµw­c–K~ l^MÛŸ±“zã±í¢a™©N™‹†½¨•c~‘´6ž …·¯ÏŒØ£á”’‡ó˜îˆzØ”ˆz{›„Ž…¯Ô_’¿L¬™›ñÍJ¼i¬úÁ©–`¢²‘~“S€ùnNƒ’zÉfgnvAnÔwk€*4ˆ0Šn{V’;”¦ƒ$’<—Q†]žHžZ‹à°U¦ƒ ¬  K™X•Ї˜ñ–ìNšÑ˜¶Ÿ› ™ÞŠ%—H”ú†“Üö{^rhÊq GªR…gÆB’Nái“IûN÷emh4cGbŒŠ‡‘w±™Â•™Ý¦Rš¤‰ÚG‘œˆœ •z‰^£ó™Ý…Úü†P|Üheotj:C|PÄTDóH RkI{A±PÍU~@ˆNªc3LJS[~ wìj§²O¢„­Á¦¨€.À¡¶‚忆 þ‰r½ô¢•Ž“´¶ŸüϨø˜é„XŽCƒpÎg>[Tb ToR{~åp(_AŽ&‚hˆ¥¤•ŒrVµFœ+sí¸¾ ÷{¼ÿ©þ‡m¼§®>Ž °S¦£žâ—Ѐ(×€Ãs p¹a`cóƒ¢~Wr %ž‡³›O™‘‹‚zÔnMfrYaLmAØ^uQRA`¡V•JW]5VLN»S~NMC¤UàLH;weúQÓ8jR$7r¼X¢HF€êl#aX‚êvòcâ”ÂŽD|Äœ–ƒF‡ŒwÔ\÷…°tØTW ˆŽZoü¸o¡€™¼h¢h|·›kvå¡u‹ìiÜ‹ríHn}gáBŸ4„,cã°Á¥C…šºË¬9ŒÙ˜ü†'eû‡°l"Fªg[E*wcÔBu¤`o>Ê|–eTA÷„%jBšRƒ£du³'™¯‚ÞϦµY“lÒ«» Ž7͸„”¿²fšÅýµ.¢ŠCµÿ¤–“ ¶Š÷vJ—€LcJ•í0eD’ý}]æ—¸…Ì\7¢bŒÈ_쯽’Ï`¾Y¢Þ}1Êá±F˜N³”¨{%­}’àsŸ¦Z‘ÌuB¡Ž¢u •‹Èp_ ¿‹Lh6 Œpb ž'Šô`åŸ2Š‘[" ŒÒX ¥š’Úk £çŽUl+Ÿ›‰–] Ç ®Œ†‰®I‘W\Ç—äwkEwµ7˜w€&È%¢F~X±«Š'ZçŒÏgÌDå„íhþJÏ“Ìl«AÏ•ës7E6ŒüoG s T3=v[^5ˆwýFu«]›w+£•Cj%¢:‘7^´™{‚êCi“!s˜g–j|…TȘ~¦`z“§‹^sn‘‡ºm ‰1yÇaÞzmC\zökíb™²†?}H¬¢PŠß½Ê¨‹øÀîªR«·ŒPDZ­¯‡©Åh¨J¾ñžpuN¸‰›÷mÔ¸¾œ¡oT½T èu‡À¦£&|H¼ƒ¢°â¯°œ{‚°›†Ž-q¢†·uLˆƒ„oÙD•–~óT£ûjâµ0žf׺ ¥ô„£¸LŸ—|ÿɣ3~"Çö¬ˆÈm¯¾‹êǦ­€ŠtÊ ®Lˆ;ϲhˆüÐA³í‰TÒÕ³-‹Òò‰ËѰφÄÎÒ¬Mƒ^Å¥ñ~¶ÿ›Szª¦q’äpˆšà‚0^O”?{®H5 5Œ‚\y³L¢xÞ¹$¤lº¾Š¥€·Á ¤ {‚¾»ž%v%·º™,sͳD—Gr͸u›lw€¿× #ƒpÅS¦šŒþɈ©ŽÊ-¨‹ØÊ±§ÂˆÓÌ¡ª-†¯Ë…­!„—Æ,ªò1Äy£š{ι3˜ j ŸÑ‚ÍUª”„hjnœ ™Œ$•ˆºƒ… v(cý†‰pXŽˆoPîŠØqåHs’p{vQÃŽ¨uÒPW‰‡mûLbž£‡n ºJW|FÄÛ£‘u4Å¥ u[‡£«y©Ä$¦·~¸ÌI°}Òû¸˜A˰Žaž¥«…)Â!¢Nƒ¶G™‚y¦yŽXmݰ—¥yµÃb¨+‰ëÁ…¦‚Ó»\¢®{d²šœxC«1—§tU¤”¹oó¡I”‰w¥€˜¤‡›”þŒ}Q„§x:`²¸mPuul_tI+‚mçLô©˜^~7ÀÛ«~޲ÂÌ©WŠúÀ¤@„Q¿*¥8‡³·¢@‰´‘žŒì®šš‰$­o›äŠš­Í›kó´m :‘ŸµAž}"»Í¡ŒXÀݤ¼š¶rœpˆ”£ “°z*ù…¹n¾z}wwL„¢Šˆ†’,“u„S‘Ӓׂҋ±ž€o›±˜?‡¶ ¦-‘Q¹ê¦9¨›žˆŸ5™‹¶º™!ŒPŸtšf†`©—䃒…'…Ê}.fÜlsp¿I€Ygf4HÛVj;V\Žlvs¯t÷–ª‘Ç„Nj—‡Ê –¹…¼˜¹ŠDÿ‘r†\{¦–‰+‹“ƒKt:_;g:bWDÅQ¼QGiNOS|GDlS¦RL@hTÂ^€H¯^€xatnme¯Ý£e‡7Àv©17Á®¢Â€Â9¡Ž…°Ãª¦ž‹À©Â‰(·ý£å…æ—ߌv1zapÁelwÄlÍeåˆÚxiìl…¢’µp±˜¬o´Š›Hqȹ³¡@œ½î© ‡Ë¶Ø¨ŒŸ˜õ‡‡.ëj:x¸rµ]ð)ŒõmÞ°¬.è©”¤lב±Š‡|CoécJPÚe Z5JgˆafTËe’ds\¡ThRÓJyPÆI?SÿIv;ÍZìN 8Vt\9?&¹b R}Ao*[ÃÓ†ks‰“>~|‰ÝtŽT)‘´ƒ™g  þéqѼt¨j…¿Ág©÷„q¼¡·€>­V—}­’ê|×Z´vê^Ž?…rëH¡9“!o¿µt¢ƒ£šëˆÖdµ…(nAH»ƒÚoiOh|ajxExéb‚9ý|fc='~+dT>º„ j$J|´rXv¯ë‘âo+±¨”“d ¹Ÿ‰…U­×˜„|/Á¯úÌõ¼þ£“µ°Šðœ´†i‚»orA€Œp^Cƒ’n©KÌ{Ñaü?*‹jÏ=†¾kõ²šÎ> æ‚ºm¹¬“|Y¸0Ÿæˆ9¬Ý”oq1¨·agÿŸ€†Ä[v˜zwG—u}&Ok¡&ŽpjŒ¢ù“2o½¢õ“†n$¤Úgj†˜3€H輩¨?wÞ°O™•\„•”vb>ä§²‹–u«Á0›´€@¥v~ªO•Œ¦`/;±QÀ4ãrdLs(yÔZ‘8My~[´7 eÂJ0jdGö,jyK]•6Ñ•3†ìZÞŸ•’0f œŽ YôžP‹ŸZ‚wSç˜tÛD—;p»:Ý“tM2ê¥È”ÕgʲLŸĪf—/t«£wƒAX-¥Áu AÜ­ä…\¡O|iKø˜Ôs Cš‘†lÑ<ùiq8‰‰çg;Š€dù›.•š{E—XŽx[…KtC]ÍzWfäP¢sIg˜˜““ß…Ö¹5ª3Ƨ¬Œ‹$Ç=«™ŠñÅ\ªº‡È:¬ƒ—Ũ T¿fŸ‚xźð›Øp*º+œÓp-¿º °vËÂ(¥\{ñ¿Ú¤>~’·¢Œ€{©–™Zzו …¡añƒ-o0Haƒ0l^Hø”c4_k«'˜ÑzOºâ£Ð‚¡À§©€ªÆŒ«Ÿƒ˜É®‡‡Èˆ­ ‰ûƬ¡ŠTÉx­@‹¶Î4±UŒ·Ñ³¤ŽÒ³rŽëѲ)ŠÔʲG†÷Ò"°ËÅù¢`xʨ/‘‹m–2}oY~Ž2r$Jj“lz_P £´‘Ìh½·'¢Î}V½D§Åƒù½!¤I‚Ày£½€Àá|½}5t{·’™ n˹œEw&Ár£†rǧkËn¨öŒjËg§²‰òÊH¦e†jͪ…sË ¬Š„Çg¨Õ‚bÅ´£Ñ|·ä–ÆhX›$~Mð<#hí£2¡×”žßšAŽ…íu!`ÒŒEx›cë‘æ}iŒ½yÀ_͉4u SÖ9e!Eµ€uesLÏšŒ†¹t(¼»ŸÙƒœÅN¤nx ÇͤävÆ ¤z¬Æ|¥c}AÊæ© ˆÍЮWÊŸ¬lŒNÇ®¨.ˆôᣅҵn—UzQ †¨kZ¥ŽìvyÀ*£Ý‡¾À‘¡y}gºåœwu4¶xޱnž||¡©9švŸ‹Ao–Š€§p‡îyl‚ vóYe~XmiM;r]äEu…†o«Jq¯å™V} DZ’ŽÜÊ °}Šô˲¬ÇˆôǪ‡^À~¦Ê„ô¼Ï¤ˆ[¸Êž‰à³²œˆÂ´ÎŸ.Œ¹ë£ÖŒºï¡Y‰z»¢Ÿ&ˆ®Ã§i‹ˆÅ®«fŒQ¿Î©äŠªåœÚƒs—3–r„m“—z‡2—þ—C‰y’1’.†ÃŽ‘H€‰›e™‡d¶É¥¨Žc¿‘¨•´Öžêˆ€ªßœÕˆK§ÊUŠI¨0ž†£b›Ç‚чUˆöyd…j3i½K(\>a'Râ_”eëf3g²jE|Ry#vÿ–+’ ‡4›ì”Û…Ïœq‘‚Šœa€i—~‰šyõ”³‹z÷‡ƒuÆ` f;cÆHúQ!TN¥SöZðL0KÓUUOÇ@²R_ HAYør.pëmòªw¡Z‰Ð¾”©$|Ãñ¦ì~ZÄB¥éüÅü§xƒÆªJ€ã¾j¥þ€Ò£¬•n~]úñm±„Dz5iΊ­|êj–“‾rÏŸá‘=ze¬“•q_²Ÿ˜šk¿µ›ÒvǸâžY|ݸQ¥X…J£6—ž&‹Ñ…çrˆŽµôvY¤ž )€i¶X­%ˆÌ´/¬ÍŠ£'Žƒ×‰ËƒWnÇnDd-R¶k>c^VÿiƒfZoX;TŠMïNjHpEåN^HFàa¿Ræ@Œ€qk_5B“Ùzx[ÄŒ5€7p™“@‰Mz”Œ’{P”€ƒb†•©‡~k8¡n•ˆ~ŠÁ†¬¸‰«Åö­Ñ‹ªÄ¬þŠ¿¨ƒˆïV’¸wa€0nRP}w aÀAêŠÞtïnZV@ÍkýSF8^gpPQ:÷]òI¸9þsgXJBOƒƒn?šð‹q]\š“‡LT¦c•máªÿ”#vU¢u…¶cò“âob>÷Œëký4”Ÿ{‹/Z ¯šàwÅ¿çªX‰M°pWcŬM}ýD•³‚cSM®EsMЍX{ïD¤PyQA¬¡ëwF<÷¢Zw2D¨÷{qK;ªj€C4«‘Œ¥bX¢†”Š€ —®‹/vQMyñacöw [±—à†Tg ŒûwXš˜/‚Šbݲ—ƒtÅh¢bx½ÈZ£Ît-ÆŸqpqÃ:ž£rӿ曕vн`™ôuû¶Z™tQ¢’£gš¥Ž"h4 [˜Á}œò‘3{¾‡ˆuÙ]–ƒ¸o9R®’‡‡tPO`¢ËŽlÿµQ|{o¾ž¡~bÀŒ¡‡Ä¿¸Ÿ~ß¿%žf|>¾Íœer’¶½˜þhø·Z›rgÁy£z„JÉɨ3Œ‰Ìe¨h‹˜Ëí¥Ë‡ŸÊÊ¥H„5̆©SƒvÊò¨d„ÿÇ㥆®Åc£—m¶z–Ûcó›’}`E_‹ytFUª€¡m‹Š{ód¢|•hnJA’U~\bŒ¤–»~˜ ø–ðf—dˆ}l‚Š€r#R則r¬^ÑžgŒ~¢»hžÄƒ Ń¢KyÝÈÛ¤qzÇi¤î|YÇ:¦†?Ë‹«‡@ÍÜ­šŒDÊòª‰ùÇæ¨‡½Ä£'‡c¸ù—;¡þ…šj?£‰uk¾ žÆ|Á.Ÿ[u·»×›òl:·-ãqò²QžŠ|¿©1›@|œŒi¯†‰o¤Süvg-QRÏr“Yrƒ6sbXu{ófìI¦ŽduîO±~›ð}ˆÆ¡±’ŽAÌ©±òŒ9Í ­ºŠ Ëš¬øˆ¯Åà¨Bƒ¿—£‚¸jœ™‚:²û˜ %·•ŸR‰à½š©÷ŽÌ¿¹©˜ŽÁÁJ¨`Ž0Æáª´ŽCÈÈ® ŽéÂÙ­ÿŠþ°Å ‡¢%œb„Þ˜ ™ÌƒŒ”÷“K‡x‘@Ž×…@—·“ï„û%œAˆ´É¤ÐÞ¿'©£ºw£ùˆ¶±Ÿ†B­ÇŸO‡j®ù£M…ëªÀž'‚'ŒŸ‰Htðck3d©P´_€^è[ëbœ^˜g¦f2d,zNxQu†—L’½‡qš´•㇜©’óƒ­¦y—ó„ ­qœ<ˆpž9•ƒlŠ^ƒWuSc„`2aAMsOyTF\F]jaô\ETYìS8EäL[”IÐP‘sŠpÙkÖªtŸj‡ ÂÞ«k€VÄ ©(}úÃѧ"€|Ãñ¦ì~<Âõ¥®}þÀR¦„î¹K¢GŠh›çŽÄvô‡üìg †7ÿj’7‰Bz¤J™‡†r®:™#wœ³qšÁp²™ÀoŸ°¿˜sÁ·¬¢Ð€z°m ÙˆŒœx™ñŠ ¨¥¨ò޳³½¬ˆñ¼ÿ¯üˆh¹ß­ˆõ±M«ó‰d˜°•â‚y r¬f•mfbÆP[oêedPê`ëV¨KSDLäHR*QpR m\HQÔ‹sw‘Dª–¬s€’Ô‰Ö{s˜~•¦ý›ï‡Y¦û˜l:•VŠÐsY®Ɉ†Äz®EGƯrŽÇÇ‹°-_IJ Ž9¤¡BŒ lƒ¢oþ|ælQjvÿ_Ö@7…‹r¥Nf‘X‡Ùn\•vWŠŠ‡°m!‘tþYí³m¤O †$uå\¯‡ãx&e¬u¯bCAËlnUn0Ãq=Xa=NsIT×>܇Ïj(B‹¡»‘vF©,€×¶2¦r™Ó¾9âxáÔ©º ˆ ‹UpÜŒñqpR‹yiÐHtj–W©8†r:_9C5sRb€Ný†ÒsÌ[ ˆñq§CŽty˜D.š-ˆ‹Vܤš”ˆj‡´4…ǰò•~ŒŸƒ‚]4˜Â{L¡•yt?¬F•/oÁð¨ÿƒ®¶– hĨ}‘?+­CzÞ?¼±ê|Ý=°}ý?Õ©ƒ}¯CR¨Â}XD¶«o{‚Ec²}AL_³v‡±TCµ\—ñs2­¿˜Q~ÁšÀˆ¡fÔ“ãwY¥mÖH/”·àe †óqSØxÀWÿ¥ûŽl4¾B›ÑrÇŸ¬tƃŸ‰rwÂÐ s5Àœ)v»¼×š÷uß¶´™ÿtÚ¦ ”àlí‘ml¼Ÿÿ•áxº–‹‰ƒnO†q&W<Œ>v@[<žX¿xñ·e¦ˆŽfȯÅ޽ÌU¬º‰ÙËʪîˆÇ_§€†¤¦µ‰ÿ½é¡R†Ëº›\v7¹ð˜ïgѺQš^fÁŸ+q¦Ä°¤*xGÜ£yí¼Œ IzX±¾š}x¤‰–zà•Ú‰`iå‚ïpON•n˜Kÿ•„ÔcS¬š—t»Ÿôv/Ág¡,xpÅo¥0鯧¨c…ÆÙ©Ï†…Ç©«PˆvËÿ¯OÌÐe´K´Òú³œŒiÑþ±3‰8ϱCŠ;­ä„Â|¡…wj¤jŽ~ao‰ám^@ô}8_Æ>åŒsžOœ(‡kd~©œCk’³è’ f7¸Ä–Clì¶^—›uº‰˜£tŽ»„™†n³³Ö•ˆf$´y˜ZoÙ½UŸï€ÖǼ¥Åˆ­Ì§n‡·Ìø¦¹ƒ ̨©c‚;Ê@©^TÇf§ª„-Ä:¥ˆƒÁÝ ñ}вš“•Z‰›f{y@“‹¥nJˆ}ecÛHu‚]ìC$xübðC”€r[ µˆ ûN¹_©‰N­O›8~öµŠ3n«™±…Ême§k’)|»dœó}zãž½wýÇà¡‘}ºÇð£x‚»È_§ƒlÍ-®‡¡Î’°çŠÐËw­‰–ȩކÅê¤%ˆb»‘›A‚â¦*Œšj¤£‰ø`޽»ÆsŒÃ¡Ýs†¼umŸµœUnį•—Îr/¢âWs+šgˆ"dãèhjHjlïW²Fg}zmZ ‡¦wEe:†Hp—U •x¨V7°u›¬}ÒÇ!³ýVÍÕ²’ŒKË·«¤‰ÇÇì¨À‡GĦe‚¾°ž |l·-š2{°–¨{U·˜žÅ†ù½?©BŽÕ½[¨°½°¥C‘MÂN¨yÛÅ¢¬c¤·j¢²„Ȥˆ—“~-¡f™ú~V™¿– JD8ŒM„C|Ošj‘ʃ£œŸ‹!¯4žކºd¥ö–¸®¤ã‰±üŸ{‡¿¬}Ÿgˆ²­±¢ä…7²¸¢–€’T‡l×bïcÓZiP]W(V²[™[°R>`“Y RHxšo¦i–6„…œž†™Lj¡ñ™îˆn±¤¡Eˆ×º>ªÓ²¡ŠV™DŒ€EsMeÉcUÄMàP»_—UâVya½S\R$](KNG^X"SpKAzówéi;¯A£q†»ÄÚ¬Q€äÄ ©ƒùÀ§`„À#§‚༣!}ãºD£Dƒ†¹(¢‰¡È’è{ÕŽRˆ¢uB…Bƒ¿p[ŽJ³|R¨ÈžŒ³ž`ƒRµ'è{a®šWu ­šVwI¸ß¦)‚%¸ÃªhŠ·²×©¬·®ݽI°!‹0À¥¯V‰ò¼r­-ˆž·õ¬  ÒœÎÚŽz¶owl]`ÞL“n`Lñm·XSKÃeCYæOÐYÖe‡]•pElÕhr—h‡Ü`R²3ž |$ 5šxŠ¡ž&“°§Žû±ï¦D‰ë¥VœF‚­³¡½†wÄ®¶Ýͬô‹ùÈØ¯ª†;Å7²ˆ‡¦¥ž§!ŽÂ…Ópj„«v1^¸s_)>WkhT?~xižOAŒ „¬n™ŠÐ‰XsV¶xÒjÛv¼jÐR‰j{¹g“•SŒ}ƒƒlwã\‚nà]:? q˜c]L§váfãO0ЧqÝJ©¯•]x´µ¦T‚|§¦§‡¥Á¢¥ …;µäœÅ¹™²†õd«y³^AFÆUDK9 TOC(:ÞWI@ueTðEçžV‚ƒXg¾ÚœRv.»›tñ½ÁÊv¤Âަò}è¸ïŸwš© ’5o –Ò‚Újœò~ok£þ˜„>¯7¦K­« ž«‰õ¦ ˜f‘©ä—€Á¯·„Ÿ¿ù±“”"¬¼Œª±4–¤€%¹öÈ7¼xÒï§ÛrÍãÉøµ·«û‹ ž¸†jr„ÇpÄGÆv¥haD‰€ŒrîLsˆ|œ\•‘u‚&c‡ˆ?pI/yZH7pŒ”qWCB‡Nà£äŒ¹j£O‰wmY¥ÈˆxcŠ ü…µT.  †FHó£ЧV)­(’Ébu§¥‡IP¤l~ñC¤íyc?"©†|¡>©^|s[ÀV uý8w¢¸)œ y ¯ ˜Øtؤ”rôþpp ybº†+rŠVÕ”~ðg©•”ƒQ¾B¦ÝÉ«iŽ<̪ƊDËý¨ý‰MƦʇ—¿U¢ˆ—·Úœ½ƒƒ´¼˜htb·O˜Õd¼Âš˜cÂHŸFpãÅõ¥ÏzÆÅЧ@|í¿å¢Éy¶µœ$yÿ®eœ×{…¡R•Vp³ˆ}¾Vx„åp†Kx«x*[›À†wgª@“WnO½Gž(x[Æ€¦â€pƨX… Æ©úƒ›Çx«J…÷Éç®y‰åÍ«²Œ Ñ?³±‰'Òdzh‡¹ÒѶ–Š¥Îç°;†RÃÄ¡ÐwŽªœ‘#cê|tŠD9ƒiwGÝŽxy]2™€ƒ~aßžJÓW6¡v~D±£e„ZN0¦6Œäb,²™•$m4¸9™Moì®i“íg—¬ü”Ïmó¶´›I}ÑÂxŸ˜„ãÊò¤ÍƒÄÎŒªˆ‚BÍa¬Éx©Ä~Wƽ¦ú‚Âc¤Q„»Yt"©åŒìP@˜¸wu=–ŒlnøFb}IbþDýrª^ÜCÖ|ìk'FÅš=†U[غí ¬Ä¨®%‡À­¨‚‰±Ô—v§©ŒQm¨®’r`»¡špuØœ»pXÈó¡“zMÊϦ¯‚ ̩Ω­vˆ“Î+°[‹vÌß­,‹gÈ=§Ž†ÙÅ㤀„ã½!{Q¬Ëd•§ÌÛ^R¿Å MuÈÆÙ¦³y½¿ÌÈqš°Ü•el‘Mˆ/i÷|”déžzÄ[ùyJfGeidX•F#s9c¢PÊ~ÓoNbS…%oáZ•w'X®:™³}]ȲçŽýÍŒ²J†É¯©z‰ÝĽ¥-ˆ~ÂÊ¢ƒ§¿ ž¡yµ¸ ™ts«¯Ó“•s€²™Ë~ÿ·UŸ©ˆ3¶Ÿíަµ±~îºÁŸ˜åº›¢z‹Q¦`–òù™nŽ’y.ŸÉ—îtšâ”®€¶d‡}‹|~©N†-Á¦ÏŠ£¾O¤°†*¼¾¢*¶¬žÅ~h®Ò™2~6 ¢izG¿ˆã{¿†þ„Äsmz‘8| ©q B‹ä¶¢(ŠË³„œ‚𬩛D{¯Ÿ&øi«üƒ¡¸_«"…™¸A©½ˆ+Á®®ÑŒ•Äþ¯þ‰ Ƭ°a‰" ««†O»ð¨­Š¢×˜Ü†š…˜x¶hJqì`+JìtßcƒHd„ìh˜HÔ…Br¾Y¯t…uÍaÕˆ‚ƒYqâ *’Îlõ¯{œ3{¥ýœÌ† ­ü§ŠÞ¸­‹¡º¶¬Iˆ=²S¢Í€à³H|4¾Ý¤w†¼·¢ ‚ÈÇ"©¢iÅn¨6€§§¢…†ö„§}¢iÑ}pDK·p[B8$gšQ£>Õe’RòE[xÐkR]{GyÖiu²n‰`Rec^SHznsOn‘Û…ÔsÇ6u‹eGjÑ[K¥p–j]ƒrm;Tr…¬rÒZL¥•Π²jœÍ‡º0ŸÉ…LҰ´Ž4ÒÆÃ@¢C°~Ÿ~Õ‰ymÒJ¨]LFì= TH>¯9TX¹G#>›ÔX_F\ ó†#XºÃÜ “wZ½º™Ilè»­˜™mÓÀ˜¢ª~Ÿ½5¦n´s™r܈Áa™WŽqÒ®ŒŸEˆÐ³§Fœ±Ü¡n‰¤¨ÿ™‹†LŸH‘«`™Å¿‘¬2Œxà ®ªº½ ø‰ÛÈò¶õËÈNÔõ‡ñ½¹`…Ÿ½³²¸Ž„£²‹¥h uÿAØ„prãFƒörœHj‚çr²GôŠy·Rœ…Îm\NàbÅJã3†vMWÛ7ý†Äj›+`“èsMCð‘úr·JŸ‡¸Vù¢&‰MZ'¥w_ˆ§’‘{]ô¢È‡*Ky¡ †B¡ŒK‰žzàL¡ª€ÞM®ž„{ºIœ\zÎO̘„u’GË›ÌqD'™¸m<˜oƒÉb#Ÿr”ǘ­‘¶yA…pC¹zµ\áB[pQõ;—…ŽjËÀqfWeÒoàVâ•õc÷­È’ˆkUÀÒœŽq®ÄPŸ=r½Ã‹žõq¥ÃÅŸw`¡9{‹¼l ñ}VµÁœ|Ù¯H™²y³ IzsÒ’š…Ôlî’ý„ kQ£•‘"xEºjŸ‹ËÃæ©w’ºÈ=ªð»ÉY§ŠÈ–¦•‹ÚÃÑ£ ˆ»…žâ„¯\˜ƒX®Î•˜s^¶Ø—lfÔ¼%› eÓÁBŸ[r«ÇïªÈ7ʵ°g„FƧ}¢·ýœáwr²½šÐw6¦e“Èjó”ôbSÒˆÿt KRˆUtúWIcx€dʜ׆ßlœ¾èž¿}nÌ5®À†ÇÇ>ª|…ÆL©ö€ÂÇ»«à€ÍÉç®…£Ìå±Ò‡ Ð;²‡©ÓJ³ƒ†vÖy¶/‡ìн°‚yÅy¢ëwð².•~i,›D€¤U¥²xŒY~–DƒhšN„Ta—˜{ÀI˜(uj§»Ã˜Òm¿Ã~=j:Èq¤ìr‹Ê”¨U~MͶ©´…™Ït­†‹—ÍÄ­&Œ9Ê ©{‰…Ç‹¤¶…ëÆÅ¤ž€Áåìsõ±r“a¦¬N‘›aò¿Å jw>Èb¥Ò{ݽ—3m`£¢†pb±‰¡s\_¿vgf$Qo{ÝkÃN'vñh›MFnèbþOjÐ[ R‡sd]¬ƒúkôX–ÇuÀU}¬;—}xŵ­÷˜Ë‹®‚ Çu¦$ÊÃÁ¤‹šÂ¢£…ÞÀ$ŸŠ~e»›Ot ²^”ïnI­“u›¯R˜=‚ª¬™¶Š½§Ö•ê† ¬C•W€d¤ ’c}•˜‰‚zF䆮xgŸ¢™@‡%á”yƒTî~Òt’ެ~‚vô–kŒƒ°˜ŸÑ¢²ô¿‹<´Ÿ(Žy´è ™ê©¿šŠEŸs–φɚ´”“ª˜v’t÷årHU5añXëQïP÷L4RENrMWO£RhN=HIw)] Kx†wkÍ”&˜~–­I¢V‹½¹Á§¶ˆv¼K¤Ý‹ÞÂDªü‘#ÁªKi§…”çxéŠrtéeáeP¬I3REG>eZ‰Km?mz+n/^’“ŽdtÚ³n¢‚ŵ¨°ƒXÆ–©ôŠÁ˜¥l¾¤¡³‡º¡Ÿ€hµ }Tª¹•Ûx¦˜Ô…üki‹ö~5o'ŠÊks–Õžzž¬Šžû†<¶Ÿ ‰·±ø›oƒß©Çœ zÓ±¢ó¶u©^ƒ“±w¢á|E´£ 5jÁªrˆnȱ®g‰ËÒ° ‰gÆŸ©+…W»ù¡;ƒ¡5’_s<“[~.b÷‰~x<[ ‚(\´›—…‰Tp¡`ˆÀc¢–A‡ök/›;‘ÓpX¦«•DnVªÉ˜gwo¦­œ€€6´Q« Šû½Z¯ˆåÀ‡¯º‡N¸¢¯V¬ë•³qH°f˜sy¶±œ4~^ÁÈœ¤|¼½—™]|¡R’¡nYtŠj;NQoL_?»n—Z™;^o„\D¿nq[.Hüj#[#L3rh>Y×n\k1M3_¥XA3kO\µ?s§`šIm‚VfLÉdUTçM4lëhatêh{[–†Yxªgm¥ —ȃœ¦—_…U¯¢›„ˆQËßÁ¯VæÍâôÒg˪¹ì•‡Oeã>Ö]áB8‹X@Cå=2X¤Gµ?°¡X0>ošU€!SOÅУv¥Álý½Ž™îp©·>™N|‘¥˜‘r¡‘…ØX”…yyHwžÖdq’´Ä£YŠr¸"ªuŒ¹ñ¨–г¨šbˆâ˜ÌŠÀy}ýŒNx$²Ò›rƒØ­^›ãˆÍ›ˆ^vœµ@•Idœ²y›´_‰¶.¡{qº·Üš&…Ÿù‰;aD–:z¨?V’±Œ}8‘“’ì}±‡âr£E×s`b>°c^P}7W5‹Oo…µue^¯|^kÔXœ|ñaK¨S‘Äh"¾gœƒm½ÄŸ­o¤Åúž“q{Æ £šyËÆŽ§€Á¥x$º(Ÿ0|À¸Ÿ ¯œp‚©Ü”s}Þ •Tz ³’Ÿ®ƒ·ÁÖ«ðŒ(È °æ=Éˬd:É`©ÄŽKÇ—§IŒ ÃH¢‡É»‰j„аš—º}Í®K”…q©·×—¥jE½ÿšèjz¿,žfs½ÆªU€Íʘ°ƒ©Ã§é{²ø™“t §“zp6¡&Âdª”›õT‹OxµRM‹Øy|_ZŒ7z=h‹›Ì…6më£wÓw¶É‹NͰ͇ZÈÌ«M‚ôǬ¨€ãɯ*ƒÌy±­…pÎT±´†gұ݆»Ö;²2…ÒÆ­¶âÅ)¡çwX¹Ì™3q³¬Í“=nÅ r‹ŒjµœŒ‡¬hzšíƒ_N–ÚyïFº”'s$@o–/s2@®›€ªKÖ«”1iˆµ´™Fq¶T—p¸4™rs€»C“z»¾ÃŸþ€‘Å¥„ Ëø«Œ‡ðËÁ¬ˆ£É𩨄8Æx¦‡Àð¢`н·=›“c¤b?fCšì„2\#– „d2‹(y«_R{TmÌW·‚q2WRŸ+ŠÖdF¾—£ø‚÷ư±ˆÈ¯^†á¾½Ÿ~{­‚pk‹­Ûib»õ˜nlœÂžiîÆ|¥Kp«É©è|(̪ԆÁÍá¬ÐŒ"Ëuªª‹±Ç´¤Ì‡cÇ5¤±…Ȧw}^Ä¡Žqþ¹™¼gÕ´¥–¾jàÀ—ŸYxHÅH¡€yƒ²ëh÷—{>Y˜{‹g\T‰iZ¯M‚t8i V t\iŬ|Ž-Âxªöˆ©®kšê~wš¡Œ}w{\kƒ[˜aÌRÏIücÂR×C£‚Žw_Á™Â’Bzá³Ùc~WÂ}£¯œÁǤb† »?¢ˆ¶¶Îž4‚|´^žª~ž­/™¥v”ŸÿŒ oî{óa?†¦vâc/Ž €xkõšè•wH§®— €à¯L™<~­Ö™@}·¨>âx´±˜¡ƒ¢µ¥–ƒ–¯Áž1|–¬¿›¶{2¾}§Ñ†QÉ×®Gˆ Ì…²Z‡È¯"†9¿ ¥8„ °5šSvê¬H—¢uk¤B–yô«Ü›}\±µ—n­¶U—,r§¥!‘‹n<¤Z•|rM¥4•“o¤S–:uû¦0›¡~1¸ªs‰ìÀ¯¤ˆJÃ&°Èˆv¸ãŸ•£’¥n¡³Œ,l[¯)–ás¬½Ž˜ðu(²•±i=Ö{"]Š^R9; `ãR:3l´`²DÑ}ÇsÂR'‚ sòPlXB{hWªErkx`úFhd.X£<~jéYË>þgcRy=k^K/;ì\pPÔE&ežfHZ­};jçat’†¸m)±‚¡üŠx¦ä™‘‡Î®<žþŽgÃE¾V³áÔ…ÑŸÀ‹»Ò¢†v„`b>4^¹EÄ9§`fN}Iñ^uRÁSízˆ`MMz“SzFWÝÂý£¿uûÄý¡§p¨¾;šnnK®t=p—¯wjUf‹ñkÎG‰zréT{¢^tÜ·w¥Ô‡]·2§ú†Cº ª°Š «+œŸŠ’í‚$rÑ’é~ôjGšø„éjæ“Wapuƒÿp¤O7“u´@¡˜zrC9¡%†o쪳•Ý ‹$jò›*‡WÅ”â~eD®{´F™€ºiB£qr\ CÛeµRë: Y«K2(YõK2ðl=Rm6>rèRL.ÕuWW•/3€¦]`6߇d> ¡3‘gv´ô¨ ”™¢`#Y¼‘þmß)ý•”xkLU—µHUUžˆp^Gžì…šW5˜|§>Š–E| @ŽÊqâ@Ÿ~ßdfA#pr]pKrRe LN‡‡_‰ˆvOFñ€þs]CªirUÂ3Ç(Œ%o¤‰4{½gVƒ×veè’_‚ÕgÝ©?’žh†½Yœl Âpo±Äèžxr¸Æ›¤.yÊȧªóNÄ̦¡|¼Ìžnw东¡¬}¶Ý¥¶ˆ+£z™ÌŠ”Ów›¯:žƒÀñª"ŒàÉұѾËÙ°ìÁÊ„­ÞaȨIŠvÄ¡m…ç¾¼š¨²A–…v4¬ÛXiµ¾”XiѼšøo¹½œ3t‘¿ ØwýÂÁ£‹x‰¾F ¹u©É”©mgœÁ‰µd˜ç„[äŽÐ{®T¼ŠâyØ\‘Žêúgó‘(Gi»Ÿü‹6mø¦î…Ôä·‡3ч³jŠCÊ׬¿„ Ç‰ª;‚Êb­Òƒé̱£†tÍɰ…ˆ7Ñ©±i‰~ÖB²!†ëЪ}¯ÄšŸ¤sº¼²Fs¼O¡Yyù¯™–Ño¡ŸŒ‡d?›Þ‚Ç_<—±{YM‘”tADï•çs‰DË–ƒ·Pà¬å•ºi¼¹j›s‰½¸™%q:¿›îtç¿MŸA ¿”¡ª…ŸÃ"¦þƒÉ­¼‡|Ë&­+ŠÿÉGª†‰XÅE¦êˆX†¢;‡i»9ƒ€”¦‘Õpø—…Ii³’Á„ünP‹ °mµ…1x˜dÿïyÒ_¯£¥Ž½qbê:‰.ÈÚ°FŒʾ°ŠÇf«¢ƒW¼’-wA·Û˜Ìn@»øš…kŒ¿ÿœ~g<Äš¡7o•Èå§™|uÌf­2‡ Ìc®Â€Ég©)È¥G‹¹ÈÑ¥ZˆiÈ䥢~vÆ8¤õt½ÀyŸ…oG¼ÒœÙqˆÂè¡z)Û¤Ò{C­B”ioO––|î`€~Îi>RytXdÌMÕ~=rc^P|yn[UljXÌI#lÄ[$Po£eï\Ò€•pQ]–«„¦c›¸e !‚kȱ²‘,É¢¬²‘ÆÝ¥]ÌäΊäÄÅ£Œˆ0ÅN¡„ß.~æ¼Dœ¾{ö´¨˜K}а²—€d£E˜}ʬ|¬bž‰ás‘RÄk{N`š‹{Û`–¡‹\rĨNŸÂŒí¯ žÝ‹hªX•Y}l²-¢¿†‰¹·©-•¾FªõŒí»y¡å†¡·Fž¸„ò>E†éª^š6†’ž‚K›¶‘ô€y— +€ªN‰¢‚‹jˆF€ö<{ŒoÊfaèRR_±UºLªxØkHΓهßk Ã™»…ß¶Q§?ŒÀ¿/©0‡Uµ§Š‰ÛÃB¨ŠX¾7¤`„q©©–ó~<œ} uA‰—zhýqüdáPXpIdƒO{†â€o&™ê†q±ž¶ö¾Ú¡h}˜»PŸ,}‰°ß›¨{ÿ¯ž”;¯Ò›j}¿¤ “¼qV˜M„ÒdHŒ:zthüƒ¥vôhÊ–`‘‡ˆÎ§iž’‘¥ú™Ї¦”Cp«ˆ˜1r÷ª2myM´¤…ˆâ¼eª3‰æ»-ª›†¶³<¢5…"¾D©ˆuɺ°â‡:Ìv´†ÃÉ˱x‡‰ÅÀª•‰Áû§º†Î¿Y§/†Ê·æŸ‡‚·ú~dº‰›¢xú¶—n¬»’tky¥"“m_¡™“™jjœ‘Òlx§d™Ñ€–»™«ÒúÂo¯«‰rÄ·¯G‰»Ô£¡‚m¦Á”}uؘ݃Ec4¤Lhñºh—`o­ªæàYÁ„6mÿ?‘^ˆQ(3³_ÂY}A÷jqk‹Nòƒx€áh‹‹€«eÁy”gÝI¤g+R¨=bšQ®8afU¦9e¸NA@hîZNq%r+jþ†ÃƒuÁœ‡‹kc©¿Ú¢KvóÂJ ‚m¼ÁCœËk›´„”oa.€w`Ž÷xu`“†¦wt¦a—ry—¹ ¦i‚·Ä¥‰…º‡¨‡‹Ž°“£ÚŠ4˜r‰rc‹Ðx“^U“Ù~Ødê†òm€OL‚•j’F­zŠ_ç7=•sµR-š‚1aˆ­e—vš¯ßœYû¡˜“rb•~‚pMj” € EŽ*yÅJw~^jSJˆt"^‹=Yx‘gšAÀi([k?EsjVFD!t!S5Mv¹Tµ-tu‹PÄ*û|çSÉ2h†¬g¾IÌpw‹V”þoÇ:…¾_ò(;wa8Ô-tªCÀžÙ‚'W` ƒ„ÚU,›é~{FGšÑƒ\I»–{èF=„&lCðhÄQÄ@R_4J-8Ür4Uh9 { eB~Âr3?[pl]d5†—¼†ûi7‰„bn/ˆ\pÞšíŒFm­ü“ìi,¼9›âmqÀÏœq›ž$rÅÿ¤Aw:É«,}$Å”¤w—¹}›Ýr·µ„Ÿl‚Ȳ¥“Š€Ÿß”cz×™ùŒ@q‚§¨—_N¼µ¤ŒéÈŸ®’8Ìp±øyͲ%‹KË—«&†Æ7¡%῾œ|æ²T–o`«éÇa\´x”Pf©¼±™àpẟ˜7tÒµ–Wrè´î–,q¶°F—ar°Ÿ÷Ck‚–%…áa’€Y„‡%v6Q‰„6vFZ™‰õ|±c|Ž~‡c;Ÿ#ÍnÂ!ª·ˆÒ\¸“§Ðij™Êú­ˆˆ‘Æhª „ ʬ†7Í›®÷‡©Ìl®ð‡fͯŠOÐj¯©‡ͬ¨vzßÄgŸ°ow¿IžÇq3Á«¤Zz¹eœÈsU£ú‹~eR›Þù]—×y¶NX”`rDö”ÛrDDœL‚\QD«•”Sj ¼tœQu&ÜrÄŽ›ÿs$ÄèŸb‚’Á”£?‡¸Â̦¬„Ç9¬PˆâÊ6­=ŒËì«Ç4ªd‰ŒÃ¥Ë‚Ú»;?~æ¤a‘´s앱„îjl‚ön ‹¤}om‹å|jšä‡xkP³ì˜È|;ȳ¬g‹Êv°ÎËA°VRËþ¯àˆâÄ ¨t|˜½±žŒp³ºbœYjÁ¼ œhÁÄžpïÅÛ¤ÚyËf®rƒ†Ì<°ŠÕÊj«ÄŠ Ìa©2‹IÌ‹§–ˆºÉ¦dÆ¥¥±u9Ã5¥€r¶¿¡upÂs¤{|Å’¨½·¶›w6¡0Š…j¸’Ÿ½…QÊ>³•IÌ>¯“˜ÈU¨u‹¹Å?¥n…3Çu¤cƒ/Èm£ÈïÅ ¡™~ ÀŸ ~±¹ÐœGä²Â™µ}Ǧˆ”’{0–/†iç‹^zGZÿ;€(bO—„gêžJttªš‰°¼È¬Ú‘Âi«=ŒÓÆA±+İéЦÃ(­±‹Á•¥vˆ½€ („ ·bž\ƒ¸²«„ª˜ûè§K˜ù~[¥ë˜†¤r›;›£ÍšŒÆ—üŒ,uº…Ówx[Úx®o%Q°Šã}KPyïTs>¦›ˆh¶Ñ¤ÆŒa¿ø§ã‰Â:§CŒ8í¥È‹z¾Í¡l…å¬^—<~+tŠap…Œ²{rbX{öpZí|“u¤cÄŽïˆ"<¤Ÿ©’w³‡¤о½ù£m€»ÁŸóy°Éœkv8­V{r¯;›qzò¬–v¢›#‰läŒB{µjCƒŽy¶nޥ画ãȣϴɿ»Ó´¤ Ã©Ã˜Uu|±tÎu&³¬ ï~ߺtªYŒÃ6¯:ŒÎÃ-°"‹‰¾”«ñŠÂ@¬¨ŠÊO±w‡óÌÒ³†qÎV´‡Î³$ŒîÊ—¯ŽÉ5®zºÀ-¡¾‚œ¿ÁžØÿ²´x ¸a˜'nÔ¯‡”(nA£zKhl™ö‹f]Þ‘½†…a’§»˜ðƒvºO¬EŽÄ°™ˆûÆà°S‡Á«d†š³Õ{¾œ–‰‰j§vˆw[Õµ!›k1¢…ŒW ‚,kë=>d°UB5¡fLdÂGkêoŸY%wvÒeý~$u²`‘}†lpN2pƒY2C|d6QŸ:øg¿UTCeõWÃE’s™dÚDä~)o“CkŽï’`¹tótø[–ŠuŠ`%¢€•Úy"Ç ´è’"ÀÌ­Žh¾M«;Š\·¥OŠ ¦•/vs‹ÿm\CÌk¸]6qçMK*(q\Nc.BvÉRf0ÃxÌS’)‚Cam5ëxîXE.Gx„\@3–‡dl§:Þ™;}~Fõš_K¢›ÁBR›p„^SÕ›ÒƒñR¶t0G’o›SR6z^7Fš16cÇJ¿6Lr`\i@Ïxhf“:xtžal7¾Î€Aee“ó‰,nAšQ‘¶s¤£”q ²—n­»lšPq¿&œóqsÁQžeqnÄ«£owvÆ0¦èy¦ÂuŸLpµ‘˜qª¯Úšƒ¬¾œpˆÿ›^ŽŠvô•……n墓~{»\£šÆ+¬:’4ÊI°]NÒ·¹'’ÒŠ¶Ý‰@ȥþ˜f{Ú³”™3qL®£”dh¶ —áf¾Mš-qE»Z˜Óuù±“Øq®?“´qBªC” t± D™m>›öнhF‘"€]ú€AqvNT}­q}U*‚YwqZ}…vZX—…Æj`¸ð¢‰¢Ì ¸«•‡ÏM·h“éÈh²ŠÄ®~ˆÙÅq©#…îÈ´§ä‚öÈ(¨¿Æ§uƒÎÆû¦Š‚Èà¤yùÃ>Ól‰À7œ×m)Ã!¢øxª½e¡’z¿©ã“Mlç›Z‚ÙX1•0v‘H”“¢q"Cù“s•@ ›z€Lͨʑ)j–»à›=xŸœÕs8ƹ›dp°ÄÌž£yÄÁ¢‡€ÆÁ=¤¯‚TƳ©’‰TË;­ÏŽZÍF­«ŽXɶ¬ýŠ´Â‹§ï„¯¹7Y¡-Äp¿”ý„”g’ׄák* €|i†„4j9žg޾u'¾¿ Ð…xËó®ß‹‚˰°‹©Ì<°‰ŽJÌ&°lŒÕÇùªd€)ÁÅ¢ôt™ºøœm.»`›†kµÁŸ6tÂÃÌ£Fy¸Èi«o€ÝË °c…Ë{¬´…ÆÍ«†Îħó”ʦ={­Ç(§Âu<Å ¨¼t@ÁW£LwyÀ¤Ú|.Äè§Ñ}‘¾ž‡wѰ–Þl#«È‘ïb£‹cY$šr‡é\1• „s^Àœä‡%^¤¥mF¾Œ{nž“u `—ö€”_\­#™ö—Ƥ¯H”Îe±é‘Ë«uˆfÅ¢¤ÛµÆD¤ ~É—¥ìÆÉ£F~ÉÁ ¢&|á½¾žXyM·7› }ý©/˜¢€t˜‹Š lÚŽ>L\Ý–F†›dC ÆŒÕnÆ¢ƒ‘Ãv™¬Úœ…lÁ°ðÊÈT³ð‹ÀÈÛ²*ˆóÅr°»‡FÅT®Êˆ}Æ9¬ØŠŠÃ7¦_ˆ¼} ‘„¹´ —…¶É~ƒ°´¨œk€lµÇŸ'…ij‰¢zЧ¶s¤ž‹'­Þ™_~¿™EŠpjÄ‘“…}c¤™l† dB©¶–ozo¯Užg‹.º ¦&Ž0ÀѦ>‹ßÁb¦ÓmÃÕ¥¢Ì¿Œ¢.‰µ*›‰ƒ¦¡Œ‹Ön”€J`Ÿ‰ÜgE‹1„ÕpS‰ê{Nqs•Œÿ|ž­™œøƒ?À§¯ƒ?Ä…©˜}º±¢gxð²õBwг™›v!¹^›ùvBªC” tç“Ó€Xi„…-{äkg¡2¡0•sÉ2Çq¹•¹®©’°Þ›è}·¯¥e}ºñ©† Áž¯X’Åô®-ŽwÅí­2³Å ¯TŒ9Ço¯PŠ1̳‰“εˆ“Ð#µ$‡]Òþ´ûŠâÍõ¯^‘ÖËæ¬«ÅÄX¡¢€–ÀyžtyKÁF¡Uy¸Â™qs ®í”¼q’ ¬k쑎„Å\݈ºkú¥ª›$е¹ç«¦Åñ¯™…6ʳ–‚ÐÄ£­hP»£s~بՕtj ¿ŒY^K¬–ejËšv‰™[®} isBõfY;Ji?bF¢h‡h!NieèaNOrmd¶M,y’h“Hxv„b·DêuË_ÀFÐwúfœMKmõbµJštng`H1ž€éU§ü—$x£–n±’„!fA©s˜à{z˯´‘=ǯ‡Š`ÆP¯›…ßÁ®”‚°oœûN–Ïœ\dãJ…)0^2M70Ör|hœFJ‘;‰Õm}µ’¨(z½®S‚½Êªˆ{¸ÅP¨þt\¶Õ’p[ð°ÿ’uhŠ»9œïxµœO|}¸«ŸQ‚Ãn¨_†³Ãu§[†xÁ#¥P‡ÂϦ¤‡sºþ¥ãˆ“®5¡Š‹Ñ§”¡ ‹É›<–nš0wñC,’ {Pær‘`~A¶Ö°0$¼Ê¨SyÛÂgª¬†ŸÄª­w‘¼•£†ê¢s‘ývÞ‘þ|ëLrwx=@u“}âM ™€çLo¯ª˜ŸoĪrš¶|Ÿ#’ƒs]›—…z\¾Ž2m@OtüNÏ(âpUQò.˜u™T;/À|&\g1õ{{bn97x‰`’7îyƒd~5:†lp`;“ây¤BdŽMr|B-’v.MÎ{K„•6~}ReЧp6Hˆy_S6k˜Oj/dpÃWBno´M¤€tkÕ;tƒlZ=_ŒzaO‘g3dn›â‹jÕ©Y•Yq(¹›—uE¾…œNv彜„s’Á0žröÄq °vûÁŸ7tð»åš…h0±ì•Ëm¦¤“¹{Á Sú{6—E„'oÙ‘k}Dk| Í||ÁºQ¡èOÃ9ªžCÈÈ® ŽlÑ͹/’íÐ ·,åÄŽ¥h…\ºž– ¯t™Bvÿªo”zhE¶h— hŽÀ¥›p:À¾›™vÍ·#˜ v5µŸ˜ wÞ±p™øwò¦…“ÏožsŠ gxhwrS~z’g.K!xÈjóPË|+qzPirîN¦zy ^“¢h‘Ht²À¹© …ÞÊÛ²|ˆ~Ä𱚉<¾ß«eˆ¬¿?¢Õ~¼Á*ŸÁy3æŸ7{¢Á†Ÿ®z©Á îwuÄ¡üu’ ˆlÀŽœºkQÂÜ¡av£¾)¦}þ®!›Ìsùó†ŽZL•yKHÜ”ëwF®’)v2@š—~eFZ£]Ž h´¸¬šNx'Åß sPÆœkÈÄ­mdÂ`Ÿs´ÁÜŸízÆl§ˆóËÁ­Ìf­cŽhÆ‚ª‹pÀM¥ŠÕ¶“œ0! ›ŽYo•7…ðb(“™…§f€‚øb¢…‚jãڔººÂâ¨&Œ̓²ÚÌç°ç‰6Í °dú˯†`ÉN«õƒKĤ,{Š¾Èž9uù¿rŸ_tÑà £Êxu÷£ | È¢©ýBËÆ®Ú„ÒÊE¬…„\Ë%©X‚ïʦ]}-Éì¥zǤ¦~utÄʧ”rÓÁ¤=ucÀ_¡Â|–¿à +}ïºz›˜vœµ ˜m…¼»œl•¸›øm”¨ü”ølÁ ‘¦k.§a”ålö¹ÎŸ~¹¬ö–×uˆ™Î‚C_¯“|H]Ý¡¹‘Ž|°Àº¨©¼Ìâ¯ÔÈÊ‹ª@‡Ä`£…‚$Ä<¤,0Æw¦C‚—ÅʤòJÃÕ¡p|¿žv޹þšôy¬@•×{Î”Š…™i€‹waM“—mrX¢ŽkÈ©Œ•ÓxOµë o…NÁ<­]‹YÁ±ªÄ„¾ÀcªzMÂЫŒ…ÆÆ²¯èˆÊ¡°j‹CÆ´©Í‰¯¿F¤2‡$½z¥Iˆÿ¼'£‹‰¯»¹Ÿ†#º} ‘ƒ)¶ ž+‚é¶Ÿ­‚$»þ¡éƒæ®n™(|Ê¿Œ l» Žn ²°šM\·ª£ª¾×¨>ŽÝÁ§ÝŠ Âu¤ÐŒY¯£Þ‹rÀʤœ‹ê¸ž:ŠWªU•y¦¥j’q† ³”ã|5šÄ5|/€©mí\Y…ïq¦[ §I–s{“ÉÁµ„„ÔÚ½‹•BÄ—¨Š~󸟜Ép$¸œ rɾþževÚ´™¤wø›^‹—n1f€¹g·%ƒŽgœšŒ[tAœ*ƒ¸`¤ü‹ l¸ß¢‡U¿£¬>ˆêÄK¯ÅŒÃÅ«ŽÛͧjŒöÆw©—‰ÜÉ^¬ù‡Ïš³ ‰Uщ¶ÂеÑrµè‡Ñå³ÌˆÀÌk¯½ŽòÈÏ©w±Ã¢MyÀÑ¡e{"½ç¡}{¿µ›Òv«õ”{p©œ„Šh¶Œ&û]F•óy¦¡²‚¸ ª¥Š©Æn°|„+Ìnµ1ƒjÇ„°X[¬šç²VœBy0¤ ;d…£È‹ßa–¸|³E;v*aü?\gåWI@mja+EìohDL×hb‹KžzOmÿQ}›nÝK.zædÂEÏybÒG±€qnUxEfˆL}zœdUHŠÖtûK=¢lo¡n–¼„¤g­°œB‚Η·{‘QÊi±Š£Æ¯µ‡\Á£®z‡=¶v¢¯ŽÏšk…lf4L¤.ÈXH%.¥s`p<‡‹ñx–K•§â__ƒp‡¡3’]w½ž$oe¦âƒÿB(¨Y‹_ź9{Q»vŸ…n¾U¤_‡Å«ª´‡¬ÉY® ˆKÅà§4ƒd¿.¤á„Û²[‰-­s˜³Šº°¡„[ž:–×lÔ {…E7™{F\ôdªr“¾Ô–Êð‘¸ÉÖ·ùu¨Æâ®ç„IÅGª¶´³.•dpv¤\‘f^“£~>X•Ž•w C­•Ñ¡Níž(ˆR“º ¢³zw¼@ªˆÂ¹ï¨Ø‡™«û–ËpÈšâ}*U}Y‰1\vRW´8ƒuSÃ+©‚!_­.€Æeñ9cšgå=z~†h”9š…‹o\C=‡én¦C£„ma¦8e‚ihB½4qÿDEŠüt5N臥qrGË{Kd›9‚{oct>à‚rpKY}5Zo‹…vÎD:Š-uE„ŸlSdƒÎj MÈŽ‡víS¬¤ˆÖjE½:žyâÁן=zNÀžƒu\à Ÿjr}Æ  ºs9Á žêp÷¸™)h/¬Å’Rj¥¡âŽ;sÙ›j‰ñp°z|·eºŠ»tVcé›X…–u=¸hœÇŠ\Ä¥ª9ÙÇ=® Ê-°ŒéƧ¬3Ú¾x¤‹ˆÖ·% ³ˆ7«O™×¤¢‘Ïk법~f˜Á’œãmtÃÓÜr鼑›ˆu7¹{›.z3·¼›´{%¬¶”ës»›Á„¢a †ålZIÝtõ\áG_ubL¯zkŸJ¡}HncH›…"rVM““|¤X1¤òŒÔb$µ©™·hý¶1Ÿ‹vH´¬ž~€7¶{›Óy˺ΚvO¾œ7wÈ¿ƒµu&ÁKžxsÃÇŸøtîÁõž~p À2Ÿ”n#ÀY¤tŒ¿8¨²u˜·ò&u¯¡ËЏd”˜ˆŒPØ— €ëH‡’ùwJA“‘ÙwÓC‡œC†ˆ\"³€—|rôÁûsÂLœ†lGÀÚš”fÙ¾{šþb+¿õ›?nùÅŸ¥N„ìË ®ùËÖ­nÆAªƒðÀ®¤¶Š«·œ ƒ_£ò‘6s˜}†Ü`Qf]‰"zÈ\¾ÿ6lù¤·—q„®Â¬ðÌ1²Ë‹dÍʰÁˆ‡Í¯Š˜ÊC«åˆYȽ¨4‚ãÅ¥/|ÔÇ¢¢z»Ä&¥"|6Å‘¥}~?Åb¦ê‚ºÇ2ªh†Êf¬\†Ë‚«ì…Êh§×€qȤ“{yÆH¤¡yrÄŒ£ws$ÃJ¤noÀ\¢ÕuJ¹’œz;¯s”*|¢«¨Ïpô­Ò‘;iq¹š†mþ žqrò¹e'và±gšzDz”›ë~uµÊ›]~§Ø;o/—l}ÑZL‘¦xÈ`øœ×‰Äx¦¸Ñž†‡+É:«&‹QÉt¦A‡ÏÄË¢ª†àÃÕ¥Á†ê짇‡aÃ¥Û„“Ãñ£¬}=¿}žµu¹²šˆsé¬a•=v"•}ƒ¦f ÏpÛEzœ—|MêŸ3„!cLªÁ‘Œw´»$¡†‚ö¹pžœ| «!” r‡ª#•çujº£ 0…DÄq«i‹¯Çz«ï‰"Ã1£Æ„È¿m¢÷…¡¾ä¤‰RÁm¦ ‹Õ¿Ü£ó†i¾5¤&„¼t£©‚ê·… ´ƒ³ŠšÖ|c¤\Ñpï›Ê„`“¤ük£³3š7~©ºÍ¤j_¿í©æ%À×¥Z‰³Àv¢ÐŠüÀ¢Š¿¹Ÿôˆ¼±a™]‡º¨ÿ’{s_²x—ÇvŸµÕ…è©A—Gƒª…ím [Ê|hbÄKM¿‹m6Ç|¶K–©Ó׿U¢,Èt©Øƒ$¾B›mK¿8r»¿Ÿov‘µ(œéx"¤q–ów—ŠSj©ˆ­u Rwˆ…q—V:–zË[°ŸR€\¹5ü|÷¾Ç§e‰oź¬ŽÅ¥¦LŠ#Ä!¡†ÍÅO ÙƒíÉ-¤€ƒeÍ*ªT„‚Î×­˜†rÐ5±æˆ®Îp°(‡gÍÔ²XŒYÉð­ýŽ”Äx¥ƒ™À墪{½’ŸŽ|{´w›bxܩǔÕnØ™*‡¾b›ˆC{¢X‡˜j• }G©Þ¦ŒØ¸t¬˜‰ëŰU†MËA´ˆ%ÉD±1‡wÆ¢®R‰D¸:ŸQ ª’þiP¢²…ÏM n'8LqµXí86l+ZÀ@·kµ]qAcwújÜLŠxÀq¾[ŠÌ‚Šlµ„wŸ[˜~+céEá}aÑH z¡a¿IHv~^4HÖ^E²ƒ“bý>ÒmC‰Ž#trG¿·|g]±Q@ƒm˰·Ø‘^È<±]‹ÆÆ®‰ï¼wªåŒŒ¬Ñ™—Žš›†tmddšIG1©WRC§0°uŠ`Br}D§‡fn¥I¸{sa¡@ÞŠq¿C³ Ý€vLÍ–ßpÛ6t– wÇCx«¥’ït¹º>Ÿõ†yÀͨ¨jÆ<®Ä‰mËX²Ž‡ŽÃ&¨é‚"¸P¢Ìƒ¸±Kœ]„œ]‰/s Ã‰ya™Û…Š_“˜|mU>”4z,Z~¼Þ¥5†îՔ zuŲÁvû¾K¨'}qÈ!°™¬Œ‘Rg‹˜\~3OXÎxuNÿìyI²˜9úGPŸ!†ýLÚ°‚—†h¸¼)¥”„ø¾`«¤‹Y¶%žÑ}q££Žôh*“­}ŒW‡ÔoüTƒ^9mˆFa˜&Ï‹´f»1wˆ?h4>u…i>î€IfDò~`wBÅv§Tã1Jq"Wó5ü{ÖmHvQ7„õoK—|!f[?š‚¡lîEFŠ6v‹KÕŽÀz»HSDwdD"†oïB}…_jÅLk{#_!Jƒ juL~‰»d]»ìž?yFÁ‘¡»zྃœsXÞÅpˆÆÁŸrØÁ³rð¸R™VoK«î“in˜¢ø(u}±ŒórÚŽ›})dA‡œt8^™ýƒÈnŒµ;›í„›Æ¹­ŽÃɰö¯Æé«ûˆÁÃÖ¨ˆö¼…¤Ü†:´N ßŒr¢ß•É…x>‹4nC­’Àh»ÀJÜmƒÄ€Ÿ_pu¾œ;q¹šRu¯¹S›÷y±é–‘u «†ˆcE‡Öo×KçxÃb9Hç|)e_G—Õi­FH|Âj°E°ŠnXI•…hoÄKÄŽ@sÏHS˜†~ßF¿œÂˆä[èŸÆŒp5¨ô–=w2µÇšy½jœÇx}¿éœütÀÕGrÌÀ»žŸt7À®ž…xá¿þ¡|X¾…¢)wî¼ ÙoÀ¶Ìš*v¢Šlœ™yƒ‚ϼšƒï¼ŸM‡†ÂU¥ª‰)Ã/¦–…$§¼ƒ„¾Þ£ ˆ]¶Ÿ™tŸoPr1ÐtDU•vyÿUx¦õpٳșÀ}‹»4¤GŒYÀ\ª»¶¾§ºŠß½¶£ÏŒN¾e u‰î´¬{…+¦Ê’QxD› ƒ_à Ô„¿d·®0–{Óªþ•9ˆÉmv\›xÊYnJ9…ºo–Sù«a™Ù„æº  mŠ™Â%¢RÂ/t-ÃÚt:ÂR  wšº¥ 0zG¶Ù¢M€ð©„˜Órh›-ˆaÇŽØwùZ˜œvj™¬S/k½¼êœ ~m¿±¥]Ž0Æ\­#‘Ä¥ †—ÁÌ`}jÅŸ¹"ÄÔœ} ƹ¼{4Èž¡ßnËש-ˆ©Íp¯ŠÐÊ´x‰@Ïü³xˆ$Ǭ¨©~¤Ã¤üy¾Ÿß~ó²ašu¦¿“tÜ•…¢eUŠv€”`ø™—§}‹««¨ÅŒ´¹¨®‹LÆþ°ðˆÊË¡±[ŠË±‹EÉ]°²a½â¦˜ˆ³´"šêt¦Ÿ1‚ßO†ôd‹62w^Ü=:{÷iÑG&tkfVE`}ëqÒQ<ˆá}¼fΗLŽ”v†ŽR~ã`φ:jöF…Oa;D¤~’ZÜCt¼U?)ƒybP>еax.ôŒ9^þ*œ€•l5A{†Ez‘Rz© ›¤zzÅI´.ŽÛÅ<°ýŠ&Ça®4„_ÁZ¨š…èµã›‰I¢²{lNoóPD5¼WƒC@2"rú^xMnŒÄ~mÃÑ~DpŒuCXEžzS[¤BŠhÍCˈd26±Œ·l=KšÆ~ƒ`û°ü˜ãùï8“°ÉϲÁŽÜȯ߆Ÿ½F¤ ‚A¶÷œè~¤E”Éz@Šrq1Sœ pË@²Ž)tû>ŸŒuçT߃yeÇCó †WÕ·ûšPaÖ¯Z™Gn¢•”|‡Æv´:Ÿµ«t”Zo;‘IuGß‹tp H­•8yPš‹~‘NÛ ã~|> ©AˆoI·˜êr$Åcª+‹DÁܤÿὩ¡ {±¯V™¯t:±™Ö„=¢‚åZ¿¡ùx.=P”ßeY0‰Œc¿7T„Žbe3÷ƒ™d¤?t}þ`jBšnLTa1hiaR/´zNl„FUƒsmQd„%o¸K‘ƒâjNE?‹q G¥ˆÑp’DÇ‚„kv8ü€®j»:"y:^ë:[•Y| _퇱o»YU‡Çu‹\€›Œ‹piȶ‡íy³º—œ9xÌ´ª”OlŒ½2™qm;ÅbžQq?ÁÉœ„r,ºô™^uó®ü–Ìt&¤H“;v‹1s‡— h˜¢,g €r&¶¼žÎ€¢Ä0­¼‹@Ês° ¹Æ¶¬Rˆy©$†çº£S…I«æš)‡å•ñ‰:zÏ’eri&¦0Žük¿”pÅ·  r™ÀUœŽqǼ‘™røºÉšnu‡´V˜ŸtV¤uŽ%l8–Tƒ—cYÅ|LY†“zÊM¶ŒÀtóHªÙnÜIÝrO²„ÄroS@…'nKàˆ©q Gc¡x§KG’)]wž›•où±„›¥y»½Mžïz/ÁždwÂæžŠsqÁÜ‹rÚ½¨›ô~,¹·žôŠ:±Ò˜Hy|¨ÌŽåfØ¡‡‹,n¸™+&c•D|Mí—¸~êEw“pxhFÕŒs^Ek‰\pþ@à“ÌxbPÙŸã†l¢e‹¡nwŸž‰Ùf› Šþcš¬ö’Ìj§ÀJ¡Š|,˰£ˆ4Ì0±0‰Ǽ©«…TÁ“¤p…üºÏž³§¨—‘Çmú“×x OÙipJ\xÉhnS†í~ÒqT¤9›°ˆ ¿C«ÌŒ4Ép¯‹vˈ®1‡Êk«u„(ǧx€3ȶ¦…y2Êܦ€waÊå¦ÝuÊ ¨7x‹É訩Êz«§…¨Éëã‹È.«ÒŽÈ•ªŠŽˆÇÖ¨ ŠaÇÄ¥p€Å¢úyÂË “v¾øŸÚvsµ›£xQ±Ÿ˜MqЪ”²h’?‰:kkªw“tó¸ð™§k­¿Âœ‹jÕ¾=›‘i<¸e—ná­?’rs¢fŒ’mz™c†aeû‘ ‚ b¯u€2eR—އÜr€«‰˜í‡í¾Ú¥•Ž)Ä£¢«‹—Âùž¢‹=ÄZ¡ÀŒ5Æa¥6‹¬ÆÞ§»†3Æe¦Û}4ÀbžÏqi¸Û˜ìmÔ°3–6v¢£÷uHœ·/} ¨o—šˆ«+NwØ©Q‹ lw°‰‘êoV¨YŒzeŸ·ƒ^éšQ‚iIJˆoqh·›Ú‚ÀzŸÝ…ÑÁðžZ†9½ž1…½Úž!†ZÀ¢”‡ßÀ.£Ñ…¯¿£ìƒ}µqš…¬Ÿh„‡å„µwÛ` xäZÈCrŒÈpoPå£>ŽIq‹³š@{E¾Ž§Š ÁúªhŒ½©¹o¤×¹yžl†æ±Ýš·}Gž‹Œ€l‘w–Sï”úx1X{žŒ‹&o+¢‘£s pE[ ƒ¢lM^Ƀˆrùce–v‚‡i飋˜m¸h›yvÖÁ+ž÷vÄi1uYÃ+Ÿ[vÂÀÊ£êxúÁµ©¤(¼p¢íx·¯Û—(o©•xs¯Ž™Þ|`»œñuɽ(³'Áø¦ƒŽÛƯ®Åüê§M‡ÁY ÃŒÄ¤ó‰?Ã%¢¶‡wÂd}±Ãžð}XÆ¥s…ãͰɋmÓï¶ÛŠPУ³^‚ÒÈq¨áxRĤ¢>v¼bŸÍ~Ú«&˜K‚(Ÿ5`u‚¯i´Ž­‡‹l™ŸX›Pƒ¢¬'¦«Œ"¹E¬ÀŠ˜Ç¿±ˆ÷Íâ²Úˆδ²¹Š\Ê…¯¤Ž ÀÓ©é/¸¥ž€O¢v‰¶d+ƒ f(?cwæ_ñA§‚ár Ræ€ytåW…*xï^ù—¤ŠmÊ Þ#pšYƒêYR“¸uñC‹–mC?\Ži0BV„¾c9?5Ž|tWC –*s³3Lšssb?8Ž.…[a“rfA­gžwNÄ<´ê‰;ÃE®ðˆȨ®–†q˰ۅ ÆÝ¤ÑƒÈ©Å’Fl4°ge<ˆ[ãIæ/ ng\ŠLœ†3zçn.гxãmqT-FhÓL8é„lbRº˜@ê\ˆ—Èy Fµ—|²Uy©2”?}ùÀ^ªšæÇ8¯üŽæÆx¬¤Š™¼w¤?l´u|>›h‹æu¦€m£EêvhEá~.e=*‡ƒ¾h„E¶€eÈBƒ‡1h»?C•ËvlP)“{Yo‰Û~ÓtG¥ ”\z. †º`#‘r‘M³jYD;šƒtHH¡ùT°§äz5>ø¯È€RG𳻑md¡½Äœ{ý¾+ž'v¼ÀžÕqƒÁb ut)âú~5Àf›!v˜³=Š'Xûž{nÈ;:‹Ê^…8Ý„é`X2Ùˆ fA7 jðBèzJjSD~Fjb?Fˆ rYJ ‚òkøHS€al+L>…fr?˜uo9Gfˆq>GÖzXdL?va^t4âxZ]f9&Ÿý‹ÞoÔ•tƒJm#“ø„cjߟ¹‘œr8µh~©°¦•^tˆ§{‹TfO·ë” k7ÅËžq~Äüžury½ ›et"²Ò—#s_¥R”\q]œb‹™læ’€àd°—<†k‰¨o—y5·º¢¡‚lÂÅ«¦ŠÉÉÏ®‹0Æn«‡©¿k§ó…Y¹¢£„…$© šÜƒ¹’í„1q‘ŽÉyÂc(¢)Š;k\¼E›ÒqDÄ´ŸŽtmÀä›csy½šÂrX¹°™Îrµ¹ÚšÕu@³˜t÷¢ö’6qО{’ölz¡£“wiË™‰panŠxy1Zˆy×` ‹%zraLjúv„X+ˆÐw’TŠ˜w=PΑçzTRþœŠ6gš­˜wû¼,z4Â5¤w¤Ä žtGÁé›nȸ ˜ˆwN©ô”8‚4˜Æƒ¬gá‘%sAHV‘+rÈO°Ž˜pAKkTtàC²”"yÑD¸“‡xIüŒÜsJ÷¸gID­ñeZK4v `½›p„f©ªŠIk9 íÀp骆•«nv¿üžEx»Ê÷­ˆVË–¯‰‰Å¨…ÿ¾/£Ò„ ·ñœ„{}¢–‰\Œ‰»j½=¾u°Zå?ºqédöRcˆ6†÷º§½ äIº%©|Œ Å̬¦‰¯É¬Y†¾È¾©@‚Çq¨É|uÈó§¾v„Êû§v¥Ę̈ÂtÇʧ¨#viËíªª~,Í_®†˜ËC­3âÇPªŽSÇæ©*Œ?ÇH¨ ˆ’Æ­¥¢€Åñ¡|/Ág¡,xK¹är#²H–Lnð¾ÃŸ°o Ãu§ðsx¨¨“{zp¯*–jx¶¼+›•k»¿œ4hk¼?™˜gµ” jx¬ÿŽÁn¦ 2‹n!›4üqœ‘ xZ› ‘qtsžh”p{‡ªœ=‰è»ü¤¯Â¶£¢ŽÏâ*ެÅ;£Š‹}ÈŦ;‡¨Æ´¦Ô)™¡ÿzпٟpþ¹[˜]l·µ™—‚s%¯©—ÓyN´Ð£]wĬºZ¥3º±¥­â¯Õ”yÛ¯‚’u­’½o^¬ü’³kƒ¨¬“Up¨ Ûr%¸Ìšp~`Äܤ÷†‰Éù©¥ŠŠÃ7¦_ˆ(Ác£Â†'À¡Ö†5¿ŽŸD†ö¼7žï$®7–tqé~*p`‚PhKa«H6:Ï€¹cìJ:¢ÆŒ\oºèŸ¬|£Âk¬ †¸Àû¨^…»#¥D‡Á´íž „µ|¿‚q¯å™V}/ q…rw”þfcИ¡†Aj梎”cy”­á•Ivšpeoã€Òrš:½€5—Zƒicu¢þŒïe0µíšÀqÀÀ(žrUÅ®¯ofÃužbo+À{ŸÂrôÁL§P|=ÁM¥þ{*¹ÿ›™xƶîšb~v¼Öž@]¾Piu¤À WFÄ«ïЋĵ«ª‹ÇÄN­‡Ž3͇·Îš¯É¥µ¬ŸJÎc¹Ä¤—ËÈ®`’ZÕŸ€ÏÄN£€ÍS®A‡#Ósµ€‹„Í%¯A„gÈŒ¤7vSÃúŸêu”¶Mœ(|ƒ¡å‘fwï™ Š$sRŽ‚ýmW“ùŒ6uW«Þ¡Y‡D¯Ù¥³Š„¹·ªÿ‰ÝÇ_±¬†ÞÎ/´„‡úÎr²Ñ‰ƒÊ¯«ÆoÀN¦Ü”¥¹µ"¨c‘œs®†œn=LBrd[ÌD*wfðI­|ooVLjä{½bŸ b”Bwد1›yV¤0Œn\ÐÞ}ô>ùÁy·>t¡G~vM$š#wÕN8Ÿ‚ì_è£z‚ïM‚°²‘mm¢¢’{y5±O¥›‰¹Íª}€mIJ‰†÷©­3ˆ7ÈÅ®e‰öÎ³Š¿ÏA³ÐŠZ¶ºšyê–‚ÅRüo„Z•:âs¸bJ÷˜An¨:^œútZC৉„éa—µ‡ŒÈ]X»%‘ÛhFµÙ’fhí·9˜Ïnî¸,˜Æi?¾·˜°jæÂ›njùÄ+Ÿ·rFÄ… pyV¿ šÖrÑ |Qÿ‰Ýe“H¶…Mc¤<Œök4ò|õnÔF|’G‰mqàÒ.n;”{ŠS yà^HGâzéeƒQu‰¤g•AéŽtTIu‹Yv’S·rê\n|ËiC_„¤nnB«Ÿ5Ttš˜Šq—h‰¾nã “Žx²A›_t¬w”»u±§³ŒLi˜·•äl¯ÄžžqÌǹ Ss~À…œu´˜ŒuªÌ—ævžk¹m’nÉ[.“µ²^4£Ü’ev3¸|¢†àî¬ê‹7ÊO®‹;Æ8ª2ˆ`¾G¦ÿ†`¹Ÿ¢«ˆ]®Œœ †™GŒt‘-~(eŸÔˆ}i*¸u™›q Â=ŸÈsï¾7œ|qŒ¸U˜LoǶt˜Àq »ú›Qtþ¹ tu¯‚™“u§g—‰qj©ï™Ìp·¡¾”`mó”ˇzg»u‚´k‘‹€âib¡ŽJ¦cÑ}”[íš¶‚ÐX\¡óŠoi€­ñ•ÕuDº¾š{tT¾ú™jnÀlš~n¡½×˜„lg³Z”žm ‡åh±‡žl2IÈñ^x<‡áioEsÖrF>‘8uYA‘“®vžDZ”èxsK ’»zÇXî†Ür­Z[‚Èp>að“³Íkz¤ä‘¿nõ­¸™Ñwtª)™¾vè®)™ˆpñ½ýÝxüÉü©Zˆ±Ìõ­ÛˆàÇ&¨*‚ñ¾¡Â~±–hoÞš~íJ—^`Õ7ws5ZË?ny$pR_Àg‘·ˆ¬'¨u•F¸ ªJŽ}ÃV­ŠYÉ ¬«É£©n|Ær¦x£Çx¦Ît¶Ë`©]w Ì¢©awÊߦöw¦ÉŒ¨~ Ëý­8†hÉU®‹Ž Äá¨n)ÄP§ûŠåÅɦ”„¡Ãk£F¾Â%¡<~¿m¡x³‚˜Ún#¤¯‹„eHªÕ‘~lý­P˜ v^§–• y µš\xwÀ¯lÙÀ¤œJk`¼™PkÞ¶e”jG°‘~lϧx’ÿt…¦˜s~2¬Ëš0€,¬ß™y’®œ`€À±Ë¡©‰@»¦øê±¦ÎŽ&ǘ¨ÝŽÛÈ\¨Û‰µÉب[„Ää }¾÷s±¾<œÖl¼™Ãk»ô˜€q›¸Tšs7ºí¡üyœÃÙ¯X‹ÁÁ±ªãŒ~¸÷›<ü²Œ•9y»±Ù“ýrî¶ ›˜qµžÈu¬œ˜Å{¥¼& ò…ÊW­¥‰HÐ8²¼‹¦ËD¬ÖŠmƾ¦™‡jÂk¡E†lÀèžÇƒ'½ÀœyA¢¡ŠdQ|þgˆOTR)B(~«y•¬s]¯¹“l@»v˜ón°ÃÚq‹ÆYŸQrfÀƒÎwV¸½G°¯Þ†_ ¤“xÛ‘×~K]mšvùT¥ŸÖŠFnG»6¢L…ÿÆ@®â‹ªÊ±­ŒÈÅv©;Š’½S¥Lˆ¦¸í u‰õ°9…n›+ŽDrãŽ;|i^¾šr…bx´ž˜øpÀ$Ÿ„rɺЛèlæ³£—VlÙ´†˜Lp ºœpÁ¼¿Zrµ›¦uw©Š•op:¨!– nµ£M”jÎKe‹š³Š¶j<™Ò…ZiŸ™w„6fšE‰£l<8ŒÖf:¤bŽc®Î”Rnq¶þšu—¹k›?nÜ»î™,fˆ½Ò™½iëºë—‹mŽ²Ë’‹mÕžƒ„_#‰‚lIAZ€eŸ>žŠt8Jê’|‰Ib”§yDN” wF´”(xnI •~ÃZ ’d€viþž„çnwŸÛ’Ås9·l  y²½ë¦]|ø¶Ÿ&xœµÞ›‡wR½ZžTéÇѧg‹aÉ©>‰UÃe£ú¾‡ ™zý±—·iÍ—¼{Hfzé\E<ÉwÃ`³GÔˆè~|q)šÞ™uŽˆ®©oÇ·ï©Fˆ‚ ­Ÿ…‘ɽ­\{•Ès¨)tõÄì¢-tEÇ}¤Íw(ËѧÖzäÉø¥ùzÌÇû£;|îÆ#§Å¤Ç©­‰†¯Å¾­–ŽN¿5§|“»n¢Ⱦç Ð€¿SŸY}:½É>‰¹õ›=wº§êLe󙤂æYŒ™Ö„SaEªÔkbªâ˜Ñu¯ºCt,ÂYž‡ljÀfœ¾k»N˜¦i2¹$–1dŽ·¦–:fQ·-š¡v·Cž)€6»£I€mºìŸžz­º £‚7¹¹¦Ê‰2½2©‰Âh©LÈ2¬w[Ë]«ïˆØÈئz„N¾Ÿ˜|Ž·[š8md»ì™1iaÀ‹›\mîÁ2œœq¾¹›Íl¹e›f…º6+p÷¿\£»}J¿ †~7¹Ò™ívš·š#qÁ½ƒžiré¾á¢ùy†¸ƒ ü€–«î‰-Í,°É‡?Ôl³kŒðÏQ¬ƒŽ^ËK§N‹1Ã= Ñ‚o¾~ø·„˜;u*›R‚ˆ]r[[$HˆO'=¸5+Or<È7duSauL§Ì”æq'Å1¬.‚QŪ¨k}†À7¢òzq¹v}²°r™^}ž¯ÉšmܵeŸUƒÍµŸƒR±Ã›i~y³¹›¸yŸÃè©@vÌö¬à|úÅÀ¦æyô¼m¢XzÀÃ+©¦ƒþÇã¨ö¸Æ`¤m|o¾¤›úvÅסö‚ãÈŽ¥»€¸Ä³œ“pÄÀšœCr7½iž|{·zž×xˆ´2™Mx­º˜\r~²Â“Ójᱚ–yǸߡŒ†ŽÀ«¨2ŠmÄcª…‰«Ë•³y”¯Ð‚¸-œ”Í’¯Ù7Ξ¯&Šp˺®âŽ—Âœ¢ô„_Æ ¦\„Ê7­&†GÌ+²‹ÞÉëªÂ†nÇo§g~¢Á+¦Ox9³÷›©wc™üŠêpA邸g‰5pjÜ’ú{:«xŸvޝ´¥¨k’”¾­¤ÉQ°lŠ[Îø²ûŠúÏѳ|ŒÂË(¯ÒŒÅ|¬ù‹.Â7®;„ëÀ§§ð†ö¼¤­œ¤H‘TÌŠórO®nŸYElqfOí–ä“ „Y£B™» {ˆ¯Mª•qrE?’…r+Kø™™v"XŸéyJ[†œR|É\CŸD‘{wª= ªŒÝ®ÁŸŽ…Æ¢“ u᤿”g|–·×£è…´Ç³Š‰‹ÍIµb‰áÏü´ÂŒÃÈž­Ð†Ķ¥;w©#”ºqk› ‡Òf‡‘½x0cjt[¾A¶WY>].\ÝC1DmÛNAiˆ±sl[–£çަi`¦ÕŠ4Z4¨½Œ?`>¯Ÿ“nh»ùžTxXÐ*¼>–ÈÖóÃ@®TÍ€²ÿñ¼&žÐ{ˆ¬·•<}·S¢äŒ—œéŒZo™‰Ðs,Nÿ…:n+E†)nË?‹éz×S£Éìx>©GnwˆªIdjS¡f~ E<¡ùqS=1°-zI<é¼.¶™Ãk·  ’|ø¸ïžÊ½°Ê˜@…¦¶Ž™oÐ¥h]ÇšXzvXa¢¢’ms`ºZŸLx¢¸W›!o£žKŠœf®¡q’y;©ö’Çf°¶7š’n©R•žu¬ù™¹k¨H”emì«|–‰k¦Ÿp!vŽ•‡‡®qóã‚^nˆ–¶‡¾o%¡‘Suc©•ure´™ûp=¿Fq Å­Ÿep§Å»ŸÒqÓ¾Éw…·ÁœQ…®­›š‹7žÎòzlz]`ðŒZs´W»¡ÑŠ^nEÀ¥¹„¸ÉѮʋMÊj«K•ÄG§8޾Œ¤ ‹¸I û…®ÃšÚd•w„kÁ„Bn`LT•]}žUR°9–þmK¾“ž t>¹œÚlC´w™ÿjô¶LšÏkû½œejr»/m*´'™Ip¬•ïnªj”wm¤×=dóœs‰8[‡4Š÷bª¤µŽ*lŽ©è‘/o2ªr–Ît¯¦˜åqë¶ž™ßjù¾öž$p@ÀÅ£Vv¥¾0 p½¿ÏœaiÐÀ›¿k ¼˜Án̵N•øm£¦ÈŒëb˜•$z¬F¬‰-p—BðõzêP¦™¬…yYŒ™È£RB•Áx×Gž“/v±Ft”${öO+•Ï`§˜‰¯kûª™ðtýÁ§HyÆå©Ûwá¿Q¤Þu<»˜ž:yÒ½ŸæƒPÆù§ŒEÉc«œˆOÂò£Æ~»½ŽŸ]y)µ§˜£l8›…³RXEhçC]…{q5SÆ”RŒá{× ð x­ð¤:†µ`¦A|-Àô«~¦É²®Ôw¥Ê€ªãqZÆ;¤muæÆy¤z'É‚¦Ò|÷Æò£»{sÅÏ£÷z›Ä§“}’Åܬ¦†æÃ¬åŽCº£’F®8›æˆu³„˜‹|»HœŠê® –ƒ~–£3ølÓ›)…èZ>—+‚Z9¡ÕŽl„³#°zV¸÷ž3xø¼Œjn‡ÂAžÖkÝÀló»L™¬i¨»`™d-½ ›WdÁ‹ž>vÞÁù¡œ| Ã÷¤Á|²Àñ¢ƒzk½ù¢%€9»¦íˆ»b§§ŒL¾•¨¶‹îÅU¬ü‹ÔËš«ˆÇ@¤R„*ºž&|v±I–ql“¹2—SiV›!n—ļqáÀ‡œílX¹D™ñgã·ß™ÿl)½øž{tPÀ¡‚v˜¼á›Är»^œÈn£Â„¢,v¬Ã=£D|H¿³¢Ï„ƬʋºÐ¡³W‹…Ú†¹¼“UÔø²ì–ÝÏe³q—>Ǫ‹ôÀìõ~²œ”pqÀ–&a/{)hãR_aLMAG3T³B’@tÈ]ÀNv¨Ã•2wJÆ{­…ÖÅù¨-GÁg¡}Y»iœTw#·õ›øx{·êŸÛ~G¾º¨…Ǽ¥Ó„‰¸ 22»æ¡·z{ÇÔ©øv|ÍÒª`tOËÁ©ÏsçŦqq`Çצrv§ÊH§zøÇ¡›y Áò›*|4Ì|¯8•×¢»†šŽÌ㪄êÊt¨A’¯Â•¥Z ¹¡ú‘du¥”Äo‡Ÿ…á^>™#€.]KžÔÑuŒ³, Hˆº{¡=ŠDÃÒ¦›‹ëʹ­fŠÎz¯ ŠñÈ£‚õÞ¸}e¹ €šÃh¤žŸÆY§´ƒ›È «>†¹È5®e‰ÄÈ!«)„óă¦X}Å¿½zrt§•rv#M„ˆm™‰DÄeþƒù|çhʋʅ}§Òœ§;¸Ç«™”³Ãå°ú`Ê~°ã‹ÈË]°ð‹ÃÍ®²•Œâȼ­Ú‰³ÆÏ­‰¶Ä®……ÐÄL©×ÖÆ!¬dФÁ|§¦Š&›è~:_XyPTý;¯m@ZÅJ~÷yeo¤„´yTcN‚jšÄ®ªƒ†œÂ9ªùŽè¶ùÌ ¤ã’€’¦É[rƒ¬S–Tz…šJŠCp‰”V{b ’ßy,[=š8…´b<¯–ÉoÜ»M žx›¹Â°r„»ê›ðl‰À­œ®lüÀÀœÌn–½¾šmE¾[›.k¦ženÑÅ^£ÏyÚÄã¢êzLÄÝ£ìzLÀš¡þyF¼Ù £~˜¸ê¢kˆ~´N¢DŠþ¶<¤0ˆ,À§Í‡šÉ ¨?…bÅ¡¦€û±6—ùq†¦ËŒ_c&¶“èh4Á@šcp¸ÅüYtNÁ·œimu·¢—?io´™—’od¹‰œ/uª¸é›¯q´ö—li·mšülRÃ`£¯vÖÆÞ¥z|ÙÂU£N„È­5‘äØÜÀ÷ ëNÓi²­áqË.¯kålØ-¿H֑Ȫ´´Å±ªqŽt¯b“bpÝ–†&hiý„u‹‚™uSjâhTÚK|ñZM,ŸÈ…}jÈÀ¦£ƒGÄרƒ…qɤ±€§¿œžq Áû£‚tµÀx©¨~EÂE¬¡„¿G¨“‡”»ô£Û…@¿¾¤û}‚Çí§´vÎÌ«‰uÝË=¬œs€Çà¨ym®ÆŸ¥”ohÇH¥§vÈ“¦â"ÆR¦>ŽéÌ;¶ÁŸÚ/Å,§]Ú–º³á1º™¼ Õ(»mä}®AšA¥Š—‡H_XÌbaEZ…§nÜWßœó‘Z|©µs£±‰Y¸¼žÈ‰íÁæ£,‹ûËè­ã‡qΰMˆIȦö†§ÃpŸÆ…NÁ_ q€bÂ̤0}OÆL¨Ì‚ˆÉ[«°‡ùɽªˆcÇ%¨±„ÂÚ¡{*µ’”£k”œ¬‰ýn ‰š|fji€vwd‡€«w_j ŠH‚ÿvɤI›:†N»U­«_Dz܎lËݰ.ŒrÊ#°-‹üËO² ŠÑÇz­*ˆôÄ`«‰ÅÂݨM‡ÍÃ…¦ƒ“ÁÊ£n^Á¦¥0¥R‰rlð‰8icHVn½TqF¤hÖXïL¶_£R`?^kGU7òfbR4BjYyGbsm^ôI«~„b¼I†s\U!G,yümeæè‰,Þ‹ |Öi0ŽyËdÇ~Šcì¹5žÅz€Ês±¨ˆRÏh³ÍЇÍ2±ûŒ·Àv£Ä}$¸±šxj®¯*—ðh[¡–Rl…Žì~rbò}\m}T y”lûOðzlm«C\€§^%=;‰¯tuX¬:—Ü|<· –q_²´ ‘ÌSг¨•hy¿•ž}x0Æw¦C‚wÇרGŠÆÄ=§„IÁ¶¥¤€&º,Ÿÿ€kº&£é†·.¢Y…©šV˜œIŽNp^™‚¯_#Ÿ°Œkk¡†Š¶f—ŒlnC®³mî>:™Ìt6¦ž„DÁÏžË{²1‘äkš:„Èi‹5{žj{æuñj)‚–ysnPŒ«…Npd —D¸ä¦ºŒæÅŽ­ú̯Ìe±$Š&̲ ˆ@Ǩ¬z†yÁ¨"ˆÀ7§â†>¿—¦Òƒ>¾R¤c~½/¤{¦U–ŠuÙiˆkÀ„†taׂs½]ht«eçDn£^~@—b»Q3[c(S=¨h,TÁ=)se[–?SrR^eGõr f R€Šv3i6>reir‰²x¬h<¡Ø’µk¯Ã,©áƒøË]²ì‰AÏ·²ŠeÍ6±r¢Áà¤ï¸ššÈiįk—OdLŸs‹’gƒìs\U¸[sˆY¦ÆˆHq¤‘v„Æd„ÖuG_“ÿaYn¯H›Ò‡2Ä¥|zí¸«–å\ñ´I™ÝiÀcŸ&zÈ!¨yÊ«‰ˆÆ­©ãˆJÄȨ4†Œ¾x¤€¤·œ¢!}®ƒ|V©Á†Æ¤.šc†ž‘Nt‚¬™˜Át¾¤Ñ_]ƆmoAüƒRbÓ:ê‡öc€2’êk5èš5ti9£Èv0;&ª5v47€¤õtP-ž§¨w:ƒ¡rÇ8Åžòl”+7Œ[$$wÜTå7~möR92}XaÚ1Ÿ…Çk±9p€èjÿ@Aw]Ô/”~÷]'ˆyi>/ÞèˆR(µŸìv,·¡üzM³‹š>vX¶&˜˜m À¤plDù ÎpÂŽžvÓ¿Œ›•pR¾ ›nn¼N›0sª¼x›Ârž¾p›Ám/Àšœìo¬£u‘yn]—f‚¸`ÇŠq8J¢}ScòC‰LqeVŠ¢n—wò¾"¥q„"û¤‡S¾az[¼®›ävعۙ‰mÒ¯F—*l² Å‘s•±†»p…—sc…>rŠ_£Ÿ’Šu¹½ð¡:‡OÈǧ ŠÊ4¦¨‹UÇV¤÷QÀŸ‹f¶}™61¡x‡…g$ûm„JR‚îhJj’ã€ýe««–Su¢¹á›jr]º™uqƶ›•)of³·•µo(±–Äp#²¿–krâ±—“sW­š• q$ªÐ“¡p¹¥/”˜q8ªŸ™†vi¸S Üy Ã9¦*{MÆe¨ |®Äá£xüÄ ÃuÇI£Ís™Ç¦Eu2ÆE¦!zkƆ§ø|0Ç2¨6zFÆã£.uÑÁ±p¥¾[œqN¾Ÿcvý¶ƒ›ƒuÕ¡RˆÃ\Û˜h{ûF–Ÿß†^Ú¡ŒÊfš.‚(U[“y:HŒ“qzFˆ¨rìIr—‡g`k²Y›¢tÏæþ}Ǫ¨„y0ä¸röºù›:îs§fHCs!g™I{qZ_ÊKÒt2lFf|Œü‚rÖ«ž™y¿ÈN±”ˆÉÌß²‰,ÍÒ¯O‡5Ì7°ô‹«ÁÖ¥õ|'º8šïkð«þ’ƒb¬˜}‡ dixÚf9Gý{km2I©œö’uY Ö¤m±ÙyèR†’•€Î_œ·ó¦6’7Íh´¡Œ!¿›´n?ºR˜he*Â-¢Ž}qË݆߫eѧ²aÌR°ÃŽÃʉ¯Œ‡Åm««…¾¡¬—†4¼%­Pý·Í«H•¡.–ƒRšÍŒ“l4¥²’ jߥ“c’–èw7Gw‹;mF=B€nbþ+P€c•.®ŠPm·:Ñloz<Ù™`p)=þ—Âkî/¼’)mš<_…Î__5ç‡ùbÑ7ÝvwS,š0tT»ù“ gÌÂ÷ M€ìÌp¬‡Œ™Ò>³¹‘©Ðh´Â›Ïd³ÌŽ!Ì °÷‹ÌÃß®fÄÏ2Âó§¸Ëʾ8¥ñž˜“„zæ–×…{e ž¸Œ'k‹­Ÿ“¬qØ hˆ\[-š €ðEf³*xv÷[ì(Á~,gs6@ˆ-o>ZöoÅ?Ñ‹1m8;T‚¤hÝ<­vè_Ñ:Ùv`>¦m™VB:UkÅWo;zi7UÑ8qm$Z:–lX3Hn³Yÿ;Ei0U{:wpÏWAàzªfBA“ÁS§G™8x=³»¤´ƒÓµr£cV­§›ptʪ]–Æmê¸Þ0oÌÁ…ž©wïÁšŸíwe»Ëœ•qkÁ¯†oåÀò›ãiνmœi¹ÀkŸtpó{Šhl†ˆ„q`Vly^¢O£t[ÙND~‰oÉQÄ“4ˆ9g+¨;–4ws±­—‘x´¥—óu ¸ š_t(´˜’oqªy–;s¯ ½”Æ{X•/†`q1‚…mZÜ€ŸlUú™ŠŽq&µÒŸaŠ:ÃŽ¨þFǨ²Šų©qŠÌ½±£ßƒ·µËš_{8¯£–3x§£Ñ‘«sz 0Žrny¨É”^pƱóšýrã®#–[qS¦ýr‡¡LŒÿsºŸáŒîo~ âŽÀiv¦á’°kó¨K“Ln7¢?Ž@j ßšjª§¤•¢r¿¸” áy6Ã&¨Ñy†Ç/ªÙ|«È±¨±{¿ÀÞ©pG¹zšm‚¼ dr›Âè¥ñv•Æb¤‰wEƆ¡v×ÄG  t8ÄŸœsñÃ9ŸÅwWãÎ~)ľª †NÁ᪎‡š±{šFz”ŸŠžd[ö†î]ŒžW‰™_Š¢¦Éjï¦n•ôsŸ¦‹'ké”Î}H\"v´U~*ƒd‡¸f˜ásîÅ[£YyzÆ2¢SvÿÀS—q€¼z›çm‹»Ôšÿkˆ¹¨™˜l*»Ðœr¿yJÁ £xxs³š¨q#¢h‘alë—•‹Œo¸›D‘ |®zž\†ƒ·~§ ŒL¶s¤Š‘¸ˆ¢9ÁÚ¨;ŠáÇ&¬4Š"ǰ¥Ð‡gŤ`‚¡ÅF¦"}´ÅĦpuwÇF¨jwèÉqªŽ‚cÊ ¬Ø‰=Æq«0Œt½&¦²Œ~¯Bšh†ÏžáÀy죓-̾‚£=‹ÄÄõ¦Ä‡|È¿©—€6Á˜ žx“¹A›ÈpŸ¹Ìš²q]»ƒšÃq9¾,œ‡pþ¿Á›klo¾ ™wjŒ¼P–Òjþ¼\—vo£¾îš!uÁÆžTxiÀŸ²vʼʞy#ºœ Å†¸û¢VŽñ·€£9É´éŸÓеž$‰™µKœå€Ÿ³p™et.º‚œLqs¿ý ðvÛÁ%¢NzíÀžwB¾Jœ:tмsœkHº±— iû¿›-ló¿ÀœÅtøÀŸ ‰yÄÀv¤t@Á磃tøÂ ¤ñyáÆÄ§‡|dÈ;¬Â{úÞª~8³œšÉua©“ýnßu/¼žœ”zÆ~¤¯xëÈ•©oxŒÃؤBvÕ½šŸ8x¤² ˜ub­Ø–FtX´uœ¶¯4˜LB¢ƒÏwû¡â‘­p²Æœ"rʾɡ`tôć¥þzÖɨ£ƒRË ©‰©Íªª®†PÆZ¥~¹ýœàxÄr¦¶‡Ç•ªV“õ,šN~‚ èŽÜc¢£•Äsb¦³˜Évy¯U–¯e›Ä-¤>zÎÆM¬NˆÑË‚²æçÌš°~ˆÃÊk®í†rÉq±ÁñÍx¹1—²Ð—º.š«Ç¯ª8ÔÆK¦r†¶ÌL¯y‹þÐ ·ðîͺ± ‰IÆÔ¤Ð}Át¢"^¸^ž3€ó ÿ’¬yl:†ønJ’ÏŒ~r¡ž˜Ä{c¸Lª ŠÌµÍ¤ëŠÎŰõ‘ŒÏ«´pÐűªˆ%Ͱk‰HÇ+®¨‹µÁ‰§»‰À°§—ŠÂ·è¢©‚Ø«¡—ÒpJ ˆ‘#i̇Ô~¢`ª´¯ª¤‹Ók¿n¾pÃ¥¨<¸Ä嬳nŒÍy¬BJ_¡Lë,oW«Mú9®iG[ùBÚm'[ƒB‘gÊU¿DÉrÜWÊëmmSäB‹v›Sû2T‹/uêCxŸF‘—kƒ²Þ¥{†´´¥þ†¤g—?zø”²„[€¥’dfì¸`“$mܾ ŸŒz ¼Ëœ…xÄùžÿtòÁLœîi5¼Æ?i’»ßœtiK«ŒsjŸÏ{ˆ`u‚To*a{:fõY~~mîQŽ`cò¢`’Vt›°U–†uB·!˜Ñs漜µs·Ê™}r·«Ð–rWœÁïn½‹Wy dx}jd\’‚ñrß_œ¾w¡·Ó¤$Œ<Á]©ÌŒ8Çb°Ì‘ÿÍ™¿æ¤tó²&“¼´Ç›òw °×— s§§ •ÇuA¢QÚpߦf’¢Ž‰gµLú‡…­È˜ ¨¯­›n}#µîŸ¡zP¿õ¢|ZÆ#©|Ïó³ŠÑЧ°\‰>̨â#Åd£V‚.¼‹—}æ»DŸùv”º¡ u/ª— lУ0”*kÞ¬«›~{]µ…¡E‚àÁÃ¥÷|ÿÈ”ªõDÉÀ­Å‡ƒÉÒ®–‡Ëï°¹‡kÈc¯\нǵú’ ÕFÈ"¸–Þ³ÕjÊgÅÙ°x˜i¼ ™ vȪ§c‚$×VÁ›E×ù¿¶šÊL«Ÿ…¸Å©…ãÂM®Š×°â¡ƒ‡˜>¢pU”W‰„m¤û•~‘ºõ¨£è¼õ§c‹Ç’¯ Ž§ÍŒ´ÓÇɬ‡õÊà®7ŠGƺ°¨Œ4Âæ©?‹—À‰©wº¼³ªÒŠz«s™ër×—’„d'‹•_n«£ØŸ ˆ„ÊP²¬˜» ›&®‰¾©¦t˜PŽUy‡EúZbI!+®VM€7øj6_"Ctþc[F—rïb=Iyò[7CH›õ‰*q:§ã–c|g²‹þb@¬;•úk9Æ ©¿€‹É>©zšÂšžéqSÁQ ð…BÀM£-‡àµr›×vñ§”}sî™GŒ¤kH~p/JÿUrÝMÅ–…ªa ŸhŠÍbÿŸø‹ƒa´¡òŒ9e °û—<{ºÈ«À‰š¿Ý›är"¶“7eŽÁož.zɃ¨‡fÎı‹ÇÒcµ:“ÓµÒ‘ÑÍR¯òßÇǪ'†ÃÓ¦O€:µQ›Mq£ŽtzdZ˜q­Ui:ÌpsG…¢ÇŠâe;²94„hÁ8¶§¬ŸX”1€Q…¦h{:£‡cf®7Ezo¢;Z‰XkJ:-=f6 ~e;4§´hè9ÿz|h?'mø[×9ìelRR.4l T}. oVq2kU8<ˆkòUÑ@Ýh0R*@†iIP,CQ{ƒUÙ7š„›q6b£U“,tk¸î§Œ0·ä¦Œ‹¯£ð–¯…q¿HE•z¥CªaŠR]â­”0jª}ŽoS¾–“nŸÂCš_gñ»Cšjf¥¹¬˜“ižêeiå”2‡f Ž‘€ kð«qÙ`E}þjVs¢{%hc¤,’zI¶ø˜¯w½’š†r+ÀÖœ>rY¸¬™þrž¬‘•uá› Œ»omŠÎzîd€õqDeôˆ€ypƒ¡…𠆓¼–­ª‘ο㩈ŒÌ1¾_¦ ßµÞÔ„Ò+˶)»l ozû²f˜ŸkÚ¬—ér~¡ÁŽÐkï <Šœ`ñ°.”g{¾`œ³qëº ›Öpl±î—éo;¨"“ñn~¢Èm«§Z”pÿ¬Â–6rÏ }jl£˜½‡¼j* P‘îq‹´wº»¬ ›~Sµ4žo†s±Ö™~¦L@išÌƒ[W™L‡^Ϧh’vkþ¹ù™ v¾kšÜt™½»˜\n¿ã—ÊlGÁ’›/s Å˦I~Çÿ¯Œƒ]Å=°É‚ÈÀQ©…>´›£ô¢Üf•ž©†U[£ŒŠ]𞌈ác…‘ÆxìXƒ“„|1\CŸç)n¿©–Óq ·©ºvyÁ²¤€x²Ã0¡×lÀ<Íf½æœÙk|ºyšók;´f•ŸdzeºTš?tú¹âšt¯¿žžâv"Ãp¡xšÂ¿ ÖyMÀÚž{×¾vž¯r³ºùœ·rm¼,ŸèzíÄÆ¨9ƒØÍ_®ü‡öÊÙ«G„EÃÙ¦:½ÌŸg~ƒ²–9o/®ô­i¾4žBzÈÈh«4€&Æ_§{‘³#˜Öq+¨>dn–²4›Îû½i©2Œ½Œ§$‹C¾~¥à‡âÁª¨‰OÀÏ¥„.Äe§ªÐÄ}+Ê6¬Sƒ]ÎS­ÄƒÓÉæ§Ø€Êæ¯ !Á:¨2Hº ž!¹ÂžŠzе·év`¶ÿUu›· žêwÀ·¥¾Ș¨€ʺ©é€ºÄ8¥Š€OÂc¥û6Ǹ®t„=ɱ؈oÊε‘ØŸÊÚ¹,ÞðݤÚ¿Y´nž›³¿•nÂR£~xÜØƘ£xÝMÉP«jÎ¥°æŠƒÇ”©r…¾Ä8®·ŒÓºoªõ‡ ¢M–xt4›÷mš©Ð•–è¶½¢"h¶N{ƒd½¡€ûÆû®A‡ÿÀ맃YŪ¬ZŠeÇ2¯£ŒÄí¨"Š6ŪvŠǾ¬ ‹Ù«mš÷r¬*“_Y¤°±Êê£õ¤3º·¨$‘bÀz±˜—צÁ˜Ús³„?oûALa¿M/µWÉK¢2yµkiH[tŒXwƒgsNìhˆSéD¶‚ülÏY)“}Wd‡˜zƒˆZ~¤±d2¹œ¶qê¾ôœ'lR¹ª—Dc?¾GŸ‡zÃĸ©¹†·»¡¡á{²²Ð˜K|ܸ‹¦t‰-r¤R¢Œuîc¿¡‚•®v,§3”(j¥#ødk¤ŒÏ]4®±•¢p„Ä3¤ÍqÂÁùs8º–DjÕÀ žÃxÙÄ_¥Å}ÌÉk­¤‰Îû°wÑê²_Ž•ÊÁ­‹¤È‡ª·ŒŠÅò¨ƒ%­:’›gó‚]j–KÊ^>Io0vyãW®6ªŽftYHÁ¥Â•È‚-³˜£"–Ù¡ “ðyô‡$jš9Ñ“go4:Ö“³rC:pŽ)jÚ5YƒÙel3këg 6j<8Z€žm1Ccx¾d>B–pØVÇ3KtQX±6LrVí4OpXè<íjëT?RgˆQ¥>Ôd4PD=ub?¦„AkD`›Ç‹BuP¯oN‰ä®œÌƒBŸÿ™qƒ†ƒpÙF´ƒÚoe=k’xî7ٛ„tU†™={Lá®L]bÿ¸ƒ”1g+º<›Àg0·Ù˜{iÕâŽXlp–Јhå»l›{l°¸C˜ˆo”»M›²uFÅM£)xÐÊ.©­y}Å®¦x°u™ qÚ—»ˆ¿ju‘ñ‚Šk‘“ „cf+” ‡¿fK–Œp2•i†¨e“šÒ†¸^ƒªË•rc¹l  ~r¾¸£#{ˆÃá¥êwJÇV¦Æx§Êö©€­Ì¬ð†Í¦­ŠkÉϪNØÂ§éŠM¼ú¢a…½ª¡•1x›|…ùd”®ås˨­™ã€à³ø›„y ÂX§({F¾/¢ëvŒ²P—lmžªC¶dë§q†b‰´#—@p9À‡}xWÃCvXÂÉœÞqb žÕrvÂî üwœÃú¡~‚¿y›Úx˜´”l9¬·‘œn묃–Ïzy´Ûœšƒ¨¸±žU„N½ ¢å‡zº°œ ‚=©`_qa¤‚Ž?k½µL›’y)Äi§Á„¼Äɦ8…ùºÎœ1~—°#•eqº ©‰àd¡“ €»\Œ“î„i •ŽŠÒqÒ—àŽ·s¥Ü”6u»žJ{åÇ[©FdÅI¤a0Á# Âyl½zœpe¼<œ›n#Â>¡2usô£²vRÁÒ¢êxÓ¾Éwa¹x˜gh@«™bc¨®Ñ˜¬v¬¿·©qŠk̲ð¾Ä¦õ„Öº-œüwѶ½˜çr¡²–/jƒ²0– m˜¹ßœzÙ¿¤#ݽ¢žózE¨RŽ˜i ð‰fƲ£›=~)¾”¨Ž‡¨ÁÚ¨¶‡FÇ:«#Š<ÈZ¬íŠBÇþªFˆÆ¨Ú¸Ãö¤£~PIJ£<}½Ç¤ÖzßÉL¨e€ÌB²Ä6¿È¨ê‰O¼¦ŸGÉ¿j¤ÖÂP§©~eÃK¦&x Á%¢ŠsjÅB¥f|ÈÇ¥â}©Ès¦I€´ÀÅ #~¼(Ÿ/}¬ÂÚªWÅÈÆ°H…vÉW¯÷…°Àº¨©%³ë«ொž”‚í–¨m„¿¤Çv•ÊÒµîŠ;Ò\»9“Ì‚¬¾…5Ç¥ „·Àx§úޏt¥a‡ƒ¯¾›3}ç§§—y'­œëƒ'®W›þ‡¦\‘vxn¬æ“rs½·CŸQ|¡7~BÁT®ŒÀÇX¯ Ž€È@ªŒIÊè¬òˆ¢É𮡊¢³;œA|¥í”…rM¨Ÿkˆ›ÿ•‚ðž@›ã†ž“˜“…2Ž:€*jÈye*C²räf·E\jì[à?w~Å]£’„jbvFaH±XUI9eËPÒERnV»GCieHJ¢*gµ/šnl¤µ—(f¶µì•ýdñºUœ>u“ÇQ­I†fÇ—­Ý}Ù¯I˜‘mh˜Ã…4da|@j MÇ4Zdš«M›Sw?°Ì˜6il¬J’e‡§vŠH_0¯””ekr¿]›hu}ÂsF½´˜ájÁ/žQu.ÄØ¤bxFÆí¨ÍÉK­%†iË«|ˆ7ÊO®‹ÝÃé§ž‰À¹¨‚‰j©¦’áo{,bBGÍY‹EÉ/îd›KÐ.òw?]JAKÔw¿]Û™$ˆ"nl‘yüIl´s;pœ¹~@ðŸ_~§Ae”ÜrÊ9øŠ×n-6ü†õnL6‰¶q¨6ˆ8lí:àzYgzAivÈ\(…±sš{di+Sáwh”L(z‰q:\û\yaò™MŒptŽ€{»[±iyQá;½T C2iT²GÐ7‰STK©FšwÜj‚M„¢ Ìg·x›oj´A–Sib¶Ç–Ek{¼†œuLÇ|«P˽¯}~®”]_§‹ör–I„z"gG7N€ª_t¬n™¥s·šƒlгg•^hj«ö޾d#´ì•$n$¾A™`twÀn›Lt„¼šk¿ôn Â}¡Àw£Å^§Ü}ÉÛ«€ƒŽÉ8¬T†ÂÈþ¯ÞŠËÄܪ‹†°Â¯§Dª…—Öyš€ÉnYKr[òI|/&\âIk6Ãd/OãA4…(nMKŠž{T ‡Vn‡Bì—K OR©¤Ž²^%²%’¸h2Œ~aE/6tÌ9Äùui>»’ç{ò?2Œ—v¡=Ó…tBH8}‚fŒFMv6\›:þo€S5^iQ{|h¸(¥¡ŠVrŒ–}{#OÄþq=î~…a‰;sv[cE@hœM1’x—YsšÇ€¦W@‡W¢à‘Ìe•¨ì—Ñl «t—«lY¬.–ÖmW²,—žpq¹9™|sK¿šž,y[Åߦ‚{ÑÆó©ÔxÀó§âvµ°¡‡|ñ÷–u3ŒKy‹bðˆvQ[&‰{bކÊw•a8jpN hIò•@~ÈZà±¾˜rb¿|¢ªwÂj¡Þr#Å5¢MrdÑŸèuØÁ3 €ØÄ+¨ƒ‹ÐÄV®½ÁB­ ŒŸ¼Œ§JƒÞ©ç—pqÕ”L/a ŽÏßw«š ¿„N¯Ã›ß}ÌÁà§9zÇÇ{¨_x¿2œÌp©Œû`! ‚´Tj­âfƽSšrçÀœ¤s8ÁÞ›Ít^¿ü™‡s~¾Ù™Ýt¯¾™Ÿt}½»–(pRº–—EpE»XŸO~w½l¦D‰n½å¦÷Œ–¼’¤’Œ,¹ Ÿ/‰<³³˜-{°£FŒœd?K†ËWɦu’Çjì°à—Qs?´?˜r¼ž-w‘»®ž‹{¿ªä–±q¤Ö–-ˆú£’•^ƒC]Þv³™Ž`l²£Ð”:mO¹† Ôw¼ÂA¦P|´Äu¤0{²Å¥„wåÀ.¡§qͺ·š#fÀ¾”›fdôÄ¥¡.pÅy¤áx»ßšÖmÊ©Œ._žåˆ.c˜ ;ŽUm‰¤Œ“‡z+«—Çz=¥ïŽKk©¡ˆïZ†¥RŽrb°“–RjÀ¹Ðžvÿ±:˜`s ¢´Œ gõ¡8–n£¨¥™xõ¶§)‡<Èݺ–D¼j¦ç‰Q¹›£TÁêŸ&†Ã¥h„ËÂ’¥=€îÀ¢özZÁÇŸšx¶¾žJtYÀŸŠx;¿þœ5u‰¾/Vv-¾ÞŸN}­Án¨ƒmÄÁªOŠÅ¨éyBÇe¦xNÉŠ¦ÐuÊ’§%y¤ÆI£î{ÇÀ¤îÅÄD¦Ñ†YÅšªXŒÇ+®v‡=Ä€¬c‚î¾f§qm­ –³oŽ”®|]YšÕ„p^Q³çœ|tÊÅ®ìœÉ(®P€6Ëí¬„4ËO«4…ëă§Ë„Mº=¢’„º«Ñ˜)«®b™øx`¼Œ¦Ç‚…¼°ª“c¦í•™‚Èœ«‰Är)ÌyÞ`º€pa) ‘bk޳œ'x²Á¸¦Œ…Êh­š×Í–±ƒFɵ­Yž´ý‡‡FŸÍ’ z9š•b»œQœj†E™O—®–›„£o/ˆ)z=`‰À}Íd®ƒp§˜ñî{Z˜_ˆ2mÔybYC2Z_G¥9VäEÕ5¥^RÂBá[·T?XñyUy^\¢á#dйœ­h7µš–$i>¸à˜›nl½J^uàÃ’ªH9È)­zHª~‘QZƇ?ib>‹«u“OŽŽ¬€¨]{­“˜zu1¸˜˜rmó´y”¤h¢¯r’@g·y—qe¿<œyHÀz.¹aš"o¼¹œš=nà¿ÌŸMuÐÆ†¨}2Êf«ÃƒðÊ1­‡6ɾ®"ŠžÅ~¯À†o½s²ßˆ:° ™Ò÷¹ƒ@gBn²`[D²apSÍEØq—bC]qŽo{ŠWz’:~lXAŠäuK)›Â„‚dÙ²•Îp°×‘,h¢œU}³Dÿ÷n¢8¬es˜@¶‘zÔB•y0A;‰›qå>=| c9@~mvU1ëc…OY3\\©MmA\N_98oºW%44cQõ/µm÷PšCg{ia¸/=ˆé¶gæššvŠžB™Ìƒþ—‚Œ'qY—^Š3eŒ/q`@ä”`.²‚ýi};O~¤g7{™[ƒ-ü‚õ_k1¨ŠhiB9Ï¢øˆÒc&˜ ŒxvH>‡‡tAŽó‡xXŽK‰Šxã‰Ç€3l¼†ýu†\?™p…ip®´–!võ¯U–®sô«a“ºrw±¾•.t+²è˜¤x-¦N™ ~Áš_’+{Ú‹¹àløw4j2YXq«`MMt`|J]vcasKý{›jöN†Ž^úe¦˜‚„ñ»{«p’དྷ¯‚¨´Á«(Œñ§›$ʤ´~nä±ø•½nŸ¾èÏp+ÄŸ ÛlùÃéž¹jŸ½gœ‚puµC™¢r°G—nµÑœOw¨¬V˜w|–þ‡ÜpÀ‚Äj˜8ái’2|8eËŒ$xþ[l‡”uíTÙ…@y¨Z_‹xÀYÙ“»uM¶žI„×Wزq–¥mÁ¡œ‚ua¾ú™·sp»½šœsC½§†v¥Â¼¦¼€´Å\°ŠÔÂ6¯BˆE¿O§þ~Œ­—Tvz“Ë}µcâ‹q'I¹‰ÄlÒ>Uy¬]ß<ÀtÁ\hFA‚ƒkcNØ‹xŒUÄ•8žN¡œH‰ŸS¸¦9–i°¯‡ûrº¬/šrt¥¥“5p¥PÃrL¬ ’v¹å›kzÒô§}VÃ8«{x­»Ö¤s%±œªv šwŒ³oˆ^v]þ… ug^ …‰y¾eÙ~ŸpX(vªa¶H›~mL`™æ‰HgsµVosrÀZ£ßu¼Á\ ‰s„Â?Ÿ>tc½›îsy»Ô™­zÃÏ¥‹ÒÄ«¯ ’+¿ä­‘®·Ó¢Öˆ&¤{3nSŽqQJ`{ýb&PeˆuÔe-¤:”xjÆ«Ò~¸Ë°®%xaŽ£íp޳•˜hù©{ŽNc:µM•§k¬¾²šÓrÂW¸v)Ä}Ÿ@xXÂ]¨t‹À§›&vp½™u¦¼˜üq•½Ž›fwˆÀP¦g† ÄÇ­›¶Ã,­À¬/Œ¹¹÷¤ †—±š—ËxL£ÁŒeñžÎ‰na릴“ˆr«Ï•$t7®v•“n6¼Ÿ#xKÁž¤é2½P£c‹0¿Á¬fž¨®éœÖ‘N˜Š s•¶ˆÛhu.Ž´h·™1wÄ §à|cÆ™¦éy5ǦåvâðrR½€›“h¿Ûš“aÝÁ¿Ïk÷Áˆ¢¡y:ºŸ—w¯<–Po£¸+lñ¢›“bm þ†pU¢{sNž ‰6eæ™è„n^dš"…È]>©ý“lm'·øœUu±õ—:l£ëŽra“¢v“l¬›Ëw¿½Æ©[Íõ»Õ¡$ÅÕ®¡‘ÊÁÀ¢ü†ÄF£Z„ÎÅ™§_„®Ã¦J€ëÁ#¢zêÃ0¡[w§ŸtÂÀ›ŸÍxV¼˜œØt9¼·œ±s±ÁN¦é€ìÄ%­ï…×ÅÇ«)HÅd§âyÅ¥®x)ÈE¥Rx^Èñ¥”xšÇm¦[{È.¨Œ€Ç © ‡!È’­ŠÑǼ®”†cÄs®2†¿¢© „°„šÇyÖ™ …v"m'Š\…¶s\¦Þ’åf›ºµ›¤if¹–˜Wl˜»DštE¹²Ÿ<~[´¢Š„¼ñ¡7{ÿ©ƒ”g$™‘z¨Mï†Ìl5Ex—®‡ýa4²?šu†¸˜lزƓŒh<«Ñdìü‘Ñg,¸°™¬s¶¹°šx˳€—Vtư—ÒjÀ¼ÞŸ¶t×Ä¢¦.|Gˬî…ÌÉ­‰Çɯ…Œ*Ãc¬‰„¿ø­•„·œ—‰¨™ÃtÉ„d{Zh|¨s-Qì’%Š”vÄš‹òhМe‹_•»ƒÅ[bŸJˆƒ8e×9ð•ÞyåZ‰“ìŠÂwMŽ‹‡>t<^ŠOy´‘ ­~ЋÙ^qa‹x.dÇšù†«oX§z”Ëy £Å‘w£m(u˜¬e”öuî«E—Zz¤£–W6žå’"}}ŽJ¨kšw.fŠTZp·_bLÀr„aüHOqj^…FUväf{L&‰+}dg¡j—Ó…-¹¨3‘Z¸„¦Y‹«¬î¡Ï…ţ阊z\§Ü‘>k^µ˜Ýiú¿@ŸƒkÂ:ŸŒhÁdœh¼¼ãšÀo`¶×˜ÍsÜ®I•¯mõ¯>˜sû§•Y~“O…ßu*‹ýml¯‘J†zm—w‰LnÖ—‡­hõ‘ˆ]}*\^”œ‚šb‚‰)cì£ìŽ g¸³Ó–¡s½Ášz‘·—ývÒ²–nrá·‘šus´Àd¤Í€,Äa®)Á­!Ž»¢ x‚ៗˆØh€‚€iK+~ŒdÃC­€&f!B>vºYˆ@QxV`ÏEÍ…qÌK©—~>WS—º…'TŽŸ®ŒVXd­ð™Ñl'³bžqu‰¬_™tï †;oØ›P‰DrLžÇŠ‹yl¯F˜ˆÁ(¨\‚dÂ{­n}x¸y¤{sL©—”oö’5„g¢ƒ—q†UJƒKs²\‘zw¯h¾|ºpí_Ôzdj N䆮x¶X@£—1sn¼ÿ¥mzoÁd¥¯y.ÂN¡šy_Á8žÊxBºƒ˜»s3¸Ð—hx÷½££±ˆz¿k¯2”%»­•¨¯'œe…Ëɇj2ˆ‘l}LŠzawLã…Êq‡_¿ 2‘=zMć­˜ƒóË™¯Šz=ÆÞ¤%r¸l˜Æl(²Y”siºD™aoì¿„œ°rTÂìžutMÆ_£ w_ÆÂ \uïÃyž…wMÀ·œ²x ¾ÇœJyö»ž^}”¿¦‰ÜÅ‹®’sÄ{®c¿¤®Z‹¸¦á„ì¬R•êv0žÈ„õXÚ™N„Ù\7¤“…s°‡›özk´œšìt6¹xáxY½óŸA€œÀ­£kŠ|Â멲—Kª¸˜£Ž’-ƒßnp‘+‚Ãg_š„‡tew²ü™ˆr'Å’ª+~æÇóªÅzNǶ§Hu´Ä6¤|s2ÀCžÚm‡¿$œ"i¾¿\œ]p|¿)Ÿ {5¾.£“~¯»Þ¡ö}ŵ]Ÿ-zû«š r#¤]”‰qó l¤l> E‹…jÈ’.€$_6 |=\X¡,‘RsÅ·Ïž8}’µÃštl‹­¶–¯dǯǛqJ´¸œwœ»I FuÇy­âŽÆñª>ŽEÆM©ŠÊ(­Ù†Ì£¯Ô‰\ÅÆ¦=‚ÃÝ¡šz/Å¢yjÂÛžít‰¾Kºtk¸:šp»HÏqºÃ"ªä€È~°‡^Ç,¬ ‚äÃX¥»}—Ã褯zÆù£hu)ĉ¢ørMÆ}©È|¹É…­YƒÚÉc®§†NË °,ˆøÉѯh‡ÐƱ˜ŠñÁ­ÿ‰©·É¡ƒð¦\’¬p½¦?+k/¸PžÂ|›Ç®…ÊÚ«²}ïË[®ÒYͰ߆ÕÇ«±‰È¼^ V‡è£¥Žu‰œ„‡j蟆½r#¤Ø”®y~™b‹$kc‘»„bɈ<@`ˆ–€d+—˜“EuAª¹kˆÅµW¡ˆ‡–¾ý¤ ƒOÆm­Å…fÂæ©"€Y¿ï§h€Q¹{¤g„€³Î¡Å†Ç¨³œs„Åžž—ƒGŸh“$„œ¯¾rd” ©YpÄ{$]ñèlwAs|]Y¿xU_jB/v›c­Jaˆ4yY5–1Œòw¶’@’¤ˆ/'™ûƒÈ®[›q4·°›l?¼œøl¢¸SœÀv㩚^„s£“2…í¢.Åw¯„’Ànx«`$kP˜e}„N¶Ÿ^‡ö`ˆ­E”Yh ¶H˜êib¯”Íi£™‹faÒ Š^ר,’·iP­ü”ooA­.–Êsã¨c”PiS¸^>t)Äߦd|øÉDª¦„·Ì%­K‰ÃÊ-°8ŽDÅF±÷ŽS¿e§Ç‡Ž¸ £ ‹I&”Bz"‰‘}EX]”ˆáaÙ¥O˜vyu§Â”p8¤ò˜h0 ØŒÎcM Ÿ‡‚Y=¦w‡òF§?‹rJO£oŠUÚ•C~æH3ˆ˜p;EÖ’ ]Í }½TrÈlì>‰tW]>9yk V•:…fÊZ[F\vªqpXm‡£ù\-ˆæ}XTzâi¤H[w×bÑ? zÙ\â9Á~p›QP‹„ÍiÜŽ…u^³Šðz Xlž‘­wæ—ö€:X6†Êc4.¯…–e½3h‡õj<ˆ†aknA±ƒ0hÌA†šk'GåñqÔQ&ŽÈƒsÌ‹m‚ÈnoŽ›†6r©9ˆÝwU‹ù~loÁ|;j=›§ˆúsQ¡‘c}];Qz´ùŒ¥w-§|“y:« —¹}~¤¯•€ùž×iwÄŒ¬wFb–u3^vOðpÙ[)J,s…a¯FÃoS\"Emq|Z:G…äqŸX6œKŽ‹v ®Ø™Ω%–°u¦Ÿå‘BqÀŸ,‘ÈpE¨Ø’“mL¶™ˆkß¾†Yi¸Àýœ[f$¾çš÷f »™/lÇ·÷—as¯‡“%pæ¤rl±›òŒãrƒŒû€xpÖ†ˆz.j[̓dní›èŽŽtÓ ý‘vtšœ1ŠÞg#—ù–]œR‡e««•1q»µšju¹Ö™aw5ºS™x±”ks¨©c"o²± •Yr&À­Ÿ#€«Å`«ÆŠxÂ8¬„‰Å·ÈÎ{±šµd^ÞwÙ_Ó?js]<(zða¸BwXYãBÞ}š_ŒDª‡$qmK·“¥…Xcãöld¥s‘Žaé²Õšªn ´¹œ\s¿­4™}pÜ¡Þþj­šQ‹Qp8Ý~𮈚…h¿í¨(‡YÀÉ­5ƒµ%¤'yS¢©”Ìp9Œ†|@b¥z"g™K¬~dnQ›‚Åy~f¢‚´zõkD„ÚvaV9?aªÊ™´tÀÀ,©@}íÅk©Ìž£0~ßyGº ˜\o¶¸–qñºÀ TŽº·¯ì‘²³ª&“d 4w“:zC` Šns³[û}Új PÞƒqªTì¥Q•zMÅ}®w†îÊÍ­{~ÓÄᢒuÞ¸³˜µmw²Œ”ajÔ¸N˜(nÀçœÆq'ÄŸ¡IuTÇ<¥ÒwÉ[¥äwÈÆ°¢¬x=ÁãÆxr»ò›x²8šñx<¶užýƒzÀ£ªqŽF¿Êªúº;¨Œ‹µ!ŸV…­¤S'o”sw¯F‘ªyNñž?¢iâ´»œ–yC¼LŸüyÓµ¢™v°Ÿ–åvÚµ¿›}`¶Užå„LŸÙÈ~kJ| ió¹|õeI™G‚­]ƒ®¶–ôj&Å:ª°}tÉ5®¨zÉÆ–©¯r%Äb¦Žr0Ü£âsÃÂ[¡°u´¾ Bwa¿ËayøÂÅ£ß}úÃѧ"€îÂ|ªðb¹‘¢nz£¥­’vm9(…W^PŸ†ˆzg’Ó|Ò\† rKQý›ò‹usº¢,†R¼{ž u$¸n›µjKºòž«sĺñÑtÀbŸubDz¦{ƒ5È«}Œ•Ƴ«7ŒÌà³æŽUÔŠ½zšyÌ+²OëÆŠ§JÄ¡¬v(ÁÚœ r²¼<›sp ·˜˜Rns¼žãtÇÆr¬ˆÊ汇ÊP®ä†ê¤…ÿÁ£â|ž¿¥œf ¼‡š;aw ¨_|Ó˲4‰ôÌZ±…ˆ7΋°ˆØÍÓ¯5‰ÿËñ¯x‹0Ä«AŠ(¾Â¨Š ¶œD}‹°<—¼sð» ¡€ÔÈN®Š‡jÊš«ÐÕÊ"­&ƒŠÍа,†‰Ìp®fˆä¼¨Ÿ]Ö¦ ›r —e‚Yg§—Iˆ^q>¡ø“öyÛnÇo‹˜ÌßkV’]‰TlA‰n„f(“úEx€¤Ôœ›Š­±V ”‰æ·e ~€ÞÀ)ª„¾¬mÂP¯3…ÁȬRˆp¼{§ö‰B²5ŸD‡®«|›q‡z§—C‚QŽr“ËvQL"#bÁ;Ñ…ÁqîQ¿z d²D"x¹_kJ&ˆ{KjΜٕy}Ö®¦=’🢜}â¬À£ Žî´l£¶ƒ±@™Énq¸g™ex¥Œ”EhꚈ÷qÅ“2€@mÝHz/e«¡’òv£¼ Ÿô‚  ªˆ­aN™äXUâ¨20d´4–?j ªK’ViˆžŠeÖ›4‰e  ¦Ëh¶£ ‘¶i^¦”Zoš¦|”=n!·…œxv–Å”¨2}ìÉ#«ƒƒÍu®üŠrÇ£­ÎŒ Å¥¯p‘NÂͨHŠ9·Lªi‚Ÿ–&}hƒ„sETª’ó|×T ×Šæd«”ómy®s–o˜©È”¸j¤FŒá\µ§‡„ÃA‚³m”`‰´Ë™Ûo„Šj†ïu¡[µ“¹¶wðš`’ÎuI†Ì{Wx\cðCnp|ZC(r…k/X…!mzOjöoåO¤zl»TŸw…`åK‡ÀnóTì—¹€ÿe÷œ¾…ïaUšìƒbZ$˜…Ó`DŸJ’lC­–qÖ¸†šäns½S›®jɽðš—hÅ»®šàf º¶™¬h‹·Ý—Ÿpë¯:“,p¤¢·yjÆ”?†Ùiª‡†{¬gd„ËuÕd+©{iüš±‹vs;¡.’ït¹à‰Éfq™ hYО!†wb‡°û”âso»ìœTz¾Àd{0½œÚw³Û•>oI©éLm­åÐnμšMzUÄ墾‚½ÂR¡œ¸;š§yœ•„9eŸl˜I.xhºE=v aôEÐuÄU!CbzvU.?Œƒ‚gåG3–”…qg餬“=mm­q”FfT¶é™yoU··œ’rƲ¸šlk"© •Viˆ¢ç“Ju*«›C†¶¸¤á¾ªÏˆ?¼Ì¬ß„œ²×¤îzÍ Ö’ômЈ„w·Z3vÏb G|ŠlLeÆxbÃ~&xPgVtð]~Žô~)]¦A–uqúÀ1¨S˜ÈéªÀ‚€Ç@¤x Ä€ŸµxÒ½ œov¸‰—¬jظ˜œ:wʶjª‹¬@£KŽs—Oƒyl[‹%r™Rü‹Fx$^ƒ^rER“…\væR¤[—°xÆ ¯Z…Ë ­þ}ÅE£w‘¹™™Jm¾¯æ“Ggfµy–j¿2œÌp.ÅÞ¡1w+Éø¦«{eʨ”zlÇ«¦Êx|ÁÚ Þx½·ßšKu¬©A•as#«ê—Q·õ¡¼‹%·Å¢Ç‹1´ ŸŠi«¢˜À‚ƒžX‡†lûŒqHŸŠŽqÆIw˜yÙ]L®f•oy¼(ðvµ —`tu«’Us°ž™{ͯ>w€H›šŒit‰,vœaëuá]6—+zŠT§þ\W¿0 r.Ê®xùÇ®ÿrlÁ§GqøÂ礑xœÅm§*}9¼×œaw»_š1uÀ¤žåyÞÆ%§ÿýÇn«èƒ÷¾R¤€„¨ª’ðnI›ÀdZ­žC†|f#–~W\¨…¯mpJ–˜…kI»”¡«ƒ¼Áì¡­x¥¼e›Qh¼;›Âhl¾Î›$oÄŸžKtéȧðlÉJ­´Ä.«ÎŒŸÄÆ­Ž·Ñj¾–ŸœÓˆ½Ì˜0É­5êà ¢üu-Âä±mE¿£œõn¡¹ê˜lqÀ¼î›¯vYǰ©ežÊO®áƒȳ¬ü†.Ão©~‘æ¿èžD†Ð° Uò­åŽ_N¾¶Öš3põÉ–°’ŒÑ=´Ø‹ŠÐްĆ8Ï¥®Ò‡ÂË·¬w‰õĬ¨w‰À¥¤6Š ·Eœ]²Þ˜Kw½;¡›WÊ:®n†²Ê«ÏwË?­¥ƒmÌ©¯ø‡#Êû¬¶ˆìÀñ¢¾ƒ²¬—{t*›wŒDm ž“ {‚©ò™ ¨å˜.vG§/šUwß”éwø©ƒFm½Š‡V{¡¸™¸Œõ±B¢‡³·D É‡õ¼“¤+†Ž¼©ƒ&¿Z°Ž‰PÀ󯳎l½;©*ŒÙºß¤‡v´\‚ª¯2™º{|Ÿ·r“ÊrÒEIvOR_+¬nSn9ŒsN[ÎCu>g˜VЬƒwƤ†ü‰×°Ò©“í¨O¡|Žn°Q¤Y‹¿²[¡C†‡œf†Ies£ø„8L»˜u‚]D™ƒl„L5qgXILÉ„ÕjDTe¢ÅŒcsĹÈ&•šP€sR’‘u—Fÿ¨Œ k¶û–UjÓ­”ijû?‹Äkx›3Š/m˜ۊÑlažÙ‹kf¸ŸžYmk£{•~tú· žH|üƪBÿÉÓ«=„‰ÊU®?‰‹Ä «S‰žÂ¶©NÁ®¨8:»ÊŸWÑžF“~z„{^fäLD•di@G—ÒyÑM<£‹‹9U · ›#q>³ûšKpþªh‘Øcž§€†>H ³+“Õ^"¶ƒ˜ùn“£¥‘hqë‰?}cä]‹Õ{š“5}Zˆ‰tïTÜrõXAeN#9p+X[>'w=f<™„ÔwËK±}o£F®wyb»7atª[=+~|ji7G€VtÞR͆„‰¹2ÕŽw‰°”7Ì€Á¤ºœ‹†œŸ‡#o‘ÀmØ7bDjˆ2Àn¯;W‹m :‡‰$n~A{‚'k«G"z>aäyžÀÔ r[ºC˜¯k·Œ–WpA±››¬€ M—h‚Ç}Àe¨‡ïp·NЈ uŸUŒƒÈqéMdŠyz V…©šxŽÆÒ®ê€˜ÊÊ«+vÑǦ+s½ƒœŠl¼­Ó’`m³–5dÜ¿&pžÅ~ àw²ÉƤ|QÊ)¦v{ǧyXÂL£“w¸ú›1tE§r”Ãp-¦í”Ð}›±ÌœÛ‹±ìñ몜0Œˆ¡š•ïƒ ™ †ßp¸‹[sôSKˆVp»NàŽw$V7Ÿw‰ e²”–çohµI—+tZ­•Gx¯;šèƒˆ¨¥–õ‚ˆ“g…Ñp܇pvi_RŠLrÐP~“rt F[¡;€5E´Ž—gSÄy§6xöž­­wD¾©mu%¾¤Zx4¾*Ÿw{¬Šùbå­ácl]½˜ |…È ©K¿É몂`ÂФF‚k®&–™x˟݉Þf!¢E‹Ekל¢…É^S‹epwF“QwËMT­—”§oÁÁüžÀv¢ÃžÁm¾ÁäœÏg!ÃíœêjÁÙžq;Âð¡={ÇÂϨý‡ÁJªs‹I¾ù¦-ˆvÁÁª{ˆÏËx´F@Í´ú†GÉð«ñ€ÚÄE Jn‚À‘œ‹nº¼š¶uê½Ï›lwÈãl}ÆÆÝ¦KÁG¤oÿ»é¦GŽÁ²"•„è¢ý„gV(Ÿ¯FKŸî†?`ÿ¸ñž\„Zα›‹+ÒD²ä†TѲºˆåËr®g‹¤Ä§ŽŠ\ÂʦW‹×º—žP€û´Õ™©w½äž×{‰É¬Ô‚+Ì­ÌpÌè®¶‡ Ët¯WŒdÆT­Ñ‹ÂÁFªyˆ‚µÐ+|D¦Ü—Ës÷¬žm}å³ã ™}-´¿žºuÿ¸s¤Äv޵À ¾|,›×ŒlvŽ‘P†tz)¤‰˜ÀŠ£µ8§`’éº ¤xŒ¯º?£7‰¦»Ó§‰ò¾…®ÎŽI»2©çºV¤rŒå¾š§‡0»ÊžÚ¶.šæ}T§ñ’ïp¬–Mv/B²nbLÃ$øfóMA3pþZëD€ ÙeKˆcFA?žf†a-®ÒŒ/^.Â!ž—u.¼-Çrñ³ü•Ÿh[¨ŽˆuMÀ­q‹ÔQѲG‘rf%£Zq˒ІÂo·ˆ=„Œuõôˆ™v"ˆ¾sR=jËO‹7D]G+2îgòP¼9¢qÝ[$< uÛ_Š:çl|TØ- læS£+Jn¬V@.‡~ñkOGꆸx¤a©ŒcŽŠ„'š*œ¶”›A˜ä‡§*ž†¦£Ë”är“”q$=ž^eŽ,ŠjÁ9ÆŒ´oAB°‰mùE‘{dS?WgìQM-°€€rç[pxÛk{\’}5räc•…`x0g㊠}´g[Z„fpµ™³Œ®yóüÕy|™xŒtf™éŒçs9¢”z׬ñ˜h}—®zšv~”­ß›íƒË£y˜p„ÔŸ“0w˜uw¥²¢÷تיg ¥«‘âxž³9˜z·Á•«Å”±Å÷––‚7hÍ’—{bX[”‰¨g5°¥–?s—¾Šœ?t½Ûš›n£´†—”o‘´c˜¶s¶Ç™+pàµÞ˜ kŸ±2• k"ª‘Ìkuœ©Š!l¯Œå~çj"Š%|kñŒ }&eK£]•Ý…¡c™Ô‰ºi ›£†VdóžO†9YF¨Ò‘óf†¼’£ƒSÊ´±;‹rÊì­Ë„Ȉ« ‚°Ãw¨Ð}ú¹œálÁ¶ˆ•Ìdp¹ô•œkɺ™«wÀºBœY—³ú›m„~¦‰™ ƒ*¿•¾ñņñr!zÞeeLÖnºO¡:t€æZZH=›j”k´{—7x#¾Íš¦nȾŸœ%l¼¿>p¸5šr¸š x©ºèžµ†%À¨ÿ‘ Ä ­q’rÃÕª2^¿È© †f³žtÙŸ ŒHa¸‹‡tîLÊya²BËw‡gÐ(±Õ‰Êг².'Ê@¯'މÄi©Ê‹ÓÅçª9‹²Á¦¤²‚í»õ=yÌÂ¥¤3}ºÈ©ª/€4ͱ¯ŽƒŽÍ¶±"‹xÉc®ž?ÆÞ­P†Ã™§GŠ »ŠŸմ圈w^¶o ðw'¹2£æw¾ ¥¥t¼Ã3ªxtl¿>¦Âwê¡X’…t5“¾†LsÁ§-™­†¹º’«´‘˻¤±5¸ø ÏŠÔ¹~£á‰{¿—©‘‘”»ç¤Z‘A¸|ŸFŠÿ½ã¤%‡ÓÁ¦¤‡uÁ¤ &8³ü“½sQœÜ}õCâm‚Mû#_(IÁ,ƒoW˜Fs_hQ“®|?±µ¤QŒ^¸Å©E‘¡·Ä§ÂŒþ¹j¨–~ßžÓ”}Mo©]DCú[7GÍ&F\MI€)È\‰MD3|zÈeÄKhŒvsýXn›­…ªeô´©•¼g“¯ \UD¬ŽÍ[¶Bœ½oÍÄž£2páÄK¢‡r!´ ›ónè¡×‘)gƒš‰ cc–\†:oéÔ€6hÓž¡“þ~íµŸ¾É»¬B‡ÉÉç«;„uÇ1«“„³Ã©“„À‰¨@‰×¾¸¦´<·ÙŸ²… E‘r|b…Sj¦HRЧlCe¯d“œpÄPœytÈ`žíwÃÁOvѸq—þiž²Ý±YJ³†:V_¶ ’4hL­”wš™ÝŒ"xˆ’ƒJsêŒä†”t’‹Ã}ïb†jõPÑ3Ûc8KB1RcpOG8:jT¬?ktO[•>7uÌZ 6&mßTõ*?oRUR3¯~dYCŸ‰%w™`]8Í€¸£ç¡¶‘̦öÌ…k§œ&ˆ¨™r˜­~Mäˆ1hª+¯‹ÞjÖ7>ŒŸprB?ˆsj`Kÿuî[ú@ \dLO/†øxaf™y¢peŸ{SungI„â{3ho‰/~(köÞ‚öq`˜Â‹çx]Žyá–ˆOs—®ˆ›qê¢`‘+s{¬B–{v]«Ž—ô}¦©¢™Ê†J«pŒÈ°ø Šþ¼n©w‹èÀ–¬È‹^»õ¥?…®±¯˜Õ}[¾˜¡œˆÐe¼<ž±Ã9²^““ ‚Úoœ”Û[zœº‡UgŸ®s•þvƽœAy ¾²š¹p&¶`—ònJµã˜ˆsy¶»™Oqµ_˜yk»±ë•Öjk©Ç:i›z†f±Œ~'gŒg~¡já©~*d!Ž×}vZj“„a†˜OŠjYš_‰×dÜœ¶†&YŸ¦õ¤f§¼·¡;{ȶªZ}ÏÆŠ§¦zÖÉ|¯d‡éÍ{¶CŒ¸ÅZªj~¼ªšàp»¹ •êj˼¯™´us¿¢O‡‚¹D¤ ‹å¯¨¡Î‰Tª ÕŠ€+—ü„ˆ×y/g•vDZÿE‚‰f‹Ieœý…|kº÷™Ÿz5ÅÞfsÂtm%¾.žfoÙºO›t‚»…še€$À¨¡·hÆÆ¬¼’nÈ$®”Äb§ÀŠö½u£)†ƒ®k˜rœ­‡Ž\ŸŒŒwVc}÷ezH\zîbÝG4zGf"KåwdêI³sÏ_ŽHußbßK<„œröW‘ò~bZ0 ýŽNd—³Ì˜mÓ´^–Þn‘²‰–s·²Ì“}nG°4‘èjò¡VˆéfbxêYú‡t)SÍ…gp‘KÚ{žc¼Dõ{©ctCK|$Wï¯Mœ®xÈs®a~òÊ:¬CyÆå¤ru’¿²…n£´¦–âe´ –zd ¿îœ:krÜŸ*oàű zs˜É&£’xïÇ@¤—wwÄ3¦\y¡¿ó¡–x®³n™*tœ°#šˆ~Ö´ª¡Œ²¡[€¬ôœþŒ¥a—ùƒ—–<†äot‚ oˆW•|(jÚVð{]kCSÓßpi«1˜}´šdzê­p”ûs ¦’tš‹Š$o •µ‡m&œáu¢ƒ•LzH£™°kb¨GŽ3^z³ã™ªn³³™in‹°¤™Lq&¬ œ‡}Ñ¡¦Žgf˜{ UÕ‘Cs·Lú”„yTUü´›vŒÅzªz}‰È«D{ëÁm§€ ³Žœ¥z#°–k ­{”ßgG¤sÉh#“1tVІ’p…H!•x„MA´(’©g•Ç¿ ?tÈÖ¢‰tXÅZŸ™m†¾É›Ûh,²V—i§°Aœþz€ºB¨‰ˆËÁÖ¨B‡¦Äˆ¤ÒÅÂ:Ÿ¥x\Ç£¥y=ÊX¥ÅvÁÆ? o:ÅŸ~rìÆ‰¤‡~¤Êº« Œ®Å<¦Æ‡}Á—Ÿrzž·*—µi¡I†Yo^rhFk‹âk~Bp„óeDŽ}$aüDyjvULˆ±™†t¢Ê·«À‡öÐ7³ÈJÌo±½;È“­ìŽˆÉ¯ ‚Ær©‡IJ§K,Å8¨;ȶª‚ßÊ®H…¯Íe²¢‹±ËÑ®’Œ;Ç«rŒ™Åb¨,Š ¿ ¡}!»eGu¢»:ŸsC¼¹¡.r…Å爫t‰Çü©#t{¾¥ŸtÅ }/oדlˆr_«4?Š¿à®9“¿¾§•·ŸÜˆÖ¹Œ¡ä…–¿U¥o‚¾b§@wº7£“ŠÁN©T‰|Çì°•ŽbÅ:®™Ž¯ —©xО ‚øJ›rHR?)‹[Fº)Dl]S¶>Cz¶lcR¤—q…2¶Q©Ö‘8¹ª”ظ:§cŽÕ·° áÙ˜=‘vífØSúAi\ªKn3_xPÎ;—\MÇ0oàT‚6¢ŠÖq™Pbœù†1hI¼ûškÏÂÇŸ6j_º£žvlÌÀ ¦Ïw?È’§çwïÌK«'|×Á¦Qx°—›Ar`¡Z‘«k”—/‹„q®†Vs¥ð˜Å†ã´Í¢N‚aÇW­ú†ÛÇ.ªó… Åã¨=†¦Â×§T†‹À‹¨ö†¾´¦²‡1µªA‡¤¶•{¨”|"Wˆœ€)Qƾ¤œ@w>ÊI èvÆÈÑžnxJœwvʽì™OrÈ·•‡ei»f•8hB¹ì•5m ¬Î•œyã›ÓK{U-ŠzYޗަ|®”:ewy4d/A$p‰Sa3h RA6(g`Ro=s»Zþ?{Ùc-@ðu\¾2vwþXx>o€½Z 4&‰hC—­–Ó‡8®r©”òè¤Fˆ}ªûœi~Ñ©‚Ûƒá›wp؉Êu´B#ˆ¿k<׊Øo_@(†th>‰tÅYÕ?kN0‚Kq÷VúFqNáykƒI®|°pÊW^Œ~+et÷z¹SôH{KžV†XÕ§@&i­¶’+qY±æ‘¥p-­b’l]ŸL‡ÝcŠ4tƒRç‡qs}Rx‰uuQVÔ}VeûIV{ _øFŒžtoTĨF•pr~ÅÔª0~2Ê« |ÀÆ¢…uؼ=œÕk˶Y—¼e„¸¹˜ˆiS¿ÚœJb¼¢žŽ²qîL… Xv• vcB$ŠGmìKü—÷}xcϲ——îrª¾øŸÝs¾û£¾vŸºF¨Æ‚ª²ž›{l°Î”]lȨT‘ f™Ÿ‹šk•Žwsd`q¦X´—w±Yv°_’Xi…Ƙ¢ÞuÔÇn¤|u£ÄÁ  n•¼ œ¨j7­Z”Ëh$¨ç–#x<¸K¦ô‰àÂJªˆÖǃ§„€.ÇÓ¢z ÇV ãqiÇ£ ÜjgÇ£p%Çn¥‹{¶Æš¥Þ€Ç¦d‡Æ=§Ö‡¥Â»¤ ‚¼`J{­¥4ùd&›‚òOT‘9wÕC1† klCŒ{ \AòícQBE›º……`m¿§££}Í^±âŠ9Ìϯ+ŒÆÉ®,É­‘?ÇS©Š£Æ©†Ç¥ª`ƒ’Ç=«kƒÉ,®>ˆ¸Ë°±‹Ö˧¬î‰vÇ<¬†?Å…¨…¿SŸY}¢Áå |w¶¿YŸ“q" ¤&s~É«¥uS˪s·*—¯l"›Ø‡Hgø”K‹Jv9¬#£3ú¾®¯ “)À°©u¹\ …Ü·Yžä}ô¾^¥K†B¿@©eÀ)ªºŠjÅ÷­Ù‡É€²®‹'Å™°wޝ²·Ñ{ÿ¢ÃˆˆZUy#V÷/¿`ÐHå/¤qX…Ló‡duôY‡žÆš}…ð´M©x’·²È£’‘‚´|¢ŽŒ¾®9”¾|‚¥fÀj TL?XlóVµAˆqºbŽLDqµZ!@àv\];\tïRO£d‘)q]ÀMž9lCÇO¦:mùÄ ªîuDÄ{§qxäÇ §|Ìɳ¨{ÊÇ6ªüz¶½É¡z´´¬›ŠyN¥<™By–% | §vœW‰Ç²£¢ „ŒÃÓ««„dÌK±ŒŒÇ֫ߊpÃkªÈˆj¿•¨¯†j¾\§‚‡¸M«¨¾­¦šB{¥C‡D]»¥…XO”¿ðš£oåÉêŸîrLjžXuÀÑ›]vê¾Ó›;wû»)šÛm¾™¹mݺ?™Ëp⮢—e{µ µ”{€Ì’ßà€‘±“x„™;–û„òŠg|:` {±dþ=r³[³5fk–Um7;oÕW68;u—]I<®w´Xô5«v¼aB9ßk`?š'˜|›¢£ïd²X¬R’ض(¨$‹F®÷¡]ƒÑ­&£äˆŽ—Ú‘F…±g§ƒ lC´Š¾k= ~e^@2q¼U7‹dQ 5ÏŒIgO‡›€gð…¼Üe§ˆ¹`hù‰Ò€Uk}Œ–‚ant’„†dpä—bˆ˜s%”ŠHqÃKypdŒš)„Ëe¨q‘ðr±©•‘½w ¢1It7œ@ŠâmR¡ö“¾y±´˜£ñ‹/¾¼©þ‹XÃ:¨ç‚ôÄ¥=ëÈʪùŒbÌè°‘«¾ºžÂz" ì…[X6ŽÎuéKâ””‚€eJª6˜D³™›7¼«”“vÿ­Ë’‡p¥·þ˜1pºêšUmÿµâ— hñ¯Ó“HgD£]‰ê`å‘Jx1SÔ….rÚP‰cw([,‹hzbò‰({ˆbd‰^z–\ Úz²Wƒ’ü{îSi—àþW< ö•hG®³–ÎqOª:Da<¢'…ŒQ¢Ü…ËYM¯Ÿ“ãm¢Â>¨†Bȯ:ûÆ¥©$ŒÈĤK†‘Çdª§‰GÅØªnŽ®¸ÌŸ¹|®!𵇸¢“Þx»³{ˆaæ|%`²G–„2hAñž½ˆK[¹¾8Ÿds9ÊäòsÅžœp ¿4œq~¾sgÂ)¢µ8ÈE« ‡Ëé­¢Ì;¬“‹‘É}ªÒˆ`Á©¥ó…Œ°²—žwœœýˆdiIÄ~Ãe—… t¨W…ÿtÑYߊõ|§b>‰?y3NP‚²s’F¶‡x{÷^ãǃÏgþ»}¦WÆŒ|vmOÇÓxWÜœO‡8fÄ©Äznµ?”àp ³˜‘BkV _†iaˆ‹Vr¬Nû€8mÆK>‡ùtyY‚ªl[Só|‘`KR‰¬n‘Qº¡”Ž*mô¿´¥â|È©TyžÂÏŸq@¹T™yg±³ˆ•_¸¨™ûb¿DÓe ÃvŸžgRÃ’žÞgÂýœvmÁ,œ’qñÿŸ?{˜ÃöŸašÀ™žñÂ`¥‹TÀߨl¾Ò¨¤‰|»°©ó„D°Ÿˆƒ šúˆ uY|¨k´V[pø[ºOï}ùj‹S‘—ˆìfd¬-™wà²V™\t_ªò‘¬o_¡tŽƒpË–ˆªn€’׆¡p˜›Ï‘GzR¶½¦kŒÌÅ`³¿“mºD¤%‚&£d³[Ÿñ€Â@Ó ÌD›ùvR]šo|IG˜}GÛ‡hmGÃù„Ÿh7©þ¹cƒ§wŸ^ì ×Íf£ ¼—P¢¥É–0{]¤;k¡WŒŠf"œÞаoã€ülX€÷sBiäŒ}zúf¬ªØ‘Âá©e†ÎÅX«q…?Æd¬‘„KÃË«I†Å¸ÿœ=w烈‹\Ò‚\X7h¢IÞ28v[þJΈ zhö TžŠ…°¨:!« ®Œž¥ âƒþ  FlÏ…Žr¤Pøq®[GBßwèe¯H˃ v-d€Øl!Qo‚Äl…J• „èbð°M™Jy ¶žsKÅJ YqÇ §¦z÷Ç!¨•|¯Ç@¦s}:Æ“¥òxÄǘ¨¹v¯ÇݧT|.ãf€Þ»µ£°‡ô§¬œˆb¨%o‰³ªß™$„#¿Ø¨t‰bÍ)µ‘+Îê´«ÀÆ4®ˆ9¿U§„½é¦‰®¸¾©\P³+œIƒM¤rËe'¢ÀC湤–ýcÒÈp ~qæÆžWuÁûœ5vÉÀFžÄu1Áõœ3p‹Á“œnϼf›ÿrü°g›¾Æ©:š¬ƒišp–°ƒ<”“‹†>Ÿ¿š¤”‘Љ*w„ tMwkc>7øqÈ^,7YvO`<Ôwó^u=¥z¸aW=ùz¶^>ç‡Ýl¥Ig£L—Ò†ï°V¬h“é»M³Þ’ ¸Š©/ŒØµDª!Œï¯û¤õ„vžÊ“ʂđi‡olÏzh ?Ñ€ädƒ7¹rÚS…,jáRÊ3ãfòUpA#kƒ.f:‹‚„€hÝ‹t„‰f9„i'+…ÆnAŽY†¿qG“‰WpD—MˆAn¤û{›g’‡­q«]Ⓡ~cfD¤ŠÍqڮɓsæ§ü&nŠŠÏjÍš{‹Urk¨Ñ–dç·Mž$ƒÂÛ£8|¹Èö¦7~sË=«Šù΋±Ë‰Ã9¢a€ä¤ŠZ]d‘ìu†G[·x“U¶œo‰ÁlN ,ŽAteœêŠ˜r¸ è"q¸°ø•šoĹ<™çkr¸µ—!hN°v”Ùf;£mŒÒd%”}:\¯‰VuùV‘‹2xa\G‹sx5_L†±uY„ƒt”Pš‡¾w:SÓë{ÚXs” ‚í_ɜNj,jì¡9Ž lŸ¶…’a] h'¾¢~ ÇÀ¬[‹KÉ›¬›Œ:ÉG«:Š6ÎòzŽÍÉW¯›Ž#¼;¡óˆK°“š¿ƒoŸ‰Žx®ˆ±pWÕu}Tk;²€Cag9‚š…„U꼞sµÉ7¦gxƒÅ¡Ÿ$tÄ¿´œÕpF¿dÂtÍ¢ £Èàª1ߡ­uÞÌÆ­|Š{Ë+¯Úˆ€Ã«£„ç³}œ|ª ksuë‘Ã×j‡•u¨[Ô‰Ëz*cN;ƒ4h-Ž {(NB‡¾qœC¤†Hs Qò{Y\Ÿ—~…¶aZ™x†ÓiÛ”Œ‚ÉjÚ}ˆ0j뤫‘uj·±˜‘kеª•j%¦ŠÌeŽŽ­u²Q¬|Øh„K,ƒrr€Z…ÜrôYÏ~íeQKFˆÇn¨PñЊÝl]½E£‰ŸÊŸ¬Œ€;ÅÒ Pu;´%”Nf£§c޵Z³I— _¤¿Ñž4hIÁÈžkžJlÛ¿2›âoP¾FšSu”Á4ž)} á(‚0ÂD¡k„±Ã`¦uŠÁ4§8Œ‡¿Ê§~‹+Á/«/‰í·4¤„Ež–’¿wL†¤w `rs¯`†Pº}k¤XS–x† nÔ®M˜Ìwi´ ˜2qæªò‘ùlqŸsŒ7m¥‘3ƒlU‹ù~lo!–»Š…xò±ªž†ZÃĬ.ˆà¶ýžûy}œÌ„§Pj•VtF8ð”Öt{A{ãmªCzƒeÍA»‚-o Yð”̓Ôlð¯Õ•zuC®™EcÅ™'|ªMN†SnOMLˆz‘i{’X‡NsʘE‰³m|œsŠÌnª™Ç‡ÿnùóm ƒvvžjw‚piƒ§“i8¾øž{nÂý¡Np)¿HŸìoºò,s.¯Ñ—w©þ—b‚ι§|ºÁc«×0Ä)¥ûƒÄ ŸÙy#Æ v Èk£÷qpÉ*§=wíÍu°£ŠÑÌ2³E”¾ÂǪ=Œ´Â.ªD…}ÉÕ°A†ñÊ–±Ú‰üÄâ«I‡ ¶g×tŒ¦°‘g®›ô„QYÛ…?i›E’†3jòW¶ž‡¥|Oº ¦ ’¹Ç®ŸÁɸ®Ô‘šÉ¯Ä’£É­IŽþÆú©Â‡´ÅK¨¯€ Ħßx_Äs¥ös>Ç$ªQyàÉÌ­„ÌM®6‡«Æü¦å}šÂRžvÁñ›@o…Åüž2lÄ1Ÿ«k¥Ä¦KzBÄg¦}Â~ž¿v6¯&“|d/œ^ƒkXf¡'“Ú~¤²a¥Ý”å¼ «V‘ÑÃЩí‰Á9 Ñ~…½œÍuŽºŸR€»ò¡Ò„/Àg¦Ú†–Áú +e½ žéz–»w¡‘ySµ´˜p¦iˆEYÞƒ¥]:ãn L6Ý{º_'NÈτ×z…¦R¤Å‘)®p¦JŒS§ ž/‡xŸö—’|˜„d_ÝzŒasD¤uX_ŸDR€}mQK‹ªyòbˆ‚Ün½T¢‚¾l¨IL˜kƒb¬»¢rºí–FuÐÀóœ x$Ææ¤”}É{¨g|„Ç¥šwºÆ¢¥:uSǦ~qùÈS§uwNǵ¥B|Ž¿¬¤›‚ ¶£Ý‡G¡k–|àŸœ“|+·£\EÍ­º³¢’Õ‹ÁÍ¡ÏÄ¥®¯†f½h¤Z ¼¸¤nˆêºh¥%Ž4¸æQ‹\¬P‘`nn¦¢‡ôP®¸ô—Šb‹È»¢žsÇ>ŸüsÃW¿p:Ã0ž«nëÁ—œ‘k$ÁX›Ãk{º¾™?q볜·|É­;ŸM‡n›—V„¾š¶”؉ŸÅšOޏëÀK}àr]Sv“c¡;ñr^87òv…_’?œy‹^,>Yy}c®?|~ˆb¨? ŽˆtP ªœ™ƒ‰:´Ý©ï’Z½À°ðO»â¬’‘|¯Ç£¤Œ¬ª˜£î˜Ÿ•%x³“]Ž‚oIv´iÞ@Axä]4oàS/Âc#RÛ59a6TÛ=ò“žˆ=os刞p×€ˆ‹n®Žˆ‡†n­ù‡Wrî`‡Lt±“pˆ‰r]—¢‡mø‹ÛvY“‚äm4S}Œ|¶e¤Ÿ‘o¬³µ–3pG®õ”(pTŸÞŒìqÑ–0„_m¤¡DŠUlO´=˜Þq½À¡ùs¤Çd¤w‡Èá¥,~ÀÉÿ©*„OÂI¢€ ¯Õ”5p«›w„X[ð\ydSQ’ÆzO\L•3€Mf±“Ñ‚‚l”˜Ð‡»n©r‘Êm¹™—i®»Ô—Jd?³º–ýfí¥ “ l¹šB‰Åi+‘hÌbûz|z_Œz ]ćðu9XÔ€pP¡sUSXŠJ|Ã_·“§ƒ(fÝœ¸‹žj~£™Ào ¦€«sø£&ŠFg¨­¢g^ܽWZlë¾RŸhvÀþž˜zcÂ÷Ÿ0{ÛÈPª^„Ó̹‚’ Ï…¶Æ’¿â¥“†‹®Š™!뜎’~ˈtÝf¼y´[œBt}Œ_Ï<8•?{]Uǵ¬˜tÆÒ¢¼z%Å»ŸÓtNÁ=#qcÁ žÉuÄ¢Û€¯Ç©s‹„É ¬ÓŒøÉ‰¬OŠ5Èz®8ˆ‚Â*¯6…v·<¢~£‘£sÉ•®‚ƒiW‰Åwÿb‹~|nØ’¬…\pÌûx«T¯… iD¦{|cîGh‡ÑsàTŸŽCm,¦d”—vÅž!q/à‰siEŸbŠèaù¥œŽaD°Ê“êeì©-éi`’ÜxY]|žisP£‚s¼]߇VwÙ\n‚lKJ3‰¾p‘Sñ˜C…Km¹V£€YÌp®óƒ–ÅA¤\y.¯]”•n„¢8Àg˲â™ËlÁi£wWÀ¤Ÿu´ÁО÷sû¾,›žo!½!™âp¾<›øvÎÀgž‚~¡Ã¢t……Æ>¨„Œü®¦”޳¿¥ƒ¦Á©ù;¼©¥…h¥þ›¿z#mmhu¼dºS¨'nöX¢œ Šn· ›¹xt¹a› or¬Â“Ïj}œ{Šqi°Æi ˆž{m‡‘ãƒMqÇ¢d‘s¸®ˆ–l§C“‡h¹–`}¢Lo“ÑqÖ@ì•ÊtœHˆ“au¾Hx‹ tìUÚŠi}Çrv¤é—„ŒQÀ³£¼†è½1‡yaœ—ƒ,_oŠiLG~)p\¬‰@€ÚjS•)‹…vžM‘{éíìsÔ“„þn‚‡<{Äkà’vˆ‡l…¨R”Cl€»ôlO¾žžŒm†¼˜ApºoÇt†²c™z/® ™ƒ’¼=¦jÄL«+Ž(Ä4£–„vÄâžë~„Æ£ Ù{]É5¥#x¾É’¥IvIÊ,¥ynák|œ¾1¤wƒI¾Æ¦Ê€°Ä%­º/È|°ä†jÆÒ®ŒU»¢‹‚Ñ­&˜‘tF¤Ü’|qP”±}Ð[q“p€·kdœ‰x*½Å¦ ”jÉš°Ã“¶Ç}®h0Çë¬uZȪ™ŠNÅ'¦®…LÃ1¤•{8‡£ÇtrÂí¢ qhÉB¬{DË0®B‚«Éa¨c€ÒÄ9  uÁ.›ôhD¿X™ð_È¿f™-[]¾D™Û`K¿^žw»žÈx-»æ7s®^–BjúžŠ‘b¬¦/™ ‚l´O§£‘›¿Ò¬„Ž­Å ª+ˆ]ÃA¡º~‹¾)žªx@½)¡Ö„¹ÅžZ+¹4Â|»çšÞx¢¹K˜×t¸´›xSµW—tnäá‡^x‡Ód†A¡{)Vº<ôŽ·uc^˜Š–Šâ¯KªM•±¿¥ï‹ë þ–a~#ÿŠ-nôŽsšJHvþYP6Lu _Æ:à°inA‡p‡H ~²gEyzÛbôB7Цo4H`œªyöX릆bf±·‹–krûÅ ¦`}äɪ©ˆw>Ê„¨?o\ʽ¨'q&ÉȦür¦Èô¦yÍÇ·¨|zœ¾^¥¾}B½¥Â‚ý¡<’¤um¦¿|yµ—¢@oÕÁÆ%²tÜAÍX®vÄp±r‹·eŸy‚±ºI¥A‡>½ü©ãŒ9½’¦*µW•tªm‹ËW½·p˜b`ÿÇòŸ'rXÊ¢®sªÅežŠnÄ<—l2À3œ%pí¾u™“rÙ»šqu[¸sk}Ƭd »ŠP˜t’X›b“l†ËŸž›!Œå‘’$†éyUrÔ[2qó\ >‚iºR8.Qo^U8·xõYz=]{,a¯A±ƒxfÀK3»vÆb– 3•å‡ ¦8›ËŠp²Q£ëŠµÈ©qs£ñ›Ë‡t¥ò›}„pž(—*}´–û’åuz+nzMÍvC]&78r¾ZQ3û[¯O¶/T¸K0’4”ö|4—âx$‘“Šàs9j‡Jr采‹r‘€‡ÏrŠ’I‡¾sÖ”]†»l¾zT³„pöK†©}eî§Æ’Gpº œ4rœ´Ê›fx¦È•Åœ)Š=q½¤“òfD¸%›ln ÁÝ¡}tÆ £AwǤ£ßy6Å•¤#|ÂE¤öºóŸÀK®AšýxsžHõm†—6…kC”Ágš‘öh ”,ƒmf£âŒ,m5¹—h¿°šjdù¥š€g®&—lS¡ŠÕk‰—ý†pfú½aO‹}»]‡ˆuðY†l>S€ïoÔVq‹õd;•ª‡íg…ŸxÄhڮȗ˜t)·ø›Ã}iµw—év ¹H˜?m ÁDŸwp©Á•¡oxd¿Dêu!¾ƒšBmLÃìŸ×v0Ë®j‡%Ìr³ø‰¤Ã¬ÄƒìµŠ¡Z„ù¬7¦ºž6’+‹”~gL‹ÈrèHa‘ wœO'§ÏŽnhĺ¶™pMÁóœ¾o¡ÌoZžètÄÅ*¢€ýÈ ©ZŠ{ÇØ«‹ÆC¬±‰üÆ`­[ˆ]Å—¬*†Ýº¢ž—zÆ£7Œef™(‚Ë^í’ñ²hÓ“ôˆ¿x?šMŽz—2ƒfa¯ˆ5o{GlzüdVHº‹ˆyß\d£}’Âp,¬v—¾v¨£@‘fqÕŸ>ŠnfŸ¤…]¢ê†¶Z•¤Æ‰KXÖ¡(‡¨]’zöa ‚Sqç[p…Øuµ_0Š~y[¢ˆ¬s—JDŽ;wÿV¬˜„iѳܘ5vÊyª|Æ!¨’{´ø›¡}6«˜„}wº¤`ÄB«p„Ó¦…€mÁ Øx\¾› o½G˜0jò½ ™umöÀž¬|Åe¤;‡ÍÈð©‹ŽþÄѧ0G¿”£ÞŒl¾Û¤aн>¨ó ¯Û {—’î†oswãgãY~‚o.[ìŸ$epmºÖœ(vw½È½m»°]—„knu‹‡kóu‚8oYŒ‹?q'Ókà”­Á`N˜Þ€XWŽ›7ˆ°_Õ)|âNÇ“ísM|™²}W_ ž‘ˆòbÁžs3ux¢—ÖŠW¶â¥n–ÜÄ|ªOÂx¥øˆ‡¨ë“åv&š|ï\Æ25b¼—Žq\ †˜’¬'œ‚¨«é˜yè»-uHƒØr®“d…apª+”oN¼Lœ#n£¾¬{nà½QœIpy½è› s ºšœg{Ÿ¶¸œ …à¿ù¦^*Ư¨qnÇ»¤µˆëÆu¢™…ŒÈP¤\~çÉ ¨®xÜÈÜ£=rýÅ@Øe¾!™e»8ž[z8ºw ‰~½)¤ C¿¯¨ä€Á‰§ˆ¸S«‚̰™—x¥R”ªwœª‡6j”³„©dØ—#Êuö¼U¨^”`Èȱ“ÊÇ%°düÇK­Ë‰cÉ©úˆvÄ`¡ÄÁlž¡w±¾ˆžsr›ÁH¤DxäÉ °š„ÇÊú¯ƒ†%ÆT§"|Ä&  xEÂê›ÔgÀÔ™_ ¾Ø˜­cþ½Æ™©g.º­˜%l0¶>™ýnx·v›²s§ª_“ o§Ä‡©`Œ©¸š}~P¸À© xÄɯ=ÌÉ­*‰SÇó¥sƒË¾iŸK€v¼à¡1„ˆµ¼œq{é·°œ zع2›âz»š”v;¹š˜mžµ¼–‹jU¥7‰è\6޶l&FÓr£J/—@†®qž¨N¤ÿ’µkª’h¶Î§¶Œ~¡®˜‚¶”ÏzSY3{.Ux*%v*\c/×ty`Ñ/ÕxÈ_Ô3­{Žaÿ8{cÊØ¨~i‘Ê·¨6p‚ȼ¦mwBÈ5¨ÊyôÇ•«n| Á@¥Dx™¹‹éuºŸµ‰Siæ–€…ÃnÙ± ‹·ËŸºì–?Ò”¿ê’)¾”¨Ž‡Šµþž«‰”¹Ã¤?‰½µ§‰?¿Â©Ï‹Å¹m›%x²#’4c»o™œfÂÅ–œôkZË­¡ÈrúÄ=ž5oVÂôœQoAÁ¬œ"tü¾)™÷pÅ»?šbs‡¸!žy‚£¤ç—Šƒ¤‘ ‹uz”¢.zÜ™·–˜†âŸˆ3†3wÞnBZ ndWÂ@fcOd2ßgO41pySà5A{ÈbéDù‡mÒP~ g•ò|Â^½í³ƒŸÂ—”‡ ¤Ž™ƒ©(¥Œ‹Ÿ0›‡ý W™Ò„ˆè–\t—v„‚‡t5V`Ïg:¹qmZÅ/ü[ýNX0ë]åPq6í«zž †“¢¶˜íú–þ2yìŽj†¨r†Ip“$ˆØo¬’‰Àrž–CŠünD›ü‡œd“t€ÔaF˜ì‰Ñp‰±¾™uu–Âû¢@u–¾%£4}¸<¢²‡t²¥šõ}¶9šÄqN¿+¡uç£ÓwôĈ¢üymÆÅ£´{§Æà¦„Æîª‡Ä_¬ŠlÁ6¯™‰`·õ¦…v¨†˜T~†›³Šào™”„ j~–‡µo¢/Ž3qÔµÖ–‹mX¿Ñ›\i¾šngì²–“ez£Ød˜šÞˆ»eâ”è„%c‘¿€O_®ˆ3ußSŸ€/k–L:‡ÚsLZ]“á…‹k š‚‹×k¡«bh,³ ˜Krܾ ŸŒzu½W›Çu­»ˆ˜ qË¿¿ÉwÛÁ¾¤¢€ ÁÝ¢%¿ùt€¿‚œ5uPÄG¤ËWÉܯ“„<È>²1ƒü‚®×†£ÅH³˜•ªÄ±®˜%²Q™3}Ϝ݂ÚV4’}v“DŒ™~uF÷¨Ôê[º%™tk׿UxrÐÁÝž"xnÈ?¦4„NÊ^ªÛ‹ƹ©{ЍÅ#«éˆZƪ†‡òÇ𦬇2À¼œ1~{§ÃŒd˜¡+‰N\ɤ°“°mH¨Ïšü}M®§É¼©v•7p—¿€—TŒ…rvL/“{ƒ!f$¤—’ËpW«<•¶u¿©£“çtר葒mV«ž‘jß§Ž•d–Ÿ–ƒ³Q‚—WzI–1xÚV¼‰=wà^o†ut¸ZŠžsÙN[ŽåusI‘|RVx™Úƒ.`|±ö–_m3Êi©¨yÂÊq¬l‚…ÀK§„ˆÞ¼b§J‰Â­í‡Aǘ¯ü‡—Çß«…‡ÃË¢Ý}ì½J›ös¾Ê˜sjþ¿›šgl·Â³Ÿ }aÇE¨*ˆ{Ê‹­ÉŽþÅ4ªnŽ”½=¢Öˆûºà¢Ö‡½Q¨â…Á¹ÿ¤ˆ€‡šŒŒµsÁ~‹ob]¨ƒõp+YПiEmG»oçsƒ¾#lœ²“–ólE¢cŽr¯šN‹ky•$‰[záªØk†ØqVT™…˜n–GH—W„˜YÉšûƒÈVŽ–«{ÞW"çˆùl>©ò–A|´€¥#‹ù³&¦}Hæ®w’GÈ®&ÃB¨rˆüµ´œ¨~(œÊˆ9d|–È…Þ]ŸªÕ›–yʶ„¦Ÿ~ð¾o©/}¿‹¥ y¾´ŸåyÛù“uŒœ´hsï«Ò”ª“·ÈQ² üÈܯ’‹¸É{­-‰lÉèä†Yź¢É’ÀÛœBu¼8œ¦N’½oÕ¢ºŠT_z³ ›Èxn»½§‹oƧ®2ŽzÊ‹¬Æ‡—Ç*©o…½Æ¡¥‡•¼Ì¦&¬ºŽ¥ÑƒfÀ˜¨ÞÐÀ…¦X‡¥¿Î¡É„Ú» sv¸´­—Ôlƒª“ª\_”sED[“XxìH{ž&‘»ƒó´ª¦–®ºP¬ø‘G¶z§°Œ§¢y—î~Žv=Nu1QB(^tºYp/ tË`Ÿ.$woay;×qqVä7×x`å:³‰¶sˆT1~CcaAïyžZ¬.ÞŽ2rç@¯¨Ž}hÀ‘Ÿê|îÅI¦­u˶©þooÊZ§vtéÈà¦ÚxjÈ©d|·Æ†«A~.Äe«¾|$¹[›±qœ²ƒNb ”–€%gªº‚ü½c©•‡·Âð«×Å»U¤ö„u¸~¢Ž|¸£+‹›¾ù§wˆÑ¿™¨ž„(¿¥Å}þ¼ò™åpS¼ã—‡kçÄ,›i•Ê Cr Äxín@ÁBœÌn~Àošõkß¾5šƒmì¹%šýsÿ²X›÷€1¥È˜9•?‹lq3’­ˆ“u[šÜ’mw•§Œ«…‚HwI`¯q$Y@¸f¹M 3ào²NÇ2‹}íOe1 þ` Gˆ´h^?Ä+Ài¼?ÛÚÝnÜž¿šÄ‹Ðšítuÿ¡Æ;„¯ç™†‰Ÿq™Å„®Ÿš=|øšd’¥pçÁV#‰”p77[wu\Å4¸dÌQ¥: jvX}=² ¡¸ˆ•¬>Þ„ ›¡‘?z›a‡3qâ …Ëo”*‰ qî–ëÛunŸÖ’îx“ª¨– zx§ –Î|´®Vœ¤‚TÀ€¥Ñ}¼Êâ©{•È8ªÌ5ÄŠ©²†CÂý¤m€Üä6zðÄ ¦$ybÄ…¥£x‘ÅL¥{:Ǧ%~?Éøªñƒ®Êœ®õ‰÷Èè°UÄÔ²š7½¯ŠÕ³3¡ƒŸ¡§’‹vS˜ûˆÆné—‰mo– ¯SrC±—Ÿr¸¼J›‡o²½½—Ykø±ÐŽñbö¡{ˆD_ø–„N`H”Sƒc¨•ëƒ$c|y°P?‹bs!K¡{Î`u•'†¿lšFˆCkÝ¡¯‹òkö³£–ÿtö¿ž¶xDÁ'œ÷u>ÀjšÚx(Á·ž©‚0¨yŠÂ?¨ÜˆÍÀ½¡€ ÀVŸ)}ËÅZ¨¡„¹Êì²?ˆÅÈS²Ü„‘È®o…Íú±¸‰kÎⳫˆpÀ¢šwˆ«RŽy\û˜€{.D©‘ÜsmŸ™…3^Ö”$y¥Pàbx¿W Ž•z`!…qÉU݆žmÔIs—øyMP ­ˆžfÛ¡cŒ@g®²è–0m:É·§±{½Í™¯Ž‡iÆH¬aŠkÃ*« ‰ÊÆK¯ ‰.Éw°¡‡ÈÙªSeú A{¾Òš¤tT¾ú™jn:¿B›ØlÅÁ7ŸÕxªÇ3ª£†zÊø¯D‰Å «Aº-¡¢ˆm·F¢l‡~¼‘©‡]¼¥-ƒ^žŒŽLsp„žtzX9…qr-P0 ?Žñi•¼‚žJsˆÀYžnpQ¶à—·q0¬Þ“uѨ~–#°¾‘òû-‚n¾•obXJ|Œg¾F9•ï‚GYp¤¥’SiΠ^Œ¨g&£”ìrô= ù†½ûªw*¿|«2ŽYȾ¯‹ÃÈ”¬`…äÂs¥e¶³$™Ér?œ®…Ö[•™?‡õbÝ±ÙØ}‡¿ªÂ|6ÅѪKt“Èr«$uÂÂí¦çwÅ·  ª{į@›¢x±†˜ÄnN¼è›èsª¾³œ{q÷Àؾo$žâq韫{¶Æû§…Ëo­‹>Î+­†;ÐË­‰ÆÍY¬Š‰sÊĨ™êÄ3¡+w¢ÁNr×¾˜Ükš³…›gÄ¥Ô‹Äj‘«Ù•+{³ ž ·xž{Ö³ÈzÔ¯Mš{ £{ r—Ÿ ŒülG£DŽ×i§¢m‰`cf¨2–€EÁ›­y’É1±j‹Ë6¯<ŠQÊÿª£ˆõǃ§(…ÆÄ›Ÿ ~VÀAœšy¯¼œD{š»úž‚Þ¿Ü©®‡ØÂe¯ÓŠJŰCŠsÈñ­$‰ÊÌ©U…˜ËÝ«H‹¦Ói»úŸÍ8²Õ‹º“˜ähe©“‹e쬶š:‡ÿ·Xµ¨‘‰¼>¨x„º%œM|À¿®¤Y‹HÅq§ÍÅÈ.©§‰LÄ©`‡…»ƒ¥IŠš¼Â©Äº­Š†áÄÑ­þzÅÿ¬_Šž¿v¤ô‰À÷¢‚A¹¯™½mp²à‘G_ò›W~£D9”zQ §[”¾€û»ó«°•Y½®~‘U³+¨ "Ÿ(–L‚KŠ¿q¦H«nÓMä$6qÕT-âv d*5z_iDJu–`ÈC5vÌ\"7¶‰ØruQœÌiRF¢uB`F5鄨k¦6-¥„èbH»çxvÆp¥¨y2ËY¦‰s·Ê=¥žulÊá§:xœÉ«×z7Éd­c‚÷ÉÇ®ø…æ½² È}†¢Wçmè™Ò‰ßj«<‚y»”¨¿‰WÁö«ˆ ÀਉL¾ø§ªŽWÀ@ª.Âjª§‰zÂPª‘„4Â;©ß ÀïžI{\¿ò˜äqÏÁ­˜gÂÇΞ8m4ÅSžjljÂè›7m>Àk™+eì½u˜œd»ºS›„t¶ìžŒƒS®kô®¦,˜ñ€Æ›‘í~gŸºš‡Ÿ›Ù„“‡y·Z³v\D;åpJT/3–„žTï+C†U/þÂU±OÛƒbf÷YØ‘˜ŒÜ«-®u¨ÀšE˜SŠe–ÁŒ©tö™[•"$™É•e‡=©¡~|­ÒžÂƘ)¼zá}R¦‹VpÒ6–w Yv0¸f(R9üm’\Ê;"º ½ €½ ½ ú¼ ½ (Sð½ ÿÿÿÿ`ß*ÿÿÿÿ`ß*ÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀlÀløCÈlˆÙHF³ÈˆŒHùfÈÒˆ?H¬È…ˆòH_ÌÈ8ˆ¥HÈëˆX HÅ 2 Èž ˆ Hx vips-8.2.2/test/images/t00740_tr1_segm.img0000664000175000017500000770000012530402247015013 00000000000000­c© õ ú6ÛJÒXöY~l»·0ÒÀ4j[ÿ""ý"È Ùˆì-ž0ovÒ$õ…XEŠM•» V ø ’ … ; ( ü «#jï9‚˜H ò ?  Ñ  O H  « ƒ œ ½  M – ÄcâFÑYIkÚ1… çà·åâ¼ÿa¨š$¢,ñÕÂY²®¸ÀÒYÃ Ž  ¨ $Ê„fÁƒaE11ðƒ·þaö p»¦!é&‹**>(ý%¯#p!,¥…¡jvRˆiÉ{ØiÉ  ´ t 4 L   Þ t ¦2~ dÃñ ¥ C w B ® à  % ú ‡  à ü  I ` j i † Å X ¯ ü Å’H=¼XCµBd6ò¸IFè§ÐCÄÑ„žÉÆÍÔâùö/‰C ÷:JêöÐ×°_·=TI]KwÃ=C S"é$%)H,™.ž-W*ý'A$À"y´J,ïF¤=|~„*¾ . v > Ò á ² œ d Ï Î   m ® C À é ò m p Ø ö ï ø Ä R ì Ì ð ( 3 , " : ^ b † š F Ô ÎW9L* !Ã"É ñ|,yIo£-,{Ny®(:rz¦Ôç¢~­ì»`£«qHäSy  z3rL ®%3(Y**‰,w-$,Î*Q'$O" ~$ (‹co0&Ïä L ‰ v ¸   m b @ &å  ‹ ? ¬ Å Õ ® X  ï 3 ¨ Œ ˆ b  Ø Ö þ   + %  ø é Ú ´ ¯ ”  ^ Jó/µ "7#˜!¼<G©û¶G;Q(–~K·>¬Dæ¨ÿýŽ%ôÅð íøOÀB#ÆÐäÒˆæu‚r’Ò"ò'®*‚,Y,B,ñ,*¦'Ø%'"c Í/¯W•ÌÔ=þ}›‡ = þ ý ˜ O ] P U c b 2  Q ™ ² ¬ ¨ ª ¾ Ô Ë Ý ' r y o B ö ¾ ¼ Ö Ò Æ Ç ¾ £ „ w j G 0û E F  ¢táŠ!ê#w! </Û¸µfñb3ÊëãXÏIh†y•/„;×uhÆ!íiq_ÈE8e›ud1Œ·0°‹V¿! $§&H'‚'' %Ù$`"ø˜<Ô`%ôE“ £  Ê ] Ì  i È i   3 ; = S O !ðèòçÜÔÜï    P – Ê Ô × ° o D N v € | „ z W 9 = H 8 $û î , .â°º aÜSsí‚J ² ¿»¼wáý…+À-½à+B.sÿ9ž§S-µ"m6Ê›b¥ÎOü4r ²!G!¿ ý †Lÿô×P´U0¥   # ° Y ( Å [ô¸•—¦Ëà×¢u,Ò{7êÜÑÙàóü&nÆ>UJ.:ë = f ‡ m 4úõþæÉ´ºTî Ù÷Ð ¥=¡´·  & Ã*7…øgÃÙæ"‰\¬‰-“["Á_Î0í=4Yk!ñÌÁÄ X ª L ˜@'zº£h‚ m¤ ¾{ ¹ 9 l ” 6âÑÀ§k!ÞÀÃÓ¾ªÀ¼”(³/³\õÒÁ¯¤Šˆ½ÞAQRˆø–'„ÐÄ”O@;ïø »îY  DaöcØ "÷Б >  7 ²Õ}þß±å:“¢8•ÿ š{htÂ]˜Zqž”ŒŽ ¬ Ö ¨  ª e 2 Úúª´eÔÔUÑ2- á ” ‹ é VêaÙF×}W7%öÝçþú ÝWÍIÚ wiI(èÆÂ¿úUÈ&`Š™–Ã!ºOÓTˆ“h]BÿáMY—ØÈ é Ê.ú ˜!Å H Ð „ z m Äb<Ђޤ:¹RËœs7Í0À‹ãƒ~él pÉP  È é A ª Ï < ï  … w s &  ‚ § 7 Ù O À %Üç ÿ‹ý8¢Š£p(òÜÞä‡5ñ³Ÿ§²žm7áÜÑþM±ý'LRDP€çFºB£ßÛßÀ€j‹÷LËV‹ R „ y  Ü Á ' P “ * K 3 Ú Ò ‘5htj|.+ Üb¹d!鑞% P  ! ²0mw ¾    ” U Ò u T JôÉ÷ J ‰ ]Ù2æ¾n'î×äÉ{Ù9y‘Ïf‰W߃6åÄÇâÝÒÛØ¼ž¤™k½zKL@l· wºü"+U˜È h»ñþêÚßUߥmæ3°BbÄ÷Ðµ× X ó õ 9 2 à ¥ “ $ (  ^ i ­  Æn™ É 7 ; t  | Ë  ì › ½ › « G Fø»ªŸf2((àrýþÓ<ÏV¶dÖríÎuÕà´9ÑlÿÑÇ.sÊ ÷ þÅ‚<êÃÈç"Imš¼ÍÞ +,$4IOXtš–Š‰l¼vhzä/dóˆÚæàð&£ . Ì { Ð Ð y ” Í  f { Z 9 C • ÷ x Ó  Ê Ð Ò  q Ñ < . Ù  hCd1ÝœT±t4Þàÿ!…ùœ^M8ÏvJü­Uÿüÿ»ÿrÿ}ÿ´,’øb¦ÈÛR–¯´~@ð¦wbRïÙê)[o_5þ .e©Ë¾mEuünàWž¥Æ-ç´_ÈÿM®œ , v † M  T Ú F r w M 1 + 1 ` Œ Z = $éà  u Ä ¤ 8zÉ]FDù€®^"ê§Kò›…·Ñ—\à‘»~¼©*ì¬Z)07P_ž{Û+vË ¥?ä…ãŸõ_¾< Ë[óÖ‡=ÈÁ× %=~1Àx‚Ÿý(E¿ƒaücÈ4µOý…  Æ{‰ò j Ò   ï ² q S a°€G?ÅìŸU³<êŸ ¢@Ú¨K’Áª=œ ç ‰ ?"¦*âÆn¥EÙAžÍùJ{Áß  ] è ò à š ˜ § } }Qä‡M¡+â—+”õpÿûÿÒÿÊÿåÿÏÿÐ86 ÿíÿÓÿ®ÿÁÿú_»1f¹7©>è•*¥I¿¿˜»2Ü a ž m <é–kw0ÛÄÓ “E›lî\ÎÌÁš?ùð7EY/Èf0dÐH’wÇ“ëp¯ ) @ [ ò w q K û · Ó û Û é”6 ޾¤Y¬çU‰ € Š ¶{yå;Íõ L¦W% ¶mEO[}®³2ÿü N°ôåÕåcéŸhÂ},¦äR‰µ}V"ñãL+÷ã¥eñrÍ#æ~þòòÑ¢j_˜Â—?ïÖéHvXUV(5C{  ²Ó²ÎüyÚ±p1sÕv˜Æ3 Ý"6" !± UýÜrÐ<Ì é - æ ‹f<:%\´a"×Z¯òp/ÑÞ‡ ÿœÿTÿ~ÿçVwW ,w<%øh¬/¸1‡¿•mv}`<1ZØÄ¾¶‡;Ó‡2ÑUÃHåÁ­´±š^=KŒåÿ«RL¯#ª$Q=ÔkH  e¢kÑAÓ<îÐÇ1’ ·"$+&*(N*³,T-¨-j-+));&…$!!Ró=r ¬ § Æ  š 7ÃARÊ¢ö±ÿžÿ£cq;ÿÝH %Î[òO|¡ã?¤ö6FA@i",B&ÙŠ3ñ­Y¤iEDH=ßž•Î. æ!ÜôÔjåmÄ@  ,ƒ{Iëu!$Ã':)ž*á+í,,)+é++…+v,6-B/ 0º2°4ù6¤8 7Ò7Y5M3302-[*&Œ#? KÝ6©8×ÒÎŽ&à ± ÉånYái÷s†;ûÿ´ÿÿÌÿú ÿÈÿ¾#ï°2`h³ W|~ŒË1•ßCmˆ¨y/ä¯a ø!<:ÞÁ·tùxB R à i  /C‚Í?- é$¬(g,&0:3²6õ8Á:L:s:œ9ò9%8V7¥7Ð8P9©:è<‹>|?ûAHA@›><|9v6‡3%/},=)l'Ž%Â$s"ö!½ ©´¥víê=Þ¯x&Ê ³  r /ßIt|&ÿ-ÿAÿ¥.ÿçÿß5ÏnÀÔòaŒrIE†åU©ÖïäòÔ¨¾åîÈ‚L>qÃûâwÙp¾‡ø n ‚ 9¹LÄTÄÆß"ˆ&ã+*/¼4D8¼=„AXDâF…GáG‡G%EÜD‚C@B AüB)CPDlEòG§HíJIÖI\GcEZBL?A;Å84æ2+0™/$._-n,Ô,m+ù+q*?(¬&¼$ô#Š"!| å¨õc‡i r º¬ñËøÿ/þ›þ±ÿÿæÿðÿë6ÁTš„DYue>\âb šÿøÿù/mˆj.ÿó,ˆáèEþ»ð Ψ ]n©ÚãÌ2‚!‹#$b%ñ'¨*­.2¿7r<ˆAƒF#JõN|Q½RëSÍR÷RPˆNûM¨LaLL&M6NUOµQ QÝR£RVQìP1NQKkHxE0AÔ?<©;W:$9²98ú9939E8N6Ò4h2/É-á, * '°%f"–Ð$ûu Œ²Ë‘®}ÿMþ±ÿ+ÿ =,&d |\çµ­¸¼‚e…ìj­™ÿ“ÿÿŸÿ¢ÿ¹ÿî' ÿÙÿ²ÿ ÿÒ‚®?}¶ › ¡úðÒd¤ s#]& )(+”-Œ.Ë/Î1Y3>6²:‚?xDcIcN4RzVöZ7]D^d_0^r]Ã\t[/ZX¼X[XiYqZ“[µ\‹\Í]'\À\\ZÖY VDSkPlMŠKCI&G×F”EæEDÕDíE=E ECöAŸ?S9K4‹0 +ß'|"ÛiH’ J 'áä:žŸÿ–ÿvN@ÿØD;ÿÛÿËÿéÿÙÿ²ÿÂÿõ ÿ‘ÿ†ÿ”ÿ™ÿ¼:AIlÍÐaã°ª Œv5`%$Ý+i1‘7a<AîFiJ¨M…PUQìSaT&T§UÉWZŒ]r` c…fƒi£lûp³s¿vxwxKwÃwyvsuNs»r p³o°ojoRoPnän_nmãmÙmWljþigCe³dódmdwdgdcd$dddÉdÿd b±`]zZHWiSúPaKëGSB#<Â7²34/3+i&¹!£=”  nsˆ¾žR`Ý…*Wb.ÿðÿìÿúÿÝÿÊÿÒÿ÷!ÿdÿ\ÿxÿ‘ÿÂÿô1R¬-²áF Ê …ʇ ¤'&.g5{p¸srv€xù{{Þ|^{Ó{…z‰yowÈuùtNrØr qÁqšpùpOoÔo¦oÂo•o mÍljBhÞhhii iŒjjnjàkËlwml>khdÕa]ŸZhWjTPdK¿FšA<<_84J/Ñ*p#èö) k ÌáBF –p ÿ×ÿÎ^J ÿ÷ÿôÿïÿòÿìÿöæ÷<‚Îé@·Ãï‘ý î ÜÍí6u½%+J1°8¹?×FÔMØSÄYk]~avdgh‘iÌiÐi‚iiiúk}m nápvrs×uÁwðy»{H{Í|{­{pz°yáx‚vèuGsÆrýr±r¢rqIp«pbpypaoünºlôkBjiéjjàkœlpmmÇnãoºp“oüol,h¶dx`¡][XéV•S1O!JJEÏA~=©9E4T.9'¨!P'C% | `³­]"| JT<ÿö kš’ $·°š Œ k/Ë8Ëš$®*™076VµVè!j“ÙŠÎ#0'†+ñ0K3Ù7ÆB³G¸M(R‚VçZ˜]„`îd1g¥j8lsm_n:n-n3m´mBlqk™jzi?hfõf`eÆf)fÆhciÿl+nCp¢sSu„wEwýx™x³yy yy xÕy?z7{ |Û}–~ }ù~*}Õ}l|!zfxwvöuôu"tCsq‰p%nômímköjÙiìhŸfÄdöcZbïc3ddwddcÎc˜dnenfUePcu_{[£VãR˜MrGæAk:Ø47.'ø!‘„w® ] LÅsˆâ7ÿÚÿÖÿå<,1,€,r,+û+Ú-.§2=6_;–@fE ISM°R¤Wq\_|b”d„fŠgñi’jxkHjújai gÒf™e¢d©c€b2`Ù_®^}]ï]_]÷^æ`Úb«d÷g*iÌlÙo«r$s˜tÎu_v'v¶w7w–wÌxhyzzÝ|(|í}h}K}u|þ|ezÚx÷v¿tÝsIqçpcnplbjvi gßgfeCd³dcb7a|aÔb¸d;erfQfÄgXh­iïkjªi¹fád`\W*R;LOFF?8Æ1·*”#–qcÉ ¢47m96!ÿÕÿÛÿå:6ñ7 6±65Î5y6¾8[UY¥^kbfˆik}l,l‘l l khjhÈfcÿa¿`^]c[ùZ™YEXVÂVU`V WY1[ ]h_¸b¤eøiQlkn¨p”qásit¹vwwçx³yÍzý|E|ô}V|Þ|†{kz7xIv?sðqÎo´mµkzhÝfNcâbMa`z_¬_g_Z_µ_Ñ`?`½aÖc*dÐfMg©hÔj"kõm…nãnðnÂmk~hpe4`¨\BVÅQ[J£C;3…+s#>ôù Z¼ÿ×ÿØÿ’ÿ·ÿÜVAºA©A@U?è?e@¦BjFK P„UaZ_c]g‚j•mìo•pàpnìlÀkKi2f©cH_±\YYmWlUƒT.RµQŽP†O”N1MJLšM?NEPJQÿTÞ>g> =ª<˜;±;;¡<²>­@RBHCíF–I¼N>SWý\-`d&hJl‹pJt v†x†ygz¹{${„zly"vEsDo?kIgbà^ËZ§V×RúOêLæK*IŽI^I;JPKbMgO|R&TîWYñ[µ]*^®`Xc fhj"mpoèrAs«u_u¶uÁsÿrnÏlegÔbŽZ PÁF =*?i@êCE2G^IOK'LÚOQXUY‡_d‘i£nyqþugwGy?y{y…wÕv™s$o—h—`ZVLÂCz:<1>'ÅŸÅ®[  ex`ßi©iÀiQh®hRh6ijelmnofpMpÛpxpqnþm(i|e”`­\IW4Q¨K¥E³@L;6è2›/Õ-\,+ã,!,t,y+Ê*Ø* *#*Ñ,,é-Ë.@0 2;7<ÊCèJZP‹V‰\^bxhdnÌs‚w9xÂz¨{)| zÖy?tâpisbõ\UrO2HñCk=€9t5ü5-4×5Û6Q77Ž8‘9Ò;=H?@~BC¢FHvL”Q9Wc]±dj"nÒsu¥x_ywz‡y½yv(sdmUf\•SÿKeC:‘1q)!r|D™ FåØj:j¬jÄj‹j—k l4m–nÓo£oàp|p5oymµl€iêf¨aé]CX)SVNYI)Cò>±:5u1ü.‡,s*|)ð)—**¤*Ú*c)‹(Û(Ó)J*)*•++4,©.O2Ù8„?ÿFÚMsSŽY’`f«m¶rÓvÂx9zzƒ{uz2xws¦nWfý_ÚXGPÜIäBñ<ÿ6º2§/(.‹.c/µ0„1{2J3A4X5¥6ý8=9&:>;Z=?ÜCüHyN¡Tý[¼bsgïlêp!squAw>wtw–u~s£nÏhß`øY¶RjK’Dj k?ll£lÐmFnVoÒqFr,rÌr}rvqo7l"iÆfaR[hUÞP\JôEæ@å1Q22„33¥5…7ž;¯@FLRæYÕ_ýeµiÉmÄpOs't_ultcsœpk e;_IYCSðNG7?ø93>.)k$6Èîãj–klflÍm‹op·r&rÕs‹srqp'mxiufaO[}T±NkH¢BÙ=ô9U5s1-µ*Ö),'K&A%%%¤&þ([))(*'e&æ&à''&ç&c&û'ƒ+30W7å>ÎEÁLRšZaÀiÌots©u väw{xåxvšqxk«cR[?R‹J Aã9k2}+¤(%3%r%´')(>)d*y+b,=,î-½.A.h.Ÿ.Ä041ø5¿9Î?_DÎJñQDWe]\b*f´iûm†o¶qØrrvpLm[h“d_o[W)QµKyE‚@;M6v0÷*º#ú(jkll‘mro"pçr0r™sWrŒqVnj¬eåaº[þU%M‡F“@:‚5Ü1§.‚*²( &#%^$'#z"£"ó#Ý%°'¤(É)!(F'\&“&r&”&b%ð$ø$ð$Ø(,Ä4":ÙA¼GêN‰V]êf%lp_qþtu/w7vîuÛpàkAbþ[ RbIüA¸8õ1¡*y&°#Ó$$M%¥&«'(A(›(å)()¥**0*_*Z+Œ-0µ4µ:?)DÇJ~P[VK[ `®dÈil9okpßrHqXoÖl—ivfc¥`w\\WR LõH‘C‰=Ë6Õ/F(‰"œh°i^jAj®k…m"nÀoÒppÏoÐmüiöf `ñ\U·NLFo?>9m3¥/¢, )³&¤$×#ê#ï#I"Ü"O"Ù$& (ƒ)è*E)6('Q'n'Ö'Ã'%È%A$Ñ'°,39W?ÇE”KíS&ZÒb×hÃm5oAqÝsšvKv¡v qldæ]U9Mò7§2:,è)³&á%q#H"q"•#{##ƒ#R$%a'œ*9+“+”*(Á('(¸)¦)Ý) 'ž&É&6(ô-=3ä9ª?„DÊJÅQ¯Y7afëkomÙpâs*vRwv×r¼nGg`WóPGñ?@7¡0<+ë(c'í'Ž({)<)¯)¾) ('-&‘&w&f&ª&„'E(:+.~3/7t< @rEwJãPØVË\iaÑfwkunþr1s5sàsrFq*p­o„mçjýhd#`á\V‘O9GQ@9re;eoeúfSg+h˜iëjÄj¶khiÚfôa¤]W%PÛI@A9|2t-¢)&´$ˆ#¼"["K#.$™%"%L%R&$'À*,’-Š,ù+&)Í)¤*²+ý,P+s)â) (–+\/“5Õ;@WEJÉQyXÛ`Qfjm\pÂsmvÆwÅwítnp·j+c‘[S¦K\Bž:î3„/+'*J)˜*i+!+¸+ø+S*V) ('u'&÷&‰&â'\)|,$03…7;.±/A.:,8+ +L, -ì. ,â+6*f*,Ë0à6Û;Ô@ØEvKQ½Y`4e¾j@m-p½s“véxx±uçrðlæf˜^iVtMâDã<ë5C0ƒ,F+1*b+f,Z-].-Ë-!+Ô*·)¸(Þ(?'['&Ö'û)“,M.±1Á48Á=‡CÔJCPðW\öcXh»mÂpÁsVtiuÀvfw/wJwwv‹uls qm@h¹bH[\T×NýbÃb“ccèehfòhihöiOgcv]dX%QrJAþ: 3R,×(Ù%l$!"‰"0!¨"l#ù%©&K&o&„'´* ,è/D/Ÿ.”,Ò, ,«-ü.Ö.o,Ô*û*0)Ò,i0!5“:>²CHÊOVë]óchgÿk=o#rXuâwmx‰v‡tloipaxYªPòGÏ?¢7á2ñ.c,ç+³,-M.s/W/o/,.2-c,O+,)û(¬'Þ'/'“(9)½*í,å.¥2-6[pÈr¬tâvw.wrwõw‰víu)sºp¢lÿg aÀ\)W0ba¢aücdËf0g*hOhIh€eÿb]\ C’JQQêXý^¥c~gQkêoöt8vsx5vûuÙqŠlÐeb]çUKôC»!‘!!…"‡#‹#¬#ˆ#@$€'F*ž-!-Þ-«,å- -Ü.ö.è-¤+;(Û'®'(Ñ+k/1“4¢7á=\DKÐRâX¼]ÚbSgµlªq¶t‹v¹vu r[nÀhRa±Y^PŸHAP+])ñ(f''Y'È'ß'­' &Ô&š(b*ä/•49Ý?‚FfMÎU¬]¥di‹lñpÔrÖtLt8tdsûs·srLqpnPliâh bÔb~cd—f¥hhÎjni÷hocÆ_XkQÒJB:2,&q#æ"!ë é ‚ _ ñ!­"\"u"’"Œ$ &þ*P,Œ-?-~-a.#.á/£.õ-M*µ(G' &]'ˆ) +8,.P1|7e>EwKéQuV¯[êb*gïmwpzr·rpr¼pênÙjdeë_KWéP&HøCŒ>º;u7ë51î/±-Í,å+Â+v+´,+Ç*Ù)v(›(É))í)·(ð(c'õ)m+™/­3h8]=3C…JcR#Z`Îf‡j5ngp´rˆr„ryqªq.plo†nxm«lžkiªh“cñddáf¿hþj™kpm>l„jadÖ_—XIPÔH`?æ7Ö/)˜$X"Q Ò ô O . G á!‹"":"w"§$='$*,,,p,¬,°-{..o-+Û)²'Ñ'&»'Ï)*Þ+²."1—7¢>'E@KQVP[‡a¨g.leo6q`qDqµp4ndjyfÆaZyRøKžE˜@Z<ß9v6Œ2Þ/Ñ-2,*Î*ý+±,¸-Q,þ+à+ +|,q,ò,+y*`)„*o, /Y2/6>:>@ FlNV]#c+gFkãn›pòq%q oèo5nEmlkxj÷ji=hÇee§g i[könoq$p=mÄg—aÞYëQ•H^?a7,.¡(Á#Ç"B!!®!©!ù"C"¿#[#Ï#Ø#ó$ %J'©*+‡+´+¸+‚+ý,1, *é)R'¤&N&%ñ&ù'þ)Î+-ë1”7’=ùEKvQ3V—[ÇaÕg'lnÇpëpíqapnIjÍg¶bÉ]9V@OH—B¾>Æ;d8Ÿ4Ì1C-ì,?*î+‰,¢.8/g/p.v-„-ú.Ú/K.—-+\)ø*?+3-¯/‘2±5Ñ;AH©P”WÛ^5bàhk[n…oBocn m8lj²i’hõh™gÃg#fÉf g hÿkÕnéqqr×u/t4qjÑd¸\9S#IA?Ô7}.¯(Ú$ "ù";#N#û$°%%(%‹%²%|%>$ð%¥'O)8*m*˜*}**)Ý)?'Ú&$$›#o#J#C$&$ß&'Ö*ó.ƒ4e:×B HàNîTxYã``f3k“nzpËpæqipUolejeòa6Z¹SýMGFåB(>b;N72ö.®,U*È+Á-9/60©0µ/­..ü/º/ý.Õ,Ã*T(T'ý(\*!+#-c/²4…:#AÚIÈQcX!]lc g&k&lulÙkfjŒiYgñfçfvfRe¥edÆe÷g i[lˆpstàwxvusµlØf©]ýT™Jn@Ò8{/¡*%%$Ò&—(")f)ð)â*K*V*)X(q(>(Û*++b+*)¨(ó'ù&i$œ"÷!Š! ¬!@!¢#$^'v*¹0j6è>‰E‘L QÿWì_ePkn psp¦qKpšoÑmØlBieC_±YúS£M6GÌCl?Æ;Q6×1×.»,¡-Y.§0‚1§1T/ÿ.›.Á/1/#-ž++(U%ú%8%&&X&®(L)ÿ.†3ö;ÈCµKŠR–Xk^£cWh0j&jçihÄg¤f[eeedØdcNb²ef h‡kàoÌsWuxPw>tfmhg=^ŒTýJ¢@ã8—/È*&o&™&þ)r+Ø-Ç.¸.Ã/k/ƒ/M.D,Ù+º+=+¥,i,«+ø*Š)²(¦'a%´#è", x|³ØÉç ý#õ&ù,‹2ù:ËA÷HöO¼V‚^9d¨jEmo}oöpåp”oönwmk“id¸`Z,SìMüID±?ñ;15®1á//90#1Ì2¯2 0.ì.È.ó.¨,÷*b'f$è#Ï#K#Õ#}$v%Ž)Ã.÷6Õ>¿FÆN TQZú`Qeýh–i¯hLg¯f¡ewdŽd5cécb a-d/d´gj,n.qôtTw#uæräkÚeÂ]PSúIß@L8D/º+'£(©)Ë,ú002Ø4f4ò696Ç7 5÷4U2|1#0Ï1F1j0N.m-0+ì*{(Ó'8%}#w!ç h !%"$ÿ'ï-`3—;defyi_mOq2s±vntôq¯j{dN\RÙI ?±7û/»+•(ý*ò,Ý0Ä4¾8:1;<=>)>ñ=þ7-5¤3H1›0._,Â+r)é'·%²#÷#‰#5$%½(Ô+ç1978>‡EYL3S4Y `Jdõhûjmknkul~mlÌl kíkxjþiföbè^MXðT/O´K]F×Ax<å8Ö746Œ6ô6Á5†3X1)05/´.ä-'*­(%Ó$´#Þ#Î##—$M(;-14ã<ƒDsK°R]Y_«fSi¹kOiÿihpg3eîed=bâa‹`Gd»dªf‹i)lÙpšròuksŸph¥bSZ7Q_H?7Ñ/æ,K*s-O04˜9/=?«AKCæE¦GFyE BŽ@d?(?*>ð=1:™8«6ý5+3§2™1@.ý,Å*è*‰*g,-„0º3ì9 >½ExKØQïX];b—f&i\j@j\iÝj¯k„kšk)kj´jziPhea{\òYUQDLèGËBÿ>•<:[9ª8‰6Ä401Ó0†/É.Ç-*Ä(_&l%j$‘$s#¶$k%?)<.85Ò=IELVS%Zp`Êg•kl¹khjþi»hFf°edcaÈ`˜e`e'fæiKl¼pNrtt«ržnÂgD`ÔXãPVG>î80Y-1+ü/©3&8b=’AØDÛFìJ2LšNžN6LÞJ/G×FlF\FDLA—?~=­;Ê:F987Ô5e31M112»447E:\?DD¼KQVƒ[Ë`d—g”jjkj½iój¨k¹l$lkÿk¯k„jÛjih‡eÆað^Ç[FW½SON:I D9@µ=Á;²9\6ì3è1|/î/.,„*u(T&‹%w$o$#F$$ì).5«=DÚL*S.Z­a2hkžmWlk jFh¨fÛed`bçaÖ`Ôd®d¤f˜i*l›pqûsàqm[eÊ_QW›O[Fð>´80¦-Î-1G5Y;!@ÈEvHØKjOeR|UTåS§PáN‹M)MLøKXHÏFÂDüCIAí@ä?u=:Ç97929C:°;â>‹ATEßJþPÁV Z¤_b¯fÌi¾ljmlál:lïmênKn$n m­m]lØlÆk‰iRf cš`ƒ]%XwSMM´HzCï?“;ç84Ý1X.ï-2,Y+>)ù(Z&¶%J$A#"Š!—"_#X'•,Á4y;éCàK€RÝZ a;h+k™mHkîkj$hSfUdÚcÚb—aöaac3cde¯h¡lGoäqspOkÓd,]·VENHF2>>7ä0µ.9-â2½7k=ÖDIOM4PbU/Y\4\+ZçWØUUSÝSÇS¶R6OÍM¸LJ›IœHÕGsDûBŸ@ý@â@æB*CEhGëLPÉUØZ6]åadíhêkØnn n¶n‚oap#po”obo9onÏon'lCiagd¿ay\ƒW;Q"KYEŸ?Ä:w5;1.-$*½(Ó'ü&Ð%Ø$Ì#ç#""\!> kS !%T*2J9ÊBJ QÛYô`»gÑkImk¬kbiùheßdJcjb_b&aù_Ù`šc~gk5o$p¬qúnÄiìb.[ÏT±LöE=\7/04-ø-â2þ7Þ>EJÓOOS3X¬]`Ýa0`3]:ZÔYfYHYHWÿUæSýRƒQuPâPzOkMWK-I—I[I^JKCM2OoSW-[X^±asd[gdk-noßp,p~pœq~qïqzp™pCp?p=p-ploŸmçkZiägtdT_LZSÅMÀG[@¥:T4(/x*ø(]&&%#"Ž!·!T! œ£¹‘?G#¶(ó0Û8~AIyQ´Z`òhksmk¦k\iÖgecabµaõb?b”\c]ªa e;i°mòolpŠlîg©_¼YgRœK*C”;ø5æ/- -82ˆ7q>7DçK&PRU[=`KdËe¹ePb­`•_3_^ÿ]à\ZdY*XWXWüW]UßT!RºRnR†SŸTGUòWü[0^Çb+d¿f™hzj©mÐpRqÐqÒqÄq‰r rSqäq p¯p—p pËq8pÈoƒm†l£j¥gÙbò]ìW Q•JÔC¨<ª5Ù0˜+¦(°& $Ž"†!< E ø¼ÛûÝ«æ#›)129AÀJS[¯bzi}l‘mël8kÐjg[dˆb‘ba£b{cZXLZo^mc=gÿl}mënÿk2:hC?L5TÖ]ŠdAkmêo ml|jdfûc—aN`ü`¼bcjUX8\Úb* 2·:‡CjLjU/^døkæn´p nm)j/ev`î^]ã]Ë_ÁaÅLQoW°^ÀdhiBjhkžhUc{\ZVÓQ*JãD¤>d9–4V2×2ß6É:J?‘DïJšOàT˜Yk]ga‰dffxgg/g†gôh¢ii hªh-hhJiejÅlƒmîoBpÙrrÍrþspsLr¾qóqsqNqq`qÝrötuzwxxÃx•x)wzw-vöv¾v7ut{s•rqÞpInNjÃfÏb@^žZKU*OHÚBä=8T4L0Ù,z(œ%#!Ü!£ ó IÎä¡#Í(Ž0(7¢@yIaRI[Yb–iØmomzléi¼d¢_«\“\{\X^f`ŽEšKëS [!a³gPijÌhcþ]uXKR»LF@‘wIvt¥sr}qÆpWnƒkOg¬cª`»],XÌSMFî@È;¶7˜3ì/*&a$+"¸"a!† €–E!Ï%¾,Á3ê<ÎEŸN¨Wë_g&jðm²l§lRhÔc\]åZrZY‘[p]€>ÂEþMõW^¦e+g–jgßd…^ƒY¯T+N H B;>=:,9h9Z<Ë@aEñKQ:V«[_aòeIg^hõi@iži~iFidj-jük"jöjÙkFkùmmopÆrst,tªu tTsBqoæn·mõmßmum¸no•qnsöv¿x’yy x¨xxOxpx=w3uÕt&r¾q¡pâo½n9kŸhšebc@`{\øW²R KÂER?Ë;|72,Ô(I%Õ$#„"a ÿ²µs s#©*212:>C L0U¨]¢eqi›m lwlKh`be\DXNW’V¦X^Z]7Ù?ÄHlRUZÝbreëiMgíe{_ô[OUžOxIsCŒ?¢;Ü;l;n>ñBÎHÁNžTZ{^ïb¿e&hiÓk7kgkšk@j»jk=llZl_ldlçmÀo"pqÊr›rÎs0rýrÓq®pmïlk j­k*k5k¬l m{oˆrEuvÚwÍwyw1vðwTw©w¿våu sßrPq%pto±n“l®jphfÀd²b]PXQgJ¼D¼@;~5R/*~'¤%V$:"°!&Á¾c 8#%)”0¾:BðLU®]²eaiemlYk£fÉ`Y2TiRôQMR°T~1d9÷C;MÇW_—d h_gÍf@a.\­V×PÍJæDþA =‘=Y=_@ïE KOQ^W‘]äbƒfgöj`k×m)m{m¼mYl·lqlómÄnnn nuo]pµrrÎsLsrÓqöqoim=jãhŸg›gDhh–iqiçkRmŽp„souOvcvVvcv›w†xPxÎxvÂtàsRrSqËq\po4mœlk|j+hqd$^õWëPóJpE?@ 9&2‰,×)I&$X"l ï–¸g =#)¢1":ËCÂLÖVƒ^oe×izmkþjgdg\ÝUHO­M‰K(LGMø,C5A>úIÚS¸\øblg³gúgab²^"WìQÛL FB<>Ë>Ä>àB£G MÈTZL`ÛeiFjëlün0o}ppupIoéo¹p(p½pëpÅpkpvqr rÑs srlqñp°o=lùjggúeµdÙd‡efRg‰h7i¾l#o)qþsàu'uƒuóv”wìyy´yw²uÑtYsƒsr×rKq\p0o$o n,lùhëcÉ\†UNÅI C;˜4i.)ï%ý#Ñ!¤ gb!M$ˆ+^37= FNÿX¥`Eg5jm;kIhJ`ãXPgIÑF«CUCñEE'Ž0þ;vGwPPYÿa{hj†mjjÐf™]ãTéL3Dœ@S;í;Û<£#Ñ-s8C‘NjY`Cg5ijKfXaƒZ8S©M¸G¢DAA¬BFPKºS/YÕ_ÿfNjïoqrès·tÙuŒv(vvõwNwÃwÖwºwv[uŸuXtþtSs7r pÓp,nÜláiÖfOcaÕaëbc(cóe5fFhIkn!p¬rZsätÂu“vJw‘xLx“w£vutËs=r3q‚qlqiqBp”oëpNoÒnÜkf7_]YRLKÈD“<]4¿-á)d%:# ½Êf ü#à'Í.ä6Ð@eIRR[¡bÌijÑmi“dZMPîGÙ?H9Ã4X3ƒ3ŽÚ)¤4º@\K§Vù_)föikÔhHc\[qTzN/GÀD@íA—BF|LKTI[taæh1lÌqBs¬u®vbwrx xŽxïyšzzlz6yÞy(x…wÏwOvtuTs­qñp9om‚k€h€dÀaÍ_×_ý`Raµb½d eEgCjmošqRrösØtuv+vÏw!vBus;qCoæo-oKocoNn¡mûn|nmi?då^—X»QòKC‘;h4%-”)`%x#f çöù 3!ƒ% )Þ18ðBRK.SÊ]9d iékl¦h*asV«LñCŠ:3R,ø+q*È%Ë1#<¼HLT#]/eÃi.lkimdÆ\€U)NBGRC?]?ž?ÆDOJRaZag•l}q‹tƒvãw¡x¯y$yyÝzƒzå{ zŽyéy xpwÒwEvFu sFqqo˜n(l‚j¤gýdŠaÊ_è``…bcJdÎfhj²m…oÞq^rÌstsît1tøuju³tÑsq[omml¿mmlðlRk¼l8kÈjfêc ]EW›PµI­B :73z-o)–%×#¶! F·!•#T'Ú,·4I<{47,Ÿ%¯#º"‹3!Ñ-p8þDÎQ,[drh¨lÔj^f]lU¹N+F°AÓ=R=<ëA…G*O”W“_*f2kžqVtÇwjxy&yz zi{ {T{hz¸yÅx“w·vüv_u^sþr9p˜om½ljg}d^b0`ÚaYaâcZd‘f;gÓjlÍoWqHr;s4s—sïtt«tÍtÎs¡qøo›m#kžkkekakFjøj°k1j«ipeöbw\ôWCP,I A9Ó3`-§)ê&#ª î \ :"Á$ù*/Ú8@IILRPZ€c,hglýkÔjibÁY_M5Bà9-ï%n噊Î)v4Ê@žMW…asf‚kŽiêfn^&VnNcF®AT<:ø:W>˜C¨KÇS¨[žci ouslvŒw{xžyy­zzžzœz~y‹xSvÂuctMs€r¦q_oûnÒmãm:ljZh*e×d¤d@e3eÜggøi†kTm¸pyr’sát#ttÌuu5unut¥s6qbolËkmjËkkk2kIkHk°kiêf´ck]èXP³IkAÜ:3‘-Ø)ó%—"ô M 7 d#y&_,\3;ýD‚M]V^Rf]jinkdgí^~TG•<í2î'x®¹úÜÇ%x0™1&þ«Q D ÷ì ÜO:'¨3>¤ImTs\/cÇeceÏ`2Y£QGJTDã>ú<9X;c>xETLS×[Cb5iWnËsévlx\x›y\yuyÊxüw¬uMsp™m÷kiVhfüfäf’ggîi"iÞj—kQl nnpkr#s5sÇtiuÆwny yÑyŸxÔx½xÓxþxw£vtÃs`rp¿omîm,msmúnÃoFoUo—nÒnkDh.b}\™T‚KìBó:c3n,ë(F"ä :jò Ò%E*Æ3E;‹DM_U‚^+di¡iùj2c¥[+NwBÛ7;,!û[È€[¾%6#.69C§NµW5_‚bld}`u[!SLLÐGOA…>:Ÿ;‹=²CæJQ‰Xº_¦f®l3q|tAvuv¼wHwwTv‹uJr¼plþjgxd˜b a`·`Ya9bgdEeÃgŠifkºnVpàsDtÈuËvjw™xÀyñz@yÝyxèxùy%xÄwñvuu s r]qXpoto+o¤p)pÌqPqoqàqoÞlyic\æT”K¿B­:*3:,k'ž"m :§ ˜"'?-€69>KFÁOWO_cžh g(eå^GTýHh==2]'Y¬¼ ý(³ 2€)W3 =ûIRe[u_Àca]UÊO”I¹CÝ?ß;;LmÙl3i—eíb¿_¬\˜YÓV³TÉRþSÉUvY\_ÚcÝh-l¢p&s:t³uÝv?ww­x xw‘wKw§xgy6y£AšGSLÔSZZK`$eHgÌiàjjj,i‚hzh?geaÕ^´[lXXU†ReP"M M±NÏRœVZé_úe_jÊnýr¹t“v(v¨w‹wéx)wëwhw5wxxy^yŒywêwv¥v¨vÅv_uéu–uÉv^ww¯w,v^s¶q l{gñaoZ‰RZJ[B+92M+`'"Í!­ P#&Ê-÷4ä<ÿDÝL¥U;[R`q`ùaü]DVÞLA‘6m+ï"P 9 Qæ—ÂÿG ö›«"Ý,S6“AKÌSÓ[Y]è_¯\ÈYªT(NÞIvCÏ@X=>a?ÜD,H/MŠSSX·]Á`…b}bcNc bbaL`õ`^†[ÏXéU–R|O±LßJ²GðGeGÈK>N¼T:Yæ`f%ko…rtourv»wDw¶w–w;wwxly]y·ypx¤xwÙwçwówˆw"v÷wSxx xówÆvIspkYf{_ßYQ+ICA98Ù1ý+Å($#%"V%µ*1t8E?ùGÛOBV÷[Ö`7_Ç_TYQ9Eæ;À1f&ã]ž Ìêu—/_Ö g©&A0:ÂEûO@WÛ[ò_†^Y\ÑXS,MPGlBç>œ=°=°@ÇC¦GðL3PµUŽXÝ[ [}\B\ [©ZºZvÑwÔxøyy¶y6xÓxœx¬xåxÞxìyy†zEzozpx¹v¢r½nýiÏd¤^WuO®G€?p7‚1}+ý(Þ%$j$„(È-¡4û;ÚC]KDR"XÊ\\`^Î\¾TÚKž?÷6 ,Z!ÂY: |™XK|7ž 3ß „)‚3þ?5IIRºX8]8]´^Z‘V·PðKHF@ò>v<Ø>`@CQEúI1MP\RÆSŠTTTT SRRÉQ]O¤MJƒGoD@É=±;¡9P9 9Y_dªh¢ljnÉqCrªs÷t€táuQv0wgxÉyœyëyvxÿx¢xœxéyy`y£yÝzdz2yïwÐu3p·lWfÙa¡[HT©LæD<Ç5É1,“*H'N'¢(ù.3,:>A>HYO‡TýZ(\2^Õ\WXSO ED:0‹'[ï ÞGA-5  @ Ò ßÀÝ"ü-8BìMET@Z—\£^Ñ\ÇYóTONêI5Cw?};á;q;ò>c?ùBD¢G+I…JÒKÆK±K·K2KIìH>EPBu? ;‚8*4ß2¦070 0C3“7#=XCæKuRÅYB_idh¶kîo/qrÀs…tCuvcwæy„zWz–yõyZxëxîy=y]ybySyDy«ygy v™stnuiÉdC_X·Q®I¥A3:40r,’+%)‰+K-Ó3t8ü?ýG]NT*WÝ[©\O]•Y†SKH£>‹4'*Ü"ô³™)hÔ"Ûí¡Î ¦±C&‡0ž;VFNIU¢Y\æ\[kVæRnLÛGpBÇ=ð;Æ:ð{?|@¢B'CODDC¸C BþB+@Í> ;*7¤4-0ô-µ+)(ù)7,¢0O6Í=³E¾M‡T}[`&eiiZmLoºqÕrÞsétôv|xyÊz|zƒyxÚxIx8x4wÇwv]uév"u×uMr˜o i×e;`[TâMÁF><8^3^1.^.H.n1~4½:Z@6GN>SÀXY¡[ó[ZUTgLjAR7‡./%5éŸ ‚†ñw$Ù+–‰¦Ø„ Ã€ß S)G3¤>ŸHPUpZ³\ \ÖY³VP•K™F£A:=š:ü:Ñ:Ü;“;Ž;~;¾<< 3 *h"k5 B°Œ¯àü=þ4Cß¿ Ò¶†Å$O.S90C~KcRwV[¥]]„ZVP·L7HhD—Aâ?>l;ö9š7l52’/¨,S)”'\&{%ò%¾$á#û###S$´%½(a+N0h5ù<ÉC|IÆO‚T†YÎ^¤c¤gkam o}p„qýs/t¨tût—sqÔpLom#jˆgßeÇd|cìbk_ù[BUÍPKXHDóB{?4<±::;;¤?æDKHØLO!S WN\6_ `®^à]mXÓSüLC‘9¼0s'®°dž –ë¥*@/ã=(\Pûƒö ;°–Y)4ª>üGµNU1Z7_Øa`1[ÂXT—RoP‚MÁJ?FžC'@.=‰:Ü7¼490Q,@(ò& $—#W#"{"¯#$f%ö(0)î,‹/[3Ð8±>¼DÔJ¤OÛTpYH]ÓbŽfhjlFn#o!pƒqrµrËrEpµovmÝlwj[g„d¦ba `1^"ZíU¶PJÃFDA³@6=í<Õ;Þ=Ç@½EèJëO¯SŒVÑZè^6avb4b_Œ\¤V NÀE ;·2N), ê4¬ þ{vZÀ²@;ü»m/()«Óer‘ `”"T,„7 @}HO“U‰\Ë`Ÿb›`N]ZAXÞWÇV RçNýJ½GfD‰A¾>M:5€1-z*V(‰&™%Ý% %½&Ä)-+¯.”0ë3•6]:K>•CáI]N˜S7W)[V_+c"f[iukammànÿo¹p§p¦p)nÅm£lj±he–b `p^Ù]°[XWÏRÔM¾IFFD¬CB.@º@´ACïGWL4PæUBY9\-_za*b aŸ`â\ÂWûO¥F­<…3J*¥!§Þ Ó—ŒÒGé¹Ð/ Ÿ”>UB绿 ?Áë#Á.8ZA¶J8QAY__dd¢cØ`ï_~^\õZ~VëRKN4J‡GuD?¦:®5œ1­.v,æ+#*~)“*1+<-ð0Ý4I7 :<ò@’DyIMöR‚V{Y»]1`Eche÷h‡j2kšlRm6mÏn­nÂnemljYhÞfxcM` ]’[ÇZUXT¹P‹L|I…G.F[EkEcDðEØGJQMÌRwWj[µ_ma=bóbÝc1a3_UY‡RXH>'47+"×Ì€ ÊÞý˜Õ÷ Ô˜¡›U 6>­Éw 4 ÿ+C%n/X9°CZK«TZ…akdÏfÒeždÉc b0`E]ŒY|U]QYN;JüFûBX=S9p6r5S4(3ç3!3p46W8ê<)>æAÄD«HK¹OÊTWä[2]¶`kb¦dÑfŽhsiÆj×khll£m‰mÇm’lbkOi—he bv_5\®ZãY`WjTQLNk5 ,W#ž± ΑEø(  Û¬˜¸ˆdÿñÿ÷Tÿø¥6 yÊ»&ƒ1:è=¾<Å<ê<¢=7=ò?ÚBDÚG9IÊLqO—RéV…ZO]~`1aÿcûeefªg hÜiÎjjåkbkälÂm lçkÃj³hògSdáaÎ^Æ\zZâYwW–TØQÛOM‘LfL›L´M×NËQ SÒW}[^“7/?'Ü"CB=s º…æÂ^Á((ó·š¬ÓøêÀB:Dvk#ÿÕÿÕªÆ\çà rÄeö!ý)Ì1¿91>ãCöG©KmOJSîXu\¾_¦aícPdèfòiÅlin˜oOoZnäooÄpáqPqoumkvji@hggofd»cZb©bdbµbÂbøcc«d©fSh i¶kYllnkßk+jjwjþkÐlqlŠlkÇk=jÔiàh³fÞebß`¿^_\ Y_VÐS~P KlF”@-9`1ß*i#Ò·k‰ ‰š2ØJx*OY2Ø‘‰»è÷ØÆN@3E\nU ÿ×ÿÖ XÑé%Ùi :*…çÕ&Æ.!4:(=À@CŠGÙMiSbX8[À]“_Ra“eh÷l}n=onnÉnûo•o&nkqh¥eÕc¢b`€^ô][UR(ÿôÿÊÿÒÿð8+ÊŽã° ·M¼?õ#O)Á/ñ4V7o9ú=KBVH‘NáT'W–ZT\Å`ddGh,j‡kÞkÞlŠlÂmMlLj}fÿcg_Í\ÒZxXUÎSP³NxMzLÖMOM­NO#PyR"TÃW«ZŒ]J^·_”_5^¸^n^­_¿a5bEbƒaøaÂaUaA`%^z[gX/T›QGNlLI†GBù>'7I/÷(‹!ÏlN` t‚-e ›… Ðé>‚z%µ~‡¢Â·¤§Àé?B72031-ÿéÿÏÿÏ 4·W  Ü`¶dÕ%¿*¹.…13|7<.BhHQMPÀS„WZM]Ï`axaÊb¼c-cåbãa]^Y¯UäR­OðM'JaG.DsAì@Â?ç@H@šA‹BC‹EDH+KvNãR$TUGUBU4UUVWKXÖY Y‘X‘WøW!V§URãOiKÍHaE…CiA¼?a<˜7²2 +7$ˆÂÕë˜ † ³ô¢ß~ÀÉ%ƒ‹8Ó„u–¤¢€o‰»ê*-(/55+$ÿñÿÕÿ¾ÿÒÿóAaû¦T7 èu÷:ð™#É',* -W1w6’;¸@§EIMcPúTVFWFW6WÖX@YXXVËS~P,L’ItF˜C´@µ=N:L7v5û4É55H6W6ù8€:P=lADÊHdJ”LLIL‚LÊM¤NÀOþPGOÊNfMmLPK~IÜGŸD‰A~>¯‘;Ù9642ú0 -0+ˆ**$*R+b+ÿ-„/O2c5æ9¨==?A$AwAÐB BÈCˆDOD&C`Aä@Ç?«>É=k;¡9B74«2º0'-+) $ŸûÂP× . Ç¡·IòØ `xì_t2ô¾¯­‘nOFHeŽ©­"ÿïÿÓÿÐÿä 3@ 7*R<[ u žà=!á%8(k+Â/­4B8‡<>‡?É?‘?Ð?¨?â?=¥:ü8g5r2²/Ü,ü)ÿ&Í#ö!.‚é¤!("û&)–-T0ê3B55Š5ó66º7S7ï7¿7 5É4Ú4 3‡2”1M/,Ã)Ü'0$ ¢óQT : +¤P8…§om‰Ï0[3Þ¼¶·­ƒT35Fh‰‘ƒÿý&ÿúÿîÿÙÿÝÿó%"ÿóÿæ:‘–ؘ2ê M b Ñy¬ÚFÜ"9$ç(e,1/û2t4;4y4ñ4•4|3I1¤.ý,{)ª&ó$!4NMÌcú v€bÞ@ðÊñ!W$ &á(´)L)Â)æ*x++ +“+*)o(ç(»( ' $Â"#ËŸž²U8c } 9oËz@O2 ø‘MMž÷4DÖ«¸ÒÆoL:EUk|ydÿêÿýÿù  ÿýÿÞÿÐÿßÿýÿÐÿÿiÿsÿhÿ¼)XJ¯ ¾ ñrCž²B ê#»%»'B'­(:((' %Ê#z!Dœ*@h„A ,  | h  † Ä 9ºz‰ˆ»‘] f$½ S 0¤¡æ;Ýí<Ž­!7 z 7 ø©$lɣſM-_ þÉ®²ÒâËeTJSZevu]ÿÛÿê ÿÿÿûÿþ ÿêÿËÿÌÿæÿØÿ£ÿ‘ÿ£ÿ°ÿÑÿ˱®—ŸI¨Œ m rñ¼†ê‚š|Ê/,R¿ç:™xZú‰ . Ì …¹ÁqGÁ÷ ußÈb=–fçZP(Ff´Ž ü Ò ¶ƒïßV_ ñ×”_9V¢éõЮ¢¸Üó予ponoe]ggRÿÑÿÏÿàÿöÿýÿîÿàÿÈÿÆÿÛÿìÿåÿ¾ÿŠÿhÿqÿ…ÿgÿZÿ^ÿ¼?øj)†µ ¹ C šv}¦©›,Ó1 Œ ¨ { 5¯¥+1wˆ5ý4d£Êºq ï 5 ý É ? Õ õ ` z F N y¾êÞ¹”Ç8ø­I´~?1l¸²l`bŠËöñ˶·ÊáêØ»›ˆˆ’”€aO="ÿÔÿÇÿÊÿÛÿù! ÿôÿû ÿüÿáÿÍÿÍÿÜÿõÿëÿ§ÿmÿ{ÿ¨ÿ·ÿ©ÿvÿsÿ«3¾M¤&×ð+cj è P µ Bæ8œ+Ø{ôF•ùa÷ôºQ\sǘ/ ñÃSì.k4õ@bg”w#Ì‘](í Žj½åÚ¡xgg‚™·ÞòîÝßããÜÑù¯¢œ§¥ŠZ1ÿùÿÖÿÉÿÆÿÇÿÛÿÿ!ÿýÿý ÿéÿÏÿãÿñÿËÿšÿŒÿÿ‡ÿ}ÿjÿjÿtÿ¢ÿã'I­9ÄH|«õ'ê 8ÔŽmVÎjKY‚®º¨‘†¯ÈãíQ³p× É—šOÿçÿåÿËÿ„ÿ`ÿ[ÿ›ÿëE”¯¬Š|vir‰³âøíÓÓÞéæÒ¹®°²³¹¥z@ÿúÿîÿåÿÜÿÓÿÆÿÊÿß!)ÿûÿï-BÿâÿÛÿæÿãÿÒÿ»ÿ ÿzÿ{ÿ¨ÿäÿúÿú !=bŽ™U1KŒþk¼þâžu?ò§kR:CSpˆ“Š“¢º´‰U3?_œÙøöÖȵ›~hS0*7*ÿÙÿ¾ÿ¯ÿÔY‡“˜”š£ž€o{§ÛøòÕÌÑàäв¢ ¨ª¢R$ÿÿÿþÿëÿÙÿÏÿÔÿÖÿæ ÿûÿú A8ÿöÿâÿÖÿÙÿéÿãÿ©ÿÿ’ÿÑ+ ÿØÿ¤ÿÿ—ÿ£ÿ ÿÿPÿ ÿÿ/ÿqÿ¦ÿðKœÙéùß³]VR^fp|vikjtNÿûÿ“ÿ<ÿ%ÿ/ÿeÿ•ÿ«ÿ¢ÿ†ÿ}ÿÿˆÿÿ˜ÿ’ÿwÿnÿŽÿ¹ÿÆÿ¾ÿ¶ÿ´ÿ³ÿÐ;bx•¤®© ––«Êâïù÷õìäÖij§ŸšŒtQ. ÿöÿàÿáÿëÿàÿÚÿáÿ÷ ÿý;<ÿíÿÆÿÈÿûÿìÿ«ÿÿ´ÿù?oU ÿ½ÿ¡ÿÁÿè# ÿÿ*‹ñD~k9ûêãÚξ«—ŒŒ’p(ÿÙÿ™ÿ”ÿ°ÿì'ÿóÿêÿæÿáÿÙÿÅÿŸÿ“ÿ¬ÿÚÿïÿù $Cp¨ÉÓ¼¢–¥ÆàîîíòÍ­¢¡—…oT8%"ÿùÿæÿéÿòÿèÿÞÿÚÿé )<1ÿÓÿ½ÿßÿçÿÍÿÐÿð!UW%ÿäÿÌÿØÿçÿóÿèÿÚÿÔÿê>1$]± Rb`8öáÚÕÑÄ·¯­²®ª„FÿÆÿ»ÿÏÿú ÿóÿÑÿÂÿÆÿÏÿØÿ×ÿÊÿ´ÿ°ÿÉÿêÿïÿìÿú(\Œ®ÉËÆ¼¹ÁÎÞèðøÍšzw}kK/ ÿùÿïÿíÿðÿîÿîÿîÿõ" )4!ÿòÿÉÿÄÿáÿý ÿþÿóÿþ">5ÿÚÿ½ÿ¬ÿ×,„¬¤”•ºö+@D"þÚ¿¹»ÄÀ½ÀÇÑÏʪM 07#ÿÞÿÒÿàÿïÿüÿûÿñÿèÿéÿúÿûÿêÿäÿïÿóQ—Ïߨ¾¶ÁÛîèÙÕâýîÀ‰[FBC-ÿþ  ÿþÿþÿôÿìÿéÿó &+.*-# ÿóÿßÿáÿð* ÿôÿÜÿë]‰›œ¥Ê7R]D$þàÒÍÏż·»ÅÊʲ’e3(*ÿûÿãÿàÿó ÿõÿæÿâÿèÿóÿõÿ÷ÿù4`Œ¯¼»¹ËæëÑ×óô¯zQ.ÿôÿòÿ÷  ÿøÿìÿèÿ÷*% 3IG3)!ÿùÿéÿëÿú$)*ÿïÿãÿò0=27V|–¹î$UjvbH& ÷èÝÎÀ®¨¯¹¾«‹]/ '" ÿíÿÕÿÌÿÌÿßÿõ 2L_mz‹ ½äûðϼÉåýé±h?, ÿîÿßÿàÿô ¨`¦ ê ê*ØLÖYïKpkªÑÀYóÍéW[s 4!‰"!7 ÄÙä¬;“Bö±¥/6Aj " ï “ { B  Ü Á ³ À Î Ý ß Û Û à Ù ñ & y Ê  3 ! æ p … ®  R ž ÓiÝ@ÍX;G‰µÌÿÂeF÷6_ðôfDÏ•f4úÝpÐȰŸ¼ Sµ ”  ° ½{dÄ„_?**í ˌ ‚k|‘ {#Ÿ&ù((&g%ˆ$M"À!> QMÝf&:þÝûô Ú z c . E ( ÿ Ð ° –   ¹ Þ ô ÿ   % U — Õ í ý Æ ` þ Ë ã  L e n s Á  I § û ·}Ni§ë^‚½2ÎëËÈçkÔÛªÔÙ¨²ÍÙêç#< ó?Jâ!! âæ¹a¸In_^3;]Ë&  Ù" %X(ž*á*Ø*(%'2&$c"«!W s^Í맬yAq±á º – .  Ó å à › p ] T t £ Ù þ  $ 2 < [ – Î ó è Ü › 7 á · Ñ ù ' 5 - * - 7 M S } – 0 à gX^¶í(cÚíxÎò~aþ.˜"öÝ[uY…Æ ß˜x¬ì²Z©¹…cûa~¨#™X<•dœ÷z!Í$ %b%ú'Ï(÷)I(&·%$/#5!šÒV;Ue4;[,öÉ m Ý Ñ ° r n H ( þ  - \ Œ ¯ Ä Ø ì  ' g – © Ž x G  Ô Â Ü û  - ( ! í Ï ¬ « ù P ë ïDä0Á„zÛˆÜwm£±”ÌH‹ò(«(ˆ ΢‹(ýÊë òöŠSÌJ#ÂÏäÞžøqª g#Ç%Î'0'c(4('c%Ò$c"ï!㠙ѾÑ>ÀÊ1m!P“ä F ý ¥ ã Z X G [ a b Y Q P \ g } “ ² Ô õ % V x ‡ m P  ß · « ¼ Æ Í Ñ Æ ¶ ™ } a D 4ù - A » ¼K' ÷²(? Þ¾Øã —ií£08abfV‚2‡7Û€oÎ'îilN²;9UŒmW/”ÿÚÍÕ !f"j#E###7"’!¾ l<ßœ.!^Ø„ý ’ " ÷  ˜ & ý  ( < O N D % äÅ¿Ãâ  ( : M t š ¹ · ¨ ~ K 2 ; a { ˆ “ ‡ n P B > 8 /ÿ ö œ±!ºXôGK “ k Ó ’ ‰@¯pIÛÒš£i”öÞ$D8wÿ2’›R9ŸëX‰/ˆ_¬8‡ÎUˆ³ÎDJf×t©Ý–3zÏGÝ ¦ ° X & Û ) C¾{•ŽžºÌϪ}6ô«Yêããü)=b™Õ $,! !eÎ - e x M ýöçÙ¿»oö Î $\ÉŒ~¡` ý E ù Å + V÷ò¶éÌ<Úbä]ù`¯ƒ0ž_¯F²"ö\d‚yáDZ ]  …ˆ³(‡¿`Æ8o ¢áW ü £ Ž f ¼ L J N 3ÍGÙ²¾àÄ£¸º—2Á?ÑxÛ±¯©¯¥®ÀøB•Ù01iÒo wÎÊ©fE0 úÙ U È Äf,¿Š–Ð t • t 1  Z!ÄÜžÒ[Ëj¯@ÇÌœtUW›-^ P[o‡ ¢ Ï œ A „ ìcólÿ*hŸÀ:Ó^ ¥   ¤  š V…È'Њl=ÛÆÚùæ× ÚOÊQõÁ„aE8#ñìó,{Ò8YmnŸù”5ÉUžnT-ïÜøCd­ë· Î ^ (HÙD ¬ ” s Œ Ó Å ì l „  t°|%*z(Ö¥u+Î>Æ•êuY“ÒÊbȈ5 ¤ å B ¶ G C á t  ± å ÷ € â - » f ó ‡ Û  R C°fäÊÀºx*ýæ·¯çÔkèûµ®Ÿ€[3 þ÷`ªÙï *\Æ4¹L®éÚϧk\wßCÐZù’ =  ¯  Ë †  v $ü B ¡  O ® i = Ù 0 ‹ ¦ — • ÄA¾kÜ‘&¦' S è Õ   Û • ` † v è  £ I À x l ¢ É Ù Ù « † )¢¹7ÒÂÝÊyÏ*q$ù6w…FÌy2Ö«¸ÜÊ´ÂÒÊ´³Ÿw6ó½’‹£â1eŠ»Ýë*p¯vÑ ýßÖÕWì«køE”Æû)e˜ž­è ? ¦ è + ž ì é Ý  ~ Ë  . S u à " Âx/¨ Á 2   B 1  ! 4 n A ‘ ¼ X 8íżÍÛÆ’=þ°E븡|E³I± kÞ€ò(“àØ›#Ï~ØÊüY³îóÐÏÂ¥q8æÚÂÇä#7\„·à Fj{~…›Ÿ‰{ÓzZ‡Êâ _Ú_É;{Ó " k Ê ê ¶ Š « , Ë O “ „ l X T ™  ’ ä  Ì Ã ¤ ¤ § Ç  + Ð #{BCÔ›b6ò–&ÂfùÀÂѶ[òpð™bS<ç¹·©uÀhÿàÿÿƒÿ¯|Ø@tyaq­µ®ŒsM õÛÃuw Åô*GK941'+5W‹³È±pXxö‰hˆ”Ê/è¸wN¤ê3„û @ D è  |  j } „ b : ) 6 n • Z D /íÓÿ I ƒ i ˆçk6ÎkÊ’Tÿ™6àXxŒYÙD×˜È …¸§ŒQ(ñŸgVnu„}¤ýsÍ=]q é`îYžŽ~1âp†çg õêûúÜŸ_#ìÙÎëAn`!Èw~ÂAªçïú«pYwÆ%µAÃÝ™X€ÿ w Ô   î ª m U aº«‚G<Éå’dÆFã‹ ŸT/Ùjö©ŠjeƒjýkëØ ‰3Ÿ;nÈ` ±J¥í%.*('_§>Þ³® h ä Ù Ô n W°Øáþ;ÎzL ¯IÃ,¤-ÿõÿÇÿÌÿÎÿê ):)ÿâÿÖÿø"g§çZ³:Âj&Ç8Šém:ÄÄ›ËLî f   p =è–lw#ΰ·æõ×`â;Ÿpï^òÙr'""ò‰5WÍDˆf¸‹ ô|· > h ’ 0 » ´ • 6 á ¹ “ ë n ka‡ÙÈfSRÎAMc, × { : ?e¬Õô;L‰Þ~(ô¨n0'Dxž’_ÿïC¡àóãæ†:¢=šb(‰¶v¹…^+ùë I* ñØ—L×iÖ0†ßr É‚d’¶‡%ׯ—»ö<otJB>ýèÓô J4h­LØÒ²pPihê§ò8®Uu6^œL \ޛŠ“  ™zP‡à‚$²\„ÿÿÿ·ÿì9}†<ÿØÿ†ÿcÿ™ÿïCeY6OžT'âA…¨-Ïžr‚ˆjF=jÞÎÎÅ=Ñ}*ÚmÚLÑ¢‘­¾´SN~Óô©O1‡ ®;rg@ “^e“ ªÚ F¿ÜœÊêàû(!„ /!r"´$,%Ñ&ñ'º'˜'Š&²%Æ$2"­ ­C/-d ± Ï  ™ %¹ˆ"Щ&æúð¢mÿ¼ÿtÿ€ÿé<dK$ g&¨ö2jÛDyŸá=«BOJM{'?Éy$ÝšR¬i3-@UK%ëÚKbW?Ùìë²@~žrÙ } 7jË2‚‚"%'ƒ) *ª+L+Ø+Â+³+e*ê*ß+8,A-;./ó1 1Þ1Ó1Ë0à/ß.!,n*;'è%{#@!."Ø´¨í%תûmÚ3 ê O >'u `Ó—KÄéÿiÿKÿcÿÇ'ÿñÿß*Ú•EM¥b‰ˆ”Õ?¥î%Oav’Y ïâÃGô+7- û÷<¬1_É\±qR Ì ¼ † 3 ú,cKKÇ;"«& )•-e0Ú4%6W8s9?9é9}9876€6l7 7¼8¬9¾:›;Q;O;E:a9c7¬5÷3×1£/v-}+Á* (T&€$œ"Ä ôaº‰•Î ® × RZš Ñø¯PÿÿÿPÿÊ@@ ÿé"»f²Äî"z¦ˆVMŽôh¶ÙñåðÉ—«ÒÙ¶wJEt²ÚÑ®Œ¨ßrþÝŠ÷Õ g R"{þŠ-×P·1!×%l)-U1p5¤:!=òA‚C’E„EÛFED$BáA‡@Ê@{A ABhCKCðDvDXD:CSBN@—>Ú<Í:¼8Ï754)2æ1”05.Þ-W+Å)ê'ä%è$#"Ÿ!9žðÎ5ó « ¸2³Š þóþ±þÝÿ‰-ÿûÿÕ³<}qA\xi? cñhœ™# ÿý,fg63u§ˆ¦Cî"0ýè ß?éAíHL³ ÷#($Ç&'*(`*–-0þ5#9è>yBÔG]JæN3OÎQBQPÄO‹NvM@KçK.JÛKbKóLµM^M­MâM˜MeL’K—JH_FDØCKAÃ@?S>V=P\©\›\n[tZ¡YžXdW³WyXX™Y&YsYUY3XËXWàVõUTRsQOÌNoMKÌJŠI4HFùFEUD-B¼@•>Š;Ý95¼2§/Q+î(,$„ Cº»ƒ ýÐB¯Äÿœÿ*ÿ2ÿÄ$HÿíK¹Ö–8ÿô+1ŠÇÇÿŽÿˆÿŸÿ±ÿÎÿòÿôÿáÿâÿëK¢Àq]Bò C˜¶$y)-(1L4¡7ô:;ß<Æ=‚>¬@>CFJ N RUÓY/\À_²b™dPeÎffEe¶e1A”DçFæH±I£JkK•M5OàR¢UþYM\±_óc%f™i—ln9o´oöp=o²o'n#lêkûkƒk‘k›k…k'j›j,iÖi®iSh´g¾f½eÜeBdÈd5cfbaf`^Á]›\¢[ÀZªYjW¸VHSùQ[MˆI¿Dõ?ò:€570/+y&Á!×dCÑ ì 17H”רÿÊÿ‡@=ÿóÿ¿ÿÿK?ÿÞÿÖÿóÿéÿÉÿÙ/ÿŽÿÿÿŒÿ«ÿð5E[’cÀBv ­ 8Õü{!ç(.]4¾:ÞA/FLJòNQ!S TæUæVªWŒXØZà\ø_zaÙdvgjm5prÃtKu’uªuÒu'tos8qÝp´oâoŠo8nìngmÜmmm*m lÉlPk‘jºjiÂiºi¦i€iRh×hp8À3.þ*³%à à • õõêìqT{ÏfÿìÿàFNÿéÿëÿÿÿìÿÞÿæ-ÿDÿBÿgÿ€ÿ²ÿî>rå€jP¬Ë Ê ¸›ì‚$À+ž2*8ø@/GMäSW¶Z­]û` a÷b¹c)cwd3ežg)ijÕlÄnÁpýsru¨wÁxæyÎy¼yÁyx[w uÀtmsQr«r/qÍq"puoÝoosoWongmmlòmMm¤nn{n©n½nŒnxn m²lˆkhÇfcËa.^I[ºX/T+N¿I C=[8Y3ð/B)À#€îqß E Ìysn ®sÿËÿÈ R?ÿùÿýÿûÿüÿù£Ì*ƒá€ QíD 4 pc †ÿ# )P/g6<‹C{JõQáXj]ajd6gxiwk*k}k‚kAkal1m>n´o÷qJr™t u¨w(x¤yrzyÕyÄy:x°w¸v—uetNs¢sFrýrTqŠpÑpcp7poÅo+nPmÊm®n1n¨oOoñpxpïq,qwqpq—pÙoÎm…kgódúbF`,]Ç[VìRkMG³B’>9m4L.^("…Ka P ÀÌLÒËh x IP9 "1Ž3Ùw¹XP Þ +Hþöx‡w"à(s-ü4:@wG!N7Uª\Hbhf¸jÞm‡pyrsDs8sr…rLržs˜8˜2i,A&a!)÷u "`I\ÿh+CS'ÿû $,NîÌ ¢ f ½ š ðH‘„lÔE" %r)·.¶4s9·?DbJ4PtVá]Qb¸g¿kBnÔqs5t t´tgtsšsDsVs¨t#tYt‡t®u7vw$x^y2yy‡yŸy‘y‰yMx÷x‚x wÀwÌw´w5vhu¼u't±t;s§rûrq¨q¬r)rqr½ssOss˜s‹sFs$r©r&pðom‰k)hÍgewcÆa_#\Y)UžR6M´H·BÓ=7M1Ó,P&M £| HA 9˜weôôï€Vl/ÿýÿï.B \FG&éQaë¢JË d$j(4,H0@5 :Œ@5EIšN|SÐY^údp*n÷mIk]i²h§gÕf¿e%cTa7_]T[?W¡SNM—HBU=#71*|$`âT[ { "$¼{…=ÿòÿÿ9Zžµ©cþcù"ì&Ø*Ï/!37k;óAFtKiO}SW9[‚_åc¶gNiÙl[mÙoSoëp|pdpQoÑo8n“nmÒm¦mïn/opqrþtšvLw…xhx¾y9yzy¸yÈyØyÅy‚yˆyûz¨{'{U{s{8{zƒzyDxvãv uytÕt7sŸrår q p@o{nÏnm]lVkiÑh}gÊg´gÊgrfte,cÙc bPa©_[\7W7RALÒHBÈ<µ5õ/U)3#ZÀÔ ¶²ŸH¶B&ÿõÿø 9d¨ Ö!³"R"Ó#-$i%ø),x0ã5"9­=ûB®GÏMRIV‹Z+]`\cZf?h`j„k®l®lÍlèl”likôkej’i¦háhAhgÕh?hÍj%k”mvo?q's:tîv\w#wíxOx²xæy/yZyFyxz{{Ä|7||‡|Œ|3{î{ yÊxDwvtôsÍr¡qHoÊnVmkÿkjÚ81*3#uSDá òžŽ¦M7$ÿÞÿíÿöI4q5~66r6Æ6Õ89¦=AA]FcJÀOOT:Y7^?bofvh÷kUll²l4kìjõjhOf cqa,_^][ZRY X7WsWVWWÝXîZÔ\Ž^±`ÐcPeóh¶kym×oþq©s]tØv€wÉxÓy€zTzþ{¶| |`{þ{yz4xöw*uEs)qGoDmj¾h^f c—aÃ`M_š^³^]^5^}^{__ÊaEbÒd’f*gœhújOkîm;n…n¥nlçk=hdì`s\ VuPàJ Bè;3Œ+ë#Ü’Ã| @zœÿ¦ÿÍÿî/e??õ@Z@®@ë@ÎAéC£GWKdP9TmXÄ]b/fvi lìn–pon¨l§k hëf‡cU_É\\Y\WEUOSòRhQAP'O€NÅN¡NqO6PMR)SÆUÓWêZˆ]-`Mc fëiël‘oFqÄtmvx}y™zœ{{¹{â|{Tz4xuÔs,p—m÷khïf#cK`‚^[rY¿XzX%WˆW•WÉX£YPZª\^^o`?aêczefÕhÔk%mnÃoYoáoLnêmjùgMc®^ßZiTPMŒEX=e5 ,†$nvÌ. k´4©)x«IõJÓKKCKZKLMîQ¤UxYè]Ùaßfojtmûp=râsÁt4rwpm:jffªb‚]ÍY!UQEN“KäJ1H…G£FÅFfEÝEÔE½F‘G¿IªKQMZO\QûTžX\`/cßg@jÀnq¡twfy z\z¼{j{u{¥z–y vPswpl­iRf bù_—\rY}WTfR¬QPQP†PíQ€RëT$V.X³[s]È_ aFbôdÏgDjCmo5pTqtqÃrrqÑpÁmûk/g0cÚ^ŽX^OîG…>N5N,u#oq“ ¸úÅÿ2+"%ˆÉScT0TXTeTYTTñV½Z]7`Éd.g—kTn\pûrZt#tsŽpånGjDfgay\V•QtM2HëEÉB´@ü?}? >‹>u>,>2>>Ù@AáC{EWGIiKÞO£TXõ]DaTe‡i§môq·u„wãy»z<{{{Jzxyu.qÇmyi=dö`á]YU¦RwPM€KêJ¢JiIûJwKL›MÞP RÆUÏXfZi\&]à_¯bjeði‘l“nŽpvq—sswsyqËoülìj™f;aY/PÝGI>E59+ç#1t‘ ìî`ë:®)97\ž]P]P]2\þ\“]X^ùaÈd+fài»l—oq´sœt3ut r‹okÕgb\UØOÔJIE³@Ñ=E9ý8}7C73776å6Ò6‘785:;ˆ=,>‚@§BöG KçQ¢V©[ˆ`e~j‘osÓvéyKyü{{ {bzxMt~p}kZfQa>\fWïSCOZKŸIFyE8DODYDDHD¯EáFèHýK¯NÏQmSŸU¡W¾YÉ\úae³i½lÜoÓqætIuvˆuáurÊq9m—i}b6Z PMG@=ø4q+#!µ+ ] ãˆb-»Pb6bìbübäb¼bƒc?d«fÓhvjEl{nŠpdqbrvr9qçoÑmƒi™eÞ`À[v>>‡>k>€>¤?W?ëAˆC¿F}H®JÅLÚOSQU,Y^Ëcµhl(oArmtUv/vv¸uhttqqnVh `ìW¶O5FW=u4t*ö"˜¬64 2 úÔÜf½g—gçgýhh%hüjWkõlÿmöo„p¤qApípþoÕnKk.hcÉ_{ZT6MÿHBœ=H8Ú4'1 .i-©--m-¢-Î-²-k,ú-#-ç/%/ï0Á1B2Þ4š8ä>:EØ@“B_DPFòIfM?QºWf\þbsgËl pr½u\v—wûwºwttþr®m_g^¨VÖN†Fj=Ø4Œ+Ù#­‘ØÔŸ céxhiiÉj.jk1lEmžn×o p qq&p–nímàk¦hÓd¹`÷\QWgQÐL6F³AQ<Ž7Ç3ñ0-”+y+*¿+I+·+ÿ+ö+ª+I+S+Ý,©,ÿ-[-~.Ë04!9N@G+MíTGZ«aƒh@o{t˜x†y´{,{ {ŠyÄwgrl4d¤]SUçN¡HA™6Ã8—9¹;<~>ôAbEJIO!T¾Zª` e¼j‡mÝqsu”vuw uTsÆo‚jˆc‰\àU¢NÑGR>þ6¸.ð(œ"žÌÁb¶ B 2iÕkllžmKnbo³qqàrvrsr÷r=p±mÕkµh[d;_Z€UgOÉIóDf?j:f652.ù+½)ß(5((N)>**q*†*,)Ë)Ÿ)Û*0**)É*µ+…/-4;Bk=)8æ4e0ð-Á+›)''É&Œ&É'x(ä*&*Ö+*¬*5)Ð)Ù)í)Ÿ)@(ª))f,y0¬7e=ÀDÝK“RÒZŸbsj£pu6vÜx­x±yrwÕuÁp4ióarY>PÍH˜A9F3=-n*«(ˆ))š*í+¯,7,Ø-9-R-~..Ñ//†01ô4!7ï;Ù@ÞE¸KEQVý\Èažfim£p”s8s«troÊk¯gwbs^$XôRöL3E¸?¡9û4n.w(D!˜!Jiúk.lxm`njoüqnr|rÞs‹s5rÜp˜mÁiFef`Y÷S'M&GM@¶:÷62z.Œ+Ù)’(E&|%‹$¼%U&e(<* +$+¹+C*«*)â)Ó)l(È'Ð'­'v)ú-‹3Í9Ì@ßG”NýVá^ág>murštÃwwgxˆwAuŒpFjFaßYÁQGIAl9P2ç,Ä)Ô'š((«)ñ*¶+ +S+)*Ì*†* *û++`+«-A//2Í6;k@ E[JâP½V [þ`öeKj+nq£s!tVsHr5o^lQhueWaR\™VÏQ%KmF@@³:ž3Í,o&% hõjkklimo pXq:qxr=qÂpæmäj“e•`ÿ[TJMF@§:4Õ0m-·*Œ(¯'R&Ç%œ%$”%j&±(À*í,H,ì,R+–*å*õ+*Þ*(Ú(D'Å)á,Þ2{7ê>šELDTJÓQêXÍ_Je÷kDpCs!u¹v•w”w~wov vt‹r”omi?d­^|WÑQ¯Le#eægh±jOk¤lkmJmfnlwiÅdU_GXpQ(I(An:e38-à(ì&p$-#Ï#M#ø$þ& &J&V&y'¤)®, ...(-1--À.ñ/~/-v+Ò*î*“+ç-$03'8<ëCqJVQÆXÞ_efktp‡sŽvšwnx^v¤t•oÚk$d^]bUVMEš>u9s4²2?/Ò/N/$/¿0/Þ/S.F-],Z+I*X)m(í(d(œ(÷*5+U-u/g37&=-CdJQXƒ_e³k£os:tùvæwqwÇwDw@vStñr€pŽmSi“d[^žYGTtdèevf„h0iãkkl™lÚmvk¦hÎc/]ñVãOQG/?8£1i,.'¨%¢#ˆ#/"Ý#£$©%%¢%„%~&«(Ü+g-e-û-¼--b.2/R/„.³,å+,*E)é*ð+»-Ý/ü3æ7í=þD¢L2S7YøaglõpñtÛv|x(w8vrVn¦h~aÚYºQ~IñBü=æ8Ò5˜2@0ò0F0Ì10ð0ƒ/¯/.7,÷+”*`)‘(È(€(4(€(°)Ë*ª-t0È6l<1CWJdQÕYg`Rg0l1pµs:vw wÐwŠwôw˜vÂtêsupòn%jef`ð\èeDe¯f¤hVj jÿkvl—läm7jÿgúbB\ÈUMëE×>-7g0>+?'#%u#y#"¾#l$<$Þ$À$ˆ$h%”'Í*m,`-->- -•.U/=/.,7*})Ž)%)Ø*G+¤,Ê/§2¾8M>šF3M$T[>aÝhxmqrQt¹vævouüs'p‡kQev]²U¼N6GuBY=69r5[31t1T10Û0X/¿/‰.ì-À,8*ã)ù)C(ï(r(8'Þ(>(`*j-27=¶DTKËSkZ×bWhm6pl?l¬nmÿmAie·_[XòQI.A)982+Ò'¹$Ž#µ"Q"+"L##Ò$D$+$$*%k'¢*+¤,@,·--â.›/D.Ø-Î,*)¨)<)j)5)a)*£,ä27ä?E„L4S=ZWa«g°m‰p˜r÷rÇrëqtppm7i{c[èT#MGB¶>í:f6¤31/¿/™/.Ü.ó.¹.,¸+E*")—)c(Ø(('B&Ø&M'Š)f-V16Z;BWI_Q7Yz`uf`j8nŸq.sGs”sÿsXr«qupHon6mkai¦h&g g¯hèjâlÎm÷ntpo¬nWiÕeJ^VW1N×F–>€6I/®)H%Ã"ÿ"s!_!h!¹"’#A#©#Ÿ#·$%Z'€)¦*á+C+¿,---–-í-_,n+0*4)Ä)£)Å)q)f)*,Ð1ä7i>ODK+RY`5f*kýoqbqAqpao¶mj,d…^VfO4IED'@5;¸7Å3†0Ü.þ.Á.G.c.£.¤.T-K+ä*«*1*)w('ƒ&Â%ñ&¹(+D.02¦7=YC÷KéTd[íbNf³k¡nÁq•rNrÔqñq&oÕn~m`lÀl)jüiÖhégùhÓjMlun’p p¾r~qëpjÍe±^1VaMDÝ<§4)-®'¼$ß"|":!š!ò"e#*#Ë$)$,$S$³%æ'²)^*E*n*¹*ð+v+°+£*ü*)Q(×(ß))>(þ)))?+1-š2Š7ç>«EK£R]Y_çe¢kGnLp‹pjpœo“nølÃjae†_æXÍQæK°F A¿=H9a4è1·//.{-×..f.‡.m-Œ,(*Ú*f*8)¢(Ÿ'U&E%:%”&g(Ñ*á.y27Ó>FNVb]8bEg¾k€o2p…qOpBocméldk4jžj3i$h(gehÓiÊkmÓp0rrýutCqûlf}^›VJLýCþ;¡2ã,Š'$Â"¾"Ê"¨#C#¾$@$¬$Õ$º$Æ%%ø'W(¢)g)†)­)˜)º)),(i'&ß&›&Ö' 'K''t'ê*,P0÷6F=-CµJmPïW_^QdUjImŽoéoÈoïonÁm*kpgMbf[ÃULN÷HóCó?A;16r2µ/W-ü--Œ-õ.<.4-G+É*d)ü)Ò)+'ã&F$Ç#f#P#¬%d&Ÿ)Y,1f7Q?dG×PWa]&c9g¥l5n!o6nm6k°jhühh_gxf™eïiiák£np“r¸s÷v.uRr¾llf¿^ÍVMLÏC¡;92m,Y'D%¤$$š%,&F&ñ'Z'Ï'û'û'æ'ß(3(Ô)‹*$*3)ü)`(ý(u'Ý'&%X$å$õ$þ%E%1%Ù&·)+=/´5<:BõIÉPMVµ]ºcÙiÜm,o’o€o¬nònÏm¬lxie_HYºSÃMÁHFCF>â9ú5Õ1µ/|-ï...4-è,Ç+)¢)*(ð(4&Ä$ú#C!¼!b!k"•#*%6'U,B1ü:BbJ³RLX¢_,d,ixkòmQl4kxjh…gngfïfedDhûi…k@m–pRr¸t3vu˜rÃl(fk^qU¾L B°:M1‚+¼'&$ú&'u);*L*Ù+“+ð,?,+Î+^+*õ+$*õ*6)(9'z&Ã%ý$þ$0#•#w#[#¢#œ$v%–(#*G.§4 ;?B IOÿVµ]Ôc¸i^llnÙooonán«mÅmjÓgçc/^›YSTMH4CE>9g4§1¢/F.°..-ÿ-~,Z*¡)(†(3'g%ñ$'"h ä S š Œ!ó#v( -5§=ÃFMÝT [‰agjk±j–iÿh©g;f/eçeÄdÝcÞchvh™j"lGnýqmrñu?tqjId’\ÁT"JAW910+@'&Å&I(*O,Ö.w/{0Ò1Ä2Ä2Ò2r1T0C/g/0.¹-q+Ë*Œ)¦(Ù('%&7%H$Ò$}$Ð$å& 'n*K,Ñ1j6ä=øD—KR—Y?_÷eiålTnPn‡onµnlm m>k¿iÅf4b³]üYS™NUI"CÕ>ý:6Z31q/î/ .,±*Ì))(V'Ú&ý%®$"—!R Ä V Œ .!G"&æ,J4N<5DnL*SZ.`fgi¸kuj[iíh¶gXf;eÚe™d¢c™b³hVhiikLmßp?q·sçrŠo$h(bWZ¨R&HÑ?Ù8/¤*­''{'ª*-- 0K2h3Ú5Å7S9 9o9!7Ž5û4™4(3~1È/¥-ú,Õ+Ù+*4)6'ñ'&y&Ú'(¯*„-ï16;ËBµI.O¶V‚\’b{f¥jºl…m¬mumÜmÞmÅmt7.ù*t'u(œ),¡0$3Ä6E85:Ã=?•@x@q>É=,;±;A:‹8¹6\4m31Ö0ú0.ù-e,H+‘,",’.‘0Æ4¨8o=ÑC½JUPsV,\aeëi-l’mÐnmLmmm«mÖm“mCl7ki,gfdad]7Y"TŠOõK)F7A¡=59±6W3È1?i<ê:È97¶6§5‡4B2g1;0¨1”2I4Ž7;#?EDßJøQUW$\a-e2i#kÀn¢o‚o4nmînOn·n¿n}m‹l™k?jGhnf!b£_D[ VÅQÕL¿G‘B=ú9ˆ5Þ2I/j,I*((|'´&Ã%þ%$8#œ#B"º"†!ó"à#ë( -X5<˜DœLeSÄ[Ga˜hokümÄl§lˆkuiòhSg^f¯ed¤cõeµeDf‚hQjÀmn om>h¾a+[TLqDq<“5×.c*À(ç+f-‰1¯6:a=@FC÷GK`MM‰KíJ„I(HÔH4F–D7B@B>Æ=œ'B2FLK¿Q¶W›\Ì`æehdkÒn.p®qaqoöo½oüpVpopQªS¯TKRŸQAOìO›OM‘KLIG+E·DœCSAÞ?Ö>ž>?!?ÞBDuHnLQ¸Wm\¸adYgàjÕnp.r"r“rqåq¿q½q·q›q|qp”oøoço%mÐk=ieqai[ÖV?OÝI‚C<Œ6×1\-k)‚'P%n$Á#Ü#x#"ì"Ó"•!ô!r ¶!˜"©&ð,3é;aC«KûSñ[æbRilun>mAm_lGjdh>f×f:ejeYe]`5`gbveKhkYl?m^jte”^X0Q»J†C;ª5.™+’*M-0—5Å;@_DqHAMQÓV»YYÞXGWUåUšUSÏQÃO«MÖL…K”JsI'G^F=E¥FnGIK2NßR°Ws\—ad‹giçl˜o¡qºsJssÓs†sasr»rorUr;qòq–q­qpmÅl hÂdé_AY£SL^Eq>[8 1ø-”)L&ä$Ì#ì"´"!!·!À!Ý!Ä!( ޽ –!¬&+;3:´C=KàT!\Lb¸ijlŸnQmCm_l+iùgŒeøeˆeeveæ\’]7_Àc*fÒj jøkøhÏcÆ\OV•PjIpB(;5 .P+t*V-Ø1*6ÀNÑP«R¢VY©^bÍf–i[klûoqœs”tòuutjsîs†sLs:srör¸rœrþrãrAp–o|lºiPcÐ^YWPäI B);?4„/x*£'Ò%U$"i!‡ ó!!V!f Ù Bw c!—&+t3{;4CçLÄU1]cÙjgmWnÇm…m‡l5i·ge]e$dýeìfÐXY‹\Ì`üe"hÆiÃjÈgbaZíUJOZHA’:œ4Ê.C+“*‘."1ˆ72<ãBÑGäL×RŒWñ]¥`¶b5a>`Ô`'`_¡^µ]([“ZXìXWVjU¥UyUlV5VîXžZT];`ˆdghWkMmyn“oÑq-s4tëv:vFuôtüt1sÃsÅsïs³sRrörësas’sGrqqo9lmg‡b\í8Ä2ß.´*æ(I%"ü!X! ô!+ Ï †â ë"G&û,†4½<¥E€N…W_ŒeîlmopCn—n@l^ie·c¨c¶câe€gNáR¹WË]¿bÕg1h@iqf`ÕYOS­N G»A?:¤5A/m-W,¼0R3À9*>hDInNŸS÷Xä^FaÇdde„eñf|ff¡fesd[c+b$aa agbctd˜eµghhj:lˆnÁpŠqŽruss©tquwvowTw¢wÂwFv«v uÇu•utœt1tt9tJt#sjrõq_o‘lhbð^&X[R(KFD[=ó7¹2ì.”+N'\$Œ"3!x!!0 Þ ¦î Ä!ò&p+½3Ì;D|MuV^­eKlnâpYn¾nWlh2dhb bbc¾etIƒN‡T™[apfigÀiBf`ùYƒSèNLHA¿;?6$0Ì/'.Á2S5Ñ;4@[EôKqP£U³Z8_Ab¼e:fgoh#hÂhöiniPhÚgÑf³eÝee|f`h i[j¿l>mžnÆoÔq4rHssQs…sŸsÀtBuvww£xEx9wÊw v¢v^vuÁu?tÉt‹t]t6sªs/q«plÒi:d“`€[VO„HãBJ;¾6m1Ì.)‡%ø"ß!° ü!7 ô ¯À .!%)ó1©9=BJûS´\|cqj~mÂo´n\nk„g8b÷`X`H`8aøcÉC>IHPIXX_dùgi0f}aþZÒURO–IOBüz9h4ê/*%¯#«"B"!r º:áñ""%Ø,Í4=E¿N“W¬_=fÈj©m—l¯lXhÇc_]àZJYœXÉZS\6{>@FÐPŽY`Åd€hJfècû]¤XtRdLEž>ñ:05Ø54·8;úB+HNrUZm^ôb*f&hâjòk l£lËlzll‘mml·l=ll;y7966 9p=†DJ?PèWë]”bdýhžklÞmxnhn}nm…mÏnMngn%m©m„mÂn»oçqqÆrrMrSr—rQq pso9n…nTn½náo7odpŽI5RÛ\ aŒgg.f`¡[‡TäN†H2Aq<Ÿ8X7«7 :€>ÝEÎL%RóZ:`dÛgªkm n»oUp:pcp#o¿oðp:pHoõoNníoo½pq(q‡qƒq”q_q=p¢oÁn›mdlÇl™m%mšn9n{oBp™retu¥GPOÓY `sgljPlöjg‚`‚XÂQ>KHD´EF'+0À:ùFP1Z`vfÀg¯gŽbŽ]fVOOÌIqBœ=Ñ9¦98y;ÿ@¬GñNdU6\šb£g¤j|m˜oJpÙq{rPr–r¨rŠrÃrèrôrqÊq$pýq=qhqnq=pôpÿpÃpIo+m¼ljkdk@kUllmAm±n¬p:rs³t¹uuuÁvKv¥wvìv¡u‰t.r¢qJpzoÃoµoÙp1pGp®:|9ú9K<äAÄIKOñVÓ^$d,i|l“o•q rŽs=sütYtÇuuYuYuEt¯sÛrþrr/q»q+ppoìoîoÇo>mæl j„i±jjek7k¼lpmn_p2r's´t™ucu½vAvjv”vuŽtVsqooÇnŽm„mem¥n6nRnQnùn°nak fi_WYQöJðCO;3…,‰(*$`"Ö! {t 6!$ÿ)M0¥8~A›JRR[lbZh›j_lGhvbÿY™PGõ?Ê:g53ç3L)@4I?³J¯UÏ]ùeãh‹j¥fÉa­YR^KDC?R; :‡9Å=sB…JiQ|X›_ÝeÄkGn‡qgr¢ttÌubu¶v\vÚwBw"vãv*ujtŠsÓsr7q7p o"n·nimûlÆjÀhðgÞh&h¤i·jikkŽfä`FUÝLnCZ:93»-€+¿*³°%x0³< GFRÒ[ÈdohkBh-cu[ S¨LgDó?Å;:899<ÚAÊIÍQ?X¼`eÜk¢o'rs>t·u^uæv1vÞw_wÅwƒwvuAtZsrŠqˆpko*n0m†m-lþl1jth´g‘g´h,iLj jék¥mo q@s tu uSu­u‰ubtÆtOs&qÁoœlûjüi×jj1j—j‰jpkjàj‰g·d%^;X¤Q°JwB½:ã4/-Ô)×&]$¼"w!Ç!H"ÿ$€(æ-ù5±=F.NVl_dÔiòjj"d>\~QlG±>_4„-4&{$R"®õ!—-8FC´O©YgbÂg9kži[e\TÿM\Eº@;:ü9˜8R;à@ŽHPDX(_‘e”k¿o“r™s¤uuµvWv¹wbwÍx8wÝw#uÚtÆs²r¼q¯pio+nmHlÃl}lKk–jhºgöhDh¹i«jHk'lm–oÀqïsžtru/u^uºu¥u‚tËt/rÁq n¤kÙiâhØiii`ii¥j9iÿi¬g cÔ^/X˜Q„JIB°;4‹.q*‚&á%"ž"!æ$ %ú*Ú0²8û@ùIyQõY£aáfîk_jVia¹X®LáBË99.˜&m&{”Î)148?£K¢UÐ_§dújYieÓ]³VBNWFÄA ;897d:ž>½FdMïV]“cïj„nÁr sKt³uNv vŸw2w[w™wvt{ríq}p_oinm l3kúkøllk¢j°ji÷j™kk°kûl¦moBqpset³uu•u¹v%v(uýutHr«pÏnrkÊiÿii5i*i‚iåj?j»jcj4gÌd»_ YLRJ°C;N4½.œ*…&y$^"!æ!í$™',º3rnDo_p+p`pppÑrbt=uœvuëv=vŽw vßv5têsðr²qxo³mHkLiõjjikGkÏkôlkŸkëj(gXa˜[îT]LŒD/;Ö4¿. )”$Ä"p !9!e$Â(Ø0O8 HSe[3bîdÌeh_ÿY³QJÁE>°:ô7¾9@;¨AùH6OæWX^le‘jÞo¹rsçt43l(uÂé7r(´ kp‡)3#=VHYQ“Zv^²b|`T\©U§O¼IæCè?Ž;:Z:Î?zD,K"RYM`f>k]npÔq”r q–qàq`pšn7kMgŽd"a]ò[ÔY±Y`YZ[m]åabdgjrm oÎqÀspsöt ttmu2v*vÂv²vivŸww¼wÌwYv+u s÷s.r‹qŽpêpœpæq4q¥rr-rbqkpsmFiÍc¯]@TòLCá;4y-'â#3! I"#Ü);/Ÿ8'?ÙGÙPWü_b‰fd%awX÷OVCP8Æ.‹#—" `NUB– Ú¾ $(-•7ŽBjL)U[`H_Ý^XfSBMcG¬Bú=ë<;/>uAøH#N?U+\IbgiÐlªm™n5m¦mŠl¿l$jg+c>_¤\lYeW&TSoR¥T€W[Y_$cfþj‡n=pÆrès‡sÞs¹t tu0u‘urucuÕv©w¦xwÆvÏuðuDutÛtMsÀs\sasŽsëtotMsÿr@pŽlÞibÜ\SÄKŸCi;94,°'Ï#{"s!)#e& ,2•:¯B:IñRvY4_Ja\cµ`\=RÆHá=i3)LœË Å .îlì8}#'ó1À);ü=Ï@ ELJ-PcW+]3bfeGhhÏi‘ihg^f£dÈbC^ZîW~T|RSOÑN˜MIN‘P¶U-Yp^jcRgælŒoÕr¾sàt¹tµu uLu¦uÆuƒutuÝv»w¾x?x)w~vþv«v­vvu‡u*uDu£v vtuìu)rípáléh´b6[CSK+C1:Ü3‘,i'ä#®"Î!¸$|(.Ï5H<þD£L@TlZM_``a˜](WL—B€7Ÿ-u#åuT OÓjenüE áXA"g+ñ6N@éK‘S[]Þ`]«ZøU§P„JýEFAk>>,?BÐFK P V-[=^O`ØatbKaßaQ_ø_]7[#XTŠQN LJ IG²HrIæMøR5WË]Nbµh loåqïs®tCuupuèvuÒuÃvvæwÔxgxx$wówÅwÃwvòvdv#v`vêw1wGv"tÇrokQfµ`Y*Q6IyA³9Œ2»,U(’$«$#Æ'_+¼2´9@aHO:VaZÌ^û^²^XXcPÚEà;ñ1Ç'§Z• ‹”kÙMÿ]Ê 4[Ô&0:ßF#OlX\J`D_™^}YáU+O7IYD?Ì>0=Ÿ@B-EëIáNySHVÏY‚Z:[Z§ZXYWðUàS»PÏM§JwGjEBC?BwA[B0ChG*KAQ Vä\Øb–g.k™nbpïr2s“t?tþu?uAuTu¾v˜wžxkxÜxÌxÆx›x‹xkx%wûxx>xªx‡xAvt˜qmÌhùcþ]oVºNüG ?J7—1©,) %y%g&"*Ã/µ6¸=9DRLR¥X¤[†^Í]f[?SŽJ›?B5g+Ó!§£© Ôë7f< |C© ïÈ ›)Á4a?µIØS@XÚ^*__Ò\˜XÞSM†H?ƒB D6G@JóNAPçQßR”R"RQ!P MèK¤H·EÑBß?Ë={;]:®9è;1? @¦B½E*G™HúI³IFI3H~GóFFD@ò=Ò:±7¡5^3,2S1^2_3‹7); AG=NTºZ†`dhhÊkøo q rÍs¥tau vwQx yjyÛyšyFxäxÎxÚxÖx®xyxxw=vgs¿p}kšgaš\nVO1G…?Ž93X0,|+_*7,Ž/Ä5É;vB/IHO›U™Xí[ÿ[¯\W|PØF9…@A2A¬A&@£?Ñ?–>‹<Ü9ó6í3Ê0ä.Â,Ÿ+¨*ƒ+O,a/ÿ3Î9Ú@5G€NU[0`1e\icm^oîrEsrt„uXv¢wãy&y§yÄy,xœxxwÝwev˜uÈutÃsärØoÓl fÐb#\æWÎQžJŸCW<#6ë2w0”./.n/ 2©6‰<{BrHúOéUYMZx\ZKX“RI™>‰4Õ+·"©•ô ªBå‘(Ë÷Œ‰¬És ÉÈj!1*…5@I‡QûW'\¿^u_…\ˆYS¢N¥I‘D:@I=;Ñ: :?9b9 949Ž9©986â6j5Ø5 3>1 ./+P(ô&Ü%õ$Ý%ƒ&H)|,á2Ä9 @±HBOzVB\añf¸kqn¬qÂsetÍu‘vÁw»xÂyy xdwÎw.vïvYuCsÉrtq`pæo×nxkgaŸ\ÜW¢RWLGE™?4951w0Ì024‚9=EBÿI{OùVZYî\l[°\XÀT¨L B+7-…%-NÇ 9Q„èÑÌødnMÛùçÑ#Æ-v8 B(KjQìXt[œ^Á]ã\WˆSaN”IØEAs>ª6û6 5X4T2œ0Ô/Œ.Ü.p-¼,ž*¨(F&#$~$#p$8$ä'“*t/Ð5Ÿ=D”KúRåXî_dFilm.pærôt›u7v5vÓw…w‘w\v“uátþtgs>qvo`m¦lfk¾jqh¨dä`|[V?QNL+FÑA"ð<9z7s5/331t/ª-j+<)7'ý'&º&q%Ð$#*"0""# #ð&\(ì-Î3/:OA|H»OpU‡[Üa{g"kuo¸rsþtŸu¹vAvÊvxuæt­s’rEqHo´mnjóhïg‹fÒePc(^ÉY¦S²NˆIîENA<‰9 5z44>7:T?C+G¡L%Q4Wd[ï_<^í^º[6XPðHo=3a)Ô ÿ ¡¸TÉ ˆë0î$3®¯ÛK U®aO(N2Ñ=qF„N^SÎZK]×`Î_[\’W¸TJPøM–IÄE\A@=Ý;A8w5Ù360Ž-¸+ (V&^${#É#’#ß#ˆ#Y#U$$ë&†'Ù*;,¨0ì5­;ÿBkHòNâTqZ[_æe~ién6p¬r¢sYt›u%u“tñtrzqocnlIiÅg"ecŒbº`ò^ZY€SãMæHÌDõAB>j;8ì6¥738º=AnFbJoNgRúWr\e_ `«^Ý]’XÄSgJ†@õ6\,³$÷ ìÅò?HÇ£8Û;,i[  8x ëÄâ ¥*¬5?³HoNóV[`¥aäa\ïY˜V$S²P»L£GÜCw?º(9*~,e.­0ç4x8ƒ>CÆI¸NÿT Y„^Òd+h€l´o0q7qýsBs§sÛrøqòpFn¸lýk’i˜fádaà`?_2\óYªT`NI D‹A®>Ì<ñ:‹9¨8ç:÷=ßBëGÀLÇQZUƒZ4]¹aaÅb@_b\³VN:C°9r/`%ì·ådÇù àŠl¨14ð´k9?BÆôžÉ  5Œ "û,í7D@¤HIO¼U©\Ì`˜b®`ž^7ZôYoWŒT­PfKÖG`C·@£=|9ñ5²1£.+²)6'Ø&}&Z&'Z(ÿ+Ë.1h3Ô6'8X;a>ÑC}HM®R.Vn[_žd$gÛk‡mÐo¹p€q§qîrq p1n±mJkŸj8h$ePb[`^Z] ZVíQÚL¡HBDÕBû@à?²>> >˜AoD³I\MÁRAVÑZ—^o`Zað`ø`r\‚WòO{F0;h1ˆ(o<|‹ UJþ ApÀº›Œ> jW,$#es\#ö.8/AqIÐP¶Xœ^.cAd#cª`Ù_i]q[iXSùO9JâGC«@.;Ù73g0“.,÷+Ò+Á+b,v.1 4/7‡:h<î?DAýEHðMBQ£U_XÒ\§`bd g)jXlvn9núppBp^o›nÎmglj]hâfco`%][µZ-WÉTHOæK£HxFD÷CšC,BƒCiD²GÛK'O˜T5Xž\î_‘aÉaäbT`_^¼Y!RG¹=€3!)˜! Í fewâ[2§ëÑ•Ÿ‘K@F¾í¾ ă{h%`/ 9CB¬JµRÀY`c¦eìdÙdb `Ÿ^$[2WR×N©KJHD?ç;©8«6B5Ž4ê5)4Û5”6¸9Nº=è=\=í> ?@2B}EH J¹MOsQîTW€Zµ]_èaµcÇe›gGhÅj‰kómm²n„nÞo/nÁn3lïkÃiûhHe·b~_J\Ò[Y¢W³TØQ°NÍMK»K§KRL L´NÖQ‡U$X’[^Í`[aE`L_­]‚[íWEQfH->ˆ4‡+Ú#þF› þIš‡¤&Qµò¡‘£¼eoLÿöYt±?× Ÿ‰)ú(c38>OHOVÙ\‚cg@j¾j¯iØg4e€cjaC^e[TWÁT!P´MQJÚHjG{FåG¦Hdc4a÷`®^[âXíVGT¦S0S RÈTU“Xe[Ú^s`_h^Å\ã[hXÞVÈRL,C¤:÷2q+$›³ï[ ®DŸçr r„ÖîÜ®•ÅéÂ.^{`'ÿöÿÿ0—Y<µ[ K¹.Ï"«,Þ7˜AUIOoUZña—f"iai:hˆfÔff c°a¦`#^Œ]®\í]]|]ç^H\üZ¬W(TQiN™IÒD<:3Å+ð%ª Ù f_ KÞ¢ÆF\ é ÿᱜ®Úù¼;Gk¦¨VÿøÿÆW6fõe N,Ù#3+ü5-==DHàMóR}WÀ[ö_¢a`b²c&d ef_grh6h{hÈhÛh¶høi¡jõlwmÁnÎnÚnnm¡mUm9m!lºlkiìihhvhgØgŒgÝhi¸jïlm mhm‡m2lílÀl¾læmmlúlJk˜j3h’fŸdåcAa†`^«]\xZûY[V§S‹OÔLñIDÂ>e7C/‡(5"m°¶¢­ ÉtÄ©RÄ,(@³Ãëùâ¹H@Nƒ™w)ÿÕÿË ¢2µß™ SïŠ!Ã)â2 9€?DGëL[PØU¿Yä]”_Êa”bîdÔgixk•m’nŽnüoo¤pvqlqÃqÈp¸oNm¬l’kÃjðiÞh‹fûeLd$cjc]c!c8c%c¿d³fMgôinjÃkLkŽk>jújÖjÛkCkálel´lol*kDjJhÇgjeucF`™]ü[RXÊV?SèPèMI.Dî?H91ø*à$h\? ¥øÚPáUƒ6 QiKç~°ÛõíпNA8KarVÿËÿÆNÌâÄO sñ '+.s4Ÿ9Ø=i@°D6HÃMûSXWwZv\E^lad7g†jÂl©m¿mÛn¢oo›o nl iÊgve¢d+b©a _0]U[fZ5YbYtYpYêZ-[\a^R`fb@càd…dÚd†dAd)d>dßeÌf±gIgFgJf¦fdŸc.`’]˜YÜV3RÈO¨M JâH D°?’:3y,°&Q ˜ãÎ@ • ”3¥%N†n²{‡¿ÔÔÉÁÎRK;;EZS#ÿëÿ¿ÿÍÿóC9Õ‘çÁ ჶv#´)Ð/ƒ3º7#:!=¨BbHM•RFU£XÆ[‰^Òbe¡hiªjFk˜l;lÇk²jgd`ó^^\-YåW‘TöRžPPON"NLNgOOsP‹QëT&V®Y[ \ \Š\X\F\’]$^U_ÎaaÑaÌaéaD`Ä_]YvUsQ MIóGSDùB±>ý:u4O."'Ø!ٶ㯠½ÕVΰ0ðÿLˆ€5ʇ€˜»¬—š¶âDI@=:;4*ÿáÿËÿÐ=¿Y ? V2Û0¾×%E*-ý0è3x6Ó;Z@âF_C'GMKMNNQsS@TpTâVVáW¬VêU’R°OÊL’IÄGDZA>^;—8ë7v6K6c6€7J7¾8ï:U<É?·B¨E9FGZGyGÕH IÒKFL¸MsMÇM:LîKäJâH°F,Bš>Ð;58T5ß3q0,,`'z"O]•£ ÀMñÈɬϕµs„V÷»ŠˆzkPT€´Ó(79&ÿúÿïÿêÿÐÿÏÿâ!^Ã󵡟ø Û Qî‚Æˆ” C#–&·)ñ-D1U5è:¥??B²EöGjHDH7HÛINIàIQH@EæC‡@Â>E;Â956†3œ0ü.i,æ+¤+Ÿ+®,x,î.!/ˆ1ð4Å7 :#;ƒÏ?ç@çA7A@@™@+?)>">@=F;Ý9d74Z1Û/F, )é'$–"( »~mx > ¬!Ù#B%«(s+F-Ç/>0U0¯1#1²2š34q4Å4Þ4h43f2Æ1]/Ô-6*Q&Ô#« Q¿,¡£í ´ j #„A$r}‚WOwÑ=iBëľžS,-@e‡}$- ÿåÿØÿãÿòÿýÿóE°¢± 2í  ©<!êš C#2&)ü-u/Ö1¬2;32û2ë1œ/ñ-b+(t%ý#m ¿g7ñ×¹¹a¹ÊSÝz!Õ#N$y$î%j%é&´'“(n(Ü)(Ð(±(E('%Â# GÊ«¢O+ ‚ Ô ÿ é îß„FAŒî9Q#ç¹ÂÚÔ¬tE-9KbtpZÿêÿúÿû ÿðÿÙÿÓÿßÿõ ÿÔÿ›ÿwÿxÿoÿ¥ÿè|ó²‰ 8Ð ×l¾L¼!M#.$»%l&O&l&“%•$@!ÿçyŠØ7† ­ « › ] B Ë   6>DÊHïÙ¯s³Àd7Â|SÒ í, / W ¤hÕ}‡¶€qŸ¨I)S±ÿ ÝÃÃÝëÔ pRDMR]nnVÿÓÿâÿü ÿóÿðÿ÷ÿÿÿäÿÌÿÎÿåÿåÿ¶ÿªÿ²ÿ¯ÿ«ÿŠÿ¦ÿè:&ÁÚ kIßЧøggLÑ{¾Ç-¨µÉY " ã;Ô4á® Cï„ U Y=—¤@»¥PÛÍ”¯¤eÀ s ¢íE˜‘^*^ÍÃÅãÞºˆ^=S“ÔèÔ¿·ËéûîÍ €ropbXcgPÿÑÿÌÿÜÿ÷ ÿöÿìÿþ ÿåÿÌÿÈÿßÿòÿìÿÇÿŸÿzÿgÿYÿ7ÿ#ÿ ÿ:ÿ‘$~3ŠGI 1 ·  î ßoü&Lõr Ø ï  àyŸ3=<¨N7YákhŠà36ú s  ž 8 y A Å  ³ =ËõÙ‡EhÑŽ9Á_ÿåÿÝÿüK‚“nXVZ~·âæÏÃÅÔåìÞ˯“†Ž“|\N@"ÿÞÿÍÿÌÿÞÿþ ÿöÿþ ÿæÿÏÿÑÿâÿ÷ÿëÿµÿÿpÿ†ÿ ÿ®ÿŠÿƒÿ©‰mëadvp.îV»©xïoàVçœFÇ%„òZ ðó¸wGJXžáSÊd¨W¹õ' êzòd¼q$Åq6ÑxúvÿôÿÔÿ÷^²ÐÁ…XGMo‡¤ÉàçáèêåÙÐÇŽ¦”Ÿ …V2ÿùÿßÿÒÿËÿËÿà!ÿý ÿìÿØÿèÿóÿÛÿ®ÿ…ÿsÿwÿÿ•ÿÿ ÿµÿÛ &Db ÷[­ì)\¡ÁÍ t%É|Y?ÿ¹„gAFp¡ª•us‡¤½¸¿ç"Mq¥¸´†f$Åg' ÿèÿßÿÝÿó&ÿóÿ´ÿŽÿ€ÿ»tª¥–t`[Wh€¤ÐçäÔÙäìçÕÁ»¼·°¶¦z@ÿÿÿîÿéÿâÿÙÿËÿÏÿã %ÿõÿð,;ÿìÿäÿíÿóÿãÿ·ÿ‰ÿgÿxÿ´ÿòÿÿÿíÿÝÿã0Yqƒ{gS@]”óN›ïüÝ‹\$Ö’cQ57Ko‡“Œ…‡ ¡p8$8Op—Šu‚b6 ÿðÿßÿÔÿö.u±¾¬‡~„‰ˆwq} ÍêèÕÓÛèé×¾¯¬¯­¥…U&ÿÿÿðÿàÿ×ÿÚÿÛÿê ÿþ!;5ÿûÿçÿàÿáÿáÿÑÿœÿƒÿ£ÿå ÿùÿÛÿÄÿ¼ÿ¼ÿ¸ÿ¨ÿ‘ÿuÿWÿSÿ`ÿÿ¬ÿìPªÞÝäÈšlUTMS_mwwrfZO\@ÿèÿ‡ÿTÿ`ÿxÿ£ÿÂÿÅÿ±ÿ˜ÿ¡ÿ¨ÿ“ÿvÿjÿgÿWÿ^ÿÿ«ÿÁÿÉÿÒÿÚÿÜÿö%a’¦­¡ž–‡€ƒ–©¿Ôäôúøë×È»°¦žŒqN+ ÿûÿæÿèÿðÿãÿÝÿè! 89ÿðÿËÿÉÿðÿâÿ±ÿ£ÿË JlOÿÚÿÂÿ×ÿî &2:68,ÿÿÿú+“ï2geR' öãÙÔʵœŠ~unw\ ÿÀÿ ÿ¾ÿç>A0 ÿèÿÈÿµÿªÿÿŒÿ¦ÿÓÿì 1&?dºÊÇ©ˆ–À×ààäÿÒ© ¦žŠpQ0 ÿêÿìÿóÿçÿÝÿÛÿë -=4ÿÞÿÅÿÙÿûÿùÿçÿØÿÞÿú!IL+ÿþÿîÿòÿòÿõÿñÿôÿù:Q6&d¯ü;KK) ðÙÏÎͼª¢ž™s-ÿîÿÒÿç%8+ ÿëÿåÿèÿÚÿÇÿºÿ²ÿ ÿ£ÿÀÿäÿíÿò $?u¦Ã×λ¨ ­ÂÙäèïû Û yy…uT3ÿòÿíÿïÿìÿêÿéÿïÿú "".9+ÿØÿÄÿÓÿîÿóÿò *3,1*ÿâÿ×ÿÑÿýK”­Ÿ“™¶æ*0õÓµ­³¿º³·»º²²œl>(/<GF-ÿåÿåÿõÿòÿçÿÝÿÖÿÎÿÕÿìÿùÿïÿú'e®æðãÀ©«ÃÞßÖÕàø íÈ–cHIP;   ÿôÿíÿëÿô  *00+.'ÿûÿÛÿÔÿå!'   ÿü3j‹—¨Åð7F3÷ØÈÅɼ¯¬°²°´¥‚Z?;?D@*ÿëÿóÿöÿéÿÞÿÒÿÓÿàÿòÿòÿ÷ %/Et¤ÅËÆ»½ÍèôàÊÔî  ì±…^6 ÿþÿùÿû  ÿüÿðÿîÿþ()3EB0' ÿìÿâÿñ (70( ÿÿ2CD7+,AWy—½è9M[N<ìáØÃ°¢Ÿ¡¥«ž|T:69AD9 ÿúÿèÿÛÿÉÿÆÿÌÿáÿó ":M^s…‘›¬ÀÖâéÝÁ±ÂÞîØªoM9 ÿðÿåÿæÿø  ²f¤ ä å)ÜN×c,ül˜}àRT2ÚwqÑl[ôn””Êt=Dõ†À¹, W#)%’%_#÷ ‹}W7° ± ¾ ‹ ,  Ì ¸ ­ Á × î ù ÷ ö ö î $ f ± é   Ð ^ t ¯  ] Ÿ ÔjÜDÕf@B\b,W‚*±DH»]ëÁ‰S.ï‚ÝÌ®š´Q· “   ¸³r`ÄŠjD3Z1Á¾Ðo3v…šxKð+ /"°#Í$%#x#U#"r!ù!Ù!ì!†!ª"¶#Ã$”#Š!Ã:Ûþäº / < f W  õ Å « ’ Ÿ À ð   ' ) ' 5 V ‡ À × à ¥ C ç ° Ì W q r y ™ Ç  U ¹  Ã’àGéºïÔŠÔ×:T¸}{®«±ÓvèðÁæè²³ËÝôê €C øFIÙ  æíÆq×gœ”Dí!mùu—·’µ!¥$%Ä&%Ì$õ$Ö$µ$##p#{#/"ò#$## !¨Éy<. ‹ ž Ø Û ¢ Œ e W L n ¦ é  0 C L T j “ » Ý Õ Á |  Ñ § Å ü 6 A 0 - 3 ; Q [ Š ¢ @ ü ’^±BšWd¸xÃ;¶ ~ê ù,)^x]º â“x²ñ°ûUªº…f"o™A÷†ë»å«àN "ž#|#["Ê#$c$‡#â#"X","!R Œ $å~ÃDçŸõ&-î³ ` q Æ = L # ôòù & ^ œ Ê ä û  6 a ’ | ^ * î Ë ¼ Ú  , 9 * ! í Ñ ® °  ž >!±|›u_Š…¾ˆÌìë\®ƒxúÂV¤%™º˜‰+Ë çœïò…PÎL-Öÿ]r¥‚{÷4 P# $ý%6$ÿ$$$ #¿"û!ñ! s je8O“Èr¿3ð9¾3 Þ ¼ ~ d ) D J H A A E Y p ’ ´ × ú  * : X i t \ 5 ý Æ © ž ² Ê Ü Þ Ê ¸ œ € f J :÷ 3 ‹  Ö‡pÝl öâ4‡ þb´¿Ç}‘Ž6ðfKhh`M8Ž;á‰yÏ&ìdfE¨14\‘ŠkÃþÊpLÆ* Ú"S# "P!¸ ½ .3CÜ ë£G  PÊZûüw … · q k ÆÞ  5 B 1 ' ýéÖÛê / K \ g { ¥ ¡ ‡ Y ,  $ L v “ Ÿ ‹ q U H F E <  , 9 — ÖL†ž5_ßæ ä À ó < € l,ˆB#Ñà£ý›f“û è,L@5’—L4šãRŠ:üÓ„ ›û1tWû ž oÚœA "3¥$´„c£ î ‰ 5 í §  û %Ãz†¤³˜bØ X#ý,<L\w˜Àîøë Nº + r ˜ w K ýùöîźž & ê ~ X(ÇU¤¹œ ÿ m c ¨ Î  ¶ , Uïåî›q$ÇMøb´ˆ3¡a"³G° õ\_|~"ÝÏ›T9³Ìë‰IfÀÓ•e±aVø˜ V - a š . Ë ¢ x Z =ý-þôѺ¿¬{–¶nàÃÎÙäØÔÞ9u±ÚïU¾] ‡Öâc?, C¢ † ¬ Ì ° ö À \ ¿  ¤ P k › L Ð p {³ðö¯Zî›O «AÈÌ vUU—(XShp‰ u  ÿ*ÌÙ‘–¼|• ÊI7 Á P Ù  2 ¡ 7 ½ ,‡Û.¸XB@FíçïÙÌñï°+¦1Ù­|kekhX9''M~ºí 2@ƒß|2ÕX•mM&ùóGƒãDÄ ` Ý 7 G X :  å ® › ×  p ±  K Ø ‘ uPøcÄYÝ©z/ÓCÉ•étWŽÈ¼T¿‰= « ç ™ Q à Ä îÕJÝŽÔ c ï Ê  Õ } =Í£Ý   cáÚöÜz0ñ¨°Ë£LÊœ•™ª²¦kC, 9]‹­¿ÉÔÞ <§-ÄQ¥åÞΣsoä]§+šÃÝÐÔϾº½ê # y È  } Ð  I † æ m ê ( _ ½IÐx*äœ2°* T è Õ  û Ð c { ô # t  Ê  ~  r t {   ¨èmG 꽫ȵbº rž$ù@—ºˆŸ>Ô¡Ÿ»¬™œ£– «¡xKí×ÅÕð:Vr“µã N¨ƒÒëèÝu#ñ¡3,9ˆÝ:‹Ë  6 j ¯  \ “ ’ e b ³ = ¥ ð , X  Í - Ë„=µ Ç 3   C *  = u A ˜ ¿ 5þ¹Æ  O p C –3À;Ñl= â”2›ìMØ“#2œý ×Wò“'ðÛþ@‚¬®ŽˆrKá¸|is„©Æê=r£Éê<av„‰‘›®´—’œ ¸}]pu¦¬LØ.g‚¨å < ’ à ñ  £ Ç C Ù S  k ] [ ¡  í  Å ³ › ¡ ˜ ¯ ð  % à mÊœŠvP¤2Écì§œ£‚-ÐYÙ{8.2/üĸ±›]¬Mÿ¬ÿžÿ»eµ52ò½}@ÿëÿÐÿ¦ÿŠÿvÿ€ÿŽÿ­ÿÄÿè FŽÔ0SYTA15Dn§ÌÔ¹‰‡¶*§ <KV¦"ö߬B‹ÒO  F Q /  " • " s ~ „ f ? / < r – Z 6 ÞÌë ( g V xÕQð¦_/Ù”Jámõs5CX)µ*¿xŸòa¬®“NöÉ´¯¸³®›·ÿe¶èÕ”U' þÜ»§©¯»À½ÃÛøÎ…5ñÜØ/Yzf1ì²¹í?q…u’Óz{GÊF—ç:©‹¯vG„  ‡ Û   ò ® o V ^º p;7r°Ï‡dÀ2½`åŒ[J1õ•#ÈYOfKÚFǵäeå˜:zí›Mð…Ù'EE9øòðá×Úãëæ×¾¨š”ˆe*à¯~Jõ™ a½/ÿñÿÇÿÝÿè(D`Z>ÿðÿéÿëC‘Ò;º\ðBÛU¨ñ\#µ·“ÍTô g   r ?ê›rx$ýǬµÜçÍaíI¨UÉ;þóè‹0 ! åoè4±1}_±Š#ô{ H q ž B Ð Ò È s " Ó Š } ‰ Ë P ‹ § · ° ¶ ¨ d F  â m Ò ú 6^…–£¤«âwô©o20[–·”Eÿìÿ©ÿ¼ÿþg­Õæ3¬N ¸)W¤q>˜»v‰¶‡`,ùJ'úéˈ@ÓjÚ6‡Ô^ü1楂ž³4טp”Ø,cjFCFïÑã t ="S›IáõþÕÄ·˜¦Ï9¶2–ÁÚÔëãÆu3±7D*ž h ³ i ¬Âü'­3PÿÑÿšÿÝ&XRÿšÿMÿ*ÿdÿ¼ atf{¶Y7ýHwª-‡ÍžwŽkONvßÉź„+»l ÓfÙNЛ†©ÍÖ«~{¥í¿e/mé@‡|M­‡‰ ‰“ÅìišúuW&ƒã]„‰“·  ‘! !^!w!…!{!’!‡!j! ¥å'ØnsnÇU ¡ ÿ ÿ ' ¤ T\ˆ;#¯hto4Á!ÿwÿ5ÿKÿÉ8z{V)r7 œÎ UÅ0t§æ>µLPR]‰ !5Åh ΚX °h,$65ìÞXi['\ô âÅäGÇ: ë ‹5X›ÚÂ!‘#Ò&'Á)T*:+$+y+Ä+¡+i+.+ +Q+˜+Û+ø+î+é+Þ+ë+Ý+Æ+`*û*#)I'Ý&k$Z"3šøN¨pHÜŸê>t ‡ \WL™ D½¯•?€ÿºÿ(ÿ#ÿUÿÐ5VÿïEûž 9Mšü]„†ÒI«î3[bo‡U ÝÅ´–Z!þÿ îíð8°7[Á[Ä“ƒ  Û ‡ M…ÖÈÈHµŠq!«$ç(=+­.È1Ó4 6*7L8j8—8¢87ƒ76º6¾6Î6Ø6µ6{6S696/66 5µ5P43´2q14/k-Š+,(Ã&-#–!6à_, þë[ª:… œ¾±V×j‚\.ÿÿÿdÿïk^OÙqÄÜõvª}@@öh½åûææð¼Žª¿³}OJv±Ô¾˜…·üî‡êÍ p oO³=Èg™Fë!X$w'Ë+À/¦37²;+>~@œB™CXD CÕCBØBA†A(A&A;ADA@´@d@)@?ì?Ù?? >5=m2X3Œ5µ8;Ä?ÊDXH©L†PWSEV2WèYmYÈZYÅYŸY@XµXYXAX•YYZYDXÂXBWÛW²WªWŸWFVÀUÞU$T RÚQ&OiMJKHÖFãEoD;BöAƒ?M<ã9Å6¨3J0 ,¼)%X!á5Qú> 7ñ+7·bÿñÿRÿ6ÿÇ3cÿÜ?»ÔŽ6ÿù08›ßÛÿ’ÿ„ÿ–ÿ¬ÿÍÿçÿú 9[×JwÛå « Ÿ½-¢#ê(",0C3Ó7C9v;K€?ûBfDìH_L OõS¦VßZ \–_?ab›c8cÈcÈcëc»cQccchcéd,dc—cb½bŸb¨b¯bkaûa-`‡_x^S\”ZÉXxUæSyQSOñNÜNMK`IuFrCT?k;œ7S2Æ.e*‡&ú#wPT C FßšÿâÿÌ™bÿþ1wˆ;ÿãÿÙ% 8uŽÿPÿ8ÿAÿHÿ`ÿ~ÿ—ÿ ÿ£ÿ§ÿÁÿÕ&Z?Yn„ u /Z´$Œ)˜.]3j8<È@nCàFGðIJ*KpLùO6Q{TdWmZ¸]ë`ëcæfnijÕlbl÷m†m€m“mIlËlalFlwl±l¼lŒlk¨k^kFkbk…ksk5j£j1ihh˜g=e×cÕa†_;]>[ÜZ°Y«X”VèUR`O­KóH0CQ=ø8v3s/,+D':"µi^ ß #À&êÿÜÿ’@7ÿíÿ¾ÿýF7ÿþÿØÿÕÿøÿðÿÏÿèEÿ~ÿlÿ{ÿ|ÿ•ÿÀÿò)bÖ2û«Y^ u [Щð#í)±/M4¶9ò?DœIAL’OÔQðTUPVoWnX¬ZT\^`@bÀeLgðjœl÷oYpãr.rŠrèr¸r™r&q’qpµp˜pzpMpoªoAnþnÛnïoonýn¥nenm§lùlEkiƒgÙfweMd;bûa›_°]­[1XûUþRïN`I&C,=†840+õ'!‚¯àC ò ŠTf-–d}Í_ÿåÿÙ?Gÿçÿó ÿøÿæÿó@ÿ7ÿ6ÿ]ÿ|ÿ«ÿÙ4”ùªÿ`÷ ÜÖ‡ ß!ž'-ç4:@EñL Q#U¿Y\v^Æ`ùb bácYde5f\gáifk3mnÿpðr¡t\ulvEvbvƒv@vu¦utŠtsËsŽs\srÆrUqùq½qµqÀq¼q…q=qpýpþpîpÜpkoºnânMm¿mRlPkhÚf`c‡a-^”\XDSÇN2HÍC‡>“9ô50š+-%:)ÊË7 t Â\؇ÿÆÿÂH2ÿþÿ÷ +¤Ø8™ýE£ùÀ«*x ” Í9Ópæ!"&ƒ,r2J8Y>kD†JÆP”V]Zû_Cb^eÏhj j²kkkLkál™m¬n¹oëqrMs{t‚užvGv½v¯v¢vbv@vu¥u5tÈt~tYtAtsÁsMrÕr}rHrqéq‚q*pöqqqPq‰q›q}qLqNqIqqp×oömÉk/h%e¡cWaN^–[PW RçNEIŸD·?õ:è5À0)*f$ž½Í{> µ¥ôQ"–3x=A+ $##3YÊj¹.Ådœï þðø G%œ+‰1V76<âBÁHþO7UTZ²_ÿd3hSkRnxpOqÜr*rcr(rr7r‘s#s›tt|tûuvCww¡wíwÊw¤wiwUwAwväv¡vkv[vDvu¯u:t·tGsês’s?rÉr€rarˆr¡rÜs$sls˜s¸sòttYsýsyqÓoÊm2jîhÍfîdµb^â[êXIT€OÕKE¸@e:º5"/?)#wÆPT žñð¤†b9P%ÿü 044@e)  á » n T ;Õ‰5û—þ!M%È+Q127=<ÀAçG LfRPWê]a)ebhÏlWnØq;r[sOs[sts>s ss+sys sÌsòt\têu¿v³wjwÙwÖwÒwºwÃwÓwÞwÙwÅw³wÁw¼wwNwv™v1u¾uNtÜtWsúsÊs½ssks]sYsKs3s rýrñr—r8q+oÚn lXjžig[eVca6^è\†XñU OóJÆE&?ç:^4‘.f(""×NZ Ãæ•oññárRt5#3DZ 1JVF4 Qe>@oÚ#&É+a0l6u<ÍBÅGÞLYQ5V2[¡`Ld8gjTlýo¶qss¡t0t$ts×sŒs[sTssses‘sÛtu]vWw\xxxx¨x®xÆx×xãxÜx¿x³xÍxùyyyxêx¦x/wÀw6všvu®u^têtt/sòsªs\sr¶ruqþq|p„oRmòl¾kÀjûj h¸g,e÷d’cL`ñ^KZUkOâJ½E4?¶9„2È, %Æ Vù/ë Æ 4!´éâg‚8ÿø(MuêNqZ@R¹ÝÜ"+%½){-ê1Í6ˆ;õBH6MtQÎUgY§]Åbe,g¦i+k,l»n.nîo˜o±oØo oQnæn‡nanJn„n oCp$qƒrÛt8u’vŒwXwÁx=x‡xÑxóyyyyy+yƒyÞz)zrznzSyàyvxÅwûwvQuŠt©sÐsrdq¡pßp!ovnçnAm‚l{k0j'iqidi›i¯i=hbg¼g f£eŠdRae]õYT\OJD`>#7N0…*>$u3d:B ļ³9ú²6ÿòJb !B"4# $Q%å')S,04!8¾<ñAñG½MÊS‰Wþ[Ï^¯b,e#hi¹kkl[l¥lÀlzlal k¤jöj(iuhêhÍh£iicjkÛm±ocqråtdu¾vw}wúxkx£xïyy,yJyŽyúzizÊ{({?{JzízyÁxØw©v–uctrËqžpzo@nl¾k¨jµiòi-h[g)fuf fÓgái i±iÛjjjjj&iðh)eçaë]õY TsNôI1Bp;g4i. (!®”AZ K ‘ ¬ Û!ÿì8o(^*#+g,a-L.y01^3Æ6Õ;?C€GäLèRWÕ\¹`*cQeLgŽhîj6jˆjÓjUiÏhÇg¤fŒeÔe'd6caÓ`è`7`0``¨a[bÜd|fhwj’lÙoq1rØthutvtw,xx§y'yxyÞz6z”zÏ{ zúzçzUy¶x‡wBu¤t rqp¯nâm.k‡iÌh.fŠeGd"cobËbVava:a]b®dUfIgÏhíjjåkÔl'lk¯jŠgÍe`÷\ûWðRóLØFa?U8Ÿ1å+$NýÅk ‘ 7ýL0ÿñ:m2|4b5®6º7«8Ð:t;Õ>oA¾F JNiSWÿ]0a©eÍh[jÆk©l}l>l(kHjjh¹fÀdtbL`œ_K^7\Ë[TYÊXÄWòWñWãX«YŠ[2\Ü_a1c¼fmiCl n€pàrÆt£vw¹xÖyÇz/zšzÇ{{&{Bzæz{ykxIv”tØrËpÖn´l‚j6gëe·csa–_Õ^±]]\z\c[ÿ\t]F_:a^cÓeîgÜiòk¼mŠn“o’o`omrkÞhÑe’`ÿ\¦WQGJXC`;Ü4,ö$ÁExB ÙìóØ(ÿûÿ©ÿèI‹<÷>Ý@ A&BCD”FH¸KæOñS‰W‡[ñ`Zdœgêk6lênhnmœljÄhÑfµcÕ`°]”ZÇXºVßUzSÙRsQP!O^OiOvPNQ0RÆTRVxXœ[]^9aˆdãh{6z}y¢wävs•qn`k¾ifgcº`ù^o[ÕYðXIWvV–VFUâVV W5X®[]’`'b\dœg2iËlxnPoÜp-poÊo]mˆkMg‡cé_ZmTFM¶Eç>M6-%k{ÜK o®L¸ 2BÒG¡I„J·K£L]M.N«PLRýUõYŠ\Ç`NdLgýkMmŒppôqvpnkài„fIb»^žZVÈSQP¸N'L\J‘IhH'GGG/GWH7I J½L\N–P¸SV{Z3^&bRfAiÙmtpŸsívkxÇyòzåzý{P{{z xõvÃtuqGn j„gc×`®]ÇZÐX(U[STQPÎPP OÑPDPŸR4TGWPZC]_da¾dŒgÅkInpLq/rr$r°qõp»mÏjèfÔcE]üXPH)?U6˜-Õ$îú3C RŨŸzrb¾ PÚR¤S¿T}UU¥VÿX§[]`ZceóikÃnofq qp¥nblEhîe aQ\±WÜSOOiK†H‹EC·BAc@}@&?Ø@@/@îAÇC[DüG HüK—N^RXV¾[¡`#dXhlmpus½výxÚz\z¦{$zäzÍy²xzuáso(kf©b\^sZ²W‰TVQ³NîM KWJ´J)J@JJuJÅLbN’QÍT÷WèZ+\n_b‰f‰j1m7nìp†qTr¥rárÁpõnýkÏiKe`4XæQ.H3?»7-þ%Z½»à z¬¶VZaYÖ[\|] ]X]Î^ú`Œb¬d€f‡h¾kmfo(p´q5qÿq/oØlÑjf a°\\VôQ¨L­HhCï@=`;¸:a:9W98Ë8æ8Ò9c:5;Ê=`?U@ØC9EêJ?OT³YÖ^ÈcÅhxmPqfu‡x zzƒ{*zßzÓy‘x-uqÀmh/bú]ðYdTöQRM¢JèH8F°ERDåDxDnDD0DJEÄGÍKN5QRSÉVCXñ\™`÷eoicl/n½pirs¤t¤tspÇok²haZ+Q%Hå@07&-û$Ÿ„±W qÈû“–9_­a@b:b¶bîccdoeÕg€hÀjkÍmtnôoÂp˜pYp!nYlCh±e``¿[¢UØPQK2F6Aë=T: 7"5ð4ÿ4á4d43Ë3¸3p3Ä4x5ß7,8·9¿;Í>?B·GÂMèS˜YD^ïdfj n÷tw5yÉzq{Kzûzýy‘wütfpxjóe^_iY«T|O`K.FÚCäA0@?%?>í>Ò>[>1>?@ªCsF;I4K³NSPõT›Xé]ÊbnfZiùl¦o„qrstttNsr oTl»g_`üX¡PÿHÇ@7­.\%®R!m Ë †Ód8dÀfWgogóh1hÁiÆkl`m0mëo0p,pËp”p™o~n0khhdg`T[ U@O(I…D‹?‡;N6Ý3Ý1J0b/§/¡/@.÷.¶.•.A.p.ÿ00ÿ22À4–6Ê;a@¤GgMÁT2Zz`™glÅr¸vŸy¿z–{¥{I{Gy•w·sˆnöh“b[BT§NÍI D~?<29'8$7}7ø8=8t8;8 7×8®:

iELšSÎZÒb hBnƒruuÒv¥whv³v@ut3q÷oAjf_ÖY9QhIzAÒ:<4/>,L)?(8'r((¨)Ð*ê,0-{.˜/:0B1Â4E6Ü9û<­@C¯HºNzT²Zb_/cûgžkSmxoRo¤oÚoXo7n¤m»lŒl jÂi e“b\²WO­H/@E8H1+ nýoßpÔqžr=råsjsÕtIuušvuus†r\oÖlæhZd ^3W¤PˆIöD)>m9’4‚0¼-+O)ó)°(Ý(¦(­)w*+}+ô+¥+*“*€*ã*ö+ª+÷.€1é87>±FžNOV"^elp¨tu¦vžuóu•tgsœqwnìj…f8`%YÓRJB :3ö.k+<'ò&•%a%’%¸&'4((Ú)u)Ÿ**ç,Â.Å1—47:ù@EíL”R×Xq]ïbPfÂiºl‘m¯ngn7nšn‰n mAm lsk}hüfsb]UVãP0HÅA?:É4”néo˜pfqqœr4r¯ssntHtÌut2s[q]o~l'hˆcr^’XaQJjCè>{9 4Ô0Y- *(€'U'7&£&Ñ'P()ú++À+œ+a+*ñ*ë*†*w*+½.=3á9ÓA¹I}QµYôa\hánrztuvuut%svq}o=k^g›b5\£U‡N F6>a8$2‡/2+Û*:(( '¦'¯'¢'Ÿ''S&Å&’&'±(Ú+-(0r3¹8¯>5DÌK)QLW[\~a’eNikllÕmªmÛm«m lálTk·iòhd›`ú[®VO°ICe=ónÂoBoàp^pÎqRq¹qìr8ss‡s‡rMq-n·l.h"c÷^yYRšKuDs>#9$4'0E,6)c&®%u$y$…$1$¹%¡'6(Û**ê++,+ +*¿*)g(h)z+F0f5ð=ÅE|MßV8]óeãk–pœr±t’t‘tît(swqƒoplhÚd/_RXÝRJœC&<î7?3§06.[,u+r*o)¶(ã'ø&û%Ü$€#˜"æ#I#²%Y&ø*,ú1¸6è=rCäJQ8W*\íakfhðk+kèmmzm‰m lÕl_ljæi§gdv`T[âVxPØKÛG/nnznóo_oÄp2p|p•p¼q~q®qUožnkgÊc^wX»RäL1E>n8”43/¹,R(Â&^$#0"t"µ"­#{$ž&W()v*‹+++´+Ã+5*U)n(*(Î*.¥3©;B^JŠR®Zƒb›h¾n:pâsPsËt—tsqìp;mzjóg bß]WPAIuCŠ=ô:36¼4Î2Ö10e/9-ë,=*j([&$l#"Ù"‘#‰$…&ü)f-œ2%8C>eE:L"RªXò^cvgj'kmm€m¾m:lÑl0kÙk jh'f@c+_Ò[•WS OXmXmmñnfnØo9ogoqo}p*poUmkgˆc†^YRåLkEd>'7÷2.¨*œ'®$©"Ô! ’ 6 Ä!"1#%S''(Å*8+,,+ô*ñ)¾(ƒ&ô'>(,50Ã7Û>ÙFùOW&_leïkÝoqürátsÛs¿ršq‡omm~jfZ`÷[STöN¢HùC}?¦<,:>8F764Ó3s1H.Ð+Ø(¼&L$S#Ž"–"Ñ#$Þ&›*6. 3»9‹@}G‡N‰UQ[,a1e…irkgmfmânKmºmlRlk“jÝi‚hAf0cí`å]‡ZWÏl±lÖm5mÊnYn¬nÃnænôoonkAhÉd‰_ÀY¡T M–F‡?B82`-K)÷&p$!ª ^øïÁ q!Å#3%')*ï,-A-9,Ý+‹*.(Î'''–+ .Ü5?;CrK]S[Ïb•h×l„oéqDr½ssrrûr˜q*oØlñi¼dË_—Y¡SÄNrI9EtB@>$=<; 9¿7[40ñ- )ö'j&&$©$L#í%&), 1 6E<öC¸JÚQÝXA^´c©hckmŸnZonˆmÉlÖl‡l4kjrimgðfbdOaâ_½]ñlzlŽlåmˆnnPnMnŽn°o"ngm/jg'b.\‰U¡O|H´A9œ2q-!(P%u" ÕK€¡Îƶ!L"ì% 'L)„+½-.P. -Ÿ,*¦)'2&¯&š)9,17.>£FEN—W^Ve iHm9oqqØrÃrÞsr]qÈoªm?idq^þY¶TÃOØLH¦F„DeCAó@¦?+44h4°3è3%1Ó0@/. .¡/;2b5ù<BnJ QÒXø_§dlhûk·n~oÞq#qŽr!rLrÎr_qÇoVlihc—_#ZÿWÀT¾RsPMïKâI~FÿC›@(;—6Y1=,­)½' %ä$‰$€$‘%î&ì)»,ô2q8?JF€MðU![®bœgÄlPnjp—p¼p\o?nënžnm?lEkHjŠiâhàhFh kqk’l'm'nnpnžo”oóoënlwhFcn\*T©L¦Eu>‚6¸/õ)±%î"!c ^ )Uߦ!v ­"$w&´)¨,è0P3¤6$8s9z:f:-9ì8ì7Í6§5j5I5)7t:[?ÂE:KñRÄY;_ZcúhpkHn$oŒpÀq qxqžr!qõq¸oÎmtise#`²\¿YØWBUGS!PÜN—KÔHýErB=–8s3%.*˜'Ÿ&d$õ$Ó$Å%Ñ&m(©+90*5p<…C°KDRuYD`¦fk³neqq q£p£pGoÓoPnrmZl5k]j¡ihÒh‰j€j½k‚l²mÖnOn¨oöppln;lPg˜bZRNJ7B¶;¥3â-' $o!¥! u †è‹v  ‚!â#&4(ª+ó/¢3Œ7Q:;<ü>g?®?¾?Ë? >K=2;É;":“´CjH MÕS¶Y_cgâjÁm˜opGppõpïq,pÏptnÈläibe@`à]Z…XWUhSGQN)KBG«D=?Ñ:È5_/ú, (Ç'd%Ñ%‹%Z&!&r()* .S39ëAHËP W!^èe`k1n|qÂr£sr&qÌq;pÂoän¯melk¿j•iÝiŽieiÂj½lmdnn pUqqn§lpgDa0XúQ"IA=9í2(,&˜#ã!•!N û!* Ê ž ¢!E!¿#6$ø'Ô*Š.22E6œ:Á> A>BþDvDœDÕDLCÑBçAŠ@Ý@yB2DtH™L“QyV[`xd‚hekm´o pvpÄqp´pxo~n†lyjrfòb§^YÚW5URTpS=Q¡OÈM7J»GŠDj@I;´6˜1Q-:)Û(M&Ÿ&4%Ì&O&{'ã)L,ï0ô7j>KF;M•Tí\ßc¸jnqìsJt,ss5rr1q`pn m¢lÎkˆj¶jOhPhÊiûkulómÊn¯pÓqÞqío7lÊgP`äXpP‰Hd@)8Š0³*ò%¸#q!’!¢!„!Û!Ï!à!ø"‹"ü$w&;)J,K0a4Ó9†=ÿA¡EQGmII8IƒIH›G´FKE“ESGIL±P0TXø]ma«e.hŸk1mÛowpôqDq}pØpso-mÈkh; 6Ã2-ü*›(Å&ú&+%$Þ$š%&h)*+ý1‡7Þ@G©O˜WÅ_8fŽkçqs“uuHutXtCs©rRp£o…n’m%lÉ6í/O*Y%ð$„#n#ã#â$9$$ù$ý%/%ƒ&¬'¬*6-T1Ù6%;@DæIåM¨PÔR¡T©UíW8WÔXX^YZø]A_äaècîfChäk¾npqrGsttMtns|rp{n¼khBbÞ\µUœN˜I+D‰BE@K?P=Áp4oKmßlùlŽh'h[ihj~kÁl–m¼p5q[q]n j²dZ]dU MŠEÇ=+5k.)•%¢$’#À$D$N$š%%S%=%X%ª&Ó'¸*/-_1ð6:Ð?ãE"JjN´R{UWÉYÎ[á]O^h_{`×bäeugÒiPjhkãmÂpqésQsít™tçuhuwu–t¬s{qnýk}gýbO[¼SûLGF@·=Ø;B9ö86Ü5ø5r4õ3Ò2R/Ò,ð*.'ñ&«%‡$ä#ï#f# #L# $;%n)à/„7Î?¤H PHX9`gDmÃq^t~tÙtÉsÞtsïrÒqGp_o›nRm€m"hhhšiˆjhknl!m#oopFoïl&h;a‚ZdR*J½C:†2ó+ó'ð$z#À#$#ª#¾$$k$º$œ$±%&0')…,©14ä9b>CC†HÒMdQ„T WÐZr]2_uavcSecgÍj½mnyo%p3q†s9t¬u²v vtvuvxv0v?umt=q¦o+kKgaó[vS¨KºE ?';±8ˆ6É4~321Ê1€0´/x-`+ (Û'&%+$#Ÿ#"®"Û"‚#r$S(g-®5Í=F"N_V^^»eµl|pdsÈt?t3s;s€sir\pùpKoÔn×n@nhªh×i¢jDkkšl~n¡o$nfje£^•WWO@GÜ@P7½0V)£&# "™"+"´"Î##œ$#ó$$\%|&_(¯+²/Ø3c7“<,ARF‘KGO„RçVUYw\×_åb©e0gßj°np€rr±stŠuÅv¾wjwˆwÂw‰w#vŠvyu½t°roAjøgag[?S²K¼D>!: 6a4F1”/õ.Ä..Y-ì-+a)—'ß&y%œ$Ù$;#B"Œ""1!Ï"#&¿+3k;.CàL)TD\Àcûko^ss¦s£r£rórøqþpÈpTp/o‡o6oCh¥hÔijj±kjC}HL/PJT>Xq\W_õc3fiÉm`p1rys¬tâu¿wwÜxux\x5w±w@v»v„uÁtÏr™p?lhûd _X„QvJ2C4=Ô95ô2[/á-›,~+•+*R)A'÷&‹%7$0#Y"«!® ñ o n  » ù#ä'È.è6A?GWO¨X4_´g@l.pqÂrqqYqXpioomoãoâp4pägýh=ii­j\kkÐm¦mŒlAgDaúZ8RcJBƒ; 2y+4$£!aɾ‘ 7pß Y Ó!-!í"—$%­(9*¢-æ1)5:D?‚DaIM¯RV†Z‰^qaæedhkûnªpýrasµtºv0w7wîwÑw’wv³vVvuFtQrpÖnk fºb=\FUòO H(BP=9E5%2/0-o+Ø*ð*(ù'¡& $®#‰"•!á ð KÐχ  Q#&²-„4•=3E{MØVU]ÖekjŠoEp³q3p2pkpRo[n‡no4odoìpÓggchli"È¿t¡ojîT·  š!!ì"æ$@%‰'(‹*l,.Ý26w:¯?ÅEIJÝOÖThYe]Þb eWhjŸl’mëopÍqðr„s s*szsIrÆqæq%p‘p2oßo¥n¹mœkDhôe7ac\VZP J+Dˆ>‘9}4Î1‡./,*b)2'€%î$‰#ƒ"!· È +£§• H w"Ü&,X2ß;C4K€SÂ[%b¼hlænvonn:nléllOmBm±njotW­Yò]A`…cÆfÜiQlÎmPlRfïalY\QKHÄ@ñ9X0Ç)§# ÎàeÔq÷ y ï!{!û"Ú#è%U&³(4)£+?,˜.Ñ1Œ5\8Ë=GB`HM.RW5[Ç`0c¥g/i‡kl¢no"p prpÍpéq;q6púpTo¤nþnnHn0m¨lôk4iufdcU^¨Y‰S_M„GyA;m6B2‡.¤,6*H)"'p%î$œ#ž"!µ Á ,©¼À ˆ Á#'&e,¤3;HC_K®SÜ[.bÑh$lèn`on!n?màl k¨k¶lˆlÊm]nLPESSW£\ `jdugkÝlßlOgaÇYÂQ¼I-AT9µ12* #CüÛU,·-ä ˜!L!â"u"ú#Ï$Ü&<'„(â*A+¢,œ.T0®46Þ:Ü?”EMJÇPUnZ^mañe¯hCjlk‡lãm¢nCnvnµnØoo;oSnþnem­m(lùmlþlŸkGiägce$a6\²VšP¢JCT==7¥3|/,X*G)*'h%Ú$…#"X!j ríy¢¼ ™ ç#X&£,Ú36;QCtKËSÜ[b»hlØnJon?nVmÕl{kikell5l m{G¹KPþV¡\:aTeVjtl2llgÈbô[%SWJÎBò;A2Ô+“$m ³Nº†• ^!5""À#Z#à$¨%®&õ()D*+Ê,Œ-ì/ô2í5@8Ï=B½H{NQSéX¡]!`¹d£giiÎjól3l¥lùl÷mmTmmðnenonm[lälÀlúl÷l¨kgjgÚfbº^•XRmK¢DË>’8·4//m,j*+)'8%±$h#q"M!` vþµÍ µ!#²'-]3¬;¶CìLNTC[Xc hplþnQo=n|nqm£lj¿j~jõjÀjòk¤?ŠD=J QkX-^Hcik˜l­h²ds\ìUiLêE=34Ü-‡&!×)Ìoé ¿!˜"x#8#ß$k%4&O'“(‘)Œ*»+Ù,{-”/>1½3œ6Î:£@BF.LwRbW`\#_ãcïf½i-jDkuk»kÈk’kšk÷lxmmÛnmãmZmmmHm.lßkÃj“h gEd+`+ZSàLýF3?ä9¼4Ä/¦,f)ð(¿&á%s$M#†"†!² æ qðúÿ ì!h$'•-Ò4;ûD;L¨T…[…cLh½mn?oLn©n…mfk‰iåiWi‹i ii™7=DdL(SæZó`£gdj±lÀižf ^æWÙO‡Gª?¼7‚0(e#£ /×-Ë @!!é"¼#$.$¸%&«'ï(à)­*¥+Œ,- .J0M1Ù4Ó8S=ÓCºJWP©V0[q_ˆcÜf¸i2j-kHkhkKjójÔk=kïlâmÈn2n2måmðnn%mßmlck2iNh eaZêTËMóGG@÷:²5r0,ˆ)¬(N&%`$w#ë#""l!¼!? ¤ ˆ n!X!Ý$±(Y.¸5<òE6MUs\ad)inm_n'o9nnl\j gïfÛfše´eye¹/l5Ð>FÝO–W›^%e­iµl©j?g3`WY¸Q IÖAÕ9¶2E*`%6!N •ª C º!¯"~#R$$Ò%R&'@(„)w**¶+6+—,>,ÿ.}/±2y5¦;@ãGØN¥TÐZ–_cïg i¦jukZk8jýj‰j)jfk l.mImþnFn.n[n}n·nn-m kÄiâhÊf bN\EV/OAHB;Ë6i0Ô,æ)|'Û&-%$á$€#Ú#)"„!ÿ!V!( ÿ!ê"o%d)H/ì6g>gF²OVØ]«e]jUm»n onem{k+hleðdgc¿bb b(p/›8©BKtTD[“c¸h\l#jxg÷ax[[S™LD<4‰,ƒ&û"Ÿ!v ; µ!""Þ#À$Ž%6%¬&R'a(Ž)* **¦*ß+X+½,Ü-Ð0t3s8»>jE|L•SNY^‰cÕg:jjßk kJkj’jj4jÂkèmmênentn£nÅo(onÔm¨lKjdiUfÈcT]‡WŒPˆI©C"<é7~1®-U)h'•&%Ô%Y$ý$f#¶# "y!Ð!¤!o"\"æ&*>1<8@%HtP®X‰_CfÂkIn)mþnÞmÖl%hèe”b’`J^ì]\:[À!­)š3^=]GYPëXüa·føk–j²hÅb¦]U–N6FB>p6ä.¦(¨#Ú"N Æ!!>")#$$Û%l%Ü&l'C(G)U)ü*@*9*c*¼*å+µ,b.Ô1¬6ßö972º-´)['‘&M&F%¦%$Œ#ü#C"¢" !ë!Ž"y#;&ã+“3:;B‚JÙRóZèa€hŸl{nÓnn€l[hÈc[^¦ZKV R¯O#MCK®x!=+Â6@—K*Ts]ëdjjÚjoe‰a#ZZSpK}Cä<+3¶,Ï&Ÿ#³!h!i í!"W#p$$’%%–%ì&e'8'ø(`((©(ú)N*'*,·/—4Ü:<@þG¶N¯UÆ[Ûa¹eijIkFj÷jÅjŒj‰k!lm!nn o/ojoŽoppoäon(l§k|hòf$a[}TvM¶Fö@y:S3s.0)Ë'û&|&-%V$»$H#×#"j!Å!Ÿ!'",#D'Q,.3®;CZK¸SÆ[¼b0i ln³mšmÏjþfw_ñZ|UYOÿK—G.DÃBŒ¿x)33=³H†R>[ïbij‘kgcS\åVNNbFÉ>ñ6 /s(x$“!³!n ú!—"•#.#§$A$¾%%Y%î&’''f'’'å(\)Q)º+Ë.Ÿ3Ý9Z@F:LÂSÃZ+`ed‹hAi£jÀj´jôk+knllÿnnõooöp pppBpPpm;8±¢&(0$:¦E¶OÝYÅ`ºgÄj$k‹hTeU_EYQ6IŽA9y2"*`%q!è!P , ^ ¸!’""¢#A#Ì$3$‹$ô%z&!&ª&â'!'‹(o(Ö*Ð-`2o8 >ÒDâK-QùX}_cºgÖiqj•jªkbl%lÍmŽnompMp»pûp×p²p™pËpàpÔp+oymÿlºj1gªbö]VpOÕHÖA‘:¾3è.é*r(*%å%$J$#Ó#j"®!ï!'!0!"õ%)æ/6–>SF½NÕV#]Œc!hÔk8lÎjûiûem_1VþP5I•B2;Ì5È2V.ð,#d-7rB…LòW ^geÖhòkQifËa2[¢TLuDR<Œ5>-'V"õ!«    ´! !¨"+"³#E#Á$$v% %Å&&g&»'z'å)Æ,0±6!<ÐB±H¸OUn\ aXfh(i–i÷kAl–m°nop=q qaq{q8qpäqqpýp&o7mŒl1i£gb>\¾U£NèGÍ@d9²3T.¶*('•%8$„#ü$#¿#B"†!ó!U!Ñ"c$ë'‡,¢2 9¹A«IàQ…X^Èc›hgjkhÈf×aOZhQ¿JvC>;3ñ-Q)%½Ù {)Ö4>?\JTh\3dgÕk*iÞh0bÿ^#WOaG ?x81/Ù)b$"" ñš  ^ æ!?!¬"O"ß##Y#Ú$%%–%ç&&ð(À*Ù/249:q?èE£K¥QôX²^_cŸfohXijÎlqmÕn½ožp-pÜq2q`qAq)qq9q påoðnàmkšhôf?ak[õTÌMÊFz? 8¥2Æ.|)Í&ü$¾$N#ó$ #®#"_"!®"Á$']*i/¶5–=^EzMWTjZ`d&hhËi€f¯cÉ]"Å""6"‚$&Æ*¿.N3Þ:AB$JQ>W•\/aIdUg$g gc“_‹XPFÛ>¨6^,ý$ÎWö -ef# -G8BíMÀVs^©c˜héiþj f/bí\áV MèF™?V7…0Ž)¡%^"!? é­ÓÚ  7 … à!1!D!‡""ô#¶$…$Ø&''ó+¬/é59H=éBÜH¢NØTÚZœ^Æb7džgËjal¤mÜnýoopp-pQp&oðo§o©oVnÛmli³gÂdaS[ýUýNµG@õ:Ñ5Ô0¿,¯(?%¢#ë#Å#;"û"ˆ"G!¯"D#Q&G)W-è27è>ÙFÊNuTÄZs^/bVd\f0e?d›`X[$RÂJqA&8z/¤%Ïa¼{ ^ ŠØ')&3r>BI:RfZË`NfŠhëj Q v Ê!‹"|#y#Á$À&>)‹-k25×9ð>WC½I›O–UFYÙ]êa9e4hwk\lùn€oo¾oÉoÊodnönznZmÞm.k„iµfûd˜`ó]WhQIÿCL=ƒ8+3¿.â*ó'$ã#O"ý"D!ñ!Ž! !D"n$U(7+ä0ò5Íe5’,G# „ :²^í K®l (Ã39>HH|Q®X¨`ge i hÀgócä`2Z’TÊNG‚@²9Q2ç,þ)p&–%"´ þ»Eše>ƒä[…Ñ g!/!£"m#4%%'”+ .1á5©:œ@FKëQU½Yð^¸bòfûiœlmnnnImím”lØlSkiºg>dÍa]^X=RÎL’FO@z;6‰1´-”)Y&v$ "ã!t Æ 5 ;ö } Ê#"&V+‘016O=D²L{SeZ^Jb\c‡dcbÔb ^hZR_J@@ê80&´Î”Ÿ¬ô:¨ ï€"Ó,ï7ÖBŠLWT.\naògch¦hëeµc^xYSIM3FŒ?±92N-m)´'©$Û"® –pz9ÅÐ •ø`Å < ”!P" #º%u'ù*D-‡0ç5¨:Î@¾FzLQKVH[¬`cdêgðj½lmMm†mÛmalÜk¥j™hµfºc–`p\WmQÕL)FK@…;V6^2$-²*)&Á$œ"°!­ bÂX%Ú ³#Ï'{-22|9O@ÔHÖP€Vç]xacdÂdÝdÄbE`¹\*VRM…DÔ;•3$*¶!WÓÍ _?Ü»À £ö&j0¨;xEÊN‡W]BcâfÉhŽf£e%ai]®XLRÉLuFf@93=.v+o(%%–"° ¸-˜ÈiÍPðR¢Ú ƒ!t"ù$Y&('Á*[-916';«AF›L-QºW\–a|díh6iñk®llk´jÌhãg+da½]ÙYÜTïOêJ‹EO@9;6o1Ë-ý*:'%#|!Ì ÉÀl2Œb ‚"%Î)×/ç5ó=QE L³SúYÏ`cfe´d¢cØ`´^0X„QmGó?66-¡%SQ® ¥ C <² V NúR )Œ4`?3HåQÎX§`bdèhSgÓgVdeaé]ƒXŠRkLôFî@)93ˆ/ *þ($¤" ­pJîdyÆyšÐK !!"Å$M%ƒ'‰)Ú-–1Š6~;:@ŠEýKÃQ­W\g`nd^f¶i i¨j,igÁeFc_Ç\HW±RûMÔHÑCù?H:Ç5þ1¨-k*A'R%g#p" ˆ›Ï¹†d!=#d'Æ,B2×9ÖAÆI~P—W¡] béeZfcdbÂ_[qTvL(B90{'«uë> $°J™$ŸŸ /’w"Ê-7ÚB.KuRú[Qaf5g|h*fdÂag]\WÐRÓM"G(@¾: 4L/J+¯'Ô$Ø!¯·(£Ó«¢9ùÁm !9"‡$%O'(Ú+Ý/$3p7‹<_AQF×L…RW§\4`¯c€fCfègVe¼d a^UZVUQ?LGBj>H:1661Æ-á*M'ú%ï$¬#!è ¬ ¤ëü ý!ÿ$'&+Í0µ7•>öF¸MÖTZ§_od] cñgigÊgmdÿb*]eXšRàMG‹@Ù:43í/*–'Y#¤!!3[Glò§…ù Ó!ß#J$†&'Š)ë,˜0o4@8ï=•BïHzN@T"Y.^a'dd£díbï`à]QZUœPÇKFEÖ@ä! ï è Ù!Ž"B#õ%¢(š+e0/5¡<ÐD*KZQ×WQ]¨aËeMdïcÐ_æ]HWàQ(G°>F4§+¸# ó N ÊÌ Û³ 7]¯ VŒ;(é3¸=ÚFïOßW:_Ddg¬g®hfedåaQ]+W½RýMG·AG:‡4¸/·,5(O%£#"!+!6!!9!u!ð"h"î#E#Ý$ %Û'(«)æ+Õ. 1y5 9…=ÎBÊHM¡SyX•]‡`cOc‹cŒa"^¡ZƒV¡Q¨L\F¬ArCGðMMRåWê\Ù_Òb™b˜bP_^\IW~RòMpG°Aº;Ê6Ñ2+.ø+ß)Ú'&R%]%u%Ž&&x''Ë(Û)É+O-/q1~4¹8U=CX9Ã5©3!0Ž/0-¹-`-T-é.E.ž.Ø//]/á0s1Q233J435’79h;ð?fBÈFóKHPUY^`ÏcXcb†_*[’VAQ6KmE‚?94Ÿ0-ˆ+>*U)(¾(‰)9*+3,1-F.W/—0É2k4 6}8;í@EBJRO6SÈWÚ\·_Îb2aY`0\WYS(L_C@:0µ(" ˆXÝ ÓòÁ³â_‡Ù}Þ |‘˜4&¥1:ÂC™L`T\|aüffƒg0fWfrdÄb]tYKT¯P8K“F”B=Ø;8ˆ7J5Í5@4á5@5¡6,6„6Ð77Œ8)8ø9ª:{;6<`=?ŸAµDšGtKNåS/W—[˜_ªbdVcÝc_e[`UŽOýIÞC¯=Î7Ê3S/F-u+ò+ë+Š+ú,{-³/0›23ˆ4ù6W7}8ú:‘=%?ÐC»H$LäQ TÚY\°`©b bI_~]BX¬TL¸Dg:¯1) ÚÅJ ãNã¤Áð+ÛTyÊ—ÖúÅ üm})02â<*D«LHTø[²a¦cöeTdÎe¿e|daƒ^YÇVR]N}J¼FÁCÎAm@O>ÿ>k=Ê=Ù>>º?*??Ð@<@æA³BOBñC„D‚EŸGiI9K«N QTaX[Þ_9b˜dqf8eƒdˆ`Í\­VÞQRKmE€@:¥6Ø3t2:1<1 1¹23l4Þ6_89Ì;b<ñ>9?"@gAìD®GÏKÍOËS…VµY—]n`b\a…_â[²XqRçL–Cê:í1³)8!ħ g dí:ý Ÿ"¿XW†€š.J'} ¥–!N*Ñ4ª=jE9M†TÑ\aUdad™e©eËfde\c†` \¨YUßRâO{LªJ.HÖG›G0F¢F˜FFüGVGÅH H{I!IãJ}KKuL4MN¦PIRuT{W YØ]`KceÄfþh5g%eÌañ]¯XRÀM`GøC8>e;*8E7g6¿7o7è9 :&;Ä=z?mA^CDªEæFÏH=J)M"PAS§VÍY¨\‘_b2cBcC`>]^XaSîLêDœ:Á1)!3ä m‰íhF¾Q$Ý”sBDj¦8Îæ9ÅMb­# ,–5ˆ=ELTlZñ`/b)cµcôefe÷fd:a¯^\[ÍY…WTÈR‡QPOÃOƒOOjOiO€OÅOóPTP×Q~RR¡RûSTKU£WYZ¸\Ñ_%a»dqf“h‹i'iÑh’gcƒ_•Z­V Q¯M6IIEFB~?å?>c??š@ÐAïC‘EYG^I_KLM¸N­P+R=TðW|Yâ\^`‚b c¡b›`\$XyRÎLÉDW:û1I(·!tâ  > †ò%96“ð—y’; <ŠBu³Þ¼ €‹ˆB#ô-5Ú=1CàKÂS&Z—_6bbc1d¾eÈgxgºfòdb…`W^i\ß[CZ*YX¾X¨XØX¹XXHX2X'XhX½YFYÈZNZ©[9[ï]^W_Üa>bãd¾f²h¼jkJkLkhjhŠekaö]ÉYñVFRšO[LIŠGF,E’FMFëHAI}KBM6O_QqS6TÕVW:XŠZ1\7^/`"bKc¼e1dÇcþ`à]³X–SüLíD¶:Ë1(O À Ü,åÆ;_Á÷»h|˜K\j£l£±ž $d-64±;WB%I"QXWÿ]B_a{b”e fÕgåg4fducIb}aÆa?`n```h`u`5_Ì_____6__á`N`¢a'aÌb¦cndVe»h#¥+Ž2ü9€?üGµO1Vs[:^Ç`€ce5gxh±i€iAihˆhQh*gÍg®gîhDhih$g°gffQf,fVf}fÑggˆhhœhîi2ijjžk$k§kÕkÝk‘kyjôjlhþg3dÆb…`E^ \YÚWéUÌTÐTIU-VW¾YW[;]&^õ`¿bc4c¦c¾c¶ddÝff¸g*eˆc _[¹WNSCL’Dv::/ù'‚É, £ý¼ˆ-*©&†êËyap•VmU ÿè!r>Yu$ŽX W¢N"Œ*o177=”DMKÿR†WèZî]Â_´b?dfóhkiii—iýj/j\jŽjîk=kxkVkj•ji¸itiaiKiJiHiGi_i5hÁh+gÄg‘gggZgEg8gg$gxgÉhg¦fÐeOcòb„a8_è^m] [xZÊZ‡[v\q^_ƒa b…c¿eeÎfcfeudÅd´döedäc…`\IWÉTŽP/KECN9Ó/&PE è ûHöŒJy·×—Qk™—+j8ÿïÿù/GVÿäsĪb CJ†!-(f/ 4ß:¦AtHXO/THX–[]d_Œb‰e~h7iåkDk«l l/l“lômPmmmrm4löl›lLkék„jþj‚iÍi"hfŽdþcªb¿aÝa[`Æ`œ`c`ßa¾bùd!d¯dÓdbdcÆc“cFbÍbCašaa¾b¬c“d¡ežfig g•h,hXhbgÜg5f_fe%dau^QZV9QèNKH A¤8D.p%iÎAh ¡1ÀkŠ_¿et¾Ì­oT•Í¢VŠs1ÿûÿù8v+xRÈ; ²T çã&ð,À1Æ6ô<¦CQI‘OERÈUDVëYŽ\Î`gc_eÀfºg†g±h%h†hïi0i`i`itiIih€gÝfÏeÐdWb×`Á^[[ñYÃXHVêV@UyUfU@V/W—Y¦[‘] ^$^Ê_œ`ma]b#bÅc!cgc¿d\ee•eÚfeýeåe­e–eOdñdCc²b£a¼_Ÿ]Y(UUQ=MîI¶E->%5Ó,$1~ˆØ <Ѹîì"—¶ž»ß±xf‡Íè¨@£#ÿØÿèÿ©Wî»ë Ô ‰Ñ¤#ï)a.2ˆ7á=ÜDZIˆMoO—QÔTCWŒ[^`æb·cFcæddJdedsddÀdÖdÛdDcŽb&`Ô^Ì\³YÛV¯S…P•N•LÎKþKJçJ®K×M‰PGRäUdWŠY^[L]4_GabÙcïdÕe3eÃeìeüe–e#dycØcEbâbcaØ`½_¥][gX5TçQ%MÎIìF1@®:Z2V*"Y¶’ ‘Š`Б»AÕÍöøÓ„Wu¼ëߟ+5`¥­`ÿóÿªÿ¸ Xÿèÿî‹r„&÷ ï°=V!2%Û)Œ--1¤7q=VBŠEÌH"I·LO)RÇUøX‘Y¹Z²ZÉ[[ZçZÎZý[["Z‰YÊX@VÈT†R1OKªHEEBòA@Q?X?N?!@hB3E5H$K.MëPgRëU^XZV\ ]ü__A_š_k_5^”]å]\R[¨[6ZƒY»XVNS‰P‹M7JOGSD®@¶<5‰._&û Kêð’ Dó“½Ízæ=žZ\–ÙỚD;L… Š1ÿ·ÿ€ÿÉ%ÿöÿÆÿ¤rÊÕ<P ƒ h3«Š u#—&ê+80w6 :­>G@dBD GwJjM3OP¦Q7AvDnG)IïL—OkQÔT/U’V¬VêWKW6W(VµV2UmT¼SãS;QþP{N"K®HáF:CœAp>z;-6 0J)™#qoIà “ÝĤ‡vÇn -]MáoN|µÞͨ¨UKFWkŠiÿöÿ‘ÿŒÿÓ &ÿ×ÿéhÂç;‡ f‰:„< û$¢)H.G2Þ68›:-< >@\BTDEF,F~F´FYFEuDÏC«Bˆ@Î?<§:.7%3Ü0¾-Ò+ê*1)(À))_+-/0G3O6a9(;±>S@ÖCwE©GÆIJ,JŸK2KeK£KrK/J{IÒHÅG×F9D?AÃ?_=1;w9“7Å4[0*P$p`Â$… ?¶,oໃì,xn¢Z^—®°¢›¸ZWLGLnfÿ»ÿ}ÿÿÜÿàÿœÿtÿóÅöO¹H fq]Åu¾!Ü&B*L-è0I2o3É5V6–7Ü8å::¼;a;r;Œ:ú:W97²5¸3»1.V+'$I!AQŠåsا ¾#Û&÷*&,ÿ/¥2m5 7æ:H<˜>3?¶@†AeA£AâAu@ø?â>É=M;ä:/8L6k4Þ3V1ü/©,õ(¬#Û§è Èõ ¸ ‚òs”H-N$p†=Ãveu“lq¼NWSMELB+ÿ÷ÿ¢ÿ|ÿ¤ÿìÿîÿ™ÿ‘ÿ㛡S‘ n€Zq6#&Q) *Z+„+÷,Ž-%-õ.É/—0 00;/Ó.-I+E)B&—#ß ­=)M˜ø4~Ìd8ú !É$e'")à,±/:1¹3‘5Z6P7E7[7d6›5Ä4\2ð1Y/Ò.o-+ú+=)û(z%w!âr ‰@ ² æGùw¢i5ïè)uPéˆk{ymH:YŒ±DKKWZT?4ÿÈÿ•ÿžÿÍÿïÿçÿ¨ÿuÿpÿÁ¡ø‰Sâ( r È ÌÎÎa{µÄÅ!f!ß"B"Q"­#!#œ#ö$_$@$"õ!á JíŒÎâ2ª  … õ K ˆ   – šjïhöš"]$í'{)L*÷+«,`,.+ð*ó)á({''%ñ$Ü#î# "!Y8ð ™ Ê†[2ì+þÙé"fz[½‹xwZA/?h“ª7<?Yg[<.ÿíÿÇÿ²ÿºÿÈÿÜÿèÿæÿÔÿÐÿÒ|K³¯ì &  8 UØ  " ˜hz|‰¯ŠOŠ·Zõ-fs k ” ɘ†!¯ÛúÝà © ŒÄÍäû2•Öœ à!3!!8 ß  /ƒûP’<ͧI·L Q • ~ȼ7(õ þÔ±Ë&w‚Eн³d2"0[}‘/>?HE7'+ ÿúÿËÿªÿ«ÿºÿ×ÿíÿíÿÞÿÅÿ¬ÿ²ÿÒ4Q3qæ*Õ„¤LÝÊ 6  ÉûÂÛ$þåˆT ‹ r O ý§_!# ‚ûÚµÔÚA¹Àâmë • 1 ôܵ“Öß(yK ¡s„ èL ­ ÷ NÞŠnI5åM LtŸ¤­Ñ [wW âÎÌ¿ŽQ+Ujji%<?5!"ÿýÿÐÿ²ÿ²ÿ½ÿÔÿáÿèÿñÿõÿöÿõÿçÿü>„¡”DxGÙžèéÄ·È™  ™ Ï  ì Ð ]Ýl•¶ÉÒ aÿ”e?IWpn•þ|aQxйÿ A … q ? œ ÷ & û µ  N  ±D2•+¥æìù2ÕŽ“l^{ÈViAææñç¿…N)(2GMHF+89) ÿøÿÒÿºÿ¶ÿÎÿëÿþÿøÿéÿïÿùÿñÿïÿû<6ÿÛÿ™ÿ¤(Úr¹˜\Brí]É'i´×øØ¨?Û[×QÂe)! 26$ÿûeÚ{ÿ‘5መç 8iˆ®’qâ%3J©;úÉtý|*7Wd`GQ‹â+C=òäôÿí»…Y=;;DMJ?'<?2 ÿÿÿÙÿÀÿÊÿî ÿêÿëÿýÿü2jwMÿè]Î ³uWU}–ÎqÎ/ ÖšQÕ¸³©•jKG[lkK- ByÁìR”ËL€‘²ÏîÑ—Š#ö!f‰l‡3Fv™˜wWKN}Ä÷óù黑sa[MGON8 *CL;(%ÿÖÿ½ÿÕÿýÿäÿó&:O= ÿÏÿžÿ¡ÿÓÿÓÿŽÿSÿ<ÿNÿRÿuÿ§ÿì)Zƒœ¾ÈÀ¦‡¡µ­„T?G]aBÿëÿàÿíÿöÿäÿãÿáÿÉÿ½ÿÒÿìÿæÿßÿõ ÿáÿªÿnÿkÿÿó;GÿÜÿ¬ÿ¿\ˆ€nQ>I]‘×& ûòôðÉ£ˆ‚gL?0ÿúÿü2PP3 .)ÿøÿËÿÆÿî'AÿßÿØÿú <9)*8QS.ÿò..%)59Kn¥ª¦ªÊãâÏÃÃÌÞõóÔ©Œˆ•ŠgJBRe`QSM/# ÿý3ct`(ÿïÿàÿ÷AžÍ¹sH:8Vr¢ß)$ üó÷øîÓ³š˜“uJ*ÿóÿüÿù7JM8+ÿþÿÖÿÒ2/ ÿêÿäÿú#ENB.270ÿùÿÿXŸÔÙ¼–›­¨¢¦µÆÙîòè쮬¥ŽoOBKUF,ÿóÿÞÿßÿåÿØÿËÿËÿÎÿÁÿÂÿÛ,?3 ÿéÿà%[š°™fKD5Gkªï# íÝÏ·´ uBÿøÿÿÿù+KL&ÿÿ-(ÿúÿÔÿá 15ÿìÿÞExn<-GD0"ÿódÊ,J1ïÖʱ¤¢°½ËÕØÛÕÐô‚gKALYQ>1*%*6<1##+)5YrnO6  5gyw‚ƒzjd_FJqµ÷÷÷þÝɾº³§‡Z1 ÿöÿõ '3" %ÿòÿû//ÿúÿú)e|lT;7<5+/=;.#F”ù:F÷Òµ¦¯ºÊÒÒÐÉÆ¾±š‚hK?DPMB52;GOG0-1<YcN*Gp}˜¢—{d]WqžÒó ÿì×Ì¿­’wX5 * ÿòÿøÿþ   #0ÿÿ3E,Fp‡‹nK+#(@ZgbSI?_¤ñ!,<+ âÅ¿ÃÐ×п­¨§£•dLCEPVULGOVTC'3:;E?+4>Ocrˆ¶ÌºŽjet Ëêðô75íÎÁ¾º¦€U7'1ÿ÷ÿùÿþÿ÷ÿù  !:2!AIEELXh~~dC87'$1GQWdoiqÁì5<0 ïÛÓÕÓɲž™›™‰oVGILXhmeUOH<//FOKPF(6=I^{–«ÄꌌœºÚõ .7躞”’„e: 0ÿþ - +83 "GfseJ<Soo^YN4#$1-7X~”œ¢®Áã0;&óãÛÔȱ˜™–ˆkTO\bk{~sXB2%$"-BTVPUR?/0=@Po•·Á¿ª•޳²¶Ëë $Ø |k`V@&ÿÿ  -#ÿÿ  &49. 2^€€bCLcf_]S</:J>8Gh‡Ÿ­¶ÁÛ):*ôçãÜζ¡˜˜š”|im|…}hL4+*4<DNOG<<=2+-<Ib‚ µ·²©¨°¿Æµ­ÃéýÆ”jL<"    (%ÿý $#!-66*>j€qRKPQRSO?;PdYHBUt›»ÐÜè+ìèëæ×¥§”‚…”ˆv_J<>CMQOLC5**-)(*;Uu‘Ÿ£ ¦±¿ÆÃ´›”©ÉâØ³|YE2#ÿ÷ÿþ Ѐ³ ñ ô2êr«i #p¨£Y3¸nk¸úÌÅê Y¿4œÞ :b$Ðn¹¢ Ý!¶" "é#"Ò!k 7åKÉõ¤ Ð “ § Í Ñ     ÿ  L ’ Õ   ç Ÿ d j š ú D ‰ ÀXÉ/»QûÀU™Ûÿ2`¯åEº=ÏÊ–]2ëÝ˧‹¡÷Jº ›  Ê É‰{?ü¿[H~`ëʱ5u:ò¿²Æí}Ò3’í9˜"£Ì'üø«~Ø ¥ Õ ~  ü¤` ٠ž £ µ ¹ ù     % 4 J q § Ì í Ì |  ã ê  K X U X x § ö 7 š   Z~Å P¦”2Ü£o*çZ¨µÂß$}ï÷Ëñﱨ»Ñòï%€< òDLò';B?&$é‰î‰Å¹V Ñ ³%b¦@{E*`o§ñiÔg,É!'AE<N‡ÛlK¦Ì½hUì ­ à L ~ Ú ÿ  . M h „ ª Å Ú Ð Å 8 í Ä Ø  , -    + @ t «  ` µ ø U ô‘gFCI.ø‡ˆéó$ UrTm î ÖŽp¤ãû·zËݯ`9˜¹^¢æ%Ç͘‹ÞÁ¾OvÒ­^`|Ù)`Š@ÍCßÉß1¾ìn2zŽ6 —  aÌ !  ³ Ð ý ( O m • ¢ ž v Q  Ü ¶ ¨ È ó  &  û Ø ´ Œ ™ ¤ Õ ! o ¢ · ¼ Ý  ”  ¼ f8#üŸ*´Œ€ñ´Fä{ÿjöšsåë|õþÐ#··ˆvOø&IŠªÙ¼t‘t 9!M jºÅV0¾@)-) ñ­qê+]ºY ОTB^T 4 è d MŒ¡  I † ± ×  B b m € } u R + ô ³ Š y Œ £ · ¾ ¨ ‰ [ -  % T Œ ¶ Ç Ç Ì á  \ ½  • G —,ÇÇÔz…zÑK5RPH4bx.Økâ>þqvgØ\Q,w±³œþJÕ‡µ‹Å — ¬ÿOÏŸñHºx%¢ZÎE¦ € „  Ð €  z  ® E à ’Lf„¸Ñäù  M u ˆ ƒ ƒ Œ ‹ ~ Z (  $ H f w e E ÷êçû  ) [ “ Ä Ý ï í ë ì ò  ÿ 3 š 0 š  n:‘C¸ÂŽò‹ûP‚êûÜ%I=|.ˆ maÁõT“Uö¤;æ…š… ‘ “ÌS” qz_›Ùa ü © . ¶ Z  –  ¨ B Ú £ ‘ ˆ M ê̤Q×h# 5Qk}‰’£ÂÝéëâý9 Q | b = áϺ¼Ãå  ; R a } ” ¢ ¢ ¢ ƒ ˜ ã P Õ  © , ,eðu¹ÅSª7äQ«†5¢h –8ÇQ$r]t‡Bùât†P²Š ‰î¦ìyª÷— « k q — >   Õ ™ d )é©b:2n›ŽZW+ÞA‡ÖL ÏŽÊÒÚÙâö1TªÈèK¶RýxÈ»£kG+û3q¯Ïè  C e { – ª ­ È U | — ´ ù @ Û † ˆ£Ã„1É{3ñ“6ÈÉ{iqÑGVûmŒˆ ` @ uVã»ÝÓ:& ,  £ ÁÙñÐn½ y éÆÌÇå"YhY|Xù=uÍO07HTSD.'4Vp“½å!:ƒàz/ÍIixO/ áâóI¸8 á  4 A J o ‹ ƒ ° Ø 6 l ¦  Y é “ b1×C©A¿Šl-Ë2ÀvúµµÑ¶XÛ°] ² Þ ó ¼ Ï »†ç:}| " L Ü ¨ °Ž' Q¨ÓiôžÓOMQtmfzŠƒo†`üS§-ÛìTz{nO829P]q«¿Óâ 7œ!´6x¦”{Z@TmÓUÿ©pujb‹Äãôþ  V § ê 2 Î  Q é h Ý  O ®8µYà™ p  ó ÿ õ ß ² Œ ¬ ˆ ô " d %  · ­ ¥ P >  ; L -r#é൚°—F—ßCÙº XŒ‹\N)çœsDúŸAÓáDU? ú')2InެÅá÷3þh¬âà̯£¹ÉnÔ…0! 0Ÿ%¨  , K c ‹ Ë ! e … Y [ ® 4 ’ Ø  I k ¶ È}-  Á F  # + ; V b „ @ Í 4ô·ä I ¶ ó à väeÞUÞlá°x#Ç@œ„?ãÞyÔøó»¤lªcG77+ýðÙ­–š´ÅÌ¿ÎõIoŠ™°Û 6Nce]Yf‚­¿”5à 4º|a*’À¶Í  ] ­ å Þ ¤ Š ¸ : Æ 4 u o \ N S    ž ç * É ž ™ ´ â  ) - Î 0…𮑎x)ÄDÖqÿ°ƒiC÷’—?øïØ•U?D?/ôëÛª„}™¼ÐÍ©[QK3ÿèÿÑÿÏÿÞÿåÿáÿÌÿÅÿÍÿý3{Áð,)òÝìC„ºéèàšÖ*”æ$B–þ¢Õ-vÊ ( P C ü ' “  ^ m u \ ; 2 I œ c )úÝñ  O y Z ’ôcÒjYM9öœ–Š;)(÷‘ §e‘ó\”b ‡#Þ˜r‘²ç D›ûRx‡jR6$ÿß´‹n^K9 ýCp ‘Œ_Ä|uà(e§¦"À‹xºv¢Ô¥ºšˆÂ cØ=–¤pR z É  í ± } e g `Vp¡ÂÚ–+xÌ,¡=Ê‹kji5ÎDуB,8¢—‹¿=Áã­ vÿ½ÿÆÿÏZ¼oƒð^¹ <mx}dS+ó¸rQ0æ²v9 óâÆ›|:àiÿçÿ˜ÿsÿÿÁW—È´3ÿ¿ÿzÿcÿ¼-¿{ð‰(ÕŠ{¿€1ª§ŒÊPë V Š _ 4ê v{ïáÒ׿úîáƒMŸë0¡õò6ºP#*ñlÝ@×oÓ­>²]{¸LÙqûoÚ=¤‹#Ì” i  ¸ ø $  ì £ H Ý ‡ D Í­lrÅrí`é{½QÉJâ¨h]\ŠÇø(ðjÿÃÿ1ÿ3ÿ”Qè8C<]ÙŠLÞ3c·x4ƒ¤òh zŸmP'üî &)!àœdûzÏ,€µ.×ê@BÁ¢À§^ω ï‡€Áë„+ Ý¢f…¨ì > ä Š › ÏCÄú wΧ—+¤ìB±.Ú±\ Ö Ø Â { N4$4¦Aé™6—á'rÿÑÿõA{y ÿfþãþ¢ÿÿ¾}ÜÏœ“ÖŠ`\‰­'|ºŽ ^mycD<gÚáÞÌEçœBÚ[Þ\¹dUÛÿìÍÆÿuÐÌ–qžû¬^qÙ=1 Ç o ú^7ü;__oÑF@DÉj?#’Ð7„2ý]¦²¹æ.ЮfÞ»€êbÑ= Ú h † æ Ñ Ë ¦ QrsÃŽeÑ|˜¼&Yÿjÿ ÿL¸øÔ|@’]JÀæ^Î7iŽÒ1Ÿù;MNQ}!)0â™?÷¯b¼fòºÇ äSõ•0ŒÖåøè¡ 3 à Ñ;I¤fƒêq    +ë!¤#T%(&x'Ÿ'Ñ'Ó'!&Œ%ª$È#Æ"°!Ó! Ò Ó · RAvÍñZvÒIå©Mˆ ® C ¿Ýá!~«%)3Üéÿßÿ'ÿ-ÿ…%– =[À%AIœSvq~Æ;ªù%8`X^ohG#÷Ö­u@ßÚò1^Ú `» p [ -ÅÔ¨ljÕS$ה߯ ‚!F"!#J$|&'•)W+ ,Ç.G/12!3 2þ2²1³0Ò/È.Ó-Û,Â+ë+6++ +-*ò*)/'¾&B$„"Ü!!B˜ t¿èÇa@è 6 lDwÂx2AÂÿoÿÖuô»Ceô‹ÈÍìk“i68|Ò÷Ð×íèÚÒÒçâ©kQg‡°·Òçp`–U m "î{f\µ-Öœ@ å"¢$X&'ˆ(ß)ù+,0-h.Á01{2ì4j5ð7R8’9¶;*<0=<Û<};z:˜9Œ8’7‡6P5W4…4J4\4w4I3Œ2½1z00.À-p,*¢)<(&×%¤$I"Ñ!Eämë ë Ø ”È«tH”ÿùÿkÿ~&e\ÿû=ÊPŒt7NhKë kÿ¶¶.28Jl ®tGU¿;Ë “P³ Ñ Bôb'|"Û˜!A#?%R'X) *}+Í-N.ü0¿2v45t6Í7ý94:T;n<†=¦>Ù@AUB‰CÔEtF¬G–G†GMFsE½DÇCÖB²A^@6?9>Ô>½>¸>k=Ÿ<½;Š:Z908"7.6(5<4‹3¨20ñ/,×*×)'^%”#°!!mkÌN ¦ p ÇØÓ`™`StÈ™O!Tí_?Í›”˜cUŠþ}»°ÿÿ)ÿ_ÿÿ¦ÿÞ 87ÿøÿôAÝØ†»Y¢ ¯ 0 è¤×"i%&à)-+‡. 062 3d4¬67Ç9Â;¿=’?N@›AÓB²C‚DSE:FkG¬I4JºLfNOÉQâS|TÀTàTÔTSXRTQYPN¦MTL1KKVKJˆItHIFÖElDBÏA¾@™?Í?O>Ù>P= ;u9"6Ô4^2!/Ù-Š*ä(8%!Éê£o”¢ ý È!º;ã.q~zÿÅ$¬Ï6ÿïÿð B¡ÞÝÿ{ÿ ÿÏÿòOwvzlï¾6‘Qè + Õõ ¦âÞ!=%)’,˜/'1W4(6ä9~;K<ª=¤>Ñ@rBeDšF¶HrJK L L“MM²N“PQ‚S`U9W0Y[]?^î`R`ˆ`‹_»_^][ÙZeYWÖW'VÀVXU¥TtS5Q®P-N¯M8KôJžIÂI.HìHºHG EC@e=Ø; 8?5T2t/‚,ì)‰%y …oõ&\ ‘ áx²€ÅhsÁ$ÿð$j‡AÿåÿËÿë )GxŽÿÝÿçÿðÿüCd7SšÆES ¬ý…K™A"a&ý+©/ä3Ë6ß9Ø<|?„B D}F GZHyI×K¥M®OÔQßS{TûUïVÆWfXXüZ.[Ò]l_/`òb¦d?eÁg‹hÙiñjiÚihRgdf‡e]cïbŒa[`²`N`_t^]¥\y[CYóX¨WtV;UFTsSØSORŽQ³P:N¶LvJ*G4D6@Ì=G9Ó6ï3«0+3%ä d9'±¹ qÜ®IK¹ÿöÿ¡ÿ¿ÿôÿÆÿ·ÿà ÿúÿâÿ÷ CÞ‘IÿÞb9:9 1 4î§ÁÜ!$å)-¢2O6À:¢>oA®EGËJ—L®NŸO÷Q=RsSÖU}WBY Z¾\]Z^D__þ`ðb9c³eTfÕh,iŠj¡k—lZmYmþnnKmåmlwk¾kjhÜgf‹eøeœewe!d«dBc­cb1ah`—_Ó^ú^]\[YüXÓWÐVMT¤ROvKúH9DQ@í=˜:T6*1{+Ü%÷ ªB»ë œú”a´]gÿí,@ÿÁÿËÿôÿðÿìÿý=°V¯wçåÉâU & Ïž¶{!¨&?*Õ/c3ý8Ê=XA¥E…I™M'P—S7UÀWšYZë\ \à]Õ^ù`Ja¯cdeeëfÂg±h«iækJl´nop p³q9qxqérrq«q(p‚p oŽonTmXlLkbjÑjaj+iÕi—ipiQi hãh«hkhBgÜg[fueŒdQbýa¡`‘_\^\ZVüS­OÍL8HuDÑ@<,6Ã0Ï*Ê%V ºW"RË O_;:’[Fÿûÿý9ÿÈÿÁÿßÿñ + £ ) 3  " & & J  ñY™ "s'^,0ý5Ï:´?IC¹G»KºOzS‹VíYé[ò^_—albšc]c£dd´eˆfg†hniEj jÕk¦lpmbno p«qor-rrÝrïs+s%rôrrq¢q[qpÁp.orn–mÑm6l¤l@kÐk•kkkukyk™k¾kìl3l:l!k‰jôiØh†g eÙdÄcÁbta%_\¶Y€V[R‚N”J(FA.;ï606*®%‘ ñ9" » -!îa€]¨7ÿØÿÚÿó&*0ÒBŸT4™ÊÞµ á&s,O1‚6};ØAF&J†N•RUåYh] _ÌbcŽeFf’góh¢hæhài.iÆjek+kél©mmnn­o0o§pTqCrGs-sÅtHtt´tËu utêtŒt@sþsÒsœs`rärHq€pÇpohnãnkn3mûnn nHnnìo`o‹oo n³n m?lr‘sÓu4v:w wfwÏwûx#x3x]xfxDxxx-x`x†x¦xiwõwMvÝv`u¿ut†sþslrÊr%qtpÇpojn—m’l†kƒjôj™jµj¸jÿkTkÒlelÁlùl¸lkÁjüi1gBd `Ú\ÅYTvO‚IÐDB>‰931,¿&D Ÿc ‚Å•õP”·j)Go<<8:Ü8ð7Y6[6ø7€9å<µ@ÿEIÔN·SÆXë]KaSd-fèhük|m:n›nþoToJo³o‹nëml9jÜi¦hÅgÎgfgg‘h3ižklínåpêrÔthvw wóxHx¨x£x…xIxmmÞn?nžnqnYmmlvjTgùd a…]YvTaO'IWCÜ=Ò7j0) #>^+\ &|Î^° -FHFDáC?AéAA±BID•GRK&NRhV·[-_–c fgõjkÃmn®oeoVono+o!ngm:k|iýhsfÍeYcÖcb‹c c†dêfRh|jÖmgoÑqÏs¼u vVww½wáw×ww~wqwMw.ww)wAwsw¶wÔwÊwŠwqwvuÍu trùq¶p`omýlÿkôjÙih„g©g\gg;g;g¿hzi­jßlmEnnÞoo[nùn¥mil i§gBcÿ`à\ÇXS:NHB;d4q-’'+!8Ö6¿ ähS¢:»wP0P0O3MåLÐLL°MbO‹R UAWàZþ^Ïb±fEh·j·kámknŠo¢ppBoÝo”nÌn l¤jýigNecban_…^‘]Ü^S^Ã`(a„c¾f+ikÖnXp¯rnt-ubv¯wSw¼w¤w®wwewgŽebÁa(_§^×]ã]°]ž^c_L`”a‹bÁd!eçgÃi¨kxlônlokpjpÒq)pïpÖpo+m„kÿiªgrcÝ_ØZŠUOœIBÛ;ÿ4â-Ð' X¦K3 ö Ê’žÞ_ˆ`P`t`X`_ù`€acbÉcýe>f>gºiøl m nDnío@oÝp poDn˜mkRóO¬LÊIÉG½F ElDÆD¦DEDnDzEÖG±JãMÿQ¡TüXÇ\éaBeiElÇoqr"tvw@xNxÀyQyƒyÆy‹yqxTwtQqJlîh‡c•^©ZU^Q¸NDLIÙHëH:HŠH IiJ?KÖMxO¹RT WYÌ\t_kb§eÚhçkVm¹oIpÅq~rVrgrIq€q o¿n@kh|d·a™]oXRvLmEÙ?h8°1Ú*ò#ß}L… ªjÌlYm¤n‘ooÁp6p­pÁp‰p[p”q qwq©q¶qvq`pÞponÿmdjgg&bý^áZÈWShO{KðH¥FCcA‘?÷?<>~>0=Ÿ=›=ƒ>Â@‚CŠFfIÓL÷PÜU5Z-_c±hk–o8rtÖvxxˆy,yFy~yxËwYuÓr–o iødÜ_(Y€T/NÓJ¶FÞD¹B B AœBBHBýC¶EFqH{J›M4OÀRUX [Q^öb›eôi=k®mêoPpöq²r&q§qMp?oImakh1eâb°_YõTÓN×IB¶<4Ò-Z&L{l…n2o®pÊq{rirósWs3rÛrr¬rðsrÝrÇrkr)q?pYn*k¿gÜcÀ^äZ1U•QLýHE Aä?®=8;€9ì98^8 7y7P6û7Ø93;è>A×DÏHæMŽSOY"^Ädhflápitv;xx­yXyKypxÞxbv¡tÜq%mgaZ~TN;HÃ6ð/<'ß!Ë„mn£pq6qørÿs¡tsésÄsšs¶sÎs»sjsEr©r plnËk¶h]c¬^ãY–ToOwJwFA´>„;Ã:7â6f54s3ø3Ò3v312 2î3¶5Í7Ô:Ê=PAcF(L‘S#Y·_ÆdõjLnŸs uÉxx±yOyy xSw®uÀsâoík|e^XWPI­C+>8Ò5þ3 3º45–67È8é:4;€=>‘@‰B³E8GuJLÒP†TYn^^bºfƒiRl~n¹pÜq‘qõqEpÑoÑn¿mVl/j†hàfbÇ^SZDTëOÂEÚMTr[;aBg•lØr+uixx¨y(x•xhwŠvÂt²r»nŒiÐbÑ[œSKÝD½=¢8 2Y/-,r,‚,ö.Ò0?1Ä3&4y5Ö708`9Ü;Ž=Ç?èB”EH¬L‘Q¤W!\wa+dÙhµk™n˜pq9pýpÕp)o±nõn/ml7jmh8d½a›]X%Q|J[B˜;!4‡-¹nÍp q2rr¼s›t2tt—tøu+¢.¢2˜9@H¡PYX`gmÿriv,wwÉwvâvu.sBq“mßiœc \bTaL,D%ŠDâJñPºVr[m`udLhj;kÄlGm{n!nWmñmÊm\m l khÒf©bê^³YVTNÖIYoo·pfpÑqqŸqúqþrrìs\s.qöqolái"eN_þZŸT!MMF~@:´5o1Y-*F'µ&¢%%ˆ%[&$'H(ã*o+^+ç+¬+€+*ø*ˆ)‚(Ä'Ò)Q+1N7Z?jG.OqWÈ_ƒgumr sóuulußu]t©sq¾ol%gBbY[°TƒLÖEj?G9`52 0J.n-,©+÷+)Ê(=&œ$ÿ$ #r#ä$F%ë'¢*À-À2c7y=ÄCäJ8P™Vm\`¬eYhGjŽk„mmÔn6mÙm–m+ml’kèj^høfEc!^ßZ¨VQQ®n‰oo¯ppGp pÖpÉpßq²qùq†oÔnŒkðhþd|`Z[TaMvFA?Ž9j4®/ò,k(·&`$C#–"ì#H#$”%ò'­)R*i+++J+’+z+r*Ù)Ã(É'‘(—*_/‚5<¼DLT[ÚcìjomqçttTu*tît{sroôm¡i•ez_ŠYQ×JöE'?†;¹8D6\4Q3#211ŠEKËRFXƒ]´cf¶iÔkUm0månamîmklÆl›lGk­jig²etbI_[ÇX2ménZnèoWo›oÚoðoâoþpÝpýpAn lTieX`ZûT®MïF€>í8k2˜.*L']$L"Š ï § k!!©"ç$]&"'Ù)+*F*Ñ+Ž+š+u*y)%'â&^'(_-2)9|@‚HeP]XH`…glÛoÖrfs t!t0t)sEr©põo$k§hbª\†U§O0IÁD@ã=Œ;–9p8976ª5f2â/Ñ,Q) &Ï$ý$g#‹#Ñ$'%í'+.È4@9À@oGYN[UZî`çe9ik.men#n½n9m…l¹l’lqkåkjiph eèc±aK^¾m]mÀnYnôo\o‰oŠo£oÝp¶p‘oŸlíj¬f£b[ÛV/OjGþ@=8‘2{-)¥&#Ð!r < á š!ò#h%I'8)*º+Ø--9- +Í*d(÷'G'z(N,-0[6Þ=>DäL©T­\ïc©ißmWpYq\r®s s†s:sqÑpumxj}e‰_ÎYQSNNYI›FVC3A@?!=þ=‚<Ù;«8á5r1E-L*V'è&Ç%_% $·%Ç&Ï)œ,1g6\<ÒC}J¦Q¦X^fcNgûjÁmznroVnànm-lúlÙl?kmjójdbÕm munnÅo8oAo*oooÒpžp8o'liSdy^óWòQžJkBf:g2­,ô'Ö$ô!ý qÊWrœn ü"™$Ç')v+Ï-t//T/.-Ê,\*±(º(9(<*ö-á3Y8ç@MGÙPXw_¢fVjjnoxq qÌr¶rñsAr‰qÌoŒmVicø]÷XSûO²LœIŠGjE(CÏC)BC@Ú=«9Ô50K,‘)ƒ'ë&%L$p$í%w'µ)ô.'28½?FSM…Tn[F`Üf_iímok¾h`b©\[TÃMëF†>I6i.å) $ß" 3D¨>`LA! "Û%t(O+c.q0¯2È3Y3¢2‡1c/¥-œ,p+-.v2¨7?>0E;M@Uo\°cŒhlm÷oêpÆqàrVrâr—rWpÍoZkägb ] XÕTýR.OOMJÐI)HF¯DÑAE=282Þ.}*Ã(¢&o%t$O$}$Å&–(@+Æ/5K;0BUI‘PØWñ^dQh²l±n{pSpLoÀnœnLn mnlškàk8j©ji5hvgÕlâmInooªo°o¤papïqTp*nðk=g-`‘Y‚QnJ)B¬:X2¯+f&š"Q ’¥Õq 9XK]!`#N&:)†-C0ú3ß6‰7 87ð735w31Í0G0m0ƒ3y7*=šD K¦SaZaUf"j‘lâopq4q¸rZrlrŸqÒq*n€jÖeßa<]\ZWÇUKS&PàNìM„KI&E @Â;Q5¨0š, )6&%c#þ#é#ò%V&l)N,1î7•>ÎF$M¸Tû[Œb|g¯lQnŽpâqp¿o‰on¬n m2lJk„jújŽiØiThýl`lßmÏnîoÂoðp qq®qâpPnïjßf^ÂWDO G|@7Ð0“)¤%V!› oxrÄLò%>4 U"…$'Ï+/ñ487º;<Â>w>y>@<·; 927U6³68!;)@ïF‘MTT.Z­`÷e¤j l‡nÖoÇpÓq4qºqÌrqjq nÞkÄg8bº^ê[ãYúWñV$T#R$P˜NTK¡GnC=›7ø2¤-ƒ* '%®$##ì#Ê$Þ%’'ò*–/”4ã<CcK$RsYK`­f†kÂn‰qcqòqïpÆp9o™nûn$mlkbjáji†i1k—l3mSn¢o§oôp6q“r\rƒpœo jŒe] U1LÚDü=h5E.`'¾#æ ± ŽÌIÛ¢í !D#Ÿ%È)_- 2§7{;‚?PA”CÑDDDuC,AÖ?ò=Ö<;h<î?lDƒIVO5U(Zø`«e"igkòn?o6pOp²q0qqpZoònk—gœcQ_‚\’ZôYhXV‚T¡SP¾NIÇE`?û:z5 /+(,&$Ù$p$$ê%M'-)2-š2d9g@¶H¶P#WH_ezkInšqõrÙs-rq}p¶p!oKnlålk‡j£jiÇj„k6l~mïoo’pqÍrÔs pêo j – HÿÝ ( K!J"r$æ';+iÛf aª]ƒZX6V´UØT S&QàO¿MaIžEŸ@ ;¥6‚1,â)R'†%”$ù$m$ö%/&¾(J,096Ú=úF)M»U)]cäj7n1r's†tUssràrqƒpºosnmlek^j¾jcipj0kšm%n€o$oìrs`s¤qCoIjcÓ[:S;JÙB]:d2H,&&#@!!! !Ž!–!†!r!Ÿ!¬"#¬&E(ß-d28³>\CBH4KƒNšO‡P5OMúL IÛH€G€HÌJ¬NuRVdZÓ_+c^f¹iùl#n8o]p¥qqQp«pn—mmk)hŸd«`[—WŽU7S€RîRQ&PN=LNIE¬A(<«7´2R-Ø*(%à$þ$$E$D%—&Õ*2-Â3ú:ÞC3JøR¿ZàbhåmžrPtGu¢tñtisns rPpôo^n7m[l8k’k2h¸iojÙlZmÃn†oƒqësPs—qnÎijbÿZfRxJAj9U1H+n%é#x!š!á!ð"‚"Ô"÷"Þ"Û"Ó#¬$')Ý.Ì4M:³@«EþKuOPRéT2U6TGS6Q[O[NAM•NðP«SôWZØ^³bqfhâkˆmKop3qpqËqúq*pdnÇmijËgßch^hY;TUQ&N­MÔLðL?KIIºHts`rpUonlâl;kÙhQhïjMk¼m)mÿoqžssEp‚nhkaÉY#Q=H÷@78,0J*Ó%¹#²"."£"È#a#á$ #ý#Ù#Ñ$”%'~*[/5Z<BvHIN7R VÖX½ZXY×Y$W‡UÝTüT‡UÎWkZ5\¾_¹bÏeîi$km´nãp#pòr rqr–q£pšnÃmaj¼g³bÑ]SWjQÇMÖJI1GîG?Fll)hRhÖjk\l¤mjnrpÑr r.o|6¡/)ñ%H#œ"\"à# #—$$V$$#ò#ø$³%'&)ó/:4Ö;˜BHGNgS=XZÀ]"]l]|\Œ[™[5[2\^M`½b¼dãg.i³lnÃpcqq³rrâs2sXrbq!om¨kgçb«\´VOÎKFõDÆB¼A¥@R?!><…:Ü8b5Þ2„.®+ 'è%û$6#["I!õ!¶"Q"‚$V&6+>1_9áAãJLRªZŽb£iorrÙuŸu™uEt-t2sÜr±qoÄn¹mplÅlnhBh¿iík l'lÏm¹oðpüq mãj©dT]UTÐME(<‡4Ï-p(Ç$”#I"Q"æ##—$$G$#Ì#Ý$œ$Ó&Ü)³.ú4^:÷AGéN'S`Xº\@_Z`ga@a`óa5aÜc{eog}híj/k«m~oÄq‘r¸rûsWs{sêtt)s9qÌonmÉjág b [’T3M9GÐBý@:=‰<:z9v8Ÿ7°64®2±/ë,Å)Á'&%ˆ$#S"J!Ù!™"!á#3$)3/ 7?wGöPYXg`¸g‡n8qòuu9tôsÔsês°ršq oíomÌm)làh'h©iËjÁk¡l%lénëo½o§lCh‘aÙZ´RJJ£BÒ:;2Ÿ+k'#F"R!“"/"n"Þ#T#‚#@##)#ó$;&:(þ-ú2í9?oEÜLQqW[&^Ê`œbQcc§deÏgÇiýkàmmÙnÛp*qìs]t=thtºtÃtÛt«t¿sãr„p njØgmaÊ[JS·L_F\@ý=¢:N8[6H5)4O3µ2ê1ƒ/ç- +(¼&®%b$=#Œ"Š"!Ä"!Ö"Ý#Ú(-‰5Ê=¢F)N‚V^ÿeÿlêpètDt’t^s=s[s4r-pÇoèoGnNmÖm¹gåhfiuj=jékXlmän}n:jŠfa_PX O¼H"@i7Û0[)I%;!Ð!6 °![!¥""¢"â"ª"z"›#g#À%±(U-1”7v=šD J+O¬U[YÂ]Â`BbÐdYe‘fÆh’jÑm8o p?pÌq‰ros¾tÑuou…uÕuÍušuu t@sp¨nrjÒg+a“[dSøLlEÁ?¹;©7¹5Q2¶1U0H/å/i.-g+§)Â'í&R%C$`#¾"¼"!Ì"!·"„#&&ì+õ3ý;ÄDeL¶TÚ]RdkÊps¯tsðrÓsr÷qûp´po­nún½nØghi!iÎj^jÍk{mEm³mLibdã]ŒV#MÙF7>€5ñ.v'b#n @è‡ < ! !«"!ç!Æ!ë"¯#$ì'=+m/“5); AfG{MR»WQ[›^¡aÉcÏeOf—hjçmSo5pŸq\r#rñt.u6uØuúvMv9uôubu1tlsvqFokjgÈbƒ]VNÀG¬A'¢DËJ±P«U³Zz]ùa”cÝe‹fÚhækAm¡o{pýqËrts4tšuáv±vÎvóvµv‚vuáu tqÞoÃlWhäcä^ÎX+PíI‡B=08?4î1W/-,+++*n)R( &˜%2$#B"§!À!- Ý! Ä!f!«$Â(ÿ0m7ç@‘HÈPöYs`õhmgqŠrVrtqiq¯qµpÌoÏo‡oÍo¿ppÎggºhÝiˆjj’kGlÿmBlÇh§cÍ\TBK¿Cô<.3†+ö$² ÁÒÔ£b¿9Ò > T ` –!9!©# $Š'°+ 05m;°AÊGèNSƒXÉ\³`‰bÞd²f hjKl„nKoÖpÆq|r`tuŽv’v¸vÄvpv[vuôu(t#r;p‹m¹jËfBa¤[RTlM Eú@1:Ý7 2ù04-Œ,8+1*¸)ÿ(ñ'¤&$™#e"i!Æ ð w + K  « å#É'º.Ô6 >—FÁNöWf^çf‡kŒoúqqap_p£p¨oÍnúnáoboŠppýfœgMhˆiHièjŒkXmmXlÙh¢c¯[ÇSßKBCd;2Ñ++#ÒÙëöÈûˆ»ô ? ß!h"©#Û&r)=-Í2¤8«>•DÌKPÞV®[!_Aa¾cèeugi¢k¡m=nÂoàpÏqÜsƒtùuÿv5v^vuÝuƒuXtÍtr»q‡o;lÐhÈd¸^ÎXLP÷IàC³=ô9‚4Ñ1o..,y+&*š)Ñ(Â'e%Î$I#"!e ³ÁŒ L"ô&Œ-E4.<™D¶LôUR\Ídki™nQo´p-o2ouo€n¼nn8nðoFoòpýcœd£fLgŠh¬iÈjîmmtmhÅcÚ[÷TKjCˆ;©2Þ+)#¾ÊÍ=Ænô_¾ ' Š!=!ú#D$f&“(à,È16‚;øAßG¯MaS[XA\©_ubcáf!h-j1kÍmMnzo¤pÌrAsltOtutètŸt$sòsªsXrŠqÕpnOjêg€b\TÿN/GãAê<Ø7u3[/~-m+Ë+"*7)'—%ð$m#@"/!q ”{ ! R"Ô&1,›3?;‚CKÈT[abïh1m n™o2nHn‘n mêm_m™n`n¹oWpU_Áa>cueMgh«j7lÇm\lþh¥c¾[ãSþK\C~;¢2×+!#·¸Úç†-Á€tí | ø!Ë"Ç$1%['9)$,u05:?ˆD§IüOøUNZ ],`bdbf‘hÜjžl mnDoop¼q¹r{rÕsbs~sLrÖrŸrkr?qÒqpao9l‹iÝe_iX|QóK£E’?ý9ð50–.(,7+{*€)c'ß&2$°#z"P!y –©¦ _ Ž"ç&,>2­:ÏBÅJïSZPaÚg1lmÁnum¡múnm]lØm$m÷nOnÛoÉY[R^paLdf•hÑlml÷h¨cë\7TuKäD<63+Ð$R Bu +øŠ  ›!;!À"§#Ð%[&š(P*,å/ú488§=rAF4K§QV)YÜ]_Yaìd_g,iZjükæm nooæp”qqŸqérqÂq‘qFqp·p™oëo:mj÷f•ajZÉT¤NhHFB?;µ6H1O.•,e+*œ)( &a$ç#¬"g!w Š ¬Ö÷ Ï!#j&”,°3 ;BõKRôZa¢gkÏmkn5mmémòm0lŒlÄmym¨n nÏRDU4Y8]$`õdgzk’lþm hÙdH\µUL…D²<Ó4(,s$È –Û‘ƒ_  Á!g""–#z$µ&C'x(ý*œ-/{2ö6á;&>‹ByGSLÊR+VZH\ã_—b%eIgàiâjìllËm˜nBnþo—p,pˆpïpùp×pppoÍoäožoHm‹k¿gÀc\ßW)PéJ…Cä<Ü6þ1™.¤,F+}*€)z'ë&0$¹#|"! $Ék²ö õ!\#Ç'-3a;HC$K#RÜYØaXfÀk|mmømemÛmÜml\l‰m(m3mmnJeN$S&X@]Gaêe¾j©l¢mGiQe]ÅV]MæF>5-Ü%û!|˜À%‰òÊ ‹!R""§##æ%&‰' (÷*‚,œ.…1L4®8k;4>€B~G¤M+RWVÑZ]#_ëcpf…i.jkÙlNlÒmHnnÀoMoºpgp´p¦p-oÅoyo•oeo m€kÇhcÌ]þXŠR.KƒDƒ=W7a1Á.‘,+**!)"'’%å$‹#e" ù Âd­÷!!ž$4'—-¶3ó;ÆC¨KŸS0Zafækxlömùm‡mômÃlÏkÝkÊl#kçkîlrCG’MS´YÚ_xdiªl+m`iÖf^ýWÜOvG?‡7/w'n"™jYšóK  À!z"1"Õ#;#ï%&‚'y(™*+Î-I/|2\57É:=©B{HN SMWRZÞ]öaãemh³jˆkül>lql”m/nn³oRp*p’pŽpoÚo¥o®odom¤lhŒdª_Y¬S%LKE+>8"2F.¿+ù+)ê(ó'f%Ó$£#§"^!V -µÝ !5!Ö${'Ü-â3ý;¹C£K¢SYÍaWfÑkJl¼mîm§nmµlkSjôkj}jSj©;¿A GÛOV2\Âb h>k@m/jOg`MY”Q^I{Ac9+1)$H #p± e ê!„"."Ë##²$Ê&&þ'ë)*+¥-^/¨2B46\8É=,B¢I$O$T%Xr\`“d”hwj³lgl‹l‘lhl¼m|n:o oðpaplppoúo÷oŠo4mÄl>héeU_ìZrS¼LØEÎ>æ93 /-,*Ú){(‰'(%î%$:#"#!^ ø ` ` z!•"D%(y.‡4¨ ì!`!ê"# #U#Ï$Ù&&þ'³()W*+",±.ž/ù1ß3”7‰<ÄCËJ“P¨UÇZ_GcÔhOjÑl§l£l›l5l&l’m)nooºoão«o¾oÊoío o^mþli\f.a[±TØMìFÑ?Ö9Ñ3·/ ,6*ª(é'ð&Ó&%†$ë#ð"ó"1!¾!!! "+"à%¾)V/5Ö=ªE±M¬U[™ch"kålÉnmØm¿l_jshPfåeþd¬dcÀ-'4'd'¶("(ë)t*Ó+Þ/Z3ã;BvIúPwUü[øafwikŸk}k‰k2k&k“l9m*nn¹nþnènîoo|o…oMmöl£i÷gc]ÔVäPHñA¼;V5'0 ,.)¢'A&‚&&%Ç%1$h#ˆ"Á"J!Ã!à!â#4$Y( ,‰3”:’B¢JºRvYè`fÙjÔmnmPn+m/kŒhOeaÅ^¹\?Y”WÿV² (X2DÓG O5V²^"cÃil'mÚl×lÜj_f a \/W¾7õ2&,#(Ž&%°$±$)#’# "«"&!c Û ^ Ò!#J&+™188Â@xH¸PÒX _Hd{išk m k¨kg§bð\^V¶PðJ´E4@<¹9`Ùb'Õ1ã<€G¿Q³Zïa0gùjykïhÓeä_ÏYsQ’J(Bz:30+k&]"¿!ð ‹ W D ­ Õ!!D!t!z!!È"="Ë#G#y#±$.$Ó$ó%ß&×*5.ˆ4Û:¢A-GáNÞV\Rbof h°iyjÐk½l´m‡nto

NX^ÈfiCkÂi©giaÂ\TŒM0Eb=Á6h.C(^#â"a — @Ú  ' f ž Û!!C!h!»"E"Ü#6#‰#ù$‹$Ì%Á&)˜-­3¸9;?aEtL S7YÉ`%dgh1jkxlÔmÂnªoTp)p påp¸p}p|7]1j+Ì(‰%Û$á#i"Î"‘"›"B!© á v  ÿ"%r)//35&<ÁDéM TÁZéaOe`iiÚjªhfmaZÀR¹KÇD•<5;.•*^&ði!B*²5H@–K1U\idhk¡jŒhèc¤^ªWœPZHh@ý9ž19*œ%9"î ¼ K“œ©þ - p Ð!"!9!^!µ"D"Õ#\#µ$$k%s&S),Ã2(7&<ÙBbHµO½V‰]apd°f7htj=lm1n"n°o}pp¢pÉpÎp¡p×pp nulâj$gŸc\^ŒXQºJ¶C©<Ô5Ø0T+D(S%‹$Q"ð"‡"^"b!ò!O Š b 5!Â#ž'¹+å28]@H\P9WN\ bZe´h‹h›ifc™]8VM{Eø>-5T-R&!b¦ h U&Y0Ü;ûFÈQY ae¶jdjŽiÄe$a Z§SçL"Dí=’5c.u(?$ë"!T %Þ«è÷ / ‰ ß!!!0!"4"ë#M#¬#õ$ú&(¨+Õ0l4¶9Ã>«D•K;QöXx]`Íbùe½hjhkömm¯nˆo>ppmpŸplppo4m4k,gúe `ƒ[}TøN}G„@v:3»/*'Ö%#Å"ž"_"!ì!d ã 8 ‹!#v&?+/²6<ØD¦LºSÖZ3^‹cLe«gfÛfËc•_ŠX.P„G¨?¯7v.9%ô]žÚ ÛH!Ù,H70B-LâU…]Òc"ijŠjºfÎc„]ÀWšPIA¤9±2+w' #‘"\ § }˜–Çí ' q ¥ ±!<""¸#K#…$a%("+-/>2×7;G@¼FûM—SÕX³\ò`c¦f i¥k‡lðm‰nxo,oòpAp`ppoCn#k®i*e’bX]°X€QÚKD=Y7´2i.*f'“$Ð#q"Y"!!2 « jØ Ÿ!Ô%;(Õ.<3`:AZI8PþWK] `ŽdXe®f£e&ds`~[FRéJÁA°930x&ÎGmš ×½ xA2'X1¾<®G¤PéY_zf^iFjÃgëez`d[;TsMÆFn>ö7Î0b+ &º$½"j!J #È|†S[ª ö  ]!!õ"¿"õ#¢$¬')ó-”0427Ô<ÚB±I NáSÏXr\i`Êd€h'jqlDmn:néo•oœo€nÚn”m`kÐháeëað^MY]SãM7FY?Ù9Ì5'0Ç-g)‹&´$9#!ð! Ò r  Ë!#$'i+š1i7#>0EÖMTÕZQ_ƒb;dïe%eQcaY\PU÷LüD¦;°2Ö)à I%š !ÍÁ zb·"•,{7]B’LzUg\ cáhjâi#gpbñ^ÊXÎRKKD>=5X/')ö')$W"Ì æêD9ÙÈðO~¸í j!(!õ"I"ä#©%'Û+-²1 4O9 >¡DßJOxTGX¸]’aÚfhÔkl!m‡n>nênÏn¦mÍm=k i´foc9^ßZ¤UOH]A±;é6«2·.¯+h'½%4#>"h!O ² Õ€Ó¾!–$P)K-ä4 :wAþIàQ;X7]aÔcËeddxda^FX P™G>¯5è,µ#Œ „ pp¦E øÃ&â1i<|FÖP3W™_þe.ieihcd°a®\·WJP{IóBü;Š5/+7'¹%™"ö!FíuÓ¦s©|¼  •!6!¢">"Ï$)%Ï(Y*¬-Ï0Ì5?:Š@EðJÛO¡TIYf^!bÌfh¿j%kãlÅmmjm#kÞjÇh‹fbr^ÜZU9OIIB·<³7Ï3M/Â+á(¹%„#“"&!š ’ö“¯y n"â&+…07=úE´MkT;Zï_Ocud„ec@b7^œZsS JçAl90'=]›ÒŠ„¯“ x%¼!+.6@ìJÒS[åaúg¢hîiLfqd`[÷U·O­HèAó;74m/M*÷(K%6# ͯ}þÿ<Ýgê P ¯! !¦"N#i$&,'¿*K,Ï0ñ5Î;‰@¤E¦J¦OØUzZÁ_ëc‰fœhIj]kzll\kàiüh:e=b5]óY¯TQN¹HžB<í7£3n/Q,(§&##Ç"x!R »ËOi/ø ï$'Ã-Š3 :1A»IŒQWL]åaéeTeXeb^`Ë\qVëN]E°V_]cófæhÅg4fXc@_ëZŸU7NÍH¢B+;45)/Ò,2(¢&"÷ ïkç Ì­3ä® & t ·!E"#:$%4&%()ü-¡1á7;¨@vEYJÄP¢VK[Ç_Åc?eSg×i6j j5iafÁdR`—\ÙWöRóM=GrAÒŸF)MnTnZ!``cºfdÕcÏ`Ž^X¼QÿHÆ@7.g& X@ ¶?:Žœ¼\¥g'Í2 =iG]PÔX=`1dÅhIh&hSfd_ºZäT¹O2IBX; 5/ñ+§(·%"t óÃ`Þm,À g!6"W#S$H$ä&!'“*˜.52º6™:Ù?7D‚JVPTVZ¢^´abdzf g¾geçb²_Ë[ƒWQžKÿF>@®;Ð7%35/+µ(^& $##!Ð ñÔ5Æg a þ"ó%6)—.4 ;ÍC¨JìQjX]Yc ef„dbu^¬[$T‰L›BÑ9ò1=(j +Ÿç ¾#‚ .Rj* §ùØ!+G5ù@ƒJFRQZà`°eègƒhÔglfcY_rYáTâO&IDB¸;•5X0#,†(Ž%ˆ"j €äT‡yŒJ5  l Á!p"†#®$Ï%&}'š)ý,ö0Ä3÷7—;A@EK’QdVFZ×^a€c,d¶c¥b^b[VdQbKŒEª@>;?7:3?/Ø,)+&%#´"ö!å! ÜÑ ¦!g"÷$[&ÿ)±.V3J:+A­I4O®U_ìd’ee:aÅ_|ZðUòNE‡;ß3*¾!ü;ž îHaÄÖ­û½ ‚•$.”9£CÑL™U¥\Œc~fëihhÆhãfªcú_0ZgT®OƒIvBw;o4ú0+ƒ(C$"%ð58“K + «!#!¿"ž#–$¢%n&k'U)4+”.Ï1¡58O<äB-HBN*SUXG[À_h`ëbD`Å^ÍZ“V®QeK¾E?¢:ˆ5Ö2A.—+¢(m&1$O#u"š""!d ò ƒ Ï!,"ˆ$ &f(}+Œ.y3M8Þ@GƒN[TX±^Žb‚eÊe;câ_³\¬WPsGW>=4Û,#þjR ² g &ۦ˩†|µ Oybï'q2F<šFO-Vª^µc±g™hig’f:b¡^xYTƒO/I?#’-|7¿A$I{RXYv`Šd9fÕf¥gTf;dìa]˜XªT…OÞJ›E?]:Ó6Ó4U1­01.±.c.]/ /Œ0 0X0¬1$1È2S33÷5 5ù7-8u:C<>z@½DGÄL=P„T¡Xú\3_W``|]ðZöUïQDKE¿?ª9o4z/ö-œ+¦+*)º)Œ*.*é,-8.d/H0†1÷456›9‡;é?NCyH«MÂR‘W#ZÈ^Ñ`øbÎa§`[áX?QôJÀAŽ8€/¥'b Ç „ßû·°ãeùšðx[U%Š/ï9´B©KhS[ua eyfRg:fqfˆdàbN^ZUQ3L‰GC >÷<.9›8A6µ625ä6i6ù7­88p8Ü9q::×;¡<‡=R>`?†AB¦D¦FzI*LOP"SÈWY[)]ù`¸a.a]^¦[sVIQƒKåF@&9ù5K16/Š.F.V-Ï-é.&/60g23°576e7«9;0=v@CƒG_K»P[TX;\l_…bœc bÂ_±]XSKDB†8Ã/Ý'æ÷'ø ÂMã «™´é.ÚO|ÐÖú ­ ¹dˆg(1Õ;3C®KMTZõa5cÒeedîeÞe¤däb^×ZžVìS7O`K­GÆDÔB_A"?º?+>>Þ?X@"@¦AA|B BÃCžD^EEÅF°GÅIBJµLrMûP)RÅUóY[ñ_a'cFc]c4`s]6XES»N‹I*CÈ>!:65f4‰4Ò4†4Ê5:6x7Ù9­;‚=(>o? @ÕBÅDñH%K†OjSLVÝZ\Ý`‘b¯dbX`>[ÕX4R>KtBg9/Ç'Š ’  Eî< žù·\a“¨<H@ 8 ?)Á3]öaCbkd‡fhh[g–e4c$`ÿ_]ˆ[ÍZ†YPXäXÉYYXóXÑXìY%Y¾Z_[4\ \Ó]w^^·_`®aíbÿd-eˆfêhFiCjIj„jÃi²hTe³bù_Ô\ÿZ(W=TUñ[S^`©b_e%fõhgkfkdÐc´bÜbaO``_ò``k`Œ`i`_Ñ_È`.`ŸaLaîb–c6cËdZdêe„f#f°gUh%hòi¬jj’j“j§iéhïge0bö`í^Ö\ÂZvWÊUoSFRQQ¼RR/R½S:TcUÞWºYsZã\ ]^"_*`aQbÑdVf3ffNc‘`‡[ÝWýR[LJCž9Ñ/¬&º’ƒÊ j ‰@àcu&NÂÛµ}]ˆ‹h"MŠ)ˆ\ÿ÷ 1™ª¼!{)20­7)=”ELSÈXü]8_•bmd“fûh^i`iHi+h§hOg÷g|gWg•hh?hg¼gIfþggQgÕhGhÎiaiäj`jœjÂj´j¦j¡jÀjÜjÜj½jj}jŒjXiüi göfˆe8cÌb€`Ü^Ì\ÀZÒYãYSYÀZ ZÖ[\º^!_¬a!b bðc:cbc–ddßfCg gšeícw_2[‰VØR¬KùCÎ9ƒ/3&&…¼ ¾\aR¥!åÃoVf‹`x]ÿó%qHccìQ вΠb(C.Ú4Ä:ÊACHÇO‘U‡Y#\^`¶cHeþg½hûi'igiVi[iiÑj(jkj`j+iÐi‚iui—iéjjMj—j·jÐjpiÝhðh g^@a@c_cãdrdud¾dêdÿeee]„^Ü`Aaþc_d^d®dîee€eâf&AMCÛEäH§KÁOQ¸TUFVQVRV9U¼UQU6UjUæVuV}V1UTRMPcM€J[FÙCW@™>3=;È;ª;S<‘>XAŽD¶H3K{N€QZTWLZ \«]÷^×^¡^´^1]Á\…ZéXáVûU„TkS RÓQxOÀM]JíHŠFžD¡Bò?‹;O4¼-Ÿ&IË™µ[ Õ ŽÏ3à~æ 1õ•RT‹ÌÒ¯“A:J‡¢…)ÿµÿ…ÿÌÿ÷ÿ²ÿiÿÞÂe–…ƒ O@›fÉ#`'„,S1w5ù9ÎäA C”FH¨J‹L6LºML—L0KÈKžK KÁKKIÈH«F¿D·AÌ>¨;:7É52Á1¤0z0Š0o1ö3ù7c:¼>hAèE*HGK7N„QHSëU1VUÑUçU€U8T)R¾P¾NÔMK²JPHºF¤D`=P;u9?4Æ/t(Ð"pÕûøƒ Y±¨–†‰á/[IÞoLw­ÔÄ¡¢QG?Qe€^ÿòÿ“ÿÿÊÿ¤ÿÿµ½å€žó ’ƒá»J “$Ï)¶.‰2556º8p:<>?×@ÈAyAVA9@Æ@n?þ?®?>W=;Í9Û7Ò52"/+æ)~'M&G%9%o%‘'E)_,´/÷3t6¿9Î<Ð?B¬E$GuH˜IhIhI³IœI¢HâGÒFD2BD@§>ã<Ï:836w5j4›3Ü1}.E)##·ZØC¼/ Õ‰ \×Á'ò/{rªbc—«­¡š´]\NIMlbÿ¿ÿ„ÿŽÿÐÿüÿÂÿrÿ1ÿ…2L ” Ø ç d<>!Ý&]*S,½.®/¬12D34v545v5È5¿5º5V4ý4$3@1½0?.+Ð(æ%È"‘gÿ³¡ßÐæ ?#š'=*Ÿ-Ç0í3Ü6û9<=o>¢??™?’?š>«=w;a9:6ñ4ð3 1$/r-æ,É,*Ô))%æ"‘DŽ[• l DÅS~8&W0wˆ<Äyiv|hoޏWc^WMQG.ÿûÿªÿ‚ÿ›ÿØÿúÿñÿ©ÿ—ÿÓ…D}=%£  Á­G´þ,y"È%P&K'O'·(S(É):)œ**u*Ñ*¸*“)Á(â'T%Ì#ž!g›‘˜V4,(WvýÁÅåg¤"¶%Ã(¨+¶.W0ì2•4 4˜5K5"4÷3¸2>/ù-£+b)d'õ&%ž$å$#!zþ ”Ç ] ¿·'ìÿvŸl>ý÷;ƒ•PäƒgyugA4Sˆ®EOPYXTA3 ÿÆÿ”ÿÿ¸ÿãÿñÿÌÿ ÿÿ¼ sªåõ²âÖÆ´ $ Ñ Ì£ð+µ- 8vÃÍÅ$q¿à¼Q× b u œ°Ô# h Ï S/úʃ!g#ô&…( )q)º*-)Ã)Q'è&C$!ù 1¶ÈæBëg"˜ù± × dE.Øý%ÿã÷0u†a»ŠxvY@,<e‘«19>T]U:) ÿäÿ¾ÿ£ÿ¨ÿ¹ÿ×ÿôÿöÿÖÿ½ÿ¹ÿõX·ÁÐܨïÄi×â  ´ ãJxlXϦJøÿúévñóë6 ®  …ãE <V3Ú Æ 2×\Èô-xf[~ög&«ô_2H›ãІРV Ç “ •„'wŒòéòȬÐ0M п¸”g5%1Z|•1EHJA6+0$ÿûÿÉÿ¤ÿ¤ÿµÿÛÿþÿëÿÃÿ¤ÿ®ÿÚ $ÿÉÿÈ ø%`6ÏXF“ E  R M ­ s M ã • 9 ž  / H:+.D¯v3 +ðâù‘& ì ¡ c=ñ¶É¾fþ³”“ © ¦ ~ #«fP²2ÚpÁÜØÑC@lœ£¬Òa~`çÏÍÀO)Odfg/LN@(/-ÿÕÿ³ÿ²ÿÁÿßÿöÿÿÿöÿîÿðÿí RˆŒXÿöÿþ~rBEs"$Z`“µÚ®Š“ÞAŽÊúwò¶qT56@VWirÉ7ù9d” ± Ü ª O … Ð Á ­ 1 ¦ Ð  ­8øÑ_8|¨‘8¡½ˆŒŠŠic„Ñ&ZnHðîóç½J'',<EC?/<?0 ÿùÿÏÿ·ÿ¶ÿÖÿüÿæÿåÿôÿú$:O/ÿÖÿ‘ÿ‡ÿß^ÍôÑ›—Õfñxî7~•¶“PÛ} ’„+ÿ÷):Wktc=,/yÖbámø†›M‰hMæu¡¥—— ÿªÿÇÿó.E1ÿóÿí-O_[HVå.HEòÿð¿‰]B>6:HK< :B1 ÿõÿÏÿºÿÊÿøÿßÿÜÿô' *NdRÿôÿø8”ÏÌŽS1(R|ÅaÄüñã¶}2䮎‘{jn€––yXI`ƒ·Ü+^’ÌCL<FNeAùjÁG/v´¸wÿçÿäT{‚iOHO~Àü ïÜ~kbLBPV< .GL8 $ÿÐÿ½ÿß"ÿðÿÞÿö)'$)JV>ÿÆÿ±ÿÖ ÿùÿ·ÿpÿBÿLÿcÿ¡ÿÚe—®²ÒÞЫ‰yyŽ«³˜rbjƒ‰j4 ÿöÿòÿõÿçÿÔÿÈÿ¾ÿ§ÿ§ÿÈÿéÿßÿÐÿÜÿù&ÿÝÿŸÿ‘ÿµOa7ÿéÿ¬ÿ¯ÿä4di_F7D\“Õ &ÿýóЪˆƒgIB8 7PP:*&ÿöÿÍÿÓÿÿ.;ÿßÿÝ6P9&Gnl4ÿôÿÜÿô=B1!$8cŒ¯ÑÚÈ»Úöë̶²¸Ðóýâµ›™¨¯˜nJ:?LF84* ÿþ " %19EUoš« h ÿøÿù1w —e@2/Nn£ß ,+(÷öõìÕ´™—’sI,ÿõ 2FP?*ÿãÿã,* ÿóÿñ 4DC@?RV?ÿþÿú!,"ÿûÿÿ,l³öÙ¦®Åº§ ¨±ÅåõíÓÇ¿¼°šyVABE3ÿøÿÛÿÎÿÞÿïÿâÿÍÿÆÿÑÿØÿò@ewŠ~_74\‚Œ{V<2$:c¦ì! êÚÍÀµ²ŸtA ÿùÿüÿ÷ÿÿ #HN#ÿøÿù+*ÿäÿå*7ÿúÿð ClkL94>H@/"##ÿöÿïhÍ9];ïÝÚ¿¨¢¤°ÄÕÜÙàÚÇ©“|^LOTC+2?1!;e„jQ:#)EizwshaYNF2>i®ðþ÷ýÞǼ¹³¦…Y/ ÿöÿö&7$ÿý'! ÿõÿó .7( (]{ykOA8-'!6F;)/Pž PS ÿײž£¨ºÏÜÛÔÞÜȧ’{V><C8)$3DC+!3Ms‚tR@;3@\y~ˆŠƒoUKLm™Êì"ñÚÍÁ°•uS0 0ÿ÷ÿù ,:ÿüÿõ 9R=Aq“œzL"-I`f^Y[Rq¾42?.Úº´·ÊßåÔ¿ÃÈ»¢sN62;:60/6>D; 0H]sqV=BW`fnuw‚¢³ªˆd\q£Éãìö:? ÷Ñý¨„Y5  5ÿûÿÿ ÿøÿ÷  )A4ÿþ'OXLCFZv‹h=.1)+8ILQfysz Öû:B3 æÏÁÅÐÒ¼§®·®–hODDMSSMB932.!?TbqkM6>X_fu‰›§µ°†v”¸Öíþ +4$õ–—…b: /#08/ 1Tkn]LKg€w]TL8*)0&0T€•œ©ºÊæ:D) æÌÄÅįž£¬§“zf]aeini^J1" (#%4HTZgeP=BTVb|œºÀµ›ˆ†¡¥¯ÃâþÙ«ib[> -% ÿý ÿÿ#)21$>b|zdO\oj[VP?5>I:5GmŒ¥¶ÁÈÜ->+íÛרӼ§¥«©œ…rqyzupdT?%"48;FOOOX[MBGYduŽ¥·¶¨˜™§µ¼°¬½ßøÀ˜uQ8" *)#ÿþ!ÿü#(%),*%(Di}t\XXQJJJ@?TeWGF_€©ËÞãé*ëåëîçÒ¼²²²¬—„€„ƒzm[I:++7GIFILHHQXQLN_uŒŸ¦¤™Ÿ°¾¾°ž™§ÀÜØ³}aQ8 ÿûÿý "  ׆¸ ú>òu­m$'…²s¡âãêÒ¥šÓø …LômÎï üãâàd¹ùúµÐ z ‘!T! mú4z«ƒ Ò ¡ ¥ ¨ Œ  î    ù ý  : „ Ï   ã – W _ ˜ ÿ F ² öMÃ.ºL ÷ÃZß8fˆ¶éG»@ÕÈ•`7ï€ÙƧ¢ôHº š !  Ñ#ÑE¾c\£s¾hHþrH•a:¦Uub;ÂÖ´‘x£h3™g s¬Æ{X¦K·7“} Õ ¢ ± · Œ ± Ú      # 4 \ •  è Ç s  Ñ Ý  N X L I h š ñ 8 œ  —T€Ä Rª%;åªt/î`©±¿à(ðöÆì¶Ïóð$@ öJQö-BIF*䙦ŅôëHv°œ\îgTtÑéJ:8˜LÎÆgD=:GScã~†]÷n ‚ þ í $ G / b ž á   1 L a x š · Ñ Ì È “ 8 å ¹ Ð  1 0  ù ö þ ! = s ¤  Œ  g • » þ Z ù™oLFK1ÿ †í ö#RqUi™ê ×q¨å½|Ðæ¹¢_/’͈)ºMnÚÙ’Šè ì!9 y±àb’¬†e™Z?¶5ÀjI6#O±œfk ¤ z  ó{´ºô : ƒ ³ Õ  ) K e Œ › › y \ * ä ¶ £ Å ÷ ! + í Å ¡ ‘ ‡ — › É  v ® Ã Ç å  ˜  À g6"ý§4¹‹€ö»L‘åxÿjñläêzõýØ)· ÀŠümPQcè¹µ:þÌËä!Õ#I"ÿ" ]ô[«oÚBܦiøO¢ûiü”?‰œ m ¼ èöĬëÿ $ W ¸ Þ  = W ^ o p n Q 2 ü ¶ … n „ ¤ ¾  ¡ { K    M Ž ½ Ï Í Ð ã  _ Á  ” E š0ſь~ÏE.PPD)Xr)ÓzgíEt}qá^N%|·äàÜTE® ´®!S"$"t!] &5;†;v¨áíêïZ» qèrñq â v D ú o › Å þ AÚ‹‘¡ÄÈËÝù % N l u m j l } ƒ } Z #ýó  E k w Z 5 íèêý   R ’ Æ à ð í ë í õ   4 ™ - š  • b2‘Cµ¿…ç†ûLwÞòÕA4u;Žª|rÎüV‹W?>»Ù–¨‹¨ ¥" "! ÏÞubØÉ…6³nd Ò F ê v  ¶ \ ê ~  á á ã © G÷¨T Ę{jC( -3@Tgrx~³ÕçéÝñ'  T z T %ìË´¹½Ü = Z i „ ˜ ¥ ¥ ¤ Ÿ … ™ á N ’ Ù  œ  Wâm¶¾sL¡(ÖH¦‚/™\ ¥AÕh9h||<ð4n7¡mdøë š2_U_—Ÿ61Ê [ Ô Î  þ × ½ w &í¾yL*Aƒµ­jGô„ìRÖxI ïäíêçàåñ "Fu¥ÈêEªEû}È­ŠM*øôú+o´Üö ! J k ˜ ª ¯ Ë S ‚ ¢ ¸ ð 1 È m q—Á¿z+Äo#äŽ6ÇÄ tt›çY`#`€mÊ'êKÊX]؆ÿÃÄŽP ­ … â ä  ] Õ¯]È fÿéÆÊÄæ.m„gf§ûUÞŠvY\dmiU9))D]†µä&=€Ùs2ØQfk>ÜÝê>²:¨ê " 4 B O s Ž Ž ‡ Š ª Û  = i › ñ @ Ñ ‡ `.Î?©:ø¶‰m.Í3½ƒÿ´¥Çß»]ݤM – ø e Í ´aKÐÀ6Ì9 † ß Î â€h‚¥¶Q¶´•ÁEPWwol¦¦|a‘ŠO(;Nn‰Ž…gE/'7Db†«ÇÜå0š)ÃC}£Žy^DTfÈMý®$ppifÇèúü  W ° ñ 2  É  A † è d Õ  S «/¯Zà“œ" x þ   ã ± ‡   x Ó  y ”   ª ß f þ U Ñ ÷êGÝ×½³µ€*„Õ:θf˜‘^T5ý§[ ©d6/*DareI$ "?j“³ÄØí0• s­ØÓDz§ºÆnâ–4%2ž)¯  - Q n ‘ Í % l Y ` ­ . ’ Û  ; a ´ ! È~, Ð S )  6 < C S V x 1 } ¤ éû p ü C 8 º @Ä~0®‘6úÖ­TÜ4‰÷~=áÞ‰ê ýºži¬Oòý73#''×´¥­¶½°¯Âð"Nk|‹ªà<HOMNXg€°Å©OÙ" 8¹~i2šÌÃÓ  c º ï ã « ‘ ¹ 6 Æ 6 m ^ N J T    ˜ Ý 8 Ù ® ” ¬ Ç î    ½ Tܼ£µÖȈŠÃy¬qX¸0“ ãåãÑ‘SAKL=÷ó꼊koyœÌãÖªŒoU6 ÿíÿØÿÓÿÍÿÈÿ°ÿ­ÿ¾ÿø7½ä03îËÔùB‚µæèâ§ë>£÷7Nš¬â +xÓ / R F ù " “  \ b l Y ; 3 J  – p 8 ð  0 \ z N Ô;Ö¸˜”˜Iâ|—*¨WC@°-»[nÐI‹` …"à„o‰¶î S‘Åó-LX<òÕ»œ~bK3 ýü-OtŠ˜Ž‘iÂk_„á'_¢¤yÅš†Ä#Œµß ¨œº£-À gÙ;”¢kK  | Æ   î ³ € h g«‘sh°ÍÚ‹i®pž’Šn¯4Ï”aOT+¹.¸£À,¯Ü­{ ÿÄÿÐÿÜP¡øG®ì1j°jÀáêÉ´‰ykZC% ëÊ›`*ę̂’RícÿÎÿzÿ^ÿ—ÿºÿüO“Å´šFÿÎÿ‚ÿpÿÐ@Í*‰ù‘7薀ȅ4«¥ˆÉSê S ˆ _ 5ê vzûñãéõößyþA¿ü} ><ý™@+AI?øybòƒêÌaÕ}–Ócìqß-}ºï,qÖ9Èo%ß S ¡ ™ “ o T = 0 # îÛP¹>ŽúfòŠ*¾@­2×­pbe˜Ù B |ÿÌÿ;ÿAÿ¡\öJTLqï™UèAp€9„£ñft›mP&ùê790/ò§bíl¿Y‹Ñü8]Bò }¡Ë»n˖ŶF¼ Asâ^;û¬þ1  hÖ « ‹ ¨ È àþºQgw? Ï£\.³3 .  ¡ Tçó~öÒ™N¾QŸ?ÿûe›ÿsþñþ©ÿ ÿ¾‚äÚ­¤ágf­&{¹ˆZmzcB9cïóíà§]óš2ÅFÀ:–NT°þï¹±ú|ÛÔ“aŽþÇ€)¤" » M è TœPîÔ£¼c$d³#­ã¡@IFé-Þª€]Xöl8ã&{È ”  9 ¡ ª Ë Í –ÃÎw㱫ºÒ®5gÿnÿÿ@ ³ü݆E‘^NÄçXÉ5iÍ*™÷<NMOz6=C7û­Hô¢Oøš?ÉžÀ,!íõHù¦Dš ·»ÓØ˜ ; â à û  tnX×9y˱eŒÇ:ªø!/"##£#ÿ#Ä#z"ð"t"!º!š!†!!¿!!- Åø8>=I=È–2üí¯ö- Ç I `\†ÇØ@@Fïùÿèÿ%ÿ'ÿƒ,¡©@Z!È,BE˜Prjv¿6¦õ2]kt†‚_5þÒ¡c)õÙ²»ç'2T{õ4L™ê „ O ’¥yN_éŠtk8í-Ç G Ì!‹"#~$«%ò'g(ã*;+,g-C-Î.€.¹.Á.A-µ- ,x,+Ì+À+»+æ,A,K,+,*+('%L#s!uY”VÑ.]œVõÍq § ¸k†Ì};NÏÿúÿnÿ߀ü½Ak—ÎÌéhŽa-0ˆüwÊï àëñæÚÝÃ~;,J™Ï÷M¤óÈ— ï 8¨x @‡ú¢u) Û"Ÿ$I%ë'C(‡)„*k+a,•-à.ú01X2¢3î56 6º7g7Ò8a8…8y7ï7X6§6 5¥5P5C545^5Â5á5¿4ë42«1g/ç.a,º*ý)v(.' &$Æ#S!Æ oþ“”k~N Û ‘º›e.vÿåÿhÿ€'dYÿûBÏN„o8OeEæ o|°³(DJPd|›”S*9§%¿®xív† d ášö¥Þv¹!=#%'(´*+K,½.T/ð1€34V5›6Ñ819j:h;G|?x@mA/AîBwCCWCjBûBAÒA0@²@K@?ç?ç@'@,?è?><Ò;¯:x957ñ6£5•4Ú431x/…-B+A)i'¶%Ø#ï!Rxí?Ÿ p ? š¤Ÿ>^RwÌ›N"TäQ8ÏŸ^W’·­ÿ#ÿKÿ~ÿ¡ÿÆÿÿ&>1ÿõT,ü½¥û * ÈC{";d"º%Z'.)S+|-æ/þ1É34566Â8:g<=¨>÷@5AKBzCDyExFªHI€JäLCMjN‡OXPGP²PðP‹POZN¦NM€M)LÆL“L¨LwKôJÍI˜H FÌEkCòBŠA@?™?E>Ö=’;ã9k74’2?ZAC)EFŸHI%J$KKúM NOYPÍRˆTEUöW¢XûZ=[\\Œ\Ñ\l[ú[1ZoY³YX‘X W±W WOV©UlT-R¯QOOÑN2LœJìIßINI:I)HpGQE-C @P=¤:·7Ù4Ý1Ø.Ï,2(å$ê ,Î: € åŠË£è…†Ö7ÿôdˆ@ÿßÿÁÿÞÿý?k‡ ?e𛥔Éñ ªežõx¦"ã'+[/i3M6„9Ž<'?A€CðE¥GHI J^L(N/PQnR¸S¬T”U”VÀX3Y [7\Õ^{`)a¥cd$ee’f?fxfŒfe“dÅc÷c&beaÏa0`Õ`Á``_$^B]'\ZÜY|WþVhU=TrT S§RÜQÐPNnLIªF–C‡@@åDtHqL'O£RtCÎI“OT~XÄ\Ô_aùc¦eœg3hÇiØjÃkYl0l§lòl§l;kk.j×jWj.j)jÅkvl£mËo*p‚qäsQtŽuÁv‡w:w~wÒw»w‹wv|uåuNtùtÇtàtúu u@u9u"tát¸tRsµsrorqÆqšqxq,pÁp oXnym‘l¨k¹k jmj‡8C1¦*ñ$«Í…µá t«•B_bG4F~DúBåAz@¹AëC6F9IcM‰QmUÇZw^îcTfJh«iµjíkµl¼m_mÎmÐmìmËmÐmMlvk(jhÎg|fbeKdêd·eSeÓghsjƒlÄo qrt uv0vÑwswewv^u±utgtsËsÚsìt7tˆtåu>uqu·u„ut,sUrqÕq,pho„n§m¯l±k™jhibh~gög[g/gg€hi:jfk”l›mSnnsnênÙnØmÔlœj*g d@a2]@Y SÉNƒH•BÊ<|5á/6(Ó"Û¦<õ Oágéb¯Q&P²OpM¶LŒKõMNXPÿSµWZ]—a efhßjãlklÞmœnn†nµnÜn›n^m­løkÂjohÑgYe·c¿b`³`C_î`{`éb.ceÂh1jÊm o pêrntuIvww)vŒuïu0tt1sçsðsøt©5 ï©s*`Ìaeaja`«`°aŽb¾d3e6f)g hj“lbm’ménGnXn n©nšnmÎl¯k(hÛf¨dUb=`]™ZíWÒUŠSüSÆSpSÅSìT¨UMVùY [ó^¦aŠdSgDjnm{p˜r¼t€uu™u£uãvvKvuvšvÈwwLw‘w2v´u%smpÅmüjùhCe²bß`s^%\Ç[˜[IZê[[9[×\]«^Ž_‰`saÀcAe)ghúklàn‘o¥p©qq»qŒqo·nµm9kÿi{fPaÓ]ªXÒT2NmGó@Ù:N3ó-p'# ¿Ž- ß ·_ešf»gkg¡gªhhÉi×j®jîjðk.k×lÞmÆn3n4n]nmnŸnznCmTlvjhebD_\÷ZFW\TkQ*OM•M|M3MWM:8 1š*ð$w›X> ×j)k¸lém™mèn‡o'oõp-oÆon×núo9ooo]o3o=oHopon•m kfh‹eWaŸ^O[WÂTvQNJÈHÊG}GYFòFÃFFF5FGQI%L(NÃQþUAYT]Âbjfðj¨np…rüt¬vlwkxDx“xøy'y|yqy„xƒwStyqblçhDcL^œZeVR²O¢NLžLbL;L¨LÌMHMÞNéOúQcR¾TcUøXZ \Ø`cyfŒhôk8lènâppýpÞp¬oæo~n`mj“gõd°b^IY–S±NSH‚Bµ<%54-í&¯ 6  §lmºooýpsq?qÎrYr2qpÄp{pp`pFp'ppoÿpo4n)k»i!eaa€]KYlUŸQŒMÔJMG’D¬BúAÊA„A@•?Õ?‡?@@_BDëGAJ\M–QýVÎ\#aLeÖj!mqs…uûwLxix¼y6yXyŸyay:wâvks$oŽjbe _MY×TãO¶KÛHRF¶EPE`EwFFMF¹G:HHþJIKœMMNçPñRàU¯Xý\Ñ`pc¦fªi&kám×o£p@p©p0oëonFl°jÕhafƒc›_û[%V¯QˆL~FM?ž80€)f"­òmˆoYpãqÿr«s³tHt®tDsrrBrq¢q=;Î;g:×:[9Œ98‘9[:°=;?IB\EŽJSO’U»[ÈaZf—jÙoDrˆu´wixÜy?yÎyÝzy°y\w¹v rUn;hFb[xU?OžI°E0@ð?=>>Ÿ?¨@5@¾A`B:C D,EQFÞHlJvLUORBÝHKOUä\cbnglËpÛtÔw xêy[yìyÒyúyvyw=uyqŽm-fµ_öX§QÈKˆE?ø;8Î77Â8†9ù:ã;¬<Š=^>>å?@µAäC¶EpHJÏN¢R«WG[Ø`"dPg°kmRopIpÏpep;o›nñmámkƒiËgd}`Þ]€X{RéK¢D$1L3Ê6];YA H‹OöW>]ücâj*o/tvÁyyby×y|y}xÚxLvct€pUk¯d»]}UxMÈFÅ?¡:94ó2t0o11Í3–4ê67B88Õ9N9¨:=:ä<`=ÿ@¥C5FÝJ¬OTYÃ^Ìcgjm n oÞoôp*oêoÖodnâmàlýkZi¢f×dK`[WT©MœEã>‘7Ó0nòpq$rrÕsÓt`tŒtMtIt)ts¨srq€p]nûlj`f¯br\ÛWfQ“KÉFF@¾<7_4U1è0ï/Œ.ü.±.ã/ .ã.m-,t+è+Ù,Ä--/0õ5“:ýB‡IõQ™X¿_af}lgrufx%x¢yx™xŒwèwZu|s¢oˆkd\õT¼L E=‘7î2}/»-B-Q-­/?0}1«2¾3^3ä43ù4 4569;‡?BpG$LUR-Wç\èaehÀk)m[n0n×nÖo?o?nûn>mÄlÂk«ižg¹dJ`¢[TåMËG@Ž9©oXp2pÿq¸ras@sÅsâsÂt t0t1s¡r÷qÊpìo.mi×fÛbh]\W1QÞDKJ´QVÑ\`*dyg™j­l6m?myn[nÖnìnnYmÐmFkðj¯hef`Í[¦UDO IB˜oWoîp~püqzr+r£r¶r¶sBs•s“rÄqýppo l†i¸eªaá\¿VýP~JYD¥>÷:(5_1Ê.,*|*L)Ñ*B+ ,--(-‚-,ä,'+h*ý*Á)Ý)ÿ*U-m1.7²>BF+MÞUÒ^eQlZp×t×v#w2vÞwv v9t¢so£käeä_§WàOïGø@9Ù3á0X- +ù+ +X+D+<+"*Ì*^)À)(•'î(;(Î*à-0€3¶8y=ËDLJÔQV¿[s`Id gõj6kÀl8mjnnwn&mìmaml*kDiNgbcÙ_ÌZ‹UxPJJ¬oGo£oùp9p‡qqjqgq}rFrÄrºq«pÆnÜlði«f5at\çWPŠI¯Cb=ö8‚4/´,–)e'Þ&½'''ð)4*«+é,b,Š, +ž+*Ö*g)C(Û(§+.&4(:\B>IçQýZGaÂi.nJrïtÍvMv:v¹vpv(t¹sbpTm!gÄbZ¹S0KlCÌ=z7U3g/Â.L-#,ô,n+Ç*ü)ê(Å'&u%«$È$Ô%&š(R+w.Y2î8>™E'K·Q÷Wj\àaSf hûkkÊm6mùnwn*mËm4lþlˆkíjŽiTfÓcÚ_Ã[ÐW–Ränëo#o`ooÈp!pjpfp”q‚qúqÈpOol›iêeÄa\6VÔP]IMBu*ß+<++"+*û*‡)f(¿(=**,¥27Ý?kF³N‡V^e¡kLpsuu[v%vvtãsÔq6niÌd]ºV·O~HxB<²8Å53—22R1Í0Ñ/Œ-¯+¿)Ì'ä&›%h%3$ö%ö')}+Ã/Ø4n:@ÅG^MÙSèYæ^ýd[gðj»kâm‡n>nÔnzmßmlÖl‰kùjãjhAf#c&`>]Y]n…n•nÇooGo‚o±o¹pqq~qom‰jdfàaÇ\ÚV¶P]I:A²;50Þ,h)0&$!ç!3 å!Ã"_#%&µ((â)‹)Î*L*b*b)ª(]'a&~'í)ç.ì4M;¡B§JoR`Z)bhVn4qGsÃtGu_n$n'nnn×oAoioŠoÆp?qYqpÝncl@hCcÍ]½XQ0IòB]:°4s.ô+_'’%"«!PºL8 Í" #%)&¯'ó)0* ++D+N*f) 'Ø&°'”(÷-71Á8e>ÙFsN@V:^VdýkWnòqçrµsÓtt¦tUsørp-l,g«a{[$T×NõJOE¶Bž?|>=X=p=e<]:Ç7½4€0Ø-8*ˆ(Q'e&Q&C&!'9((+.O3™8ß?GE­LjS*Yr_âd¸ikYmÈnÂoËoŽnØmám»m¥ml:k¯jéiøhŽgeUcdmæmãnpßqZr=rVrkqKpJmkiùdè_ªZUþR–O8LäJWIH¥HŽHF!C´?¹;Ä72-±)ý(&%|$$Ý$þ&×(ö-1Q7<ÚC«J¾RY?_Mehßl€nQpTp¡p=o9oo n•mÌm lRkÍk;jri‘h¢m»mÕnao oÄoÊoüq r rØrqm“i¬c \ S±KíCÒ; 3+&Ÿ"( I˜3l Ž–­‰b )"$Ô'Ø+;.¤1c3î56<5Ø53‰1ü0î/ö0˜1!4^8Q>ÚEfLüT’[§b½gÄl1n0pp—qoq‚q¥pÕp9mökf®b ]†YˆV´TR0P NçN®NvM¼K4H%CŒ?4:%4/ž+([%û%#ò#ì#Ï%H&á*n.3ž9+@ G]NòVa\ÙcDgÑl nEp´q5pþoóoÂo•o)ndmul£l0kãkRj»j!m—mÇnnoDpp'p~qÍrÖsor>q@mqhèa•Z"QŸI˜A‚8á1R* %!€ ,TÎQVU& õ"å&)ª-×1é5Q8Š:lï=1‹8ð3y-å)ò&À%e#±#="É#±$&ø)o.3:%A…I“Q7X\_ÖeÎkTn“qãrìser“rCqºqWpo)mÝm(lÒl&k«kGlîmXn9o1ppbqrÙtt„r¹qnmgl_ W4N›F'>5©.È'û$! – A — 5¿jpS â#%(ñ-3 8U<ÞAUD[GLHPHþHG6E¯CáBÜAþC˜F J¦OTXê]«b‚fzjdl¥nmnÏotoeo€n¿mïkáivf=c=`#\ÕZWšVCUTÒUTÈSéQM§HÒDD?9Ï4{.Ü*¤':% #´#"Z"ø#{%…'t+–06ê>,FlN8U½]—d"jNn:r#s¤t©tsÚs0rÙqýp…nþnmŽl¬lk±lAlËmÈnÉo·p"póst{tÉrªq)l~f’^ VMkD¿<Ž4U-Ü'j#þ!g!f!Z!ß!Î!„!;! Ú!t"5$&¼+06O<A5FsJ MŒNÁO±NÏMäL*J.HùH ImK|OrS6W†[»_»c±föjVlin npo nônõn#mUk^ieäc_í\ŒYxVxT¹SaSJS®S‰R³O÷LúHDt?Œ:†55/z*ø'W%~#["f!j!ª!Ø#ƒ% (¿,º3C:RBºJ³R ZÐaæh¹mkrt2uÜušuvt´tys¢rpNo2nxm]l®l;kŠlmnnïofpTrŸtt6qÐpk e \TL CL;#3- ' $!ò"6"Q"î#,#"Ê"","³#C%'ò,£2 8ª>ÕDJ~N×RÔTgU½UT+RkPOxN¬OèQ°UXC[ê_‡béf8hÚkŽm,nvnÊo\oFo*n@mjkƒiUf7cC_»[ëXTDQ®O¡O+O8ON/KÈIGE§B/=â9j4j.ü*†&å$í"¼!§ { z x!Ý#&F)¥/¸6z>ôG OAW”_f[kÈq&såv(v-v%uUu;t~röqoèo mÇml†k kŠlsmHn n›o–qîsHsbpÄn¹i—cGZ´RÑJuA¸9ª1Ö,-&˜$"H"Â##±$&$3#ä#‚#7#·$ &5(®-¸3i:vAGmMüS W½Yô[î[ž[ YgWÊVÁUðVÙXT[]›`scTf'ikDm_njo-oIoÓoØo¯n¢m•k¢iµfÔcð`[µWR{OLFK7J¯J^I`GPE,B,?R;­7ã3\.R)ë&E$&!î Ó¡€d p!*#Á&{,*2¶;OCxKéTa\-djp sFvvDvJujuktÏs[q€pAoLmôm)l«j¹kkälmFm²nšpÉqðqío!lÁgR`ÓXIP{HP?¯7Ó0;*î%Æ#š""¥"ñ#Ÿ$"$7#Ý#y#U#é$&(|-§3f: AyH-OTŽYñ]_Î`*`)^ð]ä]2\›]^^¾a bãdëgi`këmåo‡ppkpTpÇpÞpÂo«nclIj…gÐdø`¨[ÆVLPðLÁIGEžDÊC€A¶?Ò=f;825'1X-)%½#¶!± ¶£}f 0 €"|$š)ß0.8Ê@çIeQÞYÓaëh]n­r.u.u}u}t‹t’tr¿qoànÿm¼m l¥jmjÇkyll“lìm»o½p«p‡m†jÅe^RUÒNF =‚5Õ.{)$Ñ#!Å"k"Å#i#ë#ú#‘#/#0#Þ#ð%Ç(C-Š3O:ŸAœHŽO‚Uv[y_gbõcùd…cÅc[c+c cÛe=g h>ikjÏl{nooýq+qwq—qnq¸qÃqÀp»oNmkCheÄa"[®UPO,J9EÇC/@Ø?|=â<\:Ë8þ7;4î2ƒ/c+Õ(%§#Þ""!; 3ðÒ ` U!Å#O('.06Å>ÏGUOËWâ`2f÷m—qUtˆtÝtÒsÆsÃsLrpgoTn‰m]lÅl~j jlkkŒkúlDlòn½ogokÛh§b‚[¥S3KsC„;3y,M'°#Z!ä è! ""¢##("»"e"#G#d%.'˜,À2f9œ@‚GkN=TRZ¥_.cKdîfeáffjfågþijÿkål‹mlnoóq#r rZr’r€r§r‘r£qÃpgn l)iIfla¤\U7NH÷C÷@¿=Ÿ;¢9„7õ6s53ª1à/î-n*£( %Í$^"ü"0!5 Ü ¾!4! "/#Q'»-n5×=¾F:N˜V©^öeÕl¤p‹sÏttrårÐr_q,oºnÐn9mClÞlÊiyiäj“jòk?k|lmµn"mªjfm_äXÞPH¿@Ü8[0ð)í%¦!¹ ©÷ Î!N!ð"ƒ"ž"6!à""Ø#$Ã',1²8Þ?¶FšM_S‹Z^ècbeˆg:g™h=hîißk3lÈnnÑo$o§pQq3rr¤rðsDsRs`s(s5rpqDnýlüi×fÀaÒ\u:¥85i3«210.ç-v+)u'}%Ä$Ÿ#Œ"Þ!ó!!p!Ú!°"¡#f'Y,¥4Ô<ŸEMcUg]§d£k°oØs­6.²'´#¡ RÛÈ \! !½!õ!¦!Z!‚"M"‰$>&V+0y7‰>3DöK£QØXR]dbd¦fÁg}hciCj‚lm nØo²ppvpïq©rgrùsSsÃsðt sÎsÍsroømþjÆgŽb²]‡VíOàIC>Š:87+3Û1§/·.º-Ù-+ã*W(ª'%$ˆ#š"ý"&!Å!¬"""æ#y',4 ;·D0LbTT\yczj±orŠrÔrÀq§qšq]proonènÁnInUn»hªi"iæjDj…jÐkMl±l¶kÿhc\PTÝLdD†<Ÿ3ú,Ž%!¨d ÍÌk  Þ!- ÷ ¸ ä!£!å#y%@)¨.ï5þ<ŒCPJ PWD\¿aâdÍg9h*iEjMkÅm]nìppßq1q`q±r~shttXt²tÛuuut,spòokþhËd_#X¸Q®JD >õ: 6š2Ë0<-î,Þ,+q*Œ)Q'ö&%5$0#K"º!û!«!—!ï!Ô"•"î&F+ 2æ:uBåKS[%b7i–n%q¿rrq q pñp7owo-oGoo^phhihiêjXjÒkal¾l¦kêgÛcI[ÚT9K C²;Â3+‚$b ~].üô“I  h [ C ~!5!Š"ý$w(o-e4-:b@èGmMíTÈZ˜`(cwfg!h{iÀknmnœo¡pŠpöq%q‰rŒs°totÆuuKu­u¼uÉtõsØqåp^mÆjìftaü[ÛUMáG2A®;?2g*Ã#„–}\!µx2¢Çä 9 ð!`"¼#ú'y+ý2F7ù>D(J†QTW~]a`d2egg%hÒjÙl—nnãoÒpfpÅqHrHs]tt‘u"u|uÑuÒuðuht s'roøm…ideX_{XêQ£JÕDä?.:~51Õ.h,¯+Z*×*(ú'°&=$Ù#¼"½"!b! Ü! Ê!e!…$®)i158Š@ÅHâPâXò_ügckÿo’oëoéoo7ozo'nëo!o¸p p­q§eZeóg&h1iMjlk^lôlÐlgÿcq\TUK«C·;³2Õ+#½®…Nä­MÉC”ë `!,!Ñ#6$g'y+y16;h@¿FŒL¿RÆXò]:`Raâdf9h¥j¤lKmEnMnÿo pEq'rrÂsbt?tÔuuu)tôt•s°s$q‡okühtbô\·U…N×H­B¥=T7®3[/[-P+º+.*S)K'õ&x%#÷"è",!` û ± Î •!8!Y$)B18@@XHhPXXG_+fyknpn´n¨mÙnn„nRn=n¡o^oÒp{q{bicKdôf“h>iÏjþlÔlÄlgécX[ïTNK·CØ;ã3+Q#êѲvã‚ò’ƒ ¤!˜"$%E(+œ0|4ß9™>HCqHØNzT’Y>\¨^™acf?hšj±kélõm†n5nìoÇp¤qXrs*sötVtCtltSt#sssrXpómßjòeÞ_ðXÎREKýEÂ?í9ª4·04-è,+*°)µ(f&ë%‹$[#,"O!p! µ Ô ©!T!k$x)&0Ñ7í?èGçO¾W}^8exiþm[m”mˆlËmm¡m‡m“nnûo‡p4q9]^‹`õcƒfh`jl^l”lgøc„\:T¿LJD‡<§3÷,C$È x9|ç^3ÌVÏ l!"#>$ä&3(°+ñ0.3ð7î;ö@ZDµI‡OSÐWªZ\]G`ceèh¸jkõl‡m?mÛn™odppêqûrÎsRsYsosAsrµr¸q÷pôn[kïgJa½ZËT|N"GºAy:Ä5e0….,$+ž*Å)Û(œ')%Ò$”#E"I!`! ² ã Ï!›!Û$ý)®1A8I@-H&OáWb]×dìi^l™lÉlËl)l„mlêlôm‡nZnÉoQp=W¯Y¤\Ã`@cÉfßikùl€l7h4cè\ÀUfMET=|4ã-*%!à=]üž " Ä!g"|#½%k&­(Ù+É/s2Œ5Ë9=<ù@jD}IJN5R•V4Y¼\ä`=cffØi\k\l*lômYmånoVp4qqÉrcrˆrŽrJrqàr q“pÙnŸl–hXc?\’V€OýIABo;B5€0A-Ÿ+˜+$*_)Ž(X&á%$J"â!Ó ì £ _ § ª!¤"'%‚*S1Ý8Õ@ HŸPFW‰]­d‰hÙkëll*k¨l ll‚lšmAnnfnÅoPæSW}\`§d¶gŸk9l4lah²dÀ]ÖV¼NuFÉ>ì6z.Æ&æ"3ÇÍå¾Uú ~!!Ž"}#³%J&f(9*È-á0_2ø5ã9 ;Á?CGÊLšQMU°Y‡]M`Ûdêh4klxm‡m³nnio(ppµq.qÃqðqÕqxqMq/qYpìpMnGlghgc²]BW?PuI^B1:Ü5 /¡,à*Ë*h)¶(ÿ'Ú&u%>$ "¦!‘ ° n " k k!š"‡&O+Z2ä9ÚA—I§QFX`^6dÅhÑkk·kåk‹kílLl%llm"m$m9mØJWM¶RpW÷]žbšf6jtkãl‹il…h©d3]ÎW¤P‚IAÅ:~4Î/K,o*^*){(Ü'Ã&n%[$H"ñ!Ö õ ) O 0!"Ç&î,#3£:B>J]QþY^žd÷hÉkNkRk¡k{kðl4këk–kØlkÊk•kôC)GaLüS}Z` d`i4klji±f¡`PYßQâJ96ä.(“$"ž ù Ò Š Ó ö!H!¯!þ!ï""·#¤$W$æ%o%é&V&ñ'¨(¬)b*è,*/â4¼;òC0JaP¥VA\…bgµkm™mân@mþn nMn²o,o³oÍoinøo ogoÈo«on l“iež_ãY›QçJ[Bÿ;§5Ã0,­)Ê(º'g&ó&œ&}&E%”$x#;"L!Ê!!% ù"ç%T*«0s8?nGGOhVµ]§b›g¼jkPj·kj½j*h¬ge caaÆ_º^[]|- 3æeçjj0i&d1_šXÉQ·IàB©;f3,R&¾$E"!Ÿ ã ò!!z!©!®!”!Œ!¢""š#+#|#¥#Ú$#$v$í%&&ç*D.j52fTa[S‡LKE=7@1N-E)0'#%s%I%.%B$ô$&#%"$!X! ! !2#Õ'^-Æ41< CÉK¸SÁZ¼a²f3jHkdljùjòixg c=_ã\AX‚TêQ!NŠL[ Y(s2(<3FbP§XÅ`ddiwjzj>eÛaà[VTfLzET>5­.Œ(5$û"k!ö ø × é!C!V!C!.! ä!!q""T"z"œ"×#>#´#—$K%!(l,e2Ø9b@áHOV\@bÈg jQk!kíllÆmŸn‹o3o¼o¯oinìnŸnnÁn·n†mcleiÉgb\GTßM³FZ>ó8€2T-Ê) &$¶$¢$Q$)#¶"õ"!A  8Æ q Æ#Û(/5Ï=·E¨M°UÁ\¨c¬gúk“llpkj¸hye_ÿ[¬WR%MzHÉE‘B¢œ#Î-³7šAÛL…U_]FbHh6j;k gdG^W‚OHwA 8Ù1w*U&$#"R! ³ È Ã ¯ £ ˆ A 6 |!!b!®!Ù"%"½#V#<#Ï$•'·+–1£7n>BE%LQS•Z`½e!h¦ißk'k¸l©m˜n¤ojpp0po…o&nóo nönÅm¬l«jgjby\ýUÉN«GF?ü9y3.(ý&>$a$.#z#"!ë!5 ‚Áwì •$*(ë0N70?G.ODWH]þdêhõll)lPj i«fxb[õV«QJúEM?Ë< 8rø3)C3 =]HaQãZG_ùf¹i½khãfh`¥ZwR¨KvCå;ð4f,‚'L#†"† ö ‡ , F /  »ž³  ›!![!¯"W"ý##‰$&é*¯05Ò<B9IP_W@^b¼fvhjkXlÊmðo'oùpÓpùpÌp+o©o\oqoao,mþlÑj!gxbµ]oVoOuH@í:K3}."(ê&!$!#¸"¯"!¦!V Å [‹’ ‹$’)¹1S8C@#HpP£X”_eßi±lxll$j,h°d–_JX0QþKgD$=l72Ê.’’U%).8ÇCËMµV…\ëdIh0k!iŠgçb¶]EUÚNÇG!?ƒ7ú/®)”$è#4!@ ² í¿¾³­•’Ô J å!O!Ã"c##2#Ë$7&£*/v4O9Ì? E0LSZ _böe!gÒiæl m”ooäpêq3q%ppoÃoáo¹o^mÜl@i:fha»\ŠU±NØG’@u9Ö2û-±(Ê&3$ #O"#!’!F! žý; · &!¹&8+ˆ39ùAÎJ$R)Y½_©fiak°jôjÙh‚fCa*[SQLaE<é5.–*%tE!&*24Z?_I«RéYüaçf j©j*iOd­`YR0JrC;‚2è+ÿ&Y#Ó!r Ï×™azs†©Ë¾Ó  ¤!C!î"{"ñ#7#à$R&j)Y-ð2,7;³AhG÷O V[c_œb+eKgàj’lynop$p«pûpÄp’pNptp o—mÆkÈhyez`×[¶TùN3Fè?¥8ô2.-((¡&4#Õ"Î!§!< ó Ç A¨åçÞ Þ#8(G-¿5<CöLHSø[`Qfhýj¿i™iZf§c™]oVN F]>N5i-b%÷!@ ˜  %˜/™:[DØN…VO^™di'iðj f+bs\4UÙNSG=?°7B/ó)h%Í"Ç!Ï fàhoXz³ïý   d!!ê"t"×##¼$Q&4(™,T/Ø4(81=wCyJ?QVŸ[1^Taèdöh8j”lm nðo«pRpfpnp p/o‡n¦leiófJc^QYRcK˜Dj=?6ó0Ó,v(d& #˜"m!j! ± [Ði¾3Ø"¼%ö+€18F?~GHOUVR\»aeñgóigYf«cP_4XP{GŸ?h6ø-Ê%±4d— ›-• §*5?ÖJ Rœ[Fa^gµiÝkgâe__Y¡RfK†Cî;¶4,°'ù$@"Û ï B* =\“Ö Ýù ‹!n"&"­"Þ#_$%ã(+.-ñ1i4Æ9…>çEHK¨Q\VfZp^Äb€fbi1klön‹o_pp"požo‡n”mXj£gµc·`C[‰V?OH‡A{:­5+/ÿ,S(†%ÿ#"@!B æ 5±/}h à$¾(Ã.«4q;ŒC JÑRŒXÉ^”beðfÿg]e1d_ïZ¬RhJIA"8_/&Ó@{ ¾ š!Ž%./>:D¤MúVÿ]¿eh–jøhçfàaó].V®P;HÉA9†1Â, '%^"Ò!r÷bø á÷L¦”   Ç!¡"R"{"×#}%+'+)Î+ò.®1t5±:€@mFý6ò0w+'þ$í# ÐÃÆqvªEˆÓ _!#!Ö""k"Ö$%Œ'®)a+±-ù1Ì6=;ôAzG'L›QîW\ža¾e™i,k7mXnn£n%mÍlÐljJh1d§a\]XR³LµF?b9£4l0•,³)¯&U$"_!¢ ›ó1ùÏs’!­$Å*.ø5A;ÖCSKRX÷]Ëbdpeæd–c`\èVŽO E€<×3å*“!´Õâ Fa¤Ýn û³#w-û8÷C M€Uš^td+i&i”iWeñcU^³Y§RõL_E=q6¨0y,X(–&"# !€oT/u×gÍ > Ó!a!À""]#$&%Â')*û.o2Œ8=>BÂH MSTXò^†bÔfÝi3klIlÓl!k£jHif©d `\W!R_LÂF @e:t5 1%-¹* '4$U"°!‚! !Œ dŠ !b$#'´-O2z9@ G™NòUS[Æ`d7e,ec'ae]X…PþHÄ?76}-Í$‹.,X¥pwYœ ¶Ã°'Ö2»=âH6QZQ`ðgSiQj6g±f"bp^VXJREKDD&=)60§,(ó%]"Ð d<I(¾Ü0ë > ´!!W!½","Ì#j$E$é&H'¢*§.A3S8#=B×H®NøU)[6_ãdLfài|jIjëjiHgYe|b[_ZUþP¢KqEì@:£51e-Y*B' $Ö"É!Ä â y§I(Ì .!±#8&¶*¢0{61=4D·L*SX¡^Éb¨feøe[b_ŠZcTaK·Bó9{0™(ÀèÅ =¯oºÅe —¸­"#,\7|BK…U\?c¾gUi±hqgãeb-]'W×QIK Db=26Õ18-9)%&("è éVÚøë…[ ; ¼ ÷!3!›"E##—$$J%*&,(É+Ú0O49{>gD2J€PÜVú[Í`mcMfBg>hfÞe¼c ` \ÓXêSáN ICï?: 5…1&-‘)Ý'+$¥#?!ó!V *¤Àÿ!!÷$&g*….º4Å;(B‹IÿPÄV÷[ËaqdŽfÉepcÿ_æ\iV*NèEš<¼3­*¹"V¯ •ð †4œD“ ÐÔ’&1;éFOÅW`e:i+iNi³g±fb*]ƒWOQÑK–D½=Æ6ö1Ž,½)^%—"ò ~L,í{Çh` ! š Ï!!¹"Ž#C#Æ#ã$q%:'l)þ-½1(5m9°? E%K‚Q‹V’[ˆ^êbic®d–c#a¤^z[‹WDR¾M7GqAõ=9 4¸0Ù,ð)Æ&˜$"Ó"! džMÙ ^!ò#‰&‚).#2Æ9?@~H7OUU7Zó_/7½2. )í&í#¯!± •º§×ª ‰!G!!Æ"N#3$5%(%¤&Y'>)1+u.”1\4Ò8@<íB=H&M´R¢W¨[[_*`Žaj_]ÁZ*VæRLMQGƒA‹<^8 4½1-¡*'n$é#“"Š"!B ¯ , W Ž!¦"¦$Ñ',*Ï.938>?F‰MÞT.Y^GaéeÝf}eïb_ YpSUJ²A£7ó/ &³Å>% ˜cR8±èÃû’¾ *Y$ .|9}C¯LšUÕ\ïdg‹j i•jhPeîaW\ÅWž7×2-ê*º'$r"7!7 á» ? Ú!‘!÷"b"æ#Ë$å&$'( )<+ -/Ê295/8<@ÃF@KbP%UXä\¾^ ^º\‘Z]VMRƒMfGÜAÑ;Æ6ã2Õ/ð,‰)©&È$Ö#"L!®!y Ù š ‰!L"#¼%(‡+‰/‰308N>E,LŽSX«\¶a®d¤g4f6d”_ì\UbM¨CØ:V0û( [‰ ~&Ðg÷¹–Ë´‹k Wt-'²2k<®FOEVÔ^ècígÈhoi¬h·g¿du`“[sW:R@L½F;?.93ô0,¼*'W%æ$$;#í$<$}%%…&-&º' (¼*++v,é.H024€6Ä9\;¸?C2H L„PÃUKXÄ\F]B]¢[.X°TXP4JÚE%?(994Œ0-ã*Ò(‘&f%+#þ#š#F#\#'#u#ò%C&s(­+-.¢1Þ5á9º>ðDñKžR WZ\2_c­eVf-c­aJ\WOâ4µ+ª#½L1 )–‘Þó‰kÕÉ¢È49w Ý®™#-377@HâQÀXé_èc¾f¯ghrgêgcÞ`E[¯XS¬NxH¿C,>®:©85g3±1±0â0¡1E1•2 2q33²4¿5ô7k8¸:!;•==>þ@ÃBUCóEgG©J”NQTWnZ0\þ]…]hZ‘W’SNÉIÁD>í94_0s.‘,Ò,*+3*¼**U*þ,O-Q.Ž/º1y3]68¨;ó>÷C GÙMJRtV÷[H^›b‹dSedcVa#\‘X±RJN@c6 -\$ߢ͞ ß{7âŠz¥Ñk¬¬+ PúòƒN$ñ.Ú8^APJQ™Yã_°d^fgÒgêh¡gPea]YmUPWKfFíB«?·=;„9{8~7÷8x8Þ9—:*:á;„<‹=Û?g@²BC_DçFH!I}JºKËMxOÀR€TÐW Yâ\&^€^É^x[†XOS¦OjJ—E”@\:¹6{31Õ0Ë0³0/Ú/x/ù0û2±45£7 8Ê:ž=#?¨C F†JêOÀTƒX¤\`bëeífea']ýX´SnKaB"7Ì.^&G. ¶víó9†à%ÑM€Û§èH7 SÛd}&r/¹8óADHÒQIXJ^ÏbOdþe³gŠgÒg„dýb/^RoVšZ9]^_ïczehf­dªb]XÿRÌK¿Bb8.í&X;«£ ÂÜYg¯fÖ µZb••·U{Œ¼ }úl&&ù08Þ@†H†PXR^=b²dff g“ih¥gdpa2]mZ8WS‡PlM­KñJ"IOH—HÁHìI¦J_KQL M NŒP7Q°RÿT@UoV¶WóY0Z6[[á]^v_«`ßb^cnd–dc&`.\ìXØUIQžMÁIÚE“B~@???P?>ß>¬?P@kB7CÎEkFÉHjJ&L¥OXR­VYr\¥_mbZd„g>gqfsbm^ÌY9TLnC\8Û.ì&O` Ú[âîEpú Ñ‚ƒTT€ÂXê!I 0<jå'×0(7ð?F9NÜVh\Þ`Sc%dxghgi^gée–b(_£]AZ”X UzS¥QûQUPÕQPýQeQçRÃSyT’UåW€Y Zl[°\½]Î^Î_ë`Úa”b2bücÐd’eNfDfÓgpf´e†bÏ_å\‰Y¬VÙSÖP¶M@J–HcG¥G.GWG FèF¬G8H]x_ `™bcnd‚efhgUhhhÛi:iyi®iÐj j$j5iLh e¹cF`¨^|\hZ*WµTìR—PO»OHOgONÐN„OP$QäSaTãV6WÆYž[³]ª_‡aNc e>f¿hCg‚fb"^QXÙTLÙD79¹/i&K5îò ¸ÖdríËOo»ÝžQa›S au¨}K{ äÎl&±-²4V;BŽKPSYi\ü` b"eVgi#hÏh.f e\d(cb7a`e`$`f`{` `¤`Ýa$aìbÚd(etfµgähÊi«j3j³jâkk k jåj²j}jmjQjHiµhågbe¾cýb•a5_¾]î[ÇYÄWñWV§V¼VVVU¾VQýKuCŠ9q/"%ï0X¹ s$>>ú²:?—ëÀgL^‚\€iÿæ%xO<'¼z‰ è #Î*?0g6Ö=ûF9MlSqVÓY¶[²^“adf˜gÐgähFhlhœhÆhøi7i‰iÆiòiãi®ii§iûjYjj£jcj/iªih9gfËf etdÚd«d’ee—fWggUg\g#g$gg'f»eðdÎc´cbÝc búbèbÀbácGcådtd½dÔd¦d}dmddºed9b×_w[³VÿSDNI†AÜ8­.™%…eüô ÕBsúç—c–Îá–H\І%q‰8ÿâÿð*M:ÿ¥ÿ«D-ôÓ 9 ºvÐ!¯(2-ë3Ú:àBIHN„R£TòWqZ#]Íaadyf;gºh"h–h£hÉhïi,ioi·iÒiÇiœi–iisihzghfPdÛcUaÈ`W_]Æ\à\[ö\ ] ^6_ÑaYbœc—dPe8fgg¦gÚgŽgAggWg¨gÎg”g%f™f@feôeÐee9ed´dscPb_H\AX5T}PLF6?n6›-C$“0Ÿ² ߉T<œmÍq‡ÓÛ°jI†½”SŠlÿêÿê0Yÿôÿ¦ÿtx ¡T o E6¿ r%ö*â/ú5½žA‹CéFGG³GFdEC¢BzAˆAIAOAŽA¯A<@«?1=“;;8Ú6I3´1’/‡.o-O-‰-÷/Ñ1¹4’7T: >A‡DçGðK MuOÕQRCRDR;QZP‰O"M”KåJnI)GüFµEJCAÜ?á=¹;¢:1815÷1¹,›&7ï Z ,± ˆmpÐy 6aNæyUz©Ëº™™OJGYl‹hÿòÿŠÿ€ÿÄÿ¹ÿ‡ÿªžÎTB® »/®sÖýC Ÿ%î+/)2ƒ4u6˜89¿:´;‘;m;:97Ø6¾65²5“5m4Ô42‹0í.Â,“*D'ì%ý$#$"""s#$å&Ð)–,L/u2¬5ó91<?A6CNDpE‡E·EàETDØCÉBšA?Ã>V<ô;O9i75Ñ4q3:1â0È.J+&' íÑj!(@ fÒ‡Wʵ-þ?‡v¨dd“¡ ”‘¬\\QNSvkÿºÿ{ÿŽÿá ÿùÿ¬ÿdÿ©Yb¿mìç w&gH–i#<'¡*p,Õ-¿.Ã//l/E.ü.J-£,å,$+Ž+,*Ò*z)Ÿ(ž&Ú$þ"Ÿ <Òjz‘’åy`>Ç# &K),í/ð2õ5P7’8ù:f:ì;d:ý:œ9s8(6b4®2è1//-Ê,j+t*Ÿ)¿(&"Í «… þ ‘ øj^q(nI9ƒ“F͆x“zdk‹³Wb_XOWL.ÿõÿ£ÿ‚ÿ§ÿð ÿÂÿ¥ÿÚ}0Ú#‘zÞ ³ x•èHì –#€$b% $’$b#â#Z"Í"Z" !À!†!^! §·­ê µ`× < B L “ »K¸>TaŽ!´$¥'˜* ,s./Â0q1 0œ0".À->+F)W'Œ%Ù$ #x"Ï"Š!Ú ÂZš*Õïz | N ”}šÌ_†Q"èî:‡›Y󘓈qG:XŠ«GRR[[[H3ÿ½ÿ’ÿœÿÐÿÿÿâÿ²ÿœÿÅj™¦pÁ…¯o¾ m VCÒPiãær,Edž6ìâá¸ÄõC x ± îsç0lÛ7f R aϤ`r!Õ#t$ü%q%Ó%($o"ò!`›ê“a¢þjö¼kËD  QÃYúVeÂÔêîÐé,yŽiƘˆ†cC.>f‘§4?DXb^D-ÿÙÿ¸ÿ«ÿ½ÿÏÿæÿýÿÿÿãÿÍÿÈÿøXU&¹Èwû[M‰ K •åQaD>< ú L Ï Å Å Ë ¼ [ ç  7 ,36.;6˜ 7…fP¤ ¶l£ØÃÎ%RxŒ¿ä;öÑYÔW‚Œò   rRXmBîqf±¯Áôã§Ç*ƒ–[Ùļ™k6"-Wx‰‘4JMOG@77!ÿïÿ¾ÿ¥ÿ´ÿÌÿìÿñÿÒÿ¸ÿ¾ÿæ ÿñÿ˜ÿ†ÿ´ˆœÂ€ ¡ƒ» 9 µ ë Iž¨çLÚȯ|7ÎYíŸ_ ·\&û/­1ÇôK¨ M æ ^ü#'WoË  8 t à  < ^R4û:ºqq·þMÿæ!S…”¢ÅU|g óØÕÉ™]),Qehj2ORE-%(80ÿÌÿ²ÿÀÿÙÿøÿþÿýÿþÿïÿÿ>w„Zÿøÿöm]F×âë>ÛwàÒ«-¯&¯Sø»Šb+ñ¬Ž°¿Ðåûëý¦STJOG=N - O ƒ 0 Ð 8Ã9²éÿâ·Æï­Ÿá©ªwkƒ‚uUSuÁC]Dø÷ýòÌ—b=55CJIF5CE5##)ÿüÿÖÿÇÿÑÿòÿïÿõÿÿ:cVÿ½ÿ®ÿýyÚð¨H"yÁð÷êÑŧv: ÿæÿºÿ™ÿoÿlÿƒÿ¹ÿà3[˜‡PÿòÿÚ9ŸùeÏJÕWÛ<üÎň)lެÿÞÿ}ÿ?ÿyÿË!L9ÿìÿñJfbJ5J‡Û :>  ü ùɘnMB7;GK<)BH7$!ÿáÿÑÿä.ÿêÿë# .]v_#ÿøÿý7…¨Š? ÿþ&Dy´üQ~‡_DòȘ{koormq‰˜’uUCBZsŽ™­Ñ7i¢ÁøÆÙýã•oÿß C¤‰E,g‘˜uI39r¹÷ ôÈ¢…k[E=JN6 4LR="'&ÿáÿÎÿô%0ÿüÿìÿý"$)7[cH ÿÎÿ´ÿÏÿõÿôÿÎÿ›ÿxÿjÿÿ¹PŸö!-èÆ¥‘„‰–œŒ{†‚oWA:6/ÿóÿÓÿÏÿ×ÿÍÿÃÿÂÿÇÿ½ÿËÿ÷+[V)ÿåÿ®ÿ®ÿÕ=?.ÿÕÿÒM|‚xY96IƒÊ ùÕ³šŽ„hLB5 >WT; +0ÿÕÿÝ 7@ÿçÿá0M=%1Nsm2ÿîÿÎÿÝÿ÷ 9p¦× êðöæËµ¬¦±ÉÕȯ¥ ™}ohecV8!&1%ÿûÿñ&N`[MI[­±†>ÿøÿý.tŸ˜kQC5D^’Ð ýýóÜÁ«§}S2ÿø !9HSBÿý2&ÿêÿë 0.ÿòÿê1HLJGYZ>ÿìÿáÿê U¢ôCQ+ìàåÓÀµ´®³ÂÐÏÄ·£Œ~vmfcV6ÿðÿâÿÜÿÓÿÜÿó 2Ry’¨Q%?a‰”ƒ_KA%-R™â ÿñáÕ̼¤xEÿ÷ $MV&ÿõÿû52 ÿìÿì/;ÿñÿç FtuTA9?A.+ E—þlŽiøìϺ°°¨§¬·ÂÉÖÌ®‰wrg`a[G0%$%(,*!"2;Ln‡}gF<xІzpf]P+*V¥ìùöâÍĺ©„V,ÿû(<$#/*ÿÿÿû78"*b‚~nQB5"&FE81LuÆ8{x9Ú¹¦§¥­¸ÄÍÑß×·{rbUNG5&!-8:.4J`‰bO?#'Qƒ‘ŠŠyeVFY‡Âæö  øßÔɸ›{W3 .ÿø ÿû 6F(>O7Cu•œxJ /R``bjiå4SA?%þÔµ­©µÅÐÎÇÐε’}p`SF<.'#*8>6! Devƒw_IISKK^w~„ž­¨Žrho’ºÚáæ '.÷ÙËÈŲŽa>) 4ÿùÿûÿöÿþ !1K; 'IPG@G_z‘ˆb4""%@KYvŽ‹”Áø(A?-æË¶²¶¼³ª¶º§‰sg`]SKGFECC:'.Vs|nTCGUPUlŒ£¬·± Œ‡©Çäô!,ïĦšŠkB"  1-"$6;/ 'Kel`RQloOA8% /->mž³¸ÆÙé)AI0ëȵ­­Ÿ—¡§›ƒnfjsphgd_RA.)E`pppeWNNUNXy¢ÄÊÀ¥‘–¤Ÿ¡µØþÿÙ©…pe[A$   1) ÿÿ")/64( 8_{{fQ^ogRG>,&3C89W…¨¾ÏØßñ4C1ñÖÉÿ¯¢¤§œ‹xs}ˆ†xoaQ?*)@S^da`\VQOTVg‡¦¼º«›œª»¿¬ ±Öþî·ŽlO:#  ..)ÿû)-*/23-%Bi~u[XYRHA<..EZNBKn˜Âãñôõ *ëßÝÜ×ɺ´°¦šŠ„Œ”‘€nWA2&%$-;JSUWWYZ[YSUbz•¤¦•™­ÀŶœœ¸ÒÉ iOD1ÿúÿÿ!&Ù†¶ ý>îx±k'/“­<C}§çúÍ©Ù":̱xœâ%Bdt•‹÷-æ]éö ”>•ö9N]J £  Œ – ™ Ï ý     ý í ò ý 1 y à   × ‹ P ] š  H ƒ ² õKÂ-¸DôÈ_ ã;hŒ»ìE¶<ÔÄ‘^5ñ„ÜÆ©’£óG¹ ‘   Ð(Ù“MÀˆnvÀt…åÉ{{ÆtA¯^.ÁëÉ99<W¦(Ö©!;”ÍžAwþÎAÈ?kk 7 ƒ  ‘ ¯ ¨ È ð       # J ­ Õ ¸ h Ð ß  P X K E c • í 4 — ú ‘V ŠÌY±+£Aæ§n)ìa§¬¹Ü"{ï÷Äæëµ¨·Ïòí €@ ïIQù0AGL6Ý®3´§=ÄÌÿŽÉïµhýmsmÆESô1¹“ — ò ¢±‹ ƒþ:˜=‘”Ñ Ó Ÿ ñ ‚  I D l ¨ æ   , A U o ‘ ¬ à ¾ ¹ † , Ý ´ Ð  6 3  ÷ ó ý ! ; m › ü ‹  o š ¾  ^ ÿ vPGH.ÿ’ ƒé÷'LnWmœì Õ‹t®éÀ"}Ì⸦d,’ç°2³gÏ«›ˆÁü õ!M zÁÑxQGßr.–H +ɺÐì3—<q˜”l  i (ß–½Âó 8 ƒ ´ Ô ú  B b Š — – s T ! Ø ª › à ü ) 3  ï Æ ¤ • ‡ ’ ‘ ¿  x ³ Æ È ä   Ç n:"û§6º‰ô¸H“ësükó’nåçv ýÖ,¹Èþo[#}u!ö‰á?ö!Ï#>#!ÿ Љ×yâM¢B*?Oé2 5j–¡v@ ý ¼ _ }çç×ú / a – » Û  . J V f e a D & ó ­ } j … ¬ È Ë § | J !  û  J ’ Æ Ø Ó Ò å " c Å  — C  ˜1žÐ}ˆyÒE*KL=#Vn ÍzgêHx~wìbM)ŽÉ4²ÅnH  !E""a!f !Rðð[¢ÑÉÝ=Ç<€šªã;›â ú 9 œ  ž  œ Ì­ÅÉÔÛæö   " A Z e ` [ Z h o m P ÷ò  M s € ` 4 êèêûý  S ™ Ó ï ü ó ð ñ ø  4 ” & ”  ” _/>²¾…ãóAmÚòÏ6-k>—­yrÑùQ…e#’pÈ#+ ! !!ø"!ŸåÊ‚°ar<Õ(Ö÷¤8 Ð A « - » J Î 5 ´ P #ûåÉŸe&õÍžxSA365=HWcov‡¦ÆÚàÒè!Œ  Y Z 'êÊÄ´·¸Ø D e v Ž ª ¬ ª ¢ ‡ š Ý G Ø  š  Sàn¹¿rIý$ÖHŸu$”W©JØb2{buo?æ”™{FðW3¤N…x£Óš< ´ û Ó ) ,  ü ³ S ΔoG=HVP.Ûzñnû”Vïñìç××å!Ep¿áô8¡Cü€Ð·ŽL-ùïó'n¹å ( M p ‰ ¡ ° ³ Ì  N  ¢ ¹ ð . Ä j q›ÈÃ{*År&è2ˆÁÄ ŒyŸãV`&V~R!m`æ¡Ó¶5¿¾-­^  ¥  9 \㱞Q lþåÎâè,KVAE ¦ { ¬‰kpw|uY0<V}©Öû 7{Ùy;á]rn:  ÞØã<³?³÷ + 9 H V { • “ ‰ ‡ ¤ Õ  < h ˜ ë 7 É „ c0Ì;¤7ùºq.Ì2¼ƒÀ¬ÇáÁeäŸH o ! N®tPÑ9;wD’F˜ ² í Ô ð˜ƒ•¬YÆÇ°Þ]bl”–‹…l@+ñ´|MQa…¥©™m<*6Qq—¸Ôá7¦8ÑT‹¥ˆyfGO`ÇN»4}wnl•Ìíûù  P ª ï 2 } à ø 5  è e Ó  J ¢*±a#å“—& ,    å ° ™ n £  Ú ˜ › Â¿è¤ Á  k g R íJááÏ¿ªd{ÕHÞÅt¬¯wXÑx/ð¤rSO89SvŽ])öø  -V€¤¶Íé4œ‚¼ÞÑɼ«¶Ámì£#7(6¡*®  ) N l ’ Ï ) n Ž ~ W a ± 2 “ Ø 8 b ¸ % Ë~,ž Ö ^ 4  5 : A H E m & N kì  ~ ¿ Ö » «…Q¿ŠAìÈeÐfæ{DïêŒôÌœOì†*æ'G=%,54äµ£¬·¬©·Þ :Ui§âJXXNSak|‹®Ã±\á&(=»}g0˜ËÄÔ  h Á ÷ ê ° • ¿ > Ì 9 n ^ N J R ž  ™ à 9 á º ™ ª Æ ð    ³é£¤¶ì$™ícÀ‚|{bÄ9…û¹ÈÕÓŸdMS\ZFÝša:JkªíõÀ¤yY(ÿøÿÑÿ¿ÿ²ÿ­ÿ™ÿ™ÿ¤ÿØf¦Óü9='þÑÒûH„°ßåÁ§¶ÿM«F[ ¨ß (uÒ 1 X J ü % •  Z a k X 9 0 F { ’ k > õþ 0 c € N uµº¾ÆÚæ´ZÕkž3­WFFª2ÆTS°6†l&¥8뮤£¼ÑâÝía®øA[]5î×£~U4 øòìþDlˆ Ÿ¦|2Ór^†é+[› {'Ú³šÒ4¡Æé¬š´œ'‹»]Ô<•¡jJ‰ x Ä   î ± { ` ]¨šƒnwªÎ܇V‰×OÚÉÁ¦rœ-Ò ua`1½7м¿ „½›ÿËÿÉÿÚ)|Ò@`„»Nœñ5t‡‰rh_VNF=6&÷Í”X&ëØ¾­irÿÐÿtÿ]ÿ›ÿ¶ÿî<„½¸©YÿÞÿŒÿ}ÿàN×2ý’6ç–~Ĉ7­¦‰ÈQê T ˆ _ 6ì sxûüôîëÿóÚnî)WÙv,1GVAò‚.=\]F÷8-‘ ûó™¾Çç[ØaÖ"_‡µõ>¡ýpîv p·ÁÍËÐä  * H D D ¬Itµƒ¨EÚ]ÃEðɃif™ÛO†ÿÒÿBÿKÿªcüOYQtñœZìEuȆ=ˆ§óh xœkQ+üë 4A>4 ì§^âb²ñ2m æZpGéŠj¢ÞËlÿµ‰Ñ;郒ô? *Ö “ÉÛ°„~ N  þ Û ² šFÓ./7RŠÅù÷ÿ• ÿ Æ A Ð{-16²S@"î­gšßv&=„µ£(ÿ€þþþ´ÿÿ¾}áÛ®£ßdg“°&x´‰ZiyeA5déøùã Zø˜)ÁB©~OlÑ /õ² ë{àÅl1iáÓm"ñÔ  L ² 75™é´eÿ§½ò¾ŸÕ(<((Ûu¥À­¨ÃÿJŽŸÀYÕŒ!5Rct Ü < g ß  = M # QZù™OJÒÕã¼Btÿzÿ ÿ;§õÙ€=†REÀèZÈ.]‚É-šó8JFFu2EQ9ð§Jð”Bèuªž×.K2òî:è™.e½m‡¢Â¥ ­ + ÒÀ±j/4è«·Û–nÂ%ŒÎɹ r!M!Ò"1"!ò!µ!™!Ã" "u"Ú##x#C"ä!¦ QON¯‚DÏ®u_d2{» X Þ äÁÃäã>?Gõÿðÿ&ÿ ÿz%›¤:ÿúQÅ.ILžKifxÀ3¢ò-Yi˜…Q+üÍ“QƤ‘»ýBNf‚î(3m¢ 6  ö†³²ì~™Ðø÷mÚ£ \ † ‚ ~ ­!e".#$ï&(4)z*€++µ,+,Ê--0,á,w, +ù,2,x,ê-R-«.).%-ê,Û+Ä*(:&#È!~TÕ{ pžñ½l6¸ ¿ ªIZ©b+GËÿòÿbÿÒwø¼?gþšÕÕô iŠ_03‡ùtÈî Öó çàÝàÁx-ÿù3‚©à›S¤øÉ à Q ©³[ªïz!½#˜%H&'Ð(Å)±*A*¥++²,­- .å0M1Ã35404á515«66¨6ñ7 6È6l6%66S6–6ò7=77õ7÷7¸6²5«42w0ˆ.,•*Ž(þ'Á&ä%÷$Í#Y!Å „.ÙÏ…f ³ ‚ H€rEé[ÿÇÿJÿk\O ÿð:ÎP‡s;MaDì lýx¯² 0ZSG`ƒ¥Y+,—#Ð)Ëü„” x ï‹Ô}á½® n" $&H(°*Ò,­-õ/-051k2œ3Í4Ê5 6[7-88ó:;<<=º>??p?ÿ@œAIA¶AúAäA¹AA•AÈAÿB.BCBFB‡B_Að@Ï?¬><—:ç9/7™64ê4;3¤2ß1Y/`-+)_'Ã%Ü#Ñ!þd¶-½ ' ÿ \lk ^@Eo¿ŽBPãR6Ê˜ŠŽ•d[‘y´«ÿÿSÿ‹ÿ˜ÿ¤ÿß,ÿØÿÜ%èϱ  7 ØX„ 9"Ð%Ê'õ*I,‚.ò1;3w516¾7ã9:9;|<¾>? ?ì@ŽA&AèBÀD E‹G0HÂIîJÔK€LlMYNONëO_O\OBOOO7OcOtObO*O7NÎNLªK>Ë>´>ƒ=c;­96Í4c2"/±-,*:'8#Ö •á¼­ò q B¬d Î,p~wÿÇ#§Í‘5ÿêÿç ÿþ EÖÚÿ¯ÿà#_›¤¾Òz\êpV I Þá”›@!0%K)M,­/­215 7¤:)< =ü?Z@²AßC)DoE¸FàHHëI–IþJMKKûM¨O{QyS^TÑUýVÙWñXïYöZ‘[ZõZÓZ•ZZŠZ¢ZZqZZYX¯W/U¸SÞRPMÞKðIòHåHgH—HÐHDG$DçBË@#=Œ:’7„4E1 -ö+^(3$TšÀnµö > ­qÒ¸üœšà;0s@ÿÞÿ¿ÿÜÿý@m‰'**F{É×Jîfï5 y F ?˜;›#H'T+a/U336¤:<ò@B‘DëFºH¡J)KLÓNOIP{Q‰R¤SoTTtTÛU×W3Y/[(]^à`aa¨bxc+cçdDdydHdcÊc£c“ccwc=bòbìb“að`Ã_°^B\Ë[Y%WNUkT@SŠSlSUR»Q±OÜN@LI¬FCO?;¸8#5<2..´*(%'ìóü£Ê E Þ_$¯HsÊÿöÿžÿ¸ÿèÿ·ÿ§ÿÎÿýÿðÿÛÿê7…Aô¸´¨?cÙW · × Êk 0#Ì'=*Ì.²2¥6S9Ø=‡AD­G¶JL¦N£PAR%S¹UVWXXòYÙZÌ[˜\-\Ò]„^Ð`vbrdNeÈg4gæhUhXh™hÉhýhõhÍhyh1gøgÏg´g˜gjgfáfâfÆfieÉeRd¢cßbÃa`4^×]Æ\ý\n[ØZíY»XEW2UµTQgN“JÐFËBÇ?\<49540â+¡& æ¦Eµ ¨ éÍ*Åò}{ÿó%5ÿòÿ±ÿ¼ÿæÿåÿáÿì+îC»ƒsìÙ  ˜ÕÛ½"H&’*¬.v2H6 9ù=´AD„HgL:OíRÊU`W+YZ–\7]J^^x__¤`FaaËbcNd*efshiÚk„l«mÁn n m¤m‚mUmlÄlZkýk¿k¤kŒkik:jåjrjiåiÎi„iGi@i:ih¼hDg™fïfQeåe]dÃc¨b>`¶_«^Œ]R[FYU×RUNbJÉG3C·?Ê;Î6Ò11+f&'!ûÇp Ç+ö Ɖ4ÿõÿ¶ÿ¯ÿÑÿäÿôÿü-3 ( = ¹ ê P µŠº¼…#ˆ(¢-x1Ç5þ9Ì=¹AMDÆGðJõN3RU»Xý[E]i^ä`ŸaÐbëcFc^c6cRc²dd±ecfIghijJk¨m nqoXp"p"oáoFnôn¤n;mÉmNmlØlßlçlÑl¨l9k¦kj¨jljiôj jUj‘j´jÅj­j•jkjejiÁhÅgqeìdÏcÖbâa‹`&]æ[qX2U QeM¬I¡EòA<£6þ1S, 'U#wœ S ˆ Gâ#±Ìš)ÿõÿÆÿÐÿç #Ío#\LÍ×6ñ"¶(>-Ø3:8A<¨A.E*I(LoOpRTÑWÏ[L^lab´d€e¸g g¯h,hgÅgsgTg‡g®h9hæiÜj½k¯l‘m–nÀoðq.qìr|rJqåq>pàp‘p*oÂoPonïoo$o#o nŽmëm1lžl@kÐkµk»llhlÌm)mem˜mžm®m…mflØlk j'iKh†g•f²e-cv`ó^[^WíSæP8KôG|B%<6»1+,'I"Pd­w Ç ƒ;aG€¿ ÿçÿ›ÿšÿ²ÿé!P÷lÜèÏuŸñ#6(-;3 8¨=ÜBÐG"K«OkRöUŽWùZ \d^Íaec…eBfegÎh´ioi‰i˜iUiháhÃhóiiµjklumNnníoóqr"rÌsDsr¯rqÄqˆqCqp´pƒpep{p¯pËpËpfoØonƒn m‹mHmm#m;mmmŸm³m²mˆmZm)mlõlÊl`kßk5jŸiùiuhgyeÓdjb4_¯\@XñTöQ LPGmAË;è6$1,&k rO7Ý ¶ !@T'·ÿéÿÅÿãÿö(+“*6(‹&À%¢$‡%N&ƒ)í-Q2j7Û=ØCpH‰M¦QÿVgY \}^U`Faåc¸eYfîh#iBjkkŸkÖkŸk•kqk6k jék!kdl$mn+ooçp­qvras@t$ttøt¼tZs¾sGrðr¥rsr,r qörrYr„rr=qÍq*p˜po¢oYoonÿnþnønÅnyn m›mDlÿlëlêlæl½lzl@l kÿk´k8jKih3f®d;aÔ^mZíVrRL¼Fü@é;l5ç0')ó#>¯u i\ŠJkhÿ±ÿ³ÿ½ÿú/6g5%3y1«0/“0j1Œ4Ò8:=:BpHM%QØVÖZã^ª`ôbêde„f¹gæh¯iYiÐjzkk€k’k]k k kjëjÅj®kknl`mxn¹oÍpÀq´r—stYu&uuìu¸uStžsÿs…s,sr·r˜rˆrµrÿs@sgs;rûrrq‰qp·php%oáoonƒmÑm lMk¼k0jöjÕjójÿk$kJk†kållk½k|jÛjHigÏeXb~^uZ·VQ'KEù@:c4D-º'M!*çÕk | ¤Lºãã|'AeA ?Á=þ<-;:3;<6?{CHMRVÊ[_ÓckfogÍiiŠj‡kº8N1©*î$»ôÍ"_ ðfëAc’ldJÌI¡GúFhEDÀE–F©I²MQ“UÈYð]úaœe™hZjqkkÅkùll¹lÀlrl5kÝk¥k)jlih¬hg¢g_fáfªf—gg~h›iùkÂmjnópkqŸrÎsÁtÖu{vußuYtgs srÎr´rgr9rrOr¹sKsÑtts³sJrŸqùqAp£oåonm&l8k0j$ihAg£ggWgƒgœhh©ij¥k±l¡mLmñnOn¸nÑo,n“m£kGhÔeXb]îYT?NÂH£B·ô8Ø2i+Ë%KÖ=Ï kQlŠmjn nmnüoypp4oÀo!oo3oIoSoCo6oSoeoon«m>k¾hýeÐb^Ø[ºX‹UqRO`LêK·JäJµJ&I¢HðHÎHÚIöK0MdOsRsU‹Y¨^&bÉg j’mÄpr˜tqvTwjxPxxÔxêyAyPycx‹w¹uGrgnid«`[©WNS˜OÇM-JåIýI6IHˆHƒH¯I¿JõL¾NdPGQòT7VËZ,]ÀaMdgi¼kçn[oóqJqOqpo¦n”mJjçhSeb1^YYåTPOI&CU<Ë5ò.Á'‘! ¼Ÿ6lJmµnÍošppðq|qïq´qpYp.pCpoïoêpp)ppoan™lˆj@fªbÓ^˜ZÏW'S9O˜KíIXGFETDôD2CgBqBBCD9FUH,K&N_RñWÞ]#bfPjTm•qs´v+wnxx¿yy(yvyUy-xvót&pØkÙfÌa4[ÍV¶Q–MOHöF6CäC1B’B“BBB"C DEÄGiI_KMYOÓS2VÒZÀ^vaÕe h k8m›oÑpœqp†pNo–n÷m‚kÀi=g*d%`·\WœRKM!Fó@g91®*œ#Èñlün…oÈp»qkr…s.s‰srQqˆqKqCpÚp’p—pÏq pìpÖoµnuk¤h’d-_©ZÍVJQõMKIFErC@Ô?Ü>ö>n=—<Ã;Ä;\;.< <ò>Ú@zCŽGL,Q¥W³]zb¤g“kµp$sovrwïyByy÷y÷z@yþy¬xß<Î:Ï9á8þ8€7Ð7(6S5ã5˜6!6©809qvßsoži–cX\FUzO HœC)=s9Ú6ô6q66°6¢6×7<8$9:Y;j<Î>+@LBEÍHÜLÄPíU§ZY^êcgKkmho¡ppqpåqp p&on%l•kh£eòb^zYmTMEß>?6Õ0)mFn†oŸpŠq\r—sTssr½r`rLr)q¬q1q%pýp¹o˜n€kðid©` ZoT×OIvDj?D;Œ8C6Ž4Ê3þ3A2ß2W1¹0å0?/¨/Ê/û1324Þ8%=âDK^R‚YW_Îe’kÛpÁu/wnywyÞzAyþz/yÖykwÎvdrãnähaÈYùRaK2D->S8,480Ú0"/Ã0š0Ý1\1í2É3¼4»5o6U749 ;M>ˆAhE#INS3X¨^b¹gj*m9nÖp0ppÿpþqpžpnñnFlÓkhe?`ü\|V)OtGÚ@g9n2.m½nÀoªpwq:rRrýs&rÒr¾r¢r›rTqÕq#pÏp omkg§cù^ßY®SÊMíH8B‰=Ä95Ù3 1É0k/ÿ/·/¶/…/.J-x,¨,f,I--i/›2O7¸=˜ELZS£Za h$mäs uæxdxêybyy>xéx„výu¬rSnhDa“YyQxIÌBl*i*+`-K2!7o>ÇEöMªU\ddVjípót?w2wãx€x-xcxw¯v>u qínvhiaëY¾QŒIzA¸;N4È0e,H*Æ)È*K*_*¯*ä+%+€+¸+­+ +W,'-”0m36¡:>ëDSJÃQCW-\`°eh)k>lìnDnÇoÊp9p8oÄoÍognÂm7kÈi=fÑbŸ]×WŽQ?JëDunno0o¬p9q q¦qÄq¿rFrŸr rqp\o]m7jÇfôc@^EYRæLÅF»@Ç;µ6¸3/|-w+˜++*»+Q,)--¾-°-u,¶+ô+9*ª*`)n)û+/3‹:J@þHºPDX`LgZmæqÆuIvhwgwCw w\wu´t¦qçnìiwc‰[ÀSæKèD)=¡72¢.i,¨+f+‰+C+#*é*Ÿ*[)þ))(o(Á)+Ä.1ˆ4Å9~>¿E/K±QàW”\Aad×h¹klím±oo¸poÎoÔopomålÇjØi*fbS] WÓRRL²mÜnGn§nîoKoìptpŠpµq’r1r82Ö-Æ*H&Û$Ë"Ž!¶!$!Í"^#¡% &ƒ'~'ã(=(r(þ)C)N(»'†'')•,Q1 7+>gEzM9U2\²diŸnøqÙtNtäuÀu§uªtÝt:rbp¬lÅhaƒZúT+MGÐB=ë9Ò7ð6Ã6å6½6#5C3T1 .V+Á)â(N'»&÷'I'¬)w+ .§2ê8ÿ>òEzKàR$Xh^dhikìm‘o~pfq`qzqSpÔpÒpƒo´n¤n,mQliêg„d·aÏmm#mbm½n"nJn‘nýoÒqKqåq”o¨njkKgja‡[úUMÍF>y7ð1¦- (Ä& #W!Ï v1ù š!Ó#>$´%Ý&º'¦(n)w)ç)û)4'õ'A&ç(²*Ä/P4 :ªA:HÚPºXt` f kåoGr1ssøsìt%s¶sqqþp£mh¨bl\OV$P:KIFfBá?<=€<Ž<½<©;Þ:Å8B5Q1¹..+~)M(c'L'?'"(H)1,+/Ð5t:ôAVG N'TºZöazfgj lÝo;p]q¢qâqÉqQqxqWp¢o¦o4n’m´ljNh'eóm2m&mmmÙnCn=nsop4qÃr5qÓo€mÅiÀdÙ]åW~OòG½?…7·1„+t'#Õ!ò ã™c \!Û#–%&~( )Z*É+L+k*{)8(1'^(O)ˆ-0µ6w!P (Ç0dA6í” !«#ß%û(0*,l.X/!/.Í-«,M+ ++:-y/³4T9P@jGÀO·W^RdõiGm n™oñpp~ptp°oÿocl²i$cå^ÈYÔU4Q«NJKõINGþG£G¥GE"C ?a;t6˜1r-)p'™%ã%w$Ã%%.'). 2k89> DãKåS%Z”`Èfyjmœo|q—rIrtrr[ryr qhpàp_pogn†mal7m€mWm¨nn’nxnÊoøqcr¾r‘r o lfG_ÂWqOÁG|>6Q.Ð)—$P!ŒdáâgÚδUý¡!o$&×)Ý,è/w23F4]3Ë2Ê0û/F.J-r.\/'2µ6ö=ØDÕL´Tq[bbKg kZm#nªn¼ooo>nÇnnl;8ó3G.B)À'C%2$­#Æ#Ü#µ%<'0+!.ð4q:A"HJOÛW…^-d…hãmoKqËr«srrÑràrqøqNpÃp‘p\oÙon\mum=mmýn„n„nüpbqÐrørhq·nYjµd;]LTÓLÕDŠ;­3î,Î(#`!/¨}›ÿxb$©J !ø%(v,\03S6™8“:t:[9±7·5Ý4=2ž22G5 8º?8E¦L÷TZ²aTf!jlƒnnn8mñn m™mDk]hÄd¿`Ã\ÔY VgT+RÿQ‚PÖQP´O™L•IrDÑ@6:½4æ/*N')$¹$"þ"î"«#ö%’) ,O1€7 >=EƒMIU \bßgïl¶oxrQsQsàsxsšsys:r‘q¬pèp£p…po{nìmem$m}mîn„n–o+pÇrBsNreq{mªiNb*ZÜRJJ A¾91¬*å&¯"† âàö2ˆ±"¿ £"y%à)â.¥3 6å:Õ=i?ç@;?þ>876,8T;€AwG?MÚTAZE`kei’k­m;mm%lÉlÝlulj?gÕdM`ò]žZ4WÇUÐUT8TTT)RûO¹LcGyB<½6©0Þ+ 'D$k#Ž",!å!~"™#è&õ)¹.ž4;CKS ZaaÄg}lêps8tEut¨t·tot2surLq"¿!¡ ô! ‚áoNïP×!¹#|'#+16:‘?5BnEwF9FŒDþCoAG>å=¨<¢>„AIFŠK›QRVÏ[ña4eTiekklÓll¢l;lMÄEI=.4ã.€(—%ˆ"Å"D!ý"U"!Š! Ù [ ž!"í$¶(´-¥3Ö9q>œDGüKLŸMeLJsGþEWCÌBžD5FKOT™Y[]±b eƒijÿlRl%lkŸkqjÝjZh½f—c”`á]þZÊXU•TwSÔTT”TR¬OmLVGÏC*=w7—1¤+i&ÿ#·"o —Êêdõ"#ì(,û4a;æDuLÈTà]d jÝoNsStðv|vv½vRvOu—t&r†q›q p o\nßldl#l‹lðm˜mìnËpÁrr‚p~n¬i½cî[ÃSûK‘C ; 2ò,ù'}$ù"Ï"Â"¼#3#9"ï"ˆ"!!¤!ß"#÷%Ò*/V5ü<AàHLšP¾RDS—R†QNœLJ”IxJÔL¾P©T‹Xê]`³dYg)jk lºl˜l›lkÃkjyig,deaÉ^®[FXTðSQÝQ¥Q¥PÐO-LIE@þ;Ý6{0Ö*è&“#S!ï  *_ !\%)M0O7Ž@+HŽPñYh`Ïh5mTqútv*v€vÇv[vˆu÷t•rÜqÖqoõo)n™l!kÖl/l€mmsnQpzDèK¬PìU»WÝYÖY0XU§SUQÔPžQ“SVhY—]8`¬cØgi‡kÝlæm—m`mzml°kÂjôiŠhe»c``\`X…TÐRIPVOvNÅM‹KžH’EÄB->”:5L0*&8"ë!]vob`‘J"B%Ù,o3k<D~MUµ]„elk+perûu„vvhuõvNuèt˜rÏqµpÙo’n¹n%kÑkˆkÕlllîm³ospFpKmªk*eª_UW OSG=>Õ7)/ˆ*G%…#¶"A"¤"Þ#p#È#¾#a#"á#U#X$ñ&Þ+™1$8k?X;L7‹3~.ö*&<#!!Îù ýùÙ!!j$F*O0ö9–A×JeR÷Zãbûin´qœtbtôu8t¬utÃs‡qÈp®oÒnmÌmUktk7k‚k½l3lƒm.nÅoQol i/cS\ÁTxLÆD΢E L‰R½Y=]Ëaãc$cÃbÝbXb%b-c&d|f/gch jkÐmÆoap«q'qq{qqHqp1nñm-kãjhCd¤_õYúTDOmKMH@DùB>Ì<9»7¹5¡30),ê)&û$¼#z"+!z ¥ u u! ì"^$))9/;7?GóPCX`@f¨l¸oìr¾srôrrFqôp²omómþ;;8[64l2Å0Ø.w+Ô)D';%m$W#?"Ÿ!Ô!˜!—"""#N$Á)\.ÿ7(>÷GKOtW-_(ekÅo!qör qöqq"pÙo§nml„kŸkdkyiaišj1j¡kklmIlûkühcÄ\êUÉM{EŸ=¯53-ì&ø"ø”–t  Ä!i!‰! à õ!¼!ë#Q$é)*.L5a< CIžOÖV€[úa'd fhggÔhri”jõlRmSnndn°ooÅp˜qNqár…rÔsrËr©qûq1oÁn~l\jff¨b6\UâOÔJtFAr=q95Ú3E1á0y/ -*÷(ð'M%Ê$Ë#Ï#4"s"5"."°"¥#Ô%)5.…6}>2F€NV(]ødUj¬n7qq8qpp4pomÉm lºl'l+lyhûiZjj™kkªlml“kig7b´[—T@KÖCá;é3`,%&!CÀxp#ê « å ’ @ y!@!€"Í$"'þ,Ì3¨:1A G–MüTÝZÐ`dfÿh.i_jEkÂm=n‹oLoõpoùppŠqhrr­sLs·t+t)ts]r‹q"oÿmýlhCcã]²WIP¹J¶Eˆ@Z;à6û3}0³/v.@-E+Î*.(¬'_&%$$#Š"Ù"¢"œ#"Ü#Â$(C-E5"<ÃEMT£\abÏiXmpp>po o2o;nvmŽm%m0mmSmãhPhÎi«jck k½l/m6l˜kig(b‹[LSÔKTCW;\2Å+m$[ lE¸¤Y)ë 7 â ' ê!J"#¹'&+}1Ó7à>kD¬K QðX'^)be_fßhqi¯k…m'nyo(oápoúp p»qÀr{ss´t7tÚu uthsr\q‡oÜn.j}f7_öYƒR©L@F…@à;ï6~2œ/†.F-,K+)Ì(‡'R&%$#w"Ë"‘"‚"Â"{##&ø+Ô3®;5¸;ÉA‹G¼NˆU [g_Ïcde?gUikumIn•oo¾pp p9pÞqÂr^rúsÊtƒu&u^u‘u9tÈsêsqrp½m?i#bÕ\RU0NxHDB.<¯6Ž2%.¶-r,1+–*—)}(Y'5&%$2#"Û"‹"f"Š"/"ª"È&*È2:B:CÚJPXV¤[X_)atdf]i?k}m&m×n«ootoÒpjqq–r4s-tt‚t™tÙtÕtÂtUt6s+r2nûkd×^iW>PˆJ(CÔ=â7/2P.¡-[,+l*{)s(P'*&%'$?#‹"Å"[""1!Ð"K"]%*Z2-9ƒA’IxQXÝ_xf^jdmWm@lÚllhm lÜlÃm:n1nùoæpÿc[dNeãgihîjfkom lºkÉg„bÔ[}TK±Cù<*3–,$¬ ~Tô*’ ÓKžâJ» ¤!ž#-$l&Û)Ú.%2Q7;b@^EÎK«QÁV¹ZÖ]”`vc&fwix7]2..c-0+Ñ+D*l)‰(‚'k&d%o$o#š"Á"K!ú"!›""%,)ì1³8ï@íHÖPX1^¸eœižl}lQkâkkzl3ll&lÍmðn×oÒpÿ^ç`Cb`dˆf°h²j'l:lFk¬g c'[úT²LƒDò=@4Õ-D%Í!mAÕÖýJùZ¨èVÆ »!Þ#~$¸&×)z--0Á4Â8‹<ÌA9F>K¡P¥UX˜[ä^ôbœeõiklÀmhnnzo ošpp°q•rBr”r}rzrhrmrdr¬rq”n¼k1e;_#X/Q·K>D¦>(6Û1™-Ï,²+W*Ø*)_(w'q&}%}$Z#`""!º!À!Y!â" %P*"1â9AHÿPªX<^ŒeHi-kèk²kLj‰jìk—k{klEman%nôpZF\^œaodNfìhØkdkÅk|g©cm\nUTMGEØ>@6.w&Ö"D²…dvY®èN² ©!í#–$¼&‚(Ë+è.Ö2&5n9<›@ÒExJ…OzSÞWÊ[O_FcfëiÅlOmrn]nŽnñoSo×piqqcqžq…q[q/q1qJqµqNpÞn j±dñ_3X‚R7K†D‚=~5Ú0,¤+›*I)æ)W(Ã'÷&û&%#à"Ï!õ!Ÿ!Q!^ ù!œ!û%x*n2/9TA9IEPîXZ^pehÊkik0jÚj,j‹k1k"kMlm:mÛn{oTVrY¾]uaHdÃgTjmk5kegúd&]qVŸN²GO?º7°0:(n#” VÛA€ÁAÌ œ!Ô#b$^%Æ'±*C,—/I2 5A8;o?-D IYN½S€Wµ\ `.d§hflmõoRo[o‰oŸpp¡pûqq&pöp’p@pCptpßpzp mijd”_9X¼RsKfCé<‚4Æ/ƒ+”*).(ç(y('O&a%ž$­#k"P!!6 ß ê !V"&+73:/B J#QÇY^ðeGhÚk>j÷j½j5j‘kjôjúk¨l~lÀmmÐNQU#YÅ^…bÛf i°jÝk‰hŽe'^½X6PaHøAX9~2!*0%!¥!±Lý5Oеõ  !¿#-#ú%&„(ˆ*L,l.Ê1`3k68ÿ=¯CII¤OET?Y ]–bžg#k¼nmpYp`p\ppzqqSqDq%p©oòoošoôpIoÉoglîiÆdk_DXÄRGJÛC;|3ä.Ü*ç)Â(€(^('Ã'&%%w$š#b"?!n! ‹ wù ý"&l+à3·:æBµJÚR}Y¿_re hýkj±j‘j?j³k)jïj»k3k½kŸk“lG)KOùUš[W`©d–hÇjbk³iPfg`KZ RlJùC@;Œ4D,7&Ä#"1  f   8 g › ~ Ï!¹"î#Ž$L%b&ß(/)Ö+³-À/L1z3Ÿ7ë=aDFJ¢PyUÑZÅ`GefjÄn)p²pëpïpnp­q q€quq0pwo‡nüo#o—oÛoRnþl¹iÎd°_ÌYNR•JÜBæ;}4#/@+.)À(R('¿'u&Þ&%$Æ#"q!‘! \ 2¬ ò"€'C,ö4Ù<CëLS¤Zè`zfjilk#jŽjƒjPj¯jÌjˆEžLfRKW±]Ëc–i¯m§pªq q3pp˜pÄpøpÛpŒoÎnÆn+nHnÒo7nân±lžiðe(`½Z}S°K±C¢<64å/ò+¬)ê(/'½'&Ù&&%Ó%#ó"¨!²! F ™!#(0.5ÿ=\E0MRTÔ\aƒg*iÌk#jejujWjˆj3iEh gifÂerddU8Ç>PELT=[ŒafMhÉkƒjdh`bÆ]XVN³Fà?i8)/ê)Ü%Z#é"4!ã!p!~!f!}!µ!Ô!ˆ!t!ì"«##d#Á$@$Á%|&@'@()i*\-°2:9Z@œGûNITZ™`Íg\kÇo6oèpnoóppp=p)oôoXnlmÎmÄn5n³n’nkl~jeÄaÔ[æU8M2EN=ð6–1V,½*|(-'C&@&%à%×%°$ò#Å"m!o à  À!Ÿ$ )/¾7·?=GO-V†]Äbúh-jHkDj\jmjiºhŒfûecƒaø_Ö^`]œ1E7°?fGÇPEX•^Ùd g†jüj”icÉ^½W™PQHnA9Ñ1s+ &$="W"!{!‰!‡!³!ã!ë!Ÿ!q!¨"!"n"¬"Ü##|#ø$_$è%E&D&Ø)º-4O;–CrJ&PXW]rd|imvnˆoUo o_o«poÿoÙo>ndm»m„mÀn+nmÇkñißfbz\ËVANQF´?~8*2¢-¿*ÿ(&­%a%6%B%i%:$]#$!Ö ä vÊúÏ" %+ 1•9§AWI0Q2X]_‘dˆi8jÁkcjUjhiÓh×fÄdŽaß_m\ìYèWÌVf*71R9ÅB·KÔTü\b\eÆjjui²dê`eY‚RhJƒC=;ì3…,¿'%$¬"p"!8!'!(!b!}!l!- ú ú!7!r!À!ø"G"²#,#•#õ$ $·%:'Þ+ 1'7Ä?aF%LªS`Yéa f„jælvm¯mÊn–oGoùp+p0o§nûnWmþm÷n+mìm{k»iðfnc]cW OZH@ó9¬3Þ.¥+]'Ô&$˜$z$l$m$ #!è Æð°1¯Ó"&6,ä3²;ÖC²KŠSxZmafW5ë.Ã(m%;"±"4!# Þ Ê!! ã « p 8 C v Ö!!_!¼"1"¹#"æ#@#Ä&T)G.®4l;BiIP—Wb^©d'hÛjãl‰lômõnÈo´p$papo“on¬n}nn+m¼l9jÌg—d/^€XGPÀI‡Bm;.5$/…+¦'ƒ%[#Û#È#{#2"¢!´ ›§åÀ^&ž"è'O.™5º=èEïMÐU¸\†cŸh k­ll:jÉj_h‰eÓaˆ]‘XóT OTJaFØCÕ¥%Ÿ/68ÒBÖMZV]‚b9hjLkCgÞd§^|XP=IAž9\1÷*ë&Ï#¸"æ!g Ó x ’ w O Ó†{  Y Æ!-!¸"~# "Ñ##“& (ë-È2‹8Ä?#FVM—Tž[ÎaFf%h¯jøkþmXnVoƒp3p¸p—p\oàooCo$n´nKlØkmh"d‰^ÃX®Q[J,C;Ô5±/Ä+†',$ð#l#="‘!÷!Q ¤Þ*¾Ò¾#¢( 0F7?´GÙOÀWœ^:e0iSl‚l~l‚jÉiÍfýcT]øYS_MYG~A°=—9çO r*`4>SIHR Z°`fÆiákÂi,f¶a[8S°L’Dé<ß5X-¤(š$ã#«! ê J D í¥SôÑÆ% F Ç!a"F"ç"É"î#K%{(D,Î0õ6a;øBÊIùQIX‹^3c?fOiikIm;noñpÅq…q‚qSp¼pDoÕo¨o4nÄm0k„güd;^‹X«QœJ‘Cn8Ú>ÛE‚LÌTYõ_)b¸fiQlm¾oŽpŒq‹q±q¯qp—poÏo:n™l›jUfXb`\ÙW)P^I€Bx;{5T/+*Ç&¼$º"ý"R!; Ç&êê¦?!%&+«3j:ºBºJýRÙZ{`Œfþjhl½kûkßi€gb\sU0NoFö>Ö7;/õ+&–¸! *¶4Ú?ÐIýSZaöf½j»jSi•ecay[*T†L¬E8=Ÿ5E.‹(í&#!´ LÞ‚z*õîúº½Í ©!˜"k"ñ#6#Š#À%'*Q-d1ƒ5u:ä@öH O3UhZÉ^¸bûfNiškÜnoMp‹pþqtq@pñpOpoKnpliKdó`Î[hUàOJHAŒ:t4H.K*>&•$·"Ë!Ü Ï HÖ„ós×ôÐÉ"T'¿-5úF›NUZÌ`¼d/g7gfc†aW\UUL0Cç;1þ(ÿÊ3û œ uô‚3D(j2Ï={G‡PòX‘`þfjiéiìfñd^ÀYQïK2CØ;À4š.L*P&”$Y!· §0´Ý ‡åbÞ !z"/"k"w"½#]$ %%º'G),0R5¡:ÿAFùM S^Y/^Écgbj lm]ngmðm8kBiŒfÝdI`J[ÛV:P¾JÞDý?=9k4j/ˆ, (â&Ð$f"Ó!” ò f¼¹ÕË V"%<*.Ë52;êCzKQöXŒ]bÛejg-e½d`Þ]˜WO@Ep<Ä3ñ*Ž!¦á t0ÍV ÛÀ5"†,„7A’KTSœ\›b¼hiKjVhMf®bˆ]ØWjQ„J®C(;Ï4Ø/Ä+U(n%"ˆ + ù¿!³ƒ  ¥!b!ó"B"a"‘"ï#[$$%Õ'1*7- 27˜=PBÀHªOUC[M`dàgÌj}kJl6kfj_göeÀbŠ_x[VLPuJ¯DÞ?(: 50å,À)¨&¨$µ"µ!« æ ’ÅNŠ !‘"ð%ó)X.‰3‘:A4H¶OßUë[ë`d’eÿfŠcûb]{XÏQ!H„>›5»-#¿m” òE'ƒQñl }F·&C0¤;‹E©NšX_.eåh¼jæiËiTfCbš\íW»QUJ‘C0;…5)/Ò,?(U%H!èÓM m¦19  Ê!d!¹!ý"0"‰"Ú"ÿ#/#:$$å'c*:.¸358°=ïCüJ…Q)Wž\âbeKhIijhêgdla‰]˜YÐTãO~IwC“>594Ý0«-9)™&å$`"ö! ! y *ˆXT ?! #)%p)O-*2˜8!?F“MéT~Y¢_,b»fGf‡eúbn_µZBTKAB 8%/&k`n õ6Ñ÷½¹9 fIÅ ž*O5"?sHüR£Z^b,f…jjjšh}faz\þW)QzJÁCRè9‚4[0\,(ë%í$k#'"ï""ž"Ý#O#k#Ë$„%Ž&v'V((ù)ð+s-%/G136:>vCßINRSÁWò\]m^W[üYJTaOÕJCä=7`2œ.j+Ç(ø' % #Å"”" !˜!h Ó Ä ï"<#¯&(E+†/3Ô8]=ôCïJxQVÑ\ _ædzfËh‹fÕdÁ_æ[ÉTÓL¸Bƒ8”/&,­( U8/ÇšŒÙ·ych¤q-¢%è0’:ÖDZMUN]Þc³hRi¸kˆk=khÓeöa­^?Y—T,MŠFÄ@•;6â2Ž/P+ñ)ó(`'æ'&&ô&Ï' 'T((÷*.+*,2-A.‡/É1b3%56™8Ž:–=ëAÆF—K7OÏT£XY\]]«[X?S>NŠH±Bt<>6E1Ì-Ç+[(Ï'J%Â$ü$@#ù#š#€#'#’$B&)(!+-ï1¨5d:>ÙD¢KQPVü[j_ìcfègöhd¹a²\VÉN­Eq:ô1C(Ù…Ô a `CŸ¾±Ã»-^TÌ Ð¦+N)h3¢= F¿NîX0_de¨h{jäk*lfk·jEfºcn^åZƒTôNÒHpB`=‚8þ5Æ2G0 .-T,…,e,+,g,‹-N.j/Ï0×1Ú2ó4I5ª7G9: ;Í=;>ÍAšDëIM QUPX¯\\æ]3ZoWcR`M·H Aü;ø61Ö. ,*)('|'&ð&Ë&ö&ä'ª(¶+ -Ž0ï47Ï;o@;E‘KÌR?WÈ\^_¯cäfši3h†fìbW^—XVQH&> 3™*5""´á ӌԄ{ßʧÈ,2ã (Àv"[+Ù5Ô>éG`PX_`dƒgïhúkkkèiÄfþb®_Z©UÛPKJpE>@±=:7ç5Á4Ø4454&4w4—5R6…89: :ú<=a>æ@„AðBÝCñE7G“JaMèQ!TkX[]÷^”^ [ÏX´SéOJdDÖ?L9Ê5Ø2|1/¤/.6-«-2-4-:-ª-Û.Ø02€548™;Œ?B|G:LÎRÊXe\œ`.bžf]èYGR%J?ô5ö,|#³U~†ÿàÛ°zt©Ðj©®)÷—eÉo#ô-È7@ HìQYØ`5eHgfiÅj¾l’lVk gqd_Ñ[îWtRwM}HÌE-A³?~=Gq?ýABBJC/D E?FH%ImJ*JæKÕM¯OòRÔUlX[0]©`.`Ž`c]‡Z\U­QtL–GLB+=9·6ÿ65>4ú4>3Á3m3˜3Á4X4»5é7S9Ô<€?ÇB™F#JNøTpY’^ad>f8håhég±cl_ÈYèSÿK{A÷7-ð%ƒ)R6 WÄç>‰ã#ÌGzÔ¥å0 €ãÝ%¶.Ì7ÿ@eHFQX|_Hcfgkj"kpljg}c‘`s]Y[UGPñMI£GjEJDMC6C%CNDDšEŒFÌHWIÄJîKßL°M¥NËP,QRQúR„S4T—VSX˜Z¥\Ë_Aa3c5c\c `U]NXúUPÀKöGqC @O>0=Ÿ<û<¸<;Š;A;v;¡<=<´=î?_AÄD8GFJMƒQ’V)Z¿^ƒaÆcäf˜g­h›f•cÈ^ŒZDS´L9BŒ8—.ì&4ë% –)Y¯nÙ ®PX‘¶Z†¢Ì |Ò¯&P/Ã8?ëHOÒX@^gc e6hièl>lzk±hÃfbÂ_Ù\¥Y UxQëOdM:LKK:K#K1KòL€M—NêP„RSDTXU3VWX;Y,YÂZ1Zµ[®\ì^`a¤cvdÖfHf!e‹bñ`\)XÈUQM.IGkEžNGU÷\”`jc°e¤hÚjÏl&k iVfkd3aÊ_;\fY;V­T›S¿RáRÝRÏSXSÈTÑVW®YZU[\o][^+__Ò`J``Ùajb3cHdEeRf‰gmhfh'gŽeabé_Ç]!ZSW$TQ.O?MžLùL`LK~KJ™JšJ¨KAKÈMNLP…RüV Y[ê^³acmeQgÒh«hñfMc]ýY×SÔMBD9Ø/&~Mâò ±¯Q¸B@“ûà‹bšEI¢fœû÷ˆ c Ník*&f.¶5ŽY0YIYðZz[ˆ\»^Z`a£bÜcÁdÌeºg6gfg"d0`s[#WQ¦KñC¡9ÿ/»&‡)(› AÚXÌd‡:\ÀÌŸaBkˆl)`£Dk'P ÉI¦#î*è0½7>ãGAOƒU‹Z9\Ü`bùf{hìj½jÈj¦i hÆgîg fÓfºg)g­h*hGhehÌinj j–k kQkkÂl9lQlkFjoi¶iLi'hÓhªhŒhÅii£jk;¢9W7F6,4÷4ò56‰8 :¿=W@tC†F¾J M OåR*T–V*WªWæWîV×U´TR~QOõO>NˆNMÍMLCJ@GÌDºB?a=9­5§/(™!“”7:à Y}Ý@ Ånë@¢_^ŒÄɨˆD?R«Œ+ÿ¯ÿxÿ½ÿüÿ±ÿJÿ…E£˜ì† á* }3\ _%x*ã/©3ž6/8Í:Ò=>ö@ÚAõBñBñBÝAÿ@â?Õ?C?%?>Ï>=Ë<ë;c9Ü7¾5€2ö0S. , +)õ* *F+×-0!2·5Ö8óœ<£:e8‘5ø3,.°)ž#€M ¹•  Êýa‚XdÄn 9hRåtRz¥Â²““PKH`w’lÿûÿ–ÿˆÿÅÿ¼ÿ‡ÿ¯„§,EÙ· }l¶!}#“(y,+/:0Ê2Y3g4×67"7Š7Ð7@6|5w4¿403¡3 2ˆ1§0›/-|+ˆ)~'I%#!K UX‰é!#%‹'ì*É-¦0Ä4 79É;Ý>?j@ÓABA@à@C?B>X=Q<\;A:8¹7O5Ú4x3+2#0¥/.,"(h#K?ì®® ÷€‡ÞÍV¿¯€!÷@®ee•—Œ‹¤\[RU`s$ÿÈÿ‰ÿšÿë&ÿÿÿ­ÿiÿ•Ú,˜ùF!¹  b$l++¶ 3$J&»(™).* *”+P+³+÷+¶+Z*Ä*a)Ý)>(d'¯&“%M#~!­†Qô1hecõû@Q!)$Z'²*Ì-§/ä263â5 6e6ö65þ4â3ß21+©*U)'’%þ$z"ù!ù!6 æ Ó *.¿Þ9´½ M n U8¿Õ=ÚÚKGãâ2‡¡a÷—‚—wN@_‘±CKN\cfR< ÿÃÿšÿ§ÿÛÿÙÿÿ}ÿ›ÿâ&6"ÿÝ ÖQâiNrí ƒÃø¢Û¹‹™BâaãšdçsŽ!§  o ú–g ,ièøo à å§a’±ð› F í!i Ê ­j²Ÿ©3þÄ~F£o Û “âZcÝGrÿþH–æßÇã"roΞŽhF2Ch¦/:AXeeL4 ÿØÿ¶ÿ¬ÿÂÿÕÿæÿñÿëÿÑÿÆÿÑ^Ži6ƒ‹úÞX7« µ Ð hž×— I y ì ¢ §   X Ý M t–®à"`¢À,¹å,éŽ{U¢   $Í™ØJsÁôÍÀÕîdàßf % 8£Ž ÃžXõ\c„Æ¿¥—¿$zWâÐǤs:"-Vs€ˆ5LQSJE=?*ÿõÿÀÿ§ÿ¸ÿÔÿòÿÿÿõÿãÿÕÿÔÿê%&ÿýÿ¥ÿÿ¾aÃ=~"*)´î« iÛwS7)Ù‹£EùÌ’Có(e¡û7ÎÍ$©  e Á µ ™ Ï ï g Å ã { Ü l ¾g´À™ÄQ!ÓR˜Ý>ÿú4eŒŒ·ûPs^ôÞÜΜ^)-Qaad6UZM5,/B= ÿØÿºÿÄÿãÿôÿñÿ÷ÿÿ3erJÿôÿß)Êh®:TÅ\Ú)÷Æy0ð¼™yS â•s|­ÈÛê÷ ñââÈï7æ¡‘}aFòœÝ Ë|û–$®æ,~Èxf¦äæ£"ªmk–Ÿk]p´CY:õùôÊ’];89EIHG4FL@/$-2'ÿÝÿÈÿ×ÿüÿýÿìÿÿ 2XNÿ´ÿ”ÿÅ'hSÿíÿƒÿIÿDÿŒÿ×DSq~‚reL0ÿòÿÓÿ¡ÿ‘ÿ¦ÿÝ%Kk˜¡ŽW)ÿÍÿÂÿÍ6ŽúxëF¤ÏçÑÄ£”VþlÑ:ÿ©ÿeÿ8ÿkÿ»B<$Z‹rSY„Ñ;:ü þ̘mPH;<GK@ &EQE+--ÿáÿÔÿê$ÿêÿõ.2&SfJ ÿàÿð1s}@ÿæÿé JŽß%Jj_L$㯇uyx{vy‹—•}^E8C[o`a‹Ë÷9IHFb|”p)µ>ÿ÷ÿÌÿð*l’{=0]ƒ›hJIw³î #ÿѪŠrcI>JP84LXH)#5/ÿäÿÒÿï&ÿô!#".KP2ÿÔÿÎÿë3!ÿçÿ­ÿŸÿÀÿÕ U¤Ýù "ä¾¢•›£¤”€yz|rU9/6F? ÿáÿéÿÿÿôÿÝÿÎÿÌÿÁÿØIiU-ÿùÿÏÿËÿÚ",ÿúÿÏÿÑNv{€oQFT‰Çû  ὡ•‹mOE96T[B 54ÿØÿ×ÿþ,<ÿéÿâ)C4%<ZSÿäÿÄÿÜE<(;g¤×ðîõùùâÇ·¶ÅÙÝÍ®˜‹‰…oZPVhkI+;O>ÿýÿõ >jr`V]y—¯›j&ÿïÿåÿð)sž–k[VFOf™Ðüÿþçɯ«¢‚W7ÿú 9QWA4)ÿäÿÞ/3ÿ÷ÿë)@D?9HM:ÿîÿêCI2K¡÷+)ûõõìÝËÀ½ÆÏÔÒÅ·¤”„sg^_kiH'*2!ÿôÿîÿåÿó/-)>e—®°‚=ÿö6`‰’\SR9<^Ÿáüý  öçÛÐÅÀ©|Gÿõ  /QR%ÿùÿü75ÿßÿâ9I$ÿõÿå?nkH65FP7&=IC+3üReTøèÚÆ¹³¶µ¹ÆÎÒÁ¤„snc_ebI1/7730,! ,>=Ed„œp? -l‹‹ˆwh_a`B>c©è öðù åÐÆÄ¼­‰X+ .<(  %4& ÿóÿ÷@? ÿýÿú#]zq]CA@(2M\XF-<kÃ!Vd>$åÍ´«®¼ÂÈÓØÞή‰ul[PQO<,+5AD;*#@P`~vW6@uŠˆƒsgbVeŒ¾ßñ  øà×ν €[5 0 !# 3:ÿý>I,=n‰†`>! /Kbqod_aŠÍBE?þܹ­°ÃÐÕÕÍÏĬvfTJHH;25@MJ5 (Sp}‹„t]OF68Liu€›©£‹upx–·ÔÚâ!+÷ØËÊ˺–gC-1ÿÿÿþ$.@0+GI<6?Ys…y\9')+7ANYfx…‚‹§Ø .H@3éɸ¹»½¶°´³£Štd[YWUNKNQQC(9`y}sbSNNBF]€œªµ­›Š„Ž™°Ëåóý$óǧŸ ’tJ& '  ,# -3-*I_bVLOh{rYKDBC>=8In–ª­«¸Ø7OY>ëɸ­ªŸšŸ¢šˆtilutmhcbZK5/Nfpkic]YUSGOm˜ÀË¿¡Œ‹™¬«­Áàø×®ˆqiaI*  +'!#%&-.(6\wvaLVgdVIBAFLOCD[£¶·¸Éî>O;öÜÐÆ¿°¤¡Ÿ˜‹xp{ˆ‡zqe\M7$*C[hjba``]UOKZx›·º©•—©½Æµ©·×ü汌mM7"   .1. "ÿÿ**#%)0.!Aj~qRIJIG>99EZeYMPm–½ÐÔÜë "/# óéèäÜͼ°¨ž”ƒ|†‘‘ƒsaSF7-&-8J[bc_afkhXNRj„˜ š’“©¿È»£“›²ËÚcJ@,ÿøÿþ"("#Ò± õ ý8ês±o')¯BP“Àü äÂà RðŸg¡ßÿ0'€ è!\!|!5vÑ'+H>6  3 ý ¥ ¢ ¨ Ô ø     ò ä ë ô % r ¾ ù ò Ê ˆ L T ” E ~ ¶ þN¿-¿NÓg¦ïFlÀì@²9É ÃŠO)îÜȦ¢öGµ   Î*Ú–…SË“tu¾t‡õÝ|µIòU ãvü½ØPÐ t!@!z û \ • æ Ý )Š bÉåà$  ë   » ² ¯ Î ë        = y ¨ Æ   U ÿ Â Ì  I R F K p   ñ = ¦ žcŒÉ`´)£Cæ¤n*äRž¨®ÉrçîÀ忬£µÍîèz: ëJRú2ELO7!ã±2³¨>ÆÔŠ£™(¢/¤ü\‘ϲ÷ÔÞ U!")#[#¿#d"Y!Ó!) O4w=5$N = 2 : • œ X I M | § Ö   * 4 L k „ — ¶ ¸ « p  Ú ¯ Å ý 1 ,  ø ú ý  9 s ¢  ” " v ž Ç  g£zO@B)óƒÚõò#MjOf˜éшp©ä¾{Ìã· \'æ®1«T¨vQ/‚Ç #`ýs›õ?ÿžiÀdR U š I4indI‘8Eìt  w í Rô ÔÀÏ : q ¬ Ú ø  8 \ y ~ … k E Ñ ± ¡ Á û ) .  ë Æ œ … | ‘  … À Ó Ú ù . £ ! Í l1ñ—'³Š{ê¯F“ì wúdî‘lâåv üÙ* ¹ "Æ‹ùm\&{p>MºüCÄ r!Ì!² ÃÞ9èÈIº0 $ìÖTEj`D*ÓðÆ ä i å ú * ø $ û  C ^  ± â   = P X N R >  Ù Ÿ } j  © Ç Æ Ÿ | Q #     U Í Ý Þ ß í $ g Ê  ‘ < ÿ ‹"½¼ÉpzpÐF*FD;&Xm!ÏziêDxƒyè_N,’Ð+´qÀÓÛ ™ û +ù+„N†e—§êl7 ­8§ÿ//P6 Æ v } ú \ ÖÞí ðÝåôïñ ) ; E T Y N G ] j [ 2 ñê F s | [ 9 ÷ñù   . d ¦ × î ÿ û ô ñ ú   3 “ $ Œ ‹ Z%~-¨¹ƒázë?qÞñÎ6-o2ˆ¥xkÅñN„c'3KVË·½ † › E¾ Ø©ôÍøÃ^ˡج‡g ƒ 1 Ç . ý u ¶ "ÐÇ«—€[/ùÄ—nR1'0DDETedn–¿ÊÈÅçƒ  ] ‚ W *óθÅÌî $ Y r } › ± » µ ² ¨ ˆ – Ù C ƒ Ì  •  GØj¹ÂsEô˜%ØJ¢w#V›7Í](jVpi8镎H¶¨#p;…'s¤¤FýL(Jì d Ç À . 8 > û œ k ;㈃U$ ûðÂ{‹¿„=ðëéêÓÊÙû )[’°Ïí=¢>ý†Ò³P'ðóÿ9ˆÔú  = i ‰ š ­ · ² Å ý F s • ± í ( » d pžÌÉ€)¾j#è’5‰¿¿‹qtèUX&U}]-nD«H`1ž@\–†3þ z p Û Ü ù 0Íœ…EÀaÿÚÞû!)!%#1 ½5¦.Ö±ƒuswnT*0Ch™Ëè *yÖr8â[mtG&ÝßîHÅSÀý 4 G T ^ ‚ › “ ƒ  œ Ê  5 e Ü , Æ … d4Ï9ž1ö¹n)È/º‡½±ÓçÀeè£N  5 [¬j>´.«æ8ûU { Í Å àzYg‡GºÃ©Ûm‚‡§¿¸—a;ê¨Jì§rkl‚œ e6 &AeŠ ·Ëý/œ2ÎM…­œŠnR^nÑZ¿1{ymj–Ðíöó E è . r ± é / } ç f Ó  G ¡+²_Þ›% } %   Û § } – o ¬  å   ¨ ÑÈå™ ± ý T ð N 9ùæKãÚ½©˜ZtÑLéÜ=‹¼ÐšUô ]!öÄ s^^o„~[+ñêõôDh‹¥Èå-™~·áÛϼ²ÆÒ}'öª-F28£&¦þ $ A [ ˆ Ì ! a ƒ | \ h º 8 • ×  > j À + ΂1¢ Í S '  ) + / 8 9 f # O oó & Œ - Â Ñ } º ¦{C®ÿ9ßµQÀ eë„T N»27ꑵhõ4QUHLF5å¿£›™Çô#Ig}¢ã IRVOMXl‹ ÃÛ3Ãkù9>3E¿y]'‘¾²É  b ¸ ñ ë ¸ ¢ Í G Ï 9 o f Z X ` ©  Ÿ ã 2 Ù ² ’ ¤ À ê   ·ð#±¶Èù- ¨ÿoºzü™~~_ ¦c䪽ÅÄŸzt}}of<ù«gL:Z…Å '%ôÊ™pJ$ÿÿÿÑÿ®ÿ˜ÿŽÿsÿqÿ}ÿ´ÿóAŒÅñ 2:!õÒÚþFŠÁ÷þݾÂ\ÄUi¬û ýœÐþ!kÄ % R J !  ) ”  X c o ^ @ 6 K € – h : õ  5 h ‚ O ‚Ä%ÏÔÔáîÁmåoúŒ%¡RMPœ£9G©-uY±WͺÄÙȰ ·à-y *2 ⹡•‹uK ùßÒÍâ÷Ox“‘x*Ëyp”î3l²º—>ⱞâD®Ùû©“®’±óJÃ1gG…  s À  é ® z a a¡’}ht¨ÍÖ‚a•â`(èÑÍ·„¢+Í›o[_.¬¨š­ €³’ŸAÿùÿ÷ÿÿD¡ñ  >h¦ì0j’¸Óõ&+(ïÃh"îÖÕʳ¬npÿÛÿ‰ÿkÿ ÿÀY¦äÜÁfÿëÿ ÿŽÿî^è=‘ù‹,Ý‘tµ ˆ<²«ŠÆMç S † [ 1èœpuñðèãáôçËaê/_—æ‡:<WiN÷‡6;TU?ôy9BÅbò_Lû|#*Œøwô9\E2!0T«†•,©M‡·ù 0 h p t *Ü4h†Ì7š º[écÍPî½|ot­ø2i-œÿéÿUÿWÿµmOUIhå—Zå8pÏ”K•®ôf | nR)ùç.86. é¢VÛaºû<|ó(k…SìŽn˜Éµcûª½¦y§ùL˜ðVÄ,šÍèº~7øü‰Ò  @  Ô Á …tÎ+¬(ŸÈô‘ò œ ò m „c[ÜxaC µe¦ïˆ=V›ÍÃMÿ¢ÿþ¾ÿÿºwÛÔÏ„V X޵.}µýˆ ^l{fC6bäðòá¢]ø•&ÃL·'_wÜ2E¸¥ëfÀªnC§Z“»ãàÌ Á ×  DHä°Ú¤Yí‹`6†öÞÔãÍŸqE@ –êJÉr'Ø5›EÎcФ] 9 n Ž õ  ; 9 ô µVЮ½ÞÇVƒÿ‚ÿ ÿ0ÿóìÆe%t;)§×VÉ0]Ç.œõ:NKLy#0=+èœ8݆=춪ä?fR þJ÷•"_ÚŸþ ! s º °k6oñ\FÄ~{’j/;XT.ÚŽ; £ õ!'!v" "È#«$%1%â%Ç%~$"™ H\£ŽêšA픿 á z  &?t‡þ<øÿõÿÿÿaˆ$ÿå6ý¯&IO¢Kig{Ä8§õ3^Rb{pBÞ°IÏ­™ÃSf–(??u® h g £½„öqJy¾»™¥ w ˜ Ó » } b x!!Í"Ï#®$ª%Å&Ò'Ç(x))**’+0++Á+Ù,,¶-m.V/A/û0È0Ö0³/‚.=,!*'m$Å"Q4iu–÷/<^ȼk ¦ ·x« úBÕÿßÿLÿÂkï´3Mïœáãý!hŠa37ŒývÉï ËâèÙÎÔ¾}7<‰³í¥X©Û† Á N2ûxúž« "$Þ&ˆ((ß)‘)ß*U*§*Í++—,p-V.@.ý/«0|1?1ë2m2ê3Z3Ì4S55–5Ø66\6ÿ7¿8Ÿ9z::Ì:Ë:œ9q84614*1¾/P,æ*o(&è%À$z#!vÊQÚx”v™{X S H½òãCÿ¡ÿÿ>ÿ÷8'ÿÔÿ´ ¹Qz8G\?é jús©¯ *RXXh‚¨ªl@F®1Ñ#¶sÞd{ i çw¿n‰!ð$/&–) +µ-æ/È0à1ó2•333È4‘5X5ï6€717÷8Ê9w9÷:Z:Þ;m;ô<}==•>>È?­@{@÷ALA¿B_C$CèD›D÷EfE$D¼CqB@>;Ù9Ÿ7–54 3271/5-*Á(¡&»%#)!7©ð¢&Ïœ Z œ N•–0pNU„Ñ.>ßW<È‘‚‡^UŒþs«¦þèÿÿEÿ_ÿwÿ¥ÿÍÿéÿéÿµÿË-ëížÏ_¯ ç –PÊà'#&G(ó+ð.É1«4'6£8j::ö<<¹=[=÷>Ö?©@E@»A6AÚB®C•DNEEÉF GuHHIIàJžKxL‘M…N"N†OO©PwQ,QÉQòR/Q¥PîOOM¥KaIF§DAÞ?¦>Y==8<Š; 926£401Ÿ/5,¾*<'†$Ø!ÕÉCW¨l ã éo¶uÙÞ?ÿå2¸Ù™6ÿèÿéÿÿGÓØÿ›ÿÀÿä My‡¶Ú‘‹…=Ç ç bd+Dû ø%<)q-(0v3s6î:= ?,A5B’CïDðFFåG‡HHÑIxIÛJJ;JÌK¸MNO4PTQlRƒSTrUHVVãWåXºYDYZZ«[n\\¦\½\é\K[~YÑX$UáSŸQN[KèI{H"GeGMGFDÏB•@a=™:Ø7Ë4°1¢.¾, )¤&¡"ï–=‘…9È 2÷F2jñ«˜Ÿ)KƒŸIÿãÿÊÿî % HsŽKZh©Ñ1¼làk™ ´ HÚ錳0"ô')+`/•3´7€;2>BTElH'JKûMgNÓOÚPðQ¨R5R£S]SõT9TeT“UXVŽX(YZ¨[Ì\½]­^l_)_¼`F`Ãabaáb+bhbÂcOdd¨e;eqe»e[dÍc|b4`Z^}\7YËWrUS¡R§R?Q¯PµOMªKõI—GCë@›= 9‡6U30²-_)5$µ 5µÀég åf„ÇrIÿ­ÿ¼"ÿéÿ¾ÿ¶ÿÜÿùÿæÿöAºw]h_´"} º Û°˜BÊ#M&²*f.s2­6 :w>oBMF`v^²]O\;[cZdY,WÕVZU,S“QÉOL6H DéA==ü:ô7÷4t0š,'T"äÂ>s 8  œ·ÿó(1ÿñÿ·ÿÂÿëÿëÿèÿõ5 # Ü { &ü§ … ? +¾= ]"‹&ˆ*G-è1¨59¿=×A–E^I”M·Q¿TñWðYð[å]+^˜_m``P`«`ùa=a«bQbÿcccÐdTeEf€gÍhæi‡j j,jMjPjtj€jnjIj-j/j=jqj©jñk?kvkœkk¤k”k…k^kIjójƒi·hÜgÖfÙeïe3d\c`b`…_]ç\®[QY8WSôPºMI¢F'BÇ?0;¦7f2§-–(Ó$… ”Žå$g ÌÎê“32ÿóÿ¹ÿ±ÿÑÿãÿôÿý<Î+ gÅ}«é9_ j$Þ)”-é1Î5“93= @ÙDHK~OSPWCZÏ]G_¡ab»c¢dxd–d„d79N4)/ *|&#!¥²ú ” š¥–8ÏÑœ)ÿúÿÉÿÎÿâP¿âá!Gµ“„"3%ê*/‚4o8Ò<¶@¿D”H‚LOCREUmXÐ\¨_þbÇdfWgoh™höi$h´h:gÄg}g’g›hhÎi´jdjúk‘l.lëmn6ndnUmémˆmOmMmpmjmbmWm{mÃn-n™nÐnñn®nWmÅm*l¸lmlvlŠl½làlõmmmmmlÔl…k×kjiGh]gifIeHc×bI`]½Z¬WTS¤PmLîIRDÂ?È:84â/º+%éèÄäe xÇVn°ÿæÿÿšÿ¯ÿä'&y%s$+#8"Z"ç#Ê&S(Ç,š0¤5†:y?/CkG)K7NÙRTU%W¿Z)\ê_·b¨dñfÇgÜiBjj¿j§jgiÌiKh÷h·hÏhÕiVjkkÑlclímonn¡o7oYo7nºnGnnn9nTntnƒn¶oo{ppSp„pEoõo\n¹n)m·m†mYmPmFm@m+mmmmlúlálªl|lk¤jåji!h`gqfgdóc£a•_-\YHVRüO JäE£@ :?5=0 *D#Û b eaS(À ÿóÿÉÿãÿý /1œ1/Ü.X-;,j--ü0‰37!;n@uE_I÷NNRUïY[È]Ê_àaÕdfhi]j‰kHlQlÚmlÄlgkäkrk2jükk4kÁlŒm~n9n¾on80ý)Ï"è¦( 0µÈì ó€,KiG`F©EACBvAãBËCEíH«LœPgT„X \|`zcgeêghh³iÍjÒkªllhl†lÑlõmlËlxl k¸krkjàjÆkkjl>mIn…o prq*q‘rrkGk…kãlIl‰l²lïmmMm1mHlRjæh9eàbU^‘YvT>N:HˆB-;‚4R,ò&6 è$C …°Vk—viQ?P|OMqLLLßM™O»RLU¾XÚ\$_£báf(hCiàjUjÖkkÆlPl¦lžl›lYl"k­k!jpiÏi/h…gógUgfægEgœh–iÉkRlÄmúo oÃp|pûq–q×qùq¨q"p¹p«qqTqœqªq±qÕr0r®s#s{s~sxs rÄr4q¨qpmoªn¾m¼lÕl kLj‘i©hñhmh7gêgËgžgÄgüh§i{jrk5kàl£mNmøn_onÃn0lWj•g§d½`’\DVâQŠKE“>þ7í0ò*Š$ƽG¼j rÔ_«Ý+[2ZsY WVÎV^WW¼Y‰[³^{`áchfQhãk@lomsÉtCtštÍuuDu¼v v:uØu^tWscqòpbn|lÁj¼hvfcÑb`’_˜^W]\ó\ú] ]{]Â^P^Â_ía‚c¨eg‚i•k|mPn¥oûp¡qLq p¶oGmÊkBhíeWaW\QW·ROLF?92É,«&( :s¼ # økh*hgfáf„fgfßgeh5håi´j„k†lØmÉn7nn n mûmËm•m=m6luk5hþf°dUbz`®^š\EY•WœVIV U•U·UÌVŒW[XãZv\–^²a"cŠf'hïk‹noßqVr(ssétÜuv@v˜væw"w˜wÛxwšw u¬tQr o¸l×j.gddxa—^¥\SZIY W«VîVo_o=onÍn­n´nªnšnmŽl'j½gûdµ`³] YœV R“NæKÞHþGhFGEØDóD/CTC#C!D&ECG7HÙK”N¬SW‘\taeNiZlÕp“smv w_xxÜyCyPy‰ybyKxTw_tår'mÇi0cÏ^¨YŒTTOÅK9H)EDXBüBFApA@…@ÓAsBúDAF[H²KÐN¬RPVuZå_b’f hÖkÀmÒoàp¶qApÔp–oÜoan lBi®g¦d¸aX\»X;RÐMnG'@¼9 2K+/$UŒwl¶mÔn‹nÞo.p pôqmqpso¿o¨oÄoo0oo onõnÜnmkhÓeEaU\¼X†T[PLH EBB@²?p>Ö=Ù=<><<=>?ÖAYDCG¬L¬QËWv\ób føk@oÒsCvcwóy[yµz)z+zdz%yôxÃw™t¾q—l•gPa%[@UfOhJ"DÍAE>\=4;ä;U:”:I9à:G:ø<~=³?ÏBOEHˆL'P,TÈYS]ªaãewi kÀn‚pq`q€q…pÿpípCo$mclj"gäd]`À[óWIQjK^D.<°5-µ'I Šl@mNmönFn¡o¡p€pðp©p)o«o´oÛo£oRoAonínLmÍlWjªg¨dŸ`][ÙVÎRMoH¨DŸ@Ó>3;:8Ñ8@7l6Ü69666Ë7v9:B=,@¡EþK{QÊWþ]êc™hmøruÒwÄyŒzzŽz…zÅz…zKxÿw¾t¶qllf[_‰XüRwKãF@;ø8‡765ç5¢55 4Ñ5F67]8F:<@?hB=E¿IhMÖReWA\`‹dÒh/k–mÖp pâq`qqp§pnînlÉk€i!f‰b£^âYÇT‘MæFÙ?=7Ò1*!l}m‡n+n‹nöoøpËq$pÚp{p&pAp]po²o™o5n¤m`lJjgŸcÊ_ô[UãPdKF5A7=P9Å7ƒ53Æ2°2D1¥1+00?/ô0K0£1è2Û5§9>¤D{KxRTY _ne=k„pstëwCyhyóz}zYz“zPzxÅw‚teqkoe[]ßVOHH%Aè;s6é2×11/Ò/â/±/ç/Î000ó2!2Ç45Õ8¬;r?B‚FËK1PQU³Zþ` d'h&kn oŸp½p¸pùpÌp¤p*o¯nðn‚m>k£h¯eÚa˜]VWSPÍI:AÁ:Á3“lámÜnrnÕo

þEøM‹Tß\(djˆpwsÑvíwÖx–xPxƒx=wÿvÎu»ríoýj–d¨\ÙUMEC>–7Ô2ý.V,>*´*å*Õ+ *Þ*Ö+++ž+š+ß,C-Ì/˜2¤5œ9=WB\G÷NtòvKwcw9w‡wç93‚/+Ì)h&¾%c$I${$Ÿ%£&ö(9(ý)#)B)>)|)¡)¦)V(c(a(ï+Û.ï4b:AVH€PBXD_˜f¬kÎpÍs]u|uÔvvHuútÉsÃq³oêl g[`•YÒRŒKoE>…9Ä55371î252!1è1j0P/"-‘+Ó*n)L)(¯)Œ*”-./š3ð8Ù?>EtKêROX1]ýbÔgñkGmÚnÏp$pÈqjqŽq¤q•qÛqÆqTp_oÜnˆlÔiÛfœbñ_QlKl¼lâlèmmImánfo@pqwqÔq.q6oYl¦gybO[½UiNAF?68$2±-{*%&ø%"á!Ú!%!©"#F$¨%é&³''_'¶(V(³(Õ(['F&ç' )e+ç0Þ6!=4D(KéSß[qbÞh›n?qettuuu D‚KyR‡Y``weýjímŸp%qCr°sDsustKtçtãtdt8sßs”r­qgoºn4m³m¢mžm©mËm§nop‚qÜr,rDpunçje]ZV;N:EÌ=5†/6)%v"G!¿D€H ª9 w!Ú#–%&Æ(À*r,,†,¹+ç*ç)ì))`)ˆ+«. 3 8r?ÒG4OVò]Öd¶i0mnYo]nýnøn˜nxmÏm‚kGhb¿]pX9SPL«J8GYEâEdE©E¡DdBÃ?U;µ6Ý1Œ,ó)-'[%¤%@$”$ù%!'%)ž.S39n?ªFÉNUv] cCilwoŒpïr°s[s‘s‚t6tÖtütªtwt%ts{r›q]p=mÿm»mžm“m³m‡noHpÁqòqéqåo¼mŒhPb*YòRcJ7AŠ9_1€+®&# ýõ„õÖªß!6#)%'a)ÿ,K.d/=/Ð/+.^-7,;+½*î+É,Û0û5å=ADnL;T[bfñkAl¼mÚm\m6l·l‚kòkÀiãgbo]¬YTÞR OMúKþKJïKJ¯HÁFwB\>98Ø2Ü-}(Ó&h$i$#9#g#Y$ø&è+/T5s;“BîJoR=Z(`ìgrkŸoEpïrüs¶sòsÀtKtÕu tÝt£tatotOsásrpnm mam:m_mAmÚoGp·q±qAqnqkˆeŸ_VÏOFü>w6½/J*%"³ ì •ûg;óA§Ø ö# %[(s+».½1Œ34P4+3æ2ß1õ0ï/`/2/P2Ç7H>kE3LˆSÄZ_a$eójUkõml†l8kkjkjhheñaà]§YwU‘SQ(PpO\NüO@O NL I`DÈ@7:l4.0(À%¯#Y"ï""$" #{%(Í,2]8Z?ßG„O’W›^¶eÌj´oq#sŠt[tºtrtÇuu7utžt;t9t3sãs\rén]m±mTmmJm3mÛodpÍq£pØpWmAibú\SÓKîCè;ˆ48-/(‹$4"q!3! 5~÷Ëv¤ò  Ì"â%“)s-a14„6¡8~8à9C8Š7Ï6^45332¬5¦9Á@FÆM€TZ!`cei]k lOk§kDjoiêi+h¯g dÆa/]xYÈV"TR R¶R‘RÒSeSRvOÀLÆGÂB¤<:5m/ (æ%7"{!é È Á •!Þ#C&)Ñ/J5 <ÚD¹M!U]\Ödyjoq­tkuPuÕuu°uÀuËuvtÖt;tt sµsOs n^mŒml×m lûm§o;pŒq>poCk¬gN`DYEQ(I3AK9+2^+Ó'Í$."÷""!B ” Ùy“È »!C#m&~+/¥48/;=Œ>?Á?‰?=s;9Ë9/;ë?žE¥K;QVÉ[öaRe^iLj÷lkYjèiÿi_h‚g×f.cý`¼]tZ*VºT®SgS­SëTjTúTpS›PÃMËH¼C`<µ5Ý/o)%"!Dï½i z! $†'B,G1Æ9yAaJRdZ-b1hkn%qjt¨uÐv®vuv v‚v~vu%t8sÈs„rìrjrn%m+l¦lTl‹l}m1nÚpp¨o-nje]¤VuNcFK>r6~0**&»#à#B"º"Í"Q!¿!F ó { { ™!Œ"$j'ë-B2i7}i,h\gjf»e:c-`5]JZ_WDU\TTLT­U@UÅTûSÌP­M¦H­CH<–5Ñ/f(ï$¼!— Ÿ#® ¨U!·#é(„- 55= EåNlV_ eñlpputSuÞw)wwPww%v¢u˜tcsºsDrrqÒqhm·l¯l(kÎkÿkîl›nCoeo»mélkhbÊ['SåKáC´;ë4.5(”%Ä#€#O##)"ô"”"%!¿!O!T!]"W"è%«)Œ/p5:Õ@„DÔH¦J»MGMÍM’KšI/G´GI?LP…T¾Y]/`Éd…gPjkCkèk$j„ioh‚gxf³eNcs`Ù^U[³XÙVÃUT¬T€T‹T”SSQ…NJÞF1A:ö4¶.¿(¯$¢! wú]³÷Ï!s%y)ó18£A€J R}["b‚i¥nlrõuvÍvøwHw w;vÇu¬tBslrÇqÅqp‚mrlbkÜk}k¥kl,mÈn¾nÙl«jÏf`qX¡QVIrAC9•1÷,k'2$Ø# #*##E#I#"¶"X""." ##¥&´*æ1P7}=ÖD*I&MžPMSƒTzTˆR¦P~ON^P*RšVZ]°adgmiÖllšlÁkØkFjYieh-ge d b`%]Ü[/XÌVÓUÈUTmSØRO‡K£HCš>Ñ9B3œ."(w$!j 6À$FBI£"ï&²-f4›=wEðNŒWU_(fälaq„tvJv­wvÁwv­u…sðrñr(qpBo³m*l-k¶k`kkekåm^nmòkni&d^-VVO GC?70 *Í%ð#ê"["”"…"Í"í"Ô"w"(""g"N#$#Ó'+2:8¿?ŠF>KÀPâTJX&YšZXˆVàU²UVXÐ\G_0bd¾g[jmlŸnWnynLm`lòlBkoj&hÃg2e×d[bú`å^+[:XÀVêURSÑR\OÙL¶H‰D¸@m<7:2K-‚($æ!ü Ãkì/()#¬"@%D+c20:èC+K¸Tj\gdnjcoôrËuduávBußv\Ï^µ_…^)\â[ð[q\»^Äa§cÔeØgîjlÄn±ppoßon½n$mvl8j±igÄfe•cœ`¹]/Z,W£U\S!PßMÈJ-EîB>9ê5ª1G-(Å%œ"ô!¿ [E?ñ " $g)ü0h8úA I…RZ4byhØnËqìtÃuHu›uumusÓrpÜoönÊn.mÄlxk´kak(kBk*kul¦làlXi;f`VZRJÂBû:¡3+é'P#0!Ø Ã!*!M!£!Þ!Å!F í!!¥!’"k#;&Ó+†2¹9ºA$HJN²U,Z%_Ka«bòbaF`·`•aÐc¨eòg€hÎjGkóno™pÂpæpòpyp5o­o0n.lßkRjhÛgóeçbâ^á[RXTûQÿNòKWGUC?8;Œ7Ô4&0L,¿)(&‘$O#/" !‰ Ú ¹ ´!G!E"Ü$½)Õ/ä8D@&H„PäXâagšmÃqsøtftžsýtHsír¬pío¸nàmÉmPm lk`kjëkjðk(l7l0kigúdp^\WãOýH…@«870À)°%d!˜ · D ‘!!`!Q Ë g •!7!2"!# &Â+™2ë9ûA~HºOsVc[üa¦d”f|f.feêf+gNhèjŽkˆl lämÙop1pÿq7qkq6qp–p>o…n¡mblEjêiògÍdØ`\”XhT…P±LÜH¼D6?Ý;é8ž5^2f/-,I)r'g%†$v#f"Ö"!ã!Ì"@"%#y$ð)/<7h?+GzO®Wˆ_¦f7l’ps sds‰rÛs+ràq§oín¾mõlõlšlqkTjÑj§jj³j¼jòkðk³j¼g c0\ÞVCNQF·>Â68.Ê'Ç#¬ PŸH¼ S Ð Õ a  . Ø ð!ý"ü&¨+m2†9A@€G”NoUŒ[„audßgigÜh}hÛijÇl8menn?nynÖop8pÈqqVqWqZqpèpioîo nlµk¦iffžbM]ÜXÚT O|JùFaAH<±8”5¢2Ú0›.+°)w'Õ&H%G$C#"×"ˆ"_"¼"™#¿$ß).|6ˆ>l9—5J2¤0N.Ç,Î+)j(#&Ü%ã$ã$,#d#"á#"Ð#›$>(-'5&<ÉEMT¶\—c1iÛm¹pÆqqpTp¿pÉoÜn‘mÖm’m"m8m{iini™iÚjCj›jäkÕkRj*f!aÖ[TKñD%<3o+û$î ÿË_Ô‡à{§pI Q ­!ß"ñ&;*z0§6M<ºCGJEQšX"^ibveËghi]jÚlmíoPoþprpCoêoÊp9póqbqžqÂqür™ssr¢r6q‹qp)oqm6j“eÄ`ŠZ&T N H]BÞ<«7…30‡.o-Y+Æ*`)'ã&Ä%×$Þ$"#a#"Ö"ò"€##K&Í+Ð3×;mCªK§SQ[3aÛh¦lŸo³oãoÏoo‹oÆo nm©m¿mªnnƒi1iieiÌjZjÔk+l%kjUf#a¢ZªSK^C;‹2Þ+f$R jQùc—Zåòì7ý !Ç"ë%ô)Í/R4U:1@1FñNTÐ[H_¸cYevhjJl ntDDJUP|U‰YË\ÿ`£côgtj lŽmÇnÎoo‘oÏpp;pBpwqq™qõr r r rOr‡rÏrgrCp"mfh bF[MTåNqHA†: 4/`-\+z*Á)ž(«'®&Ó&%K$u#¯"å"`!ø!×!D!¥! $ì)ñ29uAŠI…Q2Xù_fPj&lÙll k2k§lMlk±kýlÆmZn"ob[cdKeìghàiËkžk¹k gb[T”L®E5=Š5B-á&œ"]Jɤ‹«)ZaDX’V &!y"†$&ì*V-t1U5`:8?DhIèOS©W[´_tcaf°iúlmÍnpo)oco¬oÈoÙppppÏpýpÝp™pop™pæqQqpæn¢k¬f0`yY´SMFp?¥8 2M-÷,^*¨)ø(ô(%'S&™%æ%!$0#I"x!ù!‹!e Ã!8!j$þ*22W9ÎAÝIíQ—YC_ˆfi¨lkmjÀißj8jÙj˜jhjÍk£l3lún ^Q_ba(cle½g|hÂkktkgGc\&UJM|F >‘6v/'¶#E 5®YùÜ8[d78\þ!O"G#ã%æ(¨+.41°5ï9õ>ƒCDH`M|R]W[Q_¥cgjm7nbo_oso¨o¥oÁoÞppp$oöo‰oAoYo³pDpoÍm=iád*^WòQàKED+<ê5/¢+»*¦)5(¨'Ú';&”%ô%_$ž#"©!è!„!)! T Ô!D%+*›2Ò:EBBJbR Y_¢eÿiAk@jei‹hžhÙiziQiKiÎj°k6køm"XˆZS\â`cCeÇgœjck@k\gïd]pVÎOGÀ@28<0í)[$§!y Þkä”Ìãí¸Ÿž5 !L" #a%'.(ò+j._25?8ÿ<ËA¥G LÖR@W#[á`4dïhÚl¨n­p*p-pOpp>pMp7oùoÙoŽnõnn”néosonÃkýh\b„\ûVPmI|AÚ:C2u-a)Î) 'Õ'k&Î&Q%Ä%0$±#ü"ú"!T! ² ›á ’!q%Ð+‡3Æ;9C%KURýZw`k7&/*)¥%¤$€"ã"q!ú!ø!Ð!¹!¦!! ÷!d""_"©#!#×$f%c&£(I)™+o,Ê0p5v<ÁCÛJÚQ VÅ]cimóqirr‘qîqàqªqspâp(o0nmqmcm¸mûm‡mLjôgÂbO]DV·OæH?æ8m1(,•(ä'»&g&%^$ô$$8#õ#W"Q!0 ]Ý v !"n(.i6¡>@F.NrU÷]RbŠgÞiÈjJh³h g’g]g,f›feëeàeZeMeå=ôCoIÛQWô^3b×gãj…m k¿i¥d^ÄW…P*H/@z90ð+ &ˆ$þ#5"Ó"Z"`"?"/"'"!“!]!›""="i"°#8#¼$Š%d&‚'q(ã)Ñ,ì168>äFL~RY<_µf¨k˜o†p©qªq^qxq6qp~oèonmvmFm|mÆmpm1jõhbñ^W™P¾HòA9Ô2¢-Ì)»(&m%Ö$í$y$1$#Ì#!÷ ½ßj®´[ i#6)P/é87@GóP"Wx^ËcÑh·j'jSh¤hg‘fñf døcÛbòb%`õ`g`q6J<¬D LSõ[H`ÎflilÈl3j¬ew`‡YjRIüBI:Ä2b,'%#"´"-"B">"N"P"'!Æ!„!–!Õ!Ø!æ""e"ã#ˆ$ $¢%&#&º)[,Þ3 9@ëG~NTØ[£ch‹mn±p;p]pßpßpèp‚poKn\m§mOmVmŒm-l¿jƒgäc"^kWêQIdAÚ:è3Ð.¿*e(_&Z%‹$v$#Î#±#b"‡!I 2Ú.[' #ç*Š19óAëIÝQüY+`{ePiÄj°j„h¶hü6d/@(Û%‘"Ú"A!7! ù!&! à œ ] ) ( / s ´!4!Ò"€###~#\#¤$&J(Ì-T1á8>|EÎMTP[Òa¸fóiÉltmœnùoŸpep•p²pDoµo n¤nWnEm“l¿j[gícW^GW„PàI¶B;Ð4ð/²*ù(U%µ$Š#k"ý"~!ø!B K(B”ˆ%½"i').É6D>²FïNÛVÎ]|djhŽk÷lk’i£hãgdh`“]=Y~U\QUMXJ®HQ ¤(º2/;£E=O#W`^ÞcÉiˆk¡l¬ipfU`(Y¯Q¬JB:9Ë2l+^'8#ù#!‰ ÿ › ž n 2ãXUdÊ 5 á!”"[#@#¿##£$&(t,k05J; BqIÑQ9XŸ^ƒcígDjˆlEnnépp}pêpµp[oÁo_nønÉmóm jgïc$]ÖWPIBn;ž4Û/«*Ð'ù%C$"ÿ"€!½ ù /`tÉ*5òI²$")~1V8ÝA!InQPY_meüiªlŒlFkàiÝh´fbn]„Y/T_O IïDüAš>l©"õ,Ô6q@`JÕSÔ[éaƒh k mj•h7b–\ÂUM«E°=y5ë.7),%Z$"!A † \ Û{ DZœ’ {!M"%#(#·#™##Å%z'µ+T.U2Õ7×>°EæMŒU[(`Çd¦h¯k@m nÜpDpéq”qwq%pgo×oIon?m[jÇgóbþ]¤WPÄJ Bì<5_0*æ'º$ù#Þ"¾"! 1sà' Ö€ %–+c3Y:åCK€Sg[agTj¦mll+jh~dâ`bZcUO8H½B<ª8Ÿ4¹:%'è1B;6EÊOGWá^:ejiGlBjèiod¢_ÙXïQýJ#B\:Î2Ç,å(?&"#¡"]! ‰ ÇOð¦”[ž- 3!)"##­#Æ#Ñ#Þ%('*A,ß0»4Ë:ÅA]HæPOV¶\{`Òe‡hìlmÆo—pnq[q_q*pboÀo n½mÈl²iÓf’ag\UÊOÄI7BB;€4ò/¶*v'J$À#Í"“!¿ ©ÚCçYî[‰|“"1'º-¦5u=E%MŽUC\¡b"gôjÍl¸kÅkdhüf˜aÓ\hU†OEHƒA:33¥/:*ôÎC"Ø+é5ã@’JS´ZÒb¨g_kgk$j„f€bÉ\³VGN‘G3?ž7R0+($ì#F!f z¿ˆÏ¹Æ‚˜÷ó!"9#)#¡#ä$$$ù&;(š*¥-ü1i6Ê<ÀCüK>QàWÑ\a²e¨i\k¤mço p?p„pªp&oºn÷nŒm9k»hgd°_UZ SòN G«@î:[3à.·)ž&¬$u#¨"J!D ?¢'áh…à »$)ý/ú7—?4G[OµW^ch|jÛl9jÜjhg¦df^lXPRIAr91s*B%{ Ôkøè&b0#:ˆD¾NWV?^‘diFj^jÓgÐeI`9ZµS„LµE?=$5ì/h+6'Z%("”!ÛqÚ¼ÄõÕâ Ô û"8##‚#Ô$$6$Ï%t&õ(\+0.*38=>ÒE‘L*R4W\\Êa1ejhHkl®nFnÚolo.onmhk{i\eva?[·VaPpJ‡DD=Â7™1v,Ï(k&$-#]!ð ß ¢/ë…hѺ#'->3E:³BkJ|RŒYY_ÐdhŸj*jÚhìhdˆ`XóQÛI™A§9`0‡(³!Vë ÚÌ ²*>4W>ÇHÜQ—Z``·g)i¼k`i_gòcÐ_;XžRTJñC;]3ß.k)Â&ÿ#¸!¥Ç[YS•¾þš š!Ó"Î#P#’#§#î$o$Î%ª&V(f*Õ/23¶9¨?ºF3LnRGXG]Nbe{hàjõmmân¿nnrmJlDiÊgb³^XMRäMG@Ê:L4.ß+'Ÿ%â$-#!!¬ ¢ãŠû©Z‡O—!H%y* 0ˆ6µ>EüMúU¾[íaëewi iŸi›g"e»ar[ÈSjKBë:71P'þ {¶' ÀJ$l-é8CB™LU$\8cÁgÍjÓji±fc$]ƒWóPæI©Aù: 3.*h&s#À!£wJó(xü3« y!„"‹#$#U#I#Š#ø$E$Î$þ&n(c,@0-5~:Í@ßFóM(S~Y^TbBf8hÃkElLmAlàl–k ifcf^§Y§SÐNTH‰B…ç9<4*/A+£(5&#ù"¸!L ˆ Í%èô× ‡"K#ô'‡+ª1¤7]>>E†LúT=ZG`YdgËh'gÔd­b8]nXvP¤Gß=ý55,¼#†T§$‡f¶Sj <ªÓ%./b:7D?MCVË^@eoikákœliÙg&b]VyOœGé?ò93.ž)Ã&" Šçm -!:"""®##6#[#5"à"–"?"Å#q%š'÷+¿/€4?8Ñ>[DNJ½Q4VÇ\_”bôd"e1d,c=`j]hXßTnNüI;Cn>9[4]0%,)*&2$M"ˆ!ž ¤ /¾ *§!"7$—'/+Ÿ0H6}<¥C³K R(X´]ÈcTfahþh f‹b`_YWRáIß@}6§-«%b`ï@ ëBÜÁÇ* §Ý‰)3Ú>G¥QTYfa©f¼jâk¼m!kåjmfab2\7VO‡GØ@M9}40.ù+&¹#ë! ®’ »!Ò"µ###B#{#Ú#ð#©#3"´"ë#U% &Ø)ë,ý1"5):S?×FLnR/WÁ[_C`žaË`™_w\(X–SoNeH«Bª=,8N4r0R,÷)»'S$Ä#*!Ù![ Æ  ëÆ !#¸%x(,16ÍD5IÍO}SúXgZ+[jY·XTOæJ(Dj>{8u3Â/ä-]*U(%Ð$y#$"’"3"!‚!- ë!¤"$¤&Í*8-¦2A6Ü<ŒBXHæOôV6[‹_]càfžizh­fžaI\âV>O$Eá<$2/(î ùÈy {É?y~Ù—õ¼»- ÍT!‹+²6´@õJ[T\d$häl˜mroMnÕm³jf‰a®]„WÕPöIRBCMHyMÈRVhX Y VüUP¹L9FU@h:†4©0Q,Â*˜'á%ö$D#o"•"D!ý!â!_!a!š#$™'ˆ*.Õ2è7Ô<©B„HçOžVR[ `c$gOiOjµh'dÒ^„Y+QwHÆ>i41*¤!ŸD• )WÒ鼕“å¾k9 CÃA%ƒ01:kDMUÉ^¡d¸i“kfmÚn8nŸliÏe}b!]…X*QuJPD>ÿ;Á8<5×3L2110ì0ä0©0…0‡0®0Ë0ê0ç11y2(2É3’4M5@67Š8î;|>_BjF†JûO•SKWXLXÜVƒT?OâKaE´?ù:c4Ô0Æ-i+v)'~&)%‘$à$Ž$0$#Ç$H%';)_,Ü0š549n>GC@@RB¯FI~MKQNTŽW×XµXãVSSÖO‚K EÆ@];5Ä1ñ.Ó-E+k*])^(Ü(5'å'ž'Å'©(‰)¶,[/2ý6û;‘?°D•JPBV£[ò`ncUfÈh¬jÏiÏgßb–]ÑVZNvDX9·/0%˜E ?KMÜwyÝË®Ð10Ýú ¸k"K+Ä5½>ÔGRPzXe`.ehÖj\lïm×ntl„iøeÌbK]÷Y,SøN¹JFÕDœB=@ô?¸?h?I?l?)>ë>Ñ? ?q?Õ?à?á@ @€AA¿BkC#C°D“E„GJIBLNÐQñUXXZÉ[M[2X¥V$RN I3DK?z:6õ4&2ó1—0Þ0/i.«.X.-.“.°/Æ1 3ã6Ï:´>yB¹F¨KzQ,W \„`ucâeÞh°i‡ißgcà]èX]P Fô<91Á(4:þI òI3uˆp± Öl¬ µ3­‚æ„$ -Î6ø?¹HUP]Y@_øebgñj½l!n_n€m›j>fòbÀ^îZêVœR§NÛL7IÊH‘GSFïF£F·F–F–F™FâG[G×HH+HFH‹HçI…J0JîKuL5M N…PRITzVùYÄ[ü^&^]^[YU1QVLÏH2CÁ?-< 9¢8Á7¶7&6a5Ë5!4ê4×5]5¡6á8k;@>%AîE‘IßN8S7XÂ]½bdÐgÏiKk!jPh­d.`î3Ý)Ì!QË !Üvm¥Eå"ËGxЦí;4 J¸%Ø.¹7‰?sGOÛW—^¯bêfBhk%lên!l€iúfbþ` ]Z VSÅQWPNîN’N"N!NNTNzNÒONOÔP=P{P¤PÌPþQmRRºS;SéT²UêW+XÕZ†\z^¯`kbb(aÃ_z]+Y§V.R%NJFCbAQ@†?ˆ>è>=‹<ì<Á<¯=6=Œ>Ö@fCEÂIBLµPÜUFYÙ^xbe;gi“j.j[g£dŒ_,Z S~K@@®5â+°"˜CU R0±§kiÉ ¦UWŠ•Éj›Ò Ô&‰ü&\/L7>dFdNiW ]‘b†ehfj¾mÀnxmÝjõhQexcBa ^~[õY†XVÏV€VVVV1VaVÑW[WîXfX´XþY,YGY~YÜZkZÛ[€\?]A^4_a`Ÿb c®dçf"eìeGc`½]šZWHSÑPM$JÌHðHG#F„EÉE6DˆDDDD¢EFcGòJŸMVPØTgXA\_¤ce¯hoiÑkijahtd`8ZU&LÄBÎ7k,Þ#ò© »,ƒÑ"vøÔƒ†NI…Ýxx¼÷ fp&¾.Y5¯<˜CðL°Tž[q_›c7eªi†lm¢l¥kh¡ge¿d#bW`F^µ]’]M]]$]] ]&]^^§__Y_»_ü``)`V`Ÿ`Öa9aºbbbëc˜d[ePflgMhAhg}e™c´aA_\ŒYñWVT©R›PÙOÛNÚN2MwLÙLKŸKfKíL^M¹O4Q±TQWƒZÀ]Á`yb¡dåf hÜiYiIf[bÔ]•Y“S¶MC‡8â.!$Õ… ®¶±鯀 )”ùãj©G R¾€²!+» “^–%+,÷3‹:LB JdRíYw^Ža—eqhqk·m)mÉl·këj«i›higeÓdÍdodMd|dgd_dVd›ee¹f$f{fîgGgƒggÑgágÊg­g¿gØgÄgÁgÕh2h±iCiöiÿi¦hgg,eŒdbd`‘^Ž\xZ¥XúWÙVÑVU?T}S€SRèS T>U±WJY™\^‚`ËbždJe²g¤h¿iÞhyfau]DXS‘L±D+9|.à%ˆ]Z ùß\‹Vy*\²×—HW©S"~–Ʀ¥[fô ˜´y$<*é1R7>ÇG]O[V$Zp^Had×gäj¢kŸl kjjøjEi¥i hKgòg÷hIhehfhHhWh¬i$iniŸiÞj j/j=jnjGiÍih¡h.gg ff£fÃgNhh’hØh’hOg¢geþdïc‹b`”_/^]6\€[¦Z×YÖYjYTZZ­[ê]Q_`äbdc•dOeeÄggfuc+_%YÂU™PjJýBí9^/%ܰD ü’¿ŒJ…:U®½—Y6`h l©Klõ2 v{©º!¹(Ž.#4";~C¡KçRWWlZ€]øa0e+h]kkìl^kÅk}k%jÄj¼kk~kÞlkøkÓkÝkèkßk¼k˜kjk:kk3jój;i-hig®fÄf efeJe9eËfg—h}i i½iâiñi‰i,hmg”f‹e‰d¨cæcGb•aõa0`ß`ÖaZaÅbxcT5»,$,Žu‹ ´Q“!RÈŸÑæšMd•”ey3ÿéÿõ)T?ÿ’ÿ€-—ñÒ œ¶,ñ"J&Õ,+2á:zB GéLtOkRÒVˆ[4_Mb®d$eJeN7?/Y'@ ”¨{ %Ê ¡à0ÁNìÎçþÂwUn²Ñ@€¨† ÿÌÿàÿÄÿ)ÿ7ÿó³{) ] aeîI#)/‚6*;§?ýBÝFI$LÃOæRÎT?U6U)UyUrURTþT¥TvTŽT¨TÄT'S:QxO½M¥KÉIFÚCýA9>ÿ<Ó;¤:Š:œ:Œ;ó=Ï@ÃC|F{IqLdODR UW–YÌ[\j\ú]™]t]O\BZÇYWÑW"VV`VFUðU«TBRpODKçH(E A¡>a9A2ñ+7#¡5ÕÚq mº¤«ª‘Ä\÷õêŽUhª×ÎŒ3@kµ¾jÿñÿ£ÿªÿþ0ÿÁÿnÿ{oªTX. Çîjþræ#—)o/“58â;ü>@†CEÝGõI{IÝJlJCIýIMHHGÐGäHGÄG&EÆDnB @ý>ÌbA{DyGkJ©M]OÏQ&RcRªSR›R@QO„MåL¿LKKûKßKÅKJ:HBEçBò@^=½;™8;47.') ?f>r! Ï~ÿÇuù0[¬`\ŽÎÔ°JDV–³•1ÿ²ÿxÿ»ÿóÿ¢ÿ:ÿo0p@5ëÎ B¼¥é "p(<-`1µ4B6†8:1<=©>? ?Ó?Ø?->r=›<ø<‰}<¡:Ä8¨6ï4s1Í-k(`"D üÐÔ s N˜SD\½oF|iõyOu£Ä²ŽUOKf™oÿúÿ’ÿ‚ÿ¾ÿþ ÿ«ÿtÿ¥n]?ni b ´&€Êf!z&°*V-.0/™01×2æ4 4£54­4M3‚2¿1ã130U/Z-û,*Ý)J'e%D"ø ¯Ò #:N›& ¢#%¿(i+1-õ0Ä3Ò6]8Ÿ9ã;;†<<=<‚<;B:98A7w6v5>3Ö2‡1O0c/ -º*Ö'I"L,Wö w8ž›=·®}#þKœ•3ºgb–Ž€~—^\T\k|)ÿÈÿˆÿ˜ÿåÿôÿ¦ÿpÿŸ%·ÎÕÈ´H¾õ * Õ. V e"$"%Í&Q&ý'r(5(Æ)*) )(¾(X'™&ë%Õ$®#!g{®±…Z:—:h{±ü'NÜEê!¥$'«*],È.W/ß0¶1¤1ì2D1¶0Î/P.,Ã+’*…)h(†'å'4&œ$ú"ÿ–7,ë  ÄFc»¦ÊiK=¨bç–|‚•v\dˆ¯U^^dgsdAÿ¶ÿ˜ÿ¹ÿú ÿÇÿ›ÿ´r­}…Á¿ö¶ ] ¹ íçµ¥“ÉR±{¯ä38Gùž§šûL]­­Ð ü ¨ g È ! , 6   ³sžœópB<ì"a$%Æ&½'Ê((.'T&1$‚"ô!£ n¿.ðí[…R±L/ Õ üó脪¹¹0;ëè9Žªm °’›zN@b™¸BKOakq\BÿÈÿŸÿ¨ÿØÿÝÿ§ÿ‡ÿšÿÖ ÿåÿŒÿ¾[Á=±”˜Û Ò¢ 1è®°|MðàóêÕ>‡?à L Ú u ·bey‘Ÿ°Qó%l  š „—Á8€`ÐÜÏ߬)Ïç4ê¼…pü±Y |Ä0·5iÿó5‚ÙÛÌê'y˜{'å·¡•oO7En™ª2;B\klR6 ÿÚÿ¹ÿ¬ÿ½ÿÍÿàÿñÿíÿÏÿ¾ÿÇcšr1ÿôgkÍÝy¢  ¾ £ - H v ’ . á t ý ¯ “ Ÿ ¬ | 0 x¢¥ÇK£ãG¹v3DY¾ËŸ”é ] : A*óýÈñT= FLDnòž æ p Á ¿æ2wn1Úó[h¸°ž—Ä(}•c*óæÞ´|C-4Yw„†7MSXTQGD*ÿöÿÅÿªÿ·ÿÒÿòÿûÿäÿÔÿÒÿô/X[%ÿÅÿ¥ÿÙy5«¦fC¨p†{ü;ñ°^äÕË· Uèaæ—fR!÷ÙÑÈÑÙñü*cÓ4ê¸ç8…Ä w ä ã !  û åLÞ°¡?‘²¨©Ç¿–+†Ò:Ah~ˆ´ýTzg&ìïâ«f0$1Tfhg9W^TA<?K?ÿÞÿ¾ÿÇÿå ÿþÿøÿù OtvHÿøÿè;Â*&ÊUWÍ`´Ö "ëÄ—qcLÓ†cdŒ ¶ÒéýþúãĬ›­¹VïšT }½Èþ øÍ\ËQ¶q,`®Â‹¤lj“¥›mRa¨ÿB`Eû Ûžc=99GOON9LSH<276,ÿáÿÉÿÖÿýÿìÿü"(6EcVÿÆÿ­ÿÐ,ÿ—ÿþÙþáÿ2ÿdÿšÿÓ/LpucDA<* ÿÜÿÉÿÕ&Jj‚ž£¢OÿïÿÙÿÂÿÈÿÏÿö b­é .@N[‚g–ÿÿ`ÿ@ÿsÿ·8;!"Zˆ•~XR{Ë?E$ ÿ!Ü£qPF;=HK?,IUN7% 13 ÿßÿÐÿæ%ÿçÿî9H*0\rYÿæÿåg‰eÿäÿÖÿÕÿøCw»I\GE3ôÄ ‹ŒŽ“Œˆ˜Ÿ‘rQBEGMMOO^w™ºËÌÊÒì(6§7ÿïÿËÿö5tŽn5&X‚–‡kVMp­î++à´sbJ@IJ27QaT0%:1ÿáÿÐÿï%ÿúÿò66''4U]=ÿÌÿÈ=Jÿçÿ¸ÿ¨ÿÇÿåI„Î))úÙ¿«¨¯²¡‹€‰†mPDFKI;!ÿôÿåÿæÿòÿþÿ÷ÿõ&_sUÿÙÿÇÿ×2=&ÿûÿÒÿ×GqyzhUQT{»ø #)íÆ¨—‹oTG8">agH!64ÿØÿØÿÿ,;ÿçÿî:I3,IdTÿÓÿÊÿó9, ÿÿ *\…¬Û÷ýù ôÞÑÄÅÒØÊ°›|h]`hmfWK@2+,1,/?Xq{pbhz’Œg+ÿóÿãÿð)p™‘hUPLYb…¿ö ñÒ¹°¤‡_<$E[]C3(ÿáÿÛ..ÿÿÿþ5FHJIWS/ÿîÿúBI2LÔ,öÿíãÝÒÎÔÙ×ɸ¤—‹{mb`fiaO?2% "&  -7GYoŽ›ž{= ÿö/ZƒŒ{ZNL=DZÕÿÿùèÞÒÉ®„P$ ÿú"8XW(ÿûÿý63ÿÛÿß4D*ÿúJuwZI?BC0#)<OM+:ƒâAbJ ùçÜÖÌÆÅËÕ×Ò¾¤Šxm_XZ[TF7//7@A7,&.7PtŽœˆmC'a‚€pd\\[DDbŸâ  ö÷÷ãÕÒɶŽ`3% 7B+ (5&ÿòÿøAG/ '_kK>8'/M]P7$6Y§S[2&öÙÅÁ½ÂÇÏÚÝÝ˯{n[QMNKC61;IPG2! 4JgŠ–‹iO8=o……‹‡~pd`Zk‹¸Ùï  óçÖĦ„^:! 7'!"7<ÿþ!HU5;r“d;'@W`YOLEj¼>=C- åÆºµ¾ÈÑÓÏÐÆ±•n\RMNOMB=GRQB((Jl„—‹kH?D89Lhu€™¥†rp|š¶ËÑÜ!-øÚÖÚÕ»•hC-7  # /A- 5SSB7@bƒ“€Y3)1.1:HQ[nzmr˜Ö&GG:ó×½¼À¼·¼º¬“|l`\VV\`WLKH>1 "8[x…Ž~_EDOEF[|—¤°¨”}‹š°ÆÚèø(òÇ©¨¬œwL) .    + ,-$7Vih\Ybz„oOFHDA<=9Hp•™ž´Òþ1O[A#üÙĹ·¬¦©«£‘}omqmkqqgTD8+'&4Ldstwo`TSXJMh‘µÀ·œ„€§©ª¸Óõ ýÙ«†sokS2  0+ ÿÿ $'+*%!AdyvgXcmaNFFBAEH;=V{“Ÿ¥°ÃèCVC)åÓÉÄ´§¤¤ž“ƒz~ˆˆ€vcJ4+'2=M\eihjg`WRRMYw𳳤“Ÿ¶Ã´¤®Ëïøä²‹iK:*!   13/ $ÿþ*+$&+0/!(EhzqXPMFB>>:=LUG=C`£¼ËÖè ,<.ýêáÝØÉ¸­§¡›Ž‡Œ•˜ˆu\F66:GRY]]`chhe]QNSi†›¢š‘“¤¸Ä¼¤•¨¾¸”bH<*"%"Ò‚¸ >í-Àq,)ky+e´ÙùÕðí];)?/ù‚†i‘!Ö$2%ö$¶"GâÞö [  Š e & þ Ç ´ ¶ Û     ô æ Ô Ü ñ * n ¯ í î  } G V ‘ ú I Ž Â]ÔAÎ^ Ún­ôDgйä9°9Äÿ¿‡L'ýæw×Ȥ‡œòD²  Ë1៑g*Ôqm4f éŸx‚ÔDxÏEâJI  ¹!’"#Ü$‘$o$ $¼%%"ð À´Í k ° w  7   Ý Ç ¼ Ñ õ    ü ô   D v ˜ º ž Q ú Å Ö I \ Y [ z ®  M ²  ¬n”Óg·':Û™h'ßJ™¨°Êpßå»åå§Ÿ³Èèåx4 çHX#:Ta`A)íÃ7‚U¿ä“aÉ«–íhç<›/q W!!Þ"ä$%¨&g&X%g% $+#K!k‰Žœ© 0 d ( Ü ý Ø « { d X x ¬ ä    . ? \ ‡ § º « ¡ n  Î ª Æ ø ' ,    - I  °  ¢ * | £ Ë  f ýœqF8=%êvø|ÙõíPnRjèЊo¥áÅ,ˆ×õͪ]5­ ¼ `~Kø¼›V}–Ï-/´ ±²lùiì¤ !•!ø!É Á÷Óê0þ¦] > a ù Æ Š š e (ðßÙ  ; | © È é  * N  “ Ž b = Æ ž “ º ì  $ ò Í « ™ ž £ Ô / Ž Ä Ó × ô (  Å f,댥vç®Eæ|l÷™pâæz#ýÏ)¾-Õ‘üˆ€0Q—Ú)Ÿ”d1D,b”’ÙäÖö*‡s&6¶¿^   2 e S E b L .   ! ? d ² Ñ ö  0 ? Y ] T . Ø — p e ¡ ¹ À § … Y 3 !  !  * b ¦ Õ ä â à é  \ À ‹ 8 ø €³¸ÈoznÈB,IF=(Yq&ÕkÝ=ÿy…~ðeXL¸Ø/Ž´§ok“Wö‰ÞDK½.#–ª¹– TÔBèSŸ!î< + > : &í÷   ÿýÿøöû   . @ G E I N V T M 1 èí  H k ~ j G   $ % = p ¯ â ú  ô ê î  û +  „  † Z'.ÿ¡®{Þwæ9lÜóÓ=4r0Œ±†xÐû`œbnIm-úL*»ã³sòïër†x„Ëç¢s^   \  »  åüœpš¡¥±šc辂V=<0.0:BQax”¬¾Æ¼Øˆÿ O € d 6ûßÝÕÞç  6 c y „ ¢ · ¾ ³ ª ž } Ž Õ A  Ä  IØe®¹nCó–#ØK¡v'˜]ŸDâu<zbƒppzÆ·º²[¨P$n,¡-öç}’ö ¹  Õ   ! ;  µ Œ i Bû’,çÌ®¦ª ’G×SòªQüúäл»Äç 7^‚¥Ëß&•:ïr̾™V6)  XŸßü  = l ‹ š © ° ¨ ½ ú F p Œ ¥ ã " ¹ f rœÅÂ|*Ãp&ê“2†¿Ä…s}­ùba4RÍU€‹=P8NIȇÔ~‚OY  : Å  = bÒx8¹ÿg-26õàÛÑÚ èrßQôÍš†…„h?þ?n’´ØgÏv2ÔZ}‚O5ïíaÛaÇ 6 H S [ } • ‹ z z š Æ  . ` Ü . Ç … c0Ì:£5ø»‘q,È.»}À¹ÛîÄ`홚8šž#»¨U~ËóP7 › Ù ] ˆçÅs|Œ§WÄÆ¥áÃðã‹5ôÄÈñä€ ¯z„š²­ŠR% û  CXnŒ¯¿í,£0ÅP—¿¨›ƒ`ewàjË:zh`ŒÈäìê  = – ã - s ² ê . } ç e Ò  I £,³c&è“•#  +  "  ç ª € ƒ C C ¹ yW×É\ o š â … ÷ ᨰ3ÖÐöŸVwÒGí÷pÛæqEîѰ™…‡—¦±”XíæÞëù2X€¬Ò$‹{ÄïçäØÌÙã,‡-ü°2D&$“—ð  2 L | Å  ` ƒ z Y f ¸ 9 ™ Þ  D n à 2 ׈2¢ Ò Z 2 ( E E @ D = Q  ^ ¸ | º ö M ¾ À ^ ˜îyU&ŒÚ_$ö×¼^ÆUÛwO fâRe=¼MÞv5ôð6g€icVHÚˆ‰”˜ ¥¼æ-A]ŒÇ>Zb\ez“®¼Öä5Ämý94.«eK„­ž¶÷ [ µ ñ é ² š É I Õ A y n ^ Y b ® ¦ ì 1 Ý » ¨ ¿ Ö ó   ŸÙÇÝò3™õfø¯oõ•xtT§dÞž³Áɦ‡•³Ì²u²h N¨PYK軘i!ÿßÿ¯ÿœÿ‡ÿƒÿxÿ~ÿÿ¨ÿç6x«Ýú!åîf®åðÉÆbÍM]Ÿë÷“ÂðfÄ ) T E ú ( •  Z e q ` B 9 R ˆ ž _ :   B i „ T yÁ:)ý«QÖ]ân‘NHE —©=Gª2~e$»yP+ ݯgLk¥ zÄìØÇ¡}fa`P3ûâÓÅÁ´¿Ù ;dˆ‹Že&܇¬MˆÐÖ±Q뵨ñN®Õöœ®y®ôLÉ5‹’^B  m »  ì ±  f cŸ—‰¹ÓàŒQŠïŠc(ûÕ§z™³‹fUS¤©“šñn¬4)Q‹¶Ê×ÏýÆÝóýóï+G{Âe™ÅÌл®ŠYݵ ¢£™V†ÿÿÿ²ÿ›ÿÓÿõ5ŠÐ üÓmÿôÿªÿ‹ÿàSä4„ð† Ì…s´ †4¥ŸƒÄMã J [ 2çœpvòøùûú õÚlàR¦ÁjQV`Q|6MD)ä{N_ÜnõdUw %£"˜ò3$â­v?)E“›5ÙŠ@×e±õõ ÂnÄ;…õhÿ¢JæiÔVùÏ’ƒ€³?q0¤ÿïÿGÿ:ÿbö?I?TË…Tä6nÊŠ@‰§÷o w›lQ)ùæ5>?÷ª^áZ¬óGŸM?pRêtDÈ­NéľHÿ×oë'c˜Ú8©Œ¹Á‰\#ïÄ‘ƒ~µècì· ‚ q ^ R M&÷}ÿ!SüŒy M Ê Vòކ˜º‰HïúI‰Æ[I›ÕÜdÿ þ÷þžþûÿ ^ÎÎŽt¼Z_±'z» “`plH9dÊæ÷ð±hý—'ÀIµ1®©þ@@ú«‡ÆP»Z<¾ÝD¤à ¢  e ˆq÷w’ªp¿y`Kct¶ú:áÝÌÆÑ̾r*çŸ9õ™š˜k6 b ¨ · ú Ñ ® s */â†U;¾w¦íß_qÿiþôÿÿÜ”ïÀTqC8µßUÅ/dÔ6£ýEYWU|3NDÿ³Jæˆ9ë€+ßå"kzS Dæ…OÍ¢#µ ‰ A é¯>ê Cp(Õ€?\,³?½!tÍ9ÇPö¤gçç!""õ#æ$%,%$á#¤"R !æ5xÚAhÊ q Œ ¹ Þ F¦ïfã(Ö'ÍÞÿÃþäþÑÿ6ÿôadÿ×6¶$BF›Pqn€È=¬ü)<`Ttœ—f8úÀƒDоÆÿAup};=6jœ ] h Äïúêá6q=ù ×!ƒ!g!K æ s V p!*"#$$Ì%x%¾%×%Ü&&{&à'`'ß(r(é)¥*¡+Î,Ý-Ì.Ç/u050A0./-é+Î)«&é$!((®k¾íò0)| ¢ RÆÍKíø÷Qê0ÿòÿ\ÿÌkè®2Mì“ÑÑó lŽb28ývÎøšÍ  ûæàÀx5 _µÖü¡Z±Ís « +ÛyÜ$Ž !é$n&È([)Ü*+++>+S+C+'+a+Ø,º-§.ƒ/A/ž/ò/å/ª//œ0 0g0ö12V33õ5!6`7v8L9+9´:S:L:097ã5Å3¤0ö.C+q(™&+#ù"L ¤L«D!Â4åB ~ Û æT¬ÖøHÿªÿ²MvPÿèÿ¼¹Eo9OdDînûzµ´ÿú1u‡~…‘­ªj?G±9Õ—L¸>Z M Ðm¸Wæþ" $š'~*u-}/Ó1Ò2ê44°5X5½6!6v6Ê7D7á8–9L9Â:::9Æ9^9:9c9û:o;.<= >%?Z@¾B C+CÝDDÑE)DàDŽCTAó?Å=™;8j5â3i1r/Ä.S,Â*×(•&R$Q"Ë!x 1ÔÛ©ÐÅß7 i  å L9¿Î}D+8»D MÞM3Ëž‘‘“gc–}º®ÿ8ÿtÿªÿµÿ­ÿ¼ÿÐÿáÿãÿ±ÿÊ*ØÉb}úH { >èCÝú7# &Z),,8/U2°5¼8ª:¨<\=Q>x???ú@h@ÏAAsAÜBJBÖC{D DD®DÍD¹D}D‹DéE¿FoGnH‰IÛKLiMõO_P¨QdRR#RBQ¥PÿOmM¹K9H¹EÏBÂ?ñ=E;v: 97÷6a4k2/Å- +¢)»'Í%°#!{†^_®}t W Æ+ˆÜÄ‘-Ú)ÿØ•¿’Aÿùÿò K¥ßßÝëÖ¥yn‡‰½ä—ˆÿVð\ c ÂÂ~¹!G%™)Î-…0ë47Š:ë>RACˆEFŒGƒHÅI´J{JÍKK$KLK‡K¶L.LÜMµNzOOO²O»OòPpQORSTUKVZW‘YZk[¹\€]3];]T\©[òZRXžVSœP“MOJAGeE”D(CrB¯A›@6>2<69Ý7ƒ4ý2p/û-¤+z)Š'&$Y Ñ–§/¥Ë J!v 9ͤµ1I~£VÿòÿÐÿì2*&N{“œ_âZÙ(ÀqÚXk b ÑDB^ÚÎ"è'u+è034b88<?“CKF•IÊL8N’PQRSÒT¼UUÂUîUîVVCVƒW,XY'ZZ½[U[•[­[Í\+\Å]K]ê^‰_C_é`ÕbcEdke0eâffof!eÀd…c=a(_\ZY[VZSŠQ…OÊN¬M„LQJñIMGÍEàCÍA,>u;Š8£63À1t/+Ç'ë#–óÛ!4 ;:VðБÿøH2ÿüÿÆÿºÿãÿñ&K%Š˜§´W|Ç â ç“I‘èˆ"¦&4*9.¢317c;W?gCRGVJáNHPøS¥U®WÃY6Z[]\j]']Ë^ ^1^@^b^Ä_0_ù`ñañbËcJc¿cÓcÁc¥cÀdd2dfdŠdÌe e¨fg}hShçiji¶j(jFjSiÃi%gÚf–d£bs`]¸[¿YéX]VÂUDS°RTQLPNºL•JKGYDBA->e;ø9ç793ô/‘*ò&\"iØ9-V ø ^5.ÃÊovNCÿöÿÁÿÌÿ÷ÿøÿöBt F  B š þ ~ ( êJÊÔ!Ä%´)f-8165”:">–B¡F‡JØNýSVAY([>]†_:`çaäb°c cËd[dÞe,e^eeÙfRfÌgmh#hÌigi°iëiÊi†i?i2iNi[ilijiŒi¹j5jÞk’l"lil“lŸlÒmm3m#mlqkâj¼iag¯f"d¡c4aÄ`D^­\ç[tZwY§X°WUiRíPNMLJ_GŽE$B_?[;16”1c,k'à#íɃ] Œ y“(S¹7=ÿïÿÂÿ¶ÿÔÿéÿþ$6 ž(:^ÆrrdM" Ô$Õ)%-0ë4£8„<«@îEH÷L¤P\T¢XŒ\^„`µb1deRfnfÏgg gOg³hhjh´ii•jj‡jÏkkFkŒk˜k…k'j§jLj4jlj–jÓjùk=k”llÊmSmºm«mqm lÍl¾lËlælõlÒl¶l8k‰j›iÒihCgRfSdûc]aä`×`_T^J]+[{Y¿WcTëROxL’IÌF-BG=J7ë2‹.)£$Ölh Œ )Zp¢ÿËÿÌÿã  " ÆaR[Ô × ß$'H+p/Ã4$8;É?ÉCóH@L>OçS/VYü]ßa0de°gYhfi¼jyjïjËj¢jyj†jÌkk]k¹l=læmlm¾m½mºmŸm±mm;l¥kôk‘k|kãlDl¼m mfmØntoI@gCÌG~K«OSVµY÷]`_÷bc‹e_gh³içjìk}ll‹m$mmâmïmúmÞm¼mŸm•mm‡m¦mîn~o*o¦oßo¼o—oso†o‘o~o*n–nCnJnáo‘p:pp¹qqtrrorrq‡pÎpCoÜokonÔn»nÅnÈnnHn*nn mÔm…ml¢l9kâkk*jÌjrjDj*j1j0j,jhjiage­b±_Õ[ÃW|R LFn@Ì:…3,T%pZsbä ¾)/2™<UrMÖL%I¾GcFEGFFµH»JôNPQ¿U~Y\T_Ábe?fêh=ij[kmlJl°mm.mYmnm‡m“mŸmžm¤mŽm_m-mmlëmmŠnTo5oÎpoæo·oo®oËoÇornÇnln‹oQp.pèq8qJ7%/ì) "‰ºƒ^ † VT–¥œªsVûUPSPðO×O&OÔP^R&T5W!Yê\é_ðb¸eg†iUjEkk–lilôm7m#mBm"lÙlVkÚkok'jìj¡j:i¸iMihûhÐi#i¹jÇkìlÓmem…mŸmÌnInÆo on™n`nªo™p¤q{qåqèrr-r•räsrÁr;qnpÇp,o›ongmÁm%lŠkøkKjŠi§h·gäg?f´eïeWdÃdÛe=f0fýgøhñiÿklm'mÉnhn$mÒlJj”gÐe_aÂ]ÆX›S–MÑHA«:í3ü-R'  å'² Š °©¯¿Þ0`^‘\ZåZYxYíZN[»]m_Ãaßd f™h¹jŸk·l¸mmm mémûmëm¥m¢m&l2jèiÚihygègf)e%dfcÎc»cd d¼fg[h¦i¯jgk kÈlÑmÜnÕoGoHo>ožp|q†rnrús!sUs†sõt0tLsÈs qõq po)nlúkºjxi;hfïe´d}c3b?aˆa'`“`<_Ê``´b$c‹eEfìh j`kôm‰n›ožoáp=o‹n—l–jáh dõ`‰\VŸQ“K¿E‘>¹7î13*$gñ^  ùûUßeÐdºcEb-a¨a(aca«b«cÆeKf±h˜8@1…*Ä$4?:28 ¡lgl;kÑkvkR:U&XÙ\ÆaeYilŽoqysXŒTeP[MHJBHJFqEcD(CBÑC$CºE‰G`JLvO›RÜVÚ[._dc/f,i/k}mâonpøq[q|p°pnãmÈk©ieÎc`_ü[ÐVKQKDÕ=ð70$)!"±Z1ám mm¡mxmEm`m´nnDnmÀmân"n,nmÿnnCnbnMmÃmrlNjôh]e’aõ^qZÁW%S©OøLõJBH•FôE÷DãD)C?BðB²CD’F¶H»KÓOSHW¼\©aŽfjHmœpÞs*u†vìx.x¡yy(yjyWycxˆwurGmèiŠdL_YœTO1JGADB9@]?O>=y<Á==?mATD&FÚJ*MhQTU£Z^0a¾eNhAkFmyo¯p²quqpÃoÞo\nl&i¦gúeybV]¿YOSÀNGŠ@ö9÷2à,%`²ÏlªmGm‰mnmKm“n nsnŠnNnn%nXn?n n.nVn”n‡namlàkieªb?^YëU†QLÞHÌEÆCAL?w>Q=,<‘;Ó;¿;º<ª=ž?°A±EH½M´RÇXf]üc.h?lQpRsuàwlxÞyayäyôz:zz y"xuHr)mBhEbB\PV!OÎJ.Dµ@Ô=<;A9S8X765ó6r7"9:ö=Þ@ÚDyGãKÙPT¤Y]Ya“e€;à:/8X7D6P65›5¼5Ô6¢7[91; >‰BVG­MS4YX_9dôi¸nvqãu6w xõy¤zBzIz‘zmzly`xGu\r3m g§aZ…SÁLçF´@‰< 7Ý5®3³2õ1ã1Œ1$1½24X5ò8y;:>ÅB)FIúNhRöWÁ\›aehhßl`n²qq¿qëq(pÿpvo„n^mÄlÛkËi…gc'_;YÞTdM»Fæ?¸8—23+—l‚mGmšm›m•nn”nþo,o@o:odoooGoonËnAlîkÁi“gHc°_ë[%VlQ@LFëA±=‚9¿7Z4í3j1É0í080/Ò/ã/Ö0]0Ó2y4+7®;{AF¸M`TZºa'f¨l2pPtDvx¿y‹z7z)zhz?zCyAx/uCr*lÛg4`XåQvJ C`<³7Ã30¤.¢.6-y-i-%-±.0&1f3b5–8Ê<@CÅH!L§QÝWR\³aäfj*û*é*×+ž,M.®1W6*;*AæHÌPTW¬^“eœk;p”sÌváwòxÄxuxxxwþwv9s«qlfˆ_$W»OÊGá@Ê9Ð4·/º->+N+2*Ý+ *æ++‚,,,~--¥/H1I4ƒ7;™?ÆELK=QÄX.]Òc!g5k¯n[p\p‡pºpSpEpo¯o_o~o~obnLmj…h+du`ƒ[6l2Ï/,§*_)y(œ(Ú)K**¨*ò+'++ *ú*Ö++(,ª.ˆ2¨6ò=?C¾KKR¼ZaœgÛmÒqœuAv¨wÀwvwtvöv¹uÐtôr pAkŸfz_bXMP’HÊA»:Ï5Ï0ý.§,Ï,¯,U,f,9,,, +ì+ì+Ý,½-Õ0C2š6f:J?½EƒLR­XÌ^¥cohkÞnÅo¹p{p]p¯p¸p‚p:pBpJpboÅnÝmk[h¦eÆa›] XS l»m mìm¼mlm…nnºo•pŒq4q‘qrqÖq#p"lþiWd _wY¾S†LE»?x9m4Ï0i-_*(-&d&%¯&l'a(x)-)j)–)˜)Ä)Þ)Ð)Æ)R*+\.ó2¯8¢>ÌFWMÖU’]pd?jÏoBs“u{wvÛvüviv tþtqÚoÉk›fÏ_ÿY;Q³JC <6î2/Þ././-á-×-¡->,Î,3+v*ê*]* *ò,•.61’5:p@FÏM…T!Z`e½iÆm‡o?pšpÐqyq·q¾q–q¤qÃrqæqOoïnÙlôjñg»d_ö[Ëlom3maml¶l®m=mçnðp"põqbq*qœp›okf¢`·[NTêMûF±?‚9x3È/Õ, )&Á%.#Ù#Ý#ð$â%ý''»'õ(((Y(Ù)8)S)(b(ž)U,H/]4¿:]AœHÒP•Xw_¨f­kØpæs~u¡uÔv>uºu_tRs^quoÓl7gáau[SâL¸F?J:E5v3;1¬1Ì1œ1€140]/T-ç,f+6*4*)Â*¯+•.K156-;iBH’OeV+\Pbwg(k°n9p\qr!r‹rãrìss$s£s«s5r q.o¼n;kÂhåebTlHlálùl²lXl7l·mjnœppõqfqqlpmÊhÚcÀ]VÃO˜Gñ@h93d.!*Ù'¯%Å#l"ÊF`N%Uø]Ád(jsn7qnrJs,rërórurqpRm³j<;Å:,:Z:‰:z:85´2Z.õ,1)ö(÷'Ì'À'‰)*¥.Œ2Ì8â>ÛEÀL»SÄZÒ`Ùf¼j¿nopRr2ssñtTtŽtÔuÁvVv>u{u tUs¡rKp˜n›lÈlÝmm lÝl“l lVm$n‰oúp§pçoÎoclŠh˜aú[­TL'D;Ü4å.) %§#Û"!K ±~ & Ñ!÷# $W%[&_' (Á)ê*D*D)f(T'm&™'>(+..¶4‹:XA³IBQDYQ`:gk=næpqpãqpÖpÅpoÇm’j‚e;_ÆYÚTXO¥KGCi@ú?t?m?f>æ>;x8p4G/í,U)w(-&Ê&Š%þ&î'ý+>.×4j9ç@¦G‚NÛVK] c®hŠm o¦qórát t„t´tîuìv·vÓvWv"uÁu|t±s‚rp½mcmlmNmlÈl,lDm)n’oÕp p"n‹mhi·e]æW4OaG.?740ä*Ÿ&Å#y"C ì }Ôtþ –!»"è$W%¤'(à*k+Ü,T,~+¾*ä)ü))1):+V-Í2Ò8 ?/FpN]VY]fdXh×lÊno)nëonänæn`n+l=i‰dÙ_øZÁUìRNmK±HzFsE7DÛDcCA‡>K:´5ó0Ò,s(Ô'&%¡%n$Ê%j&(Ä+°0œ5;öB–J QËY#`[fk„nÉq r¼t%t›t¼tÇu”vMvuv&vuÎuÑuitsarom¼mmSml¿llmnoojomk)f²a`YàRÐJÝBq:2ÿ-^'®$v!å!2 &Ä?'oö!"2#¹%.')3+7--ã.f-Õ-),/+Q*ê*-+",m0¨5w<¢CºK›S‰Z¼aífÉklm¬mFmQm lñlulHj©hadF_â[1VÑSžPïO:MKJ¾J,ImG|E>AP=27Û2,Ï(G&$A$#\#¾$#&F(”,ê1G7>EáMÃU–]Hc­jn*q™rñtuu)tüu„v v#uéuÁu¯uíuäuctsýnm¥mGlíl¡kôl m!nlo=nœmék5h†cd]´V2N÷G>Ø7k0…+«&¾$&"5!À À *—j'kÎ Ç!¤# $­&ò)ˆ,(.¦01D1510X/Ô/:-÷..p26“=ŸDfKÛSLZa eájDk×líl\l;k¹k_j¹jbhèfæc[_„[eWiT»RÅQüPÐPO¤NØMÔKBHkCÛ?39b3-X(%&#"è""f"¦$s&P* -ù3û:[BKJERcZWaDhbm?q_s u!užuÌupu¤uÊu²ueutèu u5tÎt/sÙnmçmelül¹l l$mJno+n'miÁf9`gZ[RßK„CÆ;«4´.Q*(%ô#ù""N!e º 4 Àâ Ü!X"¬$K'*-K0\2j4!4¡5"4Þ4Ä42P1™1s4 8Ë?…EàLËS¥Yó`_e iok.lPk±k}jÖjViŽig–e¹bµ_„\%X¯VULUYU.UTöSâR¢O‚L!FàA{;42-ÿ'ú$†"!Î Û þ!"¢$''…*Û0ˆ6µ>ÊFëOiW¬_fÛllq5s`u¯v3vzuýuìuÀu~ut—tPtst”t5sÅs¯nàn milìl«ll"mJn^näm…lh.cï]œWVOôHˆ@ó92§,Ç)A%Ë$\#F# "B!œ! æ ­ Ê!Y!“"ê$»(+“/x315ó8W9‹:é;E;ž:Ú987é:Ó>“D’J:PEV1[‘a eijÔkäkGk jPi¹hÙh+fÀdìbT_Å](ZEXWˆWÐXX.X-VÃU#Q„M¿H BA;s4Œ.Q($T!§!4   !T"%|(H-}3I;ICeLT|\?d^j…prÇu‡v?vÑv`v5uÌuttôtBsÁs®s«s'rºrµnömöm=l©ldkÈkêmnnRl‰j³fOaoZžT L¦E=›5ó0*¦'Ò%*$V#™#q"Ü"N!Ñ!…!+!(!,!»!ô#Œ%µ)•-¯2E6¸:;=S?,ARB(BÃAÝ@>Ö>’A$DVIvN[S‚Xw\ÞaOd²h7iÞjÖj9iãihbg…fçe®c÷a¶_®]º[wZY>Y†ZZCZWX©V‰RWN7HqBa;‚4ž.`'þ$!G º‘YË "ò%.)ò/[7;?=HP•X´a9hn:q±tùuûvêv“v]uÇujtßt s[s!sr]qéqànÏm¼lõlCkékNktl£mimzkOidY_X QRIßB&:µ31-ª(¾&w$j#ÿ#o#N"ô""!¸!b!i!^""n$t'+x05Z:x>±B~DÿGÛI&JI,G”F‚F[HžKWOS´Wì[ì_mceÃhšiÔjni»iUh”gág fse]cÎaæ`T^Õ][ªZ¶Z…ZšZfZ*XU`P²LFFœ@²:73º-à'Õ$ !O ®9¯n!J"ò' +õ3u;(CöLfTµ]fd¯k’oÊs®uvvbvFu¤u^tÒsäsrœrWqŒqpÝnÉm¦lÌkõk}jØjül-lÒl¯j'gŽbj\ÏU—NËGd?8$0Â+›'%H#´#’#%# "à"¥"6!Ý!­!Í!¬"G"Ê%'(- 2<8=ÏB¦GJ6M¼O‰PÑP3NíMëM»O¥RUÉY3\“_ºbe±hj/j»j±iºiPh¾hg!fDe!cÆbiaj`d^ë]“\ž\[¸ZìZ8W¯TZO1J[D¤>Á8¤2˜-4'†#Õ! XIz¤Á !$•(Å/à7H@HfPÜY¹a„inr~tMvv5v4u‡uTtÁs±r‘qøqp¤poÞn¦mˆl¦k´kjtj˜kÄlMli>fU`ñ[/SõM+EÄ=Í6U/*%ä$]"ü"ï""~"i"A!Ñ!!!Æ!›"*"¾%Y(~-Ö3t9Î?éE=JNNR9T~V>VU9TsTVVXS[š^ia c‡eçhÍjäl‡l„ljæjƒj$i”h›g{f6edc†b¹aF_¢^‚]{\oZÊYTV@RpMGöBK<ƒ6Ü1[,›'$.!… ­´…0; 0 ¸#„&ÿ-’4–=?EiMÝV­^´f§l-q!sRuuÂuÝu/ut}sUr qGpÁoÊo?onˆmslŒkˆjåjAjmk–lk¡h¤ez_ÛYôR©KÎDP<#4“-L(«$À#ˆ"c"q")"" !Ú!R ö!!g!3!¾"_%-(….;4E;%A¦G‰M_QøV¼Yg[z[s[Z|Z\^9`öcdòfÎh½k9mnNnm„lxlk·kGj^ig»f–eèe¹ec—a‘`3^Â]1ZëXÒUKQ*K½F…@é;*5Ë0­,w'ü$÷"n!| ‹ YâÞÕ ƒ ¬"ã%¸+À2e:îBñK`T\?d€jprŸu)u‰u²tótÝt=rúq‚p—oönínennm l@k;j–jj7kTk k hd®^óYQ¶JÀC:Á3!+Ý'g#©" !•!µ!!”!!S º R e Ö ­!I!ø$ß(S.74l;ŠB9H„NüTMYœ\«__s_~_O_·a,ce:f¿gði;j®l’noonÃn m­mWmldkWjihLh.g|eÐccaž_’]XZ^WŠSOIÀD”??9¾4É0,x(§&#Ó"Ó!Ý!‰ ô Í ³!F9Î5E1­.:+Æ)N'£%ü$ó#ñ#F"n!ò!Ž!¶!`"”#ð(€.6*=ëFFNˆVX^Xd¯jÃnqqƒqÃq=q›q‹p´o‘on²nm¯mŽkák1jyi…hÏhQh]i#hãgédZ`ŽZ‹T…M,Eî> 5™.&ø"ÓxÛéyèû­v° U ‚!{"s%ˆ)A/$4ú;ÜB”I§Q!WÌ^b[f@h9jkl{m‰n¢ooSnónknnI@P÷XÎ_1e…ikél7l]kÿlžmlžl%lymmOmvmºi6i 6.Û'¼#m 7}4ž‡N6CÃJ B!"•$T'6*.274.$+ª*/(™'&ƒ%Ä% $P#g"“!ã!x! Ò . Ö!t%g*½2½:AñJQÙY’_‰evhjj…j4içi_iÆjŠ6ž0ï,ç+‚)’(x';&d%$ñ$_#¹"É!ô!e!% Å ê ­!¡%ý+Ÿ3°:îB½JôR¸ZS_øe’hi¿ih‚gáhhŽhcF6NžVW]ËbÐg¸i6iœhg-f…f:f#eŸeteÍfvfšggúJ@NîTYŠ^Xb‰eirkgl÷k0hñc›^HW OºGÈ@8±0Ï+&m$Š"{!ô!l!!’!œ!‡!N í Ê!!s!¢!Û"!"±#4$B%l'H)+œ-×1³6)<‘C_JqPµV`\`aágškÙoÛqurTqÈqëq¸qlp·oìonm’m¨mþn*mmFjÖgraÀ\|UÐNêG>ý7’0K+±( &Õ%[$°#Â#"r"!²!? i›&öah /#-)b/ì8?‘GyOçW‘_cõh®iàiîh+gefÕf\eúeYee e]eCef[BhGèNT~Zr_çdhœkmsl`j¼eÐ`üYòR®J„B¦;2ö,Ò'£%C"á"D!¤!Ë!Ó!ç!Ù! !F!!.!u!„!¢!É">"À#¢$k%Á'5)]+%.R1Ñ7~=èE'K’Q§X]÷dhçm‘oÛqmqEq˜qPpþpKošnÓmòmxmjm mÔmXmjÁg²b[]HV O¬Gè@8í1Â,î(ð'O%$Á#"â"M!ö!ž! 2©tÍé¸ 5#´*a129hA-I(QŒY `~eHi¶j“j_h…gÖg6f\eedkcžbñb}aÇa aë:b@´G¾O-V4\Úaõg7jAmgm$l9gÎc…\¯UM$E/=Z4ð.M(†% "Û"!W!Š!­!è!ì!¸!p!8!2!I!8!>!I!ª"7"ü#w$M%S'(h*þ-—28m?¶F7L¦S:Y’`)e’jÞmÅoëp2põpípÏp/o›nänm›mhmnmŽm l–jLg‹b‹]‰VÕOãHN@á:3-ö)³'µ%¯$³#c"›"!º!F ‰z‰ûÒ.gS &$'+\2‰:ìBïJüSYZ´bfºjÊk7j²h³h gHeûd]ca­`4^á]t\É\2994AI1QXÎ^ädÓhullm l÷i5e_X'OÊGÙ?Ì700)©&"Ù!× Â Ý ý!T!a!7! Ñ ³ ® š ± É!?!ê"»#A#á$%Ã&å) *ÿ/3ö:@ËGmN%TÕ[³aƒgþG@OBW^^(ei!l^l:k§i¯hçg5da^.ZüW+SjOëM Kx"Õ*é49=˜GP§X©`dýjglzmêkti cU]0UMZE<€4Ê-C(`$>"£ È Sú +  Ôž`ZpÜ @ ï!¶"—#$$8$t$ô&Q'…*$,á1¬6Ê=¼DõL“SáZ4`—ei!kNmÇnÛoŸouo‡oLon¯nSmÏm~lkµi:fˆa{[ÃTµNHG¢@¤9ý3X.I)ž&ù$u#Y"G!­ Éïf¸^'á&’$)¨1›9A;I{QdYC_¥f2iÖl¶lxlj1if˜c ^„Z¬VWQALIGµD•A}]$¶.|80B+L†Ub]‡ci#kÝmþl4jreO_ÓXP™HU?û800>*§%ÿ#ð!  Ì ØÀ…C÷åÞPæ Ñ!±"–#—$/$V$Q$_%5&.(t*“.2Æ97@BH.O®V`] bfîiômn…o–oŠoÔo¦ognËn5mumkòjèh9eG`"ZlSM~G%@I9¹3_.s) &¾$?#;"*!s RS…j;¦ ¼%è+Å3­;CKsS[[ag¶82’-ï)7&\$#;"!,öl5áÄrÈÑô"º(^.P6=eEcM·Uj\ÆbIhjîml‚lbj-güci^+WQÀKPCô<ñ6y2-¥9Î$X-ª7ÛB“LxU·\±c÷h4l&lMl*hªeM_MXèQIºB9à2ã,œ(Ò%I#Š!‹  Ø¨D *.Ÿ ˜!±"¿#’#ú$a$p$<$L$…%Î')ê,£1 7a>ÎFM:TYç_½dh€jùmm‹nQnHnEmšlók·j²h±f‰bÝ_YÆTLN=H‘BÎ<«6ã1J,à(_%´#Ä# !É ¿¦ü†fü¨3“!E$µ*¾0µ84?¹GÏPW„^„cŠhÙk[ml0l ixfo`¢ZoRÞLDŽ<&4J-(,#Iã”z()2<{F•P9Wø_ÇdãiýkzlmiògÆbÏ]ZVOTGÙ?Õ8a1A,Z(%Â#!‘ :É7+7sm“Î Œ!¡"¹#r#¿$ $;$0$($$«%k'»*.~3{:6@òGòN±TºZÅ_d}g“jFkQl{l¨lúlmkÙjFhËfc*^êZ ULOÓIýDf>è944.à*õ'$ì#L"œ!T Qz¹UmVm ˆ#õ'ü.:4<;œCOKWSLZ `dñi~k9lOj×j9fçb·[°T¡LcD¤€Ùý x!b"o#=#š#Ø#Ê#Î#É#š#×#û%…'D+-/q5~;ŠBMHúOuUý[€`ìd“gìiŽkIkÄlck½jùhàfßc„_ü[VÃ\ÊbÙf¡jJkkoichGd0^ÕV–N¶EÕ=+4:*²"`¢Ÿ£ §o±Í%Þ/]9ºDMaV\Çd/h’lkäkÚhºea_±Z)S)L DC<5/<+ƒ'$Ï" “]/×{  Q ¶!h"C##Ž#­#u#j#e#L#b#$$%Y(µ,S1§6ç=$CmJ PÑVá\½`òdïg+i}j6jüj hëfH5,"­ç‹ê b ß,gé(Ç3=ÁG·PÄX3`“fSk>lNm@jþhÚd,_WX·RMJºBZ:¢3æ/A*¶'„#Õ!‰»WÂýU š!-!À"S# #u#¥#g#%"Õ"™"Ž")"¿#Ÿ&e)t.32Þ8ž>SDÀK†RX`]7aÙd–g[h-høg¼fMc4`J\WÂRmM GMA—<46ê2c-Æ*W'%%>#m"^! Iª[·9´8!"¶&A*,/Ú5b<&C2J­R:Xµ^¸bñg¼iÌjéigÔdPaZ²RÿI @6Ó-)$ ) a= zŇ"†,|6ÿAfJÎRç[×bšhãkhmclk#gšc³]ÇX8Q=I‰A½:q4Ò/½,'$‚!á ÞÔÓÀ P ý!Ì"i"Ô#M#‹#Ï#­#R"Ë"b"9!Ø"S"ð%2'¹+Ü/ù5&:"@ FkMSˆXÛ]üad!dçe¥d*bƒ_[ÀW+R~MG‚AèjGíQ‰YÌbhlpm%njl÷k@gc]KWœP®I$Aà;i6c1O-\)%&c$#0"!ï!é"—#t$$$J$$%$5$V$"#›"ë"5"5"s#×%#'¼*~.‘2…7¶=9C€IÞOµUŽYc\Ã]‡^n\ÄZãV¡R-L[F”@À;6G1¥.8*æ(—&@$š"Ö!Á Ó € ( Åʺ œ!ª$!&‚*”/ 4Ý:O@©G€N‘U—[A``c»g«iZj¼hÔf\aI] VUN©Dø;‰1ï(dìs, kðH“ø² ÷I"X-M7ïB8LTÚ^œeŒk#lènõnWmòk g±bz]ÃW»Q#IâB­<6ì2È.[+((&W$¡$#R#„$ $¬$Ô$ $w$\$$‰$O#Þ#J#*#P$Q%+' ) ,L/{48Ý>ÁDÈJ¼PÛU(XéYÙZÛYVàR=MnG[AP;‚5ä1Ž-~*Ñ()&n$ž#h" !o ç Å x e 7 ¡!"¡$4'X*§/š4À:ß@šGN9¢5K2.«,H*!) 'Ó'|'r'É'à'À'q'0'2']'u's':';'p(9(ç*N+¾..04I8Z=¢CH›NzRÓV®WºX¶V·TeO´KE9?k9ç4“0–,ñ*¤(G&·% #ø"è"k"!ô!¢!É" #5$a&¶(ý,È0è6X;®AªGŠMÖTÉZØ` ctgGiBÔGãM8QHTõUÿVâTÔRfMÇIGCÜ>\9%40_,ó*Æ(&ü%g$`#S"Î"K"O"*"Ý#¿%À'¤*Ç.2¡7n=BjHGNTË[@`Kd›g-jŒk¶lUiÆg a”\xT¨LA§7-Ð$¤¦ä CÑ Û®ÛŸüJɼ ªœc$ã/9¦CŠB—FœJÝOURµUÌV–W6U:RâN¯J®Eå@ú<47”3û0©.i,*|(Í'˜&M%—$à% %1&Š( *¼-;0è4Ú9Ó>¾D INNãU ZË`/cögŠimkìkÒjÛfÞcK])VãMúDG9¶/Ý'Qø( ê¾÷,˜¼¶ºŸÈ‚N mi2œ(Å2µ<„EëN“X _Ye®hºkkl`n‹nÓnjéhd`†[ÊV.PrKMGŸDJB?©=ø<_;‘:ë:š9ø9‰9I9[9i9Š9‰9©9å:_:Ö;q<<¹=j>q?DACbF¿J M˜QdT;VÃW:W‹UœS_OœLGàC‡?1:í7†4e2I06.¬,ó+* )B(’)){+F-30\3p7Œ;Ë@¿E„J¿P+UÆ[§`dÀgkjŽkÔm kGhÒc¾_ƒX³QF×?3ð*‡!¹i «7u|‚m¬ ÔQ›üë¨Ê`Nó‰#®,Ê5g=ÚFYNsWH]óc0eãik:nnÈnOkih¿e@b^ZžVßShPíNŸM-KJ°J IéI—IkI5I?IrIÃJJIðIàIöJtK KçL­M–NRO–Q.SkU¤XZŸ\c]½]]m[ÔZ W+ThQ MˆIøFsC§A.?y=¿<8:d8×7J6¬6777Õ9î<&?pB«F›J{NòSžXv]ha|e)g‹j7kblÂkii)d_`_ZBSêJÅ@u5x+–#Dï0 SE­þ­A~â Ê1sä¼û#I? Vï,Å$È,ð5G<ùD¡MLTó[á`Acúf`jlfnlékgçe€c`t]´Z¯XUÍT]RÙRQKQPæPíPÒPãQQiQÔR QöQÂQ¦QïRfS?T TôUªV½XYæ[¶]™_±abaºa‹`3^­\9YßVõSàP¸M£K*HýG[EšCöB@™?%> >3>þ?ÓAæDG8J5MÒQuU£Z+^dbHdögvhájëk"j×gÃdL^âZqSµKÛA£7-$ï2# :Íæô­thË ¨:MŸµé“Äñ( ü$Ö$s,Ò4<;ŠCFKS‡Z*_jbŠfJil|mÂmðkèjg¶fd@b_ß]±\ ZŽYÇYXÅX{XyXlXšXÖY;Y³YþZYíYÇYÞZZÀ[s\V]]ø_`ƒaâc:dÂe­fReòe˜dRbå`ä_\ðZWðUWSQOOM}KÁIáHYFËF+E¬FzGcIˆK¶NËQØUvY8]`ØcÓfbgûj jôlj‰h$cs_iYÜTªL¹C*8$-â%(³€ @¯™Ÿ,sûÕg:LŠàƒ"yªó VþE¯$o+­2·9!@H€PvWl[õ_Ób fÂiØlPlQk‰i­h»gÓfÂeUcb`¸` _z_E^é^Ç^±^å_'__÷`B`{`|`e`M`B``äa{aêb€c7ddæeÀfËg„hgägªfÅeÂdzc†bF`Ç^Ë\ÃZ¥X©VÐTôS1QTOÃNMWLÒM©N›P®R´UƒXj[±_b d¥f6g¢hkiþj iyf(b;\ËXšRÜLlCM9.¢%¦M| @0ôÈE¸.‘úãŽeŽ9]Ç“Æ&¸ l "Ïr"“)ß/¿5è=HEwMúT»Yï];aHdÝikƒlældl/ktjüj>iHh:g>f¦fJf4eíe¹e€e•eÖfTfÆg&g~gšg£g}gTg9gAgWgQgJgLgdgkg²h6hÊi8iWiii.håh‰h}hgge÷dobt`…^ˆ\ ZÊXÑW&UXTžT>UIVaXnZn\é_~aýdgfg›hji’iÙjch£eÜ`é\gWRsK¶Cg9.º%£ßõ/ ïõ][ÜÅSd²Ø˜JY•K 2­Ü¬™c[« ÐÛâ$!C',É2†9AêIøP¿U;Y6\Ša/e0hiðjëj®jÍj”j_ióiaihùi*i6ihÛh¹hØi2i…i»iàiÅi¡iHhïhzhgfîf5exdïdcdcd£ePeÐfug.gôh±iNjjLjPiuh†fóeZcŒaß`4^^\Ò[5Z¤Zr[o\f^_abc/d˜eÎfjgg5gôg]fVbÔ^•YTµOoIòAÿ8š.‚%tI˜\ Güƒ4å|£Qb·¿–W8g|] &{¶BSðë” u éŠß÷#ÿ(ù.´5Ä=ÔEøL‡QµUNYœ]¬bezhyiºj°j‹j’j_j/jIj­kFkÓlkëkk[k9k,kj»j/i”hÛhOyFeR ÿê3€IÿþêwÌO» ƒDé þ%Ó*ã1l9HAGLP'SWÃ[î`Qc2eCeŒeÛe¬eµff¤gthRhÈhðhŽh?g¼g`f¶eæd¯ceb`ò_å^Õ]Œ\Z|XúXW[W‰WÊXÏY£[P]h_úbjdff1gDh\hÕiTi0hëh1g‡f¸eÙe%ddVd0d6d&dd c÷cÖc¹cócªcNaf_[)WRaNyI­D¢=[4Ø+´#tÝ¿Ý (òTðöë(¦t£Öä•H\Œ‹^{6ÿë4K$ÿƒÿt°n s ¢Dsu!‘&•,â4e<BbG´KQNëR{W[D^ë`žaÀaa’a£bbÖc°dSd½d«d¬d6cÌb¯a`_n]r[^YƒWÁUýTQêOíNML'LfL¥MÜNðQ S¿WZ'\ì_uafcndìfngBgöh h7gígŒfèf]e¾edncµcb›b=añaha_›]žZVcRNSJ1F]@Á:1¹)&!yýq ÉÚúü˜xá… ëë¶hF…¿”LŠy6ÿþ?Yÿåÿ€ÿQ$€Z@õ= fH„wa"Š([/r6Õ=|AüETGÜK¥OÂTVóXñYY>YY1Y¦Z&ZœZó[[s[U[!YöXVSTQ™OCLæJˆHEbC@ç?Ì>Ó??.@sA¬D&FúJ•NQcT„W7Z\P^š`a~bbÀb­bxa¨`ß_×^Ð]Õ\Þ\0[´[S[ ZY VxS?O K,G|DŽ@Í<{5ó.`&je( ¸nÍzȰ<ÖºâÉuSn²Ò‘=„¯+ÿ×ÿäÿøÿ´ÿÿÿâBíR Ï}”w˜Ô#G*;1”7 <#>ÏAÚDÓHŠK¹NpO›PlPWPPžP¶P°PˆP~PÔQ Q(P[OCM8K9H½FWC¨@î> :ð8S5ì4¬3ƒ3Ž34¶5ñ8;›?ŠCdG1J¿MèQ2SýVÔX·ZeZÿ[©[i[ZYXW VJUUTÉTS>QLOKÆHUDºAÀ>;o6©0û)ê"½{Oi hb“‚°EÝÖÿð”Rc¥ÓËŠ,:i¸Ânÿòÿ¡ÿ¤ÿó#ÿ·ÿcÿ~G9E”@ S_PnÕö%^+ò1‘5%89ö<„>üACnDÑE4E¶E«E¤E>D§D9D>DrD¡D,CnAÓ@A><9s6Ï3æ0Ì.,+É*‚)J)6)*+<-Ø0À4 8u+‹%F ¢£ Ì ŠÅRä^î¸_üÖ < ­bW‡ÅÌ©‡JDYŸ¿ž4ÿ²ÿuÿ±ÿéÿ›ÿDÿ^ÿî¹þmÎuà D 2/¬9»`%$)÷.0Z2’4 5á7i8à9×:Ð;0;ˆ;8:­9ó9‹9<98Z7‚5ú4i2Z0c.+Œ(Å%Ç#2 Ù›qnOm œ#5&)Ù-144 7¡:¼=O?ïA›CCuCòCÖC·CPB÷B‘BFAÓAb@s?x=Ä;Ý9…7G53K0ö.m*J%lÁOÞ&U & mê3(O·iø)^SìxNnœ¿¯Ž[TSs§vÿýÿÿzÿ±ÿñÿ¤ÿ]ÿrÿÿ 5/œsœ; I œzœ¡#u&Ë)\*V+m,&-0.A/a0-0ë0ù0Ó0&/›.×.*-+ù*P(’&‹$«"— hÿ`! 53Db¾`Ä# &H)[,.æ193‹56{7'7á8,8~88“8M87@6j53‰1Á/ü.X-+š*8'}$Vm s÷ „ ã ˆ2¬ª~!õ;Š…*¸g`Š’Ž‚ša_Wbs“~)ÿÄÿ€ÿŒÿÙÿåÿŽÿQÿqÿëddQ/þi±¿Ñ i —FM8Ÿ `!¬!í"n"ë#ª$l%"%v%¬%k%>$–#ç"!@]nQcZ)ä• Ý  T l [ 1 %‡­¬°˜ N#%ˆ'ò)»+p,u--ê.N.(.-s,Å+ž*n) '¯&j%P$1#9!{x(\By ´ z ÛÓ»I©©ÔiK 5„›Uß•…”tZc†¬S\\eitc@ÿ°ÿŽÿ±ÿñ ÿóÿ¯ÿŽÿ¹x ebšÆ^[éQ o J ×0¼Z4‡Ä”¾d·*p7Ö«f“ÂÎ+ * : Gߢœ£~Ž" ÿ ™®6¹Rºÿ!Ô"ï$$J$y#ø#"•!– mN_™ø~Wo6 v j ¥&,}·ÉBHéç3…žaÿ¥‘¢˜~N=]“°>JTjv{cJÿÆÿ˜ÿ£ÿÕÿóÿñÿÍÿ­ÿ«ÿÕ:2 ÿÇÿû…²ò$Ú¤—e Ó Tn`cLJE[£®Èà |  ¦ Nö{%Þ TÇǧï=Ap:ö ö é ÿ-E\ö{K( þ7k·&¿wêIà6 ë Ž `l'WH3ýLÿô=•ëæÎì+x‘s ܰ£ŸxS8Fn™¨-=Lm~~_DÿÝÿµÿ«ÿ¿ÿÇÿÔÿåÿîÿâÿÞÿén¤ŽZnG|yÿ6ûx* „ ™ ” # Õ ‚ 'ý  # *Ûp±ðOÀ€.ãÊ©¥”¶Þ^ãÍÅ I³ 0 ¡ ^¹¦‡,Õ‚: ð 0 . ‡Á¿õMÑ)]_©9Q€¾¾¨šÂ,…–\#îáÚ¸…I.6^}ŠŠ6NXb^YLM5ÿüÿÄÿªÿºÿÍÿéÿýÿúÿóÿ÷Ej{Rÿ÷ÿÅÿ×W‡wÝ(âðÛJp#ø¸p<!õÔ8ÏgѺ±Ç×ãçÜËÁÆÜÖRì…?ú®câOy¡¤¨©±Äãöä·³“Žýª§ŠPõ‡ÿæÿï4g‰‹’·úTz`ôäçÛ¬m5&6[kjh;W\TB9:KDÿÜÿ½ÿÆÿÞÿý ,"*b‘WÿìÿÈ­ ¢&ÿ÷CÇZ¦´ÒÖÙ¨‚\@6%üÂ]Nn•ÅçõûêÓÏÀmo¢ÕBj‘¶ÝFÎ)o±¤‡ m»Ì»þCZ0Ô‹hb}’”nZn³@\?ìñùÒœgB;=KOLL :LXP@045(ÿÝÿÆÿÍÿñ/35H\{bÿ­ÿ˜ÿÎ@ÿ›ÿ&þøÿÿmÿ¥ÿÑÿù<Uig\OW\O2 ÿþ$S€—°¶²ž˜z?ÿßÿÏÿ¹ÿ¤ÿ‰ÿpÿSÿJÿQÿkÿjÿŒÿÏ4¥èØ„ÿÿRÿ>ÿ}ÿÇEH5!?a{‹‚^Y…Ö@E$ú Ô£vSF:=HLC1UdY;&**ÿÚÿÅÿØ'ÿù"CQ=+Hde>ÿÝÿì(j}T ÿáÿÞÿç Ev¶ü)>6=2úÔ³—‘œ§—‡‹™Ÿ ¤š„i^T:"+#/a©ñÿì•-ÿâÿ»ÿé6„¥…O @n’ye]Vw¶ø)& Þ¸–v_E=IO:?ZhX4$5- ÿÖÿÀÿã/$ >G@=>OL(ÿúÿÏÿÔ<H"ÿîÿÅÿ¼ÿÝÿö#UÑü(.%îÕ¹°À˳~Š–›‘{bWK, ÿ÷ÿçÿíÿþÿø.^{h@ÿÇÿµÿÄÿý9VFÿñÿõ"e‘_LRY‚Æ #ï̬šŠmRG:%?bjP*"62ÿûÿÊÿÍÿý4K%ÿøÿùJ_I(,?UG ÿÔÿÊÿò$E: -[ˆ¶äüþú$òáÊÅÝîÞ¹š‹Œ—œ’y_YXG>JTE45CDPtŠƒdKBEYsv`1ÿüÿèÿô.w¦ª‚_I@TcË þ÷ õؼ´§Š`=ÿÿ*JafL!5!ÿüÿÙÿÜ <@% %LZQG>KL-ÿêÿôJT=E‰Õ-ûÿ÷ìÖÊÕâÞȰ›‘™—‚ifeRBCG:06CBDV_M;=Sp‡l;ÿÿ6dŽ™ŽlTF7E`™ß ýý ÷èà×ж‹V( ÿú -@^\)ÿûÿÿ2+ÿßÿêEU8 *\|oK=>FF* =UU52zÙ5VEöíäÑÄÂÊÐÎIJœ–š‡ojfT@51+-8@808C@D_yˆz`;3iŠ‘sf[UCLm¨é  òôõÞÑÓϾ–f9 (%"#;E+ %/#ÿÿ,PQ8<i|q`JB9 2Vi\>&4X¦FQ0)ÿäÓÎÅÆÍÖÝÚÕĪ•“‘w[PND=7:BKQK8-5JQZsy]A)Drˆ‹”’Œ{eYVp“¾áõ  ûêàÓÇ­ˆ^9" ;,""  4B( /P\C'(Fo‡„`< -Mel`SOKq»36>+íÑľÈÖáàÕÑŰ›“ˆlP@?>CGMY^[M72Fdtv~tZ=.0/<Ofs€œ­¬”tfs™¸ÐÚä*óÒÊÎλšlB'=#   +E6 ?[_QCD[wˆ{[6%))3CRZ_lukr”Ìý BF?ûÜÅÁÅËÅ»»·«›”‹xeUQSXXSQK?5(/Kl{y{nT>:DDOb~˜©·±¢Œy|ްÌâðü"õÈ¥ £—wM' 3!  ) -3.#'@bumXNVp€qTE@<>?C?Jk‹“‘•«Ìü1QbK*ý×ù¹®¦¥¦¡›—“ކzqpneS>."#%6TltlkfXNOVR[s–½Ë懇•­ÂÝü öÙ²ŒslgP1  /' ÿý'/1-'(Ov…w`PZhbQD=9>IPGF[{›¨½æAYI-èÙÏȹ«£¡žœ—“•“‰}zsfR8)%2>Ofqoc_\RKHNQa{™µ»¯œš¥±·®©µÏòùá­ŠlL6"  +*%  (  $&+064$!8\{€oRIIGC:43>S`UIOi‡¤¶ÁÍã';2óîèÞп¯¥¢¡œ——•Žƒ{qeWD<?MWamoi^[YSMCDPj„–Ÿ˜š­¾Ä·¢”—¨Á½•_F:%ÿþÿ÷(.("Ï»Eõ†0Ê1#anRµë ݶó0Пîóœü4f7÷ Gæ ‡#%¢'R%¾"ÕÊYYr$ n  k ( ü ¿ © ­ Ô ü    ö ê à ï  8 | ¸ ë ã ¹ z D O ‡ ï = † ÉkÙBÎ^!ßo¬óGl¹á5ª3Áþ·I#÷àrÐÀŸ…™í?° ’  Ã2á •k0ážwc~ I û¶j;A{‚ŠSû䂯’ \"/#›%%™%s%&&e&3#Ê ­3( ‘ Á † ) @ Ñ µ ¬ Æ ê       5 \ « ¿ – G ô ½ Ì ý > O S e ‘ Å  W º  ´v$–Ðc´&:Ø•a ÛI”¤À hÙß´ßã© ±Çèçw1 çAT";VcbE7ûÅ&g8ä£à•!=ó jOVP±S@!X#n% &©'"' &1%ÿ%-$-!ºãíñýê M t 8 ä Ø ª s Y R x ª â   & 7 Q s œ µ È ¶ Ÿ b Ç ¢ » ì      2 K € ±  § 0 € £ Ê  f þœpB24åuõvÓïûçGfMgšåÑr¦ãû¿'‡Ø÷ϬbC» °úLÿ^$¬YÄç æ*ðæÉÈëÿ‰Iî! ""0!û! ^K^fBëœ d o  Ò • a (îÛÜ  C € ± Ö ö  < a ‹ • c 4 ù ¸ — ‹ ® ß   ÿ ð Ó ¯ – ‰ ™ ž Ò 0 ’ È × Ü ù -    à a& ↤uç­AŠàþqõbò˜mÞç)¹ +Ô•˜Œ2HŽÏú;è þT‚#þ‰jÕ:¸»é'0•âyü:.`âç>† 7 . 1 c W D \ J /    A d Ž ³ Ø þ ! D Y n i b : Ì Œ j [ s ’ ª ± ˆ g @ &  $  , d ¨ Ö ä á à ë  ] ¾ ˆ 3 ó }°²Åozk Â<&CB@0\o*Ú„qÌ/õrzïmg\ÈêU®ËyÛU~Ýå5­¯²zY””ÎUÒè˜îIŸ ‘#H - L  ? ãö   ÿïççïóü   0 G ] g i e p j S *ùãã 7 ] q d P 5    / 0 F t ¯ Þ ö  þ ó ì ï  ú * ‹  „  Q |,ýªwÜwêCyãôÒ?7yÿ+Н…xÔq¬ª˜W{ÕŸ^±yóPïÞß<{®]â™O ¶W ÷ œ V  ½  ô Ëîg†—©¶šdÙ¨uV;5.45BYr|ˆ£º¾»³Ô}ó E u ^ = îäÙãð  ; c w ƒ ¢ ¸  ¸ « › y ‹ Ð < € Ç Š IÙb©²i?ò™&ÛN¦|+›cŸFãv@‚l“|ÊGbT2fÊyìþ`öíøn w f w í Š v X 9  Ä v Oÿ~ ÑÇ ‘¥¬šEÕPä—J!öçÜÄÄÜ">c‡œºÒ"1æiÁ¶œa=' !`¤àý  B q “ ¡ « ¬ ¢ ¸ ò > o ’ © à  · f s›À¹r"¾j!ê—;ÆÇwhv§õae >W棛6.ÁT’î`€¤ ] ~ $ ¥  C “ þì¿_¿ ‚5774ÛÓÜÇÇíjÝT趇~ucG A^~¡ÀÓð \Âe!ÆMw‰_BîìjäfÌ  6 G W b ‚ ” ‹ { v ” Æ  2 _ Š Ú , Ç … b+Æ9§9ú¿•v/Ë2¿dï³®ÒéÄdõš§³zÃüh¶³ÞÉ w  Á í f <ÚŠ0$_ªß†äÖ¾¤Éï×}5ýÁ¹ïãs ´k_n”£•~V)6J]rƒŒªÝ‰®?‘ɼ¯Ždf{èq Î:{qedÈæïéÿ ; ˜ ä + q ± æ * { é d Ñ  T ¯5»h'畚 v )   ê ´ ‡ ” b ‚  Ñ>=H × > Z • È ù 1XÁ[5ïÄ®©­<¤ñ-a yàÙ_þ =  ëÁª—k\€«±ŠZ%ü÷#)+5HZp~ž¿ mèfºõõòÜÈÐÛ(€&ø¯-<! Š”ê , J x ¾  a € s T e ¶ 5 ˜ à  D p È 6 Û:¦ Ì \ 9 - F H I T O [  l Ø ² ï  : d 9 Õ 7½Pí„ú†5 Û¯•L×3“›e!6~ñ]h+ ;Úi ïù+`y^8L^LÚª‰‘«Å¾¯²Èâ5Lt¨æ%MdfmxˆŸ°ÎÖ%ºkü51$œXA w¥š¯î X · ï á « •  A Î : o d [ ^ l ¹ , ° ï " Õ ¸ ¤ º Ö û #   ¤Þ,å Ðsò‹#¯@È…tqJê÷_ýÊÚåìÓ»ÀËÚ³^ížga´MR)ãÑš`%ÿôÿÄÿ·ÿÃÿÓÿ¼ÿ¦ÿ£ÿÆÿð-n£ÌÞôù÷ñçü(n¯ã"î¼»bÍOY–æùíÂíbÄ ' M = ó # •  W _ o d J C \ ‘ ¥ G ' û > n [ ÇDCG*ý¢HÓcÜ9°> 6Cõ~0bÏQˆUð¢a.ÁokLf°%ŒÈñÙ²yV@$öÔ»¾Èº«§µ¾àIje`9Ì–›ÃVáí½M䲦òT¶ÙõžŠ¨Ž{«ïIÆ1ƒ‰WA‡ s »  ñ · † m l‡z„¶Ùé— _‘ô ˆLå°}÷q0#*÷†ÿŠ~­(§Ô³2¹[%=oޤÁʸ­Åëýþÿ E†½ÔÕèøúÔ‘]WnufY"ØsÿÇÿµÿãÿú5”åþÒmÿñÿ¦ÿŽÿæUà2„ì~Ë…p° ‚-›•}ÁLá G ~ \ 7ï£u{èúüôýè}ô,[­,éfbaGðhúÍí( Çqb‰ÊW¶‚r÷äüw÷uÕ.% Ö©}G0'Z ú4rº(¶8•Àí>F>Î*kä…Ãv(ÓeÞcÉ}ho±;r3£ÿëÿGÿ=ÿ›Zî:B6KÅ‚Sã4kƃ6Ÿídp—lY4é '71 ï±mñi¸ùP¶n;OŠMÙf9d FÜËÔ¿¶ƒîBGDDVª!°8|x]-ýП†º÷s™ x î † C î t ± ä ú G O < … ’ K 30 N+ݬiý‡ÛTœA4’×àeÿ¤þûþþôÿ˜YÊËŠq»€\`ª$|¼ ‘_pŠ{S<h§ËäÙša©7ËO»=Å©½ MV ÇÅ!© óɼk’¼ ž ) Ë r 3 î ”¼#woQͪ–¥§Öû QôpÙIÞRä/g†ëô## a¤ % ½ í J Î eÖÝÒA#˜f¨úìn|ÿnþôÿÿØ”ñÃUsE:·ÞOÆ8m’Ú<¦ÿOjd[„(KAý¾bŸLú@ü9x~d)QãËUû Å ” _ äXî;XWÂó 'Z‘íYÅWŠÔ5Ãlô=c”«kqÅ  ª ó! MuÐ#÷½O¡7f Æ   < ÐK¢(¿Ü2ÒÞÿ¼þÖþ¿ÿ$ÿçX^ÿÔ3ÿ² 78“Lkl‚É>¶ 8ElMy©¦uPá¡_'åÔä"]ŠwŸðöLÞ÷% l ` Ì^‹-™ý½­¬>š 5 ® Á ô! !:!""Ú#$=$ú%~%ê%ý%í%ß&&j&÷'e'~'t'~'ß(|)F)ë*f*Ç+'+Ú,B,u+×+6)°( %¯#N ¶ Ö© e;Q†¤´0 o 5ÄÝjhù4ÿíÿRÿÄeå­0ÿýFåŒÃ¾ã_W.7‘…Ýe£îþêèãìÔ‘J+tÕï$èóè  Ñ ó›à°èˆH ?"¤$ö' (b)**Ž*Ú+A+¾,2,ß-Ã.¢/Q/³0"0?0K0 /Ÿ/b/i/à0s0ø1%1A122ß3º4o4ß5)5h66b6‰5ê5P3Î2/¹-_*á(r&;$!"@ MŸ!áïÅX#• Ø : y;ŸìÅÿaÿ½ÿ¿V~Xÿìÿ½¸=tk<Pa@ñz„»»ÿÞdtl|•¿Á€LG®@ì)»Jd 6 ЦXÍ L"ù%-&ü)-+”.?0l2-33õ4}55²6h7>88ö9ó:›;:ú:ý:´:b9ë9P99 9½:l;$;Œ;÷<Ž=m>o?c@:@¢@Ô@ÜAIAtAk@§?é>P "§ú¤gi"&`)ó,È/q1Ä4^6Ó9Z;8<Ä= >–?F?í@”A[B9CCåD´E-E„E†EœE{EMDýD…DnD¢EpFQGCGæHˆINJWK†L¨MºN@N|N`N¯NœNQM9L4JEH E:Bo?æ=“;è:t917»5ô4 1ú/þ.,+*R(”&ž$Š!ÿdlOX£]=  jºô!äœ*×&ÿÔ ˆµEÿþÿó *[°åæúî¸xWG úJõp ¼ cùtz‹ è%Z)š-±1=4Â7È:Ù=s@B$D.E¦G H I/J J¿KPLLÇM‹N0NÆO,OOÖP/P_P{PfP'P&PfQ(RRõS›T8TíUäWX/Y[ZZZZGZ˜ZyZ"XþWúUÿS®P¨MJÔHEFƒDùCåB·Ap@>k<¯:‚845¶3V1.¶,}*†()%u"XËÆ.–£ ø˜µ9:ÌŸ°%7j’LÿîÿÉÿä 8::_† Ê‘÷_ÙqHí!„Î4H + ©4ˆî !Ê&¿+Ä0Œ4À8Ì-)`%!`B &÷ ƒ^oúÕŽÿí=+ÿúÿÀÿ²ÿà/Y o Ð ­½ô¸^þæ ß ÁfTËÄ}#½(1-H2¯7ÈiCjGÄK‚OÃS´W¸ZŒ\Ì]ù_c`€a¹b¹cœd]eõDCISM«QšU)Yc]`ybscÿd±eÊf¥gngãh:h†ii™jj¸kRl$m4n!nÚoo n¹n•n6m­lülFkÚkškÅkðlOlœm mnn†nØo>oeoUo)ooHo“oòpop_oènÔmÚlÍkçjùiüh×g¢f`edc.bLa:_Ë^z\£ZŸXU‚R½PMIJÃGlC°>¹9e3ï/E*²%Å D&·  àw—Ÿ&¶'ÿÈÿÎÿð *$&'k&$" ‰ö³Ç j!ñ$Ð'Ñ+ê0(4®8Ç<êA0EÙJÜO¡S÷W–[-^}bKeUgçi/j\ják®ll[lHl9l4lMl‘lÂm)m naoYp#p©p¥p–pCpo´o n;mym%mmgmÅnYnÙooppºqLq™qëqÒqq p·pµpÞq9qžq¦qap¹p*o™o"n£nmflÅlkxjÂji1hfÌe°dLb¾`Ç^å\¤ZSWŸU"QõNÀJ5E?19¾4f/W)Ê#f‡€ r°ÐVDeGÿÙÿ¼ÿÊ('31²/-V+¢* )Þ)ó+–-0 3]7±;ß@ DHLxPßU/XÖ\4_bdÅg”ik)kölöm„nn$nm¶mymDmlõlÇlëm7mán®oTo´o³oÂo¦o«o\nÁnmTm&m4mÎndo"oÄpiq"qÄrir°rär”rqnpøpÚpàqq=q0p÷p‰p-oÒoo*n»nZnmëmÓm~m lki¶h¯g£foe)dbÌa[_>]Z4WŽS¾OˆJ Db>{9C3Õ-Þ'r Ç÷ô „ Í!õL¿ÐZ <B>‹=:–8#6=44}46*7Ä;>´C>G_KvOƒSŒWé[º_a£dBf{hèjÊl~mxnWnÝo¦p#pwpZp5oÛo—oAnÝnnmÿnn­oVoëpApOpqpnp~p:o²o nxnan†o,oËpˆq/qÍr~ss‹sssrXq®q5qq qQquqƒq~q\qAqpöpÁpzp;pppoÊosnœmŽlakwj·iÝi'h¥h gjf!d½bl`2\ÍYUTmOI C—=è81§*Ÿ#äâØù Î1 ÇÿþÿÙÿÞ+PI G{DæBQ@d>Ô>È>µ@UB E„I4M|QHU Y\×`›cae£g4i:jõl¢m¡nfn¯oojoàp%pBppoÆoyonzm÷mgmCmTmänŠo-o•oÂpp!pNp1oÝomoo oUp p¸qkrrˆssps¸sƒs,rvq®qp•p‡p†p²pÑpäpîpÞpÔp¢pdoþoo"nËn€n5mÔmplÖlkNj·jXiéi³iŸiži­iGhÚg^eªbÆ`\W×R…MXG©B'< 5{.¹(="Ig] ì Ûp÷_²Fu„S±QÔO L\JyHüI HõJ L­P+S­W†Zÿ^mbNeŸh”jIk¤l{méooìp,p`pVpkpsp{pkpZp/po¾oHn”mØm/lxlPlsm)mín™nøooFoloªo¨ocnÿnšn¾o@p=q qærrñsmss¤s:rµqápÿpQoÓoÉoÎpp(pApWpXprpDoèo:n…mÙmalölbkËk=jØjwjQj2jGjLjjõkskëllbk¼jÅhfwc@_ÿ[˜WQ·LpFv@d9Ã3,I%и=Ä» ?Æ ½·¡‚[ÖYúW[TñSYRR)R&S¾UÏXù[â^÷aòdàh%j¨l©m‹n]n×oÀp_p¨p„pŽpZp o‰onƒn-mÐmclªkÌjÉiÉi hFh6hpiNj5k kŠkÕlAl»mYmÁmßmÍm¯nnáp!qEr+rêsGs½sÉsÅs7?0œ* #S?Q– ù •ÑÊû9cÂb_Ô]à\«[ž[º[È]2_a³cõfLhÉk#m”o0pcp°qq%qhqxqlqqpjovn6m)lVkºk j!hÕgkfd¡cÇbûccGd4ef%fïg»h¦i¶jãkàl¡mmn+o2p†qÊrÈsŸt t•t£t¢søs1qìp‘oIn=mŽlìl]k·jôj(iPh¢g²fzecb~aÁaf`Ï`k_ò` `‹a¾cd—eþgwijškélÔmënenËn,m_kªj1gÏena¨]cX5S­NhHµB;C4;-R&» 8~í IÿdÝh.füeedcFbbb®cÍe-gh©jZlKnopmq:qsq¯qŒqbqpüp˜p+nîm2k/i¡hhgKfdgbˆ`¨_ ]\£[Ü[ê\\Ð]§^ô`&aµc]eJgGi jÓl&m^n€oÖq1rŒsštuu¼uÚuêu9tkr÷qmo½nEläk~jh~fÝe9c˜b`^«\é[4ZYCYX¡X¥XŒY$Yà[…]U_¦aÌd fohŽj€kÝmGnnínínÈm¹l¼jíiSfobï^uZšVQWKaE >7i0Æ)ü#€kÔ ˜ í\l2k|j†i¾i>h¬h­hÚi±jškÌlÔmôoPpkq0qŒr#r`rvrq±q(qp]oembjýhpf~dÙca^Î\‚Z\XÊWMVU·UUIUÓV‰X$Y¸[û^Oa cÏf}ik-m+nÁpkqÕsMtkuyvvÇvävívPLUH,DúAà?è>=<; ;6;;û=.>N@;A÷E HˆMfRJW°]bgkXoªr»uŒvüxfxßyiy]yfxåx…w9uåspkff…`¯[U-O7IèDÅA=e;?99896ÿ6Š66–7[9a;a>sAŽEŠIN"RÌWƒ\`Qd²hhln‹pèqýsrÿr–qpÏoËn‚lùköjEh1d¾aP\ŒWÎQ®K;Cõ<Ï5Ê.µ(•"SkkÆlkèkªkÜlIlŽlÍlýmZmónnéo'oªoìp,o{n~l}j½güe`û\»W¶R©M H¤Dq@n=:†8›6Â5ç54ø4å5z6 7*8)9ñ;ž>ÃBLGgL’RXj^1cÔh¹m¹qptîvÖx¥y3y¿y•y™yx¼wvv0s\pYk‚fe`YìSyLíFì@÷ 9O5Õ2u0:-ß,˜+y+N+!+w+¶,3,“-S./0é3µ6À;·@ìG†N*U[áb"hm«r‘uoxxÛyuxöx°wüwv]uIrËpkƒf¾`FY˜R6JêD.=ˆ8\3C0=-,·+â+û+Â,-,Î-ý.Ý0f1ë4×8D<ÛAEòJ¶P:V=\SbCfîk:móq r@r¼qÌq+pioëorn¿n mçm|mkhi“f"b“]ŸX¨RÊL£Fª@°mnn}nwn4nWn·ooaoÈp)p}p»q4q*q(o±mÓjFf¼b ]}XRfLXFV@»; 6¢2e/~,ˆ*Á(ó(W'ô(^(¦)&)”**}++¦,¿-¨/î2q7;èBˆI=P¤Wð^íf kÌq[t¨w²x€yxiwôwvzu[tQqúolk f¡`cYÄR0J©C´<ò7Ê2Á/¶,Ð+¿*Þ+*Ü+%+ƒ,#,|-M.002ë7;?ÍDyJ:PWA]Ñc0hkto3q r5q«q0pqp5oýoZnÕnÇnÛon?m*j§h$dV`[VAPÎKTm=nQn®n‰nn"n‚nãoloùpjp¶pãqˆqdq n¼lgwc ]~WûQÅKWE>Ö9¬4š0í-j+,(À'€&]&q&Ã'ž(,(­)()§*6*Æ+.+Å,-¤/e3N7=ÇD0KºS’9u4—1Œ.n-+í+ñ+¿+Õ+Ô+ß+¹+ñ, -o/B2§5ï:j>¿DmJªQ•Xg^RcÏgÚl;nÑpñq0q5p¤p³p­p=oÌo¯oÓp8oöoAmak hÚfb/]ïY[T½mLn[n nJm²m•mþnro%oápmp·pØq±q}pËm²j.d¹_Y*R¶K¹DŽ>7È3.‚+ˆ(£&ý%!$k#ä${%M&\&ÿ']'¾(.(Ö)j)¹)ç)É* +­.ñ2‰8>¬FRMñUÒ]¼d°k£p^t¸vWw£wvÊu¾tàsŒrYp_n`kgÍbž\ÝU N`GD@L:Ù5Ê2–/<-š,T,6+ì+×+—+G*×*§*U+,.¦1>5N98>ÄDÛKøS YŠ_¨duislÀoÒpäq€q4qŽq¹q‹qJq:q}r*rXqòpoimyk}h†e3aƒ]Çm-nn2m¸mlÌm1m²nŠorppMp>qp’oMk]g$a[T0MEË>f8&2P.X*x(*%Ó$¥#Z## #×$Ê%À&J&‡&Ï';'ú(”(Ø(º(I(ˆ(é+m.R3Å9u@àH:P(X _gl¯qÜt2v"uöuúut4réqÀpn„kÞiN8ÿ5t1Ð/ð.z.'-¡-/,€+¶*Ý*U)È**,>.1w4Â9ß?xFeMQTZ¦`&e±i¼m½oÅq>qwr-r€r°r«r¥ràs¬tsÇrŸqÁpOnÑlŽiýg(dQm*mÞmßm`lµldlºm>n0oCoép o®pbowmh½cÈ\ñV>N³G?82:,Ú)œ&s$Ñ#"O!›!Ú"7#&$#$ù%r%©%ö&q'C'Ò('‘&Ì&o&'Ð*.ó4';WBoJjRzZ^bph¾n¦q¡t$tNt–sÎs:r9Ç7B54Î3À220 -¸+Z)Â((\'è(q(ø+- 15—;ÏBHìOÊVg\úb„hk×op‚rr®s†sâsétuuóvueu tisÎr¹q]oÒn]mxm½m—m5l«ll,lÀmÒnìoQo=n"mókŠgãau[XSÆKõCÜ;é5.8)œ%Ž#Í"!‡ § { j! !·"¿#Á$´%~&-&ý'µ(†(Ñ(æ(>'V&i%K%Á&¯*8-û3þ9øAsIQ?Y `Âgkoo÷pÇpepUoýoÈoInîm¼l¢i¬eê`®[ÁV²QÙM'H9CÉ?C<49õ8³7,5 2Y/++é)'ø'—&í''(p)Õ-H16ÓàE’LéTd[yb“gðl÷oŒq­r=sLssQss³tvt´t”t†t}t´t¯tNs§sm½m‘mAlÓlQk‘kƒlBm[nmömÒl'j»f¥aˆZ.SdK¼C¢;Ì4A.d(…%("x!È Ò îÔ H Ú!ß"Ö$%7&()K*p*í+^+ *|)˜( (\()¼+ª0N5U<†C½KÄSî[9bRfókl‡m³mTm5l¹lmlkìkEj»h§eÄa®]ËZFWhTÃQ¼NAJ|FðCúAN>‡;"7`3 .Y*'j& % %$¢%!%›'é*z/E4;:òA§INQXÆ`vf“l„o½r4r¬s¾sØsqréss‘s©s›s†sªt*t•t•tOt*mÐmdlôlwlkGk@lmm«mAmk&id3^±WMP_HÎ@Ú9^2,½'~$Æ"±"B!\ å R ë ; ¨!"-#>$l&'â)¨+M,H---5- ,a+Å+^*+Z,‹0»5‰<´CÅKˆSPZCa"eÂiøk‚l½lNlkejÝjYji}ig1d§a ]}ZXNVœT¥R OK–HEJAï=â9›4Ï/©+Q'a%x$$#“#ò$6&!(9,–197Ü>€FPNEVH^Kd÷k¨o’r‰s%tTtQsãsrärár°rr5rGrÊs\svs_sonmclÕlUkökBk;lmm‰lñlÁj{g—b\#TÄM»FE>{7V0Y+m&Ò$¿#4"ú"(!”! Ì ‘ ½!!‘!Ð"#²%¤'Ò*",I-¸.û/U/•/C/.”-N-S-ô1Ñ6p=ƒDhKÕS(Y«`0d½hûj±lk¡kqj¯j i[háh6g¦f!da+^[YíXýWüV*SÅPTM+IREr@¼;Ê6`0º+ë'W$ê#/#"a"‘"¥$>%è)Ï.4p:îBåKSl[Åbüj_nùrs`tÅtºtVs_rÒrlqÿqªq%qqŽr3rRrZr—nGmilÅlAkókLkFllûm_l¢leiÍf;`YòR¯K”D9<¤5ß/#*¤&´%9$#Ñ#"q!ã!¡!a!r!“!ì!â"ž#É&.(Ð+Æ.“0¦2w3X4?4s4¼4T2ö2¨3'6Ç;A¡GûN¤UZ¶`id{h]j kNjùjÜj%izh«h gKf’eEc¿a™_#][Â[Z´YoW„TP§L4GßB¦=#7=14,'1$"‰"L!€!“!‹"Þ$)'Š+/1/7Y?KGrPX‹`gím,qjrÝt«tÁt’s“ràr6q¥q(pgppZpÛpÏpÏqnRmQlŸlkÎk1k-k÷l¼lølkÀhæd¹]èW€P4HòA¦:73É-J)=&%+$M$'#ˆ"ó"h"!Á!¼!Á""#$ƒ'm*ˆ.14V6Ò8R9î:;G:æ9‰99l<©@lFK°QlVÖ[t`(cšgh¡iÕi“izhÄh gAf¼feVd9c!aÂ`^»]À][]u\°[LWÕTNÚIÿDR>\8 1’,!&Ý#ý!é!£ Ë µ z!a"/$ý(-«3ˆ;yC¤L{U\õe:k prtVtŒt‹sr«qÊq%p“o©o-oEo«oƒo~o±n2m'lkkÊkujÜjÚkŸlClQk'j¼g­c&\UgN Fœ?L7ñ1É+ƒ'×%%$¹$#Ü#f"ì"b!ÿ!ª!©!œ""B#¾%½)H,÷1(5@8¿;ÿ><@˜AÄBÃB‚AsA A‘DoGªL]PÿU¡Yï]aWdfÖh hÞhˆhfgÉgfXeðe~dÈcãc bJaL`f_¡_/_S^•]_YÔU­OèJD­>8)1{+Ý&#ž!~!3 h Gò † ø#?%»*Ó0=7ü@HåQqY|aöhdnpÊs…sýtLs]r‘qžqpeo^n­nnÈn~nkn‚nml6kvk jmjnk0k¹kŸj;i¤f`aŒZ+S|L!D•=?5÷0 *&¥$[$:#£#{#*"Ì"F!Þ!ž!¬!ƒ!÷"J$5&«*Û/+48°<Æ@±C•FšH:I‘IyH²HcHðK‚NtRVXZ]^`?c~eÒgÚh`h‹gëg¾gLf–eÈe?dÑd>cµcLbäb[aÊaK`â`ü`^ð[OVêPºJþD¿>{81S+—&#  f«¤\È !Ø#É(U-H4Ï<®EšNVB^òeélBo¬rÜs’t5slr®q¥qpNon.mÎmÖmmmWm\mýlælk"j–iõiÿjÄk:kijh‹e `X½RJ´C;›4U.Ÿ(×%Ä#«#›#"ç"§"V!É!c!D!o!6!¤" $J'+×0Ã6=;k@D”HK»MÊO~O¢O4OO®R TÝXo[›^oacqfahkiçiÖiuh›heh"g‚f´fe~edÐd¥dXcÐc!b¡ba×`_[,VªPpJ…D0=ü7Ê1++Ž&4#1 É N—£kÇô!p"è&Ô+/2K9ÝB¶K SD[öc@jn1qéstsrýqöqfp¢o[n8mžmvlñlÒl¿mùlãkójòjQi³iËj˜kj¿hõgÏd_WPèItA‘:2Á-G'Ì% #,#2"·"‰"G!é!A Ï Â! ¿!&!”$ ',V1ã8=ÜC HQL‰PÎSJUWU UfUNUüX-Z×]ê`jboddfEhÃj{kk7jŸi¼iziIhËhgJf¯fEf/fFfeud‚cÜc$bÄaD_o[eVÙP°J»D_>/8 1t+í&Æ#â!s Ó ·ì÷!"%k)(/Ò7?ÚHP^Y`˜gðl¸qr®t:sës„ryqöq#oÄnomœm@l˜lhl8mÂlµk¼j©iûidi†jTj¬jZh\fÜbÐ]«VSOŒGú?ë8P1+Ä&¡$9"ˆ"›"@"#!å!| Ë X V ª o à!T#æ' ,“2r9?GDüJßO¼T“WZZ›Z»ZÇ[•]Ž_ébbdCežfùhYjBk§l…lRkõkZk,k jÉjMi®ihµhhµhng’f4e-dcAaP^äZuU»O·IÜC·=µ7Ï1p,?'•%"Ì" !% á g g K!"!¹$n'€-¡4|=&EKMšV ]Äe]j¯o˜q¿s·s£srr‡r7q‡pCnînm©lñl¬ldmplikcj:i{hêiiÜjig^e€a+[ðTMºF =ä6N/ )ü%&#!•!Ê! !«!Ž!6 • * 1 ^ ç!s$3'Œ-X3q:p@òG+M¤S#X…[÷_`+`ÕabcŸevghJhêiˆj9kZlNlèlélÖlœl˜lšl“ldl"kÅknk*k?jÝiùhfge[d av^OYST+NH;BV<‘7 0ý,7(!&#ÿ#&"'!§ ÿ ¿ m ã!#%ˆ+$1–:"B3JŽRûZ¶bŠhUm»pXr©rÑrÚr+r*qÀp´ovn¶nAmm%lÆlÄkÈjÅišhÒhDhcii&h’fcË_YºRiKpC¸;‘4,Ó'ô#x!à v Æ Ì! ! ê y 2 J · ¥!T"$Ý(V.3ÿ:ÖAVGÞN¶T¶Z~^caÿc¯ee¬fåh,i‚jgk k&k'k@kÀlclÏmm:m`m mÚn nn/nmäm‹mvlÚkõj5h‚fd`ž\®W'Q€KXEo?ß:r5u/ï+º(B&$Ñ#ï"ç"9!p! Š ¹ "#ñ)/'7”?ŒGæP ) g õ! !å"¼%®)M/ 4«;JAÁHOåVp\™`Îd½fÔhÃiÑkJlNm:msm–m(l{l l#l§lím-m_m¸nKnßoGono›o™o¦oloJnxm†kŽiŠf}c¤_nZÎTéNòHËBØ=†8d3é.í+A(M&å%X$m#_"—!»!1 ­ ¤ !0"r',ã5==EjMªUi]_c”inlˆo5o²poãpvpªp&o_o.onœnCmûk#jGieh[g–fýfñg‚gXf¯cÉ`·[-Ì*–'ø&³%H$h#l"ª!Ó!G Î º  å!Å&+3Ý;“CÏKüS¸[¨aægÐkmÃnPnÀnžoHo o:n¦n½nïn¦nen=jájiNhag­gfÿggUf¤c‹`Z;T*LÑEÞ>a6>.Î'Ž#0Ê'F”ÑCsz¥þ ©! "# %´)-ø2œ8@=ãDƒKµR½Ys^Yb eUhbj§m#n‚owoeoo&n£nDnMn™n¡n¾nøomoúp…pöq.q\qdq£quq3oònªli.e`ý[ÌViP.IÀC‘=¯8ð4l0Ù,Ø)ü'Ÿ&v%1$k#’"Þ"!l õ × 3 Ê!K%#*^2o9øB#J8QòYÞ`8fRiÀl¯mUmÒm·nunìnžn1nnénÉn’nvjmiÙiUhµh2(9A¡I¨Q\Y3_‚e¤illlôlÂmmmäm•mCm¼nVnZn6n2j%iÂii(háhˆh…iMiAh¶e™b\UÔN_G^?ï7í0ˆ)1$Ž êó©©Ï:4èþ$ž  ì!¡#x%´)R,Í1`5ä;•A¢H\ONUDZZ^b)e“iGkÊmÖn‚oo6o“oÔp po÷p pqq)q$qHq~q½qçr9qêq–oÊm»iòe÷`ë\EVÎQJC=8I4–0Ð-ø*Ù(¸&ö&%$\#"Ý"!’!%! …!!!’%7*@29_A\I\QXÃ^óeh^kk‚kÄk€llŽlDll½mŽm½m·mÛhhhjh­hähæij#jRiügcÚ^WÜPPI5A¯9¹2Q*Û%è!ê “óÄÉ97öý fÆ „!"e$ &ç)²-¢1–6»<B=HÝO$T¾Y@]ÙaÃeùikÿmbnnÉoco²oïoïoÙoçpKp³pËpºp½pßqq^qÓqqnælBgÈc>]ÓXßS,LøF;?09s4¶1º.l+ù)^'¯&O%œ$À$#""g!½!a! ü s!2!ó%ï+13:OB2J:QÛY~_fe-h&jtjzj~jj}jÛjˆjuk;l8l‰l­m eZeòfÞgÒh™iilj»kjîh*e(_rYSQ´JŒBü;3™+ø&¾"… ò ¯Œ  V¹ ^ À!®"Ï$å&Ý*-^1ü6„<2BRHÄNÞTEYŠ^ b¿f|j/lfnFnêo·oãpoåoÓo×pp2pFpIpCp_p«qq˜q4p¡mèj¤e‚`Z¹U_O7H^A;9õ40T.+O)Z'\&'% $#â#7"[!®!1! á ï f!B"Y&º,H43;eC%K5RÔZ]_üesgýiÐiri4h²hÖihºhÊi´jákSk¡lB_õalcQePfÿh0ijçk kÔi[f­a,[9SšLhD¼<Î5?-i'Û#S!cå”ÿ/[gji¡  — æ!‰"U#Ï%'{*7.626ð<&B:H[NjT@Yg^ŒbÙgHjsmhnÖp%pSpqp.p,p&p oîoâoäoÏoèpAp•q"pƒo¯lh«c]¯WœQÇKC¡Ë7*/&)G$f"K z]Íëòæ g è!'!‹" "ÿ#¹%s'•*è-õ26a;þAýHNìTÄZh_FdVh_lhnÊpâqLqvqq qpËphpo¶olo}oåp2p‡oŠnyj÷f®`…ZÚTmNFî? 7«0,-(è'Æ%ø$Î#°"ù"'!œ!6 â AϦ̾õ•!#(o.x6^=E@M}U,\£aÐfÏh“iqhJg¤föf¦f‹eúffÖhh¤iBjFR¢V9Z]^®bje‚gÍjñl¨m÷lVjsem` XŒQ6I-A691T+%¿#9 à /˜Ùõ 2 S \ F U £!!J!—!ö"«#2$†&'(Ï+N.Ç2)6ú<@B¯I#O„U‹Zì`ne)jmup…qr%q¼qâqÌq•q p`oÍobogoÃoêoún²m|iÒe@^ÅXæRBK†D(<75.U*\'l&‰$ÿ#ö"é"$!D ´ \ ‘&#ô0ø Ô#s)+/V72>€FLNœVI]ÆbÛg¹i9i¿hUg£fòftfe\e4e«f¡gg¹h°KOOáUZ—_wc°f×j±lënámÍlhg´bº[USáKCŠ;¼3k,Ö&ð#ð!; £ø / ; k ƒ „ a ^ › ù!&!Z!“" "h#a$y&{(Š+|.2)6Ÿ<ÆCEJ2PŸV‹\ŽaïgkºoqLr~rFrvr(qÎq*ptoäoo}o¶o°o¨nMm i3dK]{WzPÁI¸B&:+3G,µ) &l%É${#€"h! º BþÆ*©€˜C~h ©#É)ð0Q89?´G›OôW”_dhÌiýj"hygÄg fzeàed²dÖe‡eäfg{C.H’NÂU>[;`®d×igl%nØnvm¬ime]èV‹NF>5ª.¶(A$®!– Ñò   E U O . % J µ ç!!!ò"Ï#•%&â)t+¥.ò2h7½=·D´K;QŒWã]¯c«h[lßoMqOqŸrqÉqypèpgp o×oÊoÍoŒoƒn9lïh÷cã\íV×P!IA›9á3D,Ô)3&°&$Ë#´"o!v © Cö¡æI°û º$T*î1š9©AeIeQµY0`¸eœjjÝj¼höhNg¡f²e¤d‹cÑcOcLc'cqcë:ôA*HFO¸VÉ]qb•gÏknwnÍn¢jßg `AYPHv@]7¾0c)k%L! º“ª· & !    6 K u ” ÷!{"D"Ä#Ö%B'i)=+ë.p2é8H?8EÍL|S Y/_…dºiÐlæo•psqjq\qFpÔpƒpJp;p%oüoƒomnl²h’ci\]VOHH0@ò9”3G,ì)9&Ã&.$Ö#§"H!> u ¤(P§e|c” –$©+Ã2Ð;CK$SrZÑb`g$k6kŸk3iPh²góf®e#cÏb¯a`°_ê_¯_—2Ÿ9‚AjI”QƒYA_ceKi m/n;n¬kuhDb[WRÿKBß:12‹+/&†"}!\4,¢ÅÌÒÎÆÐã  H ¼!["*"®#‰$¡&S'ä*+õ/ƒ3Ü:@UG,MÙTKZØ`ieèi•länmpp€pÍp„pep?pHp'oáo=omªlgÏb«[§U-NMGe@Œ9…3l-()`&ß&1$·#s"! Cº'“À3õ¼ZØ!H%Ò-K4›<÷EM,Uf\cøh{l$l;k¼ißi:h!fMcøb`7^\Z9YX * 1º:CLMU#\IbögBlm¾n°kðiZc¨]…UmM«EQ<š4³,ù'Ñ#`!{KÆEbyw[\„ã ' ¥!J""·#p$ %9&p(;)•,S/4æ:²AÞHíOñVÓ\½b³fôjßlòooÐpQppoàoúoÜonÐn“mkfgaöZèT/M3F?ü92ÿ,Ò)& %ç$P"þ!Æ ãÿM’úHë¹ë’nM"B'V/#6>ÖGO!WN^Fe€i¾m lïl|j´j hŽf%bñ`g]¤ZWW%TIR?P1"¼*Û4M=§GP¡X¥`ejzl²n2lj e_¦X P¼Hw?ÿ8 0*n%‘## XH—ëû%75 VÒ < Ò!t"7##À$3$Ï%&û(*F,|0Ý5Ù<ÍCÛK@RPXŒ^Þc¬h5jëm§nÁo˜oto„oYoco$nÁmçm‚kÔiéeu`?Y`EýM>SøZ¶`+eyhÿlxno^ofo§oao4nœmùlíl`j…hOc›^4WBP¬J+D>%7[1i+ï(Ä&H%D#®"~!v —iv»y4:lwX!©&ä,»4x;¸CœKàSÁ[^a`g¢km³m|mzkãjÝgód^ÎZjUtO±JDÛ@ð<ÜGi)R2ñ= G¤QYµ_ôf­j8m+lnk°gòd=^"WÌP Hs@œ8Y1’+®($9"& ?º?V4/$>J® F!!Ê"u#:#Ð$B$l$_$¦%&“'û+.3g9>@}GŠN…Uj[Xa9eƒiµkümünzo)nïn±mÌl÷k£jÆhe¼`©[T@NGýB5çF¹NöV„]—bÖhekOmwmmkTi»eÕaZäUˆOH¿B<72»¼c$-Š7ÍB™L€U°\ cúhWlGl†l‚ivf¼aˆ[ëT•M…EÇ=y6/}+ &£$!p Ton-?`¡­ð k!1!ó"¨#G#²$-$U$1$#÷$Ñ%Õ(l*í/w4~;4AêIO÷V@\yaTfikÒlãn nmöm lHj½i…f©cE]ÌWõQiKgEº@#:­4š/*õ(M%Ù$©#p"†!G ðCÒÏ›´wŒ#'-C3P:¡B IõR6Yd_ídoi\kÂmel±l°j£hZcb]¿V˜PFIMAx9í3-Î(aŸRQ(2 <«FÔPjX_øe0jIkÕlÖjµi dÒ`)Y|S K‰C’;é4Ÿ/0*&'#Ÿ!Ó Löt¹  = v Â!O""²#0#|#ê$$ #Ò#^#¬$H&p(‰,t0£6}yFNUó\nbZfj4kÏlÂkwjþh9dÛ^´X-PJIAV8á0þ)µ$O· U%p",U6¥AK1S§[þaüh:k m=lkvh(dm^cX€Q6I°A×9Þ3]-¡)à%Æ#R!$ p³ÌÛ @ ˜ ï!!_!Û"r"ý#P#Ž#‡#‚#P"Û"Ô"ê$S%Ø) ,•1®6Ó= CZIíP‚Ve\(`{d­g0i»j†k3j:i_fûd°`ˆ[åUÖOÄI³D?9·4Ì/š+›(&-$y#¢"š!© qzˇËdÌ!#è).44Ô;,BwJVRY˜_Od·gÒkkØlj>iKeÉaMYîRŒIðA»900'Þ 6¦ê åµ8&p0':§E N:Vî]ždÛil‰llßjag·b‘]UVwO²H@8Ë2k-ñ)C&7#C!å © 7  å!`!’!±!ì"K"Ô#.#@# "ð"È"~"i"."û$&½)œ.2W7à=‰CîJvP»VÙ[¾`‰c¤fÊgãhÄg™f„c¨`Ü\?W8QJüE&?Ã:ï5Ù1D,‚)&#$Á#{"Ê!¾ ÎãKÌš2Lc¢ Å#ô'¸-z39Ä@rGÈOV°]hb-fòiIkukjƒgãeøaX[¨SYKLBN9e0‡'r«J Ñj Ašç )¤4%>×H¿QÔY1a_fék¤lËmôl7j«fƒañ[~U}NCF4>]7K2,ß)K%v#:!V ä Z œ ï!}!æ"!"5"H"¤"é"ý"¹"b!ù!ž!ƒ!ED|JùQnVù\f`cždØeÍd~cV`>]X(RÍL‹Fz@×;•6ñ1ö-¹)ˆ&Ï$„#s"@!s i±3ú…Qœ þ"ß&ó+©2!83?FKM°U6[ae_izjökèjJhúe b¤\ÍUìL»D:©1 'êÜä .v¨ Ù4#J-m8BlKáSì\ºcBiCk«m l›l(ier_°ZwSÞL–Dë=7‰1ù-å)o&s#Æ"µ!³!´!¡""…"í#"é"÷##"ð"{!à!a!7!!y!ì#%U(ˆ+Ø0G4€9Ä?]EµL5R0X \_Ë`þaò`‹_[\X¦S_MÍG˜A¤^EsLÜSßZ¯_ìehk1k~k!hGfaÄ]UV7NpDô;ç2•(ß B4A 8Y˜åÜ Ž¸&Á1;?4÷+—"ÞG W ½´{ º?æ P—Ü"ì-ä8¤CMUË_0eŒjŽl nXn mÙjøg—b“^RXäRÏKÑD—>~9`5ê2/9,B*Z(©'ê'&Ô&ž&d%Ö%@$Õ$¯$¬$ž$S#Û#H###Ç$F%‡&à)I+‘/I3H8Ê>DÚK5PT_U×W!UpSÁO`J‚D2>8\2Þ.ð+o)W'%‘$#"!Z È l b Ù![#$é(O+Ä0Ö6<‚BÆI¿QYX;^[b—fíi…l›lálIhŽe_^YÛQðI%?!5×,Ò#X ´äL;ÆÇD2‰YÅ #^&³1U<@FwO•Yk`½gjm m‰nmlËjlf1b›^YTS]L}F@»=19»73Û1]/J.,¿+Ø*ö*L)‡(î(S('þ( (-('Ð'®'Ã(N(Ç)¼*¢,H-È0²3ü8ä>CÈIœN*RmSñU+SYQkLõH+B:SK[jc5g·k—lÁnn4mFj&gbÎ_KZ—TÆNzH§DY@Ë>R;-8‡6 4y2ß1¬0W/;.-U,¹,œ,†,°,Î,ù--=-y-é.S.ü/–0¤1p3…6:N>ØCúIM!PúRTS]Q~OqKFy@ø;¢6ñ2v/n,Ç+8)f(&Ò%á$Ø$ #"Á"#s$d&y(j+·/E4/9->ÛD7JPiVÆ]AbfhOk€l m'jŠg·bP]hUìM–Ce9\/&c=cÅ $RV½ƒzí¥øVͪ 7Ì"ø-Ã8 AÑK~SÍ\lbegƒiÉlnmm®liÛfCc_í[¬VdPÇKøH,E«BÉ@m><::©9w8 6Â5V4{3ö444"4%4P4˜55d5Õ6G6ß7p8A8Á:F<;?ºC“GêL&OZRrShTRKPXLsHZC‡>Ü:É6õ4A1Á0.,›+:*(¸'&+%Ì%Ñ'_(ö+Á.N2#6b;¤@¸FK2P¬V×\ŠaÓeHhaiÔlkøjëfòcW]aWkNñE©;Q1‘(ŸÆ=H ÎISþ#r’—ƣË 3à (8&/0P:cCµLUJ\¬ctg9j„k¸mÉmåm=jhd¨a]yXÎTOêLÍIÞG¿EsC±B @Î?>N<×;à;H;_;x;¯;¢;¤;Ì<0<==>>›?6?’@·B+DîHK§O(Q¿T5TÐU.SzQ­NCJ¦FxBx>÷;¥9'6¾4ø3,1¸0J.è->+Û*T*%*m,u.v1º4×9=ŽB¾G¥LÔR-W¢]ub)f5hukkÎlÃjúhlc[_XyQGa=S3")¼!„ò òiÇ]N·µµîkä¡ ,-‚<(2[;)C\LT \.a¹fhjòlKmƒlqj®g‚eb ^Ê[W"S³P½N¹L§K%I•HgGNF\ED;C™CŸCÔD#DCíCËCãDD•EE¿F@FßGfHƒIÆKþN‹QvTZVmXUX¡X»W(UR¨OŒKôHE†B™@B=ñ<+:€97Œ5û4#2¼1P1a1á4609}<Â@çEIÓNbSDXˆ]|bXe°hiÖk”k:jqgcr]ÆX¤QH_>4Q+:" 8 >µ×R›Šl¡ýÉ]Ÿú›ì–E+ K7Š Í*-2¶:ÝBéJøT1[±aÁdäh iålÇmÒmÈkri f0cßaW^Z[=X7UãSÞRQ"PNØMåLßL>K±K°KåL8LOL(KáKµK¦L LžMkMþN®O_P‚Q³SˆU WéZ/[µ]]\î[iYèWTT‰QXNXK®IG DÿCSA¶@2>‡<Þ; 9Æ8q8›95;=½ADIHHLQPñU½Z‰_Zc0fÀhÛk*k­l3j$gyb¤^ŠXzRI"?4¦+d#†j– q”nÄ ³;pѺ<ußÊü ½ g LCö"0*32$9I@ÌIÇR:Yð^¿bld“hPjþml”k hOfªe%cza\^Í\gZ{YAX WUÖTØTSŸS6S`$còg5k4mm“kâj§i=h_gIe­cÃaù`’_u^˜]i\f[ƒ[ ZÉZï[6[›[á[ç[Ø[’[-[[+[°\ \«]Y^d_v`ÑbMc¬dñe¥fhf¶4Œ*³"vkG6 dA ËA³.ŠìÒ~W”2ÿþY¸d, \CŒ A H²½ $ÿ+1ø: BKQVâZª_|c¼hj„l ll+kÛkÑkij«iËi2hÐhmhgŠg%fÃfàgQgöh_h†h¿h”h/g“g*fÈfFeåee›e”eÑf!f–fíg]hh…h¹h“hvhUhbhPh.g”fòe©d8bQ`v^Œ\±ZùXþW»VžWWÙYç[Í^&`bÑdýf…gèhŸi¶i£i¶gcB]9W¾QÍLÙF=ª3)ˆ!Auµ –]eØÀLZ§Ë‰:IIÿþ(y†lÿèLmï- R ‘®"”(á/?6 ?FÝM­R“WG[+_Þc¡fühziŠiwiËiÁi—iIiii#iIiKi&hÖhËi*iºjjj#i·i%hTgºfòeìdÛcõcLbb'aÍaäaîb‡c]d}eifKg4hi!iÙj~jnjPiYh5f‰dýcVa¬`^I]6\h\à]“_`–b'c¯dÇeªff¨fÏg{fgd¬`"ZßT}OdI¾Cã;è2d(¨ õZA D˜„-éušFS¥¯ˆH'S„^ÿü_uÿáÿœÿÅA ¶S 7Íà 7%­+Ã2Å:­BÜIÉO S©Wä[Œ_Ñc!fg,hgögág¸gÊh7hÁibiýj>j4jjj5j@E[J&NPçTîX÷]"_Áaa£a»aaÉb`bùc¾d¡e9eŽemened½cébÿa¡`0^¤]b[óZX?V©UoTS)RKRCR?S[T³VöY5[º^/`pb«defghhch{hgÆgNfÚfDešdúdtdcÍc’cWcb†bb(aðaÐ`]™YTAN´J$Dæ?]7Ë.ù%Öq÷ i#^pÕÖ#–f˜Òâ‘=N}}[u,ÿÝÿë!R/ÿnÿ+ÿ¿3T´Yº ‡&arV#7)Ÿ1z9Ž@ EGÿKVNµSVÍYú[Q\1\\N\ž]]­^‡_]``]`¯`I_Ã^i][XýVÊTÐR°P5MáKÞJ\H©GFtFaFUG©I>KþNÀQñUXZø]ˆ`bcìeffŒg+gXgg fpeodc‰bšaÒa#`„_Ô_ ^§]Y[¥X9TwO¬KFFiB;ÿ4è,T#õuî v›kyZÎm‹Øß®]6s®…ÿüGƒq+ÿíÿå;fÿíÿqÿCÿñ e¨Ê± ¼ˆ²Za%,ö4X:“>pA}CÏGLJûN¶Q%RÚSSS‚S£SóTiUUÌVZVüVÔVhTðSrQâA×E[H¿L0O¥RßVXÂ[h]<^æ_ØaataÓa<`f^ÿ]¶\}[XZ~YÎY*X…W\VRSøQLéI DÿAŽ=)8M1m)!…k'K •Ó<¦{èš»¡Ìò·fB[ À€;ª…ÿÄÿæ!ÿÈÿ,ÿ ÿ¥¥ø0‚ ÓŽÁ9 ë'Î.Â498r:á=£@'C9EÚH/I_J\J|J¢JJ™JÅKKcKûLKúJâI½GÇEÙCN@À=Â:Š7†4Ò2Ê0¥/B-Ø-’-I.—0-3?6]:2=åA·E†I'LÐOôSUPWDXBYsYÄYûY9X;VÚUµTÀSàS$R”QšPnNRLIEØBc?‚<8\2ô,Ð%˜]83 ß_—§©/g‹)½¿ðâˆGYšÆ½{4?j¶¾aÿæÿ¤ÿ¶)ÿ²ÿCÿHÿã’OM£Ð Y>.aÞß"ó).i1¸4[5È7¶9š;É=€>í?t?ä?Ä?¯?v?;?.?o?“?Š>Ö><;8ã6¥3Ï0À-Á+(ë&Å%a#ï#”#6$d%Õ(Æ+Í/•3:6ú:°>5AÇD×GöJKÜLŸMŽM²MÂML7K-JnIÚIRH¡H F©DëBE?<©:I7ù62 ./'æ!R.ó3™ f>zø À¦;ݾü6¨_T…ÂÅŸzWO^ ¼•,ÿµÿƒÿÆÿåÿ…ÿ+ÿAÿÉs…½ú„Ä × ¸ZˆÉ"A&¾*o,C-Ü.Ã0&1ƒ2é3í4Ñ5%5u5S5"4Æ44D3Ø2ö20/.-*+(%«"× 9'±?èœÛU?!B$ò(x, /œ2ö6W93<> ?µ@‰AŽB B„B_BAc@î@??>[=&;;964<2;0».“,'¬"?#›} ™ x}.FâR¦[ëæSIãpJm˜·¥ƒf_Zt‹žpÿýÿ™ÿ‰ÿ¼ÿëÿîÿ™ÿeÿ’ éC’ f o zÕ¥ "Ô$É%D%ö&Œ'{(Œ)”*Y++Q+~+$*Ð*)&'ã&«%#“!°ËŒ¸‚Â÷Ç‚@S´Ud!¤$Î'É*Ä-K/Ð1œ3/455p6Q7:7€7Ÿ76™5’4‚2ê1@/K-=+x*5(ü'ã%O!áãów c ? üP!¡Ô£²d ì3€x¨ZZ‡‹€tvcc\bmŒ{*ÿÊÿ‹ÿ”ÿÐÿÜÿ¢ÿ‡ÿ´o^G(ìHQ «à ­ f$u5xk˜{Ò„ € € s±Í\þW»Þ÷Öu # §ª“U5? Y “ þü™wE!ž$%&!'ø)Q*Ú+Þ,Ù,õ,è,+)¾(_&Ö%P#æ"•!r £8}OƒER ‘ ’Q…šMÜ!‘€Xý0yŠHØu€“oPY¥LZ_bamaBÿ¹ÿ”ÿ§ÿßÿþÿùÿÌÿ±ÿÉbdg¢£ü“ÃÉ—  * ùê³A.qÄ7¿TëJÈ@È Z € •øŒ”ŠÙÚºl²‡ ñ +ŒîdæNº¾¦ !…"N"ú"¯"C!ø¤f_u¾*H]mã ¿ 1 2ÿÇ}Ÿ»ƒ´>O"èÝ+}‹Iô¨‘›”~L8Y©:KWfkp`LÿÒÿ¢ÿŸÿÈÿîÿÿÿïÿÒÿÁÿÖ ;E)ÿèÿ÷P(ëTÐlßß    ³ ‡ w N G a Ž ± Ü š * 9 K ü¾n/øOØSøŠgUµë¼I Ë ¶ ¶»Êxøo¶IÎòL¦/ÓI³v 𠳕¶¥è>aÇ àð%kƒ_Õ²Ÿ“qS7@g’Ÿ1BRisrZEÿìÿÃÿªÿµÿÈÿèÿøÿâÿã|¸›Fÿè ªZª€%†)Ÿ­äú£p3÷Ç®€?Â=Ü![ÁAÅ©ŠuRC=^iÈL5-A‚Õ 0 – ¥ Š òizu. ï © k C ;  þ R n ë@¨QŽü MY¤7TÚâ̽Û5~†LåÜÕ®xA,3Vr€€:T_bXRJN:ÿÏÿ§ÿ­ÿÌÿü ÿøÿñU„‡CÿÚÿšÿž‘æÁf!n%6%¦å²™[ÑŸzW)ô¤HéƒWT”°Ùû òÓÈÈB½>à€"ÌJ±Û  )W„š¹…<z‘|Þ‚‚qKœ- Rб·»ÚXsUîßàÓ¦k5$1Saaa<[dX?7:LFÿäÿµÿ¶ÿØ$.Bj}MÿóÿÒŒèã‡ÿå"”!y˜¼³¢|\D3%ô‰L=T‡š®ÙøÛ·Œys—É3Ss“¹Þù@†ìI•tükÃ%Ù»ì*B¼zdj§©ˆx’ÖL\:ìðûðÊnF88FIFG"AUXH8.36/ÿÖÿ¶ÿÇÿý%1 %:IMLh_ÿÑÿ¶ÿÜ&P6ÿÔÿaÿ#ÿ)ÿ}ÿÃ3EOO[iy€„wcG(&BmyœºÔÜàÉ®~IÿùÿëÿåÿÜÿÃÿ ÿzÿjÿpÿ†ÿÿÿ²}Úç"ÿªÿlÿYÿ”ÿÖFG+Fm‰˜uw¨ô3JK)öýФyP=4<CE?8QVM7$34ÿÍÿÁÿä9"ÿþÿûH`?2VdEÿÐÿØiŠbÿÚÿÖÿï(Oq´é688# ïιµ¹¯¢™šž¨´³¤Švjd`XK=, 5'#9q¿çæ›:ÿëÿ¹ÿÞ-ƒ©ŠR7o›ž€idh“Õ.*+"Ý·kT@=EF6 :OaW3)<)ÿÒÿËÿô):'ÿû MK508UX0ÿùÿÊÿÕW`-ÿîÿÂÿÀÿî@g“Ìú$2- íÛÒÐÍ ªŸ‡uhbYD/(ÿóÿû ?hkQÿÔÿ·ÿ»ÿô<eY"ÿóÿî]Ž˜‰j[fqá1%!þíȦ“„kRB1 #;bmQ((3(ÿøÿÔÿÞ =K ÿö.QZC*8O_I ÿÚÿß :L6-\ƒ¬Üü #'ìáÚÛàßÓ½¥›¤­¤ŽzjdaPGQYH7<JKQi}ƒu`MDNgvsNÿòÿífœ¤‚gYYp¥â,  õð ñÓº³§‰_8ÿû)JdjR+0#ÿëÿí<;#*EQOOKSI%ÿô-OR; N…Ç )'ýõñèßÚÕÒɶ¥  œ}lih[PTUD7>MNKQQB68I`rrM% ,U“‹m\UHUq©ò#ÿ  óäßØÏ²†R% ÿø$ +Adg778ÿñÿô@S> !OtsTA667()>SVA-&I~Ì JE ôïîçÛËÃÈÎÈ·¦˜“zifhaWPI;6CNF6.* &AavqbD2e‚‡ˆ{rje`INt·üü÷ êÖÏÕÑ»Ž^5,& ">M2):5,S[C4g‚{eF:6' !3Oa\J;G\™ô9N50ä×ÙÛÜÖÑØÜÙɳœ‘†nZTVQMHGJQ^\F.'14Ddyw]F1Dq€‰‹Š€pf^u£Øù ÷äÝÔǪƒY7": , " CP/ 5\hH$&Jz“Ša=%%$.CWa_[YMh¯09C.ìÓÎÑÛßÞÞÚ×Ì»¥“hVKKIKLP[ch]?+2N`n„‚fA144BWjlq¤¨—}t€§Óñôò'-ñÒÉÌϽ—e=& ÿÿ=" :T< "HdaK>FdŠuU6/613=NYdx€nmŽÊþ#EF:úä×ÔÎÊÄÀ¿µ¤”ƒqeYX\cfb^UM@)#6UdiwqU:6EJVi›¬­Ÿ‹}…˜ºÝ÷"-ð㜞”vI!ÿÿ4  ((=9),GbmfWU^pudKEF?<?HJZ~š˜Ž«Ñ5OY@%èÖù®«¬­«¢–Šƒury~mU<-+#*@VZTZ[MCIWYbw–µÁ¾¨ƒˆ›¤²ÈäÛª„od\H-  -&  +67/)'#2RqufX]d[NKJ@=CNJPj†’“•¥Âî!AQ@) õæÕǹ²­«©£—ŽŒŽˆƒ†„{dF1-:>FV`]UY[RKLVZhœ²µª›˜£³¿¶±ÀÛý굊fF2   ')' *ÿþ%/23366,,>[x€u[OKGHIH@=IUOLXq†š©»Ðì*7,ý÷ëÜÐÇ»²®©”“•“Ž‹€p\E=DTYZ_b_\ad_VMPZqŒ ˜”©ÀÊÁ­ ¨¼ÒÉždE6"ÿøÿñÿþ%&! ͆ Lû‰0Æ|2-}+K›Â×ÕØðBYû†B—(‚µËp  ?Ò {"ó%¤'À&Á$Q‚D%_8  ¬ q  ï ´ £ ¨ Î ð   þ û ö   M É ü ò ¿ v 8 A s Ý 1 ‚ ÃiÞLÙh&Üm¬óAdˆ»ç<¯6ź‚GðÚm˺˜~•ë<­ –   ;è¡c*ÝŸ~v¨PjõÐt!?,“)ýÿƨµ™!-"¼#Û%%’%U$þ%Ì&O&}$“!Òˆ¤™Ð Ÿ õ F <  ò É · ¯ Å ã    0 K r ¡ » Ñ § S ÷ º Ä ð / E O ^ ‡ ½  Z ¾ " ´o‘Òd²!›=ß›cÛK—¡¨ÂbÒÚ­ÕØ•¨¼Þãx1 é@Z*>PY`J5ó¿2•s ¢Ìß]­R4 òJGÆ©ˆ Š"K$%B&³'&ë%þ%±$ô$2"z£Å×Û (  ó ù Å Ÿ l U K n Õ ú  / L k Ž º Ó ä Ì ³ p  À ‘ ¦ Ó    ÿ  2 P ˆ »  ¨ , | £ Ê _ ö—qH97åwøxÔìôâEdKf˜áüÏt¦åùÈ3Ž×îÇ´q>£ö®wZ*´c{ïvõ„ÝÀùû÷\º=Ð- p!5" "0!Ø Ë ÷seU Ç ª º 5 Þ ‰ Ž U äÐÍû 0 r ¦ Ò , [ ° » ³  K  ¸ ‡ o Ž » é ý ò ç Í ® œ “ ¦ ¯ á 9 “ Ç Õ Ø ó " •   g/剦tå§:†áuûiùqáê‚, Á%½ %Òœ …n,kTÏø€O1-“Ïâ EÜOÁ´Æ?²¾çvË·ÒÌû† _  . > e F 1 N 8    : ] ‰ ¯ Ú  ; b v Ž Š U # ß ” e J [ t  a B . ) 1 & 6 g ¨ Ö æ å á ç  X À  “ : õ ~°±Ãlsb¾8"AA=,\s+Û„oÌ6ýv{órcC¥×Cª1ëüY=Öƒ‰ h1`Éqš ìIÃA˯ 8  H )ããò úáßéìðóü   B e | „ ‚ Œ „ n A éÞü " H _ Y G .   * ; 9 H q ª Ý ú  ô è í   5 ’  …  ‚ Oz%ò“¢mÐlà7lÝõÕ@7uÿ3–¶†}Û nŸ}A‡Êü1]d–üó®þ%› Ñþ‰˜¹_ Ü b  Ó ƒ Ï Ã °Úk”—˜©“QúȦpH+)%4Fb|‘ž«Æ××Í»ÓjØ * ^ O 1 éççö  : \ n ~   ¶ » ­ ¢ ˜ } ’ Ö ? „ Ì †  CÐ\¥¬a;ò—#ÛQ©~. g©UîzDˆx•‚X€Y”ÖÕãáÓî©¢@£ìk Ï E Ê O µ + ® q Z K  ¯ Š k <æp ÌÀ­«¯¢–GÈ6Ó7ááÖÖÔæ-MkލµÆÒxÂH¦¤V5&7m¨Úò  7 g † ‘ ž ¦ ¤ ¾ ø C v ™ ª Ý  ¶ a l˜Ãºq&Çt'ïœ>’ËÏwq®õbh@_˜¬Ø­•ÉWáj`9 ¢ ¥ ` ñ ‚ ß C à  N 1 ¾eÔz095/ éÕÓÐÝäiÉ2Ó°~lim[E02Bh‰«ËâïU®K®:i€Y<ñøtêgÈý / B N X } — ” … } — Ê 4 ] Š Ü ) ¿ ‚ d+Â6§9ù¿˜y4Ð6Ãf÷º±ÑèÆp÷¢` Î ÜÃÁˆÑ=  ð  ¥ ¬ ‚ ;ºU"P§ê ‘ïèÃüÈìâ9õÇËïûÕkî‰R\d~••{U>>F^uŠœ§­¶·Ûoúš/†Äº¬ˆdk~és$Ð;|sb_Ðõþñ > æ * t µ ã ! w é b Ê K ¤-·i,옗 } /  $  ñ ¾ “ › } ä … ¯ Y þ d ? á í « l ÙÅŒEé³±ËÛ¦S­ü=i }ÝþÞlŸK!þä¾lS[q‰•€Q)!;Riv{†Œ“›£á@ÆH¤éñïÙÍÙÜ!y"÷®-8õ‰¡ò  . N x ¼  e ~ k P g ¸ 5 ™ á  E r Ì : Þ“=¦ Í b A 6 P R S \ Z x 0 i ¢ M | ³ þ < )  mªäaÈ„9øµ‰…WîFŸ¥s,;„õW\%£=Ý|<ýõ-IOE0/'í²‘–¿áöùñðø#6g²ø,P]jx–²¸ÅȰdø.!’[Mz©Ÿ°ë W º í Û ¨ ˜ Æ F × F { n d f p º 0 ¸ õ  Ù ¾ § º Ö þ ( ) - Åþ<àìò ã±:¨x¸‹|>Óx €áèñúßÃÆÎÖ¬Zïf$Z°ý,! ݼ˜rGÿòÿì% ;d¥©¦³ÄÊÑÕõ%oÀü-⯭û_ÎGQ•öõ™ÎócÆ # F : ó  “  Z c v m O E b › « B - û  7 n ” h %ÓCò§eëUŸàd']h}òžb’ôf¬–`ø¤_)ý¿keOo³…½Ï¦‡UìŨ„eE5-/&&,Hg—Õ ! Þ°‡”¿gªöòºGب¤øZ¹Þÿ!²›³›$ƒ®óMÁ'€ŒS5{  l ·   ÷ º Œ w s“œ’€…»äø§1o¢šu8 ìá9•Ø/ëì!@pÓu–Þ\ÙúÓNÕt)%6i‰¢½ÉÄÂ×òñÍ»›g4ÿûÿáÿµÿŽÿsÿuÿ|ÿ”ÿ©ÿÂÿÍÿï-z½Þå®Pÿðÿ½ÿ²ÿèS­ð Ë`ÿåÿ ÿƒÿÛQçB•ø„"ÔŠu¶w*¢˜x¾Nâ G „ e <ð§~„õ  ü>nº%Öƒkntmzä“®ò*ÃN1q)êtÑ”vþìøfà`Ãò" 載T7,<OT=ø¹t<9Tˆ«°˜…•Áìí²@ÄPøÉ~´Bq)•ÿÛÿ-ÿ"ÿ‹\ýIL7LÉ‚Qè=hº€?‡¡ôp vžu\3ñ8E@þÀ|}Ì [±a5T{Tç] WpXÿàÉÉÙ©J>'3Žü‚ SvT<æÀ‘„‚» lµ×íó%í‡ £‰©ë ð²Và«u7ö¾y2ÆV¹O‹#ÿí'‰Í×XÿŒþàþþùÿ«m×Ïy½}`^ƒ ®#s¸ “bvŒzTBo±Úïä¥h ±DÝaËDÁž·AD×¹òiã ¸ÁFÂâ   ù s þ ¢ V  Eº&3Ô™u]nw²õv­=epŽ’HÈ-¡w™åÝ ã 7 w ¦ ô f  µ =§µ¹~#ùìŠg± ÷lsÿlÿÿ,ÿõ§øÍcpIB´ÒN¾'_‹Ô7¦Qjf`‰ 7WLÅi°\šHÿ1psbH€ó»o(¤x›E  © ùÍá /É<Ä'‚¹çR­ŽôD}Î\ãCPMᆱhèSɬâL†r]ÜLMUÿö€˜ Ú  , ³!~¾#ä!¹Ìÿ½þêþÙÿ2ÿåYgÿÓ8®1=“üInp…ÏG½>MrZ·±}X%ó´j*ìáì&[—¢õu‰À3^· ކÆÎq„Ê}F° / ±!P!ø"¯#_$$¾%F%Á%ç%Ö%Ê&&€&É&Ä& &G%÷%¸%£%w% $ˆ$ #ö$2$¨$î$ø%$µ$>#1"4 œÍ°©åG©—¶ÏÕU   y 6ÁUL3}XÿkÿÈhî±1Mà}¾ÈìgŠc8Aš‹å #h²øíêèöà—M!BÞøH¦Àî ø Õ«¥Ïy˜‘ !Ü#œ%W& '¿(^(ç)d**ó+ã,Þ-Ý.˜/1/r/¿/Í/Ù/ª/D//S/Ì00$0/ú/ë/à/ñ/Ç/Y.¿.)-û."..Í.ß/.¿.Y-p,¤+E)³'­%½#²!¬«„ÂNRnNð„Ô > g Ii#TlœÿßÿÖj†YÿôÿÉ ¨3wl7M`Aó| ‰ÂÁÿõ:u}o}˜ÅÈ‚MQÁC÷O3g˜ö ÉGþÔ‹ï!7#¹%×'‚)‚+-Œ/60³1¥2‰303Ö4ª5®6ð8C9e:s:ä;):â:¤:/9Á9S8¿88é9Œ9í:2:s:±;;M;›;;$:|9Ö9‡9‘9Ü9ø9è9å9Š98976i513š2$0S.j,)–'E%=#ä"Â!Ê ÆFA7kU ›  N!gï”TLÍZAÏE/Ê‹Žil  …Áµÿ¥ÿäÿò0#ÿ×ÿÕ%Ô÷Ó‡° × ì`–( "$ 'u*¼-a/ô2+4™6©8›:;Y->ø?éA BYC³D¹E–EÕFE¿E…E"D¿DdCçCëDZE.EÂFDFÆGCGÒHCHÁHÌH™HGgGFúGFüFŸFPE¢D×C¯B”A;?Ë>K<ÿ;–:8063§1i/}-Ã,>*¹(á&ç$X!À§gùJê › Õ 1JéŠÌÿ¶ÿø€®…<ÿøÿï *Z²éé‘{/Ú’pe5) Œ[Ú"ÿÛ ¤µø"J&é+1/25N8';'=¯@#AÚC[DkE¤FÌHIJ JùLMMN‡OePPFP‰PP”PuPOP!OÑOéP_Q4QÜRwS S‘TTŒUUTUUTðTyT!T'T6TSŽSR2Q-O±N1LyJµIG°F€E\CÿBw@ˆ>•o‘MÿóÿÎÿç@?<cŒ¥Ó7O€í€[øW…×ñÉ |wORt#'ø,ü1ö6-9í=@›CÖGIK°M NVObP¨QþS\T–U V£WØYZr[v\N\º]7]a]|]Y];]\ª\›\Ú]t]ô^r^à_?_œ``“`ôa`ñ`¬`‡`¿aa`À`z_¢^©][„YŸW·UÒTRhPßOpMúLoJðI%GKDöB’?Ã<Ì9æ7q4ö2|/*Ì&!¸þÀ—b 讀“ãžÿî0ÿóÿ¹ÿ«ÿÛ5` $ ð ]ÿ(ßlè¦ ~ G íröß_ l$Ç)R.f3Î8ó=µAE4HpL)OXR@TU±V¢WªX¬YØ[!\j]˜^š_¤`ÞbȺJBÿéÿ°ÿ¾ÿö.VaP…4 Ú f û áYyÚ$!·&™*Ù/a4o9ú?ŸD¸I]M&QTxXZÊ]^I_x`#`Þa˜bicnd‡e¯fªg¿hÿjjkïm%n/n•nõnÄn€mðmrlïlWlkÜll>l“låm>mŒmßnNn nÖnÊnœn„n§ooao›oÓoŒon(mAljíi†hf]d½c(a`%_^.]+[ˆYÅWTP¸M€JwGÔD×A‹=18{3\.€*&'!ä¦)é ÁžùçÖË))ÿÈÿ™ÿ–ÿÊÿó"5ú"ÏÀ+täß2½ ›$W(õ-œ2a6¨;5@]E¶JØOSS—W7[^AaAcd£eRf f†fåg-g~h h¾i¥jakRlqmÀo'p-püqq-p¾pIo›nñn]mÇm”m†mÝn)n§o1o¾p;p“põqq0pøp›pEpp?ppÆpüpÛp—po~nÛnKmlÂk½jÈi™h6fÞeÐdédbÄam__]+Z_WT—Q³N†KiGC >Ð9³4›0C+ã' !‰Ž5¢e j? gå9 ÿÏÿÜÿú&651+)&z$-"\ dÉ !"~%.'á+È/Þ4£9B=ÿB“GQLvQWUÏY˜]…`àd\fÚi j*k]kÜlVlXlLl)llKl•mmunop q?qúr{rnrmrq§qpLo¶o4o5o^o÷pƒq8qörŸs4sŠsësøsös’sryrr%rSr–r´r“r`rq¸qkq5pép}oùošongm‹lÉkîkiþhÞg6ejc(a ^‡[÷XÝU¾RNJ-EO?á:Ñ5º0Ð+T%!äP ©_¥na/ÿ¼ÿ¨ÿ±ÿí456å4×2//¶-È+Ç+>+#,².0Ò3Ñ7ê;ù@yDÕIRMëRdVáZ¾^PaSd²gtj k•låm‰n…nûo0nØn}nm¿m¡mŠmŸm‘mànwoQppžpñpñqpôpÉp`oÒogooYoÆp¡qprMs'sÇtStŒtØt½t‡sês#rwr r r2rdrgr4qþq´qpq1qpÇphppoýoíošo0nmm¬l¦kªjahógafdˆbÚ`Z]—Z8WBS™OªJªEf?È:À5p/±)m"æÏ‰À Å߇©ûü„'UVB¢@c={:¶8š6Ž65ó7‘9<?~CÕGäL0P‡TØYC]`²cŠfjhàk¢m¦oOpp°pþq©qèqËq2p²p'o¦oEnìn¸nbnonÂoop p‰píq qiqxqoq)pÊpŽpnpÎqRr1s sàtµu@u·uÇuäuŒut>sNrœr0rHrvr²r»r–ryrHrqÝq¬qrqpßpÌpßpøpâp³p#o…n¦mÔlâkÛjãj.iXh{fÕdäb(_¬\{YXTøPJSE?9ù3µ,å&3 Õa« ´?p~—œI,dhM-JÎGÊDëBÓ@â@ˆ@TAðC¤FáJPNmR/VZB^(aßd¯g2i*k€mˆopÊq¶qìr=rSrŸr‹r.qupáp=o†nän[mÿmxmZmnn«oLoÜpEp±pàpøpèpÓpàpúqurrñsÎt–uZu¼v uÞu¸utcsgrVqq-qMqqÅqàqÊqµq{qGpëp„oúocnßnun6mûmÉm“mDlëlvkþkjÿj jjj9jikhf¿dÝb6_ã\|X¨S§N¹I4Cè>7Â1,*³$«Ö—íl wùb­ËÄä©W¥UQþOMK?KJÏLzN{QØUXÄ\-_±c¤giäk¯m_n»p‘rsTsÚtUtWtht6ts¬s&raq±pÚoÝnòn6mµlûl¹lÅmZmên„ooMo“o±oÉoÙoèp"pXpøqÌréttäuµuõvu¬uFtxsrq]p‹oÿppWp½pøpýpöpÄp³pWoÍnînm-lykókWjçjjbjaj‚jj„jŒjÀkkrkÎkÁk²jËi¬g¹f cq`¬\žXgS4N%HmB¹<\5¨.ð(®"ÕŒí, ‚í"_ÓE¹_S\ÿZ6WµVTmT>T UÀWÖZì]—`ncPfNi¤lAn4ou u“uþvvbvuttYs†r›qÁpzn÷mki0gžfeNdÂdwdõexfIfùgºhsiVjKknl˜mÆnÑoóqHr¦ttûuÛuývu[t®sƒr^pîoMmìlÒlYkÿkÝk©k,j€ihÖgÎfˆdôc\aþ`Í` _A^Ó^3^X^Ö`3a‰c0d»fPgøiujîkílãm(m[lÙldk?j6h5f3b¼^»YÜUÍPéKMD³>_7È1"*…#Ò»Ðì û >†>jpiEgÜf®eÖdÌdšd®eðg|iijÐlBnoæqŠrsVsºtbtßu8uau¾uÆuÊtös©qüp×o¨n_ljTgÌePc4aO`^]Û]I]ª^&_O`ba×cFe fÝhäjùlçn©p'qÀst{u_v8v_vxuÕu(sãr püo5m„ljöiæhðhfÑeqcÏbO`¡^Æ\é[Y´XaW³W W V¨W W»Yƒ[i]Ý`.bŽdóg$ifklkmm¥m¥m¼m"lwjÿiÌgFd _ß\†XnSÖNH-A§;<4…-±&þ M\Ò "òÛm‰lülRkÄkPjŸjjºk¾l×nooõqFrusNsÇtVtÃuJuu¤u…uÉu…tõs^qpoGmËl4jLg²dÑaÙ_\ù[YÎXIW`VqV¢WXµZ8\`^zac¬f„ijkÿnap5rsxtíuÓv±v×vövQu™tKsqmo»mÚljBh_fwd°bÎ`Ñ^ž\qZWUDS.Q¾P9ONñO(O PQSRU—X–[—^ÐbdúhjAlFmVninËoMon¾m¿m4k†i e˜bá_[æVíQ³K]E2>^7q0.(Ê!ß"˜ $m~mgmCmlÖlkldl¶mŠnDooåp·q«rnrêsCsætotÙtàtÝt€tus†ro—m jfhYf%c|`R]Z WaUœTRðQ‹P¢O¤OâPR„TVVóY\Æ`c¢g8jimfo°rs¨uWvJw4wXw|våv;usðrjpãnÕl¼jg\dja¤^æ\ YTV‡S»P¶N0KýJ’HñH#G{GÒH I]JÞMlOäS+V—Zt^Jaóe¢h‰kBlçnzo0ppoîo!nÐmkÈifßd"au]ˆY?S”NGs@ä9¡2*®#‚ncÝPm7mxm»mÊm®mvm…màn‘ooÄp”q^r rzrËssÇtJtt\tNs³sh=‹=€=›>Ï@!BLDFýJONöS¬Xû^LcVh)l:psvUw—x¾xÑyxx0w9vKt˜rýp,m"h¶d^ÆY©T|O*JMEŠAÜ>G<9ñ8Ç7H6…5è6<6V7º9l<›?ÒD H9LýQ¿VÒ\ae½i\lÑoqyr¢s’sas2rjq·pÁoÓn»målfjÐg½da_qZ¶TyM´F>Ì7ê1+T% k…lPlém'mlëlïm m†nnÙoªpLpžpàq£rrJqkpWnTl™iæfûbè^ªYÙUP‘LH=DZA<>;ý:97ñ7y6î7*7~8´9í;ë=“@†CðHêMñSÇY¬_jdãi¨n´r{uów¤y3y_y˜xþxwlvdt«sp\m[h¿cÙ^XmR¬LÏGHA°=G96£4q3t2#1¥1L1À1õ3)4~7?:.>RBmG=KíQ(Vµ\@a­fjUmGpUrs´sõts9r“qºpÿp-oqnOmSk,h¨d¢`Ò[pU‹NœGÝAF:§5/vl#mm¼n mémÎmÉmÞnOnâožpQpËqq=qørqÈpn:kSh°eaK\~WŒR{9ƒ4¿1ò/….§-‘-X--…-».¸/¹24z8Zê9rm=nFnÙonînÁn¶nÑoMoìpq*q{qÇqØrZqËp®måkg*cz^óZFTâOXIÍDU?¹;e84²2%/†-ô,¦,5+™+{+Q+·,-B.0q1ü4Ä7ñ<ëBHpOUÝ\jbŠinCs(uåxqxûymx˜wæv˜uisÆraoõmZidd^>WùQ)J}D8=á8»3«0‰-Â,Â+Â+±+u+¨+·,V,î.‘0B3p6é;œ@EaJÕPñWJ]Zc4gÌl=o*r1sŠtŒt/sÌsrÆrVqŒp¨pIo„nsl>jf‹b¥]X…S M¨H¾CÕno1oºoío¥oho[o~pp²qZqÊqúrUrQr¦quo‘k·gïc^NXÒS+MFëA0;›7B3/0G-(+(è('k'¢'–'Ü((Á)`*v+ -;.c0²3i8<êCiJQX¢_ŠfÇl³rMuyxaxïySxKwwvtÍs&qºo_lÞh»dt^sXPéIìCt=82ÿ/Ç,º+{*s*x*F*\*?*t*+™,‹.û1É6:F?ŒDÕKQ°Xd^îdRium pÈrÅtwt}tDsŠs{sDrŠq·qnq p…om«jùhd`[¡WRÌN‡n§o¨ppo¤oDo4o_oÿp½q`qµqÂr-rqþp mShƒcÝ^!X}R@KÝE}?9°4‚0Í-D*å(A&¯%?%%:%ü&^&Ø']((ê)ç*Þ+ì,~.048S>˜ELºT/[®cpiúpFt wyx@xÉw»võu“tKržq!nâl‘hæe<_ÃY²RŠKE >¸9»4Ý1“.;,“+N+-*Ý*Á*b*-)ù*m*Ì,|.q25›:ˆ?`EcKÁR–YZ_ReiVm»pvs sÏts›sàsésrrÁrpr"qäqoümêk»h´e¯b6^[,W¹o oúp>poSnÅnªn×opiqqUqBqÇq}q#nljìe6_ËYMRÄKÎD»>/7À2Î.#+"(/&g$]#i"¥# #º$¶%5%Ž%ý&¡'r(Q))¡)ª*+Ö/S39 ?sG;NäVß_fCmZqôv$wfxOw_vÉuotrZpÄn­l¨i”f•aª[ýTàMðG3@“;862Ÿ.þ- +†+2*°*k)ç)ƒ)")?)=*M+.J1C5»: ?¸E¶LSrYõ`?eLjNmÀq@rÚsÍsµt[t¤t„t sÍs¡s³sSr§qo‘mXkhse¯c`RooÐoéon¦mïmÆmón¼o¨pHpeppoÝnêkdg4`áZÚSàLÅE‘>Y8/2:.*;(%¸$##"¿"„#$#ø$Ð%,%H%%ó&«'d'é('»( (Ÿ+a.x49öAŒIQ!YjahÐnKsYuWvàvLvtés»rpnÝmOjïh¬dl_QXRKbD¸?9—5®1«/c-“,ö,+r*‹)Í)(î(Á)q* ,.@25¥:¹@FtMS»ZZ`e¨iÞnCpÕr¾sOtitêu6utÙt­tètÊtMsqâp-nol[j-hfooªo¡o%nFmwm=mln9o+oªoŒnÝon lnhc4\GU’NFk?7å2;,Í)n&O$Ë#"j!¶!×""Ì#¢$R$$¯$ã%O&&Ž&Ü&¡%ú%¼%Œ'v)Ò.ö4a;ÑC&KdSÈ[èd*jlpFrõu tÌtÞsísq´poDn;l€jígEb \0V$OÊI_C=¾9F4Â2#07/~.[-(+£*?(û(m((^(f)–+.#1(5¸:f@rF¦M‚TlZÜa fk>n«qzrµtFuuºuÌuµu•vv4uòu tGsqÝpPn¦mk²nîoGo'nµmðml×mmánÀon±m˜m^k–icõ^W[P.Hx@³9¸2î.)N&¯$E#I" !­!^!¼" "Ó#…$$u$µ%%Ž&<&©&à&%Ð%I$ž%Ì'~+û0»7¨>‚FN¿W_tf/l‰oÊrir•sr`qÖpôp6o^nÇm‹l~i`e-_HYìTQN¸I?C¡>Á9Ë6¦4t3m1ß/ý-±+t)Y(C'“'Î'•(F)!+w-Ý1Ù5Û;`A GÈN¯U›\Rbhl6oñqÙsÏt¦uŸuÑu¸u‚uîv:vuotèts>rpÕo¨n«nÅnìn·nFml­lalºm“n^ngmýlŒkÙiEe×_åYúRŠJõC;M4¨.1)Ø%Ã#Ú"(!¾ þ á Ô!T!ß"«#o$!$¸%4%À&@&Þ'$'C&Ï&%d$`$ö&)ó-ö43:eBIôRIZÚaýhºl}oŸpHq%pàp±p"o¶o:on8m¨kg`b]jXžSòO IËD¡?=;`8¥752˜/¦,¬)·( ''A&ï'D'‰)*Î.-1‰6;¼BWI#PuW³^Uejn©q"s`t0uTu“ucu ubuÆuÈuou*tÀtesÐsr;q°n„nyn2mÂml8kðljmLmôm¾mXk¤jXfâb¡\"UÜNoF¾?7‚1]+_'˜$$"Æ!ˆ!V Í ± • ú!~"Z#($$ß%¢&]&ð'™'í(/'é'i&À%È&&ë*-Q2Ä8M?—GOMW¼^òe½iÂm0DÈLJSÛ[!behm€pƒssºtèut»t%t0tjtit:tsÍsÊs©s6r¾r‚nGnm¦m-l’k®klllàmXlßlxjŒh²ds_XŒQîJxB²;/3Ü.,( %p"°!Ú ô Ë U -ÿ S Ø!Á"#z$z%j&<&å'­(0(°(™(9'ˆ&š&®'%)¡,0ß5ö=%DƒL¾U(\yceg«ktlËn9n4n*mˆml“lxl-l'jugc]_¸\wYÎVòS¯OBJ EA=>D;7w3ˆ/ƒ+5([&g&6%Ù&%Þ&d')Q+m/‰3ý:vAHÃP•XU` fWlšp9ssªtãtït‚s¯sdsZs=s"rárÒss`sCss)nmŽml¡lkHkk¸lŽlæl>kái¿gJbY\øUçOG½@8ä1×,›'ž%"è"_!‰!' – Mþ 1 ™!`!ô"¿#¸$É%ª&ƒ'Š(j)F)‡)z(ÿ(Z(d(Ÿ*š,“0ý5ß<öD'L+TP[lb1f}j_kØmWmCm"lOk”jôj³jnjlifŠbè_¡\àZ×XÜV­S NeIAE"Az=¦9Œ5!0±+ø(¯&,%–% %H$ÿ%[%Ö')6,á17i=æE»M¤U£]dKk0onr®sxtÎtÃtRsJr¡r:qïqÇq\q?q‘rr r rImÆmlœl1kÔkjâk™lqlÅlkµiKf)`{Z±S‘L¬Eh=â6þ0,+_&ú%#{#1"i!Ý!J û § º ú!s!›""ë$%%þ'*(>)I)Ì*)ë)Š)})j*ê,Ž0Ã5gF€OWa^Õf¯lp|rsÜsÏszr1qp+o¹o‹nån•nÌoOoXoŒpm lk k\kLjÃj¯knl1l€k¤k_hwd4][VûOØHÇA®:d4 -¨)²&’%È$ï$¿$#x"Ü"j!ö!Í!À!è!·" #$£&'Å)Á+Ø-Ì/e12 2{2„2k3—5N9$=,B´H7NATlYò_:bëfwh@iðj,jVi­i hLgÓglgfSe‰decaça`@`^L[7UåPÐKEŒ?°9Z3+,Û(q$È#€"^"N!¶!¢!¡"€#%Y( -r3';C0KïTU\d iönæpÞrürõr¬qEoñnänrnRmŸm:mamämón9n·l¬k²k2jåjÙjdjak"kÐl k j³gšc[ÜULNFÛ?¹8p2N, (‰%æ%z$Ä$‘$#Š"í"e!ã!³!’!Ô!Ü"²#ï&'ê*S,ò/Â2t4Ï7U8à9Ã::4;w=R@ÒDXHÞM[R;WB[Ï`3cCf%g…hÑhîi hvgÕg"f²fdfe™e>dÇd3c“c b‘b¡`í^,XÞSuMG@Ñ:$3ž,Ú($ "!Z!K À ° ›!L!´#Ê&+0{88@?IQeY'a[g…lùo}qúrqùp‘o1nm¦m‰lÅlAlEl¶lÌm%mŸlckYjÉj_jEiÙièj²kTk~j[iâf•a¸ZNS›LWDø=Ê6‡0—*ž'Y%$ó$]$.#Ö#f"Ð"D!Ð!§!j!°!Þ#$¾'h)æ,÷0)3Œ6â9á=?@j@áAcB·DGÌJþNÊRnVFZO^aèdfµgihgÑgÝgvfÙfexedÏdÆdÖdédÑdŸd¤dZd‡bÖ`T[UŽN´H`A»:Î4- 'å#‰!Ë : ‘¡” 0 ‹"`$Q(Û-Ý5q=]F1NˆVk^ÇeYk[niqDq†q–p5nÌmŒmlákökAkknk‹llˆlSkFjŸjiÅiOikj=jÙjøiªhïee`eXöRCJ÷Cq<&4Ü/)Y&Y$J$=#±#‚#8"Ø"H!Ë!|!p!#!i!¸#Y%Z(œ+Í/•3N72;0>ÔBEF¾G€H]IÔKÌN¿QÁUWûZú^9a`dÃfõh‹hšh•hhgÃg9fre§e2dûe6e†eÀe«ekeŒeGe?cV`Í[®V9OcHõB9;Y4·-À(†#þ!õ ¾5XLÔ )!¾#C';+·2ñ:šCdK¥Sœ\bèinm p€q qpWomÍmZmlkj¸j÷kk¤l(lYkQjiäi‡i i4j j¢j½iKhOd„_cWîQ6IÚB":µ3`-È(K%–#Ã#Î#S#"Ä"V!¹!A! ! » ü!]#F%ˆ)N-(1ª5ê:X?CqGÌJ¢L´M¦NÃP\R|UTX.Zì]?_tbdœgxi?j]ji»ihÞhžh)guf“feÌf.fÆg+gfƒfŠf4fda \¡WEPyJCBGCL-OqQûSAT«V_X¥[S]æ`aÙcoedgfi™jõkËk‘kZjßj¦jgjižhähah)h{iidhøh gªfðfdd.as\hW PdJC‡<å6…/Ò*³&;$!ä!4 j @Ùðú ð!‘$S'‘-Ý4Ø=yEŠMžUè]Gd­iÀnlpqqp³oánÎnœn]mVlCkk¤k©l8l lgk_jƒiŒhîhShni6i¯i½gðf:aÃ\]UNUFÿ?!7•0)*Ù%î#å"z"¶"v"["!¾!7 æ æ!! Þ!7!°#ä&l*á/Ÿ5>:\?ÃEªKAP³T†W¿YŒ[e]&_€aÓcèeRfugTh†iÃkkôlwlglmlJl5llkÐkhkjækkšk¶k-jich;g4dˆag\'V•OôI³C\<ï6Ô0i+Š'R%2#"H!] ü f :  ” µ"×%k+61Í:VBWJR»ZCaüg£lèo!pÖpSoÆnóoon=m9lžll¥m.m‹lCk4jBi0hpg¸g¹hjhÌhÐfØdÉ_üZhSLoE0=^5Ú.d)-$ˆ"Ô!—!í!Ï!Û!È!š!C!!n­oo]nÉmòm‡mœm³n2nŠljòiîhÀgÖfófÌg[g¦g¨e‘c0^ XHPòJSC';V3Ó,Q'="ð!¡ ›!!!+!?!H!,!>!’""%"Ç#z%ç(À-„2d8U=÷D>K Q¢Wû\Àa cÓfthml°l†l²mm m4m[m¡múnKnˆn•n€n}nÁooso nslÙki3f¹b°^~XÌRËLIF"@\:‰5]0,(Œ&£$½#Â"®"!< Ä G =« Ë"3' ,ñ5T=6E}MªU_]_c§i¬l¬nùnãnÈncnüononSnnBngnßo8kâjØiÕh¤g¥f§fbfÙggdþbx]+WKOóI\B?:s2í+]&K" ÷ù _ ` – ² Ó ß!!!˜"8"o#-#ô&b)I-õ2Œ8:=¾D+K$RX´]Áb[eCh4j0lmånÓnÀnÖnxmæm‚m›mëmæmÐmÊm÷nPn«nÝnÙn°n¶o-o£poynžl jßgèdÄ`4[›UÑO·I\CZ=ô83ó/=+Ä(&¶$ì#ö"æ"5!m ï u X® ˆ!‹&+©3õ;¹CûL'Së[îbQh…kÄnInZn]mþn™on°nn n^nŽnûoUl@k2j%hægÖfÈftfÝggdåb?\×VìO IB :I2¼+%ÿ!Ñ §Ÿü  < C W q Î!N!ø"E##æ&K)4-º2 7i<©CIþQX]Xbe%hsj×m‰ooíoÍoüoÇo^ooo3onÕnÖoo+oRooowo`otoëpBpŠoÂnµlSjf‚bÖ]íY S%LÛF@µ;Å6Þ2Ú.µ+(¦&á%C$g#m"´!Û!B ½ ŽÖ r! % *d2‹:&BcJ‰RbZqagƒkmèn!n@mßnvnçn‹n nnŠn¾oojl2kBj^iOhigzg9g¶gùheÞcP]ÿX$PÜJZCM;–4,R&ú"‡!Àøò & ôÿ W À!W!ª"o##%<'Ö+å/·4„98? EšLSxY]ôa\eh kOmSn½ooŸoÑoôoðpp"oâo§oÄoïo×o­oœo©o²o×p:p@p8nômejggwc`_PZ5UOH˜BŒ=8È4v1-i*º(#&˜%:$~#š"ä"!! ß : Ò!T%&*X2Y9ÆAåJQÜYÛ`kfûj¬mˆmÀmámsmïnJmåmwm¨n.ndn¯nþl6kgj³iÛihGh h›hïifõd…_IYqRK”D…<Ù5B-…'ú#F!âìÙ Ö¨¥ó H Î!*!Ý"a$&@)Ì- 1t5±;4A'GñNòU ZQ^.bGeªimkømðn˜oao§p p8985“1Ä.Ò+È)¡'œ&l%N$”#¨"é"0!À!X!8 ™!+!¦%e*†2g9©A¢I¬Q}YZ_ÏfVjl×mm,lÃm3mˆm(lÔm,mÏn nGn–j#i¿i•iZi%h°h¬i|iþj7hPf'a [aSüM[F3>Ž6ï/);$4" à®ï»’ŽÌ x Û!r!Á"ð$‘'j*-É1~6};±AÿH¶OTÖYa]ïaÅeÿi*kòmOn’oo¥oîpHpPpoëpp:po»oboJoxoÌp_oòo,lyipdê`”[{V’PåJÀDd>8ó4—1¤.Y+Ù)Y'»&F%t$”#Ý"î"9!·!Š!I!> °!k":&H+š3r:šBfJhR!YÎ_òf+iˆkøkìk÷kkãl'kÉk”l lÍmm\mÆgƒgŒgõhehÇhÄhýjjÀkiQgeb\âUkN·Gu?Ò8 0)ï$ª"Fú™H›†‘Éø S Á!H!u"4#U%p'L*G-t1þ6€7®3@/~-A*ˆ(Ž&¨%Š$Š#ú#U"¸!Ý!H!!! ! œ!…"µ'&,¼4—;ªCLKNRøZ}`Lf.i&k(jÏj²j=j`jŠj*jjµkœkølUlðbbödTeÕg*gùhµjJk?kØjGh²d(^ÈW^PIAw9³1n*ð%U"  vûWaŒ¹ô  c ×!U!w!ï"¸$7%d'§*I.G27,<¡BãINþT¢Y^•bÎgj,mn‡oÇo÷p6ppoño´onoFo)nànÔo1o…p&omh¶d^:XòSM3Fv>å82 .e+=)'\%É$Q#v"¢"&!¦!3    H P € !Q# (-ç5Ç<ÜDmL}T[a fijiÊi~hýhæhçhxhvijjƒkkÒ\{^R`¾c_e©gQh”j¯kñlÏk}jIfaYÁRÎKCz;²3A,_&T#8 O ^m®ò 7 U ‰ ú!m!„!Ã"G#G#ì%‹'*ø. 2^6ô<ÇBÏI$O7T¾Z+^çcÕgÃk¥mìoåpYp­popœp”pRoÔofon•n„nøo;o¤møksfYaZÁUNáHiA<992‰,ÿ*4'«&{$Æ#Œ"o!À þ „ ØLsÁr ó#&(ƒ.6a=tEM!TÆ\+auf·hÌiÔhÊh^gÜg¡g…g gg¸hÆiVjjÿTæWæ[‰_qbçeµgÈj‘l7m‚lŽkÄhc˜\ŒUŠMEó>(5¢.f'Ö$) ÖïaX–Ü # 8 _ Ä!0!L!‚!ó"½#6$s& (Ã+J.í2¨7¯<öC INúT«Yá_Dcãhk¼n¡oÅp pœqq(q pzoÜoCn¾n­o)oFohm4jdy^ÊX1RBKÑDé=„5t/5*H(0&"%5#Ð"¶!« ë –>™^qÀµÿÒ ±#b)"/M7>7E×NU ] b0g4hîi–hTgßgcfÿf«feþfggKgÔhŠi‚MfQjV-[P_ücýfêjalfnmŠm#iÑf_NXDOüHY@ƒ7ð0d)R%!0ýî&:p©®Ê ( ’ ³ à!=!×"-#$8&Y(w+’.“2Ê73<ÖB±HôNéT¢ZŠ_Óeil¹n¢p=p£q]qmqWpÈp5o¯oGoBoÂo¸o»m&ic9] V)P IuB":y2R,m'ø&t$Õ$-#" ! 7sÓ´CüL%wk ©#Ù)þ0P8 ?TGO7VÂ^,c+gåi;i„hgg+fšf eVe(e\ff¤gjhdEIüOÎV [ça2e!iVkÈnmïmàjîgÃa‹Z¶RUJ±BÇ:92y+&!!¼ ¨º~ªÈñï \Ãî * Œ!$!‘"d#C$ø&×)Ž,/„2ç7¡<ÍBôHêOU:Zë`„dèi;k÷nošpÆpøqp®pdp(p ppŽpPpCmuiebª\,U$NÝH1@´917+½'›&T$ð$^#S"A! .oÞ­&ÉÄÊ6]! $Á+X1ç9²A'HçQ Xl_ÌdšhðiØiÜhUgìglfeˆd‘dc«cÔcìd[dí<¯B™IvPÆWÁ^Jc3hjùm×n)nikÃi$c\\ÁTQL¦D›<4,Y&ÿ"ý-"å.Gfi†Ì(XŸ  œ!$!è"#Ù%d'­)Ð,“/ 2æ7^=\CSIÇP/V,\`ëeÀi$l`noØpapÄp•pppµpÜqFpÌpžmŠi aâ[%SóMWFx>×7{0+'O&:%$’#—"r!- $Zõ—@™1(x>Ì!5%z,›3‡;rCJÕRìZ&afiùjbjh{hg‹f`dêc¸bÌaÖaB`Â`®`¶4_;%BöKRþZ£`‡f1iŒmmÛnmliëd©^“VrNôFß>V6I.e(ª#U ¹`ÿ–ê'6VŒÛpÜ |!!á"ˆ#š$Ø&¯(…*Í,£/¦3#8t>DœK Q?WU\Šaºe§i}känBoFpppUpvpÎpúqRp¦pSmhqa+ZiS(L@EB=Ì6æ/à+D'«&’%q$ë#ß"¥!\ JiÞN×'ÏÉ.Ô|"&ß.j5=˜EYMU \ c?g‘j÷jüj–ih–g±fcÐb`Y^c\©[!Z%Y=+ß3£<‹E™NgW/^d‹hkl‰mÅn¤l”jæf0`¨XâQ¢I„A8Á0™*o$¸!§ºê<–µø/P”ãWÅ U ê!¨"]#K$0%€&ü(Ó*3,r.Ò3F8o?9EãLR÷X’^5b¶g0j.mndoyo oñpp‡p»qpQoél¥h`ÍZRÆKœD€=B6´/Í+.'š&~%c$Ù#µ"q!D Mg¾ó½¸æäå#(]0@7–?GSO Vù]Ïdáhòkôk´kQiÏi]heÚbÊ`R]²Z¨WÇU6STQu$¥,ø6•@#I‹S"Zéb!f¡k^mnzlãk°g˜bÚ[ÌUM=E<É4x-Ú'Ê$5 §0ãæÖ#6Pd¥…ù € ý!§"n#O#ü$Ü%ì'P(n*.+°/13Ž: @‘G‡N TZ$_0dIgækRmn…nßoUonoÇoÓpo)n•kBf±_ŸXøQ¶J’C«<Þ6²/ä+)'ž&%L$©#u":!' ES˜å‚lÔ x%.*ê2Ð:AÒI¨QIY_wf!i×lƒl.kûj…iÚgÔdÛ`¿]IYU5QM^J‡G ð&®0Þ:×DÕO0WÑ_ÃdÞj9lƒndmMl”ie^ÎX±Q-IzAE8É1 +)' "ä ĽDê;Ffv³ – ( Ã!:!Å"‚#@#Î$L$È%Œ&T'»(¹+{.ì4¼:×AöHÄOKU¾[jaAe¢iµkâmänƒo2o5odo!onm!~+”5g?ŽJ-Se[íaÁgÅjËmm5mj:g,aÒ\…U¡NµFÝ>‰6ü0+V&«#à ýº½Å”¹Îaà y!!""¡#<#Î$'$;$t$Ú%ô&Ä)+¨0y5´YóSËLSD4K8Ò4.*Ù($'%Ÿ$•#›"–!2áÄ4¼¸ŠÜ` Í$w(¡.ñ5A<¤CïKiS&YÕ`d`ikolõlElXjuhHco]ùVñP›IAâ:~3².ˆ)2­¹ ë)Ø3Ú>cHpQþYr`ÜeœjXkûm=kÄj›g5c˜^ X±QÌJXB€:Þ4®/+2&ä$!‰ •¤À = Œ Ù!!n!Ø"Q"·##®#ú#ý#ª#'#+#\$ô&£*-š2Ý8_>ãE?K¶RVX+]»aÓeïhdj¿krl8kcjœhež`È[ S¿LÉFQ@D;:6!1Õ-()õ'ˆ&{%$#3"0 ºwœQßÒ›<Ö! #¨(P--3´:0A‹IPkW±]sbÎfBjk°l¦k€k%hƒeD_:XßQIØB9}1‰*9$ØQ -XÖ$ -½7ûBXLkT¼\ÂbRhjÛlûlQl#i´føb&]~W-PHûA,:;4/‚*’' #±" z J & ¦!!|!–!›!Å"""ü#\#q#n#'"®"Ž"„#¢$ß'©*v.ï3¤9¦?F"LÖSY]©bae~hi«jÂi«hse!b\¹V­OqH~BG<‰7ó3C/m+A(~&j%›$•#Â"Ì!® F3›tçÁ“¢½"æ&x,1k8>ÞFTN#UJ\`Ýeˆhgmd«^ÒXNÜFD<ä3D)Ê 9k `– &“ð®#Á-Æ8OB«L"T \†b·hcjïmCmmSkCh¬d4`ƒHQ³Y¥aÏfâjñlmóm¬mjRg‚cQ_§ZyT_MlFôA5;®7 2.j+)P'”'&½&á&Ñ&Š&%%$¼$V#à#G"ß""Ä"ý#Û$—&U([+r.A2+6@;´A¬GêN-R†V=WXV'T3OJLCŸ=71v-{)¶'‘%|$r#b"¶!È!& · › e Y  v ô"y#ì&¹)v.%3h:1@ÈG¸N¡U%[ÖaeÞh®kÚl®mjêhÙeb \”U¿LuC™:0­'„O hÓžŸª.½ êìå!¬,}7,AŸKŸTB]‰côi*k"mˆmÚn`l½jˆfÑcï_¬Z¯T=M™GFA¡=8Y4›0Ö.z,e+Ÿ*ë*½*l)ú)d(’'¯&á&/%É%a%D%%W%´&¢'s(ü*°-$/O2{5×:¥?÷EÅK­OáS€T2TÝR™P4K5EÊ?48Å3"-È*U'B%à$w#Ö#"„!¹!ae6iCkbmÌm¢l¹iyfÇb]^>WSOE;Í2(ù *mÑ šõWèÇ>5‡G| –™"%5/©:zDˆMŒWH^©e%hRkWl2m±m3li"fÕcP_§Z]TXN HgCò?©/8@3-.Z+m(ú'ÿ&Ò&%B$#¿#J##%"µ"Ñ#2$Ý&¦)¶,œ0â5f;YR H­?59,#™Ÿk î鱛Ϟ~ì¤îI S ’˜w!V+Ó5¬?.HÁQ*YÙ_ádâgDj!k|m#lÙkßiQghd_a \ZWQûMÎJ×G¤ERCA²@»@>ñ=š<@;:9B8X7è7“88§9¼:«;¢<~=|>½?ë@„A{BËEcHuLOÀR'TSºSJPãN„JœFcA<ê9%5Æ3Ü271=/ã.¡-s,[+ *)N)G(ù*+ˆ.«1¯5÷:}?­DI NÁT Z_cˆfDhúj6kúk„jJf‘c']éXéQ§I?õ6¯-¬$Ñíç Ž•¦™Ä·†ø z v"¯$f.7´@éIgRYÝ`kd(g„iSl&memålDjœgÕe’b;^Y|U?QàN¶L›JsI8HHG¦FµE{DBÅA©@ñ@+?Î?^?š@A$B-CHD0EFHGDGºHMIJêM+OùRðTÈV U_T§RuPaMI„E}A•>{;´:8¤7ª6i53Ï2v0Ñ/¦.É.í.Æ0 1é5k8è=}B.G)K±PdU‘ZÀ`dgAhÊjØk8kuiFfšaþ^XJQôIp@~7.;&gY  d;¯¿\˼—«ãhÝh ­IL &^/Á8m@¬IYQXæ^Lb¡ehƒj½l×l³kÅi`gÄevbÑ_`[¯XHUIS^Q‡P˜OÏONN¡MªL{K9JIKHžHNGÖGÚHHÏI¸JßKÐLÊMüNýOP&PÁQýS•U©XYpZ=YeXV•TÁR OK±H~EçC‚Aÿ@­?½>¢=`<:…8¸7„6º7 78g:0=šAE€IÍN8RJV—[š`=d‹giLiÎjëiôhGdV`œ[oV¶PHV?76f.&I ^ñ¡:¿³ÓU“ì—æ® dúáŒ'|/á8@GÖPªWí]íajdùgqjØl”mXkïjh^f¥dƒb_J\•ZœYXVWÅW^V¯U½TÃSµR QÁPúP–P+P/P5PÂQkRvSlT’UâWW×XiXûYØZ÷\g^%__{^|]„[¨YæWzTÔQüO=MJçIHuGFŒE7CÄB2@n?Q>>ã>ç@SB-EŠHäMQUQY…]¥b#e¤h©jk¦kmk;hodË_k[U|O€Gb>V4ç,z%D«Ê ²j;ꬰå#Ã5lÒÁìõx‰{ ¯}'W/M6[=¥F9N`Uõ[_a¢ehžk\k¹k i1hfóeÏdMbX`œ_W^Ú^Œ^F]–\¨[ä[Z6YfX•X$WÒWêW÷XTXªYYZ['\^]}^W^ë_|`&`ûaÿcKc÷d7cQbf`²_ \éZ¹XmV"T9RkQ?PYO“N€MK¢J"H†GˆFÈGGHYJM%PS»Wj[O_Ib¸fh%j j€kvj-h/c’^µXÁTMÇFK=3¯+#©¨ƒ Ùþ–·ôÝú”=GÀÞ`ìEc& †þp¢&{-$4;§CíLÜTY„\Í`¡dhSjôl=k_j³i¸iYhìh g f(e­eefdÒcñc.bwaÆa/`‡`!_Ï_ä``p`¡`ùa_bcddÃe8e¡ff~ggõh\hvg™f›dýcka¸`!^—\ñ[Z$Y,XmW¡V‹US±R9PON²N×NÜP+QÅTšWiZÚ^yaÑdæfùhåiçkkkikPh?d]àXƒRˆMEµ<‹2y)Q"d0+ m¶œɃ,gû Ãjg4>“ÔNZ<  6'/$—+!1i8±AdI¨PÊUzYi\¤a€e¥hûi÷jGii¡iÅiÙiªie?d]c³cbMao`Ÿ_Ü_<^j]c\ Z¼YVW¼VŸUÁUàUóWXnZÂ]0` celg&gÁhyh¤i¤hÉgb=\²UóPJšD;Ÿ1Ú(k €ÅïR 1‘ˆ!ä xúÞzP‰*ÿúT®VÿöÀ•À Xˆ‚¼"h(.[5Í>F¬M~R«V>ZÑ_7dgAijjˆjujÏkk,k4klk¥k×kÈk‹k1jëjÜjùk'k"kkDkAkjei´ih€hg¡gfteõe~e˜eüf´gRg£g¯gˆg|g¨hhnhh\2i½£)ÿæ0Þ•1CŒ8ÿïhrTÿÞ30[-ñ ˆèC  %¢+>2):sBfHÿM˜QíUÕZ×_Qcheqf¹f·gAg¯hhhäiaj jšjþkkjükEk†k’kSk3j­jhág¬fMe cÝbµaž`^_q^ƒ^z^Ã_ß`ñb,c,d2eQf—h i2j&jdjŒj(iÚi,hygnfLe c®bÜbfb´bïc”d@eeúf•g fåf®feídxb‰^ XÓRLLÏF¥@?81/%笣 v[çúäZ€*:˜»¢SRuMÿîOdÿßÿšÿ·ý‘ÛM  ÍB³d" 'Ž.N6=ÐDDI¢MžR VF[^ÓaÔcdJd£eevffägüi#j;jÊkjãjíj»jziãi_hdgGe¯dbF`‰^å]P[ßZEYWÒW§WÌY'Z’\•^m`tb‰d¤fÝh j;jùkŽk|k„k5jájUiÈi0hh'góg÷gðgÒgžgIfûf¤f|eúecïb[^ñ[U‘PVJcE> 6,î#·úI° §†ÒÌÏ)¤*%wͲb34fB\Aÿýÿ×W+ÿãÿpÿî<>\ ãÄgÌ8#Ç)Ô1 8›?9CôGîK-OmS—W·Zy\¯]f]ÿ^H^ç_øa3b¡d)ee²eje)dlcÈbÉaÔ`^^¿\³Z©X“VTµRàQ=OwN(LÈLL NO¼R6TŽW8Yé\˜_Sa”c»e f)f«gWg³hhhGhNhPhgãggfðfecËb£aÄae` _­]YÕUP_K9FÓA‚;¸3û+3"u¼Í öjz4ă ÿg6j©Åˆ@Mtz Wq,ÿßÿéO1ÿsÿ*ÿ¸Wó qXÐ&ƒç$”+Ð3e9Æ>ÁAÝE HRLUP!S´UºW WTWéXÁYâ[h]^e_^_\_K^m]¢\/Z¿XŸV[S¥PíNIKÍIžGhE{CmAõ@f@&@/A×C§FI&LKO…RéVRYX\G^f`Ha–cdRexf2ggB8>1(• 3;X9 í:ˆº@J,©FdµÀ˜Y<vª‚ÿúG…u.ÿìÿà9iÿïÿpÿKÿôý2saóX iÐä ± 7'..[4‚8M;=?ôC…GŽJ¤L¼MaNNµO­PùRpST‘T¼TæT?S˜RP“N5KºH°E”B?Å=\:Ü8µ6y4é3A2÷2ø4¢6r9P;í?/BFkJ;MÈQ=S÷VxXgZ“\K]ô^è_ä_ö_Ï^ç^\î[êZ“XýWNV TS.P`L¨GåCy?Œ<«9 4z-¬%ß+±0õ —=œ-2¾|ùœ†²Û¤[Ee§À~:‚¯ŠÿÀÿç(ÿÎÿAÿ&ÿ¯“ì^“/Ò — ÃìlEi!÷(¶-û1Õ3Ë5î8@;>ÎAtBúDDEFGH0HäIWIDI\IHµG¤FzD\B%?'<8À5Ã30<-Î+_)±'ã'z'W(ì*©-’0<3¶7o;?¸C’GZJsMcO¨RSßUƒVBWVâVŽUºU#T^S²R|QNõM3JÕHSDÜ@ù<ê9‰6@3>.¯(â!ÍŲ ¿ ëjˆ¤.jƒ ŸÔåÆr:VœÆ¸v/<iºÃaÿáÿ¥ÿ¾ -ÿ¿ÿSÿKÿÒ‹1YOÑÐ ) rîˆQ#+(*ð,÷.00O2»5+7+8Ú9ú;D<+= =g=[<â<¯´;­8y5t20F-)J#Ô¨®q š 7±Í?ä¸5ȤÞç‡DD}½¿–uTJ\£Á–(ÿµÿ‰ÿËÿðÿ‘ÿ0ÿ:ÿÌcP)ÿþýÈ{­ ë ¹˜pP: #'$Å&‰'ð)‹+&,Ã.O/û1G22î2ñ291«0ô0j/›.Â-@+ )A&¶#ç!OÑ0à¡a볡Wá,"¡&q*5-¶1+3õ6œ8’:¡< =Z>>û?e?³?˜?µ?:>±= ;805{2Ã07-Û+Ã).&l"UšT3L 4 5νi‹ÏoçÔ@9ÎZ8c—º¦‚d\WuŽŸnÿüÿ›ÿŽÿÂÿòÿôÿ›ÿ`ÿo—;;¨:*n ¿ …RѾt  á ¥!½#B$õ&’()(Ø)5(Œ'ß&¼%Æ$—#w!è 7 ÇnB=9c ¸ ^ 8 tÒ6eW—Þ"û& („*Ô,˜.x/õ1`2y3¾45@595B4d3s1r/,V)Ù'Ú&K$º# 4¥y£ ‘ ·â&°˜Õ~Ö¦¿l à"qlžOP…‘‹~|–dcZal‹y(ÿËÿ‘ÿÿØÿÞÿžÿ~ÿ¡ÿÿ@ÿÚÿƒÿçÐiÚ3Tæ zФgñï5º›ØM˜0ÖgXbÕ3s_A1 B ” Ølº’xqY G ÒW)Ù¦m!c#t%(&Í'ù)B)Ý*X)ö)“(d'*%E#"!MñÓÙw­ ÷ °¦­7{z ‰Œi ý#ev6È{dsŽsXaƒ¨N[_a^j`BÿÀÿÿ°ÿãÿöÿ¾ÿžÿ¾h‚4ÿúÿó±æD-¤´pî € V %€Çù—z.¹¦ˆÙ, ïn × E¥ä­ÇâK¡j@¼8uÏÉ» C¡G†ˆ›<к¤ÃÇhK5ás!8%õÃø à ¿¸M®ÓÐU"Pb½Ef;î-qx4ÛŽvƒ‚uK:Zލ7JYhlrbLÿÖÿ¨ÿ£ÿÊÿñÿâÿÀÿ¼ÿä(UPÿÃÿ¾ÁpĆXk–^ˆR M ë j Ó [ ± ã ± „  ¯Ö¹ŠV3NwæWø’MÿåÿÉÿñ™LŒÐhó¯ t M1Þ~¢ÃJÅ«†Žñc¨ßÛ ¨  ÓidÊ%½Šê!CÿáÿãbÐõ0jyTÇ¡…hO7Aj“¡)?Uoww^FÿîÿÇÿ¬ÿ´ÿËÿëÿðÿæÿìv«–HÿñÿõjP,ŸlÂ|êíT·ÉþôÊk¿jù{Ý/–ÊŒze\I8)ñDÛƒuXhƒ·ý ÷ {  1 S @ 5 $ %   à ^ d RÀøb…CJ“ÕC<ŽÛÛ¾½éBƒGãØÏ¨t@-4Xv„…2P`dYSKN: ÿ×ÿ«ÿ«ÿËÿüÿÿÿüX‰Ÿkÿ¶ÿ¥ÿåHlÿ–ÿ!ÿPÿòétɺšh#캌XÖD!/^¿ë -.컕o¢\ÙWç‡h”Éáëú X—·Ø–<bbC&”[ŸÔçÀli ¾½Àè$gwVéÖÓÆ™a. /Qa`a7XcU;39JF#ÿðÿ½ÿ´ÿÕ!,/AsˆMÿêÿÊ“ïÜgÿéÿ¹tõ>JWLHA?5$ëÆ–nPOOj‹¹ã04ìÊ«i[q޽å 7Yrˆ¤Ëí'~Ë ì„ mÆd.gÉÃzVg›»¼šˆ¥ì9emBïçèÙ¶Š^9/3CFBE>UWE7.023ÿÝÿ¶ÿÆÿú%)7DU`u`ÿÓÿÕ¦wÿ’ÿcÿmÿ²ÿá $Gu—§ž—†ug``W_u˜±ÊôóÇ«qQ/ÿóÿæÿØÿÄÿ±ÿ ÿ›ÿ“ÿ¨ÿÄk³×¥]ÿûÿ¤ÿ{ÿcÿ‹ÿ¿ ^‚tI4Dož±¦‰‡µ@WV1ùüÿîÆ›pJ:4=EEA:SXQ:"3:ÿÏÿÂÿã,ÿÿAWD-AVR2ÿþÿêEƒXÿÝÿÖÿæ!=bœæ8.&ÿíãÕµ  ¬£¡µÅ¿¨—އu^OOSH:31#*@q·ÔÆwÿÔÿ·ÿè1zŠjH;Lh‚Š‚usz × +-3)Ý·mWECKK=ÿÿ"<ObY2-F0ÿÓÿËÿî5* CMD@?OP5ÿþ =gk<ÿýÿËÿ½ÿÜÿïN’ß1,1'ûí̶½È¶¡ ¨©¢–‹Šˆ€mP>EO>&3Nmb7ÿóÿ®ÿžÿ¸Jmc8I}•Ž€ngtƒ¬ä32.ø  èâ‘…mUF6 %9anQ)'4;*ÿøÿÔÿÙ<Q,(SgS6=Sib4 $M^Eÿûÿþ5l°ö- )&ûòéÏÀÎÝÔ¾±ª©¦Ž‚xpgRL`un[RU\k~‚z[2 PsvNÿøB¾µ„hbf³é:8,òèù ãÆ°­¤‡]8ÿý #"+NhjO0%0 ÿæÿéCG.0Q\VQMZ\H+:YY;ÿø_¹<< ûßÇÃÌÎȽ­Ÿ•„zwq_Vbpj]XZ^`aS7(LrvW( :q£¬‘eW\Tb|±õ"0 ÿ  ÿìÚÖÓͱ†R' ÿú,'%1Gca8 23 ÿìÿôJ[B.YvnQCDRX?(+?RQ7O­IJ" ÿýäǶ¸ÄÎμ¡‹†Š„|zui__cc`^XPD7( 1KZ`O)+]ŠŸ£‰kVXdTY|»ý!!ùý&ëÒÊÑѼa7 '!&"$=I6$5. 1TW@$ @lzjVWV>*(9P[R<!(BŒð:R5*ýêååÙÎÈÍ×Þàϲ•Іxkb^WWYbqxvdP>2/%(:MTLC5=mŒ™¦‹vjlh¬ßôÙÒÍÁ¥Y8#8 (  )' >J.3S_I14T~–“t\G522=ISWSIIGo» 8::!ëÚÕÎÐØàãßßÔ¿¥“„rcTONV^j~…{bJ>?KPT]YG2*02?Sl}Ž­»³™{ˆ°Þþý22ñл·¾µY6% ÿü<  "#8P=&F`cUHKeƒ’†pTC?=ADHKQYa[j”Ð"<:2ìÔÈÇÍËÇËÆ¸£’…}vf_costzs_E109KTUWM:.4EKVhŸ³Ä¼¤‰y…™¿ç$0‰p?  3! !((;;/%'2IgukXS^uƒ|eTJFGDB<BUks|Œ­Ô.FVF2 åȸ¸³²µ³«‹Ž’‡}ƒŠˆ{mY?.'0=HLG@938J^agx–ÀÕЮ‹y~—£¶Ñì ئ„rdWC)ÿû ÿÿ)$   -8:4/-%3X|ˆzh\etui[NFGJLDCOgy‹˜­Êð7J@0ñÚËÆ¾¹µ°¨Ÿ“Ž•œ’ˆ‰vbO=;@MVXUK?97@KY_lƒ Ãϧ™ž±Ã½¸Éã+`C2 ÿü  !&&  -! #/47687))Ch…ˆzbZ]cd[OGIQWOJMc}´ÈÜò  .(øíãÜÕÌÁ¶­¦›•™—ŽŽŒƒsdYRT\egaZPFBDKINZsޤµ¶¬¥¯ÁÏ͹©±ÅÜÔ®sK2ÿîÿàÿí !!  ц¿Mø…-Àu00Œ"?“¹¼±½ïYzI¡ /Ž-¢¿Ï[ÑØG·!Ø$5&%"ûb¹E> | ® p  æ « œ œ ¾ á ý    ù   W ˜ Î  ÷ à w ; C p Ô & z ÀnãOÛj)àm§í@d‰ºã9´AÒ ¾†JïØkɹ˜~ä=³ “   Æ!!?d,Ø”xu¤G`ùòËZþï!fY´7$  ֽϸ!F"Ù#Ò$Ï$ã$Z#Ê$Z$¼$Í"ê &gíOÅ ® ô L ? à · § ™ ­ Ð ÷    0 O { © ¿ Ô ª R ó ¹ Ä é " 5 B U … À  ^ À " µt ‘Ë]­!žAà›g(æUŸ¤§ÀaÒÙ­ÖÚ ’£¿èéy5 éB[*ANT]J0ìÁ9’eþŸÖí]©ec_)p!U•Ú¾¦³ µ"q$9%Q&h&S%¶$…$#8"] ?’éh‰ # ~ ÷ û º ‰ Y J ; Z Ž Ð ú  ; Z t ¿ Ü é Í ¶ u  ¿ – ¯ Ö  û û  ; X Ž À ! ® 2  ¡ Ä  X ò™vL;9ëÒæïÞEhOe•ç Ù“y­äùÆ0ŒÖêÀ®n;£¾sn ÆÜZÝK¾þÖ ƒñ€t Ð!t"!‹ º]eIJk¯ý c · J Û ˆ ‹ F ÔËÄí & p ¦ Õ ; d „ ¶ Å º P  ¼ ‹ y œ Å ë ý ó é Ò · § ž ® µ ç A › Ì Ö Õ î   Å k2劰‹~ç¡0|Üÿuýløœxîõ‰4  À%À $Ι ˆr1oKÒ!~"!jrKD`ñrô.~Å–V>üÇU5 "§¿|L •  P D . I ' ô  % M ‚ ¬ Ú  F f t ” ˜ \ * æ – b L a t Š – Ž  c G 4 + 1 & 9 n ® Û ç à Ú Þ  T ¿  — A ü ²¶ÌrqX÷¶3!BB=,ay.áŽuË6{„}òrfHªÚL¸)$he‡>²›#{TAɉdEW±î±_9zêJ0 ¡ ú ˜ ß ^ K æð êËÊ×ÓÔÜðÿ  H l | | Š ’ œ Ž w G äÛú  9 P P C - ! " & 3 2 G u ¯ à ÷  ù ë ã é   8 + Ž  ~ M"€'눘fÎlß5kàúÖA>}þ3•µ…y× o¡‡UïÌ7YÕЈûÎS'¹4µMDRX/Â\Â"] | É d  ­ ó õ ‡yƒ±³¢«ŽA嵕Z/3Nm¢¹ÓáâÙÃ×qÖ  P F - òðèðú  < _ o y • ª ³ « ¢ — z ‘ Ý L ’ Õ †  BÉRœ¥^9î‘ÜX®}-Ÿg§Oçs;p‘|bF]üK_×…%£í´D½ôt ü 2 · % ¢ ; ö ¶ g è ~ V @  #Ê¢³ºÁɱš@¸"À€%íÏ×ÑØàõ ,Pu˜±ÁÕß"‰%ÉCœŒ[B44l«Þò * Y |   § ¡ ¹ ù K „ ¨ · â  ² [ eºµo$Ãl"ò§H•ÉÉtm|ªò^b:U¢Ý@EFX×Ë•´£õ] ž œ s ò z î p ò © € q _ ¬ûz0?3#üÝÔäó*ç`¸¼šeSS_UF9=Hh·×ëù\»Z ©0a{XA"õöuðmÊö 0 ? Q | ˜ “ ƒ | š Ò  A f ‹ Õ  · z ]'À5¦7ùÆ£ƒ6Í2Ábò¶³ÕêÃiñ—d ö4ûX­}ùŒV$ á ù  – ¶ ~ '¯X"K«þ ,¾ËòŒ¶ÒåÇ‚@úÿ Õ`Ùq6@D_zƒtXGGI^|š­²¶»¹Û xú‘"|¼¶«‰af{ê{.Ô5maPT‹Ñöþó  A ¡ ï 4 v ® Ù  n ã ^ È M §1¿t3î—š y +  )  é ¶ Ž ‘ | ú À  Ê ‹? Þ ™ › ! •y ÌÈ,Ô©§À×®hÉSotÒðÒg ²mF%Þªl@%0D^meJ34IXj–—›—¢¯îC¼:œæôößÍÓÕ-ý«#- ù  9 T ‚ Ç ! ^ q ^ C ^ ² 2 – ß  F { Ù G å”;¢ Í ` = 7 R M G S V o ( i · u »  k • d : £ÊêXÄ„+ߢ…‡]öR¸5lj+*tîMM™6ÞŒT"//& øÚ´¥²Õë÷ $+,Cg¤æ!Oex„š®°ÁÍ#µ`ð'–XH¼©»ö \ µ á Ì ˜ Œ À B Ò ? s j i r ~ Ä 4 ´ ë  Ø ½ ­ Á Õ õ " & $ ¶ï6âþ:-é»Nµt¹ŽvX¸aöeáå²´ÂÁ‘Cä˜nDDJwµèôḑhA$&++-0AXyž¶¿¸µ³¯¼Ëù0yÆü+ 긬îOÂATœ í ¦Ôüià  : + ë   T ^ v p T H c ™ ¥ A ,   9 g Ž d Ã6û'"ü¯„y«äh&MLükâG{ø†Ý¼oì“P Ú¡‚grz±þ`Àõöå´y6ÿÕª‡cJ5.&+/BV€¸é  ç¹”vÃkª÷÷ÆRÖ•‹âF­à!¨˜»¢)ºúK»t€K2{  k µ   õ · ‹ x s˜Œ~…³ÕìŸ'cšúŽe/ íʾb­Ù1óí'ê]Îw™Ýb÷-yägIp˜¸Ïá/q³ê*?"ð˜Lõ–:ÿàÿ¢ÿoÿ_ÿOÿPÿLÿTÿTÿvÿ´P®£€6ÿçÿ¾ÿºÿîS¬ô0ÏOÿÊÿ…ÿiÿÊPðDû’1à™$|³ÿr!™’v¾Nã K Œ o Bñ¨€†ôü þë…ý6n½!Ì~qz…Œ7†ß•¼ø-'ïš•â˜[à9ía£í÷jßYºé-kÒE¥÷ýö¢QÇ,…é~&êáϼš”¦ÝI„‹})ÀNý̉ur°[‚%‚ÿÄÿÿÿŒfJVLcÛ—cï7_³x7žòo|®‰l;ô8AAüµqùrÀV¥P,X‡lÿl#nxrS‰÷âôñ¾ûÌYX³&±2jzCߣ£®(Ǭ ” G Ò õ $ ñ ·  Zw¡‚IÿÙ¡]د‡zz{|R§@¥ë*dÿë4¼²,ÿbþÅþþòÿœXÏØŸˆÐŽfPvÿ£nµ ’m†š‚ZGq·Þòñµp¬AÕS½7¬Š®OT$éÊ})oÞùc š – G f … ¨ ø Œ * Ü“ wi0½a- ñ e;6qª‰-R•m8ŒÅÉÕr'ìТ\ ¥ % ‹ ò g ä . á • ‰¡ž[æñ£†Æúo~ÿÿÿ9ÿ÷­Ún,O;¤¿ô@³ZˆÐ4© Xmjf‹;ZWÆ]®Z–@íë!lxjNë·oU Gê   É=åo§_Òl xÙùþûX¸µ¼ß팔ªEÑú?Š@óá9³ÕþìÍtsŠ Á ÷  , þ³8­c&šd‡“%:*ÿQÿ/ÿxwxÿåAŸ!4ŠñAgj‚ÓM¿=Pq\¸¸‚Má±m-ðáãV ¸‹’´)W÷ É R9÷B¬ëÍò %Öióiî |!! """¤#4#Ç$B$Ø%Ž&e'*'ù(ù)³*<*-*)‹(ó('>&O%G$q#¸#o#E#Q#B#*#."ê"„!© Ù”4~Ás#Ýßü´  ×&ÔfLWç,Ó(˜¿F JÐk°Àä\‚]8J¦…á  ]«ö íÙÈ×Ê‚5$^ÅøhÞüXB  î~‡¥†ÖF Ö":#å%J&v'('Ì(L(ß)š*d+[,f-X./.±/(/V/i/‹/Û0i0ã1’23C3È3Ç3É3a2ø2;1}0‰/{.-Á-a--,ñ,Ö,Þ,¸,k+¿+&*%)'Ž&$" ùOâä꘢} Á ë w Š=stm`„–tÿÄÿøŽfa0FX9ÿ/ˆ ‰ÅÁÿð=}ŠwyЏÂzBC¹@ Žšè n -™PŽua#%´()Á+Ð-«/0é1Ý2@2­393ñ5 607„8õ: :ð;#;F:ï:}:"9ÿ:N:˜;L<===¶=â>!> =ü=„<ø<;:*9[8ä8‰8[8 7É7©7p76|5õ5>43‹20ï/,À*N(&$º#”"”!sÒ©çâûªÏ @ w 5SâžW]ÒLÿö"®+!ʇ‚Šuƒ³‰Ç¸ÿ³ÿø (EHbV6{‰cž ¶· )°x ¬%(ú,¢/x2@4‚6ú8è:¾;È<˜==ˆ>J?3@rAºCDˆE~F*F&F+E×EfEE EvEåFÈGâHòI¹JJ•J¸JØJ…JISHwG“FÍFFEÝE…EDzDCŒBàA÷A@?:>W=“#´(n-T26q:ž>\BTEÀIKyM°NõP*PéQµRŒS}T­UêWLX¯Z[m\`]]0]‹]Ÿ]‡]Y]I]r]•^ ^µ_x``„`ßa aCa\aƒaea`£`:```_Î_S^ô^5]Y\Z¤YWŒVT²SYQýPOMƒKþJ+HPEëCN@l=¥;8é6ƒ40T+å&ò"‰´2g ‚TaêÂwÿâÿÆ ÿôÿÄÿ—ÿžÿà"6_ Ñ › “ªøí¦5û Õ ¯jŒCn!:%d)É.Ã49 =¥AžE¦IeM~PÒSÊU‰W-XYY½Zƒ[f\W]†^¾`$aŠbùd‹e»f¨gg‹g˜gwg f³fjff f8f¤fÿgGgog“gÒh$hŽh»h¨hZhhh7h}h˜hohXgØg>f'e cb=`«_ ]Z[©ZX„W5V!TïS¥Q”O=L4I FCS@Ã>|;_7‘2·-Ú)$á öü¨‘ g 4ríá¢V;ÿâÿµÿÌ *TÃý á À Ž E)DŒ«×/i"¸'>+@/¬4¥:&?±DµI8MQ3TíXÓ[Ÿ]ö_`G`ãaaýbŠcTd6ehf•gúiajæl mónöoBo ono n|måmOl­lalHl‰l¼mm+mqmÛn[nço%o$n×nŒnnnŽnÑnún÷nünªn>mql£kŸj±i”hige d!bŠa1`6_E^>\€Z{W¶TõQõOL/I‚F?B³>%9`4,/*Z&3!éÇ’Ô ¼ ™æ³š|²…ÿÃÿ¯ÿÜ3 ²ÒpMÇNüÆï.£ñ!l%>)Õ.=2³6Ð;V@}EÞJþOlS–W+[^`a†ckeežfkf¼fîfÿg%g›h.ijk2ldmÊompªq‘q±qÖqwqpioÃo+nnSnJn£néoMo¢ppžqq™q«q‹qppHp&p;pHpJpJpo¼o2n¦nm²mDlÏlkgjYigÚføf%eCcábL`*^ [­Y?VVSaOêLŒH‰Dp?ˆ:04è0k,#'r"VÑæ¬~ & ?ù™Àòó{ÿô77.2+¶)³'$¸"÷!C æ Æ""#l&(Ÿ,€0²5{9ã>UBÁG}L¦Q™VYâ]»`ýdjfïi8jgkkôlllYlk¿kk®kÜldlémÀn¡o¿q r r¸rÉrèr£r[q×qCp½p:p)pLpÖqQqßr_rÞsusét\t\t/s s rrCr>r@rBr5qöq¢q/pºpip>p4po÷oÙoonXmãm9lzk?iñh0fzdpbŒ`]fYúVR NíJoE`?å:Ü6 1U,V&Õ!NE DÑÖ8¨ó ÿÆÿ¼/:7¤5’2Ý0L.m,³,k,U-À/ 1Æ4¯8Ê=A’E¸IäNMR¾W?[2^ÔaØe%gÏjXkêmXn nïo9ocnðn[mªm*lðl²lÃlÚmKmÄn†okp0p¹pèq*q-q$pìp¦prp?pvpâq¨rcss³t$t¡táu)tüt sés*r—r:r3r4r5rqÑqupùpupoÖoÎo³o¿oãpp2p$p&o¹o(nmk©j?h½geéda1^ ZTWSOO8JSEF@;F6z1”,<&| ܺ à šÓVk­&93Q\C}A7><;\9N7‹7X758«:=@sDÔIM{QU|Y­]ƒa"dg i€l-no»p€qSq¯r:r7qúq0p`oƒnÈnHmÂm„mKmkm‡n n¸o„p)p–qq0qKqKqWq{q‘qór€sPtt×u|uÛvAvMv]uíuGt[strßr‡r—r§r¸r¯rpr+q¹q3p»p^p;pp$pFppØqqqqaqpCon€mwlvkÈjÑiºg§e9b_8[íX«T~OëJ±E®@¦<6Ç0Ð*i$fÅ í³ ÍTEɯo3WdN'K½H¦E®C¥AýAåA²C)DÐH KvO¥S©W—[r^ÞbPeg¬iÉl1n6p.qZrJr™ss>sis r}q‚p“o—n¢màm)lÃlYlMl5l¡mIn9o o¬p:p„p·péqDq½rr›sIt!tûu©vDvvÁvv]u£t¶s™r‰qîq”q·qÙqþr qÙq§q5p­poo n’nFnmïmØnn_n£n¤nDmæmflél~lGkçk†jZhçf™dVa_-\X™TObJLEêA;‰5-.È(i"E¢¿Þ O $ôõöûÛ¢X»V.SP NL‡L†LTMßOÚS?V…Z?]æajdüg×jgl(mÝo\qFrÕtt˜uu4uouFutQs•r‰q}pTonm1l¤l kÙkªll¹m¢n`nåoVo”oÀpp}qqr7stu!uÙvxv—v³vMuåtÿsòrÁq’päpzp¥pØqq>q%q p®pOo¼o(nwm»mlsl kkxk«llill¡l¦l·lÜm&m?mLlµkÿj‰ige@bî`¥]*YTLP$KgFd@/9‹2€+ê%°9rÃa .Ws¶ÿL¼`Y^[;XµW"UÇUÏU·WCY`\…_6be-h!km8nÜoÔqr;s»tÞuŸuÑv5v2vu†tæsôs qýpµo-m•l9k j[i imi>i¯jWk@k÷lˆmmmándooæpqpr’sÌtöu±vOvLvEu®ut rêqŸpBoUnªn¦n¿n÷onÂnvmìmnl¼lkiùhÜgÝg(f]f ff ggÉhgi"iïjÄk§l9l³l•llk«jåi¦htfÝe™cJ`c\VXœT.OîJiD8=,6…/÷)e#¥Ø ó Vˆø¥g’e³c„a¡`|_b_g_j`ßbåe”gi²l8n™pÔr's sttBu'v!vÑwKw^wªwkvØuÈtæsâsq³pmùkÍiçh9gIfff2eðfUfàgØh·i«jžk‰lUm:nKo|p‡qªstOu‡v/v¾v”vcutºslrp€nÌmˆlŒlYlZl‡l~lkhjoi‡hzg…fPdÕcZaÿa-`p`_`T`åakb…c½e[fýh’jk4lRlÊmlÒl lkˆjµj=hÜgcÖ`³\¹Y5TUN´GÄA:$3s,·%¨ óSjÿiÍhugYf¯eæeífgbi kl…mûoõq»s$sÓtXt¬uWvv•væwKwCw@vou5s•rcq/pnGl(ifòd¿bÃa±`¿`‹`*`z`íbcQdõf›hNiÓk_mnÖp~rs±uvJváwgw&vßuétîsqqïp(n:l—k/jyji¯i$hfÙe6c›aù`‰_].[wYÔYXqX·XÞYZB[µ]k_Òb>d©fìh¿j¯kÓlŸlµlùlðlðl£lˆkªj˜hUeéb“_·[—VóPÉJC¹=O6Ž/U(%!$K¨ Ói+mümYl»lBlkŒk§lm2n‡oþq rs‚t£uFuhu¬uúvxvåw)w1w{w+vus/q otmÙliÂg da7_][ý[Z­ZZ)Z‰\]¡_õbAd²fòi2kmõp?r-t!uvÚwow÷w¯w`vWuBs®r(pZnnljËilhJg3eìd6bi`A^[ØYÊWÍU’S¥Q·PÍP1P·Q1RlSzUYWgZT]r`¿cÖfvi3klilöm±nnƒnnÌn[mèlhj¨göe¨b:^YES¡MFä@8å1@)¤"²zÍ œmÿmÁm¨mmŽmXmŒn op&qIrLs2tCtéu'u!umuÈvv@vZvvus±q:n³liÓg•eb=_+\MYœWÃVU0TPSùSQS‡TUÊW¦Zi].`Ac(fi!l nùqksÓuuw w¶xVxwÞvéuçtisqLo‚mlkKig!ebÁ`4]§ZûXBU©S.PïN‰LŒJIzH°I7IÒKgLÑO QMT…X\_ÝcLfÐi[k‰l´mýn·oŠo×p!oÇoznZmjùif.cp_?Z”T¬O/HÉB:“2ð+‘$whEÚmÈmÝn0ndnnˆnÉoTpDqrssöt³tùutýuMu¢uÓu¸u½u0t¶rüp½mujVgd%a0^ZâW¸U&RÂQ7O©NÚN MåM’N+NõPåRØUÆXÛ\n_ØcIf¹j mwpjsRuEwwÔx~xGx"wTv}u#sãr!pSmçkXhme¸bÁ_™\`rd¶hjîl½n¦oÐqq‘qúq©qhp…o£nlvj1hFeaf\AWlQmK9Cæ\ŒYU‹RŒOMKJ;HÐHGƒGÀGúI JLMÒP¨SÐW·[x_Xc fàjÎncqýt‡vÛwÐx§x{xkw´wuÅt rÓpønCk`gçd¦`û]XõTÄQMfJ¯H9FHDB@ >Õ=Ã=Ï=Ë?@yC;EüIïN RÛW•\Sa2eNik´n`pqØrŸsPsr½qÑqoßn}l¥k3h×fað]ñX£S;LEi=ê6À01)†$ xl2l³mkmàn(n^n­ooËpq_rms*szsysÈsýt5såskrMqyo¨mšj!f[aÑ]€Y8TßQ MWJ†G¿EÞD BîA A#@ÕAuBCeD„FMHJçN>R–VÇ[4_~cÕhbl¦pútvýx5yAyxþx8w…vNu3s`qn’kggcc’_2ZªUÆPÂL)G«DlA¦?Ï=—;Ç9Ý8Æ7è8 7ÿ9:;<è?ÄD HkMR‚W½]KbXgj…mêp rist¥t“tFsYrÅqÚp¶oGn@l jÇg¨d_é[PU,NGD@U9È3-i'–lUmmËnOnšnßo+o‡pp¼q~rVrÛsrús]srsSrSq5o@m…jÆgÏc¢_AZNUxPâLLH‘EB”@><<;:R: ::æ;º=>?¹AMD0G†LP“UŠZe_sd¬i­nÐr¼vbxyžy†yxx†w³vau8seqnkig/c"^QYWSÕN0HÖCz?€<: 7£5ù4;3r2ä323<44á7#9¶=êB=GtL\QÌW°]{cgkk¤nˆqws%táu=u9t]sÞsr)qpnÃmƒkJhîe+aj\VDO¤I_CH=71çlÍm©nƒooko¹oûpEp³q>qÓrlrµr»r—rúrÓrOp‘n»kæiGe¬aå]XR’M-HUCœ@ <¼:o7ñ634„3–2‚2\2|3u4R5¡6Ç8„:"= @aE"IÞO]TÄZ~`Qfkìp§u"w~yŽy§y¸x¦w¶vCus2qin‚kUfúbË]•XQíK¼EÕ?ç;S764¥1å0Q.Ð.[-õ.:.C.ð/|1c37};´A EöK QºX!^zcïi$lÜp‚r¸uuêv=uzutXs©r¿qËp²oìn‰lïjgbŽ]šW¹R)LFÌAŠ<m¯n okoóp%p\p‰pÂqq‡qìr?rRrVr$r_q°p…m×k gXcº_=Z¦UFO°J D{?×;n8L5G330í/m.-o,œ,,¼-¡.a/•0À2v3ï6–9’>)BÚH´NˆTí[Ua¹h[mäsË9ç5F20/-]+ü+¼+W+o+Y+Æ,-‡/ 2T6;?ËEdKEQÏX~^»dÁiZm¸p“s®u#v#uÇu’tît‹sØrÜqÁqp3o"lõjªfõbï^Y{T·OËK$FSnpoqp,p”pšp´pÎp÷q9qŽqÌqèqÙqðq¾qÞp¨nÓk3g¢bì^SXãSVMHG A=;ž7H3+0]-€+¤)³(À( ('¦'Ë(+))Ô*ë,-t.Œ0½3B7©ÿ9…4]0»-2*Þ(\&å%€%:%>%¾%Ç%þ&n':'ý(ê)Í*Æ+O,Ð.¢2Œ6µ<÷CcKR©Zvbxi]p)tQwòx«y,xw%uªtHr…pýn«l$h[dÀ_zYR€K•E>À9Â4þ1©.,*Œ*:)¼)„)(Ä(~))o+^-©15w:¡?ÎFL©S“Zz`rfj5n¡q€t'uu¦ugu½u¡ut/s±s;rìqíp”n8kÆháf>cd`T].YØoRp6p¢pˆp oÓoÎo×ppEp[p-oçpoïoJnònãnâooSoZo n‘nÕn"lÿi|e|_YâS+L9E =ç7¿1¿-š)Ï'¸%‚$^#"Ã"†##µ$V$m$S$u$å%~&&ž&Ô&Ž&é'm*#-0396ABIQvZaôjoÃtøvØx/wOvÛuˆt1r„qocm¾kNhÿe`fZ/TMwF¿@Ç;372Ö0"-»,„+,*Q)J(§(('õ(Ù)º,.y2k6N;t@§FåMjTZŠ`#e¥iênLpýs.tu.ušußuœuZuuLut}sq½p'nÆmCk–iÌgÛoJoÉoÎo[n¤n3nn n5n~npm÷m2mSl;jofapZíT”MWEÜ>—7x1Ó,](ü%î$Š"ò"W!½!Ü""#8#°#º#Ÿ#Ã$+$¸%.%|%\$Î$£$n&\(µ.14A7¾5ƒ2Ò0+-*š(Y's&ö'L''n'Ñ)w+X.¥1±6`;qBHÛP)Wj^d¬i®nxqskt2uWuŠuNt×u uIu0tÂtSsâsŸsMr¿r,qµnmñm™m'lkõk»l lzl©lk‹iéh¬eG`ìZtTeMZF>™7S1P+c'™$("Ú!À!®!7! ä!!c!ò"}# #†#û$Š%%z%·&%ó%¡%5$u%%ú)—-§4:[BIåRA[b[iEl÷oÝp-pÓpppo€o!nüo(nönÌlûjVfXbÛ^ö[NV³Q}K‡Ec@B<9#5Û2¨/+Þ(ã't&–&Ú&³&û'()k,.{2¬7P=ÕDlKïS‚ZÆaógžm3ppssåu&uGtìt:t&t%%Ù&£'€'õ('ò'¡'ø(]*,é1Ë7!>‹EùNVl]ŽdShCk™lemYlól|k«kjÐk kjkðk,iŠf˜cåa^è\XüTCNÏHöCæ?;6Û2B.?*F'í&%Ò%%ä%Î&;&Ê(T)q,•0s6Ì=0DúLÒTÇ\žccjfnãreshtëtêtrsZr¯r[r?r)qœqBqoqÖqØqÕqúl“kØkhk7kj‰jZjøk®kékFk?i!f`^ZS^L˜E…>#7O0‰+ª'#%#|#E"—"!!!. É À ä!:!J!–"$##Ç$¯%¯&¶'È(‚))/))N)d+ ,ê1n6‡=¿DÛLŸT¢[“b.f)ižjŸk¸khk jgTfñfnf?f~gAhh hÐhjh$grfÐedÏb^rXaR?KFDÂ>1730ã*—&†#"!;!\!!!!Ì"#Û&+0G7î?ðH·PüX­`âg!l®o@qÄqÈqzoænhmUmm lZkÇkØlcl‡lïm„kŽjèjÃjÑkj¹jÅk”lXl±kðl id7\ˆUÑN›GQ@ 82$+'É%D%-$˜$ˆ$M#ÿ#–#"ƒ"$!Õ!ü""ã$&&(E+. 1O47²;=q? ?³@_A›C4FIJM?PêTÜY3]`Ábùdâezfff2fe—ebef6g#gùhshsh“hQh#gDf×d`a['TùM¥FÊ?Ô8“1è+&j"w!êûžµÈ f ¢"R$A(Ò-¿5D=?F$NoV?^–e4kMneq>q[q2ošn l×l„lxk‹jÏj¸k7kekël‹kÆk?k)k$k;jók kÞl›lòlkóh½c™[ÉUMÅFY>é7L0Ù*G&¢$B$N#Ë#È#£#p#"¯"O"!½!é"#V$Ï'‚*K-Õ1A58ð<º@¨CeEkFZG]H©JghKi:ii–i*ih–hefJcˆ^XDQJ'C<5q.V(ð$3" 8ó`]2€˜ Î!ì%e)F07¡@‚H³P§X÷`g!kƒospXpæo˜n>mlÆl°k«j¨j'j]j|k+kÐl(kÄk¦klk@jájûkÈlwlØk¶kg)a¦YÊS KÓD-<4».r(5%##\#"ô"±"e" !Ù!Ó!ç!—!Æ"#×%Ë)n-e2>6›;^@£EÃJËNNQ"R™T!U­W«Z\q^’`=aÇcËeÒgáiiÌi˜iuihÞh¨h\hg½gìh™i¢j•jÞj­iæi‹hÉh]f6cx^.X|QmJ»Cò=;6×/ÿ*ª%í#Ÿ!¤!. n 2ÊÓ» ˜!8$ 'C-˜4¼=EœM˜UÊ] d`iYmço[pWo?nlólélûlkjŽj©jÂkwl!l^k÷kºkMjîjuj…k?kÝl[D IÌOUSeVìXöZë\œ^ßac-dše®f{g«háj jÖk9kkj÷jÏjžjwj[jj3j¤kbl0lll1kNjÅi¶hïf…c¦^`XœQJãDB=¿7Ÿ1 +â'>$Þ"Ò"2!M à H Í M m"™%)+1Å:qBzJ…R¢Za g"l=n*on–m•l•l¿mlTkojík k0köl°l”lk³kjwiØiÏjejëkDiþhÛdž^ûWNPÄIÄBB:š2»,w&}#¼" ""O"e"M"@"/"L"Ž"à"Ì#,#¡%‘'¼+É035¶:¹@OFhL‚RxW[V]ú`db5dªf´hliAiðj7j¬k&kÄl0l]lWll˜l—l…lƒl~lVl^l¦mm§m¥mFl$kBi¨h:eCb\¡V¶OÅIIC <ã751+,n(%É#Ç#"!q ¼ ^ò %ã!‰#ˆ(î/Z7ï?æGýP W|_Aej›lîn“mÙml-l…lûl{kÂknk«käl¯mzlÑlKk¼jáj iAiiiéj?h÷g²cR]œUöO{H’A"9~1Ž+H%k"Ú!H!Ó!±!Ù!Û!û" "w"ì#f#}#û$„&Š(Þ-1“7B<ŽBŸI7OÜVO[l`;cMfgäj_lmimªmím¥mHmmBm—mšm…mm®mÜnn*n mÚm½nnynþnÊn.l¡kTi,gc•_òZˆT‹MÕG¦Aæ<)6ñ1r-(û&œ$Œ#¤"!É ÷ víÞG r!é&ç- 5“=|EžM£U,]cJi'kÜmØmXl»llml¯lkâl6lwm?nlúlekÃjÕiêih¿i ihi¼hwg&b¼]UbNóH@´91*À$ç"\ Ä!H!%!R!P!|!¿"B"Ö#l#¥$6$Á&¿)"-R1˜7JQ¬YŸ`:fÅjMlîlÒl‹kðlˆm!lÁl>l]lâmm–nSl‘kÕkIj²j)i^iijj_i g±cY]ÊVjP/IoB:k2n+õ%í"ü Õ Þ “ § 8  ¥!,!Å"("¯"þ$b&F)Ÿ,à1&5,:t@5GN(TZ$^(b/ebik«mÕn©oyooÉoïpmpÌpßp£p˜pGo¿on\mÌm?lßlñl^kmhÚeØaÎ^+Z-V@Q´LßGœB=k96€30,ó*t'è&8$Õ$#"[!¢!1  ›ð Œ!%*2Ö:LB$IêQrYF_ÉfKi×lmlRlkšl:lÕl|l lKlämmxn!iàibi@iDiNhàhÂirjj‚iOh.d^ÀWsQ5JeC#;{3w,Ø&³#…! ¾ L eúÇÙ R Ç!S!Ã"<"g#f$Ù'*N.16Y;gA»HO)UY¥^a®e²hÑk¿mEnƒnÊo+odoæpGp~p^pJoäofn®mñmOlÖlˆlµkÒjOfËbæ^YÔUcP÷KõFk@ë;š7 4Q1ò/,f)î(&($æ#Ï# "7!š!)! È ¹ ! å!À& +Á3ð;IB÷J½R7YÜ` f;5î.¼("$_! :l¢o‰· " ƒ ù!‚!æ!ã"1"ß$j%Ã((*µ.Œ2J7u=CŠIàO»UCYã^…b{fÆiólÈno:ouoÏoöpqp‰p1oonªnmfmlºlék8huc]_W Q¨L[FÖ@©9w3X.`+ñ)Û(½&á%;#Ô"Ý!Ò! w n2R¶Èðˆ Ð"Ÿ'Ê-þ6=ID¾LªT&[†a f€ij¢j3j+jj_j±jpjak kÛl l(l§[Œ\ü_@b dÀflgviCjlkBjjZgccC\VNÀG©@ 7¯09)L%!e FP’m›Ö 9 ‡ á!^!²!ž!¸"&#<$%ß'ï+8.O2Ã7=‘C²IëOÜUZ^cegWkm5o#o´pp p¾püp¶oîoanÄnmumXmm jÉgca2ZÆSÑMåHAï;;3p-[(Þ'X%ç%S$"Ä!Ã! -’ÑV:zñ3Þ m"°(=.•6Ÿ=ÇE:M@TÈ\akf¤häj/iœi¦iiÛj iÇiÎj†kak•k­l%SýVœZ#^MbdífÃi¸7´/Æ*&/%U$N#÷"þ!ô! RwàyNçÍ un«{ c#(ý/l7b>•FN$U¨\ûb$g ij iYiui|iŠisiiiŠj:j[jijÃL‚P2TåZO_LcSeýi#jîlxl/lBiÏfß`úZžRÃK›Cò;‘3¼,8'"k …û ¹â X~µ  p n Ô!Š"#*$`&‚(¡+Í.ý3U7Ê=@BâHÎNmSãY ^ÌcØgškLm^oo°pÌq7qJp¿pSoÌoHnêon’nCkf…_*WéPhIñCƒpNp±pÌqp oIkof)^TWO|H0A 9t2Î,($%I$Ò$ #¸# "*!9 KkÇ4×K.\ûý :$6)10£7Ô?GNmVB]cÂgjœj¾j¹iÜjiŸh4fdXb»`õ_`]æ\Ô[Ô+š3q17‚2,=(%Ù%8$h$#@"[!~ ›¡Ù%ÜÇÞlr 6"Œ'Ú-Ò5„<¤D KRÞZ|`šf}ikkŽkUkj¸j–hÞf aë^~Z×VÄRþO•MJ¨Q'81y;_E,OqWì_«dtigkblàl kãi¼g2bt]ÒWSP‡H“@c8Ë1Ã,m'#qüC^ž÷yô x ê!w"'"Ý#i#ù$‘%r&b'²(‚*ª-L2J7Í>¶EgKíR*W«]Maðf¬i¸lSm9nn+nÓnÇnºlêkfv`ûYbR JvBñ.:G6c¹è&Ú0Q:^ENÔWï^[d¸hk)k§lHkj&g?d^½YiR\J×Bò;s5.à*$%"ÍgÎ ;ªõ K ¬!!w!â"T"Ô#s#Ò#Þ#Ã#¿$'$x%É&ÿ*0-è3½9Æ@”FüM2SŠYG_!c{gziŽkŽllðl;kohze|_ÿYæREJ¿C«<ì7¼2ß/]+\(Ø'&n%b$‹#Ú"ô!› A*§/@@Èû €")&R+02 8‘?ÂFðNU‡[×aÝeÊiªk!l!krk¢j hcG]ÉV±PYI‹B ;4Â0C+Í)_!*T4>‘HœR$l$(#µ#" èάµQÚª"!$z(â-Á4b:ëB%I]PcWƒ]Zbäfxj(k•l–k¤jýhøg¤c“^5UóMýE<53B)Õ!² e <§Û!>*"4‹?WI3RXÀ`e iyk:mBm¬5*+Ë"=M³ Ü V (x·b#i-w8BKØSƒ[ÆaÝgtj/lÅmmÝl]jCf4b›]¨XfRK¸Ea?H9ü4¨0{,^)¸'Q&$”#Ý#g#A"¤"J"Y"¼##"Ð"h"7"E"D""Ÿ#$³'K*=.1„5—9¼?E-KqQ€UµY|Z¡[ÜZ^XÐTiOŠHÁAì;$4­/­*Ù'í%=$"í""=!ù!g §ÞTöÁPý"6$’(´,Ø2°8â?ÿFÕM¤T¼ZØ`•dh”j½mml[iùh‚eTaî[pSÿJjAm7õ.5% æ â ‘§ ?Ž~›&@0´;›EƒN%W>^feUi*l\mnemžl8hÍe¬aT]WªQ°K\Ew@G;26Ë2.m+K)d'.%ð%$Æ$#±#k#k#}#r#*"¸"U"!Ù!ó!ù"¶#v%p'Í+-ÿ1¥5J:a@GF¯L÷QnUUVuWªVT‚PJèC÷=6ƒ0K+Ã'g%"ý"]!¥!r! Ò p µ€>aS d!¶$¾'Â,˜1­8?>çF M S¥Zs_Ôd¯g¶kl™møm k©h³fÆbÍ^VGND.:Ð1A'Kdñ± U jÄø ˆ•­…),3ý>)G”QY a f.jIk‹mtmIlÔjTg·cé`›\/WQPKËFÐB?>9S5?1²/B,Ž*Ü)y(ã()'¬'&§&@%è%‰%!$¦$:#»#¯#È$%-&¾(¥+j-Û14;8Ü>FDbJ}NðRÇSÏTÜS!QjLÝG±@Ñ:3¾-Ñ)Ê&$N"Î"y!í!©!3 î Ð à Ú á °! !s#B%N),Á2"7Ù>®E`L2SYA_Qc¨g¢iÙlƒm5myk†iŽfc:^XOQF¯=3Ÿ*_ äëq Cäþ¥ ÿ“ ¶ÅÅ!‚,(6š@ÚJÌSu\©ch1j,l†lámlj f²d`¢\»W¼RmMIHìE @š<8›5Ž2v0c.‡-Œ,Œ+æ+2*u)†(­'ù'“':'&z&b&›'„(B)¨+C-n/G1Ô4Y8b=+BÙH¨MPÀQ R`PPNRI±D„=Ó7%1%+‚'ú$Ý#¶" "a!×!~! í!!J!H!h!m"Q#R%î(²-B1í8>cEJKòRoYI^ød/gxj»lJn6mömjg”ct_YQœH?5¶,!#8a~ Î_;¸9.}.X ì$¶.Ï9YCNLVUù]Fc¸fëiïjßl}l8k.h fŸcçaI]wXãSïOµKÿH%D…@¼=x:L8 5ö4­3^2y1¦0Ã/.M-C,Ï,˜,®,T,c,Ë-á.â0Q1Õ3„4Ò6 8;Ó?ÏD½IØM²QQ“QæO™MmHýD=ô7·25-*'Ž&¸%Ã%_$¹$I#Þ#Ë#Û$#æ$&$„&'¾+ .v3“8è?GE‘KüRNX2^jc+gGiƒllümßlxj’fËcµ^ÉYƒQÈI}?÷6ô. $Á¡ì_ Ãä‹"1’¥´{'1Ö;ÙEEO!WC_cÇgœiktl1lvkiwg1eœc _µ[SWSOfL*H¢E^B?‘=a;ó:c9+86ò5¦4u3C2«2^2‘2q2Ä3Y4y5‰6Ô879v:6;G<…?0B{F³KNNQQ=Q.NØL·H¨D)>8Û3÷/-"+*u)Œ)(w('§'u'H']'/'Ç(*Ä,ð0Ø5:Æ@{FªLR|X ^ cpgjkhmjm–mCj¢gïc—_çZSQJ`Ao8 /&†’A¡ MÌ8¹öÜ›î@‹P ~L 1*R3÷=cFÃOW²]ÏbãechYiÓkzkwjçiEhRf¡d²ax]ºY¦V,S$PMJG’E‹D,B›A??Ü>¬=…<Œ;i:²:2:E:8:º;f<„=>½@AAŸBEC"E-Ã-¼-¢.‘/ª204£8º=IBìHMMÆS#XS]ðbzfŒh¶jÂk@l@kHi eób°]èYQRzJ¸As8¦/ü'S{lI ÍvÌÚ3袱”¹ãa ]‚"Ù,(5Ÿ>xFÁO×WH]ðaÏeAg+iþk’l˜kôk8iµhÓfúdr`â]hZ WTiQ OjMsLJ¨IbGëF”E\DfCYB£AúAÑA˜BBÐD E)FQG”HHðIaIþKM™PFS!UVhUìUKS9QgNZJßF½B¡?C<@:›9)8˜7ä7v7 6Š5Ä5444—5À79¿<„@ºEAJ}OYTNY“^wcsfÈiwjSk£kXjüh|e~`õ]9WïR*J/Aš8V/Ï'݆VS {¢Ó”ÑüÊ…£å†OÔK Q($s-g5=cEóMàUÉ[T_¿bXeÝhˆkFl"ljÇjwi™hofc_¾\ðZ³XsV¸USÀRQPDNóM±L¯KºKJZIûI€IÂJaKŸL¸MåO PP¬Q.QÃRòTxV{XÀZ5[&Z~Y¿WÕVSpPmLýI¢FâDSBÜA˜A#@©@Y?ï?K>\=˜==7=U>|?³B?DôHÔLÇQ;UnYÑ^ÁbüfÙh»j2iõjWhäfÕbÌ^ßYÔU[ODHS?Ô7_/ ': &ˆZ µ -°ÓÏ%ì4çBŒð̇ñK ‰Æ?n$Ã,a4;×CáLÑTAZ[^aÕdÞik¿mAlÎl¦k×k|jMh‰fc¦a_¿^p][ôZàYÙX»WVUU;T0StRÂRaQËQÝRGSiT|UÂW XXäYuZZá[ó]U__ÿ`ƒ_¯^Ð\þ[KXãV=SYP‰NBLJÝIàIŽI/HØH_G¬FÄFE‹E¹EÖFíHJ|LóPhSåWî\` dRgTiÇjYkjiDf1bX]XˆS MŒF7>5P-;%ô¬Dq f!Ú;ñÊ»í5Ñ!fغÓña+¤ Ú토#–*ô1Æ9DAíJCQôWF[“^Ëc…gzjÕkìlXkkŠk1j¶i†güfOedc2bga{`†_¦^º]±\ª[£ZéZTZ Y„YsYšZc[7\U]y^l_$_–``•aHb;cwd3dcÔca„`^[ãY›WSUqS§R«QîQ¹QlQP OýO:N¢N"N3N7OPRTVéYÖ]K`ød6gNhÙj i”i’g—e `p[qUŠP­JÀCÝ;™33+G$%mÊ &kNÓÛýÊùš*A”¶Ä^Ýõž ùå–Ô"(f/r7"?“H™PUÈY©^LbƒgYjzl‡l‚l—l3lclUkèkjLii/hÁhgGf}e±dçd)c^bÁbeŒff¡fúfÛf¥feudÇdDc¯bêba]`á`x`[`S`L`8_Ì_^\]·]‡]h]í^t_¦`óbµd¡f>g‘hhh;hHfEc‡^1XqQØLaFb?à7ì/&µÀŒW ;“‘/œêuöá…Xw!ÿùG•P ÿϰ2­] 4 €Ò·q$*b1Ù:LBûJ(OîTX×]3beAg—h5húiaj.jàkMkŸl+l°m5mVm?lÚl†lIl7l&kñkškTjòj…iöifhÆh=gŒf¯e½dÍd)c‡c…cÂdodûeŠfffâgHgàhDhhh8hgãg³g g¸g¼g g&fqeÃeMeFeHeŸeðftggšh+hmhšhZhˆgwf@be]™VôPãJ…DÇ=á5½,Ö$*fHE 4SV±—ÿØ$’Ö•7E{/ÿíTgJÿÄÿöëÓ6B ÁÊ,w"'¤.¦7?;FFK0OŸSEWù\_ãaîcacÔdÆe¥fqg=hi j%jêkskqkVkk,k%jõjniêihMg>f)déc±b_`ú_ž^9]4\$[ñ\\ý]Ü_<`ªbFcÈe;f×h iikiÖiújj:j‘jÃjÇjoiõi†iXi^i`iJi$hÃh]gÂgfeeßedÇb½_íZ‹T§MçHMBB;Ë3ß*â"dþH Î {WààÌIn$„©”OOeDÿçÿúCZÿÑÿÿ¯Åø‹-U Â7…!°$;+3;/AÐG,J¸N›R5VuYü\ø^“``Ùa›boc†düf›h iSiÖjiÌi¬i3hªgÄfåeºdca•_ä^4\~ZËY1W€V5TÕT‚T}U´VÞXó[4]Ó`BbŠdófÏhsiTj*jŽjðkHkÚl`lÅlëm mm#lúlÇlki©h3fÑe¾dÇd b[`‚\WäQ¹LEñ@9Á1Á(ÅÇ¦È èÐ†ËÆº—fÁ¦V17f5T?ÿùÿÏM ÿÖÿ|ÿÚÜCª×‚ ZŸàH î'/.¿6H<ÔADkFïJˆN`RSU6W€XdYYZ \%]È_jaaìb•bZb%aQ`_E^\ž[%YeW•UœS©QÂOãN*LOJäIdI IJjKÌNPQ T2WYÐ\¢^íabtc¶dƒeYf4gIh[i[iþjŸj±j¾jishf_dPbA`™_‹^z]fZ»WgRELÿGQB•=@7|/î'9´4! ™ ›Ç62½–ùd.^¡Äƒ9N{Nl(ÿÙÿàC'ÿÿ'ÿˆvñ³ W "sº›"e)Š0ù6Ö;"=v@BâF JPM¬O†P¤PçQ¢R±SíUcVäXY%YuY¹YXgVõUˆS¤QÐO¤M_JõH›F^D%B!?ù>^<°l: 4#-$Û’Í' •Ÿ×ÀRµ5D" =X§¹˜T3v±ˆÿò=}o(ÿäÿÔ+[ÿêÿcÿ,ÿšR4: Ï ÅDÂ$Ð+}0ò3ú6)7·:b=¬ADCáE…EéFG%GìHãIâJßKçL•MFM'LÚKšJPHbFDDAÒ?(<š:&7¬5s3$1y/»/V/60Á2d5G8A;µ>åB E~HºKñN QSULW‹Z#\L^M^þ_e^€]œ[þZ‚X›V•ToRPŒN²KçH~DB@7> ??‘@@ª@êA@Q?}=çÍÓÆÀ#%p'+()­+…-p/,0Æ1ß2ø33ó3ù3ñ3é4%4^4‘4E3Û2Â1¼/ì-ß+D(Â&7#«!p=«ólmê £#Y&•)ª,ß03M6‘9s<*>]@BsDˆFG¥H6HHG§F³EÙD:Bx?Ï=9¹6Z3X0Ô.¸,á)õ&P!$“ã Î Í’'ç%Ç«1ÄœØå‚:7t¼Â˜rQCS¢Æ“ÿ°ÿ‹ÿÊÿ÷ÿ«ÿ`ÿoÿòoR$ÿýæŠçÃŒ ý DFAsÙv¬Ö ©!Ã#$–&'‡()P)w)„)9)(Ó(›(!'¢&¯%Ã$*"T Ê“av&‘Ê x:"!%(+,-Þ0Z2Y4[6+8%9Þ;ª<®=y=C=< ; 96»3±0‘-*Ò(¿'+%Q#l4Š ý " =õÞPâ\¼däÐÿ:6ÌV0Z“»ªƒeVOv– fÿøÿžÿÿÅÿýÿ¶ÿxÿœh9.‹é¡ŠÚ (jªU­$ÿR¼(­ æ¦ü\ŒÕâê€è;ˆâx æ ž 6  " j–³I¤#Ä w"Û$û&Á(”*j,j.X0k1»2Í2œ2]0÷/•->*¥'Á$ù"Ù!: ݰµ±Ÿ; ’ ñEšGVĉ⟶dÛif™IKŽ‚~–d]P^q‹r$ÿÌÿŽÿšÿàÿúÿ·ÿÿ©E%ÿÝÿ„ÿÏ™ô+‰7Xp ù ^HhKrüÉпm=JÐO†Ý÷¹L ² ! ¿wtbšGñç S C õ×á8«ÿ äÒÍ!ñ#ä%ñ''Ð'6&ƒ$Ì# í•c}ÿ£ôW@ ) ƒàœ½ng‚1¶8e ÷^s3Äu]nŒt[f‰­NUTZ^gZ?ÿ¸ÿ”ÿ³ÿõ ÿÎÿ¤ÿÀe}3ÿñÿÝy³\†`ÂÔ²­  ï Î › V `  # ª < ¬  ë q W — Šp:úh´.’X0©6Sá f á Å Ñóá²–rt¸HŽ™éZ¾'×ÓÌ¦Û ¤ =ù‹©Hš›4NlÙdw9ÿï'fq4ÚŠo}}rI:_•®;ISdln[L!ÿÔÿ£ÿ§ÿÚÿòÿÆÿ¾ÿç*WSÿ¾ÿ­ÿù•4k±„ 3‰¢‹8ì;€ÇðëÖŠ/ª-¤—1ëaÿýÿã 6¬0Ýe&ô;°k ” yûD‹”¹Ï–ƒ ‡ ¤ Â ë µ1q¨tœ‰uêGÿòÿû{ö<*ö.esQÄ™…~bI3?i“ 1BSoztXH(ÿôÿÉÿ²ÿÄÿá ÿñÿêÿò x¤‡4ÿÝÿå`ò7ïGÿÊÿ¸dY9°‡JÙŠT  4X{›¡•yvj]UND7) ú*Hœí¡y›ºÄ±o B Þ  ­ » R à GÐLÚ« Ú.‚ë‘Û@ O£ðþåÔë<~GâÒÅŸn:&/Tq~}6O\e_UIPCÿÛÿ³ÿ¼ÿã!Z…”^ÿýÿ¸ÿ¾grÿtþàþÕÿ=ÿü‰¶¬RÿÐÿˆÿdÿUÿqÿŒÿ¯ÿÏÿÞÿÛÿÚÿî=k—Âï0/ òÉHÿö[®3ÂJ¹ `¢é5/#ðËq_v€ÿŠÿ7ÿMÿën¶¾v&%zµÔÝßù$cyZìÕο•^((M]]^8U^VB89ML'ÿôÿÆÿÅÿì$#.0=j‚v@ÿðÿڃζKÿÙÿ°ÿìD¦ØØÛȲ¤§³¹µµ {V>CLn»é35$÷׫i:%7FczšÂí5Le…¹ÿ5aJ'¼@°ÿÒÿ´pÈΓeUi—ºÃ©ž¿DenIôêèØ¶Š^6*/BHFH#AUYJ9/5;:ÿåÿÃÿØ '))6?LSdSÿßÿßn–yÿÍÿªÿ¶ÿú/_‚”¬ÄÐÊÆ±oXVUi¢¾×ûúÒ´Z7+21* ÿ÷ÿøÿïÿÌÿ²ÿ§ÿÒkŸ‡Rÿöÿ›ÿrÿiÿ¦ÿî8w~[-&Gsœ°¬™ŸÐL[Z7ûüÿïÈqK<6ALNH #?VYN8&#:= ÿØÿÐÿñ.ÿÿ?P92JK0ÿêÿû/jzWÿáÿÚÿí!JoЍÚ ôØÆº¨£ªµ²°¾Èİ›†sovy}{u}vN)1h’œjÿßÿ¼ÿêC¡Õ½‰I)9_‡‚w{жñ"936-à¸p_LITVC&?Q`U30F3 ÿâÿÚÿ÷ 3*@A54:HH1ÿö:nyNÿæÿÙÿÿ$^Ã)=5:-óÝζ®ºÇ½­©¬®¨˜…vsztju~vff^@%(>@&ÿøÿÁÿµÿËq§©s=%;lŠmi}ºõ&=4/ü ë ’ŠqWK< (=_hN+'2>3ÿæÿã:Q/(HVI6;La[, 7ds]0"Z“Ô<F5:0îÙ̵¯ÀÔÓÄ·®­«ŸŒvhina]q†…z{zqikhZ=ÿøBmƒl; 9{ª§€e^h‡™»ô%>5*ùïþ æÅ­«¤‡[9ÿý !#-KciT2&7-ÿïÿéCG.'BQTPJVW="'IfjP-@{Ì!JJ*,)öêàÇ·¹ÆÍÊÀ¯£™“‰sdhsliyŠŒ…ˆ„ydQ6ÿõÿçÿûBmxiG03Gl‘›ŠiXYVk‡»48  îÝØÒ̲†Q(ÿù)%$.Cei=  <>ÿìÿóGVA!MpmQEBFH8,1CW[I3!8b¯ ?B  öðéÒ¾³¹ÅÍͼ¤‡„n`gwyyŠ‘‘—ŠrJ#ÿÝÿÙÿîCZeX?8R}›Ÿ”|kb^aTbˆÉ7-ù  êÔÌÓÒ¾’d:$$ =M8 1@1 1RV?8hyjUNK>66CVb^PAJ[–ï5L40çÚ×ËÄÂÉÒ×ÚË®‘‡hXZhknu”ž£Œh= ÿûAPKD:0=`†™˜•Œ‡mee…µê # ôÝÓË¿¥‚\=( 1& '')@F+5T^C*0S|’pUC=DHOU[^abig†Ê;=C, êÓËÃÇÐÙÛÖÙÐ¹Ž‚kZV^ahq“›™~W5(04?QUC,#/@Zq€†Šœ¨«œ}r„µã  ,0ôÏ¿¾¿®†W6' 9  !$":K9'E][MEOhfKAFINOQT^mzt}¡Ö <<1ùâÌÄÆÍÉÄÈŶŸ„shafo}‰Ž“Š|a?*'48;CA1'-E\s†”§²¹¯ Žy™Çî)+𾙑†i:   5"  )#+88/&&0F^jg[X`r{nXKHIMMMIQf|‚‡’®Ñü)BN:#ÿÜÆ½¿¹µ·µ¬‘‰}x{ˆ– šŒs_M:0/2+$"&'3Hbt…—ªÊÖɨ‚”§ÁÙñþ×§|cYS?$ÿý )#    '05972.'2Rq€xj]cmlc[UPPSVQS_u†• ´Ïô9I9#æÖÌʹ´¯§’‹ŠŠ‹•›œxbXVQMIB6.*05@L^q‡ž²ËιŸ˜£°¾¿ÃÐç õºfC,  "!,!  -227;=9,,?_{ƒxbXZ_de`YUY^ZZ_sŒ¨¿Óéÿ+4(ûìåÞÙÓʽ±¨¡—‘‘–—–š—rhgkkdXJ?<=CHLJSjЦ´¼³¡š«ÃÌÆ¹²¸ÈãݱrO<%ÿóÿèÿò  ÔŠÄQýƒ$¹r..z9`®±„\iÁ_’9JbÂ"šŽoLúf¥œ D N 2½XÓL i Æ Ï ˜ i ) î ± œ  â ý þ õ ô ) _ ¨ á õ Ë ‹ M N | à , { ÅnÛIÙg$Ýn­öIm‘ÂñJ¿Eع…NêØq͹›‚à:³  Ç$$Aï§[ΓtožJy·Œi¡EcF_!ÃÄR¥Í Ê!Â!«!0 “!% éÙïÞ\ô š ¦  W B 0  ð ¾ Ÿ – ¯ Ê ê   ; \ ‡ À Û ä ± d  Ô Ô ÷ . 8 > U ˆ º  S ¼ ²s#™Ø!n¾0ªKí¨n)ê]¢¤¬È `Õá³Ù੘¤¿èè{6 æB\-@OUZD.ëµ)t»Þŧ\=ÍÓOÇçG;½ß!["U#J"ó"[!7 妟4­° U  Q ó C $ ô Ë [ 9 5 c È þ # 7 I n œ Ê ä û ã ½ q  Ø « º â  ü    3 O Š ½  « 1  £ È c ÿ¦‚ZH@ î„}ÐàæÙCiSi–ãÕ“|¯å÷Ç3ÓçÀ°p;œì¤p P.¾‰e’+,RžiI²¾‡Û²Ç7šÔºînW~Ã/ ™ Ý Z ó Ô  Û ‡ M бºù , m ² é ( \ ¾ Ç Ä Ž K ý ¸ ™ … Ÿ Ì ö  õ ö æ Á ¡ • ¨ ¯ á : ” Ä Ï Ï ë  —  Ò |Bê­„rÙ’"qÔ÷mùkù›råî‡6 ½%¾!Í—x_#gP½¼Õq”õοs†¸ŒØeüAÏx®&´eü¢q(ÊÞ› ï P g ª ’ Œ Ÿ m 2  îßö , H n § â ) X { ™ ˜ ™ m ) × – u X _ r ‰ Œ € } l G '  &  / g ¬ Ý ì ç à å  ` Ï ) « P  ƒ³·ÈjiSñ±0!BC?.^v0ç“xÆ4þv}yïgQ,Ç Gï s]]6µ€MŒ ® ¡ D î ›M!Qi? ì d - y M ( 8 9 - áÞáÆ´¿ÔÌÏí  1 G i ‚ “ « ¦ ~ A þìú  4 ? 7 5 *   & & < m ¯ é   ÷ í ô   K ¬ 2  ‚ T%(iÕqâ;rãøÕGC€õ+¬zqÏüW‹g)Œ®pé2=²$m [ S  Œ Ð P f½ŽÂN d š Æ [ t zºzc˜¯ÄàÚ¿€G²rG4;@Lo–ªºãùèÏËó&{á ) O < ( ëàÜëô 0 T i z › ² » ² ª ¡ ‡ Ÿ ë V ” Ò …  >ËO•£b<ð˜(ßQ¥y,¡jœFÜg2wevCñŸÊb?v†ÃÉ vŽX T Ê ê ’ - %  c × "  » o  ­ d V )žÿ‘x}£ŸŸÍعIÍ?¼b÷ÓÑÛëÚÚÿ8Zx¦ÅÁÈã<£6ß\¬¤•fB*2eÍàó # X ~ ’ ¥ ® ª à  S † £ ¯ Ù Ÿ N _‡¯­m!Ár+ò›:‹ÂÆlfv£éX^ ,TvS.´q<š5÷ÙÞ‘D ï ¢ ‚ ó Ó„–ù ^ *½<ªnk0öżÇèóFF^¾.¸ƒYXPRVN*6o–¹âüúuÑd·9d_;àèpíjÆó  0 ? S ‚ ¢ Ÿ ‹ ƒ ž Ñ  ; _ } à  ² u W#¿1 9ÿÆ›z1Æ*¼]ñ·°ÑéÄjè–8 e , Ÿæ, L‹oš  å ¥  9ö› ÎÑs Uß0 Û ©À¶¥s< J;âLÎy1*5YopiP, 3a…Ÿ¹À·µÀñzùv»¶ŸpBLhâ{3ßAxgSW“ß  û  > ž î 2 m Ÿ Í  k à ] Ç  F ¥3¾n1ï“‘ x -  %  í µ „ “ g  <  ³ F Ê Ë Ñ ø ¿,êñ¥?Õœˆ­ïð´þ3Wy!„Åɘ8÷½~N2Ï‹`FI^WA'$CoŽœ¥Ÿ•’˜±¿öF¼8™è÷ðε¹ºhý·59ï”-·  6 Q  à  L _ Q 8 U « , Ú  F u Î ? ã3š Ê ^ ? 5 M N K O L t 0 S „ J Ú $ k q t ò #(hù§s½g>?9™aÌw$;ø;$åy6ó–H þù:Fëíþù༤Ÿ»Þ #8?Rrªé$Tjy}›—¢¤þ£eÿ5&›mf6–»¦¶î N ¡ Ë ¹ ‡ ~ ´ 9 Í = v k b c p ¼ / ° ç  × À ª º Ô ù  , Èó,ç ñ’BŽ ©„jBð…-Ùp- éÈÍÉ«d ½‘€QCRˆ¼çІg[D(ÿðÿâÿó 2KTRSa‚­ËÕǹ±¯ÀÎ÷*oºï Í–•íXÏ'Yc¥!   ªÖú]³  + " ç  Œ  W b v k M C c š ¡ < + ÿ  7 l e $ŒÀ"åÿ÷íྲUÁåþ_1,Ò;¯f9„ –çÆƒ¬Uô«dTVƒ›ßLÀ9ZE#ã¯yA Õ¤jH9EJQLTd‘Ñ#ܳ–u‡´ Xöû¼;Ñ‹è]Íù7ī¦-µñ@®q„P3x  m »   ô µ Œ y nŽ™}¶ßö¥/h—ïWíÝØã“îNðß Õ8>qØ~#P$~äh"B|·ø'hÌ0w£á(Ýs ™1Î]ÿÁÿ¡ÿÿrÿ^ÿ`ÿ\ÿ‰ÿÙ7ƒ¢»¢‚Aÿíÿ¹ÿ®ÿÜÿù:¡ò$üÁMÿÂÿyÿkÿÛbÿa²’.à˜vªï_•’w¿Oä K ‹ j :æ {ó ý ù3d°Ák]nªeì¶ï.)ç~l²q!‹.‹¶ú }áI¡Þ?a”Û;Œõ|‰­¢—æH¨ÿfÓmâµ qq™ê,Zˆƒy-ÃKó»lU[¢ý>v(}ÿ°ÿÿÿq$slHZב\ç,K™a*z›õtx¥|],úé 3?@½{ÿs¸öC:<s’Š0ªB-YckKyÚÂÓèÞ@bƤ´˜kvh/úëè>¥^  ÿ ð Ê ­ > Í R „ Î þ 'Om¿)Ú—a±…mgijsP£5‘Î OÿûÿÏ×ÒAÿsþØþ–ÿÿ×›úß›†È‚Y@eòœi¸šh”~T@n²×íî¶s ²CÒIªl‡è2QA)}ílßûk ± ¹ ‚ ³ Ì ì M  ĈJ¤Ù(¦.¶Yi»ñòþt¿VÞOn„€fÀ\ Æ N ¼ 9 ¼ : Í k # ä £ hóo‰ŒNùÜÖ€uÍ!qzÿwÿÿS!Ì Øl$r?,–µð@¯[‘Ü<©Zumb‰:[ZÌc ®MäkÂÅò9KRS˜ Çe>ýU / X!œuPÝgûºŒNïšù7*ðGǼ­Õû'^\ o Ð é :„ˆ»Õܾz£;ð²Kª5lޝ¾¹Ï q É ü . À6™8êR '.ÁÏÿËÿÿÿghnÿÚ3ñ†æ-ƒè;gqˆÌ<µ:Fj`’¿¿‹YíµfÖÈÕK¨ •¤Ê=c  𠛟yéf¦u”ž–Y±/£ 8 Ð!T!Í"L"Ì#4#Ï$š%&’'ƒ(d)B*A+ ,,],?+Z*~)z(²'Û&æ%Â$x#a"}"!Ì!¢!X É $Busp†õ𕔯2<³ ü Ð j|ú{Y.imFÿ¢ÿî|õ¼@:´H“°ÛTz_;=Šý|×ÿNžíêÞÑÞÊ€2bÎ÷^Þ kV 0 ¿ë¤`cß ^!ç#"$¯%è&Ø'^'ò(~))Ó*¸+¹,«-|.U.à/0/l/á0€11¸2K2þ3Ü4·5ª5ö5á54[3v2À1â0æ/£.6,ø+ï+u+%+*Â*C)£(á(G'™&û%ä$‚"¶![¬J'5ï“zJ ª ¹ 6HITÍÿæaxMÿÛÿÿÊ\ïJT-BSA$üy‡¾¶ÿì;€}…ÇÜ´£¾?Ó  {¯ î ‘ï±‰%5 O$&é)e+"-.¾0|1‡2%2V2½3n495e6¬89D:+;;S;L;:û;);V;»<<Á=>{?w?ë@ ?„?>j=â=<7:ö98'76s6 5Õ5t4Ý4!3h2Ý2}2E1°0Õ/O-Ä+Ø)Ö'ð&?$ë#­"x!U—µ©‚3 O Î †‚  bZÒPÿü$§È›ˆzz®Æ²ÿÒ;3#D[…‘ü ¶°÷å + 'ãïãuS!µ&3*O.13ò628Š:+;¼Ÿ?—@àBFC DéE´FkF~FRFEòF5FuFûGxHFI:JQK€L(LwLKºK#J»JIlHFFÖE^D'CgBÔB[Aµ@Ç?²>=ª= <<(;„:q9b7Ø6,472Y0z.§,Ù+()2'$|!Ûª6¶j¶O " —`‰;ØWúAÿàÿû]„hÿàÿä ,^¶ìèP9åwðç=³èC¬ « ½†’øó@Æ#ü(r,ý1L5 8¹;Õ?"A¡CïE/FQFÃGG“HlI¨JÆLMeN OÇPkPóPöPÔP­PÃQ&QRR—S_THUWV‡WBW¦WfW'VÀV“V?UáTÿSÈRlQXPP OjNŸMjL JI,HGBFœEÑDüDHCSBC@´?= :ê86%3¶1D.×,Â*&'#+ßÖsê†ü ¥ w¯*)±†º~~”>ÿãÿÂÿá124^ˆ¡R´¶· š±x  š Ò“ @Ñ‚!à%°)ô.·3o7ã<?áCãGVJÊMOP PûQvQßRS£UVbW¾Y;ÌrÆ·Ec$ÿëÿªÿ¤ÿÓ1VD b  ©×㨠¢  ¶/='§w!Š%A(ý,¸0ö5¥:w>òBûFúJµNÎR&U0VÜXHXÕY‹Z Zv[5\L]Ä_`naîcOdœe}f\f¯fáf¬fŒfEeùe§eLe*e&eteÚfCfsf™fÞg@gÁh h3g×gAf”f-ffeÇedddc,a±`i_D^K]"[—YøX“W…V‹U¶TúSÓR~PVN%K"GÕD^AH>< 8ñ5*0z+›'J#ß! é2»”. ù êŽ|ƒñ¦ÿÌÿÆÿü)Fƒê¹£-ðÞ¬ÄÍŠ ª"ë'R+±/Œ3p7¦<\AMFJˆNqR~VYï\´_`#aabaÀbb-bÎcÓeGf~gÑiDj²lm%n*nn£n4mßmJl­lkRjæj™j³jØk0kikÍlSlðm”mìn*mämklÐlfl@lKl9lk4j$hâgÜgfŠeÓdµcebHaU`^_‹^ì^ ] [@YeV¥S¬PDMIêGCÕ@8;¾6ë21.*'@#¬V¤eX Ö œÂ2¶}ôÿªÿxÿ¯ÿÚ$"i ¡3ÛŒ_Gá¼ã!Ä%—)·._2ç74;? CfGþL‹PÏTôX›\d_rbvdOeêfrggfûfÚf²g gÅhïiÛjélmPn‘opfpžpšpoªonqmÊm!lÉl’lÃl÷mcmÀnAnÜomo÷p&pGoéo\n§nmËmÌmÔm³ml5k:jvjjiöi’høh†g÷gGfˆfeNdˆc.aÇ_¥]jZšWÜT»Q¥N"J—FˆBN=Ú9i5Z1Á.6*b%æ ò%ÿp˜  \”.Ù\ ÿùÿìÿñ#-)#-9+L(«&$"H""#é%Õ)(,]0¡5.:>»CGKKeOºSßWÕ[r_EbŒe¸gðjk8l]l£lÕlulk—kDkskÛlŸm3mæn¹op]päqhqsqRpâpp9oµo2n²nŒnˆnìoRoáp`påqxqïrer„r—r2qœpãpCppp4p&o¥nänmdm5mIm‘m’mˆm©m¸mªmhm@lÈlEk:j,hzf±dab>_‹\»Y3UQ|M”IwE9@ë<½8¨4Ó0ƒ+£&R!4hÄzÙ üj$õÖ£=ÿú".)8ó6ù4?1~/f-„-V-e/O1;4¬82<¹AXFJŒN«RçV¹Zs]¦`Àc”fÏikk lÜn'nÓo¨oÌo°onKm­mAmBmUm¤mÙn(nŽnïo9o_oŽo’o{oVoSoOo)o nøo1o†p&pÏqzrryråsscsTs0r¥qñq:p£p}p¡pØpÖpco¼nùnOnn nLnXnnïoqoëp,pgp.oäonMmk˜iãh„f¦d›a^#ZBVÄSFOÜKýG³C3?5;6Ï1À,A&€!%á0 { þÒîíßåT[MDáBÀ?Æ<´:d8n8O8S:HK€FñA´;W5.Š(`"j i I ’XÀ]û£ZX?U+ROáN-N@NUÛYl]uanehßk™mæo+prq‡s tMu_u´uÏu†u‘u`utBsursqnp„o±on–n3m¿mim lólîm8m•nnFn‰nÔoSoäp¬qrrRs7ttíuŠvvKvtv'uÚut%sqàq$p“p³qq™qàqºqfpéppkp9po®o~ooµoÍp pjpÕq8qNqApæp~p%p o÷o¤n¨m‡kÓjhlPlƒmmœn&n}n‹n€nnÿoOo\nËn'mljòjhÙgÆeÒcˆ`;]/Y"UO‡I¡BÙigðgHfÁf‹f.feÁffzg—h¼jAk®mQo pØr­tCuÎvÊw±w÷xKwöw‹vu{s÷r\p„n—mkŸkjÔjÊjniihf†e-dbêaé`¨_Õ_N_l_€_î`;`ïa½c dpfghhìjÊlsmén„nÓnŸn¨n¤n´nŽnqm»lýkAi]ftcÑ_ç[¼VP IABÙ<+56.U'­!•Rþ½ ø `o4n¦nm›mblüm0m§nçpVqßr÷tu„v¼w‰w´wÓwåxKx£xÁx—x¤x1wv(tr§q o^m•kŸiŒg eÈd{cJb¬ba×a[a9a!aÍbŸdDeöh%jBlŠnÙqsPuvØwÜxÍy y[x÷x{wRv.tŒrÞpðnüm,kej#iChtgWe¬cÕaÃ_Ö^\UZÓY'XW9W:W=WæX‚Y£ZÃ\e^`0b?d­goiølEm”n–nìoxoØpNp~p§pOpnòmŸk[iRf5c^LXðRL›F;?”8‚1y*“#—fL¡o_onón×nÚn¬nëoopˆq³rësèt½uÈv~vãv÷w:wvwÇwÐw³w+vÕu×tšrptnkÜi¢gMeb¶`Ç^Ý]\Š\ [t[4ZÏZü[G\n]™_§aÓd gojYm,oÀr_t~v–wãyysyáyŽy,xwuƒsðr p.nkìiÏhf7da‘^ü\cYåW³UƒSµQÊPŒOsOAOOµPgQÌS&U VÙYH[Ò_ b‘eÿi+kXmEnVop;qqsq¼qwqMpwo‰mÐl"i g`c¨_=Y›TƒNÆHßB(;H4,Þ&?ŘWorolo¤oÑpoýp=p¹q§r¡s§t–u;uÒvv5vNv¯vÿw9vöv©u·tÕsq(nukÆhÑeãc`F]ë[­ZXCW#V'U±UTîTÜU„V7W«Y[F]Öa2d–gük#mòpàs[uãwŠxýysyóy¯yoxŠw©v4t¸rÂpån†kèif™cê`é]’Z0WT5QîO´MìKðJ‹IOHâHgH¾IJdKÍN PR÷UæYµ]ãb'f,i=lmÛo¸pár%r¯srÏr¦qÿqep(nÇlÉkDh‚dü`-[ÚVÀQšKRD³=[6/ (J"¯ânžnºoo_o›o¯oëpKq qêrÝsÆtNt•tœtÌu uruŠuwt­sòrSp”mék/gÜda ]nZ@WDU3SKRP¤O´NÙNMüN(N“O±P¬R'SoU²Xc\_Ûc²g/jbmÁpÓt vSxLyy¾yytx°wöv™u1s+qCn›k¢h-ea­]îY×U£QðN‚LIÜHAFWDöCÅCBB¦B®BšCDÁGITL‚O«SÐXO]'aßeÝi lMnúp¯rssa:6+3ï1£0ž/²/˜/`//00‰2;4*7Ð;¤@ËEÇK¨QÊX9^±dHišmVpìsuqvavåv`v%uŒtútsqæpûoÁnqlZjegcT^?Y"SªNgIgCøn¨o.o´p,psp¥p»pàq qSqoq[qpÕp™pÉp;oBlÊjLfnbt]zXiSNI>D?°;|8É6l5@3ø31ñ1;0±0á1 1ã2Þ485`6¶7°9Ã<*@§E¸LRX ]úcÞj`E-K™RjY$_õg>m‹s¤wzz=zmy/x+v“u+s3q[nSk f.a?ZöTsMkFu@!9é5"0|-—*Ä)—(£(ž(\(X(5(U(D)*,Í/ö4È9_?DÛK–RµYÂ`“e÷jónprPt¨v£ww;vÉvÙvuuŒtosÎsIrÊq¶p€n¾EYLËT/[ËcÆj¼q“uªyyz xæxvˆuJsŒqìo*l3g¨c \ûV«OœHAî;6¬1ð.ã+Ø*_)!(ß(u(L'÷'Ð'ƒ'ù(x*‹,ò14ù:3?bE³LhSsZ^`GeÊjnƒqštu¢vcv4všvzuátòt[sãs–r×qÞpnkthûfGc`Ê]Ånóo™p p+oùoßoÁo½o¥oˆonymÒmÆmBljföaè]VïPbI2B;®5¢1.,Ì* 'b&$´$E#ã$$$A$1$)$$$„%'%û&—''$($)S-1{8a?8GIO>W~`go$sýx%y"yïxáxvœucs¶r"o¤m ie_”YáSLE$>g9 3ý0¯-g+¡)õ)E(ƒ()'­'j''1'U(Ä*m-³1 5»:I@F>M"T Zp`zeajmn%qàsÌu(uRvv/uóuMtÚt…tytssr p’n±lîkigdünÐoioÆoÊo†ogoXoaoUoDnÓnmMmPl‡kHgÏcä^ X«RJõC‰<$5ó0,H(Ÿ&§$Ÿ#Ã"æ"Ù"Õ#9# #í#÷#à#Ò$ $‡%%Z%n%#%§&/)>,ú3’:NB›J¶S3[ØcÅkßq{vqxyVxowÅvSu!sŽr oîmÜjÈg¬c%^nXUQøK,Dn>Ÿ9531s/7- +×*Š)»(Ö(V'É'Î'Å(±)¥+ÿ.Œ2{6E;T@•FáMZSëZI_Úe^i±n)páss¸tÊuuJtút¬tjt‡tpts qóp‡o:mÑlYjâi\n½oBoo‡oEo+o)oEoCo9n¯mÈlÈlÙkÑi÷eŠ`ÊZJTME‰>60º+;(%#Ð"P!Ï!`!”!¼""‰"Î"Ö"Ä"Ì##Ž#ó$#Ù#V#d#C%‘(š.Þ5x=ýF8NøWÐ`*hÔo,tæwx·wäwRuñtÝs‚r'pqnçl“j+fZbS\ÕW/PÁJID=ó934Î2-/Á.R,˜+?)Ì(å(('Ú(V(˜*+¿.õ26…:ý@ÃFÍM‡T:Z`™e–j½n#pÿr0s•tt™ttet:t‚t®tsæs4r@qjpto_nKmEnwnÙoonønânéo(oCoHn¦m¦lblBj·hbÉ]bVvO¾Hv@ý9è2Ë-{(œ&#è#,"!¯!o!¢!½!ò"*"R"S"b"”"ü#…#â$#É#R#/"¶$h&Ð,x2‡:¯B‹K&SÙ\Ye:lrBtìvìvOuñt¿sãr×qÈpŠomél"hïes`›[ÑV0P‡J~D>’9z6;3t1³/{-u+C)º(r('Ø('((Ó)Ü,M.Å2˜6O;~@úG¥NmUB[èa›gbkko pËr‹s,sñtsõsÉtt`tpt srÓr@qpŒo‘n·nn_n‘nžn‰ngnpnÔoo)npmekÝksiEeÇ_¢Y©RsKECÛª:¦7L52?/š,¶*…(—'ã'w'´'q'·()«+g.”1˜6L;VAùHÉPWS]ÓdXim„oÎqærŸsŸsØsÂsŒsØtAtˆtftsvsr–qÇpåp.mm«mØm÷múmÌmÐnQn·nÛnm6kzjŒgˆc<\VDO G©@N92è,n($]#%"."D!Ò!†!@!9!½:÷6ø3W/c,%(û'X&-&<&&W&H&Ò'})S*ë.x2|8É?LGNÛVx^djm¯pÇqçsZsšs}srôs=sÂts¹s,srärUqŸql`l.l[l«lðlÆlÁm_mìn&m|m kidˆ_WÊQIÎB1:ù4 .•(á%•#'"Ð"@"-!Ä![ ä » Æ!#!b!É";"Í#X#ö$˜%F&&¡&÷'!'-'Ì(U*˜-2)7 ?F‰N–VÊ]ÞdÊhãlUlãmJlUk¢jéjJj@jŒk+kÿkÐkhµf,bÿ`]OY±TdNTGøBt=Û9=50 ,ê)D'7%‘%e%5%—%Ÿ&&‡'Þ(â+È/05 ;`C.JðRÃZ€ag«kÿo¿qArüs8s$r…r8rQrØs6rërbr`rSqæqVpìkàk€k£ll`l.l%lÕm‡måmQmjëhUc ]:UÝOGË@79/2j-N(%V#z#n"î"¸"V!ö!!H!F!}!z!±""Ì#g$*$ú%æ&ß'µ(s(å)1)…)t*Õ,ª1:6O=tDyLSÖZ¾a¦fiÂjkjiZh‘gÝgÞh,i-j†kCk„jhGe—c«a ^lY½SäLûFàAl<7G2-¨)w'%$±$V$¨$¡$ó%Q&R&â)$+Ü1M72?FÁNÐV¼]ÀdêiínTp?r@r~rzqÆqLqDqÒrNrq„q‘qqApÎp„kkk+kŠkñk´k©lgm7mºm8mj³g~a˜[”TOMcF2>±7Û12,l'Å%ž$$$.#µ#p#"Ï"a"!þ" !Ï!æ"I##Ê$Ç%ê'J(ž)é+N,E,ê-*,ì-ò/¡3ç8–?ESL%SY~_ñd2gÓh¼iahŒgîg/f|ffÒgÿijÁkµk4j0h#f¥dnb‹^xYRK‰EF?I9¯3—.z)™&Í$o#è#[#”#z#Ä$$þ%d'B)m.W3Ý;˜CIK~S€ZÏbXgëlûodq«qäqñq#pwp5p¦qp¿p5p>pXpo²o†k/jžj½k#k‘kNkBl lîm„m m jpf¢`YÔR•KŒDX<Ö6&/™+4'/%£$$˜$:#û#¼#i"å"}"Q"Z""B"±#œ$C%s&ô(î*Æ,«.Ï0Z1d1³12w47û<A©GMSAXï^§b}eÎfÏg¤gf›eëeCedeêgVhìjlkÅlkîj¾iÑhfÁc*^DWP1IBa<5!/@)‡&*#j"×">"{"U"}"®#U#“%2&ÿ+“0Ù8‹@9H›PÀXa`Ifclnóq|q§qºpÂoÕoGo…oÝo]nÅnÊnøn½n‰nvkjŒj°k kok(kkálÂm[lÙléjeÉ^¼XFQ IêB¢; 4]-Ê)«&8%;$L$d$.$#ë#›#" "f"‚"s"â#‹$¶%Ž')+É.Q0ð3Ö5ö7l88d9;X>ÃBAFÔKZP\UZd_=bxe4ffÍfvfeee/eÉg8h²j)k‰l*l¤l"k±j6iOfaŸZœSŸKÿDã>6¿0Z)æ%ã"°"!O!!_!n!u!ö".#»%L)™.§6N>F‘NÑV«^ÎeTknöqÀqÞqöpÏo n¼n·nàn3m‹m„mÆm¤m›m¬k,jšj¾k k]kkkÅlŸm9l²lÎiÅdä]FV™OgH/@Ô92f+·'Ì$Ù$n#Å#ô#í#ö#ó#¸#F"Ø"Œ"¬"½#z$p%ÿ'0)0+¨.î25V8Ü;t=J> >ó@>AòDËG¿K~O%S7Ww[”_ßbÂee„eûeeae d”d¶e)f~hi±k9l%lðlâlîkîkoh{d„]¯V¹NÉG\@81Ç*µ&"C!A N ‚ J [ T ¾ ò"Z#—',`4;ÞD«M U]‰d‰kwoNrVr\rsqo¬nzn5n6m`l©llÞlÎlôm0kxjëkk1kckkk¸l…mll¨itd:\KU‡N\G?•7À0ð*&>#—###O#`#}##v#7"ð"¢"È"ú$%c'})D+à.Û2¤6m:B>GA5C_D{E½G5HäKTMôQS÷W'ZŽ^aëdˆf]ftf‚eõeµeyeee-f2g igjýkælŠlll™kákŽhÎe^ŠWÍOùH˜AW:3@,&ç"À!g - C÷ ê : e!˜"s%÷*l1ø9ÅBµKSF[Îc"j’nèr@rXr‰q"o’n4mÏmÃlål6ll€lŒlçm_k¸k5kAkPkbkjøk£llmlvlŠi6cÂ[ TÔM«F@>¤6¼/è(õ%*"Æ# "²"è"ì"û##"ö"Ü"”"Ä#$|&!(Ã+&.m1ð6B:·?(C´FîIRJŽLM´O‚QÂT,V°XÖ[(]Ò`Èd+frgÝg gdf¯fKeþeŽele;eòg4ij²k¯l-kælk…kjh÷e_6XªPðI¨B{;Z4¤-D'Þ#w!ç …  þ¿áð â!O$M(K/–7@@:HPÆYT`ðh×m´qoq¶rp®om•mml?k¨k l#lTlèmŸkëkrklkTk?jÏjÈkqlC6P/~(ƒ$À"z"Ú"Ž"·"¦"¥"¬"Å"á"ù"È# #m%&â)ì,Î0¦4ž9f>hC_HaKøN¾PHRSïVX8Z~\^_·a¼dfßh½iÕi‹iNh¢h$g¶gAg f²gh i‹kkùl5k—kbj—jLgÚdr^=WÌPII=Bh;®5U.B(ú$«#!¢!x ã  ç Ž ›#&-X4¬=‹EÃM÷Vj^f8ko¦pLpôo«n"l°lPlgk·kMkmllxmZDIõOÎTxX’[W^>`†cdíf›g}h=h·iVj.kXlMlàlñm%mlÌlnl)kük¹kÅkülŒm\m¹mµlµkÃi÷h¤e†a»[˜UMÈG@Û:ä5q/E*’&²% #™#"7!} ² =Éöƒ!9#£)048ßAIUQ©Yba gjlFm¥nÍmºl`kjìkOjáj¿k/l-lÑmÕo l?kÝk£k j”ièiÙjrk?kïkQkg‚bZS›L™E= 4Ý-ó&ý#y!"&!ê"#"G"¥##…$$•$¸%)%§'q)•-50«5m:[@cFžLþSRX…]D`dfi:jÜlAlªmmlßlûmnanÊnßnûnînënÈn¨nXmÎmtmnmÇn\n_mölijÝhrfzc_Y RŸK¬EB? :;5\/Ì+l'µ%ä$E#‰"n!ˆ ˜ jhÊ :"A'Ø.I6î? G_O¢WW_—e“j¿l|mêmkÑjœj™kj½j¯k=lXmn$opl]lkÇk;jiÞi½jEk k·kjàgMaÚZSL¡E=4Â-Ç&Ï#K!H!á!Ÿ!Ó!è"D"¯#N#ú$$É%<%©'\)€-#0‰5?:$@JF²MhTY®^ÉbufChúkËmdn¿oo[on¦nzooÆp(p(poñpoûoáo\nxm»mm¶nmqlViùg¬d«b^`Z/TpNCGëB)=N8£4g/ˆ+†(&$_#y"F!R U´ÿZ«!u&Ò-,5Î=ÓFN9Uä^d&i‹kœmElk‘jƒj¢k,jÚjÍkhl‰m?nEo‰lÖlpl kjÐjißj_kk¶k j¿g.aÏZSÊLØEF=14ç-â&Û#I!9!Ì!!»!«!á"A"í#¡$>$ƒ$ò%L&í),¹04¿9~?“FLõSðYÔ_bàfåiÔlÝnŒoäppfp.o¾o”p pÀqqqpÓpÌpœpio¼n¥mœm-lõlØk°iîfßcç`i]cYƒU-O¦I¶Cù>ì:ç6þ3[/+e(&+$z#Œ"Z!^ P™æÇ!R Ó%á,4¢<€D™L¥TH\gb hKj¹l lkMjdj¨kAj÷jçk‰l«mZnOo‡lVkæk›kj•iéiÕjnk/kÁkjÇgZb5Z²T{M†Eú=ä5 .'z#¼!j!Ã!y!ž!^!a!¢"A"ä#z#Å$+$h%Ó'Ë+;.p2Ç7<·B·IPV˜[î_Ðcîgjmln9n¼oFoEo7oXoñppÿqqpÉp‘po±némÕl¿l1k…jÚhåfQb…^å[W˜SNòI‡CÞ>Ù:‘7_4 1-[*!'E%$#6""!? J§öbŒ ð%Ò+î4a<DKòSˆ[„a·g~jlk¤k jMj¬kLk jøkžl¶mTn%o9kkjÕjtjiƒi|j/kkœjöjÅgˆb[DUNF•>6B/,($2!’!ž!9!X ÷ Ù!!™"0"È#%#‰#¨$Ñ&Š)·,½0Í4µ9Û?TEèLìScY ]:a„dßhjÿm9¢630Æ.1+0(š&Z$ø#­"Ø!Õ! BÎVQÌæ!*%ã+é4H;×C¤K‚SZÑ`êf¸iskpk j›jj‰k6kjük³lËm`noh»hmhxhžhÑh•hÀi²j¯kZjÎjÍgßcY\CV(OG“?…7A0(ÿ$ã!É!\ ½ á ‚ j ‹!!—")"š"ù"ü#Í%%'Õ*n.1x6:Õ@ìGœNETFXþ]‘a2e#h&kl m´mÌn nQnôo¥p;pbpcoþoµonkm~l¡k¹kNióh-dp`%ZÍUÞQL¸H B„=7é4E1;/H,ü*Û(|&Š$ß#Ï"¶!ê! fêÖ# M!¼&–,¬4újXk jj¸hd ]CW?PH¡@840ß)Ç%z!á ø  P   4 ©!&!´"8"‘"z"ð#ã&( +.2O6~<%BrIE¬M£U \_a¶fáij…j iøiÜj=j¤jxjŒk^lQl¢lÅm3[^\M^)`íc¼e|f¶h¾j.kjÈk0i+f` ZRKPCi:ö3>+ç' "† ωٷô # x Ì!&!!½!|!v!Î"ù#û%û()+s.}2æ7Ç=ÚD JO§TrY?]‰b*eÕi)klïmÌn•op$pÀpÌpVpKoòoCnTmálólEibeš_*XNP÷J¨DÖ>Ê81f+ý(&ý%Ú%ƒ$ª#¸"Í!Ù Ðè ‰ó€‰Ï‡ M"ï(Ó/N7\>§F-N4U£\ìbg ijBiÀiÑiÝj2jvjBjRkkþlCÀIMüRæWˆ\q`¥d”gYj"kÕmGn1o¡pq pÚpëpoðonîmûm i~dþ]ÚVrNÉH9B(;Œ5-Ü)%Å%Z$¬$Š#ì#"F!_ ^‚Ã\åÝuwͦ º#Ð*0‚8_?›GOV]ÀbÀgki jiŠi²iÊiôiòi•iƒjjÕjöjëk%MtP6TY3^SbUe h“6.Ê)*#Ì!U}3^x°Ñú G p ; & U!!Ã#$ƒ&º(Ñ+ð/C3³8B=]BLGMLBQ@VŠ[R_ÊcCfÕiYkžmnáoòp­pÂq qp©oùoõnîmÜiÔd·\íUMFf@ 8ï2*Ï&f#§#Á#k#s#"D!‹ ºÛ-¢aþÿD¿Ç1)!}$ô+e1ç9š@ÌHAP1W}^µcgïiRjipi«iÆi¶ichÚh¨ii£i­i™iÆE\I-N-T^Zš_ãc’gmikžkël‘k$i²e$_ WõQ IVA 8ç0ò*â% "™A¸»ð+€ÆºÅ  ¾!q"ž#Á%ƒ'B)Û,“0#3¬7Ù<@°EeJPU>Z^ bEe‘hÄk msnÓoáp8pìq#qp—p¦oon*iÌdQ\BTBLLEg>è7c0Š)®%Ö#`#…#:#;"Ó"!e ÕDÑŸAG™.Eä +"ì&Ô-†4;³BìJNRY`,d¹hŸij iViˆixih:g^fàfÞgfÙf›f™=MB3HOOŽVÖ][aÿf‚ik†l'læk¨j¾fÓaÆZQS™KÝCœ;M3$,&>"“w°Òûû6AmË0Q…ß •!S"Z#>$Œ%é'÷*#,í/„2Ï63:‘?DYIéO„TÑYz^&bfil@n+o¥p"pöqAqwqq8oÓnGi†c³[pSmKgD#=D5q.Ï(’%o#H#e##"¼"!!~ Áý_Ú•)5’Iq Q ú$D(Á/Ö6¡>,ErL¼T`[aîfi[i¾iáii5hÿh5fúeÞe!d¿d•d c•cY5P;CBlJvR‡Z!_Ãegÿkllükëkkh,cÜ]VÄO6G<>é6§/³(ï$  »?ÚÓªëò#vä)‡ø ­!s"e#6$@%J&à(­*ì,Þ/U1Ì5r9_>”CÿIÏOaT„YŽ]übzf?j;lÕnÞo‘pƒpÏq6pïqotm~h\bbZ6RWJQB¨;Œ3Ý-Ý(g%×#Û#¿#X#>"ç"^!Ó! EÓx (ƒN„ ¼!ô%ì*ü2^9V@ÒH&OSVÏ],c—g0iÕi¾i­hÓhÏh>fýe!cb%a `+_^]N-T4e<²ENkW]¼cÅg4jÖlml/l ixeä_ÀZRÂK#BÒ:m3 +ø'!" @.Ó|ÏÜE ùrà ~!/""Ö#´$e%~&÷(Ê*J+ÿ-g0#3z8©>D.IþOŒU Z_cqh k'm°n¬oÊp*pÓp¹qo+lÆg;a#YQFI0A"9×2e,ÿ(%×#ò#µ#E#)"Î"P!ß!5 Wz¸_ GšXx ç"œ'6,È4[;\B²JQ+X˜^³dÆgæjižih·hªgÆfc†a8_]![uY XV»&u.87F@ˆIÔSDZËa¡e±iìk“lØl)lDj}DAJ OÍUFZÍ_²dÈhjk‹mno oÿoØp mÝke^ðVùO$G>þ81+,w(%è$"#Ø#d#9"×"S!Û!* <\¥nL¦í­é!È$))\/>6Â=³DßL.S-Zb`e¡hEiÿiwilh hVfÏda ]ËZWyTÂQúO»M’ð(H1ô;„E8OaWÏ_pd'ikl±l;l€jêhçd¡`aZFTLŒDƒ<±5|/Õ*"&/"A Tʲr£šÅ ‡ü Š!!²"s##}#ß$s%I&1''@(Y)ì-Å2)8*=áDJP VR[ýa¼eùiÅkÌmçn±o®oBo$l‡iDc\ÁT½L°Dž<­60/ø+å'è& $‹$N#Ò#Š#)"Ÿ" !5 )O´®±@  r"á&+Ö1ö9X@AGVN­U‰\rašfhÉj&i€iƒh£heËbÑ^pZLUÿQÊNJ=G?DQØ#,¾6?×J=ST[ªa1fÄiuk¼kÊlUk&iãf‘c]¯XeQJ)B;[5R/L*©%í# –Ù(,^Ð E Ô!T!Þ"€# #w#¶#â$,$³%T%u&7' )á-]2Î8$>ID;JxPïW ]Xb/f¥iQlm8nUm‰lùiÐf"_½Y/Q'HøA+9Ä4.š+ '´&.$ý$Ë$C#Õ#q"Ø" ! ô=Äè‹È ú"%v)ƒ/Ì6=™DÇK2Q©X=]µbÐf iŽjül]kfjŠfÜb±[ýU8MME6=Ø6ü2 --*N'š&‚%‰%4$#ú#“"î!æ »¯®Óߌð!Â#È(1-.3ð:dAsHœO V¼\Žb e”ijj i—iag§e†a \UVP IÖCj=•7ê3©/†±÷"*‹4>_HcQòY4`*dVhbjk“kkk¹j&hd`VZþUJNfGv@•9ö4>.p*%Ð#k!= ¢  M p È ø!C!«")"—##‹#Õ#ê#¯#k#G#+# #Ý%|'v+\/ˆ4î9þ?¹E£KôR†X_]æa»e¨g`igêfÓbµ^W P0H‚@µ9ô3½/ƒ+?(ê&à&0%j%$\#·#:"!` AdšËì !#Ò',s209/?ÙFÙN$Tí[˜`eEgÍjOj¬jÁiVh¶f6c]dW§P¥IÓB½;w4ñ.¢* %  ï\Å$›-Ù7ëBPLT¯\Ca)f4hÓk)k l¤kËjrg(d&_”ZêT³NFä@9º3s.])D%ô"í!» — ¢ º!'!@!e!«" "¥##€##¬##D#"Ý##5$v%ç) ,q1/5²;@³FíMjSwYE]…aàcÔe˜dIbä^MY7QýJçCt;å5²0,•(ÿ'6%²%R$Ï$$#p"Â!Ò ®¼âh© ½"^&"*n0Ç7)>cE\LeSÊZ=``dyhuj.kÆkajñi hdÍ`ƒY´SKRC ;²3,]%l Å 0zÚ¿'p0Ý;IEÑNÚVü\³bÇf“jkMlôl£li{gc/_}Z(TIMUF‡?ù9œ4#.ƒ*\&|$j"e!Ú!†!Ó!À!È!Õ"+"½#A#|#n#n#]#S#D# #"#:$I%u(*½.·2‹7q<{BkH£N»T­Y;]ã_úa¼`8^¦YßT–MKF->ê7Ž1Æ,§)¶&«%I$#á#š#{#@"°!å ï u Âu ^"ü%‹*:/k6A<çD K0RY^Ód+gij³kÄlŽkuj–hGf|b4\ÔUM½Ev= 4+ÿ$©‰¢ü; tÕÒ ó)³4>ùHàQŸX6_[dThÞjùm5m`m‚kÀiàf“c´_=Z7S±MF[@:;4.þ*<'@$V#""!¿!Á!!²"."Á##"õ"Á"¯"­"Œ" "¢#c$@&Q(Ž+ã.û317“=>CMIªOñTíY÷\4]ð\BZ¥UáP—IUB9;3Ú.a)¤'#$z#h"…"Š""s"(!} ©âPÈÿ m"%~(ü.†4Ž;ËB§I¦PÞWy^bÜgfiál‡mmkijIg—e_¸YHPH›?Í6™-ƒ$'á | @„ŠÞ"›,‡7/A JçRlZq`~fHiql`mmÒl½kph³fdb²^¸YSLF³A:é5k0,>(&‡$¢#û#Y#<"Ó"Â"û#d#±#°#y#"à"Ë"±"Ì"¾#N$%Á'¬*u,ã0a49U?"E LQSV—XêZšXØWIR®MŽFr?k8W1.+è't%T#".!~!—!ž!’!; ª À†¢w  Ç# %u)º.4.:ŸAÒH¦OJV;\+aÓe£i\k(mlìlijEhÐeaî[tT4KBœ9/ø&Ü:X õö÷ @PÌq$É/,:&DLUW\uc–gîk¤l¼n,m¹mjûi*fc^dXâRŽMGAÌ< 6=1r-*a'Æ&%j% $…$Z$>$H$N$2#ú#–#+"Õ""Œ"u"ã#_$°&$(]*A-=0\5G:ÏAWGÝMaRåUdW$UUS¾OIôBÙ;Ð4Ì-§(œ$‰"ø!: Ó k ‰ „ } U +  ø " %!="%›(±-®2ì9¨@€G²N¦U[¾`üeÈh¨kµlÞmìlþkâiDghc_^VòNêEhy5>,"r<š FÀ´<—-} #’ž*M4©>ÇHwQ ZEaföiŠkèlEm5lºkÔiÇh\e¤b=]~XâSüOqJ²Eo@];w7Ò4‚20N/%.>-ó-–-, +1*š*I)ä)‡)(Â(§)()Ä*Î+±,å-ä/Í1Å5: ?ÃE}J‡O¥QüSQ§OÚK*F?F8…1è+&”#B"}!!_ î ¿  «!!¸"S"ÿ#U$O%x(!*ì/p4#:&@(F´M3S•Z4_°dËhk%l€nm­l¶iøgÌd `SYöR³Ij@’7<-»$´§s ¸ R¯jÏ-D—,í ‚;#,ù7R@ùIÖS[Z÷be×hÜi¬kWk´kœjSig™etaì^Y§U”Q]LóHˆCò@6<î:Æ8b6ò5È5T4ô4\3%1Ü0ù0˜0F0/´/‡/x0 0á22Ý3¼4f5Ä7/:L>CHLuPæR×TR,PSKÙG@¦:V47-è)Ç&Ç&%$Ì$2#â#•#É$$$è%ƒ&u'=(ó*Ô.61¶6º<B GÀMˆSzY$_c„g}ižll£m?kÃiåfjc¥_ZR’JˆA08Y/v&/ãì däE¾ÆÕ—0ýËš (À%./§9IBlLTZ\Êbeæg.igj†k…k>jái|hZfc„_Î[ýWÕSøP1LH‹EBBÝ@a>Ä=U<;ä;9Ï8x7j6ß6e6I66&686Ò7·8Ð9£:J:²;˜<„?BEF§JîNšROSÊT³RÕQ LéHbB<±7)1ˆ-Þ+%*c)Z(ø(e('Æ'Ü((³)Z*®+å.80£4¤8õ>‚D"IÜOT$YÂ^ÜcÍgiók+lälÉl5ifïbé_‹ZS·KBk910a'êõoˆ á eÁð|Ìç&C è†ì#'à0þ9úBúKgTŽ[9``b¶e€g=izj„kj>iºhSgd‚aX]xZ VÉSlPhMsK HØGEEËDÍCÙBæA«@x?i>³=ó=®=…=Ò>>£?ˆ@›AyB!BŒCBCïEíH¥LSOäRÖUÂVÄWVUTP_LRGB =I8w5G2Ë1ù0÷0Ÿ04/ø/ˆ/[/1/¾0h1ù3f5ø8œ<ÇAdFÜL"QUªYõ^õcf¬hjNj kOjh5da`\çX¤R8JÞAï9g0æ(x ·¯] ¥ Eò  ‘§XYÚœ *T5 (1z9ÚBAKÔSÔZ•^Qa£cÍg*i­k£kÃk{jMjhÐfêcÆ`›]QZSWÊUCS/Q OuNM%LJûI©HqGlF¨E®E"DÈEEMFGH-IIºJBJåKdLÚN÷QäTÄWY`ZZLX°W0TPuKúG¬Cœ?h<Œ:I9’8×8´8k87f6ö6ª7C89·;6=ã@ÊEI¦N·StWÔ\/` dLg+iViÖjÔjKi—fÜc°_:[•VQ2I©A‚8”0P(… nZZ T¾¨ÔÈxŸÍ]È«Šb wÕ* ³(ó0ˆ8‡A…IúQúWm[É^°bÈfKiÊk=k˜j®jÜjŠiðgúepbf_Ü]Ø[ðZ^X‘W*VUGTVS6QÛP–O NáMÙML}LŽL±MN€O¤P‚Q/QÜR‹STU²WðZ4\ ]Ð^9^\\ê[ˆXÆU·QöNiK GoDóCB€BB.AÿA@½@+?à@‚A>BÕD*F•IZM@Q?U„YŽ]Ha6dOg[h¼i®iigWdö`É\ÂWÜSMÐG=?&7/ 'v Œ+ o ¾ ì)ç5ã>ˆÔl_‹f‘® žzÔ n'{/77\?åHêPDVMZH^¢brg.jQl3llVll*k€j5h$f>dc2b`³_z^u]\Ç[¹Z[XýWêWV(UuT¾TžT•UQVPW‰XlY"YêZ¢[[ô]4^Ù`|a»bìcca³`W]Ò[ WÓTÙR#O3M8K³K]KK/KJIÑILII˜J>K¬LèOQUX}\K`*csf£hiiïiìjhÀgzd_ûZ™VPöK°DÃ<û4Š,À%´©pÖ á˜/}Ú¹è5È'`º£—SUúL : º”ûZ&¢-®5‹>;FuNS†Xa\Qa}eµiRj®klkk‡k®kjÝiâh»gêg8fie’d»cëc=b\a*_å^Ô^ ]F\»\[Ï[–\ \Ð]Ò^€__•``b`ôaàcdAee÷f fdôcÖaÇ_ƒ\ñZ•XŠVYTõSíSÀS”S—SxS#R”R'QÞR=R³SÙTâV±X©[k^HakdËg:i.iyi´h£h e²bË]ÝX§RÓNHˆB:F21*z#“«MÛ f·•ŽÊùŽ14sª»'cmí k £1 $‚+¾3_;­DwKùR>VÆ[Ä`%e%hjÓkAkÝll“lòm%lñl±lEkük‘k jVi´hìhgfIeždïdkcßcšcRc}cçdrd»dÙe e%ee4e«frg,g¾hQh[hFgf³ePcÊb`_)]¼\Û\3\!\\+\>\ [‰ZúZ…Z¦Zï[é\Æ^Y`bwdúgFi‰j„kj;iêh7fubb]tWQsK§F^?Ü8/{'š! õå €NñËÛ‡'NÝÍgZ€ÍU>¼s5Ç¿ >’ª“#8)Y0•9AŽIENüSíWô]@a¼e¦gth¨hÑi‘jbk]llAl3lul—llDkÑk)j“jiˆihggÕg]gf¸fŠf€flf/e¾eVdÏdc§cd d€ee¼ffFf#feÕemdÈd$c„bàb…bGbbb‰bÆcbúbƒaÙaOa?a_b b•c¦dôf”hYiyjHiÔi6g®fãdca[fUjÄj5i¿iQhÝhih g‚fßeîdþcÒbaaQ`•`²`áa˜bJcc³dmemfkgAg¸hh6hih¬iifiÓjjfj=i¾ih°h¥h¸ii1i}iýjdjÂj|jh×gÝeÅcÜ_£ZSSQLÓFe@³:Q2Ñ*£"xØHO Ÿ Þ6[¯’ÿ×)”Ò‘4?€#ÿÒUe=ÿÉÿâÒG‹ù ·èód#Ó*é3Œ<C'GåLOnSáX \^i_à`@a7bJc_d“eæghThïiOih«h(gäggfce»dþdCcb×aþa_Ä^k\ÄZÑYPX'XX0Y*Z"[–\Ü^“`¥bÆdªeÿg.göhÑi“jkk$kÞlLl¸l°lqlkØk¼k¤k^jújXiÕihf¾ecÝb€_\EV¨PWIPCk=‚7P0!( `—ÊO þùÄËÄCi)ޝ‘HFh:ÿðÿÛÿûEUÿÙÿsÿv&æÿ>< szí_ ù(08$>aC?F;I—LüQNTÿWÙY?Z•[q\w]Ë_pa8bðde0ederdÞddcœbÓa×`Ý_Å^¦]…\…[hZ>àA DHuL0NÏPÖQÌRÉSãU|WRYZ\[½\a\Ü\s[÷ZèYóX°WkUñTmRéQŽP.NÅMKEIAFûEZDDD(E‹G IšLO6RšUéXã[/]v_*`Òb cd°e×fðhAiIj?jejdi€hŸg eccZa[_a]½[ÈYëV‰RsLÖG7A|<‹7Z1Û*ú"ëOå¹ Ë .¿‡—ýg)SžÇ‚0ApuKg$ÿÛÿéIÿlþÿÿO#€M-; ÐîO†ö&e,ò1á5Y7B9´<„?úC]FiHQI¾JšKìMDN„O¡PØQ¾R¤RÕRãR Q^OîNkL|JH–FÂDðCA>å<ž:8c6û7 7 8¸:‚=q@Ò?Å@øAÎB˜C:CïD¥E€FFŸFgFDÔCvAw?…=`;S9674Û2q0-g+£***4*B+à-º0°3o6Ë:h>AoD]GQIãL^N¦QSdU¾WÈZ[C\D[Ï[YmWðV*T„R£PéNwKßHCÞ?:{6S2ô/*p$E_áB ´ ³™p8õ™fé‡i•ÇŸ\;QŸÅÿû/w¥ÿ½ÿßÿÏÿZÿDÿ¼kŒÁÒ7“Ý – Ú™ƒŠœ#&ƒ()™+T-Ê0o2Á4x6)7$88U8­8æ9>9š::6:E9‰8¢6ú5Y3I1@.ü,È*_'Î%B" ½3* §"k%Y(+z/436t9u<?¯ ü§¡ q  ÄtG3&Ãz;þ! "r#¶#–#!yéèñ;–<?™ ‡œ•¨S‘®ÿëÿì™6ˆg øay6Ãxdtx_e‚ªLXYYZniBÿºÿ£ÿÅ'ÿÇÿ”ÿºmu ÿÀÿÿê¬]<ÍÿÂòØïÿàç!jÚ Q ¸  0 0 Ð |ÆíÝå÷þ3y  k ÷VÓÑã*Bf É ? ì–Kõ™VÝvN ŽÀ&­9öä÷»A ) φm8d)Ê>Gyÿþ6¾Qt> ø2q€CâŠp‚ƒxO=^’¯6IZfkynSÿÔÿ®ÿ¹ÿî$ÿõÿÂÿÄÿø9WGÿúÿ‹ÿcÿ¢xkÿìÿtÿCÿçõBP²Êa ʧÃã&q«ÓÆÁy†œºnWJH+*P³*¹! (ýÝnà 1 g ² Éì}ý˜è º ¸ Õ , s §Q£Ê÷Rgx{0¯ÿë ‰ö.!ø,csV Æ—„‚hO6?i”¢(?Xr{iP%ÿñÿÏÿÂÿÚÿü ÿÿ%j‡[ÿÔÿïaÒú§ ÿ¦ÿ©P)æN&é}0ÿÊ¿Åë ,Tc]B2$  +1# ûöüHvßDýæä¯V «XÉ : /ï^ö~&jeóS-r¤”«F»J'iÁ×Èç4qu? ÞÏàr?*/Qq0M_e\YSWEÿâÿÀÿÍÿ÷ % JhiBÿîG””>ÿ·ÿ=ÿ6ÿ‡˜À¸g'ÿèÿ¨ÿŽÿ‡ÿ¢ÿµÿÔÿø "$3Ly§Ú2@,$Í‹Mÿðÿèÿï.råhÀU¥ö>•ÁÔ«”>ä)1:ÿ\ÿ)ÿLÿî€ÓÛ•YCX˜ÐîæÛõ'bsZðÖÑÄšc0 *K^a^7U^T?7<QQ.ÿüÿÑÿÐÿ÷! #)>\gKÿî zÄ·Xÿìÿ»ÿé7—ÎÒδ¡œ§¸½¸¹¯Ÿ„_QW~¢Ò+@2%üÌ’^:/XalºÒé 2R‚É@6´3–ÿïÿ¨ÿ£ {ËÙ§zi†µÇÀ«©ÆHntN)øïàÀ‘c@65AHIG&BT[O=07??%ÿîÿÏÿç-) *)'->_a-ÿüÿô'‚´š<ÿãÿ·ÿ¹ÿú9pŽ‘“š³ÌÚÖÑÁ´ž{hg™ºàúá²~YA'>:)#ÿôÿèÿ×ÿì"eŸ–gÿ ÿhÿMÿŠÿèK‹ŒuTNl›Âʹ¦®ÓF]Y6óРrRH<?LRG$?]eX;'%<Bÿçÿã*=) "7>&5YcHÿø\””fÿÛÿÓÿð0Yw’®Úÿ ìи¨ª°½ÈÎÑÎÑÄ¢wxhaj}‰ŒŽ‰ŠdH/7[~hÿÕÿ«ÿÐvµ°D6V}¡¯§š˜¥Éñ,//$ ã¹tgPGU[C 'F\fV36M>ÿðÿæ-?3)*)3C^_: '\ƒPÿÙÿÔ,dÔ );6:0âɵµÁÐÓɹ®·¸›zrsf_`o„‘}ubOCBIC+ÿÂÿªÿºQ…’l;(J…¢¡—ˆ£Êù <;2 òÇ¢™”wXQF!+CahO0/<K? ÿçÿæ >R0ÿ÷ +DA9M`dQ/#DkrP U›æ'BH8>9#ÿÞȳ·ÊßèÜî²´›yg_QNN^yŽ‘‰‰‹Šˆ‹€kI" ÿ÷2]kT.B‹½¸Žwrt‹ Èü)HD5û ïͳ³®_@& $1NcjW7#4E4ÿóÿôHL/8MV^]\TG<19WkdE)3wÔ*PP144#îÙÀ¸½ÏßÞε­¥yh_UWYh“™–›™—ƒlEÿòÿãÿø2\iU1!.Emœ®Ÿ~tvkw“Ê 38  ðâÜÕÑ·‰R+ÿú%%(2Eei>0FAÿù(PZ9!OtybPJYfXECMWWM<*V¬ AG'((õãʼµÀÒÞÜDz›‰{jaY^fw‡•¡¤« h7ÿÑÿÇÿÜ5JUH* ?q˜›ƒz„rvšØ."ÿðø! æÐËÒÑ¿”e9 "(!!<M:%8@2 4NG+=o‹…qZZ`TF@FOX[UCFY—ï4J77+úæÛÍÊËÔßããе—†zdTIO[o§±µŸ‚W-ÿóÿú@ND9,'P€–˜¢ ˜‰{xv¿ò  õÝÓÌ¿¥„`@* 4**-(!'<B+,@E/"3\ˆ›’pZNIMKKILT^dnpŽÍ6;F7ûáÖÍÔßééáÞи›Š{cQBGTl}¥¬§ŒkM866CZ`J+#,Ff‚Ž”­»µœ~wˆ¶æ  #79öÑÃÃñ‰Z:,! > ""))!";L>&%:MJBDVsŠ’ƒo\UWTRNNOZk{yƒ¥×ÿ@G>èÑÌÑÛÙÑÔ͹žŒmaRVf€’š¡˜ˆmQ>367<ED."9Kb}–¬·Ã¾­˜ˆ’©Ñ÷(.ñ¿œ”—‰g9  7%  .+&1?C>2+/@R`cabizƒ~nga[WTTLO`w~‡—´Òú.MW="þÚÇÃËÈÄÇôŸŽ„{xmo—§£—~jYKA92&#:WgvލÉÕεž—žµÃÔêþùÒ¤{e]W>ÿý $! &-26>?6* *Fg€rbgruqmeYQTYRQ[q”¥ºÏï!DR<%éÙÖÙÐľ¶©šŒ„‚„||Šš£™ƒk__^[TG8.*/08DWfz•±ÎÔÅ®¦°ÁÑÏÎÜñö¾hC,    "+!!00,4:8.1V|‹~cWZaimgWLQ[WW]q‰¦Á×åö5>,òììëáÏÀ²¥›Šˆ‰…„–™~omrtodUFABILLHN`~ž´Ã¿´¬µÄÍɼ´¼Íçâº~ZB'ÿõÿìÿó '  ͈ÈJøz«fd‘{Ô%ºrZ7y1Ln´€ŸÆÖ§ÿbU5¹“¢Ö«% w Ç ª § à ¬ o + í » ¯ ¬ Ç è    ÿ ñ  & h ¬ Þ û Ð T V € à 0 ƒ ÌqÞKÛj)ànªóOu™ÈóI¿GØ»„KêÖn̹˜|ŠÝ7± ‘   Â#&=䛄IÄŒV?nD¼}D£j}¥RsDTÞJµŒM%Ì¢UkŠÊÊó8! O Œ å ø  K \ A  å ¼ © ˜ ¦ à é     , X Ç Ý ë ½ n  Ü Ý ú , : F [ Š ¼ Y Ä ) »z&˜ÕkÀ7²Qð©o,ë\¢¤©ÃcÕß³Ûও ¼çì"|2 á@[* 7DIH0%â†ëy£„üÛ®H¥‚ÿÅ "ážÊöZr›XGV5¾ [n« ¸ ñ J Ý  # 4 , ÿ Ä ‰ Z M C c • Ô  ; R l È í ÿ à ¿ x  × ¯  æ     ! 6 Q Ž Ä ( µ 6    Å h ±‹`JB#ñ‡ƒÍßêÛEiPc‘àÚ˜­ßúÅ-‡Î൥e3‹´_ˆùÎ(‡zâ‰lƵ³˜€vO•Ã84’Ä ‡8å“$ô è ž c  ð 1 ( ù Í Œ > ÏÏÑ  ; º æ  1 Y º Í Ä † G ÿ µ ‘ ƒ ¥ Í ö   ñ È ¥ “ ¥ ± é D š Æ Î Í í $ ¢ ) Ý „F!î‘$¶ŽxÚ’$rÕúpøgô˜qæó:À" »¿nBí!:Ìð#ýÔ›Þa€$ý9s-ì@~õ¢ Žm£Kv © ] * ‰ ß ¹ É ñ É ‚ _ D ÷æòý  D v ¤ Ó  ) K e œ ™ e ) Ý • k S ^ k } ‡ … „ q P /   4 m ¯ Ý é â Ý ç ! k Ù 1 ± V ‡¶½ÎokSð±2#CB?._y4ê”vÈ1ùt{oßaP"iŸ«šµ•" ½ûÕ¥®hÓ ¿ ƒ ç SX% q~ƒ.85 â ­ « & ± [ U k v L  üÝú¾¹¸ºËà  & D W e — ­ ¢ ƒ L ùêú " 0 2 0 &    ! " = o ® å   ô ð û   O ² 9 ’  ~ Q'ƒ*톓gÕrã<sãøÖIC€÷(‡¥sc¿öU‡C úÊ”¢7që0Nœ#qÕ e  o š ed ¬ ï  ˜  R —ü½˜­®¿ÝñòÕÄ?é°ŠS--?Ue}žÂæôëÜÒó,…â ! J < #ýèãÜæñ , M a s “ ­ º µ ¯ ¥ † › è W – Ð   þ =ÈKŸ_9í•%ÞS©|+›d˜=Ñ[%j\wy)ãðÞèLsÌè—æ˜@ í í ç ”   P  … I  ¶ ” \øwû¬xzqƒžÀëá½I¿/Ç…4æçãèãìý%Sƒª¾ÂÓê?¯Jí`¶±š`;&2g›Å×ë  T € ˜ ¬ ± ¦ º û P ‡ ¤ ­ Ó  ™ J ]„©§g»j#ï?޾¼ i^l˜áRWXie — ” ù•™|ýMê" › ò ¦ )Ü¡³æ $ U )É" =ì̲ÁÎï6bDù_º*˜g[X^VE+$-XÂç÷ü%vÛw ¹Cwd<Þç{ökÀé  % ; W Š ©   ˆ ~ › Ñ  ; \ v » ° q Pº-œ2øÂ›|1Á!µXæ­ªÎçÀ_Ú˜8 “ Ö  × ú ÷=\<ä! f ‚ J @ º4Ó ã\Í »6™f:<)&,=RV\'ÒRÑt413Nel`C% Fy¦½¼»¿Äî…ûŠ"‡ÏÄ«wBJnð‹<ß7i[M[žë  þ  ? Ÿ ï 3 j ™ È  f Ù X Ä  D ¡.»m1íŽ q '  ! â «  ” k ×  _ + , ¾ }  ˆ ) € W 1g ½aèž“¿îÚ™î+]žEEn„p5 ×`*øÂŽQ+*EVO:# /S€Ÿ¦š–˜™®ÃJº;¥öúÔ²°µ r(¹5=û$£7½  ) ? U ‚ Å  G [ O 4 N ¤ & Š Ó  @ r Î B ä,’ Ç Y 9 / F > 9 H R u 3 ‡ µ $ýä & ˆ Þ  × Z‰Ç1Í’4Øu?A=õN¼r7O{¿üàŠDðB÷þ%# þ㯬ÁÓí!  $8D\x«í,Zl|€‰‹›£¦iB7&¬tg<¥È­ºð J › Æ · ƒ w ¬ 2 à 3 l e a f w  . § Ú  Î ´ ¢ µ Æ è  + 1 Ï "oýÒÉÔàî­;‡ØIØ£€W–5×k'úÛ¼a+sMENz¯Ûõëߺ’e? ÿþÿëÿÞÿêÿö=]a^m¸ÕÞϾ´¸ÍØû.s»í ÅŒ‡ÝMÏ/fy¹&³ÛýWªÿ % ùâ  †  R a v l R H b ’ — 8  ö  0 ` Œ l +–èT櫇{{‰LÖGª6$?AíS¶Y$oðzϹ‘Ÿ_4Me§ä;÷Gi„p`)å˜^-ó¾ˆfHHVjc`m™Ø &þظ£ƒ¸ \£üû¸/©qlÖWÔ +<¹ À¨/³é4¢ h|M5xý l ½  ÷ ¹ ‹ s i‹ƒu€²Øî¢/t¾£S鱜ªÆ•X«E#8Zª8^Áj 7 pìt ÿãÿÁÿî(’ïVÀ)“ç5b”œ¡o/Ï€#¸Jã4ÿùÿÉÿ­ÿ|ÿjÿcÿšÿñSŸ¹É©‹MÿûÿÁÿªÿÐÿî6¢ö+ÿ¶7ÿ©ÿiÿdÿàui«‘.á˜n¡é] ‹{ÀJá L m @í¡uyïþýùíý@‹Û+±?'2aŠfögï6B ŠR‰VDõ^fœþÿbÃJÊE´öV­ hÑF3ÃoåJ›jÆ,—&³u8Fm¾7c_[»Hí®_N[ªP}!pÿ©ÿÿÿŸ„.skK\Ø’[á%J]uŸôl u¦g4ûâ +96ú»rôqÈi£-ì>gl3Üq{pqaÊ€~‘zØü½u¥!— r°×õsÚ j ì Œ > ú » B ° Æ æ ­ n Ñ ! C ª¾ÈÓ RÕOÿ´ ¦½Ýï2Ñ PÿýÿÔ…ÇÁ:ÿvþäþ©ÿ#ÿà›øàžŠÍ„Qü=iîŽ hµ  c~™„T8c¥Ìèã¦i «=×[Ë;Ÿ`c¶øúðP£»‘¯ ª 8 > ô  : s è º ¥†D£ôñÑ»Å,¥h"úîãŠ;pA_®ÁíëΘ_\ Þ , ‚ ¿ " š [ %    Íz«¼tñãƒj¼÷q„ÿ‡ÿ$ÿWÆ Ûp*s5´ê3¤UŠÓ2 [xmZ~+UQ Ä^£P÷ƒïÂöB”#”MõQ J — ‚ï¾BÕ~F)Ô{éX«çLÖ³˜£¦¥£‚ q! !‡!‹!‘!) ¶ï+5O0ñ”4>¡ô)16_´ n¹ © J ñ V £ t )âm e$+ÈßÿÜÿÿÿfil ÿÖ'àyá &|á5cm„É;¹9>]N€·¸ƒRݦj2îÔÙ!Kf¿.üÌèÌS  Ð×컜ÿ$$&ô´Jätü ¤!g"L#$ %&,'H(Q)Y*)*å+r,%,“,ë,Ì,¢,+u* )Ý(ö(&ö%¯$K"å!Ú! š TbSr˜¾°g%U¸1¤¾Ë3l ( ¯ªl?ai;ÿ›ÿìxì²5ÿû.§=­ÖÿLu\;@„Ø÷"oÊâÊ¿³¸ªwA(jÉÝ*¤­ÌE‰2 É \q?NGR!F"®$R%&x''’(!(È)¡*r+ƒ,½./$01 1Ò23?3ç4]4·4ÿ5z5Ø665í5y4ù453€2œ1Ã0š/@-Ã,D+3*t*)”(î( '$&x%ã%]$z#L!Æ Súº­¬«ºcõÆFu © ÷ Û#Z¥ÿêÿÏH[-ÿÂÿ‹ÿ¶GáAH1E5úƒŠ¸«ÿÔ%w„qz–¼ÖÄÌ÷{ØE-t L V eèy¼!$¨'¢)û,~.c0@181Ú22v3-4 5>6f7¾9?:‹; <6<Ã==X=”=Ü>>4>e>Ì?7?ƒ?—?·?†?>>¤>=K<“;{:(8£7"6 5G4Û4P3 2´1Ú1B0í0¶03/l.,·+)‚'ñ&i% #Ò"”!j¢žµ.È ì z ½½PaüšYKÊMÿò˜ µ‡w|Œr|¸!”éÿë7k\8@cr¡¾I>Iˆ•M EƒÕù#u'¼+‹.À2/58:;±k?r@½AþCODÅEáF¸G GdG–GÜH4HšIIVI¼JVJïKkK¥KìKÓKšKJ˜IîIZHWGE~CôB¾AÜA:@{?}>9<ü;ü;^:å:i9¼8Ã7Õ6˜5U3¸20(.i,§*ÿ) &ý$Q!‹2ª4ö[ æ hôe¤Yéh CÿÙÿõ[~]ÿÖÿÕ !8f¹èàèð­:Ïž±‘åV˜ ¹ ¯ ±S[yït3!Û%ð*x.Æ2°6c9Ä=@´C¨E'<":$7Ý5¢3E0ç.v,H)&z"šiTîŸ) û ë1 –Ä£Ëކ˜Cÿêÿ¿ÿÙ ?C>_‚—”2ML‡+øŠ_G S ôGübà7!ÿ$ù(d,•0î5i9œ=ŠA”EOIBL;NÜPQQjQëRµSËU-VuW­XÞYç[ [Æ\J\`\{\‰\ª\õ]\]Ã]ù^.^†^÷_k_Ä``````_ý_v^±]¤\³[ë[[ZºZX¾W&U[SÓR”QnPSNõM¸LµKøKXJvIdG«EèC‘A=>z;’8¢63n0¹-%(ê$q Y*•Þ. F A ä*‹³š:ÿÉÿÿyÿ½"(I3©  ö * ;  û %|ÖëâZ"Ì&^)¹,ß0O4#8_<„@šD”HoLP0S·VXXÝY§ZZµ[ž\Â^_U`saˆbzcdIdÕdÝdÖdždydld€d‰dXd(ddKddçe%eSe}e±ffGfgfedÙdNcïcºcebùaø`¨_]Ü\Ä[ÃZXýWeUþU TQS¹S QìPºNÌLÙJGC¤@=¸;7844“0@+Ò'î$Ñ"#.Ž=§ . ”˦› Â$ÿÎÿÍ !$!8†TYoáÛËo ” ž$À(é,ò0Ÿ4'7Ô;Ä?ÓCÿHL PSÑW«Z¸]™_N`æa†bb:b—c`dueÂfÜgËh°iƒjkAk¹kŠk:j¬jDiýiÒi£i9hähµhài#iŒiÖj$jwjÜkck·kìk¥k+jj'iùiïiÐi™hâgãf´eÇedac‰bda_Ö^á^]}\ï\![GYÁX-U·S OËL¡ImF‰CX?á;Ê7q34/g,(ø%k!5’ 0Ú ˜¬†RÂÉ/ÿÖÿí#$["û Ï¿1ɬ½8¯!]$ 'Ã+º0%4a8`<#?ÐCÅG¶KtORçV™Zb]`‘b¡d¤eÊgghg„gZg]gÞhµiÆj–k2kÆlQm!mœmÐm`lËlkškYk#jüj¡jtjrjÎk8kºl lyl×m/m£mØmòm•ml`kðkÏkÓkÚkÈkYj²iïiZhþhÀhyhgdf½fezdñdxcÝcEb3a_<]ZZ¹XTÈQ–NJ®FþC7?>;87^3á0U,(>#f—[§»! X{§ïÚj*D3*/#-ž+G)'^%Â%—%Á'q(ñ+Æ.Ë2ô7@;Û@*DGHjLcP}T%WlZy]þaRd‹fáhôj.k‘lUmm-lçl|lZl½m_n!n£næo'oLo¤o¥ocn¯mêm?lÒl´lllHlIlzmmšn5n´o o_o›oòppoÉo@n³n[nZnyn¡nªnfmúmymlçlÌlËlºl£l‡ljl^l;l k¦kRj—iÑhlgdãbÅ_ë\õYqUëR@NÐK5GhCY?N;D7”3i.©)k$a™ü Þ Ö 2ÃbÏøñ:8-:õ9[6æ4Œ2Ã10û1*2ä4Y7G:¡?CfGÐKüOùT.Wü[¤^Ša'c‰f…i(kolÁmðnŽoqoåp8oïo`nÕn¢nìoSoÂpoøoêo²o™oAn¸nmLlâl«lÔlôm3mMmnnÑop3p½pýq/q1qNq:qp§po oWokožo×oîoºohnýn¨nxnNnRnXnˆn¹oo‚oÑoöoÁoŸon“ml…ki›g„eBb*^Ö[XXQUTRRN¯JŽF*Be>x:M5R0*^%ø–©Î  ³O»0³HY;G/EiB§?ù=û?‹B FSKO|SÆWì[³_§bèeßhj'lncp2q„qýrŒrÁs!s r÷rbq¥qpÀpãqqMq[qpµp5oÛo|onˆmúm»m£mþneooyppÐq¢rss s—sÂsÞs±s—sqiq±rrIr:r qµqyqPq$qqq"qqFq­r:rµr÷s's rárŠrUqáqjpioWm˜k¬ikgQeHcža[^ŒZÏW/S+OK Eþ?½9j2Ð,”&mÑÖMö w$Ñ÷g]‚[‡XUÓSþRR©RºT;U¿X¦[á_ÁccfÈjJlôo?pžrstu‘v…vÀvÇvWv%u«ut"sKreqfpoõo¸oožo{o-n»nenPnhnanUn3nBnhn÷o¢pqYrEsYt_uPuÝv_vgvevu±utsr7q¼q^q†qÒr@rŠr’rxrCr-r&rrrr'rrrCr sshsÒsüsüsÉsÁs”sirÉr pÄoqmélvk iîhWfycŸ`¨\÷Y¦UXPÇJ·D:=6Ž/ì(Ï!ýtý X FÇÊée c=`«^t][ó\\1]’_aªd/gjlÉo q–ss½t½u¢v³w^wÕw«wvävYuttosHrOqPpon!m¨mTmBmlæl¢l”l¾m m0mTmxmÒn=nño¯p˜qjrbst¥užv#vvvruïuŠtÅsÇr¨qpøpkpmp¡pøqp÷p²pTpoíoÀo ooloJoDoAo€oÍp[qq™qðrrgr™rÚr¢r/qDp`ognm¸lúkòjìi g,d=a`]}YÃT~N“G’A :93(,%ÂŽyQ  1uk«j8hEfÀeéee;elf¹hGjwlanypÉrñuvMw wHwôxœyCy…y¦yCxíxw)uátŸs[rFq!o·nWmlDk˜kgk:kCk'k?kwkêlFlÏmfn/nðoØpÊqÖr×sçu v%w wgwÅw‰w3veu·t§s]qøp§oÎonÿo3o€o„on‰mËm*l lkµkBkjÍjækkvkÞlm}n‡orpTqOrrës's'r”qýqUpÚpypožotësfqÈpAon mmjmClÂk®j€ig¼fˆeed†cc b™bÊc cÓd…e™fµh)i£kUm nÇpoqcrrqÛq|qUqDq8qqp‰p'nØm2j™hea [#UN3G–@¤9‡2]+"$—- t ÒpäpXoÂovoso5owoúq&risÏtôv wix}yFyyÙzz|z·zºzOzyBxgvýuks·rFpèomôljh@fãe­ed‘dhcûdduefÆhˆjWljntphrLsñu“víxeyUzz3z_yèyUx8w/uÂt-rzpëoŠnl÷ls[qqo‡mÎl7j¢hëfüec.aÅ`‡_É^ò^€]Ý^^Ÿ`1a¨cÜf)hèk±nWpÎr×távŽxiyz’z·zðzƒz y xvÀuHs™rptnˆlŠjíifòdPa­^û\NYøWºVT.S QòQÏQ³R´SõUæWYˆ[f]ï`Ùd9g«jxlÕn.oŽpaqJqãrrØs.sCss2rƒpñoŸmSkg/bÑ]$WÈQÆKÁE(>O7{0È*ì%A ˜žpðpÞpçpñqq6q r8s$ttõuîv²w`w³wåxxlx¯xØxhwèv®uos}qknùl–jDhfd"bp`^î]>[æZ©YÅX¯X W–XXëZ½\P^Äa€dæh[k•nvpËs6uOw¨y>zzz¸{ z®zWy{x¨w\uøt@rËpÑnok¢i=f‹c‘`,\µYdV*SQDOˆM–Lf(<ê@Y?l>U=Qmk hdå`Ù\ÀX`TMP K!nn‡nåo%o\o´p pSpzp¨p p}p4poÅoÓo*nHkÞiBe$`ð[ÔV¡QtL‰H;C¬@S=U;ò:Ü:t9«8É7Ô6é5ÿ5e4Î4Ç4Å5}6S7É8¤:ÿ>CGHîO…U¡[afgmhrvváxÜz˜z{ztyzx°wMuøséqünÓkhf‚aš[€U.NgG¹A;^61ü/?, +‘**…*H*®+9,.,¨-ý/€2æ6Æ<@AGMnS¾Zy`Ófñk€o»r]u;v¢w´w w³wFwv>usÓsr@qBožmìkshëe·br^à[ˆWêS´m²n6n“nËnìo6ovo«o¨oŸoSnënznEmûmêlÎk]h#dÅ_ÕZÃTãNüI^Cû?Ž:ñ7Ý59423L2ø2K10Õ0/K.©. -à-·.B.ý0P0í35â;ozrEtúvvûvçwIwvMu;t†søs‘rÈq©oýnol•j¯h“f’dPa³mñnŸnöonàoo3oBon²nmLl‘lkkÍkhjem`v[‡U&N{Gi@z:~4¯0,ˆ*Y(f'Ë'!&û&¥&&}&n&&%Á%_%9%)%x%Õ&o&W'¤)Š.230:kA¨IèQÿZ)bÄiõpµt”xxàyƒx³x8w/vGtÉsfpðn\jBf`RZXS"K£D@=7…2E.î+Ÿ)Ø( 'b&Ï&Î&ª&›&D&a&{'þ)Í-f16*:ò@ÜG&N(U<[½aèf¼kn÷rutMu¶uòv v–v/uXt°tu=ucu`tÙtNsðtts«rÀqëpØoÆn‡mLkìjon¦odo¾oÐo¾ppDpcp$oèo3n@m/m kÆi»e:`€YõSˆL'D|=5Ý0M*ó'Ï$ÿ#á"“"/!Û!í!Í!Ò!û"&""""W"±##/#+"©##Ñ'*§1#8 @§HðQ—Zb•jpoÔtîv÷x…wów­v”u tBrõq:o§m-jšf†bD\vVsO¢HÈB[<7?2ß0I-º,P*Ø)ë(Ñ('u'Q''”'ï)¦+Á/W2¼7W;ùAÞHNçUÀ[øaÜf~kRnˆqZr”sæt?tœtetsÁttjtOs¶s0rnq·pÎoØn½mžnˆo0ooÈoèpCp“pÚpÃp¦oòomÁmtk¥hÕcm]ûVóOùHg@«9Œ2Ž-v(¨&3$#"‰"3!ù!ÿ!Ð!±!°!½!¡!¥!Ï"/"™"î#"#"»##`%ò(ß.µ5=FE0M´V|^¯fÔlÊr€uvþvvauYt‡sorgq pn;lGhÝe4`[TþNäH†Aê<^7S4%14/r-}+÷*8)'ò' 'Q'›'›(¤*,Ê/|3i79>FNV:^–ellorTror°qôqopáp‚p=p4o“nÑl–iüfb:]™YS¸MÉG A¡<Ù8ž5 2/Î,Ê*X'ü&Ò&&#%ö&N&'¶(ù+ˆ-ç2"6Õ=hDK‡RØY¸`¤f k5n$p«q‰r¸rürçr´ss°tHtutKsÅs‘srQqLphlãm"mŠn nˆnÃooÑpQpoÑoMm“l-h©FWMöUi\ßbóhål~oŒp¨rrmrjr+rdrús»t(ts¨s¢sUr¨q¶píl|l‘lêmimÝmñn!néo„oÀonÄlçjõfT`ßYgR`JÇBï;–4v.ï)L&!#¯#\"ï#"Û"Š"!Ò!§!Ë!ú"L"…"Ñ#5#¡#ì$L$Ý%x%Ú&M&À'À(x*Ë-r2¨8[?èGZO,W]êdÃhñlummIl)kJj›j8j€j÷klml@k®ijfÜcG`<\TX>RÀL‘F+@m;¸7&3H/+¤(-&'$€$G$$ƒ$‹$ô%b&±'²*Ÿ.4 :CAúI§QjY_­f>jnCoÉq‰qêrq­q±rràsnsbrús rÝrBqfp½l;l&lmlâmIm0mDnnÓo*nŽn`lPiÊd~^±W#OìHM@v9N2X-/(%e#‚#‡#A#`#J#"»"s"Q"m"ƒ"Ç##|#ë$q$æ%€&>' 'Ã(c(ý)”)›*à,–166=fDYK¼S$YÔ`°eJiWj[jÙi§h¼gúg†géhui›k kïl‹kii»fÁdRa ]ôYSKÿE?Ù:r5È0¼,’(w& #û##8##€#Å$%%«'ö*±05Ü=EDMQU6\4cWhYlºn·pÒqMqŒq.q qQr"rËr½rMrcr>qŸpÎp=l(kællml¹lvlrm>nn‰mýmík¡hƒb\ U(MÚF8>n7p0Œ+¬'$÷#v#¡#s#™#¤#‘#T#"ï"ú"ù#6#ƒ$$“%U&"'8(Y)œ*ð,,ñ-j-:./Q3?7Ó>FDlKQ˜WÃ^)bÇfþhdi%h"gbf±fAf®gLh²j\kÓm2m lMjh'eQbü^¤YQÙJòDV>08·2Ñ-ä) &)#¿#4"±"ô"Ø##f$@$±&“(¸-€2Ó:bBJ:R3Y~af¢k²nÞ?òA5CšF€JLMÁQˆU~Y…]ºade@eûe¦e›e¨e¹fmgehýj“l>no$poÕo}mèlói¦ek^UVçN¤G@8¥2 +&p"õ"N!ª"!Ý!Ð!£!à!ú#N$(E,³4;¤D€LðU&]¥d¸kªo¬s s~sèrÌq“p…pip€oÇonÙnÙnYnmïml8kÿk¿k‡jÙj¦k>ll´l4lSi/d\AUNDF³>ç6æ/ü(ø$÷"-"!“!ó"6"°#"#g#„#o#>#d#Ö$Ë%€&Ï(3*-70º4Q8.<'?`B&CÒE`F GÜIÚLzO´RmUZX‰\_ÐbÍe`f5fˆfeúff0fµgVh˜j k²mcngonÐn°mxl³iƒel^}WEO'G¬@Š9?2•+W&z"Ç"!M!¨!‚!w!P!‡!¤"Í#¦' +<2‰:8C;K¶T\£dktoÞslsÎt7rõq…p7oãoåo)nƒnhnn;n'nUm£lÖlˆl"kÂjüj¿kJllÂl0l4}8½=!A†DõGòIÂKLãN"OÜR=TèVèY[†^ƒaãd‘fÆgHgHf‰fFf@f(fufÂg¾ij«lfmznmËmÔlÙl9ie^CW6O;GÎ@¬9w2Ó+„&ˆ"Ä!û!C!˜!c!E!!@!S"C"µ%±)0Þ8A¢JRh[bÂj§o}sBs˜tr™pøoxnûnûnJmÍmÊnnnCnÁnmLl÷l}lk;kk“ljml‹l}ic±[²UM¹Eô=è5¾.Ð'º#ê!‹!ç!ž!í""N"£# #k#°#¢#ñ$—& 'F)‰,/Î3ˆ8<óAÐF“J>MƒOQ–S TzVX9ZX[Ñ]Q_¯823+¸'M#è#"`"" !™!! ÷ Æ!B!#V&“-[4¥=˜EçNAVÓ^¬fþlnp·qPq×pTnšml–lÊlWl#›!q!þ!Â""a"ç#{$$«%%L%Ã&N'Î)R,M/p459?6E|KÞRWN\f`cÆfhXij¨k kckikXk¥l_m{no?o oƒo€oToC5Á.ž'#Ú! "!Ý"6"h"ä#x$&$Á%:%†%ù&\'®)',*/A48î?)E‘L>RÌXx]ïbfh®k:lym¥mìn?n mÊmÒnpopmpôq/q qpüpõpwo¡n‘mÐm)l·k¯jOgïe§bu_c[VwP¢J|DW>µ9é5!0ò,W(é&$ª#†"ó!ò ùù_Ðü‰ H"´(¬/j8*@NH’PâX‘`¶fuk`lÛn mk´jlj0j¡juj¼k}l¾m¤nÙpEnPmÊm|lélbk¿k¾lXm+mêmmmTiéd²\äV_O G'>Î6M/"'ó$8!é"_"-"ˆ"—"æ#d$$³%8%’&&B'u(ò,/3¼8ƒ>ªEKëRÂX¸^Kbrf°iŠlSm¯nÜoodoOooopœqtqòr=rr qÂq´qp n’mrlOkaiºg­d”a‹]ÉZ.U»Q KEÃ@J;g7l3`/Ä+Æ(¥%æ$t#<"‹!z ztÕ:`ú¿"'ò.™71?G*OTVð^ôd°i«kZl¾kêjÒi´ižj*jjzkSlŸmŠnºp%mSlÓlŽlk³kCkml#lúm®m4m7j e]ˆWOÄGï?¡72/þ(º$È"0"o"8"˜"‚"Ÿ"ø#”$%$©%%i%&ž( *ü-ç2;6Ž<9B+HÕO¤U¸[>_bc¬f¼iÆk{lüm{nn5n:nƒo@pLqBq×rErqÕqHqpyoimÒl…jéiog dE`t\°XjT[OÍJûEÆ@\;ž7|4H0é-Ù*{'À%H#Þ"¬!ø ò 0²#Qç"](1.Ò7@>íF¼NÈVT^/cËh²jikÔk'jIigixjjjjkHl‰mbnmoµkækpk;jÚj©jij¼k‘lrml°lÙiöeZ^W­PTH@K7í0´)g%B"U"I!ø"Z"."/"m"ö#v#ó$Q$¯$¿%¬' )Ý,ª0µ4§9Ý?REÄLRÛXƒ\Óa=d…gÜiökèl¶mom–m¯n n×oùqqÈrGr qžpâpoàn×m=kìiùgýdÐaO\ÅXBSxNùJOER@V;D713¸15.l+è)6&þ$ë#˜"o!¬ ¨Û%ÏQC +"£(n/ 7`>âF†N€Uý]¶c2hi´kj{iÓi,iaiýiùjHk)lfm6n%oKh¡hMhUhRh’h·iRjfkclkÉl+i¬e^”XdQIVA#8É1y*$%Á"\!Û!J!®!Œ!!Ñ"@"¬##z#Í#Ç${%›(*Ž.,1­6\;,A%G•MýSáX¤]Y`÷d¤glklÄm mpn=oip¶q’rqÉqnp¾p`o¤n²m#kái˜gbÿ^¦Y_T8O J1E]@;-6u30B.],*'û&9$}#="!P U­- ¯è² ¢#5)/·7þ?mFÿNûVs^cbhi°jìj]iìi~i¿j=jjTk/l^mmÊnµeKeeJe©fdfðgÐi"j=kjÏkhiOe±_YQ®JAê9~2*®&"B!M { ê æ!!T!¯""z"å#,##d$)&&( +@.V2™6×~6z.™(ù#Æ!ž  I 4 ‡ ¬ Ô ü! !Z!\! Í Ì!œ"v$M&<)+®/]3@8j=ìCÑInNnS#W_[ö`d$giÓkzmnPp?qÔrûs@s‡s=s#rdqÞoÍmhÈc{\T}L¿EÂ?‹8ú3L-D) '&ê&¡&Ê&Š%Ý%&$ "¾! }â2ÿVB·µ"0%Þ,3!:ÐAòIaQtXâ`#dáijUk>jìkNkqk`k jƒjxk0kÿl kÏk×OQUTiX7\€`Œc¿f¿hsj j‚k¤j¿ifd°_#WtPHÜ@“8h0T*F$”!îëý¹ü ) = U Š • L   Ÿ!Q"Ø$i&»(è+ù/3l8=wB°GÀL„Q%V&Zâ_†c3f«ikim5o`pùrIrÉsSsFsdr¼r]p$m™h5b9Z;R0J>C<¤5/)µ&½$Í%'%4%‚%x$í$J#H"4!: nûfM}ûþ ‹ ¦#]'t._5<‚C‘JëRæZ6afeóiÁj±kWjùkwk¤kSj¤iöiÚjok kjÃj¸GbJµNæSÖY<^ƒb—f4h$jjÍkñk5jkf^a=Y½SKqCG;2Ò,\&/"é EÞ=bTkm„»ß¾®´ K!"Z#¦%‡'])ç,o/á3€7éÜEðM.Tó[õbög4j~jík@jÃk5k=j‹ifhnhhAhšhSgágª?ŸDIPOSU¿\-aeTgŠiïjÜlkjk+gÔc6[ýU’MýEå=ƒ52.Z'®#¿ k£Å«ÂµÃõ-0Ku  ×"#$†&( *,Å/o2ë6‡:ï?LDDIaN¶T Xì]˜aƒe‚h¸kún+p.qr r/rŒqæq‰nïkÙe¸_VœN‰F”>ì7ò0>*¨& $ƒ#E#™#•#¶#±#]"ó"=!u ´ ±DiÝ ° é!å"§&>+J2Ì9©@ùH"OQVê]›dihSkkkjijÌj°i§hfßf?f feydÝdo7¶=/CJvQµY#^ñcåf”i†j¼këkpk‘hìe^ƒXžQJI‚A+8ß1·*·&)" þÚ‹Ÿ€‡¤áýC’ B!"*# $K%q'(·*Þ,Ù/q25À9™>kCAH NSqXŒ]aeyirlGnìp&q?qHq¦pãpamj c¥\ØT†LŽD˜<š5†.)=%d$Z#;#L###+#"Ý"š"!6 Z™<ß#ž ç"H#ž'Ñ-Q4ÿ;úC>J~QXå_e~hòk.j½j’iãji¢h-f dXcb)ah`O_C^W/Ý6s=ûEÉMÙVK\ÿbºeçiajÕl k¤ljføa,[åTñM’EM<ù5w.5)$R!飅ª‰‘ÁñV² W!"##ò$´%½'(Á*=, -˜0S3“8T=B¦HONS©XÅ]Þb?f¾jmPnïpDpOpÎpoal)h7aqZˆRLJPBE9õ2ä+ó'Ù$š#Ó"Á"§"x""m"8"! ¿ÕÁ~ÜQ K ¹"|$k)=/+6÷>E0L„SZ›`^fQiOk jVjisi‘hÁfåd%aÚ_ã^ \šZÝYNWÌ(ì0I8«A I¥RÓZY`ãd·hÍj—l kÊldjåhŒc¸_:XçREJdBH:˜3I-Ä(o%#!Ý vWNýÜö!ë …!0" "þ#Ô$W$õ%å')(Z)›*R,.x2¸7<£B9H1N S£Y4^cfùj×mnÒoo½nÄmâj/e½^¨WªO‡Gp?i7"0‡*d'$V#¡"¢"v"E"H"-!í!¹!( G_ª~[ÚX ˆ!L#¯&g+Ô29Í@ßGêO$UÉ\ta”fØiIj–iÅiªihágmea}^c[mX›V SUQN¹"R*h3+7Þ1Å-'÷$²!ì è×£@JN´ . á!"+"í#€#í$$!$>$˜%$õ%}&"( +‡0x5Œ;ÁA»HN´U[3`Ae_h¥kµl„m{kæj;e’`kXùQ¨I}A(9€1ö,µ'ï%Ú$ #Ï#W#:"ë" "x"!• ¼½€ª¶– q"$(„,é3\:A‹H¼OjV[`ìd€h0iiñhói h$F#í#ª#5"Ã"–"3!w yäiœ£½ ç#¿&§+0î7Û>ÐF.MˆTZk_ c¸fli:iêiåhºhËg¢eÅaŠ\éVõQnK’E?ª9Ï520ÐÇ.#R+ð5†?öIïSNZC`ùehðjœlIlGl™k*ioeÒb]]-W·PëIöBò P = † Ã!:!Ã"U"Ñ#.#§#Ñ#Ê#l#"¯"m"¸"Ý$0%›(ó,Å2!7+= CI…PV3\R`§dÉf/ge±c’^?XŠPíI~AÜ:/3Ä-‘)¸&6% $5$]$#®#2"³"n!ø!) :jŒÙ  "i&;*;0 6)=ODqK¬SYA_bäf¦hwjVjTiàhbh fc']»X@Q˜KDkJüQJW¡\K`ÔbucòaÝ_kY¿SÎL?Dê=¨6R0z*õ'Ý%$i#Õ#û#¿#m#"¢"&!x £âC šo!ª$)(÷.4Ö;€BÐJ$QGX¬^{c·fŸijkej¦iÅg÷g-dj``YØSœLQE=‚5¢.R'!þ ‹ët’(“2d=G•PmXp^dg´k l,m}m l›jwh;da[äV)OPHµBC;÷6T0s+ê'³%^#*"~!ô"!Ø!Ý""u##q#™#k#J#"à"¬"Q"E"J##Þ%ø(^,=/ý4þ:(@KFžLìSIX#\ï^º`8]ð[CUrOxH@ã9é2Ê-\(e%ñ#Ò#t"ü#"ï"Ä"¡";!¡ ç Fáw|H 2!1$K'¸-k3e:™AH©OÿVÔ]Ðbægdixkªkákðj‰iTge~aœ\sUN#Fc>{6G-õ&z¾Ëf °<s!ð+&5Þ@ÔJ–S@Y±`±e~iåkÉm™mmËlejµg˜dö`¸[ÕU}O3HÄB¸<ñ6«1M,L)&$§#^"û"Y"$!ò"%"ƒ"ã#"ë"®"["&"!É!Ï!Ù"‰#-$å&Ð)õ,é165Ã;©AÒHMNÙTY([ \œZ+WdQK§Df=C6g/l*[%å$"["D""."<"!!è!f  6èÛ‡·Ö!l# '$+‹28ß@lG…N|UÍ\Eb²fñj©lmm*l{jƒif‡d(_XÙPyHç@¢7÷/.&sÝFø !; wâÇ#õ.)8ãC&LWS±[€aSfõiëlslámÌmkþi|gscþ`ZºU(O+I³D7>08•3?/R+–)S'%ó$Ã$=#©#„#o#Œ#­#˜#C"Ê"q"I""@"U"ò#‘%&«)<+†/(38±>“E KžPôVGX^Y×WXTšNçI+B :ð4-*(Q$1"¯!M!^!D!„!¨!›!Z ö } € » Ž!!Õ$M&Ü+°0ð7ô?FiMkSÿZ÷`»f>i‚lzm?n+m>l i›gìd¸aE[SÞJóBÐ:;1-(eÜÅŽ ¹tF ’Û¬»&M0®;qE=M›V8] cúhkklUmßmÅmSkpiçgd@_ÑZãU?P@KE?ô:S5¥1F.F+G)v'±&Í%ï%$ä$Ž$m$R#û#y"ð""C"V"d"å#W$w%¬'¾)‘,Ë0`5±;MA±H:MµS9U~W T‡QÈLFh?[8@1t*”%ô")!  \ m ° Å Ã ¶ ½ à!!3!x!}"#ß'#*t0 6'=¬DøL1S;YŠ`)e+iÂlnbnŸnÙmIkhªf b¹^V¦N©EH<Ž3¥*>!ŒFÄ ¼!à8x â¼–(j2ï<åF O Vš^ŽcçhLj l:l´mkýjôhÀfÁc^_nZ“V,Q„L¾GµBn=˜95Š2/Å-z,,+*\)c(®(1'è'ƒ'&f%á%w%q%s%Û&(''ã)™+.1;6 ;FA@GhL®RTLUÖSaP£KEk>†70î*3%Ä"7!Z í õ!!!$!u""´#F#x#ò$s&H(S,A0<6%<ˆCÜJÖQ‡XI^cñg÷k¬mBn÷n¦nk×i®fEcs^qXˆPG¤>G5@,n#Rië`‘,y´4cú ò¶( U*n4x>YG·OúXä_sdÿg¡jmkvlÊl›ljgi!fÂd`,\@WÑSO+JƒEÒA= 976t3¨1ë0g/‘.‡-¿,ú,h+Ô+_*ß*„*%** *W*–+5+Ê-.0_3 7g;ÿA}G(LQ5SaTÔR[O‰IïDt=Å6ü0ˆ)ó%²"l!Ã!!f!4!)!!f" #;$&$ÿ%‚&'Å*s-C1Ú6<ØCGJ"PªVÏ]Ebg~j†mŠn¡oÓnåm‹j‚gûd`DYïRšI5@06Ù-$Ö)0Š ú)«çES¹’› |Í|"q+Ó5¾>úGˆP¹X%^êbàf…hBj‹k\kÇjÜj1hg#dyag]yYÉUäRNI´EžAÏ>Ø;Ò9É7ô6õ5ô5<4U3ˆ2½2<1Ó1°1|1}11Á22’33ù4®6{8˜¢D’JiPKV"[‡a.e{iCkMm°nNnÅm jðgßH+PeX†^bœehiåkŽk¯k…jsiÿh f×c·`X\‰YCUàRNAJmG"CîA¨?ˆ>C=<5;E:r98Ó8<888^8{8µ8ð9h9ê:¶;:<”>-A6D–HÔM,PìTµV#WTÍR5MWHŸBè=7v1ß.=+a*)Ó)Æ)O)(ê)\* +I,G-·/1n3Ý7ÎKF¼O¨V¢\…`cÕffi`jÔk“kkAj´j,h5eŠb_;\_YbV(R·O€LyJ1HFŠE D CB\Ac@Ž?³?l?x?ì@"@g@¤A"AÂB¡C4DUE›HJéN‡R>U[XiYiZ WÿU­QiMBH:C >9@63[2„1À1À1s1Q1 1912’3‡5,6»9H;Ù?ÙDkI´N’S"W‹[Ã`…ddgÇi|kkll@kFiŸfbÀ^Y«S"KÇB¥9£0'Ø  zôýAô©§—«piî@ 4õ#Î,c4Š=FNþV[f_ÍbÙfòi×l l{lÖlxlÑl2jÞhIeÎbý`l]¹ZËWãU R·P’NÿMQLKJ8IIHqGlFïF×GHG‰GíHAHÎIyJWJþLMOQHT8WMYÛ\O\ø]W[pYAUuQÎMsHõD¨@X=k:ì:-9°9ñ9Ö9©999'9V:V;W=>®A@CòGìL`Q5UxYe]aOeDgÛiØjKk'j°j4gÐdð`™\÷WàRlJÑB¦9{0½(r îñ òñ‘ÄùÉx£Îh·„æ {Õ#Ð++3U45¸-Þ&˜CÃú öž2wÉ©Þ1Æ\¹«€!¥™õô » þ,C!¡(Ë1.:~C‰KÜQýWZ[aehi=jÛkÕkÒl¥mOmàm¢mkÞjÿjhÿg½fJdÝc°b±a–`Œ_w^¨]ì]™][]\]6]H]p]ê^t_!_½`S`ÀawbtcÐeIfpglg|g—fmdåbg` ]ZöX¿VUSåSÍT T TÄT˜TFT(TFTóU¢V¼W¯Y3ZÕ];_æb½egui%iIi#gÒg.dþb]SXYRÉN*HÅB©;!35+o$w_Í* •Ú­¾ô%.n©›ÿøÿÈ6͘? ZYÊ'u/¦8°B/J5PÙUŽZË_QddgÑjKjþkÛlcmqnAnÊn®nƒmómŽlÌkÌj¡i«hÔgóg$fHe ed¼d–d‰dHdcÖcÞd dHd^dPd d+d¨e¶fÝgÚhžh¾hùhVggeÅd?b‘`à_b]å\÷\\\d] ]a]M\ÿ\´\—\ÿ]ƒ^{_K`–bdfGh=iójdjœi‘h½f¯dÚ`ù\UëPvJëEÄ?‚8&0(j!Ç©q„ ÁzèðŒ@ÒùÇaNv«.ÿÐÿâØÁ˜ \ }Ÿ€h%ô-Å6Í?¢GM2RHVf[¦`df gcgÔhôj+kzlIlºll¿l‰l.kjÖjiihÎh=gËgIfúfÞf½fdeØeNdÐd‡dcsbau`ô`êaËbÂcÞd¶eFeüfAÂ;Ë4È-%¹?Þ` d¾ÄY¹÷ içÔ{Hr ÿ×3Pÿßÿ~ÿÀY¡72¸ £ ÇR#ß+o4 <ìDJJEN]RîW[Å_]b8c‘däeÜgOh¡i»jfk"kpk¾k€k j\i‰hØhjh?gùgÉg¼g‡g"fseÏedjcgb`d^†]e\Ä]\^ _>`-aKbžcådÿe¼fyfßg0gXg”gÕgëh\iMjGjõjìj—iùi‘i|iiÖjjjGj9j7i¬igœfd'aƒ\ºWZP°J_D>‡8R0ý)D!Þ裗 î XgÄ¢ÿÔ"ŒÍ‹-;x!ÿÔÿûBX(ÿ¥ÿÿàÛX Å' Ææöp!ê(Ö19(@&DÒHÃKßPT6X1ZÁ\•]l^½`ajbžc½d…ele¾eàeKdc£c'bêb—bBaúa`ç`_\^r]˜\8Z‡X}VHTßSíTTTÐV W2XáZá]_)`Ùbvc¬dÕeÆfÍg³hfiBjœkÕlÁlßlÅl>kék•kYj÷j‹iµhÆgsfd cjaÏ`‡]jYeSGM F|@Ö;4ú-î%þÐί}  3ÑËÌUu$ŠªŽGI`7ÿïÿÑÿè4JÿÖÿdÿOÿÖkbŠYi ‚l¥Ù%€-4é;?¢BOE]H‚LƒP'S&TçV~WŽXÖZ,[™] ^¤_Ã`Ã`¿`e_h^ª]×]\,[gZ†Y†XlWxVeUUSÓR PMÈLXKVKªLMZNsP†SV Xê[V]_|agcdÐf9g[h}jk mm­n4m÷m½lölBkiÅgêeÔc–a¡_Ü^ƒ\HY¹TÿO^H¼Bø=n8C2*§"³ð3³ é ;<@­·¤ bÇ¥J"+[0I/ÿèÿ¿=ÿÇÿ]ÿ26H*š% …‰B2!ä(ù/É5^8~:Ë<‹?C F©IsK—L³MÝNùP]RSÊUUVÝWoW­VäV&TäSªRFPüO N+LºKkJ HÕGNE™CÇAÄ@?œ?ò@EA“B±DöGÆK4NNQ S—UÍX(ZJ\o^'_Ž`òbÒdÄf«gÚháhÌh•gpfjd­bâ`x]Ï[:Y4WTU³R©NÌI!C=@8È4P//(s †× Ù §\à¯~ýl*PÉ}$:npNiÿÏÿØF0ÿ–ÿ:ÿX¨0g4* g†1î#O)“.#1C2³4}6É9ö=a@mBnCúDÛEýG;HªJK”L|M9MLëKéJÊIGmEC¬AÓ@>d<´:ç8ø7 4ç3Ž22Û34‚5Â8I;U?BrEˆHnKMæPSUVïX×[U]Ô`=ab–b2a±`F_]C[bXíVXS›QZN§KÂGBÍ=`8M3š/°*ç$Ñ¢CŠ ' Ù~ §&=:Nš¸Je¬ÿ÷Cm#ÿãÿÛ1bÿúÿÿYÿÆn,¾ò I ¶ï@ jî#C'†)©++þ. 14;6ô8ö9ñ:ü;Ç<Æ=Â>Ä?‰@I@”@õ@„?Ö>G<µ:¶8Ê6È4Ö2â0ð.í,É*½(„' & &C&p'Ð)#+».º2`5À8é;è>±A¨D`FùI,K#MCP R´U-VOWVeUÉTŽS˜R&P˜N_LIGF©CÃ@©BEGdIzJfJøJJUI­IAH"FÜDpAÕ>N:Ê6í3/k,(µ%4 ÉÖjÞ › :]5Ÿ ¦bû\r—”ÆÛÀl0B†À¿v'W¬¸Tÿ×ÿ§ÿÎ"Hÿçÿ…ÿ‹éª¿Súl ¶ ( Îe5l2BÒùË ä#%&™((è)¥)¬)ˆ) ) (Ø(—'ã'%É$"à!Et¥¶©ÌìËØÞÂÃãKôR!Œ$©'*9-/˜23ú5˜79 :â<Ž=s>>'>f>0>"=;Ì96 25.e*ù(%£#k VuŠm …€©Q>®‡‘¸«1Ë¥áî@6m³¾™qD5G–»‹ÿ®ÿ’ÿá8ÿÑÿÿ™mW ÿ©—ÝÚMKþ » ÇWÚ„NˆNï¿4€– ¯Yj_:à‚ûbö ˆ ¦ Þ Ï œ d WyÓÉšQÛ>!Õ$/&q(()“*ð,À.®0–1ë3 3d3Ö3y371¹/ï,Þ)ˆ&"Þ q„wc Ë ü¦Ýõ—WÍ Él¯cåÕB@Úd7Yºª„€_OGlšcÿðÿ˜ÿžÿç"'ÿÚÿ™ÿ³ o ÿ¬ÿ£l­çl‹ˆk.§ é c B íÂâ‚2À;ö†2ØÚΉkQ3 ë Ê ¨ ¨ ¯ä |óØ $Ï q F —ºÒÍÉú ù‚Í 2!þ$ &/'Å) )k)¬(ã(1&]$6!NS¿ÅN÷ÊÆ 8‡¼,r›Ïÿú(½tŸXÙll¦UQ‘‘…˜c^QYiŠw!ÿÅÿ—ÿ·9ÿÎÿ ÿ±<ÿ¬ÿ.ÿ*ÿ­}7½k‘ÁXw#†Á; - V ­ ô Ñšª© ê Í ´ ˜}nZhkÄIÓžY/ï!p~½mò ‹  Ƨ…<¶ ƒO0UI*m~@+u% ®Âí¢¨)dcÿäÿöœ+rV øb{?Ђhsu_hˆ¬O]_]ZlhG ÿÄÿ®ÿØ7ÿ×ÿ§ÿ¹ViÿÂÿÿÕŒ!/£ÿÐÿˆÿå>ÄÝÿH±Z¥I¡õ½\†¾ÏáøQáúÏ—•Ÿ&ÑÞÔ÷eÖ U · =ÚqÉSæ N:ûŸ ‚ ] ;  •xts PNñ$fFÏUf&÷ñ*fyBê–y„tJ:^’ª=Rcnoyo]/ÿçÿ¿ÿÏ,*ÿÑÿÁÿå&UWÿ°ÿÿ¶xRÿ¯þõþtþÒÿ¯ìãOw: ZšÙ"Í §RÿìÿÅÿÌ2E>ÿõÿßÿÌÿé kÓoɘ~X0ÛÚ ¶ … Ñ ñ ¤ i  ¾ >£ÇúÀXÒÙ:n×6›ÿö  ;êõ%\lTÍœ†cL3=g‘0G_x€j\= ÿçÿÜÿò #ÿüÿïÿñ`‚WÿÁÿÕE¾ó£ÿûÿ|ÿoâ¢ï¨6óÔ°¬®ÊêçÜÙÌÌÛô îÜÎÄ·•©ð0€Ë!à6ŽôVµó$<eyœt8†¿®u™6¤/w>µ5h¿áÌá+kr@çÕÄn<)/Qp2N`haZT`W)ÿ÷ÿÙÿå,1ÿþJmpDÿâÿúIµÌzÿèÿgÿ_ÿ¶Yå ånÿßÿ¦ÿ™ÿ•ÿ¸ÿâ;OVU\o‡§Âà(äÒ§Uÿù 42/;Sj€¡¹ê%n½íø½+ÿÛÿ8ÿÿSÿð×úÃs@VŸÑëëçù XoZ øÞ×Èf0(J^bb6S]S?6<TY9 ÿåÿæ 1. (&-LcgEÿÿÿè*бHÿÞÿ²ÿñ\Åê̳–ƒ‰˜²ÇÑ×Ê·y€œ°Îù+áÌ©e2 8RheXT]r€smt¨ôC……s®9ÿÉÿ©ÿ¯ ~Óâ·ž•žµÆÉ±¬Î E`iK+ üôçÉœmB32BKMN*GYZJ80:FJ3ÿÿÿßÿõ#:3 !*/4=\^%ÿùH¿ž>ÿáÿ½ÿÖ%^І©ÊäëìÜϼ¤˜—¨³ÅÝðÿùíϸ–c?0=LUL:-,A@ ÿØÿ¾ÿç7ˆ¸’Kÿäÿ†ÿiÿoÿ» W•ž†gq”²ÂꍲÛBPQ7üÛ¬|UF>FRTJ0J__Q;+.KR"ÿòÿë 2C'ÿý/>#-TZD!6kŸš`ÿÝÿä=d€–®ÖûòàÑÿÃÊÌÊÇÂÀµ …lcamwˆ—¹¼†F(D…·¿}ÿÉÿœÿË%ˆ»¦xE2R‰¸½£‘’£Ì÷($*& ìÀ”vhVQZZC 0J\gZ8$B]M ÿ÷ÿí 3?, ÿû0-$0DXYE,0fŒ†N ÿæÿÜ,i£Ù *A@C4 ðßÊÃËÖÓ𣨪˜nigmnu‚ŽŽ«¯‡YOd‡‹fÿÃÿžÿ©ÿý`¡¥o>.K…®¶¤ˆ~Ž£Ëû 5/*ýõʦ›–|_SC! /GhoT48KXIÿïÿî?P)ÿýÿý5DB=IYh_6%Msza/ÿþ Lšë,GTIOD'ëÜÆÀËÛàÓ¹£¢¥—€j]X^^fw†ˆˆ˜ŸŒw{‚€c0ÿÿÿ×ÿâ JurJ# M’ÅÊ¥…tu¢Åü)B8+ûö íζµ®Œ_?$#1Qio\A1?L;ÿúÿøEB$ 3IUZYdcO:0>You\1ÿÿ)s×0X]AC=&öèÐÂÁÍÚÙÈ®¢™Ž}cQMX^k}Ž™¡³µ¦…oS- ÿóÿóÿüHbbJ44Hrž³°•‚vjy‘Ä 66þôâÝ×в„P*ÿü$ !.GinH6LIÿý"BJ2Eosa[]giYF?Jdp^<#O© GR33. ýðÚɾÂÒÜØÁ©’†{]IEVdw†—«»ÐɯzFÿïÿèÿó2FUO91FmŠ–˜‘’‘‹‚ls”Ò6#÷êø!ìÖÎÕÒº^7$!=NA(",@I9 +ED/6k†‚xgedZNACYliV<<LŒê6SCC4õëÞÖÐÒÚÝÙħŒ‚y\GCUdv‘¬ÁÒÀ™_- $=B930(5Z„𣡥ž†vp¼ð! ÷àÕ˾¤€Z:' 4 $ -52*(/CH,)CK4"2[„—”x`RRXQKPY\\]db‚Å<FRB* öëàßáäâØÐ¿¦Ž„{bPKYgx‚¤±¹¡tD(,7K\U4 4Uwšž²¾Á®ˆv…¶ç ).óÎÃŬ†Y9) >  (21'&AQ= 9OKACUqŠ™v[VZSPTZX[ixt~¡Õ$EJA$ûäÙØÜ×ÏÌÁ­–ˆ|gZQ\n…•œ¥¢ž†];0<HPTE$7Ro‰œ¯¹Ä¹¨‘‘¦Ñø%%ï½™•™ˆd9 8% (4.'5CA3$!)=P]_]_k…’…k`\TT\bWQ`w€Š˜³Ôý.IR<* ìÕÎÒÍÇŽ®›Œpi`h}•¨¨ Ž…w[FCIE<3+4Yo•©ÄÏ̺ª¤¦µÀÒéÿôÏ£{e`\@  *%  $*-6<>8-$+Hgzxkam}|rmeWQ\g[PUj}“¤¹Ñó$ETC1øåßÞÒ÷«ž’†€z{x€‘¡¨ˆtqreWSQE932)-;Wl„¢¼ÓÕȵ±»ÈÒÌÊÙòó·‹gC-  "# *5*&1438:5,#8Yy‚u^Y`gmsm[OYf^SRd|Ÿ¾×éü :G9)þóðìÞȳ¢”އ…ƒ†‹” ¤¡’~rw}tcXOA;=B<9;Ne‡¯ÉÓǺ´¿ÎÔ̹®¸Îéá³tR@&ÿúÿóÿø )  ÐŒÏ"]„¦]HuŽ"•m«n“^ ?^~Çaâ yÛIÛx@ì— ¦ B î Ê « ° Ã Ê º ‚ < ø  ¶ ¸ Ö ñ   þ þ ÿ ó þ a ¨ à   Ñ ‡ Q \ „ à . ‚ ÉxêPÛp7&ïz³ù$WÅíE¼Gغ‚HéÐeȺ•s€Ô1¯ “  ü ÿÁ"(Eð¨‹Hþ·F(>ÁÑÝVŠÆpr”Dh'*e¯)ª*’ç8 œ  § e ` m a " ¹ V  å æ ã þ ' K a M ' ñ È µ § µ Ë æ ñ ø    ) P ˆ Â ß ø Í w  â ê  3 ? H \ Œ à  [ Á , È:¨à&uÍB·Nç i,îaª­°É hÖÝ´Þࢎœºéò)~. Ú3P% 9GG@!ÏjÄAqy2¤Îì‹-ýŒ©&p¸ õ N º S í ž A  à Ü Þ Í – Q   û  + 2 1 Ò ’ a T L n Ö ù  9 \ v ” Ç ë ÿ æ Ë ‡ # Ö ³ Ï ô     * 3 J _ – Ñ = Ñ R • ­ Í  wÀ’`G@%õŒ‹ ÏàêÚGiM_ÝÜ›}¦Õç¶$„ÌÝ®œW#t”0Ï?•=X•‚-ÌÈÁL€/ n ¡ Ô Z   ù Õ « Ž u V 9  " 1 8 ; ,  ú Ó • F ÎËÒ  B … ´ Ü : d ˆ ¼ Ì Ä ‰ N  ± † | § Ô û  þ Þ ½ § ´   b ¹ Ü Ù Ò ó 0 ´ < ë ŒI#ò“&»”{ÙŽ nÒùqùdð“kâð‰5ü¶ ½ ¼Š÷^)ÓôÎm½É¸#pz°J° ¦ "  8 ‘ s „ ² ¡ `  Ú « – v u ƒ ® Þ    û Ü · ‰ b = óÝèù  C n “ ¿ õ % I ^ ƒ Œ ^ % Ø † T > Q b t x r w n S 5 " #  <  Ç ñ ô ç á ì ) s à 6 ³ X ˆ¿ÉÙvpWò³6)HD=,_}7í•rÇ1þ}…yäbKSƒff% Ä•}¡n×®3– R ž { Ç e Ž É ã « , ½ f % ú ( Z Š   ¢ ˆ x ^ ?  ìо²³¶»´·Äæ  5 H S h | ˜ – | D àÑæü         9 u ¼ ó    ô î ÷   L ¯ 8 ‘  ‡ `64öŒ™mÜwå<sçà%PHì"ˆ¬{mÅøQ0ûÉ‚°¬ pçòÏ\à f  š Ô w @ O W B ÿ ¦ e B ) !  ôðø üòðîðÜÁ„=ð®T6 ýý/J^t®ÛôðÞÏë"à  > ( öâÞÛæñ 3 X f p ’ ¯ ½ µ ­ Ÿ ~ “ ã T “ Ï  ‚  >ÈIœ\7ë’#àW«{*œdò‹:Õa,o]rrÖ¼’ o;É3®Ô[}Ά  È Ã :  î Ç › q G " ãÀ™uEˬ­©´ÂÓòä¼MÌ@Ê}8èÖÏÛÛé)Mw¨ÊÑÞòE³Pøm¸«˜gC.%?t­×Üå  V † ž ¯ ® ¯ ó L „   ¨ Í ü @ Ryž›[±cí›:…³²]XoŸèZ]ÿN\]j f æ \ UOPCŠB Í * Š ú Ù ‹ U   ! K r GñIšU íÞô6EdDmÊ3½kjYL@5+Z¬Ûú "rÔq$ÂCnŒjCåóÕë " : W Š ¥ — { r “ Ì  9 Y r ¶  § k K¯ 'ñÀ›}.¸ªTç¶´×óÈ^΋, Å ý | ï / ë Jžo ! ) o Y $í{ÈÚ(|µ\¾³¥ØM6-=SdghXX+áfÝs)(6WbVE, Ac„§·¶²³Ü qóŠtÃÄ«uANv°hGlZJYœè ô ; Ÿ ó 8 n › Ç f Û W ¾ ø 6 •'¹o7ñŠ ü j -  )  í ¬ u … ] Ì  o  ³ Ï > í •   D J I†3.ñ5ìÐ×äµc¶ô+g î-b‡‘iBý±h1ÔX',EF/û)Mi}•Ÿœ”¢²ñE»2’ëþÔ±²µ‡H#ÏGK#(¦:À  ( > W ‡ Ê  F W I 0 K Ÿ  } Ä  8 k È ? á‚ ® M > : P L F L K h % x ® ; ÐØ  { Û Ê nªòZø½b ¸„xRdµ ? [· Àv¥R ).(#òÈž’œ¿Úñ  !'4;Tx®ãPq„„Œ’ˆ™©º{WL+0¯yoB¦É®½ó L ˜ ¿ ® z o ¤ ) · $ a ^ X Z l · ! — Ê Ð Â ³ Ä × ö " ) ) Ç o)"êÈÆÕí¾Z¯ zÈ£€>Ôfëe ÑÑÒÖŧ”|^5 Ḓ^KN~ºìõ佞r;ÿÎÿºÿ»ÿÚÿî">Vk„½ÎÔȾ¶©³Ê7{Å÷%Ø¡“ßLÓ:s|°°Û^® # ÷â  } ú G ] t i Q G ` > +   D p ” k $âTú°tVRc8×)sÙ\<U_€ÓY G·<{LÕcô†V?gŠÆö?›þ`“¯‘t;ËŒIþÆŒsihoin}¢ÒøøÑ¢‚kŠ»b« ÙM¶hYÇUÚ (ª“¶¡-“¼ô=©j~S9sð b ¼  À u h†Ž‹‡—Ìë÷Ÿ!d¯¯eï¡{‰°”'uÓl38Q$‹ØU\¤8ÆîÃ/­>ÿåÿÏÿ¹ÿòAºÝ?­v¯ÞÓ‰VѼm+à™UÿÍÿ¥ÿŽÿºÿùL–¹Ï¬{1ÿæÿÀÿ·ÿãÿýB¸c8ÞDÿ£ÿ`ÿeÿìx [Ÿû†%ܘs¤êY…Ž~¼?× I Ž p DïžptÞô +õyæ%rÑ4À? >w†# FV$£\}'òŠß‰ô=¿·ËB³JàjÞB°#šƒäKƒ«š]5ÚgÍF¬TŸï1®=4?‹ÕJG;ñ“(לC+@£h—2vÿªÿ ÿ(ÿª…+odBSÒZà!C“Olšì`þn {a-ïÓ÷ -BJ*Çtì]°]¦6ìÿ"PiDñ ‹™Œ€d~ 6à #ôÊÔ ¡!zÀô&‚õ ¤ U " î ¶ ˆ"¤Õ ÿ§+ N | o Y %ôÊ• ¼HâßßAt¯®’&Æ%\—ÿåÿ£ÿ‡ÿÞa¸¿>ÿ†þöþ¶ÿ$ÿÜ–ï×–†ÎˆSú=iê…`¨ü„\x•€K+X°ÛýÿÁ~ª2ÃF·0žcaªæ õb½Ðmb–l P Ù í b ô Ý Í ®vðc†‰Š£­œ¢­³É¤gÆ$)FëurjŽûx ’ V $ L w ŽoWn•œ‰­ÒÕŒ2¹Òbââr‡ÿˆÿÿM¼Ôn0=’½ñ3  EwÅ,þZwhRuÑ Lb*ämú„¾Pú¦’ ÐßôHž+©^í«Å æ ¥ÃcÖn@4<2ù­7ÏK¤±£¢Ö 2; %!.""É# #`#;#2"Ã"K!D %ç(… G  3hÌ2¯0 ª  u ï 5 i 1ÛE<%ØÄû ÁÚÿÒÿÿÿ\ÿþafÿå1ßxã #yÛ&O_Æ6³ 13O<{Èß²‚0â‘?ÍÇÕÿ/D£"ýÑæÎEè lUP¾×οŽ­l§;ý æ!í"Í#¿$Ì%ü'2([)*b++®,u-"-Å..-Ú-¼-T,ò,*ñ)Y'±%ú$i#!½  ‹ž©Åé!ý̦î52s • xR»fúõâ?ðZ.ÿ•ÿêqå¸E+ 7…¦Ôþ?`M7>‹ýwËëõ„Ó)3äĺ¢a, 5ƒßè!Š‹¯,dú ‹  ¹l¨‹y L!“#$0%0%â&'I'ó(À)‘*´,-o.’/{0p1M262ö3­4%4x4Ó5t6 6´6û7'77.6ô6µ5È4ª2ö18/q-Ò,}+**!) (W'‡&Ù&;%–$ó#ü"ì!mÈ“JÔšrd: é { ¢A}º© H£ÿíÿÌ?^;ÿÊÿˆÿ²EÜ:F!+!ý"~´¢4hz8ß±Æù;Ba£4Ý—ó¯Í G : Ö €E!$,')V+½-/80!0Ç11”2N34+5E6§8@9 :¯;9;Ã<<œ<þ=K=x=Š=Ù>|?I?è@O@ª@ßACAJA?@i?\=ª;ö:687G5ð4â3Ú32I1º1?0Û0€/Ø/!-Å,-*-(O&y$­#!cÖ_®ù›ÐÎõ â ] 1 ¡®Xn›eaÚSÿøµx\e„w…ºŽÂ§tw%é™Ë › Ì»ñ@7 ¤ … ͲÌÎÅ4™#'g+@.u1ß4¯7‹9W:Ó;L;ª;é=?d@–AõCD±E…EÒF%FvFþG‹GòH@HtHóIÐJÖK¦L.L¥LïMmM•M´MLJyHÚGE‡DB£AX@>ù=Ö<ç<;\:¼:9‰87_5¯42#0+.+Ô)³'ª%Á$!ì™™MD ï á ~€¼… <ÿÑÿçKoLÿöÿ¬ÿ®ÿè +>_®ÞØcýÛð_œÎ½º[  Á‘m¥ ›‚±,!Ç%Ê*Y.«2¡6c9È=Ž@™CmDÔEÕEóF4F£GfHzIgJmK„L¦MåNÃOMOtO£PP©QoRRvRÉS^TPUkV\VûWyWÄXCX‹XÜXtWÄV^TöSlRPÑON*LÔKvJ H³GdFKE8D\CBÐAç@­?ƒ=á<'9Ü7n4È2-/ß-Ô,*P'õ%!m°DPûÃO ! pêÓ+޺ݟ›ªIÿáÿ¬ÿÊDG8Om† ° Ï 0|IÑY ç K¢-vb ø# %•(¹,á159¾=¸A×E›I†L[NÕOåP¼P÷Q`R RûT!UVWX%YBZZ‡ZªZÆ[[†\\ƒ\¶\À]]©^™_w`$`š`òa„bb¢b“b&`þ_Ó^¡]º\ð\[YëX˜W5U¿T\SQ«PZO M½LaKIÓHpGDúB»@=[:½8;5ý41Ã/F+è()$' [<·2ðE z •‚EŽíôx”Lÿýÿ™ÿÿº" 8Øx  _ ³kgH÷è¾Í#&T)7+Ñ.9154Ë9=ADñHÞMPÉTJVyX\YYÛZEZÐ[’\‰]“^k_.``ÞaÏbxbøc cbùc7cocuc@bäbÌcc®d]eeneÕf|g-gõh!gègfeMdÞd©d_cÜcDbRaP`_ ]Õ\˜[YnW£UÙTHRêQ¹P–OMWKHÒFACš@ï>t< 9Ì73à0+ä(%"LF¦kw: í ¤ ~´„€æu¢ÿâ%(o»,¾"Í%©ÍP:"†%ï)Ž-?03‘6Y9?<»@˜DÎH¸L—P TX€[«^•`DaÝb‚ccJc d5eeýf›gg˜h/hðisiÉiŸiLhæhÚhÈhvgøgdg*g7gÄhVhûiciãj«klYlœlŠkâk0j«j„jªjÂj¬j€iôiSh{gÈfëf dÊc`a´`^ˆ][ÚZÁY}XVTAQÿO«MJmG®EB-?2;73s/Á,d)3%!kûÃ=(f ôõ`è¯ê£­ÿðÿø$ÿþ'Ï%á# †Ê?•P Ã#*&q)‰-!0î4Ï8;Ê>ÔAÒE H™L6OñS–W5[^ražcÒeñg/h‚i iWiAiKiœjAjèk5kLk|kÀl4lolskþkbjÊj“jiiñighÛh½hÛiniûj™kkŽlYmmÅmçmÓmPl¾lalPlœlåmmBmlÑl\l k k6j€i©h‘gŠfhe9d caà`¤_+]Á\ Z[X-UêSP=MJ(FðCŽ?Æ;æ84}0â-(Ú$Y "”ªú I zjbÍ@‹)J$2R0-*2(Q&ž''ï*­--0§4&84<[@gD$G†JóNFQ¯UX8[g^Äbe\gôj1kmnnôo4o0nïnéo(oŸoûpoËo·o¡o£ofnøn=mllÎllpk÷kxkkk0kËlbmmvmðn¥o=o¯o±o›o?nÎnœn«o oœppypŽp‚pFp+oûoÇo^nÙn>mÍmKl°kåk!j1i9hg e¹d`b‘`È^X[µX—U˜RsOzLHyDc@W<>8f4P/è+6&¦"“"xv Õ =þ…&%ÿôÿó=Â;e8*5&3;1‹22ù5½82;Å?šCòH#LO¯SV“YÐ\Ú_zbdgriúl]méo2oépïqŒqþqåq¤qZqWq”qärqäq…qIpùp©p%oƒnÉn m›m~m‹mImlÒlþmSmþn«oJo½pp‘pÞqpÒp–p6oÃožo´p7pÄqTqÐqûrqÒqÅq¥qzq2pÔpŽp~p€psp#o¼onQmql©k®j iJh!fedka¸^ç[óYkVµSÝP3LG®C¸?Ò;õ7‰2¾-u(W#0ãõ,/ O (¥HcÖJS/IFùC‰@W>X<«=2>@ÕCJGK/OËT WÓ[‚^¸bdÛgBi-kTm]o’q;rŸs@sØtt‘t¸t§tEsãs£s’sµsæsæs²s8rÎrRqÛq\pÙp\oÊo|ojoŒoxoxo~oÑpDpóq¨r9r rÍs"s3s!r»rMqÔqNq1qQqër‡s-sÂt t+tt$t"tsês¯sŒss´sßsßsÈsZrÙr-qŸpüpSoznÇml%iÿg®e*c`Î^ª[”WáSpOQKBG¢C\>p82Ï,Ù&ò!<oEX 7·u•dg`#T%Q±N^KVIHH†I?K¯MýQ’UƒYÓ]Àa0d®g~j;l$mËo"pîr‰ttÅuLuJunu[uRut‹sþs‹sMsss6s5srŽrq¹qiq;qpòp¯p‘pžp×pôq)q]qÎr`ssÕtZt¶tÄtïtÊtˆsòsLr¦qüqÐqãr{ss¶tOt›t¸tžt«t©tŸtwt?t såsâsïtt sés¨sArîr–rIqÞq…p¾oÓnPl°jÒi)greýc¾`ÿ]9YfUaR NIŒC»=º7?1*ü$³¾éÈr XtS~î;^…\2YVkTâS£TT§V·XÉ[ú_bcf‡i‘l¸oqrWs‰t‘vw0wôwçwÈwBvåv\uÁutDs sr¿rnr[rrrqr$q©qCqpëpðpãpÕp²p¶páq2qdq¨qéros#sþtÓu_uÈuÊuÛuŠu"tks§rïr3qþrrœs6sîtŸuu-u"uDu\uhuTu3utétÖt½t¸tÀtÔtétåtÌt›tztMtqxpæpVppp o¯oPoo)oQo‘o®oÊoèp4p¦q'q}qÐr rµs„tpuKuÍv:v*vu”tùts.r_qŽqr#ss½ttíut¸tIsÓs¤s…sYrår†q{pFn2l+iJf¾b—]ÀWBPÜIõCq<™5L-û&Ô ‘^…Í „ GoenUm l"kËk[k«l-mln¨pv×x'xÑyYy¯zazà{/zôz¶yýyQx!v³us¸r‰qhpDnðm¨lekjÞj«jjj‹j¶k3kŸl[m'n?o\p“qÌrÝsÎtuWvwwÁx`x…x±xEwÄv§unsùr˜qrpXo³onþoo#o#nwmxkìjqigÍfífeœeXeœeÓfkfügïhçjFkºmcop‘rssÕsësãsµsÑsøt sïsâsgrëq¡p,màkýhºe_yY›RéLÑF[?}8U14* $*ÒŸ—srq|pÇpZpHppeqrstAubv£xyEzztzÝ{1{É| | {|{zy+w¹vtWrÞq‰p4n»m k^i¶hšg®gpg0gggˆhh¯iÕklÈnsp0qïsht»u»vÃw¥x¬y_yðyôzyzxàw±vbtâs€rVqDpeonn¥nmkl°kJi gfe#ca _¯^U]¾]5]p]¢^_¤a1bd4eæhjJl¡nøp¢rr’ssMsÊt6tˆt±tñtøu"ts¤qÚpmmåkEfÃa™[JU¨O‘I/BE;=4h-µ'è"Q©³r7qöq¢qnqsq_qÄrqsxtIu0v/w;xWy#y°yózez¶{zÿz¬y·x×wzvt=rWpln³m kiíhfQdŠcUbRaÿa£aÆaÊbkc(d©f:h]jˆlâoCqTs,t™vwYxÇy¹z~zŽz¤zy—x‰w^vtÈs£r¡qloönBlÉkiWgd~a^Ž[áYjWÀVUKTzTTqUeV²X¢Z>\]à`=bêeõik–m¶núpDq*r;rýs sótVt†tìt´t4rÌq|oZm„j,f`µ[ÝVxPûJÐDl=Ý7e1ˆ+ô'!”r‡rŽrrqr‚r‹rûs©t“uAu÷vÜw±xlxÓyy>y£yÖyýyxxÊw_uøt roÚm”kOig'eTc°aé`H^Ÿ]g\L[Â[%[$[![ð\Ú^˜`Ib¸e[h_kbnp_rÉ9‚3špøqCqnq€q¤qärbrñsŒttuuuluƒuYuYuGuftêt6rlp‹m¸jÈgsdSa+]ßZÊW«UbS‚R]QOßN˜M‡LvKäKVKŠKØLïM÷O·QESýW:[p_Šc›gkjën’qÔuBwy{y÷zhyùy«xÝxvÜuÖt`sp mªi›eÆat]6X}SkNiIWE®B·A8?g>^=\=<„<ã=?@†BëE~IL™PêU|Z9^µbºf×j1mto¦qÁrÖsát6tŸt•tÂt*sqvpŽopnkèi“f‚c­`\+WaR{M5H;C=6oÕp)p_p„p»qqrrˆròs=s¢sÁs¬s`sRs rÞqÍp|måk2gcÕ_ê\HXÒUQÝNµL«KJ0IGäF¤EŸDžD;CøDnDàEíFäH‹IþLÊP*TÒY_^2bÙgNkØoãt%wyiz zœzyÍxñxvßuÓt>rÌpl«hc…^xYT1NyHÐBü>¿;R9·7Ò6é5ú5Ð5Š66Ï8D9a;}=îA¦EYIýNÄSíXì]ÊbÙg6kanIqr­tAtßutunuªu4tNrúr q pn€l¯j+gßdÙaª]ŸYtTÚPŒKåF‘n«nÿo1o\o›oöprpíq\qÄrrGr@rq¬q“qp“nãlíi‰fa£]/XÃT®PüLïI¡FDÙC‹BåAØ@¶?x>p=q=<ù==ê>á?ÑAzBÔE¹IIN~S«YP^½cñi*mßrévjyWz2zôzxz1yGxYwuät/r o‹kÝfaƒ[²VOæIC^<÷894>2S0@/n.–.‘.h.ü/À11ï3¾5è9¥=‚B›GÁMqRìX^ŽdiDm pœr¦t¶u‘vVv^vªvWu¼tªs»rÎr-q-oØmØliŠfüc®`A\aXÌT·OòmŒmÞnn+ndn·o*oŸp ppp£pÍp¬p…po÷onkœhÝd£`M[>V-QcLèIDôAç?:=ø<÷¨B0G®M7SxYx_Ye8j¨pˆtÍxgy¬zÐzzzVynxw'vtbrßoÃlfžaO[ TÑNGD@¸:50š.K+ì+**!**‹+>,O,Ú.,/Â3 6›;¸@éFÐL]RVXÍ_e>iönYpÿs tèv-v‹wvÛv uÛtütssr­q¦pnplOj)g}d¿a­^Ü[ˆWlZlºlêmmBm”mþnfn¶ooonÎn¦n=nlïkxh0d¬_ZvT·OIÅDÄ@»4c3f2l1Ÿ0Ì0s0H00 131é3[4D6í:b@EÇL‡SYÏ`fùmÕråw9xáz\zzy7xnwFvctås’p…lÚg7a´ZøT)LÃE3>*7*2 -{+(c'I&D&R&U&é'‚(4(a)+*),ã/ë4É9Ó?ÛEqK·RŠYˆ`ufkCn—qÖs u…vTwww'v¯uñut€sìs5qüp¨nØmjûhâf”d}aé^ÂkálYl™lÀläm6m–mënn[nLnm¦m€lþlªjíhÊd¡`JZ{T˜NSH'B§=F9252º0Ò0>/Œ/._-Ÿ,ô,l+Ð+}+K+o+j+×,b-.%0q3‡8ø>hEJL#S•[bPiòo¼tÐwy+yKy‚xÎxCwTvžuHtqJmíh¤c\öVIN¿Fñ?›8v3H.¦,)'š&8&%é&[&«&ò&Î'"'›)™+È/ã4U:??EVKçRüZ!`Yf5jMn,pšsNtÈuúv0v¥vmuóu#t—tsr³qšp nŒlÝk7ixgàeæcxkälsl¸lÑlÜm&m{m´mÌnmímŽlðlÆlklhúf`ù[ÇU7NŒG¼A;g5¸1ª-Ê+Ü*H)ê)Q(ö(k'þ'µ'…'3&ô&Ä&Ì&Å''}(V(”*t-257`>pE£MÄUÑ]µeîlar3u9xx¶yZxÐx~w˜vÕuet qundi«e_XûQ¡IÜB9:Æ5?0b-„*_(Š&²& %ž%Ô%Þ%à%ˆ%‡%•&ì(W+³/Œ4Û9£?wE³LËTZÔaQf&j–m”qs tÎuGvvuÎu&t™tsèsvr«qnpGnÿmÃlwkDiÊhl|mmnm’m£mònEnunˆnÕn½nCmnm71˜,(Ë&%$#Ê#f#5"á"¬"•"•"w"n"p"©"ø#^#¢#ð#Â$Ì&K*<.M4Þ;ÑDJLU]»e l p„tþvìx|x!wñvÝuûtƒspên—kShAcö_zYS&L'E3?9j5E1".r+Ó*b)(D'N&¡%é%«%v%÷&('Û*7..1Ã6{;EA]GÓNâUü\)a´e÷j¹nqr[s¸ttŒtYsãsus¥sÙs§srtq²pýp'oOnLm3m&mËn[nço`oápEp¢pØqKq pto:nømLjÜeÂ`gY'Q×JBL;U4i/4*'g%I$Ø$ #½#m#8"Ý"‹"L",!ú!ÿ""~"å#I#‡#Á#$z%£(ø,o2a8¼@ÑHÂQ&YÌagh’mrœuvévvpubt sorCpvnŸli•eøb\ÈWOQJõE?:5N2/-Q+|*"(‡'W&8%Ñ%‰%ä%Î&ë(œ+Ì.¼2Î6É<6BIPV¾\ÕaÔg7k4nÖp³rqrÿsÂsÀsarûs>sŸs¯sVrôrXqÕq$pbonnnmmªnLoo¤p)pšq0qŸr.qûqRoùo¦m”jdœ^ŸVîO!G#?n8¯1Å,½'ö%Î$O$W#Ò#‚#0"ã"y"!Ö!·!†!“!Ç"""f"›"¹"ì"ß#µ$­'*“05á=”E(MbUÐ]†dójvprùu*utüts’r¹qàp™o`myk±h£e5`e[”VP˜JÕDÄ?#9©5°240-ª+Á)'Ó&-%u%%B$þ%&¡(÷+..˜1Ö6¿<%C JQ)WÍ]žc¾hplÏo(q;qçråsr¹r\r±sHs§s¡sqrörªr#qwpŒo™l²mm¿n…o>o¬ppåq”r6qùqnoùoYl¯húb‡\ TJLHDb<é6‘/ß++&ë%R$E$‰$;#ï##+"Á"{"K"E","?"{"½"È"É"Õ##:$%'{)õ.•3 :’A|IIQ:XÐ`Afkýo4q«qÀqùqRpïp[oÖo+n§mžl©jYg™cb_.ZAUžPhJÌDý?:S63303-¶*í(¡&Q%$Q$u$8$¬%:&Ê(O+-Œ1è6Ê=yDDK‘RžY,_ïeMjjmUoÖp±qårqæqqÖrxssNs4rÂrr6q“p§o·lIl’m9nnëoGo§p”qfr q¹qHo¬n¨kSfú`Y8Q@IAG:4-­)h%É$¿$ $h$<#ò#Š#%"Ö"¿"º"×"Ü"ø#<#l#Z#?#H#Ž#ª$W%&ç(š,/0*6C<DK¤S@ZÌ`õg$j¥mbm£mþm^lîlvlll@l?lWkiMeÖbF]æZUmPqJŸDo>Ê9Ó6(2/€,7)v&›$î#³#Ÿ#^#³#ß$¸%Ž'~)6,ï1=7º>TEåMUT[ÜaÙg±k;n:oQpÃqpþp¬pãq†rOrÉrÅrbrhr+q™pºoãlll²mˆnPn‚nÂo³p›q@pçp—nÅm(i d(\ðUßMãE²>71x+„'Û$ñ$b#â$0$#ð#–#I###>#_#›#Ä#÷$D${$}$‚$±%%W%ð&—'â(Ñ+L.<3p8å?íGN[U¥[Éaîe¢h¯iGiÞiIhÅhCgõhJhòiÏjÎj©jgŸdÞa]óZVPÀJ²Dg>»:"5»2.)*Ù'g%A#‡#6"ì#D#I#¿$/%Š&¡)°-M3V9A/HÃPfX^wdéi lÁnApphpyp!p/p¥qsrqðq„q”qnpàpoekèkÇl@lÿm®m¦mÆnÀoÐp’pApnkÌfía†ZR¦J”BX:ë3í.¶)2&(#ì#Ü#ž#ü$$ #î#»#²#Ü#ÿ$?$ƒ$Ø%5%~%œ%Ä& &''·(a)%)M*µ,¹1"5Öò9¸5@0p,a(E%·#’#"¢"â"¼"î#+$"$¼')é/R5 <¢DJLOT+[bfùkCm9oPoÍpo¨ooßp³qQq2p²p¿p p oRnÂl"kÃll•mlÊlÊmºnáo»oxofmjKd¿^ýWeOÒGµ?~8414,3'!$¬"é#!##‡#Ú$ $#ã#ê$$6$$Ö%N%À&>&§'9'Û(Ì)é+,,§,›-Œ/?3 7)<»BUHvNŒT*Yß^aÉcldÓd²drcúc»d]eag#ijwkÊk‰j¾h‹f²daÊ] XMQGJD>'8Û3,.Z)†&Ž$#{"ô#."ý##N$$m&H(u-=2r9ÛAiIžQ•XÕ`?eºj´m5o§p2p‰p o¾oÂplpìpžo÷oãoºonunlMk²kÖl*lxlkälÊmûnØn•n¢l*hÚb±\—TåM)E <ã5».¾)ë%>#B!Ó"7"S"Þ#L#‹#‰#r#„#Æ$$m$Ó%T%Ã&h'(')A*Ð,¯.i/É00’1m3&6¡:>›CLHMÓRÎWÊ[—_0abÛc2cJccdeggziwk)læmqmžlSkhºgcc^”W„PqI,BŠ<…6 0¢+'˜$Ê$.#«#ë#«##|#à#é%f'$+…0X7˜? GlO‰W'^ödÿjžm pmqqupÕpFoôpfp¹p1o^o&nönHm»mllÐlkýll6kkpl9mUn#mÖmòkQg‹`æZ“RåK C :ë3Ð,Å(#Ë": õ!Z!"("¥"ê"ï"Ü"ì#?#©$@$º%Z%ð&ò()½+…-ã0—34ð6 6¼7ö9þ=.@C¶GzKÂP#TVXy[©^«`rb,bÙcDcpcÄdÚfkh{jSkâmnaon_m{kdjf•b7[VT1L}Ex>ÿ8@2X,'(7%$$“$$z$D$#Ê#ó#Þ%8&¹*×/k6Ž=ðFlN£Vˆ^¡e kUnÑqèr}rõr qKp˜p³pÅponÂn–mïm…mYmwlrl9llkIkk­l®mqmmBjif^ãXSP°Hç@Û8²1–*y%õ""!  Ü!Ž"-"”"½"¸"¼##„$F$Ô%¦&ƒ'ø)v+½.&174›7ž:;‘<Æ>.@7BéEYH+KNrQûU‰Y[à^d_åaeb3bãcpde4fÁh»jl5mònúoèožo&mlˆifed^WvOoHA$: 3²,ã(o%$f#ì$`$=$#Ë#ß#Ä$ò&)ã.75V<ÂErMÌUú^jejlAp1sˆtt€svrYqEqpÜoënñnŒngmÊm‚mznQm7lÛl‡lKk„k9k¼l›mUlømiûe9]¤VñO]G’?€7C0(ê$“!* “Ï L œ!K!÷"~"Ñ"é"é#1#À$»%v&®(*2,9/2'5Ò9¯=?ÝA°CPDÓFÇI K'MnO¬ROU2XI[z]ù`a/bEbÜczdd£ežfÑhwj'kËm|nqo3nÙn~ml;i-e>^†WOƒHA9ñ3,Œ'Û$E#ž# #«# #’#l##$ %}(å-4;“DiLÎU#]Çe)lpÖtetÚuQtrÐq|púpªo­nÏnvntnmðno,nm£m'lÃkìk–kül¿mum m i¸d’\©UÖNHFm>O6.á'ª#… ‰ aÛ P ‰!!²"L"À###t$0%{&z(**&,õ/2ô6»:ð?-B¥E§GIYJÞLÁN³P€R=SÓUÎX*Zç]Á_ýaÐb¡cic°ddSd¦e\f1gijÂl‹m n`mÿm°lWk“hd¢]êVòNøGq@M9A2é+Ø'#n"Î"]## #"þ#'#8$($³'¸+–2¦:CKcSÎ\˜dSl&pét¼u4u²t^rèq_p¦p=o;nzn2nXnnQn¼oÇnÐnam×m_llFl¥m\nm¤m”j!dÞ\ÞUþNeFp>85Û.´'q#b œ « E ± Ø!E!É"`"Û#:#]#à$µ&<'})ª,7/³2æ6ß;N@D›H%7w1*â&Y"ä"K!å"„"Ž"‰"k"„"“#b#­&\)ð0Ï8@öIEQ´Z}b_joo‚s›t=tÖs~rpuo¶o_nmömÚn:nHnÆopp\5ã.¦'C#/ € µ ^ Ô!!ˆ" "š##l#’$"$õ&ž(*¯-º1Þ5¯:M?gD±IÐMßQšSÿV7WÕYç[Œ\Û]­^g_p`äbÏdÆfugóh¶ilioiJhèh£h±hÞizjjøllªlýl"k1ig˜d_»YRJdC µGO‹XZ`[hœmörZs-sâr…qoun¸nmËm~m‘n*n|onÚnÚk{fV^\WoO§G†?6‡/0'³#‹ È ÷ •!!m""##r#À#æ$r% &¸(3+.Q2Ù7qoŸn&m‡m}lÿlòmAnn–o}p…poÙo…nûnnnnkooÈoloulfõ^íWñPGñ?|6Ú/x'ù#Û!'!_ ö!o!Ñ"t##„#é$7$h$ð%|&ü(z+„.ã3Â8y>EDoJØQV\[k^ób4d\fïhŽiÌj(jŽjÑk$kálûn6o=oÉp7p1p:oöo±o-n‰m÷m§mqm`l¡k—i`gcÞa!\úX6QÎK!DW>8»3¬/[*V&¶#Ð"è"6";!Ñ!N £ <ï Z 0")$Î*Ï1k:BOJáS[sc˜i*mýonp£oœn[lòlel|l+l\lémín¥o¬pÕpo„oGnÜnn0n@n°oMpo®oÎl•g‹_“XšP¾H@07‘0/(µ$’!Í!ï!!ñ"C"Ö#]#Û$C$™$Ø%V%½'(z+}.¿3›8j>sDÉKzRWÁ]5a!dÐgFj k½m/mªn&nFnOn¼o¸pâq½r r1rrqïq½qoïnËn-mšmkŽiŒfPc"_Z\ W¹R×LÆFs@k:ü6¢2]. *F&÷$<#")!Ú!2 ŒÅRòT.!##²)’08¢@ÁI0Q¸Y}aufýkámon:m*káksk¦kvkÍl…m©nvo~pªoonãnnjnœEKáRºXª^DbLf1hÍkœmLnÉoToãp ppyqgryslmTn6oAplmæmlmPmm.m3m£nko4oìo«p mThåadZ¦RÅJ³BN9Í2f*Ñ&W#"Û"l"õ##V#§$$k$Ê%%‡%¾&Ï(*õ-û2†7<ÃBÅIkP3V5[Ã_Êc¿f~i_k:lömÒn¡o owpq"r8ss€sÍs™serár“q¹pynÒm¥l jpgocß_ ZDUXPëL[G`B<†7ç41t.¯,)&\#ö"”!p æ %„ÁSáEI o#(æ/R7‘?PGWO•W ^ÁdhæjºlOkÏkjjjsjrják¾lómËn¿oÐl&k¯kŸk…k¹kÖlkmjnfo.o o£mPi`bA[µSÒKÈCf:ü3˜,'C#Š"å"P"á"î##P#ž#è$A$“$þ%&'9)ó,Õ15<:@F~M=SxY']Zapd`gwi¥kÏmmÿnyooÚp÷r$s;sÅt)sàsˆrÐrUqmpAn«mŠk¡i‘eÆan[ÍV?PÇKØG%B =7Ý3õ0è/-+(¥&n$W"ê!² ù s»cóYh #[)-/7Ä?\G0OLV¶^)cWhiËkLjÜjDiŒižjj"j…k`lŒm\nD8Æ4C0-Î,U+÷+)î(¶'3%‘#ü"Š!u [´ýž !Z$_*v19@~HPWa^ˆcjgçi¢jùj¡joj jUj¬jŒj´kml^lÖmCmÝaña©bcdce8fWh"iÔjÿkalµk»iªd^CV^N¶Fi=è6 .y)#Û!· D á!2!Í" ""5"Q""®"c"f"œ#û%|(Q+3/638=wCwIeNÔSþX6\I_Ëc±fèiÙkÃm—nÆoòq r¤sÆtPt4tvtXt4sArKp)n:jcf_¬XÇQhJ¥DË?:)4¦0“-+²*ã*ö*z)œ(¸']%Î$&"¥!„ iÓRCìYi!Ù% +o2:AeHîPóX2_"\#k'O,Z3É:ÌBPIŸPÌX`^ÊehœkŸll kwkÎkßk>j9icii?i‚i)h°hxCñGÐLcQÌWQ\S`8df³i/j]kžklWj:f¸`YñRUJ–Br:O3+¹&Å"r ôÏü¨v-ëñØíþ˜ Y!³"þ$¿&‘(µ*·- /;2<59É=ÒB’G‹LöRSW\ÒafeÚi9ln»p°qxrUrGrqXpl;gÜ`æY°QmI‚Aä:?3ž,(&$ç$x#â$E$^$y$ƒ$K$#z"À!å! Š  V!!4"¦$>(Æ.d6"=MDÄL2SOZ±`­f‡i£ll kÔkkYkOjci hg£g~gbfËfe¯ 6–/%)Í$â"© å ¥ò”#䦞‹Æÿ¶ !Ø# $€%ú'£)D+,Œ.®14€8 < ABF“KèQoW\*a0eAi_l(nÄoéq póqHoÔn(i¶dÈ]…V2NFH>·6Ë07)¶&8#È#À#B#Z#E#;#1#"å"k!¹ Ù „"_© Š Ý"Ä% *?0T88?‚FêNiUY\eaÑg#iÀk°k]kjCjpj"hæg eÒdÖcüc!aö`Ø_å4œ:³AHªOÒVú\«aáe!hˆj(kxkˆl kibdP_kXÀRJiBb:§3)-~(%"w! rçMŸ‰ƒÛ%Ý ¶!ê#$S%h&‚'»(ý)ü+L,ˆ/ 26ƒ:ø@OE”KLQ0Vå\va"eÎi%ljno¦oµp?n l gšbZoRýJûC,;’3`,ì'$v"¤"Î"\"F"" !ó!Í!¸!O  ÄóŽL­ÿ {"Ï%´+1÷9òAWH±P9Vö]¨b‹g`i“kjj@iŠi±i,g­efc˜aæ`8^\¾[Y”->4=<CÛK­SÃZa`bd-hj kkÒlølFjÈf¯b \»VøOÆGþ@8¡2§,Ä(é%d#–!£ ´ÏvëÆ¿#r # í"#6$J%%Ã&›'w(4))i*ú-*1*5<:d?WDïJ¿P½Vµ\a+ei kbmŸnnÈlëje_WEOÁG×?÷8}0€*¥%­#Ó"Y"q" !å!´!‘!o!:! —ÚH î{â "!#õ'-Ü4lzi^f`Ü[óU?M·E–>7’1-,v'ñ%,"i!ç‰Ý®¢‡ H! "##ù$š$é%A%–&&x&]',(y+¸/@408×>]DJRPÞW\Øa_eöhÞkÉl|mXkhGbJ\T8L‘Dž<š5X-Ô(Æ$#V"*"G"!ý!¼!o!< ò ¡ <xϹ¾sî x!Ì%m)Í0£7Ÿ?oFñMõU ZÄ`GcÈgHh‹iDhhvgâg¹f?cë`C\ûYRU“QÕNJèG°¡'Î19úBñLzT»\Japf¶i›llÒn!n måkªid`vZhSqKiCÖ=6R0ü+¯'ô$>"; Š (íÄ-ž b!!ï"Ö#$&$W$_$P$~$½$‹$ý%'÷*À/3A8s=¢CÛJ˜QWW®\ÇaæeLhÖiÖjÅh2e^µXtP±IA(9@2Š+ä'Ë$Z#e"u"™""„"+!°!o! œì|ï ?H "3$P(Ë-ø529HSQOY¡_eŽi l)mAnn¬om®kÂgèd˜_1XáQI…BP;g5†/*ì&:#n!% ov>ùG£ ]!!á"˜##µ#â#Ð#s#8# "¥"Î"ø$œ&*F-Ý2¶7j=oDK!QàW›]RaBeZf¢gÁea™[ T¢LêE9=¦60*&Ç#ó#X"Æ#"þ"Æ"?!£!a! |ºósó4ð!#Þ&Õ,?2M9ùAfHÏP2Vw\Ÿ`×dÜfÁh—hŸh[gMgfdŸa@]aXSMGÄB bEWL R8XC\Ž`øbmcµ`ó]fV­P$HˆA9õ2ú-¬(‡%Í##,"í#:#)"È"1!’!H þ nÍ3òš%Ô!Ø#¬'`+a1–87?íGdNwU[?`¿d%gchƒi‹hôhBfÚfEdtb]nX§RŽL³FG?•9&2ã-æ(ðm^q(1Â<(FgPFX_¡d¥i¼l^n opo›nÔldjKfIaÎ[lTÍMµG$@ô:£4Ã.u)Ä%Ñ$"%!‹ × È š â!Q!ö"Š"æ#0##"œ"0!¾!9!'!,""ó$ý' *Š.3F9@FÀLÿS6WÇ\€^+_™\¼XòQöK8C¼?EØMIT ZÚ_ðdºg;i¤jj0Ó6Ë=øDôKýSYR_câgÝiŽk6jôj’hög¤epc¤_è[DTŸNcG?ˆ7x/D'× ©Y'¤ 9;ü#Ù-A7ÙB˜L6U[´bág«kämžohoœp)o;nkJh™d/_YYbS¹MÇGöAÓ:ÿ4ì/~+ý( &É$Þ#ñ#"°"R"^"Œ"À"Æ"‚"$!º!s!M!!!&!Å"Y#~$k&‚( ,ß1Ø8m>ãE7KŒP@UV‡W TmPlIƒB×;É4ù/W)Ñ&V#" !B!¬!å"0"Q"!¿!4 Ÿ Y J ¯ Ï!¡"o$»'0+§0U6Ê=‹DÒK¢R XÄ^wd g‘j¿k¶l·kôk i g†dßbG]aWžPIA8±/ö'MÅeŠ æ¨§%ù/ø:fDoM©U.]bÕhsGzO[WÏ^5cÏfãj'k¦m4m;mkájüifçcs_¼[LW@RÏNID&?¶;V8 4å2ò10.Ù.-9,¸,9+å+z+>+ +(+]+Ê, ,—-.{036_:ò?DeI~MCPÖQcQ~N*JvDŒ>«8|2m-¨)&¼$ç$¸$F$c$l$™$ž$Ó%%Æ&\'(Ã*ë-0v3Ú8á>aDóKvQ§Wp\uaâfiêlnioFpVo~n#khjd;`$Y}QïHq?L5ñ,Ÿ$z±Y oðs¡@u ¸ ­½"¡+µ5G> F(NãV.\öaQegg j-kOl=kîkÄj§iÀg{d£`º]2YOUlQ"L–HCÁ@;<Î:Š8n7N6754·43l32Ù2á2Ø33;3š3Ö4[4Ô67~:<ò@ÍD¼HàM>PiS`S«S˜PƒMG¼BW<½7S3$/&-+m+*^*)â)ò)í*(*b*ú+c,®.?1 3Ë7±;Œ@ªFEL\RW@\G`e0h|k0l~nInÑoOmÆkÁgûdÚ_ëZ±RæJl@•70.$ëté †‡åÚ¿u±×ë óÙ#"a+Î4X<¹EœMÀUÝ[µ`ºc¦g i7k|lQl¼l$l8k/i fc\_“\>XŸT³P{L*HTD­B!?¸>d=$<€;Á;0:w:9®9Æ9ï:S:¦:ý;+;™<=I>…@¾CF_IÄMPQSŒU×UÎUR¶O·JþF@þ< 8x53V1ä1[0a/Þ/•/¹/À/ï/÷0f0¶2:4&7‚:¾?C‡HÇN?S”Xz\½aJdùhj§lHlánGnqn$k¹idÍa$[\TÝKðB³8Ã/B&Š „ë ‡üT¹ãwá¡êdtÆ Ö x[;"Å*°2ö;aCÊL¯SïZ1^/bMeGhÚjölBl2l¿lplj?g¾dPat^n[SWØTPpMJtHFED^C¼CSBŸBAwAhA™B$BBñCC‚DECFuHgJnM$PSVX!YáY—YV—TOþK­G$BÚ?®<Ì;O:9k8j7ç7Ã88 87Ö88Y:<?‘BæG(KPlU%Ym]{`ïdÊgˆiÈj’kUkQkôk?iæfžc†^ÍZWS©L;Bü9Ó0“'‚Žš &¼ýñ5⢪Œ[RÒém uù!E)o1O9ÙCNKöSÌY']âa[f i…l6lómmQmÒmNli›g)dGa¨^Ñ[¾XUzRðP£OM„L—KàK~JÝJDIIFIKIÎJJJÍKKtLMRN¡PrR5TUV’Xå[y]%^ˆ^][ZóXU#QaMuIÆGDfBüAÊAQ@†@1@*@X@6@?´?ú@MBD4G·K)O\\[±ZéZ>Y‹Y$XÉXáYY’YãZ”[t\Å^$_‰`¹aÓcdDeÜfìg¼g\Ù_Sa×d¶giNiôiùhÇh5fÒedb_^²ZVKQÄMFb>Ê6;.Z&üŒâå ¾WûTÁžÑ$½U­‘XyQl)” fB;˜&§.Ö7Þ@©HÏNúTxXà^gbÚf©hsiÖj]k•l…mfmMlÀkŽj¼iÁh¡g`f"e dcHb„aË`ï`7_Ÿ_L^ì^Ì^³^â__‰`GaKb9cc¤dGefgNh-hÓh“hDgeçcüaÏ_‘]’\1ZÑZ@Y÷ZYëYÚZZ2Z0YûY”YˆY§ZÁ\7^6_áa‘cHegxhïiÎhæg¡ežd¡bŸ_Ï[EV‚Q]MRH€BØ;{3§+Í$Õ°R •¾…øø~´èù„$f‘yÿßÿ¶!•¥î7 µóà$%f- 5>¨FM'QèW[`d!g"h†iÔj¢lmm°mªmªm6lÃl kMjƒiÆi,h«h/gŠfçfWeïeeEdòdµdeded¯eeGeEee.efagMhh»háihÆhigjf)dÉc£bîb@bbb(bb!b‚bÈbÈb\a±aVaIb)cUdÛfghNi6jajVi¦g™eÂcBaY]æYFShN3ID…>å80@(¹"骷 æˆÚèŒ#>Çî¾V@ f”"ÿÒÿëÓ©O}‘ £¥H£#{*š3;¶C^HøMÞQÛVá[{_þb°dpefjgÅi2j$jÑjík k júj¬jBiÍiˆiDhíhngÚgDfÖfaeÕedCc†cb®aøa`_¬_›`jaNbvckdFe;eèf„ff…f3ffff;fjf¯fægEgõhXhYg¼fëfXf&f·g{h`iiDi¬ipi,gÃf c]a]åZU¡OëIÂD¶?³:X3ô,Ó%¿l7üz }ÒÏ[¶ó bÚÉt>fÿÐ t@ÿßÿ†ÿÈc–ÖY U]! á'Ø08™?´E`IDMˆQÅVü[;^j_ÚaPbTcÃe+f€g†h‚i!iØjiðiwihÉh›hPgÕg1fºfeVdX¥T'MþGÏA½<‘7Š2)+Ù$–åb|i ú !ÃÂÌZv $¨†=B_7ÿïÿÈÿÛ/NÿØÿcÿWÿåtX…*ü „¶+ÊŽ!Ž(È086:U=@cCÿHAKßNÞPNQZQòSTVFX7ZB[Á]]6]6\p[ÚZÒY¤X@W UÆTeRæQsO÷N†LñK=IrG^FE E¶FÅIK'M©P*R´U WrYê\^_ša?bÊdJeäg»ikDlWmFm0läkîk9j i!gLeb(_‚\ðZåXTëOÐIÕC<=Œ83×.t'é ȵbS ¶ #-£°ž¨bˤC%U0L3ÿæÿ»J%ÿÌÿfÿˆ6+>ù3< õFvë¥$Ã+N0‰3 6-8T;‹? BšDêFPF´GeH‹JL&NFPQØR‹SRXQ²P=N­LÑK)IƒGÃF"D¨CRAó@>û=g;‰:_9s:;=O?LA¹D'F­I KwNP–R×TÙVìXøZù]_xaÊd+eÌgXgwg"e¾d´c-aÁ_z\­YyVÉT(QçNaI÷Cú=­7ä3†/Œ*ð%ý^Ïn ’ „Oδ„“v-KœÌ{4jlLgÿÁÿÑI1ÿ™ÿ>ÿ–Y°$|Ùp ˜¹U?% )›,í.´0¶2æ5ç8µ:è<==õ?.@ÉBD)EÊFÉG¯GžGŒFbD÷BÓ@Ö>µ<‰:“8Õ7M5®42@0‚.}-D,K,ð-ñ0,294Ä7L9õ5X6’7¿8ã9À:§; ;‹;:8%6F41Ñ/´-Ê,*.(H&J$c"D!  ™!{#ž%¦(7*¹-e/ê2¢5›8;c=ý@¥CKEãH¢K«NŠQsS;TÊT¡SòRoQ‹P†O®MÑKuGÍDG?ê;h6‹1©-:)_%¥!ºÕâW À &ú˜[‘ËšgåŒuœÄ›X/A˜Æzÿò(s™pÿ·ÿé75ÿóÿ…ÿlÿê|wR á¢24þ < n«•ö-Ù¨ ˜"#û%Ä'o) *\+°,ž-{-ð.`.Œ/.Ó.M,Ý+l)y'‰%~#”!«µ·¥½©pgÝ‘Ž…˜"S$û'ã*þ.0ö3ž6^8ó;h=Í@mBáEbG H‰H´HqG‡G8F—FD"A~=8Ÿ3º/$+'t#ú bGI D ÌJ)4vŽXíWt›œÎÞ¾l1@¼½q"U¨´TÿÝÿ±ÿÙ+Oÿñÿÿ•ÿõb‘ÿÿhóäàþ 4 ™û—£±‰Ï×L]X !È"É#²#Þ#â#”#¡#c"ñ!ï êyS±ú=}´^S`ª+Û•ï™Þ!È$ª'Y)È,R.”0¬24”6…8”:/;¼   %Xv¢ÔWÒBVšœ°P µ ! ðí!÷Ê’o\ ~"ä$ú&ÿ'Í(5'o&ð%‡$!€™yË‹ž= €ÒM1Ó{‰ÿí±^OúÑot­XP€‘“…}•c\OVfˆx$ÿËÿžÿ½8ÿÆÿ›ÿ¶Z4ÿÆÿFÿ?ÿÀŠ+.‰  cK7èÀùjµ • Q Y ` ±Û¡|iZœ§&¾h1õÆ€moÍ5Þo> Iªb  Ä u=þëݶQÁ×ïAû¨Ä½Œ¦¬ ™ +¦–Õs•P×ÿÅÿò–"cO øg‡IÕ†ltwagƒ¨Sadb`sqSÿÒÿ¸ÿá/ ÿÈÿŸÿ» ]l%ÿËÿ•ÿÚ•%%…ÿ³ÿVÿŽªz½‚`vÄaü\®‰:z¶Þ ' Äœ‡”¨¯¡yM-*D© Ì ÒkÍ W ñ %%5_ß$tgO ¾ % ÜÅÄÙƒÕÚ‹Ø7ÿç0ÁI[ùû2l†Vö˜{ˆ„uL<[Œ§=Q`knyse8ÿîÿÄÿØ/(ÿÿÿÖÿÏÿ÷5_c'ÿÂÿ’ÿË2ƒVÿ¸þüþnþ«ÿlx0ZLòµ ¨Ù.h€†N ¨=ÿþÿçÿúÿñÿö)Vp~[(ÿáÿšÿoÿJÿ]ÿtÿ̸]:ñÐ¥mO ¡ Ô ã ° ¥ x ]Ç ¦\²Å,pãI3½G/™þ/áó)[i\Øžˆ…fJ2=c‹™.@Vnwxg]@ ÿçÿã'.#!kdÿÌÿØ;¨ÚŒÿßÿfÿoëã©V壃VJIi‘¶Ñ͸¢¡±¼ÈÒÞòÿ ýÞ°ŠoPO^ЧÜxØ'Zz™Û:»:«QªÂäe¢SÜÉEµMœjìpV•Öú׿Ö$gj7òÞÇ£v>&,Po||8P^d^YVg`0ÿüÿáÿð/5% "Su{Sÿìÿú?¤½hÿæÿ‡ÿ£¯.= ‘<ÿÅÿµÿ®ÿÕBuŒ–‡ ½Ðå9,É¡€P79NSU]bma=ÿêÿìÿýF–„çBA0­?ÿ‰ÿYÿuœ'òªyŒÇäìæäóWrZ ýèßÍ¥p5(L`cbB[aXF>E`gFÿîÿì)&"0,1TpvRÿå!‚¼¢HÿðÿÔvÏçÀ¢‚kp}œ½ÔäÞÕ¿ •¯½Ôø1#ù¼—~TEOo„—†pYF26;gžïT…“=ÊCÿÌÿ¯ÿÁ"‡ÌàÁ¬¤²ËÛ×µªË C_lU6þðѧxI64FPQP2IVZO>5?KO9ÿçÿö54 )03<Hfc%ÿõÿû<’½¨Vÿåÿû@sš‡¢ÆëÿöîÝÁ®­º»ÄÖìÿä·–€geq†ŒŽgK?4ÿäÿïQŸ¨sÿ÷ÿnÿ)ÿ#ÿ‰l¨¢‘~Š­Ðââΰ°Ô8GM;%ä·†\J@IVYM*@X^T=++GR)ÿüÿð2I0 5C,2RT; /p°´€-ÿ÷ÿøRwޝÐõ*+ øæ×Ï̽¼ÀÉÈ¿¨‹xs›˜¥­Ÿ’¡ª•sTSlµšBÿÓÿuÿ}ÿÎM¬¼‘SIs­Ûçк®°Ëì  #÷Êœ{kVQ\^D +F\mcA*D_S*ÿùÿæ1C4583;HYW:/r£¤iÿîÿå8rªÜ $@FK;' ôäÖÑÏÍȽ°¤ ˜}jk~–ޤ³¤›¥—€sotnc2ÿßÿŸÿÿ´n—~M2U™ÃËÁ§™ž©Éñ**)þ&$Ö­Ÿ—{^VH! .Ho|dA@O_Qÿåÿá ?U/ÿÿ?URFP[aR&(^•n.ÿÿ J™é&>OKTK3óâÑÏÓÙÝѺ –tb]iv‚¯¤“ƒ„|hG) ÿçÿßÿñEUE,#DÉÑ­”…‚–£Äö#@<1ÿ÷ úÙ¼·­Š^B),Qnu_A0EWAÿöÿ÷!MK, <OVWT]]H76OwŽŠc4'qÕ,T`JKA* ùéÕÉÀÄÒ×̲ŸŒwi_cn{|€•§¨£¬°­˜X ÿûÿîÿÿ+53-.<Mo¡ÁÁ§š€†™È//  ûëæÝѱN,ÿú (Bcf?"AVM#,NT5DhhUT[hmbW[jlH$N¨FZC>0 üðÝ˶²Ã×Üɬ{sdajz€‡“¡®·ÇŽ—e)ÿéÿÖÿî"BE8=w•œ¦¨®®­¤Œ‰£Ø,íåø$îÙÒÛ×¼ŠZ5!9H:%%3CG71JE->m‚|redf_YU\oyr\?;Iˆß-UOO;$ ûóéàÐÈÎ×ÙÆ£qn]W^r‹˜¥¸Âȶžr@ÿïÿôIS; TŠŸœ¦­µ¯š‰‚šÂð ùâ×Ïè~S4$ 7% -65,$%8A))AK<1BfŠ—sZOS__\^`^\[b_|·ÿ4J[L6øòñêáÚÑͼ™xji\X_q‚”£­º¸±”rM,!.R`DÿûCr‘˜–«½Ä³Ž{Šºä  ,5"ûÓÇÈÆ±‹\6# ;  '54%7K; 7NOIJXrˆ•Šr[Zddbdd\[gxuœÎþ&LRJ,ðåÜÖÏËÍĨ‡vqijkx‰œ­±²¤™‚eJ754>PO. 2[œ°¸ÇËǹ¢ŸµÝü  òß›ži> .  +:0#0AB7)#)<Q]]WYf€„nhighno^Uay„Ž›µÖ3NT<)ðÚËÈÄÄËÆ±•zx€ˆ—¦´±¢‹‚{l\QI<454!4Lk‹¨É×ÙÌÄÁÃÍØæô çÅ¡|hfcF$  #&',,*1:?;0'-Mn€zi\gxwoomd`jp`SWl}‘¡¸Ò÷+LVB3ðàÕȽ¸®›‡tqyŠ‘šª´¼¯’vorlbXK7,081*(8OsšºÔ×̽¾Ë×ÞÚÖÞðí°‡hF/    "$4?2!'-028;7/"(Af‡ŒxZRY_gpqdYbl`TSey—³Ðç)CK:.õåÓÀ¯žŠ|moyŒ›§¶º¼¬‘xruqdTB,'4FF=.5N}¬Èе²ÀÑÖÌ»±¶Çäà²sVF*ÿüÿ÷ÿü(0  ×›á)(dФX  =n{ ™X䘞÷- Zš´ÜNûЃ {ÛDÓs@ð¤0 ¯ C ï Ð ² µ Å Ç ¯ s 3 ÷  µ · Ö ó    ò þ  \ ¤ Ý   Î ‚ J T  Þ / ‚ ÇwîTÜq8%î|¸þ'ZÂéAºGÚ»„L!ñÛmdzsÒ0® Œ  ý Ë4=Sõ°–Oþ¶|?.£ºæƒÑŒX?à'8i›‰Œã8 œ ý   _ _ k b , É b  ê î ì  , K Y A  ï Ä ® ¢ ² Ê ç ÷   ) M … ¿ ß ù Î t  Û ã ÿ / ? L ^ É  e È 2 Ì‹5¦á$qËD¸Mç¢n2øk±°²ÍrâæµÙÜ¡šºêð%}1 Þ@b7@SUG Îc¶,\g-)½ìðbÏì‰9B¢åK ¹ @ » O ñ § E  Ý Û Þ Ï £ c &  û   - / & ý É ’ a R M q Ÿ ×  B ` y • Ä å ø á Ê † ! Ñ ® Ê î     " / M b ˜ Ó @ Ï N – ³ Ï  wÀZB:!ö’ ÓèôæEdIY‡ÙÿÕ‘v£ÓôÅ2ŽÔë¿£T!s‹º*‰*,?ƒPsl W ï Z û R    Þ « Œ u W > '    , 6 < .  õ Å „ < ÑÏÙ  G ˆ ½ é  B i Š ¹ Å º K  ¯ w ¤ Ï ÷   î Ñ ¹ ¤ °   ` ¶ â å Ú ô 2 ¸ < å ‚=ä'½•à˜*zÝÿpô_êŒfÜç}*þõÀ(Å&Ê‘ö^)Ëáôé²%$ÒpÊGd«Ø  ‹  Œ { c € ¢ ° ¥ g  Ð ¢ “ s v Á é    ã ¼ ˆ X / ñÝçù ! E q › Ê þ * L ` ‚ ‹ ‰ [ & Ú ‚ L 6 L ] p { x t e Q < ( % A ~ à ô þ í á í - v à 4 ² S  ‰"ÄÍà€{bÿ¿<)GE@/ay2é”rÐ> …Š€íhKQˆrXBãq¥÷u£¼èàÞ — é } ; c © ê ã © , ² T  õ  2 l – £ § “ … i H !üàÇ»®¬®µ±¹Êí  7 I S h } ™ — G ÖÇà÷         " @ u · ó    ô ñ û   T µ = ™  f?›Aš¥sÛxëD|ïâ&RN‰ú2•µsÌþS}*õºvy3$ξê‚ÖÍ® Ø ›   î E ` b h B  ­ ` 4    ÿ   þúúõôÛµu3î¯~Q3 þ6Pas‹«×ñòâÎä{Û  ? - íàåáé÷  4 U i { š ² À ¹ ­ } ” â S – Ö  ˆ LÕW™¡[3ë”&âXªx'›fŸHÞh3vbrmήŠÒ â ùnuRC [ ¯ ± ä  7  Ì › t P . Ü»™tFá·ª¦¸ÇÕñÝ«9¿?Î=éØÓáåò&HpžÁÏàò@°Oôg·­W7+#Bz°×ãó " \ ‹ ¡ ¬ ¦ ” § é C € ¢ ¬ Ñ  O `ˆª X «\è˜4|ª¬qj{¨ðcdHRQZ d ¼ è  ª&¿»`kÉ “ Ó ö ‚ © • z 6  ) W { Jê=þŽYëñ!<Hf@ò[¿3ÀlkYMD<% -U|¨ÕóþgÍo ½Ds‹b>éõ"•Üö  # ; [ Œ ¥ – z o ‘ Ï  A a  Ç  ¸ z U¯&ᅳx(µ®eøÁ½ßüÑb̆$  ³ o ·  P  ð B :  X õÝzÖê<Œ»U¯£—ÒL=-FJQblo_]*ÕUÒq($2T`WK4 ;_ƒ¥³µ±«Ìükí…|ÈŰ~KU{²jNnWH[ í  ÷  C « ÿ C } ® Ü u ä Z ¾ ú ; ™*»q4í‹ Š { ; # 1 # ÷ ± t „ [ À ö q ! « Œ «  x “ u æ <žF åž9òßêñºc´î$` ï4rš™e?·k1ý¾‚C 'BD0 'Gbx𛔉”¥é>µ0“ëüÕ²°² „I*ÙOM ÿ# 5» " = [ Œ Ï  S h Z ? U ¡  x  ý 3 g Ä 8 Ø}€ ¼ a P G W V R S L i & o ¢ ; #à×û ? € t :¨€ªEü·’Œaaµ:ý]½(¼u­V÷  òɦŸ¨ÅÛîû!"#*1Lp¦ÜGh|}†‹’¤Á‡*`N$#¡i`2˜À«½ô P   Ì ¼ Š { ¦ «  V S O R c ¬  Œ ¿  å × Â Ì â  * ) ( Æ g*/ýÙÓ×ß«U½ ж”ƒUö‡|!æÝ˰Ÿ•†vRè¤sZUw¢ÎðïḚl1ÿüÿÌÿÀÿÁÿÛÿê6To‰¸ÅȽ´®¢®Åü7}Éû(Ö ”åXÞAsw©ø ®Ý#i»  0 ( ç  w ÷ D Z q e L B Z ˆ S E 3  " Q  k ‹ÚMÿ¶sM=< µhÌH&Jd+•ß]`É9tT)Ä_ü¡wUp•Ü]µ a¸©LÒŒHØ®–xkhqr{„ ËðúîÌ~iŒÂp¹ÛL´i^Ð^à&¦·§6ŸÉP» {Y8ró f ¿   þ ¾ x n¤®¥›¥Ø÷ ¤#b¦ªhú«}}–yx×k2:V+’ÚNS©DÅØ£—6ÿåÿÚÿ×YÃ* wèH¥Þ#ÉŠ9ì—=äCñ§`&ÿâÿ»ÿ›ÿ¹ÿôH®È¨s%ÿÙÿ·ÿ²ÿäK¾h>äIÿ§ÿdÿiÿîwMî‚'à›#}´ýkw³8Ñ D ˆ i ;å—lu""7#ÿ„ì$fÀ)ÁN 0fd—8)D;êLö »Œ/†7¶¡œ´.ªBÇE¾;ÂNÙYÔ?¾  + ö¼Ž2Ç/žôJÎLÀA-6†ÎHG6ä„Ë“>(;œo 8yÿ©ÿ ÿ%ÿ£wSL6OÑŒWã.YªbiŽÝRï_“oRàÈñ-R^a=Ðö_§ñI˜4õ  ?T4癄‰}Sÿͯ"åÜž>=Ag«.½PÑ#X…À>Õ ® ƒ l O (ÀAi¢ž«Wã ' ñ ¯a¶¦©/ÈÎÏ=v±¯•,Í,g£ÿëÿ¥ÿŒÿëpÅÉBÿˆþöþµÿ ÿÍ€ÙË•×_ X‡”[¢ø|øTq‹s@$TÒÿÔ¶;¾4Ÿ‘_d«ÝúþòäÿM™šš .S“}F® ] 5 = ?  åW¸Å´¶×r(Kq¸ïI1óUÊó1çveQ×fÁ_ © B õ ! Pèl^}«´¥3ÂÜØˆ#þí«É^ãät‰ÿÿ$ÿL®ûØ}C’Q5²àH§ F}Ç)›þVpbOuù3gw;óz «9霣Ñ׿ýG¢*°D`y'õ • à   ; äÝ&x­Äzå9zöŽ˜°ŒøE ]!‰"e#'#‰#÷$$J#ö#€"Y!#xÕ-d—!ÌÛâ)qâPÏT Î ; ‹ î  +àzã0êÞ šÜªÍÿÆþüþëÿ>ÿèVhÿñ@ó—.8|Ó!R^yÁ2ªÿ%-Lk§âòÃ?õ¡>õº¼Ñ5@™ï W  › «ËÔÀâKà ÝRµ"½ ’!V"P#W$–%×'3(¤)æ*û+Ê,¸-e-þ.H.™.§.Ñ.‚.,ö+Á*(m&§$ç#H!¥ ^>o’ÎCfW>¿–˜±È¥x Õ ü ñÜ^&ÔäÛ@ñS!ÿˆÿâoå·D9¹V¥ºÑì0\F+5„ïd»âðÃUZ)äÛºbÿímÑàuq™0‘F ü WéIAê¿o¬!"^#¿$ó&&ð'¾(Z(Þ)’*+¿,Ã-µ.£/“0ˆ1‹2¨3¡4k5 5Ù6€77T7°7á8487§6€5?3y1¼/ç.,†*è)º(µ('_&Ö&e%à%N$Q#@!³ 4’¦CïkÌÒ» Ž L ¡jºç>wÙ* vƒTÿæÿ²ÿç|\K *û#x÷x³¤h”KôÄ× JAS”/⣹Ȁ / 7 þ^xÆ A#%Ö'ò*,+Ø-k.v/u0911ë2È3Ÿ4W5<6u7§8—9+9¶:-:·;f<1<û=”>->þ?Á@U@¾AAA¥B.B(Aí@Ô? =à<+:`8¡75~4X3]2Î2&1Ä1…1O10i/±.B,—*z(ƒ&ˆ$Š"¶ úlíL©uÞu~  Æ .0ÖàcÛ|_Ô^ 4½.ªo^c~xЏ‰Å¬{ e؉¿ÐÒ!UŠ‚ Þ « ܨÄá©û#&Þ*[-^0œ3U6 7¾99©:_;;ì<ä=Ö>º?|@PApBoC C{CÔDADÊEžF‘GHSIJ%K$KìL~M)MªNLNZN:M8LJgH½FòE7CšAï@ž?{>®=½=-ñ+ª)‚'n%‘#æ!ÿá ð+àÁ › r¯µ:®«ÿçÿŽÿÄ>d8ÿêÿ§ÿ£ÿ×ÿÿ#,Gœ×Ö7–}Lxé2tг Š ® †R'A¡÷«¾7!ð&+*¶.³2"58³<^?jB*C~DXDˆEEöFùHI IÉJhJõK¾LgLÐM MLMÈNaO]P|Q¤RƒS]TzU‘VzW,WðXY,YPYSX‹W V'T¶S%QªP@NÄM€LiKuJTIAHHGnFE¹DýD BóA‚@1>p<‘:(7¡4î2=/ò-ø,R*Ñ(§%ö"d³9OÖUu ì –§ÿÔ=óôZ_{Ž;ÿÕÿ›ÿ±ÿò2+1\| > ï &ob•õAâ Ý Æ™jÝ@ì¦X!¸#~%Ó(Ý-1’6 9í=hA$D½H¥K’NNýO¤OáP™Q¨RÎSêTèUŒV VhWW’WüX?XvXÍY8YöZã[Î\c\ò]Å^´_ˆ`KaaÈbŠbßc b¦aþ`Ï_©^z]p\‚[€Z›YáYXVùUðTÓS¯RfQ$O¯NLvK IzGáE½Ca@–=Ç;"8­64Ñ2¸0Z-)H%;!…=M,kj S U(ñ,µ<ŒLu=ÿîÿŠÿoÿ° ÿöÿô2MW Ø š ‡ õ f—CîLŽŽ!w$²'º*w,Ö.ç1¡59f=A¶EuHþLéP{T V]XBXèYqYÎZ•[§\Ã]¶^‡^í_)_R_¿`?`¬`îaa/aVa¯b7b´bßc cudd®e\ffÉgŽhhah#g´fÜfe]dØd‹d1cëcÅcnbçb aJ`=_+]­\Z-X*VAT•S%QÌP'NBK×IgF¿DA“??<ú:Ð8 4ì1 -)$%¡"5¡¨' È x ºâlákžÿë )Wê2´BÝN÷³â Á$^'ì+V.ê24è7z: =IAESI€M–QšUFY\0_-`übžc.cc±d*dêeÏf‹gg&gfúg7g“gÔgágÍg§g—g°gèhh hhEh»iiªjGjök·l4l“lllkk jÀjjÆjìk*k}k‘kxjùjŽiÉi gÊfpd¡bÀ`Ò_]r\Z XöVÝT¾RUOîMdJèHSEØC@<|8²40_,P($– •D¼~ à í‚8ÃŒº{ŽÿäÿÏÿÍÿùÿñÿì&?#“ ®ôXÁB/J"£&ë*Î.®2œ6F9Û<ü?ëBÀE³I LˆPhTYXG\D_™b¶dÞg h_i¿j6¸;N?ìDHìL­PES~WZ%\ó__aÕdg§jŒmn¡oÝp‰q¥r_rêrÃrTqÔq¿qõr-r-qúqopãpHoÃoOnÉnjnnnnHnsn¤nÀnñoDo¥oøp/paplppXpo°oZo6oo[o¯plqHr6s sˆsësêsås°ssVsr­r†rXrq’q p(o2nløkÅj|i gÇf%dUa÷_ƒ\ÝZ­WëTÅPˆLG;Bü>ì:Ú6W1V,E'¾#tã\Ƴ Ö ¨,¹«ÍåŸDEäB”? ;–9³8!9:Z=ÝAiFssr~qùqgpàp#oTn7mk¼j‚hÈgdIa-])Y0UQ`M!HCB¢=%7²2¢-\'!”È–W 6 @«"Ñ•ZëWÚT´QÆPVO:PPöS¬V·ZÝ^÷bâfniZl~náq rRsntCuv•wnw~wYv«vuotÏt,s{rãrMrqÛqÿr8r`rSrqÎq qq©qºqærrVr„r¯rßssFsštt›uuutªtSs¾sr[q¥qIqqSq¿r§s§t¥u‹u÷v?vuÓu‰urupuUu>u8u4uuu2uLu?týtÀtits·srsrœqüqopºpomõl jfçc£_È\eXISÑNFH€B{=7{1b*Ò$1úèý9 ÈA b«`]‰[8Z.YbZ&ZÞ]_bÃeÒhÇk¨n!p°r…ttóuùvÍwÝxnxºxGwÒvçuøtãsØrírqcp”oÿozo]ojo—o‰otoeooÚpRpµq&q¤rr‹ràs2szs·tt¤u)u—u“urtætds¢rËqõq"p¯pNp‚pÌqrks>søt%t%s§sr™rKr/qüqêqõrqÞqÎqìr?r’rÜss's'ss8s=s rßr³rprù8T2),ž&Ô!ŽpÜpqp oÍoóppÀq…r‚sIt,u:v\w‚xUxây;yãzbzÏzžzIyMx^vðujs¤qßpInómºlzjÎhÌfŽd[b¹a``¹_ç_«_H`a0cse©h-j€lÏoPqusct¨uÖv¯wÎxŠy-yx¬wºváuÔtÈs¾rÁqÞqp4o;nlúkfižgdsae^.[UXÄW#U€TÕT8TT¦U¿W8Y5ZÛ\ˆ^`!bve7hj‚l£no†p”q¼rƒs1s|sÒsât#sÃsq¢pVnulÈjfÎbj^=Y4TN0G÷A;¯60d*è% qÌq®q–q•qØrr³sjt8tÉuovawDwöxAxixxñy0yEx£wêv}u s#q+omkhißh–gbeäd aï_Ý^-\Á[ÁZmY«XâYˆZµ]+_rb/dÐg©jÅm‹oôqªs]t½vew‘x˜x³x™wÔw+vIupt†s©r³q×p“o"m&kUhÛf.bÈ_K[—WÌTªQÝPNBMZLˆL“LgMIN›P¸R•T›VhX´[R^—beKhj)l?mÙošpËqÒr=r¦rÁsrþr¶q·p›onlDj f¤cU_ZùUÜP`JoDß?W9º4-Æqrqxqq–qßr0r¸sUsùtjtìuÉvuvÃvžvˆvXvfvu¤tis!qnìl_iÞg„e;cha©`d_V^5\µZæYW|VTçSGR4Q;QÔRðUfW“Zk]D`ªdZgäkm‡pr?t°vrxxnx xwv¹v u2tdsIrFp‹n‘kÆi#eÇbG^YËUuQMºJÒI!G>FAE]EWUVqU"SjQ¤OøNMYKºJ®I½J\KtMöP2SOVrZi^±cgj™nqt.v`x\xéy6xŽxwIv­uÝusÉr”pRm½jf†bB]ùYTO IîF%CAe?‰>˜=¯===£>o@-AÏDFDI;LQPFTyXå]`×d‘g­jàm"o0p4q4qƒqÛqÖr q¶pïoÓo0n]mpk»iÖg'dºa]]”YTÉP2K«F„@œoïp7p‚pÜqPqÐrNrÉssAsbsßt sËsrÀrq3ošmükqhÌeSa ]ÚZJWqTªRËPýOÿOON™MjKµIéH8FÕEÀDUC|B©CIDSFÉHýLDO–TXí^4c0g¬loÏsÇv€xôy©zy[xÖxwjv“uÉt]spdmci dÆ_´Z®U&OkIËCû?©< :H8W7ƒ6¥6’6]6ù7Ã9H:˜<œ>¦AºDöI8MšRnW'[¸`KdPhakan&o³qCqårpr€rårÍrWqtpÕpo\nlj\hoe±b‹^±[W3SqNùI¸nnÑo-o¥p6pÉqGq½rr.rGr¯r²rFqiqp nÉl~j@gc©_„[*VñRöOïLùK+I‚HÍH^GÔF¾EC6A|@?=œ<º;ÕW9t5%2î0½0/6/H/,/Ç01ì2þ4»6z9‹<êAŸFaKÄQV][Í`Ýfiðm„oq r€s9scsòtsúsZrÁrq•p½o’mËlIjg‡dZab^%[WVRÄlÛm1mšn*nÏokoåpTp—pÙpýqSq9pÊoßoun*ldiNfUbY^4YrT’P K´HŽE„CïB™BFBA³@Á?*=<:Ï9Ä8Y7S6K6§7ƒ9É;”>ÉB6G•MŽT^Z°`ŠfLkrqu1xÒz${!z¢zay¥yx5w|vtÄqänŸidb]ïW`PDI-B};²6m1†.Â,#+>*\*}*m++¶,Ë-Š.Ç/ð25ž:]?.DØJGPV [÷bgkvn$pÊrs6sªtktÂutµt0snsrkqpn²lÄj–gøeˆbð`Ž]‚YÆk;k¨l-lÙmŽn1n¡oo4oxo’oÂo€onm¨l iÅeÛb]SX[RòM„H¤CÖ@z=Q;ù:ú;;*:÷:=8ï7µ6„5–4š301ú0È0à1x3h4Ã7¯:ì@xFŸMõTÏ[vbh)n¶s–wåy˜zízzmyÇy\x¸x=w uós(oúj¸eo^‚W^O€G¢@b9B3Ù.°+œ(š'i&S&t&ƒ' '·(b(µ)\)à+é.p2ó7š=nBûI3O¤VX]Nc'hwkÕopßr“sctZtÛu‚u†u&tmt&s´sqópÎomHk2iNg\e”c7`Gj{kk¨lamm­n nQnlnªn¸n¾nYmôlølej`ŽY™Q™IsAÙ:5/â,š)7'†%û%Ñ%¿&>&Ž&Ê&¾&ç&ë(H*-Í1Ù7^_DÙKÁRÄY _dg’kFm¾oÿqArÁspsçs³sts4spsqsrpÛon|m•lÁkÀjukplGmmån~ooKoXoAo~o|o&nrnym8k‰gaèZ´SÐL^DÚ=Å6·1-+›(«& & &;&M&:& %æ%¯%%‹%“%‡%J%$ý%.%X%Õ%ò'<(³,™0ä7¿>äGXOWº`gmÐr vw‚xÓx›x¢wòwjv6tôrØpÇm³j¼fGa”[+T]LâEƒ?8ò4i/Û,Ü)ô(v'&Œ%¼%5$¥$o$*$$‘&(6,/ñ4û9Ð?ÓFLMhT˜ZÉ`Yd\h˜k‰nNoîq±rˆsFs;rör¸s-sŒs}r´qÂp¡o½onzmÍlßkæl¬mˆn~oDoåp&pWp_p­pžp9ocofmàk¨fˆ`ìYiRJpBÝ;ò4ì/š*g'î&S&~&%ì%´%x%$$Ñ$‡$b$H$N$H$a$ƒ$Å$ó%W%r&‘'Ä+..ò5A;éDKþT\Vcwj[nüsmuVvëv¾v½v u¤t¼s½rpumÿk§gàcÌ^X7QzJ¿DC=ä8 3m/Ø,‹*³(Ü'Â&r%$­$V$$S$,%6&»)ô-51©5Æ;/AHOLUý\`Áe…hõlWnjpuqfr^rsr'qärsssRrÒrqpWoÎoanØnll¸mœn¯o–p4pzpÜqq‚qjqp oþn)kceª_²WüPTH…@÷:=3@.);'+%ë&?%ç% %O$ö$$7#é#Ç#¨#¹#Ù$$$/$7$~$—%¡&¦)­-2Ü9@æH‹PX•_ÐfílpøsOu0u"u?t¯tksÑs&rqoDmŽjUf¹aˆ\_VCPI¯C+=D7i3/E,ø*™)'@%÷$˜#ê#{#¡#O#æ$Î'B)Ù-³1,6;ŽBxI§PÆWm\ÛbEfIjKlÉop qPq…q5pñqr‡srér_q…pýp pToâo0kìlmmEn\oNoÐppªq$qžqxq#po¦m;iÒc¡]jU¸MðF5>Ú81Ê-(¹'%&)&Š&T&%Ì%r%$Õ$£$›$‘$¢$Ê$Ö$§$r$M$Œ$°%²&¢)A,1 6=¬D·LASÒZËa¾fÿln¾päq#qŒqIqo[nyköhúdc_íZU7OWI[CX= 83‚0„-}+R)';%4#ÿ#,#,"Õ#;#®%\'5*T-16‡=CD3K„R“X½^Æclh!km¶nÓp/p{p8oôp™q–r]rrrqLpòp´pqoÿoOkÞl6mnoowo°pfqqxq9púo¹nükígØa!Z”RÐJÛC-;÷5ü/‘+G'¥&œ%æ&K&2& %Ã%x%<%(%%5%F%]%%‚%($½$|$¢$³%|&9(H*Z.i2Ö9$?”FÌMîT§[``¦eÐh´kkŸlEl9lIlZl–lým¢mÊmølxjff“bÜ^¼FJM¸T‹[)`peÝiVlAmlnñoUo*nêopqqqÅq„pàp³p˜peoþobköll½m±nŽnÑnûo¾pkpÙp„p^nçm™i¿e ]ïW O3G'?™8z2Õ,Ò)"&4%¬%/%“% %¡%y%T%K%k%‹%À%÷&&&b&X&%¥%v%¬%×&‹'6(¼* -0q5Ü;ŒB%H‰N™T£Y^yad3e/f9fˆfØg@gíhûj>k:lOkÜjØgüea=]©YqUePIàCb=›94‘1-Œ*¬'%g#¶#H"Ý# "â#N#Ó%g&ž)á-Ð4&:ŸB:IÊQ X ]ãcûhkZl¬nXnÇn¿n}náo¯pžqpÈp&poõo»o_nál7ll•m[nn3nSo(oóplp oûnDlag¿bsZüS¾KÊC¦<15/¾*&ø$©$™$Y$Í%%8%:%;%`%¡%Ñ&&p&Ç''*&ñ&§&„&Å''Ö(})|*+ë.p3 7þ=ÜCbH¬MíRŠWLZÆ]à_aaÚb“c^dzfg§i3jókuk}i®g³d’a²^1[2V“PªI³CW=Ù8¤4n0,’(Ì&W$L#»#C#f##9#p$|%'¡*ã0Æ6×>pFM°U[]bf¸j‚l mãn]nxn5ntopp{p2ooRo=nðnŸnAll5lzmm”mˆm¤n€o`oêo„o‚m~jøeœ_áX`za·cCefãh—jkwl k,jg–e.b_Û[ãV”O”HàB’<½7Ü2Ð.¦*D'w%($”$$K$ $$=$û%3'6)Þ/B4énÍnØlipcd]?UqM¹E¢=v67/*%@#!Œ!ç!þ"–# #c#„#›#Ù$9$$ü%z& &Š''‚(9)*\,-Æ//ä0<1ƒ3¹7]:ì>µB%EtHÕLIOõSOVmXÜ[E]'^Þ`”bždÙgikl+m0lòl®k i#fed«a3\ƒU˜N”GzA ;5è1,,!(ä&J%¸%I%‹%L%$%%S%&&À(ú. 3`:ÍBZJsR5YeafÀk¡mÓp plp¡poÇo¼pCpƒoño n±n†n mÈm¦lýl/l(lHl”lWlqmNn)ž&Ë&C%ã&A&%ß%—%±%f&×(Í-š2·:AªIùQòY}ag£mo­rr^rqÍq!p©pØpép1oInìnËnPnnml—lrlbl‰l5lGmmônn nk8fò_ÂYQFIfAE91Ä*%Ì!¾ [É  Á!W!¿!ó"""z# #Ì$T%%è'G( *¹,ù/î3:658:);¥=€@BðExGvI-J½LƒN¨QShUrWiY‰[à^/`¸cvfh‹jglAmPnQnynÅmÿlìjàišfƒbš\"U;MŽF@9 4-æ)æ&Ï&B%Ü&P&=&%Í%Ï%y&¼(^,Ø1»9$@¿IRQ‰Yyaèh‘n¢qžt9tat˜s¡ršq¯qqZp~o™o9o#n«n‰n›n|m„mUm*m2lÒlÚm‰nSnònjnfkKf•_X0PiH~@J7è0Œ)&$‰ Ìïùh® ] ú!y!Î!÷" "h#$ $¥%¨&ë(ð*Ý-˜0‰47å;E>@BD F…HèKL†M¡NŽOÁQsSrU|W XŒZ9\Y^a8cófgh–j/kñmnnnm4lLji:f b[±TüMmFP?«9 3E,ÿ(æ%º%/$Ç%T%f%l%I%_%,&['µ+Ô0„7é?…H7À1í+˜'„$^#ì#œ$N$Ž$¼$¹$Ý$É%ä&÷*À/?6>-FõOVW¶`˜ho#rûvv>vuosÿryq½qRpVoŸoYoˆodo¨ppVo“ojo%on™n˜o!oÎpyoôoÜlkg8_0X0PVH.?³7 /ˆ'ç#g Äl ~!!€!î")"¼#¦%%ã'¥)ú-y0»4Á9 =§BOF;IÇL/NxP7R]SþUtUõUûUëVWWŠYZ›[²\±]Õ_dac&eNg(h¥i¶kl m(m7lákajgáf$b‘^DW¾QIBX;±55/¼)Á%í"÷"–"\##t#´#¼#à#á$ç%¹)%-b4•;ùD­LùU_^íGO|X8`h mq8r rèqêp»onnënÕn=nnFoo¬p q q;pÇpÊp§p•pWpfpÙqfrqq–n9iaZR!IÐA!8Y0µ(å$C å ‰¾  s!!u!³!Õ!þ"*"Á#b$´%²(<+_0d5[;uA¾H/N€SàY\Ö`[b£e7f§gËgágÖg®gÐhriWjBjÈk kŽl7mnnðoKo>nÙnén»n«mTkthdÖ`×]OX¼S©MIF˜?ù9×4Ð/í+í'j$O!Å! … Å Â ´ e = ( Í Ý#B&”-"4<ŠDšLïUŒ]geyjÂopqp;o2n m£m°mAmGm¹nÀo‘p¯q×p©pMpfpbplpIpapÑqSqõq‘q¤nlioa€Z‡R”JTA¿91})À%!¬!9 h Å!!š!ú"3"J"j"›#&#Ÿ$¿%¢(+ 05 ;jAïH³OSUZ©^ÏbÄe^hi­k kpkÄkÔkþlmmnKn´nÂnÖo"oÅp|q/q0p§oÀo‚nýn€lti¶epaX\ÆX£SÙNŸH—BKnòoùpÕqZq|q®qÖrrSrÌr£qøp˜oµnlohòd¼^óYISŒNEIBD>æ9v5 1B.µ,)Å'!$á"Ã!{ gìVìUÃ\€!$•+22#:kBIåRY¥aWfoj¦kËlãlJkšjàjÙk2k kKlm7n*oNpll1lwlÌmUm¦n!néo¨pYpMqnÜkcï]\UoMrE<º5*-M( #º"”!§")"3"h"Š"§"©"Ï## #Î$‰%I'*/.Ž2ó8>)DcJÐPÚV¬[&_[b>e0gCibjÛlImDn/o p:q=rrcr¸rÓrþssas$rˆq4pYnhl[h c)\›V2OøJAE)?Ø;5à2/-a+q)¯'¡%«#À"X! ]ˆòA÷—-]! $š+=26:qBI®QÅY)`¨eši¼jákìk`jÒjFjcjËj¬jákl´m”n¤oÇiŒi;i†iýj¸k$kÄlÄmÂn˜nËoÚnÛ7"/R)¨$\", ¤!"!N!Å!é!ä!Ò!Ü""i"F"#$Ë&Í*P-å2Š7ô9Ì4E0j,ö+½+ +G*ù*E)Š(8&©$Ù#.!É dƒ¸… ¤ã!é&-$4a<€CéKBS>Z]aIe¬ij¡kykk4kHkk¾kƒk|llÁmmKmÛ`}`žaNbd)e;f[gôikj|klžlPk6f­aZ*S JüB®:¬2Ñ,¬&~#3 ³ ¾ Æ!o!•!!`!K!p!ˆ!=!!"#%ƒ(&+Ó/U3j7V<A3F¬KèPzT›Xu\¸a(eðiÖm%op¸qðsÇu'vv2v™v¤vÝvAu¸s^pËk¶fE^ÌWOG”A(:™5f0-*z*(**”**$)³(ˆ' %1#ˆ"% Âé-‡!k"œ&û.P5š=¢ELQTQ[ab#fPjk kºkWk–kÖll#kÒk·l7lØlælômU[™\]ý` bSd eŒguij9jãlVlCkÅhc‡\rUÃMëEÏ=¶5Ã/>(£$¿!›!$ Ì!W!`!H! û!! Û µ ”!>"#ý&>)k,k/ß37;ª@áEüJ½NøSW¤\aÛfrj†mo_pést–uÒv/v‘vbvu¶urPnÿibÂZåR÷KC=$6T1G,†*c(¿(û)")’)­)L(õ'î&“$å#n"=! N»¸J  Ž$(È0H7’?|FáN,V\öc}gcjÔk§lkškïl>lVlk¦kvkäljlMl$lMVEXZ]]U`abÕdÂfÿh©jjÀl lFlgiye†^ÆXrPÄHÓ@§8ž1¹*­&&"P!L û ã Å ‰ ` e r G *  u!"¦$˜'Z)ñ,È/@2y66:ï?¼D•HÐM:RW˜]ebžg`j¥m®o²rs¦týuduÖu›u¯t§s¿pklueÉ^åVºN³G?¥9B2R-q);'ë''®( (s(Ÿ(R('4&$ª#p"m!V ¿ Y ƒ .!!è%Ä*Ñ2v9ÁAHýP@X ^¤dìh‹kµlLl{këlWl³l“lkxkDk¯l*kökk’O‡RyUÌYÖ]ÏaDcÖfˆhRièj¾kþl:lÇj”gGa[;SÕL7D<4æ-˜(‰$"I ÷! ´  #åḚ̀µ¨ " ¬"(#í&[(¨*ý,è/M2 5Ñ9Ñ>KB>ý7š1o+'M$¨$—$P$Ã$ë$ù$ü$Å$š$#Q"\!{ Ë ÛÖ w †"$$(ü.Õ6²>EžM8TX[¥a[fÝi´llkìkekðl(kqj7iWhíhëhÍhgfNA­FÂLQõWš] adØgi(j*k;k†lk—i¨dê`OYÀSKACo;í4|.¯)%í#\"š!•! bÝSÔ4ä Š!Â#0$õ&¨(,)l*¥+Ñ-¿/ö3B6n:±? DŠJeP›V™[åa e/i~lhopqp‘p^n&k¬f‡`ùYmQØIÜB8;%3¶-Ó(%L#f#—#T#t#d#H#+"ò"Ë"T!¢ ¾ê\ÑÞà 6"T$ë*o0«8—?úGwOV\ýb*g-i’khk>kjªk-k'jhkg1fHe¤dÎcqaä`…:e@›GMÄT(Z_ccÁf4h­iÃjÂk l5kÈj”f¹b×\ÚVÇO[G¼@8§2‰,u(•%?#Ù"[!¦ ´ [ÑNÿ ¥!Ç##$§%û'((ô)³*Ù+ü.W0ü59=>“DJCÓIÃOãUó[W`ªd·hÚkm-lÓlŽiheê_ YQI#A`9Æ3?,h'ã$!#""J"!è!¬!X ÿ – AÃ_¿“vqÒ Û$'á.a55=!DKÜSPY¥_Écãgæi‚j–j#j iªiêigIdUaË_&\¦YûWT$QN*Â2Ù;sCëKßT Z`jdg¤iZjÇk+l9l[lqjyh co_XãR F¾O£Vâ]¥bfˆhãj÷k¤l«lÖmYl#jUfsbß]sWŠPcINBd;¦5ú0a,C(Q%Ã##!š yô+cö h!!ø"Û#¤$$4$4$m$´$ž%% '¿*M.n2^7j4Ê$d.M7îA\JüSZ¬_ðe:hAklmm6nmlei?fga®\ˆUØOH Al;Y510$+;'Í$s"„ žÜ&>É > Ü!‚"&"Ø#0#G# "ê"Ï"“"Î"ô$k&>)¬-1³6;øB‡I±P›Vc\_”c6cc‘_[ SÆLÆE=,6/*&%°#Ô"E"T";"{"›"^!Ð! ¡ 0„ÝC Å4­ *!q$d'†- 3(:ÊB+I~PÃW]Ha®eÇgÆiÛji´hh=g7eïb^­Y.SôNYHÐCd=á94ìá'ž1(:ñDÞMŸV\DbpfYj8kómJmxn†nomÏk]ie `ºZÇT MèG…Ab;!5†/è+•'o$å"y!f H â 7 ƒ!!{!õ"}"Á"ß"ž"C!ê!£!Ó!ê"ÿ$?&ß)Š-Ž1Z6Ì<õDKQ(WZå^¿_;_j[V×OsH[@Ã902°,a(L$Š##!õ"+"L"“"—"0!– é Œ >¯5×áÈz @"S$E(,H2“9?@äHJO?V1[ÐaYdâh3isjÀjCicg¬fðe!bÄ^=Y[S LéF|@!:%4&/)Ûoš!*R4f>˜HQTX_¦dnigkómÄnoKo†oim¦kòhˆe _ÌZ1S²M–GjA#;4Í/‘*Œ'I$="Ö!}!$ ª ³ ¸!!ˆ!ö"9"8"B"!¼!Y ó é æ!§"q$H&)<,l1­7°>êEíL4RfV}Z¨[X[²W¶RØKt7-0•*$Þ| º­1#¾-“7mA/JñS/[`¼fÑjcmmæoloÝp6o mËjõh:cÍ^ìXðSEM^G‡A;E5/Ü+Ó(&4$u#É"æ"z!ô!ê"2""‰"O":"!ì!³!^!O![""ª$%'l*.õ4·;ÙB®HÞO S5WmX#X}TtOwGÕ@©92 -<(%("m!µ!6!¬!ä""!Ô!“!. ¸ `  3 S!!m#$Ï(z,B28?QFQM?T@ZG`4dOh5jkækàkËj*h†eËc¦_²ZæTMŒEî>5ÿ.-'v êðÖé ÆwP&Ù0?:(D`MšV@\ôdh¢lCmšoyp&pôpVo~m6k>g¨c‡^XÊS+MÜH,Aö;Á5Ž0¿,c)ç'&e%$9#"q"H"z"\"!å!­!u![!?!]!s!í"ƒ#ƒ$ %¼'˜,1^8n?4EzKºOêTT³TóPÝKÓDO=Q6‹/à*à&2#É!“!5 ù!!Ç!õ"!Ù!‚! m |! !h"n#U%©(/,¿1‘8$>÷F;MScZ_‚d¾hklIm‹m lmjShve.b\ÏV»NØG~?@6l-º%k«\ˆ‹ Uóà ©)2<†FHO}W^ûdoi*kyno%p~pfpnHlíj#fëbH]™XsSÎN¹I'C'<õ7³2ó/Ú,Ö+)5'ä&)$ö$+#ý#µ#…#8"ò"œ"—"Ì#H#Š$ $º%³&1'”),Ô1¦8D>±DµJ©N†RMR R¨N I±Bs;»5;.À)ò%‡#n!!l!Q!Ù"+"b"Œ"b!ý!š!V!Ÿ"##Æ%S&æ*-n2½8c?KF5LúSUXð^ïc¤gýjplámŽnFmLl9i¢gfcW_ XdQ?H­@¥8 .Á&ö˰ Š `J •›!ý*Ø4’>ÎH’QY¹`eýi\l°nMpCpµpÑo—nºlªjtf¿b§]ÙY¨UP9J›Dz>Æ9®62]/å-’+Ù)Å($&°%é%2$ì$¥$z$#ñ$X%-%¹&c',((¡)è+6.¥2ø8õ>ÕD\IÒMEP‘P¡P†L˜GÂ@¨:3”-'(v$5"T ¬ · Ã!\!»!ô""!Ò!Ù""Ô#‹$Û&(=*ƒ.€2°8¼?@€C]G(JîNZQ´S”UaTÜT@PÏL“F¿AUP•À¤Öä+ rgM~$®.6‘>ÄG:NóVÕ\¸aÍdéh†jÎmm©nmmmplkKhÆf bë`\åY^U^QKMwIÒFêCßAö@‚?ô?>™>/>8>#>¦?‹@ AMAÊBeCCoDDE*G%I†L´OìRÈUƒVäX;W“VÒS°OðJÛFA¬=2:7)5ï4Ï4±4„4§4œ4¨4Â4ú5 5n5É6ý8B:Õ=‰A™EËJßPU.Yý^2bªfiTkl[lËnnmÃkRh«d@`wZeS‡J*@†6R,#Öɸ 8 /íûmìÊ~¢Nñ ÿªzP$¾,‘4š<«D´MPTtZš^«bûfiknl…l^l×l½l¶kciffŽdCaÆ_=\%X·U#QÆNêKéIèHIG¬FùF³FJF*EêFTGBHuI4I³JDJÔKKLLÙNmPSRßUƒWÖZ[[þ[JZ}WÅT P`LUHlDrAŒ?=ê<â<Ã<—<Á<Ó<í== <Ú= =\>±@B¿E{IeM‹R'V˜Z¨^’aêe¥h'jj…k jðkyjÂilf'c^?Y®RËK!A›8-.µ%naIf éqÍ‘¡—°¥ñ1Ÿoœ 6Ã-"¶*˜2(:OC`K´S6X}]X`øe”h×kFkïl™l¹mŸmªløki1fûebÐ`]YôW1TsR„PÇOñO%NàN…NfN NIOPlmJmÓmÿmIl§kjbhãgOe›cêbƒa@`a_t^Ö^=]ð]‡]“]Ñ^~__×`°a¡b‹c\d!dÆeeff»gXgôhh;g”fØe,c^`ç^b[ÙY\W‡UÊUTªUUoUßVUðUÊU“U?U^U±VÇWÚY[v]Å`bte)gZioiôiçh›gÎf9d¹aÄ^'YUÑQ6L_EŽ=Ý5O-y&1Í($ À–Þ²“ŬT¤v9ÿøŒu†0| IüË$É,4S<½D¦JÑP.TŒYð^«c)eÃgžhTi±j×llŒl¯lk¢jãj6iNh5g.fleàe5d•cçcncbùbùc2cNc¤dd¿eYeÑf)fcf f÷gtgðhYhh±hmh#g$fd@be`^¬]j\:[è[Ì\J\Å]0]g]V]J]\´\˜\º]r^'_K`eaàcne:gshÇi€hˆgMeNd*b_,Z¶VPéLáG÷B%:£2¿*ò$ ýo½ <+ËëÄéëvRd;ÿ©ÿ–„‚«õ L\­ "R)51O:AÓH(LËQÅVˆ\3` cûedfÁg²iPjÄkôlolÀl«lÚl¹lKk·k`k,jþj·jOiÈiLhÜhyhg g:fófÈffXeåe~e*e@e†f fkfÒgWgÃh/h&gúg@fiend‰cøctctc‘ddeeueseedüd[cîcÕdCd¤eQeùfÖgÛh´i¶iŠh¹f®døb›`¥]"X–RÞMÈHµD3>|7~/'ð!O@1 o¼¯äž9_ãò¯K5Gnÿ¿ÿìØ£-ZC 'ŽO³Õ&‰.§6ö>9CŽHL@QçW:[ù^œ`ca#b°dff5gŽhyh÷iÖjgj®j—j”jŽj²j´jj%išhÉhg)f#dücëbØaÅ`¢_I^:]G])]J^^­_ª`Ðb&czde_e¾fff(fQf…fâg9gÇh~i0iÔiúiøikh®hgÑgõgþhhDhYhŒh4gÅfDdmaÓ_Í\ÜYžTÀO;IFD`?l:&3¶,n%4Ü· sy•ð qéÆa4_ÿûÿ¾TÿÇÿ~ÿÇ^{ìè mxÊ#P+03:9í?BýGÈL³RVFYy[\¦]ÿ_Óa c'd|fgXhfhÁhûhÐhÅh£hžhQgãgf#dÛc|aá`c^È]#[WYOW VU‘UhV[W&X»Z{\©^Ò`Çb—cçe"ffðg¹hiHiæj—klumAmvmylôl\kÔkªk˜kdjÕjEi1hf_dÝbÑ`Ô]ÜZáVdQYKjE×@a;v5Ý/D(!,aE< š ËïB«ž$ÿã*˜Õ)nÿ»ÿÐ, ÿ•ÿsÿÞÊ9=?ë w  ÖL q'¿.ý4ÿ9T=]A+EýJ–N×Q„ST¡V)W¹YMZö\Ð^g_ê`œa`Ì`…`_Ú_€_^,]?[ÛZ^X«W'U‚SÃQËOžM»KÜK.JÙKãLÜN×PõS—V.XZå\»^‡_ùaqb±cúefgh{iÁjãkekÄkŠkDjÌj¤j.i”h?fÕd¶bi_ð]î[½Y«V9R"L„F´@æ<7;1ì+“$fÀ/8+ ËÝùª¶ÀNz2”¸šA:Z.ÿÜÿ­ÿ¾=ÿÎÿ\ÿTÿÛr05IJÝ PApÑH"ý)Ä/‚407‰;%>ÀCF½IäK±MHNFOlPÙR¦TVbW‹X‡XXyWÂW)VDUiTHS,Q¹PNbLæK_I·GÝEÙDB>AŒA9BUChEŒGÈJ“MWPRŽTÃVýXóZé\¡^X_Ûa=b¸d†fVhi=j]j“j’iÏiShf±dcaô_\_YÀW­TðQ»LìGŽAµ<ˆ7Å3w.9'· ŠR< ‘ ެ¨¦$oѰRQ(B"ÿÊÿšÿë>ÿÄÿaÿ:ü2°áò Î ™®âÂä%S*í.™1V3u6¬:B=õ@žBŠCFDDáFFGùI’JÌKûLfL³L"KzJEI%GËF†ECSA›@%>À=:;9ã8f6Ë655ù78#:0ùA–D.FœHçKGMŒOÎQÜSÚU²WzYj[]à`#a×c•dd(c b7`}^”[ÓXôUåS,P~N+J¹FZ@Ô;Y6u2©.ì*ž$ÊÎ+¶j ‹ n8»ù£‚œ q1X¦Ð‚%0_gH]ÿ¦ÿ¾ D(ÿ“ÿ8ÿ™Bxuÿì™v¯‚ B E $ð(F)ñ+æ..1W4y78š9¦:5;?<_=l>O?5?Ð@€@–@Œ?´>Ç=?;Å9ì7õ5ú4;2•0Î/-(+š)ë)L)*+2-P/Š2K4ñ7—:<“?;AìD”G I\K”MÒPARóU’X+Yû[Ñ\*\Z£Y WåVS{PâMÁJÈG5C—?9ï4Û0„,ç)³%– Iÿšº  8ÖÞ`’B'ªASž¼ KZœqÿï;tKÿùÿÂÿÎ*ZÿôÿxÿYÿµS¶'‰¡N ¬ G 6ñ N{!Ÿ"ô#Ô%¼(Q+-:.¾/q0h11­22y2ë3™4*4»4Œ4 2Æ1f/p-r+R)_'u%t#}!qÉ d   !#O&(Ÿ+9-¶0R35ø8Î;l=á@1B”EGÈJHL¸NMOáPOÛN¨MÞL“KCI#GCÐ@b;ð7S2-×* ''$Y ó0z Š úæ‘SÄ •hêvžÉŸ[3D’¹oÿî%lŠ]ÿøÿµÿé45ÿñÿ|ÿXÿÓU/ÿÞÿw ³ñ—çŸ b [ŠÃá☈ÀŠ ’"U#²%%î&­&è' '':'ˆ( (>(C'q&$Ï#! \© „bRo˜ 8"Ñ%ž(Š+†.{1*3¸5÷8::\<ž> @›BC€DD6C›C_BzA•?k=934Ï/Ð+'.#° ×+ËxŸ Õ wý|0v‡QçRpžŸÒãÄs8G†¼·k K•ŸEÿÙÿ±ÿÙ-NÿäÿzÿŒÿûm“ÿÛ%r#¸[è¸× åE|3GÕóSÿž×ïO‰Eù½Ïô·7 Î'’ß.…Æa ø l ¿ oÜ1R°Æ"?$ú'l)É+½-¥/D0ë2r4 5w77ú8­8˜8Ä7ú7%4¼2-Í)$ Ë!ÌQ>J ¿ ôîþUËms®©7Õ°ï+ú–LDx¸¾—n7)6yœuÿ®ÿ“ÿæ9ÿÁÿ†ÿ uUÿëÿnÿ”a‘Z¼¦H‡ ! E £ Ñ Ò Î 8G‚ÚÄ[V7Ó™V±:bp7 Ì • g)'!¶bätÎ D % Òº¶^Ï9cv 2!å#m$ó&–(n*H,>-|.o.L.U-&+Õ)&"-,¥ã©0C Ò q,J+o»•ÿóÿü²X¡^éÝPPèoEi›À¬ƒ}XE6NiUÿçÿÿ›ÿäÿÍÿ–ÿº…ÿ”ÿrûÖ Ñrúpu_–ª¾3 *  é ° U  Ý K À ”ô>w¼ Z¸‰ù¸yÄ)J^¥ ÷   eW@³=Íf÷ÁÏ Ô"ç$ $Ö$\#ý"x Ì2€™â|? V DEaÕ Veyÿà ¥V…FúØ"ty&³_]Ž›•ƒz‘b]KIU|u#ÿÇÿšÿ¸ÿÿ0 ÿÌÿªÿË0oDÿÎÿPÿ?ÿ¬RÈ®ÿ‚ÿŒÐŪQΖɜtÔîø°Yà~¦:ÛŒ4óÀ¥h@Ed™ˇ¥àcÝ ` Ê AÖxÿŽOà}:ª u°Ñ%  ÷¬þøz4%`9ÅÿÅÿí‰]HølŠPÞ‹n|˜~ad€¤QabYUlrVÿÑÿ¶ÿÜ5ÿÝÿ·ÿÕel)ÿØÿ©ÿçˆýiÿ ÿDÿxh|9wš'ãàÔý4…ÛåÀ…G ݺ‹vx …cPG)/C ú¬p€Œ¼Ü  Ö êÍ<½C{ É á  Ì D7úQÈ×w±qÐ2ÿì5ÁBUö÷0nˆWý¢€ˆ‡|Q;X‰¤=Q^eftsj?ÿöÿÉÿØ 22 ÿéÿæ =`k@ÿïÿÄÿïB“qÿÞÿ%þ”þÁÿof0ýbÿèÿ‹ÿBÿ:ÿ5ÿcÿ ÿß ÿý9`‚ƒtJ/ÿ¿ÿˆÿeÿ{ÿ’ÿä4¾LµvCëqÌ5—\…jOÓ|pN´ÿèÿ}ÿö—!³E/˜ü+àð$[m_ ݤ‹…kS7;`Š–.@Rgpqd`Iÿðÿåÿü(4."o0ÿÝÿÙ9¬á”ÿçÿeÿ]ÿþÆlµt'ºtI&Deƒ’š—“˜ªÆÞíû÷ì×̶ŽiLRd¯àc¸ø(*>‘ýX›×÷BÀÁvhÿȇ,€OÚgQÎùóÓ½Ô bk>õâ̦zI33Pm}z7LV\XSRfc5ÿáÿì 2<."$X„•n ÿñÿýG­Åqÿèÿzÿ‹ÿø¤(G.ÎŒT <\x‡’ƒ†¡Ëå÷ õϦ}RAG]fhjkypPÿÔÿ¨ÿ‡ÿ£ÿÑ+‰Ü"8\(¾&ÿŠÿ_ÿŽ*Ä1êžtŠÆáæààïRn\&îæÕ­yC-1Obhe@VYN?8A]dDÿêÿè./'22>hƒ€Rÿé&…¾ž8ÿÙÿ¾oÎòÔ¸•|~ªÀÊÑÊij–‹œ¿Òã ðÅ¡[P\|’›’‹x]?!<dŸåÛ–9ÿÓÿ±ÿÄ)Ÿò à·œ¥ÄÙÙ¸ªÈ=YhS7úÛ±ƒWD>KTVU5KSSE61=JN6ÿáÿò;='+5@O\rf&ÿùA–ºš?ÿëÿÒÿðD‹µÈ¼´µÈãúþîãÓ¶§¯ÆÎÓßèñêÛ½‚jjxžš‰sYE0ÿø 0[Ž_ÿýÿ’ÿYÿCÿwÅοž–§ÂØÜͰ®Ñ 2CJ:% 쿎fTINWXM/ARUK:+.KS&ÿöÿé5P; :P?,@WU>5p¥Ÿcÿâÿô'u¤¹ÊØó "$ ðØÉÇÎÐËù¶´´©Žxr’£¨¨±³¦—›™f[iƒš³“Aÿáÿ’ÿ˜ÿÐ8•¶œjd…°ÒÙŲ©¬Æç! úÏ¡q]V[X@ 'AWia@*F`S'ÿ÷ÿè:N>@HADJXW=#/m˜“Wÿéÿî)X“Îþ*;G>:+æÔÌÑÚÙ̳ž“—˜€loƒ“žœš«´¤“˜Š}‚Š~i5ÿåÿ®ÿ›ÿÑf…^HoªÆÂ´ –§Åî'&%+'Ûµ¦œ‚fXF"'Fnza?@P`RÿëÿéI_5)L^VFN[cU)%Y‰f)[­ÿ?SWCA6!æÔÉÏÜâÝÆ©‘ŽŽxfes‹‰‰Ÿ¬¡ŒŠˆ„ŒtHÿþÿÕÿÖÿú1V\N>9\§ÝÔ£‰ƒ„˜¤Âô!=8,þû"ý߯À´’fH-ÿüÿÿ &LisbF5FTAÿûÿû'TM++HX[[XcbK4-Bj…„b9 9†ìEilKC6 íÜÍÈÆÊÑÍ»¢•Œykafq€‚†™©©¢§©¦•Ši/ÿéÿôÿü5I?-/F]‚¸ÒÜ„–Ä*,þÿïìåÙ¶†S/ÿþ ;bkG 9QN$ 0LP9(Qqo]\bljTBE\xƒvW3;gÁ ZhI@0óãÕʺ¶ÃÏÌ·¡Œ|sa^h{…Ž›¨´ºÄ½±Žj:ÿûÿßÿí;FG2 2wž«¹¶®£¤¡†œÔ $îåõ"ïÜ×àÛÁ^6 4H<$)=G8!1GI:"!Dq„vihfWJEPhy{jOK[›ò:[OK7 óçâßÒÈÌÎDz—tp_[e{‰“ž©¼Åȳ–lE$ÿüÿ÷>H9)P’­­¹º·©—Œ‚•Àñ  úâÛÔǪƒZ9& 6(1-#&<D/)FWE4Be‡–t]QQYVTW^digjlŒÆ4COA.úíëïëàÖȺ¨Žyomccmœ¦­ºº³•oK2-$,GQ6Ex ¬©¿Ëǰ‚޹è )-øØÊÈɸ^<, 8 '0-#!<O@$=ZZONZsŠ—‹sZTZYZ]bdkv‚„’­Ø%DHD+øêæàÙμ±œ‡xrknr€’¤³µµ§™aH>B?@KG& $9Z€¢»ÆØ×ǰœ ³Ùü #çÀ¦›rE!) +6/(6DE9'".I^he^_l…‘„j\ZY`inhfr‡–¥¯Âà1GR=%ëÜÑÍĽ¼¶§“€wu|}ˆ›­½¸¨‚weYWWJ<61&APeƒ§ÍàæÖÁ´·ÈÒßðÿ ïŘ{og]G- !   $'%*.7=C@1'%8Xu„|j^iyzphbZ[eng`dwŽ¥°¾Öú&BQA+ûïäØÈ·¬¡“…vsxˆ‘°»Á²–{qqi`]UB1-1,.4ETp™ÀÞáמÄÔàØÒÝò  쳃_E7   .=4 $144>B;1(1Jj‡ŠvZRZclpj]V^hc^\k†§½Ïåþ 6B7$÷æÒ»¥“ƒ|rt}¡°¿À½ª‘|vwocXJ4(,:>?:BU~³×âÐÀ¸ÂÒÛÕ¿°¸ÍãØ¬qN=)ÿýÿóÿþ'*# #奿23e $£J*LUô–£p9@=ê%[ˆÈOÒÕFázA)²6 » Q ó É ® µ ¿ ¼ ¨ r + ì Á ½ ¹ Ñ ò    ð ö  _ ¥ Ü  Õ ‰ N U ~ ß 3 ˆ ËrçPÛr8%í|»/c‰¤Çê@ºHÚ»G!öáp˵Žo€×0©  û þÜAC]·—T³p<Ùg€«j c¼,ä€ÎÛö2ˆ˜ ˜õ? ˜  ­ f \ m i - à a  ê é ê  $ = O <  ä Æ » § ­ É í ü   "  ) Q ‹ Á Ü õ Ï z  ã é  6 H U e ‘ È  a Ç 2 Í8ªç/~ØNÁSçžj2÷j±±±Ëyêì»ÞÜŸ‘£½çð)€0 ÝUp>"N[YM'Ìf·3<  Ÿðͬ”·æÜßdÚe Ï B Å c ü ª P  ì å ì ã ³ n 4      ) % ! þ à † ^ W I e › à * R q ‚ ˜ Ê î ý Þ Å ƒ Ñ « Ç í      ( C \ – Ó ? Ï M “ ± Ò  "Å‘V:4 ö‘‹ÐêûìHeH_ÛûÔ–y£ÔÐ8•ßñ¿¥Z)y‘¤múÌoÆ©Má¨ Ç  ¼ a  ¨ V * (  í  Ÿ † n \ D 8 6 = @ > A 3  ï Å ˆ :úÌÍÎÿ C ” Ï û - T r Š ½ Î ¿  G ª { m ˜ È ö  þ å à « œ ¯ Á ÿ ] ² Û Ý × ÷ 6 º > æ }5ãŒ%»’yÛ›3€Ýÿsöað”gØå,þøË.Ë)Çùd-Ë׿À‹–íôJ´¿y ¸ Ù ) ï ¤ ’ { Š ± Å ² m # Þ ª – | † Ÿ Î ü    ä ·  Q - ìßîú  I  ­ Ù  8 P ] ƒ ‘ ‹ Y % Ü ‡ O 3 F \ v ƒ } w c I 3 $ ' = } Å õ þ ñ é ö 4 | ä 3 ¬ M  †ÄÍÝ}o ÅB0LIG7cz8î–tÔA ‰Ž~æeMM„fR–nf71Nд , ä  ‡ n 6 F t ¹ ý ó ² - µ Y  ð 2 j š ª ¨ ‹ ~ e > îÖ¿¹¶»º»ºÅ×ø  ? I O h ‚ › – ƒ P äÏãü  + * $     & $ ? w ¿ ü  "   ÿ  ! R ² ; —  ‘ j@Jª±~æðK…ôå,YRŠ8˜·€mÃúT{"ó±p0­Æ[´\Õ] ? Ð ( ß $ 1 I i s u E ÿ ª c < !       ôòïëЬo/í³ƒP-  (?Ubt‘¶ÞóöêÛò%à " H 3 ëÚàäôþ  5 W k ~ £ À Ñ É ¼ § ” ä X š Ø  Œ  Uãe¤ªd:ðœ/èX¨x+¡l¨Lße,n`ukÑ«ƒˆ S Þ ü ºF’ûo # t . Á » & G 9  à £ l G . èÅ£ˆc-÷ν¯µÀÎéÕ¦7¾=Ì{,Û×Üïð÷+Q}§ÅÐâ÷G³Mölº©‡L) ,J{®ÓÞï % e ™ ¯ ¹ ¯ – ¦ ì K ‡ ¦ ­ Ò  ¢ X l‘°¦^°d!í–.x«²}rz¦ï^_FJQZ f • 0 ^ þ N d   J k c ¾ ¥ À í à v = , 6 S z SõD“ÿ“c(÷ü5A\5æQ¶-½Œc^SRSN2#+S{©Ôñü  lÌk$ÈNt„U+Þô#”Üö  * E e — ¬ • t k ’ Ñ  > ]  Í $ Å „ \ ¶%•-öÅžz(¶¯pý¾»áûÍbЇ! { ± t ² Q Y – ~ E 3    H 2 ? @ Žæ QÄfº£’ÌC4(ENVbfgUQÃBÁg&&1Qaa^I%4W}«­­¬Ïødñ”+ƒÇ»j:Ksÿ°mUu\Nb§ð ìû > ¨ ø ; y ± ç . ë a Æ  A ž.Àv;ó … } 7 $ 6 # ñ ­ t ˆ ` ¼ ð z : Ð £ ¿ ä À o 3øµ‡y_ ¿P ý ¾kÃô ^ò7|ª«rCúª\!í­p3ù4>80&/Nl‚‘’Š…”Û8º8–è÷îÆ§©§ÿzF0ãXQ$$Ÿ0³   7 X ‡ È  T o d G W ¢  { Æ  4 f  7 Ù~ Ä e R K ] U J K J p 1 o › = 5 ù  8 .ä“&Áb ½bܺ²|d¹‚8.pÒ2J6ÓŸFõëü  ÷àÈ´±·Íàô (';d£ÜA_qu„‹y‚’ÀŽ3gT(#e]-“½ªºð L   Ò Å ‘ | ¤  ¬  Y T J I Y ¦  ‘ Á & ñ â Ê Î ß þ # & - Ï d'4ôóæÍx |òyÆ­ z­!‘0öðÙË»¯©ž”r@Ò§jMHm’¹ßåÛ°‰[- ÿðÿæÿßÿéÿî*Oaj{’²ÃÀ±°²¦¬¾ñ(qÆþ% ÄŒè`èO{¥ó ªÛf½  ? 6 í  { û I ] p a D : Z Œ ‹ ` W G & " M ~ › l %’áP ÷µwR0ÀL²¦A4j…Iªòo(gÑC€_.Æd®„g‚¡ßV² Y€¬¦“RÁy9úÆg:-7RWau›ÌïùöÚ©€a|¬ h»Ï?ªhdÜqôˆ²¢2™ÄUÉ2›fDzù k Ä   ü » ‘ z g·Å¼¦¤Öú ª*k²ªe¾”„€CÆ&ŸY3DwVºôdc¬AÁݵ+¬Fÿýÿûÿý=ˆñK®†j¿ï1>8ë–§.¸Pðœ9ÿñÿ·ÿŸÿxÿwÿ„ÿ¿LŽ¯Ðµ*ÿÓÿ¨ÿŸÿÕÿýL d8ßIÿ¬ÿnÿ{…Fƒâz!Û•{¸v –—º=Ô E Š j 9ã˜pr-0,#7(Žü5uÊ*Ä_>2CT-ÃP0GRVàä‰Kç<ø‰øˆš—2¿?¬!±TöƒbÜ  L ïsòFšíX½ Rœ‰M 9R‘ÕOP?æx°}-4—n¢>€ÿ²ÿÿ6ÿ±| F?.KΆOá2a±ej“ãVñ^lOâÌó:`nmC Ô†{ÄC€ÞùÕv6CmoGÓ}¤<'áJ„Œ¥â3´>ÉF›×FЉ … { f 0 Ÿ9]¸ ö , 6 b j RÒ»¼ Pøý1i™Íº„œ?ƒÿÑÿ‘ÿ~ÿánÉÐLÿ˜ÿþÁÿÿÀnɈÍ„Zg˜™ cªþ‚ûSn‰s@$SÛ &#Þ ¼KàY²|JU¤ØæÏ«´€’Œ–ôsT]EÎ{#   + û ³  P Y J j §yvÜ2‹ÚõÔŠÝE0ArNO «i ð š « Æ ' oûœˆs¥žwñu““MòØÑšÆfñõޤÿ¢ÿ'ÿDÿþ¤÷×|;ˆM?Éü(U´S‡Ð0üTqbMp Gz†Eùž2ÆDå–™Á:…°R¯I-|Ó  M & Í v VËÿ±/_•ÜÌ©ž\ ’ +!D!õ"¥"ò#R#0"ò"!!H ÿYŽósq¡´ë9§m ë g Ó " ƒ « Ä.®Üå³´õ-ÑæÿÈþëþÑÿ ÿÍ>RÿÖ/õ«!CB‡ã/\g€Â0©)-G‹ÅúÊ–Gþ®OÚô.“á(V©ÏŸ²¬ã  · ®Ë¿8x]O\ ê&ÿ·ÿ*V¤\^ Ð"¥$m&/'î)^*½+­,™--¥-Ò.-Û-,»+â*µ)Ÿ(>&½% #V!Õ z}‹Âá PŒraH* .F]B( ¢ â ïñLü|x>ÿŸÿø†ýÈOGÐo´¿Úû>fN05îgÀäíà.kf,âØÀj:4¬T•»½×7q ñ q €Íx }©Lç/‚ ®!ì"÷#ü$­%O%©%æ&G&Ü'Ø(Ã*+†-0.Å0E1Ë34B55÷6w6ë77b7J76R5x4031‚/æ.$,_*Ü)~(Œ'Ÿ&ï&-%–%&$¤$#" ·K±(«4Ô*¨ÉÍ ° t ͦ h^Åi¶˜ýý·-ÿæ #gV"5'ütöy²ž¨¡UùÂ×_`¥*?vÅ­º  Ó ‡_ýJC†¿ ˜"Õ%&æ(å*s+Ý,Ã-Ÿ.@.ü/¦0O0Ú1@1Æ2†3|4L5E6^7Ÿ8Ñ:;Mp?Z?ö@u@¸A/AKAI@?Ñ>ƒ=R;Ñ:68w6²513Ó2ã1ò1O0œ07/ÿ/Ú/›/ .ƒ-e,*?(j&j$i" Û\í\È¡VÄô ° ± K c˜þŠ>wÄBXÐ@"·|im…y‡² …¤§‰pâÇÈCM§Žk C Ê mk—rx~K!D% (Y+--}0'24Û6^7‡7ü8‡9 9È:•;X;ì>§?n@]AšBÎD,EœGHUIpJ™KkLL~M MXMgLÁKÿJÁI¥H6F«DèCA@>ë=Î<ï;ü;S:Î:~:9³9o8Å7è6`4Õ2Æ0§.O,)Ó'¹%×$%"B )}}š1Kzq ü E~iÕ @'ÿªÿÌNm?ÿòÿ±ÿªÿÙÿÿ"+F×ÏY¡ŽZŽfÀý<`  Š‚Éûb£j!ó%c)2-:0ò46Ç9AäA8BQBÿC C^CóDÄE®F|FóG0GPG£H"H€I3JKYL•NOQ%R’SÁTøUÝV¤W*WèXdªee¦fbg gšg¶g¼gLfÐfesdÎd/c«c4bÇbUaÏaD`™_÷_ ^5][ÿZ¿YqXV¡U*S×RPM„JïHEBY?÷=Ñ;›96R2î/?+L'Â$% g8•L… È ¾6ÿú…«ÿä dÙ;ªZH12:™-#( ,„0b46Ú9€;ü>›AÆE=ILÁPrTUWë[k^`½b0ccc€c†cEcCcvcÊdd3dc•cKcPcÐdQeeÂfffàgEgÊhIh¼iiYiiájSjïk–l2lul—lOkøkƒk#jáj©j‘j„jqjNjiÖi~i+h¡h g4f^eEd+bÈaJ_®^S\¶ZçX•VBSPºMëK`HóFoCÅAR>;:¹6}2Q. *%â!E€³¹7 ¢ ÍHɚ˃ÿÚÿÉÿÁÿéÿçÿèÿô&#7 o¬@ G «$@)-©2p7J;[>îA§DjG'JMWPSûWdZ÷^àb@e8gi jjîjîj¶j iÂi”iŽiiLh×h4gÆg¢gïh2h iiyiÂjjUj³kkhk±kìlljlØmNmÂmímñm¨m\mlÕlÌlÌlúm8mkmzmkmmmbmUm.ml»lqkékrj{i>g¥fQdÉc$a(_/\îZšX*UêS€PÍNKÑIBFqB”>L9‘5N1,Ý(C#Eý®s› S Œ7~tÜQ—#6 ÿö/~,g)[&Q$Æ#x$›&)Ê-Ž2’7—<ÀAäFI·L“OÇRéVY\^öb"efhæk¢mÛopqqq˜qEp²oßo[onÞn˜n-mŠlÇl/kÎkËk¾kèll[lŠlÅmmkmÏn*nxn°nãoobo¡oÛoØo·ooo-onánýo)o”pp‰pÃpÓqq&q?qIqZqbqkqbq‡q4pŒoWnPløkiÙh1fBd.b`&^[¬YWT¬RYNåJßEîA-<{883¸.“)S$U $bóæ “ Àß‘‘~SÿöÿË9×6£3x0S.Æ-‰.Â0=3ä7“DA9=ð:³9$7ú9?:¤>1AÞFìL2QdV YÍ]4`cNf hVjlnp@rs¹t‡u"u(usuLtét%s]r¿r[r:rqßq”qp•poÀo¬o¤oÑoÿp1pNpbpyp¡pÔqqbq qÓqírrrqØqq2pÏp¨p”pêqQrrÑsysáttBt`tftgtwt®tçuOuçvQv‚v8vuLtfs(rpäoŽn^mˆlªk|jhºg(e¶cZ`È\ÕXzS…OJšF4AY<6™1´-(^#kó) µaSœýOŒNÏK¢HˆE‰D)C2DaE„HŸLP¶UZ7^`a‹d¥giÎkÔmpn¨pHqÑsTtFuu(u:tßt›t sQrŒqäq„q5q$qqpøpÇp†pbpUpŽpÖqn‚n%mËmÐmìn5nQn”nûo•p(pÃqUqçrœss`s=rúr­rŽr¶rÿsBsVs/srÒr”r2qÈqAp”p/pp_pÇq{r>rÖsAsEsDsr¸rvrHr\r{r×sWs´sÃs£sªsÁsåsîsçsŸs.rÉr¦r§rr\r`r7½1Î,L'I!ðMnïn_mÌmŠm¬m¼nn‹o:oÔp¨qr­tujvaw!x!yyùzQzlyÍyIx/wuOsuq‰oønhlœj hf¼ecèb¡ba´bZc-dÉfBh%jl:n‘p r‡s›tot´uuruöv>v^v u«tþt^s‰r¥q¥p“oÂo&nánžn_nm‹lëkìkig±eŽc›b_ada.`ØaaMb'c*dŽeÅg$hj#kämpn»oœp‹q?qùr|røsBs†s³ttt+sHqùoÜn7kÕiJexaF\WWæSMçHB<6c1+]& ¥p#oðoÁoÔp(pgpÌqFqÇrr‚s)tu vv™wwùx¹yiy^yxw!uŸt rpn*l˜kidgneTcVa‚`"^ª]Ø]];]›_ `b¥d±g-iâl‰opÙr-rÍsštOuFuévTv"uàuHtÔt-srrŒqpÈp0o•nÛmÃlškižgçfZdFa®^ö\tZÖYŠYXaX\X^YYZ©\ƒ^_©a b³dËghüj„kðm nVXY•[~]ß`“c'e[gZhój¥l"m»nèoçpkpùqHqÍqÏqŸp¢o}mølôkMi$fcO_ò\±X{SßN€I_Cü>‹8ý3,qÂqùr3r’ssttŽtÆt½tÌuQuÛvuõu¾uuu|uHtøsÜr˜p}nNk´i(f­d5b)`M^Ô]Z[àZ1XŒWUÁTMRüQfP»PkQ S UsWyZ=]ga d²gÁjNl1nLptÃu1u@utúu]u¬u™ut­ts­rÙqñp0nPkhœe[b=_}\ÍZÀXÔWsV&TçSjQÖP^NïMdKüJVI£IMJ€KÞNGPLSLV½Zþ_FcAfÏiÀl×o’r‰tŸvivðwVvôv¶v)u¹tõt$rßqÉoÙm¦j\fíbö_<[[WlS^N÷KIH F+DuCŒBFA¥AAžBHCêE’GÀIªL$NëR@AàDzGeKNiR*V Z^aáe¸h»k€m;nÿoípÃqq¡q¨q^p±pJo·onlökWiðg²eaš^5ZjVÚR¾N oo‘p.pñqÂr˜sshsQs.ss7s(r»qÞqWpAnñl»j›gˆdJ`6[ãW­SÈPÑMáLJXIuH°GÊF{D³BîA%?l>‚8²2ð.ù+2)]'¢'g'1'Ê(I))±*“+,Ü/C3c7m<ŽA—GvMyS÷ZÔ`Çf)i¦mnépÖqÝrísŠtbt±t¨t7ts¾sQrQq;o‹mËk¸i¥g¥eûd%aåkjllÆm©nro,oho`oo o"o nÏn~m™mjõh1c·_{Z4T²NÊHãC²>‹;7õ6â646™6Â6­6=5h4®3ã3B2^1/Ï.Í.Þ/90 1o3Û6Ã<AÈHäO­V±]ºdqkƒpòuÜx%zz%z]y÷yÚyƒyRxmw‡u+rŸn>iìc«\õUME—>T8w2´.œ*n(%&'%Ü%©&+&i&·&î'J'E(b)ÿ-€16(;AG MÓU [œa¬eåiàlPnäplqÒr¤sÎtit©t`tLtsÒsr!p~nÇlÙjÿiehfÂe k9kÔlƒmCm×nbnon)mÈmÓmòmæm•mul¤li}f'`Ó[ÉU¸OuHòBz<Ø73h0Q/¡/4/Ì000/¹/Š/K/-.­-»,³+×+»+Õ,Ç-4/31“6ƒ;íC.J?QÞYs`Ãhbndsúv×y=y•zyÏyây“yMxFwBu rÄnðkBe}_W NÜFØ?19 3.Ô*_'Æ%‡%$ž$æ$Ú$Ô$Ç$Ð$y%&(ñ,0ö5ª;•AHyOÚVå]‰bmfîiÚmo pÔqàsRt(t¬tt‡tQtkts?q¶pnGl¤kcjgizh3k°lBl×mymÜn1n m‘m"m8msmhmm9lpk¢hˆdª^¬XïRCK€Dª=Ó7ö1ê.D+|+'*Ë+=+K+W+`+j+~+Š+­+€*ÿ*^)á)Ó)Ô*r*±,\.@2°7§>ÊEãMÌU’]$d÷kVqmtÞwÍx}y@y y2xÎx_w4vtrolRg{aêZPRJŽBÞdK]UÃMáFF?u8¹3c-ì*'Â&Ü%ì%™$ã$^#ü#æ#¤#Þ#Ú%Q'O+3/4:9.?ZEýM˜FªNŠVi^neNlpztju¼vËvovrvuÀtútr“qWonj°fa_ÇY&QÅJ®Cß<ô6þ0â,ê)¹(˜'a&Å%´$Þ$,#ï#³#ß#Ÿ$Ž%þ)<,ˆ1"5f;AHEO¾Vy\o`Äe;hzkÇmêoýp÷qãrqéqßrœs/sFrbq9oÉnœmãmaml‹l–låmjn/nžn•nm»mœmân-n"m»nlÜj÷fHaHZAS*KDA={6p0ï+’)'t'¸'Z'-&ã&¤&l&H&&&&&(&7&<&/%ò&&'0('+\/"5|<CùK­Sn[:bimérLséutŸtštGt0sÉs+r+qfp"oKlƒhÈb³\žU­OHiA;44‘/é,**ž)(&µ%{$N#²#J#T"ß#V$+&«)R-Z16/;ÔBñJtQ¤X]beÓi´l4nyospyp¨pŠpŽqrrPr·rq*oÝnßnJmám°mOlÒlïm^n"nnynmënndnn“nnl:i¶dŠ_8XPÚIMB#;¸4ð/Þ+!)'Ù(,'ð'Î'ˆ'B'&â&Â&¼&»&Ç&à&Ö&¢&X%ý& &"'=(/+.`4 9ýAMHuO¹Vï]sd0imŒo_p¦pbp‹pƒp´pÃp«pVp:o¡oem9j'dÀ_NYS3M:G@é:(4Ô0r.5,*´(×'%P$*#Y#2"®"ë#C$÷&Û*!-1º6à=ÎEL‰S_Y^›bõgƒj{m no1oqoeoxp]qRqñq™pÌošnÇnMmæmµmhm%mmWnn”nWmçmþnVn¢n«nÂnmÀk^hAb’\ÛU‘N F{?f9M2É.,*(™'š'÷'ß'Ô'™'b'G'K'I'U'g't'•'q'&~& && &ð'´*,µ1v6=/CÃJ¤Q`W^bÚgQiUjÏjÕk=kzkálQlµmm»mïnsmj°faC[½V×Q¹LxF‹?Ä9Ú4ö2/o-+7)&±%#Ò#f"Í"Ð"±#”$¡')-/1Ñ8ž?ÉGtN£Tâ[_ùeAhÂk¥l¼nnUnjnŽonpiq2qpdoLn¦nNmêm¼m‰mUmmBmínon m·mûnwn¸nšnÅmãmi×f_úYÓRTJ C<6+/ú+ë(}'ƒ&º''%'D'(''1'i'‰'ª'Û((8('´'A'':'c(5(ñ*Ò,°0^4„:>?ûFL Q„W3[“_¡aÀc|ddòe£f`g7hi0j‰kl°kúj‚f¼b¾^YÿUÍQ¢LXEñ?©:Q6±3b0â-æ+)(R&X$®$#y#w#*#Š$%¨&ñ*U.\4Þ;»CyJÍQX ]—c”g²k lKmµnnQn|o0oùpÀp¹ponyn0m¾mŒmpmlmm3m×nWmòmŒmþn¥nên¯nêmÈlRh\d]uVàO/GV?Ù8²3-)‹&»&?%¯&&D&‰&’&¢&æ'6'W'~'Í(&(„(•(N( (((ö)ß*°,->/à3.8<ìB"GK¾P‡TgX ZX\j]¬_`Va‚bÄdeÃg±iWk&k;j¸gédµ`£]NYÖV¨RKøEL?i:í6õ3Ò0,Æ)k',%>$’#þ#þ#ž#³#ã$ô%(/+ƒ1˜8?ÛGKNjUQ[mbfÒjžl m•mônTn„ooªpopoÜnÒnNnm€mMmMmMlÝmm²n)m¾mgnnÈon¼núm‚kbfœa±ZÍS×LD<®5g/Ì*,''$Ö$²$Z$Ä% %Z%x%™%å&6&S&„&æ't'þ(s(¨))®*Ë+ÿ-Z.€/¸02Ž5o9š=ŽA˜EmHþL·OëRðU8WeY-[\ç^`_b5dFf¥h¯j¿kAkliugc`”]€ZÿVðQxJ¸Dg? :o6ª2C.[*t'ô%Ú%@$¼$Ú$š$­$Ö%—%Å'Î*ˆ0&6:=ìEYLÂSêZya¨fék7lèn˜néo\oroµppŸp«pnönnn m…mUmmlülƒlÈmXmÊm^mmånÌonnÞmjTdÄ_AXP¬H·@Æ9q2,˜'P$Ö##2##‘#Û$$1$K$Ž$â% %T%¹&Z&î'»(s)¦+ ,ö/0ä2_3r4"5Ã8v<?-BD¾GRJL»O'QCSUUtWÂZ-\v^Òaa:50¥,)6&Ù&I%Ø&%Û%Æ%¶&%Î'c)­.û4¼<_CÏKRíYèa‰g?lmÿoÛp!p›pˆp|pvpépñp@o:n²ncm»mm½l÷l|lÈmCm©mLm+nooMn¦nÕlµi[c"],U³NF>6Ö/c*%%#)!¡!ö" "Œ"Ô"ý###=#Œ#Ð$=$¡%X& 'Z(¼*é-E0357Š8Õ9ä;—>QAmCÛE±GtI'K%M+NþP¿RnTzVÁY~\._aôdßh%j–l’mmÀlìkÆiug=dœbË_}['T°MÛGAUU?ÞAŸD4F§HsIlJRK$L?M™NÛPKQ˜SvU‡Xk[w^äb:e`hÂklùmxnÆ8Ú3’.*e'ˆ&ó&&ã&Ü&Î&ž&¤&4'b)-­2â:vAüJ;R.Yèb=hÇn”qEss´t(sžrârq÷qÕqpOoío¾o%ooQnmœmÚnnZnn7o5ppTofoXl„h`ÀZ(R~JBn:F2ó+Q&;" õØ : i ñ!Q!›!Ó!÷""N"¾#‚#ÿ%(&€)+­/g3T7”;É?=BJDdFvHCJLUM©NNrN©O%OüPÒQùRúT“VCXì[è_ibËeÜiklËmGnm l¾jìiyg€eñb¯^®XyQéJÑDh>€8N2Ú-%)z&Ž%ù%%ø&&5&%&9%î'(X,˜1Š9@©I!QDYGaãhÏor7tÁtæuft¹sÄr²rMrq`pÂpˆp‚p ppWo n°nïooCo o-ppßq p'plöh `sY¦QäIÙA‡9>1Ø*%!" FF•«  j Â!![!„!ñ"“#›$D%Ç' *Ú.'279<@ÊDHJQL¡N:PQ%QèQÉQ‚Q*QQQüRìSÔU`VâYL\ __b«e°h®j¥lHlÕmËmul|j}ig e]añ]ÆWyPñIÛCL=06Ü1`+©(%?$Ì$o% %_%«%¹%Ò%£&£'¨+„017®?4GÐPXSa)hro>rÄu˜uÐvqu³t–sCr rNqšq(qqApöqqipo¹oüpp4pppåq‰qÅpÖp³m”h­`íZRCJA¦9?1¿)Ø$¾ Þ =:ŒÄ  ] » ü!’"R#‹$]&B(š,‚0t5|:Á@E>IXM5OÀRAS¸UQUôVkVU„TøTÄUUCVVåXdYÆ[Ô^`ßc¶fei jÌlLlÍm½m3kÚiJgNdÑbª^ÝZHSËM(F6?Ä9ê3Ý.µ)T&#k#"Þ#•$$~$¤$È$¸%«&u)ü.q5Ó=@EÛNVo_OfÑmÿqñuugv*utt^sr]rqlq$qAq¦q›qÖrPpÕppÒpäpôpËpåq“rrDqSq&müi aCZfR‚JDA¯9,1‘)Š$\ u¤•ÉÌG|¬û 8 Ú!™"ì#Ø&(é-‹2;8=óCÕI†NR„UsXNYÌ[Y[¶[ï[PZ‰YÒYƒY«Y”ZZ³\ ]R_%ac`eÃh j[käm.m~n‹8ø4#0m,j(ù%H"´ …¸úýçø"7  ("õ'.w5â>pFqNVþ^²f©k›o?o¶poåo&nbnFnn7nYop+püqîróo+náoo1ocouo·pOpÁqpp¥n iöbÚ\ATLL%C¨;B3À+ò&«"I ߀§§ø  ×Ïñ z ã!ß"’$Ô'…,t1Ä8_>E&KîR6Ž.À)#Ç!Žà í !  ó  8 ± è!¥"M$s'+^/Ö5::0?ÜF)L‘R¯W›\C_…b˜dýgîj3l mmún®o’pcq1qÆrPr›rßrýsRsllWl¡lBl!l¥mªnXo+pf£f*fefßg¼h=i j[k¤l…lÞnmWkžf¡a…Z RnIìAŽ9Í2$,%& "« ✠ýçÁÀé 4 / —!"Á$Ô(_,0f4Z9>%CÞI¨NÔSŠW4Z¦]úbeßiRk—mšnÄpqr›sºtgt‘tùu"uStüt³sqrzokkÓe|^{V}O2HœB PEâMGUs\Æd h\k©llˆlkñllpl¿lhl:l³m˜nn¿ocìc›cöd¯eÕf‘g‘i jxknkêm>lçkÜg¬c/\T×LjD<4}.W'å#ñ º #º < 5 ãÌá   F „!Ý#z&x)¦-–1579Ž>§D INN&R1UáY£^1bÉg/jcm)nÀpUqšskt¹uqu‰vv,vTuºu7sVq‡mlhÐaÛZxRKWDì>h8×2ý.û+n*E)¥)ô)©(ù(N'%“#Ä" ‘.ûwYõ!Ñ' /-7?ZFØNVA]hdMhAkakÇl"k´kÍll—lÚlŒl^lÖmœmðnUnùahaWaâbádHe=fchij˜k5l l²l\hõdÿ^.WJOFº>³70•)¸%4!l zç t _ 6ÿâì ÷  &!!"_$Ý'Ž*ê-Û1T4ë9>ˆCßHØMEQBUxZw_Ãei+lÜo q rwtŠvvêvÿw_wAw4vHuŒspJket]öV=NbG@Å:.4Ù/n,B)°)R)#)Š)v(÷(’'€&$6"‚!„°†÷è¶"Ü(^0ž8{@GøO*WF^;d²h8k$k…k½kUkŸl%l­lãlœlqlîm mÏnn„]Ã^T_a`îbÏdHe½g‘ij9jçl=l‹lÒj:fÑ`_YëQëIêAä:%3[,)'%"É!Z q Ý   i '      Ä!À#Ù&#(þ+v.W1;59|>xC3G»KÍPIUy[0`ðeÚjfmjp$q÷tWuçww4wwvÁu_t)påm!fø`ŸXèQIƒBU<-5µ0á,A*(x(ž(£(æ(Ô(e('8%ð$?"¹!i FŠ}ø H$×*¤2ã:šBmIÈPçXâ_€evhk!klk}kk™lEl±l¶lfl>l¹mPmUmLmYÂZø\˜^Ça=cWe*g/hµiêj©kÝl[m9kqhb‹\vTªLæDã=6.|(õ#þ" Ï! ¼ y / ú ø ò u!0"í$ä'])„+Ý. 14š9=]AæEðJ©PVC\vbgKkn·qsÂuAvuvŽvàvLuÚtr;n.i bÐ[ßSúL$DÈ=Â7Ø1-)&'Ú''¢'æ(#($'Ë'Ÿ&ç%×$c#!ë ¸ÿ^nò A!Û&Õ,ê5)<ÅDcKµR¼Zˆ`ÇfJhìkAksk^k kÄl›läl¬lTl9l»mAm%lÞlâTDVhXÜ[ß_bdufÀhlÅlpkfQalZYSGK~Cî<¥5.ê(Ï%x#"Æ!æ!y ñ • ,ùÌêô {!"a#é%Ü'¿)q*¼,,-Ì0V36¹:>€C^IVOfU„[o`’e¸i¢m‚oÂqÊrPs!rkq½nàkÁf9`YQpIƒAã;#4_/)˜&•$a$e$K$Ä$æ$ß$Î$”$~$ #Y"Y!l ¢Îz9õ!Ä$†*€1)9_@ïHKOžVV]‡bÖgyiZjôjÔj–jvk‰lll7kSjÌj‹j­j†iºh™g¹H&LOPUY²^{bef•hNi7iðjtllCkgÈc¶]FVÌOOH@Å9m3,(Œ%r$#2"!¿!* ‚ &Ôìÿ ’!("Y#¶%m'%(ž)¹*¶+¿-n/C2 4ë8ù=>B²HGNETY _0c×hzkŽnno…pÏpo[lh[b7[ýTHLiD‰=6—/ÿ+4&Œ$r##I#5#U#:#"Ï"’"v"!j н.  £ƒ×"k%×,L36;^BòJ3Q{Wö^Èc–gÄiGj~j7iüiòkk¥ki°hÍhg“f±e]Þ[©9½?òF8L‚RƒXù]ÞaÖcåfKg˜hiAkkôldjVgëc^GWÄQI¯Bˆ;ì5%0+m(Ú&W$ú#f"c!S É N H * æ!Ö"ñ$8%_&?&þ'…((¦(Ï)õ+¤/ 27=;¶@úF_L\R–X}^5b–füi^kÑkhjÑfÂb6ZìS£KQC;V3á.-(m%8"¨"V6Ú/…*^%i#6!™!¿!…! !«!{! kÌ3¯8’6ûdÙë±!‘#@'ƒ,Û4};äC”JüQ¬Xv]äcYfiLiÃi÷iQi7ii”h«f™bõ_¿\4XËU#Q3MfI—)L0Ü9@òH”P±W&\°`cßfgùhïj|khlhk­jyg6d4_EYÞSLlE·?'9o3»/f+O(œ%à$""L!R v J  : W Õ!x"H##’#·#¼$$‰$€$Û%S'6)‰-50”4ï9%>×E]LSXXß^@aEdid7c·_CZ/RcJÉB:R36,Q'è#á"{!h!³!¡!Ã!ð!Ì!X •÷aÆJ¶“=ñ [!t#ã&Y+Z1M9@xGÔOUc[·`ze5gÁiújióihÈhKhf4cN^·ZyUØQ]LÐHC©?1 ó(è1Þ:{BíKÖS+Y¢]ëbergùi1j©k}lÀlªli‘gEc ^sXAQÿKXDõ>ü8ã3».À+%'¤%i##!è ¼ Wâó  w ç!‚">"´"Ï"©"¼"Õ"¶"á"ý$1%Â(›+N/2ˆ7±=½DìKýRX [_ _ ^ÌZUµNF§>6‚/Ë)z%Ù"ž!È! !h!Š!º!Ú!‘ ý 9»M­1ÀÕöÓ§!`"Ð%ê)E/5µ=œELS Y^æböfóhÖjˆjQiÈh’h:g[fqc|_©ZTÔO3I³DO>É9Ø4Æî!¡*É3—<‹EåNUjZÉ`]dgŽi`k!lmumÈm»kàjfpb«]?W“Q/KE ?93ü/„+:(W%†#î"`!¤ à „ h Á!!v""…"¸"’"l">""+"6##ù%ó'á*Ý-27G>DûKoQ¼UªY[YŽY UÕQuJKC*;k3-g'Í$ä"=!  ú!A!w!¬!«!D ´ ¿~µƒÛ" 5!G#Š%¦)¦.4‰;C6JQWÍ]bAe„h½iøkjkigÙgefc\_ZASÊMŒG@µ:Ã4Å/©*gP§#ç,Ê60?ìHÎQ1Wª^!b gižkÇl¾nVnõogn5lèiÝfàb&\ýVÖQK$EC?{9s4(/+r(& $2#0!Õ! © Ù!!`!¸!÷"&"!ó!¯!a!J!@!½"B#t$&›(“,•1M7å>­E[KòPBT1TTùQ|MbFt?}7ü0}*Ì%Õ#!v!* Ì! ![!€!r!  Sí–'  ÿ!S"¾%º(°-²3%:KA”IPCV|\ÁabeÊh>j»kVkÏj«ibgMfcq`.ZšTÆM~FA>Ô7‰0ú*%FãÎ<é&S/­9@BˆK›S Zh_ÉePhÅkÆm(nïo¨pyoÐnélbjf a~[ÏVnPäK‹F @$:4û0·,¯*6(&¨$Û# "›"["5"j"}"–"´"½"½"•"I" ""…"î#³$#%„&æ*w.»5;‚B HˆLÒP§QQƒN=JXC«<å5°.“)_$å#!8! å!F!t!†!~!K!% â v 3  m ¿!¦"S$/&A*#.3ê: A?H_ONV*[ÝaweEhåj£lxllXj¤hÿfMd%`<[›TÝN2FX>J6<.g'¹!2>) €ùí)02†<(EäN€V¨\úc‘g÷kÙmªo¡pgq‰qXpÍnÆmiÈeà`®[¶V†Q·LŽFÝA;16Y1¼.©+ï*-( &\$«#¹"ô"Þ"Ï"ö"ø"ó"ö"î"Ï"¿"¹"ø#R#Û#ø$Î%’(Ž,S2\8°?/EŠI¨M;M…MêJÙG2@à:e3Š,Ö($"! ø å!G!t!†!!b!$ Û x ú!ô"£#å% '—*m/24%:ŸAAHPO!Uq[ìafikçmnEmÉmj×håe–bw]3WâH+PôX&_dßiÓlrnáoØqRqŠqhoçnÁl id“`4[‡WRRÀM»H>Bª=”8¥5 1Ö/´-`+~)k'ð&‘&%÷&?&6&$&&&+&I&P&‡&ë'l'…((‹*þ.C3Ê9¬?´E…ILLL0I9E¾?Ì9Ÿ3,º(A$…# !¶!§!“!ï""5"G")!Ù!¶!©"`#d$û& 'ë)Á- 0Ë62;ÎB[HÒO0UgZö`Âe.iqq¾rq p]nll8h¨dâ`\äXÛT–OJ&DÂ?‹;†7ê5ƒ31/-g+Ÿ*¿*]*©*´*¶**v**´*â+)+}+Æ+µ, ,A.F15Î:þ@XE~H†JóJ“JsGŽD7>ˆ8ˆ2)+ù'¬$"Ý!’!“!!ò"""<"A"E")"‡#$w%ê'ç)Š+ÿ.’2¶7"=CJIßPU¿[{`jeƒil8m¢oQopoum»kîh’e£`žZþSK#B9\0T&©-‚$ ª0Çî Ð x]&Ð/é9²C1KÌTH[!bf±j–l~nñpqpÎp¢oLmðkRhedÄa‚]õZ{V:QxLTGCC?R<¼:826W4ò3:2@1»1õ22:21Û1Â1ç2&2x2³2Ï2¦2ã34Ò7;?gCÞH7J¯L•KôKH­Ei@:A4(.9*& %d$)$2$5$“$¹$Ï$Æ$ñ%"&'(â*€,®.¾1Ï4þ9 >‹DJ´PºVG[$`Rd•h¾kUm¬n|oœonNkÀi`e^a–[}TžKÖCX:O1L(|FÀ ®jèL­e Â;&Ç'ü1t:ïDLÈTJ\9bfûiµlÉnˆpdpæq3pLo—mÚkói fBbý`"\«XÇTO1J³F½CÜ@Ú>Æ<×;§:A9ˆ999>9t9{9Z9(99.9f9‹9“9Y9w9•;<ä@5CÏGK?MKNÓN MlJˆGNB6<Ø7:1¾-ã*Ÿ)j(D(N(L(–((¦(ž(õ)^*|+º-Ÿ/U1Â4-7»;a@nEåLQöWP\G`ƒeBhäl m¦oeoËpjo/mmiêfõbN]’VAN DL;22&(ã kÝo ¦7‚£Ý£N¨þ• i(Ï1—:¢CJêS8Yú`dhj…mdnÛoùo°o€njmk¦ivf¦d9ad^|ZÃV„R;NsKsHNF CóBÚAÈArAA(A:AkA˜A™AgA+AA0A?ACA A A1BhDFÝIêMP1QäS,R[Q›NÍK¶GB?=E8c4å1ß0«/”/“//´/ª/°/´00y1}24[68ª;C?BÜGåMYR÷X"\ƒ`Ôdmhfkm;noVoXo6lújDeèbN\îWNÀE³;Â2‘*!Œ3 AħÙZ“5} ½ Ö{î /(419_AiIæQXå^FcfSjlŒnÊoWoˆnÉn¤mÔl®j–hkeÖc°`ò]YÙVSS8PMÃKpJ"HùHÀHŸHÞHìHüII"IHþHôHæHÒH¸H{HˆHIJåM\OúR•U$VgWWVrU’RòPKýG¶CJ>ë;¾8û7Ô6Æ6±6„6¨6®6Î6å757l8A9:;<ü?ÔB¥F›JÖOåU!Yû^Ba¸eŽhŽkvlùnn;o=nÎm³jOfÄaÂ]’WkPdG =R3g*="8Ó. û õàö™j 21‹¢ ð¦Õ¸w'/27 >ûF´N´UO[2_ecëg9j³lnmymHm©mˆmul[j¸h~fád÷b±_é]ZZW¹UŽSNQÓPuPPPwP…PtP_PTPcP~P“PP{PZP+P8P*P÷R,TCVqX‡Z‹[m\[(Z>WãUiQÙN!JÞ>Ã>–>Ç>ë??(?H?A?é@ÚBØDÏG²J„NNRuW[€_Nb´eWh}j”l#l`l·lYl¬kTi d¢`}[VO4G`=Ý4^+G"®Œ9ΠʶVµ„—ŽËÌA«‹ Ù î’ø%0,Õ4;¬C÷K³RßXN]sabfi+k±lrmm#mÕmÚmHkÚj©i"g¤eÌcÔa­_]¢[¶ZKXÙXBX XZXtXsXGXXX7XvX´XÎXÈX´XÅXÈYnZh[ó]~^å`Q`Úa6`E_?]Z½WT^PùM˜KH¡G}F}FqFkFºFðGFßFÎF°GoH…J¬L»O”RsUþYÂ]”a5d4g+iCkŠlel•kÂk£jÕj!gycý^½Z(TONVF=û4›+‹#[Mô· Œ£gȲ?±¯†©øóš‚Ú |u8W#Z)²0¦8C@7H/NÚT²Y6^fbfªhÙj@j‰k¤l[lÞl}kÞj¾ißhÚgÍf‡e"c»bma]`4__&_6_A_@_^¸^n^p^­__^_‚_Ž__©``¸a­b˜cmd[d¯dàd ca6_F\¥YêW T5QöOÏN»MÛMðN N‹NÃN´N`N3NN÷P#R0TV|Y[ë^èaÒd¦fõinjÈkâkoj£ihSf¢d|`s\VwQ\JýD;î3+F#+´ ÐÙÓ%D¨šÊ.oÁw©].Í„ j{á&,Õ4§=DEQLUQœVÔ[Q`·d°g¢h¶iðjŸkÀlxlêlºl„l k¼k;j”iÃhùhOg¸gZgfÈffUfeÃeVe/eFe¯f fdf¦fÆfÔfôg8gŸhhWhÁhÈh¶gõg*e©daþ_½]VZøYW1VDU™UÊV VmV”VuV$VUþVÌWåY§[5]^þa?c¤fh¨jrll#kØjIhýfëe*aÿ^7XþT/NPHZA 9<0þ)."±‹^ BËå¹£…¿ ¦D£Š„n£B V ]oc#)ð1ë:CBHCM„QóW§\«a(c—eafgth²iüj»k-k1kok„k‡kQjÿj¾jÄjÒjºjdiýi‚i)hÇh4g¿gqgyg”gÇgñgågªg_g1g9gSgŠgÄgÖgÓg‚gAfeÌd}c a\_¸^b]\w\\e\¶]]<]*\ù\å\á]n^8_k`pa›bºd.eåg·iÀj¹k/jh¸f}dÉb^âZ>UnOÅJ¹Dš=¸5Ú. &¾ý_ q R[Éö‚²ÚÜfMiTÿÙÿÜráÐÅõ èBÕÃÝ&Š.x6ö>€DžION›S¥Y6]h`½b?cµdµf3#£+X3G:¸9ç4 ,½$Å2h³I ΧùöRÿýÿÛ ’Í|&oÿµÿÚ 'ÿôÿÿmÿéļ*?t ÍäÎ}#m*¥0Î5[9Z=A÷F³KMÆOPYQÅSiU&VßXYä[B[ÿ\Ÿ\\1[˜[XZëZ^YNXV–U3SãR»QvP NPL`J«IHqGÜH~IFK LîOtR"TöWYâ\]Ù_•`·a±bJbÙc£dÕfg8gÕh5hbhíiNi˜i1h³gWeðcÁap^Ç\MYÍWØT¹PËKDö>Ø9ò530 )–!õÌâ i ’Ë íLÿú…®5ÿú.^*ÿÑÿ²ÿÌ#ÿ´ÿOÿZÿ×[ÅOß”åý pæª%+_03T7:Ù?VC EïGfHØIÛKL{NOQ7R]S|S­SR³RQP(NÙMiK×JXI GñFÊEjCÃAõ@g>ó>^=Ï>{?[A_CSFI L*OQ‚SþV X)Y²[[î\É]õ_avcEd®eåf˜ggÅgÊf¤ecc `Ï]ü[LXsUÑRªO‰K EÍ?Õ:]5R0ð+Ò%a-µ /â|ï=ë‡bÉ«LM,=ÿÈÿ¡ÿä%ÿ²ÿYÿq!¿Y1v+{   0 Úï!_&Ö*z-X/·376×:K<“>Q??É@–A¼C$D…EÃG"GÃHGhF¸EnD9B¯A?_=¼<^;;:(8Ü7h5Ö4Š3R2â2s3$45û7ß:ˆ=j@oC%E‡GòJLfN?OØQRYSøUþXkZÝ\â^µ_ `¥`|`)^ˆ\ÌZ(W€T—R O6L[HuD'>ì9…4y0`,^'õ"Cvÿ€ 7 Êþz>W– g(R¡Ì&1`lDTÿ«ÿ¸ÿù4 ÿÿ.ÿ“*9ÿuÿõx*P Ì £°M ß$O&H(Ÿ+-æ0’2ú4_5f5æ6¶7—8t9d:‡;c1@ÎCE F½HoJŒMOéRÀTÚV¨WCWèWhVÙU>S›Q6NäLI_EÈAÂ<Õ7Ï2û.¦*Î'G"æyR ‚ ilëÜʼn"jUÄ?Lœ³“CW˜pÿî:qPÿÿÿ½ÿ¿"[ÿòÿsÿ`ÿÃX¬1ÿî1²°ç• R Ý£Àõ^ !"¹$Ð'D)Q*Ç+n,4,¯-%- .B.ò/¯0002/§.,W*( &$$i"Ñ!a’.Ýlûµ›¢"W%'ý*˜-/´2U579»; =‰?ÃBdEGÉIJòK5KKJ²I†H\FfD‹A¥>¥:Z50o+Ù(D%["Y·Èûª P 24fúέ£…—i’Ã’H%>‹®fÿñ(n‘dÿñÿ£ÿÝ1+ÿãÿ{ÿgÿådXÿ÷ÿ_ÿ—žb»ét ¹ ¿ð:‹W¾8¶ý!,!Û"x"À##J#|#¥$ $#ã"Ñ!w‚¶â'x¯G íŸFóÅ¢#¶oý"Ž%/'á*¶-D/“1~3_5U7ž9â<=¢>Ø?O?ÿ@@.?W>wÿÄÿŸÿÐ;ÿØÿuÿ…ÿík‡ÿòÿtÿuwôoöi sgÓT VC{q‚tÎìš?<;/‘¯J™4ÇH ð – ¸ ó Ñ — $ Î Yû-Q¢Ü)|ä!n#¼%Ú'‡)*,^./01„2Ï3²4Ü5i5ç5 4:1Å/#+<' "Êì¯]a– G³õÛ…,Bo£­IñÈÿ/ù”ID{¼¾“m:+6‚¦rÿ£ÿÿà0ÿÀÿ†ÿŸxNÿÌÿ6ÿ?ÿó Åø]d† 5 y } Y , l R d•Ÿ5¸¨sýÂqr ¨   ¬ © ¢«ÐSãÙ±®öW  Ì ?ÝÚûõ¾,{ß z"m$ˆ&|(<)m*Ì+=+—*w)!&a#€òj,Wåq° _5?ž~mmÿë Åc¡füñZTæi@hÁ«}VC3SsMÿáÿ’ÿŸÿèÿÕÿ ÿÇ'•ÿ›ÿmÿðÝ´ì«.âóØÅöNÑÀ÷¸ d  D p 5 þ tÜW›äA|µ‹\X;~ãȾñ0 6 T † ÷‰x²Õ>Øì=dP e!€!}!f lïv餆| @Wq±–ˆb:fÿæ"Ãm’Lé1|~'­VUŠ—‘y`YEIXxjÿÃÿœÿ½4ÿÑÿ±ÿÕ;€gÿýÿ|ÿ`ÿÅkíÖÿÿa@—å¨s3^—ýS›æþÐvò„¦Dë­eF?T\`R_~Ô/²7Ç;Ô|~žî  Y “ ¤y~*2Ài Ý‹Ñ>£ 2 y {' )îÿV5½ÿÊÿüž/pS ,{”V߆et•z]b€¢R_\WSedGÿËÿµÿÞ3ÿÜÿºÿ×"s;ÿáÿ«ÿçŽuÿ“ÿ#ÿ[Zp%UÜrÀ²¼í9‰´Àœ‰ZЛ~VPa„™š”k[FPj¥Ês!çõóJŽ ×  J  È × á |  { ×  r „vÒÑñIÁÇ]¢nÎ*ÿß'´<Y&üø6{™g¤{‚‚{O9X‰ <P]fgpj`7ÿïÿÆÿÜ62ÿðÿìMv~MÿûÿÑÿûP©ˆÿçÿ"þ—þÐÿv&;yÿ ÿRÿEÿAÿoÿ¢ÿÛIWF#3XzŒ…fHÿçÿºÿ“ÿŠÿ€ÿÿ· o¹x6ÜuáT‘flcGCïDR·ÿôÿ•š#½M,”ø-ôý)b{r1椆hQ58^‡‘.AUmvtb]Fÿìÿé,:8(5}¦ŽAÿéÿÞ=¯ÞÿèÿmÿgÏuÀ~.½n? ÿýÿ÷-W±²›’™ªÆâñóçãÙÊ´¢‰`JJj©Öj°èñéʱ°Âê(Ou¶«vËå+ÿ½ÿý€mAÖjRŒÊûûã×ð3kuN-éË£xG22Nkyu;Q\c^TNdc0ÿùÿßÿñ/:1#8fŠŸ~2ÿþI©Âtÿñÿÿÿú§-O9ØOÿû3[Ž­² ”«Ñîÿ  ëű”W.-Ngx}{‰‡{K ÿÇÿ‚ÿnÿxÿ¬ÿÕ,FiMÿÿ1ÿ/ÿ€(Ç0ê£z‹ÁÜççî+`vh9þðÚ¯{E.4RcfbE\[SC6:Yd@ÿåÿç'(3GACm”fÿí|½¥;ÿÓÿ³ÿüfÌöØ·‹ji{ž´ÄÛàØ½Ÿ• ÁÙîç»§Y:Bm‘¥ª›u`= Cz£¨¥w>ÿøÿ¡ÿˆÿ˜†ïëÁ¢¬ÊÚÔ°¥ÉHcnYD,!ä·‡[JERXXW4HOTJ6+9IK1ÿçÿö>B(#AFHUf‚w4ÿþÿú7•Å¥CÿêÿÎÿíFºÍ½ª£³ÒéöþòÙ»®²ÇÖàâàíìØ¸¤k]kŒ¢¨¨—„ngV+ÿñ D¦‰TÿüÿžÿnÿYÿ•ÿçM¨ÊÄŸ”¢ÂÜßÊ«©Ñ?OTB2%&#óÂk]QU\]T'9RYL5',GQ,ÿöA]B.KZH6KbaE3{µ­lÿçÿù)v©ÀÉËàù ! ðØÊÆÍ×ׯ´´¹·«š‰z}¢§¦¯²«¢¯¬†_Pk¡ÉÖŸLÿôÿ«ÿ°ÿã9zƒfaxŸÃÒÆ´©¨Âé"$++% +,"ýÍŸ…zeY^]H%@VdY;)C]U/ÿþÿì BSB"%FPMPTc_:4vŸ–U ÿèÿèS’Êô.61;6!ÿäÕÉÎßåÐ®š•˜šŒ|syˆ˜™™«´§–Ÿ£‰sx‘°­ŒBÿïÿ¾ÿ­ÿà'h}hMHl ¾¾³Ÿ“˜¡Áð42-  %6.Ù³©¤†eWH%)Bep]@>J]SÿèÿçI_= *QkdRZc`J 'X„„]"ÿùÿý P¡ó7NN:DB)æÖÆÉÞëàÀ¢‹ƒtecn‡£®¢’–ˆ}Š‘‹d+ÿôÿÅÿÊÿî'PW@+0_¨ÙØ­}›½õ&D>/.#ÿßÆÃ¸“dD+(IdseE0DWCÿûÿü%RU9,Obde_`ZD52Glƒ_6.uÚ8deDFB)îÞÈ¿ÅÐÒÇ·£–ކ|g_i~„‰™§§¦³¹°™ŽtIÿ÷ÿðÿó5KD/%5S¶ËÀž‘‹|€¾03 &îéäÚ¸‡R-ÿÿ":cnG!@WR) .UaD,Wzyc[]in]MOc{…z^66X¬P_DE=%õæÑ¸»ÂÈɼ¦Š…m_j‚Š—¤³ÁÕÓ˜sHÿþ =OVC (c§´­¥œŸŸˆƒ˜Ì ,õìý/úàÔÜÚÁ_7 4K<"-@G;%9WT>&*P}…udeh[NISfuylSLSŒã0TLSE+ ÷íáÚÓÎÉÃÀ³˜€gXdŠ’›¨¾ÍÖÁŸoH- !=D:/! C€¢¬¹·µ¨—Œ“·èíßÒÆ«…[:& 4  ÿÿ(.,%$<H26O[MBRs“œpZQQVSPQV\cgmi‚»ÿ.AWN9ôíîðéÕ»¯¤‹xwxdZe›§±ÁÁ»›nE/02=MI+ ÿý ;i‘¤ªÁÍÍ·”‚‰±Ý   +.üÝÒÑθa>,  6ÿþ ÿÿÿû"02&">SD*,D\_YYd{–‰s_Y][[^ccgu‚€ˆ¤ÑûFPK.þëãäâл¶¯™„}|mgnƒ–¦µ¹»°¥ŒfI?IORTF$ (9Uv–³ÄÔÒÈ´Ÿž¯Ôø "ðÈ«¤¢‘nA  '  +=6-:IJ?3/5H_mlccn„†qgdaepvnhq„Ž™¦½Ùþ.JT>'è×ÒÔɽ¼¸¦’†yz£²¿º­™‡q`_c]QE8&$4OZg}œÄÛÞ˺³µÅÏÞñ îʤ‡wnbG(    %)-/9AEA92+9[}Ž„qbixysoi]Ydpjcfv…™©¾Õ÷'GS@,úëåÞʵ«¤•ˆ~||†‘¡´¾Ã´œƒ|{ma`]QB85.07IVo‘´ØâÖÀºÃÑÛÓÍØî  ﶉgL=& "$ *;1#.47=?=8-4Pu•–_SY`jqlZMTba^_m›¶Ñç&>F6%ÿøêѶ¡”ˆ‚|}€Œœ®½À½­—ƒ|ym_VN?549:92:Py¨ÊÞÖÆºÃÒÙй©®ÃáÞµwS?+ÿù)+" !î­í99h ‰ŸFú÷EIè} ®{O/N9ÞQ…ÊXâž&ŠÞLä~E(°7 º P ÷ Ï ¯ ° ¹ · ¡ h # ä ² ¬ ´ Ù ÿ  "    õ  V Ÿ Þ  ß ™ V S  ä 4 „ ÈlÞKÛo2ì}½2i‘ªÊñI¾GÛ ³}K$õárɲuÏ*¦ ‰ û âGKd¹—R²n5ÍSj nlÎ?év¾Ñï2“"±7®L £ ³ k ` n g * à b  ð ð í  # = M 8  Ý ¶ ¨ ž ² Ò ö   ! # 5 T … ¾ ß ÷ Ï ƒ * ê è  = K S c à  _ Ç - ‚0¥ä*zØSÅVî©p1øk«¥©Êuçë·×Ú Œ™´âë$|/ ßYtD(S_YI!È`®()÷£õÍ®”ªÏÅÑö`áu ä T Ö p  ² Z # ö ë ï ä ± l 4     ' "  ô ¹ | K C @ k ¤ è  < ^ x ‘ ¬ Ó ë ú à Ä ' ß ´ È ò  $     6 V – Ð 7 Å G ” ¶ Ö  ƒ*Ê“]B6ô‘‚Òëúí!JiM_ŒØúÓ”y¥Ö Ô<œæ÷À Q!t‹û`æ¶P‘_<Ç©† · ³ c # ¶ a 5 2 '  ø Ï « q \ B 6 6 A F D D 1  é º z +ì·ºÇ  M Þ  > b ˆ ¤ Ê Í ¼ € C ý ¯ ‡ u ™ Ì ý   ø Ú ² ™ ‘ ­ Á ü X ¯ ß é â ÿ @ Ä C ç : Û‡%¶‹xáŸ4„å{jö–gØæƒ2úÑ4Ö"0È‹ó`*ÆÍܳ|u³KtÆíÐ   ‹ Ï - í ¬ £ Ž › Å Ø À v - è ± ˜ y ‚ ™ Ì  )   â ´ | K #öÞÊÛó & W À î  C b s Ž ‰ [ $ Ú Œ X 6 B Z y ˆ € y ` > $  !  < w ¼ ñ  õ ì û 9 | á 5 ± L û €»Â׃m ÅB1OMI6^v8ò›yÛH•š„çbJL|WDŠFB»/òð  É ¢ ±  “ p C ] Ž Ñ  à 6 » ^  é  * h Ÿ µ µ ” € ` : íÒ·¬¢¨³ÃÊ×ì * D T ^ o  ™ ˜ … R ìÐÜö  - . )       < o ± ð        " Z µ 6 ‘ † \7šI¥ªvß|ïJèùÛ)ZU>ž¿ˆoÀõOvè¢f'«  ð ç × ýZ  © –  ã  5 [  … † S  ­ e ? % !     öïçä̦f#ß¡tM77H[n„˜³Ùó÷ïæý+~Ý F 0 æÔØÚéø  / N e ~ ¥ Å Ü Ö À ¥ „ ž é U • Ô „ Wåg¦«d;ñ›*ÝL¡w-£l«Nãi,hXlaüÂ|„ Y Æ ¥  W ‰ â ~ g ÿ µ ¶  F H 1 î ­ r I / ìÍ«‰]&óÈ·¬´¼ÆáÏœ)®-¹l*íèìüù=YxžÀÐéT¾Tùk¶¢{=  Bx©ÏÞ÷ . o ª Ã Ä ± › ° ñ H ƒ £ ª Ð  ¥ ] ršº°g¶fç+y®´ƒsz©õa\ý=?BJ X Š ” ) + • Â Ñ  È  & ­ ¬ Ç ê Í Ž Z D J c ˆ a M›ŠQòú &9>Z4áG¨§w\hdbcZ<-9a~ Çéú'rÓr)ÊOs{F÷Ðç‡Öõ  ) N t   ¬ ™ { m É  6 V | Í % Ä ƒ \"¹)™/ô¿–s%º³uý¾ÂëÌ]É m   ô c ± U N t T  ä … : 9 S P ¡< .q¬Ý|ʬ—Ê2<M\rxqUQÀ9µV$[utqY2"BYr «°®Íøhô—1‰Å°\)<jú§`MkTNhªî  ìó 3 œ ê . r ° å ( x ã Z   D Ÿ+¹n1í“ } : , A ( í ¥ l ~ T ® á h - Ð ® È ã ½ j +ï¬ze"¿Y ) Ô|Îú"`è'q¨­wN¬Sè¢_"ÿØâH_WOA15Mkx{†Œ‘‰’Ý8¹;›èï㹕—œûu?,ãYS) &1¸   / P z ¼  W t f H W ¢  ‚ Î  / ` ¾ 5 Ú†%† Ç g X W h X D B B d ! _ Œ 1 / ÿ ! 5 Ês¥Lþ´T ÜËÍ—(q¾€70nÎ1O:Õ†š5òèØâòýìàö åÏÉËâ %*(=bŸÛ?Vgjsym~Á–?tb3&›gd/Ž·¦±æ I § Ü Î › † ­ & ¸ ) \ L A G \ ­  — Å , ÷ ì Ù Ý æ ü  ! ! ¾ Q. ððß½böjálǨœ‡@ÜM¶J ìßʶ¤—“|LèÀwKGm‰§ÉÌ®…}a: #:CGJYw™·Á¾±®®¦­¹æi»ï¶€æfò[ˆ}£þÿ¢ÕúcÁ  ? 8 í   J S a V @ > _ l a S 6 3 X € › i ‚Ë;ýï­lG$ÿ«<§ FCo‡_Ù+ M~ãX˜u<ÆTó¢†lжùU®Ic‡yQ á­gÚ§pN0)!,3Or Ðí÷ôÙ«Zmþ^¯ º'–^bá|ý&¬Ž«˜)¹WÇ+ˆ™`={ l »   ñ ¹ ” ~ kÆÑƳ³Þøÿ¤"`¢ ž^ý¹•…w-ªv0;`;À!ŽÇJÅæ¿6²CÿíÿéÿóB‘ýcÈzïQ˜¶íìÓw#¥ŒÀfÿÉÿŽÿ[ÿSÿOÿrÿ’ÿÌ Q‘³Ö¾4ÿÕÿ¢ÿ•ÿÌÿöHÀY*ÕHÿ´ÿ{ÿŽ‹M“ìy׋{ x& Ÿ„ÃHÚ D ‚ a 4äžvw(9881<"þ‡ó*g¼¿_A?OT«6ìñD>çRõòy#°þ¾L½XZxôr  {ñtŸ%—ìcœ¼iO„òc¾3´t?;+AaÜNO=àmò–b2šm¦I’ÿÈÿ4ÿNÿ¼|VI.IÍFâ?o¼u,~¤ódúbkQ!ëÕøKju{U)Ñ„k§Û`þÇâþ ï«T%4cz]Ƀ§ÁU²åîû<ªNñxä4Z‘!ÔË · £ „ N 9 ÎG Û  W l › Âä÷öA·8è†K3]¨ŠMÉSµüQÿ¯ÿxÿfÿÉ[ÀÒVÿ¬ÿþÌÿ!ÿÈ{̹‰†ÄwVmš m· …öJgˆyH*Yê06õœ¿PÔ<úkBPÑâɵ¾ ‰õ @˜3ÚpÏ!|'ø  M R 4 ¥ k " $ W <I½oÅõ= Á°}¶ ! ë´rR N ‹ Ë . ƒ ò g šc85F6 …%7ÎÅÇ‘Âhú¤ºÿ²ÿ1ÿT ¤çÉu0yE?Çõ P³\Ï%ŠìNuiQvQˆœYøn™!«,Ü›«Ø0AJ¢1ÃkÞj>9Ó j î w < L„½ûÒ~£©›ç{*ìŽ.z ×!˜"E"!¯ ²ÚÆ´v/ØyG3[€¾õ6|Ãü;~ Ü L Æ 3 ð - l`8ÖQ$3üù2_øÿàÿ þñÿ)ÿ¿*DÿòÿÈ+ù¯"GK“ð?jn|³¥ 11O™Ó Þ•:øÁqH0g³%Ú‰.|š Ë  €Uï¶?àÃY¬æÌ®$z—¯ n‹ß á"ò%'(Â*f+“,Ï-_-ã-€,à+®*¯)‡(\'%Á$l#!æ à BƒÂUޏ¾¿°¥Ÿ“¢ÃNq( ‡ ˜›ÏdeP¤F¨oÿºÿ÷yñºGVÞzÅÖôWy]6+rìtÌéõøC€Gðë÷Òæ'Ñ‘e÷¥p§ú ‘  ¦:0mÐ<ì žpƒË8 !µ"Ñ#¥$x$þ%f%³& &ž'%(7)u+M-B/M122¾4D5Z6†77‹76g542Ü109.Ô-j+ð*´)¢(Ú('O&%ì%V$Ï$G#ª# "6!\ 1êw¿ƒ[Dò…¢ h  FüJ–‹ú7…³‚áÛšÿÞki4;E2î pƒµ¤§Ã¸o$þ1{\ûNï÷ : Ë Å¶³mm­t€ G"Ã$<%I&'7( )ÿ++,-,ÿ-ë.Ê/±0e0ú1i1è2l2Ð3„4X5Ä7`98:ëê@@ÀAQ@õ@R?><î;¹:W8ñ7~5ø4²32Ø21O0ˆ/ï/h/.Þ.¶.˜.I-û-, *h(Å&ð%&#r!× WèC˜M–¸* Ý â ‚ ›F9³—I‰ÝWbÏ>+Ìtq€ep«Ã¨Ü©4Š"ÿ€þðyH h U $ÅœÎ/Ghx"!I$Ç(+*Ú-2.ª0 1:2É425X6%6î7º8´9º:Â;‚<A?ªAOCYE>FúH©JK‚L\M LÝLLKJHôGËFqE C‰Aú@©?>¹=Ë<æ;ï;:_9ä9h9+98ï8ø8œ86Ë53¡1·/{-C+ (à&×$ù"à ”Æ¬È`†¼ ` ¼÷[„Ͼ/(ƒ“iÿÔÿÁÿÞÿì!R«ÝÕ—Å«sÜ¥x*Ò› ?£ùNœq!g#–& )P-0Å3ÿ6S8:2;ù=k>ò?ò@¤AA®BŒC™DµEÈFnFßFæFîFöFðGoHIKGMqOzQ^S4T«V;W WòWÃWJV3U[T^SdR6PîON*MLKOJiItHrG€FŸEçED”DCøCýCëC¸BñB&@•>ï<ˆ:7#4A1¢/D-I+…)X&Ÿ#[ '=±l)h ž ‘‹íÛ9õÀ¡¢Nÿòÿ­ÿ¯ÿÚ Ei} º / n£â“¼³  Ê…=å4"$Ì'])¢+¥.$1#4æ8Ú<{?–AöD’F£H¥IíKK±L&LŒM%NOP1Q ‰ÁŸÚïÓ-*ÿìÿ¶ÿQÿ1ÿiÿÊÿäÿãÿ÷ +½ŠF  ¢UbäqË"õ&æ*C-°0q2â5 7A:=aA(DÒHK M²P©RåTÆU‘VBVnV®WW}X:YYßZ›ZçZñZÌZÇ[[}\U]+^q_×ajbòd8ehf$fág%gmg3fËf,eÇeXdÜd*cUbaÇaZa`à`‰`_£_1^Ø^s]ö]Y\Ç\[rZ¡YÉXÄWÏV“UfS›QžNîLAI+EëB×@=À;~9 6s3(/u+¤(w%L!åÏ5¿Ç Ï Ä  pÎ<ð=ÿÍÿºÿóÿþ ¤÷X´¢ž7é#J(5,æ1‰5_9 ;Ê>7@zCF:IžMFPËTWcZ?]O_V`îaaaåaãaáa×aèb:b»c-cqcVc bÐbÖcMcÅdŠe>f9gThŽiÂjµk•l lvl‚l‘lLkékvk:kj±j3i˜ihh^hGhEh&gíg©gngTg>gfÐfœfCeâeCd¨c¹b¼aj`>^Ž\±Z1WºTÇQ¨NxKzHÊF1C´Ag>v:ï6Ñ3 /8+'h"ÑÔ¾o¾ ÷ Ë8°!ëK@‹ ÿùÿ÷ÿ÷ÿö&2#P Œ¶‹Ñ‘k#v'Ï-:2j7jk):ä9Ÿ9;4=DAHEgJ¬P#UVZ(]°`àc2eåhiùk‹mXo(q+r¯sátTtÐtÜut¾trþqçpûpHoåoo n¢n'm«mpmPmxm¢månnOnnõono÷pqpßqUq­rrrqÛq¯qzqHqpÆp›p€p¹qqqþr8rBrCrtrÄrôsHs·tYtôu§v‚wwžwpw0v0usr?púo‹n8ml!ki×hçg™f#c×aÇ^DZT½PKEå@d:˜50+ž'+"®³ ên ³ gó…w”¡N¤K™H«EªDƒDEñGK N¶SxXV\èad+ghýkl§mþo(p°rsqt&t¤t—t²tvt;s‹r¨q“p oâo-n¿nbn*mÕm•mMmWm‰n nˆoo^o–oÍo÷p&p\pŒpÓq6q˜qîrrqüqøqáq¿qƒq*pûpñqCq±r2r—rÆrØrßs sGsdsŸsõt€u uªvYvÎw-wvóvAuWt/sArfqop™oâoOnªnm¾mkëjh°f bÎ^AYæTÿP2KE @/:Û5î1U,´'{"S™^ú ¨ FJŸ÷X­UæSAP›OŸODPÔRTàX\8`Rd%g¾jblân|pqr%st8uuªuu‹ut»tskr…q˜p´oäoDn“n4nnmÔm½m¬mùnwo(oÁp-p‰p¤p¼p©pŠprpcp’píqVqžq®q«q–q¤q§q•qaqpèpïqQqÇrBršrÁrÛrñs sasŒsÙt:tÒuvv'vçw[w¦w…wvw v†uÍu.tƒsÀsr—rFqàq¨q½q†pðo´nÛlÿj½g"c‰_ Z’U“P¤K\Eß@;§6Æ1Z+Î&‹!•™Ò¸n ír`@^ [íYåY+XèZZâ\í_jb­e¼h¦k’mÔoâq%rXs(t'tëu½uÿvu†u%tns¤rŸq—p–o´nämúm%lAkÆkŽk©k€k•kÄlnmGnCoo¬p7prp¨p–pjp:ppMp°q!qgqjqXq4qdeS8[2,Ç'|"pqpƒpxp”pËqq>qiq˜qÂr rsJt*tùutuàvªwSwßw¯wIv4uNsÛr9p1n4lCj‹hÉfõd­b _f\ò[.YxX¤W´WïXPZ [ü^¾akdf¯hæk?l×nn›oMpq+r8s(s—s×s²s¾s|sr_q©páp7o|nÕm»lQjŠhìgZeÝd_bÓa&_.]¤\j\%[þ\u\Ê]q^ _`aœc+dòf®hcjkžlþn ocpeqLqàr†rÕsrðsrlqKo}mülAjÐhneXao^ZPVµR(MGBA™;ò6b1+…rr€rÇs*s‚sÔtt&t+tt3tytïu[u°uØv vŸvúwvxuÅtms3qYo?lÌj…hUfFd'aò_p\ªZW¿VTPSJR#RAR¡TŽV°Y¹\š_b‘eNh9jZkùlàmôo paq—r²s@s£sšsÄsšsSr¥qòqp:o'nlkj]gãe cvaU_V]b[pY*WVUÐU6T²TÊT³UU}VšWãYÅ[—]¬_°aædPf˜hžjElm|nïoøqqqþrr€r_qñpÑo®nRm{kài‚fSc™`›]ÔYþU‰P J»E@?ñ:•4Ñrr‡rûs„sötdt–t±tžt€t†tÍuu1uuuuXu8tÊs”rgp–nËlai½fädFaÛ_{]/ZØXsUÝS“Q‰PNVMDLL3L¥N¦PÉSÕV¸Yï]+`ocàf¬hûj›lknoìqlrÒs‡tttMt"sïsCr‹qipfnæmokhne8b>_Y\lYÆWBURPNßNM_M3LÑLçLóMèO)Q@SCUšWÀZC]`bËe4g«iÌkóm“o'ppÖq'q°qÏqÚqBpto[nËm¥káiigEdàbÆ_¢[ÜVõR7M5HwCv=æqªrXss¾tXtðu$u/tìt§t„t³tÖtžt:tsàsïsjr‰p¼ol–jgcÛ` ]£[ XtV(SäQ¹O_M;K=I©GçFÒE»EøFzHuJyMPuTWš[u_vcfChÙk—m÷ptrPttëu“u‡u uVutesšr9pênëlöiûf—b—^ß[9W€TPÓN KHúG%FUEE[DûEEEãGIDK}N*P‰SVVyYõ]Q`…cºf‚iBk_mwnÒppºqvqÏrFr0qÍqpÑpnám kei{gée[b-]ÙY¥U!PøLaGp8pøqÆrµs|t:totgsÿs¨stsŽs‘s2r¥rbr qÎpÈoomj¢gzdA`£\ôYV>SQOMK'I FõDèC1A`@V?Z?«@+BCÙFÁI¦MlQ@U°ZL^Ïcf³jym»qs“uèvòwÄw¢w¢w0våvuJsÀr;oÚm‹jf'aq\óXgSÒOK[GÊDA?E>h=š=—=j=¦=®>v?wA‡C¹FIL$OvS^WJ[M_Nbäfbi$kämÊo›pq‘rr®rærôr—rpqËpîon*lykhËf bX^¸ZßWiS‡NónÈo¢p›qÇrÂs¡sÑs»s‹<¨:Á9§88Æ93;<é?êBÌFÉJëPU€[`%d¯iHmPq’tµw–xÖyÛy¸yºy8xßxw,u‰sàq7n¤j¶f``ô[žVPªK•F‹B=c:76 5"5G5,5v5‡6H7794;Q>EADŽHQLØQeV4[ _‡cîgtjèm?o€p¹qÔrbs)s¤ttsýsbrÓqÌp¾oƒ8÷4Ù1(/¡.s.£.‰.á//®0v2%3Ø6ˆ9)<ó@úE÷JáP:U¬Zý`Pd»hýkÞn–pq†rLs0sÌtžtàtÌt!s¯rÛqÿp—o*m"jýhueïcoa?^Ø[ôlmn1o”p°q–qµqqpãp»ppAo¼nïn†mQkÇhÒeÂa„]6XMSZN’IÕFB\@ ><à;^9Ç86J4·3l2 1/ï/Í/ÿ1m2Í57 :b>C¨I™POV–\­bØh•nœs6wkyh{{,{bzüzÔzMyßx¡wMt²r(mæigc\rT÷MžFÁ@3:’4–0+Å)¾(0(T(H(Ç(ü)†*+H,r.µ14Ü9>]CIkOlU[Äaf2i²l÷nÚpÎqìrþs¼têu~uŠtåtŽsäsArpn‡lj[hFfgdÈc`ïkwlcm‰nÏoÄp‰p”p^oèoÎo»oŽo+nÔn!m¹l#jfbb•]˜X–SMHnC,?,;}9‡7÷7(5Ø4‹3?2<1e0Á/ò/?.e.4.Y/X0+1°2ì5›8©=ÃC1IÞPNW ]ØdTjþp0uwšyÈz'z˜zTz_zyÙxÐw®uFrònìjÉd™]öV NF‘?|9›3‹.ï*L'Ï%Õ%¸%& &7&ˆ&È'w( )«+X.½27Ö<áBÌHÞOcV\&bf?jl…o$pÆr2st†uHu}títšts›r”q2o+m%k)iYgçf¤ebcÃkkçlýnnÑojoWnønxnnnxnJmímÎm4lÁj¾h=cÇ_@Y}S¹M—G{AÖ<7Ê42}1:0Î/¿.Ù.-É-˜-ˆ-N,ý,†,^,}--f.I/163°8K=+C¹JCQŠX×_êglÕrZuŒx[y+zyèz#yÕyxmw4tår¾o&kŽeÓ_ŠW‰O_GQ?¸9s35.Š)¾&ý$²$B#×$$$($F$K$$®%¶&Ã)§-2/6þ<áBìI¹PÀWv^ cgzjbm¤oÉqr´tRu-u„u tÁtDtsZrpnlIj·i£h¯gÐfŸk3kölÛm·n3n’nXmÓmOmRm}m\mm=l¯liofnaY\.UËOmHÓB:ºE+L®T#[€bçiorçvTw›xÖxÜy(x¹xOwu¶s”q¶nÌlg)a³Z5R|JqBÇ<85Æ0á+Ú(Ø&M%“$Ó$Ì$„$f$9$H$4$Î%C'j*-.¹38|>D˜KrRuY…_4d,gkSmôpPqµsrtBt°tSt s°sÑsarVpznœläk{j—iÇih'koll¶mgm»mém‹lâlZlhl®l‘l^lÔlYkthEdÃ_YRR\KtDs=f7U1/-^*Q)’(È(Ó(t(Z(f(®(è)%)g)Š)Œ)€)œ)¬)i)s)*Ñ,&/¥3{9­@!GôO¯Wy_OeýlŽpåtÝv€xx xOwÆwYv,tÖræqEnälÀhŸcÅ\©UWM^Eº>Ð7ï2r,Ù)w&¹%ò%$Ù$Q#þ#¸#¶#Ÿ#ï#Ý%G'i+q/F4b9h?¬FNM–U[x`ìd°hÕkÒnªperFss‘sJsrÞsNs8rhp²nýmrl=k’jìjxiÒllGlÅmYm¡m¦m6lŸl@lbl´l§lymlnkg9c1]VØOšH}A|:O4n.®+~)(­((+((((6(C(Q(r(ˆ(‚(q(€(|(.(()*-N0ò7 =aE!LÄT‘\qcNjn¶rðt²v>v7vauåu¤tÐsÁr3pöo!mj)eé_WXQIæC;ö5å/ª+·(¦'¿&­&<%d$Â$:$#û$'#È$—&)_,˜1 5i;!AOHPKW\ÿa5e±i lvnžp«qiqõq¿qq€r'r_qÙpcnæm„l|kókekj¢l—l—lÝmPmŒmflôlŽlvl¼mmlêm•l±jØfDa«[#TjLõEÀ>à7ª2,­*(>(G'ð'ÿ'Ø'Ã'º'¿'º'¼'Ë'Ô'Ñ'º'­'€'&ç&´'Ÿ(p+w/5;9BÉJ.QËY€`rgxlepÙr«t-tt>sòsïs„rÔqÁqoÈnälhRb1[ðTÆN GK@Q9à3 .ˆ*ú)¿(c'±&Ž%Ž$•$#¾#»#!#r$F&Î)b-Z0ý6G<CpK2RqXÈ]ŽbƒfRjRlÚoo½pXp.oúoÿpÎqQqoðn§mill/k¿kŽkQmlÏlèmGm‡mBlálÌmmwmËmòmªnl©j3e_åYQýJ~C]<×5á0°,*(¼(ú(Ô(Õ(–(S(*( (((((( 'å'±'^'i'q(‰)†,/ó5›;gBcI7P:WC]»dsiOm¡o^pºpŸpÕpÓq!q1p÷prpBooOm iïdd^­XRKüE®?`83G/%-J+p*S(Å'M%»$ª#è#©"ü##_%&î*.-1Ý7D>†F$M¢T]YÈ_Fc¨h]kamÖnƒo6onònÿoÌpkpwo–nymNllAkÙk¶k–mnlçlÕm"mgml¬lÓm]mÛn-n‚n1nbldidc«^VúO‹Gí@Æ:„3Ç/ *ý)¦(§)))(Ø(›(Š(š(ž(¥(­(±(Á(©(]('â(0(w)µ*Õ-¥0Ò5é;"AGÖN\TÄZºaeËjkÃmløm0mVmÕn?n\nKnŒn|nÍm>jÐeï`ÎZäUºPoJñDç>8@3§1:.Ü-E+I)a'P%¿$|#à# "Ú"#z$x&â(î-/2(9d@ðH¹OÚUæ[ë`êfeiþlÃmwnLnJnDngo0oÛpo~nˆmolÇlƒllkÿmol½l›lçm8lÉlxlÒmŒn nJnÄnKmök9g®a•[¥TNL«E =Õ7Ì1d-9)Ð(î(&(~(’(²((s((Â(Ñ(Þ(ú)")R)h)=)E)y*W+5,ß.j1"48b<öBœHXN!S—X‹]ëbe¹g_hœh¬h÷iOj jÑkEkœl=lªm~l jøfèbv]ivlžmlngn{n¤nÖo~pp[oäomìmClñltlWlgmYlˆl\l­m lŒl=lÈm°n7nXnén7mSiÐe´_6XÚQLI„Aì:£4Ä.¨+ (D'à'Z'³'Ù( (((:(q(m(p(Ÿ(ý)Z)¹)×*K*ò,_-á0 24Ã7[;?DI>N;R®VxZ´^a bcÀdd~ef'gXh/hôiøjælGl/kmh?dƒ_×[ýX&T—OÌI¤C+=–95í3"/Ü,â)Ù'¦%¯$À#æ#¥## $Q$å'ä+Ú2¸9ÝAíIvPsWL]tdji4l²mŒnn¾ooVoäpQp·pdo”nxmÂmYl¿l lÆml=l!l}lålhl(lÝmÝn_nPnÖmÄl-gÚc.\_UMéF>§7M1‘+Ô(Ê&‰&~&/&‹&·&ç&õ'';'e'L'N'†((¨)ƒ*A+Œ,ô/%1‚4R6ì9µfŒg»i!j`k÷l?li©fŸbq^Þ[LXRTN~G÷Aø=8Ò5k1{-ÿ*(!&%<$x$[#ÿ$$$â% '}*ö1€8W@bGðO3VS\ìdci¥m„nˆo·oÖp>pupÌpÿqWqpIo+nimîm?m mWl«kÖkËl+l›l'llênn€n8n°mBkeà`žYrRDJkBš;Q3ñ.h)&¥$æ%0%'%%Á%à%ê%ó&&@&&&1&a''®(ù*X,Š.Â1¾4ø8_;i>GAD7GîKÙO²R™TêVvX†Z[_\\Ê]˜^t_øaãdeíg˜iklžlðmk@hôekb%^Ä\;X„SM'FÓA<08-3«/¼+¼)&Ú&%e%`%%$õ%V%' *0e6ò>ïF~NUm\sd_jnTopîq q€q”q¥q™qßq¬pëoÓon‹mÒm¸mþlœkÖkãl@l³lVlQm_n‚nïnonÃlíjd2^xWO˜G¥?Ì8ž19+ß&ü%#˜$$%$™$Ï$ß$ã$â$÷%%%C%p&6&ò(Â*Õ.105 9= @C˜FÎJ)MéQETeVIW¶XwYÏZÎ[[[™[ç\°]’_ia¯dXf£h jØl]mÁmÝmölvj¥g“d„a(^¥[V˜P{JCç>w9ë50ã,Œ)¯'M&“%ê%ý%Ô%Ó%ª%à%x'7)ï/Û6=þEMTTó\Kd|j…oCpÝrvr‰ròrÉr‡r/rHrqdpko¾oRn­n¡nñlÆll:l˜mlÒlðno:o¡nîolÏi)bŸ\yTïM?E4=C6.¦)%#œ"w"ú#;#¼$$$4$;$A$[$p$È%%ù&ï)L,0428ï=ÐBNF9I—MNPÁTZVþYhZZZØZ¶[3[[‹[n[S[é\‘^a,d]giHk˜mnUntn§mvkÿiRf¥c‚a]Y]SwM2F«@º;6K1ß-6*"'Œ&Á& &.&&(&&%%³'4).ý4â<ÅDnLŠTl\dk pKrAt tt`sýsgrÀr¥r{qÐpÿpqpoŒooémlïm%mumám¸méo ppwo®o¹mhøb[¤TLGD#< 4Ê-;((#ò"»!¤""D"»"ÿ#,#Y#w#‚#ª#â$p$Ê%ý'B*+-s2G7+<¡BGKqO(SWVËZ\]å^=^]W]3]!\Ñ\Š\,\w\¿^…admg;imk˜län-njnÆm´l>i…fðcÈa]RYS"LþF|@N:×5x1,j)V&¹%ê%4%i%s%ª%©%Ý%&ô(á-è3€;cC!K~S[wd*jæp¨s u tõuOtÂsósrÎr¥r qmqpópp©qnmún8nwnÏn°nìoüpêqUp„pym‘iaº[$StK~C4:ø3ž+ó&ç"Ú!Í À!!$!z!§!Ú""X"w"Ã#,#ó$j%×'h*Þ.¿4R9û@ F-K„PsT{Xø\A_(`ea¿a…`º_X^–^]v] \†\ª\±^4`Šc¿fƒhÀjàl0m‚mðn¡mÍlbiyfÁcb`w\rWîQöKÅE6>Ù9C3ä/ + (%–$è$O$¨$á%@%]%•%[&™(0,Ó2+:AÊJURZ°cŽj—pÏsšuÜuÍv7u’t™sŠsròraqñqÆqÜq­qârSo‰o o8oPo|oMoyp[q'q’pÒpÁmÚiob,[šSÔKÆC[;3+Ç&—"^!"ì   < G j œ é!!„" "ñ#~%&â*¼/5';DAÀHM§SWR[ú_aÄb¬cÐcwb’a`0_‘^Í^U]Û]ù]ï_!`ÿc·f&hHjRk®mmƒnZm{kÜhve>aT]ìY„T“N_GÿA;85å0Ê,Ú(˜%ê#­#/"¾#7#Ÿ$%$d$«$Ž%º'+e08Z@ HšPÚYaïi$oºrïuvuvuYtasTrïrÚr]rr$r|rŽréslp‚ppoûoòo¬oÃptqqspºpmÄiŠbw[øT$LC;3ˆ+§&F!Î Sî ç $]‚ó x!r" #Ù%×*.ð5Š<BÎIPOTÇYc^7Ç2 -³*&#‘!Ž!; ì!†""Ó#8#“#›$º%Ú)Ù.Ê6|>F£NèW1` gin\qýtËtëurtÃsÏrÙr•r¯rWrBrŠs"stsótŠpÇp8p)oãoªoCo=o»pApoòoÞmDi~bÝ\—TÅL·D,;Ä4",9&£!Åá8H+iZB+<N¶! §"$(Ñ-Î4Œ; AÝH`N=TXõ^aUdef'feÌdùdrcÙc btbb2bFc6d}feh*iêk¼lÿn.nHn¤m jÊf‰bY]VXÌS„MÕGY@©:X4^/ª+'½$!Úý¨Tã y!9!¬""G#e$V(,Ó4r;øD}L©TÚ]dùl.p(s,sYsÞs/rSqqqÍq˜q¨r%r÷s‚t)tßpÙp@po©oCn½nšnæoRo¤o+o$lºiMc\îU$M*D¡<54†,«&ý!ט±¯’áÕ­|v†ðJ!¼!“#z'µ,®3~:#@üG–M˜S˜X´^aÂdÔf ghg©gÞgzg+f¸fFeùe´eÇe½fjgijkÂmm×nÖn¼n­lliud_áZxUZO§I¤CD<Ê6ü1‚-L)%&"Ì ¾ðvjá™  “ é""²&*«2G9ÚBeJtR{[byiônHqxq«r/q‚p¹pp*p™p|p¯q^rms/ttáoôoQo n°nFm»mmÅn3nšnYn~l^i\cp]‹UÌMòEz=5`-’'È"S¼¤špÆÃ¢gWoß.ï…!="ó&Ø+o1æ86Q.s(s"§Ç–”V ¤I1PË!Ýt!"®&L*†0˜6Ž=1CÏJ5PaUì[Ö`gdmfºi!jTk„kÖlkòl0l^lSl5l lPlëmÓn¥o#o{oXo­n½m”iße[_YOS.MFø@°:ù5V1 -*i'%S"î!(pÍÅÂ7šáæ H#]'Ö/s7 ?wG2NÞW^¤fdknnnžonom½mûF”N%VZ]ÛeŽj7mmÆnBm—løl‰l³mlÜlÿmÃopq/rIkºjûjãj®jšj@jAj¢k_llum]ljjáf`ÀYQwI-A901E*Ç$& {ôèfˆ‚…SB^¡+ £")%?(§-„2/7ñ>D’JíPÌV®[~`cjgi”kÎlÄmœmànfnÂoo3oFo_o“oäpMp€p³p/oõmîk†fb`‚Y,R[KÅEO?w9j4‡/Å,â*˜)t'ç&j$Ã#=!É ³§ýOù‘¥” "k'!.Ñ6_>‘FM…U¥]d·iVl¯lïmhlËlQl lQl¹lql~m4n}o~p’q«iÓiihíhöh›hži!jj×khl†lk fÛaýZ…S.JòBÙ; 3:,™%›!l~9•µ—l^o¶ÒOÇ .!©$€'Ž+Ò/Ø4ø:t@­FãLÈRzW>[Ì_¥cïgEjFkÝmAmÓn“o"oÜpQp‰p’pËqqJqDq\p‰oämiÔcÝ]UU¸NªH%A¸<#6Q1í-Æ+ * )s(W'%¸$O"ù!Á zqÕ:@!Å"f'_/76Ù>øFhM¿UÎ]duhÛllmlàl^l llŠlùl¾lÁmjn•otpdqeh-gfgNgSgug gg£h¼i’jGkkwkg‚c;\ULÆD§<É5!.v'%"oƒÏÛ¿‹x…¸² uÆ!'#²&]*-Ž26ð<¸B¦HŽN-SWÆ\`üe3i&kˆmˆn_oRpq:r rYrNr£rés-rñráqŽpFl†h$aDZREKDª>&8˜2Ñ.×+T*)(ÿ(V'[&\%#Ê"Z Ý‹>w»¾†ŸW"''`/l7,?@FMÒUÖ]d"hTk…kçlYkókðl-l¾m:mm!mÊnÙo”pXqAf e~e’eâf@eøff»gìhÇi†jÏjükh&dŒ]öWLO-G?)7 0ò)$_ bc…Å~EúÜàï,® í#/%„(¸+Ã/´3Ä8×>/CàIXNkS-WÜ]"bføjXm6nœoüpûršsºt1ttxt¡tÊt/sÆq¨oTjadÝ]^UÍN*G@à:V4é/k,)e(Í(W(g'ú'0&{%^$"‡ õ•D‡Ôä±äÆ"Ø(]0–8a@VG£N¼V°]©dWh$k%kkïk¢kØlQlõmsmqmn9o%o±p9pøcïc¸d d¯eJe)e?fg`h@ijHj¯khØeÏ_¶YƒQ›I¤A¢:3V+Í&X!Ò V=|#à‡]Z{]†¾¾ â"ä$å'* -U0¯5.:?…DÛJNúT Y¨_LdúiVm4oRq.r^tSu«vav?vkv(vtþt@qcmèg·a.YC8[1ÿ-n)O'Ï&Þ'_'‚'Œ'N&º&X%Œ$x#!¯ Šyðd\Ï!E&,)4}< C†J»Q±Yo_½e_h+j”jÝjÿjÐkcl8lÖm.mMm€n nÃnüoo‚\ï^_”aŠcVdzeNf™gÒhÊi‡jkljëhácÒ^µWPBHW@¼9š2#,D&¹#é!Ð!‚ ³ SÛ©…‘‚ª¹ j!Y#$½&Ä(‘*§, /…2Ã7;l@JDÁIûOÉV;\·bgÿkêoŽqÙt‚uåvüv¹v“u_t]qýoÏk2e¶^V‰N³G&@l9Ý4Y.K*<&ß&'%Õ&ž&é&ï&Ä&O&%u$ž#p"E!: :¶3k7 Ñ"Ÿ'¾.6h=ÖE(LlScZý`ïf%h‹j¨j×jÚj¸k|lolåm m2mynnŽn—nvn™W®YÁ\^éac¶e2fÎgùiiÕj¾kSl‡kâjbeöaqZÐTLpDõ=·6[0L*R&Ë$ #1!ê!O © d  ê  ·!Œ#$¹&›(M)þ+u-‚/Õ366¯:ñ>×CÌIUOÃV+\6b fµkMn{qºsXtÂtšts1qØn·kŸf1`!X_P°IAÅ;…5b0m*ù'š% $Ü$Ë%v%³%ª%„%+%$’#ò#"!- Lä‚óù!ô$L)×0c8Ÿ@GAN™Uw\½b+fóijËjÕjÅj²k’lyl£lplŠlÄm*mAlélXl RlUnX…\$_Šb§d¾f›g¬hÜi¬jvkl‹lk¨gùd^ WáP’IPB :Å4y.)Î&w% #\"r!Ž!* ²  < M S î!®# ${&#'¸)!*:+†,ð/P1ê5‘8ò=”B£HÙO"Uy[ `øfRjYn[pŒr‘r«ráq,ovkg¸aZðRðJòC\<86`0}+ú'$x"×#E#z#ý$#ý#Þ#ª#Ÿ#R"Ì!ù!% l±}N  r"í%è+í2¹:ìBYIŠPñW›^ucGg‹i8j j†jijpkmlNl[7O1Ð,4(C$,"b!m" "<"q"f",!ÿ!Ò!Î!! MŸ1Âð L!<$b(.—5™=´E.LLS¦Y÷`Ddghiijpj4jj(kk®k=jWj1ji—h|geacúDÝJO-TxYW^eaôdÇfgÐhÐi‚j8köl÷mlknidg_ÙY´SXLKEo>Ñ7Ú2a-¯*ß'Ø%õ$#!ò!p â Ê ¦!!˜"¢#·$í&''Ç(M(µ)p*!, .<26;J@“F¥L¿RúYL^ÙdVhkÕmnVl£jÉeüaY¶R6IÎAc9ä2Ý-§(P%!ä ï r ú! ù × “ H õÂC²<+±& Ã"/%ë*U1@8r@nGæNéV7\>be hÏi¾jsjjjjïk4jdhîhJgpf?dPb._Ù]½<ÃC IBOnU[_}cdûg.hdi7iëk¡lÛm¹ltj¹f×c.]ÑXQgJëD^=†7¯2_.®*ö(z%õ$i"Þ"!X!& Õ!!k"I#9$>%&%Î&c&Ä'''š(¼*N- 15Ø:x@ EÄLR©XÐ^Õc@g«ikViÜh$c]ÙV3NnE÷=6D/W*‡%À#G!! ¾ ] Š m = ½Ríºˆ¾ìHN ""$(t-~4µ;üC½KQëXþ^šcìfæi˜j3j˜jjiôjwjh«fVd¾bÆ`w]ƒZvWbTr4L;ŸC J.P¶W¹]a{cåf¥hhüi•klmmšlÿk×hºeøaw\{V3P)IÃC*=7%2‹. +'÷%ï#×"°!¢!P ç!!'!¿"v#I$$v$»$×%%a%5%¿&”)+ô0E4U9„>ÄE+LSY»^ÇcÄfhLELNShY^oacŒbR`«[CU‚MŽE¿=®5‘.î(”$ö!å!) h ˆ R > D &ÕNÌ^ÿÑz¡ù !Ë#3&)N.Ý5<ŸCðK)RNX‰^ècjg†iYkkjÈi×i˜ih­f¯cÈ_€[ÖWŸS#N\"b eæiUj–kík§kiéi¢h¿g©d`®[QVŠQ5K˜E½?ã:«5~_#k,Ö5Å>«GûOùWY\ˆaÙegíi@j¾k¥mmxmxlBkgi8fÏb¸^XXúTNH»B¥ÎFWM†T Z¸` eChZkkÉl¥lk1i²igqeG`à[üU«OÆIiBÒ7DùKèRWX'^KcVh/k0nooëo*njlNjOgd ^ûY&QeJA­8³/Â'6 .MT_n )t”$,,³6?ïI&QÀXu_+cñh·kn op!p=pTo°osmüköh‡e%a-]ŸY_TÎOBIjCˆ=Ç9C5,2x/Å-»+J)™()'á'â(`(Œ((ª(«(À(½(Ž(i(c(ž(‰)K*,Ù/ô50;ACGJ³MçMãM³JsGAc;Q4Ç.)Ø%«#Á"!ß!Œ!¯!Ÿ!§!¯!Ò!é"4"W#.$]&a(-*±-!0À4‹9Ñ?`EËL1RLX]b—fõjöm1oyoûpqo m½jÌhc¹_cYR'IÓAí9K/ö'+Рɀ a³Ã%ˆ.8oB@KvSZ¢`\f;içmnboópepÃp`p^oanksh›eb ^wZÌUóP’JœD¸?Ê;N8M5t3k1/1-S,–,X,Û--G-E-=-e-’-ž-™-•-¬-†..Ì13œ8 ==BÂGæJúMªMrMJFáA…;¨5D/2*§&ˆ$…"±"W!õ"!ÿ"""\"Í#¼$& '£*,V/~26×;+@½F¸MSXl]bfòj‰m¢opåqpônêlÇhões`ZxRÚKB"9›0Æ'>ÕXõ <gÌàp €Þå'0019ÐCK[S`Yé`Áe„i®kÃn o pp*pio¸nûmjêgÿeeb\_|[‰WQLG,B¢?y<:‰8j6Û5 4'3¾4(4w4¿4¼4¥4¼4í5585:5G5-5¾6y8{:|>BoGKcM×OòO‚OLID>y8^2 .E*>(!&+%®%B%k%C%N%B%Ý&Æ(X)¾+Ž-=/´2b6 9Ÿ>B˜GúMÅSXä]ub#eþiölšnîoÔq,pºo×lÎiÖe`¡Z4SJJÄBN9g0¤(1S± ^“ˆÚ]Û© sF½'Ì1:cCPKÊS/[afUiOlZmùoÚp‰qpmpn¯m=jþhºfcÏ`À]AXSyN{IûFªCqAP?2=áIþOITÍY÷^¯b›fÜjmn¼pypýqæpºnÔj¯fòar[ùT\LB”9n0€'™‰ ¹Ù¬Ñ™G£ úâZ (R0ù9ôBbJ¬:ÿ7h563.222$1Ö1è2 34g657…9:¤=A@FDVH9L­Q@UÿZÁ_cfliôlQn;opUpopnOk\fEaÑ[•ULmCL9‡0<'Ë?G ÛrÚý«ÎKy^ ¢ »U¹è'×0Ã9AIIãQ²Yf_ dg7kmso¦pp/oOnènmkyiÐg±eåcI`\?XÄUµR±P]MúL‘KXKKKVKtK”K·KÔKíK÷KõKúLL=LgMMèOcPºRÖU‚X6Z£[Í\Û\"[6X¡VRTNWJEçBt?<á:Ý:9{9‡9;9c9¢:Ÿ;Õ=t>¬@SB DÝGûLP4T•Xß\Ú`¼d gºjqlún-oo*p!o¿nÏkTga¾\­U¢MÔD!:?0u'0QA; ¦>ºá ‘_!*"~  ù¸ëÊ|'—/N7Q?cGNO•Vh\g`”e#hgkÓmmn_mõmìmˆmil¤kkižhDfmd1as^É\9YÃW¦UaSÎRaRQðR\RyRRwR†RÀS S7SYSuS¸SõT¥UzVÕXYß\^.``éa°`ô_ø]œ[SX TÍQ!M}JGGDüCB9AŽAAIAqA¤BsC\DÈFGØIÀL”O‘SSW@[&^¼aÈdÕgnj`l>mŽm—mÀmMm‘l3iúeb`ïZÈT÷M$Dz:‰0Í'Î( Lè|‚ˆÉ½(‘} æ ¯;%d-64œk#‹)þ18í@þHîOyULYÈ^èbêf×hÃiÔiåjåkºlel4k´j iÆhÇgÉf›eQdbÓaÒ`²`__ž_¼_â_Ã_œ_…_¾``½aXaøboc câdåeÉf³gÂh£ivi´i÷iNhzf³dæb‚`"]‹ZùX{UØSÏQôQ,P»PÓPƒPWPP”Q^RúT†V|XRZ‹\ù_•b$d^f_hjJk¸lÂlVkj"iqg¶e‡a`]WQ¨J‡B¦9r0L'”8:ú Ñ+ÔŒ­ŠWŒï¹+b¬cŸ]6Ý– t‡úÂ&[-A5%=¤EzLgQžVÆ[`6cßf‡g€h¹ijÒk®l>l$l k™k?j¨iòi(hsgæg^gf ftfgfnfXf0eêeÝeÿf†g"gÊh8h¦i?iåjrjòkllbl`lbkÞkTj"hÕfûeca_\ô[;Y§XóXX“X'WáW›XXåZo[æ]“_`¼b„djfOh iÐklml–lAjÊi©gÆfbï_YÄTòNÚH–@“7Î.§&6ÕQ( ÎljkúA¯ø–?™…Šž‚©»S ] coh#(*"1ù:A¼GÄLëQ"Vv[_BaŸcqdQeÅghni?iÛiëjiåi­iZihéii*i!hühêhÏh¾h|hgŒg>gJg~gÄgÌgÆgÚhh&hdhÄiiZijiivi„i9hÎgåfïe·d–c]b`Ò_¿_7^ë^Ù^j^"]î^b_`Gakb˜cŸdše f¼gòijxkk?j hÌf©e!bŠ_„ZÝVP=K3Dî=Ë5^,Ñ$åÎÞK ê% ”•J7†ËÊZ BcWÿáÿæïÕÁó ä+³µÕ&k.6g=´C¤H LçQ}V±Z½^_“a bc{dôfsgph-hXhhŒh€hŸii„iéjjZjDj$i™håhg_fâfƒf#eŒdðdddcÕcëdd}d³eeaeøf«gZgóhAh†hvhihgˆfêf[feßeÍee:ee*evf&fág¤hBh½i>i±jNj–jâj7i0g?e¨c9`Ý\ÝX$RJMGjAà:Ù2Ÿ*";ìø /Ú@๡ÿä;»Ù™8*ÿóÿñ=hÿíÿœÿÓÁ|×ó «ZÎ#F*Æ2g9>BlFGKMP T{WXÑYgZv[Í]ž_E`vaa¢aùbHb¦c.c×dƒeee†eNdwc–b€aŒ`™_®^¥]n\H[6Z—ZZZZ˜Zï[²\–]ô_Y`ôb‹d e’f²gÁh0hwhSh>h$h1h6hgåg¬g¢g¯h hhôiFiHiLh÷hºgçfôe>cpa_[\lXÝS›NHC;=Â7…/ê'ž é[Y ?çn¢eÿòÿõaδX+Zÿñÿ¯Rÿÿÿ„ÿ@ÿ”)$‡ÊnÜ Õ­r>&--‘3Ï8¤<#@9Ë3Î,e$P¦Ý3ä „àuÕäù`ÿã …·jn ÿ¯ÿÙ$)ÿòÿ‚ÿtÿêÀ#É,!< u¤Gm"(Ò.]2$5t8y<¨@ DAFFäGGÿI©KjM?NÕP6Q»RüT6TáU\UnUÇUªUUT[SNQÿPÚO£NnLÿKUI¼HLG[FmFE­F FbGÌItLN‚QdT;W'Z0\Õ_qab?bŸc&cocÚd dcúcëd.d¹efff"fd÷cµac^È[õY®WƒU¡RŒNÃIPCq=¯9I4å/Ü)K!–\o­ % k¶÷Š jw–v$ÿñ"Z"ÿÇÿ­ÿÌ ÿ²ÿRÿ\ÿÖ_ÊPÈeŒx ²¬ˆ±"Ø'Þ+Ã._1g4g8:É<›=Q>B?C@‚B C~E FæH JmK†LSL7L0K{J³ItH6FÛEœD]C$AÂ@!>£=]<•;Á;n;;f;Ì=[?*AõD·GÛJåMÿQ6T)W/Y_p]€Z¾WâTíR™OÜLØHgCR=¥8o3Î0+]%4üÈQ 3 çë‡Û{ôJ °;iÀ–6 ?(4 ÿÁÿžÿßÿ±ÿ[ÿs#½V b0¶à ¯ ô˜ïXí"¥%›'Ý)‘,H/1~34[55Ñ6¸7¸9:¡j?íA.ACA+@?=’<#:¤987Ü6‹523 2M150/ð/¸/o/à0V1ã3¬6f9<-?BEHK-M‡OYP\QR¤SËTüV;WkX©Y‡ZgZsZ\Y>XV SïQ;NœK­I"E Al<;6þ2<.`*Â&ô!»“* ó F’àÚ])J‘q6^¦Çs"U_COÿ±ÿ¿ÿþ5"ÿ•ÿ;ÿŸ/=ÿaÿ¿^6y Ø=üÚ 1!Ç#R%L'Q)D*¢+±,O,ü-Ü.Ü0V23Ì5x656¯5ë53[1¬/»-ç,&*s(Ó'%Š$F#”"Ë"‘"L"Ö#a% &õ)É,‘/©2™5§8Í<?pB/DYEÆGoIJ®LGMñO5PaPÞQZQPÀO¬N¡LØKH|EÏB)>u9è4ù0/, (‚%6!6a·´ Æ>KÌÎÅ(r_ÒN^«¹8 KŽfÿ÷>rU ÿÍÿÍ)_ÿüÿ„ÿqÿÎaª!ÿÈ_/ .^ d騟֜ ! "w#-#´$V%T&†'ÿ)™*º+²+}+)‡'í%Ø#é!÷ >SËiÃ…<ÂFà½w!$&Ø)æ-0X3Ù6¼9:´<’>K@A²CNDJEE-EcE+EDTCµBE@ã>0;-6Ý2O-”)%Ž"Ú )Â/ï õ´þPéÕÈ2º›­©Ô—A6‚¥_ÿô&igÿøÿªÿÝ-+ÿëÿ‚ÿiÿéeMÿÞÿIÿuaî($ì níjf+B2ÁSŒV&ìÒÄËŽQX:5aÉ1p®Udªs*ŒèIôyØžYi"’%å)m,\.Î0y2Q3Ó5^6”7Ð8—939†::e:¹:R9î8G6‡3#/@*‹%ý"Ì5Á§•% íE"9éIPùu’=ǺÜîÏk"6®¢\B“Ÿ:ÿÁÿ—ÿÄ9ÿÔÿnÿÿê_tÿèÿmÿbD¶üC$$Ehð ¦ A S æ C0Å8â^ÈâöÖF¢˜”Mî – Q j — ) · Ž H t Ÿ § òîC”D -"Î% &€( )+*D+#,,æ-¦.e/m0#0Ç0Z/ß-×+“'Ø#®vÛAæ‘ ˆZ"oÐOà&X÷ž¡7åÇ4žH7oµ´†c8&0|£sÿžÿ‡ÿÞ4ÿ¼ÿÿ™hJÿÐÿ6ÿ.ÿäàu[µR’ÚòZ¿É7›û‚ â î þ † õ Ñ ¥  — ë M •Ù 2t ®‰\@ýéîˆ  à u‚²)Çí2‡‹  æ"6#q$q%š&&w%ž$ª"[×zÐ9Ý P 2Q³€ú.àHQÿÒÿý½d¥gú÷)cYñwC`”¼¢vvXE5VxˆVÿåÿ’ÿ¤ÿô& ÿÔÿšÿ¹‡“ÿ‡ÿ]ÿѪ8RÿKÿÿÀ7vê¢ï•õ¥ÝöÂeZ$bžÈ…îjØu' ÚÏât#.)EA‚ ë ¬ IÀßþ30ÈAùëÈžYJ*Ò¦ É ® ^©-mÁ÷â$NÿÔ¼p\ýH“0»f\†‘zqŒb[IL\‚v ÿÆÿ¡ÿÆ=ÿÒÿ«ÿÍ9ƒcÿïÿpÿSÿµ@¤PÿVþcýúþ”ÿ ®,ñ‰) ‹ü“Œ 2:Ûnäwµi#ÿöA``;TˆîaîSî©ÅøL~ § Ò GŸ*røRðЉy Î h " Šº–-gYóšÿ¾ÿî‹ jT 3‚›]è’qvsZ\xžQ`^WSjlMÿÍÿ¹ÿä#<ÿÜÿµÿØ'or(ÿÐÿœÿÛ…ùNÿdþòÿ+#&Æãj µ€w]qžë7d{aKØžxnaej{“š‡ia[<7RŽ©íA䓇|•«ÁÖ Ê Ï n ê Þ Ì h   † UzÿP¿IZiS¹ÿÐ¥$Cõõ4u_­‡ˆ€rH6S‚›>Sagfqnb9ÿôÿÍÿà96 ÿèÿéGgi;ÿìÿÐ sÔº#ÿsÿÿPî~NÃPÿìÿŒÿfÿMÿsÿ¥ÿì%JliT93@Pahl{t`aMÿáÿÉÿËÿ½ÿÆÿÒ FÇj*ÐZçN¶æ õج‰vaÖõªÿáÿ‹ÿÿ”*ËJëó0k„y9óµ–‰kR47[‚0DXnvsa\Fÿõÿì)2+!%i‘z3ÿåÿà<¨ÔŠÿðÿƒÿ…Ðe®y4Çv=ÿîÿê6e’¥¤”˜´ÍÒËÍÍÅ¿ÉǬˆqmkz‰£¯Ü6‹³®°§šœ®ÏäýA€zF«äBÿщ*wFávNy¹òïØÖûAy‰fFÿß³ƒQ:6Mhwt6LXa^TM^\1ÿÿÿáÿê*2'(T|”z7 W»Üš!ÿ¾ÿÇ%ÄFiSíœQÿòÿî@o𮳍œ¡Ààçâëô÷ðíÚ¿™pWM[nu^Jexa-ÿäÿ·ÿ­ÿ½ÿë'Ogˆhÿ¨ÿKÿXÿŸ8Ý;Iû·Œ´ÍÝÙßü+_tlC#øá¶L54Maid>SUPC:<T[= ÿçÿä!"*82;j“Ÿx$;¢ë×rÿã"Œí练UO_Œ°ÊààÚǯª¾Úßßìùøéͳ”lWRhŠ›‰lnp\C43+?mœ¶®«ƒQÿ ÿzÿ‚çøÌ§¶ÖÛÉ¥¼ý7W`K;'㹉_KAKW^Z3HPUM<2<IN9ÿçÿò5:&27=Oeˆƒ>Q¶çÈbÿå^¤ÈÓ¹œŽ›ÀàöþòÝÆ¿ÌÝÜÓÏÑÙÜÙÆ®“ztxŠ ¤od^Q>#1rªÅŸmÿÀÿ†ÿ[ÿ‰ÿàS­Îѱ ¥ÈäÛ½ ¦Ë6KUG:-+%ýÌ—p`PS_dX!0@V]S>04PZ4ÿõ7UA"<L</KfaBBŶnÿè7„³ÁÃÀÑìëÙÓÖÛ×ȳ¤ ª¶¶¡Š„¨¬¥™–uca…Ãëó·gÿÃÿ»ÿÛ+v›“uuŒ«ÆÕÊ®™žÁç "+;@=5<;4ÞªŒ~f[bcK&BZh]?,E`\7ÿê>UG% ?IJT]kd@%&P”·¥_ÿøÿû0^”Æí(0+50üçÝ×ÙߨÀ¢ŒŠš¥“}|Š˜Ÿš’“‡ŠŒ{wŒ­ÒͨYÿÒÿºÿâ\zrXQy­ÅÀº©•‘›Àë.21%.=5ß·«£ƒaVI$ &EgoY<:H`YÿéÿåLfA (Pnn`irqb@6S‚¦žv; Qšë1LL7>=&ìßÔÔÞáÓ¶—ˆ™Švot~…€|†Š€ƒ€‡£±­€BÿÒÿÒÿð#GO?03]ªàÚ­—Ž…—¸ê75% ý*ûÜÅÀ³Œ[?( ,KcpcD/G\Eÿöÿø$TS2(QhmnhljZPPc“pH)/mÎ.afEE=#îâÑÈÄÅú¨™˜™Žplt}{ƒ“¥¨£¨•j4 ÿþ6J=($;W‚ºÒ›xw‡¸ù$,'+óðêÛµM+ÿý %;frJ%CVL ÿÿ,NT5 +Y{yc^eu{jWUfŽ…g>8PžJ`GF9òçØÉ¶®±¸¶­¤™‘ˆtjr‚‡‡‡›¬½Àº¡‹g1/HW]H(l˜­½¶¨—™™zrŒÈ$úó*>+íåìåÆ^8  6N=!!0@C37OK7$,U‚“‰~sy}qbY`t…ˆx]QPƒØ)QLSD+ úñéáѺ¶°¦—‰ƒ~ldnˆ‰ˆ©¾È¸Ÿz_I(2LOA5&E‰©¯¿¿¹§˜{‡°å %  ïæÝή„Z:( 3ÿÿ %*,)!"7C24LYNGZ}œ¥œ„upquoiimpsrsj€¶ú)>TN=üøöîÝȳ¤™Šwshgrƒ‹‘™¯¹µ˜qRDIHM]Y7 8mš©ªÄÔÒºœ¬Ùþÿ!&ùÝÐÌ̹Ž[8* 8ÿúÿþ"26(!9MA)%<U[Z_l“ž–†toqmmptrszƒ}…¡ÏùBLK2öíãÖ°¦ •‰~wprx†’¦¨¯¨™~`PSaeacU0+:V{Ÿ¸ÅÜÞδ¢¤­Ëð  !îʰ§£”tD -  /@8+5AD;+"'<Vimhfn…•|qkglxxot€‡“¡»Ú+CN<' ñàÒɺ¯©¥ —ˆ~{‚†ž«µ¯¢|peeqzs`SF1-9R\j‚£ÈßéÙÁ¯²ÃÇÐåû öÐ¨Ž‚xiP3  # $+016<CB6*!0Sy‰ucl†„€vhdo|wnlu‘Ÿ¸Öû&@N?+þðáѾ­ž–’Žx}Œ•ž®µµ£ŒwlmjlsqdQF@77:IVo”¹ÛãÛǽÁÒÞÑÅÒì궇dNC*"  %6.%134?E@6(/Ks—œ…dYds‚‹‚n^dqqmjq|“©Çå':E7%ÿñÝÈ²šŒˆˆ}y€‘ «·´©•‚wtvtni_QEBCA>39Lv¨ÍßÔźÂÓߨ¼§­ÃÚѨnI7(ÿÿÿñÿþ&$  ê°÷@<q¢Nûò IDÛv£¯|bMf;ËB‡Ï]!ü¯(‰àJà~G"ò¤2 µ I ñ Í ® ´ Ç Ê ± t 0 ô È Á À Ù ø    þ ä è S £ ä   å › b h ‘ î > Ž ÌiÝJÛq5$ð}¼ :hˆ¦Íí?½OÞ ¹~H%ýætϺ“tƒØ2« Ž  ÜHQi Á¤[¹x9ÕP[_øPÌRùp£±à:›%ÂTà P ¨ µ q g k ] # à d ! ÷ û ú  7 Q Z ?  í Ï Ã ± ¸ Ð ó  #   D ½ Ý ÷ Ñ € ' ñ ø  E S Z f Œ ¾  Z Ä + Æ5§ä1…ÛKÀUæ›k6úg¬««Æxéë¹ÛÚŒ¸äí'€3 ãWyM0XfbO#Íb« %åÿ·ëÞ½½—§étö€ ù p è u  µ Y ! ø ï ë × ¤ d -    ( 8 7 -  È Ž d Z J f — Ý  8 _ v ‚ ” Ä ë ç Í Š * á ¿ Û  + -     3 S ” Ï 6 È J ® Õ $ „#È•V63#÷ŽˆÎçùìKgJ]ÙüÕ—|¨ÜßJ¨íüÆ¢Q!u‹”ìGϱ]¥f/Ù†aA Ž  Ê  6 Î y E 6 '  ò É ¨ ‹ i L . % & 4 = ? B 4 % ü Ï Ž ? ÏÌÉø 7 Š Î  8 Z t ‰ º Ï É W  º Ž ƒ ¯ á  ù Ø ¯ — ‘ ¯ Á ú Y ° Ø Û Ü = ¼ A é |0 áŠ"¸zÞ›2‚ã|ió”hÛé…4ÿÕ>-â*7Ïöd0ËÎÕ£i[”ßíÝâë Ý ù - ° 4 ù ¾ ² ¢ ± × ã Æ y , æ ± — r t Š Á ú  +  ë  [ 0 íáòþ I µ ç  ? O W x Š Œ b / ã Ž W = Q i ‚ Ž „ y ^ 9   "  8 x Á ñ û ô î ö - t Þ + £ E ý ºÅÚ~€kÄC2QNG3_y8óyÝP Ÿ ŒðjQU†\D÷„#ê | · 2 ´ S § l H i Ÿ ä +  Í : ½ `  âõ  c ¢ ½ ½ œ Œ q N $úÚ¾¸¼ÇÆÄÂÏå  + A B @ U s • ˜ ˆ S æÒè   2 0 (     8 p ¸ õ  $   ô ù   I « 4  „ ^:›I¥¬yã€óI}ëß([WŒEªÇ‹uÈýU|!ê f«c < ‰ ß ¢   J )   < r ” ’ ‘ Z  ¤ ] < #  ý÷ü  þðñôøá»y5ôÀ”Y+þ *AQUc‚°âûí8‘î * J 1 ãÎÔÜðû  - N a y © Ï ß Ï º ¡ | “ ä W — Ô ˆ  Yåj«±jBù .äU£u/ªq´Xék0p_qdü¾–{| ^ ‡ Ù @ - ; & ¸ 3 Ù Í Ù  V i J ö ² t ? þäÅžzJÚ±¤–¢¶Ðõæ¹FËHÝ‹/öÇÅÏçêðøD}³ÙêþeÕnz½¢w8)Iw¦ÊÒé , y ²  à ° – ª ð N ‰ ¦ ­ Ô ª ^ pœÀµk¾m$ï™.w±¾‰}¬õedBCDJ Y ‰ ¦  ¯ ˜ m a j [  à ¬ Ä Þ é Ü ­ o J T p Š W÷H“ôy?ïâó=PqKübÀ2ÈšgWHJMJ2!8`šÐö.|ã‡?ÛYtt: êÉ蓉Ðê  . P n ˜ ¥ o g É  4 W € Ò $ ¾ _#¸*›-óày&º"¹€ÃÅð ÖgÒ† v © ÷ e É p @ 6 Ù ¬ ƒ K 3 J a Y ±V8ƒÄë{È«»  ý*Favzpm4×OÄe+27NafdO/3`Š£¬­©Íÿv©>Œ¿¢zG4iý±jHhSH\áüõßî . – å , u ³ â s á W ¾ ÿ A ˜"¹v:ñ’ ‰ B 8 O 5 ö ­ r € U ± å e ) á Ì Ô Ú » q К†…m,Ìo;6?8æ}¿éPúÓX¡tEý¹yHÔN+"%-572*#%(:Roˆ”˜“‰–§îOÏK¢èêÙ¯Œ‘—övC.âXR% —%¨ö  0 Q z »  Y s b D U Ÿ  ‚ Ð  * ^  : Þ‡#„ Ñ v g k } h L H G d  ] Œ + (  õš+ºk5ø·b øéñ¶@x±g'ôZ·5&Åhû“L÷%þÜź®³¾ÒÝéü#)+-48S|¶ìCYhkuzgs…ÿ¿–Ava0&œ`X&޾®¸é L © Ý Î œ ˆ ¬ & ¼ 2 b O B I ^ ¯ " › Å : ÿ í ð ó  ( - *  X2òÏ£AÇ;Äfþư®¢_mÊMÿôãÞ˲œ‰j>Ϩ~st¬ËîöõÉŽN"ÿÿÿúÿöÿùÿôC_u‹Ÿ¹ÈÌÅÇŸµ¸ßb¸ðø¬y}ãgóV|ršìù¢Øÿe  ? ; ñ  … P X f [ D A e • ‹ ~ y h G ? a ‰ © | -ÙJ ýÂO茤I>q˜}ûO»]„ãZŸ‚HÌRê•{g—ÁâI‚±ÍëðõدwL#úΞn43He¡Ìï   íº„Q\ˆîX²»&“[eävì •|¡“(½YÅ)‹¡hA~  o ¿  ú ¾ š ƒ iØéÛÅÀì ²/m±«iÉštRúlÎJûWNçJçÖO½Õ­'¥3ÿÓÿÈÿÕ*‰ä"6@BVt‹¨Ëö*MhT2é£Q ¸Kÿîÿ¢ÿŽÿÿÿ±ÿãe­×ÿâ©BÿÓÿ“ÿ~ÿ·ÿæ>¶KÆ>ÿ·ÿ…ÿ‘}ö8~àx Ú‘ƒÆ u(§¥‰ÈMÞ F ‰ l >ê¦}z9QMKAP7 Žû5tÈ&ÃjNA=0ìsÃ×8K ˆ)–=ı;°KI]ÒUòäöÙÁÁëc´*²4»ãßpsvÁÿFÎr_ASj¥ê)e_Dßgî–j&%F­/‚²PŸÿÜÿCÿSÿ¾|FC7W؈OëGpºu1‚§ûmÿc”tZ(òÜÿ_„‹e<å‘ y»ì)hÚõþðǃ3/h„n7ú¿äJð†àý S½Sã\Ê5, à¾ã"´F¹ ‹ s Q C « Õ L ¼ Ü $ ;+ÞQõ‹R  3Yp„c0ËuôQ°ÿæÿÞ1¢Ý×Tÿ¡ÿþ¼ÿ ÿŸJ«´’‘Ð~]n™¨n»ŠøNoN/]2HH«0ËZæTŸpPhºäöð0š(•À«’©î~¬vÚŽs ™ È · ‡ Ä â š R Ò ë  ² k|‹©±±È¿ÔKà0ä–. Æ › ‘ Û ! “ö…í¼¶¿ÇËQ§ÞÆž¡¶lkÍ1)½ÖÿÑÿKÿV—èÐ:€JAÆô'\º]”Õ*óU|oUv+p¤²h -º/Ö—´å9\¢ý±‹€Yùuát´ @ ­ 3 É ¾ Ò*†Äú»e{= !ZÇçzÐ#$ùæ + 5p¡eI÷•‹*áçû8b™Í Y Ì P  Ü © n æ M OGþ™dHÑ¢É쌞uÿÿTÿmÿê=OÿúÿÕ4ý«IU›óDrw†¼)¯<9Q·ù-0í§OÄrF#S¤(…{c€ÿ| ç  9 {Ã*-Ø$e ¤WûfO/ &.:NÒ€¥ ¿"#~$á&5'D(A(ý)Ï*`++*ë* )('é&Å%z$*"µ!0´@Kt¹ÌÕü0¡%ÁSÅ7f¡[ Ý ø ïMøŠˆwØyÕln\Ÿý¿Y"[ÛuÄÝü_ƒhB7}øÚõû8y¥”T$ùøË× ¯scùæô ý # ú¥G"nŽo[Îöp—ç!º#E$™%r&S&â'r'Ä( (?(g(Ö)p*l+a,-Ð/0<1)22£3O3Ì4q4ˆ4f3|2}1/ß.…-0+±*(r&Ë%$e#±"ö"c!Æ!5 £  s™§…oPTÆ÷Ù ‘ Ð „ Í $—~1Ÿ×Æ›ÿÙÿý‰qq<DN=$ù{‘¬Û}1 E‹VþÚ+ö ¢ »r‘”‡Äd q"ç$Æ%i%·&&è(|*+Í-a.¥/Ð0¸1¹2„3G3»4#4G4M4k4´5Y66õ7ü9:-;;ê<ˆ="=œ>X>•>=¯<®;@9ÿ8§7X5Õ4.2j0™/*-ñ-E,”,=+Ý+¿+­+»+ä+¸+f*^)-'‚%à$:"¹!LèVϰ Y³Ö˜¢ U =xÝë‘UßZjØF2Ò–{zŠnw²šÍ¯iíW›;šòo, K A 8èëçn¶!>$P'’*Þ-%.Ì/h00Ñ2#3Ö5S6Ã8>9”:Ý;ñ==í>±>ø?)?>¼>«>Ñ?‚@3ARBƒCàE2FZGvH@HõIxJJJšJŸIÄHÊG_F"DÄCsAÚ@><:C8Á7Ñ6Ø6F5 5m5P5¯6K6Ã76u5£3ì200 -õ+Ô)²'¸&$!ÿXeŸXŒã¾î ¹™V ËÂïÔC5Œ˜mÿØÿÉÿèÿô 'Y±áÖ&ó»wò¹‰>ä§ C¯4žLo!”$8&¶)P,c03g6f839¦:m;m<=í?P@gA‡BíDjEÒFúH)HÜIyI|I]HöH{HpH³I­J¢LMxOP„QÇSSÏTsTÐU}U¸U²TïTRáQÌP•OsMþLaJkHQFnDÑC±BƒA¤@£@"?¹@@¿A™BSB@Aö@“?!<×:…7È4ò2`0&.^,¿*Á(I%B"<cþ—ô®ì S "S'pÌ¥¦Oÿôÿ³ÿ¸ÿá#%Iiy * 0 T׉´·  ÖŽCýeƒ"©%Ê) ,A.ù1·4Ì8G<?YB CÓE‚F˜G»H®I´J´K’L¶N2OÏQ;F8ó6í4ù2Ø0-)©&s#A HÞö²Y â <,%ôA<ÿùÿÁÿ^ÿ>ÿrÿÌÿæÿçÿû,n · è w íIiîç#4'I*è.„1Ä58 :ï=÷AKD¾H@K+MÊOšQRÅS¼T,T«U;UÚVçXAY¬ZØ[Ÿ\o\×].]']\æ\´]$]ô_i`ÏbAcªd¹e®f(f³fµfveýeÏe¡e`dìdicÇc'b“b2aŸ`á_¦^/\Ã[¯ZúZ;Y”XÈX,W¥WŒW¥WÛWûW­WDVBUQS«QëOlLÖIÚFÖDAg?5=>; 85B1³-É*?&’"χ¿=>H s BvÒ9ë;ÿÏÿ¹ÿñ  àT[ºfä#Y(_-E269:&=g@žC®FéJAM§PøTPW4Z \^$_)_Û_õ`G`£`úa›bcrd7d¢dÿe edþdòdûdÜeBfgTh™iÓjúk¼ljl§lÿlÍlGk‰kjÏj‰j>iÜitihÎhÅhŒhg(e÷dÍc÷c‚cb¨b&aàa»aøb_b·bòb”b `ì_÷^k\¾ZcWøU+RfOLÛJYHEÊC@ˆ=8Ù4¥0E,='ã# ùº * Öð±iÿþÿþÿöÿûÿõÿ÷&Ñ#a _kXk^#…'å-f2¾7ý=4A|EVH^K„N‘QÞUXZë]í`­c‚e|g5gÓh@h3huh¡hžhªh÷iVi¢iªi”iIihÍh¹hÇh›hÏiQjIk6l)mm¹nXn£onãndm¨m6lõl·l~l)kàk§kœkÀkµkqjµiËhêhLh gÇg¶gg£gòhªi‡j8jÈjjhðg÷frdÍb§`|^$[ðY¡W3T¯R6OØMÏKOH‰D›@M;t7 2. )#•nãX¯ P ©\áC%_Ï“Aÿõ0€,Ã)‚&Q%5$&‹(É-B1Í7=>BÝHUL¡PfSLV‰Y“\°_paòdEfôigkÊmJnƒnÝoEo@oYo n©n9n%n4n%mÞm{lõlulkËkªkXkfk¹lm/nnáoªpkpÝqYqCpÛp0oËo‹oGonÅnnŒn­nénþnänomÞmQlîl×lÅlæläm7m·nœoŸpqQqhqKpko¦nGlÎjãhýfõec`õ^Î\¡ZtX‰VBSôPzLŽG˜B¸=§8û3þ.f(Ç#nõ{Š ¢  ¸vÐ)ÿôÿ´:Þ73É0/w.Þ13D7›;ñAvG7LÍRUùYz\&_Gaüd}fvh_j+l]n3o¾pxqq=q¡q£q~pãp ouo.onÓnfmîm_lÑlTkÜk’k4k@k‚l*l®mqnVoTpKpûq¨qÃqšq%pîp¼pvp0oãoÁoºoåppFpMpo×oo\oWo]oŠo˜oìpeq9r$s sètDt‚ts‹rcq$o}mèl9jŠhìgheïdubÒa3_4][Z–W SCNtID+?8:4–.ñ)Ø%N!jCDsA ¹äŒ@ÅkØ?ElA >F:ö9Ô9G;j=”A¾EêKQQV[†_bodÜg¬iÓk¢lïnqoßq‰r­smsˆs¾sÁsõsÇsQrxq£pòp„p7o¿o.n£n mgl×lKl kËk÷lAlÐm1mÓn£oªp¯q‰rarµrÈr„rxrWrqÑq‚q_qRqˆqÐrrXrgrgrUrHrPrcr’r©ss{tCuuèv©ww`w!vÕuÞt½sJqýp¼ovnYmQlmkœj i’hfdLb*^„Z*T±O¢JoEd@:C4©/‡+&¼"p–µ Ñy×½¨OPKÑH¯E•DzC÷EÕG–K'NÜSÂXñ]Ùb8eXh]jol¨n!oWp5qqr†s’tt&sÞsÐs¢s€srHqZpoêoSnÔnGmÁmAlÉl=kÙkƒk†k˜køl`lßm/mªnPo8p%q qörsr©r‚rŒrurIqÿq¬q{q\q‘qærZr·rísss(s>sSszs“sätSuuºvavñw-wow@w vIu[t2s4rRqlp¯oõoron§n3m:ljWhðf=bë^)YsTSO•J˜E@?Æ:a5ƒ1,É'Ë"ÑF'åâ £ 2 "KY$UÿS#PYOUNáPnQ¼T¢WÑ\`‰d¸hk6mão’q3rrûsœtu/u’u`utœtIsÛser­q×pèpoYnŠmàmPlélplk¬k‰k~k½kýlYl³lÿm%mjmÒnˆoNp)qqqÐqžqqqYqpÐp«p–pÞqNqår_rµrøs+sqs¶sít*tftÑuSvv¹wUwÞxxAxwëwivÒv u\tªsésFr­rVrqþqëqypÔo¢nÎlçj’fÂbÌ^Y°TðPJØEQ@ ;y6ý1á,'w"š¿ ´ §åI`¯^([ËY‘X½XXYqZC\\^Îb,eƒhÂkÜn/pcqªrËsgt8tÌuqu”uxtìt‰sõsUr…qºpÍoÜnÐm¾l¥koj‹ièi¨iAi!i i]iÈjmkkllfl•lÈmm®n]o*p pˆp±pwpmpLp"oáooZo5oqoÙpopæqp—oÑon¸n†nšn¦n˜nunm¤ml¡lkOjXi%hCg¸gÜhhˆhßi2ifiÐjakSlVmwnƒokpBpûq½rvsDsætft±u,uKuGt§t3rÍpØnaljzhAdúaD\ÚXÙT†P-KE¶?Ù: 4‹/.*t%±qˆqnq&pñpÅp–p‹p‘pºp¼q q’ryst[tàu#u¬uöv/u½usáríq¥phnxlitgNeb_¢\„YV‘T¶SGS!RÀSmT4V WýZŸ]?`bÓe5gfhøjnk¢mn]oÏpàq½rr‰r’r’rqpÊpo“o?nõnŽmãm3l5k'iñhàg¥fUd·bÈa2_ÿ_§_]__ž_ù`Kab ckd¯f-g¹idkl¨n'oypêrrôs‰tNt°tït¨t“s¸rppšo"mukïif‚b¸_P[–WúS‡N¡I Cˆ>694u/œs+sisss{sasBs"ssrÑrÖs/sÜtztðu5uUuÄu×u¬tÎsÜrq`oÑn9kÏhýeÔc-`r]oZ#V³SœPŠN¯M7M LMGN4PdR¥U¨Xš[Ð_#b&dúghôjnl"m´o^pq‚qèrkrƒr•r0q°píp6oŒonxm¦lhk7i§hf#dYb‡`Ä^â\®ZÊY/XeW´W”WIWqWˆXiY˜[m]^ú`åceogÉiþkøno»q4r7sftt®t»tôt‘sñr¾qžpGoOm–k?heTbC_n[¨WNR LáGÅBý>b9gssas•s½s¹s·ss†s]s rüsRsÚt&tCtetftžtIsžr8pâo-m¢kžiŽf³cv_ø\ôZVÛSœPBMUJfH£G7G F”G^HpJËM Pjl€n²pDqõssötFt§t€tWsŸrÆqžpØom­k3hïfpdDa5]ŒXäTKO¬K~GIB‰r¤s/sœsüt$tTt=ts¯s1rôs"sls]s's%ss rTq=oRmˆkRi7f£d `¾]YMVSOôLêI¿FôDBR@í@Þ@“ABËE6G€J£MÍQ­UÊYò]Úa+dZgjl†opÖrOrçs›sµsÈs^sr;qdp1o5<{;);3;<=]?§A¿D¼GÌKØP*TÚYR]pasehÎlopqÇsÏt¨uu¡u²uç???Å@ÓBýE%HKN†RV"ZL^™bôf¾jQlïo…q@s ttÑu u|uuuEt›tsqýpan¹läkxisfñc‘`\ªYÍV¼Rþp+pêq¡rfrèsdsTsrhqêq¡qqŠqp‚pOoÈo%mokrhfe]aÌ^PZ£WSGNøKG¯E.B¬@K=:î8(6i55$4ñ5í79i;†>ŽA‰E¹JKO°TþZ#_ cvgøkôp.s5uÐvçxxx1w´wav~uˆsárkoåmie`'[u©vÈ:5Î3“1ô1j0H/6.-K,³,Ž,t,q,/,,',ˆ,¥-R-Ü0 2®7w<^BÏI2PcW·^÷f[l?q¼tÕw¢x‰yy‹yãyšyVxvßtJq•m`iic]*U#LîDÔ=6Ó0ô,è(¦&.#ò#j# #|#¦$$B$×%(&©(Ž,A05F:V@GN1Ul[½a’e¿iÖl­oÍq±ss­tÃu9uGt±tMs­s9r4pànðlîk ibhÜ8±490e.ê-Ë-¬,ø,^+Ê+‰+f+„+¤+°+‹+\+V+b+#+V+~-(/3&7p=ªC÷KeRâZmbhcnor'uƒvÑx'x]xØx„x)vÓu~sp¨m i°d^ÃW%O@G?08·2§.w*"'–%:$y#Ø$#÷$$'$g$`%K&y)],x15s;1AMHlO¿V’\õaÎfniÓm§p"r rÂsátFtmsús›srÖrpåomkSiÒhÕgãg/fOm¯mênn&mÔmllÕlkÒllˆlˆlxmlîliÞf¶aTQqXM]Ébäf¾knpoqer¨ssXrÿr£r2r;qÉpÉo mIk®jai’h¿h.g„n?n-nmþm‘lîl:kŒknkÄlTlllkm-lçl)hÚe*_X¿QRJ!C;ä5Ù/º,")a)((é(ó))")7)I)])„))t)C)=)(˜(I'ò(ß)Ï-0õ73=wEL¦T\cpj8n¥r™t)u«uÒv7uéu­tÁsËrprmík¼g¹c\NULMEé>ê7ù2}-)¾'&3%V%/$¾$|$B$7$$@$\%À'*ç-þ27w=æD®KìSY ^ b÷g½k#noqqšr qËqqqqKq#pcnÞmNkÝj¼ji_hðhwnÙnƒn;mùmyl¢kçkgk–ll»lôlømÏmKlh!cà]HVsN½Gb@^93/-f*g(D(d(B(¨(¿(Ç(Ë(Ì(Ñ(Ý(ø(ý(è(»(®(z'í'ž'W(V)I,•0~6²<ÓD KaRëZžayhPlåpærlsÐsêtYtLtVsÝsVr4q2o[mÓjafA_ÜYNQÐJ˜C‡ËFMWS÷Z_dDh#k¹m¦o‚ppÃpžpFoîpQpkoén—m)kÔjÜjbiÚi›iYo;n°nMnm’l£kùkÍlUlómŒmæmÖnom_k—gb=[UT'LfE>h7_1ø,Ø*(ß)3)E)™)‹)S)))(þ))).),)")+)&(Ï(Ý)*r+Ñ/;3.8ú>˜E$KÄRœY~_¦eéj2mëoVp‰p¨q+q}qér r"q¿qypeo£lßi\cz]tVyOêI@BP;Í50J,[*ª(õ( &ñ%ý%$a#È#‡# #O#¹%u' *„.3ˆ9g@ GðOUª[<`úeai°l5nso0p po½oooÞpoÉnªmRlk'jÎjajEj)otn·n=mómŒl…kãkùlÅmmmònlnInmj²eœ`gY6Q·IâB<'5\0r+ù*8(õ)b)–)ç)Ê)ƒ)d)b)])r))·)Î)ë**D*2*—+,Ì.n1·5g:†?fE,KDQ™WÃ]5bÒfÂjAk­lÉlîmrmýn°o_ppZpÉp‡p¬n½kóf¡a%ZºTöNçHxAÙ:Ã5D0É.“,^+)i'þ&‘%t$Z#¢"Ó"Ÿ"]#7$&¦)e.{3û;HB·JKQtWª]íbãgòk m nroyo’ouoBoÀpoðnÿm¿lk¹kwkkk o'nRmÝm¤mXlSkÀlmmœmònxn mík™h¹c>]¥VJN«Fé?—9o3.»*û)¾(·))K)›)‚)O)T)r)s))¾**V*Ä+I,,y-t.ž0º2É5ô9T=§A½F¬L(QÂVï[@_µbäeÞgJh`h¶iMjklImxnmo`o¹poqmxhæd ^$/#6"Ô"@"‹"Â$¯&³+C0Z7œ?FßN]U[ÐaXg$jÙmÐn»oäppoÿpqp´p°oæn¼mƒlÁl{llln»mÐm^m2løkðkgkèlþm”mÃnRm¿miùf‡`¡Z™SKUCª«:6\2%.Ÿ+C)&û&%!$Ý$_$=#ô$‡$¸'U*Ô1U8@-GúO±W?^4eÙkXo»qCrÚrýsAss*s&sPrñrp×po«oo o1lÚl&l"lEl~llm+n>n‡mânlPiªdG^éW¾PiH|@¸9™2>,ê(&!$£$ú% %‰%Ü&"&X&y&¥&»&&¹&î'â(®*Ü-ª14ó8ç=WAØEßIuMGPŸSÓVSYZ¬[¯[­[Þ[ò\\…\á]ó_&a_cÕfèj lÉopq&J%k%>$à$Ï$“$ø$á' *0-6Ÿ>®FnNDUà]ekprsÕsòt@sûsÕs¢s¿svr˜q„pÔp…pppPl½l%lSl—mlåm-ngoko¢n»nµl~i)c ]U MùEñ>7/¥*‰&#$µ#—$$T$Ý%?%%ß&&3&G&C&†&Á'Þ(å+£/3Ù8<ãBG(K¸O•SÇWYð[©]¯^X^m]„\Ê\9[Ú\ \\ò]ê`9bøf‚jl÷oRpKqhq6qoMmiˆfaõ^NYåUODIC&=Ë9F4~0€,|)Ì'^&W%f%B$÷$þ$Ý%/$ô&¸)9.å5=DéLþT¿\Bdªk3p·stÿuuUtît‹tt!sæsr q‡qQpôqqVmllêm.mvmïnnpo­p—pÊoÉo miobó\¿UMCE=5ú.)k%!#Ø"Ì#N#v#ï$K$¥%%>%]%x%“&&I'(Ü,05h:c?ÍE{JÚOÛTX‚[¥^<_W`åa `_]Í\Þ\I\b\<\Þ]t_ƒb8eáiƒlXn›o…p¬p˜p›n×l‹hÏeVaM]ŒYT)NnHB´=S8¯3ç/ê+Ø)&%|$ƒ$o$<$i$u$á$Ã&[(v-¬3‚;‘CsKÂS¤[YcøjÕpÈscuˆu|uÍuLtºt tsÑsrYqõqïq½qõrTnWmån1nmnßo oŽpÂq“qÅp¼p€mÓiîc3\ÊTòLæD•p9`50Š,Æ(Ó& #¿"ã"%"S"e"Ì###$þ&Œ+0o8`@9H¿PÐXÊa“hËo\r‹uuuvtêt2sts?s^]Ð^A^v_¿a‡dGgi¥kÜlæmðmmek+hBc_-ZIUÑPéKŽEÙ@6;6'1ü-¾*7&{#ù!È! † ä!.!Ä"/"¼"à$%%s)¤.Ä6–>RFÚNîVú_Ägmøqyt#t-t t sSr©r’rÃr‡r‡rás’t t³ugpÎp1p o³o–oyo¶pMp­pºoîo¾m€jzd‰^nVkNXEÕ=‡5÷.&(U"ê u—¤Rp^`c•ÍðuÉ!K"ê&«*ø1 7 =ˆCßIêOöU:Z¨^zaác_dödùd¬cŽb«aàa`Ó`›aa?bacâfh^jalEmmðm+ldi€fa\>VëQêL FõAQ;Ú7"2”.Ì*ê'¸$\" }ýjÍ €!!©!î#*$I(0- 4Ô/4ä;UA©GãNS³Yw]Éa¿cÔeéfbf©eúebd´d*cðc·cëcüdÙf#gýi¿k+lƒlúm¨l¥kWg±c”]ûX´SM¦HB*<µ7 3‡/w,(—%­"« ³sÔ1ó“ [ Ù"# &+]3:§CJÖR‰ZîbNi–m²p®p¿qpwoáooÂpQpipËq“r¼s´t¸u¶pzoÉo‚o n¶nQn5nXn‘n¾ngnxl­jYe_^W‚O¶GB>â7/>)!#ÜrHÒúÿãäV‡ uÔ!2$f(-‹2Ý9?JE°LQÜWá\«a)cífµgÒh·hdhgcgg fØfÙf¼gRhfiîkNl8mlýmllj.e¼`ÑZTíO"ITCœ=•8w3ç0–-6*j'k$Ö"9 U{¡ó%Qõ‚Wô!F"%z*'1Ç9sAÈIPP¶XÛ`.g‹kÓnån÷oEnœnmän(nÁnão_pLq£rÉsíuo÷oAnÿn‘n7mÃm‰mm­mìmÒnl—j§e³`0XbPµHM?ó8 0)Â#UÉ3p˜¡¹™Ž«EÔEŽ Í#¸',0ý6ý=6CßJ[PVÆ\adfgÈi_j±j”j^iÎi«i¢igiEii{j6kMlWlömrmm?k|id ^“WéQÍK²E}?’9d4†0S-ª*ï(Æ&^$3!ý D‡¡ð ‘ú¹O ™!L$’)-0À8`@–GêOW^keÛjDmim{m¼mlŒlgl®mJmomýop„qÏs t,nèn.môm–mFlÊl†lvl·mm9mÄl«k,f•aWY¥RIÅA€9Š1ˆ*ç$ 5n)m€‰±”„—è"¯$[ Š#*&*—.Ú4w:€AMGåN>TœZ_vcpg|i§kikƒkŠkkk$kjõjâk*k¤lbm6m¬n mlm&jÉg¾b(\@UUNìH¨BCu6‘/‘'ê"Çóö±Œ?9ìåúÞ~‘£ u"B$ð'U+W/õ6C<­CdI¥OƒU~[ae¥i’kMl»mmÄnioTppLphpëqJqšqp®n­lÂhbtZÃSQLE>?N93õ.¶+£)d(þ(q('U&B%C$#"ù!Í ¤œ%ÍAtì!%*[29¨AKHN¼VU]+c½gjŽjðk@jÚjökhkøl¥lÿm¤nÀpqqßr¢ihah5hgøgAfëg,h+i jk~kÕliXf_ÁY…Q”IqA'9X2_*¸%K ñfÔÖ|P>O(P˜” I!ñ$G&P)¹-˜3/9?E—KQfW)]db¡g~jSl²m§nÊo³qrr r°s0sOsgrZq\nikXe _WOfH@AŠ;Ò5Æ0ø,)„'Á'Ä'‰'f&á&%F$I#(!í ºÉÓv.·ú ¤"!&ƒ,4;•CIéPsWó^sd|gÍj‰jêk*jÖkk§lDlömhno4p_q:qÅrag,fÚfèggfrff}g¥h¨iÎkPkâlejIg‰aá\HT¬LªD>C³I)OUG[oa‰fGj¤mJoºqGs[tÀuëvvu/t‚rZp;kšfI^¾WOGa@‹9Ê4R.®*ç'Z&%p%ù& &%´%$#Þ"ó!î ÿ ]¶š„ 5 ‹"–$Ó* 0I8M?¨FÏMµTB[aafHh~j—jÖjÚjŠjákll¤m*månñoÒpKpip¸`?a;bocåeeeÝf¹hiGjŒkðl³mÂl·j÷fxb&[€T:KìD<Ò5j/|)Ã&J#3!ø ¨ 2’I÷߸Ýí¤ ©"C#Í%b&(+)ò-0•5R9ö?;DDJP9Vµ]bˆg©kEnÃqs†täv-v+v)tÜsÌpõnhˆb^ZcR…J°C-<¬601+(:%G$Ÿ$X%%K%B$÷$k$#¦"ü"4!{ ñ X 9 % á!3#e%ù+ˆ1û9úA‹CîIÆP*Vr\)a­f j¥mÝqr£t@tRtsrîqnjAd]`UUMdEÆ>~8c2G-(ž%Â#x#F#6#Ó$$#Ø#y#S#""!z! } i h!O!Ì$O'[-G3Û;ÅCJQXX_d h"i¡k3kLk4jùkyll3lDl­mDmín'mùmhmTìW¥Zm]š`ubôd´f]g¿ijjßl&mn¥n¼njógèbb\PT­M>EØ>ž8G1Ç-(´&\$"î!Ä!= ¢ ]   ©!w"»#ø%9&P'^(L)»+A-ç0½4Â8¡=¨BöIOQUn[[`ŠeÒiÞmÎp rHrœrïq(ozkLfÂ_ÕX¬PlH7@™9_3ˆ-‘)<$Ê"¯!L!¼!ö"x"¯"§"’"m"{"Y!õ!a å ‹   3!W"% (°/5Õ=´DýLSŒZ%`ÞeBhÙi÷k5k4kjïk‡l'lllrlòmSml~k|j¾MžQXUY+\ñ`Šc!e]fòhëj„kÔlÔn’o#ol½jfe˜`WYQR^KD=6À1e,v)h&m$Î# "E!a ö h R K ß!’"¡#ž$Ÿ%‘&o'-((ø*®,’/À2ú7}<A´G}M SžYA^÷cÁhŽk´nÏožpLnalŠgçbÜ[{TK¥CE;¯4Ž/)K%{!Ï ƒÍ z ½! !)!$!%!#!J!1 à 0ȪlÒ @!Ù#&¬+1Ð8Á@ƒGÙNëVJ\Šb¸fsi€jCk$kjÝjÊk]kÐkŽkkGkQkjhÖg0eÃFNKOãTîY–^>a¢dvfDh†j6k‡l’nloloôn_lÉhÄdc]ÿW…P]I‡BÞ;è5ò0J,p(Ñ&¶$€#G"!‚ Ð ¥ ‚ ù!“"…#f$9$ö%Œ&&¦''×(¤*Ï-[1y5ƒ:¼@ FL7RgX ^$c°g˜k}lÂmÃk·i¿d±_-WQOjFè>w70,+%"e¤ÌYq‚—£¦¨ÓÅ\é«äã Ä"ß$­(È-Ç4ü<C¾KQóY+_d²gÒjWj½kFk jèjâkkk¥k%jAj iwhf­dÃbo`C> CâIÕOßU|[?_’cl@müooánêmâj¨g6a¸\UJNçHaAŸ;d5;0”,Q)Ÿ&Ì%#c"„!Ž!8 â!-!™"h#4#í$|$Ú%B%˜%Ô&:&Z'Ÿ)e,Ø0G4÷9™?9DúKNQÃWß^b‘ghÑj$hf(`ô[GSDK7BÃ:q3u,à(L#…!÷ŸÀ ” ±§™­£FÊ[ Ä")$×'G+ñ1|8æ@G}N±UG\a_fpikk>kxkjêjËkjÄi¿hg etcw`¤]ÏZ«W™5­<šCÂJÜQƒXy]ÌbWdýgöiµk lmƒn”oŽon‡l iˆe`,ZT!MÊGZ@ó:W4á/ð, )='$Û#š"O!Ï!X!†!¸"L"ñ#‹$$*$>$@$b$œ$s% %ð(r+-/_3i8¡=èDFKQàX°]Ýbôdñf‹d…b]W3OG>¼6„/Ò)Œ%“!˜á¢®F%   ñÜßÙ„ˆÙëÖ!¡#c&ƒ)€.­4´¨GSPyWë^‹b”f¨hÓjèkÕlêmwnSnYnl¨khæeöao\ÏWNRLTF ?Ì9Ó50`-)Ì'“%3#â"Ë"ž"X"“"Ú#T#Ø$#ü##Y#*## "´#G$G&Æ):-0‰5Í;ÄBöJXP¨V¹Y‰[ÇZ4X°SÑN†G ? 7ñ0*!$ç"d o´—>ߺÑùåáÇe_!+"”$ô'c+™06w=OD¾K–QøXº^dcÖgAjnk•l¸l[kÇj²jYithbeb?]˜Y{TžO_IšCë>„9 y%r.²7ÄA JÉSZ¶_¸d‘gOj$k†lÒmMn'n=nlôl)j:hdc`b[aVÉQˆKèEâ?Ø:q5A1R-Ž*ä(&1$™$#[#b#z#ò$u$Ë$ò$§$4#µ#{#a"æ"ô#@$Ã&N).+Ï0R5vP»VŠ\×aìf®i_k×lzm4l–kÀjRi¨h fb]§WÿRÀLÚFž@69û4_.©ˆ?'¥0Û:ŸDÓMöVš\«bRe²i[kNlùmnen‹n{mºmMlj g®dB_¬[‡V´Q´KûF@":[5²1^.O+(ï&È%•$N$#ü$†$ä%*%s%Q$í$K#æ#‚"Ú"~"@"á#m%X',+4/×6}=’DaJõN–QtP¯P*LYHA?:\3.+ÿ&ë"Ê!C±iìèßñäàç <tjÄ D!¹#X%Ý'÷+k/34ö;+BnIP0VZ[£ateàiÚk¾m‚m¤mélûkßjif›cƒ^SYRwLE=Û6Ë0*A$XÀ¡!|*-3Î=ÇGHPW¼^-b`giÚlamfnnÜon„nSmol—jJgwcb_—[2VçQÞL„F·@È;˜6Ù3j0-Š*ù)('%&G%ö&y&¦&î'\''‚'&Õ&j%á%x%%F%4&_'–+!/G5…<&B¢HäLoODN´NjJçFÒ@I9š2³+ï':#[!â Pý“¥œ°¬Ï  t å!&""õ$â&â)æ,0Ó5z;ÖB}I”P]VV\`ÒeôiŒl´mào n«n\lÕk@hÀfÍc6^ÞX‘RnK6Cëœ;9,6.3ÿ2-1Ð1 2x3_4h55™6h6ò7>76Õ6|666 7©9Û=òBGKkM£OINkMÓJæGšBX<×6ú1E,ý)>'V%s$±#Ò##A#[#_#Ý$i%‘&·(ƒ*\,È.è25}:1>³DJJbPÏVë\?a}e¥iÕl»o’p÷rurKr oäm˜i£eû`œZÿS‚KÁBù:t1Â(• …7Ç ÿ4Àž ¤ñ!)„2ž;ÅDK]RÝYS` dÇhÐj¹l¹m¯nòo{oøo‹o*m«kÆiEg8dõbè_¶[ÁVØR3MÐIrEùB×@…=Ô;ï:.9ª9P: :ø<<´=(=æ>??>ç>„>>&>.?“A^D©HYLO¡QkR¶QÚQ;NKFÈAÆfãd¦a¹]“YiUPðMsJ'G­DýCQAåA›A?AÉB›C°DhDîEF FŽF¸F°FuF2FWF}G³I2KÓN¿Q°T‚UáVÜUòU+RŒO¢K;F»Aå='9:5‚3+1 0.ç.y-ù.".=/<0Œ2x467Ú:@<£@CÐH‡M+RFW\—aSeQi¢l­o pJqár~ser4pGlh bo\ÊULÞCh:E1<(ôÜÜ jöϹ½r ¿ê¼ ä(à0Ý8û@²H>P‚W¦^.bif:hŸk·m°oDoko’nÍnlÖk‘j(i0gŸeªb_4[kWÛT¤QsNãL*JI…IITIÄJhKVLL´MKM¸N/NpN‘NšNœNïOCPaQ½SáV7XwZ«[¥\V[XZ`WËTúQM"HýD×A:=°;Q9=8>76«6)6^6—7«9:Ï<)=Ä?|AæDKG£K6O•SòX] aGO"W\Âa˜d¾hºk¡n^oKo°nên‡måmVlˆkÄjˆiVgHdçaÙ^ß[áXöVfS—QÚPP¤P“Q(Q¼RŠS:SõTÆUV.VVÍVìWW„WäXÖZ[¯]y_`¦a-a`f_B\ÕZGVêS©PLmIEŸCÛ>R=Ñ>>o?…@ÅB`C˜E5GI¢LOJRÙVëZØ^¢bSe·i_l6nÙppÆp¦qppòoölqh‡b]VVN(D~:Æ1&'ïêž[ «B°Ïñt?1/} «>pd%Ë,¬41<.DkLèSÑY¨]¿bhf#j/lYm—m3m lßmml–kœjÖiƒh eêc±a:^å\ªZ$X]VóVÊVÆW{XXÈYZZ[\]]Œ]è^^i^Ý_A``ñb3c‚d–e©eÞeådÌc§a“_x\ÄZ'W$SèP¸M–KDI?HFÊF2E²E÷F8G'H)IžJÙLšNžQ(SoV9Yj\Ö_÷b×eÃhqkxmoo%o_nÎnámGjñf>a¤[JU=MBDt:™1(ZÀ¦k fóÍ‚{zo£œ l?© g €ðït"È*1h9{B4J"Q$VZ[_Ñe h³khkÝlkÂl‡mRm´mMlÈkºjÚihfPdbÊ`è_w^]µ]„^ ^»_‹``Ía¾bßcüdÜe‡eúfˆggh3hßi‡j+j”kjþj¼i¥hf¹dúbÎ`¸^3[wXŽUšS;Q"OçNœN M|M—MœNZOBPÐR=T,VKX­ZÌ]_ b2dzf®i>k|m·n­o nbn]mhlli[e³`ZõT LøCù:j0­'¡Íºe =‚=ÐðK„ˆvàÐÇpM£ œÅ* Ì'+.6h>ZEôL2Q×Vœ\S`õe'ghhiKjœk×l5lkCjÇjiUhNg/f dõd"cDbäb›bòcud5d°e4eÎfšgh]ii£j9j¹k?k¦llAlvllÕlÀlzk§jÖihofäeachaH^×\KZX#VòUÏUJT°TšThUUâW€YZâ\Ê^«`Yaîc£eQfÚhsj‰lm1lûl…k@j¸hëf†b]˜W“QôJ¡B–9P0 'od°ƒ 0^Ü}œtAsפPžSˆFª# X qe#Û*¾2b:pAÙHrMÍSnXN] a:cÐdÚfIg•i[j§k}k}k…k6kj±j(i‹hÿh²h‡hŒhihph™hðiAi‘iÌjjmjäk^kÝlYlÅm5m|m®m¼mÎmän(n5nm„ml|kñkj2hÊg?eMcBaf_½^¦]š]\T\([û\Ÿ]_`mañctd¹eÊfµgÃhäjk)lal§lnk*j:h|fùcÃ_ÑZGU]O*Hº@Ž7±.†%ü²‚¨ _.Ê…ûˆ :¥ë‹ÿî*‹vs„Z{Y®8 ; ý ¾'a.´6A=zC|HåM}RæWs[Œ]ÿ` a`cRe f©g„hhhjhƒhxhKhh)h¤i2ioiaiRi@i]iai7hÞh|h=h*hEhTh[hUhCh%h*hIh¥iii©iÂj j[j»jÍjÈj'iah'fèe±dcÑcbxaÛaºa°bRcdDeTfJg7gÑh9h†i iœjQjjyirh:fLdãbb_uZÚVP;K7Dê=¯5),’$­†°r wrˆQ¼§S=ÍÆUÿïÿþ?`MÿÖÿÓq¼uìnÔ þ–|7#9*I29?C³H…LùRVY‚[w]^^Å`›b'c|dMe&eœf f8fBfgRh;héi*iPi ih¸hBgwf’eºed©d%cŒbÐb"ava@a5a°b+bãcidAeTf¸h,i\jljÁjãjuji™i$h¶hGgøg£g”ggêhYhúišjj†j§j²j‘j²jniýh¿gUeicèa±_q[†VâQ$LF‹A/:C2)l!¤alœ '"Ÿ!ê»ÿà6ºÒ, ÿïÿöCgÿìÿ˜ÿ×°QLÈÎØ åÇ#¼&¡-ë4v9r=ªA_F,JÙOXRBT`UiVûX}Z[h\]R^^¤__‡`ZaIb bžcbþbábCa¦`¤_‚^U]j\ˆ[Z^XøW±V~V UÉVNV¿W¹X“Z"[ù^``Ðcef^gogÖh]h„h›hhqhfh`hjhihŽhËi$i‰i¸iÌiwihdgæf¨dýb”`C]ã\1Y‘V8Q'KºEñAD<67.á&º3~Œ t*ƒ³kÿéÿâM¾Ÿ?Jÿçÿ­Hÿõÿzÿ9ÿ|¼šcçQ $’Îí!À(Ë.é37:è?CíGþK&L‘M×NžOÑQ5R¢TURVlW~XcYdZZ™ZÔ[M[k[cZ½Z XÜW–VMU\TcS>Q´OéN9L¨KùK†LLeMŽN PÃSCVYÚ\÷_çb d eJfªg]gßgæhhhgógÑgñhRhÜili|i_hdgSe‡cÕa„^þ\.YÁW TwP‰K¸E÷@È;¹7;1¨*Æ#ŸÏ Ö ’.¸åôe ÿàxªWÿõ[ÿÿÿ¦ÿËÿàÿhÿGÿ½mxÆùé » qv—t¤$)„-D0d3Y7™;×?·AâCDCˆD-EF^GõIkJæL~MÑOO­OâO´OöPOîO@NrM4KäJ°IæIH F„DÁCA|@Á@>@²ABBCgEÈH•LGOéS_V¢Y.[¯]k_;`,`Ø`ìa/aMa]aza—bbßc³dxd_db†`È^[‚X–UÇRòP}MPI©DÉ?€:B61ë-<', N–Ä 5 êe¬am #u’pÿâT!ÿÍÿ¬ÿà ÿ ÿ3ÿIÿÂ'cÿäC°më XTˆB(#!&Ï)],{/½3†6†8à9Ä:e:²;e<š=Û?AeC5EFFvF EêEeDÙCÝBÑAy@>Æ=ý=D<>:Ð937®6@55)5§6 7]8˜;!>&BEåI}LÛO‹RBT;VÿÌÿ¢ÿè(ÿûÿ¤ÿ_ÿ‹:Åc)˜ÁN¸ _ G Ž ð#D%,'÷*ã-Ó/£0·0Ø1/1È2˜45–7s9…:è;Õ;š;d:u9”8G6ú5w3Ð2r1†0Ä/º.m,þ+·**)¨*1*£+ø-9/¶2ª6o:=v@¤C7EÙGÎI¿JÚKªLL¡M†N P#QÉS=T¡UUMTGS4QN¨KÊIVF|C˜?¬;=6>1O-.)ø&ô#§ Ï Vå/” <<~e,Q—´^ ANÿüAUÿ®ÿ¿+ÿ–ÿSÿÆVh ÿJÿ_~wî+¨\ Rì±§~÷Ž@!¯#ý%Ù&Æ't'Ç(F)&**+ª-k.ú0N0·1 0]/œ.,|*Œ(Š&Ø%–$“#N!Ü Eè™»MÅ. #$&)×-n0Ø46Ú9«;Ø=ó?L@mACBCCŠEFžHEItJ…JªJ¸IÎHóG&ECB†@ƒÓM‹!è%8(l+A.%0s2§4$5v6{7°8ü:d;¯<ë=¸>€>³>æ>f=ý<“;8E5h13,n'„# ÜzTÊ cë\PÈ=ÒËÀ2½– ¢}­ÛŸE-y XÿéfŒbÿòÿ¡ÿÐ!%ÿïÿ•ÿÿóY6ÿ»ÿ#ÿ/ÿõ¼Åv ^ ÞT~­wÖ·€6÷›8§>S@S5š§zW — K  Ž  ^ l X c£$n Ûô Æ#²&(g)å+(+ò,å-Û.ã/ò0û1ö33Ï4…4O4 2u0‹- )R$Ð 0>»— ¨ ç"ºA €òÞAV†£DóÚïÓp#0u§ŸXF™¥<ÿ¾ÿ‘ÿÁDÿîÿŒÿ’ÿë\wÿ÷ÿrÿUÿôÛÞ—_[]äú º ¤èž $  — à,ê’³¯xƒxbç>O o £ ø Z ® àí ;Êed2¶a % ! Ü…EäWì+ k!^!Å"L"í#¦$°%È'( )Á*É*’*J(<%Ë!ù2 µ ¹`מfOs—Lû¦µLñÆþ2œE2fª¬^8$/~§rÿ•ÿ€ÿÚ7"ÿÒÿŒÿ— r`ÿêÿPÿ-ÿ´|óÇÿŠÿ¸ù±™ HÅÑÉØ2|f 1 S Qä• ©tá_ Řk0á„-âŽg*xê(‚b 2 * Ø„x!oÜ©ªž·š ^ÊàJí±ê™ È ã «ªûÌ+·ÿüÿ¡ÿé³e©rú$a]ôwC]޵qoS=,Rw„Lÿ×ÿ†ÿ›ÿñ/,ÿ×ÿ’ÿ±‡•ÿŽÿ[ÿÅœ, =ÿ5þìÿ—ý7žFcÇØIUR9a«je¬îBÕt[F`z¢ÊÛᾄV3k¸n)%&K è  " Ç 9 ¡#-{(Ù.j½ø2]X! 5 ’ vY+æÇtŠŒéÿ²ÿú«f™ZýAˆ‹7Âi^‡‰vmƒaWBJ^ƒrÿ¾ÿžÿÌNÿÐÿ©ÿÓAx ÿ–ÿ|ÿãq×…ÿþ˜þ&þ«ÿž• À=ÿ¼ÿ•ÿçEÄ(k»Ç¼^ñrÿÄÿ‚ÿrÿgÿ†ÿ¡ÿÛ&j¡xC&2C|¸ Q½@è,²%Œ´±Ý 3 Š q 2 8 2 ç ß Ü²©lo¢]ÿgÿƒ Ä÷Ÿÿ»ÿàvaR7€”Zé“ouŒmPUr”T`\XWooKÿÐÿÆÿû;J!ÿßÿ¿ÿæ9‡Cÿçÿ®ÿé’ Tÿhþíÿÿýþ¨ÊRó™aT6Ep¸û( ñÄ‘eC9'7]‘½Â«mdVTVfnŽÁB‚»y•<ïšJ´ÿöï£kSÖ(é` ÿè0ÙG2­ÿÕ“2öü@—`«„„~p@*J}”9M[bcqm^2ÿïÿÎÿì%@2ÿæÿìTw{Nÿä ‡á¿)ÿvþõÿ4ÿóë–màhÿ¨ÿÿ‡ÿ¸ÿé!Oiˆ‰|]C5'4S{œ¢•}ztfF"ÿýÿÖÿÂÿ·ÿ¾ÿºÿÉÿßL“ÔG|Àñ ={©â˜òñÿèÿpÿmÂ2=ÑY1–è ò8w€<÷»œŽrX55Z„Œ'<Rgmk[S; ÿíÿí"&!)o›ˆDÿüÿôF§Ñ‡ÿßÿiÿsÖl´w(¶d3ÿüÿý8_‰¢«œ‹‚•«¿ÌËļÁÇÍ¿žx^XT^dv”®»´¨—€‚›Æßþ)]¤¶²B…ÿëÿšÿó“<’]î{XŠÊüó×ÔüE€‘nJí‘^F@Vp~w8Q^bYMGYX.ÿÿÿæÿó-1% " 3`ˆŸ†IW·Ô„ÿ«ÿÆ,ÎRsXð \ 4Uz¢·Á´–¯ÂÔåëîèáØÞÍ›eHKSacaii]D/ÿôÿâÿãÿø<ZqSÿÇÿcÿcÿ»dO_À‰Š¸ÓáØÙõ(b|wM) ïÄV>?XhleHabYF8:S^Eÿõÿò /,!1BMFKušª†09—Ñ·[ÿå(—úõÊ”iex¢¾ÐááÜÇ©™œ´ÇÚíöýóáÌ̽Š[HZtŽ–Œ‚vooqxz…›®µª­ŽUÿ±ÿ—ÿž%öв³ÅÌ☱î)OaRF1!êÀŽaLFQXZX4KTZP=1:HSBÿïÿû":>0#.CIO]p•‘K K¢Îµ^ÿíj®ÏÛÄ©«ÍæöþôÝô²¿ËÕ××ÞÞÖÈÆ¹—xo{Š””„n_bkd`b{©ÌÜ·‰7ÿÒÿ’ÿtÿ¬ÿö]Åòç·¬·Ê×Ô¦¥Äü+ETJ?0*"Òr^PT\]U';T]S=+.P_8ÿö 5RC%+H]M?\vmI7|·²s ÿõ9€°ÃÈÈÚñ íØÊ¿ÀÈ˾¯«±¶¹¹¯¡•“•‰‡i_p‚sdg‡¾àè°aÿ±ÿ¨ÿ×5zš£”Ž›¿ÜÜŲ«­Æå(;A<2650ã°Ž{cY]\H)BWf\<*Jjb8ÿð @]U1'LWYemvhC&@…°¦g$4cœÓý&33'-*øàϼ»Ìׯ¨‘–¥¦•ބޔ~m{’ŽŽ¦Ä䨰]ÿÌÿ¬ÿÖiƒsdfˆ´Ñκž‘š »ã &-2)):4⹨`RB",BbnX>CVk_$ÿôÿïYvP3[y|nsur`6'Dz¤£€G#`®I^W995üá͵´ÈÚÓµ–…ˆ–š“„wruqx’¢”ƒ£¬¹ÙãÙŸU ÿÕÿÓÿì"Q`L5<j±ßݲ}yЬÝ--%,!üÜ»­Š\<" )GamaI;QaK"ÿþÿÿ-^_>"2YszzonhREHb„——xQ33uÚ<lpKG=#éÕ¹­²Àżª™“—ž›†pjnkpއ„–°ÂÄε‚A ÿùÿö2HE6.?b“Æ×È¡ƒsx„°ð# $+  óïéÚ´‚O(ÿø "8^jK&-GXN# 0U_C 3b‡†nccmsh]\k„ˆi<3N¡LdMM>&óàÆ³§«µ¾½±¢™£¥‹oiqqsw}Š¢¶À¯šn1 ;QWC.o¦ÅÓĵ£œ–}zÅ òï(:,ðåîéÉ’`8  .F>**5BE:("?YWD07_Œž“‚pnqib\cv‡cUXŒÞ*QNSC,øæÔȽº¹¸³§“ˆ”›‚gcpv~… ±Äĸ˜zY2%1IOE6&MŽ·ÆÓÌð—‡x‰­Üü # óêàѱ†Y9&ÿÿ+  ÿü(46-#%?QA**=TcZTeƒ£­ jbdmmkkov}|‘Âþ*<ME7îàÛØÒ𡕃{†{hfu€«»Ãɹž~kfadngC Ix ¶¿ÕÜÙ¿˜‚…ªÒðóð&øÚÏÎмZ5% ÿþ0ÿú ÿÿÿø'77&9SI1%-C[eeen†š¢”~kfnqtttsv~ˆ‡‘¬Öý>GJ4þåÙÕÑÁ®£šŒ„ˆŒ€sox†˜¨­¬ šŽxhfnqmiV1+Bd†¦ÇÛîèÙ¾£Ÿ­Ñôþïɬ¤¡•tB  ÿÿ'  2A5%0@E=1+-@\qqiju‰“Šxmlow~~tln{†—¨Ãá,CRB+æÑÉɾ±¨¡—’‘Š„~‚‘¡­¥Žshjegsyr]J9&&3N_tŠ©ØõüæÎ¼·ÄÎßò óШŒ|qeM0   !#2218AGE<2'4[„–|mp{}zuoijs{vnlu‚—§¾Ùû#;I:%ìÛÓ;­’‹‹Š‹‹Œ“¤²¸©‰nhtx|„qZH>579HXu—¼æõìÑÅÇÑÛÔÎ×èþû㲆cJ;# ÿû  !2- %,5<AHJF=-4U€¡¡m]^gtytg_fqsrpw…±Êäÿ 19*ýíäÝÓİ™Šƒ‡ŠŽŽ‘—¡°··§’ŒkXPNJE7;P|«ÏçãÒÁÆÒÙѺ¦§¶ÌÆ¡jI6$ÿûÿñÿþ&& î³ö@<l ¢Jü÷#H@×r ®|^He@ÑB†Î_)´(ˆàLâCæ˜( ® C ë Æ ¥ « ¾ Æ ´ } ?  × Í Ê æ & +   ÷ Ü æ U £ â   á — _ i “ ñ A ‘ ÎréQÞw?)ð‚Æ=l‹ ÁæA¾LÝ¿‡O'úäsÍ·q~Ó.ª   ÙDJ`³–T ºv<ÒMZaýUÌOûx«µâ<ž+Í]Æ N «  ¼ u g g Y # É m ) û û ø  < ] l S . ü Õ Á ­ ¹ Ø    & M ‰ Ä â ü Ô  ! ê ó  B P W a Š Á  ^ Ä 1 Í‹6¬ï:‰àOºIßk3ùj²²±Êxéê¸Ùט…•´äí&5 ãXyI,T`\N'Îg³%äýµðÞÀ¿Ãžªëvù† | ï u ¹ ` % ø è Þ È ™ ] )     % 8 : 1  Ò › m ` U x ° õ ( G c t ƒ ™ Ç é ø Ý Ã ‚ " Ù ¹ Ù  , 2 "   # @ [ ˜ × C Î J “ · Ü & ‰)ÆŒQ82ö“‘ ÏæöèGcCS‚ÒùÔ–}©ÖäL«óɧW%x™ìFÍ­X£g.Ö†eE ‘  Ì  8 Ö ‡ N : *  ÷ É ¤  S 3    + 0 6 )  ò Ä „ @ ÜÜä  _ ­ ì  = U p Š ¶  ´ x @ ü ¬ … € ± æ  (  é  ª ´ Ê  ` ¯ Û ä à A à A ã x1Ûˆ'›ޗ+{Þuùaê‹`Õåƒ6ùÚA.ä-7Íùh3ÐÒ×¢fX‘ÝíÞàç Û ü 3 µ 9 û ¾ ² ª ¾ à ä Ç | 1 ë ³ ” g e  ¼ ö  '   â º ˆ W 0 þíú 8 f š Ë ô  4 I Y z ‡ † Y $ Ø ƒ O 8 P i ƒ ’ ‹ g G .  " " E  à ø  û í ö . p Ô % ¢ @ ô zÂÏã‚gÀ=+IGA.Ws7÷¢yßQ œ„ædP!X‰^Dô€ ê }  ³ 1 ¸ [  ­ o G j § ð 1  Ê <  h  Þï  j ª Ã Æ £ Š i J ( çÔÏÆÆÈÐÓÞò " 2 8 C \ y › Š Q àÍãý  - - %      ! C w º ÿ # .  ò ð  G ¦ + ˆ  ‰ gD£L £ªuÜyìF|æøØ'``“ I¬Æ†mÃüX€"ì¢h¨^ : ‹ à   Œ {  ¢ Q /   ; u   ¡ ™ Y  ¥ a ? $ øèçôþþõçâãðå€G ΚiG"18AJa©Ù÷ÿöèÿ5î + N 6 èÛåèõ   1 L f ‡ ³ Ð à Î ² • u “ á Q ” Õ   Xáe¨®e;ð›+áQŸs1®sº[èf,qexhþÀš€ \ ‚ Ö ? * 8 $ º 7 ß Ñ ×  T o Y  » t ?  ã¿]&îÁ–†|Œ¹êèºFÕ\íšM"öêéóæäî:kš¿Öò _Ôq‚ʱ„D&&4W†ªÅÔô 4 z ´ Ä ¾ ¦ ‘ « î I ˆ « · Þ  ¬ [ j”»²h²cî˜-u¯½Œ¦ïae DEIQ _ Œ §  ° › o ` i [  Æ ³ Í â è Ý ´ z T X o ‰ YüK“ìd$éáÒá÷1AlQeÎHÖ¡zxmgdV07a–Äåù&tâŒDÝ_}{>ñÍê'¡‹×ö  + N n ’ š † m a … Ç  A d Š Ö % ½ | X´!#îàv ¸%¼‚ÀÀëÕfч# } ° û f É r E <  Ú ¬ ƒ J 6 R m a ³\&?…Âé}β“¸ùñ(D^y}fj;ÞVØ~60?g~~xY, ÿ>j‹š£§žÀûz ¤<Á¡yG.kºpYpOCY”ÔóðÖâ * œ ó ; º ç " p Û Q · õ 5 ޏu5ê•% Ž F ; Q 6 ø ® t … [ · ê d $ Ü Ê Ö Ü » n Κ‰Œv-ÈmA@J@ë€ÃïKê¸õA‚“d:ô¦b;Ú›iR8=Tq~sbG-$&<Vmy{‚…vñPÌQ±÷öè½’—üyF<øhV%ÿ‹§ñ  - V † Ç  [ q _ @ P ˜  t Á ô # \  9 Ùƒ"ƒ Ø  p s ƒ k M L N k # a Ž (    ò•%¶l;½_ôðÿÇN€¶k'è4õ ªOâq(úüò48*( ðÓ»ÆÐßðûúú,T}¶ø0\nƒ‡ˆ‚myƒûɬWf.ZX%‰¼³Âõ S © Ö Å ” ƒ ¨  ¯ ! T G A K a ¯  • ¾ ?   ï í ë ý ' 0 + À [.üòФ@Ã8ÈrÓµ­¥k|ÓNýóèäÉ¥…niY/óÁ˜dVc’µÙ å¿•pM$ÿðÿïÿí<GTs”ªµÃÆÄ¿¼ÄÅé$vÉû"­sñuúZ{hŒúæùñŸÞ )uÊ  9 5 ð  | þ F T f \ G D f • Œ ‚ | e @ 4 R | ¤ | *ŠÚQüÀR푉 ³]Q|œ… aÉb‚ß[©‘TÎLàŽyiƒÃÚý5iŒ•¤•wCæÃ¥[3ÿðÿìÿþ#6Np™Ââá´†QY‰ö`»#Ã#•emåvëø‰n”/¡ÒhË'…f@xø g ½  ú À ž ‰ ráïØÀ»ã  º4n·#¬bÇ›vPñ]¿D N?ßPгÛM¼Ùµ+›ÿªÿÿ® qÎ#+ûØ»œzY:" ÿÿÿöÿêÿÞÿ¼ÿÿNÿ<ÿRÿbÿ…ÿ¥ÿÚ_°áä°Oÿáÿžÿ‰ÿÂÿîFÂSÔTÿÃÿ‚ÿŠrè-vÒià +’Ðp› ‡¾<Ï ? † k ;ç£}{GZLJDO6=€Ó%·`LB=+ãdöÂà;Aþƒ54¯RÕÏ[ÆO<IÅSú•èùÜŸh.òÇ¡Ÿ©Éçü Ë_Þ}P02!.H‰Ø[WAätý¥u.-P»:Ït·ÿÞÿ>ÿMÿµtI>+Qߘ_÷Jo³f y¤îWêWsX#ìÕùjˆ…‰e9ᕃÂû;oÙüøË„0A‡¥…BÒ w«.6Kë}¨-lš`, óι§¾Ô"ˆ{ÅûúÚµ0u•ØVë¦DÿþÆð7S=ÀnñZÈ9ÿûLÉòSÿŽþñþ—þêÿƒ3‰Ž|•èv*t›šoµxíJp“O/] 4BBþ£'ËaëVªyNhÃï$YÎpìÿàó<Òhù_Ë=ý 5 p v n Ð ¿ g ÿ ´ ¯ Å  1 l ®ið›Jé<}bOê‹ÃÌ § Ÿ Æ  g ® p—d9@Qhƒ_*‹ÛÚÂÅÓƒ‡ñUFÒãÿ×ÿSÿg¡é×”`¬nTÑú!RµZŠÉ"ö]†x\7{ª´fy¨3º5ÜŽœË,V¯%ùì÷î¡)“(Ä U Ñ + ¯ R f ‘äD6btгÃ8¼^áVÓH¬"È^×õ¿ƒü¢œ]1!AQu¤ä Y © 5 È › Ž z J È D ]e ·}`ùé0g !û ÿéÿùXˆ&ÿýN­>Gì8bj~¸(³D@WÈ ;5ë¡L ÎzF!L‹^ínt¾r  œ é _ª¤Í\!¸â Æ…ÉÝÀµø f!'!ë"¬#U#Ó$W$°$î%(%˜%ð&*& %æ%z%$„$#4"@!М||w‘½ëùZ’·u‚ù-m. ¶ Ú ÍL?+p„þ¢¥¥e\hôy.aÕh²Ëì KkU82z÷‚ÞùüH‡«ŽFÿøùËÒ YCÞÛ G ¬³söEgU;ŒŠÞ³ Û"Î$}&'9(€)v*q*ñ+B+A+L+w+Å,G,Ð-T-Â..d.”.¤.¼/ /]/š/…/[.à.g-Â-=,o+v*'(Ï'x&<%3$"#K"‹!î!5 Ž ~èJÉ1 踪p'sz€ ¦ y ¨ 9 À ¼GNCÂÄ|É3ÿðÿÿ|^c104&õ|•Ç®" ÕgûB XúÐ#~ # Ç ß«?ma‹ !#|%e&&4&Y'(Æ*¢,«.a/Ì192Š45?6}7%7—7…7u7V7R7z7²7ù8.8Z88´8¶8É99h9Á9Ñ9À9P8Ý8:7Á6÷5ÿ4œ3&1ª0R/6.-9,y,+u+,+ +*ð*“*?)U(8&‹$×#!o º\ÕñåÖÓ]fv:  jŸ2Ð߀¨ýecÇ8+ΉcazizµÔ²“]‹(¬40„6 ] j ‚H‰V–¤fÏ">%(#+L-/;/Ö0R0þ244 5×7®9U:Ü={;Ú:o8þ7Ü6Ì65/4Å4’4Ê55-5^4Ù42g0—.Q,*(&m$¾#!ˆ­x4NŠåŸÜ r ÌéÅɦ۳`sMÿ÷ÿ¬ÿÿÉÿæ $P¯åÕE¶^ݺ¨pÏ Zï¨0ì"P%9'ð*¦-Œ0Ý3ì6½8ƒ9ö:¼;™<œ=à?l@ÝBnDE¸G{I!JÌKóMMIM.LŽLKËKÁL>LËM•NJNüO¹PEP­PéQ>Q…QÞQõQéQQ;P¼P]ON¾MJK³IÚHF~DéC“BEA/?é?!>•>º>÷?p?þ?û?Á>n<ñ:š8=5§3%0ó.Î-C,/*ù)@&¼$!IÕ5‘Ó ¨ ê#eΦ¢Bÿàÿ˜ÿ ÿÓEkw þ ï &Œ^®É / ×{ë‹ï#9&j)È-0 3 6E9‘=?áBrDEÎFßG×H¢I…JªKäM{O$PõRÄTjVW=XSX…XYWÄW\WfW£XnYCZG[?\\Þ]F]„]l]f]P]U]6\ø\‹\'[¸[hZÞZJY(WÒVTrRÞQiP&NæM´LIK7J`J-J JCJ—J™JtIkH=F1DA‰?<~9Ô7Å6U5*3Ä1.Ý+r( $­!±¶ðK Ù xk¨­m«Ž4ÿèÿjÿ:ÿjÿËÿäÿåÿÿ2¢ï‘ I ˜ O äPaÌBŒ"ï'C+4.û2O58Æ;þ?KBÍFI3K«NOÙQÔSSÏT TdUV W‚XÿZ˜\"]{^â_Õ`¼`ì`Ê`h`9`‚`ôaàbÑcÞdèe¬fjf˜fšf#e°e)dÆddcêcmbñb™bbb.ba``{_$]Ò\Ž[vZ‰YšX›WbVVU€UT¶T‘T‡TSTS'R9P¦O LæJËHHEuBì@ì?z>+E9Ä5•1,¡'Ý"ày͘õ Æ ê(Zô Î×&ÿíÿüÿúÿü&v#) a®ÏC ë#Õ'ö-?2[7¨=$AÔEéILTOˆS$VY®\9^³`âcee[g!gÎhgæhhjh¾i,išjj´k3kkÀkákºkwk*jëjúkk§l?m mÒn~o/oloonim…lÎl9k£k;jÆj©j¼kknkvk1jxiÄih…hg³gMf»fnfbfµg gVg gjg f ec¬b9`w^Ä\ÜZÜXÔVûUS%PöO LWIME@Ð;é72O-¤)$§À‘:Ž ¥ 8‚‡ús‘Ü¡Eÿõ0©-)*2'M&^%Ë'»)Î-ï27‚<ðB›HaM Q"T WsZ”]ð`ÎcWePgjiFkSlÑnnŒnânÒnônön×n¼nÅnîoo3o7onÒnomòm{mlþlþmsmõnÈo¢p|q\qÑr-qÖqIpboŸnýncn m­m´mänXn×oon©nDmÖmmFm lÜl„ljl‡lümumìnhnwngmµløk»j|hùgeód6bf`Ç_]9[Y=VÀT!P_LfGrBZ=*8u3ß.à*%…!œïka—" d ¦iø:½ Hÿ¿;85251B0¿2¯4²8<‚A­GL¹RCV¦Z_]`>b÷ežg¡ijðl–mëo+oîp¢pôq`quqxqp¥p0oüoðoÔo£omon©nmslâl`lIl@l¹m=n+o)p?qZrr½r­req£pópNo·oioo1oaoÕpWp±pàp¹p‰p?p oãoÁo¤ofoYotoàpRpÙqeq²qöqªq>pCoBmþlÜkŠj h…g>eód”bãa9_\ßYÕVÂRqM™HICˆ?:v5ç1#,±(¨$Ö °}DqØ ³ FyÞB¶XF^Bì?ö=< ;“=v?NBûF«K¸Q#V¯[ñ_óc{eðhÇjìlÔn!o’p±qãrŸs#sSs¬sïtLtKtssrÉr&qºqjqpŽponèn0mqlìlyltlqlîmwnwo‹pÈrrósÛt tsgrÊrqˆq5päpõqqr'r¸s's=s6srærÐr½r¬rr†r¯s sštt“tÝu7u(tütAsjrSqhppo\nMmdlzk‹jPigSec`¾]XÔS¥NÍJ(EÕAx<¦7Ð3M/ *Í&^!’ÍZAé dÃHþÄP.MJ`G¹FÏF^GðISLfO«TIY1^"bºf,iYknm§opSq*rWs8sðtt*tt>tdt{t-s³rér+qppËp;o¢on™nmhlÉl;kùk¾kÜkòlnlöménðp(q_rfsssÝts’s rWqÅqhq qq q€rrÊs\sŽss[sNsJsAs=s%s=sxsôt{töuSu~uÀu¼u­u+tsœrÛrq[p¡oóoLn¯mïm7l j¿hÜgKdžac\úX†TPLGÆC>a9Ç5˜16,S'" hº eaYçW+TÑRQÂQ[RŠSjUÓX¤\»`ïeikån¥pKqÞr¯s~ttñuxu«uiu3tþutôt½t)s‹r®qÒpçoüo-nhmÒmElÏl:kÑk‹kk_klkukÍl2lúmÑnêp q"rLràs2rÀr/qkpÔpzppp%pŸqBrr«r÷srçrús'sLss¤s÷tfuu´vGv»vèwwwv­vEužtút+ž%Ü ¶2š * %UaS_9]e[º[Zµ[a[½]c_bÐeùi(lIn©p×qûrñsWsõtftðu tÒt[t+tsÝsmrÒqêq"p$o mÈlykejtiùiioi5i=iii¹ièjjQj«kk¢lNmCnKobpq9q¦qNpÎpo‰o2nÐn½n»oošp4pÂqqpèqq?qwq¾qõrTrÉspt(tÍu\uœuÌu¶u¥uouKt÷t‘sïsAr‡qÖqRp×pp‚popLoØongm/jÖh5dæaß^¢[œWÞSN¼JwEëA.;°5þ/Ý)Ë#èøÓÇ …hˆgeÒd»d?cÎcöcßdÊf9h‹j¤læo^qKràs{sësôtWtˆt˜t8s¥sràr²rXq‘p¬oƒnŒmUkïjJh‡g eçe†eYe¼eðfcfìg—h5hÈiWiÐj+j¤k8lmn0oVpp°p—pNo´oKnënqn'mönnYnÃo5oxoyo]ono oÍpp%pnpÏqrr(râss÷tSt_tXt8t;t§G#l¿kük2j jFiÌi–iHi·j€kúmCnÜpÒr^sisšsÉs®sÞs¿s\ršqÕq.pæp{oÁnmo[ooðpppÚqqpàp¸pÀqqˆrr–rêsEsrèqëpÔnølìj¬ifçd\`¶\öX€T`OxJBD =Û7e1 +H%š ùp¾p‰pY>U>„?ÿATCE»HØL&P8TsX\M_xb«e†h‡k moopÐqÌr½ssLsrêrSqÁp£o}m±kçihf¯cž`Ý]úZïW«T5Q N@LVJ©I£HUGrF…FmFsG“H´JùMP¬SVžYÑ]a`e[ijl«o€qSsXt˜uËv/vnv=vbvumtosßrüqÀpn|l¥kh†e’a]jY:U§RMüpbpàqrPr³rÍrmrq¤q~q¦qÿrq½q p­po\mÕkøi\fìd-am^q[ŸXTTªP²LÊI^FDC«@Ô>U;«:8˜8¾9$:¸<>*@BýF3JuNæSyW¦[s_Rbôf¹iõmoOqoržsÊt2tštot^sµsq’p$mîk¿hªeLaj]ÖZVDR0MÈIßF8CóBA-?ó?G>”>·>õ@+A=C{FIœLÔPuTX8\¡aKfj m„oÊr8sÇubv vpvGvvRuØtût^svr_pño˜nlÆjÒh…eKaÙ^\[ˆXªU?oXoåp¬qrrJqôq†q(qqJq›qqp:oÒnømñkÚiƒfRc<_Ê\\XÓU€QßMÎI¯E¸Bƒ?®=^:´8E5©42Â2û3\4Ó689ó<Ú?ùDfIN[SOX\±a eŽi~mmp6r¾tuiuëv{vbv]utÌs&qol•hôe`J[ÐW!R€M HSC‚>ß;ñ9•8©7e6Ú656w6è8I9h;ª>GB E³J NKSX]`bÜg…kµn€qTstóuÅvEv*vvvov7uŠtétsrpèo§nšmk^hâfc@a^Ü\1n{ooÓpÀqTq‘qDpápžp¸q q^qKpêpoÇn³mKj”g·cé`"\WõSîP LGÊCÛ@;=‰;96ƒ451×0q/\/‚/¥0ª1–3E4Ø7x:$>LBÙHrMëSyXÑ]ðc@hlõps¨u=vØwlxx x wMv{tØsTpÖnUjzfUa[åVIPÒK)E?’:6}3v200§0/v/Ð0]1Â2Ì4Î7 :¡>MCG²MRvX5^„;S9375/2â0×.è-Ü- -,î-p-ð/&0?2`4r86q—pþpƒoÓnùmÀlŒkihfýf%emEm¤n[nùoKobo0nðnûo|p p@ppo©omàkŽgb—\áW€E`L‚S®Z¬`vf iûmâprIrõshssAsr|q°q pp.o¢nÍmŽlYki¦h‰g­gfFmmÍnDn‘nŸn„nGmÿnnµo_o™ozo¶oZo1mjTe8_úYSILïFÀ@î:Ž5Æ1Å0".Ê.p-‹,Á+ñ+x+)+"+*û*¶*Y* )Ð)V)q)’+;-0ü5;"ARHÜP”Xe`#f…l±p™t.u«w*wcwÝwXv¦us°qŒolOi.d+^¯WgOûH@*9Z2á.c*'›%3$g#¾$ $>$¬$Ê%7%£'(‰+Ÿ.è3ê8ð?WEúM'TKZ¹`úe°j:mpqXrdrarªreqóq5ppoÔodn‘mClj·ishg½g7fnnn;nJn&mÞm‘m;mfnnÖoo oŽoWo%lœi`c‹]VjOˆH¬AÜ;¦4ê0U,É+æ++7*à*›*W*9*-*7*J*3)ö)Œ)@(Ø(&'Å'^(R)Y,¥0D6F<7ø1[-F*N)þ)Ž)ï)ñ)ð)å)Ö)Ç)Â)Ó)Ï)¢)c)R)((®(S'á(˜)^,j/î5É;¡BöJeRJZEaOh6lÝq rät¹uu’u(t½s¨r¬qoŒmjðfíb][œTŸL¥D¹=[6%0š+''þ%-$c#ª#á#á$$$$$ƒ$Ì&b(Q,/¨4à:%@ºG£NÞV\a‘eŠi±lXn×oßpÞpÏp¶po…oo)onLmkÏj°i³ihthg¤oŸonÏnvnmhmlóm‡ncoFo»oÚp¬p;oqk¾gp`zYTQZIàBÈ;h50.Ç+;(Ö)) )•)½)º)®)”)„)„)–)){)a)ƒ)œ)c);(ó)¸*‰-‹16ËXå_ôfúkÐpqÅs}sÑt^t5tsmrÝqÉpÊnðm]iÞeÒ_TX‰PuH|@Â9 2â,¤(¾%O$A#`#£#¤#¶##^#)#?#%$%L(/+#/Â4U:‰A,H PV§\½aSf iUl”n8o¨oÌoöo|nînn­n§nlÙkŸj€i™ih§hth:pEoonšn%m[m m+nnåo²p?pNpîpn®jle¨^mVüNúG…@±9†3¾-ð*ÿ))})«*/*?* )Ñ) )ƒ)‘)ª)Ô)Ò**„+$+u+á,--g.µ1Ý5:È?šESK>QÜX¶_0e³j9noœqqmr r?r€r{rˆr/qípÔpm+iËc»]FUSMžEè>;7}0’+Î'”%ü$¶$Ð$ $€$#”#"ç"”##%ª'â+Ú/¶5q;§CJ¤Q´XG]~bÁf¨j±mnñoNo¿oenòn‰n½nÇnWm?ljÝji®iXiIi7p¿oÜo7n¢n"m=lïm>n8o o°pDp4pŠomEhck[üTOLGDÖ>F7a2,å*z(á)a)«*)**)â)«)‹)y) )Ò*-*[*ä+Á,Þ-´.™/W0Ñ2h5{9 =£A«FvK«Q¬WÖ]²c“g±k6l¨mÿnZnðodoûp“q:q¢rq×qêoåmHg¼a²ZRíKŽD<þ5‹0+()'['"&›&.%{$¡#½#"h"e">#m$Ó(+70†6]=æE‘M!T6Z_ßddi8l1noo»oo-nÕoo%nÚmæl³k”jÛj§jkjmjmp¤o³onrm÷mlÁm.n'nÏo$ožo@olÛjree_ïXoPµHÑAr;54Å0#+­)¾(_(È) )€)€)M)4)4)))`)®*K*µ+­- .Ê0>1¼357: =lAZD«HœM,RhWš\Xa dUgEh®iûjŽk;küløn-omp{qŠqãr¥q_oˆj­e5^W«PåIüBþ;|5s0!-j+*N))(H'H&>% $ #5"ê"`"ð#®&7(Ÿ-g2Ä:2AËI§QW~]Íbûh¡lIo!oÐp¦p~pWppBpLpoKn"mlalhA¨EGËKNøSTWpZì^O`¾cd‡eífçg×hýjrl7noŒpýqÅs ruqkmPhia½[ÔU‡O/Hc@å:]4€1.*,É*î)“(T'J&$í$#„"¼"Ï#$Ï&p*‘/\6—>FMÌTÏ[²a¦h5l ppåqïqØqÖqžqÀq¹q˜pÝo±nmîmÌm†mnmhoÏnìnVmÜmqlˆl9lÑm¾nmÙn lïkvgádS^‰XMP‹H¹A9·3è.5*Ä'•&œ%Ø&U&«'0'~'©'ß'ö'Ð'ó(W)c*++û.i1‹426õ9×<ô@CMF­IÅL\ORXUªXœZÊ\ß^e_óaIbªdeDfÞhÊk mSo3pâq¿sržrn‰j4cõ^LX3RBKÜDÏ>F840’.¦,/*p(ó'ö&´%»$à$a#­##$Ð%Ì)H-‡4y;žC½KvR×Z`¸hmqr+sjs`ssJsRs2sr{qPpo|oQnúnÔnÎo)namðmŽm7lfl&l×m®mÓm6m8kºiŸeBaZÀTL?Do=5­0!*ç(#%›%$®%<%›& &‹&Þ'5'b'O'|'Ý))Þ,/-3)6ˆ:=±AqEHLOQ‘S˜V/XdZA[^\m])]ã^Ú_øa•ce=gŸjcm=o•q·r¯sÆs;rÅoËlfG`»Z›TÖNÈHNAÿ;6Û2ð0“-²+ª)å(É'u&„%®%3$‘$\$ $¿%(+Ó2˜9A®IaPùX„_¢gˆm8q¥stŒt˜tÛt¬tŸtpt|sûrÒqpäp±pOp"pnânCnmÆmlîlËmnCn4mEmk;hŽc^˜WèPåIA69õ2ž-J(y&I$H$"#õ$‹$î%o%é&P&«&ã&ñ':'’(¼)³,`/÷4¸8Ð=ArEÅIèM¡Q­T½W3X­Zš[Ü\×]]a]x]^^¸`CaÀdf½iâm(oÕrEs2süsrŒoÒl‚ga‘[SU}O§I¼Cç=¡8“4\1®.¦,*w)'™&œ%¹%K$Ç$¡$N$Ì$á'n*í1|8A@XGþO­WM^©fÜlðqÀsouu0u‰uVu(tçut¿s¯ryqÝq·qfqLqTnãnjn_nEn3mÌmÌn¤o;omÏmsk-gáb\ŽU}N.FD>k7>/Ü*»&R$¼#K#‚#$$$“%%ª&&m&Ÿ&¿'''}(Å)ñ-176µ;“@“EÇJ¶OmS}WøZÿ]6]ø_A_¢_¯^ø^<]“]]=]™^ñ`&bˆeZhêloyr ròs¯rÖrho÷løgÕb\jV•PÒK9E°?’:X5Ö2Ë/™-Q+ )i'¥&z%m$÷$w$b$$‰${&½)á0#6´>ÔF‘NyV?]Ùf^lÑrsëu±uºvußu‚u!uUu7tJs6r¸r®ryr|r oŒo/oFoDoKoo%oøpkpnÂnEk¿haõ\TËMUEd={6H.Ò)·%g$"Ð#+#6#²$$%-%›%Ø%þ&%&¡&õ(U)³-)1p7;sÆttƒt8s÷t:tØu:u¹vYrqÙqâqÁq£q}q}qéqÕq4o°nÿl~ic]UtMÍE½=Æ6r.Ø)F$9" Ž µ V ` ^ › ç!@!|!«!Á""R#ž%(t,51”6ß<áBëH×N¡S¬Xô\©_Øa5bóbíb:`j^ß]«\¢\‰\°]‘^ _^acÑfÔiukºlclÀk™jæhteŒ`­[šU±P J—EJ@f;d6î2€.ï+}(î&O$v"™! ” b @   Ù!‚!»#~%*„0 8 ?ÛHHPQX>ahnLq1s‚sŸt5sòsarüsbsÿsçsãtau9uÓv„wVrr.rq¸qqq,qq1póp@næn]l3i?c ]ÌV:NµF¯>¶7?/’)¹$7!›­ª.4"Iv·ï  % g ’!¿#& )i._3?9?EBKQPÌVmZ¦^`bÌc6caÝ`Ú_ò___0``¬aécee‡gîiùkËl#l8jªi\fEbÝ]¥X,RLF™A6+F‚NjV<^Þe÷lgo’r r3r¾rsqõq·r8ròrùssÀtÄu‰vdw]rÌrarq q1pÇprpMoæo5nmÌkói^d^]VØOzG‚?…7ë0.* $A!@ ì\_C[l›ÖV‰ Ÿ!¿$w'€,$0²6k<^BÄINÛTÔYŠ]ô`—cNd+dŸcÐcbVaÀaÄaøb²c1d8e„gDi+j—kÊk¶k¦iëh)d``@ZwT•NGH5B«=18˜40,ó*5'ƒ%]#!DjdŽœ±LÀ /!ó#¬( -M5<¿E LÀTU\¼cÒjlm×ppp•qpÍpmpYpóqÀqÞrrât tõuõwr†rq›q!pžpoŒo(n²nmZmWkâi½dÄ__WûPÉHÛ@Þ9#1T+ $Ê!cæªï 6iª¿ M Q!K#²&c*¬.Ù4i:U@òGSMnS°XÛ]Å`þdHeªf¨f/e¬edµdäee eùf¼gÇi j˜ktlkmki fÃbH]jWPëJœDp>ó9z5*1.$+3(ð&¥$§"€ ®Î¹àèåtïí¯!#'9,e4 ;ßDK€R¼ZÚaÞh‹l nÃnâoXonÑnáoƒpNpspÂqœrÚsÕtÞuûrAq±q=pÈpEoªo nzmùmqløm2ljme×`·YcRFJSB[:…2™,%P!Àr¬³«ÚáöRrÊ  Ú"ñ%C).,ÿ2~8‡?uFL[RàX]þaÖe¨ggh»hphg…gbgšgÃhhkhñi‡jJkTkÓljþj0g§dÖ_æZœTM¼GgA$;®6>26.…, )´'Ù%à$" Bzr¨ª{|I!"\&>+I2ú:²BÈIúP÷Xå_îf¿j‡m>mVm½mlm;m^mýnÆnöoapZq´rÄsÒtìqˆpôp€po—nìn;m¥m;lÍllýlJkg b\[>TBLCDU;8ù3Í07-+))'£%ê$5"c Í?Rk#f½¬b! "K&+(2Ï:pBXIUP Wé^ãe¦iol(lCl¤lUl6lglým»mónropãqñråsâpçpNoÍo[nÈm÷m,llBkèkÞl€l0k„hcÓ\úV(N!F<>C6C/'‡"Ÿ,ê̪æöøj—[ í"{%N'ð,º2r9»@ŸGpNT+Zo_’dÏgÍj j?jzjDj€jôkfkÜl_l—l‰lSlšlrl-jnh”d¦`TZOTGM¸GKAA;)671j.\+¯*O(Ü'©&,$—"÷!“ Gr¨HÅÑçŠ!/"s&O+b2ú:}B-HôOŒW&]þdœhVk k:k¢kgknk¾lXmmQmàopcqfr=so¿o'n”nmnlnkŽkjéj´jâk·kÈk”h­e%^ÆXJPMHp@a8o1%)H#Ø£L¹x616 S¤uD³!#O%V).¤5¯<‰CƒJP3V\,beñhþiØj©jÑk`llëm¦nPn{ntnnmulÒjˆhcQ^WZPÖJACÍ>8 3•/>,½*—)­(ª'Ã&‡%!#À"!z ¬Ï<~—w !Ø#^'„,Î4e;ÐCGIíP\WË^^d”hj™jÛkHk$kQkÀlammTmáopRq4qÜršn¡mïm6l¤kàj©i®i(iKiEi»jÔkJk‡i/fM`iZERGJSB:.2Ó*À$Ú J‚5¥haC7NOr!#+&Ì+O1û8´?ÚFzL¾S+Y(_“dOhNjkllÚmÆoppÒpòqp¬p‰olnJkp´gXgœg›gÝg¬fÐfffÓg]heiØkl\k¾j¹fÉb[ÊT¿LžDØ=D5d.ä(·% !æ §e¦IÈ`“«[L½!"†#¬%â(€,ì1 7~=(C+I OU[£a•f-j‰mHoÊqbs~tÖvuæu®tOs_pÄnh‚b/ZRJUBã<\5¥0Z+ (%a$¾$G$¬$Ú$Í${#Ð#8"!Ú!C ° q + x Ê!ø"Ò%n(Z-õ4[<,CsJ`QW1^/cpg©iPkkIkß82 -( %]#&"ô"Ö#e#±#°#t"î"~" !Ÿ!I í Æ Ž ×!("_#:&)X/X5í=¸DñKàRÅY`dïh¿jkk®kzkk6k®kél lIl»m¢nVnen*nc^ _Îa:bûd+dÄeeÛfógôi0j‘kýmÝngnkÛhécW]¢VPOG^?»8Ø1ë,ê(Š&#a!á ‚è"Èo|lò½ ý"#G$;%›')’,Q0i4›9Ä>¹DwJPóW5\ÐbMfµk#n>qWrØt@sÿsÉqôpll™hQacYîQmIcB:Õ4È.)ð%]#!_!!""g"r"Y"!Ö!!e!3 ù ß « ö!H"›#š&´*x0Ê7p?FWM\TZäažfi’jžkþl kÄkFkxkØkÕkÈkÙl+lÈmlÖlGl+X_Z÷] _¬aŸc cúe'fsgÊiIjÆl^nŠožpHnUl gb#[XTzLåEg>B6ë17,>)$%´#“! ¸Äp › \!m"K#,$% %ø'›)G,J/™498¶>.CÓJ PIVM\.a?f^j66ü1*Ù&z"8 yaû A Á!!)!K!S!e!T!. ÷ Á ° … á!<"·#í'e+Ÿ2A8ô@‰GËNëVK\ªcgj$júl5l=kékhk¡k÷kÒk–k¡kÌlkëkTjqiúPúTƒWŸ[]÷`sb3cýe›gbi*jÞl–nßp7q@oæn/iüeÌ_ºY~RFK/D<°6ƒ1-%(þ&%#o" š ‹“  É!®"Q"ë#–$^%&&ù(ÿ+O/2ð7î<âBšHvNToYê_qdh¢k‹nCn½o?mVk…fàa²Z'R‹J>B!:¿3-¿'º#¹ Ð%Ûr²ö O — Ü Ù § ] * C K ô!Œ#_% (þ-¯4‚;8B¦IîQX_^odMg±jvk2lKlNkûkyk­k×kyjÙj“j0i¹hÃgfdùI^MâRVvZG]Ø`ubídågijùlÆop¢qñq$plŒi+cÑ^+WXPÍIèB£<5Þ1&,\(î%‰#€!† ¸óúç c!!ß"i"Ò#H#Ã$7$Í%0&J't*--Q1ç6J;˜AFÿM S Y^Nc¡g8j k‹lkjh c®^,V_NœFb>_750)*—$Ñ!P`ÄRÏÎüIÃ? ùýăf½ !"$<&h*Ó/ô6õ=»E LUSTZ`Ae–hvjékŽlŠlŠl;k¶käkÚk=j#ighRge3cOa6_Q@»FDKQ V ZÚ^†aìdafÿik!lÞopkqÀqTp™màkMfÒaî[ÃUùO¡HùB^;ä6j1-!)(&{#Ç"^! ç ’ í!w"6"¹##g#°#þ$[$œ%9% 'S)•-g15Ç:w@E¶KÞR&Wø]ØaøeÜghkekìl¯l‹l9kkœkiòh f|dbb_&\RYbV‡8">ÈEoLR4X[]axdYgRidkpmnàp*q„qq(o-mziöeä`b[CUlOuHüB?;ý61v,ü)Ç&f$W"€!ò![! ""¨##l#·#Ï#Æ#Ä#å$C$F%+&k)1, 014>9]>€D¡K5Q¾X<\Öabdc¾aô`ZóUM1Er=Å6p0M*%©!H…Uªn.^¬3«Sf5R³ë!%(*+†0ë6Ú>DÙK¹R²Xü_^cðh iúkÖl5l©lMkõkJkjhce¢cI`<\äXùU&QMMu/”6þ>½FiMœTúZÞ`JcÍgDikk¢mn±o¹pøq)qo“n‚käh»d_¢ZfUMOfIB‚<=7 2+.}*’'Ú%J$#"û###Ó$$|$’$V$$$b$n$ê%[&ù(å,5/r3Ú8=ÂD:K*RVõ[Z\Å^E\£ZóUèP"H\@Ø9 2½->'»$ ø£S™R5|¯€ë6aTŃ!6"ä%n'ª+Q/R53;{B–IOOÊVn\4beóinjälkl‹lškåkoj}iÐgèeXa‘^7Z!U¿PßLGxBÍ&ð/7Ê@iH·QEXG^Écgixk÷m]n³omp‹päpÞoãoRm„kLgŽcÈ_ZÊU€O¬IB…<ž743.¨+e(&#$a#õ#®$ $&$g$Ý%$Ù$_$#÷#ä$ #ä$ƒ%g'¬)ý-©1 6B]975%1.+)Z'É'X&å''_'¢'¯'H&³&%›%>$ $.#¼$$u&T(,\1‹8_?@DÿJ LxN¸MîMHI:D1=6@0*q&º#F!нN1"„· ›!a#$à'º*~.}2p8>TE}L^R™Xz]tbÕføjälÕngnen³mðmk7i÷g8cÞ^YRpKÛD§=<6!/^) #«<B#(+á5g?/H„QÈXõ_ucºhikBmºn°oâp1pppoÓo+nÆmyk¿hífKbÖ_wZýV+PuJ«E ?˜;4740Ù.™,^+W*“*±*Ç*û+*Ì*\)·);(´('p&Ý&×&›'Ä),Ä1k7Ç>-CŸHJÑM LqLHeC<¹60;*ë'$L"  Ì ufqVt³ F ×!".#A$v&¡(Ì,!/y4'8à>ýEŸL’SX®^bgPj«mÅnüpo†oCmÛlgiÔg¦c°_ X‰RCJñCl;“3½,­%å kÄcžþ%2.Ÿ8OBLT;[v`leäiylµn ooåpQp$oôo„ownÂm¬k‰itf˜cí`=\VW9QÐLFDAr=9ø6Â4Q1‘/ï.¼.¼.Ï/&/;.þ.¤. -Ð-L,z+Ÿ*ê*«*'*Ï+z.2ˆ8W>ECeGèIøKåK=JêG}Bðø93É.ó+¶(±&ì$ë#ß# "é"¡"¡""Î"ñ#Â$Õ&§(b*™,‰/p2¥7;;äAG7MaS¿Y¶_Xcíh¤lofq rÈrÔrôqroÑlŸi•dö`ZYÒRÌJ}B“:21L)!W8ì@ ª& E¤!%)W2®<–EÃMëTY['`„eóiWl4mXn¾oCo»oÁp oãoŸn“m`k—j góeþb¹^àYÑT¬O¼KG©D…BH?ª=Ï<;};K;¸;è;Þ;;1;B;.:¨9ê9U9 8‘8é97;H>B6F˜JKMbNON®NRKˆG®Aÿ<…7ƒ2ñ/×,ù+6))'ø'&È&b&S&+&~&Å'ò)}+¹- /ï25T9>BÿH¬N^T2Z _^d›hËmoÂrKs]t­tvt0q÷o‚kAgKaŒ[ŽSµK›Bš9ä1&'éíÉ‚ Ç ¾ù# 6a·ß!ï*b3n9Õ6Û42\0Q/. -¯-(- ,Ó-J-Ô/O13U57!9U<È@¥E“J[O€T¥Y¹^Çcdh'kÙoJqAs$sÏtçtTsfp4lçgªb«[ËT†K½B÷9Ï0½(9u~Q K$e ûNƒr!ô*2Ì;0C JÀQÈYe_Zd‚gxj~l@nHoMpp p oŠo n0mPlNkÍjohea~]fY‡V.RóP•N9LÍKvJôJ{J…J¤JºJwJ#JJIíI½IIŽIeIåJLTN`QSòV4XXYX)WšU1QôMVHóDÙ@ú>;u9©7¤6_5T4æ494 3è4•5g78³:¬<$>/@‡D'H LÆQiVZ³_cag]k¨nÎq_rtttuSt2rbnj cü]üUïMYC—: 0Þ'‚W=` ÕûÃØÒ <„!3)19AA H‹P®Wœ]êbfh›k–m\nÓooFnênÀnRmÀmlôl:k h´eëb‰_z\£Y¼WZTðS‰R{RGQèQØQÒQÎQšQhQYQ`QMQUQmQ¿QëRšSuUVÎXñ[6]^•^õ_8^7]n[X7TDPLüItFCõB@>Ø=Á=<?@èB‹CàEíHRKÔOySªWÊ[Á_}b÷fªjm‹o×q}qös ss=qn>idB]‡VƒM•DM:n0ë($-ð BÆõ À Í  þuʹ'4/7^?JGÃO‘W\œaŠdÏh¡k5mnqnÞn…nŸn¤n—ngnfmümŽlj=g©eUbû` ^o\ZjYAY XÑXÝXÃX¤XfX]X”XöY&Y`Y§Z"Z“[^\C]†^Æ`;aßc5dpd¯d¾c·bØ`Û^‹[kXvUKQöNþLJJTHPFûE¶E D3DD DøEÒG/HyJ KšMËP>SžW4Zÿ^a¨dxg!j\m.oÅqqÒq³rhqØpämxi«c»^PVÍND­:Ù1''ÃŽÄ Õq·ðuB@P›Š Â]v!‚&=-™5g=kELMVSçYÂ]åbWeŸijól0lFl±mmŠmånmàmÃlókÙj$h‰fÎe,czay_é^¯^\^6^c^L^$]Ø]ä^R__r_Ú`G`ßa‡bbcEd5e eêggïhÙihíhg8eµdaÉ_‡\½YªV°TRPN¨MHL‚K«KŽK‘LOLþNCO”Q\SU2W}Zh]œ`ÃceÇgØiÐlmnpoãppEošoym¶kSf´b4[ÜU¯MwDo:v0ÿ(K™Sð Þp/—n}x˜q9­ t qâë#Ó+2ä:—BÙJ^QSVƒ[l_4c«fÖiqj[jûk>lBmQn0ncngmÉm7lNkjjYiNh,fíeÜdÜded d7d2d+cécödZe)eÓfgfhOiFjFkTll¦lðmcm¸n$nmÀlÝljïiÉhfZcïa7^^[ÄY±W§V>TÝTS4RýRÒSrT U‰WXêZ¡\Ÿ^¸ac±f hiškXlÝnªoŒoÕo#o mæl™iFe€_ôZùT8LúCÍ:0T'l¾£, è$æ”Í=…‰`‡åпrW’ ø­9/"1(¦/¡7!>¯F2LUQ·UãZ»^´bšdÅff«hi–k&kølMkëkÈkrk!jšiõiMhÌhkgõg¡gXgFgKgTggggŸh$hòi½j°k§l£m¼nxnìnöoo!oUoBnönRmÍmljkJjh0fc²ay_Ÿ]×\œ[oZ¹YÞYYHYØZ•\ ]†_0`¢bcÁerg%h™ißjêlHm$mÐmrl×k…jïhòf+ai\ÉVèQ€JZBI8ä/'1°† 8²Wƒe8nÑœÿÿAšJyA— k ‘zÓ %+–2Ø:ÇBHILóQ›U¢Zk^`Âb c¸e6g9hãj"j–k kkCkj¾jVj%jô8h0 (Q £b á¶,ò¾ÿâ6·Ì…'ÿëÿöEmÿ÷ÿ¦ÿÖ¼~ÔÛ? b ÊÂD‹õ&Ž,þ2[698‘BEªGRIJ”L©N¬P~Q¤R—S S£TTˆTÏU UUTéT¨TSŸRÉQëP¡O2M¥L:KIÓHàG¶G;FêGÑHíKMORU X-[ ]¥_mab)cQc÷dˆd¨dºd¯d·dòe>eÁfXfÛgLgZg~fêfFd‰b_·]ZKXULRsN-I*Cw>y9œ5 /k(¤!E,±/ ÿä²Ôžáí`ÿßx¦PÿíVÿùÿ¢ÿË ÿíÿuÿ`ÿçÅÑ– ( ¼Š‚Æ!Z%œ(¦+`.[2u6«:p<Ó>š?™AB¢D;EzFqGHH±IIIZI:HØHªHxHIGéG‚FÈF DíC»B_A?ß>³=½<•<;À<=¬?ÈAÈDGPJ‘MøQSïVX6Y¹[H\ \Ï\ê]]] ]O]¬^`_@``´`¹`È_Â^Ž\ YgV?S~PÞN¤KG Br<þ7Ô3ä/î+G%9>¹WÚ ‚í†R ûi $x’lÿáQÿÌÿ®ÿÉ$ÿ±ÿKÿdÿç`²Gª¯ u " ­5ç¨Ã!ê$b'M*Š.91r4*5Ã7H859I:$:â;®<Æ=Û>ð?Y?p>Ó>A=~<Þ<6;”:Æ9ê8Í7Ÿ6X53ø2î2$1&0È0Ž1{2•4¹6¿9‘<Ž@C‡F·I™KÕN1OôQ·R²SzS°SæT$TU:VWX&X¬YXˆXV®UR’PM0JÆGØD¾@e;`61f-|*E&2 «0Ö ‹ ‡Ì%þ¨ë•+ aµ… ÿîÿõ,*?ÿÑÿ©ÿï2 ÿ·ÿlÿŠ*³\H¯¾mÄ : %¦€9Q 7"å&)B+¼-­.r/0//Ý0y1U23Õ4³5F4Ú4;321 0/-í,­+`*(Ï'Î&æ&P%„%O%8&-'J)[+Q. 0÷4I7œ:–=G?mA½CEQFcGGG¶H'H´IpJ|K¸L»M–M¢M†LªKñJ“IGEB˜@J<Û8Ù3í.ã*Ž'H$r!LÑ` Û M+¹Li.qöZ H’²Xÿö7CÿùAYÿ´ÿÅ<%ÿ ÿJÿ£'>ÿùÿKÿboA²µäÜÓ u’IÛG±‚0 "Ì$Y%e%o%†%¡%ù&Ë'Ö(à)Ò*)õ)(?&÷%º$D"Ð!>Ÿ]BŽ©qYXx˜ª!$y'Æ+ -þ0º35”7¨9¡:ó<%<ô=Ö>²?­@›AŸB(BzB'AÍA@ª?É>Ü= ;88-4ã0”,'¥#Ê ¹òä |ŸO‰™‡)lH¼@R ´‰(ÿò2zSÿÞ-lPÿÈÿÊ%[ÿýÿ‡ÿpÿÂU‘ÿúÿrÿ} Ia6,ñ O·€Ïx¢WLE‹û´†ŽMðàÇHÜA”ñZÊéæ˜iI>3.æ°ÇÔ"°%a'Í*i, .·0,1…2t3„4]5<5È6O6h6c65ð5º5À5E4¼2ß0¿-)$¶ ° B]¯: <³ÊUꛩª-½• ~¬Ú£M*w¡Zÿæj’hÿ÷ÿ§ÿÝ01ÿîÿƒÿeÿáV7ÿµÿÿÿßèqWˆÚž¦  5 R – [ Û³@"ÅÑìãë%V´½L¾ÁÔ—> Ë o < ºyÆ [  tòÔ³{~ "d$—& 'U((Ï)M)Å**Z*—*Ü++r+ˆ+Ã+*'$Æ ÿ2Õøór . §,ÝÎ\ÓÊ1Müˆ¨D¾³àõ×w,6v¨£ZM¡«AÿÃÿœÿÎ$CÿÙÿoÿÿê^pÿêÿ]ÿ@ÿÕÙˆ?Ÿ(úÑ6Ų.;þ  : 4 º 0 (  ° 2 Ë š ² Ø ò ð ¨ e Í +Z‹¬ñ4áñ>Ec@ , ŒîQ†œåæÜJ¡Ãé+  Í!{"1"F"Z!*§éðåFYÍ Ê ä«CšVFH~£Qþ¨¸NîÂþ8¡L8i«­„]4%5‡®xÿŸÿŽÿê?ÿ¹ÿ|ÿ˜oXÿÞÿAÿ ÿ²xÜÿ¯ÿÿ/[úFÂ>š&/á§n/Eðƒžt[n’©™p#è›=Ý‚J  ­SÙƒ) ç 5 ¢)·âkù’E àŠ%v:J é ¦ 00ª`yÖ®¾ ÿ²ÿò²cªsö ^\õxE_³šolM<1Z~ŠRÿàÿ’ÿ­+ÿÊÿ“ÿ¶ƒ ÿ‡ÿdÿܹ@7ÿ%þ×ÿƒã [ÿiG‚ “á%((ë¢Dç±¢¶Þþ=P]XXEë$ndz“’–±å î Ü ] ¹ ã  †  ׈v‚t [ % þ + ñÇçųoztÕÿ®ÿõ VWù>†‡1½f]†Ž†qf~ZUGPdˆxÿÃÿ¨ÿÕ;ÿÍÿªÿÑ:ƒfÿŸÿžª³ÿºþÃþ]þâÿÄœøÿ{ÿBÿdÿÿ¯ÿÊÿáÿøÿÄÿŒÿcÿ[ÿQÿnÿ˜ÿÔ*[ƒµ¾§tL>4\‘ë3›°KÑ>çAŸˆé461ñ·Uâuòû¹4’Rÿvÿ™*ÜŸÿÃÿè{ ZP1|”Yç‘nt‰mPQlM^`\ZstNÿÒÿÆÿï&9ÿÜÿºÿÛ(q|Cÿùÿ̨ ]ÿxþüÿÿñß}›+ׂG-`ªÞõÜÁ”cGEXYcw™Å×ΨŽuSEF^hŠ¿=rœßB³ZŽwMóžUþö-ŽÒþޏ¼ÿóÿÞ9æZC¹ÿâ+§9ýB|•b ¯‰‰rD/L{”6N_feusc5ÿóÿÐÿã1*ÿáÿã Cj~c:™òÒ=ÿ‡ÿÿ4ÿÛÁ]rYæ†1ÿìÿÚÿÏÿù3sž¥©‘mPJVV^l„£³°œ—‡i@ÿæÿÙÿ×ÿàÿÜÿâÿîR‹·´¥k-ÿéÿ§ÿ„ÿ_ÿÿÂ+¢Çª,ÿ‹ÿBÿd Ê>KÜ`4›ï ò =xŽ‚CþÂ¥™{_>=_…Ž%<Ukqo_YCÿñÿèÿü !#v°§bV¹àÿäÿfÿZÿíŸ9ˆ[¶rH Aa}™ š‹‡”ž¤©³ºº¹ÂÅ­Žrbcemlt‹Ÿ­Ÿ…Z1 *8]§ÔÞÿ ÿlÿÌz,Ž_ô~WƒÀóìÓÏöA‘oO&ôÌžlRK_v‚|3L]f_SJ\\0ÿýÿßÿè'- -c•·ŸX!%fÁÖ‡ÿ›ÿ¨ ±:gYü¶x9)5bƒ¶º¶§œžªº¾ÂÐßêèâÒ̵…[HQ\ijekgX:ÿìÿìÿò 'Gfw–|-ÿÆÿ_ÿ^ÿ¡=áB^ɺÓâÛÜö&_|yP.ôÌ—bJI`osmAY`\M=;T_Bÿëÿç**#4GFSˆ¯µ†3AšÓ¶PÿðÿÓ’ü'Ù£wu¾ÛäêÞϽ¬«¶ÈÍÒäöþéǸ£tPCXs™…td]Var¬ÆáèîÍ£Tÿçÿ«ÿ¤ÿþqÖïÔ¸¾ÐÕÊ­¥¿ø.PaTH2 íÃ’gTKU^a^2JV_U?1=OV@ ÿçÿó=C-%CNYrˆ¤•RO£È£DÿîÿÙc²ÛëÓ¹®Áæ  úèÕÄÁÇÐÏËÊÐÞãÛÆº¨ˆrm|Œ–˜†kSNRFIXƒºè܇+ÿçÿ®ÿÄa±ÒÒ¶®¶ËÚÓ¾§ªÇù%?PH<*!Ó›sbSU_d[,@Y`S=2:Zb5ÿî:\D0RkeZp€xW&8r ’MÿØÿù5ˆ¾ÒÙÙð   üæØÒÍËȾ¬¡¢®¸º³¦š”–š™‘Œ}_KUdSHOv­ÖñÉ~ÿÌÿ½ÿÙ&o–•ƒ›¾Ôש£ÀÛ÷ 4<5(*+-ã¬~cW^`K)F]i]A3Oi_5ÿýÿè FYH&+Uinsr{rM-"?yœTÿû;m¦Ý7IL:3$öãØÌÇÎÍ»¢˜¡™Œˆ‹“ˆ‘wai|tw”¼ãáÊ…-ÿïÿÐÿô+fsXR{²ÍȺ¤”– ¾à*1(#54⵨¢€]RF#.Jgn[CCQg\ÿêÿìShB8gˆ…osyxf>,BršL#!*f³ VqnK?0ýçÙÆÁËÓÍ·œŠŠ‡zrqtyw|‘Ÿ’„”™ªÓêê¼BOomR6-SŸÙÛ±˜Œ…’›·ã/2*,$ÝÁ¾´‹Y=' 1K`rkN8N`Gÿý-ZY<$&Dm~tunWD?QpˆyV9?çN‚‡^O:ìÝÆ·¯±¶µ¨˜••’Š|qnror€Šƒ~ˆ›«¶Ê½S%/ThX;.>V‚»×Ë£’‰uw†²î þþ ' øòéݸH&ÿ÷ #6dxS%)DUM%4WcK.,Iu’ŽujhnmWC>RsŠŠpIC_²c{_U>!óåл¡˜ ¯²«£œŸ›ˆtnrsuvwxŽœ¨ –r5 (I`jS (lœ¸ÎȺ¥›’toˆ¾øéåú0#ïèïèË•]1  0NA%"/=B8(">XZL=Di‘¢—‡urqcWLTkƒ…j]_•ë<c[ZE,ýîàѼ¯®³¯¥•‰Š‰vdbnv~‡˜ª¸´ª‘z_:-AalbT?L®¹ÊÊűšˆx‡­Üú ñéàа‰^:#&ÿý  ÿø&,,% :L:#"7Sf_Wg„£­¢…ofhpmiip{ƒƒ‚{“Ê 8EQF9" ûíäÚÏ´¦—…xuuf^aq€Ž—¡¶ÂÆ´˜{lmmvŒŽoF/37T}¡¬¯ÇרÁŠŽ²Ûøùó)üÜÒÑлZ8+.ÿøÿý%22"8PD+*FdnmmuŠ›¤–}e_ghkmrw€Š’›»é+BEG7# ñÞÑȸª¡™ƒ~|upox‡˜£¦ª¢—ƒk^aowx}oL0+@Pj†£½ÏçêÜÀ¥¡¯Óõ ýïÇ©££”q? *1=3&2AC;.,5NmtryŒ”…k\Z[fqyww~—¨½Úø0>J?/ïÔ¹¬£ž˜“ŽŠˆˆ„†“ ª¡ŽtaYQXjwtbRB//<Vcs…£ÍëûîÕ½¶ÀÉÚíûìÊ¡‚smeL,  ÿþ   )"*.18?DA70+>fŒ‘~nt€€woh`bnywss~ŠŸ²Ìê'8D:)öãÓǶ§›”ŽŠ‚‰–§±µ¤‰odimv‚„yfYRKMNYcz˜¹ÜêçÕÉÇÑÜ×ÓÜëýöÞ°…aE6# ÿú ÿÿ!6/&4:;CE@9/:[‚ ŸŠl`fp{xjagstrov‚›´Ðî#/8-øïãÕųž†„}{|†’¢²¶³¡Œ~‰’’ˆxlkooiYVc†°ÏÞÕÈ¿ÅÒÛ×Å´µÀÏÅ mL8$ÿþÿõÿþ$(  ó´ô@?oˆ–@õö&LEÚu¤±`IiGÚ D€ÄRôpÑGäE ñ¡* ª = ä Á § ±  Š² z 9 ÿ Õ Ð Í æ & . "  ê ê V £ à  × Ž W b Œ ê ; Ž Ð{ò^ì„I4ûŠÉ9d‚š¿æA¿NᾆN$ôÝnʵŒjwÎ+§ Š ù äKLe¸•N®l6ØUa•dþXÐW„¹¿æ6µD¨í6 ž  À z k q e + É e  ï ô ø  ; U c K " ñ Ð Â ¯ ¹ Ø   % 4 7 ) . S Ž Æ â ø Í w  ã ì 9 I U e ‘ É  i Ñ > Ø–@´ò9…ØF²CÛšj4ýpµ³´Ïuåç·ÙÔ‘}©×áq$ Øh†N0X`XH Å`±)èÿ¶ôâÂÃʧ²îrïx ó i Ö Z ð © W # ÷ è å Ó ¡ _ & ÿ   , ; 7 .  Î — q k `  · þ 0 O q „ Š — à æ ö Ú À ~  Ô ³ Ñ ú " )   ' / K g ¥ å P Ý W º Ù ‚$ÁˆO83 û™Ž ÒèõåHdDT‚ÍñÍsœÐ)óR­òüâSmˆ›ðIάX¦l/Ò„gK –  É z 1 Î z : "   é à   ~ [ ? !   # - 3 = 3 ! õ Ç ‹ D êñö ( m ¼ ÷  G _ o ~ ¨ ¸ ¬ s < ù ª ƒ | © Ü    ô Ò º ¬ à ٠ q À ç è Ü ÷ : À @ â z5 ߎ,–}Ý—+wØÿwýgò‘bÔå…2øîP3å,4ÈŒô]&ÇÒÛ§l]•àòãßã Þ  A À ; ô ³ ¦ š © Å É ® l + ì ¶ ˜ s v Œ Á ö  "   å » … V 1 ú  B p ¦ Ô ü * F Q U s ‚ T  Ó N 5 K b | †  | m S < . 2 / N ‹ Ð   ù å î , n Ô ) ¨ F ù €ÅÏág»:+KIC.U n3ðštñ]#žž†çbJI€^Jû‰)ò   ³ ; Ë q ! ° e 7 W Ó  ú ° .  q * ð  - l ¥ º · • „ i H !üäÏÌÌÓÓÕ×åù  9 M L I ] { š š ƒ J ÞÉÞù  # !     ! - . K € Æ + -  ÷ ì ì   K ª / kF¢K  ¥qÚwéBußðÏUU‹U¯ÈŠrÆüTvæ¤m$±g A ã ¤ Ž € # ² a 8  / g ‹ ~ < æ Y D -  þôóõôçÞäí÷åņHÒ¥sM($<MZYc|¦Öóøîâü1‰é ' F . îãïø  + B \ s Œ ± É Ö Ç ¬ ’ t “ ä U ˜ Ù   Wß` §b;ó,áPœo/¯w.Çaìl2uftaö¼›„… d Š Û ‘ A . > + Ä B è × Ù M e K ô ¢ W  óäÄ–n:ø½Œu‹¨ËùïÃQÚ[ð¤X+þóóÿù÷ø1b“ºÎè[Ìg |¬ˆQ21.Hm›ÃÜãø / q © ¼ · ¢ § ï M Œ ­ µ Ø  ¨ X g޲©c¹k%óœ.v²Ã¦“ˆ«ófi 99AQ e • ®  ¶ £ w h o b  Õ Ã Ø æ ã Ñ   ^ 2 / G e B÷UŸõs3íØÇÛò:PuPÿfÉ@Öª„tppfH0&>_¾àïlÖ{5ÓSs~M"ÿÛù5±7¤êü  ! @ d Œ ™ „ j b ‰ Î  A ` ƒ Ñ ! » z T«Ž!轚o¯¸¢ ÊÄî ØdÈw s °  q Ò v L H  á ° Š Y L k  h ¡AýP”ÆmÒÂ¥Ä#õ ;Ys{€mj1ÒMÊr5<Knƒ†ƒkG*&?e…–˜•‘¸ífö–+€À°ŽY%<sˈ'`lD4MÕõñ׿ 1 ¤ ø : } µ â  q Ý M ® ì . „ªh(Ü~ƒB ¢ M = T : ú « k v L ¯ ì o 1 æ Î Ý ç À n Ö¬¡¥…1À_.#&Çd²ëQðÈ Nƒb5î©j=Ô˜bL>Oi‚Œ€oYIB:@Mas{zvo€•ß@ÁB£øÿÓ«§§†XLgNñ ‡©ò  / Z Š È  W j X > S ™  u Ä ÷ # [ À 5 Ó{{ ï Ž u u ‡ o O I E ^  \ “ 4 .  ! ò'ăSËcéãì®1d›ð^#ê K¬   ¥FÛs1üõ4@<<-õ×ËÍÙ×ÕÛæñú 'Dn­ê$]€™¥ …‰’ Ô°SxY"‡Y\'‡»³Ãô S ¦ Î º Ž ƒ © ¶ . b R L S e ± ! ™ Á W #  õ ò ï þ $ * ! · `)<#þÛ¨CÏPã‹,뾟€2Æ*{ü°·ÅÛÓ·¤ŠtNà­ŠaZcŒ²Ûýß²…[5 ÿý%;Rk…£µº²±°§±Åû;‹â<҉îhêMua„øëþó£â&qÆ  + * ê y þ E Q f ^ D = a “ ˆ œ ’ r G 8 T }   u ~ÔT ÏŽ_,ö›(¤'Ђs‘˜kß&ŠE©:§©|õuý“gLj…³Õü/\Š™‡k6Í›vX@$ÿâÿ×ÿå (Eb†µÙóïêÉ–kHd›nÊ40ß<¡^VÌfèþôtš˜8¤ÎdÂz•]3lí X « ý î ¯ } eø Þ¾·áÿ ­Y«$¸pÏ¥VöeÑa:);S/Ç<»Á4¨ÔÈNÁ4ÿÈÿ±ÿ¬ÿöM¬ò  óÒ¹ZÿÜÿ¨ÿxÿbÿXÿYÿQÿ>ÿÿÿÿCÿ_ÿ€ÿžÿÐ\©ÒóЕ9ÿÞÿµÿ°ÿíjæE„PöZÿ¯ÿdÿqÿønå0zÓhé¦,•Ò f›ž‚¾?Ë 6 € i 5Üšwv_hJB<J2 Šë"pÔ2ÅjOHE,ßbÞ :agDü+µdتe½„~÷t¢òúá¦j%㮂`7óÞŽÃÊÈ®„W=25xÆ>4ÀUês-'G´?Üs£ÿ¿ÿÿ;ÿ¬r N=&Ræ dÿQm¬e'~¦øhõZ“xXê×ý‹‰†c6ÜŠg§ì<{åÐ…8/k¾ÏȵôjD-ü²åè‘Cð(ˆ ~·à¿ŒCó¿“mc^r…§ÐôýÚŒ5Ìn²Yû¾Šˆ³Ôì ó¿S÷|é^ÿÕÿªÿ© ¡ðÞ<ÿvþÞþ‹þæÿŠ?’’œë›x-p‘ Ÿg´ ìHmŒxH,]3OMF¡!¾PÒ?Ÿ†]vÍù !`è‘ OÚÊ † Ñ ¦ P Š ¼ ç 8 ± - ²JɈ6 Á W $  : @ N _ ¢ Ùh½õ!ü«Z Ö P ¨ G ‹ Ö #û“+õÄÄßéÔrb±ÅµÆà²í’%*ÀÐÿÉÿMÿl"´úæž`¥iSÊîQ« M‡Ç†ìPvkSxTŽ®²bún’'à›§×1S¢ âàùÒy Ç m tŒVI(»lówÛW“«|G:ŽùGu¡¸ÊãEqri(åwê!LSYf€µì2 n À  – 7 ï ˜ $ ª |©¶ GA€ñBæçÿëd –,ÿüN ¨;Kä4doƒ»'¬==Vè:+ß—Bú·X*[¢gçVJ‡9Þ n ® ­¼ ‹^[Ö‚ ê ? œ Ù!4!~!±!Î!é""]"Ë#Q#Ê$)$H$a$I$*$$#û#ê#³#s# "œ"!±!* žËÝ»™ˆ¼ëDd‚³õE‹ËDŸá" ö „ ä=?£ÓHd²vr}‚5fÑ_®ÏðMq_C<€õ|Ûü•»¾Eî⩹‚\éÎèÈ ö PCû…•MR.!q >!]#% ':(ö)í*·++™,,¸-?-µ-ï..".6.X.—.Â.Ñ.¨.|.3-å-¥-~-n-b-@-,®,.+’+*“*)( &½%s$M#D"€!¿!$ ‚ðiÕFkqºMÜαq< û 2 © K ê 섎†þ÷£0Ù<ÿñÿõjôSZ'%) õpÿŠÅ°†GçcþLLþô^½' 1 ´ ­^1ÍР“D «$ &Ù(…)±*¸,c.¡13"4²5r6(6³7w8U9@9ö:™:À:Ä:r:'9á9Â9¦9p9!8Ô8ƒ8+7ì7¹7´7É7Ø7Ù7‡76^5é5_4Ó3ß2¶1@/Ñ.‘-p,¬+ê+r*õ*µ*‘*l*Q)©(Ç'(%p#p!…Ð6ôº±»™B¬þ˜·Æ‘ n ¼äiõô‹ªùYR´%¹qMOm^m ‰Ê¯ö2Vi ÿ¨11¨~ ¹ Í Ém'KKð!O#ç'*¸-ô0•2I3Ð5k7™:<ƒ>c?ë@ÈA¬BsCoDfEaEûF~FjF0E¦E*DÖD¯D´D£DD}DbD;DDD DBDkD€D0C°BþBŠAûAm@[?=F;‹9ú8“7Ž6„5Æ4ö4‰4B4L44O3Ý2ˆ1.û,í*Ã(¢&Ã$æ#’"~!± ë—¾~ ÇÇ ” æøÈÄÔ®WiCÿíÿ£ÿ–ÿÂÿà>žÚÒEÏk›‹šF  ¾}GÜ8ËÔ"$å'})é,†/‹2Ì68Ä;-= >ð@ÚCE9GAHÓJHKXLkM\NrOZP@P¬PþPÆPpOôOOxOŒOæP7P„PÊPàPáPÀPŸP’P±PÀP·PTOÈON´NV>3>O>a>>=f¡AšD:FàIJöLšNkP,QõS„UV1WSXQYxZp[_[Ú\:\)\[Í[­[Ý\0\À]X]Ê^&^]é]w] \¶\\h\#[ŸZöZTYòY¦YnX·W­VTsRÖQnP/NãMœL7K IùI\HòH¤H3GcF‡E-CÑAô?þ=¸;Z9?7G65]4˜3r1 .z*õ'„#ÿ!…Bœ — íYe«©WˆiÿØÿaÿ3ÿaÿ¿ÿÕÿÖÿð ,[À± ¡ 0 ýÏ2ã@B#%'*¶.B1”4ó8<;>¿AîDÛG±JTMO¦RqT„VVúXYSZ¼\+]‚^š_”`pavbccEcÕdTd‚dŸd³dÜe>e·fWgg{gÓg™g:fte²dødlcñcab½aôabaaa`Ñ`6_]í\µ[©Z§Y—XrW:VTòT S7RvQ¨P¾OÖN½M¬LEJËHñGDûBÞA?»>=i;9V5í2-æ*Y&±"³=g)Œ ³ Èr—¸úЧ ÿÎÿóÿóÿÿ%ÈÒš`íÇÚ j$[(Ä-1x5š9}<ð@_CÄGqJëN0PôS›VXà[o^ _¢`•`åažbˆc†d‘eflg=hhài­jojýkŒkÙlllQl°mm©nBn¨onÒnm¢l³k§jÈj iGh‘g°g)fçggpgˆgGf†eÌdõd>c}b­aÇ`×_ø_2^‹]é]<\‰[£Z®Y‡XtW#UÃTR]P}NœL×KCI®HFCõ@Â=8‚4O0 +á'…"ÕMågeÒ ¢ ¢ÀÏKdBÿéÿùÿñÿöÿü$½!®u:Ë•³!%Z)Ì.Ñ3Y7ÀNœRLU”XoZ´] _Raød4f=g*g›g™hh¾i;i±j2j¸k:kÁlSlÛmZm½n.ngnsnkn~nÂoo‰p p†q qqp]o|nOmFl^k†jÖiôi‚iTi´j6j™jªjOiýi‚ih‘hgqfØfffeèe¹eledtc¨bak`^Á]?[ºZ5XÊWTUåTR)OÓMÒKGîC¼?b:³6K2 -Ø)Ÿ% Þ?,çœú Ô '9kÅÈñ£B"ÿü.ù+¶)c'&§&w(º+T/Ë4E9S>B±GŠKÉORÁVFY™]_ÍbcÊeÐgÊiòk˜mmmèménBn|npn]nˆnÒoo2oso±oæpp/p1p oîoêp0pyqqÀr†s^sÀsös]r“qXp7o5nQm­lÞlŒlvlúmžn@n¢n§n³n~nCmåm‹m*l¿lvlIlBl5l&l,kîkjÂiíhËg©fge1cìb®aK_ó^9\WZXUuR´NâJÅFAS<Ò8µ4¤0+§'t#» :¤}c• } }|šëH ÿÆ9ú6Å4„2>1ß1Æ4 6—:Ö>ÿCÁHhLíQwURXÎ[Ä_%bdÞfÊhli¨kJlÆn$o oàpIp»pÝq pÚpfoîoÖoão·o‹o~oyoeoDo'onÃn­n¬o oep/q!rCstt't¥t@s³r™q‡p~ošonGn münˆo4pp¢pôq>q+qp²pnp oÃozoCo3oo+o\oo”o@nÎmðmlkjhíg±fŠe"c§aÈ_ý]«[[X4TêP»LJG¶C›?³;¦7w3.î+,']#&žÃÛ† ë÷S¯TD»A©?=[<þ<õ?0A§E²I¨N5RÁW[8^¨aðd¯gÀj%l6m{nÃoÀqqér‚r¿s,swsÏsÉs£srEq‹q,pípmoño¡ofo nÀnngn@nWnynúotphqrït^uPvuáu’t“s‡rfqqpÉp oÓo·pKq rssªt1t:t,sÚs¢s]s rÉr’r~rarsrŸrâs-s.sruq±p¹oóo1npmˆl•kgj;hËgne˜c²a^Ž[W9RÕN±J¯FêB÷>š:5ð1Á-}(´#}G9¶ ÀÁêUáNrKÎJH7GëGïIÞKìOdRïW[^³b.ehj_lËnsoÖp±qÌr£szsÕsësÒttDt`tsšrÆqæq phoÛon{nm¹mHmlÜlømmUm¦n@nËo¾párDs¶tÃu«u¸u§tÐsÙr²q¹qpDpoÑpWqr)s:tt¥t¿tÆtƒtRtsØs©sslsMsNs^ssÕsõtsrõrq^pÆpDo£nÙmÞlñkùk,jhªfºdübs_£[ûX5TPPêM]IxE@Çt‚tsÝrîqÅp×p8oŒoZo2o²p^qtrŒsst,tktœt„totTtMtUt\tdt\thtŠtÈuu:ufu+t¿tsUr¨rq|p¸oâo nin m”lêkÇjÃi gl×m•n¦oÔpñrrxrºr'qcp]o”onhn)mönKn¼opmqs¥s£søt,tJt ss'srír¬r*q›pêpeo›n£mKkÓjiVhÃhThNhh4hZhÎiLiçj|jök;k£lDmCnVojpqqˆq=pÁoèo>nmæmjlþmm!m¬nPoo¶p1p®pôqq2qwqÐr!rXrtrŒrÁssJsasUsrÚržr~rKr qŒpæpDo«o“oÊpJp¯pÂpµp1oÒnÉm”k•i~ge bN_Z´V¡QÍLùG*A:V3,ï&P F2µk¹k+jüjìkjÛjÜjæk…ltm·n›o­q=r˜s‡s¶sÍss¹sœsFr¢qùqkq3pßp,o8nkm©ml.kiˆgÀf?ed¶d‡dºddºdîeªfžgËhÓi˜jj¯k„lŸm¼nÒoêp¡qIqQq5p£p*o|n³mùmWmlÏløm=m·nnxnàoo o oo2o;o)onæn×nêoo-o nÕn°nÕo3o¦oùoýoÏo–ouo¾pHqqªqýr6rqßq:p”o0m}ktjhe¿b?^ªZ#UÔP‹KDŠ=ð7&0’*h$¬ºoúoÝppCp_p$oÕoªoßp2pÖqMr$stšutÙtÆttesúsPreq‘p×pho°nzmkÜjÐiÙh‹fûebÇa_ô_Ò_½_þ_Ó` `~aÈc\e;fÞh#i5j#kElxm¢nºoåpÆq›qèrqÖqqpRo‡nÚncmêm¹mšm¯m¶mÑnnm÷m–mNlÒl6kjÞj^i×iši{i™i˜iÈiûjŠkY(Y#XöY$XóYoZ:\#^O`ècDeNg3hÉjxkømnn·pq-r'r sss rœrqXp½p-oœon”n"m±mRml¢kûjújhágxeþd«cžb{aÑaEaTa]aõb—c±dÇf2g§iEjálfmÊop¤qús1sît°tæutªt‰särëqšp™oqnbljggGd]`y\‚WHQ³KmEr?{9E3¬.YrUr„rÿsxs¡snsrÕrÜrÑs*s¾t’uuuÞuÎuXuRu t~s‚r˜qxpmomÔkÚief–d2aî_”]'Z¡X5UŒSÖR¾RªRDR\RHS(TLV­YF\o_qb2dÉfíijßlªn+oÅpörrsGstss,r¸rqtpÑp*omn¥mÝm*lukØjÛi‘gñf–dÿc%a$_:]—[éZÔYÙY©YcZ[\Ã^l`pbWd‰fíick´mÇoñq¥s3t0uRuËvu¯u˜u%tsšr­qŸpÑonkÉi¨f¨c²_kZ²U O®JDH>Å9gqŽq´r7r²rçrËrxrCrOreræsªtntûutßtqtYsÞs qÁp®oTmùl jUgºd¯aG^:[nX—VSsQ3N¨MKøKÚKXKrK’L¼MýP}SŸ>ç>Ü?R?º@ÖAÇDFéJúNèSW[ _bëfºiëmoYqZrqs±t3t•tOt%spr·qapnk¯hÈf cW`µ]YñVRYO2L4IëG™EâDCB <à:”9%8z8Ó8È9(9{:;Z=™@[D‚H„M+QÎV¤[|`džhlsoFqÔs;tÅufuòu¶u”tÂsærQpænyk¤hdœ`ï]\YWUP}LH-DŠAó?r=Ó< ;!:f:€:B;"ýAÊE®IpMâRXWQ\vaf²jÔn—qs¹uEvÀwwDvÛvÄvuvuSt;s rrqñqDproÕn±m;kifªdRa‹^šmÆnnÔo~oîp*poíppqYrrErqŒq—pço¬m>jêgÉd¬`ç]XÑT’PKJFûC@%={;•9Œ7Ñ5¶4v3â43á3ø44å5›7§: =îA·F™K©QBV¼\arf7kn¯rséuÖv“wFwvôvu2s‘r-oªl®h§dè`‘\&W-R LÙG¡C/>ð;ð97A5`4„3Æ3ç3Ã4¨5Â80:–>FBFûKåQoW\¤bSg%k¸nèr sÜu«v@v vLv.ußu½u&t rãrCqæqZp­po)mÿlfjãi$gpepc]lömFnnÌoUo·oÓoÂoõp¨qƒr0rIrqŠq«pØoGlJiˆeéb=]æYžTÚOçJçEÕA¥=Ý;986‹4c2®0Ð/Ë/A/N.å.Á.µ/Z/Ø1–3”7/:Ê?âE7KmQsW ]òcÅi—mþr%t|vºwux)wëwÚwvXtÙsžqniÅeÚ`õ[ÈU¼O’IsCc>b9­6V2æ0·.‹-±- -Y-X.1/&1?396¦:V?€D³JÍPõWA]–c!hƒlgp$rRt‹u_uýu±uzuutªs—rlqÛqŸq8p²p5oln{mRlEk(jhÏgl‡lÈmn'n¬o#ojovoÅp£q’r/r1rqq¬pn•jÿgµc†_CZeU©P€JíE©@¬=9²7l4é2è0Ú/a-ì-3,½,,+Ä+”+ó,-S.º1¾4Ë9“>œDîKQêXú_Áfhkšp¡s›vUw=xwòxwfvÂu^t@qÖnÞjšfàaæ\nU¯NÆGßA;´6¿3:/_,Í*X)y(ç)^)w*+*æ,z-à0®3Ê8ž=‰C±IëP‘W8]Vcfhl•ogr:st¡t›tƒtt%sÐrÓq±qpÚp†p o‚n¤mŸl‹k¦jäjiShŽllClémIm¬n#nnªop&q2qÄq¯q¬q.q9oºmMie8`k[|UûP©KDã?:¿7¸4è30Ú/#-w,q+€+*Õ*¢*))?)9(ú)˜*],ª.ò3*7­=õD1K‹S2ZÍb2h2nqáuHvw÷x xPw¦vèuOtq~njj%fˆa•\TâM‹F>¸8æ3À0A,R)²'/&I%¹&4&]&ò'x(‰)W+x-ù2_6ã<äBñIÀP˜WK^c”hÛl^oÑqšsZsºsåszs—s?rLq,p‡pš9}5N3&0õ/§.,Ü+É+>*º**q*D)Ú)Q(à(‘( (#([)ä+L.·2†8ƒ>ŒFMÏUÄ]„djÁoFsYu0wwdwàw'vOt„sp}mhiSeøaM[óTßM”Eó>T822Ñ/;+;(©&=%k$Þ%E%l%Ü&6&Ý'6(ª*u.1Ù75<”CI‘P|WŒ]ÒcÐhlBn·q>rHsrïs7rÝr pùp@oØo›o4nˆmkl#kj5iÒi`ih´l`lFlqlNlOllëm m¥nëp'pºp¸q;pèp±n#j®dù_”Y3RÉLE}??8s3ž/÷.£- ,N+Y*È*B*)Æ)¨))p)(‹('¢&ò&—&E''Ž*C-…3a9SAHÜQ!Y@`|gÔmqÁsúv6v°wMv”uÂsôr|oèlÙhÛe¨a[»TŒM6Eu=©7;1}-š)U&È$Š$#œ$$%$n$ª%%%ô')ø-1Ý6œ<®BÙIáQ2X#^ÊcÙh¥k¾nûpªrrVrår rpüp6o´o…o%namk¯j€i°ifihçh±m,làlÇlxlWlWl¬lÚm‘nÔp pªpÀqxqp mxi€c\ïUÜNéGö@õ:°3þ/³,¤,+*Â*[**)î)Á)‹)e)[);(ô(Œ(@'á'M&æ&y&ñ'()Œ,›2K8?oFìNúVý^aeòktpTrŸtÝuXvuytßsdr6pmbiÖgbÈ]£V‡O[GŸ?Ý9 2å.S)g&z$#§#F#ª#Â#ì$ $8$#$²%_'‰)í-ô1ê7W<ÖC™JÅRY^Ìd3gÿkìnPp…q_rYrCqòqpPo¹o”o;nqmk‘jNimi&hØhÈh¬n&m¤mFlÄllMllômåo4pfqq@rqp·lçh`a\ZgR¼KcDS=6Ø0S,—*&*<)â** )ô)Æ))f)N)H)/(÷(£(e('‹'1&Ò'N'†)Û,æ2n7ê>ôFMÁU]dÀjxonq©sÅt4tòt²tYs@rmp¹n®kÂi•e°`ÞYÕRÅJèC;×5 /©)æ&O#h"Ò"P"º"Ö"ï"á"Ð"¢"ö#S$ã&˜)×-1í6Ï=ODNKÝS0Y_dh k³n§p qfq~q€pÊp o_o@nðn+lÂk(iÊhÔhhMhbhko9n€mâm6lØlsl¹m?nZopqFqWqøpóok(f)^ÌWeO‰H%AX:@4o.w+T)W)½)Ê*0*5)ù)­)g)@)E)S)_)N)5)2)4))!)A*@+-¤0Ý6;AhGÐNëV] d:inoþqÍr5rÿssr†rHqipNnYmiÔe¦^òX1PVHŒA9á3¼- (§$ó#Ü"ñ#=#C#M# "¸"a"~"§#½$Ê'1)¬-×28 >ŸF4MœTgZê`eVilÄnÀpƒpÏq(pªp oZo?nûnWm kqjihÄh…h«hÉp o-nMmvmlsl¬mPnxop9pæpÔq'ožm­hÊcf[ÏTL-DÍ>F7k2 ,¬*(d(â) )™)œ)S) (Ú(È(ô)()m)‘)È**‡*Ð+g+þ-\.™1X4˜9W=ÃCNI&OÇV\äcfhlmÚoroÙp—pÝqpüqOq[q@p_pm¢j)cÜ]~UÏNMF¿?P81&+è'‘&$½$Ô$¼$«$9#"×"|"G"Ê#$™&<)°-2Â8ü@­HCOšVª\ˆbXf­k m¯oÏpGpïpªp2ooxo@nÃm™l jœi§ini7ieip o‡nmmlXlumn$nÞo5o¶oXolìjme7_WðP4HlA':õ4„/½+(ï'k'Ã'õ(d(e(3(( ( (W(¸)J)³*\+4,P-=.v/·1ž3t6_9¢=ÞA»F‚KÅQ¬WŽ\ÞbeÀij›ll»m‘nn‹ooÿpÚq•q‹r p?m‡gÓaüZSyLDÄ=É690+©)˜'¹'l'&Æ&/%Q$N###1"ü#Ë$¾'{**/A4ú<”D$K×SGY·`døj)mXoäpqyqcqp“p‚pVp om¬lFkjk>kk#k;qoÎnžm”lêlllšmŠnn n^m®léjgaš[§SìLDO=70ã,«(¥&ù%´&&R&Ý' '')'F'L'( (ý)¨*Â,#-â/W12ù5j7Ñ:å>$AëE`I‚N3S>X\9`bÕeog h¦iºjåkÝl¹m¾o&p‡qÈrGsCr pke®^‘W®PjI`Br:Ù4µ/T,”*)Y(z( 'a&Ž%$¡$#Ö#I#Š#ì%ö'Ý,H1e8Æ@/H*OëVô]Öci†meprqUrƒr‘rtqýqíqÍqµpøošn5mkmBmmmqoßn¶m±lúl kÝl_m mWmmlj´gQcÜ^WÝPH1@…9-3X-‹)Ø&X%$$m$¸%[%Ã&&g&¤&²''™(¬)ƒ+ -/y13Ù6r9‚$82i/,#*ÿ)»)(R'&Œ%´%$Í$3$7$L%É'*Ô/]6o=EšMoTÜ\"bfimžq/rUsºsÛsãs€slsUsnréq¤pDoono-ooq oînßmêm3lBkÿlym lõl8l j¤hÎdÔ`ÕZ²T,LSDp<ë5 0*›'k$i#z"µ#)#v$$©%1%´&&L&¹'[(Œ){+f-ë1$3Ì6Ë:-=äAaDÞHxKøO[R†UþXÁ[*\€]¯^n_Q`jac3dóg(iOkÅn”pøs"sétÆs‹r0niœbÞ[ãT}MÎG”@è;5-1P.,À+N*†)‰(›'&%ò%Œ$ß$ $[%K%ó)4-V4A;6CKK%RÑZaa'hum‰q“rûtštÖu t½t§t–tât“sbrq`qJqpòpÐpøp o5nlmÒmlÌmHm¨mLl1kÈjgØcj^òX|QµIÞB :´3~.(ï&!#‚"Û"J"Â##¡$7$Ò%W%Æ&&Ÿ'A()„+É.Ã2«5ù9¨=ÆBF IÌMÈQ^TÎW‚Zf\%]]³]Ø]Å]Ý^r_`zbd¥gJj‚n pûs–taus˜rEnij!c}\fTÛNHAï<€6Ä2Ã/{. ,›+´*q).'Ù&Ó&%ˆ$Ö$ˆ$#$Ð%.(+ð2¦9pAITQXÇ_ÎgjlßqJrôt»uuYu utóukuZtOs rƒr…rcrRr9qp?ožonŒmñmÉnPnƒmèlskÍiÈg$b>]NVŒOŒG»?ó8Å1˜,V'r%"é"ž"E"½##$1$Ð%<%–%æ&‰'1(š)Õ,04Ÿ8¦=AëFËKROjSÖWhZ¡\Ÿ^ä_·` _"^$]5\¡\Ú\ö^"_abehçmp`sAttÞs…rsnÞjÈd=]BUÄNüIC'>8q4c1/g-è,á+_)Ç(+&ç%Õ%/$`$#’$$G&á*H0«7??_GPOWW&^dfJlpârÇtªtñu^u1tþtñu•uÊtósÒsos†svspscq;p•p$o°oanônÛo_oknªml6jg/b\êVNíG(?s8Y1,+é'$Â"å"Õ"‰"æ##$7$Á%%7%r&&°(/)•,ž0P5C9Å>¹C÷I'N RdWZ«]³_CaDaªam_Ö^3\Ö[ÿ\\\â]¦_õbÛfêk2n§q€rQsqíqm¡i¡c4\xU3N€H¥Bæ>8Ó4ü1œ/Ï.:- +V)}'¤&+$ß$#:"í"“#.#h%Ò(Õ.Ð5(=TEcMŸU\ÐdÏjÏoãrsýtAtÃt¥tgt^u#u›ut#sõt/t?tUteqvpñp¨pZp%oÖo¾p3po4mhlqjgaÝ\ˆUˆN^F >þ7ù0Ï+†&—$`"¶"Ì"u"¨"Ë#<#Í$N$€$ $Ñ%l%ë'h(ä,&/ÿ59: ?xDüJNOZSÃXŠ\ ^ÿ`bbKbaaŸ_k]I[¤ZšZ¦Zƒ[9[©]¢`Md^hÁl`oGppÂo’nÓk²gèa²[,T"M¨HB©> 9R5£2:0&.`,ú+ (ÿ&û%d#ô#"1!ê!™"4"r$°'\,ý3;LCqKÜSÙ[Ec^inïqVsns¼t`t[tt!uu½uitÊtÚuAu|u¯uÙqÂqNqpÙp§pSppgp'o8mulzj-gPb9\úVNìG8?¦8›1g+ê&«$+"d"p!ï!÷""b"Û#M#€#ž#¿$8$”%ì'P*w.!348=eBæHAM]QÚV Z=]t_.acaœ`×^™\•["Z9Z`Zi['[‰]7_‡c3gIj°m^mìnUlèkõhÊe^éXsQ’KRF@Ë<|84—1H/-,+Ÿ)›'’%$ "¦!æ! ì ³!W!¨#Í&<+1t9ŽA¥JRY“a¯hm£pRr’rôs¶sËs£s¹t±uuju uQuévSv®vÿrq¤qoq?q p¯pXptpomYl_j+gwbŠ]`VuOrGË@F9*1ã,)&#¸!Æ!Å!'!!!`!¾""P"j"s"Æ#$;%({+ç0À5^:±@9EËK'OíTÝX±\H^]`Ña`]^+\][&ZYZŽZ»[–\]µ_àc8fþjlxl¿lÓkiºfYbz\pUíOHáC³>ˆ:Q6 2Å/“-d+u)à'á%ì#ý"•!Q ½ ' )  ¯!#%2*4/Ý7Ð?¿H,P+W¾_éfkl[oWqÃr4ss8s$sOtXuPuWu(u˜vWvèwowìrHqÛq¡qrq*pªpoüo{n{lõl#j5g×c8^CWqP—IA…:J2ç,Ú&Ê#}!8! d S ? € Á! !A!_!W!Š!¹"Ç#Õ&p)t-à27+<¨B…H&MRR—VÛZÿ]¤`„a/`Ü_]Ì\ó\l\»]]ë^’`)b7ehSj·l‰l]l jhd_ÂY‚RÔKòE¼@Š;>7 2ó0-*+8)c'Õ%ñ$!"Q!ô’4ft $ ’"$‡)G.Á6>NF–NuUþ^d´jÛnp¤q rr:r>r}s‡t‚t™t‡u uçv•wIwõrurqãq½q`pºoóo‹nëmïl kýjPh?cß_XTQ J!B¸;k3÷-§'1# ú Ê õ×  ' ` œ Å º Ù!!ê"½$ÿ'­+Ì/¡4¨:!@7FK†Q&UàZz]”`àaôb`Ì_Ö_6^û_f_±`m`õb]dOfÞik?lYk·kai+fÍb%]VoO˜HÓB˜=`7ì3Ì0 -§+E)”'×&5$V"Œ ¿…r&ß5nIë!Ü#³()-}57<èELÐT4\-bÕi/l¬oYoÞpÒqq3q„rsŠs°s¸tNuDvvôwÓr`rqìqÌqWpŠonín?mQlHkãjhßdÓ`DY¡SK–D6<Ï5?.§'Ñ#Á ø ¯ÙɨÐã ? k e … ¯!w"$&[*$- 2‰8>\DNJPUAZM]êa¹c]d+c]bÌb`bqböcDcËd/eDfÞhÜjêkãlBk"j”h,eN`ZZS_L€Eñ?»:†51-À+ï*(•&ï%8#]!œÚ©ŸV g»Â˜!ž#e'´,þ4²<^DrKïSZÒaeg¼kLmûnopoµoÞp6q6r(rUrrst(u vwrErqòqÙqVptoXn‹mÐlèlkçjéi¦eõa¤[ T‚L÷E”> 6M/a(%#¿ Á oŠ‚t§²Âßþü  A æ!b#%(y+Ÿ0}6!<ÍBîHñO.TÍZT^{bÄdÚf!e½e•eke²f@f™g gth6i4jXkµl!lj}i~f¦c@]šW³PÅJCž=h8/2´.ü+þ*”)'®&$F"n  %ï§d|k!v#0'd,¤4K;èCÚK)RY®`*fxj l¶m0nnOnsnÉo½p°pëq(qîstu&v5qßq¸q’qqpØoÞn¯mÑm#lOk¶k¾kjFgc\³VMN±GA?‰7œ0e(Ô$ ¼ )èÒ #("Giû n!Ü#€&ƒ)7-ã3:l@¿GMeSLY9]öbÔe€gUgbg±gÍhChåitiÿj’kkkkµlllXkÕiÙh'd—`‰Z£T¬NGoAF;?6I1*-Ó+*)ô('K%·#ý"= ½Lm¨t#nÆâÒ!í#Ã(-_4õkkêlŸmQm†mƒmm0l|kvhùf¬b~]ÅWzQBJ¶D9>d8µ4=/§,Ã*r)c(%&õ%o#Í"2 ê¾ \°è>h ]"Š$…(í.I5Á=D’K€RYU_te9h]jÈk;l lBlplÌm¥nŠnÓoCpKq r¡st†pÍp£pGoñomºlXk`jíj^jJjÄjÊj®hRek_×Z$RªK0C:ö3V+I%ª!F¨ª„¤«Á¬p‹·C¾Á¯!š#0' +ü2ù9®@žG6M~SþYã`dUg˜h¸iøjœkŒlmÊnÁoo¦oœnön°mfkÔh¦e•`¢["T[MÄG<@¸;15ç2.+§)«(Å'º&º%j$"¢!Œ –øGéožó /!+#~%Á*m/ó7\>EÑL•RýZ#`ebh*jkjäk©kél'l‰mRn!n`nÖoðqGr0rôsÖp=oóoanèmäl]jÞiÖiƒiiSjj€jÃhéf¡a¢\zU-M­ER=25x-H'8"*Ö[wŠtXr[F,M€Ž~Nû!X$Û)C/î6›=ÛD®K9QÝX^˜c{gœikhlMmmn‘p$q_r=rCr]q°qEoumTiQec_ŽY(QËJ½D*=œ8T3H/É,/*$(v'Ø'&n%u$O#."2!L £æxó"y Æ!Ï$L&Ð+½1x8æ@G"M»Sõ[`²e¬hj9j¸ksk°kôlVm mÂmõnlo“pìq»rZs1n¶nymÞmtljþi‰h“hhh)h¤i£jkkiÉh(c×_bXxQ$H³@¡8Ý0¶*O$!{r.ÐoìÜÇò&¸FF.Ô!3$^( .4R;{BQHùO„U¥\.a€feiOkîm@n¤oÖqžrþsësõt5ss!pòn_id¹^VäO&GÄA":x5F0W-!)×(/&Ú&“&4%Ü%=$V#m"!ž è +ÇQ”ò!R"o%'(-Q3V:ÞBIO¨UË\Âb/f·hÁj³k+k¼kÔllZlðm†m£n o)pkqq‹rXm7m#ll,–2Q9D?úF­M"SNYÓ_Že#il…n^pq!ròtUu^u`uttsÝqdnŠi%cl[ÙT$L4D¥=ú7 1ç- *0'V&4%O%_%U%5$Í$ #H"s!¤ þ V µ  {!é#%ü)6.ç5:<ÛDKQ¥WÅ^³cØgéikFk­lkÜkìl.l§m$m/m‹nœoÊpLp¥qliÍjBj!jHiÖhÐgÈg?gtgŠhZi˜jïl[l$Ý$;#º$$1$/#ä#="Ÿ!ö!S Ú ` ;  v ë"q#¶&ï*œ0º7Q?F>M+TZ-`óe«iFjwl lRl\kùkëllhlºl°lømãnào6oipeûggmh)h@gÄg$fûgmgÅh¼iþk~mDmÄmâkohçcq]dUcMšE•=¨6—/s*6%p"Õ A# œîcŽž"Êäè!@"_$S&[*.3Œ9'?WE+K4Q–WÒ^cgãkmÿoÅqãst?t sárNq;nj2c\–T?L8D—=46Ò0+/&´$’"™"X"$""÷#"å"a!ï!! Ü “ † ^ Ð!A"à$K'ã,2¨9}A,HlO\Vk\Ÿc-ggjˆkYl³lÞl©lll,lElelNl—mnnMn‰nŸo5` aïc7dÛeÑf8fAf£gch"iNj–lnoo¾mølg!aÁZCRàJòC1;í4t.‘)*%å"®!}ÑõžRr~ón H!j"n$%Œ(N+L/Ô4—:D?EsKžQ×Wû];bFf iÅlPnöp]q½q£q~oËnŒjÞfj_OXOÊGÖ@p9;3 ,¹(/$"U È Í ¾!8!!Õ!Ð!‹!]!- þ ß » ¿ ž!!‰#V%) -¶4”;CJdQ^X—^²dÔh|kCkçmm(lÓl5l0lSl.kýkÈkçlklälÙl¨léZ\É^àabc(dee eèföh&i›jül—n¶p&qjpfojØf&_)X8PjHÒAH9_2À,±(¿$Ù"© |€w0á3®2è !L"$#]$h&H(2+¯/£4ä9Þ?€EHKYQ{W\{`Ñe"hPkœm}oLoRoAmWkÞgÊbÙ[eSõKÊCÎmGlálDl[lƒl4kÃk„k|kŸk™k5jªjˆR§VTYn\ö_½b c€dþfch iÂkOlîop™r1qÄpÿmaioc,\éUˆN_Fß>ð7ß1S,ª(%:"O ÉWð}­Ýbæ t Ó!P!í"Ô#”$Û%ú(v+r/ì4P9ƒ>¥D:IúO›UYÔ^ƒbNfWhöknkÅkìiähEcø^ÙWbP H@-8ú2,s&a"d-˜3Z¹› ‘!!&! Ñ ½ ì ð!§"N$&ì+§0é7ú>áFNM´T»[üa“f´i\k±lQmHmGlëlWlwlpkÕjâj?išhìhfòeÍdøKLOîTX£\p_Üb(dMfh iõk¬mSo]qrÒrÝr‡ol]fßaEZ_SÄL{D´=B6*0³+€'ý$T"0 2Œì%Sä z! !c!­" "—#'#ÿ$Š& 'Ô+=.í3¾8T=zB»H>MËSX\€a°„hBh³f¤d÷`ƒ[MSÐLuD•<Ì5Ò/&)Ñ$ f”¤ TÌŽQú ž Í « f V ° ê!õ"ê%(H-S2Ñ9ð@ãHGO¹V§]»bïgŒiÏkÿl¯m–m‹m9l¤lÀltk~ièh®g6e‘c¶aè`(^—C&HÁNS¼X«]\`«c¥e¹hj lmšotpéršrÓrªpAmÂi*d]^4X]Q¯JœC_<5630–,ƒ(H%}"Ë! t j N À!>!Ð"3"t"¨"ø#h$ $l%W&B(Š+D/M3+7¹<4A7FbK¿QV [4^ôbŠc”dLbQ`¦\*VÿO¤H_@¿9H2Ë,–'Ò"®¡`^d*qõدc > þ  Ù!~# $v'ƒ*Ð095þ=#DKYR«YC_çdhšj{lvmmÏm¡mTl¢l€k™j g‰eWb´_Ù\ßZWU:õA¡H1O U([+_~cMe¶hnjrlcmÛoupµrKr°r§pÂnøkOgRaã\½V§P^I€Bh;ñ5ð1P,¤)J%ã#ï",!´!>!„!È"<"•"Ð"ö##;##Û$$ô&T'ý*ù.25í:o?DTIúO¡UcY]d^|_\]j[«WQÊJ‡Cl<25/+)w%_!şΓ^ÄH!õ©Iˆr‹÷!+"H$M&)“-h3F9s@³G·NµU×\ bDf]iÕkAlðmimÙm{m0lklj”hleaê^0Z5V#RXNòK2™: A­I‚P¹Wñ]Wb#ehRjul”móoTpIq¬rrpŽoGlviRdÃ`VZþU­O›I-BÒ<Ä7¼2Ò/ +#(~&$Ø#Å#š#c#•#À#ý$.$A$*$0$c$è%J&!&â(®*Ö.14ð8±=«COIkO’T WûY ZXVYQ´LgEK>c7¤1+Ü&ì#± q½C¿å ‡õTù³gûZtú Û"œ$7&¹(ÿ,ð1e7¼>HE~LaRðY±_^eh}kYlFm†mªm³ml›kŠj h`Ú\»WïRæMÝIDï@§)þ2(:ãC³LTrZõ`ÍduhFjŸlûn>o_pq8q´q¹p›oÇm¼ksgÊd_lZ÷U¦OýIÜC»>18ð4Â0‰-f*A(P&%Ç%%$å%%H%_%0$å$´$È$÷%f%ƒ&L'c)—+·.ò1þ6©<B}HúMáR$S_T|R¤PêLRG@#9Z2ý,à({$w"0Øž\Í)è#:«_3¾7… w!Ê$&(ë+¢0&5W<=C/JLPüW]xb­gÊjªlæmOn#müm©l·lBjåidfb"\ºWšQÇK¯E²@;&6"k*˜3Ã<ôEøO"Vž]bf·i’lmÿo:o¾pÖqPqhp–oýnlðj/g=cL_[VVPåK+E|@;733Ú0k-ú+”*?)(¢(G(e(˜(©(o'à'<&Ê&¬&Ç&ˆ&›&¼'Ý)+³.72›7²=õDoIN O{P¹NøM[HèCÐ= 6_0Q*¤&ó#»"# OF%¥IK$'o"É !A"«$b')\,»0 5:ÞAîHàO•Ué[va`eÿjul´ngn`n¿n-mwlkAi.f¯b]:VèPÈJC%<Ž6O1+¿>#A,®6?¸I“R Yø_†dîhWkòmÒoJo·p«q q.p¥pDoOntl›jzgEd(`>\sW²RLÎG)B4=:6›41@/d-§-,¤,Ó,ç,¹,X+*ˆ)(à(V'•&û&:&\&‘(Š*¡.ø3è:*@ EÝJƒL1M¡LJ‡F$A:_3¸-ï(±% #!ä n¡Ð‡[e5(#‘%  ë"#;%'*,Ø0Õ4ç:•@ÈGÆN}T®Z©_Çe8i9lönŽoÈokobnfmVkzj0gHc±]äX PÚI´B:=3 ,6&»!ü%& .õ8”BsKzT"Z©`Úeiˆl-n[op6p“pápšp\o»oWn6lØjbgÑdyao]ƒY?TN IoD˜@ø=¢;08d6G4,3>2Í32ý2¢210.â-Ð,Ë+µ*Â)˜)<(ã*h,50[5:ëAEùJlLM‚KüJŒFMAi:û4œ/#*='h$ñ#Ó"T!} Æ ‹ @ &ë 1 Ü!z"¡#Û%'>)ƒ+Ç/2O6â;¥A˜GÃN.TRYá_udhël$oppòpNoÑn>l¹j#gícË^ëWýQDImAj9*0è)¨"»o õ<’'ñ1‚;UDãN@UÁ\¹a¯gj~mjnoØpƒ>}>ƒ>f=É<À;ä:ø:"97ª6O4ü4Š4,5H6g9f<æA£F¡J²N2O?PN„LðI6E?â:¿6"1Í.ì,m*þ)G( &Ö%ü$î$k$$Œ$Ø%÷'/)g+ã.Ï1247;!?cD¯J/O÷UZ£_Êd^i.lÁpq‰srþs#qÇp7m9j•fGaÍ[SÜK&BÜ9ÿ0›'Érég ë … Ê á2°"ø+K4†>FíOU¼\¤aÙfáiØl€m³o4oÜpJpTp´pðqEpÙoönjmBkªjà=¢;}9O7á64…2õ1ª0(/i.è/˜0L246¸9;Ñ>dAµEZIÇNRËW¾\†`èdàiClðpormt%tyu(tcspp¡m¼idÓ^pWjNˆEÉ/@NBóE§ILÊQU(Yl]ÊaÔe‹hílÝpr«sâuu!ut;r‹nåkxf*`éYRQ GC=ñ4|*Á!à‚ y¿´žóï/ €ÆÔr"N*b2¬:óB³IÒQzWà]»a´ežh?klðnœoop]p»qpöpØpˆp›oþnúlÒjmg¶epcA`±^}\q[|Zü[ZëZuY»XÜX8W«W VnUÌUST´T¼TúV;W¨Y¬[’]ˆ_¨a6b¦bÉb¹aD_½]>Z¿WØU R8OCL¾J™HâFñE CSAÁ?Þ>ê>c?B@4BC¥EÅGÓJxMÈ5z,o"è¾ ÒÊíî°ÌŽê5 \{)± Ù(­1&8è@fHgO¥V¦[Ù`šcãgŒj;lænco—pp·qq‡q‘q¢q$pªo_m¹k¯j h\fcdˆb­a«a!a@aHa`[_}^ã^…^0]ë]ƒ]6\Ï]]^È`$aÀc+d†fg?hih‚hTföe„c|a©_—]’["XTU–SKQcOVM`KSI†GzF‚FFóG×I‰KM/O`R-U XH[–^ÈaÐdxgi}lnVpq¯r¡r’rïqçpm2iÜdò`ƒYíR~I?ª6,é$a9Ù H H" ž] KmÄÇ Üø³'”.ä6I=áE7L·RàXm\p` cõgŸjll÷nnÇoÒpZpp#oïo)nl©k…jXig±fIe_d¼d´dÔdÓdRc¡c$bübücbýbêbÊc-cÛe f6g^hWi7jJk(ll/kýjåi¿hRgñ5ÿ-c$ëF- ª¤B±„‘yy~OÏ ´ Ðx÷ $ê,13;:mB+I3O¹TšY\ÐaSehg7!/(q"ílo ų^ݪ‹{¸”ÿĈgWscƒ/ 1 ·¨ ó&©-O4:c?FCeG KÎPZTzWIY¶[P]@^õ`ÔbbÝc.cîdeddd_d¿e‚fmgg@fÏf_Sa/bWc}ddod†dÁdÜdßdädýeDeœffefªf÷fúfÛfxfde»dÕbä`°]þ[Y+WtT„PŽJÍDß>û:25j/÷)š"šdV¾Ä ^¨øû°é ÿïUׯC5ÿØÿ¦ÿùBÿÿÿÿAÿ‡*!Z] ! e ÇOÝc$(+ã.`1i5 9¶=ª@wAàCaDÚFºHíKEM.N¬O‰P£QEQÑQÄQ¢QPªPO~NMcKØJZHáGyF@E DBÄB AtAèB‚DE©GÔIíL]NÅQvTgWY‹[I]^4_C_×`~`Õaa:a}aÜb8b¯cAc½dEd3cäbØb `Z^Q[yX›UÅSQN«JŠE*>À94/Ð*è$ ÓTÕ f RךÂ{¡ ÿË ~½bÿòSÿûÿ¦ÿÈ !ÿöÿ{ÿ^ÿãºúsð²J € Ç;ÚÁ«œ"’%='m)ë-·1Ã5D7v9:;w=??bAdBóD EvFQFùF°F+E4D~CÏCFBrAR?ß>=;<;9ö8ù7Ê7677—9:¢<¿>ÂA#C‚FGIWLANÔPÌRÙT[UÍV»W°X7XžXßY@YÀZ=Zã[¿\i]\Ç\&ZvXöV›SîPÞN KuIeF¬C|>ž8ï3.–*‹&G!ˆnj h ¸Ý")ä¦M`ÿú| |ÿÜLÿÍÿªÿÂ-ÿ¶ÿHÿ]ÿÜJ™B§öSx— ý +S–ø›$ "„%}(Ý+é.t01‰2Å4d5þ7X8:;;€<«<º;A+C·E·GÛI‘K4LaM•NbOO™PkQpRSrTzT×UT-RäP¬N­LFIÒG'DºAé? ;772,-f(ë%-! ùGa ò¦ ør»‘ï·TÿîÿàI¯(ÿòÿó+6ÿÈÿžÿì6ÿ´ÿdÿ€§[=‚o´Àì q  :JÖb¸ ¥#¨&()!*e+i,_-m.Ã012 271/0.V,õ+w)Ô(+&Œ%2#ð"÷!ê!$ I Ð x!6"¶$<&9(*R,¤/Z2G57_9I;`=%>Ð@ A€B”CwDbE—FïHUIGJ#JIÍHuFÜD¯BÊ@Í>ñ<¦:Z7 3F.æ*°&æ#© pó€+3 ·ÓʹÒÌ <½$ÿö*€ªZÿý =Jÿë8Rÿþÿ¦ÿ¿@$ÿ—ÿ;ÿ˜#>ÿùÿOÿ\\ `3<äƒ ˆ åе²¼Y²ˆ0' Ê!”"M"Î#†$^%h&&ž&9%¢$A"ü!;SRwìsDû¨dý¥…f· "Ê%¨(d*Ò,ó/J1]3F4à6”8 9`:•<==>d>Ö?'>©>0=;µ:8­6æ522.é*Ä&t"Œ™W>· CA.k/.ÝG]ô8‚ ,‹ªˆ2A„ZÿÓ'iHÿøÿÀÿÊ,aÿöÿwÿeÿÁQ‹ÿúÿuÿ|rî+ͱ( Z ä , ÇÏÿ£8B4ö<aµ©³?·ÿ PÏV ® ™ ~  ž  { ¨ Öš\‘ÅQÿ© "Z$É&û)*º,‡./x0—1Û2£3C3@322À2r1Ê1/â.÷-*ù'z#wH‚öJ¯9¡ fÔ@iÚ“fEˆžšuí]”ТS,>‰ª]ÿÞjŽ`ÿñÿ¨ÿè<.ÿßÿyÿgÿâR7ÿ½ÿ"ÿ"ÿìðDCÿà„£Ð U ˆŒ÷Nt1 âű¾Š<X= Õ ž m 2Ï×Üh S˜m?›ü ß ¿˜1Œ¼ +< ç"‘#¾$Ô%ˆ&Y&Ù'<'['’' 'Ð'}' %¹$v" A«ôÑWÁb u ~0‡Þ<±ÕJiz‰'©“ºÙËs-@ƒ´¨] O¢ª?ÿÄÿ¨ÿÝ%7ÿÑÿqÿ„ÿë_rÿíÿcÿMÿáè|%ÿVÿÇ@o3à²-ID P í U  Ù O µ :þñÝ›7œn³í+‘ö®w›´#‘hB•ç ¾ Ê ýöŦ_)‰ÏWÅ5œ°$£RÎ(hÍø3¿ å ³ £²~7bºv¯?p ž 3Ô©Úé’B2k±²…`2%6бxÿ©ÿœÿí7 ÿ¸ÿ€ÿžt]ÿæÿTÿ7ÿÉ~Ðbÿfþ­þ˜ÿ©7‡þƒñ—°qX(­ª¤BÐVЕr[OAåža3ðÞÛÄÕô_ËJsÃO¾ $ åRj[Ö5„ ²OÕp¤×,G†© œ ¬ 5 /+¸Ïý[ÿ߯é¶*ÿÝ&Ûv¥còÝ=?âp?Z“¾£roL:/Z€ŠRÿæÿ›ÿ¯ÿù!ÿÉÿ˜ÿ½†ÿ—ÿoÿܰ46ÿþ¼ÿ^¾å>ïM^n¬çëë·%µkQo™­ÄÝø*6#øØÒü!tÂLⲇu]A1÷ ¤  ˆ  ¿ z & s ¶ j  +  ¼cf½dRaÂÿý­>SÅ ÿ¹ ¾k›Xë%im"¶d\‡™—m‚VQALa†wÿÇÿ©ÿÑ3 ÿËÿ«ÿÒ8lÿ§ÿž¯)ãÿïþôþÿÿûÔ3Ìÿqÿ6ÿaÿwÿ¡ÿÀÿß"9 ÿãÿ¦ÿ™ÿ°ÿ°ÿÂÿå8_—ÀâÒ¨lH7.Xp° ‰öjà_âeæ_ìEŒoHÉB•ÜQåÐïçÇÿ¬ÿÿfÝ»$ÿËÿûš*o\$g~EÙ†frŽy_]q“GXYUTptPÿÑÿÁÿé!1ÿÖÿ·ÿÖ#t†Iÿøÿį-lÿ‹ÿÿ3òƒ‰ ¶l.ÿïÿû[±éôÔ͸lhwpv’·×רz`=0;ODHk¦Îþ,zßVÑT7 ¬Jå|K1d¹ý-Õ$Tÿ®ÿ­ÆPN×<ÿø5¹:X+ 6k‚Sùv|~yP:S€˜.HZ`atwh7ÿîÿÆÿÝ-#ÿÿÿàÿâ Kw‡cF°ÝMÿ¢ÿ&ÿYÿÿ×[^DÙsÿÚÿÐÿËÿýB†¨«À¼Ÿ}v|qr†¢¶¶«“„sXB=3 ÿíÿçÿõÿôÿÿ 0Y„¹Ã±p4ÿòÿ©ÿ}ÿLÿkÿ¾6ªÄ¢*ÿÿdÿŠ$É/Jóƒ<H¥ý/$;k|q5ï±–‘~jKHj• 9ThnqfcIÿäÿàÿý " 3²£ad¼â™ÿýÿ‰ÿ‚¨/{R ¡[7 #Pi€¥º¸¦žœ˜œ¨´¸´°¬­­«£›‹sfiy€Œ¨¶°”d7 *X¸öÿ¦ÿ¸ÿŒÿï˜9€Dä…g’ÊùöâáG{„^=þäœq\Viƒ„1L]cZOLfe/ÿòÿØÿì */";m—°šb7;sÈÞ–ÿºÿÀ £(YHé¡f0+?nˆ¾ÐÒÄ·°²¼ÃÈÍÐÖÒǹ¸°•v^\i~}ˆ€b8ÿõÿîÿ÷)Db}²¨[ÿìÿ…ÿ†ÿÊcUYÁšÅÝìéí3dvmBüñäÁ“bKMgy|sC\_XF57[jE ÿåÿè /-";ROT€§¹™M$O¡ÛÄbÿþÿÑ {éðÅ‘mu–ÄÚßíïéÙÇÀÅÒ×Úâçîå̰© €bP[v‘˜Œ…u^PN_m…¤¿ÕÖ׺›Wÿêÿ«ÿ¦yßøÐ®½ÝãÖ¸³Ð @]dM=&ùðÝ·ŠbPLZdfb4KT\S=0DXY9ÿãÿõ#@A)+NY^oƒ£žb+#X­×·WÿøÿØÿúX£ËÖ¿«ªÅëÿ ùæÕÍÏØÙ×ÒÏÔÔÇ´­¥‘x€’ ŸŒt]OK@FRy¯ßøÒ‚1ÿöÿ»ÿÍ m¾Þß¿©©ÈäàȱµÒ2IP>1 ÷Ë—tfZ]eh_+=YcV@9A[[+ÿúÿì <[B9\qgYm~a0!Iˆ¸¦_ ÿÜÿö+y©½ÈÒð ðà×ÏÍÐͼª¤¨«¬¦  ¡¡ ¢ Žr\[`NEIn¥ÐíÉ€%ÿßÿØÿò9¨ª“•¤¶ÄÏÉ´¦¬Çáü%32(! ߬”‰qbedP)E\h_G:ThW+ÿùÿëEXG)0Xjovy†€[:2P†£’Tÿóÿø.[”Î8LL64,òåÒÊÕÙÄ¢ˆ…’‡Ž—™–’˜•{cdqioŒµÞàɃ(ÿìÿÖ6m†|e`‰¸Ç¼¶¬ž ªÈè +64ÿ$& Ú°ª§‡bUH',Cbm_HISaSÿìÿîRhD7f‰Œ}…ЇrL:Inp=W§WtnHB<)þìÐÄÐÚÌ«‡rr~|wy||{x|Ž—ˆwv…Œ¡Êäê¾€:ÿüÿôMmiO73\¨Ýת˜•‘œ¦Äî>A. óòóѸ¸±‹Z>( )E_rjO7FT@0]^A)(Ck‚†…|}xfVMWpƒ†oL/-qÝJ†[QD* ùçȳ°¸¹¯œ‰‚…ˆˆ‚zwwuxƒŠƒ…–§³Æ¸‘V# *Vo`A4E`ÄÚÅ›‘“‚‚»ö*õ üëçâÚ¹†P-ÿþ 5btO! 9NM( 9^jS5.Gr‘ump~‚mTIUq…‚e91N§`x\XF* øçʱ  §±±§˜–œ{uz|€€ƒ‹– «¤•m4 !Ffwd46x«ÈÚË´›™šyÃûðäð'óâÞèåÍ›i>!  .L@$(8A8($A[]O>En™©œ~q_MOc{…z_TZ’ê;`Y`Q:÷àÌ»´¯­©žŠ}ˆ‘~iepy‚ˆ™ªµ¯¨’wX7.=YheYD$'R·ÅÔÍÀ©—ހ޳â    ûäßÚ̯ŠcB+ # ÿü  ÿ÷).+"8H8""7Qd_\s”²·«ynmocZZdmv{€˜Ï 5CWUL3 öæÝÒ¾§˜Œwnvqbbp}Š‘™«¶¸§xfdjxІiC*+3Sz°¹Ï×Ó¼œ“¶áý()ïÐÃÂÆ¶ŠV7,  ÿÿ) ÿ÷ÿÿ ",,5MC/&1Jdkkq}’ ©ˆsmpidejkq}‹œ¾ê &DOSB0õÞÕι¤˜‘€w{‚|vu~Œ›¥¦§Ÿ”‚k^[gu}~kJ2+@UsŒ¥ÆÝïèØ¾¥¤³×ý "漟–”‰j8 ÿÿ#&5-$1AE@::@Qhxztqx™‘}rlgiqvnhm€Ž£½Úô/CPD4ïÒÆÃ³¤œ˜Œ……Š‘Ÿ«´ª•{jcY[gruiVB16Eas…“­Ýþëм¸ÅÎßõ ðȘyk`U>#ÿþ  ",%*-8?B?<:3Ae‹Ÿ—ƒrw…ˆ‚{qc_iuohhu†Ÿ¶Ñê*@MB3üåØÍ·¢’Š~ƒ‰’™©µ¹¨Šodjlt…m[PKQS^j‚œ¼èûðÒÄÇÔâÝØãóûå¶‚V9+ÿûÿþ#8."09=???>3;\‡©«–ugkuwcW^lmjis„¡ºÖñ +=F9*õè×Á¨‘ƒy{~„†‹’¬²°ž…tr‡Œ‘ŒqjkljYU`ƒ¬ÎæâоÁÑßÞ̹ºÇ×άvJ, ÿìÿáÿð " ê­ð94f’Aóð&RFÖq¢¬ycRi=Ò H„ÇPã“oÌDçŠP,ø¡& ¦ < ã À £ ­ Â É · ~ <  Ô Ð Ô ò  ' -   î ñ P Ÿ à   Ö N S ç 9 Ž Ø.ŠþnýŽL8‡À=by”ÁèAÄVãÅŠKïÔb¿¬ƒbsÌ)¤ † û ÞIMaý®ŽHú¯p4ÝV^•gZØ_y±Àé6Ž¢,–å- ’ Á „ x  n - Å b  ê ê é  0 Q b J # ñ Î Á ´ Ã Þ  ! + . ( 3 R ˆ Å ç ÿ Ñ z  Ù Ý ÿ 8 K Y n Ô ' u Þ C Õ”>¨â2‡Õ>°Jâ t>ÿk³´²ÇnÚÙªÏÌŒy‹«Ûæ x+ à^K(JSO? Å]ª-âú³ñäÇÀÁ£¶órír å Y Í Z î ¢ V *  ô î Ö ž Z %    ' : 9 2 Ñ ™ p k g Š ½ ý . N l  £ Ç á ò Ý Ä €  Ï ¤ ½ é  ' ! & 3 < X z º ô X ä ] ™ ± Ö # }º‹T;9'ü—™ÏâïÜ  ?[;KyÆíÌ’vŸÓèHŸáí¸˜Ik„›ôIÇ£Oœc,ÔaK  Ê y . Æ s < *   î Î ­ ‡ _ >    + 3 6 @ 9 * ÿ Ñ ‘ I ëóÿ 4 t ¼ ö  F ` { ° µ § q < ø § z i ‘ Å ú     á Ê Ä ß ñ ) Î ì ç Þ ý 4 ± 5 â |6ä-Ϊâ–&qÑ÷nô\æ…TÇÜ1öåG*×&¿‚ìY&ÆÏÝ­q^”ßîàâé ß  @  > õ ° ž œ ½ Ç « g , ô Á ¢ { { Å ü   ù Þ · † X 4  û  $ L w ¦ Ò ù % C W ` y € } T ! × ƒ J ' 6 N p „ … ˆ z a I ? F ? X ’ Õ  ù ê ê h Ø 1 ¯ P  ÌÞðˆ€b÷³3&EB?+Mg1ñ›vïY”“zÞ[GMƒ`N’0ø …  ¾ @ È l  ± f 4 M } ¿ ÿ î ¥ $ ¾ u 4 þ  8 t ª ¹ ¬ ‚ m V : úãÐÍÎÖÚÝÞçö  0 G L N ` y ˜ ™ ˆ Q Ý¿Îé  % + - ( % ( . 9 6 L } Á  *  õ å ê  X ¹ ;  Ž qN§K”™hÖsæDzßìÍ ZZ’P§¾g½÷Tyé¦s-ºl A Œ ß ¤ ” ˆ ' ¯ ] 7  / a … ‚ v 8 â Ž Z J 8 /  û÷öòáÕÛèøëË‹K Ö¬{V0%$8K]`j€¥Ðîøòåö sÔ  G 9 þô   + 8 I ^ m … ¯ Í Ô ¾ ¥ ’ x › ï ` Ø  —  !WÙS’œ\5ë™+ÞLt2¯z*ÁYãd(lbwdø½žŒŽ k Š Ó † 8 + @ 0 Æ @ è Ù Þ  N a H ô £ Y øìÕ©|>÷»Š~t­ÕÿÓ\ß_ö¯b4üõýü7b‹°ÊêO´JòmÁ·™bGIMi‹²Óåâô / u ¤ ® ª œ ‹ © õ T ‘ ° » â  ª W bƒ£œZ ­`ê•.z³¿¥Ž‚¦ð_a=<EW n Ÿ ·  ³ u l v h  Õ Ä Û ì æ Ì – U + $ 9 Y =ø]´ ƒ5ìØÆÙí6OxW oÍBܵ…{wn^E7/Ed’¸Ùð dÂdÆT\0 ïJ½<¤âò ! 8 T — ‡ n f Œ Ì  E h ˆ Î  ´ m E £†äµ“o´½ŸÅÀêÎ_É{ w ¶ z Û ~ P I  ì » ‘ ^ N n ƒ n ™0í9x¯bÑʼÞ2õ$>Vjmo^^,ÖSÌq9FTrŠ‹}]?+*Cgƒ“¡—±ÜPàŠ.Ó¾˜`0J~Ç~ReB)<†ÙþùÞé , ù C ‚ ° Ù  d Î A ¦ æ ) ƒ¥a&ᄌ5 – E 5 J , ë ¢ i v N ³ ð s 6 ì Õ ß å Á s Ú±¦©‰9Ç^# µ[¸ö*fÑLˆ”a/çŸc:Þ£eH@[u‰•‡kNEIDGQamt||moxÀ!¯B³æÃ¾ŠUAôcN ݈%¯ý  2 X × ) Y f P 3 G Ž  i ¶ ì  R ¶ 0 Ô|z Û ~ j h u Z = < ? ]  ^ ” 6 2   í‘(ňZÎlìÜå«*^¡p1üR©$¥CØr3 .AIK7 ýÓÀÌææÞÝâçñ  ÿE”æ2t˜µ¼ËÈ©¡Ÿ ͧR{O ÿ…[_3˜Ä¶Î  d ­ Í ´ ‚ w Ÿ  ¦  N D ? H ` °  “ ¸ H   ë á Ý ð  $ ! º c1I2ÙªK×Vì–2îǨ{±iì©»ÉÞàʯŒwUß§WSb‘¾è %õ“d/ 2Llˆ ¢–‰‹¨ÃàYª8Y,˃yÝbîD_T†ýïý¤Þ6Ç  ýÞ  o ð 9 J _ X C A f • † ’ ‹ p ? ) D q ˜ q „ØX&åe.ýª7¯1Ú‰w™ž_ u/˜1¢¬ŽŠ˜kMdu›¹äT‚–~lBÓ vE& ÿëÿÙÿáCh·Íӯĵ“uZv¬‚ÞC4Ù.ˆEKÍ[Òóú •zœ.¦Ûa¸ eN.hè U « û  ð · š ˆ näòÖ±£Ëîþ¨$b®$Áƒ$פ\vßmF6He<Ã)­š»+¡ÕÓdåZÿâÿ¼ÿ³ÿÿV°ëü  çÀ‹]*ÿòÿ¾ÿÿsÿUÿMÿTÿXÿ<ÿ$ÿ#ÿAÿ]ÿ†ÿªÿÚI|œÆÁ YÿíÿçR©f•QåFÿ¤ÿbÿbÿÞ_é;…ßqç°@¤Ô b ‰z¶4à 0 z d 4ß¡€}BS=/"/ü…ð+rÐ7ÔtO?:(ãgÞ =hqNù4Ëxè ÆG—÷µœþo“Üúα|IÙ¢d/æÇ±›„†šž‚S1 /\Áúÿë–5Ñ‚Z(5U·<•Ídÿ¼ÿ ÿÿ—r[O6Zì²€Yq®^o™éWæM‡nRêÙþwŽvL Í€þj­ì:…%ó þÌ…:0j¼Ïʸ÷lKBÓÉdIr½ s’ iÈ’pA! ìåé2FHC1/ß‹:æ—PÊ‘vdhsm]Ôj.ÿÑÿ[ÿ@ÿ[ÿÛ„ÞÝ:ÿdþÀþzþíÿ›P¤Ÿ…žû¸1kˆýZ©ýrà<d‡vI-^'FF8쎶KÔC –wŠÐòþëý8½]æF¢Ÿôƒ å É z ¶ ó ( € ö q äg“’" ¦  ” V = Y ] m ‡ ¨ ½ Ù  0 ^ } œ ” € C  º a ä c Ê - úuð} ©Fì”;äz |ùPq¾$>µx$#¨ªÿ±ÿMÿx.¾üÝ•j½|S¼Ù>›þC}½zãKwnV{?|¡ŸHàY&ݪÃî0AxÃ}kƒc,ÐÓ 0 ý Ñb£†rTýœvÀ"4°Pú.}à%Imy€’š‘rb9®NËQ¶RzŸÙ-‹ ã 3 Z m n pžégÛcÿzÌ÷ oûsÖ  ÎÔÿýp¤žL+x£þ&:{ÎR^s«¤>>XÉ(¿t%å®^6\´.yØ+ø‰ ‘ ­ ó ‚£ KR^{ÈL0Öú 5 Z ¡ Ï Ó Ê Ï! !Z!×"a"Ê###"Ü"±"€"^"+!ß!‡!E ÿ µ EÂâ3UX_†ãW¿æyµŠ² Ô : ´ D Ô # E )ꓲ œ^ê–¡aYj–MrÏQž¿Ûô1VF.(oìzÜüg“›^ÔÊËײÉÉ¡†´¦S E k ?ß=*ÉßÕ ©Â!"ä%-'M))Ì*b**ó+l,,†,ß--%-B-p-¡-à-ì-Ù--,¯,T, +Í++E*ú*Å*€*/)¦) (L'¦&ç& %+$#"3!²!S! £ãµYÈCÅ?÷Âð:¬@< , ’  • ˆ(—Œ;Ô•ÿÖÿßQÛ;Dä oɸw@áNòÝ<•s'€ìK . u FÍfгn:Î "%r'X(Í*+þ.X0ò345 5‹5ë6—78~9K9ï::3:9Þ9¤9~928É8:7©7.6Í66E65ç5Ì5¾5‹5C4²43H2¢1Û1/ð.»-¥,´,6+Ý+´+|+*})Š(–',%­#×!õ Cà£õg÷w†\Á‹n9Õ ¢ è–"˨18±i=<[Pg¥”лQntÑho^éÆ ù ÿ Í,û…”cÖÝþ"|%¨)=,/>1$2õ4Ü7A9Ò;? @7@ÐAfBDCQDlE8EÕEâEØE…EIE DÜD¡DOCðC“CSC*CBÙB°B£B¦B¯B†BKA·A @5?Š>©=¨`@—CE|=x<§;è;: 8ð7l5Ç3ç20^.£-a,P+¾+‡*¿)z&Ø#× bv¦ö s RŠ[JJѧªKÿåÿ™ÿ™ÿÀAa| ¹ ± ëIý ‚   å‰ñù±"c%S(¯,.ï1—4Y7K:q=ž@±CrF*HzJ¼L°N¸PRZS±TÍUmVV¯W¨XÐYöZÏ[z[¿[ý\#\h\·] ]F]]†]€]K]*\Ó\M[¿[][#ZêZ©ZfYëYDX•Xµ=';‡9Ò8<6«5‹4Ü430¾-¼)¸%ù"hpòT“ .ØÕhú œÏ´d"ÿ¯ÿqÿ{ÿ¼ÿÖÿçÿû 1Wõc/Ló\0ƒ  t$ 'a*}-­0ñ4`7º:ã=Ü@îCâFÅI‹LfO!RTFV WRX¢YÕ[K\p]K]µ^^‰__`‡a¦b£cdd¯e-eÃfFfÃg gYgUg>f×f‡eæe d"cfbåbmba·aJ`¨`/``_¸^ì]î\À[¼ZãZ.Y`X}WU‹S®QåPHNÃMŒLmKcJ7HüGÜF–E:C–AÇ@>§=p<‡:®8*4J0B,(¨%8!j ç£Ï  hÙuŸ¸ø€ áV- ,úb„Ê©À”P­!Š&*--÷1¶5<8Á<2?±C)FµJM4PR¶UTXBZþ]Á_‹`ÉaQb,cd dÇe5ePeheËfvg„h…iŒj‰k[ll½mrmúnsn¨nânÒn¼n\nm^lSkjimhÏhdgðg„fçf—f´fíféfqeÎdôd:c c+b¦ba _Ü^`\õ[’Zñ:ÿ6•2Œ.*£&i! 38€R[‰ ‡ ®¤±|F–ÿý&×$E"Œ í á û"ã$Ø(l,`0ê4û8Ê<¨@@C¶G J~MõQ•TÂW‘Yá\F^²acëfg,gÑgíh}iii¶i¦ihi6ibiÄjkHl%m mÛn’o!oÁp2pp½póqq'q q puornml8k†kj’j/i§i‡iÎjEjƒj^jiih®hjh(gÛgQf«eØedMc}bˆaŽ`f_-]è\Å[™ZWXöW¢V(T«RíQWO!LºIeEýAá=°9Q5(1,Ï(Ç$²!pÈt­pâ˜ É ¦o€L«VÐM61(.y,¿+!+-+]-k/™3V7O;Ô@CðGØK_N¹QûU”Y\ˆ_;awc;e]g‰iæk±m/m»nnnnnn…n(mºmAlÅlªlÅmJm¾n\ooªp=pºq@q­rrTrÁs2s°sêt2s¸rÊqfp?o\n”nm›mXlömmŽnInÑoonÝn—nCnmãm®mOlÕlIkÖkhjþjuiêihföeúd÷cìb¾a`1^Ñ]0[ºYžW;TPãMID¨@:;ë7È3û0 ,š)~&¤#Á MQ© ƒ Âñšia)ÿØ<:9Ÿ86†6¯6ÿ9;1>¶BgF£JµNuRUX/[>^»aÞd°f”h-i{kLmn¡o›pmp³qqq8pïp|o¼onbm m:mmLmsmÊn&nžoo‰pp‚píqr@ssùt…utÎtrÖq½pÏoûoonän£nìo‹pvqsFssrÃrtq÷q|páp8o‘o nmîml?k j:hÂgd}a¢^\YrVåSOÔKIG+B<Ž6/à)g"Öw㉠”~ `m_{_R_M_÷`a•bpdf,h‹jZkÚmpo#quÔuÖvvMv”v˜vgv uÜu¢uWtâtlsÒsJr|q“pVnüm°l{kÃk&kjûk^]Ù^…_L`ðb®dßgikl°n%odpÉr!s”t¥u–uÚuþu°uŒut—sÐsrDqq pžp@oÇo 7Ã1³,rrbrÚs9scsgsKsAsWsRsºtgutvwVwÂwºxwÐwNv\u’t®sérÍq…o½mÐkàj_hÄf×d‚b_Æ]‡[ÎZ-Y,WûW°W“X¦YÊ[é^`Çc•fZhýklënmp,qÅsbt…u‹uôvPv?vKuýu”tàt1smr°qüqXp¯oùo)n`mqlˆkOjhVf™d®bÇ`ý_.]Ë\X[Ë[j\4]!^ä`”b¢d†fËi_l nŸp—rSsrt¯uŒv•vâv¿vu’u t›sís qûqCp0nílØjÝgÅd–_û[U7O|IYBô<õ70qÜr,r¬rúss$sss ss‡tQuLvvvãvÛw v§uât¤s±r”q„oän k—if‰dWb&_¬]Z–XeVNT¿S/R(PæP¦P¼RSfU¬WóZý^;a™dÅgjiÖkìnMpcrhs½tïutuþvv=uþu¯ut_s„r²q¹p½ošnwm0köjig0eRc>a5_\ÚZ¸X–VéU)TbS©TxU§XZ`]_¢@¤BÌF`J8OSµX‹]:aºffj…nŸq|tuQvšww‚wJwvus>qŸo)lfhóe’b^Û[ŠXTpPvLøIïGÇE›CÓAº@.>Ð>o=ä>Ä?ÛB±EÆJNR‘W$\5a®f¼kan®qÍsÖv&wux™x™xPw¦wˆwJvÈu×t»sÂs,rÛrwqÙq8p nÉlÒjÎh'eb`_#nÚo…p@p´pØqqp×päq@qãr‰rãrër¯sr q¼omcj[gjcä`e\XXS«O]K¯H.EBì@Û>¥<À:Õ9]7ð765ì5ã6Ê7…9`;H>»BxG€LˆRW[\«b(g&l#oÍs)týv×wx5wòwµv—upsqÁokðgúd_ø[òWÚS»O“K&GOCÐA]?=I;@9Ï8z87™8g9\;æ>†B‰FK”PV'\ a©fük!o$qètÄvixxUxTw¸wˆw6vÜvtñsÞsDsr·r>q±pÀoÓnmlúki+fïd§nnÅoœp(papžp«p“p²q-qÙror rŒr3r€qçpŸmãkHgÆdE`)\,W£R¸MÕI,EsAø?d<É:Ÿ8H6X4…3/1Ì0Ù/É/m/5/å0l23Ô77:æ@E>K4QWK]¼c¹išnr#t„véwÆxx.wïvÛuÎsòrCogl'gÊc‘^ÍZUOýKF AÐ=ã;8k6|4K2ß1™1Q0ä1¬2™4õ7C; >ùD;IƒOªV\TbPg8los uw8wÜx*w—wHvÐvŒuçt¿sšrõrÁr†r;qÎq"p|o™n®mˆliki¹mHnnÞolo²pp)p"pQpíq¤r-r>r!q«qØpäo%kÎh¯d§`[îWƒRšMGêC-?·<}:'7¡53?1‡0/-ã-,++6+œ+×-$.€1|4¸9…>7D#J,QX>_e¿jàoÔrðvwSx]xwÒvÊuÙtrzo›lZgãcž^‘YiSµMäH6B†=ä9ž6¢3›1v/-¼,–,y,(,æ-Ë/ß1È58h=TBgH§OU°[ùavfúkMorMuv%wv·vuòu¾u-trör4qàq¡qbpöpNo¡nán,mlàl0kxl„m6münwnºooSoPoŠpIqq—q†qbpÍpÒozmBiQe¯a\`W"R1LßFÕAe<¬9Œ6Ž4y2"0E.[-,+‰*Ð*))i(â(i(g(:(û)Ö,>.Î3 7%<õCJ’RVYÿaQg2lõpÝtÍv«x°9¥52'/- *»)s(v((V) )Þ+˜-/¾2’7;ÐAøHIOU[a±fÑkÖoLrªtOuÍuæuèuYu6t¯s¶r‘q²q:pôp¼pJo¢nínJmÂmzmFmlçl$l£m.m{m¬nnBn9n|oYpEpÍp¸p°p oØnkJf³bh]#W»QñLtFÜ@ƒ;=6è4p1è0G.j-+Å+*‚*G)ì)„)(†( '¿'H'}'É)h+.u1Ë7B=(D×L¹TÈ\†ci’nLsuw¼wÈwÚv‡uUs*q+nj€eña¬\‰WEQJaC™<Ï7l2 /œ,„*(c'R&Ž&º&ª'<'â)0*B,V.ƒ2Q6[;óA¨H%NTå[ja;fók.o>qsÒtˆu t·t½tBs|rnq|pÜpŽpQoÉnünmZlÄl“l}l‡l}kÃl lZl…l¬lòm2mmknfoup oýp$o€o+lØi©d\_OY>SLºF¦@Ë:.5&1D/ˆ-Œ,z+@*†)Î)x)/)(Î(y('˜'-&Æ&1%õ%º&ˆ'K)ß,ƒ1³7d?8G+OŸWÓ_&frlq›t°w`w–wÅv\u$ràp¿mriÛeCa[ÒVjOÚHëAÏ:Ä5$0,Å)r'Ž%›$ì${$Æ$¾%%&m'((À*\-†0ô6;;A‰GÖNžUˆ\b]gOlo rsEtHt3tnt s{rƒq„pÆppBo¤n®m£lÎl,lllSlwlll ll-lMl}ljlÎmÔnöo¥o¸ponnàlh]bm\–UËOHiAë<5t0ð-¨,°+^*ß*<)é)‘)Y)(à(Ÿ(E'Ú'l'&Ç&I%ì%w%Ì&(*X/H4®OLV<] b¡hk¸ogqPrùsQsÚs sYrqpÓp›pbo¹n milik¤k}kxk¾këlÅl‚l>lkùkêlll¤mºnío¾oñp„oÁnèkpgR`ÆZ*R¹KD¹=í81ˆ-‚*Í*‘)õ)ù)º)…)K)(ç(²(x('°'7&Ø&v%ó%†$ý%%&Õ(Û-œ2Ñ:BA¦IõR:ZEb€iohrÆuŽu¹vtótrhpÌn8kƒgÐdg_¦Z„SÚLñE•>^7ü1Á- (O%Š#"z" "a"["_"C"l"¡#}$=&$(,+Ð/€4ê:A{H®PWc]žc­hl‡oq_rrêrØrãrOqlp“pfp2o‹nUlîk¶jÆj•jjðk3mímel×ldl,kèlllÊmÆnÜoÀpp¨oªnhjaeÚ^íWÑPHÃB;(5e/H+Ë)ƒ)§))Â)š)I(ý(Á(ž(‡(i(*'Ò'l'&Õ&y&B%ï&A&l(D*\.ò3ç:éAãIÈQªYjadg¿mÌpçs_srsÂsrqmpznÏmjPgÊc©_X¼RJ´Cq<ž5Ù0O*·'$#ñ"ç""["S"Q" !Ý!É"B"«$%X(#+/º4 ;MBOIþQƒXI^ácýilXo_pŸqÆqÝr:qäq*pZp7po{nPlØk~j{jAj3j•jØnýn!m?lˆl(k¹kÅkîlmknToAo™p7nùmPhÈcã\­U0M7EÓ?,8>2§,ò)ó'ø(F(X(·(”(?('è'ç'û( 'þ'Ô'˜'r'Y'3'*&ö'\'²)—+µ0 4 ;'AÈIbPûX__âeÈktnTpŽp‘pÈp@oòo‚oJnªmûlNjÖg{c¦]”W@OÎH“Ao:B4-¦)Z%$/##C#;#2"Ë"D!Ç!±!¦"^"ò$×&Ò*Ç.á5);äCÑKžRùZ_Ùeži”mfo5p±påq†qgpÚpoôoÃoMn9lÅkgjnj;j)j„jÂoónÖm¶lÊlEk³k©kËlYlØmon;n{nïmckTfia6YßRFJUBû%!$¬#õ#-"©"N"’"›#Ã%(&+]0û7&>ùF½NnU×\ bmgk·n.ppoqJqZq prpWp.oåo mºlvk¥kkck—k¶pËownmlXkœkrk„kól0l{mm2mxk¢i7cë^aVÕOG?°9*2-,ñ("& $l$«$Á%4%C%Q%ˆ%Ú&&b&Ö'd'É(U))ô*­+H+ ,m-d/š1â5º9¯?$DèKIQ“W'\w`xdžgi%iÉj{jÙkll8mGn'nånÇomIkeê`%X¨QJkCz<ô5í0h+[(ù'0'&¦&_%Ù%$8#‚#"ó"—#!#À&,(š-3:¨B8J!QÇXœ_tdÕjLmroÕphq…qÈq¼qSqQq>q(poPnmgmAm m mqZpnªm…lÇkök¯k²kõkìkßl6ll j gNa°[ØT*L]Dv= 6ˆ/€*g%ï$5"Ç# #!#§#í$F$»%2%x%Ú&i'7'Ø(Ù*.+µ-.".ö01q3Ö6T:> CH9MšRÝW@[R^Ua‘c¾e“fgÃhÛjk‚mnZogo‡pn­löh4b§[,T LøFS@9:3.+")(Þ(.'¸'&X%u$»$2#ý#{#®#é%Á'‘+å0Û8?DG*NßV]Gc3iImoÞp´r rqr£rnr†r‘r¾rUqKp#o‘ooo+nþnÌqùp¶ohnDmwlšl?l;lTkýkk kGk*hÛeÂ_ÇY QÖJB7:Û4i-g(t$H"Ý!œ!ç!ö"~"á#m$ $¬%%¡&N'G()p+D-x/m12‰45Â8[;.?C$G±L6PlT”WÎZÅ\Ó_`aÕc dŠf|hj¸m"op¦qqÁpwoj e_]òV¬OgHÈB·<6d0–-;*þ*µ)ì)\(˜'´&¶%ß%;$Ö$'#û#Á$þ&.*.“5›<™DƒLJSÍ[Ka¨h>lro´pËrZrêsSsGsps”tsÜrëqÄqKq4pîp¤pSr8q*ponNm…m*m.m%lkÌk¢k"jèhne ^ÆXhP˜HÒA,9á3,Š'½#Û"µ!ž!å!æ"V"¸#G#Ô$o$ð%š&N'd(Q*,T/.1Ñ4<6[8t:Œ=o@·DÓIMPÿTWY.[\P]Ž^e^ì_èaZcÎf`i_l‰nùqqžrEpâo“kafd_WÂPWI C·=‚8(2q.ö,°,\+™*õ)þ(Õ'¥&¡%È%2$b$#Œ$l%4(°,û3å:¼B§J{R-YÎ`egAkÃoNp’r:rÕs^sls’sÄtptŽsÃr°rXrZr+qæq“rXqup‹oªnÿnRnnm÷m*l$kÎk-jØh1d]÷WeOGÐ@C8ü2¦+¶'# "Ý!ý"?"4"ˆ"æ#g#Ç$?$·%{&8'…(º*û-¶124ˆ7®:}="?ÁBùF±J×NéRaU²WÖYÌZ¨[p[±\\d\A\á]û`¢cgXk.n!p˜qKr(qplgR` XçQ„JÂDæ>ð9à4T0Ü.“.*-g,¦+y*(’'K&!%@$9#¯##—#ü'+1Â8v@xHnP`X0_ fCknépAqérxss?sUsŒtjtÔt?sSs&sDs)rìr¡rqbpªo÷omnànžn½n‰mŸlqlkLjæh+dV]®W OAG—@8Õ2v+v&÷#Ç#T"•"Ç"°"è#7#—#½#ú$K%%®'(}+ .'25ç9£=@*COFÚJãNýRäUðYZ¤[Ú[Ì[»[j[r[‹[ [k\^aaJe=iDl\nÑoypeoenjÒf,_$X-Q JeD§>æ:(51Ò//.E-b,*J(§'+%¿$«#ƒ"ñ"D"É#%Õ)o/î6{>F NÀV¦]Ÿej"n*o˜q7q³rcrœr£rÜsÛt‰t4s†sŽsÑsØs¹sqÖq;p±p,oÀoHoo"n×mÌlokÒjÿj‡gÂcÓ]VkN­G"?Ç8‰2+&Œ#—#_"¬"Ã"›"Â##d#o#ˆ#½$c$ä&J'Î*¼.2L6‘:Ì>¤B1E¾IM¶Q¿U—Xd[S\{\ô\[9Z}Z9ZFYÐZZU\c_cgj?l«m=nml]hßdi]žVêPI»DK>Õ:d5§2­0ˆ/Ô.ò-æ,V*h(œ&þ%i$6"ö"T!ž" "#$¯'ô.-4‹<¤DÉMU\c¹i mOnåpq qÛr0r8rzs›tŠtwt tMt·tâtßtÒq”qp¢pEoìooo on¼m l5k„j¦j(gjc„\ÜV@NšG1?æ8¥2*Ï&3#?#"V"Z"*"K"Ž"Ø"ß"å"ý#s#¿$ü&b)O,0ò5M9È=ôAæEÓIÑN$R8V7Y)\@][]˜\`[qZÃZZÏZ¤Zø[I]_RbÄfuiJk^k—kÿj¯i«faZúTcMÇG¶B‘=N94¨1ç/Ï.õ-ñ,È+*)A'x%ë$i#U"5!²!!Ž!³$'-3 ;CcP\­V!N”GF?ý8¯1ù*%Æ"Ñ"»!ÿ"!Õ!ï""L"G"9"."v"”#«$í'Î+/‚3ì8ª=;A¯FJ^NäSWIZb]^š^³]a\z[í[Ä\\#\£]^¬`ËcÝg:i°kqkFk3ifgçd_|XêRIKµE¿@À;‘7f3,0‚.^-`,=+ )x'°%ü$‘#5"Y!|!3 Ë!G!y#³&j+ê1¯9~AIÙQ´XÎ`uf&kmDo]pp÷qaq‘r sZt…tµtŽu u°vvnv²qŽq,pæp¼pioÇonñnymPkøk`jœj$gnc›]V»OFH@©9;2M*ž%²""e!Ÿ!©!‡!ž!²!Ã!¼!¬!Œ!­!±"›#&5)/-€1¨6v;U@XE-IáN½S9WÐ[D^½``~_‚^ò^¨^¸_1_g_ý`‡bcñfŽimkIl}kÆk/hÕf¥bB]AVˆO»IC>8Ö4¿0¹.?,-+ )ç(²'6%£$"Ú!´! ˆ ‚ X ø!T#‰&!+c0õ8ž@‡HÓP’Wš_.d÷jlŽnÖoŒpwpÙq q³s t1t[t2t«ufuïvmvßq©qcq-qp®oåon©n$lûkÇkTjµjIg¤cø]­W}P#HøA…9ý2Þ*ÿ%æ"š"Y!„!!n!~!w!r!o!h!@!K!C""Í%'Í+ê/Ë4¥9Ë?]D£IÃO SæXÒ\”`gbbÔbaaea®bOb–ccedšf_h¯k&lmmkÄjçhKe›`¥[T MFz@W;K62.n,]*‰)~(6&ç%o#ñ"n!F 5ºFil 8 Å# %›*Å0T8?øHAOéVÕ^Xd(iXkônGn÷oÙp9p”q:r”s­sÐs¨t tïu’vCvçq¸qŽqZq@p»oÆn³n(m—ltkpk.jÊjˆhdÆ^ËXÖQƒJXB¾;3º+¨&R"»"=!:!sEt uuóq…qyq:q pUo-mãmlxkZjj j´jéi!f¢aF[®TÚDÜKPúW\Da–dÎg2g´hPh»iÂj×k©llzlšlÀlÂm:l´k¦hèfWb]ªWªQlJ±D1>J8`3¹/,,b)ÿ(Ú'™&~%#’" ÊíMÃþDx k#&+k1<8ç@¸H¡OîVx]±c&gÒiòkïlrmmYm¥n=oYpSp„p©qlr’sƒtxuWqyqvq&pâp nÃm_lwkÍj³jjÇO1â.› !#×&Ù,11ë9cAH³OËV(]5b‰g ikk l=lylÓmxnŽoo³oípÎrsttßq)q)pÀpho}n0lËkÕk*ji¢iâj[jëi¹güce^„WZP(Gæ?¼7œ.å(V"ø ¬D§,%88&ùãß(YÙ  "%±*z1a7ý>ñEŽLR¾Xú_‚dgÊiAj¤kklÀn%o¤pŒq,pép¯oÇo5mdk4gBcZ]ÓX Q5JACŒ=7é2É/9+É)Ó(' & %#Ñ"{!4 H{¦†9˜% ´!÷$Ñ'ó-M2ý:JA¼I:P,Ve]Ibqf½h­j®kOkál lomnnöoobpUq¤r¡s~tMqpþpgoênèml'k#jziwi&iŠj?kj(hØd¼`\YxRZIûAÚ9´1*$$-!*/ ê #s­MÜN b#´'÷.±5{<óCìJ¨Q†W÷^Ñcøhgjzl>m n^o¿qxr—s3rârÚrqdo!lvgÃc\¹V&NÇG[@Š9ÿ50#-*(q&è&%%f$¯#§"€!h ŽÈSѤTÁ]!"]%R(“.3Â;B[IµPV¶]‹b™f±hj†k;kÁkÖl3lÐm°njn‚nÌoÐq,r!rés²oåoêo]nônlðk¹jËj,i-x*ª(&â%¯%<$Ú$w#Á"Ð!í! M·å”!K"Á%ú)’/R5R<¤CüKCR0XT_cÐg€hújèklkåll’m;mÎmÖn%o,p€q_rrØn›nÖnin(mvlkƒj­j i"hïiYjQktkfjöhdð_X…PNH‚@}8/0Þ)¾$ý ÀÕÕ;¡©‡—›Ñ‹þÀp· ¯#K&F+Î1ù9”@ÕGØNT¨[?`óf•j4m3npo®p§rbsÌtÁt¾tésýsOp˜m€g¸a‚Y—QÔIéB;)4D/B*…( %Ù%;$v$`$a$H#×# "N!† ¼ ƒIõhë!´#O&é*û1/7„>èF;MlTzZža3eh˜i’kIkðlkÃkÅll‡mmmfnsoÄp”q:r k)køllolPl kxjójgi¢itiÉj¾kÿlPl@iÚggb\$T?LµDÄ<¹5J-Á(@#[ är¢o J…„T P!J#%ü*µ07#>DñKNQ9W~];c!gbk lËnRoQqršsèttrÎqÞnãkep^¶VjNyF®>ø8<1^,l'Ð%¦#Ï##6#k#µ#Ò#‘"é"W!³! ‚ ؆ù t"d$B(X,ú3¡:@A¬IP(W`]sc­gViÖj[kÏlWlBk«k}kk×l/l4lm˜nÆovppÕgThÀi…jƒkkŠk|kRjâjSj9j€kul×m…mÑkòjeY_ìXUQIA<9«1¾+„%õ"èùË’5¨Št²áVÌ•V †!ˆ#%f)L-Þ4O:ÖA“G¨MjS†Yc_€d:hbj­l¿npq†rüs7sBq¼p˜m-iFb—[`RåJÝC9;œ5.w)Ñ%€# ""!ö"a"à###"x"!¥!0 Ó | _ t è#%%)«.Ä5¼<~CÝK3R\YÂ_ÅeŸh³jÁklIl¹lmk¡kSkUkMk{kƒll÷n n§o!oðaCc”ePgLhÔj[kk|kTk,kAk‘lxmánÁoFmÖljhFcƒ\wU‡MÂF2>š6‰/Ê)§%ê"` ´úKzB ?jØ;á Œ!‡#@$Ç'æ+ˆ16¿=B«H8NSÒYÌ^®c eæhªj¨mnÂppp¶pØo0mÙiûet^SV÷NµFÑ?o8 1Ú+”'X#v!î ¤ Ï Ã!7!»""!Ñ!¶!!T! è ß !!­$& +†0ñ8>ÂFM]T{[Øa‰fÏiWk,knlœlólŒk­kbkOkjãjÔk9kælœlëmm¦[^Xacõflhòjgkgk‹kÐll{mTn»oÂp{oyn‚jûfè`qYùRfKCr;33ã-&(­$t"1ÙÑÂU îpÒLµ |!["Ó$&h)-2|8K=•BðHiMùSÜXû]`ôd•719+Ç($3!ܲ]¤äxõ e §!!x"]#9$¿&0(¼+/‰3”8/<’A9FJðO‘S¤WŒ[#_Ebeºf¬g=e9c‚_Y×RvK4Cu;Ô4÷.V) #WåKÿŸ&% ð È!¬""!Æ!š!Ü!é#H$î(£,}2O8d?ŽFtMŒU[’aïeìi?jtkÜlZm+m9lÕl kãkXj,h¦g–f†eGcÖb_`ð_ÆDJý:51]-¦+(]&¹%$r#ù#÷#¯##}#®#Í$I$Ù%Þ&á(M)+‰-Â0Í3½7V:×?;CÿIKNðSUWHXdY3WUPMKD4=^6¦0+&H#P L¾_äÞÛ[·gE7ó •!!û#?%b'4*C-~28&? EìLÖShYh_ñdåiéH^R"ZaUeàjflÜo^p]q7qJq¿q¬qcpwo´nRmj¡gìd0`š\cX=ShNHßD @:<¨9±6a3u0.y,á+ó*›)Ÿ(Ó(([(S'ü'ç(#(±(þ)‘*+n,×/—2n6Ò;“A.GKÐP Q;RO¿MiHƒCR<È6$0$*ƒ&ø#ø"«!# KB¾rt>à#¼Ç i!”"í%]( +†.u2~6ô=C›J›Q7W\“aHf—j@m*mðn§nZn}müm8kÜkifÏbk]WPQ8J£Cí=7j2F-N$Š.<7èAàL*U]FbâhOkfn—oîqq qmqCpèp*o›nÔn@lÖkh#eJaÌ^Z‹UÍP¤KÇG¸D A =Ö:Ö7“52ë10.ø-Ò-2,Ò,¥,+°+„+¨+¹+ô+ö,Ž-/.1–5Ù:n?çEšJN9OqP\NKÃFÏA’;4‚.Î)ž&›$ # !Ì!( ^ àÞ‡? W¹ °!q#%("+9/2}7'Ä>Ü>á?íAC¼FÊJÔO"R–U’VDVÐTÞRÄN–J(Dâ?¶;>734X1n/r-,F*ô*8)–)`(ñ))'*%+- /¡2Ó5q8–;î@iEJ´PÌVÐ\R`Æe*h­l|o&qŸrwsrlrEqoÃmj•feb [†T L Cã:ß1S([ókék ü ý*“#R+c4‚>BGxOëV]@bf€ik lÍmónMnžnâozp/qq6pöp oŠnqm9jðh]eaÚ^[oX—UåSPìN©LbJÐIzHÓHG½G=GG@GhG,FÄFZFaFtG}H¢JôM‡PÇTCVõYCY YßX VRbNkI¯E@ò=P:¨7ç5Ñ3º240—/Ÿ.Ú.œ. .".l/É1)3™6I9y<?LBêGªL{R Wí]cbFfj mp>rs¸sõt9s}s qYofkìhËc©^ V;Ø:8;76/5â5+5I5Ã7h9 ;=ü@êCyFÄJzOS¸X´]îbœfËjm„prgsttbt,t sqöo|låh§d©^ƒW²OF¤={4/*è!VkA tjq»o… ˆö¼"*U3‡Ó=¸=L<<¶=c?,@¾CEXH9JâN:Q×V*Z†_c•gwjìmˆpr—tBt¦ut•t7r—pÍm|jSed`|Y4Q$G›>´5ƒ+Ü"À³Ô ”Ƴ ëä. Ž`!N)©2:0AÔH OËUÅ[_tc eoh;jJl mUn´o¯pºq-qeq(q:pÔp@nòm~k¶j(h…f¸dúc=ba%`œ_Ð_^M]Ú]]—]Ô^.^M^^^b^Á_E``aœc!d‰eãg]hniƒiŽijgôf^cËa)^?[†XóVuTQeNáLhJUH;FÑE‰EDKD¢EmG+H‰JŠLÈO¡RNUhX™\/_âcg;jBm oq]r®s©s‚sr›q„núlUhGd_Y+QHe>Ö6-Q#î‘§#ìù¿Ðƒß*  «ñ€ã'Á07´>ÕFKMSÃXÎ]'`*cºf¤i{kkm nJoÛpèq´q¼qÅqKpëpom·l£kjdi(g´f´f,f eíe e dŸdcd±e=eÚff+fCf¥g@h!hñiºjikllÐm¢m¿m©lškui¡gÕeÃcàa³_a\­YÝWTgR(OÖNELØLZK¸L3MN¶PR'TWrZ\Å_”bue\hj³låo)p²r*r›rêrHrpknWjµgBb^VXQ.HC?*5×-8%‚ Á …6 œTI`´w @ ”ÌÜž&[-4“;œBNI_O,T.WÖ[Î_Hc eùhkjl7mÊoMoÔpoo6nˆmÁlálkvjáj=iFh–hEhvhµhÓh„h0hhxi:jjWjgj‰jãkƒl'l‡l®lÆm mŽn:nèo0oFnÄnHm]l~k5jh)f cC`q]™ZáX˜VRÑRORãS­U]VÜY[x^`abwd¶fÍhÎj‹lVmÐo|pNp¿p(oÆn~mhjÂgvbØ^ÌYÒTëN0F°=Þ5E,ô%ÂÏ} ÑM«tƒgqŽ bèÕC M!¦¦#{*n0ô7o>”E JçOQSxW([–_“c e¨h%iýl+mn‰nrn4mtlãl\kßkŠkBk j¶j‹jj½kkSkBk)k,kŸl_m0m£mæn;n¶opoÿp?poíoÜppzpüq`q’q„q–qdq3pyoÇn6lmiÓg(dOaŠ_2\ã[dYûY‰YYZ~\T^`9bƒd®f‘hi©jûl0mCn¥o¦ppio¾n mkhÊd¿`1ZÇVEPýKFCò<3µ+Ñ$‹>Åò ì¢[¢$œ7pÌ©O|A þÀ¹!&&æ,¶39b?¡DµIL·Q%U‘Z]ˆ`”b¾eJg-iiÀiöiji0høhÃh¬h‘h³hõiXi§iàjj/j&jjjLj¨kkQkkØlRlüm‚mÈm¶m’mˆm¬n(n»oWo½pp¨q qaqpÀo”nMlDj%g¾e[cQae`-^ó^^^¹_¶aŠcAe fÇh0ijrkll%lÐm]nJn“nŒm=k¼iQgudS`Œ[NV PsK F?Ë8w1**#N4Ôd Jî22“‰ûµÿÙ'zX×O © ïæÈ"V'º-š4%:?BäFëK%P#TÆXØ[›^*`bXcîeeIe”eœe»eðff›gOh.ii‰iâiÆi—iJi(ihíhÂhhihmhÄiEiºiïiåiÊiãj-jãk±l‘m.mÜnÜoÎp¬pçqpIo€nl•jÙi!gŸf3eCd>côc»d€e“g#hƒi£j¡kHkðlilðmLmÂm¾mÀl½kfig1dMa_\ÅWsQDKÀFJA;4 ,ý&w ³á²> ô™Л}º ˜ÿ¼eDÿ抋“/" ÀÛ"÷(È.¾4%8o< ?ÅDiIINQ‘T;UâX*Z[ý]*^#^¥_>_Ö`waKb=cIdpe%eŸe\dõdBcÔcKbœaÆ`á`7_ª_™_¸_ù_õ_æ_Ê``™aªbÍdef2g§i'j—kpl&l kÕk jKi\hyg©f×fBe”e€e¡f€g“h¹i™jjWjfjŒjjÇj¯j´iÝh¸f€dúAzCJDaF HJ?LSNO’QWRÜT=UUùV\VÞV²VKU=TGRûQ®P/NŸM KJ•IÙIqH¸H7GµG÷HeIÇKÆ=å=F<¬<á=8>™@BbD‘GIJ*M6P:RÌUZVîX0XžY YoYáZVZÁ[5[‘\>]^]_Ú`óaÂaˆa,_û^ù]:[fX¾UßR¬OíLÛIßE@I:(4c/)*±%ü  mi  Ùè…J,R†ÿ÷ÿ½xµYÿçÿûSÿïÿ‘ÿ» "ÿñÿuÿQÿÈÞ4kŽxâw : E®zR!#û'Q*Ò.0^1ú34n648:4†@ A¼BƒBA˜@„?—>Œ=›<ƒ;P9õ8‘7I6 5/4y3ü3@2Â2K2ˆ2Ü4%5“7Ã9Ù¯9¥4..·* %ð!˜  T * Õà|Á¥q*òFÿàq—oÿÐLÿÀÿ ÿ¿/ÿ¸ÿCÿOÿÃ<qÿëÿÜ­jþy¨ Rb—+·eR»!Ó$æ'r)&*®+ï-W/13?5‰78M8(7Ì6l53q1û0‰/ - ,)*ú)Þ).(’(;'¼'ˆ'V'À(7)*í-.ÿ1u46ì9«;ñ>,?‰@¥AA‹BBÝDEFmG¼I„K›MÒP:QlRPàO„MJåHoF-CÂAq>m;96ñ2A-N(Ó$É!æÔ} % ˆ  \ö[˜†ã­EÿÚÿÍ?¯Š ÿìÿï$2ÿÀÿ˜ÿì9ÿ°ÿ]ÿt“-ÿ¯ÿŽiïúr5ˆ ñ¼´X@94¡!“"·#Õ%&Š(_*X+è-[-¥-»,Œ+1)3'c%“#Ë": ¡qW¾.ýºÌÖ_ï+ "f$2&q(æ+{-ü023:4D4Ê5C5ñ6è8T9£;N=?"AŒC¶EâF‹F©ECpA?<õ;D9>73¼/º*þ&d"ޤä…Ò 1óÂ5¿ˆÀ =¼ÿê ³_ÿú AJÿè5Nÿöÿžÿ½ >ÿŠÿ-ÿŒ&ÿÌÿþõÿ½Î$Ý[Ö‘ † Ì ê A ×]ª"‡ƒ½î8 B!F!©"!x ¤ðA>Dk›@ø?R2@ÁGl§v;mÁ-!„#ƒ%z&â(#(ø)°*©+ù-Æ/~1m3e5f792:Ë;:ö9–8A6m4×2ú1Q.¹+¨'†#þ¦5Kg ü¨ø`5ŠèÙJkú@€}§1ÿ÷<„VÿÐ#dAÿðÿ½ÿÊ&QÿäÿdÿOÿª@~ÿøÿeÿX 1ælü ˆH߸Š· èZƬѪR ñaBþúØ+x¸ ¶ i š Û ’ H P ? Œ Þ Ã ¼ Qñù(E6*µ !"‰$Z& 'æ)¥+*,µ-É.é/1/A.s-¶,h+L)h'p$? uY‹å›x K KÝmÕ¢Åü‰¢$™vìyN¿šP#0~¤SÿÚfˆZÿðÿ©ÿå4&ÿ×ÿhÿVÿÝaVÿßÿHÿ3ÿÙ³*ÚÿÙÿ@ÿ“ Ä [î éî Õ o à  õ œ `  ´ ! ‹ €P*&qß­|zZo„­ã1ë ’ l[?—åÓ®«óqØ&c‰ À!â#1#î$s#þ#ˆ"% Óƒù·;:ÙY  `½Äëwíq‰\³Bt ƒŽ-­’³ÑÆr-<{®¥VKž§?ÿÈÿ«ÿÞ);ÿÊÿeÿƒÿûq‚ÿÿhÿòípÿþÿÿ œÄ·5$@àS8îàÇ,‚È5Ö†?ärú{ñMB99 ð#d$þ7Wµ 9 Á : Q<ÕkæÃ”˜Ã"ºÅ‹“ðCàRØ –   Ô׺øb¼Kž=p¡¥:ݱÞê–H7m±´‡]3$5ˆ±zÿ¨ÿ™ÿï<ÿ¬ÿÿ­&„xÿ“ÿ} ¯ú{ÿjþˆþMÿII˜r6 ìÃfˆ¡CÎ0ªMüàËÍÇ»¡Ž¢ÀÎȦwgf¼-×cÞµ‚ŒÙ#š5 È » ¼ rØTz»Ù& m ™ Ý—›àà9›#ÿ½ÿø¯óÆBÿö7áy©høã;9Ýn?[“½¢pjM:.X€Uÿàÿÿ©ÿùÿÅÿŸÿÄ%–¬AÿÄÿ˜ÿõ¹/ù ÿ þÓÿ`–¢ðÀ!ÿ÷—ûNšª®s2Õl(-PoަÂï%óθÌò+Rx¥Ô(A^pÂ/ø·Ì] É Ñ Á Ò · Æ ºl1VÁ{F£~ —ÿ÷ÿô£<[Õ ÿÑ Énž^î(ihª[W†˜”{h|WO?I`‹|ÿ»ÿ¡ÿÏ *ÿÏÿ²ÿÝIšŽ2ÿÊÿ¹"³Ö ÿ@þíÿf6ýT÷hÿÄÿdÿbÿmÿ§ÿÒÿþ+GeV$ÿêÿÎÿÔÿÖÿòEUfޏÞÞÉ—pQ9*ÿéÿÈÿ¬ÿŸÿ’ÿžÿšÿÙ1܇\>ÉOþ¢RÌto…J‘„ÿ­ÿ0ÿ†2å%ÒEÿï³8vd"(l…L݆fv—c_q‘DSUOPszOÿÉÿ¾ÿä.ÿÞÿÃÿé:Œœ_ ÿÕš  vÿ¨ÿ2ÿFÜk†¯Lÿí_¸óÞÆ¥~jq‚toƒ©ÍÛ×·›yW@60 ÿøÿøÿý,h»0« bpt4áƒ57–à©Dÿ©ÿ¯ ÔPCÒG NÓOe4?p‹a «€„Љ^CZ„™)BUYYrwb*ÿäÿÂÿØ )$ÿéÿò$eœs& A§ïkÿÄÿIÿu ànuEÄZÿàÿäÿãY¡ÉÊÓ£†‚†siv”¯½Â²¤ŠkL5" ÿúÿâÿâÿìBw¤ÁæäÒ“Vÿÿ]ÿ9ÿqÿÂ6¹Þ³.ÿ¢ÿoÿ‘(×@Lé€HY¶A1 Eq~w?ö´•‘‚rRKl‘•2NaflbY;ÿàÿÜÿø $%%-3RšÂ«g"!xÖù¬ÿ§ÿ "ÄDx8çˆTB3bƒ¼Æ½§ž™‹‡¡®¶½¼¹®¥”ybWYR]qÛ æÊžkA* ÿýÿöH£àº-ÿ¸ÿˆÿëŒ,Pæ|gŸÖòí L€‡_@úÚ¶•n[TfŽƒ*DV]VQPc](ÿñÿÖÿé 16*'0:Wˆ«¹š]9IŠÜê¡+ÿÍÿ×+º,G)Δj94K~ž´ÐÙÕű¨¥¥­¹ÆÖÖǰ«Ÿ{[NZbwŒ¨ÖäЛwV0"Bt¨ jÿ—ÿ‚ÿÃ^÷J\ÀŽ›Òéòôý6f{rG#óà¿—iRRi|w=SYTF=A^eA ÿäÿç 97$$5Oghk‹£©‹N5c¬Ú½`ÿæ!„ÞýÙ¶Žlt›ÏçéñíäÖÌÆÀ¿º¾ÈÖæâȦŸ•rTGUf}Ž—£‡ndlqƒŸ³´ªº³—TÿùÿÁÿ«ÿôiÙ ó×¹¹ÍßãÆ»ÞI]fTD-øâÁ™r^Wbkmi0EOVN<2AQS8ÿßÿ÷+HJ7)=^lr{„›—f<;kµÕ·_ÿçQ”½Î¾¨¥Æò òàÔÎÊÈÆÅÃÆÒÕÆ®£˜niv„“Ÿž™Œvgdd€²ÜðÙÀ‚2ÿóÿÆÿÝ[±Ýݺ­²ÂÕÝÕ¾½ß8GRG6  öΞzj]_fg_(;RYN:/5SX%ÿóÿê @_M-.Il€q^q‡ˆrJ<[¿±kÿÜÿíp¨ÁÉÏò# ÿæÙÒÆÁÄĸ¬«°°ªŸ“‰ˆ‹’•˜¢¥“šœ‡skƒ´Øã¶u'ÿÝÿÑÿôB}𣗕žµÈɽ´´¸Íë #6:*Ø©ƒl^`]L'CYg\?.LdR$ÿöÿîIaV<,Cfomt}ŒˆkM?U‹ªšW ÿæÿæW™Ò9QQ83(ûíáʽÄɺ¡„ˆ†~€ˆ‘‹‰˜£˜‹‘™Š…—¹ããÀqÿèÿÎÿø9x‡radˆ²Ã»®¡ ¬³Êî/45$ù'#׳ª¥‡eVG( -Hhq[@CQ]Mÿðÿó [uV)'Gh€‚{…}R8Ir–’j.Z¬YxrK@5  ûêʵ¸Á»¥ˆtqxurtx}}ttˆœ™Ž‘˜•ŸÂÛå»s%ÿéÿéFswT0.]¥×Ò¨‘“§¬Âò#C?/òï !ñÕÃÁ¶’dF- *F^lcJ6BN;9hiM::Kj€‰Š…ŒˆpXN\u…„f;/tÞM†Œ_P<òáÀ§Ÿ¦®­ŸŒƒ€xqoqlpƒ—ž¨´¾ÄÔÅœ[ÿü NkgL7>[ÃÖÄ›„Š”ºû+2øýçéëÞ¸ˆV1ÿÿ/[mL 3HJ)Egp_F;Nw˜—„ƒ‡ˆr\OXr‚xZ22P¨e€cY@ íÜ¿§”–£´·¬œ‘‘~kelnx…–¦´ÄÌÕʺKÿþ8_te9!6r¦ÇØÉµž˜˜‚€“Å%òæô$÷àØçèË”e?  )F=$%7C;-)5Pgk]FGm›­¤›‰„xhTP_u{r\V]”î?g`bO7ìÒ¼¨¢¥¬­£Ž„‡s_]hny“®ÅÕÏÆ©‹g;(.HZ]WE(+T¶ÄÐȽª—ƒ”·å   üèÞÕ̳Œ`B/ ÿý" ÿøÿþ%-*!$=NE78JdrbWl’±¹±–~qsxjZRXaoy„ƒ›Ò:IZUK3èÓĺ­¢™{osyl`bowŠ™³Å˸œ|e`^gvt[:&+6V}Ÿ°¶ÊÒθ™Œ•»å "$ìÌÃÆÅ±Š\</%ÿü' ÿõÿÿÿø )( <TO>6A\uumq—¨³¨Župunf_^^izžÁî*BIM>-îÒü®¢œ–„wv{uqpyƒ’¡­»º²œkeoxzwc@*(BXt‹£Á×ëçÔ·Ÿ¡³Øý  帘“”…b5 ÿþÿù! ÿúÿÿ   -*(7HOKCBOex€{|†ž¨š€rolnomb_i€¥ÀÞú+8D:.ìͽº®¦£ž‘…‚ƒ…„ˆ’£¶»µ¢’„usЉuY?*/Dew…¦Ô÷îж°ÀÌßô ïǘtb[S7ÿý  ÿüÿþÿü   %0<EOPIBARqŽ•…yƒ‘†vlgjnfbfxŠ£ºÕï (9E;.öÝÎIJ¡–„}x|‚‹”¡­¸³ ‰||z€‘‡nSC>ISdq„œ»åùòÖÃÁÏàÞÛåôç³V6%ÿúÿû ÿü ÿþ/'  2;@MSPG>Gb„ ¢vms|„ˆ€n``hfgiwЦÀÛö+:C7'ùèÛ͹¥’†{xw~ƒŒ•ž¨«¬¢€|‚‰’ŠydWV[b[[gˆ°ÒéäÓÀÀÍÜàпÀÌÝÓ«qH-ÿìÿäÿí)&  ã¤æ0-`w‹>ûþ.OAÑmŸ¬z^Hd@ÙU’ÐQ â kÇ8Ø‚Q/ú¥+ ¨ < å Å § ¯ Æ Ï ¹ | : Ô Ñ Ø ÷  ' - "  î ó  R ž Ý   Õ ‹ M S ç : Ù/‘ wŒH2ýŠÄ 0]šÃìIÈXë"¾ƒIæÏa½¦zZmÊ(¤ Š û Ö>CY÷ª‰>ï¥m>"ÚQ[‘býUÍSüyµÇöD–£0›è/ ‘ µ | x ~ j + Ä ^  ì ð í  . N [ C ô Õ Ê À Ï æ   " , 0 ( 2 R ‡ ¿ Ü ô É v  Û á  = Q ^ t ¥ á 6 € ã C Ô”A°é/|ÒE¶Læ¤t=zº°¯Ç dÓØ¨ÊLJw‹ªÚé&{, áWvC"FQL9Çh¸(àø²ïܼºÅ­Â€óp â X Ì W ê œ I  ú ò î Õ ¡ ` '    " 6 : 2 Ò › p i e Š ¾ ý - M l € ¢ É å õ Û À |  Í ¤ ¾ ì  '  $ 5 D c ƒ ¼ ò T à \ œ ² Î  z Â[C:%¦'–ÒßèØ ;Y;LzÄêÍ•vÓáBšÝë·•Gq‘ ïCŤS e'ÌjZ ­ × ~ + À m 4 ! û Ý »   … a B &  , 7 = ? 2 (  Ú ˜ M ãæñ * l · ó  E ` { µ ¾ ² y A ù ¥ w f Å ù   ÿ å Ñ É Þ ë y È è â Ò î / ¹ ? è ‡Cã•:Ó¦Œæ•"pÕùmó^é†SÅÛ/üõá@#Ñ$¾êZ,ÓÝå­n\•àîÜØà Ý L Ð M  ¸ ¢ Ž œ ½ Æ ¨ `  ã µ Ÿ { | – Í þ  ú Û ¸ Œ ] 4  ö K u ¤ Ð ù & E Z d ~ „ U Ò } D # 5 P u ‡ ˆ Œ j R D E : R Õ  ð Ü æ ( o Ü ; ½ W  ˆ)ÑÛðŒ~Zô¶6&FEA,Ok5ó›vêQŒxÝWASnY’/÷ |  µ < Í v * ¾ s ? T „ Æ  ö ¨ ± e ) þ  : w ¨ ³ « ˆ q W = ÷ÛÉËÍØâèäçö  3 J R U d x ” ”  H ؼÎì  . 5 : 7 5 4 4 9 3 J ~ Å  $ $  ñ ì î ! d Á ? ™  “ mLªGüšiÕsæD{âòÒ$__”I¡¸|e¼òMy&ùµ|/¸k A Œ Ý   ‡ ) ¶ j H # ; d ƒ € x ; à ‚ E 4 + -   üõæÞáêùìÉ…H Ò¥{[0#=N]dq†¨Ôð÷ìßòrÔ  E 8 #      & 2 C Z l ƒ ¤ ½ Ï Å ¬ ” ~ ¤ ö d ¨ æ  Ž  "TÐL˜V1ê—)ßMšo1µ€&»TÞ`&k\ogÑ®“Ž f ˆ Ó ‰ : , A 3 È G ÷ ñ ü * Z _ ? ì ž U óÝÔÆ§‚HÉ–‡—²ÔÓ\ãbï Z4òòþÿ!=g”»ÐèM´Jïg¶«’dQUSf„©ÈÚÙë  c ž ¶ ³   ‘ ± ù W œ ¾ ½ ×  ª T [}Ÿ–Q«]ç“'p®Âšƒz ë^aALYg x ¡ ³  ° ž v k q `  Ó Ï ò  ü Ù ™ V / ) ; Q +àJ¨ Š@÷ßÉÙð6KvZ oÑGØ­‘“‚tofI41KeŽºÞïaÃg#ÊT~a<õ Eº9 ßîÿ  2 \ Š œ Ž v j × ( H ] ~ Ê  « i Dœ†à·™s°¿‘ º·åÏ[Ä% Œ È  € Ø w K I  ç ®  M I x — … $¦9ö EªS¾¼²Û7û#7NelkX^1×QÍu9EbŠ˜‹eB* 0@\{•“‹«ÛTê–9—ÛÇ¥m5FxÈQ[4$CŽß  âê 7 ® ÿ ; x « Ñ a Ñ A £ å + ‚«m4ꆉ+ Š < / G - í b { ^ É  € 9 æ Ì Û ç Ä q Í©­¾¥WÝk(³O¤â]Ó RŠ‘]/êž_;ß eL>Uy•–|ePDEHQU]lvxqahs½!°B³ ï÷­O>ïV>äŽ/¼   > k ™ Ó # V a J 0 H  h ¹ î  S º 8 Ü€y × v d c r Z = 5 7 b - x ¨ B 2  ò"ÀŠj:ñ‘8úÙÕ˜Y“éVíQ­,¨Jàt1  09:C7ëÇ¿Êâëëçåíøþüõ=‹Ú'o›ÀÄË»’‰ŠÿÃBiH Œel;ÑÉØ  ` ¬ Ê °  u ›  £  P E < C ] ± " – » @ þ à Ø Ö ê   ( Ò !w<I.à«DÌNæ™C ïΔ'²}³«¬Ãɾ¬‘„c)䮋]WjÇìùÓb0"/Jf|ŽŠ…Œž§Âæ&n¼7P À}u×Uß@i` ú²ï1v   úÜ  l í 8 L ` V B A i ™ ‰ „ } b 0  9 i ‹ h *Ÿöm2"äži1û (¡!Ñ‘½»jÀ%L¡~‰sˆ ¤wR`r›·âX…•|_5ë±wG,ÿôÿãÿâÿü:^€¢¶ÆÆÌ½˜xdŠÅ+’åD3Ù1ŠC@¿WÛŸ€¢ž>¬ÔV°a{M/fã R ¬ ó · œ ‹ oÙæË¥™Çïù¤/}Ì9Њ#Ó¢‚dçu[i¨aÅœ™À&…¦›7ËVÿíÿËÿÈ_±êþ æÀŒW'ÿáÿ¨ÿzÿ[ÿ[ÿeÿlÿYÿCÿ8ÿHÿ^ÿ†ÿ©ÿÕ4ožÐΫe!<b¨ZŒNâ=ÿ”ÿQÿYÿämùHŒäw,ø¸<™Ê_Šz·3Á . { f 5ß¡€8F3&0#ù€ûG’èHÛmA49,æbúØi›ˆ+®‰Éw ˆÁtpé¶£ýjözºÕ§ƒJß§m2þ˪•†cMFXr}qO1(L{«àâÊu¾^%!7™'‰ÃT†ÿ¤þýÿÿ£ƒ&dT<hþ¼ Pl¬W f—ì[çJ„mQêÙdyme=ÉrñxØ b¢1ïý×}@¨ÛÊ}b‰IGFü9jYPHIn«ñ/;;û§HÛ¬wjYQJRcyƒ‰—œŸ‰j7Λa!à£sG,ã§] ͇)ÿÆÿLÿ.ÿSÿÞ†ÙÍ*ÿ\þÉþ“ÿ ÿ¹e³«–°µ€$d‰ûˆùVªyä>eŠ|K-c)- ×~4ÜlÑ7£ou¸ä篌š ª8`o†;\íe z : Ÿ -  l  Û2) | î U Ç | Q d f { ” ¯ Ã Ò à í ú ! + 2  Ý Ž L ¸ Z ò sôpöoÕ6ž"°VôŸZ ¶&U¢7²n –¨ÿ¾ÿaÿ>Éì¦q·lB²Ø<—úA€Å€åP~rW)a‹‹9ÕOÙsÂHé¡Å  jå˜Éïº ¥ z ø6NŸÆÏVÆËä®\åt3*d»ü!CA;Ï‹O2 Ên÷˜6Ù[Äs×V ¦ Ë § } T6WŽX9ñj£Í:ÔõJ§ã†ÂÒ%{¹·\,o˜ø!5wÊL^w« <;U´ê¶pÖ–L"ùYÂY†û”²if n „ Q3}?­¿«µ( B v ™ ] H )üçß  ^ Ï!J!§!ï!ï!é!©!k! « /™Êš^ý|åkô€è*d¹6âUŽBäJµJ í ú  ¦ o [ * ” É´‹À?Sª³D¬g~JWt•GjÆH“¶×ó+L@,$gâqÕ÷þ,Vk5à±£ž—^Ts Ъ'´]—é ¡ 8 tó›}Ad,!##%þ(T)Ä*×++;+8+f+™+Â+á+þ, ,N,},µ,¼,¨,S,++"*¥*!)•(ø(‡(P($'Ô'D&œ%á%G$¶$##s"›!Ó!( Ò » ‰ –^žøJ%Cßw|¦¼ ª «  } ÿýžÅÐ^q2φÿÌÿÚNÕ3B  æ jü‹Ê»EÃ9àÎ#wÝýk]¸û  x ‚»í©RnóÜ ¨#.%j'ƒ)Ì,L/1{3°4í5è6:6§7 78'8¡8Ð8ê8Ç8°88a87°7)6±6A5Þ5r4í4l3ï3­3¨3”3B2”1Ö10d/Æ/ .T-\,|+¹+h+\+Z+*p)¿('…%ó$>"; !VÍÜð[ÊBÏæ³ù+N! Î À %y"Ïß™û“,8¶nA?_Xp¨ “×ÅBs…(-àtOô#±¼ ´ † “ø+x"$º'r)þ,Ž/61ù4Ë7„:K<Ž>»@ A AžB2B´CjCýDsD†D‚DGD#CúCáC¯C]CBÀB‘BrB5AÊAM@Ü@¨@º@´@g?¬>ã>=c<µ;õ:é9§8j7R6¯6T65t4Ž3©2£1È0¦/[-+·)Ò(%&È%e$<#"!} Ó ŠêˆDSp EÌ<‚-cÿéÿÖ2ÿÉÿyÿeÿ’ÿ½ÿöI§ßâ i ºr))óP £ ¯ ¼4v†¯+Ñ!J#²&(+P.0Z2›4î7£:­=Â@—BôEOG4I2JŒK«L^y ( w ê › ´ ÿ  ç㦋¨…C!#É&—)^, .È1²4Ÿ7Š:<2>bADGNJ%L‹NdPrR>T&U{VWW«XKYYÌZTZ Zé[1[š\\t\°\Õ\Í\Ù\Æ\Ä\i[ÐZþZ4Y¼Y¢Y›YLX¥WÚWV½VgUüUSÑRZQP&OuN˜McK²IîH5F¼E{D)BÞA‚@>?)><Æ;957<5k43D2)0¸-é*ˆ&‚"ߪÿÈ } ‹’¹iþ%¿ñÍ}9ÿ½ÿvÿ}ÿ¾ÿÒÿßÿó.®’Ë/èö\›Ù6EI"„%¤(Ê,/"2 4ë7ì; >ZAUDF.H+JsMbPuSHUNVëXY¼[M\à]é^˜^ë_h``çaËbŽc4cÙd|e:eÛfmf«f×f¼f²fsfFe±dÜcÊb¾baÌa²aP`¯_ç_O__ ^ñ^f]‚\`[sZ¾ZIY’XŽVèU)S8QoOÊNLªK8J"I@HsG˜F@D©Bž@ˆ>š=;›:07Ó4í1 - )Z&B#,• _‹ð _ ¶ @å SÐÞ p=  + LQ¯cQº-º"K%|(’,/Š3'6´:= @&CªG9J´MŒPRT@V²Yž\B^v_Ã`ãa·bèdee eíff]ggÎhÔiÉj²kŽlXm?mìnn©nºnŠn{nDn!m†l™k\j,i`hühËhKgŸfØf[f9fVfaf eidŽcäcnc1b¿b `Ì_~]÷\Ž[YœX&VªUwTS©RÈQ~OúNLJ"HhF•DÏBM?;Ì7ð3æ0?,ª(÷% ÄéjùüX ^ ƒeÅ©!ÃoªÿÞÿëÿî*à(Æ'"%›%P%)&„(*¶-$0'3(6©:[>AŠDÀGêK8NùRuUWØYù[ß^`Yb³dyeêf¤gigìh›iixi…iaiIi\içjk†l{mmnFooÞpzpøqqqq$q0qOpãpnàm·lÞldlk…jÝj,iÖiËjj2ji¿i3hÇh~hbh(g»fûfRAøE°IYL¦OßS_VñZµ]¾`9aßc°e[gBhëjwktldlÎm3m>mNm*mlÈlJkûkålXlÝm³n‚oTppºqrrrÌssDs¹tt‡tLs°rˆqkp„oòo˜nünqmçmÊmènVn¿nònòn¬nsn6nmàm|lãlNk¸k9j¶j.izh´gÉfçeùedca³`h^è]€[±YÕWLT QcNFJ¹GC >Î:Í7340¤-Š*µ'î% !§¤]q¿ Ã\–ØÇ†@÷>é=a<;è;ï=e?A¥CËF†IMPxS®V¨Y»]J`®câfgØhöjsk½lúmÏnŠnùooáoóoŠonŠnm”lÏlNllil¾mWmän…ooÂpwqq•rr€s sët›uLuKtösüsrqtqp€p o¾oÒpp¸qaqßr/rqüq¨qlqpyoÊon‚mÿm®mim.lòl…kûkAjœi×ihf÷e¦d{c a¨_’],Z4WvTsQ‡NIïEÙBM?Y·;P7>3. (æ#¡À Þ¶dÓUÄT[SfRR«RìT(UlWYY'[u]ÿ`¨bùeAgÂjMlýopµq«rÛs·tžuu$tüuu$u;tátDsErpqypqoTn m1lªl¹l¨lòm@mén¤oŽpwqBqârtssëtÓu©v‹vØvçv@ut–sÝsdrér¸rrr«ssûtþuâv–v·vÁvQuåu9t“sØsroqÎquq&q*qPq}q„qKq pŸpDoÇoGn“mÖléljöi«gõf5dWbâ`á^S[WáTÙRDO´L÷I‡EîA“=R8_37- (C"­Ç? Ö Îb^¿]Õ]R\é]2]^ˆ_p`×bMd(f hiØkÎnp>rMs½tïu³vÃwswòwæwÅwwˆwhw&vlutts„rwqEpn¸mÞmGmIm8mmÅnNnâo˜pSpðq^qÁrqPp”poto"nØo)o»p§qzrr–r±rÀrŒrcrqÛqq,pûpãq"q|qèrrXr·s@sètYt”tbtsÆs²s¿sÉs¨sgrór rqtpboJm©kÚiÓh\f=cª_Ä[ÑVàR2LoFU?880¼)H"ì»­lçlöm7m›mûn'n@ndnºo!oÌpWq[rÇtRuŽv^w w¥x^xºxÛxxAwæwÂwwvguÖu3t•sÏs qúpÀopnmElÆlÙlÙlùlßm mƒnDnïo€oãpTpóqÎr±s”txu u©u•uItOsErq"pUoknÍn0n2nxo+oÐpHp›p‘p‚p>po±obo n™nQnnJnooQo£ppÇqÓrîsÙtKt†tŽtÕu!ulu{upu tát`sÑrþrNq,o¶nlækTi†foc^–ZsU,OHÁAè:’37,0%*M§o·oçpMpÄqq4q-qAq{q©r%r¥s¯uv€wswõx•yyŠy ynxÞxqxw»wFvu¾u,t“sërðqçp~nðmYkÇjÈjióiªi®i“jjílBmvn’oˆpfqZrXsbtWuJuöv¶v×vÇuýusörýrq%peooToBošoóp1pDp oáo|onwmÌm lIk¹k2kk*k¡l l¹mIn6oVpÅrBsƒt‰u!u¿v)vªvöw@w2wv vuou tOs'q¼pÁonal"i~e¯b=]’XšR>KËD’=^6.¿(K"pµpïqkqÛr#r9r6rPr‹r¨s$sÏt÷vPw€xGx¬yMy©yùy¿yQx‘xw^vÆuétÑs¤rÁqÖpÐokmõl#j/hKfyeDd@câc[cwcd eÿhjkømÄoEp¼rsjtuÆv—wzwËwûwvêvuköjmh‡f¥dôc]bIa`Æ`½aÙc dèf•h«jâm\oþr+süuvvÃw®x8x¯xnwãw vv ultslrJqŠp„o?m‘=i<;µ;j;@9'7/64¨4I4568‹; ?"C{IN“TpZ)_e,iìn“qÛtýv±x_xçyTy(y(yy x§wÏvÚvgv uut¢sÂrçrOq•p—oLmúlÊkçmEmên—o1o•oèp ppGp–qq•qìrqørPq¤p^m¡kgrc§_ZfUyPKÑFìBõ?]=:Û9-7.58341‚/í.Ó-®-,F,J,L-.Ç1Î5:A?lEÈLRüZ$`êg‹lžqytUwxxúxÃx»w×wu&so‰kÅfüb|]JW²QóLaG¥C(?¥<9@643î1Ò0¢/Q.ý.²/ 0˜2Ù58›<[AƒFÚLêRÕX¹^®diLm[qLs¿vwxx"x5wÿxwßw0vEu²u2tœsäsrKq¯qpeo¯nún‹nblSlëm„n nen¼nëoo1o›pp—pÎpøp»pèoÏnjªg¥c…_(YðTÆOaIçDà?ã<8©6v4M2¼0ù/w-ï,Â+¬*ë*)Š(Û(«(u)F* ,/03Ñ8€>ÒE8LªTZ[Ýc.in±rSuÊwRxÔxåyx!wLu)réo0kGfTa¬\.VGOüIÄDD>ú:ð7 451-/ ,þ+Ý*¤*Y**å+¾-¬/z25µ:l?pEŽKQ×X4^&dhÇmzp¦s§u+v±wwPww>wvuºutysësPr‘qÜqBpÚpcp,oûp)p”kŽkîlKl¡lâm!mLmUm“n#nÎoNo€oÊo†oŒnk½gÂd_cZpT½OI_Cq>^9¤6p3c1‹/§.q-,,G+S*©*)¦)'(´(2'ä'}'Ä()­+s/539 ?6FÞNµV¨^edêkYo×t'vXxzxÈyxw t¼rOnj—e·a![¢UÁO8H£B‡<’7ÿ3¹0Ö-Ì+Ú)ý)('â'«(E(á*X+·.+0•4Ž8â>›D=J‘QWd]ªchvlfpr>t{ucvuëv/vuÈutysÌsMrÀqÿq3pxpoŽoouoÖplj±jÉják k¤83'/3-€+®+*4)ì)§)€):(æ(¡(F'Ñ'X'&£&%Ž% %z%È(*»05Ã=—E‹N'V^Ef lqÍtöwÔx9x‹wMvrtOqön@j„eÏae[ÚUáNäGÁ@ß:=4ì/Ê,,(d&G$‹$2#Å#Ý#¼#×#è$t%&Y'y*-1Ø6t$p$b&L(¦-Ï3E:ìB¢K2S¡[·dj”pËtw wiwÇv³vt9r@okëg¸c±^PX‹QŽJlCCh€lðoqàr¥sŽsÇt:ts‹r¼rfqÜpõo¹nomlÎlËl¿mPnlEkajˆiüiÅibi\ilj jÓkÛlÑmŽn²nxmüj²fÉ`bYãR£KêEL>Q7ø1M-%*7)Þ)M)f)(Ç(“(w(`(;('´'6&¨&C%ä%V$ó$$Ø$Ò&©).39:xAÆIôR Yîb$h¨n¶qÝtœtúugtªtHsqâo³m›j`g3bb]6VO§HaAH:Ð4b/2)ë&›#Â"Õ!ò!ò!Ã!µ!l!Q!O!Ê" #W$ß(+ /ð5"<CJ¨R1Xé_SdNixlÔoÌqr-rzs!s r½qúq¨q"p[o,mËl±kékØk¹l7låm{lGk%jZiýiqi]ixjj»k l¢msn£n7mni e6^SWXOÑHðBQ;+4Ú.g*°(&($'à('Ì'€'c'v'Ž'›' 'g'&—&@%î%|%2$á%*% &Ø)-Ü2¼9™@ŸHŽPYWð_×fkánäq†qírRqÉqŸqpžoƒnƒlTj&fa€[TvMF?/8M2m,v(†%#ã"º"¨"v"\!ö!€! ô º!Z"$8&V*u.×5T<CþKØS1Z-_Õe°i»mro#p˜pòqÆqíq²qpºp;ošnˆm#kõk/kjòkTkànÔmclk jŽiâiºiÈjLj¨kLl;lünmElgÚc[ÒTŸM F?8B2,(¹&k&l&#&N&%Ñ%à&.&s&±&ë&õ&å&¹&£&‰&W&>&&q&„(8*j.ð3‹: @ÏHPOŽV]]cbäh jØmZmònmn;npnžnénÇn¯mslKi eW_SYQ¤J›Cº<Ï6¨0N+Ô'å&G$Ú$±$e$6#Á#"Q!½!4!\!r"Ç$'a*Ü0±6ë>²F…N6U[°bfÅk?mƒoToÄp¹qqp’p_o÷onµmplMk§k•kXk€kËpnQlµk„jájiÉiÂj'jOj¿kšl?mljƒeä`®Y9QÍJC k†j¨jOj1jhjRj„k;k¼l_ki(d9^ÀW.O¯Gû@Ï:2°,½'J$µ"Æ"Ô"…"À"À##z$$x$Ý%Q%Ñ&I&Ô'~((‚(Ò))Ÿ)è+-ž1Ë61<-BfHÂN S­Xä\þ`ôcveÉfùhhâj-k˜mnnØn¬nÜmjàe½_ÚXKQ3JNC½=­7 1µ,Ä*E(c(']&à&L%Œ$–#¯"ô"œ" "L"„${&+%087j>µF–N'U6\xb^h.kŒn'nçpp¥q,qDqgqEqIpÊoÃnºnQn7mÄmem!rp^n¤mNl‰k­kRk,k6jÖj¿kSk¿lGj«hsc ]YU NFK?8X0æ+%Ú#Œ!Í!ä!Œ!½!Ï"8"½#k#ù$†%%µ&T'6(M)p*k+#+µ,S,›.40b4¨9->èDªJ2ONS‹Wþ[\^x`[bcJd‰fhj2lunoŽoÁp7n¦lëh2b§[SÙL·F$@49¿4Z/ ,*)¦(Þ(P'¢&È%¼$¿#ö#t"¶""I#Ÿ%)(-Ø4ç<CêKŽRìZ`×g'jñmánÇpp¶qlqµqôqír%qÔpéoíoŸoonžn&rµq.o˜nUm–lÖl†lclBkkQ7›0&*s%…#…!÷"!­!À!É"&"‹#(#¿$k$ü%¿&Œ'Í)G*ð,ƒ-¶.ž/^/È1†48=.B GðL±QTXGZå].^^__`Maxc}eéhÚkànppPpÅo+m™i%cå\yUMÀGAF;'6 0Á-¤+€+$*m)à)(&ä%Ñ$æ$;#b#"s#[$P(,n3e:\BPJ Q¡Y\_ífˆj™mÄn½pp£qbq¼qür rorYq—pºpp™pKoÙoWs-qÏp\o+numÓm’mwm3lPk¬kølFlµjÉgíaö[ÌT LvDÝ=6æ/i)ß%Q#´"^"s"!ô!ð"4"c"Õ#Z$$º%»&à(—*o,y.„01G272ê4ò7Ë<`AF JÿORÏUdX/Y÷[‡\9\£]N^A`–cg3jïm«oÜpDpío“nQj"e]ºVeO HMB‹< 7Â2”/y-X,ý,^+Ñ*å) (X'%ä$î#Ü#A"o"õ#o&«*£1g89@NH:PWþ^Èe»jm†nŠoÒpIq qpqªqÌrbr’r qWqNqpqCpâp^réq¶probnºn(mâm¼mWlNkƒk°kêlIjDg5aZêSFKÐDN= 6K.À)`%;$ "ä"ì"y"N"7"S"L"ƒ"Õ#†$ %3&Ÿ(¶*Í-/i1P2¯3è57Œ:·?RCçHµM’Q]TšVzX€Y¯Zà[o[ \\Â_bf jmo,otp"nÞm¬i‹dƒ]7VNÒHBs<³8$3X0‡.ˆ.(-ž-,*“)0'Ç&`%4$#S"r"Ñ# %ï)‘0!6Ñ>ýGO#W]óei¬m8n5oeo¸pdpÈpôq(qärWrq•q·qüqüqÄq^rrqcpFoWn³nm·mplãk¹jÏjÞjûk@ieÖ_šYdQÞJ‰C;Õ5 -q(B$‘#Ó"Ü"Ö"a"'" "!û""="Ë#%$Q%å(O* -)/Ò23“569S<ŸA/EÍJOpRùUÂVùX]YZ Z–Z½[+[£]»`­dÑil'nUn}omÀlŠhwcx\BU*N G—B'<¤8d3ý1v/š/0.­. ,å+K)Ó(W&Ó%‰$B#|""³"´%Y(º/5¦=ÖFN@VD]4dŠiMl÷mñooFoèpOpspµqr9r,qðrHrºrêrÓrq´pÀoÉnýn^m¹m%l­kûjÄiØi×ißjgãd—^pX_QIÔBo;43,„'f#ï#p"Ž"ƒ"!æ!¿!¸!›!!ž!í" #$‰')m,(.ø1f3557:?=·BSG)LQ.T³W_XZY‡Z/[[Å\\]^âaeKiUl8n/n n>l†jïf¦a†ZVS2L:EÖ@›;87&30Ê/.…-ï-:, *{)'¯&J%%$#["y"±"¸%S(­.þ5c=yE¡MãUÛ\Ádhäl‘mˆn¢nÒokoÐoùpRqCrr)rr’s,s‡sœstq"pEornËn;m—lælKkwj/i598<ÛA*FCKºQ VJYÖ\·]Ð^÷_~`Q`øaaaõbdfGiMl¤nÊp o;n‡kÉid^‡W7OµH}Aù<Å7N3E/h-G+r*º)ë)-(&è%Á$Ç#Ó#9"©"""”"Ô%}(ø/;5t=JEVM}UG[úc#gÓknlomŸmánenÆoo­pèqñrrr›sbsõtotµp˜po{on†mÝlÿl)k0içiii0ikgd¿_JY÷SLDu<ã5-{'÷$#["`"y"O")!Á!S! ì Š [  Á!›#º&)3+ÿ/1Ü5l9P>!BåH>MßSGX¶\_´`õbbecSdd‡dñeNf¤h§kanSoñp¹ocnsk}habÒ\ÂUMkF)?„:@4´0Ì-=+s)Ï)(''L&=%"$#0"T!Õ!Z!R!!Å",$ò(ˆ.Þ5(=E?MxU>[Ôbægklm/mpmãn8n‚o4p…qqÈq°r7ss·tgtñp‹p%o³oMn´nml(k&iãi.i=iiâhTeò`Ý[ËTåMìF!>k6Þ.—(Á$e#E""!í!×!q! á É s D  ›!@#%+( *‚-’0¿4ô9Y>CÖIzOETÒZ^³b;cžd¢dïf gg€gÈhhýjªláoBp?pcn’mSjf‹`ƒYûR&JrCY<¨7i1ù.f+J)è(Š'Ì&Ó%Ô$¶#¢"š!Ð! ’  ë Ë!a$Y(.5=EpM¶Uz[÷b÷gwjÛkµlÔm mgmªmçnšoðq q2qq rˆs?ttÓpZpo±oGn›mâlëkìjÝi–hói iwj hÏfÙb]4VAODGM?e7’/(ø$9"Æ!P!^!5!8 Þ ƒ h V Âà K!É#’&2(Q+y/48ï>¥DSJQPjV7\I`¯djeÞfêg=hrij4j†jÒk‚l¢n oÄp1o×m”kÏhcú]¢VéO1G§@¾:4Î/,[)¦(']&”%Š$o#=",!2 ñ£6<%  Ò#ú'÷.©5D=ZE¼MúU³\cg„jÄkulzl¡lämm?mðoKpwp¢p“q-r0rüsîtÚpDpo¥o*nim­l·k­j”iCh¦hÅiTji&gšc1^ƒWPœHŠ@8u/Õ)q$;"J u ]  +諟Eý³ê. Z!³#ì%£(Ü,Ö2z7í>DJlPàVü]caòeµg$hQhËj k7lllþmdmûn‘o“ogn™kÞiie`QYÂRóK€D9=«7/2J-Œ*Ó({'ˆ&r%¡$#g"+!% AÇU*Ôìê  ì$J(}/N5ý>FIN^Uú\Oc:g‘j¦k1l'lKll¡lÃmqnÊoûp,p,pÛqïrÃsµt«p`p?oÉo:n_m˜l›kjXhýhghŒi8jich4d&_¸XÔQêI¾Aš9b0¨)ø$A!ÆŠLèïÕÙÇ€1è+é!±"û&K*«17(=ÇD-J³Q~Wê^§cZghdi¥jHk™lÙmênyníoo.oohnm7jfüb\ÐUóNâG…@^:54/¸+)M'H&f%d$„#^"& ç H² `›Ì ,!S$à)806·>œF¸NœV\Icg`jSjÈk¾kíll%p$“#È"°!† a–úÂra%‡î "%â*V17¹?|GiOVf\|cg0i÷jjkwkÉkûllKm n]ozo¤o¥p^qrr3ssôp³p•pokn™mçlýkäj²iKh´hÙi¦jjIi´f|bâ\—VNF->5z.4'V#Pèá¥Bh~’„pcƒœe˜ i#ª( .ó5¾=6DDK2RWXõ_ñd×h¾j@kÍlmºnÎppÄpõp p×pƒp/n1kÒggc \èV‚NøG@?é8ã3‚.I+ 'þ&‹%${#Ø#;"N!> 9uÑ€Â?Ê »"Ž&+1Í8z@-GÿOƒV¹\ªcfëi…iûk0k²kîkül>lün5o7oVoZpq)qÛr˜s|oçoëozon…nmUlbk;iÞi@iWj%kkjªgädÒ_XùQ9I¿AÉ9}2*¥%Í!¹ 4¥69ez™¶ê{Ìî ¸#Á'«.*4¿2þ9ÉA‚IIP²Wì]½cËgIi j kVkðlkýl2lØmØn¬nÂnÕo’p™q>qérÂnüo5nònÉnpn9m¨lÚk½jci·i¶jk}k©kŠi3f¨a{[äT|MWE~=f5²-á(E#ˆ!MÓå=n»üKŠýW ]! #Á'--23w:øB8ITPBV‰]&bHfíiŽl m=n/n±oËpqpóqDp–oÃlñiödœ^æWyPHN@f9V2u-‰(Ó&i$G#È#)#2#A#/"Í"!c ¤ÝD¹Œ)¥*!i#Æ(i-b4H;=CJ¾RYs_?e h#j.juk¹lNlBkçkúlƒmGmôn n5n÷oúpšq=rkÇl‘låmXmmäm´m:l@kjbjEjökólPlYjehVcÏ^àXQRI¶Aù:A2@, &´#Ì ½W·Qt—÷H«úwå ã!“#î&Ï, 1“8‡?iF\MSYk^™cˆfÒjk¿lòmbnhoCpp6pWom½jsg"a{[ES‚KöDV<³6 /l*Ä&U$H"˜""Q"¤"ý#!"ö"c!ä!E – ˆ`öw "€%+*//~6›=¾EƒM8Tt[×a{fÚiok*kGl^lÃlokÑk¾l#l™mm$mdnoop9qhi‹jkµlm†m¿m›lÂkÆk!jékzlslþm0kœiýf a·[aU"MËFo>º6/Ä)Õ&F"¬ ÑõMš¤±fÈwé í!º#æ&Z*Û/¡6<ˆCfIíOôV`ld1hjSllªm¥nRoPorolm­kØgìcø]ÊWO&G€@"8Í2¤,‚(O$E"ˆ!+!c!g!ð"‡"Ú"Î"W"!“! ¦ < © C!#Ü&ò,_2 9T@¢H^PW^]c¸h“jŸlllüm1lŸkÎk¥kíllNlbl½mbnx7¢1+ù&´#W =QÂd£ ¯!0!†!º""@"1!ä!†!w!+"U#ã'Â+Ñ1é8?yFÜN[UÞ\Xbégj‡kl¥l¹mKm)lak‚kjk“k=jíjækk5kik¿ll8TyX¾\Ùa1dýhßk2lámmˆm|mim‚n nŒnùnpmÞkidÁ`qZÑU]N³Gl?î8³2ñ-»*& #\ ßÙàþB×  ? e!!¹#I$ì'u)Ã-R1W6†;ÈAEäJVNûSSWÄ[i^Âa3cÎe©gþhuhMeqb]mXPòIàBW:´4-Ï).$6!)ƒü½s´ , Î!u"9"œ"§"\""*"+#Ï%Û*/.ª4õ;NB›IìQ/Xˆ^˜dhjÅkolellþlÅl kCk9kä8g2¬.Z)&"¯ ýmCFÖ Q ‹!!¦"ã$L&`((*Ø-É1ö6‚;e?»CâH>L‘QTíXŠ[‰^Êahd‰ereybo_„Z7T¾M¦F‡>ô720˜*®&Š!ñE$êµ?lßhI C!G"X"ß"ú"µ"k"Í#,%V'ß,œ1v7ö>…EÓM"T)[N`éfGik2k‡lVlŠlÙlkék3k-jüj#hòh5g^f*dîd c:bD°JÚQ6WÉ]Ëcçh kplÀnEn¬nûnêo%o[o²o†oFmëlni¦fæbÝ^æYyS¹LØE¥>ð94D/*ç&à$o"*!h Ð ÿ ë!!;!¥!ò"Ì#â%“')(+<.c26D: =ÞAÈEÝJN#QôU‚Yf\½`”aæb%_\+VëQšJ§CŒ;ø4--Ò(X$ß ðÁÒ[ƒ¬°Ñ ÷""¦"Ù"ã"ó#í$þ'Õ*è/ú5/;ÛB›IÖQW ^Nc EL"RöY°_&d’g÷k llål¬làll!kYjÝjiƒg­e!ag^#ZJV QµMØJ9FH+w4=wF÷PY`ºg/jÊn|oþqYqTq_q qpípƒo’n¡mWl^jŸhŸeOaù]YXiRàMŸH‡CV>²:;6Œ2Á/Û-+L)(O&ý&&%Y%$Ç$ÿ%4%î&©'ë)/*ù,´/1d4£7úÕ;#7ô4Ç2Y0.t,°+j**)}(á(¼(t(ª))ä*Ä+ý-.0?36:y? DbJNäS¬U%U†RfO˜J¥E¶?W8}1Ü+\'u$Ü$c#H"~!n ° < Ä„7¼ Ä!J"$&Ç)‰-~1n6š;ÏB=I.P9VÈ\@aÒeáiØkÜmm´måmum`lÍkØj’iòh£g&cª_‚Y¾TVNSHAùmMl%iòg×dÈa¡]ŸY[U QM°JtGzD-A*>B8í7U6*5-4«43Ó3w3u3¡444„4Ï6y8'ô&œ%Ë%5$ð$Y$ #Ï$F$Ð&'8)p,/À397ÂGÓQ•Y^`¢eCiòlDnLn³oUo0nñn†n8nRnÄoIo²obnÞmtl/iôg›d1`ƒ\rX™U'QðOKåHâE¶C*@ø?Œ=ý<í;á;G:½:r:9É9œ9 9y9·9Ñ;!<»@C§HbMyQâVWƒXaVsTªPßM GÊB '§'v'S((Þ*¨,]/ 1Ç5‚9=ÖBýINýTçZâ_ádrgÔk°no÷p8p{oþoÔonFl•jÑh3fbK]âW,PTH ?³71.á'r  Bµ_#,-5P>ÉH†PòXÃ^IcægDjVkžm msmÅm¼mÎn#nÆoypp%p o6n‡mkhh¿eÔbU^û[ÃX±UæS#PmMgJÁH]FÈEGDWCEB§B-BAÇAœAZA@AAsA»BüDXGJ NRƒVbYð[#[ÍZXST÷Q¯M$HC >o;85ì3“1Ä/å.Ä-Ü-’--- ./c1¢3Á6ƒ9!<™@DâJOûUšZÏ`dDhTkKn•p]q•qZqLp£pJo9mùk¢iTeÝb§]žXPHí@!7".o&/1‡  @š6ï$8,^5p?H"PVð]|aöf/hzjÁkÄlÈm7m´n0nãoŸpap¹pÞp}pQo…nªlÍj™gÆe6b’_Ý]8Z´X?UŸS%P¯NÆMKâJ¥IöIgILI0I4IIHáI*I~J¸LNtP÷T5WÎZÝ]¦^z^å]Q[ÕXòV*R.M§IDäAÂ>Ì<ƒ9ÿ7ó5Ù4‘33G2¨2Ë34…6G8É:ð=‡@CŒG4L Q=VË\`»eWhül™oqµrÍshrÄrkq‡pÜoUm¡j¨gÆca^óX©R.IòAŽ87.‹%±=x àc ®¦Ó#±+Ô4²=²F'M@TOY¯_b„eÛg¼i¡jÀkûlämÖnœo€p popep€po½nƒlïjÙig5ebÑ`ž^Š\ŠZ¢X˜VÁTöS£RRQ Q PýPúQ*Q>QRQ:QƒQëS.TžVÈXé[Z^ `8b3b©bÓao`]¥[CWÐSØO¿L4IgF­DVAÂ?Š=I;ä:Î:†9Û::Ÿ<[>R@ÅB­D÷GoJåN‚S WÅ\a6e0i(lBocqZsJsÄsösrRpëo¡mck$g|cÇ^TX¬QuJmB9Y0&k1݉ ¶¿…² ÐU~'"Z*Z34;ÁC}JíQWx\A`¬cqf'hj*k¿mmôo oßp±q qLqq peornlÒkfiàhfAd~bèa‘`?^î]h\Z±YõYoYpYbYzY{YŽYYáZe[«]_`Ñb dfglg‘g„f3dàb `{]“ZNVöTQ OLzIÃG]D÷CvB>AíADA BWD-FHZJ)LjNøR_UËYÖ^bHf$iQl‰oqstptstksOrNpYnekih¦dR_µYR6JB‡:1'À~Ÿ JbVÄæ<2 ¤­=X!(þ1 8Þ@'F˜MoSXc\ _gaíegŠi¸k*l­mÚoCp&pÈpºpÇpGo®n­m·l˜kŒjZhýg®fwe§ed•c²b«a£a`¹`Ñ`Ì`Ê`¨` `–`ýab”c¿e.fgÓiOjjkrkŒk€jji@g`e¢ca`í^L[ýYWTCQsNùLJôI¥ISHÃI?J KÑMƒO™QpSºVEYS\D_‚cfPiEk›noêqÆr¢s\rìrpüoIlziÁfbÁ]ËXAPáIdA;9£1(¾ 8 † @uâ,  š±üò&l.G5h<C%I{O¯TCX&[2_bžeòhBj/kŸmªoNp·q q pXoèoAnˆm³lðl2kpj¹iâieiDiVi0hÕhOgõgäh'hohœh†h`hMhhûi­jLjùk”lLm8n nÊnöonam©lzk~j hlfCd9a«^á[ÕXÓV5S‘QíPPNOãP‰QfS0TñW Y2[…]î`}bûeyh$jrlqnoéq:rTrlrqŸpÉnƒkÒgödu`-\5VˆOýGì@8.0¯) ÇÄ þ_¬Ð‘¹N`°b D<Ý2$c*û1n8>YDÈIëN.Q¦UÚZ ^eaÇdnf[hìk-mnƒnÑnm°m(lœl k|kjâjÀj[j"j(jwjÈkjþjúk"k€llVlNl kïll¿C‘HBKçO'QVSµUjWX1Y;Z Zð[ã\Ý]õ_)`Daiaïba¿aŒaNaD`ï`W_T^<]H\œ\:[È[SZ®Z=YÙZ&Z¨[Ñ\ó^W_§abfcÒehf¹gæhkhÙh²hhgÎgUf“eÕe/e,eaf9g&hhÑi,i~iƒii`i(hÃh°gîfÚdb#^ß\X&SñNGŒ@Ò;6 0°+T%µ ~šk$o ’¥jEi ÅÎVÿÂÿË( ÿuÿKÿÑ Á!¯‡ øÄ™”ßn!Ï'L+Æ/“37Á<ÉA_E^G½I°JÞL|N,OðQ“ST^UÍWXkYcZaZÃZîZ˜ZcYòY˜XØWåV–UFTSR6Q`PO¬ON‚NÄO4PoQ›SQUWY[A]‚_a†bßdd«e@e}eáeãe–e.dòe&e…f1fÜgagÀgÏgìg¾g™fýfUe cÌa¿_\“YýV™S$N1H¸B?;ß5Ó0_+-%JÇ«ž²q ÖöY¸.+´ "¶É‰%ÿ÷ÿ¸ÿ¸EÿÌÿrÿ¯}ö‚ v | È üÈ´X"K&A)h,ž1 5¾:I=*>ù? @ÌBiDmF¤HˆJ6LM™OOÑPtPfPNOßOžONM‚LnK#IçH³GˆFtEdDhC@B{AËAóB9CbD€FkHyKMŽP3RçUlWîYÒ[Ž\‘]Œ^ ^¥^Û^Ô^É^ý_†``Îa„bbnbzbœb9a×`Ÿ_J] Z©WÀTýRO~KéG§Aúó=è<Ú;Ê:´9 8a7‡6Î6í7859N;U=ˆ@WC EìHÒK”NaP›R°SõU%U»V`V©VÉWWrXKY'Z>[{\s]E]W]t\‰[‚YKVÖS¼PÈMíK’HÂE¾A;¤5„02+I&w!RdÉŒ  aÁf~Çïc(kÿãÿ¦ÿéa¤CÿÎÿêZÿôÿ‘ÿ¸ÿàÿnÿCÿ¨;OauRßžOV° ùxlAàx#&Â)ý+Ë,Õ-].‰0a2Y4ª79;A<6<¸;Ï:®9B8[7²6ô654 3#2X1‘0Æ/ê/-ù-G,¹,æ-./%13%5Ê8];=Õ@pCE6G:HpI„IúJyJÀJîKhLM`N²PSR*S‡T¢T‘T…SQsNšK‡HHECA5>]:¯5h/º*G&"D¯eo Š ¹í9*e`F ÄÿÀÿèR~[ÿøÿ´ÿöPÿ½ÿœÿ» #ÿ®ÿ6ÿ=ÿ !ÿÿRÿî1">­I XsÍujÛÍ p"g#›$Ü&&'š)x+‡-°01f2d1Ê0Ø/ -Ã,o+")é( '‹&%Ú%-$š#ï#N"“"/!è"9"€#|$‡&^(M*Ó-Z0 2¹517«9ž;~<¥=ª>)>©??`@;Ï9Q6Á2ò.\)-$v iL+¼ aTßÂãÎUtË“ÿ±ÿ§r ÿÑÿÑ1 ÿºÿ”ÿç2ÿ£ÿQÿn”*ÿ“ÿ\ÿý&SzÁ`›è zc#÷·/˜¥Mj|°!1"ü$ø&h'¡'‚'%$%"i À1¤t]± žÈfQL²è×y0 w"Ì%K'»)ñ,%-â/“0«1¢252Ë3k3ð56³8û;e=|?j@ @V?X>‚<Á:Î8e6>3ð1×.ñ+Ž'J"Òиþùý ÚRé¹þôú¡½6¯ ÿÑf›Kÿèÿô(:ÿñ<Pÿôÿ›ÿ» 8ÿƒÿ1ÿ¢3AÿÙÿ(ÿÿ´Êdˆ}î‡6  ñ ù = L ûV’[²•®Ä ô½´Ž›¨-¢ñ>èÆ#y§q=N`¹ü±vê¢Å(. G"#ä%(&:&÷'¿(²)¥++-/,1V2í4U4£4Â3ü3p2 0¥.f,O)|&u"ÓxUݼ+ · ÎÆGë Æ~´A€Quÿój—€%ÿê,uOÿÝ1nCÿíÿºÿÊ%NÿÜÿ_ÿWÿº@rÿ÷ÿxÿx%4å©"Ò»©ß^œ%ÀÈ á "ÒÊÄHã+å±9Îøõ 4  " ¤ ³P#ÿ  8K¼ 8 c  ¥v\#îà´ÌÞjf }!ö#œ%F&Õ'å(â);)Š)J)D(d'T% "«Jðð'Ã ß ¢±—(!iÜ œª2¨€ìm:m²’K%sœRÿá!oŠVÿéÿ¥ÿâ2ÿÑÿuÿnÿç``ÿÿ„%æ?ßÿèÿ[ÿ«ýˆ„”íU—’gw ¬ 0 ¬ ~ 8 îMÕ_Ð S­C¹w?*"ú=§' Ê X ô²NÝñ×aî“Tg’å.WZ%`k$u‡«( c w pí¶MøÂeštãxœ"œ­C±‡¡¿»k%0kŸ›POž£7ÿ¿ÿ¥ÿÜ#6ÿ×ÿÿ•z›.ÿ³ÿš î]ðÿõÿÿÿð]cyÛΆ˜Vº˜]’±Ñ%Ï„h4 *;) ã©‘xç±Å=| Í í ú ž - g • Ȥ[†Â+«Á³»Ø§h ö Ⱥ>Å„’Xß/±WÅg·Y†§½_ö³ÓÛŠ<)\¡wR8)8‹±vÿ§ÿÿî9ÿ¿ÿŽÿ¶3œŸ>ÿ¿ÿ™ªðzÿtþ™þZÿ9#ZÀÿŒÿ™TÞl~‚•ñZÿøÿ¦ÿ ÿ¡ÿÕ D`q”·Úâá¹zEF–0»[úœLÚY–ËϼÂÍa(z Þ D ¢ c » w ; ®¸Ü–»g\ènÿXÿLÿ¾úæu$bþ‰µ~íü-0Ñ`/K‚­”eaXA2\„Rÿâÿ•ÿ¬ÿùÿÌÿ¤ÿÐ:¶Ì\ÿÐÿ˜ÿï°(ôÿþÇÿR‰™è§ÿ×ÿòf¼EXl<ðƒÿãÿÍÿð1Qw£Ð.ðÄ­¼Ô%Gd‚¬ÌááÞØÂàªÕî!–8¯…w`Eÿuÿª|)¾,ÿòEo'ý&Y[¢NI{ŽŒudz`T?Jbˆvÿ»ÿ¢ÿÒ3 ÿÒÿºÿïf¹§=ÿÉÿ±®Íÿþÿ4þéÿrV(y„ÿåÿ‡ÿƒÿŠÿÂÿì"k—¨Lÿÿÿóÿû6Ru¥ÎôòØ«”‚eK:) ÿðÿÚÿÆÿ§ÿÿsÿ|ÿŽÿÛ&®Pö“ÚÈŒ#³a%5|¡ƒìÿvÿÿ~Fú¬29ÎTy4":u…KÞƒ_q–€a^r•HUSMMlpCÿÅÿÁÿî%3ÿáÿÑZ¨©\ÿÿÿË”õ_ÿ™ÿ4ÿZég~¨E ÿï :…ÍñýßÊ¥uWRdam¸áíåÄ´›tTHF6&+lÑ9‚¹®šW Äsa”öW©sÖÿ‰ÿ£&ænZÈ)dë^xI%!S‰¢q­~ƒaBY‡Ÿ)ATVUnrY!ÿÝÿÁÿÝ-$ÿô>}œšg@ ñ×ZÿÆÿaÿ–'êu}GÃ\ÿëÿ÷ C~±ØÞåË¢zkm`exš¹ÈÍÀ½«‹fO?)ÿþÿõÿíQÉí›Rÿ­ÿzÿTÿwÿ¬ÍÉ_ÿÐÿ„ÿš.ãViþx0VÏ)PF&-P‘‰Jø°‘‘…uRHh™2O`cjbV4ÿþÿÛÿÜÿü (08BG^™¸¢d$!lÂç«%ÿÄÿ¼4ÔP{3á‡RG7AOn®Ë; …|‚‹›©´¾Âƾµ¡ˆrb[MPWx¨ÔíçæÅ[A;$#+WšËíºFÿÝÿ¦ÿñ‚pGè€ZŠÔ%]‡lHñϯ’kVO`y‡‚*FZ[OKL^V#ÿïÿÙÿî2;8>HNa‡£¯”\8@xÊâ©>ÿãÿæ:Æ.A!ÊlOUc†¦ÂÝáØ¾¦™•£­»ÍÒ˹´¥‚cV_eu€”¸ÌǪ›„]@:FAMn²Ÿiÿµÿ¨ÿäoúFS Ã’‘¿ä %Hp|V,êÕ¶‘aHIbsws>W\P=3:V_> ÿêÿî;=4>Qeoge›£†D'U¤ÝÈk ÿï(…ÙõÔ°~¬ÐèðúòäͶ«¬µ´¶¾ËÛÚÈ­¤—sWPbw‹“’˜”ƒspww”©®ª½³Dÿéÿºÿ³}ç÷Ø»ÂÖØÑ¾Åí'UfkYQ?%òÚ¸‘hTO\cdf0EOSI91<IN7ÿçÿý.LSKCPdkmt~–’^34j¼áÁfÿñQ‘ºÌ¹¼ÔóïÖº»ÃÂÀ¿ÂÎÑɶ«œƒtr€Ž˜™†|{vuq„±ÞúéÓ1ÿçÿ¶ÿØtÈéß·¨°ÇÛ×ɽÌó#DNWND1 ìÆ™vdWY`c`&9PXQ>--KU'ÿùÿñCc[B>Nj{m\o‚kGAi Ë¸tÿäÿðp©ÈÚãþ&%%ùÜÊÄ¿ÀÃú±°´¹¶©™‘’“•”‘ŽŠ~|ž™‘ÁìÛ™<ÿÞÿÅÿæB’¼¾ž¨Âɾ­ª¼â(,?D8#úÒ¨‚hX\]O)@Td]=(FbQ%ÿûÿõNniK2A`jlsyƒfPJb“­ž_ÿæÿãX¡äDRR=7( îÛÑÁ¼Äȼ¥‘‰’š‚Ž“’‰‘•…z…—“”¢½éñÙ‹/ÿíÿÄÿè,yœxjƒ©¿½³¢— ²Öý6:>/'!ÿÖ´«¤‚^RF(+>`mW;@P[Kÿõÿú)j‡e0&Ab}w|€†{YCOr–•j+ÿüÿþ`½exrNE7ûåÕ¾³¸¿¹¤‰wywnqz~~z}Žš‘…‡“—¤Ã×ä¿},ÿèÿÝÿø6iyeF@c¥ÖÖ±šŠ™¥Çø&GE7ýø&óÖÁ¾²‹\A* #C_j\D4BN<!GxxV;5Ee}…‚zƒ‡yeW\u‡…e92‚ñW…‹cV?øàз§¡¦®®¡Š‰…€zuttop{ˆŠŽ²ÆÐàÎ¥e%ÿýFfeRFPi‘¿ÐÀž“‘„“Â6=  ûâã䨳‚O,ÿýÿþ5ZdD7MN.*TuzbC5Is•‘||‡˜˜~_Q\u„{]34\¹ fh_Cùàй¨–•£¶»±£–—–„rlomnp{ˆž¹ÏåàÒ¡\% Dhxg<(Eƒ´Êѽ©™™šƒ—Ñ9(ýïû+òÖÍÛÞÃ_9  *A7# ,=HB87D^pn[CFn›©ž”Œ“”ƒiSP_t|t^[j§øAjhkR4óÞʺ¥œ «°©–†ŠŒwa_imsx†ž¹ÐÕÔº›p@+2OabU@%.` ÃÇËÀ¸«™}Œ³ê'!  üâÖÍĬ…[<)ÿÿ$ ÿþ  ÿùÿþ#--($,FZTEFSfpaYo“¯´ª’…}yiZPU_p}‹“®Ý>QbWH) ôßϽ°¤ž›”ƒuxzk^`nxƒœ²À˾§…h[U`ux^8-Wˆ¯½ºÈÎпˆˆ«Ú#'óÑÃÂÁ¯ˆY8) ÿú( ÿô ÿüÿõÿþ ,.%'D_]MFL`rrmr€–¦®¤•„}zsja^^k}”Ÿ°Êí,FKL8!èÒÁ¶§ž™Š|y{urrzƒž¨°®®¢‹uknw}pJ-&=Vx˜²ÌÙåÞѺŸš¦Íø!뾜’^/  ÿýÿö ÿùÿþ   !1.+<PZXROTbs~xz…š¥ yuutpdbl…œ´ÈÝö+:D7& êÒÁ¹¬¤¢Ÿ”ˆ€…‹Š‹’©ªžŽˆ‡€Š’“ƒmT:9Ii|ž¶ßùüâdz¬¹ÄÚö óÌ |f[N1ÿöÿò ÿúÿüÿÿÿö   '/>LWXTMDNm›“…zŒ”’‹~qjkngdh|”°ÄÙñ *;C4$ ôàÏÁ® •‡z|„‘•¢¬³©’{t{†“•‹u`RINTdqŠ©ËóÿðпÀÍÜ×Ôâø ñ¹ˆ]<)ÿ÷ÿ÷ÿù ÿõÿÿÿú' !0>HTXWO@C^„  uin}Œ‘…p_]eeil|“²Ëãþ1<>,õèØÆ´¤’‡|~„Ž”œ«±¯ŸŠ{vˆ“‰ubY\`bVVc‰»ãùí×ÁÁÐßßɵ¸ÊâݶyO3 ÿîÿãÿì# ß¡ã.-]|“C4PAÒi—¦vU=\>ØY˜×Xì˜qÍ>Ý„R0ý©. ª : ß ½ ¡ ¬ Ã Ì ¸ ~ =  Ü Ú à ü  * .   í ð Q Ü  Ö ‹ N U „ é : Ž Ø0” xÿˆB.ù‚»2aƒ¡ÌòMÑf÷(¾GêÏ^¹§€btÌ)£ þ  õ ùÓ>AWõ¥†Eý±sE&&ÙP[Ž^úSÄEðtµÊýM¡­8 é. Ž ú ¬ o i q a % À \  ä å â ÿ * L ] G $ ù Û Ñ Ç Ô ì  # - . # * J ¹ Ù õ Í v  Þ é  G X d w ¨ å ; „ ã @ Ï>«ã-€×JÀYïª|H¾³¬Ã nÚØ¨ÍΑ}­Ýç w* ÚTr<ALLA ÎrÅ!,âø¯ìÔ°°Á­Æ…øu é ` Ô _ ò ¤ P ý ô ò Ü ¨ d * þ  6 : 3 Ô ž v p j ‹ ½ û * K o … ’ ¡ É æ ó Ø Á   Æ £ Ä ó # - # $ 1 @ c ƒ ¼ î L Ø T ’ © Ê  z ÊžhKD/ ¨+œ ÈÙéØ  >_BR|ÉðÏ”xŸÏØ6ŽÖè¸S"xœ*¬÷J˦Pb!Äzi] ± # Ø } , Ä u ? /  ð Ï ³ – u W 9 , ' / 3 7 = 5 +  Ù — M êíõ ( f ° ë  I k † — ¾ Æ µ x A û   m ` Æ ù   ÷ Ü Ë Æ Ú å  m ¼ Ú Õ Ì î , ´ C õ •Lî™8Ö¬‰ÙˆhÎõm÷cîŠVÇÝ‚3óÜ:É ½…óc3Üçê®rc˜ßìÙÓÚ Ú Q Õ R  » ¥ ’ ¢ Æ Ï ¯ c æ ·    „ ž Ð    ÷ Û ¸ Š \ 6  ý  % K u ¥ Ï ÷ * M ` f ‚ Œ … V # × z <  7 S v ‘ “ ‚ j P @ ? 1 I † Í ù þ í á æ $ s è E Å e  %Ïßð‡zXï¯0%IJH1Nþd1ôžuåN‰‰sÛ[JZ—tX‘3ù  x ý ¯ 9 Î y 0 Æ { H ] Š Ë ú ¦  ¥ X  ò  5 r ¤ ° ¥ € k S 8 øàÎÎÕãèêêðû  5 N P N b | ˜ – … O ÓºÑð  4 ? E @ = 8 3 3 ) @ v À þ  #  ö ì ô  ) h Ð S £  Ž mM«L•dÕwíMàçÆZ]“ D±t`½û[…,¼€0¹j ; ƒ Ô ™ ˆ  # ³ j K % ) D m ‹ ˆ „ H é … G 6 + -  ýôàÕÚèøìËŠI Ù²€W/#!8Ocem‡°ÛöÿôàíqÑ  = 0        " 4 M [ s   Ä Ó Ä ² ¡ ‡ ¨  v ³ å   RÔM‹–Y5ï¡3âI”j+®z±JÑS!pjtÚ¹Ÿ– i ƒ È | . # 8 ' ½ ? ô ò . a h G ö ® j ( íæ×¸–\Ò›ˆv‹«Õ Ö^à_÷®_,üîëúÿ ApœÀÕíG®Eê]¤–~WKSVfz–²ÇÂÖ  g   ´ » ° ž ¸  f ¦ À ¾ ×  ™ J Z|›•V °g%ò˜*qªº‘zo‘ß[hKRcu ‡ ª ´  ¥ ” n d h U  É Í ö   á ¢ ^ 7 4 G X .âNª FúÝÅÕã+IuV pÐHåÀš€wocI7,?^޹Úí^Âi'ÌOrU0õB­+’Ê×ö  7 ] “ ­ ž ‚ y Þ ( L e }   ¯ i ?¡Œ$íÀœt®¾‰¯«ÛÿÖe·- ˜ × % … Õ p D E  â ¥ u @ ? w   -¯AýKƒ©Kµ´§Î. ò.FVY^SX*ÔSÐzHYmŒ›“†gC)3Vt‡Ž‡ªÝ[÷¤B™ÚÄ›a/Gv Â{ =R:,H™ï  öþ > ª E  ¬ Õ  ` Ë > § ë 2 ¯j1ꆌ | / ! = + ô ¨ m ‡ k Ù  ‰ : á Å × ç À g £¼¬aæt/Á\­í)eÚVŠ’]%Ú“\:á£fLF`}‘|ePEFDJR_msskZbn¼%·F²ã¸® öxK0ÚJ@ é:Å  - G c ‘ Ð  O ^ J , @ ‰  n À ø & W ¸ 8 á‚w Ç g V U h X D B F r < ‰ ¶ I 2    êµ~`8÷™>àÚŸ.q­r:+fÂ"9®DÔk0  -<?@*࿼Êåððññ÷ýþöòë8‰Õkš¾¾À«|r{øµ‰6jLpsO·ÞÂÊù Q ž Á « x m ˜  ª ! [ O @ B ` ¸ $ ‘ ± 5  õ Õ Í Ó ð  ) 6 Þ /„DL,ÚŸ4½BÚC÷Óš/¶$‹Å·¶ËÎÁ°—k0ç¨W[t¨Îî",þÍ’\0!&(:Pfw‡‹…‚Ž£§½á%p¾0> ®rgÊSçFmo¨ &Àî0uÀ   ÷Ü  u ÷ E V a Q > A h ” } € y [ %  7 q š x 8ª{='åša&ì‘“Ç’™Å¾oÇ „-W¥qzaózÿ uNVbŠªÜ!\‚‡‘‚pGç¨rI3 ÿïÿâÿã=]|ž¶ÇÉÕÈŸy`†Ç2›ç: Å!y7CÎcá!3·½¬@®Ü`¹ b{O7rï a ·   ë ³ š ˆ fÒݼ•Çû ½GßJÛ!Í—sTlÕcOk›³iÑ(°¯ÜE¢¾²Rèw ÿïÿñ4x¸åö åÅ›n<ÿâÿ¦ÿ}ÿhÿlÿqÿqÿ]ÿKÿEÿVÿkÿÿªÿÑÿý1j™ÏЭc=c£Hy;È'ÿÿ`ÿmÿñz[¥˜<õ¯8˜Íb}‹‚ÃBÒ < ‚ f 3Þ¢‚z.732¢_«ÿUÛi;()ÔLâÃežŠ)¯Ï|%ŽÆx wôîrøl™¨vLè¸}A ãµ’xc>)&;R[Q7!&Ht¤ÜáÊt¸{[&…v£1sÿ©ÿÿ,ÿ«ƒ(rr\wô§küHi©Qdœ÷i÷YqT îÛý_mZT8Ø’è7~³4ëöúÂiê/ÕÆ{\;0'Õ=)  .e¦åðä–>ÛŠU$ ëß×ÜÜçû  íǦ„jGá¦uK4%í­` Õ‘+ÿ½ÿ8ÿÿ@ÿÎk¼¿7ÿ…þþþÃÿ-ÿÖ‡âݵ´÷¤sb…ôöY³…í@b‡zK+Y "Ó„»VñuæWºuv¸ÛÖ›xï•%EFVþ †êé ‘ Þ X Ø h ê f ­ ö ç ¿ G Å < à ‚ Q V T o Œ ³ × õ  " ; J V L @  ç § n 7  Î ” Bìy|êSÀBËi«mÁ!A‡ÿý!”Jé뇧ÿ½ÿYÿ‚3È ïŸe¬gD³Õÿ6“üIŠÐ |ÚFynPp?]^Î^Ÿ:Ôhµ ÀüýîBáФU®Tc Õ † ì íæËìã¹sjh&Îs'*sº^žá ùÌšd=ãšCâI Ãlù‹‡ Ë õ × ­ }Yr’ ˜b=éXˆ¯­¼ó1Yø4Nÿ¦ÿŒÿ´"s‚8e –ð.sÌ!Zp„­ ™ <7J°Ú÷é­y:Åo:CsÊpš–§â2. (  « Ä#1¿=ºQ3 ÉŽa-J‰"Çx†í  N C -Ø€‡Å‚5ÏWØj µRÖMÓ`vµptàp   ¨ k N  q šqAQŽTeSßËtHth¬Ðr=cÃBŒ°Õø7^XB/fàsØ÷öVmo@þØÌȾ{rŸFßr½ç] & Ç E €ó«øˆûöˆ'ä ð"å$Ê%æ&³&¿&Ó&º&º&á' 'x'ü(¤)I)Ç*4*Q*b*;*#)å) )0(³(.'³'\''&ï&™&%x$Ñ$9#°#0"¬" !z ù µ ¤ t 2-®8ƒºQ$6ÂMË)4; ô z " hß¼ 4vžŽoÿÌÿßQÔ1F"ð iþŒÅ­ÁbßNqìøh"vàZn © ! 'k²šCèÒyß"#Ú%ž'ª)Ú,"./º0¥1`1œ1î2?2ª313¹4F4Û5N5¸5Ø5ñ5º5o54»4r4*3Ê3J2Ö2€2a2e2O2 1s0Ð0/i.Æ.&-x,¨+ò+N++ ++*v)Ù(Â'Â&:$"l MwÙÊÅ\©ôJ Íü ½ ¼ € ¡.×û+§ —6D¡ ȃTUr`o§’ϳt¶Úïd MŠ9¸æiŒ ¥ ¸jF|¹7ky ¸#%;'b)|+-Í02’4á78Ê:p;mD>â?u?ó@y@ÜA=AdA…AdA(@á@Á@±@¥@m?ÿ??B?7?U?Z?/>Ÿ=û=0<Š;Ö; :197÷6õ6[5ÿ5Á5Q4œ3Ù2î291$/Ð-ø,*(T&È%9#Ü"n!P ”¡]8¿›¾¸ 8 ftM¹(„_ÿíÿÐ-%ÿ×ÿ‡ÿyÿ§ÿÇÿöM¬àÚ Â | )Ú"™ä!- 6 ) X®D¦$åÃ"%'¯*.,Ú/#12°4™6è9x<>|@kB@C¢E$F0GG‘H%H¯IPIåJ^JÌKNKÖLhLÙMi=Y<›;Ó:Ï9h7÷6\4ã3F1“/«-Œ+À*o)q(~&Ô$º!¤Yeà Ÿ [€éÍKBBDŦ¸bÿýÿ´ÿ°ÿÌ Ebv7Ö < i Å ( t Ö`é~zˆ ’#«&Ë)â,á/à368è;<­>V@CZF H‡J‘LM¬OP{Q‚RJRÄSbTT»UdUéV|W5XXúYµZSZ”Z¾Z¿ZéZø[Z¼ZYPX°XiXZXcXGWÛW;V–VCUúU¥TÜSÂRnQLPkOÊOM÷LxJÝIPHFûE D'B´AU@">Ò=m;Š9T7 53|206.G+Y'í$ ŽXö= o ¯ÀÍ3M×üª]ÿäÿ˜ÿ‰ÿ¶ÿËÿàÿíÿú’¬ï>b¨ eó¸n!$-'’*ü.d1 4×8/;”?4B=DÕFŸH6JLµOˆRS¼UVWdX›YÏZ“[[Z[Ù\ƒ]3]ù^¡_z`~a¯bìcÝd¡dÝedïdÿdâdÌdAcdb\a€a`×`Ì`š`._Š_^Û^Ý^Ò^^]•\–[Ì[=ZïZcYŒXVoT¥S)Q³PN`LÌK˜JŸIÀHÜG^EC@ã>£fÕhDi¨jkSk”kÖkÈk¿kŽkfk j¨jojljøkŒlmpnŒo«pÊrr×sps‡s“s‹sÀsèts³ràq¿pØpQpoÛoxon~nNnonÑoonónªnn}n£nžn^mÌm1l¥ldlkzj˜i³hÍhgWfÆeÝd©ca™_Ä]Ç[HXàVSO­LtHþEnA´=õ:^6ò3¶0C-!*h'¼$æ!\Z!Dê½ »&3¶Š…GÿÑF3D|CAr@|?‰?¸@*A¸CEaGÔKNŒR+U[X­\ƒ`Ccéfohyi‰jØkËlÄmrnnˆo o$on–n'm©mJlãl7kÚkÊlOlÔm nYo3pqr rÀs;scs•sÎt8tŽtåtªts rZqÓqzqCpÜp~ppp\pùqqÎqðqÝqåqÜqëq«q6pqo¥on¢nhnm”m1lÕlxlkÙkIj‚iChf–ecaD^Ô\XÑUäRíP LÄIELAÔ>Ç;Ì8ú6)30,Y(5#„猒½M Y­z¬þ QPNÕMdLxK¤KÕL1MNÌPóSOVWYN\p__bfielLno¯p…q•r(rŠr rçssUs&r¯qÚq&proÍo$n8m¯m‚mën=nÐoUppíqárÛsŒtt7t‡tëusuævYvEuåuttsås}s2rÁrnr r3r©s‹t_uutuu½u¤u’utlsxr~q»q5pûpplpVpapbpTp\pošn¸mílËkžjhÁfÈdea‘^ý\ZJWžT`P­M!IöG*DƒA¯>[;6å2-~(R#.}åÄö 8úP Z¹Y°XÀW¢VçVNVwV£W¥X²Z\…^úaQcäfƒiCli‚g+dñb¡`Á^7[GWR’MIH4B®=7,1h+t%6ùlÈlÉlÒlålçlÑl«lml€lÓm„mãnÎp2rs«uvvîxxÊy`ydyCxøxêxìxõxÀxaw¹wvhu³tït/sbrjqºqBqNqtqºqÈqÔqúr7rrªr›rŠr™rôsntttÕu tÂtes™rËqÌpÈoäon–n:n‚nèoÁpqwrlss¨s°sšs1rÖr|r-rqÓqårrrõsµt˜urv0v†vÐv£vTuÚu—uHtãtRs±srŽrqÍqpnVltjehòfùd·`ð\¶WnR’M,G“A„;ª5i.œ(&"3k±nvn’n»nénînÃnnln—nØoio¾p´r;tulvcwIwùxñy|y¯yZyx½xxsx*w¯w6vœvuSt¡s×s r+qpcpp.p_p¢p p·qqrrƒr°rÒss—t+t¿uAu‚uÏu¤u_tŠs¤rkq.pnân.mƒm{m•n1nÏoŒpIpÁq!q pÚphp o¬oKonÕnîoo¢ppÙq©r¶sÙtßuÓvFvƒvlvŽv‰vmvu¯u3t½tRts sqíppnµm†lj‹g–cê_ Z¯UÅP®JüEx?G8…1Ë+ƒ&5 ýp(p]p­pôqpÏpŸp©pöq(qžqþst’vpo„nçmÎlŽk%iÅhÏh gÔgqg¼h»8í3;qVq«r8r„rrqrmr²s-scsåt¦uÔwx;xùyjz.z£zïz™zyLx¼x wTv?us‹r:pÐoOmºl5j®i g‘fe,dldedOdée…fãhdjnlŒnpXq®stu"uñv¦ww¦wæxwÇwYv‹uÃtìt)sur²rqq/qpÕp‚oûo‰nÔn$lëkqiœg½fGe+dœc­c{c…dÄfMhvjWl>nprPtOv vówwáx‚xëy#xúxÓx€xVwåwQvKusçserdp¨nk hÑfb·_„ZçUƒO$I!Cg=Áq?qªrPr¥r¹r¶rÄssns¦t.uvwwãx…xíy–yÏyËyx]wJv`u;tr}p´nšl–j˜hœfÌecya·`)^ž]§\º\ª\®]Ÿ^“`Tbd{gi³ln"p!qºs^t•u»vxwKw©wüw»w`v uìutds¢rÔqþq%paoÃonCmClZkKjHhÞgBeMc4ay`._a^]ƒ]^6_Úb‡dñg]iwk¹nzq2sÁumv²wWx[yy¥y¶y´yUy xx(wYv)tìtPs~r.p7n\l6j8g¿e}aÓ]SW½RŽMsH\p²q4qûrgr‘r±rÔssus®t)tïuÕv‰w w–wóxzxsx)w!v"t¯sNq’oäm¶kPh™eëcza+_Q]“\Z=X©W#V=UWUZU{VŽW˜Yv[M]û`íd=gYj9moŒqïs¸u‚v¢wÃx'xxx w¿vþvOuut¤s¥r¢qfpn³mplj®i"g§fdjbŸ`Ô^ñ\Û[%YÐXóW§W V|W”Y4\7_)bPdýgÆjÿnMq¢tvw'xyyLzz[zƒz5yæyny=x©wvUu°ut$rÈqZo¸nRlŸk*h]d¯_ã[’W*R³o‚ppïqqq²qírrWr£rÛsEsêt˜u ucuèv9v“v4ut'r¼p¯n›li¿fôcà`¤]xZßX„VÕU5SÀQøPdNêNMYMrM›N™OQARöUÃXä\Ç`ƒdOh&k˜néq‹tBvwÀx\xßxxEw…vÛuÜtÞs|rpCnCkõiÉg‰e=bê`§^^[ìY¡W‚U¯S©R$PêP7O)NÂNZOqPïSÿW3Zõ^Ba¹eriSm`p³s—ucwDxcyŽzz†zlz8yÔyËyoxœwŽvàvs+rq`o×myj^gÂe.bšm¹njo3oÂp pSpvpšpÉpüq_qìror¯rÖs\ss„rkq"n¦l&hÆeUa„]òZ#UßQçN=Ó=Ñ=Ã>Œ?ZABµE°IMÒR‚W©\Äaªfuj®oreuvwx¶yyxúxwJv&t0r>o6kÚgÀcá_Ï[˜WSÀPXLÎI´F¨Dñ>†=£=Y=>.?“BE›I·M¡ROW9\ˆaáfµkMnÜrttçwCx~y´zz/zz:zDz*y©yxKwØw@vjuLt1srxqJo`lùjûi3g†mmØn¨oLo­pp0pKpfpŽpâq]qÆqïqûrnrfr+p¯o lie`û\–XiT O)JÙGD‘BW@Ê>ÿ=:;<9ˆ7ý7!6M6-5î6“7V9*:Ä=ÒAEF7K(PÝV“\Saüg!lkp„t_v’x±y[yüy“yIx3w8u);ô:d8”6ê5'3¿2t1³0î0°0M0¼1Y34k76:M?C¿I¬O¹V5\™bhºm¤rYu@xyzyÞyÐxÛxvtp‚lkgb \|V«PåKEF{AÍ>8:Ì8,5$31‰0÷0/Ô/”0ž1÷4¤7::¿=úB{G†M­SÒYÜ_¥d i¥m—q‚t vtw}x`xox”x’xâxèxwæwrvòvsuÁtßts‚räqÒp®oÊoMokºlrm0mÙnJn¸nßnÚnÙoo{oæp4psp\p‚o½n¹l=i¿e½aw\,WQ•L/F÷As=9a724þ3‚1Ñ0u/.-5,¬,+Â+J+z+á-4.C0Ÿ317< B,HO Vœ]hdUjo°sZvÓxmz z.zay_xzvMt6pdlfga[TàN‚H.Bœ=95n2ú0.+,—+ï+*Ð*œ+‹,´.ý1(446ò;%?ôF/LiRÒY^šd-hÂmaps…tövVv¯võvõwcw˜wzvþv™v,uâuot·sõs~srRqµqJqJqujîkxll•lømSmjmKmIm›n)n¡núoko[o_n)lµi¤f–aü]WDQK³EÉ@q;7*3À1à/î.Å-|, +Â+:*½*l*)²)A)5)M* *‹,/-ò1¡5€;rA±I*PzWã_keül[pØu(wmy°zztyJxCuãso°kRe°`eZdT'MˆFÚ@¸:’6 2/¯,æ+,)¬)(=('ì(¡)u+(,Ç/31N4ì9#>üDÕK;Q‚Wƒ]{b§gèk¿oFq=s>tt¸tÛu\u¥uÉu’uJtôtát£tsZrÖrlqÝq‹q]qqÚiõj>j“kkak§k§kik^kÁlslömcnnnl|j«g ce^(X²RULEÚ?s: 4Û1†.†-+¦*þ*=)Ù)k)+(ò(½(s('¼'z'='V'2((÷+è/4½:ÖB¸JR®ZêbMiƒnÜtw yÖzWz´yVx/7Ÿ2Ä.€+ô) 'h&%³%)%!%%o%ì'(")ï+d.l27™=C|IÝPYVÎ\©b›gk?m·pKqŽr’ràs}sÞt:t>tsÚtsös‚rÊr:qØqxqiqiq»r)i±iŸi¬iújLjnjUj j jvk?kÚlkmXmxmbkriJe`ÂZßTñNMG°AA:™5d0¯.#+Æ*í)ü)¿)m)R)&(ý(Ö(ž(]('¶'W&ß&‡&&S&(à+T06I>1F NW^ÏfŒlr‚uæxõyoyÍxuw~u$r±nžjEdÏ_ÄY×S„LEl>Á8&3.X+>'Í%Þ$_$#±#µ##·#æ$‹%+&a';),w1L6Î93b.Ú*&Ù$7#K"S" !Ä!¤!q!m!l!¯!™"Œ#Ð&õ*8/T4y;%BIŸQW°]öb³gŠj minoÃp7q qsqˆqaq¨q«qbp‰oyn•nn"nnPnškájçjEj5jjj"iáiËjjzk9l mn2n m‰jyg!aD[SœLÀEË>u7Â0ä,})(M'u'ƒ'&ë&Ú''.'M'V'2'&Æ&o%õ%k%$œ$¹$‡%×'`+“0U7W>IFMªU1] c©jmÒpöq±r‰r6r9qkp‘n­lÌi¿fÖbT]aWP¢IïCj=Z7S2,¤(Ù%§$`#"É"]"/!á!Š! Î G –!#-%)Ü.94’;ZC4JþR6Y^–d/gùk~m n„nûoïprp¦p‰pÅp½p‹oÁnšm’m mlømmAm kÒjüjÆjçj†j8j&jkjkkñlÈmÑmali/eb_ X—QJ3CC;Ñ5%.y*c'D&Ÿ%Î%Ê%W%8%O%²&&J&‚&’&©&&f&%²%f%%@%%&~(,"0»7p>'E„LœSfZh`DfiŽlŠmwnqnˆnönìnånmUkgi™eíaÆ[ÃUœNÓHTB;Þ6>0L+ö(4&ˆ$ú$˜$#Ö#{"ð"/!p « “ q!Å#C&Â*9/ø6B>EÔM_T’Z¡`Öe[iªkÙmno"o¾p p#p]pRpGo¤nˆmvlölôlÇlÂl°nl¢kŒk#k"jšj0jj;j%jnk5k÷lÕlkg5bì\IU„MüFý@8m1Î+_'µ$ù$’#Ù#Ô#y#ƒ#Î$Y$¹%%Z%%è& &$&%È%”%d%©%´'(,g0Ó7J=ÕDÊKRQNWn\œaÝeYhUi–jÙkjlPlåmtmsm‹l¦kôikïjëieb`²YÏRöK}Dq=l5½/6) %Ä#\#"h"V""D"©#=#™#é$F$µ%7%«&&E&I&@&@&¦&Ñ(8)·-‰28g>ÖEKK/PEU‚Yó^‡a¸djeÕgVh{iïk(lLlâm”m[mfkehçc°]ðVÔP4I¯CK=;6¯1f,ƒ)ý( '›&Å&7%¯$÷#ê"Ï!Ý![ ­ ô!F#Y%d)ü/>6—=ßE›M T[6afÚj!l‹m7n‚oNppipÈpÝq&pÓoânÖnsncn m±mKp^nÌmlÎlŽkêkokDk#j{j+j¬k?kÐjhædZ_CXQ#I­B‘;„3Ä-P'T$W"5"!g!E!!P!¹"U"Â#-#›$*$Õ%‰&9&­&ö''K'º'Ø)/*º.°3j9Ï@EýKBO•T-Wø[È^Y`ia¼c`e-g:i9k!lymênGnÍm4kLf„aYóS&LNE¸?Ž93–.?+A)(¨'¼'&%»$«#"˜!ö!'! ä"Y#Í'û,é4-;VC)J¼RY–_êf7iãlŽmCn•odp>p·q&qTqËq¤pÊoÆouolon­n/q9oÇn†mÉmylãlzlXlk;j¯kk¡l&jÌhüd@^ûW¶P©I/B:ó3+,Å&æ$""!Q! Þ!!T!×"E"È#7#â$Á%Ã&±'i((o(Ð)M)e*Â,€0·5´<B0G‘LJOøTWKZj\M]¤^²`Ab‹egÖjlonNnÊo^mÜlJgâbÃ[ŸTªMŒFÈ@¢:N5/„,?)þ)”(¼(-'€&§%¤$”#™"Ý"!Â!P"^#j'E+î3:1B!IÞQkY%_­fFj1m m¿nûo¦prpîqVq•r1r:qp“pXpdp,oÔoXqúpœo_nŽn-m¥mNm5lákÕkklkòljjþidA^ÚWxPQHÉA“:}2¨,L&Œ#ã" " !W! Í è ü!Y!¹"Q"Å#£$Ø&B's(e)V**+0+Z,É.¹38>CûHÚLûOðSXUþXŒZ Zì[Ó]I_ôc f”jltn‘oo×n¦mid¨]{VOCHaB0;ö6»1-©+T*ú*F)Ð)('%ø$Û#ë"ô"!Ò"‚#&ˆ*Ã1¿8¯@ÈHÁP£X_SfGjƒmnSouoîp¢qqfq©rcržr q3q q%qp¾pBqþp¸o„n¥n-m¦mPm'l»kšjÐkk™lj¹hëd-^àWŠPiHÙAš:y2”,=&™$"J"K!•!= ò ð Ù!!>!Å"#$‰&P'¼(æ*"++â,«-(.ì115œ:“@yFAJãN­Q"TV5XlYÁZz[H\…_&bafAjl´nÂooÑn¼mÒi÷e]ÓVÔOŸHÃB¤<‚7l1ò.£,`,++/*i)N(A'%â$Ô#Ë#F"Š# #g&v*P1 7Ò@H%P@XA_f:j¨mñn¦o©oèpzpØqqGrrzrqhq^qq“qpq q¼p‹o^nmmÔm=lÒlˆkùj¿içjj˜kiÊh ci^7VûO÷HsA3:2 +¿&F#ï"="6!x! à · ” ¢ ´!!4"&#¼%Ð't(Þ*c+ ,Ž-Ž.i0–307Ì<íB×H·M7PÂRÄU3WXÞZZš[Q\S^ÈaçeâiêlÇnço3oànÇmíje+]ÓV¼O‰H¾BÍ<Í7å2¥/‡-c-&,»,d+Š*O)5(&È%®$ž$#*#v#‘&S)Þ0c6ú?,GdO¨W·^¢eðjŠmún²oo´p3p‡p¡páq¸rNrq qÀrrÐFüO?WD^'eojm|n.o o oyoÈoØp!qqÅq·qsq¼r8r‡r°r”pœošn‘m˜lÍlkvjÒiûh§gÖgæhhihf‘bF]zV‘O×H[A9š1€+8%á#¼"$"#!w! K å‘q%Ú!1#k%k'e)>*Þ,--÷/÷3]6ß< AÌHNZSVÓXÏ[\}]à^—__“`Jb)dˆgÊkQméoÑoÎpnClºhfc+[³TCLçF4@Š:ž5ã1.M,K+ö+v+*B)-(,'9&J%‹$Ê$Z#¨#í$&™)û0E6—>‘F§NÝVÓ]¨dãislämnZnGn¡nénöoTpVq/D0J£QUáZ\?^œ_Øa!a´b bycd»fËi–l§nÈpFoäo¼m™k‹fËaLY½R!J²Cõ>U8e3¿/,‡*“*')†)(T'o&‘%Ë%$Š#ö#«#$##Ç&y)ô0G6ž>‘F¥NÐVº]sd‡hîlAlÛm—mvmºmõmýnooŒp“pÁp´q.qèryss~p6oƒn¹mÓlñl>k†j¨i¯hpgØgóhœi|ih"d\_üY&RkJªC;Z2û,`&—$"X"f!Ü!x Û Y ×U¯G 7"($6&p(2*+Ð.–1¨6:‡@9FYLÝSlX]_aÈbÍdd²døe2e”fëhÃkDmúop…o¨o?lëj{eG_TW{O°H@Ay;ã5ñ1s-%*è)((»('|&Â%û%6$Œ#ï#z"ë"¨"9"Å#%Ü)f/Í6@>XFšNÜVÎ]jd[h—kËlOlòl»lämm mŒnÂoép*p*p¯qƒr1rýs´pYoÓon6mJ8Û3/+7)f'î'&º& %C$‚#Ê#5"©":! !\!!¶"0%&(Ü/p6>[FÌO#W"]©d{hk¡ll¥ldlxlltlên%oWo“oŒppïqªr•svpzpomnnmHlvk¤ji€hJgçhijbj©j¯g¦cÑ]VKN7F`>=5s.9'­$}"!é!L! ” 5  ‘4èNÖ!C"á$ê&X(‹+./J3s8Ñ>,D^J·Q@X]btdífãg‹hßi±jjGj”kTl_m¶odoïo´mÄlbi&eš_XçPòI9B';q6%0­-)¯(2&è&g%$»#Ö#"_!ç!|!( œ _  â!v$”(|/?6>\F×O.W5]ºd‚hƒkŠkñlƒl8l;l4k÷lVmŒnÅnúnðotpaq*r-s+p¤p^o¦nmElXkrjJi*gÞgwg¢h¾j>j×k0h„e^…WòOÕG÷?¯6Ì/Q(n$Ë!é!m ¡ ƒ ÚÓÅbÿ®îJ p!³#ƒ$¿'7*X/>4: ?èF]LðS…Zv_àd¨fîh¹iAjrkCkÑll{lõm…n o.o-n‰lj faÄ[XTLÄE>>ˆ834.O+>(t':&%ƒ$˜#¨"¨!Ü!- Ï | Dʪ} ‰!e$Ð)/í6Ì? GkO¡Wœ^dÁh¤kkól–l^lalFkól:m]n„n¡nƒnýoäp¤q›rpÈp™oÝn¼mUlQkVjhðg“g'gPh†j!jôk‡i.f%_êY†QaIA820)G%&!Á ñõë“}…z!¿q™Ô± ’"#%±)@/4²;XAÀHuOPV](bŽg1i-j¿kl%lëm‡mÊnn5n`ncnÍn+m j'gƒbã]ÝVîO³H@–:K4?/ø+¿)M'&%%$z#v"c!O Šï±qNáéñ Y!£%s)ù0ú7å@HGPXX>^˜eh¿k}kÖlˆlol}l^l lGm`nqntn;n¡oxp$q qïpÍp¢oånÔm}lykxjDig²g:g]h–j-k k¢iˆfóa<[-S1KC2:s2§+%&r"t!!¿—2176õ°~¢Òw !A!÷$´(h.4â<BåIÈPÖWš^Ðd$h¤jokål'mm¦nBn|n™nvnŠnJnAlúkPgÚd—_SY—R1JœC;´5å0`,Î)O'y%Â% $N#«"¯!š ‘ÚJÊ©Az "u&¹+ˆ29‡A‹I³Q“YT_re’hëkak²l}l•l¯l‘lSl”mnŠnonnno0o¼p|qAqpÜp omÁl¾k¹jŠibgògqg“hÐjdkLkàiýgÓb˜\ÖUMŽE`<Ó4ì-$'à#P!x¢MÏæò òÖÉï„Ù å!$S(.5:<çDK%RUY`@e}iíkžlömm²n0nÐo nön¡nÌnˆn@lej-fb\U›MËEì>7Z2,í)è&ý%­$o#ü#|"ð"! !qÙ†'•òd “"Û'{,x3€:B”J·R{Z&`eÞhìk'k{lplÂlêlÆlœlãmàn­nwn nToovpp»p™pio°nãmãml(kjhžhh,iYjÜkÀl?j‹hÇd%^âWyPjH|@?8P0]*%l"ð Âòôä1N‚£ D!@!ã$¢(!.S4Ô<~C¸JÔQóX„_zd£i*kl¸lñmŠmæn‚nÊnºnon»nhmìkhÓcú_>X¨Q¤I±AÊ:§3¾.Ä*'r%$%#P#*"ð"˜!ø!" d¼¢'ùŒ¹!B#õ(í.5-µFÇNÎV]qb¸g¤iØklkl€lál»lOl2l‹mLmÒm~m!m‚n@nŸoozmšmømÚmÔm’mflælAkSji†itjmkÒlÇm1kðjög c¥]VW-O³H@$7û14*ü',#„!Ö &°&CZ´  Q | Ä ü!Ù"{$á'À-2¢9«@‹G„NQTŒZý`dögãj©kÈl¼lóm|mánwnznwmk²hKdº^ïX×Q7I†A½:!3¦-((µ$‹"É!S!t!t!ä"@"P""!•! ˆö€ýå’ Í$7'Ó-‘3d:ÂBSJIR Y ` d×i'jÑl ll½lélykØk®kül{lÊlkl'l–m\mÁnn|jžk€kölžlûmZm'lÀkëjéjbj?klbmbmÎlÒl:i€f'`jZ¹S‹LZD DóK“Q­Wê] aùeUh§jhkólommDmýnmÓkýj faÐ[bT³LßE=–6A0?*9&?"ƒ!ú ` ¥!L!â""!Ÿ!B Ó j ”„6 y"&&2*h0 6ß>dFMåU”\ bÌgjÆkälÒl®m8m1lƒk³kyk¨kËkÌk]k7k°llômIm°efÔhDjk`l©mmlakÀkek?kÛlømänNm“m?khCc.^WfPÙI[A^9Ð2¦-ƒ(Ì&#G!á „ +Ò  7 } € ¤ É!¢"v$š&á*Ü.ü4§:“AGXM:S X(]`×d˜g iZjxk|kÝlÓl¿l\iÿg¢bù]öW PHe@³9—2±-F'Ô$`!# .ªÿ §!B!•!­!w!`!3 ü ¾ M ` D"$K)-Ó4l; B£JVQÜYK_^ei"ll¯mgmBm™m^lk¬kiknk1j×jOj)jzkkyk³kö_fbdwgXi½kúlâmPlÙlšlil>l˜mqn8n–nn l_j/eÉaH[1UUNBF•>Í7C1r,2(â%X#I!V ¦ù  Q ´ ½ Ö ç!¬"‘$š&­*-B1ó7=BðHMûRÚWÚ\`DcNf:gói™j^k°kyjÇgÁdÍ_YìR¬K‰D<_5/*:%."Kœ9÷g÷ t Ñ!!R!«!Ì!´!l ñ!*!S#¡&+ò1I81?%FÅNwUµ\çbzgÿjæm m1m·mmÈmfl„kžkckVjÜjDi¶iŠi¦jj1j:jEWå[’_3c[fûjll,mHm)mlmqm^m|nn‹nÉnpnrm%krgËd^­Y•S"L%D”=6»1-,(û&/#}"3 ÷ Ó ×!6!8!C!8!Ñ"›$l&N)+¥/W3r8–=¾BóGÊLfQNUÜZT]äaPc½fDgËiÉi§hÍe4a¹\VNÙGÀ@k8Ó2E,G'ý#a §Há·nÇ.‚ò |!!!ç"Q"R"!ª"@"ô%ö)Œ/_5 < C%J°RBY_ïdái¢kÇmCmm}mmmrl÷lkMkjïjAi]hžh#gÎg¢gpgfœPnUYä_BdhÁkdm;m|n;nrn|nin¯nëonºn¼mÉl™iÁfºb)]ÍWûQÅJ‡C<8611£,Ì)7%­#£!¾!8 Þ! !!%!! "A#Æ%u'Ò)à,´/¹3Ö8D=AmEÏJƒODT X3\_8bˆdÚg±gêg!c_(YRçKžDw=-5‰/-)‘%Ü!½r›m<«Î$€2  ÿ""²"Ë"¡"V#K$(;,h2“8|?|F´N1U®\.b¡fójõlimXlôm3m lûlckŽjÈj™jKihh2g1fce«edšcÙbæHMÂSÁZC`Ff8iòlÁm˜níobo«o‡o£ožoo>onMmjkBºG¨L¶Q•UüZ’^b9cbŠ^Y„SLèF>ù7Ý0M*Œ%é#§!à±6Ë–f<) A!Q"#"†#6#ê&N)$.3;9Ã@%G:N˜Uª\™aòg0j l€lÍlïlIl,kåkij¸j$ii$hfcc÷aÈ_Ž]^[HYjWHTÂ7o?G`PX3`‰fokOm‡p#q)r qêqèq’qdqp¥oêo>mól¾j_g½c¸_ÌZ–TáNÅID ?<; 6†2Â/,º*©)p'ù&Ë%g$¢$$v$Ì%¹&'á)+-?0@36¸:l?CÐI N3SWù[´_ü`Î`=[¥WPŸJ¬D=62.ã)¦%¡$"Z!| WjH°oÍûE G!3":"õ$c%å),µ2"7—>7DÙKêS-YÁ`#d·i1k[m(mlël(kÜktjÖji­húhXf”d<`è]ÒZWOT-QFNIJÞ.§7,@™J/Se\ÑcÒiÙlöp[qÀrürèrérqr,q¶q! "]#‘%Ú(A,N0•6a<+BéIÉPÇWÑ]Æc‚gOkl”mÏmhlþl%k»kDjiÒi‹hÇgÞedb\^ZU·QYM$I9EiA&œ/U9=C.LîVë^ÌeÝj n]par8rsr½rUrq q'pso¸nÔn4lÿkŽifybà_.Z½V,Q—MLIbEeAÆ>; 855ó3¥1”/2-m,++*á*X*n*Ô,M-ß0&24Õ7Ö<@”EÏJûPUiYp]Á^j]²Y%TÌNÎIBBó<5Š.ñ*Ý('ˆ&š%ñ$Í#±"Ç"7!©!` æ ø!;"M#C%&ø*- 16;üAóH–ORUÆ\)aFf@i_lbmsnKmÅm>l^kàkNjƒi—i3hf~c_8YðTÔO]IìDÑ@;–6¨æ'Ÿ1×<F;PºYwaŽfÓlnÄqDqÖrnrqäq\pÚp7onøn¬nmRk¡iËfýdA`§\ÑX‹TkPsL‚HøE…B?v<Ä: 7±5B3{1Þ10N/ì/.×.Û/÷1K3B4Á6í9><ðAF K8PXU¬Y¨]Ò^|]òYÊUÒP)JÑD·>&8 2.r+Ô+*)'á&©%Ž$Æ#ù#›#8#u#ž$Ç&(¢+A.ì2`6ö;ÉAÊHNŒTøZ«`?dƒhÏk_m·nGn´nmjlŒkþkOjniMhÀgdã`‰[ÜUŸOmHÛBc:H…Q¢ZU`œf½jPm¹o pPp_p’pDoÿo•o*nánàn¼nmlNjѺA¹E.IÓN‚SNX8[Þ_£`O`\xYSÛNäI>CU=é8¬5C2†1A/¸.|- +­*:),(/'ó'Ô(q(º*"+ø/2+5ó9b=¿B}HUNuTŽZH_c·gAjñmnÙoo*nkmÈlÞl)k%jh`g5d™an\V‚OtHB@Þ9Ã3z-_(,"‰"#C,G6@)I RéZ3a6eºj'lUnWnào’o•o oio,ooUo“o¼oNn¸mklGjIheaÒ^/Z‚WSóQDN¤KõHÑEêCHAŽ?ö?#>Q=á=.<ü<ë=¹>Ã@OA„CD~FôIÌMÉQåVAZµ^ab,b ^õ[ÞW4R¸M°H…C¿?;Ò97k5´4L2°1 /k.3-",ú,ä-®.'/ð2V5â9<¼@&DsI1NÙT¸Z8_ð=1;®9ä8%6N543÷3å4Ð5”7§:H=Á@²CûGEKnOöU Zd_cbf®j7lÉoYpyqApÐpoŸnèm¨lajUh^eIbY]X+P×IˆA8//À(!ÂML8 ¸|kT%-6C?cGëO÷VJ\ a eHgÆj7kmmán‰nØo\oÊpù=;Ý:Ê:Ë:Û<=?QAÔEG¿JñNQRoV¹[X`d.gÞj£mºoÐq·rAr˜qöq€p|o“mölSi±g-c._XúR©J˜B{9b/É'ERöV ÞÙ ‚)êó$©,_4µ=/EAL)RþXP]›aCd°fÞiEjÔlAm mÞnlooŠpp5pvp5oìnØm~k®j.hxfdzb»a_L][[1Y6WeV@U=TÉTT TCULVgWàY*Z™\]¿_’aªcÜeægïi4j|j_ièhf\cÂa]èZWTTIQíOÇNLRJ€HbFjD‡ChBVBbB–CÝEG&INLN¥QÂUXÎ\š`„dhk$mop q™rÔrÑrÕqþq DRJóP{U Yj]2`'c\eÊgðijjólYnohp`pƒp¾pBo”n€m–l§kÂjÏi·h¸gÔgEfñfˆe±dÂcýc¨cjc¥cÝdreeÞf·gºhÂiÌj¶k®l×müo#oÐpkp4oÛn¾mºljCh(f3dgbÆa_C]B[ZYfWDUXSpRRQSQqQ½RàS¸U]WSYø\‘_3a“cñfi!k±m¨ohpsqÀr'r:q^pÐoQm‰jÂhd¸aÀ]OXXQeJ,B :ˆ2„)·!(à ð XU!u“?€ 7 ƒÐB$W+ù2ã9[@)FHLBPïU3X§\–` c]eÏgãiªl$noÂon`m³mlbk²k#jŒjWjojŸj|j4iðiîjj‹kk¦llrlÞm[mõnmn nÐo7oÖp‰qqžq©q›qp§oËnÉmˆlpk?jh“fËd¨b¥`Œ^B\GZfYhX†X¯XíYÿZä\—^¤acfeig:hÛj±lcnoHp qQqôq›qo·n­l|i¼e÷b“^¨[VPH|@æ8ì1})Ù!KwJ M~©¯i’ YmÌ]à ˆô "(t.¸5;ABFqKNËRþW[^^ãa·dfÿi¬lOmŠn%m—mOlÎlfkókhjýj¹j¦jujxj jôk7kwk¢käl?lÈmrmïn)nn"n*n]n`n m¬m€mÆn0nØoroæpApbp•p‡pioüo¡nân lÉkLi`gŽec\ay_Å^î^)^L^m__`Tbcìeñg©hùj@kHldmUnGnûoìpoãn™mnkOiRfb]|Y‡UHQ"K“E9=½6 /ƒ(˜!¬m — Ê׬·*¹jƒóMªc; ‹ s+bd$*h0(6W;óAE>IuM½R¹WH[^aId,gi§kkjìjsjKj8jjj&j”k k€kÎllœ§Æ•/e·—"3Sô O8e!-&A+¦0ï6:±>ÒBîGÃLœQ)TåX^[Q^Úa„c¿dxdád¡d¾dðeereäf±g¼hži*i;iFiÌ9H4P/*$¨Ï[tCw Ÿ°YC"r¡Ðãfÿ¶ÿÃÿøÿiÿJÿÔüšÍ7Ö  wá~˜æÑ#Â'´+D/(3›8À=^AAC“EªGIJŒKºLvMHN&OP@QsR¡SÐT¨UoU¯UßU–U{T·SÃQöOîM´K¼J(H½GxEÊD‰C]C‹D;F GˆI„KsMöP½S¾V¤Y[I]_`»b‡cÂdÑe)edeOePeueÜf/f>f eçeºe¦eteLd¯cüb”a'^ÿ\ÅY÷WsTP K˜Eä?f9Y3Ã.„)l#¯cˆÐOX ØéT³ µ-¶Ï–-ÿìÿ°ÿ²1ÿ¾ÿkÿ­sÅ5ŒÁz q R ñì/"@%\(½-91ã6I9:û;Ê=<>™?à@öAþBþDE9FNG%GâHhI IrIÒI¼I®HïHF{D¤B|@€>Â=.;½9î8Ž7@7L7Ö9ƒ:Ú<Ò>ÏA’D™GúK>N"PÇS U}W©Yî[v\±]]‰]¯]ñ^E^Å_ _<_$_6_2_@^ã^~]G[ðY¯WHTiQÁNñL‚I E?z9–3š.p)¦$Dž;à  ¾–θòÿòL—+ÿÿ1ÿÂÿÿØ0ÿðÿƒÿPÿŠŽh°¦j&Åp  µÎ6h ":%ô*]-ü0£1¹2Ò3v4N5a6™89‘:ó8ó3*-â)$ƒÂ ‰k  Š R¯ÒOcÿÞÿ«ÿóg¢AÿÍÿç]ÿùÿ–ÿ¸ÿèÿxÿMÿ´@HFN‚¦nt > ,«9ÀËs#&-'ô)!)U)²*_+h,ü.’001é2ë3Š3B2ë2a2!1î1É1H0¡/a-ò,U*ó)²(o')%¢$x#`#a#¼%&#'é)½,m/Y2³5ô8ó;Ä>6@ÍBýE>FªGÂHH˜HãI#IŸJ[KTLLM MÈMÎMÂL¡KXIF—CâAŠ?`=§:í7b2g-6(5$1 q:R— È ^ÆÓ2ÿK.úºÿ¸ÿæT€\ÿûÿ¸ÿùU ÿÅÿžÿ¹-ÿ»ÿEÿOÿ¯ ÿˆÿIÿÝ ê›˜œ± C 73n![(®°|àö s!"Õ$‰&j'Ý))) (C'˜&Â&%<$O#!€þÅÉ¿ºœÃÝGŒ‘9ç!t$M'š*Æ-¥0P2•4þ7 9%:„;’< <–=+=È>Î@,A–BÛChCÔCMB¿AN?¿=¥;˜9w7³5}3(/„+&H"ˆtà.! -´¤ʹCdÀŽÿ³ÿ¨•w ÿÒÿÒ5ÿ¹ÿÿæ9ÿ°ÿ_ÿw#ÿŽÿYÿò%%H z Ü êdý˜ëN⨒ªÉ•{ ’nJV0¤›m“¬âñP±àW…wñi²R^ B"Ð%&'!)D+&-.r/„0+0å1É2Ê405ë7\8~8™87­6Û542v1 /^-Î+:($Ù1’Ržç 1̧þ "ž² 8¶ÿÚ s©Tÿéÿó&8ÿð<Pÿñÿ–ÿ¹ @ÿÿ8ÿ¦6Dÿàÿ4ÿ ÿÄÇI+af˜{'Ä Ó Ä f 7Šjt¬2Û³y8^[¬à¯4 © B $ .i~«(þ M Ÿ ¯Î\Ÿ±ŽŸ!€"ú$3%$&<'r(¾*+,‚-%,ú,Ñ,/+¯*Ç)Õ(]'$Ü"v<¿jˆkİ ÿSá Ú™ÒU… N{ÿ÷n¢Ž.ÿë,xRÿÜ/k>ÿèÿ¸ÿÌ*TÿâÿbÿZÿ¾Duÿûÿyÿ{¢'^ÿæ°t‡ã›#tœç Ç ç  é Ú ð  ‡  ¬ 9 K > ‰ ¶ „aB4Md«ëzQ£¦´g Q Š ›‚Gþè¿ò5Tv X!7!Ÿ!Ü!É!à!Ï!Ù!W ¾-×Ó´Úô¬ ¦ 9 ìÓ>íWÛ(ª´4¤}ík5h²™U"%u£Zÿå"l†Rÿæÿ¤ÿè;$ÿÒÿuÿqÿìfgÿŒÿ|ЗÿŽþïÿ'dáÕè)~Q®œuu[+ËxWHŠï\¸²ýhÊ7È` ÿÖÿÃÿÁ*¶YŽàŠ$À D  aá[f?Éy¨&¥‘™Þ)†¨¨pÌ / > Î XA‰» Fuð‡«+žª?±‡¢ÃÂt-3l¢ŸQ P¢5ÿÀÿ­ÿè+7ÿÕÿ~ÿ—‚ž%ÿ£ÿõcòÿîþôþëÿÕ<91ziÿÍÿùyVPm¾<«^E•ðXŸÁðîÏ”kRF: öÀšošß˜Tdz¯Øò   ð x Û ë   + u Ó €Kç"Ic4 : Jìj<éüs§ƒ«W¼iÇoš*°¾]ó³× è—G0_Ÿ£xMD2=޵yÿ°ÿªÿù?ÿÂÿÿ¸9¢™2ÿ»ÿ¨0Ϙÿ‘þ¸þ€ÿ;O8}ÿ«ÿ þÙÿBÿÂB}g ÿ¤ÿ<þêþÜþÛÿÿ]ÿ¼g™³Ñÿ(ü®W0ˆÎ<³Jë b¹ÔÝħ±Ñ<µU€õÖ–°p\ÞËðã; ÿáÿ ÿ)ÿÄ›Ýs/r –¾„ïÿ05Øi8Q‡°—f`bJ7aŠ“Xÿìÿ¡ÿ·&ÿÎÿ£ÿÓ?³ÄZÿÚÿ©ÿÿ¹*õ!ÿ$þÐÿQsh®h™ÿòÿ¯ÿ¾)v¶ïûÓ‘5ÿÙÿ«ÿŸÿÐ;d…¨Ñ/R>¹“œ²×ëú!S€™’…reqt³ž#y¿ª‹†ðdJsètoÝÈÿ°ÿGÿ‹` +¹ÿèEô“¿z1,_^£POƒ•‘zjbV?JcŠ{ ÿÅÿ¨ÿÓ6 ÿÏÿºÿï^­ Bÿ×ÿÀ$²Òÿ:þêÿg1t=Ä+ÿÞÿæÿú0Y~«¹¹‡@ÿÿÿÚÿáÿç(Qo–Î9:в¨‘€c8ÿéÿ¸ÿ{ÿeÿqÿ²ÿé0ˆÂéΫUÿûÿšÿ$ÿ ÿ-ÿÀsï*Áÿfÿ&ÿ”Kì·6ÿû7Õ^š…>(=yŒRå‰f|£‹jg~¡DROGGiqJÿÇÿ¼ÿê$2ÿáÿÎÿøJ©f ÿÕ•þòZÿ”ÿ)ÿ:ÿöÔn%Åf-$#@vµ×Û·›|[PSfhzžÎØÆ·ž†ykO955$ÿô8•î"I&ñ”=ÿöÿ¯ÿ›ÿ„ÿËTæV4´ ÿ‰ÿ§:ûoIÄ8 eñl‡V0(S†£x¸‹œžmLe”«*BRQNem\)ÿáÿ¾ÿØ,&ÿõ2vŸ¦v'A¢òÖYÿÁÿOÿ‚!úŽšpôL%)N€®ÊÇÅ­pbd[e¨ÑäàÌʰ•~eH1!2b—ÉÐÄŠN ÿÈÿ¤ÿÿÿÏ/±êÖ^ÿÍÿŠÿ¤<öebéq:WÅ%XO+3U€‘‹Pÿ·š“‚\Os¡8R__b[X=ÿÝÿÚÿú !067<Ee¨É­g&&sÈé¥ÿ»ÿÀEéf™YªykOLUqŠ ¸»°—ƒwls„Ÿ¸ÄžÁÃÄ·œ~lg`ehy—°¾¶«mRFLIVeŒÎ÷ Ç>ÿÉÿ‘ÿåzlAÖiQÍ#^‹•oLóв™u_Sb†.J\]QIIa_*ÿðÿ×ÿì4A<<BLg•³¼š_<F~Ç×™5ÿæÿ÷MØIcFí²‰_Yc„›°ÈÏʶ¡‘ˆŒ‘Ÿ³ÃÎËĻ»—sepz‰‘˜ª¬œ~iYD?F^o‹µÖ÷ܘ1ÿÂÿ­ÿåpùBP ·…Èåø,Ku…€X/êÕ¹—hNLbu{s=V]TB7=]gC ÿèÿí:?58H`sqqޤ¨‡H*O”ƶh8›õóÏ¥…‰¢ÅÔÖÞÝÕŶ«¦ªª²ÁÎÚÖŲ¶²mdwŽ¡¦™Œv\JBMVk‚™®ºÔɤWÿùÿÈÿÀ‰ï÷Ú¿¿ÑÝßÇÇô5aosaU?%ôÜ»–nXP[cfe/FPTI92DTT8ÿçÿû-NVG:Miru‰œ”b72`©Ï½s"g¬ØëÚżÐîûùûñà̼·µºÀÄÄÄËÍźº´šƒŽ ©©”y`UUKNUw¨Úô¬KÿüÿÈÿç {ÊçÛ³§±ÂÒÔ̽Çñ'IT_UG0 îÇ›xfWXae_'9MRJ;27QU&ÿøÿïFhY:<Tq€tes„„pJ>\“ÉÆˆ2ÿú6‹Èåíê ìп»´¸ÆÎŶ°²·¹·­¡™™ž¡žšŠn]hzphkÅ÷ÄbÿàÿüQ–µ±’‚ЦÀÀ°£¦³Óö%,BH:"ûÓ¨ƒhY_aP&=P_Y>.I`O%ÿøÿñSj_H8Heooswƒ€eK=V’¹²t)ÿÿÿü5q¸ñFSK/'åÓȵ±ÂÑȰ™• ••™œ™•š”v_exptޏéõè¤KÿÜÿý?‡¡rf§½»¬š–¤²Ïö5:?/(!Ù¸°¨…`VK))?_jW=?MYKÿòÿû,e}a6/Hgt{ƒsK8N}¦¦‚F&qÃ`uh?3)öâв¥°Âı•~‰‰‡‡‰‹Œˆ‡–š…nlyzвÏݹ7ÿöÿëDx†lIBg§×Ö°–Œ¦­Çú+LG7úõ&ôÛÊȹ_C- %A[j_F2?L: DptZE@Olˆ‰ƒˆ„o]Wf€’–|R1F‰îU‡‰ZI3ñÝͯž›¨´¶¦’Œ”•Œ€{{wx‚‰x˜«»ÕÌ¥g25^zu[INdºÌ¾œ‹‡~ˆ’¼:B#  ÿçêíẆQ.ÿû 4]kH5KN2*Pr}kPCT{œ‹†ˆ‘‘iZb•uNLf¸ jƒdW:ñÛ̵¤“–¦··«Ÿš£¥‘xoqqtw||†›´ÌÍÊ£b0#EmŽšM0D|¨¿Æ´¦–ŠwyŽÄ9,ö,úÞÒàäÈ’b: ÿÿ  0H=%*<JE;6B]swgOLn™«£—ˆˆ‰ƒvb\k‚Œyqs£ó?e_bM0 ïÙ²Ÿ›¢­­¢“Š•™„lfnt|~„‘¢·¿¿©n@/Bi|nS36cŸÀÅȽ¸«“‚y³å*$ýæ×ˬ…Z<)ÿþ! %/.'#.H[SDFVnyhZj‹©±¥Švq|…{j^bo„“šªÖ 3CWRF) îÔĵ®§£œ’‚z‡zllxƒŽ”™¤¬µ«’rZSO]z…nF*,8`µÄÂÍÑÒÁš„Œ¸â #*óÌÀ½§‚X7' ÿþ$ÿõÿöÿû !--&)F`]LENf|{su‚˜©¯¡‹zz‚~ujfiy£¨²Êì #:BF5!ã˺³©¢–ˆ‡ƒ}yŠ™¥§¥š–Šra^kwŽ…cC:Odƒœ³ÍÛåÝÏ·–¢Ïõì»”Ž‘}X/  ÿÿÿüÿøÿù "0/.?RZWQPYk~ˆˆƒ†¡¨‰~|z{zwmny’¦»Ïâ÷ !-81% êϾ·¬¥ ›ˆ‡‘Œ‹–¤±¬–{nmfl’˜Ž‚p\Xe˜ ²ÙôöÜ­Ÿ¨·Òèû ìÊ¡x_YS3ÿýÿþ ÿþÿÿÿû  '1?KUWSNHSq–‰~‹‹…{uw{usv‡œ´ÆÙñ ".7-òÞÏÁ° ”‚~…•—œ«µ»«‰i\diwˆŠykd_dht•¯Íôïν¾ÄÐÑÔÞïðµ‰d>%ÿøÿôÿü  ÿùÿûÿü' !2<COVWQCE]˜™‹segt†’nnwx{|†˜²ÆÝù*25%üîäØÈ¶¤‘…{{}†Œ”ž©¸»· €iamyƒˆ€n_[bjnb`n•Åë÷ÜÃÄÔÝÚÌ¿¿ÌéæºyU@# ÿñÿéÿì'  ê¬ê1.a’B 8S@Îg™§uV?\>Û]™ÕVë˜pË:Ø€O.ü¬3 ¯ > ã à ¬ º Î Ò ¿ ˆ H  ç ã æ  / 1 !   ì î M ß   Ø S W ‚ å 5 Š Ô,Œrü‡B+ö…Æ@lŒ§Ñý[Ýkø$³zGëÔe¿©ƒfvÎ.© þ z û ì òãKJ\ù«ŒEøªoD')ÜPXŒ]÷NÄJ÷{¾ÔP ­;£í2 ’ ü ­ q l s c ( Ä ]  å ë ï 4 P ` K * ä Ù Í Ø ð   # , / " ( G ~ ¼ ß ø Í { ä é ? M X m   Ü 3 € å E Ô=¯î:ŒâTÇ]ö´‡R·¨¥Â kÚÜ«ÏÑ“}‹¬Ýâf Ë_|ACPPCÑwÊ&0àö° éÓ´´Ä±Ê …÷u è _ Ó ^ ñ ¢ L  ø ò ð Ü ª i -     - ? ? 7  Ý ª ‚ z r ‘  ÿ , J k € ‹ š ¾ Û í × ½ y  Í § à ò " (   * 7 Y | ¹ ï M Ô N ‘ ¯ Ò †/Ø©rUN8¬(”ÈØæØ AdFPwÆðÌŒjÂÞ9ŽÔ纠X)¤2³ûJɦRž` Åyg[ ° ! Ö | +  q : (   å à ¨ o T < 2 . 6 = D J A 5  à   Z %ùùü , i ³ ì  D c } Ž ² ¸ « s : ò ž q ` Æ ý   ñ Ó À » Ò à  e ² Ö Ù Ñ ó 7 Ä T  ¤Y'òœ:Ó§†Ú‰iÐøpþjï†TÈÝ+÷ëãA ʺ„óc2Üéî±ra˜áìÙÔÜ Ü  T Ù S  » ¦ “ ¢ Ä Ì ­ b  á ³ Ÿ  … ¤ Ú   #   é Ä “ c <    ' J r £ Í ÷ ) M c k ‚ ‡ „ X " Ó { @  / L s ‰ Š Œ { ` E 6 8 . H ƒ Ê þ  ö æ ë + | ó S Ñ l  ‹"ÊÙê„xWð±2'QSL-Kýa+ì–kïXІn×WFR‘qY‘1÷  x þ ± = Ô ‚ 8 Ê { F ] Œ Í  ú ¨  ¨ Z  õ = | © ° § ‰ z d G #ýäÕÙÝæççäëø  7 R Z [ j  ž   Œ Q Ù¸Çâ & 1 8 4 1 . , 0 ) A w   ) 2  ù í ö 5 t Ö Q œ  „ eF¦I–e×}öSßå¿PU‡Q¥³p[¼ý]‡,À„2ºk : € Ò ˜ ‡ } " ³ l M # # = h ‡ „ } @ á € @ / $ (    ôäáíü öÑT渄Z/! 6I[bo…«ÜýöæõkÅ  ,  ÷ù     * F ] ~ ¯ Ñ Ý Ì ¹ ª ’ ³ v ª Ù  „  SÕO—[<ú¬;éKŒ]$®y*¿RÑPsq‰}ãæ˜ j „ Æ w * ! 3 ! · : ñ î ù % X ` @ í £ [ õÞÖǬŒW؇|š¿è Ýgðs¹h4ðêõñôù1_’¾ÔìQµDãR–…jC:HQbt‹£¹¼Ú ! u ° Ä Ë À ¬ Ä  k ¡ ´ ° Ï  Ÿ O \}ž˜Zºr.üž#c º¥‹v‘ÚWj"LRex ‡ § °   h _ a M  Ê Ð ø ÿ ß ¡ ] 3 / @ R (ÛE¡‰DýâÅÑå:W_uÜZõÊ ”vm^>) 7Q}ªÒégÆdÃCai:ýé D°+ÊÜý  B k ¥ Á ± ’ ˆ ¨ ß  = Y y Å  ¬ e >¤’(ïÆ¢oš ³ž´¨ÖúÔcÊ% ’ Ó "  Ï j > @  Ý ž n @ G ¨ • 0²FL…«O·³¤Í. ù-AVaj_d1ÖT؉V`o‰—‚c="-Ig~‡Œ²ÞRíœ9ŠÃ§zD?zÍ„HY>/P¨  . $  A ¤ ó 8 w ª Ó  \ È > © ñ 8 ¯m-Úlèu+ „ .  8 % î ¤ l † k Ú  > ã Æ Ø æ ¿ f ¿ž©Ã°aãp- ¾Z«é#_Ù]‘“[*ç¥nI#å§saXk€Ž|dK;::BFO\fgd_mt· ³>¥ÿ ûÅœ™’ísK;êWG í°OÕ ! 0 F _ ‰ É  O a O 1 C ‰  u Í  ) Z » 6 ×ri Ï k U Q c Q > @ J z F ’ ¿ S <  ! 낳}a9ö”5õÖÑ—&i¥ùf-ú"bÄ*C"±Oé…H/DQLF, åÁ¶¾Õßããäëôõöûö4„Ì`Ž«¥¦“aXfí¼œKxT ®ƒT´Ö»Äõ O   È ¶ … w œ  ´ 2 m [ I G ^ ²  ¯ E  Ù Ì Î ì  - < ã 1„FO.ÿØ2º?ØFøÏ”*´%ŒÆ¸²ÄÈÀ¶¢|<ð¸šut†²Õ÷ 2:ÿÊ“a4 "-?Ueu’‹w}’•ªÎX¦(4û mqàlûUz~»53¶à 'o½    ç |  Q a l W : 6 ^ Ž u š ” p /  5 r œ { 9¨þt8$ß’Y拎Ǘ¡Ê¿nƉ1Y¨mr[ô€ ®ƒV\mÁð.b‡œ{NߤtK3 ÿôÿìÿñ &Ga€°ÍλÀ¶ŽhLn«”ïC"Ã#…L\æxõ$7OҲƥ/šÎ[±b…]Ayô e ½ å   † x UìöÎ›Æ ÂL•äPâ“!È‘oNùeÏaPmœ°bÈ ­®ÚAž¹¦Cà} P‘Ò14C@2õΤm0ÿõÿ·ÿÿwÿtÿrÿmÿXÿIÿFÿYÿmÿÿªÿ×Tz‹²°‹BÿøÿÖÿÒ FœCr8Ò>ÿ°ÿÿ –$xÀ§<è+—Ô \þ•ŽÑL× ? Š p 0ÍrmEI%29©$l»hëp;')ÏFÝÁd™œy¹d n£QÙ@ÃçVÛL}•nNê·€M"þÖ®…_6"&24&þø÷;pœ¿ò÷àŠ*ÄsE wh¢@ŠÿÁÿ%ÿAÿÞA…„ixë—_þVt«Oh§ |Z“{TÜÌõvcV7Ú˜ñ?ƒ¹9êðûõ¼cüæ+šÕÇ~Zv#þ§Ýíδ°× IŠ€Aü¬k:èÎËÊÑÔØÞâãàáÚÓ¾¡eM8ëÀ •‘Ÿ™„Cû—>ÐNÿÑÿ=ÿÿ;ÿÓƒæñhÿ¶ÿ2ÿÿu±üç°¦àgd…õö]Ã$’íBfi3I%3&Ô¸VôyçT¸ts²ÖÔ›wì"IOba¯› 2 s â S Ì 2 ˜ È ø Ó ’ ‚  – d < A > Y } ° Ý  # < [ t ” ‘ p J  æ ¼ › u K ±Lì–K·]™<ÑhÖ8cV†ÿçy1ÈÅ^‡ÿ°ÿ]ÿ‰1Ã݈GP6¬Ó;•üUžÞ#~Û;cR5['IZVÇ\©Gãy%̸Ô  öDÚÂ’G§P]÷ ª ; _8 êÓü‘ –Ÿ€{¼ôB‹Õ$]ˆ‘™†{~ynI௅d7°Zé{ ô z Ë   ÿ 8˜þwúPwwm²!*Ztgÿ¤ÿÿ+ÿ|\dÿýW“í6zÒ.lŒ¶’û&'=ÅàîÚ¢q: Ò}I4ešñ?‘½'·¾é-) * # ¯ ¸ûõbˆÅ(µµ[(éNÊSÔ¯®Œ™þe­ö ì‰Q- çµwEè¬c ¹c«L„'±5Ö¿ ® ë B ¬  "ù€ñ·ºmlgöý8ÿÕˆâ¸_<oÍE’¼âIqhN>rÜ`Åîïksi7ùÓÈÈÀzq«`$ý•Aú1« j û n ®,ç%›êÔB®Ö!{##ü$‹$I$#ˆ#""é"·"Ü# #›$ $f$¯$Ñ$ö$ý%$ñ$Ó$˜$Q$#ó#ù$$$$ #ç#¡#E"û"¯"a"!•!0 × ª ’ ˆ — 9¤`U¢Û‡ '?/ ¾ . q¥>#…ðEK.b,^U1ÿäÿÁÿÙEÈ)D)13,ü[Þn´žÌmë‹NfÙÛHfÏOp Æ ^ ~Òó•JD|Ø "#Þ%'R)$+ ,†-ç.‰/.í.ß.½.³.Ó.ù/I/«/ÿ090<0:0/î/À/›/w/T/$.Ô.©.ª.ë/;/o/‚/E.÷.ˆ.7-Ú-s,ï,U+È+D+*ÿ+2+‡++_*|)Ÿ(&p$F" ćÀ;ê¥d°®n 1 ~ 8 dyA˜ù¥’q«Va¼Øšnevhs’äg°™l¨Úò^òVw!M h ‰TV¶t1¶æõ!Q#²%÷()ù+æ-ý0!2T495ÿ7<89.9Á9á9ý::':^::Ò;);n;š;š;›;†;m;\;^;j;z;j;#:÷;;a;Æ<:ß:n9¸8ç87*6›6.66(65¶4ì4L3"1Ö/Ö-½+8(¤&<$"M a¯/ªø®ß e Y`*g…úœæmNszSÿùÿ¦ÿ‰ÿ¬ÿÔ %€ÁÃ × ‘ Y CŸÍÿô Î ë£7ÜVûâß"µ%Y'ï*s-?/¦1”3-4ð7 9‚;ò>&?¸A#BC>DD­DìE!E6EkE E½EëF8F—FêG+GgGG²GÙHHTH’HŽHDGüG÷H@H–HëI0I.IH¿H®HxH+GvFŸED‰C®BóBzBAœ@Ñ?Ò?>"=;p9²7]4ë2S/ù-©+(Æ&Â%H$"‘ ›Ð²Ãn»"9 £ ðùîZK>DªI‘ ÿÅÿ¼ÿâCb¹| á ò - j   åCšóÇÝú#;&€)µ,Ì/Ò368û;6<è>w@”C#E×H&J K>L~MtNšOgPPOAUDEÝGtI;KÀN€QRÍT2UVW X X§YYY+YTY–YùZ?ZÄ[y\g]R^^¶_ _U_o_ _ _Ÿ_@^]ü]›]¤]Á^^5^@^^^@^Ž^¾^‰^(]‡\õ\\2[æ[­ZàY³WûV|TÊSQOLüJ×HÖG-EFBì@#=V:Ñ8 6Î5(2ö0,,À)[&d$!é“þޏÎ& q ÿNëÖ.+S›EÿòÿÑÿÏÿâ&A$["Ñ!, %$-M ¦"-$”&³),µ0j47—:Þ>4AëEœIIL N~P2QüT V¬Y0[Q\œ]¿^j_L_ô`™`Û`õ`Ù`È`éa a¬b6cde3fOg gÐh h9h*h=h)hg°føfAãEH{LNOÔSU:WXšZr\w^°`bc dd›e>e‚eºe›eee&dôeeLeúf¾gÙhøjk/kçl}l™l¢l€l‰lƒlƒl+kƒjÍjRj;jFjij`j:iþiøj>j§jêjïjÚj§jj|j jÆjæj j$iRh¿gÖfÐe3ceaX_e]µ\cZåXóV•TVROÛM›KkHæF/C@<ÿ9Ý6ß4.1R.*&Ñ#‡ êŽÍø¤Ú · |iþ¨î‡ ;¿: 8Õ7l6m5O5(5Q6¡7à9û;÷>åBAFIOLPS’W_Zm\÷^p_Øabd'e½g h9hüiÆj'jjxjlji¢iIii]i¯j}k_l‚mŸn§o¯pUpÔpëpúpñqq'q6pçpSo¦o-onûonÓnšn]nmn¾o>ooÏoïoîoòoÿp-pBpCoëoonËnfm×m3lj¾ig‚fecðbw`‘^¸\µZÇX²V°T6QsNPKbHWE2Aþ>ì;Ë8š581¥.C+H(q%„"( lDU Œ 2J×\Òý$FfDàCÑBŠA¢@¢@‹@¿AÿC EGIæLöPTSHVVYÓ].`ob§dweZfYgh hôiàj¿k´lclômm:mlÙllkÌkbk:kkÿlÀm„nro^pp}p`p\po±onJmÎm¦nnSnæozp>q qÛr¹sKs¢s¼sît6t¢týuHu6tút‹t8sösÈss%rÓrrÏsDttÞuŒv(vyvÉvÄvÆv`uâuts)rsqþqŽq+p»p3onÿn¬nWmÝmlQkQjdi9h1fwdMa’_\ZCWºTøQÆNK3H*E*B>·;G7N3D.¾)ý%f!k~òbò p 1áZ÷ZYiX–WþWgW^WbX)YZ“\^`bYd®gi®kµmRn=oippˆppˆp©q#qÃrIrzr}r>r5qìqtp¶oÝoPooIogoÁpp¤q?qôr½sEs†s“s¾ttƒtøu`uzuqu'tðt©tnts“s,rÔssotHuuñv²w.w¯wÇwÓw]vÛuòtðsðsr‹rq¾qqqs¡sr©rºrîs tUu9vvÚw±x"xqx'wÓw v/uEtxs÷s‰scs3s:s?s†ttgt„t3sás\rêr\qíqpn…mkjAhêgšec`]/ZZWÛTÓQIMHüDŠ?â;6k1¬,µ'ƒ"8@kdvhãh“h“h²hÕhËh˜h@h:h‘iDijVkTlÝn‰pq`r8s sÀtŒtÃt|súsÊtt—u%uiuWuGuu t»t9slr–qæqQq*qqWq|q«qÐrr\r‘r|rWrVr¥ss®tDtªt÷tòt÷t¨tKs¡rÙr q„qUq1q‡qçr§sot\ubvv—v„vouñuetÀt(sÌs‡s†sws¤sÎtMuu¾v"uøuºu5tÄtMsússrÁqÂpÀo¸nÔmìm.kÖjg¥eb~`o]ëZÜVòS2NñJ¥EõATn¢ooãp¥qlrrÃsŽtbu:uàvgvµwwRw®w”w3vVu}t©tsr³qæqpÂp¨pÎpãp«p6o†onwmÒm"l[kãk‡kÄllëmÊnâoçpíqårçtuv v™ww+wJwMwqwvwLww!w%w?vÃuÍtwsxr˜rpÂnélinfscÄ`”]6XèT˜OJI¸C¨=½q0qCq¿r+rnrkrYryrËrùs}t7uJvewgx&xÓyäz§{!zÝzsy¿yQxËxwJvŽuÁtösøréq¢pFnômÄlÅk±jÝj i¬iCi}ißjÖkÂl÷n.oup­qÓst uuËvhvÄw4wwõwôw§vàv#ugtét[sr¡q°qpºp—p[oÌn÷nmdlÒl%kMjBilh¸h¹hÎi¦j“kûmcnØp!q^r¶t uxv‚wRw£wçxx•x÷yy yyyx¿x vèuãtÿt‘s¬r4oçm©kDiCfàdI`®]X7S3MrG»qq¯rBr±róssssSstt×uÕv«wdxx·y­z:zkyêynx£xwuõtŸs…r=pÍomOk…i¾h?fîeÔd„cjbLaÚa‚bbèd]e©gMijílÓn±p”r0s¾tÖuÝv}w*wxx w¿vôv\-]×_QaTctf hªkjn;p±stv2wxxYxÌxœx/wSv›uÜuMtvslqàp2nqlõkŒj'hgf7dbFa(`?_”^Š]š\ž\n\Œ]¨^¯`qbBd”fñi`k¥mÎpr)t8u¾w wóyyòzÇ{({o{T{Lzþz¶zy1x>w·wvt˜räq&oÕnŒmCk7hèeb5^Y¶oÏpOq.qÒr6r…r—rœr«rÎs6sÅtbtÃu#uºvLvëvüvÔuíu(s¨ro¯m=j¦hnfcd`¦^\ZX¶WrVcUSíRøRÇRŸS`T>UàWSY‰[ç_bYfiÖmRp“rûugvæxRxßy~yLxæxwSvƒuÝt¸saq>nçlAiàg…e;bŸ_‹\™YêXwvPN2M3KöKGJuJ™KL„M¨OTPëS\VY\ö`„cøgXjÖmûqskuÅwfyyðzÇ{{5{*{V{N{ z¡z0yƒxówívˆt÷s¯r¯qópÝoOm&k3hêf™mÊn“op2p‹pÔp×pÑpËpÚqqzqârrerþscsžsrqoxl·iŸeÏb-^Ÿ[DXTgQCN}LŒJ”I#G³F„E"DC9BýB¦C>DEÛGBI©LIPFTxY‰^ªc£hVlKp]skvQxyÂzGzŒyåyvx{w¯uësôp¢lþh¦d¬`Œ\[WúSFO KTHÉFbDðCJBlAƒA¸BCC©DËFbGÝJ,L´P0S»WÉ[Æ_ØcìgÆk¤nír-t‡vÉxySyÐz:zPz•z»zéz»zdyµy8xTwu®thser¶qÒpun¸m0k£j0lùmånåo°ppqpwppp_pcp”pÚq.qYq•r-rrrsqŒp»nÆl¼iQeŽa\ÍXªT PâLíI¯FÈDÀB¢A?…>K<à;Ú:ð:ª:::É;®=?AšDVH–MR²Xl^7c½h›mšq~u5wry«zhzëzhz-yExv‘t~pÌl´gœbã]ÙX±SeMÍIDÇAþ?W=¢;˜:]9 999Â;J<„>$?™AÊD)G•KOoSÎXŠ]=aÙf{j“n¥qºt±v€xHyy³yÏz z6z¢z·zvyÃyLx~wvv2tútscr¶q—pKo+nImœl9m-n4ooŽoùppoëoöp*pip´pìq#q¨q«qcpnÜl_iµe™a8\ W8R‚MÞIÐEºB?”=;[9×8i7T65443è3p3é4·67ï:g<ôAE€KaQyX^Cdißn™s0vxåyôzÏz{zwyšxÏvÁtªpÓlˆfúa¼[þV%P%IÚDˆ?®<”9»7ô5¾4I2Å2¨34—5Û78ñ:ô=@#C;G^K­P¹UÁZè` dÁi}mPq s‡uñwxxNxx”yyJy(xxwdv˜u™t‰s¢s r|qšp§oÉo@nûkZlPmSn1n³o)o@o6o$oEoŒoÈp pVpŠpóp©pn\lÚiâfša¿\¶VúQ\L FÑBy>7;7÷5á3É21S0„/r.™-Ø-ˆ- -_-ü/†0Æ3 5O9O=žCÌJMQX‚_e½kOpÊtzwÿyŠzézÏzøyûxÿv§tjp_kØeÕ`Y¤S1L‘E§?©9ú6K31e/R.,‚,@,~-ì/10ã2Z4C6:9;Í?¿CñI-NoT Y^æd3h¨mp"stuövWv v­w2wˆwŽw#vÇv5u®t÷tsHrÃr]q¿q&pŠpMp^jwkJl0mm‚mònmõmín+n“nÕoo›oÛpomn…lXj`fÑbà]\W¾Q‡KXE°@;;ú7Õ4ò2 0@.ˆ-²,ó,ƒ+Í+1*ª*f)þ**j+k,7-ö/™36ã<øCyK&RƒY·`óg@mˆrvnx˜z‡zzây½xžvsÂo¦kdý_XgQ¼JÓCª=?6í2¢.ô-++,*$(Î(…(–)®*³,(-l/0¼35V8Æ<ƒAF°L{R8Wë]£b®g·kjnãpÔr»sqsÿttœtôu'týtÅtft3sÓs0r„rqÉqkqp©pƒp¥iZjjÒkžl(ll–ltlkl½m=m}mÎnŠnæomølÀjgžcm^ÓX¯RKÛE/?L9±5™1š/,—+W*-)Ö))b)(½(~(R('û'õ(W()Ÿ*-S0|6W<ºDÑLªT£\‰c™jµpuRxzzzŸzèyŸx{uèsro/j~dC^9W]PhI'AÂ;4i/µ+Š)o'<&M%6%%%Ñ&l'^(9)r*¤,u.14Y9O>^DdJ]PŒVÇ\|b6fjœlûoUpWq+qbqërNr¬rÂr°rŽr¾rÁreqÜq…q_qGq>qpÿq@hØiAißjŸk-k{knkHkLk¦l4l|lâmÕn@nKlÍk@hdÎ_ÚZ£TM{F¥?Á:4¯1(-©+¾)ß)3(”(•(„(Ž(z(`(Y(F(!'ê'¦'ˆ'N'Ä(*!,‹1Ò7®?¢GsO¸WÖ_Xfúlþräv!xÝy!y‰xbwxu%rÓnÁj^d…^âXNQƒJQCË8C2õ-ß*s' %D#°#D"Â"°"q"l"m"½##²$%¥'“+…/ª5Œ;yB_IYPMW=]b–fUiøkÈm]mÌn\n¤o0oŠo‘ožp+pœpŸp=oØo£o»ppppbiƒi[i‹jjœj°j‘j“jÖk'&È&Ý&â&ì&æ&Þ&î&ã&¾&a%î%Š%,%G%&R'Å+×0v7a>;FMÉU“]µd“k&orYs@tctsÊr>p¯mÁjÇfxb/\£VÛPSIàC=7‰2-ü)Þ'R%$ #"Ò"j"H" "&""W"G#7$T'j*Â0-5·<®CÀK'R‚Xù_PcåhRj¯lÈm`mýn(nµoo oo~oâoðoon¤n¥nénóo o>j"i«iŸj jjŒjejwjÍk%k·lVm n8nKmàk6hcz]ØV«OðHÅA<:33#.E*"(x&Ó&m%À%Ÿ%%Ç%ô&&,&.&P&H& %·%<$Ó$x$…$E%?&^)Ý-Ú4:VA¹HùP†Xo_Xeöj mÄo"p°pÑq po7m-k:gëd_ŒZUTNG¸Aq;ž5Ð1 ,G)&5$à#–#0"·"‰"J"!¡!R Ø!*!z#¦&*ï/ö6ì>EðMÀTì[ÿa]fi„l0mm´m¿nKn¡nœnˆnäo0o?nÙn1mªm–mÖmÞmönkjcjj[jÃjŸjjjyjÈjökml$lñnmémSjRg7aŸ[ŠTM%Eë>@7C0^+Ó'þ&•%%$Ù$;$($4$’$á%'%R%n%±%Ç%µ%]$ô$Ÿ$`$…$g%Y&`)‡-*2Þ8š?OEËLˆSZ`4dsh9jllåmÍm»m¬lŸk¼i~gbõ^†X¥R»LPF?ü9ñ4¸/o+¨('&n$å$~#ý#Ë#„#"m!Á!! É",#É'Õ,"2½9—A›I‘Q/X±^±d’h;k¡làmÑmÒnan²n¼n¬nño%o8n×n!mmUm€mum{m‚l kjŽj–jÕj…j4j8jyjzjÊklLmQlñl0hßeN_@XØQ.8”2Æ.S*%'÷&-%³$ü$—$0#›"¹!Ä ã ƒç ®!Ÿ$ø(˜.Á52=(EMTÔ[jaòf[j†lGmŒm”n4nŽn¸nÄooMoxo&nqm¾m‰mŸmzmemRm:l"kkk0k/j³jKj>jdj/jJjçk¢lˆkÿk&gšc™])VœO GÝ@|8€1Œ*ô' $ #?"!å!€! !â"]"®"û#B#©$E$È%%$à$²$¯%%9&A'>*-¤2×8=kBBFÿL"Q'V1ZA]ß`cXeªh(iÓk>k¯l^kîkiOfºa[êTÜN8G½Ak;¡5‰0Ÿ+Ù)6'>&Á%Ü%I$À$#)",!F Ì  ‘!#Ì&Ñ,q2d:AÑIÓQ·X±_®d¾i›kçmŽm¯nanÂo oBo¨oöpFpoqn»nƒn‹nYn5nnšmrl–l kçkKjÛjÈjÖjljRjÙk‹l]k°jÄfõbx[‹T´M EÊ>`6C/F(°%"b!ê ë ¬ V … Ö!b!Æ")"}"ÿ#¼$w%%C%G%4%J%¦%¹&­'±*¥.Q3m8a='APE5I”MÞRU—X®[_^jaƒdÒgˆiòkLlÏm mdk²ièeE_ÕX‹QŸJºD%>7Ò2Š-'*'Ñ'_&h%Â%$e#q"t! ø , E F"b$Ø*/¾7g? G0O8V‘]ýcikÐmÆmøn·oo~oÏpBp¡qqpmo²oxooUo5o oÓn©m«lílskÂkXkCk@j®jpjëk¤lzkÌjçföb/ZïSçL1DÞ=m5@.:'–$!˜!Y j Ë÷ 7 ¹! !’!é"‚#j$h%<%­%ò& &=&™& 'š(Ë+ú/Û4ñ9Ë>&AÝE&HùL¦P,SUƒWüZæ^qbQeçi2k8m1mšn%l¯kUgaÕZnSMLE@?8Í3{-Ô*n(,'Ñ&ô&b%²$ì$ #&"L!® ä Ó ";$F)5.˜6/=¼EøNU³]\cUi7lKn€nºotoÁp'p{pßq;qÇqÓqJpŽpPp[pDp;ppío¬nzmel¡kÓksk]kQj¡jLjÊk–lukÌjôfòaüZSSK‹D"<§4m-h&Ã#V! ò Ãz›º  i å!?"#8$ˆ%&#&™&Ú'1'¥'À(Ñ*1-u1S62:ã>ÝBD»GîKN&P¿RÚU4Wú[Ù`Hd­h²k+mYmÏn‘mpl„h‰co[íT¿MfFf@9Â4j.¥+((Þ(˜'Ý'd&°%Û%$*#K"™!Î!Ÿ!*"€$$(¯-¹5*<˜DóM>U%]caiµm&oo×p€p¥qqHq‡qÊr[rzqöq2pápÞpÆpËp­qQoþn¡miàmšpDp|qq qWqq£qÇrWrrq_q qpñq pÿqvpnšlïk j–j4iûiÖi h¶iAjBkfjýjKf[a~Z"S0K„D þ8Ö4/D,®*Õ* */)Í)'þ'&S%…$Ø$#´# #©$E'¦+Æ2²9AàJRGZRah/ldobo¦p,p pgp°p©pÆqwqúqÎqWq:q`q{qËrp·oynl*j¡iŒih©hLgjgg…hiîi×iDez`êYéSJKÇDZ<©4Z-z'7$!Ê!t qïvT6*íÙ¤T Ÿ"$6% &Ñ'ê(ê*›,i/¨3 8=ÇCÚIÉMöQ R®TÀV[WþY4Z[2\j^ýbRfjj}m?oaobo™m³lgiaÞZ"RŽKD+>L8)3y.ß,w*«*h)ñ)(Ä'Î&÷&@%’%$X#ï#B#µ$'!+ 1É8~@“H¦PºX³_‡f¼kn-nxnÿnÛo=o–o•oÏp°qvq‚q?qUq§qîrgrËpgoJmðl-j¬i¬i>h¸hAg]ggbhbiÍiÝideÁajZ‘SþLpE =\5 .'Ã$‡"!· ° $‰C ²‹\ L"8#þ%–&Ì()6+`-»1 5—;&AFGÃN#R¼VrX:ZJ[x\·]n]â^_Pa`d!g²kYmÈo‘o9olÍj£e¹`XPP¥I-BK<61ø-§+v)¾)g(Ù(l'²&Þ&%~$ô$ƒ#ê#ƒ"à#P#œ&™*w1*7Ê?ÆGÅOÆW©^ieiÛlâm$m£mmànEnTn¸oÎpÑqpùqCqÆr6rÒsep?oHnl\jßióihúhvg¡g`g§hžjjJiïfsbQ[—UMaEû>K5ò.ê(w%"‰" ð \¦N'±{X ?"#ò%ª&ß(2)¢,;/ 3e7Ç=¥CüJ»QVœZï]__îaa”aÂaöb3c²eôilQnMoˆn¹nOkÏi${"õ!Z Ô ä̾Lñº § Æ!á#T$1&[)I.2á8É>˜E%KßRÅZ_ÑdÆghðivj kPk¿kÐkël6l¼msnˆn n2kêiÙe«a ZSšKñDp=»782^-”*Î(k'~&p%Ä$á#þ#"G! !V!+! ¤ h ë!²%E)Å0ú7ÿ@"HZPOX^ke(hòkgkHkžkk½l llmÇnùoPo_oîp¤qq©rkpoånçmyl kjqi~hšg‡g;geh~jjÝkhÚfga%[tSåLŸD¸ñ7q0H+<&{$ !Æ! J 2  ¸~d° ¿!G"^"ó%¥)j/¶5ü=C¾JQ©X¦`'eœjk„l×lþm¾n7nn•nann nn lÜkahdÉ_iYRJqBß;5Ë0H,É)g'Á&F%«$ä$#" é (¥{6›à "T&²+¾3:BJ7QúYŒ_‡eÁik+k kžkÒllSlclÛmõnûo6o1o¸pOp€pÀq=pÓp+oCn4ml)kFj?iBh gšg¬hiÚjuj¢hógicZ^£WÃQ$IŠA™:2¶->( %"I!? ; )  ìÖØ " p!!T"U"í%å)ô0º7?(F#M TL[:b¨gØkèmnmÿnynÊo+on¡nn)mÿm¼k÷iæeØaß[ßUjM£EÉ>a7B1ó,ä)ó'%%ù$è$ƒ#î#<"S!M I’Ýx<Ã,¹!#j(*-h4©;ÔCÏKõSŠZÚ`lf2i/kjðk©lldl–l»m@nRoCosogoòp|pppùp oÿo)nRmglˆk j¨i¹h‹hhhój j’j²iChd¨`“ZNT;L÷Ei=Û6r0ˆ*î'e#ò"R Í } " ; # 3 I Ô!P!Ž"‹#6&G*Q18?¾FÕM¿Tô[²bãgÙkÆlæmñmÜn9nknÄn³n1m˜mÈm‡mjªhcG^…WðQ I@Ah:H3e.s)¿'=$ì$3#ƒ#a#"!Û! .‹ ÂC¼‘¡"œ%–*À0=7ˆ>äFáN÷V0]bg1i©kjük¹l4ljlƒlµmHnFoo@o7oÊpRpRpCp‡pšp oJn¢mÙlúlkj?ihŸh igj`jäki×i f?bÑ])WŸP®I†Aÿ:q4-û)á%Ú#®!Ÿ ö J Y R ˆ ¦ à!!‚!¯"Ÿ#B&L*B18?àGMöU[¤b¡g‚kulÄn n nLnHn‹n‰n7m°mÈml$i8f(`Ý[OTL½Dñ=#6?/z*Ç&^$Z""v";"b"Y"!‚ Å zü© Ï Š$'°-M3!:B-J+R!Xð_{cîhijPkSkk¢llll8lÚmÇn†n¤n£oBoÍoÄo›oÍo)n÷n‰nJmÕm4l^k™jÕiÖiei`jjùk…k­jËjPheO`Z[bTáNPG?z8Ÿ2*-|(ô&6#"?! Ç š Ø æ! !+!!¨"’#6&)¾06ª>4E0KñRÒY)_ÝdºhÒj–l[lÖmlmˆmÓmÝmåmˆmƒlPjÒgIc°]æW¸PHA9^2È,D'á#Ê", æ!+!E!£!×!¯!V ¶ &¦5îp…w "%&`*0£6å>€FPN,Uæ\7b[f>jkLkèkhkËlk¶kpkŽl lÑm\mimrnn n¢nyn£msm£mmÌmÀmslÀlkWjujjj¥kzllWkÅkiëgÃcs_XòSKùDp=6"0×+Ñ(“%D#p!¢! À!! !!!A!_"U#%Ü)8/5!l!x!W!`!/!B!K"=#%Â(Ï-è369Ÿ?ÕF1L“R~X“]9aNcÇfVhjkBlkølVlljIhc!]öVîOïHS@Ò9«2Z,}&î#¡ v|ÌdÈ W Í æ É l /ýÆ®Pº "%Ð+x0í7Ú>åF¤NU×]bŠgßjªlüm1m[lÙlæl®kôkIk+kZkGk(jók kƒll&ll3eig-h‚j\kÁlßmlôlekïk³kkûlŽmm[m2mcl”k™h­eS`N[¼UÀO"G¿@y:"4A/ã+k(Q%0#Œ")!ñ!¶!Ú!®!¹!¦"~#m&(â-_1Ý7]<ÜB¾H·NJSÃX\^þaåd2fàh¯j jfk1jëjÀh\e‚_þZ#RÂK¨DJ<å6.ÿ)$k!Ó;ûÊ@´  > [ c Œ › | ]ù “!+$G(9.Œ4Ž;ÃCJÙR¦Y­`¨e§jll‡nmÖmçm‚milúlkQkk#jÂjfj,jPj«kkjõjö_ aþddgQi­kÐl°m8lñlÔl²l§lÜm@mžmÇm«mÝm]lÚj¢gãc€_‰Z2TiMF–?ÿ9Ö4å/ð,;(v&!#ü#:""«"o"r"9"Û#«&(¯,ž0b4å9f>sCÂHçM¼QÎUÚY/\k_:bhdëg&hGiÊiŽieðbv\VQNúH@ò9³3",¤'Õ#5 »jë ç&Y ý t!!Z!`!`!,"4#`'(+¸2p8Ä@GrOV]c¯hlmƒnqmïmðmŸm\lÂkÜkjÑj­jiwiii&i*i h’h*X¶\°`:dDgœjÃlZmm€m¼m²m²mÀmõn)n;n0n]n(nl¨j fòc™^ÛYáSŽLåF?œ: 4‚0+–(„% $A# "Ç"U"P" "Œ#/%:'¡+.V25|9”>)BóGRKUOySCVæZC]ðad-fhwhng¼cÙ_ÄYgRúK³D¼=Ú6®0w*ˆ&n"h ]ˆ? [L`Œª r!C!Ô!ÿ";"O#á%»*9/c6n=DMKÐS2Zƒ`f§jdm£nUn²mômÔm|ml@kUj•jLjiBhogèg¬g~gBgfEeqP¹UßZ¹_ûdvhÏk\mcmên­nÕonýoo$o(oo4oo*n-l¿iÆfðb¼^XÚRÅLEÃ?ñ:75]0f,°)*'%/$]#}#<"»"ö#;$Å&«)•,e/v25Q9=A™EÇJNHR=V Z%]äa£d0g0gFf\aî]tV÷P›I“B³;ï4Ô.ù)¥&V#!tù|Ô‘(.Y° ‘!k"2"¥#u$3&Œ)6.=3½:ÆAvH›OýV÷]Ðc1hžk¬n3njnxm¦m\lãl:k`jŒiÜihìgÜfŽed§câcbWa _}HÖO*US[ÏavgjžmŒnšoæpEp£p’p–p…pˆp„ppYpmo½nÍl~j!ffbÄ]®X"QÃKE¾@ :ì5Ž10-*['Ù&Š%0$„#š#n#V$]%”'Ä* ,˜.¡1-4(8;å@NDÛIyM½QþVµ[_}bleÇeÉdœ_µZ×T*M¿FÝ@9r2Z,É'ú%|#" ï 1 nç2܆ m!?"7"ò$f%è),Ž27¾>¹EL«SúZŒ`ãeŽjPlÀn©n}nGm_lëlQk}j˜iâiChÑgßfodŠbåaT_Ù^P\äZãX@GWN¯V>]cÒh„lnmpxq7qìqêqùqÙqßqÔqÄqq[p§oênlhÚeºaI\zVÉQ1K®FmAB¤GnKÂP)U'Yß^„a‚dÐdŸc>^EYrSL×F=?¯9G2[-(Ï&è%*$e#6" ¥³"ITÎ F!!Ú##$Z&§)-16¦Â:96§3Y10/'-ª+·*a)[)Q)8)õ*Ä,;-~/}14µ7ýˆ;8š6f4µ2€0Õ/|/.®//90(12ê4Û7Ô:Æ>·BýG˜KªOÎTmXõ]¯`Ôdc¥b ]iYSTNíI2CT=Ž7l3/Ì.- +Ò*(;&u%E$R#ÿ#{#‰#ž$%d'‘* -ü1ã6Ç;ƒA#G MyTYö_¢cÒgæjelômîn¬n,m«l¿lkSjWiPhÞg¹f4bï_;ZXU®PÒL GuC>®9Þ%D.8 AÖKMTà\¿d@i1np`r‰rõsos1srèrÓr˜rDq´qApuo™n0lÚj¼hšeWaµ]`Y?U/Q>M}IžF Bd?€<ö;8Ü715¯4þ4Y4[4;4Ä5E6Ç8;:=ÒAKEIFMQ*U¦Z^ÎaßdÍdGbš^8Z…UÍQK®F4@ð;s7¦4Ù3¦2+0Ä.ø-+?)ì(Ó(['À'³'|(Z)S,/3‹7¿<³A”G8M;SkYŒ^§cqfÀjlmònrnÒn;mªlÅlkAj9ihqfÑd¡`h[åVPUJ[D?9®4¼/Q¯%í/µ9UBôL“Tð]&c%h÷lDoVpfqmq{q½q»qÔq¾q•qDqp¤p!o4nXlçk‹i%fkb·^÷[ W[SïPMWIæFèD'B?õ>x=Q;É:€8ç7c5©3ä20›/w.ý.i.a..ø083:6}:Ý>æC’HRMÅS›YI^³bÞfÎill6m¼oo5oLnŸnm l7k iÈhfçd[a+[êVOëI2BW;À5Ò/þ*Ý%WLâ'j0Ë:~DLèUÄ\ÎcœgìlmÚooñp±qq`qdqKqqqpÇp?oÉnðn8l£jÌgÜd¾a)]ÂZ‡WqTˆQ}NšK¬I9FÎE9CÎC0B~BgBRBÊCD6E HJmMfPdS€VJYW\Ü`zdXf¹h¼gìf^bà_ò\NXTiPn{oŒp_p'oÿoFn¨mšljøiig)eRaÆ]W%PâIeA—9Õ2,G%þ ¼0àMÞ([1w:VBïKÎSrZÉ_ùdþgÝj}kÌmknioeoÐpp&pwp¡p¢pYp&o±o^ngmNk3hÙeÝbþ`#]eZÝXhUùSNPÊNAL„KJˆIÔIÄIÃJWJ»KäM>O‹QþTèWÃZh\¦^ða¹dg¸ikj'hÉeãcf`Z]GYÜVhR÷OYLˆJPHÝG3E„C¨AÄ?¿>L=3<Ð<<,F*LvR¤Wk\0_³c&eŸh2iük¹lËmãnzooDo—oÑp0p8p:okn>lŽk4i³hf:d‰bøa†_û^\OZ•YŠX«X—X€YY\Zu[Å]Ø_ÿbYdf…h)i’kJlÏngoofn…mŒkåjyh£f¹d]aä_U\ÉZ´XøW†UÞT RP&N+LÜKÓK¦KYKËLFM“NÐPûSSVwY] `Qc¨gRjmXo/qqýrÎr·r§qáq4oÅnLkíi¦f;bØ]ÓXQ™J¡Bf: 1!'È­Š_ ­ Ç@ýÅ » «$.+r35:­ARG­M R¬WA[‘^×b4dåg¾iÃkƒl}m‡nFo)oÓpvp·qp½pnÙmòlñkßj¥iShg f:e6db‹a^`t`N`@`¹`ùaÉbÎduf0hiÛkPl”m›nÜoêqqhq‡pÕp.onl˜k i-gReyc±b`’_ ]l[ YÀWïVT½S»S‰SDS›SÞTÜUãWÛZ\á_tb&dÝg§j°m6o_p©r rºs rºr‡q™p§n®l‡ikf«bª^|XbQÞIòBa: 1P(uk‚ þÙME „ ~¢"…!k(2/ 5ž;²A*FúL$QUY\j`5cIeúg½iƒjãl„mÃnàoaoôoÑopn›mïm9l–kØjèj iWhíh¬hAgdf€eÒe±e¼f'f\fßg„h“i¶jólm mÔn|oQp!qq{q¼qmq0p…oÖn¾m‰l/j÷iÔhÂg›f_dðcaê`I^¯\ý[ÄZÈZtZ Z'Z Zà[Ú]´_²aícÑeºg×j l[n/oÂpŽq|q—q‚p­p#n¶mj=g;c``[…VˆO°Hƒ@l8Ô0í(| mƒn ã E>_p’H 6± „9#z* /ð5|;Q@éF‹KcOÁS¤X!\4`bÌeJg;i kœm~nno"onõnŒn3m¾mMlÒlKkÕk[k,k>k]k0jìj·jÀjäkFkœll~mmŽnn›nòo#oUo«p5pÚqfqËqãrqÝq“pép3oen¹nmql›k¨jriBgëf‚e!cÁb»aÓa\`Ë`¿`µaxb|deŒg h^i®k*l no/pepïqXpÐp,nËmÎk¸i-eNau\ñY SáMþF{>æ6í/k'ùæ«é i‹Cre¤=÷   D°ßÚ%K* /ó5Z;(@nDýI MžR"VÁZˆ]Ã`=ce™hAißkkkPk,k"jíjjTj7j1jiïiüj9jtj»jùk5khk¯llxlÃlåm mmlïl§lzlllÂm8mßnqnïowo½oæoÇo­oxoRonÖn^mØm lBk;jhïgÕfífeid¾d²dÎe¤f¢gÚhÓi³j¢klbm"mánooCoRnømŒlAj)hLe/a‹\ÐX^S€OInC;¯4‡-f&m§± H £Ò¥²!³auå¼k } ³ŸÎØ $ü*&/ÿ5¡:ˆ>ÑC>GØM Q¿UØXß[×^€aÑdjfyg&g g…gÄgógúhh]hÆi!i\ixii¿jjƒjèk!kFkkÈkõkôkõk½kykjjiÅiàj j¤kAllémªnMnÁo>oœoúp6pƒpˆpvoÿo‰n¼málÖkÓjÑi®hêhFh_h ikj5k kºlAlÖm5mpm—nn:n„m²lMiãheLba^YTSëOJDò>å8>1#*…$2¢ž… ܨ “¥¾/f¹ž+TPÇ £‰Í¨è z%ž*á/Ç428`<®A¥F}KN€Q{TWZ›]w^ò_Û_÷`‹aaŽbbºc€d_dñe9e+e&e=e“eêffeõeÐe±e~eUdùd‚cÚc$b‘b aûa÷b„c$d4eIf}g›hªi½j¾k½l¤m©nUnÚnÔnÖnZmÕlåkåjÂiˆhÄhFhzh·iGiÁjJjäkTk°k¬k~k5kik j™h·fkc4`¡]YSØNI D >è9x3~-N'2!{M: v ßæºÚ‹ÔŠÿÌYÿóÿÆ#D5·ñw ÆÖß®$˜)u-ã26j:×?žCÁGŠ993²-×("†‚†ðð ü¥œCâšaãzÿ«ÿôL!ÿäÿÅ3ë„ç S lÑÑi’E#Ö(+¾/a3¨7Ñ;¬>­A_CµF–I%KfLçNQOXPoQ“RäT6=Ê=‹>Y?@¹BxDÏGILOR6U•Xï[¶^<_úaïbøcÉcc1bdaÊa@`¹`[_î_Þ``j`Ã`Ž`'^ã]˜[’Y™VúT|QMŸHÏCm=u82Ú-ó(·"“Ç´„ › +§S5£ƒÿþ%®Æ†ÿêÿ¬ÿ¬ÿÿ+ÿ¼ÿ[ÿŽW£³ˆ%Í‘ ü œXàß²!N$Î(”,3.â12j45Õ7Þ9Í;q<Ð>v?º@¼A7A¥BB›C8CÜDD,CšCAË@“>ç=0;H9s7¢5§42Œ1ü1”272É4T68v:¬=L?áCF—JbNQDT3VTX¡Yø[$[2[Z`YÃYXX/WóXX†XÓYX[W€UŸSžQ N±LIžF'B)<à7R1Ó-4(È#戒§ = L—©OÓ§ÿýÿÔ<µ‹ÿí1ÿ¾ÿvÿÑ*ÿéÿtÿAÿiÿÐÿÉÿ±]ØM¿âò “­rûÐÞ w#é&¿(_)›*—,". /ß1º3¿5L6¤77\767@7x7é8G8‡8@7ç6ô5ÿ4‰3 19/s-+„)Í(-'y&è'j'á)d+-…/¼2t5)8”ÿÅÿÛ[ÿòÿ‰ÿ­ÿþ ÿÛÿrÿMÿ¼:/ÿôÿ¬bÂ^ÉÏ  Û™7GÃjÎL ˆ ü!í#W$ó&ê(ô*²,]---%,Ì,~,„,¶,á,À,ƒ+È+)ß(¿'P%Û$0"a ÍJ’öX¹ !š#Ù%ë(Œ+4.…25Ü9„<„?OA8C=D[EdEqE9D©DMD_D±EOEãF7F”F*EŽCôB?ë><;:Å8%4±/Ê*¬%ê"Aû>©& XŸ×;M®„×ÑÀ¢ÿÀÿïXˆeÿÿÿ¶ÿõTÿ¹ÿ–ÿ¶%ÿ·ÿMÿjÿÕ2+ÿ}ÿÿœ@zûZ䱄 Ÿ ”  5ÛÕˤ][Ëi' è"###"…"*!Ã!u! “ÑöâåÁ5¾l"xå-s£í  H#„&ñ*t-â0±3P5$781989ˆ9®9¼::·;Y;Á<;Î;¬:ò:8£7,5462T0K,Ë(†#ǧX¬œ` ŸÞÍñ‡­ž,T½ =ÿÌÿ³#˜|ÿÕÿÍ 1ÿ´ÿŽÿå6 ÿ¬ÿcÿƒ(˜1ÿ–ÿ^ÿÕΊBϯØ÷F±ýp ý tÄw—ŽA5ÔBá\Æj¨ìÿôÙÝìñïÜ è ð k ø , Y IOÐ(…dhƒ"%'€)E+",g-Š.-.Â/P090õ1|1h140ž04/Š.Ê-À,Ô+‡*m(<%}!¦ûom!è œ§š÷*©ÀIÐ-ÿæ j¤Rÿéÿï.ÿë9Kÿëÿÿ¶ A ÿ•ÿHÿ½Wxÿkÿ*ÿɤ¬ÿ¿ÿMÿÊGèòû–˜ ­ ´ y Ö U Ý o"ì¬oÅõ”6f n B   &5Zz–;`z3tÎ ­  zI»úï!."œ#‰$d$ñ%¹&&-%Ô%‹%?%.$õ$¦#Â"ß!$J‘‰s·©C WúÞÆùà®êg™!f4oŒ+ÿç'oGÿÖ-i9ÿàÿ±ÿË0`ÿïÿqÿoÿÚlžÿÿ~mäÿÝþýÿ3h÷Ьø|À–8­ üö u  ª J † § + “”  ±ÛNž…1çøþ{ù7}[ l Ö6_XÿËF¿¤d›äÓ˜^]š  Ö¦=ªF™ t x ) :ÁÍîF×+¬±2¥€õQ|¸œX!"qPÿà!o‡Oÿáÿ£ÿìE1ÿàÿ†ÿ‡ Œ| ÿ”ÿ(ЀÿXþƒþ‰ÿ‡³fG€ÿÙÿÉ6FL¢œxǤ“Ô5ª,©D¸(œ¹c!ÿÑÿÿPÿ:ÿÿHÿ“2úL¿…? é z ÜU}ž.‘Žžª¹üqèqAÎLŠ g b ëÜCª  3d—‰0ye鉱0¤±Fº˜¶ÎÁs/2f›J!U£¥4ÿ½ÿ¬ÿì5Eÿàÿ‰ÿ®—!ÿ¥ÿ‹ÝKáÿèþüþðÿÄ îá75ÿÿª& ¼9ð¤(˜Cf¾,€¦Ë¼™dA0,Ë‘^+'8såY+ñ ” % V f c { Õ P í ™ ç % ‚ ” ø;Ùí¹À}§0€n œF¨Sµfœ5¿ÏlÀéî“D1_› wJA2@“ºzÿ­ÿ«NÿÈÿ¢ÿÒH¢–1ÿ´ÿœÃ½ÿÝÿþèÿŒMvËÿíÿ6þôÿWÿÍO§© Jÿäÿvÿþÿþôÿ.ÿtÿÑ%[x‚œÀò é³xK??PK]ÉwÌ'ïF~§ÌúI£œcLOVWBmµ»üÿâÿÿBÿØ¢Ùg#k¡Í“#üIPìq@\µ›ka_H6b‹”Xÿéÿ¡ÿÀ1ÿßÿ¾ÿèH´¿OÿËÿ”ÿê¦#>ÿIþèÿLZW¯h’ÿíÿªÿ´t¿ý å¡@ÿÞÿ¯ÿ§ÿÜ3Ts–Âû 5ñ첸ÈÔÚÛÚàãßÛÝäâñû?©4´B-¦#˜ ö1»WXųÿ©ÿOÿ›o3¿!ÿä>ñ˜È„8 5ny6¿c`“¢šƒq„_V>H`Š}ÿÄÿ°ÿã!BÿâÿÈÿõa®ž=ÿÍÿ¸º-û=ÿqÿ ÿs>€?È2ÿÝÿãÿþAo’ÀÊÅŽCÿÞÿåÿâÿù?_‰Æý++éÖÌ·¬µ¶£xU'ÿôÿÂÿÿ}ÿsÿ”ÿ¶ÿÿb·òæÔˆ3ÿÔÿaÿ?ÿOÿÐ~ü2Ãÿbÿ)ÿŸXö¿;ÿú.ÊYžG1E–cù™oƒªlj‚£CSPEChuLÿÍÿÉÿù4D#ÿéÿÐÿûQ£¬e ÿÛ´))’ÿÁÿFÿT Ûh‰"¼\+.!3O~´ÎЮ“qG23KQi”Êý ìÞɤŒ‘œt\A" ÿ÷%g«âò§d#ÿáÿÇÿ¬ÿé`ãN.­ÿ€ÿŸ4÷kFÇ< Zà]€Y91_‘ª|!¿ŒŒ™jFb•ª)DURMgr`*ÿãÿÄÿå#B:ÿü8z¡¢q(W¿ûyÿÙÿhÿ—'òƒ“dè‹Q*29[„©ÂÁÀ¥{UAE>NoÇÞåÜáÛꧦ—yW:!%@[x—ŸzQÿñÿ×ÿºÿÑYÎüãhÿÒÿ‰ÿ 7ð`_év@W½MJ/:\Š›’V Ä£ –†\Nt¡¤ :Vcaf`[?ÿáÿã$9EB=>DbŸ¿¦j28†Öò­'ÿËÿÆ?Þ\ŒM¬u_]`sŠ¡º»©†hXN\pŒ£³¿ÆÕÜÜÏó¨˜~lap©«“~dF86FPf{£è ÕKÿÖÿ™ÿève?Ùp[”Ï &d‘œwS%çÆ¥iZg…˜‹1NabULMdc0ÿúÿãÿúFQG@BKh“²¼¢rVa’Ôá¨HÿóÿúIÑ?[Cð·jej„š°ÉÎÇ«yq{‚Ÿ±ÄÎÏÉÌÆ®˜“™–”’–ª¬aA2#-Af¡Îîó¨9ÿÅÿ¯ÿæpõ<J¼—Êâòý 'Jx‹ˆ_3 øçÇœlSNcw~tA[`WE9?_lMÿöÿøDH<;Hawvx–²ÁªnJe£×Êy#6”ïø×¬Ž¢ÁÐÓÜØÏ¼¦˜—¡£©³ÁÓ×ʵ²®–…‡š©¯¬œ”}S0)9_‰¯ÍÙóå¿lÿÆÿ¸ ƒìðÔ¾Ä×áÞ¿é+Zmvg\E) ýçÁ”kWOXada1GQUM=6EUX? ÿò8X]L=Mhpv‘­«}OCj³ÜÈy$_§ÚõçÒÃÐé÷÷øêÖ¾ª¤¦±¸º¶¶ÄÎʾ»·¨ ¥±¹´¨‘{dL<)/;h¨æ Ãb ÿÑÿç{ËæÓ¨Ÿ±ÈÚÜмÃê!ETbZM6#üÐzkZZbf^&7MUP@45NU,ÿÿ Qo`@<Nhzqg{“}SC`˜Ëņ/ÿòÿü/ŒÒôþõÿÞ¼§¤¢«»Â·ª«·ÁÆÃ¼¼¿ÄÀ¶£“i[[`RNS{½ø$ ÓuÿðXŸÁ¹‘x|œÀǹ­¬¶Óó%0GL>($## à°™p^ceR%;Pa\A0JaT.ÿþ UndJ7EdszƒŠ˜’sTE\”¹²v(ÿûÿ÷4vÁý"JQF*#ôѺ±¡£¹ËÁª›š§³«¢©µ¼·ª™•Žt^W]T^|®êú·cÿïF¨•s_sœ¹¾²ž˜¤°Îó7AF5/- ๲¬‡`WM+(=]jZBER_R ÿûÿÿ,e€e:3Nq——™•VCT¨«…H(tÊetc80& å˺ž—©¿À®šŽ“•“¤¡—Ž–˜†o_`_w¤ÌéМSP~ŠoJ<\œÑÖ´›Œž¦Ãô&LN?û,!üÜÄ·ŒZA- %B\j`G5EUG,Fsw^F@PrŽ›““Œxg\f~‘•}V8#IóYˆ‡WI2 áÇ·›ŽŸª¬¥››  žŸžž˜Œƒ|wx…–ªÆÄªwD,)Ipˆ‚fQQa‡´È»›Œ‚¸þ3A(*" òðí㾉Q.ÿù  6\hE"@Y]>$/Rt}hJ<P}¥§’‹‹—˜ƒhV]x“~YRl¼!jƒeZ:ãǸ¢“…ˆ•¦®­©¦®³«ž™”‰~srv†•¦»¾º—_5(Guœ«‘^>N‚«¿Ã°ž‘’”|vŠÂ 3*ö!7)ëàëëÑœi=ÿþ 1I>'$2FRK>8C]rufOPx§º®ŸŽ‡w`Xc|Ž’ƒyz¥ð9`^dM,ÞÆ±¤””ž¥¥–Ÿ¤—†ƒ†„z}¤°¯­›…hD;Nt‘“ƒb<;d ÀÄŹ³¨˜Œz†«â$%ìàÖÊ®‡\:$ÿý +32,(0HYREEUm}ph|Ÿ½Á³•x‰~jZ[k†š¥¢­Ñ)>UQC üÜĹ­¦˜˜—އ‹Ž„{|„‹‘•¦¯­˜~eRSYn›‹eC8:]‹³Á½ÈÍÑÂ¡Š‡©Ø!*,öÖÆÁÁ¯…S1!ÿý!ÿô ÿûÿõÿÿ !/2,/I`_PFLby{x¦³¸ª”…tfaey’ª²¹Ìç5>B.ïÒ¿¯§š”–™’Š‹‘’’”™ž¢¢¤œ{aTQcv‰š“y\O[i†¡ºÐØàØÌ·›”žÄð 鿞”‘ƒc4  ÿýÿ÷ÿùÿÿ #797EU_]TMQbu„Š‹”¥­¤ƒ}xxwuln{–¯Å×åô)3(÷Ú°§š–—›—’–¤¯¯©«¬¯¥’zg`W]n‚†wihu‹˜£¯Áâôòؽ©¡­·Ìé ïËŸ|i`V< ÿü ÿþÿý  %19CKX[ULCNn‘¨¦—…†•”†yqsytsxŠ¡»ÎÞð+0!öäÕŶ£–Œˆˆ…‹œ¬°®¸»»§†gTVXfx„‡ytsxyˆœ¸ØúîÍ»¼ÇÕÐÌÙïï½bB/ ÿöÿÿÿù ÿú( (7=BOXWO@Ea‰«°ž~lnzŒ—}kjux|~‰š³Êáù(1.ëâÝÒ°ž…„‚‡”£«°½¿¸ŸhY]eqzzsmpz„„tks–ÇïöÝÅÅÔâá˶¶Çáß½ƒZ>$ÿöÿêÿò"ÿúÿ÷ ÿûá§ì74bz ‘Cþ1SGÖl—¢qWD_:ÒXžäj#òœqË8Õ}O1³9 · H ì Æ § ¯ Ã Í ¾ Œ O  î ê î  ! 0 1  å é  E – Ú   Ô V [ … å 6 Œ Ö,nô…G0úŒÏGz±Òü\Ûeð¥pCëØlƯˆjzÑ/§ û v ô æ ñÚHLaü©†@ö­sA $ÞXb”`öLÃJõu²É\»9ÆGªó7 – þ ­ o m z p 7 Ó o & ò ï é  * M b R 2  å Ú Ð ß ÷  # % ( %   9 r ³ Û ó Ç v  å ë = M Z n   Þ 4 | Ü A Õ‘<°ñ<ðgÖdû¸ˆNz«™–¹jÝâ²ÕÖ—€®Ýà\ ÆZ}I'KSN?ÏpÀ 1!èý± ãд´¿¤»Ž Œ ø e Ö b ö § N  õ ò õ å ² m 3     $ 5 8 3  Ý ª ƒ } x š É  / L i y „ ‘ ² Î â Ð · t  Î ¬ É ô ! )   * 8 Z x ³ í R Ú T ˜ · Ø ' •Bé²xXK1 ¦ Šý¿ÒäÛJkKTzÈðÎe‡ºãC›àQ"xš&¬ûPЩO–XÇ|dM ž  Û Š 8 É q 9 )   å ¿ £ Ž s Z < - * 5 = A E : +  × š V #üÿ  8 p ³ ì  C ` z Š © ¬ ž i 1 ì u j – Ë ü   ò Õ Á · Í à  p ¾ ä ç Ý þ E Õ c  ©Y!è1Í¢ÕƒkØ{póŠTÈà„,óäàB%Ò¶}í_0Öàè²{lžßåÒÑÞ Ý E È O  Ð º £ « É Ñ ² g  Ü ®   ˆ ’ ¬ Þ  + 1   ß ¶ ˆ ] >    1 T x £ Î ù ( G \ c y } z O  Ê u ? " 6 P r ‰ | c H 2 0 * K ‰ Ñ   þ í ö 8 ˆ û X Ò g ¾ÐåuTðµ8-UVQ3Jø^-î•iêU†iÍOCTŽkTœ>þ  s û ° ; Í r ) Ê Ž d y ¥ Þ  ÿ ­ ¥ R     N Š À Í Â – w W 6 ýíààãëîîêîû  3 I M O _ v — ™ ƒ G Ô¹Êä & 2 8 4 4 1 ( & ! ? w Ä . 6   ù  & 9 v Õ K ‘ ù t V=£H™iÚùYˆß߸ NTˆN§·sX´÷\…'ö³}4Ãs ; y Ê “ ‚ y  ® ] ;  . Q { • Š { ; á ƒ = &  + &    òååìøìÏ”X轌c8&"6ESWby¡Ô÷ÿóåö nÆ  *  õû     . L f ‰ º Ü ì Ü Ç ² – ´  m   Ï û w  RÖT•¡cBÿ²AìIˆX¨u$¿WÚVmn‰wѳž™ q ˆ  l  ,  ´ 7 á Ø í * f l F ë š R øÚÌÁ­‘\Ó›ˆ}”²ÖÖdìo ¿r> öëñìíï#S‡¶Ïë V½JäO“ƒf>7IPaw’¬ÄËë 2 … Å Ú Ý Ê ± Ä  ` — ­ ¨ Ä ù ™ L ]…ª¦fÁy5¡#_˜±¡‹z—ßVd#GFXq † ª ¹  Ÿ „ _ X Y D ÿ Å ½ à   û » q ? 4 D Y /×9š ’MçÎÜî/DlOsÝ[ûÒªœˆzlX6%?mšÃÛùiÍk!¾>^d3÷âDµ3™Õè  ) T ¹ Í º – „ Ó  2 M n ¾  ¬ j G­%›0öÍ¥m”¯›·­Ù÷Í`Ê} Ô $ „ Ü y D 9  × – e : ? k ” LÛk"+_“¹X²¦ŸÕ<.DYjiaKJÎWß_jwŽ›‘^4ÿ 9Uiq{‚¯ãYï–3ˆ¿¡r:3uÔŠN]C<d¼  8 * ÿ 3 – ã ) k ¢ Ï _ Í B ¬ ö @ –µo)Ôhèv& „ 3 $ < " ç h  b Ó  ‰ < ï Ø Þ Ý µ `ý´•Ÿ¬˜^ùŽD-*Á_±ãZ å!e˜ i3æ–V.Ý©v`\rˆ••€fJ6.'-5BOVVVUjyÀ$°<¦ÿ ÷¿Š‰ð|XI÷`O2ºSÓ  % 9 R y ¹ F [ L 5 L  x Ñ  + ^ ¾ 3 Ðkb Ç l ^ ^ j P 6 7 C q ; † ´ H 7   $ ß|¦sW"ÛŒC âÚ› ^¡û_õ*nÍ-B(¹Qßp.  ->PRN3êÆ¹»ËÑÓÖÛãêëíöü8‚ÌbŽ­¥œ„W[qþÒ±\†h43·‚yG§Ê¯µæ B ˜  ´ … ¨  ¸ 6 n [ K J ] ª  † ¢ >  æ Ó Ì å  ( 6 Ú $y?P;ÿÉ’0²0Ћ/øìâ¹SáI¢&ÖͺÄÒßáÐÆ¡k"Þ¨odnŸÌø!1?(Εb5 $6KYkŒ‘}}’¬Í X§÷)ü§xƒõ~fŽ’Ê;&¦Óüg¹  $ ö  ‡ W d p Z 8 / W Š o – š ~ =  3 l ™ z 6¢ôl8.ðžW܇  Å}{¼Øžù>©A^¯"d_Q›*Éš|Ч¶ÛL}’¡’†\&á£sI0ÿçÿßÿä:Qp¨ÏÖÁ¾­ˆgIi¨Šà9"È*’]ló‰ =K[Ò¨¶’ŠÂ W¯j’lO‡  p Ä   â ™ x Uì ã­”Çþ ÀHÙFàš0Õ•f>æK´O?<_šûF¼£Ä-¬Œ$Î/P ì&(ýÔ²€@ÿÿÿÀÿšÿ‚ÿ|ÿpÿaÿFÿ8ÿ7ÿMÿeÿ‡ÿœÿÈ^Œ™µ©…@ÿõÿÐÿÎ7ŠûL‚KèVÿÇÿšÿ¬.´6½š+Õˆ…Ç[Š šÜVß E r ,Ä„jfDX>%6:¤f±dñM3' ¾5Ѻø8ap,¡HSÛyì$ÐR¯-ì9–›è òåɲ”uN#ùÙ»‘iA-(./$ õæçêóí3w«ÍùõàŽ/ÉwDÿýÿ÷~¹UŸÿÚÿJÿjÿä¬@{w]iØ~EäAg¨Sq°_—{O ͽçq‡ud;Þ–ó>ÀJ êªXõ8–¹ wS0uËg®×°‹U%@c}‰ƒuu‘´ÃÄÊÊÃÀÉÖÛÚ×ÒÓɸ–oI-â®…qzŸ˜†I¦NØFÿÁÿ5ÿ%ÿ[ÿý­ ÿíÿqÿ;ÿ“¥èÖž”Î|R Z…ú‰iÌ*˜òEf€f, A74 Õ‚µPôçSÄ‘šÔ䨝­ÕNëd†y×\4àe¬ ^Ì  ãÀw!¾Luðå & n œ Á Ú þ ! C Z r s o O * ö Å — p E Òzµh(ð²e±_ø“õCV;kÿÒÿúh®±\—ÿÍÿsÿŽ#ªéÆu8A(¥Ô G¤ b¨è+‚Ú;cO1XKk_ ¸Lî’4Ó] ÉÑø-#.Qॗdÿkí©­³ ¶ ¡ l 4 ô ÜŒ26úH ³   % Ë  x khXˆü,OMY^cfol_>ðÇšr> º`äe Õ Z ¾ ) 6 PŠîV»"I;ï3“©äØMÿ¦ÿ%ÿ$ÿkÿì@Jÿã=ò‡î%D‰ß:vŠ—º‹ó3Çù÷©o4Ès<E’\·ô•zÐ+r n [ p Â:¢ÖÉ®¨Þ%GÚy×ÇáC±´Â€i°ìîÈ2 ²¹f@%öçѺ‘e$æ’@ÎU¿E…£\ýA, A } ¡ § VæU³€BN{W½Úÿ¾ÿúkŘ>VÀEÌóT{uYBmÑR²Ûà‡žœ`æÜÚÒ‚­^2%¹zföÔ Ù ô2£‰‡E’®°äWût Ö!p!â!o É× ¤X¡î¾ ©!À"Ì#Š$"$R$‡$w$a$)#ê#Æ#Â#æ$ $!$#þ#÷#å#Î#”#O"ð"–"7!Ý!„!% Î ¤ :ª‡K£A~Ü]þ• — î 0q—A/Фj¿ôÿò+$ÿ´ÿœÿÃ@Ó;Y:@A:,XÙd©•–>ÚSô½ÚþDE«]«ƒ  ï‡>´¦4áÑ?_ à!É"Á#û%”'i)6*†+¨,,`,+ª+*¡*‰**ú+X+÷,«-l.(.š.ç.ä.î.Ø.Ç. .X.=.[.µ/ /A/Q/;•;Ä;Î;î;ÿ<;û;Á;':~9¤8Ó8 7;6«6W65¥4ì4H31ß/ç-Ð+7(¥%ò#> ¼ICm¾óä}SŠ p š 8`a¶oÐ9Éÿ}c”›pÿ¾ÿžÿ½ÿÝq²µ | ï “ U¸'Pt Z < ú út«-ø[!$J')Õ,Q/1e3™4ö5×6¯8(:<=¾?&@ A A¦BHBZB)A·ArAeAdA¡AÂBGC DEEáFrF»GGbG¹G¾GnG!G*GŒGñHVH˜HÂHôI%IwI‹IHñHEG<ú;X9’7'4º1ä/, )&p$"y!– 9²’úРã ñ ŒëǼƒtÙm,§3ÿ×ÿËÿçÿí)Køá Õ!Sz å_5õ#U'*ù.t14×7·:<±>¬?ýABQCþEéG¸I4JŽKLM5MÝMóMÊM]MMLùM;MkN'O0PŒQÑRÁS}S×TJT‡T×TÀTJSÒS¸TTUT¶TøU.UeU´V6V‹V»VWUÏTßTS RPÿP)O'MèLjKI•H&F^DxB$?×=3:Š74†1.Ö,Á+ )Œ'Ô%Ÿ# s<‹/x/)é"  º 9&y/âvÿáÿ“ÿ€ÿ¡ÿ”ÿŒÿÿ®ÿä+ÞP„¹èT¼ý)!È$G'8*>-Ç1y5D8ã<;?ÁBE"FèHÃJLKÑMJNïP„RSDTŠU‚V~W W‹W‡WWVüVÃVÌVØWIW±X¨Yé[[\¦]|^&^c^¹^Ó_^Æ^.]š]b]›]Ú^0^a^^¿__·`8``\` _c^Ù^3]‹\Å\$[YÖXVoT–RÍPÒNºL„JnHDF!C¢@ä=ñ;86G4‡2Õ0ó.¶,7)Å'ž%â$" !˜ý Ç¡e ÕmôÊ# N—@ÿýÿðÿÈÿÃÿÚ)5&×$ú#F"k!‚!›!É#$|&²(¼+[.1L4r7ó;‡?QC5FÒJfMORPùSTÙVWüYuZÂ\]3^I__¼``]`K`_Ö_»``^aaÃbÈd eIfTfÖg1g4gZgcgƒgHf¥f eÏffXf¶fãg g6g˜h9hÁihëhªh+gÈg]fúf‚f!ecdrcaÌ`4^ž\ ZqX$VTR&OÅM JGD{B@=ý;é9®7T4ü2³0‘.Z,F)g%à!à.W´t ¶ Aa?¾aæîHÿºÿŽÿ{3í1µ0.j-’, ,¨,Þ.!/g1n3U5ë8¼;ô>âBErIMPqS“U»WŸY'[/]^{_‘`ÂaØc cþdÌe3eže»eÒe¹e…e}e™f*fÖgÄh”ixj‹kcl l,l,kùkõkülkõkajÔj£jékAk¥kÐkëllmmm{m½m“m[lõl lUlkÜk¢k.jžiÏi&h$geccpaB_c]˜[âYÈWOT‘RO±M‚K`IF·DdB5@1>;Ô9I6ù40Ü- )%%}"UWp8u { _d 0‡>E<:h8Ò7ú777d8½9þ<>@­C‡F£IYL[OÍSW9Z7\É^g_þaKbôdVeWfg%h.i8iìjvj¨jókj÷jÜjÆkkkl6mmþnÌo‡piqqpqfqAqpõqq(q p€oöo¿oúpLp®pÖpïqqnrrŠrÙrÃr¡rMrq¼q’qZqp’po\nän@mlSjÒi g‚fdÂc%a3^å\¬Z‰XžV¥TxR OŠM0K5I:GD^A¹>;S7Ÿ3Î/ó,^(ß%W!‹^fËç0 ¢ ‰Ëvö_qŒHPF6D¨C"BZAA¨BCXD‘FŠHK6MÈPzRáU¦Y\h_a²c£dÓf'ghhÅi8i»j¥k¥lzlðmGmam¤m½m mˆmmúnoOppÚqƒrrÖs[sºs¸sŸsuswss¾s¨s5rµrwr™rÖs'sGs^sssÆtXtïuYugudutÞtŠtUsõsxrºqêqpƒoûovn²m»l–kŒj™iÖhÜg¦fdQb™a0_«]þ[ÓY[VëT÷S3QjO LYHþEºB1>¶; 7Z3†/Ê+ã'Ê#ªŒìµ¯ ¯ pìwÜMRðQONMTL›LÕM*NfO–Q€S‘UøX&Zd\_b/egIhµj7k9lSlìmRmlmŒmìn£onpp@pppwpšp¡pypip‚pòqkrr»scsýt”uMuÕv9vBv4vvv6vdvSuñu{u8uFuru·uÓuæuêv2vÃwrwýx3xRxwéw‹wHvÃvu.t+s4rfqÑqEpÄp$oŒonšnUmêmUlck_jBiihUgeHc`Ù_]m\ZWŒT0PÚM4IÇF#B^>J:761Û-) $ô!MÔëæ×V ŸS[ÝZOYWÜWBVÂVÿW2X"Y,ZÕ\Ž^s`aØcÄeôhijkkÜl½mÿnóoËp p oæoøp]pëq}qàrr&r&r3r&qûqáqâr#rjràsVsãtetúu´vIv¶vÉvÆv¬v¸vÕwwv¾v^v$v"v8v^vevavFvqvâwˆxxkx¨x–x‹xCx w~vÖuÖtÅs´r½r qepýp‡pQp-p?phpnpHoÎoLnªn=m‹l¸kRi°gæf[edb¦`È]ØZÁW'SÐPPLÙHöDÍ@p<`8I3ç/¥+Å'ÿ$ÄOñ¡ udccGbcaa:aa9aAaÉbcËdëf'g>h–j6k÷m±nëoÂpNqTrrŽrtr2qûrr€rûsns¿sÕsåsÙsàsÌs›s`s&s-sWsÅt/t¤týufvv…vßvåvÕv»vÇv÷w:wXw@wvÜvËvÌvÉv®vƒvBv@vxvõwfwÌx#xSxŽxx‘x*w¨vÁuËtÌsàs>r«rkrr$rNrÐsvsæts»s_rær­rCq°p¦otn*m l,k§j·ipg dpa]ôZ—W~SßOºK@G8C4>õ:¤6z2O.+)·$ü $ViuhÆh@gågÝgÙgögÞhhŸioiúj¨kllˆm×o p2pèqŠr rÝs\s‚sAsrøss„søtbt´tËtÒt»tÃt¨tjts¥s†s¤ttxtÕu uLuÃv&v[vKv+vvvSv™vÉvÓv´v¦vŠvsv>u÷uŸu>uu uMuuïvPv±wwYwˆwHvîv5utt«sïsss rìr¸râs*sÕt²uWu¬ulut–t[ts‰rÅqîqpXoÕo—o nIl–j»h eAb<_¹\ÂY4U$QmM¤IÌE½A =]9J4â0?+-%ù ó-mÌmnm3m6mbmomkmAmUmÁnUnŠnåo‹pqzrIrÛs5s²t"t¦tÜtÒt’totwtŠt×uvu´u t”t s…s:sss'ssÕtxuLvvÄvîvåv~v;uÜuztøtjsØsFrçrÐr–r4qoñmík™ig/ebT^õ[»X2TºPäLëH«D¬@=;Ÿ6@0›*Ð%No0nönðo)onoqo\oFouoäpvp±qqÓrºsvtt|táumuÎv uÿuîuËu½uºu u¯uòvCvtvtvjv@v)uíuƒu!tátìu uMuqu›uÏvvpv¥v§v€vmvkvsv„vv–v¢vœvœviv!u utˆt sÊsŠs”s«sýtWt®uu ut˜tstrÝr[qÔqq[q‰qÇrHr²sLsþtÍu±vCv›vzv\v uÉusut­t9sêsÕs·s|rÏr0pÔolùk”jhjfcv`V]MYáVnR¤O JÕF{A;m5E/\ppqpžqqaqkq\qkq»r.r¼ss†tKuu¢v v›w'wÃx xwÓwºw¢wwow(ww!wTwhw;vøvŠv'uÈu`u%uuuu/uQu™uívOv³vöww)wAwSwhwnwkw]wXwMwKw$vçv~v u¡uLutÞtÌtÇtôu6uqu¤u€uEt sìsr%q`p p@oêpp^q qµrs;s÷tÇuovv@vwvcvDvuÛu°u|uWuJu=u'tÝt½sðrŽpào¿nÂmÓlFj`g´eb_H\YUQ K²Eý?„9:pþpîqDq·r!r;rErwräs]s÷t|uuÏvzvíwdx&xÖyeyxyXxùxÔxŸxSwßwUvévÂv¡v\uÃut's]rÊrKr q¿q©qƒqÃr/rñs¥tgu$uÐv~wwxwºwýxx)x xxxwïwÃwxw(vàv°v‹vSvuîuÙuáuØuÉuStºs´r¯qwp2omãm3lŠl“l·mŠnxo¢p§qrhs+sþtµuxuávvvv*vOvov†v~vsvGvRuÌt¾sMr/qHpªo¥n7liÉgOe#b³`K\êY_TkO2HûBÎrSr\rÜs]sÍsøttMt½u2uÑvzw$w¿x;x™y yÕztzÍzœzPyØy¤yPxÊx wHv›v/u¥tçs¿rqq!po5nrmßml°lwm n otpªqés0tauŸvƒwBw”wêxx#x#x#xx#x w×wzw vÓvžvrv4uîu¨uouUutât+s?qïpÁopn l¦k-jihðhîiàjòlmüogp®qÇrçsõu2vv¥vÐw wSwÌx:x‹x”x‹xXxjxwNv!u t(s²sqñp.nQlTjÂig6dfam\üX_R…Lrós)sØtptéu,uMu|uÑv:vÐwwxxhx­yytzzpzyyýyˆxçxzwÅvÌutpsbr…qqpnil˜jöi h¨gŸf®eYdÂd˜eÀgijÎlœn†pqrgsîuDvvÎw8w¬wáxxx3xwÆwFvÓvhvu¼uVtÎt>s›sreq·p‚nÿm2kžj%h­g?e£d^cbÖbËcßdüfÐh®j´l—nEoÚqUst}uªv]wwžxvy6yàzz+yîyéy”yx#wv(u”tåsõrpào5mølªkUif¬bó_7Z3TÖrþsqtgu0uÂv(vPvxvµww”xxzx’xœxåyJyÃyØy¦xøxhwœvòuÎtVrŒpöornlwj”hof?dobóaè`¹_¦^#]‹]„^û`bÙdÖgiŽl)nÏq sPtÙvXw9xx|xÍxÀxËxƒxw|vþv‡v#užu t"s)qñpÑozn:ljj0g´epca÷`«_&]ö\¥\Y\p]º^ð`èbîeTg¶jl np;r&søuTvw‰x¯y¥z{{n{V{c{(zézBybxmwÔw3vpuBsÏr]q^ppo‚mÐkÝhÒeòaÏ]*qðr›sÂt´uYuÑuóvv/vväw@wbwFw3w|wÔxwßwvžuØt£swqªo’m)júhífûdõb·`m^\IZºY«XW„VU¨UÂWDXÉ[]_¬bee•hØl o0q½t3uÛw€xVyy7yry7xÙx?wÎwKvÜv u#s˜qïoÒmÒkinfÅc§`h]\[YWÖVeUjT2TTQUÁVÿXåZÈ]?_Ùb²ehh j¶m8oÆqôtužwCxƒyÒzœ{G{r{¨{{‹{(z—yÏy9xŒwávÖuxtsr)q`pnVkÚiªf}bÓpáq°rçsëtuuu$u9uuÒvvuæuÊv vrvˆv u…tgsWq¡oÜmdj½gÔeb`]±[=XîVŽT¥RìQÂP˜O·NfMüNO‘Q SVUfX1[(^ábÁfÃj¨mùq0suðwdxµyAyðzyçybyxqwûváuœsbpþmþk*he a]¡YÀVSjPçOVM°LÄKK”LMzN¯PzR:T»WkZÂ^a¢e hDk…niqHs˜uàw}yyüzÚ{2{‡{›{×{Í{¦{#zžyçy[xtw/uÉt°sÐs r p‘nˆláj˜gìo…p_qƒr‚ss|syswsysªsëtt+t ttqt¶t¯sósHqÐpGm×kNhdÏac^[X'U¥S)PòN’LžJÏI›HG¹F{FFGwHàK&M+PSW[G_ãdShVlForÂuw?x{yÙzXz¤zAz ycxåwuuÄrÌo¨kÄhd`![ÅWR«N³KÑHõG EDB×BâCTDÇEôG¤I9K—NQ–UMY‚]a{e[hñlo¾r×uw x*yVyèzoz¤z÷{{T{"z¹yøyvxŸwxvtésés)r-pÄom lj3neoOppqxrrpr\rEr&r0rRrnr~rirvrós)sr q9oembjâ@`BÍDöGþK"OjSÿY*^(bígªkËo÷svwØy¬zZzÓzyzcy³y.whuNqŸmÄhÿd~_”Z“UOO©JØF«CèA?<è;Š:!::—<(=n?"@¤BãEjp0oên†mHjzg?b’^XÀSYNH¿DŒ@Ó>.;Y96j432W1r0¨/d.Ü.×01a3Š5„8e;2?hDIçOÐV\Yb/hlÔq’tÈwçyNz‚zdzy¡xÑvMspnºiòd^7WÑQVJ³C§=å8ä5ó31b/F-å,l,@,‚-û/X1-2½4Ë6Ó9ô=bAóFvK¬PõV}\a.fSjjnIpçsuvvvÉvóvçwnw½w wvuÖuAt|srŽqºpôpo:n~n"mêkkÔl¤mymþnjnMmòm…mam‹m«mýnlnÉo4nðnmkkhd^ÃY¥SßMÙHBG=ç:7Š4Ê2µ0r/-ý-‘,ô,\+d*÷*ø+ì,Ã.U/Ò254r8=mÇn.m¾mik™i¬e§a$[ UoO(HŽBD<7‰3}1.,ß+*3))v)2(ð(m(8(Q(å)C**ñ,©.-1f4ý:Ë@ìHaO»W^HdžkoÝtŸw5yyÁzxîxuMr.m2hBb[ûUNFÌ?:8Ò2ý/6+ˆ)u'E&H%Q%W%c&&Ì'á(Ø*>+Ž-½03–7@37ã1ç.*) '_&Å&%ù%Ý%ý&&#&J&p&˜&’&R&&&&&ã(¿*Ü/Œ4¶;÷C2K!RìZ\aøhnqvtƒu?vuWtýròptlGhNc)^WÏQeJwCa=7G2Û.A*ó'ª%ê$x$&#®#œ#m#s#i#¿$%& (F*”.¾3B9]?tF4MS|YÅ^ædgj«lm5mƒnn[n¾nánÅn½o*oo¦oMnÉn`nVnŠnwn’nìhúhÈhçizj.j›j£j‡jVj5jqjÑk–l¼mCmVkîjðg³cº]jW+OÖHƒA39³3®.*ø(''%å%Š%$%(%$%9%3%=%h%‘%¦%ˆ%A% $í%O%g&Ø({,~0ó7ˆ>E²M0Tª\ZbÂhál›oöqrar/rKpÞokÍhÌd`XZÖU$N°HAâ<)7d2d.c*c'ß%©$Ë#â#¤#P#9####$ %˜'*s.:3ø9Å@ªG¤NUC[ `ùe8ijël—mm‹m®nn1n mðnBnŸnÊnŒnm•mšmìmõn(niAhÔhÊiJjjtj‰jŠjmj?jujûkåmm|mqkµjZf‚aÅZÃT L~DÔ=a5Ë/þ*´(%¯%$ #î#À#ê$ $+$&$$$S$v$w$@#ð#³#‡#Å#À$ã&&)’-`3T9\@™GÇO-VÅ]Tc¤gÄk†m%nËooˆnºm«k\iVf b’]ŸX„RoL7F@l;N5á13,‹)c&%G$#©#I#2"î"³"]"\"X#/#Ë&G)A.™4;*BTIÇPÿW|^2c2gÆjl+l§m"mmmm“mim@mtmÃmýmÚmSlèmmom‘mÑn=j iviJiªjSj¥j·jÈj¼j€j§k?l4mTmm€k‰iÁeI_óXˆQ‹IïB :±3&-“(&5$.#Ã"÷"Ò"¼"ü#2#b#k#q#§#Í#Ï#œ#T#%# #T#h$q%„(x+Ç16¢=ICÆJ}Q[W“]»b2fTh‹jªk}l˜l¢l†kNjThe|aE\ëW*Q*J×Dø?o9£4p/6+n'ï&9$´$_#ý#í#µ#]"Ô"q"!"w"p$#&Q+07> E¿M>TE[a#fbiDkíl¨m9mmdmmnmHmhm¦mçmÕmQlèm mm©månFjÍjiÏj jj¶j¶jÒjÙj—jªk=l$m'mCm>k#höcë^VYOGe?j7ò0h+ &I$D""G!«!©!½""Y"‘"³"Ù#-#h#|#I"ù"À"¯##)$ $Ð':* .Ø3ê9û?¯EKQeWc\R`ñcéf«h6j jík¸kk€j0hÍe…b\ŸV²OòI»CÀ=¤823-¶)v'A%|% $Ž$O#ù#}"À"!‰!!"#¥'Í,G2ó9µAnIPsX^Dd(gµk l*lólÇm,mem`mOmym»n n mm+m]mÝnn;n•kêk"j³j¯jíjÔj¼jÞjújµj²k.kùlálêlõj·hb\aT†M(Ed=P5Ô.F)$£"ð!P!! £ À ó!`!¨!î"."…##o#¶#Ÿ#V###s#¤$v%'P)û.ƒ3Y8Ô=¼BŸG¬LáR\WK[ï_XbŠdÚg€iakkÌl–l k i0f•ae[zT4M|Fþ@–:³4‡/*µ(&+%Ô%$ž$ #‹"º"!j!F ¸!|"…& )õ076’>'E§M>Tõ[aöf4j@kãmlámZm¡m¾mÐnnenËnÒnWmìnn“n¶næo8m%lDk®khkdkjøk,kbkj÷kfl"lülîl÷jugEaZŽRŽK C9;3+ß&Ó"Á!t Úu¯  ‘ ô!T!±"+"Ð#d#ã#ø#Ç#†#†#×#ñ$¬%N'{*#.y37ÿ<>@UDªI:NRVºZH]º`×dUgOj$kÐmwm¢mþl6jUew_µXPÞIÃBî<»6H0ú+’(…&z&1%Z$Æ$(#{"œ!Ò!, à 7  !#ú'\-\3…;+B·J„R`YX`>eiÑkàm9mmmîn&nWn¯ooo¡o nŸn¹o+oPo†oÒnemal”kñk—kjìk(kqkjökhl-mlýlþj7f_åY QI|A¤9a1Ö*+%H! ›IÄXê W Ê!1!Æ"‘#[$$T$N$"$2$‚$Š%N&'(+‚/Þ4q9 <á@hDMHWLuPGSÍW ZL]ÙaëeÄijk±mÃn$nËmKkÊg&aYÃRHJÃC˜=:6¸1i+Ù(ª&•&Z%”%$Z#ž"È" !i! t ± Ê#$&+Í1Ë9}AHôPèX%_edÃiülgm÷mÍnJnŽnÐoobo¾pIp]oÐo2o,o‹o²oùpAošnhmUlHkŽjÅj’jËk$jÍj«k0l mlâlÝi×eÆ^®W©OˆGÕ?õ7ž0(y#Ò y༑L†Á5”  {!2"6#?$$w$’$ƒ$²%% %ñ&ù)˜,Ž0Õ5e9¿=)@CŒG2JõNyQ“T“W [t` d«hökœm×nBo$mõlÉhZbàZùSdKªDE=¸71Ì,-(ó&Ñ&œ%ï%y$É$#9"Š!ç!ƒ î! Ü"Å%F*­0d8?{G‹O©WD^édÃj†mQonìoXozo¶oëp!p^pÞpípQo™opo¹oÛp0pupYným¥l9k%jiÓiôjPiúiéj„k{l”l†lŠiweQ^(W!O GT?q7/œ(#œ iäΡg“©ì(“ç ©!Ò# #û$i$§$Ë%&%»%ô'(_+R.Ž2ÿ7É<?[AüE1H°L[O³R‚UW´[H_Ùd ik¦m³mãn©mwlEgÖb[ZyRïKACÚ=S6Ä1œ,G)L'8&þ&t&%i$—#Ù#<" "=!´!À!v#%1*5/ 7 >xF˜NÍV ^sd“jµmÍoÏo˜oîoìp$pRpfp‚p÷q pro¸o€o¾oàpDpŽpëoqmál$j¾itiiiwi"ii¾jÈlll0i$dü]ÓVáNßG4?R6ï/~(#¹ 뾓ÅÏó`‰ :!l"Æ#¾$C$ª%%&W&¿()»- 0°5h:t>ºA¸DG JyNQ?SÖVXI[_ìd¸i.kämónnÄm}l>gÇb?ZMR¦JéC„=6•1—,‹)Ò'Ô'™'+&Ý&%%$c#Ñ#<"Ó"J"5!À#$·)X.5ñ=5E]M˜Uˆ]tcÊj=mŸoÔo¢oïoßp*pmpypˆpÿq p”oão«oæp ptpÀp÷oqmÇkãjQhçhkh[h®hUhThéiûkPk”kÎh÷e^LW¢OÊH?@c80—)E$Ö!l E Ó &6ht !;"¥#®$Y$å%o&''Ô) +½/3ç9*>¢C F%H\KmN±R TÐWXÇZs])`êeCiflmÿnn†lökif½aY3QxIÃB™EnLOQÎViY2\X^K`9`ßa `Ø`¾aåcñfäiÈklµllißg@aÈ[ØT$LrDý>8M2S.M*Ú)n('Œ&ÿ&Ž%Ù%$t#û#•#@"Â"c!­"#"„%ø*Œ29?AcI^Q Xµ_-f&jlMkÌkÆkkðlŒlÂm;nRoEoso`o¼pepñq¹rŠpDnÙmAkLi›h;gªgKg>f¨f”gh2iµjtjìhÿfÆa±\.TÈM´Eì=½60.ó)Ú%"² {ÑÿÜ®ºŠ«çÊ ß"V#Á$ú%À&Å'þ*b,Ä0Ø5*;l^m’n"nsooÈpGpèq¸p nðm¦ljuih:gxfõeÿe´eêgh«iÝj¿iâieŸaoZÃTHLŽD<´5\/)œ%â"º!  j .æÒh0)›  Û!|"€#"%I(,-1ª7–=D_KwRÑZz`£f%ik¸l¢mîn:nRmÅmFlÈl|lYl§kþj°g®e`„[£TüNF»?w9k3Ò0,*)ï('%ã$Û#½"³!‹ Ê D 8 0 ;ýø¿ â!÷&+B3:`B^JPQÓYS_pfiZkjjiÞjjxjŠk l!mUmónRnûo p pq@ŒG{N¯Uþ]°c©hÕkIm~nooLocnÏnmUlîlŒlpk)iNeµbh]UWÖPÇIB-;5z0o-U*"(f&â&% $+#!ú Ó ¨¡xgSv!+"Ü'a,Ó4‰;íCÔKµS ZT`fGiOj¹iÝièiój)j„j¨k3lCmcmýnWnøo…oÕp$p pon lÝk–jFi5h[g»f¯fEfXgPh}ilj i|iOfðcÒ^1X±Q–J$Bl;4¸.a)ë%Ï#¾!±! µ m X f ¾! !ˆ!×"Á#S%ö)r/r5Ž<¼CvJƒQ×Y`Õf¦k‘m˜o`o–p?pApJo¦n­m¡m7l½lUjwh cÂ_ºYüSÑLmDë=Å6É1©-*o'Õ&¡%‹$ÿ$<#_"^!X N¨D3è̈ !è$6).®6J=¼E¤M†Tª[­af¹igji¹iãjjIj–jÌkilum‡nnuooŒo¾oÚp(oÐnñn mkøj¬i‡h©hgf®fÀg¡h­ixiìihiTg^d¿_ÁZÛT;MBE´>[7Ý1~,Â(3%w"Á!« Ô Ý – •   ã!!!Í"Ë#r&4)»/å6R=ØDÕKîS:ZQaíg–lWn.oÇoÍp9pponmm7l¨küiŠf™a›\½VIOŠH@9¦2â.)­'}%e$´$#»#:"!¿ å ˆ)¥ ˆ“ º#¹&¾, 1É9R@êHÖP©Wo^b½g¾iëjÁièjj[jmj jæk˜l—mnnbnùoZoioToxoÀonGm‹lˆk6iói hqgg#g.g÷héi¡iþiŽi—heça‰]6WPIA»;4”/›*°'a$ "l!&! Ã Õ Î í ø!O!‘"™#A&)¥/ü6²>‚E¸LÑTZábTgãl“nhpoþp9ppoÁon!mÑlákÊhÅeh_ÎZRºKfCÎlYlilÂmRmênOnqn³nn¤mvkïh„e_ÝZQS°M,F·@€:È4±/Ç+5(‹&%.$C#å#"»"d#2$ &™)e-æ2„8&=°C€IHNØT¢YT]”`NbÚd²ghÝj´kbkîjåj gcn]fW;O÷HøAë:Ë4L-»(Å$!‘~+¢®¼Èîpé o ™!$!™#§&*Á/ô6Û=‚DÆL'SSZ„`hf i¿mAnso*nŽngmõmˆlèlkƒk€k™k%j jrjmj`jiÄhùh3[¨_fbáfÑi¬kòl”mlÏlîmm/mwmênwnñoAo’ošoño=n8kjh‹cç_XÿRÛLqFX@p:4 /b+å(³'%†$¹#Ž#"s# #¬%í(u,‡0­5:?D?I¥O:TX`[t^[`µceíhwiªj¨iˆhzdÐ`˜Z;SñLêF?_8y2a,a($!áÎ+¨µ_@A¥ ½ y!L!À"Á#¼&„)¯/*4ø<(CJTQ—XP_ dSi€l{o4o·oào nÇnOm«lÖkékUkEkAj§iîi‘i]i$h­h@g%eîT Xù]²bÌf¸j(k¬lÞmm}mÂmÿnIn°o=oÛp[pÆpÛq0p¦oõm¬k3gbè]~WïQëL>F@`:ª50ç-*µ(V&ß%+$M#w#Ì$%ä'ð+z/33‹7`;œ@)EKJµO±T;W¦ZÞ]`©cmfihi_hJgc^‡XQæK2D•>7]1ª,8(¡%T#¤!ì! ’ܪ¨8º ˜!l"“#%=&ú*.o4W:lA‡H„OwVb\ƒb¬gLkÖn4p?pOp4oMnßn>mflqk…jíjÂjpi…hNgjfŸeàdæcýbH`TL”RÀX½_ dh¼k,m$m¢nunÕo5oƒoÝpkq/qårrr”rÚreqüp(njMf¡a¿\¯W QÁL9Fa@—:Â5û1–.’+‹)z'7%ë$°$°$®& 'r*N-‰1‡4ü8Ï<ÅA~F®KÖP›TeWàZÖ^9aMd¡f~h$geÛa”\½VOëIeBì<˜5î0t+Z(b%á$Ä#]"D áá îë‚  ù!Ö#K$§'$)©-ö2¡8í?&DEJçQ³X^UcQhIk‘n¸pq&pÛpŒoŸnìnlìkàk"jhiÓh\f=c\`Ö^J[ÕY0VšS\Oµ:ÍBðKES¬Zæa÷f«jÖlÛo pp÷qeqär{sat?uu2u.t—t^s@qÍolXh­e`Æ\„WºRÙMµHxCž>ø;'7O4d1y/¨-Ò-J,û-È.H/Û1»4£7:Û=äA”EÁJeNòRøVšY®]` c[e>fóeöd•`\[ºU²P.J}Dº?9*4ˆ0{.s,æ+ò*7(=&*$¿#Á#°#o#ê$t%É&ä)/+Ì/Ï3Á8Ï=øCâI¹OìVn\kb fcjšm!o„pXq&pÕpxonÎmÖl·k¬kjCifg+d=`N\ÌY1U¢QòN^JUEÓ1^9ÙBßKÖSÛ[ÄaŽfêj m4nËpLpøq¾rjsZt2uuCu7t¨tysªržp‹n[kkh°eGa¸]lY TTO¥K2FÜC?;ï8æ7544(4Ù5F6t7­9Ð<?AÇEH§L²P»T„X ["^ba0dQf gfydù`ø\¾WfR{MlH@CF> :6µ4ì3e2 /ñ-¢+i)ö(Ò( (9(¸)Q*ö,i/:2x6ë;%@DçJDO¤U?[+`pe[hÑlAn'oãp]pôp¨pAoUnmŠlak4j‘iXgádª`Ï[ÌW2RzMÇI$D©@ :ò'÷0ª:FC»LƒU?\b¨fêk mkopˆq˜rRsKttîu2u)t°t’tshqùp^n4l`iàg'cj_v[V¹RšNªJëFÑCC?ß=Ä;Ð;@:Õ;R;ž•@3BžDôGöKN«R&U§Y%\w_åbÆeàgchžgXe·aî^YGTÅP/KŠG6B»?c<”:ò9j7Õ5š3.0Ø/I.-½-N-Ö.X0&1û5l9V>)BGK¹P³UÊZå`3d›hžk5mâo;pbp†pÙp€p onYmLljÌjh[f6b]OWTQ©KÖF @†;960g¹'á1O:‘CL~T [c`´eãil!mÃoiprq¶r¨s¤t t4sòsús´sVrcqIoÕnÀmkDhBdà`Ï\ïY9UÑRpN•JöGiECB•BB}B¶CXCÖDâFGùJLÒO´RàUØXé\ _[b±euhXi›jŒi4gœd9`Ñ\£X T”PLÜI F"C§B@\>›X< ;A:ÿ:‰;?;ö>NAEIM3PØToXM\Z`„dThjÛm`níp¾q—rqÈq­qp‹ojn9lqj»hgf}bó^½XeRJlB±;3Í-w'4!ÍþÜL Š(©1H9ÐAóJ-QW¸\Ÿadïhj?lœnOppóq«qärcrŽrŠr/q×q}qrqpµo5mJjhgšdªaü_V\Y·V™TQÙP÷PpPÐPäQEQˆRTSGTêVƒX³[]§`b_d˜f”h¡j[lNmDmýmkéiufÿdaw^Ð\)YyV‹TQðPRN¨L»JnGûExCÇBwBOAåB¾CÆFTI2LßPRS´V×Yù]T`ÇdJgnjzlÂnìpUqõr¦rþrr9qsp¾oGm¥k0hée¼bÉ^XÈQ”JlBC9Ê1¿*M$#×Á~ @”Ú (/á7Ô@#G¥N¤T5Yæ^Hb…e˜hÀkm`nÔpp±q‹qîrqêqÂq´qûrr8qTo÷mÂkÆi’gfe bÓ`…^\ZXâXX.XXtX¢YRZ,[¢] ^ò`ðc(eVg`i`klœmÏo2oÜpioÃnâmk"hèfád¶bw`]{[3YTW³UíSÑQhNõLzJéI°I·IŒJ©LN˜Q6TMWAZ#\ç_•bOegøj˜mnêpÄqýsUsÉsìsJrírq%oQmIj5gdcX_FYSRüJòBò:0Ø(d ÃÎ}Ä '¿ ÏÀÉÂ&`-‚5,<–CwIUOLT^Yz]Šaudhgyi²kÓm2n©oppp.pip°qhD‰JOòTäYs]`¼cÎfþiRkvl°mÔnowp@qqžrDr"qŠp^oˆn‘mŠlLjÞi¡h«hgƒg fgfeÍe÷ffpf­g,gÄh®i“j³kÖmnwo¹pìqÅrŸrýs[srµqÀpÇo†nTmkÍj‹iPhfûe“cöaã_±]Š[ZZXñYYZ[4]^Ã`ÍbódïfŸhiœk7lþn˜oüqrds,sºsps2r0qLo`m;iúföb¹^xXqQüJBy:1L(—G³ óÄ0KV  m¡ E&ž,å3 8ê>}DjI¸N R°VÒZ^£aödêf×h¬jkêmnnËo’ptpŠpKonên=m›lÒkÏjöjQj/j:j]j/iöiÞi÷j%jSjNjRjxj×k5k¼loC½H\LÈPùU¹Yû]Þ` cegÎj6l_m“n£n×onÇn¥nGmØmEl¬l5kÄk¼kélOll¼lémmSmym„mqmmmamLm:m0m6m(mPm”n&nÇoupp…pÚpäpæpÆp¯p¡p°p¦ppoºnÌm²ljrhÊg4fe d©d5dŒe fEg¢ijjkYllÇmªn…o@oÖp”pýq_pùpeomëk¹i/eTar\ÊX§SMM\Eë>a6r.è'wwbÎ l}z,[ÿZ… ­ U ¶¸Æpø#6(‚-Ã2ì82=A”EçJ¶OQSÎWTZS\ß`cfgÞiYiÍjYjwj¿j°jjiûi¸iiRiHiSi°j$j®kkmkÁkïl!llkÎkykj j(i~ih¬hìiQj'jûkÔl‹m"m¼nPnòoƒppkp ptpjoÙomÉlnkiÂhÃg®gfof gh)iSjnk6k¶lNlÙmtmînNnˆoon¡mQljh"dðaR\£X9SDN˜HÏB^:ú3Ñ,¶%¹J  ŠÊš©¨Ztí^ȨC 2 …E9"ì'¸,í26×;U?õD’I~MÉQzT‚WÖ[^¡acc¹d¸e|e­fMf´fÔf¿fËfðg!g[gwg®hhˆi i~iéjjAj!ji•ihrgÔgfeTd³d¿dìeºf•g«h•ij˜k¼lênooápšpïqbq:pÜoßnám±lšk‰jFivhÝii†jek5kØlBlqlÀlùmm8m‚mmµlÝki=g’düb]°YSªNéIÈD†>B7z0T)¦#R¾ËÍ QLÒô‚œ³ƒ'\¯™([GŸž Ï V^3"»'‰,I0Õ59V=þBbFoIÓMP;S×VùYì[}\w\´]ˆ^E^Î_"_r_Þ`„a,a¤añb>b‘ccmcÖcãcÊcObãb?a›`Ê_ö_]ë]\k\l\~]6^_%`a?bd%eÁgdhøjdkÚlýn3n®nín]mÑlÓkÛj¾inh›h)hvhÆiRiÅjj^jrjŽjmj*iÔiåiƒhîg dêaë_¤\`XjS:NHÇCé>¸9$2ô,£&v ¨Dpp Ä“€¬žÈ€ÆzÿÁ QÿòÿË2G#lb˜ ° Á3Ïdœ!Y&;*ž.œ2¦6©:ò>ñB­EÑHüK»NËPéRhS TTÎU•VEVáW®X¶Yé[[û\¯\ý]Z]y]À]†][ý[YáXÒW©VnU$S´R²QäQìRRÑS¯TïUîWXXù[]F_—aÔdfRhVjhk§l®l¦lŠk¼jòiñhÛh*gÓgôgïh h)hNhvhzh€h2gÕg fuec``ª]ýZŒWjSNH>C,>&9 3z-ˆ'•!õáÎ11 S*÷µ…S‡Øoÿ£ÿêCÿâÿÉ0Þ×,WPZ )!›ËÉp Õ$¾(%+o/I3N7_:®=q?†BD(EäFöHHëIÜJÊK§L¯MÐO>PåRTSƒTTmTXT‚TSJI¿HFD•B·@¾>¾<Í:ª9-7õ7Ò7Ä8‰9@:{;€=A?GB"DõH>KsNøR±VQZ\£^Û_–`5_õ_ò_m^®]Æ] \ž\)\\P\œ\Ñ\Š\@[Y°WxUMR³PjM]J Eˆ@i:Æ5–0à,«( "8ld§% 8 «ËQÿ{lÿðŸ»}ÿîÿ®ÿ®4ÿÈÿiÿ )k§®R’C\³ ˜3³}°< ò$ì(€*À,a-#.0/y12Ë4E5}6¾7Ã8¤9…:”;Ð=)>E?E??÷?t>Ë=[;÷:8=6(42 /Ì.',Ã,o,1,È-J.g/_1,3668÷}9h4.õ*¢&³"ŠÍ,6b ÷ EÿNk­”ÿïÿÇ-¤}ÿâ2ÿ½ÿvÿÕ5ÿõÿÿPÿ|ÿí8ÿâÿ¥ÿæÍÉØ2P2 k ÿ@V _[×Í"##¨$0%O&ü(¨*],-R.‡/a0:0ë1«2\3&3«434 3¯2Ž1r/Ì.(,,*,(%¾#ø"y"!§"""‡#–$‡&[(h+[.C1»5#8ý=A"E>GýJ!J²KQKG>¨???!>ø>z>+>Q>â?g?Á@&?È?+=š;ë9Ù7ï6 4â2Î0+¼&ö"d$Æ¸ê ³V¤0L«xÒÕÄ¥ ÿÌÿõU„eÿ·ÿóRÿ¸ÿ–ÿ¹1ÿ¿ÿRÿ}ÿïB&ÿuÿÿc:Îød‹Í9¨x L ª ~ Sb®!‚Ü9’$É@³sðƨZ@ívœµœ¦ƒ:ÑT4Gú­Þü›#±6; $#i&õ*c-Ù01Ö2M2Ì2ù3r3à4"4_4Ø515_5)54k32,0à/X-û,&*X'o#åÎ é„Ø ØÎMÅp†±¡)YɪBÿØÿÂ*”xÿÓÿË3 ÿ³ÿŽÿíEÿµÿzÿ¡8–/ÿœÿgÿÖÃg v70W‚4:1ê ƒ £ > m Î |D|ÆHð$øCÀ45,+P Š ±  — s E S N ¤ å í 8Ymô\(<M"\$t&&Á'm'ö(Ù)¹*‚*ç+B+*Ì*4)Ó)@(…'“&Ý%Á$œ"{ú¶Xg3WF i ‹(Ç(âë $£¹MÒ+ÿëlKÿåÿé&ÿç7LÿéÿŽÿ½I"ÿ¤ÿaÿËVtÿ€ÿFÿà¨ø”ÿ¦ÿ-ÿœòg0 JÆ×'(ÛgÉ5Ñy ~ » ü , » ´ V q { L ($?¥ø^ÝÖ¾¼§Òõ·ªEÏ Ì µ%êÇ‹€áÏ¢À– 7 6 ¤@öçljÑ5¹á@‚ý… D ˆ  3¦'¿×›åf›$k:žv ˆ*ÿê&kEÿÎ(j8ÿàÿºÿÙ7`ÿùÿƒÿ{ÿÚc”ÿ~ÿwîRÐÿÕÿ ÿ:X´q öÿïÿ§lbŽnèJnŠÒD ñÅŠ¾Ð3{rà HÂR)üæÝÆã“2=7œýó : ¥î‹Ô~F=¶Ýtª‘Ñ;kyª¾Ó|   ‹  øC ¸ë}É¥³9¬†ø€P¾V$)užTÿÞ"tŒUÿîÿµÿüRCÿõÿ•ÿŽÿ•ÿ‡ÊŒÿƒþ»þ°ÿ‡¡5éÿæÿþ¯þËÿu@Øøô»”™°}êA8œ9¼6½OÿåÿÔÿ¹ÿœÿvÿVÿ0ÿ6ÿMÿ¡ÿîtùѨö‚/Â Ô ¢  ˜    ã è º ž Á  “ ú ¦ _ Ûýûz˜­»î2ÿ‹ÿ¿¯7AÓp¤-¤¯D¸–¶ÐÃo)0jž™J%[ª¯AÿÎÿÀM[ÿñÿ”ÿ·*›¥&ÿ ÿ†ÿÿÕEîÿþáÿ§éɾ!!ÿjÿmÿÚ»wÚÄqí^ÿó7ƒä2[pN   þã°wF,`€»üpä”b: ‡Ùå K‚¦ëOÏg®æTsE„¸XÃ…dñÿçÿŒ$ðu2–J„%·Çbù¼çð”?)YšqEA/=“¾~ ÿ¶ÿ·\(ÿÌÿ ÿÐMª•%ÿ«ÿš¾$ÑÿæÿþÚÿˆŒ`§:ÿÿ:ÿž©÷Ôdÿîÿ€ÿ(ÿÿ ÿDÿ‘ÿòBr‰“¶Þ  ÛŸg?BZ|ƒ‚„™½ñ#Jnun]GZ…çOÅ>áÇÔê/[úwO–ÿ®ÿÿ@ÿÖ˜çgUšË’#þMSðvA[·›g^Z?,\‰‘Tÿçÿ¢ÿÅ6ÿÓÿ­ÿáI¬¬?ÿÄÿÿæ­.1ÿ9þÜÿ?PUµm“ÿíÿ®ÿÁ2ÏûõõLj4ÿÚÿ±ÿ³ÿê9WvŸÍ/꼡©¿ÚæßοÉÌ»”fG7IL€ÏHÎ'a@²0ª#BÓ°Vyÿ’ÿHÿ¬‰/CÛ@ÿî1á“ȇ?@y;Ækf˜©¢†q„^Q8Ec~"ÿÉÿµÿè(FÿÖÿÅÿú]žŽ4ÿÇÿ·'Ä,ï2ÿoÿÿQ,—UßO ,f‚’³ºµƒ;ÿþÿâÿìÿéÿþIpÕ)'èÔÐÍÏ×ͱŠa$ÿÔÿwÿRÿ]ÿ¨ÿá!d›ÝèØ‡4ÿÓÿ]ÿ7ÿCÿÀgæ'Ëÿ}ÿ;ÿ¨h5ÒY5¹G™ŠD2I†šgýžs…«”rn‚¤FTPILr~YÿØÿÐ?H!ÿîÿÛÿþH–£_ ÿç$µ’ÿÍÿ\ÿs*õ|ž=à‡ZT9:Kv§¿¼˜~_6%*IYv¡Îú ïãÕÀ±´³ „|i?ÿÖÿØ qÎ!ñ¼<ÿüÿßÿ¼ÿïbçS9Ãÿ›ÿ®/äY=½4gÛEkO/'X¥wÁŽŒ”–hJd“«,DTTSmxm<ÿóÿÎÿí*B60o™t7&[´ô{ÿæÿÿ°9ûŠ z¬l810PyŸ·´´šqJ7>?Vx£ÉÞèåêæÙÇÀ³œ€kV5 #RÈѾ‰gFÿÿÿãÿønâü…ÿöÿ±ÿÅOôWUèvAbÈ99'2R„™QÆ¥Ÿ‘‚]Sw § 8RbehadOÿìÿê 1@A96:[œÂ¶|9.uÈè­2ÿÚÿÎ=Ù[’Zº‚jNNUo‰¡¼½©‚aQK]t‘§¶ÄÏÜâèßϵ¡}qabp…“’ŒqF+-GQat™×üÍAÿËÿ—ÿï„k>Ý}j¢ß òù"^Š™xT%éÇ¥}h^mˆ–Œ3L^e^SPjl;ÿêÿýBQJ@<B`޳ɲyNSˆÏæ¸]QÜMmZÃŽa[b€˜®ÈÌĨŠwq|‚œ®ÃÐÑËÖÔ¼Ÿ”˜œŸ˜“‘‚jVE*)?k‡¤Îê ë¥;ÿÅÿ­ÿì~DIº”¢ÔîùùDq„ƒ]3 ùèÈœiONeuwoE[`^QDEcpR!ÿÿÿÿDMD@EXmnw ¿Æ¤dFh¯ìä’8O® 4볋›ºÈÌÓÏǶ¤››££¥«·ÊÒÆ¶½À¨“‘¤»Å½Ÿ„iNA9BFa»ÛçÿîÆs ÿÐÿÁ”!ôͲ»×ãßÇÃãLdo`V@% üç”fPKW[ZY5JRXRB:J[_Gÿø4XcQ;F`jvŒž³¦sHAqÀìØ‡3$r½îÿæÍ¾Éáïñòäη¥¢§³º»³°½ÊÈÀÄñ£¥³ÄĶ’kOBE;=?d¦ë! Êf ÿÐÿç×öମÈßàÒÂÉç:N_XJ1üÑucX\_]Y)8LTOB;@Y]3ÿûMq`<6Ie||uƒŒˆsMCfžÐÈ‹8ÿý<”Ðéòíý úصžž¬ÀȺ©ª·ÃÊËĽ¹ºº¸ª™|VCL_XRPr¶÷&×u ÿçÿúL—¿½™€‚¡ÅÏĵ±¾Üò.HN>%"$$ á°”‡reeaR%>Sd_H9RgZ3ÿúVl_D3Cg|…Љ’rYOgÀ»ƒ9 Dz»ôBG=! ëɲ©œ¡ºËª››¨¶³¬±¸½¹±¡™ˆcKNb_g­ëÂl ÿí?‰ª›{dwŸ¸½´¥Ÿ¨·Óî ->F530 ắ©ŠgWI- -Feo_HJVeY#ÿü-bz_71Ow—›•˜™ŠfSb‹·½b1*4uÅ^lZ-"ýÞÆµ›”¥º»«˜“Ÿž›¢ª¯¬¥››“w`\kq‡°ÔòÞ®e P‘{WGb¡ÓЪ”Ž¡ªÄíCK<üù0$üÜÅÁµŽ]>' +G_ohO;JYG*DnrZEAVx––’odl†¥jH*G…ëR„„TC*ÛÂ´šŽŽœ¦¨ ˜œ¤©ª¨¤£ž—Žˆlem‡Ÿ´ÎɯP7/InˆƒjWXgŒ¼Ñ¾˜Žƒ†‘ºù*;( +% ñïíệO)ÿú  6`pO&&?UW;$.NnxfKCW}œœŠ„ˆ–™ƒgXc€™…ZMa±i„g[9 Þ¶¡”‡ˆ“¡§¨©¬·º¯•“Šzmep„ ¼Á¼–^6+Kt–¨’];L‚¬ÃÏ¿©•—›‚yÆ,&öþ5)êßééÍ—d9 ÿþ 4MC,'2BMI=6>VmqfTWx ²¬Ÿ‘”—{gcpˆ›Š{uç3ZX`K)üÚ’›žŸœ©® ‡ŠŽŒ}u}“¨²¶¥lE<S|•“ˆkA<f¤ÅÉÏø§™|†­ä ëÞÔȬ„X5 ÿÿÿù ,54-'-EWN?>Nhztm}›¹Ã¹žŒ†Œ’Š{lm|•¦¬£§Éù0JK>øØ¿²¨£›•’ŒŒ•›“ˆ‡Ž–š‘Œ—¥®¤t]Y\s˜¨–mNDBa’¾ËÄÎÒλœŠ‡§Ø "%öØÈÂÀ®„R0  ÿýÿùÿóÿÿ ÿû&22))D\YI>CZu}}‰Ÿ°¸®œŠ†‰ˆuoq‚™¬¯³Åâû.9<(îꫤ—‘’Ž“™™—”–Ÿ¦¥™’ŒhYUdu‰Ÿœ`S^hƒ¤ÂØÞèáϵš•ŸÄñ ç¿¡–’„e6  ÿýÿôÿô &542?PYWLFJ]w‰‹ƒƒŒ «¦“„|{€}rp{“§½Òäõ%,!÷ÚÀ­¤—’‘•”•—¥ª§¤®´µ¤Šo_[TZj}ŠŠ†{lgq…œ­ÅæøüæÇ­¤±»Ðì òÍŸ}kaW>" ÿþÿúÿÿ  #/8@GTYRI?Lq˜«¢‘‚…“œ›”‡}{„}y{‹³ÆÚï')óàÐÁ³ ’ˆ‡†‹” ¬°³ÁÆÁ§€`QX\hxƒ…|zz|z†œ¼ßøØÁ»Æ×ÔÑßñü躌bC0 ÿõÿÿÿú ÿþÿü*"):=?MWXO@Ef‘°°€qw†˜ž•„wyƒ„…‡›­ÀØò %,(øåÛ×ÎÀ®œ‰‚€‰Œ”©´¾Ìʽžzb[gpz€~vqw‚zpwÐø ýäËÅÏÝàκ¼ÉÚÒ°|W<$ÿõÿêÿñ ÿúÿõÿøá¦ë65j }ŒB4QEÖl– mO=aDÚZ¢ës/ûž hÄ5ÕxF,ºB À M î É ® ¹ Ê Ï ¿ Q  ó ï ð  % 7 4    å ä ý C ‘ Ó  Ù — a h ’ ï 7 ˆ Õ0m÷„D7’ËM}œ³ÔóKÒfíùži=òÝlɵŒjxÐ3® ÿ u ó æ ïÙFLc±?ï§sE$&ÝXc”\ïE¼Gú¸É_¾=ÍN«î2 •  ± m e v t A ß z - ø ÷ ö  3 M ^ N .  ë ã × â þ  ' $ + +   7 q ­ Ñ ë Å x # ð ø  E J Q i ¢ Ý / y Ý @ ÔšK¸ò?˜ôhÚgò§|KoŸŽŒ±nàâ¶ÜÞž†’µæè_ Ä\K*OYT@ÑrÁ. èý¯ß̲¸Çª¿ ˜” l Ö [ î £ K  í ç ï è ¼ x ;   " 0 < 8 2  Þ ª † € v ” É  / F g } „ Ž ² Ñ â Î ¶ v  Ó µ Ö  , )   + 4 P n ­ è P â ` ´ Ø - ™CìµqJ@,‚õºÒèÞNqQX}ÊôÓ‘iˆ»çHŸâñ¿ŸR${š#§öKÍ©P–VÃ|iU ¨ % é ™ E Ö y 8 "  þ Ü µ — ‚ n \ E 6 / 4 9 ? J B /  Ø Ÿ [ %üþÿ , j ³ ç  = ` w … § ° £ m 7 ó ¡ x q ¢ Û   ô Ð µ ª Ã Ø  w É ç á Ù  I × f  ¤OåŒ+Æœ}Ô‡oÙ|qôˆRÅß….öèáE*Õ º~ê\.ÔÜã­ufœßâËÉØ Ü  P Ô X  × Ã ¬ ± É Ë ª _  × ¨ š † – µ æ  - 0  ì ½ † Z =    # 1 P w ¦ Ì ò $ I [ ^ u { x M  Î y B & = W w † … d B ) ( " H ’ â   þ ñ û = Œ ü U Ì c  |¶Éá€y[ô¶;2ZYQ2Jù_.òšlçUކlÒN<OŠgQ—8ü  f ï ª ; Ó ~ 4 Í ‹ c ~ « á  ü §  ¤ T    $ W ” Ç Ñ Å œ † h ? õæÙÞèôöóïóú  3 L M H V n Œ ~ H ØÀÑè   & 5 9 9 1 & $  > ‚ ×  5 ;  ÿ  ' 5 o Ñ J Ž ò k N7¡L“™lâ‡ý[ŠâãºQYŠO«·pZ¹÷W‚'õ°z1¿o 9 w ¿ ‚ v v  ± e F # 0 X ‡   Ž z 6 × y 9 &   ! !    ôèïùþéÊ’W뿌a6%/@PQYo™Ìñþöìÿ/~Ñ   ôû     4 V n ½ á ó ä Í ³ ¨ þ n   Ê ô p ý XàX“ gF´BíI‚Q©w$Â[ÙR uq‡yÓ¯š— n „ Á j  "  ´ 7 ç ã ÷ 3 u  U î – K ëÔÉ´™‡_!Ý¢Šz’¶ß ýÓeïqºi5ñåéäååúLƒµÒñbÒbùWuY71BJ^w–²ÉËè 1 ‰ Ë à ã Ê § ³ ý _ — ª ¢ ½ ñ • R i‹¨¤gÁz6žU‘®¢z“Û[nFJXl „ ¬ ·  ž „ V J P E ÿ Å Ä ì    É z = / ? Q '×<‘ùŒXõ×ßì6PqJýmÙZúѨ™†yiS1 3b‘½Ùûqß6É=UZ-í×HÃF§Úå  * X † À Ï ± … w ™ Ï ) D d ¶  ¶ s I²(œ3ûÒ©r ‘±µªØþÖaÃw ‹ Ï $ ‡ Ù p A ;  É Œ d ; B v ž › Lßt%'YµU¶¬™É;+>N\hil[RÀIÔ‹`n}“Ÿ”€[3ý+F_ky‚²ïk 4ƒ»Ÿl0þ'u&ï¤*OZD@i  1 øù , Œ Ø  _ š Ð  g Ò J · ü A ™$½x8ãlãu+ … 2 & C + í › _ z c Ò ‰ ? ê Î Û à ¯ Qñ²•£»¬ký—S6*½W§ÞOúà+u¤¨k/âœb2 Ò¡q`_vŠ”“}_B1-%&+8DMQUVn‡Ó3¶;¡üôµ|v|ñŽoZübR! 8¼LÆ  " 5 J p °  A _ W < L •  } Ñ 4 a ½ : Ünú` Í o b e u X 8 3 = p > ‡ ± G 8   " Ökü£t\2ñ›Køë¡V’ëTåeÓ;N/¹JØt9/BTSJ, â»­³ÇËËÎÕÝæëñû 'H„Ä^¬ŒpDRwá¹b‹o=:·{nA¨Ë­°à ; – Ë Ã ” ‚ © % » 4 q c J A Y ®    @   î Ú Ð ä  ' 6 Ü $v<N6ûÆ…¤,ÎŒ; õáÁeòPžÍËÄÓÔÙèîô͉.߬€}{šÂñ1?&É’_-  2I]s“¥¨™ŒˆœÅ Užê$ÿ²†Žù€ pš›Ë4!«Õú`¸ 3 2 ý % Œ [ o u X : 6 \ Š m – ž „ B  5 n › } 8¢ók6+ìšT ÎuûzƇˆ¿Ó¡L¬6L ojJí–@󑈅¥ÇöDm…™†[&ã§vH*ÿáÿÔÿÙÿù7Uy®ÖïãÓ«xXDn«ƒßE9á;š_lø•HMSÈ¢·–‡»T»{šx_  t Ï   ë ¤ ‰ { Tõ í¶Ñ ÅJŽÜLä›/Ô“b4Ø?¯QIQv«ŠaÓ«¸}¦#¶]&8rªÛþ&-,ùÛ¼†FÿÃÿ›ÿ}ÿsÿkÿ`ÿAÿ+ÿ'ÿ@ÿXÿ€ÿŸÿÔn³ÇѤiÿÛÿÂÿ¼ÿïoúd¤eù^ÿÍÿ¢ÿ¹<¼5u± —'Î| yÁj Š¥¤âVà H ’ t 1ʉkfTfH0#FI%¨h·kô‚M2$±'ɾ Pwƒ<·_aÓZ¶Þ~ôE°{iÄ'«)y¬«·ª˜zaE)éØnD.#)1+ðÜÙÚèè5~Éú"ïGê™[ÿÿÿðž<ŸÐa§ÿäÿXÿyÿì¨3mlWaÊk2Ó8j°Un³‚]“wN ϼé}zlE(ä’˜÷C†ÁI è¡LòðD²Ù»ŽgD‚ °/G5Õƒ6öÛÂÍ×2jµé%\ˆ´ÊÔÐÔÙáääßßÖË«L$èÄbCRp¤ÕìùÒ¤IüxÁÿyÿeÿ!Úÿ‡ÿFÿ’ÜÑ™ˆ·b;`“‰kÑ0ž÷Ff„n2E!:5$Ü…°Mö„êP½Š–ÒàÌš‘µ4ß`yZX«+ùØ‚îøþ÷!>K ¢‡B%qºEÒ|+Ä S Ÿ Ñ Û õ  > d … ‰ ‡ h J  ì ¶ ‡ O Ä`íx*òîõýöÄŽ'Ö(LÄÄÿþ g£¯m²ÿÝÿnÿ~¢êËs(h*!±ëP©g°ò7ŠÞBoZ8]Mng¿Mì6ÙdËÒû.&§cV,Ãx"  þ ° b ã k »  Ü 7 F f : T -   7Þ,U::@Si}|oQ9 èÁ€Bã€ö[ ½ 1 Á d ø n Ä  yùQ’d…:ŠŽÓõ\ÿ™ÿÿÿOÿ×/4ÿÜÿ·ä4HŒä=xŸ½ Œù"2θ|<Æq<DV«Ýh7xÃùè · ™ » yª¢‡}¸ä‚åvéÐ’’¸ãb¸f—¢Ô²s¡¨`/ $ÿúõ­g®.˜â7‰õ-7ÿÄœ º Û ® P •ÎdB?@ŒkÄÞ$ÿÊ~Õœ7WËU¦ËôVyu\BiÌOµÞÜ…ššaêÜÕÈ‚u›Dÿ™\@ºˆ r GTÔn¿Ûï,¹’+†õ E¼(%ÿ.Žì•ì2 g!c"(##Á$M$X$C#ï#¥#‰#š#Ü$$>$6$$$'$I$F$ #¼#X"â"~"!‘! › /ìJpïRqµkµÔÝ ö 0 tßÕöÍ› %%ˆjž‡Hÿåÿ½ÿÝXÞ=[@DD@3 W×j³—«Mç_ÆÝÿ<5‹(d²-@ ¼ ¡)ßCjÇSV5“ ‡!Ý#%¡'Ö)}*Ã++E*Ù*s)º(Ý(F'à(A(Ú)ë*ë+Ë,z,ü-ª.)..š..P.-ï.!.˜/ /R/c/O/X/r/ª/±//.Š-è-X,Ò,B+Ö+{+M+V+*‚)'n% "ë ‡6ÔHûäGÙTP ? ; ’“_•=¸š“AšŠ‹ß?>õµ‰Ž~…šæn»¹ÃÛòp 0Yâ2_D   ®ÜŸí)ä,î!ç#É%ß't(w)N*|,J.]0¢2à4e5–5Ü665ö5²54(3u2ó3.3ž4’5y6]77º89D9ß::N:09ì9Ñ::‡;;_;‘;¤;Ì<C?‘@¨AA…AmA?@„?‘>±=ý>>a?_@YAyBiC[DE|FZFÅG(GFÕFšF¯GGqGÒHHTH”HðI†IÞJI€HßGÈFÇEDEBûA²@Ç@&?®?'><Ý:ý986ò4³1Í.+&'Ñ%J#-!Ý ž5M"nI_P•^ Ó ‰ ·%Ò²‹ùy,ª=ÿÚÿÅÿçÿé.FÕ²Ú)PŒ¸âñõœþºw"Ì&q*I-ê1%4p79{;<Ÿ=´>¹@A·CÌEÑGºI«K L5L­MAM.ML6K/J;IoI‰IëK"L\MÆNøP QR S”SñTITS°SJS6S~SÀTTaT®TíU^V!V»WVÆVHUHTlSHRP«O;MòLëKñJæIlGÁEµCÐA¯?§= :6»3f0”. ,M*Å)\'¡%˜#q!s»Pb2;0 Á à ƒR¬G•ê…ÿäÿ‹ÿ}ÿ¦ÿ•ÿ‰ÿ•ÿ·ÿä 0ØÝ6f›Î #!·$4'**,-«1F58Ú"<':\8—6ª4“2‘0Y.X+„("$ò: ¶V Ú OlI±CÎå?ÿ»ÿ”ÿs5 2Å0ñ/*.)--*-j.³/ã1Ø3Å6v9]<¦?›BÌF)IêNQ T©VZW°X·Zx\=]¡^¬_®`Çbce ffâg g*fêf¬fqf;f^f£gHgâh±i©jnjëkk7kDkUkRkkk=j²j.iûj5j|jÝkkNkykîlÀmm÷mÜmªm.lÕl^kîk9jLiUh¢hgjfdecMa`_^\¤ZðX¿VaSîQºO¹MÆK·IRGE1C•Aî?ö=Ã;68ý603/ *Ú&"÷³BµÀ[˜ œ h]CÕ%˜??<é;9M8O7D7\7½9$:TZA*D"GRJ MP„TXXk[–^_9`Ca%b°d,e+eàf¶gÀhújBkƒlUmmmlØl»lÎlêmIm¿nPn¾o7oäpfp©pšp“pzpmphp‡pkoïono0oYo–oöp2pnpq qÍrrôrçrÉr\rq‰q!pronmÅmbÌaœ`%^T\6Z3XYV½US5PÁN"JæGÑD*@J< 7Ù3Ð0,U(N$> 8¥i[Þy . ŒO–S+PèO(MbLwKžKáLJMœNÂPªRÛUlW¸Yý\^¦aÊdÝgiGjÙk¦l|lømmón+nooèp¹qvr.r‘r×rÆr r‡r¨rôs s`s¸ttZt«u1u¦uçuïvvvvv1v(uÕu_utótûu5uau‘užuâvqww¦wÓwéww/v…uöus÷r¼q¥pÓpo“on‰móm•mnmnm\ml´l kSj|iíhñg—e³c×aþ`_^Ç]I[-X½U|RRNžJäFÇB—>`:]6l2k.J)ì%Ö"=ÓÿO Ú QÏ[·YÄX=V²UìUEUU¼VÀWÄYv[Y]m_(`ébÆdügiÙk®lÛnJŠF£BÅ>Ý;872Œ-c("#%˜m6l‘l%kÿlkùk×kk—kül®mm¡nVoOpPqKr)rás±tDtÒtêt·twt–têuuJuˆuÜvE8ç3D-Ÿ(Œnçnon3n>n`nuñuÎuìvv4vQvsvvÐww8w"vçvÍv¿vªv v¡v§v¦všv”vnv0uÝuu]u tÐt›t¦tÎuuju€ulu t´t@sÊs^rþr¸rar;r3r\rvr§rÓssksét˜u+u‚uuubu4tÞt’t"s•sr²rhr&q™q oÊnl;jßi“h:fEda/^W[)XT¼Q“M¯IDU>»8Ö3ƒpŽp5p%pRpƒp^p(pppq]qq+q\q‰qkqJqTq˜qÐrRPˆNÙMþM6MšNNO¿PÙRMS¤UÞX[÷_ebÍeéhÆkÇnq…sêv.w´y/z zñ{_{Ç{Ý| {ç{§{ zey¤yxfwdvSu|tÖtMsŒr”q.pn/l pàqÕrùs×tLt tÁtúuGu©vvyv¨v”v†võw7w-v^u«sþro=loi+eáb”_j\qYOVšT)R.PN-LYJþI¿HæG´GKGÁ>±?àACAEMHRKcO“T Y ^bÐgwktoyrxuTw xÇytyòy¿yèyexãwtÙq5m‚hðd¥_ªZ:T¢OJ¼GD°B3@R> <·;¶‚? @÷BD,F›JcNjRþW3[i_´dh‘l•pps&u¡wxÍyºz‚zªzÐzÄ{zêzey‡xýxOwrv[u>t=sxr·q¼p­oÀnØmüno6p~qxq÷rUrsr©rêsKs•s·s¯s¡s®t't7sÞr“q¥oWl{h7d_UZ´V*Q¦M£I˜F}C½A¹?`=;Ë:©9Ž8Á7‘7%78M9‹;Å=Û@ßCÜH LˆQîWM\Âb%fýkÙo¦sVu¨wïx×yy^yŽxáx2uôslo8jée™`“ZÖTžNWH CS?X=:É96Å5J4&4ˆ5C6Ö8 9r:¡<œ>ÙBiF>JÛO,SÍXŒ]‚b¥gRk×o2rPt[v¤wñyy-y2xþyJyWxôx,w vôv:uIt>s9riq§p¼oÎnçn2m¢lªmÐopp‹pñqqFq‚qðr@rLr4r=r\rÉr§r!pojl±iIdP_„Z/TÙOªJ†F'AÚ>±;Ê9»7[5¤403P2U1„0S/Ù/Á0å2 4.619";ö@$D¯JPeVŸ\·bUg÷l“q!t6w7x•yÄy®yìxõwúu;rDmuh{b]\†VOH7A>;ò7V4Õ2r1.õ-®, ,ð-‹/0]1þ3f5x7¨; >¸CSG°L¤QÂWH\ôb;gXkMoqžtwv&w—wÏwÈwrw½wáwšvåvQu tÿt1s4r6qipºoño8npmÿmÈk\lkmžnˆo ozo¨oÐpp{pØpàpÕqq^q¿qhpÖomšjSfW`¿[lU‘O—IÜD>?¯;G875S3p1Q/ÿ.ö.m-®,ú,+˜+ƒ,c-2.Ô0h2æ518û=(C I!OëV\¿bühWm·q§u€w€yGyeyÀx˜wptnqDl5fñ`uZ:S_L=E$=ë8530 -V+û*()1(U(’(ö*++H,Ô.80,258>{9›4æ1Ù.ÿ-q+¸*ä*E*)¦)>(²((…) )d*M+@-.°1ï5Œ;XAŠHëPW]ÿdjLo s¹vMx‘xÐyBxvÔs¹psk/e³^ôXvQ^JBº;Y5p/ô,ª)£(&&O%…$å%2%w&C&ó()*¡,.‹14ß8™=šB×I O_U®[Õaf.jn2pÁss–sÊscssÍsÔsqrÙr1qçq—pùp=o›o&n¿n}n mün>iiÌjÅk±l^låmm4mVmµnnnMo oÙp?o®oQm[k>fÈaÃ[T·MÞFÒ@B9Ú4ö0:-f*Ò)À((7'ì'ñ'Æ'©'Ž'š'½'î'Þ((w)¥*Œ-/ñ5:;BuI°QXb_ eÕk7p†s‘v5v©wOv@uQr‚o…jœe†_1YRSKHD<=(7X1è.S*à(Û&™%$Ï$ù%%Q%x%â&R'G(*)î+Á.Þ1ú6«;ŸAëHZOU¨[†a@eÖjm¶pxqMqÉqyq²qÝrqÏq>p¥pˆpypo‡nün™nYnInnn€h~híi°jŽkJkÈköl$lQl¢lømmanloFo£nìn£liîdÇ_?XQI¯B-;t4ð0;+°);'&_%£%¤%˜%¸%­%±%Õ&&4&1%é%Ç%Ï&Š&ö(ë+/Ò5#ý#ð#ä$N$«%×&ÿ)q+Ü04¹;A HÇO½V&\ja¤g#ján5oZp oÚp p&pmpVoÁo*o'oLo&nÂnFmímÎmímÑnn™hÈhðivj:jõk[kkÅll4lolŠmn*nÿoQnfmôkdh*bR\\TÝM^E¦=ç7Q0ù,¼(·&Ï%$«$?$g$x$”$„$€$ª$Ý%$ð$§$$€%%W&ä(•,œ1/7È>:E–LÿTn\bUhfloVpfq²qQpñnòlëieeÏa\OV°PäJ½D>ö9¤5g1.-ñ*ˆ(P&e%$Î$ƒ$#ä#˜#œ#—$>$â&¤(>+½/¥5±<CZJxQFWé]µcÝhKlCmÖonÕnúnòo%'ª*È0l6s=ìE0LtS‡Yñ`ÀeÑj`lTmâmÈmÝm¬mõn m•mmm^mˆmyml×lòmdm›nnÅjiÛj j kIk…k•kël"lkñllÌmønªnûm˜loh¡cú\÷VKN‹F…>Ž6£0]*b&ô#ò"ù!Ì!°!œ!ø"?"k"b"K"j"‰""k"!!ù!õ"^"Œ#Ÿ$§'—*û0y5ÿ<ÓC¼JëRX^^¤c"gTitk†kñlYk«kIiËh'eañ]~YS‹MÐGäB?=)8!3¿/+Ÿ(^&¸%T% $¨$‡$8#×#L#"õ#“#Ä%©'ý-29Ó@þHOÏV§]ácthkmm/mOlùm2mOlÿlªl¬lém&m1lÛl¦lÜmnmÅnUo j¾j^jbjÌkRkfkdk¾kúk¼k•kÇl†m³nZnÀm4k­g>aþZ|SoKC?;:3E-4'{$!ù!n • ¤ ¿!1!‡!¿!Î!Ñ" "1"="!ž!V!E!¦!Ú"À#u%Õ(°-œ2¦8ô?9EÉLg÷ij jjŠjiWgKeFaÄ^>YSfLøFäAC;×6ù1·-|)r'K%¤%Z$×$œ$>#È#"§"c"®"w#Ê%)ù.û6= D¥LS>ZË`ÞfŠi‘l1l—lÔl`l‰l¥lol;lHlŒlÝlþl²llâm™n n²ovk¡kjækkBkk kek­kck2kll:mknnlãjûf`^X—QBI,@Å8Á0Á*Ý%v"ä ® \¿÷ : Ã!,!|!²!ä"D"Š"¹"†" !£!ˆ!â""Ó#P%N'Ó,C0Ö6l;ÐAnFòL€RfWª\«`5c“eˆgkhkiÆj+jZi4h=ebò^XQQSJ·D|>Ÿ9W3™.Õ*)'™%Ë%‰$á$$#‡"Ô"[""H!ý#$G(-,ª3o:$A¹IPtX^}d¡hGkŠlYlÓlVlxl‘lxlmlŽlÛmƒ6r.V(#u!GEr + Ã!>!Ÿ!ò"m"Ì#)#"¢"$!þ"7"D"È#$¼&ð*ß.æ3¸8F= A¹F¹LQKV7Z=^3a1dfBhÅj=kpk#kigb\\ÈUeNQGl@ý;45/Ø*›'®%Â%”$Þ$b#Í#1"i!Þ!‰!š!4!á"%ë)è0{7>ÚF\MÞU–\@bÑg jællÅlBlfl‰l“l²lðmKmÅmèm~m*mgnn˜oHpmÅlâl2k—k5j¦j‚jØk4jÕj›jíkâm2mÓnhl_i·cÙ]ŸUMëE±= 5,æ'7"h ‡žg~÷º f û!p!Ü"t"û#ƒ#–#H"Û"È"û"ó#Y#™%4'U+.½36÷; ?CžH†MlQðU÷Z]Ëad¥h j4kùllej¸idb^èW\P H½AÝ;º5S0*§' %ª%†$Û$]#±"ø"&!–!8!8 Ó!M!¦$n'ð.C4Ë<«DAKâS¡ZyaXfj}lml™lÊlûm/mumÅnn¦n¾n7m¯m¼nPn³o[oÿnÜmÃlÆk¹jòjiójIj¿jlj@j¤k§mm£n?l ibº\8T LKD;z3v+L%Ì!VØ+ ÎC¤@Ó e Ù!d","ç##±#{#-#E#–#›#ô$.%«'¦+.­2¦6!9¢=%AMFJÙO"SW5[S_©c•g j)l+lcm kÖjyeù`ŽXáQ}IöBÊmÚkhdaö[bSjBpG&KðOõSƒW6[!_|c“g±j'k÷kþl­klj e„`X`QI’Bf;ù5a0$*Ú'ó%ä%§%$·#ø#"J!¸!D! ° á ¾"±%@*Ð0Ð8¥@0HPWX^Ád^iãlrmüm¢mên&nªo+ovo pp$o{n´ntn¿nìo}oþp³oYmálj‰i/hãi(iÆi˜i…iåjÔl5lÑmikgÇaGZ³R¢JùBë:|2´*Ñ%š!` ’xàSŸø %  !‰"#$#^#o#–$$Ï%6%ð&‰(x+ .ò2ò6Ç9É<™?­C©HfMPíTWq[_Zcg¯j3lkòl‹k1i¼e$_šWÕP^HâAÃ;}4ÿ/î*î(=&;%í%m%$7#A"p!è!u!? Í Õ ~"$()U/6ê>lFeN\UÔ]bcNi@l6nm¿nn\oo³pppŽpoàonÉoo7oÆpBq/oÉn1l,jphïhhÀiWi)ii[j3k‰l,lÀjƒgma6ZâS K“C¨;\3¨+é&¨"9 ›óߺ"R—ß , H ´!“"#3#‚#°$$“%}&)'T(U*Ï.26õ:×=Õ@zCƒGaKóPTSÀVrYJ\}`6b.®)$ !¯|œæVœ  `!"#2$$¤$ã%=%É'(~*Ó,Þ0†5 :²@DEG¾JKM%P-SÉVëY5Zë\á_YbEe^h—j†kìkdk?hÕf `žZÛSzLDÇ=ö852-Ç* (b&Ï&P%¾%9$R#^"Œ"!·!”!A!% !"ˆ&Á,3ì;mClK0RŒZ`jg j»lúlÃm m9mþnÈooRpppo oµpNp¿qr”D‚IXMxPBSU¯Xé[s]^#_tamcñf¼i–kl kj¸hdÎ^ñXÞQiIòBÅ;ü6g0‚,—)`("&¾&/%‘% $>#k"¢"&!Ô!º!s!U Ë!"\&X+u3D:ËBØJ˜QäYZ_¬faj!l_llJljm0n nhn»o¤p=po¨oØpƒqqÖr¬pÚoYm£k~iœh gsg-g@fÆf~fogh3ii×h²gHc"^vWËQ‘J@Bs:2È,©&ã#– ““b‘œõ_ 2!""6#:$$f%0&Y(ª*û.q1©6<#BÄIONÉS£VÇY¾[ó^ß`ébb‹cJdªf—hËkllBj±iÅf²b÷\¿VTNÈGJ@O9©4g.î+}(»'µ&g%º%$q#±"ú"@!×!ž! !r!h ó!Ä"¦&¨+¿3„;CJÖRYa_‰fi¨k´kFk^k{lCm/m‘mön÷o·o±oxoÀpop÷qÊr°pom€koi–hglgfâf.ç(º$å!t )è¿fiCq»p /!"""í#f$ž&U)^,=0S4R9ð@;GbNvTkYÞ]Z`‡b„e&f²g~g‡gåh©iÃkl¯m l­jzhÎe"`ëZŽT LœE*>\7å2ù-ò*å(k'i&%5$[#«"Ò"!f! !!P!R!h!!è"ã&ý,,3ú;‹CŠK*R:Y}_†eëiPk)j—j–j±kylmlËm7nFo)oQoCo§p^pðqÇr»p1nìm{kšiãh€gÐgRgf1e¦e[eòghhührgãdöa[ÓV@OG„?—7ì1s+&¸"Ú!7µlñÖ‘°2· v!!þ"$)&w*U-í2¿7=×D«LS‰Y«_ObÎfgÇjk;kßkÀkíl)l‚lçmÅmli¹g5bÔ^W“PòI°Ba;ì5Ö1j,ù*P( &ó%$Ž#’"¿!¾! _ J b  ã!& ÷"%#‡'þ-t5O<ãD½LBS+ZS`%f6i=jÉjjj%jækÒl'lm›nnÛnóolp!p±qur[oÕnÇmŒkçjXihjgÞgefpeÃe\eÚfÇgÉh’h8gûeŸbÐ]‘XOQ;IÊAâ:H3®-(V$ " b Ÿ;*;¢  ™!!Ë"7$4&ú+ª05µ;EBIBPäX^Úd‚gÆjÄl.nnÐoHonðn®nxn&nOmekãh‘ey`‹[:T\M^F!>ð8ô3[/ˆ+³)x'ƒ&u% $"è!ò Ô #«Äæ ; P § "%#ù(Ô.6q=ýE³M%S÷[`´ftij^i‡ihi—jQk6k…kðlúmÿnmn§o8oëpuqqëopn“m’l6jßiÆih‚gôfóf6eÇf,fígÁhUhgæeúc«^õZSPL+De<ç6@/™*³&#”!y ÿ j d   c ®! !`""e$“'ž,ï2!8…>¬E¬MT¨\…b¬hjÏmYnSo²p8p¡pXp oyonƒn8lµj³fÝc6]ºWÏP‰I0B:ø5z0[-)Ý(&~%$|#u"[!a M´cŽ™ÒÖ c °"Ì%C*–0“8h?öG‘NõUœ\†aËg iBj-iBi!i^jjÒk!k•l›mŸnn[nòo–pp‚q#onHmklJk$j"ichÇh(gf[eìfGfïg¡hg´g°f'dN`&[ÌUVNƒFà?z8Í2E-:(&%"u!¦ Þ Þ ” ‡ ƒ ´ Þ!3!Y""c$Ê(-ï3Ø:ûA»IP¤XK``f„k·npp–q~qÃrqÉq%p7oÊon{lgiÜe\aZÜTCL©E>"7O25-h*’'Ð&%H$£#¾"Ú!ä! ˆEhW†Ž g!#Å&Ú,Ž2®:hBI˜PúWm^bãg ifiþihâi/i¾jujÃkClHmKmÈn n¤o6oŽoÞp\nžmòm7a0–+¼'\%X#Ž#%"Ž"F!Ú!Q § o ÚÞ­+¯!¨#ª'È,;2¶9E@òHÙPVWd\ìbžf7i›jdjNi;iiqi¨jj†kDlUm8m™m¬nninmnRnrmŠmpm8lùlik­jÒj&iˆh²h-gÜh+hÈiRi[ii$h he¿c^LYqSLIES>ã9%3'.8)e&C#N"!$! • V C |!Š"$Å(L.¨5K=5D¹L5SžZ£bUhlÔn¶p…p·q pæqpñp‚o½ovnrmwjLf•`?Y“Q¡IùB~;4’-Î)$þ#d"!á!r!6 í ÜBÔ­rŒuL <"ç%°*/¨6ƒ=qE2M5Tx[0`%eVh[k kYkiüiÒjj jTjÉkšl”mNm—m‘mån mêmŸm‘lµmm!mMml’kÉk j‚iÎimi)irjj“jj@jlj,i÷h,eöa¿]ŸWºQOJ:C«=7D1Ë,M(_$ž"à!£! Ð _×ñ -!_" $Ê(D.„5=D¾LYS«ZcaÍgKkÒm©ozoÒpUpDp_poÈo$nómÆl’hØdm]fV'NFV?7³1`*å&›"í!¬ “ › Q . ¶ i ä"J ˜#æ'm-2Ó:A{I^QvXy^écih8j¿lÀllkjïkjÕjék[l&lçm_m‡mum±mÂmŽm+mj"k%kälÅmmll kzjújÅj–jÛkqkølkÔlkêkëj†h´ea‚\*V9OLHÐBƒ<)6`0t+á'v%"#l"ü"!T ~ c y!ª"g%-(•.›4Þ<•DOEíM½UŸ\4bPfmjÓlçnVm×m`l˜lXlBkÌkªll¨mm?mLm:m\mOm l‡l=gDi jwllômtml¿lAkøkîkÓllœm m?m*mamemŸl¤k9h e`AZÒT1MñG›AH;94é/³*£'³%p$©#k"™!‹!=!"1"ó%Í)A/&5%<†C÷KjRŒXÑ_{dDh\j'k×lim]mÙnRn8n4mXl§j^gøc]žVQO>GÚ@•9Ä2Ñ-'‚$ ÞÑþÔ£vDÞ¹äb‚ ª!Ã$(¹-¨4g; B˜JQQêY|_ženi1mn¯o‘n×nxmãmm4lƒl/lml÷m$m%m;m@mXm'lÔlk bdègMiîk•lÑlçläl‘l†lŸlžlÝm]mën8n\n§nÁonjm`j³h&cÎ^ýXíS$M G@ò:’4ö/{+è(õ'Ž%Õ$¶#V"Ã"D##¶&Š*/Ô5œ:54@/÷,H*)'Ç&-$]#"¯#N#¥&Z)Ó/¡5\;þB]HàOŸUÇ[î`Id,fghLiejOkhkØlWk7iÆf=b£]:WQJ¤D=m7F1:,y'Æ$Ñ"# ýêvœ¼ô#ñõ!J"#Š%(•,{2e8z?ƒFAM&TGZßa`fZk7m÷p€püq,pip(o¢næmülþlzl‚l½l|l kÜk—kMj—içhvgUiZp_ cÔgDjFk‚lƒl¢mmYmmán^ooåpq=qr qÓq„oàn*jÎg3bB]aWÔRrLšFm@Y:L5„1>.Z+?)&À%”$r$Ó$å'c*«0O5òà9™4t0‘,ê*v(&7#ë" bØ› ‡!K"æ$Ÿ&ð(Ó+­.È3’8»?E(KmQWe]žchxl)o«q0rsrHrC4/8?<˜A°F¢K¬P™UZ„_\d`hlmnÏqqÊrrgrYq°qoån—m^l¬kçk ifªcC`0\ XõTÚPìL|GÄ2­;&CöL¡T"[y`Áe·h²k¸mdnûoèpåqðsSt°uÿv¥wvÃv§uâus^qŸoè;9¯7Â7¨7¢9ÂUÇY°]Z_ÿb¨dXeÏf½gðhòjj–kWjeh¹e;aÌ]ÀYüV(RINnJhFêC´AL?&=:O7j4†2S0//„//0R1K3a5r8£;ì@+D™IDM—QÂUüZ:^žbÅfùjMmwoTq q§rTr7rq_p›o]mûl käj¸i7f”>>ˆ@‚BìF”I×M€Q9U'YR\ã` b&d8egh+i‰jœk¬kûlykbi§fhcI_Â\oY,UêRÂOsLIçGËEäCÌA%>C;w9U706x6 7<8 :)<ƒ@$CÚH/LP§TzX[Ä_lc!ftiÉlUnÐp9q|qØrQr"qòq"pDnçmokékiygDcC_Y¥T}NÎHùC=t7ö2 S(v1À:ßCKõRøYÝ^úc÷gMjšl³n¹p5qùsvtüuÙvƒvvvqu÷u…tÀsôrörQpôoClJie#a™]îZ8V?QìNJ/GñFEýEæG¢IÈLúOÈRÖUãY1\Û`bØd–f2gLhiÊkClmm{m®múläkWhœfc`S]ZûXoUÄSNPûNòMJùHpEµC@ð>Ö>"=Ò>ò?³AáDHcLOîS¶W0Zw]„`ÈcÙfÔidln pq8r)rKrr9qñpóoÏnl:j/hÏfRc^XèR±L†Eÿ?{993,-’'¥ž(¨1‘:cBÿJ—R.XA^ bef´i¤l]nGp‚rMt!u.vvv4uåu–ut¬t4ts:r6oûmuj$g c¹`m\ïYDU¼QÿO{M\M*M NžPuS!UpWëZd]!`2bøemghliRjKkEl…mšnnåo/nJmjÕhÃf„dcb_`p^~\fZLXLV`T˜R~PMHJHnFIEE0FbGPIÈLßPÂT&W\Z¤]š`jbêe‹gäj#ln,oÝqŽrqsrúsrªriqHoÐmyk?h˜fŠc^ÂXˆRvK[D<²5/(¥"û!ˆ ¢(¸19@‹H'N¹U Z_.c f¢iQlEn¨qr§sôt]tÔtÅt¨t`tQÆTÆX"ZÚ]K`bŠdÕfÁhÁjƒl2mÇo™q!r˜s@s¦s\sJr¸rXp×nÕk­hÆe3b]ZWñPØIîB<:@2+|%^Ìx k±Ó 'Ö/$6V=çDìK–QCW[ã`ud gÅjÊmüp(rrÎs¢sÌsäsÍsâttntktCs(qÌo¼mäk«i;f¶dlbQ_ô^\T[»[Z\5]:^È` agbÁdNfg¸iXj¶l mnnÖoÏp³qœrr‹rOqçqpBo\nml{ki²hfˆdÀb÷`¾^E[¯YW6ULTâTâVgWØZ(\Ÿ_)aCc3e‰gŽi&jWkÀmnOoŽqr_s‹sôt#s·s‘rÚrOpZmÉiÓf?a»]_WqPûIAM90_(!ÉžÄ á á°ÈŽ%¸,2ì9À@HF@LKQ©Vú[t_Öc€gnjim#n¤pp§q.quqñrzs/s|s¤råqãpNo mkk~imgŠeüdlcPb(a­aAa±b_c|dYe:fgh(iUjnkl˜m¥nªo p§q‡rfrçs]s]sHrér¤r6qÒqpQo2n#lÛk¢jhkfRda³_q]á\E\\8]¢^í`£b@cèexghüjˆk‘lHmVnsompnq¶r²sxs~sprÇr]q+p mTjeca[‹UþOGû?Ú7¤/Z&ìÉ^oä Ï*Eû vxUl!ó'ÿ.“5;OAwG>M4RvWb[—`$cõg³j(lLm_nyoLpfqirorùs{s"rqGpIom¢l"j§i€hpgçgtgag gCg£hLh×iPi¯jj„kk¶lqm,nnàoÓpÖqÃr©s:s·s×sösÞsÐsœsjs r«rq¢pâpnçm«kýjh5fee%càcŸcµd›eSfSgKhnijÖlmmÈnSo)pp·qirzs,s€srÍqåq'oTmgiÎeñ`[mTøN?Fm>·6t-Û%³ºzË ¡Ãzá`A ÜêtI#ÿ)ï0!5ý;³A±G;LgPÿU×Z7^»befÆhŒjkÝm|nþoØp®p¯pƒo´nömþmlk j&iHhúhói@iBidi³j'j–ják kk#kIk‚kÐl l[l«mÕ s 1¶pÖ$ÿ*¥0M61;åAjFwK€P4UAYo]+_­bdf•hók%lqmƒmËn6nmímilölmkäkZj­jZjTj®jãk2k’kíl>l]lslOlkÙk¸k”kXkj¾j¶jÝktllÓmkmúnšo4o´p?pâqŸrqssžs­s¯s-rµq·p~omñm l"k–kjûjêkWkòl¸mGmÀnDnÌoaoçpXp¶q=q…qØqYpƒnÞm£krhöeaM\/WP–IÄAò:-2X*Ã#quä= ¨áa ;hûNcç]º Ž äiÎZ ‚%Ó+0j5Ý;@DÏIÇN!RCUaX1Z£]›`nc;ef™gGhBhËi3i)ihßhÈhˆh gœgVgsg hhiiYivii€iKhâh™hgwfže¢dûdŽdÑe)eìfŽgnhei„j‚kªlþnhoÓpåqÙr:r›rgr9qjpaomùm lkgjÂj²jÌkcl l¢lämm€nnrn¶nÞnêoJo2nÝmŠl#iÝgÛd¶a-\{XR±M F<>ï7"/¶(±!­.+Ò pùKœù‡QfÎA7… ß ÈtŠ /%*i/Ú59×>‚B°GJ½N.QTWZV]_Z`°bbåcÆd>d¬dÖeee dÃdudGd*dldÝegeÎeôfeëe¹e?dádca¹`K_G^†^•^°_g`a(bndeughöjçlÎn]oÝpÄq¡qÔr qpðoÛnÓm¾l˜k×k=kRk—l%l•lÉlÆl³læmm,mm5mm#lWk#hÿg7dza]LX¾SiN¸I%C ;¹4,„%Mµç èÚ©7+$…“_P˜ˆøøtAÈ· *‹k› 1%;*_/3^7:þ>±BvEÄH»KNÆQÍT¥V•XHY>Z[[[Ä\ \z\œ\Ñ\Ì\§\b\\\b\ì]^]]›]Z].\¼\[[jZ)X‹VêUÄTßTÑTÃUgUûW;X£Z\'^%`XbÁeg;i_jþlŠmfnMngncm›l´k‡jWi i2iliÀj#jGj,jièiíiÁiRh¶hvgág,ecˆ`È^…[BW{R‹MªH_C˜=ÿ7®0Ž)~"óç–¾ åD‚7Qü‚}¾qÿ¶ÿþ;ÿâÿ§ÿð±"ÄÝ  Ú]éEJ$F(˜,/N2›6£:”=ý@ÃC“F3I#K¡MæOHPŒQ+QáRAR—RÉSSLS…S‘SrS\S|SÄTT0TS©SaRÚReQUOìNLFJïIÕIªI‡J4JÐL)M¡O¢QjS¼VTYX\I_aódWf­hcj:kk¸k>j”i†hŸhgÓgòhh%hg¸g‰gTgBfÐf!dêcãbB`v]õ[“XzUuQML˜GEB‘=ž8”2›+ü%:°uî í4 ˜¡wÆ_ÿ—ÿÝ1 ÿÈÿ¡ÿÞHý(4Ö e 4”Ñô ï"]%'©+J/B2þ5í8W:K<¼?!A•CND©E7EäF2F{FšF»FñGTG³GéGÿH#HEHˆHŒHZGÕGtFÐF9E CA­?¿>F=<¸<„=(=¸?@]BSDFŠIZLÑP8S¡VõYò\ñ_dbcˆd¤dgdc'b‹b$a×a½a aˆa]a0a!`ò`Ø`_]<[ZXÚVbS„PðM‰I±Dê@;572•-J'7!x“›D ’ÁJ^©™;^©±9ÿ£ÿ°ÿëÿÞÿeÿ,ÿŠMì‚\ˆõ  ²†¾‹4f (#'~+-Ñ/œ1d35E7K9 :;;_;¹;±;;w;;ñ<`<ê=n=Î>6>6>=}=<>;e9ê856#42\0ã0a/ø0p0Ï1ü3C5B79ª<®@‚DJH+KëOeRòUöY&[\ˆ\\c[”ZêZ>YŸYIYYY&YFY†YiYUX"VySÍQ8NxL1IyF’Bd=†8P3ß/Û,'x! †#n Š6ɪƌÿÛÿ¦ÿø|¡eÿþÿëÿ¯ÿ±1ÿÎÿ{ÿ¼?r“‡,¸¸ø6 ¡ õ›juÔ #¸%À'8(A)á+®-€.é0%0µ1F1@10¶0d0t0¼1m2)2Ó3e3…3Ž3$2Ù21#/Œ-Ç+¨)'Â&6%‘$þ%C%n&q'—)ˆ+=-à0Ý4²8~6:á6?1E,š)%â""[¯‡  [%z¦j“KÿÎÿº$‘lÿÓ,ÿ»ÿwÿÑ0ÿøÿ—ÿÿ¶Sÿõÿ¯ÿÞ¯œ•ÜÇ|;  œOÅ­1#ËØ ; H!›#$x%‘&Œ&Û'&»&D%Î%}%³&$&å'”((S(6(5'¡&ÿ%‹#Û!®v¤^ºèþîâ #*&)è-²1¤5w9<Ÿ?—B¡DYEºE§EzD™CµCBÆCCzDDtDD”CÙCA'>ùÿëÿŠÿÀ§¯åü*t¡.  & Ý úù¹ÙVò*j‚$LjÞ%¼¥’{šÌ‹I>é†*”0G ¸<ŸJ ¸$!'­+%.U1’4/6Ü8Z9‹9w9?87ó7Í8 8¾9_9Á:9²9[8N7'5g3›1œ0-ë+:']#þÑZ¹ D‰"J°|ÑÔϽ?ÿãÿýKlJÿëÿ«ÿæTÿ·ÿ•ÿ»:ÿ×ÿsÿ–ÿúO9ÿˆÿÿr?ÉÑ'ÿü´ƒ€Ž¨n f Œ<‘½<í¦b+›ê¨:šàËø FrYFœ°Q õ Ë Ã F Î ê ü ® h Ô.]ÉÔÌÚÚ"¬%Ž'þ*€, -<-s-ž-‹-«..Š.ø/8/.Ñ.;-ª,È+ÿ*»)m']%I"GØ3Ô@Y\v ‡#¹cÉÅN|êÓs ÿëB™o ÿÊÿÆ'8 ÿ·ÿ—ÿøT/ÿÒÿÿ«B£9ÿŸÿiÿÏ®:Ôÿ‹«x}‚ߤ\0 ƒ +  î ã  „  ‘ ) r – = Ä ' « g 8 / "  í Ž LŸjÂÒà^ÖÝä £ “Qºyæf û">"Ê#d#Ï$q$á%?%!$Ù$F#Ï#["û""X!t Tù@ñ± :Ö > QlìÄÊû¬È,`éH 3…«Rÿéÿë"ÿï:Lÿèÿ‘ÿÂ'_<ÿ¸ÿkÿÕb|!ÿ…ÿFÿ΄ÐdÿdþÈÿ :KN³åÆk~- øâ=Ÿ CLü§9Ü‘Lç´s:ùÁ“pz…Æû‡2v3Ý Ç ¹ÊßÛê~Þ£tØKM+½Oåý4 ÓX‰ % ð ßq0ûþâ¾Øh«:„P·1@•³Ž)ÿé%lBÿÏ(f2ÿÚÿ·ÿßHx ÿ‹ÿ„ÿäi”ÿ~ÿgÿêÌ;ÇÿÔÿÿ!2ŠKèØÿÆÿpûëoc[ü‚¾×¦ ^w9ö—Eþ¶‹gl†¡š‚vvu‡’Çô‚,G[Å@ç ‡  ¦à ªDM=Ô_ Þ}þ˜„6¯ ¡ P ij§­àŠÔŽ[üµºLà •hšÔ¦Pl™OÿÞ"t‰Sÿïÿ½ hUÿÿÿ¡ÿœ‘ƒÿ‡ÿr Æ"³ÿ®þàþØÿ³Ðh*ÿþ¤þ¶ÿt¢å–ÿÿ3þýÿ&ÿlÿÓ$GV1 ÿØÿÿÿwÿœÿÏÿõÿûÿàÿÎÿ·ÿœÿŒÿÿÿ–ÿÖ(¿LçÝÔ²Š¢Ëã°o8D„ø€Ô #·ð¢Fh!MpÙ„Öÿ[ÿÿs‚&·V—0±½RÄ¥ÆâÒt"&a•’D&]¬±GÿÚÿÓ^fÿþÿ£ÿÃ/›Ÿÿ‘ÿwÿùÛPôÿÿÿ þíÿ­æÐÆ ÿõÿAÿPÿ·‰>™¿k•ÿþÿÿnÿ¤ÿä?»ÔÅ®ž¥Àßêß¶f:(#?WŠÅP™è<›Ü ï³l>S±<¹M(æ9M³… ê\(ÿŽÿS ß\y(d¶ÍgÿÄò&þŸD(W˜˜j?=+:»€ÿÄÿÆe0ÿÕÿ©ÿÖM¡„ÿšÿ‘Ê(Îÿðÿ+þïÿ“žqšïÿÿDÿ°9Ó6;9æ| ÿ°ÿ‘ÿyÿ¡ÿÜ$Tiv…§ÒïÂ’jag‚š©­¤¡—ŠuhDÿÈÿyÿNÿ2ÿ[ÿ”ÿød´òÝ»QÿÉÿZþóÿ5ÿñ؇f»ÿÐÿ2ÿTÿó·ÚS<éЛ) \bÿFZ޶—b[T9&SŽXÿðÿ¬ÿÏ8ÿÖÿ±ÿà?š˜(ÿ´ÿÿò¯&DÿNþëÿS^I”RŠÿèÿ¬ÿÄ;”Úè©Pÿîÿ»ÿµÿäÿü5\ˆºö-öй½ÆÛõøâ»¨“wP'ÿþÿËÿ­ÿŽÿ±ÿögÛ$R*ú•&ÿÇÿaÿmÿ¸c=”Vƒÿ®ÿhÿÅ—ATÚ.ÿÞ)ӃĒMP–NÙ{n˜¦Ÿƒo…_R9C^Œƒ)ÿÐÿ¾ÿð+DÿÙÿÂÿðO{%ÿÊÿÅ-½*ø>ÿ|ÿ%ÿŽI|HÕK $G‡´Òõöðºjÿüÿûÿèÿò ;a‘Ï))ùéáÓÑæë̘|\2ÿÿÿÁÿ™ÿ|ÿ“ÿ³ÿþU¥éçÎy%ÿÍÿgÿJÿRÿ¿QÊÍ,ÿ›ÿhÿÕŠ$Nì_ &°7†„N>S–°{ ±ˆ“°•sm¥J[WKKu‡aÿâÿÛ@J$ÿêÿÒÿõ@Š˜cÿñ"² ˜ÿÝÿkÿoÜk‹.Þ•oocn‚¦ÒáÖ¨…\% -?d˜ÏþøäįºÃ¯Šu`F- U æÓ’Pÿé†÷M(°ÿ£ÿÁJüeAÌJZË8U8%-`”³‰.ËŸ¡¤jJc’«%ASPNo‚wCÿüÿØÿô.I<ÿúÿý)dž@*`» ù‰ÿöÿ‚ÿ¤+ò}“u »‚\`d£½ÌÁ·’[,$(Gs¦ÒêýýùäÎÌÄ©€Z@+,.E\±ÍÓ¶›sE' #Mž 0ÿéÿªÿÈ^ jað‡Vg»0),YŒŸ›aÉ®­™WOr¦,JWZfjoVÿóÿï(:C</+-Q™Æ»D<~Íóº6ÿÓÿÉ>ÖU[Ê{yyˆšª¼²’dB97Qo“¯ÄÚéõö÷ëßÅ©‡_I=Ni€ƒtk\@04HNZf‰ÊöÌ8ÿºÿƒÿâ‚%zNìŠ{±àýîð[“¢^1 êÍ®}]Qe€‘‹-I^_SOUrsAÿíÿÿ!FRF606Y¶Ë²~XYŠÔëµQÿüM×IoeÞ®‡‚…›­¼Íȶ“q`\m{Ž µÑáâ×Ü×Á¥•Ž„ƒ…ŽžœY?4'2Lr‰¡Æåú·Dÿ¾ÿšÿ×sOWÈ¡®Üíñóý5jˆŠd;ýìÒ¨mHF`osoJch^LAIivX$ÿÿÿÿDLA7:Nip| »Å§gFi®ãÔƒ0J­C. Ó¯­¼ÖàÜÜÐÀ©‘……’˜¡©·ÐÛл»¹¤’­¹Á¶¨ˆ];%3Fq¡Éäíþåš+ÿßÿºú%Ü¿ÇàêãŽÞ=Pca]G+ñÒ¥pPIWYWZ7LVZRFCTceKÿü 7ZaI1=\l{Ÿ¶¬yLEs¼ãÎ/$xÉíÜäøüõß瑎”¤°µ±±ÃÓÒÇÆÂ´ª©°µ´°‚bH9%,<o°í !Ôz#ÿÜÿâ kÈò⳨¹ÓèæÕÁÃß ';U[R8#á«|bUY\[Y$6KVULGJ`a7 QoY4.Efƒ|‹•‘{UJhœÍň6ÿþ C æ ! ïÅŸˆ‹¡¸Ä»®´ÄÐÕÒËÉÇø§“†vYDCK>>Iv·ð  Öuÿåÿî8®²”€…©ÑÚ˼¶¾Öçú  DUG+%%*í·–„k^`_R%:ObbN@VgY3ÿÿ RdX>1Ej‹’‘™“x]Nb–ºµ;M×7YVF&Û´™™µÊݦ¨³½·¯¶½¾´£“”ŽpSKSIWz³ó  Îv&ÿó>ƒ¢”s_v£ÄË¿ª£¬·Îå 6F= 6:íÀ±¨…bUK0(<[kaMMT_S"ÿþ*ZqY63Qy™Ÿ”˜™šŠ`HV‚®¸ m<4FŽã4v}f4%ò̲¥ŽŒ¢»¾°¡˜š¡™ §ª¥›•¢¥Žp_b`{®ßñÄy/)c“žV@]¡Üà» ’“¥«Áè;E= ý6. çÊõŠY>+  %DbvpU>JXJ0<biXFCUu™˜Ž”’}g[g€˜¨™vU=_¢k–YC%öɯ£Œ…‹¨«©¤£¦ª¬­¨¥œŒ€‚ƒtgew‹¨ÍÔÀX:-Ht”qTN[†½ÙË¥™—Š‹’¸õ&3"/(øóìݶI&ÿùÿÿ $@lzX.-F]`B%&BcsfN@P{ ž‰ˆŽ˜”~fT^¢©“md|Ë1yŽiX2ü˯¥“Š‚ˆ’¢¯µ±®»Ã»¨Ÿ•ƒsgc^ft‹§´¼ i8";dލ•`6=ožÀÒÆ³ ¢¤ŠÃ'øð&;,ìáêæÆŽZ1ÿø :SH0*5GSN?27OitlVSy¦´¨Ÿ”‘Ž„va^q¥§™‹²ú@c^bGêȶ£™Ž™¥«£¬¶§Š‰‚{tw’ ¦ªŸuN>Mt“œ•uH<]˜¾ËÔÊõ¤”~†ªß # îåÝϯR0ÿúÿó ÿü .52+&.FVL;9Ll‚xn‚¢¼À·†{Šumtƒ›±¼¶º×$8PJ4 è͵ª£¡˜”˜›’Œ˜ ”ƒ‰Œ‘•œ¨¯±¢Šq``cwš­¥ƒcSMh’»ËÊÔØÜ̦‰ƒ¤Ôýû #ûÙÊÈͽ‘Y2ÿøÿóÿðÿü )33**BWSC7>Zx~{Ž¡°»²›„„|vvw‡¤¾ÆÊ×í172ýßÁ­¢ •‘˜ ˜‘š£Ÿ–“”•š ¢ –Œ{aRPbu‰žœ†j\cl…Ÿ»ÕâîçÝÅ ’Æô ùòȤššr>  ÿüÿöÿôÿÿÿòÿõ ,984=HOMB>F\sƒˆ…†¦³ª“‚zv|ƒ…zw‡§Â×çñú  þäȱ¤ –”›¤Ÿš ©°°¬¦¥¤§ž‡kYRFK^xˆˆ‚tdal‚Œ—¢¸ßûìÒ¹©¯½Ùõ÷öéЫ‡of_G)ÿþ ÿþÿúÿüÿ÷ ÿüÿú&2;@CLOJD<Jm’¨£’‡•š–ƒxv…€†›²ÉÙæô öäÔȽ²Ÿ“”Ž’›¥­±²º½¿¬ˆdPPLYoƒŠ„~yy}~ƒˆš´Öþ ßËÅÊÖרâíúóÝ´ŽiG/ÿóÿùÿ÷ ÿúÿü !,#+<@@IPROAFcŒ¯²ž~nrŽ–~r{‹›©½Ïáö !%éÚÕÕÏÁ®œŒ‡‰Œ•œ¦¯¹ÆÉÆ®Œm[^an}…{~ˆ•˜ˆ|žÌõìÒÍ×ááϼ¸ÀÑͪwV?# ÿóÿíÿø!$ ÿûÿöÿûߥî@As~ D2L?Ñg’œjM<`DÙY¢êq2¤jÆ6ÕzI*¼K Æ O ñ Î ² ¼ Ï Õ Á ‹ R ø ñ ó ' 7 5  ü á æ  E ’ Ô  ã £ j k ” ò < ×.Œlù‹M;•Ô#R„¢±ÎñNÒaêõ—c;íÙl˸m|Ö:µ } ÷ ç ñÖFQl ¸‘Bó­yJ%!ÕQ`“]ðEºDö|´Æ_ÁAÖW°î2 —  ² q k x t H ë † 5 þ ú  9 U c O 1 ì ß Ó ß ù  " " # "  " C { ¸ Û ô Ì , ô ÷  @ I R g Ø . { ã K àH¹ùFœúmÚeõ¯€H pœ‡„¬kßã¸ßàŸ†”»ñõg ËW|M1W`W?ÓuÁ(æú¬áγ·Å§¼ —” r Ú ] ò ¨ O  í è í ä ½ ~ ?    ! / > ; 1 Þ ¯ ‰  v ” Å  - I e w … — » Õ å Ï µ v  Ù » Ù  / 0   $ * I k ¯ ò \ æ ] Ÿ ¾ ã 5  Hë°qM=$þš{í³ÊáÛQsQV{ÌûÝšnŠ»ßD¢êùÁ›Jyš"¤ñHË£I“YÇ~iT § % é ” ? Ó | = &   ß ³ ” € h V A 5 + - 2 : E > .  Ó — X ) þ - h ¯ è  > \ x ‹ « ­ e . í   } w ¨ á  &  î Ä ª ¡ Á ß " } È ì î è T Ý d ¡PÙ‚&Á—wÍ}jÚ rò…QÈã‰/òÞÔ9%Ù 'ºzæ[1ÖÚÝ¥ma–ÚâÏË× Ú N Ó Z  Õ ½ « · Ï Î ¬ b  Ö ª ž ‰ – · ê  * .  ì À ‹ [ ;     * J n › Ä î  ? W c {  { O  Î { E ' 9 S v ‹ Ž “ € _ ; ! $ ' T š ä   û  F û Y Õ h  {´ÅÞ~sSòº?4]^V5Kù`1ô˜eÙK–‘rÑL=UŽfI÷Œ2ø i í £ 5 Ð z 1 Ï c { ® ë  û ¥  ¢ U   ( ^ Î Õ Ê ¢ Š k E üêÜÞâèêèâäí  # < E K ^ w ˜ › ‡ O ܽÇÚþ  ( 9 < : 0 ! ! " K ‹ Ú " @ E )  * >  Ý P ” ù l J4¡I”ŸpãŠd‘çå»U]‰K®Â|aº÷Xƒ(ö¯s'µi 6 v à † s n  ³ d @  0 T ¢ – € 6 Ø } < )  % !     öíñøÿìÌ‘V齋`3'5EJWn˜Ìòÿøñ1{Ë    öý    & 8 V s ™ Ì í þ ë Ì ® ¯ ÿ i   Ð õ j ÷ PØX™¤fF·FñM†S®v Â`ä^)xq…u Ò°— h ƒ À i    µ = ç Ü ð / m w T õ › L öÜ˶š€SÛ †z”µÚûÏ_ër Ár< ôåçßááöBx«ÉíjÛiþ[xY5-?Jb€Ÿ´ÆÎö C ˜ Ø å Ý ¾ Ÿ ± ó O ª   µ ç Š E ^ˆ¬§f¿v4¥!W•²œ‡zœèerDJ]r ‚ £ ²  œ € W M N > þ É Â å   Ä z C 2 > U 0Ú9‘üŒUüÝáï6LoKþlØZûÒ¨˜†weM*2`º×ý!yçˆ;Í@VX&úäÔWÓM¦Ûí  8 f ¾ È ¯ ‰ s Æ & = [ ­  ª m K²(œ1ùÖ±u •¶±±æ Ú_Ày% – × ! | Ô s A 7 Î ‹ ] 7 C s ˜ › Qáp'-\·Z´¦™ÑC2)MZbnomYSÇNØŒ]gs‰–ŒwP' ú2Lcqйóm¢9†º—]"ö+†:ý§+ScQOuÆ  7 &þö ( ‰ Ô  Y ” Æ c Õ M ¸ G œ%Â;ànì} x 1 1 R 6 í – \ | j Ü  … 4 æ Ô à â µ Zô®–©»¦i“J51¿\®àQæ-yªªj/äš]/ Ó¢ra]rˆ“’zZ:'%!'.8AIOWYq‰Õ8¾G¬ê¨qt†™s^n`08·KË  ! 4 H j ¨ û : V N : Q ˜  ~ Ô  0 e Ç ? Úmú^ º f h v † b 7 - : p B Œ ´ A -   ( àvÿ¡yg6ë–Iíéª'\šö[éeÎ7K)²GÙr4.DUSO2 â·§ª¿ÈËÍÎÒÙáíû )NÓi”¨”kG[~çÅs~C6¯tl?¦Ì®¬Ö 2  » • Š ­ " ¹ 5 n ^ M L c ±  { – .    í Ü æ  & 6 Ý (x8E/ûƉ ¡'Ò—>ðã¿b÷^©"ÔÕËÖÙàîñùÓ0嵇€ Æó"6@!ÿĈQ0G]v™¬«™Ž‰¡È O•å,¸‰”“ ~ žÍ6!®ÛüZ³  , 6 "  %  ` r | d F = _ ‰ j ˆ › ‘ X . D u œ | 7£÷n3!â“OÌrôr Έ»Ö¦ V¹>M¢$qjMó KÑž’’´Óý)Pv‹¢˜†R×—c6ÿóÿßÿÝÿãÿÿ?]¹ßðÜΫvR=fžéUFé>Ÿj~ ¤ MT\Т²—'‹¸üN²~¥€b– ~ Ø % # ÷ ¯ ’ ‚ [î üÌ±à  ÀG’áMÜ%Ñ–g9Û>­VQQp¦ŠcÙ³¼¯•$¹c&,@{°à,/0% çÁ„DÿÃÿ™ÿzÿnÿ^ÿQÿ=ÿ2ÿ*ÿ=ÿVÿƒÿ£ÿÚ+z¶ÃÓ®r#ÿßÿÂÿ±ÿáv°mlÿåÿ¾ÿÌ@·.s³ Ž#Ívýh³ú_ ª¤áXã M › =Ô’tmMhVE7SLžo¿`åyQ=0 ¸+ÍÄPr{5°X]ÑU°Ü€ò>ªygÀ%ª$r§¨¯žŽt[A,ñʦƒ\D895*þáÑÎÞÝù1{ºã ï™Dã‚>ÿñÿø)«D¢Òi½ÿlÿzÿÞ–'ifLZÅ^»$X£Q o¯|\š„[ÖÂéb„ƒ€X7èŒ ™OŒ¿A  ð¥KñòJºß»‹`:wÿ¤0¼cÛɶÄÖ/b‡®ÞL}«Ä×ÛàæöúêÇ¥s:Ó¦d4 *S‘½Î¤}%ÌL´*ÿ¢ÿÿ±:Ù3EÍ(ÿ™ÿGÿ…‘ÕÇ–Š´S&íM‡mÓ2÷Nt‘v7D/C<ï”®JùŽöX¾„ÎàΔ…ª/ßawTO ëËrרØÍð"ìƒB b©1¶[ © 9 Š Å Ù ö  O € ¦ ® ² ™ | N * ö ¸ d ³;º<âŽy„œ”a4Ô|Ñù°¬ÿáÿê@ø—´v¸ÿãÿuÿ… æÏ€2h ä!X²q»ø:“îQx^9[WŠ.ÌQçŠ7álÁÃí)%'/¥`V,¾c   õ ¦ Q É L ˜ õ å ¸   ) R * ? Ø é Ü Øòסó&-R{£ …kPF-»t‹ìD ” ç \ ö Ž û J © y¿úÊYÑ_€ÿÐÿÖÿûaÈÂMÿœÿþÿÿ@ÿÂ*ÿÓÿ¦ÿýÀqô8T•åA”ŸÄœ'1;X0Ά@û¼pB3pß9œÝm4g³êÒ ” f ‚ áT}v²ÝýßkÚºsm™Æ>„À8=pWL^$ýìø?LC.$,GRKÐ`ø_ºï$Qž½­i2÷ ã Ï o ãL¥òäü~@Àï+ÿÐ …Þ¨@J¾Q®×ùS{u\HuÜ\»ÞÛÞƒè×À®wuŽ ÞÌk7’Q 3 ×  ;½y…®ÌªŒ.— [È, ò‚ß|¿ñ !!¾"°#]#è#÷#ì#¨#h#[##Ú$+$W$X$A$C$Z$†$˜$‘$E#ï#l"õ"j!Ú!@ ¯ “¹¯…¤×æñà» µ Ò +qõH^é5¡7UkÜÄöæ£0ÿòÿýjëKbBEFA6 fåp±–ŒïB…Íæö*2“:{ó x K ¼]¾¦QÉÀ¨7 F!©#g%‰'Ò)Ž*ë+6+q*ô*)»(Ô(9'Ó(0(»)·*£+t,,•-H-Ó.@.R.R.$-å-æ.0.»/9/‚/•/ƒ/’/µ/ï0/ú/•/.l-Ç-$,‚+þ+Ž+,*å*C)ƒ(&m$+!ôQ”Åò£œ%¹D Z   {]Ÿ¡øÓlY½] YœðÂôJE»Šƒ–‡Ž¨õs¸›÷¥^2œ.WqîI7Y Ú Í [n 6W `'!"Ó$â&”'Á(Í*,.,0ˆ2è45Ü6'6z6 5Ç543R2Æ2ö3T475 5ç6’7@8&8ù9­::F:?::!:;;¤;÷<<<7]?É@ùASAÇAŒA=@\?F>N=ˆ=”=Ú>Ñ?À@ÜAÊBÑDE@FJFÖGMGSG4G(GqGðHYHH¿HÒHüICI®IëJI¦I GèFÖEƒD B¿As@f?q>¡=ã<ß;¼:8e5þ3\0 ,¥)R&#²!Œ ,Û r²a“ð)dÙ µ ü sïñ*±ùt8¨0ÿ×ÿÑÿñÿû &B›×æÿ1b…†ŒdRÍ+Ûr"Œ%ü)©-(0Q368]9æ;p<½>?‘AmCšE³G¬I¾K5LmLÖM\M#LÆKÄJI~H¤HÅI,JiKM NFO“Q$R{S¢TT€TYTSÖSíT=TuT¡T·TØUUkVVVðV¼VPUIT^SQÁPANÕMvL!JÕI–H,F¬DâC@A>¢;8`51ã/0,ž*È)'Í&n$ì#!d ñrJTf›; ¿W¸ö}ÿäÿ›ÿŠÿ®ÿ¨ÿŸÿ›ÿ­ÿá"UëÕÙõ+_…¬’"$§'˜*t-·1#4Ë8x;Ö?AA­CD½F1G¹IUKLÖNPYR SúUmVšVöWgWVœUœTyS¤SSbTUlVÊXFYZÄ\1]F^/^i^^4]¼]T]5]\]s]”]Ÿ]Ã]ì^d__Í`s`…`]_¢_ ^][ÃZƒYW°V T”RÛQO*MrKyIVFÁD AO>„;×9"6Ø4¥3 1¦0l.ë-D+¦*(Å'%%"GKN`t $ IÄH?-Z£R ÿÚÿÈÿÝ,Q)€&ý$×#Ï"Ì"ò#/$m%›'•)‹,A/2g5q8¼<"?áCîG˜KM*N²O¼QoSUUVµX.Y•[\¯^p_µ`°`ßa`¶`_@^_]õ]¼^Y_`ga¬bßcäd¨eŠffšf§f¯fUeÌeVe(ePewe«e»eÝff~g7hh½hóhñhjgÿgAfxehdYcaé`–_R]Ö\=ZjX³VÁT½RfP MmJÄHEeB÷@Œ>Ÿ<â;{:8{6é5%3q1`/i,š)i%y!·8Ù•  ›“H¨BÄØBÿ¯ÿtÿb6Á3û1ˆ/p.k-_--Ò/0024 6ß9ò=I@&C(FmJ&NNQÛTÖVsW¨X³Z›\¤^<_d`|a™bûdmeëfßggˆgg"f‘eýeƒeŽeÀf{g<3:7=4V0“,(/$> ‡¿ ¾Û ¸ vjAæ-,ˆ@«=Ì;N9&877I7È9::M<3>aAoD¦GçJ…MJP™T^Xn[›^_ `a'búdÍffÒgºhÁjkEl~m.mªmmqml¬lolPlŸmm°nTnüo«p$pŒp–ppBp%pp oØoanïn¯nÏo ogooµoàpFpÞq~r r0r8qÖqpãpJoun†ml®lk†kjbith}gEfd­caaÖ`/^A\TZLXRVPT2R:P_NÖM“LJG|DõAï? ;k7k2ä.~*G&O"xD[·¸Ú/ X׸«I½FõDBgAj@{@ÜAyBñCöEÍHK)N%PôS.UžXÇ\?_°b"códÆe¹f³h'itj7jÀk’l–m²n°oœp pUp2poÙo§o£o¯ppfpóqvqûr†rïsXsmsXsrûrérçr»rUqåq’q’q¹r r1rYr~rÏsOsÔtGt`t`sûsrñrHq[pNo>nDmžmlÓlqlk“kjriÁi(hUgnf#dÁc(a¹`^F\MZMX“WFUáT8QÆO KíIEœB=Ð9d4ò0å-)% !e÷fÿ Ê 8¤ÎS>PªNfLCKEJ~KK¨M MüOºRTûW–Yã[Ì]í`Åc±fOhi€jSkMl0mEnn—nûoªp„qfrr¯rØrÝr¥r„ror[rhrqr¹ss­t8tÇuZuÍvHvhvRvußuÇuÀušuFtÞt|t_tpt²tÕtótþu2u™vv‚v¡v©vGuèu/ttsorMq0p+o…nûnÀnsnVnEnKnLntÚuv-v±w9wZwCvívºv—vˆvgv$uËukuAuGuxuu—u}u‰uÏv>v¨v×vívvOu¢tësèrÍqºpÃpoƒo6nÚnÎnÚo)o|oÐpp-p;p oÒobon]mZkÁjhegeÁd˜bå`ä^[IXUQMÖI³E”A€=¬9Ô5±1—-È*&D"/É…}*êb¹a,_­^8]›]g]ò^A^Ý_Z`laàc©e)f’gþixkl–mÒnºoÈpŠq#q„rrtrÈsszsìtptÀtìtÅt‡tFt;t>tsûsútXtÚuv,vÀwfwÙxGx>wüw~w)v÷vÝvÃvˆv8uÝu¯u¶uÝuëuØuŸu†u¥uývWv“v¹v‘vnuðuctƒsŠr’q¹q&p•pLoüppp‹qq¾rirÞs6s5s(rðr÷ršqýpÄopmþlÀk¬jÈiˆheÊcd`]ÒZÃW¥SöP KöHø9ñ4Î/¤*Ælûlˆlk¤k–k²kókÿll*lˆlçm¹nàoÿp¬qq›rLsGttst}tštÞuwuìu÷uÃuÂuÖu÷vuùuÁuxu4u utóuuu_u¬vvZv›vàvüwvðv´vZvuÔuÃuÎuÆu¿u±uÀuõv$v7v uÄuvuGuFuUuhuruIut t7s¯sr†r)qûq¼q”qhqdqpq™q®qÞrrs$sÖtmtºtütêtØt~tsrþrhqâqipýpvo÷o mÛlak.iÍhhfkd9ay^á[ÞX¶Up¨qmr^sot{u uŒuƒu„u]uQut·tGsðsÍsâsÆs[rˆq®pçp‹oñnômWk¼iâhDfQd`a‰^ˆZbV(QKÛrUr@r/qõqÔqàrr@r\r>r^rÐsœtqu u=ubuþv¦w)w)væv_vuÏu“utes{rºqÕpÐoªnml†lkµkÕkÖl(lsm6n+ojpŽqžr¤sƒtluuÃv)vˆvÂww:wlw”w¼wäxx>xjx^x-w×w—wdwFwvÖvGu”t®sÞsr_qpœoƒnbmdlfkâk|k¥kËl]lêmÏn±oëqDrºtrór›qðpÍo•nMmdl@khÖf†c _œZÿVsõtt8t+tt5t[tmtptOtwtöu±vHv©vÜw w˜wýx+wÉwHvyuÔu tCs3rp´oVm»ljLh¥gXfePd—djd,def6g†iIjþlºnjoæqXr…s¼t¢uwuûvvØw=ww½w×wówôxwÙw‚vøvƒvu²u)tsŒrqqo´nkmWlMk&iÒh^ge¤død’dûeDf/g)h»jYlNnCp3r-s±uu¾vjvÏwjwÁwðwÂww:w0w!w v…u®t¶t"sšrêqÿpðoúofnÂnl{jÒh+e«aì]»uuvuèv"v>vvv”v˜vˆviv–wwºxxAxsxªyyCy%xqw»v¬u·tpsqfoÚnli×g|eCc3a¡`_]ë]|]]‡^_S`¬b¨d±füi4kXmlo\qqs$t¯u¢vw w˜wÍwïwãwéwêxwñwŸvívJutt¸s¥rvpÔo/m9k!i gXeádocaŽ`+^—]à]¤^m^ú`4ascreœh;jÏmGo¯q¢s…tÚvvúwòx‹yy3y7yyyyx“wÅv´uëu:tsºrÅrq¦q\pøpnèmkjhˆe t¬u@uøv}vÐw,wWwhwiwpw³x:x»xæxíy*yay©yy#x*w-<¢<]<©=ä> ?Ì@äCE›ITMQRUAYP]…aÍf9jm®pnsIuew€xµyÁzz…zšzëz™yËx’w²vævu3tBscr¥qùq.ploÜo#n7o|pxq¬rªsFsºsôtBt¨u;u´v vuÊu”uêuëu|t+spùn•jägb|]õYXTçP—KøGóDCA˜>ã=;4: 8«87Ì8S8­9¸:¶<¶>ÖB%EIÞNçEA»E:ITM:QVZì_Þd`h’kõovr*tèv‘wÿxnxÕxÙyFy'xƒwavu¸utOskr‚q´qpQoµo+nŸnno!p\qXqìr\r’rÔs6sÙtZt”trtHt'ttbsÌr1pénUk]fôbˆ]SXRÓM¸I D4@8BlFèLzRHX€^¨dsªsrBqXp‚oãoYnÿn˜nInlµm°nÝoÐpdpØqqMq¬rWrás rösss„sEr¬pÛoGl'h™cŠ^’XÍRÜLùGNBq=•9×613Â1Z0 .ä.M-S,Ë,‰,Ø,ö-–.&/¨1R416ò;?cE,K?RX©^ãejor†uÍwky y>y‘x_wGtp‚jøeu^óXQÔKDv=u83b0ç.p-+\*C)(Ô) *4+(,—-ê/Þ1ê4Å7š;C>âC}HSMðSªYI^£cJhkØo¿r>txu-u§uuçuâuwt{sxr˜r q¼qp+oYnÖnŠnnIn*nk köm"n%nÓoXošoÚp:pîqqšq‘qèrCr¼rhqÜoènjofe`Ã[FTéNAG½A†,?+n*Â*„)ß)p)?)^)S)‡)š*m+`-—/¸3‹7=CÆKRYYV`4eþk½oàsëvx$xlxÑwƒvgso0i?c^\‹UíNõGÓ@Ý9‘3ö//,¢*(«&þ&%H%T%…&M&á'à(ä*„,*.ƒ0º3ö7H<A G)MRSˆY€^ÜdOhÉmSp:rËsœt2t t{t„t>sbr[qyq"pæp>ojn”n&nnMnFnTniøj¶kÈlÑm—nnVn oo¢p"p8pUpôqrq³qKoBmhÝdb^BX8QOJC9<¶7°2Ç/Œ,V*º)L)(Æ(Ï({(1((!('æ'‘'º'ý)u*á. 1‰7*=3D²LS“ZäaGg¦loq)sÅvvwvùuËtÝqÀn hSb»\GVOiHaAg:@4Ä0-k*(Ã&º%¹%%1%@%‰%“%æ&W'b(r*&+š.10ç5}:…AG~N0T¥Z›`®eÈjùnOq-rrÍr·s%s;s$r€qšpÐpžp†poBnrnn(n™nµnÞo'i;iÈj²k²lxlâm m\mÄnCn¦n¶nöoÐp™q p¨pgnLkÉfóaù[HT‘MEQ>:7„2 -æ+(A'"&9&d&‚&Á&®&‰&š&¥&˜&U%Õ%ž%ƒ&s'K)æ,¢1Ì7z>øF[NUÈ\ÏcíirnÑq¾tDt›u8t,sXpflÞg|bI\PV›PJIB¬;Ó6‡1ú/+ô)µ'>%ñ%"%0%$á$†$U$?$°%0&@&ö(Û*×/#4:üAÅHñOØVV\öbªh‹l_o‘p„qTq@q©qÔqõq™pâp;p/p>oéoMn‹n6ngnúo-okoÉi‰iÒjzkWll@lBl’lðm0mdmymånÞoµp:oªoum#j(d¤_(WýP®HÄ@À9¶2ÿ.i*'à%”$ä$e$Ê%%`%d%V%|%%«%{% $Ì$±%`%à'Û)æ.X3a:vApI$PÉX*_²eÁkœnáq¤r rðr&q‚nûlgwc^Y StMAFÑ@q;N6Ô3ž0--* (&¾&m%æ%% $¤$:$0$;$Ã$ø&A'v+&/²6‘=WD¿KÙRªY•_°fj_mãnòoàoÊp"pNp’pzpoŽožoËo²oNn¨n^n¨oTooîpZiúiÿjdk"kÂkÖk¶kúl>l3l2lKlãmònÍoUn¬nrkÒhKb\ TxL±D‚!K ½Òÿ = Þ!Z!«!×!Û!ý""&!û!ˆ!$ ÿ!K!["6"à%†(Æ.e4.;4BIP V‹]_bgfÅh¼j³jükejiÙhfVcÈaŸ^YãT=NwH¶C‹>ñ:65­0Ÿ,­)]'Þ&†&*%¥%N$Ï$N#´#k#7#°#Š%~(].(4*;¢BÓJ#Q^X_>d}hüj¾lCl2lIllOl†ll‚l°mmjm™mDm?mðooÁpkq(lÆlk­kãl*kÊkWkfk†kjõkRlem¶n®o¥n½m½i‡dp\ÁU†M+D~;ã3J,—&6"å 7Û oÐ Œ! !‰!Ù!ÿ";"W"~"I!¼!5!!>!H!õ"Y$‹'c,y1À8=âCáIçOïVy[Ó`|c!eÀfïh@hhÄhg7e”d}aÓ^~YSCLàGA¸k\jÖjµk*lgmØnßoðnémŸicœ[µTEKÁBà: 1Y*µ$“!œÞJÈ] M!!›" "G"–"»"ô"Ã",!Ž!P!t!Z!Ã!â#³&;*Ë/x4Ü9¿>ÍCûIŠOŸTùY¡\Ê`b>d˜fg³h8hŒgÎg£e c]ÖX/QOJÚDŸ>92â-ð)Y'%e%3$™$2#¨#'""H"'"…"?#§%©*›07{>¡F)MTŒ[ßafÃiXk“kÒkÿk±kèlEl‡l¼læmm—mÐmhm,m¡n‰o o°ponYm/lul!kûkRjÑjÓjøjsj[jæl;m¾nÇoÜn¼mEhvbû[S’KB'9m0™*$!Uæ§(¹V L!!½"6"}"ã#$#o#N"Ï"G"'"R"-"u"$1&¡*á/+3ß7ø<7@¸EÎKcPuTÄX[l^ka¨dUg h}i›iVi§g÷eË`É[BTM-FH?¦9–3+.)D&Ò%$é$R#å#D"¥!ý!£!b!–!>"g#í(Y-p4À;àC™K-RbYÕ_Äeehk>kÔl4k÷lPlÓmLm¢mÌmínkn˜nm£mÒnvnÇoWpo6mÑlÏlk‘j®j%jjTiÚiÚjƒkímwnvon`lÍgØbtC/H‡M…Q˜TÈX'[—_ƒc f¦h®j9j>jþi´gôc]˜V#NüG·@«:F3¢.w){&î%$à$K#Ù#"Y!š!" »  Z!D"O&'*Æ1Ú8Ì@”H7O¡W4]{c•gQj­k²lXl,l£mGmúntn¡n«o.oRn½nmún[n~nþo”oònbmkúkiþini^i§iHi_jkplïmãnõmÇl1g:aœYRI†@Û8u/Ù)r#»!6üÂC†ö w ÷!G!¤"I"Ú#8#9# "ù#N#Õ#ù$V${&(e,c0•4Ø8-;l? CHÑM¾Q›TƒWŠZá^õbçf¤h½j@j2júiÅhcF]³V"NïGª@™:<3¥.š)Ë'Z%|%,$š$"#K"^!‰ ü x Zè –!1$w(–/_6=åE‚MTÁ[aaöfOjCk®l–lwmmµno oDo4o°oÍo-nen"n^nnnòo†pªnþmŠljìi™hÿhçiEii,iÔklŽm~n‘mXk¤fŽ`ÝXàQGHä@Q8/œ)V#±!8#/™É  y Ý!!I!ç"‚"Ò"à"Û# #$B$%3%‘'T)Ô-Ø26 8î;©>ãC@HvMiQ3SøVËZ^2b]fKhj0j/jÿiÑhDc{]àV.NÔG{@p:33².Á*'¼%Û%y$ë$l#u"f!† õ d '¢  #"×&~-3¬;ŽC0JâR®Y¢`®e”jkºlÏl°mGnnÿoœo²oƒoóp ocnn4n`nooo¢qoPmÂljÇiZh»hšh÷hÀhãiej‡kòlînlÓk'f.`¤XÛQzI?@Ä8‰00)î$4!‘[R$¥× # ˆ ß ù!,!¼"Q"š"³"Á##¤$‰%/&A')`,o0Ë5=9;Ô>>A>E_JPOR¢U:WÔZ×^¶b­fvh©jGj)j·i6gebx\ÅUM FP?k9s3.d* 'é&"%´%&$#–"{!œ! ‰ F¿óÀ"%w+ò2Š:„B)IèQ½Xß`:euj%kîmlämvn-o$oµo°oioËoêoPn“nInn¹opp3q\o–málj€hýh]h2h„hEhYh½iÍk?lPmglEj²eê`•YQåIÎAc90Ë*|$¨!ÙzLúr© { á!!W!ö"–"î# ##h#å$é%Ñ'e(¾+—/J48Â<†?&AFDGÀL,PfS¨VXŠ[u_,c fÈhýj¥jjj¶hÕf¨aŠ[ÊT+L¯Eb>8º2x-ã)Ð'ì&G%Ö%F$°#¤"„!Ÿ! ‰ EÆäw!‡$¯+1·9ÊAvIEL)RWoZá^`UcefVfÿgÙi j£lZnBnÙnîlëk,g bt[¡TªLÜE$>7)1ë,Å)Õ'k&†%K$„#»#"!S ‰ ? 2 † „ ô Î#&e,Õ3H;B²J\QöXß`6½/;)¥$" ÏDŒ{8KsÛ/¯ + ï!R"á%(Ó,N15â<$BÒJ%Q•WÌ]k`ìd)fhˆjk6k´lfmmén­oÍoÒo|mje¢`rYmR[J¶C<95{0‡+Ñ)5&î%ï$ž#º"Ý"!!, p˾è o ’!1!N#Ò'‰./4Ã<‡DK¥S,Yða$fj jük_j¢j¬k kÜlplUlSmn nmn¬ooÍp…qŸrånYmrl°k¤j—iŸhëhkgàfãf e\ef-g0gøh=hÑgÖf‰b©^–WùPÛHž@È9q1ï,&‰#z Ë 0 ÍÎä6qÕ $ Ú!0#%¹*L.Ÿ489Ë@ŒG¨O6Vû]UcfPiMjÜlßno oˆppIpŠppøp_oŒl i‚d ^IVèO}GÕ@I9Â3U.É*ˆ(A&2%6#ï"ý" !F K¯Cr¼ L p!,!$b(/t6<=ÿE‰LûTz[#b4fÄjijêjîiùi×j:jÒkYk9kOl$mCmän]nóo³pqqur°n mmlùlIk~jµji‹hígÞfáfffgKgÊgðhqgÁfÚc¢`4Z*SKžD<¿5|/Œ)®%ú"®!q D »¹ºï  ] …!%!`#r&]+•0´7=JDUK±SJ[9avfÛilm9nÍoÐpÇq*q|qqq‘qXq`p:nækmg¹a¹[nS¸KùDU<à6¼0¯,š(Ñ&å%$;#"A!W ™¹Ki« - N!F!ú%^)÷148'?ÜGdN½V3\¬cygœjÌjäjini2i‰iôj^j@jrkSl†mImánoHoõpÑqòm¶mBml£lkhj´j?i˜hgsf”fvf¼gRgŒg–hg²g4d¤aß\vVvNÝG‚@I9A34,ø(Œ$ˆ"³! Ä E A ) @ G | !/!b#œ&³,m2>9h@5GŸOOW_Ae}j»m ooÄpëqªr€rÆrÀrkr‰rJrp}n¨jƒf_wXŠPƒHA 9¶3Ú.*G&í%n#õ#F"W!• Ä !n*pž  B!‚"¡&+…2ì9áAnHïP>W®]õdoh jèj®jhÐhˆhÝi$isiYi¤jkÏl§mPn n¾oZpq%mjm/m1ml¶lkXjæjLiMhOgzgMg‚gògõgÜh:hg×eØc£^ïY¸R¶KÁD=Ñ7§1/,'O$¡"6!r ª ˜ Q D ( V m!(!m#Ê&ü,ü37:×BI QqY#a\grltnip/pŠq^qÚrxr˜rSqìr4r#rpm×i cñ\ÀUjMXEm>6Ù1+y(%#þ"Ì"F!… è 9½D)%t” , –"Y$(s-Ô5@<)CKRMY—_~e~h±kj¬iåh¤hbh¸h×ii i€jvk©lwm m»nOnÅoGp)mHm\m¤mÚmžml1k½k/jGiZhƒh?hbh´hˆhSh™hŸh±g?eŒa}]V§PIBX;÷5>/…*&x#3!à ¿ › "üÌ  %!!c#õ'c-¼4\JABo;D3ï.B(Ú%ä#l"¯!´!A ¦ +™9îññ:Q  Í#%|*c07Š>}EÙMwT£[ºa)f¥iYkWj»iÇh€h>h“h‹h³hÛiŒj¢kÑl–mm­nnen¡o>lÖmgnn¥n–nm8lÄlDk„jºiêi™i¼jiÎi‡iªi¹iïhãg‰d`dZ´TµMÉG>@º9ü3æ-ß)}%Q#@!œ!@ z 'Åò !!£$m(.™5Z=cEL¬T^[cMhÕmJnÜpnp•púpîqpçp¥pfp©pgp.mÏjùe;^ñVÿOrGÊ@/9'1Ö,@'!$‹"a!Ë á gÖgׇ[‰ž_ —!Õ$Ò'ë-O3F:¶AÅIPµW^Sc:h3j~lkbjki;hùi8iiidjCk\llmmumõn3nJn8n{lm£noŒo¯oSnxnm‹líl@kukk9k}k8jÙjÎjÕk$j{izf—c°^¸YHRL2E“>Ô8d1Õ,¡'Ÿ$á"Ã"-! Šç  *!^"%(Ý/6a>‰FaNU¿\¨d!iKmYn™oìpptpmpYpo¯opoµogo*lƒi$bÒ\T$L·EZ=Ø6í/Ì*%¼#m!k Ü “ Û{\Áþ½V! "Ð&r*A0(6o=îE0L…TZ•`êe_iôkðm3lUkkj`j!j@iÖiÉj)kllÿmmänMngn`nnjôl£no”ppoFnßnpmþm€lÍlul¢lðlÃlhl?l/l}lkHhâfb<]gWQJžD2=Ë71_+Å(Z%«$¦#+"H!2 ù Þ""Ù%û)Ü0v7=?CGN¼VT] d7hül«m¨n·nÏogoœo›o5nÕnnn‚mîmsjƒf¯`+YŽRJðCç<›5á/*%‡#F!? £xð3ïõ«2k "ë%^)Ÿ.4X:ÜBJI™P­WÂ]¹c”g¥kÓmˆnxmŠlËkòk¦kjójÁkkýl½mamïn/nunZn0m£mNikvmyo„pVpŒo×oto nÌnƒmîmmÐn$n m¿mmfm¼mŒmkiLe•aW[†UãO³IµCn<¶6z0L,((Ü'a%Œ$R"µ!ú!i"v#C&•*–1,7Í?›GFNæV‰]-dhzkål¸m“m¢nIn°næn™nGm›mElkgÕc§]+VÉO¬HáB;4š.) $³"‰ ¯ (®„“ÙÚœ 7!Ö$ß'ÿ,è2 8´?‚FÙNTÉ[V`¯fiÍm‡náownymämBì<£6D1Š-Ÿ+)<'›%p$#"ý#¹$d'É+Ð2H8´@GVN™V\c0gIj’kfl0l@lêmsmémÌm™l¶kûjNhÒemaU[cUšO HÉBU;É5Ÿ/A*_%ï#ž!§ ו®°U¾kÑ ú#%X),è2O7Û>ŠEZLTS+Y3_c¼hŸkâooëpm·m!l=kÝllÎm m`mßnmòm9l›kLj_³cìgžkmmnæn·n³nƒn¼nùnØnÕo6oÅp.pYp^pMp›pˆpOnÿmµjÞgÂc%^eYTN»HÞBš<6½2&/M,|*g'³%é$=$©% (‡,”39f@…G?NUB[«aôeÔhþiØj¥j¼kakêlllalGk^j~hŸfòc¥_ÍZiU*OBIoCc=G7Y1!,5'Ú%[# !©Ê‘w~´ì !á#Š&O)>-·2^8P>DDÞK’RXm]Ñcg,k†n;pœqqp/oÍo>nŠmºl¾lXl’m,mOmJm—m}mkújøig.Xp]«bhgGj[l®m*m¯mÃnOnÏnúo0o³plq%q§qùrrFrqêpÁo‰lýjVfRb]X±SÒN–H¹B<ð7ö4~1-.»+¾)É'ç('(}+¾/—5Ã;ñB§HÈNÎUe[Lad¸g¾hªi‚iªjUjßk^kWkJjwiŸg×f6c<_á[4V“QLL#F¬A;Œ5¼0ä,”)¤&£$y!÷ ™„ú "C#½&([+Ó/n4e9“?–EkKzQ¶W”]Eaýf«j2mèpq°q»q±pòpˆoÚn÷nmll¿mlÇl.kìk$j h;fsc²`ÝQoWº]„cmgzjßl m:mŒndoo|oÞptqNrNs%sÈsòt+sãs·r°qƒo5lôi„e¾aL]YXìTANÐHõCT>: 6h3¸0™.¨,À,ô-J0U3Ï9{?YE§KFPVG[e`‚cÞfµg«hoh¢iqj+jÉjÌjÂiæigAe–bÐ_Í[¼W³SN–I¶D±?‘:e5Ë1y-ð*&'J$i#$"("ð#Ë%Ú'¥*v-V1x5»;@±F™LQˆWI\ aÅeçjlíoñqprrcrVq¼qIpzoon_mpmm lólGkj(h¢fßdag]²YÞH¹OåV±]Žb§g@i—k¢l‰mênåo¥p9pðqäst+uuxu´uRu t*spïnølhóe(a®]ªYT—O_J!E@ð=:075_3®4 4‘7q:‹?‡DÉJsO‰T&Xù]/a~djfògêhœhâiÑj±khkokcj}igÒf&cž`ö]€ZVR8NI«E/@Õ<–8<4*/ä,¹)Ï(¾'×(°)Ž+´-œ0Ã4'8Ã=eB³HM]R,VÉ[å`«e4h¹l9npàqêrÀržr¦rq”p–oonOmulâl•kºjPhfLcÀ`ñ]YTT¸Oþ?©G¸O›Wt]ŸcgfÙiëk„mŠnØoíp£qurysÃuv=vÄwv•v^u~tqr«qn¯l@i'f,b†^ÄZOU¸PáLG¨Cn@R=(;‘9þ:…;J>+A#EŽJ OS†W¡[Û_lbýeig hžiYi¶j kwl.l?lIkij_hŠfÐdŠbO_~\ŒY'UÝRRNÁJýGcCc>î:v62Ó/ê.ß-ì.¶/‰1»3 7 :ø@ E*JWOnSþX*\`©dÖh¬kon4oäq…r,rÇrµrÆrFq©p‘oZn4m}lÆljnh3dûb@^±ZÍUïQ!K½F75´>F¤OV$\àaoe¥h=k&mnÄoØpþr$stêvRwwjwvÒv u%s´rWp†nÁlbjfÍcq_k[pW,RÏN¥JwG8CýBk@îA›B“EvHeLSP*T-X[·_‡b§e”gqi:j#jëknlOmm©m±m»lákÇi÷hJfQdxb:_Î]ZNWlT›Q|NpJ¯FWAì=Ç:Õ86á5Õ6y7&9H;,>³BßHLðQ„UêY¨],`€dhgékm%oQp•qÀr2r»r¹rÄr,qmp'nÐm|l±k„jgSd_Ì[úW^RgL­GA9;D+–4=GFJN9Ué[›`õd˜hxkmœo1pÃrsžu v”whwçw’w\v¡uÜtºs¥rWq+o†mØkAhfdÍaT]’YÊU÷QöN‘K%IeGêH±I½L‹OaRáV"Yb\š_³c e¹hiRj‹kEllÞmèn¦o8onémólÍki‹gÙfDd†b¬`¡^±\ˆZbW¾U Q¨M¤ItEB±?×>=y>>Ÿ@¿BÖFžKP T‹Xk\5_TbNeh/jêmLnâpšq—rir¥s rÿrùrHqhoónylëkýjKhd1`Z°UÇPJ Cv=6³0G"j*e3ls¨t tŽt…tkt)ttsæsssqîpnXl;iåg†ekc‘b`^¼]µ^"^Ü`§bidTfg}hõjFk«lÕmòn°oaoÃppapÜq[q×rrqÈqppßpKo¼oFnënªn5m¨lkpi­gûeyb _U\YWVØUÑTéU®V‹XÚ[w^~a#cWe‚g5hñj,k&l m8nžp qUr¬sosésÑs÷s¥sƒr(pFmj,fvc#^FX¶QyJ`B“:£2ô+¥% G¥ 3xo ˆ(+/€6=ÄD4JEOU8Z^ŠbeÁhálRnÄp¼q’rŒrês3sEsŠs¿søsÖs¾råq¶o÷nulÉjÜi2gßgf e†e e\eÙg hVi°jÄk‹lQlým¸nqo'o×pŒq0qÉrOràsYsÒttJt?t1sùsÅssHrør­r&qšp®oÌn\lçj°h/eUbu`E^J]­]0^_`üce$gh‰j$kFC‚H\LÄQrU¹Yú]^`bÝegiGk!l´mnÁoo n@mŽl kªjâj6iüi¿j j‘kLk¸l2lùmªn&n=nJn#nmäm·miml¤lIl=lRl°mmmmÒnSnÞozpp£qqzr r¥sVs¦sÁsKrÜrq/pnãmËlÈlFkçkýkûlFl™m0mçnnýo;o‘oÚppTp‰pÔq~q«qjpm‹mänbnÐo5oŽoäp[p©p¶p²p÷q3qqp0nDl—jg«d`V[9VOšHÏA39Í2Q*å#‘£^ ¸ä`£Gt÷HQÎ9Š I âÙ³+"Ü'›,“1§6œ;e?ÕD[H{L¨PS)UéYC\a_Da=cde#eˆeÙe eCdñee4eeeeleÕf[fíg5g1fÿgg#gf»f\eŽd°cna÷`­_ _<^Õ__o`oa{cd§f†hdjOlLmûo™p‰qWq}q»qgpópo3nCmRl©l kýllœmmxm¬mØn1n’nõo nÚn•nÎnÃnƒm5k¶i(fÁc`_ä[gWQ˜KûE=Ø6F/>(˜!ÃGUü “ Nšõ|>M¬Xêí; ^ 3D>¢³!-&+10#4›8Ì<³ADòHwK™ORKU´X€[!\À^<^ì_»````M``Ã`Ä`Ã`Ç`ÕaaSazaTaaa`ï`{_þ_]ê\nZÌYXXWVÎVîW0XeYª[£]—_ìb?d®g,igk¡m#nuoo§o©o“nönUmƒl¡l k›k¼l llÅlÔlÌl¿lâlÿmlÓl¤lVl[k­jhef†cŠ`I[ÑWJRMmGÍA§:Z2À+l$ã±ï ýÆD2*ˆ”]@‚tãÜEn ï ê0ë ¾%Ž)ö-Á1+5 8ä<@C^F‹IñM P+RXT#UVV¬WWW\W¦WüX2XWXAXWäWñWòW»WgW?WVÑVBU¡T‚SGQÁP/NÕM¡LóLLLWM¦OQ&S9U¶X+Zâ]´`~cXeŒgthŒiÇjXjÜj´jqiÐih¯h‹hÛi@iˆi†i@ihâhÂhugÿgbfýfYeÃdLbx_¿]…Z VPèLFÕB¨A_DG>I™JìL7L®M MM>M€M×NGèFND©C6AÞA@$@*@nAÙCOEŒG±JVLñPSOVÁZ@]_“aIcCdšeÙf:fkfeµe|eeÞf+f2e÷e~e0dÛddckbba[_Í^;\YõW TCPKEu@­;Î6Ì0Õ*#\10mb ¯ —ÿôqÃ^ÿÿÒ#ÿÁÿ›ÿÖSõû•Ð —x1i0Oè"œ&)é-Ü1%3µ5Ã8i:ñ=r?@u@ÛA/A"AH<é;9Ö86Š54.3>3L3Œ4ê6V8„:=,?ÁC F™J|N[Q§TŽVÑYq[n]F^^§^}^Y^'^3^Y^{^i^2]Ê]„]\·[î[+Y¯WòU SxQNñKòH‹CÖ>¾9‚5K0Ó+%}/˜Å" > ÿ{P›‰"Nž¨2ÿ›ÿ¥ÿßÿúÿØÿ_ÿ&ÿ“ÿõÿà)«•À~ × =ðYÒï^ž"§&x)b+E-eB‰F:I™LjO“RTNU_VDV$UëUgUUUUU!UTõTT$RýQ¯O•MFJÐHóFÍD€@ß<˜7‹2ð.‰*©& +|h Ð =°‰„¹}ÿËÿ‘ÿån•\ÿûÿáÿ£ÿ¥ÿø)ÿÆÿpÿ·0TCÿö3€U_g h ¡!¤é”º!Í#`$p&'¡)Y*‹+n+¦,+ä+Š+*Þ++y,,u,Š,p,,+·+m*ƒ)X'š%í$", |ÞÖÄ›žØ ä"·%1'±+.¿2â6ë:œ>AD@F¬HòJJíJ¿JZI£I*II6I‹IÌIÎIÔIFH°G=E†C;@ù>ã=…;8ß4Ö0‚,(%!=r¸~ a Ú6>ÚKAEÿÆÿ®‰eÿÕ ÿ­ÿkÿÇ)ÿóÿ’ÿyÿª8ÿÃÿ_ÿ~<äÃ2Ž $ S q2½ž46T_=p¤Æ !S!…!ˆ! · d 5 F e š œ Æ À ¹ ( d¡Ž–[>+A·ÿY ¥$:(L,B/ä3\6=9F;{=™>‡?G?>>=í>U>ä?d?»?v?%><ó;99n7†5î442¢/ó,Z()$Ÿ!‹éMV e Î>òùw |ZŠ5ÿÞÿ³ÿÜByÿ²ÿÇCÿÙÿuÿžÿ÷ÿêÿ‹ÿlÿâYGÿîÿÿº“„«¦¶¼š¶É E N )™äqiÅh3-(—ûÑB¢­›»ø4ÐG5Æq9 A i 9  âÃH”…l–5"¾%ø)+ƒ./ö1Ì2ª3T3@333o414÷5M5k4¹3ù2—1$/|-ù,ˆ+k)µ'”$] 36ú£\ <ù@ØpL±Âȹ>ÿàÿô?aCÿèÿ©ÿâG ÿ­ÿ‹ÿ´>ÿÔÿmÿ›n\ÿ¯ÿ7ÿ”ZÞÚ.ÿälát”ÕÊL k ú ) ‹˜2Ô4‰Uò4x ç ~ o y ‹ ‡ 7 Ò  b … ±ã e·…gø¡Ó Û q †-BE «Þ"(#û%È&ñ'÷(}))s*%*¦+*Ò*o)k(a'%ð$³#–" TÖôó2E"® ¾X§TƒÂÄQêÑoÿè;eÿÉÿÉ/ÿ°ÿÿùY-ÿËÿÿ¸S±Cÿ¥ÿpÿÖ°6Õÿyÿà/¶|[Ç™;ٟʹ¥|‰Þ A  T œ ¿ T ¼÷]ÿ½“Sù—'¸Oô‘œ'ÿä?«}4X H ; •ä2ߦ eR K Ó!\!X!@ § .TtÓäáô¸ðö ¬ ï  c­NÝ¿Äù!³Ñ2_äA1¤Jÿäÿì(ÿê7LÿçÿÿÉ1a9ÿ»ÿ{ÿíz.ÿ‘ÿVÿÞ–éÿ‚þÖÿ =ÒšÑ#D~ŒþÈ”kLe—íP{x#Ôg˜1ÚƒIýúó̘n^Lk˜ö=ËZn¥Rþ Æ n Ò†I¸Úާ¬] Û¬m5©1è?Þ S =´ŒÓmŸºÏÔŠ»|Ýv¿KŒP³.<’¯Š%ÿç&oFÿÌ%g3ÿÝÿÀÿêMw ÿ™ÿ›ÿÿ€¢ÿˆÿsÿùÞKÑÿÛÿÿ5,g(ηÿÿEÿïÑÄUQBÖaö˜¡Ý]ÔBÃTûµnH'-C^_UVVJDJ]Z®Aëiªû S ¢   ÷5M ø   i b ¬^¨; ¢  Ilv÷¯ØrÿÝsSò¨ó›Å[Ì  ”hšÒ¡L n›PÿÕl‚MÿðÿÁ fTÿ®ÿ­(šˆÿŒÿ{Ô%´ÿÇÿþûÿÂà~:+ÿ5þÂþÍÿ…:Í+º+ÿ¡ÿEÿÿ0ÿwÿêPƒO,ÿÜÿÇÿ¿ÿÕÿó  ÿ÷ÿÞÿÏÿÅÿ©ÿ«ÿ¿QÎNÿÁŒLçãí»‘½’#^€ÞðœD…S£ë“Œ0þþþÐÿjƒ&'µV¢CÃÇWÈ©ÌæÓq%dš—JN¥@ÿÖÿÐZeÿªÿË4ŸÿÿÔ?ò ÿþïÿ¯ç±ÿÿÿGÿNÿÀ›G–Àpƒÿìÿÿ`ÿ›ÿëLŽ©ÃÁ¶«±ÁÔÖ˯—}aQGNLe”Òý"CzÓ$][SÏš}½¬-zÆ›H‹˜ÿËU;¾˜Š2ÿSÿ1ÿùâi#~.p'ÊÝqÌù,¢C$TšžsI7"0‡¶~ÿÃÿÆh8ÿàÿ³ÿÜR¦ƒÿ¥ÿ£!Ã(Úÿýÿ5ÿÿ¥œ_‘÷%ÿ€ÿSÿÇHÖ>F7Ökÿ¨ÿÿŠÿ¼ÿí&Xxž¾à  òÐ«Ž„~ˆ¢¼Ë̳rtlHÿªÿgÿ1ÿLÿˆÿùf°åË«HÿÇÿ_ÿÿJÿùÔŠuÆÿÑÿ1ÿPÿæ¨ ÞSÿú:ï™Û¥2&^aÿ„FW‹¶™gbV8#S…“]ÿóÿ¯ÿÓ%I1ÿåÿ¹ÿêJŸ›7ÿÍÿ¢ÿùµ0KÿbÿÿYO9ŽK†ÿòÿ¿ÿÐ<›ãÔ•EÿöÿÐÿÅÿé&Fl—Äõ)ÞÉľÄÓÞßÐħU:"ÿüÿÙÿ«ÿ·ÿåPÐ)Y)ð…ÿÀÿdÿ|ÿÓOžn©ÿÍÿtÿÈ‘,:Æ%ÿÑÇ~‘Q&UGÕ|n•£žƒp‡]N4Aa‘‡-ÿÓÿ¿ÿò6V#ÿßÿËÿûT’†8ÿØÿË4Æ,øLÿ“ÿ1ÿŠC uBÝ\%M‘³ÃáäÛ©h(ÿÿÿöÿçÿúKtŸÑü&1( ÿòÙÌ×àÓ±˜q> ÿÙÿÂÿ²ÿÆÿØ V£ïùà…,ÿÔÿoÿWÿgÿÜ{÷:íZÿÐÿÿç–-HÛS¤/„„NAW–«v ±ˆ¬“to„¨DRNEJvˆcÿßÿ× LS(ÿðÿÙÿøA¡gÿ÷-³#¥ÿçÿoÿtÙe:æ–twdeu˜¿Ðͦ|L :Qr›Éú%Þ¿¾Ã²’xY2ÿû[¢ßÍ‹F ÿýÿç„÷T4ºÿ³ÿÔPöeIÍDaÎ6V=+0c•¯ƒ-Ï¢ŸŸ—iNi˜±%>NLNn€wFÿýÿÙÿû8RBÿþ,l™£H7e¸ÿøÿŠÿ®-ì|˜zÀˆ\XYu•³ËŵŠU-,4Rw¦ÔôöÕÊÀ¬ŠcA"'Hd‡³ÈÉ«”qE%B•3’ÿúÿ·ÿØmifú‡L`»+(.YŸ—ZÊ­¨“|VPu ¨-HV[egmY#ÿûÿù0AG?208_¡ÉÃM?ƒÓòµ:ÿßÿÏ;ÓV\Íš…nnp„ ¶Å´”iH?>Vr•´Îêû üåѼ«”pT?Mp‘—ƒt]9(1KU]^x¶èÕMÿÒÿ—ÿï3†Uõt ÑùôåìZ¡€],æÇ¦x[Ob~‘Š,DUYSPTopB ÿô(MVI84=`‘·Ð»ƒY]Òä¶]PÚInfÛ¤zuy•¯ÃÑÈ·™zjerz‹žºßöûíêÛ¿¤š˜‹€w}—£gK9"*GsŠ›¶Ñþö¾RÿÐÿ©ÿßuWaϤ¨Ñåðòü9k‡Œg<úêÍ¢gEA[nupCWZTICJenR$!IOB9=Pjp}¤ÁǦkMi©âÛŒ7Q® C0Ç Ÿ®ËÛÛÙ˽­›‘‘˜•˜¡¸ÜñíÖÑǬ™—£ªª¥™•†eF18Af™ÆÜÞòíß 9ÿìÿÄ}õ$äÄÊàæÞÆÄæCWhd`J, ñРkKCS[]]4HPRLDCQ\`Kÿÿ ;Z`L8B^o€˜¨¼®|QEo¸âÏ„7&sÇ÷ßÒÙîþýôÛÁª—–ª¯¯«²Íãæ×ÑÆµ«¯¸»³¨”€jUE/07d¨é Î{(ÿãÿçnÈôëÀ´¾ÔäÞ̼Ãß ';W^S6 à§x_RY_a]'7GORMFG_d<"Ol\=7Ll‰‡•›•}TGc—ÇÂŒ?AŸÝø "íÅ£‹Œ“¦¹Âº³¾ÏÜÜÒÅÀÁÆÂµŸgWUVE@Cm°ïÖxÿäÿì7„µ» ’™¸ÖÛȳ©³ÍàóCUE&")ë´“ƒk`ccV !6LdfP?Vk_;!Pf_F8Jo…—•›‘sYJ_’··…>LƒÅ0QNE(üÚº ˜‘´ÇÄ·³¸ÆÍÀ°³½Ã»§‘Œ‡p\W\QYt¨ë Ïx&ÿð>‰«zd²ÍÍ¿ª ¨³Ëãÿ 6H>9<ë¾°¨…cWM2"<bsdLMXf[,)[u^:6Rw–ž–˜–”„^JX‚¯º¡l?7=}Ó*lra4 ðÓ¸¦‘Ÿµ½¸±¬µ»¯¢¥­°¨•…ˆŒ~mcgg~¨ÔûðÇ|- ^˜«Ž^B[¤ãä¹ •–§­ÄëAKA"!<1äÈÁ²ˆX>, ÿþ "FexoWDQ_R7>fl[JHWu›šŽŽŠxg^iš¨š{Z7P“ýaŽ[?ôÑ´¤‹‹˜§³³°µ¸³¬««© Žyyojkz¦ÆË¾‘`=(=k’–z\R_‹ÈæÒ¥˜˜Š‰µó%7%!/)òíçÖ­xF%ÿú!?kyZ22J`bD')FfvkUIX¡¡…†’€iW`‚¢®˜jXnÁ(tnW+ûÒ³¥—‘ƒ„’¨µ¸º¸»¹²¨¢šŽ€phfq|Ž¥°´šj?*=]ƒ¢˜d9>q¥Íä×½¡ ¢„w†ºú!úïü 6(çÚãß¼ƒR-ÿø ÿÿ9PG0-9IRM@49Pkvo[Yz¤µ­ŸŽ‡ze_oŒ§¬—ƒ}¦ï8a^^@ï˵¤Œˆ¡­±±­³³§—Œ…}mk{”¤§ªŒrNAOqŒ”“{N?`ÅÔÞÒÆ³£–|€£Ú"  ìâØÊ©{K+ÿ÷ÿñÿ÷ *251),EWL;;Okxp€»Ä¸›…}„…wjo‚®²©®Ìú3IC2ëͶ«™—œ£§¦£¦¥œŠ‰‡…}€•©±£Žt_\_t—© €eYTnšÃÑÍ×ÚÚȧ…¡Ñýý þáÑÊͼW0 ÿþÿóÿðÿÿÿêÿø(7:-(BZTB:D]x‚‚„Ž£´»­˜„€…„vsvˆŸ´¹¾Ïçþ*0/áįž™’–Ÿ§§££¢¡—”•˜–•›š“fUM[n…œœ‡j]eoЧÄÛçöñáâ—Áï  ù îÉ©žšq<ÿÿÿ÷ÿñÿïÿýÿíÿñ2B<3?NQLFGL_zˆŠ“¤«¤‘yy€……{x‚œ´Íáîùè͵£”–Ÿ©ª¥¡¢ª°¬§«®®¢ydWJMXl‡…wfaj›§¾æüܺ©°ºÑíýÿôõèÌ¥„pf\E'ÿû ÿúÿ÷ÿùÿó ÿûÿü#/58AINMLJ?Io—© “††—˜„zzƒŒ‡€€£½Òãó ùæÕÈ»±¢šš  ™›¥°²²»¾¹£†iTQNYfuƒ‡ƒzwzz‚‹ŸºÛéÎÂÉØ×ÖáíøïܵŒeF2 ÿóÿúÿ÷ ÿüÿû /$!.:@CINSQ@Aaª«ƒqq’š’u{ŠŽ‹›±ÆÞö!ìÜÔÒÌ´§Ÿ›œ™š¢­³¸ÃÀ³—|hZ\alsy}€‚…’„~„¥ÒøîÑÈÐßåÓ½»ÄÒʪyV<%ÿöÿìÿö # ÿýÿúÿþØ¥óDCv‰B?ZHÕl™£oQ?_AÛYšáj,þ¢d½2Ø€O1¾H Ä O ñ Ï · Ä Ö Ø Â Ž V $ ü õ õ , > 5 " ) n ß I ” Ó Ò Ò Œ ´ h p ‘ î ? • Ô#‡u“S:”Ø#L|š­ÌñOÔeðüœd7èÔgƵŒl|×=¹ ƒ û ç ñÏFTp º’@ð«{O./ã]h˜aóHÀJù{·ÊþVµ7ÊMªë+  ¸ y q } w F è ƒ 4    ; S _ M 2  õ é Û å   # #  I ¼ _ ö H M  … Ï ; ë þ  > N [ d Ž Î / ~ ä M âG¿Ož÷hÕaò«}G s£Ž‰«üfÜâ¸ÞÞ‡—½ñ÷#h ÉT}O4X`V?Ú|É%3$ëü­åÓµ²¼¦Â ‘ Œ ü j × ] î   L  ö ð õ ê À ~ A   # 2 @ = 2  à ² Œ u “ È 4 M M  ó ˆ = L ó ˜  N × ® â - 7 +   # O v º þ d ç Y ž Á ã / ˜@ã«nM@(‚ó´ÈÝ×SrOXÑýá pˆ»ãG¥ê÷¿R&€ (¬ûNÍ£J˜`"Ås\Q ¯ * å Ž 9 Ì w = (  ý Ú · œ ˆ r ^ G 9 0 2 4 9 D ? 2  Ú œ [ )ýùø & c ° ð  & C ä - 4 " Ð ƒ ! © m l ¯ ä  / (  å Á µ ³ Ô ó 0 € à æ ê à F Ò [   SåŒ+Çž|Î|cÓ‚ pôWÌê‘3ðàÓ=)Ý"&¹~îa3Øáé²wf›áíÛÑ× Ô U à `  É ³ ¡ ® Ê Ë ¤ W  Ý ´ ¦ œ » í  , -  î à [ 9     * J k — Æ î  ! L s • – _ * Û y 9 ! = O m ’   ˜ u V > * / 5 _ Ÿ ä  '  ú ? ˆ ÷ V Õ n  ‚ºÍá|rSì±<9^ZV:Oûg8ô’a×O ›”rÐPDSoYš; v ô ¦ 7 Ö ˆ @ Ó … S l Ÿ Ý  ô ™   ^ '   + ^ œ Í Õ Ç   Œ p H öãÚãéïòîâÞè  + = O e y • — ‰ V ݽÆÑò  8 < / / / % & ( Q Ž Ý , Q U 2    % 8 { ß W ˜ ú r T7œF–næ‰ýa”éåÀTTƒP´Æ|^¸ú_ˆ*û¹5Ât A Í x r  µ k H  & F t ” Š y 2 Ï q 8 - $ ) %    ùï÷  ðÌ‘Z!컆Z, (7AYx¢Ñðýúõ 2wÂú "  îú  " % ' / 8 R s ž Ñ í ÷ ß À ¦ ‰ ®  w © Ó z þ M×Q hCû·MöMŠ\!«y Èfç]&vs‹}Ûº¢ v Ê q   %  ´ 8 æ Þ ï ( c k G ë — L êÔ̺Ÿ‡Zܤޙ»â×fòv ¸c.ÿðããÔÔß4j›ÀÖõmÙdøY˜ƒ[01Rh˜«³¼Âí ; Ž È Ò Ì ´ ™ ²  c œ ¯ ¬ È ò Š B Z¢£g·x? ¦&a™´œŒ êfrJTg{ ¶ Æ ! © ‰ _ V V B û Ã Ä í   õ ² i 7 , : K #Ô=›™^ûßçó5MpMpÛ[ýÔ§•†{jO$  CsÃà*çƒ6ÌG^UóèälÞO¢Öë  8 _ ° ¾ § ‡ ~ ž Ï + J e ¯  ¦ e C¶%’.ÿÙ±y“¶ µ·ìÜ_Á}- à 3 • ë ƒ M A  Ü — b 4 ? | © ¦ LÏ[!T‡©K¯¯ªâT<*JYenjhVOÄMÖŒcs€“Ÿ”U#ò-F_t‰”¿ôiü¡?Ž·‰Lù9•C©/[mYPn» , !   . ‡ Õ ! a — Å  [ Í O ¿ þ ; •&Ä€?åhÝs x 4 8 Y 9 í — a „ t å  ˜ M ø Ú ä é À fý³–©Æ¶oõ€8')¹OŸÙ^ò3x¦¨k/â›a2 Ö§vb_uŠ““z[:! /7?FNU^`uˆÐ3¾P¹â¨~‹š œs\m^()ªAÉ  1 @ O t ´  ? V J 1 H —  ~ Í  7 k Ë G ânô[ ´ g o € Œ b 4 / C z K • ¾ T D   ) ê§zh@ø—;ûÝÞ£%XäQó&nÒ5H'´KÞz>  "8HQIC)Û²¢¡·ÊÛääçêìóþ   Gß,r”ª¡œŠ`e~ ß¼hl0!žjmL¸Þ¼½ç > ” Á µ Š  © $ ¹ 2 r i Y U m ¼  € › . /  ö Ü ã  - < à ,€J[>Øš,¬0Ò“F÷بE×B”¸´¸ÙêòüõõÏŒ6ïÀ‘ˆ…¦Íü+;=÷Á†Nÿöÿüÿÿ (:Oc{ž¯¤‰”š³ÍO¥ÿ,@º‰•t”‹º+.¼äc¶  # ( ÿ $ Š ] v … m M A a ‰ i ² « m 7 C p š  9£ùwE9ö£c!ã„~Ä—ÈÍí6 0CŒewh²OüÌž™¾×û%Ow¦›…Oà i<ÿüÿçÿÓÿÖÿÞÿû=_‡ÁâæËª€[1L“ücLè>¥u… Ÿ;?NÑ®Á¡*¼R®oš{_Ž  t Õ * + ü ­ } Uò  Ô°Ú  ÂI”é\õ©:Ý vOö\Å]Ri”®lä@ª¼qš‘8×{4.;w°æ#103.' ïÄ„KÿÏÿ ÿÿsÿ_ÿRÿCÿ@ÿ;ÿKÿbÿŽÿ³ÿí<‚­µÍ»”HÿîÿÀÿ¾I¯2‚¨_ýsÿåÿ°ÿ».`± 5Ú€u¾øQú†¥£ßRÝ L ¤ HØ”woQpWC3KD¢"uÌ%€‹T;4Î>Ó½e•}Ÿp™"¯ý°!mБsÄ!£k ž Œ}gQ9& èÂ¥ŒhNBB?80êßèê5pºäáÏ| P-ÿú9©.ƒÀf²ÿæÿPÿ`ÿ½vfrasÚp*Ì3X•?þk±|`§—kÝÉòi–Œa7原_ªên""%Òpýâ*£çÚŽ[hö»{ÿÛYÝi åÃËÏîA`¥Ó4eЧ¶ÂÕù47<,óИSÇN÷îçôÞ—:÷°Rÿüÿ—ÿŠÿ¯3åIOÁÿ„ÿ(ÿgÿñ’âÙ«œÁ]4ûLyñƒkÏ-šùWšx5DR^U˜²XÿŽýkÚžœÑìÞškdÉk=HWÚ»ò×P;)êÄ”m¬‡/ý0b×M惫 X ³ ë 3 v µ Ë Ö µ ” \ / í £ Aärùwð~ÕMÆtÅRÑTÿ¯ÿÄ2ó’§k­ÿÌÿZÿw®ó܈6j'ÓL«h¯ñ;™õUtT-Q&p•Š'¶8Þ’9ÙkËÂÝ  á™s>üs&*¢ 0 š É > ž  — ! M Q [ l ( + à ‡ t S BDß>‡ªËí 4GK6$ ÿäɇ;¾E› ã  S ˆ ¯ ÌéW­ dÅïíÍ¢ÿàÿHÿ\ÿ™› #ÿnþúÿ ÿdÿìILÿòÿÄà|è"CŽç=v¦Ñ)© $.Phe-És+øÆq-÷'xº8¢"<ph c î íöOsf¸Ùï.*Ih(ÎÃÔàBhn•¡ ¾•N…œsnfSHR`ZTYm‡ŸÀ«} ùCU}g4É_ú¨ k " í ˳ž_õíþV§Z.ŸÙ+ÿßߦAS¹;ÀóRprfYˆðlÀÜ߬h§DþåØÅ|L8 ¾:ê§äR Ä N ƒ Ôg…é4 ~öŠ C!Á" !ý ñø¿|¢ç’§•… \!!þ"Ÿ#$#7#-"ö"à"Ü"Ò"ä##8#5#$#)#@#[#w#¤#–#^"Þ"q!à!J – &!­>ƒÓØ·„] è &ÈAþÀF*ŠàÄ>@>šjŽt9ÿÕÿªÿÄ<Â*VB=38;'oëj¥“¤°Íú‹:AF_Kj¢W.X>  ? ‰ëö™>&Nˆ™!V#$ç' )‡+u--H-.,++P*Y)e(Í(F(k(È)‘*8*Ý+o+û,¤-(-–-®-ª-‚-o-{-‘-Ë..R.S.8.=.S.i.{.£.‚.+-…,ï,O+²+%*Æ*0)k(1' %k#Ç!säíïXoïÔª €  ä ¶ & þ°©2œdÆ^|çqvÈ+;ü­su–‰Œ¨òd£ s¾@tÿ Fz×W ð S >u9õ·kÎ! "ó$×&Ü(ù+-+/l1Ã4\6I7ï8087$6[5n4‚3Ô3'33H3û4“5K5ð6­78Z99s9«9¤9ª9½9ä:#:p:Ÿ:œ:Š:Ÿ:É:ñ;;2:ó:t9}8”7‹65“4Ú431á0ä/œ.S,;)Ú&º#z WvI+´RD0Š6>Œ é Õ Z hmظ0"‡Qlÿ£ÿ•ÿÍÿø,q¥¬Eä Þ 7 ‚ Û â Á : Ë  <ê‰kÓnc4"%9( *­,œ.8/À1¬3þ6Y8»:ü=?oA,B¿CC B$Ai@t?w>¢=Â=‘=¬>{?6@7A"B8CwDE­F:F›F–FžF™F«FÇFäFóFäFèGG]G«GáH/GõGwFYEFCìB‰A1@>î=‰<.;:9"7…5ž2Ö/ä,½)Ë'8$š"› ¹”¼å™å2™K¯Ùš A > ©)Í'Æ•úK­'ÿÓÿÞ9* AKgóìIbFþô¢0"Tà Ÿ#u&ƒ)},­0F3f67®9 :™<Ý?˜BD[F_H7J|LLMïNUN_MvL¸K´J I¼HÏH´HñJJüLHMNÞPpQÄRïSbS¥SjSFSRñRØR¸R£R‚R•RÃS-S£TT TTNSMR[QO¼NWM.KÑJHKFÅElD6B–@°>;H8T530….9+à*3(ò'ý&Å%&#V!Tr³8nB—åV ìå¨ô§øƒÿÝÿœÿ•ÿÀÿ²ÿšÿ‚ÿŽÿÊ#  ‹òÄÕþ&!1¢!¤#±&E(û+û.Ã1Á4é8Q<?AMB’CÛE¡H:KM\OPŸR%T7VWžXX W!V\UfTmSÄSSKSÅTüV WwX´Yó[d\u]U]r]g\è\€\[¹[v[*[ZÜZþ[2[º\R]]È^^]f\È[ÒZÝYÄXâWžUùT RTP¼OPM—K•IF„CûA»?œ=\;8v6E4r3&1á0.ò,ô*É(”&¾$æ# ‚¦qm®2µ ´ ðèz‹X|É8ÿÙÿ¿ÿÔ-ó*³(%Ì$Ù#ê$ $%&S(3)¿+Ù.71)479Ó<á@jD+HJÎL°MÈO>QCSèVuXUYZÑ\*]ý_›a adaV`o_Ÿ^Ó^$]î]¿^8^Ù_óa bccÖdºeBe¬e…eFd®dc‰cbÂbmbMb'bYb cIddÜeÐfTff&eÀedVc‹bïb`Î_U^\Ì[¥YõWåUJR»PGN L I¿GID¬BT@B>¦=;‡9ù8 5×3f1 .ô-*¹'û$† ìl¡=È Y µ„6º9T²xÿ¹ÿ“8x5A2¬0Ž/®.À.Ø.ò/ó12º466b8è;ê>©A~D2G^KNÓRITŒV'W9XÕZÍ]^ê`Aa!b.c]dØfgFg€gVf„eÇeKe eTe fFfëg¸h—iEiÈiðj$jiùiœi:h¢gôgXfÝf¥fkfkfZffûg³hqiHj5jÁkjÎj‚iðinhéhƒhgRffe\dÁcea›_,\ÙZ¡X±VÐT·R|P>N%L6JlH‡F®EC)A%>¾<19©7Ž5P2é/µ, (.$ì!ÉhÀÉA> ò ~ Qê"¾ùúC‹B”?H<´:œ9Ì8ç9 9::@;3<Ú>@ÜCrFUHÒKŒN€QöUÎY0\]Ä_/`:a´cMdðf?gCgÿhÙiÍjôkòlêmlÚl$k˜kykl7lÃmemón}o,ožoåoÂo o>nän_mÜm5llkÆkIk&kkk&kkýl¼mun0nþovoÅo”oPnÓnon m³mQlÒlfl0kõkÊjõiºgÞfd\bña`^:\fZyXªVÂT·RŸP²N±L§J9GŠD¾BD?Ó=|:}6õ2ø/Z+Ë(K$| 8Y@2^ ) w+¡÷¿mKšHyF DCFB‰BÅBûCæD«F5HJlL½O$Q6S·VÁZ,]™`Gbyc¼efgDhMiWj:kkÊl{m'mön¢oVouo(nšnHnkn¿ogoúpˆqqrrryr¸rŒr]qéqzpåpVo¬nÛn7mÁm¯mmÏmònVnÔo|pp¨qBqq½q}q)p¥p@oÚoqon}n#múmún mÂm,l!kjiVhžgÊf£edcßby`Ç^î\ÑZÆX§V¢TcQûOTL¸JG¯DèAÌ>:t6£3 /9+&×"Ê"¨X¯J & TâROÌMÖMLƒLÛMMÖNwOíQÝTtìuÄvLv¨vmvuqtÌtsˆrñr*qŒqqpýq9qlq·q÷rNr¾s-sœsÂsÎsxsrr q«qKpöp‡pGp)pGpfpƒppzpƒp¦päqq pÇp†po¨nÉm¬lj]h•fäeEcÐb`=]Ü[vXµVS O×LH3D@;ñ7á3Ù/×+Ý'ì#䈽T°böaK_Õ^ˆ^^ ^q^n^^¶_y`›bc d"eoghÚj˜l0msn³opˆq!q¤rrss`sŒsÇsÊs³srs¾:z6!2-ð)}% îfgeãdÜd cÙcód9dcãcÅddenf,gtDtt tttþu†vvuþu’u>tõtÈt™t`s÷sbrÙrŽrhr2qáqxqp˜pNpoòo®o£o²p*p«qzrGs9t7u"vv‘vìvÇv¦v3u¿u#tzsìs‡sDsr“qëqp|o¾om¾kài‡gÀe™c_â\ÎYGUéQÄMWHB¡oMo nÈnˆnZn@nmìm’lÿl¼lÑmsnnÎo$o·p»rs^tt>såsßsåtsës—s1srðrµrGqÌq:pšp7pp p1plpžpÿqtrr…ss—tt{t­tÆtÇtÙuuLu‹ušu¬uÚv?vÀwea§]’t²uuOuMutûtÎt‚t6sÜsñtguuku­vv„wNwÕxw¥wuätæsÀr¯q_oën@lºkigeZ=Ý=×>¡>ü?À@TB+D˜HXKûP SäWé\`Id”h>k†npõs1uOv†w‹xxÄyymxäwìv–u¢tétCsˆrqq‚qp¾pAoµoOn·mäq“r4ssÉtuuu~u¾uévHvžvävâv©v{vÚvïv›ufthrVoñli$eHa]wY TÍPžM I²F×C¼A>y< :Ó9ß8å8Ð8½9œ:iTAŸEIˆMÐRÚX1]Ñc_hCmp‘t#vKxu<£:‘97g6ó788‰9M9Ê;Y=|@ëD?H,KéP%TœYb^GbœfyišmoÞržtPu¿v_w/wxwâw3v u)trsés?r$q$p•p\oøo–o?nÓnMp3pâqºrs.sÞtNt”tÄu5u…u¡uwu>u u…u~týs|rLoÛlîhÓdî`‚\W_R_M¤I.E”B$?G<9„75ƒ3Ú2ï21é1¾2€3>5.76:‰=æBeFÎLHR Xk^dimÏr*uwx¥yÒyízGyIx*u0qøm%hlb \¹VIOÂIœCa>Ç:Ï8š6T4Ð31°0,/º/Ù0ã1 2ž3D4Ç6Æ9ö=@æD“HþM©RçXQ]Ia»eiillÂpr1t tÝu¾vvÀv´v4u#tAs}srbq>p5o¥o‹oWo5onÑn¢nÓo„pWqq¾rirÖssDs¼ttsäsÞsûtst\sÞr3pÊmßjie°aJ\MW-Q¿L%G$B|>ö;Š8à5í3´1¹0€/%.Z-™-j--‹-ÿ/1:4&6þ;/?oE(KHRX°^Ódäiõor±v w¶ypyºz1xûw­tFp–keÀ_OXÌQãJîDx=ä94¸2g0.Ü-f,u+M*ü+ +í,©-·.}/õ1Ã4ˆ7,:¤> B‚GILìR¸X<]:aƒfjmÞphr£s˜ttäu‘uuQthsˆr²r=q©pounànánàonùnònümRmþn×o­plq%q“qÒqúrvrÈr­r‡r¿s$s¸sšs3qnoÎlmhƒc>^cXÎRèL¶FsA<8…52Ã0,.v,ü,4+@*«*$)å)~))z*\+U-•/»3Š7}=cCºK%R_YS`)eükÙp t@vtx—xêybxv°soic[ÿTèMF?*833%.µ,s*-))'ú'|&ê&ô''¸(4(þ)ª*ü,†.Ö0á3ç7;®@ºFêM,SCXÙ]Ïcg§l%oq¢r³sÆt4uu>u8ts­rËrdqÔpœoznÐnÛnúoOofo†oÆl_lèm¯n“ohppzp³pÎq-qiq;q0q«rUrûrÖrpÌnàjïf`Ù[oU2NGÍA;¢6†360 .;,C+>*c*))5(ï(´(W('–'»'÷)f*Á-é126É<ßD„L S¡[aƒhlóqÒt„vòwAw¶vYu0qÌmõgøaûZÔS¿LSDÀ=Ð6ß1á-y+.(Ë'°&t&%ã&&&G&}&&Ø')()=*þ,T.¾1R5ê;A¶HPNàTöZ…`se–j¶npârs4s¾t§uu`tòtFsnsr—qipBo†o‡o³p'pQp‡pák™kölžm„nbooJoƒo˜oÔoêo¡o£pMq#qÇqŒqvo•mWhÒd]ÀW¤P¨IHB;5½0À-Ô+)º(`('Í'ï'Î'¦'™'u';&Î&'%Ò%œ&p'&)ž,)1@6ò>¢FV]=d€j/oÆrÝu…uÎvOtÿsépªlÿg7alZrSˆLCDÕ>7]2€.+ )'Ä&^%ì%²%ß%Ê%¡%_%C%+%¡&M'|(')ì+Õ015XÎ:%5Ê2½/-<*»)F(B'ô'W&Ô&`%ì%B$Ñ$“$Í$·%“&#)Z-®4·;³CSJrQ?X=^e;iÓm€nÔp5p¹q•rHs(s‰s„ssrÊr,q{pßpäqNrr‡rýs‹mumm mmmÔmÒmƒmcml{lkÕl\m\nUonƒnxkÕh&a£[jS¤KªC?:Ð3~,('‰#Â"¥!L!]!s"&"Ð#L#v#_#s##š#~#*"Ï"Œ"­"—#Š$^'‹+X1Ð8s@wHTP?X5_#f7jÏn¸oÆpÐp o–mÆkôh›e`;[UåO™I C>96 2o/„,L*7(·(='}'&ž&5%Œ$û$‰$Ž$t%/%i(+×2|96@êH,O7VS\Æc›hil[mÚoRo²pRpÃqxqárqÆq¾q…qp¤p,pLpÛqÇrVrãs‡nžnm¨mÆmñm¯m2lïl‘kÏkhkbl9mon†oXnØnÊkÙg¹`›YáQªI2@x7Ò0~) $’! ryÒ - ø!©""G":"V"l""u" !¾!~!“!{"/"¦%6(b.:4^;òC@J²RXú`4eqiükÅmgm1mIlkh†eÔaò^{Y–SÛMIGA<†8‘41'-C*Œ(‰'Ù&÷&Š&%«%$‹$$#÷$£$¬'*i0Ì7W?FcM–TÈ[YbRgUkm?nÔootošppwp©p“pˆpSp oÄodo”p?qFqêr‰sBoÂnënGnnmlølšl>kuk5kul noJpFoËo»l—h<`ËYÁQDH‰?¨6à/†( #¦ NÙ‡ù Æ!u!â"""9"N"p"N!å!v!>!^!S!å"%$A&þ,61Â8z>ÀE!K‡QÓX¡^bèemgÆh„iŠini`gþffc•aU]GX@Q§K7E?W:Ÿ62-‘*P'È&Ý%ã%‹% $¡$#¼#Z#_#k$$&9)F/P5§=dD¼LSaZa&fYjìlén­nÕonøoBo“oÏoÕoÈo–okoAnäooœp—q5qØr’p±oœn¾nPn mhl¼lEkàkjÞk[lÛnŒoâpøpypim*h«aYÃQ H? 6.£'"É~&z¶ °!’"""r"o""š"½"•"!˜!_!n!D!Ž!ƒ#6%Ÿ*L/:5 :O?²E5JíQVi[&^9a5c ef=gg”g\e¦dta\£V&OÉIB±=7¥3-î*8'(%÷$Þ$›$#±#0"Ï"m"h"q"ÿ"â$¯'A,í3;B…J&Q»X¯_êeOj8l|nin„n¥ninŸnúoPowovoSoUoFnånÞoXp7pÅqerqPpnúnKmÕml`kÛkzj¡j“k5lÚn¢oýqppym2h¯aY»QH?5ü.Š'"ä¡H¥Nã á!Ý"Š"å"á###6#"ž")" "&!ð"!ö#†%Ý*9.½3¿8mŒl¡kækWkj6j>jøl¥nfo±pÊp>pl·h`AXßP%GA>P5S-ü&½"µ~Ÿ Î!©"M"š"¡"Ý##-#"¹"u"’"×"º"Ö"±$&J*Q.2ñ6k9Ê=BFþK´O±RÞVYN]9adËghÇhhòfŸcp]WW'OÅH˜A¸;5_/2*Ú'8%Õ$$J#Ä#B"„!É!" Î  Ÿ :!c"È'k-5%<¹D±L“Sý[œa¨g‚jªm8mŒmÖm¥nn—o6o›o´o¢oêoõo{o o o€oÔpoqrap´oHn m!lkRjÃjiÕiîj¢l/mÌnúp o{oDkÌg_IWæOBF~=¼4è-¾&²"àøÏfí $ œ!9ã=AEÍJjN)QSõWU[¯`4dgi%i+iêgìe_XÍQ5IüC ZAßFJfMîPÑSlVÅ[@`#dÀg¶j6jtk/hýf` Y•Q²J%C<*6R/è+ (f'w&R%î%s$Ë#º"!¤! \ gÑË"ô'¬/w6Í>çFÂN|Vq]ld™il—mBmÎm’mÿn™oGoœo„oAo„o™onˆnQn¿oDpFq!r¨p¾om9kÛj†iÖiUiEhÓii£jül|mŸn¡nm×j f{_RXPOÌG">y5ó.ô'ì#¾ PžâY…þ † ì þ! !s!â""""l"ê#õ$Ú&x'ñ*è.¹3j8;_=V>‘@“CœG JëN%QS³W[ˆ``e h+jèk0kµi)f_ðYŒQ»JBÓ;î6/¼+(w'©&˜&8%Â%$"Î!Ü!4 | tÂ"a&à.”5ß>EéMµU±\ÓdHilØm nGnnonño†o¿o‰o4ojon÷nnn4n²oTp€q€rp0nlÂktj;i¥i5i h¥h»iEóM½U¯\ÐdRi6mmÕn…n@n¡oo‹o¬ogooEoinõn‡nbn÷o³pýrq]o’nl_k&ji€iih†h„hÝiík0lFm,lüm(júh#bJ\UTEKñC(:¨3N+à&Ê"3 P ŸrÞ.”Ø - ¦!"!!Ç!¦!ô"œ$X&(×+‘/ì5:ë@§DÙGûI°KÅMçPiRòU#WHY;\_ád+hbkmQm lýißf*_•XÝPæI A¢:Ž4È.‘*¿('w&š&@%¿% $#"!Q « gá = "Û'?.È5ì=þEÒMœUŠ\¬d2ilæm°nZnnpnÛoRoso/nåo%oao nÀn·odp9q›rØpšomºlMk;jFiÉiei-hšhih‡iVj]kZl'l!l{jÚh¹c³^yV×NÚF=©6%.’) #Þ!K—Qd´ûbÍ G Å!/!*!Â"Ï%'I*·.38º?*E J¯NÐQ'S‘UƒWôZ[Ý]]^¹`ôdg®k9mCnÏmümjf_X OâGì@9d3¬-ª*'Š' &9%Õ%D$Š#¦"±!¿!" ª ž < ¹ ¼#´(+/¢6±>žFVNUå\îdOil©mOmÕmymÌn9n©nÍnŽnYn¯onýnîooÝpÇr+suoþnœmlQkbj˜j%i¼iYh h7hh«i‚jsk.kKkÅjži0dù`lY+QvH¸@d8È1+3%"FlÉßµâÕSâ ‹ ¿!Å#T&H)-1<6ù=8D1K@PùUíXÛ[¦]†_ça»c(d.e1fÈikŒn*oxp\númËiÎe8^VäNÇFÑ?z8F2¤,é) '#&%­%7$”#Ø"÷"!7 Ë   è Á!e!œ$«)(0†7?MFÝNjV-]$dpil™m!m„m mOm´nn%mÕm§n n¦nÊnýo[p=q>r¦süo¦n†m³l«kÝk1ÓÙé=}÷| H ¤"$0'â+Y0/5;nB(ItPãVþ\l_°b¹dfÞh}iÐj¡k‚l‚mÎo"p©q#qoom—hác°\UTýLýE=Ó6¤1&+Ä(Ä&T%œ$¢$#k"º!á!-  ` €!!#" "ª&*¼29@°HO|W!]ídøiQl løm l}l¢lóm/m,lÆl£mmänJnÂoVpJqTr§s÷ofn‹mëm lQkÒkmj÷j;ih9gµgÿhŠi8i…iŒji¬ixfÓc’]4VAMèF >°770Å*+%«!¯ #×ÊRDD‘Ë<¦ i º"u$å)L-Ž358Ñ?ŸF¾NSV \“bdeÚhüj¯lÐn ï!#"Ÿ$N(Å.$5—<žDK_R…Z`Rf”jl§l‡l+k-kk,k%kj˜j¡k5lNmmünåoåpãqós$nßn{nJmãm|m:làlƒk³jliMh«hÁii;hæh’hÙiižhBfBa5[T-MBF.?98…1Q+Œ&L# !p ø !ë©ÄÚ + T ñ!#*%ÿ+}148V?FTMéU¢]½d.iàlÒocpbqÑrÆsÝtmtÈt³tÚt—tTs/reo‰leÛ_,VÚN¹F¥>Ä7Ø0¦+w&Ý$·"Â"&!D Ê 6ÙnZ^Ä  Ð!"÷%6*4/è7Z>PE•LÞSö[japg8jlal kqjWj jEj&iþi¡iÎj|k¯lm‘n‘opxq^ryn™nvn‹n~nTn-mÐmƒlÃkjtiÌiÀiÞiäiQhÑhñiAiÝhïgxc:^tWÐQsJ D=Z6/Ü)þ&z#|"i!% » ) ÿ J g!!X#¢&·,˜2É:UATHµP_Wú_þf"komåp p±qÅrms7s‰s”shs¬sªs”rqq n}j¥cû] TÃLÀDÝ=6#.Þ)¶%M#p!­!0 g •f/AXÉ ! !£#þ&Õ,C259”@rG‹NÊUÄ]b¦géjLl+kªjêiÑi¡iÎi–iji2i—jjk¨lžm…no[ppÃq¦n¤nÑo+orovo]nòn¬møl×k»kjÑjÎj§iÜi/i$i}j$i˜h—ea2[OU‚NëH¤Aú:À4 -˜);%f#¬!î!H [ ñ T u!B!š$-'©. 4³<‰C¿KRÅZ6bgÞlÂnÕpÂq8rrPr¼rÌr«rqr™r‹ryq^p¢mUiaÞZ¿RœJÌC;A4;,ï'ð#×"M ± >‰?æÚÐ ?Æ (!P"B%#(’.h4;ÛB¯IªPçW¹^·cÞh¡jŽl k_jzieiAiyi!híhàij‘kälçm¾n°ogoûpRpínˆo'oÒpzp¯p¨p,oáo4n3m)lblkîk±jÑjiÆjjj;if¬c^‰YnSJMvG@992t-W(µ&1#Ù"É!Z à _ À Ú!Ñ"T%=)(/ã6¿>“EÕMT®[×c\h­lýnpNp²qYquq“qdq1pópêp»p²o´ok¬g _êX÷Q6I¾B;:r3_,'<#I!Ô 1¥å˜4:UÓ6  «"H#Í'L+S1x7Æ>õEÊL¦SÃZ?`Íeli´kHlmk£j¼iÁi iÉiJi i%j k$lpmwn;oo’oðoôp4n”ošpŠqŒqórq}q#pkon}mžmlål‘k—j¨j,jHjÊj¾jNh%eØa·]dWÎR†LOE¬>­7”1º,V)&$$¢"¤!£ Þ!%!1"Z#&Q*š1 8ª@‘GþOQVè]Øe"iþm¶nÉppTpìpüpÞphpo±oƒoHoRn[mƒiðe;^WZOîH±A\9Ç2Ò+¨&¿"Ä!<ò »+(]*Î÷ ó# %-)Q-ù4x:÷BHùO½V¶\Öbøgjðl1lÿlkBjijDjMi¤iSij–k¦lØmãn£oho¸oòo·o´mKnêpDq½rir³r/qÑqp\oƒn§nmÓm‚lŸkµkkk}kkBi‹gÈdh`×[ðW?QsKVDŽ=”7d1Ž- *!(%“$"¿"¥"j#¥$ˆ( ,…3’:„BII¾QX¤_RfDj›mÌnkoMoioúp"po‚on¤nSmùmùlükëhZcó]`WPI#Aü:¨3Ô,Â'¸#Œ!´ÁêÛY¬ÃF> æ"k%*'ú,µ1ç8Ÿ?CF@MS’Z*_Âegil{momòlÿlBkk7kj1iÔjk lmnnÕowo†o’o n³kÞn#oíqÜr¿s+r r>qšqpxo®o nÈn}m»lçl;llglŒlTjúi¦fëd_¼[‘V0P£J.Cu=6Å2'.+ˆ(¦&Ç$Ó$1#†$·%À)’.95><C”K RlZ`rf÷j½m}mÌn\nTnÄnþon¯n^mÙmXl¼l‹k|jGfèbõ]W4PtIÓBÎ;4¬-(o$="B ày×/‰ˆ¾!Ð#Ö'?*½05Ý<ãCÅJ©QiW]¢b¬gÞk'nn¬nÚmÏm lkkîkrjyjj_kpl6m)nZo4oÃo•oxn©m÷gåk mp2qŒrdrqàqoqDpþpsoîoÁo˜o$n–nmÖnnmÛl«k~i(f¿c_VZpU~O¢I‹CY=%83›0Š-S+(§'†&h'f(d,D0Ü7®>6ErL›S«Zýag jWlÌlÿmem;7J0G+&¾$[!¢ UÓvM' ë"|%'¸+Â/Õ5y;BrIBOÊV&[¦a%ejf9p5Å2/y,™+)¡*b+*.ó3z:;@¹G¶NpTö[æa¢g(jl>lNl—lOlOlIlPl2lk—jïjih²gÄecb¯^8Y©SåNXGæ@ð9ý3>.)S&="à »Ú¸Ä -!h#%µ(õ,T15¯;‘AÀHoNùTüZÖ_¼d§h€lžnúpÍp´p€o|nÍmõmljüj¤jïkÔlHlÈmºn*n)ml)j4h5\}aŒeçjUm&owpp¦p®q9qžq®q—q´qèr$r9r#qëqïq»qrpo›mîlgiÐfðbì^þZBU}P+J EK@2<7õ5 2 0//°0H3Â7ö>hDÈKtQ™WJ]sbŒg€j!lllGkìkÊkœk{kDkj›iûi:hÉhgfeˆcT_Š[²V¬QØKöE‚>Ü8–3\.?*n&Y$"C"Ž"ú$Î&S(å+€/W3T8\=TBüHÏNÆT©Yõ_cdg·jýnpp?qqEqp.orntm]lYkIjñk'k´kÄk©lk¾ki8g|d«a½Uã[îaDf±jsmËo(p2poqLqórKrfr¢rüs…sêtsôsësšsRrƒqp nÌl·j]fíc}_?[V?Q9LFÖBL=Ë:¤7š6N4õ5 629[=C I4O˜UIZ4_oc©gójFkõkàkákqkWkFk4jõj§jioh¼hHg­g*eºd`ö]ÔY‡U`PJ^D4>b93†/#*Å(”&Ð'\'ý* +º.Œ1€5Ë:P?ªDÝJ:O’TÀYü^ªcBfûj¼mepqVr,qÌq¥päpnóm¶l k¡kJkik’k-jcjig£dæb9^vZM¨TŒZÔa,eèj[l¦nmop`qRqþrYrÉsTttÊuGuRu[tÿt»sösqp~nÍlùj)g5ci_±[aVþR@M_HËD%@ß=é<å;Ù<¼=…@{CÊIN«TŠYÅ^ b_e³ikj_i(gTfdaw]©YçUGPƒE;M TY[œaCf¿iîl}m£okp¨qŸr-rÎsŠtu~vJv‡v¥vBuýuFtis9rCpîoœmhjôg™dN`t\«XcSØO=JnFêCßBöB C)DHGKJlO TY(]åa³enhjçlcmŒm|mTlälÒlÞlél¼lokÕk/j‚iÿi‚ihLgoeÂdaM^µZôVäQØLÉGŽB-=Ç9‘7p5ž5þ6y8n9ô<æ@FE IùOS›W›[‘_Ac;f¼j l}nûpuqÈr&r…rNrJq¦pµoKmél¿kôkDj¥i#gdaÞ^Ã[VFQ†L'F ;¸CúKúSÊZ`bdvgóiæl\no—p“q r­sýu+vFv¿w v¹vxuÏut,s]rJqNo•mj¾gÚdma)]sY‹U_PØMUJBILHrI²K NQU+Yg]ÂaìeSh¦jßm nnÞnÏn³n\n>n1n-nmÍmOl·lkŠkj±ji‰hkg?eDci`Y\íXaSÂNóJ0F7B4?ï=ü>%>r@IA»D©HL¸Q_UÉYª\æ`=cbfÊi´l]n8p0qLr4rar°r‰r€qÇp¼o/m¶l_k~jOhôfIc^þ[WVRŽLÚGKA„;“1ð:‰C&KrRvY^‹c eêi)k€m´o@pÔr;sâuHv¡wBwµwmw&vuéu,ts¤rãq•p#mÛknhre¡b}_T[ÅW¯T9QPO?PQéT»W†[%^ãb f1ikÒm…o ovoÎo›o€o^oeoio`o$nàndmØmAlÂlSkàkmkj€iëh©gwe b9^KZcV9RNyJH6F>FKFfHI¤L¬P4TŒX´\X_b&dòg†j;lsntoÛqvr^rúrùs/srîrp÷o@m¥lkiLg'cW_"YéUIOæIýCm= 6Ò0n(Š0Á9UA–HëPEV[O_cf,iCk méoËqèsŸuPv4vêvÎv¦vu·u:tÌt.s’r‡q|o»mÆk=hÉf"c `Ö]Z¡W×V·VW)XDZ§]`=cŽfÄiµkên2o…pªpÕpâp‰pVp@pVpgpWp o¼oHnÑn`nm²mVm lál lgkšjÑhâfŽcB`\¨Y3UïRbPN*""|œr &—D2#h)).¬4r9×>ÛC™H¸M®R†VËZí^‘bŠe³h‚j6k×lín)o@p†qerrrq{p¹o‘n’m\kÓj–i²iiiËi×j/j¨k›l¿mçnÕojoîpSpàqXq±qër7rwr³rÛs sssss1s9sxsìtstßuutìtætÂtÁt3sSqÒpYnÀm0kåjiëiqiÓjjkKkál[lÜmann†nœnlnWnwn¦o2oæp«qmq¨qqp²o¾n×l‡i¾e¢b] XQ@JGB9ç1t(ñ!Y!_S RÜ ‡h¾u$<)q.¸3«8ƒ=}B–GçLÙQcUjYÑ] aBcØf*gÚiÂk‡m‡nýp%p„qpÖpožnÊm¶lqkyjÈjÆjÛkIkŒkÿlvmAnKoFoøpIp™pÈq&qJq3pâp¦ppjpnpopqp]pdp‡pÖqqvrrÓs]s»ttgtÖuu`ut”sŽršq„phopnvmömmÆmýnXn‚n·oono´o¼o©oyoXoVoNoppŽpÙpŒp$o+nxlâk%gód‡_×[ŒUÝO½H3@Á80'ÚÈŸ Ä‘Jœ4f ˜LŽ>*d$(°-s26à<*ATFJ>N¯RÃVäZ3]$_maßd=fôi#jîkÒlÔmmSlÞlQkkjiÉiBi1i idi¤jj‰k7l lûm•mßn9nfn¶n”n0mOlsk‰jªjiwi4hßhëii¢jjákìm)n-o0pVqursattsûsZrÍqûqp(oAn¬n5nm÷nn@nŸooqo‡olo{o{oao:oooHonªmˆljÞidfÝd_ÿ[ñVØQñKËE8=¨6T.«&—6W ¬ Ư_¤R}ÿ 6 7`Sª"{&Ö+}0ž5Õ:¼?/C“GµL"P S¡VˆYU\_ƒbŒe1f³h h‘iUiiyhõhagég¸gÍgÅgÜgïh;h”i+iéj‚jÎjåk3khk­kbjÞi«hwfìeHcÜb¡aýaJaLajbAbþdqf(h>jkémäoŸqBrJsIs•sÒstsrQq†p®oêo_nÙn¢ninŽn×oHoªoÚoãoÍoðoæo‘o+o!nûnÉmÌlyjrhÊfzd`€\´WÝSZ¤ZY¢YŽYŸYyY&X'WUbSQÈPdO¤N¸N˜N”O¨P°RöU£Xû\^ûbdÎg~ivkelgmNm[mjlçlPk’jãj‚j@jfj—jûkak«k×kÏkÕk¯k†k j´j i»hfâda†^,ZÐV˜R8M7HqC=˜71+s%èÙK¸ Ç® x–¥aÿù;—øóVXø ² ¦%~'"H&,)ž,ã0ˆ427³;>IA‡E1H/J©KÿMBNOJP,P¼QQsR S S—S¢R×QýQ P€OëNöMúM$L¼L›L‚L6KeJpIG“FIEKDÊD CóCûEFHBJóN[QaTuW£ZÂ]ù`cd™eëf]fîfÛfžf eeð@´BiC•DçE´FBFFÔGgHqI3IHôH+FõF EC½B}AQ@¢@H@?¦>É=̲9›40„,0&î!/rÐ < Ð °uN¶|2a¦³1ÿ{ÿÿØÿúÿÛÿkÿ6ÿž ÿíþx0 <û Î )_>S:ç!•$²&“()*’,;-ê//È/ì0050–0ä1 0à0¸0=/È.î-é,µ+”*¯*)l(ˆ'3%Ñ$*"` Þ“÷D`‰° Ç#%¶) ,(/Š37 ;?BÈEÉH¨J¯LØNO*OOOQNñN»N¡N“NµNýOONžN9M"<9:a9+7Q4÷0ý,K't#Ø âSÄ ð f¤Éa\ç ãu$ÿ¦ÿ” ‹r ÿÙÿ˜ÿaÿÆ/ÿýÿ›ÿ‚ÿ´!MÿÐÿaÿŒ:ç\\xžíà † # i ®™ u¼ ‘³.l*Éò)qöŽý[»<ðŒ Ù â   Þ½¥ÁŠ0!ß%¨)_-/ñ2±4‰6|78`8V8 7™77Õ8F8Ç9P9?8â7Ë6Â5\3í2p1±-#î Ä›kNª žš : 9ÿIô$ÿWœ½Ë†Î£ Í?}K±*4…Ÿ}ÿé,sHÿÆb6ÿçÿÉÿñ[‹ÿ¤ÿ© „¡ÿ–ÿŠ åDÉÿÜÿÿA-O솆ÿ‡ÿ*ÿ¹‚dðôíø}&=zëO™_¤HÿÅÿ¯ÿ ÿÆ@WUcnsv…„fL=k“+î  ,M}Æ Ú é [ ’ H ö ¿ É  q – £ j .^Õ^  3®fÿì^ú¾»ÕVº• ˜h—͘A o˜MÿÎh†VÿõÿÂs_ ÿ·ÿ¶,™Šÿ¡ÿ“(Ú(¼ÿÔÿ ÿÿÝßtVzÿ˜ÿÿÿÂnÿd4Èÿÿaÿ7ÿmÿº,œÖíÁšb)ÿõ*IH40+"ÿïÿÀÿ²ÿÌÿÔaíxÊhe³³šxl£tíýî0;þ¶ícçß$ÿ þðÿ–¦CC߈Ï_ÊÄWЭÊçÕo%k ™Mÿþ IŸ¬CÿÔÿÐ`iÿ®ÿÌ4¤#ÿ¤ÿ‘ áJòÿþõÿšÁ¯»ÿEÿFÿ®‡>9ètÿìÿ—ÿnÿ©ÿôT¼Í½­¡£´ÌÕɨŽuVKVgVSv«ÍæûV•Öëä­lF3tÖ\ÚS°óvCÌ­=7Pÿ@ÿ3ïo(‹LšRêðx Óú*¦C#Z¨ª{S+'†»ÿÆÿÎ)s?ÿâÿ´ÿßTª!ÿ­ÿ¤)Ð(ÐÿCþþÿ–Ÿ{±BÿžÿeÿÏXæ3&Õq ÿÄÿ¸ÿµÿæ!bŸ®¹Îè èá„¢—£¾ÐƨpcY-ÿÜÿŽÿUÿoÿ©„Ìå¹PÿÖÿxÿ#ÿaÒ~kÌÿâÿ6ÿIÿçµæ^ T¸ñ¯1 '_b„@PŒÁ£liI*QŠ™bÿúÿ¹ÿä7S3ÿçÿ¿ÿîP¬¨6ÿÁÿ¡º*Vÿdÿÿir[§kª ÿÌÿâM“ÇùûËšY ÿéÿë*D`£Êú'øÚËÐÚà׿µ¶¦M(ÿðÿÁÿ¾ÿäJÄL!î‰ÿÅÿwÿ™ÿñ”WŸn®ÿÚÿ€ÿÂ#BÑ.ÿß+Ü’ÔœMH‰’IÔua‰ ¥ˆpˆSE/Af—Œ0ÿØÿÍBX&ÿæÿÎÿÿe©4ÿÞÿÝ=Ä+ýJÿ‘ÿBÿªZ€Téb$2CržÀÞÞÛ³s6 %W{¤Ú,/"þùíàÙκ¢—|I ÿ×ÿÂÿ¿ÿßÿð^¨òþç:ÿäÿ~ÿhÿ€ÿþœSrÿêÿªÿû— Bä[ '³A•–Z@L©w ­‰©—}w‡«=NNINzŠbÿåÿäNV.ÿñÿÛ^£¨t.,°™ÿðÿ†ÿÐ_†4ëœcUMdx—¿Ï˦†["9Pr¡Ô$ê͹¥Šx^2 ÿëÿõVØ  Ó“Nÿä|óT8Â'ÿ½ÿÞ\eDÏN`Ð@gQA@g¬†-Ë››žsXpœ´8MNPq‚vDÿàÿý5SHÿÿ >wœ¬R7c´ÿô™ÿ¥ÿ·.ëw—…ºoGSYv–´ËÈÀš`3!27SxªÙù# èÒ»ž~]@4V±ÆÇ©•uJ) ?5 ÿ¾ÿÝrph÷ŠViÁ 7;.AcŠ—”^Ƨ¤‘|XRw¡§ $DW]ggmY'ÿÿÿø/EKA668[¤ÓÉŽL>vÇýÙaÿúÿãHÚ[m½ˆ|imsŠ©ÂÖɨyWLG[q“²Ðìýܶ™‚cM38V{‹‚zb<'.GQY\w´èâcÿéÿ¥ÿòŽ4Š[öu¨Üô)h’šuW.ãâqSH^|ކ#=S[WRSnrIÿ÷%N[O?9<^•ÁÖº„ZSƒÔúÒsSÕEl] ÏŸwsx•²Êߨţ‚qmz ¼ÞöüÿíÅŠˆƒ~pm‚‘‡hN:$+Gp…–±Íùò¿Zÿßÿ¸ÿås[hÏŸ¤Òé÷û!Jx‹‰b9øäÆœ`>>[ntm=RXXPGJeq[1 GRLEFVmx‡ªÁȧdCf¯ëä˜AIŸü-úÆ¢ž«ÇØÞáÕů™” žŸ§º×êëÝÞÒ¯‘Š™¨­¤‡y_G03@i›ÄÙÛïéÙš5ÿìÿÈ|ñ&îÊÉÙßÛÅÅè!NeuldJ+ ýëÈ™dHFZ_^^+<FRTLFR_fT$ 7ZgVAHbt‡ª»­zPHuÁíÞ•H$*l²éõå×Ýîþþḛ̀™–Ÿ¯²°­´ËàæßÝѺ¨§°¶°¢Šr_RH0,7h§ã Ï|*ÿæÿësÉòìŹÀÒàÜÏÁÊæ5KedT3 ÙŸp[T^cb_ )EW\RII`gC NodG>OnŒ’‹“—”‚_Uq¥ÖÔ¦Z5‡Èñ '"ýÓ¬‘•§·¾¹´¿ÒâçáÒÈÁÀº¬–…rXJQZH>Do¬åØ|ÿíÿõ@Ž¿Á¢“š¹ÖØÆ¶´ÀÙëÿ,PZB)讌~jcfdW6RjjTBXlb?!TniP>LoŠ—˜‘™–}eVi–ºÁ•O 9oº0VTK.⽡™’ž¶ÈŸ´ºÍØÏ½¸¸¸°Š…~bMO\PUr©ç Ô})ÿóAŒ±¥€j†¹ÖÔ¿§¢°¼Òè+CTD8>컫£…g]Q3$AesgPPZf[+/c~iC:S|ž¡’”—šhPUy¦·¢n:*0rÈ!hte7%ò䤓¦½Â¹°®»Å¾¯§£¢Ž‚††q]Ydbu£ÓúïË„2]•©aGa­îñÄ¡”¬±ÄêHVM*ú?6 æÈ½¯‰^D0 ÿýÿý)Lh{rZEP]O5BjteQJZy˜—Ž”“ƒpah€™¨™vQ0I‰ñWˆ]G&úѳ¤ŒŸ¬³´´»Áº°¥¡š‹{tpa\dz‰¿Ê¼aA*<k”˜}`WdËèÕ§”’‹’•µô+B2 11õîæÑ§xJ(ÿöÿûÿù*Foz\53H]_D*+Gj}sZKW}ŸŸŽ‹žŒsag„Ÿ¦fXk¹k‰n`9Ö¶©˜…ˆ”¨·¾À¿ÈȺ§ š{h^Wcx¤¨¯™h<';\„¥lCGwªÐãÒ·œ™‰‚»-* ý!3* ìÙáܵ{O0ÿòÿûÿö>RJ509GQPE9<Rlzu_Zy¢³­¥š˜•ibnˆ¡’†¦ì3ZZaH!ñ͹¥œŽŒŸ­¶µ²½¿¬“Œ‹„zjfo†œ¦§—ŠtPANr•“{REdŸÈÚâÔȵ¡“‰§ÙïâÓÅ¥rB)ÿ÷ÿðÿýÿî /881(-H]UC=Kk…tœ·Á¾§Ž€„‹‚thkx¦³¯³Ñû.GE3 êζ«¡ž˜™¡ªª§°¯‡…„‚}Œš¦ Šp__bvš­¤bURpšÃÕÕáãåÒªŒ†¦Òú$õÒÇÈʵ‰S)ÿ÷ÿôÿöÿäÿô -98+'@Z[L=A\}†ƒƒŒž±Àº¥ˆŒˆwsp}—²ºÀÓìÿ)31âİ£Ÿ”“ª«§¬¬¢–‘‘‘’’‹Š€hTM[m„žŸ‰k]fu“®ÈâðýõæÉ¡‘Çñ   òÄž—šk9 ÿþÿôÿñÿöÿêÿð2=709JUVLFMc|Œ††‘ª¸²‰…†ˆ†vo{˜°Èâôþ"é̵¨¤—•Ÿ­®ª«¬¬«©¦¦¥¥™j_\OMVi{ƒ„yf`l‡™©´Çï ûÚ¹¤ª»ÚòýúùêÒ­†ke`E#ÿýÿûÿ÷ÿñÿýÿþ *17?GRVQJBPt™ª£”‡Œ™š•Œ€zˆ~w{Ž ¸Òéù ùæÕÉÀ·¤™§§£¡¢¥©«­´µ²z\OSOUbs€„ƒ|vvy†¥¾ß íÒÆÉØÜßåíýù乓mF-   ÿúÿýÿõ ÿÿ#.&,;BGOUVREKj’®¯Ÿ…wx€–‘€ru‚ƒ‡’›®Æáù #&êÜÕÓÐǵ§£¦¤¡ ¡ £©°»¹¯•t\S[^epy}~ƒˆ‹|¡Î÷ ÷ÛÑØåéÚÅ½ÄØØ¶€\B# ÿöÿòÿù &ÿÿÿþà¯üIDy† „6ú<YCËd—¢oP=`DÝW˜Þh+ÿ£lÉ<Ý‚M(÷¬9 ³ ? å È ´ Å Þ å Ð ˜ ] ) ü ó ÷  / = 6 & 0 Ž  Ÿ î+ ü ! ± ] g Ž ò C — Ü.z”N5’ÕGu•«ÏôPÕgô¡e3 ßÊ`ö’t…ßFà … ý é ðØR_v¾™Iö©sG),àT]“c÷H¼Eõz¹ËüQ±5ÊM¨é/ –  » z m o ` , Î i  ì ò ö  B a p \ @  ö å Ù ç   $ &  I Ó – D ž à   O £ × 9 Þ ñ < O _ q Ÿ Û 6 ‡ ï S à™CºþG“ë_Ñcõ­}Hx§†¥õ^ÓÚ±Û࣎ŸÊ*o Í_ˆW9\e[C ÐrÃ"1áö­ãÑ´²½©Ä‹ Ž q Ý c ÷ ­ [ ( ò ì Ú ¯ s 7     2 F G >  ê » ƒ | ž Ð : W O €  ¯ > p ‡ ) ¼  O Õ ¨ ß  . 8 , " % / U ~ à  a ã V œ ¿ ß ) Ž7à®sO@(¤„ñ­½ÑË NrR[„Ú ì§x‘ÀìL©ïûÂMt”!©ùJÅG•]#Éw_V ² ( ß ‹ = Õ ‚ H 3  ñ Ì « l T A ; 4 5 5 : E C :  â ¢ b 2 þ  7 q ¸ ú % . G › ø > ? 1 Þ „  h m µ ì  1 '  í È º º Ú ô , { Á ç ì â @ Ë Y  ¥Vä4Ñ£|ÈoÿUÊþ| pôŒ[Ôñ•7õãßF.â'*º|éX(ÐÜç°q]•àìØÓÚ Ô  U ä a  È µ ¤ ° Í Ð ­ d " é · Ÿ  ˆ « ã      î Í m H , #   . R o — Ë ö  O ~   ž › i ( Î j 1  = T v š ¦ Ÿ ~ ^ F 4 9 8 \ › ã  &  õ ø 8 † û Z Ø n  ˆÃÏàxgEàª51[[X<Um:ô’bãZ(¢™vÓQCKŠlX’1þ v õ ¦ 2 Ï ‡ D Õ ƒ R l œ Ù  ó  ¨ a ! ö  C „ ¯ ³ § ‰ } n V 6 úïñìêëêÛ×ç   # ; X u Œ ­ ª O ѯ¼Ïú ( D J < : 9 2 3 . O ‹ Ü * L N ) þ  ( = ~ á Y ¡  { V7š?ù‡’hà†g›óîÈRO`¾Í€c¾þ` ó¶€3¼m @ ‡ Ñ x q  ³ n N A t • } 8 Ø { C 6 ' %  ÿóååô   ã¡g*î¸W('+5B_‚­Ý÷üòéþ&oÀ , ) ü  . 0 * * 3 Q s ž Î è ð Ù ¾ © ³ y ´ ä   ÿ DÎLŽŸfBÿ¼TÿX˜g"¤s6Úqîb-~y‹sж¡› r Š Ê u  %  ¶ ; î æ î  [ l N ö ¤ X ùæÝÉ¥LÒ—‚zšÂí"çoø{ ºd0óëîÜÙå ;p½ÏìdÑ`ù^œ‰e>>[qˆ˜£«¹Äð = Ã Í Ë ¸   ¸  c ¥ Á ¾ Ñ ó „ 5 Nx £f¹{D¯5ož¯±›‡¦óq|?E[v ³ à  ¨ ‰ _ W X F ý Ä É ó   î ² m = 0 = R .åL¤‚<úãÆÎÝ0ReéfÖ¦”…}nS& 'O‚ªÈÜüpÛ}4ÍG`]*öó(nØGžÓé  3 W z ¬ ¿ ¬ Œ ~ › Ó  9 Q d ¥ ô – W : ° 1ൂ˜ÿ³¡»¿÷åb¼p ’ Û 0 ’ è I =  Þ œ g 5 = } ­ ¦ HËY!O«VÀºªÏ+ ü&3>IOXU_4ãhí›kt{Ž•€T!ÿð"E]kt€‚­åaù ?¿–]) F™?ü¥)RdODdµ / $   / Þ & _ ‹ ´ õ H ¾ A ³ ô 5 ˜/˃Aélßu$ „ > A b C ô ˜ Z t b ×  ” H ó Õ Ý ä Á l ¹™ªÊ½sö€8*.¼\µò&`ÕZLÒ—iE"ﺄkdwˆ’–ƒfC&,>MQOOTRh~Ì4ÃYÃï¶Œ”š˜rYüfWü$«CÊ 6 H W  ¼  4 E 8 ; t Ä  < s Ñ L æpö^ à v } Š ’ i ; 0 ; h 6 … · Q >   퇭mG=üßã­.d¦p0ù \¼":ž:Ú‚O$0?KTNE+ éŲ­¼ÈÖåêæàßçñK˜í=Ÿ¶­¥Ž[]z Þ¸eŒd&¡mnQÃëÈËò @ ‰ ¯ ¤ z t £ ! ² ) n m c ` x à  € Ÿ ; . <  ü è ð  % ) Ì ~JX5 ûÔ3²2Ô–KüÛ¨DÙH™ÍÑÐÝÛÍ¿­«ŒGô¶š‰šÄðAII%ýÊV& ÿý !6AJYnŠ™–ŒŒ›¦Ãáe· /:²…þ‰fƒ„¿0/$Áé)c¨ë  ó  †  _ } z Z K c ˆ m ¾ ¶ t = R ‚   t #íuF6í•Wäˆ~Å’™ÊÍŠè3 -Dœ#€‚dõ€¾˜ifq É@v¥´Ã­“[ Ýi<ÿûÿèÿ×ÿáÿõ(?Xx£À˾º¥_?a¦#¢]?Ü6™ey1CSЬÀ +˜È?“ïU„iT‰  } á 8 7 ¸ ‘ } X  , ×³ä  ­/€ÙQëž,ЖrRücÊaTm˜²nà:¾¬¿Â¼Tãs_–Éö3E\_Z=%ùLJH ÿÑÿ¨ÿŒÿ~ÿeÿSÿDÿHÿPÿfÿuÿÿªÿÜb˜±ÓƤ^ ÿèÿè(bº-tœXðaÿÚÿ«ÿ¬a°§=ás«à>éw—˜×Qå [ µ Wå›zuh‚aG4PH‡^¶mò|G20ÓEÚÁ g—~—h”%³ <írÔP,) – <\?$òÆ—f;ôÍ­’eWUVK8) ùæß×ìMx”¼»­aü”J+ÿü/˜"~µU¨ÿâÿCÿLÿ°sfynƒé„:Ì"Bƒ2õb¦vn¸¥y)äÏø„«“e?ë†ü‚îF•Üe Ðrè/¤äÒHTæ¯rõþï¦cMZ§øM–·Ô¿¡[Ã}\FR]v‡¦Ñ%9TK1ùÏ—Z »iÙ²¡|e`emSϨFÿÿ„ÿ«0×3=µÿqÿ ÿkÿö“åඪ×p6è,YÖqñ]Á#šf¥~8D<jn_ £ ±Fâoâ[Óš“ÁÝÒ`X»]ö*2;¾¦æÎ=3/;má r ì E 9 ¯ v D ؇J*J“Ñ  U ò @ † § Ç ´ ‘ M  Û • 3ÎOÊ<»0õoÊ>ö͘ZÎ÷4ÿžÿ·"Ý~–T–ÿÅÿaÿ€ªîÜ‘J})v¨è3–Z§ñB§_yT+OX˜³Ÿ9ÍMケKÀ¶ÌõýùÙ TÙN ‰ $ ™ Ë ‚ 7 ¤kÊŸ”6¾po°ÝñÞÊÓDоì!U¹ßñþïÖË·f7Ôg³  ì § jD*F_¿5ÚZhjÿ½ÿ6ÿJÿŒ|ÿwÿÿ'ÿzÿýanÿç.Ô[Â2|Ô1v˜³æ>º(2}ƒq/Êz2ñ«HÚöbŸê ‹èù. " à Ök™Úüÿr —Måwn%°ù=p¡ÀÐÒàéìáÐÀ´»Èê6T`‚c2‰Ü¬oÈFp À # Ú ¢Õ5«‘Gßú]¤FèÒ)ÿØŽè´ICž!½é Iwzs¢}ÈáéÛ}™8ùâȤP$÷ŸÀy©¨ @ À ò bokbámþ ™!Û"/"_"!î!·!t!J!!K!×"‚"ó#"ð"·"Ÿ"˜""Œ"ƒ"~""‚"„"w"`"A"""0"g"—"Ç"ë# #Q#_#O"Ä"3!* *²+63òâ²Å õ « «§„7ÛY6~·~æàÐ)2ÿÞÿ|ÿWÿsÿõ++@L2?‡ýr¦—u_d…×ðÿ&"S \.F%hÛ Þ ?G²‚£ˆÁ!¤#f%l'“*+Á,ú--.,ì,æ,ù--0-;-r-ï.Y.ˆ.Q.-¢-W-2----1-;-F-]-`-P-(,ö,ä,÷-/-]-„-ž-´-ô-ý-á-U,Ã+Ý+)è(«&ð%(# î‚Ü'zk ˆs˜® œ P  è 7Ô}ôÔG¶ˆ£| FXÁ-9ð£q{¥Ÿ£¾h Ž±ÑBõwBhçRõ4r ó J .½BÌ>€³Î!ñ$#&b(­*å-1/¦2 4 6S7…7¥7Ã7¡7Â7õ8#888"8*8†8ã98Ú8š8[898T8€8Ñ9!9a99 9È9Í9µ9~9A9+9=9z9¯9Ø9õ9÷:9é98®7Â6‚5^3û2‡0Ò/*-L+‰)O&Ì#é þmqÃs~x?Ö_ ã ì · $FYëçsäZ‡úØýý¼.ÿ»ÿ¡ÿÞ 45;w§°ª   _Ä1~Á ³ ­ ! Œ:Ù¸‘ÓAô‚!!#ê&‡)+,Ç.0¡35œ8):¢<Ñ?.@·AÙBBOBPBB½B×B¼BmBTB£C%CoC‰C‰C™CÍD>D¼ECEÀF Fí=;G9’7û6‹4Æ2·0(-Œ*÷(&w$A"‚ çÛ éúß5Ðg°† h   z”Áu!ýB¿EY‰ÿü YB$KâÅ_W¥ ûwïWãè·©“Î+ Ø#x&7(ä+À.þ1á4M5û7q9(;>K@íCMEGkI³KWLŽLãM:MJM’M¶M¸MˆM,M,M¤NkNòOJOˆOÒPJPÞQnQØR4RMRZR8R(QðQ“Q;PõQQ5Q®R)R¨S S_S¯SvSR PìOGM¸KÀI›GTE+CBA˜?Ô=Å;]8í6Œ4^2R0.+ö*f)*(&þ%># v4[Ñ5&Ñ} · 豺jQEÿÜÿÂÿôÿØÿ¯ÿ‰ÿ’ÿÐ •BÜè;â—U6t W"[${&ü)Ÿ,i.ö1¤4|7”;=Î?ÑABkDLFæI¸L MÔO|Q STÃUöVJV–V†VŸVVVgV:V†W;X8XöYwYáZ4Z±[[n[}[ƒ[K[Z¶ZlZY—Y?XüY)YsZZ¿[u\%\«]D]^]U\š[ÒZ€YMWŒUS6PéNÆLïKHòF£DZBM@‚>É<Û:¹8r6g4¡3E20›.¥,$)›'M%j#¿!ðÌaëÎÏÕiv † &3 á¾é«V)ÿÜÿ¾ÿÔ*I&Ã$/!ü!Q !["F$F&S(£*,š/1ñ4Ã7Ž: <Ê@C~G I›KLLbMðPR¶U2WXMYŸZû\Î^A_H_p_Œ_<^û^¿^‰^ ^º_S`+a/bb“c cIc›c¶cÆc”cabùb…ba”a1`±`e`#`a`ÄabTc/dd¾e—eúf.e³e)d2cmb:`Ô_]3[WYÃWîU¹S=PÖN¸LèK-I1FøD¦Bz@€>ß=l;Ç9×7c4Ï2`a2b]cÕdée¨e›eydôdldcídCd©epfDggäh\hÅhÎhÒh‘hSgìgg fheÊeIdõdded6d}dñeÅf‰g]h'hâiÂj@j‹jBiçiShùhugÓfÞeæd³c·b3`K]ê[›Y…WÂV$TMRVP_NxL¬JîI4GFE?Bä@{=æ;E8Ñ6”4‚2v0-t*z'Ò$´!=>,VÌÑ µ 'à‡ÛðF”>á;a8ô6ë6l5Ð6ª7Þ9÷;Æ=Î?´BD«GzIÒLCNôRU«XÑ[y] ^X_h`ÿb°dEetfmg&hhéjjÏkckHkjtiíi¾iÃjKjÜk¢l]mm²nnon]n:mÆmZlÉlCkœjÓjiˆi=hìhåhÒi,i²j„kBkûl§mBmÿnsnºn“n\n mímÈm’m'lµlk£j°ijg”e¶còba@_Þ^W\Ã[YnWŸUÉSœQYNÎLUI­FçD%Aq?=:Ò8S5A2G.µ+&Ä"TÜ•ÌÝ vé¹^Þ¾sHfE1BÿA@¯@5ABJD@EØGºIºLNePºR«TæWªZÃ]Ú`FbIc{d»e¹fâgéhØiœjnk#kÉl]mm™mþmåmœm+lÒlØmmœn0nÞo~p p¥pýqGq#pìp_oÙo-nŒmÏlíl,kŽkSkkpæpœoÔnåmXkµiÏhfMdÛc(a^¤\iZ9XUUßSO&JËEèA|=8q3Æ/*±&€"´Ã*Åôa5_É^Ê]Û]»]Ì^‹_9`2ab+ccd¤e¥fÅh&i¼kRl²mÛnÑppùq½rrKruràsNs«s¾s´sos4rñr·r†rZr*qÏq¯q¹r=rÛs¨t\tóu¦uïvuŽtésÝråqâpòpnçnmwmtm—mþn8nqn­n÷oRo oàoõoûoöppppsítht¥tŠt‚tVtPsïserMqo©nAlùlj×iJg@e@c)am_7\çYk94Ñ0|,(‚$œ ÕûÂeÈdídMcÇcÇcêdgdÌeOeÑfgfêg hai…j×lFm~n™oÍpèrrÞses“sÛt&t“tèu&uut®tVsÿsÁs–shs2rÇr¨rÍspt tàu€uìvxvvuÆtîsÆrºqºpÈoænÔnm‹mœmÔnGnŒnºnëo o7oIoQoBo-o&o5oYoko’oÓppApcpœpÏpìqqqXqºrƒsˆtquu&uBu/uIu%tèt7sor\qEpAoŠn³mœlj~hºg4e\cª`¶\òXTT5PJL©HµD?b;7=3o/+µ'k"Íiùi“i=ii iiDiai‡i²iäièjKjøl!mHntodp[q˜rÅsÏtjtÞuu|uÚv;vxv³v©vŠv-uÌufutÙt€t1sËsÌttÅusvv¯wwkwVwvBuOt srq1pdomnÊnKnan¥oobo|o‘o„o|oaoDo!nönånéoo*o_oªoópp3pRpfpip|p‘pêq?r stUu`v v›vÍw vþvôvŒvuEtUserÁrqSp7omžlYjîiàgÁdÌ`Ñ]YŽVS*NøJYFB;>š:Å6¢1Ú,Ìl kÙk k|kak7kkkjúkjãkCl m8n%ooîpïr2sGttqt×u!u…u×vv@v†v•vv'uÑufut¤t(sØs”sÃtt¾uWuëv{vÖw:w+vÿvKut‡s°rûrQq¼pÿp€pp6p„põq4q5q,pùpËp’p\p"oÝoªo‚oƒoŠo´oòpp#oÿoÞo¸o‰o‡o–oìp(p×q¿stLumvxwww†w™wRw vcu–t°tsar²qÞpÿoþnþmómMkæiÝfÕcÎ`È^m[ºXUTOPxLÀIvEÐA¿<Ò7›n)nmþmÝmmHlúlÌl±lulYl-l‘m_nxo.oâpÀqÂrçsÀtFtjt¬tÝuuFufu‹uÞv vu³u^téttts·s¡ssét=t»u5u­v!vsvÑvßvÝvguÄutwtsÁsjrárr:rkrÙsXsšsˆsps)rër™rEqäq{qpÄpœpŒp¢pÂp³prpo¥oZonñnéoEo›pgqSrsÃtøv9w%wòx6xkx:xw´w0v€uâuGt´tsŠràr!q^pópnÉl«j_gúf=d6aª^YZÿWTˆQ MHB³o‚o†opo4nÌn`n mßmÌm‹m}m‚nnÎo¾pQpìqÖrÇs¥ttKt(t tsæsÊs®s¯sØsêsÓsosryq×qeqq/qBqŠqÂr%r–s-sÈtatÿucu¼u®unutýuuut·t{t_t¢uu•uÌu¥u|u tÓthsøslrÛrBqžq-påpÏpÆp‚oöo4n‘nm‡mLmm_mÂn¯oªpäqýs.tŠuÇvöw•xwñwøwÇw›w?vÛvXuÚuZtétlsàs9rµqÞpáo\m¦kßj‘ighdÿb__a\çYÔVnQÓLºqbq‡qƒq2p£p%oÍo“o€o@oDolpp¹qqúrs_t&t·tÀt­t@sâsrsr©rLrqñqÍqqp¨p oHn¶n\nanUn†n©o$oµp©q·rÐsÙt„uu7u?u9ulu´uîvuôuèuúv>v§vìvýv³vguïuƒut‚sêsNrœqËq*p¼pžp£pjoÚnåmým$lRkÛkak‚k»l§m¯op`qÉsPtÅv=w(wÔwëx wûxx wðw™w2v²vKuáu~tìtJs`rtqIoýnÂm×lñljƒh¢fDdbaà_1[$Vkr±rûsrÄr4qÊq‡qOqDq!qNq¤rHræs‡tt‹uZuæv-uÚu„tÍts=rqÍqploÀonbm¥lðljðiòi3hæh…hhi)iÕk2lÊnpqAr;rÝsŽt1tòu•v%vtvµvÙwwDww¨w¨wGv×v)u…tÏt,sgr”q‡pMo9n\mïm¸m^l­kŽjdiBh4g’fófùggÞhêjžlEn"oýq¶svt´uÉvCvªvÕw-wpw·w±wwv¼vZvutÍs¨rqHpo-ndmÇmFlbk!iphfHdpa?]BsÁt6trtwÑvltxrvp9n:kûi›f»c’`{]Î[ˆYWVãS´PáN¥MªLÒL®L4LHLFM~OQÿTÎXt\'`Ud‘h¸lÒpCs®uþxyz.z¨{C{j{¥{"zoxíw{udsup›myiie`å]ZW$TŒQ“O(LýKÑJ¸JkJJIJ(J¹K_MbOºSFVëZÂ^Hapdgnj_l®n½p qœr«s®tfu:uËvdvv˜uüu sës.r¢qõqRp¶p3o¿oJn½n'mÐmkîr¯sCsét’u%u©vvQvªw/wÆxfx·x­x›yymyx¾wïvBt‰ro›lÑjVgŠd~`ø]2YÄVäT“R5O¡L]I”GmFEÏE¦EDýDÒEýG–J¯M²Q±UªZT_%d imiq›t‡wGx½z+z¶{W{`{’zùz5xwvÂt*q³nj;eR`$[ V‡RýO¦MJG«EqD/BþB¶B’BáBÎC3CŒE;GPJæN©RðVçZª^gaàe‹h‡k4lýnÎpqfros˜tqu6u‰uúuÂu%t5s£s%r‘qïq@p¬p=oãoenòn´nQmŸq^rrçsÎt™uCu®vvavâwGw•w‘wRw/w¢wèwÇvÍu÷t r okðh€ebaê^YýU°R OL½JRGÜDÙBc@z?º?>â>>> =Ë>ó@”C±FœJŠNiSOXŒ^Fcñhÿmãq…uw9y4yûzÒzÜ{%zjyxw=týq£nqj e[_¬Y¼TNâK G‡EBz@„>‡=P<;Î;ÊN@CTFÕK/O[S WÑ[à`$cÂgijkµmTnýpKqÀrËsªtt¼tÐtŠsÓsRrËrJq³pùpXoèo¦oLonánªnDppÝqärösát«u$u’uàv`v¥vµvvv!vvqv¤v_u@txr€p l]hÄdÁa \òX~SÍNþKG¬EDB²@L=v;89j8§87Ä76¼6u7Ÿ9Dm;Þ9¼7?5U3³2ô2[21\10±1¤2ÿ5¨7ë;…?ODàJóQÛXg^Šdªiáo'rçv\x'zz{ :&7º5:3b16/›.3-‹- ,Æ, +­+4+·,.0J3¦7A=CGJ®Q»X’_fehkyptRv¶yy£zwy-wžs¤ogi~cë]>V=N±Fþ@E9ñ51Š//,®+l*>)ú)ª)à**‹*î+,4-w.Ê173ž7€;ÇA0FlLQ¶W!\x`ÑdþgøjÙlÚop†q½r[s6s¤tsÉs+rsGr`qÕoMkÜf|az[®UêO¹I^C?<ï894=2&0.µ-+ó*ò*ƒ*3*)’)((}(¥)ò+-î0ÿ6s)T(×(`(=(2("'ë'v&Í&g&&Â'C)~+Ó0Ã6Z=êE,«)Ù(4&¹&V&&9&-&%&&%ê&"&Ž'Ê(¯+ -¸2”7Å>’EkLŽS‘Y¹_¤dJi lbo‹q>rÃs~tsu7vRv°veuvutfsur…q¦q}qÁrzrÞsGs¼n/n‡ooµp8pcp=pXp,oÈonm¬n nÙoGo.ojnBlóidŠ]¤V¸N¸F¼?7]11+'o$w#÷#z$$v$ñ%B%n%¦%¹%×%¥%6$­$4$/#ö%&)¯.4é;C­KÕTV] dkËp'sÜt™u°tcröoCkmeõ`³ZQS¦LE6>ó925B1„.ö, *('N&¸&²&p&A& %ô%…%Z%]&&Š(f*o.Ö3º:™A~HöPSW]xb§gôk™n÷pžrr³s|t&u>uºuŒt¼tRsÌsr\q–q~qårÃsCs¾tCo™o©oÉp"pPp1oÕo¾oenµmámlámrn\nân¼nôm€k¾g2b6ZÑSSJàB€:¬2à,ï'#$!!¤!Œ!v"Q"ò#€#Ú#õ$$)$T$H$##J#C##Ë$‡'¤+h1±7á?¤GPXƒ`g€lWpˆqÁs2r4qmäj£eûa\ VYOÔHíBž<Û8Ä52A/ ,l)Ð(S';&þ&‹&Q&%á%d%$Ý%K%ƒ'(Œ,i0Ø7…>EEãMdTr[Waf¿j¨nBoàqLqrrms@s¯sŽrêrˆr"q¯qJp¶p¸qEr=rÒsYsëpõp»pp|pUoèoUo n“m±lÞl)l\m/nEnönÐo mXk5f`›X¶P­GÕ?76/M)Š$ !o­æ ã!›"""|"’"¬"Â##"ï"œ"c"]""¨# %Ž(¨.G3ç;@B¾JÜRçZPaôgel/npoŠnÞl%i^egaÂ]@X¾SL¼FP@\;Ñ7Æ4®1 -ú*¤(x&Ú&i%Õ% %V% $‘$?$$N$q%µ&Ò*B.[4ñ;ªCuKRhY¨_Äeñj+no¹qqq>q;q¿rqôqsqpÄpˆp]oçoöp›q£rBrÎsjrKq¾q'pÂpMoœnãnomílûlNkálrm‹nÌo®oŽoÍmÚkdeØ_üWÌOyFx=›5µ-Ð(B# Ø{Ð ¿!e!Î"""%"9"‚"¦"x"-""&!ÿ"i"Ÿ$©'K,>1=7Å>UEzL‚SSZ‰`/e6gÈjpjÔkibg¨dÖb[_ [âW'QKDß?:Ò6ø2Ç/*õ(.&%b$´$$8#ë#{#>##g#•$©%v(n, 2^9@ÿHªP.W±^4dÊikmÂo™qpÎp²pepŸpÕp·pXpoÊoÁoÆogoop qq r/rÍsŒr¬q¼pûp?oUnƒmïmel_kÑk¦lmêoMpSp.phn>kyeŽ_mWNyEF<*4,,<&Ü!á …"¥ ¯!w!ë"1"'""""f"‡"I!ô!æ!ý!Ë!þ!ù#%ä*A.™4<9×@F(LZRîXp]c`}c½e4ftfeÖd…cxaN_J[@VZOíI·CÃ>F9z4{0+\(%p$„#¨#†#'"Ø"a"!ó"4"T##z%Ú(Ò.Ó5l=³EŒMeUF\DcZhnm=oFpÀpUpo—o¦oÔoÅo’oQo=oxoµoqoioòp×qkqýr˜tlsCrqpon*mˆmkýk‹k“l°n%o‹pŸpppn?k,dú^¶VSMÄD‘;_3]+~&Y!¨ Áhè ê!Æ"L"’"z"p"i"˜"§"]"""J""B"<#Ê& *-ø2¸7O<`A‚FïL°Q¿V;Yƒ]_…aæc/d–dÓe!cÙb³_'ZàT˜NeGßA°;þ6514+ù(m%r$`#e#="Ú"~!æ!s!,!F!?!º!»#%Ò+U1¾:2BJ&R?Yžaf¨kùn\po®o~oooEoLo9o oozoÞo¯o–oûp½qLqírˆuLsÞrkqoæn°mÎml™k“k5kclŸnoqppYpxmÛj`cÏ]WTøLlCL:2(*o% !` #¨  Ð!ž")"d"J"M"P"k"l".""K"¥"”"¼"Ä$<&f*-¨1¬5Q9F=bBG9LP#S|WZc]á`Çc»eMf´f1eùc_sY@RñK×E)>Õ8i2Ï,ú)%Û$Â#µ#ƒ#"!Ö!! ¤ € > l '!#3(4.Y6Ì>”F«NØVƒ^TdUj lénïn´n°nGnSn„n¢n®nˆnœo,o²ošowo¼p_péq™r:u˜tripÚoŠn;mVlžl k%jÔklEmªnêpoËoÛm iFbu[ÞS’KB!91Q)Å%5!O P^Òö ƒ!)!§!Î!º!Ø!ô""!à!ý"k##,#œ#ø%²(+Ë/]2î5í9!"!N!€!„!…!†!×"b##|$7$é&õ)¶-t14#68Ê;t?0C—HKµNêREV:Z×_wc÷fÏi=ikjgÆdÃ^WðPHÛAþ;5.¥*k'5&^%f%+$»$#!í! © ìl B æ$Þ*U2ƒ9ôAÿJR Z/`àgk%mánnQmèmémõn nm¸m©n#n­n©n”n¹oOoýpüqÔums¢qÜpnŒml.khj÷jiêj1k_l¹mïonÐnÈkÍgÕ`àZ0QéIl@ 7Ø0k)$ˆ Ìégzá X ­ ­ š Ö!!.!=žAEILL¼OéS6W$[¬`@dÁg¬j6jljüh€e]_XdPxIB ;+5C.×*ª'“&à&%Õ%m$¿#³"™!Æ!I ¶ õ Ÿ û$¦)ã1þ9fA€IžQ YÒ`±gškŠn‚n¸o n‡nvnanQn!m°mmÏnDng@×BD•G IÒLðO®R¹UñYÕ^bKfÈiÚl’l¦lÆi§f_|XÞQILAø:ô5#.Ò*à('†&æ&Ý&Œ%à$ç#Ê"Ý":!–!N ©!/!g$ï*29{A­IØQñZ5aJhlÏp p„póp[p=oòo˜onenn nVnAnQnuo:p;q½ssq`oËn%lïkäkgjújÃj5jj4kl3mNnFn8nvlXi‰c×^-VmNSE“=5•-ü(ˆ#x!ÝØÜ6•  z à!!!_"#É%}(l+S/Â5:Š?wBóEþGóIÿLNnPÿS4UÂX„\`dJh¯k”mûmºm¦jbf„_ÉXüPþIAœ:r4¤.k*¶('Ð'Y'Y'&Q%a$H#L"˜!ñ!°!!™!ö% *¾2¾:BKJwR”ZÙaäim@p’qqypÝp¹p\oîoUnšn,nn_nRnn·o›p¿rjsçrTpÌornl÷lk·kYkj‰jIj>jâkËlÌm®mÉn4l™joez`vY"QiHÄ@i8¼0ÿ+%g"T«cDVŠoé b É É!g"n$¿&÷*.3&8ê?D­HøLßOSQ¦S€UÌWøY´[ ]Î`ÖdEgëkµmüo¿on k'fñ_ßXÂPH@ø9 3Å-£*%'®'‚''&²%ü%$ #5"""!†"Y#('4,‚4n;¿CÄKÒSÌ[÷bËimup‘póqSp°p„p$o°onTmæmÐn#n:n›nÿpq@røt‹qœpU]c«jm·p¢pñq9pŒpYoóounÈmïmsmPmºmün—o*pGq–sNtëq/po møm:l³lhl k‡j¾j'i¾j j¡k~l+lm4l–k¸hOd™^6WkO‰6æ0æ*ê'•%$Œ#Ï#š#&"±"!¹!z!º""Á"Ö$£',‡2£:oA§IP‘WÔ_ƒe–k3mép+poßn÷n nFmÁmlKkïkêl›mCnEo.pWq’st}pÂoýoJnƒmëm†m/l¼ljøjii²jj›jÛk'llAlljphbç]yVZOxH @9L1ï,G'#$]!× Ñgèšj  ‚!H!¦#©&o+t0{6Ô<÷CäKRkYý`'eÅilm‰odpÃr/sGtzu3uÔuÕuáuBus7q,küeÙ][U,L¯Da<×5./9)^&-#²#;"w"A!Ø!…! é ã!U!²"—"â%((. 4Œiue`zZ SÑL·E>(60M*”',$"“ ¹óa¯ö ” ê!©"$/'$,¦2\9c@GNfU¿]xc«i6l:nàp qr²t tþuÉvv v˜vyu—u3s pjìdd[²SdJïB¡;3M-U'¤$¸"l" !J! Ñ ² m e q ì!H"V"è%§)T/Ä6n>#ELLgSºZ‰a£f½k2lÝn^mäm/lk¶k’kj¼jUj|jákÚlÉmênþpqr sVpµpMoöo±ooo*n¼nPm‹lrkxjÖjÇj×jÿj·j±kOkðl’k±jofãc]xWþQ]J›CR;¾5.ñ*Ù'$ô"”!s | œ!%!`")"$ú(*.4-;BkI‚PÈWé_qeEjZlÛooêqqërýs¶t!tPtåu,uKt‰t5qÞoi.b”Z QíI£Aj9Ô1ñ+ñ&a#¨!w!" h L ' : & D e û!s"ß#þ'e+¯2f9'@¢G«NŒU¸\(b¶g!jñl+mZlÍkùjèj•jŽjiÔi®j$jÈkÞlámúop pñqºr¸qpÐp£p›pxp6o±oCn|m\lQkžkqkek`jØjŸkkÇll&kfh˜eš`¾[òU´OQH @ƒ92Ö-ý)v&»#Ú"i! é Ð!W!~"["Ý%œ)9/‘6$=¿DÇKÏSYüaKfºkUmjoeppïqvr7r°rãrøsps´sÚs.rÿp§mžg}`éXšP®H„@S8ª0¹*¹%B"£ n jogŸ®ú B!!Ì#®%q)ˆ.p5f<9C|JoQX^dg»jðkÌl¯lk$jiÔiàidi,i;iÿjàlm1nEobpGq q’rPq q8qCq€q{qAp©p2ognOmDlƒl:lkúkLjäkkºl|ldkûiÔg“cƒ_pY¸SÓLÔE§>›7·2=-)±&P$}"®",!¿"+"8#;#ó'+(1Õ8‘@ G3N%UR[ìbÎg¤kŸm=nío}p;p“qq;qTq]q¡qÃqæq[qBokõf_ÑXP‚H“@8ì1 +%~"¶ C³ðùÝ(\  ¨"#B%Î(Z-2u9x@>G4NT_Zø``e¤hÅk‰l3lÚl1kRj_jj ini/i_jVkQlm¯n¶oÈp„q qVq½q@qÇrr}rr_q±q'pKo1n!mKlãl°lpkškjõkl;lvlljÿi’fkc)^ X¾RKRDA="6þ1+-)7&õ$œ#¨"É# #$C%<(À-/4"; B®IúQX.^xdýiAlŸm´nõoWppLp‚pmpQp9pTpgp”poÔm{jid¹^÷W­P€HÆA 9‰1½+’%è"Ü %^rcZ±Ï å"Þ$±'ã+*0m6F=ZDJÎQwW]ªb}g.iÛlGlÆm-lsk­jÛj‰jYi”iJi˜j·k¸lénopp¯q&qq.oúqqºržrçrär=q³pÞoíon;mÇmmGlukÉkˆkàlslÉlãkïkh fa¿]WPòJECs=+72”.<+~(²'L%â%É%ƒ&Ú(+É0b7Q>E–LæSãZò`Ûfæj”mmnnäoo§oþp$oïo´omoMo1oHn¼nFkòid^ØX,QŒJ9Bæ;–3ó-±'î$‘! JòŸ n µ"K$ë'u+W/O4ð;BH£NùUWZê`yd²hçkNm{mÝnmHl¥kìktkji¶j k/lmnD?x:r6Î3ƒ1/D.C-(.-/[3`8>©DáK‹R=Xž_d;i)kÈmén%n]nnKnŠnÇn²n{mÛm l\kûkdjØi fúc^ûY‚TXN&GŽ@n92ò-{)â&'#Þ!m ’Ò æ"3$å'8*Ê.–3Å8ý?6E±L5R^WË]Va×f,iFl‘ndoïoôoÑnùnsm¸lÚkçj´jRj©k¿lnm'n!nÁo*nÃnbmkàeªi>kìnÌpsq³qÍqåq¹qærqæq«q¢quqpˆoñošošo±o§o!n‰mDlGjg6bÿ^ÛZ UfPeK'F@Ë<Í9]7^5 3í23_4Y8;<ßCQIKOhUf[aeÒjGl„nXngnxnmêmÖmËmŽm?l—k¾jîjŠj!iÊhff¼c`_ÄZàV`P¼JCª<Å6·1 -(¬%è#."o!Ï#C$æ(*â/3¤9|?LE¤LR*Wæ\¸a·ežiQkÏn…oåpôp»p{o±o+n_mUl;kj¬k ll›m m¿nnm6l^jvh†^_bïf«jm1o€pmq/qirr‡rËrÌrîrÜr¹rSqËqYq7q)q poÆn‹m´kÜi‹eèb:]óYóU•P÷L#GBè?d=p;P:r9J9ÿ:Ü>sBÔHçNT!Ye^:c~gµk£m–o,o$o!nŽn;mÚmmlškõkjgjiùiïhþgÀdðaè]¯YÜTáOaIB´<µ6Ñ2-E*U'Ÿ'&ž(9)÷-n0­5o:“@°FŸL•R—Wò]a?e–hÞkömìpqq¤q@pýpKo¶nÌm¥lkZkkRkølkækñkojÊi%gzd²aÔWG\Öašf‚jm‡oIp¨q.r4rôsŠsÂttt'sñs†s rÓrªrˆqýq*oòo*m°kÞhÜeªaÙ^`ZƒVvQôMHÇECA@y?œ@xAnDÆHÅNPS¡XÒ]©aÚfTiÆmn¯p oïoÀo n§n=mÕmIl±këjòjBiýj j/i©häfÃdl`õ]×Y”TôO1IdCF<ö7ž2†/–,í,, -¥/_3 6¯;ôA¢GêMÑS=X¨]HaÒeqi)kÓnRoÊqtrrbqæq¥qpfoanlêkÖk|k¯kík™j¬j h¶gBd¶b^\Z†N¤U!Zî`Êeciìl nÇo½q/r3ss—ttOt®tÁt tLt&sôsØsQr~qPpo@màk{hÁeWb@^Ï[MWERÂN§JéHºF·FYEÔGHJK€OSóX¾]ƒbeÝiŸlCnÞp!q@q#pÓpo§oJnñnjmÅlékàk.jækkIkj¦i$gwdÒbx_[ZVGPðJÜD‘?1:>7r4Ú4^3¯56Ÿ:K>C„I8OT^Xç]„ame[htk‰m¨o­pÖr$r–rÇrSrq„pÔo³nam"l"k›kujéiÄgÉf'c¾a+]…YËU/PvFM‡T{[Y`åf}jm n}pgq©rÑsstt‡u*uŠu´u‹uxu>u t£särÝrq#p>n|lDiMf§cª`¶] YT÷QN©LyL#KÆMBNãR#UƒY¿]åbfPiÉmopÿqÙr¿r¤rDqlpØpVoìoknÐmýlìl2kæl$lwl„lVkWj>hnfùdba‡\õWóRL/G"Bk?<Ô<;+u¿uÒuñuÆu§u6t¢sÝs@rƒqópªnèlij-g˜eaó^iZÄW.T²RfQîQ’S(TóX+[a_b™fiámoØqmràsTsïsÄsdr•qæqIpÑp_oÛo&n+m{m1mtmÎmømám3lkXj”hµfvbr]öXºSÄOtK7HUE„DyC[DmE½IPMCRUWS[µ_jbMe–hik*m&op-qwr3ràrýsr¿rŽqãqoÀnSlïl jîiÁg?d,_è\WrRŠLâGDAj;e2€:ñCOKPRAYg^Ðc®fÎjldn«pBqâstuuWvvIvŒvjv>uÅuKtµt2s¥sMriqo&m[k.ifdcŒ`‹]t[XÖX:WâYp[&^%a'dzgjvm¢p(rrs‰tntkt†t'sÀs$r•r qŸq+pªpo!nˆnDnnÉnþnûn nWmÅm‡lFj¤gac¿_b[PWS¯PÈNLÍKvLOMœQTÙYO]x`æcÞf.hèk)m2n‘oëpâr r»s7s1sFsrÏrq#o®n*lœk£j h$d~`eZüUùP.JC=6É0H(ô19GA,H\OÈUÚ[€_…c…fi¡lnˆpWr.sZtotêuzu‡urutÂtnt.sÛs¤rðq÷pfn÷m k1hõf²dtb+``^{]Ú]‰^Ö`=bÈejhRjúm^oëqÛs«tyutïtÃt>sÎsLrÊrQqîq„qpto½oRo)oqoÈpp2p oýo¯ošn®mxjóh0dµaa^Z¯X U”TS6ô>UEüL§RüWÍ\c` dg„jÓmAo¤q.r¶sˆtftŸt¨t_t>t0tAt8t-sŸrßq›p|nñm1k;iUg»fCe4cÙcWcd-ecg{i–kÝmñoÚqñsuuªvJv5vu|tÚts rlqòq¥q5pÅp4oúo÷pwqq½r,rKrqrPr]q¿pûolíiûgd-a8^ú\á\ [[Û]O_õbHd”fÎh“j3kYl‹msnCopqr2rÖs-ssFsréqßpˆnnlˆj)h?dÙ`ÄZ¡TvMEÃ>6Y.ø'›!C×`è&&-&4(;XAñH]M‘R_Vx[_BcNfliek|mªopq=q¹q×rr}ssms©s;rŸq„pŸoZmÚl#jcih-gÂgfÂf¤gqhujk¨mFn¹p%qÒs7t[tôu¢u×v u¬u&t2s$rMqÔq«qRqpœp“p»qrr[sAsãttJt,t7s¹s0q¨oÒmrIrýs…s>r¿qÁqpnìm–ljßj.jiÑiÛiØjhk:lwm¤n´o‡pSqprss0s¦t5t¬un¡mªlRk+jrj[j:jijojÕkrl\mEm÷nYn¢oEoÞp9pdp”päq[qìrrÔrÁrqrhrdr7rqõr/r‹sDt&tÕu$u"uVuquœuXtøsër¬q o¯nmWl¸l:l=l>l|l¤lómZmÐn[nn9mÈm¤mÙnnƒo0oÉp:p#oèoIonmj‰g£c¬`H[ßWDPìJ8B,:,1Ù)i!É»¢ Tfú $,t>®"w'±,ë1²6*:°?hD“IsMÊQUpY\ª_˜b/d:fyh¢klðn‡ootogBEùIÒMrP»SðW2Zð^QahcQdáe³fôg¸hKh$gÆgDg!g!fûfÈf‹frf…f¬fÒfªf5e®eeded2c%a®`A^Õ]}\WZ÷ZAYÞZlZç\][_6a c^eéh`j‹l:noNp{qqÑqýr q¢q5p²pOpo¯ogonånØooQoqoWnìnˆnm¯m]m;lÞl|k3ipgeEc `·]DYƒT¾P%JæE¾?Å9‘2¨+¿$°Hþv } ö†·Cϱ & <)®ÙŽp"&Ì+@/]36_9ÿ=·AwEHzKëOÎS|W Y[z\^2_@`&`B`_½_Ý` `_È_T^í^Õ^Ü^Û^~]Á\þ\¶\…\;[dZRX»W5UƒSËR)PPOHN—O/OÍQpSUhWÓZß^1a]d$f9h\iík}lƒmœnnPnmºmVmlçl¨l‚ldlsl’lÃlôlülþl¥l(krjÎj5iöi-heÎc?`-]°Z¾W}SIOJE,?Î:k4 .Ü(¿"j/ö v #¾ |Ft°Ä~· ˆ  ¥þŒÓ}®#ì'¶+.[1Ó5²9¹=|ADÈHULOQS TËUÊVÒW(W2WWHW”WÔWœW VEUËUyU=TÂSãRýR~R+QÙQPNMK|IâHfF¸EÌE"EÀF}HKIøL~ORhVY’\¯_1aÍcìfg—i%iïj’jŠjxj3jiþjj*j\j‹j¦j­jÎjÁj°j)iahfgÉgfWd°b™_w\tXóU¥Q½M‰HÍD`?z:G4¨/)¥$k>Ài ®Â'Ž ¤aÿÛC'à¾çiÝ € vÞ³¾!#$'#*©.‘2r69|<—@BòE®GrIIíJåK:KNK(KRK’KïKÝKhJ‘IéIUHêH\GF“EãE_DùDKCVAþ@¬?Y>=;Ò;=:Ê;o?–AìDZGKN‹Q®TtWcYü\”^‘`‰a°b»bþc$býbðccxcðdPdpdgdHdsdudZc§b¤an`Ñ_Ñ^~\ YaUçR®N×JËF:A²=8Ú44.ë)t$gØu †ÙÂÔ”ÖƒÿWÿ¡ÿéÿŽÿ@ÿkg ŽË‰Äi y Þ¤.Ñ»#='<+C.à1Ñ4²7&9Û<>?@@0@?Ô?Ñ?ý@J@^@3?¢? >j=Á<â;ß:Ô9è9,8œ7Þ6Ú5|42Å1u0o/O.ß.‡/I0D2#3Ä68“;Ñ?IBæF,I+LKO!QôT@V–X Y‰ZZnZ}ZÀ[@[þ\—\å\Ä\‹\a\\È\É\![:YâYWtUoR†OîL…HîDX?h:\5ñ1Á-(¶#,ï”tÝ ¦M¾‡Qf/tÇ]ÿcÿ±ÿÛÿ±ÿØIÕà7fŠ n ¡ V{AÒ×G!$Ð'Å*;,.c0o23Ù4Ö4×4¶4M4%4%414:4643à3h2Ø1ñ1/û/.)-},–+j)Ý(R&Å%6$"Ä"V""Ñ#Ù%Â'k)À,4/a2½6E9<˜?°BˆEcGØJcL/MÐN…OO,O™P2QQ†Q QUQQQvQÉQïQTP€OMÕKûIÓGDÒA=“8Œ3‹.å+'M"ù/ Åx  7 ü‚óê`T–Ÿ"ÿwÿŠÿßÿÿHÿ±2ÿÜÿËF )ÐèM " ÉÄÇ©À!‰#C$¥&g'É))k))+(ý(º(l(&'â'Ô'û(('“&ø&%$$,#l"K Ôé 9\ò‰ œdbOfã#&Z)Û--0T3{6z9’ý<«:e6”1Ì,€($X Þ F†8 T v î @¢rÿÁÿ|ÿØk”WÿóÿÃÿ‰ÿ›<ÿÐÿkÿ°*U1ÿÍÿ½=’?L& u @ªÅ£—¶Â½Þ”ïñ¢=º)õ€ãñÅ&”È/Ÿ©Éì‘% ›  Ä™Uã^CD„"¤%¯(±+¡.»1‰4R6I88é9‘9’9—9“9Ð::(:H:‘; ;´;ü<%;69º7Ç6k5&4"2/‚+\&"¿÷ª 3 NÕN4ÏÜs!ÿ ÿ ŽpÿÛÿ•ÿaÿÖGÿ—ÿ‚ÿº;ÿÈÿOÿOÿÆ]´@!¾gOþÂ]i N ÀÔ~ßâGØwîOI5À"“5F~ÐþèÉc%^Qµ ! q ³Wž2Ä‚ P *‹#ûä½!ˆ$')ž+H,Ø-s-å-Ë-¬-È.N/ //é0U0‹0Ñ0”09/*-Ç,\+¸*Ñ)ž&ô#§”Ì=¤Ú ÍÆgÿåÔ¶38uÿ°ÿ‚ÿ·1z$ÿµÿË)ÿÀÿkÿ¯+ÿ÷ÿ ÿ‡ÿò^Qÿüÿžÿ®eÃ?ÿÞvò©˜ÇýME &  J · m † ø ¬ 7 … Ú ¸ b µ ˆ M w £ Ú ü ó þ ® < ZnU0Ft0îZé÷Ù h < .ˆÝK¬ýoƒ~ ¿!í"`"¬"±"¿#<$3%I&&S&“&^&+%‘$é$#"8" !!aVà Q –W#ˆð÷ ’œ»¸4ÿÆÿÜ1Y@ÿéÿ«ÿã-ÿðÿ˜ÿ‘ÿÍ%Aÿàÿ„ÿ¨yuÿÙÿ`ÿµV°yÿ©ÿ3ÿ˜Âþ‘9|(³ÞÉ¥EйJ´,v¥grð pxzˆ•‘‰\$Ò~7ùåÉò4´¸l“Íh  È ~7¢0JKádá~`má¦tûÌgý/ƒçŒðõ § Á g NúüÝs½KxÖÍwÿÒ)ŠdÿÓÿ× ÿòÿ¯ÿŸU0ÿØÿšÿ»V¸Lÿ¯ÿ{ÿàµ4ÒÿyÿÁßùM˜vÿ¯ÿ¾±¶^pí‰F&Z™s´Û”(‘Æ~a<CU‰¸ö<v¦²±¥¦¹¿ô8É`=-4Q t — ¾ º œSʸŸ™ùód÷Ÿa[Œu0» Ü Ë l ù~ú“f*RÑJÞ¿Ë!JÞFp¡Jÿçÿû16ÿá-Hÿôÿ©ÿÝ<pNÿÎÿ‰ÿþ¡@ÿ¨ÿzÜ7Ïÿàÿ/ÿP" OÄÿ¥þ¬þwþæÿÚ·°PÿÊÿ–ÿ ÿÃp¤³w9ÿÜÿ{ÿ+þàþÏþÍÿÿ:ÿ”dºÚïØ¿œrfsy²ø|²Pÿ¼|3Òmò‡õ e { W   , s ¬ ÷ Ѝ.®§ /¦˜¨ gÿ¿œŽžÔEy>©*-w™ÿÞ'uEÿÊ(sLÿýÿÝe’$ÿ®ÿ³•³)ÿžÿ™'`åÿïÿ!ÿ5GòŒzÿaþ÷ÿƒK-³ªž0ÿØÿß xè3`7ø—KÿïÿæÿÛÿø&c¤¶«—|waB"h¼,‡éWÆ;ŠÉÑ˸³ÉÔ… ¢ÄÁæC`Z/u¥1ÿðÿ(Ôª¹×]¾ü‹aŠ»Ž>g–DÿÉs’`ÿþÿÊs_ ÿ´ÿ³0£ÿ¨ÿ¥?ï;Éÿ×ÿÿÿäù—fsÿÿ"ÿ7ÿò©9”fŽÿÆÿ‚ÿœÿÜI¬Úã¶–pI4%4On}yxfF.26ÿùÿÛÿÏÿÇÿÞ2[|£´Ã¦v3ÿëÿÚÿéA™šð4æUxÿŠÿ?ÿ‚b[¤ÿÿÿ­¼\[ñ“ÕcÐÊVʬÐéÔr!(k¦¤OÿíIŸ¨>ÿÏÿËZcÿøÿžÿÄ5›ž"ÿ©ÿœèJíÿþïÿÁš’êÿæÿ6ÿCÿ³†/{™I†ÿôÿ–ÿjÿ¥ÿïI† ¸¶°©­ºÍÒ˱—zUGSkget£·Íáû å®ZÿÈÿžÿÏ!¦l·–N­ÿáÿvÿl¿î7ÿFÿK$ŠE§b§XíôÖ:³Q2g´¼`,‹»€ÿÂÿÉ(u<ÿÛÿ±ÿáV«“*ÿ½ÿ¶5Ò#ËÿýÿGÿÿ¨žd–Aÿªÿ|ÿçgñLNJùŽÿÏÿ½ÿ¸ÿæK{›´ÄÛñ ôϤzo}˜š•›¦²´¯Ÿ•}c/ÿâÿ¥ÿÿŸÿÊd ÚÖÂaÿÙÿdÿÿCÿûØuQ»ÿæÿCÿ\Ü;|(hºó´9&`hŠGX”ɯzqA*$]’¡hÿûÿ¹ÿéA^:ÿîÿÇÿöZ¸¹NÿÛÿ¶ ¸$ _ÿ}ÿÿymLžiµÿåÿ÷_°î ÕšU ÿéÿâ Hp˜¼Ý &>2èĸ½Ë̾«˜”Ž|^>" ÿßÿî'’ÿ=T&¼c ÿ¬ÿ®ÿìŽgÀ{žÿÄÿsÿ·z'K×1ÿé9âÐRD‡BÍm[†ž¤‰q‡G@5Hk“4ÿÙÿÏJa/ÿïÿØ r¸¢Hÿðÿè>¾#ûVÿ£ÿLÿ¥JxYøt1=\™ÁÖìäÙ¬m1 ÿú 2jޱâ:C7ûêÝÙÛв~nP(ÿ÷ÿÜÿÖÿøL¤õ:4 µt6ÿâÿÄÿÈ&¬p/†ÿßÿ–ÿíŠCê`1¾AŒ\>Bo§y‚¦˜€yˆ«.FOKN|ŽdÿäÿãQ\6ÿúÿäh¯µ6(¥ œÿîÿ{ÿnÃ\‹:ê™rrjt™»ÉÁšvKCYx£Ô$/ ëÖÒÆ¤|eS7ÿõÿïÿþ8zºõþ÷¼t2ÿðyã8¹+ÿ³ÿÁAò\@ÓW'jÝKgI>Ca€œ}+Í›—›œv_w ¶7TUSr‚wEÿâÿý6VN"I„ª¸–T6^²û›ÿšÿ®)ì~Ÿ†lj`bax—²Ãº­ˆQ* 6>Z€²å "( ëÚÀ—lI4*Cl¢ÅÔ½¦|H&-U  1š ÿÍÿÝalf÷‘buËC?,Bf†‹‹[ ¢ŸŒyYTw¡ )Pbdkhm[,ÿû0JND<@Hk°ØÊŽNE„ÖÖ\ÿúÿçOäg¤t.Òž‹qpv¥µÅ¹˜oUROd}£ÇåõÙ²‹jL>-7Tu‚€ˆ„q`alhlt™Ü -ðkÿõÿ¼ ™/…^÷}¶ç  -j•™sY0׸œlMEZv…z<Xc_YYprMÿû'S_SFCKl ÆÕ·‚\\ŒÔïÆn[ÝKqfÞª{qx˜°ÂÔμž…ys|€’ªÊí÷ùëÊ tnqjlŒ}`PJ=CYxƒ”µÜÓbÿáÿ»ÿî~P^̪Þòû(Jvˆ‡a;òØ¿œ_9:Zkoh2JWYSNRip\5 #LWQLPawŒ©»¿¡eF`ŸÙØ“CM¢þ3&Σ™§ÇÖÙÛѱ¢œ›ž—™¥¾Þîé×ÚÕº›‡‰—¥£“‹wU7")7[‡¬¼ÁÞæåª@ÿëÿ½ÿütíýÝ¿ÀÕâãÊÇî)Qanf`I*öãÆeEE\a_b#:HRPKIT^fU%:]k]JPhz‹¦¶ª}VIn³áؘO*/q»öýæÓÚïûúõàÅ®ž ¨²´³°¸ÍßßÔÔÍ»¨œ§¬¦‘zcNB.2@o©ß Û•DÿøÿîiÆöì¾°¹ÌÞÝÒÅÎð7F`cV5 þןnVR`dab0EPUPII`eA !OrjOESr‘‰’˜›ŒfVkœÒدcC™Øû  #ðÈ¥‘–ž°ÂÊĽÄÑÚÚÔÈ¿¶®¥“Š{aQS^UXfÊû"ìœ> GŒ¿Ê²Ÿ·Ô×Ç·¶Äâ÷ )O^H"#ä©…xgbc_Uÿý8QijVEXjaA#UrpXDQq…’š—~bN_’½Ç›U!J~Ã2XVI(þÚ¹£ž•Ÿ·ÍÍÁ»¾ÊÑȹ¶´­¡‘…†‚iRP[S_´ï ÒˆA F‡©£‰vŒ²Ë̽©¥´ÃÛñ )?QE19긨¡ƒdXL0ÿûÿÿ(GkylTQYg^1 /e„qLBVv’˜“““ƒ\FPzªº¤pC8<yÌ#iud4 îи¨ž¹Å»µ½Å¿²®¨Ÿ“ƒ{ƒ‡v_V[Xm™ÇêÝ·t1(^ކ`Lf§Þ๒š²¸ËïFRI&ù:2 æÈ¾¯†X@,ÿùÿü -Ok~tYBM\Q9Ep|lZQZt›œ“•{h]h‚›ª›~^;O‹ñVˆ‹X<ðζª•Ž’¤µ¿¿¹¼¾À¹°¢—Œ}utuiabs…ŸÆÒÅ–eD5N{žœd_n–ÊáϦ–•–šºø.F6   /-óìäÏ¥q@"ÿòÿÿ )Ep|[1-D[aF,0Nqƒ{cPX¦ªš”“™™ˆtdk‡£®œq^l·i†gQ'÷з¯¡š”£¶¿¿½ºÂÁ²›Ž‡wkeajw§¹Ê¹ŠY>Orž¿³~QT…¶ÙçÓº£Ÿ Š„¾32ÿ4*èÕÛÖ°vG' ÿïÿÿ AVK3-7GTQF=CXq€z`Vv¢·²¨˜“‹mfr¥­žŽ„¥é1XVW<í̹¦šª¶¸µ±º»¨‚|xjgrˆ—ž£˜„]HPs”£¥‹[Ih¤ÎÝßÍÁ±Ÿ’€‰§Ú ""ìÝÍ¿ pB(ÿúÿò ÿþÿö "1982,2J]WHCPo†zkx—´¿¹ †z‚އxlo€œ³½³³Ðú,B>/ ê˰£˜™›¢©®­ª°¯ŸŒ€‚zyˆ™Ÿ“k^]Xdƒ›œ†l[Qh“ÀÔÓØÔÔŢІ§Óû  õÔÇÄîƒQ+ ÿþÿùÿôÿçÿø  +67-,D\^PCGa~‚}€¡±½´œ…„‹„zvwˆ£¼ÀÂÒêü !)*æÇ°¢ šœ¢©ª§«ª£˜Œ‡‰ˆyeZZhu„˜œznry’®ÌçóûïáÆ¢”ŸÇò  îÞ——‡e4 ÿúÿõÿóÿêÿñ ,973>MYZRMTg{ŠŽŽ–«µ«–‹ˆ†ˆŠ‰|y… µÊáñúþ ôÙÀ±¬¢ £©ª¨¨¨ª§œ•™¡£™ˆsb[T^p†•—’‡{{…˜¤±½Òøÿáí°¾Ûô íÑ«„je_Bÿû ÿþÿûÿúÿð"'08?GTZWPHSr”©¦—ˆŒ—™•“ƒ~ƒŠ„ƒ”¤»Òç÷ ÿïÝÍĽ®£¡¤¤¤¢¢¥§£¡­³°š|`MMO^p€ˆ‡‚~ˆŠ•¨Âä  ëÓÉÊ×Üâêóþ渑lG/ÿÿÿþ ÿöÿûÿÿÿò&3,*9?DQZ]WJMf‹©­ž„uv}‹—•†wy„ˆ‹Ž•¯Åàù  "ðáÕÑÍȼ°©§¥¥¤¤£¤¦¬¹º­q[LPWeptrpr{Œ”ˆ~žËô ïÑÉÒÝáØÊÄÈÚÖ²|ZB&ÿûÿóÿõÿÿÿþÿûܪøKIy„ †4÷8T@É\Š›nN8\BÚY èr5 ° €ÛGß~G%ö¥+ ¤ 6 ã Í º É á æ Ò › _ * ü ó ù  3 A 4 %  B Ñ ¢`ÉÔŽ ô A ² S g Œ ï F   å6™’K.ö‰Í>n’©ÎúYÚeð c/ÕÄ_Å·“uˆåLÉ Œ  ñ öÙR`|Á•G÷©pD'(ÜT^‹TëC¸@òx²ÂùV·:ÐW¹M ²  à y h k ] " ½ V  ê ÷ ý  A ] l [ @  ü í á ï $ & '  U  ì_ªJ Ô õ ö : × õ ; R g z ¨ è B Œ ë L Û‘:°ô:‡ã\Ïaù´‚Iz«”‹§ðUÍÚ³Üß¡£Î-s Ï]†U:^cVB Ëm½(àï ÿáΰ³ÂªÃœ™ z ë v  à f ' ÷ ê ç Ù © h ,    * 8 I I A  ï ¾ “ † }   Õ  ? X I … ' ú ­ î š  H _ Ð £ æ . 9 2 ) - < d ‡ Ä ` Þ O ” · Ô  ‰7á®vUC'¥!ˆö±¼ÍÈ PtS]ˆÞ í¨z”ÅèH¥ë÷¾žQpŽŸîCÁ–>]!Æzi] ¹ 9 ù ¤ N ß Š R B 3  ò À › ‚ f S = 3 - 4 = H S M A  ë ¬ j 4 ùþ 3 r ¼ ÿ ( , H ¨  h m a  ¤ ) › ] g ¼ ó  5 -  õ Ö Ë Æ ß ÷ . y » à å Ø ÷ < Í \ ª\â3Ï¢}ÊpÿUË€vø`Ùõ—:úêáH0ä(+¼ï\)ÏÚâ«n\Öæ×ÐÕ Ö U à d  Ø Â ® » Ü ä É } , ã ¬ — z ƒ   Ó ý    ÷ Ô ¢ p J - $   , R s œ Î ø V Š ­ © ¥ q / Ï ` !  ? Z | ¥ ³ « ˆ k S ; : 8 \ — Ú   é ò 8 ‡ û a á s  †ÃÎÞveCߪ63__Y;W s?ù—fé`/© }ÙVGN‹lX”2÷  q ñ ¢ 2 Ð  7 Î ‡ Z u ¥ ä " Á 5 º _  ï  1 l •   Ÿ ‹ „ s Y 5 òêñìéííàÚç   & D f „ ™ · ± • PÿĤ¸Ð 5 U Z I H D 4 - ) K ƒ Ð  > >   ý  ' D ‰ ç Y ¢ } U3•8òƒfÞˆf˜ôõÐ![WƒbÃуeÀÿ_€î¯{2¼k 8 z Æ ˆ v p  µ m M ) 4 V ‚ œ ’ ˆ L ô “ H '   ü÷íçæïÿ  ß›d+ë¯yR$$'3EhŒµãüóäôi½  4 5 "  2 4 , $ ' . I i ” À Û ì ß Ã ¬ – ½  y µ è  } û >ÇHœbDÀV`žk-³|/×pì^)|w‡nýÄ©—• m „ À i  #  ¹ @ ò ï  @ { € U ÷ « i / ßêsDÄ‹}‚«Ïò%ènû~¬T$øíèêÖÒäFz¨ÇØð ]É[õ\oNVs~†“Ÿ¥²½è 0 € Á Ö Ó ¼ ¦ À  b ¦ Å ¿ Í ð ƒ 2 Hu  bÁ„J¹:r©À#°œˆ¤îo~;>Qm ‡ ¯ ¾  Ÿ ‚ V O U G ÿ Å Å ñ    Ä w E E ^ u Dä:÷}8íέ»Ú 6O€f~êjΟ‘ƒzlP ,U‡±ÐåiÔz4ÏIbc4 ÿ'fÎ8ÄÛú  J y ¯ Á ³ ”  ˜ Ö  ; M a ¥ ñ ‘ V < ¬"—6 çÁ‹!  ¹¥½¾öìi¿n ‹ Ö . â v @ 7 Ó – g 7 ; r   Ÿ LÙk -n°ÛuɲŸË,ê :OYP]4ßaì ns~”£˜‚Vüò &F`q{‚~¤Ý_ý¨G–Äžk8E‘1æŒ?J3/[² 6 , ü 1 • á ! Z ‰ ¯ ï F À @ ¯ õ ; ™,ÎLðqãt% ƒ < @ c F ø œ [ q [ Ï  A é È Ï × ° ]ÿ¼«É¾} žU5-"ÝÍ÷NòÉAlh4Û¡kJ'sfr…”™‡lI)"6DOTTRSK^tÇ5È`ËÿÅ––—ý‰_IïUDø#«JÓ  - E ^ ¶ þ / = /  9 ˆ  t Ë  ; t Ö Q éuûb À q x ‰ • k : / 8 c . { « E 3  Øw ±„pM·`(ê /}ÇnØE©õAî–Y-'+BSRA8& ë̼µÀÏáîñíåáåéöøG›ôF±Ë¿²“[XpÓ¯X€_( £uxP¸æËËë 7 ¥ ™ r o š  ± 1 u o d b x à $ ‹ ª = 0 > ! è î  % % à s@N+ìÃ(¯3Ó‘EìÆfèO¿^Úò®­ŸŠYܹ­Èí?LDòÁŒ[//CNU`n„ŠƒŠŸ¬Ëï.|Ë34ú¡s{éoùV„À:!1½ëXžà  þé   b  ”  ^ O m • y ¢ Ç ¾ x > Q £ w …âk>.ä‹KØ}»€ˆÀКû7¢W‘íP]8Ü{¤f9Pt²Õý;s›¦ºª‰LÜ mC&ÿÿÿéÿÛÿê7MbzŸ¸Â¹¼­‡gMt¿8±Q*Â}HUÝqõ-E_ܲ½Ÿ-”¾÷7ŠäM~`Jƒ  | â > B  Â Š c  - Ô«Þ  «%oÉGã•!Á…a<ëaÚ}sƒ®Ý®'nË£ÒS¿Ò¡°Yÿû*hº3HEVYL,ñ¹s8ÿÎÿ¨ÿÿ„ÿjÿWÿLÿSÿ^ÿuÿ‡ÿ¡ÿ¹ÿä]‘¯×ѯjÿþ<p¼Y{9ÕIÿ½ÿŠÿŠm»£<æm¥Ø5ár‘ÖVê _ » § b𨆀_|\=(JH÷L¤cèn4¹;ãÓk› H½ZF«7¦Õ„ €.žœ[‰kBúÃV) í¿–zlWNQRD.óäàÖè Dr•ÃÆºp®eB+ˆ l©OžÿÓÿ3ÿBÿ¯{oygï‰:Ê:{+ñ\¡t½¬2ïÙ€¬ ’a@ñŠú}å8†Ð] þÅpø/¾±€H!RÀJªÃ¶šš×& ‰û0S%ïŠ$Âi<&8W`u ×&G<ÔŸc'â—Hó¸’‰qgjr}i:öÏœVÿýÿ€ÿQÿgÿêŽïùvÿÏÿMÿÿlžçر¬Øm1á#OÎlêU¾&  l“¬†?KCt|h «,ºIãn×JÆ”‹³Ë½D+_À23@¬N8,Êý }>J B õ „ © Õ § j ò } ›Y 7‚Ê  R Ù ! h Š © Š V ý µ k 'Ówÿû† €øyÒœUøÅ‹ý$\ÿÃÿÙA÷‘¡\ ÿÑÿpÿ’-­èבHv!ûjœÞ,Ž÷R£òG® g[0U_£¿¤9ÒWê§8ﳯ½×ÚÊ£¥Õ8‡â©Ö<¢ö Ñ [ · E * OhQ°äÅʾ¯ŠX+ RÚ Z”µÎÑÖÎ˲ŒY1õϨSø\ Ä Ý á « tF6RÊW' ÇG€«Ьó4hÿ­ÿ0ÿ9ÿyÿõ\rÿä'ÊN´õ'uÐ/t˜·íGÄ2$>‡z.Ã|=ù©=ôÇåY‰¸ã(vï{eö ý¥ ± ’IýW‡Š¾äßi`9 o .?\ÑW¥´Ð»‰/Û˜`M=ISmŽ­ØÌº7«”pÑ$=N æ ¼ ™ xQÕѯæÊûEÿÙò¿O;’s±ã M{…~{®‹Øñû÷š-¤;öÖ¤E qèƒërþâ°T a º ´¹íðù9L*¤6j ¢!K!Ë!Ö!Ô!å"@"Â#8#p#z#X#O#U#d#z#‰#“#¡#¤#´#’#M"Ü"v"!¿!˜!ˆ!ª!Á!î""X"¨"Ì"ã"…"!% 7º+û¸Œ›™" Ñ - » f Û æ Î~"s·#Ô,<%ÿåÿwÿGÿ`ÿãxí-ER=N— ƒ¸¨™zŽ$å <3c¶s>>(y  ® %^±>ä×È Õ#s%²'L(ê*+F, ,·--d-¿.[.ã/J/B/.¦.d.:..-ú. .#.6.L.2-ý-ž-H,î,„,L,;,f,„,´,â--d-‚--3,È+ô+5)ý(°&Ø$ó"¶ …0¸YûîpÕ)}Vè* |   8PfÔœ¶Ž BX¿(0ç vƒ®¬´Îz²œÍæEïv]’‘`J‹Á ' q éïσ°_#Ö X"B$z'Z*‰-g/¶1;2Ù45†67{7ú8i8¼9K9²9÷9Ó9‹9)8ð8æ8Ó8ö9199å:":W:H:$9Ê9w98«8v8n8©8Ö9 9C9g9™9~9P8¤7è6À5¬482­0Ö/- +8)&¿$b" .ª¥wq‘ˆa°Ãœ‘Ý z " q…ÿúj• íÈ8ÿÆÿ©ÿæFFIмÀ¤  ß (œ„ð & ®3çƒG>ZD!"ô%&Ú(9)k*¦,–.ø25'7Æ9Ç;<=û?ž@îBBŠBðCCŒCßDD CÝC´C³CðD%DŽEE™FFWF–F„F]EûE˜E8DÑD¶DÇE"EqEÆFFEFpF,EØDìCïBuA?>=T;^9—7ö6c4°2Ô0Í.º,Û+>)Ç(&l%#ç"ú!¥ø€·ùmé,Þ § Û ÅåËx_§ŽŒ¦ ,mS%$=^·}óâH ²d#Õ™½²®˜´!q#¸%Õ'Ü)é,5._0o1ê2ü4 5g7†9ä<®?…AØC¥DðFwHIíKrLªM.MŽM½N8NµOOJOLOROˆOüPsPûQ†QêR9RIRiR=QõQqPèPzPPPBPÊQIQÕReR¾SRìR·QÚPîOjMõKõI»G[E/CKA‚?Ð=ø<:58ˆ7$5´3æ1ð0.y--+Á*.'Ê$á!ÈqÖ§=íªc à гÖhHÉ…YÿèÿÑ ÿéÿºÿœÿ¬ÿä CÅæOµ›«Í÷`!v#ˆ%©( *¢-//h13É6$8«:¼‚?´AMC_EYGpI§KM NiOáQhS%TzUyUØVVhWWÉXsXÝYYs<_:T8Œ6Þ5H3'0Œ-‡*–('&/$Œ"§ } ÎÒï ¢½ ¼ # ÊøÒøÄe3ÿïÿÛÿì)Ñ& #D ü l ¾" ${&à)j+‹-½052ó5Á8]:<Ê?BeE GHŒI„J·L)M×OšQR‘TZV WtX Yð[$\u]K]Ë]ä^^o_-``èamaÇbbpbÛcGcnc|c6béb}b4aÉa:`Š_Ð_T^Ý_ _q``a@b5ccßd´e(eePdôdcXb`¢^Å][?YšWÞUçS÷R P¸O²NŠLèJÀHžFxD‰B @Á>w;á8ï5þ3T0ë.ê,ô*ð(¿&O#ã!\Lõ)…D 3°õýAuĈÿÜÿ¶470{-Ò+¬+1*…+w,×/P1–3ù68G:á=¯@QBÉEG†J®M¹PUQüSXT[UÇW=X¢YÅZª[£]^x_¤`a–b\ccmcycgcycýdÉe½f~fñgHgugÈgøhgìg®g1f³f+e¼eFd¶dc€cb®bâc^ddeVfPg,gíhÐimiøi÷iÐiLh÷hbg­f²eÇd¬c¤b8`†^¡\Õ[aZQY1W£U¶SãRPQNdLSIÕG>DzAÐ?5<ˆ:7Æ5º3Í1¥/7,a)Ï&©#7Ò§Èx  J•ìë l¼>ƒ:È896-5È5!67:‹@µCE­HUJ­MOR~UìXî[N\«^_`ka„b_bÝcKcâdÓeáf³g\h%h³i$i?i7iiQ9_4a/W*º&S"z„ ººja_µ^é^2^0^0^à_¨`æbcodßf/g.h6iˆklµn1o”p§q½rvs'susÃsºs¥s[srÐrœrBq¨q"pÑpâqqNq6q2qUqírÆs¥tJt|tªtdt!sgr™qspYomÅl•knjÑjajvj†jËj÷kFkl(lÓmqmÛn ntnÖoBo¹p0pqqUq¢qãr.rorrÐs sosìtotñu&u/tðt¿t…t~t*s˜r†qkp)nþmèm kÜjRhZfudšc;aF_[/VÇQ’LåHEC®>Ý9©4¨0,'ú$: ‡û+eždÐdcdd&d.d‹díeŸfbgFh hÝiŸj¨kèm[nªoòq]r†s‹ttt¯u u7u>tþtÅtit"s©rñrPqðqðqýrqØqØr rêsÙt²uSuouŒu*tÄsçrøqÄp£oon$mkákKjäkkkck–kØllvlímMmvm‘mÇn,n¢o/o¸p)ppÏq q-qIqSqSqkq…qñr~sQtsësss2s-sŒttct™tvt?sësÂs‹s4rÎrxr6qÞqÊrrBrVqïq]pxoœn×n m¹m{mün«oÞpñr-sjt¯vwwûx,x:wéw½w~wEvív…vuƒutts±s3rÓrpýoXm…k³jui gWd¼aÀ^{[çYUªQŠM*p¯qqQq)poðooo#o,o o_o«pFpõq¼rDst8uXv.vOvAuÎu„u4tôtœt's¤sArÒrWq«pàpoQnïn»nènõoGo¢pUqrsttÙuAu•u…u[u3uVu{uou5tçtÈtÞu:u uãvuÈuyutÕt’t4sÃs]rörkr"r.r]rxrqnpUo>n?mLlÝlulÖmdn˜oÇq*rxsÁu(vDwKw°wçw­w…wXwPw?wv¿v^uíuŠu2tít‹t#s_rƒqLoñn¯m×ml!jrh5eˆcŽa?^•[W qÍr@rˆrVq¾q:páp¦pÅpàqNqÍr{ss¿tLuv5w*wÊw±w~vävauÏuZtÄts)rNqQpNo-múlÝkÉkjqj0iÉißjjïk×m4n¨pqXr2rósmsïtouu¢uðuóuòuüv+vtv¿vàvïv«vMuÈugtútsásEr‡qŸpäptp]ür¸sAsšsprçrƒrJrr@rvs s±tpuu™v/výx'yy„y@xôx>wšvÔv'uNtes2rp‡nøm?kŠiìhLfýe¸díd cëcïdÖeÅg_ijöl“móoJp—rsltßuóvÝwHw©wÑxxCx‰x°xÛx¥xBwvõv;uˆtšs r^pöoŸn‡m£l¾k±jvig«fzeRd¹d"d^d§eégeirkemAopiqÑrÔsçtmt¯t¤tÆuusuÃuâu»u–ucucut¨s¸r®q•p oóoTnónÏnJm0kÅjàiÙhÄfÎdBrísƒsísês”s`sGs)s^s³t_uuÑvRvÓwtxGy]zzkyÿy‘x²wäváuït¾sˆqîpJn?l!i×g£e}c=aL_g^1]\»\]U^_¨aXcneNgYiskÎnKp¾s%uvÒwÞxÊy*y“yÏz+zdz«z|zy8xfwAv-t¯sq nÚl jžhÎföe2cSa¯`_]ç]b\Ù]]]^©`;bd×g(iZk:m np?q^r%rcr³ss¹tUt¿tÞtùtñutëtšsÅrÄq²pßpKo¦o4nÿn˜m¿l¸lkijÇiugœsAsÛtGtctOöOšOñP6QRRtT«WZ_]ÓaÙeÜiÚmÚqBtŸvèxòyÿ{{©|I|l|“|){¾z©y–w¾uès,pSl©hÎdÔa]ÚZ¤WÒT½RjPZOmN§N–NHNqNsOtPÖSLU­X [ ^ÀaÅdgxiÄkÑm ngo]p…qsr@rÈs[sÅt?txt»tqsËrõr„r+q›q pžp8o°o+nÀnanml¹r5ræst!t†tÛu!uluÛvnwwŠwÌwËwåx|yy„yDxìwÃvt°rÍpn…l iafb™_[ìY VIS”P–N)LJÞIÒI€II!I%JKMiOéS¦Wa[ì`ekjKn‘r½uªxcyÒ{:{Ã|_|k|Ž|{ªzdyvºtZpÚm>h´cò_ZV¦RþPMJÅH¦G­FàFíFÚG7GUH8IbK–M½P¹SØWlZé^]aédîgÃiÅk­m n‰o±pÊqrarísnsºt:t@sÖs(ráržr&q›q&pÅp`poÊooZo n¤q qÙrµs†t%t©uu`u»v3vˆvºv´vŠvŸw7wÃwùwywuÃt3q¹oAlXiªf…c!_F[HW˜TQQ”N¯LIMG-E@D5C:BÔB=B-B BéCàF/H˜LIOëT²YÂ__dóiÿnårvx/zzØ{§{½|{~zêy$wFt pýl¦h2bØ]DWÆR{NPJmGÁDûC$AA@U?‚??¥@=@•A}BˆDhFC=(<;“:Ö:ª:~;Z@ÏDwH$MNRÝY*_Ldöj„nðsWv2xÏyþ{A{Œ|{rz§xêAsD%G÷KöP™UAY¯]ðaldÏgmjlmìo plq!qžqÑrcr¨r–r)qèq˜q@pßpsp.ppp"p1p#pp nÙoíq rrÓssÝt6t]t£tœtGsés¿tt¥uut`t'r¢phl¿iPeCaR\ãX>SoN—JeF‰Cƒ@Q=Ð;e9±7õ6×5Ç504m4:44Ò5œ79e<Á@=EŒKQR X„^´dÙjo`s,v»x¢z‹{{ã{yàv«sCnFi}c]’VÜOñIˆCe>Ô:q7Å5(3ì2·2^1á1ð1ú23%4P5Š7H8Ð;=}A4ENJjOT†YR]|a¥eh…kmKnªp-pöq‡q´r1rkrrrqÁqSpùp¤p4oòoÓoüp4pfpjp[pumÁnâpq-qôrœrÜsssLs$rŽrrrˆsGsÄsÛs1sqgnØj–f®b]SXRºMWGäC`?G1¨0ž/¥/.\.-Ó.O.Â0G1´4Ì8 =uC`J–Q‰Xo_Kebkp't§w;y±zR{@z x–t¡pajcd­]úW OËH8Ax;6›2R/Ô-I,$+*ö*Ï+&+W+ò,’-Í/,12–4Í6ð:£>ùD¬JKOöUXZ4_/cmg´j¸mhnäpŽqdr rFrÆss5rõrŽrq«q[p×p„pbp¢püqRqdq_q“m^nio‡p¦q_qßqîrrrqÐqppp}q8r r’rÑr:r#p7m]hŠd^©Y&SMGAE7MTü\±d…jéq'tÊwÿx–y¤wþuèpõkÏdç^SVÜO$GE?B8Ÿ2†.Š*¥(X%Õ$ #“#¢#À$X$´%<%»&') *O, -“0¹4¤:@¬GmMÖTZŠ`Mf j:n p/r`sptvtßuju°v"vu˜tÔtntsUrÇr^r†rüss¹s½s÷nnÇo®p®q9qUqq=q:qppo;npn}oNoûpZp¦po¾mCiçd^LW9PH¡AA:¥3Ð/+&)¥('ë'–'¼'É'ì(((0('º'N&Û''(*.2Í9ò@ÌH¼PÏY avhoYsWvÉwgxvìt¼oÄj¾d&]ÞV°O*Gt?¤9=3q/¨+ß){&â%}$E$#ü$\$™%%e%ú&Š'm(J)µ*¼-g0­6D<(C8IóPÂW±^dTim’p1r¹sàu utuêvvŒvˆvuKt×tesºs.r®rÃs>‚:5å2†.º+a'î%©#Æ#;"È"ç"Æ"Ä"Ã"ê##l#“$æ&8*.Ì5Ó<¢D_LSÎ[Ób˜imp¤qÕsr»rRq£q}qlqp§p2oúoûp+pp=pÖq—rrJr t¶tsvrür=qoïoSnËmºlÌll:lón7o\oÍpLn÷mi=d9\PTEKAÇ9-0À*^#÷ ·D‚£ L Í!$!/!!-!Ÿ""1")"Q"†""Í"Æ$k&Ó+^/Æ5ƒ;RAÅH"N|U&9S50,›(%Û#"»"&"G""!ð!ü!û"A"M#N$&'f+l28Æ@ÆH«PÁY`7g#koœqrBqÉq4pYppo¼ofonîo)o“o›oÖpyqHqÏr4ršuÎtÛsèsr%pßo®nén0C…INÜSÑX-[)^‹`uaÝaîb^aàaˆ_ž]YMTrNBHeBœ=7à2’. )x&y#Ø"ú"P"n"<"!É!–!f!z!b""%,(ƒ.Ç5Y=˜EœMäVX]Âeiëndp qkpäpLoio onÖn•n9n=n¤o=oho´p^q7qÜrirêvòu²tusSr,pÐo—n¬mÖlyk–kk¹l™mÇnÐo!o¨nOlÆh(bù[RëI°@p7ô/º)°#¢ ´™òûÄ v ü!n5m9k½jÔjikkùmn nRnàm—lgybKZ\RQI<@47ô/æ)ö$!#J!¬ 3 ¨ Ö Ä Á ¼ Â Ô Ç!!x"."#W$ &3)-*0ø47:¨=öBFœKNªQÉU>Xá\Õ`ScÊe’gfEeÁbr^uWüQfJ9C=e71¡+ÿ(_%u$¤#Û#Ê#r"ñ"7!x Ú Ž  [ 1",$¹*‰19fA:IfQÓY¡a‹g#l#no¶oNnßn m¼m¬m†m_l÷lýmŒninÒo;oÚp¨qir;rýwÃvtprÌqLoÐn…mPl,j’iªiLjkl+mmamöl³k1fŒaMYRQ?f7`/r)•#Å ù<pÜ 5 B " ) 3 % , 0 !!ë"p#‹$©'?*•.À2Ÿ5Î8I:Œ=/@¶DÖI LlO•SW[¢` d_fáhþhhˆeuaÂ[8TfL»E ?8†2é,õ)&&%e$–$x$#"ž!± ÷ —  0Ø!—#á)Ž08~@IHjPÐX¸`Øf¬kÑmÉoron›mÈmtm\m9mllœm6n,n­o#o¼pŒq_r[sGwIu‰sÇrptn÷m±lkk8išh»hfi:j8kalLlˆm kòj‰f`ÒXçPÞH?h7›/É)å$!2%IXÒÄ¥ºáãú  …!""â$u&)B- 1Ž5•8Ÿ:û<ó?LBmFIÞMPFS°Wº\6`¢egÑj3iøiãf³bû\kU’MÄFg?¥93o-f)†&š%ô%6%%$Õ$B#["e!¨!F Ã Ø p"$R)÷0m8é@ºHßQAY'aQg.lUnFoéowon:mÝm´mmJl¾lµmPnTnÜo\o÷pÕqÂrétv¬tÓrÿq'o”n(lùk´j~hçhgÖhºiÅjåk¹kàluk[je–`~X°PÀH?¶8"0x*™$Ë!Ô«§Cu‡z­û  F Y Í!c"#­%¶'Û+n/·4@8>:û=)>Ð@ÓCoFRIªL°PS¶Wï\i`áeŽh«kpk`kAgÝd]ƒVÀNðG^@\9 4-æ)ü'&‹%å%ë%³%*$K#L"„"!!ƒ!"$­*<0™9@ìI'QYya§glÅnÆpvp o­nÔnnn/mãm•lölémŠn›o)o®pMq>rFs–tßu­sár'pkomÍlÑk´j•ih[h%hûiôjõkœk±lFkcjOfDaZRrIïAÎ:P2¹,¯&¤#B ¨ HªÂ¡£Ž®ú c ¬ é î!l"-#Ø%_(*¿.Ô38W<ˆ?]AÊCtEUGoI«LmORzVZ'^Nbqfój lÎl¯ldh¿d®]úWBO~GÈ@9¥3û-Ò*'<&Ú&X&|&^%é%#$2#m"ò"b"e!á#w%¯+P1¢:AáJ!R‰Zdb|hKmlolq%pÍpo©o>nénƒnmlm\múo o—p$pÓqásttuåtÕsqŒo÷nÂmÄlúljúi£híh¹isjGkk“k£lBk¯jøgnc?\-TÏL_D_<Ø5=.ì({$Œ!d §Ùõº¹¶ð A ¨ ö!5!!!³"­$Ù&Ý* -2E7‰<¸AaDŒG^I J¹LAMöP$RKU>Xi\Q`Id[hÏkØntn4mïjCf_X"P3HD@É9—3Ë-—)÷'h'H&õ'/'!&°%ù%$F#À#,#-"œ$7&”,Z2µ;BØK So[FcYinpqÅq†qMp~po¥o+n³mömÝnpo€pp qcr“sØunw tr}q)oÑnÜnm…lÂk×jŸiãij$jÁkgk³kËlsl=li(e­_*X?OúH-@’8å2(+.&"™!Q ) /Ķ» \ Â!!k!e"M#Æ&¬)Q-B1i6Ì<˜BNG¬KNöPÛR˜SÏUPWX¿[]­adsgþkÝncp~oúožkßgJ_çX¹P“Hm@»9433,ï)s'' &È'&ø&’%ë%$l$#—#Ä#S%('ç-ý4‚<½DnLhT¡\Nd9iÆn}p5qßq±q„pÃp\oðosnón/nn•o¡p+p×q®rõtJuèw˜s3qÑp³onÓnOmìm\lŽkoj¨jIj¥kk¥kÓkñl˜l¯lçj¸gÜaÙ[[SJKÁD!rÜrqimXhQ`•Y>QHµ@Å8ó2¾,e(î&v&l&&O&H%ø%b$¶$/$ #ß$W$&8)`/Å6{>ŸF/MáUÙ]Bd÷jOn»p>qËq¨q…pÙp„poo n5nn}o‰ppÙq¾s tgvw·rŠqWphoqnØnun.mÈm køkj˜jÊkk’k«kÍljlµmBk©iad^$V“O‰H@i8ó1.+?%þ#x!P µ‰$ù{ì Ÿ!"!ý"…$'E+±/©4Ð:B@¸G^MçTjY\]Ó`Jb‹cÂe7fgäi‹k‘moKp¯r…s›t°s°r±nLhÙ`ËY@P÷Hˆ@y8€2#+®(%v%@$¾$â$Õ$£$$#°#i#›#º$$»'G*ø1µ8ž@¡HOvW^"epjdngo¥qpÒp›oöo´ohnñndmm}müoo½pq{r»tuww qæpèpoHnÁnnn7mîmDl1k7jœj§jÓk-k.kSkêlfm6l$jde¯`‹Y—SKßDW<¨4·.Y(˜%o"«!…ȵFÄ •!""½%/(Œ-Ö2¸8£>©EiLOS"Z)_ždog ixj²l!mWn«pqßs@t(tŠuLu”vt÷sÕoLiŠaY(PH?ï7å1w*æ'5$$7#’#œ#{#\"ú"Ä"¿#6#~$‹% ( ,D3\:qBTI³PÛXI^ñeÙj`múnópoÜo‚nÑn”ncmüm‰lælèm|n¡ogpIqArnsštév`q†p¼pobnçn”nTnmsl[kJj™j‚j‰jÂj¦jÂkHkÛl¿ljÕfîb¨\‚V»OÞHµA9E2©,Ž(À%T#†!/ U % ÷!d"c#%Ý)£/œ5P;áBKIPVÔ^cŒhEj§lìnoHp`q²rþtcuFuØußv uüv:usÚoQiz`ØX°OûG\?P7C0Â*&G#ˆ#:"‚"„"b"]"""E"ä#;$~%k(õ-­5<&CÞK-R*Yr_»fjm2mçnÜn…møm/lïlßl‹lHkîl7l÷n0op q r#s3tMu“q0p‹p o‹o5nðn¯nƒmêlÑk¬jèj±j‘j¤jijwjækŽllAk™hŒe_¯Z„TMDEÅ>7 0x+ý'õ% "Ì!Y B Á!!å"ì#¯&¾*Ï1G7›>¶E€L`SdZ*alfÝk_mboQpqqüs0tAu#ušvv3vavv6tßs›nøhÿ`DX OVFÆ>¹6ˆ/Ó(ÿ%&"h"-!{!!“!¸!˜!¢!É"j"½$;%š)±.ß6a=–E(LnSLZ€`vfPi¤lEl²mvmlZk€kCkVkkjókˆlvmÇnÏoÒpèqørûsëuqp£pJp oÛo¡oQo'nŽmylKkvk jájÒjujjj¹kclPlglBjggb¹^/X%QýJÔC^»6m/Ž(§$Ã!æ!œ è!!?!!—!Ã""Æ#A%'+­108¬?ÌGN=Tå[èayf»ivk®kòlŽlkOjoj5jYjj%jWk3lKm©nÅoÌpïqórèsŸt|q@p÷pÀp²p›p^oöoÅo*nlÚkìkpkjéjkjJj€k:l3l«mk‘i»eÌaæ\QV°OÑH¥A_:44x/@+¿(%º#€"Ê"G"Ò"Ù$%0(û-Ë5 <$C¯JÔQXi^…ei`l»mÁnñoIoËpLq!qÍrr)r’s sšs·t&rßq\l°g)_4W¨ONFá>›69/Q(s$„!q ö : Š ¸!(!Q!½"B#f$2&{).3í;aBnIyPdV½]rbŽg4ilkVk‰lkˆj¦iÆi•iÊi€i˜iÿkl`mËnóoöqrrïsesòq$q0q'qRqLqp‘pMo©n¤mslskØkmk2j—jUjekll°mLlmk?hdë_öZîTˆMñFð?î9Ý4/0 +æ)-&`%$ $R$+%œ&þ+40_7Í>þFtM˜T Z¾`YfCiûl¿mln`n²o(o—pBpÁpôpûq)qwqùr0r®q€oõkfš_fXrPkH6?õ7°0Î*%å"p!ƒ ‚ º ¸!@!¦"ž#©%l&Í)¦,ß2Z8f? FoMS”Yu_¦d3h=jkÍll^kÑjõjiæji˜i¢jkYl›möopq,qør¬rÐrÿq%q|q–qìqïq²qp¶pomâlÒlk kPj•j(jj›kplJmlÐl[jgÅc†_Y7SOL¹F?°9ˆ4´0,ü)©'Ñ&& %½'v)5-Æ3:A³I"PYVÆ]#b@g®jâm"mtnn_nåo^oÞppppp^pâqqYpn‰jŒf8_ÂYYQ²IñAî9Ô2Ó+ç'u#š"@ ã ã Ž!%!Ù#|%'|)n,Û0Ñ6Ä=DJ¤P¿Vë\VbeúifjÕlXlˆlºlkIjj6j.i¢i j,kwl¤máooùq qµrCrqûo¾p©q$qÔrqôqhqpTonšmœlØlfl kAj©jOj¦k>llÊlÎl¿k8i™f#bb]/X"RQL`FL@:ã62Á/M-=+*§**+û-ö2 7Ä>²EuL|SpY˜_’d0ikÝmËmënGn^nÛoVoµo½o™o_oKonoØoëoènœmGiñfL` ZäSØLÐEG=‡6‚/œ*Þ&¡$µ"¾"X!¬"r#Š%Þ'ý*è-z1„6,oØpÈqár\8UÏOdH7@¶9¿3.J)¼''$r#˜"»#á%o(]*Ô.'1W6;sBH„N³TkYf^­c!g¦jmmÔnÈn¯n‚mÀmlDkŠjòjiÿj|k¦lxmcn€onpDplp…o¾o j'l¶n{pWq?qèqÆq´qaqCpêpIo—oAnÜnmOl˜lclllßmemŸm·lîl;j+g¹d`ƒ\;WýSM€H?Cf@<ö;-8ô8 7 8o:g>æCŽI`NßT€ZI_ƒd hfl&n o˜oŽoinãnÈnào on³nmwmm mlòl koiEf¼bo^0X‡R¾L E >j823g.ž+(@'#&G'Ã)‘,Æ/i36±;ßAšHNKSàY]b?f1j'l¢nÈohpoÅo|n¹n m.l7k_jojLjµk±lIlìmØnon³n^mkñe‚ik¯ndpqeqËr'r'r{r€r1qŸq_pïp5oLnemÝmŒm¶nn0nm_lßkbiŽfœcÀ`&\¯XkS¢NÄJF¶CÂB%@7?w>v?œAXEˆJO{T†Y_^4b‡gjgm£o8p“p{p>o€on¾nŒn>m¼ml4k¹k±käkÿk„kiTgXcÆ`A[CVOÒI‹Cl=‹8—3u/á,`+E*},*. 1c4;83îC[HÄNiSóY&]basd¸h3jùm¿owqq‚qÁqDpþp[o¯n­mzlekmk.kckÌk½kckRjÑj1h¡gdUaºW„]añfÈjzn/pWrr¯sÓtstÞt¼t»tQsÍr÷rqDpp?pBp4oºnëngml¤jùi&fšd6a!]ÃYÿV$RðO÷NgLúLüLÇN/OØS7VÓ[?_šcŒg+iðlÏnÙpæqìrÙr¸r_qq p~oôo=ncmvljkëkælXl¶l©lpkhjthyfxc_‡ZÀUùP–KEÌ@£=9Æ8Ä7è9S:Ó>!AaEéJ”OØU.Z^vaãeFgîj¸lãopsqÍr+rNqÏq”qpPo?nlêkþk«k¾kºk3jiVg÷f}cÿai]ÈZ8NäUh[JaeØj¹mÚpSqgrösÜt¢tÈtýt¿tvsÚs4r„qÜqqpqWpãp.o®on`m%kºi”g†dÌaÝ^[/XAU_SÂRWR‰R¼T~VgY\Š`2dg«km˜o×q*r¨sht$ts˜rÍrZqéqop·oÖnÙmÁm5mm‰mÜmåmÁml…kvv]vâvÆvXu\txsŒrÀrq8pgoUnÅnªo0oªppqssÞt¬tâutÂtt?sòs¤sYsrèrÂrËrzqòp¹oum°k×iêh"f•dÝc»b—b¸c%dïfæi^k“m˜o€qIsdu vkvòwhwVwowv¨uÖut(sZršqÙqp+o¯oœppƒpêq+qBqoqkq˜qp8nk™h\esb…_y\¶YÇXVvVæW«Z+\Ï_ùbÓeTgÙi½knl—mÜnåoüpÕq¼r-rkrHrXrqÜqp0nßmŠl-k^iÙgþdO`'Z«U™OÒIÐC\<ý6À0n(/ç8B@(G‚O%U•[œ`dyg¨jÙmoSpÀr+rÉsMsIsWs0srÜrºr°r¯r»rërÃroqjpJn®mkfjhôgÆgf+fGf³h1iºk¹m£o{q2r¹tou¹vßwJwžwaw2v«v uct¨sâs"rmq·qpQpppœqq”qùr7rr‘rÃrTq¼p/nxl iégzdéb‰`^§]E]€^ `aõdfgÀi—kl:m mûnÝoÚpµq–rr2r r(qôq¦p­oŽmîlaj¡ijgd=_bZ>SÖM¸G@N9r2¡,T%õ˜%÷.5Ð=VEL R¤WÌ\Ô`µdÀgÝjñmo-pZqmq¿rrrrr r6rqr³ssràrqEoénllûkÀjøj:iÚi 6/B'þ!¡:_®$ë+ì3 :OA GŸMRFV[^çb¤eqh1jkÑlËm mþnwnèofoýp±qMqàrrqŽqoòn½mqls rq)p¤po³o'o5o˜p¬qËrôsótuuKu­uŒuCt:sq}oÙn4l«kuj)ivhäi ij_jÂkk l3lÅm-mUm›n/ooõp³qXq‰q’q[q„q6p»o0m[jÉhœeÐcA^éY×RÏKãD<-4T,¯%´’¤ÉŠÑ1"y)/·6'<¨BcG»LQQ,UYÖ]M`‘býe—gghõiðk l mn3onpjqPqšqËqbpõp%oQnZmLlllkÇkÜllÚm¯nŠo&o£p#pØqÕrÃsgs½t#tjtÞtåt¦sÝsr0q‰qppMoÌoêpnqšrÉsÖt tüuVu‚uðuïu«t¶s±rbqponzmÓmmnm˜mÁmÝmÊm²mÏmãmÃmœmqm¶n@o'ppµqJqdqWqq#p¦oëmÙkihegaá^ZXæRÏJúCQ;2Ž*‰"éWu á G„ :%º+^1F6Þ<@ÂEwIÏN]R;U¹X‰[ª^<`ŠbLdeÍg•i[kHlÏn0nÉoKo$nûn|nm€l½lk§k‚k;k=kXkÌl\lèmBmgmwm®n9nËo!o2o4o.BíG)JÕMéQ^T‚WzYü\l^½aúSKš %¡*j.œ2‚7;3>ÛAÿEhH¤KÓN¿QŒTVWQZk]º`€bædlf ggûhTh—h}hhZh7gÞgYfæf·f°fŒfXfeáeŸeweefe0d{cbsah`U_.^-]#\£\I\¡]]à^t_³aUc eæhjk·mJnoãp©q#p÷pãp‰po¾o„oyopojoZo7o nÛnÜn¬n.mmlÝlÀlêm-mVmlþl?jÁidgneªbÏ_…[%VøR-MH B:;r4·-x%ÏÊ[`[ †hÞëüÇEà 7d—Ɔ\#_'+V/p376†9Ú<þ@/CWFrI©LïPrTKW¶Z¶\Ä^Ï`=aÝbÚc™cÄd dd/cñcjb¿bVbaÂaia``_…_<^×^Y]]\>Z»YKW®UèTTRÇR QzQûRšTU#WYh\_¬bÂe¢gÆi½kl±m©n`nun¡nƒnOn(n5njn’n°nÎnÈn½nƒnSmÞm7l€kîkkLk>kkejúišheîda{^²ZÆV›QÅMXHgCC=T7M0Â*J# oL f G=1§Ø0íÎ~RÎ ê þÜ1×= Ú$q( +a.•1‚4`7W:t=ÜA;DØHÀLXO§RTdVXYwZZè[H[][²[¤[FZ‘ZY€YX¡X+W†V¼UêURT³TR÷Q×PZNêM1K?IuG»FçF1F½GxI6J®MOÎScW&ZÐ^<`·bîddf#gMhEh¨ii?ÞAwCüF¹JXN(QýUžXo[\Ù^å`]a¯bycdcßdd6d©evfXg7hhph‡hg¡fçf&e4d0cKb°ba‘`]ìZáXcUYR"MõIwD’@;6ô1í,—'*"",À¬ — E£*ž˜PÿÝ?ÿóÄû—§f Ë LK{ 'uü!l$S'ä+ª/g2Æ5¾8ß;¤>n@‡B€C¬DÑEZEÜFFkF‚F’F$E–D£CªB¯AîA%@-?=û<ö<;!:8ò7µ6n543$2á2—3E4,5ñ7{9ËJAUD9F“HòJîLòNšPeQ…R!R…SZTŒUçVþWßWöWÈW@WVÎVbU–TÉS¤R¨Q O-LŠJFÔCÂ?®:ô5î1—-–)…%. ^À!ž P {ƒ9&æ7Yb´Kÿdÿ·" ÿÉÿ£ÿÐ<¼Å ÏôÙÏtö Q ?¨´LŠ¿•/!ò$ %¡'Ã)ì,1-µ.Ï.þ/?/ /.ë.¶.|.o.7-Ü- ,a+V*N)'Ä&q%@$"Ó!sù‹!þîé ó £"ì%T(`+‰.ì2H5K8:o<Ë>æA C DÿF:FúGmHTIlJ–KaKîKÝK¯K_KeKYK,J”J HáG˜E›C•A>é;Þ8_3Ú/*&Û#aKû”åÎ b ø>r7ÁÓOFˆ‘ÿ}ÿ—ÿìÿÿMÿ®#ÿÁÿ³²fy .K› É  „~hÍå1˜„ d!þ#O#Õ$F$!$ #ž#"":""!è!³! hG«gŒí9¬+6C', Ç L #W&¦)´,.ð1u3Ô6U8x:œ;ä<Á==·>W??v?Ï?î@@%@„@¬@²@?E=Íÿ¸ÿ «Îï÷¨­Ú h Ô¥ žÀ}¬àÖy‡›/›â>öåQ=þ0Nú¦<§ Ž 0 b — … r 9 ! ÀST6 ù"š$ð'e)¹,&.+001S22=2ƒ2¿33€3ì4V4»5 5~554µ3·240Í/D.3,6)‘%—!N8e6© ‰ W6QòcIÃÂz*ÿ¥ÿ…ˆiÿÿÿÐ ÿ¥ÿsÿßEÿÿ„ÿ³ *ÿ»ÿFÿHÿ°*_ÿÞÿª1‘ 4‘Þ¥B I A º c è$š)ÑN´¦€öT¾L=a“§L Í ë !  ÒyA|èêá8‰Þ ~ æ °¥,ç¨?nk!„#>$ÿ%î&}&z&‘&é'(x)W)ô*p*z**-)²(Ð'í&å&+$ò#¨!©¼U™_ù ‘(ˆÛã <ÿõg ÿ»ÿ‡ÿ±*uÿ­ÿÃ.ÿÌÿwÿ³%ÿõÿžÿƒÿéRDÿôÿ ÿ¹u Å-ÿÂ0kÆaGà Ózh³O'ˆ + ´ g L Yª-óÄKÝRÎ*f¬¨^psÚR/+ 1 z X s²¶i~ aÁ‡í;æö- ; ° ô — @›ôMÔOÌ Ëàî v Ÿ ;™# =M¢X¨¡*ÿÇÿÛ)R<ÿáÿ ÿÜ6ÿýÿ§ÿœÿÒ(Cÿàÿÿ£ llÿÚÿtÿ߉ޘÿÊÿKÿ›¥ˆ±B¶½í¡”AǙΊc—]|¬jD㯆iS,/8Y€Ø? °Mb­0 Å ß ì"NwKßVýÛí»H1ÿ À¦¦ÇHˆ­Y ß é ­äʱQ%VyTˆ; 6záÍjÿýÿ×(^ÿÉÿÈ!ÿ¾ÿ­ Z0ÿÕÿ”ÿ³J«Bÿ®ÿ‰ÿõÁ6ØÿŒÿÍÜã*rSÿÿsm.¯>ïÒV¼'cOëVÙ3ÿëÿêÿíDŽæ2l}ˆ~rq~Ÿ³á wÏ’[ ÑÂÈ À • S Û ˆ'> ¦ ; ú Ï öD - (.ó˜–!ÄÆ¦yÌÈØ6]äB%r˜Fÿçÿò",ÿæ1Jÿøÿ­ÿß:mJÿÈÿ‚ÿõˆœAÿºÿ–(çDéÿ[ÿ|I.qðÿÛþåþ§ÿ ÿð™ÓÀXÿçÿºÿÂÿÜ%…ÂÓ—Wÿ¯ÿuÿCÿ<ÿ1ÿUÿ‚ÿÙ=˜Ýòöß¼§oJ`ÂJ±6דHêûl~j®vcªw(ÚÅlYÖ ˆ” ÿ“ÿ0ÿÓ°!¬åYS³+2šwÿá#k?ÿË'nFÿ÷ÿ×ÿú`ÿ¥ÿ®–·<ÿºÿ±4oõÿÿÿ/ÿ?!FîŠ|ÿcþòÿu>š‹w›.ÿÐÿÓwâ&O*ô¤nHÿ÷@t™¨¹¶®  ”xJÿüÿçWÂpÕ7šÞ'#ý‘ÀÒ9Ók±âi‡˜ìñÆNÙÿ ÿJ#㻹ÒW¾•‘`Â:f‘EÿÒx–cÿþÿÇoTÿþÿ¬ÿ³-Ÿ•/ÿ¹ÿ²MMÚÿéÿ2ÿ)ÿö o|ÿ“ÿ%ÿ<ÿöŸ%‚`•ÿÊÿŽÿ¯ÿìR²ãñФxWIZo„Œ†t^KHD/ÿùÿäÿî I„µàæã·FÿäÿÿNÿ`ÿ‰ÿöuÔç}ÿàÿ4ÿ ÿvn­0#ÿ5ÿÿÉß}t¢Ù_ËÊ_Ö²ÎêÛx$,m¤ŸNÿþW®µGÿÒÿÌPSÿîÿšÿ¾,š¦*ÿ²ÿ«+ûZýÿ,ÿÿ²Îž‘èÿèÿ=ÿHÿ¬sk‘Hþ„ÿûÿ¥ÿ{ÿ³ÿûU“°ÏÏÀ°¶ÈÖ×Õ¾ {WGFUT^x•£®¿Ú)Ác ÿÒÿ—ÿ«ÿæR·ú9ÜRÿ¢ÿPÿSÈð0ÿXÿV" ‡>Ÿc¯Zèò„à7ºZ8k´¸Š[(3“ĆÿÅÿË"j4ÿÚÿ±ÿá[µœ2ÿËÿÉFÞ-Ö ÿZÿ#ÿ·¢`ŽýAÿ¬ÿyÿß\çEI@í‰#ÿÖÿÄÿ¾ÿìZ“µÄÊãýóƘsmt‰•£¯·µ±«´­œd ÿÇÿŸÿ¸ÿØq²ãÓºaÿèÿƒÿ0ÿlÌrcËÿòÿZÿyâA ‚*o¸é¯='^eŽJY”É®xoE,!Z’ gÿþÿ¾ÿè;Y<ÿóÿÐiÃÀ[ÿìÿž)dÿ‰ÿ,ÿ~hB“^¬ÿáÿóZ¬æûË“Oÿåÿä9e…¢Çë%6%×½»ÁÍÑdzœ‘‰yeTB/ÿòÿö'‹ð.R.´]ÿÂÿά_œb¡ÿËÿvÿ‡)EÙ@ÿûGï•Ì’MDxƒAÎlX›£‰q†QG4Gj›3ÿÚÿÌC_0ÿôÿã{¾®YÿôHÇ'þ_ÿ°ÿUÿ¥FÿlJël*8[—¹ÉáÞÕ¨i0 #Dt™¿í;A1 ÷éÚÔØÑ¶’€nR/ÿôÿìIšê+*Ä~9ÿêÿ×ÿá@Î9pÿðÿ¤ÿð‘$Däb=ÅI“W@L‚˜l §t| “{s¢=RTMP{‹bÿÝÿÙ JW5ÿýÿën¹ÃD6­§ÿ÷ÿ€ÿq»Oz+Ý‘pujp~š»ÈÂyP""Kbƒ®ß/9&ãËÇÁ§ƒjT7ÿýÿú8r­èõì²q3ÿøÿètÝ<)¾+ÿÁÿÛOï]HÕS'oÞHhOACg‹£},Ϙ–›sXl“¨=VVSrƒwCÿüÿÙÿõ2UP( OŒ³ÁŸ]>c³þŸÿžÿ¯%ãq’zĈ\YZt‘ª½·«ˆW4)<Ea…¶ç #&." îÝÄŸsJ..Gm›ºË¸ vH) "L3¬ÿËÿákbcÿ”^uÐ?@1CbƒŒ‹[œ–ˆzWNp—š)Oackjp['ÿþÿô3PWMEGNpµÜÌPG„ÓÕ\ÿùÿåKÞ_›j&Ì’{cfk€˜­À·žy]USg~Ÿ¿Ýú è¾–pG2!1Sx‰‡Šn_^hipqÑ 3‡ ÿÄ){S÷˜€°ç 2hŠŽlT.Ö´–jPEWu‡|#C]e]WXpsIÿòÿþ%UcWKHPr§ÍÚºˆd`‹ÓïÅlUÕ@f]Ôpkq©¾ÑÏÅ«Ž|u€ƒ“ªÊëþþñЦ‡wigbj‚„gRF;DWrªËÚtÿúÿÎÿñtTaÔ¨¬Øð,Os€b>ôÙÀžc><Wjof<V_]RJNgoY.ÿþKWQNTf~‹˜²ÀÉ®nHb¡ØÓ=D—ó* ÿÇ–¥ÅÖÚÝÕÏÁ­ ž¤ž ®ÇãïêØØÏµš‰‹–¡¢—‘~]=!$3Zƒ¢²¶ÍÓÖ¦Fÿ÷ÿÌsç îÉËßãÞÉÌó-VelbdU4 ùæÌ¤mJFX\ZZ$;HRQLIT^eQ =`l`PVm‚•¢¨»²‚VJq´ÞÕ”J#(j´îöÞËÒéùû÷åѾ«§¯º·²±»ÍÛÞÖÕο¯¥¤©«¥”kYJ1/<k¡ÔüÿÓ”KÿúqÆòîǶºÏãßÒÇÔö"=J^`[B"ÿÙ¢pVOZ][\*BQXSKI_d= *WvoWKWx•”ˆ’››‰fYl›ÐÖ«^<Ïóþ ôѳžŸ§¸Âþ¹½ÉØßÛÐÌÆ¼¯ ’ˆ|h\`hZVa‹ÀðëžFR—ÈͰœš°ËÒȺ·Èçý,M[J(⥂taZ\[Sÿü7OgiTBVg[:+Zyy`KYy‹‘–”›•}dN\Œ¶¾“Q@t¼.SQF)ãÅ«¢›§¼ÍÏĺ¹ÉÔË»º¹²£‘…‡†r_]cV]{®çÿÏ…= L޲¬w¶Í̽©£±Ãßõ ,ARE 0:뵦 ~\OD* ,CdsgPNT]T-3kŒzUL`~™Ÿ–•’“…\BHpž°Ÿm>04tË%kud5 öÛ½¨‘”§ÂÑÍÀµ¾Æ¼­¨¤›y…laaYj•ÄçÚ´p( W¢hQh­éíĤ”–¬¶ÎñFSJ'ù:7êÈÀ³†R7$ÿû.Oj|qV>ESM;!"HtsaW^w‘¡Ÿ“–’~iZbz•¤–yX4H†íR‚‡W<øÙ¾¬–‘”§ºÄÁ¸¼ÀÀº³§œ~ttxqlly†žÄÒÅ–cA/Guœ¡‰pgq˜ÍçÕ«š˜•›½ù-C4  -+õìâÑ©r= ÿíÿøÿþ /IpzX.)?X`G.1Os‡~dPX©¬š•–žŠrahœ©˜lVd®^eQ'þÛµ¥›ŽŸ³½¾½½ÇÊ¿«‘‚uhefr€“ª¹ÊºŒZ=LpžÁº‹`aŒ¹ÙçÓ¸ŸŸ¤‡“Â31ûþ3(äÒØÔ°xH% ÿð  ?TG/*4ERRJAG^w„|c[{¦¸²§˜“†yhdl„ž©œ‹ƒ¤ä*UXZ?öÕ¿¬¢“’›¬¶¹·´À¯•ˆƒzshixž¢¦ž™…^GMo¢¤ŒcVs¬ÓàãÒŵ¥˜‚‰§Ü&% êÜÏÁ¢rD(ÿùÿïÿú  -341*1Lc_QNZu‰v‚›µ¾¶œƒvx€~vggx—±¾º¼Òø1HD6ðз¬¢£¤¨®±¯­´²Ÿˆ}}z{x~‘ ¥—‚l^\Va€——€fXSoœÇÚØÞÝàѬ…¢Ïý ÷ÙÉÅǵŠT,ÿúÿó ÿøÿêÿû  $16-,FadYOSg~‡‡‰’£²»±‡ƒ‚wqq‚ž¹ÄÉÔåø $/4" êÊ´§¦  ¥¬¬«°°§šŒ‰‹Œ——‘€iZXgs‚—›wks›¸ÓêôüòæÍ§•œÄó  ïÅ¢—”‡f3  ÿ÷ÿóÿóÿëÿõ '874@Q\_\YYe|–“’˜ªµ°Œ‚‡‰†xt~™³Ëßêóû "ùÚÀ±®£ ¢©ªª­¯³±ª¢ŸŸ š|lcX]n…•—”‰{y†ž¯½ÇØúý߬¯¼Ûú ÿëЫ†lbY=ÿûÿñ ÿÿÿüÿúÿò "(19DOX]`]OSsš°«œ‹‹”šš”‰|‚ˆ}£¼Òå÷öãÔÊò¥¡¤£¤£¤©¬©¦­°¯ž„iVRO[m€‰†}|ƒˆ“±ËéïÖËÍÙÛàìøþ溑kH1ÿý ÿõÿúÿþÿò !1( ,;FOW]dcRPj‘¯²¢…sr{‹”‚uv€…Š”°Æáþ#"öèßÜÚÓŵª§¤¤¢¡¡£¤¨³µ­–{dSRT`mtrmow„‹‚~„¤Ñú ÷ÜÒÙäéÙÇÃËÝÙ·\A'ÿüÿóÿù !ÿþÿûÿ÷Ö¦øLK€‹†3ðù1S=ÃY‹™iO>]<ÕQ•ãv;»-ŒæWñŠIíš% ¨ A ï Õ ¿ Í å í Ü £ a % ø ô û  5 @ : "   ë õ  V ª ð &  ì ¥ c c ’ û M ¢ ñG¡zF1þ‰ÇGt¨ÎôQØkõ¥e*ü͸R¸­ˆj‚äNÊ  ó ûËGZxÛMú¬p<ÖMU‰YíB»Eòr¯ÃõP¹FÝbÇZ ¿ - Õ „ i d S  º a & ÿ  & O n l F  ò æ Ü ì  # - * * ) " 0 N … Ç ð à 3 ð í E W h ˆ À ø E Ž ñ N Û—C°ë7ŒåXÌ`ó­„R~±›£ìQÄˤÎΛÊ+s ÖV‚T:`h]F Çb¯$Ùí£ÿßÓ¹´º¢¾Žœ ö …  Ï w 8  ê à Î b 1   - ? R S O ) ð µ ‰ | ¡ Ö  ? Y u ˆ — § Ã × æ Ó º | ' ç È æ  C F 4 5 A F a ƒ Ä ü Z ß U ‘ ® Ó & Ž6à­oMC1 ª'ö­¹ËÂKlJW‡áð§w’ÅêKªòÇ¢Oi —íA½“=Z(Ò}^P ® ( ç – H Þ Œ \ Q A *  Ñ ¦ ‚ _ G / ( + 7 < A O O E  ò ² g )øù 6 v À ù # P p ž ¶ ¯ š a $ ä Ÿ ‡ ‹   5 G 2 $  Ú ¿ º Ø í " u ½ Ü Ý Ù D Î ] ¢Qé–9Ö¦|ÄküQÇ‚uû—jâü™7õåßE.ä+2ćñ\&ÆÎÛ©mX‹ÓâÔÖà ×  J Ù ]  Ô Ä ³  é õ Ø ‰ = õ ¸ ˜ q v ‘ É  (    à ® Z /    & M v ¤ Ë ó # J g u Ž Ž ‰ Y  Æ o = ! > d ” ³ · º   w M 5 8 4 W — Þ  þ ï õ 6 † ü Y Ö p  ‘'ÍÕàr_>Ø¢.-XYW?^yCú–gâX(¤ à^MO…cQ‘-ó q ö © 0 Å w 7 Ï ˆ _ } ± ò 4 ! Ñ B Ì s & äö c ¶ · ž ˜ ‡ l H & ðäÝáâäáãê  < L [ u ‘ ¶ ´ – O È¢´Õ  < X l f Z E 3 / ( J ˆ Ö  4 8  ÷ ( > € å ` ­  Š _7’1ëy„XÐxõ^•ô÷Ô&_Z‰bÃÓ‰nÊ fƒå¥t/¹f 5 y È ‹ | u  ® f J # + P ‚ £ ž š `  £ ] <  ýïæéïöóõ   " ïªcÞ­wO'%4HSf©Þ ýïÿ%rÉ  : 8 0 ! $ , * $   * I c ˆ » Þ í Ú Â ­ “ ¶  ¾ ñ  ‡ ÿ 6À@†–\<ü»Ud¤q/±z6Ývôj8‰Œkô¶œŽ‘ j  ½ h   *  ¸ : ë ç ö - k x W  ½ ~ C õضŒb.볈„„¤Çî"ísôný¬Z*ýïçìåæëGy«Ëòsâpk¥“yXVfmv€Ž›®´Ý . † Æ Õ Ó ½ £ »  g ® Ì È Õ ó  * Bo c¾‚L ¿@v©»­™„¥ö|‹%63C` ~ ª ¹  ˜ { U R Z J ý ¾ ½ ê  þ Å € W \ u Š VûQœôk#ØÃ´Íç:XŠp$‰ê`ôÆž–‡ziN%  ;h—ÃÜýuä‰BÚSln>ôYÃ3Œ¿Óø ! N y ® Á ¯ ¡ à ' F W g ¤ ì Š L 1¥1éÄ"¤¹›²¹ú(÷rÁj  Ë $ ˆ Û o 5 ,  Õ œ j 3 1 h š › LÛr/C‡Æî†àɬÈðÕÿ9R^jesJösò™\at•¦˜€Rûï>^ruww¥àc³T£Ô¬t:?Œ/çŽ;I52[±  1 (   > ¡ î , a Š ¬ ç 8 ® , ž ä - 'ÎŽKïxï}& : D o V  ¦ ] l Q À  8 á Á È Ñ ± c ¿˜ž»²qÿ’N:=6î‘Ý 1\ð¶ê%[h@Þ¥uW5ýÀ‡iS`}˜ž‰nM.! ,05>ECEFc}ÒDÚqÚ.)ÅŒˆ‹öƒYCìUGû%¬HÐ 5 Q i Œ ½ þ + 7 )  , z ù h à  : x Ü S éwd È w  • §  J : ; ] " k 9 * ø Þ€³}a<þ¡Hðè­@‹Õ)‡0æý.‰áýì“CéY2.'/:B>34*îÑÅ¿ÈÒ×ÏÅÃÉË×ê *^²U¢ÃÔº }HMdõÊ«Yƒc+"¤suP½îÕÔð 4 w š ‘ k h ‘ © , s q k j  Å " † ¤ 5 ' 8 " ÷ û  ' ¹ h9J$øåÀ-´3˃6ï×´búrå€=* ñа“{hO+âÌ®®Ãí$<9+éÀ‹W. #,;LUc‚š›– µÀÞF‹Ë ")øœjsæpüY¼40Äõ)[—ÓôüðÖü l ú Z | ” d U p – { Ž ± ­ q A \ « x {Õa8+Þ€@ Ö€|ú®t~²Á‘NÄv¨i¡~FÎQß|\R}¡Ðò^”¸µ²j6 Öœh=ÿöÿâÿÝÿò;V`o—»ËÅʼ–wcŒÎ:¦õK,ÃwCSÝsó&:TÖ°À§8¦Îÿ3|Ò:iE*cé o Ý 9 <  É ¥ kþ * ܼö & ­d¸4Ó‰´{]>ñhÜucu¤ÎžràÀìbÈÛ³2´AÿÚÿÁÿÁsÙ!<QTlpd9Öš`0ÿØÿ³ÿšÿŠÿlÿXÿOÿWÿXÿgÿÿ¡ÿ°ÿ×n®Ï÷î͈A;\ Ot1Ì?ÿ·ÿŠÿ“ … a³§Cî›pÉ#Ñdz¹=ß a ¼ ¡ _ò¨„}n‰iSFlcî=èIÕ^(ÄHéËZŽ*™/cÝ<Z‘°¯È<¾HÇüܲxF÷Þɶ—}nj]V[XG*ýÜǿǾÐþ?ušÇȺoª]/ÿîÿí tþ_›@–ÿÒÿ8ÿFÿ®tfxo‹÷“AÈ*lèT•òi}Æ«€1êÑøl”Ž’rYñlÑi¸Mþу' 6‰À´{(êíf”Ž]4(|ëž^øzƒlõ€“Hí×â5ç#M†¹í +ø¯t0æŸc(ÝœhL+ $.2娎k)ÿÕÿeÿBÿ^ÿà€áóyÿ×ÿQÿÿgÿö‘ãáÁ¾ð:ÜB¼XÙE¥ ”v˜²ŒDI4^if½4¸=ÐW¼1¶Œƒ¨Â¹‚M6d¸ # #bÙièÛ¾*ÚGm Ž  E ³ûý&“ñ¥Ê"å¯jú M ¡ Ø  B f K  ¿ r !Õ‚4ËW½mÂ9¾oæw~z`âWÿÁÿÒ4銥`ŸÿÏÿlÿ†!ªôìªl˜3ùaÈsá4„âI¶sŽi;_“ÈÞÉcóhð{ÿÍšŸ­ÃÇ»œ¡Ð'b©Ø_'EiTVŒÝW O u Í ü@U» 2 Œ C  , # z  åÏ’.bmx€„b&ð¾šnEê Ô ú Ñ ° €T?#Baò´ÀÍ•RÛYV‡à&ö^ÿ¤ÿ$ÿ/ÿzm‚7ÿþ/¾>¨á [¸Y½öNÎ)<*D?0ÿš¯Z ¶<ç±ÐO}¤Ë P»7²ëaþKæ » W Ž –gN_“á0A6Ên¤Áv´ibn°Ô4·s?ØSL¬d@*0/0'*DZnBuž@òV±é t Ý Ü ¿‹tPÇ甀¶ŸØÁõýAÿâ"žüÒd+ j¤Ôù5e‰‡³‘ÙïøB¿M¦6 Ü«Bfâ}â[óÀšs,ÕUJ • … †‘[ñ•)ÄHÑ&utb  Ú!R!¶!£!s! « p R b T „ Ñ!f""¦##"¾"6!Ò!–!c!g!y! !©!Á!û"3"c"Q"H!¶ õ®†ü\hg`^·' & ž 4 Î O X #©3"g ¦ýãN*]P ÿ‚ÿ0ÿ8ÿºKÀäÎ×ò%OBPž‡·¦>þ­b'/`Yí²u=<q × 0 ^ VNUÑ‹‘kD9 b"a#ø%&·'ø)*)+',I- -³-®-,ç,X+×+x+L+++++¶,d--w-o-9,Ã,k,0+ó+ó,,S,g,‡,Ò--F-+-,ˆ+È*˜)‘(7&Ã$ù#1!BOkŒîDŒ Yˆpƒ ® D . XaxõÁ:ëÇ:µQfÎ79æŒ]x¶µ·Ø„µž ¯¶Ï-‹Éÿ¥%K  Ë  x-ítÇj ÚŒ7¾ ’"¥%$'Æ*(,4-¸/C0Ÿ23q4×67n898Ð8”837s6Ð6U5õ5Õ55²66×7É8—9*9,98¡8[8.7û8848~8™8¼99X9z918ö875‚4 2„0Î/-O+¬*(h&Ï%3#s!à w^QOQú€ƒ\ L Á < oƒqû´;ʦ™½¹_´ ÿô 8SPZ•ÀÁ/’ > ! 3€  ˆ Ò  ´c(Â^ ßÓ¥-™ +!ì#ã%ž&ä()>+-P/ï2{4“6I7˜9:›½@9AˆC DÃFHoJ0KˆLçMNMÅMwM LÌLÏLÞM!MJM¸NLOP P®QPåPPO™OiOi=`à@uBwD[FGÀI JhK³M$NÀPrRSwTˆUœV;VÉVíWVøW W@W{WÈX X\X±Y Y‚Y¸YÍYjXàX4WŸW[WWgWÜX¥YFYÿZç[œ\"\+\`[Ø[YqWùVSÙQ—OzMÃL'JôIÇHÁG¨F‰E‰DÅ<š:Ž8”6Ó4­2#/+ì)&¾$Ø" ·¢5ìiª“ ± 6Ù@t$ÍeNÿêÿû)>%r"€´¾_!#ó&×)×,q.Ù1e3ñ6‘8ñ;= ?pAîDtFmH I J @BåEGjJ-LáOZQ*RÆSÿUaV¾X-YyZ—[¨\ñ^0_O`;a2@ËC8EÍHFJŒLÜOSRU W¸Z[°]g^¼`a)b bßc doegfYg+gÒh”iibioi|i–i¾j+jÀkhkîlEl¢lÁlÎl£l”l?kÂkj\i°ihugâgwg fàf¢fìg|htiDjkkÍlƒmm’mÎmìm°myml¤lJlllkËkPj^i]h:gRfIe c¡b(`X^\VZ2W¾U@RuO±L«IwF^CJ@ý?4=Í<89ø740“,'’"™±åúÍ ¹ Ú¨(û¬F BÆ@>i=Í=/>n@-CEÎHK*M|O¹Q¼SUÀXI[]©_Òaºc,dáf%g8g¼h)hshíi‚jj£kkikçlIl‚l lÑmmTm¶n7n´ooBo|oroMnõnÃnZmËlûl*kYjŽiûi|i?höhåh¿i i’juk:kÿlÃmjnn€o o\o•ooco'nânÐnêoDo®oípoµo8nnmÊml5k%jh¨g>enc a[^ø\DY­VéTQMäKWItHEG+EHBÙ?;O6´2.-'Ý"„'tÜ‚ x h 1^ROCLŽJÒIHµH^I®KeN0PÉS~V5XuZ`[ë]‚_caµdeÿghûj;k½lÃmvmŒm¡m£mÖn"njnŸn¼nÙooYoŽoÀoûp7p^pŸqqq×q÷r%rqÃq@päpLo“n•mlŒk‘jöj…jqjKjOj6jrjÜk l^m'mán‚oo¢p8p¨qq/qIqPqTqŒqçr{ss”t t&t*sÀsOr™qèqppo”n³m^kõjgýe¤cd`ý^ž\YV|TŽSgR›PúN˜JFzAŽ<ù7Í2F,j&‘!Y^z²ÈÜ ` ŸVÙTÖSœRWR'R SETºW Y}\^}`qaúc+d›f9hi¬jíkÞmno3oâpHp7ppoöoîppWp£pÜqqq^qÙrbrÅrêsrðr qþq~p¿oènÑm©l‹knjÆjVjWjDjSjEjnj°kDkél§mLmànsoo§p6p¶qqFqnq•qÖr.r¢ssysèt:tœt¢t‚s÷s]r¶rEqÕqjpœo£n-l·jýiGgxeËcâa”_o]©\[ÝZ{XmTŽP[KIFÍAá<6Ü0î+&€"qQÔbS^@\Ó\[/[,[7\7]Q_7aFcpekfáhijfkßmJnioTpq qærµs"spsgspsIsrÔr˜r;qµqDpöqq/qxq‘q¯qÒrì:5á1¸-Û)Ý%þ"hgŽg=gfçff‰f§gsh™iÑj}kkÉlÝnoVpBpýqèr²s^sÖtTt¼u:uuÎuÆuºupu:t¶süs)rtr qµq®qŽqÉrrÖs¯tŽuZu±uñu‘u t/s{r±qépøoænÑm¶m l—l•l„ll‘llvlpl†l¯l²làm(mÆnyoIpp¥q q)q[q\qFqpípípõq\qêr²swtt}tŒt„tHt3sÿs´sBrÔr\qæqvq)p­oóo n>m“m8lkÍif}bD^uZ¬W_SvNªInD³@yqðr‘s6sòtstÏtÈtÃt|t3sÈsdrôr~r qºqJp¤oïoUnìn·nUnlžj‡gNd4a^—[šWÐSJOJèGCW?F;6«mÎmçmÚmÑmjl§kük§kélLl×mmfn$o+ppÚqºrys?s¢sÁsºsøtIt‹t°tÌtÏtÜtÎtÛt„sÝrðrq’q?qqÑrrrös¢tiu9vv‘våv¦vQu²u!t¡tKsôsurÝr4qÏq¢qÍqúrr#qíq¡qEqpØpŽpppppµpïq\qôrirªr€rXqàqLp¸p0ppp’q1rr²sZtt¾uRu†uªuiutžtEsõs¢sKrûr”r q•q>qqpñpëpnËlŒj0g»eýcÒa]JYU©R$N|JFLAào‘oÕoÚoÅoKn”nmÆn nOnÈoo¨pfqFqùr«s“tJtÚtìtÏtttštŒtctv§uðuAt¢ts•rþr3q^p[oynClÆkixh_gjgtg«h³i±k ltmÅnçoÊpÑq‚rr2r!r r4r£s*s‘sµs«s¬sÝtbt±t±t sJrCqNpoßoLnÂm½lWj¤i3gÞfÐe1bÓs¦tTt˜tusös–suslsÍt;tóu»vovÚwDwðxÁy©z-zgzyàyyyDx¼xvÍu¬sÿroámÛk¨iFfÖdbbh`~_ƒ^É^Ô^€__ãa¾c¯eâgÄi¦kžmÊp*r`tcuáwkxay6yyêzzzz´zéz¾zqyÖycx©wÑv¥upt*sqÞp‰nämkWiÍhQf¥dúc.aú`íaaQbšcÐe—g|irk9l²n9oVplpïq?qHqoqÉrYrìsHszs¬söttçutos­r¡q¿pþpSo±on.mk¸jži½i1h.fnsât£tñtæt‰tOtLtWtÁuCuÿvÂw[w£wñx™yfz5zzz.yÜydyxqwv t¥rŠp$m[jÚhMe£bê`]¡[`Z;YiYeXëY:Yß[ƒ] _Uaicÿf½iÛmpr¸tÙw$x¹zz´{[{¬|#|Q|m|"{Æ{*zÂyüy w‰uîtrNp[nRkçiNf²d@b3`)^\ß[ÙZÖZå[!\u]À_âb.dÏgOiˆk¸m\nùoåp¬pöq=q‹rr±s&ss×tAtìu[uu,tys{rÃr$q€pØp4opnˆm¢lÏlBlk‡jSs`t(t‡t¦t€tstt·u-uÂvuww‡w°wéx‰y>yÛyîyÀyx›wôw|vˆu`sqqnçkïh®eÍc`]-ZW¦UqTmS³S¨SS-S…TÈUíWüZ#]A`‚dQh&kÉo1ru&wlykzx{Œ||›|°|³|D{Ò{&z½yÒx±v¬t‚qÉo7lbiŽfpc#_è\¿ZCWíVsTôT>SqS“SÔUVLX€Zì^ a(dronÚkkgµcÿ`3\FX¶UBR©P#N–MLmKÕL3LMÞNéQSsVôZ‹^bbeRh\j¢mn€oµpKq q­r[rús—t"t¹u&u±u¨u2t`sásrr÷rfq¼qp›p@oØo—ooSn³qšrws!s©sót;t‚tÕuNuòvsv¹v¶vv¸wGwÌxw§w1vPutsqõpmiøfb!^2ZWNS¯PyMXKÇ>ƒ?Z@-B@D[G×KXP:Uˆ[S`´e¬jÔosLvx…y¦zÒ{{‰{z5xvwt£qèm°i2cí^ãYÚTÓPK'GGCáAÙ?Ë>|<Û< ;i;ö<Â>C?BACFfJNÌS©X|\í`½dÍgíj´lon8olp¯q˜r“s.s s×t`t€t8s‚ròrxr!qÑqJpâp¬pµp¹p¾pÌp”p'o˜p•qlrr\ržrÌs sjt tltVtttUtöusu–u$tÒsérûqBo§lßiÐea\W8R~MÚIÊEBs?Š=Æ;ü:ÿ:9†8}7ö7º8…9?;<ß@CzH‡NTNZ _”e[j|oŠs,v–xbz+z {WzŒy[vÃt‡qmjh]c ]WdQ÷L¤GÑB¡>±;O9‹7Ù6ä5}4²3ü4y5_78H:;î?BxGCLeQ×VÌ[C_öcÞg‡jlºnvp'q:ross‘s°t"t3søsLrŸr q°qwpþp­ppºpìqq0pøp™n¼o´p‹q2qtq¢q°qÒrr°rýr±rOrSrÒs†t tBsÜs¡rªq o†m€jfSaF\+VšQKôFÑB>\;o8»7(54‹3¯32*1¨1f1ú2f3Ü5J8U;…@¬FTMS:Yu_îeàkÀp9twyayøzØy¼x*t¼q•m hlb‡\dUÊOOIfC¿>î9¼5ß2u0º/.f-S,Ü,Y,õ./ë1r3~5q8‡;Æ@¥FL.Q²VË\`ªeh€kån(pBqxrÜstt%tˆt–tqsÓsrar qãqsq6q2q„qår/rWrqÒn—olp'pÃpópópÔpäq$qqÄqEpËpÝqr9rÅsr½r…qZpm„jìf°b\DVlPQJIDÚ?m;L7a52Ê1§0e/»/!.Â.#-Ä-ˆ-Ì-×.Ì/Ð2}59:!?™FMSÛZëažhCmˆr¼uÉxŒyzxv¤r„n“i(c¼]6V}OqHdB5pˆpŒpo(n…nŠo4oÎp5p˜po›mˆkngbl[ThLUDd=60‘+'ã%D$ò$¼%u%ß&D&‹&¶&ý'&÷&²&J&X&n'Ñ(õ,§1G8W?FñO'W¯`Pg“nÀrØv-vdw-u0rµm¦h´b&[­T-LfD”<»6r0Ç-)=&Ø$h#I"U"N"%"u"½#[$$Ø%†&}'o)*ˆ-¬1S7$=4D_KPRDY@_Šeàj¤oq¤tuuÞuÝuûuÂuºuFtis~rõrÉr‡rwrFrŽsHtt¥t§t€qÝq÷rrErq5popop–pRo¡n©nn nÏozoípWoÇoMmje`%XˆP¾HL@8¥1^,&Ð$G"M"‰"¾#œ$'$„$Â$ä%2%]%Z%/$ð% %"&J'**o.œ5?;CCK>S¤\ cPj°o/rÕsYt`r­p‘kògba;[6T#LÃE0=ˆ7M1ª.*(R%í$š#t#"¨"®"¼#*#Ÿ$9$°%H%Ä&Ú'Á*Q-82‡8O?œFœMæU>\$c*hŸm½psDt utõtüt­t“t%s_rŠqüqÃq‰qyq0q^rrõss‘susYsDs%s'r³q¦p­pˆppo,n)m¯m·nvoAoÔpQo»oSlÑjdO^UÄM[D“<4‡,û'°"« ©;â O!.!Å"+"s"±#(#‡#¯#®#«#â$ $ñ%s(+1—7p>ÙF|NœVœ]Öehjn¸oÐqXpn6iÍea_‚YôSƒLËE²>c8/2~.Ï+b)O&ç%X#í#9"d"!!ü"K"’##d#Ô$$À%<'B)z.T3æ;XBbIëQXå`‡f­luo¶r™sgtHtsýsŒsXrìr;qpøp¾p•pp8pVq qõrr›rŠtát”t1sís?rpép“pdoœn¢m¢mMmdn3ooÀpQoÅolÝi¹cq\ºSùK@Bc9Ê2X* %^ ­'Ú>æ Z « å!/!³"1"v" "Ø#:#ˆ$O$¦&Ì)Ä/4\;AßI#P6Væ^ckgöiÎl kŒj‘gcv^“Z%TÈOH—AÔ;œ5À1’-Ë+N(r&o$™#"V!Õ!‰!Ì!õ"S"³##Y#Ó$%Ÿ'<+Œ0Ã8%?FÁNbV]ÿd¨jýn q¼rysNr÷r´r!qÍq`p¿p%o§oo|oœo[o‚pAqR1I.@470*(Y#9ñóG.¨6“ÂÚ  ˆ! !S!Š!Ü"I"•#7#p%M'ü,Ê1w7\=QC¸IùPV¨[á`kb×e¯f1f'cÑa„]üZûV³QãKÃEr?79C4œ0\-C)Ç'H%#ç"n!È!l!°!Ê""`"´"â#)#($3%%(Õ-’4Õ;»CŒKJS6[†b¡i{m{pÏqrLqÑqlp½pRoäoKnÆnNn?nmnÄn¤nßo¸pÓq–q÷r&wxv¤u³tÝsÐrlq0pŒoìn˜mZlnlll­m€nJnØotnÿnålhaa[Z!QH!??6±/n'¨"¸Ú=µ‰{ÀÈ¿Ë  p — È!!˜!ë"«##%2(,Ÿ0ñ5ø:ñ@2EnJ®PKTýY[Ì^þ`¯aúaya _0]ºZWVIP`JnD=é8‘3–/ª+a(_%Ü$œ#"\!û"7"E"l"ˆ"¦"¸"á"º#q#î'+g2{9XAQIQ!Y†`Øh lYoÙpˆqTpÇpTo—o n²n!m¬m3m8m“n&n6n”o„p»qªrAr¡x”wvRu:tr™qSpƒo¥nl¶kÔkôl@mm¹n6nÞn}nuk‰g’`AXßOãFó>45¿.™&ã"&±iö«ŽÅº¦”¢ÆÈû Q ó!`"U# %q(…,ê1 5N9S=_AEßJ©NóRUwXÛ[´^…` aya`Ô^Z½UO…HüB`>5÷.æ'C"•K|õFŸ¿¬¡‰mcK‹ê Æ!w"æ$F'*Ÿ/3<6ü:I=C@aCçGìKÒNþQñUTXõ\ì` bûc±dHaà^þYT4M€Fˆ?¿9†4n.ú+,'ô&s$½$ #w#b#6"ô"x!ñ!„!Z ÷!i!q$#'ñ.ß5Ø>EêMéVE]ÑeŠjgn*nßoÅo?nËnm|ml¨lXkÖkØlYm2m‡no pGqVr:róy5wÚvfus¨r:pÙo§nQldjñjjQjªkekèlMm lçmjWfW^òW†NÎFb>76/'u"Á‹R§í?2 õƬ•ïX i!b#J%8(†,p0è58];=?GBEpILO$RœVÏ[†_Ìcíe±g+e7b¹]gXXQ JC,¯8f2 -¥)À'æ&%N$˜$[$#¤"Ö"!_!( Ç!0!#|'.57=²E M¤V]¡e”j¦n~o"oýo]nÇmìm^mlÒl§l!l#lÃmÙnwo0p)qUrdsvt~x{wu³tSsqÈp|o$mŒk}ji ibiÁjfj¨jßkk³l8i÷fŽ_¶X P?Ho@×982F*¨%!Ü!  µˆ3&\]mmô †"$#ß&Ø)á.2–7;0=Õ?óABCŠEgH5JåN€RFV×[™`MeVhgkiýgûb®]ËWP.H“A:C3.Ô*‡(j&Z%´%$ð$À$\#š"Ç",!ô!!ê!§$ ' .˜5¼>>F3NBV«^RfGkRo%o¿poßo2nBm§mTml×lClNmnIooìpõr-sStuÌwÑvŽuEtrÛqÝpÉo“nljŸiÄiújMjÓjæjûk›kÝlyjˆga7Z~RZJÊCX;å4ó-V'ú#Ó"–!Z!F Ç „ 0 & E Š £ Æ ¿!Y"$&E)Î-g1ö6â;?ºBfD´E±FGUH{J³MP¥T^XÑ]>a§fiÂl¤kÀiûdÀ_ÁXãRJhBº;¥4¥/*×(v&D%Â%F%b%U%$x#Ë#L##"Î#7# %…)20.7G?³GžO¥X_–gWl/oäpyqCpoÕnÕn1mÐmmm)lŠl¡mjnÍo´pªqÇstZu¹w'w*uþtÛs¸rÃrq2p&n³lák†jºják kkfk`kõlRlÿkShÂbÚ\uT~ME¸>X7X/®*%…#ï"–"’"!Ä!€!ƒ!œ!Î!Ù!í!¾"W#*%–(5,a0«5Ø;E@6DÓG¿JfKXKàL LN*PS?V¡Zå_%c}hSk…nXmŽl!g"bZëSãLD7<Ù5…0*û(o&;%ò%ª%õ%ÿ%Ã%F$¯$:$#Û$b$X&ë*¬1§8»AHöPìYB`²hDlòp’q'qòq>p}oqnÅn\mìmŸlúmmëocp_qkr™sýu^váx}v;u,t:sErŽrq„p¶owmçl­kîkùll\l)ll§mmÎljjNdú_WlPDHÙAn:>2|,•'„%h#¸#”"à"–"Z"j"x"š"›"½"”#o$ '§*Ù/±4¬:}@pEãK'N°QõS$S¼S™SëUVY![ð_cOgk?mèp>o`n'i`d+\¢UWMREE=¯6 0>*Â( %Ê%£%p%Ï%Ý%ª%D$Ñ$r$|$p%K%¤(,—3¢:¾BõJ¸RtZ‘a®hÔm.p™q1qþq_p«o¯on¿nRnmfmˆnYoÊpÅqÓrÿtcuÅwHxçu¨6¡0l*Œ'–%-%$¿%%(%$·$o$/$t$¯%ô&È* .„5¬<ÙDéLŒT[Îbi&m!pUpôqÇqHp®oÖomo0nÎnsmÑmèn«pqrs$twuËw@xÐt#sAr£rq°q˜qkqp$omøm5mlüm$lílñmmmúnÊnlëhédM]‰WOÃHR@´8Ë27,(u%|$h"Ø"9!Á!ò""k"«#q#ú&(€,ÿ1‘7“=¨DRJýQ8W‘\2`pb8c\cYc×dÊeég»iÅköm×o…q›rñtfs|r:mlgÑ_ÅX5OñG–?z730¨*i'$p$#§#ñ#î#â#«#˜#‡$$”&G'«+0o7Ä? FèNcU}\ðci"l—oioõpµpRoÎo!nénØnŽnAmÀmën°ppðqærðtuHv‹wãsrJqÚqfq9q;q%pâp$o'n"mQlýl×lðl¶lÊmGmïnÔnumÕjf­`{Z‡SVLDM<`5v.È*v&Ç%"ã!ò!>!!š"1"#°$«'o*»05<BƒI@OÿVX\ûaóflh_i¶iáj“k—lÎn_p q€rŸsbtsu uýusðoPi®a^YxPàHZ@(7Á0ö*T&©#¿#T"Â#"ï"ò"Ò"ó##ç$Œ&~(I,¤1ò9|@ÚHOäV´]èc­i'ln|nØoron“nmåmùmÉm¢m`mÁn oôpòqäräsítôvw%r*q“qHqpîpòp×p¦oüonm'l»l}lˆlJlelàmšn…nvnKkÅh©c1]ÛWP=HÀA:3.")Ó'k$–#&!ú"!è"Œ"ë$`%Í)?-43+97@F³MGSåZ`ue?iƒkelÅmmánìp0q‰rËs´tztîuŒuÍvzu—t—p7jÉb€Z}Q¶I&@ï8€1‰*Ÿ&¡#v"è"5"r"b"€"|"È#$$Ó')?.3Ë;sBÕJPQƒX_ dciIkœm…m¡nm¦ml‰lsl¢l„l“lªm]nfo¿pÒqÇrÅs¯t’uevFq€qp×pÀpÓpäpËp°poºEyLhSY_cgÝjelÅmÍn×oBoÊp1p»q&qjqŸqárWs s¡t•sîr°nÊj°dy^kVãO F¬>26ð0 +˜'w%¸$#è#£$]%&Š'©)Â+È/×4™;4AÔH°OTÿ[B`ŒeÚhókHk¨lMl4lEkõkhjýjükDkkolNm¯nàoápÁq^rr€rÇr r{oÆo·o·oõoÿoªo!nèn–n mPl‹lkâkõkÃk¼kÒlJlÞm—nyn¶nïmrk‚g¾d_*Z—UNéH{B5=8y541”/@,È,,Â/™2{7w<†BéIiPV—\0a»e±iskxmTnnÃoo°pplp’p²pàqq‘rNrâs§rñqÃnSjÎeX_îXùQÈIÐAŸ:Q3a.­*H(%î%j$½%&«(Ï*q-/–49\@F©MRàX)]øbÎg€jkñl#l°lŸl™l@kËktkfkŠkDk‡llmÇnÐo™pXpÚqzqµqËq_púngnÓo&o°oØo›onÒnŠn#m’lâlfl›;}8&6 3–3G3„6g9k>CBûH´NŒT”Z_ÅdÀh!kUléncnÉo$o=o²pp;p4p3pRp~póq¯r7r½rqn\ktf»b[ÉUxN3F”?r8±3Ï/0,Ž)Ï(Þ'â(Õ*?,á.Ñ1µ4Ã9“?EsK¢QTV”[C`ˆdãhük+lâm m¥mˆmelùl•l;kúk×khk’l_m‘nVnào„oópnpmpFonìmnn¾o¦oóoÒoGo nÔnœn$9\4“1_.,´+£,Ü.1X3P6U9Ö?D–J®PiUsZ&^Xc%gj¤l~nn`nÑn—nVmÒmpmlzl ksklKmbmön]ooxoÛo¤oMnWmŠiSkGlÆnfo=o°o‰oœošo²o–o>nÖnºn˜nDmÇm/lælãmKmÃnnamùm…l jsgÏe:a©^Y€T PKÊHîFVDæBÝBuBqDíGçL|PÈUbYÉ^+bâfûjémGo:o×p½pÏp—poÕoÒoÜo÷ppoËoÑpApÂq+p×p…nÖläi|fCa¦\ÀVºPwJcDÕ@7;K7Ÿ3ë2x1€2ã4w7&8ø<?ÍEJ€OùUYc]‰aDe‰ilm¸oDo¦po´oinÚnjmÓm lZk­kºlPm-mm£n"n]npmËmk§j{eCh&jvlßn[ooÕpHp„pòq qpÊpÀp‡p&ownŸmüm¢mÂmøn/nFmùm¸lÑkÞjhe.bC^ZaVIRiO³MPL)J™JJ LÌORSTWP[_ˆc,fíjmZobp÷qerrqÁq pypoÓoÃo³o˜o2ootpp¢pp…oGmÞkxA²EÖKAP€UgYé]’a%dSgújëmwnÓp?p¯qp¨pioßodn©m´lÜlll‹m+m?mmMm1lãkÆj“h¥fû^ubieÊi8k°môo/pXpôqËr>r‡rtr‹rNqøq8pIoonÔn®n¨n·n nJnmYlÁktjg­eCb^¶[HWñUS=RFQ6?`@yB×DÁH#LWQwVGZx^QaPdIfçiçlPneopËqqTqÃr qÎq¶qApµoÙnènmgmm0læl jiKgeŽb¸_É\'X¾NkTqYü_ncöh£kân³p$qÀr–sos¾ttsðser©qÍqp¶pppIp o±oJnÑnmòm5k°iüg°e^c `È_ ]4\Œ\#]O^Ïa(ceKgwiûlÞo~qÏs t6t›u2uwuÌu®uWtÃt\ts³sVræriqÓq‰qƒqËrr!rqŠqpVoÆnmlîjg bå^Z:UéR˜OpMñL€LõM OêRUkY?]D`ßc‰eíg™icjÿlÓn[oºp’qvqÔrqñqØqZpÅoçnþn+mmlÊkÅj.g£eobˆ_~[œW£S!NÅE L2RñYn_dçiBmo7q`rpsŽsþtwt|t”tr¬sjtIt€ttsÐss)rÜr“rmrErVr°rÏr¶qÌp›nüm‰lFkj7i)hÒh¡i¡jèmoqrùtbu¥v–wÊx—y4y1yx¯xfwöwŽvÝuötþt=sžrárEq›qlqrqýr”s4s¡sëtXt˜tét›t/rÆqnÒlÒj‡gêefc a‚_ï_³_Áa#b—d¥f¹hiéjÉk°lym_nHo7ppÍq>q‹q‘qÍqµqsp´oönÜm­ljkÀjChVd†`ZZÓUšO«I•C<±6o0&°.\6>HEªM[T%ZÆ_ªd*g.jql»nùpZqÕrwrâr¸r®r‚r\r:rrrrlrüsYs’rãqÐp0n½mƒlqk¸jÈjqj2kl'no¼q‡sTtÒv/wxxšyyxÞxHw±vüvnuÈtôtsirÎr qypìpäqq¤rPssttÂu-uƒu7tÙsÉr­q oƒmˆk3høg eÖdvd#d/e6f(gqhºiäjàk¢lmm-món¿op[qqlqžq‡q­qvqp o%m³l:j…ilg(d=_NZ;SãM±Fú@F92±,W%ñ($a,d4;–CmJ©QÙWt\…`5dOgj‘l¥nÎoüpüq1qnqaqkqtqpq™qÙr^ss–ts®ræqyp&nýnmql½lˆlLlòmõo“qrdsµtÜv wwûxŠyy yx¯x1wTvƒu{tRsArfqÅpöpqoûppUq"rs%t tÑuÁvUvÇv’vZu|tŽsq·oûn lDj¼iÍh³hwh±i{içjfkk´lJlÏmNmÛnvo1ppºq[qšq½qžq¾qvq oØnŒl¢jÌhŠfÙc¥_›YS‚L^E'=ª6i/n(B!ÒbÉü#(*1B8‘?›F¿L¤QæVZ^db dég±ik?l"lêmImÎnCn§o-oÙp®q“r9rÜr¼rKq;p:o>n\mÑmKm4mm…n]o§pÍq¿rwssàt²uŒvvvvwv™v`vuZtys5qØp¢o¯onSmõmªnnoo€pÃr2sdt\usv!v¹v¢vŠu²t®s0qÈpXnãmµlškùkEk=kžl0l?l9lzlØmmUm–nn‘oKppÁq5q@qHqqpˆoØn&lBišg-d%a{]+XQ"JpBæ;!3,X%Ì×ÔòÁóK ‡':-ã4¢;¸AéGWKºPˆTÔY$\œ_ëbXdàf˜hijqûq:p£oòo%n†nmûmçn\ooúpíq¡rr@r”râsAsjsls8srèrÌrur q9p;o5nfmØm"lØl¨m'mµnäpHq»rÜsµtºukvvvu,t rÏq³pÑoñoYnÀnxn2nCn‰n¾nnAn;n:mïmÏmçnpooÃp˜qqfq9qpÁpªoÜn×lˆiñfyco_ [íVPbH¸AS9b1)h"rrÏQ  JEhšc#ñ)ß0R6];¾@8DÚIM›QyUWÛZå]R_ŠaDcdÈf_gñi¸k^lýnnánýnïn‡nfnmlùl~lZlFlšlúm˜nOnÑonþnån ntn m·mlsk×kckjÆjNi™hÖh9gÜgbgfg‡hciTjÙlˆn'olp`q‡rhsKs‡s˜rîrq pvpo³ooQoIoHoToeoSo#nÓn£nTm®mWmnnn¨oLpp@p3ožo3ntmïlƒjÏg¹dl`A\XSWM)F’>Ø7:/v'~ ]M€ îÏä™ { î$É*¹0:4ø9y=¡BKFJBM[P¯SVpXà[Z]™_ÎaódQfnhriÅkkyk¿k¤kÏkÑk°kZjüj³j}jŽj°kkbk˜k¨k^kjjiah°gŸf`dócb|aw`¢_œ^ê^\^\^A^Ö_‡abd¥fßi jìlsn#onp°qCk<}4Ø-%‘&+Φ ²¦Lñ ò½1Í %O*.P2%6:±>mA–DÕGÏJÎMšPjSUˆWüZ®]&_ƒa8bßcÄd~dÉeFeff eëe}e d¯dvdgdddBcÿc€c boaäa`j_$][YxWmUSþReQ‘PêQ5QjRSÌUóX'Zú]ë`Ýc™eëhRj$kælàm¿mõnn nn%n0nNn‰nµn¼nžn—nmnGmÇml)knkAkikÛlllEk¶jÅi%gäfd `ã]uYT¼OÊJïE7?A8†1Ú*Ø#zÔ¢ ° lŽò.šn † ´Y1 #&½*ä.ì2Ê69J<'?(B!E/HJ˜M!P RãU¥WÀY©Zé\1]"^,^õ_Ô`,`__à_6^L]Œ\ý\Ÿ\,[xZˆY˜XÅX,W”VÿUÐTYR4P M¹KhInGdFJEhEÀF GˆIKÐNšR1UìY¬]1`ce4gihËjj™kkBkŒkÊllEl“lÇlælØläl¨lUkŸjºiãi6ii ikiºiig¸fcÛb _\ŠX[T,OgJôEß@ƒ:c4@-Ê'j!EK G²®È¾¥X} ” ®ŒÞ‚Û [#Ý'‡*Þ-í0˜3N69;ò>q@ÞC¡FzI]KºMÄO=PÚR:S«TÇUíVnVßViU´TvSRRNQžPÞOÊNzMLKvKJ²IÓH´FøE@C>A*?:=:<;;a; =&>½A™D•HxLPŒTUW„Zª])_¼a‚ccódÅe>eÓfIfºgggÎh!h5hOgògjf€ed²cñcžc‚cŒc·cañ_Á]«[XÖU¥QÌM H©D ?:–5#/:)‘#ê$› Q"v á†28ç ¼Éª W ÐñìžwÇ1"_%!'›*)-B0i3,5¢8:­=œ@EB‘D8EÝG?HÕJ)K}L#LµLUKÎJ†I+G³FEnDB¥A?ð?%>Ã>^=­<À;Q9Ý866Œ53Š2´1ý2Q2£4#5±8x;e?)BýFàJ…MÐQ4T%WYG[5\p]É^Ë_Ù`œaDaÌb€c cËcÿdcybÔa¹`Œ_^^;]˜]f]:\ñ[‹Y‰V½T‹QçO3KUFÙA×=Œ9,4’/\)×$B1Þ 'æi5V8ŒMÿå3ÿìºä{ˆ@ ™ ÿ Ûékr”và "Ñ%×(¿+J-…/©2>4¼78¼:C;x<ñ>0?l@@y@$?Î>Â=Ž< :Á9r86¨53ç2ð2^1Ú130X/ -Ó,+F*[)d(û() )~*è,^.Ü1„4Û8%;‡>·AáEHH{K›NP4QÖS°U9V¶W¾XYKZ?[[Ý\ [ü[EZ®YšXSVáUzT‡T%S›R­P¤N3KPI-FŽCs?K:é6W2m.U)²$«»Æ² * œì0ûpo¯`ÿ‹ÿØÿ°ÿXÿ…iëYcä§×* £ üòSJkôò Û#F%1',)+/-.é0M1»2¸3¿4#4h43±2Ý1ÿ0Ì/¬.J,Í+.)„(!&ï&%%r$¹#×"¨!U ÓþД,ÊS Ü#Z&)Q,/Â2Ú69h<®?ÑBjDÛFêI2K"LùNHO}P`QR=RÙR¾R{Q¾Q?P[O.MÉL‘K…JÊI¡HE¢CV@±>h;S7–33/3+>'v#N‡Ø¿Kº gžÎ§ËÂZÿÔÿÜL¤@ÿÿÎ4ÿØÿ°ÿÖ8°¶÷¬½‘t w± m ®|î£ À8¢ë "T$,%¹''ò(Ö))$(›( '9&%Á$ü#Þ"!rð[žaœP^[Ãk¤,–0W!a$'~*‹-Æ0ê3î6”9,;w=æ?êAÓC$DeE2F*FžFåF¡F\EÜE–DõDBÉAÏ@¸?©>#¯ …MKr  èµ—ÆWÄ]Aÿ©ÿjÿÆT€HÿåÿÎÿšÿ¬9ÿÔÿrÿ§8ÿ½ÿ £¾ÐÛ´NLÏóâ Ú ¤ è¥'MÊ$dÂñ9M±dõb æ r É , d O8+/u«['”÷Ô ­ õƒßŒ\`d"6$ò'?)+[--ä.h.^.ƒ.«.æ/2/“/¿/ï/t.¶-U+ó*z)3'þ'%k#Õ™²Žp·i ¹ÖàïäcJËË€/ÿ·ÿž ]ÿøÿËÿ®ÿ|ÿäH ÿ¡ÿÿ¨,ÿ¿ÿIÿMÿ³(UÿÓÿ•N¯q=³›}ó¦Ða¼ $ ó  W  ¡ ! t  Ãx^¯»@ü뤓ùi÷~K*b‰ºÝ«/  u ÒŽùA a!´"?"v"r"Í#h$$š%%%$5#,!Ô ©¶":оˆ%Œ> g sI•KÃÑ*ZC‹<ÿÐÿ¥ÿÒ9qÿªÿÃBÿáÿÿÆ"4ÿ ÿ}ÿåRBÿðÿÿ¶mÿ¾%ÿºE_›ñ÷£AÊ=*m>Wز44!Zu/âÎì‡!<‡ºâ üäÊ­œ›—Ãø„ ç4“ v … ¶Ê„_ÆØØ^£î§aʾP]F?ŠøsËÔ Œ   UÒó'9yŸV­¨+ÿÃÿà4T3ÿÛÿ£ÿßD ÿ·ÿ«ÿÞ3Nÿåÿƒÿ¨tpÿßÿzÿ߇àÿÊÿ?ÿ‘|dŠÔÿÅÿÿmXŽFV&Úä7á,ÿi°ÎÿvþøþÞþÚÿÿ*ÿ`ÿ®PÝCJN<$&N©ôŒ0?sÔ ; S ` •¨‚=Õ¨7˜xSÕQ´%±|øK ¶ Œaº+ô—¢Î`F…9£:}ãÕuÿÖ.‹^ÿøÿÂÿÈ'ÿÄÿ²_3ÿØÿžÿÄX´Lÿ·ÿŒÿòÂ7ÍÿvÿÁ×ã/o<ÿ`ÿZ=:Þé\åœÓdÁèó¢>µ6ÿÞÿ›ÿ†ÿ]ÿfÿ…ÿÑ aË%iz„rcP?:<HGa}ÛPúŽIý ) ( " ¶ @ 8    Ñ y ‹ t ] |!Pq{kô/…âgÿí•vÌÍß=eðP ){¥GÿÝÿê'ÿñ:Rÿÿÿ´ÿå>jEÿÊÿ‹ÿüˆCÿ³ÿŠ$é9ÒÿíÿUÿ|}È@ÿ)þóÿ`>Ìß«=ÿõÿÛÿïb¶ñÿÎpÿÍÿ†ÿqÿmÿšÿ¼\·ÿ."õÖ°y9ÿßÿêR‡ñu/å£m‡›Ž0É…p§é(z;¦t “ø¶ŽlÿFÿ ÿв™!±ì`š^Á8:†¦‡ÿÜmAÿÛ4xOÿÞÿüXÿ£ÿ¨ Œ¯+ÿ¥ÿ¦3ZÚÿëÿ-ÿQAcüŠ}ÿrÿÿ“Jo[Q›5ÿßÿÜÿú`×,W,òŸc@*Q„­ÁÏËǾÁ²[&ÿö3v¨ôVÃ,p²©‰,ÀuF~Úcë8§°³ÿú)úåWÂ{ÿdÿ%ÿöײµÓZÁœœj“ÆšJg™MÿÝ${—cÿÈ bMÿþÿ§ÿ§$™‡ÿ­ÿ¬Bî4ÉÿìÿLÿV#*µ„šÿºÿKÿTÿö‡cQ›,ÿäÿ¥ÿćëóØ´ˆk\hvˆ–—•‰}twpR1 $'<Pr–¾ò ÑŠ(ÿÈÿ‹ÿ[ÿwÿ¤zÍ Ý€ÿñÿJÿ-ÿ‰cV 76ÿDÿÿºÊllžÖ]ÊËbܺÕðà./k¦§TWª°EÿÔÿÈMVÿíÿ”ÿ»+”™ ÿªÿ êP+ÿYÿ:ÿÛ赪ÿþÿKÿHÿ›YþV}9ù‹ÿ¹ÿŸÿä0†¾ÐáÕ¾ª¯ÀÊÊǶž‚ldch\^tšºÒàî&;â{ÿ·ÿÿ¦ÿéW¼ú1ÎQÿ·ÿyÿ†1.ÚPBÿ€ÿjón+šc¯Wãî„â ;¾^<i¯¹\2&<—ĉÿÃÿÄi2ÿÕÿ¬ÿÝT«“,ÿÆÿÃ>Ø/ç.ÿ…ÿGÿ̳r¡ Iÿ©ÿkÿÊJÝ<A<î‹+ÿêÿäÿç<nŸ¼ÈÌäú 绑wx}Š‹’£ºÔÝÔÃÉÆº†8ÿìÿ§ÿ§ÿÇs³æÕ¶[ÿæÿ‘ÿQÿ?žŠü+ÿ™ÿ¬2á.÷q"j¯à«>&^f LZ¬{nR<1e—¥lÿýÿ·ÿá6U7ÿîÿÉÿü`¼½Yÿêÿ¼0'ƒÿ¡ÿ7ÿˆtOa¥ÿÎÿèZ°èÿðÀŽUÿùÿð9j°Ôó/õɶ»½ÃÉÆº¬¯¨jVH6$lÐ@ø¨Mÿ´ÿÈ®bža£ÿØÿÿÛ—.>Ê0ÿí=åŠÀ‰K"Gw‚BÍkX‚—œ…q†PH7Ff˜2ÿÖÿÈB_0ÿòÿÞs·¦SÿüÿóIÍ;xÿÁÿdÿµV qGÝ[5Z”´Âרձ}F*L{ Âé 4=)úôâÔ×Ôºœ˜i9ÿþÿô QŒÉ ¾;ÿçÿÏÿÛ@Ð?z+‘ÿ»§0Iä[5ÀCŒVCP„˜qªr|¢‘wq¢3IKBCq…_ÿÜÿØ M[7ÿüÿåe¬·‰E?Â*6¼ ÿ•ÿ„ ÂMn͇glaj{ÆÚÛ·^-#H`‚§Ô .7')ú×Ïǧ…|qQ+ >{±×ÔШq7 ÿìqâD8ØLÿáÿök sUÝV#gÙHiPEIl¤5ÚžŽ•sUk”¨@XTNk|q@ÿùÿÕÿð.SO&J„ª¼¡dHsư%ÿ¬ÿ¶&Ü`}h ¾ƒWSSp“³Êõ\8(8Ff‡²æ "&:6óßÉ¡x\H&.Fjœ··™ˆmD% "B‹ø-³)ÿäÿõwrrš_mÃ>@/Ce…ŒŽ`Èœ‘…zUIk“–:]khkfkW#ÿøÿì*JRHBFJk²ÞÓš]SÚ áfÿýÿâ@ÊHŠc%Ë‘uXYc›®¿µz]VZr…¡Âáù#)!åÂzZG,.Kq€‡}]DI]^adºíõƒÿÏ #z[ž„®Ùý*b‡‹kX4Ô®‘hPBPm€u(HckaYXorIÿíÿõP]PCAHj¡ÌàÅ–pgÚûÒt DÀ/]X Ζd^m–´ÇØÒÈ®‘}w¬Ðï ôѪ€xxll‚ƒeVJ1.Div…£Ç÷öÑxÿ݇ Uh*⯰Õãîû(Gl|}_AöÕ¼œd?:Seld3N[[QKPiq\1ÿûISICGYtƒ”µÊؽwMi®çà–= 2†é!öÀ”¨Óêííà×Dz¢œž”™¬ËçõøìéÚ»žŒ‘¡±° š†cB,--Gp™«³ÑÛ×¢Kÿä1âßèçݾ¾ê+R_iaaR8ýą̈qKEX\[\";JSPKJS\dRÿý ;^iZGMf|‘£®ÇÀŒ[Py¼ãÙ“>b­çôÙÅÓñíØÃ²¯´¼¸±¯¸ÉÙáÞÝÒ¿®¦ª·¼³š‚jUH422UÉó÷üÒŒ@&{ÒùÐÅÍÝèàнÆî 8BZaZ@' Ý©vXOZ[XZ2GQVQFC[b;&UwoSFSt”“Š›§¥k]nšÏÒžL 9ŒÎòÿø÷Ô¶¤¨³ÂÌɼ±³ÁÓÜÚÍǽ·±¤”~aQT`WRRrªãß’5 O”ÃÍ´ ·ÕÙʹµ¿Ûõ $I\K)$欇uaYVRKÿÿ6MegP=Rg\; 'XusWBSw‹“Ÿ¤š‚hR_‘¹·„C 9n·ø'TZN,çȯ§ž¨½ÎÌ¿¸»ÍÙϽ¹¹¶­Ÿ“Šq\\eY[m˜Ñð÷Å:I‘µ®”•»ÔÕů¨³¾Öò+<PI$6<븨Ÿ}ZI<%&AdrdLLVaV- ,c„nHC^€¨ ž˜™ŒcJRwœ¥“e4%)jÀq…t?*üÝ¿©‹Ÿ¾ÍÍÆÁÍÔɶ­¨¢™Šƒ”‡rjkbm²Ó˪l+!Y’¬šuayºòöϯ¯²ÆîFPI*ý>5 æÈÀ°ƒP3 .MfukR<DPJ7Cpzj[Wc~œ¬©›œ—k]cuŠ›’uS0F€èV’\A úÙÁ²™”¨ºÅþÅËËÁ¶¨Ÿ•…{}€sijy‡›»Ã²‡Z?0Gp”›ˆto|¢ÕíÝ´¢›Ž‘’³ñ)?/  +,òëäѧo:ÿë-DisS*#7R]C)/Op{gV`‹´·£œ™ž™…mX]{›©˜o[dªf„eQ*þÛÇÀ°¤—˜£´ºº½ÁÌ̽§œ”‰~slbfs‹¤²À¬{L7Ln”±¨{W_¼Ûè׿§£¢ˆ~‡µû)(÷û+$æÓÛØ³wF$ÿýÿì "?RG1'.>LJ@:AVn~|gaƒ­À¹¯Ÿ˜“‰zc[f›¤™ŠŸæ4_^bG#÷ØÅ±¦•”œ­¸¼¼»Åï•‹‰„~trx‰¨ª‘yO<Lt‘››†`W{¶ÛæéÙ‚…¡Ô îÝÍÀ£sB'ÿúÿñÿø !2:8/&+BWTHAMm‡ƒzˆ¢»Ã½¥‚‡}n`cs©·±µÕ(=UQ?òÒ¶©Ÿ¡«´º»·º´ ‹„††‡„‡•£°¨nWQIYŸ›~g_^{¬ØèãééêÚ¶š¦Îù   øÚÏËǰ†T, ÿþÿøÿûÿëÿù +89.,C]`UGH_}‰Œ’›ª¶¿·¡‰‚~zsqq€œ·ÀÆØï+6:(ðйª§ ¢©°²±³°§›’“•–—“’„jUN\fy•ž‹ofs¾ÜòùýïÔ¯Ÿ£Åî   îÅ¢œœ‹f5 ÿúÿô ÿýÿðÿó -<;9DS`bZSTf€˜¢ ›œ­¸°™ˆ~y~‡Š~wœ´Ìâðõù$#çË»´§¢¢¨«­®¯±°¨ ¡¤§žŠrb[NRczˆ‹Ž†tmz•¤´ÄÚúçȲµ¾×ð ÿêΪƒjfaCÿû ÿþÿûÿùÿð  %/9BLY`_YNWy¡º·¤‘£ ™Œ|vŠ„|~ŸºÕëü ûéÙÏÆ¶ª¤§©«¨¥©®¬«´¹¸¤…eSSPYjy|}|z}ƒ‘š°ÏòöÞÓÔÞÞàèóÿç¹”pL3" ÿþÿþÿôÿúÿþÿò /*$5=DR\a^RVq—¸½ª‹|€‹™¢š„qs€ƒ„†•«Çé.,! öèÞÚ×ÒÇ»²¯¯¯©¤¤©¬³À¸žh[^ahopjfly‡…‚Ьß  þäÜâìîÞËÄÊÜÙµaJ.ÿûÿûÿúÿüÿûÖ§øKJƒ!Œ 0ñý0L7ÁV‡–iL9\@ØX éw=¼+‡àOéˆL ê˜' ¯ J ÷ Ø ¼ Æ á í Û ¡ ^ # ù ø  : E = "   é ó  W ¨ ì '  ð ¦ g i ’ ö I ¢ îCŸwÿŽM7ŽÎJx•¨ÊñPÔeñ¡b)úʵM³¥}^wÜGÅ ‘ ø ÿÏK\xÚFï i;ÏIT†Qç@¸D÷|µÅüZ»@ØaÅ W » ( Ñ … n f Q  ¾ g . # M p i D  õ ë à í  # , ) - 0 ( 4 S ˆ à æ  Û 2 ô ô  B S e ‚ ¹ ô D ‰ é L ßœG¹øC“ì]Í\í¦zGx¬—‹¢ëOÂÉ¡ÉÅ„v“Áù-w$ ÚW‚S7[dZBÄb¯ ÛìžýßдµÁ¦¿› „ ø ƒ  Ë n . þ í á Ì f 7 #  & + 6 N V R ) ï ³ ˆ { Ÿ Ö  A Z x š ¨ È Ý è Ï ¶ z $ æ Ë ì  F H 6 3 = E c „  þ ` ã V – µ Ø ( 8ß«mK@, §%Œõ¬¸ÉÀ EcAPƒÜ í¨z–ËèI¥ìûŤSk„ ”é@À”<^%ÊyaQ ® 2 ø £ M å – a O < # õ  ž ƒ _ D . , 1 = C D I C >  ÷ ´ f %óõý 5 z Æ ÿ & R p Œ œ º · ¡ e ) é ¡ ‡ ‹ Å  9 N 9 &  Ú Ä ¾ Û ó * z ¾ Ü Þ × ý B Î [  £V!ë—9Ö§}ÅkûPÅú{qø–jäþœ;úëÞF/ã*2ÇŒ÷a(ÉÓß«oZŠÑåÚÖÛ ×  O Ü d Ø Á ´ É ë ï Ð 1 ê · Ÿ s q Ê  $ /   ý ß ² … Y +    * R { ¨ Î õ $ K i w “ • Z  Ê q < ! > c ’ µ ¼ ½ Ÿ u L 2 7 7 ^ Ÿ ã    ñ ÷ 8 … ø X Ø p  #Ë×ât_>Ù¤.+UXU=_€Ikä\-©£†æeRO‰jX”.ð v ø § 4 Ð < Ö Ž ] v ¯ ö 2  Ç ; Å o + æï  c ¡ ¼ À ¥ š † n L % ëâßæëíæåê   ? Q ` { ” ´ ° ” P É£³Ð  8 X l c U ? * ( & N ß % ? B #  ü ÿ # : ~ à X ¤  ‡ `:–3ê{ˆ[ÐxõZôüÛ-hddÇÖ‹sÐj†ê«w/ºh 4 x É z q  µ n R 0 ; Z ‡ ¬ ª ž Z Ÿ W 6  øçâîøÿüù   ì¥aß®|W-'4FShƒ«Þÿ þñ*vÈ 6 7 /  " * &    . N k ‘  â ð Þ Ã « “ ¸  } » ï  †  :½>†”W9û·Og¦s7¾ƒ3Üwôi8‹„où»ŸŒŒ g ¾ h   &  ¶ > ò ñ E  ˆ i  Æ { > ïЭ„Y'ì½–ŽŒ¤¾àépóoû©Z.ôíðäàåHz¬Ëówéw j¤’vTUhmt€›­¸ã 0 … Å × Ó ¼ § à k ± Ï Ç Ô ø ‰ / >kš™Z¼~F¿?u¯È'­š…£ñxŠ%64C_ z ¤ µ  — z V U Z H  È Ê ÷  ! Ì Š a ^ o OõL˜òk$ßοÕî4M€k‚å]ðàœ€oR$ÿ9g•ÁÛþ!yç‰AÙRjg4ñ[Ç5ŒÄÝÿ # P | ­ ½ ¯ ” ƒ Ÿ ß ( B Q i ­ ñ ˆ K 2 ÿžŽ+þãÄŽ#ªÀ³·õ$õqÀg | È ! … Ù l 2 )  Ù j : ? y § ¦ RÛo/Eƒ»à{ÙȯΠöÝ!?Ydi_oHòkê“Xay®ž„Súî<Zlrwz¨à`¯R¡Í¡h2 ;7ì‘HT;7^®ÿ . ) ü 7 Ÿ é % ` ¯ æ ; ³ - ™ â . ŠÇŽQö€õ€$  7 B n U  § _ n R   ‚ 7 à À Å Î ° d ·–¦Ç¾} ›UCE6æ…Ò0^ò¶è'bqHá¢mP2ú¼„iTb›£ŽqM.#!-27;><BIiƒÔDØpÚ+$¿‡†ÿ‰[J÷^Jþ!¤GÖ  , L j ‹ »  2 : &  / w ò f Å  4 s Ü X ñ l à q y “ ¨ K > A d ( p   : * ú Ü} ¥tcC°Yú¼E…È~+âö#~ÝøžJéŠO()%/=E@43(óÔÄÀÊÔÙÔËÄÅÅÕì 4c±V£ÄÓ¸|NVjöÏ´_„e.t~S·ë×Öñ ; € Œ f d ‰  £ , r m g i ‚ Í . ” ± 4 % 6 # õ ø  . & ¼ g6G%û伋+®-Ì‹Aúàºfyâp)ýèÉ©ŠtiX9ìЭ«¿ê&;6'ç¿`2 '5AMTdƒœ ›Ÿ¯»ÜD‡Æ .¤p}òy]ƒ}²1!.¼ñ$\œÔíõëÏó d ó R t h ] z Ÿ ƒ ‘ µ ® r @ V † ª | xÐ\1%Ü‚=Ð}½…Œ¼ÆŽúMÆlçSq<ÅIÛ}c\‡©Ôô\’·³ªƒ_/Ö¢pAÿôÿãÿÚÿî%CYeuš»ÌÇÆ³Žs^„Å1ŸòN5Í „Raæyö!0MÔªµ›/›Åþ6|Ì3e?#ZÝ _ Î 0 <  Ñ ­ ” mý ) ×¶í  ¯\²2Є³sP6ïcÕsn‹ÂóÃ@‘åüZ·Íª,¬5ÿÎÿ¸ÿ»wà(>NMbg`8 Иd6ÿâÿ½ÿŸÿŠÿnÿ]ÿRÿXÿ\ÿnÿÿÿ®ÿÙp²ÒóâÁ€82R™V|7ÓIÿÂÿ’ÿ˜ €]² <è˜v¦Í Ë^xs³4Ñ Q ¯ ž cú°ˆ~iƒcK>e_‚é5‰êJÑZ#  ÿÁ<Ö¿ h¤«J·H.ã+AòƒŸ•©£5¼õ Ó£e3 ëÓ¼¨whbWQRNC-þàÌÀÅÀÙ P‹¯Óɸn§Y+ÿèÿè {bCœÿÙÿ:ÿBÿ¨qhwk†õ–JÕ2lâKîfÿoº§ƒ9ôØûh‘‹ŽnV‘òkÏi³Dûúþ÷χ"=£ÝÉŠ/çå^{d1 ^Ãi¹AUGÕaáu.ÙÇÑl¿÷#[’Ëíå¥k(æ©u@üÁ“{_QG=6Üœ~YÿÆÿ`ÿHÿgÿæ†çüƒÿØÿJÿ ÿdÿóÝÙ·¶í…@áC¼VÒ<  Žn™¹–P!N7bmi¿7º?Ö^¿-¬€}§¾²L-U¹  Ú¶Ú7Â?ynUNÎ’Ì 8 ® ú xÇËõfóÒ“¸´j™é @ € Ë ÷ !  î   Y ÌŠQøù[± „¨O ½‘‡jî*iÿÑÿÞ=ð•®`–ÿÅÿfÿ€ çÛ›b–5ûbÉm×-Ú>²}™vGd˜ÎãÌcògï{”È”œ¬ÃÀ®”¾FlV÷à×¼fÕ5Åxž î \ ¸ °¢å ~ Ì ú X  æ  ^ Ô •dŸÏïæñÿ%úÑ¥‰kYÈ @   Ý¿²›¸Ó\#ã^€›ê^[é&ìRÿŸÿ#ÿ/ÿxÿû`w6?ÊD¦ß T® TªìRØ5K7JO> Ÿ¯\ ºDïµÎSºë,ŠùQi”̧ÝvÜ   WÑ\ìy³Ö(\ŠQù‘IBKˆ´ v ³7 ˜h´“¹Ûø *EkU@œÊv3³8šâ J º ² Ö „ H Ê/ñz³ŸÏô®êýGÿæ–ö×u3C e¡Ëí.`nou²"›èüýfÝ/X©6å¸QiåÞKÚ–a®Bͪ 8 ß ¹Sñ‰|ªÛÏ  !!“!›!v! ¨ b 0 / & M x Û!a!×"5"&!è!o! Ó ¼ ç!!Y!{!ž!Ù""R"P"O!Á!ǯTýQ‹˜í^C6| Ï e P Š DÝtÝùßAMJÿ™ÿHÿEÿ¸KÃÝÀÐò92M£“À§v,Òz¯,BPƒ{¨¾„p-K ™ Ø Ï ’ , ¼¾ä€BòÿOÕ P"l$P%Ã'E()æ+,',ç-ª-Ã-£-,k+Ø+`+ *Ý*Ü*Þ+1+²,5,˜,“,f+ý+¡+m+O+x+³,,/,\,¥,å-"-- ,v+±*)™(|'c%ô$g"Š «ÆñB‚ÊäPeúNf Š  ÿ 0Jqç±)Ú¼=ÂXcÑ>3Õ„^p¤¦´Ü&½ž ðèø1U¾ Kño@9v › Ô þ _œ÷  "nÇL›^e"$ß'©*6,:./®1b2ù4Ÿ5ü7]8$8Ü8À8g7š6í6a5í5Á5‹5ª5Ó6`7#7Ú8^8a8>7Ø77U7@7w7Å8%8\8Š8Û99?9 8Ö7ÿ6æ5d42·1f/ü.„,ï+Z)Á(>&ž$Ð"ÿ!AЄeKïqzZ" L  @ r…vý÷ž0Íš”¾­H¥ÿã$NWf¥ÌÆxÇ k Q vÖ e ï . _ ó–JÍR4ޏ !î#'$%&$'ó*1- /Ò2U4“6a839ï;Ó=¥?}@éBQBðCnCB“AÓAJA@äAAAqAÜB™CŠDNDÓD¾D…D CžCoC]C§DD|DÍEEvE²EãEœEaD_C A/?z=Ç<:™97Â6y5]4f3=1Ø0.B,b*(î'f%ÿ$³#!?Æÿ4ÍÝ/Ç ™ ¾ Ï Eêþßî/£ïË¥³[I|eIFUlÏ£Ê4&÷Ú?K ïù" $ %Ã'C(¯*x,-€.j/ /ç13%5r8:}<ª>¾@¥B”DƒFH}JmKÚM6MÃN,MáMvLúL¸LÒLôMXM³N8N¾OfP>PÍQ$P×PaO­O NÁNžNúOjP PŒQ Q¨RRoRMRGQdP%N/L`JlH{FžDÀC-A«@Ž?¤>²=‡;ö:\8}6œ4¬2Ä0ø/O-—+õ)¤&È#‚ iâØ´Qã>J¯£ ¢T¤ù>JÿÛÿíÿÛÿÁÿÉÿû ÔAiÑûh–Ø.ƒ "v$§&¾(Ò+-U/`1734ë7 8®9Ö:q:ý<=?¢A¬CºE˜GmIfK`MOOPðR„TU;VFVµWVûVÙVÄVÝW=W X#X¨Y$YYåZ_Z†Z‰YúY>XTW|WVÐW+W›X^YY¾Z‹[+[·[Ù\[™ZºYW£UâT RIPiN½M$KòJìJHõG«FgDÎC!A?<è:Ì8Ü7N5X2Ü/°,b)k'%## ëlSÖ±zs¸’ ù § 7â<cÍp`ÿû)¯%È"Ë .w®!#Æ&a)*+¢-û0k2á5h7Ç9î<>@åCUDüFF°GHÉJpLkN$OØQSeUnW[Y!Z{[Í\½]¶^U^è_/_r_—_µ_ö`Y`æalaìbpbÃccc.cbÃb a$`!_/^¯^M^–^ý_Ï`Ša]b=bõc™cädRdcbmam`:_ ]Ã\x[5YüXÝWÍV²U…T-RíQWO—MxKbI*FåDÂBÿ@û>›;”8Y5.2S0-Ø+Õ)…'N%W#…!ö•q…ëz+ ×’§òÕXÿÙ3c/‰,±*):(f)v*â-02Ô5>7 :2<Æ?3;p8ê6á4ä2ý0ù.Ê,ç*;'"êÉ|f}K Åkwù\X‘Ê=9H6¦4>3y2 3Ÿ57Ï:R=?€AñD€FþICK¨NKQ5TNV÷YHZÆ\.]>^}_¬`Ëaàbñd(efîhmi—jœkkMkFkgkkk˜k—k¬kÍll€lêm?mmm¤m¡m‘m9lælPk²jÝiôihKgØgagzgÄhvii¶jZjêkvkßl\l‹lŒlMlkökãkøll?ljlOl)kzjŸigh]geÎd¾>&=t>e?ÆBWDµGRIÜL>N†PR‹TÉW€Ze]$_Ma;b•de1fÆ9Ú4ƒ.À)9#å[”%Æn ¶¹VˆT®S’RiR#QÛR¹SËUâXZŠ] _$`×b/c°e_g_i&j€kqlšm˜nšo5ožoÂppMpŸpîq1qoq½qýr-rHrcr€r·rØràr¼rˆrdr`r‰rÎrçrÓr^qæq:p§oãomúlàlkNkjâjìjÉjÑjðkZkÌljmm¡n>n×o‚ppfpp³pÆpÜqq4q€qÆr+r®s#sŒs•s|s r‘rqÖq„qpDovnl•j¦hÂfÛe,c[a$_]([ë[>ZXvU$Q[LžH‡CÔ>¦8á3E-»(#12R¤]Ò\[Ö[ZêZ¹[W\]¥_…a»cÁecf¾gîicjíl…mËnÌo†p~qFqër=r‡r±røs'sCs;s7s&ss rærÌrÄr×rîsss rórðs sMs­sÂsšrörNqxpËo÷nüm×l˜k¬jüjÝjÍjójëjúkkikÃlIlËmhnn´o~p+p¹pýq?qJqMq@q=qQqiq¦qêrQrÏs9s”ss[rørÄr˜rxrq°pÐoÓnˆmFljëi¯h%f‘e!dcb“aJ^p>o¦onøoo¢pp˜qq•rr‰s s0sr«rEqëq»qšq]qpÀp¦p¸qq›qør8qòq¤p³o¢n l¿ki¾gdºaT^G[€XîVZSkrHrÄrËrjqªpñp´pÕq‰rrçs¶t–u{v9vÛwKwñx)xwˆwv[uÃu&tœsçsr q,pXo•n m^l#kj‡iüißi¯iüjLkEllnoqr¶sÔt©tâu!u1uiu‡u’uuu>u)uGuŸvv=vHv"vuþuíuéuðuøuòuçuêuâuÝu£uytÎsîrq&o½nmm}lzl%ll—m$mñn«obpp²qzqðr.qùq®qnqsq¡q»q»q•q…q“q÷r ssGrÅr6q#pnÃmnkûjÎi!fçd[b`5^¢\ûZÚs¾t9t;sÌs rhrBrcsstPu$uøv¬w@wßxhyyZySxÒxnwàw`v³vusór°qŠpJomŠkÚjHhògÿfëfFeŸe½eôghgjCkýmÐo¾qarÐs¿tªuPv v˜w#wawxwtw–wÖx)x`xsxPx5xwÜw¬wŠwJvèvzv2uçužu tasJrpªoCmÍl@jði‹ihãi²jzk–l”m‹nyoUpSqqqqXqqqgq¹rr#r?rdrÕs¬tEtzsàs2rqoân™m?l%jÎig3eœd‘cíc-aÓt£uut¿ts†sds{tt…u0uävŠwwwxx½ygy©y®yIyxŽx&wjv—u_t)r§q+ogm–k”i|g‘eØdkb½a˜`‘`•`¼aéc+dþf¡h“j±lêopér¬tuv¹wñx¬y2y[y yØz*zTzcz/yúy¡yWxêxˆwÑvàuÈtétsFrp³ním-k‘j/hêgdfdrcäc×dùfg“hòjbkÙmIóIs„rÆqÐqpqpLp(pQp pÉp¨s]sÊsüttsåsùt;tÞužvVvÉww|xxßypyªyFy xÌ=h<ë<…<ó=N>c?RARCdG KPFU7ZQ_hd,hälìqt v©wçy0yyyîyRx{v™urCo&jtev_ËZZUEPL FòB¿? =;~:Á9“876Ô7R9C;=V?4BExJ^O¸UXZi^²böf’jPmNp=r0sútþv*vÍwbwvw w=v¦u¬t¸sèsZrér*q˜q7qJq|qÉrqçqŸq¡qêrr5r/rqúrr™sct)t}t¼uAuøvÍwVw¬wcw@vDu(rñpÑmii¸dô`L[UÍP‹K]FèB`??<¸;89(7®6c65¼6.6…7p8/9í;²?)CHsM¢SMXø^ƒcýhÜmäq¨uvòxÆy.yÀxÉwtÝrrn’jrdÔ^ùX“RQL©GjBÔ=¨9ˆ5Ð3â2K1»0ß02.ô.Ä/Z1u368+;>[C\IOoU&Z#_cKgÄk|o,q¥sÓt÷vMvôw„wŒw·wgvóvutBsÅswrÔr^rrJr£rýs(rérq5qgqŠq¶q²qmqCqPqÕr™sLszsšttÙu£v&vŽvHvtäs­qn}jMeÍ`9ZÙUO1I…CÛ?T:÷8N64ë3&1ò0ø0Ò0¼1+1p22£4 5r8†;ýA+F]L€R¢Xç_dÁj¢o=s–uýxJx²yBwàv?rÊoƒj¦e˜_4X¡Q±JÎDÉ?<:¾5Î2.,Å+:*ß*q*U)ž)¹*h,x.ž1]3“6{9h>&CÓJ…P­VH[©`te€iÛn=q=sÕuvŒw(w¯w¦wÅwzwvPuNtksòs½s:rêrÀssˆsøt&sÒskpóqq2q^qMpßp–p©qBrržr§r§ssàt›uuƒuµE¹LVR§X¤^ cºh©m¦qtuevúw‡wòwºw®wNvóv0ut&sªs“s:sssqt#t·tôt”t%q8qCqKqdq;p¦pFphq q³rr qùrdssËt8t®tatrqq m»j d*]üVÂOÔHüB;ì5•1,-O+Î*š*~)×)ƒ)S))±)ú**U*—+‡,O.—15Æ:îAÄHkOªVæ^eyk}qtvàw$w¯uÓs«o:jèdÆ^zVíO3Gr?Ö93‡/*d'\$«#½"ß# #(#Ÿ#Ã$W%&®(Y*ƒ,b.Ñ0æ4å9ð@ÝG›NyTòZöa ]!*!ª""h"¯##h#ˆ#–#›$$Z%Ö'Z*ï.ë5;BŠJhR›Z²ayhlLp(qNr®qFo‘k)f¶`TYûRJ×C#;x5.ÿ*þ'>%j#˜"ü"`"D!î!Ø!Î"!"…#%#À$Y$¥%W%¼(#+?1+7}?;FzMòUš\èdˆj6o$qgs”tt˜t>sÝs'r£r qLp¬p-pppOppUqYrfrÒr‘rNsÎs3ržr0qºpöpipQpap!o·o6o o%oªp1p£q1pïpÅn©log/a9XÖPƒG¤>ÿ7.ú(Þ"ÿ Vóþ—  o ·!!x!ß" "2"b"ì#\$«%á(å,W1Ý7a>hE¼MiTß[YaÕfljÏlÍnønHm'i?eI_šZ.S©LÛE >`7ÿ1Æ-v)‹'z%W$Z#e"ö"G!ñ!¶!í"("ª#5#Â$$‹$¶& ).i4W<C/J¹RTYÂaŸgÁm5oÜr>rªsGrér†qÉq5p£poŠooo9o‰o^o¥pºqárbrAr%tÙt sCr›q÷qpsp2oþogn°mým¼mÃn<š4¾,…&€ ùÑd5º"p®  u ˜ » û!‚!á"æ#½&F)W.p3~9ñ@¡G°NˆTªZÒ_d9féiÇiíifgcW^ÁZŸU#OHA&:À4‚/ï+½)>&ž%5#÷#f"‚"!Õ""P"Ç#F#¾#ü$R$B%ª's,1‰9@ G°OTVó_ ekpnlqqnrq¥q5pgo¼o%n‘n5mËmÏnn™n‡nåpqor"r8rQuÖtàsârùrqpVoáobnsmzll[lalÜm5mn(nn8l:iädW^!UœM>D€<4H,&. ú(è’Á1‡n–ÎÇÚ  ¢ ü!ê"§%'ý,Ç1v7!<ÝB×H³N'S¨X@\Ë_ócJd‡eQcØbm_d\ÇX?RñL#E~?83ƒ.¾+‡(.&D$©$#"š"`"¨"â#E#£#÷$)$k$D%]&°*Ñ/¾6ù=éE¥MLTû]cÆiùmFp pzq!p£p$oDn…mçm[mlžl«mmÈmãnloÀq?r/rrëvæuÄtŽs^rBq!p5o‡nÁmlRkZk#k.k²llemm5myki5c]eTõL¹D(;Ì4%+ø&)!: iø!†ÊÒ®p_T=Õ @!9!ü$9'+…/ã4Ô9™>jC,GèLÚQiUÎYX]_ia¼b5b`á_o[‰VêPbJCg<£6Ú1†-Å)Ù'ƒ%Ž$Ä#§#."Ú"ü##>#Q#]#^#€#>$#%!(å-4 ;™C{K*Rà[a×h^lnòoepo‘o nmMl¬l/kôk|kˆl lâm)mÛoEpáqÿrŸs;wbv'tÒs{r~AËEƒI«M Q’U}Yb]Ìa/dZdãe5b)^}XjRÑLDÓ=Ê7F2W-j*d'¸&Œ%6$$#¸#u#!"ˆ!û!™!—!?!î"i%¨)Ý18a@¼HŽPFXj_fÀkn`nÑoƒnãnEmXl›l*kçkÓkYk`kùm m›n~oáqsr°s§t¢wuÍtwsqçpÍoÄn¶mrkÑj{iyiTiViÍjjwk`kæl†kic×]ÜU×N[F>—7.ü)$ " d MÚ³Zúãl7÷ E!©#÷&&)U,ï14ý8R;3=|?¿BjErI4L÷Q UY"]šaHdòf2g6d±ae[zVOxHPA:&4£/=+Ë(¦'.%¤%$W$#º#U" !þ!—!œ!M!ó"I%d)‰0Í8?@¾H¢PaXŒ_Ãg k•nôoZoûoFn–m°m lÂl™l“l"l3làn nºo¥pörrs¬tºuÕvñu«tgs"rqp n÷mškäj}itiEi8i—i«j jíkŒlAjôiLdj^²VèOµH@g8ï1+%È#|!“!K MÑ’€‹`G„ !–#^&)(Î,D047â:Â=D?@¦B›DÔH!KµPTLXª].ae-g.ig/dY^YURµK¿Dt=S7G1^-W)”'¬%Ó%)$v$;#÷#œ"ì"P!ó"!Â"o"Ä%Û*1T8ÌATICQ Y<`qgÎlqspšo£nRl¯kKjCjiàjjjXk%kÏl‰k€j?eé`³YLRhJöC|<4Y.4(¡%Ý#¤#-"F!Ý!Y!'!!#! ! Ò!M!ì#ß&)z,¤0z4­8Æjïj²jÍj¥jãk¢lZmlPkug¯bþ[÷UWMúF£?Q7¨1d+|(O%Ø%K$I#Ü#_#,"û"ã"¯"–"="·#c%²(d,^04v9=sAšDyG*HXHðIRJLXOSVÿ[C_„c^g}iõlgkxi½dˆ_IX"QI“B&;Y4/H*='‹%G$Ý$f$Š$w$N#ð#¨#}#È#Ú$ý%Ò)[-ò5_<ÊELöT\£cpj8nqq1q›pÆoÝnìnpncnDn@mÛnopžq°rÉt uev­xyuuXtssÄsrqrqypÔoÖnœmyl•l5kåkìkÂll­m]nmlýiÉeµ_*XàQšJcC;w5.Â+(:'d&%‚$ï$°$Y$!#Ð#Ç#†$W%f(I+Š0(4—9‰>®CsHKRNfO–OýOæP`R.TaWÎ[+^ûbØfajl7n^m„l2gWbZ„S+KWC®<–5Z/®*&'0$Ó$$1$r$h$M$ #ì#Û$`$Ç&X'š+y0b7æ?ZGzO:V™^Od¬jóniqq1q‹pÀoÖnôn‘nžnŽnn9n…o~qr!s:tnuµvïx8y§tssªs.rœr:qûq²qLpo¥n´mæm{m&m(m mNmân}o!n¿n„kÓhNb?\XU3NF¨?8V1¢-W)õ(¨&Ý%ý%7$û$›$y$1$m$ˆ%ø'©+;/4M9n>ÿD¯IÓNÖRXUÈW*W²W|WÖYQ[/^"adPgfjmnÂpoÔnªiðd\ÃUKMEE\=à670*&Ì$=#ü#›#ë#é#à#ª#°#¼$’%l'Š)G-}2·:UAßIÙQsXq_´e‚k7nGp©pÁqpYoƒnÈn˜nÐn×nßn–nçoàqar|s‹tªuÕvúx4y“sJrŸrRqìq¾q²q£q~qp]onÍnSmùmümìn/n§o(oºo{opm1j4d»_UXQ®JRBÕ;ò50*,1*2'´&N%$¹$D$U$&$Ø%—'ô*Š.î3€9E?E K"P€U¶Yd]^¹_£_¢`aJbêe[gÝjHl^mýoåq r€qÂp¥l fª^ËWDOG?:7F0Ç*Z&¼#ä#ƒ##O#O#^#6#g#¢$Þ&4(ê+?/å5ƒ=8DÒLSôZpaf+km§o¨o°oèoLnnnnln‘n¯nnùoýqtrŽs‹tu‘vŒw•x¾r q‡qqq?qFqmq“q«qepóp5opn×ngnXn?nznÙoLoÓo½oænkŸf·aÑ[ZTæM¶Fi?l8T3.ˆ+Ý(®&¹$þ$y#è$*$%5&Š)Í-D28>|DßKFQ´WA\±`‰d]f(gGgMg¨h‡iÓk½m¾oqpµqorerûtsyr§nci#aYYPÝH—@¡8z1©*É&Ã#¥#."“"ç"ê###e#×%j'*E- 2=8H@GÈOKV„\•b½gkQmAnÑn·nÉn3msmm&m¶m÷n7nLnèp q„r­s t’udv0wwîqp£p³p°pâq'qbq™qgqpCotnÇnKn.nn(nrnáo`omo¿nblmh/cß]üX)Q€J¸Cù=7ž2Ì/ƒ+Ë)L&ÿ&%*%c%<&±(},o0~6WIôPnVï\da¸ehijÏk÷k÷l3l¿m·o"pŒq®r„ròssßtÑtlsåpk c[\RÇJƒB:?3*+ô'’$)#‹"Ë# #$#o#~$$Î&²(£,1/š53;›CnJúRY^¶d`hk•lònmÛmÐm@l|ll#µ#ä$²%Ž'¶)é-ç1ñ8>âF­NTÓ[~`´eèi kÒl m\mløl~k¼kXkŠl;lmm™n£oþq€rÅs®tuu•uëv]oòoœoÊpp€pÖqqBqp¹oúo/n‘n7n%mãmàn nrnÕooÁoPnyk­hšd_¦ZbUO3I9C®>u:<5ò2¹/z-†++**‰,<.Š3-7¡=•C¸JˆQKW¦^búgŠjamlnÔoÏo²o¸oÃp,p¶píqIqçrÏs½tŒuÅu›uIqÊmcf*_)W O)Fþ>o6Ã/*@&L%F$-$|$ˆ%!%w&‰'£*,¥1 5¢<BðJZQ`W]Ãbg/iÒllŒmlÏlÆlhkºkZk‡l,lslúm£nÊp)q—rÏs¤tytçu;uXu’o’oÌ<`9Ó9%8“:¼=“BiFÉKûQKVî\§aÈfójVm noVoÑpSp\pbp9pp ppUp²q…ršs¬têtÑtWq™n¤i®dÃ^qXPêIVBF;ƒ6Ë2v0P.$-,À-k.@02²6V:/?…EK:Q!V|[¶`dsgŠjak¬lÍmmxmm mum-mmmfmSm¨nso©p½q™rYr·s+srØr5qÂnqnnÁo*o{o†ojoyo‡o–ooon·nÂnÌn~n m²m”mmÉnn@n[mªlÜj÷hôfc7_®\WÚS$N©JµG¼D›Bu@?x?AfDjIM,QÁV‚[`Íegièl¬nåo‰papypŽpVpEpo¿o…odo½p&qr=sPt[tAtqçoˆkNg a„\UÔO HxB;=¢9N6Ô4L3e2`34 6Š8³°BFK>PU“Z4]ôa¿dÇgïjlm nnŒoo onÙnÌnªnnn"m¨m±nFo4oÎp,p p¾pÖp^o´n®njßlm n@o o¿oïp+pMpp¯p¢p{p–ptpoEnšnm¾m£mžm‰mVlÔlgk€j~hágJe&c`S]Y¤V•TnR‚Q]OÉOCNÄPkRôVéZM]Ãad‹hekÎopÐr r rjr*q«pëp\po¥o“ooÒo÷pqr’ssÀtsqµnÔlh d_(YçT±OýKþG¥D[A)?à>è?å@öC=EHK×P¬UuYÞ]Ø`îdfŽijól®m»nßogoÐoÄoÄoo–o[nînimÔmÈnBnýoYoboŒoMnûn lúk‰jgÜiàklmJn«oÊpFpÀpüq`qžqÃq¾qîq¼q6pOoznËn=móm¸m{ml lNkÆk'jigsfcêag^³\'ZbXèXGWjWUWXZZA]u`„c«f†i'künsqrwsdsIs…s2rªqËpþpYoÃo—o‹oÐoÛpSq/r@s1stsrrŸpn“kvh4d_ß[~WgScNÍKGÅFƒE•FƒGbIeKMôQ’VZi^)aƒcëf`h8jk‰m n)oZoõpSpBp]pRpUpovnÌn+nn€o o'nËn’mÜmk®j'h7f±açdçgbj-l_nWoup€q qºr(r‘r¼s rßreqyp›oÕo4nÌnkn mˆml®lIkÙkjEi g×f)d=b.`&^À]]N]]±^_M`¼ce¼hŽkm.o0pÉr¥sÂttt]t€t0sÅsr6qup¿pwp^pžp¡qq¶r¡swsát9sËsMqðp£n]kçh¡euaÉ^Z U„QÕN°M‚LM$MªO`PéS¾W%[)^ïaöd¤fch,iuj½kßm4n\o}pphpapšp¨p¬pLo²onnnKn™n½nlm_lpjçiXg%dÕb_½[_žc fÆiÎl­n}p!qrrsHsœtsÝszr™q»päp9o½o@nÂn$m”m(lÐl{kðkUjXiOgñfzecˆb›a¾aÝb2cdd“fghikm3ofq-r¸s¨t·u4u†u_uWu tªt!sŸs%r¡rarLrwryr¶s's¶t5tkttCsõs)rnq o—mRkgîd‡`™\tYV4TóS¾TT9U¹W2Yî]&`±cîf1hi jjÖk“lmmnªo¨p+ptpwp¿pÞpçp…oío?n¾nŒnÂnmµkçj9gÎe`b@_[_XRW[ú`ªd©h–kWmÞoWpßqÎrÚsksûsôsÐs0r„qÊq?pÍpRoÊo*n˜n mÊm†ml•k¦j”iEgúfØe¸edld¬e f hbjfkþmhnäpxrGsØuBuóv~vtvvv8v uºuXtót¦tltsðsÚsïsõttat«tìtþutÊtt s rÎrp‚nÄkûhðe~b_\\Ë[iZ ZZ[\\Á_Bbe g®iDj}jçktkâlVmmùnìo³pp^pnp«pµp°pBo¢nænknmålïkkh§f b•_Z÷V¹R5MòI:O"T»Zk_ndvh8k¶m×oòq.r–sRsõsût s¬s7r¥rBqÞqcpÔp:o¼oUoo nÍngmƒluk;j#i?hLgÈg7g†g÷i‹k€mØoØqbrÆsØuvwCw×xwÏw wOwvÃvVuÏuJtÛtqt@tt+t+tPt„tÑu$uZu}uiuSutøtt6s qšoBlÙj'g‡e6bÛaY_÷_Ï_µ`Ûb%dVf½hùjàkÉlllul§lÝmm–nToo±ppXp{p§p’p€poPnwmûmVlÚk#hØea]XS…NhI,D>‰DûKcQÆW—]ub%f¢i ltn6p6qgrlrÄstÒu¿v“w&xx£xçxžx\wçw“wv’uÖtþt@s¥sds+s6s0sjs·t:tÉuDu¥uÆuèuÒuÖuvusòrœpµnïlïjÚhËfe câcÆc±d¥e½gviFjÛl,l¿m(m+mLmzm¬nn»o^oÏppnpŽp˜pCoþoEnRm)lzkXj$gkd4_ƒ[U°PHJzD·?9o3é:ÌAçHæOqV [žaeh¢k mÍo¨qGrssqs¨s~sˆsZs rŒqþqq]q…qêr4rNq°pºo{n…mÒml¦l,lQl{m¤o*qMsMuvËwÙx£x÷y˜yßyýy”y xcw­vóvQu²tïtGsºsrs$sssXs°t;tÄuDu±uÿvbv‡v¤vIuàtõtr®qgoÀmékøjh¥g|gPg3góhÏjkAlCm.m£múnnnn@n¨o;oËp$pMp¢p°pœpon¤mpkük$iˆg–cÓ_·ZT¤NcHA; 4ç.¶)Â0q7œ>¨EpL2R7XO]aZdhjÏmNnÞpŽqqr'rHr‘r†rkrq™qOq0q‰rr§sr¶qïp½oÏo#n~n1mÏmðnopPrsšu v¤wÆxŸxëy\yoyyx¦wÊvÛuåutrs±srƒr/qÎqÀqÃr*r¡sOsót—u2u»vfv»vév†vuEtžs˜rwpÙo m9kjeihiDi¶7ç1*Ø$Š·&$-P4^;VB1H’O2T°YŒ]aa½e^h¾km™opvpøq‚qq¦qwq#pýqq˜rFrês…scrÚqÃpËpoNonØoo:p q8rÅtu/vbw;wéx=x®xàyxçxÂx$wevCu$sñr´q»pápypppp©qAr2s*t6u9vwwvw½wdwvGu©tŸsjqÓp/n¡ml(k`k`kllPl›lùmqnnin•n‘n–nÆoo p-pœpëpýq>q pÆoœn>l iëgReGaß]³W¬QÆJÌC´'CG¢LdPtT4W*Zk\Ð^Ò`a„bÅde]fñh“j0kglŒmmQm/m?ml¹lUllllSlÂmJmÎmám½ml?kukj³jFi‘hœg°gf³f8epdbc:baa1a£aüc,dŽfh¿jÖl¬no—p¦q¿r%rWqâqdp¿p@oÞozo/nËn®nÓoo,oo nïnán·n`nmónnZn»o'oSoKnìn¯n&mßljñg¬d_[~V Q„KD\<Õ5b-ú&vëõ÷H ƶÍ7 ÑÓ¶z"Ú(¦.23?8 ö5%sƒ#½(½-!115Ô:>A2D”G[IòKÿNPQøTVKXrZm[û]^°_Š_ý`¡aa‰a—asa`¦`o``Ž`u_÷_Y^…]Á]\¬\[=Y”W~TúRÒPÔNÒLéJÐI(GGFÊGäHèK MIPnSW1Zã^ŽbFe7gõi€jÜk]kùl9l‡l¥lºlÁlÎlömG@xB¾DÕFÊHÚKHM¡OºQNRÞTUUñV×WvXXKXTWíWvVÿVÈVŸVkUçU0TJSvRÚR–RQxOÝMÕKHIFñD¢BH?Æ=È;Î;/:Þ<=H?¼B;EÊIcM«RVzZÍ^FaŒcªe¬fÔhhÒi˜j j~j»jík kƒkÑlkák£jïj i&h†hgœg4g f—eñdŠbì`æ_c]>ZÍWS(NUI×D•?8Ç2m+ã%‰TŠo =Ñ.¯µÆ¶Š#Ú,  ʹ'Î#v'7*‡-¢0 2X4\6 8Æ:­<>ìA)C5D¼F$G2HaI[JXJÿK›KÌKýKÄKjJäJ„J)IãI_HG­FÂF(EöE»ELDBr@d>½<ñ:ò8µ6P4M2M1˜142^3~5ä8G;Æ?aC»H0LœPçTpWÒZJ\½^|`Ja‡b¸csd7d«ee\eþfsfÁfoeôedc*bpaÌa`J_è_ ]½[¨Y¥WVUkRÁO›KtGlBÖ>u9V3É-Á'û"Q“'V ÿ ¡»:tÔ+PI㯧l hwuA2ˆÕ!û$m&o(?*›-/B1?3M5<7B8ñ:y;<Ÿ=w>u?/?Í@ @S@E@2?Ç?P>Ÿ>=6X÷Z‚[p\`] ]±^c_s`#`{_û_i^\]X\M[gZ–YÎXßXV‘TR PM¸KYH DO?ö<7Õ3f.4(­# ãºý <,éæ&†Qÿì'P Âì}{ã Y ¸ ž¯#ÿ“dô "€$è'(à*l,,-¾/K0i1V1þ2ä3’44H4x4s4Ž4\4 3P2Ž1’0–/.Ÿ-ë-{-,¨+´*j(è'³&¡%Ž$f# !Î { Ó Ì!¿#%g(*Ý.l25ì9Þ=r@ÃCFEH·KbMsO7PBQJRRøSëU:UþVEU®U2TMSaR[QyP‘OÀNŒM7K9IF‘DµBi?¤<8[4q0ô- (¦#½àDþû e Š3 úÖVd¬^ÿ’ÿë,ÿÆÿgÿ–(zóVO½m”Ò , Q"ἡ¢.°º !H"S#·%&&&ò'Ó(P(¯(­(¡((‹(‹(•(9'²&®%™$g#G"g!·! iYRIIEñÔŒ‡Œc$¬M"¦& )Ê- 1+4_7$:<È?ÈB6DGE‘FèGèHùIæKKªK¹KJ¢IúIGH}GïGEéDB+?ò>;ì9õ703Ï/ø,°)d& "¡$-ÆQ U{¯«CÿÄÿÓH¡=ÿ„ÿÛB'ÿßÿºÿá>ªªß‡ƒE †ÄÞ Z F ›™Üå7KšgÞÌîäI˜s;稜ÌÛº9#+P™ÙÞµ”€t 0 , 5   ÈpÃ&6\â"|%Û(ã+Ÿ.ˆ1c4t6ò9:h;Í<»=ª>X?C?¨?ª?/>ñ>>==,<7:È8¦6•431..é+Î(p%"n¯W~…N  ]Ø3„p!OÿèÿÖ)€Œÿ’ÿ±/ÿ¥ÿdÿ¹ÿþÿ¸ÿœÿâjÿôSNº ï W ,²‘Àù\Ä:ÙK°E=`^6ÂN·?Ï ¢ G Ë uZTpY‚½š€4Î ¬ “/ì0ÍÔ »#Ò&Ö*,|.Ÿ/Á0Þ1e1ä2Q33¬3ú3ð43å3ž2Û260á/#-+‚)ä(O%ü#ÕŸj´{ u ~Ø€}ºSÂiRÿ°ÿeÿÆ[„GÿçÿÕÿ«ÿÄGÿèÿ‹ÿ¾ G%ÿÃÿžžµ¿Á‰ÁÀøäi f · œ ^ }  ÷ Ê e u x ù Q ›  ä ò Q ¨ ß ó Æ ´ S â ýÏºÕ f  €W!zÿýËJB b Û¿v, È ¥"À$%U%ý&'&[&Ç'˜(y))Z)©)q) (6'L%ç$Z"Ã!¸ N_¯Ê9~éÏ ·Y­¶¶I;À¿|0ÿ±ÿ‘…`ÿ÷ÿÎÿ½ÿ‘ÿõRÿ¶ÿ’ÿ¶8ÿÆÿLÿOÿ¶,WÿÏÿŒL›6ê'Ø2üÈÜu5UåhNoÄ:ÏÞàRSIö{èj–I ÿûÿÐÿë-°š?‹  Z p‘ÑQ÷JÃTɨÙ詸¿3”µ0l@…éí ® Î t SîÈu¡öWLCÿØÿ§ÿÎ:wÿ¬ÿÈEÿíÿžÿÒ(>ÿ­ÿ†ÿìV@ÿèÿ“ÿ«bñ¦ ÿ§ ?O‰ƺL.ø5Ù¤¯®>Ñ–5†ÍW#XƒÌ DušÑâÑŸ}_<("# "KO€¾uK‹Ê$Z Ÿ ÿ n ü'd´2'nGɃ,Ù]1ÒÇ; ÷ ˆ Û 8 ká…ƒ„¸ )qš_‘¿¶:ÿÐÿç6W8ÿÞÿ¤ÿåLÿÊÿ»ÿìEcÿøÿ‘ÿµ zqÿÝÿwÿ݃ӎÿÅÿKÿ«š‚šÜÿ°þæþñÿˆT°pÿïÿfÿ/ÿlÿ½1 Ñê 8ÿµÿJÿþàþèþòÿ ÿ@ÿƒÿåF¨å>PjhT1 îèèT¸çmïÝ»mü’ A  ã £ â ç ‚  Ø Ó   _ Ù Te­”€îñÚvÿá>-z34~ëÛuÿÖ)ƒVÿôÿ½ÿÃ%8ÿÖÿÃ#vHÿéÿ®ÿÑb»Oÿºÿÿô½/Èÿˆÿ×åàX3ÿ_ÿM÷…~éo(X’â:j†OÿˆÿÓÿ•ÿ‚ÿbÿwÿ¥ÿö+pÑ*lƒœyS4  ÿíÙÆÁ¬Ðž(ÒtÒaã Ú’`?ˆ"¸=Ȳ}íR;¼.¯AÿÎt\û¾ÂÔ6`éE!o•:ÿÕÿã$ÿøF^ÿºÿìFtNÿÏÿ‹ÿøƒ—>ÿ±ÿˆÜ+Ëÿóÿeÿ ‚tÁPKÿiÿ8ÿ©ˆ7´zX13D~Ë"ûÆlÿÍÿÿ†ÿ‘ÿÅÿäsÍ7XVN2þéÈœa!ÿìÿÂÿ«ÿ„ÿ‡ÿŸÿë3”þT¢¬›Zðä,ˆ½ïÁß»ÿ÷ÿ½`cð•ÿgÿ#ÿÚ ¯"¯êažeÇ<@Œ¦ƒÿß$rGÿÜ;QÿûÿØÿøX€ÿšÿ›ÿÿ~¢"ÿœÿ˜ òJÑÿëÿ5ÿW<Uó‹ÿuÿÿ•I whYœ6ÿØÿÍÿìTÄBâ‘Y@-0'8[ŒµÏçëëßÛË·’d<%Po˜Ç÷'@_G³Nÿãr ñ,¾ãÿvÿÍ»»C¾ˆÿwÿ<Õµ½Ö_Í­$°~¨Ú¨R#v§[ÿà-†ŸgÿËiPÿûÿ£ÿ£ÿ¢ÿŸ8ç.ÅÿïÿTÿ[$0Ô­ÿÔÿjÿu²1ˆj1¶>ÿíÿ®ÿÍ}Þ ßȯ‘|lpx‹›¤¨Ÿ”‡‚|obYXP[pœÒ'  È….ÿÊÿˆÿ`ÿ{ÿÿÛIªöÐqÿ×ÿ"ÿÿxon¸OMÿ`ÿ4ÿÑØni£×ZËÔmæÅáûé‡35s®®\$d¸½RÿàÿÖY^ÿõÿ›ÿ½)–ÿ¤ÿ¡$íM0ÿ`ÿEÿîʼÿlÿjÿŃhŒGÿ‹ ÿÀÿ£ÿá+~¯½ÒÑÆ¸¹ÀÄÄǽ©scY]\m‰ª¿ËÔê@X1óŽ*ÿëÿ³ÿÒ…Ìò+èkÿÉÿwÿlØ UHÿ…ÿr#øm%Y¦L×èƒÞ;·X8f­¶]2(@žÌ‘ÿÍÿÎ'o7ÿØÿ«ÿÙRª‹!ÿÃÿÈ@Ô,ç0ÿ‹ÿVÿàÂz¬`ÿÄÿŽÿïfëBB5â‚(ÿèÿáÿæ6d•¹ÌÒæôþúú侕yttƒ‹›²ÈÚÞÖÐçóíµ`ÿÜÿêU´ôéÔŽÿÄÿzÿ²9ð–—Aÿ¬ÿµ6ã.÷m`¤Ö¦=$al ‹IZ‘î~tO9,c—¥kÿþÿºÿã6R2ÿæÿÁÿø^±¬MÿèÿÁº-!~ÿ§ÿEÿrM h°ÿåÿûb¯àüêÛ±ƒMÿûÿñ6h’´Ôì"õκ»¾ÈÑÓÌ¿½³™|qfQ1ÿþÿò b¾2ä‹<ÿ¹ÿÇ¢GP¨ÿîÿ¥ÿîŸ/?Î6ÿï9ß„º…I#I{ŒOÕmZ†›¡{UL7Gh™3ÿØÿÈÿÿ?Z&ÿæÿÕ h©žRÿþÿõKÎ8ƒÿÖÿuÿ»YxRñs5Dc–¯¸ÊÊǦvC (R…¦Àâ+7+ üñà×ßà̯£‘oG"HˆÎ  Ë€2ÿçÿÛÿçDÏ6c…ÿϲ2Kêd7¼?‹‡P>N…šu©mw Žsq„¤?SSJKwŠcÿÝÿ× KT+ÿòÿÞ]ªºŽIDÂ,DÖ#ÿ¥ÿ‘Ï\ƒ2åšxzkmx•»ÏÑ®ƒS#-Yl‚¤Ñ,>1+óØÕÒ¹—‚mM0K€´ãîì“Z# ÿø'…îH3Æ9ÿÛÿÿxsSáb1pÙBeP@@dФ2Ô”„Œ–jKc¢$F\ZUsƒyFÿúÿÓÿò2TK! E‚¬¿£fIm¿¿0ÿ¶ÿ¿.æoŽxŇWPLg‹¬Ä¼­†T41GL_|ªÝ%.;0øé×¶gI) 9Pq™®´ ‘uS5 B“4«ÿÖÿóuqŸivÇ 6;0?\aÇ™‚yRDi”—8\mlqms^$ÿöÿí 0MRF=@Fk²ÝÑ–TG†ÚæjÿåEÒRc"Ä…hJO\|™¬¼±–ub_Zev•¶Øø%&!ðϰhM4<Z}Œƒ~kL9=QV[Wo«æõÿÀŽ+‚^¢Š³Ýþõ)]€‰o\7 Ûµ•lUESrˆ}%HckbYXtxKÿëÿõO[L<9Cj¢ÍâÈ—pi”áÚzMÇ5`Y ÊŽZUe­ÀÐʽ¦“†{|{§Íò   øÖ°—Š|wlrŒœoXF15Kn}Š¡¾ïõÔzÿÔÿù|Xm,çµ¶Ùæðø $Efu{cDúÜÁžfB<Tgne6Q\\QIMiu`0ÿôAMB9<St„–¹ÑáǃYt¹òë¢J<ñ)ûÀ†žÊáãâÕÊ¿´¬¥¡–›®ÎïþüêçÚ»Ÿ”Ÿ©§žŸ’sP78>_Š±ÃÆÛÞÛ«Uÿåõ+äãííâÄÃì)O\bZ`U8ýç̤nJBRWVV$<KVTNJT^fSÿø5YcP;DbyŸ¬ÆÀŽ^T}Áìä¡L!f®æòÓ½ËìüçÒ·¶¸¹±«¬¹ÏàãÚØÐö±³º»±ŒxbN525\–ÐüþýÎŒF'vÈõòÐÈÑãïèÖÄËî5AUZYD( ܦsWLUXYZ 3KX^VID[c<$SsgH>Nn‹‹›œ‹hZn×Þ¬Y4„Æì÷ñ"öÕº«­±¹¼º±®µÅÓÙÔÌÏÑÏÅ»«š†n_\\LEDfŸÙúÔ†/Q“½Â¨™ž¼ÙßÑÁ¼ÅÝò$GWJ- &æ©…u]TWYQ#<RkmU@Ui^;%WqmS@Pt‰”šš¤Ÿ…iSb•¾ÁM 7j²ò!OVN-äÉ´¬£¨·ÄĽ·»Í×Ë»¾ÄÁ³£•’ygacVYl˜ÓôûÇ|5O”´¨‡t޽ÙÙɳ«µÁØï ';LB1;ê´¤wSH@& *AduiRQXaU(-alID_†§°¦¨¦¤‘hNUy¡®n=++h¼j~n:! óÚÁ®–“¡ºÊÍÆÀÍÕdz®®¥˜‡€‰‘‰ypngv˜ÀåÞ»x2&a™¯˜nSl´ôùвŸœ­³ÈìBND"ÿ÷84å»­}H0ÿüÿý-MhyoU>FRG2>hwkZSa€œª­££š†rci}“¡•yW/?xâP‰[<õÙÂ²šŽŒœ³ÄĽÄËǾº´ª›‰~|ysqz†›¹Â·Ž_>-Eq—Ÿ‰oem•ÏïÞ²£ ‘’³í 9,,+÷ìáϧm7 ÿëÿþ .EkuS)%;QW?&&Bjw]MZƒª³¥™¡¢vdh™§˜jQ[¥ b…hQ&þÝɽª™…†™³½¼½¿ÇËÆ¹¯£”…vpmt{‰œ¨±qF.?aŒ­§|VY„®ÐåÚÀ¥¦ªˆ¶ö!!òö4+êÙÞØ´zH$ ÿñ !?SE,&.:CC;/3Nm{ved‚«ÃÁ¶¢˜mgmœ§™†|Ÿä/]^\=ùÜÈ´¥‹—®»¾¼¹Âö¢—‡st•¢¥¨vQBNpšˆcXw®ÐÝèßÓ¿±¤‡…¢×  ìßÒäsC%ÿüÿðÿû  $034- ;SK::Nl…‡„¥ÃÐɬ’‚‡…|kix•¬¸µºÕ%:LC6÷ØÁ´¤ ¢­¸¾½·¹µ¥“‡„ƒ€‡š«³§”zc\Xk§¡„meb}ªÒßÜéðñÞ½ ¤Ðÿ  ñØÊÄųˆR)ÿûÿóÿñ'6;+$?[ZJCK_yˆ“¨»Æ»¦……††}wuƒš³ÀÊÙí(/6)òÔ½©£ž¤®¶¶±±°¬¤š”’•–˜žœ—…lYOYh~™Ÿ‹qjx…ž¼Øëóó×µ¥¤Äòèäš–‰h3 ÿúÿôÿõÿý .B<5BU\ZYXVaz•‘“œ®¹µ£‘…‚ˆw{“¯Ìãðú %%ÿáÆ±ª¡£©¯°­¬¯¸¼¶¬«¬­¤“|j]MMWl}„‡mhy—¦³ÀÔóçǵºÂÙö ûøç̨‡qi_C!ÿþÿñÿÿ ÿÿÿþÿþÿõ %+17COVX^`UZ|£º·©™˜ ¦¦Ÿ’…€ˆ‰|ˆœºÕêü úèØÊÀµ¯¬­­¬¦¦¯·´°¶º»ªn[VPXhy‚€}xzƒ’›­Èé øßÒÖäâáìùú互mK5" ÿÿ ÿôÿüÿô ÿÿ 2($1=FNT^d[^{¢ÄÉ»žŠ‡Žœ¥ ||†‹Š•¬Æå$ øëãßÙÒʹ³±±ª¥©¯¯°º½¸£‡n`bdmx|wzƒŠ†…‹¨ÖþþèÞâïóâÌÇÎÞÙ¸…_D)ÿùÿþÿúÿùÿøÖ§÷II Œ‡9þ 9P9ÂY‰–dG5V7ÌEŽÞr8 ¶(‹ê\ö‘S'ô§5 ² B í Ñ ´ ¼ Õ ß Ë • ^ -  ú  $ = C > '  û ç ö  V « ó * ! À | r – ÷ G ž ì@—j÷ŠN= —ÓGy™«ÇéDÇZéža*ü̸O°¡}asÑ=Á ‰  ÷ úÑO`{ÄžNú¯wI&!ÑGS…Rå:³>ðrª¹ìL¶B×ZºU à 6 à “ y q _ ) Ð n ' ý  ü  < a r _ E  ú ç ß ï   ' ( ' & $ 8 W Œ Î ö ã   N  C P a ~ µ ì 9 æ K à¡M¿ú=Šæ^Î\ì£uB x¬–‹¤íPÄËžÃĈtŠ»øþ(v% ×Y†V8[d[EÎn»#ßð ûÚ˯®¶—­÷† ” z î   Ø  > ó é Ø ¯ v ;    + A H C  ñ ¿ ‚ ~ £ Ò ; Z t „ ˜ ® Ì ß ï Ü ½ ~ 1 ú Û ò  G I 7 2 8 8 T w ½ ý c ê ` ¢ ¿ Ý ' :Þ¦fB6"¢ ‡ó®¹ÊÄ BdDO~Ú í¥|šÈéI¥êùĤT s¢õLÊAŽY ÆsU@ —  Ù Š > × ‰ Z Q H 5  Ð ¦ ‡ e P ? 9 0 . 0 7 ? ; 5  ç ¨ f 1 û  < w ½ û ) Q l ¢ ¼ ¶ £ k + ê ª – – Ç  : R = ( ÿ Ì ° ¬ Ò ñ / ƒ Ê î ï æ  I Ó Z ÿ •EÜ‹0ÍŸyÅlüTËþ| r÷”jæþš>ëÛH3ç-4Ë’m8Ùáê³wb“ÖâÒÐØ Ñ ü = Æ K Ê » ® À ä î Ö A ú Å « ƒ „   Ö    ò Ó ¥ v N ,    , S v Ÿ Ë ÷ $ H h { — ™ • e & Ô … V 3 C b ´ ¼ ½ œ j = # . 6 d ª î   õ ÿ @ ‰ ô M É a …ÅÏÝr_>Û¦.(SVR;_~G¤pà^3¯¨‹ïpa0fx` ˜3÷  n ñ ¥ 0 Æ q )  € Y y ° ñ +  É D Ó  > %ý  0 q Ÿ ® ¯ ™ Œ v ] < ûêèäæêëáßç   < O a  œ À ¾ £ b !ì½¾Ñ  3 T j ` N 3  & U š è * @ ? !   % 4 s Õ S ¡ „ \6“4í}ˆYÌtñVŒñûÙ*ih“cÈÕ‡qÒs•0üº…<År ? Ë ‹ x q  ª \ 9  # J € ¤   — [ ° k H ,  óóüùóîï÷ÿ þÛš^!è·…]0(6HRg…±ä@Ë 3 4 *       7 Z v — à â ô å Ç ª ‰ ª  u ´ è  ‡  <ÃEŠ—Y8ø±Iÿd¥r5º~-Øtí_1‰„’xË®ž  x Ž Ë t   '  ² 2 Ý Õ å # e w Y  ¾ € P . â·‰\.üΙ‚|˜µÖÔbðv ºk: ùîñçåæýK|¬Êõ,ú~m§’rIAPWgxޤ½Éð : Š Ê Ú Ô ¸ š ° û ` ¥ Ã Ä Ø û ˆ 3 Iv£¢a½z@¼?u®Â¨™ˆ¤ñ{,)FHWp Š ³ ¿  € V O V G ý ½ · Þ ÿ  û Ç „ W V o c Z¤ÿ|;üæÂÃÔþ"=kRsãeÒª mO$ ÿ:m›Åá :–ü‘BÙTmg+ýêÞXÉ?šÒæ  * V € ° ¼ ¤ ƒ v ™ Ö  A Z p ° ù • X < §“.âÂŒ#®À™»Àü-Ñ& ” Ù - Ü m 4 ,  Î – g 5 4 f ‘ Ž AÙv2>z·æŠéÖÀäA! &8HQJT+Ø]êgl{—§˜}Múí FcwŸÏüiþ¬R¥Ï›Vù7’=ùž#MZC?dµ  % úû 2 • æ , h • ¹ ó E ¹ 3   è 3 #ËMóˆŒ € > D k S ­ j € h Ö  Ž C ê É Ñ Ù ± ]ÿ¸’—­Ÿ\ðŽQ:6)å’ë"FrÏBrl1Ë\;ç²…qcpˆ› ŠkG+" ,5>BEGUhŒÞCÕoÜ,ï¦q{ŽšoYÿgV#'§<  * D ] ƒ º  3 A 0  1 y õ g Å  4 u Þ W ï‡u » q | › t E < E q : ® I ;   â{ ©qQ#à†6îä¥6ˆß@¤I÷2Žï ï‡1×}C'?PSGB0ðξ¼ÊÒÖÖÐÈÈËâ,0>d°W¡¹¼›jF[}ä¿k“q4#fgC±áÈÊë 6 ~ ¡ “ k d ˆ  ¡ ) k e c k ‚ Ë 0 ˜ ± , ' < #  ò ü & 9 : Õ xFV2ïÄŠ$«.Åx#ðØÇªZñgØv>8$ 鯮ž–t1峟„ˆ•¼ä:FAôÂŒZ* (;GTa|°ÏŧŸ®½ß3h£ê(²‚‹úƒlŒ‚°  µå$^žÚöüíÌï c ô N j † | c X z ¢ „ ¹ ¶ w A \ “ º 8˜ìoA3å†?ÉtÿyúªhlŸ³†÷Eºf•÷i¨‡NØi³‰Y[q©Ö>j’¡²ž~B Ñ—e4ÿðÿãÿÙÿì0Mew–ÓûøÔŲ“{^t¤ ƒèL7×-ŒUeñ‰),;½š±–&™Ê=†Ø>k@!\ä a É ( 4  Ê ­ ™ pü , Õ°é ! %¼4xÊAß” ¾}W6é`ÓjT^Џ”|ðÎïbÖùÖK¾CÿåÿÜÿè-k®ð:?GA>-øÃ‚IÿçÿÁÿŸÿ‰ÿqÿdÿXÿ]ÿhÿÿÿ§ÿ¿ÿýaºãÛçÖ¼,ÿðÿÌÿñ…]KáOÿÄÿ˜ÿ¨I™š3Üw©Ô)Õe{sµ9Ô P ® œ _õ³j†aC1WWŒþMøYãm5¿?Ù¸î7gk”1cÑ)Sz×P=Qà|*ÅVA)è­rAúØ©‚g\KB=:5(îßÎÌÃä)w¦¶ÓÍÄ$±I ÿÈÿÛ ‰}±K›ÿÙÿEÿUÿ¶müKbazåˆAÒ 8u$éP‘ðhÿp½¬„8ùáýj˜kS  ˆé6€ÈV ÷È~"3„­˜e èèMr]*ß‘¸RÿÏ’ŒžYÂs> 2dŽ©ÃÁ¹˜uG!ôɉ1ߤwuvvpU4ý΄"ÿÅÿ`ÿYÿ‰¬”ÿõÿmÿ#ÿfÿßoÄÍ­«ç„Eé)RÇ\ØE¨ Œm›¹•V,S=mun"ÅE×eú|ßLņª¸¥m=)Zµïë!ö^{c#ç [6*J["Í  T F -ê®vC,%+BT}²ô 1 [ „ † | N !ëÃjq¨ßBÑšVÑŸŒŒ•Y÷4E{ÿßÿîB눣\™ÿÆÿ\ÿhÿü‡ÛÓ”c@u¤Õrß7ˆ×4¨y—{Pj”ÌÞÂWædü—%´=ð²°ÅàÚ¿™›ÈQƒ‘éŽ}`œÛ=|!ò  R n d  — ü‚Ý'726,þèÝÙÝÚàî 2GJ)ѱ‹9 ³ Å ¿ Ë % ¦ K_¢%ÿç°X•®—¼-Ò©#ÿ~ÿ ÿÿjÿõVi/ CÎQ¸ë S®Y~¢áIÑ2M;KiM —›NÍ^ÒèWŒµÎô-Šõ]Œín„äh ¢ Œ k 3  ýÞâ1W=ûŠ'ÞÇ’+m´ÂÛ¹~#Úœj3ß™ce~¦¹¯–vc^~X-4;£U4Ðz r Ó E ¿  9 U%ÞmÒ­ÖÌÿ?'•Ê%ÿØ…ÜÄm,=’n¢Èè,ankm¨˜êýú¯Ja¬4îŒF4‹ûŠéQÊq1ð„ƒq· z 6 Ö,qõ!|¦¶÷>~„` T!P"r#=#Å#Í#ç#¶#‹# "™"!!8 é š *Έƒ•ÀÜÝͳ¥¦Î·k±Ò »qúî•ù¡i;õ…– = ó ‘üláÖ¸ŽH¥½Æ5 <Eÿ­ÿaÿfÿÙfÕíÐÝù5(C›–æ4º9ÂêXk€²˜¨èD ʤ±ò 1 I  û ¦‹Ž6®Ôü2 *!"¨#–$Ò&;'¢(ù*=+`,”-—.°/;//8/ .¢.8-¢,ø,\+á+”+H+*¦*^*'*)*<*e*‚*…*w*[*L*D*_*9)Ù)(B'¢'y'o':&p%d#ë"§!2ÁëÒœ…á}Y›Ô é õ ŸÍbÀ°7¼¿¬6Â`lÕ<8àanž«Õ$•Æ¡ 7 Þª¯´ø'PÚ+Ë›¹Å ç è * ±YÏ?«s’¢xîv!J#¡&F(«*¢+Õ,Õ-Í/,0Ù2„45€67¶8€9j9Î9ñ9œ9e9 8°8A7Á7U76Þ6¶6’6W6*66656c6ƒ66h6?6'665Ê57413 2 1µ1„1!0Z/`.+-9,*ø)(&ö$M!¹ƒ“³>©¸~c¥T  ¶ ›/½bºPKvs!ŒÿÙÿÿFOc®ÚÌ^L › G : T Ž À ¦ z Ä&± sàpRädöá"!$R&"'–(ê*,È/_245¹6©7‹8:;ñ=½?@@šAqB6B¸CoCØDCåCßCËCÁC CgC*CBïBâBÌBœBmBGBOBwB®BÏBÊB¶B‘BBlBzBAw@A>â=§<æ<_;Ÿ:ª987ç7G6±5R3†0ë.Q+½)X'j%”$"Å!5Sú’<#L‡–/ ö ÷Tü',Kš ˆ…|£UGv]DOdréÜ@)2ŠÕ_1úÊ_ ï!=#O%&á(ï+--‚/ƒ12468[:Í='>ð@hAeB\C›ECG1I JxK¨LPLîMuNDNëOMOmO«OÙPPOôOœO[O'ONÓNuNM¼M°MÐNNANUN]NcN|N“NÎNšN)MKÈJzI¥HÝGÏFsDíC¢B¾B#A™@s>å<ˆ:'7š5-2ù0Ç.î-J+²*'Ø%c"šÛk\e ˜;z ƒ  <^ýÆAÃ-EÿÙÿþÿÜÿÎÿÃÿÔÿý#¼åÉ[°¤¶ž!#W%P'„)ò,N.˜0Á2ì5T7—9¬;\<á>r@LBdDyFoHZIäKKLiM{N¶PDQâSfTmU9U¤VV®W‰X\XîYGY¿ZZZ‰ZUYÒYiYX·XQW³WVˆV]V_V¡VÃVçWW0WcWœWôWúWÙW#V:U/TSÓRÛQOõN‘MŒLØL3K0IçGÿFCÛA¯?l=:ì8Û75y3§1Ž.Þ+ð)& $Š"j 1ŒFœk=d×Ú Q Ю3j!ÌhX-") %Ô#!æ µ ô!C"Æ$k&Ÿ(’*®,Ï/31«4M6Ú9z<6>âA’CÑEÌGtI>KMOPÑR†T_UþWzXžYµZµ[ï\ú]á^W^ª^Ò__„`(`áapaåbsbÙc@c>c b‹b%a´aW`Õ`_j^Ð^’^u^•^œ^®^Á^ß^þ_&_f_}_„_'^˜]ò]˜];\½[û[Z3Y…XÚX-W UùTGRŒP`N'KÄIoG3DûBüA3?R=Q:À7é4Ú1ñ/j-&+(†&"$"1 ¡euÂ@æ Ê æïµÂâiÿß6ë2ð/Þ->,*Á*Ð+ ,€.0.24]6¶9H;¶>[AD$GTJ?LçNõPãR¤T±V¢XaYÝ[P\Î^•`:aªb¤c—d9dôe\eªe¨ežeeŒe¿ffsf×g?g±gÿhFh:hg²g\fêfeïe?d•dc¶cvcgcOcLcJcMcGcGcUc`cocSc b¾bb¦b²bÀbÆb®b¤bNaêa `)^»]>[GY;W U S P÷NÝLÜJÈH¹FPCÆ@Ó=¯:º8 5ú3Æ1²/™-q+(ì%ó"î][ ð®¼8‰}­Ö@p<‰9¥7/64µ4¨4Û6T7Í9ÿ<>‰@üC‰EÍHKªO8RÃU»XGZ(\(]ÿ`aÆc$d.e[f¥h%ij¤k^l"lˆlãlìlùlÑl£lfl&l ll8lylÔm'mim­m½mÃmm1l©l(k…jÔj*ii!h¸h‰hghjhkhhhSh8h"hh,h-hgÙg·gÖh h†iij*jnj«j]iýhýgõfqdçcaw_–]”[aYNWTÅR,OšL¢IcF&C@¥>p<ž:Ê8§6i3^0=,5'þ#SÓZÙ _ XÜd4§HÜEsC@ú@ >Î>­>È@!A„C¹EüHwJ·LðNïQŽTäXŠ[Û^h`¡bQdLf gÏi iûj©k›l¢m³noCo«p)pdp…pwp‡pspJoöo•oLoo0oRoo¹oâpp=pTpo´onxmÑm,l’køk€kjÏj¯jÃjÕjåjãjÓjÃj½jÕjØj°jpj.j)j:j´kCllám¤nynÔonmòlñljÌi¤h f|d‰b¿`^N[¨Y&VdS{PqMKJ«HfFÑEƒCÊA‹>=:þ6÷2î.H)†$Š¡ô#™  jGîQ1NqL›K JOIAIIJ3KMàPSRÓTÓV°X‰[^Va¯dmfchMiâk¸m?n£o{p,p¦qWrr§ss~s¯sìsøsðsËsÈsŸsOrÕrZrq¿q»q¿qÚqâqírrrq™qpTo©o numømum l˜l^l8lRlrl¦lÌlçlûmmHm[m>löl®l™l—mm„n[o'pq2rrŸr‰rOqqpBo§nÃm·lCjíigd²bn_ü]ƒZÚWøUiSQ“P›O/MIŒFA×=Ú9)4.¥)a$:è.²$¨ ѸWªU¿T‰SRøR"QÖQRlS¨UÚXZJ[î]€_Ma¨dugijzlm„nüpqq¼r^rËsDs–sátt-t3t1tsÿsÜsËs”s3r¿rZr%rrrr rrrqæq£q p^o”nÝnImÁm_lølªlQl!kûll‚93¤.B(Ù#ÐÎŽ|!˜]ü\È\[ˆ[/Z‰ZYZ[\à^œ`Pa›c dÞgikknmn2o¡pÎqÕr‡sDsÍt`t²tòtñtôtÑt°twt6sõsÅsšsis'rÓrˆrIr8r7rUrvr‚rxrNr=qüqªqpOoyn¯nm…m.lÑl”lOl4ll@lolËm#mˆmánHnßo:oNo nÕn—nVn=n7nrnžooÎp£qnqçrBr(qðq–qqqMq pÀpeo©nÉm”lok.iýh§g4e¯dbßb]at`]Y“U=Q‰MnmÙm@lºlelkÜkØkÂk½jîiÔg°e†b¶`<\âY#TaO’J|E†@Ú<"84Zjjûk0k5j’i“h—hhh%hhhhÝjk‚l‘mYn#nÞo×pxpÂpžp{pƒpáqTq’q‹qzqNq:qpûp oÿokoo,oaoÚp6p¤qq”rUrûslssˆsnsmsgsosDrîrsr q½q€qYq3pøp p=oäo®ozo‚o•oçp>p²q.q‡qÀqÉqïqáqºqVpépsoîoÀoØp7pup p©pÎq%q¤r3rnrdqòqŽqpÀpQoÇonUm¾mLm4m!mCmlmŠm¶mnm!kèjah!fMc»`î\ýXÌTOjJùFˆB²?l l”lØlÆlkjYjjWjƒj×jæksl’mênÏolp*pÀqiq£q q:pÓp‘p›p¹p p[poÓo¯o…oOnènAmØmÁn.n™o0o«p5pÅqurFröszs³sót t%t't9tsâs‰sBsrörðrõrírÅrrfrUrCrVrmr°ss^s¸sètsísîssr[q¨qpQoùoÑpp8psp‡p¥p×q;qÈr2rmr:qðqxq)pÉpZoÅon|nnnnVn©nànûnÂn¿nlÝkizgoeebc^þZìVùS-OLQI6mïn‹nÏnšmÏlçlZlPlÄlømFmxno)pSqqŠr+rrærÉr‹q÷q[pÜp«p{pohnÞnwn1mëmlþlWll$l¬mm”nn¾op{q˜r™sosætXt…t³tºtÕt¾t|t*sõsçsásðttsçsÍsÇsãsýt7tqtÉu1u”uívv$uýuúuŠtÜsÂr­q p˜oóoqo`oMoro„oÀppxqq›rr-rqÎqšqYqpÆpIoÖotofokoÂp@p˜p¤p[pfoánômhljvifÝdCa]ÛZÜXUµSDoÊpZpˆp+oVn‹n4nLnÏo oZo¯pWq@r2råsVsät$tMt sÃs-r…qÛqypùp%o'nNm™lûl\k’jÍiüi¥išiùjjtjÔkœlvm½o-p–qÎršsRsÂtGt¦uu7u(tôtåtñuuu"utùtétîuuQu—u×vvYv…v³v¦v‡v-uûu_t‰s:qåpˆo3nFmzm6lémmJmãn}oIppÛq˜rrQrIr=rrqèq¸qzq1qqqPqërTrPqËqˆpÍoÓn`mk…j@h›fšd>aê_æ^5\Ç[,q®r8rZqäq pap3p^pÛqqFqŸr;rðs¬tKt¼u@usu‹uButvsÎrÿrgq—p}o=n2m>lFkDj%ihggJg|gvg¿hhêiÖkKlòn˜o÷pñqÝr¯s®tžuvv}v’vÂvãwww.w-w%w w'w@wcw|w‹wtwTwvñvŸv6u˜utIs_rpÊoZmÑl¤k¡kNjûkXkÊlÂm¼nßoûpìqÒr^rässrÔrÀrµr²r®rr‡r‚rÑs†ttsbròrqo¾n^lôkÁjxhëgQeºd cîcob¥sEs½sÎsTr‹qùqÛrrlr–rÐs#s¢t&t¼uXuØvRv}v—v\v1u­ut+sirTq o„n*lÆkOiÌhEfáefdvcÆc¸cŠcÒddêeÆg7hßj¦lmlnÀp8qçs•u9vcw`wÙx[x–xÙxñy yxûxßxÉx´xµxŒxPw¸wv!ubt‹s¤r’q„pOo m¹lwk8iÆh¬g½ggZgýhÃj5k®m\opdq rjsIs«sàs½s©s s¹sßsêsûttVuu‚uštýtcsSrJpùoœn3læk¬jPi2hgžgŽg«gptøu^uVtÙts”s~s¡ttJt“tëuUu°v$vÄwNw¶wÂwÄw{wHv¿vu t>rôq‡o¶mñküiýhfdTb``ü_ß_•_?_ˆ_Ë`œadbÈdYfIhiðkðn+pƒrÃtývœx xÆyzyÆz-zSzrzKzyÀy…y`ycy1xáxv÷utKrêq‘p nvl¬j¶h÷g~fweId†cÌc´c†dPe`g^i`k¯mýoïqªrÒttÅu:u0u-u$uIuzu‹uu©u÷v¡wwPv¼uýtÅs¸rƒq?oðn¡mƒlck±jÿjþkckïl!uÒvvu’tïtltWt|tüubuÐv6v˜vêwYx x–xçxÊx²xOwþwZvªu•t—s q^ol¸jg–e#bº`€^ \GZÔZdYôZ6Zi[[¹\ù^c`rbjdâgyj`mKprÞtúvÜwçxïyvzz]z†zm¼mAmgmÞnknªvMvzvYuøuvutþu3uÏv_vñwgwÇxxyRyàzyÔy¨y3xÄxwTv1usIqU·U2U_UnUòVPWoXÏ[ ])_ëbÄfiil»prÁuvqwåx¹y¡yëzyºyQxÊxgx"x%w®võusp*muj§gûeQb˜_Ô\ÄZSXGWMVEVUìVaV„WŽXè[v^apdæhJkemûp¼rÅtŸu™vvvåwŽxxVxvx’x»yydy´yHxgwußtÔsßríqÄpÌoòoªowo×pmpÿqHuæu÷u×u†u$tÉt×uuËv€w4w¸xxŽyyãzdzŠz/yþyzxæwúw3uät–rEo£lh›dõa–^LZ³WrT;R+PrOíObOtOZO®OáPñRSTšV©Yl\M_ác˜gkyn¾q¢s˜u½wxkxÛy2xæx¡xw¬w#væuët£qûokCg¹d2`Â]†ZAWDTQµO¡N‘M]MLõM–MéOPxSUY,\ì`ødÊhPkõnîqÁs˜uDvAwrx3xØyyWywy¸yÝz'yÉxów“vdu]tŠsÊrÃqáqpãp×qEqÌr/rPuu‰udutÍt‹t¬tðu¥vvwJwÛxLxÔykz5z¥z¾z[z1y¦xòwÖvýu|sâqmÏi¤e‘aa]sYU3QgMÜKÉJIHîHêH¨HÛIJKMËO¼R‘U¯YÎ^bšg$kn–q;tvw³xLxáxµx–wüwkv}uãtRrmnókfsb"]÷YÝVR&NÊKgIG/F=DþD~D!DDóFEG»JVLÚP‘T Yi^ bŒgjÖn›qUsÞutw'x&yysyäzzJzUz˜zEy€x1vúuöuBt­sÅrôr5rrr„rûs5s/tçtÔt«tdt(sôttStÿuÜv½wHwµxUxûy³zzyÀyšx÷x!v¸us§q€möjeW`´[÷WcRêNIûFZDeB¤B#AA‹AIA„AÃBàD4FOGüJÂMüRW@\maŒf.jnqÛtyvÎwÍxÖxÓxÔwþw/u§teqío*jÄeû`„[jV¥QíMµI\EÛBd@K>š=è<Ýô=;(:’9ô9þ9Ø:0:‹;˜<¾>“?þB±EèJÊOÇU“[c`êf)j“o2r“u¶wExÖxóxÿwÔvÉt¬r´oEk”fA`™ZRTUNÒI`DÊ@2<¶9/75f4Ú43ê3„3Ê4 5ˆ7T:M<é@»DÚJ\P/V]\8agfŒj¸nçqàtÁv^wÔxzyMy¸zz/zvzAyÌxÈwžvžvuÍut`s«sis{sÍsÿsØs|sÄs•sksCs(rñrÿs(sÍt¹u—uív.vãw¢x9x^xuxw¼vµussq{n?jÇeé`é[UMOyI«D€?=;m86B4z3ã3R3y3†44l5Q6;7À8ð;>€ChH~NÃU[laof³l/pctevˆx”x¸xÂwCuüsNpœl7gav[T*MuGbAb<ž84Æ1f/-Ü-ˆ-4-z-z-î.A/³1•4£7V;>òDPJ>PãW:\ùb‰g.kúo˜suvãw§x™y y„y£yäy®yQxjwJvPuáuªutosÊss²tt!sÝsosYsrär²r…r,r#rQssêt±téuuÖvžww+wMväv†uLtqšo&k,fûa`[¯UFNäH˜B:<Ú7˜4%1/¢. -‰--O-~..n/1/ø1W2f4ß7³<§AíH¯OtVg] c!i‰n•s[ußx7xNxYv“uqÀn]ic£\±U†NFÂ@L9Û4Û0 ,ä)°(&&Ò&Ô&Ø'p'É(r(æ*O,'/"1Õ5ˆ9>ZDVKtR]XÍ^ãd ipm¨q¸t%vNw9xNx¿y:yFydyx®wÏv£u¤u;ut¨t'sœsvs¸tt2sÙs_rárŽr6qæqq"q qOrrÛs|s£sÓt˜ufuÜuävuÄu`trËpmhOcZ\úV…O‰H¥B;b61,.h+í+)æ)¢)e)®)ð*g*µ+I+è-.0Q2á7­<çCÓJ°Q÷Y _Êfèl–qçt©w+w;wZu…säpFlyf`œY!QnIAû;e4Å/É+(.%b$Y#}#Ï$$³%<%ü&†'¾)G+À.1E4N9$>¹EÛLøSòZr`fjåo’rxuv(w^wÁx7x$xw–w#vNu*tq’rdsAsÃsætNtsÄrNq6njcÀ]QU|M”E =ê7/0+='G&$Ï$ò$Û%/%n%Â&&Q&s&›&·'E'›)Y+T/£4Q; AÁI‹QmYLaMg¼mÜq2t,t|tòsOqón7jcˆ\ÚT¨LOCé;¶4Ù-û)v%u#Ê"!¿!–"("‹# #y#ñ$^%%Ã&ß'³)r+(.ù3[9ô@ÇHXOuVJ]rc“imnpàrOsÇttœtst2s s;r¸qùqkq1qCq:q#pÆpÇqgrrdr#qÒqpbo½o6nîn{nŠoo¾p*pSpLp{q$qër`r‹rörÒr›q;pIláhˆaoZeRIÆA92˜+D&¤#""}!¢!ý"-"¬# #j#Í$$9$X$i$ß%,&¹(],:0t6ø=E¢MÀUÞ]êdknìrwsDt(r·qŒm¼igb”[ÂSŸKqC0:ô3ë,Í(E$†#Z"!ÿ!ï"X"–"à#$#l#§$ $}%1%–&Î'þ+A.ù5+;ÅC„JÎRYr_úfsjÎn«pLqär/r°r|r(qq,pÒpUpoþp'pFpHoðoìp—q^q§qnq/qOpzo¸on»n?nGn¾oWoŽomo&oo’p:p•p¿q qq oÞo k§g_‡X6OÎG€?N70(¬$F!% Û ( z ®!"!q!¾""b"ˆ"¬"Ì#L#®%&\)¯-n3”:AÖI£QTXÓ_)ejn o¯q9p[oºlbhb2\T‘ME7=D6 .Ó*&$Þ#t#H"ÿ#####@#n##¼$$«%%þ&Û)Ž,š2>8y@0G{NÑVC\òc»h…lÊn§p]p˜qpÌpioËoXonÊnÆnÛo!olo”oSo_p"qqiqOq4q¿p¾oËnîngmÑmËn6n§n•n"m mzmÑnhn¥n¿oo oAnDmµj3e]]ŒVMŒE@=4³-™&P"A²F§í J v — ×! !!!3!œ!è"ÿ#Ý&¨)ø/¿5Ö=GD™KËRÁXÓ_cÅhOj£làl»l·jfòa\kUÈNîGO?8p1,'Þ&5$n#ù#u#k#&##*#b#t#¥#ï$p$Ä%Œ&(%*{/…5O<ïD-K©S%Z a.fjkm.nÿo%o’o:nÈnm•mTm,mYm†mçnan¾n¤nÖoÆpÛqrqˆq›r™qgp2on4mnmEm„m·mQl™kñkÊll°lßløm\mŠmÒml™i.d`\–U'LÒD°<£4B-5&""[â "Ó , e — š … Œ f Y ` Â!!ô"¢%(5-“369ß@@FiLlQÚWs\ `•czf@ghfÜeBab]µXQòJ•CC<4Ø/g*®(H%Í$×#ò#Æ#T#8#B##œ#Ë$$i$È%}%Ð't)B-Ç3 :˜AÌIkPæWç_@dÕièlBn6nJn©n7m¶lÿl_lkýlFlwlímn+nLn»oàq/r rcr±srp¡omúlýl¦l©l—kÝjðj2jjckk6kkkölTlÂlkÎh|c»[ûT¢LkDgàòÉ o!â#9%ï)-†2:6’:<¹?•B·F4IûM¡Q!TkWÑ\_eb]b\aò^ Y¬SLÞEå>x7ß1î.*.()&K%Ÿ$Ù$Š$$#ã#¬#d"Ñ"v"i"Ý"â#÷$ï(Ÿ-14–<2D‰L8Sh[a^gujªmmmRl‘kák&jƒjpj¨kDk‰lm n-nàoÔqIrçtDu5vsÂr?pÇoAnm*l¬lTkÚjåiåihîi iiÎjFkkÎl…l!l&i;dü]ÐW O7Gw?Œ7K0I)v%—"­"!+ â _ ëÄ[ Ð` b!a#T%>(j+þ0e4þ8È;£=„?•AþDºHKtO R]VZ^ib6c2cª`P\IUÌOÝIAÛ;4À0/+Ï)['&%"$Â$C#ö#¶#b"¶"L"<"À"Ô#ý%(Â-l4ó<¶E,LñT)[àb*hBktmémànm0lkk´k+k?k‘l7l€mnoSp$q"r‰tumvow]s¨r9pïo–n mÜmsmlkjzi–iNiHiªiÁj"jäk«lrl4lTi¥e¿^õX~PØIEAn9M2C+^'8#ú# !Ä!F ˜ G ó pH« !["º%('‘+.õ3I7¸:ý=^>Š?ØAnCAFI9MPxTfXñ]IaÓcãepbã_fYS^L­Eº>á8.2å-à*Å'Ô&s%$˜$#Ç#Ž#F"œ"6","¾"Û$%>)+.5­=ˆF MìU=]ceiul”onøon-mLl‡ll,lzmmPmínÿp^qWrksÍuHv¥wºx¼sr5q"oýoË8`1ó-1( &C$A#ã#n#ƒ#i#G"Ý"Æ"ê#Ô$u&m(U,Ö29ÖA²J QâY`fPkËn{p°p p¬o¹n´màmm¿mùnlnŠo,pUqês"tWu­wxSyyz¡s qòq*pMoÑooto5n®mùm6l‰l9l l4l0l‡m3mñnn‹nÇmjŽeŠ`nY¸SKÜDv=’6¨1¼-–+m(ð'“&T%Æ%$°$:$(#Ù$¡%º(x+W/‡3À8§=²BnG=JMLÈMLæLAKûM.NýR@U>Y]a:e˜hmk(j|i'd^§W*OúH}A':d3p. (Ú&)#ÿ#Å#l#¡#‘#~#/#O#¡$ë&(›+/È5><ãD³LÌTf[ aög#lnipYp=p9oQnPm•mZmÀn n‡n¶oep—r1sxt­uöw3xdy{z¥r[qYpÃpoÏoÀoËo§o>n¾n&mŽm8mm)m:m¤nLnûoœo“oÎnCl8gÃc \ÈV}OrHLAt:5V0Ô.+)'V&‚%‡%$—$Ä$Ã&&'è+b.Ü3©8¤>6CÓHÙMçQS·TSóS!R¢ShT¾W…Z4]’`údlhjžm=lÎk¸fÊaTYžROJ™C;Ø4f.(Ø%é#™#r#,#…#‡#Œ#Q#ª$<&'¿*å-Ð2Ö8ˆ@&GóOÃW]!c\gÌl mþo—ohoQn~mŒlûl÷m“nnŽn×o—pÖrps¿tëvw6x>y:zWqCpbpo—ooµoëoöo·oknínYmîm«mÊmånVnîoŠpp#paom`ioeD_`Y„RÖLE~>Â9W4Œ1A-+(Ì'™&N%ê%i&&‰(¼+I/‡3ª9>©DµJ®OÚU XN['[Ê\[cZø[m\b^‰`ºc^eØhBjòlÛo n¦mšhâcœ[ýT³LÙE=¯6/Ó)ß&¨$ #Á#c#Ï#à$#ï$•%'é*F.1u6Ì<ÓDkL SsZC_Œdïh}kèmInfnmàm)lJkèllêmn0n«opær}sÐtçvvâw©xhyYpoUo;ooMo«ppOp9po£o nn$n/n?nªo.o½pJpbp¯o£nSjåg)a¯\CVOÅIqBí=X8K40g-o* )'‡'+&³'³(²+£.ç3î8Þ>åE+KŠQ¶Vç\5_¡b¦ctcçcQbácc e0fÔh¶jXkÙm’nÝp‘pFoƒkQfy_W´O™Gº@8F1È+i'¼$´$.#¬$'$9$Š$ƒ%y&Þ)Î,¯0ê4æ:¨A*HÛPƒWZ]´bGfèi¤l:lÿm—ml½lk7jðkCl@lômÆnwo‹qrŸtu v v·w:w¸x{o2n¢nµnÂo+o¦pp|p€pnoøo^nÈn_nSnJn˜oooûp!p|o¸nÁkÛh˜c´^èYQSËMúGêBk=]9Z5$1ù.Ý-+?*ã*{+É-0m49e>ÆEKQÔWÍ\µaÏe,h0ii¨ihh{hÑiÞjälm1n@onpbqÂq›q.m£iibd[WSAK~CÛ;ø59.†*^&Ó%æ%%%’&&P'£)n,Ì04š9? EäMhTÀZò`½d¥h—j¦lˆlÏlÿlakðkTj|jAjŸk«lemOn/otqrªtuvvvÃvüw‡n¿n?nln¨o;oÇp>p¬p¹pªp6o¦on­nnon nïo^o¿oðp\oîo`mjif5b*]RXˆS:M£HKCQ?0:õ7¥4K250&/¹/X0Ò2K5Å9r>ÜD^JÃQDWe](aÈf iàlämân†mämKlÒlÖmYm«nIopq qösIsYsDp;lveÓ_$W:O¥Gá?Ã8‹1n,Ì(·']&&„&­'(%)Ü+ú/­3G8@=8C‰J^QXi]øc7f…iÎk?l…ljlLk¢k'jŸiÏi¢j k$kâlÜmâoOpùr tu uøvLv_v^v½nünznšnßonoàp6pppŽp-o¼oNonénÁnÓooWo•o¸poÐo{m½kœh.dï`è\èX>SGNOI¢E AŸ>_:ú8µ6x5ö5 748»<?œD²IäOäV[¶aeiSln¼o¦p?o›nçn9nnBn8n¥oZp‰q´r×tUt™t®qün§hžbœ[9TLWDB<ï5Ö1,À+ )p)°)Ú++ô.0V4)7ø=B[H’O Ub[‘`adõg·jhknlRlkèkWjðj…i×i¸j%k*kÒlÃmÚo\qr›t tìuÉuÿuéu²uäoRnÍnÔoo…oÇoõp=pXpWpoÈoo[oSo1o,oIowo”o›oÉooQnlji¿g=cÿ`É\ÇXrSÔOiKrG–DQ@É>F;Ð;::ï<­>UAÄEZJTOYTþZÎ`eh‰kùnp&póq™q#pmo oPoyosoÙpfqfrksuuŒužs#p>jçe˜^¶WËP0HRA<:r5Ñ1q/-­-Ê-Ú/50I2¨599A=KBHNT!Y±_"c(gi!k$k¯l%kÉk„kjÃjiúiôjgk]kðlÝno¬qYrÜt7tüuÆu×uuuo®o5o"oJoœo®o·oçpp.po÷oÒo×oåoÒo»o½oÁo½oœo‹o'nÍm¹ltj`h_e¸c&_É\W÷SêP$LŠIoF C’A@†@cB]D@GÁKYP T¶YÏ_"cÐh/km nçpRpÏqOp÷pGo€ooLopp¤qrus’uu“u•s^pþlzgìa¹[XT?M Fœ@y<6864 43Ð56=8Í;x?yC{H‹MÖShXÞ]‘b+egh€jk˜kël7kðk¾kvkEk$jØjíkYllƒmKnspqrÝt t¨uNu6tºt sÔpoosooÉo·o¦oÁoúp2pNpEp7pYptphpv¿A“EŠIuN:SNXl]YaHeg~iÚjøll5lklBl(lkäkàkÑllflímmªn·p/qƒr™sŸt!t«tusÖsr«oodoWo˜oåoèoÝoóp1p†pÊpÞpÛq qq pÇp‰pl#l–mn¦o‚oèp!ppOpwp­pŠp+o†o nnEm-k•h·fbJ^#YWTµPXLqáq„pÿpJoÄo˜o¤ooGnÃmëm#l>kPjfiShÊhsi iàk“moµq·sOtÌuÉvËwexx=xw…vÿvuvu¨u:tÌtJsþsÔsút(trt£tàu#u†v vqv±v®v«vvƒv^vXuÐu sœrpoomÀl2jÇi[h¢hhviiüjÄklQlÖm9m1mlÖl­mmånòo³ppfpspŽp‡pžpZoÑnþnwm©m k5h×düa^\WTQLGBA0G2M6SKXÈ^LbofhkCm6opqqcqÙrr0r)r,qÿqÇqcpÜp„ptp¤pÞpÉpto±nûn mEluk€kjÛk|lmroq%sô8.28,-+á2=9?×F?LœRW2[P_|bËf2h¬júlqn nùoÌp p‹p«pÂp¦prphpŠqqÈrWrªrKq²pËpo„nïn¿n oovp€qÀsZtÖv3w¬x”y6y.yp+q^r}sQt tCt_t#6Š.–' 8:¸m i È@åÇ "Ò'°,ö287$;É@¤E3IÂMQ8SöVªX¨Z¤\0]Ã_"`laÝc…ejgmij¤kDkkèCFØI§L]NmP™R{TZVWÃYš[š]Þ`Kbsd‘e£f2ffBfEf eÁeted¬dodqddÃdždpc£b–a(_û^¬]U[©YÕWßUôTUSQ¸OÅNLëL®LULëMvO5QTFWÊ[›^òaÜdôgjkˆlám=m„mNm,m lým,mzmên9n–oopp/oûo>nemºmm‚mElþlàl¢lAkŸk#j>i†g•eBaP]PX-SJM]G'@91¸*$#Œ“ ¹ ¶îf½ Š2Ô¾M!ô&š*ð/3–7ž;m>/@©B€D‘F†HJkL@N=PXRÁU[WÊZ@[¤\l\b\¿\í]\ì\³\;[¥[=[,[B[;ZãZŒY©X•WU×TIR±P˜NPK¿I-FæDóC8@ð?<>=á=œ>[? AC?FÖJ¸O/SSWF[d^ßb6dhftgmh\h¬hÿi4i€jj®kakÙlGlömƒnmßm:l kj?iÓi‚háh g—fäf dÛc×bK`Í^![$VÝR¹MHYB:<5K.¸'ÿ Ïx¬‹ ¯,È&a‚ Î ¸–T„ #í(&,02å576Ñ8À:¾<Ò>â@¼B½DðG}J4L½O?PÁQÇRR‰RÍSRúRäRoQÁQPÎPºP¦PUOóNüMÊLDK I—HEÿCÄA5>«š=w<5:Œ8Â6µ4´2¼0ì/ ,²*Ë)A(Ú(b)&)è,#.€2S6j;(?£CõHRL'OèRÐUŸWœYZþ\u]¯^õ`aUb\cLd ee€e¡dµcaù`œ_h^c]Q\ZŠXÜVðU3S5QGN–KGÒDh@m6¹8J9k9À:[:¡:Í:¾:Û:³:]9¹98v7ù7m6å5ï4¤3021/ë.z,é+-){'é&†%#E!º q À |!-#.%T(Ñ,†0Þ4ñ9=;ADîHKMPO£Q~SYTàVbW¼Y4Z[Ã\£]§]Ò]¸\”[FY™XVÝUóT×SbQNOLÑKIF¼Cn?Ø;ü8Î5710,&£!-„&c ¸°pzÞõ€‘aÿø7] ÀÔOö¸Ò * ú ×,‚Ÿ.Yœh¥Ï ×"ˆ$X&›)+y-.5.|/ /J/l/V/_/>/.¥.#-l,Â+û+N*N)'’&f%K$""Ð!_ætNe”b\„Y3Õ_öº¥"·&_)Æ-f1>58±;Ð>ÎA?CÂEÔGÝIKL|N OeP¹QƒRORERQ OÐNDLâK¹J÷I×H'EÑCˆA\?Î=Ê;7~3ÿ0Ž-½*x&w!·þ¡ÚM ô #ËódŸPj¶qÿ˜ÿô4ÿÏÿmÿaŸ<€&>PŒ "  µ ̽ì½öM#ƒq¼!”"ô#w$$"$-#ô#Ë#‘#]#!"ú"œ"*!O s(±¸v-ã€9ùnäü:¤™}ÌYøªð!j%(Å,U/…2¨5a8%:|<Ä>¤@ŒBCÅDïEþFqFðFÎF£EÎDÎC†B|Ag@}>÷<Û:h8v6ž4ó2v/%+a(C%k"¹lT QC U ‹V_œœ4ÿÂÿÛR©Jÿ‡ÿÞC*ÿáÿ¼ÿØ.u2'°¤_baÝõÎ p FhAËg&Ã#Ù|ŒœU ¨@ )Š×“8¯Júªe ß ¿  s N¹RUL­íø B |·ƒ0K– !Z$u'‘*\-#/1Ó3¹5­7&8š9o:":^:Ä:Ê:Ê::9y8c7•6€5W31j/6-²,*'A#õ «3â%æD ˜ ÂŽm hhLÿæÿÚ1…Žÿ•ÿµ5ÿ©ÿbÿ»ÿØÿoÿDÿƒ ^P¨ŸÐâV¶a«O ý D  ǯzI¯ö»wéAË›Ä óB h & ü »?㿱"Á¢J âåÎ÷йR×ì ý ª|±Ùùä"¬%'a)&*Ö+â,ã-w..…/5/™/æ/t.Ê-‹,t+) 'ó&G$‚# úchµUR  O–Wqál;³gPÿ´ÿnÿÐc‰LÿòÿÞÿ´ÿÊ%TÿîÿŒÿÈ2S%ÿ¿ÿ•ÿÿ}@ÿë+#Sÿ!ô&r©a¯¯êe  ´ - 4 - ¶ pçÒù]¸´wÁ7]dO_‚ÛçØÑËÁœ›«"§–j¾&5 [ û¤\ÿcÄÄØH z!!Á"T# #Ö$Í%X%²%)$q#!Ú {:úÞ[˜A«S§- U > ¡+—üä«®p#ÿ®ÿ–‰eÿÝ(ÿÇÿ—ÿÿa#ÿ¹ÿÿÎ0RÿÞÿ^ÿ`ÿ¼(ÿŠÿÿeTkó¡ëšøË°%±jxð~ý[E†éhI“»¯™T´GÔaÿïÿóÿùÿøÿÙÿÏÿÜE¡éžvßO!ÿ î Ãx9Å\yKߪ™¨‘|±¨Ñß¿×%µêÓç˜ T “ } ¸•ˆCQ\®VÁ.ÿý@ˆ;ÿÍÿ£ÿÑ<wÿ³ÿÑUÿ÷ÿ¢ÿÙ4Eÿ³ÿÿ÷]@ÿáÿŠÿŸFÍ‘ÿ¤ÿúI’“ÿòÞä˜îv|Ò{R—bU¢)ÿæ*q¦Ô#JTL0  òááñ %0†þÌ”†{zh^ e l t O ø «§¶Ä_Ü›$Fr媭ÞI  ùÝoéÕWuÄ"Œ¾9‹Z‚¸¶7ÿÉÿã7V6ÿáÿªÿèY$ÿÏÿÀÿñIfÿþÿ™ÿ¾&zlÿ×ÿqÿÏyß¹ÿÿìϱÎ!ÿúÿÿÿ€E«ÿ…ÿVÿ–ÿäSÃô¸TÿÑÿXÿþóÿÿ/ÿlÿŸÿã1~¾ç-UebL@86/êçý,Kr—Ú"˜´d.ó±ˆ~iCÎ?ä˔óÇZü4;©®¿Gÿòÿ“a¡G†á×zÿÒ)‡XÿôÿÄÿÏ+AÿÙÿÃ"yNÿðÿ´ÿÔa¶Jÿµÿ†ÿì»4Ð ÿ‘ÿÝàÕ`7ÿUÿ3ÿöÜwtão+W“á1YxFðvÿ×ÿ¥ÿœÿŒÿ¢ÿÀ>à&k†Žwl]N>3"éÖ¿œwJG^©áKÉq3¼!ý²'­h(hþ°H"€sn7Ö½2ž?ÿ³k]ùº ÇÝ4TäKqž?ÿ×ÿì)2ÿûMeÿ·ÿéGxSÿÒÿ‹ÿö~Ž3ÿ£ÿ~ç7Öÿ€ÿ¸’ƒÎWIÿ\ÿ'ÿš6¼‚_>CM€ËñÂw*ÿóÿÇÿÅÿÅÿëUœä+O^OI;0ß©m>ÿúÿÜÿ¬ÿ›ÿ¦ÿ×ÿú*g æâ­2ÿ³ÿ^ÿ)ÿ[ÿž!Ö(fÿ“ÿ5ÿdHoñuÿoÿ>ÿù!¾§*¸öl _Å@?‡©!ÿÞ*~QÿÞ?„TÿûÿÖÿ÷[…ÿ˜ÿ˜ÿút•ÿŒÿ˜.þQáÿTÿsQ]ï~oÿdÿÿCuhX¢CÿåÿÔÿðS¹4è¢zgMGG`{£ÐìöëåÝÞÒ¾”_5'=e}Ìú&06Èaÿèÿ’ÿWÿ‚ÿÉHÐ!d Aÿ}ÿÿ}”²JÄ“ÿ„ÿLÏ©´ÓcÔ°"°€¥Õ©Z!y¯`ÿß/‰£jÿÉrXÿþÿ¢ÿ w ÿ¥ÿ¯Eî5Óÿlÿr1.´~šÿÈÿgÿt´4‡g0¸Aÿðÿ±ÿÎ tÕñåΩ‹€‰™«³¬›ŽˆŒŒ}iYXZq¶ã 388þ²FÿØÿÿVÿjÿŒÿá?‹Í­[ÿÔÿ2ÿÿ€ilÃbcÿxÿKÿåçzq¡ÒXÍ×näÄâûè‰9:w¸½h%g½ÂSÿßÿÚdfÿöÿ™ÿÀ2’’ÿ²ÿ¯+îN<ÿtÿVÿóô²¥ ÿnÿlÿɈe…?ö„ÿÀÿ¡ÿÜ'»ÒíêÕ¾¿ÊËÆÇºŸ€jfitpv‹«ÆÚäò1E*¬Iÿýÿ¿ÿ×|Õ1 Ó`ÿÊÿˆÿ3"È÷OJÿ‹ÿtñk/¢h«LÖé†Û<º[;kµÅ m5+C¢Ð‘ÿËÿÑ-u6ÿÑÿ¦ÿØK¡Œ-ÿÑÿÒHÜ3òDÿ¡ÿcÿܰd›_ÿÅÿ“ÿôjìCB1Þ€(ÿçÿßÿåCy¯ÏÛÜð ÿ溎rqw‰™ªÀÚæáÙéðíÂ9ÿþZ¬íâŒÿÎÿ‹ÿË`¢‹ Gÿ·ÿÀ:ß*ùz,h  ØªB%al L\“Ƕˆ{T>0f™¥iÿùÿµÿã8P)ÿÚÿ´ÿèP¯¶ZÿôÿÑ"È92“ÿ·ÿIÿ†a<–b¯ÿêf·ééÙ®~Iÿýÿý$O¥Âåÿ . úÍ´³¶ÁÊÊÀ´¸·£‰{pcM  c¶õûÓƒ-ÿëÿ¡ÿ·—D~C–ÿéÿ³©4@Ò?ÿûAÜy³ˆO*PŽNÖp]ˆœ Œ{YR=Lkœ‘1ÿÓÿÆ@X!ÿÞÿÉj´§UÿþSÕB&ÿØÿnÿ¯KqPóx9Ee™¯³Ã½oB%%%@d‘²Îí.8(õîáÜåäÌ®§œ}T)&4[’Íÿ½}8ÿæÿÎÿØ8Ç4h„ÿÒ'º1Fèg!AÂ<ƒ…TAM…œt§ny¡Žtsˆ©?WYNN{ŽfÿÞÿØPX-ÿîÿÙ i±¸‹IIÊ3FÒÿÿˆÉY„5æ—tudep‹¯ÃÆ«f<0<`sŒ§Î'3%%ìéâÄ }^;H„¼ëòîÑ\0%zåH?ÚMÿè|qJØ_1sßGgNACc„Ÿ}.Ï’…Ž—lOkš¯#H_\Ur„|IÿýÿÔÿó3UKÿüQµÅ¨mT|˸*ÿ²ÿ¼(ÞhŒxLjWOKe…¤»º³“hG>OXo‡¯â #(86#óÜ·ŽmT6)!5Mu¢»Á¨“rN5'C‰ð#´*ÿåÿýƒxr ¢nyÈ<;*;\ŒaÙ‘†{UIpœŸ8[ljmisa(ÿ÷ÿë,II<;IX}ÁèÞ¦hYŽØÞgÿâ=ÈKg(ÊŠkNR\x”«¿º¥…niizˆ¢Äç&*% íȦ‡fQ:A]”’’^C=HKRPfÒßuÿÈ&~a°—½âü UŒuc< Ú·œrWHXwŒ~%E`jcXVsyLÿëÿôNWF9=MvªÑçÑ¥~oÖøÕ}"IÂ1^Y ÈŠVP\†¨ÀÕÔ̵ž†Š†’­Óõ ݳ–ˆ}{prŠš“yfU?=Kgwˆ¶ãçÂmÿÝ€Rh-Ýê÷&@dy‚iJúÝÅ¥kD?Znuj7Q[^VLMht^/ÿøBLB8<Uu‚’¶ÓèÎ…Sgªéë§N;‹ê!ñµƒz½ÙãéàÚﲫ§™šªÊêûþòôéË«—˜£¯¬žš‹oR=?FdŠ®ÃÉÞÝÖ¤M ÿê"ø'æçïéÝÆÌ÷1R\ebfW8üèÏ©pKEY`a_,BNYWNIU`fPÿú.SaP=Hfz¡±ÎÆZGn¶æážLa©áüê͹ÄâùñàÏÃÀÂļµ²ºÌÜáÜÞׯµ«¯»À¸¡ŒuaR=:=`”ÊõùùÊ„;ÿýÿÿ%{ËòëÊÈÖéñæÓÇÔõ3>V^ZA% ߨtXNY_`^&9NY\TKI^a:GmgMFVu’‹š£ ‡^Nc•ÌÓ¦W4…ÅêøôþàÆ·»ÀÈÏÌÀ¶¶ÁÍÔÓËÆÂÀ¼¹°£sb`dXQNiœÑúîÌ€$ÿùÿþB‹»¾¡‘™½áçÕýÈâôATG(%窆u^V[\P&?UkkVDVg]<QopYFSt‹™£¡¦š|_L_·½N 5d©êJRJ- ðÔ¿¶«®¾Ìɽµ·ÈÔÎÀ¿À¾¶ªœ˜yfci`ds™ÒñõÀz6 D޳©ˆq‰·ØÜ̳ª´À×î$5F<-6æ±£xUMG* -GhtiSPVaX+'^oLCZ‚¨´«© šˆdPWx ®œl;'"Z« _wl=*äʵ™‘ž¶ÄÅ¿»ÊÖÐÀºµ¯¤“ˆŒ„voqoÀåà¼y7&[–²žsYn±îöѰ›™ª®ÃìBJ?ÿú3-࿹­~J7)ÿÿ/NgyqV>EQG0:jzmZSbƒ¢±°Ÿšpafz’ •{X/;qØF‚ŠZ@!âÌ»¡”’¢´À½¸ÀÊÌÆ¾²¨ƒ€ytr}ޤ¾Â¶Ž]<.Gk‹•†ncm”ÊçÞ¸¦‘’²ï$9(+(öìàϨn8ÿî,DlwV*#6MS6#Fn„{bR`‹²·£–™›ˆp_e~š«pW]£\~dQ+çÓȶ¦••¢µ¹·¸½ÈÊÁ®¡˜ˆ|uqx~¤±·žnA'7]‰¢•kKP{©ÍÝѰ®ª„Œ¹ù$!ïõ0'íÝáÙµ|H# ÿî  >SF-%,9C=3+6Qm|xfd†¯Ã¼¯œ˜–Œ}kfk€›¦˜†{›ß*W[^C'æÏ¹ª–‘›®¶¸¸ºÅƸ¡”މ…wr~“¢§­£“wP?HlŒš–{YTt«Ñßã×Ôȵ †‰¥×ìÞÐÁ¡sE' ÿó ! "/44-#$8KH=<Ll‡†¨ÂÊê“……І{ier£¯¬³Ïû";PKA!ÿÜÁ±  «²·ºº¿¼®œŒ‹‹€‘¦±¨—~f\Wj¥¤‰k^_®Öæãéêð⼚¦Ðû   óÚËÃÀ«€M( ÿûÿû )56*&;TXOFLd€•¬¸Á¹¦……††|us—¯¼ÆÕê+4>1øÛᦡ¦«±´´µ²®¥™’”š˜–œ˜‡q^QWd{•œŒrdl}»Öìõüôܶ£¦Èñ  ÿäÁ¤›•…d1  ÿûÿý+973>N[`^\^m„™¢Ÿš›«¶²Ÿ‚€ˆŽŽ‚{~”¯Ìáíø *,"îÖÀ´ª©¨«®°®¬±³©¡¥­°§™ƒoaTTZiw€‚zkfo†™«¹Ìîéκ¼ÆÞ÷ ùâÅ¢ƒog]C#ÿø ÿø  $%/8@IV_caYaƒ©Â¾¬–”ž¦¦ž…†Œ†yƒ—·Ñæû %ýíßÐĸ°¨¨¬¯ª§¯¶²®·¾¾«r^YXbmx€~ywz|†’ªÇç óÞÖØããåïùþ帑mM7!  ÿÿÿõÿÿÿø  ÿû/*&5<BNYacZ_|¤Åʸ˜…„Ÿ§ŸŽ~z„†€‹¥Àá+*&ýêàÝÖÎÇ¿´®°´¯«°···Ãĺ „nadlw€~{{€‹„~‡«ÛûáÚãîðàÍÊÑàÚ¸…cJ0ÿõÿû ÿøÿø ÿüÚ¨ôFE|…‚6ý =V@È^Ž›jK5R/Âø:‚Ïc. ¹/íe›X/ý¨0 ± H ð Ï µ Á Õ Ü Ë — Z % ý û  9 A < %   ë õ  \ ± ù 4 * þ µ x v – î 9 Ü4’hñ…OBŸÙ"Kx–ªÈèAÄVâ úœ]$øÊ´K°¤~`v×@¾ ˆ  ì ðØSa|ÙFóªwJ'%ØQ]Vè=¶@íjž­âB©4ÍW¿ ^ Ê C î › x r b % Æ i ) ü ü ü  < Z n _ @  ù î ä ð   & ' + . & 2 R Š Ê ñ è ž H   B G U q « é : } Ý D à¥TÆÿCçZÌ]êžp>p¨–‰ŸéOÃÊ¡ËÊŒ}—Áõü(q Î^‰V7Y^S=Ñn¹+ ç÷¦àѱª­¤î{üƒ ø p ì „ % Ü ‡ G ó ï ä ³ q 8     / A E E % ñ ¹ Ž ƒ z ™ É  4 S w Ÿ ® Ñ é ù â Å … . ð Ø ÷  > 9 #  , 5 U t µ ø d ò j « Å å / ’6ݨe?3ú˜…ð§µÉÁ FgFX‰Þ ë¦x’ÄíI¡äð»ŸV'y¥ÿVѤI—b'ÇmK7 Ë w ) à | V U M 8 × ª Œ t c I 7 - / , 0 > @ 8  ï ³ j +ùöö ' e ² ð ! V z ™ ª Ë Ì » ~ > õ ¥ † ‰  þ ) 9 #  ð Ç ± « Î î 1 Ø ù ö ï  L Ð X  •B Úƒ$Ä›r¼eùNÃú} qüœnãýœ<ûêæQ9é-3Ë•v@ÞåôÄ„jœáíÙÔ× Ê ò 4 ¿ > ø ¶ ª   º é û â – K  Ð ¶ “ ’ ¡ Ë ö   û × £ x R '    ! D k œ È ÷ . X t € ž ¥ ¢ q 3 Ý H , E b ‡ £ ¨ ª e < " * 1 c ± ü * '  þ ÿ 9 „ ó J à \  |»ÊÕfW;ÖŸ--WXXCe‚L níi;´«ôwi7n¤€p!¨= q ó ¤ ) º f  ± k D j § ñ 7 & Ú Q â ‘ O 3 ' _ ’ ¬ ¯ š • a 7 ÷Þ×Úäçåàãí  , L X b ~  Á ª h â½ÈÙ ' D Y U H 1    P ž ó 5 G H ) ý  $ 0 l Ï M — ÿ } Y0ˆ,êy„[Õ|÷]–ùÞ/icŽdÈÑkÐv›7¾LÔ| J ‹ Ï ‹ { v  ž O /   5 n — › œ g  ¹ x X ; * úñõøúôñü  ùטVà´€T)+>SZkŠºð<ƒÉú        : c  Î í ÷ á È ¯ ‹ § ý q ¬ ß  ˆ þ6ÁA†—^=û¸Rd¥r3¶z)ÓmáO!~{ Ë­£¬ … — Ó { !  - " ° $ Í É Ø  P b G ú ¼ „ U 3 íÁf9Ñ¡‚™µØþÕeïp·c.þïçîêíî'\‘ÁÞ'}ñ{S‚mQ58NT`rŽªÈÓø F ™ Ò Ü Ú Ã ¡ ± ú _ Ÿ » Á Û ü … 0 Hs ¢d¿‚Jº:rª¿®›„šäp‹*'HJVo ” Å Î  ¤ ‰ ^ V _ L õ © £ Î í ó ã ³ x U \ x – j b«ˆGäÁÄÓú!>jOrÝ]ûѧš‹~mS.<s¥Ñí1†ö–CË:MHöëÝ UÏL«áò  9 ] € ³ à © ƒ v ˜ Ð  > ] s ° ø • X >´(œ;îÇ%«»©¼º÷*Ò€( ” Ý > ¦ í s < 9  Ù g )  Q ~ x )Àd+C†Åõ–òßËòQ&/BPLW*ÖYà“bm}—§œ„W(òCe|‡‘”Àûw ªB´‰R ù1F µ8]iQDb³  % ùú + ‹ á - i • ¸ ó E ½ @ ´ û A ¡6ÛšWû‡ý†+ … 8 < d M  ª i k Ú  Ÿ X ø Î Ù æ ¾ d ¸ŒŒŸJÜy?.2,ìžù1W‰ä >d^*ÿÉ_=é´„oet‡•˜„gG1,%,8GOSV^a|˜äDÇV¾ êªor‰ ­‰sxe,+¬=À  ' < Q z ·  0 ? .  , }  t Ï  D ä ] õˆv Á o s „ ’ i ; 6 E t @ ‰ ¸ X K !  ) !ë} ¬pJÓw&òÚÒ™2ŒêP¸a#G”èè‡3ÚE-CQWJ="ãÁ·¾ÒÛÞäçãâæô(?[”ß1¤¸ž~`>^(ýÔ}¡{<,¥id>¬Ø¼Áç 1 w ž ‘ c Y ƒ  ¦ - u q j j Ì 0 ™ · 4 , = ! ê ö ( C E Þ '„ThFÖ•(±2Àg Ûó“DácáˆVP;#Þ¼Ÿo/ê»¦ŠŒ˜¾æ4<9ì¶‚V+ 5O^jyŒ¨¹½¯›Ž¯Öa§é¿˜¤•qŽ…µ" ®Þ "Y—ÙùüéÎ÷ k û [ { ’ ~ a V v Ÿ ƒ ™ Å ¾ x > U ‘ à   FŸózRHÿ WÕ|}íHP„˜gÝ8À}µƒ½—\änª€RYr«Ù @j™¡‰m8Æf>"ÿúÿèÿõ@b|“«ÐìóÚªvW;b¦ˆàG=æB¤ivûŠ&.;¹–­!˜Ì7…ÝCoJ0hí q Ý 9 ;  Æ ¥ ‘ h 3 ÇŸØ  &Ã7uËLñª6Ï‹a=îdÒ[;Hy¢vü`ã× …ùñfÞcÿëÿé%`©í;AKD=&ë½C ÿÛÿ¼ÿ£ÿ˜ÿ‰ÿ}ÿjÿiÿwÿ–ÿªÿÄÿÜ M’Ñßܦo)ÿÙÿ³ÿ­ÿæjöa¢dûcÿØÿ©ÿ°K”ÿ•+Ò‹t¡Î(Óc€}¾@à ` » ¡ \y{ˆO(AH‹ùEœoü€=! Ã?ÕªÛ*]TókbÝ9b „â^HVÕ[ü•ò5(Þ«tBõÓ¨~X@'!#.62$   )]£é' ò¦AÑy=ÿãÿÝ›;œÎa±ÿìÿQÿ\ÿ¿xFZZoØ€?Í.máN•öm {Æ®€0òÜú‚z^Fü ‘ï;‹áz,!"ç•5*kŽv5éµÇU‹{Hó¡—¯3É€'¡>Kä¦oG' ÿ3Niˆ™¤™ŠrdO7Ú­ŒŽž¼ÑÓݹÏY±ÿÿƒÿ¯6Ï#£ÿüÿrÿ-ÿtÿäj¼Ç£¡á‚@á!NÃZÛK²œz¡¶N'QTtmdÂEâzêYßµ¥ÀÒĆL6`¨äàijäGÆ7V<ó­ÂË¢¤œYùE›ª§{X:#$(AhËñ  ( 1 %   ïߤSãoäÙÎÁ®x:Ó‹îû»Ê c ™¦V“ÿÇÿdÿkÿö~ÓÊ^š:p£ØxèE™ìH¹ysKgƒ«¬‰#·Dñ,¹GâéééàÌ£¡ÐEjxÐe?»4S\kŒÜ÷  Ä p ù ¢€£ÉÓéèß¿›x^VOVWf›®¶ººÃÇÙ¿ —  ¬ _  £  U Ÿði¿õÌzÍýUNj´ê½:ÿ™ÿÿÿgÿëJa*>ÈH°æ T²dŒ¯íOÏ*E6F^;ôuè…JÞgÖô%XXOWˆ¿$›^Ø€¤ûR l  » . ¯ Q ø ãì)!áÆ¼×„Ü/8Q.ü Gñ¨l&𹨨ÄÜñú)Xmo*ËU ¸k¶Äv4õ ö ï ¬ K®tÕÃÞ¾ã" ƒ¾ÿÉrлf&5…a›Ãç/hxuu«âøõÇ.q‰ÙqcT/»aM”ä/2T´m%ò™b'p  ð ¨  àÕó?|ÂQ± !d"Q# #-#N#"Ü"o!ö!i ç w ·^!çÕËÝðýÿAcnNò *«ßSÉð1Yƒ“Ž ™ ½ `à@'M ë½<v—ÿú0<ÿ§ÿ^ÿ`ÿÑ`ÔïÖè 0I8I—Â¥é’/ÏøkeRGüÕèE•ú.î1 d V § J…õ+ìU•Ú¿w E!Q"Ã$7%à'‰).*ß,:-.3.¥.n.@-Ã-P,À,*+¡+,*Õ*w*4)ô)Ò)´)©)ž)š)™)‹)j)H)0)1)E)U)K)2)) )i)Ï*N*,)½(V&ì$Ò"À @¹ =Ò¯£( M g ~FˆHäÕ{oò­“%¹WcÑ?=èx¼µ¶ÒŤ Ì ² ¸ìéõ¼ÊºñPàCÍQ ] ¹ h ËE¥­<)ãÀ #!Õ# %•'"(V(ÿ)*X+x-0.÷0ê2Ð4s67(8?8¤8Þ88H7Ù7y76¯6c6065ù5â5Ñ5È5¾5±5¤5‰5n584ë4¡4j4T4O4?43Í3x3Z3q3¿4,4%3Ö2´1ž/Ì-ú+m(Ç%–"0 :>|o˜” õ Ø è Ý rµÜn`ó…1‰ $Z[…ÿì0NKX¡ÒÇÚ»¦ | e   È  ° ^$¥mmû¦Ì´R g#p%í'Å)+S-z/Œ1†2Ä3©44z5V68m:\?r@¶AyBIB”B½B‹BdB6B"BAòAßAæBBB"B.B'BAþAëAÃA’A?@Ø@~@A@-@$@ ?Ý?~?>£>j>b>}>O=à<í<:Æ9t7T51ó.}*ð'¤%/"ü! 9Ú' ʪâ^Ù Ý » ˵Äî÷&„ tx{¯fX}Z8?Wh´vÄgÞxó:½Ã¥%-¨µ˜œ n"£%(+D.0e2D4u6¯9 :÷<±=¤>_>Ï?I@NA¯C¥E GwIJ@KdL*M M‚MÐMËMÑMÕMþNNMÚMÍMÔMáMåMÜM¸MŒM\MBMLéLœL?LKéLL L4L=L K½KXKJØJ¶J-IVHFùEšDFBV@U=p:(6˜3D0Ž-ý,2*™)>'È%Ü#š!©¹èÀoð%w  \+äWÚKgÿôÿØÿÁÿ´ÿËÿù'#¥ åp¸F¹Ì  ç!D#"%‚'ˆ)¹+þ.£1s4\739ª;Ð=ß@iBÎDöFiGÁHI.I¾JWK`L¯N[OÿQrR³S¤T§U~ViWWuW˜WÁWÝX!X7XWÈWWfWOW1WV´V_VUæUÀU†UFTúTÙTÔU U?UUÇUáUÛU¦U‡UHU(T‰S›R5QO›Nd×eGe™e´eÙeæeïeôf feÿeÓe´e‘eueDe d²dKcÓcebûb–b/a·aQ`ô`Ï`°`ÏaaCala‡a’aÅb7b¨bõbâbØbBa}`K_l]û\.Y¹W@TÆRzP|NŒLÁJóI GDâB—?ã<è:7µ5Ê3Ï1ä/î-Ö+ð)j&¡"ÙÓt[‚v âìS‘ƒºçCp?×==:ú9œ7Ø6ü6S6ù7Ú9’;<é>ª@ÝC&EúH×LO¥RÝUˆWÀZM\¹_acdwe¯f{g|h/h·hýi`i«iÝjj‚jókLk„kÅkÖkÌk­k£k¨k£k¸kæll9l8l4lkík£kWjÔj?i‹hÚh@g¿gRfÎfReÑe…eHeYe‚eÆeðfeùf)f g_h hŸi:ibiWhÓh‘g³fŒdµbà`Ï^Ò\ÝZùYW/URìPyNK]HJE>Bn@=>E<œ:í8Û6©3¬0²,»(x#šÜ<š– ‰ ­CÉ¢K-GñE¹CÙB·A@5?—@OAAC$DðFþHÇJÝMOðSVrYÊ\“^ë`Úc7eTg5hžj"k:l8lÏmwmÊnn n-nAn3nIn¨o o=o.o$nõn¹n„ncnfn_n‰nÕo1o|o’ošoeo6nÑnpmÍml0kMj•jiªi=hßhph1hh%hch¨hÊh¸hyhph¬iXiþjÍkªlZlìmmlml‰kOj(h¨g"evcäb5`“^\UYÈWjTÜR"OTLsJHF¦ECØA©>`;27%3.*)+$°6¬s  ƒ^R½P NVLèLJŒIµIIÙJçMO.QzSGU>WyZT]t`–cre°gÁixk‚m+n‚oup±q›rVržrðrõrðrÀrœrmr*rr>rerCqîq²qsq'pïpÃpÁp¸pãq0q‡qÊqÍqÀqtq-p¸pMo¦næmûml@k¦k`kjøj¿j³j¸jþkhk»kßkªkEkkk•llómÌn°op;qq'qp1oxnymƒlmkoj6ig>e:bÔ`^S\YœWT»R³Q\P“O;M)I§F(AÇ=˜8©3[-Ë(w#¥ÜÑâ [ ‚ tXV TæSñSDRQIP¬QaRT­VÑYZ«\~^ÇadCf¿hôjªltmèokp~qWrssÜtVtQtat.s÷s–s/rËrlr7r+rqºqTqpúpÌp±pp¦pªpÒqqWq†qtqTpøpp!o·o"num£l¿lkˆkjkZk†k–kËl l}mm‡m³mblælwlHlƒlÀmCm»ncooâpÏq?qVpÊpEo™o nˆnmqlÁk|iúhfHdbÐa_0]d[¢ZiYâXÚW-SÛPBK²G•BÕ=°8%2´-®(â$« ^ŠÄgâ\á[…ZÏZ@YÈXÎXW|XYD[X]6_`ŽbYd½ggiÏkÅmop–q°r¢s&s¢ttîuu·uruOtëttsÕs9r­r0q×q†q9pÍptp79Ì510÷,ïeLeMeae|edcb¤c)c÷dþe[eôgh³jylmcnYo¡p‰q$qDqbq‡qðr]rµr²r„rqÚqˆq@p·oòo nlnmènmûn nKn·oIoÛp;pop¢pæqGqÀrKr—r¿r{r.q¦q9poíonmXlÑl×l÷mWmŽmØn+n¨oYoÓpoÊouo"oo!on½nOn!noËoFnÀnGm×m…m)lþlålømmmHlÑljphªfŒdôbË`#\£Y>U€QÞMøIÆEÁBh±iiˆi³i?hGg—g¥hmii¬iÕj6k lSmn˜oŸpYq#qkq€q(pÉpƒp‰p£p˜pSoëoŠofoSo6nÍnmdm-m‡mân_n¬oopp¾q>qˆq¿r$ršrüs`sätBt…tqtNsús¹sgsrªrq€q+qBqyqÉqÞqîrrerÏssDs r´r-qÍqepõpgo°o+nÙnõo'oroŠošo®o÷pzpôqCq*pþpˆpo•o0nØnunmºmm…m¸mûnn*m¸m;lj¿igÍf*dMa½_\ Y UÄRKNåK±jÊkYkÍkÜkSjqiõj8kkªll?lŒm/n'ooðpÍqUqÐqÏq¸qFpÀpRp=p/oáoWn¼nBn mómÀm]l±lNlVlÜmDmÇn3n½o\ppôq«r6r–ssts¼sûtht´tÚt»t—t`t>tsòs«s3rÜr³rõs]sÔt t)t_t¡tõu%uFu t¾t(s©rírqponjn.mþnnntsít t‘tçtÞts/qõpíoÖn¢mylgk‚jšiÛihŠhThkÈk°kêlElpuËvv,vuªufu`u}uÒv"vfv˜v¨v’v³w=wËx wãwÂwVvïvCu‘t¦sÐr±qoïn_lsjchBfLd€b~`÷_«_$^~^¯_`9asc'dÂf•hVj^lnëqXsau?v\whwÑx-xvºvHvv%vmv5u›tr˜pmn-kŽifkc½aF^Ù][/ZBY}Y¥YÀZ—[c\ã^^`¤cfi(lnÝqs3t”uÐvUvÌwwywÔxx$xx xYxŽx®xwu¦t†s‘r qÍpÆp+oåpppKpÀq>qŸv•vvƒvpvtv‚vÁwwzx xœyy^yƒyºzOz½zÐzzzSyÚy;xLwvju>sNq-nak©hše„bM^÷[þYW#UiT¢S°S”STeU5V¶X(ZL\_hb6eVhk»nÃq s5touuøvzvv¦vZuãu]utîut[sCqnÅkÏhØe“bS_&[íY;V´TêSQõQQQARKSQTøVmX°[;^–behùkönøq'<ö<¬5?Å@òBÀD¢GËK/OÝT¹Z _3cñh¸ltoôr,touŽv¾v´v\u1tps qµn÷kÕg+br\ûWŸR=LÉGõC$?·<‘:ù9[8î8˜8ú8ü9Î;=>ÔA`DGÙKñQV2[o`qdÞiflöpSr†tŸuýw”x¥yŠzz²{{Y{zy_xvôvev u5twsósõttxt¿t½tu/tÅt°tÚuPu¤vvRvÑw–xJx§xÓy;y†y¾yžymxòx¼wâvµt¥rêp lÃh3c©^sYYSïNVHñCl?>;š976†5D4ù4Ö5¼6Ì8W9d;<Ç?éCÇ7ó2‡-[*B'j&O% %%9&&¢'‰(w*"+Î.Š1T5f9}>ðD±K9Q¦WÙ]õc:h˜lzoâqët:u«vÿw£xfx xÔxtx wuðtöt“tvsõscrÆr£ròsvs¨s‡sYr_q¦qFq>q€qpqŠqärqræsIs“sëttþuAuIuƒukumtosdpŽmƒhcc\1U`NFá@ 8ô3r.h+¸)L('†'O&û'('d'þ(•)P)µ*³+Ø.j0õ5ƒ:ƒABGëOUVð^ej^o’rdtúu usar#o*l f‚`‡X°PÃH–@µ9Ã2±-d(Z%¥#1"–!Þ"@"¸#™$-$ã%’&Ä'õ*,M/Ø3m8 >!DÔK•RhY^édûiŽm¤pr t uauóv¬vÝwv¦vPu–tžsÑssosr¢qøqµqþr†r°r’rtq$pDoÁo•oÈoµoápTpåq9qxq¿r-rËs_sÁsët@t>t\sprošls±t\tt¤tUts–rñror?r=rqËqpÂqqŽq¸q©q£ponhn$nVnKn•o/oÑpp0p\pµq9qÁr rUr«r·rór"qjnUjdK]èVNDF7>47/€*f&;$Ì#<#!"ð#\#³$'$‡$Ö%$%a%d%Ð&F()²-‡1Â8O?G OlW_@exkÐo½s@t t»snr¦oÆl¤fË`†XFOþGW>Ù7Z/·*f%¥#µ!ñ"""Á#d$$$½$ß%%^&J'#)Q+Ž/Ò4e:öAÚIjP”W>^'c¶hülnïp q3q—r=rpr~r2qùq«qQqqq(q@q p^oêp(pµpÚpÒpÜo¿n¦måmsm†mpm½n\nëo nánÒnõoGo±oõp(p|p¥qpsoòlÚhóbS[¾SÖL Cÿ;Ù4Œ-($A#%!º!›!p!Ó""~"Ø#+#z#¿#Ú$F$¬&'i*Å.4Î;QC@K3RøZd`­gEkÚoþqrßr$qÞoel¨g8aoYªQçI‰A891°,'%#)#"ä#i#Ñ$F$¡$Ê$Ê$Ý$ù%¯&Q(+*-á28ˆ?LFëN&Tû\aÇgfjÃmšn‰o—oãpxp¥p¤pYpoîoÌoÚoúp1p€p}oïo‹oÛp|p¸pÈpíoên²m½m lãl¥lÕmWm´m†m lºl¶läm@mimŸnnZnþn™nLk1g`3YmQkI”A~91·*8%¬"S!¸ § ¥ – é!!Y!¥!ï")"Y"v"É#$$×'«+0è7>³F1MTŸZâa†f”kGmo©o›oämùkég6b7[S¾K‰Ch;°3À-Ù(›&##Ó#i"ö#P#{#Ê$$A$>$C$J$Ú%\&ÿ(Š,06^<öD”KâRñZ)`,f"i¯l…m?n&nNnÅnánÑn…nEn.n4nxn¸oo›oÓoqo.o¢pgpÏqqOp¼odn1m,l¦l&llWlakÕk jzj]jwjÖjôk=kÅl_m:m lüjf _*XtP…HÇ@½8K0å)Ž%N";!× ø ÿ ñ!"!-!D!m!›!³!Ò!ô"E"k#4#Å&5):. 4R;%A±HN;S÷Z_6d fñišjuk©jújKfóc5\ØV>NUF™>ù7"0è+2(%$ #)#I#0#b#•#É#Ô#ã#à$\$Ý&m'Ç+!.ÿ5.;–C$J…QÉY_JeŠiKl6lÐm”mŠmÖmÖm¬m_mmm7m™mìnno*o§ooˆp)qqºr%r˜q„pnˆm"l3kekk jÇiâh×hgêgøhjh–iiÇj£k²k¹kìi2e`^WïP Hc@h7ù0¡)l%T"W!þ!0!@!9!f!t!y!~!{!e!n!‘!è" "­#%/'Ø,²1ç7ö=ŽBäH M$RÂWÙ\£_øcd×g6hhêfÞd;^†XQ I¯B:.3—-)Ò&X$ý#Æ#¶#n#‚#’#«#£#—#k#±$%g&j)w-.3Z9¬AEHÉPEW²^ d¦h¼kÜlkmlÖlúlàllOll-ldlçmOm÷néo¯oÜppÓqÜr²sMséq÷panÀm!kükjªjoiýhðgËfîf¿fÅgDg‚hhÿjk"kJk³iNe×_YXýQ@I°AÀ9q2*+&Í#‰"Ó!Â!¬!~!œ!§!¥!„!\!2!F!w!ú"K#'#Ù&(¯-!1ô7+;·?ÒCÓHLðQ°VYt\Š_b€dágEfdÿ_äZžSjL~E=96^/ð+Ä'Û&#$”$Q#ã#ã#Ï#Ç#¬#‡#-#@#|$±%s(M+ë2!8o@ GÑOVý]vdXh½l lÀmgmmlËlglkîl+l{mm‚n@oVpUpÄq'qÿsttÊuqÿpZn°lükÍjëjjHiÀh§gvf…fDf;fºfþg¨hi°jÓkk§i‹fc`+Z R`JÒBÓ:3H,&'À$5#%!Ñ!‡!! ú ã œ i M Ø!„"#.$D&±)‡-¶2=6Ÿ:#=@ C—G×LOPTSºVÐYú^a±eufe|`í\U,NµG†?ó8æ2-Y)'%/$È$8$$#ô#Ù#¸#…#"ì#$&$¯'R*Ç0ò7/>õFÍN´VM\ïdhËlhmm½m6mlÃl=këkÜlLlÀmomïn¼oîqq¹rCs&t;uNv1vûq pnŠmlkykWk2jµi¿hœg©gJg"g€g¬hCi"j$k0kvljCg~a½\T–M/E3=5º.ˆ)Ð%Ø$:"i!» õ ´ k FðÓÔ L º!°"“$G%ÿ(ï,:0h4Ö8š;h=h?ŽB`EàIÙMmP¸S³W [=_[cÚeae¹aÒ]‚V×P¿IØB¦;œ4‘/?*j'ì%ž$ê$#ÿ#Â#±#¡#{"ö"Õ#$.$Ò'‰+1/7o?FG?OHVø]¡dÕiŠm0mên£nmõm~lÒltlzmmn?_AcDGyJ³N Q T‹X±]b!d—eäbÑ_'XÑS L[E˜>¯7Š1¦,7)&$×#¬#y#)#0#:#-"«"‹"¿$$æ'Ø+1Â8@HPLX^Ïeûjn8n÷oÊoWo.n›mÌmUm^mønknüoVpqLr±s«tƒuv–wÃxÆy¤q=oÎn¿m£m7m2mxmmlZkHjPi¯i;i4iiPiöjãkÆllÂkxi…dê`¶@ØAžB^C„EÈ9i540¾-‹*¢(ÿ'B&j%f%p%x'(ú,u/Þ4w9A>‘CùH¨MJOáQëQËQEP[OéP°Q½T#V–YÛ]`›d§g”jGiÚhõdN_WP´INAµ:^2æ-"'«%"ô# "ø##Í$1$C%A&˜)’,‹1/5×<*BÎJuRJYx`7e#jlÙopoÉo]löj3e•`ý[XU·OÂIÀD3>é:q5¼2-.ñ-*þ)î(“(”(É*ò-X1a5@:J?£EhK0PT°W@YXY\Y XHW¯WîXwZ9\)^Áac°fÀikƒkFj€f.aGZ%S…L$DŽ=5Ž/£*'!$Æ$¤$c%%_&&Œ( )æ-Y0É5®:‹@ÏGrNºV\pbrf”j²lÈn›nÐo$n‹mÙlÞkÃktkßlõm“n3n±oÂq[sKtõv2wIxxÙy‹zLn‹m“mbm.mšn/nïošoÒoåo\n™mÉm-mm7m²nn„núohpppn+kògâcÀ^•YˆT$N³IxDe?Ú;7M3ê1ß/Í.«-,þ-A/»2p6é;=@µFvLwRhWC\^«`Ü`ý`ý`+_q_7_M`ja¾c”efÐhàj›ll„lhed]fWOžH#@§9 2Ý,í)&Î&N%±&I&ª'Î(´*Õ-L1B5&:C?ZE”L9S"Yí_dÈh'krlÞnn nmsl­kºj¥jmjñl'lám¥nNo„qS X»][añd’fÌggBf|e°e!dëef'gHhJi‰júlEmÖmòmÏjÙgGa6[ET'MEÓ>b82.o+=*Q)G)¼*+™,æ/ƒ2e6œ:´?ÛEK7Q¬Wö^b¦giÀlCmmÆmmmAl–kÎjóiòiÎj[kšl^m9no^q'stÙu÷vãwDw¦wíx_nSmm–mÂnpoo¾pžqq]pãp8oZn¤nVn=`<^:Ú:°:å=6?«CõHPMËShY^bâg8iÅllzl¿k×jÓiÙiLi^iOiÙjkÂlùn(o£oôp"m´j e_œXçRIKGCñ=Š7v3©09/-¹..‰0I1Ö4²7Ã<@PEJûQW;\Üb,eëi˜k|m2mcmƒlâlxkÈjøj/i?i-iÅk kÐl¸m¤opörít©u¹v™vÙww&wson`nTn€oonoèpªq)q_pïpVo™o nÐn¹nËnµn§nžnÆo0oho”nÀm­kci eßbÄ_D[ÀX/T¸QaMØJÒGùFD@CFAíAâB&DKF‡JjNgSqX]ÄbÌfµjolŠn˜nýo1n.lûkÇkjój–j÷k³mnio¹qUqÓr"pmRhZcƒ]fWOP¯I¸C–=×:06È5u44b4Ã68:;#>%BNFiK€PæV¡\^a)e¡hƒkil´mÒm£mfl¢lkxj¹jiIiIiÝkk·l–mopïrÕt‚u}vRvyv†vjv‘oüoEoo4o—o¢oÚp{qq9pÞp[oÄohoQoJoKo!nônÒnÞoo:A_DƒHŸL¦Q…VÐ\*aaeRhçjålûm°nAmÁm-lHk¤kjniðiSifiôkkžlm‘o3qrót–u|vGvNv(uÌuÁpÑp(oÞoápoâoãp\påq*pùp‘p oùp pp o×oŽoXoolp#qq!q)pRomÖmmmm³nUo^pgq™s:sît%rsp²m!i‚di_Y3SiN{IÔF¯C‹B@~@›@¯BjDbG J¶N‰RGV´[š`^dæhjÀlmrmÕn(mµm'lhkák~k jÂjij“kkålWmn o°qhs t„uLuûußu‡t÷tÊqpép‡p€pžpMp/p‰qqrqmqpÁp»pÞpõpØpp"oÐoŒo^on¶mðmk½j5hrfëeQc¬a»_•]q[pYéX•W†VUTETèUëX=Zk]J`cdfæjGm¶oàqwq°rqÎqŠp¬oˆndmumAm3mán’o¯pÐrswttZsqùo4l0g¼c"^YT²P|MvJHÛGFßFŸH:JQM«P¡TW[€`d8hjhlMlàm©mÉmímm5l¹lhl=lkôkíl9l§m8mzn nðpOq·s tUuuŸurtþtZt,q}qpÆpãqpæpÎqq•rrArqÄqÌqëqýqÊqmpÞphoòo‰onqm˜lÆk†j hffüe®dgbûaP_«^]\w\[*ZZZç\*^m`lbÃeg«j€m(oÐq]r|ror†qòqUpXoNnYmcmlõm¥n^o‘pÑr sKsÞtUs¨spñn†jÞgBc2_[QW¤TËRP8N*M|LüNhPUSXUÍXŸ[‹_bëfsi¤kYl¨lßmPmkm˜mm˜mˆm…mm‹m®mñnRn©nënõo?oÞpÛqÅr¥s˜ttfts[ršraqÑq«qmq©qîqÊq­qÒrFrÞsAs>sss4s;rërwq½qpYo¨nÞnmlEk7iãhug2f-eHdicOb=a`˜`ÆaGa`ê`´asbÍdïfÃh˜jQln,pqÖr°s/rÎr§q÷qoínán m_m?mImön•o¡pÐr s3sêt³t•t\rÖqnLkŸhxe3b _"\©ZWõU~TjSáUCVôYe[)]=_©b¡eâh¯k#lFmmmBm[m‰mÏn$n{n¾nòooaoÞpJpƒptp@p@p˜q:qµr0rÝs%s.r‰q©pÃpypp~p°qXqârrr9r›s@sÇsìsÒsútts s(raq£p½oÝnßmÉlÁk÷kjhÊgf¶feydËd c'bîc|d–e5e˜e³fOg€iVk l£mÿo-p—qÃrísRs_rÑr˜qòpôo¿n¦nm…m²mûn³o?pq.rhs‘tsupuœuˆt\s"q#o0lÍjPgÓe¡ca^Ë\H[Z [º\Ð^Z_]`Ëbªegši¹k“lhlþlúmm@m‡n n¬oAo¤oàp%p~qqmq‰qHpópÁpãq'q6q+qdq)pœo^mõlœkæmÇooÃpðqÆrKrgrˆrÌsksýt3t0tjtztots”rÖr q-p3o m¼l¡kákBj]iZhNg‚fíf›f:eÎdídºeEf¤gàhçinjjñlnn o¸pöq¼r“s'sítsès4rÛr-q*oïn¼n m‚mÍnDo-oÐp·qØs%tfu_vcv©v¶uìu-sØrvpÆo4m~k×iÛg|e:c b a”b bfbýcadTe¢gli2j¯l l¡lûlàlÒlüm_nn÷o­ppEp§q q¾rrqÂqgq#q0q-pãpNpo3nljh"fÜh"jZlnoqp¢q&qqÙr‰s'sys•sét ts®sWrÂri©kxmn9o0p'q†råt(tÔuHu;udu(t°sþs‡s rdqÇq1p÷pÈq)q¼rsIttàuºv–wwŽw‰w|wvÀv5u­u t¨s»rJpanœm+kûkji2h8gågíh˜iiÕjŸkal%l{l‹lQl lBl÷noo¼oÿpp–q%q¬q×qÌqnq0pÙpÇp nãlÒkhde@aP]bYµV•Y]`£dTgPjFlmŠnOo…pqKq¿rRr”rºrŽrlr qõqrp¼o§num‚lõl·lTkËkjhjiËi|i1hºh§hµižjÃlnCoßq*r)sPtQudvvuvQv*uutVsÔsprírœrcr~r•rþs‚t't«u,u½vEvÓw#wZwAw+vævœvFvu»uotzs qRpnímÒl¬kAjihïi!iÑj-jœk2kÆlXl‹l€l@kñl5mn5o2oËpp:p¨qq|q€qSpÓp„oño‘n4l^i[f²bñ^´Y»TÙP]LNOÇT´Y<]Ïa³e°hjj–kÓm€nËoùpªqaq­qèqÝqãqÆqÊqopÏo×nÕnmºm¬m’mDl¤lk¶k›k`k#jÁj±j¾k†llmýo¯qxstMuuv,vëw@w›wrw%vsuÀut‘t/s°sRrörïrÿsisætptÏu uƒuöv‚vâww vùvÔv¹v¦v»vv;uTt5råqòpæo–nlwkNjWjOjœkFkŠk¸l lXlªl¾l¡lhll\m,nfobppsp¢pûq6q|q^q p^oùonblLi®e¥aû]*WÕQåL-GBDÜJEOT§Y7]ëardtfshÊj£ltm«nÕouppSp¥pÄqp×paonánunHnsn®n­nDm»mƒmsmPm#lÊl¸lÏmn3oxpÚrƒt6ušvÙwowâwßxwÜw„vÉvu5tts`rÇrq¸q˜qõr\rÛs#swsæt‹uTuüvmvŠv©v¬vÃvÉvév¬v6uVtŠsŽr¯qzoñn[lålknk—llžlÛlêmm9m`m\m1lýl´lùm¶nÒo¶pMpÎp÷q'qqp˜oænÊnl°kBh7d°_ªZ÷U3NúHfB<ƒ7 9ù?×E®KPPbUžYØ]©`€cf h–jxlAm\nwoo­oøplpnp"o‰onÇn¸oo™oñoÛooWoDo4o'nônöoo¨pHqhrŸtu víx/xÈy*x÷xîx‚xw'v6u/t½7Â1¯+™/4Ó:Ç@nE•JÑO[S¹WZ[^*aud/fÔh½j¢kÐlém‚nHn‘nšnOnn n0n·ospp

B®G K*OSÆWõ[€^ÿa‹cðe}gh%ii¬j7jÏklŒmŒn.n—nxnVmøm¡mQl÷lômm¨n;o,p¹BüF'IGKŠMÆO…QKRõT±VXYZ9\@]Û_V_è`2_å_Í_’_J_^­^´^û_ž`P`¼`é`’`q_£^™\ÈZ÷X¾V©TDQ§NûLmJJHOF±DÇCvB.B>B©DbEÜHcKN½R~VsZ<]žac·fRgñi}jj“j”j»jÝjûkDkœl8lÚm°n­oopoùo˜n™m–l¬l"k±jéj'iªiBhÃh g}fFdóbr_Å[ðX(SwNèISC_<Ã6€/þ)+"u´(= rð¢îÍ ? }‘ì#…"&.*c/.3¾7þ;">@B$CÕE‹GBIKL÷NùQRúTÍU¿V`V?V7UüUÚU¬UYU=U]UÍVaVV|UËUTTUS9QfOMJÆHEHBR?c<Ã:<8764ª3X3‚45å7~:+<þ@àDÚI`MêREV‹Z ]~_Øbc@d@d¢e%e“ff¢gHh'ijkol^ml±køjishfg fËe–dUcrb‡ac_ö^Í][WþT»PžLÄH/C~=ç81à,&5Óí`5 T r°øYéæ$²  iÖÌ0â³$(,í0:34É6¸8e:';ì=­?”A•C´EìGÖI­JÀK©KÑKîK´K–KkK/KKKPK£KªKpJµJ"IGÌEñDAÄ?<é:C7w4®2/\-*¹)='Â'Ó(@*'+Ì.£1›5¾9þ>åCÝH˜MPÊT—WhZ[¬] ]Ù^Ô_Í`Üaîbãcìe f^hii¸hýh fhdùcˆb@`æ_\]º\NZ¹XèVïUjSPPÃM.I“EjA›=8 2r,Ö':!à•ªœ G lt[þ¥Í´ „.äH £ «^|Æ]/"B%…()¯+Y,Ø.Ž0R1ù3µ5Œ7…9;q= >-?5??Ë?˜?t?G?*?.?G?`?y?G>ü>M=¹<¢;_9ž7ð5þ4 1æ/½-|+@)&·$ "{! |Æ!…#%Î(£,™0´5c:>BŽEøIžL‹OPQ#RÁSñUVVÌXhYà[\,]}^î`¾a·ba`^\\¸ZíYEW‰U½SÅQÍO³MKhI¬G^Dy@É=[9”5÷1›,¸'s"—ô=¯¸ Ô´Ûš« ˜ÿþ.FP 9ÎúÀ L¼ºFiîjº õ"­$¥&y(/)¼+e-k/c162]3]3§3è3Ê3³3—3‰3¥3ó44 3|2Ó1Ý10.Ó-4+¡)Þ(!&A$Y"b jŒ­a<õâ7åeð†#&Ò+/o3Ž7\:¼>aAsDLFTH;IÅKtM0OPÐRAS”U.VºX‚YCY|XTW3U\S„Q“OúN5L,I¼G7DÂB @>†;Ì8ƒ4È1¢.=*&?!{º˜Ð• ¹ÞKMQÈçzŽaÿó<aÿãZ*qØ|_’ P JÍTšh@+óL  "b$B&"'g(a((Ý(Æ(¹(¡(ƒ(›))G)M(¦'Ë&›%±$¡#u!ü zÕB£õKš&ÎÅ£ßñõ[Õ&?YCO ì$’(:+¬.í2k5z8M:u<>T@(AóCèE­G0H‡J(K’MM“MºL°K¥IëH(FODêC3@þ>S;¼9_7k5f30(-)µ&ì#Õ >. l%* —–™Nª¯If°mÿ™ÿù?ÿåÿ€ÿœ+XKØ š•›Þƒ v  è faLdæZÊ”"qí8úØžSI•ôDîEßIØJ®)Â[ ¹ ˜ ÆßD¥ G V  ®«Ús¡"Ç&!)=,+.•0ñ2ÿ579X;=<Î=ó?U@jAAëBA>@g>ô=Ž;Ö:U8E5¯2í0².­, *('K$:!‰á:hÏÀ Y î±òô¯P%ÿÂÿÚP¢Eÿ‰ÿÝG>ÿÞÿðC†<,¼¬LÎÓ eÊÜq Ù Ë a—ƒpÎ?¨gÎt'Â…€» ÓÕËwM ‘  µ ‰m‚ЏîG……ã»j•¡ £ Kò³’¦®!™$&|(Œ*¬,­.å01ð2¼3À4•5‹5û6@5¶53ã2Ë1,/|-<*°(A&†$Â"q¥Ê7?7›Œ V ÂåŸâ6iXàÝ@ÿÚÿÚ/‚ˆÿœÿ¶ KDÿÝÿ”ÿòNÿšÿÿÅ6ŠS9•v…</uŠ’ 8 â ¡ ´ ¤ W ¨ c ” * î à × · @ © ÆýýÛ§“·‡!¾sÿØÿÿ¤ÿµ Mæz¤éÔÌ ) WíÑåÝjñ Â"ˆ$h%¥&t&ï'À(º)å*ª+>*á*f)'Ã%è#ü!çöpLdx6ž< t ÀÿÉ ác,6 ÿ£ÿaÿÌ^„Dÿêÿéÿ¸ÿË5uÿ¨ÿæLa*ÿÌÿ¨qj(ÿÔ ùùR¿Ü§ôºñýnÆE®¬š'¤ }(÷â¼q ”ó5}âQù«Žrj[MA3It­ÞÅG O ¬SÜðw+Šß©!Ž_ƒÒ ³!T ð m –Èz7ºç‡ ^ ° ‰Ìu˜©žcþ_4Z9ÿýÿ˜ÿ‰_ÿúÿÖ3ÿÊÿ” ~BÿÓÿ¼ÿíGbÿóÿvÿpÿ¾ÿzÿÿU9'YÿýW/†j6&”"œòÓž]¸7çøùÖ²ŽqaRLDCEHO@ÿöÿâÿèÿÙ1ÉtvVœÜ „ ö E aœ­¨mßéû‹Ã[%ÿÖçФ ß —sÄæ‘:‚z±=Šÿë6x$ÿ³ÿ‘ÿÌ8qÿ³ÿÓ]ÿùÿžÿãL`(ÿÎÿ­rWÿ÷ÿ—ÿ CÆzÿéÿ’ÿóñ"jeÿÇÿûІ»kÅOY·aå%[¸kÿúÿªÿ´ÿÇA}²Û $4.' ñÝÜçàêø<“ ªbÌz7Û ­ † v s›= ‡ Ø * ¨ 9 õ "Ñõç²qãm½^áw¹?‘m›Ìº,ÿ¹ÿÚ9X4ÿáÿ¯ÿðb'ÿÎÿÈ_yÿ¬ÿÌ0…vÿÚÿjÿÄj¾“ÿðÿ”ÿúݾÖ%ÿ?ÿ<ÿºoÁ‹ÿŸÿ|ÿÀ nÈçñ°fÿ”ÿOÿÿ3ÿXÿ¢ÿÚW•Ëø.VxŠyZ9*&ôñòîæÒÛôDŸc5á^¶’bû‘VOy¹–9,½‡Æÿ¾<Ųÿ¶ÿ‡68“IÇh­ ô†ÿÊ%ŠZÿóÿÃÿÐ 3E ÿâÿÕ7Š^ÿüÿ¹ÿÓb¸Dÿ¥ÿtÿ×— ³ÿ•ÿáÞÉQ7ÿgÿRãlkæx7)`‰Å :fBôzÿÒÿ¬ÿ³ÿªÿ¾ÿÙDïBƒ–¥ŽoJ2*)"éÅž~Yÿüÿý:mÕJä—~_xðª}Ïdüs+mYW/ÉÄn!ôÿØÿ¥jh¿ ÄÜ;_êHÿþn?ÿÖÿê&.ÿüOhÿÇÿûZfÿàÿ’ÿþ‡Ž*ÿœÿwÇÇÿŠÿ¾|ÊZWÿ{ÿHÿ¨{< ¿Œi7,3pÅ%þË€?ÿèÿâÿâ ]¯@YpeS6( è¸}CÿÕÿµÿµÿåP•ÄðÛ±IÿÍÿkÿ$ÿHÿ¶øÜ<ÿrÿÿN0MÕ“—ÿ‘ÿR 6ØÁ@Æÿt«kË>;„¥‰ÿÞ*~RÿÙ>ˆ]ÿç s +ÿªÿ© |–ÿ‘ÿ“æ>ÚÿZÿrQ`ð€ÿ{ÿÿ†> q]Sþ“)ÿÏÿËÿïU¾2î±…mZ[Uj޽àòõåæÜÖe>"G}“§Îü.BQÎ[ÿðÿ¯ÿzÿ›ÿÕDÆAä(ÿ~ÿÿ”«ÃVѯÿ¤ÿZ Í´Îétá¿2·} Ñ£T!{±gÿÙ,Œ¬u ÿÖ'ƒh ÿ¯ÿª‹s ÿ¡ÿ¦6ß2Ûÿmÿx<4·°ÿÒÿcÿw ·-†i# .ÿëÿ³ÿÓ{ÔòÖ·žŒ±¾¿À²›‰‹zdWYQf‘Ë÷<EMÞrÿõÿžÿpÿ“ÿµS’ͪNÿÈÿ6ÿ2ÿ ˆŠáƒ‹ÿ¬ÿ{ÿþærs °âcÒÚvïÇÚñáƒ36v¶¹i"jÅÍ_ÿéÿá$jmÿüÿ›ÿ¾*…†ÿ«ÿ¥"îU 9ÿxÿbÿýû¹ÿsÿ|ÿÕ‹%k|)ä€ÿÅÿ­ÿé)|Àãÿ÷æÏÇÌÕÚÛË·—pZYhdj‚¢³ÄÜù.A+º_ÿÈÿÔ‚×ýö»Lÿµÿtÿ$ ­Ý?Dÿÿ‡6þj/©p±OÕââ2 ³V7jµÀ˜h0)FªÝ¡*ÿØÿÛ:„@ÿÕÿªÿÛH™„&ÿÄÿÄBß1ëCÿ©ÿkÿã½s`ÿÑÿœÿöoð8-"Ü*ÿòÿîÿìKоÙçèõ íÇœrdj‚ˆ¡·ÈÓÝäôõôÏ’OU«óÙÿÃÿ}ÿºN‘QÿÆÿÏOó2÷|6t¨Ý¬B,bgŒHW”̸…{R>5o§¸ ÿÅÿ÷O`1ÿäÿÁÿîN«¯KÿâÿÇ!Å1.–ÿ¼ÿOÿ’m;Š\´#ÿég¬Õô騭„T4[†­Ìë(1üÒ²ª°ÂÉÄ»°¯®¨œ~r`8*8s·îâŽ3ÿéÿžÿ±ÿöƒ.pA¢ÿÕ¿IR×;ÿýOë†Ã—\2X‰’NÖqY‚œ¨“~“^XFUv®¦?ÿÜÿÕN]&ÿåÿÊÿýg³ LUÑ@)”ÿãÿ€ÿÀOþmTù{?I]‡£²Â¿½¡pC,21In›¹Ñó4:, òãØØÞÜɯ£—„f;0@fžÕ ÊBÿéÿÉÿÎ+°R„ ÿâ8Ç;Uùo!FÐJ‘aJRŒ¤x¦mt›Žxsƒ¥GacXW‰ŸnÿäÿæRX+ÿæÿÑk±¶S$IË9Pß1ÿ³ÿ“É_‹<ïžneWbo‹®À¨pI<Ilz¯Û2?.$õâßÚäŽycI G‚¼îöî˜j=#ÿÿgÏ,#ÉGÿçviHâo=wæSqUIKeƒ£†3̉“lOe¦$Lhd^ƒ˜ˆNÿßÿý9ZMÿô N‰­Ã¬oR}Ò% Ê@ÿ¿ÿ¿+ämŽ}Á{KKLiˆ¤ºº¶›rSJY_tºí/2;0òݾ–mO83'3Js£Àʲ˜uVB',>{Þ¢!ÿåÿý€xu®|ƒÍEG6Ii…˜nÀ”…|YNqšŸ7bss}…m2ÿõ6QJ73AKo¸åÚ¢h_“ÝîqÿäBËJe ¿€gPXb|—®Ã¿¬Žwqqƒ‘«Íð **% óЯcJ;Ja}’—œpSEKQ][k™ÈõÕkÿÄ'…o¿¦Èè 0gŽ–zmIØ´t\Qb”ˆ#Hgqiceƒ‡Yÿòÿú#SWB48En¨Óçϧ„t”ÞÚ|#OÄ/YN¾…UR]„¦Á××Ò¾¦•‘˜“¸ßÿܲ–‡wtq{Ž˜“~oaNJQhzŽ¡´ÙصeÿúÿÕÿúxüQl6øÉÇåðû/Jn€†mO$ûØÃ¨nGGdwzo;Wbd[QUs€k:ÿùCJ>6=Tt‡š»ÒèÒŠYp²êç¦S#AŒä宀wжÓáéãà×ǹ··§¥·Ù÷ðîàÁ¢“ª¯¨ ŒqXCFNk‹«ÃÎÞÖÊ–Aÿà~ëæçðîåÍÑý7X`f`eX9øãÌ©oII_c^[0FR^_WP[fnY"ÿþ2R]M;C`x¡­ÊÅ“`Qv¶áÝŸQ! Z˜Íëâ˸ÂßöôæØËÇÌÐÆ¼¼È×âáØÖÐÁ³¬°¸½»ª“yfYEBFh”ÆöýÇ5ÿöÿøqÀéêÎÌÙíøîÜÍØù$9DY`_G(  ÿÙ¢mSN^`[\(;Udh^QLagAHg`G<Jk‹…“Ÿ¡ŽiWf’ÇϦZ %p²àööçοÁÆÏÓÐÇÀ¿ÄËÏÌÆÇÉȺ®¦–zffmaZXrÍüøÔƒ'ÿúÿû:‚³¹Ÿ” ÅçðáÏÆÎåö&K^P0!$ߟ|p^Y[ZS-G_uu^I[l`<HgjQ>MqŠ˜¡ ¨ „fP\‰±º‘R'V¡çJRK0%÷ÚÆ¾´·ÅÑÏÄ»»ÇÏÆ¹º¾½´¦›ž›‚igofiyžÎéöÌ„8 <€¦¡l‡¸ÙÞи¯¸ÃÚî'=PF"/8⩜šwTLE+ $6Mo~s\Y]bS&ÿüUzkIB[„ª¶­¬¤ hPRsž°¡o9!U¨ \tj>1"çо¢›§¿ËËÅÁËÑÈ·°¬¥œŒ†“œŒvpur€ŸÁߨ½ƒ> Sˆ¡‘kQe©èòή™˜ª°ÇìDPH%õ40 Þ»·®~I6)ÿü$6Ws…{bILSH1 0`rhWO]~ž°±£ —„q`dz”¢•wS+:qØDˆ[H+äÐç—˜ª»ÆÇÂÃÅÆÂº®¦œŠ€„‰}su„“¦ÃȶŠ`E3Bcƒ‹{f_hŽÆæÝ¸§ ”—–µï%=/ +*ôæÚ˧n9 ÿïÿú%7Oua8/>UY8;d|t[IU‚®·¦—œ‰q`f|•£•lV_¥Z{dW4 é×Ϲ¦˜œ©»Äº¶ÃÌ𨟑„|zsw‚–¬¶À©tB+?_ƒ›fGMy§Ëß×ǵ³²›“¹ù'&öü4, ë×ØÑ®yI'ÿñ ""'CUM6,/=G@2(1Ji{ye`‚®ÅÀµ¢›•Š}kej}“’…|›Ý'SY`I*ëÙÁ¯œš¡±¿Â¹±ÀÈ·”‘ˆy{‚¡«±§œT=Jp–uQLl£ÊÛãÙØÌ¹¤‘¦Ó  íÞνmA& ÿÿÿò#%"184(#8KG=:KoŒ„’«ÅÎɯ”ƒ‚ˆ„zjdlƒ›¬«°Íø7QOA èͺª¦¤¬¸À¹°¹¼©‘ˆ‰†††Œ–¡¬©šmcXe‹¨¥…fVUt¡ÊÝÝäæñ彘¨Îö  òÕÈÃîL% ÿÿÿø!  ,41&$8NSLBGcƒ‘– °¾ÉÁ«‘…††„{sjs¬ºÃÓèþ-9>/ádz­¤¦±¹³«°´¬ž•’“™žœ––yfZ]cv“Ÿo_gu”²Îèôý÷õḠ§Íô  îÆ¤œ™ˆd/ ÿý  !-7639DQXUSXi–  Ÿ¢´¿¸¢…†ŒŠwlt‘­Èßí÷!-)" ïÓÀ·¬ª®³­¨©®³²«£¢¦®ª–}qla^cox~ƒ~lbk‚”¦´ÉîýêÔ½»Êèþ üåвŽsmeEÿüÿó ÿÿ ")$%/9=BMW[[U`§ÁÁ°›š¢¦¤‘ƒ}„‰}rp€•²Îæú%(òáÓȺ±­­ª¦£¥¬±­©¯¶¼¯o`b`gr}‚€€~xwv‹¢½Þ ðßÚÚâçîóø ê»™xR6$ ÿü ÿöÿýÿú&42%&7<?IT]`Za}£ÆÍ¼›†„‹™¢‹xw~}|y‰¡½à/1)óêåÝÔÊÀ·²®­¨¦©­¬­¸½»§ˆnbhnx‚†{~†ŽŽ~v} ÍõùßÛåíîãÔÉËà὆fN.ÿþÿøÿúÿùÿ÷ÿøØ©øC>y‹ ‹@ A]BÄ[Œ”_D3O)¼ó0tÃ[%¶0‘íg ¨h>®3 µ L õ Ò µ ½ Ð × Æ “ W ! ù õ ý  3 < 7 þ î ÿ  d º  8 ,  ¼ r f ‹ î = “ ã;•mùˆJ< –ÏJx“§Åâ:¿Uã ÷—Z&ÿÔ½Q²¦†m‚ÝB½ … ÿ ì òÕSbw ¾›J÷±L$"×NXXä2ª6à[Í+˜*ÃL¹ Z Æ C ö ª Š ƒ n + É n . þ ú õ  3 T i Z =  ó å Û é ÿ    " " 8 Z ‘ Õ ÿ  ñ © O  ú  ? J Y x ³ ì ; „ è J Þ¢RÀ÷@’é[Ì\èœo>p¢Œ€œìUÈÌŸÉÑ™‰œÅùû$l Ê_ŒZ7W`[G!ßw¼.ãó¡ôΪ¥§‡œßjð~ ó i é „ # Ù ˆ O  ÿ ú ì ¹ v @ "  % 9 ? ? ñ º Œ ~ t ”  ý ) J j „   » Ü î þ é Í Œ 6 õ Ï å  < ; & % 1 7 T z ¿ û ^ ë f ¤ ¾ á 1 ”6Û¤b</ø–쨺ÎÇ DkQ_‹á ë£w“Â#óP¥è÷Ç­e8Šž!­YÏœ<‚KÅqN9 Ž  Á q ( À w T V M 6  ß ´ • | k P > 7 8 0 , 7 : 2  ê ¯ k /úòñ ! [ ¥ â  J s ¡ ½ Ú Ñ »  ? ÷ « Š ± ò ) < %  ô Ç ¯ ¯ Õ î ) ƒ Ð ð ï ë  N Î T ú Ž=Ô~¾•tÃmþUÊü{ y›mäüš?íêT:è+2Í›~FáäòÁ‚g•ÖÜÉÉÓ Ç ê ) ° . é ª ¡ – ® á ÷ Ý L  Þ Ä ¤ ¢ ® Ò ú     õ Ó   v Q *   7 \ º ë ! P y ‘ ® ­ © x 9 â ‡ L " 2 T ‡ ¦ « ¯ ” g < & 0 3 ^ ª õ " !  ÿ  : € ë B ¾ Y  y °¾Ñl]<Ù£,)Za`Ee}E¤qïh7®¥‰ðwl:m {g£;ÿ g ë œ  ª O  š X 2 Z – à *  Ñ J ã œ ` G ! ! 5 d ‘ ¨ § } ^ 4 ÷ÞÔÏÓÓÓÐÖàû  B Z o Œ © Ï Ï ¶ p %å°°Çþ + I a \ M 4 " " O š î . A E )  ÿ  ( g Î M ˜ ü o G'‹/éy…XÐišúþ×%ccfÆÐ„nÕ †«DÈ“JÔ H ƒ à  p m  ™ E  ö  ) b Š Ž ” c  ¶ } d L ;  óò÷þøóÿ  öÓ“P Ó¥nD 2Oc|šÄú% +g´÷          1 Y u • È ê ø á  ¤ ¡ ø m « Ý  x ù <ÄE‹—\D ÁQd¢l/´w2×må[.’ª—%æÄ±² Œ ž Ò o     ³ , Ñ Ã Ñ I [ ? ô ¹ „ V 5 ùÐn;þͦœ’¢¼ÜøÍ]ädû¬X#ôçÙßßíü9d–Åã.~Þ]íO†s[?@S[fr†ºÆï @ ” Ñ Û Ó ¶ – « ò U š ¹ º Ñ ú : N|¨¥g$ÏŠG¼<q©½¶›€›ív38ZZf{ — Ä Ó % £ | O K T D õ ¬ œ ¾ Ý è × ¦ l L W u ” h j¹™U ëÎÖÝú8`DýnÙWôÈŽu^@2P|ªÖô:ˆåy-È=RR"ÿñè[ÊAŸ×í  9 a „ ¯ ¸ ¡ r Ê  4 Q q ¸ ™ \ D¸6¯HïÊŽ"«¸®¶¸ù(ýÙ‰. — Û 6 í y 9 +  Ò – _ $  > d a °Q8Áð’óçÛmA%#+06@>GÑ[ä’]dqŠ›qAþú/On…“ž¡ÄêZõ¦F’¾“Y'B›G¬2\kUMl´ý øö & „ Ó  e œ ¾ ô F À B ¹ U ±=ßžTõ†‡/ „ 7 > j R ¶ | — ~ ê "   U ù Ò Ó Õ ¬ X÷¬…ˆ”?×o0#.+ìù7fŸ8%Ljd1þ¿…X5ç¶…k]j}‹vS1",?KS[bgnp€…Å+ÂZÆð­x€”§i vf4-¥7½  & ; L m ¨ ý : I 3  1 €  à  E ‚ é ^ ó‰x Å q x Š › t K M c – ` ¥ Í c O $   ÕkúžkLÎv(îÑÍ›7íTÄv2@`¥ìþèŽ7×~F.@IK=2öÑ«¡ªÊåõúôñôù!=Žå<ް¾¡…jF^…ðËvž~A,Ÿ`\9ªØ¹µ× . „ ­ œ l a ‰ ³ ; z m h n „ Î 1 ™ ¸ 5 + @ #  î ÿ 4 R Y ò 7ŠUfGýÆ‚¢)¾iϺ­‰9Úcä‹VRG<) çÁ¦K ӮЋ–¾è25,Ú¥m= ÿüÿù0L^iv…–¨ÄÈ©†~’ŸÃë*q¶ú(¶Œ™’rŽ„¯ý¨×ýU¡æ  ðÔ |  f { Ž } a W t › ‚ – Á ¾ v 9 S ’ Å £ Q¬÷tIDÿ RÆnþyí‹<<p‰WÎ/¼|´Ä«~ ‘¼‘nz„©Ìý6g’œ¥ˆd)ï³|Nÿêÿñ7Ql‰£½èøå¿µ©…hLo´)óP9Ú6šfxþŒ$)3°Œ£‡ˆ½ý>’èKuP;~  … å 8 7  Ç ¢ ‹ f  1 É Þ % 8ÚZ›âRöµAÔ†S*ÜXÌX7@n˜nñVÞÙ‹þˆ ’&ÿý9{Ãø,6EEB*é³r6ÿÕÿ³ÿÿÿvÿƒÿ˜ÿ²ÿ»ÿÄÿÔÿñ <€­³Ÿ­§‰JÿþÿÓÿÍ9“a‘Pë]ÿØÿ¬ÿ¶"BŽû“*Ï s­ã<ãn‹ŽÔWõ m Á £ `ô¬†zv‡W.M`9³0}Â~A ðª.̤Õ&YQîaýdã=d ‚ÚL!ü4—ßß༙mH$Ý®ƒ`J2$ üïÕÁ·ÅÌô6z¢³Ûá×,ºYÿÚÿå#ƒ¹W®ÿðÿ[ÿeÿÂs÷@Z_tØy7Î&H‡.ì\© €ˆÏµˆ9÷Ýýœ†{[J ²(¯JŠâ.Êw&d…gΘ²þY•GázG.x×lùtäPV_R?/0:<9.+7KY^iU/è XìÍ»•Ð,RSOÞ~#µ9ÿÖÿlÿjÿ%Ã"¨ÿ€ÿ7ÿtÿÝ`´ÃŸ™Ôu<é5cÏ]åaÊ-«}£»”P%RGln_½Jè—æHЬ›±À®g,"Z©ßÒ¨Œ¹¤A)Ðisâ\ ¼UÕ$p¬ö9z¦ÈåC`myˆ¤ÀÙÜíÀræQÒuO4Ë’‚±÷&.ì 8ì,šý/5xÿç]™«_ÿÑÿhÿeÿèpǼ}Jˆ1~³Ü}û^®úK´v‘oCcq¨À7Ü<ñ3üὄ‚¿E\]¨9îŽ cÀ[ù¯c š + Í ˆ X  ¼ w›ÎÝÝĵ£‘€sdk7 Õ * k Ö w p y € H  6 • ¨ q «Ê!sÈ"VbgtØPIr¿õÃBÿ ÿÿÿ`ÿèCTÿú:Ñ`ÊõYÁ-yš±äCÇ'<(?#îtè”lM®Gþ-dcODg™ ˜'k×u•òJ \ ñ j ³  ˜ ² 5 ÅZÒ¶Ž‘¬ßù^¸¹Äšj%î±i&ïǸy V‚䈞Ãöêæ^û!èºV¦= Ó Æ Å ËÆ¤u/½«Ù¼Ü~´ÿÇtÆ©W"B¢&uŸÆñB}ˆynž ‹ØëîIÑ+H‘.#êzÿø1‹ëöm(ôå­ˆP‘ 2  ×$,Ò›^2õ§;»[%S¾ ƒê" a!)!Ò!ì!ü!º!„!4 ç ˜ N ¶s?÷¢'_qºGTl©¬Ü3é÷ÈËŽžè %@_§ õ ~ ! ÌFÅ9$@óÕ­#Zÿü""ÿ§ÿzÿ’‡ëú<W[8B‘й ×u j7î»V5JÃ:Ñ(áô{ì Y z á ”ÕV”a|Špž»½kúgÍŽ y!ö#”%d'(‘)ò*Ü+Ì,3,ƒ,[,/+Õ+‰+E+ *à*¯*„*[*6*)î)É)V(Ã'Û&É%ñ%d%]%X%ˆ%€%Ä&1'!(s)n* )n( &å%R#4!~âPÅÀ¬KÅ ù  +í< ¨áºvdÓ€gªWcÂ$)筡Ŷ´ÑŽÃ£ ¤ vJ.žë¡S™ïi4ž o š o6Öý¯²‰· Æ"J#±%2&I'$'Š'ç(L(¸)¯*Ý,.s0F1ð3$4G4÷5µ66E646'6 5ù5ú666(6.6:6/6%5ê5¿5,4o3I1ð0ä0<0000700+0l1;2w3m3ô3k2Ä1[0&.S,o)Ï'#Ü ©ÖDb‚¾¥Ê O ` Œ š Z´ÛV;ÀEé=Í»âå¬2ÿÓÿÁÿú&LLW¥ÙÎÅ( å Z ÉͪQ-îÐ Ø  iŒðz¢ÐŽ Î#õ&•(|*[,./±151÷2|2š2Í3@3Å4ä667ñ9­;5<Œ=q>S>î?@@i@˜@ÙAAEAyAµAñB-BSB|BtBaBAßA=@d?=¡<Š;ë;ö;ö<;é;ä;ú<„={>#>H=‡<½;‹:¡9Q7ñ5º3N0",Ù)&c#è!š ³h¾Å½äWü¢æ ° s u<dÚàßÿaîlƒ°<x[1@_qr"(•ÔýÐ s ! -IkÜÊA7ô®rÓ"J%(+n.d0Ñ2È5789q;,>Ø@AuCD³FGSHIIHJJøK˜LLqLäM3MgMyM–M³MÝMõN MæM±MKMLvK—JUHæGôG‚GÇGùHFH\H‚H¼IBJe;k8R51Ó/,Z*i(À'u& $J"F êøAc,·'# § ¦ k ûK¨Z4À€TÿßÿÄÿüÿÒÿ¨ÿ£ÿÅÿõ%ü"}uÊóù¸PKžáªvÔ"á%¶(•+X.)1(479;Ø>@¯CEF2G)GGãH1HŒI0IåJýL+M‰NØPQIRYSpTZUJUïVwVÄW6WmWzWQW6WWW V÷V²VZUãU—U T?S5R QaQQ„QÔRKR£SSrSÿTõUHU S¶RUP¬ORMôLšJÚHýFŽDA1>`;¡8Ø6Š4n2ä1‡0.h,7)ã's%:#!!âKÒµ †¿z ã ƒ S9? ás=ÿþ/+Ú(µ%ï#÷!à UÔ®ö w!Õ#µ%E'ƒ*6-{0t3‘6Þ:==@B¶E1G»J9MO5QQßR¿S#S†SØT>TÓUoVEWX*YCZj[”\]s^^¿_$_o_‹_Í_ã_Ó__y_]_L_7_#^æ^–^ ]Æ]:\…[¯ZÇZEZ ZTZ†Zê[K[Á\*\¨]x]×]Î\ÿ\3[ZXðWÀV/T¢RP\M¯JîHETBð@¦>á=M;Ì:&85¼30Q-¿+“)y'$v!Þ‚‘pà¶u8 , ŒÆ¿ó=ã`ÿÊ95k2`/º-É+v)ã([(K(›*C+Ó./û2‡5O8 ;Ô?EBúFUI7K”NPS?U¼X8Yì[S[û\Å],]]²^^g^Á_@_Ä`Šapbncmdd™d½døedýdëdûedúdàdÚdÔdÉd­d™dWdc|bûb^aµa`e`_Á_Ó_Ô``_`Åa aZaØb8bkb\bhb4aûaV`¦_€^n\Ì[XµV7S“QNäL®J»HáGEOC?A&>‡;‡8—6'42 /Ê-?*˜(N%×#Bî;4j ’ Í ?ºÜÃèüBq>À;É9H7g4ö3:1¥1­2 3ó5â8|:¿=r@AC¾GwKrO}RÄUfWiYÔ\?^Â`äbñd=eaeÝfff–f¼fÒg gMgmg´hhËi‹jAjík3kJkjùjÕj¢j•j²jëk kk;k@k:jÿjËjPi¾hõh,gnf¾f?e¾ewe9e3e#eNeŸeøf#f7fXf‰f²g g‘hhˆhšh£h+g¹f¦e„c´aÀ_p]B[XÙVºT¹RµPžNNLIhFGC"@]>+<+:07î5M2¼/Ô-)–%¢!«†Š% ˜ é—:À"JQFöD]B=@˜>H<‘; ;.;§=Â@ BëEÁ:´5Û0¯+‰&Ú"ºu¨è¶’ Ø ìW}UgSóRÅQºPN»MMÞN•PàSkVSXvZÂ]‡`Ùddgxjk´mTnno¥p”qqr*s#sÃt#sósÉsKrÑr+qkpÒpdpPpNp`pCp2pLptpƒp}pspkpdpp¶pöqq,q[qmqvq1pÝp;o—nËmøm7lwlkÎkùl/l¢mmynnontmïm^lÀl*l l"l»m>nopqqdq›q p[oHnbmjlsk^j\ig€e®cûb/`G^o\³[,Y£XEW@U²SÉP¨MkI9E&@Z;=6 1-,Ö(…$˜ ‘ïfF\‰[%Z@Y‹XÜW§V¬UÌV2WY[?]ª_€a¤d[ggjXl·nÝp6q”rNrês@s½t?téuAu\tût°tsYrtqƒpÎpNpoØo³o}o‚o¯oýp.pOprpŽp¥pÅpúq*qDqQqwq…q‹qLpúpioØo1n„mömhm9m$mwmÐnVnÉoJp papboºon.memlômam¶nuoWpnqŽrWs rôr™q²pëpogn·nm0ljÀi†hJfýeÓdÏcäbÚaÐa _â^u[šXYSôO×KF1A;ä7#2œ.„*H&\"wøt_Š^¹^9]Ú]j\‡[Ò[A[´\ˆ^,_œaMbÍdËgEiál"mèoÐqr-r‹r¿rÊs,sttt s›sCr qßpûpoqnîn«nHn"nnRn«o"o„oÏppEpgp†p¼pìq qq9qFqWq*påpaoÝoGnªn7mÎm¾mÁnnhnÜo?o´pnpÅpÂpoXnm¹m_m0mxm¥n3nÛoÓpßqÏrÁrÿrër&qhp‘oßoPn×nEm‚lœkÉkj0ii"hÃhrÊrUq³qpYo™nïnQmómm‡m“mýnno o­p+p‡p¤p¸pÊqq>q`qpq‹q qÊq»q‰qp{oÍon€nmÛmÂmún6n™nìoXppXpOo­nýnEm±m{mYmm¤nn¼o²p­qœr’ss@rÒrTqŠpËp)o·oXn×nCm¨m$l¥lmlglkl=kßk£k!jêi}gbcâ`{\ªYHUfPðL.GÅCº?Î;ö7Á3Î0d‹dˆd‡d‹d6cpbÑb–ccÃdªeeæghÍj“lGm¹népjqVqÆq£q©qÅr rhrwr:r q±qFpÍpupopnÎn1màm«mÚnn~nûo¨ptq qfqkqqq~q·qûr!r8rWr|rÃrÓrºr>qÀqp9o}nÞn‘nInRndn¨náo2o´oëoÕoGn¯n"m¾m§m“m·mÁn n¯o†pUqqÅr"rsrHrqnp¹po~on®n9m°m:lÍl¨l®lÉl¸llqlBlnk·jwgàe!aú_x\†XùTßPöM3I²F B>0:›fYffÁfàfeïe{e“fBfàg|g¯h5i9j»lmqn´oÁpÿqœq¾qcqFqKq|qœqƒq;qpÎp–pdpSpo}nÛn`nInMn¡nÝoOoÔp‚qHqÔrr r9rZrrÆrìssGs†sátsøs”sp§pNoôoÛoÏoôppKp¡p¸p—po‚nónƒnVn4nEnmJmXm¸m†mkRi8f´dëbÔ`A\þY¼VYSHPL:H|EhhGh…h–hWgÇg’gûhÒi`iÇiøjjk9ljmyn’oÄp¹q©qðqäqsq5qqqpãp–pXpm³pVrNt)uuÕv vzvÐw:wewUw+w1wYw¿w¥w uÏt¢s˜rØrPqpúp¨pÕqq{rr_ru:uuMu‡vv„w#w±xUyyÍzfz¬zÍzÛ{<{m{LzÜz¶z4yZx8wmvpuKs¦r!oÚmJj fóc~_Æ\5XçVFSxQ­POÍOœPLPÉQðS UWeZ‚]‘`âd$gRj…m`pYrkttÚuåvww5w6vÓvuôutGrÀoìlÙi ewa¹]âZ&V^SDPZNmL†K‚J@J2J~LM´OñQ¾THW<[_cf­iÆmo¤rAsÕu uvJvëw®x5x‰xžxÊxíyUy2x›wSvtÙts©r×rDqärrSrÕsUs›s¶tžt†tÌuu±vAväwqxxìy¦z/zhzŸz¶zõzûzÏzezBy²x¼wivŒuFs·q]o lhÎdÝa \ØXHT%P{MÙKIHG¸GfG"GÌH`IŸJºL¯NÆQæU+Y]adöh­l˜ožr/s®u]vUwPw†w¡wv¯u»tüs$qmdivdÅ`k[ûWiSN…JõG¢E¹CûCNBOBYB“DE»H,J0MP;TjX½]-aOehØlotq³s{t[ukvPwixKyyeyÓzznz6y£xXvéu¨tìt~s©srƒr–rßsisØsþsùt1t#t‡uu¾vdwwx.yyÆz/zLz’z³zÑz¨zky÷yÂywôvhucsÃq¹n­kÃgþd_vZñVP¦KëGÙEB)@`>¦>@=ý>Ï?¡ABCåEæI7LÇQSUÈZ•_ddhïlÐp4r\t¿v)w‰wÔwûwHvÆu†toroHjâf2`©[rV)P½K®F•B¥>å<Ë:ã:]9¦: :€<=Õ@lB¯EïIN5RëWÊ\k`µehîlùoÔr$sQtžu©výx"y#yÃzlz¹{+zêz_yw—vIu˜u5t[sŸrÿssUsìtPtZt;s°s¢tt¢ugvv‡ww˜xaxøy9yBy“yÄyÍyŽyXxíx°wáv¹t÷s°q…nÞkgkbó^[Y!SïNHŸC³?†<á9ö856k6 5î6ú89q:_<=íAJDÛIŸNQS°Y)^·dcimbpZs“u‹wawÃwýw v‡tûs’pm0gþb‰\;Vh8[2%-²)³'è&7&%²&`')(«)Ú+â-ç1“5Æ;h@ïFØL…R9X]Ác hElxnêqrmtPu÷wŽxŒy}y¶yæyixãwãv²u®u(tÚt,Ç+))(%'?'b'¹(„))’)ì*ë,.Ž15U9ñ@PF¸N$UÐ]1dLi×o]r£u£vHvÓu¦t¿riphlfï_JWDN·FÞ?ä8Æ2Ê,Ÿ(‚$â#¦"—"ô##Æ$”%¾&‰()Œ,¶0P5~: @F1LDR‘XÓ_1dmiWlto.p×rñtšv=w;x2xex{wówvv¥u³tættt*s°s r'q¤q³r qþqÁq†pxoîoÇoÜp5pUp˜qqqÀqÙrrrss¥sæsötAtdtštsqo¾k¼g`iYñR¶K‰DQ<Ö6w0K,„)](:&½&T%ü&V&¶'6'|'¸'Ø(u)*ð,è15t;ûB„JVRxZwb-hJnbruGuýv ut¸rvpˆlfç^úV£M£EE=ã6m0x*l&µ#g"š""Ý#S$$ç%±&&ó'î*`-"1}5Ù;P@ªFÜM`TZ»`]eÉi}lÞnçq*r«t0uuÿv6vüGIOÏXA`ngmÉqèu…vZw%vu`sql|gB_WWMôEM=t5„/J),%¥"w!×!{"h"ý#Ã$Œ%%*%‹&#(!*b./1ï6ø;ïB(HÜOöVÛ\ÀbxfjplÐo6p™rrÌsÀtsùsdrãr_qóq»q™q…quqpJo¨o¡oåoÈooŠp o7n§nSnunnëoyoÍo°oWo/oJooâpppBpwpÝp¹pnòmigdd]UðNFB>6 0)½&"î""!8!q!‹""‰##Œ#ü$S$Ö%#&j'§+)/25Ð<¡DåM)UU]Ndjòo}swt¶uèu=tïsqOm%hza)Y‚P´H5@7Õ1,*Ä&ý#"—!õ"®# #°$c$Ý$Ì$ö%U' ),|/Ð4v9?0EáM)T.ZA`#duhµkRmÅnøp6pÑq°qíqÚqBp·pIp ppp2p_p6oooosowomoyp±o¼nênOn1n n[n¿nÒncm¹mOmBm\m˜m›m¦mÐnn¦n¸nÄmSlgþbä[RT!LD<"4-­'s#÷! ‚Ú < i í!m""’##u#Ü$$ç%¤(£,P2·9WA[I/QXÁ_šf¦k¡pqøs¼sšsÅrZq.m¢iªbå[­RýJžB`9ø2ö,.'ò#ý"µ!Ó"e"…"ú#‘#ý#ß#æ$%y'7*n-y1æ6O<_CJqQ¢X^8bág„jLlÃmºnÁo%oÜp oåoPnÅnpnTnŠn±nðoVojnñn‡n»o=oso–oÌqépÎo´nÇnPmûmðmÿm¶lèkõkPk&k!kTkIkck¦l$lÔmmel6k7gIbyEVL4S"Y‚` e i¦lniopo¹o¨m2jLdB]ŸU/M0E<Æ5‡.j)ž%#T""c"="…"í#M#B#N#P$t%õ(þ+å0I4±:ÅANH¿PV×]bb\gNj0l«mqnInsnïnúnÀn6m¸m„mŒmçn n€oo{oMo"o‚p*p—pìqMs qÁpRon'mƒm*lÙl2k iÜihÐh³hêhéi.i§jfkDkÄl_k†j×gbZsSvKCS;J3j-0&ð#„ é · F ¬ Û!?!™""# #y#Ù#ø$%'}*œ05”;ýAñGÖMØS’Yz^LbÒe°hIiÆkËl¸mÞloj{e_VîOOGF>ø7~06+%&Q$7"¥"Å"x"¢"Õ# "þ"ø"Ä#†$'N)ï.B2­8Ø?RFÎNSUh\IašfåiôlŠm5mïmän-nm¾m;lÆl»lõm†mÛn`o8oèpp&pªqbqôrnròs¶rMp²o1nmTlÔlGkjjhÝgôg®gyg®g¶h#hÈiµj¦kJl$k¡kIgÄbó[mTŽL»D’<4Ã.w($Q!–!T Ã!!3!‰!¹" "v##|$$p%s&f) ,A106=;¤@‹E1IøN›SiW”[‡^racIf7hvjÜji¨dö_™WæPÀH÷@Þ9[2,Á'¶%R#l#S"ð## #7#3#/"Ù#O$ &v(é-@1¶7ø>jEîM˜Tï\ a”gj?lîm”nDnn=Å@¶BòEtGúJŽM9OÛRŸU9Xh\=`#dUf)grdn`OYFSKêD =I5Å/¸* &ó$I#µ##I#5#U#Ž#»#]#•$&T(¿-"1Œ7Ã>&EÆM°U]\Àbohk:månsonÍn¼nimúm»m¢nnÄo pp»qÕrÿs¿tYu*vvÔw„x7s„r*pêo¼o nãnÑnƒm¸l­kvjfi¨høh³h^h—ii×j‹k.l!l*l~iÕeÖ^ÙXNPŒH¦@¸8÷2J+O&Æ#6" À } # ? ' s ×!Ç"‘$0%î(Ü+ë04j8É<ë?¿BCODÛFYGÇI²KÖN«QUTÅX\ÒaŒd`fÊdÔa†ZæUNG6?ü8_1Ä+ƒ'°$H#4"<"q"\"¦##\##\#ï&T(ö-˜218‹?FÐNáV­^.cÞiolxoo‹p-oîoÔoxonÑnÊoAoÛp”píq„r˜sÓt§u`vOwFx0xðy°s"qípûpoÏoáp oëo7nMml k.j_iõi‚i¢iûj·k\kòlÊlÍm"j³g`€ZeSK¤Cú<^5Ÿ.²*&$’"Ö"@!‰!m!9!Ž!Ý"ã#Ó%á("+©/I3À8…<â@ìCYETFFÐGYGÃIJËM³PmSêWŽ[ª`mc¾fÍe¶cH]6WšP£IðB¶; 4-=(¨$t"Ð!t!¯!¬"0"±#*##Œ$c'-*H/V4F:ÈAwI=Q[Y `seÏjémxo¯pp«pwpRoíozoSoooúp‰q q\qçrøtCu%uôvþx yyÂz†rÒq¶pþpQp8pvp¸pªpo0nm l+kPjâjzj«k kËlsmmémùnRlh b\éVO/GÓ@^9Ž2´-ß)·'®%…$|#A"Î"e"¿"ø$%>'½*|.–2Ï7¡<§@áD½F·HaHlHMGÅG(GÓI;LDORÕV¥Zñ_ØctfÞfcdÍ_VYïRÂKùD›<ë5°.‡)]$…"s ß!9!X""Œ#"ì#£$´'ã+x0õ66<ÖC KcS‘[)bkg]kâmào³oúp}pNpo£o+o#owp;pçq{q±r5sLt¬u¤vŒw­xÆyÃzƒ{JrfqWp¿p/p.p}pÇpÁp&onnnmyl®kçk›kgkÈlAmmÃnro_o…oámÏj¬e(`YìS»LïEä?F8Å3þ/»-;*ž)'&&:%s%¹%Ô'$(€+s.¡387ÿ=)B_FyJ:KöMM0L†KAIóJKMÓP}T)WÚ[õ`ŠcögBgf'aW\IUNAFÂ?7à0+1&#¦!ß":"f#8#Î$h$u%u&Ù*s.…4Z9Ö@gG!NŸV•]»d„h·lPm|n´n¾o nÊnfmémjm•n;o`pRq q\qós*t­uÆv½wçxòyÝz…{=qãpÙpZoâoýpbp¿pËpAoŸn°mÅmlPl(l)l¸mCnnâo¯pµpûqho•lÒgàcO]¾X>R KwE>ò:25Ó2×/»-|*þ)”(](ƒ(…*+º/32Ú8=ƒC7HÎLæPRSxRÑQÄOâMäMJMŒOéRIU¸Xî\`°d gogÈgUc ^tW|PÔIEAŒ:2¨,ø'z$Ê"­"å#$ $Þ%Õ&2')W-_1ó8=ÎDAJÞRY¬`Nfiýl¥lõm†mGmOlûlgkÜkTk·l³nAo~pbp×qŠrïtžuävîxyyëzw{q]p\oío‡o¼p8p¶pîpp o/nQmŸlþlîm m nnÖožplqiq½r3p¯nbjfa \VVãQ KDEÀAG=9×6x3Ô1/L-¿-µ-/714Ò8Á>=DJ OÅS×W•Y ZiYÀXÑVåT¿S SITàVœYP[£^maºd¸gêh–hndÆ`íZªTˆM2E­>J71_+ã(ÿ&&w&a'‡()ï*£,V.v2¸7=¥CNIyOÑVl]wcGh½kKml‰lrkÙk‰k jCi®i"i¶j÷lÖnIoUoüpÞrwtLu·vÃwéx·ygyÊzIpÑoëoœoXo·p\qqqoqpQo‰nÜnCn*nQ&LYH>D:@Ù=X:7•5À3ü3¸3\4þ6å:ô?*DÚJ×P¿V\ZV^_²a`|_»]æ[ÎZdY©Z…[‹]\^Å`­c eƒhIi5inf¤c¸^IXµQªJCx<…6÷1~.[+š+5*ã, -'.É/º1°48†=[CXHæNÏTñ[afyk!lÜm´lkÞjðjHi¢h¤hg}h=i¶kÏmbnˆoZpjr.tu™vœw°xSxØyymp˜oÉoocoàp˜qrr+rIrqmpÄp&oŸovomo«oÌppxpîqwq¦rqo³lÊiâf4bÁ^ÓZ–VPRSNÉK@HDÅB?O=”;Þ;z:ðAãEúKtQV[¾_‚c4döfxf'eÇdPb“a#`H`„`Æa³bocÄekgZi–j‡jøhóf×bG]\VåPJ C§>g9963?2Ÿ23,465á6å8î;t?¸D;IÀNÿTZT_ÕeiŽmSnSn…lôkÜj©iµhägÃg&fžgnhóklm°n¡oÝqºs¨u+vww›wúx xHpŠoÂoŽoxp pÅqªr…rÌr¹rqŒqpšptpgppypŠpµpþqZq~qÆqpmºkjhue´b_[wX5U7R-O;LIXF±ECaBóBIC[D¶H:L QDV—[Ä`d5gËiµkmkvkrj9h¶g(f eÃe7ece¸fßh(iÃkžlŠm(k³jf.aÙ\V]P}J†Ev@’=‹:µ9÷9l:o;m=>@&B±FÇJòPTùZ2_”dpi_l‰ooo³oBmIkÈjRihfÈf"e”fkg÷jkvlm–nûpôrìtuu[vSvÀw ww$pÚp oÂo¨p'p¸qxrErœr“rq¥qKqqqqqpëpòqqKqXqpâoónl5iÜg²e'bU_o\ÐZiXU’RÙPMMÈL&JÁJmIËJK‡NrQ¹Vh[2_édOg“jÄl†n7ntn¡m•l5j¡ihøhhhYi™jÓlIm÷nÐoin+lÌiXe`c[]V P•KñG™DîBKA†AA÷BØD]EfGbIÑM’QPUÝZ~_Fdh,lLn©pÄp„o­mkÞjNhîgâf–eôehf2g§išjÐkÐlânbp_rQsØt¸u¯vvGv#v/q3pZoïo¿ppfpóq©rrq·qpqIqEqiq’qŸq~qRqJqUqgqVqZpÊoún{lùk1i¡gÌe­coai_“]Ý[óY¯WJTÓS'QæQ­QQ©RaTÚW°[Ù`dXhSk0mÚo9p¡pâq)pJnöm[lBkªjÔjÀklmnDoÖpµq7polhÎd#_qZxU}QoM¾KzIH$G­HŸIjJèLN1PªT7W°[Ó`3d†hºkòo4p»rql0nïp­r8r¤s r¦rbqup8nÔm¤m l†lÍm6n7o+pSq·r‰rûrZrpAmþjkfÊc_•\áZfXªV™UwT¤TüU;VtWÅYâ[ä^†a8dthk=noÕq™r r\qYp nBl¼k”j™i÷ih³h‚i4j;kzl"lÕmÖoHpárisÂt—u{u¨u…tútÉqµqg(e½dYbâb3aâb„c/d'd±e«gik2m"nÙoÕpÌpõpöproïooXoQo$nênŒn…nÞozoêppp*pq8qÃrOrÿs`s¤s>rq©qLoUoïp3pÍqfqÕrBrÐsptt‘tÙtýu[uu¢uGtßts`r\qFoÿn£m€l¶lkiõhæhSg÷h.hh×h¬hÎi™j²kkäll#l—mfn,ooùpôrssÄsíts¸s›srEq5p1ooo-oJo¾pp½q„rxslt+tîutÿt5s[r)qoïnÂmÎm0l{k[iøhzg’g)gjggªg‚gÔh”iúkYl»n néo´oßoÓoouo ppYpdpFp,p[påqlq qyqCq!qFq{qzq_qƒqMpâoÌnxml9mnsoNpoqSrrs0s¸tatÎtütúu8uSuTtøt–sás2r2q*oÚnXm l0kŠji“hhgªgõhthþhéiiák;lžm§n0n`n¾oipPqWr6râs•ttutytRsßs«s(r[qNp8o“o-o‚oòp¸qFrrçsîtÿuÀvrvnv+ugtËt s>rzqËqFpøp^oRmûl¸kækrkEjÊjPiÀi±iïj½kzl`m[nn¨n»nntn¶oZppœp»p°pÙqFqòrerqrqÝqªq¯qqpEoØnþmÞljhf˜hjalmåoCpq{rFrÃsnsÆsßsÆsìsþsøs´sprñrxqµpîoÇn]ml6k”j¥i·hÆhAgÛhhŠii!iQiÎjölpmÚnÐo?o“ppòrssÁtHtztÖtÖtŸt sÚs]r«qÆpÊp8oÛpEpÜqÑr‡sZtTuYvmww„w>vÌvurtÑtsPrÓrlrqDp;on+m€lèlVkjÑjIj;j6jžk k¹l†m#m…m~m?mDmÌn²o|oðppp_pôqqöqôq¢qqeqXp´o²nlïk)if8c<`Z^ b¶f hªk7mo%ptqˆrr³røsrÛrírñrÞr¢rmrq¾q(pŽo‡n2líl kŠjªiËhìhqhhEh§i4ifi·jk"l™nGo²pqq|r>s8tFuuvupu‡uMtóttts¼s.r§r&rrr}ssót™uCvvÈw…wÎwñwƒvøv@uºuBt²t7sïsŒrñrqCpio«nÛmélékÜk%j¦jŠjBjTj’k k¿l.lWl9kñl)mn7oo„o¤o¾pEpùqŸqáqÖqq£q€qapHn¸lOjcg±d‘`¤\ŸXÔU—Zq^ºbebgõjÒl×noJpCp¶qqqEq]qcqDq/pýp×pqpo(nlðlHk×k*jzi¾iYiiYi§j jjjÐk*l m:nÏp`qšrzrþs¤t[uOvvxv\v7u»u?t»tUsüs{s.ss=srsètjtöuduÌvQvÂw/wEwAvàvtuðu„u.tãt˜tUsÒsr8qžpípnøm³l‘kšk%jÕjÃjgjOjjþkuk´k±k…k>k˜lmënÃo oUoˆpp½qFqcq>pæqp¿p\n—lOhìfb[^YTOuKLQ×Vê[(_.b†fJikqlªn nÊoxo¾pp>p^p]pkp^p]poÄon m#ll]kúk‘júj­j¤kkbkÐllmlÈm”nŒoòqhrÊttÔu“vvÒwFw£wyw/vuôudtût ts°sls‹s¼t+t uu9u`u¬vvfv•v£vjv%uÚu«u—u—uru)t™tsZrêr pöownlçkÿkªktkbjùj³jµjùk9kVk8k jÄk/lMm°nˆnëoFo™p.pµq,q,pæplpŒpoYlÙiÄeUaƒ\´WOQAKVEþ@öG8LšQ]UÝYÍ^1a·dÈf¶h½jk{l]m6m±n3nnÕnÿo8o$nünsm¸ml¾l»l·l¨lPl&lLlÉm=m§mÛnn€o?pq4r^s tïuövÕwAw¶wÎwòw¨wBv‚u»tótYsÆsr[q´q{qmqÇr'r‹r´ræs?sÎtxuubuuuu€užuÀuðuÛuŽut·t?sÍrÓqvoínmÑm%l÷lãlÑlklkÑkÕkákÜk£kjkkrlsmºnznÖo@o“p pQp“pFo¬nÈn™m•l2hÃdË__ZƒT»NeG¥A;V5·<ŽB.G]L9PžUsY‘]H_ób¥d´fíhŽjjñkñl˜m8m–n n3nAmîmum lÔlümEmm‡mˆmÂn?nÃoAo‘oáp?pèq¨r²s¼tÝv wwæxRx²x”xxwéwWvcuTt1s0rXqwpÍpoÍo¨oîp5ppÜq?qÄrsOsütqt¬tøu>u’uÔvvuðuŠuVtÜt@s4qüpÉoÀo5nÈnÂnÜnËnNm«mJmlÿlÎl\kõk†kÏl³mÛn}nÆo)oooÑoâoîoHnOlølxjçhÃdU_zYS0LhE =¦6o0-)í1–6õ<@ãEYJ"NxR–UëY%[å^îaqc¹eVg h8iOj jçktkìlkúkëll_lëmqm±mÑn ndnÖoMo¡oõpDpÜq¡r§s¦t”urvv×w.wtw!v²uÎu sîr¥q%o±nmm>lek|kj£jÌjùk—l,mnoWp¡q¶rŒssÑt^tÝuu^u\uTu tÏtCsŒr«qàq@ppYp?pkp­pœpoanìnŸn^nm\lÊlDlpm nnunŠn¶n¼nïn©nAløkii`h1eÈb©]IW¬P¬IùB :û3i+ÿ%¬W&²+Ú0ï5ª:&>ßCbGÞKÃO]R£V\Y·\Ç_ aŽcYdþf3g”h¨iªjNj×kFkÕlƒmNmóngnšnØo oEoo­oòp8pÐqr‡sztHuumuèuöu÷uit¼s¸ríqÐp‰nÚm"kTihfsezd™dœd­e›f•h.iÃk«m¶oŒqr3srt5tËtäutòtÓtttsrÝrGqÊq~qqqJq¸rqôqŒpápvpo onPm»mYG[˜]Ä_waXbñde±fÈgµhÌiÏjÖk†ll?l}lll•l}ll±m@mønéoÑpqqQq‹qCpðp nûmªl kaiþh2fXdDb%`-^,\Ü[ [Š[‘\Ì^`JbfegÕjlÖnŠpcqyrRr~rÎrºr˜r7qÖqsqpêp·p¤ppp–qq¸rr qÑqIpâp^oÒo*ngmÒmVmZm®nnm”m1lŒl?kinfc¯`!],XÚSÐLüF9>“6Û//'à ýù0‹¦Vmq#–'›+Þ0‚58ñ<ÃAE~IÈMtPùS³VUX|ZÌ\Ó^Ø`b cbdæfT•X)[¥^°a/cîfgøi"jfkkuk™kúlXlžlàm,m—nnžoRo÷p™pÅp×pKoŠnŸnml®kÐk j~j-iÁi"hfîeBcÂa*^2Z VQ6LYF„@—9Î2â+¬$LËï( È œÖZä 7 eC° #C'y+ª04µ8þ<ä?ÚB·EG¨IøLö=<,;w::¬:ý<¬>pA[DAGúKåOøS·W6Zþ^1ac e;fxgtgîh®i>iŸiïjcjûkŒl@»B•D\EòG®I7JÉKÊLŸLÑLýL×LËL”LJKìKpK]K«L]MM]MwM%M LpKãJDH/EGB³?Ì<´96S3›0î/$-z,Æ+ß,&,.€0s36:Œ> CGqK½PBT*WÄZV\ÿ^¥``ÄaÏb—c(c§d]e5e÷fÒgßhÉi±iØi¥hÏhgRfÐeýdÊc>aö`‰_]7[€YZW%TIQcMÓJcFA¬LbMa8`N_]À[üZGXEV0SóQþO•LÓIqF0B’?-:ù6G0×+‘&D!. ;=  AbY ºß`p¦öôm¤° M z&!„ "`$&(*.,-±/ 0¡23‰4o55?5’5ž55Q4ê4‡4=4L4Ž4è55 554ó4\3³280‡.I,=)í'u$ì"~ OI¶çÝð?ÔÞ"Ú&Î*ñ/Œ48]< @CuEÜHOIäK'L.M¤OHPÄRGSÛU~W XºZ¢[Ñ\Ÿ\)[ŠZ/XûW–VVTßS]QhOGLåJ¬HmFbCÑ@À=<:"6Ù3›/‹*é%à!Qòs+ ZU”løœ–ÿÚÿõÿôÿ¼ÿ臌 –ËÅ  0ÇÓÏWß…£ µ"l#²$ü&'w(w)A)})»)¢)’)I(à(ˆ(K(v(ë)Q)X)(È(t(J'Ì'8%ê$_"W ‚…iQG‹Å“!d{Ïaý¯Xæ!˜%Æ)è-ì1ð5N8†:Ù=#>¦?èAB®DFFHIýKôM÷OÅQÃRÈSjR¶QæPeOMLmJÿIRFûDbAÄ?¹=­;k8p51r.œ+«(`$C¼7[ÓÐ cê #¯Ùsˆ^ÿì=fÿäNI±Ad±T« \ { ´¬#Gr#ü®ì裧‰^»óÆ®i »z¨4·Ú! YæoVïrÇ mËŽ \ È ` _ 4 Åþ&ï_Í#W&õ**-8/€1±394•5ç7’9v;6= >ó@áBáDŠFFGG‘FèF D½CwB*AB?ç>;Š8ò6†4Æ2Û0[-.)ï&Ï$T!¥Uy¡! Y ü"·g5Ÿ²Pm³pÿœ cÿ§ÿ¾DX'V ÚÁÎC „ o ë «óX»ÊiæòÞx¸b|ç‚÷õwñîœ ô r ¬„S´lIr\ܲ|ï x Àöåal!R#£%å'£);*Ë,£.§0›2|4_6 7Á9:{;$;¥;::¯98»7”6‘4á2³0'.,*8'æ$â!šßoOát “ W ¤4ƒÿÃÿÝR¢GÿÿÞPJÿâÿí=t ÿç&ÍR×¾úN1•Ä(# D $ t p U Ÿ +    à w # Ê ¸ Ê 7 Á 6 ‰ a  {  3 *ߨ„µæ\јvŽŠ³ã\¾¡ŸM N ¯j(Ôn°ê½i ý"Ï$°&(2)Â+,Q-`.“/O/ð/Ë/.¦. ,õ+¾)ä'Ê%¦$"l hÉØ!1d G J Ü"ø[Í!)ÆÌ5ÿÎÿÑ(|ƒÿÿ´UJÿäÿ™ÿïF ÿœÿ]ÿ}ÿëIÿöW2-Á¶dfÔ%Dõ¥ÖMž±¯o*Új…ðiÃñÈ®EÇZ£ê`ÿìÿ²ÿvÿfÿ[ÿiÿsÿ…ÿ‘ÿ¯ÿ»Š†„ÁÚ ä l¢Æˆ‰-¸,RYJ ]!"ð#û$á$Ú$š#—"¹!l k„*=¸Ø7 ð Z ÚJ?0ˆìÒÿö ÿ¨ÿbÿÎ`„DÿíÿÙÿµÿÔ@{ÿ®ÿßAf?ÿÚÿ¥o^ÿÐܱûŸ ²ÿ ‰øÆ`È®/¯DJˆÏ è¸_÷]K990++( ÿÿ<¶2%2œì| : ø ’ Õõñ$@4ÿº¨Ì0ÂܽˆÚ³d$UOÝÍ v • êäHIv}LçL&S<ÿ¥ÿ’‹eÿüÿÚ-ÿÐÿ§‹Qÿãÿ½ÿéT„ÿœÿšÿé<<ÿ¦ÿ6ÿo/FÇÿàÿIÿRÿÔeÿŽÿ&ÿ ÿmÿäY²žeÿÛÿFþ×þþ§þÔÿ4ÿÿÐ+q©²²ž•ŽŠo\UL7ÿó4®JΕ…]yãeæ œ þ…ý}*‘àû¯  Î / Œ Ú —Æ Ú|ŒGcïj°F‘ÿæ*n"ÿ¹ÿ•ÿÈ6qÿ¯ÿÑ^ÿ´ÿ÷[p8ÿÔÿ­…kÿ¬ÿ·Sψÿøÿ˜ÿçæËûHBÿÿÅDr JÿÊÿÏ ÂCƒ°r„ÿêÿ~ÿ8ÿLÿ`ÿªÿýUÏ '825,ý÷êàÚÜÕáï/üIs«²eEzÂ}2_¸A É Þ Ü ñ Ê è ô w/ ‡Šz«ÕŒßSû¹YØu¾F”j‘º¨$ÿ¹ÿÔ+L.ÿÛÿ¨ÿì[)ÿÙÿÒ f€ÿ¦ÿÎ;’€ÿæÿyÿÔvÇ”ÿéÿ„ÿÞ¿¦Ñ0"ÿsÿ†ä5ó{ÿàiÈ1A²;ÿÌÿ€ÿBÿOÿtÿÀÿð&oµéKp‚yxjXB1& ñ«d ÿ¦ÿcÿ,ÿZÿ’B";Ù<òŽÕÆçÎuŽN`ÿëhiÀ½ÿÔÿ¦NDŸZ×u´ îÿÖ+‰\ÿúÿËÿÕ"<ÿßÿÏ2„Sÿïÿ³ÿÖe¸Bÿ¥ÿ{ÿߘþ›ÿçÿoÿººªé6'ÿfÿ^çaVÏb#Jn¨ó(P,åuÿÔÿ¹ÿÇÿºÿÊÿî-a¨Uˆ˜ˆsU;+(! çΦt3ÿëÿ·ÿŽÿšÿ§ÿóAЈ%š”kþžb.`Ù[Å}»²ÿÂÿµj€=þçÿÜÿ½†}ËÓéCdíN ,©Nÿéÿü4<ÿíB_ ÿÀÿôPWÿÖÿ‰‹$ÿ›ÿz ¿¬ÿèÿoÿ®‰sÁ^oÿ¥ÿyÿÙ¡*K2Ø¥€OEP‹Ö 'Æx@ÿñÿèÿï6pÅHVicW>+ îÀ†T.ÿûÿÓÿÄÿÈÿø.p¨ÎÉQÿÖÿ~ÿ>ÿaÿœ½ã;ÿkÿÿ;=È„ÿŠÿ\JãÄEÒ |­hÇ=>Š©‹#ÿå/‚WÿÑ6Zÿåj•#ÿ©ÿ±€’ÿ“ÿš!à-ÂÿøÿWÿ~Ycûªÿ­ÿGÿ¸_„yk®Hÿóÿë]¼üöÔ¥~hX\[sŸÎêóÿøêå×ÞqK*.Alˆ¬Ú Mfl0íƒÿ°ÿqÿ‘ÿÅ3°Eù=ÿ‹ÿ#ÿŸ¬»NÊŸÿ’ÿRÓ²Ìî{â¹&«t—ÈšJrªbÿØ*‰®{ÿÖ&ƒg ÿ·ÿ¸)‘yÿ¬ÿ¯4ÐÁÿrÿ{::Ç¡Èÿõÿ‰ÿ(¿9‰f"¨=ÿüÿÄÿßzÇîóçͯ™Œ–©½ÅÀ¾´¥˜—’€k][Te³çGZrN Ÿ/ÿáÿ¤ÿ¯ÿÆ Y•̯eÿìÿWÿGÿ´™Ý‚Œÿ ÿgÿóêzw¯âeÕÛrçÀØðà‚14tµ»l%kÌ×fÿìÿç-pqÿªÿÌ6“”!ÿ²ÿ¤Ò5ò1ÿpÿYÿûÿ¶"ÿxÿuÿÏ…O_Õx ÿÍÿ·ÿï-|½ÞøðÞÊÇÒÝàÜDZ—{mkrjl}˜ª¹ÆÜ"7!¼aÿØÿë!„×&ý¾Lÿ¼ÿ}ÿ€ýžÈ(7ÿ‹ÿxñn8°z»TÕå„ß7¼`Ar¼Ê¤s2*G±ç¦+ÿÜÿãB‹Mÿæÿ¸ÿäR¤Ž,ÿÆÿÀ1È!æ?ÿ§ÿwÿùÏ{¦gÿÕÿ¦rè0*Ù…3ÿùÿðÿïLˆ¼Öâãôå½”rik|Š›°ÄÏÐÓëûÿÛ£b)*g±íüØÿÃÿ…ÿÇUŽ}ÿEÿÃÿÑCÝ*ˆ=~«Û¯K&]h M]˜Î¼‹P=4t®»|ÿÇÿûUmAÿíÿÃÿñU°²Nÿãÿ¿½3/™ÿÑÿtÿ¹ŠRjÂ:y¿éñá¶…Nÿþ2\ˆ¬Éê&+îÅ©¢¡¬¸½¸°³³¦—”“€]NX‹ÍþýÔƒ*ÿåÿ™ÿ¯ÿþ“={M®ÿÔ Ä?@ÔKRïÔa<X~ˆJÐjV‚›£ŽzZUEZ}±¤=ÿÜÿÕUh.ÿçÿÐm´ŸGÿóÿðJÐ;!˜ÿöÿœÿÚe oTÿ‰JOe’©µÆÄ¼™h>(03Lm—¸Õø01 ðãÑÊÓ×Å«£—~];+(>PvªÞÉ‹CÿìÿÍÿÏ*´"W‡ ÿß0Â7Fçm0OÎK“’_P\‹™s¥fqtq„§D_d]]ŽŸmÿâÿäZ^0ÿïÿÛk¬¬x8EÃ*Eß;ÿÃÿ¥ÆR5æ’e`T`pŒ­¼º ‰lI>Hi|—¹â+6+*ýáÝÙ¿ž‰tW7>z¶çððË oF/ kÐ-%Å>ÿÞÿøiþZ<Ñ^:€ëOq[MKk‹¡}4Ø”‹šoOi—®#Ljjd†—†Mÿä>]Oÿú Nˆ¨´™eT€Ó))ØRÿØÿÕ7ål}ÃRRSl‰¢³°­—qSJ[c{˜Àí&+:4ûìÙ»•pR2(#8Ms¦Çж¢‚]@&.?zÚ«)ÿé‚nl ¥rÓFJ<Kgˆ“–fɘ‰…\Kr¡£8dxy€~k7 9QK:6CNq³ÜÖ§sn¨ô(Œ ÿþSÚYœr-Ìw\^d{¤¼½ªŒxuv‡–¯Ìê%&èÊ®lS;Dc‹ £°¥†dX[UTNa¼ëÒrÿÖš/ˆoÁ¤Åè   5g‹—~kBÙ´›xdS^€—ˆGhvpki€Z$ÿþ+Y^J=?Im¡ÊÝÉ¥ˆ‚¦îê6%ZÍ4[MÃ_Va†¡¸Ñ×ζ¢—“™˜¤»Ýÿ!ú×±–ˆythn‰ŸšƒyoXP]v‰›²ÖÔ´gÿÛ|ûKf2öÆÃáïý 4LnŠqN÷ÙÄ©tOJcz‚t4Tdh_Z]qwf? MUIBFUlzŒ«ÄÚÉ‹ay¸ïëªW%@†ÚùÞ®ƒzŽ·ÎÙçåÞÎÁ¹¶·­¯»×ø  üöãä—¡Ÿ•–ŒpTBFJfŽ´ÈÌáÞÒœHÿäyãòÞßçåÞÊÓ;Y_hfk[7 õäÏ­uOLbjhd'CU^[WUZ`l^*9WaTBCXm†—¥ÄĘk_ƒ¾äà¤W'$\•Èçá̺ÄßðùùèÔÉÊÎÑÌļÁÒãæÝÙÏÀ²ª­·¼µ¢’€m^MLMkÐ÷øøÉ€4ÿùÿýoÁìæÅÇØçíä×ÌÛÿ(:B\gbD!ýÙ£nSO^b^^'@RZc_PHbmG Ec`J;Cd†‰„—¨¬œ}lu™Íذe$0v¶ã÷÷ ìÐÃÇËÒÙÕĵµ¿ÈËÇÀÁÄÅ¿¶ª˜‚uu{snj«ØûìÊ~ÿñÿö;ƒ¶Ã®Ÿ£ÉíîׯÃÎçú $MbP)Üœxl[VWTN3HZtwY@Vl`:DeiM5Dj€Žœ¢­§”y^c޶¼’U# )W¡æJRH,$ùÚÈøºÉÖÐÁ»½ÉÏŸ¹¾¾¶ªžœ—‚rqxps¢Õò÷Æ‚=;ƒ¨¡†sˆ²ÖÝÉ­§¶Á×î$7OI" '0ݦ˜•tSIA*);PtmOPZ`P'ÿÿUyd>8Rv˜¨§ª¦ªœsUVuš¨™k6U§[ti</"æÏ¿¦Ÿ«ÃÎÐÍÊÔØÌ»³®¨Œƒ‰…wrvsš¼áàÂ…E(*WŒ¦“iObŸÚæÆ¥‘¨®Âé?JE&ó.(Úºµª|I6*ÿù&8[v‚u_KMQH4 1`k\NLXu˜®²¨«¥wfj|“£™{W1AvÙB|ƒWF-æÑÅ­ ž¬»ÅÆÂÇÊÉÁ¹®¥šŠ€…~z|Šš­ÆÉ¾–gE3EeƒŒ~iajÄâÛ·¢˜Ž”•´ñ'=-  %%ñæÛʤm9!ÿòÿø"6Qve@4@V\:>_qn]LW…²½¯ª¦©¤{io† ¬žwciªUt^U6ìÚÒÀ°Ÿœ¥´ºº¸¸Âƽ­£›’Š€}{ƒŽ¡ºÆÎ´ƒQ0:V|“ŠdHP~®ÒçÝι³­•“¾-* û/%é×ÚÒ­vG'ÿð  &ASN;25CNG808Kcuwc^­Åľ­¥›‚ngk~“”Š‚¡à&NS\H+ëÙij ›¢²½¿ºµ¾Â´Ÿ”Š…xu€–¦¯·¯£‡]FLlˆ”xUNn¦ÍÜãØÔÇ´¡‰Ž¨Ù    êÛ̺™i>$ ÿÿÿñ $ ,88/(,ATQE=Hi†ƒ|Š¥ÂÏηœˆ„ˆta[c{”¨«´Ñú3KJ>æËº©§¨²½Ã¿¶¹·©—Œˆ‡‡}}¡¬¥˜‚lbYh‹¥¦Œp`\w¢ÊÚ×ÜÜãØµ–‹¥Ïú  ô×ÈÁ¿©{F  ÿú  ,64(%<TWL@C]}‹—¢´ÄÑɲ—Љ‡ƒypjuª¹ÄÔèü)4:-ãÉ´«¢¦®¶´®¯¯ª¡•‘—––œŸž‘n`bi{“šŠpbhu’±ÏèóüöïÙ´¡¤Çò ïɦ›•†d/ ÿÿ !/72-6EOSNLQf𧍩­¿ÈÀª–‹‡Œ‘€w|•®ÈÜéôÿ*)$õÙõ¦£¥«ª¨§©®¯¦ž£«°ªŸŽ€vmmpyƒ†ƒvd]d{¡´Íó íÔ¾½Åßû íÔ³ti_C#ÿø  &"&,4;BMTUSKWz¤¿À³¡£«¯«¢•‡„ˆ~ut‚–³Ëá÷!%òäÖɺ°¬®­ª¤¢¨¯«§¯¶·¨vedfpx‡†€wtww‰¡¿á ïÛÔÖáãçóÿ 齚yU:# ÿÿ ÿþÿõÿû   !0.")8>BMVZYNTq™¼Ã¶›Œ‹’£œŠwrutvv‹£½Üý-.'ýíåãÞØÏž¹¶³ª¥§­®¯·¸°š€l^bky€€€~|€Ž”…{£ÏöðÕÎÙæëßÐÍÒâÛ·ƒdN3ÿÿÿôÿ÷ ÿÿÿôÿôÿùÕ£ò@@~# ŠA ?Y=Ã_”œcF4R-Àò*j·R ÿ³*‰æa©k?±< À Y  ã Ã È Ü â É N  ð ï ù  , 3 1 !   ð ý  e ¼  @ 2  ´ l f ˆ ê > ˜ â5”n÷ŒR<ÎBt“¥Áâ<¿Qß øš^+Ö¿T¸¬ˆi~ÜB½ ‡ ÿ ë òÑJXr À›Eð¬|L$!ÔJV^è1¨5ã^’›Ä†»J¶R ¾ ; ñ © „ m / Ó { >    = [ e O / í ä ß í þ   ! % ( # 4 U Ô ÿ  ó ¤ E õ  6 F Z t ª è < € á L ç¤K½ûAê_ÎZèk5ýiž‹‚žíUÈÍ£ÍÏ“„šÃöü&m Ê\†T6[d]G" âyº(Ýó¦öʽ¦¤§‡—Õ[ás î i æ {  Ñ € I   ü ê »  J -    ( = E A  ë µ ‡ w o · ï  E k ‡   · Ú ñ  ñ Ö ’ 7 ñ Í æ  5 8 ( # , 6 X w · ý h í ^ Ÿ ¾ ß + ’9Ú¡dB3ó’}í«ºÌÄ EiL]âí§x“ÆîM§îý̲k@‘ ¥üLÚA…HÀnM7 ‰ ø ³ e " À w P L C /  Ù ¶ › } g Q F ? ? 8 4 7 6 4  ô ´ m -òäâ  E Ð G t ¡ ¼ Ü Ø È Ž N  ® ‰ ƒ · ô % < *  ó Ë · ¯ Ð ñ 1 „ Ç ç ê ã  H Í O ô F× ¾–vÇoþSÆú{ wžrè>ñäL3ä)3Ïœ ~EÞàì¹uZ’ÝâÈÆÑ Ç ì + ® # × › ™ ’ ¬ Ú ì Ó ‹ F à Ë ¤ ž ° Þ   #   ý á ±  P $ õü / M z ­ è # R { ‘ ® ¯ ° ƒ E è … D  3 Q € ¥ ¯ ° ‘ g @ $ * 2 b ¨ ì    ö ÿ : { â > ¿ Z  x ¯¼ÒpdBÜ£-+X]ZAd€Fÿnè_-¤Ÿˆñtc1gye˜1ÿ i ê " ¯ U  C  O Ú "  Ç C Ý — b L !  : s £ º ¿ « ¦ ‘ t G íÏÇÁÈÏÓÈÉÚÿ % F ] p ‰ ¥ Ð Õ ¼ q Ö£ª¿ô ' J _ V I 3   O • å ' > @ #  ü   ` Å E “ ú l D&7ó‰\Ô€þ`’öþÙ%]Y…bÂΆxá%ƒªHÌ”GÌx L Ì ~ m l  › I  ê ï  Z … ˆ Š U  ¬ v a N ?  ÷ÿ     ÕŠDÄ”d>ü 8RfšÂý$. #b­î         - O l À á ó à ¾ œ y ™ ð e § Ý  w ø AËLŽš_F ÀRf¤m+­q6Øoêf@ ž®Ÿ3ô̳¯ … › Ú     ± + Ò Á Ä ø : U < î ¯ w G ( öÑŸn:ر§¤·ÇÜÿÎWß^ì—GàÎËÞâîÿ;fÒï /zÚ[éIqX=BX^fuŠš¯¼ç 5 ‰ É × Ï ± ’ ¨ î Q ™ ¼ ½ Ò ø ‹ : Q~©§i%ÑŽN À@t¨»¶™~œò€™87^cm} • ¿ Ë ¬ Ž Y I Q D ö ­ ž º Ì Î Ä Ÿ f D O m ‰ ] g¸—Uúáêú.>jQfÐNä¶’ŠtaRB#4N{°áý5€Üs'Â8MKüñç^Ï?”Ìæ 4 ` † ¯ ¶ ž ~ n ‹ Å  3 Q o ¶ ÿ š ^ F¸1¨CðÌ“'«¶©¯´ù*þ~Ó†. — Ø 1 – ã s A <  Ò • b )  B ` MýšI/x»èˆëäÛ kC#9=HTYZN[2×QÕ…MUk‹“hDý)Jr›œ˜¸ÝPî¡B¶ŠS#=L£(VgSRs¸û  ôð   Ð  e Á ø J à E ¹  H ¤5ÛœXú„úƒ, ~ 3 ? q \  » | –  í $ ž O î Ê Ú ç · Vò«ˆš.½_. %#ä‘ì.e£>(V{yFÙ™eG(í®zbNXpz^D/"/BIQcrusnz}¿'ÀZÆî®w˜©yak[21£4» ! 9 N o ª  @ P :  4 † Ú  E ‚ è ` ö†u Æ n v ª ˆ \ Y h š d ® Ö d H   ( !áióšlR ÑiãÓÍ”-†ÞE¼w9Hf©õ ù LìP'%(6>:'Ù±–œªÉçùûöþ <ŽèA‘±Â§ŠmKd‡ëÃfŒvC.›][6§ÚÂ¼Ü 3 ‹ ¶ ¥ r e  ¹ > € v n p † Î - • ¸ 6 & 9 $ ý 7 P X õ @“PW8 Ý’¡*ÃqΨ’w6Ù]Ý…LHA>+ ê̽¦|GòŶ¹Øõ $çÅ“Rÿÿ8Sbp‡«²Â¾¡ƒzŸÅë'q»þ*´‰˜‰ k„«þ ý¦ÜU¦ð  õÙ  | f  ” d W q ˜ ‚ — ¸ ± s B ] – Á œ L®{A0ñ¤f Ùtÿ|ö—C6Xi?Æ+·y° x¿ªyŒ!É«–¬¿ßõFq‘‘‹gDã¬i4 ÿúÿý2Ryœ´ÃÞæØ¼±¢‚iHg°+ õQ8Ô.™jwùŒ$%4´‡—€‡¸ûBšòV|T:xÿ ~ ã ; =  È   ‰ f ) Í´ó 1 >Þ_¤ò`õ¨9Û™i9àSÇ^EIiƒUáSÞÖ „ïû‹œ7W¥õ+:FDQPD úÆ“^+ÿüÿ½ÿ–ÿ…ÿ‘ÿ–ÿ£ÿ®ÿ¼ÿÆÿØÿò*Hw˜¤œ¨Ÿ‰RÿÒÿÏCœjFãZÿÔÿ§ÿ·'üC“÷‰'Õ† vµëEïz’ÓWó l Ä © fö«…}xN8;ktHÀ:ˆÔ&‚ˆG*þ«"À¨æ/P;ØUÿ_Û0LípÔJQ«+¬ü$ þû÷íÞÓÁ©‰mN%ùùôèÔ¾¨£§ÀÓü6s¡»ßàÞš4º\'ÿäÿï#%wªM£ÿçÿ]ÿmÿÄn÷EYYuãƒ=×2QŽ:ûg­‡ŠÒºŒ;÷Ýx€r_¸-¯ S–Ûj0-í‰!9„‘Tøª‚®ûQŒu7ÍsA >m±ç#ùàã[»}ã([h|wpL(ä˜=ß™aRGUVqžßGf_^+æ~%¾AÿÝÿ{ÿzÿ¡¶ ž ÿ‹ÿ=ÿqÿßf³»œž×vBö>hÛmí^Å+¨~¦¼“M$U@YZ^%ÊIáwéM¼†}°ÚÒƒ4W¹øÔ‰[‹þ–+ºfGT¨ûO ´©i)ûÍùHô˜e7ÏZÊí  ×‰óPì{*& :De–Û3XT®?âx‡é,uÿßÿóSýŽža©ÿØÿeÿgÿïn¼¶}Gƒ4ˆ¹é"ƒõR£ñHµvŽk@dp›¶¯d šJø”$¬QïöÿÕ†k DbP‚ëÕïñíÜà^¼ @t}iUL”í±Ž Ÿ Ž ‚ N Ÿ Ø¿h ÷ 9 l “ · 5 ß ú  ] › é > Ž  ÿ ¶ Ä º“¡ã*‚Ü3DS¹>Bf¯ôÐIÿÿ ÿ ÿaÿàB\ÿù@ànÔeÇ+u—³ëKÌ(<(?ýØ| ¸}LªQ ;D?).?£4Ú*ŸDiÑ3 N Ý E t Ì 9 ´ " € µ Ú ù * q ¥ xE-^”¹¿‡SéŒß"Êd,Å=n—¶È;á /Ÿ ›+«^gÎN}ñ ¤ Z M O fsb?¥ŸÇ¤Ñþs²ÿÄvÕ³Z*Q²3‚­ÕJŠ€x©‘Üìï†ì&†"å¹V ÿï_¤°Åëpèâ¯þÇ Ú Ä!ªTö³bvÐ B©:¶w&úñô¯3ËKÜ ' X *ìŠ`ýez•¢˜êr…Šøo6ꌹ¦TK|‰¡Ã! † ( à ž0¹) 8ûÚ¬(d:3ÿ¯ÿ‹ÿªŸý7T^>G–Џ¢—Zù’”Û›JƱÈ=¸G“#ì< 0 r ø ¨üÅWb€{-40°4~À‚O Q!"•#k$$¢%Z&&Ó'e'Ò(3(¹)O)ö*^*œ**`*#*)É).(''0&#$ü$+#“##N#“#ë$½%™&½( ))¤) (>&}$æ"¾ êSØatΊ8° × í ÌêÍ [Z؃aý¨]pÎ))⟗ķ´ÒŠÀ¦ ÿ îÀ¯9úb¯t.|õÛ¦”P€ øÖÇÝ š¤ ß"=#^$´%­&k&·''A'}'ÿ(—)ž*Ö,--¿.0.‰//Ö01<1Ä2^3#44ù5Ÿ6665÷65½53ð2Ð104/:.ˆ.Z...=.è/œ0¤1ê2Ì3e2÷2c1/Ù.,)g&¨#“ k¡"H‚î=_3S Õ ô 4 Z %ŒÏcYß`ùI×Åëè¨'ÿÇÿ¾.PQ\£ÓÏò*[ ¹ Êâ›s1 a â 7;À {â·î#&&(f*,-ç/J0¨1T1À1Ã1æ2'2m3 3Á4Ë5÷6ÿ7Ê8+8i8º9N:1;;ý<Ê=©>¬?¼@ÚA›B(B?B^BEBcBAa@%>ì=“<+;3:‹:c::::ž;";â<Ù=j=ª=&>ë?îAAòB§CCpCþDÍEìGHIJK KùLöM—NNN)MüNM–LæK¨JbIGµFäFbFdF*FKF“G6GÔHˆIsIÅI¶H²GFE CÇBp@l>J;i8Z51í/,G*(@&Æ%#,!׺Î?ÿ„ Œ | 7×CÒ²¶e>/ÿËÿ¾ÿùÿÓÿ§ÿÿ½ÿõ%¤"&λ|æü4_(Íñ3 ß#q&V)\,/Á2½5Œ8%:Ñ=z@}BÖDµE‰FfF»GGMG£HHxII¸JšKL{MBMçN€OCP:QWReSQT+TÚU’V!V¹W WDW4W&VìV×VaU°T–SxRfQZPËPtPPrP³Q'QêR¡SPT0TeTAS Q×PBOMÏLuJ¯HáF‰DA?>‹;Ã8É6+3Ü20v.Ë,ö*¶(B%·#r!H·±ŠÞbIJ l aØÛßw=ÿû/4+†($›!õq “s—ó1!<#W%í(m+(-¹0É4Y8;N> @ˆCEúILLNP'P¯Q}QñR\R«SSSÑTÅ;ñ8ë5õ3H1.â,¯*'%Y#2 ì ×LóÈ Æ*t÷ çBQ>ª;\85…2Û1\0040x2.3þ6Ì9´<»?0AÛDäH LàPŠS5TùVùYJ\3_a‡bâcÇcìdmdËeeIeœeÏe¼eËffÚgÃhÅi­j7j™j¦jÌjÃj¨jzjVjJjTj`jXj7jiéiÜi®iphàhg`fÜf¢fsfIeúeœe0eeecee¼e×ff~gg¿h[i i4i!h]g³fve3cSae^ú\{YáWrUR°PTNK¿IQFwC[@6=3:É8È6ë4¢2/¥-*©'¡$2 (4Lj È?|ûUJ¥GPDXAe? <ˆ;$9÷:X:¼<¦>ÙAôDïGßJGLýPPTX[&]W^³`ubhd­f¿h¦i§jXj`jšjªj¹j¹jÍjËjˆj…jÖk’lMlômm²mÌmªm”mrmGm5m7m`m“m¿mÛmÍm¾mˆmcmlˆkÂjØji^ihèhÖhŸhahhh"hXhqheh3h&h@hÌioj[k_l"lºl±l¦k÷kIiôh•fžd‹b;`]ï[°YWW T¢R;O–LËIçFæDvBA ?T=-:Ï7ö5`20.À*‘&B!ÒŽ´ÈŸÀ 8 %ÕSP2M¶K$HÿF®EjDbDêEqG•J(MŠP‘SmUõX¹\_ŠbÜe/f÷higjËlRm·o(oôplpLpRp+p oÊo{o!n­n”nÎoXo¾pp\p}p“p€pkpGpppp1pQpnp‡p„ppNp%o·o9nqmŽl·kökŸkqk†k|kxkjkyk°kßkõkÃk_k jÕk)k™lŒm™n³o¹pMpÖp¯pzoŒn’mkti¤hf2dBb_ü]º[wY V’TQFNüM&KÅJmH’FYCS@|<ñ9T4ä0(+6&ˆ"O s<ræ YW UNæQS…VªYf\^”a/dfµi(jÈl4mmÚn›opvq¤r_r°rsrer"qàq]p³p oyoPoZoŸo°oËoýp?pƒp¯pËpÃp´p£p£p®p´p¼pËpÐpÖpºp pHoão:n|mµlîl‡lWl‡l¡l×mmDm¥mänmÅmVlÍlUlElNlìm¦nµoÃp©q‰qÔrqypÔoªn…m7ljÅiQg›e÷d#b;`7^D\QZ;XhVÏUŽTSQANrKƒG°Cÿ?Ž:Ó5Ï0ò,…(4$… àÅ»èÅ^]U\/ZÂYfWøW@V¬WPXZ \+^ÅacbeÕh(jklBn!o[pvpäq qLqÊr“sŒt(tRsùsÛs}s rPqrp¬poào»oÄo©o´oÛp/pŠpÔq qqpõpùqqqqq q'qq pÂpaoÃon}m×mmym¾mën;nnùo‚oÍoño“on^mµmfm.m˜n"o&p)qBr_s$sàsßs©rÆqÝpÊoöonlÂk‰jh›ge¤dObâaš`k_s^º]š\[YÑVÛRÌO J¡F A;Þ72Ž.¾*ë'–$J!6æaµa`[_o^w]m\î\•]8^ _Ÿabäd·f¶hÓj¯l?mop7qqpõpèqcrEs.s±sÏsxscsrŸqÞqp9ošoMonônÕnòo!o†oýp^pŸpžpŠpnpqpŒp¨pÁpÏpÖpêpîpøpÀphoÐo5n£nmÙmÁmñnnEn•o o oöpoºoBn™múm mRmŽmän¶o‰p–q¯r¨s«t t,sŠrÎqÔqp]o“n³mÜlçkÓjÂiÑih-gof¹fe¤dÜd1b:_¥[ÐXCT0P4K¬F¼AÝ=e9¢5ó2­/I,(Ãd¦dod&c¥bïba¢ahbbßd$e fEgÑižk`lÆmÕn²pqq…qLp÷pðqzris;s¤s¿swshs*rårEqwpoºo7nÓnÂnœn¼nço]pp„pÈp«p|pMpJprp—pÀpÚpöq'qFqeq4pæpEonén8mÎmƒm‡mtm£mçncnýobo“oNnõnvnmÅm{m•mÁnqo8pOqdrhspttwt;sÜsrcqªpúpcoæoan«mþmxmlºlflk½kƒkjÿi³g±dMa]_ZV3Q¦LØHpD§A=Î:96¾3IfNfIf$eÌe+dRcÝcÉdyeAf=fÊg©ij´lmnnØp&pûq+pÐp”pÇqjrVssns’sos{sisfròr2q)p,oŠo)o-oool‚mDn%nûo“oÒp p)pwpžp©pWoÊoRo/o]o„oœo–olo9ooo:o[oko’oHnðm²liùh}fÝdùb‘_ú]g[PY)V—S½Pækäll"kÍk=j”j‘k;lDlÎmmLmµnmoJoÚpyqnrIròsr÷r®rr©s sštt?tWtttéu2uFt´sØrÓrq¶qkqNpÿpèpðq]qùr†r×rÀr•rKr r rzüzsz-y¡xÊw¼væv u[˜a­fâloôsøvnxªyHyìyNx¾w uërîo]ižc«\´UäOSHþCd=x8ë4¨2u0‚0@/ó0‘0÷22Æ57ÁË9²52O/X.,ê-+-t.K.Í/«0‘2<3ý6³9#=A”GÂN!U[²aÄgÏl qttvw8x xåx3wˆu¢t?pÜlÄfI_—WýP«IÍC)=T72d.1,I*˜*…*H*Û+T,W,ä.Ø1S5ñ:Ô@ûGM%SXŒ^Pcwh·lioœqrdsEtÀv\wùy yàzz6yøyÑy/x7w5v¯vGuœtÇsÌs.rûs#srörÛn nco>pAqAqôrhs sisƒsrsƒsËtUtµt«tetlt^t`s¿ríq,o©lÑi´dé_ûYÒS´LþF?‰8÷3ÿ/ƒ,ù*G)5(\(®(ø)”)Ô*T*ì,8-z/Å1â5Ï:/@˜G1N¾V8]Td^jožs v+ww×vñv#trŸnëjQc[uSKC¼<¯6±04+›'•&!$ð%U%v&6&å'ã(W)û,0g4ÿ;AGwMŒS‰YÎ_‘eaižmkoYpöqëswuv w®x…x¥xºxpxTwêw6v~v)uãuqt¶s¼rûr­r³rxrHr n nDnòoÊp«qQq¼rVrrfrrr?r¬ssr×rärësr¨rpvo l+hÒc{]ýW9PIoB;d4½/ï+)I&ô&B%Á&.&y&ä''N'±(›)Q+,ä0¿5;BOJVReZ@aúh6nlr.uŠvVwv u9s.qÌn iNa®YÌPûH‹@Ý9f33,•("$@# "S##ƒ$d%>&1&˜'Þ)‡-&16­v>uèuÁu|ut°t‘t{tUsÒrñr&qÙqÙq”qcqAnLnfnço’pXpñq\qörqÃq1pæpïq qWqKq)q(q8q~qOpôonvkvgéb\TØMµF0>t7q0Œ+°'6%#"²"|##{#ë$($r$Ï%|%Ú'@(¶,n0Š7;>5F¿OOWÈ`fòm×ru½vŒwNv8uesQqÖmøi)a~Y£P¹H@81d*„& "! D!!ˆ"h#R$:$Š%&È)ñ-m2¼8->qDPJ‹Q6W·^,c*gÖjtl¢m­o+pmqÉrµss¹s´sRsrßr¤rrŸr¶rÕrqªpÕpp›p`pBD–KXR6Y/^ïd~g®j4jëkïlrm)m©n3nUnJmím„mOm[m³mçnBnñoFnánln–o2o¢pp—tŠtsMr‘qüq­q[qoün`lžkIj¥jji»iÃiêjtk&kÂltllió7{0*·%£#T!•!§!S!…!±!ò!å" "#®%¹*f/³6}<™C(J Q X*^(d gj=jõkíl8l¶lømHmGm!lÆl\lAlvlýmCmÁn¯o\oOo o|p4pËqir u–tísør÷r&q·qHpºoym­kÏjhi½i&ih¸hÔiiÉjŽkIl-llOi§eº^÷XÁQ0IOA8ó1æ*­&"d!x r Ç ñ!’""¹#]$0%&&ç(E)Q,?0"6;ÜAøGŠLÇRAWk\î`þdGeÓgehqj#k,lMk!i~d¦_EWËP°Hî@ö9y2 ,‡'?$¨"˜"v""P"["""¼"š#Ú%i)£.¦5m;”BHI6PKWˆ]Ácñgµj²kl†lµmmm9mlËlqlll{m)m‚n o=p9pˆp¨q7rr²s_tvSu‡tds3rEqÐqdpÃojmk¥j,ijh¶h€h#h>hi:iýjÌkÖkûliiûfR_¹Y•QöJ AÊ9»2µ+l&­"Ö!Á à Ù!m!Æ"h#$8%J&Å()*3+ó/X3­9[>ÐCäH`L\PµTçYo\À_4`kaÊcJe„g{iiQh²d¨_áXÎRFJõCh;û4.¦)&'#¿#h"ô#0##2#M#‘#U$7%K) -À4j:mAGãOV^\íc€g¤jëkÐlélÿm@m mlÏlllk½këlkm@m°nko¯pèqqår§st^uuÛvCuotZs8rtr3rqŠpNnšl½kEjfi”i9h»h¹hÝi}j%jïkùl;l¿jg:`û[SšKÙC°;¸4²-v(‘$t"í!J! ì!a!"4"ï$S%·'Î)à,¸/O3N8>=ÜC G(J®MyP»SÚW7Y¡[>\1]u_Ka«d fÂgŒhdÿ`úZZTWMdFN>û7g1+ '”$”#Ø#%#l#\#•#â$P$+$ý%ö)”.94Ó:µA;GìO Vz]6cúhBkœlm›m­mçmÀm®mhlþl¬lnl²m6nnfopVqœrSrãsËtÐuÀvwUv/uatksfrÔrÒrÛr–qsoÝnl„k„jjiXi.i1i»jFkll]lïjñgçb \…UWMßEÐ=Þ6¾/‹*„&$ "!{!!^!s""Ä$Q%ü(¨+\.æ2 6“<AµF¯IúL¬N`P›R¬TÙVjW]XAY–[Á^,`ñde×g‚ežb{\JV«OÝIAÑ:34,¡(s$¯#i"Y"§"£##›$:$5%&*)å.·5t;gAðH¨O×W\^3eidl¹mŠnn°nînÖnÖn¢nCmômÆnnoooFo×pîr.rìs t©uÔvìwÔx±uÐutYsˆs4sps±s¡r¡q.o_mêlßkàk@j}jv~w«x¥y”u”tïtUs¨szsÛt9t@sTqüpDnâmßlçlKkkUkKkÉlDlòmán/nœlÖj/eF`ÛZåTŽM'E“>€7Ã2Â. +'ö&Q$Ã$q$$¤$í&£(Ê,…0>4Ø9(>@DJI°NKP†RRRvRÇR¬RŸRìS7TŠVAXê[i^Pa¬dNgfÑes`k[TTHM‘F >'6¯/i*"% "À ü!R!s"\#$$&L(O,î2s9—?òF·MËU\wbÂhýl}ooKpp p/pp oìo¢ošoépqpÑqpíq2rs:ttçv wRx‡y‰z†uPt²t.s–s}sëtTtks“rRp´ogn~m¦m0lžlƒlŽmm©nho`o±pnllg¨cÏ^‡XßR JýDD=û9$4s1"-³+†)`(‡'´((3*,^0w4s9Z>#CwIzN‚RÙT¶V;UÜUtT~SSsSƒTðV«YV[È^a·dHgg+fub&]„V P H–@Ü92R,ô'²%(#8#ƒ#¡$ %W&'E)c+Ï0¦68=;CJEQZXb_„e8jÍmœo|oUo¸o˜o„oAnünÆnun­obpQpâqqqTr?s—t‹u†v¯wâyy÷zðu tksïsds]sÛtWt‚s¿rpþo¸nßn#mÔmjmmm„nnÎoµpÄq1q¡pFnPj–gKbž]›WePïJŸDÄ?ý;;7†3Ä1.i-+©+Ð+Á-É0l4î9,>eCÃIxO—TIXRY­Z¿YÃX­VêU"TMSëUAVîYƒ[¤^ac±f½gug_cÁ_ÂYbSSL(D©=V6;0Î+r(¹&–&Ä&Õ'ô(Ï*4+:-Š0'4÷:bAG3M¯T•[Pbg8l9nho©oonªnUmâm\mlµm/nOo¯p€pÍpÒq;rVsèuv2wjx‹y¤z€{ktºts¢s s/s½tWt®tsq|p>ornÏnnMnZngnõoµpµqÊrKrÊq¿pAm/jhfSaú\‡VâQDLG•C?5;a8}5”3Ü21ì1­3Â6€; ?SD€J OÊUºZ]Ô^é_«^m]8[HY%WØWXYS[k\é^Ða5cÓfçhhleŽbn]WÐQHJZCa<«7y2W/¥-q-|-x.¢/ž112_4±7R;Ñ@ÀFÇLTRFXª^ÑdîiUm“o ošnvmýmXl¸lkSjõj—kJl¸nmoqoßpp¨qüs¾uv@wxxyz>{ tksÚsssGsõtÀu[tÿtr¢qup®poæo–o‘o‚oòp£qržss•rÉq®o=lÿieàa/\UWrRþNðJ«FÉBå?Ö<ß;8õ8{7ø9÷<ÀAvEžJ¢PU[_ bcžd)bÐa±_Ø]ª\![,[¹\^^Þ`,aùd^gIhÞi±g·eŠa \—VžPUI×C•>—96ß4ž44z5£6§8S9Ÿ<>ÍCGœLìQáWC].bÊhDkáoHo÷oÎn-mClck‚jÀiÓiriiûk m‰n§o$osp-q¢sxtãvw,xyy­zfsþss:rîs?ttðuÆu¬tôsœr’qÜqVq!pÍp«p{p¾qCrrçsLsràqëoænkÜ@‚AØD?GKOS®X\Úb.gkÆn…qpõp,n4lðkâjÐiûhúhœhQiCjïlÔmån\n¹o…qrËt$u%v9w wÝxhy sur÷r¾rrýsÊtÎuÍuåuQts1r™r-rq¹q‹qGqaq»rassgsrÍqÜp*nµl‡j#fþc¥`V]‹ZñXUQÇNÑLJAHSG˜F¨GÓIÍM”PÝUY–^LbáfSi±k kÚkj±itg¸fdàd}cód def1h j@kÃlÙkùjêgÜd­`[dVQQ@MHäF˜D«D¡DE¿F¸H^IÈL3ORØVcZW^Nb¡glk‘oqqErÒrp¡nUl¸kwj.i9hg³glhmj&l m mrmÑn¨p*qís9t$u&uåv›ww£rñrkr(qÿrnst uu4t¼s´sr›r`rXr0r qÑqØrr’s$sNsErhqaoÕnlÝkh—eðc\aA_b]i[XU×SBQgO­ONNÎP4S6UÓYq]ƒaàfiGldmÁn¬n%mùlØk0ihh8gœf®f{fg hÆjrlhm²nœmÑlßj;g†c‘_z[V‡RÚO_M‚KÛKÐKÙLíMÖOgPØS(UÊY\2_«cVg@kqnÊqâssàr«pún•lÍksjigégg:h8iãk¯l“lémIn'o¥qZr—sntcu u—uÞvYr’rq£qkqÀr=rþsãt+sÍrúryrPrQr}r„rzrZrcr¢sstsxsLrlqkpnôm®l^j»hàgedJca‚_§]dZôX÷WQV¦U²V(W!Yz[v^{beôiºl’o>pXqp²p¥o¦nl9kj†i£ijiyjgkUlÈnžoÜpœoÝolõjÀgMc‡_m[yXrU¯TERÒR«R¯S®TVW‡YÀ\^éa|dzg×kUnàqlsÅtLtžsq*n¦l§k+i¾hÅg‹gfÑgÏitk7llflÚmÖoiq#rds0t#t­u uuarLqÉqWqqDqŠrrÕs)rìrZrrrQrªrØrårärôs6svs±s~s'rGqWp)omúlûkøjÏi´h¹gég6fReWcÄa¼_Ò^Q]º\ý]l^7` acÚfºjm3o†qŸrMr·r'qùqoomÄl³lKk¯k«kÇlmWn¦piq¥rMq¦q$olmžj–g"cv`]Ã[¥ZYGXóXËYƒZ[k\Ò^¹`‚bŸd«g:j.m/pqþsÓt&tOréqnÒlõk˜jVihagøgÃh·j8kÑl‘límrnwoöqrÃstdtÄtåt­tÌr=qÇqCpüqq1q™r5r—r€r1rrMr´s)snssŽs—sËsÜsØsjrærq-p*on$mblëlklk¶kskBjýjÞjh‹fÔeed£eeµfügöi§kÒnapÕržtEt¯tÁsösŒrqoncmÉmm m/nnÙpq»rêssOs;rp­n&kVhheÓdb_al`W_æ_ˆ_Ý`(a!bQcÑd÷fVgÔiêlXnÉqresÆsôsür¾q'o0m™lzkujÉiËiqi`jPk¢lûm™mñno€pÑr5sSt täu0u0tÛtðq£q€q*qq@qgqÈrZrÍrêrÙræs's–tt=t>tAt)t/s÷s¢rérq+pVotnam„lÖl¤l€l¦lÇlîlômmtmdlžkqjƒj5jjÁkoltm5n^oèqµskt«uív*vutis`rpÁo˜nánn n(ooßqr}s‘tatjtšsÊr¥pŸnl|j¢iDgógf!e’dòdÛdâe€fCg'g›hOiTjúlÌn¨pYqxrŸrßr÷rpõonŸmúmUlßl(köllômünðo`o ppÞqÀr©stt’ttDs¹sªqqOq6qeq±qérIrÙses¾sîttatÑu+u\uEu6tét«tsSr8qoÜnðn0m2lköll'l°mDmÉmõn@o)oÓoÜoKn±n|n²oŠp_qAqÔr~syt‘u“vCwwv×uõu7t5sr q(p£poêoîp‹q2r3sIt=uu\u•títr‰q.oçnµmÑm lik§jéji‘i€içj=jtj8jMjálmRn™oÌp®qšqçrq}pÏpoÆo¦odo"nµn­nýo¹pmpòq%q>q“r rxråsts»säsxrÍqùqµnÓoÌp?pñq‹rr—sBsãtstÊu u6u†uµuÍužuyutŒsªr´qboén—m–lëlkvkkk?kÓlŽm5m[m n…op*pIppp[qLrZs[tttuuÀv^vÁw*wvív@u’t¡s“r»r$qóq¦q£q¢rrƒsTt?uuàv uÿu:t`sFrMqwp§po£o)nsm”l—lkôl&lk­kjÛk$l lÌm¯n™oap&pzpŸpip.ppPp—p™p‚plp›q qžrrDrWrNrur€r\rr#qÕqEpn·mIlwlqn2o:pnqKrr·spttÄu-umuqu˜uœu—uZu(t¤tsrp´o!mÂlÂl'kNjËjdjƒj£ko¦pEpÌpõqq>q¯r9r­røssssrÁr q0p¬o¹nklljPh4fºg†j8lmÜo)p‚q{ros sñtit¸t®t²t‘tyt@tssr@qap5nÙm¤lÄl7knjíjj¤j±k%kÓlylªlÙm>noQpqqqqqÏrˆs·tøuèvTv™v·w&wzw¥wswDv¾v6u\tEs_r½rÁrÞs^s¸tOuuçvùw©xw½w3v=uqt s»sr¦r\qùqMpgo}nÎn`nm—l»kÏk jÈj¦j÷k=k¼lMlÑm2mamwm¯nnÊoƒp p5pXpÖqyrrZr™r§rÙrÈrÇrpØomÔkùi±f¬c˜`˜^2bwf h±k2lþnûpbq™rWsLsÛtHtsÓs›sys6r»rqŠpæp2oDn>m.l(k`j§jEiÖiÖjjrjÆjÿkk-kCkÂl™m˜nXnÊo odp.póqhq|qq†qÜq®qlo¨mJiÊfòc7^éYÐTÈPKÑRDWb[~_ab›fMi4k¥m&nÛpq;q´qØq‹q…qzqvq?pðpdoÔo5nnm©mWlülÎlŸl´lëm8mim{mwm‰mŸn(nÛpq*rts³tØvváwÂx!xbx'wäwqwv·v[uïujtòtˆt\t;tYt‰tÅtÝtìuu7u‚u¹uáu²uZtØtgt&t t sùs¾s|sr¥qãpäo¡npmnlƒkäkAjÝjljOjXj–jÁj×jÉjÍjÒkVl=mImündnºo&oðp›pùpåpÆp‘pßp…pm–j{eùb.]oXRL&FÀA¢GàM:QÓV(Yû^KaçegAi„k.mn!nÁnÈooYooo‚o8nÞnlnm½m^m(m mmm/m{mßn+nKnCnFnanàozppqYr€sÅuvCw w®w¼wÏwivîv:uŸutisÁsr>qupüp¡p¹pêq>q^q„qºr%r©s;sÎttsêsÎsÕtt8t>tt)sís™rµq’pIo9n~mÕmglìlŒl"kåk¾k¼k»k­krkOk6k lhmQmÛn(nnâo†oçpo”o nUn>mTlhÈdÌ_UZ‡TßN¥HA®;ô6L=zCGýL PÞU˜YÆ]˜`ucGeˆh*iøk=k¿l”m m“mÂnnmþmÄmmkmlûm m{mªmãn2nnîo+oAoKoZo·p7q qÐrËsÜtþv3výw–wwpvÅuÿtÞsÏr²q˜p”o”nÂmÛmZlöm#mkmún[nÙogppÝqžrirês2s?s_sžttmtªt¸tñtÈtnsr˜q‘p¬poŸoUnýn”n mm3mlÝl©l2kÚk£kþl¬mvmÚn nZn³oBojoSnzm}l/kœiýgæc…^–X(RJK®D”=\6‚0m*:27Í<²AAEˆJ2NŽR¾V/Yi\8_ˆb(d5emf÷h hîiwj*j­kk\k¥kÂk®kÀl"lºm2mmØnnZn’n³nÈnÓoo’pGpäq’rAssðtˆtêt•t=s>r)p©o6m kýj{igöf»feeÕf8g)güi!jZkÁm(ntoÄpªq[qµrrŒs"s®t't]tœtqtswrérYq¿qVqpùpÅp`oÔo=nËnwn1mÒm-l©lWl‹lümzmšmm²mÖn2môm_kÓj1hf´d`à[xUºN·HA9 2o+‰%…O'Ÿ,—1i5ç::>ÔCVGÕKÀOJR‹VvYÖ\‘^u`´bfcÔdÑeõfùhhãiÓjwjÛk.kÇlm5m°n nn!nnn.nOn©oo£pp‡púq_qçrqíq6p‘ofn!l|jõi)g@e-ca/_']ø]]a]Ì_`Obcöf7h‰jÄlön‡oÙpqPqçr¨sCsÏtt'sõs¸sUsr²rEr rr8rqÀqYpÜpyp o—onBm±mTmbm•mÀm—mNmqqÛqèq¶qžqYq p„oðo9nymÞmfm'lûl°l#k{kj˜jZifûc¶`º]&ZU~PMIuB¡;23×,Á%Ñ8ÜfõlB#&'+I/Ð4(7ê;?ØC÷G¤JµMùP®S.U0W9Y.[H]Z_‰a7b‘ccd[e"ffˆfæf¸fpeìeee+e-e“ff`fff¸fŸf eÍd’b`´^ \‹Z„X VÊTÝRâPàNñL½KXJIJ¢KL¬N1PÁSsVøZ¯^WaÅdLf–h ij³kûlömânhnÕoofo¹ppRp—pèqTq¯qðrrd@½CDE²H&JtLåNÐPmQvR¡S~TwTëU.TÞTTS}SRÊRÐRùS4SPS2SR°RxQ^OÜMTJÔGåEB ?N<Â:'8654Ü312P1¨2=2Ö4¥6w9i =Ì=p<ç<‚ìB‚EðH¹K·NP[QÌSSÑTÐUýW?X»Z@[Í]a^©_ó`a`»`z_—^¦]:[ûZ*X)UR´OÑMHJÄH7E)Aá>:´6˜2,Í'ƒ"îÞ, ¡ ü[xÏVm¤ÿÞØ;U u :}ÕWH«£Ö o"R$e&µ(î*ù,‚-ø/0#0é1®22S2#1È160Á0ƒ0o0s0b0$/Ë/\/#.·.H-$+°)¬'Þ%Ú#¿!…W;3SÏ1{óc ζ› i$O(°-$1O5C8u;> @´BÆD¼EÿGGìHüJOK¢MKOQRïT[U›VV¦VpV5U/TRYPþO LºIÔGD7A¯?<@962¤/s+Œ'!"?¸G¯P ˜:̬ïÒüÄ„ÿÏÿïÿòÿ»ÿá~tະ p ð¸Ë6“4eÅô!z"¯#k$p%B&&k&—&6%½%)$­$$ƒ$³$ã$Ã$`#´#8"š"! Ð,x O§ñ+1  x ô L   ÿwûÜN;#2'*À-ß0ß3B5½7¤9:¹;¾<š=¡?@wBbD‹F´HºJK;K¨L5LKÖJØIÓH%F™DKA•>‹;÷9b6¦3¡0{-R*…'ƒ$L f#Ý,² ¥ÿvo ĦÿûNDÿÞ0[ÿÞHø5‹  Z&c E s S±£¹l‡¨,$‡8Ü¥¢#“ñê+ˆ§~ç`©(ûsúƒ"Ú ‡ O  Q÷|H H„  ’ w^ø½æ. }#o&5(p*¸,†.Y/ 0¯1Š2†3Û5H7-9R;_=+>N?_?Ú@u@o@W?}>¯=;O8Ñ6(3e1'.»+Í(›%ž"â vÇ—zO “ ÿ±î´Æ ß0ÿæ,‹Tÿ“\ ÿ¦ÿ¹ <P$=Í—æl= N‰  ì N .È¿ä™f3Ë)ŸX(W¦K:€ò ú í › E Ùæê;»nt^bV§FúIš ~ a ÌLû¤6!"î$^%“&˜'Ä)'*‘,;./Æ1E2S3j4!4ð505s4½3Ù1ë/Ó-P+(Ò&œ#ã ”ZÛÀر ® 0 On˜(gvoÿèÿ®ÿÉC‘4ÿ|ÿÝNK ÿÜÿã6p!ÿÚ}Å ¯ß3 j” 2z k k  " € î  ð t °b[_° ( Ø £ QŠËÐÊÈÜ[Í<ýßùü+=“ùÅÂò« ‰ ÍMGΕú21S} œ!Õ#0$%Ü&ý(&))é*=*¨)ÿ(ó&ï$ð"Ö!<[(ƒÄC ‘ ÿ °Êr„¤h–#ÿÑÿä8…€ÿ‹ÿ²XNÿäÿ˜ÿôOÿ¡ÿ]ÿoÿÌÿ¾ÿŒÿå¾SCïöpAÙêtûÂîZŸ¥Bø«N8V¿0~©{LØ[Â6±ÿ¸ÿaÿUÿ[ÿ„ÿÿ®ÿ¾ÿÂÿ¸ÿÄÿâ/oòoošBæ° _  íš/PX°CÁ–‡ôP*ú &Lg¥LG—Ö £ 5  Ö¢}ôUõžœ›ÿøÿé:ÿÃÿuÿãt‹=ÿÝÿÒÿ°ÿÑ?}ÿ²ÿçKmBÿÜÿ¬‚aÿ¹ÿôÌ¢ç€×}Ü“ õjÊ“Û=¨éÛÊpóz PÅ0ƒÃÇÉ›n¿n6/.AKORG-0-Ppú«ÅÓhÊ < l |  ¹ ú  5 H îåq~´5«o.Z]B¤´[ W ü '³Ö†©Rð=/Åí;TKÿªÿŠ ‡]ÿíÿÆ$ÿÉÿ¡‡Nÿáÿ¾ÿíTƒÿ§ÿ¿dPÿ¸ÿOÿŒIL´ÿÆÿCÿjÿù‡˜)ÿ¢ÿGÿ=ÿ¤€Î·ÿ~ÿþ¿þËþòÿ]ÿ¿r¥ÓÙÖÁ¶«‘‰ƒ{lT=4*ÿúÿí+Ž2Ãh¿Y´û '(ÿ]Ný o T ê Î ¶ a 3 ê ¢  }ìhT(äqL¡R1™ÿö>…BÿØÿ¦ÿÊ6uÿ©ÿÇSÿûÿ«ÿîQf.ÿËÿ¦€cÿ½ÿÓ`Ƀÿüÿÿæà»Û%4ÿ¦ÿÔ“=dýEÿÎÿÖ ·1p iŠÿëÿuÿ+ÿEÿkÿà Z Õ+@7- ýïáÛÙÚÎÏÔK¢ê;0͆P)5$‡&:cdBub🅪ݰé·hÜ/ïOÌY!Âo¶=‰g—ĵ9ÿÑÿé8Y;ÿãÿ«ÿíOÿÍÿÇ]xÿžÿÈ9‹|ÿ÷ÿ—ÿãrÆÿöÿÿ㺎³",ÿ‚ÿŽà2ø‹ÿó%iÇ<SÀDÿÒÿŽÿbÿ{ÿ›ÿÚ@¾ñB`}€y`L8$ Ê8ÿÜÿƒÿ$ÿþüÿGÿ‘®:¬ÉמC+”K/q]ÿ¢ÿp&Kÿ½¿ÿÖÿ¨ZW°bÞ|»ù‘ÿí=•hÿÑÿÖ1ÿÖÿÇ.ƒPÿêÿ²ÿÙd¶SÿÁÿŠÿÜ•¦ÿòÿyÿ»¦Ù:1ÿjÿ`äbeçv,Mv¶8[1é€)ÿøÿ×ÿÛÿÒÿâÿú-`¨ÿMŽŸ¢„lO1 íШNÿßÿ¹ÿ³ÿ¡ÿÇuøY£€1³JÿùCÛ|øÂ3ÿVÿ]0b1üøÿöÿÑ€Ð#àöJgô]?‹¯Tÿðÿý.3ÿå>[ÿ¹ÿôU€SÿÕÿ“ÿÿ‡˜<ÿ«ÿ}À °ÿîÿnÿœneÅdnÿ¥ÿyÿÖœ.W:ס}PKZ”Ù  þÒQ$ÿýÿøÿ÷6tÃNdn\SA/ôÌ—b<&ÿþÿñÿô._ Ú ÛeÿÜÿwÿ>ÿnÿ±$¹ç®ÿFÿÿ/*¾Žÿ¨ÿ:UçÇIØ~«gÎNSœ¶“,ÿï4TÿÌ7ƒWÿå n”"ÿªÿ°‹¥ÿ™ÿš Ý)ÀÿôÿEÿfOj™¦ÿ«ÿBÿ°]l] ¥CÿôÿîR«ïÙ¡}lZ\_zŸÉíüùøôóåЪ}U..Eu“³Ü*9K,ø™1ÿäÿŸÿ·ÿøsô6^ô"ÿpÿÿ¥ª¥-«†ÿ†ÿUÉ©Íísׯ#±©×¦S#w«dÿÑ*Žªq ÿÝ,„g ÿºÿ¾6 ƒÿ¯ÿ³7Ñ¿ÿïÿ]ÿwGBšÄÿóÿŠÿ™4Ã4ƒd!©DÿËÿàxÐÿõêÓ³›š§ºÍÐÉ·¨žœ–‚l_]P]~·îHRY1¯O ÿÞÿï@šâîÿÿÿUÿ?ÿ±œ‡Åcrÿÿcÿùñzo®âbÍÒlçÁÙõç‡46t¯²eÿü#nÈÍaÿðÿí0rrÿ´ÿÜFš”$ÿ¼ÿ®Ø5äÿnÿgþ¼±)ÿŒÿÿÞˆVgã‰ÿØÿÀÿüB–ÒêûæÍÈÑ×ÜäÛž~ldg^bv“Ÿ­Àà +?#ù®]ÿäÿñ&…ÎõÃMÿºÿtÿlÿýᄨÿxÿq!úw<¯y»TÔâ‚ã1¿`=m´¼“d*)K°à¡,ÿàÿèBˆKÿëÿÇÿ÷]¦’5ÿÎÿÃ5ÈÔ8ÿ¯ÿÿüÌtpÿåÿ®ÿÿmç2.&áŠ6ÿûÿ÷ÿý*[‘Åßèäó ëÀ‘megx}†˜­½ÈÎÙöÛ—R!%3n»øæ™,ÿØÿ’ÿÆCèvmñ6ÿ³ÿÂ9Û-?|©Ü®I'\f˜PX“ʳ~uJ<8v¬¸{ ÿÍÿýRg@ÿúÿØZµ¹Qÿáÿ¾²"%šÿ×ÿxÿº†FfÆ9ÿý p¹èñÜ­|J4`®Èé#丢²¾Á¼³´³ª  •{J6FˆÑ 2ð RÿÍÿÙ–,d?°ÿÖ´08ÒNUì†À—a8U}‹Qßz]€›¨ŽuŒSRD[~¯¢@ÿæÿàXj9ÿúÿÝq¼£GÿóÿðCÇ5"›ÿøÿ ÿÝcpZ…FNh˜³»Ç¿¶–jC,16Qp—·Õô /4 ûçÝÍÈÑÕĬ¤š…iK;2=AbšÛÝœRÿìÿðA¼Dýÿâ(²'<æs7WÑGŒcPXˆ›w²tx’|pzž=Y_\_Žžp&ÿðÿò%_h=ÿ÷ÿÝs³¯z8@Ã/GÝ=ÿÊÿ­"Ð^‡9é™onclx­½À©ŽnMDKi|—·á9B.(ó×ÔÓ»›ˆv]B"?o§ÝñõѪwF+ (rÏ#´2ÿÛÿ÷^çA-ÌdEŠñPmVLNi† ‚8Ú™‡œuVe‰¡Hehf†•„Mÿç@cW!ÿüRŒª³”\MƒÜ-%ÕTÿÝÿÞBîowÄYWTk… ¶¶°•qWLZd}•¼ð+(61÷íßÀ–pS5-+=Ki•·Èº«mQ26J‰æ ¨"ÿàÿú{XXþ r‡ØBE:Kh…•lÌŸ–‡bRp˜ž7awy€|}e.ÿû=VQ=7DOq°ÕÉ›sx¯ñ!ýŠ"ZÙPe$ÉrWX^x“ª½¸©yrv‰“¨Êìþ&󨹔lR:Dc‡–•–€idjjldu¥×åƒÿÕŽ%z_º½æ  5h‹“yjFÜ»¤~eUb”Š Gguqkj‚X" 1\aO@AKn ÅѼ¡Žˆ¥çâŽ</`Ë-SKÇ_Xbˆ©Ã×Öѽ£’’ž˜¡¾åúÛ·—„spgp£›€rgVVf‹” ´àæÇu ÿßÿ÷jíD\$꿺Ùî4Pp†mL÷ØÆ­tLJew{r3Saga[_w€lC)PWMGKZp|Š¢¸ÓÉdv°æç¯b2G‰Ü é¶Š“¾ÛèðèåØÃ´¶½°¯ÅçõÞ¾¡‰†ž ›¢š~\DDJj“¸ËÌ×ÒÐ¥Tÿä fÍíÏÑÞÝÚÏÝ<\cibhZ5ñáάrKKbd\[#=M[\WSZbiZ, =YbWGJ\n‚¾Ãp`}¸áá©]+$Z—Íêá˺ÄáùøíßÎÈÐØÍÁÂÎÛãæàÚÎø­«´»¶§œ‹u`IFKo¢ÕÿüÍN"l´ÞãËÂÇÚèâÖÑá%9DZa`F"þÛ¤oRO][SU 6N[aYJBV_?$Gb`M@Fb€•¨±¢~is™ÌÖ¯d ,s±Üððÿ îÙÉÉÐØØÏŽ·»ÄÍÊÆÍÔÑÇÁ¸­ž‰yuuhceƒ±à ß”@K‹ºÀª¡©ÃÜâÖÇÃÐé÷#J]O,!â¡}o]URNI,EZssYASf[; AbhP8CcyŠš¢±­•w^gµ½•W$ /Z ãGQN5*ýâÍûÀÊÓÓʾºÇÒǹ½ÄÁ¶©¡¤£{vykm}¥Ù÷ÖGI‡©£‚l†´ÏÏ¿ª£°ÁÛî!7NF! &3䫘tQF>&&8Os‚rWV]aS- RveA8Mo“¥¦­ª©˜sZZx­ŸrA,%\¬ ^xrI9' íѾ§¤®ÄÕÙÒÊÕÛÌ·¯«¢—ˆ„“Ÿ•„}~u}™¿ãâÉF#(ZŒ¡gGU—×ß»›ˆˆŸ­Èî@LG'ñ +)ྸ«{G5)ÿý#5Yts\ILSM92an`OHRq•­´ªª¡zhjz‘ —€`8EyÜE€‰_M2ìÓ졪½ÌÊÂÆËÉ»²¨œŠ‡†~€Œ•¥ÁÍÄžtS:Gk—„mbe†¾àÔ«š•Œ’˜ºó%;/  $%óéÝÌ¥m9"ÿïÿú 4MouZ71BZ`?"CdunYGTƒ³¿¯¨¢§¤‘ydf|˜©žxbh©Vv`V8òÜо¯›—¤·¼¹µ·ÃËǸ¯¤•‰‚{Šœ®¹Ç¸^BLd‡§¤}XZ‚«ÍåÝÆ­«¯š‘™Ãÿ(( ý1'ëÙÜÔ¯wI)ÿî !(BSL:4:JSJ;3<Oets_\€¯ÆÂº©¢›‘ƒmch}”¡™†£ã)RU\H,ìØÄµ š£¶ÀÀ¸´Àǹ¡•†z}†–¦®²©£gOVvŽ™œŠeWr¥È×áØÎ¼­¡‹«Ü  " ëÝϾk<$ÿúÿì%%4=>802CSQG?If‚z©ÃËÉ³šˆ‰Ž…vfdk‚²²¸Ö"7LJ>ä̽­©­¸Âž¶»º¨‘ƒ€~‰˜¦±«šƒrlak§¤‰rgavžÅÔÑØÚÝÏ®“† ÎþóÖÇÁÁ®‚K!ÿùÿòÿû*7:/+>SXPDE[x…‹˜§¶ÁÎȱ—ˆ€yumu¯»ÃÔëÿ)4;-üßȲ©£¨±·´®²´®¡•ŽŽ”˜›Ÿžž”mbho€š£tkw€—´Ðåí÷ñéÒ¯ŸÃô ðʨœ—‰h5 ÿýÿø ÿû*8739ERXSNQbz”§­¬¬¾È¿©™„ƒ‹}ry”ªÂÙêöþ+)!îÓ¼¯£¢¥«ª¨ª¯¶¸¯¥¥ª¯©›ˆ|uiglz‡Ž†qiu‘Ÿ­½Òòþç͹ºÂÝÿþëÔ´’xmbG&ÿùÿü  %(29<@LUWSJUuŸÁǸ¡¡ª¬¨¤™†{Šut„•°Íçû"&þïáÓǺ²­­¬ª¥¤¬±ª¤«´¹­”xhfcju‰‰†~yzŒ“¥ÀáëÖÎÒÞßäôè¾™uR9#  ÿøÿþÿø! '60"!.<>>ITYXNTm•¾Ë»š‰ˆ˜£ Œvs{zz{„¤Âå./'ýïçåàÚÔËÁ¸µ²ª¤¥©¤¢­µ´£‹tfgju„‚}{‰…~‚žÉðëÒÉÑàèÜÌËÒâÛ»ˆdH+ÿûÿòÿø ÿ÷ÿõÿÿÿöÔŸì<=xƒ< DV=Èfš¡c?(I)¼î(kºT!ý¬ ~ÝY¤jC¸> ¾ T ý Ü ¾ Æ Ù â Ñ ž c /     4 > 7 !  ð ÷  _ ² ÷ 3 ' ò ¡ _ e ’ ù N ¤ ë=Ÿ}‹H3ý‰Æ=o¥Âß7½SÝóšc3 ÞÂS¹¯‰hz×>¼ † ý è òÔLYt¿–@ë§{S/%ÐH[™gñ5 %ÔU‰’¼„¸D«÷F ¶ 6 ï « “ } > Ý  =     ? a s d J #  õ å ë ü    " * $ 2 V ‘ Ó ú  í • / í î > Q b y ¬ ì B ˆ å G ÛšF¸ô;‹æ[Î]è›l8ýdš‹‡¨ú`ÎШÖט„˜Â÷ü$i È^‡V:^dY@á€Æ%äûªúË´˜™£ƒ’Ñ[ât ï g à r  È y D   ÿ ð Á € G %    $ : D F )  Ï £ ™ Á ù ! B h † œ ¯ Ñ ç ÷ â Ë Š ' Ý ¾ â  @ E 3 , 3 > a ¾ ú ] ã Y ™ · Ú ( 1Õ^:-ëˆ {ð±ÄÕÈKmLZ‰âòªz’ÃîM©îûƨa9¦'«ýQÌŸ@ƒE µhM7 ‡ ú ¹ k & Ä z N D 7 " þ Ñ ® “ y e N ? 4 1 ( & - 0 ,  ñ ¼ € G  þ ( [ ¡ Ú  F r ™ ­ É Ã ¯ v < õ v w · ý 3 K 6 # ÿ Ø Ä ¼ × î & x ¿ ß â ß  C Ä F ì …9Îr³‘wÊuUÆû|qù™qí¥GòçO7æ(.Æ‘xEäèñ»{c˜ÝáÇÀÆ ½ ä ¢  Ù — ‘ © Ô à Å } <  Þ Ì ¬ ¨ ¸ ß      ø Û ¯ ˆ e A +    9 V ‚ ® ã  O t ‡ ¢ ¤ ¢ t 7 Û q , + U ‰ ¯ µ µ – p I - - , T ™ á    õ ý 6 y à 8 · V ÿ r¦¹ÖxlHߤ/.Y[W?e„K¥uíd2¦œ€çj]/i£€jž9 j å  Ÿ B ô „ A  I ‰ Ó   ¶ 6 Õ — g V 2 1 K | ¦ · ¶ ¢ r L ) õéÞÚÕÒÆÇÓõ  E [ k † ¢ Ë Í ³ d »‹¾û / M ` V M : $   ? „ ×  5 ; " þ   ^ È J “ ô f C,šCû‡aÚ…`’öÿÙ&`_ŽaÃÍnÖ|¦IÖNÒ S • Ñ  f ^  >  è ò  W ‚ … € G ô   l \ L @ " üÿ   ÿ    ߟ`â®wJ6ScuŒ³ì îñ[²û * , #   ' #    @ ` ˆ ¼ Ý ì Ö ¹ š t ’ ë c ¡ Ô u ü KÔQ‘bF»Mg¦o.°t/Õoêb8•”¨œ4üÙ¿· ‹ ¡ á …     ¥ ' Ñ Ã É ÿ ? V > ï ª j 7  íɘj7þЩ•¥¹Ôþ÷Ïców »g/ùå×àåòû$L€¶×øbÌ[õ\™ˆlMRipswŠ °á 3 † À È Ã © ˆ › â G ‹ ­ ³ Ï û B Y„¬¨h!É„FÁDy¬¼¹ ˆ¥ö~”37aixŠ   Æ Ó + µ ” _ J J 7 é ¤ ˜ ¶ Ë Î Â ™ c B F [ t Kýa· `ÿáäê6aL €òq ت—€nU>$+AlŸÐícÊr1ÏH]Y( ö_Æ/„½Ý 7 `  ¨ ± ˜ w h † ¼  - T u ½ ¦ i M»1¦AðÌ“'®º¶"ÀÁÿ)ú{ÖŒ6 £ å 9 › í M C  Ô U   5 U Gø’> *l¦ÎrÝãâ‚\;GBCDEHFS2íz²wtyŒ’`7 $Fl‡‘z“ÅMõ©K•½’^0CšAô”IeZXt¸ü  ôò  w Í # o § Î  W Í N À  K ¨:ÝœUùˆ3 ‰ > D n Q  ² z ˜ „ ø 2 © V û Û è î ¾ Zìyƒ”}2Ã`+%ÑxÖ b¦E6_|r:ʼn\>%ÿÔ¥ˆv|‡†iB$'(/6BQ[b`MTe¾4ÑmÕ#ü¿ˆˆ– šlQöbZ1/¢/²   0 @ g ¬  H [ E & < Œ   Ö  E „ ê c ú~ Ä p w ‹ t H I ` • d ¸ æ r Q % 6 )émêˆ\M!ÖuëÖÓš(tÆ1­p7Fhªñè6Ø~F*FZ`bP?ñÇš’§ÍÛÚÚÙÜåòúöö÷Q©Z£ÀÓ½ zJWx ݵ\…k7(šVN,¡Í¯¯Ú 8 ’ À ¯ z j “  ² 4 v q m s Ø 7 › ¼ 6 ( :  ê õ ' G Q ò G¢]_B%㘒°j ˨”u1ÛaÕo2338,ôÖŦv:Ý·¶¾êMpj]+ö±l4ÿüÿï%16BRexŒ”“‰‚†’«¾ß;†Î#&ô zŒ‡ c„‚²ú üÎù_°ü  þá | c ~ ’ € g ] x ‡ › ½ · s ; O … ³ ” G¬ ŠM6ù®o%Ýsí_à;,Ob5»+»m“ía°¥€£8ẚ¡¦ÂÛ;r©¿É¥<÷®j7ÿïÿñ Bg‰¤®±¯·¾Æ»šzZ{Ä=°üJ%¼Œe}Šú$0>·‹šy …ÂN©e‰`E~  € å 9 8  É ¥ Ž l  + Í«â  .Õ[¦ÿt²Fì©tDäE¯I>Jq”hï\òécÆð惯R5.f¤å 2:HQa[KåŸZÿßÿ·ÿÿˆÿ›ÿµÿ²ÿ§ÿ£ÿ³ÿÏÿô /Jw¥ÒÓ¹v&ÿþ9dªWv2ÑPÿ×ÿ°ÿ·ˆýDö…Á|€¿ùTú€˜“ÑQî j Á ¥ dø°Šq€T8.W_6¶7ç>–™\?/ ²§’Þ1ZOîepÐ ÍZÌP#_·+šÕðÒº’mQ@8*ðåà×ÒÎÕèñãȲ²¿àø5_“Âóôç–,ºj>ÿøÿõˆ b”<Ÿÿëÿ\ÿbÿ¹eï<RP_Çq=Þ;_œCþh¬yƒÏº@þ䕬’‹kPª#¬i°ïu',@:ö† á ~”Vû©|¦þTtE¶oRCiœÛ"+ý¼i%ÿÿÿ×ÿÙÿè>u«õL¥ø,Z]U3øêòû 2HQR@1ÿÇsט5ÿ×ÿoÿbÿ…Ÿü  ÿˆÿ:ÿqÿÞd³¹ŽŠË{NP{éw÷hÉ'¢~©Â›[2^Ljj`»=Ój –ÿgσ¸ç݇(ú'“Ù¨E.žAÉð×€?8V®O—¡•IûAßëò%\·†–7ÐhÂËr80;d|šÁâúÁ=·)´KÎg%Þà TÿÃÿÙ>ñ‰žb«ÿÞÿmÿnÿóu¯n@ŒD!žÎü3–`ªóH¶{–{SrAy’?æ~/å”:Ó{(0-ý¡lˆÚ"Ý×8ÈEfˆ Ðb£×èùéË®žµÒhÆcœá2® 9 Ù t  — ñ G ' à B õ # y ¶  l Æ 5 Ð Ò Â q8û15æzÙ(!1^¬óÏJÿŸÿ"ÿ!ÿeÿá2C ÿüQö…ç.tÒ1v”±êLÍ+G8Iotl)ʈV*õ¤_0-3IVYJLRž¡×b;xßÿ¬ % … 3 ò ¨ I . ã Ï ñ  } ú µs7ùƒü'5=hÌ=Á2• Q•dåNô,™êeÿŸ^~\?7w± ô – Q ðý..ížÉ¤Ñúm« ÿ¿ÿö[°—R3bÂ<‹µÙýBv€xtªãùöò˜8±F ûà±Y)_™¡ºåjò¼… g / õ _ k̯éå"0稪Ùw÷ØÊÁ‹Q®ïÍeqÏ.ª‡ORÌ,ÆÊáE´€{ü?~™ç95<L[¿F. % (  ÈaäK*[#þÈAy¡ÿû&(ÿÕÿ½ÿÛEÆ%<!*:JR9Lš—Ë®* ðå=Ä“Dû•mqÐ0­ëP²/É  r Ô ¹p]މRg«#0æÞµk?–(34 D!C"##¦$?$d$h$#·#‰#š$ $o$ø%†&&±''@&õ&k%Â%P%9%6%t%‘%ñ&m'9(=(ø){) (§'h&/$t" ¯€:DÇ^ °  ä&çƒÁ”LC»eJò¥U_¾ Û™x‰µ³¼Ù"œØ· PPb¶§¹0{ ’¥ê¥B¾þ™×  FRƒæƒR§ˆÁ !C"¥#ï%K&&&k&3&%ú&'?(V)K*1+ +Ë,£-K-ç.#.B.$-ô..T//™0Q11Ì2Ž2è3)2Ä21I0µ0€0g0„0l0“0ä1’2y33p32|1m0{/--ì,'*7'Ô%y# ˆ8þ 1]aBö u ‚ º ç½4‡ÿkÞq·A,Z^6ÿÛÿœÿ§ÿó-UR[±ìÞ!O ¥ [×btRÃK§+C+y ¹ ² óÇrJ$!å$Ž&š({)ù+®-%.Œ/Š0“11a1F11121Á2y3_44Ã5t6877î8¯9'9Œ9µ9Æ::t;6;ê<¶=Œ>I??d?ž?'>e=€<ä<³<¢<·<<€<À=V>>v>v=¯<Ø;¶:Ä9Ã8Ú7642/¨-*4'Z$¸"7 $:`AÐúvI œ vkôß'<Ág%™,ÿï H}]0Hn|íx<h… · › @ ­ G Û € Ö ÿÃ*ÃßñW"ñ&a)–,1.´0Ö3&5 78k9Ÿ:`;P;Ú<7<4<%a? ?Ô@µAËBøDEEÆFeFŸF­F½GGšH3HçI›J7JãK)KWJáJIAHÀH¹HÒIHÛHæINJJèK3KJHÒGFEêD¢CB6@¾>ë=?;8¿5ä30- *m(&$!îšQ'Q·‰Ë b ƒ Dêœ °œî$˜ÿÌÿÛ ÿåÿ¼ÿÅÿî#‰Òme`nJîs)ߎ †´í© ;#\&Á*.{1ß4´6é9S;»>}@¾B•CŒDsEFF¾G?GPGFG=GUGÎH\I=JKLJM«OPUQyRRµRÂRœRUR@RqR´SSSÞTLTqTxTSTR´RjR–RÔSSS4SÀT™UŠUÜUÓTÅS˜QóPoNüM¹LkJêIIGçFJ˜LÁO§RŠUHWXBXÈY™Zb[W\\~\j\[¿[„[ë\]Í_ `taÍbýd8dÿeªe¸e·eFdÎdô<”9Ñ6Þ4 1«/j,è*' $c"# ýXMQ _ Ä3kéØm@<·9z6ª4Á2™1I0/ê/À0Â1×46—9|;°>BA0E)IÄNQšTV\X—[j]ø`?abvbÏcacædŽdÿeZeµ<9Ž74‰1Ï/,Š*'Î%!ËÿU«§ 8 •RÇï˜\IˆFC2@ >Ñ<Á;†:u:|:h;<ø?qBDÆFäI~L¶PÀUXÂ[Á]Ð`bdYf.gÕhµiwi³iýj"jejŠj¨j~jiËiØjuk!llËmvnn€nènünûn·n}n%mÏmelól„l kÑkŠk?jòjziÍi;hØhÜhúi;ifiniWi>iVinipi?hîh¥hph–hÊinjNk!k¹kÃkÏk=jžibhDfed5a†_ \ZW¬U]SPÇNKK¶HþFGC®A.>Þ<§:R7Ê52‡/“,c(y$e û)=! î ˜ÃRŸOºMAJêI'G6FE.EYE]F°HmK+MÆPRÄUpX´\__öbèewg@i/j±l6mXn‹o>oÑoêpoëoêoÎo¦odnýnÜooŠoþp†qqƒqôr(rSr/qÿq˜q;pÀp>o±o#n«nDmöm¦mZml´l k•k'kk'kuk»kñl l l-l1lkÎkajõj“j–j¤kQlBmsno3oàoäoÊnünIlßk6ig,ebö`»^’\hZAXUÌSePáNPKÃIzG‰EvC @=M9ý6°2š.")U$Ë šU·P”µ Z YfWLUnS€QôP]O…NËOO:P˜RUTçWHYÈ\^—aYdfµh×jðlcm¸noapqqÕrUrbrwrSr9qûq­q[q põqqNqvq»rr‡ròs'sPs$rîroqôqIpoÕo(n«n?múm©mlmEm l§l2k»kk‰kâlFl·m m@m…m”m”mDlßlXkÈk|k6k¡lWmnªo²pÂqIq©qIpìoÞnªmkÂj?hfÌe c5a__‚]¹[ÐYÑWŸUDSQqO»MÌKH-D–A?=18¼3×/*³&g"Ä:@0‘ö_^9\ÿ[žZ|YgXêXqXÉY,Z~\^`bFdrfˆh‡jQl0mÂoap]qqï9Ñ5 0˜,í)G& "×û;bêb7a‰`³_û_P_^Ö_>_Í`ìaìcWdéf±huiók#l7m´o p;p¾pßpáqKrrÿs¿t4tOttŽtst*sôs²sisrÃr•rvrªrùsjsÏt tIt'sèsGr§qßqp`o³o.n°nOmäm“mSmlÖll7lll~l÷m nDnÄo9oTobonÂn0mƒlôl`l‹mnNoUp‚qÁrát t˜tõtns®r”qÇqp9oNnYm@l!jûiçhÕgÄf•e8c÷cb+ae_‘]Y‹V]RN}I½D ?º;W7Ò4Z1E-æ*ê(/feñeºeYdãdbd-dd‚e-ff¤g|hÈjNk£l—m9mäo+pRq q$qqqšr‹smtt‘tÅuuMuquUu>tàtcsÏsJrýr»rÏrøsUsºsüt3sùs˜rßr4qxp¾po…onÃnƒn5mêmªm`m l¡lkÐk™kÜl>lòm§nCnÇnøo'nþnÎnWmËm@l›lžmn+o;p}q¸rÕsût¯uXu;tÚsþsJržr q…púpSo”nÅn mRlškÓjëj$i›i)hýgÓeþbß_ý\_XÙTzO†J™FFBÏ?ys r¸r*qmp°p&o¶o¤o•oÑppzpÝqqEq,qpºpMoÁo3nÐn‹n‡n¢nšnImÇmsml¦lk‚kj|jqjškEkÖl¿mànôoËp8p˜pÀqqq;q#pÞp´pÌq#q‰q­q‹qp£p:oáo±oŽoo„oBomòlqjSh£f“d3ax^¿\NZVXWUÑSP‡lnl‰l|lkbj¹jÇk…llümm;m«n‘o„oépDq q÷rÛsYs‰szssçtpu uuu¾uÿvaw wžwýwÐw€vÙvIu²u tžts´smsisxsŽs¥s\rÕrq>p¯pBp2ppLp›q(qÅr6rzrcrTrq®q.p¢p,oËo«o¾o°oMn®n8mÁmDl¸lkŽj÷jÈjÐk>k}l lßmÀninÆooHo¡ppzp¿pÄpÄp÷qjrrkroq÷q…qp®p‹ppœpŽpJp4o}nQl§kXiáhKfjdYbua_¯]à[½Y—nƒnŒnemÑm-l¡lÏm”nnÇnÆnóo^oöp”påq@qèrŸs9s‡s±s·sÉtt•u%u‚u¾uùvOvâwQwwUwvuêu9tƒsòsos>ss=sˆsát7ts¦rårFqÜq‰quqFqgq«r@ròsws¹s™s‡sCsrœr*q¸qMqq pæp{oÏooDmål´kvj>hægYeýe d6ca¬`pypwpLoµo"nºooÌpŸpÇp¨pÙq%qaqžqÏr rssusœsµsÂsÒtt‰u uau¦uûvavçw@wxwEw vyuÓutUsÏsXs=s'snsátPtžtqsûscsrùrárèrÓr÷s=sÉtrtïu*uutïtËtt1s»s7r®rKqÒq1pho­nînmwlÿl´lFkïk§k‡k;k^kãl³mJm¹n npnýo¸pq+q®qõr1rwssjs—scs-r×rsrRr‘rÓrÂr\rq‡pÈo²nml…k“jriŒhöhŠgüg/f2qäqÝq½qEpâp®qqÜrrÌr²rèssss;ssÁsôt t-t)t"ttMtuuRu’uÛvvVvhv~v9uàu%tLssr¼rarr$r8ršsssÚsÌss_sysÊtt=tet¡tïuauñvVvƒvnvrv_vPvuðuztãt sGrbqnpgoknsmTl‡lkÚkŽkDjêj£j8jXjåkÜlšm9m³n?ooèpÍq‡r.r‰rÌrüs^s°sásßsäsÅssfs«sòsùs sNr«r qpnØmÇlákïkQjÞj£jYiòidsesSs4rÑr•r†ssÕt™tÛtÑuu4utëuubuouZuWuFu&u tôuu1uxuÀuív uñuÒu–u~u%t¤sÅrÂqÛqpëpÙq:q•rrŒrúsfs³sätt~tñuQuŸuçv.vtvÓw`wÄwèwÁw¦w„w|wgwYvôvcuuts‹req oïn¼m]lMkk#jºjjji£hÿhÝi(jjøkélŸmpnzo§pÏq¹rŒrùsLstsÉt t:tItjtkt:t$tet±t×t˜t=s‘sr6q4p nînmOlñl£l“llil5sÀs°s¥snsps—t×>Á>c>Ï?i@‘AYB×DuGkJ“OS¦Xë^c@h~lìqtwxËzezÙ{c{ zÃy˜x¯vCs\nÃj6d£^èY S@NaI‰FrCµBËAÑB(B’C¿DªF"GyIïLßPÍT’X™\„`}d°h~l.nÎqDr“s»tKtóu±v¨w¿xÚy§zIz€zÔz¾z§yîxÓwŸvívluštâtEtttCt;t5tTmmÊopŠqûs>ttØu)u]u`uwu¸vOv›vSuÄužuu‹utr·q‡p;ofmzjñfb \¯W~RLQFðA~=‹:8w7 6û6À7S7ú9 9¶;<ž?‡B‚FòK•Q;VØ\µbªgÿmpõtØw=yuzA{(zÖz}xöwÆtÕqOkîf¤`eZ S®MgHB§?< ;9ë:E:»;ÿ<ÿ>y?œBEQIôNoS=WÏ\gaEeÂj+mipnrs‘t?töu°v²wãy!zzÃzû{F{/{0zšy—xvwÝwkv©ußutµt”t«ttbtol´monÂprnøospXqfrds:s…sæscrZpöpomnÝnem¥mAm.m¤n=n¢n¸n=nlùl:hædq]QVtN“Fª>ì7]0Õ)É%I!Ü!i ÷!Ç"I"ì#k#Ë$$y$¡%¼&Ó*1. 4;8CL/Tê]gd™k÷p¹tÀuùwWvÜv€t¸ssoëk©d¹]¶U8L¼D;~4,¢'­#,!zù S !Ž"—#ã$m&'(m-82¶9‘?ÆFLqRÊY_8dtg|jkl8lÉm‚n?o*ppÎqqpàpÞqqNq±rr|rýs r–rqùr q±qkq\pÚq8qØr”s@sÞtt9sƒr;poVnm°ml=kÒk«ll³m:m~m?mZlMkegµc[¡ThL9D(6ƒ.å)g$6!ÕïþÊ > !!%"[#„'x,¦3ú:²A±HŒOPVy\­b½f}išjk¿l l~lÓmUmÊnEnbn5mäm¾mën5n¸o%o¥p`pÂp–pKpˆpîpýqq^u;u1u tãtµt¼t|t3s qYoYmÇl²k¤jîji¦i„iüj|kk²kìl}k™jŠfaêZ’SJÂBª; 3›-…'/#¤!!8!"!ó"v#&#Ó$–%^&#&•'(T+2.ï4ô:åAºHbO UÈ[àb'f¥j„lTnEnáo¥o;o(m j˜eL_‚W¿P=H?±7ð0\*Ó%y"Ú ½ © r Ú ë!(!)""™%î*³1ý8»?ôFõMìU>[»b=fdiÁjËköl+lŽl¹mmãCÞH]L‡PKTeX0\,^ä`Ùa·bÏdeég–ibiQhèe^a/Z”TTLóEB=¦660V*“'G$e#Î#n#ê#Ò#â#õ$œ$|&à*Ù1§8?;FMTG[ bfÎjŽkºm m2mˆmmmRmmlül—lIl!l€mmçnoBpZqVqãrBrês¡t=tËuVx w›vÈuÐutÛt t%rÚq(o'mkl"jùj6i:hÇhŽhùiajkk¤ltkÆjègScL\žU›M”Eñ>Í7¤1Á+Ç($ã$#s$$)%&&p(£*¿-c/Û36&:r?wD¥IDL¼OÛRTU8WÕZ’\R]a]Ü^›`aðd/f¦g¡hYeÝbŒ\VÏOÎH¢A39Â3x-R)|&%$V$Î$®$à%!%ø%ÿ(e,O2ö9F@VG MáU[»b¹gƒkQlmìn nVnmåmšmƒm_lòl§l‹lòm{nFnÒo˜p³qÌr‚ssàt·uv,vÌx9w«vÐuÆu t÷tìtsXq¿oÇn l±k…j·i¬ihÁi iNiøj×klEk“j¨g;c…]LV®NéGo@b9q3´-Þ)ÿ&y%2$$}$]%o&ß),/62I6:>×DcIxMÎP]RžSéUœVöXRYYxY×Zv\]Þ`ucyeŒg€f6cÜ^TYRIK…D2<±5í/I*Ê&£%$$$X$¼%-&G&)#-&3Ô:8A_H1OVN]cúhÂlœmçoQoko£oSo n¸nžn|nmÀm§mønTnäoAoépérrÌs…tpupvjwCxwâwgv©uµu!u:ucu0trªpÐo'mÚlÂkÿjýj`iôjjMXR!VW]XX W’V‰U}TÿTÌU®V–XvZO]`Hc;fCfeÙa‡\ñVOyH @‡9`27,Ñ'‡%/#¥$g$º%ó&ú(É*-x1ô8?EýLÄSŠZ•`ãgDk~op9q}qvqzqp£p^pNp[p2p+p`pµpåq qqhrss¶t‡u~v¥wÕxéyíwŠw4vµu÷u—uâv7v&uGt)r¬qKp@ornúnOmçm˜mªm»nn¿oohnjm'j;gibé^ XRL&FwAkº:p7j4¤3N1„1¿2}5µ9->B™G»MR~X<\%_J_–_¹]ß[ãYaVæUTÆU¥V‰X{ZE\Ë_¬b‘eÀfðgd¾a`[WUdNwG©A#:˜5a/ý-b+»,Ä-ž/13H5(8—<ÓBHMÚS†Y0_/dwiªlõoÊp–q]pòpŒoÐo/nÓn˜nÃnÛoXppÜqbq¬qÓrAst2uvwx;yuz„{Žw•wBvâvPv!v‡vüwvzužtjsNrŠrqÚqjqpÐpàqqƒrrFrcq—p¼n·l½iae¬`÷\WW›SNÀJLF:B>è<+:Ó8ü99¶<Î@5DùIRN#S:X/]f`ÍccšceaW_K\¿Z"X€W`WÖX[Yï[Q]_úbÈeÿg¥h¶fªd,_YôS¸M¥G¿AÚ=85”3ô4ô5æ7÷9¦;Ö=¿@àD¯I¢NRS;X \âbf£km¶oÿplpÅp oTnjm¢m4lÖlúmmÎn¾o¿pppÚqq­r®tu$v6wIx_y”z“{‘w]w!väv}v}wwžwëwxv¹u˜t–sès€sVrïrrRr[r‘ròs\sbsHrqqŸoënDkvhTdY`v\XÈUQGM{IgF8C‰B%@4@@nC?FqJþOS“XE\ºa[dYfãfôf«d®bÑ`w]ú\B[[[4\:]^Ô`Ìc^fjhdiãh®gbæ^tXÌSlN)HáD}?Ì=d;Ô<Ù=ç@AáDFILŸPäTÐXÏ\Ì`çegiFlçn×p}pppKo9n1ml4k»k?kak˜lxm˜nÂoŠoüpGpêr s‡tÁuÞvøx yAz?{>v™vtv\v.viwwÌxMxwWvsls±sðs½screqtoán]lidf/c_û]ZAWCTP…M‹KI¨GÀGcGnI¬LJP5SÄW³[Í_ºcÆf‡iihilgïf£dÊb½a_î_§_7_—`adbëeg½i¤k1j€i{fb-]&X†SúORKjGFEq,o­n=lNj-g¾efc"a^Ü\¯Z)W9TR+P§NËNY²[ø^ìbehh·k+mqn>nÌnm‹l,j~hÅg}f©ejeet`tlt_tgt½tétæt?spr1q oÁnsm0kójìji6hNggf·e¹dmb¯`Ù_<]¼]\{]]Û_¥aDc“fhèk»mÞoÈpvpöp|p6o*mµljêj,i!hØhøiõjÏlm´nèoØocnÇl¤j6gda*^[ÐY¾YZY:Z·\n^¯`kb3dDfXhPiåk3l|n5oñqžr™s…sJrÓqVoÆmól:jóiáiYh–hŠh¼iËk*lom$mLm]mºnŸoÄp™q/qÉr;r¥ss»r}rlrƒrÜsfsÛt4tµtªtsNrßrös9s´ttAthtœu"uXu@trs‰rTqEp8on#m?l·lQlk¬kCk j›jhâgqfd×d[cÛdCdäfsQsrq oõonymúm§mlàm&no'pp—p¶pÙq qsqórqrªrÉrƒrq­qËoÅpEpq_rryrrÖrêr»r‡r~rÒsLsãtVt tîuueu!t{s1qâp±oÀo>n®n|n@nƒnño¾p“q>qqÐrŠs sr¿rˆrµs"sútÜu¢vvrvþwswÍwäxwÚwƒvÉvu6tKs\rfq¸qpüpíqhqðrÒs¸t©u¾v;vzu³ts,rq;pRoÀoOo'nënÒn¶nÅnêooXoFnÆnin„oo‰p*pîq©rmr•rgq¤päpk8¿=DBÄGgKõPT—X…\"^ãa›cßf€hiiÑj…k†lAlåm@mªmÞnnnnmÇm‹m“mÇmÒmõnJn“nÃnn1mŸmlÏl±mmnto^p–qôs(tFt£tèt-sCq¨p npm kîj¼iÏhÖhfhhjhêi¹jNjýkÄl²m§n—o‘p:p³páqqYq¿r?r½s s‹sžs˜sr’qÈqpQoµo"nymÏml lZlil|lljlVl^lÁmWmðn,ninÿošp%p(oýo8nymYlÉjåhRcµ^ìYSÅM¦Fà?¿92è,¿2t7¨<<@¶DÞIQMaQDTuWZ3]X_áaäc1dÍf g"gâh½ifj jwjìkjâjµj×k-kkk¬kùl,l\lDlk©k0jïj×k4k˜lKlîmÏnèoãpÖpðpÜo¡n:liþgâeðdUb¯at`(_‘__Š`a@bIc°e2fãh‡jk¨lÝmãnooªpWqqör¡s3sWsks+rýrrq_pépsoæo>nzmæm‡mrm`mDlíl§l‰l¸mmOmZmumìnOn n&mck×jqhg)dD`‘ZöUhO IB‰;4h- 'ž!'Š,u0ü5c9Œ=éBFI’LÔOâS~VœYZö](^ý`¥aàc'd9eafLg7¯0ƒ)‹"ÄàÚ¡!Ô%ì)þ-ò1í5Ã9ª=6@tCŸG\JÈM¥OëRTºVÔX{Z[€]^|_Þ`½a^a¯b(bµcbcódndŠd‹dId cÏcœc—c¢c×d dFd…d±dédØdÕdcBai_S\«Z3W³UDRØP:MëK„JHI^JJâLÔN›QSŠV‘Y¸]`Vc emfúh‡i±jùlmGn,nîooppxpÄpÁpªp‘pÂpÑp‘poÂooao*nÉn5mml³lYkãkPj jjiºipgÖe‰b8_„\DY*TqNêHA|:½4 -r&Ê OúœÂ·z"S%ý)¤-ƒ114x7»;Ž?mènjn£nåo&o’oÚoëoÍoÒoÀo«oVnínJm§lõldk©jÄi¨hzgg fRe{c_æ[¼XsT¢P£K#E>7H0)É#‚rh ¶  ªùÔ ‘ºû"Š&)U,Ž03ª7:<Ô?#ArCtEoG[I{KoM>N£OöQ RASJTUTÿU‘U¹UîUÈU€UT¾T¨TÓU UTÓTSåSqRQ‚OœMyJ—GžD¹B@>q@ÏCéG@JÞNfQoT'VhXÒ[]€_a£c=dÒfgbhUi$i©j>jÈkfkñltlÆmm#mlÀlkkÈkj%iIh f–dÞc(a²`Ê_‚]íZÔWRNòJÉF+@X:V3¼-2&ë ´[K U “O U ó§s c!¬$õ(O+è/%24W6‘8Œ:¥<Á?ABÍD8E§FòH_I˜JÐK„L LLHL0LKÁK`K(K6K[KqKJšI­HñGÉF®D§BK?;Å8†5“330Í.ì-+¬*!)‰))*+!-.ð1l3ë7:w>7AúEHÀKªN®Q T¹W€Z#\-^"_ªaSb¦cædÉe™fPg+hiiÄjBjLjmj-iði0h[geÙd aç_r]-[=YÛWúUŽQÆM´IE9@²;{5W/h)B"Û„>4 úDqùöŽË«   6¤˜¬Ñx!Ä$í'Ô* , -Å/¼1Ì3ÿ5ì7”8Ý:6;<ó>8?{@,@£@œ@«@˜@›@{@4?ì?Ô?Ð?Ý?Œ>ú=ø=!;÷:ð96ø3é0´-e*e'Í%&"é  ú@¦B20 )"$œ',*f-¯1y5f9E<Þ@%CpF¤JM+PRLTaVWóY™[:\j]]^1_N`‡aÛb¾cHcMc”crc=b]ap_Ò^E[óYBVSS½Q‚O¬MQJ[FdB>1:E5£0h*–%§À¿a e XþStñyŽ%Å Ž : íà/…PD6‹!`"Ô$–&”(Í*È,]-’.í0F1Ä3 4<4Þ5X5Z5d5O5W5O554þ4Ï4Œ4_3î3a2t1–0Y/0-b+l(µ%Ç"½ ¡9ØO”Ó¡v=Òa°#'+'/(2Í69A„y × £ h[ ;{F˜9C @!Ò#$G%€&ä()/)Â*5*5*4** * **)ö)œ)>(£('=&f%/#ò"F ™x½¡Ùs±: ¶ þ m ó Š‰É=ú"Ó&r)¯,v/Q257Ï:3<>?ßAûCüEÜGRH’IÉKjMNrOUPPPP§PfPON?L‚JNG2DA>s<9x6”3‹0,¿(ä$Ç Cß|Û eX?ZéܣiÿÂÿàÿàÿºÿØYþ xŒ'y¾Î : B A±š]‚QbUe^¯ñ'¹þ¿šs`sœÀç©?a‡y†d5ÃR¡Åüm & Î ¤ o„(Ë;É  <  ÇHø2ušt" $À'k*@,¸.ã0§2w4T6g8|:}<1=º?$@ØB]C¾D•EaE¥EôE»E•D«CÉA³?;Ö96:3j0’-´*×(+%2"ETaÙs ÃíÒ˜ÿôÿïB:ÿÍFÿüÿÇ š¦ø»¤Ž£Ë,Z % " g +×(ÉÖí¶ç‹T" "Uª«w¥´ƒƒ{o? ¨ > ý7O ´ZM7—Ñø  Ú Á!{ê2‚ìhþ"I$R&'Ã)+‡-‡/152¾45’6ç8399ð:M:«:ˆ:”9¸86U3Æ0Ï.[+Æ(Æ%¾# š^ÔÎt;X Ê R/všöÓ,ÿä.ŽVÿ†ÿûRÿ™ÿ«ÿñ ÿÿÿ¹ÿ¸8Öö3ʶƒ´×C]Þf s  – , # å W 8 ¯ h F . S ž Ý  ¶  ù íĬ”k`U¨&ð•eKVSbižìd»Jáò"¿ S  ÔÀ¸íI‹Uø!# $÷&j'™(Œ)¸*ù,M-s.‹///á/Ø/Ë.§-7*ò(à&o$!?çÙ™ÓÊUi   `²úCûUum ÿâÿ§ÿÃ@Ž-ÿsÿØMGÿßÿïI(ÿÔdš“=/¼}ÚîËRg9KÆbô-0ßšXO±Ï¯ÿ=;Pgu¯îŒKREUnŠ”•œª»ÖÞKà„€|¶åS ½ ƒ }ŽjÆv^¬®b÷Ü !n"µ#â$™%f%^%!#ê"— È[d¤Ü à Š ([$XÕkžl’ÿÁÿÓ*wqÿýÿÿ­QEÿâÿ¦v;ÿÂÿÿÿíÿ™ÿÿÿ©`Ζ2#§ŽZŸd&TÆ61ð¶méõ2fpd¶8¾Pÿêÿ©ÿkÿ^ÿXÿzÿ¤ÿÏÿéÿðÿúÿãÿÀÿ£ÿÿ˜ÿÀÿèM»i úè@Èz  j Р B³PF  =H¶Ü}¨ùÕÇ!o T  øô±ap†ÿüÿú'CÿÂÿlÿÚmƒ2ÿÒÿÅÿ¥ÿÉ3m ÿªÿèPn;ÿÒÿ sWÿüÿ¡ÿÉ‘]˜/ˆ0‹?³  Ž[£vº´²_â_ÿùÿõ…òAhYV8á”S*,6MY]kb?  3kÏ%®<ÿ ûÙ¾ 9 É O Ð D  +L ¥±©]*ð~] W R{%`$`Í!¢Ó/$d\!ÿ¬ÿ†‹]ÿêÿÅÿ¹ÿ• xBÿÛÿÂÿõ[†ÿ©ÿ¾wvÿéÿ†ÿʈX‹ÿ”ÿ©"£±HÿÆÿmÿ`ÿ¾'èÝ©&ÿŸÿ8þìÿÿBÿ®ÿüAÉ ý×À³©¥Ÿ˜˜‰a>:@/!-XšÏ6f’Àí(j³à6±dŃithJ?nâ/e¶cäñº÷ÞÇXA¯_3ÿõE’LÿÛÿ¢ÿÅ6xÿ¡ÿÀ>ÿéÿŸÿâE_/ÿÔÿ³‰m ÿÁÿÑ_Êÿ÷ÿ›ÿåÕªÒ':ÿ¨ÿÏŠ4bVÿßÿÞ²1{®w'•ÿýÿÿNÿeÿyÿÀY©á"-$!øåǵ¸ÆÀÄÍö0n¥±³|3ÚjOjsÓm2èL‘g!Ânu®>O>&  ÛEÃtKÉ~ÄC‡c–ɼ<ÿÏÿâ1V<ÿßÿ ÿà>ÿÃÿ»ÿòRt ÿ¥ÿÐ=€ÿúÿœÿïƒÓ§ÿ§ÿøÈžÈ7<ÿŽÿ”Ü1ý“!ÿò"iÍ#DWÏ`ÿúÿ¶ÿÿŽÿªÿì Z”Äë 7XpngM0  +26Ú|ÿ´ÿXÿ:ÿ-ÿgÿ¥‚ÓÓ‡ÿÿ^ÿgÿÙd˪ÿðÿiÿ[MËËÿÞÿ­cfÁr瀿Ÿ"ÿð=–jÿÒÿÔ (ÿÌÿ¹!}OÿíÿµÿÙbµSÿÇÿœÿõ©» ÿ•ÿÒ¼ å@6ÿmÿY ÒSWÜm%Ju´ý.W9ü–:ÿÝÿãÿßÿõ <g¨ýG‘u\>%èϱ˜s@ÿëÿãÿÕÿø-ÿIu;ä`ÿåÿ¢ÿlÿ°7ÕV7«ÿßÿÿ7O%õ÷ÿøÿÓŽ‚×*ãöNrr.G’·[ÿõ5;ÿÚ6Xÿ²ÿñX‡\ÿàÿœ@ÿ·ÿËÁÿÿÿÿ¯€lÃapÿ¦ÿyÿÖœ)N3Õ¡€WS^”Ü. Ú‘Q($>wÅNajWH1ôÍšlSLO<24Qq¡Ùÿ'ÀHÿÕÿÿaÿŒÿÉ3¾ë¼ÿJþóÿÿó­uÿ¯ÿ‰=RãÇNá~¬mÚ\[žº›2ÿñ7…XÿÁ.€Tÿê|¢2ÿ»ÿÃ#“¦"ÿ ÿ¡$ß*¿ÿóÿOÿtTbõ•¨ÿµÿTÿÂf|ma²SÿúaºøøÐž‚wc`^y£Óø ûðäÞÕʯ„];A^‘±Ìê 4GU)ê‚ ÿ¿ÿ’ÿƇCkEÿ”ÿ+ÿš‘‹”{ÿˆÿ` ÁŸÑöxÕ«"´†¨Ò¥V!vª_ÿÆ!ˆ¤l ÿã5oÿÄÿÉ<£‡ÿ¶ÿ¹<Ô¼ÿùÿpÿ„G:¸Ž¿ÿûÿšÿ¢1½0€b"­H ÿ×ÿñ(„ÒøðêÖµ™Š–¨ÀÒÒɵ£˜”‘„ugbXkÌ1UYeB±IÿýÿÁÿÕÿþZ¾?¶%ÿ†ÿkÿÇ–v´K]ÿ†ÿfôvf¬åfÍÌgçÆàøå†53n­´eÿôi¿ÂYÿîÿð4roÿ¶ÿàK¢ž.ÿÅÿº(Ü6î2ÿÿpõ¦› ,ÿŽÿ‰ÿ×€ M]Ù…ÿçÿÕ K•ÍçûåÉÁÊÓÚÞж”xjfkeiz”¢´Ìñ#CT4Ès*ÿçÿêlÅ/Õ`ÿËÿÿ{Üs—úÿfÿj$ýs5©w½VÔÞ|å ;Âb<g®»—h%'L®Ûž-ÿçÿñHŠNÿðÿËÿúc®˜:ÿÙÿÑ;ÇÞBÿ¶ÿˆÿÿÄe“qÿäÿ®ÿÿnè/(Ú‹@ 0^•Éâéáê÷ÿã·ˆc[^rz‡›²ÃÑÝíí­h1*.`žÛ ô¥=ÿêÿ¢ÿÒQôvaã*ÿ ÿ¯1Þ/‡<|«Ü­G(^i™PUŒÃ¯~sG<<x­ºÿÛ ]sJÿÿÿÚ`¸¹YÿîÿŲ%&›ÿàÿ…ÿ†DeÆ;zÂìíܳ†U=i”³Èâ÷# â³‘Š¡²¼¿¼¾À¾º»´©[DN†Äóûä©a ÿÜÿè"¢>wG¨ÿÇ¢(;ÕK Ré„›d9T|‰Oßz\}—£Šq„KLCY}°§Iÿðÿè!au@ÿþÿåy¿¬TÿüÿõLÒ:"ÿÿÿ§ÿâekSû„HSn´ºÈļšh>+7>WvšµÎñ,,ôÛ̾ÀÌÓÈ´«¢˜…gQGPQm¢Û  þÊ›cÿûÿÿQÈ$Uˆ ÿÕ£8ëw5RÍ@‡‘hRT„š{!ºzzœ’~rzœ1MWTY‹Ÿu*ÿñÿñ(goBÿëz¼º>TÏ/AØ;ÿÌÿ±$ËSz/â•nneo}•³¾·›„mOFPm}•¸ã-7& îÙ×Ô¾ Šzm]<+,Q~²æ÷òÇœpN? 7Þ/Â@ÿÝÿíQß7$ËiIˆìKePMSh}˜ƒBé§’›v[iŒ¤@^baƒ•‰TÿçGfW#U‘±³‘aY‹Û&ÎSÿãÿæFëh‡sÄ[\\t§²ª§“pUL[bz™Ãñ&&-# òçØ¿›tWFF@JXwž»Í¾§^I2=Sï´2ÿïÿûpüPNõu‡Ô?A6Mm‚„Žl#Ñ£–Š^Qm“› 3]tw~|ƒn5ÿÿ=RL:5AQt«Ê›uw«êöŒ,_ÛPi%Çw^bn†—¥¹º¨‹uopƒ•±Ðë ùæÍ¶šsXJZt‘ŸŸ¢—‚k]ZW]Zq¤Ø îŽ&ÿåŽoX ¯—½ä2ipeEÖ´œt[M[uˆ@_pojhƒ†X 2Z_M>?Mrž¾Í¼¢… ÝüÞ’B1_È,THþÂb]m”­¾ÔÙÒº Ž‰“”£¾à ÷×´›Œxqq­§Ž|m^\bry†˜³äíÐÿëoç7Qâµ¶Ûð 0Jl|~cFôÒÁªpFC_pun+IX`]Y\vg;,SZPHK]v€Œ¦½×Êap§ßä¬_,A†Ûüᲈ‚šÅÛãîìéÙò­±¨¬¾Ýý  úôäŦ‘œ¦«²§ŽnTQXt“®¼ÂÕÙܳbÿïlÍýôâÊÊÕÚÜÒÝ7TZb]_N.ñàаtIH`b\] ;JWWTR^fiU) =ZdVFKar…”£ÃÆo]z´Þߨ\*'^—Éåß˼ËèúþòáÏÇÊÐÊÿÆÖãäÜÙÑĸ°±¶¼Áº­—ƒoWRVw ÊïöúÔ›X+s¹ßÞºÀÎÚ×ÑÎÞý 3>W`[>þݧoOK[WNP "8LU\YPK\`?$Gb^JAKe€„„𬲠~ktšÎÙ°f&1u±Ýòõ óÛÊÉÍÖÛÕǺ¶½ÃÇÄÁÆÌÏÌÆ¾¼²›†€€rlm‡¬ÔúöÝšGR’ÀƯ¢¥¼ÒÓÆ¹ºÊäó !K`O(â yjYRLD>)@Tnr\FVg\= DbgQ=Fdzž¦±©“w^f¶»’X(/X åLTN4*çÐĹ½ÊÔÐżºÃÊÀ¶»Ãž°§°´¡Š…‡zz‡¨ÔìöÏ’Q!O°¨‰sˆ°ÆÅµ¢ ±ÃÛìÿ3LF ÿ"1嫜–sOA7ÿÿ 2JoqWU\cW3"TwhF<Op”¨ª¬¥¤•qXXt—¦›q@(![®aypF9+òÕ¾£Ÿ©ÀÎÒÎÈÏÒÇ·²°ª¡Ž‰›­¦•‡¥ÃàÛÀ‰K/4a”«—mO]˜ÐÕ³—‰©¶Ìí9FB#ýî'(á¾¹­|G3'ÿù1Ur€t^JLTO=6dqdRJTs˜°³¦¤ŒygfuŒ š]6FåM„‹_M4ðÕ©ž›©ºÈÈÁÃÄÄ¿¹¯§‹…‘Ÿ˜ŽŽ˜¢±ÉÎÁ˜lM;Mq“œ‹tinÀÚͧ•‘Œ–»ð 8-  õéÚɤk6ÿñÿü1Mqy^:1AZaB"&Fgxq\JW†´¿®¥Ÿ¥¤vaf€Ÿ­Ÿxepµ_{bX:óÛÍ»®œš¥·½ºµ´¿Æ¿¯§Ÿ“Œ‘“£µÀ͹ŠX9DaŠ©¦]a‰´ÖæØÂª¤¤“˜Àü&(-#ìÛÛΪtE%ÿí  *FXQ=6<MWN=5>Rixvb_ƒ±Éĸ¦ œ‘jah€—¢š‰¨ê/UV^L0 ëÔ¿°œ˜¢´¾¿¸²¾Ä¶ –’‰…‡Ÿ®¶»²¬”gKPr ¤k^y¬ÐÝàÐÆ¸§›‹–±ß !$íáÒ¾›lB)ÿúÿë #(7@A<69IUPGBOl…‚}¬ÇÏȯ—ˆˆŒrbbjƒž²²¸×!5MNB áÆ¶¦¤§³¾Ã½µºº«˜Ž‹†††Žž­»¶§}sagˆ§«–€rj¦ËÙÓÔÑÓÈ©’®ÙòÔÈÆÆ±ƒM(ÿ÷ÿïÿ÷  ,9;42DXYOFK`|ˆš§¹ÄÍî—ˆyuny•µÁÈÚï)7=+ùÛð©¡¥¯¸µ®±³­¡˜“‘–¤¨§¨‰uknnz”¢•~u~ˆŸ¼ÖêðõìâÌ©™ Çô óɦœj6  ÿõÿï ÿþÿõÿû*886?JTWTSTd}˜¨¬«¬»Ä½©š‡ˆ’v€ž¶Íäòøý ,'ìÒ¿´¥¡¥­«¨©­°°©¤¥¬·¸©’…}okq~„…‡ƒtoz“¤´Ã×÷ ýäɲ²¼Ù÷ þêÖ·‘tkdI%ÿ÷ÿýÿûÿùÿñ")3;@DMTXWLUw¢Àö¡ §«©¥™‡}„Œ€tv‰œ¶Óêú%(ýìÝÓʸ­ª­«§¤¤¨­¬¬²¸Á¹Ÿ€qplp{…‡‚}|…š­ÈæèÓÌÍÙÞæö ÿ庘wO2 ÿûÿüÿþÿõÿúÿþÿô(6/!%2>??IS[[ORn˜½Ç¹›ˆ…š¤ž‰ts{xwxƒ¥Ãå-1*þîâßÝÚκ·±­¨¦¥¨­³ºº»­“znru}†‰xv~Ž—…‹¨Ñô ÿæÌÅÑÝåàÖÖÙäÙµ‚aG& ÿøÿóÿö ÿûÿúÿùÿü  7a|pN& JouZB*1MZTQB&>jˆ’{[BBWcsœœŒƒyncUMJOPYfu„„€~wiZMB@@HR[^blrpjklihip{}rjd^YSS[a[RTTI?=EQVO>/''( ÿûÿ÷ÿøÿþÿùÿçÿÝ "\„~P! P|†n=6Vd\>$=s—’xO03Jr‹˜ª¨–~xvm_OFDMR_sƒŒ†|maZUSNLKOW^aabgqxxpkdYRLSdtvnjgeb][\^YV]`[M<4:HRO=("" ÿþÿùÿ÷ÿùÿýÿþÿûÿïÿßÿëÿî.]ŠT7iˆ‡_00PdiR/(>Z}„lE,0>`ƒš£˜‘eQOVPMPZgqsorndSA72;J]ipy}„oZKIJT]hu{~tcURYZ^irwri]RPS\cdbVE708NYM/  ÿúÿîÿíÿöÿüÿÿÿûÿêÿÓÿã[‰b# 3y¢”e)0^|tW, &YƒŽf*Alޤž“zfTC?BJGIWj{~zj_N9("9TpƒŒ˜›¡”|\C6(-6Mez‘…lYOIR_nxwthWMQ[\Z\ZUI2*:MN9ÿùÿý ÿùÿéÿçÿñÿ÷ÿüÿõÿÁO‰„R9{¤–].(Os~rK!:cwnK,8oš ƒn\ONNYhx†‡sk_PA40/436<GR`mv|…‹••~nW:%!6Vu‰ˆmWH@KZoˆbRKDIXek[6.CF9ÿûÿéÿåÿö ÿöÿæÿáÿåÿñÿýÿýÿñÿØ2{…Rÿþ3…®—\#<jŒ–uEClƒk4ÿè?„ÀÀ”P++0Kay”£«Ÿ”z_@ )BVetz€|th]XU\hw†ŠŠx_?$Fl…–ŠuW>9<Vzv^I8:FWe^B")=C- ÿêÿÒÿ×ÿìÿðÿÛÿ×ÿâÿíÿñÿêezO5н¤\.+GsŒ‚f>4YqiO,=n“zKV… ±£–wU6 4Nh€Œ•Ž‚qe[OE<859>IT^iloiaP8''3Pt ”^8'*Ii~…oN-7TfX5#-& ÿèÿÒÿÌÿàÿþ ÿçÿÒÿÎÿØÿèÿòGgDÿÿ6‰¿¯f#&ZƒŽ|O%<j~m>\ ºªeÿëÿÙ OšÎÐÆ”c.ÿþÿäÿÑÿÞÿìBtœ­¼³§ŠhI50-///00.+(,3G`x‹Š…mQ7$:eŸ¥…T%2b„€g95bpY&ÿ÷'! ÿéÿÇÿÄÿÞ ÿýÿãÿÍÿËÿÛÿð_8ÿùÿô({®Ÿ_(M„‰gE-$4L]`I=n†ƒ\/Cw¦Æº¡l5 ÿðÿôÿþ8Wr„˜›—ˆ~p`O<1-29=;6674/(&%1C\vŠ ¡šyO% 7k¢ˆ\, (Nptb7ÿú 5PL6ÿõÿðÿý ÿäÿÄÿÆÿæÿâÿÄÿ¿ÿÙ3ÿõÿÔq£ŽLGz‡a+)Gcs]/ÿåÿþ=}™s*ÿíÿÒY·úöÖ‡@ÿÕÿÓÿåXŽ¾ÎØÁ¤wM/,:HY_\TVYXQI<,!,Jq’¯©—`ÿäÿÀÿÚ Tž¶¬n*ÿðN~”p.ÿòÿÕÿñ#R_< ÿáÿÔÿéÿßÿÅÿÊÿë ÿÖÿ¸ÿÀÿÚÿÄÿíT¡‘G@w\/"HcdS.ÿýJxzRÿó<‡»¯‚4ÿõÿáÿæE}½äùãÌžo> ÿòÿÞÿåÿð!7FVq…‹””wcE#ÿæÿÝÿÙÿóBw¢ÐË­cÿßÿ¬ÿ»ÿç8ˆ®¶;ÿç<n{Rÿèÿì@K6ÿÓÿÂÿÓÿ÷ÿþÿÖÿ·ÿ¿ÿæÿýÿÌÿµÿ˜ÿÑ6‹”S Cw†_'&JedBÿùW}t:ÿõÿÜÿúO±Ó·HÿÍÿÿ`ÿ¬ ‰ò*_IÀm$ÿàÿ¾ÿ£ÿ³ÿÊÿõ5@<@EDLby„‰—š”~kM)ÿäÿÑÿ¾ÿÃÿÉÿíU¨áâ¬GÿÔÿŽÿoÿ´‡âÝ¢2ÿÑÿ·ÿÙ2†˜hÿâÿä1G-ÿõÿ½ÿ©ÿÃÿíÿïÿÄÿ«ÿºÿëÿòÿÅÿ£{Y*gw]3%Ha_D6F5ÿáÿâS{~Cÿòÿ¶ÿÿÙ-Ÿ1A Û;ÿÿÿÕÿÕÿÒÿï=b~ž¥œ}bH.!#+AOT\TC&ÿûÿÞÿÅÿ¯ÿ­ÿ¨ÿÊÿþJšÒó¿Wÿìÿªÿÿ·}Ë¿…%ÿÙÿÓSsY'ÿöÿáÿö 7ÿæÿ°ÿ¢ÿÂÿñÿìÿÂÿ«ÿÂÿòÿäÿçVŒc .\qT(.IZU9 3+ÿÏÿªÿ [‚TÿûÿŸÿcÿ–ÿú“ e‰Cëmÿþÿ·ÿ|ÿŠÿ¨ÿñ.n±×ëâêÛ¾_7ÿñÿãÿÍÿÉÿÓÿñ (H[`Y^YH)ÿòÿÈÿ²ÿ¡ÿÆÿûXÉLº&ÿ‹ÿOÿ\ÿßsÚÿ©&ÿ¼ÿ¢ÿå2hg-ÿðÿÒÿë% ÿÙÿ­ÿ¥ÿÆÿóÿíÿÁÿ®ÿÂÿùb_,'eze>$4QYG+ !)ÿíÿ¹ÿ²ÿÞ#\P ÿ¯ÿmÿzÿ°x«ÀŽUÿ»ÿ‘ÿyÿ—ÿºÿ÷3d‰“¡–~`[K!ÿêÿ¸ÿœÿÿÿƒÿ{ÿsÿsÿuÿÿˆÿ–ÿ¨ÿ·ÿµÿ½ÿÝ)=WVIÿóÿÉÿžÿ¦ÿ€×ü£ÿ›ÿtÿ„ÿîh«œ=ÿãÿ¸ÿÊRa6ÿñÿÐÿÙÿö ÿÙÿ¨ÿ›ÿÇÿýÿæÿ´ÿ¡ÿÌ,<Vl?.6Q]Cÿüÿù# ÿ×ÿ«ÿžÿÒ3siÿÿnÿ”¡îþ£<ÿÒÿ~ÿqÿrÿ¸ kÀíüâ¬{M ÿ÷ÿó7DISWVPHJTfi~©á.V^`-òŒÿ®ÿOÿ[ÿ’$ÔE}qÿºÿ'ÿ.ÿ“3¥£Uÿáÿšÿ¯Vc)ÿæÿ¶ÿ¸ÿßÿÇÿ•ÿŸÿÑÿüÿÖÿ©ÿ®ÿ×ÿýKkc<6G<ÿïÿéÿû ÿèÿªÿpÿfÿ‹ÿÃÿéÿÐÿ{ÿ0ÿÿbÿÞQ‘fÿ«ÿfÿgÿ{ÿ¿<u{l-ÿòÿ«ÿgÿ3þÿþîþäÿÿ'ÿ_ÿŒÿÈ^£Éãåîòóù8_~‘¨¥’nZE0 ê©^ÿûÿ†ÿ0þàþûÿEÿÛ{Ôõ’ÿ€ÿ9ÿnÿÚGuCÿåÿÿ«ÿø9I ÿØÿ¢ÿ¢ÿ×ÿîÿ¸ÿ˜ÿ¤ÿÙÿüÿÐÿªÿ¨ÿÙÿôÿýOo_/2(ÿèÿÝÿð ÿÁÿÿˆÿ¸ÿûÿñÿ²ÿ}ÿ¸B±îäC>uóg®Mâ‡V/32Rv³â0š a|’‹ˆŒ“µØpË-TgªuìeªuRÆ5{ÿåÿiÿ‰ÿï N{IÿÀÿGÿ?ÿº=}Mÿßÿœÿ¤ÿè1Dÿ¼ÿƒÿœÿÚÿóÿãÿ³ÿ”ÿ®ÿãÿüÿÇÿšÿªÿšÿÂ4?$76ÿäÿÆÿÄÿÔÿÚÿ¿ÿÿQÿDÿtÿ±ÿ¿ÿžÿNÿUÿ·ž˜oü.\‘ëkýi¯¬ª„[5+c è&YŒ³ÃöSÞmÕ   %    ] –  / é G € ] 3 ÏŠyrå‡v]›àtÿüÿþ-ƒÄšÿyþöþôÿMÿÔÿÎÿ—ÿ¢ÿÜ$ÿçÿ”ÿvÿ“ÿÊÿïÿÔÿ£ÿ“ÿ®ÿé ÿêÿ°ÿ”—“™~T**CH2 ÿìÿèÿúÿù 6#Œ ®Ê€¢+ítð° ¨ ¼ Ž 2 >  Ä Š ‰ ð h  À_þhÆßîÒ¢¢ÜTÉA2* #cœ!Ç£ž;°IÁo[• Ü ! ÷ ¸vCùAW¯˜¹Œ¦ßÑQ„ÿÛÿ•ÿÔ0sXÿ¼ÿ­ÿÝÿÎÿ†ÿiÿ“ÿÕÿæÿÍÿ ÿŽÿ¼ÿõÿàÿ«Æ^ø‚/ÿ÷ÿìÿæÿàÿÃÿžÿzÿuÿÿµÿªÿ½ÿåt5#茸·&¯  # ô Õ é<‘ÜþÐŒV[ÔR*ìˆ+q¥v7Ñ^;\ÖL¢Êº²§£±´â šOPg9ëÚ¸»«ò3/Pµž” Î ) 3 éøeGl'Ï3Vxÿÿÿß ÿòÿ ÿaÿ]ÿÿÉÿØÿ ÿdÿiÿŸÿØÿíÿÃÿ–ÿ£ÿÓÿлŠ\T´3öœ] M•÷Ÿd½/µê # z & æ}±ÅàCÌa–©Þ¨Ï7õ $!!!û"x"ÿ##/"Ü"v!ø!q!Q!x""˜##@#:#A#@#K#P#:#>#F#·$U%G&D''Ì'÷( '&è%Ž$5"` ui}ºõgâMÁ& G T g%X‚ªg¤T,ÁQÿèÿÈÿéÿõÿ¶ÿ…ÿˆÿÀÿ÷ÿðÿÉÿ®ÿ¶ÿìÿú vp|ä «D^”'œNØ ¹ · ‚‰ópÆ–hî— a!õ#j$M%*%c%e%/%%f%í&Ð'‘(z)…*‚+b+õ,Š,É,ý,à,²,m,,-,-\.&.»///4/Ã@8A¨BíDDÐE™EëFEñEŸEŠEÖFG*G™GÀG§GµG½GÇGµG‚GZG*<ä;9Ò7Ö582|/š,Õ*j(.&2$2"…âÈÆJ‹  °@þQgäIÙU!7ÿþÿ¼ÿ¢ÿ»ÿí"”Ì?úì¿düÎ?Œ´–¾| Ü#³' *Ò.t1¸467Ó: <>Ô@…AÚB§C¯DŒE‡FF'EûEúF;F†G5GÓHþJeL+MîOmPÁQ…RYRŒR™R!Q‰QQQPQ˜Q½Q¤QgQKQEQFQJQ4Q2Q/QˆR RàSÛTŠTþT±TcSTR'PrN¿LöK8I¸H_G/F D”Bÿ@Ä>f;‘8±5á3+0ê.í- *ì(Œ&#²!”›µQ^Cy`’  M —ø³Š™w™ù‘ósÿãÿå, ($; Ó_2ÚˆkI‰ T"«%g'Ô*Å.1é5Ø9ZÆA$C^EìH‡;û9³7½5¹3|1.]+¿)S'H$÷"Ø“ÔÐàܨ ­ $†ýËéÿžÿd6r2d.+8(ô&È%§$f$*$ $ð%Î'‘)y+ë.*0µ3 6;9ß=ÊAaDmGMIÎL‡NõQWS.TôV/W^X@YBZZõ[B[#Z¬ZYZZ×[Ù\â^d_ýa¡c?d[eHeeåe¯e\d¯cÿchcbÒb¦boba«aWa+aa`è`¾`‰`Œ`²aa‹aùbMb„bØbíbåbzbaV`‘_w^U][ÈZUXéVõTÓR(O}L¥IËG&DŸBv@r>nÌBOF3J MPPSUÞX²Zë\è^D_Â`Êa·bJböckcýd c©c&bècHcÎd×eÎghVi™jÔk•l+lDl|lRlk~jêjTi×ivih¸h?gÐgpg?g!gfîfÃf’f‚fˆf¶fãgg5gXg‘g¾g×gÍgÔg®gŠg f}eŽd¦cobL`³^ÿ\½ZkWÅUR~OîM£K~IrGhDùB,?0<†9ý7x4¼1À.°+«)"'#%"^Ÿ©o( M‡X•CJ§GC}@D=û;À:–9s9Z9:;x=Û@#BªDÍGeJtN Q§TíW¿ZA]>_åbIcÞeLf@g}hThîii`iwi§i„hÿh–h‰ii¥jvk"kàl½mŠnOnºonûonþnÍnWmØmFlÇlSkÞknjðjŽj:jiòiâi¿i¦i–iœiªi½iÎiÌi¹iii†iniiiti¡iáj j.iòi¦hìh;geîd;bp`>^[ËY‹WYU2S"Q7O L•IÇGDKA³?(<˜9Û6Ñ41á/®-)%Â!“¨ï!´X Ž ±ž³T*PùMÅJÆH“FuE`DVDQDE0FÚIyKºN-P{S@VyYÑ\Õ_aaÐdf¸hàj”kˆl’mXnUnðoIo7o@o"o nÊnQnnn‘nòogoÊp=pÍqUqÔrr qøqêqªqWpÎp>o§o$n±n6mËm[mlÑl´l–ll]lRl^llžl¨lªl„lOlkèkÎk£k–k‹kÍl1lÌmnmÝn8n mÆlõl,jìi¤güfVdub‘`—^£\¶ZòXøVÑTCQ¥NèLÜ<{:7^3µ/ˆ*Ö&‰"sHl”Dï a ö[4X®V S†Q¤OãON*N8N OFPöSnUfW˜Yù\ª_bdSf4hKj/l'm€nsn÷oÊpŠqQq¸qíqÎqÈq®q—qrq8qq*q]qtqžqÐr#rˆræsiÜhvfæeXc±b`U^ƒ\dZ?WÛUWRìPãNÇLFI‡GDhAÄ>,:5;0È,‹(Z$s wê_ŒåaÒ_ü]õ\Z—YOX¾XX:XWY}[ ]#^Â`žbÞe6gRij²l.mðocpŸqDqÁrr»s\sèt t:tsôsÝsåsütsÿsùsúsüttQt•tÔtúu%utót…tsfrÁqýq,pdo¹oncmËmNmlælÚlÂl¾l¥lÑm2mÊn[n¼onónÐn’nzn]n"mèm˜mµnnñoÙpÙqÒrvs s rúr_q´pÇoýon&lükÈjYhîgXeÆd bZ`j^=\$ZvXÏVóT¡RJOrLÖICE!@7;y6í2¢.¯*Ž&Æ"ûée†dKbÝa‰`”_¾_h^ø_$_i`ia‰cdfe÷gÖi’jØkðm`nÖpRqMqñr)r‡rós„ttjt‹tžt“t„tœtìu@ujuYu5uuuKu‹uÆuíuäuÞu™uLt¹tsUr qÞq p@o™nõnmflÜl£lhlTl3l,llGl¼m{n2n¼o&o9o;oo&onôn½npn‡nàoµp„qnrLssÆttbt s„rµrqzpÜp o)mýlÄk`jh¢g[eødZbÌa†`a_Q]µ[ÐYV S1OnJÍFAj=/9d5r1Â-ñ*É(ihNgef™fepe1dße eYf#fÒgäijŠlm/mán¦pq›rÉsJs‡s‡sÐtAt¾u%upu…uˆu“u¶vv«ww8vüvÄv•v†vžv¼vÏvÝv­vluâuYt˜sÍrðr"q`p‘oëosnûn5mmlÏll_lkëk©kÕlHmmØnynÿoDoo oâoÿoüoÊovopo­pvqNrGssÓtuu›u¢ujtÐtZsÛsorãrOqkpeo0n lûl k j ih5gglélƒl‚lÌmomúnqnÔooOoƒoÐoûp oäo–o|o–p;qrr×sttˆuucusutÄtKsäsrsrxq¶p¿oÑnön,m‡lÙlPkÅkrk…kjThUf/c(`j\ÝXÉTpP~M IÃFC?Å<ókÎk‰k(j×j†jißiÒjjDjšj·k\lŸnnÌoapqNst{uRuju’ušuÆvv?vjvxvv†vÊw=wÖxox¶x¼xyx^x9xwÙwµwgwvcutdsfroqepoÉocnúnüo9oofo9oHomo‹o}oSnþn‘ncnƒnæo/oXoioYoLoKocowouoXo!oo#o¦pLq?r4s s²t!tªtüuBu7u"tÍtitsÓs’s*r…q×qpooío€oAnçnÅonún´m:kTh fsc§`S\XÿUÛSPxMUJ@GulŒlAkêkškPjêjÌjôkSkvk«kÊlrm¥nïo…pqr‰tuTv%vRv‹v‹všv¤v¼vÉv¹v¹vÍwwwòxZxŠxžx~xqxJxwØw­wLvÛvusÚrÏqØpÇpoZo)nïo)o›p#pZpzpÃqqeq„qŽqOpðppŠp˜p˜pjp!o±oBnên¨nˆn]nCnn$n*n‰nûoÎpÉq¼rxråsOs’sîttIt"sÏsosQsAs"rÉrTq¸qp¡pFp oêoÝpoüoônðmck i`g>dÈaã^ê\@ZXU¶S%P¨m«mXm l¾lˆl;lFl§m"m7mHmmnop4pšqrt9s6r,qpBoŸouo6ouoôp¡qqZq·rrSrrr‡rNqòq†qKq&pþp²pMoÀo/n°nEnmÄm momjmhm´n nµoƒpWqqoqÙr+r’rãs9sFs!rárÒrÙrérÏrrq¥qKq q qq8qVqFq`p¹omÄl_jÅifýd¢b|`æ_ˆ]×[àYÒnýn™nJmömÕm­mên|o oooToñpºq{qÅr;s7tquov)vöwPwkw8w0w%w vúvìvüwwEwqw°xxHxSxwÇwrw>wvÔv‰vRuóu†tÌsøsrqkpãpºprpœq q°r$rqr¼rçss&s/rùr©r8qÚqq,pÉpZoÎo8n¥nm·mpmKm lælÆlìm m¡n3nßowoúpypäqRq¬rrArVr;r'rr#r"rqËqqfqBq_q¯qÿr#qüqþqrp™o6mðl„k4i³gáf>ed*caÊ`Tp†p%oÞoo€ovoÚp“q0q7qq`qãrZr¿rãs>sÿtðu¡v/vówZwhw+w(w%wvøw w)w,w=wew¥wþxwúww$vÌv˜v…vdvJvOvuÂu t@syrÓrxr%rqír#r™s7s¢sät+tWttœt¥tnt2s´s(r{qÙq9p¤p ocn¸møm~mImDmlÌlil:l-l’mmÈnkoo“pp•qqjq¥qÝqØqµqˆq‚q“q•q›q£q¸q¸q÷r‡ssXs6s(r¨rqoØn…mplYjøiÎhþh~gïg8fPqáq‡qHqqq.qµr…s+s?s%swsãttAt^t¡u u”vvnwwWwSwwvþvàvÒvîvþvÍvžv¯vÕvùvÉv[uµutÄt˜t´tÅtãuut¿t7s´s\s*s8s9s^sxsÎtTtæuHu€uÃuîv v/v9v uðuttÎsÙrëqÿq-pho˜nÄmÂml×lÞl·lck×kok0k‚kúlÏm•nXoo”p=pÃq5qtqÉqÙq¹qzqYqdqwq´qørHrrrËsrtttˆtdsÊsSrdq/oÈn›m“ljkjèj•jAiæiis3rÕr•r^rŠrËsvt]uu:u/u•uõvvv.vivv¶vâw wƒw²w›wMw"wvÚvÇvÛvÉvcuøuæuåuÈuXt½sûs2rÔrÅs"smsªsÐsÁsœsushs†sªséttht­uu¯vGvÆww\wvwŒwŠw–wˆw–w8v–utxs_r`qhpoocnm#llgl'kØkTjãj}jŸjïkËlºmºn€o)oøp¤q0q‡qür'rqßq³q»qÞrBr®s'susÝtu$uÁuÕu¦tût”s¼rq oânèmïmWlÐl lylhlFss8rþrÞs7s©t~uwvhCh2hGh^h®hõi˜jfkmlWm=n0ooÅpdq"q®r!rCr;rHrs4sÞt£u[uõv|vëw wÜw°vívguƒtrsq´poÊouo nïnÚnòorãr{rorŠsIt/ucv‹wvxx–yHyÜzLz‡zñz÷zŸzyãy£y$xuwßwHvªvu§ut=sq×pKnÃlàjæh¸fpd}bŽaªazXz{zGzyÅyžyBxíwìvòt·rn[j¯fÛc+_ß\vYõWŒV˜UþV|V¿W~XYPZÚ\ì^Í`ßceAgqi†k³mzop'qPqâr r0rys2tuCvfwIwòxYy yPy[x¬wÏv¹uïu-t!sUrÛrÈr“rŽršrÁråo'oo…p9qstmu–vXwwx5xÃy„yáyåyxy)xÐx¶x=wRvu tRs±rÜrpFn*k4hŒe5a—]kY7U:Q@NQK›JNII IJ[K¿NqQTøY7^byfÍkWo[sSv xsyz°{{n{[{RTCVîYp\;^ùaÌd£gjjVl¼nßp?qÃr…ròss@sâtÍuýwwíxˆxßyyy¹yÜy@xIwviuÚtÿtYsøsêsºs´sÀsìt nmönžo…pôrfs«t¹uQuÙv4v¢w#wæxJx1w¼w™wvwmvîvtÕsÊrärIq`p_n7k±hdµ`”\8WlRšN.IÄFœC¦BbA?A•AâCåAHEOI–NÛSØY?^ædwjn‡rÛu§xHyšzù{x| {ê{ÚzëyëwÜvrn|hÁc]W…R‹MvIaEBËA%A‘BCEC¨DÄFHIZLÃQUY/]^ašfiñmŠo÷r]s t¾uu\u¶v|w‰x‡yAyÊzzLzkzºztyxŠwýw§w všvu¼uvucuBuSuŒlÐlâm¶nÛpOq’rssCs‚s‚s_ssçt‡t×tt!tJt‹t§t7s‹ruqrpzpnâmfj;fÊaè]WxQ¿KäF @ë;Ã8O5(4)3‚424{5g67û:"=ÞAµFÆKÇQ”W‡]¯càiQn«rsuôwÏy¤zV{:{*{yâxªv,sðoÌjîdq^ WšQ}LF”B8=·;o9Ô:j;4?‚BzFJóOwT?Xø]ÆbÛg`k²n§qgrÓtAtÌu%uhvw x xÔypy¬yãy÷zUzCy«xÑxbxw¾wEv¢vuÐu¿uˆu€u©lpl„m_n”p qDqÿr°r²r\qïqìrEr¾rörŸrKr–s sNsrqžp³o·oUnl@hydv^ÏY$R®LÊCÜJP?W]ÿd}jÝo’sûv\x—yPzAzyóx–wGttqÈlâg5_×X˜QJËE?-:Ÿ5Ý3ƒ1í2³3}5 5ò7K8|;n?LD¶I»O T6Y_'dIiBl§o¡qrÅs{sêt"t½u¨v­w”xOx¡xÖxìy[yy0xžxUx%xwªwvcvvuÍu®uÆmm mïopuqžr8rÁr|qÌqpËpûq,q7pÒp—pæqzqíqìq¸qpYorom•kƒg&b‡\U¨N†Gˆ@Í9ì4B.¦+l(º(i(G))F)É*M+¸-0 328=C€IðQIXí`Igwlír,uw¦xTy8xåx¶wNvrûoüj†dT\ZT}LÅEh?38ö4=/=,Á++ß,./,0·1ã4Ù8Ö>žDIëO‰U>[U`åfbjmKnÃp{q2q¥qÕrZs7trRrÃs'ržq˜psoèoÕo°o‰o nào&oÒpsp¿pÒpapo=nùm,jÕeæ`¨Y{RbDñK6QuX]øc÷hk}løn¬oDo¥o¾p'pîqçrãs±t tht–uufu•u˜uu´vv0u·u%uu=utít÷o³oíp¢q”r’sos¬sßsqÊpSoyon¦nLm´mƒm«nSoo†oÈo—o˜onÃlµj+dß_2W‘OìGñ@I9J1í,G&ï$|"«##`$"$d$$$ï%3&ÿ)-“209@HƒQYƒaÌhqoräv0wxEwýwåv_tëqŽn-hPaçYQDH•?ã8I1+±&#"!!I!6"?#$Ó&)$--39Ú@ÿGÑNŒUs[¬bf†jVk÷m«nnananªoRp3qqÊr%rjr™røsRss³sËtt•tÜt}sþtt\tWtRtmq­qêrxs1sßt{t}t{s|qèp(o nwmÁm;l„lGlUlñmŸn6nˆn„n×nrn5kåi$c‡]~U‹M£E‰=Á6Ä/f)ô$î"á!l!ú"L"ò#A#W#E#e#E$Ž&*B.Á5³<ÂE5M±V1^½eÂlˆp£t@uˆw!wwuwsúpœmMgy`ýXˆP¢6Ç/C)À$! êÆz !u"R%(­.Ô5B<àD%KYR”Y"_ødêi#´#»$H$é% & &‡&½()¦-š2@8Ã>õE¶LeSZ5`)e¦húlm`néoip%oªo/lÖj†eœ` XbPùHÑ@e8Ÿ1*+ª&*#R!! Â!I!r""A$+&’+Ð1§9G@‹HO™V¤]þcŽhŽjômmymímÐmÖnn¤o@o”o«oÉoápp2p\pŒp pòq¸rEr qÆr&rásbsÒt9wéwŒvñvauËuht¸sær\pXndm lJkYj­iìi©i‘j j•kSkül‰mrmam0j³gäb]\hTËMaEÕ>V7»1,X(&L$÷%C%%½&¤'ì(×)î*Ñ,Ë.÷3,8>,C¾I7N›SÔY}^4b‰e g6hii¢jÖkmkèjˆi dè`;YZR£JäBÚ;43Ù.O(Ú%á#L"ê"§#K#g#ð$*&(>-(2¨9ú@øHaOÓVß^(c®h®k%m\mÐnYn:n5nInªooRogoŒo²oÔpprºst0tºu0yxpw€v—u¶utSsZq¼o±mÀl]k–j¦jiXi$i i‡jjçk·llmlm_m.j²gäbv\¨UGNFÀ?d8á2V-¼)q'œ&"&N%ý&Í( *+…-N.ò1•4g8Ü> C²HªLäPùTÂY\É`&aàc!c`c²dneÿg•i h´hd©`»Z~TsM7E¸>L7 1Q+È(ˆ%€$µ$@$Û$Ð%K% 'Ž)·.b3Ÿ:¬AxHÃPW ^)c˜h’kmkmñnƒnWnBn0n_n¡n¶nÅnío o?otoÄp)p_pÓqºrr›r¯sNt>u u±v;y:x‰wyvjustÍt sq“o¦mÌlkk j¾j3ii`iIi¸j4jükÏl†mwmZmj­gùbÞ]}VšOÏHÃAÂ;y5)0ƒ,)Ý'ó'Ä'#( )‚,.0£36}:>ûD‹IâNaQ~TsVÜYß\H^j_=_™_m_c`@aßd fHg g{dûaç\GVÔPIAí:²4™.Ã+'g&%O%é%Ú&œ'])®, 0¤5À<‘C=JZQnX ^ÂcîhÉklmÕnuonÓn²nn~nnynznnßooGo¤ppdpîqèrÌs sCs÷tüuìv¸w_yxÅw vtuet°s÷sq¬oÞnl¸kæk j€iÖi“ipiÈj"jÉk‰l7mlòl–j=g¯c^/WáQ„JÈD/>,8 3i.Ô,$)¬(ú'é(É*[-^/Ø2÷6 :%>‚CèIüO5SbUŠW™XÁZw[~\'[÷[[L[<\O]É`.büdÝfpe bå]ÑXÕRDKÊDº=g6Ò0,D(&J%-%×%à'(7*î-‡273=óD­K¾R¥Xô_Wd[i8ln³o{p)oáo½omoFo"nÛn½nÎoo;ooÙpJpqr ssgs±tkuvwxIyx×wÆv¥uŸtñtQs”r\pÄo!mÕml4k­kj­j|j±jÙkGkÙlbmlÔlUj#gÛcÏ_¨ZT>MþH Bˆ<ò8;30A-.+ß*L*ò,R/v25–9=¬BœHeNÎSâWÑYJZÈZö[x[!ZcYhXXŸXÏZ[k]Ã`Æc`eÌehd9_Ç[7T½NGr@ 9-2¨.)\'U%ö&Ä'(Â*…-0o4ð9ø@ŠG.N TŸZ‚`ve6iïlÝo‡pcqpÏp¡p3oèoŸo7o ookoªoýpMp©pàqjrfs]s¶ttºuÔvûxyy”xýxvéuêuAt²tsq©p5on4mvlýlglkßkïkçll‰lðmlm lgjchfdôaj\xW(QlL-GDB8=Ž8·4ì1K/h-X-».Ø24¿8¨<“A½GDMZSîX¯\?\þ]à] \6ZXƒVûUïVmùmÄm»mŸm¶nnDn€m÷mAkviÃfÚcÕ_‚ZÅU®Q-LëHƒD?H;/7Q52Ä2ã3­6¶9e=xA‘FÞL„RuXÄ]`)`a`Ä_;]|ZêX>VzUUUÇVWµYY\&_}b¹e×fºgAdc`ïZÒTÞMØF¢?ý9Ñ5J0d.,Q-V.E0æ3ˆ79÷=êBXGõM¹S¡YD^:c8g-k&mŸoÜp’q>pæp…oÊo'n³nBnNn‹o)o½pJpµqq?qÅrºs¼t9t¯uevŠwàyôC>G}LÆRaX ^ aÍd}dcÓa†^ü[¹XiVETÍU%UTVîX•[}^ÐbGeÆgah£fœcþ^’Y7R˜KÉE?Í;˜6â4s2§3§4Å7¶:©>6A$D¨HžM€R…W¢\`Ûe-h‰kæmîoÇpEp¾p?o¡n³mèmpmm.mˆn\o4ppœqqMqÝrÞsút¢uAv w=x©z{ryðy‹xßxwcwv¾vjuÅtãsÜrêrPqéqÄqxq;pýpëpïqqEq7q pPo—n=líjÎh¤e‚b^2ZçWªT`PLGóD0Aì?p?G?½B‘EHIfMnRLWg\vaÜe)g…fìfMcÈa/]öZŸXSV¤V¬V‘WçYN\_bceöhihIfb*]¤W»Q¬LGCe?,<ì;2<)=d@rC†FûIÃLÉP9TFXe\†`dgŠj*lÌnBo’o­o½nñnlíl k£k7k|kòlüno*oôpqpÍqhrts¨tyuBv'w^xÔzC{¥yÚy›yx{wõw¿w§wvûv5u;tRsÀsos[srÒrŒrorwr‡r”rJqãqp\þZ¥XéX½XjYgZr\Á_Qbeÿh^jDiŸhÅeRa~\2VêRM½J‚F®D–B÷CûEbH™KÔO9QâT|W…Zß^7ald—gBiækÍmÂn²o{o(nÁmžl\k)j7iÛiii¿jQk”lôn:o"o¤p p°qÁss÷tâuÜw x©z&{™yyx·xKwúwöxxw‘vØuåu tŠtJt>sûs²smsJsOsCsr”q÷qp nõmÍlDj´h´fˆdHb[`k^—[öX‡TáQ¹OM*LwL4MðO¬RÒVYó]ùaäfhšj¯jtiùgêeÿct`¢^o\Ó\y[ç\z]-_a/côgi;kj³jWg¡dZ_¯[/WSaPŸMaK³JbKMPFStVœY[J]è`cBe«hj kðm4n˜oogn®mÙlsjüiÈhÜh“hhvijqkïmCn(n—nöopqÉrºs¥t•uÉwCx´z!x0x8xwÛw¿wêxx1wÑw$v?uutát×t™tNtsÙsÕs©sUr”qÀp¯o´n¤mleki•h fegd-ca)^^[XFV+SçRùRXS_TdVÐYZ\Ö`rdg»j"l5lVl8jžifÝdYb:`«`__C_Êa™cyeåh‚jfkôkÑk·ifÀb´^ê[uX?UïS_RGQ_R£TrW®ZÕ]¾`aÑcõeøgåi‹kIl–mÄnio?oQo%nlækYiÁh‘g«grgg_h injúlMm%mzmÅnHo.pPq4rräsöuOv¬xv¸vÎvÂv´v¿ww1wJvåv4ubtËttxt|tQtsïsÔsäs³sHrdqtpbomn‡m°lÂk©jŒiˆh½hgnfùe§cš`ç^~\‹Z—Y©XäYeYà[—]h`Ec]f§iålnnSnumElj8hf(d¸dbòböc€e;fìhòklˆm¼mŽmrk˜i+e©bZ_^\ŽZ½XéXkWßYZó]í`¼c/e*fh$ijÒkùmFn8nûoCoÃo—o*mól¨kihug©g‚g gthi[jÑl lÊmm2m’nQoIppÄqhr9sKtjušuOukunuu¤uïvvu«tét&s¹s»sÌsðsäsÑsÓsêt4ts±r·q¼p·oÜo,n„mÚlülDk½kˆk[k;kXj³ipg`efc¢ba(`Q`g`…aœb±dÀgiÖl”n~ppBpWolnžm/kqiÓhœhgAg_géiRj˜l mÝop oæoén{l‚i€f‡cía`r_k_s_(`7aüd f÷hÛj}kvljm m»ndoFoépLpAppp omnl°ki†h~gÎgÀgig®h0i]jÃkòl£lÇläm,mÏn®oboþpƒqqçr¿s²s¯sØsåttCt†tŽtts;r•rWr™rÛs(s>sSsŒsßthtst srq0p„poœo(n‡nmâmún n&nqn2m‘l1j²iFhgŽfÿggTh%hÑj!k¶m²oÏqGr\rGrq6po€nlÊk¼kTjäk7k¼lÏm¾nñpnq˜rvrrr£qoöm[j±hsf£eìePemeeÇg!i jÆlmNmõn`n…nÕoRpp˜pëpÝpÿp¡pnèm”lj¢iÀi4i8hëiiƒjŒkÖlõmœmºmÏmÿno7oÒpMp¬qqzqôr–r;rgrxr¾ss9s+sr™q×qWqMqËr?r¯râssysöt¥t·t;sr%qdpäp´pop6oÕo°oÆp!pip¬qq p÷pMoRnRm¨m‰mgmºnnÀo3oãp½qás5t-tât¶tXs|rçrpùoÐn±nmménToHp"qwÖwIv{uÎutDszr¡rq¹qÒqær_rás©tquSvWww°w`v‹u)t&sOr‚qÏqp]oµo\oo+oOo•oèoão^nìoo‰oépRpÀqqbqlq}qpHoonênÎn¼nÕnµnàoApqqíryr‰rrorerir”rr0q…páp8oïlm”nropZpîpüqpÌp„pxp±q3q¦rr2rirêsZsÈs‚rÎq£p–oîoŠo£oªoçpprpâq]qìrqÚqwq}q¥qqqYq£rLsŽt×vvëwxx'xxÍx¡xewÍw9vƒuÜu,tdsÁs.rùrÜsss]s¬t?tÜu¨v¤wIw»wUvªu™tÒt s0rUq€pÑpo±oEo:obo›oªodnÒnpnnôo4o†oðpPpžp·páp­p o›oxo±oÓp p(pypçq¥r’sSsÕsÏs»s\s r¬rŒqÿqoŸn;lÑkÚi^k¬mn®o prpŸpÂpžpp‚p²q qXq–q²qår`rÆsr¾rqp)oo-osQsVsrïr·rŽrBqÛqUpæpeoÖo1n…mëmcml€lLl7l”mm¤mün)nVnnÜoHo¹p/pŠpýq‡r@s!sÉt"t+tqtlts£rio¡l£h¦e3`¥[[U?OrI÷DÒFyLGQU{Y]`¸9S<^BOGZLPT‹XD[©^2`Îbæe#fÁhhõjQk†l‘m$m¤mÒnn%n|npmÛm3lým5m\m¯nn[n…n6mÆlÿl!k~k!k6kk{l7m}nâoíp±pˆpZoJn4lZjSh eÍdbÕb `î` _\_M_j`-`Ûaóbódxf7hRjxlDmÉn¹o³p\qqŒqÿr:rŒrŒr[qîqœqLq p²pGoÃo1nÅn{nln]nXnKn)mãm½mÇnn6nunnøop5pÐpêpÌp%o·n¸nk¨h…c‹^¿Y!SäM¾Fà?®8è2þ-L1½7VQBAFIKØNbQhTVW±Yâ[ô]Ì_,`|aŽb¶cÊe)e×eÉeLe8ešf9fëgwg‡gZfæfªfhfe³e~ehee.e£f[g$g-fÐe^cùaÝ_Ù]0Z>WSùQ¥OØNÃMAL)KJïJþLcÏa~] WºP×JªD:=Ã6ê/¸(Â!ýcþŽ"&w*¤.‡2˜6F9Þ<Ë?gAÞDíGÉJLNtP½RæTªVVW¿Y8ZŸ\_]k]À]~]†]è^ž_`_þ_ú_’^î^¦^•^z^j^\^B]÷]ë^Q^¿_^ˆ]‰[ˆY¦WGURWOkLiIaGE[DEBÅA¯@—@y@„AÉC"EG´JÜNSR[V^Yü]X_êbpd^f^gïiqj¤kílômínŸoUoÑpNp”pòpîpŸp-p oüoéonÞmþm4l‰lkjži¿ihÃhžh5gÊf/có`á^[XVS8M4F?¦9B2¸,*%NSâ‹oG# &Ê*I-Û0ß3p5æ8ÿ<>®@öClEÃHJ(LM¸OaQS ThUUU=U¦V^W W WˆWV?UÒU±UU•U¦U©UlURU°UñVU)S½Q;NÕLI‘FõD.AŸ?=T<";Œ:‚9°8Ù8Æ8Ö9ý;4=l?‘B©F IéM¨Q$T}WTZ!\‰^ÿa*cMe3g;hâjbkflim"mønnöonînÑoo”@‡B>CëE‘G£IIòJJJóK¡L'L˜LeKÖKJ„JBIõIåIúJIúIíJDJnJI‰H EkBÓ?ï=4:£7û5Í3›2h1°110Š000>1G2X4L6?9;û?TB|EšH¿KÃNºQ‹TfWYÓ\W^ýa"c dXeµfÂgóh¿iRi•iójSjìk/k&j”jiMh gµfÎercÖb`h^ã]•[ÕYøVíSNO'KõHC˜=©7|0å*§$ÇÍ~` i"?¼ ë Œ’-ΰŽ0¼"h%&'ü*-/.1O3F5L7(8ç:–<­>8?)?w@@‰AJAÅBAÀA@C?Û?°?U?(?*?O?O?T?™?•?’>y=:c7¼4¢1¥.¾+Ë)X&á%t$y$;#¡#O"ò#1#ˆ$µ%ì'ö*,Ä/œ2×5ë95<£@$C…FÉJMHPrSRVAX¨ZÚ\^i_ðaybcud$eeïfªfÖfáfffe6dacaæ`]ñ[ƒYdW^U‹S1PŽLðIDÜAq=>8/2 ,& ²j&  É"¸ë#Ô"ý X K U~äZÒkú }"ã$é&Ç(x*[,5-ö/ž1‘2ü3ç4D4Û5m666¨6æ6t5±4ì4¬4¯4k4344(4-4;4n4R463(1Ö/|-*+'H$I!9ˆÛ$Ç:mº{Ä6L!#½&ì* -„1'4Ü8d;¾?.B_E„HJKMlOµQ¸SãUÁWXÚZ)[T\Ñ]ß^—^Ÿ^Ä^k^]5\=Z¥Y%VñT`Q”O5LóJÀHEAR=²9Ë6K1ù,ç'*!Ô±D¬… ‚d tö–¨&-ÁƒÌ { Ù¹š¶úW]ûe ø"Ð$ˆ&W'(‘))¸*G*ø+L+ƒ+*D){)?)\)F)')(ä(Ê(Í) (ý(Ø'À&b$&!ÿpâ4iû¨1õbœ< Î [ˆÅŸMï ;#µ'E*Ö.>1v4Ê7Ó:¸=E?ÛB>D©FäI%KLûNžPXQíS´TÝU«UµUíU•U/T/SLQ«OçMKJcGfEB°@<ý9½6"2Ä/ +A&·!À–Òu£ ìø3ûhÚ> QPoÑ †yâE w æ R ÿáCd·Aòœ=Z3¢<· G ƒ ¯ D{¹tºÍ½X;i].%Õå-CQ<} å ù 2 Ø V  ¢ ³ Û À ¶ [ò$f*ïø"%'Ç*¥-B/³1î4A6’8ú;:=^?BA%BëDÑFH>IWJ6J\J JIIÞHÞHFvD€A½>ê<9×7}4¶1”.¤+Š($÷!,쬊ƒ ô o¦õ/ÿ»ÿÆÿ´ÿ…ÿ¢/ËÍð‰ ®¼skë ‡  § l iÏhøùŒ»9¹R†‚íu:à 8!í”o¿ÜÇN ç } % â‚e_Üxq\]6HmÓ X  ¯¹Ã,´añhä"6$n&•(Ï+-x/Ã1÷4689ë;ƒ=,>e=;¥9S6q3í1n/,L)2& #£!1±ýGç Ý Ë•TOÿ­ÿ¦ÿÃ#ÿÔÿŸÿùkgKKµn8á¬ÀÍ’éM O ¯ ¢  ô 0 Š  O 7 ž ç \ $ \ Ž Ý 3 Q K ó ¡  ¥ ÷ ;JHMp¿sᧆ¸ò6Np^:I= g ‹ +4F[gs˜µ á#%B'h)g+m-+.Ñ001»2Ô3À44g4D4Z3›2•0€.5+›)…'H$®!ÉÛMXIŒaW ¨ C-¨® ^à´ÿ®ÿôY1ÿÿå)ÿÖÿlÿ|ÿÁÿçÿÖÿtÿKÿ³A_X\½‘LpSTÜõþsLþQªÈqäKîãÒH øøˆrómË=ÆŠVH.16`Þ#LˆÁ‰YÐE9eÿ w  Æ¢ˆ’‘¦Ôîù­ F!˜"è$8%Í'%(D(Î)p)g)e(b'$ñ# !6ÔæþŸÕ6U ¿ #ŠôÙÁ8EÿÑÿƒÿ‡ÿÿUÿuÿÆ&ÿÛÿ´ÿË2v*ÿÓÿòJŽ/yeEØ»I$¾Í{ F‰RÙ|4æÖ×(M1ðƒ>û¤Uÿôÿèÿþ2DZvž°ÒöýDÌu}p«ñy  ° KÿÙ™=~‘Šª ¬=Åu`#ÿªþÈ@`õM ‚ ^ × c[±Œ}€*[ÿþÿœÿÿÉ"ÿÄÿ€ÿŸÿø2(ÿÆÿŽÿþrTÿîÿ¥ÿ¨QÿßÿWÿHÿ°J‘2ÿ™ÿJÿ‹6Ðåuÿöÿ¦ÿ¶ QaPÿ«ÿTþÿþîÿÿUÿ¯ÿþ,5JC5ÿëÿÊÿ±ÿ±ÿ¿ÿÉÿµÿ ÿžÿ¯ÿÁÿÒÿàÿÝÿÑÿºÿ¬ÿ™ÿtÿ`ÿSÿ…ÿ¿K༠¥›—˜Á á Ú ¼ ¬ µv½²Ú·Dm½¹Á û Æ ò!9™ãxL8ÿxÿDÿšÿüÿ²ÿOÿ‘ÿãÿ•ÿ½ÿ˜ÿº![ÿûÿšÿÒ>rOÿÜÿšzeÿšÿ§P+·ÿ÷ÿ”ÿøÄTI¾ÿÔ„ú8ÿ£7ÿÒÿrÿgÿ„ÿëO¬ó 'КmWI# #%ÿýÿïÿïÿó(qÕ]ßN¥ì7œ¡Ïà ] ä X  ˜ _ ( ¸ f  y q¾Ùuã»%œ’cÆÓ‚ÿÃÿEÿ3ÿ ÿiÿÇ)ÿªÿ‘ÿ©ÿ…ÿö`.ÿÍÿ³ÿê`–%ÿªÿ¿!vkÿÙÿeÿ‹0õ)ÿµÿQÿŸMëŽ ÿ·ÿ¹pºòãÆjÿþÿ—ÿ=ÿ9ÿZÿ¼b®ÚïãÃ^B=76-)-3/-0>SlzЬ¿Âm3ÿùÿïÿïN»Žv† düÞarÈõù2߉¾&?ÿÿÿþúÿ’A%ÿ ÿ8ÿ:ÿÂ?ÿ¹ÿ†ÿ9ÿæÿƒÿ 2ÿ×ÿˆÿÂ#BÿÉÿ­Žoÿ¿ÿÌM¨\ÿÊÿUÿ…c1I¤ÿÓÿhÿ±{'Jê8ÿÈÿ½ÿÝD¢ë0%ÿþÿ‚ÿ7ÿMÿpÿÃO“Ê 0ñĦ˜ˆ‚y}‰œ¦²ÂÚö #æ¦Nÿýÿ»ÿqÿhÿkÿÛm9‡íØ¢=ÝÐþ€5f  ßZÄ—ŽZÿJÿ!ÿÅjª+ÿŠÿÿÞ<Tÿöÿÿ£ÿòÿÊÿ“ÿÍ<ÿ¬ÿÿÕ6^ÿûÿœÿÍ:ƒmÿìÿ’ÿàh±zÿÅÿOÿ’_*_éÿ†ÿœ/è:¡&ÿÔÿÖÿøV°ö8#Þaÿôÿ°ÿ„ÿ™ÿ°ÿæL‘Èòþþ÷óðííïô÷ûûãÍžh!ÿÙÿœÿaÿPÿAÿqÿµÕÍ ÿÿ^ÿbÿÏ\ÂöŽÿºÿþìÿ’¤BñÿïÿþÔÿsQ‘8ÿ§ÿTÿ²<Rÿµÿÿß6!ÿÚÿ¯ÿµÿøÿóÿ«ÿœ_6ÿÜÿ®ÿÔQ›?ÿ¿ÿœÿð˜ìƒÿËÿIÿ„gR«#-ÿqÿkÝVhë_ÿêÿ°ÿ×ÿûSÄL%ä*ÿùÿØÿÝÿÖÿïKx£Óö)/3," þòÒ§l6ÿÌÿ¬ÿ˜ÿ¬ÿºÿõ< X|7ÕIÿÈÿ†ÿTÿ›»B*¢ÿÎþÿÿÿÒí¢SAÿ5ÿÿ©oÖzÿÇÿqÿ“\ÿµÿžÿÎ?ÿúÿ¨ÿ·ÿòÿÛ#5ÿØÿŒÿÈ2eDÿØÿŸ…’=ÿÁÿš­í•ÿÐÿMÿuF?©Ncÿ«ÿ†ÿÚ”.Q‹&ÿðÿÁÿßtÊ÷ì½zD!ÿþÿý 3NpÇçû#ùß×a.ÿñÿÕÿÙÿêLŽâI#Ýbÿêÿÿkÿ’ÿÉ.´â¾!ÿWþóÿ ÿÏÚ[ ÿ&þôÿ–~Ô†ÿôÿÿŸ OCÿßÿÿÁ>ÿÇÿ˜ÿÞ-ÿ± KÿÀÿ­ÿçWŒ.ÿÃÿÑ-˜¨-ÿ¯ÿ Æ¨ÿÙÿ(ÿG-FØwšÿ²ÿIÿ¬[YÝrÿÛÿµÿÓÿûF×óÙ¾”o][fdht‰¯ÄÎÐÈÉ÷ŸƒeD51CPm‘¼ç" Ônÿ¼ÿ“ÿÉŒ2Rð8ÿÿÿwX<ª"ÿþíÿ¦†ü¡ÿâÿ‰ÿ§iOÿõÿ°ÿ±O)ÿ×ÿ¬ÿ¿ @ ÿ£ÿé9?ÿ¹ÿªkÿËÿÔD¤&ÿ¶ÿ­0ͲÿåÿUÿm5#Ÿ½ÿôÿŽÿ¦=À,í£IÿéÿÆÿào´Øïà̰¡–‚tmru›–•}la_[dtªÆçüäœ>ÿôÿÀÿÖÿüSº2þ ÿÿgÿ»wBmòÿ-ÿÿ°Œï« ÿˆÿž[Zÿ«ÿªÿì5Hÿüÿªÿ¶ÿ÷+,ÿæÿÀÿÎ?Gÿóÿ®ÿÖ1qeÿ»ÿâH¢Ÿ*ÿ»ÿ²#Ù0áÿoÿcÿùé¡› ,ÿ ÿ¥ÿô„éÎ¥gÿßÿÎ8~¹ÔáÓÍ¿®œŒ‚wuy~zvpcbmƒ–§ºÇÖÛáÓÖXÿãÿél»îþ¿Iÿ»ÿzÿxÏVf¸ÿºÿÿ(ÿ컳ÿùÿ‘ÿ¢ obÿ²ÿ›ÿÚ*:ÿÌÿ­ÿä&'ÿùÿÆÿëÿÇÿÓ$_3ÿèÿÊÿñSŽTÿõÿËÿõ^ª/ÿÏÿË:ÅÍ+ÿ ÿzÿù½[… pÿêÿ´ÿôD¥ãéê¹w1ÿýÿôÿöQ‡°ÅÙØÔ²‰xkd[ZYbj{’ª¿ËרÝθ‹W)ÿÿ DŒÎýí¡4ÿÜÿ˜ÿÌIã_<¦ÿÚÿ?ÿQÿè¢ò«ÿ©ÿ²eu0ÿÔÿ­ÿÎH#ÿÝÿºÿÌ 7ÿÒÿÀ ÿÚÿÁÿ÷<S2ÿîÿÓn‚OÿýÿÓ]­©Hÿâÿ¿ £ ÿuÿÉÿ}ÿ¹s/{R¯ÿÑÿÎ!h¤ÍÉši6ÿý0Z†­ÁÐËÆ¶§–„wklo”©¸¾ÅÁ¼®¥i> A„¾èâפf&ÿÝÿà˜0^$sÿ±ÿ]ÿŽ0Çê‹ÿôÿ©ÿÉ'~}3ÿëÿÈÿß>5ÿúÿÅÿÐ" ÿôÿÇÿÔÿîÿÊÿØAMÿÚÿî/mu:ÿ÷ÿãn«™Jÿöÿê6® óÿøÿ¡ÿÕ`iDÛLÿôÿò S‚·° zS4 *Jm©³·´¶¶²¬©ª«¯¸¼¸®®¦–{`F(?p¨ØâܲŒYÿôÿñ=·JúbÿÍÿxÿ°/¯Ø‘!ÿÒÿß+hp@ÿùÿÐÿÚ(0ÿàÿÉÿñ!$ÿáÿÐÿåÿÿÿìÿÖÿÞ<0ÿèÿó-ei;ÿìb¨®u'ÿû"’øÉ2ÿÄÿ·/ÔHZô…) 2Snƒ—›ž‹kJ47C^v‹—¢¶ÉÕÜçéäÖ;§‘‰hM2("=iŸÑßÙ®„Z:, eÁ¾.ÿ¯ÿšÿãeÀºhÿä V„m&ÿôÿßÿåÿìÿÞÿí'ÿêÿâÿìÿóÿóÿèÿÞ(<)ÿúÿâ JeQ!9x›–d%?–òü¶<ÿ×ÿÙ-»%0—M*/=Uk~–›uaTGM^xŠš±ÄÒÚìòìÛÒí“|fG62EUr˜°¹¢ˆdA-*A~Þ²0ÿÓÿµÿýb®²kÿö FolGÿúÿý' ÿþÿáÿê ÿâÿëÿþÿùÿêÿúÿûÿþ2?ÿü%@KE2#%5VŽzO"*m½ôÓlÿÙ‚íî¶qG;-24Fb}‘–Œufk€Œ˜§³ºÁÑÙÔÆÃ»¯˜~gLLa‚˜œ ŒjE/,(4;]™Òî•'ÿÝÿì1‹¶–K.ZlV,'% ÿýÿëÿöÿíÿøÿöÿòÿû ÿý-J3 4NQ@*%3TtƒˆsO=Eu½ÝÃpÿötÈïñ¼ŠX0&!4Jez‹£©›†…Œ‘Ÿ±½ÆÔØÓú«–‚rnhsŒ¡¤”ˆrV@277Lk–ÐÞÆwÿãÿí6¡“X $Si`M1" ÿêÿê +ÿöÿðÿúÿÿÿþÿóÿýÿýÿÿ ;9$)BJB65H`bat…‚WAY‘ÍÑ™DIœÖÚŠ]C6?ES_r‘©°©ª¨™¢³¾ÄÍÍɼ° ‰}~‹•œ¦¡sb][_agj{ ºÇžPÿáJŒ•h8?[dT<@C2 ÿíÿåÿô$ ÿëÿñÿüÿñÿðÿû ÿþ &<;" -M[I4;Q]fr|‹qVG_˜ÅÍšL B…¾ÙÁœmJA?OVh€œ³ÀÍÌ´®­§¥§ª©¦§§£¤¯¸¹®£‘{gXSOUZl‰¦Ç¿–R\’›u:!2LXSG983 +& ÿîÿâÿôÿøÿäÿðÿ÷ÿéÿïÿô /A0B`V;5BYmpltމeKQ{¸Î¬b"1u±ÉÙsZTadmv‰¢»ÐÖÖɼ¬™Ž••š¥´ÁÇÐʽ¥Ž}rnfaXZaxœ±¶‘OI†ª¢o<",IPJB;>=1+D*ÿþÿæÿî $ÿúÿìÿìÿñÿöÿñÿéÿïÿñ ÿý9B2 F\ZK>E\r„|aIU†´Âe24ežÁ¾¬Ž|wty{†—¨´ºÄÇŹ¬£¢¦¢¢ªµ¾¾¸¬£™Œƒ~vuy‰¢³»¢xGD}ž’m?+3DUPEGID6"!3.ÿßÿçÿçÿîÿþÿ÷ÿìÿíÿîÿëÿñ ' &CI1 %OldJ>Jk‹…ƒƒ‹†hRUuž±¨{D(/`’¶Åµ¤“Œ‹Œ’‘•¢²¾ÁÁ¿ÁÀº³±¯« Ž‚ƒ‹ŽŽ‹Ÿ´ÏÌ®u: %P€“€R0)<W\RGCQXH.0:, ÿæÿÜÿúÿïÿèÿøÿùÿçÿíÿôÿçÿð+).BK@$4\mfQCMh€‹†{ƒ†ygW]sª¤ƒY<D]‰¯¿À¯¦’Œ’’”𣬳¸¹º¹»¹µ¬¤š†‡‹…€Œš©º»·™iB-AgŒ™„eI@LX_XNNQTL5#$0;6ÿþ ÿôÿóÿüÿÿÿúÿìÿãÿíÿõÿäÿõ!16*-QbG%#>atkQ>Eh‰‰yw|„…wfXb„¥°švVG[}£·¶´¨š’‘˜ž›˜›¢¨¬¬«³¸³§ž˜•”’Ž{}£°¶ ~W46S‚¨©‹bQZkwmYLKV[N8(&4>6" "4' ÿøÿö ÿþÿéÿæÿíÿòÿðÿãÿüÿÿ.4/%&BWN8.6JcsoXK_~ˆ„ƒ‚„…†jamˆ¡¦›`V`š­»·®ž’ޓ𥱏¸´¹¸®ž’‹„‚~€†’ ª´®¢‡gTQfƒ˜žŠjSUfnkaTRTVO>13=B;)!%ÿúÿü ÿòÿæÿôÿüÿëÿäÿýÿý -;4)-9DIC<8Fh€xddqŠŒ‚}‹–Œyijx¥£Žp^dt¦°³§™Œ†‰Œ•žª¸¿Á»¹²¦˜Œƒzxt“ª¹¶¬–sgpˆ¡v_U\hodURW\ZM>47GPD,ÿùÿø  ÿöÿìÿòÿèÿæÿüÿõ &-/03>GID9<Wrvkgio}Ž–…ˆŽ‡|wv–¡œ†pc`o“¥­¯¦Ÿ˜”•˜ž¥«®­«¦¡š‰‡Œ’š¦ª¨˜…sghjwŠ•uqsvvqgafi_N?87>JI5#' ÿñÿö ÿöÿäÿåÿÿÿùÿý  2879=FJDAHWcjnmim€“˜†€ƒŠŒx{†…te``q‡ ²¶¶¬¢š–—–˜›œžž—”𥝰©—ƒrc`dowzzuop€Ž‘‡xnov{s[C;@EHE9'#)*#!"ÿøÿ÷ ÿ÷ÿíÿéÿè (/38=CFFFFN]mz|slr“š–‰ƒ‚„…{uu}…†~siadl’¡­®ª£¢£ žŸŸ›˜™š–•¥©£•„xrmov~„ƒ~wuy„{okowzueRGIQTOF9-&%(*'ÿþÿüÿôÿôÿöÿðÿý  */*$"&0:@BCIOMPZj{‚uloƒ—“‡{st}xmjqx}zpg`fpƒ—¤©¨®²±¬«©£™˜––™˜’†{uu|…‡‡†ƒ~ƒ„}o_YbryrbSNTZ]ZPG?:62.*# ÿÿÿöÿõÿûÿø  5[thC Dhs]B( 7PZQI9$"?h‡‘}`IET]n‡–”„}tj^PIEKPYbmy‚‡ˆ‰}k^SGA>CJTZ`ltslihegmu~vpic]SQ[bZNMLB::DPTL;1-,*! ÿøÿõÿ÷ÿþÿúÿèÿÞ "X|uGFp{h<9[f[9 Dr’ŒsN47IjŽ ŸŽwrqhYG>;DN\jv€€|rkd]XUUSTWZZ[^gv€ulaUPLUetxsqnlic^_`[VY[UI:5<IQNB1+(" ÿýÿøÿöÿùÿýÿýÿúÿïÿÞÿðÿï.]Š„L+\}|V,+OgmS-?b€gC.6Hi†•œ’‹y^KKSOLNXdmrnlcYNC@>GRboy‚ƒ†|hQA@DR]gquxpaTQX[bmuysi\PLNVZYWM>40:LUM5  ÿ÷ÿêÿêÿóÿùÿúÿüÿôÿãÿÚÿç[‡^'l•Š^$1^z].Q‚”Žb( M{š©œxbP=8>JILZm}|kZG2&(2F]tˆ“ ¡¢tQ4'#-E]sŠƒkXOKTbowspcOBEONJMMJ@0*7GJ:ÿúÿÿ ÿöÿäÿãÿíÿòÿõÿûÿ÷ÿêÿÅÿþIƒO,l–ŠT&%Nt€vQ(9^qoR18rŸ©‹oUEFFQ]m…€qh\K;0+'))2@Ralw}‚…‹”†tcO5"2Uu‹‰ƒoZLFQ^q‰zZIC9=M\bR3,BI<ÿÿÿîÿçÿôÿôÿåÿâÿåÿïÿúÿùÿêÿÚ,q~Nÿù)v‰Q5f‹–vJ#!Gmf7 ÿñ >½À™T(!=Uoˆ–£›sV64I_v„‡~oc]Z`fo{…xdF)Jq‰š{]FBE]€”rZE22@S_W@$,BG1ÿñÿÖÿ×ÿíÿòÿàÿÛÿãÿïÿòÿèexN3„´™Q$$CrŽ…iB$'@asfG&!Er’~T$Oy–©žŽnP4 1Oi|ƒŒŠ‡|rdVJ?;;?@DIS_irmdP7&+7Rx–¨›†b;*.Jeu}iE"/J_U2 "+' ÿêÿÏÿÊÿßÿü ÿèÿÑÿÊÿ×ÿêÿðQmI8ˆ½¬_TT(!Hv…l7c§½«h#ÿýÿïV˜ÈËÔ_(ÿûÿåÿÏÿÙÿèDy¤´½­ ‰oWC;4412783)&?]w‹ˆjQ: #<j”¥¨„R# +VxuZ+ÿü)YjRÿþÿõÿü&# ÿåÿÃÿÀÿÛÿýÿúÿÝÿÅÿÇÿÛÿïe;ÿúÿó'xª›Y>{…eD)1PehL 9pŽŒb1!Q†¯Ê¸h3 ÿéÿéÿö4Pm‚–™˜‡ubSJB@?ADEA=??8-/E`yŠœ›~Q$>q“¦Œ`- Dfl[0ÿó4PM9ÿùÿò ÿäÿÅÿÆÿåÿÝÿÃÿÃÿÚ5ÿòÿÎ iœ‡F1g}[$ =]ue5ÿãÿû8z}7ÿöÿÖ]¿üØ„9ÿÏÿÎÿÙL‰¹ÇÓ½nE'  !;P]ijg``_YL=/%#&0Km޲°œ_ÿæÿÅÿã^¨Àµs,ÿýÿé Fyl*ÿïÿÕÿõ*ZhFÿíÿáÿ÷ÿåÿÉÿÍÿðÿÙÿ½ÿÄÿÞÿÃÿéOžD 1dpU+ Fad[;HqsT%A‡Á¿˜HÿáÿÝ ;w±ÔðãÌ›n> ÿîÿàÿèÿêÿôÿý+H_n‚––œ—ŒpP.ÿæÿÜÿÙÿò >x¨ÓË­eÿåÿ³ÿÀÿí=‹¬²z/ÿôÿÚÿý4ftMÿèÿïDP=ÿáÿÏÿÜÿû ÿÛÿ»ÿÂÿéÿþÿÎÿµÿŸÿÓ5‹—U >kvS#(NkiI' X{j0ÿõÿèY´ÔÀ]ÿîÿÿrÿ«ÿÿxæ%T:Äq#ÿàÿÁÿ¥ÿµÿÔ.:ANY_eq€‹“žœ“vT.ÿüÿßÿÌÿ¼ÿÂÿÅÿè\­âæ²Mÿ×ÿÿrÿ·‚ÛÔ” ÿÀÿªÿÎ'}‘a ÿßÿä/I5ÿÉÿ°ÿÅÿïÿóÿÇÿ­ÿºÿêÿñÿÃÿ¦uŠUÿý%`hH##IdaD(9G4ÿÿÿÛÿæ^}{BÿùÿÅÿ²ÿé.î6Ï|3ÿÕÿÎÿÎÿí 7d”scQC74/4>JTRH93*ÿêÿÏÿ³ÿ±ÿµÿß PžØÊ_ÿ÷ÿ¶ÿ‰ÿ¹~Å´zÿÓÿÎQoV*ÿýÿæÿø%A-ÿõÿ»ÿ§ÿÃÿóÿòÿÆÿ­ÿÄÿöÿæÿæOW %Uh@ %GZT5.=*ÿÿÿÎÿ¤ÿ¾j‹SÿøÿŸÿiÿž—Mn/áhÿñÿ£ÿrÿ‰ÿ¤ÿæ&i¨ÊäÝÔº£…hK2ÿíÿÛÿÜÿãÿù $4@SaogT/ ÿðÿÔÿÉÿ³ÿÌÿý^Õ']%Ë9ÿ›ÿYÿgÿèvÖú§$ÿ»ÿ£ÿç2hm9ÿüÿÛÿó"6ÿçÿ³ÿ¦ÿÅÿö ÿòÿÄÿ³ÿÊ`\'ÿþ#av\) M\K-1=!ÿëÿ´ÿ¬ÿÎ`i(ÿÇÿ‚ÿÿÉ5žËÌ„Aÿøÿ²ÿÿmÿ…ÿ²ÿû5`ˆ• ”‡mX:ÿñÿÔÿÆÿ¾ÿ¹ÿ¦ÿ–ÿ‘ÿ•ÿ•ÿ–ÿ–ÿ˜ÿ–ÿ ÿ¯ÿÑÿý&FRb_aC ÿÓÿ ÿ©ÿÌ%‹Ý&ªÿ ÿyÿ‚ÿå^¤–7ÿàÿ¸ÿÈ Sh=ÿ÷ÿÖÿá ÿÝÿ¥ÿ—ÿÇÿåÿ´ÿ¤ÿÐ/=X€j6A]Iÿþ %8#ÿäÿªÿ—ÿÇ ÿ·ÿ‚ÿ¢!°&ÊOÿÌÿmÿcÿjÿ¶Z¹ñûá®yM,ÿîÿÛÿÕÿæÿü  %-.-+)06Rz®Úú$6á| ÿ®ÿXÿfÿ™%ÖHznÿ¸ÿÿÿƒ(™˜MÿÛÿ–ÿ¬Ve-ÿêÿ¼ÿÂÿë ÿÃÿÿžÿÓÿûÿüÿÒÿ¨ÿ­ÿÔÿüÿõAd]336ÿîÿéÿûÿöÿ¿ÿÿnÿÿÇÿæÿÐÿÿWÿ=ÿxÿåP–x2ÿÈÿkÿRÿ`ÿ°ÿÿ?okd0ÿøÿ­ÿhÿ4þÿþðþòÿÿ)ÿ?ÿHÿWÿxÿ£ÿÎÿçÿñÿðÿõ (U†±ÙéïáÙʺ¨–ŽŽ”{Wÿ¡ÿFþôÿ ÿTÿèÑô”ÿÿÿuÿ/ÿhÿÒ>n?ÿæÿ¢ÿ°ÿýAT-ÿåÿ²ÿ²ÿâÿíÿ¶ÿ˜ÿ¦ÿØÿýÿÔÿ¬ÿ¦ÿ×ÿÞÿå>]Q#ÿõÿÿÿäÿÙÿíÿþÿËÿŸÿ”ÿ·ÿöÿêÿ¤ÿgÿŒÿú¡7vv0ðð%ª6«  õ–6Ìm5!Gz¢ÉñMw𩲶³Ö}ñfÛ9 Úmÿyîz àÕø!ÖD”ÿˆÿ¡ÿý¤R€H‡ÿ¹ÿCÿ;ÿµ6xNÿçÿ¥ÿ­ÿõAU ÿÐÿ—ÿ©ÿßÿôÿäÿ³ÿ”ÿ­ÿâ ÿÍÿ›ÿ©ÿ•ÿÉGM5 ÿëÿÛÿÛÿëÿîÿÖÿ¬ÿ€ÿuÿ”ÿµÿµÿ‹ÿ9ÿ!ÿDÿÚ‡:¹<…æ€>èp—©vEáÖÒö"^•Àåû "Fj…ŽŽ•§¤Ö)Æj  Ü S ¶ • j ¼ óÒ¥u¯ AR¸ A• 0„»Š ÿmþîþìÿ>ÿ ÿÎÿ˜ÿ¦ÿä"-ÿõÿ¥ÿÿ’ÿÆÿíÿÑÿ¡ÿŽÿ§ÿé ÿêÿ¨ÿ\~š…T1"%,! ÿ÷ÿîÿø O«NH;LÁhEü (Ó¨»Ù â ê r ¿ ˜ r Y ` ´  ¦ , ®3Žâíݨp~“ŽuSEOv€½¶^.ÊainÌÍi ¸ ù † >¡$êMp¹š¸‡—ȶ9uÿÑÿ‚ÿ¸cLÿùÿ·ÿ©ÿØ ÿÚÿ‹ÿcÿŠÿÍÿáÿÉÿ˜ÿƒÿ·ÿôÿýÿÕÿ"ûµLÿõÿÉÿÉÿÀÿ³ÿ’ÿsÿ]ÿgÿ…ÿ¤ÿÿšÿÃP Ýxä/µ“¥ŠI㦠— î c àDHF¼üÿyÚ³‚;¹By§gýoÿÑÉãÝÅ›ŒŸÜýFš0Ë£¢~-a¢Oóå¼=nÁU“ Ö H É  ; õ•{Tnïµ!MgÿæÿÍ ÿ±ÿqÿlÿ¡ÿæÿûÿ·ÿhÿbÿ–ÿÓÿìÿ¿ÿŽÿ¡ÿØÿÉKtt†ì…g-ÿØÿÌÿÇÿñ$q„ö®óK­ÁÐÿ q + žŒ$Ô÷uGhœSØ8·Ž‡¦¾ ™![!Ã"7"L"]!ú!d · 2 > P M . ( N — È!!;!¢""Ë#´$†%%R%¡%%x$Ì$ "­!.hÃ.ž)­[ò̧ H P dFés¤_œO)¿OÿáÿÂÿï#ÿ¶ÿ~ÿ€ÿ¼ÿùÿðÿÆÿ±ÿ¿ÿöÿú¶cî8Ù^#ÿñ Q”$’«"%ö Ù Ÿ žð8fÕ¹s¥cR1Ð ß!Ö"l##—$$›%8&'( ))ý*Ñ+Y+ã,,Y,0+Ñ+_++++k+Ì,,,,,\,¯,Þ,÷--4-z. .Ñ/w/Ù/Ó/â/ž/\.¬-÷,Ã+j)×(r'%›$"W ©Ö eâG~tBO “ v £ Ë…ß$´’óXØÿƒÿFÿ]ÿ]ÿUÿ#ÿÿBÿÿÃÿËÿ±ÿ¡ÿÓ X û ›™KX¡rWš¼(‰yv? H ¼Ó0ÌÃ÷¢Ò !"7$&$($) *Ó+~,=,Ü-.:.Ø/o00²1q2`3Z4^5`636ù7w88,87è7Ý88y8â99&999b9°9Ì9À9¨9¶9å:a; ;;Ð;–;f:Ö:G9`8}7=5Ï4X3'21/«.;,N*F'í%Œ#P!C‚Ô. ¸ÀF%ì=  ȘÚçä÷ŠW^"ÿíÿÉÿÕÿöÿÀÿÄÿämr‚ ö ? ‹ªË´Á<u ˆ Õ a®óŠÓ²)æ#&$(;)ˆ*õ,œ.Æ0ë2À3é4å5…6I77ò8Ç9†:*:¸;pµ@AwB«CÉD…ETE•EE:EE#E\EŽEEZEEE7EƒE“EƒEjE‰EÌFhG1GÑH7HGíGHF£E{DPB§@½>â=hõpf¹…*Ùb&=ÿ¿ÿ§ÿ½ÿè#Ó–­°»Ðó GøLÐlF§½.œ"Ù&º* .0`2r4 5ò7é:;Ó=I>-? ?Ê@±A¦B¡C|D3DÔEeFPGwIJŸLEMóOWP¡QbR3RLRQwQPØPÅP©PXOåOgO,OIz:º73Î1•/b.”..›/00Û2:3ú67´9”;‘>YAyE HdK”NÀQžT˜VêXùZW[ã\â]¼^^t^Ã_Q_Ö``Y`§aubmcöežgWhâjkhl3lÖlîml×lZkµkOkj¬j@iÀi2hh9h gëg¤g1f©f5eÓeÊeåf4fefšfÝggMgcg’gcfýf4e•d«cœbTa+_è^ ])[ÁYÿXUÚS˜QaOMMgK”I®GÂEhBØ?ø==:r7¬4Á1®.¨+¯)1'%"‹lœ7Í Ñì³nùŸH¨E.AÒ>µ<–:y9·9C9ä:U;alk½kEj’iþi#h&fÛežd6bÞaF_]›[¿Y¯W¯U8ROqLoI¦G;DÃAÊ>È<49Ä7t4X0¡,#'Þ#š\nz&æw ZÆXHUÁSRQ™OüOnOO„OóQ&R‡TOUÒWYq[]¼_¶aAbîe1gœiàksl¢m`nƒoup^pžp—po™oAoo5oNoŸoòpppéq…r=râs]s«ttQt~t]t6sÐsarßrrqap¡oêoPnÂnenmÙmqml¹l©l°mm\m¼mþn!nPnenvn`nFn mµmˆm™mÞnn-nxn“n‰n$mÅmlmkjÈiÛhúgºfWdbÉ`Ø_]ZºXU)R~PWN=K¹HðFFC¢Ad>m:Â691Ú-…)]%|!rãsÄ-bG``^`\u['ZY²YPYÄZW[©]^·` a„c_e8fËgühøj,kümÏo:pp¥q"rrÊsdsgs8r­r!qÚq×r5rˆråsscsÈtWuu~uÂuÊuúvvu±uNt²tsrõrFqmpxo‰nÎn+mÒmƒmNlôl¹lŠl³lômnn¬ooeo·oÞpoïoÒošoPoCotoáppxqq„qürrq‡pùpLoÑoInÇm×l·kijgœf dSb`L]Û[‹Y»XVSµQ NULI%Ez@Ñ<37¬3ˆ/³+•'Í$ !0tfŽe+c¶baa`ã`Ä`s`Øabâdeif–gài}jÝkÅlfm:nMo¯pÓq€q¾rrŒs:sÄttsÆscrþrýsQsët\tt®tÏu/uÁv_v½vÞv²v®vvFuÁu't^s¥râr,qVp`oVnFmzlÓlŠlCl$kãkÎkÅll†m=mün¶oToÆpDpŽpÏpÒpÉp¥ptpzp¶q"q[qµr;rãstt@sìsqrËrerq±púpn¢mkuiÿhgAe½cýbJ`â_ž^m\µZ˜WîUÀRÐOfJýFiAä=è:N6k2À/,)]jmixh†g¾gXgf÷f°ggÍi iûjýlmVn­o¦p!pƒqcrmsgsðt%ttIt¢uutu usu&tçtÉu!uÃvmvÈvÍv¿vÁvþw]w¸wÙwÔwˆwTvívuÑut$sCr[q|p“oœn¡m’lÉl0kòk¯kkJk?kFk¸l@mmæn¼op'pÞqeqàrr4r&rrr?r¯ssysýt¡uYuævcv^v!ušuBtêt²t'sqr.pÂo8màlÌkÑjçiÏh¾gÆfôfseccÏa[_9\PY;U*P´L.HDDÍA%= 9ò6Ê4kÂkj‚j!iÿiÉi¹iiÇjzk‚llâno@pQqqœr>sdt~u?uwušu”u´uëv6vdvtvKuþuåv vwTwÞx wßwÈw½wÕwòxwåw¹wQvívWuÂtüt,sCr_q„p¯oìo(nrm¢ml¯l—lulel9l7lGl¯m-mæn–oGoépq,qºr;r}r²rµr¨r®rÓs0s‹t t‹uu¨v!v©vÚvÞv‰vBuàu u"tŒsrBpço±nÉmÿmolÎl:k˜kjöjbiigqe|bÂ`'\¶XÍT°Q MÖJ¥G–D@A?>•ml­llzlŒlqlWl-lhlúmÅn nºoÑqqðr©sothu»vÇwewlw„wmw^wSwcwewDwvÏvÚw#w»xWx½xäxÃx¹x¥xŸx†xpxw¯vüvGuut²sàrür"qXp¶po•on¡nmàmÉmönnIngnnºoop p‰píq9qtqÆrrUrzrr›r´rässas¨t(tËu†v+v¤wwOw{wcwKvýv¸vqhr+rÿt uhv¹wžx>xSx{xXx$wãwËw³wxwAwwwSw¶xxPxrxfxaxIx;xwñw…v÷v!uUtws¡rÎqéq3pšpBoço­ofo>oo"oKo¬pplpËqqPq„qÒrrOrTr=r qîq×q¼q¥q€q…q²qúr rGr^rÆsxtQuulu´uÒvvDvkvJvu™u8t¦ts2r[q¡pÿp¢pRp$oào«ooioHn[mjíi#fôd”aë_=\ÏZ´XÊV¨TyRSnmånnNnn—nnnÐooho°pKq&r(rÎs©tôvYw‹x?xÜxõy xÏx…x-wùwÑwŽwZw3w:wKw€wÄwöx wðwÖw³w¬w‰wUvØvFu‡tæt&sErVqfp¹p0oõo¬ooiosoƒoÄppkpÍq3qqèrr8ror‰r—rlr1qÝqq_qpÛp–pˆp«pãpépæpÛq!q±rhrñs>sks•s÷t`tÃt×tÄthts½sdrërPqºq:pøpÆpÄpÄpÁp¬p‚p£p+o7m‰ljJhªfÚdËbÚa>_ã^p\ä[>n²n}n¬nñoJoso‘oÄpp)pupÜq~r$rásrtBumv›w„xx›xÂxÅxux-wâw®w‰w]w2wvâvÂvÊvùwvóv¡vVv%v(v"uíuƒutªtasâsr1qepápwpMpoþoîpp=p‰pÉqq`q­qþr2rWr[ror\r6qéq¡qSqpÄpbp o¾o¤o¯o²opo'nñooxpp^p™pºpýq€rr¦rãsrÍr˜rPr&qèqƒqpÓp½p¨pÉq q@q>qqIqpfo m•ljÃi…gôfse+d5cObkabofo/opoÉpDp’pÕq.qzqqÛrTrêsOs»t/tèuÞvËwtwÓxZx‹xˆx8wûw½w‰wkw_wGw vÇv™v‡všvzv urt÷t¹t¨t§tvt2tsÔs¸sSršqÑqKqpÛpÎp¶pÀpÏqqCq—qår;ršrîs@ses„sesHrêrsqéq|q!pÈpgoâo|oEo?oPonymÈmTmpmÊnZn«nÜnóoGoòp¼qZq¤qßqÈq¡qiqZqEqpÖpÇpëpýqFqÅr8rfr`r£r€r)q o¤nmlAkiíhëhPgãg’gp#oép2pœq:q²rr—r÷s3s|tt‹t¼têuPuçvƒw wwwºxxCx:wôw½wˆw[wAwEw$vÂvLv uáuÇu`tŸsÃsr×r¹rÆr¨r‡rwrkrmrr†r›rrr¦rôsjt t‡uuv*vøwmwžw%vÍuÀtZr¨q5ponMm‚m>m3m“mùqÜqªqûr€sstauJvv¬wDwÌx|xòyy,yŸyây¿yayFy,xùxªxcxww&vñv®vUu–t£s‹r«qÞqp!nÆmllYllølálŸlUl“mQnYnêoup"q&r\sœtªupv.vÅw†wüx5xxxxHxmxxNwÀv¡u‰t?s qÇpo2mµl”kºkskPk#j{iÝiƒi»jj¾k^kùlPlèmño"pp®qEq«r'rrr‘r¨rÙsRsët­u`vvŠwxx™xÏxGwàvÍuwsÏrAqoöo[n£nonjnÖoYqnq?q›r"s0tRuyvkw$wåxˆyvÕwQx'x½y(xÑx;w6vhu…tus˜rñrµrirqrrÝs7oTo1o¼pqqàs†u-vlwRxfy9yÞzX{%{‘{{0zãz…zEyàyMx¢xwœw$vpu®t~sZq™oÔm,j/f»c‡`r]7Z€WèVIT¡T?SûU"VWXÆ[G^“aÉe_hùl°pžsñwx×zt{{ß||D{ý{—{zÚzzny½xíw:u‡rÎoæl2h~d™`œ];Z!XV TèSSdS-TƒVZY6[¿^i`êc¡f§i®l¶nåp¯qr ssrs{ssÛt]u,vvÃw@w£xQxÏy…:»988˜8³9ƒ:$;æ=ÿAXDoH¸MURôX^]d=isnzr5uìxzz¡{j{X{@ztyÜx^w sæp;jd¶^W¾Q—KLEÞ@`<Ú9²8þ8’9Ã:|<]>$AÂFK´PÄV[O`¥fMk o„rttÍuúvjvsv2vBv§w/wÆxBx{xŠx“yy/xáxJwøw¾w“w;v‹uýuÝvuîuèvpÄpãq|rFsHt9tßu{u}u.t®t€t‡t tŒts±sÁsøsîs¶s…sFsrÇrÅqÄp_mJjTe‹`TYÄS-L FT@ú;‚7ž3Ö2K1T1á1ê2ž3;4Ý6Ÿ9¬ DŠKRKYâagÃlþrhu²xky+z%yþyîxôx"v"t`p_k°d“]FUM0EÔ>¤8‘2-¾*8)‘(ù*=+9-/T3S8\?@EºL‡S@Y¾`wfk¼o qˆr(sUsŸs‘s-s sHs·tKtÃtútötüuauÑuÿuÿvvvwvvu—u–uËu¿u¬uÂr¿rössttÄuPuyu°uAtgsbrËr|rqÂq9pìpéq$qBqHq2qqZqPq`p nwj°f¿`©ZPR»K/CÂnÍm5i:dã^NW—OÄGÿ@n8î2¹,v(%6$H#z#Í#Æ$$$×%â(Ž+*/Û4ä;çBÿKSq[Hb¾h–nƒrIu wx¬x×xÛwvwtr3mÄhK`=XQO”Fã>Î6þ0)’%I"!Ø!E")"¾$‘%ö)Ø.Å64=EMITº\DbªiKmVpYpñq÷qòqÒqeqq5q”r"r‰r­r›rrÐs3sksšsÅttÕuGutÀtôu_u›u·uáuauhupu’uˆu_tít¤sÜr—qEpqoüodnán@mëmÒnnn*n nn¬nòom¡l$h:cÏ]2V˜OGq@8Ç2¹,‹(¸%•$Ã#Û$$$e$j%M&l)$+¿0k5“<†CcJÿRÂZa:fÖlRoÌstvDv—v²u‚t–rppÄlwfï^ÝW!NµFH>Z6•0-)O%D"h"e""å#G$³%É)W-Þ5<(D2KûS„[#a°h€l½oîpq¬q§q•q5pðqqjqÿrnr•r†rpr¡rêss&sCs¢t_tçtÇttÙuguÒvvXv½vv5uìuståt)s›r­qCoâon‹mámNlªlVl1lYlrl”lŽl¾mvmÓmýl™k@gyc\‰V*NãG†@M9.37-)?&>%r$S$N$M$å%&%'b*,,á1ž6ð=ÄDLKAR_Y_Ñej;mmpdqÅsYs»tsIr¥p¾oPk>e÷^&V¸NF1>G6‹03)o%†"Æ"â"Â#«#ù%)&)u-±4;xCfKR’Z)`Àgœkño>pq&q,q/pæpµp×qAqÛrWrr‹rsr™rÏrâr÷ss_tt´t¬t“t÷u v0vvàwwvdu¶tãt s&rfqeoõn£mÍm\l´l(k–kTk6kdk…kÀkãl8lûmYm‡ljŸkwl)lâlZkúhÙd­^WºPzI%A¾:T3î-Y)D%í%s%&&=&’'ÿ)y-)1^7¿>5E—L×SÞZá`ÍfÞj¶mÊnÃpp>p\ppp p_pÌq=qŠq q¥qÓrr_r©rÕsDttÛu!u[uòvÅwœx;x¹wüw+vtçs¼r¡qšpªožn=mlBkßkQjúj¦j¤j¶kkMk­llym>mŒm±l{k>h d‹_‰ZæUwOÐI³C‘=Ì7Î3€/î.X,?+ù,,./¼2³5Ð:4>¢CäIŽN·SVeYà\Ê_ðb6dLeeeneweøfèh'i—iîjDg¼d/^XTQ‘JÕCÂq:pKoJmülÝlkªk$jØj‹jj¬kkCk™kílZmmSmel>khVe0`Ï\ÀWúSM˜GíB7ÁCäIˆO€TOX`ú`Î`Úa¢b–d f!gQhdf‡c¢]úX¥R"KËDá=6À0+'M& %`&Ö'—)â,[0Ô5Š;ÜBJICP"Vy\¹aÁf×jlÎmñojoåp"oËo˜otoko™oØpp6p^p«q(qžr#r„s&t'u&u®v%vâwáyyíz­wïwuøtÑs¨r™q«pÐoån¶m¨lÛlhkák“kAkmLml$kOi}gddaau^ ZåVôRšMsHC(>ˆ;Q7â6ª5Ü7°9‹=A£G6M SYA]w`Âaib*a=`=^u\Œ[&Z+ZjZ»\]1_*a¾cöf e¯dÄ`Ã\pV$P'ISB;T4Õ0J+ž*){+Ÿ-00e3¹8}=LCHÎN¶T~Y¯^ãc g$iÎl*mkooÆpCpoÉoyoNoioŸo÷p&pipÎqEq¤rr=rÌsÂtÐuiuþvËw÷y[z£{Áx¦w÷wvut&sdr¤qØpêp oFnºn(mÙm•m•m¯mËm²m“m—m³mñmÛml¬këjmh·fEcÞa^©[uWÒS3N\IŸE!AÈ><<É;·=R?CF×LQWK]`Ðc´cØdbZ`Ž^[ YþXÙYYTZª\^D`écVe²ff'c1_¡YÂT)M¥FÚ@‡:…6J1Ê0L/Ç23ú7u; ?§D#INSWý\^`ÐdYgÂiûlm7n³oto÷oÁo|onånþo6oœoáp9p°q$qxq¸qÕrMs3tGtêu’vgw¤y!z{ßyCx£wÎvàuöu7tsÙsrBqzpºp-o£oZooo&o7onìnÛnÑnßn§nKmul¯kaiöhf+db:_¬\³X›T?OÄKƒH8D¹C2BCˆEaI7LÈQ}V—[¹`úd#f€fesc`˜] ZœX¤W2WbW€XéZ_\Ó_bWe8fpgaeRb—]qX‘R¥LlF–A(=R97 79…;«?nCTGÍKëPT_ºcHf h jSlm n|o1o¦o_nýnn3nAnhnÐo o•p+p·qqTqeqÔrÀsît®usvWw y2z¼|-y£y xnw vÙvEu¿utcs rãr)q q'pép§p–pžp§ppXp(oìoÆolon4m[ljÁi,gªfd¹b¼`l\þY6U7Q†N£K‡JHîJ0KáOORbV[Zµ_c’f)h g@fxäxkwøwÂwŠw,v“uîu7t}sös“ses!rürørær·rBq½qp‹oóoan mÒl½k€jRiZh¬h8gmfwdoaà^æ\WZY&ZE\˜^ôaÎdýg5hèh‰h e¥c_I[–XTÃReOŸNÞNæQES©WZ]Ç`‘b­dÿf¤hhÕiãj¬kUkÇl]lÂm+mlØl!kFj•j1jEj9j›klmmÝndn˜n«o$pqrrgsctruÓwsy z¡x×xÓx xUxxwòw³w&vŠuÕu%t¥tFtsÑs¤sœsus(r†qÓqpJo™nên2ml¢k€j‚iÊiƒiei!hÑgŽeÁcaaY_„]Œ\&ZÁZ‘Z¥\]C_žboe‚htj"k‡jôiþg´e³c3`Q]÷\)[™Z»[T\j^ÐacÈf«h¨j5j iàh eæbÀ_³\ºYÉW¿U–UVU°XZZ]~`™cWeÃg\i iêjj¥kk~k½kÝll7l@kòk•jìjiwi"iEiDi³jOkClHmmmœmžnnçp'qr stauêwsyw±wÉw¬wwZwmwfw3v¨vuXt¿t]tsês¯sŠssos&rzq¶pÓpobn®n mƒlÛkàk jjnjojqj€iÜhÅge…cÿbnaA`_½_„`=`Éb~dÍg¢jRkþm_mlxj®if÷d‰b~`é`P_[_Å`Ðce6g€iîk†lÂl–l}ki8fcÍa%^u\Ç[F[v[è]Û_éb’e*g_ifj‰kkÆkÓk¨kÑllllkúkÉkekj”iäifi,i_iqiçjŠkol]lýmQmNm8m‚n;oPpp÷qÚrútGu›w vœvÅv·v¡vŽv¶vºvvuUt¤t#sés»sªs{sbs|s|s]rÌr qp_oÀonŽnm™l¾lk³kÌkÞllwlklkjhìgÞg f5eÚeŸeãeÐf­h1jtl³n;oco$n¯mLlj€hŒfÜe“e dldÚeÆg£iMk%m9n¦o©ooªn£mQkh™f>dbîb1bµc dkfhKjUkîmun nTmÞmll÷lÍlÅlšlflIlkºkKjûjžj i¦i…iÅiÞjJjäk´lmmMm/mm4mÎnÄoyp8pýqòstu_u.uiu^uTuEugu^u*t˜sßs?rÞrÚrÛròrârès&sZs€s&r~qšpòpuoøo”o@nÓn mmJm`mamŽmànmümˆlýl]kÚkŽk>kAktkÁk–kÝl­n)oÐpýqÀqbpÛo´nËm™ljÆiºioiiŸj[k¹lônop7q‹rnrsrÃrqolåjØi!hh&hŽhŠi:jllm‰n™o«oÝo§nânQmçm¤mˆmXm-mlãl—l9k÷k®k4jéjÙkk,k‡l lÇmŒnn8nmånn{oAoÍp\põq§rhs&tsãt$ttttsõs¯sreqáq¥q×r rOrhr’rósLs¥sprÖqòqSpòpœplpDpoonÜnênânúo$oVoo„o\o?oNošoØpCpãqUqRqIqrAs4sétTsîsZrXq’p¥o‚npmllýl§mm£nÂoÙq0r°sÖt¥tÝusu&tWržpÏo@nm¸mtm…m+mRno$oÿpqBq;p¬o½o0nån–npnPn@n2n mÍmym5líl„lGl:llltl¿m=mòn­o"oXoq q qpáp‹p2poûoìoÝoµo¦o¼oïo÷p/pŠq5qÞrµs¶t{tëuuAuƒuúv4vDu»u t s6rVq`pyonýn£oogpbqrr¸s÷tïuÁv+våv¿vt}sqîq p‰oöo‹nénÆooÅpFp¡qq pwo®oXo@nûnÛnãooonån«nrn4mìmÈm¾mãmén5n³oipp˜pãpÝpÎpËpüqAqgqq¬qÈqàqÊqëpNqqHq—q”q˜qHpÕpDo³o€oƒoôpcpëqOqÃrhrõsspsr@q±qpqVqvqq‡qZqpöpãpÛpºpVpp0p“pÄq%qr[sIttu©všwQw¢xx.xhx9wäwvPu]tssŸrÑr9q•qYq>q“qÓrts9t-uuÈvšw3wôwèwYv u't6sVrqÀq p=oÝoÂppqp¾q pÛp;o…oOoMnønÊnèo.oLoLoMo9oon÷ooo#o7oŽppÀqkqérMrbrfrNrVrXrSr-r qµqXp·p[mcnåozp-pVp‡pDoÜoWnènÕnçoXoÇpTpÄqNrr³sBs;rírMqÌqŒq€q£q±q¢q}qGq"qqpÐpEoÚoËp"p^pÇqqÃrµsûu:vGw(w´xax±yxªxwv2uKt]sŒr¹r?qÖqêrr‘ràs_ttÇuxv+ww›x0x w•vu·t¸sªr¢q§pßpo”oSo‘oîpEpnp(o¤onônïn™nnnšnñooo3oJoTomožo×oðppXpÍqTqòrssws‘s’sFsr rHq¯q pn÷mlrj‚lÊmÜnúoOo²o„o.n³nZnSngnÏo9oÄp/pÅqžr`rüsrÙrYqêq²q»qáqØq­qƒqOq!pòpßp“oêoXo oRo¯pTp»qqrds³uvCwAwÙx…xÔy>x÷xMw1vYuŠt¼sêrìr4q˜q°rrËs[ttòuævÒwœxzxçy;xÝxdwevkuCt#srq&p)o¦oeo£oñp!p o¦oHnúnÓn¿nunbn¡ooo&oLo„o®oîpIp£pÌq qur ršs%sµt t‘t¢t›tsœrÆr pñoÈnlQjhe¢hÜj®lmm+nn2n.mæmÈmÞnnenÐo]oÈpiqYr8rãrÿrôr“r:rr rqàqq5p÷pÆp“phpoSn«n"n5nŠoIoÀpxqVr’sùu;v=vÀwBwmwÓw•vÝu³tÐts{rÕqßq pFpIp£q rjsmt‚u§vÑwµxŽxÓyx“xwuùt¹s³rÖqçqp o£o~oÁoóoòo¯oHo næn²n—nzn–nÛo(oj jj j]j×k‰ll°mInnäoêqr s sƒsÎs~srŠr3qìq–q8pÕp|poîoâoßo¹osonãn»nÙoo^ohojoˆoÔp#p—qq’qàr@rÊs‡tbtþuYuGuKu u-tJrñoølÔh±dá`f[ÄVrQKcEèF/KöPTÜX[ƒ^`gb*d5Ñ/a)’#õ&T+£0…59=@D FäIÃL9NÝPäRwSÆUŠWgY=Z¯[Í\¹]á_;`Ôbbãc"cUc£dSe#eïf)fe\d—cªbäbEa«a-`u`6`eaa»aÉam_ò^\ 7j0Ñ*‡$‰3ô!Š%ý*:-ÿ1Î5(8†;T=û@7BµD·FGGªIxKuMrOPoQ£S TÚVÍXTYoYØZ*Z‰[W\A])]a]6\X[†Z±ZY Y X¥WðW¨WàX^XÖXuW¥UÄTQ›OPLmIEãCA?i>=<†;O:g:z:~;tg@ D$GôLAP5SòWå[3^I`MbcBdÏfYgêiBjkylfmBnQo3p pJp=oÛoÄoŸo}nön0m#l3k`j´jih-g_fÿgfâfŸe9cU`‘^a[jX‡S M§Ff?é9|2ß,‡&] ¶ÅÐ0ŠLF4"á&e)•,ø/à2|4¤79:Ë@B%CòEYF®HQJ?LeN$OyPPžQQóRØSÇTSéS R*QAP”P'OÀO_N´NbN™NúOSN¤MtKHÝF(C•@É=ª:ò8ˆ7.6(5”4o3—3 33383õ4¡6p8r;½?VC[FëJWN QiT¢WY&Zé\ü_7aŽc°e¨g+h•iÑk\l•mžmñnmánnmímBlrk]jjith•g‚f7dÌccbWaÆa`=^*[zXUdRNŠI BÖ;‹4ô.š(!þ@:Ç | ¨ ¾p˜óF>"$è'y)š+Ù-Â/ƒ12Õ4¡6‹8B9¢:ù<“>v@BUC¿D‰ELEæF¼GzHIH|HgGFÃEÌDþD}DCâC[CCKC’CàCAØ?X<Þ9ö734z1/E-<,\+Ø+Î+:*Ð*¨*î+ +­,@-Ê/Œ2f5€8è;Ó>½AöE6HgK'M•OÙRbU#X Zµ]%_`ÒbedTeÜggžhhRhÒhõhåh6gvf^e_d:c.aÉ`0^B\?ZƒYZXVŒSæP¹LÿJFœB¾=R7]0µ*x$›­Œd Íp£Rã  ÒÀ"pÄY‹ —"V$.%é'š)<*ô,-û/r12ô5 6ä8k9f:d;+ñ;56é1k+Ç%ÂÔvF ø ´ ©î9òB+ s : ùèf}.•7Úw÷ d!Ã#$¥&F(*+Ô-M.S/e0?1@1Ý2b251Ó1 0s/Ê/.]-Ü-¨-n-m--—-³,ý+û)ß'³$Þ" o÷€ZÙóE£Ù¥s$û³… ´#“&¶*"-É1g4»7Ò:§=¨@”CˆF*H¬JÌLáNØQSTêV^WÖXÐYÂZ,ZÆZzYÍX>VÃUSQ¦OOLI¼GME{C@ñ= :Z6Ç3/¹+o&c!fLu wKÞCÎè§¹3DÎ =UÁ © ~ ¾µèQäb‰¥ç„H2 ¥" #$4% %÷&q&à&¥&+%_$Î$H#´#1"ª"[""!"Y"€"¥"! 9u0ådÇe ò F ? › 1 \ e ² @ï+<  D#¯' *\-a0"2ÿ5Á8’;=•?­A¢CŽEÁGûJ,K÷M¦NÎPP±QQQPNÀMXK—IðG¦DõAó?2<Á:¥8P5…2;/3+Î(R$F ŸAg Îú6íA°ÿêQLfÎzN½`—ã·Nê Ý 7 ¤ }{ä’cWw@)Úä7þŒÚSõ¬rÊ~w¯àp“ÔOÂ> ¨ = X • 5–"ù\Áñ B aœ0ˆ—aD!#¥& (~*ò-‚/í2E4D6 7Ô9þx@AAÖBúDXE7F.EõE%ClB2@†>²<89‘6¿4&1Â/z-*“'¾%!ãc˜ ‘ò ‹ê`Ÿ·ò-ÿ·ÿ¾ÿ¨ÿ{ÿœ.¼µ)Ù_ºÉ47ƒj!º±   @8Ý1Ðc÷,<áw¨¬µœm8)û Ì ¾ Í Ì ÎÆ©°Å<Õ¨VæÞÃú6óqû ¾ Mî-“;XƒÊ"/$&Ø(ã*¼,¥.ò1<3W4ñ6f78ß9Ñ:Ë:µ::8À75§30î.,")t&¾$%!ηrêÌ_` ø uèx§fZÿ«ÿ£ÿÁÿÏÿžxvB-R²äîqZ/×%Ž_|¤`«ŸÛ - — Å µ ` ߬°Ç  S ~ ‹ T ½x …ÓiÃ3 'Ÿ]@k‘¼Öäê 0£0ˬff „ & ïîµ…bp–Èëâ ³"‰$²&µ(t)Ä+,1-}.o/e/m/8-ó,ª*­(ž&`$‹"ašÀMná¶á  Çÿ|PpõVé¼ÿ¥ÿæJ ÿ~ÿã(ÿÓÿlÿ…ÿÓÿÿÿãÿuÿ-ÿqÿÔÿÅÿšÿƒÿÒ‚-[D:‰KIÞ¾ôGm\>ϲœÄfÏ÷õ™;ÀWíu±…jhI?Hy·ó';N^‚·ü2n™tg~ùY ñ Œ cKMT%Å8Ü[­Ý* z!ë# $@$\$ "Š ü"¬‰D=mo; Pôìè ™Ž#<ÿÔÿ‚ÿ}ÿïDÿôÿqÿÄ&ÿÙÿ·ÿÓ;y%ÿÉÿëF‡ÿåGÞ0 Š1mr‚0ÍÆ [•ª€O ¾ •àYÍüÅc#æ]!*+%)<T^g{Ž•˜¤¬¥¦«×õm ^  { ù † ×îÔÖíý8‘ûrˆ¾Å1™$ÃóäU d M E ÀŸ .±ÔxË!Uÿ÷TÿœÿŽÿÃÿ¹ÿzÿ™ÿõ-$ÿÆÿ’sOÿìÿµÿÐH‹ÿ”ÿ}ÿ߀ÅZÿÿ ÿ4ÿ¾M`ÿ‹ÿGÿVÿ¼!`v9ÿòÿ–ÿ:ÿ"ÿ6ÿÿç/]crhX3ÿãÿÔÿÚÿâÿãÿÏÿÁÿÉÿÞÿçÿîÿþÿóÿäÿÇÿ›ÿyÿhÿqÿ[ÿˆÿÝM*ó°uÅ:{爭 æ h ñS¯o-å%é+ t Õ — ±¨ >ö˜OÖÌqdjÿØÿSÿ4ÿƒÿô!ÿµÿKÿŽÿý ÿÕÿ‹ÿ´ÿÿ²Tÿùÿ›ÿÔ<hDÿÚÿ¥ˆr ÿ ÿ©Q,µÿóÿ†ÿÖ’ ÿÿÿ´ÿéOÐ"³Gÿàÿ‚ÿzÿ—ÿû[µú,С{eS+#%*,-)%ÿý$!EŽ}à0RysU3ø@Ñ VÁ  ú H  ! ™ ó™ÃG„JêûVÿìRtCÿ§ÿ>ÿ|4ÿ¤ÿeÿÅ*ÿúÿ›ÿ‡ÿúÿÿ{ÿìX*ÿÍÿ´ÿè[“*ÿ¹ÿÖ:Žÿíÿxÿ›;ý4©ÿÔÿdÿ¡Hí©ÿ»ÿ¬jÈ ûá…ÿµÿ\ÿVÿpÿÍq·ßòåÄ\HI:2/6>FIG>Fg‘¤°ÏßåÄ X ÿ´ÿJÿ+ÿ&ÿ®^T:è{³ÝÞñ CMY²l'lŒrÜÿÓÿþçÿ. ÿ§ÿ?ÿ:ÿ»7ÿÁÿ‰ÿš>ÿáÿuÿ™&ÿÍÿ€ÿº@ÿËÿ® ’xÿÖÿædºmÿÚÿdÿa)G¨ÿÏÿXÿl Kï:ÿÁÿ²ÿÝR±÷>6¡ÿ—ÿFÿWÿ|ÿÑT›Ô -躧Ÿ†wt›¦¯±Áä%"ë°`ÿ×ÿ†ÿ`ÿ;ÿÿõ¦QºûÚ®i#(bä”Äs|IÿÀ'ŸTCÿBÿ ÿ¾d§4ÿ—ÿƒÿÑ*Hÿðÿÿ¤ÿð"ÿÄÿ…ÿÆ5ÿ«ÿ›ÿÔ;gÿžÿÏ?Œ{ÿªÿôtº‚ÿÒÿ\ÿ–Z'^â ÿ}ÿ™-æ9þ”ÿÑÿä]¹C,êoÿüÿ³ÿŒÿ¥ÿµÿæXšËôþöúøèÜÞéêëòö÷òõëܱz5ÿõÿÀÿŠÿvÿ_ÿ„ÿÁ,®ùËoÿþÿ—ÿwÿsÿÇ@¢ä’ÿÍÿ$þòÿˆ’8ûÿ$þæÿ~X—Bÿºÿiÿ¹3Fÿ°ÿÿß6"ÿÙÿ¤ÿ¥ÿî ÿøÿ®ÿŸ l@ÿßÿ®ÿÖV¥PÿÑÿ«ÿø˜ëŠÿÙÿTÿ…dKœ#ÿoÿhÒHNÐTÿóÿ»ÿÛZÉR,å{,ÿØÿ×ÿ×ÿøTƒ¬Òí !$ óÔ³Lÿ×ÿµÿ§ÿ¿ÿËÿù0ŒRŠPåMÿÌÿ•ÿxÿÆ7´$ ”ÿÚÿÿÿæù§YRÿLÿÿ¦fÎqÿÂÿvÿœVÿ²ÿ›ÿÊ@ÿùÿ¡ÿªÿáÿØ#8ÿØÿŠÿÍ;lGÿ×ÿ  Ž LÿÒÿ¨®ò ÿÚÿRÿzF2“?_ÿ©ÿ‚ÿØ;‘/ÿöÿËÿì zÒ廀Dÿþ;XyÀçûäÄ–h=ÿüÿÙÿÜÿó*X’ÛE/ú‰ ÿ¶ÿ†ÿ´ÿ÷[Ðç°ÿ_ÿÿ0ÿïómÿBÿÿª}Í‚ÿïÿ~ÿ¢M8ÿÔÿˆÿ¸;ÿÅÿÿÐÿ«Jÿºÿ«ÿê[Ž-ÿÂÿÔ6£µ@ÿÃÿ­Ê­ÿÝÿ2ÿO$.Ân—ÿ²ÿOÿ±US#ãxÿìÿÄÿÞS Òðܾ‘pc`jims†Ÿ¸ÉÍÐÍÏɾ¢€]@85ENj’Ãï% ×s ÿÈÿ˜ÿÄ ƒ÷(DÞ ÿxÿÿc=¤ÿõÿ þùÿ¾–üŸÿäÿ‰ÿ§mKÿèÿ¢ÿ¥ÿûE'ÿÚÿªÿ¶8ÿÿä6<ÿ¸ÿ­†lÿÎÿÞO¯4ÿ¿ÿ¯4Ó¯ÿéÿ[ÿf ”xµÿðÿŒÿž1º,ê¦Q ÿðÿÒÿî o³Øéׯ¯¢—…xmpyˆ”ššœ•…p`\Zgw¦Àäûþáš=ÿ÷ÿËÿåRµü/ýžÿtÿZÿ¹‚Otõÿ/ÿÿĤü© ÿÿ¢deÿ¦ÿ£ÿè0Dÿÿÿ¯ÿ´ÿî#'ÿâÿ½ÿÊ?Iÿöÿ±ÿÝ9ueÿÃÿíS­§+ÿ¹ÿµ+Ù(Ý ÿhÿTÿìá—ý ÿ’ÿ˜ÿï…ç̤hÿêÿØ;~²ÊØÏβžŒxwwyyyyvieo†š­¾ÉÕØßÒÁ‘PÿÜÿè~ÇðÌ[ÿÊÿÿrÿ÷ÏcwÇÿÉÿ&ÿ9ÿÿÒ%¼ÿøÿ‘ÿ¨tnÿ¼ÿœÿÚ->ÿÓÿ´ÿã ÿöÿÂÿëÿÆÿÑ&c5ÿéÿÎÿøVTÿúÿÔn·“,ÿÕÿÙAà Í&ÿ–ÿtÿø»S|bÿßÿ³ÿüL§âæè¹x4ÿüÿÿ&U‰±ÇÞßØÂ°œˆxh_UTYfkxލ¿ÌÚÛÞϽ–c1ÿÿ H™Þ ùè¡>ÿêÿžÿÆ;×\D°ÿâÿGÿ[ÿô¯¹$ÿªÿ´gv8ÿàÿ³ÿËL)ÿäÿÃÿÕ 1 ÿÐÿ»ÿÚÿÀÿúBU1ÿñÿØm€Rÿßo´¦Mÿðÿ˦ ølÿÅÿ€ÿ½t.vF£ÿÝÿÝ,o¨ÐÌÁ—i<=d·ÍÖʳ¥”‚sccl€’¢°¹ÁÀÀ´©tQ"H‰ÇôíÙœ^#ÿàÿä†Pvÿµÿ^ÿŽ0Çì‘ÿýÿ°ÿÍ*}1ÿîÿÎÿÞ85ÿýÿÉÿØ%ÿðÿÄÿÎÿïÿÊÿÛFOÿáÿó0nw<ÿûÿï!s¦—Pÿþÿï9¬ÿæyÿ÷ÿ¢ÿÔ^\3ÓPÿÿÿüY‰¤¸® }V7#)0Nv›¯±´±²±­§Ÿž¥¯··´¯°« ‡fH/,'Am¤×æäº‘Zÿ÷ÿ÷@² >ôaÿÐÿÿ·6¶Ý–,ÿàÿé0ktDÿþÿÙÿâ#,ÿãÿÍÿ÷'&ÿßÿÎÿáÿýÿêÿÙÿå@5 ÿíÿõ2jj:ÿö]¢­w*ÿý†çÃ.ÿ¾ÿ²)Ç7Mï†- &<]u…™›„gK35Hh}Š–¢²ÂÐ×ÝÝßØÎ¼©˜‘ˆv[8($Af”ÂÓÓ°ŠbD5'lȼ.ÿ°ÿ ÿîtÏÇr ÿôa‰o+ÿûÿéÿð ÿîÿáÿï+ÿèÿàÿêÿòÿðÿûÿüÿæÿá,@.ÿüÿãTmV) ;x›˜h)4‡çù³8ÿÓÿÔ%±-ÿ˜P/!6CYo‚–—Žw`SNYexаÀÏÙåééÞÒ¿­˜jN>5DXyœ¯·¤lL7#/A|ß±+ÿÍÿ±ÿþk»¼p!ÿüQumHÿÿ 'ÿüÿáÿê"!ÿáÿêÿýÿøÿæÿóÿþÿùÿÿ5Aÿú0NWQ>-.<\†“Pe¼õÑiÿÓ‚ïí¶rJ?159Lf‘•—Œ}rrœ©²»ÃÎÓÔËö¬™~eLNa‚ž©¯šxS<85@@[Èò™#ÿÑÿÝ)Œ¾Mÿÿ-]qX)&"ÿøÿèÿöÿìÿ÷ÿòÿòÿøÿü/L2 =WZF0*8Xx‡ŒuJ3<q½Ý¿g ÿívÉíﻌ\5*%9Ng{‹ ¦ŸˆŠ‹•¡±¾ÈÐÑÒȼª–…uokw£©œy[D5:>Tn”ÍÞ΃ÿàÿã,«¡a" $WofP1 #"ÿèÿç0ÿ÷ÿðÿøÿûÿúÿî !>9"+HND65Iacdx‡‹xL9W’ÉÆˆ5LÖÚÅbF9BGT^pŒ¤±®«¤››£²¾ÅÈÅÆ¿´¡Œƒœ¤¬¤‘vd[UXYbk¡¹Ë©_ÿæÿÿB‰yH##B_k^FFE3 ÿïÿäÿó+ÿíÿñÿÿÿ÷ÿëÿêÿÿ )>< 4S]I3;R_isz†gOFa™ÀÂHG‰ÀÛÞnLCBRYi€›µÅÏʶ¯­ª¨§¦¦¦¥¤ ¢¯¹¼²§•ƒqaYQV[oŽ«È½—WS‰–yC$$3MWSK>;2*(ÿîÿÝÿî ÿýÿæÿïÿÿÿóÿäÿëÿô 2F3 !JfY=5B[pphlv…„dMT|µÉ«g+8y´ËÄ™u^Yejs{¨ÂÕ××ʽ¬œ”‘”“— ­¹ÂËǼ¥‚||umcelƒ¦¸¸K@|¡™h9",GNH>6>@1%@(ÿüÿàÿäÿüÿîÿìÿðÿõÿîÿæÿíÿð ÿþ>G5 &Ma\H:D^r}{w…‰x^HS‚¯¾f5:l¤ÅÀ¯‘€{x‹ž°¸»ÄÇŹ«¡ £ŸŸ§²¼¾¹­¥œ†„„{xz‹¥·Á©}IAzœi;+8JXSGHJK@'1.ÿÞÿâÿÿÿæÿíÿüÿõÿêÿêÿìÿêÿð & +HM4,VpcF;Jl‰‰{y|…€aJMn™­¥yF.9jšºÈ¸§•ŽŽ–š••¢²¾À½¸¹º·³³±¯¥“‡ˆ‘‘ŽŒ†Š—­Éɱ{@$&Pƒ›ˆW0*Bci\NIWaU<%0=/ÿêÿßÿùÿíÿçÿ÷ÿöÿãÿéÿñÿåÿñ '%5JPC)">cqeOBOj}ƒw…u`S\v”¬¤ƒ[CNe±Âò¨Ÿ”•›˜•™£¬³·¶··ºº¶­¥›†ˆ‡‚„œ«»¼ºžpH1@cˆ›ŠjI>J\haSRUXR>+'.:8ÿþÿñÿñÿûÿÿÿûÿêÿÞÿèÿñÿàÿö-6*!6XfM/.GhylP@Ig„…xz„ujam¨¯˜x]M]¦º¹¶¨š“˜¢£ ›™›£ª¯­¬µº³¥›•’‘Œ}ƒ–­ºÀªŠd?<R| ¤ŠcPTesm\OKUZM9*(2:3" 1"ÿóÿó ÿëÿäÿçÿìÿìÿßÿýÿÿ 15/).GZS?4;RkvmXN_y‚ƒ‚}oiv¡¤ž‡gYcƒž°½¸¬œ•”‘‘“˜¢°¸¸³º¼±Ÿ”‰‡€€…’¢®·°£Šl[Vg€”›ŠnVT`hhaWVXYRA59CF=-#(ÿøÿú ÿôÿçÿñÿüÿöÿçÿßÿûÿû" 1;7.0:HNE<=Nk~vd`jw…Œˆ}vƒŠ{nnz©¬”sbix‘©²°¢˜ˆˆ‹•œ¦³»¼¸¹µ«’‹„‚{“©¹µ©ymep‡šžŽxd\`hk_SSZbaTD9=P[M3"" ÿýÿù  ÿöÿìÿòÿúÿäÿáÿûÿò *3767DOKB;C[psiabizŒ”„Š‹ƒ}x™§ †qgdq‚•£¨®«¢˜”—™ž¥©«ª«©¥œ’Œ‹”›¦¬¬ˆuhjn|•Ž~usuwrh_]dibRB:9AOO: "% ÿðÿöÿïÿàÿáÿþÿö)=@<AHKJGGKUahhecl”˜„€†‘—“ƒx~‹‘„wgbdt†œ³½º«¡œšš™™šœžŸ”–¢­®©›‹|mimxƒyoo}‹…rdfpxr[D:>DHF:&""ÿöÿö ÿðÿæÿäÿä &"157@HHFHLJN\lsqjhp€”…‚…Š‹„|{‚ƒ„€vlfil{’¦°­§¡¢¤¡›™šš•”¦ª£–†{voot}†ˆ‚ywz‚„}phiszvfUJKRTPH</&%'&!ÿþÿüÿùÿîÿíÿðÿëÿü  +-&#%(1?IGCKTQPZitwungk|Œ’‹‚zvx~ƒ€yrqw~}vmacp†™£¥£ª¯®ª¨¦¢š™–—žŸ˜‰{ttz{||}ƒ€~…ˆ‚td^dqzvfVSZ_`\TLE?:60+# ÿÿÿõÿòÿõÿùÿúÿð 1Wna<:`n^F.'B]g[L7 !>b|…rV?;KTfƒ”‘wpg]OFCIOYcmx€†ˆˆ|hYL?;8AN\fmz€}soldafq{}tleb^RLWaYLLMB:=GOOI;.&'( ÿøÿòÿñÿ÷ÿ÷ÿãÿÚ Rul>>gsfA!Cgsf? ItŽ„lJ24Ffy†›ŠpjkbUF=9CN^o{……‚yqi_WPLGHJQV]ep‚‹Œ~sdQGDPcrvoiddbXPSXSOW^YMB=?FOM=)"  ÿúÿôÿðÿñÿøÿüÿøÿëÿÚÿóÿó*TyB %TsrO*0Xt{^5 !@b~y[6#-?^{І…x[EDPMLQ[dinli`TI?<=FR`mv€‚„|lZKJO\foxytfVMKSX_hnupdTKJKQY[WL?6/5HRH.  ÿ÷ÿêÿçÿîÿõÿøÿûÿòÿáÿÝÿëU}€Tÿý!cŠ~S5cŠˆj7 $U‚Ž„Tÿü>kˆ—‹j[N:3:JKPar}zveR;$(@Yq†”¤¨«šaD3&+4Kcw‡ƒwaOHGS`mxwrcRGGMLJJGD<*"0BE4ÿøÿÿ  ÿúÿçÿâÿêÿîÿòÿ÷ÿôÿçÿËMzG+iK&Sz‡‚_4!CesoP.1i–ŸƒgM;;>KVe{…rj^J7,*%&'0=O_lux{~…‹’‘q[A,5Oj|kXLCKZo„„tWE=6=MZ`P.&<B3ÿúÿíÿéÿ÷ ÿòÿâÿÞÿàÿéÿòÿðÿáÿâ6w~J ÿø)vœ†J3hžV/+Uz…f6 ÿö@€¸»—V*5MhžšpS4$;Sh}ˆ’‹}iWNIQYhz‡‘†sR2>f‚–Œz]B:=Us„hP<-2DXdX= &:=& ÿíÿÕÿØÿí ÿÿÿìÿÚÿÕÿÜÿåÿæÿÛm|L -~­“J5lŠrL14Oq…uN%$El‰…qH@i‰¡›ŽnQ4 /Lg{‚Œ‰‚ul`QC7439<EQ`pz„~t\A+*Ipޤš…_8''A^qxc@ 1IYN,   ÿêÿÒÿÌÿÞÿøÿýÿãÿÍÿÅÿÏÿàÿåWsIÿù+|± V =nˆ€W0"-W‰™€E d ­˜Vÿìÿá C°¼½•f.ÿþÿäÿÏÿÜÿíGvŸ­´£–}`F50+-/38:72-2;RpŠžšrN.1_£¨…U& ,XwrW)ÿý&RaKÿüÿñÿõ ÿéÿÇÿÁÿØÿøÿ÷ÿÚÿÃÿÃÿÖÿèmBÿûÿík “S.gwcG/';\u|`. <sˆY*E}¨¼§d4 ÿíÿëÿò.Onƒ–˜•„saSJ?<<?@?:5551,'*.>Tn‡—©¥™sFÿùÿú 9n‘¥Š](?ena6ÿô.IG5ÿðÿæÿöÿåÿÁÿ¿ÿÝÿÚÿÁÿÀÿÕ?ÿüÿÐ`’‚D.[nS)'FiƒuIÿó>~Ÿ8ÿ÷ÿÚ [¸ÿûÔ}7ÿÒÿÍÿ× B}¯ÃÑ»oF) ,DXbje[OKJFA?<50+2;Su“®¦’[ÿàÿ¿ÿÜ X¢¹­iÿîÿÜE~šw4ÿõÿ×ÿò$Sb@ ÿàÿÓÿë ÿßÿÀÿÅÿêÿþÿÖÿºÿ¿ÿçÿÌÿìK•†? 0^aC"&LjqjL%'PtuT$ ;|°­ŽFÿþÿÙÿ×5nªÏéÛÈqAÿóÿàÿæÿêÿø-H\k‹‹ŒkZC)ÿùÿñÿêÿþCsœÊÈ­dÿàÿ®ÿ¼ÿè9‹¯³w)ÿîÿÕÿü;o}Qÿäÿè?K7ÿÙÿÉÿÞÿÙÿ·ÿÁÿêÿúÿÊÿ³ÿ§ÿÚ6…L<hnA)SptY9$ <m„n3ÿõÿåQ¢º£Eÿàÿ˜ÿjÿœÿïj×M:Ât+ÿêÿÊÿ®ÿ»ÿÓÿû+8<FMPXj~‰Ž›œ’yfN0ÿûÿêÿÖÿÔÿÓÿðM Þ è³Kÿ×ÿÿoÿ´ŒèÝ—ÿºÿ¦ÿÐ/„“_ÿÚÿà+E2ÿþÿÉÿ¹ÿÔÿÿÿ÷ÿÈÿ®ÿ½ÿìÿìÿÀÿ³w„Kÿü(cjFNkgQ3#,EY^@ÿåÿì\xo2ÿëÿ¾ÿ±ÿç&€Ü )Ï€5ÿØÿÖÿ×ÿõ<c|‘Žr`J910&%2EOUdieSH1ÿïÿÎÿÂÿ³ÿÏÿüIœÚÍaÿñÿ©ÿ}ÿ´Ê·yÿÖÿ× VpR&ÿûÿâÿó=)ÿõÿÂÿ´ÿÐÿûÿñÿÅÿ¬ÿÄÿó ÿÞÿöZ‚Nÿú#XlE ÿýAc_>"*E]NÿÛÿ±ÿÌk‹Sÿôÿ›ÿjÿ¤• <\#Ûhÿöÿ¨ÿsÿ†ÿ¤ÿê+l¬ÍãÛÖÁ¬ŽrS5ÿéÿÍÿÅÿËÿæÿûAcwz‰ƒmC ÿüÿÌÿ²ÿœÿÀÿø]×)c)Å)ÿ…ÿFÿWÿàwܬ-ÿÇÿ°ÿò7gk7ÿøÿÔÿë-ÿêÿ¼ÿ¬ÿÆÿó ÿîÿÀÿ°ÿÆÿøÿþ'fVÿìYqV$ 2NP5(GQAÿÐÿ·ÿÖ_b#ÿÅÿ|ÿ…ÿ¿,’»¹q1ÿíÿ¬ÿŒÿoÿ‡ÿ²ÿú5dŽœ¨›‰l[D"ÿáÿÏÿÃÿ¼ÿ®ÿŸÿÿŠÿŠÿ•ÿ—ÿ§ÿÇÿìÿÿDoŠŒ”c.ÿôÿÆÿšÿªÿÎ(“ç.§ÿ—ÿsÿƒÿîj¯¡DÿïÿÅÿÏ Qf;ÿõÿÐÿ×ÿ÷ÿéÿ­ÿ–ÿÃÿþÿäÿµÿ¥ÿÏ5<ÿüEr^( !:6>O7ÿÓÿ³ÿÐ\]ÿ¯ÿ}ÿ• •ì °6ÿµÿ[ÿVÿaÿ¯ÿüW¶îûä²R* ÿöÿãÿÚÿäÿö ÿüÿëÿèÿðÿçÿöZбàõå¾kÿ¬ÿXÿgÿŸ0åWˆpÿ¶ÿÿ%ÿŽ5§¤[ÿèÿœÿªÿüSd,ÿåÿ²ÿµÿãÿÎÿÿ™ÿÏÿùÿÿÿÕÿªÿ®ÿÖ ÿëÿÿ)OQ+ÿü ÿõÿñ*9ÿäÿ´ÿ§ÿ¹ÿÞÿýÿëÿ¥ÿcÿJÿ…ÿèKv4ÿÉÿfÿHÿVÿ©ÿù;mkc.ÿõÿ¬ÿlÿ<ÿ þýþ÷ÿÿ-ÿLÿ]ÿlÿ†ÿ¦ÿÊÿåÿöÿ÷ÿùÿòÿðÿàÿÇÿ¡ÿÿYÿ#ÿþñÿÿÿ:ÿqÿ¹ÿÿ4qubÿªÿNþýÿÿ[ÿíƒÔô‘ÿúÿsÿ5ÿvÿãM|Kÿëÿ ÿ­ÿú>P%ÿÙÿ¢ÿ¥ÿãÿõÿ³ÿÿœÿÑÿùÿÍÿ¤ÿŸÿÒÿóÿêÿö$GAÿõ ÿüÿæÿÛÿåÿú+ÿëÿ»ÿ»ÿâÿôÿ·ÿuÿÿüŸ(_a#ê镸ýí+½\#õóï )W€«Ö0Utƒ‘’“•Ž‚]9ü·k$ì­–·à+ˆÓüË=Žÿ÷ÿzÿ‘ÿì—Iz?~ÿºÿOÿLÿÅE‚Pÿãÿ¡ÿ«ÿï6Hÿ¿ÿˆÿ¥ÿæÿûÿâÿªÿ‡ÿ£ÿÜÿ÷ÿ»ÿˆÿ™ÿ{ÿ©ÿì'9( ÿäÿÌÿÑÿí ÿÞÿ®ÿžÿÈÿîÿÛÿšÿGÿ0ÿHÿÎt‹ÄùD§A÷ž,_zM$ィ¢¿Û,Mix€Ž­Ôö &9Lb{‰€vS3蕉ùuµ’€£Îòè–ê#xÿóÿì!|³‚ ÿwþþþüÿOÿÌÿùÿÂÿÿ›ÿÔÿåÿ—ÿ}ÿœÿÓÿóÿÏÿ™ÿ‰ÿ§ÿçÿÞÿ›ÿ‚ÿÓO^B&'ÿòÿÌÿÅÿá ÿôÿò XÃëÆÍAã¼uˆ èû 1 C Ý A 2   (  ß a å Y Á ÷.* Ö ˜ u r Œ š ž ‘ š  î4@HPgwŽn@ ¼ , ] ­ Åþ<Ïuq‹™™ ?úœª“õ>~ÿÜÿ’ÿÅR=ÿñÿ®ÿÿËÿÐÿŽÿqÿ›ÿØÿãÿÆÿ—ÿˆÿ¼ÿõÿùÿÎÿšAP-ÿñÿÌÿÀÿÄÿ¿ÿ–ÿgÿDÿMÿyÿ¢ÿ–ÿÿiÿ¥Ë_Ñq;OCÊ‹f    ‹ ù<ÜGo§ÀŸv6î[¾ÇÔ†„ú²—¸ËÖÆÀÑDr~odq•Ë&óÁ7Ÿ­²ˆWC?    @ £ ê ¼nñnPlé°MrÿïÿÂÿëÿ÷ÿáÿ“ÿRÿHÿyÿ¼ÿÚÿ©ÿkÿjÿ™ÿÐÿåÿ¸ÿ‰ÿÿÑÿúÿöÿ¿ÇjëZÝR( ÿÖÿµÿ¥ÿÀÿê;v,B6F`È v  $ ü Þ‹NàÌÇ{ ™@1Jw’ c!'!!Ð!½!´!K ¹ l&Fmˆy“Ç  ûµ‚x‡¸ß  0 E l E P‹W¦<碊u~š—Ž H R a5Ùa˜aœR1Í[ÿåÿ»ÿâÿÄÿ‡ÿ}ÿ²ÿíÿãÿºÿ¦ÿ²ÿãÿéÝÖµ¤Ñ¤; ÿÇÿ³ÿ®ÿÖÿí,^þ Uù€ t ¸V=WÓ¸À±q±Ô «!¤"}#:#ó$½%´&Ä'ã(ü)à*½+;+¨+À+ì+Æ+t+*ž*Š*«++Q+}+‚+„+µ+ë,%,+¸+4*Ô* *~*z*k*]*L*;*A*)ç)O(®'ª&Ÿ%Q$ "¡!=· €òq qªH@ | ` „ ®qäBëÞH´.\ÿÄÿ~ÿŽÿŒÿzÿ0ÿÿ,ÿ~ÿ³ÿÀÿªÿ™ÿÃÿñÿþ E v¬Û¦ïJéKS¶Al£T ß ô-8$‡#”+ T"¾%&È(D)9*8+%,C-N.5.ñ/©0n1G2H3U4c5q6?6î7U7Ù887ê7Â7È88\8ž8´8¨88Ë8ù98Ý8d7Â7M76Ä6—6f6&5Ù55?4ã4{3Õ3$2<1[0X/e.:-+u)µ'™%y#d!v³ÿ( 딦% ãg …äåÑÑBìÇYÿÿÿÅÿÒ ÿüÿÆÿ½ÿÕÿùýƒ, €é/ þK}ÅÎX D Ø :ËYKÓtz!Ö#Œ%q'œ*7,É/0¸2"3%4F5x6â8*969ð:™;X<<=u>Â@0ABÉCÓD~EJE¡EÆE…EDEEE5E3E DÀDŽDŸDÃDÓD”DC‡C"BñBÆB²B¢BwB8AËAs@Ù@.?'> <Å;•:w9q8W7=5·4 1è/Ã-|+@)$'%3#_!cÖÉ(ÇH„(s î ô Ž §þ±¼7Œ^ &ÿòÿ®ÿƒÿÿdžœù‹Ò BKxfÉò˜­H{/ ë/"Ö&N)+v-s/Ï2Q4ð7<9P:Í<0=a>»@.AÐC,D7DäEˆFlGI#JÅL|N-O€P²QcR.RaR`QáQaPãPžPgPO©ON¼NšN N“NTMáMmM!MMMEMuMŒMMPM#L‡KÕJ“I0GFD¢CYB,A?­>:ĘÿÞÿÚ&$"ØöQ‚šªÛzJÏK¤Yb˵ V"r%£(ö,ƒ/Ô2»5t7ô:³=I?ÍAßCâElFÕH!I¦K?LòNBO/OÕPQ½S;U1W#XúZÆ\]"]š^&^]Ñ]$\€[ë[Š[>ZÙZXY»Y;XóXÌX•X4W¡WV¼V¹VÈWWbWªWåWñXWÌWnVcU2SˆQêP?NªM7KßJwHÿG3EZC!@Ò>_;Þ9¼7ô6v4Ù2ø0Ø. ,›*Ä);'&$g!ðE;Ÿ ä  ‡—¾ »l{yÿðÿ1D-Ù*ì(C&ƒ$¤#Î#"#‰$!%!%Ú&y''¬(s)‰*O+ô.,1Q4C7o:›=µ@ÊCŽFJHJÀL‰NgOßQ#RFS¬UV†WšX\YYé[Q\ü^÷`Þbyddïe¼eèf"eÙepdÂd$cžc:båb|aùaa`Ö`s`_½_;^^]’]]¡]ÿ^V^¾_"_x_ä``_‚^Î]}\'Z‡XñW[UãTkRïQ=O}MtK]IFÏD·BÑA6?¢=÷<&:7ý5ë4323/Ð,ß)Ï&í$y"W ,¯ÅÑVi º õT¹ú<—95ù361m/}.´.).Â/z0ž1‘2]33Ÿ4+5 68:M=H?èBîFUIÑMOÏRWTIVQWïY–Z¿[¬\m]y^Ž_‡`^aaöcdvfg¿i\jŸkÓl}mm/mbm6lñlmkökskj}iíiKh¢h gŽgf˜feWdÙdxd€d–dùeZe×fPfÂg>g~gºgtgf*e>cób¨a0_¼^C\Ú[hYÿXUV‡TvR\PXN}LÐKIeG©E¹CªA|?=Q:û8=5[2m/ª-'*ê(T%.!¯’s:Å š ~4ìQœGŽDA!>s<¿:è:<9Ð:„;F<=¯>©?S?Ô@NASB¡D¬F±I$KaN;Q²U*X ZC\N]ã_¶a%b|c6c´dd—eIeÚf€g2h#i&jWkl³mÇnoSoÂp(pPp‹pˆpsp!oÝoenän3mxl·lkijÞjaiÏiMhÅh‚hSh|h§ii€jjyjÚk;kkkk{kFj¼j>i|hºg¯feKdbþaü`É_f]º\ZbXÚWBU‚S©QïP'N\LTJ=GÜEuBä@h=Ç:ÿ8;5Ú330&,’)%m!Ìã£ßø , ºRiOL?I«HFiEáE‹FKGHmIÚKK¤LL¬MàOjQZRçTÀV·Yg\¦_´bc™e@fŸh3iajmjÒjþjýk@k¹l&l¼m]nnÙo¡p{q;qärVrÉsscs‡s«sšs€s>sr´r1qfp“o½onfmÅm5l“l%kÇkÄkÏl#lolåmgmên[nªnýo(oYoJo#nÈnn mÌm;lk¡j°iºhêh geòdÍcbqa_w]¥[ôZFX¸VåTâRrOïMaK&HÀFC@\=|:{6å3)/+ &Ñ"Iâ¥/ð\ ˆZßWòU‚SRRPÊPxP1PåQÁS3T¾UõV‰VñW¿YZk[Ü\Ù^_Èbdf²h6i,jpkšlÕm°nmn¡n£n–nÍoNoÕpkpïq^qÁr,r¿s=s”s»sðtt;t9t"sÕs†s*rôrqýq&pHotnÂn1mŠlÿlkl-llOlœm&m¤n=nèo}oõp:p‡pªpÑp½pp?poÕoºoŠoKnËn7m{lÐl"kujÄjiZh¸g±fed·ca‡`3^¶] ZßXwVTR O¾LûJ8G.DU@ÿ=c9=5/0ç,ˆ(=#ò :ÀàÏbÕ`_^h\º[ð[ [ZÜ[Œ\•^5_×a a›a÷bÝcùdðe»f@ghWiûkl¿m–n*o oäp¶q8q¥q²qŒq†q×rs)s»tt[t¨uuuÌuÙu£u‰u_u@tøt—ts“sr½r3qspyon©múmxlÓl[kåkßkölm mÔnocpQqq²qþrNrfrƒrsrSr(rrqöqéqßqÂqªq]p÷pgo×o\o nÀnmálÖkGiÈh\g=fdÂbô`×^±] [qY¹WZT¦Q~NÄKœH-D ?Ó;^72Ö.~*&Ð#Ÿ Yg”e°dLcvœv uSt¦sÑrëqæpØoæonlm¯m lflkÃk­kfkEk7kkül·mgn1nèoÇpØqâr¾s[ttxtãuut÷tÛtÜuuAu\u~uºvvRvsvuv>v uÆu¬u=tsqrEqpoan½n?m¬mllkîkðk|jhzffcçaâ_=\X*TŒQMÑJ§GLD@Áo”oooCo¢oÇoåoïpWqr rÀs}t€u[uÛv&v’w/xx½xùxÆx°x–x•xŽxwxGxwÛwˆwgwzwÆxx6x2xwÖw·w³w®w³w`vÙu÷u#t>snrŠq…po…nÑnCmçmglÿl“lvl‡lÊlÛm mMm×nvo4oâp}qqrJrîs_s¤ttQtœtÆtîtïtÓtËtñuLužuÿvbv»wwGw{wsw`wvÛvZu¿tÔsÛrÕqØqpp-oÞo™o!nÌnênÇnYlïk0hùgWeAbª_|\bYjVÀT'QPNUKPo|oHoƒo×p5pVpcpspÃq;qõrsXtVu;uÀv?wx y yyáy²y¢ywyUy#xëx¦x_xwÖw´w¯wÀwÃw²wwpw5vývâvÉvÀv_uÀtÌsïs r=qbpZotn±nVnnmÂmm[m€mÖncn¾o-o³p]qqºrTr³rûs"sts˜s…sLs/s&ss+sQsksOsAsWsºt3tÇuLu«uõvvfv‡v›vev(u£utfs°rçr qYpÅpzp;poÅoŠo†ofoKnnmk@iÓh"f6cãa{_&]$[3YV½THožo¡pp…pëqqq1qlq¬r1rÄs–tuYuÞv€w“x¶y®z zfz9zyÕy¥yfyxÇxxx1wìw·wˆwbwqcqËr@rÎsSsºt tFt™tÑutìtÆtYsçs\rår`q·q%p´p†p^p[pUpPpAp'pPoðom¤lkkiÇhGf“dácvb`¬^ÿ],o^omoäp]pÈpÿqq5qkq“rr­sŠtIt÷uv5wExKyy_y¡yyVy xäx¸xzx8xwÏww9vßvŠvOv u¬u0tšt7tt)tsÈsjrþrÁreqáq!pIo“onÙnŸn‰n[nbn}nèokpppp×qYqÙrVr©rýs rõr»rµr…r%qŠpøphoÍoroEoMo'o)oIo¤oüplpÝqCq˜qÝr3rurµrÂrÈrŽrt™títçt×tZs²rùrŒr*q p÷pDo¨onÌnžn`mÅmDmmCm‘nn~nÕo oLo¼p*pspšpØpópïpÙpâpïpØpêq5q qÑrrœs%s†s«sësËs¤rÍq‘p)o0n|m£lël*k¾k‡k‚kcoUopoÑpApÆq4q’qërGrsttæuRuv:váwrwÂxxxwÜwµw‰w_wMwIwVwzwawvxvuhtÔsïr×q˜pRo‚oonñnïn¿n¬nÃo oEo‚o©oàp(p—q qrryrïslsøtptÇuuuÞv>v@v+u—tÖsúsirär:qtp¢oíoDnïnÙnºn4m›m&mm0mœnnunœnÍoBoÉp&pkpÆq q6qOq{q©q¸qõross[sºtItáutuºuïu®uˆt¨sLq®pwoŸnÀn%mjm"mmsmÊoPoZo oÿpŒqq•r rssÑtØuÁv?vw8wÅxx$x>x+x wÖw¬w„wOw8wHw^wkw+vÇvuŽtÒtsqÛpƒon@mÁmÇm±m—m6mm:mÊnPnÛo6oªpEqq÷rÍs‰tt¶u.u«uùv$vGv˜vðwPw^wPv¹uøutLsˆržq˜pŽo¬nËn_nFnNmømˆm$mmmXmÈn9n_nŒnÿo’ppbpÒq8q–qár,rorr÷s†t2t´u.u·vEvøwXw‡w#väuét€rÃqIp6o?n®móm·mµn-n¿o!ooHoŽp p¹qrrrÆsŒt‚u¦v™w3wxGxµxÎxŽx~xTxwÄw‰w[www%wEw?vávsuÂu"tRs’rtq oŽnmNlñmlÃlukökélIm!mËnsnðoŸp‰qºrîtu u¿vsváwNw~w›w«wáxxRx;xw[v|uZtrsorAqoÓnämñmƒm]mum?mmm%m2m]m¤mèmønn`nÑo(o‘pp•q'q«rr{rÓsTsþtÇu|vv¤w,wúxuxªx;wôvôu–sÖr9qpo”nënÁnÂoJponòooEoÚp’q„rKs/t.uLvzwrx;xµyey¤yy&xþxÃxbwùw¦wqw0ww=wHwvv$udtžs›rµqloÃnl¡kèk‹k‘k2jéjœjìkœl»mžnoJpNq†rötdu vÆwx,xvxÀxËxÐxÆxÙxáxîx±xmw£v±u`t7rÓq@ožnlÖkjìjfjGiîiüjVjökek¾ll\l lømimìnZnÓoUoôp«qTqÙrBr¨s1sÚt«uv:vÃw?x x”xÜx~x/w7vt~rúqÔpóp•poûoûpqq#onõoo*oÃp¡qÎr¹s¼tèv$wVxQyHyàz€zŒzQyÌy–yOxÒxPwïw¾w‹w~w˜w‡w=vŸv#uVtns-rpƒn›l×kijºj-j i¡iœi¶jkqlÐnocp­rs•uv¯wíyy£z"z*z:zyÍyŽymyYyOyxÖxw,uºtcrŸp­n‘l…jÇigïfìfveÇeØfTgbhGii¨j.jÓk–ljm1mÜninðoŠpUqqžrrarãs‚tYuJvv«wwíxxâx˜x@wPvOu s°rªqìq²qZqaqtqçr•oo[o|oŒp/q+rxsrttu©váwýxízz¬{%zþz¹z>zy¼y6x«xExwúwíwêw w,v_uÁt³ssq·pnkåiðhJg]f]feÝfjgh?inklßnäpØr»t˜vCxyVz‹{{~{f{\{z™z-yêyÍy½yŠyYxšw¼vtxr&o°lîj;gÉe_c’a×`á_Á_¿`aƒbædpe¦fÖh-i°kPlÃn néo§pAqq×rarªræsÙ=ä?^@ CžF KOÆUZ_dWimãq,tuLv™w!wòx/x w®w¡wÛxxpx¹xÔxÌx·xñxîxwÝwŠwBvêv_utøtÖtõtÂt”t‘tætÑtÚtôu7u€uÔv@v_v1uÈu‚udutuout±t„twtNt;t@tYtktpt·tYsÀqÛpl‘hÙc»^yXÖSwN~IUE3A>ý=s=Þ>;?|@lAëC5EÉHãM`QÓVÐ[•`”eÚjëpsßwLxñz{zÆ{&zÛz›zy­x³wÐu?rfm9g{`rYÆS;LÈFû@ÙgEìMOTÉ\Vbói nqÙs:tt¯u"ut°t;ttt?t‡tÎtètÉt¢t¹tètóuu*uau»uÂuXtÐtÀt¹thsïsƒuÖuÜu¾uœuZutÅtÉtfsor0qHp¯po¹o\o#nÚn»n©nÏnêoHoòpgp´p o‡mRjâf,a!ZWS†L3E>U7c2-.*Ò(º(Ã(Õ)ÿ*Ç,T-©0¡49„? EÕL–SÀZ÷a·hŽmÅr—u7w x}y¡yºyÃxÒxv"tšpËl@dþ]TÎLBD,<^5Í.½*&L%q$d%&q)Ä-v3Ÿ9ìA°IjQeYa`zg·l pÖrlsðttytOts¨sus‹s¹ttStktHttt@tItit›tìuju‘u9t¶t­t®tnsýsuÄu—u6tÊtAs¶sBs#r¯q¢pYonn×n5mÎmpm8lìlÅl¤lÀlÑm>nnªnõnFmÚkÏidé`Y[R¦KYD;=n6G0¬+‘(ñ&u&%Ð&Ï'i)*-ô1 7S=>DYKNRsY`7fûlp suqvjw¨wÖwãvðv0tasoBj‚c[†RùJŽB:À43-0(Ô%t%$n%¨&c)Z,ß2Þ8ç@sHPWì_fUkeo»qpssKs¹s™sss=s'sQs—sùtXt{tct.t*t;t2tCtet¶u>uyu.t¸t¸tÏtµtft uÌuht¼søsrBqŸqWpÑo°namulàl4kÈktkHjÿjÓjªjÈjâkil[m mXl¬lYjth@cÎ_X£R"JöCù=5Ì/ø*Ô(%V$”#ô$º%&Ê(x,/à5¿;ñCâDJNO¼TŽXi\r_ÆcQežg—hhg¤g|gÛh’i™jÓkkWhØe`_3Y;R-KDD0<î6/þ+Ö('‘'l)ž+#.¶2ë8ÿ>ÑEL”SˆZG_Úe„i'l9m\n›níoaopouoiolo¨oÿp„q qwq½qìr/r†ræsOsŒt töuÓv/vNv¯w&w©wüx3tãsérÊq…pCon6mšm#lek®kjµjIj,j9jnj‡j‡jhjhj‡kk½lKl‘l)kêj¹icfÊd#`M\sW RÐM@G+A“X?SOMìH”Cd?Î<ˆ;x:œ;Œ<>hAIFK:PÍVJZe]Ù_‹aubb¸b)aS`^¶^0^#_+`a¨cÄejgfd`_œZ¦TM­FÆ?}8Ü2\.A*a)ï*(- /K3_7è=ÏC„I™OÄU…[_£dOgmjkTl¬mJnnNnkn,mßm¿mánKnnýoOo¿pDpëq“r5rsKt|u®vXvÊwvxMyFzzÃuâut srqpboÊoVnÇn5mml—lTl5lFlVlAkík k€k¹l)l{l{lkõkljÛih/eôcÐ`¯]uYThOaJPFŒC6B@þAÅB$D{GTLQ8VŠ[œ^þaÍbªcÈcUb `Â^½\Ì[ZˆZt[«\±^“`òc#eMeSdòaQ]V€PKIRB ;q51-,Á-.0x397©òCÇIN+RàW˜[›_wbŠeÎhjk*lnm@n"n„nÑn•nm³m¡mën!nynÅo7o¾p`qqŠqÁrEsbt¦u_uþvÕwùyKzˆ{³wàw,v{u§tÐt sfrÂr.:¼:Š;.>ÎBBGKõPßUrYT]?`Rc9ehgÓiˆjðkÆlÕmŸnrnÊo n·nmzmGm€m¡mòn7n³oKpp°q1qRqÂrÛt/töuªv‘wÈy,zƒ{Ôx™wüwdvªuîuIt·tsŒsr¢r qupîp™pSp5p"oõo¢o+n¶nbn@n#mßmqlúl…l*k×kk jikhBfcX`\§YôW™VšU£UøV8WÌYŽ\x_Îbðe®fÍg¦fÈeücÆa`^Z…W„TÚTS´U"VlXó[ž^òbºeggºfûeia&]WøR¶MáIBFfCkC]DG’JÿO—T(X|\w_Œb¬dàfÜhl0lzl¤lçm_m…mYl­kòkKjïjÂj~jilihÛi¦k l’m¤mÅmÜlékÞiõhe¢bÅ`]˜\k[T\]F_Ãaìdg™jlFlÅm k±jAgçeœc(`^^¾]Å^§_›a¦c eçh6jkól»m#l²l=kíllul†l‘lÎlûmlÔl¡kùjæiøiŠi¶i¼jjˆk;kõl¿m‰n"ngnào×qqêrÏsñu)vFwFx†v"vuÞu¹u§uµu¯uˆu%t·tAsësœs6rÔrur=r)r qÎqQp·p%oÉo‡o,nÇnrnmZlålÃmmm`mÖn?n{nknDnn$n6n:n m¸mRlÃlÒmn•oroªo®nØmûl„k/iNgdÇbÁaÚaaÈbËdÇfshkFm‘ohoîphoŸnÁlíjóhÈf{ePdÚe±f6gnhãjžl?mtn­nònËm÷m9lÁl©lÛlÐlÑlömm!lölälhkxj¡jHjyj‰jÚk.kµl?lÝm„n nKn»o–p¯qvrPslt‘u†vYwut¬tÇtt…tmtpt]t2sÕsdsrÏr·r€rNrrr5rRrUr qŽqpÐp®pupoÇoCnmÿm¸mÅm³mÓnn_nµoo;owoÓp4p‰p½qpúp…p0p]pðqqÂq¥pÕpnÙmàljØi+gŸgf¡gXhiˆjÃl{n¬p£r"r¬sSrýr„qo_m†kÑkj¹k(kkl—mÚnØoup0p0oÆnàn!m¬mommrm€mŸmÂmÝmÕmßm‡lÃlkÍkül lFl‚lämJmÇnOnÅnÿo`ppùq•rCs5t#tÖu[v)s[s”sps`s=s*srÇroqýq²q q¼q¸q¾qÁqìr=rŠrÇr¨rIqÓq¤q–qqDpøpjo±on¬n”njnkn]n˜nüo–pp¡qNrržs%sßt0ts®s–s¶ttsás#rQqLpo“nnm@lkfkk›l-mQncoÐqyrõtt¿u£uÈužtsWrpïp^oûoãopoioëp¡pìp÷qMq-p•oªn÷nn;n7n9n`n~nžnÄnÌnÙn‹mæmOmmDmKm{m·nnrnÞoUo½oùpKpÛq‚qírjs.sæt`tžu"qyrrrqãq¾qxq-p×pnpBpKp•pÄqq@qŸr!rœssrërrkrgrsrTrqpÌpo”oRonônœn˜nÝoŠppÎqr€sOtuu¸vv vv v&uöu£tÙsòrèrq;piožn¡nm·nno‘pœqÙs tuu»v³w wv4ultzs±rþr;q¡púpÇpíqnNnmÅmŠmOmemn.n¼opp pÔqÜrßs»t4tžtµtÆtÁtútèt’sÆrþrq(pkoæovnn#nn¬ompq[rSsltžußvØw xx}xœxÆxSw•vyuŽt¹säs6r{rq¾qïrErúsŠtMu6v&vòw›xexéyTyKyQxËx"vûuÐt„s3r+qJpØp^p9p3p:poÏoo&nÕnŠnm÷nnn°nýo}oÿpXpp¬p¾pÄpÜqqeqŸqÑqõr=r²s5sÁsÚs°srtq•pÖo}nk¯ite+h”jfkôlZlãlóm mmm2mun n·op9qr3sJt1t®u%u?uMu0uQut‘s rÅqÛpïp+oo n7m³mZmÇnpoŠpiqdrps—tãuÞvšvÏwwwv¡uÔt¸sÐsr„rqTpÈp8p>p‚qbr.sGtuu v­wyxTxÊy,y xüxMw\vtúsìrÆqÛq p¢pJp:p2poÎopo>o n¯nXn nn nun§oop"p”pÙqqBqhq qÿrTr~r†rr±ssVsºsvrØq~pKn«m.jüh¤eWb `Gdµgai¨j‘k±l1l«lãm&m{mÐnroCp>qqâs t*uu¥v,vCv?uúuõutÝsËrÓqäqpAo‹nën!mm$m_mÛnÝoµp¸qÂrät(uuâvv=uùuÔu,t2srqlq pøpÄp’p3p%pLqqÅrÓsãtÖušv-våwiwêwówôwOviu@t_sr‹qºqpÌp‡phpHpo»obokÃiifAbò^¡ZBX ]Üagdvfh i=jXkkÉlpmmÇnÉoæpÅq¨rËsÚtÈuLuÍuÖuÈulu?t½tsrq8pƒoîoHn§mòmulþmmDmønžo‰p‚qŽr«sptttsròqÓppnömžlêlzlšl´lÊl“lmlilÛmonSo2pp¤qTrDsNtfuuduts°s#r–qØq?pÙp¼p˜pˆpzpYp!oÜo¶ozon§nŠnn|nŒnÀoFo×pqq“qïrAr³s3sÆtt8t sñsÊsásŽs9qªo§l…i£f"b¶^‡Z:UOìPgVYZ»^‰`óc¹e³gƒh¿jk5l)m n`o¥p°q rÅs¼t–tÿuduVu;tÍtrs×s%rMqmp»p5.À0ü72<ŸA\EI LŒOÜRmUVíXÈZ![‚\]³^¼_ëabbÖc‚d$eeÈf.f:f]f}f·fågf÷fÈfKeÈe&d’cþcQbÙbpb†bØc]cùcÙcdaÂ`][ WÂTPrM-KI#H(GFVEGDÍDrENFTH JöN;QyUOYA]Ha‚d°gQh|i™jjÅkPkÛlAlvlímËnåoãp„púq q™B5EÇH…K&MNñPOQ›R’ST‹U­VÛWüYYíZí\>]j^J^Â_8_œ`/`¬a,a*`æ`._ƒ^Ü^c]ë]8\›\ \\K\·]\Ÿ[ÆY¿WÆTðR%NJ«FÜCnA>é=ŸÚ81ˆ+F$à.˜þ"/'2+²/3w6ì:r=&?ŸAOCDjE¡FGTH4I@JuKŸLÏMêO/P·R1SxTSUU©VgWWÉWäW•VªUÎUT¶TpSÜSGRµR˜RîSFSxRšQ\OLÎIîGC­?ê¥?ÍABBCµEgGH©IÑJàK LsMNNBNM!L'KHJÓJ•JI™HþHÄIIGIXH/F’CÊA(> :ý7¾4,1:.Â-k,+g*©*)(q'Ñ(3(½*¢,„/Ñ3Z7ê\-^`7b•dâgh¢jj´kjk¿lQlMlkißhŽguf}ed“cHaÛ`˜_l^c][µYVãSÉQbNHJÊEÅ@S:(4.Â(r"K”‰ Å ß Aõž >!$>&×))*·,F-`.“/i00¡12È3ç5'6Y7Ò9…;K<ð>??€@^A1AÂB™BÙB½Aá@ë?ù?`? >˜>0=¥=i=¤=Æ=Î<™:ê85*1ç.½+Ÿ(=%·#­"Þ"!å!¡!a Û v  n Ö"`#ø&Û)û-ú1Ý5÷:7=ôAACàF¯I&KMµP RtTËWWZ3\ì_ƒa@b­cjd^dûeÁeÉezdgc\b&a`_"]Ë\(Z3XbVUS5Q7N|KkH%E«B”>×9Ì4 /)Ê$ƒÞ‘¡q Ú}°Äç ©«ª9‡)ˆÈX ¯!—"È#«$4$¹%Ž&¿'ê)?*r+ï-³/ž1i2ç4\5_6T6â7¤7¿7…6¦5Ì4í4?3Ã362Ð2e2E2y2‚2~1O/½,á)û&ƒ##Ë=IJSäÜ’mHÀCËk6-!ô% )¡-Ò1³5)8;L>0@ïCuFHK$MêQTVÉXZ Zï\#\ò]¼]¾]\§[¾ZYXeWVT2QÍOœMuK•IQF°Cl@<¼:'6ò2Ý-Â(à#Ýï-Jû æ šïß¼ýÆð 9 À˜kcÛä„UÚWþ'н!4"é$È&()š*¨+§,$,Â,­,G+`*¡)ê)I(Â( '³'_'_'•'¢'¥&¬%o# {BÊS„ ¯ S Ï b ^  !  » e þªX¦!ÿ#&Ö*L-[0Ÿ3“6^8Ô;J=µ@BÈEÛH²K/LÓNUOWP QtR#R#R%QP»ON¥MLÖKuI„GD×B¤@¥>';37É41r.Ä+'t"Íj)k X6Ä%°Ô™w¾Bƒ˜“ ¯ = „ 2 {ÀJË-ïþ{ÑYô°y®¼ £ ý!Œ!o ôü*zúíkPްíêåß=›É Ô bCù˜çY?ôùú–=º@ ± A‚¼<Ä' X#Q&)a, .^0¿35‡8:ð=ƒ?ÏArCD9E€FMG G,GPFÄE÷DâD+CVBŠ@ù>ã"6¶°p $ ± ¡®ð*ÿÑÿðÿ÷ÿÞ‘ýÜ;Æ$:hö'hž¸V l k R q H é ? þ — è - º œ Ç Ò » y : 8 6 * ¶   âÆ›ÀÅIÙÜÀÂÉOï”ÁÂi * Ì ˜}ª÷9: ) `"¼%2'a)p*Ü,.,û-Ï.d/$/†/Á/w/".†.--Z,;*(ß&ä$ù"œ :µ4Ÿßë + °£f§ù [[ÿ¤ÿ ÿÅÿ×ÿ­‚y@3_Ãİi¥±ÿš‘ŠWÜ;ÛkëÙ—/¯eS˜ð0;Ñ;ÏX¶U¬*¦gBPI\®ÆÙô!N‰ f!ýÂÙ  º }dÔ…gj›ìê¼ Ï!°" "¸#A#ì$W$–$t$j$# "º!´ EYOâ”p•Ÿ8 ¼ iÖ(ï!ù׫ÿ”ÿ×>ÿzÿÌÿ¶ÿWÿsÿ¿ÿåÿÊÿiÿ5ÿÿñÿÖÿŒÿcÿˆÿôUU,V¹Z¬ßÓ»oÈ‘³ýpÙþ¯P×z!´[ ÿøÿí8m—½ä%@gwjUTi{¿ôyüEÛY õ | 4Š»/ƒ°»oûnc?¬Zí#(YÐ B  Í åãÎ \;ÿ‘ÿÿôÿôÿÄÿxÿlÿâ;ÿíÿqÿº ÿÖÿ·ÿÐ2lÿÃÿïL}kÿïEÀûÎO:Å&/啘ã1g€Y,à‡\Q ‚ͺ„$ë·s9ÿ÷ÿú.BSZX[h¢²ª•“’ƒwv}f‚¬SNzÊR Í . † K Ï Ú é|º.ƒ"xó¦Íy … Á ÕVµLBÁ×biúlÿÅÿ…ÿÍ'ÿìÿÿ…ÿ·ÿþÿ´ÿuÿŒÿâÿ»ÿ†ÿöiEÿçÿ¼ÿÞIŠ9ÿÑÿÇ®æÿÓÿcÿqÿâU[ÿšÿdÿqÿÒ4{¢p#ÿ¾ÿcÿLÿXÿ«O~‡›–ˆfD* /CE<( ÿéÿ¾ÿ£ÿÿ_ÿ]ÿvÿëj&á RêúMi{ÛLÓL±Àºfë¦Ó%qøÍd…C_' µÿÏÿ¤ÿÝ#ÿÁÿHÿ1ÿwÿá ÿ¢ÿ?ÿƒÿñÿËÿ‚ÿ­ÿ€ÿŸ Iÿëÿ‹ÿÈ6dCÿäÿµ†~&ÿÂÿÁVôªÿóÿ‰ÿËuõúÿÿÿ¸ÿêLÌ(-¹Rÿíÿ‰ÿ{ÿ—ÿÿa¼!:*çÃuV9, &3BEAAAEB3'&0#=|ß3}Çô" Ò‡oíu¤¯cü¤e NDzëåIŠ=­‘ÿ¬ÿ˜Q@ÿ¿ÿ^ÿž4ÿ”ÿ\ÿºÿîÿÿ{ÿõÿÿiÿÞPÿ¾ÿ¦ÿßS/ÿÄÿÚ9—— ÿ˜ÿ°Bü6³ÿãÿlÿ›7Ú§#ÿÁÿ± wÙë”%ÿ½ÿfÿdÿÿÝ.Êô îÁ•oOC?D?@L[bedl~˜¦»êüË¥k/ÿçÿŒÿTÿ,ÿ^ÿ¶0¡ÇËu ÿ¬ÿ_ÿ„ÿñ{óÊÿ<ÿ ÿŸ•¬ÿ³ÿþüÿœG>ÿÊÿlÿiÿèT$ÿ³ÿ|ÿ•ÿû4ÿØÿnÿ’&ÿÃÿpÿ¯:ÿ¾ÿ¢‹xÿÖÿäiÉ„ÿòÿwÿ™f-L¯ÿÓÿWÿ•_@é8ÿÃÿ·ÿæZ²ñ84ÿšÿMÿ_ÿÿÒc£Ó %,ðȤ}~{ƒ“¤¬±»Ìáö  õ¹cÿãÿ ÿƒÿhÿšÿðnñ1Jù“ÿ™ÿ~ÿš!å?BÿCþóÿ›´f+-ÿ8ÿ*ÿÒy¶>ÿŸÿŒÿÝ7Oÿèÿ~ÿ™ÿð ÿ½ÿƒÿÆ5ÿøÿÿÿÏ5_ÿøÿ•ÿÉ?€ÿ¬ÿûƒÌ“ÿßÿdÿœ]&ZÚÿqÿ#Þ3úÿ×ÿî `ºÿ;!àiÿýÿ¹ÿÿ¨ÿÂÿû*d§×÷úýñãÝÞßãéïóöþýöàÍ©€FÿÍÿœÿ’ÿ‡ÿ²ÿóM­Üò³aÿõÿ‡ÿ^ÿXÿ²5Ÿã‹ÿ¿ÿþÞÿzŠ4òÿÿÿ!þðÿ“q±WÿÊÿuÿÆBUÿ«ÿÿ×8ÿÏÿœÿ¢ÿì ÿìÿ¤ÿ—f9ÿÙÿ¯ÿÝ`­UÿÖÿ¶©÷ÿØÿTÿ†a@ˆú ÿ_ÿ`ÑDGÊVÿýÿÉÿè]ÄC à}0ÿåÿìÿï8jŒªÓò # 彂Lÿàÿ¿ÿ¨ÿ»ÿËF¢Us*Ã@ÿÐÿ¥ÿŠÿØQÚ\LÖÿDÿ:ÿúÿ H6ÿ.þûÿœcÏxÿËÿÿ¦j*ÿ¼ÿ–ÿ¾@ÿòÿ“ÿžÿÛÿÿÿ×1ÿÑÿ†ÿÉ8f@ÿÖÿ¥–¦RÿÞÿº*¼÷ŸÿÛÿXÿD%}&Mÿ¡ÿƒÿÝ‘6 “4ÿýÿÔÿó#xÌø á¹H$$I^xžÅáô  íÓ¤m8 ÿúÿÞÿâÿñ"S•åJ(àiÿõÿ¶ÿ—ÿÑ~ü#xÿÄÿfÿv|ÿ5ÿÿ™uË…ÿ÷ÿ‡ÿ©WEÿÝÿ‡ÿ¬0ÿºÿÿà ÿ«F ÿ¸ÿ«ÿéU…(ÿÃÿØ;¨»KÿÒÿÂ'Ò®ÿäÿ=ÿW#"­ZŒÿ²ÿUÿ·YOÝu ÿóÿÌÿã TœÊèÖ¹lbcolnyž±ÇÕÛ×ÛÔÉ­Œf=*"7Hjޏæ'×lÿ÷ÿ«ÿ~ÿ³tà &Êÿ…ÿ)ÿ‰c2ÿéÿþõÿ´Šõ ÿîÿ—ÿ²pQÿïÿ£ÿžÿì4ÿÑÿŸÿ¨ÿù0ÿüÿžÿã49ÿ¸ÿ­iÿÑÿáQ³£>ÿÏÿ¿;Ð ¯ÿíÿ`ÿeû}h°ÿñÿŽÿ£6½&ä£S ÿîÿÓÿñh«ÒåÖɶªžŒx{|…•£¨¥¦žyiaV[f€›¹ØìúãŸDÿ÷ÿÀÿÐÿðD©ðî—ÿŒÿ{ÿÛ˜Ytïÿýÿ1ÿ!ÿÁ™î¢ ÿ™ÿ°lkÿ±ÿ©ÿå)<ÿ÷ÿ©ÿ¬ÿäÿÙÿ¾ÿÉÿü:Dÿóÿ°ÿÙ4ti ÿÅÿïV±­6ÿÅÿº'Ò"ÙÿeÿLÿÛË„„øÿ”ÿžÿøŒèûýÉ›]ÿëÿÙ8~µÒçâÞͼ¨—Š|vx~}ynkt‰™§´¾ÊÎÑĸ“Y ÿëÿðl´äÍcÿàÿ¤ÿ¥*ÿ†Øÿ×ÿ4ÿFË­ÿóÿ•ÿ´~x"ÿËÿ­ÿç4@ÿÑÿ²ÿàÿïÿ¼ÿëÿÄÿÎ!^2ÿåÿÉÿóU‘WÿûÿÙv¿Ÿ8ÿÛÿØ>À Ê%ÿ”ÿjÿç­MycÿáÿºO£Ýãà¯s5ÿÿ.[޼ÖêäÞÈ´†ugbYXZfo”ª¼ÆÐÒ×Ë·c9 JÇñéß ?ÿîÿªÿÚVóvV¼ÿéÿOÿcÿø¬ö­ÿ¬ÿ½%v‚FÿîÿÁÿ×P)ÿáÿ¾ÿÐ / ÿÎÿ»ÿØÿ¼ÿö>Q,ÿéÿÒqƒSÿézÁ²Sÿòÿͧ ùmÿ¿ÿvÿµr0yG¢ÿãÿá+o¨Ìƾ˜l@>h•¼Í×ÌÁ®Ž}reel€—ª¸»¾º·¯¨”wR(MŒÂáÒ¾ŒV ÿÝÿÝ R#xÿ´ÿZÿ‰+¾á†ÿöÿ¯ÿÓ5Ž‹?ÿüÿÚÿè<6ÿùÿÁÿÏ ÿïÿÅÿÒÿëÿÅÿØ AI ÿÚÿñ4nu<ÿ÷*~¯›Nÿþÿó9¨ûãrÿìÿ˜ÿÎ\[3ÖW\‰¡·­œzZA+-9Z~³¶µ­¬ª¦¢ž ¦°¼À½³±©œ„hL1*'Fr¦Ùäצ€Sÿúÿø?²JtÿßÿŠÿ½9µØ#ÿÙÿä/o|P ÿäÿì -5ÿâÿÇÿð#%ÿßÿÎÿãÿúÿæÿÕÿâ</ÿíÿù2fg;ÿüe£§t,ÿýß·!ÿµÿ­'Æ8QõŽ4*;Zs„’“—‰nR?ESn„”œ¢°¾ÊÑÛßáÚÔű•‰tX8(9_’ÄÖÙ³…W=7,pÌ('ÛSÿÖÿ½…ÚÍu ÿïWn0ÿóÿø&'ÿøÿãÿë*ÿêÿßÿçÿîÿòÿûÿüÿæÿà*<+ÿþÿëUo[1F{˜—l,0€Þñ®6ÿÒÿÓ&².šR01AYl|“™yh^V^k€Žœ®¿Í׿ëëàØÈµœ„jJ80@Qq—°½¬—rH-.AyÛ¾AÿæÿÇ wÄÀq ÿûKnjK  .)ÿæÿè ÿáÿçÿùÿóÿéÿöÿúÿþ2@ 5T`\I::A[‡™…T^·õÖnÿÕíë´oD8.7;Lh‚’”™“‚uw…›¨´¾ÆÒÖÕÌÉÀ´œcFEY}˜¤¯¡ƒ_H>/24TˆÀýî—%ÿØÿæ.Œ½Jÿú*XkU- %*.'"ÿýÿæÿøÿôÿêÿóÿüÿíÿñÿ÷ÿû+J5@^aM93<XxŠwJ/3g¹ßÁg ÿïxÉìíº‰X3)$8Pl€¦®¥”“‘—£´ÂÌÕÖÔËô ŠvmepŠ¡§š’€eM>>8HcÊÞÒŠ"ÿçÿð?‘¹¬i%#Wj_L3'% !)) ÿìÿå(ÿòÿìÿôÿöÿòÿåÿýÿûÿü :;&)JQF;:J_bcv„‰sA+MŽÇʼn8PŸÖÙÅbE5>H[gy—®¸´´¯¤Ÿ¦µÁÉÎËÊÁº«”…ƒ˜ ¬¦‘vfb\]^deuš¹Ï°l#ÿó X¨¾”_3+EbnZ=@F6 !&ÿøÿéÿó& ÿèÿíÿûÿòÿäÿáÿý ÿþ %@B"8YbO7:N]iqu‚~_D=^˜ÁÃJIˆ½ØÂ qNCCU_qˆ¢¹ÆÒÐǹ³±®­­¬©§¨©¢ ªµ¸¯§˜ƒqfb[]`qˆ¡À»˜ZU•ªŒO,(4LWSF686 20ÿöÿãÿð ÿ÷ÿàÿëÿýÿñÿáÿèÿ÷  5M8'SnaA3=Zspcgr|_KU~·Êªf, 8v®ÇÅŸ{aZflw€‘©ÁÔØØÌÀ°¢™–˜”– ¯¸¼Å¶¡Ž‚{zywoms…¡®°‹I 6q›œp=%AHC:28;2 -J0ÿãÿæÿöÿçÿæÿíÿôÿíÿäÿíÿñ ÿùBG1*Rg`F4Cbtxup|€pYER…³Ái:#=k¡Ä²“||†Š”¤µ¾ÁÉÉź­¤¢¤©·¾»µª —†€{}€Ž©¹¾¢yI=v™yL8>M[TFFHG<&!:: ÿáÿåÿýÿãÿèÿ÷ÿóÿéÿçÿåÿåÿïÿÿ ÿÿ$ÿý ,FF--Zs`@:Nn†ƒrnr}{]HQv ±©M5<i—¹Æ¸¨˜•™šœ¡¤ Ÿ¨µ¼¾¼¹ººµ²¸º¶§”‡…‹ŽŽŠ…‚Š˜­Ë˯w>'*T‡¢–lKCYuxhVLXaS9"0@8ÿñÿáÿýÿíÿåÿôÿôÿáÿãÿçÿÚÿî '$!7INC,&Cgo`MDOhy~ys€†uaVc}™°¦…^ENf޲Âô­¦˜šžœšž¥¬±¶¸¹¹»¼¼´ª›…„‡ƒ€}…—¬¾¿¾¡oC,>bˆ›ŽrULWishVQSWQ<($.?@( ÿñÿïÿøÿûÿöÿçÿÜÿäÿêÿÚÿó -6-$';]kT54KhviO?Ge‚ƒx}…ˆƒxngr¨­–w^Pb‚¦º¹·¬Ÿ——ž Ÿœ›œ¢ª±±°¹½¸ª”Ž‹†}z{Œ©¿Ç°g<4Iušž†aOTesp^LCLTJ6&#0>=."1$ÿóÿïÿýÿúÿåÿßÿäÿêÿêÿÞÿúÿû -3/).H\WE9>SkvnYM\u}}ƒ‚€‚€to|‘¢£›„g\fƒ›¬»¹±£š–’“’–™¡®¸¸µ½¾µ¥™‘І}|›¦µµªŽo[P^x™‰oZYfprl`YVVQ?12=D@4$(,ÿýÿûÿñÿâÿëÿøÿóÿæÿßÿ÷ÿõ +62+-8IRJ??On‚yc[bn|„‚yuƒ€vv€’¦¦rbhuަ³·¬¢—Ž˜¥±¹»·¹·¯£š’ˆ‚y~¦´°©”}mdm™Ž{hbisyqgfilgYG88IUK5& $("ÿÿ  ÿöÿëÿîÿýÿöÿâÿàÿúÿð)4:78HTQE=C[qtg[Ybu‰‘Š€„‹Œ…|„˜£›„qgdq•¥¬±¬£›˜ššž¥ª¬«¬ª§Ÿ–‹•¢©¨™‰ymlny…‹ˆ~tptxtnhgmneSA74<JL:$!),"ÿÿÿîÿôÿýÿîÿàÿâ ÿÿÿõ!"/DE@GOQLFDIT`fb]^k‚”˜Ž„€†”‚y~‰‹ƒvhdeu†›¯·¶«£šššœžŸ Ÿ •“œ¥§¥˜‡xllr{‚zqknxƒ‡naepwnW?25<CC8('+)!ÿòÿò ÿíÿåÿåÿåÿþ  &%468DNMHIKJN^kmgacm~‘„ƒ‡ŠŠ…|}€€|tmhkp“¤®­©¢¡¡ŸŸ ž›››–•›¢¥ž“ƒwqmqx€…ƒ{tu|{rlo|ƒ}jXLHLOND6,()+*%ÿýÿúÿþÿôÿèÿéÿíÿæÿùÿÿ')#!#$-@MKDLTRR]jolhd`gx‰Š„~z{…€wporw|{vpilvˆš¥§£§ª©¦§§£žœ›ššžž•†yroty}€~|yz…‹„uigpŒ‰wc^aa^[SF<8960+$ÿÿÿóÿìÿíÿòÿóÿè 0QaQ/ ÿü 6^lZC-"/HambR<(#$=fƒ„iM:5BL^v…‰~tkfaUKGKMVcpy|€†„{iXK@><EP^gmx{wnifbdir~‚|oli`VKIQZXQRRJDDJSSI6%  ÿþÿøÿùÿÿÿþÿìÿß  Nk\-ÿý 7brd>)Mp{pK& #JqŽ…e<%+;Wkxˆˆ{hba^WI?:@HXl{ƒ€yoid^WPLIKNTX]eo††yjZKHHWm}|pnlf\PIHLKMW^]RF>AINF3  ÿûÿøÿüÿöÿáÿýÿý2W{o3ÿüÿø!OmpQ,4\w~a9%Df€{b>$&8Xq}‚zuhSEEPSUX]bfihh`SD756CRbmu~†~mYJILYfovsodTLOXWXclofZL@>DP[_^RC816FL>" ÿÿ  ÿøÿéÿéÿòÿ÷ÿùÿúÿæÿéÿø!^€~L ÿñ_…yS#4cˆ…h6 "Uƒˆ\% >h„‚uaPE9:DRW\iu|xsdT>% #>Yr†’¡¥«œ‚_B2"(5Ofv…pYJE?FTckhfZI>AMRRTPJ>+#0>=)ÿýÿóÿû ÿõÿáÿÞÿçÿéÿìÿöÿõÿæÿÕW‰}E ÿú_ŠzD$Nv†`7!#CfwqQ07gŒ”y^B0//?Qf{ƒ‚um^I7,*''%+4EWfpuz…Œ••~oX;$3Pk~}zjVF?GQavzhL;86@SafS0$58,ÿùÿìÿêÿú ÿñÿáÿÜÿÚÿáÿíÿíÿÛÿè=€…LÿñfŽ|B .`ˆ˜Y5#6]Œp=ÿøB~®«†H$9Wuˆ–Ž…mR4$:Oas|†‚vdWRMT_o‡‚kG'ÿýBk…™|^F>;KgxtZD4)3H]i\@ 06% ÿîÿÙÿàÿøÿñÿÞÿÕÿØÿãÿåÿÖ&u„Rÿý#k™> .e‡„oM59VxŠyV0)Lv’ŠqD8\yŒ…lO3 1Mg{ˆ‚wiaZK>665:ALU_nx~vmW8!+JpŒž’€]36ShrbD($9P^O,ÿøÿìÿ×ÿÔÿè ÿêÿÒÿÉÿÔÿåÿça}Rÿú&pœ‰B5hƒ}W1$1ZŒœ‚H (k«¼§aÿñÿã >w¤¬­Ša1ÿîÿáÿñÿÿ JwŸ®µ£”yW<--)*-37:;8119Pm†œ˜ŠgD(.Y“›|Lÿû!Qvwc8 .XdKÿñÿâÿçÿèÿÉÿÅÿÜÿý ÿÿÿãÿËÿÎÿáÿðxLÿôg•€=&_r`G1)<^z„k9Fz•c1As›°›€Pÿþÿåÿêÿõ7Ytƒ“”“„taRG:46<>=:76653,+-<Ng“£’oCÿúÿû2h¡„Sÿõÿø?n{m@ÿü 1IC)ÿßÿÙÿì  ÿåÿÃÿÂÿáÿâÿÊÿÊÿÞKÿÙ d‘y3ÿöÿö&UgO'(Dfƒ{V&J‰¦‚;ÿûÿÜRªëçÃp&ÿîÿºÿ»ÿÌ@y­Á̳•kD) )?R^gc\RNMMID=5.%(2Mp®¨“\ÿéÿÆÿàZ¢µ¤] ÿÝÿÎH†¤<ÿüÿÞÿ÷%OX2ÿýÿÒÿÉÿç  ÿãÿÃÿÇÿîÿÿÿÙÿÀÿÄÿõÿØÿ÷Uœ‡7ÿø TY<%JekgO,,Ry|Y&F†´ª…<ÿ÷ÿÔÿËÿø"b§ÓíÝÌ¡sAÿôÿâÿéÿîÿý,EWg{ˆŠŽ‡r]B'ÿøÿíÿåÿùAv¢Ï˱iÿàÿ¬ÿºÿä3ƒ¥¥hÿêÿÙGz‡Yÿëÿë8C-ÿÿÿÓÿÉÿß ÿÜÿ¸ÿÄÿîÿøÿËÿ³ÿµÿçC‘”Kÿûÿø'U`7$OklP5&$=j€o9ÿúÿé a·Ï³Mÿáÿ•ÿiÿœÿæ[ÇPC Ë:ÿ÷ÿÓÿ·ÿÃÿØÿÿ3=<BIJSfz…‹›Ÿš‚jK/ÿþÿìÿ×ÿÒÿÎÿìU§á è°FÿÐÿ‰ÿfÿª…ÝÒ‘ ÿÁÿ±ÿÞ=jÿÞÿÞÿû&?-ÿýÿÍÿ¾ÿØÿýÿËÿ³ÿÃÿíÿìÿ¾ÿ¼!€ŒO ÿíMU5 ÿûHd_H-%6SfiJÿóÿô#e‡<ÿïÿºÿ¤ÿ×tÊøô˃9ÿãÿåÿãÿüBf}”•ŽwfT>1-0&&6N^fomgVK3ÿìÿÈÿ½ÿ´ÿÕN¢àÎ`ÿêÿŸÿuÿ­ uÄ»‚&ÿæÿç_z])ÿöÿÙÿë6*ÿüÿÊÿ»ÿÜÿüÿÑÿ¸ÿÊÿôÿáÿý`ˆTÿð?S.ÿþÿñ ;[V61Vte/ÿòÿÇÿß'r•aÿþÿ›ÿ`ÿ’ÿïxñ'C¿Sÿêÿ¥ÿrÿ‡ÿ«ÿõ2m­ÐãØÖ¨ƒbD'ÿþÿîÿÓÿËÿÕÿõ/Sl{}‹ƒk?ÿöÿËÿ¶ÿ¡ÿÅhâ2k.Ãÿ|ÿ>ÿIÿÑpâ ¶=ÿÙÿ¿ÿûCso0ÿìÿÇÿÜ +ÿòÿÃÿºÿØÿþÿÐÿºÿÌ8uc"ÿï DS8 ÿð,HG0%L`RÿÞÿÅÿã'hm;ÿçÿžÿœÿÍ0¸½y-ÿÛÿ–ÿÿpÿ”ÿÂGw›¢°¥l]I%ÿÿÿÝÿËÿ¿ÿ¼ÿ³ÿ©ÿšÿ”ÿ™ÿªÿ´ÿÄÿÜÿøLu‹ˆŽ}d2ÿ÷ÿÇÿŸÿ±ÿÔ*—ê(û› ÿˆÿdÿ€ÿùwº´[ÿÔÿàW`0ÿêÿÁÿÉÿñÿëÿ´ÿ¢ÿÐ ÿóÿÀÿ¬ÿÚ OS"=\<ÿñÿþ3/8QA ÿ×ÿµÿÓ!be ÿÅÿ™ÿ±œêª;ÿ½ÿTÿ>ÿEÿžÿýeÆøí¶…X+ÿýÿéÿÜÿãÿõ " #ÿþÿóÿòÿèÿú"]ˆ«ØñêÀiÿ­ÿVÿbÿœ.ÛFz ^ÿ¤ÿÿ3ÿB¼Àsÿúÿ±ÿ¾N["ÿ×ÿ£ÿ«ÿà ÿÏÿ’ÿžÿÖÿÚÿ­ÿ·ÿâ 9ÿ÷/G:ÿßÿåÿþÿîÿð"0&ÿÖÿÄÿÕÿúÿÂÿ|ÿ]ÿÿìH`ÿ°ÿWÿ;ÿ:ÿÿÒ%ito7ÿÁÿÿNÿÿ ÿÿÿ9ÿ\ÿkÿvÿ†ÿ¡ÿÆÿæÿýÿùÿýÿöÿçÿÂÿ—ÿbÿ'ÿþúÿÿÿ8ÿlÿ¹D}lÿ³ÿTÿÿÿYÿâyËÝxÿôÿ„ÿKÿ‡ÿûh‘Yÿÿÿµÿµÿò/AÿÊÿ˜ÿ¡ÿäÿ÷ÿ´ÿ‘ÿ ÿØÿøÿÈÿ¤ÿ£ÿÒÿøÿþ,K4ÿÜÿÕÿìÿòÿØÿÐÿßÿö ÿñÿÖÿÙÿø#- ÿÌÿˆÿŽÿÔO¿éÚ•UWˆ 'Ÿ·±Sî(øÎËÄà?qŸÈê/Ri}zqtqjFÔŒDÏ’|w¨Ý/ŒÒÍ=‘ÿùÿsÿÿÞŠ+W/ˆÿËÿ]ÿ_ÿØP†\ÿóÿ¥ÿžÿÚ!4ÿµÿ„ÿªÿïÿçÿ¯ÿÿ«ÿâÿÿÿîÿ¶ÿˆÿ–ÿ£ÿÍ IQ$ÿçÿÙÿéÿùÿøÿÔÿ¸ÿÆÿêÿîÿÍÿ¬ÿ©ÿÍÿéÿØÿ ÿXÿBÿ`ÿÃ"t£¸Ì [ö«n)’ÝÁ“E öò8eеê6Kkˆ ±ÀËÚãëíòñîàÔ·Ÿb¤(ª7è™n¹ßÔƒÕUÿÖÿÕÿýT£”-ÿœÿ-ÿ,ÿwÿì.ÿÙÿ‘ÿ‹ÿ¾ÿþÿÚÿ‘ÿÿ¦ÿÝÿúÿÖÿ¢ÿ”ÿ²ÿëÿßÿŸÿÿã"aqHÿçÿìÿøÿÞÿºÿ³ÿØÿþÿáÿÕÿâZ„fJUÄk}°×Eèò#7þ ³ ý , ' ) S ¡ ! Ÿ  ~ ¿ ÷    ñ Ú Þ ö      / H Q F /  # @ i • ‹ i ÷ ‡ Ø # L p«éy9LSÍÀo]~Nj«£/yÿÜÿŽÿ»R;ÿéÿÿ‡ÿ·ÿôÿõÿÈÿÿ{ÿ¦ÿáÿîÿÓÿ¦ÿ—ÿÇÿýÿØÿž 8K#ÿØÿÿ„ÿ‹ÿ˜ÿÿ\ÿAÿKÿ}ÿ¨ÿœÿ|ÿiÿ†ÿÂe¬Ï=ù÷ã’ïUõb å Q † ª|HÒOÄMûÂ)’øê®Uïµ¥Òþ'57G^ˆi,û5Ý $ú“ Þ¨” æ Z  ¾ ; “ r8Â:¦`ŒÆÿêÿfÿ=ÿxÿ ÿ¥ÿiÿ/ÿ-ÿbÿ©ÿÌÿ©ÿvÿyÿ¤ÿÞÿôÿÈÿ—ÿ¨ÿÙÿÅ+ÐXÃKÿýÿíÿáÿßÿ¿ÿ§ÿ¡ÿ¾ÿé.iæe ŽXD a ^  ¹  +Ëlæ 'ëɱ®®¹„3ÕÕÒ„%­+òí?“Þþ+TAëv2‰Ê8`µ­r—±c©?ò¯­Àø:M]Ý  õÈ/œc,ðö¢žÊAÿÚÿ­ÿÖÿÑÿ•ÿ‡ÿ¿ÿûÿðÿÃÿ¬ÿ·ÿë ÿìv`S§* ÿæÿÕÿ©ÿ—ÿšÿÁÿ×DЋ†JEFØÈ Ý ¶ûñ= 9eRår½ 4!a"i#d$L%B&5'9( (Ç)4)£)Ó* *)ä)£)S)J)**…*ä+++7+J+i+**ž)î)k)=)4)Y)c)g)c)i)¦))Z(‰'³&‰%k$$"Ý!| ¬Gé’1åB~,ƒ  ê ªÁÅF«ïÓ•,jÿÄÿ|ÿŒÿ‘ÿ†ÿ7ÿ ÿ2ÿˆÿ¼ÿÇÿ®ÿÿÊÿù ÙÿI¿â/ÌÆ®·Í iïøjl × Œ ô²+5J¾À@§!Â#•%&À(W)ø+e,Ê-Ð.µ/_00Ý1É2½3¤4`55•6.6ˆ6Ã6¾6¦6µ77Š88L8V878P8S8S7ì786j5Õ5š5z55k5@54Ê4Å4…4 3#261%02/7.C-+ð*o(ß'%!]‰ÚÇIˆÍ½,. ª ß ª¿S6 ýaÙ^ÿþÿÅÿØ$ÿþÿÈÿÄÿÝÿù„ õ ¿Ä·Ö­q…޽é,?Å¡  < ® âÌ@Snð¾ œ!¬$#&Ï)5+=-$.ç0×2Å4¿6j89 9Þ:m;<=>u?À@æAôBÄC´D=(;»:{9e8^7J6,4¼391Y/v-U+.(þ&þ$Ù"ì8׸7é˜îî× ÷ r .Â?‚k«q!-ÿóÿ°ÿŒÿšÿÇB:ÁbrgK›äM¤;ÝÜ:;Œã(ú5"'$u&I'ï*,u.ö1Y3z5g7h9z;«=Ñ?üAºC]D`E*EÈFG¿I%JÈL[M¯NåOºP²QQRPöP‹POïOæOßOžON€N0MøM¸M=LxKÅKEKNK€K÷L\L–L³L’LªL8K€J HxF¸E&CËB€AT@,>ã=Ž;ë:N8B6319.û,Ë*¦(o&<#ê!ú hÃñ³1ìúB‚ T ' *°fd B”ÿíÿß!CÏ¡{†¡°DÔ}†ð¡–Àx¬ /"¹%™(À+‹-è02:4¬749¡;Ú=ò?þB'DtFÛI'KpM5NÏOÔP²Q‹R›TU¾WyY ZV[h[ú\¯\Õ\Å\=[µ[:ZöZÝZÓZ‹YòY2X±X@WÎW'V8UhTÇTÎU UªV/VVñWWŠWrWUåTRÏQ/O‘MùLƒK(IÎHlFÃEBö@¡> ;916ß4Á2»0¼.},n*ž)&'Ý&8$$!}Ê='µ ? Ø ê Xf”á”Id{ÿ•,:( %à#a"U!z!È""ã#«$‡%K%ó&†'#'Ù(·)L*€,.Ž13ß6‡9;”=ð@RBD»FÊHÖJæMO3Q|SšUªW;X§YªZŸ[¦\ß^\_óajbÉc¡dYd”dïd×dcÿc|cbØbÀbÀb€aña$`‡_é_L^†]\§[ô[ñ\'\Ð]X]å^b^Ø_…_Ð_ê_<^r][ÉZ7XšVúU|T R™PüO]MWK%H±F\DA’?W=V;‰97«5Ï4,2Â16/~-,*“'Ï%l# ³æ°‰îœ f °X)7N3ƒ0©.-,O,È-D.N/7021322«3+3§4h5-6¤8P:¨<æ?’BpEOGúJ>LfN`P„R–T‘VpXRZ/\+]ó_›`äb#c*d1e=f`g›héj kk³l8lhl½l¸l‚lk›k;jîj´j“j7i˜hÀhgaf«eÞdåd$cƒc…c¶dXdáe}ffžgKg¨gäg‰gf4e]d"bÍa>_¼^>\Ø[oZXdVfT QÜOMJÄHFºDÌBÿA2?|=Ö< :{8a5ý310ƒ-Í+\(}%!_% ÕtÏ x _äfÈB}>Ê<9¦8Ú8=8Û9x:’;~<„=´>£?6??ì@½AÌCnDóFìHåKqNcQ;S–UUWX¯Z­\¡^]_ÓaIbªd,e‡fÀgÂhÔiÃj«ksl9lòm½nmoooâppzp”pp$oÜoƒo-nÊnymómAllk¸k jSi¥håhohh3htii£jCjÜkWk×ll=lkÛkajþjIi{hOgeÁd‰cabda_u]s[¦Y®W“U`S5Q8OJM LJŒHÐFèE%C+A)>¬;ø96}3—0G,„(ô%I!¢ÉªÁ I J-M“IüGlE7D¥DEE E½FØGÆHÛJ:KFK¿KøLgM^N›P3QoS TäWXZ\“^f_œ`ôb`de³gh.iNj]kl“mžn‰o‚p=pÝqn†mºl«k˜jƒi¢hœgXeÝdŽcaz_¡]¼[ÖYöXdWUÒT5R9PBN+LVJG^D8Ah>G:û7.3T/3+)&÷"—Z#¥[êhVæSÂQ¤OëO·O«P‡Q8R-(ø$Ç!“Ö+` ]n[ÔZ®Zå[2\$\Ò]Ê^é`3a£b…b¼b¶cFdd®e;e˜fcg­iBj k‘l8l¸mŠnlo;oØpWpÃqrïrbqËqp o]nÛnxnmNlJj×i>gôg=f·eùd“bÁ`¹_H]¼\YwV‹SOÞLbHÎD¨@?;¿7“3¤/€+°'ó$ê"f!d6c=b½cUcædÔewf]g–hèj+jÓkjîkckÚkõkÿl!l©mznbooloÏp:pÔqcqÍrr,r\rs!sÄt‡uBuËv:vpv¶vÏvêv¾v{vu–ut™tsjrÂrq}pøpzoîoVn¿n)m—ml_kâktknkukélWm)n o2puq™r›s*sŸsËtto:¦7 3[06-akèj¢jAjVk?llèmŠnaoŸpÚqÛrGryrmr½rçr³rzrŠrÞs7s…s¨s»sät tot¢t´t™tktftˆtþuŽvvwv¢vÏvòw0wQwfw,vávNu¿utks¬ráqûqp-oknán\mñm{ml«lHkÅkckk#kBkÄlAmmâopIqr´stttmtÓu u=uHuPuDu7u2u2uOu‰u®u½ustútotsîsès•rüqßp‡osnânÏn¼nVm€lckŒjÏjriEgbdna¤^›\XÇTÅPhL›I*E«B;>‡;78LnVm¡m¹n2o8ppÊqfrs*t tÑuuau{u«u½u§u£uâv+vDv=vAvHv[vhvvvav;u÷uuyuuåvDv{vsvEv7vGvnv‰v–vWv umtÆts_r¦qØpçoßnÿnCmåm˜mqm,lìl½l‘lHlkòllVlÚm\n n£osprqrss#sÂtt}t¨tÌtÆt³t§t¹tçuu8u{uÁvv#v u¸uru tñt†sórúqÆpÅp$po÷o×omnÌn;mÁm³mkæi¤g>d‡bt_Ù\vXŸU9R"O$L%HÈE¢BápbpApÎq¤r»st.t½uIvvµw!w[w·wûx!xBxxxÌyCyŒy‘y^yNyrQqœpòp oIndmÐmlmimimsmOm.m.mFmHmgm’mønlooŸp*p•qq˜r+r¤rôsCsws®sÒtt sësØsïtJtªu&uŸvvvÂvÿvøvêvvVuÔuRtsœr¿rqÔq­q£quq(pÉpyp„p6o°n$l.iÎh&fcY`*]KZ°XKUÕRñPMšp/pcq%rssÔtPtÅu!u”uývTv¤wwgwœwùx y[yùzrVrYrlrÅsasút,tXt¸uvv„wJw“wMw"våv³v™vvv~vnvvhv'u˜u tUs¸ròqóq pFpoðp(pLpRp=oýo´ovoPoLoLoMo/o*oBo‘oûpQphpkppÛq+q”rrerÆssCs9sr¢rirq…pÐp$onn³nm|ml[l"l:lím¦nuoo—p0pÌq{qõrWrTr:qðq¶qqnqvq„q¼rrIr^r„r÷sVshs=sZs r®q©pvo?nUmºml†lkék¿k‹kNnknÈoUoåpbpÏpþqqq>qÆr‹s3s_susÛtˆueuçuûuu3tåt±tµtÂtìu u5uŠuŸuvtêtusÇsr)pñoÐnãnŒn[nn³nÙnènÚn¾n¸nÎoo[o£oÁoöpRpáqˆrr-r/rWr¤rûsisØt4tt®tÊt‚tsmrýr|qÛq pkoÇo1n­n+m›lÁlJl-lÀmln+n¢nôoYoÏpfpßq3q?q=q,q4qNqUq€qÀr/r²s!sRs€sõt`t¢t•t›ttºtLs‚r®qooõnŠmJlµlhl€lol@k×k’kxkàl]m5môníoèq+r‘tu„vyww1wTw^w{w²w÷xJx¯xÝxüxœxw/vVuw)w;w.vôvbuüu sýr oßmjbgdÀa¼^[ XÊX%W·XFXXY=ZK\§_WbÑfiflœo–rµu>w¬yzUz®{zïzôzÈz‹zAz0yèy´x‰w;tMqlng×b«]pXyS‰OÉLJUHýJKCNVQiU YÝ^sbég#k„orIt)uØvuw&wSw“w“wywnwwêxPx¼y'yXyqyEy9xÎxwDvÙvˆvuet¬tZtvtÖtÖtÞu*v\v5v*v=v‘våwbwìxgxÊxýy*yFy‘y˜yMxËx†xCwÖw~wVwMw'wvÿvÎv{uÃuKtruo½lÙiVfb”_4[WRSþQPàPLPÄPÐQÔRóU”X¢\®`„dgh#k´oŒrÄuÇw‘y/yµz5z#z2yþyºy\y@xÖxŠwuP*UX[`se|j¬n¬r`tevDvÖwbwXw„www?wwwmwÆx2x¢xÓxÙxžxx:w vûv¦vkvu•tÅttPvŠvevXvuvÃwwUwÄwùwìw£wwwYwSw7vøv›vJvu»uu¥u¿uºuu–u]u tttrupslüice#a'] XèTµOãL^IÅI7H”I IJ?K_N4QV;Z_c[g¤lMpCsêvxxÑyty^ymy0xñxŽxbwËwcu{s:n½iÔc]iWPÛJùD¾?ÿ;|9Ñ8h:3sþsÝs9rËpæntjCeú`ù\DWxR”MÑHDÒB'A½A2AÀAæCD:G>JöPTÆYÎ^Ðcðirn%ruuw„xgy'y y&xñxÅxUxw(v•tPq›l_f©_iXcQQJ{D+=S8*3l1Ã0524j9Q=½CÚJoQàY#_ÝfªkÁpzrêu1u¦uüu‰ueu&tÊtšt“tèuLuÉvDv|vˆvRv1u÷u£uduMuXu}uItsÛsÂs×s‡srÐvuìuÉuàv vvvMv uIt4sjrßrVrqÒq™q p±pªqqpqÙr:rZr^r!r(qžq6o l|gèc6]¨XfRýMoH$Bj>†;’;:a:ý;#Ð7˜2V-º,R*Õ,¨.ï3á8s>âE¶MŽUN\cói„n¿qtt|tÙtUtsÍs~slsrsÕtRtæulu©uÄu”uku-tåtÀt¾tåu0u!tˆsÜsÄsÍssr³uquóEJÕQ)W¯^=dâjjo¹suúw$xMxyyxâxwSuÚtürn,gp`vXOâGä@99f1Ö,–(I'Z&$(*8/3À:hA`I}Q™Yca-g4lóprÙscsÓsKsrÁr‰r–r©ss¶tftüu;uZu(tøtµtotXtat u utœsõsÛsÝs—s%rºt­tMsØs˜sks'ràrèriq?oÁn¬m÷m7lÍl‘l[kªkFk_llm4nn}n™nYn‘n2mØk¯idN_QY S@LîFR?÷9v4Ç0¯/-…-Õ-Ã/¢1¬6%;A±GùNÏUÐ\•cNhÄn'qtcu‡v×wMwöwîwÏvñv!t—sÁp­lxeZ^,UÉM‘Ež=ê7/’*’&¬&B%Ž'¦)Û.ˆ329Ï@—H|PwX2_ÞeÞkªnàq§r5rºrPrqìqÚr r9r¿sytBtêu-uQutèt¡tXt>tAt†uu0tÌt7DþLFS²Zªa€fîl[oµrs±uu©vEv7v:u†tÅs=r|osk9d\àT}L9DG<§6.—)É&&%Ç(<*š/>3ý:ŒA+HÐP§X6_ŸeZjðnpqq«qbq;qq0q‘qär‡s^t8tôu>ufu)títœtNt.tt\tÛu!tÚtftdt{tht"sÌsŸrßqüq4p‚oÉo;nÿnqmFkâj×j0i‚i6i&i h_gégôhŸi3jjðk”kÒkÁl2lkûj!gçc‹^÷Y S{MF(?L8£3.Ò,Y*)ë)w+x-Ì2Ý8K?[F.MFTgZÛa1fjümàpCqr%r|rÆr¯rÛr›r@q"p³mþj&cj\®TµLÑE.=Ù7|0g+Ù(;(E(f+>-Ø2ˆ7d=ÔD=KqRãYè`µeÑjÕm‚oµpp•pkpRpFpgp×q=qírÇs£tft½tït¾ttOtt sýt§8r1ª-Z)Õ)ò*P-b04Í9Ç@/FvMRTr[aXeøjŒlån¿nòoboHo6o0oNo·ppÊq rsJs´súsçsÒs´s©sÄsÏt&tÒueuuguuÝv vuçsrqpo/nJm¢m:l¶kËj¹iÊi1h¬h‰h–h‡gígngYgÚhTiiñj·kNk·lkl˜lÂkxièfŠc ^2Y”SïM½GyA|<õ86V4a4€496,8y=n:nDnƒn¾oIppÐq‡qùrNrhr‚r¦ràs=s€t tíuºvv0vvëw@wZwesPrNqLpMonnmèmylül1kAj^iÃiGi#ihÿhthgÜh:hšiIiþj¼kakìl§lðm9lTkAh¡eéaÓ]ÑX©SM>GšC3>ð<º:È:à:œ<>çC•HœN£T…Y¬^waÍe#gh÷iJigøg2f¶fVffÒg¥hâi²j²ifM`¯[KTÆNzGâA:Í4k0Š-5-z./1œ4–9f>”DáJÿQ$W\\»aèe imkclÔlçm:m2mCmGmDmXmfmÄn\oo°pppp¶qquqör˜ssÝuvv²ww“xxxÏyt8sMriqƒp¸oîoTnânim¼lélkejßjžjlj1i´iKii0iliûj‰k-kÇlSlümPmªm&lŠj¯hËeb=]°XÚS›NbJEþC¼AªA’A:C!EoIïNµTBY²^,bJd¤fógg÷fúedbçb™bibìc>dEeìgmi h-fKar\™VRPPIàC!= 6â3>00z1k58L=.B]HjNSSüY˜^8b®eÞi9klWlwlÎl×mmm lùl×lümhnnnnÂo ojoÞpŠq=r rµs¢töv9w wx@xáyˆyïzMu=tds˜rÃrqCp¬p-oµo(num£lâlHkèk‘kAjÎjciðiÜi÷jvjék}llŸm:mœnmÒm–lhkBhÒf1b=^YbTP_LlJGÍGtFýHÒKO`SÝXè]Óa§e7fÑhRg»fÆd‰b9`T^ù^Î^«_Y_Çace-gDg,f_b„^SXJRˆLEEË@:56Ó3Ã4M5„9„=B#GSM R®WÌ\Ê`¤dSfÚi—kl/lYl¸lÝm!m=mEm#lælÞm m—mán#nZn¿o@ppÑq¶rjsftÑv7w,wÓx¥yiz9zÏ{_vxu³utAsrärRqÈqKpØpAo{nªmùmvlûl”l#k°kjÃj¹k"k|ll‹mm”mínWnWnMmŒlákie¿bL^'YáV RuP4MôMoLìN‹PŠTPX<\‹`¶cÔfÐgÜhÆgeegb;_4] [v[T[![é\x^!`sceÒf¯g dH`í[oV8P~J´E›@o=q:£;D<®@ØD±IªN¤SÄXÖ]/aedeg1hôjñllÊlñmLm‰mÙmúnmÖm|mGm]m²männFn©o.oûpÈq¤rHs4t–uþv÷wªx†y^zFzú{ªw¾wvlu¾utƒsøs`rÞr…rq_poÖonn¿nÑnžnÜo nïn´n¦n±nÝn¼n_m‡lk¢kkjók/kel&m"nloŒpœqŒrŸt u^vKvùwâx»y„zz²w¾w_w!vïvæv÷vív²vCuùu{tãtsrq p,ovnÞnmmlÕl¨l—låmBm˜m·m¸mÌmðn$nPn{ninImØmSl¨lk~k jÐjœjujiújjÞkümnnn8lÿk—h™ePa)\ÈYKV]UhTgUsV©YÀ]aQeÄh÷khk„kbiÕh~fµec?a_­^Ð_½acXeXg„iÐkÑmÇnÏo‰o^onÊnïonén˜nonbnynSmúm,l+kJj·j jvj°ják™l…mÄnÜoúq rm}m½mêmómÖm¹m¬m»mÖmåmÞmÔm³m’m_mlêlÊlÃlËl³lUlkÍl6m nnûo0ocndm>j®gØd;`s]gZËYàXÝYË[^ a7ei&lnWn–n§mŽlºkijhlfMdödLeeõg{hËjHkêmcnÛoˆoÛoyonËnæonÑnwnn4nmil—kÖkYkMk>k~k§l3lìmõnáoëpôr!svtªu™v]w]x7xíyXyßuˆuSuu u%uMuauZutÉtXtswrÄqôq:p poŸon©n@n)n;nwn£n n€n2mâm¢m‚mxmSmFmJm}m¾n n;njn©nìoBo_oPnün}n]n¸oxp.pjp„oœn£l‰j8g5cüaZ_^g]«^–_ªb;dòhblnëpþqbq»q2póp#om´lk jÄkjkÈlsm)nnòo¹ppÄp porooo&nßn}n3n!n@n\nVmïmHlªlSlfllÌlëmHmÒn¤o^pAq.r=sbtiu;uóvêwºxXx¬y"t-t sîsãsîtt t sÖs†s%rôr¯r7q­q>pëpšpYpoÛo˜oo¹oøpoûo·o8n¿nRmûm¿mem?m,mzmãnznóopoøp€qqxqÛqÌqcpúpöqOqÈqòqàqp'nxl¡j?g§eŠc½c>bÜc¼d„fqh—k~n´q9ss†tsýtsŽrÁq p€oâo½poâoìp=p¶qq:q’q„q ppoÝoˆoooko&nÓnˆn‚n»oo nãnfmòmÂmøn?n›n½nùoapp˜qOrrés¿ttuuŠvPvïwRwhwžrèrúrËrÆrÄrÀr¶r·r“r@qïqáqØq–qMq'qqpýpûpùpØp×qqRq|qIpñpRo»o,n¯nUmæm¸mmånioCoþpÌq¥rus>sØttÄtŸt*sësÚtsúsÂrórp³o)mGkMi¨h g•g:gíhjkönwqs,tºuav5vyv»vmuøuFt²tEsÿs¼s0rÈr½rÌr‹r>r=rq…pÑpFpoßoÕo¢ofooocoÀoïoÆodo nïo5o•pp:pspÐqZqÛrys+sÍtUt¬tòu>uÍv8v_v5v'qquqkq…q{qhqGq@q&pØp¡p­pÚpÑpÒpòq-q[q‘qØr rrrZrrÀr”r?q—pôpMo³oDnØn¨n^n‘ooëpÁq¿rÂs¸t¡u]v5v¥vâv«vuv%v uÅu^ts˜rFpØoPm×l«knjåjŠkk‹lçnŽp¥r t2uˆvLw5w–wÑw‘w\vëv‡uñu@t~s½s@srárkrqõqÛqdpÑpjp9ppoìoÓo›o¢oýpipp|p4oño×ppwpñq4qxqÓrVrÞsyt,t§títêtïtóu2u4tøtLs°oKp p"p[pEpoàoÈo°ofoIoqoÐppEp£qqŠqþr‡rðs/sLs‡s°säsÅs€rÚr,qgp¨p o¶o…oo(oŒpŒq~ržs³t½uÈv§wŠxxxxzxwæwfvÂu»tºs‚r,pÿpopnÁnnwnëoGp5qiràt!u7vTw1xx…xÖx»xÀx^wâvôuätÎsãsLrÉrsqóq qq~qp p`pAp oëoÝoào¸oÐpBpÆq pýpßp·pžpËq'qqÜrrerássttßuLumu5u$tþtýt•sùr¿qŠlamÔnTnænînçnµn©nžnknmn¨o*o’pp¤qHqër’sJsÕt@tht•t›t¿t™tQs¥rêrq0ppoêogoXo˜p„qwr¢s®t³uÍv¹wxx—x²x²xWx)w’v¿u•t…sor>qXp p`pp'pUpØq;qïrÕsätÈu£v¦w|x6x‰xÞxÅx»xwHvt°sŠr£r#q“qEpùpàpÝpÐp‘pApoòo®o‚ozo—o…o·p=pØq4qFqOq@q-qMq¨rrDrhr™sst8tõuFu=tÈt•t'sÃr¹qo…moikÒlÑmÊmõnnnnnnncoo¨prq/qúrÏs¢tu u«uÕuíuÇuÉu€utAsmrwqtp±p+oêo^o:oGpqres…t˜u¾v±w—xx¨x´x“x"wûwyvœuyt†s³rÕr/q“qGpêqqRrr“s`tPuXv?wxx´y;ySy†y;xÚwávÑujsírµqÃqSpÙp§ptp`pEp/poýoÑo–oGo$o/okoqo¸pRqq~q°qØqÝq×qürirÖr÷r÷ssOs½tLtöu&tït8s×srSp±nõlid°gôi¾k^köl¡lãmAmzm™mÖn.nåoºp»q™r}sztku_vvžv»v»vcv7u»ut%s9r=q.p_oÁosnönÔn¸oQp5q„r¡s³tÐu¼vªw%w’wavývXvu“t¤s…ržqþqpq p’p-o©o˜oÌp‡q%rst4uHv;w:wÞxfxzx­xIw¯vu|t:rÒqºpçp¦popppWp7poçoòoèo¢oDnönænôo:oVo¶pYqq¬qür4rHr]ržs's›s»sŸs–s®sðt7tšt\s°rdqupnŠli}eµa°_œcåfŠhäiÿkDkòl£m mfmÎn>o pqBr@s;tYugvsw!wÇwÔw´w'vÌv(u`tXs[r[qNp}oÈomonónÆo.oãqrs)tCu.vv‹vìvœvu8t·sûrÜq¯p±p:oïp pp%oçoÅoÛpNp¸qarrâsŸt^u3uãv‡vÍw vØvXuUtmsVrqp~p}pypp}pTp%ppoûo—o#nßnànâo!oToÔp€qGqördr®rÖs skttt½tœtŒt†t°tºtÞt"ræpÖo3líjgc‚^¶YŸWÅ\ß`dc„eNgTh•i½jkk&kÌljmJnko¶pÌqãs%tTu}v8vçvîvÊv0uÀutHsPr[qop‡o×o/nÖn†n~nYnšooÚpq‡rƒs\t7t‚t®ts]r8qUp-n²mm-jŽg6c¸_+Z’TôO OpUFY¦]†`bÆdŸfBgChiiYj.k(lemÎopLqÃs#txuGvvuëuStÖtsdrƒq’p¹oùo~onÅnnqn[n‰nÆoAo®pQqqßr¤r¸rˆq‡poméljj™hÆg f eZefee§ewe+edüdÕdýe8f fåhbj kïmÈoDp·qaqßq”q?poÓo[o(ogo¢oûpTppˆp`p[p(oÆoNnín¿n†n¯oo©pFpøq¶rHrŸræs^sút­u*u€ujuMtêtâtsplmliTe¹aS\°WQzKDzEK"P TgWlZ¿]_4`“bcOdaenf®hi\jÇlhmôoopYq qBqbq p¸p onán mwlèl–lMlkÖk¨k’k¡k¢k¾kÐl&l¶mPmýmÜmJkÐjrh¼g:eVc`¹^v\ú[Ú[{[ ZÀZ8YÒY˜YžYhY¶Z([”]$_”b&dóg§iálm`nunn‹nm¯mrmVm§nn¶ocoÒpoíoþoÛo—o#n¥nKnnnVnßo\oópšqqaqrr£s1s}s¸sxs'rgrp¨n¼kg;b[]âX¤S"LÝF®@9I:’@ìFNKN†ROUW¬Yk[T\Ä^_3`paÄcd–fShi¢j¬k…kÑlBlDl%k­kAj¾jBiÑi_ihÝhµhnh%gïg»gjg1gg(g}gðh–h^g“e®céa³_¸]>ZOWJT[RxQP´PO˜NßN`N N(NN¸O QÈTWZZ³^Ca¾d¯g™iok kŒkükÓk«kk‹l lÓmÔn­o-o„o‘oÒoÅo‚nõninmÃmÏmÏnnhnëozoäp p-p’qqeqxq‰q poo?n”l}i¨dÿ`pZîU§O£IbB›;ó58.I/Æ5Ý;D@ C¬G‘JMcO`QlRçTUUuV™WÆXúZu\,]ã_~`–ayaýbÆc7csc?cbºb¡b}b1aÍa€a-`Ï`c`_Ž^ê^k^^&^V^©_>^ò^[óZWœUnR°OpLHÒFÅEdED\CÃBíBPAÔAôAæBïD6FéI½M•Q}U Y´]8`­ce$f gg^g‚g£gîhÒjkl…mm´nn~nŒn^mÔmVlël¥l|l&ll#lwlÅlêlØl¶lÕlêlòlŽlkiöh8fõd+`[7VRP¨JóD >67‘0ù*Ÿ$,%*Ô0?58à<å@C%EKG_HÊJDKcLnMsNOøQ SKTÌUÝVÀWtX~YOYäYÿYýYðZCZyZnYøY{X×XHW¿WPV·UÉTûTqTqT”TÖUBTÉS¯QœOÑMªK­I EçBŠ?;=;€:ê9þ9"87J66†6\7q8º;§>ÁC%G§LQ@UdYp\T_`™bbÅc@c¹d|eÚgŒi6jrk;l0lËmWmjmpml¿l=kÅkDj£jCj,jLjQj,içiŽihihÁgÐf¸dîc9`ß^í[gVêQKßF?÷9W2Ô,_%ÓÚî¨ ¿%»*C-û1Ç4Í7Ù9ù;æ=">~?‡@zAaBVC›E%F·HIIìJÅKóM MðN_N™NÂO]OÏPO‹NëNM=L”LKrJbIlHÄH³HÓIICH˜GQEMC®Aé@9>;`8ƒ5«3µ2]1Ã0Ö/î.æ. -3,ð,’-h.e148e<îAñFÎK#O_R•U¯W°Y›Z¾[¸\¼^_ùb cýe™fÁhhúižiÂjiúi½ihhgfÐf9eÞeže9dªdcfbÝb a7_¨]Ý[oYEVSîOæK E'@:v4a.'ë"$åõr´5t#&¡)z,~.¨012ß3Ô4½5•6c7†9:ž;å<Þ=Â>Á@AjB˜CLCÁDDÍE[E¹EbDÕCÚBøB"A‚@É?°>¬=å=ª=¬=½=Ö<÷;j9$7H5w3¼1Ñ/—-b+')Ë)(Ù(M'™&Ñ&%0$¾$-$¸%r'á*.°2è7ž<.@gD’GôK7M—OâQšS?TöVêYB[Å^+`Zbc¶dÀe–eæf…ff:eSd‘c®bÊaða2`l_^Š]…\h[oZ"XÄV©TFQkOLHÿD‡?m9•4y/(ü"Ý5˜0 H Oô—ÛÎ0!Ó#Ñ%Œ&“'(c)B**Æ+Ä-,.·/ó0ò1Ú2é4L5¿77ù8 99¿:=:¢:b9ô9 8'766q5¡4’3£2Þ22x2m2y1/÷-”+†)ˆ'£%Ë#À!ö #?ì&£9¬  w5!%#(À,Û0Þ4Â8¦;ÿ?4A¾D5FQHqJ¥LîO‚RJUWYŸ[‘\Â]Ù^[_!_)^Ã]È]\B[`ZPYKXVØUmTRƒQ+OuM“KHrE“C2@?<ò8s3¥.W)†$‰ Áæ¹ «çJ` Ìê Ïro4¼‘nÜ!"“#Ó$æ%Ð&ê(`)þ+‡,¤-€..Í/D/£/V.Û-ç-,+0*9)(0''E'$''&-$¿" €_K+âÞͽ>tT)ù´SÉR)Z© þ$ò(ò,í0u3Ú6Ÿ9O;¥>@iBØEH‡KnN)PRRwSçUGUñV¶V±VhU•UT(S)QåPÆOeMàLJdH–FýDïB€?•<Ë9ø7‹4z0Ý,Q'Ò#‡<î ô ·›ü’Ê— ® Q ˜TŹ;+ó5&QjwTeÈ] æ"##°$ƒ$ç%1$È$1#4"f!~ ˆ\‚ïÕ¿°¹RÄâüÍu = ý ¨Ï¾oM*åîè§ ’ ¬o3 "Ý&F)•,K.å13W5—7è:ƒ=_@*B¶DÍGH¢J#J×K‚KtKZJÄJLIoHsG-FD²CA9?z=™;Ú9•6Ü3Ø19.¢, )%s![}›žçI =8Ó/¯àŒYñç c ˜ € Ì Î / Æ P é päÙ®¿÷fß'L à2z fWtƒ”•bàÑÖø¾ ÕÖ Œ 0 w˜ÁñÊõ¶KéÜ­Ã×™s3÷ Ÿ oÉ]©±°"6$“&£(¿*ó-Â=ö<Ù;µ:8X6b4½2Ý0Ü.<+C(:%É#V ‘KÞe/, Þ ·îÌ'ÿöÿÚ…¿•R%ÉLÝ dáeÔ*Î } u q “ »Ôé³~Ƙüø, ` – ˜ Ó 9  ! Q v I â 9Å0‰Ÿ˜‹áVµxB&ñù—,qÂÎ  ’ ù_Êq„n:!,#S%­(*m,¸.Ð12À44«5l55”54k3”320Ù/'-|+º*B(s&S#­ ôN!Õù$˜  Üv²jƒÞÿÌÿèÿëÿËÿèzýâ·Üߨ“÷pyQù༚NòÌ £ ë  zä9Þ]ÎXäšW=,!ÞÈ«ˆN ¾u:çÍÄ·±›¥º]±×±' ¸ O ø¡FÓy1*+e­þ"S$X&a'²(¾)))Î)ü)ü)’)J(º(?',%¹#û"§!EÓÚ‘ ͱ®q » * ~“’Õv8Dÿ‘ÿ‹ÿïÿÁÿÎÿ |p5,Y¸î®j–ï)!ΟÅdÄhò”I˜£*¼"‹N'ç›6׌upurx–¾è"5X€­»ÉÝú7[»-â’sXej › Í D ÈSJVe~*µ’Q£%TYº7½IW>ÀÎØöe ×  ÿT"¯˜íÕ¿–ÿñÿ†ÿË4ÿxÿÌ ÿµÿUÿwÿÌÿôÿÞÿˆÿ]ÿºÿ´ÿ‰ÿŸÿú4ÿ¡ÿLÿfÿéŠÑÑÆÜ?¨çÌš*¼SÿíÿÌÿÔReOÿúÿ•ÿHÿ/ÿ:ÿ ÿÿÿQÿœÿûL‚¥¸Ü3RfuoeI%#@ƒÀ2b4uÄb  ° _ÝYld÷‰ísÁüØ»1ŽÉì&ê 0 m 1 EEeãÆ)– ÿpÿ|ÿâÿãÿ±ÿdÿYÿÑ.ÿåÿpÿ¹ ÿÔÿºÿÚ<x,ÿÝ f“{!ÿóA³ç³1ÿÛƒãñ¨TN–ò5JÝŒ1ÿõ4‘ñ:-ñ–nT!ÿ÷ÿÏÿÐÿá?`kdgov…Ÿ³»²¬™~dSOGPR}¨#©‘ŠÂÿ&5 Ä V ë j ò d Þ f ? é H ³ 7  £ ÎxùÞw=vWS/×Rÿ¹ÿ}ÿÇÿÝÿ}ÿoÿ¡ÿêÿ©ÿuÿŠÿâÿ¾ÿÿýqRÿúÿÔÿõ]–>ÿÒÿ®òÿùÿˆÿ‘}Œ0ÿ¸ÿuÿl­Ë›[ ÿÄÿ²ÿ²ÿöT­×ÕçÜÓd>&5+"*7GQTKF5ÿäÿÈÿ¤ÿ˜ÿšÿÂÿæ+pßcìj·âEºDÝuÒ í–&è <UÆ©ßÙúÿÿÿgÿ|ÿâ0ÿÒÿQÿ:ÿÿå ÿœÿ7ÿwÿäÿõÿÃÿ}ÿ¬ÿ~ÿœFÿêÿŒÿÈ6fHÿîÿ¿ˆxÿ°ÿ­>Üœÿçÿ{ÿºdí÷€ÿæÿ©ÿèKÅ ´[ÿüÿÿvÿ—g½#9# ݨlbC+$/5<@BGKPSSPMMDVƒÅý">Hc]<ÿ¯£ÊRçwó ³Hôºôœà‡Ú|¬-*ÿeÿnÿþVNÿËÿ`ÿŸ6ÿ“ÿYÿ¶ÿéÿÿ|ÿôÿÿeÿÛNÿ¾ÿ§ÿâX•9ÿÏÿæ@•Žÿÿ¨<õ/±ÿåÿmÿ›=âž$ÿÏÿÀ~á  ½Mÿâÿ’ÿ–ÿ°U¢áýëÞÃ’cHA531;K^jt~ž²ÃÖöܹ|>ÿöÿ˜ÿcÿFÿ‚ÿàN§º»nÿ¥ÿaÿ‰ÿïnß¹ÿüÿAÿÿšˆ žÿ®ÿÿÿ¡GGÿÝÿxÿjÿéW$ÿ®ÿtÿŒÿð*ÿÎÿfÿŽ%ÿÀÿlÿ¬;ÿÁÿ¨™†*ÿçÿóqÉÿñÿ}ÿ¢j)J±ÿÖÿYÿšd8ëFÿÐÿ¾ÿîfÀQR1½6ÿÅÿuÿ€ÿ¤ÿö3l£Íù  å´”‚kdcu‹£°¸ÄÕèüå¯l4ÿÆÿ¦ÿ†ÿ¸šKJç‚ÿ›ÿƒÿª2æ0ù8ÿPÿÿ¹Åm/5ÿIÿ@ÿä}¯;ÿ£ÿŒÿ×4Nÿãÿsÿ‰ÿàÿ®ÿvÿ¼5ÿõÿ—ÿŒÿÎ5^ÿøÿ™ÿÒKŒÿ¼‡Ç‹ÿßÿlÿ£]#UÖÿxÿ•!Ô0—ÿÚÿônËH,ðÿÎÿªÿÃÿØ,^–ÃèòõçÞÔÇÂÄÏÚäíóÿúåÙ¶‚Aÿáÿ¾ÿ½ÿ¶ÿßyá&ÙpÿöÿŠÿmÿhÿÄP¼òŽÿÂÿ#ÿÿ¯¸Qÿ8ÿ ÿ²‰»VÿÈÿwÿÄ<Q ÿ£ÿrÿË-ÿÅÿ“ÿœÿéÿæÿŸÿ–f7ÿÙÿ´ÿæj·aÿâÿ ¡æÿÕÿVÿˆ\4zñ ÿeÿ]ÈBFÇOÿöÿÉÿía¿:ß6ÿñÿôÿñ)W¢Èáôû   ëÅŒ['ÿèÿÀÿªÿÁÿÐE¡Xy2ÎHÿÐÿÿƒÿÓHÐVIËÿ<ÿ> ¤B/ÿ.þÿÿ¤mØ|ÿÍÿÿ©h(ÿ¸ÿÿ¶=ÿîÿÿ›ÿÚÿÙ,ÿÍÿ…ÿÌ<iAÿÜÿ¯¡¯ZÿèÿÃ)²ê—ÿÛÿ]ÿ‚?pNÿ ÿÿÚ‘6Œ3ÿä-{Íü 伃P, ;Ut™ºÕæû  þêÕ«u?ÿßÿßÿñ&W—åO1ìvÿÆÿŸÿÐ{ù"{ÿÀÿ`ÿu'†ÿ;ÿÿ¥×ÿþÿŒÿ­\IÿÞÿ„ÿ§+ÿ³ÿvÿºÿ­D ÿ¹ÿ°ÿñ[Š/ÿÎÿæH°ÀRÿÛÿÇ%Ê«ÿèÿDÿZ S‰ÿ³ÿZÿ½_N߀3 ÿæÿùe«ÖðÜÀ”lYUbekw‡–¥ºÉÐÐÙÖ̰’mC-$6@^†¸ê /ä} ÿÂÿ™ÿÉ qÙ )Ó*ÿÿ-ÿˆc8— ÿ÷ÿÿÿÄ›°ÿúÿŸÿ¸uXÿöÿ¥ÿšÿé1ÿÆÿ‘ÿšÿê#ÿñÿ£ÿæ59ÿ¼ÿ³ƒnÿÞÿí\¹§@ÿÏÿ½2Ä«ÿíÿaÿdîo[ªÿòÿ“ÿª:¼ #æ©]ÿýÿãÿþ+s³ÕéØÂ§—€wruu~œ¢¢©¤”|ldX[f~‘ªÊäüè¤JÿþÿËÿÞÿÿL£áç–ÿÿ|ÿØ’Srñÿ=ÿ.ÿÊž÷°ÿ¤ÿ¸!ppÿµÿ§ÿß$9ÿîÿ›ÿžÿÙ ÿÐÿÃÿÍÿÿ;Dÿôÿ²ÿÛ6xoÿÎÿú_µª1ÿÀÿ±ÆÐÿcÿKÿÕ½ruñÿ™ÿ ÿö†â÷øÃ™_ÿïÿá @‚¸ÑÝÐÉ»¬œ‚upry{|~rlu‰˜§¶¿ÅÂĺ²Yÿèÿìq¶ÝéºXÿÙÿžÿŸ"ôzƒÑÿØÿ;ÿNÈ­ÿûÿ ÿ¼"‚{$ÿÎÿ­ÿâ,:ÿÇÿ¤ÿÕÿéÿºÿìÿÆÿÍ[/ÿåÿÈÿóX—]ÿá|¿œ4ÿÕÿÑ9½À ÿ•ÿjÿâ¡?pgÿåÿ¼Q§àâà±v:  5c”¹ÊÛØÔÀ­–~l^XPSZir€–­¿ÉÓÔÕÆ³e; IÍóåÖ—9ÿìÿ©ÿ×SînL³ÿåÿTÿn±õ©ÿ¶ÿÆ(x…HÿïÿÁÿ×L'ÿàÿ¸ÿÆ/ ÿÊÿ¼ ÿÖÿºÿñ8N,ÿéÿÒx‡T ÿò$~òOÿîÿÏ¥ÿïiÿÁÿyÿ³j(vH¦ ÿåÿé9|²ÔÍÄŸuJ"$Jm‘µÇÓʾ¨•ƒocX]h—«¼ÁÅÀ¼±¨•{Z/ %U’ÇêÝÇ‘[&ÿâÿà„S rÿ°ÿ\ÿ“:Ëç‰ÿúÿ¸ÿÞ<CÿþÿÚÿè=6ÿûÿÃÿÌÿüÿïÿÂÿÔÿíÿÈÿ× BMÿÛÿ÷<uxBÿý-®”Eÿýÿ÷:¡ñÚnÿìÿ•ÿÈUüY2ÓT#d¦»²£‚aH46:Tt”­²²¨¥¡˜’—Ÿ«¸¾½¶¶¯£‰lO3,'Es©ÚäܯŠYÿûÿñ4ªKpÿØÿ„ÿ½?¿ß$ÿÜÿë7uTÿçÿë .7ÿäÿÆÿì"ÿÞÿÌÿåÿíÿÙÿäC4 ÿó<nnB ÿücš›l*ÿýwÓù¯ÿ°ÿ¨#Ã4Jíˆ4.?]v‡—™sU<;Fb{Ž—«¸¿ÄÏ×ÛÖаž˜|_<(2XÂÖ×±ˆ`F;$]·$ÚNÿÎÿ´ÿþÛÑv ÿíY…s6 ÿúÿû&(ÿøÿáÿæ # ÿçÿÜÿäÿîÿóÿÿÿèÿà0B0ÿõ!_ze7Evf(*wÓè§1ÿÏÿÒ&±*ÿœX8&8G`s„›Ÿ•{fYOWg}Œ™©¸ÀÈÙåèßÙ˹¡ŠqO;/<Kk”³Ä´wT=)3?sÐ ÄBÿÞÿ¾tÄÄv$ÿüMqnR' 0,ÿåÿâÿúÿýÿÛÿàÿòÿïÿèÿõÿýÿöÿþ6D& ?`ldL;9@Zƒ’~NX°íÐkÿ؃ïñ½{PB8AEVr‹™˜š‘sv…Ž˜£¬±¸ÇÒÕÏÎÆ¼¦ˆiHCSw’¢´«’nUJAGCY‰Àÿó£1ÿÚÿÞ'ŒÀ¡Q0\nY3(-.-&&!ÿþÿãÿñ ÿîÿáÿêÿôÿçÿòÿøÿù,I6 !GdeN80:Wu…ŠsF+/b±×½h ÿòyÊîñ¿Ž^:2.B[w‰’¤¨Š•¡°»ÄÐÕÖÍÆ·¥‘}rgo†ž¤š–†oXGECUkÉßÓ‹%ÿêÿì6Œ»®j((Yj_N9/+!&+$ ÿëÿßÿðÿçÿêÿîÿïÿãÿýÿüÿþÿÿ89&,JRF73E\`as€…o='E…ÂÄŠ8OžÖÛÆeK<FSfo{“¥¬¨ª©¡Ÿ¦´¿ÆÌÍÌù©•ˆ‡’›£­§“xga^b`dh{¸Ï±hÿëQ¡¼•^0,JdlW<BK<$!*ÿøÿåÿí ÿçÿçÿóÿîÿåÿãÿýÿþÿý ÿÿ (AC& :YaK15LZdlp}y[@7V•ÂÅ‘KMÄÞÆ¥xUKM_fs†±¾ÌÌŸ±¯ª©«®­«ª©£¤­·½¶¬™‡wjfcgeqŒªËÄ¡`U˜®R,)9U^VH:>=! 03ÿøÿàÿë ÿôÿÞÿåÿôÿíÿãÿèÿòÿü:P> ,Uo^<0<Vlh\al{xYES¹Ë¬j2)E„ºÏ̧‚ibnrz‘¨¿ÓØØÊ¼«™‘˜—›¤°»ÁÈĽª“}‚€~z{{‰ª¿ÃšT 2t¥©zC!'FROD:@C;( /M7ÿäÿâÿòÿäÿâÿæÿëÿèÿäÿêÿîÿü!FN;.Td[C3@\mqniv{hQAS†³Â mA-Iu¦ÉÈ¸šŠ…‚‡ˆ‘¡²¼ÀÇǵ¦œœ¢žŸ¨µÁÁ»­§Ÿ€€…~}„—­»Ê¶‹R5qŸ¢P7<M^YLKLLB+'AAÿéÿçÿûÿÜÿáÿòÿëÿßÿßÿâÿáÿîÿüÿÿ!.KN40Xn]?8Ji}lhlusXGRv¡³«‚S=Bl›½Ë¾±¢š™––šžœ§³ºº·²´¶´±´µ·¯›‹Š‹…†ˆ€ƒ•¯ÌÍ»‰J$ I}˜qK=QpvhVLXbT:"5HB"ÿúÿèÿéÿÛÿëÿýÿìÿ×ÿÛÿãÿÙÿëÿú #!!:NRD-(Cck^JALdtyuq}„ucYf‚ ¶¬ŽhMTl•¶ÆÊ½³§›•—œœŸ¤¨¬®¯°³º½»²­¤“ˆ‰‚z|Š–§¿ÇŦ{S3:[…›‘y]NSdqhWSV[U>)$1FJ2  ÿóÿëÿðÿõÿôÿãÿÕÿßÿéÿÚÿîÿù )2)")>]iR64HdreL<Da~€x‡Œˆ|qm|›³¸¡€eXj‡©¿À½®Ÿ——Ÿ££Ÿ™—›¡§¨«¹Á»¬£œ•‘~w|’¬¿Î¾›mE?Mt›¦hX]jto_MFQ[Q=*&3CE7#3' ÿ÷ÿñÿûÿøÿåÿÝÿàÿèÿëÿàÿ÷ÿù ,2/*0HZTB6;PgskVIWpz{€ƒ…ƒƒ€uu„™«ªŸ‡lclˆ¡³¿º¯Ÿ•’‘“’“•œ¨²³³¾Â¸¨Ÿ™‘‹ƒ€‰˜©·µ¯—sYRdzŽ™ŽrZ\lsqi^YW[WB10<EE:*(-ÿþÿìÿÞÿçÿôÿðÿäÿÞÿùÿú# /:6-/9HNE<<Ml~t]V]iw~wuŒŠ€y{†–¦¤‘whn|“¨±±¤˜Žˆ‹”𢮷º·º¸°¥Ÿ™‡~€‹®±ª”o`e}•œyf\bq{rcaejh\J62BRK8)#&)# ÿñÿãÿåÿõÿÿÿñÿÝÿÜÿ÷ÿñ!"'4=?=>KTOD:@Xmm_UT]o‚‹ˆ€‚ˆ‹‹‡„ƒŠš¢š†sjgtƒ”¡¦ª¦ š•••™ §«¬­¬¨¢›–‘‘‘— ¥©¡}oljtˆ•€vqquwtkejmfVF:38GN?) #+-#ÿúÿéÿëÿ÷ÿþÿúÿêÿÛÿàÿøÿò"%%"&:LMHMRSND@EPY]ZXYf}–Ž……—•‹‚„‹‹ƒvifgv…˜¬µ·¬¢˜“”“–šŸ Ÿ¡ ™“•¦©¥™„vqt|‚‚~ur|‡‰tjjpvoZB68=CF?/##*.+# ÿýÿíÿìÿùÿüÿëÿâÿàÿäÿþÿý %"!+8;>IQQJHHGLXbfc]^hzŠ‘ƒ…ŠŠ„ƒ‚}voknp{Ž ­­¦›š™œŸœ™š›–“𡦠“ƒyunot}‚‚{y{€€xpmq|€zhVJFILKE:0**--( ÿûÿøÿüÿÿÿýÿðÿäÿãÿæÿäÿÿ #'$"#&0BNLFJQPPYciie`\cvˆ‰‚{x|„ˆ‚yssv{}yqggo–¢£ž¢§¦¤¦¦ š™š˜—ž—ˆwmjorvxyzzz|„†qb_j|ˆ„r^X[[YVND;8850-' ÿþÿðÿèÿçÿêÿìÿä 1O]N.ÿÿ 2XfXD0#-Heun`G-$%@gƒgJ62AK]v††wka^\SKFGEM\ny}~ƒƒ}n_QC?>HT`fkuyulhe__dmuvqigd^TGDRaaXURJDDIQPB- ÿ÷ÿöÿþÿüÿêÿÝ #Oj[/ :aocA$+Mr{Z9#+Pv_4.K`nƒt_WXXUJ@:>BPfz…‚{qljhd]TKGIORV\fu~€vl^PKITfrrihe`VHBFPSU[^]UH>?CC8&  ÿûÿ÷ÿùÿþÿÿÿþÿóÿßÿÿ8Z{m2ÿÿÿý'SmnP-;a{‚iD'1Kgz_:"%5Uo|ƒ{wiQ?<GLQX]bcb_b_UF735DUgty„~n[MKLXdowtpcQDBIJP]gi_SH@DMX^]\SE813>B6ÿþÿü  ÿøÿçÿåÿíÿòÿöÿüÿöÿâÿîÿÿ(c‚|J ÿóa„wP";j‰k<.\ƒ‹€V!CnŠ˜m\L;7<IOWgsztkZM<& 8Tp‡•£§®£ŒkO>,.9Qfs€zgM92/;N_fb`YLFLVTOPOK@-$,8:,ÿÿÿôÿû ÿòÿÜÿÙÿâÿæÿéÿòÿñÿâÿÙ[‹}F ÿþ#dŽ~F#Pz‰‚^5$-Rw„wR1"6dˆt\D433@N`qyzpk\G2" &',4CTes{‚…ŠŽ–—’€qY9"2Oj{wo[F:9DLXnvjSFA8=QbhT0 .7-ÿùÿìÿëÿü ÿñÿßÿÛÿÛÿâÿëÿéÿ×ÿë>„L ÿô i“‚H+]‡™€U.7h’¢HH|§ x: 5Qm}Š„~iQ3ÿù:Rdu}‡†€re\SV]jy†w_>#ÿÿEm„’ƒmQ>:5A\qsaP?.1G`m^?*2#ÿíÿÜÿæÿóÿßÿØÿÝÿãÿáÿÒ(uƒRÿý"i–> *_‚ƒqO25R{—i=)Lx’‡nB:_{’Ž‚dE* +B[rŠ„xg^WOH?;8;AMYerx|tkV8 &AayŠƒvW.3UpqL''?UaN%ÿÿÿðÿÿÿíÿÛÿÛÿî ÿéÿÕÿÐÿÙÿåÿæc~Sÿû$k•;ÿþÿþ0`zyX6(1Y¢’\#'d¢¶¡^ÿøÿíJ„°·¸’c+ÿûÿåÿ×ÿêÿûHq“ «¡–zW9%$&/147;=>=AI\u‹œ–‡d? AkƒuHÿù'[‡‰m96^fHÿíÿäÿìÿêÿÌÿÈÿßÿýÿúÿâÿÑÿÓÿãÿñxLÿõg’|9ÿû#]mZF5.?^y„pI.0T—c1>l’§—€T&ÿâÿàÿç+Po€Œ…uj`UJ<53;DIF?<952.//:Kc|Ÿ›k>ÿêÿçÿö&^…™}OÿùNw~mA1B8 ÿÿÿáÿÜÿíÿêÿÇÿÆÿãÿãÿËÿÉÿÛJÿÙf’z4ÿøÿ÷%UhM#-Hf€xS)*e›³‹BÿàLÖάaÿîÿ½ÿºÿÃÿ÷-j ·Ç°‘b6 .BUctvn_WRIB=6))Fn‘°©–\ÿÙÿ¸ÿØ R˜«œZÿæÿÛ PЦ€?ÿßÿó@J)ÿùÿÒÿÈÿå "ÿéÿÊÿÌÿîÿþÿ×ÿ¼ÿ½ÿ÷ÿØÿöUž‡6ÿùQX; "MgjfO+ =l‡\%@€®¥8ÿùÿÝÿÚ/fžÂÙ̽–o@ÿïÿ×ÿÝÿèÿÿ /BSe€’–’Žƒn^G* ÿõÿìÿãÿöCv ÍÇ£V ÿØÿ¨ÿµÿÞ,|£­x/ÿ÷ÿáH|‹_ÿêÿå .<+ÿÔÿÇÿßÿâÿ½ÿÅÿíÿúÿËÿ®ÿ¹ÿèA‘–Iÿöÿô%QZ3ÿùGkmO5'#?|›„>ÿõÿßÿÿRªÇ°Pÿìÿ§ÿÿ¶sÙI4 »s1ÿöÿÖÿ¸ÿ¿ÿÎÿó3CBB@>Ic}‡‰—˜…w_@ ÿ÷ÿÜÿÒÿÐÿïO ×öÏœ=ÿÌÿ†ÿdÿ¨ ƒèç¨1ÿËÿµÿß@—¥pÿÜÿÚÿ÷$A1ÿÍÿ½ÿÙÿÎÿµÿÄÿïÿïÿ½ÿÀ!~ŽR ÿèNT1 ÿû :]bI) 2Le}m2ÿü&c„~>ÿðÿ¹ÿ¤ÿÙtÍüñÀs(ÿøÿØÿßÿæ<Wl†ŽŽzdK4-2;2.;Q`iwyp[R<ÿíÿÍÿÅÿ¹ÿÕH‘ÉúÆXÿåÿœÿmÿ¦‡ÛÎ,ÿæÿè i[#ÿîÿÑÿå7+ÿýÿÌÿ¾ÿá ÿÿÿÒÿ¸ÿÉÿôÿßa‡Vÿð <U,ÿúÿò3LQ<(OkeGÿðÿ÷9€žgÿ¤ÿcÿ‹ÿáfÙ2þ¹KÿÞÿ”ÿ`ÿxÿ ÿñ5r¬ÄÍÀ·¦…`># ÿìÿßÿä1Unyxˆ„j=ÿÿÿÓÿºÿ¤ÿÃÿñQÏ(`!ºÿqÿ4ÿJÿà†õ¿?ÿÚÿÅIpd#ÿÞÿ¿ÿÖ +"ÿöÿÉÿÁÿà ÿÿÿÏÿ·ÿÈÿþ<v`"ÿð:K4ÿäÿû'60&!H^O$ÿûÿñ3kn4ÿßÿžÿ¨ÿÝA¡ÌÐQÿ¿ÿ—ÿuÿŠÿ¯ÿ÷9o›¢§oPHA'ÿÝÿÇÿ½ÿÃÿÆÿÅÿ¸ÿ¯ÿ±ÿ¼ÿÂÿÑÿê$Pw‰†e.ÿòÿ¼ÿ…ÿÿ½#“ã%û˜ ÿ”ÿ|ÿ› ‰È¼a ÿßÿé SX)ÿæÿ¿ÿÈÿóÿñÿ»ÿ©ÿÕ ÿôÿ½ÿ§ÿÕ TT 6O1ÿäÿì (ÿýÿú 5OEÿâÿØ?d\ÿ¯ÿÿ˜êµJÿÔÿ{ÿlÿmÿ±ÿøO©á ûè³{Dÿþÿôÿáÿâÿô)4:31'ÿù(_…§Õïâ·Zÿäÿ„ÿ9ÿYÿš+ÚFwpÿÂÿ9ÿEÿ­OÆÈ|ÿºÿÃIV"ÿ×ÿ£ÿ­ÿâÿÔÿ˜ÿ¡ÿÕ ÿÚÿ©ÿ²ÿÝ;ÿö0C2ÿÞÿàÿü ÿñÿÛÿë '*ÿÙÿÖ G`6ÿéÿžÿtÿœÿòGvLÿ›ÿCÿ/ÿ=ÿ‹ÿÙNOJÿóÿºÿ…ÿUÿÿþìÿÿ,ÿ`ÿ{ÿ…ÿŽÿ ÿÅÿï"ÿòÿÎÿ¤ÿpÿ5ÿþþÿ ÿÿ4ÿlÿ½ FuMÿòÿ•ÿNÿ ÿ"ÿcÿé{Òý© ÿŸÿYÿsžcÿ²ÿ¨ÿâ!8 ÿÂÿ“ÿ ÿâÿüÿ½ÿ–ÿ ÿØÿøÿÆÿ ÿ ÿËÿù0P6ÿÝÿÚÿïÿùÿßÿËÿÒÿö ÿãÿÌÿÍÿûJnCÿêÿžÿžÿÞC—•SÿçÿŠÿ†ÿ¯:Òkó#6ò©Q æÌÓÑê>x³ç #5Sk‚‚w`TG=ð¬h'뿆wy±ì?žÛ ä¯'{ÿâÿZÿdÿ´bbB“ÿÌÿYÿ\ÿÝ[]ÿæÿŽÿ„ÿÃ&ÿúÿ­ÿ‚ÿ§ÿëÿñÿµÿÿªÿáÿþÿìÿ´ÿ†ÿ‘ÿ©ÿÒPV'ÿêÿÛÿëÿúÿøÿÖÿ¹ÿ¸ÿ×ÿÚÿµÿ±ÿÔÿúÿÞÿ}ÿ<ÿHÿ 1$ÿÔÿuÿTÿdÿð“`¡V€†“¬ßTŽÇ:dªÁÍÆÄ»´¢ˆlVNMLB.%Ôz›2ì¨•ŽªËÙè£=ƒ¯ÿkÿhÿ¨*¢Bÿ«ÿ<ÿ?ÿ— CÿÆÿzÿyÿ¶ÿ÷ ÿØÿ”ÿ‚ÿ¥ÿâÿÝÿ¡ÿ‘ÿ®ÿæÿÚÿšÿzÿí,ozKÿéÿêÿüÿóÿÙÿ´ÿ¨ÿ¾ÿéÿìÿÓÿØÿù'3ÿÈÿÿÜkƒ–yj…åòñÄmådï‹ : ë “ 6 ¹ 9 ” î ! V ] M 3 8 F K :  ò É ¡ } \ /  % I „ Ë í ÿ ¹ h Å  M {Á£M/ñ¾<ø‹k…ÚVv]ÿ¿ÿ„ÿÀL,ÿ×ÿ“ÿˆÿ¹ÿôÿùÿÐÿ•ÿ~ÿ­ÿêÿôÿÓÿ£ÿ’ÿÁÿöÿüÿÒÿ•A]2ÿßÿ£ÿˆÿˆÿÿzÿ\ÿ@ÿCÿgÿŒÿŒÿtÿ[ÿaÿ‘ÿÃÿÑÿ¸ÿsÿÿß³ŽK·s7"Y· Æ ˜ I  à X®ðÛ°'¥ÞÑt)/SdU⩉fåºÙóX³Êè#(ü×Ë Ö = ƒ Ù  N'Ì8k® § @ÿ{ÿÿÿSÿƒÿ‹ÿZÿ(ÿ(ÿ]ÿ§ÿÎÿ¬ÿ{ÿ‚ÿ°ÿçÿùÿÉÿ—ÿ¥ÿÖÿÿÿ¿+ÕiÏLÿûÿêÿÖÿÐÿ·ÿ§ÿ ÿ²ÿÕÿîÿÜÿÖÿòB«>j$=•št/: — U › '9%[Ï„Ô'Œ¬Ö¾›=»bJŒß#è«gK¬>äæ {âXÍ,©°ƒ©Åy8Ô‚ˆ¡‹r à ­yn=ˆ^ûG,"fKp¬Œ1ÿÒÿ©ÿÔÿ×ÿ ÿ”ÿÊÿôÿÆÿ¬ÿ¶ÿë ÿ釂u[ÿÓÿ¿ÿ›ÿŽÿŽÿ¤ÿ³ÿÆÿ¶ÿê_¸P¶niçƒ  2 \ Å·æ(0Ð^¥õ0^° !È#ž%L&Õ'È(—(õ)g)±**B*]*2)Ù)ª)Æ*=*Ã++3*ô*À*y*W*)g(»(/('ù(:(l(®(ë)%)Š)Ž)V(ƒ'«&~%e$%"ý!‚Ñßþ:›“´„ý Z D˜À ^G ξÁ“%oÿÓÿŠÿ•ÿ›ÿ’ÿFÿÿ<ÿÿÀÿÉÿ®ÿ›ÿÇÿõÿú ð Q¬¸ß¤Š–ªÌÙÿ™Zb( ‹ F ? ¬ºéŒ%mg ü"§$C%ø'’)*m+É-4.Í0P1»2À3¦4@4æ56B6Ñ7=7A76ñ7#7™88V8M7ð7¯7]7'6´5û5344M4+4K4_4r4w4n44[3ë3210/ .O-+¡)'%`#' òÝØ<±KøZ : F 0 Õ‰x¹VJ*sägÿÇÿÔÿÿÿùÿÄÿ½ÿÓÿï®  ¶h†l0CQƒ²í]»z S q R ¡:KV]'úÔ4ú!ê$™&Î(Ò*ž,™.¡0Â2¥4U5­6ô8N9ë;Ÿ=@>›?Ù@ÔA×BÃCæD¦E.E D²DFD6DdDD‘D8CŸC.BÊB~B AM@’?ý?Ø?Ö@ @c@–@µ@ @µ@I?•>J<÷;“:\9S8v7Q5å3í2/»-p*ô(%þ#z! ªs!1a ÑIœ ð  1Úc¡&s°o #ÿòÿµÿŒÿ‘ÿ¾`+ˆÞ ò ÿ ç6„öV¼‘׉Š!K%í°!Ñ$(&î)Ñ,/1355T7¤9ùI?øA:BpCÕE’G…IaJúLxM NÊOÀPðQ•QøQŠPçP!OµOŠOsO#N~M¦LøLqLK“JÞJAIÀIÅIöJ‰KK–KýLLgLKYIåHdFºE?CùBâA¥@%>J<Œ:„8v5þ3f0“-«+ (ì'+%O#„!Ô‚‰¡Cn ñöU¡ j & ¡QKýðž’ÿãÿ×!<Ž¥ó»Ò$ºQŸ1Ðiêwíáé!î$%™'S)b,.´1’4Y6ê9W;¥>@C$E«H)JK¾MNROñQñT"V,WÌYQZW[V\\î]L]l\Î\["Z”ZSZ6YÞY%X!W>V€UæUSTSÎS1S4SsT3TãUšV=V³W^WeWUïT°SQ’PN¾M6KxIxG£ECk@Ñ>;7à52À1/i-×+ç*(Œ'q&§%#Ý!iÎ:@>Äõ ¢ ¥ A1ý7Zÿâÿ€+ô(%&"s!_ ™!!d";##ü$Ò%‘&e&ù'B'‰'ä(è*<,-Ö/—0ý2Ñ508 :®=5?¡AýDhFèIsLN§QSETúVWÄYZ½\²^¯`€aÉbøc™d/dwdøedùdUcbÆb;baøa¶a`_#^M]¢]\)[rZÂZµZê[ª\S]]Ô^Š_z_ò`%_„^Ó]œ\z[YÁXV.TR)PNK‚HìEùBÑ?î=Q;w9Ñ8s6Ã53w251]0g/*- *'À%~#4 ½Ãk+wˆ ï (ηRãú6Ä2²/§,æ+í+C+ð,€-.…/”0§1•2‰33363À56„8M9Ð;s=?.AÆD™GI?KŽMúP~SU«XZ’\ž^‡_ûajb¨cée?fÉh:iŽjkk3kkÜlltl›lŒkükKj‰iöi§iŒiGhªgÀfèf*e“e dTcµcbúc cÅdTe e±fggNgãh?gøg©fèfAe7d3b›`¼^™\ÆZñYVãTƒQŸNƒKH¶FŸDÀCJAŸ@ >e=<;9õ85Å2î0j-Ê+K(:$¡ Ñza;ñF ï íÐÄcßAÖ=Ù:ñ8_7ž7)7ý8°9Ï:Ê;ã=">,??j?X?@cAåC;D¼FGÀIšKáNFP—R…TdV‡XÞ[6]|_¶a°c­eLfÏhiUjfk_l!lúm¦nJn¬oo'oDokoÓppo­o'n|mîm‡mKlõl\k™jåjYiíiŸi2hØhuhph™i!iŸj3j¶k;kãlWl§l•ll-kükxjóiÂh;f^dÓcNaØ`^ […XÕVS…QeO`MÁLJ¥I5GýFéEÅD˜BÜ@í>b;Û9 6‚3t/ö, (Y$¶!0~eyÅó S xzLýIFPCñCkC.D$DçFGH/I›J¿KˆKÈKÌL3MBNÈOØQR{T[VdX‹Z\M]Þ_uaScPe7fñhžjkŸlönJoip qor rCr‹r¨rÉrÔrßrßrØráss2s"rÂr^qÚq`pîp™p)o‹nÓn$mªmMm*lúlílÐl÷m?mÉnQnÝoPo»p?pªqq!q6q%q3qpàp!om lWj÷i£hf~d‹bt`<^\1ZJX¬WUÃTŽS„R‚QEOéNLVJG}D‚AÇ>‹;7 3 .ò+' "µj)µBáVwSP°NÕN°NÁOÃP}Q„RŒSÆU7VKVéWWSWâXÚZZ©[•\ý^Ò`bcld’eÊgh‰iék%l3m@nNoqpœqÔrÙsÛtZt«tt‚tSt$sôsÓs¸s“srsesCsr§rMqÞqjpìp€oüo[n«móm~m-m:mGm‰m¸nnšoIpp©q,q‰qørQr©rÖrórós ssrŸr qp,o mål•kRiðh}fÿe—d-b¨a1_¹^–]­\ö\C[%Y·WÙVETFROIL|IE½Aá=ò9Ê5Ã1«-z)O$ÿ!E×A¸_§\Â[YÏZ!ZŒ[œ\S]N^}_×aEb7b´bÓc2c»d^dýeBeÜg hwiƒjAjïk¤lˆm†n€oSpp•q3rrðsüu u×vŒvÇvóv¸v€v uŒut±tjtsÆs„sArúrrBq¿q&pzoåoQn°nmRlèl¯lõm>mÈn7n×oˆplqkrErïsJs©sët;tyt¯tÕuu$u#tÓtssãs{rÔrpìoÑn»m½lçl2kUj2hâg’f¡fe­eYd~c0ap`^y\ÆZ=WuSóP™LÐHùDÉ@‰<=84/´+Ï(&%L"¡e¤c…b€b bÎc„deDf2g|hÙjjËk5kQk²llÌ:Ô7#3…0“-êk;iÓi{i³jÛkÒlÜmn†oÚq!r r•rôs sLs`sDs&s6szsãtsËsksZssÒtt sës·sËt!tÎu‚vvhvzv–vvÄvµv…vu|t×tIs³srhqÀqp~oâo;nžnmŠm'lØllkpkkk¥l4l÷m“nLopqTrrsOsÄtª;’8Ømyl¯lÝm…nÎoÑp»q{rKsut}u7u‡uèvv.v,vv*vhv§vÓv¯vOuìuÓuäuçuÅuu)tÃt¸uu‡uóvvuÂu¨u¨u¿u¾užu?tátVsÊsrtq¸pùp:o|nÖn+m¸m\m9mmlÔl…kþkÇkálƒm%mæn€ooÀp‘q™r~ssjsÆttUtrtat9t2tOt€t§tœt—t¼uuuµu±u.tŒs×snsrwq³pÌpo‰oˆoÊppo°oGn«nXmylcjHgÞeb³`\ÚYQV RâOºL™IGFKC®oroBoípörOsNtt°uVv?wwˆwÉx-xpx“x´xõyNy¹yïzy¶yTxêxºx–x\wøw{vúvzvJvbvv‰v6uÈuPtôtËt·t±t¥tets€rÕrqCp…o¹onzn mÀmžmm£m²m­m•mcmmmWn-nüoËptpùq„r r½s(sEsss s4sYs[sGs/s?sqsÑt ttâuWuévZvÃv°vguÄu>t­t's“rçrHqœq_quqÏrqôq¾qNqpp nÕlþjŸhÔfÆdRa€^Ö\1Y¥VþTQCNÒoBompFq^rˆsYsÕtQtÁuTuÜvJv£w wkw²x xÒy†zzAzaz+yçyy]y(xßxyx wœw1vévÉv”v,uŽtótbsÑsƒsUsasxsis:r­rq=p’pocnýn²n¥nŽnœn¸nØnïnán¼nŠnu{uytótQt-t!sòsUr[qipîp¾p[oøo¥oInân^mãm,m­n9nÊo/ozoŒo¡oœoyo—pp°pôq1q›r-rÓsMs¡s–sssrJqòqšq{qCq>qSq—qðlõm?mhm¦mÔmýnnnn&n†o?oóp4pHp¡qq[qqÈqÌq¿q‡q:qq'q”rr­s1sTs@rérÒr…rq>pqUqÓrtssŒs ssIswBwüx€x…xlxExQxšxåyMyºzzrzqzYy°xöwÍv›uRtsr-q°qrŒst t•tïuŒvvsvv¼vûwkwÿxŒxïyCyKyVy xÂxvùuôufut`sîsÁttttùuPu¿vqvuéuævvˆw wŸxxty yÈzIz{zízZyrxîxwéw_vív§vLv4vIvŠv±vÂvÙv½v¤v&u½tspèn»lGiµgebdKcfcŸcÉdàeþgáiÛl2ntp§rÞt¼v‰wÍyy¹z"zy÷yËy¤yŒyy’y·yÅyíyixÓvêt›q?njg+d a^Ð\Z[aZ×\]7_ta¯d?f ik‚mëp„rnsöt—u4u|u÷vMv‹v›v‘v¶ww¿xUxÐyLyqy|y(xùxPw=v!u‚u%tusùs£sÊtt’tÄuu·v…vkv€vÑw\wÍxAx¯y(y·z4zžzÖ{3{zŸyäyƒy+x˜xwÖwÁwˆwnwzww†w`w[w v¯u³t¿rÝpºmÈjãg´dWaw^Ì]U[è[é\ ]{^àa4c•fƒi|lpoIq¦sìuwuxzy0y)y5yyyxóxÉxÂxxw‹vgsªp„lBh-cî_ª[ÛX U_R¢QÕQfSTäWùZå^Oa³e0h¨kìosqýttÄu‹u¶uþv v!vuèuóvEvëwƒxx±xôyx´x™xw%vuuuthsêshsPsƒsàsÚsñtivÉv¬vÊw/wÁxxtxçyVy¶yùzAzjz¨zŒz+y–yAxåxIwÒw§w²wŽwswywzwYw$w3vÚv]tåsZp°mÛj>f¸bë^×[]X2VuT²TžTÌVsWìZ€]?`ÃdTgåkIn)qs>u™vùxx#xLx*x9x*xw½w¥wJw#uÑt4p­l§gˆbÃ]ýY/TÔPKMIüI>H×JíM9QTˆXÀ]#a´fj*nŠq¤t$uuïuúv uÕuÁužuJu:uvvv§wAwïxGx]xx w¢vçvuetótxts_s s sWsrås&vuùvvnvãwwCw¦wðwÿwéwôwýx wèw¨w6vÐvZuÃufuPusujuduru€uyulu´umtös#qm´j>faé]’XìUQlOyMMpM±OŠQSçW[(_1cOgOjÞnuqCtu±w wRw—wjwlwIwvÎv¬v/uôtNrEni6cJ]ÖX’SYN—IjE·BQAœA(C~F$J‰NƒSdX“^ cEhmp­s”tu‘uunutÑt›t5ttHtáuovvÂw$wIwwvÃvEu¢u t¿tyt strórðrýrrru0u*uFu¢uüv v v[v}v>uÉuŠubu7utÖt}sÿstrìr¹r¿sss9sVsss‘s¬tsÙsfqIn×jÐfÂaï] :o9Á9,;§>C™HM–S{YÃ_ÏePk5oQr¥sµtÏt¢twsês–sNrÞrÅrìs‰t#tÕuuøv2vvuÜuu&tÃtztft)s|r×rÀr¨qúqTq!sþtttZt…tet6tnthsæs r›rBqèq§q~q.p‘o÷oŠo‹o«p p[p£pÒqqVqžrqÔqpoGl¼hhd^µYvTN™JE§C/@¼@¬@ýCcE{I3MFRjWL\aögkñoŽstáv wwxw9w(väv¯v?uätûtmr!oUiécð\‘U…N¾H4B|<77é4#3„2ç58Î>BC(I#OpV.\ÈbÕi;m¥q=r]sƒsMs&r˜r9qíqˆqq¥rFr÷sÃtƒtöuEuBóGMVRéXè_9düjmnUr'tDv4vËwjwSw]wv¥uðu[t7s€pëm®g¹a_YŠQëJnC-<É5Ó1 -,ƒ+ó.ô2š8 > DŽKUR—YÔ`tgXl oëq'rgr6rqŽq*pÚpp‚p™q3q÷rãs´t1t‘t—tžt|tet@tsít+t/s¥rórÎr“qÏqpŸrKr7rr qÎqLpÒpÞpªoÒn¯mÛmUlÓlljl"khjËj‡jÐkk²l\lìm-mdmúnrnÝnpn#li°e*`‡ZfTM„G9AÍ<58e4•3Î3¢69c>YC_I¡OËVY](c.hËlÆpÈsuuÍv¥v¹v×viuüu$tms'rVo¦l;f*_ÚXP]H¤A:h3,.Z*))Ç)ƒ,ô0í77<òC¦J‡QËY%_Êfknæp%q_q5q,p¸pbpoÜoêoüpqardsEsÎt5t?tJt0t#t s×sÉtt?sÖs›8‚4+/á.Ï.O1A4?9­?EßL‹S…Z¯`ëf¸jÖoq}s²tŒu˜uÈuãugutKs~r qnYjðdõ^¹V÷O=Gx?ó9O2-X))(ú)-1:7™=~D;KR6Yx_ãfOjƒn oOpjp:p7oÚoŽoZo4o^o‚p qrss™t ttsüs÷sæs¯s£sÿtjdŒ^ÃWP:HåAÅ;4é0Ÿ,½,Ã-Q1p5±;ØAªH NšU[Áavgj¦mÈnÅoŸo`o[onænÉn³nåoo´pqšrŒs#s‘sœs¥sšs¯s¾sœs¥ttytgt"t?t0sÂs*rÔq4p¬po7n:mlOlkîk>jYi•i"hÑhÑhûhÝh%glggpgÑh“i_jj”júk¨l2l½l„lpj¯hxdP`PZ´T‰MçGÈBm<¿8±4Ï3¶2Ì57Ì= BMH­NâU[G`”e¦iHlóopâqaqîq³q_pñpöpÜp§o¢nÝlPi6cò^›W÷QIJcC~=…7_3œ00H15C9|?{ENK‘Q¬W‹]žb±g¡j©m`n.nËnn{nZnBn7n$nHnlnÿoÌpÌqµrJr³rÈrÝrõs6s}s‹sÁt^tïuuuBuLut„t5q¿q'proŽnmRllOl8k¨jßji¤i`igi‰iZhgÜg|gºhh³idj$jÄkZll§mBm3m?kÕj f†c^-X·RÌMXH C­@.<Ð;Ñ:ã<à?XD,HüN­T0Yz^ÃcgPj%lónBo`oSoGnÄnBmøn nFn”n(mÆkŠhÄd_RYrS…M+F•@å;_8455[6@:V>vD?I÷OâU}Zœ_ûdSh€jóm,mÀn"mÍmÄmºmÁmÂm£mmšnn·o¢ppp÷qQqxq«rr…ssjsâtÁu‘uüv"vŽvºv¨vMvrpqÚq+pBo2n mQmm lkÔkj‹jNjUj_ji]h¥hEhvh²iJiÚjŒk:kîlµmNmèmônmkìi$fSaò]W»RÔN˜J3G CæBßAêCÊF?JìOT¸YÓ^sbùfTi–k`mmYm~lÙlFk®k0kk"k‰l?lflkjœhRd'`ZÜUˆO•I@CÎ>Ê<9(9u:t>B²H]MüSX¹]4aûe­i#kl»mmFlîlÞlåmmlìl¹l†lÇm^n:néoYo›oÔp+pÎq•rts sÌt÷vv×wAwáx5x_x0xs¹s1rœqÒpçoçoDoonšmèm!l‰l>l)lkjäj;iÒiîjj¢kk­lRm mÌn[nÚnåo n`m»k±ireœa\\•X4TgPŠM°JªI‰H™JiLÓQEUŠZE^ôbøfØiIk l@lšk¯j¸iŠh•hgÊgóg÷hzijGjØiÇh^e a±\íXR–LºG¾CB@æ>6>?±CÐGöMgRÂWÛ\`ld–gšjSkšlØmm l²l˜l¢lÑläl´lcll l mnnndn—náo]p8q0r7rîsÐu'v{wox xÎyIy©y®yÃutŽtsUr‹q¬qpçpÕp‚oäo!ntnmÚmŠm lRk­k(k%kKkÏl3lÀm`nnÍoJo¬o¢o«o0nçmwk´hdd¸`x\‰YU°SP(NßMÝO~Q¸UÕY¼]ùb1e¨ijËl~l9kri|g°f4e d»d‚dØdíefäh'i)hÙhtfcg_Z’U€P:KÛGðEöCDE€IÂMðSX.\ÌadWgÕjkýl£m`mZm6làl¿lÐmmlñlžl7l:l¨mimñnQn‚nÛokp`qmr~s4tuuvàwìx¤yzz¯zí{7vtuæuktÖt6ssrÈrªrhqÞq$pdoåoo nwmºmlllHl]lÞm>mÆn]nùošoùpAp%p o’oWn5lÊjfåc2_·\®YÓW¤U SÏRÞT:VY \ü`—d$f÷iÁkl1kHi¯fúdŠbËavaCaaŸaØbÔdgf{­wÄw5vÆvHuÉu5tÇt‰tat0sºs rBqµq6p¦oýo=nŽmÙm˜mmünRn×ojoõpqp±pôpàp½pCponkÍi>f#c*`ª^x\æZæYðY;ZX[Ý^ªa`d0fìhèjékpkãjAgâduaD_ ]X]+]]Ü^5_a”d;fÚhhi¹hÑgUd`ý]wYÚWTŠS†RRïT£Xe[ø`dgkjxlbneom»m-làl®lLl këlll>lalºm1mÉndnÆonón¹nÏohp>påqq?p†o¾m­k;gûdŸaè_«^Ï]»^>_ad4gÏk°n°p×q}r:rYr¹rªrkqÍpöp póqÁr2r|rºss|sêtWt>s×srlqðq­qipãpDo­oWo@o:on“mém€mymán)n‹nÏoSppøqørÝsƒttÝu•vv|wQxx~x°y-sJsOsWssÓtt t!sös­s1rÓrMqšpépgpo‘oKo(oKoeo oópp!oÖo›o!n‚mÞmmml–lLl/lil›l÷m?m¼n^oo×p`pèq páp¹põqdqÑqÜqÐqp7nlŠjgZe8cnbÍbbªcDe6gdjrmÏpzrSrís³sútntnt.s«s+ssysùsýs×sèt t-t=tft6s³srrGrqØq\pÃp+oÜoØoïoÍotnín­nÇoLo¼p7pŒqqœrcs0sØtPt¡uu{u¤uÞvuvûw'w!wpqärr(rqr³rØrÞsrñrµrPrqÀq;pÂp~pdp!pp1p„pÁpþqUqqqcqp«p#o„nënyn*m¶m€mlmµnnnão€pKq3rrªsisÂsÒsœs›sœs´ss1rKq\oÌnljhvfõfUe¼f7f¶hejXmoÛrs¸tmu`uævjv{vjv%uûuìvvu›u!utùt±tbtVt%s•rýrµr¡rˆrLqèqepØp”p©pÓp±pVoÞo°oÑp]pÙq`qÄr6rÊstt$t¨u u3uiuuu]uZu¯uñuÕuŒu¡pp–pÞqQqœqÁqÆq÷rqàqq‚q^q pÐpÂpÝpÑpõqNqÇr#r`r­r¸r¥rGqïqrpépopoÖoŒoro]o–oâpjpØqrRs@ttÍu›vvgvOv;uèu²u+t•s†rjpéoNm±l0k i×iEhÁi+i¡klão(q]s!tŒuevwww”w¡w¼wžwwFvëvYu¬u"tètÃtOsãsÅs£s%r³r—r¢r‹rPrq­qBqq\qœqxqp®pŒp¢qq‚rrbrÑs[sútŸuu€u”uŸuiu)tãtát£t s*r«no]oÈp[p£pÂpÀpóqqpípûqpèpÝpüqDqkq¿rGràs]s¤sïsîsÝs†s/rµr4qÃqbq2qpÿpÜqqdr r•sEttèuÍvœwkwæxQxGx1w¼w]v›u¾tƒsLqípso3n&mˆlÐlŒlOl²mn9o”q>r¹tu:v4wIw÷xxx“xÒx»x“wýwMvru¥u t›tNsÎslsFs$r¬rPrWrwrRrqÊq™qSq[qÄr!r q±quqkqvqÂrr}rÉs's›t*tÂu=u²uËuÁuhu$t¹txs¼rªq"oþk‘m mønïoco­o¾ppFpcpyp°pêqq(qjqÎrr’s/sÐt_tªtëtÛtÈtpts’s r“r!qâq´q¬qwq“qër s?sùt¬uxvew5wïxEx“xrxIwÃwUv{untrðqÌpŽo›nÏnunnnn‹núoßpír,sAtKunvkwbwôxpxƒx±xjwþw%vAuZt”t s†s2rÚr¥rrYqúq»qÑqíq¹qeq,qpøq+q·r0r0qðqâqórr4r|rÒssJs§t"t¦uuˆu–uxtøt¤sòsKqÜp!m³kžh‚jålKmÂnnnéo oooÎpp]p¼q'q‚qårQrÐsIsÙt„u u¯uïv uùu×umtótVsÃs:r©rGqýqäq£q·qörªshtSu%uúvîw´xexŸxÌxyxwcvævusÆrÄqùq'p‚o×onnýoo.oÒpfqRrWst“u•v«w‚xHxxíxÉx¦xwpvtuZtOsprìrrr8qüqÔq›qmq;q0qSqfq3pèp½pÃp¾qq²r=rOr$r6rbr}rµs sfsŽs·tthtËuu{uyuDtšt*s&roöm—jFg?bófVh›jÜlmm†n:nÒo]oÖpVpÞqorr˜s+sÁt_uu§v8vov’vRvu‹tútMs°srqqðq€qRqq-qHqØrŒs„tdu>v&vÎwrw…wzvÔvutfs†rOqp+o¡o-nânqn mm~m¢nSn÷oúq rHsƒt£u¼vƒwEw•wåw®w_v§vusüròrq²qcqRq0q pÄp•p‰p£pÁpÆp¥prpIpOpXp»qfqýr&rr6rvr±ss–tt:tSt˜tÜuu#uBtátPs(r;p„n®k hdd` ] aod©gËi©kOl7mYn:ooÁpWpëq¤rgssµtTtóu§vCväww1vÍviuÉu1tˆsåsBr‘rqqNq-qVqdqËr[s8t tãuÃvYvêvÙv§uÁtÀsorUqo—nGm'lÃllÛmmWmUm^m‡nn“okpIqDr7ss÷t²uuüvjvPvuxtët rîqðq?qpÏpÃp¤p|prûsÏt‹uRu¤uÊuatçt=s¼s:rªrqƒq p“papOprppp™pØqVqÜr}s/s¨t säsxrCqoYmÇl jh€fþfnf f­gWhhYhahhh—hëi‘j7kkÝlÝmïo.pŽq°r¨s sfs3rûrOqnp§p8p,pppoèo¼oœo–o¤o©o©o²o¢o\oDoaoñpªq[q¿qêrrqrís¢tkuumuˆuÅuÀuÊu6t˜r÷q*nckßh8dO_YÙS¿M¶K¦QcV6ZÙ^,a_c}eªg!h£i›jokkílàmÔnÒoËpÅqÏr·sªttnts—rìrrDqÕqapùp¥pKpoîoßo»o£oo¡o³oöpcp¶qp¦oànAl»jÎhæfÏdb£`Î_ñ_X_ª`` `Â`š`j`l`“a'a®b«c¥eo=o3oDobogo?onônónìnÝnÉn«nenln³oop?qq“qÞrrdrøsÆt™u4u§u¼uåu²u±tÆsžqnnjªg3b„]zW2PõJC:AFïLQTÌX}[ ]‰_)`Ñaæbïc½d•ef¢gêiU4TÕTZSáSÌSÖTUVtWêZi]1`~cÅf‰ij“lFmm¨m„mbm$m m&mTm¥nn4n"mçm×mÍm½m˜m_m/l÷mmnn(nôo´pKpp¨pÕqUrr®ssYs5sr•r`púok˜h%c™_MYÖTM0Fo?X8C6oK=`<|^@'A½BàDmE¹F”GoHŒJDL>^;°97q6O5ô5w4Ó3×2¿1Ÿ1,0ð1Ë2t46ù:õ?#DHÈM%Q=TXZ¢\å^)_U`BapbÑd_e¸fÓgrhhdh™h‹hƒhmhohZh#gàgšg—gáh'h1gÏgKf²fZfe±dêcïbha_]uZEV9PÝL1FÂ@è:O3Î-7& fQgç ¶%z)‘-h0-2ü4¹6$78r9¤:n;:<;=Ô?·AËC½E.FkGHH]HnH G­G}GŸGéHGöG GFÂF}F]EýE?D_C±CVC*CBçB@ª><Û:å8ä6¨4F2/¾.D-6,Ð,Q+¬*¼)(h'Ã'X'ô(Y*7,v0O4M9=›AôFI¦M^P7R¸TkVWÃY¸[»]´_M`ÌaÉbÖcSc™c‘cÄcædcâcvbÝb`b#b,b aÒa`@_H^|]¤\æ[¬Z'XVbTQÜNFJ DÍ@9:ø5#.Ï(Ê"ûõ«¡qY°˜"$$Ã'Œ)M*™+V,‹- .a/)0 1‹3l57z8í:9;;üIB#EPH JVL¡NòQŠTVqXbZY[À]]Ô^b^”_ _;_S^ç^R]|\½\![¿[AZ“YyXDVçU·T„SxQëO÷MŒKšIFiB{>+94€/O)u#hÝÖiû Ü sºH©žÔ9Èõ š!"n#'#ô$·&'Ü)ó+Ó-E.‘/k0l0ø1W1J131)1W1®22+261å1ƒ0ö0’0/I.g-„,Ù,q,"+ï*ü)'G%A#7!8r¥HßEYq#’¡šæf¬¼²¼Í#“'F+.Ü2‚6P9¢<š?A±DQG(IäL~N±PõR§T9U.V(V¯WQWkWhVÍV%U'T-S3RnQ‹P„OM’KñJˆI)GßF$D A˜?£=:26E2M-¼)]$.ù@*   1Zön™ H Fé±ìô–Mÿ»–B}3J 7!²"ê#¸$¿%r&&'&%&&\&¾''@'@&ê&™&%“$ß$ #*"U!¼!M õ ¼å ¤Ãµ¬¾ÊB®ö­çí¤$ [ ƒ ô Ð Ø úsC!ÌjO#!&õ*õ.1³4]79Å<·?BoD×G7IJÇLMgN2NÙNÕNåNXM®LƒKFIüIGïF™DÜCA3?¬>%<‚:{8K5Ý3á1B.*&o"d*ªÙ  æPç71ÖÁ´ A N M  ä ”? ®Â2ûº ǨVù7?6vÐ'7½‚³3`³Ió¯ƒæŠ#i¥ ¿ Ê _kÙÏ”=Ã2—BObgµ < Õ6†*Æo!>$›'¢*,“/1Ò4£7g9Ì<=ä?¾A/BÂC¤DZ=&;£9Å7ê64ƒ2Û0ý.à,Û*¨( %ø"ÓA)á%g é þÒFÈìah½žÏÐk¯èœZ¸ÿj³ Ÿ œ × 5_BÄXÎd¿àÞA“±™FÑ”\—ø«‚xl r | ¥ Œ ^ñq¥Æ(é‚"»bÿÙÿµÿîÿûÒõ7è zfjžèÙt®!÷$g')×,p.À1 3 56Â8g9I9÷9ô:39»8é7‹6i5%3ò2l0ª.·,ÿ+A)q'p%Q#3!gf$TJKÔf R Bš™ ˆÿòÿÌ&'q¿3ý{$u›¿¬iõO µ  i š õ > f q … ¢ Ý û ï ¹ Ž f a 2 Æ 7·ubqq:ÜZ[”Èz¾_ѨxfPt}÷rÛ‰ õ eÃòÙ®¦ósÿ"P$o&ª(±*Å,S-Å.‚/:/T// .3,è+ý*Ú)„'Ø&*$t"õ!O^HVŽ 5äAÁ   Ì %ü6AÜ ÿÿÿÄÿÉÿ«ÿgÿfÿéUÿ½ÿðd¸Ö­¨ªð:¤NX]f‹ºâò÷娯©¤Äãë¹oΣ€jF+ óЛd0ãÁ±¦©§¬«ÀÏ“8¼]ñê¥  Ž Ú ]*væ$A‚w [!¤"×#m$ $)$Y#õ#j"_!{ -™î§añ! ˜Vü 2 ï¶òºsm5t/ÿoÿvÿßÿòÿÎ #ÿÂÿ€ÿâZO-…¸CqɲsŽå0L-0g‚oD:8/f²×Ô„%Âx[JPCGX¯×ñý #?_zŽ¢®¶ÀÓèìçìRܵqX1h² } l‘qaï]J@ÇIdŒDù%ÆS4DÐ V  3 i ,ÑedÇÚ0·›–tÿÓÿiÿ·&ÿ‘ÿò4ÿÑÿaÿ€ÿßÿÆÿšÿê>*ÿåÿ¶ÿÀEÿŒÿ1ÿ3ÿ‹ÿñÿÓÿ‹ÿfÿ‹ÿÕÿúÿùÿùÿØÿ¤ÿvÿPÿnÿ²sŽ-ÿÖÿÿkÿiÿIÿBÿLÿ„ÿÉZˆ­Æå9[ovnyiGþ¨[\‘•mÐc ¸ L 9ÞÁn<†7»¤j 0 O ž õ èEÈñ©eÉ›Lbê‚2ÿŠÿ3ÿ`ÿÅÿÑÿ¢ÿRÿDÿÁ#ÿÔÿzÿÈ% ÿÅÿ¥ÿÊ1t0ÿáWÿé9«Ó“ÿ¿ÿêeÉÖSžÙôÍ™LÿüÿÚÿÓ‰õA7¶m9ÿôÿø+Qn}|{|‚”¯ÀÀ±³¦„U/ÿöÿêÿÙÿð cÃbõÏØìáŒ†Ç £ ` û & f þ G &UÄüÍl£±ë<L“u˜Yÿõÿÿ_ÿ· ÿÕÿwÿeÿ”ÿáÿûÿžÿ€ÿ˜ÿìÿµÿ‰ÿüu` ÿÜÿög¨GÿÎÿ¿Öÿèÿƒÿ¡+¹Ñw ÿÏÿà>™Îߤ\ÿ³ÿ ÿªÿý]¶éîÿðÖª‚`?37A9,%)1BWcaW[T:ÿþÿæÿÛÿÚÿõFz´è`•­ÉæKÙ tmL‰Ñ?Žobÿâ%•ÿ¿ÿLÿ_ÿÌÿÊÿPÿ9ÿxÿÝÿ™ÿ3ÿpÿÚÿíÿ¾ÿuÿ¸ÿŠÿ¤BÿçÿŽÿÊ:qXÿøÿÃ*™€ÿ­ÿ©0Äé€ÿÌÿhÿµiñõ„ÿîÿ«ÿß:±ú¨Iÿçÿ…ÿyÿœlÄ #7$ê·‰paA*&-9CJMQ\eeen|y‰²ë3F:4Æz($FÏo¤Î݇/M×.ö%ÿ¤ Û?òÿgÿ} g`ÿäÿwÿ©+ÿúÿ‹ÿPÿ¬ÿàÿ†ÿuÿüÿ—ÿkÿÙFÿ½ÿ§ÿäa ?ÿÏÿìLÿŒÿœ)ߣÿáÿxÿ±Sô¹>ÿâÿÍxÕþ¬Dÿäÿ˜ÿÿ¼_§ãðÝ¿dH?1/-8EXiy„–³Ôëÿ".&úÔ˜^ÿ©ÿkÿQÿ”ÿòbÅÛÒzÿºÿbÿvÿÞgÛ²ÿðÿ0þúÿŠ„½ÿÓÿ+ÿ#ÿ¹\Zÿïÿÿ~ÿìJÿ¤ÿhÿ€ÿå ÿÄÿ\ÿ„+ÿËÿtÿª /ÿ¿ÿ©%ž†$ÿæÿùvÊÿîÿrÿ’YEµÿæÿrÿ³y$PZÿãÿÌÿï[´ûEF)½<ÿÐÿ‡ÿ–ÿ¸?x´ß乚…ka\k{‘£±½Ìãûî³i-ÿ×ÿÆÿ¦ÿÑ0·3\`ü„ÿŠÿvÿ‹ Ë,ÿAÿ[ÿÿÆÓ‚FKÿVÿ@ÿØmŸ*ÿ”ÿ‚ÿÏ%9ÿÐÿfÿ|ÿÒÿùÿ£ÿjÿ±@ÿ§ÿ”ÿÍ3`ÿüÿžÿÙRž‹ÿÅ ŠÈ‰ÿØÿaÿ”ORÝÿ‹ÿ¦2ä; !ÿÛÿë e¿>)ñ…ÿÝÿºÿÒÿä<o¢ÆäéìàÕɼ·¹ÄËÔáíùüûíåÅ—WÿìÿÆÿÈÿËÿû1†ó,;ìÿŸÿpÿkÿÈB§ì¢ÿáÿDÿ+ÿÒÙq,;ÿbÿ+ÿÀˆ´QÿÄÿuÿÅ<Kÿ˜ÿjÿÁ" ÿ¼ÿŠÿ‘ÿß%ÿùÿ«ÿœ n?ÿáÿ½ÿïp»iÿîÿÌ¢å}ÿÍÿGÿtH(wõÿlÿgÈ:?ÃJÿîÿÀÿåUµ7áƒ=ÿùÿûÿý5\}š»ÒáæïøüÿñÓ£yI ÿáÿÇÿÖÿâLž<c)Ä?ÿÕÿ¯ÿ“ÿÚQÖK4ÀÿCÿA <4ÿBÿÿÀ‚ä†ÿØÿÿ¸)t-ÿ·ÿŒÿ²6ÿçÿˆÿ“ÿÓÿûÿã(6ÿÑÿ…ÿË>jDÿâÿ·"¢³bÿðÿÇ)­ãÿÏÿPÿv;w'Uÿ®ÿŽÿä“2‡1ÿßÿù$uÊú ⽇U2$CWr•¶ÎÝðüû÷éÖ°N*ÿôÿïÿü+Y˜äD&ë ÿÍÿ­ÿáxôùjÿºÿfÿ~.#Œ!!ÿNÿ/ÿÈ›è˜ÿ•ÿ¶"dOÿßÿÿ¢ÿû& ÿ®ÿoÿ³ ÿ²Dÿ°ÿ§ÿëW‰2ÿÓÿèG°ÂVÿßÿÆÁ ÿàÿAÿ^'"ª[—ÿÇÿnÿÊg JÞƒ3ÿàÿöf«ÖðÝÚwgajin{Žœª»ÆÌËÐÍÅ­‘nF1)9B]~¬Ü+î‹ ÿÛÿ±ÿÝ~×úÃÿ~ÿ&ÿŒmB¢ÿ'ÿ%ÿë½¹ÿþÿ ÿ¸tVÿóÿŸÿ’ÿß)ÿÃÿ‹ÿ‘ÿãÿêÿªÿï:8ÿ¸ÿ³„qÿâÿñ_¼­GÿÓÿ»+¹óœÿâÿ]ÿhòo]¯ÿúÿ›ÿ²<µÿá¤Wÿýÿå2y¶×éÚÇ­›Ž}snsu~Œš¢¤ª¤•ph^co†™°ÉÞúöå¦OÿÑÿâO¦á ÞŽÿˆÿqÿÐVyø ÿDÿ:ÿຽ%ÿ­ÿ¾%tvÿºÿ§ÿÛ3ÿëÿ˜ÿ–ÿÍÿÌÿÏÿÚAFÿ÷ÿ¸ÿâ={qÿ×eº°6ÿÁÿ®³¼ ÿ_ÿMÿÕ¹knìÿ›ÿ¢ÿðxÓìíº”^ÿõÿêG…ºÓàÒɶ¤‘vigju|†„ytzŽ¢µÆÎ×ÔÐÀ·•\ÿäÿä \¢Ïøâ¸Zÿàÿ£ÿés‚ÔÿÚÿ;ÿN кÿ¬ÿÈ*ˆ…2ÿÜÿ·ÿæ+8 ÿÅÿ ÿÌ ÿéÿ¸ÿòÿÍÿÔ!Z-ÿæÿÏÿü\•_ÿè~¾š1ÿÐÿÊ,¬ò· ÿœÿtÿé¦Amýfÿèÿ¼ÿþJ¡Ö×Ö«r8 ;kÃÓáÚÒ¼§xgZVQU[hsƒ–¬ÂÑÜÚÞй’kF GˆÂêàÓ•<ÿðÿªÿÐDÜ^FµÿíÿZÿp¸·.ÿÂÿÏ,u€HÿôÿÅÿÕF$ÿàÿ·ÿÃÿÿ)ÿÎÿ¼ÿÙÿ¼ÿð4F&ÿëÿÙ u†Wÿõ$z»©IÿéÿÈýôtÿÐÿˆÿÃw-tE§"ÿçÿë9w§Êż˜qK%!.X} ÁÐÙÍ¿©–ƒnbVYaw’©·»Ãþ°ª˜zW2*,W•ÍðãМd+ÿæÿào<oÿ·ÿgÿ›>Ñóš ÿÌÿíBŒ‚8ÿ÷ÿ×ÿà /-ÿõÿÀÿÉÿøÿòÿÆÿÒÿöÿÎÿÛ =Fÿáÿú:rxC /|§Aÿôÿì1žðÛpÿðÿŸÿÓ]ûT*ÈJ"`¦º²¥†cI9?F^}™­°®¤Ÿš‹‰˜¥·Á½´ºº­’x];-*Jr¤ÖäÚ¬Š]ÿýÿò0ü8ùjÿ×ÿ‰ÿÂ@¼à˜0ÿêÿûDz~Sÿìÿï'2ÿâÿÃÿåÿßÿÌÿâ ÿöÿâÿë>3ÿ÷;noD"_””_ÿñrÌð§ÿ³ÿ®%À)6Øy-.Dd~¡¢Ÿ‹qW@?Iav…• «²¹ÆÑÖÓÔÉ´¡¢ nQ?*7Y»ËΫS=7!Y±ÔNÿÎÿ³ÿþØÊs ÿó ez< -,ÿþÿáÿàÿáÿØÿàÿéÿÿÿìÿå-A2ÿø$czc:@p‰‚U +wÒä£0ÿÔÿÙ,±ï‘O3%:KczŒžž”}i]RYf{Š˜¦²ºÂÔßáØÖÊ·ž|YA9GOh’³Á¯ž}X>-:CqË»:ÿØÿ¶ÿÿpÆÆv&X~zZ, 2. ÿåÿÜÿïÿõÿÔÿÚÿíÿéÿíÿ÷ÿûÿöÿý6E( GbgbM93;Uv‚tNb¶îÎl ÿã‡ëä¯oG=4>H]wœŸ–„wyˆ“ž§®³¹ÆÏÎÆÆÁµŸ‡lI@QvŒš°®•r_YPRQhÀüðž(ÿÎÿн¨Z 9h|h?0/.,!!ÿúÿÜÿåÿþÿûÿèÿÛÿåÿðÿâÿöÿúÿ÷-L7*KcfR9-7Sit~oG.5h±Ò¸f ÿóxÄã䳆[:44Jaz‹–¨«ŸˆŒŒ“Ÿ­¹ÃÐÔÔËÇ»¨’ylr‹¢¤—–‹qXJLFSk’ÈÛÓŽ&ÿæÿã+‚¶²r/(]pgXA5.!$)$ÿêÿÚÿ÷ ÿíÿãÿåÿëÿíÿßÿÿÿúÿü<:$2LVL:2CZUQfy~i=*F€»¼-L™ÏÔÁiRFOXgq•¦¬¥£ž––¬¸ÁÊÌÍǵŸ‘ž§®»´œ|kf^\[_]l¯È­j!ÿîK»šf7,D_kX@GOA(%0ÿýÿçÿêÿåÿåÿïÿëÿäÿßÿÿÿüÿûÿù +A?&:ZcI,2IRXblyv]F:V”À¾‡BKŒÁØÁ¡xYQQaixŒ¡¶ÂËÈ·¯«§§©¬¬ª¬¬¥¤±¿Ä¼´¡Šwkiceft‹¦ÈÆ¥cJ‹¥ŒT2-;T^YNBGE&.4"ÿüÿàÿéÿðÿÛÿâÿðÿëÿáÿäÿöÿýÿÿ:M="*TmY5*8Naa[bn€^HX†»Ç¦e.&E„¶ÇÄ¢‚lepuˆ˜±ÈÙÛÝÐÀ¬™‘”‘”ª´»ÇÈÀª“‚z}}{}‚”´ÇÏ©c&1i•˜m;'HUSJBKQI3 ,J6ÿåÿÞÿúÿéÿÝÿÞÿâÿçÿåÿáÿæÿú "DN>!2WcV>/7Ocmjfw~iQCW‡°»™e<-Mx§ÈȺžŒ†ƒ‰Œ•¦¶¼¼ÄÆ¿° —–›—™¤´¿Á¿¶®£“†‚ƒ~~ƒ“«½Ê¶Z#6n˜™yJ4;M_ZMMQUO9%*CEÿñÿëÿöÿÕÿÜÿïÿæÿÙÿÛÿàÿÞÿþ#.MS98\lZ;.<]xueekspVGPs›¬¢{Q@It£ÄÒó ™™–—›–“ª°¯¬©«®­®µ»½¶¦—–š–‘Šƒ…’§ÃŲ€E#Ezœ—qL>SrwhTHUbYC-';MI-ÿó" ÿèÿØÿéÿûÿèÿÑÿ×ÿáÿÖÿñ %%#<QTF1,C_gYB7Eaqwus€†xf[fž²§‰dMWp™»ÊË»±¨™› œš£§¨ª««­³··±¬¤–’Š‚ˆ•§¼Ãè}S5>]„šwYIOaogVQT\ZH4/8KO9 ÿôÿéÿëÿòÿóÿàÿÐÿÛÿçÿØÿëÿö -7-#)?]hQ40C_m_G:Fd…~…“Ž€sn|š°²™x_UjŠ­À¿½±¤žŸ¦©©¦¡žŸ¤©¨©´º´¥œ–’‘‘Žz{¨¾Î¿¢yQHX~£ª‘iTT^ig[KEQ]WF61<II:"$1$ÿõÿíÿöÿÿÿôÿäÿÛÿÜÿåÿêÿÝÿùÿú  -1-)0I[UC6:NdmdPGXs}~ƒ„‡…ƒ}qp€–§¦šƒjeq¤³¿¼³£˜“““•–œ§±²²½Á¸¨ œ—‘Ї†˜¦µ¶°—v_Ud{›Žt]\glkf^YWZVE78BJH=- *-ÿýÿýÿêÿÞÿäÿðÿîÿåÿÝ ÿÿ  +53.3?MRI>=KetiVR\jw|ztr}†€vpv…–¦¤’{nt€•©²³¦—‰ƒ†Ž“›¨²¶¶¼½¶¬¨¤•ŒŒ•¤²³¬—€l\avŒ”ˆuc]es{qcbhmiZG65FUN:,&),&ÿïÿáÿäÿòÿüÿðÿÞÿÜ ÿÿÿ÷ !#&2;@@AMTNC9=ReeYRT^p‚‰†€„…ƒ€~€ˆ—ž˜‡vnkv…—¦«­¥–“•”˜Ÿ§««®­ª£™–—™¥©«¡‘okit‡“‘ƒxsvywoe`glfVD85>NSC-#&-/$  ÿ÷ÿæÿèÿóÿùÿöÿèÿÛÿÝÿýÿ÷&++'"(:LNIMONH@<?JTYXX[i‘—…„Ž’†~~„‹‹„wjhjz¡´º¹¯¦ž˜˜—™œžžœ™’Ž‘›¥©§›Ž‚uqs}„ˆ‰„~|„…qa^fnjWA47ALPG6('-/+! ÿøÿéÿèÿôÿþÿ÷ÿçÿàÿÞÿß$'#"-;@CMROHDDADP]a_\_iyŠ‘‹€ƒ‡‰ˆ„€~‚†…~vplpu‚“¡¬¬¦™™——šœ›˜™š••œ¥©£—‡{unosz‚~yy}{rklu{wgWJDGMPK@60/0/) ÿøÿôÿøÿûÿøÿìÿáÿáÿäÿß   "%##(-8IRNFJNIGP\dec`Z`t‡Œƒ}wuy„‹…{xz{}}xqjkp‘ž˜šœŸ¡ŸœžžŸ§¨ tortvwuuuqqz€yla`jz‡„ta[]YUSOG?==93/)! ÿúÿìÿäÿäÿèÿêÿß 8T`N/ /S^P@0$.IgyreL4*(?g‚€bG5/<EXq‚‡{pd^ZUOFCBLZl|„…‚ŠŒ‚pcXHA@IQ[gp{~ypifbcdhopj`^\XPCAN^_WTNB:=GQPB. ÿüÿòÿôÿþÿûÿêÿÝ -Ztc6 >al^<#!,Lr„~^>) 5Wx‚\.+FYgy~wida\WPJ@?CRew„„}ssuqjf`UNLOLOYiz‚„xl]OIEM\ge\YWVPB9=INQY[TH>:>CE;(  ÿ÷ÿôÿøÿýÿÿÿþÿóÿÞÿÿ?a„x<1YnlM)>d}…nK.%9Toƒy_<!!3Tkv{tqfSFDKJNYbda`^_[TJ=:@Q_m{‚†‚„{gRHLQ^ku}zueO>8>@GQZ_ZNA9>FR\]WJ=516DH<#  ÿöÿäÿâÿìÿòÿõÿüÿöÿáÿî.jˆ…Uÿü$g†tK9l‘qC7e‹€S@lŠ•†zhXK>;=FHPdtxneWH8'*E]tŠ˜¥¦¬ž…cJ>17CZq€ŒjJ0('6FU__]UHBGQSQOKG?/)4BC4ÿþ  ÿòÿÛÿØÿãÿæÿêÿôÿóÿãÿÞb“‡S,m•‚FGtˆƒ_7%/U}‹€X27cƒŠqX?012@Rev{zpnbJ1!$(1;J]ny†Š‘˜–Ž|mY>* &;Yp~scJ70-8DUkqfPC>8=O^dS2#8@8ÿóÿð ÿñÿáÿßÿßÿåÿðÿïÿÝÿñD†ŽZ+r›‰M'T|‘}T-6f’¦‰SH}£˜p63Pq†“‹„oZ>ÿû 8QfxŒ‹…vkc\]bmx~„xeF&ÿÿ Io€„pZB/,,>Ylo^O?.0D[j^B 5>-ÿóÿßÿèÿõÿåÿÞÿâÿêÿêÿÛ*v…Y*o™‚A#VwykN35U€›‘rI-3Ntކj;8[uˆ…kM/ )>Wn}Šˆqh`VLC?<?AJSap{…sX:$ +C\o}vhK(0QmsP*%>YjY/ÿü )% ÿïÿÜÿÜÿð ÿîÿÙÿÓÿÞÿìÿì^zS+o—ƒ=ÿû'TomP3*4\”¬›e0 6m¢¯œ]ÿôÿìJ¨­ª†a2ÿåÿÓÿäÿùEi‰—¤•bH6203358:852:F_—¨jD% =dz„kBÿû%X…Šq><juVÿùÿòÿú" ÿêÿÍÿÊÿÞÿúÿüÿäÿÒÿÕÿæÿórK ,t†B &ZfS=-*@`zˆwO39_ ’a19j‘¢uKÿÿÿéÿîÿó )Mm‹„{mb[SNGDDHOQMDA<4,$&*:Pj‚‘¢’l< ÿâÿÞÿíRxŽvKÿùMw~l?=M@+ ÿïÿèÿ÷ ÿìÿËÿÅÿÞÿãÿÍÿÌÿÞFÿåv¤‹E1\jK"Ad€wS*)h¢¼“Fÿâ J–ÐÊ£Tÿèÿ»ÿ½ÿÐ:lŸ¶Ç°]0  6Nbo~€xh`WK>4-#!,Ho’±¨OÿÉÿ©ÿËÿýC‰ž“UÿæÿÚL† {:ÿüÿáÿú FS6ÿÞÿÒÿë#ÿíÿÊÿÇÿëÿÿÿØÿ¾ÿÂÿñÿÙÿþ`§’Aÿþ&XY5;[ecL+">l“f+ :{¥šz8ÿ÷ÿ×ÿÔ)b£ÊÛųi> ÿìÿÓÿÙÿãÿü :Rcq‰˜œ•–Ž~eO8!ÿüÿôÿíÿÿI~¨ÏÁ—GÿþÿÊÿœÿ­ÿØ&uœ¨w0ÿøÿàBw‡^ÿñÿì7I9 ÿÝÿÍÿâ ÿâÿ¹ÿÂÿíÿúÿÊÿ°ÿ²ÿæD–šNÿúÿó!PZ,ÿõÿæ/U^I0#$D~›ŠIÿåÿüGž½¤Fÿèÿªÿ…ÿ¶ÿÿkÍ E5 °d$ÿîÿÓÿ·ÿ¼ÿÊÿî.AFNRQWk€Š™™wdN8%ÿíÿãÿÞÿû]©ØðË,ÿ¿ÿ€ÿdÿ© {àã©4ÿÎÿµÿÛ;”¨wÿäÿá0N<ÿÑÿ¾ÿÙ ÿÊÿ±ÿÃÿñÿíÿ½ÿ»"…˜\ÿïMV4ÿéÿü(FJ:#(Gfzg5 -b~y=ÿìÿ³ÿ ÿÖlÂð èÃ}1ÿúÿÖÿÞÿé7Pd|…‡xjWC88>76CT^cmpm`ZE"ÿüÿÚÿÏÿÃÿÜC‡ºðá°HÿÞÿ™ÿiÿžÖÍ+ÿáÿái†d+ÿõÿÚÿð@0ÿýÿÉÿ»ÿÞ ÿúÿÍÿ¶ÿËÿøÿßÿþe’fE[5ÿí"?<$!BefBÿòG†Ÿhÿ¨ÿcÿ†ÿÛ^Í ï¯Jÿêÿ©ÿtÿ…ÿ©ÿ÷?|®»Âµ´ª›eJ2" ÿ÷ÿïÿô0Pix{‹‡qH(ÿØÿºÿÿ¶ÿà=¶ B©ÿmÿ.ÿCÿØð¾:ÿÑÿ½Lwl*ÿçÿÉÿâ/ÿðÿÃÿ»ÿÚÿøÿËÿ·ÿË7wh.ÿüAQ: ÿçÿò&$%HXT1ÿí I{p2ÿÝÿ˜ÿÿÍ2›ÏÖ’OÿÂÿ£ÿÿ¥ÿÅÿþ7jš¦¤ƒcF:3 ÿóÿåÿßÿáÿàÿÜÿÒÿÉÿÇÿÈÿÂÿÈÿÛÿù %U~“™‰n3ÿîÿ¯ÿoÿvÿ wËò’ÿ‘ÿzÿ˜ ŠÊº[ÿâÿð*\`2ÿñÿÌÿÔÿ÷ÿíÿ·ÿ£ÿÌ ÿîÿ»ÿ¦ÿÒOU'=U8ÿëÿîÿñÿáÿï=SCÿùÿãNnÿ«ÿ{ÿÿÿ}Õý·PÿÕÿuÿaÿeÿ±[«ÕôæÛ®r4ÿõÿöÿþ.AIOG?) ÿòÿåÿìÿé-h°àúí¼TÿÓÿlÿ ÿDÿ†ÐAs pÿÆÿ<ÿGÿ°SÄÃ{ÿÄÿÎ Q_-ÿåÿ±ÿ´ÿâÿÓÿ•ÿ™ÿÌÿûÿØÿ§ÿ­ÿÖA)FYEÿíÿîÿÿÿâÿÐÿÓÿñ/ÿøÿÝÿæ =p_ ÿ¬ÿÿ¬ÿýN~Xÿ¦ÿKÿ0ÿ3ÿ|ÿÎ^dWÿêÿ³ÿ‰ÿ`ÿ"þúþåÿÿ&ÿYÿ~ÿ™ÿ³ÿÎÿó/9>/& ÿçÿµÿ†ÿYÿ%ÿ ÿÿÿÿBÿzÿÉJ|f0ÿËÿjÿ'þæÿÿRÿâvÌü¬#ÿŸÿZÿŽÿùe“aÿ¸ÿ°ÿé(AÿÑÿÿ¢ÿâÿýÿ¼ÿ‘ÿ˜ÿÒÿúÿÈÿ ÿÿË PqWÿöÿïÿøÿÒÿ½ÿÆÿÝÿü ÿÞÿ½ÿÊA[L ÿ¸ÿ¢ÿßIš”XÿäÿpÿLÿ_ÿßhŠÈë·w&éÑÆÒÊ×÷0hžÑó 5CQRK<6*ûÕ™Yṇ|ƒ»ôF§æâ§mÿØÿZÿlÿ¹`a@ÿÈÿQÿLÿÈI‡[ÿéÿ“ÿ‰ÿÊ3ÿ¶ÿ„ÿ¥ÿéÿòÿ±ÿ…ÿ¤ÿâÿóÿ¸ÿ‡ÿ“ÿ±ÿß%hq@ÿýÿëÿøÿÿÿÒÿªÿ©ÿÈÿçÿûÿïÿÊÿÁÿò!#ÿðÿ¦ÿtÿiÿŸÿõ$ÿ¼ÿ`ÿ%þüÿBÿ³h™R‡¥ÎG–ä)b•× 7IbbW8ìÝÈ¿¼ËßôùÌšFé†*ꨜªÜ*Ûm°á1ÿ–ÿ†ÿ¾:¨©Hÿ¯ÿ8ÿ6ÿ G#ÿÎÿ€ÿ‚ÿÂÿßÿ”ÿ|ÿžÿÞÿÔÿ”ÿ†ÿªÿèÿÛÿ—ÿxÿî3{_!ÿñÿñÿøÿØÿªÿ•ÿ«ÿÕÿåÿåÿáÿàÿæ<NÿÄÿ–ÿÄ*¬æÂ×PЊJ’ ¼’… i  ²  ƒ À ÿ  õ Ä ¨  M à ƒ I /  & * P € Î $ n ² » ¹ m " —  K Žõt8 ÷ãœRBº„’‚ÐNp Uÿ·ÿÿÃX7ÿßÿžÿ–ÿÉÿÎÿÿtÿ¥ÿäÿèÿÁÿ“ÿŠÿ¾ÿöÿúÿÍÿ&j”sÿÝÿºÿ½ÿÅÿ¥ÿsÿCÿ7ÿTÿvÿiÿOÿFÿZÿ‚ÿ¨ÿÀÿ¬ÿ`ÿEÿ{­:Ф{–“yS¿ ˆ _ Œ Õ]ý^‹1Íy• Vô„7Ö¢YÒ¿Åò <záYÐ:s¤ž¬fDz‘»ñ5m “ ¢ È Æ ¿]ÉI#ggweä ÿgÿÿÿhÿ—ÿšÿkÿ=ÿAÿtÿ¶ÿÓÿ§ÿrÿ{ÿ«ÿÜÿèÿ»ÿ’ÿ¥ÿØÿÿÿ½<óûtÿôÿòÿÎÿ«ÿ•ÿÿ»ÿÐÿ¶ÿ¢ÿ¯ÿè)du§(ì98^â  gldH/ZŸI ë×Châ_•û©#G,Ý cVpªÁâaÆ1‹Ê(t~cÓ>Vy]MáByÏOó" I ÙØÃ"«øbV|±”?ÿæÿ¾ÿäÿÏÿ›ÿ‘ÿÁÿôÿêÿÆÿ±ÿ¼ÿòÿívhT8zÿïÿÍÿ¦ÿŸÿ|ÿkÿnÿ…ÿ–ÿ ÿÿ›ÿÕ9†ä)Å™ÑÿALŸ / -4CBô‹ÖX”ùo Ý"Ÿ$t%Ì&Ü'Y'Ú(?(ç)_)¨))6(à(¾(Ñ(ò)(å(«(v(d(z( ((—( (Ã(ô)%)K)N)@)();)-(ÿ(…('Y&°%½$à#k!°pBãÝþò• … ˜EüؼÆÄ›4‡ÿîÿ¢ÿ£ÿÿŽÿEÿÿ8ÿ‚ÿ¹ÿËÿ´ÿ¡ÿÍÿúÿÿ ƒe|»¿òË”§¯â'p™»ä0 e·õo  m ×Mgå±G|‰@ !¸#s%&œ( )w*â,Y-Ô/n0¼1Í2}3)3Ý4á5½6d66m6-6"636S6O65È55S5F5C54õ4á4ç4ô4ÿ5 4æ4¢4B4 3¹3O2À271¤1!0~0.ç-~+=(ü&F# ÆO«MÎŽWÎ ” Ë Ý Ð ‰NA€ß*'cÒ^ÿ¼ÿÄÿôÿþÿÊÿÃÿ×ÿóÎ ³ ¢d]@B†±E£ù{lå T D r #ØŽÎq~eˆ²!#Ã%ò'ë* ,'.U0@23m4Ì6$7—97:þ<>?@ABuCDJDGDC€C,BëB¾BqAõAa@Þ@Œ@U@=@?æ?Ü@@*@_@@£@…@'?í?m>Å=Ø<ì<;>:Ž:9&7ä5Æ3¨0ë.+(7%„"¿ :ϰnÐl^(¨ ü Q ä žIß4ÔÑ@ŒýNÿûÿùÿùÿÀÿ”ÿ”ÿÁI < Ò ­ ² ˆ ž ˜ ˜ŒJè·]­±ê\” 2“"à&)+¸-ú0J2™579ô;÷=¿?@dAÇCVE3G7IJÂKþM*N/O“PzQP¹P(O1NtMÔMOL¾KúK/JtIýI¡I}IKwKdKvKJ€IlHQG#FE.DˆC–B]@s>•<9ƒ6ƒ3Ž0„-R*›(H&ˆ$­"î üHÐ¥›/LýÏÛ5• Œ ‡°OËÀûŽ› ÿåÿÚÀYÇ€ô»åØštÉgŠi_ö}\ÙM Ó"#x$Ï')Ò-00A35º8;:Ñ=€@XC EµGÃIŠJäLLMæO¶QÎTUòWŸX³Y³Zs[–\5\ƒ[ä[YðYXCW©W V4ULToSÖS^S&RËR®RžRðSXSþT£U4U§UïVhVyVSUT½SRQ{PŸOsNLJGˆDÒA¦>Š;K7Ò4Ý2S0˜.î-i+“)º'ñ&{%i$"P×6«¤¿‰† A c ËÛ Qò9_ÿãÿ„*x%Û"+Æ@oŠ} !#)$™%–&z&ë''Š(¢*)+Z,Š-¦/%0º35¾8½;i>@¢CTF HÖKÆNoPøRÚT„UÖWHXâZ¥\ƒ^v_üaDaìb‚bác cñcôc4bRa9`K_ž_^¦]ô]+\h[Ù[l[1ZÔZ¤ZyZ­Zþ[š\0\Î]T]Ý^_#_~_J_ ^P]š\•[·ZaXáVÉTÄR3OLmIvFSBî?â=;/9‚836ª4÷3 1R0.Ù-c+9(­%í#¢!€_ÙâÛLôi Î ©Gßù 5J0b,(ñ'p&W&Ø'(4)O*ü,Ï.œ0A1F2 2f2½3|4¿6>768C9Œ;W=?iAáD¢G2IÖLO^R$TäWËZQ\£^S_îa6bšcëeFf†gÛhÏi’içj5jwkkZkKj‡i§h—g§gfŒf7e¯e!d›d?cücÓcc\c"c-cUcÊdAdÑeHeÓf‰g)g®gÓgóg©g`f¨fdÂcLa>_R\ùZŽWÂUQùN°K“H¢FuD‹C#A§@ ><=:Ç9m8 63³0ò.o, )î'^$2 ¤~nZ P é êÚÔtî@t;Œ7¸4L2ý22³3 4+5H78þ:è<†=p>>‹?/@*AWBšCpD‹FHIºK¦MºP%RŒUW®Z5\¢^îafc‰e~fîhbipjƒk:kálJlËmmZmymœmÞnjn±nªnmMldkŒjòj…jJiëišiSi,i h÷hØh¸hŠh‚hhÝi>i¼jjŒkk•l lWl¥l´lÇl{l=kXj;hƒfëdùc`»^s[ÔYV9S€QAO*M”LJ¢HëG-E¡D!Bª@Ù>×=Å>‚>ß?üA#BýE3GBHÐI¥JbKKðMMøNþOáQ1RïTàVYWäY¶[ß^`=bzd‰foh,jkÕm†nËppÃq_quq€qRq7q"qqq!qMq¤qÁq qp‚oÎonˆn mèmšm^m*mlØl¹l¢l™l~l‚llÞmDmÌn8n®o3o¼pAp¬qqOq‹q‰q q2p˜oWnlfj»h×g ebÔ`‚^2\ZX{WU³T5R£Q)O’MòLJ9GúEŒBà@”=Ò:·6ã3 .ó+('"Œ«?(ô˜U+P¬MYJ”IÝIqJ=J•KLÒN»PõRîTJUUíVÀW³X‘Y6Y÷Zæ\:]À_8`8aFb½df&g¿i\jÁkûm!nvoÓqArTsNsœsÅsisr r8qöqÇqÅqÄqÓqöqæq­q.p»p)o„nònn8måm m\m"lØl±l¡l¾lËlÿm4mªn;nìo„pp±qdgc‘bb`ò_I]ë\eZÖX­VfS`P_L¦HÎDy@>;Î7I2Í..*G&¼$&!¥d²aç`^Ù__P`3`ža‹bèd½fˆgòh÷ijškZkÚll_l¼mHmÅnn7n;njnäo„oðpOp½q2qrrØs·t“uuruMu%t§t%s‚rßrXqéq§qYq+qpùp¿pFoÆonKm”ml§lJlk¶k€kCkMkwkål=lÅmNnopqqÙr˜ssƒs¹sõtt sòsÔs¯s‘ss–sxs+r…qÞqppoÀonGm@lkjAi’i hˆgÅfÃe‹d†cpbƒ`ô_\PY‚VRNJuFAµ=v95d1å/E,ÒjŸhØgîgzhh§iŒj jãl.m¹oppéq„rSr×ss ses°sûttsÆssts†sšs|sMs&s1sLs²t9tÂu+uIucu,tñtqsãs?rªr.q½q`pùp¢pfpožnönMmŸlîlmlkÑk—klk0kjíkkmllm!m¹nŽo†pžq«rŽsnsötmtƒt’thtBtsìsÍs–s‹s³sôt&tsìswrÿrkq÷qVpŒo˜nmÜmHlÿlÆlqkãk!jriÈivhgCdÕbG_ \X•TÅP€LNH7D@‰= :N7Óm$l>l l-löm¯n}oo¾pÏqórÔs|t6tÉu[u³uëvvyvÅvævÇv­v{vLvuúuÀuct÷ttbtatštÕtðtãt©t‰tKtsŒs rŠr"qÉqgqp–p.oÚoonän>m›ml¡ldl1lkýkåk¾k¹k¹llŒmCmånˆoo¼p~qQrrÐs‡sòtHt=t%sØsŒsSs=sn-mûm¡m0lÈlÅl]kµiïgÓebÁ_ü\âY7U‰QàNYK2HE]Búo5oo|pqqÎrssštsuEuÔvDvâwuwèxEx²yy¢yèyùyÈy·yyayxÇxUwËw;vºvhv6v uÆuYtâtdsýs—sr¨r>qêq qMpâpgoðo†o$nÓnnuct sòs2rŸrqäq½q¸q¥qƒqMqpépãpêqqVqxqnq3qpÐp†po®oInÙnÊnÛozp1q.r-rñsŒs´sãsªshrÍr*qep•po´o§ogoaosoèpcq,qôräsÌtÊuÿvÛw‹wXvÓuÜu tt!s¿s+r¢r'qÿrr'r)rqÝqÀr qøq`p4o/nm=l'jÇi:gåfŽec”b)nˆoAppêqŽr"rzrÎrþs$s]s·t)ttèuOuñvÖwšxx"x:x(xxxwòwÖw¿wÃwÀw»wrw v^uºutPs£rârcr rrrr:rZrkr}rr¾s sWs s‘sJrÌr€r*qÆq>p¦poqo9o(o²pPqCrAs s¤sËsþsËs—rör=q@p,oWnÃn›nRnan‚oovp4púqõrèsøu6v-wwvÜvuxtôt­tƒt2sÐsassss5s.rär¡rÇrÎr‡qÆpép oƒnùn&m1lfk˜j¼iÇhÖnnÛo®popúqqÈrrqûrrRrÄrýs?s”t$têuuëuäuäuºuuju\ulupu›uòv?vlvFvu›u%tsÊsrcrqÊqòr rlråsosÚt'tlt°uuju¤uwut–tKsïsqrËrq€pØppŒq q“rdsHsítVtItJsös¨rþr>q9po,nfmÿmzmmmŠnn¥oip&q qòstCuPv7vqvxvu–u@u,u>u9utÍtˆt\t^t„ttFsøsþtts·srVrqíq…qp¤pCoáobnÖmÆn‰o/oÐpDp¾pøq"q pÑpÀqqqq·q÷rgròs`s©s sŒsPsrïrÛss+s‘t"t¡tìtëtÿtÆtxsÜs-r€qãq qqq®qær~s@tt°uujuªvvPvwvTvuÏu±uqutdsÆsBr¼r r©s'sªtZu u•uÌu‚uAt¹t;sˆrËqèpøp o`nÞn9n nn™ooÇp^q q±rŒs¢tœueu°uäuÅu¤u’u«uãvv,v uðuÄu®uÅuÐu¡u\u4u#u;utsÓssYs rÀr~rDr qËq~m­nQnÅoIoªpp6pEpo¿o¤oûpkpkp_p’pöqZqªqíqõqèqºq‘qƒqzq´qþrˆs/s¶tt t;ts¼sroqÑq4pïp»q qjr3ssðt u ulu³vvavv«v±v¤v¹v v^ußuYtãtotet…uu¦vXw!w‹w¹wQvæv&uot”sºrÝqöqCp±pWoÖo oŒoÝp5p¸q*q¤rrstpu,uuävv#vMvŽvÞw5wdwvwTw+www vñv¹vjvw vÿwFw”x&xÄysztÉtEs«srËr­rÐrÛrñs sss#s%sZs®t*tˆuu”v=vöwkw°w˜wkwRwpwÑxx•y$yÇz„zØzözgyÉxÃwËv³utssr×ss+ssätPt©tÖtõt÷t÷uu!u[u”uÞv vwvëwRwŽw·wýxAxvx¢xçyxûxÓxèxÈxPwÅwwmw1vÄvu©u›uåvv0v>vGver1rDr8r!r#r\r‘r‹rordrŠrÛs.sZsPsSsrµrSr?r-qÏqmq'q2qCq°r:résxsût‡uu‰uÄuäu”u%t—t+sësºs›scs4ss rçrárçs7s t2tu.u÷vÀwvwÀwÞw©wrw^w}wÔxxgxðy zfzÑ{ zzy;xpwxvfuetisès˜s½sÊttltÑu*uSu`uQuYujuvuuªuØuývIvÃw3wcw{w·xxTxªyy\y_y4yOy/xºxw wUw'våv?uÓuÙvJv›væwwBwns‡ss…sgsvsÌt"t&t ttKt†tºtðtØtœtswrïr§rlqíq{q$q)q:q©r$rÊs]sòt‘uu¦uØuìu‰u tms÷s‹sr’r$qîqÊqÔqÀqër.rÈsrt9tÔuŠvwfxxwÿw¦wZw3w.w]wkw½x?x÷y¼z*zqzywxpwˆvnuwvövÀvvu¡u®v/v™wwaw£wçtÐtÅtºt¡tÆu:u©u´u£uÔvvIvcv¦vƒvu9tzsÕsXrôrfqùqqœq«rrzss™t+tÍuMuÐuâuÍu>tªsésCr‹q£pípopVp1pPp_pËqSr7s#t"túuÛw wêxyxhxRwûw¬wrwKw\w]w±x3xây–yîz6y­xáwtv$t«s4qÏp_oNn9mëmÝn‚ooîpÏq¨r\rñsžt-t­uuRu…u¡uÜvZvÙww1wTw¤xx®yOyµyìy×yëy¬yJx~wwv§v_vPu¶u[unuÿv}ww{wØx?uŠu‚uŠu”uávmvðww$wywÐwýx xYx:w®vÂvuvtÜtesîs§s[sOsRs’sÍt.t—uuwu«uàu†túsòsqßp°opnml‘l°l¡l÷mLnopIqžrøt"u8v”w‘xDxUxgx&wâw¡wtwywzwÁx0x°y7y>yxx7wÆvtqn'khewbÆ`ó^ü^¾_+abÄdógilkÅmóp q½s.ttåu\uÈuývIvyvžv¦vv«ww·xQxÓyRy|y”y?yx2vÙutñt¹ts¨sqs¼tt°uuˆv$vv;v‰vàwjxx©y/yžz(zƒz¬z´{{z§yíyŒy4x›x+xxwëwÀw¨wŠwMw%w?wFw1vuätvr×p³n¾lˆjg¿ekdc8crcƒdUe(f¨h0j@l‰n¹pxqïs¿uDv¯wSw¹w‰wfwDw^wwowVwpwjwŠvÂu¾s4pSlthÀdêa]Z!WéU¤U«VxY)[€^zaWd€gÒjÿn&ptrvsˆt­u:uÍuñv uéuÞuÅu‚u‡uÖv~ww xCx—xÆx€xdw¦v_u tLsòsSrÝrlrmr£ss\sµtBu³uëvTvÄwaxxµyhyøz€zÁzßzå{<{KzïzKyóy—xöx†xxx”xkx+xwßww[w„wyw3v&us#qnyl iRfFc|`Î_`^Q^Š^¢_`kbcÛfNhõkƒm”o_q–s{u;vv¬v˜v–vv£v¿v²vv£v{v…u^sÜp‚lÅhcš_-ZµV¹R‚OÌM'M^N{QÝTÐX€\_ñd*hHlYoHqÑstpuu³uÆu²uTutættrt·uauævwvGuÿt¾swqLo l0ivfdbú_í][”ZeZ‘Z§[¤\x^8`6býeÚh²k&m`oþr.t%uuêuúvvvv vuâuëužutr>n@iÆd5_YþUPKÅH”E‰EÒG"KN™RòW[š`”eyjSmÍpÅr,s¬t>tëtçt¸t9sås s5s,sptt£uFvv§w vÿwv—u²tžsès}sr®qõqnqGqdq7q0qgssÈt&ttæu@u²v`vÒvõv²vmv8vSvZv)u‘tÚtsos6sOs‰sbs/s#sWs•sÿt±tÕt›sDqðo£m>j/g6cá`2\ýZ X’WUW‚W¤XÃY´[¨]å`ïcògiål’o„qÞsüuvv-vXv/vvuùuÐu´u"tàspülrgM`ÌZ›T¯O J#D­A =‹=Î?:C¿GÑLâQŒVÊ\‡b8gâkðo_pír˜s&sÌs¬sdrÐrir$qÂqËrrËsattòuvv1vXuùuOttsØsvs7rØrqYq pôp‹pGpEryr³réss;sLs|ttLt.s¥s rÇrÅrÍr°rq.pEo¦oŸoÐp$pp ppwqq×r¾røráq¤pnn/kØh¹e§b*^[[WúVbTøUU&VdWxY©\&_ubªfiPlYopqÏtuGvdv¥væv³v‹vDv%uÔu{tŸtr"oÓke“^…WŸPðJ¥EM?c;7±7ò9t>bBèH‡M®S]Y‰_¡eÀj!mÍooqoÎooVo€o¹paqrrÿs¾tetªtîtÊt…ts·s‚s“sjrÅqòq„q%pyoæoqjqdqE>Û8=40&0½2¡8C=zCÚIÌPV\Çc)g´kmmooÖp}pGpo•o+nðnÈnùo o¶pyq{rqs5sßt-t{trtSt sÆs¨sÛsÕsSr”r/qÉqp‚pq+pûpœpo{nÊntn¨nÂn?mYl„ll lLl‚l4k?jWjjsjêk‚kêl!l!lomFnEoo/o$mþlÀjhYeAaÿ]úY¸U­QÊOALëL_KðM NP¸SÆX \1`zd¼hRk’npìrêt’uAv$v4vuAtÁsésq›p‰nkEfE`æZSLE+??95;12P4\9ú?ETK8Q@Wj]+c.gvjëlunXoo±o„ocon¢nonbn¨nÔofp,q5r4ss°ttVtathtGtttKt]søsIrërzqËqp qŠq/pžoÞon,mÃmÜmöm€l´kñk“k—kçl3kök j&iÖjBjÁkbkÒl llGm mön´n»n©m‘lVj:hReŽb‘^ËZÐVúSFPÍN‹MçMLN3NëQPT7XU\D`KdNg°jÅm#oËq«sJsútÍtÇtwsµsXr»rp¦om1j–fa(ZöTÕN­H•Ct>#; 7ò8Ã:Ñ@ DÇJgO×U@Z _‚d¶hdkRlnn±onñnÞn£n_nHnVn¬nàoip$q rrás€sÌtt;trttˆt•tþu9ut‰tQsôs[r­r*qòqjp¥o¨n›mm mml´lkQkkk„kåk¬j¼iÃieiÆj:j×k@k}kkâl±m—nJnSnOmblQj~hçfˆcè`…\ûY†V*SØQ·PüPAPçQjSV9Z]žaDdèg÷j½làoPq r–s&s³slrîr;rq«q2p ol½jCfa \V»Q[KåG`BÝ@f=Ç>ž@£EIæOT Xü]©a¿f5iRkÀl®màn9njn0nn mðnn.n‰n»o2oÞpÉq¶rorõs5svsÂt9t°tîu6uØvLv]vvuÊuKttrórQqqpYo3nm~m[mnmlŒkèk¥kÕlEl£l]kpjkiïj&jzkkVk˜kÃl9mmønªnÏnònWm l;jýifÞda ^[4Y%W5VsU·V?V±X¡[^]aŽd¯gÀj*lTmÞo¬pÛqèrrq’pýpvpKp,poEn‚ljrfßc^CYµUPALEH|F‰DMEFìKWOdTX½] aduh+jªl›m9n n!nmÂm m£m¬mÝnn_nznÒokpDqq¸rrKrƒrõs¥totóuvgw$w‰wwÑwÁw|vêvqtsjrxqLpnÜn3mõmým®m9lžlcl¥mmqm"lHkMj½jÐkk‚kÃl lFlÕmµn¥o^o¬poÏo…nm©l jMgée`bÃ`<^S\v[¨Zí[q[ê]Â_øc fhÓkgmnoTp[pÝqFqp¡o÷ononÍn§n¨n7m¤lj^grd@`?\nXjT PmM-K–I™J@KíOûSÄX)\v`Qcçf´iÆk¹m@m¢n,nmØmwmFmTmtmµmìnn nAnËo—pSpÐq q*q[qîrÈsÕtu`vŒwžx_xÁySy‚y€yx½uvtÍsèrÔq³p–oóoªo¦oanûnin'n^n¿nðn—mßml[l?l^lÐmmYm”nnÚoµpcpÇq>q@q5p}o»nDlËj²hee÷c¥aÝ`_L^¥_@_Øa¶cÜf¿i«l%nXokpNpMphpošnën-mm'lõlœlql˜l‘lYkTj\h@eËbp_@[ÄWðT¿QôPžNÜOqPøT¬X/\6`c…f·ik”mn0nbn³n|n'mºmvmvmmÅmêmømÌmçneo0oàpPpp›pÑqsrXsqt1uv^w¢x™y:zzsz¸z‹zmv·vusØs˜sˆsjs)r³rQr?rCr%q¿qApo±ots¿s:r·r qp‹pjpÑq'qpqŠqŠq›qÂrr2rXr q p·oÙnœmfkÇiãhf]eUdWd cædŽeKfâh­j·l³no6o2o+m­k¦hýfšdíczcbËc6cUd-epg1hèj#kQk6j‘ig¾fiecócb½b&bÈdfrh¨jÞl÷nppéq³qÉqÉqVpøpmoÔoHnËnnintnn‚n2n4n¥oŒpdqq}qÏrCrösÛt«uu}vsw–xgyyùz¾{x{ä|_yx¢x2wËw‹wXw;wvçvÃvuuÿuyu&tÆtDs™rørEq]pÌppÒqqQqlqjqcqsq´qèrq¿qApZo—n‘m}l&j§iTh'g˜gg?gEgâhšiæk\lßnToo·o(n‰l†jgd*b`G_Ð_x`)`šbcØfThôjælflzlEkZj¾jiXh»h(gõghi+kl£n5o»pÜqôr}rÿrãr¦r q’pøpFo›nøn¢nqnvnnnPmÞmÌn4o"oþp¹q+q‘r'r÷sñt¸uuRv"wwÊxfy0yòz¤{{Ÿy[xùx¬xpx_xax_xGxwÂwJv¶v utütGsxr»rq$p”p;pWp{p¸pÛpåp×pàq$qmq®q€qpUo½nñnlókÞkjBjiÛj jn1nm»mlçm7nnío©ppšqSrPsrtLt¥tæu¤v†ww­xpy0yØzKzáx¥xQxxxx:xBx4wÙwyvÕv#uZt®s÷s'rQq‡pÕpo‘o4o;oRo‹o­o¾o¸oÇppMp£p¤pgoÔohnÎn mCllk®k›k¤kîllqm&n?odpRq2qJqfpEnèlFi€f)b¬_ç]‚\«[Ó\œ]‰_åbae”i k»m³nToo o,nán¬nPmÊmrm&m˜noo­p”qqrus[t?t¡tétƒsósryqÀpÖoân÷ngnmøm³mEl†l7lmmAm÷nªoo¦prq‰rÃs²t'tmuuÛv^väw¥xcxüydyÿwÀwkwKwVw”wÕwæwÙwjvóv3utts®rÇqàqpDo›nãnsnn n9nonˆnn‹n”n²nëoCo_o8nÁnmmøm^lØlvlZl2lTl lýmmAmÂnªo¬p‰qMq`q…pzo.liÐfhbÒ_Û]O\,ZË[E\@_aÃe9hækÑnop6p³qpÿqp¢oöoro:oµpfqQqÚrwsdt]uOu®uØuKt¤s¾s r^qYp@o6nn"mòm m+lell&lâm‡n6n¦o

v–wwOw¨w¾w¾wgvìvyvMv?vuÃu±u‰utµt«t¥tpsßsr`qÖqÀqêrqÚqdpßpÀqq®r-r²s.s¹tctöu„u u”ut–súshsrÔr§rGqÁq°mÞnœoo¢p p`p—pìqq(qq?qVq>q'q)qeq«rr§ssnss§sxs rˆqýq~qpÁpgp4ppoõp pCpÅq2qär²s°t¬uvwvöw`w/väv#uxtƒsŒrRqo£n5m#lJkàkUkjÇk kplŽmÒo^pÃrs2t=unvUw wjwåxxQxwÍw-vuîuŠu]u"tùtàt¶tRtt>tbt0s rùrxr(rMr®rôrÎr^qøqßrr|rÕs=s¢tt¡uuu»u´u5t¢sîsarárxqÑpûoÎojrkålÏmÑnyooqoépBp‡p¼q qKqhq~q qïrRrÛslsßt?tVtrt9sês^rÓrMqÝq‹q*pñpÓpÒpžp¬pñq”r"râs§t‘uvpwIw¢wãw„wv7uutosNrpæo×n­mæmSm6m mm"mwmÖn¦o–p»q½r¼sÉtÆuÊvˆw1w€wÝwÚwÎwSv½uñu-t”tsÞsÄsÇs®s‰sKs=sŠs½sŽs rr1rrrssfs]s rÕrÒrðsBs†s×t!tvtÝu8ušu¨u›utus¢s rIqp'n l‚j×fæi)j§l0m%nn˜o=oÅpLpÀq9qŸqürKr’rísasêtvtàu>uPuYutÎtKs¶sr£rEqÒqŠqbq^q"q0qrr)räsÐt­uv~w=xx6xJw­vòuåutríqËp×p%obnänwnSnn7nbnîovpOq;rKsFt:u>vvàwRwÁwÒwÝw‘wXv·uÛtØsòs]rár¿r­r®r|rZrSr‡rêsrýr–r1rr0r·sksìsûsÂs¹sÖsÿtBt€t½tñu(uxu°uÞu¿uŸutksyrÈq±p…n{lHi9f`ìd)fhÒjXkÏlÀmÀn‡o^p p¡q q·r>r®ss“ttžuusuŠu‡u.tât_sÇs(r¨r:q±qNqpøpÈpåqqÂrsvtbu:vvw2wvÞuÞt¸s[rHq=oónÙmïm}mlôlÄl£lXlWlƒm-mÙnÖoÕpôrs t9uußvHv²v³v¡vDvut’sxr‘rq«q˜qƒqpq&qq"q~qÜr r qÓqˆq†qÃrls8sÑtsît tQt¥uuZu–uÇuçv'v2v"u²uQt~sr3qoOmhjogWcC_Zª^êb5egg›iÃk0lŸm¯nãoÇp~q qÎrsssútvuuvuùvv u˜u=tºt*s”srrqˆq"q põq0qjqúr™svt\u3v vqvÓvfuÑtlräq"o£nAl¦koj]j jjžk-k°kÝkþlJlàm‡nYooëp²qŠr|s`t9tÇuNunu~u:u&t”s•riqŒqp¨ppVp6oáoÀoápGp£pèqqpÖpÖq1rrâs•sèttNtÁuIuÕvOvœvßv÷w0wvÓvuvtDrôqoZlÄiõeæaÇ\¡W¼QáVØZï^Üa»d˜fŽhqi¿k4l:mm¨nŠolp2pÚqr&rås’tUt›t™ts”rýr|rqq%p…oùo€oeoco¯oípQp§q3qêr°s‚sÍsûs.r2p_nƒlcjfhƒfvdíc€c"ccÈdªeŽff8fzfÖgGgähwi.iÓjÉkðmZnÂoþq%qÛrˆr¼s r²qñpêp3oÄoRon÷nàn“ninonºooVo¥o¾oƒo…oópÞqÐržssbs¼t=tëuv6v‹v×v×vïv˜v9u*tr&p&mhjðgic^lYJSJM~HÔNZSW“[^…`þcGdÄfkg‹hui9jDkll…mnŠop“qŠr ss1r”qëq1p¼popo«o ntmùmÚmÕnnKn†n”nËo?CÑH¸MaQTÜW•Z[]=^W_Q`CapbÞdPeÎg:hžjkrlämŽmâmFlk k,jýjÇjkiÍi0h¿h¢h”hºhèihÓh¾hóifjjiþh¡fãdLa÷_n\ÝZHWŽUWS]RBQ;PÓPkP>OîOºO…O˜O–P6PþRšT V„Y%\]_“bŸegÒjkZl®m m,l¯lCkàkk«kìlkêkžk…k kÂkðll%l lRlìnoppîq`q¥qîr”sBsÐsïsþsˆsr q–oêm¥iúfub-^LCFçJßM¼P\QîSTUœV¿XY¼[|]`_&`êbÔd„fIg(g¶g(fVe]dßd¼d£d]cµcb•b„b‚b©bÐbÆbjb#bBb‘bìb®bQ`·^½[çYQV|S–P¬MœK-IGáFÃF(EtDçDACÉCJC;CCÞDÚFÚH´K‹N¡RzV]Z3]æ`îcêeøh hûi›ikiHi,iTi¸j$jjjwjbjwj‹j‚j€j•jÂjÏkk~lKmDnAooƒo§oÀpHpÙqMq9qp3o@mËlêj¾g±c%^óZU}OãIãBç;ø4Á-˜).U307Ë;€?GBD˜F"GƒHnIvJ³LMÔOµQÉS¿U¸WÛY¼[ª\§]Y\ã\'[.ZŸZqZlZ>YšXâXnX^XcXŽX¹X§X>WèXXOXyWôWXUžS˜PÌN3KZHnE…Bx@>= <;:É:9<8ƒ7Á7Š7T8#9';;=!@CJG`K‡O·S¹W'Z]0_èazb bðc`cãd¹e¦fofúg}gÂhh hgýh&h_hqh€h}hÒi„jTjökjïj¬jØkkJjæjThígleid ac]»X´T5O0J+Dj>„7ú1Y*¥#þ~#e(&,®0`46­9O:Û<<Ï=Î?@qB>D/F_HqJ†LÀN²P³Q¼RvRQaPpOÑO•OšO…NõN>M½M•M†M³MôMúMŽM*MTM•M¿M#LXJ{HhEÆCh@á>;;‹8º6~4”3y2h1¤0Ã/Õ.Ä-Ê,Ä,W+û,²-Š/‹1l4‘8 <~@õEeI”M1PÒSÐVïYZÁ[À\õ^C_ÏaVb¹cÂdÚejeÁe·eÁeÚf/fafHeóeeŠff›føf½f+eoedèdÏdca^ñ\qZ¡W—SyNIuDS>ç8õ3)-&¶ „mÊô7"^%Õ)+€./†0‘11ù3/4t618:<(>9@_B;D-E2EáE}DöD$CˆCCCKCGB×B8A¼AAZAuAµAÅA]@öAAMA†@ÿ@,>RA‘EH1KuNP2QÜS¾U­W¾Y¹[³]7^¶_g_½_¯_õ`I`»`Ç`x_Ï_(^å_&_}_^ï]ô\À[ñ[PZçYØXKUÖSvPÁNŸKlGHB=“8›3.-}(2"í4áÓ aªLø) ("$ $ò%V& '.(n*(+Þ-è0234\658/9D:9²9E8‹87Æ7Ó7Ü7ƒ76®6}6I676K655¿5H565H5m4é42D04-º+…)l'<%N#\" ü xéhÔ )!ú*l òqæ¡"œ&‡*r.v2=5½9<<@C/EéHJmLªO QQS¸U…WWÇX,XJ;×9-6´3l/¥+&Ì"5I­£ Ç Nx–¼JE ; ¹ Õ?>ä0n1l3®hQhƒS!$"$"æ"Í"¢".!×!´!Î!æ!³!_!.!! Ù ž +’åÚÒZ½]ÛÓÜ¿ŽŸÁ • ¢ ? Ï u  z ö Jl°ûEq ~ € £½÷¨1Ã"H%Ð)“,õ02}4ï749­<>g@'A£BbC*C‘DDIDˆDbD)CBšAØA°A‰A?â>?ô8hœš § ü J ‹;¨·³©Ÿ¥´ÆÅ­‘˜’~* ª + å È ° j  P ¦ Î þÏ|(B¶†ÿôÿ}ÿþÅþ]þýßýþþþÀÿX¤Cgà E Ò` ÚxÚ÷%!Q#“%Å()Þ+«,Ö-ê.h.â/ /s/e/.?-y,µ,A+š*²)F'Í&$€"Ú!:‚îàgžÀŽ * +…†OâÉ‚ÿãÿÁ%ÿìÿéw³}Z¼<HWšI.š¯rJÖ1H_ifn—º¿¬£š§‹DÙ€<â¬DöŸ+œ„0õ Dç™P!ÿòÿßÿÎÿàÿß&|QF’Ãjï y I1/ âÇÆÉÝ !Ë"ç#Ú$M$ä%/%%i$ý$5#¢"ü"X!y ’S n°õ~× Ÿ &   sZ®­2A‡ÿíÿ÷ÿÄÿÍÿ¤ÿDÿÿsÿÆÿqÿÿIÿ´ÿíÿøÿËÿÙc WZOlÚW¢ªŸ‘¯Üõ òùC`=õ…)Û]. "*)  öÞÏì ª¹ÈÄÒï9÷N¶¹PIbÕ 0 Ç _<,@}IÈŠ@ž*Í·‹ÈçûjVš» )  R-__]6ƒPQÿ´ÿBÿdÿÈÿßÿÀ ÿÂÿzÿÕA)ÿëÿãn›N-”çîMV« :åà0KF'íð>—´V÷šQ3 /`²Îãø=]kp”¤¬³°°¢ŒpVL?ZfÖlqe¢Ý`  ¶ ¿ ð`³#p­­¿vE‰îÆC  } þtâÅE² +V¬H68#ÿ ÿPÿ¤ÿíÿ‡ÿê:ÿåÿÿ¥-#ÿâÿÄ%{Pÿëÿ¨ÿµ`$ÿžÿ(ÿÿ‰ 2ÿþÿ³ÿ†ÿ¥ÿñ&3*ÿùÿ¿ÿ‘ÿgÿƒÿÐ4|…{=ÿþÿÂÿ¡ÿ“ÿnÿhÿzÿ·ÿ÷5c„ªÐû4Ef}„xvaIÏ|.ÿêÿ›ÿqÿAÿkÿµ^áÉÊÒ¬yÜ]Ì=˜íóä€÷„fgqêÀ‰ûÚµ(×ÿ÷ÿòÿîÿiÿÿTÿÁÿËÿ’ÿCÿ6ÿ® ÿ¿ÿwÿÅ&ÿÐÿ°ÿÎ/n*ÿáfŽkÿǜʅÿòÿ”ÿË[ÉÕ€FžåûÊ–JÿóÿÏÿÑyÕ")Ê¢{E $CXhz…Œ’›ªÅÔθ°¢ŽnM(ÿãÿÀÿ¼ÿ¾ÿõ4¡ ˆ|ÐÕ¿czÅ<œØÆVù÷^¬‹éîY1u†ÿçÿë9&ÿÝÿuÿWÿÂ!ÿæÿ{ÿdÿŽÿÓÿéÿÿÿ—ÿï("ÿÅÿ“|fÿðnŸ6ÿ¾ÿ³žÖqÿÑÿvÿ¤6ÄÜ€ÿÐÿéO§Õç¬\ÿµÿ¥ÿ¤ÿëI­ñíÄž~aRGE?=8;CSgqodb\QA2!ÿú(U„¥¹Ùßâ©Nÿâÿzÿ^ÿiÿÇ2ˆ¶”hÿ²ÿÿîoØ»ÿuÿdÿìµsÿŒÿÿAÿÆ(ÿ×ÿVÿ?ÿ†ÿû(ÿºÿGÿ{ÿßÿëÿ¹ÿnÿ¸ÿ‹ÿ©Tÿöÿ–ÿÑB{dÿÒ.‘vÿ«ÿª5ÈåxÿËÿqÿÂvýÿˆÿïÿ²ÿëC´ ú¤Iÿìÿ„ÿqÿ‘oÐ.G9&ùÉ›xcH8*+/9?FOYahnv€‰ºý<WZ4#ì 7ÿ½ÿzÿ[ÿ§õÿèÿ±ÿ{ÿ̈üQÿ|ÿ:ÿÜËBïÿYÿw~yÿíÿpÿ£< ÿÿ\ÿµÿåÿˆÿtÿœÿrÿçY)ÿÈÿ¯ÿëhªOÿàÿòE‘…ÿþÿŒÿž'Õ›ÿâÿÿ¸Xö·CÿìÿÓyÙ±Cÿßÿ’ÿœÿÈ%q²ó0'÷Ú¶‹fJ>20)/@Wdrƒ¼Úî,DN'ñ¡_ÿÅÿ“ÿxÿ©ÿðN«Æ½`ÿñÿ‹ÿ6ÿTÿ¼GáÿÞÿþëÿ…Œ*Òÿåÿ7ÿ-ÿÆq|ÿœÿxÿéT$ÿ³ÿwÿ‰ÿê!ÿÂÿZÿ€2ÿÐÿ{ÿ¶@ÿÅÿ¬&£”4ÿìÿñf»wÿêÿnÿˆG 3¬ÿåÿtÿ³tIcÿéÿËÿì\¶ÿJH$´3ÿÐÿ˜ÿ²ÿÎK‰ÃéóÔ±–ƒne\cr‡“ ³ÌæýùÇ{/ÿôÿ¼ÿ°ÿŸÿÛAÆ=eo°7ÿÅÿ¯ÿÈDûQ!bÿyÿ1ÿÌÎx=BÿNÿ6ÿÍ^”.ÿ ÿ„ÿÅ"AÿÛÿnÿ…ÿ×ÿðÿ™ÿaÿ¦Bÿ«ÿ›ÿ×<gÿ¢ÿÝXª˜ÿÁ€Ã‰ÿ×ÿ[ÿ‰C Màÿ’ÿª2ã@«(ÿßÿïhÂ9ä~&ÿóÿÎÿÝÿñL{«ÉÝÝãÝÓŹµ´º¿ÈÎÚíùüîæÉ h1ÿÏÿÂÿ¿ÿö:HW ºRÿëÿÆÿÄ“ò0ÜÿvÿVÿîßh 4ÿ[ÿ$ÿ¶|¦GÿÇÿÿÄ.DÿÿlÿÄ$ÿ²ÿ€ÿ‹ÿÖ$ÿûÿ°ÿ¢qCÿçÿÄÿ÷zÄnÿíÿÇ ¢è~ÿÊÿDÿsI,#ÿxÿnÍEKÎSÿôÿÃÿåU°ö'àŽJ! $Ad~—¼×ããêðúýùóòóüò×§~Pÿ÷ÿäÿñÿðI¡ Hj&º3ÿÊÿ¨ÿÿ×GÄ5®ÿùÿ=ÿ=üƒ #ÿ>ÿÿ¹xÙ{ÿÔÿ—ÿÅ(f%ÿºÿÿ² :ÿæÿÿŽÿÑÿõÿä+<ÿÚÿÿÑAlFÿæÿ½)§²[ÿæÿ¾&­ß…ÿÆÿKÿv=w'Vÿ­ÿŽÿæ–2ˆ2ÿàÿú l¾ò éÇ“cB%%/IVm“¹ÐÜîúþõïàÕ·ŠY6":W‡Í=(ïÿÏÿ´ÿí)‡ÿ%uÿÊÿyÿ8(ŠÿMÿ5ÿÉ’Ý‘ÿ”ÿ¿-eGÿßÿ‹ÿ¬/ÿ¯ÿiÿ®ÿûÿ¹Nÿ½ÿ±ÿñX‡3ÿØÿïK­¸GÿÑÿ¿ºùÿÓÿ<ÿ^& PŽÿÁÿlÿÉbCÝ„7ÿÝÿîf°ÞûéЧ†sjlbdt¬ÀÌÏËÏËÁ«”xS=6FPiŠ®ÌàýÛˆ'ÿæÿ¾ÿë2œú>íEÿ®ÿWÿº’]¶( ÿ/ÿ/ÿõ½¯ÿúÿžÿ¹$}Yÿñÿ¥ÿ¢ÿî4ÿÐÿÿŒÿÝÿâÿ°ÿó@A ÿÄÿ¼"†u%ÿìÿúd»¤=ÿÓÿÂ/µç‘ÿßÿcÿsóiU«ÿýÿ£ÿ¸=µÿá©]ÿõÿâ;ƒÁáóãÒ¸£‘ymktw€“£ª¨­§•sndeo†š³ÏâòåÔžQÿâÿïP©êì£/ÿ¡ÿ‡ÿã¡cƒÿKÿ<ÿâ» ¶ ÿ¬ÿ»"w}ÿ¸ÿ©ÿã&:ÿ÷ÿ¤ÿšÿÈÿÈÿÏÿÛ DMÿÁÿéA{%ÿä k¹«9ÿÌÿº°û¹ÿrÿbÿå¾ilñ+ÿªÿ­ÿø|ÒêñÁ’UÿùÿóRÁÙéÞѹ£ƒ{mio}„†Š†xqz ®»ÅÐÓ×ʼ—b-ÿùÿùežÁèÖ­RÿÞÿ£ÿ— ×cvÎÿÚÿ:ÿIŵÿªÿÆ$…7ÿÝÿ±ÿá*8 ÿÌÿ§ÿÌ ÿëÿ¸ÿñÿÌÿÓ"]2ÿëÿÐÿü_œf ÿív³’1ÿÔÿÌ'¢æ²&ÿ©ÿ‚ÿð£9gþhÿêÿÀJ×ÛÒŸh6Et¦ÐáêÜϹ§“{i]ZTV[gm|”®ÃÍ×ÙàÖÄœm@JŠÁã×ΗEÿüÿ¸ÿÛGØ[I¾ÿøÿeÿv¯ø´.ÿÂÿÌ%mzJÿûÿÅÿÎC%ÿãÿ¼ÿÄÿùÿÍÿ¹ ÿØÿ¼ÿò6H&ÿèÿÕx‰W ÿîj¬žAÿãÿÀîësÿÔÿ‹ÿÀl!i9œÿæÿé5w©Ä¹°‘nM,*9d°ËÑÔǽ«˜ƒn`SU[p†ž³¿ÈÆÃº¶¤ˆ_-G…ÀåÝÌo@!…L&ŠÿÕÿÿ°HÑï˜ÿÏÿì;y5ÿýÿßÿà).ÿüÿÇÿÍÿõÿëÿÃÿÌÿõÿÎÿÞBH ÿÝÿûAz}Eÿü)w£‰;ÿðÿè)”è×pÿñÿŸÿÐZ÷J¾E%bŠž²¯¤‡fN>GToŠŸ®¯­¥ ™Ž†ƒŠ‘¬¶¹µº¶­—dF7+AhÒâÚ­Š^ ÿþ;¡ù7ýsÿäÿ•ÿÊD»Ø+ÿêÿû@qsLÿòÿô-ÿéÿÉÿèÿþÿÞÿÍÿß ÿøÿæÿò!F4 ÿú HywI(f–‘^ÿòqÌî¥ÿ¶ÿµ,À!+Ðu/1B_{‘¤¥¡ŒqZIMUizˆ”Ÿ©®´ÁËÑÍ̱¡ž˜‡mP?0@^»ÑÚºŽ]B6O¥þÅFÿÈÿªÿôuË¿fÿë_ˆp3 )&ÿÿÿæÿäÿáÿÚÿâÿè ÿòÿì 6D1 ÿÿ.j~c4Bm{S +wÎÞ›+ÿÔÿÝ/® äQ4$6He‘¢¡•€oeXZf{Š˜¦±·¾ÏÛÝÔÐŶ¡{ZD;HQj©¶«¢‡cE3>Dr̼Aÿâÿ¼ÿþpÇÆt ÿûTysQ$/+ÿçÿàÿò ÿòÿÑÿ×ÿèÿâÿïÿûÿü9E)"G`cU=.04HjzlG_­áÁbÿåÝÜ«nD7/>Kc}’ŸŸ¤›„rs„‘ž¨­°´ÂÌÊÂÁ½µ£rOFVy–£›€bWZRTUn™Ë ¶@ÿèÿè'‹Ìºh7eze;)()*!!ÿûÿÞÿèÿøÿãÿÔÿÜÿçÿÖÿóÿùÿý0L;-Oe`F4/5JapxhD/4b«Í²bÿ÷r¾Þà°€S438Pf|Œ—­± ‰‡‰’ž¬µ½ÉÐÏŸ§“ƒzkoФ¦–‚gQKRLUk“ÇÝÜœ3ÿíÿé0‚µ¶z2 #XkbS<.&"'" ÿçÿØÿöÿéÿÝÿßÿåÿèÿÚÿÿÿýÿýÿþ;>.:VXH<:FTQQct{j<'G…¼¹~/M™ÍϹ‡bPHT[go›¯±¤Ÿš‘‘›ª³¹ÂÆÆ¿¼²Ž˜¤¶¶Ÿnh__cjfn©À¦i!ÿèÿõ;®Ž_1#7ScP7AK: #/ÿùÿâÿæÿâÿàÿìÿêÿåÿàÿüÿüÿúÿûÿù$AE)>WZF//>IT]evuW;5W“º·=MŒ¼Ð·šu[UUcjz§¸¾ÆÃ»°¬©¢ž£¨¦£§«¥£°¾Á¹´¥Žwie\]cuŠ¢ÄÃ¥g' GŠª’X60:PZVI<DD$ +5%ÿþÿàÿçÿïÿØÿÞÿíÿçÿÝÿàÿ÷ÿþ8Q<(K_Q2!(@YYS^lvpRCU²½›\*'E¯À½Ÿ‚nityƒŒœ¯ÂÒÖÖʽ«•‰Š’™ª´»ÊÍůš‰~zusjku­ÀÌ­l5"Ex¢«‡S/6U^YMCINH4*J:ÿéÿàÿü ÿìÿÞÿÜÿßÿãÿÞÿØÿÜÿü'NR;!0P`V8#-J\cffrtcPEX‡­µ“c>/Ks¡ÂÄ·œ‹…„Œ‘›§³¸ºÁÁ½¯œ˜²¾ÀÁ¸°£–Œˆ…{wxЍ¾Ë´_*>uœ›W=>Ob\MJMRL8#&@FÿõÿíÿúÿØÿÝÿíÿæÿÚÿØÿÚÿÙÿþ  -=VV>%"9^pX5*<Yrrffjsr[MWwœ«¢|R?EoÀÏÀ¯—›Ÿ ž•“›¨°¯¨¢¥ª¥£¬·»³¤–’•––”„„¨Êл…I'Bu–iG:JfmbNAMZUA)!4GF,ÿô ÿëÿÚÿéÿûÿêÿÔÿÙÿáÿØÿñ *'*?ORD.(CadS?8F_qwur~ƒwf]g€š®¥ˆcJSm™½Ë˹±ª£¡ Ÿ™–™ ¤§¦¥§ª­¯±¯¬¤˜Ž‘‰†‰‘¡µ¿Å­U8A^„œ•~`QVdpiZSSYWE2)0CI4ÿûÿðÿñÿ÷ÿöÿãÿÓÿÛÿåÿ×ÿëÿö *1*#'9U_G,,B[fZF<He€ƒ{€‡Œˆzoiw•«®–u\Tl³ÅÁ¾´©£¢¥¤¢Ÿ›¡¦¦¨²·±¥™—–•‘ˆƒ‰ž³Â¶vPGW€¦°žzhhr|yjZS\c[H6/7BD7$5& ÿúÿ÷ÿúÿèÿÝÿÝÿâÿåÿØÿüÿü  -20-3JZR@5;L^f_MFWp|ƒ„†…ƒ}rq~’£¢•het“©¶ÂÀ¸¨•••𥝰°»À·¨¡ž™”Ї‰”œ¥±³®˜zcXe{œ’{edotrkb^\^ZG88AHF<- ,1ÿÿÿëÿßÿåÿðÿíÿâÿÙ # 1==8=GQTK@=G]lbQNYjzzxˆ…|su’¡ŸŽyow‚–­¸º«ƒ‚‡’–›§²µµ»¼¶¬©¦ž•ˆ‡”¨¶µ®›†vim~•‰wf]coul^[`fdXF43EUO;.(+.)ÿÿ ÿìÿÞÿáÿñÿûÿðÿÞÿÛÿú "$ (3=CDDMQLB8;N_`VNP\pˆ†~…‡ƒ~}ƒ’›—ˆ{toyŠŸ¬¯²ªœ’‘—–˜Ÿ¨¬­°°­§£ œ›™§¯°£|ono{‹”’‡{}}vlglpk\J>7>OUD+"%-/% ÿúÿäÿåÿñÿ÷ÿôÿæÿÙÿÚÿÿÿ÷%**% $6GKFFGGD>;?HSYWTXfzŠ’Š~v”…zzƒ‹‹€qkp‚“¥·¼¶§¡ž™˜—›ž¡¢¡¡Ÿ›™›¢ª®­¢”‚ohkx‚‡ˆ„€ƒ™“‚sqxzhQB@EMQI4" (,) ÿÿÿïÿêÿôÿýÿõÿåÿÝÿÛÿÚ (*%#,:ADJLIDBB?CO]a`^ajzŒ“Š}|ƒŠŒ‰‚|{…‰†|try~‰™¦¬¨¤Ÿœ›˜—š››œš›¡¨­©ž‚xmkq|ƒ„€{}‚ˆˆ‚xrrz{l[NGHLNK@3*(*+' ÿüÿùÿúÿûÿ÷ÿìÿâÿâÿäÿÝ  '*)(,3>JOKDGKFDM[dhhfag|‘†}xw}†‰vrv|‚ƒ€~{tsx…” ŸŸ› ž››œ ¦¨¢”†{uvvy|~~{wvƒ|n`]es}zkYSTQOMJD>;84/-( ÿùÿëÿåÿçÿíÿíÿß6T`L-ÿÿ 0SYH8,".MlzpdO5**Ad|~eG20@JYq†}vld[PHCDDM\o}…‹‹Œƒtg[ME@GQ`hp~„rlib`dikhc]YVSM?;IZZPOK:02?KMD1""ÿýÿ÷ÿøÿÿÿöÿáÿØ !-Ztc7>bm[7*Jr„}Z:(0TwŒ}[22Qak{xkjibVKC?CHVgw„…yvsokgbXQPSSX`n‹Œ}p_NEBIT\]XTQQM>6<ILNWYO?428AG?.ÿ÷ÿôÿ÷ÿýÿþÿøÿêÿÙÿýAb„y? 5ZmlN(;a{ˆtP0';Tm‚z]8#3Rmz~tqgTFHPNMS[acdb`\VOFDHTbp}ƒ…ƒ|iUIKQ`nx€|veO=36:CJPWUI<7=CMY[TC5.*3EL?% ÿõÿæÿåÿïÿôÿõÿöÿïÿßÿð1j†„V)j…qK4hŒwO)$=jŽ‘ƒW@h…yfWK<9?JJN]lsngXH9*% )6Lcx‹–Ÿ ¦›_E9,3B[s…mK/$#1=JUXWOFADKOOMFA9)%5EE3   ÿóÿàÿßÿéÿëÿìÿðÿíÿâÿáe“…Q 0o•DDnƒ~^=/5V}€X5#3`ƒ…iTC545APcx€}nh[F1# "*7DSdqz~„‡ˆŠ’”Œ{n]C/#'*<[sq^E2,'1>PfmfRD=7=LX^N-)=C:! ÿÿÿþ  ÿõÿæÿãÿâÿæÿëÿçÿÚÿòG‰ŽW-sš‡J*TwŠwP-!<g¢‡OGw ™m2$6Qn„—“‰mT7ÿý 5Ph|…Ž‹‚sg_VW_nz‚Œ„rR3 Jm{~iS=*(*<ViobRA01?SaY> %;C3ÿñÿö ÿùÿèÿáÿãÿåÿâÿ×)x‰Z,q›‚? "WtrcI18^‹£”vM-2R{€e:Dcv…|hP6 *@Xly‰‹†xoeWJA=78>JS`r€‹„{b@&",AXhtm_D#-Ok~pO*6SeX2 !-.ÿëÿãÿñ ÿõÿàÿØÿÝÿèÿëZzW,r›†@ÿø"QnhG*%3_ž»¨n:*:n§¸WÿòÿêP‰¬¨¢[/ÿíÿÙÿãÿñ=f‰—¡š•„lTD>7555435604A\|•©¢‘lG( 9\px_:ÿ÷ S„m; 4crW!ÿÿÿ÷ÿý)+ÿøÿÕÿÌÿáÿîÿØÿ×ÿåÿônJ )t ŠE%WfT9$":[xŒU4:bŒ”g/:j’ª™{Jÿêÿðÿú0Les}xk_WSTPOPSTROG?841(',>Sl†–¦ž‘k; ÿâÿÝÿêJn…pGÿùMtyf9ÿú:NF3ÿöÿî,ÿòÿËÿÅÿãÿåÿÊÿÉÿÞAÿær¢G4]iL 8\voR-!`ž¶FÿÝE™ÒË«aÿìÿÁÿÅÿ× Cx¦µ½£‚V- &>Vkv€~yl`TLE:2+)#)4Pt’®¤ŠKÿÿÿÇÿ©ÿÉÿú?„šŽRÿíÿã L˜s/ÿòÿÙÿö"K[> ÿæÿÞÿú.ÿëÿÈÿÉÿîÿüÿÑÿ·ÿ¿ÿìÿ×ÿÿ^¤’Dÿý&YX2 ÿý 0O\YE-*Ai‘e) 5q¢žz4ÿøÿßÿÚ+e¤Ëâϸ‰]0ÿéÿ×ÿÞÿäÿù 'BYkx‰”›—”‡ydM6"ÿøÿóK}¤Ê»@ÿ÷ÿÅÿ™ÿ«ÿØ$o“¡u4ÿýÿâ9lxOÿëÿê:K: ÿæÿÛÿò%ÿãÿ¿ÿÉÿòÿôÿÃÿ­ÿ®ÿäD”—NÿüÿôNY(ÿîÿÝÿû#GO=&*QˆŸQÿåÿýI™´¡Iÿåÿ ÿ‚ÿºjÊ?1 ¹hÿâÿÇÿ±ÿ¾ÿÒÿö+AMWZZ^jz‡”…q[E3#ÿðÿêÿæÿÿ!]§Óç·|ÿ¶ÿ}ÿeÿ©nÐפ4ÿÎÿ°ÿÒ-•hÿàÿßÿÿ-I9 ÿÝÿÏÿæ ÿÓÿ¼ÿÌÿøÿåÿ¹ÿ¶‚“UÿìGQ/ÿýÿßÿñ<?* $Mof5&^~t5ÿëÿ·ÿÿÌtÈïå¾|7ÿÞÿÞÿáÿþ8Tfx}ƒ{o\I=5626>LXblnpg_H)ÿæÿÖÿÇÿÞ?€°àΞ=ÿÚÿ™ÿiÿ™ÿþuÍÆ‰"ÿÕÿÑVw\)ÿöÿÝÿñ@6ÿØÿÅÿßÿýÿÓÿºÿÎÿöÿØÿø`Ž` ÿø@W1ÿûÿåÿ÷76ÿý?ijB ÿì?|šgÿŸÿaÿŠÿØWÑ-ñ­Iÿéÿ«ÿÿ“ÿ³ÿø8r§ºÁ²«Ÿ•ƒkQ:'ÿôÿðÿñ5Tm‚Š–Ž{U3 ÿÞÿ½ÿÿ²ÿÝ8©÷+öž ÿnÿ/ÿDÿÕyç ±,ÿÂÿ«ÿñ=pm0ÿïÿÎÿå9.ÿÍÿ¹ÿÐÿýÿùÿÊÿµÿÆÿò ÿù2sf+ÿø @R< ÿäÿí  ÿúÿø=[]:ÿðKzn4ÿáÿ•ÿ”ÿÉ3”Æß«gÿÉÿ©ÿ“ÿ°ÿÙDh‹–‰kK<5'ÿüÿöÿóÿêÿßÿ×ÿÐÿÇÿÂÿ½ÿÇÿÖÿò +X}–— Œs7ÿîÿ©ÿiÿoÿ‘ÿôa¹å‰ÿÿyÿ™‚½«LÿöÿÏÿà!]f7ÿòÿÌÿØ(&ÿúÿ¸ÿžÿÊÿñÿ½ÿ¥ÿÉÿü MU'AZ@ ÿïÿîÿéÿØÿå+ML+ÿð Wˆtÿ³ÿÿŒÿõwÔô¬Vÿëÿˆÿgÿbÿ«ÿü\·ãö׿“e9 ÿúÿù 1AJLSL<ÿéÿ×ÿÛÿßÿÿ(_Œ´ãüô½MÿÌÿfÿÿ3ÿwÃ2cýiÿÆÿCÿMÿ¯Hµ³gÿöÿ³ÿÄ Ua*ÿâÿ´ÿÂÿù&!ÿÙÿ”ÿÿ× ÿÞÿªÿ§ÿÊÿ÷A*H\Kÿ÷ÿó ÿâÿÈÿËÿë ÿþÿçÿîDq[ÿ¬ÿ‚ÿªÿõE~`ÿ¤ÿXÿKÿKÿ…ÿÌZkj3ÿõÿ«ÿrÿKÿÿþóÿÿ'ÿ]ÿˆÿ­ÿÐÿí&9<B5%ÿáÿ³ÿ‚ÿUÿ)ÿÿ ÿÿ'ÿSÿŠÿÓ!S}_(ÿÃÿYÿþÑþöÿEÿ×mÇû¯+ÿ¥ÿXÿƒÿéTMÿ÷ÿ±ÿ±ÿï.CÿÔÿªÿ¸ÿú%ÿ·ÿÿÿÙÿüÿÅÿ”ÿÿ¾ OqY ÿþÿõÿýÿÙÿ½ÿ¿ÿÙÿùÿúÿÕÿÁÿÓG^Fÿ¯ÿžÿÚ?Ž‹YÿëÿqÿAÿQÿÊ@ÄA}¢xAõ¹ •¦ª½Ö9s«Ôô#-,*" ôÑ™b&æ·‹‰ÅÿQ¯ëî¬hÿÖÿ[ÿoÿ¿feF“ÿÅÿEÿ;ÿµ1pKÿäÿ—ÿ‘ÿÓ!6 ÿÄÿšÿ¾ÿúÿèÿªÿ†ÿ§ÿâÿëÿ¦ÿrÿ†ÿ±ÿá(jrDÿòÿýÿ×ÿ®ÿ§ÿÂÿãÿøÿðÿÛÿËÿÛCD ÿ¼ÿ‡ÿÿ¹,ÿÀÿiÿ.ÿÿ-ÿ€}ãF‡ºÝBš rÄ-aгÊãßÌ©‘rkadl‡ªÊãáàµz!Í}/üÅÂÖMcj ”ÐúGÿ¨ÿ—ÿÎJ¹¶Mÿ©ÿ*ÿ#ÿrÿð3ÿÑÿ†ÿˆÿÇÿñÿ°ÿšÿ²ÿäÿþÿÔÿœÿÿ°ÿìÿÎÿ…ÿmÿí4`&ÿùÿøÿþÿßÿ®ÿ•ÿ§ÿÏÿáÿßÿËÿÈÿä_l+ÿ×ÿ¤ÿÒ>Áݲ¿(ž2´mÀ#¹P$ &  ê a Ì ð " #  ñ Ð — O  Ç   y q m ‹ ¦ ä , Š ê 5  † y $ Õ U Î / † –q_ZLû©ÔÖiÍ‹’…ÕRnÿDÿŸÿ[ÿO7ÿáÿŸÿ”ÿÅÿîÿ­ÿ‰ÿ®ÿæÿîÿÏÿ£ÿ•ÿÊÿýÿóÿ¾ÿˆ'n™v!ÿåÿÈÿÊÿÏÿ²ÿ€ÿJÿ6ÿOÿoÿ`ÿAÿ)ÿ9ÿrÿ«ÿÆÿ§ÿUÿ5ÿdÿû˜&s¥Þe"¾DŸ÷˜b ¡ è l öiÚÜÂ!|yHÿ›Gû«k-ÙÙï4jÁ!ž&ŸDhJ:åÔ ]±‚Ø , Y J 3®ì/ OTaIÅÿ:þèþýÿlÿ¯ÿ¹ÿ‰ÿSÿRÿ‹ÿã ÿÜÿÿ„ÿªÿÝÿôÿÈÿ›ÿ®ÿÝÿûÿîÿ¶@ú‘ùrÿüÿ÷ÿÕÿ²ÿ˜ÿšÿ¶ÿÊÿ¯ÿ“ÿ—ÿÀÿ÷)¨ca/ý¸³ÞN Æ  ^ 3 ÌQöd)ðÉ "k0vÇÄÄz£HÞÄ£gpœñ-zÐ>¸&‡¸áÝí¿{ëYšð0ë{Ï?¹TÈ  °}‚€åÍ}ØÌ×<?t¯1ÿÍÿ©ÿå. ÿÝÿ˜ÿ…ÿ¸ÿ÷ÿðÿÊÿµÿ»ÿãÿüÿã„wW7xÿñÿÔÿ­ÿ¤ÿÿpÿqÿ…ÿ—ÿ ÿŒÿÿÁ5;µzµÔ"‡ ' 0 GE‰ ëŒ%÷¾ v"7#¤$ú%Î&&õ'z'È(('ë'¤'~'x'|'‰'ˆ'€'n'y'¨'ê((3(f(¦(ñ)%)N)>)(Ô(˜(5'Â',&&%†$Ó$ "Ô!TA3öЩ˜[ß d ç ¤õhÚÞ®~ÄmlCÛ!ÿ‹ÿ[ÿˆÿ¨ÿ«ÿeÿ3ÿTÿ¦ÿàÿìÿÌÿ©ÿ¾ÿâÿð ‡gm¦§Õ«q…‰À b˜Âó7–ãá [gÆ{ ¿ . ´íŠo$O3§NÆ!"e#ö%¬'T(ã*`+É-O.°011ß2‡3X3û4š4Ð4Ô4ž4Ž44’4–4‹4{4j4o4Š4­4´4½4Ú55,56594ñ4˜3ý3k2²1è10\/Ì/e.þ. -ª,ƒ*y(V%ž"ß †#²_úéÙu a ¨ È › —W€Õ$õû‰l€2ÿßÿ¬ÿ¼ÿø#ÿÆÿ®ÿ»ÿá» šÚl% àœá#Àu-¬³?´öó K ü k õ¶õ²ÞòAŽ ‡"Ç$Ô&‚(u*D+á-t/F12º445£7!8Ì:‚<3=—>Ó?À@ÙA™BLB]B3A¬AQ@ý@°@l@?å?´?®?´?Ó?Ý@@<@‹@ÝAA,@÷@³@ ?d>a=?;ú:¹9Ç98¡8F76‡4ª2«/î-$*'9$s!"ÑåØ'‘WF|‡ w “ ÁUß"æ1¡>ÿ¶ÿtÿÿÌÿÂÿ™ÿsÿuÿ±Óû¼ Õ \  û Ä K × ä 7)óï¤Iuúg¯2hu !›%( *ö-6/g1e3£5°7z9:ï<³>K?ÌANCDìFíHîJ‹KöLãMûN‰ONµN*M3LiK±KJuIàI‚I.III9IPI˜IöJzKKmKÎKÛKæKƒK#J3IG›FDÜCàC@B·AòA?e=©;08¬5°2¶/Ÿ,\)§'a%Î$/"£ Òž0½¿W®B; y  zßö$vc}æ±o?ÿïÿÃÿÌ7Ø:ôRëåÀHª#²2gx©òÜ !‡"÷%i(\+ä/%24ð7i9Û¿ABõDF}HRJK¿M„O~Q£S¼UÑWNXŽY.YþZ:·7,411£0.Ÿ-P+‘)”'³%ä$["n 38ƒ_`×F Õ ™lÄ'ª¼®ÿ½ÿx)«%!!l o2-ö 1"#±$ó& &½''p(") )·*˜+z-.¶1B47 9õ<¬?pBD GI´KøMáO|QTS)TæVX`Z2\%]á_`–adaŸbb aða3`D_^]9\†\[[;ZòZãZÛZõZý['[\[Æ\G\Ï]5]‹]ÿ^Y^¹^°^}]Û];\y[Ú[ZTY+XV:TcQÞOAL5IFF B®?—<½:é9‚8q6þ530Ý/-:+7(Ÿ%¥"§ 7õm²É1, ê Š ~¡—Ñó4S/+›(&v%%%f%ƒ&ˆ'w)+-.ø0D1R1ß2s3 3æ4Á555ö7 8á:¶=%?¨BvE(GèJºMsPR‚U#W]Y:ZÒ\Á^š`Ma¸cd_eÄfíhh¢ii,i‡i„i]h”g™fdeOdŽcôc²c[c@c4cZc‚c³cÓcñd dEd–dòe/eueàfGf¥f¸fªf]f"eÑeže#d“c}ba`±^þ\¹ZeW¤TùQ÷N¯KŠH„FmDÓCºBg@¡>‡<$:7é5ì3…0¯-ž*ä(L%µ"èϼ m Ž &¹/–TÇ?7:f63*1Á0¤1 1A2M3<4ë6ÿ9,;<2=!=½>?u@=@âA:BCkEkG IK2M PR»U\WÎZ\1^q`cbc’eqg hji1iåjXjòkukòlj;î9(6h3›0ï.#+1(%!êº0>m* J!IðEAQ><ä<<‹<Í=Û>Ú@°CE^G-HCI?J K1L*LÈMÞ;ì8å5ö2Î/‹+î(^$n $GiصRÿNK[H©GèG`HHPITJoLbNÄQ R¬S©TÈUÁVñWËX6X‡YZ&[ƒ]^_@`¼bude¡g4hi¿jÏkûm1nvožpâq‡q×q|q#p¶pgpUpYp€p™p§pÊp¦p]o±nûn&mNlºlTlBll$lKl‡l©l½lÝlìlçlÙlÌlálñmSmän£oGoÊp@p”pîq4qƒq­qÕqºq¯q'pno;nl½kµji1g’eådYbÿaÞ`Á_ˆ^T\ZªX9UÈSTQ%NâLƒI°F©Cq@Ž=~:E6‘2Î.±*j&W"eD'`[ÝX2U¢S¥SaSATT]U_V¨Xµ[]^•_„`ÂaÒbàc~cÐdd¡evfQgg§hLiDjckSl,mmánŠo;pqr%ssÍsósåsIr®rqbq pÛpëpìpúqq pÚpEo nÂmÖml•lclll!lQlelzl¡l¿lÇlÅlÀlêmm¯nrodp4péqŸr9rÜsMs´sÕsésÕsés½surÀqëpôp6oqn“m‡lqkPjAi?h@g9fOec†ay_J] [Y4WYTÜQæN‚KŽHpE9Ai=^8ó40s,g)&+#¥ Áaå_G]§\‡\¾]]Ù^D_:`–bdsfg[h=ipjck"kkÝl)l¡mmHmdmwm¬nnnÔo oXo»pp˜qKrrésds½s‘s[rÇr+q~p×ppp+p)pp%pJpIp/o«o n$m/lik×k–k=kkk=kNkpk¥k×kïkþll@lmIn0oEp0qqër´sˆt tntmtYt*t$ttsÒsbr½r9qpôp,ofnŽm·lÕkïk j@iNhFfÛeGc’b`›_j]•[+X UAR:OTKÊGÒCi?#;77d4>1O.»+ágŸfeDdñe–f5gg¢h†iÙkzlîno$oòpôq«rrWrÇs#sys„sks!rær¸r§r‡r7qàq‘qq¦rr©s:s³sÐsÖs{s"r‰qÜq.p‘p7oöoëoÖoÎoØo±onnÏnmBllkÙkvkVkjøjëjÿkk'k^k”k­k¸k¯kîlHm.nBo“p·qÃràsÇt¬uukuRukjjwifh]gifÝe¼daj^é\Y”VgR¦NOJ$FMB ?…<„9Ç6ØjRi}igiœjuk>ll¶m~n oÙpÓqœrxs1sétgtÆuu¤v vAvuÿu´usutÑtcsÔsIrÀr—r rúsOs‡s¢stsCrØrkq×q1p¢p0oûoËo½o°o o–oYonqmËm'l“lHl!l"kÿkækØkçkôll]l•l°l³l lÄmmÂn®oÞpíqïssÙt tîutòtìt×t²t™t‡t«tôuCu–uput(sjrqáqpFoon›mêmKlÍlOkÎk2j¥jriâigEebca!^’[}W¹T PŒMNJzG§DõBl¨lslãm‚no`p/pÕq†rzsgtt uZvv„vñwrwþx¬yy=y xöx·xvxw‘vïv2uˆtöt¼t¬t·tštSts s'r‰qæqDp¤p3o×o§ogoEo1o*onýnèn¹ntn#mÙm²m¦m©m‰mqmfm‰m·nn^nŸnÇnÁn«n¡n£nôoapp¿q‹rqs=sûtGtZt.t,t9tAt[tjt²u!u´vcv•vnu¥tàsûs@r’qàqp0o_n¨nFnmámmKmn»njn_n5nmßmÈmûmÙmTl=kaj hŽfƒdWb`^)\5ZWÄm·n nÚo«pˆqFqÚrbrásxtt¤u+u·v9v›w-xxúyy¹yÚyÑyçyçyÝy¦yayx¢x\xFx*wòwpvØvu|tÊsós$roqóqwq1pîpÒp p§pÏq,q}qÓrArirUqýqÅq‡qUqpˆpo§oœoµppxpÝq?qq¹q¹q¬qpq0pðp·p¨p®pÕpüqqqq-q‡qÚrFržs,sØtÂuàvžwv°vu!tJs s=rÈqùqpoo-o@oOoWonúoao½o¼o3n®mÓmkïj’i gÄf|e*caÆmõn[ooßp˜q5q¦r rjrØs\sðt}tèuOu¼v`wLx xnxjxx€xŒxxŒxxxXxxGxZx>x wÀwšw[vüvwuëuyutüuuSu™uøvdv°vùvÚv”uúuhtÖtasùs’srNqžpõpÓpûqŒqórerÀsFsètÍuåv·w.w#w0wvÉvvvuvVvuËu~u-uuwvîvÆvvOvuÚu­r•r“r™r¶rÈrÁr rxrgrmrrásrñrðs]sÙtsósÊs’sqslsvsvs>s#s7s¤t"t³u/uƒuÈuïv)vCvLv)uõuÉu­uÐvvjv˜v¥vÁv½vžvvvcvnvvœvv®vàwwXwdwBw!w$wgw³x*xœyy¦z zyz\yýy xIwsvÁv7u£u&t“tDttHtšuu3uYu‹uÚv2v§w/w˜wÔwäxx)xUxoxwxixexUx9xxwýwåwìxxExxxyyxÉx„xAx"x wÜw waw.w sçsÛsÚsâsçsãsÎs¨s›s³sètt-tttwtÀt½tpt)sås°sssšs_sCsTs¹t(t´u9u¡uëv+v›víwvývÞv½v¸vÄv×vÈv˜vEvuÁu^u u u1uIutu–uÔv+v‰vàwvçvÔvýwew¾x2x©y.yÇz3z¡zyz y"xJwwvÀv3uŸu.t¦tttgtÉuHuÇvvv=vuvÌw/w†w¸wÒwÚwòxxcx–xžxx˜x¨x°x¾xÝxíxÑxÅyy2yxÏxöy,y9yxµxbxAxt4tyt¢tðuTu¾vvJv{vpv5vv-vvÒwwïwavÎv9užuVuKuxu|usuouau5u2uuÃu­tít'rÖqoÑn'kðiDf¹dc]aûa”a\b)bÕdwfphäkm oXqdstêvvav²v‰v\vv uÿuåu±ušu-tÆs‰rbo®l1gÒcè`p]ZcWV7U(V#W‚Z"\Z_aðe hˆkem½oJq,rgsvs¶s÷sœsrzrqÁq]q[qr.rºsot?tæu}u‚unt±s¼r¦qÌqOpþp»poŸoÎp=p8pp8ss*sEs·tOt³uu¼vuþu›u~ujuQutÌtHsšrörnrLrOr’rÀréss!sFsœt9t™t¼t$s‚r5píomHjÙgýe'b°a_)^|^_ _Éa¯cõfÜiml nãqcs·u(v|vów_w?w"vÙv®vuvsr¾r qqfq/pp p-pwpDoðoÚr·r“rtr©rýss:s¹sðsœsrÇr­rˆrQr q°pþp_oúppp{pØq1q\q™rr›s`sÒtsŠròq›pVnZlZif]c`<^&[×ZéZe[o\A^m`ýdYgijˆmæp²st•v;ww¸w»wÙw­wŽw+vÁv ubtRs\qŠo¬lbh’cì_’[kW%SÁPNNÌM¢NêP—S½VqYÄ]CaehSjýl¢n—oÐpêq0qhq p¢po¾o˜ono”oÁpSpýqârÉs†t:tjtnsúsŠsr}r'rqâq8p­pÁpçp„oôo¥rçr‹r+rrqØqÀrr-q¶q p¹p p€p^pBoìoHn½nzn¯não[oäpap—pÞqir#rîs]s®s1rq6p n#li&eÑbZ_2\ÒZFY*XxYdZ\<^ËbOešhûl‰oaq´s5uvYwDw‚wówòwàwTvÆuÙus»rpnjkg‹cZ_i[sW'SœP)N»M£N÷P§SÅVmY¶]Ca dêgõj~l mÔop'pšpòpÀp‡p1oöoãoÑoôp p|qqðrËsƒt-tftxt4tsÀs|sRsasGr¶r2rHrXqàq(pªsEr¼r$q½qjpäp˜p¾pÅp5oyonùnÍn®n n_mÄmHmmvmÊnfooµoûpIpíq½rrüs^rìr:pÙoÏn lie¾b)^Ð\4YƒX>WPWöXZZP\¿`Mc£g"jÑmÅp!q³sºu.vTvÔw˜w¸w’vÑv=uKtYrìq’o|mJj/fèc_€[¸W~SøP®OeNbO®QSTXVçZ%]ÅaŽe:hjbkÔmrnŠo°p@p®p¢p™popSpPpTp}p‘pïqvrCssÉtkt©tÃt§t­t¬t›t’t¿t¹tFsÒsñsñsjrqçsüsPrŠqÝqCp†pppo…nÔnrnOn#nmÿmÇm6lÂl›lúm\n nÍovoÍp#pÈqrTrÃs5rØr pÌoènqlÂjg&cÖ`Ÿ^[uZ+YYjYlZî\ö`0c9fƒiõlÅop‘r{sèu!uÀv˜v³viu”utZs‰r/pÒnÏlÄj g6cö`Ý]ˆY±VƒS±R³QÔRûT}WDY›\¡` c¬fîiAkVl‘män¿o¯p,p‰pp¢p£p¬pÀpÕpüqqbqÏr{s9sàtit£tÂtÑu uSu}u¦vv&uïu©uãuêuyt¤sót€s°r¹qÆpèoúoqoLo5n¡mùm”mpmJm9m5lÿlqkükÐl+lŒmAnnÀo3o¡pLq qÇr;rÃr„q×p›oÕnªmSk'hÆeâbè`V]ò\°[¤[±[e\q^`Ñc„fi³lKnaoÝq¼s4tƒu*uíuâuxt¤tAs²s qÄpfn`lRiÓgXdªb"_S[åYV¾VUbVnWØZj\_^b²e÷hËjªlrmmnknñoŽoØpp p$pKpp´pÛpýqqPq r+rÑsjsØtt:tuuŸvv…wwyw…wlw½wÊwpv¦uôu$trqpdpoÕoaonÅnÙoo^oyoAnàn}n;nXnoo‰p pfpØqqr&r×sft t'sùs@r®q×q oÜnRlBjh,ffetd­d³dve)f h&jul×nïp$qqGqÅqÿr6rqÖqwqGqp¶pdpkp*o•n[mkj hsgeGbè`Ø_W^ì^;^Õ_óbcÛeúh[jl…mÂnýoroÄo”oyop§q&q«rBr—r×r•r-qzpópSo–nÓnm‘m]m`m4lølšl‹l¸mdn,nóofoÈpMqqørÚsrt tàuÍv…wQxay`zIz zÍx€x@x xx=xtxŒxŽx-w¥vðvVuÞuu.tÆtFs´s5rÙr–r6qéqÀqšqLpþp¸p±pÏqqTqDpîpGo»o3n¼nIm©mHmm]mªn3nŸo3oßp¦q…rr~rJrEq>oåmmjâgèdæbX_Æ^¤]Ö^Ô_âbPdÕhkTnpeqqrjrmrjq÷q¬q6pšpoœo¬p p­qq\qÙrlssss¹sgrãr qmp±oÒnæmômUlølØlŽl;k½k—k´lWmmÒnLnÁoWp)qr r­s>ttÎulv,w?xEy$yoy›w¢wgwmw™wòxQxsxxwþw\v‚uÊu-t™tsŸs$r“r%qâq³q]qpËp‰po·oloeono£oñpoËoHnànunm±m+lçlÕm/m”nn^nÃoMppýq§rqîr q"oÛmWjÂg—dVao^”][½\r]``cf‚jmopär,rxr¯rmrgr q“qpÉpøqQqËqõr1r­sRsÿtXtt%s”r¸rqWpeoYnPm˜mláll5k§klkzll¸mqmènan÷oÇp»qœr:rµsXttƒu9vMw[x2xxx«v uÐuðv>vºw-wTwavèvFuit³t s]rËrKqêqpq#qpúpÆpxpAoæoVnÐnyninSnmn©nÀn—n5mïm¥m]ml–lalilØmPmÈnn>n‘o"oëppõpáqpeoUmj gdha„^¸][t[×\Ó_œbCehòkÜnjoãqNqÛrYrdrrrArrrsrÀrþss0s¢t8tËtÿut‹tsOrÓr,qIpCoIn›nmâm•m>l¦l\lblñmˆn3n¦oo¨p`q7qírer²ss’sçt‚uvwAwywªttVtŠtïu‚vv6vSuæuKtqsÄsr`qÄqHpýp–pgpjp}pgp$oöo†nÕn#m®mmIm@mUmXmlÏl¥l†l\l'kÉk´kålxmm‹mènnMn—oo”oÜoÃoêo8n.liÞgdaN^¥][|[Ç\ž_*ad¬gùjêmonûp†qPrr^r»rèrüs6sÊtZtštštt½uumuÂu·u~têt`sÍsnrár q povnýn¾nrnmkmm&mÈndoo•pp¨qKrrrÇrØss:sTsËt¬u vMv|v¯rÇr­röshsÿtƒtÁtùt´trzrMr q„p´oÖo(nÓn’n†ndnUnGnSnhnŽn³nÌn«nÑoJp+pþqÏr£s"ssmslsrƒq²qpn±mkŽjh›g3e‘drczc¡cûe\fÅh©jxlNn o¸qRrvsgt tÐušvwDwÕwÐw£w$vÏviuéuuu0tîtjtsÝsðsýsæs§sErër°r¬rr5q“pÉpMp+p‰pËqBqÈrSrÔs$susqsPrðr“r?qèqÞr'rcrnqÒqOlúmÇnƒoVpp‘pòqvq¸qÆq qžq™q‰q}qpqŠq­r r’ssFsrÑr$q[pŠoÛooAo:ooo1ogoƒo²oÿpLp[p—q qçrÐs½t¡uuuuQu?t¶tsr)pÿo¯nElékÍjÔji)h‹gýhhMi-j#kglzm·o p“q÷s sût®u}v;ww›wñw¸wmvÙvXuÔuQtît§tisís¦s°sñt t süsåsÔsÙtt s½srYqÖq•q¶qÀrrarÑs3sks¢s‰sUrærxrqÉq¨q½qŒq1pohþj|k®lùmðnÃoOoÿpvpÇpíq.qgq›qºqÃqßrrs sqs¶s{s$rsqÆqp|poÕoÅo™o£oÕp%pFp|pßqXq¥r r…s?ttéuªuöv uÇuztÆtrþqÿpÝo±nmblŒkÝkŠk#jújÈjðk%kÁlsmUnnæoÿq:r]sSt>tðu¡v%vÇw w"v¿vVu·ut˜t2sõs²s{s#s s:s’s²sÃsÞt t>t…tõutátLsÀsSs srïs s;s€sÆsäsøs¸sarÏr?q¸qXpîp™o°nŸl–jÀd¿gh¿jœkómmànÊo}ppqqrrQrmr„rÅs4s¿tt^t s¹sr‡rqpqp®ppOpUpŒpîqq\q»rKrÛst t¾ueuëvv¦v®v uwtƒs±rÑqìpÿpo0nIm“lìlŽl*lllRl«m^n"oo´pwqcr`sMttëuzuèv)v­vÕv³vuutÃt s¦s?rûrrjrBrjr¶ssLssÉt4t¥u u½uüuåuju tµtntPt4t?tPtvt°t¹t t)s«rôr>q€pöp-oam¹kêhùfB^a%c˜f+hiØklRmMn@ooØpqSqÈqür rKr·sCsªsñs¼sTrºrYrqq&pÌp“pGp@pbp¼p÷qHq–rrÉs’tTtÚuEu_uufutrÚqvpUorn‰mÆlølVkÅkYjÞj}j içiÐj5j°k’lwmnsokpkqjrmsStAtÛuDusuùvuÔu tNsŽrêrpqöq›q#põpóqIqžrrQr¦ssŠttºumuÆuÖuufuCu(u&u-uBuQu_u’uvu$tVsrvq\pom“küiZf•b§^íW:[^BaŒdf‡h;iôkAl“m­n×oÔpîqqÙq×rrgrösks½sŽsrˆrDrqÙq†q*pÛp‰pyp‚pÔq&q•qçrcssËtŸu utu;utXsˆrpDn^l¸k‚jVišhÆh|hch¸iiOieihiki°jjÖk~lOm nop7qir‹s«tluu@u¹u¡u(t2sfrœqÓq/p‘p(o­o’oŸp pipåqXqÎr2rµs_ttÚuLuƒu|u’u²u×vvAvmvŽv’vÃv€uútÔsÄrAp±nÍm2jåhcd©`Ý[éW%N1RVTZ(]D`Qb‹d­f1g»ijbk˜lëm¼n2nLnoo¹pZpÕpÄpnoêo®ožo•oso#nÈnnrnjn¨n÷oio¿p)p¤q9qórar¯r@qËpvolÓj‚heÁcòb=a9`_Ý_ñ`Êa©b}c cVüW±X|YYoY¾ZZYZ×[/\]L_f”f¼f~fDf/fvf°f‚f-f fff/f1fSf“fôgMg•gègíhgWf¨d—b^y[2WðT­QçO3MQKfJ“JJ_J†JßK"KuKÇL1L‰M#M›NåPŽS"U–X‘[Ÿ^ðbReih‰jœlLlãm¯m³mƒlÜlLkÔk’k^jãjjij¦jîkTkkælAlûmïooøp¦qCq¡qòrFr×sIs—sls>rŠqèp˜o`lûj1fVbœ^rZ©V PíJÉDÌ>?7­/æ4÷9x=ðAÁE»H¹KqMN•O»Q6R±TUXVWµXÛZ&[²]^W^ý__–_q_M__ì_Ý_ž_„_}_}_z_Y_S_u_¿` `;`l`'_Ø^Ð]û[ÒYU(QƒMâJKGHDXBQ@??Y>Ñ? ???#?H?r?Ô@&@áA‚CDÿGÛJ}MÌQLUIYT]+ac×fDgiiªiài‘i”i›iªi–iLiiiOi}i¸iÜj)jŠk9llèmÃnmooZooÜpbpºpîp…pnòmÍkèjEgVcË_Z»UÿQŒLcFÐ@m:,3‘,à%¬*[.­2ô6¡:d=9?ÞAqBÆCÃE)F˜GÕIJMK°M NŽPJQäSVT>U&UkUgU8UvU»UÄU£U“UxU`U8TòTÍTÕUUTUrU”UTxS$R,PM]I˜EôBX>Ô;ü9?7m5‰4¾4X4”4†4m4;43ø4*4[55Å7a9J<>¢AøEœIâN(RKVgY¦\œ^˜`Ëb bÞc6dd¼eSe eÞff:fuf¨fÕfÿg7gtgÓh:h¾i[iÑjjjjjKjWjNi—hÆg'eŒc6a0]ÝYÒT¸PK(FL@ó;q5r/l)J#ƒÐ#þ("+¾/]24·6>7e839‹:÷<=9>ˆ@AˆC0EF¸HIIVJkJÕJñJÇJöK*K@K5K9KJ×JxJIÉIÖJJZJeJIûI>GÇF¤DwA·>:­7c4)1/3-˜+á+*–*ž*b*)¨)I(ë(æ(è)ˆ* +-~0j36ª:?CGÀKôOeR”UW½Yµ[A\W]Ô_3`uaabZbècDcjcÄdd_dsdadJdUdŽdóe dýdƒdc¶c‚c+b×aÎ`‡^r\yYàW™TO¤JEE@x;55 0+*Œ$· a{°d!³$è'W)Î+?,6,Ð-û/K0V1q2­4+5©7V9!:Ê>í?>ý? ?D?Y?Z?q?P?>ˆ=ñ=¡=¨=ð>>>=¡=;ª:8R5ž2A/",F)l'@%;#÷"—!ó!–!™!f! ¬ >ÍŸrÐ !Z"þ%Ã(U+Ï/Œ3Õ8 <@CuF˜IHLQNÛQR²TžVkXAYÃ[S\0\£\Á]Y]Ü^;^]½]@]]]8]\}[}Z¤YÝY>XŠWéV™TæRŠP|MôK”GþC¸>–:57/õ*”%˜ ºtß ºkk‘€6V¦  Ý!D"7#g$l%”&Â(>)Ô+Ÿ-r/0¸1Ù2ö3j3Ÿ3‚3§3Î3å3ï43ÿ3Ò3S2¦2"1û22"21ä1X0Å/Š.v,F)€& "â GP„ªÅ®×?d=<õ¢»¾Ä'šÒ â$((+þ/ù3é7u:Á=ÎAGDRFíHúK3MIO‰QdS/T!T©TÛU¨V@V„V&U¢TÿTTnTuTS4QÛP¬OšN»MÔMKqIZFÀDµBL?ˉ?U?¾@y@ÙA@ @:?¡?>›>…=ô<À;9|8)75û4­2È0.<,k*1'x$ ±ý)?9 ß ÉØ©+´€o}9ÂjôÀ¥ÆY | † ¿ ç1˜øLLNÁúÜâõEre9Í`î‹CÏ“-±µÙ¤ ¸ Χ{¾Fÿ¾ÿ[ÿtÿ{ÿÿ°ÿÃÿØÿèÿáÿù• ): 0 &l™Åç V#K%å(*…,Ã/0Ö2–3¦4‘4þ5”5Õ65Ú5‚4á4J3¾3–2ï1/Í.T-+á*—)'>%a#[!“]À¿.Õ — ¡r}ù÷œâK3míMƒŒ«3–]/jC<QÕÔö   Ï $ d d x … • ­ â î Ë k  µ p * Ø q  “ ¸‹-–“‘[ñÙÿ6þ¯þ)ýæý¨ý—ýýý‚ý’ýý©ýÉþ"þhÿÿÙ?ÅÞù R Ž ëOê¶a¾Û!P#¦%·'Ä)**Œ+1+y+Â+~*þ*;)º)4(Ö'á&W$~#(!î ‹÷U¥(zžb µ à ­éo™ŒWqYÿÑÿÀ&ÿòÿç a˜\5£ ÖÃ)ïÎ8ƒý®…AÍ2=]psz¨½ªdÜŸaôvö…Aõ´] ¹`Ó¡t6Þ6ÿÎÿ±ÿ›ÿ›ÿ‘ÿ ÿµÿí{õÂŽž·õj Ð £ ¨ÓŦ‰•Þ )€ v Ó!…!á",!Þ!O ‰ $¦ìyซiÿ»–1k € Ò a¤®-ÍúXÿæÿØÿëÿÏÿäÿÆÿeÿ2ÿ‹ÿÜÿ†ÿ+ÿ]ÿÃÿñÿßÿˆÿvÿø£çßÄÜMãQqcD^²¾Ä®•qJ<NgyIðkð›]VPgt’¶ã/QK*÷ßΰ›–” ·ÐÔáþ1ZšçE{ð~šÛ  ¼ sn­¼ ¯m©<–Û®gÕm½áÀ¹i ` ì õ 7 ?þu%SÍ \:Fÿ²ÿAÿ`ÿ¿ÿÔÿÅ8ÿ×ÿ‡ÿÜF.ÿïÿßb@ÿó„ÖÙ†4:îúº²Û7+þåÖ¿ÃÕTxoÁa ÿëÿÞÿòÿìÿúMy¡Ëèù 0R^^mz„š¡‘mS7ùìéÁÑúŸTtŽðTæ ¤  T ìd–Lˆ|!® ô 8 v ö 3 ¯c€ ¡®àÒD§N>K;ÿ¶ÿ]ÿª ÿæÿ‡ÿóJÿ÷ÿÿ©0*ÿáÿ¼{]ÿÆÿÔ=†RÿÐÿXÿEÿ¥<ÿ³ÿ…ÿ¬ÿþ*-'ÿ×ÿ±ÿ‰ÿšÿÖ1‚£°y'ÿÛÿ½ÿÁÿ¦ÿ¥ÿ¾ÿö!R†°Îæ.?Icsrema?ÚŸX ÿÆÿÿFÿ:ÿJÿ²ÀŠvO ÌP³ñCœ]°±˜'˜ùâ· ÝÆOH4ÆÆÿßÿ‰ÿ¼ÿíÿõÿ‚ÿ,ÿpÿÛÿéÿ±ÿ]ÿFÿ¶ÿ¾ÿvÿÆ,ÿ×ÿ«ÿÂ'n(ÿØU„kÿÊ"¡Õ•ÿ¡ÿÒ[ÇÓw ÿü?ŽÎêÅœRÿúÿËÿ¾aÌ,=Ë«“b?1=ASn…Œ“œ¡«ÃÐȳ°¤‡eUAÿöÿÑÿÇÿ½ÿåz¿”ù:3öÚÿOÄ#[›…;Êg\»ýÉCÕ)}Õÿýÿ}ÿ« ÿÝÿ}ÿ_ÿÈ&ÿîÿ…ÿlÿ’ÿ×ÿíÿÿ…ÿÿ÷4.ÿÇÿ‹ÿý{fÿåÿþj¥AÿÉÿ¼ªçˆÿæÿÿ¤2ÀÓu ÿÏÿÞ:”Ïï½o ÿ¶ÿ ÿŸÿï\Æþ"ܽŸuZU[NB?FLWhqmbc`QBBA*"FkšÑïöÛØ¨Nÿäÿ„ÿjÿjÿ¼*‡²ŠXÿªÿ™ÿáS±”ÿûÿiÿUÿÐŽÛPÿvÿÿ@ÿÁÿÓÿ[ÿIÿ‘3ÿÈÿWÿ‰ÿèÿòÿ¾ÿqÿÄÿ—ÿ´"bÿÿÿ˜ÿÐB|dÿÌ,—ƒ ÿ¶ÿ±;Ðô‰ÿÔÿoÿ¹iíò…ÿòÿ©ÿÕ*¤ °Oÿìÿ…ÿvÿoÆ9R?0Ê–zmM6,249>CGO[glt‡™—¥Ñ >WpY5ç™<ÿÈÿÿ}ÿË$Žö ì~ÿ²ÿ†ÿÙŠåBÿ‡ÿZÿ÷Ò>éÿbÿŠ#zcÿÜÿoÿ©Iÿ±ÿqÿÈ#ÿíÿŒÿtÿ£ÿyÿïa.ÿÊÿ¯ÿêgªJÿÙÿïJŸ– ÿ—ÿ¦1æ$¬ÿêÿ€ÿ³Në»?ÿßÿÃtÛ­Aÿäÿ¢ÿ±ÿÓ'xÃ"@6õÛ»ŒbIA3-%+6K\o~—»âû9NP+ Èx!ÿÍÿ§ÿÿÂuÀÈÄrÿüÿÿCÿjÿÖ[Ì ÿ×ÿ ÿ ÿµ°6ØÿðÿHÿDÿå‹}ÿÿÿÿ|ÿïZ-ÿÀÿ…ÿ–ÿö*ÿÇÿ[ÿ€0ÿÒÿ~ÿ¹?ÿÄÿª%¡,ÿæÿópɆÿ÷ÿyÿ“WF»ÿïÿwÿ®lJZÿàÿÆÿêY´ù?;¶Bÿèÿ­ÿ¿ÿÞ$e£ßùÕ­“‚l_T[fzŠ›©Áâ #ÿË€A ÿÄÿ¨ÿšÿÝ>½9ed¤4ÿ¼ÿ ÿÅLþGPÿdÿ"ÿÎ×o"+ÿEÿ0ÿÉc›(ÿ‘ÿÿÎ)DÿáÿwÿŒÿÚÿôÿšÿ_ÿ¥C ÿ³ÿ¡ÿØ=iÿŸÿÜW¥ÿ ŒÎ’ÿßÿdÿ”OTäÿŽÿ¤/á6 %ÿáÿñf»ú1êŠ1ÿûÿÙÿî6d¹ÑååäØÍÀ³¬©­¯·ÂÑáíûøôÕ®u<ÿçÿÝÿÌÿõ:£H^·FÿçÿËÿÀ’ú0ÒÿrÿMÿæäu!*ÿXÿ,ÿ½°SÿÈÿvÿÂ9L ÿ¦ÿyÿÎ) ÿºÿƒÿˆÿÓ.ÿ¼ÿ¨tCÿåÿÃÿøw¾iÿîÿͪíƒÿÑÿKÿzK)yúÿrÿlÀ0;ÊWÿûÿÌÿêQ­õ'ÞM*3Ll‡¡ÀÔÞßäéïðéãåëòëܸ”e-ÿòÿÿ.Y¤ Pu3ÎHÿÓÿ¦ÿ”ÿãJ¾4%®ÿôÿ>ÿCø‹54ÿGÿ(ÿ̇â‹ÿåÿšÿ¼&o,ÿÀÿ›ÿÃBÿðÿŒÿ“ÿÎÿñÿè3Hÿäÿ“ÿ×FmFÿçÿ¿'¢®[ÿëÿÇ.²â‹ÿÐÿXÿ€?r Qÿ°ÿ“ÿᆠ*ÿ‹8ÿàÿö!rÄó éÉ™oR98>SaxšºÐÜíõúöóìéÞдgF0 ?c–Ò6(òˆÿÝÿ¸ÿè(Œþ|ÿÎÿvÿ6}'ÿZÿ7ÿÊ–ß“ÿ¡ÿ½ `Oÿæÿÿ´ 7ÿ¶ÿrÿ°ÿøÿ¹UÿÀÿµÿõZ‡4ÿÙÿìF©¸MÿÚÿÊ&¿þÿçÿNÿh*™K‘ÿËÿnÿÀV÷<Þ…2ÿßÿú$p¶ãÿñÜ·šˆzwmo{‘¢±ÃËÌÇËÊî–xVC=KTj‡«ÏåñÏ‚$ÿåÿÁÿí.ò7äEÿ¶ÿ]ÿ¶ˆN¡ ÿ9ÿ2ÿ諤ÿõÿ¡ÿ¼lSÿùÿ­ÿ¤ÿó;ÿÐÿ’ÿ‘ÿÝÿâÿ¯ÿ÷GF ÿÃÿ» …s#ÿèÿö`º¨FÿàÿÐ7¸ð ÿîÿmÿy í_O«ÿøÿšÿ±;³ûà£UÿÿÿíB‰ÉêüëÜ«–tovz†˜¦ª¦«§—‚vqhkvŸ´ÎâøîØœSÿéÿô T§ãì£.ÿ¦ÿÿå™UtöÿRÿGÿã®û®ÿ®ÿÀ#npÿÂÿ²ÿç.Gÿ©ÿ¢ÿÑ ÿÉÿÎÿßJMÿüÿ»ÿä>~wÿÝk»±FÿÛÿóÀÿwÿdÿß²]cãÿ¤ÿ¯ÿû|Òé긎Yÿþÿø%[˜ÉÞìàÒº¦”ƒxllsƒƒ‡„wqz‘£µÆÐØØÜÓʧo7(n¦ÈéÔ­Wÿãÿ§ÿ›ÒXiÅÿÙÿBÿW Ç °ÿ³ÿÐ+‚0ÿÝÿ»ÿé/DÿÛÿ°ÿØÿêÿ·ÿîÿÍÿØ&]-ÿäÿÌÿü_™_ÿéz·š;ÿÛÿÏ-«ì´'ÿ«ÿ€ÿë¢7Zé[ÿéÿÄMÐÒÌ k9#Q‚³ÛéðàÓ½§xh\YRTZfm{‘¬ÃÐÞßãÖÆ£yMF…¾áÖË”EÿÿÿºÿÚAÐP?µÿóÿeÿy³ö®*ÿÃÿÐ*oyEÿöÿÄÿÒG/ÿðÿÄÿÆ)ÿÊÿ· ÿ×ÿ¾ÿö9G"ÿæÿÖ"yƒM ÿñm¯¡DÿæÿÉ”îèqÿÒÿ‹ÿÈuS$“ÿëÿï6q ¿º²’mL/5Jw¡ÀØÚÛ̾©”j\NPXo…œ¯»ÆÆÆ½¶¢ˆd6 >sªÒÐÖh:ÿþ{>‡ÿÓÿ}ÿ©BÌì• ÿÊÿæ6~w3ÿøÿØÿÜ+1ÿÍÿÌÿðÿëÿ¾ÿÉÿ÷ÿÒÿäCF ÿÝÿÿFxt? .z£‡:ÿôÿï-‘áÎcÿçÿŸÿ×Væ6·D [†ž³¬Ÿ‚eSHRa{•¨µ²®£–Š|ˆ–§²µ´»»µ ‡kN@5Hi˜ÅÕÒ«‰\ÿû5—î*ôrÿçÿ•ÿÄ;´Õ.ÿëÿø:lrNÿîÿí1!ÿïÿÌÿæÿÞÿÆÿÚÿþÿîÿø$F0 ÿûHspG .h“]ÿô kÁÛ‘ÿ´ÿ²"²!Êq++Ab}ŽŸŸžŒs[LP\p€Š”ž¨¬¯¸¿ÃÂü®¡£¡”{^K<Kh”¿ÒÙ¼•gJ9J›òû¿DÿËÿ®ÿñl»gÿñ\‚n6 $)ÿìÿç ÿêÿÛÿÜÿä ÿöÿï8@*-ew^4 Ho|X *tÅÑ‘&ÿÏÿÕ&§Ý„E+#<Og}Ž¢¤š‚pf\amŒ–£­³¹ÇÐÒËǽ°Ÿ’dNCMVn“®¹ªž„cH4:>i½öµ<ÿÝÿ¸ÿùd·¹nÿùPogK$).ÿîÿäÿó ÿøÿ×ÿØÿåÿàÿíÿúÿú6=" D\^R=58:Jo‚qI#a«Ý¼YÿýÿÞƒÝýÒœa@=8DNd𩍍œ†xy‰’›¢§«°¼ÄĽ»µ®ž‹tTJVvŠ•¦ ‚_PPJMNeŒ¼úõ¬=ÿâÿÜ~»¨[ /\pW, $%#  ÿáÿéÿûÿæÿÕÿÜÿæÿ×ÿòÿùÿû.G2+Nd]C559Kfv{fA,1_¨Ç¥QÿôwÀÚÓ¡vR88;Pi‚•Ÿ°°ŸŠƒ‡‡Ž™§±¹ÃÇÈÁ¼°¡‘ƒ|nr‹¤§™˜‹nTKQKUkÂÕÓ–2ÿîÿã#x¯¬m(Sg]I1(& !ÿìÿÚÿø ÿîÿáÿáÿæÿèÿÙÿþÿþÿü99';YXE;<FTTUcmr`2D‚°¦m'T›Ç¬`QIS\kv…ž®¯£œ––¦°¶¼¼¾º¶ª™Ž›¡©º»¦ˆzujfiplt“¯Ã¨m&ÿíÿ÷5†«“`,5SeT:?F9# -ÿüÿåÿéÿæÿåÿðÿìÿåÿÞÿÿÿýÿüÿü &@B% DZYF21@MY^aqpO55Zެ©y:P‹¶É³–t[WZkt‚–ªºÀÆÀ·«¦¤ŸŸ¢¡Ÿ¡£ž ®¼À¸´§’}rma^asˆ Âæi*E„¤”_7*4O[XL?B?" (2#ÿþÿàÿç ÿòÿÚÿàÿïÿçÿÝÿßÿü:R:.PbT7&,G`\R_nulTIVz«¸•V''F€°À¼qp~„”¡¶É××ÔŶ¤‘ˆˆŽŠŠ”¢­¶ÆÊ}|zvjek‚¢·Ä§j4 ?q›¦…V33KWYODIMD. 'F6 ÿçÿÞÿû ÿîÿßÿÛÿßÿäÿÞÿ×ÿÝ   (PR9"5TeZ;&4S_begpobRCQ‚«²Ž`=.Iu¤ÃÂ³šŒŠŒ”—ž«·½½ÂÀ¸©—Œ‹Š‹˜«¸½Á»¶ªšŽŠŠ‚}z† ·Æ´“b.";p–š‚ZB@KZXNLMRL5"?FÿôÿìÿþÿÝÿàÿïÿèÿÜÿÚÿÛÿÛ 0>VT='%<cu[70D\opfceppTCRy© {M9Ds¡ÀË»«œš ¡  Ÿ™—Ÿ©­«¤ž ž§²¸µªŸŸ£ ›š˜Ž•©ÈÐÀU1&Ft“mK=Lej]KBN[U@'0EG0ÿó#%ÿòÿáÿïÿÿÿîÿØÿÛÿãÿÚÿò +',@NQE0,JijVE@J`szuo|ƒs`Zi€˜­¥ƒ\GWsÀÍË»µ°©¤£¤Ÿ››Ÿ¢¤¥¥¢¢§«­««§–˜›“‹Š—¢³»À«„[=C]—’}aQR`lcRMOXWD.%-@H7 #ÿýÿôÿõÿúÿøÿåÿÕÿÞÿçÿÚÿêÿø  )0+%)9U_H/3Lck`L@Kj††z‰‹„yphs“¬«q^Yr˜¼ÌÈÆ¼°¨©¬«¦Ÿš˜œ£©¦¤®¶¯¢žš—˜•‰Ž ¯»¯–rNFSxœ©˜wfemvseSJS^[J4(1?C7 ,$ÿüÿõÿÿÿûÿçÿÝÿÞÿäÿçÿÚÿùÿþ -32.3JZSA:ARcjaMEXt}|€‚qm}”¢ž’~hgy™¯¼ÉÆ»ª ›–”“””š¨³°¬¸¿µ¥¢¢—’Œ’ž«·¶°š|f\hz™‘|gdmrrkaZX\[M>7:CF=-"' ÿïÿßÿæÿòÿïÿäÿÛ ' 2>=7<FRUMC@Jam_LKYiu{xpn~‹†yrvŸž‹wny‡œ´¾¼«ž“ˆˆŒ•–›©´´°¸¼´ª©ª£š’“š¨¸¾¸¤pt…–šŒ{kdhptnc`bfe[L>;EOL>0&'(  ÿõÿäÿãÿóÿÿÿòÿÝÿÚ ÿþ&%'3=AACNVQF<?TeaSLQ]o€…vzƒ†„€}|„”™Š}wu‚–©µµ¶¯¢—•™–—¡««¨®±­¥££žœ£¨«°©˜‚spoyŠ•“‡€}€|skilmh\K?;ALOB/$#)+  ÿüÿêÿèÿðÿùÿ÷ÿæÿÕÿÖÿýÿù%%$ #4DFCHMNJA>FRZ[XWZh}ŒŽƒzw~‰Žƒz}ˆ’•‘…yv} ¯Àļ«£ž˜—šŸŸž¡£¢Ÿœ›› ©®«ž”‡shgqy€‚€|Š•›’mltxqaM><BKMC3&#'*( ÿüÿîÿëÿóÿúÿõÿèÿÜÿÕÿÕ !$ *7;>GNNHCCCJV_b`\_jy†Š…}|‡‰†€{}ƒ‰Œˆ€zy€…¡®²¬¦Ÿšššœœœž ¥©¯¬ †snpy„}…ˆ†‚ypmv|veVKCDKNH<3.++*%ÿùÿøÿûÿúÿõÿíÿåÿâÿàÿÚ "&%&).7FNMFGIFHQ\ceb_\ct„Š…~xw|ƒ†uqu{„ƒ€|tu}Œš¢¢ŸŸžžžžžœž¡§­­©œ}€ƒƒ~‡Š€ob`epzyiVPRONPND;;<81,% ÿúÿëÿçÿêÿíÿëÿà5N\O08T]N9'+C]qn`H1*)@g‚cF43DO]mx|wung\MDCJLTaq‡ŒŒ†wj[I?=IUbip~†‡~xrjfehmmeYURLF=<EOROPLA73;MUJ4'! ÿþÿõÿõÿýÿùÿæÿØ+PeX4"Edj]=#DdrpU6!.No‰~[0!5Sgp||vnpqj[I?=FLXixƒ„‚{wsqmg^RLMUW[`l~‹†zgUI@ES^[QNLLIA<=DJPZ[VF4,5DI@1 ÿûÿøÿüÿôÿÞÿø>^{o><cvrR06]ygI1(9Rk|t]>%%4Smz€vm^J@EPPNPWahjed^WOHHKVes|}|x}yjWJJQbt‰„|hO<7<;=CJOMF=33<KVXWK9,+7GLA) ÿ÷ÿéÿéÿóÿöÿ÷ÿüÿ÷ÿäÿî/f‚V"8tX+9e‹ŽtH(*BkŒ~T$Eh€„ydN;*)2BGLZhtso_O>-&"-:Ph|‹””›“`F8.9Kf~‰”ˆoN7.'-6AJLOI:17DHINMG<.,9FF5ÿòÿàÿßÿêÿìÿìÿòÿñÿåÿãa‹|I7t—…N&)Oq{^8'3Y~‰yR.;f‚€eSE:617DZsodVD5*'"&*6DVfq}€€}{~†‹‰{mYB4-47E^r{qbK3%(3Faj^F<;6<N\`O1(;A7ÿýÿü ÿöÿèÿåÿåÿêÿïÿëÿÝÿõC€‚Lÿþ(n•ƒL 0\~‹qJ(1`ŠGÿþH{ “e,*6Khƒ››pQ15Nez…‹ƒraTJMUfx‚ˆ}nV>*#Ffv|iO3 5Ukm[OC55DVaW?" "7?1ÿòÿ÷ÿüÿëÿæÿêÿêÿåÿÙ)pO-sœ…E/a~ycC,6XšŽpH).Nx’‡j: Jht}uo^M8  ,E]oy†ˆ…yrh]N>3+/4CQaoyˆ‰„nP5!"(>XjseU: +H`tkN,#9Sf[8 ++ÿìÿäÿð ÿôÿäÿßÿáÿçÿèUnJÿÿ.x¢ŽK 3b|sM)/_™²Ÿg5(:m¥¶¢aÿøÿìT¬ “nGÿüÿèÿÕÿÞÿî?jŽœ¤š”„mWIEA=5-)+,//7@X{š²­¡|R+ >^koU-ÿïÿûCnwe97eu](ÿöÿû$%ÿøÿÔÿËÿá ÿïÿÞÿÚÿãÿðd:ÿüÿò ož‰E 0dt`?$4VtƒqG*3]ˆ˜b09g­ŸGÿõÿÜÿæÿù3H_n{{ynaWRRPPUY]XL<2/,,)*+:St‘¢´ª–i8 ÿæÿáÿê>bwdAÿôÿøBmvh= ÿû8PJ4ÿóÿíÿý)ÿóÿÌÿÉÿç ÿïÿÓÿÍÿà7ÿöÿÓ d—„>ÿþ1apV' 2WpfCX—®ƒ:ÿûÿÚC“ÉĬh%ÿïÿ½ÿ¾ÿÎJ„®³¶›zQ. $<Vmx„r^QIDA=6*%$2B_‚›®œƒIÿÊÿ¦ÿ¿ÿì1vŠQÿèÿÜH~™t0ÿðÿÔÿñKX8ÿäÿÛÿö/ÿíÿÍÿÏÿðÿÝÿ¿ÿÅÿäÿÈÿîPœŽAÿù&_d? 1PZR96bŒ‹`#ÿû3u¥Ÿx2ÿüÿæÿß T¼ÞÒ¸ƒW-ÿîÿáÿéÿìÿü %@XkxŒ••‰…|qaQ=$0V~¸’Cÿöÿ½ÿŽÿŸÿÊdŠ–h'ÿóÿÝ;nzOÿçÿç6E3ÿÜÿÑÿë$ÿäÿÁÿÈÿðÿùÿÆÿ°ÿªÿÙ6Š•Pÿþÿõ!Vh;ÿë,PU<G›ŒMÿäÿùE›¾­Qÿëÿ¤ÿˆÿÁc·í"´cÿÞÿÊÿºÿÌÿã/ALUXY_pƒ€„ƒ|l_L4 ÿÿÿý&Y Ðé»|ÿ­ÿrÿXÿ›ÿ÷_¾Ã%ÿÇÿ°ÿÕ0…—iÿàÿÞÿý(A/ÿÿÿÏÿÄÿà ÿÐÿ¸ÿÈÿö ÿáÿµÿ³q„LÿãCT8ÿëÿü(HH- @du\,ÿÿ Ttu?ÿöÿ½ÿ ÿÏ{ÍíúÓ¬r9 ÿäÿÞÿâB_p}~ym[KA?>0(->M[lrnb_R<ÿýÿçÿÎÿÛÿü<±ÛÃ0ÿÎÿÿbÿ‘ÿñd¼¸‚"ÿÙÿÔ UuZ'ÿóÿØÿë9-ÿÿÿÏÿÀÿÝÿùÿÎÿ·ÿÎÿøÿÖÿõSzLÿÿÿè4P.ÿüÿë&DC$ÿþÿð3\\4ÿàÿö4q‹Zÿ¬ÿkÿŠÿÖWÖ6ö©?ÿâÿ¯ÿŽÿ§ÿÃÿþ9r§½Åµ¬ž’‚kS@0!ÿòÿáÿÝÿô ,So~‚•™ŽkKÿãÿ¹ÿ—ÿ±ÿÞ7¡èæ“ÿmÿ/ÿ?ÿÊkܰ/ÿÅÿ«ÿì:nj,ÿéÿÉÿá6)ÿûÿÉÿºÿÔÿþÿöÿÉÿ¹ÿËÿö ÿø0hTÿï @XDÿíÿý$7/ÿÿÿô1PM(ÿùÿê Csi,ÿÝÿ¡ÿ«ÿØ5”Êæ´qÿÀÿ—ÿ‚ÿªÿßNj‰”žvVD9+ÿúÿìÿØÿÅÿ¶ÿµÿ³ÿÂÿÛÿü 'Z‹­±¼¢{4ÿêÿ¬ÿpÿtÿÿëQª÷݆ÿ†ÿiÿ‡ÿûz¼±SÿøÿËÿÞ#`h6ÿîÿÇÿÓ&!ÿõÿ¸ÿ¢ÿÍÿïÿ¾ÿ¨ÿÊÿúLJHhRÿÿÿþ8$ÿÿÿæÿë$DBÿóÿè W‚qÿ³ÿ…ÿžˆ×øµaÿóÿÿgÿRÿŽÿÞI¯ãõеgC*<LWUP>)ÿôÿãÿÜÿåÿßÿõ"gžÊþì·SÿØÿpÿÿ-ÿj²%[÷[ÿ°ÿ+ÿ<ÿ¤F½¾mÿõÿ´ÿÊ\d(ÿÛÿ¬ÿ¼ÿö"ÿØÿ˜ÿŸÿÖ ÿÞÿ«ÿ§ÿÇÿîBÿî ?ZL!ÿùÿõ "!ÿýÿØÿØÿõÿõÿØÿßGjKÿÿÿ¯ÿ‚ÿ©ÿÿXˆ`ÿµÿkÿYÿXÿŒÿÃIhwGÿ¶ÿyÿTÿ/ÿ#ÿÿ&ÿBÿqÿ™ÿ¿ÿä%>TQG)ÿôÿÕÿ±ÿÿiÿ5ÿÿÿ7ÿQÿ‚ÿ½ÿû3T€m;ÿÒÿ_ÿ þÅþêÿ8ÿÌiÄï›ÿ–ÿMÿÿï_†Nÿ÷ÿ²ÿ³ÿð0DÿÌÿ¤ÿ¶ÿø#ÿºÿÿœÿØ ÿÿÿÊÿ›ÿ’ÿ¼ÿúÿù2aLÿðÿë ÿôÿÔÿÌÿè ÿöÿÌÿ¸ÿÈÿþD\8ÿêÿ¢ÿžÿÔ4”ZÿåÿrÿLÿ]ÿÒHÆ3d‹mBú¸’’œ·Òý,`”»Ùê%#ùñìéÓ¶|7ñ·šz€Áì4™åð¥QÿÂÿJÿdÿ½fU5‡ÿ½ÿCÿAÿ¾9rLÿäÿ”ÿŽÿÓ$4ÿ¾ÿ—ÿ½ÿû ÿìÿ«ÿ…ÿ§ÿçÿöÿ´ÿ~ÿŠÿ®ÿË Sj@ÿôÿúÿ×ÿÉÿÚÿü ÿúÿ×ÿÀÿÑ 9A ÿ¶ÿ}ÿ‚ÿÆ /,ÿæÿˆÿ?ÿÿCÿ–è3_‹µßmÍ.€Æõ+Os‚“ŠpO>;;8"$Egw|]8ûÀ}7úÁžnv¥úQkiû}¼ìAÿ©ÿ—ÿÄ7¤ªHÿ¬ÿ2ÿ+ÿyÿô:(ÿÖÿ†ÿˆÿÈÿêÿ«ÿ—ÿ³ÿéÿ×ÿœÿÿ´ÿô ÿÙÿÿnÿåf`. ÿàÿÊÿÕÿðÿÿÿ÷ÿÔÿÁÿ× O]"ÿÔÿ ÿÍ=Á àÁÄ~ ŒõFÜVÛ£unq R  • ý  J G ?  é § U Ð ¼ ® ¿ Æ ê  b ¥ à  4 L 3  à u ¡ ,¥Eý!Àj˜¤I½†sÄHp Qÿ¨ÿaÿ¢`Fÿéÿ¢ÿ”ÿÁÿÿ ÿéÿªÿŠÿ´ÿïÿôÿÒÿ¤ÿ˜ÿÐÿùÿ¿ÿƒ@aBÿþÿÌÿ¶ÿ¹ÿÂÿ¯ÿŽÿmÿdÿzÿÿxÿRÿ-ÿ2ÿfÿžÿ´ÿ”ÿEÿ'ÿUÿä|<d¤.ܶ‹3° l Éè  k ÇcW6’ÞÉÀ‚@ä8Û“L:.eªzÞ9Žó@……M!Ø ¢ƒ¢#  š Å µ ¬D¥ãæ-9XPÑÿ9þãþýÿtÿ¼ÿÅÿÿSÿQÿŒÿã ÿÝÿ”ÿÿµÿæÿøÿÊÿžÿ¸ÿëÿôÿµ0ÙjØb ÿùÿïÿÕÿÄÿºÿÃÿÚÿáÿ½ÿ›ÿ—ÿºÿë‡7$â˜7$~Þ  : ú †  ÏgÇ_ì,n<û7g=Ð}ȇL'ñíôSÔsñMæP¤ëé̃RìK¼K˜’\ÖVÚ- ¿ ä ªƒ‡õã’çÓÙ>EƒÃž8ÿÓÿ°ÿë1$ÿâÿ ÿŽÿÁÿþÿóÿÍÿÀÿÍÿôÿætcZ¶D-ÿñÿØÿÐÿÐÿ×ÿÛÿÒÿ°ÿ¥ÿÊ!˜Now—ÏB  â ª[¼ôö:÷Ò·uã L!d"ˆ#N$$Z$¬$À$à$Ø$Â$›$~$q$o$t$[$e$‡$ü%˜&6&¤&Ô&ü''\'„'¢'Z&ã&2%œ%!$¶$d$#·#5"y!è èºòøú HZ% Ê Z {ó1“üþÑà•gö9ÿ¡ÿjÿ“ÿ²ÿ¸ÿrÿ@ÿdÿ´ÿæÿîÿÒÿµÿËÿèÿì ÄÕt‹Ë›WSMh„©ÁáD›ÞÏòLX¤4 ^ ® "Šg:ðX×>ý!¿#Æ%Ô'š)#*A+k,o-Ž.z/N/Ú0j0É131d11q1k1g1p1z1a1m1˜22£3*3€3‘3ž3š3¼3»3·362v1`0a/.².(-³-X,ä,h, +{*µ)'L$Õ"NLjmIõ¹{â ¦ à  â Yʉ±ÿB&û‚c}0ÿßÿ²ÿÅÿû ÿËÿ´ÿ¼ÿØi ´ NÒ¸k%8ˆÑ6 ¤<¼  Y  ¦Óvƒ^yjà ¬"x$%Ñ'Ž)**ï,ò/132ñ4m5–6Ø8"9—:å<<Ú=©>>–>§>>I=ü=­=p=E<þ<õ==†>>¤? ?;?f?|?µ?Ä?Ú?a>¥=k4´3]1×/w,ö*/'ž%0"à z7º¹çš‹]ż ¤ ¹ !ÎZÛ Â îŠ-ÿ°ÿwÿÿËÿÆÿ¡ÿ|ÿzÿ­Ú¦Ü- , Ò o ª Ø a á  dS_>Ü<†0;´ó^••#!g$§'v)È+‡-l/H1F354ø6½8±:µ<¾>‚@AiBãDwF\=%;8Ú63k0£-Ä+9(ö'%'#C!2^æþçn·9 N „ &x Ö3/ZϤqKÿüÿÊÿË ^ȯšµÄb»¸erí:6äk-s s!Ö#R%Á(˜+í/1Ï4&68::a<¤>¹@‘BJD&F&HBJCLM³OkQRþTuU³V9VÂVµV¯V&U‡T–S¡RÃRQQPÐP¹Q#Q¶RlRõSLSŒSËT>T­U!UTÝT%SRÃQóQPO(NM8L“LKwJ]IFéDA¢>Û;æ8¿5æ3N1^/-ü,)ó( &7$–"‰ "<õÔ" „  ió_Úx¤ ¿*ÿ¼ÿi*¡&ð#¿ †ü¼oÛ$êºþ!k"Þ$%%Ý&«'º(Ù)Ã*¼+¢-&.ì1437$9ö<{>Ê@èC1EuGÎIÓKŒMNÏPÀRÞTéV¿XHYÜ[A\Ð]ã^¼^è_^Ô^”]í]1\:[9ZdY½YaXãX¾X«YYÊZ‘[[v[š\\\þ]!]\˜\N[þ[¶[Z[ZlY¢X¹XWMV¯U†T)QîOŠL°JGDD4A8>Nd–eeŠe°e“e)dÖd“dhdQdOdc–bÝbJa¡a`^Ù\ÕZ°XUµSP!MJG•EŸDâ?Ž@BAAB°D³F•H¹JÖM.O´R"THV8XOZU\k^'_Œ`ÚbŠdSf)glhQh™hõiAiÃj2jzjjÆj¹j›j iUhfgtfÈfVfH;Ã8Û5Ô2²/Ç,Ø)Ç&Ÿ#Ž f8Ò´Å ½ Ó 6,JLFuC/?ÿ>Q=!=?=-=—=´>w?µAkBãD)E*FPGüI¡JÑK±L„M¾OeQjS%TòVÖXê[']6^ü`zbc«eNf»gîij•kýmUmþnUn%n nnHnšnÁnÇnénÓnªn m{l¨kÐk=jájÕjœj©jÍk\l lÛmXmlmfmGmImqm²mãmêmÍm´m´mÆnnan¥n»nŸn”nynn3m”lBjÞi/g½fdHb_µ]k[aYÝX‘WDUÎS³QNN‡KøIqGDaAb>:ê7¾4 1V-ô*U&Ç"úØüa¹nˆS!O¯LÐJH¿GØHGëHEHsIYJ·LwM×OPSQÁS‘U0VFWXYZZÖ\k]º_`¡bNdevf§g’h•i jÄkÙlÎm«n¹oˆp@papKoào‚ofo–oëp p poþoÒoXnËnmMl»l\lAlkökúlPlÎmLmœm¡m—mpmMmYmŒmèn+nunÁo!oˆppŽp÷q8qFq]qrqÆq·q`pZo:mâlÎk¢jdhÍge-c~b#`ñ_Í^ª\÷ZõX^UÆS7Q NÄL;I2FBÀ?©ô;6ù3¨0È.j+ÎfCdãcÿcWc[cscÂc²cÿd­eÙfêh i j+k{lán/o[pžq…rSr’r©r‚r‰r”ržr•rrXrrr-r°s^sÑsëssJrãr”rq{pÄpo£o–oÎoÉoÂoàoæoÔovonbm½m4l×l“l&kÈkpk`kyk·kÜkèkæk×k¥kÕlMmNnFompq§ràt"uƒv€w?wjwˆwww”w¤w±wvw,vƒuÊtÙsòsr&qNpzo¥nºmäm*lˆkék(j=iHhzgÂgRf=d·b$_ƒ\jY½VmRŒN&IÿFB>È;È9;6€hµgígŸg†gÚh(hzh€hÅikjak këlÀmµn­oÃpàrsOt1tÍtÎtÍt•tt[t)sÖsxsrŸr†r½sJsßtsØs>rÛrwrq£qp[o¹o{o„oÃoÆo¸oÈoºo•o=nÛnwn mïmßm»mZläll\l\lzl}ljlOl2kòll~mnnUovp‡q°rãtufvMvñww6w,w7w.wvûvõv²vRutµs°r½q×qp-o;n]m‘ml‰l7kØkkDk kj›iíh.f#c~aa^¥[_WyS»PLŒIzFªD)Awjùj½jýkell„lÚl÷m3mÅn„ooŒp3púq¢rƒs™tÔvvêw`wEwEwv÷v¯vYu×uBt½t;t%t\t»tütÄtAszrðrrqíqWpªpouo8o3o^oRoJo[o{o–o¢o o–o”o˜oºo¢oCn¿n\n8n7nNnHn(nmØmŠm{mžn(n¥ogp(q$r)sPtŸu’v2vLvpvuv™v²v¶v°vÍvÈv·v?u¨t·sÂrÄqèqp)oIngmÓmSm:m-mZmxm§mûnnm7kÐiµh(fcŒ`]]9Z VñT8Q¿OkLÚkúllŠm(mÖn_nªnÎooup pypëqlr r†s[t‘ußvþw’wðwæxwýwôw¹wuw vv*uáuàv v vuƒtÛtsrrærMq²q p‚oôo¶o¥oÊoÁoÔppZp½qq_qq¤q¬qÒq¬q;p§p;pp p"pp oùoÍo„oEo"o-o'oYo•p!p°qr¨s›tq€pìppipipZpXpapUp,oïoÆo ojoGo(oAoNoÇp‹qtr&rrßsstsÜt9t”t÷uOu´uÕuóuztÃs£ršq§pØp#oFn‘mÞm¯m§n(nÁojoÏp#pÛq pëp oWnXmjlj‡h³féeGcób`ØnnÇowp'p¹qq7qCqkqÆrVrÞs\s­tt­u¦võxx­xÁxóxÿyyyxüxÖx±xšx˜x¤xžxŒxBwûwkv¶uåu(tšt&sÌsQrër…rvr“rôs8s‘ttbt£tœt„tJt*tsîsrärq\pìppzp`pnpŒpppcpFpoäo¢o]o%nÔnæo?oôp”q"qqçrKr½s4sºtHtÈuLuuÜušut!sr&qjpÙp%oŽnën¶n ooÏppíq-qÆr#rCqÔqRppoDnLmkÐj«iÌhÛg£o¹ppÂqoqñrArMrNrmr¼s?sÄt2tWt¦u>v@wzx]xÀx¢x¼xÀx¾x­xœx†xexbxƒx´xÕxÐxÊxxVwÍwvFužu2tÙtt:sþsÖt tctçuNu©vvTvhv:vuÚu·u~uItÇts=rrqµqqmquqŒq”q{q8püp²pkpoËoxon×nÕo1o‰p pƒq qrr¦s>sçt‹u1u“uõuÐuŠt¿sÕrçr9qÄq:pÎpOp%ppˆqLrrƒrºs3sŸtt sºs&rçrrqEp€oÆoCnªmÐpõqCqÔrlrÜssss'sis×tJt›t—tÈufvawcxxCxxxwùwÍw w~wVwaw˜wÝwùwúxx wîw{vÛv0u·uwu3u tÉtÅtßuPu×vcvÌwwOw_wRw!wvévÖv¤vmuòuQt¢ts»sjsMs1s2sAs6sr·rXqîqq?póp¨pBoûoÉoÝoïpIp²qKqßrwrþsŒt/tÓuuèvtŸtÝt»tÙuv{wTwÃwìw¼w»w£w€wFwvÏv v­váw'w?wIw}w‡whvÿvˆvuÄu–uSu9u#uauµvMv÷w„wãwûxxxwäwÎw´wœwtwTwv…uðunutØtÊtÁtÓtítïtåt™t6s¯s6rÄr_qûqxqpÆpÄpÅq qTqÑrPrãsksùtu$uÐvDv—vv’vCuØuItÅtlt/tsïsãsÓtt¡u@u¯uÜuÞuýv›w vïvsv7uÿuÁututÇt‡tvPvLv[vŒv½vÏvÅvÅvºv§v›v’v©vÎww7wgw¯wÐwÄw”wywlwgwkwawiwƒwµw÷xwüwÊw´wÀwÐwøx#xPxˆx‘x—x.w—vµuåu$tysìs>rÖrr²rësTs£sñt;t’tôuduÓv@v²wwNwnw’wšw®w“wJwvøwww w5w`w†wÌxFx‰xMxx}xõyxÏx‡x7xwòw¿w„wVw vÓu©u¤uÑvvlvžvµvÉvçw wWw{w{wUw[wÌx1x,wäwÅw­w™w{w]wv¬vKvvvuøuæuôvvYv£vçww4wIw`w‹w°wËwÂw¬w†wtwUwvãvÇvÉvÂvÐvÚw wMw¢wõxxxx7xvxªxàyyByy{ykxÝxwv'uStŽsøsJrðr®rçs=sÌtDt©týuCuuçvOv­vúw,wbw†w¡w¸wìwÿwÙw¯w¸wèxx3xpx¥xµxÕyKyŒyHxçxöy-yKy+xÚx|xVxJx(xwñwÏw’vcvRvwv¯ww[wwÄwìx>xx¡x˜xˆxŒxØxòx¡xwÍwwew.wv¹v?uËu‰ulu5utúuu/uvv§wwswÝx0x†xšx—xOxw£wJvúv£vrvTv_v[v|v°wwWw›wÓwæwãwêxx`xšx×yyWy©yºy»y1xswdvsu‘t±tsDrîr¯røs^tt“u uzuÇv vPv³ww/w;wUwfwcwywÄx x x x9x‘xàyv›vÕvÜvüwvývävØvÂvƒvyv·w0w}wÔx2xµyKyéz’zèzÿzÐzóz»zDy8wävÑvmvTu«utÝuu#u|uôvfv­u;u$uUu´vywYx*x°yy¹z9zuz‡zä{zêz_yÌy xŽxw¹w_w v}uÆtït1sràrur#r)r'rrrÎsUsÐtItãu(utÈt t€tRtBtEtst–tåuAuÉvMvëw˜x=xØyAy£yÊyêyæyéyáyÝyÏyÖy¥yXx¹x&wFvAu&t#s\rŽr-qîrrr‡s'ttºu\v v|vÊvÌvÐv»v´v©v¢v‹vLv6vUv¸wwuwÇx6xËyhzzLzuzKzLyây`x9v u@t§t{sÂs1rás s4s©t0t¸u$tätÒuuŽv|wxxiyy¥zdzõ{I{w{ü|-|{bzÛzAy§y,xÙxŠx*w„v½uËtåtsPrÌrUr4rr>rrrÅs sNs©sÀs‘s:ssrñs sMsÂtt–u4uðv“wAxxÈy›z+z”z§z»zµzÈzÆz°z€zyz-yºxÒwìv°u^trºq¶pœpoÜp8pjqqÆrÂs¤txu\uøvvvŽv”vwv}vƒvƒvjv6vv vHvšww:wŽxxµy8y{y»y¡yxÿxww9ufsÂrùrºqùqlq q7qzrrµsSsátétßu-uÉvÓw×xÍyžz?zõ{v{×||–|»|…{ä{izázIyÕy™yay xew­vÃuØutEs¼s&rÐr‹r‡rr¢r§ršr˜rlrqºqqxq_q˜qùr¢s*sætÍuÅvŠwJx+yz z¨{zúzözè{{zðzªzœzpÀpSoüoìoÒppƒqJqýrútuJv8wx/y4z1z¹{zûzðzÚzðzózÓz‰ztyøyKwîvŠtšr‚p[n^lÊkj+iviµiôjèkãmIn­p(q£rçt/tëuXuyuôvGvfv4vu¾uEtùuu2u uumuøvQvšww@wJv»v9tús1q€p~po}onn‰nÝožp8pÄqOu@uJu­vrw™x¥yzqz÷{[{|{½{Ø{ü{Ä{\z²z!y˜yxªx‡x|xOwíwƒväv-uu tŸsøsTrÐr}r6qõq¨q0p©oøo4nŽmúmËm mñnEooûqHr±t%u^v|wÒxëyàzMz¥z›z’zozlzWz4yäy»yx?v°u)rþp“nk¦iÊgéfÝeâeófg0hLjk»momqrºsËtnt¦uQu¹uØu…uJtÖt/sºs¦sÐs¡s§sútŒtóuYuîv=vhuïustAr¨qpo¢o#nÒn9nnRooƒoñp_uYu^u®vfwuxdy*yòzMznzHz]zOz0yÂy@x‘wæwUvÌvvuv}vrvCvu u,tËt¦tssÿsfrðr~r q€pøp3oTnDm l-kOkjÉk1kˆl‰m©o\q#rût£vwªxÓyÑz4z—zŒzvz6zyçy»y[yxtßsûsrqp›pdpGo­oBoNo¨oËo×oìv uzutÚtïtçtâut×tAsŠs9rør„qñqnpáp&o®oyo­oÁp!p»qRq†qºr:rès˜ttTt%sçsDrÀqÐpÍo?m•k›i‰gÎf?e‹dðe.eHfPg‹i­kúnop¤rhtu^vòxxµxåy[y{y‰yxjwbvuGsôqÐovltisfXc;`”]å\OZÔZé[-\ä^¥aQdfûi©kánCo´p¨pÚqpq¦q­qOpùp‹poÙoêpopíqŠrr¢sdt6u u‡uæu´ujtÀtsjrºr]rRrSqÛqyqˆqÊqÔq¹q¤vuàu-t°tdts¸s¢sTr™qËqfqpœp o‘on]mëmÄnn2n­olp0pƒpãq¦r›sttttPs¬sQrŠqšoÿnLl5jhfcevdŽdrd:ef hj;lªnêpÌr‡sñuœvËwžwûx¹yyxZw¸v«u¹tZrþpón·kåif%c@`Å^=\®[6[7[a]^¹a[dfÆihk“mÍo%p pjpúq7q\q3q pËp‚pyp•qqrFrÁsQt tÔu¥v&v‡vgv.u´uRtïtrt5tOtotsÎsët"t sãs¦w)vTuxtºtströr¯rNq‡p¼pNpo€nùn“n%mslýlÏmm>mÅnŠo_oÌpOq0r@sw§v°u—t~surhq qpoÇon–nKmãm…mDlêlFkÃk{k¦k¾lGmmînŽoAp,q5r0rüsât5t#s®s›s[sr!q:oÀmúl8jÕiåh×h-gdggg¦hÛj6kìmhnÉp!qlrætu uŽv7v[vIuÂu`tºt!sqópo|oÙp{qq°r(r˜ss¯tStÇuuu!uOu¼vVv·wq•q¾q»qÕqýrNr_rq¤qŸqgpõoÜn¦lýkMi¥h,fäeVdQc¤c³cyd ef¢hi|jÙkêlûm“nnnmêmØmÐm·mÇmÛnOnòoÄp~qqdq¨rrxrîs,s/ss s‰t,uuÒvºwæy yíz•{f|| |Â|½w”všu|t]sUrKq—qpÇpUpoåoùppApUp,oâo€o&oooioØpepÂq9qÕr¡sut4tðuGuzuFut¼tssàs+r3q4pGo€nân&mšmlõlÞmDmÝn–oocoÍoçoÐowo&nónÏnúo_o®oŠo_o±oöoõouo nlËkNjigÌfôfTf4eÔf!fÔhi*j.kkÔl«m.m‰m…m}mamXmgmnm¡mÒnWo oßp¢qqmqqÖr(rrÆrµr›rœssÂtÃuˆv|w­xçyìzÃ{¹|w}4}r}‡wµvåuüutBslràrwrKrqßqÅqárrJrwrirBqìqqTq@qsq°qùrrIrs s¢t5t¸têutÑtt?sùs}rÙrqdpÖp\poŒo8nõnßn½nËnôo2olotoon8ml k‰jðjêk(k¬kÈl'l÷mñn¯oo«o~nÊml©kÚjùjJi¯i[hÝhæiEjjÃk`kálOlémPmƒmsmnmemdmymmÁmênUnëo£pSpÀpõqq3q„qûrKrHr5rBrÀsstlu(v w'xXydzT{_|1}}E}]xwqvÆvu|tÛtst&t sßsÌs´sÇsöt1tctbtNsüs‘s2rúrûsssrürîs s‰ttgt}tt;s÷s•sKràrMq»qDq pèpépÝpÕpÓpÁp™pmpXpBpAoèo‹ndlÍjãi>hfÓf}fgYg¸hµj%lm¿op‘púpÌoãoan×n7m˜mllkÎkØl1lsl«lÉlìm?m|m„mgm`mbmcmom}m—m™mÐn8nËoYo³oÒoÜp psq q‡q qŸqÄrOs sÿt¶u’v£w×xïyø{||ç}-}?xYwüw•w-vÌvkv&uñuËu˜ufu(u u u'u;u.utÆt_sôs¥s}s`sFsrÛr‹r„rÈs;ss›s‰s3rær…r1qËqDpÕpypvppåq0qpq§q³q²q’qŠqZqDp•o¿m÷kæimge0c(bYb cc¢eDgHiòl˜nÊpÝq¦qïqXqp±p/oœon¬n*mámÂmØmÝmâmÖmØmþnnmØmÁm¯m™mmgmIm lÿm)mŒmén(n/n?nwooÀpbp™p¯pïqˆrKs:sðtÄuÇvñxyzO{B|)|\|Ux®x{xKxwöwÕw³w“wZwv±vBuòuÉuÄu¶u›u|u8tát|t&sßs£s_s r¥rqérrkr´r¿r§rOrq¨qLpæpjpoÐoñp4p¼q3q©rrkr°r·rÊrrUqQpmªk5hBeFb£_á^¡]ò__èbd”gÔk*np¢qÎr‘r9rq—q#p¥p>oÞo`o nÞnßnÍn¼n¢n—n©n¯n•nXn(mêm¦mZmlÆlTll lDlrl‘l~lŒlÄm]n*nÞo#oHožpKqrrÚsµt±uÓvêxy^zb{J{j{QxdxAx8x7xDxVxJx5wÜwrvÖv/u£uq q‘r3stuvv^vov+v1vuÕubut†sæs`s rërÄrˆr,qºqKqpâpÌp›p7o›o8o*oˆoápq0pñpÍpØq>rrHr p›o;mÚnmoo¹pCp pÉq q4qXqBqpÁppPppp6pªqJqÂrq¹q]p–oÁnÚm÷mommmmBmˆmûnZnÏoeoßp pAp°qgr0rìsžsâsòs®s¥sPrÂqèq:pXo]n'lúk§j5hág˜fÛf1f@fOghiojÎl[múojp³qžrss:t-u8vew0w¾w¥w~wv¤v.u®u/t¿t`sßs¤s°sêsõsêsßsØsÛsétts¹s,r¦r8qâqÂq¤q§qµqµq’q]qs"s@sŠsœsªsÅsþtDt•tùutót†t5sÝs}s2rùrÜrÉr¥rer q½qkqp¹p&o­o{o`o€n¯m]jžhe*gh¥jNk‚l‰m.mßnƒoQoõpip¡pÿq(qpüq+qŸr-rƒr©rAqµpìpQo´nìnWmòmémÆmþnZnþo…p0pöqÃryss¸tBt×u3u›u|utQsrÚr(qup³o÷oGn¤nmYl€k½kjÅj¥jûkCkÝl€m^n+o-pXq}ros2ttÃu~v.ww“w±w+v±vujtØtSsÙs?rÙr’r«rÚs,sUsŠsÑt?t¶u4uÃvvu¶uuDtÝt|t>tsüsÄs~s r™r qpëpoXnÞnKmãlTjBfªcQ]ã`›bÑefãh†iªjÄkÀmnnño‚pCp¦p°p™pÏq:q»rr#q¾q,pnoìosnÊnAmßmÂmˆm£màn{ooÙp’qQrrÃs€sótQt>t{=c<–<Ë==ƒ=Ã=î>>V>»?E?¨@=@³AóCxFHÁLOYRäV‚Z!]Ô`ìcÜeºgyh:héii^iriši`hÌh6hhhhhhShŽiHjGkƒlmjn:nÛoyppÕqq po2m®l4j#hVe^aÉ],XÕTFPK3EÑ?9P2º, "ñ'8+T/.2„68Û;z=|?œAaC-D™FFúGÆH:H°I?IöJãKØLÂMŒN7NÖO˜P­Q•RiR>QPDO=NwMÕM„M9LüL–L?LBKñKpIçH+E|B³?¥<¿:-7š5§3ª2¯1û242~2ó3&3#33 3$3{3Á4\4×6!7¯:?<Í@ CDFðJ°NRxUíYH[¼^ _`ïaÝbùc¢d5d4dc«c¤c«c‚cbcTc‹c¼dVe%f$gg¯hDh¢iiRiæiæiŽhAfðdýc%`Î^È[‰W{RsMëIMDÜ?ß:ˆ4‰.Ž(u"NçÎ Á$v'»+-Ô0r2e4D5Ê7‰8ø:F;;Ú'?(@CAjBmCPD(EF>G5H3HGaEÚD“C‚BBA®AV@À@H@E?ý?x=Ý;ø9:6{3µ1.õ,Ë+9)œ(×(O(w(£(Ö(Ñ(’(H( 'á(((¡(ý*D+Ü.‘1>4¥8;Ö?®CG•K'N›QXS÷VX#YÛ[£\Û]õ^p^Þ^ô_$_+_"__ _%_%_w``ÕasaÁaíaÞaæaÞba·a_„]Ï[†YtVÿTÞQtMGÈC0>Œ9Ô4¯/h)½#òN³&Lµûõ ß#M%Ã'˜)-*j+õ-O.‰/X0 011Ô2•3œ4Ç5ú77ç8Ï9¹:Ò;¯<£<;ê:l97ð6å6B5Ç5h4¹4,43Ù3p1ô0-Y*«(%Ì$"2 üÈZ!g¼°k%ÞÏñ !r$&Ž)Í-0Ÿ487ê;¨?BjE5GíJWLóO8QfRþTUˆV€VûWlW’WËWÙWÝWÇW–W£X X‰XÔX°XdWÛWxWVÔV#UAS…Q‘O1M/JàHºEXA<7Æ3c.º)Ñ% âZ ¥ ÷¼z‡Öžúð 8!p"¢#€$*$±%]&7' ()X*›+­,œ-•.Š/¤0|1l1^0Ç/Y.",â+¥*¸*)(´('Í'v'%¾$!b¹¹ð QÁ8|hY)ùÑŸ³£t£Úöº!|$¾(+ž/H2Ú6F9Z@AhB…CCâDSD¿D·DzDCáCäDD.DC|BÄAÍ@ó@ ?…>ˆ=H;N96Ñ53#0Ò-|)×%»"56²v ®• Ã\dÌEB% l Ÿ — ) ïÙdÊLÍ×ø$. Õ½ÆUëȽ¾í z,ý¾‘ è ö \B»—“"Ñ=SF*%ƒ#`x 5 ­e»©"Q%(œ+Â.€1)3/576‹7·8g9R9Ï:9ð9½9r9E909298ñ8N7g635,4:3Œ2u0ô.Ô,³*•(ú'$Ž!S"¨3Ôp ˆ î¥Ä›&ÙûZ)¤°]$£¶Ê\‘â ˆ  ú ò ïγy0 ¿§¯¥¿ í  7 ] ã ° ­ ‡  ¦ÕøÖºz'ðÂÿdÿ;ÿÿ7ÿKÿsÿžÿÀÿÓÿÚÿÜÿôdÙÁ‘û~Á  úàçѨ‚M!3#Ñ&[(T*@+“,Ü-°.­//H/ .ü.Ý.¸.Š.t.9.-R,M+)ø)(5'%d#b!•Î:Fô3¦îê 2 Ø`Øã‹ÚÿÔÿ°ÿñdµàÚú’ò¹æVÊ<쿱kæ¸ ˜ ; ä ç § Ñ !eµõ4XÇrsb[S.û¤Xåa»ÿ|þòþ‘þ/ýöý¿ý«ý›ýžý–ýœý¥ýÅýÛþ"þvÿÿ Š|ô…‰  Õ QÉ_ÐùÜ ]!ë"þ$$w$«${$~$c$-#ð#õ#»#M"H! µÃд5ƒÈj_hd V € ‘Ø:?WJÿÂÿº5$ÿõÿåeœSzî﹕­c@éA×™Œ­\ÜJB!šmÞ]åhÇ@Ô³š´Íò!P}¢¤œqMÈy1ÿüÿÇÿ©ÿŒÿŠÿŒÿ¦ÿµÿä}ÔFªK ?V· 4 / ·w¦ÊË,~t…k>!Ú(ì¿™ÄÉoãyHZ E ½ ¯zBó8…ã@ÿ×ÿÉÿäÿòÿŽÿ^ÿÄÿ¿ÿNÿeÿ»ÿðÿãÿƒÿJÿž ÿÖÿvÿ\ÿ«>£Ûí[½µkÈ“xjRÿÈÿoÿÿÿÿ2ÿ\ÿ¢ÿê>›å%8C) êÕ锄…‹°ÄØãçãÚèDzÖ#É€À$Ö k  ·9µ´—õM`‚‹ª‘„ßщ¶ ï  É 7ÕònÐñ¬ˆîŒÓÿªÿÑÿÿ,ÿRÿ²ÿÎÿÞ)FÿßÿÿçT<ÿòÿÎÿéF/ÿßh¿ÄiQ¬Ú°laŒÇòöÒ»žtgq¦ö­NÿûÿÁÿ·ÿ´ÿÆÿÇÿÜ:o–¯¾ÒñCW\gntz‹Ž„^0üÒ·Žtuw¿¾—ÐQœ± ® X  h Á ê  : „ s ) Y a x —šRBìÈ:~»G:7²$ÿäÿòÿ¥ÿMÿŸÿäÿ¡ ^ÿŸÿ¼B4ÿØÿ£hMÿýÿÊÿêkɧ'ÿ°ÿ’ÿï^hÿ±ÿvÿˆÿá+Vf@ ÿáÿ½ÿß.“ÚãÝ£e*ÿùÿÐÿÂÿÉÿö%X}™¸Û)@K`klbi[;ÿņPÿÚÿŸÿaÿMÿFÿwÿœDô‰Y¦ýuóe´ #3ÞT»l;pdðý×-ÿ‘ÿgÿžÿÔÿØÿkÿÿlÿÛÿèÿ«ÿTÿ?ÿ³ÿÄÿŒÿÜ?/ÿîÿÁÿÒ5tÿÃÿè?p[ÿøÿÅ!¦ã§ÿ¦ÿÕ[¼¼\ÿïÿÐuÏöÍKÿïÿÆÿÆlË4%ê˧rJ3;F^q€‰™£¨°ÃÎʼº¬jN8! ÿêÿÚÿÐÿðc¡ç?|¨˜k=$V«%ÏÄRäÈY%|¤9ÿÕÿ{ÿ¾-.ÿçÿ‹ÿuÿä?ÿüÿ‡ÿgÿÿØÿõÿ™ÿ•ÿªÿü;8ÿÐÿ‘yYÿüÿÍÿêXšAÿÓÿË+É ¬ÿŸÿ½:·Åfÿïÿ°ÿÑF¨à΀"ÿÛÿÌÿÆgÐ,E2ã¾w_SRHDFPWapxxpphVD>>34?_ƒ­Ùôèš8ÿ×ÿ|ÿmÿ€ÿÙ6‚·¢y(ÿÆÿ¨ÿÜD©—ÿùÿ[ÿ@ÿ¹tÆCÿwÿ!ÿVÿÜ5ÿæÿlÿ_ÿ¬"LÿÔÿTÿÿßÿíÿ¿ÿsÿÑÿžÿ²aÿÿÿ—ÿÏ<mOÿïÿ½ˆ0ÿÌÿÈ[ö¨ÿ÷ÿŒÿÄbàåmÿØÿ ÿß7®#Ãnÿ¦ÿŠÿ¥}Þ+CR:)ÿÆlZ=/,7<AGMRYbiim{’§ÖDYeL=ÿ¥4ÿ¿ÿÿƒÿÙC¯ÿûä‡ÿÁÿ–ÿâ„÷èUÿ—ÿ^ÿ÷Ï4Üÿ_ÿƒkUÿÎÿdÿ¢Lÿ­ÿeÿ¸ÿâÿ…ÿnÿ²ÿÿøm:ÿÔÿ¸ÿîaœ=ÿÐÿåC¡¤ÿªÿÀN:Æÿ‹ÿ®BÞûž3ÿçÿÐyÞÇYÿóÿ«ÿºÿä@‘Ó7/îϬ~ZGC6.',6J\nyŒ¬Óñ;QT,ĈAÿäÿ®ÿ–ÿÓ(ŽçòØuÿ²ÿjÿÿúwÕ¢ÿìÿJÿ1ÿÍÃEÞÿóÿTÿWÿð‹zÿýÿÿzÿñ_5ÿÅÿ„ÿŽÿê ÿÂÿZÿ}Fÿèÿ’ÿÐ7W/ÿÖÿ·'™ƒ%ÿÝÿémÏÿ‰ÿ¥c#QÈÿõÿqÿ£]ú)ï^ÿêÿÊÿèQ¦ïAH&ºFÿñÿ¾ÿØÿü=q¢ÚþñÊ¤Ž€hXLR[o„˜¤µÑñ(ЄA ÿÓÿ½ÿ¢ÿÕ4¸0\d 'ÿ¼ÿ´ÿÝ_S Bÿeÿ4ÿÝÙn !ÿ;ÿ5ÿÜv§5ÿ ÿŠÿÖ5TÿòÿƒÿÿØÿñÿšÿcÿ¨Qÿ½ÿ®ÿéLrÿ§ÿÚM˜† ÿ¸Õ›ÿïÿwÿ£Y$aéÿˆÿœÇ&¥*ÿæÿôeà :ë’@ÿö>i”ºÎÞÚÔÈ»¬¡Ÿ¦§¯¾ÏÛáëìíÖ´|BÿéÿãÿÝAœBX¿RÿéÿÆÿÆ!¦<Û ÿlÿUÿúów#-ÿUÿ(ÿüXÿÎÿÿÆ:Rÿ³ÿ€ÿÎ$ÿµÿ€ÿ‡ÿÒ)2ÿ¼ÿ¬sCÿäÿ¼ÿêg°[ÿãÿʲ÷•ÿçÿaÿ‹^9€øÿnÿ`´-<Îaÿ×ÿôgº÷'êžd@"#&;Oh~“¬ÁÒÚÞßèîèáæëíáÒ²’g4ÿ÷1e²Ij.ÏQÿæÿ»ÿŸÿäPÍA-µÿùÿ>ÿC  —76ÿLÿ)ÿÊŠéŒÿàÿ–ÿº h,ÿÆÿ¡ÿÃ;ÿæÿƒÿŠÿÇÿìÿú@NÿëÿÿàKqFÿâÿ¶•ŸOÿèÿÍ6»ð›ÿàÿfÿMmCÿžÿƒÿÙ† %ýŒ7ÿì0wÅ÷öئuR:;=NYo¯ËÛéìôôðèèßϯŒhH3<]‘Ñ2ç‚ÿåÿÆÿô,ˆû" ‡ÿ×ÿ{ÿ‹1…!*ÿ[ÿ6ÿÄÞ˜ ÿ ÿ¼!`Oÿìÿ˜ÿº 4ÿ¯ÿiÿ§ÿÿÿõÿÐ(d&ÿÑÿÆd3ÿÔÿå>­JÿàÿÔ/É ¦ÿïÿYÿs/Š5vÿµÿgÿÅWî/Ïz5ÿí(s¾î ÷Ù®‘‚tofjv£µÃÆÇÄÆÃÁ°–vVG?LWo†¤ÄÜúìÈxÿÞÿÀÿñ2’ì0åPÿÅÿiÿ¹€B™ÿ>ÿ0ÿàžö¢ÿúÿ¨ÿÁ rZÿ¸ÿ®ÿú= ÿÐÿŽÿŠÿÖÿâÿ½PMÿËÿÄ)‰qÿáÿðW²¦LÿêÿÛDÅü«ÿùÿwÿ‚$èR7”ÿðÿ¡ÿ¹;¯öܦ` ÿóM—×òüåÔ»£vlgqzŠš¥«©«¦šˆuiahsŠ ¶ÊØïëÚ Tÿâÿî U¨âé¤6ÿ·ÿ ÿì“Hjóÿ^ÿOÿà¢î§ÿ²ÿÃ#lnÿÈÿ¹ÿì3Jÿ©ÿœÿÈÿþ ÿÉÿÒÿãHJÿûÿ½ÿéA{mÿØeº¶NÿçÿÒ*ÄÌ ÿÿkÿå±MMØ!ÿ¯ÿ¸‚×îñÁ•^5l¥ÐÞèÚ˲›‡vohlt€‡‰‹‡}vvƒ•«¾ËØÙ×ÊÇ­|C #g¢Éë×±\ÿíÿµÿ®ÔN]ÂÿàÿOÿeèÿ¶ÿÑ*}w*ÿÛÿ¼ÿê.G$ÿÝÿ­ÿÏ ÿçÿ¸ÿôÿÕÿà,`0ÿèÿÓ]Tÿýÿâx¸ŸCÿçÿÝ<·ö¸&ÿ§ÿÿë–#Kç_ÿîÿÉQ¢Ö×Ï¡l>#0Z‡²×ãêÛ˳žŠvh\WRTYem{‹ ·É×ÚãÙÅŸzS&Az³Û×ϘJÿÂÿâJÖN9´ÿúÿpÿƒµð¦(ÿÉÿÕ+p{GÿúÿËÿØG4ÿùÿÈÿÂÿö!ÿÌÿ½ÿåÿÍEP)ÿîÿÞ"pxDÿën±¥KÿðÿÓšðßaÿÆÿ…ÿ½d K ÿçÿì6u¤À·®’rT79Kvœ»Ô×ÖŸ¦“gVHKQf—¨²ÀÄù·§‹d7!9jÂý˜o?ÿýz>‡ÿÙÿ‡ÿ³EÌéÿËÿì9}z;ÿåÿè /4ÿØÿÐÿê ÿëÿÃÿÑ%ÿþÿÚÿíGG ÿáÿþ?mj5ÿÿ/|¤ŒBÿùÿò4—ÝÀTÿÝÿ–ÿÍPã2 ¯>'c‰œ­©¡ŠmWLWcz“¤­¨¥Ÿ›”†{v{ŽŸ«¬©³·±‰pQ>3Ff’»ÈÄ¡‡_%ÿû0’ì-úxÿìÿšÿÇ=µÖ+ÿæÿô9hmLÿòÿð 1"ÿöÿÕÿçÿÝÿÈÿÝÿýÿîÿú#A.ÿù @ie>1h˜•a ÿûo¹Î…ÿ­ÿ²&³Än-5Gcy‹¢©¨“zbPQZku}„Œ˜£¨«³º¿½¾¶¤•—™zaN;Fc’¿ÑÔ²‹bI<E“íýÈQÿÖÿ²ÿíd½½m ÿðSye. "ÿñÿìÿåÿØÿÙÿá ÿûÿö8?)ÿù%]lT4 &KwŒƒY$.o¸À}ÿËÿÚ*£úÿÖ‚H2*@Of€•§¦›„pd[_fv‚œ¦¬²ÀÉÌÆÄºª—Œ~dODLQg¬º«™zZC28<c°çùµDÿåÿ½ÿ÷Z¬¶r#ÿù Fd^D! %+ÿñÿèÿô ÿðÿÒÿÕÿâÿÞÿú  9=?STRG<<DYy„tNVœÄ¤Nÿã}ÕõÌ›cEB<GSj…™¦¤£—„wv‚‹”›Ÿ¢§³¼¾¹¸²ª›ŠuVKUqƒ£Ÿ†bLGAHI_‡´íæ¤=ÿçÿÞw° \*SgN&&(% $ÿæÿìÿõÿßÿÑÿÚÿåÿ×ÿøÿü.E* *FWYJ:6?Wmw|jA(.Z˜²šU ÿ÷t»ÖÒ£yU<=C[q‡˜¡¯¬œ†{}}‡’ ª²½ÃÇÁ»­œ‹xko†ž£™˜ŒsZKKGThŒÀÔÎ2ÿõÿé$t¨¥i+ !ObYE-((!"ÿïÿÝÿùÿèÿÚÿÚÿâÿæÿ×ÿûÿ÷ÿþÿüÿþ816MRH<:J[XTerr\3$?t¨¨r-V›Éǯ‚bVTbju¢­«œ‘‰‚†‘¡«²º¾Á¼µ§’…†“™¢´·§‹|vomkmju’®Ç°p'ÿó>ˆ«’^+!;WcS;>C9% +ÿúÿåÿéÿàÿÝÿçÿçÿâÿÚ ÿÿ ÿþ,<6;V\I37JRXafnfK6/Lƒ¨§x=R¾Îµ˜yedfrx…—©·¼½¶®¥¡ š˜œ¡¡Ÿ  ™™§·¾¸µ¨”sohgdnƒŸÂÅ­r, MŒ¨˜c9+9V_VJ=@=$%1&ÿàÿç ÿïÿÕÿÙÿèÿåÿÝÿÝ  9G4*QiY:0;ObaY[ajfK<Kt¤±”[,*MЏž ˆ{xƒŠ‘Ÿ´ÇÓÑÏÁ³¡‚ƒŠ†† ©±ÂÊÇ´Ÿ‹|yxpmjzšµÅ«q97n¡­‹]95L\`RAEIA-)E9ÿíÿáÿý ÿïÿÞÿÙÿÛÿàÿÞÿÚÿÞ " )HM<#;^k^G7@Wglg`jn^L@R¦²“d?4S~ªÆÄ¹£–’‘•–›¨³¸¸½¼·¨”ˆŠ‘Љ•§³¹¿½»¯Ÿ‘‹Š‚~}ˆ›®À¶™j6&8j—£`GCKZ\VPKPL4$>CÿøÿðÿàÿâÿðÿæÿÚÿÙÿÜÿÛ#/8RV?(,HjxeG=Kf{uechpnXKVxž®£}RBMy¤ÂÏÄ·©¥¦£žœ™’™¥­«£›Ÿ¥ ž¥¯´±©¢¢£ œš˜”§Âɽ“]8,Hr’–zWCNeg\OIRZUC(/ED,ÿó#&ÿöÿåÿòÿîÿ×ÿÙÿáÿØÿý  -+"'=OPD79ToteRJUkvxspzte]h€š¯§‰eQ]wŸÃÑÑÀ¹²ª¤¡ š–—£¥¢ž ¥©«­¬ª¦ œ–ŽŠŽ•¡²º¾¨‚\@E^€”‚kZWblaQPTZUB/$+AL: 'ÿ÷ÿ÷ÿûÿ÷ÿãÿÔÿÛÿåÿÙÿú.5* %8Q[K9=SlvjUJSj€vz†„yngt•¯³›{d]v›¾ÍÆÃº±«©ª©¤™˜œž¡ £­´°§ ŸŸ™Ž…€Š°¾³™rLBPuš¦•uhjrxugSJUa[F0&-<E>(#2*ÿøÿúÿäÿÚÿÜÿâÿæÿÜ!12-+2FURF?FWhofUMZpxy{|~€ƒ€rn}”§§›„lk~ ·ÁÌǾ®¡™’‘“𥝰¯¹½¶©¢žœš”–¨·»·Ÿ~eXdyŽšyefrwtmbYW^_O=6:BE?1!#) ÿðÿÞÿåÿòÿíÿâÿÝ  *!09959BOUNFDNcodSOYfsxupqމ{qtƒ—¦£zu„”¨½ÃÀ¯ž„ƒ†Ž“›¨´·¶ºº´«¦¢™‘‘™©·»¼­™ƒpp”“€lbgs|ug``dd^RA:EPM>0%""ÿÿ  ÿøÿçÿäÿóÿÿÿñÿÜÿÛ('"-7>?AMVTLDFXhdWNOXix{u{…ˆ…|Š›£~~‰›­¸·¶«ž•‘”“–¦«¬°°­¦¡›œ¡§¬¯§›Šyqlt…“•‹‚|}€zsmllh^PD;=HM@,"!%'  ÿýÿíÿéÿïÿøÿøÿåÿÓÿÖ  %%"-@ECIPTSMJNW\\WTT`s‚†xw~‰Ž…„Ž––’ˆzv|¡°¿À¹ª¡œ–”’•šŸ¢¢£ ›˜›¢«®«ž“…uliou{}~}€ˆ‘—’ƒtswzrcPB?AEF>.! &*( ÿýÿðÿìÿòÿ÷ÿòÿæÿÚÿÓÿÔ "17<GOQOMLLPYab_Z[cq€‡…}|…‰‡‚~…Œ‘Ž„zx€†‘Ÿ©­§¡š˜˜–—šžŸžššŸ§­ªŸ…uqqx~‚€}†‡„€zsqy}vfXNGGJKE:1+***%ÿ÷ÿöÿúÿ÷ÿðÿçÿàÿÝÿÜÿØÿü   #)4BLMHKOLMU^eeb^Y_qƒŒ†|sryƒ†tqwƒŒ†{uu{‡“šš—›ŸŸž ¢ œœž¤¦¤™Œ|‚‚€€ŠŒob`fq|yiVORQQQND<;<80*#ÿýÿüÿ÷ÿåÿßÿãÿçÿçÿÝ!<S\K/ 6OUG:-!';UgeX@*%*GsŽnN95BJVfqtpqmg\OE@DJVbp€‰‹‰‡vj]K@<FQ_kt‚ˆ‡}wpjfegkkf^\ZTLA>HQLCFG<1+2BLK<,"#$! ÿýÿ÷ÿöÿûÿöÿãÿÖ %3Xl\6%D_dU8"(A_mlR3.Sz™l=%+:R`fopibfhbTF>9@JZiuƒ~uuvrkhbUKJPPU`q„”‰{gVKCHS^^VSQNI?9;A>?JRM=*"):GE5! ÿúÿ÷ÿùÿýÿþÿûÿïÿÛÿÿ CcsABfunO- =_su]?(,FczxgI.*9XlsujcWE<BMMLQX^aedaYSNEDKZfoz~}vxsaOGMTex„‹‚zhP>7;<AIPVRI=435=JPOB0%"/EOC( ÿöÿëÿëÿóÿõÿôÿøÿòÿàÿõ 4i„Y$=y’}V+?jŠ…g:.UxwR(Bh€ˆylZH:,,5EJP_lrmj]K9*&"-=Tgu…’•ŒuXB:09Mi~†‚jK4,'1<ITVWN?44;ADGD?6(&8GF2  ÿóÿäÿäÿìÿëÿêÿïÿíÿâÿì%i‘‚Q!=z›‡M#&Mu„|W.(Nq{oM/&+JqˆˆlS=0/*2?TlyzmeVA0()%&+8DSfryxyyvw~ƒ€tl^G5/67CYluk_K6)"+8Lel_E40-6EPTE),;>7#ÿÿÿôÿèÿäÿãÿæÿéÿåÿÙÿþLˆŠV 3t™‡N)SxŒwM%)X…˜zD)^“µ¢u:#-@[u‹Œ†kO/%:Qfy‚‰~k\QEEL]o}‹…vY@,!A^nylV:$ 5VkjTA2(-:HQI4%6?5 ÿôÿôÿ÷ÿçÿãÿæÿåÿßÿÕ-tS 4vœ…G+ZwvgJ//Kq‹‚c;&Oƒ¥™xB E`lqidVE1 *F`qx„†‚wsiZH:2**-:GZo€ŽŒˆqQ3 5Rkyn^? .I\h\C(+E\W< 04!ÿîÿãÿîÿòÿãÿÞÿßÿäÿåUmI0y ‰I 2^voM/'0T‡›ˆS ![ž¼®k"ÿøÿïT†¡”†dAÿüÿëÿÞÿëÿù?f‹›¡”ŽkXNI@92.*)&'%/>\€ž·±¢yN'=bu{`7ÿ÷Cej\7*[q`/ÿöÿü.1 ÿþÿÙÿÏÿæÿðÿßÿÛÿãÿîf<ÿÿÿø(w¤‹E 0anX8 :Xmva7#LvŒŽnB$Arœ²™r8ÿêÿÖÿãÿõ5NbjtttmaVQRRTZ]]TJ=3,&% $+@Zx—¨¶¨”g2ÿÞÿÞÿëHl‚nIÿõÿó3bqb2ÿí1PO9ÿôÿð 1 ÿóÿÌÿÊÿéÿìÿÓÿÍÿÝ<ÿüÿÛq¤F4amN3\sb:ÿøN‹¤€C ÿòX¤ßصcÿàÿ¯ÿ³ÿÆ@y¨°°nH* (A[r|„|p^OE>;63..-8Ie…›®€BÿüÿÉÿ©ÿÅÿó9€š”WÿßÿÌÿ÷:vŽeÿàÿÇÿéM\: ÿåÿßÿü .ÿçÿÈÿÍÿì ÿÚÿ¾ÿÂÿèÿÍÿóW£”Eÿú'`e>ÿý/TaT0 %T{wNÿúF‰·¬‡?ÿýÿÚÿÏÿõNŒ¸×Ë·‡W(ÿýÿêÿáÿíÿò'B[o{‹’“Šƒwl\K9(  5X ¿²IÿËÿšÿ§ÿÔ%u™œaÿáÿÒÿü6bj@ÿâÿç8F5 ÿâÿ×ÿï! ÿàÿ½ÿÅÿìÿõÿÆÿ±ÿ­ÿÝ:Ž—PÿýÿòUi=ÿèÿÿ)R^D,i†t2ÿéÿÒÿòK­Ò¼Yÿòÿªÿ‚ÿ±ÿõY°ê!ÿ³j$ÿçÿËÿ¹ÿÌÿç #2BKV[]anzƒ~whXG9,)]ÈçÄ.ÿ¾ÿ}ÿbÿ¨ vÊ¿ÿ¼ÿ¯ÿÔ)wˆ_ÿãÿâÿþ(D6ÿØÿËÿä ÿþÿÎÿ¶ÿÅÿñÿßÿ¹ÿ¸~‘Wÿê FW;ÿçÿò?H3/PdPÿóÿí]Œ˜b ÿÊÿ®ÿßrÀâîȧq5ÿéÿêÿéAat€zpaQC;6,(*7FVdkron]G%ÿÿÿäÿÏÿßÿø2zµéÖ¢<ÿÕÿ–ÿpÿ£ÿüaª¡qÿÓÿÉÿùBiY-ÿúÿÛÿëC; ÿ×ÿÂÿÜÿøÿËÿ±ÿÇÿñÿýÿÔÿüaŒ`ÿø?X7ÿëÿø47 ÿ÷/QN*ÿûÿÕÿç)t¢€3ÿ×ÿ‰ÿ›ÿëqâ)é—/ÿØÿ¬ÿˆÿŸÿÅ<kŸ¸Å¹° •…r\I4ÿïÿâÿÜÿî&Jiƒ¥¤šuKÿâÿ½ÿ‘ÿ¢ÿÒ6©ö*ô˜ ÿtÿ;ÿEÿÄVÁï£#ÿµÿ”ÿÖ*jq6ÿîÿÈÿäE8ÿÊÿ¶ÿÏÿüÿóÿÂÿ°ÿÃÿìÿñ2q_%ÿöF\Gÿòÿý-'ÿû4I;ÿäÿÙÿõ+]_4ÿóÿ¿ÿÅÿç;¡Ûæ¤bÿ¾ÿ˜ÿŠÿµÿä"_ƒ––x]L@1$ ÿïÿÝÿÌÿºÿ³ÿ°ÿÁÿ×ÿú9l™¾ÁŸ|:ÿåÿŸÿkÿÿ¤kÀæ•ÿŽÿaÿqÿáe°¤@ÿáÿµÿÌbn8ÿêÿÅÿÙ 4-ÿúÿµÿœÿÌ ÿêÿ¸ÿ£ÿÃÿôMOFgQ4!ÿèÿï 1H6ÿÔÿÉÿó8aQÿ°ÿ‘ÿ²Ù¿Wÿ×ÿuÿZÿIÿ‰ÿÞI©Ûÿ澂[@ #5HU_\ZH0ÿóÿâÿØÿãÿè4t®Ù ï«=ÿÎÿ{ÿ,ÿBÿ€¿/m aÿ¤ÿÿ#ÿ”?²«Vÿßÿ¡ÿ¾ae#ÿØÿ¯ÿÅ0%ÿ×ÿ‘ÿžÿÜÿÚÿ¦ÿ£ÿÅÿñL+JeX,"ÿ÷ÿÕÿÔÿó*ÿêÿÄÿÊÿý5S3ÿëÿ¯ÿ¢ÿåF˜¿ŽIÿåÿÿRÿEÿ{ÿ®ÿñ8[f:ÿÏÿ†ÿPÿ.ÿ1ÿ.ÿEÿbÿÿ±ÿÖ!@O_\V>$ÿâÿ¿ÿœÿ|ÿWÿIÿEÿ`ÿyÿ¥ÿÔFh}^9ÿìÿ‹ÿ<þôÿÿVÿéêÿôÿrÿ7ÿvÿâFj5ÿåÿ«ÿ·ÿù5BÿÔÿ¯ÿÂ.ÿ²ÿ‹ÿžÿÙÿùÿÂÿ‘ÿ‹ÿº'Mxc*ÿü  ÿëÿÉÿÅÿÞÿÓÿ¬ÿ·ÿò:R'ÿØÿ‘ÿŸÿùwÙÑŠÿ™ÿpÿjÿ¹uË÷ Ú—jZK\w¦Íø'Vƒ©ÑêüöíáÚÁ j1ö¾™utw£Ö p¦Ü½€ê7ÿ¢ÿ&ÿCÿ®c 8 ^ÿ¦ÿ>ÿ:ÿªY=ÿäÿ¡ÿžÿÝ&<ÿÐÿ¦ÿÌ ÿåÿ¤ÿƒÿ¥ÿâÿéÿ¦ÿrÿ…ÿ¼ÿß euK ÿüÿøÿÎÿÂÿØÿú ÿîÿ¿ÿ³ÿãÿçÿÿVÿZÿ¯]`ÿ›ÿFÿ ÿOÿÿá-Ea‹Àà"€…ûl´ò ,6>5* -AX^[<ã¤U¾vN+6O|®²ªGÌ8ÿ–ÿÿ&ÿkÿí_m(ÿ¢ÿ+ÿÿVÿÏ!%ÿçÿÿ–ÿÉ *ÿÀÿ©ÿ¿ÿîÿÖÿÿ‘ÿ³ÿïÿÎÿ…ÿoÿì*r†`.ÿÛÿÀÿÐÿôÿíÿÝÿÛÿó+;ÿ®ÿzÿ›ÿóY”ƒFMÀXá.JNgËLÜËÍÐÏ  K r W J  ê § c 1    0 E e À ñ  9 ? E # û ¬ ^öˆ¤O ಂZ Ê6õŽ’ÿéš3z!nÿ¹ÿ`ÿ•eZÿ±ÿ—ÿÉ'ÿÀÿ–ÿºÿôÿùÿ×ÿ©ÿšÿÎÿÿÿóÿ½ÿ‰-l’p%ÿøÿåÿæÿçÿÐÿ¦ÿrÿ[ÿpÿŒÿyÿXÿGÿSÿvÿ˜ÿ©ÿŽÿAÿÿMÿµÿýÿÕÿÊ/Ã¥z>ïsÖY 2 ˆ Ï  =<FÕ?$¦c³X Ï ¦ ¯ ½ ð"f¬ó5i »ÎÁµ—†X¹W ß y é @ m š Î )lœožPªLy·¬5]ÿ€ÿÿÿŽÿÖÿÜÿ™ÿSÿPÿ•ÿû*ÿöÿ ÿ’ÿ¸ÿéÿýÿÎÿŸÿ´ÿâÿþÿïÿ¶:ï‚ðy6,ÿëÿÐÿ¶ÿ³ÿÊÿÙÿ·ÿÿ¬ÿå OVawÜŒ+pb4déQ¨Â¶ ¨ ° ¼ :âfßÌóÓ‡ÈyÓ“pªê4‡Ó Ef‹ƒcG<GOJïŒ=~1Å_%%> ?  £ ¤.KÆ–An\¤Ù¬GÿÝÿ¼P;ÿëÿ¢ÿŽÿÀÿþÿôÿÌÿ·ÿ¿ÿæÿþÿâUB'y ÿûÿÏÿ¿ÿ­ÿ®ÿ³ÿ¿ÿÎÿÐÿ±ÿ²ÿéCxºò~@>=ñN„Ñž¨ 2 ¾ O ¥údÛÙé˃Ô/(  ®!j!Ì"!é!Ó!¨!Œ!p!I!0! !2!E!w!¬!õ"E"ˆ"½"Ï"å"Ö"É"Œ"@!Õ!g! Ô º ›  i 7 ŽÆbóF¯$©9¾AÛN w · $"mÐÓ–7BÁ´‹-kÿÊÿ•ÿ»ÿÍÿÂÿuÿBÿbÿ±ÿæÿíÿÉÿ¦ÿ¿ÿåÿï % &žÝ±m~—ä2´ÞL°)jé•À { • i - xÑ_ï˜"åÍY!¦#ò%¶'6(3)R*7++Í,¦-@-±-Õ.....-ú-÷..%.]. .ð/D/w/˜/Œ/Œ/`/0.Â.I-,ã,2+–+,*Å*ˆ*O*,*0)æ)k(Z'J%¾$+"? EGR¹€2}QêðŒ Á ñ É =»Ï2š|D/¦s~,ÿÞÿ­ÿ½ÿøÿúÿºÿ¨ÿ»ÿß@ 5žW¹\™è™Iú€ú“0· B ¬ „ ³ NÜFcƒæ„¬•6 é# %X'ã*r,Ô/30õ2j3m4Ÿ5Á6ä7ø9.: :¹:æ;;:Ü::K:9Ñ9»9ª9Õ::r:Ò;;I;P;f;O;5:Ó:j9¸8õ87W6¦5ï5P4­4=43º3;2T1{00.Ú-+(ß&˜$Ÿ#!° éQÕË|~RŒ: Ý à mLÛ<Uòì(ÿ¥ÿiÿ†ÿÃÿ²ÿ„ÿeÿoÿ«H¡› Ò E Û ˆ % ‘  E?%*¢HXÚÜGÊ· ¾"r#Ù%"&œ(W*z,ˆ.Ü1L3Ð6G8„:È<Œ> ??@¢BCqDÀF0GGÁG¶G²Gª>="<_;X:N8¾74á2‚06.H,¤+)!&Ü$o"% Pãr°Ax«Nf £ -Pn§EÅ]+ÿßÿ¸ÿÁžŠ.ú&‡5Ò_ò,sðU˜ß×xG9Ñ!D"j#¨%!')A+K,Õ./k1)3+5™7è:_<è?kAÜDFmH]JK‚M!N§P,QfR»S]S·SPRûRDQŠP¯OÙO!NhNM±MËMðNdNçOdO¼OåPP,PKP8PO±OENÕN‹NAMèMdLÊL"K¬KJ8I-HRG@F)D…B¹@g=÷;9s7–5¶3½1ž/c-1+).'0%)"ŸÆ¥¢öŸZ– ñ ~Õ‹¬c”ñ˜ÿ¨ÿ`(ä$½!Kîc,â}@žQ ø"d# $‡%:&G'ô)Ö+D,l-}.á0§2Á4Õ6„7·8Ð:/<+>^@êCIE«HJrL×OQwSgUVjWêY,Zf[9\ \Z\V[³[&ZVY†X£W¼VüVAUçUUÂUëVhWW—XX)XPXVXnXaX?WùW«W}WwW—W´W²WœWNWV…U¹TœS¶R“QhO¶MÙK’IMGEC @Ú>ª<‘:¢8Û6ê4Â2@/Ò-&*z'ˆ$f!Rˆë#n Su Û æ ЙÖtœ•Çå3A.ì+O'À%Â$($#ì$š%&D'¿)Ÿ+o,à-ð.»/‘0ë2Ú4Ö6(7>8†:7<->A@2A±BÎCïEXGkI¹LVN½QSYU²XAZ¶],^î`Va!b%bäcšdd|d„decÐcHbza `«_²^é^,]Ù]‘]Á]ö^’_S``ª`ëaaa-a`ö`´`e`3``C`t`±`ç`õa`À`9_P^“]‘\Ž[ YcWMU8SQNüL•JGÈEÕDCBŠ@l=¤:Â7°4è2 .ø+¾(†%x"Ôç=ß 3€ w Ìœ"“I½=Ç95ê2o0’/ /+//Ì041Y2ð4ë6µ88õ9Å:ØW@6AB¸DPF/H IÎK†LæNO'PoR@5AÿCMDTE`FÆHJbL%M•O PàRÇTzVW°YZ;[6\E]¦_:a b·djfgçjkËmhn nTnmímÜmÛmìn nnmÁmklÄl k3j]i³ihÖh‰h±hìi§j‰k~lSl¿mlòläl¸lšlml'kókÈkìl.l®m)mœn n@nfnEnBmÐm>ljÝi^hfžeWc±a¼_y]+[WZ#Y W²UNR^NÌK‰H†EÖC?±<58ô63g0Å-ð*Ã' $ A6®}âQM*IýGEˆDoD’DxE ErFÇH³JñL£MõOAPŸR2SìU•W1X¿ZI[õ]{^Ç_üabÎcÎde7fghGixjÁlm\nÃo½p‘p¤p€po®o‰o„o°oáoýp oÎoƒnìnLmlËl*k—kJjíjýk&kÒl£m“nlnâo-oo nïnênånÄnºn»o op!p·q4q¡qàr!r:ryrGqåpßoµn`mKlOkdj1hÀge2c°b¯aÂ`»^Â\LYUÑRÊP@MÄJåG¾D‹A–? <…9Á6{3"/a+ƒ'µ#û ÜœÎY¼VtSÊQTP0OZOO[OßPeQÜSÌUýW›XýZ“\1]Ç_R`àb]cåe8fwgkhFijBkCkülelÔmJmËnŠohpgqer(rÜssJrørƒqÕq0pÍp–pµpØq q6q(q p‘poLn{m³ml”lll%lÌm–n“o€ppwp~pŒp–p¿pëpôq q(qšr5ssìt£u=u‘uÞv vivsv_u™tŠs:r.qZp£oÙnâm®l_k9jwi´hÞg7e9bo_\ÁZoXOV ShP}MŒKHŠEÓBn>Ê:µ6µ2Ñ.è+†(v%¾"Æ_ç]…[žYèY)XžX¿X‘XùY‰Zæ\€^U_Ça.bÕdneÈgh”iÿkVl3lÞm6m¤nnÅoNoŸo¾oäp'pqqqÍrsUs§sÙs¤s‚srqÃpýpvpp*p=pyp¹pÍpÍpmpoDnum¢léllkÜk»kµlElûmñnÝo}oßoôppJppõq(q`q”rrÖsÙtáu¾vuvËww-w{w™w¹w9v_u#ts:r‚qåq3pho…n®nm`l‹k(i¥gŸeycXaz_à^j\¨ZWÿUÊSXPîM¹JEèAô>-:f7 3è1.eÔdWc5b>aåa£a¸a‰aÆb;cHd\eµfñhLiÑk9lKmanòp_q…qùr?r*r@r]r’r©r•rer.rAr~s"sìt—utütétƒt2s¡ròr&qWpÓpwpp‘pÄpûpÿpãproüoWn¬n m…ml—l]l>l©muþvv0vuïu¶u†u-t¬t6sÉsÙt8tØuVuu‚u3utŸt0s‹rÖrqipòp‡ppphp™pÇpöqq!q"qqqqpåpypoÕp puqq­qèqÑqƒqhqwq•qºqºqÊqÙrKrùsætÆu`uÅuãvv>vqvv¤v‹vkvuåurtÛt$srôr€rq˜pìpo2ntnmØm×m«m©mÙnnUmúmKkßjÍhØfgc1`"]ZEW’TÏROmm)m†män(nLnuŠuâv uíuËuzu8tËtQs°s rgqÂqKpÕp´p¨pëq.q”qýrWržrÇrýss'rðrzrq¹qårErÕsSsvsPrõrÛrÄr£rTqÝqhpøpÿqHqòr•ss_ssss¶sùt6t]t_tXtHt^tLts’sr’r2qÓqrp×po0nznvÁv^vuÌu~ut¥tjt|t‘tØu u{uäv"v?vuìuÁuÐuÉu˜utlsÐsbsSs\s…s”sŠsosWstsgs%rŠqõq7pmo¸o(n½n mÖmÁn$n‘oo‰oêp9p³qYr)ss”sísìt sìsºsRrür|qÑq7p¬p¡p°qWr>ss‡s»t7t´uIuRtït!ssriqÉqRpæpxoÌnìrrJr£ssHs]sDs6s0ssIs­t-t`t¶uQv&vùw˜x x6xzx„xqx7x wéw½w¸wÛxxxx wýwÜwwvvJvuÔu{ut½t°tûuCuuâv vqv£vºv§v“v„v¤vvhuäuJtÅtht\tbt{tzt]t7ttsåsrÕr?qpïpXoèoyn¿n:mén*no8oÁp7pˆpýq¬r‹swtt]tWt‹t•t‡t6såsmràrnr rrr®s‰tbtÔtûu7uvvUvu@tÃtMsÅsVs rÊrrqxs_sxs®tt:tAttsúsÚsôtKt¸tÍu u­vw*w›wúxxTxTx=xwÐwªw†w‘wÁwïwéwÑwëwäw®w?vÌvpvGv$uÏujtÿtÞtìuMu®vv:vXvŽv¿vèv÷vûv÷wwvîv…vu‰u)u uuu tôt×tºtÊt t7s‚rèr=q†pâpdoïo9n³nZn„nÇoToÐpLp qqÁržs“t:t…tˆtÑuu,u tÖtttsÄsŠs s°t*tíu°v'v?v7vLvíwRwvkuùu˜u4tötÑt»t”tTsýtatct~tÃtûutâtÕtÉtªt·túuPuXuv$v×wHw…wÕxx,x(xwñw¹wwxw„w›w§wwow‰w„w>vÑv~vOvDv-uÝu}u,uu!ubu¬uæuîuëv vDv†vÀvåvùw"w.w/vóv›v6uäuÅuÀuÖuÛu×uÎuÀuØu§u5tksºrõr#qopÚpnoÞoŽo`o‰o±p p`pÄq qvrrÍs«tKt”tªtüuXuºußu×u—u^uy}x¼x-wöwÁwvyv-v)vuÿvvuÿu t¬t»uuãvÙwÊxkxÞy†zzkz { {/{0z­yóy*x¯xewÿw¥wfwv—vu“ut,sirãrÀr„r°rüs¤tw@w–xxFxox©yyªzMzó{@{Q{ zöz’z ywèvåvqv$uMtŠt)tsësàsñtt)t»tWtmt×ußvýx xÀy9yëzszËzü{r{—{{zÛz%yexÛx€xwÊw…w v”uäuUtªsÃrürhrAr rBr•sCsèt®u¢v1vav uÑu}utìtÚuu2u–vv¾wjx"xàyxyþzHz‘z¯zÐzÒzÌz¿zÁzÆzÔz¿z–ztíu¦vvuÓu©uxu8u-uCu¤uîvƒwAx#xÙyŽz`{,|||º|˜|Œ|r|k|W|0{ü{í{«{Iz…yÃx®wŒv>tßsºrŸr2rrdr„ss®t§u˜vpw9w«wüxxMxcxfx5xw·w\wvºv›v…v›v—vÝw`xx‘xÑyxÑxiwvÀuvs§qùpïpoo©on›nznnn¨nÏoosuýuÆvvÌxyWzu{i{ø||¿|ÿ}}Q}'|±{×{zZy¬yByxÓx‡x w“vÙvu tsVrªrxrXrªr÷s–tSuu¶u÷v u×u¼u§uŠuuÁv.v˜wJxxüy©zP{'{ì|¥|õ}|ê|Ï|¨|Œ|f|6{û{å{Œ{ zy-wßvqt×s9qñp¾pFoþpIp`pîq©rËsôuv v©w7wwàxxCx4xwÃwtwvvuÐuÇu›uÃv*vÃw?w‰wëwÅwevlu tJr~pÊošonVmémYm$m&mqm”mÑn/v—v^v§wax­yì{{ø|j|½|¸|Õ|¿|¶|E{¡z¯yÄxþxQwþwÍw¸wˆw,vÒv3uptŽs¾s r}rCr%r}rÐsstlïl5kÄk»llll\w7vÅv·w"xy yÍzvz€zDy±ynyxw¤v¶u¬t“sÚsZs\s^ssÇsÙsÄszs4rñrÈr¡rFrr'rˆræsVsßtsâsWr÷rsqÍq6p¡p‹pqKr.sƒtÀv wVxwyšzSzê{{Z{R{4zîzÄz†zFyÔyox¦wÆv_uspµmájõhÅgf}eîfEftg•høk)m‚o®qirŽsâtÀuwuÇvFv\vCuÀuOt­sésPrèrèrâs.s|t t²uZvvBv?uzt¨s^rp·o]n|mümºlýl{lkl©lžl lÌwtvÅviv€w!w½xz)z8z y¼yxšw²v¼uszqngkihZfd1c—bõcjcÌeFfúiulnnpKq}rçsÆtrt¨uuu tžt5s­sr¯rrrŸrÕsDs–ttËuƒvsãttBt5sösÂx vÔu©t³tsˆs,rßrxqÂq#pùpÍpGornžmÞm'lÕllÙmm nsofp p±qŒrtsQsút”tóuBuŒv vmvÊvŠvtôs×rapðoimÆl|kAjãj©kjlJm¼opŽr svtåuõvÝwcxxZxxtËuxvv¾wwew\w7ww7wpwlwx8xÊxÞxÔy3y‡y©yiywDuètŒsWrnq‡pèpWoéoPnñnçnÜn„mâmBl¤lk¬k]k~k¥lKmnnòoÓpÄq°rsYt tlt«tÝuQu¼vvuÈtôtrÖqŸp-n‹m$kèkejçk>kÁlÒm¼nåp"qxrÏsóu u¸vRvŽvÕvØvìv vXuhtHr“pöolëjÒh½g=eÜeee"e{eyffþh‚iükglÅmœn4nanµnéoo1oPoTo,o,o_oéphqqÝr¤sQsétuuªuùv3v8v/vFvww?w²x†yJy—y´z)zzÑz®zdvÎucsór©q¦p£oîoHnànZn#n5nPn)m´m3l¥l"kÓk…k–k°lDlömðnÎoºp®qžr”sZtt~tÎuuouÆvvuÐu tIsqõp€n×m\lkzjÚk klum'n o p.qUrUsBsÜt]tºuQu°uæu°u©tösørEp¨n²l jœh¤gDeòeeyeîeïfcg;hŽiÏjíkùlˆlælöm1m]m€m“mªm¼m­mÛn>nûo°p€qOrrÅsZsôt`tÇtôu uu!uhuÕvwvêwx¬yªz;zŒ{#{| | {Ùv|us½rq‰pŠoÝo=nín‰nn²nöonÈntnm°mum-m"mmƒnnËozp@q qärÈsŒt>t³u"uluÅuþvLv:uÿuJt¤srq-ožn-lèl1kmkdk¦lUl¸m8mànšoCoÈp;p—pãqfrFs ssszsÛs¤s qµp†nÞlÿk i)gØf”f:f7fµf¼ggÛhøjjÓkkºkßkÏkÚkækðkÿl l(l2lŒmmñnÍo´pqHrr–s'ssÙsösösøttutòu¨v6w x:yaz'z«{f{û|Ž|°|¤v%tÝs“rmq‡p“oóoco9o o=oppUpUp@poëoÁovo?ooHopp€q q˜rGss¸tZtÙubuÀv v2vˆv‘vhuÔuZt†s£rbqonbmzl|lkÉkókèl lcl¸lÊlÄlÑmmCmìnùpp·qqØrqÞqp”o’nlHj“iQh%gÍgÄh%hhBhÇi’jQjÏk&kkjæj»jjj—jŽj§j¸k(kÁl·m«nªo–p`q0qÌr\r³ss;s5s8sasãttuAuévÙxyWzBzð{É|x}+}l}€vEu5t*s?r‡q¼q9pÇp¸p¬pöq\qÏr!r?rVrKrVr6qîq—qRqFqRq‡q£qØrr€ss«t:t¼uMu°uëvvVvovSuâuŽtötOsYrTq6p/o8n'mWl°lZkök¿k´kujÍjiqiIii—jzk»l¡m‡nÄo®p&p-p¸pŽo½n3lÐk¬j§jJj2jcj4j%jWj¿k$k[kqkEkj×j…jHj-j.jjjj_jËk“lamNn*n÷oÉptqq…rrqrˆršrÜsqttåu—vŠwÄyyýzÄ{µ|w}8}}}šv®uãutvsîsPrårŒr†r‡rÉssps¶sâttt9tsØsosrÓr­r rzrirOr†rïsttuumu–ušuÓuäuÅuou6tÜtwsâsPr’qÐpãoÛnãn mnlÙlGkËjßi…gûf eÐdíeeªgh"i—k_mno|pêqkq;po-nDmmm lñlÿl³l[l,l llkÛkŒkBjíj…jAj,j0jiíiÏiæjjykkÁlpm/môn´oappÛqsq´qßrCrðs¡t}u;v8wxxÃyÎz­{·|ˆ}T}‘}§wWvÔv]uüuªuBtít§tŠtntpttt…tt›t­tµtÂt¦txtsÀsds"rìržr[rrr^rýs€sõtot®tÌt½tÏt¿t‘tGtsÞs¤sds4rár~qÚqpQo¤nþnpm•l©ki/fødÌcahaab†c¼eÂhjlÊnp¢q…q×qp‰oÐo"nÌnËnÛn‘nmÅm€mEml¿lgl k®kKkjÿjújÐj‘jVj)iíiöj&j kk›l3lìm›njokp8p päqgr#rÜsµtvusv°wûy yö{{î|²|Ô|Ðxw·ww]w;wvÃvvWvuÎu†uNuut÷tótïtÛtÉt†t's°sXsr–r/q¬qqÁrYrÜsXsÒt t%tsìs¶sts,rðrÈršrŠr“r r§rqr#q•qpioÚn¬mGkh«eßbð`}^]J\÷^r_Þbpe h+k#m“pq/qèqopûpDo±o{oŸoÉo‹onÎn‹nDmñmšm4lÆldl kØk¹k—kUjüj°j[iài˜i…iÄiîjLj®kKkål½mÌn²o*o~ppâq£r€sHtMuŠvÜwùxûz5{{Û{è{Õx#w÷wíw÷wþwîw¸wŠw/vÄv8u­u/t¹tnt,ttttsõsªs1rÖroqôqzpép·pÁq>q¹rBrÂss!rørÑrrKr qÑq©q{qvq…q¸q÷rrqÐqpðp{o3mk hebaó^ô\[ ZV[º]J`8cf`i«l^nðp%q p«p/oonònìo3oo‡oSoPoCo"nÞnŸnAmÐmam lÊlŒlHkõk™kNjðj`i÷iÉiçiïjjFj®k!kèlämÃn6nŠo$oîpªqxr5s'tHu‚v‘w“xÕyºzezVz2xx x-xjxx´x„xUwÚwOvuÒutRsÊsWs5ss1sZsYs!r¨rHqÊq8p¥poÁo›oñpbpúq‚qÄqãq¸q‘qZq/q pèpÓp¼pÇpÛqqUq†q¨qqTpÊp}oHm´jôh?dÂ`×]QZX³WzX¬ZZ]¶`Ûdeh kmÉopoÒobn±nQnknºo2oooŒoÅoÕoÅoŠolo!n¯n$mµmWlõllIkûk¸kZjÇjQjj(j(j?j;jxjÐkl†mhmÚn.nÊoŽpCpûq¡rks]tjuWvJw…xbxóxÊx˜ww wBwœwìxwçw·w3v§uâutHsar¶r,rrr=r„r rŠr qÅq4p‰oÚo7nßnŽn³oo—ppepŒpzpqpbp\p`pcppp}p“p¯pÈpâpápÞp«pvpoÑnÍmrjÞhHdÇ`Í],YîXwWWöY‰\ß_æcdgj#lñnJo_o8nònqn9npnËoboêpQp¨pºp¼p—pšpbo÷oUnÅnBmÂmfmläl¡lBk¹kQk"k4k;kDkk3kwl-mmänPno,oØprqq€rrÃstCuv2vùwdwvÁuÚuÀv vuvØwvèv¿v?u¸tòt-sOrVqŸqqqqnqÛrr.qÖq…pÞpo;n„nm¡mšmÀn4nœnïo(o9oKoWogo‰o³oéppLpp°p´ppTp oÏogo7nAlújˆhd·`Â]YîXWWæYE\P_b]fi_lEmÀooonÏn¼o oŠpSq$q»rrr5r8rTr"q¾q peoÁo%n¹nnn.mÑmSl¸lIllllk¿k¯kêl¤mznAnªnöo‚pp¢qqmqÒrOråsetuuÖv!u§u-sõsÞt)t—tþu1utót‘t+sŽrïr5q`pÈpSpep’qq§rr9qïq§pòpo#nXmØmSm1m'mtmÂn%n{n¼nôoo9oho®ppMp’pôqqpÀpypo×olo#n0mjÚh¼eÂb;^ø\&ZîYÌZŠ[”^`1c)fi¿lnoeoÂp p p.p§q[rCs.s¶sésÉsçsôtsÁserÂrqrpápƒpFpo–on]mém¬m£mŠm[lélºlàmn+nÌo*oloÚpEpšp×qqTq£r r^rêsåtƒt©sës,rŽrvrºs&s‡s¯sŠsps$r×r]qÞqEp‘poµoÝp)pÐq†rrNrqÐqp2o5n_mÒmFmlæmm`mÞnRn¸ooFogo“oépSp¦pîqQq}qq>qpÆp‡poÇnæmØkûj$gŒd}aœ_]æ\Þ]r^/`+b d²g²jmn‹oöpqqFq·rss_tRu7u›u³uwu}uouMtùt©t)sˆrðrrIr-qúq“p÷pToÔo‡o\onÀn(mÒmÎn;n£ooao•o×ppp$p>phppÓqq…rƒss8rDqLpgp‡pÝqbqÎqúqÞqÒq®q•qaq#pÊp[poÏppnq(qìrgr²rjrqapŽo nÄn(mšmem$mOmŸn9nÄoLoÑp+pbp‘pìqQq§qär)r>r;rqøq¿q~pÿp”o½nÒmKk·i”g$dâb×aäaa—bc¬e>gsiÐlnotpÀqurrzs1t#u3vvÎv÷vôv˜vevuÅu`ut±t#sµs~s„ss|s=rÇrLqßqq^qp…oèozoAo\oto¥o×oìoîoÀo‚oMo:oHoCoZoloÇp¢pþpÖopnn\nÇo3oÚpVpŒp|pp‰p«pÈp×pÁp•pqpJpŠq qÓr˜ss=ràryq±píp o'nrmÕm—mImumÐn…ooÅpŠq,q›qàr?ržs sSsŽs…sis0s ròr´r(q—p´oân¤m@k„i¥hf¼f@eäfTf­g®hÉj`lm¨o.pTqbrrÃswtdusvw\xx xwƒwv˜v/uÓuzutt>t:txtŸt£ttQtsÑs°srs rxqäqepøp¿pŠp}p‹pxp7o³onœnOn6nmïmânnÄnÍnJl^jujAkEl mmÓnKnon¢nêo^oßpMpp¾pÔpÕqq°rss+sxs™s"r˜qÃqpIo^n“mãm—mAmomÉn‡o!oìpàqÃrvrãsRs¤ttKt`ts·s4rÕriqüqVpo¥nêmþlÚkŠj+i8hwhuhii~j.jölmAn„oÄpËqªr[ssñtëuïvÿw±xIx=xwpvØvCuÖu}u t£t%sýttyt®tÌtætîtøt÷u títŸts´sAr½rNqöqÅq±qqqp=o[nn mµm=lÖl‚l>l]kŸjXg‘dÛe×g‘hÍjVkml:l›mm‹nIo"oåp|q qbqqÝr€s>sìt$t7s®sr!q|pÁoÊnànm´mHmjm´nxo'pq(r6s*sØttáuTu`uRtÊt9sbrŒq²pùp7oCnbmÉm5lhkwjliºi0ibiÈj‘kkÀlumknvo£pÓqÓr sJttíuÑv´w»xTx²xex w^vÁv'u¡u(tt'sÓsætt€tÀtûu>uuÁuñv2v.uüu’uPtít]sÍsis*rýr›rq(p onUmÒmlYk¯jØjNh¬f…bÌ_/^p`éb¿däf{gÌh’iVj&ksUrÎrq:p oýon?mwmlŒlšlÃmwn3o5p2q+r"rÙssÔts½sOrTq\pnŠmkêjúiØihœhnhgµg*fÍffÐgih_iiÔj‹kƒl¢müo^p˜qœrrsetSu@vw$w©wÒwSvävBu¶u%tsþsVrÿr×ssNsªsøtMt£uufuÁv!vEvFvvuÅuRtÕt’t^t'sªsrpÚo—nÁmìl×kqj7hƒföd&`è\-W’VˆY¨\^Í`îbÌde-fVgÕizkl`mÉnÉo‰ppÜq—rSr—r¿rBqŽp©po‘nÞn$mllðlvltlmmånñoÝp¨quqùr‰rr‰q·p»om˜k»i­g¼fdÏctbÕbzbÓcc¦d"d¯e#eÉf¬g™hOhÚiQjjÞl(m‘o pLqjr™s´tÖuÂvÓw4w+vƒvuttÐt"surèrQrrrJr‡ròsbsÙt5tšuu£vviv¡v¬vÑvºvnvuòuÏuœu tmsLqêpoounKlÄj«hÔfgAÔDÈG§IàK×M¨O×R'TxVtXKY›Zë[Ë\£]-]Ó^"^R^']ð]³]ƒ]Ÿ^^V^U^]å]Å]£]¼]ý^_^Á^×^é^N]…\ZØXðVÛTQNK HµF’EDCÖCIBíC^CÅD•EWFIG0H@I‚JšK`KêLWMUNŸPëSlV_Y [»^‡aEd*fghUiVjajÃkk jój×jñkjõjçjúkOk¹l1l‚lÕm#m¾n™o’pSpòq¬rw?6?Ù@aAŠBûEmH K$MÿQT(WbZÅ]‘`a™c;d;e*e¾fofìgbgšg·gÎh h`h¬hüi:iœj jÈk­lžmcmþn°o.o£o¾oào…onm½@¥B(CDDE E­FFŒFãGG(GKGrG}GÂH\HõISIBIH·HWH"H$HEHYH,HGIFpDÝC@A>é<_9¼7 4K2$0J/<-ÿ-‚-.-—..Ò/k00‰1,1ó2¾3W3ù45¯79<?AÓDÞHKUNÐQáT§V°X¹ZF[Õ]$^£_»`•aaŒaëbLbŠb·bãcc}cåd‚e5eófŸg"g©gñh=h*hg~fÖe”d[b}`€^[ØXêU›Q_MFH‘D >˜8³2+¦%BÅn«Ñ"$Ô'…)²+×-¡/W13C5"6ƒ7Y8n939Í:):©; ;X;Ž;Ò<<@<—=6=Ñ>B>;>=–= <ŸA9‰3ø.%'Û!ž·Ï–"Ö¨7‡o!y#2$®&#()Ç++Þ,×-./.Ÿ/#/‘/õ0E0–0á11~22Ÿ3 32å2d1Ò1E0ä0µ0ž0^0/).8,¹+H)J'!$©",ùÑ‚}9ÈÆ×9  ]”ÈPªèNŽ” ë#U%á(ì+Â.©1Ž4‚7Ÿ:x=?CA‚C§EíH JKÍMpNÊPkQgQÞQÏRRXR”RRNRR!R}RèSLSŽS“S®SnSREQ†PNjL7J8GýFC*?½;}7³3].Ã)†$HØE8Wñ ­ Î*jCÛÈyÊþ¢(b 0!!¨"U"ä#q#ä$Y$½%%y%Ç&1&Ï'\'Ë'Ì'³'<&Æ&4%«%7$ç$‚$#0" | 25ãsBð*–à«UÛUv©Ôã&ò 2À "±%H(+ -ð0š35¦8!:¢<Þ>ÿ@ØBÏD}FPGVGÔGÆH.HmH„H7GÀGQGG>GƒG×H HHG°GTF~E½D?Ba@>Nu›´€*¥?ÌQ¿,ˆâ8…í‚q{lÅQÐCÍLà õw&ž '  ð05Ë j R C  ½  _ } ­ Ä ¼ Æ ÅS•ô¸Ý¾"`%'±*r-/…1¦3³5Š7—9W;<<–<¢==9=.<¾<=;À;_;W;~;À;Þ;Å;°;Q:þ:09^7×63æ2Q0„.}+³(À%B!öC>4ˆ" I,“8dý"s9ï+ , ÷ ¬ Z F  ‚  ‡ûc·ûC’áD¼*”±®a¾fóvçxÑ þ æ â ¾ ŸPÞfäÝÛœÃë]ßnê<ƒ¢ÇÐÁÂÆ1±»Ç N Å ÁÒhð¨T!¬$)&S(r*[,i.%/á0ã1¢1Ç2221©1(0’0/Ê/è0 0/Á/Œ/).Ý. -+V)‘'¬&:$z"Q•Çw ‚ ã–¼™#‘n„$þvÛ_ ×|È¢<š¸Îí6ŠÆï  F ‚ Ï  i ½ Þ å ® p )  Ø ‡ ¶CÊ2•æC”ÞJ”ö‚ÿ§ÿHÿ ÿÿÿ?ÿmÿ‘ÿ©ÿ¾ÿÈÿÃÿÔÿïHV\Ž9ò " fÙ2‚ÛQY^ 5"#»%n&~'S'{'ª'‹'‘'K&Ð&*%%?%G%]%$§$l$#º"Ú!¸ #±%Âõ›’P£  ÁPÒæ’âÿåÿ ÿ^ÿ‰ÿõDtj‡¡›v­p”o@XÜùðH{¢ÀÇØÌ©ƒ„k(ÕrÙ›rK, æÈp'ÿÖÿrÿþºþ]þýëý×ý¾ýµý«ý®ýªýÂýáþ)þeþßÿq>óêðXÕ’ ;  Õ·˜h%Ù¯e4T(H#/äIˆÿ±BÀA ÝYR0çé¾W› Ø  § ×ñ¿!4XPÿËÿÇ/#ÿóÿÚÿøUI ]Ľ‰oï4ƬÉ:+ý-B<0?J;*+9UO&Û“fO\d}·ñ-]jnQ> Æt/ÿüÿÃÿ£ÿ‰ÿ‹ÿˆÿŸÿºÿðlÏ4s¹ Ÿ@%A› ÷ a «ÁgŸˆ¦–¥V´ðy$´FÑw7‘œ Õ  „ ¢ Tܵ¸½ å}tÖ5ÿÉÿºÿÙ 3ÿ·ÿÿëHÿôÿÿŽÿÒÿõÿâÿ‰ÿYÿ© ÿÜÿƒÿXÿ‰ÿÝÿýÿâÿ©ÿzÿÿ§ÿºÿ»ÿ´ÿ¡ÿŽÿƒÿwÿŽÿÂÿü$ÿøÿ¹ÿÿgÿ\ÿ}ÿœÿÛ!p¸ê'6& æÒÀ£Œ|“­ÇÖÚçàÄ¡‰Áÿ€Ã…j£$ ˜ ì ˆ Ò £ ³ ´ Ç ‘ ( x Ú <… 0«ðG»úããt0Èÿïÿ‹ÿºÿÿ ÿDÿ£ÿÃÿê>`ÿöÿ ÿûlZÿéÿûL€5ÿè[ª°XÿþÿüC—¸‚2?n‰cL7&jÂõÁrÿâÿÐÿÃÿÒÿØÿî2`ˆ¤¸Îí?QRZ`elvL赊cE JvÍ%¹M'8+å <%;NiJ…ÇqZ°ýº(±ÝÀ e•ÿÀÿÔ ÿšÿFÿ™ÿâÿ©sÿ¯ÿÍ$YHÿèÿªÿþ_IÿÿÿÅÿÛV¸›+ÿÅÿ¹!š¬cÿ×ÿôDzˆˆXÿäÿ»ÿÙ}Û Õ›\2ÿöÿçÿßÿû!Vy—¹Ý +CL]cd^cT7ü¼yAÿÝÿ­ÿrÿ^ÿfÿ’ÿ«ÿÙ]šÓKVVo£äV:ñN‚ÿþZ¶±ÿ„ÿ¡'Ÿ¤ÿ€ÿdÿ¤ÿèÿïÿwÿÿ`ÿÑÿÞÿ¥ÿTÿBÿ¸ÿÍÿ‹ÿáG6ÿòÿÇÿÚ=wÿ¶ÿÒ']Nÿèÿ° Ó¡ÿ®ÿÝ_¾½^ÿóÿÚmµØ³ƒ5ÿâÿ¼ÿ³hÞ<QG 缌fA<Eas‚𣫵¾ÊÏÍ¿¯–qN1 ÿ÷ÿðÿë:|®Ø/*ë£_ ,fÌKyLä\ÿâÿÜLÁ¿Nÿ«ÿwÇäoÿÒÿzÿÄ;Gÿ¡ÿ~ÿèCÿÿÿŒÿoÿšÿâÿÿÿ¨ÿ•ÿ°C=ÿ×ÿ› ƒ^ÿúÿÃÿÞO•9ÿÇÿ¹» ³ÿ´ÿÒSÓá„ÿÚÿîM¦Úò½uÿÉÿ·ÿÁ{à*@Q9!õŘsbUVTWUZft{{}xtiZJ<70:Ls›Çõ ÷´Qÿåÿ„ÿiÿeÿ°k—n3ÿÛÿuÿdÿ©‡rÿÕÿ;ÿ$ÿ¥nÊIÿyÿ"ÿ[ÿåCÿýÿ…ÿoÿ° JÿÓÿWÿ…ÿèÿöÿÇÿÿÓÿ¨ÿÀ*jÿ¦ÿáO}Yÿóÿ¾"”‰,ÿÁÿ¼Oò¹ ÿ¤ÿâ„”ÿ¿ÿí;¨ü ³Wÿúÿ ÿ–ÿµˆç+?UB(ô¾ŽjZHC:=FOMJQ\adekt„‹¦Ô ?U`C)êžBÿÜÿ¯ÿ©ÿøS¸–ÿÇÿ¤¹5zÿ±ÿnÿýÐ2ØÿýÿMÿo`QÿÓÿjÿ¡:ÿ¡ÿ_ÿ¶ÿâÿ†ÿtÿ¸ÿs@ÿÜÿÂÿøf›6ÿÉÿà@œšÿžÿ¶IEÔÿ£ÿÉ[ó¶FÿïÿÒkË  û°SÿÀÿÍÿùSÙ):'ìɦƒhNA73$"/IYhtˆ£Æè 5HO,À>ÿîÿÊÿ¿ÿÿS°ü÷¥;ÿàÿ”ÿº)¶*Gÿ•ÿoÿüáWéÿûÿSÿOÿâ~qÿüÿ”ÿ‚ÿñT%ÿ¶ÿvÿ„ÿâÿ¹ÿRÿ{Dÿëÿ™ÿÖ:Y1ÿÙÿ·!rÿÏÿß`¾ÿõÿÿŸd)WÎÿÿÿ~ÿ°f.îXÿãÿÃÿÞDšã,3Ç] ÿÝÿöP†·ãûæÈ©wbUBBNj’ ±Èå #ÔKÿÜÿÉÿ±ÿã@»*IBã}ÿ®ÿ£ÿÉFô;ÿEÿoÿ=ÿäÛgÿ>ÿ:ÿÝpŸ1ÿ¤ÿ•ÿâ9Nÿçÿxÿ…ÿÎÿ÷ÿçÿÿZÿ£RÿÃÿ´ÿíPwÿ­ÿÝJ{ÿ´Æÿæÿsÿ§b,gòÿšÿ¯+Ò(ÿŸ%ÿßÿê]³ö0"÷¡S#)PpµËÕÏÏÉ¿²¥œ“”—£²ÂÐÙàßåÔ´Kÿñÿåÿß EŸ CS­BÿäÿÊÿÌ œû2Ýÿ†ÿr!(ÿWÿ1ÿʵOÿÉÿÿÌ=P ÿ¦ÿtÿÄÿ°ÿ}ÿ†ÿÔ,8 ÿÂÿ²}OÿñÿÉÿôj¯]ÿèÿɦîÿäÿgÿ˜kC‹/ÿ‰ÿ|À/8ÈWÿþÿÐÿî W¯õ)í¢gD,.)5IexŒªÂÑÕÚÛßßÙÕ×Ûàׯ¦Œh7ÿÿ*Z¨Ck4ÖWÿíÿÇÿ¶iÚD1Äÿmÿu9.¯D;ÿPÿ1ÿÔŽäÿÔÿÿº!e&ÿ»ÿ“ÿ· 6ÿåÿ„ÿŽÿÍÿóÿüDSÿðÿ¢ÿæTyMÿéÿ»’ SÿèÿÇ0·ë˜ÿäÿqÿX)vQÿ°ÿ“ÿã†î~,ÿã+yËýöÖ¥{\>8:MWlŒ¯É×äçêèåàßÖË®ˆaD3=ZŠÈû+ëŠ$ÿçÿÅÿô/Žþ ƒÿßÿÿ¨N8™,/ÿ^ÿ<ÿÌ–ß’ÿ˜ÿº$dPÿëÿ”ÿ±-ÿ­ÿhÿ¨ÿ÷ÿÑ+i*ÿÔÿËhŒ1ÿÑÿÞ6˜¬FÿÚÿÏ-Ƨÿöÿdÿ~8‹5{ÿ½ÿlÿÂOáóÁp,ÿí7Èò öݶ•qodhu¢±¾ÁÀ¼ÀÁ¿®š{WA9HRhŸ¿×öëÉ|"ÿæÿÃÿê"|ÕþÓ?ÿ¸ÿcÿ¸‚Dœÿ;ÿ0ÿã¢ø ÿöÿ¢ÿ¾ waÿ½ÿ¯ÿõ5ÿÎÿŠÿ„ÿÐ ÿÞÿ¿VQÿÒÿÎ/ŠpÿÝÿêR®@ÿáÿ×BÅý¯ÿ„ÿ“3òU;šÿöÿ£ÿ·4£èКX &[ŸÙòþçб˜†pgeq{Šš¤§£§¤—ƒtj\]iƒ™®ÃÑçãÔŸWÿìÿ÷RÔä¢7ÿ·ÿŸÿî˜Qv"ÿeÿQÿâ¥ð§ÿ¯ÿ½ho#ÿËÿ¹ÿæ(?ÿûÿ¥ÿ–ÿÀÿøÿÆÿÕÿéMMÿÉÿóG~oÿÖb¯¦AÿàÿÑ+ÇÒ+ÿ“ÿƒÿù¾VTÝ%ÿ°ÿ¶ÿþyËáãµ`)>q¨ÒÞàË»¥€rnjoy‚…„‡ƒvlm|ˆš¯ÁÑÓÓÆÀ¥vA *n¦ÉçÕ·mÿÆÿº%Ü\tßÿÿÿiÿwǪÿ·ÿÐ#sp(ÿÜÿ¼ÿã"8ÿÔÿ¨ÿÊÿéÿºÿöÿÜÿè0b5ÿñÿÝ_ŽRÿûÿãq¬“<ÿäÿß@»÷º.ÿ¶ÿÿ÷ž&Kä[ÿêÿÄI—ÉËÇ¡rG&(4]‹µÒØÜЭšˆvj`ZQPUafqƒ˜ª¸ÈÐÚÓÄ¢|S'C}´ØÐÄK ÿÉÿâEÐL?Ä ÿ„ÿ¸ñ¨,ÿÍÿÙ,ktFÿÿÿÒÿÝ@-ÿôÿÃÿ¾ÿô ÿÑÿÁÿêÿÔER.ÿôÿâ#ntAÿïf§žHÿðÿךëÝeÿÎÿŽÿÄfC†ÿßÿå.kš¹¶²˜vV9=R}Ÿ¸ÎÒÑö£‘}gVDDLcxŽ¢­µµ·²°¡Œj>%=kœÂ·Œ_1ÿüÿøfì-‡ÿáÿÿ¸EÊèŽÿÏÿò<}w:ÿîÿô45ÿØÿÎÿè ÿïÿÆÿÔ'ÿáÿòKMÿç@lh7ÿý'sŸˆBÿÿÿú:™ÞÃ[ÿæÿŸÿÔRÞ'û¡3ÿöZƒ™±°§Œo\S]gy ¬ª¦˜ƒwnpx‡—¡¦¥©¨§š…jOA2@_Œ¶Ã¢†\"ÿû0Œâ%ú~ÿõÿ§ÿÖI¾ß˜0ÿéÿø=iiIÿôÿó"2!ÿõÿÓÿâÿâÿÉÿßÿôÿý)I5ÿÿAhf?)e–•f*"xÁÕŒ ÿ·ÿº(¬ ¶a".Ba~•ª­«—fSQVgu€†‹•ž¢¤¨­²´´¬ž’މz_G7CY‚®ÅË­ŒgN@ K™ñÓaÿèÿÃxÒÏ~ÿ÷Tza' ÿëÿåÿù ÿêÿÚÿØÿâ ÿù>C+ÿü%[lV0Hu‹†^+5t»Â€ÿÐÿÝ'™íñÇt?.(@Vq‰™«ªž†rdWZew‚‹–Ÿ¦¬µ¼À½º°¥–†uaSCENi‰¡±§—y]H234\ªãö´FÿéÿÀÿúa¸Â|+ÿý Ca\>  #-ÿíÿãÿðÿòÿØÿÖÿàÿßÿù %;;;RUN?59BXy„tN""YœÄ¤OÿâvÌç¾’aECDR\n‰Ÿª¥£—€qrˆŽ•šž£«²µ³±ª¦š†nUNSjƒ–§ŸˆgRJFKDQs¢ÞÛ›4ÿÛÿÑ m®¤`$LaJ$ #" $,ÿãÿèÿýÿôÿáÿÕÿÚÿâÿÙÿ÷ÿþ2C)#BTQ>/0=VnzlH27_›´œVÿôq²ÊÉŸxXEJM_wœ ­«—€y~}ƒŽœ§®¶¹½º³¥˜‰ypgn–¡žš‰s^OMLXdµÎÎ’5ÿôÿäoª­t5"N_WD-(' (ÿðÿÕÿðÿãÿÙÿÛÿßÿàÿ×ÿþÿþ#932II:04FZ\[kx{i?-Fz¬ªq)R”Á¬ƒkc^fq… ª¦—‹ƒ„Ÿª®³³¸µ®Ÿ‚~ˆ’ž­¯¤Ž{pjmknn{”­Êº€7B޵£r?3H`kX?AG=( ,ÿýÿáÿÞÿýÿýÿÙÿÙÿæÿãÿÜÿÙ .@<!?TT@.4HSZbgrnS<4O‡«¥r8N‹¸È²ž…nhm{€ˆ—§²¶º¶¬¡™—˜›œœœ›••Ÿ¬¶µ°¢”…vnhjgq‡£Ãİ{6KŠ«¡qI9F`f\NBEB'!0(ÿáÿãÿûÿéÿÏÿ×ÿèÿâÿØÿÜ >N84UeU9/;Pb_W]foiK<Ox¤«‹T'(J†²Áª}ˆ‹“ž°ÂÐÐË»­žŒƒ‚‡„†œ¥®¼Âôˆ‚„€zspo~ž·Å©q:1d–§‹a?=SdgVBFLD0#A9ÿðÿáÿû ÿíÿÛÿ×ÿÜÿãÿÞÿØÿà  ' ,MM9%$<Zg^I<G_mpokuvaMDW‚£ªŠ]=4T}©ÉÌÁ¨›—–™—›¦²¸¹½ºµ¨–Šˆ††‘£°¶º·¸°‹Ž„|xƒ˜­Â¹œk8(:k˜¤‘iPMXgi_VNRO8! 8? ÿûÿñÿÝÿáÿðÿèÿÜÿÚÿÝÿß%4 :ON:&'@dwhOIYs†ƒutuxr[PZxš¦›xREP{©É×É»«§¨£››–•¨¯­¦œžš™ ©°®¦ž ¤ž—˜˜Œ…‰œºÆ¿—b<-Jwœ¡…cPZqwn_SY^XE+.AA*ÿõ"%ÿóÿáÿñÿïÿÖÿÙÿäÿÝÿû  !4.!*;JMD33NlsgWQ]rƒzƒwh`i~•©¢…eR`|¥ÈÖÔü¶ª¢ ¡œ˜™ž£¥¤¢Ÿ ¤©«ª©¥ž™œž•Œ‹‘•ž­¶½«‡_@AWz“”…kZZepj]XX]XC.#,@K9!(ÿôÿôÿûÿúÿãÿÒÿÜÿêÿßÿù'36-$'8R^K58OhrgSJSm„„{~„‰…xldq©¬•xfaz ÂÐÊȾ±§§ª¨¢œ˜•˜ž£ Ÿ¬µ²¦¡žœ››†…¡±À· zRCKlŽœq_^hspcUOXa\I/",>G>($3,ÿöÿýÿùÿåÿÙÿÙÿãÿêÿà '461,0FWO@:CVgogVO^u|z|}{mkz’¢¡—…rr…¥ºÄÏ˽ªŸ™’Ž‘–¤¯¬¨´¼µ§¢ œ˜”’”žª·¹µ ‚iZctˆ•Ž{hdmvypd`bgdUB66BJC1 #)ÿíÿÜÿáÿíÿíÿæÿà *!$3<828BKMHDERhtiXV`luxtop}‡tnt“£¤”}Š˜ª¿Å¾«›„‚‡’–¦²±¬²¶°¦¤¢œ–’˜¥´º¹§“mn~’›’ƒrkpzulipun]KBFNOE3# ÿÿ ÿóÿãÿáÿðÿûÿðÿÞÿÝ &&#/7<@DMQPJDGZjfXQU^lz{uy~€}zz|…– †„‚Œ®¶³²ªœ‘”‘›¥¦¤ª­©¡›–•˜ ¥©®ªœˆxqlt…’“‰|‚ytrpopj[KBBGHA2# #  ÿöÿéÿçÿïÿøÿ÷ÿçÿ×ÿÙ "#-?FGJMPQKGMVZZXWZdv„‡€vrwˆˆ€{‰’•”‹z€‘Ÿ¬»½´¤™’‘–˜™ž¡ ›—”’—£«©–‹znlsx}€{z‚ŠŠyjjqtofWHABFC9-$ %% ÿøÿëÿëÿòÿùÿôÿèÿÝÿ×ÿ× )3;CHLLLLOT]cfd_^er€†wux}~{}ƒ‹‘‡}ƒ†¨ª£žš–••–——™š™˜––—›¦¨…€tmnw~€~ƒ}vomv|vi^VMJMLC70-(%'$ÿôÿôÿùÿøÿðÿçÿßÿÜÿÜÿØÿù  "/;CFFLQRT\dkkg_Y^o€…~voms}ƒ~vtyƒŒŠ…vu{‡’˜™˜šœœ›š™˜——™›žŸ™Š}y|yxy|~€‡ˆqdbht~p_Z\ZWVQD;;>7.*$ ÿÿÿùÿõÿâÿÛÿÞÿâÿãÿÚ&@TZG, 6MRE8,$:Sa[K5!!*ItŽrT>9EJTblqnlgd\NDBHJQ]lz‚ˆˆ‹‡€tj^NC=DPajq††}tlecciqsj`aaYMB?CHE@BB:0(-?NL=1*'()& ÿøÿ÷ÿýÿøÿçÿÙ(9]l\9! ,F^bT:%")B`mhK+-Sz—pG16CW`cjjbZ[]XN@99CITcp{|ysoljhgbWMILOV_m‹’‰{gUKEL[fcYXWSJ?86868BII=)(;IH<* "# ÿþÿùÿúÿüÿýÿþÿóÿÝÿ÷Bb{m> GgsmO/">^pqW5%@_xveI21A[mqoc\SC;@LNNQV_db\XSLGBDGR_m{}tsl\MEJP_r…}tcOA<AAEOWYQG;/,.8BHKB1# ,AMF.ÿùÿîÿíÿòÿòÿòÿúÿøÿåÿñ/d~yR#>uŒyU->g…}]. JoyrQ)"Hj}‚qcRC:.0;LSXenuofTB2# !.:Lau†ŒƒmS@7,4G`t{„zgM80,5CPVSRJ:./7:<BC?4%"1AE7!  ÿñÿâÿâÿêÿçÿæÿïÿóÿêÿì$g„U("G}™„N$%LswQ'BdpeE,&-My“pT>.,)2>QhtwkdUB1'% #%1BS`hptxwtrwzypgW@0+21;PftpfQ;.)2<KafX>.)#+=LSE)';C>&ÿÿÿù ÿîÿäÿãÿàÿâÿèÿèÿßL‡`+D€ŸˆP &PvŠtI &S{‹n:*`–¿±ƒD"%-?Uj}~xaH-$7L_t„|seYODBFVk{…}mS?- =`v‚s[>*'&7SdaJ8)!0CNG5(=H<"ÿñÿò ÿòÿåÿáÿãÿãÿßÿÖ,nzP:zƒD'UtucB%&Em‚sQ+ L‚¤›€N F`iog^O>. -E\kr{}|sj]QE:3*((4E[my††„nL+8YqrdF"'?Q_T; &@WT: (9:%ÿîÿåÿð ÿîÿàÿÜÿÞÿãÿäNb= ÿÿ,p—‚B+WqnM+#J”{? U›¸¬l)ÿñL€ša>ÿóÿéÿõ$Hjˆ’–ŠƒvfUG@<:61,(""$1?Y|™±ª™oAÿÿChy‚h=ÿõÿü8\dV1#Ri\0 ÿý57$ÿÝÿÔÿèÿýÿëÿÞÿÝÿåÿìZ.ÿóÿô*x¡ŠE,]mY: 2Rju]+ ;lˆŒk@&'Lz´œq3ÿæÿÐÿÝÿó9QgowsmbVMIMOSVX[WN@4,#!%+=Vu“¢°£a0ÿæÿèÿôRw‹rJÿíÿéÿý+Yi_3ÿëÿþ,MQ?ÿúÿó#3"ÿ÷ÿÒÿÏÿëÿîÿÙÿÔÿÞ/ÿñÿÔx­–P 6bqT$/Xrd=ÿî=}œ~B ÿôdµîäÁnÿßÿ¬ÿ±ÿ¿ÿù8u£«­mD"&A[ow}r_OC;841,++7Hc„™«œƒLÿÖÿ´ÿÏGŒ¡—VÿÕÿÁÿî/kŠg#ÿãÿÇÿçOcDÿæÿÝÿú.ÿêÿËÿÎÿîÿáÿÉÿÈÿÞÿÅÿïY©›L)`hE-R^P+ChhEÿûJ‘È¿—HÿàÿÐÿóPŒµÖÌ·‡\0ÿëÿÞÿéÿñ)D\lu††~rgYK:)  0QxšÂ½žU ÿÔÿ¥ÿ¶ÿá-y—•W ÿÙÿÉÿô3dnAÿßÿã=O< ÿÞÿÑÿé ÿÛÿ¶ÿÀÿé ÿûÿÒÿ¼ÿ§ÿØ8šUÿõSg@ÿêÿü&Q]AÿúÿúYt_!ÿàÿÑÿóL²ÝÐnÿ®ÿƒÿ±ÿòV±î%¼r,ÿöÿÞÿÇÿÒÿç#5ELW\Z[gv~}~xqeYJ<.  ÿúSžÔ÷Óš6ÿÊÿŒÿqÿ± rµt ÿ´ÿ§ÿÒ*x†Z ÿÝÿà1M;ÿÓÿÅÿàÿöÿÁÿªÿ½ÿè ÿèÿÄÿ³€—_ÿõN]@ ÿìÿñ>L4 ÿú)L[@ÿãÿå]‹œo$ÿãÿÁÿç#{ÇåðÉ¥o9ÿïÿíÿó 'C_q~€xo_M?87.*+5BQ`jrpm\H'ÿÿÿàÿÈÿÝÿÿB‘Ìýæ´Pÿèÿ£ÿvÿ¢ÿöWœ’_ ÿÍÿÊÿû?dT,ÿÿÿäÿ÷)OB ÿÙÿÄÿâ ÿòÿÃÿ«ÿÀÿìÿØÿö]ŽgNfB ÿðÿû1;(ÿî-SP%ÿîÿÂÿØ"u }7ÿæÿ¢ÿ·|ï#5í˜.ÿÓÿ¤ÿ†ÿ¤ÿÆ@u¤µ¾±©›‘‚pZF2 ÿ÷ÿêÿãÿò#Ed€£¡›yNÿáÿ¿ÿœÿ·ÿîTÄ A ®ÿzÿ8ÿ=ÿ¸F®ÙŽÿ´ÿ—ÿÕ%fs@ÿüÿÖÿó-QB ÿÒÿÂÿÝÿòÿ¿ÿ®ÿÃÿîÿð+jZ%ÿûJaMÿóÿü,(ÿù+F7ÿÕÿÆÿáW`3ÿðÿÄÿÕS±âî¬` ÿÁÿ¦ÿ˜ÿÀÿò2jŒªª¦qWG?3( ÿôÿåÿÕÿÃÿ»ÿµÿÄÿÙÿý@pš¿ÄÀ™u;ÿôÿ½ÿ“ÿ¦ÿňà#ö•ÿ}ÿTÿfÿÕTœ–<ÿáÿ´ÿÆ_tCÿöÿÐÿá:2ÿþÿ¼ÿ£ÿÑ ÿæÿ¶ÿ¥ÿÉÿùEDHeQÿÿÿý5$ÿñÿ÷ %?0ÿöÿÀÿ²ÿÝ!NHÿ­ÿŽÿº2«ï ÁWÿÖÿiÿJÿFÿ•ÿêO°ãèÏj< )9IU^]^N7ÿøÿçÿÞÿêÿñ9s¬ÕöøÞªNÿæÿÿ8ÿIÿ(Õ7còGÿ‘ÿÿÿ‹0¦¥Uÿßÿ›ÿµ bm.ÿâÿ´ÿÇ0&ÿÙÿ‘ÿœÿ×ÿ×ÿªÿ®ÿÒÿùBÿôVsb9(&ÿýÿ×ÿÚÿû%ÿçÿ¼ÿ¼ÿð*?ÿØÿ¦ÿ˜ÿàV¾ñºhÿöÿ’ÿfÿQÿÿµÿü;Ve@ÿÑÿ›ÿqÿCÿ1ÿ(ÿDÿdÿ‘ÿµÿÙ%AMZXWC*ÿäÿÂÿ¡ÿ‡ÿgÿ[ÿWÿnÿ‰ÿ³ÿ×:i˜“|+ÿÅÿoÿ3ÿUÿ–›Üápÿßÿhÿ/ÿmÿÛCi5ÿãÿ¨ÿ¶ÿþ@R'ÿáÿµÿÄ5ÿ¸ÿŽÿÿÕÿùÿÉÿ¡ÿÿÇ U~B(ÿýÿÑÿÃÿâ ÿÐÿ«ÿµÿî6Kÿºÿzÿ–ÿïqçô¸-ÿ°ÿwÿsÿÆkª»Æ¨O 3Q~¯åCo–ÀÜð÷  ýòàв["檄db^y™Ö$a˜w3Ÿÿüÿzÿ ÿ+ÿ—HìîLÿ›ÿ7ÿ9ÿ¬ Z=ÿæÿ§ÿ©ÿí:T)ÿÝÿ¬ÿÒÿòÿ¬ÿ…ÿ¢ÿßÿðÿ¶ÿ…ÿ’ÿ·ÿ×l‰a $ÿßÿÉÿÖ ÿ×ÿ£ÿšÿÎÿÇÿ^ÿ)ÿFÿ¹-p1ÿËÿlÿ2ÿPÿ’ÿåÿäÿ½ÿ®ÿÔÿÿX®*³G×DªÚýüÿ÷íò!+/9?G>3 ãžSÿ²hÔD&'Â[ÿÐÿ/þÏþ—þÜÿEÿÌFVÿ”ÿ,ÿÿ]ÿÎ&ÿïÿ¬ÿ©ÿß%@ÿÅÿ­ÿÅÿöÿ×ÿ–ÿ…ÿ©ÿèÿÚÿ”ÿxÿæ!nŒp?!ÿàÿÍÿÔÿñÿíÿÇÿÂÿä!/ÿéÿ‰ÿJÿtÿìl¬†8ÿìÿÉeðt¹Í§t„Â~ITQNM$ü z æ ë â ¥ y G èÍß  9 _ { œ ³ Ë Ò Ü Æ ¬ m *Ϫ R€²¢i5 àûJƒÿº•$hoÿÈÿmÿ—`^ÿÄÿ«ÿà&4ÿÀÿ—ÿ¾ÿöÿôÿÊÿ•ÿˆÿÀÿüÿúÿÈÿŽU‡y@ÿýÿáÿ¶ÿ‡ÿqÿyÿŒÿ„ÿoÿQÿRÿ€ÿ¯ÿÁÿ—ÿ8ÿÿ*ÿ™&ÿýÿ¦ÿaÿ‡ÿè­o)Ä.…çPS¤ ù < E Nà >Åa Ï ‡ k ] Š Ä_™Íèê¿F ú Ë ž  f X B 1R´(ÊqtLjNo¦š6sÿ›ÿ$ÿ"ÿÿÛÿïÿµÿrÿpÿ° 2ÿúÿ¦ÿœÿÂÿìÿõÿ½ÿŒÿ¥ÿßÿûÿºÖ{ÿ˜^O/ÿ÷ÿÞÿÅÿ¿ÿÉÿÔÿ»ÿ¸ÿÙ'†ÇÍÁÆÀM€EèÃÛœˆ¿ÐÉŸ‰ ã E ÔbßV‹¸aÜ_|‚7ë’DãèûE”óS–ËÒÛ¼¡]¡R40:Iœ¯¶` Ÿ+ ù Û ? Ô ¢ f ÅÙ˜RfÚœL¡†kœs–ظ]ÿùÿÕ\Dÿ÷ÿ´ÿ¢ÿÎÿÿÿêÿ¾ÿ¬ÿ¿ÿôÿê?:/1“!ÿÄÿ¨ÿ•ÿÿ£ÿ±ÿ¹ÿÁÿ«ÿÖFæY°æS ùèbn-\ÊÖü x Ö L ¨K'?X1ã'lei.êlý J ƒ z o P 6 . ( Q Š ë!L!¬" "<"\"@"-!â!‘! aµµiQHÞ7…f:ÊWætWcÈFŸÖ{ × qQ†ÕÌ…‰†o&vÿÙÿ ÿ¼ÿÆÿºÿsÿEÿ^ÿ ÿÉÿÐÿ²ÿ¡ÿÑ )(J›šºq5ŒÜ2tºòp3¦Cû z Í Ù Q Ž ´ ! Ý{€£CãßÍ•!t#0$®%&|'D(2))å*—+]+ì,f,•,Ã,Ä,Â,½,¹,Ü--p-Î.".s.’.¢.|.h.-²-,C+g*)Û)6(Í(y(1'Ø'U&Ó&%=$(#!Ò gë{RQ‚Ö®$ì[Á À Í ” ÈèXpàffD<²|†=ÿõÿ¿ÿÄÿõÿôÿ¾ÿÀÿÝÿøl ÷޲?ÃüEù£c »nH > B   Zþ«)ÞŸZ5§¹•}á":$Ú'§*=,¯.Z/Å01ƒ2p3™4Ó5÷6ï7ø8ž9"919C98Ù8”8M888A8‰8Ô9(9t9ž9½9º9Ï9©9m8Ü8D7y6¬5Ü54i3È32W1‚0À/ú/-.M-‚,{+F)Ù(y'%%ß$´#¹"m ò¸ x'‡T/Ô e l  ÄR“D~Mì‘ÿ¸ÿÇÿõÿÍÿ•ÿzÿŒÿ¾qõ ð ÷ 6±2§ , . j  Õý2RДdô7tšê!""¿#&#ö%-'D)f+÷.o13±68j: ;x“?öAfB»C»DÆE=E‰EEE D†CúC]B»B`B,BVBBÔC CgC¤CÔDD4D7CëCœCBAÕA9@‹?æ?><Ú;Î:à9ò9(8€7½6Ë5›4381Ý0c/-,*'Ð%="§ wÐBdãþ%Â÷ F ˜ dqçf×Þ|7ÇdÿÓÿΖÇXÒ{v÷„-ÏXô®WÇîð.Ǻ!¬#f$Ì&'®)N*ì,,û-‚-Ý.Ï0:2™57¹:@<Á?_AÉD-FG¥HÎIöK!L™MöO*OàPšP¹P³P4OÍO&NkM LÏLTLL'L>L‡LÑM$MkM«MýN,NJN"MòMŽM&L¸LcLK¹KJBIHFåEËDâD.CjBkA(?ù> ==;²:98Š6Ò4Æ2²0R-Ñ+_)?'%$ü"MBùÑ+äáo % ø {_€*È º EÿÊÿg(ˆ$™!DÊÁgâ’ôZ6 D"#‡$—%¨'')'+X-+.©01„3|5V6ß7¶8U8»9:5;Ä><@´CYEºHJ›MO”Q†S7TCUGV#WLX?YYHY‘Y`YX‚X WdVžUÍTûTƒT:TTT[T›TìUSU¬UóVAVgV‚VdV;UîUžU`UgPgwg„g}g‡gcg)f±fDe dÛdcZbób¤b§bŽbÏc>cíd–ee{e‘eŸeyece&d×dscýcËcËd(dˆdôe\eeˆe?edcÚb¸a®`U^ã]A[ÛZXUµSlQXOŽM¾KéIMF9B–?7;ì8²5‹2+/-,Œ*W'ù%«#r!·Øœ9_ Ý ëÒG}C#?&;8¡6Á6µ6—7ƒ8)9À;Í>M@”BSC|D»F¯IKPM^O2QSUÉWÚY"Z-Z§[@[»\ \Ê]Ù_a9c1eg&i€k‹mtnCnµnlÊmÍnÑo³pcp»q q@q˜qÒqêqãqÄqùrssYt=u uèvwwxxSx_w¸vòuÁtŒszr¬rqfp¯oúo2niml»k…j/he£c`Ÿ^¼]"[¡YÓWÄUÙS¨Q…N²K“GÓD4@Yd~béa|`À`4`1_ê`,`­aÂbÆd eHf¤h ihj”kám„o*p¯q±r‡rêscs£sæsúts÷s¦sys€tt½u‹vCvv‚vuÒuitüt~sûs‰srãrÕróssrÏr9qŠp´oñoKn­n:m»mm5mvmønæoÐpŠqq5qbq”qòrOrŠr­r´ss£tœuvow2wÊxrxóyƒy¯yÂyHxÆwÎv²utsñsLrÃr9q•pÛoýo2n=mRkújXh„f»eud­d ca˜`]ý\tot_sîs’s=s rÚr|r+qÒqûrmsSt1tñuwuÕv]vÕwQwyww)våvNuœt³sÎrùr:q¤qpŽoèo'nQm¥m#lçl¤l{l%l#lzm m©mŒlék~j€háfûdPa—^¡[ÒYVUSÒQ…nn n$nUn‘nÌnÎn¦nTnmèm¹mÈmónQnqnÿoãq;rsµt¤uGvvvÅv‰vXuþušuQuu0upuÑv v1vzvŠvtv u›ut³tWsþs“rör†rIrpr ròs?sesYsNszsÆtt0t sþsát!t¯ubuúvuþuxu t‚t smrœqÕqpéqq°r[rúsWs‘sítQtËu u)têt«t4sÅs6r£rqcpÒpQoÕoTn»mümblëlàlçm5mimÏnKnïoÚp&oãnÇmêl–k;iZgPebñ`ò^÷]o‚oÅp*p—pñqIqPq1pÎplpoàoÝoØp ppq”råsøtÜuºvew0wwµwkw1vÜvvKv:vWvmv€vƒv€vœvvRuæuŒu5tçt˜tIsçs]rýrËrôs*sysÁsÕs±s‹s¥sãtt*tsÙs¸søt}u-uÃuùvu©uhtót‹sÕrëqãpßpNoôp*plpÖqqMq™qðrOr“rÈrÄr·r†rer.qõqšq6p½pGoÕouon\mÓmemmÀnro"oæpq)rFrßrírq?p o>nl¼k0iÁhwgHfdæp,pƒpõq`q´rr'rqÎqvq2qq&qqIqvr st8u u¶v‰w2wÒxxwÊwwOwww wvõvÅv§v†viv-uÏuqu9utÛt¡tpt=sòsÂsªsÊsüt,tMt,sÚs‡srs|swsOrÿr¸r‚r´ss¸tMt­tétÙt×tštjsÚsrqp>o”oYo&osTs=r]rµs sXs søt9tptptQt*t(t>t*t[tØu„uüv^vÅw1w¾xxWx8xwÆw„wcwnwvwVw vÖvuuÿu\t¨tsµsƒs0rörÁrËrósxxjx;wëw´wwwZwv¬vbuîuRt˜såsds rÔrvr3r rrr>rgr|r]rTrxräsXsÝtWt³uu1uUut·t#s›sOssHs•söt/tCtit^tRsåsPrzq¬pýpnpo«oYnänºnÊo2o‡oõpcpÑq*q‘r!r¢rös,sƒsÉttttsÕs®s’s½sñtu:uÿv¢vðwwww¼wbvÁvmvDvuñuÍuÒuòv vFs–s»séttht¿uulužu¶u¼u×uùuÿv4v´w*w@wAwwæxKxxÅx°xzx+x wëwÃwqw v‡vutÚtsOrÆr_r.qåq·q–q‹qtqpq†qŽqTq;qYqßrks+sïtšu6uuÇu¢uVt×tlt/sýttet¾tðtëtït³txsãs+rAqdp¯po²oOo n¬nn¤núo6oŠoâpNp±q0qÊrbrÓs9s»t@tÅu&uzuœu²u»uÇuúv?v¶w4w·xGxˆxsxNx£xÛx¥x+wÛw¦wvw^w>w:wFwcwsÈsÐsöttwtãucuÚv9vvÈww>wow²x)xlxLxx$x`x’x¬xÀx–xGwèwÁw‘wvüwgw>wv´vUuþu©u”uuÙvgwwµxxJx0x(wžvßuÄt®sÂsrrq½qq®qürŽsssátQuuºvOvªvùw-wWw±xQxøy\y•yÞz0zŽzó{o{®{©{|{§{”{-zhy§yx²x_w¶w v‘vTv uïußuåuÝtlt.tBtctúu½v£wIwàx¬yQy±yöz•{{:zàzSyŸy3xàxxxw—vþv8u\t´t s3rbq·q&p_oáo¬oÌoºoápFpµpãpôq#qSqiq“qÕrBrŸs/sÖtªumvHwXxxx–xœx`x wÏw|wWw>wwèxnxÒy yEyEyVxúxgw„v«uùuru t¥tktQtt÷u„vv€v½ww‘xxsx‡xœx‘xhx|xêyxyºyãzz|zï{i{ï|"|{Ä{È{…{z xèwïw{w(v^utût®tTt.tttutÛtñu+uàv¸w xGxÒy“z#zhz“{%{{{€zúzeyµy2xÊxawïw„vàv ut]s¡rÁqöqKpËpoÉo´oõppPpÁqq3q.qaqœq¥qÍrr¶s>sùtÄu­v…wjxyyUzzJz“z…zjz"yÝyªy„y”yÀyòzyôyôyàyÙyyxnwÔwnw4wvÓv¶vÄw$w†xx€xÑxçxîy?y‚y“ygyEyx¥x}x¥xýyy2y[yºz9zÄ{H{v{w{${zŠyíxÉwVvuyu!tRsƒrãrr;r"r rr(uôuÁuçvAwwîxÎyvy÷z¤{{C{S{Î|{Ò{&zyëySx×xrxw¦vþv.u2tUsurwqœpáploØo¬o¶ppcpÍq\qÇqéqír,rmrqr›rýs¬tDu uìvâwºxžy¯z§{‹{ÿ|X|F|2{ô{Å{—{b{I{U{a{J{zÜzzrzyšyxhx!xxIx3x6x_xÁy$yzz:z&yðz zyñy›yUxÿxŠxDx8xdxhx†x«yy£z>zÄzízýz¢z^y¦xäwuÎtKs„s-rfqªqp´pypƒpƒpœpµvòvÔw wƒxby@zzÅ{:{¼{ö| {ý|D|>{Ù{zoyÍy$x¤xMxw£wvGuTtksurlq‘pÏpgoðoïppžqqµr`rßs'sKs sésût%t†u'u®vcw6xxÚy§zª{ |‰|ø}9} |ê|±|Ž|h|*|||{Û{y{z‹zyŠxÙx*wtw,w4w†w“w°wèxNx¼y,y¥yÏy´ysy|y~yVyx¾xoxwÓwŸw’wywŽw£xx‘y,y§yÐyøy®ybxˆw§v1tRrµqÅqdp·p$oo7o%o^ozo¡oÉwåwÑxx©y¤z’{n|:|®}}}!}}|Ù|H{cz¢yêy$x–x@wûw•vïv?uPtTsHr=qkp§pKoèp pUqqÓr©srttlt¸u4uuÓv vcvìwmxxÓy—z/z×{¿|•}I}Š}­}y}Q}|é|»|‚|\|e|Q|{~zêz/y~xÁwïw;vƒv@vBvv“v±vëw]wÛx]xáyyxúyy,y$xëx­x^x!wÙwwwvÍv·vžváwXwéxPxzxºxxMwevlt×réq;p%o³on¦nm¶mÀnnNnn¼xxkx£y3z0{{ü|Ö}?}s}D}5|ÿ|ß|f{¶z¹yÉxïxw›wGw v¦v ujt”s«r¿qâq@pœpVppOp­q…rtsmtAtÐuGu¥v.v¡vëwwZw¾x4xÓywzz¢{1{ú|š}}} |ò|Å|‚|B| {Û{Á{È{ {Nzœyìxüxvúuõu3t{t=t*t`t]ttçu†v-vÒwiwÂwùxxXxx´xžxpx$xw¼wCv¶v8uùuÂuðvJvÇwwKwwwpv˜ušsþr-p“ocnÓnEmêmAlóm mzm²mìn4y xñyyŸz–{~|O}(}s}j|ò|·|V{ó{=zgyOx)w0v^uôu©uuut•tsIr†q×qApÞpgp;ppopÓq¬r­s¶t‰uuuðvvväw-w\w‹wçxjyy¸zSzè{r||ˆ|Ç|·|¼||N{÷{®{x{K{){zÑzry²xõwÔv‡u&sÖrør:rqýrArUr»sRt4uuÜv‚vêwPw˜wôx2xrxkx;wåwÈw€v÷vJuªuTuu@u‰uõv;vmvÆvÌvÁuòtèsAq†oónžmämSmlPkûllŽlÉm m\y8xÜxËyyÚz{:{ó|{Ö{'zÊzPyÅxíxvçu§t¬s÷s¼s„shs=rèrpqçqnq!päpÊp–p“pžqqhr,sttÐu8u‘u¾vv2v=v6v*vavÄwnxx²ymzzÂ{*{…{ž{Á{¦{t{&zíz¹zˆzKzy±yPx‡w¯vNt±sqwp‡o¼o¥o“oúpEqqíst1u uÁv'v›vãw-wPw€wqww™v©u±t“sMrfqØqÏq®qµqËq¾qrqpëpðpùqqqGqqørist täuuÌuôuÑuÇu’uGtìt„tkt|týuxv;wwéx›y%yÍz9z…z„z†zhz\z.yíy‡y7x¾x\wuvXt—r p½on2m\mJm6mÊn_opÉr1s~teu)uƒuìvv.v v&vuÌuƒuau5tätŠt(ttNtÌu1u–uùvHv¯vÀvÇvu,sÃrrq9oþoCnÜn¹n!mÓmùnun³nåo xèxw^www>w„wèwàw[v”v?uãuUt{sšrœq{p¾pWpopbp‹pÙqpópÎpçq2qnqµqôrJr¦s.s¹ttuYvv²v¾v¨v&u¾utes™r½r;qÜr rrsJt7uGv&vúxxÍyMysyÀyÚyêy±yixòx—xw©v¥uOsNq'o5m‘l³kÎk­k‘l8lïn>o­q%rqsKttjt®t–t}tEtsñsÃsŸs‡sxsXsIs*sfsèt u'ušvv†vþww0v¢uÛtºs¹rÔqßqZq,q6pÉp•pÖqXqžq¾qÛxƒwjvyu½uwu9uAuou\tÐt%sósÃsRr–qÝq poqo#oJoKoˆoôpTpXpap·qAq­rr—ss”t1tìuËvÁwoxwéw¡vÐv#u&t rÎq€p¡oêpp/qr$sxt™u°v÷wìx“xÙy`yy…y"xßxwxwywu÷tŸr—panWl›k¥j¬jyjJjßkƒlÅn1o¥pÜq§r‡rÝsr»r„r;qøqÕqÆqÔqÔqâqìrr*rs^tHtîusvv–w,wmwžw?vªuÕu0t¥sùs§s­sßs¢s“sõttÉtÔtÓwÛv uztts×sFss rör{r r rqÚqYpàpAo{nðn¦nÃnÇo oqoÚoöp*p§qYqêrs"sÂt?tÞu³v§wŸx=xÍx x;wBvyuUtrŠqoøoo ooùqrps¶tñvCw>xxhy y=yxœxux5wÚw2v«u–tKr[p8n0llk`jYjiÚjIj«kžlÒnoo¹p—pýqp»pp\pp p#p\pup”pµpþq9qÕr½sÃt‚uuÀvWww`w«wywv‹v=v u®u—uÓv1v*vCvÅwXw«wªw—w.uÎtus,rBqgqp¼pp-oìp pGpAo÷o¸oFn¦n&mÞmönnRn»o9o}oìpšq|r?rüsÉtvtïusvo»oUo4nÛnËoogo•oƒouo%nªn5mémïmönAn”o o[oåpžqŽrks?ttÁu;u¬vTww²xx‰xTwÓvÅuñtÐs~r p o’nŒnFn%nÏopµqÄrít'u:v1vÓw‡wÏwäwºw×w¾w…vÐv2tçs[qGo#mBk¢j­i¨iWi4iŽi§j&kkölvlÎmƒmûnmßmímøm×mÔnncn…n¦nÇo.o¥p†q›r¶s‹t$tÐu_uüv[v¦vvmvJvpvÃvØw"wÄxuxÄy y¯zLzÃzÒz¼uÇtVrÞqgp?o'nnmõmµmÕn1n¶oo9oPonÆngnnnnXn—nþoNoßp—q‹rys^tuXt&rÂqFoÝnÎm´mTm*m¿nPolElŠlôm'mimµnVop qPrhsAsÓt‚uu‡uÂuéuÖu¨u©uñvsv±w-xxïyqyàz¢{S{ç|{ïugtr®qNp3o$n‘nn mîn8n­oIoÑppMp0p oÈo…o]oHo]ojošoºp p¤qrrEs!sçt–uIuçvŠwwŽw½wæw|vìuåusÎrdpßoxn[m+l›lFl™lÞmun n·oYoõp„qqÃr„sgtt tÅutØt…skr:p^nGlFjŠih›h|h–iiDi«jtk6k—k«kökÿkÉkhk-kjÚjäkk†k·llmPn7o`p˜q©r„s sÞtgtåu utùtÍtâu:uÔv(vÅwÅx×y€zzû{Ê|{|¢|šusÑrŠq@p2o)nn#n9nWnäo‚pApøqsqÕqæqþqÒqq8pÿpØp£p‰pjp•pÔqkrrÕszt-uuÒv“ww´wÞwéwqvùv!u`t1rÈq-o¸nsml.kokIk"kfkÄl.lTlzl¹mImänØoûqqËr:råssrUqÔpnÎlÇkiðhÿhçhüimi‹iÕjuk kZkUkokFjøj‚jiÒii˜i¿jj&jzj÷kçlãno]pzqjr"rþs¡t4tdtttXt9thtÚu‘vvµwÌxöy¸zg{p|\}$}X}auhtbsUrBqXploêoxo”oÆpbpùq¯rgrõsmssÞsÈsŒsr¶rLqÐqiq pøpîqJq¾rorýs·t¡u’vivów†wwˆwv¸v!u‘tsZqàp‰o>màlÀk¯kj—j‡j¥j¨j0i¦iMi}iÀj k°lém×n°oÓp©q:qCq¤qoìnl‰kxj›jyjzjÅjÌjïkSk°kÙk¼k¬kdk j’ji²iiicikiŽi~iªjjÆk‘l£m¿n×oÈpžq–res+ssÆsÆsÆtt‹uLuÈv†w£xÓyœz[{~|€}S}ˆ}vuIts¨rßrq’qq#qJqÏr@rÕs~tttÌu$utïtbsås?r…qâqWq!pàqq}r:rÏs”t‰uxvKv¸wwvÀv=uóuu'tfs…r\qEpnàm¾l¡kÖk#jÀj“jigÀf«fBeôf—g€hàiÚkl«nGo¥p|qq’pëo{nOmml¯l}lul l‘l‚l›l§l–lSlk­kLjÞjaji¿i®i¢iipijiiôjnk>lmmýnéoöpõqñrŽrüs"sFsœt-t÷u‚vRw‚xÅyœzk{¦|º}˜}É}Ýw v˜vuˆtëtKsÉsHsrõss&sesÆt3t€t¯tûutøt…t sLrvq»q&pëp™pÄq#qèrŒsXtLuuÏvvu»uStÙt“tQsüs|rörHq pÓo÷o n*mbl±lk†j|hìfüecíbçc%cµef#g¿iÈlnKoØq[q qjpgo£nýnln?n@nenTn4n5nmìmm1lÃlXkñkˆk9j÷jÑj®jŒjRj$i÷j j*j¦k0k÷l£m€no–p¯q|rr`r¥ss”tQtÚu¯vãx,y yâ{*|E}!}D}Nxwðwµwevðvzuòuctåtxt*sÁs™s¥sásøttQttttEsßsr?q|píp¹pep…pÖq“r>st tÃuVuEutisàsos)róršr>qóq¶q‹q:pÊpoenmÔlÛkójZhZeäc^aŒ_ô_é`7a¾bòdþgij8mopâq[q}pÂp)oo9o4oTo‡o~ogo‚o€oTnènnmml¶lql%kâk¡kek'jèj”jfjLjƒjÂkDk±llmLnao}p^q qfq¿r$r¬s[sÞt³uåw5xyz^{ƒ|_|x|~x“x†x~xgx%wáw`vÐvugt·sñsmssrærëssLs•s‹sQr¡qÐq p|pGoÿpp8pÂqPrs s¹t2súsŠrÚr`rqòqÔq‡q>q qq*q.qpzoîonrmYl8jEhe9b6_ä]å]š]‘_`tbíeŸh¼kènAp>pÄqpooØoQoo5ojo¶oÒoöpZp•p’p1oßo\nÆn6mÉmum l¬lRlk×k¤kWk"kkk.ksk¥l,lßmÙnØo¯pTp¶qqq÷r†rñs¯tÅvvÞwÆy z={ {{xÄxÇxñyyy xxw7vbuutvsªsr°rJrmÃm6lÄl\l këkËk–ktkakikgkƒkkðl„monao:oàpPpÌq>q±r&r{st u(uôvÔx"y/yâyÙyÕw¸w³wôxDx{x¡xTwâwvEu^trsŸrÓrRqÎq½qÌr8rÊssrsq“pˆo´o:nÞn¹nZnHnenþoËp}pëpÉplpoòp=p pþq-q!qpøq p÷p½p2o¤nínumlzjKgÁdA`e]4ZšYÕX÷Z[^¶aëe»i»lÉoHpp†po”o'oo-o7o‰pp­qgqÓqýq¼q§q2pƒo›n×n-m|lüllUllkækèkñll lllalám¹n“o]oýpspüqkqÈrrErºsztkuuÓwwôx‡xcxMv]vMvwwhw·w‰w0vhu¨tÌsþs9r^q¿q+qq0q´rerÍrêr?q^p8o:n”n$mëmbmmmƒn;nûo€o†oDooo‘p-p»qqq q qpÞp‘po†nìnŒm´lÐj²h2d–`…]"Z‚Y¾XÐY¿Zê]Ñ`ÖdÂilkooìp¦pcp:oñoÐoæoïpTpóq·r\r³rörßrârwqÔpäpoIn{mãmdmlÈlžl€l‹l˜l¬l²lµlœlÏm@n nÊoƒp pŸq9q£qåqÿrrjssÐtMtîvvâwcw/wtLtIt›uuƒuãuÓu™t÷tWs¦srˆqÐq>p»p¹pßqvrtár¾rÐs(s¨t't‘ttlsåsXr¿rTqçqDp¹p>pEptqqýr—rÜrYq°p¬oµon–n`màmƒm2mnmÿnÇobo‘ooo6o8o¥pOp÷qLq]q‡q£qÏqÓqÆqzq$p­ploÌo0m}k\h=dËaø_Ó_6^}__‰a€cßgQknpIq2r?r£ss&sXs˜såtWtèu^u¥u³uæuØu¯u1t¼ts1rFqfp³po©o%nÏn…nzn}n—nŸn n‰n¤nñonoÑp5p±qqMq-pÒpapp3ppÿq5q¥r˜sZsÂsr°qöpÅojn&m0l•lk_j¢i‚h¦fÃdw`Ï]\_eb=deóg]hÐiìk kêl·mwn`o

t&t=tvtàuAu¢uývGv­vÂv’v!uïu›u=tss›r8p‘nÞm¢lmki*g/d6a;\üXŒRöM“M>Q)SÇV[X>ZM\]¿_*`…a¸cd>e—f¨gwh hÐi•j‹kkjŠiòi+hœg÷g$fDeUdÜd eeTfg gýhÈi i:hÞh¡gÈfàe)c2`Ù^¤\´ZßYxWöW V4V%V,V×W†XY]Za[‚\¬]Ï^¯_l_ô`ea&b)c§e fÃhRiék†mnÜp3qaqÐrqìr.rmrŠr|rarUrgržràs ssssrÐrÍss~sÓt9tµu-u«uÙuÛuŽugutžs¹rÂq)o\m[kÊiÿh eJb‘^±Z¢U`PIûCüC8GpJCLæNÅPäRÄT¨VJWÜYDZ²\%]È_0`Waaôb©cždd5c³c9b b2a½a2`Œ_³_=_!_•_å`‰ahb7bëbíb¼aÐ`ø_•^I\IYûW=T€R3P;NæMWLcKˆKKLSM&NWOcP›QïSLT©UµV˜W"W{X,Y8Zü\Ë^ì`ëcegDi¨k€lþm–nn7nžnìoo&oOo•oÛpApÇq3q{qvqmq;pépÛqq®rrzs#sÖtwtÉu tëtÎtKsÞrÙq²oÚmìkži£g"dp`Ï]VX—SqM,G@t9à8yJ?üA…BïDtF GºIAJºK¿LšM*NN€NŸN[NIN$MóM³MŠMGLÆLmL_LžL²LøM{MñNbNMŽL+JÛHöGDºBH?<Ç:z8 76'5R4‡4n4g5 5Ï6Ê7{8@9.:P;~<’=€>;>·?¯ACME{HJ¤MtPPSPV‰Y8[\ç^S_D`/abcde eáfÆgÿhôišiŸi™iMhþhÝhñiBieiÅjikkªkãl7kôksj]i‚hfmd5bE_«\ØY$U“QL¬Fä@‰9_2œ+î%&#r'$)Ú,-ª/u1'2û4•5î7*8¡:';£<÷>S?U@+@¿A–BB?BB1B.BAÎAŸA^@ü@µ@ž@°@œ@³AA^A²Ad@Õ?‰>a<Ÿ:¹8\63˜1/-w,+Y*±* ***·+Œ,†-/-Ê.ˆ/b0=11Í2z2ë3ß587\9i;ð>yATD0G+JQM O„Q@RòT;U}VËX_Yò[R\]®^Ü`Pabbb5bWb*aòa¿a°aÌaÒbb‡cccclcŠcb8`Ó_¥^\8ZX*U”R‰N«K7FéBk<™6\/†)"Ò…aú!'"«$U%ê'¹)G*q+~,ì.m/Ä0ò283>44¿5š6"6c6\66¦6¤6p6?5ö5Ÿ5\5>5/4ò4Ñ4è55V5 4b31ñ0N.…,<)ß'%#`"!r ³ b  - Q æ!©"w"ø#]#å$}%%¦&>&Ú',()m+®-à0“3J619;Õ>ÈA^C¼EŠGKHÔJiLNOàQƒRòT}UåWcXoYOY˜YèYÈYƒY2YY6Y=YlY½Z ZSZ@Z6Y|X„VéUoSœQÄO¨MãKNHD@Ö<Ã8/2S,D%ܱSéu©–ÿ[®aáå É"#~$À%Ù&û'ê(Å)t*I*Ò+%+2+d+{+Ž+p+D*õ*£*_*:*)Õ)›)†)†)±)^(¦'U&<$È#K!T'åŸÅ\^]°žYu½$ìM¶'I 8!\#z&(¦+N-Û0V2ñ5D7k9/:é<>S@.BCèE¡G2HÞJKK¨L˜MMýNQNM¾M_MMMzMŽM·MòN'NbNIN/MbLbJºIG7E…C¢Aæ?X<18v5‡1Ü-w( "µMí/à ’ < Íïï‚úÅîAˆ¥ªzQËM«É÷ - ' Õ“Q"üÌ—f0+·ë™i¸<6¢ ’ a  L Š5âÎÖ²MœR˜Êÿ1ŸŽU%;~!µ$&v(Ï+,ÿ.õ0Ó2À4¥6ˆ8W:.;Ø={>Ñ@(A!B4B¢BÇB^A÷A§A–A¿AÎAðB'BWBŠBkBUAŽ@>Þ=;39³86;3š0‡-*B&Õ"‰Œõš AÅyXRlWÒ s ±  íÄ% ¥Tå‚íB_{†¦¸½¡}KúçΪd9¬ç¸•]I ± " iÌe‡µ^    µ  † É " 4 9  \ ý>_Ý\6@„Þ $"B$[&?()Ê+‚-2/0ž23<4’5‘6“6Ö6Á615Í5Ž5k5z5|5›5Ì5ü6-665e4l2Å1/].,‰*±( %j"cϳèÕ> u©Wø_ °ÇÏíÏ+ð  6 ö T ¿   Ï  & / W € – • ž Ž j = &   Ý ¢ U g ²äô SôxA=fÛj…Ü9m—›š”z°ì®ä - ð ²Ï÷D‘ºÓœMÖ v"#Ó%_&¿'æ)M*K++,+ **)Ë)s)U)X)‚)™)®)Ú)Ö)ë)B(*&r$ä#a"; ÁÔb«D†m s ìÈ&BzK.…óõNó·j»ö×r«ÏØ @kzqo¿Úê ÿÔ±¡¶±Œínõmâ[ÛTç–Kâlÿüÿžÿ<ÿþÿÿ#ÿCÿrÿŸÿ¼ÿÍÿÏÿÑÿßÿé#dü‘œ¿KÍ‹ I *ø¸1’ãWÜjÔ%@‘ d ð Ø Ê m ª<ó öî 'rM¸{G*·òóG| i > *bÀUŠYÇÿÓÿ†ÿ3ÿLÿ”ÿ²ÿ³ÿ‡ÿŸ4ÎÕÆ¡R9ÿÿ*h‰iBT‡­ÅØÕλ¡—­½½ ­VãÅ­¦”¢£ŒDÿúÿ•ÿ0þÒþzþAþýýýäýØýÇýÆýÆýßýùþ3þeþÏÿIª‡‚y£êG ‘ Ã ß >¡ÕÝòÚ»¶p§d6ýÁlH„—`yU 1O& µ = ÝÊ¥ƒˆé 5>ÿÄÿÆ ÿÞÿÔÿùQ{#ÿÝ2¢›bD`Á ó¬…˜á ×Ìá óééøù²nA$0@bs–ÏEYcG1û»p1ÿÿÿÅÿ¡ÿ…ÿ‡ÿ‰ÿ¥ÿÀÿòdÄ)z¶ë'[ÈSÞ»w š Þ  5 ñšØ ñ«cZ> Ý j  ú , " « à ï & ¤òÒ˜ªøLŽu¨uoàBÿÝÿÍÿåÿùÿÈÿ«!{ÿ¢ÿ¸&ÿ¥ÿjÿ¯)ÿóÿ’ÿ`ÿÿÿ!ÿÌÿ ÿ¯ÿáÿõÿÐÿ¶ÿ¨ÿ‘ÿ¡ÿÔMN.ÿëÿ®ÿ‘ÿ‹ÿ®ÿÈÿ÷"^¥à(ûÙʺšqwzŒ¨ÃÑÖêëÛ²‹_  vÀ?Àv4êŒÂëäîû+@87÷mBKñHcAöMPw(¤ ÿ”ÿjÿ»ÿ¢ÿ6ÿZÿ²ÿÉÿÚ,Uÿùÿ°z\ ÿìZ‡:ÿêV¬¶XÿùÿýL¢À†4!G€£–dG/aÂýÅw'ÿòÿâÿÙÿâÿÖÿÞÿþ0[}™®ÁÞ6FEPY[]ptf;à¬yN$ÿæÿÆÿÃÿïH—‘¨ñÔµ§§Èí"ia­•ùJ}ÛKøL¬Yq!ÿ¬ÿ‰ÿ³ÿðÿýÿ”ÿFÿ™ÿþÿÛÿ› l!ÿÃÿé=iRÿùÿÃoTÿÅÿÙW¼š&ÿÅÿÁ+£´kÿé _“‹Wÿßÿ´ÿÕŒç å­mF*ÿöÿÚÿØÿþ!Nv™µÖ/BEWa_T]P/ñ¹|@ ÿÕÿ«ÿvÿhÿtÿ¤ÿ¿ÿí7{°©–KÿéÿŸÿ€ÿ§ÿÏTyŠ^ÿÝ`õÿyÿ…ŒÿgÿHÿ‡ÿÍÿÙÿlÿÿYÿÃÿÐÿžÿWÿMÿÀÿÍÿ~ÿÖC>ÿàÿñM‚*ÿÊÿå3cNÿãÿ¨‹É” ÿ­ÿß`¾¿eÿî,z¹Ó«z-ÿØÿµÿµoàAZOîÂ…W;AF]vŒ–›®½ÀÀÌÔÏÃÄ·˜oR<" ÿøÿõÿôKÁê/@0Òcÿôÿ’ÿ…ÿ¤ÿü?o¥—Tÿþÿ²ÿÍUÍÎUÿ­ÿuÁäwÿàÿ‰ÿÏCRÿ»ÿ™ÿô@ÿúÿÿ}ÿ®ÿõ ÿ³ÿŒÿ§HKÿëÿ®ŒiÿÓÿêU•5ÿÂÿ·µ±ÿ¼ÿÚWÖé’(ÿëÿûS¤Ôë¹nÿÏÿÆÿ΃ë3FX>ç¿t_[c[W_msx‚‡„|{r\G@B7<Mv¡Ñ1Îfÿôÿÿwÿ}ÿÈ]~Y(ÿßÿÿqÿ·0¢•ÿúÿ\ÿAÿ½Ù[ÿ“ÿBÿ|ÿÿYÿ¢ÿ‘ÿÌ*DÿÌÿZÿÿøÿÔÿŒÿÍÿžÿ¹+sÿ¯ÿçQ€`ÿýÿÈ'“†*ÿÁÿ¾Nð"Âÿ±ÿꈣÿÌÿô;¤÷û®]ÿ®ÿ ÿÀ+•ñ6EP6!õ¼‰mbJ>>IMPSUW[bfacp†Œ¢Í5JV;$ç™<ÿÓÿªÿ¬tÜ,#þ™%ÿáÿ¾¸+€ÿ»ÿwÖ0ÐÿõÿJÿo]LÿÒÿnÿ©5ÿ–ÿ]ÿºÿéÿŒÿyÿ¯ÿ…yHÿáÿÅÿøg<ÿÎÿá<–• ÿ›ÿ±DþC×ÿ¨ÿÎbüÁOÿõÿÒfÅÿø·\ÿÍÿÞ `©ß 1% ãÈ«„eRK;/#%-BVho~›Ââ+@G%ÿÀ†FÿõÿÎÿÁ[Â'¶JÿöÿµÿàJÈ+ûDÿ›ÿvåXãÿòÿOÿSÿé„tÿýÿ™ÿ‹ÿû[$ÿ°ÿqÿ„ÿæÿÀÿWÿ}=ÿâÿ’ÿ×Bb6ÿÝÿº#vÿÎÿÙY·wÿìÿwÿ—ZQÍÿÿ¶o 6ôZÿâÿ¿ÿ×<Ž×$0ËhÿîV‚«Ú÷ æÇ¦~aK8;E^x™¥½ÝÿýÓRÿìÿÚÿÂÿðI¾&A:Üoÿÿ™ÿÆGó7úAÿpÿBÿéÛfÿ5ÿ:ÿè~ª;ÿ­ÿ¡ÿðI[ÿîÿyÿ„ÿÏÿüÿïÿ–ÿ\ÿ¢MÿÀÿ¸ÿø\€ÿ´ÿãP–€ÿ°ÿü}¿ˆÿáÿrÿ¦a,hó"ÿ£ÿ½:Û+ýš ÿÛÿçW­ò+ ù©`0 +Kk®ÀÍÊÈ¿¹®‡‹Žšª»ÄÈÓ×ÝÌ®{K"ÿúÿïÿèHž>L°JÿæÿÆÿÇœû2Ûÿ‡ÿt!(ÿRÿ+ÿË—¼RÿÌÿ†ÿÓEZÿ¨ÿoÿ¼ÿ³ÿ|ÿ€ÿË(3 ÿÈÿ¾+‰ZÿúÿÒÿýu¹aÿçÿÉ¥ê‹ÿèÿoÿ¢tJ 7ÿ™ÿŽ Ã+2ÃTÿýÿÏÿî W¬ð%ó«sM0,&3C\o…ŸµÅËÏÐÖØÔÏÑÒÒÈ»£‹f5ÿþ -X ú5[(Ð\ÿàÿËoáJ7Ëÿrÿx8,¯H@ÿTÿ1ÿÒåÿÐÿ‹ÿ· f)ÿ¾ÿŽÿª/ÿãÿ„ÿŠÿÄÿêÿö;Lÿðÿ©ÿð\€SÿðÿÄ(Ÿ¦TÿëÿÎ3µæ–ÿèÿyÿ§_(q[ÿ¿ÿ ÿé„üæx(ÿå-xÉüúÙ¥vT612DOg‡¨ÂÐÜÞáßÜ×ÖÎÁ¥„bH5;YˆÃô#å†$ÿíÿÓ5‰öŠÿêÿ›ÿ­L4–/7ÿdÿ=ÿÉ’Ü’ÿ˜ÿ¸"cRÿñÿ™ÿ®ÿù'ÿ³ÿnÿªÿùÿÊ _%ÿÖÿÐ j3ÿÖÿéBž«HÿàÿÓ,¿ý¢ÿ÷ÿkÿ„8†7„ÿÈÿuÿÄKØè·j+ ÿó :ƒÊòíШˆufe^euŽ£°¼½¹³µ¶¶ª–yWC<JRe{™¹ÓóëÍ‚)ÿìÿÇÿì$zÈêÈ=ÿ¾ÿnÿÁƒ=—ÿEÿ4ÿß›óÿøÿ§ÿÃ#xeÿÇÿ¸ÿö2ÿØÿ–ÿŽÿÙÿêÿ¼PPÿØÿÓ4ŒrÿãÿòT©˜>ÿáÿÖ>¾ø®ÿÿš5òW@¢ÿþÿ¨ÿ¸0œß÷Ç•V!'^¢ÙîôÛħ|f_aozˆ˜¢¥¡¤ •ƒreWYd}£¶ÆÞÞÒŸZÿðÿûRžÕýÝŸ:ÿ¿ÿ¨ÿôšKn*ÿrÿ[ÿä ê¥ÿ´ÿà io'ÿÕÿÃÿì':ÿüÿ­ÿœÿÃÿþÿÑÿÕÿèPT ÿÑÿûLpÿÚ[¦Ÿ<ÿÞÿÐ+ÅÖ4ÿžÿŒÄ\Yá(ÿ³ÿ¸ÿütÄÚÛ¯Œ`)ExªÐרij…ujifkv‡‡Š…xmhq}‘¥µÂÄÄ»¹¡t? &k£ÈëÞÀt ÿÕÿÈ,ÜWlÛÿtÿ‚ Ƨÿ¼ÿÕ'tn'ÿáÿÅÿë$5ÿÒÿ¨ÿÇÿüÿìÿ½ÿõÿÛÿé4h<ÿ÷ÿã bUÿæo©:ÿåÿà@º÷½3ÿ¼ÿ˜¦)IàXÿéÿÂÿÿE•ÆÇÅ rG)-9^ˆ®ÊÏÔȺ¦•…th_[SRU^dnzŒ¡³ÂÇÐɽž|U)?y°ÒËÆ—P ÿÊÿåEÌF9Àÿ‰ÿ–µì¤*ÿÎÿÛ-ksFÿÙÿåB,ÿôÿÄÿ¿ÿñÿÓÿÁÿæÿÓ JW2ÿùÿç(szH ÿôk¨HÿóÿÚšêÚcÿÒÿ—ÿÎk: ÿÙÿã/lš¹¶²—wX:;Mu–¯ÆÌÎÁ¶¤’}gUDBFYo‡˜£²··®¬ mC+<iš¾½±‡`4ÿùÿíYß# †ÿäÿ”ÿºDÅâŠÿÍÿï9{t9ÿóÿù76 ÿÛÿÑÿé ÿñÿÉÿÕ ÿþÿàÿõ$PRÿíHsn;-u‰FAÝÀ]ÿîÿ«ÿÝTØ!÷š+ÿòY‚™°®¨qZOYcv‹œ¨¨¦—Ž€sikqœžœ¤¨¥”‚jO>1@]‡°¾½Z& ÿû(Ù÷€ÿûÿ­ÿ×GºÜ˜1ÿéÿö9dfFÿõÿõ!2"ÿõÿÑÿßÿäÿÍÿáÿ÷0N;Hmf= )b•˜m2+zÀÕ‘ÿÃÿÁ'ªÿ­Z *Aa~”­³¯—|eRQUcq|ƒˆ“›œœ¡§­¯±©™Š‰Šƒr[F2:R}©¾Ä¨†cMB#(O—ï×hÿòÿËuÎσÿýQv_' ÿþÿèÿÞÿòÿëÿÞÿÜÿæÿÿBG0 -anT0CqŠ…^-5r¸Á…#ÿÕÿÛ$•åè¿p<,*DWp ±ªš€laVYdvŠ–ž¡¥¯·º¶´ªž„wbPBFKc‡¤²¥–z^I577[¥ÜñµKÿðÿÈÿÿ`³¿€3B]Y= -ÿðÿàÿéÿþÿõÿÜÿÜÿæÿåÿõ &<=BUTM?23<Ts~oJ V™Ä¦PÿþÿÝoÄá»`IKHS`v ¥œ™|qt‚‰–šœŸ§®°«¨¢ž”‡tYNSl‚–¬¨lWRMPHSq›ÓД3ÿÞÿÕmª b *L]G##%! &1 ÿæÿæÿúÿúÿèÿÚÿßÿèÿßÿöÿú 4F* (CQN=,,:UozmI38aŸ¸žTÿòm°ÉÆœy^KOTh€”žŸ¨¥“~vzz€‹™¤«´¸»·°¢“…yrfi}•¡žžw_TVR[e³ÍÌ’7ÿøÿé"rª«u;,R_UC/,,#- ÿõÿ×ÿï ÿèÿÛÿÛÿßÿâÿØÿûÿû  &=41EE9/2G_ddt~€mE5O°«q)S–À¾ª…pkgpz†‹‘¡©¢’‰„}Šš¥¬²´¹·°¡Œ~{…‹•¦¬£Ž|qikmrqz‘¬ÍÀˆ?I”¹¤tC:QgnY@CJB-2$ÿäÿÞÿüÿüÿÙÿ×ÿâÿßÿÙÿÖ  1B=&#?UVB/6LYbjmvqYD=WŒ­¦s7T»Êµ£‹wpsˆ•¥¯²µ°¨Ÿœœ˜–˜›œ›š˜œª²°®£•†yrlmkt‡¡Áŵ€:K‹®¢qJ=Lek_PCGF,$4/ÿæÿæÿûÿéÿÐÿ×ÿèÿáÿ×ÿÜ "AR@&#7YkY:0;Qed[^frpUDSx¢ª‰R)-R¸ÄÅ­•„ˆ†ˆ›®ÀÍÍʽ° ‚†ƒƒˆ”žªºÃĵŸ‹ƒ…ƒ{yt·Ç­u<*\’¤Ša>>VfiYFHME2 &C<ÿôÿäÿý ÿîÿÝÿÚÿàÿèÿâÿÛÿã #(0OS@)$=]i^J>Icsxslx}lWIW€¢©Š\;5W«ÊËÁ«Ÿš”””›¦±··»ºµ¨•ˆ‡Œ†…¬µ»¸¹¯œŒŠ…~|†˜«Â¼¢r=*8h—§”kSQ\lmc[SVP8 !:B#ÿþÿóÿÞÿãÿóÿìÿàÿÝÿßÿã)6":RR9"$@dviQL\z‰wv{|aOWwš§˜qLBQ~ªÈÕÊ¿±©¦¢Ÿ›”“𤬫¢™šž›š ¨±±¨žŸ¡™’•—‹ƒ‡š¶ÃÀœiB2NzŸ©lU`x~teZ_d]H*,AC- ÿ÷"$ÿòÿáÿòÿñÿØÿÚÿåÿàÿý "3/$ *@PN@13MjqfUO_w‚‚|‡ŠzfYc}˜¨€bSd©ÈÓÓĺ°¨£ Ÿ›˜™¢¤¢œž£¨ª©«¨ ™ •ŒŒ“–­¸¾­‹eDCX|”–‰q^[ivo`[\`[F0$*@M=!#)ÿóÿôÿýÿýÿæÿÓÿÝÿìÿáÿù"06,$,?V\J68MeobNGTl‚z€‡Š‚qeas“©«”xiiƒ£¿ÌÇÁ¶¬§¥§¦£ž™˜šŸœœ¨±®¤ žœœ Ÿ“‰‡“£³Ä¾¦~VFKjœŽo^]epqgWNXb]I0$,>HC,&5/ÿ÷ÿýÿûÿéÿÜÿÚÿäÿìÿâÿÿ  "23.-4FSM@:BVhneWR`u||~{thiz’¡Ÿ”ƒuyŠ¥»ÅÌź«ž••¡ª¨¥±¹²¥¡Ÿ›˜”‘“›§µ¹¹¥„gXbs‡•{fcnvxrhbagfVC78AHD5#%-ÿîÿßÿâÿìÿìÿåÿß)#07525=GMHDGUkwn^[cox{wrq|ƒ{pjq€‘Ÿž‘„°¿Á½¬š‹~‚‹Ž“¡¬­«±´®¤¡ š”Œ‹’Ÿ­²³¦”hfw›“„tjnz„vomsvp`NCGONB3& ÿòÿäÿãÿðÿùÿîÿÝÿÛ ÿþ&$!,6=>?HOMGBGZjh\SU_o|€{sv{|zvv{‡–ž›†‚ƒš§±°¬¡”‹‹Ž˜ ¢¢§©¥ž™•’’“™ ¦«¦œŠyoel€‘’‡~xy||ysopqrk]MCAGI>."  ÿ÷ÿèÿéÿòÿùÿöÿèÿÚÿÜÿý#!0BGDHKMLEBHSYZVTXewƒ„zqnt~„ƒ~|‹““…ytxˆ˜§²²«Ÿ˜–’‘“—š››˜‘Œ”Ÿ¦§Ÿ˜Œ}rlot{zv{‚‡‚tgelrpfWHABDB8+ ! ÿùÿëÿéÿôÿýÿ÷ÿèÿßÿÜÿÝÿÿ!.49BHKIHIJQ\dfb^_gs~€{roruyyyy}ƒ‰Ž‹‚yw}ƒ˜Ÿ¢—’“”‘‘•–•–•˜¡¢šŒ„}smlrz~€}xrkjsywl`VNLOND7/+(&$ÿõÿòÿöÿøÿõÿèÿÝÿÜÿÞÿØÿ÷ #-;FHGLQQT]gmkf`[_n|€yofdjsywssy„‹Œ†‚}wvy‚“’”š—“–˜–”•—”“˜œœ“†zttstuw{‡‰€qdbgs€td\\\[[TG<;=8/(  ÿþÿùÿþÿõÿæÿÜÿÚÿßÿáÿÔÿþ?WZE+#=PRC5+!(;P^XH1*KuŒˆhL;;HJO[fljid^VMHFJMRXboy|z€yke]M@7;CSds„Љ‚~zslilmeZTQNI>8<C@=GJ8& ,?MOA/"#)&ÿúÿü ÿþÿèÿÚÿû.ThZ7"#1KbeX>)%.F`jcG',Tz•Šh?-6EVXTX\YTVVPHAAEMSY^cklgacecaee[OHGDKYnŒ“Žˆzj]OOZfdYQJHF>65602COI4!!3EH8"  ÿúÿõÿúÿôÿÞÿòÿü2Ple<DesnS4#$>_qnP-"=\tscG/-@]oohYRL?9=FHKU_fe_TIA;:6:BP\hx€€updO@=IO\n€ŒwZB8;<?CFJHA70.,2BMK=0' (@OD* ÿýÿöÿñÿðÿðÿòÿûÿùÿæÿìÿÿ!OhiK$;l…xX2;bƒ}X$GjrkL)#Gk€ƒp`PB;12:HPXisugWA- +;N_o‰Ž‡„u\E87-2B`}ŽsM1&"+2<DGIC:205;?A?C?.$3EF5"  ÿòÿéÿéÿíÿèÿåÿîÿòÿéÿæRvnJ((Lz‘T-!,OtyT$ Bdn`@(%/OwŽrV;)'#-<RgqtkeVA--=M\eklopnklkhbc]I7/6<Nh{‚ugQ;+"-AY`U=-'%-7AOI.'9A>) ÿùÿö ÿÿÿîÿçÿåÿáÿàÿãÿãÿÞÿù;ouQ(!M…œƒS'.V|wN& !Q~Œk6,b•¸©F#!4Oh{yu_G,"4GYjszuk\PG=;<IZnƒ†|bK8"#2Rm|ˆ{cB%0M_\F4'#)4BC4"7G>"ÿïÿòÿÿ ÿüÿïÿæÿãÿãÿÞÿØÿÔ)ahAA~>,Uuxb?$(CgtN# L£š}KAXbhb_Q='  4HXchopogaWJ=3-&% '3Lh’’|bE/($5Sn}oZ8"<O]S>" <WV<%8:"ÿíÿæÿò ÿñÿçÿãÿàÿßÿßKW0ÿþ0u™<.XnnO&J|Œu<ÿöS˜´ªm*ÿõL{•Œ‚dE"ÿÿÿíÿäÿö)Pp……ƒxpeWJA=8520.) 7[Ÿº¹²Žc3ÿü 6\nuX-ÿíÿø8]eZ7#Tna3 ÿùÿþ25 ÿýÿÞÿÙÿì ÿõÿêÿåÿæÿçOÿåÿç!t¡ŒG.dt^@&-SquU% 3f†ŠiC+(Iwœ°—o5ÿæÿÒÿàÿò6TltxjUE>9=AHOTXTMC;1"'D_|›±ÊŵƒFÿåÿäÿíIo…nFÿéÿæÿý/`ob3ÿÿÿéÿþ.PR?ÿóÿê!1ÿöÿÒÿÐÿì ÿóÿàÿØÿÚÿÝÿÂf¢•U 7h}d21Yzp?ÿé:x—|C ÿû#d­çáÀmÿâÿ«ÿ«ÿ»ÿù6r£¯³•uK!ÿø4PgtzraUI:/%&,89BRrœ½ØÇ¥`ÿßÿ·ÿÍÿûC‹¢˜UÿÏÿÀÿó7qŒeÿàÿÆÿèMbC ÿÜÿÖÿø.ÿçÿÈÿËÿì ÿþÿãÿÍÿÇÿÏÿ´ÿÞD–“O)_lQ' /Q_T/ÿ÷Cea>ÿüR˜Ç¼™SÿêÿØÿöHˆ·×˸‹a7 ÿõÿßÿàÿäÿø8Rft„‹…ucM8+&&,Ju£ÀÜʦ\ ÿÌÿ—ÿ¨ÿ×)}–T ÿßÿÑÿü8fmB ÿæÿç?S=ÿÚÿÏÿê" ÿÚÿ´ÿÀÿì ÿúÿÔÿ»ÿÿÊ(|‹T ÿÿ!PdCÿõ(NY?ÿ÷ÿòSs[ÿØÿÍÿõR¸àÐq ÿÃÿ—ÿ¾ÿùV«ç%$ ¾s0ÿüÿçÿÕÿßÿê'6?JQV[fpwx~xjTA667,,Gu°ØøÔ–*ÿ¶ÿuÿ[ÿ¥ zȵvÿºÿ­ÿÖ,w‡cÿåÿá5Q<ÿÒÿÄÿá ÿøÿÀÿ­ÿÃÿí ÿèÿÃÿ¥k€PP^Dÿöÿý!CL3ÿû(KZ?ÿßÿãc‘ n#ÿæÿÉÿñ*{ÂßèĦw@ÿöÿ÷6OahqstmbSG=4.&&+58>HYp|}kX># SœÖå¬Dÿ×ÿ”ÿnÿ£ÿøWŸ–a ÿÊÿÇÿõ;h_3ÿüÿàÿó&MA ÿÔÿ¿ÿâÿðÿÂÿ­ÿÄÿïÿØÿãEvO *YjIÿû$CG-ÿô2[W'ÿëÿÀÿÙ$x¦ƒ8ÿãÿ¢ÿºyç)ä‘*ÿÔÿ¬ÿÿ«ÿÐO„´À¿©‡xcM?1ÿðÿéÿçÿôÿû-V ¸´­‘yS!ÿøÿÇÿÓbÌA£ÿkÿ.ÿ6ÿµI²Ø‡ÿ¬ÿŒÿË%lv;ÿóÿÌÿè&NAÿÉÿ¾ÿßÿïÿ½ÿ°ÿÈÿñÿðWHÿíVlQÿú$=>' ÿû0I< ÿÓÿÁÿßUZ1ÿôÿÇÿÖ]¸ãî­`ÿ»ÿ¡ÿ›ÿÍBw—·»½¡yO7/& ÿëÿÝÿÓÿÇÿ¾ÿ­ÿ±ÿÂÿò#]•¾âíþéÆ|"ÿÛÿ¦ÿ²ÿÆ{Ñæ…ÿöÿoÿJÿgÿÞY™‘7ÿÚÿ®ÿÇaq>ÿðÿÆÿ×<1ÿúÿºÿ¥ÿ×ÿçÿ»ÿ­ÿÏÿú94ÿðGr]$<8ÿþÿö *C0ÿöÿ½ÿ«ÿÕO?ÿøÿ¦ÿ”ÿÀ6µýÉcÿåÿtÿMÿAÿŽÿèV»ëâÍ¥|Nÿô-I]bXYN>ÿñÿÑÿÀÿÕÿï P†¹å/8»Nÿßÿ†ÿ&ÿ/ÿmº'Wæ7ÿ„ÿÿ)ÿ–4¦¢Rÿàÿ ÿ¼bn0ÿÞÿ­ÿÄ5*ÿÚÿ“ÿ£ÿãÿÞÿ³ÿ´ÿÔÿú*ÿÖÿù=opH 47ÿ÷ÿêÿû/ÿêÿ½ÿ¼ÿí$=ÿÍÿ–ÿ—ÿîaÁõÁkÿöÿ˜ÿpÿUÿ{ÿ¬ÿõ;`tNÿÒÿ¤ÿˆÿeÿOÿ6ÿ;ÿNÿ|ÿ¦ÿÓÿû@SZOM>.ÿ×ÿ¥ÿ~ÿuÿtÿˆÿ‘ÿªÿÅÿüBŠÆÙêÇ¡HÿÕÿrÿ ÿ7ÿyÿÿÓ×fÿßÿpÿ8ÿpÿ×;c7ÿíÿµÿ½ÿþAU'ÿÞÿ³ÿà :ÿ·ÿ‘ÿ¤ÿÚÿýÿÎÿ£ÿœÿÇÿýÿÝÿå+qyQ/'6.ÿòÿãÿò !ÿÙÿ¯ÿ¸ÿñ5Gÿ·ÿpÿÿ÷…ôó¶-ÿ¬ÿpÿpÿÆ^««NÿàÿÑÿÜ 2b“Èý2h”»Õó íÉŽSÛžQÿÛÿ×ÿäB{Áú9*÷pÿÑÿPþêÿÿ‹AèñRÿ¡ÿ8ÿ1ÿ ZIÿ÷ÿ±ÿªÿì;W,ÿÜÿ©ÿÒÿðÿ«ÿ†ÿ¢ÿÞÿóÿµÿ‚ÿ‘ÿ¢ÿ·ÿüKsa.!)&ÿìÿßÿí ÿÙÿ£ÿ—ÿÍÿÀÿZÿ(ÿEÿ»>‰6ÿÕÿÿFÿ`ÿ¤ÿõÿæÿ¥ÿbÿJÿHÿ‘ÿÛ[æ„ -‹Öëý÷ù,LdlzkYÖeødÁuÿûÿ‹ÿKÿþôþöÿ3ÿ}ÿÅÿöÿÖÿyÿþ¶þŠþÏÿ@ÿÑRd#ÿœÿ'ÿÿQÿÌ(6ÿýÿ±ÿ©ÿÝ(HÿÅÿ¯ÿÊÿû ÿÜÿœÿˆÿªÿí ÿÝÿ“ÿzÿÑTsbD%%)ÿßÿÓÿå ÿäÿÁÿ¿ÿâ'ÿÞÿ}ÿAÿoÿém´‘;ÿêÿÎvýÁÓŸkL-ýîßéâ¿™G  n ¶ Ÿ † M øì  S › Ó í ü ö § I”ÕãôFl¾±Z]k¿…òüÓ;‚ÿþÿ¸ ¥7} rÿÁÿeÿ—mjÿÃÿ¦ÿß*8ÿÂÿšÿÃÿýÿýÿÓÿšÿ‹ÿÈÿÈÿ‘ÿò*bW/&)0"ÿþÿÍÿ¦ÿŸÿºÿÍÿ³ÿƒÿYÿ]ÿ•ÿÊÿÔÿœÿ6ÿÿ&ÿ–&ÿ®ÿfÿ‡ÿè®m!·h¹#·4ÿø8 y œ £ _  ›7‚ªu7 è £ — éI´ 6^F=ÍB <  Ø ¹Íñ7d¶¶RͰš»ý3XŽÈˆQt«š*aÿ‘ÿ(ÿ,ÿ•ÿáÿðÿ¯ÿhÿgÿ©,ÿôÿ ÿ—ÿÀÿíÿøÿ½ÿŠÿ§ÿäÿöÿ¸»‡@Ô€diU2ÿäÿØÿèÿ×ÿºÿÒ*šâײ°¢(S¸”ªa=emc9  b Ê .U^‰³èÞµ4¯yºß¶w4 Iµ1© ,If¢IÇDý$^×( ² e H & â | ó a û ¹ ¹ Ö É ¡ äëžRiä«V¦”°}—Ò­PÿéÿÄO9ÿìÿ¨ÿ˜ÿÈÿüÿæÿ¸ÿªÿ¿ÿðÿä£Ñíƒ( ÿÎÿŸÿrÿrÿÿ·ÿÉÿÅÿšÿ´)Ûb·ÎÄ­Žõð£È4.1 á a ÉvO\>œ…u‚c$ª.¯\ê Y n ^ > > ‚ Ø!a!û"q"È"Ã"Á"h"2!_ P’¬Ì1 b‹.X˜©Œ˜ûjåsþ™Ý› ì * ¦œÒ­+pS ZÿÀÿŒÿ­ÿ»ÿ°ÿjÿ;ÿXÿÿÅÿÌÿ´ÿ§ÿÒÿü5•õ„ 1³š’Ý6•Ãô)½ŸžEÝ€‚é = 8 ’ · È Í cTIÆ\owÖcß X"#B#Ö$’%Q&@'2((º)r*8+*+õ,ž,Ñ,Ø,µ,´,ê-2-¬.>.¦.ß.½.¥.I.-K,4*\(d&b$ #J!ö!ág>µ 0 ¡ æ Ë ¸ 6¤Ÿ’´à+ñY-êòkW F ä ù\iÐVT52®}‰@ÿ÷ÿÂÿÈÿøÿýÿÊÿÆÿÝÿû  À{dÞWŠÍا@åLߦÈù (  cÛGOۀюðì©‹ ‚#D&0(Ù+k-.5.Á/z0`1†2Ê3ç4â5ß6Æ7Ñ8†998Þ8s8'888f8ß9F9p9S9G99#8š7»6 4>2O0£/=-Ñ,”+*=)°)î*?*À++1+_+*·)Å(À'}&Y%.$("Æ!1¡;p„ Ž Œ ½C€5qCåÿ¹ÿÈÿ÷ÿ×ÿ£ÿ€ÿŠÿÀÌÿL ª Ÿ‹~¦ëJ;  ó ¸ Ç ªÿP$!4_•ŽÆÆ !!g"1#G%J'm*,©/^2<4Ç748»9ä:Œ;b@“C D´FFÕGÏHôJcK¿LÙMNLNËOlO£O¼O9N•M¡L·KûKIKK/KƒK™K¥KµKáLYLnL2KIÍHDG F E DBëBA‡AAšAÕAêBBOBPB AK@b? =Çp<¡:Þ8µ6R3t0¢-ž*®'•$=!Dä}BѺ~ » ¸ ƒ|¶fÿ0§-)–%ê#$ Žª+  ¤!Ø"õ$w&'á)p+,¼.Ú1P3í658N:…<ª? @ÃBBxB¼BøCTDFHJôMŸOôRhU>WÿZ¬\m]Ô^W^ã_5_Æ`4`n`…`º`òa@aOaC`Á`+_H^h]\«\([Ö[è[æ\\9\ˆ]]M]S\¨[ÁZ«YÝYJX£X7W±W¾X!X÷Y¼ZHZ ZžZÏZƒZXæW½VIT÷SzR P3NK½I»GôFcDhB>ö;°8:52 .¬+\(%^"ë ÁG娅ññ ñ I:.¢ï;f7»40W-‘+ *J)ã*Å+c,£-ð/ 1O3 4618#:ƒ<í?_A“CÑFhHÑK#LŠM’MØN+NŠNóPQYSiUWàZ\^_aºd/e›f·fÓfìf¹f¸f¿f±fÆgg[g°gÀg³g@fÇf eQd€c›bñbkbSb?b~b¼c(c¹d d.cÃc1bsaëau`Ú`t``K`åb c$dd°dÖed»d'bða»`C^æ]l\ ZSXHVTRaQOYMtJŒG3Cu@'=9ù6é3¢0».2,)Ð'€%&"” "#«–É ' ãFRB“>Ô:õ8"5˜4Ô4^5:5×768¼:¡?¼A·DF‡HÉKMpPRãU]W†X°Y°ZZzZÚ[9\ ]^¬`PbTdIfuhåjúlÔm®n\n3nmmDmlôm mNm¦mêmðmãmmFlºl&kOjSimh¥hXh#hgh®i9iÜjWj¦j‡jQiñiµiti hÌh”høiœj¿kâlåmËn,n£n>m‡lj¹iFhfÐe©d4bo`…^È]W\3Z×YaVÆS•O²L!HÕEÄB×?•<ˆ9·7]5/2ê0_-h*¤'F#{XKعS¼PZLìIpEæCI@ä@?t@&@¼B"C¢EwGHËJ¸L÷OKQ•S…U™XZÍ]_‘aIb3c5c½d6d{d¹e8e×føh&i¾kkm)nñp1q7qzq¹qwq+pÀpjpApp;p‚pÕq qpçp™peoîodnzm_lNk`kjÇkksllÚmmùnn(nmümÞm mŠm‡nnošp”qŠr~ss¾s€rÙq^oïnmWldkyjeig¥fdeVduccb_`S]¿Z?VÍS~P’MôK,HnE”C @ë>Á<>9,642£.Ó*¦&a"¦RÊ*Z4W>T*QNËL¢KÇKK£LDM­OP©RSçVXƒZ£\…^2`$b«e8gvhðj8jñkÝlplåmm5msmÂn~oZp’qâstt utótìtšt:sÀsJrür²rÂssdsžs‚sMrÒrzqÙqpn´mŠlŒlJl0l¾mBno oèppõqCqLqVq>qq q8qêrºsÍtÌu·v¥wOx$x'wÈvxus‘rHqWp‡oÓnênm9lkÿkCj¥ig+d2a]ý[:XäV­TfQµOLøJÇHHEAÝ>:5Æ1P-\)Õ'($‚a€_P\úZ³XîW8VqUÁVV§WÉX¦YÒ[\¼^Ú`þb›de‰gfi²k¿mPn%ooŽp;p¢pëpöp÷qqKqär£s•tˆu0u¨u·uÌuªu”uUu t¤t-sÉsksgs¢s÷t)søsŸrûrqÎqoên›m…lŸl„l•mCmÝn·o¦pzq,qƒqÓqÛqßqÂq‡q›qãr½s¹táuáv²w‚xxíyy x vëuotrørq€pÈp0o©o8nÎn@mÊl¹kiiQgd¤bY`‚_]«[©YVWdU9RùOþLÔHùEA<Å95”2ð0ghxg ewcúbÈaš`ù`c`€`Ôa€aÅbgcRdÞf›hFi`juk÷mÌoÈqJr[rÀsHssãttsþsÑsÜtt¶ulv'vÍww6w vév¸v”vmvMvu¯uNtùtéuu;u9tÖtMs¤s:rÄr9qbpJoMnynSnbn÷oqpp¼qMqÂrrFrkrŽr¤rœrÛsHt3u=v`wZx xîy€z0zTzIy„x°wov$tísás$rfqäqqq p—p oœnìn%lík•jhVgf˜fdécal_Z]tZÎWÖTPLLQHRDÀAa>°<'l>kj¦iØi'htgügˆghgmg’gUg„h*i^jsk„lDmInËp„rs'sút@t¡t±tµt…tVt#sØsèt>tòuœv/v­vÙvòvÎv®v†vmv\v[v:uêu‘uUuOunu€ugut‚tsèsÜsÃsYr©qàq/púqqpqÂrrerŽr¡r—r™rŸr¨r¼rµrðsLttúuövËwqx&xžyy%yxfwÓvâuØt©s‰rqžpñpboîoVn½n/m²mu²uôvoœpp¹q‚rbs8sÜtzt¼tüt¿tMs­s#rørösesÝtxuumuáuòuäu[tÍsùs)rJqhpªpoon¶n€n©näoNo¦oþp>p¦qOqýryr¸rîsses±sùtttt)t¬uUv"vÑwUwêx!xwÝwúwåwpvØvmvPvRvwvnvzv¦vówHrVr³ssds¯t t„uuvv`v£vÔw wJw¬wßw¾w˜wÇxxexvxix$wàww•wTvÙuætÔs·rÝrq2pIoSn¦n mônnqn‰ntnOn>nLnn½o-o³pˆqgrfsmt@uuKu€u1t¹t-sÆsÀsÐt=tµuCuÆvvcv8uéutBs9r>qLpTonÒnrnn1nZnÉo-ooþpfpÌq\rrÊs[s¿tt{uu’v vLvtv•vÆw5wÑxqxÜy#yŸyÌy§yDy'xõx™xw›wDww vÄvŒvqv…v£r¹røsJsos°tt´u`vvÅwFwªwðxVx¦yxüxx+x"x9x'wåw—w4vÒvvŽv[ußtésçrËqÖpõp o*n+m}lïlöm2m mÎmám÷nnHn™nÜohpqqùst%tùu¥u·uµu?t³t.sÌsÒsåt]tçu’v9v wv×v}u†t‡sJrqoæon1mÛm¤nnmoo¾p^pìq†r3rùsÎt‰u$u”uøvuw/wäxoxºxûy)y^y³z6z¢zÆzÐ{2{Y{z•z3y×yy+x”wûwœwKvÅvPuúuâuÏszs¥säsñt/tŸu[vvÕwžx2x—xÙy[y¯yêyyxMwÿwÆw^vÒv@u¹u6títãt½tTsƒr¬qµpÎoùo/nrmŠlïlƒl lÕmDmmÛn2n–nêo\oÏp‹qfrssotguv=vÈv¶v”vu‡u t¦t t¦uu‘v?vîwgwàwÅwvœu¬ttsGr+qpJogooo‹ppòq¼r„s0sât¸uvYvéwaw§wßx;xáyŠyöz'zZz†z¾{{n{­{¦{Š{Ì{Û{–zéz7y y_yxrw«wv™uëuUtÜt¤titUtotŸt¥tëulv6vìw©xyy y[y‹zzoz„yðy!x1w£w+vˆuÊutXs¯s^sVsPsr\qªpÖpoYn¶nmCl©lAlPl`l»mm‰môntnêo’pGqFr_sŽt£uv·w}x"x?xNwøw•w&vËv­všvÔwwwýxPx«x™xcw¨vâuàtçts(r‡q¾q‡qrTrûsÔt§uhvvŸwixx¸yyByMyByhyæzuz¿zÛ{{3{w{À||-| {Ó{ò{á{‹zÄyÏy xÛx·xw,vƒuÞutesÉsosu|u“uÄuÞv9vÄw„x.xÍy‚yïzzz’zÆz¤yÙxìwæw+v“uçu,tVs—rÝr‡r{rrBq®qpJo¯o0nºnww¦xGxéyKy|yyäzz/yýyËyy+yyyDyQyfy{yÇzDzÃ{{,{={züzˆyûxñw‹vxv-v,u¤tÞt3sšsr•qûqqwÏwëx0xxÿy†z#zÇ{I{È{å{Ì{‹{²{‰zýyîxåwÞvôvGu¸u.tfs¨sr³rr_qñq2pTo˜o"nðn«nfmým¿m¥mÞnn†ooÂpFpóqÌrÒs·tºuðwwöxµyŸz€{||7{á{–{5zôz½zjz7z,z?zHz2zy¾yVx»xwxvÎvovJvRvuøvCvðwŽx!x«xíyxûy2y[y^y+xòx­xpxPx=xDx=xMxUx¢y,yÀzzAz{zjzUy¿ywâvZu't¬tšt#sƒrÛrTrqÃqJpÞp‹xÞxüyKy¯zDz×{v|'|¡}|ü|Õ|||p| {Rz(y w÷v÷vAu´u7ttsÁs:rñr½rtrqPp~oÚoopoHo-onønþoIo‘p$pÑq¤rTssútíuÃv¦w»x°yayéz¦{O{ý|7|4{Í{x{!zÜz¬zizPz`z}z„zTz!y¥yx]w©w vov vvu­uŽuÄv`võw„xx>x[xhx¬xåyxåxµxvxWx;x wÖw¦w’wnwŸxx¯yy,y‚yy„xÜxvÃusÇsrír‚rqNpÉpp”p>oéo³yty‡yÍz-zÇ{a||Ã}2}u}C} |˜|R{²z×yxaw;v5uƒtìtns¶sr¥rjr3qóqq&pp+pppp5pOpƒp­qqXqñr¥svt*tÙuŽvEvôw°x‘ySyáz?zÉ{"{e{K{z´z`zyÖyµy‘y›yÈyíyöy´yrxÞx/w]v•uüuqu7u utÀt•t®u.u·vFv³vùw5wuwØx4xƒxŽxvx?xrfrxr«rís5ss”sprÄqéqpIpoÉppHpÙqjrrÑsot)tJts=r”qÿqŽq=pËp~pBpRpŒpÃpËp‹pYoáon“mgk;hÔeîbà`š^£^l^t`aœdRgVj»nprsSsÞsvsr~rqØq×qøqäqÝrr7r&qðqáqºqqp¨p(o®o=nÓnwnmÄmnmbmŠmÔmåmônn_nèoÎpÖq¬rrSrÏsfsët{u u¿v‘wxx9y z.{{Á{²{…y xÜxÈxÈx xbwºvìuætöt sBr³r@r+rr0rrrßsbs‘s“rðrqpBoïoÇoþpp[pÁq]rr‘s2sArår+q®qaq(q pØp³pŠp’pÐqpþp°proóo«nŸmSjÖhd¸a^1[¹[)Z²\D^addíhèláoÔr^sBsûs˜s4r–r.rqêqþrr-rrÒrÓr•rƒr@qÜqBp²po~nÿn‘nLmÿmÑmm¡mÍnn múmÓmün^o4p,qq{qÈrXrùs|súttuuÎv¦w_x1yLz)zÑz½z‘xLx(xAx|x—x•xwTvOuot¡sËs+r–rSr r+rjrés|sÀsÚsArdqHpOoÔo§oÓo¶oÆoøpxqq¡rJrxr:q³qoqeqnq‰q”q†qbqCqSqPq#pÁpnoöo¾nÍmžkhHd—`œ]gZºYüY*Zƒ\5_Åcug¿lohr5s3ts¢sKr²rNrqÝqèr rkrÚss,rírÐriqÜqpYo£nçn`mñmÇm—m˜mšmÈn nLnnnen1n;nŠoKp$pìqaq¸rLrásSs¯tt~uuãv‡wGxQyy´yyWwv÷w9w¨xx?wáwCvKutÃtsZr­rGqåqûr:rÈsgs·sÞsFrmq=poto9oao2o#o.oŽpp¦qdq¶qŽqpõqqIqq¾qÀq²qqŽqpq2pÐp„p!oþo"nkŽh¸dà`¬]FZ‘YÑXæZ[o^ÂbCf¥kBnèqÝrïsãs§swrîr†rCqÿrrhrësUs“sÊs°s˜srsqŽp½oîonrmém½m“mµmÞn/n‚nÇoonÎnÆooÃp{q'q˜qùrssos¡sËt$t°ujuúv¨w¤xexëx³xrtÎtÔu9uÕvgvÒv¤v4uktÑtCs·s5rœr3qÐqãr%r¹s[s²sàsZrŸq†peo´ouo¢oˆooxo·pp±qzqäqÐqdq,q6qsqÄqçqãqßqÐqÔqÂq™qTq!p×pÉp olÇjfqbu_K\Ü\@[z\g]f`&c7gVk¿oNrst t#t/sÔs‚sDssBs£t!tnt—tâtßt·tstrŒq«pÀoÉonSn mØn n?n¦o oioÆoío×oÝp4pÏqWqÎr/rrösAs]sOs;sisØt}téurvUvõwSvávorÙs stZuu¥u•uDtšt s²sMrårYqêq„q”qÕrss!ssÔswrórq#p’ppp´pÁpÉp¹pÖqqœrMr¤r„rq›q}q¬qÿrrrr)r^rŒr¤rrtr4r>qœpÅn’kþh‰dÞaû_¸_^I__Åb?e$im1pqràsÏtèu-ujuBu&u tõuuuuÝvv7v~vhvuJt¢s»r½qŸp}onªnDnn8nknÞoUo×pYp©p½p×q>q¿rrRr¤ràssrærr8r6r{ssLs»t“u(uotËt0ptqq¹r¹s”tAtMt"s¦sXsrër±rQqüq«qÃrr´sisëtDts¾srkrqùr>rcrtrZr\rrþsŒsÏs»sCrËr…r‘rÀr®rŽrurŒrÈssUs_sUssr‡q»o´mPj=gd²bÅb;ab?bñe5gïk€oqÎsÓt§u·v1všv®vÕvævðw wIw‰w²w±wÎwˆwv!uyt˜sˆrRq(p2o7nÁn~n¼náoQoÙp|qq{qºqærJrœr½rÁr÷srùr’r qpp×p£p»qq'qRqîr(r pßoÉn«o¥pq±r«sssœs•sJs.s+s=s?srár­rÖs4sèt¦u3uu€u>t¯t sÊs¶sßsösòs¸sŸsÇt5t©tõutït¢tYtStatFtsôsísþt.tgt~t€t:t&snrŽpnQkhÑfèeke+dÄeufhj~m—p¥ròt©upvpw w§wýxZx…xœxªxæy yxÖx²x8w“v«uòusãr­q–p»oÅoUo*o|oŸp p¦q]qúrer»rês8sVsHss3srÃr q>pgo”o3o)o\oBo!ooo/nŽl·kk3lÑm÷o{p¥q¡rr9r6rbr¢rñs,sDsEs=sxsêtuPuÏv=v#u×u9tªtBtsîsØs·s[s9scsëtjtäuZu…u‹uVuFu t»trÌrŒrdrUrArqØq'p_nÀlÑj†h3f³eªeÈeÂf–gUik'mÐpr™t5uuöv˜wOwÊx:xlx‘x¤xäxüxéx“xWwÚwAvnu±tËsÂrÀqàqríriqpˆoŒnšnmçmÒmnlºlak6i®fÞdCgRi«k?m1n¥oðpžq3q‹rr–s s†s×sÿttPtÈueuñvKv«v˜vPu²u*t¦t)sÔs—shrôrÍrôs–t1täu—vvbvPvKuÃusÿr÷qópöp=o’o?onénÊnYmàl·kLikgXeôeeee¡f¡g~i&km‘p.rTsþtÜuÌvhw%wžwöxxNxrx¥x¤xx6xwÈwAvru±tát sKr“r q`q*qAqºqôressÐt_t®uutút‹t's²scràr5q4po nm{m;làl4jâiÕg±e/aX]Ì` c2eFg¥i`jþkûlèmn]o o¬p$p¨q qIq“rržssXsºs¬s_r«r qcp¹pBoïoÂoOo:onp4qqòr±s snsDs%r5pýo,mlk¼j$hùgÑg@fÏfÓfßfðfýf˜fdècsbnaòb{bûde f˜hKj…lýo#pÔqÆrÄsft#tœtöu-uuÛvvvvvIvHuüuXtÇt2s«s3r±rIqÍq°qÌr@rˆss´titùuHu¯u¥u`tÁtDs¸s>r•qÚpÍo™ncm\l“l k%iôgÊe¼bp^ßZU¤X[Î^[acdýfekfugˆh…iuj`kil\mEmánOn¥o.oËpqpãq,q5qRqLq5qqqpÿpøpóq0qrr¹sbttmtétët¯t s‹rêrZq‡p²oYmÂkíjphÊg1d¾b(^.Y÷TO>I5C^C‹GæJßMÇO¬Q§RòT1UUìVŒVãWmXxYÈZ×[Á\«]†^}_C`3`F_Ë^]b\\[å[Œ[EZÖZñ[b\s]Í^¢^æ^]X[óZÀXÇV‡SPwM†J¸HïGvF÷F0FCF’G±HÇJ;K·MN4OUPÊR_SÛUV.VúWœXbYuZá\=]¨_ ``a£cdœfgvhZii«jUk kÙl‘my<¸;_;:\:w:Â;Å<Ç>?x@¨AuBICxDôFpGÆHüIßJŠKbLŒN3OÚQ¦SYU V©XqZƒ\r^'_K`Taa¯bxcˆd¬e»ftfôgPgáhˆiTiÀi½i~i{iÊj;jÖkZkÐlPl©mmlîlvkûkVjëji%gWeTb©`>]MZpV‰RMG @v:z4j.._2€5T7Ø9N:ú< ==–>>]>?@ A„BäD6E^FrGÁHÕJJ&IÃHuGFEÅEßEžE2DŠDODˆE[FlFäF¾EDBðA‘?=3:a7£5'2¡1/½/c.Ì.í/10-102š4 5r6P78+9€:Û<=6>> ?j@|BCÅE¶G‘IˆKsM‘OõR,T/U€VŸWTWúXüZƒ\@]®^»_œ`|a·bód,d¹dÇdd•díePe½ffMfŽf©fÎfžfOe dædc‘b¸a²_Ô]×[XhUQôM¶I9CA<Ê5ô/ã*#²$/'Ú*u,·./v0h1g1í2G2r2 3945n6Ã89;:I;<˜=·=æ=¡V¥XhZ [•\<\_\\=\”\ê].]b]a]W]"]\­\[Z YXHW]VTTžRÖP>M”J>GCC+>¢8³2r, &[!:“Å/!:"b#$r%x&&;&@&t''ñ):*”+ö-#.4/x0…1§1æ1¶0§/}.‹.!.(.-Ï-8,Ë,¼- -¹-é-¨,˜+Š*$)'r%h"Þ Y/-=*¯9E_¿ ?!o"2"ª#`$'$ð%¨&U&á'6'Ý(Â*Y, .024 5þ89ä;¢<Ñ=²>x?]@üC)EGiHüJ¯LwNsPÈ@žBD2FGGUFóFüGBG´HHUH'GÎGHG!FªEÎD‡CeBE~¯kæ×DZ gÒ  c ¾Î1Aþ Æ  w™Æ¢ –yË2)hÞò!œíR¿Lè!#$i%&”'Ê)z+l-Š/i1#2ä4¤6€8<::;:;Y:Ö:è;J;Å<&Ô¥žFzšOð õ    Š ½ ­ “†‡­—…¡Mj¯<'Ýb+k-‰ } … ™ Ò  @D2æ Jë^å2¡  B , ¥ . ƒ æ  7 +  > ׂyPo¤-Áq)¡Üêÿa!"Ý$–&4'¶)B+,Æ.Ÿ/l/\.Ã.Ù/E/«/ó0'/ÿ/¨/;/,.ì._-g,|+n*Z)d(æ'â&8#»!~íu¨¸V ¯íàù±ÀòÝ:¯ÕÚÉ(ÿÍhëë · n l  UËaeZ"¯URq†,ƒ‘¿*À„1Õw “›<ÿÛÿÄÿ½0ñ±WÅ/g¦µ¶™xod´÷Ç Q ñ “?ùYs@(ˆ/µ3— !µ#S#Û#¶##$#p#¢#Å#ù#Û#i"ê"â"Ê"o!— œ†œäœß}©¡j¬ Ž ±[Àã¯Íq@tÔÊ¡Í4&¶„ lËAíýö¯,Ø­…zNø¤zs‚Vá:¤S0G@DTfzkNý£3ÿÇÿpÿÿþ÷ÿ&ÿ\ÿœÿÍÿèÿõÿðÿûÿì*jI…Í:Ÿé C 6 ã N  ‘§aÀšní.qKÅ­ÄÎÓí½,¡£ŸIphd»E툯w  0 é6»¾“î¡ÿÙÿŽÿ;ÿUÿ›ÿ¼ÿ­ÿkÿQÿªÿÚÿªÿØC¨çéè%~×ë¼jNPPI7ñÊŸˆŠiÿ¾ÿvÿMÿdÿ|ÿ¼K“ÀíæÖŠ2ÿ¿ÿRþðþþRþ-þ#þýòýäýäýàýìýýþþ'þhþÐÿá±€AÞ‡í#Fs Ê - ™ :icwG¼tc|…fì0¦ÅÑI > - W ñ ° 7 bXOÆ ¾2ÿ§ÿ„ÿ¬ÿÙÿÈÿéDw(ÿå6œ“V-:‹Ë¯mLa¡ÝÛº³¹ÇÏó·¶šv‡­·–O ÿæÿÜÿþDdÍ I`d?&ñ¬`&ÿùÿ¹ÿÿuÿ~ÿ‚ÿœÿ¸ÿåF¤Ht¯ÔéæëèÏÚðiíâê4¶ å ¤ S a < Ï … m ™   J ª ³Ó¾ö)­i'‰ás5¬ºâ¸ÁEÿÊÿ•ÿ«ÿÏÿí ÿ¼ÿ›1ÿËÿïDs[ÿúÿ·ÿóITÿ¨ÿmÿÿð/<ÿïÿô*48!ÿûÿÕÿ²ÿËi¦›kÿâÿÊÿºÿÌÿÛ*h²ì êÅ·«†fZcfw­ÃÒìíÛ²›o*ÿÝÿ›ÿtÿDÿMÿcÿË4îâeêd¢èùóÛãêúÄ<¼¥··Q}¸‚ˆQÞ-ÿÄÿâ2/ÿæÿlÿ5ÿ•ÿðÿ–ÿ.ÿYÿ±ÿÀÿË"NÿíÿžÿÿpX ÿð ]ˆ9ÿæÿúKš¡GÿèÿÛ"‰Á—B#7a…‡a:ÿÙÿ×ÿþW½ó÷´t1ÿþÿèÿÚÿàÿÕÿâ1WtŽ£³Î-<9FNMISSM+Ê“a>ÿßÿ¬ÿŒÿÿŠÿ¯ÿá9•ÿyÅãÍÄÅÒôA…˜vºø=ú`צñ,×7ÿ¶ÿ›ÿîB ÿ­ÿÿ­ÿùÿ¶ÿbÿ­ÿØÿgÿ±ÿÚ7k\ÿÙ-ˆmÿØÿåT¯ÿ¯ÿ£¦Ç‚'ÿðU‘ •V ÿ×ÿºÿë7ð õ¼vG&ÿôÿÜÿÛJn«Î,?BU]YJG8!ð¶t; ÿÚÿ²ÿ€ÿrÿxÿ©ÿÑb¡Ìº¢[ÿ·ÿ’ÿ¬ÿÇT„Sÿïÿ·ÿÚ:¢˜ÿîÿTÿoÿûw|ÿêÿAÿ ÿkÿÂÿàÿ~ÿ(ÿcÿÊÿåÿÁÿ€ÿlÿÒÿÄÿ|ÿÕB4ÿõÿÖÿóX•Eÿë Zˆmÿþÿº€½Šÿúÿ—ÿÏ_ÊÑw ÿð*|ÂÞ³}0ÿæÿÍÿÏzåE`V컀W=BI^s†‘œ²ÂÆÅÐÖÒü¬–wW<&ÿ÷ÿò?ƒÁøBS?àuÿµÿ¨ÿ Cq¶µlÿ®ÿÅIÃÊVÿ«ÿsߘÿÿÿ¡ÿßKTÿ±ÿ‡ÿÜ*ÿíÿŒÿ€ÿ°ÿðÿÿÿ¢ÿÿ¬FDÿèÿ´%~ÿïm¨IÿÓÿ¾ªóœÿ²ÿÝdäó•)ÿíZªÔâ°p%ÿãÿÖÿÛ%Šñ9IT4ä¾ye\a^akx‚‰Š‡}ui]QD>7AOsÎü>=:ù‘ÿÁÿ®ÿ¸MeDÿ¦ÿˆÿÈ@¬  ÿ{ÿ]ÿØ«šÿÊÿ{ÿ°%r&ÿ¯ÿ‘ÿÃ;ÿÇÿ[ÿ˜ÿÿÿÊÿ€ÿÍÿ¤ÿÁ.pÿ´ÿï[‹iÿÓ,•‰0ÿÇÿ¾EÞ« ÿ¶ÿù”š ÿÏÿ÷9˜Ýìì¯c ÿ´ÿ¦ÿÇ2÷4=I3ó¾ŽnaNIIQVXWUVYXY]fmy~˜Ãù,CK0!í§IÿÛÿ­ÿ¯ {â.ì‚ÿáÿ¸¨gÿ¬ÿrÿýÈ.ÚÿþÿMÿw^GÿÕÿyÿ°6ÿžÿhÿË,ÿóÿ‹ÿu ÿ¬ÿ„ÿýp@ÿßÿÉr¨JÿÞÿíB™—ÿÿ­7å)Æÿ¸ÿàhó½RÿüÿÙZ´ûþ¹_ÿØÿën®Ü -àÁ£‚iVK=2#"+?JWez‘¯Íï2<õ¹‡S ÿåÿÒ gÑ)2¸CÿïÿºÿîO¿"õ6ÿ‹ÿoßMæÿcÿaÿû–|ÿýÿ ÿ™V"ÿµÿwÿŒÿõ0ÿÉÿVÿz3ÿÙÿŠÿË3S.ÿÜÿÂ0ŸŠ,ÿãÿé`¸wÿíÿwÿ’H;Æ ÿ—ÿÄl/õbÿïÿÊÿÛ:”å.3!Ñr&(X„®×ïÿô×½¢ŠtZG45AYk{Šœ±Êìÿ òɈJÿòÿëÿÝ ^Í8XQï~ ÿ£ÿ¡ÿÙa8ùBÿlÿ<ÿéác ÿRÿZšÃIÿ³ÿªÿûHOÿäÿxÿ…ÿÒÿûÿšÿWÿœIÿ½ÿ²ÿîQxÿ¹ÿëY ‹ÿ½½†ÿáÿpÿœP\õ/ÿ®ÿ¼3Ô&ü#ÿ×ÿáaµó)ø«i<!-Ol‹¬¾Ã¼¾º±¡‘…|„𦳾ÇÈϧxHÿöÿîÿïY­ >Q½TÿðÿÌÿÆŸ4Õÿ†ÿoý|#ÿ]ÿDÿá¤ËbÿÕÿ‰ÿÙN[ÿ¥ÿtÿÀ ÿ¾ÿ~ÿyÿÄ+8ÿÉÿ»&†YÿüÿÖv¹eÿïÿѤæ‰ÿçÿkÿ™i@‹ ;ÿ™ÿ‹¾&*¹EÿîÿÉÿòXªëñ¯tK/.)6H_k{—±¿ÀÃÄÉÊÆÁ¿¿ÅÁ´šƒb5*Z¤6TÊ]ÿãÿÎdÏ<0Áÿjÿr.¡=7ÿPÿ9ÿà–åÿÖÿÿ¶!k,ÿ¾ÿ’ÿ²2ÿëÿŽÿ‹ÿ¼ÿãÿ÷=Mÿîÿ¥ÿí]ƒXÿùÿÏ1¥­\ÿôÿÕ5³â’ÿáÿtÿ¥a-v"Zÿ¿ÿ¢ÿï‰ü Øj"ÿì1{ÈùûØ rS502CI[}¡ºÄÑÔ×ÔÐÉÆ¾¸¢€[A16P}¼ò%æ‡+ÿúÿâ ?Žð‘ÿòÿÿ¬G'‡#2ÿdÿBÿÕ è™ ÿ£ÿ¾!bSÿïÿ”ÿ©ÿö#ÿµÿqÿ§ÿöÿðÿÇZÿÍÿÌp•AÿèÿüR¬¶QÿçÿØ.½÷—ÿïÿlÿGŠ6‚ÿÌÿÿÔVÙ ß³n2ÿüB‰ÐöèÊ£‚m_]SYk‡›§´¶´¯¯­ªžwS;2@I]s«ÃèéÓ6ÿúÿÚ<Ž×ò ËLÿ×ÿ†ÿΆ9ŒÿIÿ=ÿꨰ ÿ½ÿÕ-yd ÿÂÿ®ÿê&ÿÓÿ•ÿŽÿÔ ÿãÿ¹LHÿÔÿÖ8x'ÿñb³ŸCÿæÿÜA¼í¡ÿ•ÿ©B÷S5šÿ³ÿÁ1–ÖñÇ—Y% /e¥ÖæìÕ¿¡‡s]W[lx…“¢ ¢›zkaPOYr…˜­¾ÓÓÎ¥d%ÿø\§ÚþÚ›<ÿËÿ¹™Dgú(ÿtÿ`ÿë¨ò¯.ÿÆÿÓ*mo)ÿØÿÂÿç"9ÿþÿ³ÿ¤ÿÈÿÿÿÑÿÕÿëLLÿÒÿýN‚rÿã e«¡?ÿäÿ×.½Ê3ÿ¨ÿ™¿KG×)ÿµÿµÿõl¾×Ú­ˆ\*Iw¥ÉÒÕÁ®•~pgihlt}…‡‰‚qc_js…™«·º½¶´žyK $dœÂæ×¶jÿÒÿÊ-ÖI]Òÿuÿ„"ƪÿÈÿâ.un*ÿçÿÌÿð':ÿßÿ¶ÿÔ ÿðÿÁÿöÿßÿí2a7ÿøÿèj—\ÿñuª;ÿêÿå=¯ì¹9ÿÇÿ¢œ@ßWÿçÿ¿ÿüC“ÆÇœqL16@a†¨ÄË;¯žƒvk`ZTTTXYbp…˜©·½ÇÁ¸›vO)@v­ÐÌÉšR ÿÊÿåDÊ@3¼ ÿ‰ÿ–²ë¨2ÿÙÿê<twL ÿãÿëD/ÿøÿÉÿÄÿôÿÒÿ¿ÿëÿÙ ER4ÿô7…Q&n§›HÿõÿÚ•çÜjÿÛÿÿÏg: }ÿÛÿå2pºµ²›bECNp«¾Á·¯ ‘~hUFCANayެ¯¯§§œ‹i:<i™À¸‘nDÿ÷ZÞ"‹ÿéÿ–ÿ¸=¼Ü‰ ÿÙÿýJŠ€B66ÿÖÿÊÿâÿëÿÂÿË$ÿèÿù$QU ÿøV~vF 6z ‰G?›ßÆcÿòÿ­ÿÜS×í’(ÿò"\‚˜¯°ª‘u^QXbvˆ–¢££›—}ohjks‚–—Ÿ¡Ÿ‚lR>*7X‰±¾½ †`/ÿÿ&xÐô‚ÿüÿ©ÿÎ;¯Ò“1ÿíÿü@moMÿúÿû/"ÿñÿÊÿØÿü ÿßÿÆÿØÿû2S?#SuoH2i——j0 *}Ä×ÿÀÿÁ'¤óõ¤W!-B`~–¬¯«•|fVUWcp}…‰’—–•œ¤§¥¦¡”‡…„~p\J5:Nx©Åʪ‡cNC$%EˆÝöÑgÿñÿÅÿõc¼Ä}ÿþRva+ÿýÿæÿØÿïÿëÿÜÿØÿáÿÿ ÿýÿùCI3 9jv[6$Gp„Z+8u¸½€ ÿ×ÿá&‘Üß»sB2.F[v’¢°¨™oeWXbt‰”›œžª´µ®«¤›‚s]L@CG\~³­ž€dO=><\ ÕìµRÿøÿÌÿûW©·z0C_\E#!-ÿóÿßÿäÿý ÿúÿÞÿÜÿäÿâÿêÿ÷ÿÿ %>A&(L\XN>239LkxkJ"#U•¾£Sÿåm¿ß¾–hOOM[j• ¤œ™|no{ƒ‹“˜™›¥¬«¤¡œ”†pTGKdx‹¡¡r`YVZU`{¢ÙØŸ@ÿîÿâm«£e (L`M-*32+/:ÿëÿæÿ÷ÿÿÿíÿÜÿßÿæÿÚÿòÿù5H00JVP<--7NdqykJ57\™´œU ÿôj­ÈÇŸ}aNQYoƒ“œž¨¥“}tww‰– §±¶·°ªž“‡yn_au›™šŽzf\]Y`k‡·ÐÓ›@ÿþÿï&r¨¬x>,TbZJ898$*6)ÿýÿÛÿï ÿíÿáÿÞÿßÿàÿÓ  )A9#!9MK=26G[[[m|oE2L¬¦m'Q“¼»ª‡phfqz„‹’¡¨¢’ˆƒ}€ˆ– ¨°²µ°ªŒ€zƒŽ¢«¤~tnptxsx«ËÀŒDB´¡sC8Ngr^DIRJ45)ÿéÿàÿüÿÞÿÜÿäÿßÿ×ÿÑ  :KE,+I][D17LW_gmzv[C=Y­¥r7"X·È·¥ŒztuƒŠ–£¬¯¯ª¤ž™˜••˜›™–•“ŽŽ—£ªª«¢•„wqmonw…ÀÉ»‡BH‹²¨uM=JckbREMO7):6ÿîÿêÿüÿíÿÔÿÛÿêÿáÿÕÿÙ -M[F+*AaoY90>Sfd]envoUHY€§ªˆS/6W¶ÆÈ²œŠ„‰ˆ‹Ž˜ªºÄù­Œƒ‚‡‚ƒ™¥´»½¯œŠ€}|yxu€›´Ë¸ƒG .]”­˜nGBVfhXEFLK> 0LF#ÿþÿí ÿðÿßÿÜÿãÿêÿàÿØÿâ  &9WXC/-Fci[F=Icsxxu}}kXN^…£¦†^C=ZªÈˬž—’“’˜¤°²¯µ¶³¥“‡‡Œ…ƒ‰™§±¶³²¨˜‹‰‹ƒ~|‡™­Á¼¨}H/7c’¦˜qWPYhjbYQTQ>+ 'AI)ÿùÿþÿàÿåÿôÿïÿãÿÝÿÜÿã  0!#>TT>*-GerbKFYvŒ‹|z{x`R[w• ”tQFR{¤ÂÐÆº«¤£Ÿž”—£ª§ž•—œ™—œ¥®¯§›™š•’—˜†ŠºÇÄ oI6Kq•¡ŒjRZpunbX]b]K1$1CF1 ÿ÷"! ÿðÿãÿôÿôÿÛÿÛÿâÿßÿü  -.&$,@PQE66Mej]MJZs€‚{„‡xf\ez’¢™cUe¥ÅÒÑÁ¸°§¢  ˜“•›ŸŸ›˜™¡£¤¥¨§Ÿ˜™š“Œ‹‘’š¬¹Ã³“lMK^~“”Štb^jvm^[]`ZG3(/COA&%+ÿüÿôÿøÿþÿéÿ×ÿÝÿèÿßÿú 19/%+>W_L67I_h[HCQj~w}„‡qdaqŽ£¥‘zml„¥ÁÍÆÂ¸­¦££ œ™–””–𙛥«§Ÿœššœš‘ˆ„Œ˜ª¿¾¬†^NRr–¤•uefoyzo\PZe]H0&/AMH2!,94ÿõÿÿÿþÿêÿÝÿÜÿãÿèÿÞ"45.,4IXQA9@Rdg_SQ`tzwxy}|wodhyœ“…wzŒ¦¸ÀÆÁ·¨œ”Œ‹‹ŽŽ’œ¥¥¤­²¬¡ž™”ŽŒ‹‘—¡­²¸ª‹l\euŠš•}feqzzsha`ggT?5:EMI:((/ÿÿÿîÿÝÿáÿëÿéÿàÿÛ $ %27539DMOGBFTgpi]]foutpnpvytmks€››„‚Œ˜¦´¸µ§˜Š~|‹Ž“Ÿ©ª¨­®¨ Ÿ—…„‹›©¯¯£—†ngu˜’…seet~qgekpm^H<DQSH8)"!ÿý ÿïÿáÿßÿíÿ÷ÿêÿÙÿÙÿþ %.7>BEMPJC@GVcbZUW`mvyxtsstuuw|…“š™ˆ„‚ˆ” ©©¦œŽ†‡ŽŽ•œŸ £¤Ÿ˜•“ŽŒ‘˜Ÿ¤Ÿ”„xqfi{‘‰zvvy{unllni]L>;DKD3& !#  ÿõÿçÿçÿñÿùÿöÿèÿÚÿÝÿýÿøÿö1CJHJKIFBBELTXUTYdt~ƒ}qimy€‚|€ˆ“’‰|ux…“Ÿ©©¡–““Œ‹”––”‹‰‰Ž™Ÿ —„shfnqu{|z‡ˆvmknsqhYJ@>@@;/$!#&% ÿüÿìÿêÿõÿÿÿùÿêÿâÿÞÿÞÿùÿûÿý#18=FJHDEHGLXbd`]^cn|ylimsx{zxx~†ŒŠ€vt{‡—™–”’ŒŽ‘ŽŠ‰‹‘›ž–‡€zmfhry}‚wmhkqush\QIGIIC92/,*'"ÿ÷ÿòÿõÿøÿöÿéÿÜÿÛÿÝÿÖÿú   #)4BJHDJPOP[gmje^WZl{}rhbbju{vnnt……|zusv~ˆ‘”–”’’“ŒŒŽŽ’”–‘„xuvrqu{~€††p`[`mxwk[TSSTTPE=>A=3*! ÿþÿøÿüÿýÿóÿåÿÚÿÖÿÚÿÛÿÏÿù 8OTC-*CVWH<2%(:Q]VG1(Fo…‚dJ;9EKR]dgc`[XSIBAFGKQ[fotv|}wlg^M=25?Rcq~„†‚|umfeknfXROIC:67;::CD4"#:LM>0&%((#ÿýÿúÿÿÿûÿêÿÚÿö #FZN1#3Mei\C/+0C[e^B$'IkƒzZ6(2@QYZ``ZSSTQLDAELOQTX_b`^`cefkh]NEDCLXhyƒŒŠ…weTFHVddXPIEC=853-/>IF5  5FH;' ÿùÿ÷ÿ÷ÿøÿýÿöÿÞÿêÿó%A]X3Fiwu[>.0GcpkN,#<WkiZB--@\kli^UI915AEJQX`_XL@9676:@M[hy}qkaQE@EIUgzŒŽŠtW@7<=@CDEA<5.+*0:AB9,#%;JD-  ÿúÿñÿñÿôÿîÿëÿøÿüÿèÿãÿôAZ]E!?sŽd@'/Ko‰}V% !IhnfJ+ ,NpnaQ@2$%.?HP^eh\N;(!-9J[k|…ˆ~r`L>7+.=ZyœtP4*%-4:>=?<4-/32125:8(*<A6#  ÿïÿåÿêÿòÿèÿáÿìÿõÿíÿÞ Df`@#%J~™Œ`;/9[‰{P AbiY9 *KuŒŽqT:*)#*7Lbnqe^N;),<KXahkpplggikih\G4*06G`t~ujS<+!);R[Q:-' #+7GF-#8BA,ÿûÿõÿÿÿûÿéÿæÿéÿâÿÜÿàÿäÿàÿñ/afDGœŠ^1 8^‚“{LLxƒa,ÿü T†«ŸzC &8Qi}|v^E, +>Rcltqk_VNA<;I^t‡…y_H4%Dcy‰}eB%/L^[F5)"-=B5!%:KB%ÿïÿòÿÿ ÿ÷ÿìÿæÿâÿàÿÚÿÔÿÒT\7;y˜E 4\{}iE# <c|oIFy™‘yL ;Ueld\L9& 3HV]^glkb]TJ@93)$);Uo}cD&3Wv‡w_9;O]R;7RQ9&;<#ÿíÿçÿóÿþÿíÿåÿáÿÚÿ×ÿ×?K'ÿÿÿù*l‘{? 4]tuW2!Dw‹u;ÿ÷R•°§m1 ÿþGu’Ž…b<ÿõÿçÿÞÿï#Ji€|nkeXJ@<8664/&-A`€œ¹½º•c.ÿýBl{|Y+ÿçÿó9^cU/ÿùÿýKbX.ÿøÿÿ25 ÿýÿÞÿØÿëÿúÿñÿçÿßÿÜÿÝCÿÜÿßg‘~@7kydH0'8VkoS#2a}`<()Ku•¨’r= ÿêÿÑÿÛÿï6RirzsgS>32;@FNTYWUK@1!!0H^y™²ÏË·€Bÿéÿëÿø Pr‡qFÿêÿë2_j\/ÿíÿþ)LRBÿøÿî.ÿóÿÏÿÍÿèÿÿÿíÿÙÿÏÿÐÿÒÿ·ÿ÷WƒG Auˆm;$Ae}j8ÿæÿþ6rŒn4ÿñ\¥ÛÖ¸n(ÿîÿ·ÿ²ÿ¿ÿû:w§°³•tI"ÿóÿõÿý1Let€}zm]J90*-3:8?OqŸÀØÃ¢aÿãÿ¼ÿÓÿþE’«žVÿÕÿÇÿù9oˆd%ÿêÿÎÿëSkMÿãÿØÿõ)ÿâÿÄÿÇÿã ÿ÷ÿÝÿÇÿÁÿÅÿ©ÿÒ7‰†D5p€b6CgnY,ÿøEe^7 ÿøQ•Ĺ—SÿñÿãIƒ°ÏƳ†]4 ÿóÿáÿâÿáÿð8Qft„‹‘‹‚p^M=4.(0R}¤¾ÝÒ³iÿÕÿ›ÿ©ÿÛ1œ”U ÿàÿÐÿø1_kD ÿåÿåCYEÿÝÿÎÿç  ÿ×ÿ²ÿ»ÿä ÿöÿÑÿ¹ÿ“ÿ¾oƒM+b{[$>gqOÿõÿñ[y^ÿ×ÿÏÿûY½âÓwÿÏÿ£ÿÇ]¬âú°i)ÿõÿáÿÐÿÜÿê 2@LRW[blwzzocUJCA<,#7Ir²ä è©7ÿ¹ÿsÿ[ÿ¨wijr ÿ´ÿ§ÿÍ!n€[ÿßÿÞ7VB ÿÔÿÅÿâ ÿùÿÀÿ¬ÿÂÿëÿæÿÂÿžÿý]tHÿúWmW+ 2YcFÿú$L^AÿØÿßc›i!ÿéÿÑÿú/|ÆçîÅ¢q;ÿùÿü2K_fjhkh_PD:/+)--26CTh~„hVA-W¦âí¬>ÿÕÿ˜ÿrÿ¤ÿû[Ÿ’\ÿÆÿÅÿô9dZ1ÿÿÿäÿ÷+QEÿÖÿÁÿåÿðÿÃÿ®ÿÃÿìÿûÿÓÿÝ:hBÿúQkR" 4QZAÿù*TU'ÿéÿ¹ÿÏtu*ÿÙÿœÿ¸{ã,ð1ÿÙÿ°ÿ•ÿµÿÝVƒ¯¼»¤’‚yn\G9+ÿøÿöÿðÿöÿþ<h”­º¯¦Z ÿíÿ½ÿÏgÓ>  ÿqÿ3ÿ?ÿ¿O²Ô‚ÿ¯ÿ’ÿÐ$iwCÿýÿÔÿî)QDÿÊÿÂÿäÿíÿ½ÿ¯ÿÄÿëÿÿÿçG8ÿä LgT)6LK8 2H: ÿÖÿÃÿßW],ÿèÿ¾ÿÖ_½èì©fÿÆÿ£ÿ›ÿÎAyšµ³µšrG* ÿúÿéÿæÿâÿÒÿÄÿ·ÿÅÿßBt¡ÁäòðÅuÿàÿ²ÿÀÿ×{Éé†ÿôÿqÿPÿkÿÜP‹„.ÿÖÿ«ÿ¾ ZrDÿ÷ÿÊÿØ?2ÿùÿ¼ÿªÿÖ ÿæÿ¹ÿ©ÿËÿöÿý&ÿïÿâÿþ=jZ*6SJ* !;K3ÿ÷ÿÂÿ³ÿÞ&SDÿýÿ£ÿŒÿÀ?½ Òfÿæÿ~ÿ]ÿIÿ‰ÿâP¯ÜöÛÄ™sKÿüÿîÿû0HWZS]W>ÿðÿÝÿÕÿì/U„¹ë#23ú»[ÿõÿžÿAÿBÿqµ'SÝ2ÿ…ÿ ÿ'ÿ‹ DÿÕÿ’ÿ¬\q6ÿâÿ­ÿÆ5'ÿÛÿ–ÿ¡ÿÛÿÚÿ®ÿ²ÿÓÿðÿíÿÂÿç.`c@8ST0 ;Bÿçÿ¸ÿ½ÿó-BÿÇÿŽÿ‰ÿà\Å÷¿oÿþÿšÿpÿbÿ’ÿ½ÿû@guKÿÝÿªÿ†ÿfÿUÿ;ÿ<ÿKÿvÿŸÿÍÿø8GOKUL1ÿÛÿ»ÿ¢ÿžÿœÿ¥ÿ¡ÿ³ÿÔW•ÂÎãÏ´bÿóÿˆÿ&ÿ1ÿuÏÕjÿäÿrÿ0ÿ`ÿÄ-[3ÿèÿ­ÿ¸ÿþJc2ÿâÿ¸ÿÊ 7 ÿºÿŽÿœÿÓÿ÷ÿÆÿ¡ÿœÿ¿ÿìÿÇÿÍ^f?"9VR2 ÿü2A#ÿÙÿ¤ÿ¬ÿí:Mÿ«ÿ_ÿzÿâsêï¯$ÿ©ÿsÿlÿ¿pª®¯…Nÿêÿãÿæ;v¬áJ­Öìÿ ý渋RݨjÿÕÿ¨ÿ¶ÿÓ 0aªî;7 }ÿÑÿFþäÿÿAëúYÿ¡ÿ2ÿ*ÿ_Mÿúÿ´ÿ°ÿûOf4ÿäÿ±ÿÕÿõÿ«ÿÿœÿÛÿûÿêÿ±ÿÿ‹ÿŽÿÿá5fT"(DM/ÿø*<&ÿëÿ£ÿÿÄ ÿÉÿ\ÿ"ÿ=ÿ¶:ˆ”;ÿ×ÿ|ÿFÿbÿžÿëÿëÿ›ÿTÿ:ÿ0ÿvÿÉT×uÂcÍ$?`_ZF6*$!#Ì1Òb…åGÿ»ÿmÿ7ÿ,ÿþùÿÿHÿ¤ÿõ/ÿåÿxÿþ¹þŠþÍÿAÿÔWaÿƒÿ þüÿ:ÿµ ÿëÿªÿ°ÿì5NÿÌÿ±ÿÉÿÿÿÞÿ—ÿ…ÿªÿëÿÝÿ•ÿvÿ±ÿä3]V8!6;)ÿëÿø2*ÿÐÿ¼ÿÖ/ÿéÿƒÿ@ÿiÿãk´’>ÿêÿÊ lðk¦¼ˆEñD»© ·²ž™s T Ö 6 / ( ò ½ Œ i ^ Z ] ` M <ò—ý^¢ø7Z|¦ ˆ3Ât%'D§rØÞ¹*sÿòÿ° ®C„pÿÂÿfÿ–gcÿÅÿ®ÿæ-< ÿÂÿ™ÿÆÿÿÿÏÿ˜ÿŒÿÇÿÉÿŠÿÒ GE!'6- ÿçÿÕÿîÿöÿÉÿ—ÿ„ÿšÿ¾ÿÒÿ®ÿJÿ ÿ&ÿÿ÷ÿúÿ¦ÿ]ÿzÿÖ•Nû‹á$_©*§€y¾  @ X 8 מ U8ÍkXdrua ÷ w • ª ” ‰ˆ‡¯ÚHÌ|Ç]ØÜã!}É Õf¬óŒs®ñÞqªÿàÿwÿxÿÓ ÿ»ÿqÿnÿ± 1ÿòÿ›ÿ•ÿÁÿêÿïÿ´ÿ‚ÿœÿ×ÿþÿîÿ©vL®\9?9/ÿôÿøÿöÿÜÿî2…¿Ä´°ñƒý×vRhöèȰ Ô  } ³Ø@z€q¼6Ï/wkMóõ @q‹¢~aÚ>#õ†Î¦ Ó ø m î · ’ t 7 Ü { # Ê ² » ü R j f ¿Ö¥ŽÝ‚\fbQ/"Ð\ÿêÿÊQ5ÿåÿ¢ÿ“ÿÀÿðÿ×ÿ¨ÿ–ÿ©ÿÞÿøÿÎ^•ÌJÿüÿëÿ¹ÿ–ÿtÿqÿ~ÿ˜ÿ¤ÿ¦ÿ„ÿ¨ÌG›Ë À‡R¤‡(ø@©¤¦ Y à _ãÚ÷ÄADWCC ñ“'¸v  ® ê! ÿ! !?!Œ!í"O"}"˜"W"&!y ½dî5zðÆ‚¨Öš”ÔëÛ¶zK& ìÉ~G¥×Š  ´ }  ò7<îq8_ûŽNÿ»ÿ…ÿ¨ÿ´ÿ¨ÿbÿ1ÿJÿŒÿ³ÿ¸ÿœÿÿ¼ÿéÿäR×YþTðl,ÿÿIŽ©Ü ®§ÎŸ\#({ © • â ì æ 3 á v lf툭Ü]êhÿ!Ý#P$$Ù%‹&a'9((Å)l*#++ê,¦,ø-#---I--ð.[.Ž.œ.R.$-Œ,ê+¤*7(M&W$m"·!A \¨ƒñ:‡»Ü-+² 'ÅñœØùDäÒÕ s Ž n€"^6 xŠCÿöÿ¿ÿÃÿòÿòÿ½ÿ»ÿÒÿæ Ù ­„‡½ï¥_žèjµEñ&Š m É Y ÿ²£5»k1½¢¬x^ô–"ˆ%~(@+-.„/@0%1 23>4T5@66Î7Á8s8ü8ø8Ï8i87þ7ü838|8«8«8w8p8 7Ã6Æ53ë240p.â-]+¡*(d'}&ê''-'†'È(&(­))O(ô(X'G&g%]$Z# !µðùáë?íXP® ß d mz@ Y:àƒÿùÿ©ÿ´ÿßÿ½ÿ†ÿdÿlÿ˜€Ü: ¦ Ÿ·aõ›ì?ü”•³ M è ÖÀÙëHªÐÜpÒ §!Í#Ý%ý(·+p.S113Õ6•8::ú<=9>’?èA+BB÷CD\D»DëDqCÓB÷B5A±ADA,A(A9AA A4AHAM@Ä@ >Ë=ƒ6§4û3Ø32ç2¼2ò33„4%4»5C5#4Â3¸2Ê1~0!.–-2+ )ü'þ%×#¤!ÎÕ¸î³hx= ? Š Q|X¯(M½lû•ÿãÿ×lrvaß ‹ 2 è ˆ ' | Ê © ‰ å>ªàh+Êø Ü"~$y&B'÷))Á* *n+b,»/1y4T79Þ<—?*AóDEÊFàH#I_JÈLM+MáN~NÚO{O¶O¿ON=MLKWJ¥JMJIìI©IžIÕJ!JbJ%I´H±GšFnEŽD£CzB0@Ï?ß???+>÷???a@@¢A)@ú@€?c>y=.;Ä:8|6Ð5H3r1c.ï,•)ú'|$y!sÔØY^ù Ö Ï g J\®cZi²ÔAÿÚ%×"ɪM‹Ç—Pè.wl{ö9â‘!ñ%'•)®+·-¿0B2d4'4ó5~5¿67-8©;=Š@JBÞEfGèJdM)ObQ%R0SZTJU\V0VîWQWœWÊXBXuX~WÝWUáTÙSþS4RµR?RQ Q™QÕRGR¸R´RuQ“PŠOxNÉN0MWLlKiJâJÀKK0KSKZK“L!L›LñLKáJ´IÔHªG\E§CÕAþ@|>ç=<:ð8g5S2d/-+ê(p$»!oY ö¯»£ # ò)ÇN3"0e-2)Ý&3#: ®yh4¸éAW …"#$©&Ž)d,/Ð2N4k6Ô9U<*>R?ñ@ˆA AiAÕC DœGI~L)NžQS­VPY>[}]:]û^Í_8_¼``z`¸`âa aoaa§a`<_^]1\b[Ø[R[ Z£Z®[[§\V\\[¶Z·Y®Y"XªWÞVöUçU†U¶V‰W*W¨WëXX©YYIXÓXVÞUíT°SWQ‹O’M—KôJhHíFÉDL@÷=š9ý6“3)/‰,/(þ&u$""ÉŠwwŽ.KD – mI˜Ò;ü8Ï5i1µ.Á,N+3*.)ð)[)‚)ü+2,Y-¶.¢0<2c5q8—;=ç@BÌEˆHAJKoKïL‰MMN©PR4TRVµXð[P]Ø`dc&ef~fÍg%g gfþgg[g‡gÂh(hZhpgðg;f1eCdmc c b{b1aËaîb^c6ddd­cþcb!a¯aD`x_ƒ^Y^^Z_”`®a¡bAb”c.cnc‘böb#`Û_Ô^“]?[ŒY«WÄVT©SbQšO‘L€I"ETAË>|;<8;52\/ô-ï+Î)š'N$ß"¹þ§îw…Ç 2G½D‡@þ=6:87Å6¡5y54`4”5D6³7Ú90:8< >‡A¿DÅGIôLSODRT›V7W‘X3XëYzYôZÓ[ò]ª_\ahcre¨gójlRm¯n¥nŸn¡nHmõmÈmÍn n0ninÁnòon³n&m9lak|j•iÑih§h)h\hãiókkÊl&k°kj>iúiºi"hTgCfõgLh›iãkll‰mCm_mDlVk>iâhÝgÌf¢e'cyaÍ`a_.^*\»[%XnUJQrMÀJUG?DqAS>t;È9Œ7y5O2Õ0 -¦*•&é"§Ú’éRqO‹LTìRO¡LùJYG E.CA>—;»9'5ã2--Ø)v%‚"*@\ÙZoW…T’R P NÒMtLÔL*LzMNaOGP‘RT V0X˜Zß]$_na¥còeßgŸhàj;kkål;lxlµmmÒn©oÑqr6s0sâtµuuZu%tût§tCtsót)tct·u u?u>t¨s÷rÛqÍp–oHn&ml“ll‡mMn°pqqÒqÓq±q`qbqaq'päp„pÄqorÈtucv}w:x.xaxMw4uÝtGs rq6phoon˜mïmqmlMk jh:elbc_W\ÇZ§XŽVTS¸QOLØJlGyD¢A=<8Ò4F0 ,p)w&…dabÃ`¡^ƒ\¤ZýYäX²XW•WÈXXåY•ZÀ\]È_C`öbØdÜfÔh•jEkžlõmÿoo×plp“p£p°pßqdr rÜs¤t0t‰t»u%uou•uyudu'tÏttntœtáuAu®u»u›tátrñqÚp¥oVn=m3lÊlflãmªnòp-q q§q¨qqVq^qnqFq=q4qÒrÌt?u—v¾w¼xfyMyšy·xÚw·v)tÑs¼rËrqKp²p;oèo–on•m…lVjkh>eðcêbQa_]“[5Y%VïT¹QûO'K–GÚC¯?n;85'2hk•jÆizh8fþeÜedc¡c4c-c cdcàdØeßfÿgÈhÛjcl)m»op4qrr®sosÛt+tsñsÙsútxuu¤vv6v6v!v>vavmvcvgvLv uÖuÄuðv3vwv³v—vYu¸utHs}rŽq€p‹o¢o2nÈooœp‚qRqËr qÜq q}q qðrrCr„sYt}uùwWxsyqzzÐ{{zSysxvÕuœtzsžrÁr4qÇq}qpŸp2o–nümúlºkPiüih©h fÞdíc `Ø^ð\…YÜVbRÅNËJÖG6CÔ@ø>LoZo>n½n?mšl÷l`k×kljüjªj3j-jk1k±l8l‹mSn¡p+qXr2ss¿tVt¢tûu utÁtbtBtnt÷u€uîv5v5v*v v v v vv uøu½u—uŸuÜvvPvkvLv&uÝu£uOtÿtsÞs1rr3qÝqûrOrÉs%s"rïrtqîq§q«qörrCrsFtWu­vãwÊx‘xøy}y‘yŠx÷x^w_vYu+sÿròqíq:p°pLoºo.nªnSnmæmŒmlŒlGl‡l—lLki{gqeàcía¿^È[œX TÊQÃNáLSIérØsQsxsžsns-r¹r^qçqZpÊp"oéppˆp–p´pÜq”r¹ttáuov&v•vçvçvúvÃvkuôuxuTuvuáv0vcvŽvv^vuÖu¢u‰uyu\u$tÂttštõuJu¡uáv vAvhv’vvªv{v,uÃufuu@u,tÅtvsòsFrrqØqór4rr r[s=tHuXvv›wBwŸwÛwÀw¹wdvávOuÚu¶uºuâuäuÚuèuÖu§uKtét“tet8sés†srÖräsVs¾t9t¢uuyuÖv&vIvqvbv1uúuÖuùv3v¬wCw¤wÓwzwvSu‚t¢sàs?rurqÎrp\o‡nìnmöm‰mlýmBnnço¼pYpÚqŠrrÐrœq»pnçm¤lwjæhùfÚdôcYaë`z^òt$uuñv vËvÝv‰vMuÉutisèsÇsÌsås•s‘sùtåuÇv¡wYwÕxax¤xÖxµxžx6wžwv vtvIvuÙuŽu]utÄtUsïs—sPsr‘r(qÀq·qÝrVrÉs7s‰s¿tt4tYtdtztqt>t&t.tu&uìvÂwWw·w£w™w@vëvOu²tÎs²r¿qÿqär rdrŽrSqÁqEq6qŽqìrr q³qmq+qpÐp3oan¶n2m´m_lÖlÔm no,pYq]rrÇsCt+tGs±rAqoßonlÓkjZiŒhúhYg†sZtcuMuÿv,vIv uåu}tàtNs÷sísçsõsÃsät[u5uñv¬wmw÷xix‘xÄx°x•x.w§wvÈv‹v9uÒuftït}t s˜s5rçr¡rLqëqwq-púqqNq±rrhr‹r{rzrdrErr qéq˜qqšr6ræsÙtÑu•v%vhvÀvîw1wvèvusËrÈr6qÔq£qUpÒoÿomo=o¢ppp¶p§p¡p®qqpÇpo\n·n@mîmVm-mKnop0qPr r¨rîs­sÓssr8pìo°nánVm†l×l8lll-l ržsËtÚuœuÖv uôuùu¶u6t´tstmtXt^tIt‚tóu¨vAvàwœx xrxwx›xƒxUwêwwwv±vdvuut|sÖsFrÓrŠrDqûq—q7pÝpºp¬pÔpôq/q‚q¸q¿q q q’qrqEq%pÿp¨ppÌqƒrHs>t/tãufu¬v vavÔvüwv‡u¯tŽs®rõrFq—pÌoûonƒnanßoaoçp/pUpŠpÖqaq qpìp/oanÖngm¨mNm=mìn¯oÒqqírgrŽs.s^s;r?pôo­nèn¢n3nmín?nÜo‹oþrs3t;tñu*ufuhuuput§tstst_ttt“tçu?uÂvJvãw“wÿx2xxwäwœw'v¹vCuÎudu t¨t,srÙrKqóqÌqŽqEpåp”pSpGpHpipupšpßq q3q?qvq¤q²qœq’qqqqq/qÌrrs?t tuu4uuÐv8vsv©vauØutvsÖs+rGq=p5o$n²nœoo‰oõp.pbp·q+qÅrr*q¬q p@o³o.nWmÚm¥n)n»oºp×q¹r;r`rÐrèrér+pÿoºnçnœnFnNnBnªoVp*pÕqêssùt¡tÕu uu;u0tät‹titztrt¢t÷upu¿v%v®wJwõxKxgx wôw–w-vŸvu€t×tKsóssrpqÃqJqpïp´pjpoÐoo[oPoto„oºp pfp™pÑq6qŒq¸q¸qÑqÁquqDqGq´r+rÜs’t2t¡tüuzvv“vëwrHrmrQqïq›q}qÞr^s+sìt¤uluÎuîu¶uÍu‚tÞsãsrQqÐqpüp´p‘p×q2sJsÛtVt¥t²t±tµtéu#u3unÆoÅpÍqÃr„ssŸttttˆtdt-ttbtÔuv v›w[wÅwØw†wuwv–u³t·sÇsrŒqÆq'pŸp‰ps¡ttkt–t“tŽt§têuGuŽuÆvv*vTv^vtvAuÃuQuRudu!t²t^tsÒssmròr)q ponHmwlk¨jšjiÃj jRj…jcj?jGj²kq7p;o¥o?o'nönÍn„non“nßnþoo*o”p>qMr]sVttµuvBvÙwvüvÇv¦vÂw w€wÇx$xÍy7y?xÛx¤x=wàwvtÛtsKrMqdpŠp)oçtGt¤tóu uu u7u‚uóvevºvûww vñv±vuDt„t'sÞsAr¡r)qðqÁq«q«q\pÁoÖonHmˆlÈlk9j0i‘i[i­iêj'j%jGjškNl lïm­n”o£p×qüstIuuµu¶u¯uJtÏtptGtst“tëuXuËv:v_vlvuÄutJs?r+q2pJoÌokogoSouo’oìpqpïq!qCqxrrÄs»t¦ufuîvvwXx"x·xÕxÖx xxxux—xÕxêyy›yìyïy‚yx’xSwÁv¼uƒt®särÙqÒpÓpAoÍu5u„uÄuÙuÙuãvv\vÐw^wÅwüwãwñw”wvtîsçs2r™qµpïpSpoãoåpoÜojn¨nmdlÇl2k«k jini.ioi•iÚiÿjVjÃkŽlkm†no½q r_s¥tÃuôvÈw„w¸wàwšw;vÎvŠvwv^vlv„v¬vÝvãvÓvzv,utÎsßrõr5q†q/pÜpåpïqNqºrWs s‡sŸsŸsÛtqu%uðv¢wwbwÈx£yzz-z;zyûyîyôzyùz zbz™z™z%y„xäxÈxzw™vmu¨tÚsËr¨q‡pÃpvpv¾ww3wLw^wŠwÌx7xÄyy3xìxÙxMwyv5t÷sÔrår$q5pyoÕo‘o^odo€o^nôn:mŽlòlol k¶k>jliÅiwi¥iÁjjoj÷kll>m>n’oÑq'rsÝuvw)wùxÒy@y—yny)x³x_xwÍwœwwwlwlwZw0vÞv¡v.u–tßt3sºs[s9ss ss€sÿt›uAuŠugu1uSuÔvgvýwpw¬w»wüx²yyyñz zzz#zut°sªr™qÈqw¬wþxVx£xÔxéy yMy¶z@z‚zz yÙyxvu?tsr+qGp§p oÍo«o±o¾oynônm6lukàk†k;jÎji\i iBiujj†kEkãlén9oÏq7rsøu0vJw%x xÍyµz6z‚zAyõyzy xÈxWxwÔwÑwÙwÆw‡w%vèv‹vuktÓt~tYtnt^tntƒtàuguþv’v«vNuâuävRvÄw3wyw“wŽwÆxcyyy¡y¹yÖz"zwz¬zÑ{{5{\{:{z|yjxƒxbxuxwQvàvZu¹tàsçs r]xŸxöyeyÕz$zEzhzÁ{-{¨{Å{ª{z§yµxnvãuŽtus]r–qØqjpðpÅpÆpÑpÊpUo®n«ml¼lkÅkkjûjwÐwqw>vûwwKw¦wåwÀwgvÎv`uæuQtÃt2sösït%t9tLtRtytÍu%usu`tît„tstÙuUuÓvv.vXv›ww]ww”w~wŸxx°yylz zgz‡zy³xÆwpvIuÄu¸uku#tÛt¢tˆtEs´s#rÏy¢yðzt{{‡{á|;|Ó}P}º}˜}`|€{›z)xváu^t9srdqÌq˜qJqPq™qÔqÓqXpÈoøonzn.nmÌmsm lßlÑm,mŽnAnîoÖp½qÜstNuev@w)wÂxGxsx¬x“xhxwŸw,v´vRuõuÙuÅvvvëw&vìv”uûu}tôtVsÒsXs1s/s\sqs|sts€s´sïttsÅss•tt£uqËq;p×pÒpßqCq¢r7rßs…t0tmtpts¼s2r…q»pýppoòoÀoŸo¨o™o£oÆoôppoøoöp p“püq•r>rósÀt't_sèsNrZqqp²poÊo¾oço³oØpwqWqârFr¼y³y¢y¯yÊyâyáyÒyöyËydx{w‹vkuNtZs—rïrqKpÑp˜pOoýo¾o(n2m7l‚lPllolàmánìpAq†rÚtPuzvuvàwUw=w viuÕtúts r5q¯q#pþqq8qpÁpÂpÊp•pnp‚p°p²p·pÇqqrqÅqõq©q"puoæoÅoÈpLp×q¡rks&sïtCtesîs{r¥qÅpÆoÉnÿnOmñm‘mvmam‚m¨mánn9n/nVn»orppÙq³rŠsusët5sËso nÙnn9mœl´kûkykÊlEmynµp,qsrÄtBu¦wwÓxtxw˜viuPtrÈq™pQoxnÑnÉn»o&oºp[p¯pëqQqÀrrzss”sÞsútAt_tzt$s½rÆq”pLo$n“n0nrn¶oHoÚp^pÙpþq%p·oôongmúmal÷l³lªlzl’lèmbmªmÝnnWnŽn÷oyp8p÷qÌr¡set;t³utÕt•tDt#t%tt"tStwt?t?tºupuóv"vuAt6sCrxqûqvq3q pñp¨p_p/pppp oÝozon½nŽn`nmÄm9lokçk‹llÒnEo­q5r•sêuiv¯wþx~xÆxw%u®tQrÒqOoônm»mm"mo´pp±qUqÛrrs4sñtœtúuLuCuOtàtZs>qípo.nqmèn n,n oo~oÏo×oñonÕmþm…mJlçl¯llŸlŠl¸m,m¹nn5nhn±oo„pp«q^r.ssÈtšuuQu5utüuuNuru¥uøv6v"v7v¿wgwâwîw¾tüsÜrÖqüqtpápšpppfp3pppp6pQpfp@oôooPonän‹nm…l»l;kßl_m#n‹oÓqCr©t uˆv¶wôxJxMwRv_tîsŒrphnþmŸlÕl$l&l7lÊmnn$n©oooõp[pïq«rsƒt*tŽt•tÛtºtjs‹rœqtp=ocnÃn½nÄooeo oÃo§o o5n{m¯m0løl°llnlvlsl¹m;mËnnFn}n×oJoÝpXpïq—res@ttêucužu‹u‡u¥uêvTv¤wwywßxxHxðy—zzy±tìsÀr±qÍq@p¦pcp=pMp9pBp[pžpôq;qsq_q-pÍp‰p:oõo~nén$m?l¥l%lwm n@oDpqðsmtðv"wiw¼w¥v uÈts5q®pn©mbl¦kñkÌk§llm&m¶nnnnFnÖo‰pŠqžrxrþsEsçt5t0s¶sorÐqàpòpDppp-pDpAp2oëo³on=mQl¦lUl kñk²kªk¶l"lºmXm­mèn5n±oKoùpqq¼rsjtCu(u«uãuÜuøvLvÂw]wÝxcxýy‡yázM{{·|0| {¢uqt_snr¢r&qŸqeqBqRqGq^q~qÐr?r¥r÷rõrÙr{r4qÉqlp¿oßnÍmºlúlIlWlŸmƒn3oNp r&sœt¾uövKv8u]tÂsÌr»qppnômúmolãl­lgl€lÌm=m±m§mlgkül1lŠmpneogppÕrss®sättt{ts+r˜rOr)r&r qÚq­qKpép(o)n mJl×l€lVkîkÅkÐlDlÐm\m¢mÚn0n»o`pp’qqÃr“sntKu:uËvvv;v¯w7wâx{yyÎzrzð{x|M|ó}o}@|ÑuËtÒtsMræryrLr)r2r(rFrirÈsPsÒt8t?t-sÍs…rÿrƒq’pUnòm¸lìlll lÜmdngo³q-r„sutwt©t~s´s.rjq‚p~o~nÂn&mæm¥m™m{mmËnn^nlþk©j¦j_j@jøkØmmÊnàp‡rDs˜tuušuÿuÞu.tÌtt9sÿsÁszsBrÖrYqƒp€o€nªn7mêmÂmKm mm|mènHnjn‰nÌoKoàp}pçq]qörÂs˜tuuhuüv-v2v|wwx>xåyŸzh{${½|U}1}Ô~S~}¦v}u¶ut’tGsûsÆs‡sRsrürés&s’ttmtt~t6t sŠs qòptnÞmlél%ll"lÊmJn?opÑqírŽs8s7rørHqËq/proÁo!nÕnn³nÊnüo&oCoro[ocn‹mk$imhxg²hhÀjklŒn¯qs9t»vFvÛwv¢vvv-u×u~u;týtÅtasês-rQq}pÌplp-poŠo5ooPo~o oŽo†o¡oüpjpßqqqqër©sotKu;uÔv vvwwwuxxy\z)zë{†||ñ}~}Ú}^w}vîv‚v,uñu¹uetôtesÑsbrørøs-sšsçt t*ttsµsRr8p£omÛmXl¿l»lÓmem×n±oÙpöqÍrrdr+qÐq1p¸p;o£o2nÔnÜooqoØp4pp—p¡po·nUliiõgšf d®dÑeJfâhj&lÄoÅrˆt“v‚wWwòwÂw³w\wv¥vlv3uåuwut…sßsCrÁrwrGrq¤q:pþpìpØpºprpBp4pkp¶qqq=qr8rísËt½ugu±uØvSvæwGw·xHyyÑz“{.{Â|™}6}³}}}xVwùw¿wŸw}w[váv5u@tOsƒrÀrwr^r¢rÑssRs~s¸sŒsZr^pÙoDn2mÔmom‰m¢nnoFp`q^rrr9q÷q­qEpôp¦pDpoÀoÛp#p¥qqbq°qqqp˜oÈmÞkzh~e…cbaƒa\axc!d›gPjrnq^sæv5wDx3x-x#wºwnw%vøvÀvguÿu·u_tát\sðs s_s rr q˜qLqpàpŠpSp>php£pÝpÙpëq q²rVs0ttÑu9uvv¦víw6w®x_yyÒz^zè{»|U|Ë|‹| y&xæxÒxäxãxÛxEwevtásÓrÓrVqúrr*rrêsSsÀs¸s­rºq/o„ncnm±mÑmÉnndo,pNqSqêqörqíqçqäqëqíqäqÑq«q´qôrPr•r¢r³r[rqoòm…j‹fÒc`V]è]`\æ^{`9c½g–kópsBvwtx°x¾x¶x:wøw´wuw,vÔv€vSvutßtbsósˆsrhqÆq+pÎp–pƒp@pppIpp©pŸp£pÃqmcm4mJmhn$oJp~q@qŽqØrrss·t0t“t³tÈtºtÃt®tŠttFtrt tïu[u©uâu°u£tÀsÙqwnej˜fýd`bay`Àa±b¥ethÜmq't&vŒwˆx¢xíy'y yyyxîyy0ymyVyxEwgvCuPtr¬q o]n'm%mlömnnøoÏpÚqõst-tüuÅvuûuÇvv%vuŽt½sþsˆs±t t™t’totÚtät§s>qÄoÍq,rAs­tµu›u™uGtns»s:r÷r×rmr.r rwsttÈu9u‘ugu t–tsºs°tt^t©t§t¼u(u½v0vwvÓvÈvruêu£uvu4tÿtÈt½t±tïuauÐvuøuêu t*qïok–hvfad›d7c±dŒeegæknÙretõw wôxüybyÄyÖzzyïyÜyözzp×ovnŒm°m”m¬nFn¨oYp.qBrIsPt{u9uºu•uQtätØtžts4rq@p¬p´qq*pÈoÖo\n loidfhhAjël›n•oãq"qqÅq‹qyq|q©qÐq»q¬q¦rrësêt³uueu`usuRu$tËtctsîsòsÁsßtBtÿu²vXwwJwPv©vtæsrp…oFn m«m^mŸmßn¤8©8²<î?¶B1CE:F#FÏFôGPGfGNGFÿG6G—HHHþI¦J:JƒJ¶JºJïJÙJ|IæI{I!H‘HrH˜IpJZKLïM¹N5M‚LÔJóHéEðBì?¤N8ÿ3y-.2)4Ð7 809°:;;);\;V;<;:í;;’5>z>£>£>ã>Ò>^=²=E<ü<ƒ?8@ƒADA¶A@c>–<¤9¹6«3e0 -¥+V*})þ*—*â+Ï,Í.r0?2D445Ê7869»;H<Ä=Ó>¸?1?¡@ @ŽANB)CDDÑE©FBFŸFýG„HtIhJÑL/NP8R¿U|W¼Y~Zg[f[ý\•]]z]ï^d^ï_`7`ÐaOaôb0bFa¥`Í_®^È^ ]œ\´[jY-VÂT QËOILÓIDó?O9Z3--Î(€"£#ã'f)¿+°,¦-æ.š/3/P/h/V/Z/c/F/y/û0Æ1v22…2¾2Û2Ð32î2l1µ190ý0®0¿0è1ˆ283'4D4î5U4À422›0ì.H+j(Q%J#! eø Œ é!â"â$&G(M*J+å-+.//‚0½1æ2¤3A3‰3Í44„515ñ6ß7É8ª9’:2::Þ;S<-=>m?ÕAãD)F¿IVKvMTNyO™PKPûQ”RPS S¾TZTøUV VpVòVüVÚVUSþS R|R!QSP!NKÎI0FßDCAÝ>?:4r.³(õ#î(Ö$3ë È!Ñ"k##E#B##=#s#i#¤$6% %º&;&³&á&û&ì'&ð&o%¾%:%$Û%%a%ÿ&ž'^(@(Ä)&(®('&©%"¹ #KoRiâŸrX„Þ ¦"#A$%& &ð'z'î((7(n(Â)|*U+h,w-Z.1.—.¹.Ä.ò/¤0d1ß3k5¨8 :«=A?tABìD D¾E–FrGmHWI"IÇJKK©KùL\L:KïKIðHÏGüGlGFBE#C)A><9Z6þ3|/-)®$; h:’g—OÌc׈ÝÔ§Ò1söªIÁ,Uth}Ríhõλ m ¤=à0}OòïÝŒ4r ñ ¸˜fºõ|Ë‚ÏÓxLû§ cxo´W !""Ê#d#„#i#F#C#ã$¡&-'É)ÿ,:.­1*3\5}6Ü7à8‚9u:w;v¤?Y?þ@H@š@g@?@>:=,þ+þ ýùýéýêýëýûþ þ$þ/þTþŽþäÿ0ÿ~ÿÑNu•Ãþ[²0ºgÊ—:½ø+Kƒ½Û„ù W n Q 3 r ¤ Ž 7Рê Äé!»"ä¸=™ÿ“ÿkÿ›ÿäÿÕÿöJz5ÿùCžT4B…±‰A2nžŒ`VfŠy|wY@=W€‘~Iÿù3]|¥ÝEUY7ã£\ ÿïÿ®ÿ†ÿkÿuÿ~ÿ›ÿ´ÿÝ>ŒËó÷ô䯤Œ}‹™Ãé1†öxÒúõ2JGeÄðÕâ/[!Ë®Ó0GÝ;ðͼ_†Ä¦´AÿÈÿ‹ÿ™ÿÃÿðÿÃÿ¤:ÿÜÿúFrdÿï-€VÿÜ `ƒo>(Tlk_<ÿöÿÙÿí!d—“t4ÿþÿÞÿÐÿáÿê.h¨Û ùÛ¹ª™sTHQVevާ½Õ×ʧ‹e8ÿÚÿµÿŽÿ€ÿxÿ’ÿ¯ÿâGcLÿìÿÚÿëÿ÷9Y}lÿák’nÿÕ&žÔœÿ´ÿñQPÿþÿˆÿVÿ·ÿ¶ÿHÿfÿ´ÿÆÿÄFÿéÿœÿújYÿôU‚@ÿöFŠ?ÿíÿë+{œm%8bznA ÿÖÿÔÿï;™×ï½~3ÿîÿÚÿÙÿÏÿÝÿú&Nn†˜¬Êü$20>FD:8.#Ø¢rJ(ÿîÿÚÿÐÿØÿÔÿãÿü.o¨ÞÓ¢N ÿôÿð'O”®CÿñÿëW³…ÿÊÿáiÔª!ÿ³ÿŸ_%ÿ¼ÿ˜ÿº%ÿÈÿsÿ¹ ÿãÿŠ`ÿ®ÿÔ1j_ ÿÚ(„w0ÿóÿúc¼¤?ÿßÿÒ2¦¹y*_‹ƒN ÿÖÿ²ÿÖ}ß!ñ¿~L&ÿöÿàÿÛÿûGi‰¨Ëü!15IRO=5! Û¤h5ÿâÿÈÿ®ÿºÿÖ,V’¾åФDÿÒÿ‡ÿlÿÿÎ BPRÿ¶ÿ|ÿŸÿüQ?ÿ¢ÿ$ÿRÿìqxÿäÿ;ÿ#ÿ|ÿáÿžÿ=ÿsÿØÿóÿÒÿÿyÿÚ ÿËÿzÿÕA4ÿöÿÔÿñYšLÿð Y‘„ÿÜ#›Ù¯*ÿËÿõnÈËw8}¶Í¥q'ÿÛÿ¾ÿ¶kãE^[!ùÆŒ`@AF\oœ­·¸¸ÄÍÌ¿¸©–z]A*ÿÿÿùÿü"V—Î÷07'Òeÿþÿ¥ÿ¦ÿÕ8‰»êІ(ÿ×ÿîuéØVÿ¶ÿ.é ŽÿãÿÿÅBXÿºÿŒÿÞ+ÿòÿ•ÿ†ÿ±ÿïÿýÿŸÿ‹ÿ­ JGÿëÿ¸+¥‡&ÿòs´[ÿæÿÏ!¶³ÿÆÿã^Øê•0ÿöQÉØ¥eÿÏÿÂÿÒ(ó=NY8ã¹–r_TYZbku|€ˆ‹‹‚yk\NA<4>Nw©á3L<,èˆ"ÿÈÿ·ÿÆ{ÆðÍ›IÿèÿÒðß7ÿ—ÿ†×-­ÿØÿtÿœr,ÿµÿ—ÿÄ2ÿÄÿ]ÿ•ÿöÿýÿÄÿwÿÉÿ¤ÿÅ2tÿ»ÿùf“oÿÔ/™Œ/ÿÃÿ¹?Ú¨ÿªÿç‚ùü– ÿÈÿë/’Øãà Qÿ±ÿ¯ÿÔ;£ø28@'æ³…cVHILU[^^[^^YTPTXflйù8ZnS<ú¨GÿÝÿ±ÿªÿû_Ä ë‹ÿÐÿ¨ÿõ•ñXÿ“ÿTÿìÆ(Ñÿ\ÿ{\Qÿáÿÿ¶0ÿÿÿ˜ÿhÿÇ"ÿëÿ‡ÿmÿ­ÿ‡ÿþo@ÿáÿÎu¨IÿÞÿòJŸšÿ£ÿ·Cò0Åÿ¯ÿÚeò·FÿîÿÒ[°îòéªYÿâÿö#t²Þ#þÙºiWM?4%"):BKVj ¼ß )<( Òœ\ ÿæÿØc º\ÿÒÿóSÈ%õ?ÿ—ÿpÿùÛRçÿjÿlÿ÷„sÿ©ÿ `$ÿ³ÿ{ÿ–ÿû/ÿÊÿZÿy1ÿÙÿŠÿÉ/N*ÿÜÿÄ0œ†+ÿêÿøpÆ…ÿÿÿ‘ÿ±j!IÈ ÿ›ÿÍw -éTÿçÿÊÿß:ŠÑ!Ìu/ 5b‹²×ìÿúðÕ¼Ÿ†nS?*)3IYj|‘¨ÁáòýåËW)ÿÿÿðÿÝ^Í1KEî‹,ÿÛÿß}Wcÿ”ÿcëm,ÿ\ÿc‰©9ÿµÿ±U^ÿîÿ~ÿ‘ÿåÿ¤ÿbÿ¡Eÿ¼ÿ³ÿîOvÿ¼ÿîYˆÿLjÄÿíÿ„ÿ·g Vê*ÿ²ÿÇ=ÕíŽÿÙÿåT¥æõ¯qG(.8Vp‹¨·½µ¶°¦–…xoqv‰”¢®¸ºÃ¸ŸuN- (\©7Cÿ­Mÿõÿàÿé?´8â'ÿ˜ÿ„ÿt+ÿkÿPÿë§ÂVÿÔÿ•ÿåUfÿ­ÿwÿÈ(ÿÃÿ…ÿ€ÿÆ'5ÿÌÿÁ*ˆ]ÿÞw¸fÿóÿÖ¢â…ÿéÿwÿ¨l5xþ5ÿžÿ” »¬AÿòÿÊÿë Q£åó³{S63,5DWaoŠ¢°²µ·»½½¸´±²­Ÿ‡u[3 &Fp°/J¼MÿñÿÓÿÆjÒ3² ÿfÿl&‰%)ÿPÿBÿéé‚ÿØÿ˜ÿÇ/r4ÿÆÿ’ÿ­7ÿîÿŒÿŠÿ¼ÿßÿõ;Mÿñÿ«ÿó`‡^ÿÖ6¨°aÿûÿÜ=¹æ—ÿðÿ‡ÿ³c%l^ÿÈÿªÿò„ðÿÑhÿþÿæ2|É÷÷Õ¡rQ3-.>AQq•¬¶ÂÅÇÄÄÀ¼²ª”rO8+@]ˆÁðà…)ÿõÿÛA˜ÿ  •ÿùÿ§ÿµK(…-ÿfÿIÿݤè–ÿ ÿ¾$gXÿöÿšÿ©ÿñ!ÿ¸ÿpÿ¤ÿóÿìÿÇZ ÿÒÿÐt›GÿîZ³¾ZÿóÿéAͪÿÿžM‰8ˆÿÓÿ†ÿÔQÒצ`(ÿÿI‹ËíýâÄ›yfZYOSe€’œ¨ª¥ž¡¢ ”‡oM5-:@SkЍÀàÝÆ†6ÿÿÿà=’ã )ínÿöÿ£ÿéLž#$ÿXÿMÿø°«ÿ²ÿÉobÿÉÿ²ÿé#ÿØÿšÿÿÒ ÿâÿºLHÿØÿÚ>˜-ÿù l¼¦KÿóÿìPÈù®ÿŸÿ®C÷T8ÿ²ÿÁ/Ëß³†O!3eŸÐáåÌ´—mWPUfp{Œ—™”˜”†qbWFCMg{‘©½×ÙÑ¢b%ÿøÿÿUÓþæ±TÿãÿË ¢Lp2ÿ|ÿeÿð­ö±/ÿÆÿÐ$ej+ÿàÿÈÿç4ÿþÿ¶ÿ§ÿÉÿþ ÿÓÿØÿìMNÿ×Wˆv#ÿìm°¤Eÿíÿá6Ä Ì3ÿ¦ÿ˜ÀMFÓ#ÿ´ÿ¶ÿôb¬ÁÄž}V+!Jw£ÅË˶¤vhbdaep|€„~lZT\bs‡®·À¿Å±‰T Y‹¯ÏÄ«jÿÝÿÐ*Ë>WÒÿtÿ}½ÿ¬ÿÐÿè2wo.ÿðÿÖÿõ$4ÿÝÿ¸ÿÕ ÿðÿÄÿÿÿæÿò7e;ÿýÿïm—^ ÿù'z­”EÿöÿóJ¹ó½<ÿËÿ§ž7ÓQÿæÿÀÿ÷6´»º™uS:<Ca‚¢ºÁĸª™Žƒsf^ZOKNUUZew‰™§¯¼»¶ž‚]3 <lž¿½¹QÿßÿøQÍ?5Åÿ—ÿœ±ë¬8ÿßÿî=svL ÿêÿô"E0ÿûÿÌÿÅÿôÿÐÿ½ÿöÿâMY9ÿú:‡V.t¯§Xÿí*¡ïärÿãÿ£ÿÓhú.y ÿÛÿÞ$d˜¸¶·¡‡hKFNl‰£¸¾¿µ®¡zeS>79J\q„’¡¤¤ž•†h?%4^޲µ®ŒiC tñ/ÿ¯ÿËIÅæ•ÿâH„x<<: ÿÝÿÐÿä ÿæÿ¼ÿÄ+ ÿð/[`,!^‡‚S#>‚ª—V FŸáÊhÿ÷ÿ´ÿâSÑè”-ÿðÿ÷S|•®±®—}fVY^pƒ“žŸŸ™“ˆ{nb`bmz…ŠŒ”—–Š~lVE5@]ˆ­¸µ—~Z& ÿþ+Õòƒÿ²ÿÕ;ªÎ“3ÿïÿþ?klIÿúÿý #3$ÿôÿÌÿØÿúÿüÿÚÿÁÿÓ =_O+1b…Y+:q  s7(zÃÙ”ÿÈÿÈ) îõ¨U"8Yz”­³´ †jUQS`kv~„‹”–šŸœ•ˆ|yywm^PAI]…µÍϬ‡`G9:€ÕìÆ\ÿèÿ¾ÿíY­³oÿöMub-ÿãÿÔÿêÿþÿçÿÙÿÖÿàÿý ÿüÿú IR<Cv„iB(+PzŒf17v¼Ä†%ÿÜÿã"ŠØàºo>/+D\z•¦¶±¡†qdVW^o{…•šŸ¨­®¨¤›’†yjWKBGNd†£¹³¡bM995VžØó½[ÿÑÿýW©·{1A__G# $1ÿõÿÞÿâÿû ÿùÿÝÿÛÿäÿâÿêÿ÷ÿü %?B'*QebXF9<DZ{‡vP%%[¢Rÿâg¼Ü½˜mSQSdq‚˜¥§ž›|omyŠ“—›¡¥¥¡˜˜€iOFKbxŒ¡¢’u^TQXR^z¦ãê¹] ÿû&{¹´x.4UgT3-0,%0=ÿñÿêÿùÿñÿÝÿáÿèÿÛÿùÿÿ8J16R^WB33>VmymH29b›²›W ÿóf¥ÀÄ¡~`OU\p†—Ÿž§¥“~sut|„œ¥­¯²®¦š…uh[`tŽŸ¡–ƒn_\Xai‚±ÎبU4z®µ†K&2Xd]O><8"*8-ÿáÿñ ÿñÿãÿÜÿàÿâÿÒ  1G='*BTP@6:L_^\n||gC5N}¬¨o)H…³¸§‚lfeq~‰Œž¦¡“‡€xzœ¦¬­±®¦—ˆ~vy}‹ ¬ªšŒ||zytyŠ¡À¹‹IFŒ¯žuH9I`lYBJUN7 !9/ÿðÿåÿýÿÿÿàÿÜÿáÿßÿÙÿÐ %>KE/#2N_\H8AV^cmt{s[GAY¬¢o8M‡µÇ¶¥{vyƒ„ˆ“ «®®§Ÿ—“’’”•––”’‹Œ‘𢥍¢™Œ~vstos–¶¾´ˆI$$T‘´©zWIQfkcSGPT;!(;;ÿøÿô ÿóÿÜÿßÿêÿâÿØÿØ /KXG11Fdq]B>M`noikpyuZJY} £‡X02R‹·Ç̶ ˆŒ‰Š‹–¨¸Á¿½³§˜Š‚€‚}{€‹–¡¬°³ªšŠƒ}zwvpw©¿±ƒO-=m£¹¢yTRfssbONRQC#,GE)ÿöÿøÿêÿèÿêÿìÿåÿÞÿãÿþ ( =Z^M:6Lgm`PIQev}ztnZQ`›¡†]>6Tz¤ÆÌÅ® —‘’“ «­ª¯°­ „‚…}z‚“¢ª­ª«§š’Šƒ‚Œ™§¸³ wE09f–ªœu\U_mmcZSVSB/#(>F+ÿÿÿãÿéÿúÿòÿäÿáÿäÿæÿû 1&+F]^I35KfsfPHVr‰†xx|~wcWZp˜lI=Fo›¾Ïƺ©¢Ÿš—˜—މ›£¡™‘“ŽŒ’¦§ž•–›™˜Ÿ£š”˜§¿ÇÁžlE0Dj‰hQXnsk\QV]YJ3'4DE1ÿü ! ÿíÿßÿñÿñÿÙÿÝÿçÿâÿú'*%#,AQSH:9NfmcQJYr}~|yteY]pˆ˜’{aQ]x ÃÐо³ª ››š’ŒŒ’–˜–““•˜šž¡Ÿ—‘”˜”’˜š¡±¼Â²“mNK\|•š‘|idq~vga`c_L9-2DN=""'ÿüÿñÿôÿýÿþÿçÿÓÿÜÿéÿÝÿþ (1(%8R\K68KcnaMGTi{|tvy~zj]Xgƒ›£”}li€¡¿Ëü°¥ŸŸ œ•‹Ž’–•–ž¤¢›˜–“‘“”މ†™¨»¹§ƒ^OSr–© †xv|…ˆ€ociqjV=06DLE-%4/ÿ÷ÿÿÿÿÿìÿÝÿØÿßÿåÿØ 13-)0FUO@:BTdh`TP\nutssvvrj__l”˜‘‚tvˆ¢µ¼Áº±¤˜ˆ…„‡ˆ™¢¡¥«¦œ˜–‘‹…†‰’™¡­³¸«Žq_dr†•“nnw~~ypifkhWD:<FLH8$%-ÿþÿþÿÿÿíÿÝÿÞÿæÿåÿßÿØ &(7>:5;FNNIEFQdohZW_irsnklsvpf^bpƒ“”Œˆ”¢°³±¤•†zy}‡Šœ¥¤Ÿ£¦¡™˜–ކ}Šœª¯±©žŽxox‰‰{k`bp|xkcagjdUA8?MPF8*#"ÿþÿýÿìÿÞÿÝÿèÿòÿèÿÚÿÚÿüÿü (4;?DIORPLFHYgf[UV^jtvsmlmopllq}Œ–˜‰ƒ„™£¥¤›Ž……Šˆ‰‘™™–šœ™’‹…‚‚‰“› ›“…zrhjx†‰zutwzyrjilnh[K><GOH7*$$& ÿ÷ÿéÿéÿòÿ÷ÿôÿçÿÚÿÛÿóÿðÿðÿù#3CLMNMQRLHMV[\ZXZbpz|thagt{}{y}†‘–•‹|rq}‹š¨ª¢•ˆ††‰‰ŠŽ‹†ƒ€„Ž–˜Š~pfcgjotwuv~†Œ‰snpuvoaRHFIKF9,&'('ÿòÿðÿùÿúÿêÿáÿÛÿÙÿöÿùÿþ  '2=DIJLLJIJOY`da]]cmy|tifjmrturt{„Œ‚vpsvŒ•—‘ŽŒŠ‰‡†……†‡ˆ‡………‰“—‘…zoiipvyzxyz{yvqmmpsqi_UKHIJG?81.,)$ÿ÷ÿóÿöÿ÷ÿóÿæÿÚÿÙÿÚÿÕ %('%'/;EIIHKNMOW`ggc]Y^mz|rh_[akroiho|‡ˆ{ulkoz‚‡Š‹ŽŒ‰‡…††‡‰‹„{y{yx{€‚€~}€vh\[alsqgZSPMLKHB<<=91)! ÿûÿóÿ÷ÿùÿîÿßÿÕÿÓÿØÿÛÿÒÿ÷ÿü4HOA+3IYbYI7*/@R\R<%".Hm~dK=;GKSaih[QIFFDBACDJQZcggfkmibecVG=@IYgs€ƒwvsjc`cfeaYOFB>1)-521?E7$#7JOD6,,10*!ÿöÿñÿõÿöÿîÿàÿÔÿîÿö :KB*.JafdS<05I_eY< -Ni}tZ=08CRZ^hjaRIGEEEFHKMQWZ\YRMOV[anrj[QMJOXgu~ƒ{o]MCGQ]aZM@;:3../&%8HH7!.BH>+%'(% ÿ÷ÿíÿéÿìÿòÿïÿÛÿçÿìÿÿ4LJ,CfxwaLA>LfsjI$9VicS>16G]ihg^XK6'#.6CR[_YRG=6.*$(/@Oay†ˆ}wl[MEGFMZj|kR<03:BC>=80)&&"#.8>8-! 7IE1!ÿýÿùÿôÿèÿåÿôÿýÿîÿäÿð 2JN<!Bs‘ŠqO<EZtŠ~T ÿÿ>^g`E( 1Ur}{h\M=,(6EYbbRC1! );Maxˆ‹‹€nXI=+'.Gd|Ž…oL.!"/68842.*('(%%*198()<A7' ÿøÿóÿõÿõÿæÿÝÿêÿùÿöÿÚ3RM2#Jy’ŠeD;LpŽ}Q =Y^P4 !+KwnR:*($+4CT^aYTF2%1?LU\alsusuwxsqcI0 $9Un~wiP;,"2FOH5)#'4DC,!3>?-ÿÿÿøÿýÿöÿèÿãÿàÿÕÿÏÿÕÿßÿäÿçKP4Ax’X3%@n•£ƒO !OuzU%%U„ª¢|D"".BYjwrhQ;% $4CO\cif`XUTMJLYj|ŽŒ~_B*CgŽgD"%BUTA4)"$&-:=2 5F@'ÿíÿèÿïÿúÿ÷ÿêÿÝÿÒÿËÿÉÿÆÿÇÿÍFI' 6u”{D"&?j’yL&$@gzf:ÿÿEu“‹yR$7Retm_C(2HXcdgbZPHC;89<865?Ne~›”ŽwX84Yx}a3ÿøÿü7KWL:! 3NP< %;A, ÿîÿâÿëÿûÿõÿÞÿÒÿÎÿÈÿÈÿÍ>Aÿóÿð!eŒ{A?mˆm@#$Hz‹m,ÿòÿçL¥›f5=kŒŽŒh7ÿÙÿÍÿÉÿä(Ok‚ƒodUA1&''.7>?;644CVs£º¸®‡W(ÿýÿûBs†„X"ÿ÷ÿÝÿî 6TVL.Gb\7=D/ÿåÿÝÿó ÿóÿäÿÚÿÓÿÓÿÔ8ÿÎÿÏU‚t: 1jrZ@3>ZoqPÿùÿü'Zz{[8'.Qt ‘xIÿ÷ÿÑÿÎÿÜ(Jiu}rhVC70338@IQTXUPG=606CYj™®ÅÀ±Eÿèÿëÿþ*Xs€d9 ÿèÿì)Wg_5ÿìÿú$JTH#ÿÿÿô(7#ÿõÿÏÿÒÿïÿÿÿþÿòÿÞÿÏÿÊÿÍÿÀÿ¦ÿá>wo:1foE,2Mnƒo:ÿßÿö/mˆl5ÿöa§×Ï·v7ÿËÿÂÿÃÿó.nžª°”pD ÿúÿü-G`p}~}tk_SJ@=AGACNl”·ÕÉ«hÿãÿ¿ÿÙFŒ ŽIÿØÿÊÿ÷6nŠg(ÿëÿËÿæNiPÿêÿÞÿù'ÿÙÿÁÿÈÿÝÿóÿóÿâÿÐÿÄÿÃÿ»ÿœÿ op8 3m€jD+6Zz}d2ÿö <[T.ÿôP”ż—RÿøÿéKyš¶± yW2ÿíÿÞÿäÿçÿõ,BUfy…tbN?95$*Dm›¾áÕ³gÿØÿžÿ©ÿØ*tŽ‹Q ÿÝÿÑÿü7dpIÿèÿçB[LÿèÿÕÿëÿÙÿ¶ÿ¸ÿÖÿïÿôÿåÿÊÿ»ÿ’ÿµ Yn?1j„k:!0]…‹b&ÿýÿôUpQ ÿËÿÆÿôSµÜÓ}ÿÒÿ¦ÿÈÿüS§ÜóÔ‘NÿîÿàÿÎÿÖÿç"-1468ANas}„xjZONK=+#9k°ä å©9ÿºÿpÿWÿ£l¹ªiÿ¶ÿ°ÿØ*v‡cÿèÿå8\OÿáÿÏÿç!ÿÿÿÈÿ¬ÿ¶ÿÖÿóÿòÿØÿ¿ÿ–ÿîJ_5ÿöXmY0!Kv~^(*O\<ÿýÿÔÿÝdšj)ÿöÿÙÿú-zÂäõΞ]#ÿèÿïÿû.DYelhdWH8*##)4=HS_ly’ŒrY=!ÿøY¥Þ î©6ÿÊÿÿkÿ¡ÿü]Ž^ÿÔÿÐÿû>f\6ÿçÿö-[TÿÝÿÀÿß ÿòÿ½ÿœÿªÿÒÿëÿçÿÊÿÍ%Q,ÿñÿíLfI@ftY'7\X%ÿæÿ·ÿÐ"{¤|2ÿãÿ¬ÿÈvÝ/úµLÿåÿ¨ÿˆÿ­ÿÖS©³µ£–ƒr^H5%ÿü$@^§¼Æ·§‰sOÿïÿÄÿÖdÔ=ø‘ÿfÿ0ÿEÿÉS°ÕŠÿ¸ÿ—ÿÐdwGÿÿÿÔÿð0^RÿÈÿ¸ÿÙÿäÿ¨ÿ“ÿªÿÑÿêÿÜ 8%ÿðÿÑÿÿDfV(EejZ;"#CXC ÿÒÿ¾ÿØOW(ÿèÿÃÿßlÀâç¬m!ÿÞÿ¹ÿšÿ³ÿà%a‰ªª¥‡d@*ÿ÷ÿèÿãÿåÿéÿäÿâÿêÿôÿ÷ÿ÷ÿõ:h–¾Óääïܸt(ÿìÿ¸ÿÁÿÜ(ƒÉÛtÿåÿmÿSÿkÿÖLŒ†0ÿØÿ¬ÿ½ [wIÿüÿÒÿä#VFÿÀÿ«ÿàÿÚÿ¦ÿ˜ÿ»ÿëÿù%ÿÜÿÉÿè,c\1EooQ:1?Q`Eÿÿÿ¿ÿ«ÿÔA2ÿîÿ—ÿ†ÿÀDÇ "Îeÿìÿˆÿiÿ^ÿ˜ÿÖ)€¸ÛÍ¿˜oCÿþÿþÿý!4>EX_ZA" ÿý "Lp’³ÒþôÃgÿþÿ¡ÿHÿOÿ~³<à ÿ}ÿÿÿ†Dÿ×ÿ–ÿ°ax@ÿïÿ¿ÿÞ#P=ÿéÿ¢ÿ´ÿñ ÿÎÿ¢ÿ©ÿÑÿôÿÒÿ¤ÿÇLW:0XhL()?YV2ÿúÿÁÿ¹ÿé!0ÿ¿ÿÿÿäcÎËwÿ¡ÿ{ÿsÿ¨ÿÞBLQ2ÿßÿ¶ÿ”ÿnÿXÿDÿLÿ]ÿ~ÿ–ÿ°ÿÏÿî/>XbbH'ÿäÿÖÿÒÿØÿÐÿÒÿØÿþ4uªÆêܽcÿøÿÿ,ÿ/ÿoÿ÷yµÂaÿÝÿlÿ2ÿiÿÌ/W-ÿåÿ¯ÿ»Ni;ÿðÿÉÿÜ@ ÿ¹ÿ“ÿ¤ÿÔÿ÷ÿâÿ²ÿ‘ÿ—ÿÃÿÇÿÿ¤ÿñAQ1(FO@ 5Y_3ÿêÿµÿ´ÿé/Aÿÿÿ ÿbÿŠÿó}óû¾3ÿµÿ{ÿqÿÆ&ˆÏÖÌ–`3 P¾þ;sžÉå þòéгƒRÖ˜b,ÿæÿ±ÿ†ÿÿ¬ÿëUªó;/~ÿÎÿ<þ×ÿ ÿ}0àõTÿ§ÿBÿ;ÿ¦TCÿ÷ÿµÿ²ÿüPk=ÿòÿ½ÿÚ ÿçÿ¢ÿyÿÿÄÿÛÿÊÿ–ÿrÿŠÿšÿ•ÿÏPB1KTB''YmGÿùÿ°ÿ›ÿÅÿ÷ÿùÿ¹ÿHÿÿ7ÿ¹8€“FÿêÿÿUÿiÿžÿì')ÿÀÿƒÿyÿ„ÿÛ3ÅTÈ„;° !>-æ¬f-í¦Pù›Bä‚Ádÿøÿ›ÿFÿÿÿþíþöÿÿ`ÿ·ÿÿ@.ÿôÿxþõþ¤þoþ´ÿ/ÿÆCLÿ†ÿÿ ÿ>ÿ­ÿèÿ­ÿµÿó@_4ÿçÿÂÿÍÿýÿáÿ™ÿ}ÿ•ÿÌÿéÿ¾ÿ‚ÿrÿ”ÿ» 6:&.MR?"(Jmb"ÿàÿÌÿé#ÿÚÿwÿ.ÿTÿÔa y0ÿíÿÔeÝO‹¦€A(/µWYQdht› ¥ ª C ½ Ä Ï ‘ U î Š  § ‰Ù,„æM© nëoºu1ì’K '…ûoÛܱeÿéÿ¯ §5vwÿÎÿoÿ—dbÿÍÿ¹ÿõDa6ÿáÿ§ÿÎ ÿÝÿ—ÿxÿ§ÿãÿßÿ²ÿ„ÿJÿ—ÿð  5@* ÿ÷0SQ!ÿàÿºÿØÿþÿÁÿUÿÿ+ÿ’3ÿ¯ÿrÿ–ÿì–9ÐM á,{!ä ;Ž Ô  'C<6Ô_y‹KªJ¿8s ˜ ‘ ‘ • ¨ÀÄÖÜ6¼šv]1è—4Çt'+F¯0÷Ôwɶ™Çýàn©ÿÞÿwÿzÿÖ ÿ¾ÿzÿ{ÿÄ-Wÿÿÿ¼ÿðÿøÿ¬ÿcÿpÿ¬ÿÓÿÐÿÿÍÿû24ÿùÿãÿæ2F) J­õîÊŠý&é€K[ÉÓÀ¥pO9 w Ô o “:maI ÓŒRò’Ý ïâ¨z‘²´q? ç½w9 â  z t e c >  Ô 1 Á Hý»á . º U ™ ¹  <ð3Â#oha›N1&ÌYÿèÿÏkCÿßÿŽÿÿ½ÿ÷ÿÎÿ„ÿcÿwÿ¯ÿ×ÿ¿ÿòÿåÿÌÿ³ÿ°ÿËÿÞÿÆÿžÿƒÿ‰ÿ¦ÿËÿØÿÓÿ¯ÿÌ-ÑaÍþGå¡T’tÊì3øMž 1 ° tKk¯ÔØN s/ã…,ì Ç!¨"#,#™#³#å#ê#ÿ#¾#w"š!Œ ÀZ žw½œMì­FäãÇœiI2PˆÉòä@m ¥ 5 é ñ ,gh&Á‘§!œUÿÎÿ©ÿÎÿÌÿ¤ÿ@ÿÿ1ÿ‚ÿ–ÿ|ÿLÿ>ÿxÿ¾ÿÔÉ6£1ì­}.ÿô-="$0Ʀӽª›Á6 h F r p Q u ì H  ùD—á‚-è¾"$4%y&™'=( (²)Q)ì*Ž+V,;-+. .Á/-/G//“/µ/†/X.‘-ˆ,*Ý)›(o'%¬$"N ãÌ'hÅøx/IR…¸S–âΉäc™Ï‘:xÆX<4 Ò  äÛK? ´—¤NÿúÿÚÿí ÿÕÿ˜ÿ•ÿ»ÿä:éâC³ÿìÿæ ÿÚl’à”´ ¥ ´ ÏKjÕL¡¡êª›†™vP!|$¤'¹*ã-r/Ê1?2’3n4~5c686ê7£8T99¶:T:::f:R:+: 9¸9n8«7›6Q5C4W3|2…1m0.¤-^,h+¯*Ø)â(´'¸&ð&´&{&·&ü'ƒ( ())-(ù(''m&O%)#¶"] ¤ªŒ˜è„ÛÔ#+ i $ˆÙtÅÀESÂWÿÛÿŠÿNÿLÿ} Ð  Z“yy™X2BùÌ>ælû ( @ ÌŸYÔš>Mv5Ù;e6!k#À&Ê)Å,í0368Å;L=>È@AjB…C…D1DëEeEæFF:EôE‹DëDoCëCeBÄB1A\@??+>_=æ=|=CâC¬C`BºAÍ@¿?Ö?I>Â>¼>Ê?H?Ï@~AUA«A­@ß@)>Ç=2;N9­7ý6S4F2/j,Ù*'R$ ‡§·ï- ƒ ; ” h XåÚàÙ„s¹!g(‘³ Ž¿?¢Lƪµeã[û%¼! $&ú)¨,À/0õ1ª262s2´3É5H7Ý:Š=@PBûE’HJKMNAQ$SWUTVŽWäX—Y%Y?YoY|YžY˜Y“Y0X¡WÕW4VvU¦TªS«R—QXPsO×OÉOÍOÙOÂOJN†MÑM‡MMbM LqKÐKbK?KK+KKK®LL¡MPM†MjL™KóJ®I3GAEfCwA´?º=µ;8E4ö1Ç._*õ'a#{ %Fg~-ÙÐáÂh¤Õ î 5 o[†ñ,¢*I'{$U!nÐ@úk“ƒB‰e ¦$'£*Ð-Ò14$7”:;¾ö@¤CYF%I(K×NjQSÍVæYÌ\^e_ö`¨avaÁaûaõbb b bba¿a?`Œ`_a^«]Ë\ä[üZøZcZZQZ¢ZãZþZYËXøX–XhXW£VèVkVEV¢VùWvWàXJX±YYÂYüYëYXkW UƒSsQmOHMIK3I7F©C×@O<¯8î5r2.Y+'ö%Þ$ "ã!¦ e \³‡$oêQ  èr96Î3ö0Î-ï+m)÷(»(!';&¯&?&=&.&ƒ&o'ž)¢,ö03W6B99<•?ËCEFrFÙGH+H¹IüK˜N#PÌS­V>X·[C]á`¾c.euf¨g•g¬gàgÓgÑgÒgèhhhhgÔgxfðfˆfeid¯cîcKbšbqbŒc)cØdRdžd8cƒb–b a™`þ`F_I^Õ^Õ_¦`a|bQbßcWc™dd!côcbC`×_W]e[wYeWcUfS QwO$KíHRDm@é=¼:7˜4‡2;0O/).,ß+7)'$š!ê«p—]'EµC_@[=:7‹64Á432‹242A22I2C3¤5æ9H<'?&BEHHÏK÷NêPžQÞRVSSáTvU“VúY;[¤^Z`Ûc6egºjkÔm‰nJnÉn•nxnAn&n&n1n>n;n%nmím³mLlólek¸jñj#i iiXiÜjïllámzm?lÀkãkZjÍj!i]hOgágéhìj k]l‹mBmÔmØmõm„lïkãjùiµh[f­dôc*at_Û^~\Ì[X*TÅPÔM8JGDMA9>¬¾>n>v>,>e>¡@-B\E_GÏJxMgPSÓV‰XüZg[œ\;]]Â^<_` aÍcÅfhIj9lmlnépq0q»rqáq¹q†qrq}q•q¤q q~qcq+pùp“p'onnmžl«l.k¿l2lònJo©p³q~qwq;p”p'o«o!nŠm³mnmnšoÄq+r{sKsùsÞs¸ràqëp°o«nšmyl5jâi“h\gFf\e+cúaÀ_[X#U RVOíM0J²HÄ:¥5ê1e- (ÉfAdèbž`?]ä[ÐZLXÄWÎVìV}UøUÊUˆUÛVQWX¹Zs\^`Xb”d˜f?gþiDjdk kÂl'l_l¤mm÷o'phqxrrPrgr´s.sËtFt—tˆt[tsÿt$tstÑuutâtctsXrŸq—pnoRn;mÃmmmün¼oüq;r6rþs's5rèr¬rlr+rrr}sHt¢uôw6x[yyÐyòz yaxyw#uétÞts`r¶rqipÉpIo¶o6nlµj¦hŠfrd›ca†_Ý]É[ÙZ˜YBW„TçRNÒLHäE.@Î<}874$n[mÂl9j©hçgQeûdŸc©bÑbQa§abaGa¦aöbc0d>e‚g hµj*kul‹mÎnÄooòpjpšp•p©p÷q¸r²s‘t%t,t sÐsÆttgtÐuu"ut×tÑtøu5ubunur¿r6qlp}o†n‘nmÉn n%n»omp˜qås+t\tìu?tùu tSs$qLo‘nl±k´j«iÃh×gög>f-dÅtFu}v1v™vMv ugtÊsþsr\rr*r?r‡r˜s"tufv|w]x@xËyAyby›y{y9xªx(w—wvŒuÏu tzsîsKr„qpØp;oôoÌoŸon©ndnŠnÕo>oƒo•o’oyoso{o–o•oko$nßnÈn¬oo¼p¶qŒr6r´s/sÔt¢uœvCvÊvhutfs¨s[s7sr½r.qoq,qor*rÎs rârcr(qâqžqpZokndmºm_m‰m‹ménRo(p$q=rdrñsrœrˆqõqo n l–kwjÖj1iÃi5hÞhÐh¦hs'tpu2u•uDu t€tsNr^q¸qvq²qÄrrHrýt uYvkw5xxoxÈxÜyxÿx®x(wÌwrw)v¤uãtütKs—rÆqàpìp$oyo!nðnµn$mm&mm+mem†mˆmfmXmtmÅn)nknwnSn/n8nJnÖo¨p£qbqârAr´sXtEu[v=w vþvvu†u tªtAs¡rÉqçp÷p³pìq¯rYr¨r™r;r"qúqÔqXpÁoÆn”m–lôlÓl—l©lµm"m«n~o‡pp#o›ofnïnfmgljâji¸iwi…iai—j(jÌkr‡s¼tbt¬tQts“s)r‘q±qpçq2qIq¥rrÔsÙtýuþv§w:wjw–w†w‘wWvçvavuÝu˜utks£s rnq¬pØpo`nÊnƒnvnJm¶lòlOkýkÓkäkâkÜk¥k¹llÜm¨n?nnnn§nÐoXppëquq¿qörSrßs¼t´u™v~v¾vvuìu°uHtjsUrAq=pÿq2qêr}r½r¬r\rNr/rq…qp nÔm¡l»lDkËk“k@k8k@k·l€mm@lÞll kãkhj–iµih¿h hÑhÂiiËj½kirws‰tt7sÐs{rórƒqîq ppbpÎpýq…r/s8tUuivjvùwfw]w`wvÆv9u‘tòt’t>sÇs&rrqÆqCpÈp,o†nÜnenmòn2n%m€lyk¡k%jãjîjÞjÐj‡j¢klmm¹n,n>nQnhnŠnûo¦pbpáqk¢kj¼j8iíi¨iéj‡k3kŒkbkjžjj–jAi·i.hàhÇhòhÕi*iâkkóssðt6tNsÚsjrÉrCqªpËpIp-p™pÆqTrs)t7u+v všvåv²vŸv+u”t¿süs@ržqðqpt¯u umu†u‡u$tÈts>raq³qiœiµi…i:hóiDiÅk%lÉn¬p&qŒs1tÄvnwYwíw”w!vwv u×u¯u‰u7tðtÍtÌtàtÀtqsÏsruqëqšqlq%p„oåoozo˜o¼oµocn¾nzn´o¤p“q’rhrùspsÑt…tátÞt\tssrzqopƒp:p6pÂqTqÍqôqîqær@sFsâs•rŒrqApIo#mõm lruõv(vuv¢v©v‘v‹v¯w w¢wÃwxvduasùrgqoöoHnqmÈmlÅlÜmFmwmmÑm¥ml'k7jióièj)j@i›iii“iÙj$j”jÊjªjwj]jÎkXl¤n;oýqOr}sÜuLvûxxÇx}x wEvÀvVuôutþtŒt@t6tFtCts¡sr–rr”q®po³nöwwkÝjÍjjjCj9i]h§h´ifi×jek k™kèlDlÑm©nboƒqrˆstNu0v4w™x„xþx„wæwvouüuutŒt6ttt-t8t#sÈsOrÙr€rxrÃrËr@q]p¦pSp]ptp>onŒnnRo‘pÈqûrØsit t¨uuüvuÊu”uQutítt¡u#uùv­vûwvÀv3vv³wQw#veuïunutXsargqžwÞxx¬y;yŸy²y¼zz„{L{n{ y£xPv‹t–röqÍq/pq}qªqÅwºw—wlw^w"v´v"u¿uFtÅsìrÙq°p¨pooAn¬n,mÞmÃmÔmxl¤k[ji:h¢hÖhùiåjòl¥n}pSqýs ttOtrs½rßq¢p‰o•n°n mVlõl—l±låm|n?n½nÁnunqnwnnnVnSn!mªmDmJmQlÿlzlsÝtas8q’olÉj©h…fÌdîdcždsemghŠj kŸlÙmÿnsn²nxnIn1n-n“o=oópapˆp¼pËpÐpÈpýpÕpoaoodoßpvpÊpæqqq3pÕpo*nÃnåoo]oeo›oþpÏqÙrÆsVsƒs·sítXt¯tÍtÊtÒuujuÒvvuáuªu¡vvvw3wíx¦yey×z zz~z½zÔzXyŠtîsìsrfrqÊqªq~qGpþp³papJpzp¤pŠp$o·oOo1nánfmGkÕjIhïhDg·hhPidjŠl>noÔqsqÿrbqHo·myk®jhKfìeweef)gni j]kˆlÜmÓnÌnÙnpmtl›l)káldm)nDoo×pâqõrÞs¦tÇu>utHsôsôt"tRtDtsás›s_rÄqÍpÞp=p$p-p_p5pCp”q^rIs+sÌt'ttÙu]uÉvvv:vovÆwwiwpwa_ä`aBdgºlq#t¬w~xªyåzx6x~xýy"y'xøxÑxÏxöy;yyŠyfx©wÙv–uZsærmpðoIn.m?mmn o!o²pHqrsGttu’vv7uÆuDtÑtËtËtrsíscs;sRsât¯utýt sqqÇoÁlipiÎlrmÅoqprq„qºq pñpDoáoåpDp_p¤pðq«rÌsÍthtVt>sÃsTrÂr2q¤pýp¯pŽpòqIrst#u;vv²vÏwvfuÅtqÏo lHjaihÝhhñiujªl-mƒnÔn‹mejúh¹fèenedÑeˆeòg¤ióm6pzs uNvmPl{kµjÄj.i¶iüjRknlºnSoãpõqÇqÞr@q•pÂnIk>ghc¢`ñ^ï^_]p]°^ _àbdqfÍgÓhgeõdèd'd*dUee“fØhŽkm¤oÓqšrTrérës4sr¨r4rrirºs8sÏtt?sÇsErIqDp nßmÄlkkÎk–lrm‹nÉoyppÊq´rµspt&ts–ršqÒq/p¹pKo©nün=mìmðnXnúnÔn1lj*fÆc^;Y—Zw^`bc>dÉe´fIfnfÇg!g|gæhQh×iajjêkdkŠjñj]iQh-føeôecýcEb’bÏcBd¼fdh]jTklflFlk›jngPc“^åZ:VÛT\S£RtR­SUWZõ^2`—bjccÉd dœe2eëf£gg¸h›ièkal¨mªnnZnNn|nVmÆmGm+m•møn™o^oápoÜo·o/nm l£k¶j¤jdj•kÁmn[oKppãq²r“sswsr)pÖoÎnünImªlælk/j§j†j¢jÞj"hûf7cy_AZßUlP9OëSÏUîWöY(ZÈ[Ó\{\½]N]Î^&^r^Ñ_V_ò`“aOaŒaˆ`Ï`^ô]¥\K[)ZBY7X‡W¸WêXzZ1\^3`Ua’bYaûb `Ä_D[ÙWÜRôMøJ\G°FøEÜF-FrHvKN§R4U`X Z \]|^ö`aGbbbÂccud deeNee†e®eed©d’dûeeffÙggëh&h¤hÙhÓh]gÎgMfÍg gŸh÷jZkËmmïnÞo~p8p_puoŸnglÌkj„i¯hîhföeÒdôd†dc«b"`L\äYhT¥OÝJKDÜEyI KïMóOP QªRBRsS SS¶SÖTT’U@UôV¥VÌV¿VUMTRÅQ`P1OENGM‘L“L˜MNóPìS*U]V—W_VëVäUlS§OùKÓFÒA¶=õ;::9!9ˆ9Î;Ï>OBE¦IL1NŽPêR¾T˜VW´X½Y€Y¢YºYËZZ—[[k[³[Ê[ô[Ù[s["[[„[÷\¦]A]ú^§_—`çaöb‰b’bžbÈccÛdÂf&g¢i+jk¤l‘lûmmhmkæj`h‘geíedbía`#^é^ ] [ùYWSNÎI‡Df>µ8ý:A>N@˜BmC@D­EFFFtFÃFÚFåFüGkH#HíIŸIÂI»IHSG'EáDˆCQB_At@Î?Ì?¹@+AåCÈEîGúI"IñI–I˜H#FWB»>¼:5>1·.â-ù,ì-[-¬/1Ù588•;Â>˜@°B²DAEæGdIJWK>KK°KäLbMMßNOOBOOOUO#O'OƒOåPuPÍQŒR…TUûWœX¡Y(YÖZ±[®\ò^"_–aFbêdredf0f]fÁf\e¼d2bp`Š^ð]Í\ñ\Z«YWkUíTÊSFQ•N¯KšG1B=F8/2»- /*3 5D6á7|8½9Ž9ù::Z:¡:È:ä:ñ;W< <ù=¢=«=“<É;ú:³9^7ó6”5„4“4333z56ç8ù:ð<<ô<¶<Ì;g9®62-v(å%˜"ç!ÿ ê!@!„#S%y(¾, /L2A46—8+9Õ;K<ü>#>õ??5?S?¶@dAAÄBcBØCWCC•C…CžCâDDƒD­E„FÏHÖJîLÅNOPHQ¨STªV2WîYú[Å]N^^¡^’^Æ^$]0[UYMWIUžTŽSÔRõQ„O¨NLdJûIGCÐ@V;™6µ1K,;&ø!J$'õ)ê+E+À,É-Š. .>.‹.Ô/)/u/’/é0®1t21ð1½0Û/ò.š-<+Í*])J(]'ð'G'q'ê)h+,þ.Â/Ô0·0 0Ç/Ž.*Ô'#"Ú¸ÄX€t¼ÅÅÒ!ì% '÷*:,U-×/f0œ22Ö3f3e3[3]3˜4"4®5\6 6¬7R7¨7È7·7È7ì7þ8E8i9Q:¸<¿> @RA½CDgE÷G‡IOKM!OQnRõSxSòS¹SÂRóQÔOÔMŸKŽIëIHhG£FADjBÞA5?ž=ˆ;€8W4Ì0'+‚&’!í5 ňBlÜ º!t"""Î##š$$?$‚%:%ã&V&%Ã$Æ#È"i!•,/P ¤"Í!#$$ô%%+$"­ÒœÕZ BcãpB4øÈŸO o"q#Ö%:&0'H'Û(=(!'ð'Ô'ë(r) )ä*Æ+ˆ,>,y,y,0,,+ó,>,u-m.Å0¯2n4'5È7R8É:o<=>W@hB¥E5GÅ=ò=[<™;D9x7ü6>4g2/ÿ,ì)K$Í .ñx }|õ;üŽÛ¨/iš"Û—5Mi:øÅ¤ìAêmšÖƒMattI–¬« H 3 m² C é ˜ K–ëP¢d§Ü•gÁÏ~=(à ¶!a!õ"!Ú!r!,!!!!}!Í"³#Í%g&ô(Ÿ*>+Ì-&.¾0§2å4ú7-9·;Ë=Ž>6>Å>c>$= ;Õ9Ö75a3Ø32j1¥0{.Ú-f+–)ª'Y%P"{‰9Ö ¢ A¿ ð ä ´ * „ ì ´f«ÏLÇ +m–À@Žà þ  . q  ´ » ² . Ä ìX¤Œäd^W…„ Ô 0 >1[–£Æj¾à Í <;d(Ö(Õa㉫|Ý/5 ѽéƒÐŽñj~÷!V#%,'€){+.$0`2G3 3µ3Y31ð0½.Õ,*ž).(j'¯&ç%î$x"õ þ ´,t 8 ¥XGÔZÿm‡ªFå!/m±ò     èŽ2³¨R="7@Ý—Ÿ “ / N € Y > ®õèúðÛº„—µˆƒ8Û_ó ¼ d ‡ ¢¿Ò{ ~  ¾ † Š “ ½ æ $ _ ½f•ç.|ßEŸ^S\ É#(%P''á(›(d(-'.&*$"´!¹þPŸÝ”ew  q‘Ctñ¬ÌËæeγ‘é_•–ŠŽÓ󼦤¬¦‘^íàóó;Arà]·ÎÕªŒTLjE¨4©ÿµÿfÿ_ÿFÿ…ÿÒ”}“–\f»¾Á4Ê]ÕáúM Mž]“·Ä*Øë ç ô Ú üTö‘(‡"w'õøÐô/÷‹)SÎN¼ü% Ñ [ ‰eQC»™½QqG+„ÝÉ—¡Ñ â²â!óÌ¿ÓúùáæõñíÿÞ·§Âö#,ø!/A^u‹z\ÃZÿåÿ€ÿ ÿ ÿÿ_ÿ¥ÿó:cyxdP0ÿîÿî2„}ô`®&"OÕ >ó©ž¾ ó ø ÷ ü7½šFeJ°E€ze| û ¿ }  ÷   :gxôJÓñ^`ÿèÿÞÿÚÿžÿ]ÿˆÿÑÿçÿÏÿšÿ‰ÿ×ÿÒÿ}ÿƒÿ´ÿÖÿÐÿ˜ÿhÿlÿ¦ÿë ÿòÿü!ÿõÿÄÿ„ÿfÿtÿÿ±ÿ¨ÿ…ÿjÿkÿ›ÿÌe°ö RM8Þzÿúÿ~ÿþ·þ~þGþ-þþ ýõýïýóþþþ1þ<þbþžþöÿHÿ™ÿê(gƒ›‡]28lÕ'©EÂeßYî¹¥„ H °   ã – ™ K•òÃãàm‡¡Þàº-ÿÚÿ§ÿRÿ<ÿ„ÿïÿê Z‚AQ£‘P(/l˜w8(l©¦€qt‚Žƒ…wN.*Ekya-ÿôÿû BfzžÞNTQ*ЕQÿÚÿ£ÿƒÿeÿgÿsÿ•ÿ°ÿØ:…ÂìñøèÛ»”e5 G|ßWà ,K}Ä5±1»ùüdz¯à½ R5uvþXÝÌ|­ W ÿ®ÿÿ©ÿÞÿëÿÑÿ¸&†EÿëJrbÿâk‚Xÿãx¨›j=Hn‚}oGÿóÿÛÿòW‚~_(ÿíÿæÿôÿò :»ãíÒ°–~^G46=Sg‚ ¸ÐÎá‚X-ÿÌÿ¤ÿ€ÿ}ÿ…ÿ¨ÿÁÿí-d‹}Sÿÿ )rË=!ПÜ.Kcÿý9²×™ÿÂÿóB8ÿêÿzÿVÿÇ&ÿÇÿQÿvÿÏÿåÿ¾Gÿóÿ«naÿûS€=ÿñÿø8„—KÿýÿþDš¿‘G:Wy†rBÿÿÿÝÿâÿú:Êܰ~Dÿíÿåÿâÿù8Yqƒ“§Æî$)111,,$þÓnG"ÿçÿÓÿÂÿÄÿÄÿÞ;y¯ïóÎ}7&L‡ÓíÌ‚;>ªúÂEÿæÿìjÓ¡ÿ¾ÿºn0ÿÈÿ¨ÿÌ7ÿÈÿcÿ§ÿÞÿ‰aÿ¹ÿÚ1mgÿ× {o)ÿåÿéU·¥GÿîÿæLÀÐŒA.iŠu?ÿÙÿ´ÿÑ mÈúòÉŠS)ÿÿÿòÿð!Dbƒ¥Èî !->CB3+þÑ›a1 ÿÜÿ¾ÿ§ÿ¶ÿÍÿÿ']¥ÚòÑ~ÿÑÿ²ÿØ={ƒhÿ¢ÿpÿ›ÿþN8ÿ›ÿ&ÿa‘–ÿ^ÿTÿ¶1ÿÊÿhÿÿóÿœÿsÿÐÿÈÿ~ÿÙF=ÿØÿïZŸOÿíK„x ÿÇ ‰Íª.ÿÖÒÍ|!A­¹Œ[ÿÏÿ°ÿ¥ÿíSÍ5VVò¾‰eKIDPaxŒ™¡¥ª²¿ÆÇ¼´¡‰lP9%ÿøÿðÿõOÃï+6(Õjÿ¶ÿ¾ÿðS§ÙèÿªÿÇL¾«*ÿŒÿq"ï ÿøÿ“ÿÛYm*ÿÈÿ˜ÿê:ÿ§ÿ‘ÿ³ÿñÿ¤ÿŽÿ± SRÿñÿº/«&ÿêÿúe©LÿÕÿ½¬þ´$ÿÙÿûnÝíœ<L‘¹Æ–Y ÿÃÿ´ÿÆ!øAOW6æÁžpSFPV`gmu|ƒ…‡€wfTE:81;Jr£Ù #=1&çŒ)ÿÓÿÆÿÝ5—ßå¶Zÿßÿ°ÿé_Ʊ ÿqÿ]ÿé¿&±ÿßÿ~ÿ¦#>ÿÇÿ¤ÿÎ$CÿÕÿkÿÿùÿýÿÆÿ{ÿÈÿ¦ÿÈ: ÿÂnœsÿË$Ž€#ÿ¸ÿ±=Ü®ÿÅ‘¡ÿÏÿì-ÓÝÚ›Iÿøÿ­ÿ²ÿáNµ;@G/ï³|WNBFLU[[XTWZVPLOVei„¶õ2N]A+ð¦Mÿçÿ½ÿ»}å/"ýš*ÿáÿ¬ÿé‰úáDÿ†ÿLÿÙªÆÿþÿYÿxa\ÿòÿ”ÿÄ >ÿ«ÿsÿÍ#ÿèÿƒÿoÿ®ÿŠyIÿêÿØ~­GÿØÿè?“Žÿ—ÿ³Gõ2Ï"ÿÂÿépúÁKÿíÿÐZ¬éêÜšI ÿç2}¹ä-üϯ•wbTM@2"#2;EObz˜±Ïÿ 4É”ZÿóÿäqÕ+9&Ïo!ÿçN± à'ÿÿ^ÿêÁ4×ÿtÿtÿýŠ~ÿ¿ÿ´i4ÿÉÿÿ¢6ÿÌÿZÿ.ÿØÿŒÿÎ5T0ÿåÿÎ7ƒ&ÿáÿìd¹tÿïÿŠÿ´o%MÏÿ¦ÿØ6êNÿàÿÆÿÝ8…Æ û¸l2$7d»áñûïåͱ”}iO<*).@Obq…¶ÑÞìÚº…T*ÿÿÿóÿçiÓ9YSüœ@ÿñÿõˆ5ñAÿuÿFÿåÏK&ÿmÿz˜¸MÿÍÿÉbiÿþÿ”ÿ¤ÿñ ÿ©ÿdÿª= ÿ¹ÿ±ÿíLsÿÁÿñW™ƒ ÿ½ƒºÿçÿ‡ÿÃu.`ô4ÿ»ÿÏHßç„ÿÔÿäOÛ ñ³zO-1?a{¢¨­«ª£œtorsy‚𤱷½¯˜qI('a´ :K¼[ÿöÿÿOÂ-ËÿˆÿræZûÿhÿ]ÿ÷«Çaÿäÿ¨ÿøer&ÿºÿ‡ÿÖ1ÿÉÿ…ÿ}ÿÊ- ÿÊÿ¾%[ÿßt²\ÿèÿС݀ÿêÿƒÿ¼„H†<ÿ¤ÿž+ÀŸ9ÿðÿÊÿê P¡äý¼‚X=<8=?HQc˜§ª®°¸½º²°¯®§ž‹y]6 >g©ÿ3LÆ_ÿäÿÛ|Û9!­ÿaÿk vÿEÿ?ÿëšà~ÿÝÿ¢ÿÓ=>ÿÎÿÿº=ÿñÿŒÿ„ÿµÿàÿó;Oÿ÷ÿ²ÿ÷a‹dÿ×5¤¤QÿîÿÖ:µß‘ÿñÿ“ÿÇx6u"cÿÏÿ³ÿù†éôÈeÿùÿßÿÿ+xÈùø×¤xX@9278JiŒ£®¸º¿¾½·µ­¤oN4$ 7S·èâˆ4ÿìS« %›ÿöÿ›ÿ§=mÿ[ÿCÿÛ¥ç–ÿ­ÿÌ1teÿ¤ÿ´ÿþ/ ÿ¿ÿsÿ¤ÿôÿóÿÍ$c,ÿáÿÞ€¦PÿóX¨¬Gÿæÿâ=Çü£ÿÿ±_(=Œÿ×ÿŒÿØQÌüПVÿðD‰ÇçøâÆŸ„saXLO_wˆ’›œš•—˜–‹hF-)2Jb€Ÿ·Ø×Ĉ9ÿêI›ï4óxÿÿÿ¡ÿÖ.|ÿLÿDÿ﫲ÿÁÿÙ/}p ÿÔÿ¼ÿö3%ÿçÿ¤ÿ•ÿØÿïÿÀTRÿãÿäI£‰4ÿþ g²šAÿîÿëOÄó¬ÿ±ÿÀNÿY:œÿ´ÿÁ,ŠÃ׬{C:g›ËÞäλž€gPKN[cn}‰Ž“Žj]RA>E\qŠ¡´ÏÒÊœ_&ÿú]¤Ú õ¾_ÿóÿÚ ‘3Yï!ÿpÿ\ÿâœé«/ÿÉÿÔ)kr6ÿêÿÐÿî(B ÿÀÿ¬ÿËÿÝÿÙÿïQS ÿÜ _|(ÿïk¬ Bÿìÿä;Å ÔDÿ·ÿ£ÈOCÎÿ±ÿ´ÿï[¥¼¾—xW5*+LtŸÂËθ€jaZZUXcqz}‚{hWPY_o…š«³º¸¾«„O!Z³Õ̹zÿêÿà7Ê0FÇÿûÿnÿw «ê› ÿÊÿã,qo3ÿøÿÝÿú(<"ÿæÿ»ÿÒÿñÿÇÿÿÿèÿö;j?ÿôrš` ÿö s¨ŽAÿùÿúM¹ùËIÿÔÿ° £0ËKÿäÿ¼ÿð,u¦®¯“tV><?Z} ¼Â¿®¢–Œn_TNFDFLLR^p€ž©´²®˜}Y0?nžÁÂÀ™_%ÿëÿÿVÍ3 ± ÿŠÿŽŸÙ/ÿÝÿð@uyTÿöÿü&I8ÿÕÿÉÿñÿÿÿÑÿÁÿ÷ÿæS^> >‚‡Tÿþ$m§žW ÿñ+§ûîyÿìÿ­ÿÜkö%øtÿÕÿÔP„§ª­š„hH@IlŒ¦¸º¼µ°¢‘x_I3-,<Ndyˆ”–—’’Š~d;!3a“¶·³”tM(uì% ‡ÿëÿšÿµ1­Ñ…ÿâR‘…H )C@ÿèÿÙÿèÿäÿ¾ÿÉ( ÿñ3^b1 &a‹„O;{¡”[ K¨êÑqÿ¿ÿêSÊà‘,ÿîÿïAo‘­°±œ€fX\ap™šœ˜’…vh\ZZdo{ƒ†Ž„ygTF3;W„¬º·˜„d27‰×ï{ÿ÷ÿ¤ÿÅ*™¾†)ÿéÿû@ptP*9*ÿûÿÔÿÝÿûÿ÷ÿÔÿ½ÿÒ @bU5&7iŒ‚V*6iž¥w90‚Êáž&ÿÑÿË&˜åñ©Zÿþ2^›¶¼º¤sZPO[cmv~†‹’—›š—„|zyvm^QCJ[¬ÆË¬‡aNE!DŒßóÍdÿíÿ½ÿåM£­jÿî Dn`-ÿÿ ! ÿêÿÚÿîÿûÿâÿÓÿÐÿÛ *Q\J(J{„fB*(Hw”’k7$<{ÄÍ*ÿàÿåƒÐÛ»r9#!A\{š«·±©”|gXX\iw„Œ–œ¤§©¤“‹ueRF=BG]~œ²­ ƒfQBF@^§ãúÂaÿÓÿøKšªs)ÿû8X[I' -9!ÿýÿçÿêÿýÿÞÿÛÿäÿäÿô 0KP30Tb\VH75A]‚~V((b¦È¤Tÿã _±×¼“aGIM_q„• ­®¨–toxƒŒ“˜›››•ŽŽˆx`F<@Wk—›Œq`[X][j„®ìõÁaÿþ"n¥¡h" $F]P5494, "=G#ÿúÿóÿúÿãÿæÿíÿãÿü >R8:PZVF41=YuƒŠuK3@n¤³šV ÿ÷^Ÿ¾Áž~cQVbyˆ”£«°¦•sqs|Š˜¤©¨®¬£”ŒƒtgX\oˆ–˜œ’~h^`[blЏÕâ¶b 9v¢¦yA'IWTJ=?='!5D7 ÿéÿúÿûÿéÿàÿâÿäÿ×  2I?*$.BPOC8:Ladfz†iJBY‚©£p/D‚¯·®vmq€…‰‘˜¡¢ž‘ƒxsx|ˆ˜¦«ª±°¦•ˆ{~‚Ž¢®­Žwuwzrt‰¦Å¿—Y Q“®–lB5DXaO<EQM8 %@9ÿøÿëÿçÿÞÿáÿÜÿ×ÿÏ +CNE0$/GYZF6@Xcky€‚u`RMcŒ¥q=Gz¨Ä¼ª€~|ƒ‰‘–œ¨®«¢™“‘””“•”Ї‹‘𡥍¤›uprqw€”·Æ½U20[–µ¤qMAH[^WJCOU?&"/EG'ÿþ ÿýÿäÿäÿíÿäÿÚÿÙ !)8QYF/,>[jW=<Ncsxsqr{zdT\w—†Z2-Bu§ÂȲž…ŠŽ““¥¸¿¼¾·ª™‹ƒ~~yyz‚™¥ª­¦—ˆ‚€{xwyv~“ªÄ»ŽY8Gt¤·ŸrKH\fcRBEOSI,6SR7%ÿõÿðÿòÿóÿëÿãÿèÿý ".((D]_N93Hbg[NJThz‚~v}q`T]y“›„bC1Fn ÄËÆ¯Ÿ––™’™¥¦£ª­«Ÿ‘…‚‚{y›¦ª¨«¨œ’“•Œ…ƒ›©¹µ¤€N8Cp¯ŸvZR[jgZPKOOB2%)AK1 ÿìÿñÿÿÿøÿêÿæÿçÿêÿù1) 0I_`J45JbncQKXs‰†wtvzwdVWj„‘vO;CožÂÔÊ»©¥¤œ’‚~…’›œ—‘’Œ™¢¥ž—™žž¥¨ž–˜¦¼ÅÁŸpK6Jr™§’pUZntl[NQXSD/%/>@. ÿû !ÿñÿåÿöÿôÿÝÿßÿèÿåÿþ'*%#+>MNC77I_haRLZp|}yt{}sdX[g|“•|]LZvžÀÎͽ¶¯¤›–”Œ‡‡Œ‘”“‘‘”–•”–•‹Ž“–™ ¯ºÂ´˜tUQbƒœ¡˜lenyqaZX[VC1)1CK=$$*ÿüÿõÿúÿëÿÙÿáÿìÿã '/$.FPC22C\iaPJUi{{stwzvk^RZw“š‰ugezš·ÅÁ¾´«£Ÿœš–Šˆ‹Ž‘™—ˆ‡……‡‡ƒ}„‘¢·¸«‹gX[x°§‹{w{€ubV[b\I2(3FPH3",:6"ÿù ÿïÿâÿßÿåÿéÿÞ ..&!':IF;5;L_gbXS]msrrqqppk[Vbx‰ŽŒƒxx…œ®¸À¼´¥•ˆ‚‚€ˆ’›œ›¤¨¡–‘Š…~~‚Œ“›§®µ©‘vdgsˆ™šˆsrz}ui_[_]L:/4CNJ8'(0" ÿýÿîÿÜÿÞÿçÿåÿÝÿÖ  (5:724=GKF@@Lbpk^Z^goqmfeounbZ]gz˜–Šƒ†¬±°¡{prt{€ˆ•ž¡Ÿ¥¨£œš—†|~‰›¨¬®¦œŒxpw†‰~pfhu{mb]`b]O;18FNH8&!!ÿÿÿüÿîÿÞÿÙÿäÿîÿãÿÒÿÒÿûÿø"+3;??@GLJE>CUfiaYX^irtohhklkhffo€™•‹€y~ˆ—£¤Ÿ’ˆƒ€ƒ‚…Œ’•–›œ™’ˆ~}‚‹”˜“‹€vphlz‡‹…~yxz|yqhccc^RD76?IH<.$%(" ÿøÿíÿêÿïÿõÿóÿãÿÓÿÕÿûÿöÿòÿý  %5DHEGIKJEDIS]`_[\coxype_dovwoikw‰””‡vmm{Œ›¦¥¡˜‘‹‡…‚‚„‡ŠŠ‰„~yw{ƒ‰‹„}rf_^djry}}}ƒ‰ŽŠ~qjjkiaUG?=AC@:3,*,-% ÿöÿöÿýÿûÿíÿâÿÛÿÚÿûÿüÿý #""+7=@HLLJHIINYbea]]akvyrgdgkomjfkx†‚uoqu~‡’‘ˆ†…€|}€€‚ƒ€‚‡Ž‹zsjefmu{}{||}{yupnqrk`VMC@AC?875/)(&ÿöÿõÿûÿúÿôÿéÿÞÿÛÿÛÿÖ  '*''+09FNNJMQOPXafec^Y\ivyqg_\`hnkhkuƒ‹Œ…}ulihoy‚„ƒ‡‰…€€‚€…‡Š‘‘Œ…|{xwy|€~|~ujabhqytfTMKGDDB939>7+$ ÿúÿñÿøÿýÿñÿàÿØÿØÿÛÿÜÿÔÿìÿóÿý4IPC2&%5K]f^P?12CV\M6  +EkgN><HQZcc\PE?=?::@ILOV]bcb`bfikrqdTKNT`ipxzxqmh`\]bgg`UMGA;/&%*,/89/!4LNA;778:4%ÿüÿñÿëÿëÿíÿèÿßÿÕÿäÿîÿü6GA+*@V``Q>5;Pioa?.JcwqZ>16@P]djcVG??>@=>DMQTY\\WNIIS_m}€xg\WQSV_jszxtfTG@GVccXLA<:4.)%*59. ->DA82031" ÿöÿëÿåÿæÿîÿïÿÞÿáÿçÿû-DC*!DcstbPFETlwmK# 6Qa]RC9>L^hingZC('1=IR\\WKA7-& ';Qi„‘•ІyfSE@:AOcv{yfO<49<@B@=6-& !#&-.# 3CG=."#'#ÿýÿ÷ÿóÿîÿàÿÚÿèÿõÿëÿáÿí)@D6!#Ft‘ŽxZIQh€’Pÿõÿø 5T[U@++@ay€|mhZ@# !/=OY_WL9& 3Jc~œš‘~bL:!#@^vŠ‚mL1&#,4970+'#"(+ &01' '6CB4" ÿðÿèÿêÿêÿØÿÍÿÙÿêÿíÿÖÿý*GE-(P|’‹iJBSw™œ‡U! ;X[J,+Q~“kO;32% #4JXZOI=."&2>KWcr}‚…†…{t_?#0OlznT;("0BI?-'$'9<.5GL:# ÿÿÿþÿòÿáÿÛÿØÿËÿÅÿÉÿÔÿÞÿâ@F/H~”Y5%>l–ªŽZ((V|€Y$ÿùQ‚¨œt=)-6I]mlaG0  (4@IQV[\\[_b]Z[fv„‘‰uS6 ?h„”ƒhB $@QK6-%-64'#>SM6ÿôÿêÿðÿûÿ÷ÿçÿØÿÌÿÅÿÅÿ¿ÿÀÿË>A! 8y˜~E%*Aj‘—‚V.'@evb5 ÿ÷:mŒ|S&;[msaP7 ÿýÿüÿþ 9TdlfdZM@998<ELLKLTas†•‹„oN.7`‘~_0ÿôÿø/BRI3ÿÿÿÿ +LT=2GN7ÿïÿßÿèÿöÿüÿìÿÓÿÉÿÇÿ¿ÿ¾ÿÇ69ÿðÿï cŒ}DDp‹“wM.*Gs^ÿäÿÚÿ÷<›m? Dr—š])ÿøÿÎÿÅÿÂÿÞÿü&Sv“”tbM3"%4CNUURONVbv‹œ²²§NÿøÿûJ{ŠƒTÿñÿÖÿè0RUG#ÿöÿöDaY3 +HL4ÿáÿÖÿéÿûÿåÿ×ÿÎÿÆÿÅÿÊ,ÿþÿÈÿÊO}q; 1j~o\G>IcsoKÿ÷ÿú#QmoT8,4TuSÿìÿÃÿÃÿÓÿþ#Fbn}|xfP=21.29FS\ccc^ULEFKZex‘§¿ºª{Aÿêÿï0^v‚c4ÿàÿæÿý&MWL$ÿ÷ÿåÿ÷"CMK20:#ÿóÿÊÿËÿæÿôÿóÿèÿÕÿÆÿÂÿÉÿõÿ¶ÿžÿÙ5pk:0d}i?*6X|‘x>ÿæÿÿ8q…c+ÿö"c¤ÐǬo< ÿÌÿ´ÿ²ÿæ$f™¤¥‡lL.-F]n€†ˆ|qeYOIDB9;Ed±ÑǪgÿãÿÁÿÜ O”¤CÿûÿÑÿÅÿò*[rRÿæÿÍÿçEk`3ÿñ'ÿÙÿ¿ÿÂÿÖÿëÿêÿÙÿÈÿ¿ÿÂÿ¯ÿ“ÿºim: :q„mF-<e‹Žr9ÿô =[O#ÿúÿèT;˜Sÿûÿø9a‡¦£—pI#ÿùÿñÿöÿõÿû&;L_xŽŸ¡•‡r`N=/%>f–¼ãÙ·iÿÖÿœÿ©ÿÚ,uŒ…JÿÛÿÌÿó'UfHÿðÿæ Djg5ÿàÿí ÿ×ÿ®ÿ®ÿÉÿÝÿàÿÐÿ¹ÿ°ÿŠÿ­TlA =uŽtD)9j–¡v4ÿñLgFÿÿÿ¹ÿ´ÿåN»éà…%ÿÞÿ°ÿÓh§ÆéÝ¿A ÿßÿÑÿÍÿåÿþ$')&$&$1Ihƒ‘™‘€rcSC1# 1h²éë©4ÿ±ÿhÿPÿ¡n¸¥gÿ·ÿ¬ÿÎnˆl%ÿëÿâGwn4ÿñÿÓÿå !ÿüÿ¿ÿŸÿ¦ÿ¾ÿØÿÖÿÀÿ¬ÿÿæCZ5 ÿü'cw`6$O}Šp;-O[<ÿüÿÎÿÑ VŠžt0ÿõÿÚÿþ.{Îñð¶„JÿòÿÞÿèÿî+PmtvfXF4&*8GXfrz…‹ˆ~hQ6ÿðÿþ\ªãí¥1ÿÅÿŒÿmÿ¦ÿýX—‰UÿÂÿ¿ÿð:jc7ÿëIzr0ÿæÿÁÿßÿïÿ¸ÿ•ÿžÿÃÿÛÿÚÿÃÿÅJ'ÿðÿîQmO<bs_5!Cd],ÿïÿ¿ÿÓo—u4ÿéÿ­ÿÁrÔ3¯4ÿÌÿ˜ÿzÿ¡ÿÐFp¥¾È±œ}cL4# "5H_z“ª²·¨š~fCÿíÿÄÿÖiÚAùÿþÿgÿ4ÿGÿÅN§Âoÿýÿ ÿ†ÿÇdrAÿç N|hÿÊÿ¸ÿÛÿãÿ¦ÿÿ¦ÿÌÿèÿß-ÿëÿÎÿýDhZ,Gdh\D47T_C ÿÏÿ½ÿÖBGÿåÿÈÿçnÄèç«|5ÿÛÿœÿwÿ˜ÿÉW–“¡™W5ÿúÿæÿÒÿÌÿÈÿÓÿßÿó !"-?[w“®ÁÔ×ß̰v,ÿðÿ¾ÿÈÿã-†ÉÔnÿäÿnÿUÿpÿÖ>rgÿÆÿ£ÿ»QjI ÿíÿÿ<fNÿ½ÿ¨ÿÚÿÌÿ–ÿ‡ÿ«ÿàÿòÿÓÿÃÿä*c_4MwsTBCXjqIÿøÿ´ÿŸÿË 4ÿÛÿ‹ÿ…ÿÈPÕ2ßpÿ÷ÿ¤ÿ‰ÿdÿ}ÿ± jªÒ©m]A&ÿøÿôÿïÿ÷2Qt‚cJ5',2H^¢ÅëþöÉnÿªÿNÿQÿ~«3¾ÿÿÿ&ÿ‚ qs1ÿÏÿ•ÿ¯ÿýRuR ÿÜÿö/U<ÿäÿšÿ¨ÿáÿûÿèÿ°ÿƒÿŒÿºÿáÿúÿÄÿšÿÂMY=9aoO,4UyvKÿÅÿºÿé"1ÿ³ÿ€ÿ€ÿág×Ùƒ ÿ¦ÿ…ÿ‘ÿÉÿáÿõ)9%ÿÒÿÿ}ÿrÿ{ÿzÿyÿvÿ|ÿŠÿ£ÿ¸ÿÐÿå%Qƒšž‚jH'ÿíÿÙÿ¿ÿ¾ÿÈÿóZ˜ÃíàÆnÿ”ÿ-ÿ/ÿnÿõu°¹XÿÞÿqÿ/ÿUÿ« 9ÿàÿ®ÿ²ÿõPaÿçÿê#D ÿ³ÿ‰ÿ˜ÿÇÿéÿÍÿ™ÿ{ÿ‡ÿ¸ÿ¹ÿŽÿ™ÿíDV63RYE ?o€WÿÈÿÀÿó8Kÿ¦ÿ\ÿ{ÿãwöÊ<ÿ·ÿvÿkÿÊ=©â×Í£uI#KˆÜ)d‘¬ÔïùäÒÁ·£…X1ý¾z@ ÿÇÿ˜ÿvÿ„ÿ•ÿÌN¨òA8ÿÎÿ<þÙÿÿ€.ÔìSÿ¢ÿ0ÿÿÿøFAÿúÿ²ÿ¯oœpÿÒÿçÿéÿŸÿsÿ‹ÿÀÿÐÿºÿ‡ÿkÿˆÿŒÿ†ÿÆWJ!%@]eP/+c€dÿÂÿœÿºÿéÿéÿ­ÿ@ÿÿÿ—yœXÿÿÿ ÿ\ÿjÿŸÿùEYBÿÛÿ×ÿÜkíkÐ’TÖ?[ƒnQý«5·4»Yþµn%Ê{GÿÒÿ…ÿ:ÿ þçþæþÜþùÿÿlÿÊS8ÿöÿsþíþŸþoþ´ÿ'ÿ·7AÿúÿiþîþØÿÿ”ÿñÿÏÿšÿ¶yŸgÿÒÿÚÿáÿ‘ÿqÿ‡ÿ·ÿÑÿ§ÿqÿhÿƒÿ¬6@-9]eP/+Nvt?ÿüÿÛÿä ÿÉÿkÿ&ÿIÿ¸<ˆx@ÿëjÚI’µ²¬ÍŒöÓ쮦 “ F ê  M  Ð ; ´ ÝéͺÐÿhÐWÇk8.â¦]Ú‹L $…úiÏÍ dÿðÿµ §5vqÿÊÿyÿ®ulÿßÿÝ.†–Sÿðÿ±ÿØ ÿÑÿ‚ÿ]ÿ†ÿÂÿ¾ÿ—ÿpÿ=ÿÿì  6E1 ÿö)R_BÿóÿÞÿuÿ6ÿFÿ¡ÿý#ÿÀÿ‹ÿ¬ 2º,†ÇCòB` z ž ¬ ² ‰KýјeÖ*ØEÊÄ… Ý < ¹XK?sвÎò*LA1è“—5áê {vؾpʯ‹»üòŠÖ'ÿÞÿóM€oÿÒÿ×nyÿžÿŠÿºÿêÿêÿ–ÿHÿRÿÿ¸ÿºÿÿ¶ÿè ÿþ+0ÿøÿàÿà%?0(@ˆê1;))cåHX˜chÁÀ—i&õ t W ‹–4Ÿ—¨q?¸ý?»z]–ž²P  ÂÓãñ&¸ P D  w ñ K Æ & M _  Ö U É =³r@„ï ˜ N ¤ Ô = `.w1 à?U`­W%èT¯ÿü9|GÿÛÿ†ÿwÿµÿîÿÀÿqÿMÿaÿ™ÿÇÿ¸ÿÄÿÁÿ´ÿ£ÿ§ÿÍÿëÿÝÿ»ÿ¨ÿ¯ÿÊÿèÿîÿèÿÆÿñe$ÉO¥¯bAo 2þÚ'\ Þ Z 8 }kQâyÎl5¹L”•· %!"2#8#ö$2$$N$3#C" õ¿³d-ãY49§£‹@øœ;ì‘•éVË7CF©â¢W & 1 ‡ ô 7 Aî„)!C8ÿ«ÿŠÿÅÿÊÿšÿ*þßÿÿKÿWÿ6þýþîÿ)ÿ~ÿ§uñiÉž€< ,FM*Šc¯ÅíXÝ   1  » £ â Á Ž ¿i7ãü ™#Ó&•( )>)ª*R*½+:+n+U+^+»,›-§.š/G/y/Ã//h.z-Y+v)x'^%r#î"{!t d°û¥ua*ÇQÐRÇ×ëKÁJÛ  ŽX¤¢4Ç\)ôÊ ˜ %Á3@€qŒ²h ÿéÿö ÿÂÿ{ÿrÿšÿŶšvx½‡ÿÿÿËÿÅÿìÿíÿÜÿ§ÿ´ÿΫÌšCK | ³ é|ÒXËâNRé¹¢¬ œ!$1'°+Ä/]2k45”6I7D7ï8¦8ß8Â8Ž8¨99¸:8:{:\:Y9ë9{8d7'5S3Y1n/¿.˜-{,Ó,++Ð+n+?+5+ *²)ô)(&''&&&&@&Ý'(\)<)˜)²) (U'=&9%$'"ð!‹Ê*zH× •n2Û†rxFù¸¼¹rÿÁÿ¡ÿ« < ’ Âüsïñ ¸€G%Fƒ’Èû G :P;ÚÊÀe Žiì× "e%–(¸,/*2–6¯:~=Ä?ØAÆBôDbEPF?FmFHEÊE’E„E•EŠERDÑDpCµBéA•@&>Yxíà“\ @ ¢SÇ8ôD†zJ×^Ô/^Éu\óq  ÛYˆÆK#'­ö G Ó Â~%w`Ð  "â%&& &‘&g&þ(*-)0j3x6š9i<Â@îEHÂKNM¹OAPûQìRÐR¾RZQQPÆPœP^OòOCN¸MÎLÈK7I‹G—E€CáB—BA§A¬A³AßAßBBqBÅBîB‚Aî@ò?á? >t>u>u>ý?š@ˆA¦BPB¨B A\?ü>‡<÷;·:9c7š5€2j/>+•(@$q B³×© : Ò k … Í ³  à Ч§mÕFñ!×E—ÎK±/ ˆ d ƒ& 9ù:9Ù! $$&þ*j-?/³0¼1`1U1J23n6 8À;Ø>™AMCÁFæJîO RÍUaWÐY7Z»[Y[î[šZÿZY‚Y5Y XäXŽWùW‡V®U±T'RƒP£N¨M0L K¹KpKKªK¼K‚KrKÉLCL—L‚L=K°K"JÎJ®JêKK}KþL¼M³NCNMäMQLJ®HúGfEÖDBÑ@á=Å:B62B.[*u&W!¢Â|øêdeî'ŒÚÌ ù ‹»,Ÿ*M'S$ æ / Ë²ûF 1>å$+š#¨'**m-±0î4ª7š::ï;–;±;Î<Ö>tAID2GOIûLOR4V=ZF]¾_íaòbÖcÊcød5cÉc bFa¥aQa`ÿ`Ã`d`%_^Ê]Ž\EZÒYEX+WWW:W1WmWŸW‰W V™V¥VéWVÖViUýU¶UðVcWWšXX¤YOZJZä[.Z•YúXŸW-ULStQ˜P N4LTIKE·AA<ú8Ê4ê1,ª(Ü%W#¶"É#"Þ"":!O ]xJoÛ㢠I ñ9k794@0ø-à+))r'ó'%Ü%$p$L$,$5#—$%i({+®/_2–5»9GYIKÐN´QÄThVìYj\_`ccf1gŸhçi#igi1i$hÊhCg¢gfÖf¥fšf‡fffUeòe`d{c›b¼aÊaHaaLaµb$bbCa—`¿`d`/_Ñ_F^t^]á^ _ž`âaÞb—cCcÔd²e eJdcêba0_k]Ÿ[ÄZ'XdVÂT%QL×HDI@w<û9!5Ä2G0i/e/©/µ/o.Ë-k,K*@'æ$!MuˆsKFMD$A =ª:7Ð643ˆ211X0Ñ0¸0j0?/”0(1œ4¯7¥;>@AzDêHK-MLOOéP£Q QLRSSÚV‚YI\P_a|càfYiXkÛmìnÆo…okoRnònÄnznm“mlÒl™ll˜ll{lkWjiÀiNhÒhýigjck|lXm lÉlkjYi¼hýh(gfŒfwg‡hÛj…kêlÝm³nn™nnMmvl´k”jsigseÕdvcaÃ_\âXòTËPwL”I*E¥B?<ü;­;Ç;ù;Ú;9b85Ü3h/²+Õ'*"•ËâR>PTM]J(GD‹BØA-@>­=à=c=J<ä<³H@ñCsF€IŠL¤OÅRtUVÑXY€ZMZ©ZÕ[\³^æaLcþfvhŒjpl!n7oâq@qÄrmn“p!qKr4rq”pŠoÓon/mPl1kÑkÙm nxp;qÇrÔsÆtt:s¼srqCpooŸn¢mlOkWjNirg»eŸbR^ÐZùWhT=Q)N|KtI^G½GdGxGeF•DÍCJ@ï>–:÷6ú1ü- 'þ"Ë^\zY­V±S½Q=OtM¤LaK JII»IŽIHûHÈI|JwL‚NQATV×Y{[µ]ê_¥awbœc‡cÕcîdUefÉh¿jëlÓn6oWp@qŽr¨sŽsçt?t sãs‚s@s+s(s>sNsJs4s s rÍreq„pro_nenmÛn£o·qls/tyuvudut4s…rµqÏqpoöpLq½sQuv«w³x°xèyxow’vnuˆtØt@s¦ràr qZppnÔm@j¡gØd®a¬^ó\bZ%W«U»SæSR÷RÒQúPNPKÀI{FB<Õ7¶29,ÇfÐeÇca2^§\oZ°XëW©VpU¼UTËTwT{TrTíU_V«XCZ†\Ã^ï`Ùb…dQeðg¯hÑi©iÉiµiÍj@ktlónwoœp+p„pÔqras s`s·s©sssrÑrÁrÎss:sXs]sBsMsrºqípüoônînmnn„o?p‰qÚrØs“s‘srrír†rq†q.p»qqËsVtêv{wÕx±y•yÝzy¡xàwÍvðvGuÀuBtœsás6rŠr q"oõn&lHj7hAfnd¤caj_ñ^J]\‰[òZöYWT{RVOEK¸FïB<È7 on¾mRkÇiÕhf„dôcÅbªaùa3`ß`¶`Ù`Ò`ï`ÛazbždZeâgGh|i˜jÚlm†nroon´n‘nÚoÉpõqór|rqrSrLr¡s$s„s½tsùsÆshs$rörÍr»r¢r£r¡rÌs%scss$r®qàpþpBo¤oo pp’pöq*qpùpÜpÔpþq$q‰qÓr¨sÆu\võx[y•zFz÷{{DzÝzLyzxÎx4w®wvgu—tÈts^r¥qÄp¿oÁnÚn mPl~k®kj+híg}ffe1cîb _à]G[5XtUJPòLtGhB•ss|ròrApûoÑn˜mglckej³ióiªi¯iÚi§imi#i‚jkk»l«min'nØo›pWq1q¥qÛqŠqpÀpìq¬r“s2s\rþr¢rdrmr§rÌrØràr¼rr9rqâqqp p„p‹püqr!r”r—rˆqüqKp|oÕokonÞn¼n½n°n»n½nóo6o½pBqq¯r·sôudvÈwãxÛyizz>zsz6yÞyGxÔxBw«vÖuçtØsÍrêr"qpßpvp$p:pypÀpÐp¦p¹pHo’nl”j¸ig1ebÎ`å^[úX}TÚP£L“v‡wšwÎwÎwv…u¬tÚtsrrqÎqœq¶qÏqepóp§qqÔrÕsgs¶t&t{tÆtðu>u7töt[s¡s;s4s¯tGt›t“süsPr¥r3rqêqËq‚q&pÍpžp©pp8o¼o[obo˜pp˜pðq0qpüpƒoÚo-n¹nˆnJn;n*nPn‡náo4o„oÄpp@p¸qiïj½k5kÄl\m¤oWqjsKtÉvHwwuwew¯w©w‹vÇu¶tqs,r¼ròs¹tEtJsÞs-rìr¥r5qpp½o“n&l„jüiÓhëhDgRf™eùeíff‹fïfÜfMe™e™eWd]c aíaba0a_a a@aácne u{vEv3uÎtÓts0r.q;p4o×oçp‹pæqvr"sttÊu`u‡u±uu“u%tvsfruqwpžo…mÿl˜k…k#k jöjti™hœhgÿhIhgöf e'd`dGd0d0cÞc­c•de f!fÃg/gÔhVh¨hÕiimj jßk|lVm>n¼pr‰tGu„vÏwNwpww våvÍv4u>sþr¹r%r,r¶s rër`q©qiq-p³oúo^nm‚l9jÓih˜g×fËfehe_e\eÑf•gfÑf[fŸfµfglhÏjúm4o r søuÂv¦w|wiw!vrvu”utsÿsÂs·t ttÂtÓtMsŽr§qþq•qjpîoúnšm$lEl lJl?kÕjßjcjƒkÕmko*p„qBqÝr'rórùrCpÃo²njlÆk\jIiîieiÁj käl³mOnn©o…oæoÖoVoVnÖmÊlAj¼iËi6v?v.vovv±v•vxviv´w™wâw]u´t"rSpŽo3n*m{lekÆk{kêlŸmm lblkr¿r°rÐrÀr›r_r^r™ssŽsØtsÌsr+qqHq¤qop_nGkùjNi¬i´i4hbfïfƒgiQkÁn4oùq r?st/ttJswrÅrerJr¨råsyt uv>w>x#xWxw°w¿wüxxx wôw·wvEuatœw>wExxöyÍz'zo{{ä}T}£|íz”xFuÄsrqãpžpo0oPp&qÇs1t!tàt­twsAqßoÌm|k›jnðo o¼p‚qAqÃqñr*r$r.qÓqipnomÛlïlÂmm)l¤kLi®hggúgègKfse4eeŽgÀjQlìn»oÑq2rr÷ssr|qßq qÉr|ssÉt¬uv\v×wVwFvêvSuòuÔuÔuõuýuüvuõuu t¬x xjy|z«{»|F|¯}~~c¿²~œ{ÂxÝvs¢r=pØpeoÅpdq sŒu+vJwEwqw’v÷vAu)sìs$rès*s/srÞr¿rìs&s1rûr­rYrErq¹qpXoêppDpNoÀn©m½m‰mßnnmplùløm£n}oFoºo­o¢oEondm»l˜kiÏhçhèiWi¾iœh³gqfmf:fYeôeZdsdxeg0iËlen"opdq1qÜqçqßqqpÖqq¢rr®s]sôtmt›tÓt±tcsõsšs‹s°sûtt)tgtytBsôsÁx¢y'z={q|n|æ}-}Û~›Èž~u{¬xÙv-trÚqp÷pgpñqús{t¨uTuÎuÚvuúu£ut„t†u(vv²vØvâv·v¿v˜v^u»tùs÷s#rpâo”n;mtm$m0ml„kMj`jLjÚk@k8j”iùißjykLl l`l/lk£k:jŠiÛhâg’fŸffhg-hhphg>fsfjfžfheôe3e&e‹gKi•kæmbn'olånÏp…rr«rår„r›r;qgp8o"n†n.nnnËoonÓnÔoo4oio~ožo×p8p¶q q&q pùq q1qqørgrÒssGrïr/qp*oo?o6nÝvöv³v^vLv utÁtsCr±qõpõoÍn¼mÜm'lwkhjšjDj9ji„hxg9fe¼eÆf«gNh™j.l)n o·q…rpsrqqÀp nxlej8hgfÐf"e”eÌeÜf¤g›i,k?lklZkYkjØj®jmiõii%injWk^kÇk³kõk°kiéhÌh$g¶h5hãj(k8l“n0o¯qq¦qÃq‚qÝrq´púp8oÄo•oýp¤q$qp¿p¨pÉq q?q3qqqXqºrr qÝq¯q¬qÈr3r¬s9sÂttst2sˆrzqq p¬poïuËu8t£tats¡rår$qWp®oìnþmýmlJk‡jµi”hÇhƒhƒh[g¦fpe)dddPešf³hzj}lÃnîp´r­snsÓrpönaköiJf{d*aïa `oa5açceFg–jklXm(lÁlÖl¤lgkõkfkj¿k k»lgl•l\lnlkzjxi_h³hHh¿icjk_ltmÊopApÇpÏpµqNqÞrq¥q&pÑpÁqBrr°r¥r@r!rGr¢rìrÜr®r£r×sAs˜s©sus7s!s4s£t"tÀuXu»v/vuvt}s³sr½riq¤u+ths¿slsmlkXjj2iÿiˆhifÌeGdd d;enfƒhJj7ltn¶p’r™s#s=qKnäkªifc¨a0^§]Ã]w^ù`…bÇd§f×i°kämhm^m0l/k?jai‹izi»jºk®lÌmÎnµop_qVq°q{pãpŽp¨qq˜qÃqìrhrÔsrérhrrRrÐsrèrcrr-røsútÚu/u7usuäv•ww)vövåwwWwŸw¬www*www…xx»yhzz¬zßzÃz>yåyy:x¯w²u,tRsµsZsZsWsHsr¾rhqøqxqp×p‚oìon mBlõlškøjŸh×ge¿eWe e«f:gŠhþjßlÅnkp=pÀpÑolðj;h;fQcæaÓ_½_I_{aPc+eSfäh‰j÷lØn.mÛmkˆj0iríw"y…{Ä|‡}.}/}}}ž}}•}Ã}ç}ý}µ}i|”{z9y)wáv;t¢s6r‚qÛr#rÈs½t>t uu»vqww˜wÒwøwëwáwãwïx0x“xüyygz{|]}‡~n~ÙdW:~F}+yy|y‡yÄyózfz"ypw²u¢s°rAq´q5qaö`†^â_R_äbéf‘k~pBt(wzyD{{Î|{|ª} }>}V}p}¹~~s~w~‚}“|zxuv½tÅrÈp±oan2n†o„q(rrãsÉtàv8wfxfx¹xéx‡xw’wuw³wñx&xx#x”yœzÓ{ù|Ù}.}ž}`}{áz¨v(w wrx*x”yx¦wÂuÎsq¡pjpo—o˜oµp0pµq#qhq`qfqpÅp o$n«n¶o¸pÓrssætÁu‡vrvøw:wv©vŠvéwywºwÉw­wïx™y¸zû{·{å{g{lz¸zwˆto›kyh3e.c·b/b‰bîe–h÷mqq tßw›xøzZzæ{z{ª{ó| || |3|Ž}}S}Š|À{oyx vjtŽrˆpQnËmlm®n·puqcr,st^uäwCxzxÜyxlw±wvÃvÙvÛvÛv—v«wxyGza{0{U{zÿzbxÐwBtUu«v vìwPw¾wvs÷q›o¼n­nšn0nMnˆoHp5qq«qÝrrr'qåq8pápùrsQtÈuÑv‡wUxxÚyAyxxýx:wvwuv¤wîy yÕyÂy·x·w¯u™s‘prr@rÈsÜtOtÀts#qMo6m¬lçmlÛmmtn\o–p±q_qnq~qJq@pùpOoãoÃp‰q§st tßuávÛwúxŠxÝxGwrvTu¼tís±r#piowooÍpËrss¨t”téuYtqøn¶kËitgQf]e~eÓeÛgˆiþm’pøs¼vw>x0xbxÛxáx¢x5wïwÿx3x­yByyÅy"x3v¥uQs¹rp1n%läkålˆmòo¿p|pñqÎstru®vÌw wvh½iuiÒi›iiîkl5mJn&nTnnmâm‚lXjthÁgÑgøhh¼i‡jLjÖjøk6jèjqibh&fóe›e“f5hfjäm@nÄoŠp›qirRr¨rær=qCoÞn¯mÂlöllkßk]j¦j0iúj$jžjtjg×eLaD]}X±SëRòVŽXZÝ\_^^Ä___ˆ``†`Ùaa9a¬bbªbGaM_=]H[XüW TêS†RxR€R~SUSýU³WêZº]º_}`T_Œ_*]Ò\ÖZ V2QLHyEÆEZD×EÊF`HƒK)O+S^WUZ¯] _€aAcd-e|eße»edÑdÒdñe,e\eVeOdØdmcBao_Ä^Æ^Ð^Ô_p``ÜapaûbØcDcOb¡aÁa`N`åbd€g.i»k»lÏmánWonõnÉm¯lCj”i(h>g–g,f–eÑdßd c€cbàaÝ`£]ÉZ‡VQÛLïGïHsLYNœPóR_T TÛU*U"U¨VDV®VßVòWW§XX¦XVüTÇR²P^N#LIÀH<é;]:E:19Ý:]:Ý<ƒ>–ALD4EÿFóFNFD Cm@‡<Ñ8 3?/±,×,,+£,‘- .é1+4Ð8«<³@^CTF5HeJ˜LDN@O7O£ONfMÇMmMŠMÓN-NoN/M×LÇKLIìI HôHñISIdIôJÅLPNKOÞP–P™P´QSR(TV@Y>\s_\bcQdFd!ddc´b«`½^¬\¶[Z$YÃYoX‡WU¢TRâQpPMªKG'BÚ=á9u4®/w1”5J79[:9;‰<6>Å?[?Ø?$=÷;¨9p6ê4~28/´.,ö,ë,”--w/ 13±6‡8W9[8å8Ó7¡6Š3«/ù+I&´#] ¦÷^ - "g$…(+¶/Ã3–6Î9Úf@B CCwBÓB AW@Ñ@ÒAAuAâAåAÂ@æ?«>o=›=e=:=f=3=µ>­@…BšDUEGEºFRGŒHñK{NXQäU‘X‘[7\D]\Ž\ˆ[rYÞW~U&S4QˆPÕP¬PpOrM¿L;J„HñG EIBŽ?…;86¥1­-T(Â#’&œ)Ô+Ò-e. /B/û0p0¨11‘2*2—2µ2Õ3t3Ý4'3A1ì/‚-0*•( %¹#0!Ÿ ‘ ¢ t!!}"û$è'o*+Ì,Û,¨,Ü+ý+'(%& Ѫ¨,}ÖˆþÂÂ!w%R) ,B/F1s3š56­7Q7—6ã65F4¥44¤55²5ý65e4\3,2V1ú1¤1¥1X1Ë2¼4y6>7Í8Ö9£:{<=²@ DHLNûQRARÓR%QÙPoNyKÛI^G‡FE‰E‘EnD|BÂAL?„=¸;•9¹6ü3È/‰+9&Â"̵þNÿÒ!8!ø##ä$©%7%¼&C' '¡'Ò'Ó(N(s(w'K%·#+ Â%8¹CFvu2Ô\I®» ç!!~ ê P)Q‘³@ € Ý §J#!KÖQ"X%5'?)E*z+Ë,,0+b*v)‡(Ï(Â(å)’*l*ô+0*|)o('&}&%ò%Ÿ&&È(Q)ß+q,®-Í.Ä0{2~5×9¡=ÙAùDëG}H2H²GÐG?E‰CQ@Ž=ê<:³:p::Ž9®7ó6ˆ4§2›01.3+m(#ØátßÂ.(¨æ¸§„}F×O°ïÚí¶…ø­‰K õ Ñ  L u M €MdcÁÙ›4ÀÿÚá Û U ;”Iì ž Vé—§·wò Å!»"¸"Å"®!Πµ߽Ít K Ù! q|==®B;ú;±Î i!’"º#Ÿ%S't*Ý.’2™6Œ9p<<î=€<—;î:'7ý5Y2À0û/¬/~/«/£.é-R+î*'õ%’#— ôœâ«ÂÌ ì É T Ž ¨ ® w!ÔÞÅH™DÅóè~(-ë$ y Å –jïEdd  ½ D30…(¯ ^ ó ùìû )n¾ Kc ” _P#̦c.üäÃÒ£N.¨O“g1áP áᠦؕp‡[eQ2~é#h'1+.0Ø1Ò2u1‰0Ø/,ñ*`'Ô&$Ò$¦$Ä$½$-"¹!D?<õøgÌ Y u ,þ‘+Ï•:“ò¼ { Þ  [ Ÿ é ã µ > ð ^§¨­¨œË¼„É©(-`aç V Q e “¹ìåÕ«in‡Q5ÞwÖF{ô ‰ ï™·`I8cIå ¨ Ü 4 ! ' d ƒ ‡ u \ X d } z ;   ‡ ¦Ï¯Œ¦¦¥ù …#e&' 'Æ'&„$ð# טȃ†y½AQ¥Êó¢ ¼ 3‚ã~]ßì $'—frhe°Ø©>ø¼M÷ŠÄމn‚²ÿ&oætöAsf_3Ã’WÁO¿%ÿ±ÿQÿEÿ(ÿ„ÿÝ÷mAó.:œ áØ9W&@©ª¾%zÞB•æ ( К“µ¹äô›r ( Ý Yÿ(±ôðؼ3Q(ý•„tæa ˜ U ý VZjŒ3)Z{[C“åÚµÃó6K ÐE@ ØÂØß¾ÃͲ˜£®–yey©ãøÿ'@b|š‰d ¹Uÿêÿœÿ=ÿ`ÿШtšÃèÏÐJ'ÿï0{ÿtëkÅÞ­‰‡‰UGL܉É⪠РQ½›D é×t» ­ ´ N D 6 Í Å }+g“;»V‚è<ÿÇÿÏÿÓÿ ÿaÿÿºÿÐÿ¼ÿ„ÿoÿÃÿ¶ÿVÿXÿÿ¸ÿ»ÿ„ÿ^ÿwÿË!UP8YwoN@,ÿñÿ°ÿƒÿxÿ’ÿ¯ÿ»ÿ¢ÿ…ÿxÿ™ÿÈhµ,XL4âŒÿšÿCÿÿ-ÿ<ÿLÿMÿ?ÿ.ÿ$ÿ0ÿ-ÿ þÔþ—þþ±ÿ ÿTÿ¤ÿì,}¬Æª‡S, ÿóÿÛÿ§ÿ«ÿØWÅpþŒGÊñ  ´ D * ô D ªÏÊç0ý&²ÒúL¡” ÿûÿÍÿ¦ÿJÿ*ÿyÿõÿêX‡E ]´ŸU(.j˜u62}»³Š‹•“ˆxnxxY4*Roc5ÿòÿù Be{žÚBLV:Û©vBÿäÿÆÿ«ÿ®ÿ¼ÿÛÿîN“ÎñïíÛÕ¿šj= ÿåÿßÿäkÂçNçÀ¹{ º/òÍz2§Õ)×ò)'« ¿¨žYŸ Uÿ¶ÿˆÿ—ÿÌÿäÿËÿ­‚BÿèLt`ÿÜb}[ÿô4˜Ã´”pp‚wiJ!ÿþÿÛÿæN}zY!ÿûÿíÿëÿýÿý@µÝëÄ”lK( &Hu¡¾ÚÔÀ”pJ(ÿØÿ±ÿŠÿ‚ÿ‡ÿ©ÿ¿ÿê*b‰W73wØO³çûµ­Ð¥$wR¾Û–ÿ·ÿíC<ÿñÿŠÿjÿÙ3ÿ×ÿaÿ|ÿÈÿÜÿ»Eÿìÿ¡ÿûi]ÿùP|<ÿñÿñ/€Yg¸Ú·u`j|€h:ÿúÿ×ÿÛÿô6‰¾Ï¥t?"ÿöÿïÿÿ6ZxŠ” ³Òî þלc5ÿüÿçÿÝÿÓÿÒÿÉÿÙÿø0n©îúØ‘YMY‘ÈDO)Û‘Šé%ÕJÿéÿõpÖ§$ÿÃÿºq4ÿÌÿ­ÿÑ9ÿÍÿkÿ­ÿÜÿ†bÿ²ÿÓ-kfÿØxo*ÿáÿàP»®UgÖì­_+6jІo7ÿüÿÔÿ¸ÿÛnÅóå‹Z0ÿðÿì#Gf€˜°Íæ÷õÌd/ÿÔÿ½ÿ­ÿÁÿÜ(VšÔúãœ=ÿô(eư„&ÿ®ÿvÿšÿ÷=(ÿšÿ4ÿuž¡ ÿlÿ_ÿ¿"@ÿÚÿwÿª #ÿùÿ¡ÿwÿÑÿÀÿ{ÿÜJ>ÿýÿÕÿï\¢VÿõHƒz ÿˆг>ÿê’äàŒ+B‚±¹†OÿÑÿ¿ÿ¹ÿü[Ì*GFë¹YBFFSbtƒ‹‘“”™¦²¶¯¬œ…iT@*ÿøÿòÿú%V‘Àæ!0$Ók ÿ½ÿÉlÈô×gÿïÿ’ÿ­0 † ÿ†ÿ3ö¥ÿøÿ‘ÿØZs5ÿÖÿ§ÿøFÿ°ÿ•ÿ³ÿíÿùÿ–ÿŒÿ´TNÿïÿ»0¬‘,ÿëÿöc©JÿÐÿ·®Á4ÿí…ñü¤>S•µ¶K ÿÊÿ½ÿÍ$ò:HT4 Ú·šqXKRTY]`bflpvtqeTE<9-2@kŸØ  4%ߊ-ÿÚÿÏÿêH¯û.ÇUÿÑÿ ÿÐ@¦’ÿçÿOÿSÿôÈ&¶ÿêÿƒÿ¤#‡FÿÐÿ¯ÿÚ.LÿÞÿtÿ¤ÿýÿÿÿÅÿtÿÅÿ§ÿÌ9yÿÁnuÿÈ!Œ} ÿ²ÿ­Aé¼-ÿß« ŸÿÏÿð2ŽÅÅÁŠ?ÿõÿ­ÿ³ÿåS¹@EE'é³€^RDBBGKJD@CKNOPSW_[q ã&IZ;"åšDÿæÿÄÿÄüKD.ÑZÿþÿ¿ÿõ†ï×>ÿwÿ9ÿÒ¯Âÿgÿ€dfÿùÿ–ÿÈ'Cÿ¯ÿzÿÔ+ÿïÿˆÿoÿ­ÿŒtEÿéÿÚƒ±JÿØÿè@”Žÿ’ÿºY>Ý4ÿÚÿ¹CÿëÿÒW£ÜÞÓ•Eÿæ7‚Àé #øÏ¯‘pXF>4*(2@Pe{“¥Àí,É”Zÿñÿæ"tÖ1G6ã’IN­ýÎÿzÿSÿÚ¼;Ýÿ~ÿ‚ÿÿ‚{ÿÁÿ±q9ÿÉÿÿ¥8ÿÍÿWÿw%ÿÕÿŒÿÍ2P-ÿçÿÔ?¤‰)ÿãÿíf»pÿêÿÿÆ‚3XÙ#ÿ¹ÿç„+ßIÿÞÿÇÿà;‡Æ õ®c-&<g޳ÖçõêÝÀ¢„kYE7%!':FXl…žµÍÙãÒºŒZ.ÿüÿílÖ6RQ¤I"wø!Ù+ÿeÿ<ÿ׿H 3ÿvÿ…•­GÿÐÿÉfsÿ”ÿ¥ÿô ÿ£ÿ[ÿœ4ÿ¶ÿ¯ÿéEkÿÃÿôYš‚ÿ¹…¶yÿçÿ“ÿÕ‡<jEÿÊÿØIÙä ÿÐÿâM›Ù ç¬wQ23<Yqˆœ¤¥žž™€riachsy…–¦³µ»¬‘iG++b± <KÃjoÑ $Æÿ|ÿhÿúÕGóÿrÿdÿþ°Å\ÿæÿ±ÿþgy2ÿÁÿ‰ÿÛ:!ÿÊÿ„ÿ{ÿÅ)ÿÇÿ»yUÿßr¯UÿàÿÌœÖ|ÿîÿ‘ÿÑ—V•Kÿ°ÿ¤*Á •*ÿãÿ¿ÿäNŸàú½†Z<707=IM[y“ž›ž¡¥¨©¨¦¬« ˆuY/5_¤ö*HËfÿüÿõ:£W-¸ÿfÿhøeÿÿGÿDÿí›âÿáÿ«ÿàH†HÿÚÿ¤ÿ¾Kÿüÿ’ÿŠÿ¼ÿäÿõ>Qÿúÿµÿ÷aŒhÿÚ8¥¡LÿêÿÕ9µÞ“ÿýÿ¦ÿÚˆF„/kÿÏÿ®ÿö†çî¾[ÿùÿàÿÿ*uÁñ ÷Û©{X=63:5@_”›¦«­«®¯¬£¢’qK1" =V|´åß9 ÿõ$c»%@ ÿöÿœÿ¡2dúÿYÿKÿä©é—ÿ¯ÿÒ:}mÿ¯ÿ½;.ÿÈÿvÿ¥ÿöÿóÿÓ,j3ÿçÿä#‡®Yÿü _«­EÿäÿäC̬ÿÿÁo7šA‡ÿÎÿ„ÿÕPÌùÌž[ÿð>‚ÁäûçË¡ƒre^KFQht}‹’ŽˆŒ}lI*'0JiŒ¨¼ÛÙÁƒ9ÿíJŸô?þzÿõÿ’ÿÇnlûÿFÿHÿû· ¶ÿÀÿØ.s$ÿÚÿÃÿý:.ÿïÿ¨ÿ“ÿÓ ÿèÿà YUÿåÿèM§;l¶˜>ÿïÿòVÊú¶#ÿ¿ÿÏ\ ^9˜ÿüÿ°ÿÀ,„¹Ð«|D6c˜ÉÝâʶ›„oUIGRU]m{~|„„ub\XE<@Wk…¡¸ÒÑÊ]"ÿù_¨áÑsÿÛŠ)NäÿeÿSÿâ£ð®2ÿÌÿÕ(js9ÿíÿÒÿî(D ÿÂÿ«ÿÇÿûÿØÿÕÿîNMÿÚ^’€+ÿðnªš?ÿðÿêAÌÞOÿÅÿ²ÎRDÌÿ¯ÿ²ÿæM˜´º—xU2)*Jp™¸ÀIJŸ†rd[WNLS_dfpo_PP]cn€“¡©´µº¥€N ZºÞØÉ;ÿøCÏ2GÇÿöÿeÿj¤êœ ÿÊÿä,qp6ÿûÿàÿø$9!ÿåÿ¸ÿÏÿýÿîÿÆÿ÷ÿåÿõ6b:ÿóužb ÿ÷#p ŠDÿþÿþSÁÕWÿãÿ¹¢,ÆIÿãÿ¸ÿè"m¤±±qS<:<Us”²¼½¯¥—‹zfTG@538BCK\r‚Ž›£­­­š~X0=m ÆÊÇ j6cÎ-©ÿ€ÿ‚ÿû–Õ/ÿÚÿí<quQÿõÿû$F9ÿ×ÿÈÿïÿüÿÍÿ¼ÿôÿæN[? Cˆ‰Se¢¡Zÿ÷4°ü‰ÿôÿ«ÿ×gñ!öuÿÖÿÑO‡¨¦¨•fH?Db„¢µ·º±ª™†nT?)#"2D]vˆ••”ŽŽ‰‚jB&6a“¶»¹›wO#!7îùvÿÛÿŽÿ§"¢Ì†ÿäN‹D 'BBÿðÿßÿêÿáÿ¸ÿÁ#ÿó/[b1 )eŒ‚P 1u£—]Q°úåÿÀÿëTËÝ‘.ÿêÿæ>l‹¨­¯œ„jUSZn˜˜—އ{j[PNLVct…Š~rcSF4<V‚©¸¸Šj6Içïvÿðÿÿ¾Œ³€(ÿëÿÿCprP ,=/ÿÚÿàÿûÿøÿÔÿºÿÎ>aT5)<k‹„Y'2l¢¨}A8’àô©,ÿÕÿÐ+–Þí¨Tÿõ+W~›¶¼À«ŒkTPQ]fnsv|‚ƒˆŒ‹‹ˆ‚{yvpdUI<DUz¦¿Ä§‡eSI&)V¥ù ßoÿôÿÁÿèNž£`ÿë Ite1 !(%ÿîÿÛÿëÿúÿãÿÒÿÎÿÚ /WbO1)QˆlC)(L|šœwA+HŠÑÔ(ÿáÿè{ÌÜ»p:$:Y}™¨»¹«yjZW\jrzƒ‰Œ˜˜•Žˆ~scO@6=D[|™¯©›~fUFHDfµô Ðl ÿÒÿôH˜¥k"ÿ÷;^`K(0>(ÿëÿëÿüÿÜÿÕÿÚÿÚÿö 9SX>):Zhc[K::Gf‹_00iªÅPÿá\³Ù¿›kHCI`o—§°ª¨›ƒqnw}ƒ‡‰‹Ž“–—”‹Œ…w`E:=Ulƒšœq]WV_]k†²ôþËiÿúbœœb!HbU7361);I'ÿýÿ÷ÿúÿáÿÜÿÞÿÓÿø ?R< %?T]ZJ86C`—T:Jx§±™Y ÿô\š¹Å§€]NXbv‹›¥§±­š‚vvruyƒŽ˜Ÿ¡¦¤’…xiZ[k„–šzdXXValмÝïÆu-<s¢v;BUVL=?=&2E<ÿëÿûÿüÿìÿâÿßÿÝÿÏ ,D<)%0CQOD:>Qfjm†”ŒrVPc†¬§q,9t©»®ŠtprŠ‘Ÿ§£”‰tru€˜ž ¦¦Ÿ”Œ‡ƒž¨«žŒzppoqls‡¥ÊË©o:6c³šoC1;LWI;EQN: %B>ÿüÿìÿèÿãÿçÿáÿØÿÑ ,EOE1%0FWWE9F_jq…ŽŒzeYReަšk=#=v¬Å¹©’~‚Šˆˆ‘¨«ª¡™’Œ‹‰Š‹ŒŒ‰Š”𢦍£ –…vqtos}”µÃÀ™c@@iž¸¦sN?DUWPGCQV?%,CG* ÿéÿëÿôÿçÿØÿÖ$#'3DY]H1.@ZgS=AXlz‚zuzxaS]w”†b6*Ax§Àȳ‹Š‘Ž‹‰ °·´´®¥—‡|wywxy€š£¦¬©›Œ‹‡€€y~“¬Ã¸_?Lz¨·›oIDWbaPAGTXK+0MO6( ÿýÿ÷ÿùÿùÿêÿÜÿÞ &0.3LaaP=9LcdYRS[l‹‡|o`Xbuˆ•†cA/EjšÂÌŬ ›–“ŒŒ•  ¢¥¤™‹~yzuuy‡˜¥¨¦««ž’—’‡‡š¥·¶¤SBMx¨¹§z^V\gdYMHPUH6(*AL4 # ÿðÿõÿûÿîÿåÿâÿåÿü -($5L`aN:<NakeXQ[w|yzwj^Xay‹ŠrL9=f™ÂÓÆºª¤ ˜‘Ž‹}‚Œ““ˆ††ƒƒ‡£ž–šŸ›™£©ž“•£·¿½ qM=W€¦·¤`cuwlZLLRRI5)4CE4$! ÿñÿäÿôÿõÿßÿàÿçÿæÿþ%+)',<JMD99G\ih\Tav„…~uvwri[W`uŽ“aLUrÀÌ;µ«¡™”‡‚…‰ŒŒ‰ˆŒŽŒ’Œ‡Œ’‹‘šœ ¯»Â´šyXSg‹£§¡‹sfoyo^WVVRD6.2DL<#$)ÿýÿõÿúÿíÿÜÿâÿìÿâ )1&)@L@0.@]pkZT\o~|qlmsul_PVs’ž‘yfcy™·ÆÁ¼°§ ›—’‡ƒ„ŠŽ‹Š”›•‰…ƒ~„‹˜§»½°‘n^^zž²©Œ}xwyxn[OW`XF4.6EMD,&61ÿùÿòÿåÿâÿçÿèÿÛ ++#"6FE:28Lbli^XbqvsolkmplYOYq…ŽŽƒvuƒœ¯¸½·±¤”‡}xyy€Œ•”“Ÿ§ “Œ†€z|‡™¥¬³©“ygjuŠœžŽzy€zqfZU[[G3.9FMI9%)1! ÿþÿþÿïÿÝÿàÿéÿæÿÝÿÔ "284.3=GJD>?Mcqnb^ckrsmdaltk[OQ\s‹—”†…Žœ¨¬­ }qpoux‹•–•Ÿ¥¡™˜–Ž…{|…“ž¢¥ž•‡uou„Œƒxquƒ‹ƒqe___[M5)5JQI;,%%% ÿÿÿþÿíÿÜÿØÿäÿîÿäÿÒÿÐÿûÿù$/7<<=?EHGC?EXild^\`hopiadjkida_i|Ž—’‰wyŽ›ž›†z{z~„‹Ž–›˜‘Œˆ~|€ˆ“މtmhmy†‹ˆ‚}ƒ…€sf```\RE52APM<.%$&  ÿûÿìÿéÿïÿõÿòÿáÿÐÿÏÿýÿúÿø#'((-9CFCBCFIGHPZbdc`\^gopia^epyyphhu†’”‡uher’š‘‰ƒ}}~€†‰‰„}yvz‡‰„~ujdaemw|}~€†Œ“ƒrgbba\RG@=AIJ@1)'&$ÿúÿõÿþÿþÿíÿßÿÕÿÑÿüÿþÿþ $%&.8>BGIJJIKMS\dhga]_gptnebfknlhcft„‘„tkkoyƒ‹ˆ~xsrtw{~€~‚†ŒŒˆ€yrjedju~|‚zusof[RJA==@B@:3/,($ÿýÿøÿùÿúÿöÿêÿÝÿÙÿÙÿÓÿÿÿÿÿü &&',3>INMJMRRU[cjljd]^juwod[V[dlhcfsƒŽ‘ˆ~skijrz€{tqrsvzƒ‡‡€{wusrqu|}‚„|rmpw}€wfSJHB><<87:<92+#ÿýÿøÿúÿúÿðÿâÿÙÿ×ÿÛÿÝÿÖvips-8.2.2/test/images/sample.png0000664000175000017500000245105212530402247013652 00000000000000‰PNG  IHDR"ºsyŒ pHYs.#.#x¥?v IDATxœÁ`VkàW†¶UËÜ ÿ²—ëfÛÆÍæÍ˾Ù6VËnÙ¶íÖôáœóòx!n³5R¯à€ø\JÙ}«®Uœía(ZîÎc\DÅŒüä±*þ•a „`·º¬n©™j |©ƒ|(L[¡ÇÑÚzm,š¦<œòîl.ýÆ}¢*øWbh|××ã“ ¬L—½é/ñ<Ž+k´Â!k¼p¨Ö_ë´@íH±¢DwY„W¤[ïÕ$³¨SˆO”«ügö#Oi÷0­]¦£a§=¹õhÒFùT7öÙ9ËÛ9ÿ?ïDÞ;9SEöj¾º‡¾HKž ½b46šéÄoTv¢Y3'‡ï4E5Ñ©ñŸ~.,ÄÓv™¾od9ÞU-C«Hep oÂÝ(¥Åá1ðP®7Þ±®[$ˆ¥Iåx¡£Œ²~Î{P•"—à 1-G]´%¤/ü©^Šêð#ŠDTE¹D6[ÊÞ«—à+žŠ×SÝÓÑXT]Ý‚ÓÁxzTmƒÛèõ$ódôÀå\Z Mikà"?õm®!ª¢è'r¢Á¸Šò‹Óâ¥Ó |Å/™]5àEp--§ËWá…°±´y[8›ufÃчòp;«*®vò‰,EôeÄrƒ~dô´;Ò#´¸3L:j ðã™úm£Êbv‘V5=Ô¬ëy4¬w !CAŒ,«ttC{ˆj¡´up¨UÒ™MßÉi±â+ÈWÀ<ä£Se{}´y6LS‹• bµŠÀ£š…\q××J£´·¢‚5<˜ÄKÿÞ‘1ð×%ÙxpQÓ42{Jà¿@¢þQB«DÜúyb„oõT6V¦ä®Zã´£î@ O¶%KÉkÒ­¶¨Ü$›ŒW×¹¤+X$m{ “ßÅw*'5»óyôÃrHÖÓE*Úì…(.FdÔ´ë²qv<=^ó4AÖ‰í•ýÌay{î“ZÊ'ß‹†â0ÿ-|ü›ÙÝ\e4÷Hí;~2%´‡{Ÿ*W‹þ,¾F¶/ªY.7Á(œ€þÂ}­•n€%è9Ó,®¿Aí"fyö›[<5Ý÷Œ¡phk|š`ü±3™–تÁîʬƒØ*G‰Šò¤ú-GGIÓúä“Çà>™ƒ%†úzíŠÑ:tVTõи°êž…Z[”ÙÞ†Š>´{ <8ÙÎe삌ÌNWþU|G9 „Âߺ² âbÆ*q9´oÈ×qptÅñÎö_þZ”ò7‚WÀt=\gÕLÞŸu<þõöu÷šÔ Á›ø¯:‹ÆÍ:Që3ûâÎþµ?×’¿*d-í-CØòóˆ§3ߟú¼7ØÈwÀšHºéK=ɢȎ÷©Í²“¦: d5†—A7½§dê.þ#÷ªJà| û#>S§ÐYž™N³G’ödL3žº¡¥F7 ؇`c±¶v–³ëzv­ Y ÕÒL@ÃÈBx´—ÔÅAvè‘øyTF§Í¿é'M”±Ž;í‡ò¼o“ÍÆ8³ÜÎë±¶ig ¤×´fzgc²yЦ×76ã3°xÌ›ƒÕàð€ß +^ SÁÊ)²»£ âjZ[¥`¾hŒÎƒ}J°Xò@¯¥æ¡ÚG½>: èãÁR±™ý ÷žj‡Ø’E]õ üæGD§ -éä¢Ãhsë5²‰TPÆõ àY`”6H¯M–yJ…Ö7k€{°·¶{ª> G}Ñ1à›Y]Ív9¥ yxIéZÚ•;¨1yêʧ7#¹ÈY|lÜ…ÖA¦r€ix¤Ø®ê‚Nr£ŠV§á°T¦¨sòO’ÏÔFeáIh†æBŸÐai’5(–äÓšAmL„KT6–—?圆|A "½`Qx^ûJëñFœÅˆ@ÿò‘Î2ë&›RpÐ6n+kÈdoo/«”qXõüþ…f ü¢å0™.Á¥ 8 ú€I*„ζÃ5ª;kÖª† ‡ôñ J@G­«« Ép7pw—óÄdÄ?ÎôŒ›þCNûË>Ǻˆ›æm¡n‰e*7Ø&[¡ aà¡; ŒSeàfxUQÉi…ª#Lq Fr“ÅVŽïMd-¶Û( |&]b™¼®N¢cª*˜&ˬävã&P§°ŠlEònªHü%ÀnÈPçÑN˜UXê/8\V±ü¸&c{´¡ÕLmÔj›…\KH-/þ›ª/j j€;‚á°LPÝÕyRœ€·QM7àU°®\(…<©žªpûêƒæ‚¦ì wË-ê…ÜŠ·òZÎ Žµåztží¥Óå49.Õﳃr¦º ò«ur¸,©–ò¬©¸7“ØÑX÷¸òƒ3¨<²p[ý¦šñ/Wn‹yUy\ldÃùXaàD‡Ñ!¬VÈ1c,il,ÓFKŒV—à6ÝÞ -ö ó²ŸSÏ|¿b> ÓÂþõ”p¯ÑJ _ªŒVˆü‘iú*Ý4w£«Æó†×²Ú+­»à%1žš+=),†ß¦9ÉØ NE9`ö£ÐO5¿Öfcx ÷`‘&Ó–Ô/"–«ÔMðÁÈ¡w½È¢á\}ìÓr#î£rà î‹Ä…ò8Ã`xT[xÛ)›ªÀÑ»h ‰—…É~þw¬ ÝŠtÃYÌsæ(s¹™*ŠŠdÚÁ²ì’Î-‹ËËSÚr͸ lX„Oùt‘ü£ß‚ÜÐLÿÙÒñwƒí§âµóP¼TÏEá~ˆ ÿ À£KŽ’Ee¬ñ—8…Mí2¹§‘Úx7Z˜àAÙæAaªÓÍ^‚'qà0ü¢Ý‡D}€T›hä*µ3¤…«›™aü6w¯ú]ò^|GË|p&ÐT í?øZag‡µLx°&á m%{ü-[²’|º¥ò¡¬r©¡ÿ ø.žÛê5µ]ÛL¢´.ßÈZÌ­~Jª=GU LíÌ)Bð¿Õwܘ\ÔMü¶Z°Ÿl¿)3kÕÅtœGaHœ–‚ÃTi•ž”¥ôn`³êȆÃ*è ¼`/RíÍ@à}ÈxцñDV3L“!j·XA6ÃU$V|‡mÕ;zŠ–7Ð k›4@bÕ]W?М"Q6øÉn<×:µª­ã’wÑ ðÞÅ5 Ò¢UŠZÃ@‡@iyEíÀŸä9`´†ì·Fõäh2?Õbñ&h°x˜ÝB5È ³€ñE)ö?æ/ »‚4õU›Ä¨Àƒ€9ø€Ê-_Ès°!¸† —b¬‚=p–^”nS†ªáæ:ä(¯=ß_ÕØŽè‘® úTŒ&M`xË9/'¾‰bx¡ sV’vhzdìÔª“®òLH™bŽS©àðòBÖYJdI%æÂp¤8ƒBàUBÙ¼Rº†ÖC]Ô‚ŸÔPý’<:‘ýª¯˜Vû[®À^{ypò!i>:ü¾Ñ™Œ{«Mµ¤¥ü™ùei  X&êGTɵµh k•:¥éEåw¹TÜFÇá$þ^Q7D†š¯êÁŽòÈ!î£ ªQ5Ø_¶DB UÅH3­ Ί†£ƒzN° V“å#”¢g•¿œåZ¶V|fŸù(õQŽ`»D±‡ÑWïŠß!/@¨§2ÕCµ æVWQÇUS†ÖÊŽ¢ ¼#“è\~BÖRÜLJôÆð€þ6U[ƒìZ¼‡˜ Ê€~ò Aä¶Ð]0CíQו^ˆµê¥Ê¬¾ò>O^”{íÉ¢š\¤¾ƒ)b˜[˜¸´œ/;¨c*¶‡…ù&ÕTnõàP G”WúÀ@éy]0 tTA-Uô‚@8K€dµG;€0|…èðE.t]M…=Pk8^Ýñ\màc”EŽPSÔC–_†+äRx^* V ‘ßl ¡›®¯Fý鮯ÑrécQv8@¾’;Á8­»¨!ÆÑoÁçÖdÇe­ÊØŸqJ-òÐ7d$hŽBÜ•µ_d†Áá(ùŽ„ÏIP‹dG¹<8‹Ÿ“Ìi%Úé)¼kÊ”ÕÌÄæe—n2JñdUÆ–‚¨gò_§’sÍÀ9 ¦ó! Â^IK²rv e¨º–¹nØe‘&ºèaftEo–ÖÜW&ƒ`,Û[)`üL§ÉtUÇølW¶cƒEÑXœÑ–èUïU5±>‘¯Ô>ÕG|…x1‘¯Érì"òˆyv¢‚â©ÝœžŽXK÷\Iú5З‚wÆ Q®(«ƒ¶ MUÔC±DZ€¶pü¼ \n©Bj(Ø‚j‹‘j>Šòw>9Ýð!¸\zdg~[¬f“áJùƒbù?<{ðly†*Ö̹KGÉrê„icp‚°U~•e3‘ÙÚÎLܽõþ <Œ±{- +SÎ'ÕZuVý- pŸEÅ 1ÜXÄÖÁ¶¦Ãç‹Éü}Ö:Äê;׃.𒤹Ã®ŽøŠvÔÈJƒÄ仾+¯^‹·+ý'tf«áM‹4ÉF³ {#~óã>î£]ÒæUí, ;ÛÏL4‡¢^“_X=ÈRK}Â/õ—"T„ú zȇJ‚ ê,DËÉh¡=ž7‚E•¬¾t߯–×£RØrí'WÄ4Ø–V$¡¾x¦úŸ\ˆ–€Š2FýQ–“G.ø•Á—4'3MuÖP³…LðöQùôFx,ñYkAr‘N•;hš@Š£«¸?ꈀ.ð¦ºÈ(ÑLÍgGÙNÖ‚ÅÓ‚l¶*Oº°š*•Uqù Ð×AÙÄ@¼—ÄÇp&lá`18“ÔBå‚-a”òËßr€*r€û \ª6*“dÈnj?ê#>ªy*TÖ’sáIò7ž F¢t´ÃÛµzqÐMÆÓäC¶MSÉj ªÄ«Êgò+ï >ˆRN7z>ðVvGµåÚWlØs‰·¶1.¬}¦|‘Óhn{¯¿ Ý)—úUœ¦=e-;’Æñ8ñNåVƒõ8’5EÕa(JVÍeeÔïßÔßb9XÀ*â™h†ŠÃýñÂÅ1YY ÷Ñp |§ÀkqFüPŠuâ™Ù);ÑÉ-Òh j°M¾Ü<=½œ«5­­f¸S½{CR1ýà+¾…¿f}Ô8°U4'CHW< Þ„ËT^ÕL…ÅÄ$¹lã¿ÔX”UÔ34ÕÅð\‹&ýNE»šÄp¼¯-×N{ûèyQ2Öpî Ê‚ø!)‰ÈYY­‘Ôx# -$­ 쌎`e5O¢mì[Á-ö\ÿ)Ë’ýd-XVDÑ>Lgíì:ú@ðÂô†FƒHÐZOGãñTÁjðN¼º}ž×U½Èy$¤‹óž­qN–Ø«ØVc¬vÀŒ ie<ÐéáZ6} ™JãéÑJ=—½ÓަQ*(ï‹$g-¸#¾³Vtê0SÿÇhbzÜÝ´u°;ŠÅùÍçÈ‚/ñ\ì'ÛñluE¹Ô6õ Wfø;U-£Œu!°&p=ow v3ŠÀŸž‡šA²âˤmˆ¦t—Ñ8¯‘b†¢7ø:&:Èq²‚˜ˆþ «p†˜>‘è’jîÏÈk_'Dn w²roIwš«s¾ÿÉåüÏF®d0¸f]áEG£ùh2ŽW ñt ÝP¶”µ‡:·Ù3kÏ#%îçúåÚa¬3~ê1N>q˜ñe¦Dû ¸Ûy‡¸{G%¶[¬ƒHð l ™qnåS3yQžÁŠŠ~â«, •S‚ŸåÙLRÛAIxÍ{2à³î©žè 0¤äëáG¼‘Çã30–q_Ékâ?¸¤±L8?Nƒr0øŒ'Ê®öjÿ^zXv•Q!7”T;¿^Å©òF‚~Jµ6¶“‚ü{É1â÷îŠ*;Þë="Z€ÛÚ&<ô`íÄ}ÕÞÉ&wªªl¹ Ÿ÷ÒcqÃÀÔ~é5ÔY†å ŽðV =޶[ã¾|ÕSÛ»h‘¬&Éê‚Ãò·¼.ò_b·Ø€?¢ì¶˜H¦µíü…þýè7¢ØÏ¶ˆC,«­S|¯Äfd™Â(£_‡Ñ ð/Ê⸬¾HmYaªþŽmeaÎCåå½x2«å´¶CÐTòé ™ez+çÉ#xXÄ¡•*ŸŒTÉìtY|;í'¾IÁx¼Éž|$ ÉÿèÐ@†öÌXJÈ–Ä šÑ' MÿQˊLjéªy0JÃUÁ1°o‚ódxÄÙn#^›n£•¨‡&ù]QO­ ¼ cÅœšh}ˆO–'È<4])ÙÄ¢F|°l‚gÑÆÔSSh-ßZøUV±ðÑìŒý6Xˆ÷…8Ké.%° ºÙN” =ÈgåA~œe±¢¬æv9šWuIoèzfö™¨·ÁSÄ–à¶ÒÎÉ ]úg¯aDk—Ó6«ÏbßK?‰qŽnåâ–ï†ðÈ‘àX‰¸»¡\¨,®­>žS]ûeg5˜^†ÙÐo]æ‹dœSÔb¯T×/•¤$_µž¸ˆœ%{ã«ê½ÓŸMbMm_nï± ‚c`Ì«-„ÀvdãyHÈ!b0&Á±:åeW~F"1ž­³¢ º^ÅŸB;ËáöwÚ1² íöì¦ùÙe8ÇèzÔNHÖÝ ­ºÏ*¡1zEXDHŸÌl5áqΦ`sö<ØÃw5xVã£Ô…ÀtZÄqÎ-6z;-Îqž—_&!z)ù3d=>oÞÁAL5—¨Äç³£|#Ûü˜1'ÐÓùÇZÄ*XÍÀcœË¸ZâÚXr ǻ۹wz ¸ÎkIuí*ˆ×ÂÊh6)#–rŒOªIð9\"[±GÎÑ”¿ëX;yR¶t(Û …ú ^ƒžÚp dkcί*¡/à7ÿ¦]Òrš våð»÷oê;Ýi%{޽ŸÁ@B`<ËpUðÒ‘^%u2çÁÓ‰Ÿ¾2vø+±Ÿ¬¸üE‡±yæ3>H(:O¼UOð Õ¬à^°R(UQ•‚×áE­ ¾/©:j¶*:ÃPZZ6•=йŸFõEk˜‚† z*€w‹ö¢°È"nIGå³Õ™þ ÷ã¾2B­ö~³7RÔª°¸6ÿ[<”ùVÎce¢0?„%ða­(, ¶ÉuJäCØXÞ1LõT×Á~°îâÍøkú‚U5á1‘&Z«nÎ`zB¶åݳò’§Ž÷—'7Z¤Ñ7ÁÖéAZUU+Sj‹ñâ²½Ï%6nŠP âÃYdü„oãQÐuŵŸuÅÉd}ðºëfø[÷+ãzT뫌³^#â)ÎGBµ6ªƒú)Šø+YYÓ:¥¡´6¿gäMçv~þTD‘‰æC³¶Ç?º" xcÃN§]<‡Hw³ŽÞÅ{ÄæŽ"?ÉaC—›EnøK´F]Ÿ@¢kyäÿÐMwU)ê°lïì”ã¸WÌ–q£­¶Ë„®ý‘Š»Aì† «ÁAµLÔ‘MesžÇÿêbOéÜ+ê‰åò‘næ\OòÎØ…ëbÇÈâ°#Ü ºÁv𩪠áœl¡Ê°NÒæ'÷IY˜ÜñW½ÏÛ^uüºìÍÛ;oY«Mzý ɇ{è/‰OC†á¦žo°>ÊaÜÓÑið@JõˆÝ°g:Äî`[öR»kúÞÀIç”S¼#›U$̬õ±ÿâÌ×V-ûäÔgOU´VÏs4Sc@D™œ‡@]-Kè1¹¬ÑbŸÇcÞ‚¹Œ›ækPÿ 7vV'“Ò(íaF‡ÆfàMh¯–ÌžÉ5ä©ý†wÄ=ÙD ªWj³ì­‹Ò½öO6×—Ù>ËÛÃ!J²š² Â)¤Š§.H¼¤8”`´x »ž ‡¯U„*d}“.ùQ†²»4(Ç¿¤/ÿµ•]´ïÒúC³³×kðA}›Î¼‰â IDATw¨Ãl²Œáa[ø½Õ™£" {²„ÏÊcÜ6Þš¹aºrÉú¾ø”º}“‹~ùúy•oéÏïŸÖ2§ÿùÂZäãÃr® è¯Ð`ÈÀ6–ëÉKèœn²â-ÛH¢Z`£U’¾ tcŸx´•î'´½¿]&JÐêz5ý²€åa1ôQ,¦/y36͹ȼŽßqù÷±N«m°qz±Œ*ÖÝôŒä‹"Ž bŽŠ¢±2T$8ùØ/¶ŽÖ³79Yñ”>¾Õòl Õº :ˆy4@²±X‘¶^ŽÂÕÍkx¬+o¶¬‚H…ž–ûÊâ~fü®ñ#=þªfÿ´ _†ØÅªòl|ƒøˆŸËñPÅQ‘L@:\¦Ö¿âCäþ.Ÿ‰™ê¬Ó…v ÊvÙ?h˜““o‘ mÔ'4 5×K¹Ê¢õšZN®;Ãì$kMú„4óçÉ_/Rõô^G¬ ô]ULFÀÏÏëX5è!íT«’ºG»XíûNnçvÆvÖŠ÷­R?äIùÛéÊߪ6Ξš9yÅK0ÇYÉçÀóÖwZƒ/ð_·.²Ñ"b+ê¶;|XÈîˆa‹C7{»c·Š0fŸôÍxoyü[D³À_uç´“÷w甈´åßå»"lŸ}=¸ZD‹ê‹s˜úõìÖW;’}‡ya¼hNê` òႸ¹z ¿É¿èG¦œIl%Dƒb¬\Ç‹ˆÇiŸ3¢Rÿþ“Ò5õª¯]Æáô¹$Fûl&„/ š¢o \£ô;hýð_÷Ge¼Nÿ7mQÆW6Ã~­¶©<Ú|ãì€m50¥gú¾”$«múä?+íFÖá?¥/¨ì,Âhà ý ÞÛÕƒ7ó}…RÚø&eI®œò2cmp\ >ìDkˆ±>ÍxU5 V6ëˆ |6ß-óðµ´¾l+Íþ}šÖ¾´g>ÿ“ïaàUÆs;&¸Ío°L4Ùé"ðqmºº£õÐ.ˆJ EítîQÍïòg²ÒÿY Ùeg«-»S >8Uí¼»3ØNpJ: `ÂÑ#=,“VJ¶f­@ö?KÒf¦?Í(ìO³û—fÇ·ÅgóÙoü+~›?ºÿÚù!ïû±oâŸ÷ú~æ[Îo³®N^ú§Iú¢À[ÿäàRšŽs P‡=Tm%Qÿâ0ž¼'ÑSXXŸFÎHÛˆ Ià9šóS=Oäkq—×ùK'?mÉþ°vúƒµ nu„°ÿ!¿Ég•ÝÌ{$Ü£¹Zèùa¸̦exõÇ~Eï•q20ÅZ~;xŒ¦ײU²±x-ãl¼;oˆ s·€6t‹g›Å0q”Ta_y˜p³„à®êñ |•£ÕƒÛÓö[_-­Á¼¯Ø³ˆI2 ·u;š¥³-ì)o+\r«(5©=´T«5ç-pmªëž«E‹CË„Æéÿeþ–5sÖšﳶ˱ÉSžü¥×Æ^”*4þ˜×tâS½©‰?›d$¥^M»K[H¨%g´ÁÚ”ˆ°eÞTÏÇÐîX'ôøð …¯Äo'_«L`¿è&+ªÑJ“-ÕV5.ÆcQq܈Åïñx|žÄ‘M¨1Ì|@ùIU4ûLNš]°·¬Š’Šê>†¾ªY#YUàz#›ñ3¬•ØÁ¶É r²Ü)³Êšª‹*Ãñ ÔÚ½Ùè`´Ðsk 8•…ßÕ2ðšŸfûêr:¦7k¼•ÅŸÅ×ÔVÁ­ßêÛç­zÉ÷´í*÷è{0À9p²ÛõœÒ÷x '¢V°’Òé%tWÍàóÔSÕm ŸØnÞÕ¾cïq^¨©N§À3žn• ÔJï<ľù¿¤ú³€/”‰¸›cpî2™‚QrWK}ôãöïw¼`POÿ¨•Öë¡Nb19ŒóØí—Èc•¶nZ½í»ö.§®¨•ÃùBÏy?»0h‡ÂÛ²&ø ~è/´áÆnd«Î|̓v:ïDÿeønöÇÉ Ë "(]­G·@n˜…ô!½Œæk”¡53Ï‘?z-»> ®%Á•¤jÀöºDÄÛ?2~¤K£Î©w°‘ñ#dTØF÷}ó‰ÑÇÀr°³ùCg²È¢ú«ü?\ÚøŽ ‘;î³ÚyòÞõRè¢Ìák“^)P]&© H®™ •놷lH‚~YËá© -Ò_˜.m;>¶“m$ ¹áO¤Ð|Y³à]ÄP'ô ›úû_ñÜϺÉ.*+rB¿eÚú5=ÑyB‡Zsá¸Ð¸«¿"õÉ`5Ü ½Îž:¾A9½ãä~>ÒJp]ï¹­÷Öj½„ÅÃív$=mŸS·T(ê'vÈD¼Ô»«¾ßŒSmÌ@ÈuW¼Ô\ÚÂhlü4Š€U —¨#»È¢8™.báxèh!z=tÌ‹Ô5øT7õ ev‡j_Ñ8âÀË 3©‹k’‰ø´æµy[ZÅ™¥0HSÅ:IäÿðÌHVTÿg‰ÀU¡'³ô®ýîÚ¡áð*§Êj5@„Š~¬ ï%ŠCKe%S<¢¸ªÖ–'°3b˜ŒÊð¢ŸV Ý¿TIÏW½–¶D««máƒÀÕa¸‡÷Ô[ë+AxZ}à£E[õNn§x5P)¸¿MjJãù>ì/ï„°Ì:Ó3iuPgøÃâËüp‚™X)‘“7PmÐgyãÀå`{{ «xi —ážÁcà‹Ýž5r4s„™aÌp!#Ú h»È$ü7ym¯Ðäh¶veñB»“Âø®f”ô—²ZêgÔ0’ݵ=¹C§¸+ºn…ÌôvrU6þ#µÖjÏ"ÛùÃ3–¤ùƒEƒҎïp6J3æ›m½/Øç)ié)]SÖ¿ø‚3´W®X³’¡¦•“XN'KÚ$m–U7c¥ÐU2ÔÂÍÐI§À\Ð Ô•cxY‘Á/"Kž`9`.ÙÞ¾hxêüs©(˜ÏQ D4ëÇóYƒí$'7­ŠÑvÊJóP§ª¿¹½Ð7S$«Â5Ye–ÿ3ÒõÁî²ðÈ‹“©øø 8ÈkË\-qŠZƒÿ§°ë>£ÿA6¸º9PX«b>’ÃUg÷.øìÔv‚1ò¤³ U×ñ6~ÜÖk£hýªî-a´›2Ý)íî'ëÀÒ¸·éÕÓÈzfÐiq0ÒEc”W¥*j LÂgñtÑûàæzryp5wc­¦YB‹5öë¥Dq~T¸Å]¾Êµ5p™wqÞˆ‰r¬’8ŒÖëYI´·S(íö0öŒ—g³Áæ$Q=…¯HCÓ ?£AIÜGè› Œçɪˆò÷p,Ì£Vრ!7ÚEhQEoò«z+²Îlå–¡ÀKŠ¹Û›Eµ]d2º/ʀŠ6š'¢ j¶³š¶æ²·Ú«ÿÊh`]fÇI¶à ç¶]Ä.¨zÉå`žÖÄuÔ{G;䮞éYÄCÏ×}wOïXï:º—št =ïäRB5ÔZÓŠbx+îØ5ÓWðÃú}±G¸º˜£Í,æ=Ï~×#ÂÕg×j 8VçæƒÐåÞd é¬àh÷]ÔŽvfŠ­,ÖªÁ"é:Ö‘ÿ–ù*‹Zb7}¥Þ€Pàq[s«ÖQE×µ>x¢± @9ÁQN!~”†Á:©e&gaêZç¹ÿŸŒ– „/áoÀX³³ÑÈêZ‹ã´\ú!3E»’Ÿ<„Ûíx×=3ÄH‡“ÍŽÞzt¥sŒö”òÇ&—a‡X+x Ÿ‡q.ã¹qo¤XïKÚ¡DTÿFàPØǃ'ò)Ç qMÕU¤©ÃúRÔ\~‡W± Éûy`mj‚êþ‘uä3•¦H¿Ü‹ÒàTœU{fÊÙê;Pê€ð¢Lä›ÀVµÎ‰áóåõ:Ú#cê ¨×è,aøí”ÉŒ¹µHc¼nÓ½Ú<år‹¾`,p«L:]ÔS1@œ@ïa.ð.x†å&¹h6 äaz€–€Igš9Œv؆+uÓœ΋ÂÎ%0]Epã¾UÎÆLæu–bËoô7{‘§Š’ê´‚–Šú‚Ú(œ‚üZðS: Â©Âzú у´²ÿ™Á™´¼¸ª¯7Ïê‹ÂÃyV¹âµ³FlÃx<[ÕÏáS‘™µç[qcÕù!Ä„,×|æäuäPc6P£²§W‚&áR|‚®’€¥ú«…h*'§ªNjŠqk!J;å¨Å‰â²©Nü*ê (»¨%áQò-­%gØÑ´ö{©¤æ€Yxžf´’.XGe€:¸ DÎK‘È‘5ƒùpQz–„ ìú46Ð.±8«åZ­…hÿó‚÷¡=ø?UƒüMRp:ŠAÇAÜ—FÑb¡sƒ%ɪ4¨Æ÷ƒšd.Ë@ÝÌËN<{ÀöSj½KøúI:ÚÞÌ„%ÅŒ¼½¼GŒtãnG+X¯}W­ïÏéËuÒò'_¤ÕÄytO[ eu/g» ’ói&ÉY²~Ý(B†š©zã ~€nãû`+؇ުfÀC¹[¼äñ6²¶Ø­¹—ï­ÈNý ‘É+ÜsŒÒžvúP½3ºˆ:£04 }¢ß´lh·–3¤QÍ{ €~YÂN¢¥Ä%û/g¤|0«—àˆ—@ûÃFfµ£—E~ {ïCÆ’òà­¸NUpn: ä»v‰äÓ&“öà¤{¦ž Ö‚de9Š_#dQôXÛƒëÃB/‹ÍìúL­º¾ ª‹bY=÷Oc.m¼ÓÆê'R@h ‘U#P4P-áV­1ñR-†,Ñž€çàƒØÓà:ôÓ}Å<žWÒÛÝU^xÂEHš~Â]ÍxA–é~2xÌ>Æ&# Óòk\•‡ÓÕR~SĨçê-¸†“.Äí.)¦É}✫šñ·{q3sÙŒ–úa1ü皩ï"ýµÙ$ÏÉÇØ/Ùvñ+8HDŠ$nËB`½ZŠri7)ø=îIúéå´Bp¢«¶ÖO-3×àƒ¨“Dk@q|–Tv!ðX?ãþGôãil–ÓÔþe=Ë`&×+õ7Z€—j™ñTͯÍ Ôa,ܤýÈ©ý¥%ñkܱU „µÇpE–Gºðg­»Îô6¶›=—µ¸7ŽDa]ý‰öÄ•n}ùâébŒ‡]5ŒF(t&Oá¬+Î6£•`.ý¤w'ýµŸ .¤¤2(­î b°ÜIj°Vb1°´œx¬ùNƒº“®8ï‡Õ99TvÆã@sp\¸Õx­Ê€t£-C-ÌÆ=IK6JNá|úÃy²Ì£ÚÂéjoØÑð(7÷>s'âxí^ ï*ß x|\Â_dV¹ -âDW,Äkô‡„içŒTÅsÁ¼¬ 2—„ É2OMB×Ð5ˆé4’gö÷ ÌÔ´Ò|ÒÁhšñÄ›KeÒÜæ:»,»Î¯Èö2Imólr-5&gŠ O ïÂCʇž'[ŒéÈ-»ñtÁ­©Vuë‡Z Æ€>x½«>Žví3nâ¾!oDI¨"ÙWà²Úh²œÔw7îjÜïßÚïâÐ>!Â>FÝ«Œü` ¿$é5_iÄZ¶”GŠ€¿ŒŠô!»ÏN°Ï¬Q°–®¿s=qÕÐK†¶ ½p5×hœŠ ´Ú`äòNÄ‹AOÔƒ1Ê7d´–P`'åRÇÀFhƒbxbáÿ±~Z0•¼vŸD絪fø—Cõ…Z¬¬wÀµð âªë–¿†cÆZûœ¿ž¯NÆPXÔ“Žó˜ÇÔ)qÂŽ –±÷ÊåÖ¾™uUý¬¬ü3ôúÙ§éné…w]M å~GâHI­"è¥õÐöh·T^Xˆ^qÎ8uؘŸInPQyÖ•é7ÖV^XX¿V ÏÄï<Ë5€F³ñ \ jñü.¿Äs1ÃÞJràk¸•j¦â`e®Ëjä=Eñ†wÐ)#âÈ,a%£®vQUÀÛU4~ú8d‚÷—*ÒFEÿÊ\x‰„¯Úx AuIÄÛ@qYúÉšönȇNáí¸j _ CºU 4ÈNŽËÅ"èAsˆ8¹R)T—즥0ÁEÈ++nC"žBÆŠŸ®0–™6&}{¶NWþ„jKwkõTku˜6"#IwwO–™õL3i;É%|‹t÷¬¦8þ§?¥½¯t0"ÐÓÿ eÊ[”UÒoz_z:»¯³¯ÑEÃF{ÎB%ƒÕ¬ÇöÜà 'NÞË|*“ ª^ª»S587J<žÒ3e°¯¡)ŸÒqzn: ¯„^ê°ªn ­´&;¬d?éGëá[h!›«JÜ%¶«V=Ô ­îÎË6èÅØW2]>Õ+ÑF‹°Ÿ¡¯#{ŒºWß ×èe2ÒzgÖJëi°–ø?Bi¼MëÊ‹9GÔZùÕy`ÝqÒ›Â"»9×í_d*™ÆbH‰Å—¦îLZ&X&êšEªSÝi&‰lëÜcE ë(?âìvZBü—A÷æýC7kž‡#­[fš_%µ·v…&úZCk¼Ê½ÑkFˆ<çu‡•ˆè¦U§kŒ½žžºÔ«á술©ƒS¶'T2Ÿ‡®§}Â]Y3Óæ³Y!¼ ò$Àšl%ûÇ™ùC(!Ž%ºO„=J1æ\Æ—ök+Ö®”°êÏ»O C»Sr¥¾ à YÖÚ«E6`sµHºÞÒƒ„¨jwfÌo[笞¡ð´„ä>8#ºÃÊà1¸= EB=þ”¥Éä¬|‹nKîü¢Ìa=pÝÑOºë¹XŠ~‚ XÇj‚gUïÉ64K£I#tÈ,a—“9ƒ[ƒmƒÁAñ–]¢™ØO}*§"r/ä}DY<ÞÊdÑ]¥ÙåJ‘žw°ÇÇ…r†Ö8»yvÇ@#Xy£‡ZÎ#ä_|±=”ƒ WÉ-`³UMjëÓž§8ŽØÏ?ÙmP=ñùDÑ?’+ÅD1‰\DÃÔV² -¥á£ŒUi†ï“ÿ¡Íê >åñÑà?ö\ktjlà„ùU!ué#wˆòê¤]YÎä¹S!­²¯—BRc\˜­E«Qu8ŽlþÞ) ÑÖh뱘.Ǩ¢²ŸÎë£@(ÁžÄùœcô¢E^™¾ðm4Å È`ü|eëñvQ탻r)ì’-Bkå•(Sy´óN¾’퀫êDO¢pZÞ©Ù¨Ž=]Λ­k¼¯ço‰dEÓ‘V2¯ IDATìM!A²°áÄ3Šb|c°aj¦Ðuu4Ð#ò”ª´¸!‡²€jdFü”þåaƒÜ74füfCDOv•|“YQ,ò£Žø$ÍM—?»FOñŒ6•­·V»7©Šß«®_úT•žÅTy5viŸå(E//J²bÆH2ˆ¥’Ùü­¹ÀÉdöä{C…)ë˰ï§ÍPwØÁ-­&ËGkyÈd¨¡%‰ª³–Œbɲ Z Çî˜k•³49ÎÌï4æù¡ΦV«²¾Ø«.:³CnòÝÊ’Ø/|M ÇÁsPU´ý@Uñnt.;Eäáâ”ájŒÓÙ'äáóGû‡úJÈ â„¨îzèɵËÀ jºû¤1›6vIÃÔ–“þ é¼5GOT'¹ßFÛÔLr×ó´_t)¾Iãþàc•ð7–ZÂ54Bõ…pk‰º¡¦ZëmüÐûêó]·Äó°ßkÏìKÀ³òÙ*“KfÁÛ r‚ZOÂñ9öVûL*‘bl ).5x5 ßÈR:AÖåÀ[;¿Ì+V#ù’ï°kËû¢¹+äj™U•UɰHP A€–0 î ô?ÆÏQnztÀ/P*Σ~8mùWQ&(í?vCUUýh4M‡¿“ç¸*¨Ÿ Nב÷j.yˆ¿ð/¨ ªÉ3¡©`€ mDÝðxôLmA§U EŸÀ í§UÐlÔ^®”.ˆsÊÒd1|CçPFeÈžb²ˆá[œÛô*êKétZ†ÍaÇÞ{öJœ.[§,öoÔHjìaÿJYm^q†$ÅÙ}øá¤ˆž¸5¹ï÷s_3øÚùÊ>Ø9ø3eA¸‡Ãd?µÙ¹6CsyÔQY |Çajé@ë¡M,œvDÝõÇÚjRɵŒF£¦Á&|Ÿn…ÛÒ46ã(ƒ·±VJË5Ø3Å»Sê)îÞ¤ž¨R¤˜9Ó_ V¦¾I(,ç+œúÇú¢6Èr¼“ëo£1¯5-â–Ý+½}µÙîûúÔMÆ þ±k8ÑN›@aó–=ÂÊoD«¢sJ•²›‹QPпÈÚ…ÚŠ½*5’ ª¡-Ée­3­BÚêaúF6Ï3Âõň×J“ĨvÞƬÈ<îp´^7 Í\¡š& 4Oy“ÊBe/¸Ö!/>ÁFSKõÒKfðsz >!îC~UO•³–AqÈ OË2*NÎD“Ð;T’ì!kèºÕhè~®Ôª“[ž}&ýD6A ºk¯±:X—D]ãLÖ á®²*"joÍW‰J2Õ$žàïê;Î {‘†êñGPW“ùS±GE8ï͘ÀËàM_gß¿¾aþ1I›D¬ìŽ/¨k4ä)Äãä¶ÞÚa¸ ³ª4·“ —c·5Dt2ó ¶…YÐÌn]RK”›ÝÄ;ÕØºU3TÃY.ßÚCåqÔ»däÕÆ¨Ch0Çë —SK"ÙUTD™QoUxñt”]Ômíî¼·¼Æo['ù3§‚: î‡ùЇÚZû»J¤LKÿ}Ë\œ´E§ \'*ÈÿÑÌV‚ø€Ý¼¿Ça¾8NæÊ¬²tçïd ó)ʉ&ÙdUÛôs,²ø6¦Veõý ž°ƒ¡ó¸ꀚhIZK÷­?;ç:&ó©dÚL>“YY'¥Î³„`˜tœ ¼,F•q’Ç*Za’…!ÕÔYKœµÎA¤ÊË?°†d £]µÑd·¬Ã³Ûƒ“'7­AæÚ@Õ[v¶²¡X©ó®³Æ}m«»½žO]&ÑkµW‹b|‰³˜l%Ãgéã¦`ò¤Z$~ól¼…³7å;â’œ©vóAUT­èRíÚ‹g£<ò›¬->¢³jÊGâe#yOÕ x&®‰¿Ð\خޡh‚Ê&ÆJˆºâtÀaê¤ÓN¢·pžŒBÍ¡›,¦ BwËÏ)]ÔRu¥-—ð|!Ó ¤ˆßƒíÙ©Y*ÊâvO»^.7Á#Òj«âh”†(5egPô[4-y{§¿šè4TãP õ´„9*·¹Eg"oÈ­¢‰ðòN2‹<¡ÊK.Ó£.@ 2nE×ãÙ˜Ò)x˜ŒAëQg°ªyøIÞCŒP­‡—ŸmðýöÈ ßbêp(¸’w„3Á*|”Êà´Vƒå$ÑYu—Ù\%Â<üH@HiX àÛˆ£Uün ‹À@Éq$ ]ƒrÚ{2KìEÇPªY–‘YœT9 1^;¦WaÈom¢«ÉOºkå).r°ézK6Ÿö£'•8'’¤4œ#cÐY’Ž¿qÙmøT‘*èä‡ñ¾®.ÆqRϰPÏ>㸱œ¼ôt42ÃhCwýEΠ¢°lÂñ/ÐÀ\èdLJžÙ¿üã´Æ~º› ä¹|SSrÿ:ÿ§íu pm‘ÐÚvKŒî2 /éXæ¡'ØOùGra²âô=ˆ½( §É™*4ceÉ]æ!­Ð^ø—\„ßr:)…üø&éƒÒ“E¨E1±@ÎN£¥ô2Š•áøîeYÝiý'¹oï4’·ÎT»7ÅŒzO†¨¢é½Ñý\-D>Ï@­/ùa_€½ª‹šŒG˻軪q²;«…%{C5ѳ9a­à%ªK[exC™„΢Ÿj4Ï#z±p ɶô€>6,Þ‘t÷V ¿X2’¦»PÜ™öí:‰$w±®*“Yª¯õ]fmíFšØ!®©)¤¢ÞÎ[ÑøÎŽˆÿé…èxm&Éãc¶«0L úSת\¢¬Œ WHœ+½‚â¡¡² tډ꩖…t%}ôÒ†×Xçje”&ØhÂâñm¹Ýx¹£Ù˜œxt±xÛÄFU …Äp§<¶ ó¤™mWÑÖm±Ž7;ªÜøƒ7§v_Û>ïÆÕxªè ÕC)°¡¤l/îàÂi1ÁþÉ|[‚CS¦µ•qÎb{ªè@æK]Ít>ú7§UÖ:ëõœ2³Ùj…uòöˆŽ Ç®£Újžl—N-,çÊûü½Imw"ŸÂgÉ¢–Û¹âÿ!Óàœš«W"ôá]µÒú†ž‰=Ä—Y˜<¯Ô9QšÓ5bêO[r„¤ùÓ¿Â>z9åTà¨ó<Ô6´Œnæ'­py_oÞ.¼AæJKxGFß¡ü]ÝÓ™?…ìb–Ë©§É’`N;ž=ܵjÙ»Ð:t]Þ ÿäYõ‘w’TÏP[ZÑä*)F_AYQ&”Ñ:dv³³¹9”Žðî|gXˆËá4FdÉ©æ8õÃë^úžnÂÏ\qiIÄf~ØòõPÂ9»ŧ3ŒÍÖ12oÔP½¬/UïKªëÝüeíÇv 禴EEò¡¼ËÜ]ÝÅõ—Ú$½¤SÃîfOKéå¿øifã[î­š K#¨kQd]+Ùú-_¥¶ñG¤Õº¶ÍõÀC } 6 à˜Ïü[ŒlF+W•P:¯vÇ[ä'ç®ÈÁŠËb/,`éY zêéG‹’×®$V N¦Þ\ ÕH‹Mûk­º%î[Å3ÌÏY7_XTÕè.év‹ _ ÷¾tMˆM+”T-QrãùpJþ ó”ѺxîÑÏNŘ]áŒ1z¬öÃUF5†…ª–=ÙšlðìqÓŠwÜØVçK £ !µÐOÛå™-J‹§è„È#çò®t>jçeiØO_Â\ÆØb çW­?I5RGø•Ü«^àEaóÃNxW² ¼5 ­ˆVƒ¥WEˆ‚l!óã$šjó6V§®k={qW(@ª±îÁ_Á2 ³Ð+tMKѶéncoX‚ûû’œ*J›ºjÎõµw.;’×l˜ö%«ü¤9Z¥Ú8•Œ¿Ø4: B-òÝBSXftCçYNm$; ëÄw±!´Î)Îÿæä¨l•e4+ŒÑÏa{õa¤<ÛG; Üf~vº$ÜHýhøƒ»;Ûì‚â u‹Ü#•É~ÔŽõÐwàÅÁÏÁÉIõäu‡7ïU-¬pd3c?.MÃ2¬ÊO¾ð,¼¼};0Õš/.‰ÿHÑX˜÷¿ð|®T=ƒëºÑÚ}Ô:oä Ò<¶©ûÌeæg³ ¸ÉT-—*mi1Ü¥w=ˆ¨î)èÉN6¨BS°TÝ5÷ñ¹&÷7 ~°W„æ{;¸šG,Š|åí^MU€|¸^Êï@ƒÀ±`³cJP?©Ï£gbú½èSô1©­í¤]  D:‰îÈL°…s| @OX òQᲤŒVw•[µs ÛGEg¨ wPƒðwcª¯¡¹<䄞ò¼#ËC^óT÷&Vç4.ЋØ1fã0”‘.CéV§‹,fмr‰,í_mÿ’/|eÍìv |WTý¼ëôÆO¶7ÄŸø?r)ïJæ¹ø32ŸuÐK„MÓÞkŒXÜ5 -Ic¨"\²žxŒ® •àoVÍ?Â<z”:(øÚò’jô¦±Ä[Û5Óxoœ&{yª#O›ß`¤z+läE=ð‘-ê¡jiðnR ßÔPLPùšƒOåT›ÕH~N½à¹ÕC4¨%ªJz©vr1ß“r3x#T94Þ¹¢f¡Ϥþ•éÈTZ-pÒ…·rùhI#nMŸòqÖ;^AŒ€ñnÔëèS¢ dÞ‘¹Ÿ«‘;\ïŸB¿]þvØnêìFÿG÷³÷æ~Ãê’ òùr~;óôŠFn﬈ýáÃK{Ëèçµô!,T/(ïâtoHô“RþŠD/aƒ¬€Žò•ö8þ·³˜g!™Nt0G:_ù k¡–×u5ì"ž«—ƹôFô?uBíäñöI‘e—åå ç7Ù‹9ê`T1ª’óÁö’ÆkòžäÚ€±ßúóÈŒ®Éúš9­™‹‡Q²zâäm9µ”W”Ľðü•DÑ׸™z#W@ MäXkkµµØNs§¸;¥«ÖÛ«\3ÙC<\\¥‰bRciîÆqcØ„FêÙÙ˜°uüªõÈÞá›í?ˆ°V?û5ëX`¾%›£ž‹t q.#!¸ŠÀ­0‘ôÚ'Љ j;ZŒ/ÚOLŸóʱ©r7ÛŽæÓ^ê ½O÷5\X;ëÚÀ3šÕ &÷ þŸþÕÝÇuTT¤ NÂÇ_`¾ÍÊ{cIµ=4ÓµIÛãþëÂU¯ìøœSEÌÝô»¸«É?b¤r±Êø!Z(>Ǹcl¢ì£~“ͤyNFЫh\ƒ‹Ì$Ë"µ!¿ÐHGeدhS®$Ê#3YºM‘q "QYÍ+ê‹d;ÄÄ9`»¼®§ÐÞô§§Þ€$BÒÞ»ØaT$™Õ.x€wàìÝE&±ž ÃÍ(VOF}Ž٠݃ ëyíÙb¤]¯ÅYµ4©¥ý`' we‚å ó\ZmCÁéžAªˆX|Ü^ÄŸ£FêºÜ‡jyH ÝßQVôÇÑÅP± \ê¨Ê‹8‚דý²‘¤Â&¸L<ý´o:)Ö¸Fo+]‡ëUµÒš‹D©6*&(yw‘boq;q²«\€ÚB²1<â gDËÝ,hÏóŸ2GZ»õ|ÔwqÙ>Ä?Óä:®Q\ Æâ)ªª€{kéÄ8ÁhmYV¶¥Ø~fÜu¿uE¹7ø).…úÀ{®/>Ø–g´Ž8ËœoÖ<{o( ÏÊjEµqÚÿ´•N!îA³xÞÈ,Μôä »Aeyr ÷ÔÒ©²Zµˆ[ÃÉãdvç?» øŒFáýl ;ä=ïI ëÊt:ÎÝØžl7Klî„Ù­‚ÛT RI¶6„1γ„AÅ þKÕ³öÙ›¤ëϹä¿|^;&ÔßתÚlk|Ž<殡UÑ—±ñ•½ýÙoŠö÷”aÒ‡â…Ñ´ Qj&Jä¥x3<Ï÷)tŠˆàà`1ÿquR-—)¦]<‘x™Ëª„þ²–ùÛ+)ޘᢡ :eWvv§wªL™ä¿6&í³é!´ãú:¹QNbÿ;¦žHm"nªzpÁ$23ººéd–ì»N´S+rBÄé° aÃÂÒAN^kwêÍPе;µ2tBEI~>[ €ÿ8•Õð!ˆUBÜ0&Ð-¬3W …›ÕœŒhL(*4ÐY.ÿÀR×…Ýã<™Ä߇êÚ3Ì›)Û¼“ÜCÜÛÙ"Ò²A¼:вóãh£Ñ>¦§´õj½lŠÜN»4íbærÆ[a¼€¨ÏO¥Ëž®W†‰Þ•î®èõiÉõWý׌yz=ojø‡ðQ£Ö§ë"vZ¥C…BÅ­)ÕƒÞ`–Pƒà·ÀÜ`z4—ývÍ [>ªwøgý´+«Ö›Ê%{Ê–¶…V@VÔLvR…ÅGsf;ç”!vʦhj¬.ÓSÌb½éeºÀ@j¬Š‡Sè#ŽC­Pˆ ‡‘ÄOP„0˜…àKQþDmЖóñ²#ŽgOñLM¸¹†:ªÌrªÈ&æ‹X¼—øà<®FJj:ª†öŠÊª3.öÙqö$ç,ïÉ÷¨aÊ#fÑ·hT„Ýî‰Úa½?üN-3Î/çë¥Ø*£=܇½Ð—F“G¸ŠG¿ ½z¦®«èoÕM¥ÅÑb¾¬~«¼ðOÆwTQ÷ƒ²tlBSÉ” OQ­øIò¸øX¢cÎKyPž@ûáÚåpGѵ¢?ð"Ú–~Õâ±¥Þ@”ó¯]3´ßÀƒEi–qôBãÌCa¼¤ŽàÆ0ê“ýä¹V…v¤µ¨û² ¼Á5É4™üÑ^¢Í°µ#]ÈTÕ•UÃÓT}‰–·€"ª¡>…ž [¡Œ»¤'E#ç(lîw†a)Ïà ¨©+6|°ñAKoôbJùQz| ž@H´£Mô¯ì7IðV'_#Fü/b¨¯ÒISjÔ„¶ÎHUÜå”¶ø…Ÿiô<Æk÷dm}ƒÊ\¢|h¿ÕÑjë_gupLkϨҩ‡ô“ÞÑØfŒ3º¸›¡kÐKÞ)ΊPyÚ”¬—Žû‰cµm䙆;ÓSú\8™è^Ö\3ôZîÂÞ'‘YiŠ{FX&­…ñÁ¨J7¨ø˜õËœä[\b²ÀaÖ•m$qžÊîåZˆ5×γ=Ð iä-î«¡Ïh24m*½Ú§Zªqj˜ËwÊ«h GCõwºÒ¯Çù)F±ê©x ÷Ô1Ä.èç-ÌñVŒ™Œ7 ·YúÇðâád ÙÉ_ŠWj* ~*›}ѶjùÜàŠtùI7ü‡}Âë1ÒN |ø_ôƸÁ’¨î*ƒ;Ã:†ªs©Ãx™9؉ãË¢â SűøõàZPÚn&ƒÉâÆ)è)3éURÖ é,ÆÉ·bŠÚ wÕZ5S•¿‚ëµÑ.”€†r"> 1Aa࢒*“úÌËK¸a9ÌUÙdUñA¶‡òâ¹hÊoø^[øÊ™óÌ¢îºc IDATâom «Rôv×c««>M“µñ”¢1ÐZ?K—±ú¨:Š ÀC”ˆnÃk”€êð$Q‚¿2oë¥ÜòUL™øc€Ì.³ª‘l‹ÕvÑõô $y±F“ÔhÕ•î—3¡ê*/¨gv,AáöÚë*šv€.j ®âJön@.õAë®m {ij½ðÉÊê¦*'ÊBð]u’upcX¬¾hMäCqŠÃÈL;)? ‡!Ê+Ó«9ü°õïåÅk¡HR¥Tg…ÕÝ·›_õO·m6OÃ?ªâzwO”§¾ûbä–t‡]G|g¿È{Íc•à‹ùÿËÌJ5fAg°òkÍi>¶Zì»Ñ3–í ½ÉRíwØg킸èL@k©ŸüF—à–¬ÆcÕcT׫n Sr¨òÊæ'kc%¥¢K¾‡i߆òo»«9)TÞüïÅ)r+5#žƒ·y?šß¬ì¸TÒ^Ñ>+/¡<®¢b$º'Ï¥;Ã.Ëæ¬P»G¨Ip¼Å¬ƒCh<ßBì‘T”ã¦Õµcd~ •ð›˜È7vwôšìb.õj™Ù'úØS'7D53˜/“”ßiáéí LY騟d‡ù¸5ʪ꿓°š2wú°fÆ[êRCé7zŽìr¶9Þ?N@æOã4v *GÚãRWîFyDq™]›âàÉÿ;P'0Bqú,uçÇùø ±Ø¹§žªÛt¡1„>go÷˜áØ\©å#·hcÜÌij±þ³Égâ‘\ H{í®^2ØØždîWwdœ¬fôrïðĸRô+X¨¿Ä³ž³Ü™gޤ?ñaTœÆéeX× Öƒd#ÑØ­ŽÊÒr4J§Nâ"šO  $ê›6"·¾~)lDÔTVÖÜgOï”pºX•°›ŽGóÑ{u éxXò ÿèLæSÉ4Ïàœ!Î.²G9íHN÷£3Ò¾ÉYfMür6;©êŒº…ªÈ•Bw¦„ÒY/íÞÎ uÍ7òЂ,Yn%e\ˆ Éh=þE¢¡»Ê ÇäwÑÅçðic¼Áz¢¬´=D™ÀÍßÉüÎ8ÙÆš¢Õc=Ùió§Õ!0×=‡ ƒN¸Íç=iõV“ª„xa"ô…Ð)2F’Þø ΢j¢ƒj’X‡Â/—ȳôß(6ɇZ]òLÜBíÔ#³¡èŽ<Ž8d]›OÚͽ¼¤]Ý|$RðxÛ%†³$¸¯©šVz9GeÀ›è¿¤±H ÀP¼ÔÉb/•cœÎG~[]!Ëà'¼åSY:¿SžFÄPO‘ŸÕXÕ\}—åá‰|)Ó“&²É¤Lá}e}4OÃíV_w#-yÑYüFÎÐZÂvµzó(þBƒ ®éV4yë ©zþ›ÐŠØú*¨Öpg‚5NÛ@~9{x]tÈéHª»·¹ÃÉ šCä1Né hr[}ƒƒ­ƒoEyÓí8˜ÉcVF{•z/rñõô ~–^§ÿi-y]cŸû'm   hÍô§ƒÖ~~G4%Kà8â#ˆ î”ázêtT¥¡Zzˆöq~³p|½§µ ÕØü‰¶!‘ˆÁ2Èi<ÅEUO•…åæMÔk#̨n‘®®Iîf ߬OîÆî)¯ü¿Ü±ßó¹NNÚ‹Ä/~'pœ Óðq¢Ó_¤µZ#üN•’ôçè::O2Ê¿EÍÐLYAyh5‰ÐãP9Z•ÅÒ+¬ žÁÞ:Mìg⮨¡ÒHI:]UQ‚çs³|ëI ¾+˜C¬ŸÖY.Så‰ÐÝPç)þÊã]õÉHèKlöˆV&•Hq<eyéÚ°r²2Ïd–Ñ&‘{žñ¢¡ü!:°‡j¥(†,¶îˆþ&þÉzÚµÄ}p+”ê;`žE/I64XLVcÉ2ÈÀm'$˜±ÁÁi Õjs¼Š#'D+ÕÚ^ÃëX•Òâx¤7>À넾‰•ÁÎfOü€?•SåvTßõf xS÷‡ºŠ³üDò.ç»3'‘hK€6Úu$,‹g £1Ú é®MHsÚ«4‰Ô Ðî„F(I‚£²­¼ùÉ)äXj¼ŠRµÒtz”Õuûy`«wÚ.RX´áaŸ¬W|¾ñZXìboµüúâÈz–ÁïÖ‘ÐÒäÉiß‚;ÿÌû>ب™¾NÌ^øjl¥3è\ÚŽ–…t²07Ý/µMlBÄã`º§Ô«ùH;ÚŸÃÙ­!ò‰°R^¯Ê7¨Ö©ãVú3ùÞ„âB%“\Å<Ͳ,7 e¬ÿè!<WÃTK­“:¥Äkõ*$w(Gž—÷¡¨©$O²óFP¾¨U²¬%°WMwÓ™é7h%F=’þc'!Rõ mEÐ[ô@‡{*FmVãeggµ(a0ßФmrŠX™¡¸ì)Žºf;wøBo%׉šŽ_~ õ&‘¯°ŸöÓ—ÒÆú-Jó¡ø‹ ˆíd:IB¯âÚjZÚyÂ?B{.Å\ OÓÆ8W3'äyh\Íiéw¤õJÛ®½CÃþDñ&ÚdœÓΆ. c*§3Ü\|JjéÏYHCdfñBv÷Ççè.ƒ¡ v“Ê·ênp ¤Šds*¯ãä2ƒ*«"濎²=|šx¯²BNú‘¤wù]ç\/àš¼Â›ñEò°­²É¹àµ¥}ÉYä‡;%‰Œqÿ‰Iïú¡4>&d VJM²sÈÇb6™ŠúÀR¦Ao´ tuQVµ*£È…îŠt’©³ªÔ%³œ†Â KHs¾’&áçDªj'…v6ËÀí_šhÝV•xy3í…êϸ5F¸™‘¦®Â+ZFS´ .•±¥\à“µÐs e(‡‰èñr®ÄFÒ)XH,_‚‘öSòQœ…åQWá܃¡‰¡RÖ9ÏnÆÈ7Ö‚Ç çD;œpK”*‚²ŒºÃ£šð/’}á­6Þ™ m\“­ÁüoóŒ}Ìa¤–½R¬‡‰æAù˜ï€ï¨;©6F/€\؊ȇÔO¯¡áŒRCO³û[KœÚ0î“™ä&þ­õ¥>•0áÏI3&ù›/Öi\à5Áú~4SíÑ|·¡ÅÒùä^Iç"Š2¹—ªàà ÕYÑH]‘ïE1U.Uq{%/ëÛºœç/ˆŽ‘Ø0Ì^ºœ,cŒ#ž;Ñyµ¢ÚAOa¼N£v•¢e©p-udë]kè":–~ó;æ±”ßöàÀLw:hJWòc:Òt÷"­6@?ÐÜ[©†¶ ! Š9*EœT­Õjg§¨ J¨ü Ñl¼r 2|KÌj~-QXD„ºƒ®i­Âñnä]ó…|P9Õ~¨ÄÏú{„–'G¥xh7íYšãŽvžÝò¦¹“æÃÅZA"Å\O®²<qœ¬rWðÄsfù:û\°À¯ýDj[ˆMê•ÂÑ%®¢Wb×`ú[>rÎ’|l{+#E6+U„f*à ‡W Ý㣠²Üþ6~zú¦¿½’Ž£»Oþ´@îÔçi‘É9SÛóÞj”+?ïÄÜ‹L”\ãHIU^9@|²ë7†ªXáiçÌNÎ8æöÓ7 à¥ë‹–ÉuDµáÕÍhT[¾%ˆÕ"ïEÝxk±—å ÉžxO"ˆD?Ñ.³%¡,ݤŽi1Ùcì‘ä=?%þBoôajß&›«0'Ùl#Ø£Õ/òCËŠZ¨¡p†T±[ðó<IÀ]D7~ÇYearÎb=ñe´’d!›ñc:Þ¨£75~EˆˆéÞ9v,¼±š‰ N‡àuuŽÖ¹õÆl¤;†ê´ŽûŠÇ™P7U€/…’ªþÖ’¥è9Ì“ùa{Aê¸~ŠYb˜+F[é­Ÿè(ùD<0DÖ¶» |j1Yêº!ÃÔ5q=A^˜†÷“qjsh:2¯jljéLÁ>g–¬ÈËŠáh„ÓÀìê8lÞMn@ë{k—m[.AKÄñVþB¥Ðr!þ /hmôž¢ÍpÒƒtÚ‹vj“]Z•Ìj˳ÈÎösó€õÎîDû¢DXNÎØÏ= !—ö …ð+Ø›äx”2ÁAg9úŸÊ‹;§x¶.Ô =¢?ÅYÄl¾J ¯±•ÌÖJCeDya•Ê.*ómNK+cè” ÜÂw¨òÖÀËÙ&™_"cETA]R'T+¨m•På¡Ü@a´Ì*›¨¥ð Šˆó|½l„;ÇPeZ‹n‚‘ø~¤”Iª&®.–©îhªLV‚î!ùÑØmíåx7­=¿û‡Ýä/bÿ„ô¾Õ'tÌú—ßS³íyUþ„G('Äj³ð¼ †ˆ¡Miýƒcëy¢³Ù"ÔgvHMH}ìê§Šèjž‚i Á9»¶*ÏXµ ³üÛÎIcñh-è±Ü3°Ž’QqEt³®ò}üé¬'²YYV"ÊïÿÔQ²Z¯*‰¼8d!wA'\µ´S¯1‚¿ä –öÃÿ'ãÈ€~aÛäj;ÕÕ¶•új¥VjÛ¶mÛ6RÛfªh13_÷Þ)”ˆúØíTÏ‹±Œâ²Ê‡‹£ (”XÀ'’Ú ‰Â¼ºj‰J€m0VM”ƒe€]WoUy•äô¶CŽöŽ‚sðhµGxÙ8K—ƒÅ@»':/GàçÎ VÕV!°;ÎÂóÊ«V«¹ä.Ý„î‘ü`Ê(îɬ*T&Åeˆ—Á.uOâÿ‚J"+%ê«ïpŠBÿi—\§ôí2•G«§¬d°I Zò[Ø!ø’>Ílئ£­Vö€›UX tk€Ký£¶ƒ²b±JÏñCwöñ@qÿWG²b¼¦6ÿqU56è™áE°õS„K ™á`ÕEIu@@&µîMAØ ,•m”)OðÚ<;I=š”9­²`M)<–òôWºÐyQ;#[¥7#’Â×0#V/óà¾ÚG¸p½b+ÄyUW>‡ƒy+‘Æ:8»­Þö7¶Enâóä$URöe `ò„†wK×?dˆg'Z‰’, ;ÅHu’žKkO *-Ú^ᯣ’ìÝh_v{‘?>íRðO fmp#O÷{­ŒÅ]×ôjÚu”ÇÉoÚ úІ ’ä¯^T––…äd6ÇŽÔ®‹ÌªˆlŒÎ«~ª¿ª ¶‹ß"§(€ò°×¬º¨ª«|øn¦âXfƒñê8ìŠÊÃ* °“ÍnÃ[:å‰ýBóQ º£w±ÛðýÎÙ”XYнÕêù¯ª䵿œ¿9f‘@åàm+ía_ÄÕ˜O= 4•õ#úwòZ”—uTqÑZe”3e*Ø$W‰æâ±NÔáV=Ö‚g¥E%1Û5Ñ*!KG“_N-„GA’ÐG ƒl(7ìëÀ•è!ùÇÜ©wpCk•ˆ¡—íbà Hd황eÐÕÁÞ. ’i¸¤{Žq~}Ôë‚ç¹>S\cÒ©¢uaÓÄh8Mì`Õ‚[ÔTX¾ý@sÔœígƒQh#­j<ä÷ÅBÑZä£-Œ¶ª™zÈ»“ºÚ>|R…ÇªÆ 8mĉ8xÍ=´Beä!PíÒ¬ƒüœ&já-è(X.ŽËXý¬löA”r—t¢n‰yQ•ÕE•É:8lˆQ+‘Sµf«œv˜ƒüd´wš÷O†µ|‡‘ ÖëÅQç°ð±³ðº7¼­J€ª¤Ú‘\W©U‚côF(kxqý§ë5imDÒkÖ5è¯D'ë©5Rn æ³îù ø²'ƒÎþ“©{]åD«eÚDÐO=b÷BÞE¬AºâÁ¤˜©BÕMç’³ØJ‡SIkc*ò€YÒ#ó™ö3ÿ,«~Úg+Ì‘`>z'Ø._?qÖ—gÜiÉóù¬¯wåCŽ|ÏÉwˆRÚò²H¦•ÿ'çÊÂ" „û;X9´ÎdŸ6ÆIt¼vZðo°¨¯¬‡7ÉÅ0 À±òh[©GÅ|T&n³KúâR‚ökHêj퇹×ÞŸÀ¬éÓ»[è‹É+õAnñ` (îËCpÖ6£‘ÀK]FOú ý¢ ¨ˆÚ -™Ñ eïìyâˆìE_ð/r‹ZEÊ‚»pÎZ÷ÄgµÜ½¢ºÃ&è«ØÂ‡Ú³Ä•êŒÖz±®p±_Ý_yKþÖ^Æ€‡*#*@nN‹áùþJôs6Ù-ƒ¡vek¹Çî±­`£C·: ½5ÍÏZ~­édÆË‰êý+c•]Y%Q_­æJdåÑx,§HI±‰™ò OcCì9¬•h (ŽÖ õêyzê!ô-x&ªršÊ;«Fj‰º%39Gh ìa[íž¾“ÖN{/Oƒ°ˆqoF™UŠ\k¦ðb>G-p#ytW[À5¸ ®´_ºzipW}ݬ㘂³¸^dµ3ÓóÝ|ºÇNXóÅó¶gVhÁð~¡{¼ãÝ¿½u´!8JGó£üšÅשâðJ ¦­û»Ùe¬)1ò·8*ºJ 9<ÆSÄb>™׋âNauCï†LñsgÑÓÁéb—:MÊâI²2 CP6rþâXà!_Šõ+8ÎÊ䌵8ŸEMæ“ÏÁKЛd!Už¹žÛÞT=”V×¾’t¤ªªZ  « ì Ë&^8§akìîèùŒŸTdIÉK£)ô‹÷ÜàÍÀMC‰TEÜtç sí ÏR…P7`Í`^0feÙÝ_Ã?†—uýq¥™wÉYšŸ´’·ÐRm!(‰f¢UuÌjC£hqÖÐðAø|ocŠ»‹þn9`^7bŒCzŠ+8ª'8ã¦j)Å|óœó8»ÍcÆEW~×íö®ËfAWQóµ«{­ç¤÷ m‹‡BÎÀúìøŽÁ®žzEO’7Ö3ÈuUËcÖCUèíÝÄw .6¾%WN©ë4^@sÌÓî&Ú×2s†±Ëu“<÷J: ÖÓ?Âö ‹UÛnê³ ä™çé5˜6ÕßzZƒ¾`ެ(^©ûb–\#潄«©›fˆã]m~ö,Ðk«ð )Õ5ùCQô“ìOj'­ì(«§ÿ$Í]'¯Ð HÁyª­>ЬR[Sÿð¹r›l&Ïá¢x.XDßãPÓžã}xµ¾ ]p-Õ*áп‚9"¨ Ûƒ©¸9.€º@¨Þ€ÇB“éU^UÎMdSi‚ùŒð!ÒbUÔw÷J9REâ* 3J×í¨7~‹Ê/d¤ˆWG­Ój1*”Z†ìnæ0ޏÑ«°ŸvA”W)z¼3Ÿ„ÃìR0¼ìô3æûO§,H9«va'‘1f!×g°6„ËÕÕTý6/ÓöÈ«O¤#å–ν²x#¼r«à‡=Áî&Nñ5â"ÜÁŸŠ¤M|ä6íO–Á²zz^Má(ÙNÞUaò‰¨{Áxù lGùd^­³ë*~c4 ‘'h8}kßc=A»¸ƒ- ÖÃŒÊ2È7 úÁϲ9=J¿…L¦ý]¡ô>_šò⼉|$W±*ÎÙ=P3­š¡¥;ƒ­±²ˆjNç²R2Fì+q­°Ât‚¾IT7–ÒáúhØ }.ŽÒa³UCòÒÝ/x~p÷a—a„«ºƒÀ'‚x60€nã„oPï墥UµEyx´ ݱŽhP¯D‘F¼ê#§£,NYq]Ü“øa§å%€füÕGã$^Ö·/ü©B?¨}vfp˜^4ïÐ-Þ­ô­YɨÍx²š ¨§š»šçœ«­þJçz¨U¤ š m^Yþ„­ÍNM9Æ3¹Lê~Ñ9¯òI`£¦+6t—qÚÕ Òµ“YÔ¹åpj³Û 'þ„:êZQÊ4éœåì8ÿvû¸¿ºÁî8£]WôžF7èUsê½LrZƒíWv’?Gr•ß]„POÙ'¸˜æ12‚ì·¬°SŹÎ.;—ÑbG†©cê»lªÆªÜò*jFŽ¡åh8­I {uN9·œ¨@6Ô7ŠêO<ëÂïÈߪ#<+vó¢xÉA¿¹?¨Ê0I Ûä{çº9Œ–"}ô Z93¹©Ÿ3ÃŒ—tţ渚¶J$Š5ö`uE„X¯^Òbh*«*ª3/ÂÁWÐL^Tcá#µ¶…wAu<tàËÔ:V·Ö¾hÈÕÒèèÞ‰®á>x¹3X„óž’Ë1b7Z ÊñÎÚI2÷{Ðp˜™ob–oºÊÆçˆí¬¿“MÄò22I¡ñZ6òP߬}Ç®å…9p¨5—ÇÈA¼h¤Ž©f²˜ø,§‰SV8+kG»iQÅn?³þ%ƒuôvO0úÓÊÚ^œÏÂnÔ\Ž^“}”éT{k;j ‚sò  ]2 ^ÄÕA¾Ô®®Qc35ÏêÄ••'E´¸/¹‰¿Ù‰,*X"øÄ‰ ¬!?hUÜ%4HöhkqY#€ëG×|U¹»ã,q¤¬ÃvëzPhשȜާ¦–þõd«Z°dÊ„€‘bev^ˆ®©#ÓÚ&eMlÏïFà=¼IÖâE„›ihöÀiz^}¿ÖÑhJ ZÚ¿äŽÆ­±°¨«.ò1ö8ác眂²t°«à¯Ü©úÈ(–S]Á}èO²SÓ·ãfà“ê…ÏÈ'¢(Ú,‚„<9Ð@Ü×?Øù7X]Œ‚‡=o¯Ì$“šßáŸÐI ì‚s¨xñÒ“Û}ÕU5l¨"Ä=…žàžj< :àÑä!é”Üž²NäuýÙhí-ÝáêçÒÍmúªúè›ôiž7´<¬!þE¼”ýóƒ}íQ ZZŒÑг1¤²™É¸ Ýµù ç¨.=ìª{©«‹q 4‘Òµ›2 IDAT›iAŸ3ÇÙÂï‰(5Ã5‘f¦e\µŒ-è«õ•zGÂÁgVú@Gë§/!mˆ(%öƒNF>OÆÐŽZqã’~žLP­¬ô:Æ—`üB»¤ÓrÐÆ1W¤þ‘t÷t³„'ÃŪ¯ºÄtt§‡=Ìßž?ÞZð0œáÌÒ*•Ô!­/­@òãDm¬«n¬o3©nj)†W˜<“ƒÌgš0:ÀTx-AËáD™G»ACÀlØUáàÒ•\@Ëp´4VDE£îƒ(œ 5$åé^ZUë –¨M²x‚¢) S=Ð4²\CÙe1'@y1Âú¯æéä×d¯oL0Î6ų¢"¸­“ͲúøÊC©UÎ1æ÷_ŸHk¸‡è‹Pã¶‹¹SõÆÚW~yQ,¤ƒW¬qÁÓkÿîlÿ›Ú'9ÎÙs“†d¥y#ôY%gi[X‡TÅ=ð“Xà$y%,Å›Ê"¼´È ΃6¨-éƒb·Ê’x7ÞP2`eí(uIÝf BéÀ]3ÞûÔ+Cî›õèwº-àMa2œÎ«Š™øàð: GuµÿH:=F¿¡ð”uípº‡¹»¹#B®¥Ì•Zwz7ÖÖÒb0×& –}c•Xñàr–ÞéOW#§›1ô=yDŠÇáÄ*à˜:ÌnïË–´7“ƒ¬l˜ø˜œ²$PÇ>ÇX•ù`xPò`Y_/ëï·½o}l? ô°WÂb`+K€áZ-õ@‹#'ÁeªPmÚ߈ÃÍh/Kgw >²/“䵞 –‚w±3±úò;™ÏgÍØ®ë¼0NƒpyRÆ©s¢*\>Êr˜ýÚîlùýëƒ\ {T ßÈö«C®tæ wU°tƒmIUžFV¢k¨úF‘¯¸>ùËá6h ªŠ‘UwuÇêAW+\§Í§nÃUÈÐ"Ÿº+\ÁÈ”œ>3í©Ü(MvM߬=6£U$d²µÑßÏZ`ñU´‹kfµÀ›°^žÖFN”OKqvy%Y À»È-\]s6ª$ðÆIÚ{mK8p¯òŒ§èF^_4’‘°¥JñN˜÷©>‚þ@‰ð½êLz¢ëhx'ÇA¿‡ÉZ!Ñ.“MÐ==šVP üƒ&B„Ê!°­ª‹«ˆ*<1së÷H«Àr¥üÐÜ$Z^¡¡d ­©¶‚üà¬ê-ïñ¶8?ÅdˆPnunR pM¦Šƒuê> Ë'j¤“Ž”¦;ÌL DKlrEã2b¢ýÅI§¢x,› ˆ* “°h*½"8Eæ[UR|ÖúÀmûû.N$i`XƒçÂ6r§yÍUB܇ óÎMPAþæ•àzP“NÆ_ÐtrAT„¾R›Õ58ÅC]&øçóåµòø×Ùa,—j¯ïp{Bÿzâ]t™ªµ& õ²‡È¸;܆7s)*«w¸º®}çäsÛïLqrÙYØm±˜lá–Hïáol‘fp­ÖŠ– `¬þJåR­R•ïw=öŽÔ ÏÀúq só7li°–ñœ†KiS÷ÎÈpçºä™¨~ëñµ9f*úgh³í!Iî@Û@FPø—ŽÖÑÂô }I÷>%UçÙ·kSBóëuD<ÔÈNÞ7„«©`l΋‰œæ¸Ð%î*ª6èj>5æxè«‘¬‚ÙܬÃþƒ†Ù?µ—«ÑÎNç$;gýǪ9—h¸W”A§T¸ âé¤8Έ¶ªvF:óƒv=b‡ëÉûjßÁ ×| PëÁeøAÕ–»¸„½ävÙÏ@?˜ oö~Ö—½ÜÝ §KhkšY ½P+Õ}†ñA_¬%yÉ0p„T€Q¨1nˆ·*¿5QMÛx¨ âzL€_u¿^üÒkb‰ÒàM#‰$ ZEãÑ -§ËqÏuyÉD­¬âZ-ö;ÓAcµ Ö‚­ä^~F„òP¹^vå>ÙŒF©˜HC´WÚ™ˆÇ`6\OÛÊÌà·\)稖àè+f8¯ÐDp 5\f;:FœPÃÐ5˜ˆö£ú0rXk‹³©Jª‰¸$Ï«…Ú‡@>Mœ[íh1T•€×T-™¿D±pŒÿC¿ðüî‚/åAÞÄn +«ƒü¨g„畦ôTý0äQÐÜä¤*σ*¸iDÚ“"=:ì?—VÓ·Ãé“<3pÞSï¬;z×`üÍýËóUSSàQ‘N€Eªß<=ªEÆÑ!艶A[¦{µÉè­Qƒ}ä½ÄGkÕÔ©ÎëÊvÈ‹â¼óXëÃÌ ä’§!)D?Ãëü§,ʲ‹¥ÎÞŽIÒÆè_È ³(hZÁW,ÆIO2‚ÓþÐÅÈGRªåÖxµYMV¯ÀU.Kiéѵ—®Ìiñ®þ
âo¢¹ôoä¶g8ncvrÔ¯ #ð«zʃÆÒ«âÕ\TA{ ¶)ÒÁt¨¢Ìˆ7¡sè-2Ñ r@_ ~èu@#˜f‡UA5Ooe~<šÔ‡à5°CÔÓÎÓ4ÜX¤åA{dœäìŠ8$ýh È…ãá"Ô’óýžÎrû2»Èñø™¼â︔^â0\³ÍBúÚ͆?ZŇS$t’ÁWÚœáÓdzrŒ¶0w¡&N7°Þ%ÿ‹É­Nk=+ùˆ.b°í¼,Þ¢ùI¸ˆbRŒL ³'G'—°NÉlö¡”JIMÝÓh\tÃå(Ö(Ѓ Ôñ‰´6(w"3XGÖ5Pp¢_ =ͯÏÐÊÒŠ®‘¨(¨VÀ2ଉ÷óÅè>+{k»ùx°ÂHgsµV¹I^5€vš2?»d¯ D$§&©®×0î8Ì–Óí†_ÌÞî»®Faà—Ú{rKo'_ ¯z”òl±rÛÈ1:€TF‡Àm #Xý²ë;ñt<Å~§M ½è"#Ÿ6\OGkÃÑVŒÿ„3Áw?çeE>Ð)+º¥Þ œ±&kÕè.4ƒò­ñ_¦ý­˜ºXÞ7"Éùà×ÔÛÁk´‘÷R¦E¤ù厣ñä™*·±“NˆÊ†Á,ÚiR ÝwwseÁ1¸%< ^ÛCœmú –"â­v0ŸüaŸÐÿÓjšV‘ôP •˞甇J!eÑp8JÛC ‡¯ =©Çºòk¹Xõ?¡¿²8ëÓê;³¬|Ó£SW[-|Iè:zÍ÷¨bNæ¤Gh¹äÁû<BçÓC0+nŒ×À3b ¼š¨6¼›ÚŠúÀ` Šcyù>XEe \¾Qml›¥8—˜ÆG‹'¤°‡„¥Dþô°o¤´„ó¿f¼;»ÌÆFØ5çoíj—ÖÙÞü ™™C~jKÌî*7ü˜xð ó?O©C¶gº«uѱ¦îÏô m0‡ÜÀ»°ÛÈãA3ÐR6ç÷à_#_V„UÒ:ñ*v©aA4ÀÛÑbU‹ÇÊ›ÖjÙ’·Ò*³ H° —Z%^©Bò¢][«ŒOº&ÙQ lÏ«r<7Ÿ"§²çpm•n éj›Sõ43¯YÓž¯W@üÎl)v¢.¶M»š›QÀJG\™è:Ä,-ÀY«¼ˆÚÊê(“ºl·¥¹`!'º`Ù¦m1Ë2f§¨œ$+~Á摈†þ„Cx‘Š ¬Ç%ÙGcYÈr8™6ÂõôPJu×ê°½ò²³<Ýt›æKô·$TÏn$À¬¸²9_7ÂÂH.Ïyr\®ÁOGÄXø€=ø7yQímEqyWÕ†@'^I+€3ð#X%\H*©4xU^AãñRXUKOß¡ÇZ5¼½qn‚: ®ð‚µ*ƒøGä‡é’ÇCA¦ãZôdúŠ!-Cf„,Ó~€g¤ÉËÏØJb„¢ñù]YTKd°-ì†Ëa·ò‹âê+²¢Ò˜ÏÐé{UÇ]Ñ(n®!õÉ45„dGÑúP²·¡b)Ï+z‰{<œrznùO0ÐaIÁ»¾èÔæiO¢N¿½\=‘†ÆÑŒª¼úAû‹T>mÙC‡#¢iú+£€fº‘Ép¢½¸¤È§öŠ‚p Šv‘qä<¦rˆ‹¼›3‘eTG‘G¤I®.®¶±pXT› “Ø|ô›p,¨ ‹¨à*,éä&ñuUžÿåõpª‰[r?\^ÈGçÍý ýýY$Ù¢&²­¢¬û¾k¾£å#+A]±W?¢ÍÇéÉ&íü/ =õ:ZÆU`‚X()ÓV¢ƒˆÔ†“5ð )ÄoÈ¥,¨xʃßê¶Y‰Sé 7 kl•r­¼ÂÊ¡ð-ܽ£«É4<ßsÖkÔð7 D:iV’³ÒNÖß½h%ÑŽÒÿTz|ÞûN;&G|Ó‰Nuüí ¹z3¬ 9EØŸìÊ©EI qÙ@üÄÕÔœúÉGxG°š¯ÄX“R£Oø´ª ׃߸³'ÙܨÿyÀu´_<`ŸR“|‡ƒ“_“DòÈïÿ¤L+'˼N‰¢]»ô¼z:CsoPOÅm»"Ü‹–Âa0Þlr´ô¦! ñð_®^Ê¡0D½£ô5`¾/0¨Œà ÿE| ‹3NúU ˜nfÔjiwX95ÝΣÚñŽ¢”³^(0(ì//7’q|®€¼"ŸýÕuœVt6Q¡ÕÀ½Kè ’€]8V¥Y8Ž´ \†_ð%˜MÞÖרývîw|È#ïñŸ">()'á犳&И9`²ÑDÞ}SfÃ| §5LDƒ€„’tÁ£ñ µÅ:R•á;Àpåè;AC˜¬: þN’¬²~…cTýƒÝ.¹ÏÏ“fUÓÕ<ØL”L³ëË$RÅ|©Š°/ÚË|5÷HuXW-¢‰ºtß•Kø ÿlç s<¸@«…‹ð_Pàî|.ˆëdfµ^Ž“yù1ùºÍÛtmT¹çÕÂ+ªERÞä,©§Ro¦=a¡*Ü76ø‚Õ¡Ï@G Bj¨6ÜÂMøy‘Ì6ù·{y âîž^¸Í RäI”(äy4T™â$¯¥ï’w„…Öá¤-ž+ÂZbKõ“hJ†¤=¿%W3 ŠóÐ'7i_á Õ†Ö€3Ô¿plð…Ø‘ÔÒ™dçQt€].C|¶ù¯+§Nžÿ$ü¶ß©íD×´i¬G{#Éf£•o&8'Z±Sò+¸ÌàÆâ™n]ô g¯Ùp…š¤4Kúáwû*¥Í„‡q¶°ýÚ;’ÝNåS9±Î9޽È|šÁq_ÖÎáD9ì3œZªŽ]ÌsZ‚Ç ¨’P¡"ä¶ÑÎÅýhü§-uÝ0Þy¢ÞÓŒ<·k¡®\d”§‹¾&¡wÑïá2½ìì.ÊÁ=Ò ÇkßÕ•ñÖ­LÓ>ÊOLKÛG.²t˜ò‰¨þ>“l ¸y^Š eFuÛ6òVʤ@vøåWóe4eßE?{R`‡^ Í\o½{µ{ö4¼=¤†Ø…þ#ÅO™  ¯úfvzÞⓞ~0HÂ’„¶Âé ûj€ü,z‚xUB-„q7«2«¿@S3Õ XÔ‚½ùT¶ ÄâÍmÒqYP 8E˜ê¸& 0ÇÇmq”Ä€(-б BÚ¥°/Ù¹‚Œ¤ hOÕPxX²®Tk`v‘|2€ª–¼ ~ò  _Í–òŸò‹ýX´—M±pîÉ(™u&]¬¬ÆvüÖ‘@¡ð—ZÄš‘†p-Ø{”Oþ`„?pBY[IØ;±G%p;mþ `t oKAeø/ö½±†ùÛû¾£ØNl¢ö°4~À…b3‰@ÙµRÄcŽ'±ü=íK_â§v5µM6•©VV'½Õ•“Q"'z†æñNö§àäÔn¨#˜âF§êýHÒv.¡¹  ($w¨ròyEšÂߤ1¹&ŽáD”j<5ŠhÃi m%܉§£;ƒà‹|}ð¼‘5Dª-Á±ÖÞäÙI¹Rúüh]N[fסIEâÒjë;ð}²*R¯¥N TAxÑhŽ‹æp†ézö"¿´‹²¼z‚nüìA0.mcʾ¿³­‘lQÞ=>¤¾÷ ¶Ñ.-ŽÜ…Øm7%š:ùø°€·kp;EàCÔ õä eCPKl#As”Uå E`Üoïã½åç§]ÄÊbu ¦Ç[Z÷4· †ˆñZ`¹u™<ÄA±‡VÇ‹H(® xF—à8r‡t‡m¤0™,ãT…ª8™ îÀ 7Ï'-­ ú—ÎÇ=pfØQ…ÊV7¥Ë"¬„|.'8ÍA<‹áp6Í®"ÀVúMÎ'a<îKŽMÄceYBäÔ*X·ù6QÖ\ªïA͉ë¡w®ÙN>”ç°/ìc~[=v²ªv×´IÎýä†v–ß1Ö/ŠïŠ6Ášò“ëIpÒ›Æ7×ExXõ3ªœìFϱÙvÕ`qƒ"À´qpëg=c…œ|z3#¤µ…EíoV!{©o# Þf¥¿¯¶= dB›á n£z3zëí½qš'7šM–i6Ÿ$ãp,]ËiHyôÍUãà ô … T˜˜Æß‹·¼¶ýŒ¡'­X­ %+‰¿v{¸^ì’'´^,‹s“E[y}'þvboíá´7\ªpçã°!‚)2ˆ‘ë²¶4òœ,b¬<| ¯¸gÓ ®G]Q>YRÕãG´"`¿D IŽ vVõÿëoDb„SÜ%Ð7iå¤jÄJõF¾íÉ^Ò‚ŸdB\dIê0‰s· ]¶(sfwoí»³3Ø;¸!ù=w£à³ZƒÏÚ9÷R×0ð>¡õ¬r³š©¯5¾èÔ¬–4?íMŸÌ¾ðR#á¿nJ©o`¬KË“¸+ç;:ÈãbCè ðŽæyjŠXÉSø°Àh¬V㼪+˜ŽÀ ¢ª >ª[v9ÿÆ´.i-ÿT~žãs*K‚Ѱ¼ç>ò'kÒÝŸÇ?•J{ÁPÖ×v±Û‰sÅš_Í!Z 3çòž ©õ¬n¾E)åQwèNW\SŸ´4<fÔŸÚŸ­ƒö6< ½–kp>ÔMå$/ˆ•ÀRF9íhP*íerÿßOþxSžýÝ¡Uwç6³„— K£¯íš°¯|ÂïËÎ_ ¦lú1*­™Üβ6Î/ù×}É:ñõ¨ÿÜ/{)>e*®?3Ž¢µºÚQýdåe_pIXÌòùަþc''õ´Ö铥Πö/ß’ûÚ[ïàŒ]/@’«“»®öý&yÅ>T MÀwy ÁXvTE UÇÁ&øþRqr"#ê/ úÆèßÈ í-ê ªÅî¹ð=¹º4üWt0W•ä‚l—£qðã jè_`Ì×çê¥dsþDÞWÓQeîb/É}‘]Ûå9â_.ÕC¦ ‘ÂË-´ ¦[ÑxTÇ QQ"ÔDéÁ{”[2PC-µ¢h˜Ú+K+’¿ê%‰&mXwç>üɳéÜÜm´·6±§¡ÓÙ½²| 6Á; ‚a*¯J &ó•ÚB=Úòªe¢*è(8“%WzÕ9#?Öj<(Š–Álª»`øÌÇËz‘GŽFÕTøÛìhùyqÿd Ûzæ±îü…ª¡ ʃr¡¨@nÚ;p²Vü!¼ìº™ö™ÍD´+‘ t=×hÈ_rHA=ÑÑ1äyß¹,¶¨fð¾^›M­"NœÓ>X™ Ǭò¬ ¥cé8PÖÒ–ƒ:ÆZª1ºo‚9A3ð[½”Ñl*H/|¬n)t±†ˆ6ò=Z‰f,jÝKK£nÆnÜ —´º²m¬ªõÄú&rÊ¢+¥?§ Í"´7.²~"ÚzІcµ‹ÎS6KÔ¥à*|†7äIvN–jÂʼƒêèÔUûåûº/?«å´ ´³O«Oÿzþ mí½§-‘PÖ²ÿò,âºZMZ F6ÅCÄ¡©JvVãªÖƼ¦×´°\ .ˆ‘0¾w¢[´”ÛŽÁš°ˆ]ÍÄx±ÎI¨ ímèá®9Ú"óœ^–]T¸Sß·×7U•’-´5!Ï\?œ#䌔'œrl¯haTŸ­\Áþ¿³üY :ƒš¡«¡Õozß¹F›7ÐpzÁ8$ЍrbÌ=,^M”±,øà·ál ×â«èMr*³FÎZ»¥]É÷,EÌ0/(CÖÛ ¼›sÅŠx}-ìía!ŸØ!q&u’:.ªØOQeÏ=EË£¥éàhPdâ7Ø>;‹ƒÔ+¯kÕLC9“Ūª«3V½0Ç-PZÄÔÍäÞ­2ª¸(+Ö8…Äy°R-Swd/ ¢áI˜QYê´*©FªJ<•LSÿÒ8Xºð4 –Å»-Å:8゜pVèë\OÝe^u’|áëÄýŠ#Ûx6PGJžL¾‘" BÅpÌjhä3½ïºjŒ43z>»mqŹ !Ê@b= Q2žµrØ*r Ìâ­XkŸb·VþýkìÒúHCÔaàAg¿‡¸âÝíC?’úîOf œÏÈ*À/íG’j¸µk«8îKs^k·ÐËú.õÊ¥Ý QpêÂÕA·ŸÅkæ³§:"ýqâÔðAÎs>‹ÕàÈeé2A°6¥Ýð—õM›ÀãI-OX.ý3m®· ´9ªÙ©•4–ÿEÌxz ÞM¯)ƒ³ ‰^‚sÔt—–ÀC5¤Ý&>öÜF¬jZ6g‹}O”çxQÿ3ÐBô•­}¥óLs¯öº¢.xnkÇ­Hí²6Ù_¥CºéènW®¨UÒÖªY²¥]ŠoUIá7YM1ã´ƒ´ŽÑ\{ Gó‹ð?£7:£Ÿá=QYJ;jù-5¤Ç™S÷zžc"oY‰¢9@ ”‰ FpT Ò7ÒšÃ^ñÌf^O¢¹I'4©âѳ¶ŠÇ¯È8Xäfyáx¹WÀñ:ÂÃôGFz–-èòw¢ûÑhë™?Úéb´ýóôË©\fø_î™mä2ÊëÞ |°¬,ÌŸˆïV9ÇVpX”à°ØœìN«ášìKík¿²Ÿ0_.wŠpúz=yB\fIÏLzŽ@..д}!õP)¦]FãD/xS¬a[Ó2“¢QˆÀ¶à ìbü'áEÜ2t1ð€]x“<§jU´ä¶w´h­ªPM„ W6‘}ºZɽð4ê ¡âüË*¾;™ÐyW×°7r¬Ì-ráçö$ù­"ë ¨Ê*7N‡Ãd¸Eä`|á IDATSÔ'•$ú8÷d@LÀÍYë¦Ö ¦_…H•G-Ä8sŠº†1” ‹ðy]×Ïò:ò.½*+Ñg¨-*ÖÂÎö,' "ýÐ^Ø›å½À/#+M"OiMЋqÒ;@L–ß9^&ƒ¼°"ú¶©tù …Í‘[JÕ?açäu8F†à¾ð'zªâGp¯¨îÙI‡yšØgâ£E)»šZ–"5Öê»®ÑjzCêÙõÓö~QZ}ÔÝÁ^>è³ô)®Mà>ÒI p$Úïx-û¸Œ¦çé^\Ï¥7Ð#p=<ݸ ¡$EÛä*…zz/‡Nõõ—¶–ñ™únÒÚ=Üh/,¢øÌš§ˆÝê_«j ÀTðgJÂßC쵕—¢û´¾hƒq$tEúÚq£š¶ÙµÅªO¹ak³5N…­Œü|({‹;kH k$‰@XDhOµ‰ô¾ƒjb*_Š¼È ÚÉcN}ø´"‡‹ìb›* ßÉëà³<¥’ðsñ†‡ÂCr¯ÅRáUrY/CΘͼñô¡± ZG[ «iÐÕ–¶®ÅúkrVõÖ»é}ðD|›´3»¸Ã@‚/.+‹×™t¥ wÇ¢ºx;Is¶ðþÎ{}‚p¼ËÍC°¾yÉ7_d7jG¬÷ Kðç“Úë“Iw¼Õn&ÿÓó‘ý:irŸ˜ÃwiA…«<Éj ÈÌì—‘Ÿ¾¦kà3ÜwÔzªJpŽ™^Wáy½~óö@{¤uƒ#3.tjzö§Ö5JÑJVËÔ°¿¾Á­ìâR6*2µŒ>Æ3ØŸô·ÄŸÒªF8·ù€†kÄiôPë%rá-B}UkÐh§¤¨¨2€St‰;Ÿ¨/zþ)ão—l$çA“"+‡oS“ÉŸðUÚfc°¿˜gwÈn³™6Ãs'„Eìö`w§•ÑÉrØŸàv¹+-[êß…ÔBIó=Ö¾”ß;ãG8–wêzG¥ÿM'ÐræFêÏÔ:Šte^ãHèר’á)ø·ÞBä¶>&o &X?ƒ¹²· KŸGNÛ]#g<•Ix?£=Ç´ƒz­ð0ØIüz2[ô“q(;;.‰g=€p>(lüp…{„W1†÷ W´)‰#ýD‡ÀÑ5ÀA×Ù®‡î þ“Á§²µ9PÅiŽ'ƒßà£ÚÓÑzYPž“†Åk§£+ª-lKÑv ƒ xWzeX[‡æª$Ø&È.rx.ÏÊý¢·Õg­ù ðTG`9ÒÌ5˜†‚z¤ÂÞü"‚>¢pPSÖkÔ_0$úkËÇÖ°O–$ Q 8 PÑ,‹NØH:*ŒmãnÙÛñÃkÊ * p:yh¬Ñ9A´M.9üsãé,ë„ÓçÇáp2ÝCŸà`èã,e»Œ4ú#¨Üð) ƒ [Ó2›Ø‡çÀü_áTÄ^‘fÇëÌtáuÝ]ÍXû ßëxœA¬†}–oæ`%ºXí$+d/t † eTKé{ò˜Ž6g<)îžžÌî£VíÔ_pXr9…”€((ÉÉN6+›ÿ¯|¡ ç8œ¥ö;ŸáWô~$ H¢¾\Î#P€ž¦§ÜäGøb•OÖpš³žâ9KPyíŽVë%kïý—Uä¶xèæý;I‚™É ³¾»Šgªk…ÖcøTíSPP½AKq O7\_• G]—%oµD²uDË+‚»þŽ@n·NÈ4Ô÷Vé~m>~XÉXN.Fïá¿pñà?Ú4-±¡úô&] ä'0QTAY\Á3ÕCMV…¤_„€‰h‚ìOëÛDnÕÆ¹CNÉÆt£ÖP‹ }ï]Q>Ýg½¿ð—„à)»}R7Äj8ŸýçdwN¡Z5ñAÝW¿EýÐ ´ÖjÍJJ&³È ¾Î,^ÆZ×ûñTSåß­óÁÚÉ=Ÿm ™7Ìž.!1ÞÌ$ÙÍ•‰& ¹Z¤£(ë¬ûÌíëïôc]Ñ, Šßa¯Ý"öõîM°/llC5]•“ ©IêjGå$µ˜5ºšýÐåru6›ÏyýîŒbU?ØP=+öc~¦ÙheÙ ÅÀN IŠª,hàVºVsµßåœ^kJÅNŽH^ xSåK¬ÿÅ&N¶h=Pcs•¾îqu }ø”VȨÉ>±+òNPg]¬¢t2TV&ØÁÜ€ÿàê »:¯šð*»Ú*SÅZå Ý°?Ï/j:ÈËѲª2Œw2Èsh;»ÂZ3üÔÔVêaF&ï/ÜMK„ƒ´æn`vB'P=±6Òn«·žœÚ Ð…È<þ(+xP/.KZ‰òÃô²‘¨Š3!±¹²!¨€è嵓™÷Ìó®>¢®˜8?Õ&½’ûh†þ|¸±õ…ö—ŸU$è¯j±…Z-|†gPáàX8µ¥Á2˜›ïC_T {k`_àAà›„Ô1Ó»rjØl¥½þŸ x´*]úýØ8¼È¶mÛ¶{M¶1ÕÔdÛ“m×t³m[7Lîòhïýë­EVi½eIVÿD®Êvd;<ƒ½-Ð$õPœ†ÊØdUœ¤4Þ"ÿ繫7QqÐ6º¶ÐÝON”=`‰Âoµ]I$KˆŸÈA'ùÑLyIùåTxFº¢ ¨Ÿ1×H̤Oy%ëß«5ó ‰¾–!Ê=عlhf²«lì¨dwUÏ&¯)ËÑ/žhבЊÔå|†åžjþHíxžÓ­)·Üù|‡2T ·Ý;Ó ’[“šKõRñÎÜþŒUWå=m˜76úWl®è±™£%5JIóà Ë? ±Nûç»×Ñ‘²|ú1'|=Q¼ùÖw”vÒWAnÚ˜Žž§5Ö:éuÅE²ÌuÓZÞªfoµìDþβ›P~Mrãƒ$VkÄv¡"¸:Zƒ&¡ÿˆ7¦%è4š›.B‹4¿VkéMÊõö®dúV¾³Ÿ ›vqõ‡8 D¼øa|ûTNÜÎGkÈíð ŸDµ°iDi+ þ>tˆ‘‡è,½§ú)'‰6%ÛP¹¿Eka´… pkà¹Ù[GYm±F§ïð[r_ kµDÒeUýÁ¶ïÚ«d~û°Xd]BÕY¼ÈÉ|b X*Ò;gÔ'­lþh7ljÃzs‘ìšlOûXŒ7¯¿ ÿ¾Lƒ’jx+Y„Þ¦§kýª`Æ‚õ ´ð,wGÇ/ôõ~â•ò·è‹J‰ü°NÀ´]¦ÇUÔÿdtAËñTZµUÉ\t\ÌGuPAuIô¸VÂZ™ûIvµ«ƒ²,ŠÇ h ä¦Ï`9k¥æÁ1‡³âP *«†¢{P^ ÀJ!1O,‘µÃjz ÷i!sŸj %û¢…ZÂÚó)bŒ!3É\-É‚²«þ(Yè-VË c¬DAå•¿E".®ÍJâŽÚ!Ù›£»¶ ùñGç©ê†gÚ"9UÎæÃP;<ýC0^JfB¸$ÆƒŽ¸(ŒJ¢Ï‘ ¤*mÆéi³9?­.ŠeQ½åVŒ_b¡9U˜\Cåᑒ꽚ŒÉ’h&êEÚ2,çó­Dåæóœ´üº+–Âò˜w†ƒ(oøFä[d|Ói9¼-Ü9\–÷ kŠ÷dC»Ñ~4Ãq¨²ì%m~Þéñª<_ªÅ;&Ûk®çTkÓE´P÷x1ð†{¸,Ul:cìì)VÉ®žk†îqÓIiå 7$NÛ†–àjt:ì…_ðŸÓ”ïréI´ª™Wkìþ¥‡Í’®ª~(‡¨$øS?Ç´ð6ÖŽWfÚ‰¤×«ÒÖ*½è%¾ /ĪOª ¼•€êx£¤êš Û¡Ê‹wàx¼‹–צ»sò³2Ÿ•C«‚ƻښƒiÛ(Sh¸4q*Äx=cñRØÌÆÊÉZv·2.ˆÌáÆÉ/i7ú^ë Eý\Ôf|”"äx†–I¼ÏeçUßÁíÞ.*°¼‘#¬«Ý¯æØ÷PEds´ì¡ »ï¹Ï7i]ñC*Û%GÀQ5cwe1;ANÇ=a–ÍóÚðÒjä¬wwkÈ42Ž´:YwA¹©j, ß‘t:,Ò2jŒíÆV£¨±’,¦=eœ(ÆÛ=± ‰5êJÁ™œ.voë”<ÈÇY$ðż®l-´¡­ö”ÈGIÓÞÅ“¬§¡½A³è(4íå^ÍG€NFeÑ1<†«™¨»ùÕ4ý) ÙD±ØÚj½°EÞª·ò´zƒ’óä’¢¬ Óxœƒê¨Œ•‹Á+Cn9X¼ƒá. A=bÐmèlGkÔèˆiƒIQ}­6>ÉÊè’ˆ hŽk¢h¬Ó‡zYÒ O£†l OÄŠçWÅwÖg‡TÜÛ ÓX­‘þX[G_òÃl!ëjÏçíœÄ9H}#ëH2Œ4#w¤C«KŒ6ÐRßiÍX¡qµÓã]«}Ø4¢cÜa-RK¾„Cä"äqo÷Î73kiÈ+l‘ZÆÚ(fmL.ÿ—èqÞî¼æBó›ñÞ˜fdS=µÚ>>JzZ\L¥3YPæ¢ñ‘Õáfá8ë´óBõM¹Šwª´ø‹ù’Ÿççœ:(ÙU4bº<–6‡ö2‹)þ`Ô(wSó*ŠxK¹ ù2i˜ú©¤CIF§½ôËüì›SGœ Íd:õŸ±­# p&| ¯ßjžj"|0 f¤Íèý;özö7úyߺè‹FI÷'÷=ÙV¦ P_¥MÕƒÿ¸®ö©†¢žÊ#0³d^µƒŒd#ƒ»xý±~ªûÖÞH—Ð9Ö^¤aM~BÒJû•ÌcÏ Ù!O ”R”òø;Äí³NGÔ „‚’ȼðÊ/wPvYÈÌm–Ñ«£ºÐF5ÇôY´•üvÔ?γJÔþ¨öu¼3PÄá¡Ä¥½&”:x»s^Ô·n[^i‹ð“#mÐ ­*´àyPgt ¦Ë{²#*,αËNC¼ucà O³bP M…VèÎ@ò©w°†8Оàv¤£fPL>P‹ˆáj«ü˜ÞY¥g¼ƒÉáÈM37 çTÕr{Šh¬º¢(È€‡’Gúrvuyµ7Ú,\íA ü7rË&ê·jÊNÙ£‚wyõX›Ævª;(*£}7Òâ‰r”¬!ÿSwåŒÐ {¯-ZÉ?…‹Ö¡;ðK£#-¥$ýPnXCóâ>Ø€q°¯aWÑ_µ³8«ñ|'ž'"1¯ÀšhcHSòÚÀ^¾[¦è.ÞNàêFý®)Ôù–GêFòúØ»¥(lé°?²/è $á}è­øLéŸÈJ³š¾ÊíÛîÝè>«o5~Â^m·f É<õ$;Q#¹œ·äñVÔ×á¡gN˜ѳ©Ïj þ*“ þàγ;ý·˜ò¾®ú# wk÷Ý6ÊPo­)y+ýj‰ô¼ªu¾¢8”*£ £Õ_h„ÈxZ™®ÖkOÌ,ÆF2ËS\û„ªêËðW4VΖ¯QrdTÐ›ê½µÅÆ8ï9m·ŽÜy»·•ĦØñ‘j"­GrеÚ[=A_¥Ñîé-ž"*:aN¹Ë«üjêntÌÖ/É5r‰<-w‰| ­OGRS5€?eXä|þRÅÂC‰©pZ6Êq;½7ª„Jâáô Qn£’3‡W±çñ[r%¢Ú×AßmÓ¬ó‹} éA"ƒvÕoe®ý)VZ["Av×Mó•½c¶ÕÔuQߋߙ7B²-¤V˜ã~%þLìÝÉ7Jûa”q¹ÁƒNêCŒ[bˆšª4ÔÀyäLVŒßSºU˜Ï°¼aÊТ߸t\[-•½D=Ô[åÃChVý‹ëŒw Wx ‘=ÚA¾ÿ'ïèoù=¶ƒ÷Ð2’¢*š£)|­–NuÝÃ?µ„B~¹¿eÉðƒ¿S[xYZœdAàÜEC±—Ô[÷Î4Y(suÁY͔Ŕç“OÔ'u\ÌRKÅYsTgSqbûJV¢®j®ì̾)æŒáWe'2 ¨=^~f?B=“Þ3C/^ľ!êEêñxû—Òå;UL.PËdvòœô¡¥¼í…çAUQ]æµï:Ãcਗ਼äyHþÀù¡>/.^ Û5>~Å»¾oG¦¼ü²ôÃDÈÈwËšj;Jå­ÊÁ˜À§P+?Ú¢^‹–ü\@éiÙJÝW…PeõC[Ð1yý‹V«'ÈR~yT=/Ô3ÈGJ’‹j,Òžª.wFK@GiÔ¨ZÎBV9Ê‹€Ü…Zã×27èPI}dE© nG,­êeùJµ%dÕâå4Ù 2«KmB§á•ã–õÔ5ò˜/’wE4º­zŠâ‚“ü8R7ø‡8©»\óÒgwf¨éb°ø‡ÌðzÔRV“ÄNqJý ÝдëZ„ÄâJú6x!³±諼-ûY…ˆ­‘|xê©À«l‘SÊέE´¬T“åW¸…Ph€ðÉ¿¡ L>@Úàh6Y˜Yãà&*ö’oê½hlDÔ„Õo›ýÉÐp3Ö!þ Iq®y¾„²D‚¹—¹7i“ÌÞ þŒÚC”wÓD\ J:k¬oN{ë‰3.üÊù›EX„W¿CíÐvüÑÈãBî¿<$*àÙâúÛÏ?Úo˜ËC)¨è "má¼lêZì±Í“ö›PeÔßšf)Ç×XqžWÕÂïá£XCk¨'Æ ˆ2~Ø£ÚkõŒ«Æ dÁn"á¨Ü¯šÈü<ÁZ å<&âËÚß|3¬fó  ¾.C¹IptVE¼§å15[$ÓÕ,b,ó\ƒ0g‘Žú.jªÊp›ÏÁ¿Ð(ô/¦ÛÑ_dœïúSå…ÕÚQVÕÎk6W…T-œƒþÇH7¸Š\¤ ‡ÊÚu¼*Ð^ž:Fzý7ä$k觸¾}æsy1©ªÈªl. :ŃïqØGò“­h‘Ñ ý…:‹Wp•ÜÐúâ•Ð^_Žšª…öU»>4-ñ8D P;þ‡HTkœ…T•…S{¢$´Ižg¹ì,ð/¥ŠMÁ×ÁÍÒÓÛô, wœóá‰#Sk©Úl9C«u2]™I?eXºÈê`+»np»óûñ&²ÑØëZï½€jÇft²sÛÅä'>œƒ­€¡®ìzC×eœ/ÄE¡›¬Šª‹bšNw…sZïE;»Xø/Ùͺ<êÌ‚D(åÜÇsÐC>ÃÓ?j¯ç,ÞH?UFuÕ#µñSý±ëˆ1”ßÕ3ÑÃê›ú[þ¬|l¦}Î^ÞÉž„=) CnüTÖ‡"{©ÃW‹‘W0’ÔS)öCò²iµŽô-i\ŠÑý=èLƒH¯ Ø7Ùe^À\ú:èôx¼wGG>Û«7? ˼»ƒ—#‰N'è'8-ø8ö Ô!<Ý—^ߪ/#'Òú`:Z´bï1KÖÇœÒñû§¤ËpÒ®*osã¯H£ªû•oVÒ¼5>•ˆòj…3çŽx<ÆïC'ÏáŸùHö`QãA$™|w[ƒúHw×2+>´8Ô_6`÷D.gFx`„:?"/Ôd:YyP³Poû¾ 4»ª8åÑ^‡ÙG‚ßí=áö¸ð¥À­Ôûœ½@Î ÚÙà(‰Õúº;ÈVŠ5Û¹iöP¹ðM-䛨·ÒŠº¦«mh…¾F'…ÐOû;e ø>~„ŒÃãD€Sâyè´õ“ïµW9ñ¼+ɨÐË“1pë“û묔öÎãÄl çÔ™Eîå»qu{(:.—Á±XçýDÛÁ7 ìq&„­—>µŒO®š¶uT8}ÉØŒžn®õQÛp‘È\ùÜÞë~.Â&¢ŠŠ„7EfGZG>ŠÑ0HUUÇ$á^š‰‰—ùYžjy"ÝR޹ýæi5‚VSDG²<êw¤% òQ®Nú{Ò½…k¸²hì DQWË_ÓJZ.W;–ÊþC=™IzÒ–P 펺yI{ßD\Ø=Ê=ŽŸGKÂW\·µòzfZî!›ÿÏ>Ìvª­²,TõÑáƒTùUDûåd' {q!Úƒe`eéìzè®,îž´"ðGd©Üª,Œ‚j š‹6@AØGª±êâ+º#“äªA7k†ý“ýáÜÁóéߨKDD׊Àvg ^ÇškÏ›ô]£íÀäðØ”BáVyET3I}tŸ˜0P\âGØçµ¼BvÀV¸ˆ^ãŠô08rŽz‚6âʰOM&sÔ2TGr¯Ü…ï¢óÂQÃICxŒ2êGÒh`ƒnˆFªôµH¨Mjt@ãa†º‰ŠAvh£jÒõø+4–1j7rÙ™ dUyH)E•ƒl¬FèMØpÙR(gJ°Ãj›´ÃE)c±ÓD\‡ã6‹¤Q"ù=ÉR{)»õTñÞ:A¯Ò…ò£l%§:¢lü‡ú.®óK8·Š¥ÃE¢ê†ÏAELµ.,«l aª£¡ì¶$²°¼,™Ë^DF„žÊè ü¯'»¯„g=Î$o‹†ò8ŸÛÕ8td¬ª_ä)öÞN¤khUmÊ3‘ø©ÖÐ<à>£áÊ)m“μúíî»&ºZʰ_8i‚Ö õ¶ï„×™WœÌÉNgšL¿ji!^ QYá/ÑS–íådªÚçHk¸K2áƒð „øƒ%) IDATŽ–B4B›ŽÚH¯Ö˜."Ÿ¨„ ê)›f§FÃoh¨&ã›ÈÉè1üRª•ÒeM‘;yÃÀtUƒì%¦Sšß3ΓvK¨¦OÒá\ÈÒ÷ã!ù[Ys 'œ’ йÀtõ/¯MÑ•_¾VU%øÛ:Î×À§„ºIiÂ[Ùúˆ–G:»v« îo1"Óh2_‘%<_è.Ü>ÃDÛ#eu¾™äÅQD§aZI¬Å /'·xC÷XºÏ"QÂnšJ~“;Zi--M[MEùG§–ønŸ!£qcVD VH¼³“—TõÑ õUÑ@sy,­(]/¯ò]"“c“2G%©Zb£ªýðkw~ñLžVùduŸWRBVhŽ»ÃHÙËÌ­ÍP·hºÉÙY¾ÎŠâÔL®È/¨L…JñdYßšD%¹@7˸…Oˆ^PÚé¦RÅH<ÔõÆ4$+tů\x_´Z_¬h'h=Bií*Z!øJ¾³¶ö ¾E|aóÅH¶]zÔI1?`E¶‡áËd}o/c-C-Xgû*/d=JÙeÇÀqczävj²¿IšoQ—}… Çoxçghx`|àÖ¯Ch$û•bÃ"­„9W&iüõÂû“ †¨ýÎPm¥ó5ÒßÑ_î9i›9 ª—¢â@@†ŠÚ'™4²ñoÐ’”Öàóv+g©åNmZ™ð2|!ÜÜùCBiý­¡g ^J¾ºúm&4%µ\Æh÷à·ÐˆðD«Wr†”BöD»*ÚÁ6ÛÑ,–ž¢ÉtOŸ˜ÇUmTV®ÅJKŠ™¤ƒÖ:<%òA›ª L~h¼¡ÏtCÿ;ôÚ©¤csÞêàÕÍÚ…Ö|./©<ΧðÕÈãÔ’É#"?œú,­´á±4,ýcìõ,6üU[íº`îwÏ–Õÿ°‹ª1¢_I²ž[pp*‡Ý©’Þ«±Æ óù_q5óÌeÃÐ(22ᤦ§LIÊjo?³j9 ·ç §2}m„ŒGr½˜`Ÿ²‹8}ƒÍÑFË ™Rú%µ gÂËÈ \TFÄ<²SÎFÙ1g“ÅG_-è(­™džÀ#¨¤Î2 ¢šîR ”¯`—RkÝèåt5d?Uä4Îc´yiä6ùÒë;NF{t\µ·ðãö;û8z€Z£9²…¸(~À6ùÛnËÃö¡È;û7Ž%RgÙÃPH%;íHäŒuLVfõIµZþ@ïñq!(›áÛP_6V+ÔH9‚²6YIê5{Ÿ´‹;Ϋ‹â*Mý*éƒ&§ñPNl…á©Ù"³ŒOê,-¤õÅUKÔ_µ¤ÇÍ3à œJÃ÷H~µRVV'ÑJxÙ¡¸L‘åÐ\˜¨®Ò¦ªŒ`?TY¹B¼ƒ®ª› ÕÕ"ö RÔ`Zœ'°fR¨ýê§Òñ<ƒÊ’õx¢l.TP탂b©š­>Bs<N¡AÐYµ¦}É-1|æ¿Ö9Úöê-Õ3Ü‘>A Ú0GøEQFu÷#=e]¾'°ÑîÇNÈ ´ÕzóO<+¾o‡í¹æ"±[žNsEÝSÕ9ƒ‡(V¨í Y&r††X=â§ëȾÉ9€úÀve¢ï2(ûÃVSlâ#B%ì*‘Ã8uµûËz´ƒá¨‰¨ÿ“-?rpeZ¢h¼Ü¤6¡ª»ðšüR%Ô,\µÂ+QYè!Þ‹¾ ƒñCvÌéÌÿ$åezGÐ_d­vÓœNC± ¿^xóäSÙÚîê¾âõÁÄÈS>%ê/±XœGw à|þ°ëñTñ†7‹¡:ú©:ÈûpŽ'³dsôTv %S“žÀ©šÀ£½ïÐ/å)2g¦kå4r‘–BŸð®ùò#kÌC¸=» ß8‹ìL/‘îP-†»‘ ‚ó›òNg þ ú=—o‚Ê-ÆõåVUX-Æ#pÑD­“gå.1Tõ€<*AmT«Ù¨™½ŽÃ[QU¬áF þ$f‡‹{«XƒCN Îì‡b<ÓÑþÈ(V÷ -Pfg)–V&øiøµRÀ µ)GåÉ ü^å^)ƒÿºzºGÓx²Šf!åÄ-aË ò™µ‚š` Yô‹hÝ=²Ìê)bßaJV¢Ëا¢¼^«8?næê­¥E-ÐZ2Eä—eÅvYºŠ¹('è Áä6qYݹp?Üþ6×Еè)y„r@)yVoHÒ4s¥‹‹ÎV˜=Ëè§ÏÆ—]¡™á\ö5”‹W<‹lGüdºñ9‘ ž3¬¯½42Ùî$~ˆþÒ¦ò™èµX£6 Í¨’ÞCìpW>µßÉ?ñtÒG¬Õ‹º¶¡ ²œ~ÌýK ekŒvª…X.âxD[E)W#a» ÓœnáiÖ`ÕXEÙõAî-æ]rF¾ð>5®xR|k£šyþõ·ÖŽÑo°:e}äŸðµUm•9àœm!¹k~ç¹hM5o#³ðŸšföQ]K|=iWüë£w¸ÆÊ]6°9)Ñõ¿Èô”r©5yqfëx¬5Çž—Z&aLò;¹V|[Ó'ùªÑ†´#yé »Îú*i=­¾â»âÔµs‡v’ ðÁèGÚè{H²ÈøÑ1D­Hpyä/kR¤?•¼ÊµÌϼ™©ðVö]24š †ŠûfUvUÕ-“&Õ®ÀV‰´}ð¬$G¬ "t§»>Í(6­”+³?/IÕc–S/°>¡‹C¼Ù -úWep)˜ÖÝôý¡¸¡ŠG…Ý©Q팭øŠ=Ú˜§ÚþViòiO*°P&Õ:¥\¨dòŠ®€S]Õ=TN{J.¡ª|—÷vš©Ñýékc· 8C/ËM²+„œ8Ö\´ç³Â5RO¿§– NñŸó×L—ênmµGµe=¶’ä§’^®:¦=ä³L³ž; ÒGé†0ƒEBSÂ{ õ€:æììÒ{V9µœÔ_t±Æá>¸cLaÜŸÎ÷$Ë>¢Hp˜çLL'oMHO÷º'…7°8íée—S5¬aá%©§Õ;gOÞù«m¸Ðuoº®ñægÜJüP%E:JÿG=Zok¤G…Ñe5EõÐ ðŽÏwŠ[W"µxg¬qd°’ 7¼$¹õëde¸v\߬fËÎPŸE…ÍqæEµ5¼3á%w‘üî×$âàj‡J¢tÆaÌ é¬ª‚(Z¾9­Dœ¯!åÕ:ÉažØÅâY&õ5DCõû!>EÚi…ì+9¡qò±ZËOÁHVL\‘÷¥Jòþ2—Ì€:QŽë«‚²3ïjS霸XøJÂË„9F3¹2Å’›øß|h¾…zB;r½$i%ÄöÂ4O+“,§¨ž­Fk£!£\¢4Ê‹£í0—Ädí #Úü¨·š#ò6†ÿtʆaIµf¨4ìfø“‡’¡6oéh¯Sà‹{šGK“ݪ…:Ëw‹Ty škêùåp™‹uà†bÍØ«q¸c`#ná$¨Æh?îŽ^£Ãdj‹÷Ã;9]Øîj¤XÀ{È!ü»j)±:‘ïâ°ýšSçˆNÉ-ò?“5”¥MudQ•Kã¥ç*Þ€f{ééÍU¨1þHª¡ƒÆ3¿'ÑÈõÛª‡JÓ'P®âzl¯(¨"ÖàCÖ;v†§ÓvisôÆ`²ÖNjg ‡Ê®Ã­¥ÑÛJþÄô@ΕW¡9®½Ð‘²°5VÃÐyB­Ck#UíÙlG¨)OÏàŒÄëã1r+> bí©‘þq®™±óR{¥5œ óß;£×HŠ«NÐŽn çrêG&Ù‡íw<ÖUÇÈ•Ã]L[ëÍÏ瓺áÌÖ).켎?VÙÔe}œ˜Ä¶ñסáNyë°6×t7wsu™¤¨‹Ð[Üqîð¬lÏ5TqQWÙp¨Œ•ëpë¬0;ÐÇf} *Ë¿ÊùŒËߪ)9§W‚‰tt“UÕ4^KüàQ²·ô¨t¤€|õµ¨„ǚɥ¨„:)&Á'‡ÚŽß:ùœ,pò‘yª¢»¼qWiÚ.ððXÖ6òÆ©dÿ) õÖ©E›éõô´´ªM1 {åÈ EÈ|bÑò{ÔöÌdGìM²e ‰˜Hk½îî|ø>–%ð&r‡:ƒ5ÕBCݵçÄ­õÑV`¢ýßâ·ìª)Þ˦kÛð]m.ÍA:ëWPW¹$Ý…gÑÁä^Në¢èô¡Ð ¡]â1µßO&NœŒc£-oB3š„šªÑj’ꯛ¬¸-ò¸cÜŸLŸÓÓ÷Ñ߈‡ä߉'ØHRä ÛèĨzâ–sÿ”÷ä+ã2ÛÀ7£  áÛÚ{äјÕ5KÏ ñ4…ôGñ‚kq{´D‚ØÌÏc‚eqV=ÞMï%>Ü3 #Mí d8y¬nzÛ{Á}]¯#³ÿ¨ t^ÁÖÂLöoòøˆKo oùcà8yÒÝô'®Câ2y½àºÖÞ(ìzl„bÆ‘ÜdœšÄó°#*Z\S—”°ÚóX³`6ΙŸÚ!iB`K£ªG}‚Iðù9–„oVoÙj}½÷·¿¯ž‘Ãg,W™ÄEƒ„ÊFæ©Ñl.fg7·*â»°™>áûuF;îúl<À¦öÒy@‹Ýi<íã:Ÿ6•]zr=¿ÐîDù\£2¤ÅÕ½©¾GŒªfä.ÅÆ‰<¢½ˆeäžFHø=Ç'Qy|”wÆPzl ‹$ññ|²Zoñ줚!î«<@ÄAÙ[P]ñNM*‘©h:7í-öIÐ#ö•îRµ#{¬‹¡¡;t…è¨M.ÓCh.¾Š7¹àåX±'Ê"¨Û‰VAR^ý…_(¶’>Q›fŽÚQÆfí¨nhUcXÃs‘QNkÞQž¦¥ð`ðÙS5P5ÕG{™¬”|>y¸j‹3‡ÇÑŠúo¤ñ‡¨½ú`Ðë9­eYWfØH,)ŒÊC\ ¾Ãáu:ð¥ð^îd]a¡ý†Y° Oâ7a”ªF ‘‡ø½‚¿à~[/<5Õ+8]óUª l&ö¡êZ®nÃZêV=äK™^6E´4Ceàž²HSØ&Ê‹j„ÖÄrÅÐOz% ú‹kZ|„œvûhw}4¾åÞL®Ê)úoz_ÞBµK\•НŒô“KYwø¡µ%ÍH µ‹,åäqeAÕMä“x§0Žà zVPž TÿòR¬¸Èîv®ãÇê·:£niAôSÝ4îÂ3”A½…Þ—Àëð*ò¶ÉTyXTæ‚=ñ¿zVûéÒèàƒë²˜ê»a¸ÐmÔö«ab°<«Qs±GíÃ}ÑPõe¥ µ?Uz5Óºd´V¹Q¸ˆíæ6XÆîèleLݸÕiluƒGlëÎF8­äã™~Ó×2úÇs(ÝœXlÄXÝL¦÷Ä›¬íV²¡2Øp>\´´#3Dg¾·ƒÁô¾h ‰ùìëg=vn§¾E5•Ký'ÍDZë¥è5‘¨¤lhGùf}›¾@m‘;UM¥ó±¡ŽÅŽÈê 'j]Mó™Ýõ f=zõƒ?ÕBuÁÙA¿¢bò2½¡†ÈD\½„¸©ö˜Ö×Ëzgø yšéy‚^4›~£'C}=°F†U$CR.Ë.éÿ˜½£ÚðoÐŒNÀñk=;=LW¡%ú·Ç³>FF8WC;õŒÆ×^c§1T¥@QLeœŠáâvŽ”©ô.ä>BÊÑúÛ,¡ÿåÄr‹ÇV5<7!g½™Ư̈ՉBd=[Ìsá ¾oFœ±§\O¸ÛoÒs:¯Ñ%bBo½# Á ¹Iwý#R®O詈Nè(û‡³Á v!¥õ/z Ãí«ã`ž²š§¢²áæ,šdmNl•ú™d¢š~Gm*×äôKcS¢,×$ï8™[ùåj CÐj’uDox&øoªÍ(EUÛUþaÛ  ŒG³é:í”±ÆxF ë>áäŠÇ“Q™àvvw ô‘Ú<ÞÂÍô89šÿCωù^+:uKdTº[ÐÜŽ·xB$©üÏ|¹½$ù(UZm#ÈãÕ,kúõÿ¹Ï{ššÅ¢6ÚÓ¬M*Yý¥æˆJááŒÁ7I4¸;%‘>w7‡UÈm•ð —5b}ÅÜ—hi}{¨¹‡ÜJGà,ÞnÆhMŒÇÆ4m ±‰õçO*ÊÛ:óù.§=#V¢œ°ÐýE¦Ê‰2#W2Y–p\ËFösg5O$÷è8îñtWóï2k»“|{}-<{rÅýlxö{‚ÓÀÎS¡¢š¹‹©ZŠáo4½ù…?Œ¬ WæÝxöÐr›BCÀg\¿µfd„¾ÆÌ®/Öš@F¶Ž×€7t¤¶ÚZlŸ¸B”ÂéQs¾âY …”åtÂûÉOœ¬¡ç¥ÇȧíÒRÈr–LwD©P¥£ct>at7Y†jÉ3b¥Úá´çTôÒÞ/>Ê:"NÖWÝä°*à¸ê­^¡b˜”•+¥:ê­?$uÍÜê">GBªº(Êj2If¶NÛy"pEÉÿLÛ3&}Ô¾4ßcyæøÄÚÑ_´!äHàÙ#Ÿ¿I6²7²Îœè^ “¼9Œz÷8_gßpòA»Aš»/yÕ3ó©çß`ÔÓ§û›º-ï騮Atw€~[ÌŠºk¦ÛLžpRÍ<ô;àž«¯Rÿâ¼ÊÈ•ì'ûKVa™D:çs¤:«Ÿº<0*¸?ôÃÙÇöÊW²/.J«Àí Ú#Ïc]Ýä йž§SÛÃö'!qZ>CƒPZZÚ(k†<ÍýŸÌ<\õ¬¶{jÃð]ó<{ä\ç5Ãås­n¿/þÌòmV¸MÊÓäÌUüO%ÐÒð§È£ì|µ¯³Kì(~M›aÐêmqq#hNÑÖ (¯|e¿µFÎY[í{ƒe‡",%jÁhxŽÈkŸ ½‘W¥ÎþÄ÷! sùjœ¤åø„¾ž dEdŸgžäï¢c<…ZþÍîx$¾Jžê½Ô;ìxŽJ(£ŸUd­ *(׋ÕêadB0Õ)Ì÷-}$õ£½üO4Y -› oQ ^˜g…_¢¤³ØXâ~n¦ôA=Öï+.©QS×h‹ñ3‰é:Üf˜õ´¬è ~Sï&©Nªk¸¡:®ÆD†áêhj¨m¢äu´[Ë«e@.Ý4JjQî.úFWŠ¿±¢Ö» ë¼B_JþN_ÕoiÒG¢Jkƒ|I—ÄÍsÅÝÉÛÅ=Î\ƒ™Ûô–ÔâÍŠ†F4òß&Tn êf$—³ˆ?³ÛZõI€~×ãÌÃÄ!#ÆKµbp_Ó븲¥Ù£ù3êË´ ðÎÜ«Òë»+¸æ˜ù\X«EjñZÎÑpz×ßF:|пÇó åñöô5²3™‹õ…N;ޞݗ>5GÖª¢Ÿ,ó…7¹»»GŸAÍTe×qzLöBQj“µM=Rñ°^4VŽj‰OK†Iª?$ˆ85MS{ðzp5« >ú7½_¡ž+( ëCøëPQtrB]µ–çŸY³ÈkG²óËNÞÎ/†ºÊ«¢6&ëñâ6âxºö¥¢l›\ÀÇh_´@ÝF•Õv•  shY®ÞB6Ö¸:Z¦}àœ8ò&¢Â¨îiyÉ"§·z‹öZyÉ'2ËN«ïEyØ-ñL/c¼¡ÃUøÏVa‹ö¯Úã̪âÎh\× Ï=×G´Eï– 74‡þ ¯Çœ>KùQ±ÕBŒlUŸÑLm˜j‡{»òB,š¬OQ·äWò†S£}°\}P¿Uܓϗsé8ÕL…q>͇Oá F ÜI“ñ,Ûb8(ªoø9<ÂõõVúoã¹k qÉõÀ­´úþüîÕFFÿP×Ps¼1œ^@ÒgÔÒÿGŠèçÍjúNí¹·d ÜgÆüœ¬¶Ëw,£ ÷¨°=‘áC$‹Så-e\HõVgD\å± ážhƒÓ•4€íl­ ³†¶iépIQÔ\îçÙ€³“ùtŒñ€žÇh]ò›ME×áYeä{|ÁìK† Xo”¾ƒð¥è3¥­מˆâ² r‘4t‘y]”mì,3<àûEv¥O9¬Í Û$£ …ÉÈf«…ðA½b¥9…-öBËÎÄg8y¬û)¿¾¤âÁdkI8½“ÕÉÌú‘ü,ÜÑNä´­x9~^EË?íüŠuʼnRiX¢=›²ë‹’¬<¯E[h™]uÝM=ü•ÓÞ57§íåŠÂµ¤r’‰ü‹ª STOdÁYzØ\gÔŒ A%ñ¿ˆ¹híèMsö xéôä§ÍÖ«yt5t×èNâÙH¼^‡ç–G°mmÈX©«÷ú-âÇùÏ5˜ö’\}¨Ë¹ä^a4PeÍ~® ž³øýÇÓYŒ„Fä-?Á|±BŪr½Ê#£T9u‘Ÿ•½Qq¶En–µƒÓÑèNp6kÓôÍ®rf!ïY³žÑÊ×[û¦]4ߪǨÜœ¸€:dóÔøÄä”–?×},/›òN¬Ÿz»{F§·2lÌÐ'ºX&™©ŸëRÔò8sûík»AW€üŠKJüÝ'ş⤑vò8»ÎöòŒü~¨œ<¨Û)F­Mëé¯u'El¨—ÊeTÃàMúkí̃tz£•!Yéþ9¡ IDAT¸~ï'—ez§Õqºªµ$ÂÆ9qPÁziÕdq\H„{ˆQ"(#üÛ.糟l£HˆpŽX¿#§QVÙ™Rçåaw -^;äïgöõöô-ÎOæÒðXvGaÖÊ¡{ÚA«rjt©~•|÷Àîn•\,Ø,Õ ¼ÜJM €]%RÎúÙÕsD~Òñ8„sà óT/–E&½´³Çé-2[,òÍ*g Æ:ýÂîà0;5EOêžâ$ÖIlœ”11ô³Nhvrá¯þÄÒ¿/¼ÍÍÇ9}ì[èš* ×c8¹è~ãÊb\W-ÐjÝaœÏ¢q¢¨zMCÚ=ó˜?¿yÇ7Û}TïgV–™UGyË>aµ ´&¾KVI»¾.úov$ÒÈŽ J:r Mm*|–ú—3ÓšgíƒAêIJ‘€¸¦ª°ã¢„ZdOÂ¥ÐlÕˆ7²ŠðÚô~ÃÇòÒ‘–©9gñüo¾KþSI¢ÆQ€¬ÒcÔhOCÿFï•4µ|bßû²“¿íÅÞh¿£P:±Hf±·Û)p%Q—·ÃëYKûT•ûðF\Ï£Kñ{zBoé˜.´@Ë_µR^„j§fIÈ*êZ;B”æO\!Fîñùh8” h#ZÒI‚…"cäo>ƒ=gd>ž’Õ ‘ÎYŠÊ¢ ªD®á!¤¬Ñ™¶GoÒ¸ÜÃ]-£ûºŸi)r–ì,’GÕ<½6,S?Æ£pC:¯@CI|²" Gä.qW¯E9tªa*JerZ²Î¼.öªY*±²7\—TuA5´®ÆÞÉvõ ³ƒò¼JŵPv‚ãòº¼¤Úð 8„ÖðŸQÿù˜£fmw¿´M™Ç¹„§¨²#žŠ^áóú5ßÀoÐàÎ"¼_1ÑR¥’ ð{Y ˜ðX+¢è%÷‹Sø¦ÓÆ*BjXå퉤 jûÐdþÃî.Ʋ b)4¹ñD|CîÅÕ,#*Š\èÝh,×MÀ2Vx° l9Šâa™]ãY¬vl[ðð³£ø³˜`­Óçß|*$Þñ»è+ÚF¨3¸šÞßÓªÇh”V‹½¸çàs²‹L]Ñ9Qø(n³¦2Lb9” <'lAÐ&q'üŒÔSO£7¨$Ý‹¥RLÛ­ŽvwðTqeõTv7ðt ^ú½ê¬B=qlÃt’ìéCþUZê·ÇmÈxW5妚îýOýËÛß3W ¹Ù‡Ébs¦$_ ­»¤ýšâýå>4¦éäÕÖ×(o\?ðpü„Æq]4 Žú‚Ý3Ù“J™É²ˆéösí ýF.©³Ôj/¼–ZÚ ZWé¬ÿÂKP2úþG) ÅÑŸø=º‚·È-V.çŒÃ^Ä—îwçc o÷ˆÔÈ1®šêmüMïò?9LîCuùk‘"Mt‚Þ• ÜïÃW+)aû}•\Ý=õ,ÊIå»r?û`?jh÷çѰd8?Ëâ…¼:MN‹Ë0”ÄÊ |š{ þB¯†/óT×ZùfjoÈ ¥4Ž„cò¸2ßEÕ-t©zæAœÍ,l[È6Z;¥œBfš³À¬ƒÏ¢Öò:-£´Á…ÉüRù…}¸#Š/¡#¬%•œZ*yNŒž(k<‡Nè´Ç"ì¤À ç·¹ÕªlGv¤^áV˜8ÆoâÊBĮ͎<3½e½Ã¾ETFí[Î=k¤Z;Ílìïî/n–O¿n¯°s±Q0tÕ–(EøÏð›Ú„á>ë+Ïà™ô¡Z]Ä[àoqF%"îŸä/å®(¼ð " õ‘}È#mÑx±‹”RVÃ7¼凌¶¡°4Tÿdž±F‚[ó˜ê¼ÑÑÍ8 TÅ,ÓÐdçï-:b¿è!^K4åÄY«M¥ÓäF×]%ML¡›øOÅúµº¾Ô÷Í×X¢Æ{^zJéßK9Ì©–z%t.ø1-Ü_< ý çÔVÛÈNÏ‹ÇôùÇZ‹cè¹w…oXØ^ý·HãÉ,—Ù0T1P8ô»”Qä¸ZAùN62‚«¡r¬ÉKŸ°&tÒ9ò•< VrVZ–6E|³„ÇóB¢uؽ0ëÚÈå¥Àe!bl•±{ÐÕpÖWßc)Ôgª¡ïƒÓP¼äëI1âçõ?ÕKä §ì?W/âÆ“È { ÛbÝÅxg¡ò”—ðväa¼Bê£bº‚ý‹^öa­´8Ç›Éÿ¡÷ü±sÞËêZ­d}{–Èi§Z™Yf ñÀÏ”Ã"¥‘ ²5ÛpÞÂê"³8[çäw;9øÕ¾Ú–^(ôÀÕ'¼{¯ÙˆgÃûœ|¡TЕ}jZj[ñ+Ô ULSEVè¨ÔT‡²7ÎQ“'ò.¸aЗ>W-¸B«ãÊêkyZŽfÊ„Å,¦ñuæT@Üp%›§ƒÔJ«\|ôöŒ,…ÒÐåöU±䅸,wðÊx©Aêr¯\ÁÑÓ¤‚¾C`Ó‚’ü@ûEk'3¾H—9_ìÓþ;ÆÃàýŒ="›è!wÃ8X‹D–Å÷áÏ‚wÃn¹UV—ƒõÞãaýèA˜§ž’sx\hTJyèùà‡˜*¾ðõâž°ØøšŒuþ’]Ùch ‚÷EuI0d:…>˜|€üF.hÉÓP =È[¹M´pæÛH”Qc8cñb?%û¢5ÚyÔ˜ñB®pŠ¡Sh- ÄÑÐ=ƒç¸ ¬…ùv túû3R++lwÂÕ4Ä‹@±–Ì@¯á‰Ì,’œ½éXGñšôi„º>ˆÞ´­Ú :à»t2ùƒD£E(,GÄ$ Ž—¿Í,¨$kãïE’¶¬ èr ï/WÉ hB¨ŽÚíÛP€ç³ç‹N|wáý*ÃÃÍÜh—2ÝõQžäqôv°£r^lOKÁ$¼Ãß!Ô/Ä¿È[ó‹ï/OU¥šò'Ù.Î(ϱ ס¤HVÙÔúe`ˬ':kíܵÄ|ñJVz*1J ÷y½¤¾Š–Ä5ÕT¸ˆ¢Äv³¨ýܼd­u&ZÝDuöŒý“Ù;c"J„3j-Wiu˜VK^’eÿf1ö@E%ÝÈ,ÔJFãf"Ò@umSª)®•j,v‘(ÎSŒW‘ ³•ßÎË/†ò¡nV4š¥W޵÷ô˜g­Ü.ZÞ^$©µÎ3V¨VÿÉa¨’¶žE¿”´–ZÄÉÆGÅN±9ô'®‚SHnø$&XMø#ÉèÏÓx´¨´ Y¨UQçªßÄ<û ÏÍkÊ|Ð@¼ƒ¹¢ŽCqñãÚ>rŸ'Íñ?¬Ë¢´¨b¯dœY–ÃÃ}Ð ’’^JÙÕœ*Óå"gµ,. k+$ƒ”‰2´ŽÞQÒcÊu}E¯ºßjº^.¢E8Þæ4²±~¢=‡¯à«œ¨¦¸CΓ€ýŒ¢uñ´‡TÓ«•¿)…8e:N•”# HitCìBMe/™"7ãø uèbÀõÌÆ|3ÇCò´Œq†°$û™ã­z?ºÜÓ…¦ãð6zHnÒòÒ¸Ì$Ý'´ªrA (õ”òŠª¶ÕƒÎ?öE6Ô¿öev/fÃlgçÌ¿ùðÂ4§*ëËÛ˜‰))…µ¹~¹ü3RÞ2F:yIóàƒPI1Ûlè»ñÒj"<êU×TûhdµèÄL·Åy§Š{%_‡}Õ·jea"iÅÒ,Åk&óûæSsQÄ)à„ñRü6[f¯R®*Gp5Jˆ(÷Õ¡ž]é§Ók¤W ¤Sý-‚Å3Æ&ÿe·rNQ0^ã½×ì5`áò8 rãÑd·»´k2_/å+¡68ƒ´V:à(:FÊ‹â|†ìF×C5æ¢=™âôtLüÛ™n$úûù×eÔ 6%[›Å}~W(ØsA9 nàv2–y ¹<sñuXOöªý”ÿÐg9Øþ;X“Ä£b8Ô¡+Äñ1dz•ö"érzÑ¿Pu8*78“Ùgež„Ɖ6¼—µMÆ¢Yè9›Èû‹9v›Ê³[ŸCûC[ìYò'êéôg9EO˜å„;œŽí–2gÙ@¹Uîµvð!r•ø-ÓÄTy R嶇M5.®ÑÍrI¨†´Í1æd§,C3e½œùÈiÊ,t öY™2j¦ÆÈè»Ò‡0RÙ¸:úÉŠ¶ª¢‹ð EH gqyþÁŽ§ÇØÑô$Cvµ†¡0cƒ´ãê,å‰sD^ƒ6Âç<€î2‰ïRfò›¼j‡ÈK¬•£Vg’v´¨’ oó;ö«à=»}8ø&Tú%ùu#´Œ×Di_Û°ÒÚ{Ï']ÓÒ ¢,¤Œ°_ØÙ 2„¼<†«NWº_ý­$v‰v|6¯.3øx×,í…o)ꀟ¨QLŠçâíAö’Ûx®+‹âܨ Œ‘]De)E2ì@WµMêm9Ô… ó|°}dÿÆûˆ_ÜæyDÙZÊÑ"WA]…ŠMüoʼnK{)eNõ éB”^t+y æË!YÝÏ~ò沚ÓQ4Ïx¬&9Å)-³r çÒ„RX$ü‡I•…·ü2Ç2Õ‡fH˜Å¬¿ÒwR•Ù’a °b8ÞÖ)Òä/&ÊŠô’Ò®'÷”;¤Þmgc^¹Ù®ÍCvqŸ­°ÃØ2±Ê*ÅvÓ,vŽÕá2i-Ó¦úKÞþxäìw2ÉçÎvgƒ ÷ÁKCÑ4e¾~ƒ¶ Ñ>£‰È¶\!uk¯…¶óʰ :‹ìl7Ë)³ã$’äy«ÐwQ5ÌíªBh!¥êç>¦ŽR¾¨Mè Ù¦AyNp)¼'’Kx®‰Ë¡Ò­!Mä!x„nñïf#ç¦Çk‹…¸9-B:h'\õµ‹ú%†\Fcåcñ‚e“³ñI!U΋ÈA…èx<\ÉJs«í“2 ¿$¹ñU^’ŸÂiçðe›o…§AnðÁZ®óMÁq¡µæHú?%]䮤¦õÑߤˆkžn«÷ô›¤ šÇ ZEe/+ cÕ§ÆatVG­ˆ©Z…¬A7ñ_èº —q{¼7Dëä9ÿR~ñÛ8Dv‰’²1ìådn«°,+®ŠÎö5»»1ɾeÞ·š]ÌHh‡¶©)5•ÑJaØ‚&‰;2U¶#…М€÷!â•rD}ŽÉipF.e{\9éHR])JâØO M Á#&¡h8ÅJc¿ˆ³ÙM»¦ºcÖWxx¾¸~ºÿ¡©­zhE}nÄÆ`#‡??oœ‡FÒ%úe¶w†¾K=)Cb—¬Ìëñ~¸)º¶‘¤%D[ðk<èx´¬xD»²Ðzª§ª\Ã\«h~(7ÇÚ,\Z g“q-R‹k%²nϱH?ä{µ¥ .`l - Þw¢ÕÔ»Ñô—8.=Îpk™s[.@ÿ’:Qù›Öµ½?Ôºj—É2^çÏù(R9¬.šîêæ)«5w¤tÆF/ ?Ñ€a®Òª©Íç]äuÖ=G•íÇŠw ð:ânkO1‚æñÈ䈹YâÕƒ8«h) Èvbªì ÎãÏø!ý‡ÜÐÝm Ûà¬pçV<·wì1­1_Û~ªäùÑ¡`3ùÛ™-,עÙa„Þ&e"ËY!; úZWÒ_á=îèðx×7=E¹ ŒC̺fWðžÇ¿f†Ì ÿÝ?tW »ùQù5¢Žþfê*fòqü sΙÀ¿›©ÉÍÒó8ëìg# %0Í“‰ejéªåホy*FÔ†XÒÂKqv$£ð¸Ajñhµ ïÙ7Ñ:²>N<,r’ÔÂÐu'GÄ f'ÈKË<¨0N1è8?Ž&¢’"»H•q_¹X¶„‘$›ü*~‘±òŸ´î¸MyÐUòNœÀ‡ØbÞßAQ°Æ*•Ü‹IQmâQÊo( n¬ìcgBøC™õvîòÁÄ@ŠhDæ@ÖHf xÜ<8ÌXÄ>+cž&Wñr–ƦZ%´{®žü$«~C›Å{&ëjqƱ“ü?™¨Õg𝱷¾¾Š€,UùC¹‡ ã0UrŸóÛp‡šˆñΫ“UÎ,`ÆÙýi}’²Í5€T¢ésôRf ¥*ùÈ{ó;‹¦â»Ø­¥Z%œJd†ÖâdyuF“Ü/´%*!ÈR”Ç^î´fŒ{loÐψsÒíì³G‰œ½øI±!,§Ç›ÜƒÕì-­ÿ‡:->û»†~‡;X²è#ÊH½–‰iE£ZŠâÑó¨„Ë|;#NqŹÎ×ÃzZ^%µ‡$B«L?ãc8Âù GóIü:{àÌ–L¬¦Ûù\†’Á 5ã÷žtw gÆ=Ôšm•ë…WqC¼% œDg:÷ÈttI,Q·hñt…2S™§¬'ý°ŽåQùÁùZ |¼ÒÏð†ñJK™]­N‡ft2=*¯yÊ)çñ¿îÅJI:\r(…WÁ(2Œ³D± MƒË2—F“yN’†Ëâ?È:ÒzBèWð-²2ö(¾ ]X™!kã>¨ ‡—ʦÁSldŸ¶œz¤"GÊ’ƒ¢žø#UÁÀ…µ =ÁW?¬0ŽÕSõ£¤{ʈäÆh«\ËO‹ô4š¯ÿÙ%¶¿ö7¬¥<ÁȽîíj]ý³ê§ãpq!ãQa¸€¦@j£ŽDirhÄú°!ž6Ö3ít¶´¤²Fÿfà9S a…¿S¾“ïxª Pc™.˜u ­„œˆŠ£ËÐ]íMGi–—?fûD&Êb=å‡P6±=„ »hP>ª}[ðG´¤+ÙÕZßË;B{h.·:åxMIIRÑr‹ˆµËeRãGi7:芚G[åQ{\_rç:ˆïìÄŽ\…ÞÛÑæ¶¶Ç¨àß„2è\Ô½_í­Ìtúh¶ðãº_ÿ毮¼PÓ”ÂÊj¤«3hAu«ËžÚÇèG2NYpU™+OÀ ò….&Ü]%Qº<ÖÓ…ÝŠŒUâ”éΑ‘ƒuÇkøh>MÉ€d,[(šãCœvu+Yô‘³ÌÖS+o`’]‹w¦³Ås¹™®ÄkWõ+µi5Q¬4Ä]¬Ýß¼©èDF»>¹îøvxz;NÙuÏ<…uû]É—Ý4YÓ-ñžéÛ¾Nð‰xï½ì•©idÝÌ/sŽöÆŠ…¡ »3ô2ŽÁlã®ÓJÍÝLJ¢â<Ûb> V cëEM|“%ÉÆæøÐå,-‹ ×KD&Óq$ˆ9f¥$7 wö³â2“˜J›©EIk5?G@ºÈŸ<Å(c?²Þñ4=‚’þŠâë©×R (Õù=v3e¹€æóß”_ÂY¸œ‚›Ò+>Ëm¼4ìCDÑæØÂ{PÚZQ¶Óââ€è„ºÁqÒ]'4ÝGÙsÙÈ>ƒˆ¡þl£ÕÝ9Í7³el‘©³86Ð.P.¸›ô*Ñjy­TU¸~)<>2Wdú††_*MjœZOd‚€5Á, Jk+r@äwmÑxUWwS-—+M{ªþBYÑHv‘Äã44ÙYË4žÕ~l? æ7D¤=€^WÆ©•.´¹– ŽÆø¼Gµê‘ô·Á%an„&‰¦¢ÌYÃiø„Šˆ[²ªÌ/öÈåÖ&1D ^‹Ñ܇ô@ýñ %ƒþVx W{÷qOQýãÞ­-V9®F†ÀyyQnv¼µWw# Æ(á¬\á䃧r¯qŽtÃcÑ35œfS«‘h,þÌ~É»¬5b\·öÛXaaDZ)ÓÝM½‡h~ú–CEeeyV+†ËæÇ^Ýa©Ü$+ȧIð4WÔ”/`‡ÈTù4/"èXÏý¬Ohqä—è¤ÌSêÊ¿ðêÅùpÆÅa+FÜ¿ø/ÚK­µÚ}8²h¦'z>å-ýƒÞ°sYøfÞI†wvg[k”òçñ3áçy7OO¿ˆ5žÏN}¬ûª7—Ë Q¸Ê&°)v¦Àbfj»µ•Z.u½VÄõQ§mR‡ÜÆ;èCõVXumPdÖl5¯¯§÷•nùý«Ce‚Ëò¡dsˆÿ”'Ø,s³œ(wÚ9ØLçiZñŒ6é™­†Î£&\ ©Úeö‡x«ÔC'Ð×-ÏqÏD÷~¯;ì„RRã’=æ1ÆÕîvá/ôDw×B2÷ÂeÐiYjòê]QjqWP½â~âžµ%|}˜â>^C¥ IDAT~Ü®ŽnV 8dw·{€ *«!—pç ë@-ÅE[«ÓÔ¹úxœQä£2ZI²Ó%JH!ÉtlÖGi+Ôsh™â CM *ˆg@cg!Y†›:#ÑgujXE§ ¨×•¤¨~žÚt™Ò —ó¼ñìñLÖz=÷WkŽÓ9ô¬ç³çÞ­<Á«ñ8È.çÊxö€}çëff̃ÿ•‡äeYYX"ÍyŸ:#p>ôÓÊj5´–Â"¸ˆþ‡Þ¡—(ƒlyåy%Bf5Ré5çrú\ë¡™ÍBÖr#ÊÎÁÿN•YÙ£7&¤¢,Œ[Áßì"ÉM´-F•d[Ùšô[Jȋβ<²„‹M¸ '6 zø§È§ÑV´ª£g2rʦ€á lƒƒ…³Ë"U”Í¡2à6ÊEm~Xf%ÐBøŠ âpœ$‰í"]£Ä-j£Ò%›¡¹à·ËÂÁÞ¡Lwfñ?íîN>×YðB:]iæê…¼ƒT…¾Š}` Z‚F¢®$Í‘a°´ ¨Å'X…dYqÃ~(²³X»?.Ʋü(º¢4ê&Øk÷o\9,Õ³NYæÖôõô¶X`ׯ‚Üß<”àÄØG¾¬šœF¯‚Ž×¨«ðxBÐ[³£3ܨíŽò½XØŸ> æ Wòz^¹7+Å ¯h%®†¶ÌL¢v¹*zZ¸î‡u²3)T"™±ëü ÝðZ(ËîÊq(ަ¨ã(ÅáçšMoѵ¸*ÕðÜgíÑ=)­uâO;ÑvTë4RtP¾ëT=€SÈe#ž(È‚´5•Þrôƒh¨…^9ôÖz u…v›ÀñÐ͉Aãš]Ë>lqÂC[­Ll5Yj=á¥ÕÂì«ÀJá P‘—P†Ò±h0ÉBÒè`hƒÓfò»¤"þ†â4  â²6¾„H?ñ¡Ê¢3â5è5¾YL %E-h‰Kut¥+§>A»î9…Ñ;vÀYJ†0ã¶ýÎÀÁËì½Y'P+ôŠ¢jä:Ío m ~N+÷5üCÍÀ­À Ì•ò#Š·P3à‰Øž­LöléK~GþþÃÉ;òŸa– `'ÙUó©k€kŸÖÌAת éƒ&°8y·tîÛ­øS¶z\h˜t‹ÆV’SŒ²j %¨ºå÷-uûÂs㺤1©CîÂ]qQ>9Ä!ˆ…×ä ü „>âÉz±¾†Ÿr,JÆSðu\C«CòÉIÊP:˜|“÷ :$Ÿ å<œO_FªýÌ(ât¶Ú%áƒÌŒK¸nÑ+ÂÂÎÚÍ”át vZ´£ñlx!ÖÁk\]±Á”¤ì‰ø¶ºÎuÍ» ëä>`{Ea8ššèM‹‡iוt2Ú§Ð3’Ç¡¡ÜËkˆ ÁU¨lQ;Š‘(Ý¡ (_• ¸»ûÞàr´ŠøGÑÈX´ÚÊ)£Ð³X$'Aª*&¡ "’¯pz£‰¢\(ŠÛÈ!g8œSú™ŒÉ¶¡}"ãÕ $‚|¥aÜ´sØãíÆ…Œ'íÞÅáWP:FÂW+ë¶=ÜLƒl>¿J.ÂÿäŸÊWQ­%¼Å“i¼>Á)æ;þËù C=?¬G"ÃõNýÉ>…ÂÒפ7I~’v'àå.~Û¹>õhxŒ§˜óìC<¡[¡0§iÊ­_W“Ê©ÍÕ¯z)­mØŠ°Ï°Ð ç¶ÝŽ¥:ºsŸ‰ÐÜàéP {ÃÎGƒÝ-=¿¸þÔ‹áÖl‘YVbØ.ŠÉVr",ÊUÁ“Ð}R€Ýb4Cûè­ænO“¨N󓢕ÐìÖ?¤3K±ëÊ“êoßc¹Zù ke§à>#rÈshIñ„iõ\PUTÀ¹#º³l¯´=Úßd >Ej( Ãg@k”â”Ìx«ÌGâ…ò”œkÑŠˆ/.c” h‡šŸÔz:‚ã‚åÍlhÚï7䎞/ú)\9yøOÌMÑO¨ÀÇ¢²0CR•H4›•ãqb›¬"‹;³eš!kóÒá£xëÉ$<ÅË‹¸=ª"vñìpË^j6NIgß3ñâl@Ä'O§°ß±-ìÅò¦V;Ô35wz wóÙ¸ˆRŸ—«Ð5ÜEZ……­pT΂;u€Uè‰ç¦ˆ” b¨ ,PnzPSü"ª† c:‚>*ANES`€ºÂÙU€“r9ê )À°‰>¡¶pJÆKê¤â=¸¡°AÞ‡«è'dGãD¸‚;‰x%Ž‘Ú¨;êÏ žÃaƒü) ÊüÊ4ùžŸG€Jó’WÊ3|GÌ™0í‘D"-AÚ ª¤ì#þD¨ŽÎòí¼XÊ«[?!m™Bæ¹zé‘×}ÙÝ­”hu"hh­È/'Z±v1Û¼oöt~ÉxùDëèºã1²>¼ölQ»ªÙ.BÈB0ÐL唬ˆËÉTêÝq2ŠËX»§³ÂfÂÁÖ{‹³û–‘%wöýQy3ýÌ>ÃL -úx#¥á÷y?W!o[u š)ª§—òíˆHðm!=gLrr²xa²0û¸óIáI¢(*ÀX". ¦(=“—C£Ô Ð~§3úI|@õ!Ž\Ekpux£Fk·´f_{«±ßþi¯à‡!L¾FyùFÞ™™v[&P_¶eö%£èfÒq9™C é¬0É¿«›½ÿ¨™hqÞȳ.PréÛ€9` ,+3Žý cѺ âíØÔuÜ–¡ >Œ[ à/ä (g÷E}u5þ†O%J²þˆ Ë ]•iV7í¼’.C¢¡hªŸÔÚéýœ§öG;¿vÚù_³RVu%VTfëqêïá¨FžÅ®#ô?T½Ã9Ó–šŒ±,hmè‚58øwò#Ö­µÆÈ¤j(Fù꾯 +¶Jܸ݀&}EšàÊ+8Ï¡¿#ʰN’ ö²6¬ÇUq?þ‡D¢ª £ÄÙ6ËUòŒÜ€wÀkpÉòj}DkQ 2ƒ¾ !tÞ[ê‰û0 2Só ÙÊÙ-UЇ6R»•Ë,dõ·þXñ›þîùíqðkÚÓŒÚö{»›¾QšS})Ú|/ìø¼ôrY3Üô±êo§«]ÖÎìÄ8éV6Íïjå;÷) ; Ä¼2*—ÄyaØv„q:ð²ÎG?/óÐFlÒw8ˆï8—ÔzžÜZ4.óå-è#œy( ¤ˆüxšŒËᜠÚñâp¦Šb"mûEy†&ဨÃ{Ã]ž &ã¼Ôïd,["r³vsˆqÒxèœ>Ä*ˆW)¯µË<ÉåÓ,: 7PJ*}è{\LL"ùä&8-ãä0ë¹1Úl,ìDÜB¯•Ê"rZ1ä$q‰EYŸãTwv²Ì¤h0“Ð@™"'ãìôõ«ÖŸ–”…E12JÉGpQö‡¡¼¢<¿ˆÓ"«ÙßnnÞp&¢îÊq™Ý™ÊÚ±®pLf·OûcB›ðãŒQ¡1â’1˪j>Ã9Då´YóŠ}U–@t=P>´+e‚>–Ù̽öcQœýàMà<¡âí¸;zÌãñ{Ж۵Å$|Ëõ¦¢?•>¤(ÛBÇ(¶V,tÉ1MªÈtÕ'ÝÐ~RI«î®Š¶Ê±4"<âœt®+œ½êRõch¢òÿëp8/¼r6ôçœw°Wd°/P_ïAWËbd€ÕÆÅrC.ñÇJ…þ• *š'f²r¨ ª‰ªËnpÓéÊOÙ æeèÀnñ¶Ûqñü¨šÝdd§†Vʾƒ÷©gqaÜA–ÇÝdahŒOór?ú*ãb°^3'àÙï‘ïP,ƒÿÁí…yX#n ‰ŸÈ-ì©<ƒú¨/å3ñ*ÍÑGy5‡žrš¬‡P2ú%qW˜ ÑNa8€~ʲè:Ê‚rÃ!1˜7!%Ñz™"›ò~òªü^ó{è*dç6® ÿ©èƒ«Ä«Wè|‘ÈW öv[v*´ʈéž2]\U\òš“x$;çä~)€2N…ñü'¸4Åwqgb©÷„~óOòž<+{‹bdR^*µ´×öØàÌìö½Ä´.¿ò—gª÷©RŸVS„›»­1¼”½ÝUúj~Ïç§ÓB£¾U7é ÐÍYª*’,Ÿ½Oc¨†UÚÿ‚÷#x"Œ›Å þŠ)í•Tµî¤×¼â˜\ÏÞZ'¬«æ>«œ±#TFÌ¢Ãè1]Ç’þ©¸ñ¥¬6Yï ËP´~’Ö¥^ý$h"àܵ3쌯 ç ›.â! ar(%:‹Ñä\£±¬&?&²³â7ÏP[¥¬ZˆêJq¼ÁŽç©à?Ù0»›¨‡M¨ƒg“p)x‘"zX}e$ÇQRU=I¢È ‹¼<;$ò]›·TŽ›2Þ[í­z|ÿ;sÛܧŠäKý”ü0yÔ¯Fß®‡-pe§UÑO\íC¹ÐÌäV¼PÚ2Í€ý0XnÀ÷Q#Ú¥HEzÐ+yÖy‚Û¦ üC¾’þâ›#ú’F¹|y(Oe{”¡¶³m]¬D@C(5äTnãþ)6¡4ìÈf²·¨‡Þà QŒÏ•=¹å4E·ƒxÙÎÁqè-×áv²KG¡ÛR“öSB2H,*áâ™èŒbø k˜´I”ú§€.hI²Ž,üb¢¬GV9GœrT3¸‹ì’=̼jf­Î"cÔXõ;ͶËÿ¥– ìFË ‹ÈMöáž§ýÐxo4Ç3Ý»À{G«m¿f³Bñ¬€éÏxdv ­µº-_]"O”_¨‡VHÙëŠRök\qbÝ(äJ9æòKØ‹­Û¸/ÓÁ¯îM[žvë{7QØ8l`{•õ/û Ä«iP‡ wÍsï$›”‡´2š#QüߣQZŒÖ !uöÂsU¤ ËÛ1˜l•°¢~5Lk–6 wÖ˜~òœ ×%O Ïë¨ ¢{f-©ä€ì¼“ì‡^ó«fC'Öh¿`ûØ>÷å/ñn”[Ý©17ó4TžñCb‰Àßh¬öM ß¼…µd+i¯ÜÀ÷è"ù|i È¬âŠtíõö'Œ·ÊŠ“8‘6CP"ªJƒ"«xn'æÑõt­ªÈ¨–ÒÅé4$y9‚7á8ûe Q™÷”Ÿø*HÁP.~™§±6l$¿Ã³’$^‰¤à…¾Xw}à“…£œ’ùá™væÁ|™Ï&œu´]I³’?•oZ/OR]ŸY=1„ß…«¼ºjEñh×:mEØ9õ‡³Ñ*$“¼ÜÄÇfòIö!þVö@—aš…ÆÒû2YF+q®J:‹år½CÙ0¡° ¼½,%k’©ò°\ņYùCú3^\_­ô¾ÖèÕ¼l½Äžã t¶f4@šü“ûHçþMKW.ÁŸA ²×,,{yFáEZVw²k\DUÏܰ:aytùFé©”ÑsjûU·ö^ à_®dáWh^!„èÏÚaÖ,#:èó·HKý•nÔÍxèn¿·ü( ÔÒÜZï°.™"³µÂÜ;."&ÌtÅETQÒþ£ýa¨—Œcmdù´ÄÐXT(Ìex¡ 7¯+¢à®ó\<Åe” ê^C»£vÑ3™³Í̪éGE‚_ f¯v–ŠÏ°¥Kii×9ÏDï ÏVO_× ÷ ZC©¢ @­É\R­LüPNQ(ßdcÙ‘·Lñ¥ÏúÙ%Ãí¯,¨œÕ«ëÜÿºæèˬƉЧ@«Ô i_Œ¥æþq¨ "9šÛñ¿öãd¨,½«&èIžz×0ñN<€×<ëö£vZËô¾öêÐS /Ja­€†²É'öi{‚¹Ýn¬Øb_µf³ Œ‰st˜’î¹Ë;Éœj"©Ožk `µ¸mí@_á-ïgMuV€=Rn„×S—ºrx§Ð¥®âžÂ¢(<—å*ë <æg„ÝY¿àIõ$ëO=Ì=Ç©•SÓñQ—~u3«üVF“Ð+«¨YÕÙ!J±(¼‡œÿIŸ˜d5té\´"ጃ,¨–xÈÿ$Mà§ŒtÕÃçpA{=­çÿ¸¾…_ó4¤éúÔib5ÉÈ-ΰæÖFÔˆVRŸÒyz®°D³qIÙSœ–‹|~×0ïuw9õ%:zf´O=gtêX«Ä9V%†A§LRþDÙPN^Iô1ÿ Uô_û•ÕêlX—¾)øÑ²lO‹¡»ý >b>¤rŸq%Ÿ‡~]QS¡²#ŽcM0:§ LÎ)î³hqZä–1&Gi-ø†ßIŸÌûYˆ^qÞÉ.4 ?C?Í_ÈdŒ¼%rá_"‡ÌªŒàðqÏfý€–ˆ…:ØwC½!Se-2­ã?Qº8À‹Ãm<ä…xº,Á)hb ë"ÚÂ4ñtâÍÝÊfÙϺN†a¯ÝFTq¦Ûy‚m“k¥.&ô›0¸ÀÅ"òA×ð'5˜žõWž¤z¤”|í8°:Нð}Ap#²Jy Íy¼œ…Ë.²ÚÏa¼'ðN£Ë ³È";I—#]DÙPUl¢}h'ô}Ð[у«äÊ åð¿¨0š#ãö轜6Èü<Ä£.ÜÉò!¯“ ¯ÀËQ3Ùå£{E TP-‡ã¸†ÌÕ»,–ç#Eñ äà·(ý‚¢rd‡h‘ ©tñœi=sú˜9‚íÁ¬°o¯cñ¬š¼;­VÎt;“18PËßÑðó™¿ex‡o«í”\ôlfïìt -?ûxE”y¬’rý/íë™7—2^dT ]&IzWi¤¢±˜9oÍìˆ8{CKÍlh8ì·½ÚNooï0å¬k—æSÊ }Îw)×$å9iG/bS9@ñXw˜kãA¶š2dø­)Ö@{½-ÙUg‘¨ˆ/Q_X«ð/Q-ù|¨,J%íüjêÊ”ÍþÛýR»!óH1|OÒ?È·ü—xŨÙ-=“p·s€†I¤ÒŒÐvÒ}¤†.åMqÚÉûâ<ïn½ Ž&˜ÍIñøò°¼ò<Üg*¶Qcz6Àç„Ë$¨‡SÄi¢£¿äV²M6ç=ùX'È_°5bÞ¯63ÄLØ ªÌ./ãÑhµ<¢½…ÅT’«(7i#âÙ¿â~0ñ?£½`FÂZÆm7Oç/Y.+AÌ øôŽdASù\L­À–:_ðSû•õYNä3…n÷ÕººËè[õJán×Ö¨a§m-[7®eÛæÂ­›mÛ-Û¸7›Ë6þl-,nm Ÿ^žsþçñ„¶vì _ŸgfŽÎYÊêðŠ¡+ÃJ:ö9„êw…¹¢%“~äMÌv£›·3Í7£Üßä÷ ”eÁ pH8A!ôýÅ0Ð’u…ð]šŸŽSCqOXTñw ¤eî \×nO˜oCV{³¥ËÆŠ‘ø›¸ñÌõÈu%ĺÛsQjL)7Q w°Ü0 xð(<ÏŠÛ­Át¾Û7ÆHÕ?“ïA—q+…J]Õ|ž­VZp­ö_`PfùlÁš›ÝàjÒ\®ʲìhûc¦gu‘ÒäfÊw´ Ç£šþɾ¹þãtÐô÷Ö÷éåXV ^EŸqWåù­$Èip£¹38(ûœ†ü§õr¬0°'Ñ?¸²ZÕîo [ î;ê¨ó]WÕTõ±cê¯Ë_:&{ÆÈ·%ÜGð+°&ÐZðÐ8QÝ:B‹àO­¦i‰®«n·³¢êWwÉ¥HÚ·1ÛÚ{ÍÞß3F3ô­f pJß& Ç ìþ€OZ.pF*SÄøÞùÜÚ®GkåÐy ‹²h«<ͽX †-ò¸¤Õj’õY ÈKŤz´¸› ß‚[}Ðù<¤YxSG5w‘ÐBô¨ÓáñØMø ­˜Ö>³C·Ç[õAÌf£ƒ½Í¢,Ùþ¨­ÖËèãI˜vÀ¹Ä £jº_FÔ _íœæÁꣾv-û+›ÆÚÂ<ÆFÛeV Î |L¯¦$z7YOíxðÃ΄•‹ÜgÆêíú_þÞü¹ÙÒ\ Ë£ƒ$]%G8ŠÀúâ‚xk7¶þÒòê‹Ùº&¸Çìæ‰r¨Ÿ4XÜÀ¥äÜ ²xLOŠí|¹nU¸G„F»‹Á‹jEÖKwåöà hGç‹¥ü&3IGX íäÁè{à\9XQô†oâkŒ’âáÔ‚(‹•1VËkD)>%PØ×Oñ¹|‹ý…ðð[ËgXF•ÀÛgfò²z„·¦ïèÍWX?Á&x|+àC‘ ÒxOžƒÝHcdóí|#l ·²É°Z,þS$±(žÏÆ#ÁY0S!’A<ÎÄ:8ŒÌo5ð4dÂÉŒ‚ob,¨ÂP;0‰©`•˜Ç=x7ZŠ[‰àj:Š>p.ðÀXàƒ`8çh´(Èß‚ÙbØÊG³+Ø‹šã›$œ•CYŒ8î‚$ë5×áËÙ$&ƒÚà[ÇS T6¡ù’O¾J hîÖëãQ QEŸ@eôˆquw%“xÇe#Y«Ì–_È÷¤2“BÍçæ³ŸQ&¸ÚüÌn°(q  IDATÍb?ËÃZsù6PÚ7S/çMñÎ ÖõOò¶c¬9ü‰ôŽèÔÉÚꕵh#30ÞãÙ}c•Í?ØÇ¬Bá#Íÿ—è sñÚ°”(þ'¢hØ Å«@9q]+ §Ð?úhÇMWŒó®{›\GŽ-øs+A¯nºÍ;öRÞ‡WaKù+mçx7щ·W™¿­aÁÝf²õÇXÍfócð©]Rü„Gx!QD¢Á¨Ô™,–X—n£Mh!úL¦“rEÔD9§ö'¡Žúêð w’ŠA?üF{! Àx<ƒèt=Ÿ ¡q\7˜!vÀË “UdñFƇ¬ŽYï}@~£s†W[¨%óy{–wnð•q…°ëë;~38>ø#ë™?•æÀ~¸]ä{A”µ€µ«„_D6z/â0•U²×ãfp_(ÅÑ÷¨&xó-Œ*‚gø.œ {‚p  oè Î> Mì3ª*ˆ¼`:xŒŸòÀIÜ $j   ìŽF Eä  Ñpá ñWá'`U˜½ÄÕ@@ÑG¼ ¸ C£D»| ˜Ÿ7déæ1Ü“¬@£íj`.<ËË£Ò¨”¸ &pb/a¯Y)jËí&Ÿ¥%° ôòp¤x,77v¢#']&üêsÂá©b;ûh.3Ÿé q*þ[î¢í×Û3ÙÊ´óá{t‰ ¥Ò™$ó+x¯˜`ïÔòe̪°®éx@KN']D•ñó…±ÃØRIkåepsp¥¨X—9_ãûš–ÒMÛt&˜.3F‘Mj´T ?Ä)Ò9 î—ޏ~8šÐø—Òž R­JVcrJΤñê{ù—h‰s!ì!öIXг¥ºD9åœ WÒ•o0T”‡gì6æk3ÛöX©ö1s¤µU¸ø5>WLÆGq!õ R)$-rYÝ5Iº'}5þèqZ!ÿCèâNV Oø_ì.*–Û³ùw1Ÿ%ðúì ,.ƉbR%ÔL<‘*âqâQŒ•Wt±! ߭ΰ J Ë°ŽÝR(°®ùÜJûÅLÞÿÇRxažÏ|ÍïóeÖ.ÂßxÁRôÎ õq\J΋›à#êExsî¿ßGucà 6NtÇEq[t#¹àV `x€¯äùÙÖÅŠ3Yûa« dm¤âøî c¥ï4ï¶>°o6áÙ:F»ÎçX‹r8ƇiÊd¥ í&ÞêøN€ŸÚ$m/| t;7¿wñ×Ö¶×øe~3‰4ˆÏÑ|`“Ø„5ŒE¢‘3ðxšKª@ž£’‡_°Óëæ °ÌÚ †¡‘¢¥Ød\ãÐhÉÞŠ=RsížÝçË4Ós¦Í€&¸Ç6åÍU#djøV÷ù$Þ$‡ŸØJ{"k¢ ÔÖYï‡íhÃm=µ{ƒ¶¾Züiü)áÏ0âdý^Ž‹£K%…\vý§ÔϪž™ýéhg*u¤ÇêmOw˜üE éSCWz¢#¿˜ùRqÛ×Ñ¿&kµv<aŒG»IYRÜÄOñou¾R^Ís&¼±«ZŠº"øcd¢Þ¨^ìü™ýÀwìOOXK„×I=QE9©IUäÖJvUûÍ‹ „;GŒNËwY<ä Íœ ‘ýíwïvžÂ¯æ'`MÊÑŒ™O²kz3­6`*-­ §þ/ÆñH½jM3b-à°•µ}<'¸mÞ±ŠPœAÓöþBç* ƒø{æ†{‚ûµkÆv\O>&G;—zΆ„z¤_r¼£ôM~ÍÞ ¯R§à«Î«¤º¹’ÁK’…àfÊ}õ?9Y(S±Iô'Y;û=8…Òð.cMù{­YÛßZKIòýö³ôøèÿ¥=ÎÌ6%­‘÷ ±²b5C¬CQðhG~‚‹b…;Ðxxî4¯‹h:gËàß°'èZb_{ai<Ô·“H@-7Yò€«`<ø!JˆD±‘ݶݢ ËàßáDšjß9`-RXRHÌ^³%ü3_C¶*zb/j»á –ÀÃ@.ˆA `mDÄ ¡ˆ1à6¨+ºâdÜ@Œ£ùH°/…ùØX” ~³pVŽÅÃû³Ãì\°<ýEwñ4’„ƒë¨,©Î^YˬM8E´ìÛ¢}ïu#—FS\åèŒYKçGœW‡±:Ù_I æÕ˜M­óæ`3ɪ[ ÇIÛÌrÖz0fÝt´tþŸÒ‹è¼ÙQ4A.åõ‰Žä=JCÛÝýà~«¶ ü¶GÚý[†Cä4l• 7îdü-@7!‚X%ÐÔÚ„/‚fËÐ@”?*Q­º$j¦ÇéNqS±ÍÚŸM86K…H¶P[‹fâ¯zçßRçN5?Eê«§±YwϘU´&b‘_‰Oà+ªçƒè›\Hr)ý/„“wdg3{ûoëÓôòæiqÈüèÿg@ÖÍÀlüÆ]èhw#wË숴…å#¤”ÌÂEqºXúKZèaü6§d¾…CÍÙ©ä—ô©_‹Îx±Üîë ¢D·²­:ëÆ7û¢È&CH-`;¾¸ÖGdžõ‰¼ãØà¾¯"ÿ²ðÛ¹âŠMZðºÜçªÙ»~åJÞÜb²ýÄ Ó]Ùiú«'Kb›í2n!ÍÀÃ]g•fr˜c’S„þ‡GyšF9Xè +!Åý.+¸=p#H²jx‹ÿ÷@Oý_³ŸvÅ»’zÈRGªC ùÒÁ3?,Ó³7dº¼Ÿ Ïÿ¦]÷îð¥ÜÁªÆF*ý—ʨC¡¢ô”¨irn\QíóŠÖ÷Vu‡»~Oዬ€ØÈÝÁ3Áh«øï÷3Njýª¯œèÿBGä’Î^!ÿ¡«Ô Ÿ¤Çè<ŸäúIÉrº§’ û³hràøËÍ¬Š‘`š86ã&¤$rÒgt¦ø‰z 7éd}0…Øiì²sjжA«üæûÜb¹-Ó:hÝ¢Yd"l ¿”׫Õår!³ÕÖCó;O±ß° ò$çÏ>G—2Ñ€ÁkÞƒb„«mƒóDi1BŸbÿÅÏ›e¬ìHµ[6(ÊN[{ì> ¯¶¶³,‘$ß§ uƒëqe žƒ3ÒZ+Ý üâ+…j–ä³ÑðMÚ%ÏR[à_¨ aÆ¡ab1ù‚‹’ž‹Ê ¤c¨!¿ o°»6EÓ@˜]‚oIp¯î³qÞÔžfþ²v€›xkÊÏ£Æ|¢½Ç¸Koª¥å!õCþx’¥i±’ =ð…YW.IJšÁ±™w +°<+ž¥‚›Òlè!›èZ«$bÌRì^¨¾y98ÛW\2[èOIMq00Í5Ì174¯œæh«VSú;f’Ã´Š´|"·Q) ž ]h.R\%D ðŽm ŽÒØí²ÆÿngÞÒûúS¥Î$–æ/9÷†Œ·«°Ÿ°€Ò_£Nsp¿‘×IM”‘³äwÔ@©ø£ò¥»×’Ll©yÑ%˜Š‘ñÚ,¨Åú †û¶+’L7*ˆ3rKå€Ôô Ÿi-Ǻىö&}–V“×¶ËØ5x¶ØšÎæY¾€%o§]à|òPÙEWzã´ê¢l€{ïùÁjb3sIÕÕ?裧ž–£H!±ú´UÚ¬¯À‚)VWT趈,‡í&ñlµ=Ëì…ïát¡Àhóár])EíáYîn¦&ËGpª’EÜä;µÐŒÅXV›ùÄMáíÁ”ÕÃpY£¥þÒSZLq+Ù ð]øù6R7“ŠÖo±Ú칉ؙì[þׯUÿšà#pɬã½øâÕý?ý õ¶|o‹6“è;˜ÇhøV@wñ@±„£ÚbˆHCí!¬ È[Ð`¯ø†*ï| O‚OÐ6° Yð¥ø`áŸ`7ÞXôîéÐâcà}؉MÍ`I1^ÆÝ0.ƒßÁÍ0|ipŸ8Ê›‚öx0Ï!Ö‚2ÀŽàƒ(Ímضå»ánñتóÃN %jAlËàÚ †Ãd¥7?.Ñp,j ßC »Ú‡á(°^D«ÁQ°Wà½X?eø?Œ¾’… ›&É—”Ƥ n$~:†âyæ5gUXÆöòDû¼IÍvAž›Mip-üC?!"ô´÷¢ãø–=QÝ*7"AçZ¹ƒ´FJUÈHSºÅWÁånRq¤¡¿èZÖG#äÓø<¼á ögmr •tRËâœè„ç|È1ï$-°•w……2Ç¡ˆ¼ç"ë)ÔjR$Ÿiç1o“ä™!>øtòïvQÐÜÑuø“çížvoVÀLµo‰¼x7ù#'KNJ©“Ãi7x >I!_¤´ýƒö‘]dLE]Hy\ÙuÈñ‚~ »”—„ëm =ð¥ÓâJgUÇQõºc5mG;;Òaògù§2R<¡ÚÌë?(bÅ¢ë"Å ì÷Œ˜:kÃЃ4vy„låa î…Éû¥æ®Òt•¼Yn‹§ ¡æŒÖWz!-"ÉrØ&ÓéêÐÑóŽ/•†OÒCrk\ gV}Ǻëÿãui|”"Í”jôÝŒ¨­]1ŽR]ç…:³ÔŽwêAÜU:…R+Š“¨É£7æ1`šŠæÁòš¤ä¢™(Žî!a”8#ÏÇ—øwr‰¼‰BßàÜ( ^I+)ÒoÅnÇHcŸÜk/àÅØuº˜öwí‘Ò¦ô .ˆ8ÓD¸Á‹ë•µÁÜ)lI?“Y,;‘Ž"½ w„å -@’Di’x šÁ|Ö-¶ËVŒ†ÖlûzÖZßéôáö>»U¨ŽážRý¬wÜÇë9¯°lØÇ‰ž²Z.íd°•ž“Í ’ÒY‡ÙwaÛ‹`Qç"°ƒµªÌ•·ÒUµ«TJî§<,aEà€TUT¶:h̬-Ã;¢%«(¯ÆYÒ„þÎ1Ž;ä†x }È-RÍ‚vOûªüJäÆÅHéÞ¡cb9ïÉz€ ’=“ÿ}Á0Ø6E¤¦ÊFitØe3ÕÓ:fÌÍl3• y óÑ‚¨ «Lüâ(¨3@kŒŸASúOÿ\“Ùɳ*æ¨|C †lж@»è]—ùOjÈÕ9 ·C­ƒQ¼6$‹c£ªr#¢mh×–rÔ“ËìoQTŒ’VilYtB ¬Öý}ö®Ô Æ‚Àà ÞÈÚ÷g©œ¥r±IÏkzôÍ!EX1µ|`¤q˸ÞßQ“A>˜%Ì(r7³|zšoyÒÈÌ~è[œžÚU¯¥m—£®;Þ¹‘œ$aeQŒ­`¦ÿiv#ã}Ƈ칾R‰Æ½¤R¨„Ý9ár iIÎNô®” Ó 1WZ Þ6—C•07‹fŸ Ö1¾øÖ¥'ŠùPètùŸ¹ž³9ºº§8—*á<~>³'Â|vWð/…À$Uá¿Ð6i©±¼÷5² ²ÊÆECŠ“¢=‹]ð4i (éX2Õ±Û–Ør0ÆXè­žùÄȳ@w÷Pçb5íĨûà´ òÁ{¬PpŽÖ'h[8XWë„s(±¨0êÌ:kk|;k¯´^“4PTWÛ…“S”´ò{öTà]"’# œð{’¿‘¯;g‡²4½¼÷’î5N¾f_'õPcq7´UÎe¹fø3'¤¶Dú [AGÊ8°¶“j±%În¾LØtŠìe/O”LßZßPk ïÈmÆY1vuå÷À<w—[eÁ`ð …ø·e×ÒãSóföÏ êôEú~×%÷×ߪn¶5¯ˆ¼ê,µ’«èl§"FM_ͬ9¼u’ib¼”Û]>D/å°\æf±D”ã›­&Fû:;kN0s±¦î<|:’$±Âšà2äTWBøþ0"÷ëý¼É¶­½Ç¥A p½e«ÌVÙ4û-jkÈ.QÓ¾Hú³Xö?ØTµ”v<Â:E†‘§òk\ÍÄ×@wØFÙÇÅ:»¬²EºGîÙ½Ù s«ã¢§dHY× %¿3ö˧‡µ†ú>±Å_ì¡>ÉÆ÷‚E@a»L°$Î+GÄeô^:à/jzƒØt¾|.áåáCXI~gßáky»Çº˜}ùÏ£W$-ÆQ ïæè«|U./ÛlÑ|¦¹Ž­² ±_Ò*˜`õ–6Ky/²gýà"i„ã\DO)×¹l]óê?ƒ“47[©='ï¬y"Û>]€õ4²ÿVj)ÂýÄÙKaÎ5îÉîx~‰ù¬û¬à#ó±ÈËÀÉMœ–¨gÛhi›ýȾim†Ý…"2¬µöPŸ]‡D·¬¨±ì“(Gê]Ù!cýÍNðöfN³¹Ýß±v±o‹¢öQ¹i;´‘/@Eä½ðš8ÖS½VÖ{:DéFâ ÊŠâ ÀÊ´©„·›i¨³ÛˆNðkp…žJË9Šep“X…öd]ɈÊh zëi™ÖV«±^ÑyÞóÕÕ!¤hÈ"¤éM«kËüí2w{YðTö:ý€5@Ôcï@uœ.Uv†©*ŽVþ€*d £˜ÆÀ˜Ì>¾Y9aKXL( ×@G»Zí½ž®2šJ§\ÑW•N¤4F»ÄK+/øÌ›™ïõð`F ŒiÍ×*‘º„<€P^|EíòTØ8I NXycšÌvh§gœ[͸îp1ëoqD¸¦*çÈT¥¸úBK7òhû}áþk>óÏ¡Ÿñò¿Ž=a Ø y”K¢ _&œ0A„ÀµpŸ¨ š?¼Ÿ}«ÍDñ. vHKùQ”Õ6nÿš÷,Œ%ÚÍs6T–}¡»B*ÀJ¤ú80á× nY; ¿¹ÛÎçšµuÉ ‚õ¦µ˜ý'ÆkÍ,§-¾€eh_ bùf´ ÕE ÕCëñZy¨"Ûq¶£¦¢ËIÊ#ù#™âû+ûCö À-:X˜¢sqÙ!WEƒå|´™ ‘( Zò¦¢7@×ãüÄ+bDy{P`Dð–ù,°ÍÛØ·ËV¶ÝÏêà‡`8؀ΑYä§Ø„€‚XÐJ°];–aþc×ïâ‡ÈÁW‘rÈ­‘VIë'ÜÆ»ðyò{²”b­í%ü,ÓøŽ¥ôwfIk[ ûÂi ¼QÙªÆV™¶Œ}±J‚kWÎHRÿ¤CÐsÐÝXJê’ªb™o~Õ2yȰÈàƒÐ1>›Ùf1Pƒ3=,/úâ"'ï‰*‚Õ¢¨ŠsBq^œÏ2k~û@°˜ù?Ëdo#ïÃåà­,`æ·Üð(œû`¿¼œîÀ©þÃ3XS.ì¸_äN´*°„µÐœ¦Íþû}Èši¤?I‰ Äd¯L/â­™µW+ÄÎs¿#=u¼’ÿÂáðû4Ÿ"òÀ0XM$ó‰û“£Ü—A-h˜Ú ,à9D=VUXÌ ]hH’kI5I=¶ Ü%ß•þä'Õ–¾’ñŽïd·äTj‹yJg9“èü=…ˉ>ðŽì¼J̾v;sJ@×ÄB~œ÷aùðÚõ»À>>Tga0¶ ‰ü#*‚’â¾XŽŠzÆ_ð>ª'V£§d+–³Â+Ã! ?ì «ò¡ü£í™¤4®"™¢­8_€2x"ÌoÁxô¬ EPLàðNâ#YëÌòÂ9°ÿâÙuÍFoÄYò7ÛfSPL*I'à {’Èc ü Ö½Ñ`ø„€ï “˜ößLÿn%jÂb¼ à<Ì™5"£pæjØ@k-rüž‘]?{°VR_ª×$åÁB˜`G²NàJ…ýì òü™lPÆIÕ@%QŠ_` Ö>œÔ›èÜÊFAX÷ÖÞXWƒyôÁfg+,Æ“iÁÐÎ.r2*®³cüjHŽZ}Ä^Q…²³­ $ Bú¬ Sa*»ËSsì1Z:¼ îðåZ#”b¥ì ÈBÑê7Õ .£&,Ͷí®F}XGªrÒФé »I%œN°z -?Ðp¶Ø˜C¬ÏÖpQÃDv_û•ݧ9… 0¦ãY"œÝ33`_ÿEý”¾ÓöŠ(æbyÍç¦ â-„"p¼úz‰‚šC›‚ptÙV+:]ÀoD(»%úòN¬³˜M¡vŸƒ²˜ˆ3Pa˜ŽáXÌ#ùx³2¿*l[0Ìn-Ú£\v’uÒjŸžLj£{tƒ;Ãa+OÁPnó¹ìm¦å6 xÛ{:ƒùJE·*X»TnÄf¥¢Rß$çåÝ̳€8 6* ã°>ƒ÷ƒ?ñò€¯²«Ã@qÄ€áð!îgð{-Šâ&Ì!&‚|«(Š £ h¯3[NÙì"ök‚«¿ãÍ#wW[;¯Ho‰€OY ~:°’õ­WXAËä×¼‡ÆŸÚõØ,Ö‹ûŒ™K²Gyï[•AšãRXNÖÏ›õëæ £³¯Â¯»Þ¼·;|æk•‚Òbé«ú ÷Oé°£æ)<mÀÏÑ+˜-ÊŠl?Éʰ±L†·a^‘Œ£'<§ºŸFÐ~Ò6ºÇCÈ |^#µq²å˜.¿Rê#©&Þ‚¯¡©xóð"òR]ÞD—)ÏÕ?H_d¦ÒM¹²ËÑG9è¬a q[ÿ‹\‘t1(ûJ_óH&MQV;¾Ë§}”Át¾ºTT$i¿²³í•b-…›I). ku¥²Š#²‰4Mº§Á3ÁJ_W×lgþ(»'ÍR(ã]=äBa+BN¸Þäâ9+E µÂv8„žtQ²ü¬±ÿ›h "À-c¦}|ĤÇx×çÐ_ª$­# ä.軹ÍyÉ:ä/ª¶t+®òlœ§k‰<¶’z4 º`'ñ‡ÛÿHu<Ñ®ÓDU¿&Ï“²T¨–Pv£è® 2•eUØ¥°?‘A‡W}.] å.ìþ`ý˪Y¡l'Û‹«â¼°žXâ\íBŽÊPyE¤ >!¨x5_à,óƒýØ69]…”ëz=Âç*-MÃ!d7 Úc·ówŽ:r“°‡Ž³Jœó·ÙOpð5ÐH'`¥üɵ*:‰Ä£mœ‘¸°Ò€‘…ãèHçÉáa]<í]¶úHý¨Çˆ!Úé•c‘³öÛC´!$Ú^©?´ß°ìÛr9ÇGw!¥¶3Q](OT GnðÊtš«”»gTI鯝‡žSòVÒ,´GÑOXÅ3Y{¸% µ’âù6tAª¬pÍ¥Q®cŽEø¾ õ—YP”ÿÃÏÈ#œ Þƒ\V?äBEK0G!â…8@ÊÀ}pj€îã­(¯Èâ1(MäËÀuÔßUXm[ð2ð.\ˆ48 ®æ –äæZ¼.Fˆ`4ÑØgö„]#àQó± §UœÀoXO×ákü’ÿ‰¶¢>.Eó¢`2‚$‡ÑÒh¡Oû÷“}õ‚µ4ZÓjä;J¦)0ýM®€%`<5þ§þPdÊ {ŠsÖD~ÅF¢¹†}°ó«UÖÌg&ë#½…S'éýýã}ùh%«^p}‘稧­¥æÝà[ËnÚñX&‡àxñB̵²ö9Ì8k•÷\£ýÿà2p aö´W‚—Ú³ì->éæVõ•FáDê£} Yþ _”€1vK>öÕó±"$À- !~kµ.ÇöAóŒ0€}Î:‰2›”“ÚÊ«ÕßÊ(i²ò/N1¿¶Ülk¯öÅkõƒoƒÛôíZWÿE/LSÍjv¢¨‰7É=ç¥3ꥶ´FZIãhü/ˆuÌ‘6Ðr$Iy‘’p{²­—VH#I,Hë“k¤*¹ÓÈtæC@K@¸„Ÿ‘ p‡QÉB¾·æN»¡µ'¢TöK©OäÙ4š$ 5b|¡¼•œ$Sº++nE°Òvë:ë _ÂêøÚ¨påŠçÈŽ*¬¶]ÀîfOfìÕVo‘A Á­ÈaG…Mýê\êÆJk© Y† 8vDgÙ8Ð ÜÄ|mÑ¿â-’ôzV[SõܲznæGçœá£ ‡‡·‰àøæ©úÈ9N—*†–ã7Íh\|ãp ž,êã÷xÀ Î3ꮃ탯áÆ3X¶]t²{òxpMýÀ2œ ÊÀ¸-\óÁ úÞò°Ë^AþÅ×á2åh4œŠJÁÎì¼ýJtÒ—šQÂÇ_ÁÆ^ç1œl¡©9ÎÑêR¶â¥¥¡Cy#ûÉbi*=L»€Pgßec˜×Ø G8¥—ãœûuÈf©®\…Æ›/µ-ZY^ƒG×PUÄ+Ô™rw©'Õ5@é¶ÐóQ®à| 0xFv(䊠­ýÝf~Fwð<±‚/@”¾Åœau \ÓªóYpã è(íDŸªÃèBé7ýå†.;Ūi´õö÷æóÍ4îjË ÷Ãâ°ÄÔ³!Osº ºŠupu]£™[+è Gš Ê¿¤E®êa#œÛÃÇ…­s R:ɯäl±Ï†9ŒG¼€¹,FV£#ä—vÖ*jôå!hÜêüæ9Ú#¼f¨;º{X+µIÎêþܾHp˜T ÐPOM×b«’ûƒº^NwÉ“¥S¢œX&C„¦È> &ÙmD3Þ€å“EOxž@¥Ñ|æd—œÅÔoÊ„“!½¥üîŽB¢˜RGª’äÝR”³ŸòBýŸºNmè>è¼èr)ÃÕ_Ê )¯ãw@òUѺú«fv;Bò(Ô?¡·B_„f„Ô kª^ÅSD5»‚yX»Ÿ=ŒíPli“{‡óû“»ÿÄó îVR)”GÎŽ8VÄyB®l¶yÀˆ´.(ÄhÃ\µÃv„'䜷vŽÈdSX;6‘eíé}ô õ“ S £s°›H¯@-˜_<—¨»£ü/ÙLÏÓò2YàJ8_tœWó€ç$9ŸÕI õÑqö„L×ÍÖUî`«õ3Á´ààC~é )…¢?¨9É-;ÚŸk–»”£((‚f¢âÚt£¸½ÃLÑXM8eÓ³°¢8B!ˆ’åp(Ùžÿ“` Z¦ €O]¸5lšì&c²íÚ´Ù¶m›k«[›ñdks›í&Lo_8õ~xŸqôŒ  miÐ{:µÊ÷·¡¾¿};U¿:‡“•z¨6áKðzM¿¡pQ‰w•x]AÙj§B»ÄN)å(tBãAÔ Ø—b[åAèÇá%ðBXH´ˆ@@øÔ |âGÑzPþ^K§ˆÐTöÀAyùY+þåø@ø^P¢%aDÀ,ÅkHÎFÉž¢: \ð ¹ <ŠK l0R@ÙÌäˆÞÀð521&‰r"¸"÷À4 E7¸H4¢ÍáE2žŒ‘©£N²¸h%_Kkò‹À…(*š€tQ9pT”=á\”S$1¨txo×*©anƒ0žÁëà7¨…Øæ8ìlˆNé·œ‘ú\Çw} ®êºàLÕ&8Oè[TÇGôÙäû¯`ÏP 6ö†+3åÔçÂpS±5º›û/gªOr¡ ÿÁ`Íô6›Í4€c«Z€ÌT5Åkñd²ÁX&òÖáï0KVbÿÈñ ® zÂ:Ú^xL`d;L²Vƒ…ð´\K"´ÉzÇe½j8JW²Î:J_ó9³{Xo-¯È!=FÈ^l+&¡yÍ_¼:¨(º‚åêŒò¢Nh°ˆ½ðqåx¸CéNè,rÈ‚ ØÏó¢o¨.ì.o_(%¼ÍºÀW[9è^¥7R6ê;I9ÔZ¸ÈAäÉh˜&æ(=ÔØ¯ôF7Dú08Ê»9\7¸ÈW‹ùèÿŒúôº]<°È®o—¡6Üs9,t Ũî€_ྂ/¤íò¢Ÿ– ü=Œ‡ùIúiŸ@Nø5d•è® ‚/vmé€gÑcÇ#ç+תœ—c'F'G¹c y. ò§r›É÷òáÌÍ},ç/­›b;jß $d›Y#ùœ ‘S™[ka/7Î …Œ½@yóH¨¯·&* ÷ƒ‰âí†ô˜Ã°Ü««ÙsáeAøYô=.º”«©x'žÑ¯pŒÄÝ#Ÿ:nÅNpœÊòÙó¬L‡BzjŸíC5|EAIÒÎyßjË (Õ’âjA (ŒGÕ rb;µ¡ ú©~áÛâáh€ì-0ZÑÒà“Ì&žCæÂGp+®¡Ü,â@g¥1,¥Öp=r5Åx=û—ÑHÖ&è¾ ¶àkÉ$Ù΃«ØS¹žVÌ•Ùú×kÿhcð¨û-ÏcüJ®ñ³ã^Ôl÷-ÜÌ탾€Žð`’Öê™,÷[ƒyEÞÒq/@ßͳx…†Ç”'veöÃŽæµ`u‘È{+©$ö‘ø°6GÂ$ñ/c<@Ëð¯lŒfáLk-ê}ìØ‚~Áàš<&W¢} YY#~²þ²pîàµh&á“`§ÃË ,€ÌÀ9Ù‚‰¸*Ê·@¼Ø:eh=|Z)Qð ¼gÇÃéð£šùð«‹x +ÂH9Z^– `Cº©ñ¢ˆ—H(ÀmXAé Ý”ce?G h5tÊ‹pÿK¶@á5°–t†óì ¢¬ ƒåà`±Cε;À (»úÀñ5úRLa­Øb¾!9`vzOK$T¿º’d‡ê<—Ó&¨Ë”­âƒ¸@«Ù¯¡›jš)v’O¡æÆÿè!xY/åx•›3¾1~ÏŽöé r¬è 泿cnDýÏÕJ^…­ÉHµ…2_¹.>Š|nN’Àv\‘Ä©9Å,~“B|­õƒ¶S/ÕÍÕÌéÕ(ço§`£³`JCý®+“Œµ]j-8 ~DÖ­Á~¥‡cv8Ù²hãmh]ð1I&‘JY×÷çbð ÆðŽôܯêÀÂ¥ÑN9Lv£DðVôÿ(‘Ä÷‹£ü0^—cðs\7÷lum%ƒÔÊ~œÏ}&ú’㬲 S¯°O¦ß£Î%-§ôŠ¥¬¢Xþd›àqy´"W\%#:G¿ÁÅa5ôÒÝÒù ˆÞ幤Úúœ¨Žùá‘@‘,ùmCÝÙ{#ÉKÃDfGü^ãib•ìÌËKàM;ʃ`òˆÞãnoFÛí'áÁf~ž¥}Õ9àú®ÏVNv˜Þn±•ÿÚÈéb¿ú–Âëù™ÎއkXm‚õ2›-Ícvµ ‡Œ pºr[y>ºÒáT¤s7omïU·‘ëpƒ^“üÄ[Ã]Íul{j§´º)¹Ô¥šýÎÎi5G­éFÂÉgÓ)Ö°4r“VL8·´EyrØ^ ci>ïkíØhÚBä »Y#ùUõ‘‡®^¸˜\}vKjÊe`°œ®zÀþo–'íblmÃ7†ë©‹`W,˜ªÉ;è7’ ;á‚"¸"&EÌ]¨G©‹õÇV_¡ô&`›l£˜½“÷5ËØcµ”®ÂâÈUœ‹¶¹Y IDAToTŽ)GðQÊe©ÀÁ¯°)æ^#4/ËÊ9&r ,ãMÀE³`n…ó³Fà8?f–°º¢ãʵ­«y„yÐÝÒÑÉÑŒåÿȲ:wá6¢-˜“¼|…Èi«Æ0”¬ì%ÙH)\÷‚ÅÉ{ñÁ…°¿˜Å:ÚÌ:hìôG€Z¨¾{’^ŒÆe£z~†md#Ûϼ°8¨+¡öÁ`èª ?ÙW”·ŽvƒP8³P,ZOz(]p%ôãïÌËb]*d¡.Ú‰íæX<äÙ@ÛàzKîAƒp¥‘ÇRS•Â2Vž5¶dŒ'¿:Ú±ÏÕ7&èŒCm•qZA­¯¹Æ¼ÎE‰u+ØSÖ?h»­ÓfUëo\Ø)boBoÔ¾$î§³´=4”–ZI”£‡Œ•dg8Á¬É{£Ú^ܚ̅&©{ Î4ù´‡“ôÿEßSϹ|³t@ßY#üR«ÙÀ±+j¿»›«¯~]GïíüÖàš_?½¹á.s—Ù…­ááã0š·ÆmåEYnàÑl¸#ôNDUÙ¯ôƒ"oúß?—ÿ—ÖÌ®|²X'€ u˜àU€gð§è(kQ|5;¨¿eò¿ŠBðˆv^“§‰¢´R¯Ù+ì ÖpcŒÜ-N¦ ¦Ê‰¯Ê™¢1KE¸,Fò©¨¬i¥ŒVJªió‡T¢Šð0þCôe­Åß 9, “%ƒ¥P~¾äÁ ?`&ÉkËòü«|"¸!šrm ¡0CÖ¿Ã#ä<@ÚÉorìMPE* "—ÊæÒ‡ŽÃˆÃU`!)ȱršÔ`PGÈ©2AÌ‚>T˜\”÷ä ð@×ÐgÑLæb…E¡¡â¤è£8/:É~øJ‚àLXÝ<¬<Â]—Dk²ÎQu}2)±$Fþ ï Üö>°K³=0Ÿ:HªCðv8Ándç´¶¨ôÍ(/ãhë2[FK¡?ùs{ZuLÒâœõL+ã©¡eÁÓÎå%¸Äó‰Qð1la¿R;Áóx:ÏMö(HY°Fè ÕNT•oÑnó/ }8Œ °&n‰ëóÿœU#wÇ|q$;ûÄ´ÔþŒqÂyFíp‡¬¿p¤TåeÓägeéEŠ æCþ¾U:nÈ-ús´AæCÄ;Ø×!6dEÒËÖK¸ÊVé$õ©¶Ì×£qiùÕÔ²²h6>žv \f«ŒØÀNž$f»Âìd“ó3HÇ9á<áä=ØMíoXý’»À8|ö…õñ\ß‘TTsÌý4/,ŸÐåüž5%ÂÛà-þV‘§H€Ñx8ô¡^r¬# ¿Â;aotÑQ]Ù¡H;'{’ìà;d讽À.h¶—-”w‘=c^æõ•ÚÐ…Èü’<â]"+&‡ ¼ü_YJ5zÓd«Rø(<\ÍPV^¹Qþ“åFPO<$oÑ=t|’Í¡[V“+AI¡ËòMàÏÃO„Cao´_=Šê¢á2VªôÄËÂ{à Œ2$bæASeOÊ9ÓÐ0 ŽQ†èÇZ‰™Jåeoøb9¾u¥ƒ °´j€§4 ‚¦ja6ž'¥e=i²4ÑN´‘Ceø |G—P>ÜŸÀJÀ 59ÏÜ î±}âŒÝ™FšÁðL»1+ÚZuÍöVAÑþ‰‡¸N©oÈ?Zâ„ÙpÑ>C»¬ÒâtÒnð˜É‡Š£¼­, :KM9 AçPKõnÄúÔZj>ðÖõ?±¶›3ìõÁì´‹u2PÅ•ìX¤Æ¿‘éú,Ëo¹ÃiÞ®¡›ô¥º'|TüÃ,#ÊÌ廇ß2ƒoÇKPGç MÎ Ñ3p(Ž“4 ëóLÙ„ï ~2'˜±þl£´ÎÚyì-ú=µ Y7C²¹\çxfy­;´F [0=ü·0³¾#nY¡&NËáJPSõ(÷ðþºè²•îz‚C8gáo°uжt¬]ÂÎbͬ»Y_‚Wƒ?q¹8¤™Ÿh=—/vrĈEà!/j´@MøXv‚= ÿޱ©»í=l ÈÀKÀ Tß©Ínƒëü©½Ï>Á7+·´ìN~ÚÃ9^*@ Ý—>9T.â/÷r4&s·²A`N _ï/åÍcUrÅ»*§³yãÇF·Úå F¦ñÜÖißIã_ë»]ÚnÍà8Ù€Gj“àvðR<г‘&ì.íïk×ñþ´–Ó~仑U)[/ÏxÆ1H;¬€PœöÈÇð5 ˆ.ô+¿Á¾É{¬­ø"Š€ÆI¶ Œ6[ûíÙ8oÄ©Ùä¿JQ<—%¨ p®Ñ;üÚ¼b~]F|Î[W/Dns”vw#㵞‹ÁòV!šnö·w…ŽÃÓV—à—àocÿÿì®4φVB•Ü‹Ý+ò%¾úëëwÒŸ,ü±>󚆢sÄ*“´Q=ÕήcÜ Žãõ´«y×Ê®VCy»ž¬ÄÃt$›l  Wã*œÆigõ¹ø5-‹zŸ}?‘’~“QÞQ‘N–+Œj¼8œ­‘9²½< ÒYmÑÅL!ˆë´1ü ¾”.9Ž¥H-WíØp¼šË1Œ—mC…ß|.¢zü :ÿ‘ŸùK8‡_Õ‹Â ÙßEÕ¯´Žö@ë÷X£í梹å³ûðvfP¤‰É/cðat[ß+g£Éb²(Œ'Áû¢¨@ÚÉÊЧ¬’ñr±R„å1¸ûÄRØlƒé(ÿ ÜÀ†¢gÊ,ñ¹áhÔ}A D>ÞBnÁ›ÀðÈÅ Êt2y“]â¬mï€5äpŒœš‘(QTž@%äVúA¦¡Š0 ¾÷ÁT±Wö’eÐ.Ðd;’C­¢ »tÒ€\,çÒ×ò*ìÚ*SÁ+µ“X à IÉ`Žx#‚<Þ¶AN|!ô¾/êŠf`¬ün•ýøevÅú)¨8O¾àMä)‰)ùÃ<œI-W y‹í´£h_sPø¡{{èD8LF裴tÕ‡âÞp’éh¨<”äjþ6ÁtPÂõ›.õ–l9¨&WÒµ¤68wÐïÖHC:ù{qœ°š³V¸šy룿ÐzÑÍœžÌa±ËY_̦F]e¶°GΊîfÊMœ¤Ôƒ`*Þ®5TjÑ&r™¬mNT†dš rJ7˜Æ…hÿ…ùÙ#„*{¢…ê"×M51f^ÎÝÎ?"KÄV3Úef¼¯bœ ¥fý¤§Ø6Ñ É0§|k¡A,$WË¥´,?|8 ùác1Aî§íðDÅÄçÕ¦Z{µŸýÈ@ŠÖr«FÚU¿*à#²;ÿ Âkü©å¥“Ém2€î±;[Ëœ ®Ö®ÝVìë¸ÿÙM Ö ÿ ÿžå“!–t‚Ü(ŒÎ(Uø+¥»RG?IƒÑÊ(2Q»Dܤî*ß2ÕDb½eÒ¦t$«$š‚¥¡N¡òe³ÐUbô6JÃ<Ú0 í§_˜“W |®2µpwzÌ–wqNÔ‹·±tó°óžkJÄ0w^OKå&A^…ë‡[ÚGÙQ¾ìÅI®b;˜o>ƒ í(³±lˆš‘ZQ-¢?8'ÛÕÙN6Ý÷Ðÿ‘\ÃÁrµ’è-‡¢`;¬‹„š2§øŒ*€Ê2·¥Éü£}ÕºÄÚÍYqñD]£—pt+𪬛Z¼jFv…ù¹•xp‰¬Tß«‰ä,i‚þwA'ºÖ®>MGðx0Ú¾em³:Èšò»cÍ`GýÑ  Nâ§eo\„–æ»ìD1.ØÖ20FI!ýõ¾j5ó'1”Õúq|Ÿ/Y ÜŽ+GTB£Àgý‹¼0ø)ãà{žÛNÁ'íO¼ ÜÌ øYG0I¶TÀ«úׂ˜MÀá`¸ çY‡­&?C$ôùƒ¹mÂÝyUxAÕI@9RÔõZTu‘ùø|Áäs«™uVÌùE3ë%íG{ŠêÔa½a+ãyV£`ˆ-·ó¦T‘e]ušÝ›Î5Öƒ-¡³xCTîÚ/êÂ~®2\‡KmÉ8”É‹ê·À³ʆó߈ jÅCf o8`nÌÐ3®d¼5nw¼¿ðHurä-÷_Ž)} {¢þ3_™8„RfäI;à™‡jA1ØTûnf‰dþ§õŒÿ‹,²’Åd-VÊÌ­ÌÆ_`ú7ýf ¯÷ n²ºo8²E>w9sψ@69j8a¶æÁþáb²¯“áý€uƒÿ¥Eû|‘|i¨]øUÈŸºã×86ê¾RtþÒü}'¿Ûû1Ћ¬t‰¾ñ¯„‘út‚ÝfÞKŠ‚^ÃÁÁ?_Ýñý‘Ü<ùAxU°IVQvšîSó'·‚MÂg³^YËÕ÷èmÌzeï$‘„â¸:ÍÜã³ø`>‡,TNð:(hm;È|¼EÜd£øE4=CeåH2w—}ÅÚ|Öý¨Ñô€vÕÄç1³˜ùО%öˆí¢Š uW¾:& <à¨;Û9AK€Õð»Ê/ºc7 Z¤ ê9sÑŠ´ë/;€±xž\î>%îÂ#â$zʳ[è|Џú’§äLe)1À­}០ýåKä’o¤zá4ü CÕAKX ¥³¢È"·aT ο»^È* ³Ü)l$tâ °nRã5D]Ø TTÊÉ£ò´¨ ¢ÒêJ0 6Æ»A'P[³B–¡Õh'¨-Û[v¼KùÔ§8´ÎjŒf¢×ÚNP]À¿`Gü¾WÊ¢?pct tgõÅ's4ë.z‘W` ¬'¢[bê%úÒš¬/ÏM³¯}–—?àe¸ ÕVóÈþaž‚×e[–ÅÎÈrš5É,èšá/Æ :®²oªŠ°YPDü~§Uù;¥€ØÃp†¶œ¥Ïù¿þ\æQÞ±Ôi²6ð°´Þ8C­ãÏ…ëÈa*ŸÒÅ|“멵%Ü•¾äÇ­5äÌ¢YO~¹´‚n…oOùüsyÇ©ÀmTq–Ѫéù‘¼b3¼(çÊÕ"™Ö’“9…K.e->V–…+qO´îw–Q#ÀAí­¦àÖø([€¢8ßH Ô×ÕE¡ÆúB\^IßÃ-Ñ8‹¿€HäÃý°Ó³U)­ủ1#û9×GNR²h)ö°'Aaäµ®›†½ ´´ OaªèúË~¬¨\ ƲÇl=^Igñjüšq†6°¯ãr¢=ÿäÒ?Þ¬ÕŽiÙi[ÞC,ŵ´›‚£U°}oà96¼–ÚaWØë»ä{‘æNKð¿ U÷ýÃËÂ…¨‰º‰ô&>Èp|¶€ÅôÏì(‹üÔ%Ú²® >)À)vËaèY­tDëÑp°4oìì3WA]³/ûUåÉ´,}‹JÂW|Šõ˜}·\¤•’¡Í” àŠœ!6‰»¡ÊnOWm·ª¸õìˆ7zÐJ=^Óß@K„ûÄd¥ ž@3Ä:8 -}@Nk3œ"Ç]¢ ŽáKþ¡3Aa,2ðÍæã<;)DXv%fVEクïžoî¶ö>1œO3*íƒl5ï‰7»NEøP9å­ž[§ê*w!Gþ¨œÙ–¹N8.èn«û·ß}CBC¼Š­‰¿¢½Í@¨º@9‡Ë¸k¹G6wféiJR˜ ¶+™}Åtò=¢uDJü wgGQâ° ¹]~_‚ïoc«Ž•Åþ¦±áÛ !VQ1ñ =޼ÃP‘ t6ʶ•FÅìÇ"…œ"ýÀWåÿÀ5Qu©A7X‰“èià¡ ª£-Vw;£­‘ fâ‹`%P×'5å{PTœ¡ ‰òâfë¢^ P4ÕÓ^xä ^Ž^å–5B>A x}â×Û¸&¢Ñ Fï@%ð’~TÖåÉ wP™g¬O´= ¨'Å4AÊŠÑè 6¸€K¡fÄ«GYoadÈA±€x‡]Ì>|@Š)Ú6m‡¼‹Žˆ7ü.نʩì5¬ÚY¥äkQBþ¹œm‡X€J×€ô¿ê~(ýæïÞž>ñC"¼GçšïEæýÔ&ÏÞˆJ0Æ9Ý8n•õó^ðﲫ³yÂKª'´ìÎdt‡L˜ÍáÉx¾o·1=è•?æ# —¿\h*j%w ?¢‹á˦°ö“o¨/~¥Ï…£à¥,µ¶f™PTx>?eœa'DØWý¡_€e¦æ†%Õ¯1kÁfu¸"KÂGY=f—?åH|À‘„»zÚåjiwåG =µDŠKî•Tò]ÿá+Üe¬Æïü½ÿ+ÖEù„R¾Ruó6æ–`¹/êýÈ'3?Û·Û§íû`rÛã+šuRUå$ÜV©îš˜ç½ø$ªÅ¢·ÇË×à{õ·5~x2G¦e{eÉI¢Chö;i##Å´‰)â¯å#ÕY=QSvEOåÙšîc'ìüd‰òÀ½^|ƒy­g²Î!ï‰M¬•} ByFæuÅGp\•”îCu”Fl8KëQM8T Oñ{ü©õ@Q’¿XÌQñvð)¢ÝU•°ÚU¹¤l³ª›ÛÃÙxÜK¼EýÑxžjægÚcØS|×Á+SÑ(‡ÄvEžuGÏ@Cþ‹×§d5qf9`1XM9‰ªÁ_ì#­a%ÊhþÀ_AˆÂ‹”ãpj€V‘gäOR-mH°‘Kq{1/C1ˆ Òà5Lùéep 4–ëd59 t‡ea½š#{Á¡5p›üSô±ÛÃ×à¥õ@?\W>”_p4_(o°(Jy ãDn¹_FÉ4–e65˜¢ßà90[T‚ýäc‘&ƒTû5¾Šbåb2-F'ñ*í8£ålñÚ*h$×[‹,®XêZãŒÕËñ'V˜w~°‚VZÖÇUk“HKMù™Çªëw9’\K´±¤ºœy ÷cnËo óîcXÓ\**«êçHÏ 4 4Ú¿åü ¬½éÇSOeæÃ¦lf7DäÍ2ÊûÊú;ƒÕéO‚}Ô2è7–ÃUÙùH)[6×øb~w•ÓÆ¡¼#Œ5|à«QÀºMטùøÐK›!ÞÓJe"Á|vmPW+ó];œo”Šêc­˜X&—MÃz:«çµò±(Œf©QÍ]K²õ }ùQ3Ñέ§8#ô¹¨šº·Ã6xÁï‰q‚á>öBs ]Ùn!>ñòl4<óàaÎ%ð7rþ¡|RcÑHXÞö±vÌ4/²¼¼¥å6Þ8îjo÷Í1r¯YÚúÊÖƒÑä.Iö|Å)ê$²‹µ¤Ñv§Ð7Ëzá?ôÅNêY'2"ëú2x+ÃM‡Ê.’Ê9´­'·ÑLì}ÐUa‹ið¿*~Òñ´Œ;ÐP¨ÈMÊc|P¶„Udžï¼ïZ ¡…ÙX{]x£QØüjî5¸YŽ?³KŠñ2Š· ‘ü¡ãñµ'ßeQ£€9V¶NÎÎicÜ=²M¡§P"³ÕûÒðïˆôàO0›òV{ä¢ ]ÄûðLu¸SêƒÕZQ%W”{ìÚV’hÏš›) ©Z\+ä%fõ£×È™gåc>MVŠúuÚu92ÉYNé‰Kà‡b ø_¢r¡0Lëò‘`¾\Žö)¯•íÈOÞããê>õ²ÚŒCÛäLºšÎ öcZ]À•ÉqG}e§x±Q!œ¾ÏÜëÍž¬nQ‹è§½Ðèøk‰ùŸª©çÈÊÙX+£›ŽK¶ýÀîdæ •`‰¬HWÁãØÍwˆC$wxCV²·‰ÑÑ[(k&ü ÅÃ}˜jsdª’Ï}"*Qàœ“ëè$~ðaž•åíe® ®ðÕ–¿D6“å¶ýfoöÓ®cF+ç#zþp4öÎÑÖ™âØ»ÉÝQ¡ä² ðé¡9¤‰R_/Ž×h«=^¾ÙžÇGÛéþ³™Ü86çóûÐÜp+£KhŒoRuvÂ`>Zéô“õΖ‘Iz ·[ŸÍÞÑ™‹½¥~¹¿} ±&á>auÆûžoá·ɸ4ïk½@µíIÖÏ€™qòçöôN©³S6³s湬´G]CæêW]kïÝÀãw½uµ¿Àxø2<_SÿÖr³lfoZT6•Ýù(°”\EÏyS Óåxî‚yá Е$áýZ'€(ñ´†é°—Ú÷ŽhE†»êGz”ëx¼LØ\ö–ݱM@‰$›Ú'¹Ñ+s:O–¹å;ÚÅöq§¢(]%×Y7óá¥,Ù.Ê/¿¢×J^@®#G@ðEÏø!Púe t¬F£@˜Èyb5ÏǺùÂ.މrVñ'K úhÖÓn:.d¤ÿ±T£-d¯¶Íà…ðÔÐÜÌW©ESÞ…„¯xר½]¢›ŽÞQûE,N'êõ±ú^L|’€‘EQñÑycó»Féj¹ü²ÊÚ‹Å!3Ζòù¼Š,¨N€”õ™êg²ÿ«OÅEØž3®ÚFÕÒ2]l¦ÛøaoÐØ¿ÑÿÆ$|SNÅeq-pnaùHN:³œÏô©zºšDzY•¬‡áë>æ?43Ð,ôÚÞc> ½÷Ž=E9~Ô2=·åô^¯¤_FUñ14GOÌ\æ{¹|Èöðöâ*óÐn¬¬üŒ/›7ì¯".ô´-ÂuQêË„jEÚ§é]ówãxðDx[ð@ÖM;']gÜä¶H3Óe;tS–ÍP$ÿ“]f…˜%ÊËXô^}¢ÄºŠâøƒrXæ>{d7°SY»4e϶ ÖÖôÓ–lªÍD"ôʃh£H#½‹Ü€jIrŠ‹ò0ª 8”â+¤))Cæ~ú5\Çß>ëVê™Peßßþ‚ùÈ8µ”¾N™éêêàqd°Ü†g¨Åà*e˜c Ý`èÊ…p­° ’L_Ú{Ùì&9<¹³mËYNÀ7¢õÆ µ|”YYá+•ýmÎ…3”ÎZ¼Þ_»äœcFÕŽLÁ#Õ€2wÆO•\ÜM»ÑXÿÏÐìÐR~ ”uu§6Ðe†GÚíÂ~X@9Šß±~"Þ¬N1—û ºï8êEoÔš¸ÿRãdw¹˜M 4ˆïYíY ãœ9$ÅO³dã/t]Ö£\•µZjCç+­—vUëXîØ¦=!=ˆÊ׳”ZJ"ý—vã= ‹¬ÿà‰X)Òá1DÁGYG­jŒ¶Ùe*êþ1ðªo¯â+ä=øæÓŠáï¨ ¾$€,$ãg ƒ:ƒ²$L‚•H7|ÆãHý—ç§'‚°’f£—h̲¿ƒ5!•«¬µúw3£18>¨ÖÕêñ ”•þnµ1–}õÃ{¬ã`±ÒKÑõPÞ’ÓÎÝ®Nú9¾Ä¯l´¬¡×£eéBÐÿPÿsø#êÞèºU³À=s :{¸ëFÔò줳̈́Ԫh™ó—??>ø£•gV¬ŒèGca•PÓl3Õ÷*ÒÍuÃ9=â¢s¾+`úC÷ÂÙaev>xÊX¸¨mµNïÚ_IÐõ¸3lµuÅ%Ïóöy—tN†YN‡>F‡9†çšT$Êñ1r}¶¢þÍ?K¦g};î xÿ”.´·z¯ù«³1ຎ–99àrgK¶BTrTn£â9X¾ÈÜ^}™:%×Í”ëIÏ`´ïÏÀÃ4Cö¦;Ãwá™fÕ»¸h‰ü!£1ð$¥ƒú•\WîšµÔN‡ÒÆ\mþEGƒ…$ ìUÞª1¤—X:Eþr&Åý,øÊ[;3>t+"*ûÿ"ƒ0/|b¶õ…R<ß7c7ú!ÿP.‹9›D*Õ·Ê3Ï=K¥RF»¦•®vUqÔDqƒ8­Š½Fˆ ÂËqð¶|­w‘ Dîðt^œãeSèïÜþø IDATÁWìSj4ØsÁ]`Š,ö©ð¢hËÊ{QÕÐU´CÙ³Ãd;Ï'£Œ5Ž!úm½EgÊæè)üI)|'ïÉ ªµ 4B†YïFXî€ôgÇ]À.ùÉ~­íâô;nÀ2j-ø|”maqðTœAùäJY‹ÿ+cÄV^V[e˜½å‘²4ÙE»%nª ϹÂê¢Á$MñigäY¹ ΀[.‚kÁ^x\•ib)ÿåO¡'J:ÈX€äv1¬”QùxŒ6€ùò6`²»ËÐÅð°T àE/^Dò¶üÂÛÈ& ͆+à™Þ–ODCÐÅwÕ(QTØò¶´%àíÙ)~tP^à'd)ž ®´Pžº‰· „åån‘å¸ï¹èªŸ#¢´{fø‘o­:æï›úš¯•/ƒ;˜m°ØŠýzä/R5Sýx=ê—é1ø”ó´^ÜÝ‚ßb…ð«™hÆiñ`¸E¾àžòsˆó8¤&jÄ™ÊNÚsŒ^æ÷pþôW™ËÃ6›7ä ÞVF‰‚+bÿºæž÷[Üo®r®BQ¯ÌêþGè$·’›¾7®[oÌmF7c¿¹ÂöX§}CÂóÅT}¸R‹»Å=Ë÷‚irºé<ª¾ö”GÕÔ#ÚïêNlËÊL™«òa N²‹ø [‚û´&®!ÎÑöì5C?¼y@-ÖÍ=G½çh«ÞvqMÑÊGlq¼slà-YY«M¨¨UËàvi:í -ËŠõæ%Í!'܉æ¦UzƲÍ4DÿQŸð]n˳T»¦«SáO´×1P«îD|ø¦¬ ¢tõ1ÛlÖ1³h‘`_¡¬sv±à[u—>]­MÐgÙˆÎTõ/bÑ{ÑDÞÑòÑÃb‹ì_"[ÎÜ™pðÊ·)-Òz$ͲØ1¡Ãü3|äŠtÓ¦)ùñs1ZT´rÚ¯­ûð8¤$à[8,Ï€hÞªåPhãÔ¸̧ÀŠ86>|Ô|eÄ… ~ÃjdS;m637Ó“áF°*™®ÎÐwèGÅ.±&g#ÃKGÈïk/êŽRsGæq­ô,ˆüH^“º¨»cüg”5az[; †=¤´£w,ÐÔôæ¬Øj…-²]žÇä¬6Z+.@Ês 'JG”íÑs`Y°›ŸUÿµh$Åÿg4‹ZOi³kôóèñ…Ôµº {\Õ=NW}=ÉÙï÷îLŽqoÚ)Ú ýóìVè¨OBŽêê%¥­s4½i'˜£åY×°U;­ïˆNˆêêY¬î‰¾YR¯¯Q›aèc0Wìa+ûÊ1á¿Hz:=ï*ùe–ºœÌUã»äq6Æç´þòNþ1•ô´óðF5ÙùÆkä†,Ãc­¦ü8èOÀƒÕoúJ½¾çÏèb.«vdu‘lãtž]/X þÅrZŸC[éæÌÿX‚ÒÓ®w‹"¨'±Õyp°»OìY÷}WnW¬+Ã>`\4’'F€µ_ò8N;‡ª—ܧ=kœEø9™“píp?We’öLÖ“#íÿi—Ðù‚ß³å.h‘ø,:ª|d÷ø µ¨½H¾ànu| ¢ÄØ'ACÑ %ƒD°“T…ÝHŒ{¾r•µ@a}i &¡¿ ½hZ*!*hkT Ïfí[Ö.cëþ›¤;C9Qù5ÔDT¶>Û§ÙM>W÷ %d‡–‚»8Ê£’² x¥Ý—§ÐRhbxª/'¢µ˜/w³7(/êË{ÈÁ²Å^²2 ˆçaÞtÁ•qnÑœíc ÄÁ4®‚ö¨=¸ÄûŠ)x(f+“€G–iðLÿ¡dÜO®#à~yK>An°W3$EùIÐÃd<Ê«Á§àj O±³ÌšÃµäªlF¼ò6>å¯D ™Î“L™D_ªåôAZEð™çð´ £DC››GË ¾A'@tCáˆyÐ8¥~¥ôÀ©¸³ü)ã3(Ìc”­dÅðze+ÈvÁõ˜âÚ$%àÜIâÝï—1Žj&‹:âDó+26X©|Tök“y®ðgï0ãx(^D?ò|ÓQ¿ENEׂAôÊù?Ç/óá0Ñ‘Ñ -Ђî³s˜Z`ð€$W>¾PÖãÔ稹zÞQG}*ë\ሴË8 »r`¾,)obRæØoøT\udû•&HQ“Áï®rî&Ñ.Sc{Ù¤à¾@-Ó´«ƒŽà(ºâšìPô¯ê9̪Ê'XMH¥øÃZÏ&Ò6ðw˜,ºX9Ívà;#ö\eŸw…·]F/õ³£ç“}Ø\¬ëøaÎwÏvÜ]]w<×ÝSà-å°ž®Fꃅ"‹±qfÇ4¿§ßß¼q{ÙZ‘¬mqÞÅó”CZ¥žü¨¶ŸÑ&<ŸìѾ’óÚµˆZ 1ã¢Û‹%v3“ú÷få×z˜¹­Y4-Â2B—M€*ûœ Éhå„>ÒÙ7º™^€TR[¨”,E#yg)e‚5 $•h~^™ÊNÐ=´¨½Òî ‡ÈA"$t6Ç®žÎêO£­Z&TmÇ'õC¤ÿ:Ç=wš§}LÛoÖ ­y`3ñ.t7Õ“H…˜bŸu$4ÚW8¼&ó¯°iE·ÉZ­È¹à¼rW->re”‘ôvp!EÀjcÛÇ6XÙàs8MæWû9õÈšêY| G€Ùô¤¸ öÈLž¬´ÔæªEðZu)ÊÇþ'ú¿³[43TØÊo]µ/ÁJ0^¿ŽG(ÇõÑìºY”•° s´o4¤uìI®jaª5Èúj7ž„ì`Hæ%í©­÷Ôqµ‘Ë´zC-ltVV¯ÃT#F¤6Ò?àa2ʲy/£7ojä×é 4ý䦺ï¿Ã^¨5È’åKån7f“xw:ÒüÈj²uÖgYG>×*`U{ƒ4ô—ñ§ÝÊìǺhn÷Ow–©¯ä'ñÔôñÚVZ¸ox‹/Î?þó‰Gçt—ú›|)îñÉöcpx{(Ëø¨„÷à™G+Ël¸xd+ÇIeÚCi¨Nà¿ ŠßÛ/Ùû=(?òÞYO|ÿúâ•‚d%ŒFÉ7œ kÁ*Žmðà2ˆª¨çÓã´\ŽøGe­+.è '7Í8£mV£°­½Å~ÞV–P§cºã\ñ&0ÓuÏú|@ÅôšžxçAϼ˜çÑçïÀ½ l Sàh~4w®wg’8ÔÝgþdÑ®·è½~ &’EÎ9‘?Ü†ÒØq"´:TÄ_W¯ï¼@ú8×è›P2\ÏÒ‘áÞ«¿®¸ó:êÛm#V¸¸¶…tœSYqö5?…²[ á\G¢+1ÂRNkô¢zkµ0ZJgíLfV &» /Ôq Ažëº F˜#)¼ºŽl4H *`‚{¤!Z;¦àiμ¢ŠŠ´%ô“ˆñgýé-XM騕vLSŠ’BjoÜÁÑU)«õ…_•|lŒUþ'l³*¯ã^äáè‹z×±ïä•s"“ts rÏr4%†zWl6OÛ±¸2Gm'gÙ£™¿²½ý`;ñ%Ô ¤ù¡ªÍÖ{z˜=WfÎ6ý%a 5Á_# ÛÐN¯06†UPm­‘úݵîê#ë’1ü‚âÃãù¹…ÃÐÿ4€ŸàzêDñÉJ ¥O¬L{;($“Eié´ÿö•AAë’ˆâù|X*¹$êSx¬%U'A[¹N.—ãÁ(®‚2àâ› ¢¡ÄvxR\ï¤S”ãà¿ršÜ…¨¸¦ä3у1,/[‰+ãüpÐyÜ„Îãs¢¯¨/ãä10 ü†šq;$â Ø úñ§lLç/y¢NR”0’®çyäQÈž’áFÙ òÆYÙ)Ñ&TzAe'¡>¨ïF®¡í<ßÉMô›lÆóCè!Wó/²ÜEw³]vAøÚ£|aËmÍ^§!Ôlä¹¶N+Ï¢3¨,•Fª·=a%g£v»cGt’=ñp÷(çQZÙÊ._úts‰¼lõdee4W½®ýÓµÙ¤'¿¢$âØÑØF7ÐÃê]ÔÁ‘ˆÏ8Ž+ù]ƒÜ…\/p:%Éñ"ËøäHõ<$º³œgxöÅ­MŽÌº´œ(æÊ£f²²Žü%’¹l¾Ù–¯ó0ºk™`ñÙ=aKíN¸½ñÐ\ /‹®r"¸“Ùsã‹‘êM@/v X5|6½”3Êþ†ó9å@AæBŽ‘åX6ç©óCL—oq/”@B ÙèKý lÏ)?ô#¾ó<#:Λƒ£„vÓ'³5JqwÞðX{–ù{‚ëûÌÏ…SŸ/üýK I¢|¨aaðS™LŸ*™ÝOc ló9—À'±Ðº9öÏÌ׉º“tPÁ¹r>¨oÔbô·°ÊLVŽÇ³@/¸,+r‡À2¢B‰Æãîz!ö‚7gî`0¶„&„^óõ¤2ªK—*{¢²©w¹¨íÖäÈÄÔO‘LfyV5)RÕôQ‘lÁä`E^ËÁйZSu³‹+«”Dö@¸1i ›¡‘Ê*p5…—å79 ~`YœÖ ¯Ô`—p\ø?ã½³“!«¸ÿ£ë_¥”‹¸WªÛùa–Ž9³c²¹™Ûºgç¬3ÌX¥=— äkܽù­Ï‘ÛÁ^vQ³‰,Írƒ_©ÝÄPY÷"÷Ð>šwäÊ(ó÷ˆOÞDÅÉCOžANÔç‚{ù2Þ\$»ûEÏ2`GxH&ÁØ7@=˜ ç%ýémïWouOc™3Í:вÉí´ž“IÔ a® îÓOF]ÅéczGÖqv†Ÿ’žêM9Mâ?Ø@QWòô¦‡úÚƒQ„ˆTµ?ƒg´käTd`è‹‘7|I­Çøi»¯~ƒ,e—´¶ê7êB6íDƒ`3¼ˆb1èÃ6‚íÚXÔu ÷·óò»Æ’Ô_ }A%QKÏïŒáÿ£÷´QZM­»›Z†µjºÔy$I!¥±§˜S9}wZ¯ð2s¢u æAHZŸx´Y²*®o5&¡ÅàEÜg6ØLˆ‡]wm•ì¦ÀˆÐAcKP§Âk•Oh™…«iåµ÷®† Ž(+Ã"÷C…É2¸6F—A_ÎImuöÓmƒ?Ò”rÊKó¡ØîPôWQÛ“ÒIþ5ô¿JáùD8Ðň{œÊÆ`³/9G3sFÑdýðIr+ð#|Ö|H#¸Žxðx6†ä3è íXŸC4qÞ‹Të·ÈŸ¨4:íiI¢•]dÏj6#;$fÏæ4’/ÂC”ˆëDÔV¸ZæS²*Lu©‰êVõ­>†L¥õ`}>¬@%þLƒEhn5#JÓ8s¸y.c=|†\Jƒ#ò<‰Ÿ¢ <Á~^J );Avá Bd8Š5ÞŸO¶ÚËÕ"»=YÄãò-Jn1—•íàà}øK–(nŒnàâ°‹èËCv6¹S>kqq:G} þ€ÿ)˜¿cuŠ< ÎÁ¢¢ƒ¼Gcƒ,C¥Q¹Jva‰üºœ *â2C–ØùZöD-ÉÿÐqö—áBpWfÙ Þýëñº¨1lÂÿ £ÀODoy“¸IO|Øö³>ŽtcÓ€‰“7b3h$ïòËpü†¢â_2Õºéüpâè-y²¾°vôw%AÎ[Ô²h1(!âX¾È˜áY~õÅp7÷wõºQ„n%9@AœÅ3Ç}¿0îòl¤,8#>ë ´Ëø­¾R±”»±fZ.¸@\BÏÐ8}9ê+íYæ¿ ŒÔ»“«vPÑ”cæUghêr}¶z>v7ZLòÉz#}¼<¨Üâ9·µ ²dýÄ ^×—Q üÄZÄ%׳ FîZ «<³XÖ&3Éø~ÕOÂ/𸽅ð2>øÑ$ÐMƃY(ÕZ,öès­ñáRp\Ì~¡­q†¬Ê[ ÷à°3@¬w~Âoò;è\Z þ†Oõ7v¹°Ïx«¶p_f5Ð7«/+óç¼­È%æ“‹p8ª,—Œaã簺ij;Šj_£> Þd©¶-P1Ô„Ÿf¯2j¡Áø R8øLÆ•ÜçÁ]”KAâ5ŒÆ›þìgÎ1§9˜(ö³»ð * AHKE<ûaÐUžý‰ÿG=²¨H7Þ±Q¶ßhìÌqÃ9p”ù^ÔÁEȲ ŒÄqjsñÓ飨8£˜y ìsIª} g°ƒò_¹ÞZ¬/ÜýU¿ZHùG^ Ýr^9¿BUÖe/+:ø)Ç œ2–¿…ïDu>Oä@ÿ’£Ê8»ø¥YƒâlËèýHO“Ñfø4Í‹·ÑlúF2[ËëºêŒOV*ÆøO ŒäMÉÕÁ6çF¶ZŒ&k@Muw$y”²®r²ÿdäÓk¨¿è5­¢6\û‹(µ´9Ê T LWåV½š€ºú:ˆÜV› ¬¸2ÇçØíŒxã÷ô‘ü6ý‚âßéUk+뉫8# ¼ ¶T§£JêwM/a5àgØÑ~( #Hû;-{ø½È!ïÈͬ‘¬Ló,Ö ÅcžÅÎÐ'xVë?ÌH¤°È+TÖÀƒx ç?¤ƒ…â ÌÊ’N~>NÄÚìͲŽÑ5r—¢ /à´1–:›"&)OiŽÁZÊÕÜâ{”q¼;Ûožßh+ç’žKy¬Ü££]»Ü¯XkYoç­lºì0+ÏÉUi£ésWÐwS«ãªlûØ;Æy›ö>11ݦ½´µª>ÈW˜ÎðäóÆ*µÑ ø®FsÀA^ÙÎÅ^ŠÇj!RwVÁ‘¢‚5Q¼sÊáÏhٌ˹²yÏÈ2ð¦ô™4ÖPBÝ#ÓìQ¡ÑJp§]Nú6íS׺;«ž;¦ŸYÚ¸ìªÛ¦LK$鯃³Í,VyxØébö5o¸Ê{§¸ï©ÿx{¹?l`´s\ä_ù|˜CÔ!½–N.:Ø.£ÑºþÖ7âáô³}Ê.Èn|/‘šß“‘Äß ƒx¦g´·›÷¡Z þùECüIŸ¶ Ü]ÿ÷óFÍðzWÐY†{«œQì#þdŸ5ç²lÁá©w3ºZOB=¿äÆ9àWG !šEwŠ~•ÕÚüÏ<j:%áVqµ°û³÷ .€ ¡ÿšGŠ„„þŒ”RÛÄuÁ€l¯‹ p‹ÈÚMjðüÅ ãÁp*È'ÛÀi°tp|ÈȈÑÇ)«#ñFË“ãtêýðûð¿‰ôˆé “ÿ¬j†&nëÀ3Ñ_Á¸¬!3©[¿çν¬¯±çªe”—ïX›#óÁ•ðÔYhšBí]á«#Hç?åò愎ÕVLs³I|œØJ&¢,¢éæ*ÇhÑÚZ·cw@[YˉáåcÔ¼!ãpfº0˜-<š ?³ße°ÅIp>Ëm¤Ki•}ÝÐÐ@&Ÿ:Qò|‹HŽßÓë(˜ö]ÙL^ðFDÛ©â%ˆ  âñ"Il–d)0V¼’{åwiˆí¤2î-| wÓ~Ãî°¬¨Ëêȇ(³Kºó8ç¼Ó킇Egp ã°JAÀ^ðnü¹ð5Ìçð#¼¾èT4E6’Ih?j ¢ä~ämðL$Á(NÃ+Ã]Ó¸;¢™‚ñ‘ôŽ»½þZ–åßkNm ª¡áx™¬$—|¨S\öƒ«ÀsºTö‘îjÈMø˜,+“ÿ™Uù\³éÈ=h…²Ù7p}#!œ½o˜?`¦jˆÒÁµ¢[ë+¬öVŽƒ¹Â`óÙ~ÑNpú©:i‹«" ÌãCQÐܹkÈà˜ôsf]«´`J!ü—½b‰3”ç!ƒ#;í$V éF³nʃÈ,ÄÉW8Èéçl²SØF{cÚq_p/NOI)žmßEãœóâÐ¥oÅ*ÏÀ8º-´A¯]ç7¦3o.ïQÏ%ôn?àX®…#¡š ’î¦îK~Ã_Ë ZQPK\”ÍI>ÜußueEÇœ(/¹Ï»ˆ¾ð!}…&9û“«&ÌþzˆMàý“›'Î…ÇYJ¸§Ìá,·þ¦…•îÉ‘_¬¬¯9O,Ç:n‘”Û€&`=ìêêû0º—¿ó’/æ.;Áªn>±sš•6t¥¶Z{G£\«Ý”ÕRÏ[ûYY§£9ÈÎQ_bÿ öÏ-xV¡ÙÉae,º¯ÉSÈ{ÐB§¡€—Á"á¬ÁæÝP¬ƒa…ŠÆž?|o\R'´«û8 ÒjvQ33a Ö 6'ÐÒ‘<¢³³7Mªµ´s^Ÿg¦ÿ` gªº®Ä„Û§ä±;}éöß¼Œ36„çpcð ”eOp–ßô”ŽêH'xGº›£Eð_X<†8‰ËÛ‡ø»›¿¡;MÍß3§·@¾”ê?}.ÌvšõƒÔÝê]OHrz¿`¥Èç`ý`’Ђˬ·¼TÌÊC½¼¯U×;©^¶[>d9à­ö»›» Úò4ùÖN…õHÚ†PgëÄ2{ =Ⱦyž:T<á%ùr6¾ö E.±¦ó¯éÅï|°Ý’$“Ý0§Þ;&Á*á çÇ“’“ªÿ:^ia~!‰ÊO"ø¿ãfjSoW›ìK²Ý+¦ÿ©¯FYí¥¡Ka }åNšEùÄ >ÅY ûÀSrgè±ý͹˜ö-˜™`¾ p.a¤tSK¢J´N;@Y™g¡èaø~¥¹Ä'žnsORÛy}Ït¦×•Ãå(ò%T8Ò…­ŠŽ4qz…4‡¯Ý½˜ru°k Ú8$éeÌG(7éuþ’§‘Û ŒÅaµÉ-…×ê< ‰Œ Ga Ò\}ìºãà+íù3Ó Ê•Õè„NÉÇ~ÍLHóü:;âYuXÝá9å٥;ÍœÖæ¶À}ãCèQhT8«x]Ù\¹¥”¢ÓÝÙ|s¼»ãJEÏÈ´" y¹&)“õ ” hÙÈø´.h¾Lch’÷«ò,H}õ¿›ò»Þ12Ël¤Fp#|ÔÓÐÝÒÓA hï¼&>‡Im-×–í<ùX#5aŠ©%.Fj°•t8\¬”vÊÀ©æÇùÆûP‘À\0ÍY.ªj%´•äsÔÕ,]£ ÅÍ‹¯›%FT°N›gå7¤Ï!&?‘c§Û ­—fe£ óVøgdoìÆÌ93/å­­´Œºïý@¦`ŠúXã¬æ2«SZ­HNCÐΊ¿릟 ,D7@?§—èÎ&²”ŒÏImSOíq Ã!zõ=Z«ŸvõëÅ‘­Úp…,§ñH—=¼="¿PŒÓLϽl¹BCÿüê-dIËG+•cš@ zÈb²  _9ÙN0_š["M¢àú=â_ÕÕ}γÏ5LéÇæ: €îü#ÀsÙ5Cõ@m··«dÔ±n‹6‘)¿Áùl%Ÿ¿+½õŸð‘úB=ü \a^ç(+çÊtž%|Þ9ÇÚ_ÍÃÖÄðëàs>Þ"ì„c£½Êü¦£Rò#èãPKuð¬‚ÊórN '‚3«ar¶pvt,A•„7”?QpBTÀ³”Æà*Ù à4Øå!¹Œçd.9M,fê‹9ÿ²¬ðùBÆÓÞ`œò(Å*Ú-ÍtbŒ}æ0c[°¤¨, ÐjÚquš/²‹¼ƒ•Eq{Dd¨“›_ÅéY=I­GâAÉ ~ŠÚªŸŽU®¹‹TPW

]­M[¹¢»Üõ`K­`t>÷Ÿþ¶QOãÇæŽï¯â4|÷Ç‘)ïc‚#ÒZ§}£ÝÜ™c‡c7^È[êŽVK¢HÚUGµà}›ó¹P=/nl~³¶YÃBÓCCÂÑFI«¤=Ñ)Žvˆ®âøÁ[ó·H*¹ÜçuŸÞ&:'ùNoGœ¯5¾E&쎹Ó;󬜻ügüÜe#³#…#Uv%ÝMZ™Q2¹oú3q tV<ó¢§úz«ÇéEÜd8‰Î1Rš|„ƒ´ÑZ<1‰gÄfÑÉâ xŒúà(P E”yXAY”>tŽ5ŸYkœQÁWFH\á'å#±Zi¨þIn +—Ó&I]ŸXægLÚ5ùΧ±(»r¸´k,z¡b=‡zÖÓÎ5ÜõL™öñ¡NÑÀôô?šÖÚ‚Õ=•À2¸Wd†¹ådëjçω£ãOÅ áÞ¤eQþ±!˹hTâ/í Ñ»û*º{ÇNІª“¢×¥ OΙ²:â7r¦]U–¨«èb£¿96•ÚþWÕOáÇd>9æžÐ=7f­~1*ÁßÒÕˆm“Ià/KËý¢¡¨7Hs•Óâ3ZEkSÔÆð!¾ˆÏã}Ù#æã'L`å’ÿKç&f3æAçÖÊ}åŠ)5ÃwÔ{ÛûSO&¯a_í·À‚´váŸhœÍMþ›h<å%äSÒ‡4ÒúÙ]öˆP¥ÈbË€ øW1’=rr¤\!–Ü­$¢Ž´¨;]þ&ßÃPùñü|¦i••ùê4á–•ÑGé¥IeEЬð¥\!Îhÿ£]1foÄ^p”-Çsð3²œŒB#PfÔ•Qj‘¡ê:”ü©ý®ÉN„®¤;ét=YY‡‘:h.›©íÇao2¯&ÛA=ÒgòXŠ:Ø,)…›ƒj•="N¨ ùØngMà Ne«wp xË"¾Ê¡šÆJVB7i¬k†wÏV6«©zitŸtw;TܶnØ=3æ¤_MŠEÑ 5Zßé+½Õ}8¶›1Ü{ÎóÊï°$éw5”cÕ.îuá´ÔŸ/‹™|Ÿ$Ž9¯Ärû¾-D Ò ;¢¾‘ÕòYqž;v^bÂ˼ ÞŽÓÿBŒ|#B×EøÂí•mHgZ®PBzºøÌç¡ÚöªàŸ ‘s\›kucݵép<^Hf;î4ÄEÙA2¼Š^Ú5œf´ÀvVû4Ì!^2Ç£•Êy¬Ë—NNä°S`4¼“Dª9‘-ãÒ”Ô‰‘®¢=ÿ,;ÙUCUÃåÀ@Zoc,lM åÔß)âcåö mD—Õ& =Ú†§‘fèw¼Îså[ñK¶DQ"JFÁi8‘—€œ¢ƒÅ‘‡õspWT_Zrƒ¼"žˆÖâÈ…_£<¼K“.jHÌë;•ÀCs78g‚6`üŸØÅ?ñ¾ü $¼(HÄ_ÌšNQY†à—ødÑÐyÆ\¨¼ƒÎ‹¯fÈÎëì…YµLÊp´OA¿s]fã¥ð}»=V¾¢eH#Ô ÷FMA>ùχ×@&ÖWÎà¹A €A*¾ þÔ:ÂErˆy“N Ae [à|âyt‘ÒÔ®O¸¹ËØk··ƒÎ6çÊg¢‡ 𿜉¢¨óÜ: >£÷昈p~Ù»¬Q¡?Ò*ÿîkÞ½G bAÌ 1ÚèbŸÖ£<Þð/y^ƒY3´@5­¼–¼N«*ûÑKTÞ#3‡ýcƒ¾á¸ ¿ Ÿ „`Ü2~±fvÅ uK½)OÁÃrê+ Y(°>RÓvÌ‹òº2È•¸¿zëEÍãÅí9áäðÌð¦Ð|Ä•LbûÎ Cä!§Ðcc°ª€àC;X^gïÿãÑxµ©ö›?³˜É›OÂ?‹¿>À7üVLð¢,ªÂØÐwÓçìLz`t·‡Y{”SJ ™…ôw%!@×+”þf•۬ƢC9°‚:Õªkw } ×R†(N|Ð <&Ýuô’è±^ô•Oì>¬™54™„›•h»¾RYä]ënënÕFÍ6êX¿Eòˆ#Ž›­5¢lâŒqvˆÇÚÿÐ*òm^—â¿»&žIžªY<êq×@ü†­׬ۦÊ0[;-Ì¥p*ó±^bÉé“ñ§r6õGL^ïfÔrºFan Ýô!©–8ì'â0ï"Òi{Ï%fE6gù0Ù*”R&ý*lUôã±7ý˼­}Ÿr–ðuŒ{Ÿ¥Ï„Wºjðüßø÷¢pƒý2?»ÁëIF`}ç€yǘ€{æh6»rvP%¡ä --Übl%ï™G­Lü¹ÒÜ˾Û9ìÌFŒêTI_ú–>†EdiçØ+óS>¿¯„/¯»/E;Œf‚h™h†þ–Q=&äˆÔ6ª²M´Œ~!ÊPgzû ’ÍJþÒõîíUU-‹‘|'³XMd[xKÙ©&)éZ¬RI{¤ÎƒËP<=Ë[ÈUx4<è1¡Ä­çV¹ÒTDÐ¥d l.1\Š¢L¤1‰'Oðw’|•Ð4N6c±"Íáµd“ˆÇÈš¾ÊhÂËZZ^íšÖ_»KGË Á‘ ’Æ$„fâJ¸?êLê)GI^²˜<¥ÝHa죣ñ=TQ©ªü« [q:Ú­öæk˜ SÍ/Vbø¾q |ÑdNŒ¹ÌÙéýéÍæáþEž_j{šN·þ±SÂvÚ¬Ôn¡"fáÈø`_sX%¶‰êŠ_ÏA?h£é=ü­\ŸXmœËåGû”†ª¢vׯk ´&ZO×eÔU¹À"žav oÀ;Ô×)m6Œ¬J›q8­xJB©”v©ï’S|vžðÓÈ|±-—ÃS{ïmê;»ÕC\[cŠÇ4aœ UÖʼ|)Ìoá¿Á08…˜ä¤µÃxnd¶Ú³-jìÑ ¹ì¸9çgOŒï˜óXž|.ÛÝ_M×ê«…°ƒrá›Ø¯ ÅãñAu¯þÑS…åœÌ‚ ÝÚ.'AKæo¤罜†°Ž£qc¥+¾ÈJÉpˆÑ–ìÂçà/÷w=ç>Z‰ò““2IÌåB»Ì@¤¶YÃXèü‡÷hy+{\±{c‹ºˆg¯ïާ¢·DÌLw ÿ¨ØòØ£üTÆàøè±ø*C2hcÍDUñ]^;E^GÖEWENN^ßœbDÿ_ -®e¢;•¼®‘Q.†ÀQå €ý´ #bü1õm'N°›b¯v^OÅ—õ‚®z´ÞŽ>Yò³`žì—ÃÑòŒüÎKŠ/l&;Æ÷X…áðxJ¡Çä8.3d#¦ æ¬Lt £“}84(\>ŽxÃiö'‡ù ò]üLœ@wé\´^B¥á2yöD7ÄwÑO–‡€Ž+£«ØRßâú¤îסYø ò˜ è “°D;)åPoÉ*‰G±×æ]ÞÜydÍc“©¬­IÿSþ§ïS^£·4Ùe Á§¿Õ»h?ôáÚQuiOé«<~¾EbTå¦M|ÃT“”q²*7ññ?{ »Œ-§®0”ÿhI0Ø,Ÿ”©mTý˜“ѵb|öG™ ž…#a=˜äUü½=U¿¯¯g·œç'í»Ï× å"“”è£yÆYº‚²>™.¢8c• W8 ì¢ô#ÝV_zúªÄ>‹zéÉ¥]P §¥³Ñˆ¥Ågèû ² ›n½²ó‹¦ææ£œd6‚ûÄ¿ÐË1ï æªé'úºRÓÅÕ§ÊYµ;þ·Çªjû­9…uq¾c&v8 ,-÷óNöXÛmÖŠä³d¯¦‹É1}‹³{ó.vç|,MÑ6³œ}Vq3v“§€·ä©’Y‹Î¤ "Õdi<ýa’§`‚ÞLû¡tsçw½UŸ{ êI®5Qí´R¾XÿV`ˆ!”]d.x 4ÁE”±à ®àݾҮžd¶Vˆ´%«Ü?]M]§½ÍbÊ*›¼ ¢wDV€"tŒg=áŸÀ-e«*éKÍ|KäïÃ÷™~p‚TGet[IÒiõÜQêå0= |ò¹ødünf±*Û&[ÛjqN5§€Œ1­ô¨” £sÚEû ÈwÈþîÁqcƒ1…ãfÑ´¶î+þ‚´¿<éú/x8:ê<ŸÔ WÇÃå å¥Ú¯*ØÀ+“Œ5æ!kmÇOÙ#]I°™¼"æ‰Nà¶=Èz€kZ7YW°-t.;×BµÃOÒ¦eÌ—Â{áʨvñƒ¸ÛZ§ºB¹Í†ZI-IA’Á >ÊòÛÛC>‚ýÆ¢è.5I=Eç» òN„³ÄyÚ½'YÔõÚí?õŒëž»DÖM¡MðOô‚$âf" ^‚;ÀÂò£åq ˜"ö[Ñâ»XÇwáñ  *¤Ãùe24]â˜b×âÅx^½•Ú[ÙŠ*‘S.˜Q.dÍÓN¤7N½…V8ƒÅì@h`Â)\ɽ$óU×{õîGnº–º|p3Ë2̆EÁjð5¡a!ø·$!X ŸÆÇ܇ø#ç¾ñNM¬/°h"O2Ÿ¬, yÃù(ØkX2nC¹;z·*ºV€^À_e?§gä¶ð%ÃvÚšÍB_ìffžÈ-»‹vÍý!ª7‡b<{à=œ®Íq&8ý¬vè Ü @~§…µ^ÄVnjŸñ{ùœb뤾}#TÞ.Îó£Ó¸. ¢|þ«´€Ûm>òò/v@ Ê3W1ZÁ_5f´Ë¯®Ò4_DŸÇ~¨í\ÅÔA¢Izzx¯q&¸=< 5Q·¸ž¹û».+c¬ÌVQŠÄئ3OSÚyËèç½uÝ3E{zÃm,O¤ƒ3 ð…^@Qp½û¦Ö—wòÉ)p:¸N Ò6ÚŒ˜÷¬NÄu]çaÞAi¢õ¦Ir»¬h=7NÚÉæYÙ \7b•žJ:0ÒÔPmRT›¥xCÌV+Ü·EÑ=ª¸ï«l!W£®Ê[ÜMAÕÁÏ3QöƒñþîÙðjÌ\â&³#Mµ–±R‡“#%Ù¬„Ý¿6f|'xŸâòd¥íúÜÅq/9¢&(w}kðfWQ¹†B}ˆ¦‰?¬zè#K6‹;ë °Bð;Z‡NsÖ!±d•¬ ðð‹âsâáÒ6Š÷áºuÓùÉOqáéÎ!ó‘L”-d4<Öá²°•, ‡Êº¢ \ÏW°=€ AkxxXè-keO¥E{Ø•L‡Gñc5Ÿz¤€8ž‡Ç•.¬ˆœ&Ûãø/r˜Ï;E ðXSä yN¦UÕ‰êol—(oE#A5¶Nö9ízx ¹Eꂼ¢ƒ*‚v¨Çr?ÈÀãpO’š|ÏÆð'N9XJÒÕ&ãÕ‡ò(ÅΊQlË' Éš(–Ëà-Í¡õˆÉ+ðhTÕúC¶!eÑmTÎã H'í´«{H솨èèâîÒRìO?ÚZ…‚óʸ§^Y_u.JótòÆûW»h¨GJ8ã0Ï*KŠª«@&ÊjN›ù×(jšè4œ/‹Ò9úmX˜Uw9ß|¯è”Uÿ¢å¢¦š.Rñ×~Z[íO‰7Á|âO×ûOt\‹.AžÒoÑÕšhµjÇ” ¤}b¦pA~#äµ7Ã,ê^{ z*é=Ï£sE›î¥4 Ö'JÒ2’®ëh)ŸÈ–²Ÿê-N» =êü½¥¹F¢MŠÛû{èph†”Èõômèí¯á;”‹è jµ¸ž'®×$L7ÃMì0ÞNÞ)õÅ$>×®"sÁáN}'…åȧ—1&b„³+äŽ6Ëõ–frçv‡Üë|›½±(+ÜÈjÂã „¨AκEì¿hšòÖ·¦Âö[ÍÓJJUW5>¦:MöèÊ5j©¥ÝLVâëM,˲?B¸'ÎC{hµî‰ä nI†¸ùkg¶“þj!²ëYôX•ýž– ¼‹É`oÌ/à†°… áz®0¶ Íd}®XKY+kg¸ Èãt»í¬¯aŸFƒÔ‹ðØb—Õš©9Av0žw¿´ÌQþÁú Y(µµhä¼Un)Õ~xK'€÷´¢\h^ÄÒWÈý‡ètW7tSûìý ½ä‘œe'²P䜑ÇDfͰ7-åÇ`j8fêI÷ÆüFÖ»«g.§8Ô!öGx¢öŸöÒuRsÑ¥¸²ç¸Rz”{Ñ7ÈvÖy˜µ[eÿ›üؘ”^]¡H6¼™ü¥ôÆõ Õœþû-¾ ·/œE¼°Xjÿ2ȯR …ÍŽâ†Ñ2<:cHFI#{PX}1ð}ϲµÎT/DŽг´¦_(n9É¿=%]‰æ$§[,cΰNÊòzOŸ)}´ÁHÁ7[Ÿäf¹ÞTþ#m£ò¹b= õQzQ=^ùHŸ¨©d^2aˆ3À™s˾Ͷ›CûYk~ÕÌ0X'ÍW2ZF±âJ%Ò6@'anyÚœâüϹbÝÃÅ*â"©´â6*ZüaoLo”ìNìÐפ߳˱G`3ٯ߼›=›=5ÔD”GFPL7äbœÝž+̰¡b¢QÉ"VšÙ\ô'7Å4ÑÀ™ä=ñµÉZ+’B…ìhv-c_Fw«!ÏÁË Qþé1ûýË£wØX݆ïÀF|\‰Ãé­XnÞ͸-+†EäiÓFÚ4÷ZSS{€\¨œ‚‚‡ ÂVdHF®ŒQl¢ùWøZŽß¢ tîˆ×‰8þÕ°nš?¬³ý¸Xƒ¿º&À(xáwTGŽFµñ0¾šL&YÉ »ÊºKºk¹ÆÅao“GÀq0ÃjníÇEzF¤•ƒ)p覫VG?ð/ð‰¬V’;îEþ^®8pMôcÙ¬‚¾´·á>éùS=Òdf¹mûÄg¡ØÆ{Yq˜©´ö™¢!˜J)ßÑ|ù”Ÿ¶êVp‘¹&c`Fs‡±¢8þ] øgááÚ-´‹Îr­t-Ŷ’‡ µŽ7jÛÍY¢Ó¸àc8Ý…¤ÙÛ"OƒŸÌc‘lvQ…¬ˆz“Þ”¹a"s‰®Ì®ÅZM£šuÙT©æðÐ ïdµkÙýL¿²4Ûwa.Oj’?´#è¼ZSÝGŠ€\0‚º‰hX •óH.(AÑ;ô®Ç£ey±›·5—)ô¿ÕÆ´œZÇ]¡Çôë`-Ø×±ÿ9ãœ×l{'Šñýü?g;œ ŽË~ŽfI‰?¡gh;]ªîÜ©%_®æÉp²mæàX¹æL’WÈAø'}1쎦;-ÐZXîca²F\A`Ñ*9• ›ðb8žsÁ,´]«è8‚–°û²¦üb.‚0Â<ÓÑߨlO&Ðù…W;e‘&ÚË ¬$§³wl¢S~OíÑd–R´CÃqM¸ sü·¿XÌJøÙà:Þ¬´³›†ÏòoA/Ü©ž‘îû0;ºèœç¹ø6³2?̾*í¾N^s(ÆÉbå³»ÊÎ0TAIcÙGªö·`OX‘MHëã«ç*HÇ+94ŠÚÈ”ݼ.KÀ$~L{îŠ!ù•8½¯£-Óâ]ÚÍWÈ|p˜3LiM2“Ón–·T6‘wÊ\³ºI |@ÏD#3=èšëûË¿É÷ u¡{H)4ß Ñü0Û,üphˆ*(­hIe¸žDN!·|ÎbÅjùd&ÜËâQ(LÙÍÏ\gIf1YSnbSØwÄGô3Zšk ùóàÚ¢|¹ £­ÐIX\éLʦ¥‚ˆ”öž—O ¾ÇïÁY~€-æ+#nP,<©·Óƒîíð 9GlqFgE”  ;ä0ÄÐÑôºê¥œ,lš|ÏGÂÚ# Þ¦ÓÈý ¸&ZóêÔHÄ*Ã=-µÊ®ÍQùc[F?õÞWî(nˆ·“. WìžÖ|kŒ¸® V¯ëW}ƒ\±³ýôúñfuÀ÷Þ3•úÕ)4Žv„øx ×6™ÙŒ³z°ø#ü@ùI•¶ýeç´ ›[ƒ‹"9Ì´ð!£cä ¿kÏ ­rv‡ó&+¢›f&›)Q×hG”ßÈ_Þ€~ ís{ÔXV/AwÁñdèÆ¶˜ÒXEg*Wµçúl÷%w;ò^¿ ¼ÁÈ7<\–`ùÄp®8Sy^Aå)<)ü*]‰Ô ´Lmo”‚‡a^,ñzµ’þ®¥ïÅ÷õ¾žËhcLYw:]窣?  Ú'¥*¨VÕúâót:yŠE>XXB°|úåÔßÂ$ø-ÀŸrñâúÓ«Ì(ÙU”‘ùc©Æ³‘½Êœe/”nv'˜ëX¼•Õ\iLä­¾Îg ©+wÙo0 ]Äê¶œ”Ie¼ÐhjiVëÐÞ'ÔÿM«é‹½£¾Çnñ%{zj«É’Nz›_C÷Œ!ÀÍÇÚ[Û§œÑž*§µWh¨Ï“7ø¤œ*7ƒlå4qæÊ™¬‡óˆ œóN¬ ÏÊy4i¥”½Ái¸ÄË£ÑE¶„©â ¼Ê»8u‚y"9 Ǻg,4tãªQÓXïä@#énýcT|ö³îY®±ô£/—{…:_@{a@<áx6^A^Ä™&¿±ãæcþ ´,°8ýhjžðZ«6*i®u¾‹‘â2#cÍò¨ìi^Ž´uzF΄ט¹Av†GÜm¼¿ôÍÞwªµ#ùÑuø—È'º‰ëgª¬Ÿ>622¥§@Z GÉóh¶3ÂÞÏ.ÚS­ ÖûŒ‰ùYqSDaÄße8C¿V1ãE":+ÈÏ  8ΰRÒ@£êxýW9 GÊf@{P”eáFÚ”O2~È.x ©f^‡ké-½,\H2Ót6aÀo‡ÍWá“x%8/ÓÈu²˜6õå]+«°Æ¼/ê©ap»:‹-¬’ºKlŸÆŸ•_ôo2…œÇuDV‘*Ž çt ž’çô>YD¿+çÄwž(¢Õb°$?&O‘8¹A\âÙG<ŽåvŠ‹L|–ЬڑŽÖ+ÉåbAájÔµ•Ú\iå©åƃå*{ íÃ%|¼)ø«¾Ø]FOBo”r¨–}‚Mµgóâ8D¸G‡íÅr¸ô“Yx‚œrkÝõ61sÈ3²AíDläpcZ%X:¯ìl3w9ƒ‚sî²6vÇpŸFªÓèͯï‡céDw/¹•äÔ&ÐêFú^ý¦oôN¶gÛÍØDVÞ:oƆۥçLªÉ0+Ï(Ë=»¢ÚÄóšäÛáª\¤K S ñ·¸Š¾Œ^%Õ”?<´5ôèÄÛ üůŠod&Í…°§Î#ÙÍ®ïƒOAY´_%OpUué‰Jå 8Î?SF«(Cñ åO—Ç*Å;)·Ì˜P¦È¶ÞªfÊŒ*‰Gíùvbä kctZ¦ÖÚ?Ì”ÏÍ«ùÒ£2ÜcHc×e(2‹rb†ñ‘}”)¢AOÑ·n‡[}Í.-Sf$½ŽD…â™N+24™d&ËÅxTnDrVâûê¥Ñz9VI&*>¡ìE÷ÑÔ5U†ƒ^hNÌDn8?Së¦=4¤1/¼Ó –Á›á!¸ «`_O¿‡6¢è‹£ý#‡Â à(Þƒ‚æ4íú?m¿¹õ€õÀ¸nép ÜÉWЀâÑš‡îDÆqô;¼„SŒ ÒYØ–I¤*iLhãÏx´rÂ}.º^ÌqpÏõ#7B#CaÑh­>ͫĪ;àPt?—ßÐbx“® y^O¸ˆWãUè™æCÅ&QÞ(LQþQv©ÅÜå\ ”ÉFó« Û"£dN¶Ñ~)L:ç?Q[™ŸûÍ«v3~Õ X%„m%;/¡ Fë«1ÎZnÏŒ¶Îû€ßP«ÑѸEÆŠpç•v?ÕûÀ ’"?€ú2Zn9Ø}Ô ="MCÇ‚‚ãX¼Øÿ‹`m© ìcæù†Õ3«Ðx2Ý.ÊÓ\ÊINöH!§—™-y°, WJS„Ñt×;ßmÿø×”Ñnh¤Yú!§ƒ<Â…^ãùð§ì,ÇØuùþEηÐoþ-VŒÕ”±‹Gþ—‘Ý›ÇÓÔÝ•ÍsÅ·ÈœhFÂë̃½S»sÀМÖEöU¼ci¼0¯ËòØç@ïÏÞƒ46ÚÊ‹~樧¬~•vÑWºŠ£n¸I$³Ä}'¿r#\Ë,aõg×ìÓÖlù­W6Ê:ðN§Ä®ÙÃKZ‡'eÔïµ7¶¦1Z=“*ýúîüg ý’w¤A^ËÛr*˜ÉöÛ}ƒu"å#³ÓnZÒJ¼Ûé0÷ðôÐ’ÈN‰l+TÍ({¤¼YeW ¯¡ëIeu£«¥«’>Zù}•aõI„’{“i0 ÞE¹³ƒ #½S«þ ?Їoú¤71»X†9ØÝÈ“A}Ñb¶Ä¼Òb”R´Hü)Ok}Ž÷ˆVGì¡CÈpyŲœ7Ž7X×ÌeÝ‹Ìà¯Iáð`§æÃHÐ:—þ1©UðšµÌ>¬Ìqz²ÍÊATŒÞVi]‰´™w†KÒ»>äýìÙàLà3d7EªG8'Æ“]¤ÒßFð² 6ÖFòÕ"C­®è!7D¸ÕUû‘ùµ|’zÄ3г&¢A`¢ Õœ‚«5ð@-¢UvÕS>¨Â]‚×±|§öÑ5ZÍw9ºu\o{èƒSÄ]øHÓµsZe­‹²‹dQÎ8¿Ìíá©{Rª$^ I–2,2/ð{8‡ó‚àÀªtð¯£{î½Ãšìšj²m›S6c6Û¶mïäÍæK»Ù6¦¦¦^ýxß7§©gäÞ“Ù¼ˆ‹ÿù!O³Þdž~mœ"Á´Ð>Lð-y“” w'ñÒ3’*¢5Ä=Q,ÔÂhJv9±qÎX¶¾ ­ÂKÐgÆÕg*•Fá2òky‚Öϳ#rƒÜJêBPPtãm„Ž-íßv±À(§¨”Ý™z­®||àkzWãkVLÖ™TDó‚gÌ7’GÒT…»‘TbÊSõ]¨*i¥î™ø0êl§uÁ^Ž+´’«¥È¯ÙäÏÄèå}at¤<Þ^IÿTæŠîx€´Ç_–þ‘HÞ²1;•zžh÷qù‰÷atÀØ*+Ü”oé'¬×"!V»†³ÿ«û6°¿‚­¿Ü*wc‹Ð6tÜDÉ`%›ï$‚FNª‘ ᨚOJã¿ùŸ°üG¼¿@1ÐeDÄ7+»3ÇÙç´¨½4´ÐúÅoð¹´Ø.€p3ŠC‰ÒpW&“¤ºRôVÐU®íú<`I6 T>Êüò;1mD ö‚o&J9µLuìÉÎoØÆó‘ZAé"*J^K •æqz͹k;Frh¿5ÌRYS)WÓT¼@íì~¿ñû,òH—Ð޿ħ¹½¤Wf’ïTðú"†8¥ää:ÜAò /Þ—ˆå=Yè²wJf½³£œ ô-^“l° H°Î²èÐácÃèVgM(Ӿɾ[_ÍsÎ&g:ŒÖJ—Ü>g¨5.ØÅΞUðûlÐ…ƒv$Vû¦Í ÜõMÎêa¤‡YÛBÉ€ó“æ°æ9 ®ráu]mI7¹©¼èR9©¢5Â\|f5ð­N[ί äÖšH›ÕiâÂ!3Öf®Èú*”Õöç‚@•Œ¢?gZ/bÆYCùB˜æ õÉr2ó}Êò_ |B«2ÿËúÃ^ªh ´ËМÎ{¬h“‹Wm…Ëêê”fãœÂô¼‹+-"êàZ°9îÊßóÎæióEðdzmÖ„=ÕßZ5Í"C”r¼,ÌÎ0Þd6ÉgÆ"¬”ÕÎ)ëT þ¬k)æÿYú Œ”O³šb èG ;•}ޱÙw)m†Ø|P9äõE®—ÎòX±©“¤j®ðú‘O¢æ<'—K xˆ¥\:Š#ÈEºÃÉË‹÷ÀÁU9u¼/ÆF£`_¡TßoA¹=&FÕ[Y¿“ÒÔ>ÖÆÐô@ab}7^ú^Jâ¶´èü”\<²BN!5·ÔWº(×"CDc·éîƒÒÅ–"ògjöQ#»õI_§ž4SÌ RKo&*…3ÙTט°öúΈ= `zYS-좟‚½ÍÖYç[ êj•½ê| mÄᡯNyç«ÙÙÊÂçp)Ñ8‘@k /¬Çè..·–eÃ?ð°EúÚ⃢ ¨~ðÎPö›åp°©5B‡m·Ù—6RÔÑ\·rœë¹Ñu-â‡\Qa‹X^UÅðXV*Ù _îñDð7¹É‹ˆo,?m:ƒvF}c–‰h~6…ÑX»26D!×ÕÈÕà*Ï«]#Á%Ùö8½Ñ^ÔWRµ©d$}Û¢VH½+ÿ#Õ - êìJæE ‚õrŒî…wÀëz-m¡r7ªO¶+ =ÐÛ·+tÃE)š/U‘  >Ê,oÁè·®®Êý£UËžÀêÈni_€:Ñ*Ö"|Fí¥äÞ¬WôæÒ;ËUñ‰ª¤%xm¶Kj©°Ê¾ŽÆ“`-zWœ`7eíŠt®i>k]†Ý}äO^’'r‹ƒv+ÐB_¦÷pýCˆŒµ;fNħЯÊJÞS:¬g™©ò$©´¦à#$Vf¸"xºl^bÙ):µÇ¯e†š§îIJâhT’%êê@’ÉdvI:)E¢ãd¬ÎÜy@2 ·ËûÚûÞÐùt}hŸU^,ð¿ÀvéÝRž˜~ƒŽÉ§å]Þ°ŒÞBuë>ù‰ÜEûB~ÉýåEèjƒš8é|ÎòˆpØ=Jið#l"Ÿ¿Ä[ðP9Eö€Röl§ùb7°r‘Çb*>"¥­Ú å¢dRñÎ{Â[<â­ÔGyKZ‰Ip¸|ÔµQßMß›­ó„à9çxHv­†íí(郼Ã)¾I”2óð.ÞwÚ*i#ˆbßí¿yw‡ —§ÍÄŸhZÍV‰Eo¢Û$ _FÓÐPÐÔ¶Ï‹u »(Ds8­÷þß¼ãJyÁz\­žÂÏ@Zv‚•È5¹ŠòT¥=Àƒ $ìo¨…«=qó9ÔÖÀ*à+ï&l6ÐY…—J‚$T‘î`.`{© ›Îr¢êD…©¤| ñT4•‡‡á,8dâC †(Ïñ1`"Ä!‰îâÕi+&.€¯RWðNÊâøT°=GÄgŒõ·å6Ϙeu8 3H³I’‰o³‰Ò++™6²Æëвài}¹«•¾ ¼ƒ,tBã™$Nôæ ¼-_/Ÿò2#ÙéI÷a ££@_Ån6Ì_1£wºSv•ï/#^ò6u:Ë-¶˜>ÒHy­¿ãS…ú)+_‘Ýa_‚mH›°†úq¹¡¶^;)=–šÃeJª'­Ôg¾g¾ï„ßtªÁ)b8(>³5ü©ÙÄzçûAš¿¬‡êyW¢Ü,—ûXÕåÇø_çªë±r® öHÿ¡m—«¹RÒîøby{„—³îÛ̘)Ò³F¤<ýQ]Ú¬=v^qH¸+Jí”X¶ T9âûèaç¶dÉÎN8OY§œp°˜<—V¹¦°û$Õ;'ó¦ÿѯeÆzÄJ´_;×%³Í%`‡ºS®§Ç×Ðp¹¥ô( ÷þ©ÿOÆÙ$ “ðSz˜~ôçá™S~ÝöoƒùÞJd#tݺaA»—ýÚH4VYùŒd±Ç:gÞ´ÿ•/¹vÉ·q+ºüdsÉJuãIàEV_þM•–‰A°\Ò¥²ø…XiŸô=Š’@>¢?ÕyÞGî—ú°ˆªÆ–P/»T°jà|æK³V ½]Ì·*­1Œã¹IVÚO庖Ý]!ô/Dç´w®J( •/ÓUvÊîk×—À)-NñTÈlAפâÁѰ½ÚUÅ-Á2’>’òª#ÁbithKð˜q•Î0ç qÒn#ªâšÐÍÞØ§aÐÊ^Xbþóé.:^N S`˜&!MŠß ’ä,ƒæ:ûœC¡9™ÓlYE¥ù0™,%ßÁ• k@Õ`-ÚÀ>ƒÉaJ½Ú…?‡Qü¾|úD^º |vâC•€Êú)_Åt¸Xzƒó3ø¶Ô‰Ö `)ÐÎþ›åa§X–Ç>Èf 3 ò´}p=ÿÃ.À6Isœ<â©§µÖ–¹…ë¡ú—ªŠ»ì­Î*ˆùXð$þ 6¶¿9{E!û/. bF…Ü!¼˜—Áådˆk¤Ôõ”ç⢢>þC¢¸4z,”ÃÈwE¸ò‘‹úJ×u¥½ø[è9/ærØgˆTÏ+õÜ‚R[3&¡m@åñ5´–'‚Ð þÄ·qm©žºJ¾†Ûcma§rƒà5a.u›»œ»Ÿ„Ÿëœ,‡,m-'½%HR÷‘üè6Œù_¬7«È …Uf›P<* ËWÚ;(1+65Ã[C \龦ÞÓ›ªŽä—;ºO¸ÿÐû‡ö;‹œÙ|ˆØ`:êÖ>Ï>…ÏêšVQÖÔx½»îµW:÷ÁQ<MB³ü¬³ýPÞÞ—÷¨ I‚¼KŽ!Ät–¶BÍÑNüÔ´ÍïÎG#}uÂx>PE~¤, ;–ý}d=W¥—\µG_6{°ñ¯ÀóÀpX…Ï%-X†gBÔU´9˜lv0Ÿò_°…s؉ç]ìÛâºmñPÌá‘PÃÉzµŽë²í’üê‹:’M¯jˆ‚R jBRoo‚¦G*b¸‘׉¥”RÞÑs]Û•,%ÖÕÕu[Z†‘T‹´ä-xÐÆùÀ €›<ŽuQ°^Ç‹Ð1p aMx¾•‡Ø"Þ—AÔšÚkÜ]ñó£Þæj‘lëÕgb¡÷·2Qéê}†o€mø.ŠçÐ@±¶ÏŒ&ý™Î“œè5{j q>ƒc|´ô—z:T‚|ôR§¦y‚—Rül èã9E˜²>Ã_Í}ì>ž*ðÍ\ðƨ=ìp:Îr …h(²`U¢g˜¹~ˆsòÐ òf2 œ7êXI<ž.†ýÄ7|M gÑ"¹²ÕÙ\h\ÀWÈZv¯ÁA«¤“j%âÒ*ôô‹ŒÖš{¢r,J{›ÒÃ7¥Ë’rû;¥_ÿÝÐÝ |'䞤/’î’ºä°ç¹zUµà¹ˆ;¢=ò‚ þŸ>•…ó#?öcÕ)Êë:93”òÉcéWûóxËDÍV$""º°Ü6¼yö û\-¥#ü¶Ú pz°—¢’t ðŠv6o†æYo4´ óV´%²oc=œ\ãEÑfVQ©ŠÔ€Ol—}xÔ'£ýñ¬Dz\! ÉQ”ד®ðCø‘7ø<싃§ñ:ZCO /]Œ’PÚl2ν2ʯÂsØ1=Fë¢æá£Á"g¿°ðZñØ®ÝÀÃÁXÐÉ‹¶é¦_ ä œÎ~7"SûÕ8ÜYʬiéfUù•µ#ý®]8TþÍ9íl5GàMĆËQ_Ïf¸\^cm¥œXK¾ §Áɤ¸ïÍoÉE`ž" ÔZ¹×¹rèaphmßpÊ[ƒ…ýîÔ°Œ¾©õ¬¢v ;©®:iͶ‚+ƒ·Xº+&RÕ¯FÌõ:¬œ>ˆ¥h‹ÁºÄ—'Ôž.2ÇÓ Ÿ‘öÜø× 7;Št~I)E;½¬+à:r˱VJf!ßç¹sÆú5ôÐÿX= ¿{_d5ñ= 6Åup‰P3Tž÷0óâdEÄApZ¢–G> 70 Ý`Š9Ó[JO ÿËÝA¿Œ§§ùýy¾¤${îuUïj0懫¤;¯'·žPÿh‰–Ö†àd»´':sÊY½¾ëœ¶Îõ·C.ôm¡÷Œ…¡zÎç¾õCÉCû’3ǘo -ùÙ?Ô0ø;=/ß ¸Ì«ò3¶Ûjnïv·Üöqn§±°­Hƒƒ&ç• ¸Ž£ß°$Èß‚Šð,o!»iÆ[σ·ø;‘Õ/@)è°Ê¼½ÃÐÜQåz§|QF¢ñ¨³…¬Æeán÷$«y~B:Ø?YðÝÌ ;¬*h¤¬Éýµüîê·È3Ú*²[N%mXQð’«™ˆ‡Çx´Óš14‘Íä»HLí¤ åSø;RIJð>†'(†ZOe R¾+ßÅ'ÞXÃ6G|©zïy5ÎsÀµJ9MâQEPÌňBæ scì5kš×`Ö`°¿k×’¦*µp–ZMZ‰×“V¨‹3›ä ØKîI·É=ºÙšFËZ> g³1?뿬I"'HµEâ¤iî¶®Bj>½›w¸ëœÛÐ4¤íFa²)EŸý„²VÌúŽÊ~Ü~ÉšÀÂü?(ð"X’H+À VöRfжá߃‰í]ÿ#³ô™zQµ•'NIµõ¸2oHÏa‰ð€ç‡íé4§“SI˜,Íò:Y¬ SvyoX–¾5ÁÙÚ¡™ž\rIWGÏSí²2T…G˜Ã:E¬â¨¨Ç9zLvŠš¨D<úÐ/t ^—ÒÑX»³½Ò¹øÛ_Ûœd?qò+âH“ÅPX8 96à¸_N…ñ[墜›TUÆJõ%Ð#ñDl'ÅÅHÔ 5fsX€F‰- Èî!—¨.Öðk¨ ?À<¬€óH‰ð \@–¡ð ªÁLN…¼OQú¹yŠHµyQ ,ÝÉ*Ù/X9ž *‰E´#Ê&òññ|ØnVÓDCx çã >‡Ñ:¾ã_x[xZ|çÃéX1MéŽú‘vò#¼Ô_(‰¸$^ Ð'ü—k}¶r›—\æÙPGËíúG_¢~…›Ôíz *GÜ«^õ0Ï®Y‡ÇÐaTÿ&¥8e õ°·ä¯§oï7]¸½Ù1³„o6/=á¿Hý°WÑË]ó”ûjê£M‘:ƒóî–z²7Ú ÉýâOp•B?ÀÿøúœÕ´«[ËÍ‹N'±‘dƒ×ð6¥­+ä:(û´ ZMò©qAþ?9«ø-³Oæ»P—ô(ÿîÔ )U¿<Ò^‡=È^„6ä]͉Ú-ýHøKùª^.ê%-¢êh4 ÇùÃ&{z(Ë”Å!_pH¦Ìߘ˜ÄÚùÉ+Ï`§£=ÔI x}U|+äoú!9¿Þ"¢tX†+6"<ÚCêkã•j¢«Š–Ï5Z¦´?Á,Œ—µ&„tºÛJ¶}Àƒ¿ ²°1Ðù@u}€þPâiéYâÞ‡ò‚þçïhäûÄ–Òf|±:ßý^#j=oº·xH&ÉÕa:žKz€]d½ÚGóé­¼{µþÊbW˜Û¹{ÉMð1i+À#Y^ç$Ó¬¢u´ oÉJ4L ¸óòU¨²4‹q‹YÈ>é½H‰hkw”SÉÝ1rEL [o=QËTzË—ð,MÎÒNÄG¡uuÏ€ýÁÔÙÙi4ö]´6…›MÝH¶cÌyæt»/½iF[7AÖ…ày4tƒIáˆîNJ ¼âsD š›¶B‹þvæ¾PùÌ.i5Ùz–Ÿyåõê&O„ÝÆ¹«dúÕñë5фNj"²‚¯ÂU9—ç9X` ß¹/Û%6Á)÷³XpÍ/÷—Zx&zËr UpFúN§× 2OrªáûÊüGÙÓyu&[¿œ8«»™=ÓÍ·àWÎ[í„ëPÄ(xÖî™3ݬ/ø¥­SdÑÓZHÂóíD°R\#Ña>B­áí)§uv½P“š®ã0 W&óMü›‰/’-v=²–<%p²R׵ޔÓ]õ¤Š°«…©ô>'á1X³y IDATÕá-·R7ñÖ Û¤\ ôõJÏ-O…M\¥ñji‰„Sñ.¤‰¼pšÚbÁe'áj¡;öZ¶C?£–T“asl s®Zò6´Ãœû[ã¤ÍR_0®ãñÖ¶ÀIÌzB,t€îÏÄtÞåÀ…á!Á1ÒLû6÷‹ÖNIÖÉÖínJi娓`(„žO[Ê:r~¶¨*£Q€­#¯av–O«„ÂÀ*;Tƒéyåèeä\1+ø~eÎ5¢8…Ãz¸V‹¬ýAæ•ç“rNå˜:Ð¥‘Mø³Xê|wòQN+GªxHãØ^wEõí6t$•H7©¥˜‘‚=¡6vMÓEû:»ƒ—ÐI˜ cí…³ÐR¢ÂËN*ÿƒö‚ŠñÞ¨c?Ϊb¤MXkÏS§ï ›(EHy;Ô…¤6ö <ƒi Â)nçæÕíNÁö¦ƒ‹xæ¤÷ÀŸñõ°0Ú…Å;#B›‚sØr¾ 2Jø.ûްg¨¾/_Q¥ÙÊ*y ɯþëž@*Q(t@YÐ@aè3œ:±Dg˜ÁÆZ»àkK±šXÏí$ÞÇ̰vŠWà Ô]áJ¦ªð,¼@« ?‰¾pªk–y—tr×#Õ÷ja#àFuD5á C™L9ëa—§§%ál˜WtÇ1ÜCãb '9M6¢tNœÎsÛíœáG¦1þY”¬·Vy«¬+Óz2]•Òž8üÕGÎ&"í#´·5Íä[”2ì³Ø ïÒÉâ¨h­\Öj Ö%•ªÉ)R²äæÃHÍÁÛÓÀoðP>C{`Y¶S™!Šª°šˆvI7ùuþ]¤€«°“Xæ°u✠áQÑ€;ÑWTäw>Ðú4n¡¨š Â¶ß€J yA_ó¬ ¬€ÏÀYà)Z'*¢ù¨ ì%lîCÙqvÀÑÌmåd;Ä ¸j"\,æm`5ÔÌ-âX gÄw¼Fü±`<쬔_.U½£;®KŽÛ*a~°^ZmŒ2îh× ×M$×Q~ 7àÍ«g¨ß´áÁb=²ìPWßf'[oÈu¾:îQÇÀ§Á©™¿xêç´ é;ƒ·ºbË’®Þ7‘„æ¥Wƒ9Q2NDZFJ i ÕÄ'ÐI/ÉÉp:I#´z}UQJù¬BW“ëYÖ‘dbÞ°kj“Õy‘M#ú…ÕŒÎu3f°ÖI·3¶îÒéWS.eþH3¿| ädÍýÃXXX£ŒeíÇêqy°4Ü·%³xèyfN_Ù_ÿˆId¥RÔ}UÛI²N`)«"YÚ ¥‚4-l-øm45î*PK-,vëü:]nD p9Nwà ~—OGÙqnÚ‘$FÌÛVÇàÈ´ái»i;6ÙLJDmŠØowayè@†óÑ•8¯úÝ»8ðo »ýËÓ9òPÎ÷}rÈa*î÷¤Ã“jƒárò@ú Ë¢1ÒERY.¢tÀõ¶U& üÿ:swè•}åŶÎ(‚¾b€ˆæ;øvö½ç ¥ÛB?¬^¡¤ÀžÐ׬‹™Ãi7#¯]_J¢sygþ¯¹Ëja¥Ë¦üx•Ùd&\Â'9§¬‚öGû°9¼ÀSìºa§¢ßÞ+aŸc¶ÓÚ´=Û‘šç÷¾òY$=Æ®™:'uYòZèÆé Ü“¾Ôâ Ó‡IÝ+}à Ä&{¢3 ¶c[ñ{çù7|¼J ޹Ë)-ßòÿa º9~WÎ(½ÙDí…" ”w?µž‚äš•¡v—mÅ”ÁÊci—4˜,ÅH¸ìƒ—õ^ Àf]⬖ˆ ¬ªrÆ‚lðë Æ‹3ô>ØÁû[yáš—ÝaE]”Y鱩 Ãã‚Ûè{ý2òžàž­Pž¢ 4‡?µßÛMy+ÞFÁð)–á pTA¿ ƒIÈ@I¤¤ù‡™à̶NÌúlec·pi²S©ß@Œ{>Ø*ÊsñO\ôC^é[eÄ\9K,æ+á) ‹{ÝÀƒÎà=¸+šòƒ´?ËkuX3Ì ¢ñã©øÌý`®“f lN¸ŒÏÐub'€ÎðèŠ×£tT }EH\DP†Ø"BWÈD ð–|ðfü5ÿ̇‘ot†OŠÙàÐÙöƒM`%Eiø‰5aÛh%鮿Ë_ð>FÅ>‘>æDø"±Çó¿á/ã±ÕÐÞ*ÅDßv²…Õ9©åŽ)—ýgÞùù]Þ¡9#ðRÜ íf%ìhß0žE7E¤î«lFÓùx±ÓYïIÛoË8‘”óÞy’Ç!or±zØQZ5s¹±µò˜?ÁR¹²ºÿ­•›‹úêX¸ÏZ¦¬–NÓüˆ¡J8Jä¥} (oWNâ‰î‡®UäO4’ç|íƒfAçœCÀU«;ÝŠÖ©K<§£k‘X÷æ0ÝŽp¦Û¦R×î=£/õÆ û„‘˸ekC`Nš—U´jøžK juNYâ~¯ûàyôŸºVU} ¤ÍìZž‹€P9äßüŠ›iÀC1dYŸƒ‹}y:Î^ë¹|K ¹kšTVÍNfá&.É^iÞâý/Bм‰¹Xˆk@Ž%i¼9‰#ù2ñÌh tpm7+9’s4ÒÆSÝõÜ»ðC-\R•ÓZ¦øªŠ5k‡•Ûz*gÈ\-äš§¯ðö$È9ENx06ëS`Kp€Á¶7‘‡êqI¹Ö¸oÃ×ö·/?H*|æùª†äÂ|(z†¼ Rñ^O\eýÌE4’·q^8ë¬m왓!'àÁ‘l•õŽW6f. `¦zÇ«>ïxïï+£ËkͦkøbÎgÙøÿ¤ïJý¶p$7)ìÔ _-]…Œì‡Á:œiW2öÜÈpòdîÕgyëŸI$ú TÇÅ ¾Š)ü¤ÈÏ[²åàtæùÌ+é3Ìúþ5Ö\³" º_ tW.»€2ÕuW Z›W$ÇýÒ»ÉÛŒ<¶ù—Ù.Ô=ëOÐ@:Ì^GÇd3r†ÃR1ó°žçwøS^ÐÈ–Õ8mþ¯œÌÏŽ£Ojg¼Þ‘J+oü ì…n '’Ùè.îÅŠƒQøl_ñëb ;³¡Áà2Ú(uõHü Ö…/äø·HûñS*Ô9Ý3EÍèg¼’%“™â£«‘rÐ~Jýd ë€r‹zô"´€ø¬’Ïá­p6n ó°rFe°‡cÔD²¥4Ìž\ÜusD[4}T"E!ŽCÃÅðÜuM3ÉØæA5EI^Ÿn3áUXP”xK/†²³°)œnŸ kùS>W,¦ÿ¢^h±TZž‚Jƒò¼!Üna2’i^:œVäñ"“_Fõx3l)í€i¼JP °FœáÀÏ;OÅD°‰4A‹è–Šç‹ÀÁ4‰ó‘|"hI«9Uc|˜€Š >êòbtW~A±V ÈEkz­vÁ©t¼Òå±d½s×zϼé-–S¿èv!oÌŠ¨r)V.lnåY5íN¯^äŸcܪ7ÇD¶`þKŠÊúböÇÿÎp­Ó[ñ…á,¼[DE_‰P§à·\?c6™æÜ }tü龋 Wè“‘€÷Ðt²%ão:¿‡;¢>¨šîF§@MÇïì±+¡(·»®º»¹Dhó€`Waå¨v ^•2ÑcæSqx«ŒÎ¾§¾#Ú°ÍÊø­_³…ü=."owåŒÌ¥mQv 4‘Ä.˜É ÂŒ íÔ–K+¥ed°ußnÁ£‚§øèPºØîmák‹ÌÒ·àÿÒžpÓ~šþÊ(ú"gyFGâˆp×/µ“ˆr6ùcS2O›ñÖ2øÝ9O‡yZ‘Grò·ÈéÍзyâÂþq oMÆÅäE·¡|eeA]ÒÓq™<„.Hž¶=tØêãÄÒ—™Û­YÞ½Qý=åìˆêÞHc=ÉI–ÓO¥÷qVš»œ,¬BæòR¨ .AOÏd½±Ç“ÿÐxÔ Õ•ÇÃH’-¬™ã N÷ÏMû¾2õˆC¬8¿‰‚Å͆Š%]––ÛS‚á¦>$º¯òËÑC#.úÃ3vgýþÙãûNßgˆ8æ©™Ÿé2­Ìz?¨©NqUMí¦'{îç,*Ñmð¯m°^ˆn`*p³ö§´|voãYÖ1xARIü`]¥!öW£ /Ìïˆ$Õ/ÿr#i©ÔÛ*FSPEsA §/{8 ÃÆ{twoï°+2ýí>”ÚÍüx)rá™®­Ê.ïEy ”q?XÞ‰gS ê‚÷¹ú’$vÒl+7ä l±=ð>ó±áJ‰y£”Ðˇ1ù¶R™Vsp[Ô×¥¨-É<¹™.ç œ‘j…Žùipˆú‡¸m­‘ZɇY1ñÑþfüŽŠ,…Á¢°¼üɶébã<˜Ï ³ù0 &ˆm \A7òòb«}HOr÷ñü@>f}a9ÞY›hî°"ØØm|A$€º¼‚¹Åô€m :}(2Ljùù}nˆtxU*.~Š)ò{e¼ÞSŸÖ›”ø}öO³€])”À”Gjkt ÷‚Y¨%º„“ñ=Ü ö6[™|?å1®üú±îÁ~øÈ\þ7É+Û›­CFùPGëZ <Ááús÷%ý—'—,À=q5m­¯@Zy#Ù¿Ú——çÀÃõ>ÚlÍQ:º^ªmÔ£ 89›7^Ú SPÞã ŠK-|[à\´¯³‘vO¸²³ 5ËÈeµ¹2^·q—Âꈆñ4ÞµøM!1(U'¹äŸä½é2÷ÙsÙ*{ŸÈZÚyï®úGK?ÐvfÚñÌqÖÒ°‹h(ºàéô§óVl7ƒ)¡KÚ*wmm+.,‘0œç£ â›ðˆûp äx±™Ìoà’P×®«1z”·=¦ò[÷@é©»—´M_¦×U¯«ïpAk8ŠZÇq!\[ÖVKS»]®›J}9Ëê\ –âá`¸]"¢côœˆ%` ¬ H–ŠI’=Ò9ªÜ¦7h€²Rûù+i˜»n`"ý ï5ò€,m³J „®,4KÄ‹EZqxW¼ Ai(Êòò—ð7\ƒ®à]¸ï#Nqˆ^ŠDy5¿è4g;a ¾K%¸aw08`|ã³}ÞÁ䙌ƒÛb;6HùŽƒLÑŸOc:ÿB¸¸Ï“åÿàJ2оſÁò¸?È.’i3'™Î¤SHmì–|9n­~ê*ýƒÖ‘Þ “GŠ€“‚–ãÏ0ƒŸgAw°Xià–hËþãgíÙ+l¼iÊ I 0^M‡I<78#„*ž øì§ÍÙ]VžoaÏyQµµûòý¢¸öÅ󔬯„¶âó(Õ¸+Â×âà18,‡²³â‰ó~Õ¶’…kH7¸*OÅmáßà¢$H«i/ù³4ƒc4>³çïÑœ.ö–ªU3²ûMð-kÑnµœ¾>Ї=!ÿÊ¿ùáˆæÉ²è£Úúó°çdŸ¯ªb3ØB6¤P¿`uÿ7'` ­çjå½¯ß Û•­£7Q,â"¯ó=à»|–u0êqoË÷xC‘à´ë9—‘þà· ÜC„'RoÉN“^"tŸ®‘È'H€Ç“=M‘Fêyö’|d¡§Üì$ÚÔ )î ñ¾‡¼«!Ö «"Î6ðPo[ôÿ„ãݤ©8Üé 7áÜ;ÅK2‡Éõ•éòˆw‘®ä_×6u2]l'ãYŠê)â}ŸcDLBdÁà,Ñgé·Ó²ÛA” :“SR"úÈŠ°¤N2çû–ú1ø‘MŠŸü«Íur¤ ²ç<ªmÍ zFט¦tTš|‡^ª“ÄU2C>㊱'I9ÍFY^–}Ç^Þ—qzP+&GÀ(ðMíi~÷1x”ïe©`8 3oeüA_L&Ú^g*npê']Rú…à$.*úƒèŽ.Z ¸ümè§Ì?i _â5Å üé«OÊÕÂ,§ñêx`Γ(K5¯ë§ÞV¤þOŒ¥Åù8bjfec¯]Äœmv´'™-ÍŽþ“²[ÚæÞªtÂ3ÜL¼BHCé4|Ë)>÷T¥½;]™}`Ž6jvÿ&w(ü?–àË÷û=¹- å']f6Ú¹B™JE'F“iÎI#§ùÚªšÈïˆ×r:?ÁOØÅùMXMt'Ð.ã´Ëy¥hVŸ¯Ñb4\‚o¢WLEÄã/ó¢sÒ8èÛ›ÚÇyÁ¼ûœ:¢ŒZoûátö?þT>MþÀÄ>eŽwˆ§–tŸP>€PM©¢ƒæÃ6ÜÒ¬5`Ѝ2•ÚüÈ[&º êÍ"'Db_œÜYµµ4õ´d ·@$¬Š²¯È:ãdYmåîx¥—rÌÐÆ{ï¹Fé: ¯f,6ùŠ:Š5€¹¹ÔVë¥o*ž&TqUè<¿Q'm.L 6 ¤ð¼ÊryŸø„‹xî³Ñi°5U|#mímì*/&;¨iú‹üD‚‘`µ¨N‚^b3¬$O"­ÐA\¬á‘¨?}0ª€¸‡ãô(¨_°m`^ˆŠ½ð iÉ6ˆ¡ /Zƒ.#jñwt+œ ò±r¼ï SeÙZ Œã¥žà>#Öÿ;+V,µF°5Òl+ŸÔ/´Nä[#¿1úñÝf_ræá³ÄŸð1h §Š¡°¢ xÎ'òh°C,„šSØ)·âž î,g…¬Ö¬/>&7—Lð¤€4œ] ’Á'˜$÷€›árµAÐÞ.F'Ú2>/ƒ_ÙrÖžEÁí4a;yÌÊt8ÎÇJ» >îÀ2Üïìc/ùgú’Ÿ…¨Ê#Q9¸fSþcùëv:Å{Y·ÁVç&="“§®xò?öÍn€(ã`2¾ °*ü5ø"ª è*BJà/ð-¨ ºÁ2¨\‚t‘¾’â%|†C|uh±Õ«6¯L Ž3nRúd«“§az÷ £ ´°"ßâ^ö»–s<½Ãd¼O>š´¶T£B7Š05·ú/omÞ–O'qý¾ôR±$Ú”øÐT\Iê©Ï¸ñ<²[ÄFWÍ@V(Í O¯8–•ÓIä/}¯ZQmyÖ: êØJØJåcèÿ÷àD¸YÔ UÀEÑdOG­ººQ.îù®¼†'y³PIeÌñFGððF±õ—Ädå (âšl‡ð£tÀŽv Øw¬éŽZŠ$4Æhíå}ê+5^[¦ì ¿ïÞªüø}L”1w§M0Ú¹ÍKÌmßûÄvRÌÍœ×îz.¡.4_F·ŠÞºJçMêüù{þ)ò`¶²¼Ë 1?½I>™1ÁN?ÉXi‹çDZÙù¿f[ø¯ä¦1fu»¤7»(«Z…c²;^–£WNÍ"K‚Æ‘"ø_ýÛ•©öžŽª¨¶È¨˜ñûw>‘Óùú{G ÁºËMOrÞGùÇ;?hŽÌ+ä&Í­ùHdøÐȼú=Œ¹ÕLÛ#ýPGªãĽß™_Rï/‡š]C)Á<"œ}ÁDÔ¯“ŸÈqʽ‘>ËOˆ\êI–輻´;žÕêEEÖNË«ÑV j¬Ý޾ ²Y'I™ê üðÿa<óõÊÍ ¡“Ò#i¶{©ç¾úØóÈýœT#P¤r‹¼áK\s•h” WOAÊ#¥¾ëé qa'õH!eŸüÜf]ÄL¸ƒUoaRÓS">dþ0–šåÌœt$JÑ̈+úÞo¶“:U¯(ç¤Ë˜£â`;oÀ:Wíüàœb¯áy‘K@àÃD g ˆ5Ÿ²cNc0 Te÷d/îÆÿ“öÈY¸…“Í®'а ]F‘±ø—0¿!…yx,}ò‹U¼>é„îŠkR"9 ¤ß’,ÍBÅ‘碂  ¬ŽÀ|`3Ü~…´1«Ç øu”ká$䚎ûp7,i%B™åŒ¡e¡·Al´æ»À}i­¼Q )at ¬2ë“Qð sUyH&ȺBä#Ê@ðNP¸3´š–ç'èxØCV™C<ÄH4³±WÁÁÊÆrñ 4´»‡¥¹ÊÊ•aÒ?¼«œ"ûH<ƒ¢­•¾§YÁ6ƒªp et'õ™ Œ8ã/G濙݃FÈçÀPzX\þS|fŒ$?q98N]¨ïPè"xT`n8Bœgça‚(n9¤›´s— _ñBïçÞ©ÎÆëÀg§ç›ú^ÞÛ•A©)do`tlêw†8ºsµDP;ÈZ³â%‡·Ë‰æqAþCôD=Âç4–+Z‰(22ÔÇù7 5p Ù+ÖàÎÉTù€{2’¦}FQs IDATãWáœ?4ÙPiš¸ üØà=áPRP:Aò[˜Ô…ûÄ °G,¤øX^.âÇðWÞÔi(|Mˇãèìð‹ðùh§á-à#ß*~€¤È‹Ï)u¤%¸nƒ: …°!-Çò£càhédƒx Ýc… ¾…žPÌj£¬ÞVÇÀ_¾@æ;sTðœUV^"·TkªC¡­óÄ¡ â½£Ÿ0žÙeprA 8§(Õ‰€òaf&«g½3²%ü ?“V”^D+[Q!O}wû‰r1+“$e")’²9¤l¬¼$µ\‹ÝuB»„w×µd«'à)®Uu ÒÓ¸§Ò‰±ëòâVrȵÐs!Já"dŠgCÔ÷ãìw£ÛG oë,‡Ò+R·gÑþh‘4Õ¼t>ئe#M•+Ö+Å<ý­~*àó7ñʼé<ŠßÛPkEÞ¹ƒZ ­ƒs_ö\Ìý+´–«6o¬~Âmí³ê:¢ŒOÉ“Ðài^ñÕK=Þ DPX-èT”ø¨m!YîÝî7îÓ®mX“‡pv´ŒM¿É`òŒ•Ûí‚ötQU^9´]ÊòÊ9HI^)Ÿiv¼wkÖ\TI¶z1·ÈfOcQP„&‡‡‘Ýj g¦¶Û§®¦‡É/ü¯‚“Dì tƒ7ÁSø‚þ‡g¢4¥§2îV~jËIuêWökWÅxù\zy’|Š‹vvYÓk¥Vÿ]^Ÿe<ЯƒGè==ä¨àÉPëS]‘RcûÌ$ôIFÙ^QÜÇù¬±ì¨9愉ö ÑC"ÖϸoÇŠ¦¾†¾Û™.9K´3‰Ò@i €P1štNÏç+íí`=°rêEµ|$“~R2éIR¾á1f>PNŽg/àfp—S\ )hZ$¦Ã…àˆྼ)9¸¯‚xÙHla¢ªøƒ¯“Bd‰¬.ÃPš¹Çzäæ‘jo0ãŒ'vάfÆß–“EعÈNú/ºÍ—ZÑ`ºüÆoÒ×è+Y¨=ÒºkÛx*ûÆçëkì èe`<Ø%«‚ê ÆeÙþyþ»þ±iKõwþM)¥¤n©¾IvQ{ž??êLN®¶®ßóñöVNµÁÜN¢áL2•þEVë½õ¿EW_¯¬òœfi#—‘¬$+ cE„u(Æç,-ó5ÊG«jyÀ;<LÅMÐÑŠÞ†™ /Dò¹ÕNÉGOâñ!ÈÝ/lùª/€p¥”žÚerÚQUMÇìñ¬°\æmo·¦Šo¥½ $‡ÛOœUü†½ÌÑÚˆGÈ=ÂÌ„—B[êºõÛù—-Rèdÿ|«2Þ?ÌέAõ&[!»/b/ÒU6ƒT쇅å|°oé0™÷’­a]œˆÞ¡gÎXí$:'ãÍÅ 3—òœnŸÕZfã¯X}³£·U`}Få4¸Üš¬ÁeA£®oÏ+3ž÷²KÂÓÆû¿à‚ŽyhªqNÁå¢<ß vi»_!ÛÙ1r¼ùÞŽ†.YËfÿ°ŸX_üeŒs—QÎj ”å º±ížë§ß]é该ôl îÙÒ#[ˆ$ù5eM5‘ÎM”ÃäŒÌc¶[ƒo²1Yh3Û£ö^~F“ x¬ø-VŠúbGŽ—íáxWôox+» ¹ ÎTž@û@Cu~Ü–ÿ‹àÚ@³ö ÖäZÍ*ð]¨œx/n ì¼Ÿ¬[r¿/K‚¦pžŽ8NÅ¥­ò¼;oÁŠkâ=[oßåS ¡°©…¼xù@Ý`cn—eµíb<(l]'9IÐÕÚiädÈ c’fúCe`3[l¶sÜMïû#̼ܶ›.³VòÁæÊM|UÓþjÍ‘ñ<•5µÖ˜'­ÝöX2™Þ)V;‰Õç«´î¬]lÜ2Røï°ÀÄ ¥7öEè»å«+j®·e ºÑx¥¼ÐYjé-™^5ë´rB)ŽÙí¾®Þ8Z‰ÎSŸ’…7áŽâà…«/º„²ÁQ¸¢6Õý5|=MÖ{šƒ€›} ”M ÒÁ,k!Ë»+›áÖ”$w§}ʦ)!ïÝ«Áç#õAŠ}Ýa{®àœ$J‰ ·y¬]q:ø ,g–æïÉ~cD <}–µ‹oF‡L?ï‹òèŸInG8Ï…ž:7‰>¼†:ÞØ ¦Àr‚},¡}e4‚ò èÈ.š“øN¹%¸GoÆÖÓ<`@€%os(."ʰü2'©B^ÉhA™uÒÉYˆàc¹#¨Z~PM…}åq\Cn™ˆ§±®Yjj~ÂWßoø‡Ö¨Ûy xŽ.\$£ ¼n¶gÕ3¦‹v𹹪HËŸ¦uàm5¬åC£YSûoÒWÆýÁp-²˜C”OÌFb²q’>e+Vt&ËÄ|Ò OF¹B ÔK)‰ýàØWË-<Ͳ#lÁGÊm²VË– 8¼&&ÚçPiR„އӸ®±~Öf¶L&ðZjX – ñ?ñÞþWþ–ãámhÁx¾Ž×gÌp(ÜM{s&<%_ñp\Á Ù@t‘¸I¼·V Ââ„Ý[y"p~ÊL9Wa§ù*Ù[Ý«ux¼Þ#°J|àÍùXT ‡6\Ëg -ø*Mæ à¹\ßÛàŽà®Ü*FÐhQ/QJÂR`<+},^îq@Ê6r©:õÁeQÛœno×a10Yh,"±rˆ–šqÎotœ F‰Ã|…˜IžÃš¸…u EÈi²5ó°HÞt¦!`¬ v0®Œ—ŸÑcSÐ æâd­3åË»ÏÙ2feÛëK`›<Okx•6qœ ™ G™]Xí¬¶Y= r‹éöÿÞÈÞ#Úâ%t ùŽMBIr%ƒ,·<ŽfØMP^§uÉhø8`O5Û€Ýv/û!¾«tÆ9žÕŽ›ì7™ ÁŸ ¬°‹úýœu³óø*Êþv›@Qðž×·òZU¬XBg’çi…Þ‘)È‹^б" V‚ùùÙ¬g•d‚ÖÀÉp´ ¡4­&_ÂÞ9MÏ=ÙJ®G‰è¥TÁ8\‚ÐÜü´,ñ‰æC¥ÑYeÔÐ u•2Rp6!ÛxAGyG‚£o o]Á`ë’].ûä·Q®u!ǹ®@•Í"·8onç)l7MQ‰RFÍïœBïÂvNN ŒÉÂÁ«FCýš5 ¯c7ù{5슷€€+Ÿ¾‚ý2BXC‹é'…â …ß3r†u{QÐvèŸh·œ?”wŽXñ‰—qŸW}!%”©ÎAÚ3\T-6ˆÛ¬†‰.À³ÐyÅÑE$Xåyˆ>¶ÝÆy9NfÓ+XMŒrÞ5ÎÖxCHíˆÅÙDÏŧEÿSÓêÇà=`1?+/£Šä=Ù‹¢@7û‚Ý ÿD“a²SÐMî4cç°º[æEŠžÇn‡àD+ÚßnÎvZ§Þ¬ïY…@–Ûÿ Ÿ¥}D£èjø6ø/íãŠ'+—é.ÜTyg#/]© Ã=j6õTjBº*_´÷Ú)-I{%ÏÉ¿äæ7âü%`9ð[üv"wãÐͪEÒ¼Á þÃ;ÉôsŬ[ÜFÓÑorÛ½¿qôæ)»(æá_â}oLÐÇòwŒr€NãÃRý®¡‘aGÃöfwåú¬æ!mP_¶ÀòJX]‚qit\“ZQtEƒ[”cä-íB×â$ª²}<§°,…Mã¬!fLp“iogéÇÕÐÚêEå•«´yÜhüJ5Üï"ð*¦kú8»+ü–ÒWYEï£3h$ÙÉï‰æb›Íûš;˜dE-Û²ÿàäÌ¥¾«®ßçÛüF¶)3Èÿ´.ô§–â ù˜7Où ÙQδ3­<ü“ƒwJ°&ЦK©“Nu.T'“Ó´,.€Êã~p¾¢ÐWØ%x–YÅGZ&¸ÞŸéûíŸðÞËÄýÈhdG}”}ŽZWíPÔ!á“QF™À ÿ{ƒ±el#¨ÎzZ—T Uª+{È%^¬#‚\tPoy.³°79Ç?ð¢?z…†ñíQsMÍÓØQ;lvø#™‡”+¬›Á?º“gÊØ_ôýq~X•Þ•.4†æPKjkÔÞ²¼^ŠXèM]+Ô.¾Fk‚EùMw³@>{ºzS¯ 2§ø*0ÁùRöýÕ¿ð Ù‰šà.<¯J]¦ˆAô¦ðÈJ|£Ý‘÷4Ë[=`¸^%øP/‡Ø[A¦Ì²‹ŠÃr7j¢ ±šÙ?x_gò¯9å—½ùqý/E‚ϲµ Ó~ >úÜâ›QÉHè=½‚¯ºÞ©¬…o]ÖÿÅL¸m-ÀÓ7zSõLcLðïœ7à_’uĨ&wcgÄØl¹Âó’;Sýj5‘¼´5]”å=YkàFÕñ@9ØŠ×W™ÌqYì9þóªï¯³Ê ¿?Äzmå±GdÙ]†8–+ËÅMðM@ëX]ç`:D«ÉoÐAØ]€‡8ÆuÙ]¶ÝŽ„CÁ+Zf ^Ä;Á æ09›_ÃŒGÖ@{‹ÝS,åÏà2T=ÏCg€„ p”ðòVr-KÓÉ!å yMšYßÌÍ ûiÞâLçßA(nF>ã ðELô7d%”ud]A-±ß­¬j2 à­à<´ Ç[ðdLa#8‹œ³LøS'‰-v­·¬-s(—…S.“Çà4–ª:?ƒ…Ð}@ ¸*jŸe}€ÌGgPEÙ­ýù%þ}•ñ—¾É¸f=µ¿óLvÝö¡p¹ì _Ègà<ç°3œ/.‚7°Œ¸Îˆ0QQ6CÇá$‰]°¨]Ÿ¯X^V œ2›É6Ƴ©£ž÷¢o'‡ >O<ë(²À0Ø6ÁsŒ(ë~ËkÑ&ª•Ì2­¢&¨l¶æYHÿw;o3<ÆxÖÞ>lÍ+psÚRq„u—ÔŽF‰êãéȶ[ÒÎ…Œe8s”q/˜d^Úþ öiS±Åü»LÞ+é®ÿp?üNH®ÃN.M—Ñ.0Åb¿€à½ü,.‰- ˆ¬ˆÊ’^Ø©<ÔÊðN"MEßD/ë ¥ÈkðþUèEZˆÆ(µrªßqßùI:Á8y‰gGò)ì œ ©…~ó¼êò~_e.9ÄÆ$ÿþ“ç2Îa?Ƹ2éIV“ífU^Äê¿ÂˆjE•á4‡k–Ë§Ž‡sÁn{¯)ÆÊlÆû@–Í@þl*ëg¾ö_NËꑙêèÄší}c|3å ÛÃ.ëÔ»÷×jöKŽ p’¦t"»p ˆ&™Â©á]SC|jmš ÷° ÷Ë»¬ û|”D,¸!Ï‚Íh1P}Ÿ¹ ä{Iք̼W3z£OpCj³µW>ç6¥¡P9iCNÁ0 B)`>‡F¢›b§8ϾÂ,y´•|@)¤,é¥)Ê[œOmŠÛóãÖ¨9K'¹ñyr+ ôeÆ_Ö«=»G'¹§‡ÌÓ¦;^hͰ¢ÔÖÚÒÝ/ÔU6$Ýñ””¦!Ú‘`@sý¡«pÿÞÀ  “=K”·bD»BV}RŒ_Î\îNtQyœ´ÿÁ¼Ä¡šø–¸,N¹«n~iµ4’ØÉ”‹Þ!ÁŸþãph˜mU²}"ÕœŸæÍ,'NÚ³ío´˜rL—ónî†ÙVÂûÊ6Uu÷rèO°Hœ4ër`^Ãú;èÌZ(–³â WsÎ#ŽiÎ+´݈5Ø—è4¯®Ùßù1÷_e“n}‡=˜Í%3•­Õr˜Ý\¬Áð Š_ÿabXÖ®Ì6iGã›<óœåË”V¨€,‡ˆa¨X.^c—œ +Êõ¼šxÖZç¬û<ÈÕÌÒÁyÖ Y÷”ËÝÌY×H'ÞNÔ7gÙ¦pò ÁejNµ0+®Ä9jÈtÚ_þŒäÕÌ1bsÃòZS½”È­žrœPW…üÈuÁý4q+¥€ 1Óœ…šò |0Í&SØ~ k2•Á“­…˜ ¿Õýò†û)ÿàn` š+ªC^5kš±pOúçôrÆÂÀ%¯ì¿X¾+÷ŠÚ¬¿Îø&FágêXÚQxíëtJa5¿Ý ”Å+Å&»>+ÌÆÃÅü3Þ&ÿ;ÙV‰FB|$ áà4œ>+{Õ;ô‘±ÞدoÙ\TöÆp<9 [/fMÙqÜ(n]“ äS-  cmð v´D9Oæ€SQOÑ%éÖRôZ¶³yQ3R è—åé ^B”³#ÀI|&àod9¼?(͵dÙP|ƒ¢(lÀŽÎGqP“eð*ù‰¿AXÔíbf^…ýZmü_À2åÔ'Ñ ¥ba‡(ÊY»ø[iTA;•kr´Švˆaü¾ êâjô90Å9œ—[d{Ñ®o9€ÅªËãb7-­¶•PŒ'/”U°ŽuŒ0¬íil’4®—·Ý&ê'"ÉÖÌïf›yÊeëC–e‹ëb;$Au¦ýN›‹ò+eÜ%é¸G‘öWó_g1tB*PÁ=ÉQWé¡:ÉÜ\¶óÐrô/i(‡¡F.ìh«æn‹°r I£wØU\ö¶¢/›ÎŽ›}íyÁú4}=üŽœÚ3«*‹;‹+©ô5dÿHz¢¼t0Ç]ùqKµîeŽÏJð EÁMí¡b/m©DƒÓb Ü sXɬȯ—W­ý…ÑH|ÞÎÃüvà—CyMü/L”ãe_ÖŒåaÖ smKºàMêF÷Fr?3³›DD‹Yoù#¶Bõ* Uˆ| ã1Ç4žTGÓø.ÐÄÄ× Ï«þ0Zy”+ÆöÂäbœþO Nœ³ŠÙ r&ÚŽ€²8Z >ÃâÖ}ŒãÈ8ûSV¬±ˆ\ð|’Éž[ZOTgˆ^þ~úÌ`y^D£¤cDw4™t€ùâûù6˜„bÔþ² ÌCþ©p1/K¦;Ç¡.ð+Žè^ãÏçûøËþ:œÍå‡E×”«Jg60Ïpg~g Ñœ¨6øŸL´ïš•Áþ¥äàÕD+»ƒ²HÍ_•ŒïˆúìoÒP-(}‡Þ¾¿ßßÙx£ï “}`,>ª¤»^8…vó”rõ‘ÅI<®>t&º– PpnÉÂÞ³üXª/m±ØK”’Šïʳ`­¨&в?â D~ÅN­—ºÕÑÀåuPu0fE5•<2ÄùÙÑѹÆf´Ëqì »­WH›^Îöó¦ä­lωY•§X¥QWºoPiëÔJä_ç ×Ig ’OszžÓ/$ _´…yÞ¾Bwãdr\¯&ÞÁ]ú×àFᓃéSs.y®Ž#³”%ô°c£—vM‰caweÛ¦¬D/¬£zˆ·÷èü5­X¶OĈ\vií³¬«»¸†¦àù t7zã/4ÉÕ=T&ãÔî7@žWI¤“#NIÇMq БTdº¹YügÞ±­üVtæËú„ÑöÚ,X<Æ%ìŸvë·ÕÜ/–Z9ìö¢•çCÄ.u¤³qا°·núsvÐlhÎãkÀl,ðÿPŒµÐþn§Ú/Œ­†®§Ë¾VqÑE 0¾ m#§eß‘ó¸üƒ2àÊ Çû63]–•¥WÔa9„$ÕhÍ/ÃDˆÕe Ûb%÷ò¢–,baœu—­–‡Ao°W”‘2 üTNk—µ8 a]š–Ëü²Ÿÿ‚ÿ©·9›oe° ö4üÐ#<£ÚD¢…n•>pqÔ‡ñ¶ÆH‘}Œº¢€c¢¢Ï€ßX6Xo¶Ë‚¶,/ʳ£1â©Ø ú û°®?ÈQ`2ìÉ'Šc0^ô/‘ƒe[ÞöGÇï]õ¡Gͦ™Í¿Íû6.묪DEü»Œ0«[dU\ïÕ¿éãô¢âZ\Ëî;bF¢£«:*ÁúvÖA¾vVˆªŸóµ¯Uê(ž/Ww: ¿ü¶gPÝCÔ‹z‹X¶K –ó'2n‘Þn¬åVG-ù v¥®Ò›Þ¤èªýB_ÆÑ¼}–‡fÙH®C ÿ r†Y‹Ï'¬'VY3¿ï–¥4l¶ LðzyH¼½ñPÔ~±'Û•Á†?køRz$”Àkr©£{DC:TtÍ=²‘€þ—x0,jƒ ˆ;EÙ¤Ê"°–üK–S«âJ(ŽWBCD”ŒE‡äm±M¾…Wi®÷ÓÁ@:Þ„¦Ùšôî´½®°ì4N¡çè%q‰gÌâ“P Õ +Çqa´“ÿ'B`þš'ò»x£ZïFûe.á… Ð'ÎÉDð…½—ïq< Ö…pòLö,%»Êþàï´j'Áš°¬jâ×2§zC"¡5ð<˜i7ÅdWtÌÄŒä–çpu2\nRcƒGñ3¥¾ ¦Z-IY³ŠUŸ…¶| dêŸv IDAT¤ÜNRAIØ4’žå(SÑô,BD‚\ÌJˆb¢*0qÀ¢šØ, Õ~€ÊèÅX*-™žù¹‰Y&{àw[g5e7¬ijÇpŠmŽmƽ¢=ò {Ϭ:¬¿’Ïó̳ ,¶ËðÃÓ´•h¦êìü)û›ïóæóîâ-ØrÔÕ£›Ç­0£ŸvQùðð2îØˆòx9µè þÅ3o,oµ öõIÿm/!ÍÀÞ@ªïú'¤Š£*èÌRÞØOéT<D ,«ÃÍÁæÿ¨à›àßrpÆz ¦«y¦ =ìŽsÜ'²þ`å”äa÷äHøŒAØÞË3Ôd¯f¢ò å€wÖ¡¼0ˆN‘ZJ.Ù†# ÎåbŸí¶ªó\"S~…ïÕ6Êà5qòdk>ˆGDþ½B«EÝSå–ð5ÚåŽ(}üÙÓûBÙVßC뙨(«£ŠÎI¡ñá£ÕŽhµ¥1/C¦¼ ÎõÖϼ‰{hóI(ím\Žæ ¤ì¤îÁ Ì'YƒyN«8Ú• ýTû¨!| „ßûú°=°ï¡1Jÿ™[!O쿇?«ò ´«QH35ÖÕÒ•ÓUÚ®ÌGßÀ«¾5CüèÁŸ~Úr«3IÚ‰OpÜ.?ƒÁL’jx•ˆ=åL)ÙGn)³Ðu™ìR«ñÁ|ªù#«úŸÑ^ м;û¡xZ)ZÊ(ÿ§þPjû®È½î~ÖI«„8N‡KaDáÁ°¿½ÊNämD%¶,±vª£ñ!¾总ð s!œöõ…¹°[#Ï ¡œ¨«m› ÅdÔÖ:Ìú*Qô(y@½¢*•g@œÁSÅ/ø]xø{´3 ç„¿p[µ]Ä*}IÞ)¹œ±ur&äñd¯f{X=+„÷’ÈQ¡{C:ˆwé eão—·ØÛÑßÓ­ñÞ¹Y€¥$Á8 +ƒr£¬ "ày´RÐj´FÖ·ÚXµ’ßÉÝ(:(::a|" òâ|ÝïÁ' š¢ Ë&^_2Qî‘VOYˆ*ÁÞâ¾çº¦o± 7l"°ç˜ ÿa/a,>¬þOÝÀ‹›£ôtòƒ¼â–è Wp7ëË[£éò¢ˆ¥`u0@Œ†)d­V vÊ&¶Ô’é þ?í¬©µdÙ­­Tƒ-ÁXý-¾ÃshT@.x/²RÍ÷öLý¸ÕX\zÌ“Mé¨ÁWÅh»‰¼ç,®\ßÉ,N¢ü5AªúÂUpùÙØh3ŽH?ïýûaæŠà‚¬ÙYcõ}¾ÈÀ&V‹Í/èPl¢[ðÊ ¾ÊQ@…[A”Ôåx[lZ£-QÂ¥ÄÀíÕŽâ=<¯ÄË<èX–ðé¸3ýƒß¹V¢'¤+• Š…÷p~Ô|Þ?hm?•Mp!¼”~dãóf„/´^º 9c¬ê{Gw%›\ƒ £F1"¾’ÙÙ“ÂÚk%Ñ\˜G{ÏŠnJ’¾ßþ‚Në‹,¥$´xIÛS>ª@Ô]òŽÔM3ަïµ_›ó²0~F–’ÅhˆÌöTGöTU-@…Y)|Žë·ØáhªUW<2ä„…Í~f-Þ"ýï€Ã¾ê¿í]Ï¿kmC<©“\ýa'åQÄ/x÷Ä5•ËštS~‰²oêWØ~ùDýNºá2V ¡ñåÇ­á s MVú©9ñyضæÛYn~êg ñ?²b­3ædl â,'™B)UÐ7Áåhþ%³@`˜·ƒÅUy¿C¿µKÞFÁ®lÂïG?>ÿÄ~ƒìλΡ]Ã*ª;•”Ó2ö¶O¹û§OD®ÈvQ³­¢oÅ–£WÕn,2|®&Ù¯Ð+®¾ª óâ3ò7K†d–xlt>âñr’"wó6Þ.Z7µ7²ôÓAêüéæ«bœ÷MÎ*c½–õÀ0õ„û†ûØ© å•´~t0©¡®Òž¹upu&™i,ýfÆ»@4ðgy­ùBëxÞEM‰Jõ\yš™Þ/«CúQߣŒÄÌm²Šh‹ŠÃ-ä ¨Šµþ°·ÓI;h6rŠzäpV•Ì,ïÝ`ŒÁ)àR±^ž‚&‰¡+yjŠFâ>9[­*åOùTžÐ}%n£¢ ФIŽªj~²GÊÛ¼jp‹ÿ~,×Ì›õ8ãMV¼¹(ØÀ{—Ìÿ9.…M‹èã8®MQ6«‘Ú)\8,ÖåÑŠ;?(^âUçç¯ð ‘Î\­ñhªŠ3© }õ•æ7ß|3¿o{°| ‘¯BÐ%+À…¢ƒ»KÄöðÚ8-Í]‹$ãÉÊQu«óŽ#‡ÖMݤ2k ;fÔçÃ’·ê›†tò’£2ä4Ý,Ò –’ä ^ƒFáS°Š³ íépáhî#MÙŒ6äp²z6¥ÏÐRÚBXÍá­Ø-‚¬À¹ç]Ý©ZN'–3Û³ùÛ)b0ØœØO«íie„ºÚ1J­Æ¹ŽÒ)˜K‡Ì`Aë] ÷9Ójx»šMüÓטg‚ ©á‚ÂYB#š2V=ÍvZ­ÌvÉàQßDž›!éÌÉ_Û7Iú›LrõöD»9\Nð~ð)_ÇÊ€0-gµÌX1¦èÑâ/Є¼tÆá·ô IðüjÌÏAe#¿¾Ê:¢ßœKY_çqÏ*‡ÛõV]æ +1étªó XÝoĘ/@cp*Zw»¾¨‡2@ú%ƒüpZ.4pžE›ÁfÖTÄ‚%rŠ,ÍëØ»SºüaÆkéý™’ïǨw¾÷Û~Ƨ¶²DFbF?ß *#í‹v¼,·ðÛЃ¼¦)ïÀIð(ûWLý­!"D¢¥ì¸ØF×ÃZŠ­þ`DÜ.-Ù nžÇÜ ïâ¡Ø/»ˆÂp¾­œ³D#âãõeitšýëˆÕâ ȉnÃy䬚CüE¶KÉ­0Üÿn­1Ø£@ºû¡c¼²Që£Q&nÊ{G~ó‡è)“@Á´kæÁ￾|­iÜ1¡•ÒmtžÇe Âf NŽƒ“á9K–…y#ÙÌn«Å¢×ÖߎyŽæ°¹ã}/ãÔY¤1HŸ¬wV‚¬þ óö2|.âÄ-†fñó•5ÈüÌ›1‡UÈž([Ã_Æx0 áß‘…΢‰È·à<"d–cºâæéüó IPeè=ÝøÇ_% ³¦x‹óGv¥À ÷8— ‹áÁÚÅÈ0ð ÔÅj>$ˆ÷²9<š ‡rx#LvüÊ[Ïè5T 4Ba8Ô.¤";dJÔl`·¾üçœdüg3’íÁúIÿN± 4OâitT¶*–i+Èêò“Æj?O‹Iûõ_ÖRYÿ¥÷ƒåbpGë ”r¾óTVÂcT‘é"ïç¬}vOqÃ(Àw£±ŽŠV)`‰{¢(ÔP<ï ®ó¾t½H:~ÃE"/™iU³sYs¬Æ£? ¿Ë=ò)}aÏá¿QAüÈõB¼äkä¥%8¬%ZÝÍ’f9ЖT¼m@=‘Ô&ke¢h- Û/y|ðºìnvá ÿ${£Á²ïOUÍ:îÞ\œžÇ_À·È\™µWœ³[ùÈ¥ªŽÚ %2‡h'¯ÊA0`ŸEåp{ð 솿AQîfp^ð5öÄGÈßfy0ìÉø¸è&Çó‘út¥ò >³¶×¤$n¡ýi<Ÿæå'ÇkÑB´µ—ÇP´|” ÀyTÞA=`PÆúÜ:‰ÁôæYKä>µûWݲæ{ƆÿÒâ— bp‰—CÓf³Ùæd¨¡ 8QÖ„'D1’N¤Od°ÖÐMÀYá#ÉÈ!F³Íp0ã&ËcßIÙ`“•ÔŒ Æ®:(GÀwe…Òð&ú•æ f7σòÿ ÉÕ¤i"/ÉËÐ…K£Õv(…J¤hÃË២/"£à2XE½b¡]_?FÑÁq™!oÓæ²1*{H…/†‡àAÐ|ãÓìÙfÔ¦ª*>H:ÈíEsÙ‰ é{ègÀð:eÞǵA¸ 4Æ v?Bó  ¸g†TSö(}èY¼Í«DíýÑIvÓîÍ’Ašä.À°ãwâ ¼|o™“­n|Mê>9~90_¹À\ ÿ€Cia±¾äù¤_þïá0žshÀì¤\†{“ÿsÒ%‚ƒ¢ÛŠÖñú¬(P”ëÊ rTª(E f\NœŽfò#â…ˆcýð@z\M¶ˆþ0t@ÛeO^Œµ…É ë(`ô•­´êhÚ骪×c.þþDo=EßøñÒêe­¶¿J¿»°§–>±SëÕ(zôש÷”÷¸ü!}öZy@_à¯i @‰î™J¨Á\|Oý™õÐ.ü &Á0ºaC|ÆñŽ6qt,Õ°)ò)ªXÅ}` :ˆf4 ‹Yl7´Šž±àJâ·Í}Mx#{ƒu7Ir“7¤Åá ú]>¦¹Èmù \/hý~ºR<û´æü¹Ý/°ÞÝl—œ)˜çP4|EbÐUÊ÷Ò8¡-–œöÕzà¾ÄŠææLq ŸÛäðÃ*LÇ“J  úì˜@ï *@ZßI#ü ×ÕܵÈkj°¢qͼkœÕ§Ð¦Ž•N¯çfN·Û ä<ªœcô^Ê@íḫú”Tq <‚”•dMÉiêQ"H8‡³Ñ¿j§ë& Ô£qîZ¼¯ôE%paºE¤Ú;”+x;+t¥Èž‡SPI9Úþ¬¯ŒP¾+eeNò¼C!¤%(NÆ(›@ ¼Î¨âV>†=»åWøCHPnxİ‚©þ²øúÁ:F”'êq­‰ûOx=§ñQ@Ÿiºi];ÓjÌLVë?dUБ´Rky\ Q¢Ô¼ä7Yƒ'Àšâ‘—Á…>€%xx.†‹¯²¶ü>Ø+ÅQÐ/Ùc$?lºým²dÞ „+™˜a: Ìw:ù5{’ï‹r ý„öŸ¨75m¬ëgHo±ÑÝ™½#d2¸Œú“ü¼‡ ¶Ã[*SOk£?· 1 ÄH¿6/dIx‹Èñˆº•èßô«yÑ¿ èò^~½—’1Á¢¼3O²¦AM†+ ÀT¹\‚  ¬¦u!µ•Eʤ·ñr(KÑUd*ß­#æ 2ì⻦œFéð ¾Ú5² ß%üöL®ò|‡$’Áo°ŒA;ð&%” Ö’»¡׃ëÈT˜Z«çä$ƒòóyv-ô©×ÂÊÊb¦XßPÛÏ/Ëè4¹n'ÚÉv–“üc'›~+Tÿ‰²ÁL~ÇŠ¢Ep\)O+‘žOã5aå+0Á>&îð"öh`¤››7ü×ðÿäl™×^Å]ÀëA+¼ÔãÝ!£ûOœ>vJm1_kW¡Å³‡–Ítê­Ÿ™WÓiµœiVz´Ã¿ï•…`¼ÚåcáêÇ;”®öóôP®9ÂC‹£)8'ô¶êFu<†oâtGvå‰rÁ<, LdLìÅwë„>)ðZÈkÊerrà˜ÙÒ8®³Fñ” ¯Û|_“vßü®uÿsÂ{+«–É¡j$ Âóªmy7´B|‡•ð}ôŠ×‡Uñ"˜¬—µdmxF\´ýü Omà „à=l9Ç€«à<*ÿ!ðO}d »aeÑ7¤pƒòr/ª¨ÜuNA‹ÑTÚNæ“%Hg0öÁ'Å6tÔÅQYS®ƒÀO´WÜ@_•‘xg¨…¬ Wã[ÌšbŽyÙàõý©“ž‡çþÝXÜùÖ:\æVó•æ½´J½»p©hd'Òá‚»DwX¥sé‰þ DaûdïdXo° bã•"$0»¼­‚JAÿ)úœÒY-/rÑfá!ü?²ÕzlÅYä~ºL:Ø*ÐXÁhŠ˜Ì›Žå³ÀV3S¶Á¹à3ÑÂ΀EáßJ;å( {Å`+Z&ëÂíò18b@+ùAFÓx¾LîP G‹r%~­nr–Ma 8öGqÞ•IV_tOt6È ¿Q¼W™h&Ê£äBJ‚:L¶C9Ð~øJÄ‚‹  œ‡VÈêÖA:ÔE3ù_öù™½±Øm~µÖÁ#xŒŒ Ëü]­µ¬€Z7Äu½¹Œ»j={e-y5AÕeX ‹8¦¸žÒÂY]¬­Ö5ãŒS-%/:vÈèx.ׂ=8Ré‚{›ô£|cÑÅ‚D¾Ä‹Êhî sñ9°œœÆË"’‡‰ð„qÆ3!æ= †Ë_öpûˆø~ˆ‰, Êò.¨ 8Œ0ë NÁY½­xvrØçœþU1$›—ep^á3cÇF­Óâ³+´%Yq+tšû½í¶…\‰ €¿1©²*ûqãAO»¹Y2«¹¬zÕÚG­¿zV nr`\=Àßá3TKœ±ë[¶Ì uŸ!ÍÔð§,h“/Y {#ÏËÍi£×|%%ènZœTÀKõô³œëÔñNQüÂSYTFö³ZÐŽÁê³…ŠŸ*m”Éü#@`…¬„ï‡rWû…Ž‘=ð ð¥ußJDMe[c´·2¸Ê÷Šzr(MÛ¡}ä&Úÿ²k€ØÖ.©$[}«Í2ЍNGGúÒ“º*Üv=õ¼Ž-žúá÷§÷=Xve_K¢>l¶«Xý£í8å¡ÕÃìÄœáŸÃ{æúÏ€+^úçcVX†1W¿eí+åiçÄê¥ðôˆçÊq´ •_aqHå&°ZmŽçÒ«8Œ<'[È.%;œ!—âã =/Ë_›­ø/–¨‹]­FÃY«€Й7\ï­^¨H®Ârh‘ÖÔ1” ·×5 =©™'{–&Òˆ¬£ç~çÍùÓŒ¾â˜ËXÔÞ%ד㲑ØV‘æ^M³CøT%rœgÂC¨8úFÈ`˜˜Ç³ó±"·„¥3ôûF>»†¯mZ‚ï`æeV6³­±Wt°'¢«ÑGà ùÌ^òØñ]­-rP gÇeõ ]•µÆ牳¦(=¡Êµ ž“•Ò–»NyÊxPàô• ¾1ãø=VÕÞg÷5Ì@û6vš«Å;§½©îù^3i…ݸN—3“Q”<ƒ:•ׯªùV39q¢« ’Ù*æme m¤bqc°Èe'8GŒBæicÔL]C_¦Ôùy?õÁŸ2‰ùÄwP»ƒ¹•·|3TcSœîä‰BJóÒ,¬?N&©r8LÇlK$’à;/A—+sôPÙúá‘MîÅXö»ÒÚÀ¡±ü¨ä•EÅ{€=bYµµ{-õ‘N&»‰Öl¹F²©ð>b÷åX ç÷ÉzR~A œIv‘Cr!Í(ʉ²!»n5|65K@ êmøû¾á.ã© EE¬ïdb\ÂÞÈš1ms>Qöi=EL{±#¶€qP÷°FPDîOà–Xb÷—’f!ãH}á.Ú˜oâËyM=¿òŸr?m¬Ó™?w÷NÝë ðÐz8Ï<.vÎLrÆóþha$i€è?èÿîMÙ⫉öþÓ áð”V§*×Ýqò¹ËóÊX ’ä-'–ÛYJ|4;:â?qQ®€Âò’<DœPùl‡]ɵµæÇ$·3‰~t>òç¢2§üYÈz*ñ< ¿à<²]욀ó]?C0 ËD+a ÿøoB;þLæ#…!¿‘Ûä­UWœ3‘Y™q»ÕÜ:Gú¤ÿKžaI ‘EýáÉÏž‰S¦†ÛC]ÒbÃì,þæMÉBö”±²–Ãm¥›ÓÍv’3ܬ-eCÙr[D](„ðSIÓJâQg«3W6’S¥…œ¾#q\3¤„†pNþ‚0X3×Ð8jèÕa»ÔpÌ!?0‚óè2¥4zÕñEì"¯¬Ðv9ÝIiRzCn‰EˆÆKC ïÆˆJuzF¯ú«ÅŸ+F¼¾Më/H§Í﨨la3´Òï¹]]]¯¡G¬[)]Óÿ2·y‹¤nºƒªoÙªp:ZN„ÅØ2äOˆÑpŒMÆvP¼„#b±Ó?¨Ð6x ò+r bSeRètóeøÑñ•}_a˜mï5ÄWÑ)å³÷mÚXc‡3ʙՋ÷Ŷ®ßžO®qðE4wÛW¿Wøú¦g±0Ò^I»`9²ŒŸÄþxN¾È8Ù^ü°ŸÑiÌ€D|díµbI#Õ`y» ÿ$jÊÎò/Ù€—¡Šì#^)%XA­Dk³<«´Èç«¥Kw¨ë†X+r«ÙB·h‰ú=œ ‘Ù¡â._ IDATc§G÷Š­“<:}2Éê,²úúL¨îÀWÁn–&:ùªšR?#ìf¤¾ˆ†î8”Ï·úKŠåVÑôRVºSv7àú {Í=¢¸¼-FWøT6‹ffyC¹€·"èi:UŒ"Ó LVä Eˆ½Áp;q–Kœãµ|mŒ•ÆÏ@ÿ‚Ô–x„lþéö·Ô…ƒ¯{Žý9ïeLÏ@õAîyâš10íÐï`ZõtB§Ø|u‚ÉÞçÁŸÁ±Á ›_õb* ¶¥:-n:>¤˜\EŸ+h l ¶¦=c[hÕ(‰ƒìfÆæ(ùÑÎ,/öà» LÊâÁâÁ#©Q)-ëzSy )¢Îö|Íp>ú¾¼YÓÇE³˜Éž›1·cú¹7F™ámCš±UrÜg“É:æ"Ë  Iw~9±\ñ2/[Yªwš/ŽÉ§Ö{Ú5zlhÉÈÞ¡Éú¬Ç8ëÌ7i0NV ”ãQÎÛÀ–ôMéÇ’êy{’x1ÿàV3Ú©Ê3‡E¾Ýÿ.ä»xèº «2TÉœÁó0|DL̸˜ø˜úZ;z“Õ`_ÈA":ñvöæ”3þwÞ¦i[oë¦Å/ÚRÍ¢R‘xšd—ø û½$J.:]x:ÛÈm÷²÷YÏyIûï‘5ÕYˆ:»©M%£XºBŒrþ›¿‹99¸É#ØOX–]™2F‰þ;tºÖ"ârxGOnöIYâÔ ­§ÿ­­ç^9Å\Ã×XÜâænÓ0oð(ÙUd µ‹å¥Cµ¼‘ ešJ=ý–&}a«CeQ2êk=£Ìð£È¤±;±µû‘çJèí¨'™nc)5—g;ÈÞ’3X™úál#¶:‡4BÂx6éuêØÓ­ ÁÝêðÄ’ û}¿Ø¤À©Ô3©%ú¶$ñsÒusÍ'íÓ÷Ÿ±þÏÞÁªó9mð Õ€,p·Àl¶K2ÒMûëYP È2º†TÇ ô¬(ûÙ!0ðt‡zƒMW6ÒI´žòT„õê[|D³²48‹gp'éJ³²¦r î ßX%ÊUlL¶“|ÊÚ_y£p9=„ÙÈ2%„ìbçñ‰SN–wòWX‰‚1*ñäžä«¸ñ‹)*Ú¹Ì+ò$ßNoX7ƒÕ¬²·s¤“@ió¹Ì@>’"¡S"FFÄÇiïr{ýÞ¾¾¾f˜yyÂ:Ñgp'Ãa¬&ÏC ~‚7MÄ6Øî@;˜(ba(*?É28E})Oñê¿”˜wÉ@Úܹg—°ªŠ†/Ø›ƒçøfÙíŒù¼®0øúó‘nêhÒ‡^$ïä^y ærGcm̉_h]ø!òÉH¹^¾ÆSÐæ‹qô²F¹‚XEÜ%o¡—ç"‘xCN;ò™.—P*N˹ò ˜ÅJã8¯•TGVÉlGl™ºR‹€¦â›ØÿÈNfþ’Í‚‘Ö3뱬({ñ°×üå̤~nJŸCî&ß±&)¯}3­£°Ç®Œe´¨`gœúÇÓž$Ÿ6˜u“îÆíŒ+¯õóÖû•£ÓhŒÃ!FDBQ²ŸD“Ot1Ùäü…-I]:beí¤@:n(-{À=\±l0d5d¤<¨.'Ñ8Òú [`«ÈO‹9Ø^ëà¡l¡™Ø8Y”V ãyIùª;¹œ¬²—lMG’•dmJÞ‰QØ’±#†Á<ñQê´¾sˆ—ÅžéÜ‘™éRÒ(=Åu=ì@øÉ_…|…}Ì{š·7‹C¼«ýïøtúB¿ƒ‚ sß”PÅ‹ÐV1©ªÏc×Õö$2âeùA”Ä¿¢¢Ý ¶b”¬bõ×t ùG`´@ç ÔCä9å9ë¥Ø¾uÎH¾EË®T!YRæù|©+íüN&¨¥÷ÔVcm㵿JêÃ@c¢hçtÓi‚–M[¤¼'#ÈDRïò€xéܶ¦Û+x)'ƒÿ ï)t3œÏ€tžtÏÛË_"8×îæ¤ˆFøÖ¶ÈOzŒ4P**ný±úBi¯%Z»FœùÑJ7/Ém<ÅISZ¢me”[!3äIyN:X÷ÌMö•Å·9mº1Ö<Ï«¤?6ÓÈÉl³yœ ßµÐâ¥ð‰2§Ý_¯™­s"càWàµYÄç÷ÞMy––Å7!ÙJ­ž:ýç~o–ôAY-¸>X³ Ý ô²2U¥ÔÆökspí~®ééjO¡‚8…E!A6‡¯¢ æ7¿ÀtYÀ˜%‡Ë|´¤Ø‹”fq–5…å#ƒÍ!$«üÞàn—qžú;ôtØ@ÏñÈuJrª èR œfò»l(¯žá;šìô† Ð$øÜ.Ï/9ž`2–ý€ªm=÷C„^S W]ª¡?•ñ®ÛÔOöÐCô ½îô‚®Ma¯€»vs§7&{H}-?d¾R¤(V”#B¹¼¡ÇÂn…U) ïÒRÈYÆÈ<þJz£²@`[ð’} u‚·hpdÚö”ÙÁÓþIÆq^š±lÚ0ÖT¹íšC–à.ÔÙfvœN£ %lï#Ra½3ÛP3-h–•ÍSöoÑ”´W]J,@.ó”4u3 pŸ Ûâªé&áôÔÈižì* ?vDù«Ëâaã²ÏÀŽb¨¨Eב°Ý9.^˜™9ˆïvPV Äjòfq>A6¥6tMc.½ˆ^(¤©R„u£ªÜ-ÀÚgÅÛI#v5qÓúdßr¢}3ƒ5¬½NAªžz¢ÿˆÚùC›ìšâj®ñ¬Š<¨rµ ÞªXÔYî\q ‹Wñ KF*úêÚk’ÿKËâOJÎà5·}ßøÍ—h—ëçÁ_–&OOh”²Rܱró\ò0¯Nò*éV{v9D—\)áIÄ!´”ž:l¿>“L'™ð%”Çï|9<Æ[°šN¡If\Ħ³wXú“š°]v !Œœ&-PÇ,r)™.ûò|'^D´¢k¡®¦I|NŸA1\B2]>£^Îa1ÝÄ·É#r$–‚¬$§ˆ0Ì÷Åú†•!Ø{øŒ+­)° ¶šÄB§šs^å[i s¹=Û~n¸-›Â4ôÐB½Ö#ÑWis•¼‘—´I×Ò²›wœ©ÖºŠ¬d¯qº¬Ï.ˆâò>‘HqX‰ûùi§ãè@uY\}€ÙÃ@hè8„t?ö÷éU¼€ùÉQ‡Þ„wd—\gG;=ÕÅÈKΑ9ô¹>/Éaj‚, {Bug¡QÁ8EÞQ/ð™fŽ’Á¤Ìd6ÒQÞâC•7¢¨˜ e¡8FÚa+›‘/´´Ó_Éá< ëËЯ"Ç­ì'û@¥30\„ãhqgBaÙTdsf@’gLÔWk*÷D/ž ›È½|Ý6óüv/9Ó¿Åž¿“[Ûã”NV!Rœu”ñ8”»¥p¯)G²¥PÀ”ðMžÅä¾Ùx.ë‘{¤ZÇRf·¶;Yùy–ŸV‚.Ô­LWW)ëDªˆÒvËðH5ÁƒqüÝHkˆÁì¶g¼'“¤‰ÝKÖÃH¼DÆ~ä ËÄ%8 w¡)C%Â7™ƒÇ‰^r)œN:ñåFùÙSÈ 1ÂÐ+£ÐËVŠ60Žv••éuÓ[ÖeKdD)»ýñþBÖ]_%£ÿé_–2Ê#\ï®§>3Â×!¨Ô b.ÞÁƤ ÄОºã¾ ÝÕ>ᬄ½±6DÈÏü…Ì&†›ÈÕ²¹½@Y«5“/´®í¬’üfý1ÿÆ~d…Ö&äoýD¦‡¹â3nÉžàt¶»ªÈ$'>°KóSxÍ{7Ð,ø:±nÊ ßk£ŒT‘j$™Îv»õ]Çíò ¹àä³Ú)Îjn­x,¸ÅÙ:¹»{Ìf5^oÿS˜ÅÚjõßꈰ…l6¾§õHäÃ|f‘ô÷†mne'Áî(>Û»Ä|g-~µÉa(£ö…xo1ĉrjׄ!²ÛÙXïÜ¡™Y<™±´uEºýîó9.ÇæÏô"ü¨ÞVMÖãÕŽ8š%Óþ!bøÞÀjÿRë>$ÐÙzÎç“ðŒVf]蚃ÕÁÒ°'«r¿L‚wØ|r³ìL«âg%Êê!R Â*g¦ùŽæú[ÇUÖX»ÕŒÆ³à}‡.PÌ¥FuKwƦ?ñ{Ì/Á½æÖfç)¤ÖR‹¹ëºÖk[áocÞ—¯ñ¼YÓ®&—Wø¤…‡øØ >•vqÛ•F‰FPD}§DÑdå¤h´;¿Ïk‰‘džPŠ©OµÊ¡+T=4WÆh½DHzXãða…Âvõ rxî‡LRÀn›_—!ÖX«®ÝD”•U°›€O‚{­½æ2#_A:‹ÞbŽ2˜Ü"¿á³ëuHÿÐël©C éùCZ*ß#Ò3þÊ]»ån4Š˜M¡µÉ4×JQF‰!Ê åŽr‰ü‡Cy7¹Þ¹èOP’”‹¬”žª¿×cp½*žpi=±þ1H …½3e—^àT@÷­1¿ãxa'É)ä%¤ã:RsÐGô5ý‚k ²^G9£^Q:kíÕ7"B\"gL…¿¡ÃŒhg L†Òä=Ä&)YÕjtµÖH+Þ1|FÔ²(wx‹Èšúi6•çrG(ËeXÈÇË‚ñ[è¥ÿbY–´§»œÕê5í¡»»šOi¥×´{Òªò )OfkÝiz#Ce|OškÍqFñ‰6VWq?»A¯ˆÿøXñÓnÁãä2ß©¥=å¬÷´.-«î ­;BþòTˆúª%‡6Å-Ìí*£yÕP÷421x+0Ü-ùjò'Q ªk¥-. † /äÏ×ï·_6þ›‘æ\ûs:yrj&k­Ñ/§ äõ_±_àe1¸X-Õ…”4Ï~q;é!6fƒÈ32‹ž‘ ùJ;Ð^ؓݥåwz‘ÖÁ²žÃD\[I71&ÈpøˆYa)ÆCLr£Ä^¸LžãsR¿áTx—ÈcÊd <‡ìŽß =tá<Ù!wȇ¤6dÁ‡d$ÚPEÖ Up怒ŽÕ sYÅ¡t“5ɳ¿Ê |“=U„ˆk¶ÏÜé´³ZÃSY†òSâ#¢Y°¤óØn!ò‡ÓãJA­qÍ8À‡ŠþNG¹ £Ù’WêlŽÅ×üä¯ýÄ|ñ —ÀBQXn—¹°¸¬)§ÃøŒ1ô¼Ò—ý‘Ïx1­6þO|ÓCh~+ž´§oŒA0›4ç”L`ûµ_ä{­äBÀyPK“PìËFëÍ”MP€ÿuèF °®|&{Š-Ø×’è7•ëP zÊrý,®`q/O“òhò˜Æ‡|ìÄñD@OÞXf[² ¸ð•è/:ûÆ©ƒ}cx?cá—Gø³œ¸×á?™Én`Uµ Ëâ`¤e63;›(m|9夣»HXCš@u´¼M YäÆfQo[E(ÉŠ£ïP¹6NÁjžf"!¢YŽMà²c8¿Œ·Î%þÉöƒ7ü'­§Áö¾ÙFI:+re©%Ï7™sÍ5ôw•¸ÔÊùk´õ/MvýX“>ÙßÛ¸fÝé;_D ™ÝÁßηÆ]¤ðƒÖ.ýiI¯»3†æÒ‰¨*.ËçœÇ_J Ôf<•¯T’Ó.ùs׃«ü¹Œ4Z†d&sÔæ,‡rƒ|9­N¢³Íÿ‘¿•ÅÄ&Q[fàyµ²ì›ö_`˜¸ =x5¶Å3 »ÀU1@)H_*Ëð Ä;ý”k¬-½¦´a9ìf.Sßèž«-ÖÎéM”Ÿ¤84Õ›ÆÂ”.J.$—eÞ–Æv0PÜj뿜o}r Z+åb?ü¼Â\u3tGߣ6¡ñJ1šŸù”Gìˆz‹6 «ÝCµ'žåð“L×÷¶§ó?R㼫\åŒG¾‘ú« Òë¨k”Š 42ù“œ‘gxl@<®¤°›1¯EÎÈP+CÞˆ©Q5ìt¾"Íab‰;³é-3cH¥¨ù!Õ˜‘UÔ6–ñ;ΨJÊ*…ÔÆìÙÅ:áh2VŸ¥ÎmQXä³ öÁ*ON·«>eŠ,Ç’Ii|Æ\âªSX–—‹ÉIëße·7Ë]Á.ü.xíPžÅ’ܲ0n%;C>‡ íI²°×je¬æÄ7°lä¼ãT³Ûù È4¹LëªÍ Ýœ½sà€=99—V 䪱Bµ´$Ýâ]ek¾™wqZÛuð0 ¥¡4”Bn5´9û‚Ùƒ3‚uÂÝ1›£J‘í´‚¨¨åïõXp§(œVx­H²––E±Y¯\àe… 41—*T!­ Q, ‚d“5Å63*ÿºO³f¼ˆ/Dd7‰)ùS1Ž¿¦íí;˜ƒ– ëå&'ÞsF)§ia¾/8Ë*k6A_ Õ ³¾l´XåN ­¡œ‡{ÊYLp†KÊ=r‡]ÇË6Îä åðNèùB<´§²4[ÛQP¶'ëäh®ð/ö)Þ†v ¿íüË"þç”`•¯°Sýr›%°k®Æ¸•swQûioCŠêÆk®=*uÑïCŽL’:ÙxŠï¬ª^Ê#¸•¾:i¬mùò–J×­àÁŒ;"4¸“Þ½Dóʯ˜Ìc—Ùdò/d¯l- ÊK8RxÅTrM©Ô7᪸ ‰2ÎV°ËÊr\Ž{eq—߇NrŒì„!ä*>„›b“Ì +e’|A扵"/íåI+p  •eH=ä ̯q?yB¾:…Å+’ÆtyZÀ3¨#jC~BYÈ-öDásöQÎÛÃKˆÃ¬Èä (3ñÝCÞ€ïê¥%ùE?‹a¢5ñY9à–7"¥”9S¬Å?d".g>Ì#ËxJ*räÃÉ+þKîÆò¤ ÃGb¼­hì­Ç÷À3Ï#úÑÙç.K÷׸º¨ËEIÜÈw>™çˆ‘œ³˜YÅh:•ôÓVóf¼\ ÅÙ¸Q*r-v¦ ˆIîX7Ì’öD6—ß'{ðoÚHþEÞ°é4—,À÷³Ï$?Ë U¹ ·ÎiÂÅÂF¼¸ì‰yx~±B¶Ä§¤¡xM[c’h*ÓìóÖU(®.%œ¬™òÎ ññ×à'uŸ·¿9Žv}§»X(ÿ¥ÏES8ƒQÎz~H|€²øHZÎ:KÈ©޳å;òzbI‘Qv婎b'P•O8XæPÊ*¿£sfÒÔ¿¾ù¾qŸÒ›èö6{‰Yˆê˜ …óX×)"ÏÈ!¢ .±6ð³¼çNGÞK® ÕB²á3ÜE·É¿á0-Å7À*zY”µoꤊyð‹ƒD•“äA”¢ ¾"‰JMR ŽÇÅir—ä‘Wd´ÐÅ*úÔ’‚?q¦Ú…ÕÊÿØ¿ð€«4 "%gª?«SÅx*ßã9§ubœxZ"^І|Ä™ì±õœ¼åFsûŠs)èaMDaO[8Û¼ ‹´Íü„¼¦¸Li¶7&ªÃµtm²ÓÀÚi ßô%tŒƒ¹I3š›öVšº[èçe*›Î^è‹BNj‘QÅy]¸È¼r½=ÅêÉ–`:9&¨T»çTâ^FKbùÈôyªÜs²ŠQÐ÷â ä?†7 å]³\í´X½·ûªkýjf”OÃòÈ5øFþ…MÄXÿ ó£•LÓ}æ ðAì…ÉLWQú?zÈ¢™3Qy­Î¤e$‚áä5ýc*å/’¼/YóÕòŒÉé^JÞªûäq3‡]/}ˆRDÀ;jÑTh¡Ô`‘ÊÏRÕÔâÃ÷„ÖÒªÐÁÐVëè̳¨lC]n,Wþ'ÕMЦ}}XBÕ?¿S¡ã¼ËÌêz©sçwÍгê{´(÷~,±Î|_ß`Zê$»³l#³¨9•¯á ´jt<{L×È’ü®8Íÿ&-Ê»*ÕŒX§ôó¡ï·‰ÓH,´/¸û„ŽLõ,Ö»»&+^e0$„Ñ6²ÎQ«ºRŒ†Ò™2•h²Œ–63áwb ÿ_¾Å4³o|ú<+Èà¯ÀX:‚f„ù"̙ųŠb„2ˆl×Þh§ÍïÆ*ã›ïc (`_††Öj×ÀÐOx@¥nSÒq´Ž|Cvȵd›h'ç§Õ4?wzÒ.ê,׎Ãð½‰_´ld%j2ÝJ¿Ñ8öšºI;’ç­’$û‹Ö$…Ð4ÛÄVN3ÿ¤K;žLí¨¬ÊâÃs»Û»Îá=}AÔ‰]°HùÎîûƒF‹ôý©^*؆¬Ö·¹N™*+  tÇO˜æ{(¼XÀü×;%ìMð¥;ä]¸ííØ£œt—¿ÄrâŒHt6„TĤ†'«½€Ÿ m€cž¢ÂCë(I9fêEq ù‡Ü'Dç°Øa?p–}…½øyïü@ŒñÊX‡qŸ‡~­øý[J-ÿY¾,ã?î[¬Lh¿ŒïC*ÓhÈh]øQï÷s{Œ!R˜Kœ%_< 8T®'ù!¿¬#Ë`!ò€W#ïH±ÑÊ)¦B=ú’Ø5¹ÊÂ\¶Çá!‘MæÃJr´$ÍeuMöÂc˜)¿ñmbŒÌ‚3ä&ìŠ)rùŠûñ~•)Îû‘Û$7)ÅM®cA2Œ4µe “ŸEØ.î@)È)’° FAÞÿ” h´ñžEü&­ñ ”K ¹_N‘é‡gí{X—„È^°QÜdS]ù4 ë“÷4hÜA7Kä-Ô»˜§Æ¥7æß­læ#k"©­/rÝÆ¿è’‰Ô¢2'ÉÍB¦ÃòÆà%ÞJR< /åQr_n•kÀ“År¸K«3ÈȦl&¥Øg˜NK‰IäþÞYg÷ujÀ3ñ 2ÑÚIö‹¡â¤“D¦“ < {$.L€îðQ½¤!~ÄÚB5³×œ Ëè`gd07þÁ)’ÁZ-}§¸au£¦¼fNàEMá§çÕ‡Jmü[4„z<ÑÚ,kãå¶VÀ9-f˜-Ù!2“?Àåô¹¨-VãzŒÄ&õ tÓ~¦™CŒô´yü;7ü5ÎÊžC¸ñÄÒEò¼’[c%û™„•ªâZ‘Ç™_p¹Àl1f° µ\C`‹,±pHæ–ç}™Óúî8M\—/aƒòATÓгÚ[çRPW®Ù‚ ¹ì‘v,Vb‰¢ˆŒçÏé5|( © ðùFþGG@9ÒÝä=‚kÉLòD‘„‘%ÅÜ"{‹wrÆÒbp—ž£?h).EÞƒød7™WVå¡(û¢Ü† rÞ—†˜D'å#\猤S…-(ù—¿óÉQß©BÞã`»‹r iXêè!¡7Ü{‚cœþ) ô/®zé;·î·j3÷ye.1-cœ?Íæ¥°½N+8¸Xã´Éé ié0µ©ÛGkOnüŽ¿8p(,[|Ì!š u_ÏWÔ艧¿GÊíN^£8ÖvÃIcŒdFÚå°š’×U2ý‰í³sj}•ƒc=\í=; ?Y¥Ç’ëbˆ5 ;¨÷¤”t«3Xæ¤S!š×%Í]K0…XîVXïó J@1Ù8ÚX­ªŸ&?å8þŒõWShm’_P‡ˆ,| dó­›JSÌ?e5ŠÖ÷V§6é¤,‚I<ƃ†3œÏÎys¬7›ÿ¿*¯#$‚¡k”ªê;2Ho¥ÝTb(£/I Ä|+Èßv.ûHúº`¢=XüúGX <ÝR+Nf ±‡âIrËübK ’¶’ßÃ{ŠÉƦÀ4__Œ¤µŒ54™Ü÷l !°¿} apÁBwkyÂfjÙ.%š\–YåùQ°è1‘–+^;¤uóDøï™"d«]Òžz˜V»RdFîYbœØD—â&:¿¹J»ÑÝYÍ« RæóÿD¨}Ö·ÈôâìÒr·T4zÜ5ÏS]yAÖ± â/^žßè9s$ïCOÌ,i®¬ð•4ŠŠN$R;Þ+¼{Ø£ÙZK:WËE ØEÙ\|J<2£=lÆgJ2¤Á/,H – ÞI|švÉ;Ð;2š¶ß8a<õÝHjœX>åûŸW¿'§åfAõdHS}š+·'Òaýðð µ»¥Ü¢tô½\2¿$»Rꦎî2Óø§è 3>›•½{ìN^çÈÅOÛY0DÔ€¡ê9­²–ª=USÔA!ÕCoë»”³j|·h _bo³‹ÝØ7Û.Oé/p{¨ºì v2ïçߑΠƬ`hPA½E IDATzQµ›6@Ùãþ­wð$P›Lc»ü…¬Q|¡?"Ð$¸ÐÚe£ýœU¼ëË3À OG;•?À’fGóšn·°›JMää?øH>Äœko‘ÛÅ"l®­ Ûq¼Ú¿êN¾“åzfÆf‘EÁ¯îÖ‡SC@?°v4 «ŽŸ =ÙŽp޼5D ®’ÏíPŸfŒJ õù¼í]‘o’·yCY™éH="¬7ËçËb•6{×WÈiƒ}š©ñ=⡼$.akíLƒŒô-K8–!É„“鬪¶—ü¤™—þá™ø?P…¨X’¯¤'¬O¡¦x>È$Vâo Ó@%½¡nÄgì!¼‘·pé ¹ñ‘\Š“EGX‹™p¤àsÒA~µ ’(!N;·YVD„ʸD΃‘Pßa?¸5q&.àùX!RL”‚_0TV1ø“¾'MÄ2<‚ß…܇{fѯ·ÞÒë¸]yD3’t¦ •ÚdZ…, ½à«sÈ•6f›°ƒ2U9M?z:¸«cm²‹=U*1½t3ÙÏÏð±NW¯Å¬Ê׊e²‰XŸè rVåEÄh<ê쇶$ŸsoOŽA3V{*ïð9êBÂ2ã02U¹ÀÝv#ÑŒF+ÍäSéÇÁ52U”v˜BK¨·õÆá—B|‘™³=ÉZ^séLÏçOJ+ñû1•îö6ǵ+t)M—ë>:X*˜Ìtï(³Á*Ѧ>µš\B–ÓGÒ%gˆ ò4äMñ?Q„/²‡8-øH³5j g/œuÝ Ô´î¸”W$ífz³Þ žà§XMõ»€‡ðÎÄx8%³*¿D¸ã£É5â*ý*vcWX‚ï±ùÃDò*@gå’Ü$»(ašø! f—/œõÎ3Úl&ÑÉ#вÜz;×(Ø#ê±ÅÒƒø7¸Ž-ìò¸ Oc\ý´û°ªA]çµ ‰%X16R¹¨ï{e-Í¥˜A{àlÁjÐXl…Éh ùKy^<‡|XE.¢&T’€ðŠà$„ÔƒÞrÍ(zÁ]êÍÄ7yžäƒÆ0…´ÁY¬“gÙ0±X0 Èïr+~QVXÙ°ŠäH5MéEÒµ6‹µ´7ïl*je÷W=¼(Ÿðov^g¬bô²«³|œüO¯ï;nT„éYÒ+ØÅ‚œ1ì½¼IŽº—ËN~êkð§Âï½Æ¤Wâ>xú#GÚç‰?Êw&=ÁZo(üŒµ@,SîÛÓœkNu2JqQ¿{¸VUÝáάÒÑ"ìÚ€Ö%.:ÉŒsþ²šE¬>A3fÝåï ?âîëé~ ">$“~—\¡‹Ðc¾¥uØ:1Sù¬TfÇÕJqý(~ce?ú…ìçÕ$w~úçáOøj½ÀI¤££b^2‹ÇЭt©ÓŒÎPï)·ìu¶ÊZúŸ˜çŒòA;xÎjh~–ùXV,G{k«ô}J¥0ëA?Ë*X‚ìä;ìâÖ(ùÌ>í,·îÖM³†‘bŽpžKTÍ䣜 o^4šeíh«!t¤gÕQ¤²’¬Õש”;¬kr-v2/°ƒÔkÎUn’pÇ­´c1Ú@ã¡SŸÊ™+ì¾ÐrÈ ¡´F,i†óp‹³[T V'ýé2 ÕLb¿?£QÉ»4ø5áŒ`þ§ÁöV%­¯;cè:²Î³Éµ•üÅÎb$>…Ÿü™I6$-•Qú)\`äqÌ!ƒäXÞ‰¦â!Ý-—ˆß á°—Ÿ -¦oã‚dÕNÃqSÉs|NZ¨Ë”T¬"¶òr¿ØÅòCGl˲Baiˆæg±UÚxj/4rûk¤4_ü9ž44ù5é¨Ð»Ð_VÓþg˜þžFyõº§?ìç  ‰¾\ÇþîÁfFWߤàˆÀD£›÷@fË›"^Ïv>|í®åg·Ä=¹É®¢LQ¾²2ØB¦š”÷ØŒo&­Yöa3+odä¹ld û‘‘E·v®ÿ˜£yоœÒûò|vÞÁ,LN’΢{­¹´åáHYÖÄXBý. ÷‹7°WÌÅÛ(Ège7Ë›¡w^Ê~|rð(_bº´ZÞ%vKïGg ?l®’eyö]ÍãN K–c埴g!—".…µ”4ÿ‹L5¦[ƒÉ ^ŠoÕfzš‡g§H­ û°Tï`ß ¬ éÂt§´. ˆ>N#þµÙŽr¨Èé¨d¹Ãžî,ó-%p(í¤TQ'ƒNÛÀ7ó·qÇçÛç¯o®å;õá|ƒ‰,¶]+&a"ëIÃN‘Ñò1?*©,„Ïœæ\òUjØ—†À¹X6‡ÐKN·É^ríqœ ûD:©>QÈ> bèIœˆ÷ØV¬‡{Hg««#Åaõ<Ë‚£œ×âÿëˤ(²É±ô.}@’åwQœo•e@ÊAr œ§µ`?|ÂòäÄ£t:~•y]œD2Âx›Åzy‹ÐÒ8ŽåeÅbÏT²ÐsKLà6fÁad_¤”†øÐé6£'ЖðÈR|›Í¹üнˆN’©BŽ q=æµZˆW°KÈ9 Á0Õä Ùc° ¬NSYvS.à p²Ó?˜Dȱ?Ìá•D9ò-X™÷f­ì»,]ăŸ „ZHá°øC±Ìb.D!±rÊ2VN…{pÂ)dŒSÕ>Åï©ý¥§UÄ¡!ìºiM¿Ÿ£iŽ_Æfîž§R¶R†º”¹¿'¾æßf_ ö0ëÉÒd ™/âùò걆ØçB knâ7í5²Žó™h~ežmÏÇÁêsÿܶòÙ{I[kèÉöñ]ò·ØH÷Ai;UôåX6ð`#¸CïÑwøÂðœH“î&e)¨Bl9âÈrx9`“0Ålç)É Íd:_‹iDá ¢œÃ7"ŸËåLe„©-ÂÉà ÚŸ P÷x.²ÒK×}ƒmSÙSüAçãJrQÆc/²IÃ4:à%fa²™e’‡Å ÈU¢„ÆðSî”÷dˆ†`¹(Û`e8C V¤Ç(ÑF‹µ¸ ᔸ, â(­ö’ ê‡úú‘xHt—YÄc5;pQŽ8¼1do¨µÈ)>™n”§Ð]òägNOv[k4?…ÛQ“#òÐ…Xš–rIVR[áù¢»¨Ìç\÷y«Bž›ÂJ ¶óJ¯h#’ý:3Õ?Dú-Õ Aeej•”Ø4A¨µ×ªcÎ÷Ç¥qbé?ú`b¨©îöd«6V[l½¶úŠ6f[ZТpMNÇ|´øâ(þ1Áõæ§à-Ñ‹üƒ£‘Ñ­îž[žFJ òÍúÇÖœ7tÖÝb]’ŽP·±Uì/4i:P|’¯ÅyâVUQÙ9k3¡&_#‡Š•J€f÷Ð¥†{jÊéÞâ?RÔ{ÆÎ`•µßð,²>„ÉÆòµ•3Ïz8Ë ¤gc/0_Ôà ëÂשoØÖš^ÇרZõÅ>ÇhIÊ‘ ¬ÔÆE¸Ø(`ÛÆs·õÔygg œðw5öìgGém­ïವXrGÍ£橞®Z×k#èì¾K¶À9¬aÏuVâC#£9Xæ÷òµµ8/µ½|~šA`¤ç·ÞÐ= ùo}ßrZ ±E`¿¿ÕïúɫӦþ®a´¶7‘J´ö™²7b“BÇEŽ’êewuí·{¾z•RSH]¥Žü*üc×”>þS¶<òuÈÅbÅØcò‚î†)ò+ä•Q0”%'ו{ð/­G’-"{‹Â"_kVÑi£È×u5ýìÃ+”ŠipFkl|feeY9ÈŽprq—1Å»+€é…½$mqêq똸@ǹŠGÕÎóWø—˜Ý9o`ÑU´¶gË$-!‡•&žùæ(+ oå´àÙys¢±žzI'„‡Õøˆ,T*°®ô¥RÀýQ[-ÓÅhqVÕ•z~}ÒÏtEºÒ4äY2Ö©ÎgŠÕ"ºÂ{„èá}õÕL)éý~ÉžŸB sZ±ùÌ—Ã^í¼°‹‘4¸¿!γ"tTx}‚ÖIFNñü½ÿ¬Sß×Ú©,îùZ²(–‘Ü×okùÜ-äë¢ùÂi`M‡å ROùB7)_õq4D)O^Ãå(¯ääÐïz\Á\JoÏ ÅJjÙik×Ãx!Ôûîd\ /1÷Á¹„µ%;h~±Â)ËÇKTq†O±Ñ>¼í;d>öJêR¥ Uvèß\+ƒy¬@°C kʾ›Ïq6ópQI}O[VZáQ÷‘ÒD‘Yô„ ¹‹%å=1š’yEÚSÜÃ`ž„ø„ü%Â7¸Ö‹&tþ%öã/™Mì!6}¤šÕÝÁµIŸÅÓ­evWã¹é—gíw¼ «kr‚¸Õš`ÈûŠT,-¾ÈTl¡6®¥IMìå$‹±üEz‚7ÔwÈ7!Eóå4÷ïLh¦þ­DÛ…· û;ë#~#rvÔ,˜—Åc»’uÙYìCÿÆÓÚ|mO•/à½ø¨5¥×IG|‘4 ·‘ܤ&´"  ¼’=DY[¦í| ³1Ü:+ûÈ¥ã'G°g`“=HM1ž; ]—tIO±öâ”ìÈ£0gðnâ ”•¶Õ_L_­3ΩFNa{Z)z}æ9<#2ŠõDÔ ýæî’t[m~.P2x˜¶³‚£?'•å L*Š?bŸÌ-2Y÷ /M…*Jµœv̵WŒø7ü@z5§ÿ=}î,Ý×雴—ÚlÏgÏþÔ*¦Ï±¬)öü´‡éþ?½¼#Sg~©mÿíÏõ碱ÎèâL– µÁT»“ÅÉ@3(ÿó$½ô¶¤8ÛJná`urOi«F«åÙ;™‹ïOÿª}§UÈSÙÀ³#ú!½oÉDw+¶]k<ÍØyÁ6Žó¯VsÐh3ZGùŸ6A.*‰’þ¾Æ!O#ð:}B:ápõQX7hª6'3ygù:óŠò)iBö’G  P–£ õùPVEwtû/{“s.xÍÚL‚¿'ž, ­ŒGâ‹SÐc-Âj,†MrFË¢rˆ(€qúyÜN"”eNMžMY¨|bKÉTñý#¾ÉQkC:©+®Ê_0*Ê&r%\äGÉr·J—ŒÅXLÁ¿I ¸‰nyA>•ãa˜¸'ÛÚ½ÈSÌAÿ“gù!R ÷€ÑPž áű?1¨‰5á5Ë'>ˆ¬$ußùUÙ^öÄÆt)¬Á8ä2™D’d,#§£‡ðž,/¸tË¢P# $yÅ«ŠP¹ˆ”]öFN„,ƒEÉd8&@k¶‡4¥6ãsDl%¹Im–Yô—ø%g·#á ÏÊ;ACÚA¹ï¾‰±L•læ§à¸Øîì‡bò°xEþ¦¡ßeç pfbp(Ù µiŽÆùPãä7Vœ¹e™ìT”SÅ_"­è%Lú·óLü0Wx–›WpšZBÝÃòÓ9r,´h™¬6çÃe':N§+$ð™Ö/³¹Ç÷‹ÿ'.«8¶€Þ;3»O£@pw(îVÜ).Å)Nq îZ¼¸ÛGJqw-îî HHB.‹»æ’8~3»å#\ɺJáV5V¹X.}Œ ­jšL¢$Ó­ª²p^G†©<”}cç• |Zy–*™úÓd¾`ÃC]M„Oö¯V%µ‘lj§ø]dµŸÙÿ±tñkj©‘˜‹å þ¥;¤aë•ý…dÓØH>çÐbù™-¢p–rdÙ™L7äQ”ÿÕ¡³=K>ÃŽ°ã4\&7S:e—³¡8ë+éõXÐñ¸ü†WeªNmh#|æ+dq¸Åb¡e§ìrHÚÆG@Ø Z«Dx@AÊ%׳/lŸG7è:ôdµQÝbÝq õeñ_ñ"û š«õw>^ç·¦-ñ´k¨AÖk1\û´Kâ÷ m+M€Õ8CÜe-‘C m„®Z¤íæ{´ÉxÌq(˜iW´/ÊÐ Nÿ þ°w¢c?[¡µw¬áYQH׎j>"ýW|a>çϱã³!Š«f03|Ð>_×}»œlØô]ö´¤£žÝáã"Îj±Î‹ž›æõ”憭¢Ëò(”Ô»¨µÁEieÙùÇ.ÄÕôÄl¤žYG“´Ÿ!Dœ q»¢}-a ü ‹h!-Ùõ«2¯œìdìÄÊõZ<¿gñ²Êmå0§}3ò«xY„«, Às¼j}¢·ju0ÖÇ—­VÞ¥ùs–z•¹%­Sú1Þ ¥â¢åx6ý©#íÓ¶8»êµ]ãÜSõñ|OBI`Óú“Ý„î¼5ûÊNk{ÙXÉVPx$'Ú/Uçàl»ž>4nå±0ÒÞÇHò‹Øïã+œy³Ç´PÖˆù1ÞÙ“Xv¾T5±çÊ,0„ ázt’Ÿvʼn?´—!YÃ6„î =99ü´ÃçÌÅsó;ª¾K¬8î5só\^VWëÌUå¬þsF¼ÿª¯¿ÂökÝM\¹Ù1W!oç¤È=a-¼¯]-øÂãyÉ¿asïFgGý­åøÒ-g†‹y·{;…îs~ÔÎé­R²«kö0ÊPÿ8ÿsÞ?óTà'ßhnERn=à™à}çmQ>t˜cº3=\›D†ó±#?©{öpc±]FNâãÄF±ÐóØùŽÑ{ñ>¬3 U¬™TÁ.Öñ` ¨Á+óúgç~G‚œeϱ—«íÎòv%ýª«ˆîôöõÎÔØnºÏÄNÜ!zYqH?©§á¶S´zËr†Ëˆ úø‰`³LOp}"þäVõ”ß“}þc™ÃÓò¦\̨ê+ï¿–Y‹iK¨æäwXw(­+y^ å;Pãx Éìm§Ÿ´ŽB&ÝÄ_q1ÛA•i/?L}U…àSñ0 ;Á#x£07ôÂåØ"àÞFzRlƒƒ¡+ëÇ×;^Ðòó±l –¢Çð„ÌK; »Œ‡& Xè ±:|ö‡¬:»Æâ™S‘V@péS7`¼¤R>ø‡œ4‚uBWñyt›:Q,›IèCŽ¥^Ø©4 Æ«¹¸gâÚá¬Æ~xK)Jƒ©¶ÁHþ`)Ì„~ÚSõ?|(&*—,Ë ±ÞÚ¨"$û•ªöꣽˡµå™“NÉ9ê9û,ëªhLWÕ&ô±éì)}ã4¯,Íà_™Ý²d|D‹E+lÂGª(Ï‹-d2û!+ªšÎ¸âIŒs¾&…ã5æIb0 $á:¬H=ó#ð‡\@!ê0Û¥9]1r«Usk•Ùøa{œ±ËžH'`«ç&Å`M^‡¸ü&ƒ„ÌŸX[𠽨Hu‘]ÇVæXŒƒÐ¯µÅD>£lŒaùÔ%º‹ù\q@¤IM-¥ l ¶`Åì=Tz˧ª”`DÌ‹7p*«EÃh Õg•ð:LWßÙ5´1ïã3¶T”Äò2ºb=å…ñ ð cé/k­a3øXm‡Ö–}×h&]ÂmìoèOSàFcßN™p~"ÃÉøAÍÁ64€¾B3(Åa5vxM8nZŒaHz&}aCÜD©ä¿ÐdUK}£tYòÃS¨Âc1+Îãh.œ ¦ª™œ®Bí¼p–E‰íT‰uÅû´JÕuegÜ’§{jéÂÚ„–wÜΚ±ß“/rX(ˆ‚Z<ž 昗ÀVŸUh‚%ßÉ÷Ö2h†­xµÐƹfx8 ïd*rÞs\¯ç:ãºáX†Lk.'hûøráð\â“Ñ΢üš¾ÖyÒóÎUÒµ@..ªá0X>ÅÅFí-ÃÑ@z†8)n9³¸6;þõfñÖðrg%1^¯°º…x†[µyaLm *Tvœ–T!}+ô…aŽ]5aªí³£qK°¯i ÀÆØJd…¾Ô–rg¦š}Rîdä c¾¨ô2Úž ¶;Ùvˆ[8ÁÚ§. Š`]±H΄mf èÀÐïöA™!›¨4›Û¡ºª@ýÔ3å3{É®rW°®v‰ƒx(:Â]û ݶg«1p}æÙ´Ï4s“]U–Ï(Üe—£›0LJuqNðÌuF‰éÚhÞ†z 'ÿbõ×3´졸Ån°âÏN^‘Ý–gÙžIÅfG>ÇvY$³é¾¶¾ËŸ—Ù…Ìð®œÖ¡¯ê1†åœ½ÊZI/žæRYÈNÏÍýö\åT©f@®d·¥Ž==é)ËÉ2Áºíû+#9u}`Zêê`¿àkU[´¥%înŽ¢ž'TÍn18‰ÙV‘ˆwÒ=ò·š{,§2jW°¤Ôäy×2ùU5œ”_£.S2¯Y÷õDÇL=ÌÑ("-"9l½»Œþ™éʘŸñÐ\cœ·  SG 3…*hW¿×ÿQ3Ó%7ó.Úév¼`ÝáªûGöÎíùÖä*QY»‚çYº.[èô:žÆÔ^wiÙ=gý8(”¬ˆ¯Dæu£iÂŽŸ)qkÓ"Ó¥ÎKªX—ºÖ×@}0nرF•ì×r󜵲ÞË‘ž#Ÿ³&_¡¸Þ]1ÃCx.C7³D %}¹ÿ¸õJÏË.‰#ŽYÎ'p•”u©•µ?¥ŒùG`zpV Ý R2ñl¥¥|¶Þ“i±QǾäL³rºFç,¢ýÒÂsÖŽPÛ‚7ÔBi±]Єr|qp÷’¹*7~á—‚»üÿË´)Ô\(œVùKã¤üqGQ§øŠ 1ƒDWk{ê+’zÑ"U\¿B¯!– ÒVPe8,;J¿\mÏÀ=˜Öñ¯8A r¢žØž«¥T€RØ'õˆrbCx ƒÕÜŠÉVm¸ Y˜—ŠÒ½¶„£ü=ƒ(V™ŽR[Uc3U3V–>cÙReWWù*ÞIT[ú½¡Î‘ MÅML ´®, »@ÐN…?°­xU]À82XŽúÃ5“bɧ—•;ØË:b8ïs1/Ãx¬d…ù´QÕ…N*³Ònh °0”Ъaôáz^yˆ~ÂgèÊ2 Oá2* &@èÇfØUørúw­&®áŸÄ@3Òåuî†aælêù5?«Îî™eŒÂj¾Új7ÄÁFU èDù4ÁX»ƒ¨«-PGeÀ~Ÿ”[MƒA4‰nª3r›]ßœaéõŒê¡.½y "ëdçK-MïÈ«; Ú{‚WìXþSÃ\ûKcy¯ú¨T;« ²n|°³/Äa¼vPþeZ*/ ”dÝ IDAT+ªµƒÃª£lXo&Ý[q¬‡y ñœïP/U2$` ±Ñx!'^fLÃ/p–×u5æÍ°ªÏmå¶•ÿ.5å¿]ÏÔ“Š‹¡ì_ñÊù²”ÂõPÃâ1/¡'ÄbðA¾‚ì0—#&‰[äQðRiu8ƒÑtƒOƒ—dÁ$ö…½¡v{«Ýˆm`)Ôή$‹[iØç³Î"­a½èþ£VA Ö’]…ª•o ^²¶}HKaÏ©†ùÙê ç©8l›ðZ(ámƒåPœ,l@»1?ÞƒI0 îØN8ÃþT¥ÙT6IK–¬Ê"ƒôŒ½ÌP`­ l >’y@††PMS›(¯CêL•áËÉ^ˆºn~P-ÕczE×YqJâ[ Wqðšþg¿t—s$ÊãCÝ)òœÓŇÏðå<ç>^´u®³²§†•€þZ6ÙœcO4Çß +èd|ñ ÅÖ+…w øÌÿ ¬ýMC+¡ˆUÙ,Z‹BösâFÉ@¨¼iç÷ó­6ÆaÜq'™‰ª¡ÌÿV$Äë\ÊÖ™Œ[Ößt, Wį–Ç\ä_Dõ¡\öÎq÷q{Â_…Û'r°l©Q)³Qà‰'gÚÏÄÞÏY÷Ù¿ÂÇ|«v©¾EáÁVyؾ`÷•͵‚ècït—yÊj›q.mšïL¦ew´ýª¼y%B›-Áòzšð‹¡g½“üíR¸=´Ç>.oyÞß]!Ž3žöŽž‹Ž‰zg¶sBeHf,¶vQˆŠ ðœ-µNFY?gž6ÿ–Ñê+•Ç™¢ߨŸ¢ÛØwãl¦åtų˜/ËÎúI§›µ²¿Øíܶ´îîYûm‹¼þöæ!;„¿àÅÑoÑ<þ'Œâ?­,ª"›Ø”ñC ·—š…±aï¾Ôz1'ÿËO˜"ÇûcØDè¬ /ð¸-p.³ki¦VHFi7¹nw„ùª†?‡,¢ºØþc~9&ózz¿„/·‘÷Œ^ó#iO2d´ÿÙÇa•æ ì_ƒ—×e9Æ~ÍBÙßì/–]e¦í2úËLs¥¹,³r`°±#x-í¢O7Ž›u‚n;ŸÕÖÎ …Ä"Ýé♳¨«=Nw,t„rü–Vwª ½Seå:³-ÛÄÎk›Åm­çvUÔ§± ¿Ê‹ y8ŸàÏ” Áã™7eŒ•‘vÐÞfßIûðÿú¦FûçÕTeg·V~óUM»žž+ýtðVp–½Æ"kA{£ªœÊ–ݬÖµÔ^&¿c|“cƒ1¾k)§} ¾æÉ{V°Zz’™Ã¯§4´7Úƒ…­þö«àöÀÀ(ÿôßgüÕÓ}ºö|{ŒyF°¯ÈÂZ³˜±ãÍô ‹w÷±=îÍïz:‡ÝtwþO=`ùõùèg;õûö7iS¬œa?3¾¨fr\àJÀÜcÏ4+f¦§Ož<›[͓ӌï+ÓNÒ"»ŽÕÕ.Fi¢­í‚ªÚ ™O‚* /è’ (M ±^à`¸cŸYÙf ‘ ³ˆqÓau„ªÐcÊ„H*‚y°·šÇªój …²rõd»èšê{`¤HÝáM¢1›ue÷qô§Õà—ùdŒê¥¢•íÜT—Ȳð޳+Q+i˜Â-&)‹L¢}òÏŠ‘ª ÜJO©]çSÀ¢ž@©¥Q›bOôËÚ¤±IÐZ傉ð‹¨XB»a#0 a•±´XLÀÇQaˆ TH³´“Ø_TBÍ…Æ*+ÍÃ?áøŠKÕ+~’jÛ§Q©Â枎Õl«†9ÍnÈ“`İŽ‹ÝúCV”î±;v(âìÛÊ¢V¦Ü¥Þáÿd»2Ÿ­âÔRÑÖ>,ÃqÞ‚ax™?pÌa¨;üØgoe5¬Ü2'T0¹ºgl3Êi‡X ™$Pu¶QC«ŸuF²ûÈ;Ôf齨?,‚ôëÙcñ–k±*=ôL{ÛͳÚ1 –Yïà $©¼˜Ìü™æq×gã"ø Þ³y‚X¬ŽªH[í×òXm]Õ7ã³’m¿Nó°½ÂR:é¼—S˜ó RÀ‡ƒP‡Z˜¨©Üƒ-¨„ö¦ª“¼¼Øœo¦.2‰ÚÀfõ—2¨©]¡eÇBξž>¿õŽâ»4¢ßhtÂ×SÒ‹¿Ëç°‰ÀH–³¡¶zK[xG,(®B'ú!>²,T/²{øƒR4–*Á¿,Š÷TkÓñ*­•°?UfÅqtŸzN5e%û‡ ƒÂP„8Ù+ÒÔQ8+KÁcHÀG¸6á<ÈKÀfôisð1ì¦zö|ÛÕ~:ÇËÍ|¡^3ù)æ­`¢µ\¯ªþ€šî¿¨$ Õ6Š]Ž*®$M8ÿqîÄ]ÚZ;§š«J¦WT…è)Äf>6rÛML´f[¹%O•7rtŸö)K—0Ý;9´¿'Žt½äSߨal©n[Gm./ÌŸö³à°àÿÔcV0ÂZg”60Ðɬâ·|¯äYû©UæàJí7)Î{/ò$QÜ‘ÆRÄ6ñìW­cö@0~±WÊor tFÀ†ü0Ïß©#„È=ªÛà<­i®YặsXZÈŽ°Älu½#Cje]âŒù#äƒ{¨ÞÃÕÖ%­Â¶×¿]îƒÿ±AZ.­^ÓyJË¢y´…Úqý¹ë¦{`è|Ï%×òp§w¡û@äI6…­òä•m! ÝååìŘc¡ú—åƒ?ͮ؋²æj®jbö 4µªû.ù'Ø Å‚à>ûwVÐô”½èë{ü™ø#I¦î1c!‘~ò¬î“–/Y?…’¦x zÇ9ÿd%Xk„×  ²ü†–ùÙzü‘ÑÊ~­ÊâñLg°=ú}µ|çx¨a›¥UyÞ‚¡Ö©Jæ^ó•L´Ëªßp—£„Õ›Vj¦ïŽ]ß±H^†þäÜìr`1HÓ;¯ë 3{ƒÌSVõ .ª_ -Í0jPŒí™…1{Ü™¸_{úüðµYl‰ØË?þËÌ0Î:úãä}ƒ?ÄK®¨9\àåøZ^ÞcQš(o¨V´ÎìCGé FC$»)âI¬‰í0CPƒï¸[äGP™?+ø:KM-ƒpÞk[ œ¯Ø\–‰% :&án&y1\ãýÚQï.BVhüeì†ÒKC £*DzA;èHCÙ)öfe¬ƒS°”ggN¶—ÖÂg*ÊËs—17£VòŽ-jDœì& ólôšEBKaW±8ÞƒYèR†ªש4óáqt“ ~ÂXÙzÂu,•T|n½‚FìO¨DÔ*¨ «à8Õ&¢u£þVyÊÂB!{‹Uþ™m¥­bvªÙåTnÈÏóà6õÆØdõ1ûÁLvJÀlºfIúG„6êUN´`Õ17s©ª²•c‚Ю¨tNj&~VßcÁÀŸ”¢V[ãð‹UÍ™åœÊÞÀ^HPÝå$\@1˜Á#TUqˆ§Ë¶¶Ž9 ññú ùP­6–P$«&¸ËÁ y‹>èïEÖHF)¤Éâˆ&Âõ8½*c‰¿šµ×Šƒ£8ƒÏ5gS1«2ï=”®Jce³_:E¦—0‡è­Zr© ùA^žÆ«çtÉ«ìoö–YŒ :®á)0—¢Ä(Ömm1žÆ6÷¡?¥³—¸†qx‹±Œ—æ‹Ù¨ÁQ›\Ǽ BVˆ ¾1þKÚFkÔ¦°V ÷® MÓÖ…õõ”ÕŸ™ñFuIU5y f †½ÔZºÃ€–“‡w¶†ÚñËdßy‡Oñ'ÏØcx}ÉÊÙ%äW–Fíð>o Ói_‰wØ\ü wÀ)'ÒÚL‹Uiú¬nq‹S¥°¤ðÐ%8¥²V„`#DÀPö'd@¾ƒ2œ%Û~‚c©ýóÑWÙ^ÅàdfPSX†gi“÷Võý³Èé\è~L—ùØ~öØß2<»w«gëÏòЇ4KÅâþVæ5–àP!²%{úEòléVŒïuj³Ô5©!_â2Þg¶‘­Sv§vÌ ë‚Ù7# +òR0,ôlÈð,^ZÄs;ðQàgæcOêß™]¶=335ý˜Ñ–’¡¡>ói õÎæ®•”ªfS5†ÏaxÕ¯ )Mv§œWÏv÷X˜Ž·Õüà4Ç ÑÄQÛ(nÿ 0óøÇ¦öÔfÂïúe>^´âWá›Ì‡¤ñ?”ñø®ˆ\®g?ÝëøèêîL ÖTy˜o€?5e–ùÊ8ž‘Bãñ×/ª7›è(@¤Ñ'ñçü¶…#E5|NW™‹ŸÃó°˜ÑƲ‚­ä.\jD›ÌÜvŒÑß÷-ýcfçĉþ+Æ´"íip–™f<²sË¢¡8Ãdh!Ï o“P+l`È !–ÒQ\+zëß<³¬wæe:hž^*ýTÆ1¥ FH3Ïä«XUåÒÇØ¶úO¬üò;Ô ´V§Zð¾ÝŸ½ÄÙ2k »õ„/C°”{LäölCÄfÌ£­ðŽ{ì6ô—K`ô P(ˆö ôi [ý' 2ó³|L@Ej˯:o ø6ø’Ì–Ö ù6®SRtR;^Âq#jeXöl·sa‡´ÉþãôLVJll— Ì0?BQèóE’©ýÂÂXk1“WgÃõZ8Vܧ«æwÊÅš6Yã2%¥æí.;`œ×ëÎ%oIþnýtøÞ©Të÷`þkèGøRý«vD?⪘ïlàÈïŽGD--¿å6}F9ÈË"ºèÎNæ¹ÖˆL‘QŒwTiRÃÁõ¦a1ñÌñSëÃê}Ø=ŒÕF9îRU¢‰ø‰F‡=׳¢“^Â=bµÂ®yêÝ„Qr“u4˜Á\&ŠoØÃÁÜ“é<j~Ýx ÙÂ(¢Z˜¬î™¬U_'|ŸTEû%åSòùÀÊéAó§ø!Þ³ªb%ÜYp$Ôe«ù$>žÎ¨§r^£ºÖ¿ì´’5Õgܨ÷”Ÿiÿ†£™†UêÇ™Ry1P¹UšŠ¢)lÊψ~j)íÀ0[¥RQ,̪©²0³ÂOüÊÞb<¡¿g­ÄŒÆ¹Lãw1·\lsÖ±e›Àu5syq¨mç’åm…\çeŒ¬C14ü˜ Æ0Ÿˆ„Gø€• ½vG„ÿdo‹¹ñ/8‘@ð”¶@+HÁá >¿h4ÿKTšªIh“¬GU±;,¢ýü·±,ˆÎSøŽ­pˆšé¢1ÎVùÙ* «j-.¡ÑV'Ž3åÕžîÖ›‡(×BN1DE)‡t\ yøM–IŸéÊdåå#Ç:°x…§;í‰j¿¸Àïˆó²U°vOý®|Éæÿ´*,†­p¥ °M¾CÍVðó³TÛ÷U+c¤R3›ª¦ö±2—¯‹hÏGQm ûðG* ËC~Æh¨/~ª^–&³9Ÿ¹w~šƒæ·ßgtŸ•ÏÄv >æÑW9OØ/(ÂzX‚ÖÏÆê°½ÆEMYˆÈÞóÂŽ—¢ºªÎà8óó°¹V9 rê÷¨6d¡ß ½šNYÅY6…™ÓÍ4ŸMáuX[^FTå>y>A;6“àou—Rå¹A¾Ã ü”œÅz& ÙkÍv´v»AÛ/'«gj”ƒ‘öJüK¬wvà ð /M Ù]­­¬ ©„PŽá\¹Ç* "°¥>N›MÙ1Öq:xÑÌ nÈ,ø½tüôĺi‹YuããübÍvŸ§0ÞѾ°ãP‹¢Õ5ü̾ã&–Hñ.µ€íXˆ2` ­…W‡LŒ†lëƒN¬Í>²ª,'ï¤fÑTªí4Eeñ˜“þàÛYúªˆòªÁXŽªð³ª#õàªõ` ØFº¬ÖÚKéWº›‘˜~M̓Ñl8‹– ñ< Áž€ÔB} ¼8^Â`؉v„]W>Q5°KÄ Œ€ê¶½X- &Îÿ¹*s­¢Þê?‹Y·i;+.Nª›âoVS•ö;|Á@K5Ó\ˮɫ²¿œ >Š<ª ž¤ÐJý°š°_ØM {pªõ[ÑEø“âá&V+e89 „Ðe*¡Eïé?ÍÇ.ÃW Tšª 6܇îx…ßT~:¨¾È¾&ª‰x\SôVÊgŠ7z.™¬NC¶¶CVüfã! ·äWXÈ~±×A ú,:«f½ìO'3§¦G'<ðeMlåøÅ™ªÿ¾$òDØoNé(ì®àÞî˜åº’ènéžìáž;žæZ'Ñ@ÁBñ?¸Œ§ØjcI«¶Ì埙n=€&ôZÏåBÇq×6m´»·÷‚3§ËáÞ¢ïÓ³@'ø‚[í ²€š'wC%1—1>V/ïØ¨>«mb\Ç~ZGµ”åõö¥þoH)jË7é»ðxÆ/³¹l+”  –ß ¶Âg®ùÖ¤´…)3ìAñy>´þ÷uÏW#1Þö§¼Ë¬È9Pœ7ñ¡>¯©mXŠ5ν¾cá ›Ãî³P댦r*®Á9àjÖâ™—_Ònó¿ù`^_Ý y8 7Âø•) `줖P˜¾P3µñ_ƒ?¸F+©N€qà‚ ø€½PŸ±!e¡;´ËžAíáwY” S°Õº‹‰p£ Øš³™ì:íÁ쀬 ñ4åPËa&ìæŸY_ÇŠ®è£ÉôZæÄ2´ØNR½i²*JÈ]Pš“’` úU3²3Ø]ÊÊJbKyTœâ9ìb”‹šB Œ–ç´Ãì0+Æwòs|"›O½ÈPiì0Þ†E0 /«øK©ê¾–OE%ǵŠuä9í<+Þa¤î´z³xžO£¡²¥Ê¥i<¦`]è%²¨°˜…G­b±ÞW—ñeSåQ5žfÓŸxÖJǃ¸—ƉƒšGü!ºØ¡ê4¥Ò l’·ÕÿúŒÖ½`‹ôx»š™Mì½f£¾–ÌjeÙÛ Ð,×%{í3õdëCð¬ÍT~clp¦Ù ÖÚWdn罕IÛšÑ;ÐÚ_+Ñ0óÉë Öµ(s—o\ ÿ¥©CÏôšf}ƒÇ¬-UÆ Úx®êñŽx‰±g꨼­ZÃe´y}<Ý´ËÑPø¯É7Ðc­Q Àh>EñPdzÍZ³?Ùßì:¿óÊv7µOÈ.p„í…L*bï,rõæåä%yÃþhô , <òùü¥ÃýGñ( 7¿«žPÀ˜3hd—%`Œp«ép‰"­]r©ºi1¿Ò*ÿœÌ|¾é¶ÛújÔƒ£¨AmvDœ ‰‚ûtÏâIhmÅZngG}O¶DG"ßÄòR”*mUWŸé¢)ì³´J`/ædYÅeΓüÇŒnª¶|ûÑâ?}¾ó–6ÞQ¢ØWV˜m×:¨EZGFl‚ýJ͵»¦Öþù)~½ü]æçûäwvn¨IÊkL6+†füæ?jmµê±Ê*Î9Ú°˜ôÅ IDATˆ¥¬‚㻣¦ð‰ÆúUOœ£¹v™a&ͦÔÞj #0Íþ7àö-òÅûÃÓ×§ô€Žöb•›oƒ:| ¸ N¡ø¯TF?ï¸ ÊÕG4á|k…)†®²t3LÆØ•øsñ‚9h¶½Eõ÷ö¯µ~d6OËø‰Uøð$‡ÿZÅñÙù’G±\ò§?]µ¼ÐÔîë )>‘ô>éW!ËÇšÁkUùtõŽå²÷ˉvº Ó±(ƒ?Åkq‚¥@ÁgL§.ú¿îö®í2*HÖm¯k–®>ËßU~\Q²%|’þ á¼Ëú:YçO•`}Y§òº,NÕ§tx!C¬rví` û¼,lNäø(}+ ,)0Íñ@?„!?þ"ÒôßYw>šåNYÃÚADñ©ÖØáeësU=Ö»-â©w¿£Š÷½ö€µ…ǬÖPgµÏîsì#ö¥á#8WÜÎø„rÁ3­¾6O=ñþpó$E–àÏaŠ:ÎWj‹\L„@%èQä·û±Ž m±šBéî›Îçö*еSÇÅöPv ÿ…ëJ££xÄ*©RÝOÙ^,b€º÷d7 t°'À¨ }á1Œ¤÷tH4¡°Ÿ‡¨sª6©cPËA& j.ûͦ¼ip[Ky?çQõ”mãŒv¹Æ}ø¤ß ù–Ô#íˆÿ™ã„xêKõ~ ©êØæ>Ï?Úõå0õˆ ×9woGoø ÓÂ1Ž+x_Ç% ¶iÿ±L0 —tbMr±XVTtt´pvb#­/ö[ªu¯k£s,:YY{+ ~âzQõaZS-M?h QM¨“j#Qj/·Ü‡w´Í®b9¤\,Êé‡ì0y_8ÿpHϽv >PA˜q‰úó¤à)s«:ÊQØjº_iÓa3ÍñD„Æf×gÄ©=Vº¯ØeÏõˆZŽWb’øÀã!™¿ÄÿQ^3›§MXXè¾³ÁA™‰ ýCÒsÊêÆÆ`S÷ïúZ<<˜9Ë_Ñxn Ëfqž¡a¿²Ú4KØŸQ˜/è‚ü¬¼ÐÒh¥ì9åošOÇÚ%'a1s—Ü«º’7ƒ¯ÍÜV'y"tIØG÷áã)pw«¿e4)ö=ä9fh_ØmN_|Kä'û­5M°®ð¯zäà;äkojþ –-?ÛeY@fµzØß1Ò+«¨]´Š_…u*?ÍÒðírŽp”Ö:ö8‹:÷'­6ê7ûHÙð#;î.ȶÁxv²mr¸h£Õ•íè#ÏEµ ÎÖü•º«²éÝU=yJ5g1œ¼8UM¢rØ÷*’»d kzÀék¨H_ªV¸‚gifvë‚­Ã]lÅ‹2·hw ,¹d+û‹½Ðlèìähè()à[ªÂ;òÆZCÃð·ÌlgýeƉQøT4tùÙ]zÏÚ5”CT‘ã ;#Y|`^ˆa ŽžxýŠû½&`«?Ú—ßw60,3TN`WBÖ‰ªÃg6ŽQ ˆÀa€0€JÀ՛Ű9D­¤­ªþc±–³kÉuT×Ú%£zÖÕ^²åŽâ­£\4ÝÁƒ¬4ëîÚ‡½øC~KÕ§qÖ8í_v'È jÍVˆ¹|'20aµE5ð}³¼ì¬ƒýê­P±¢%nÐâèx¨h˜ßmçà÷ø'Ÿ` ꄪî²äÑl“~˽Ï1‡z8/ˆM,U\ÇÿرБän`±Üë8âÈ/@_ËES]g-ÔÈÀ<÷ÿÔŽ«èð#®}íôº‡ó¬êª‘]&€”Ô*ª[äs;·l£ÖªCÎ#|õÿ ‚;²% Uuo÷Ó0öƶ¹±Í‰³±­ ~lÛ¶³±mgc 23Ý}oýs¼i]×LÄÊz‹³*a§=×YèÿÀ¡`§¢^æýC¶Ð\·¸©VTS–C]©qý²ž;}í¢œúðd„5@„ÚgWê½*´söFFžòäÄK®ÆÐ;4,9å—÷žÃÞO)†ûD,‹º-¤#oa9h Eé?UWtNÝðk¹ÿ¬8«¥c9:´5»¸›úú…G¸kŠãæU‘Î(˜¨:îÀ²0ùäbc•ÕV•Ö[ ….*Z[2ØI/„+0›IÎð”ÿŠ·!=Ž ­ KÜgýÊe%%—N°úóYk½µX¼•ä=㊹•,iœQó]gåRwrÃ.¹(ñmRa«}üùØú_Ks¤“Ï èŽÇ’pŠá0ùѬg¤¤xLÄ1ð¯J§s«¾ª‘èŽíྶGZ½B·ü§¥% Žá÷ñ׿¬ÿî$ùc['Zº«@Wq’Ø+~†æURF«šWò9ËPÔeªébþçÉVÖª:|*¾`\›5í•XÑ÷6ðÅ$2/Å6û~ÝšZ”lümäÂÃæ83…¸g• Í Uñ§O¾lh=qzË’Ž$¿ôÏ ²†‰RvY­}AOcZ”ÿ1>†—sPÝ3ꎄ6;»tzðqg±ÊN©+â÷߯íþ<ó‹ïséw×>gLœû*nQr ³.g‚l\—ǰSÒ,~ ϸˆÊKéñ nÀ(s ߯× ‘¤"UAÜk~v5.Eýô®5JãkÌhJ¢“côBØ º_ !O°K°)_Â<ìùÓ7<úaÊŠÑ•ÃÒ„µŽÞqÍóÊ<™*.â\T†ÈS¾ªž ꮾjG&7N<™8Ot^Øx]…=Ð ŒÂ!¢‡¸Na›ô{7\U¤KŒ#uj=“–p1Ê‡ÛøÝ×µì0=.tÞÊm•·sÙÂ9Œ³uO>ÎiTs«èïà‡äCIœ?ý É'yÞáü »É%ò„q¢mØš°h£›k€ÜMk`+x1¥I?Ð' ìãLNJû¤µZ?¶k8ŠO:¶3Ƚѷ7ü_Ïİ…á ‰›ü̾bT³gÖPÝ“¯¨Üz¦Ý4˜Îiâüªg?¶šZ§ƒÙ‚߃ÃÏôŒöô²]þÈc*êœç}è‘r‘ÓNÍ‘§õ)þ?$ŽHÚ_*ù¼]@-LšXn]µ¢“è$NµFMEÑô@·àX¸hêÚîøÃo»&ši\kDW•/‹¿Ç&r oR%CëƒÿƒUÈ_À:ã¾#fx¶¦~/æzËF£ äv´òZYtDGÕ×`•3œÆ:GB·¯ƒ¡Øù?Ó~þçK­¸¿ŸÛÍD_.nΓ÷9—…(\ÄŸy¸¹„HA‡dfX¦{ÓX©+B+<…çÙƒp‡.[x(L×Õù¹ùZìñž94ˆ®Ëuâ2¦À(º¯õ_TJ©y°p¬Ç1—΋&®Ýx‡æ¨A\ˆ¯àaœ‹à"¶à—<óðJ½šétP\b¯® KÅh‰¥á]¤òºÅceŒÁ£Ðö`'îŒÅ ?DC-¨‹; .Ò—a-Ÿ„(Þ ÍáЕq–€¡‰p¶Ñ¹Õ5½QD@(A.Ï×8Í•Ñlpq÷xª%–¢, B5á T#p'~€{âì¡?t• ;c/û`º8S`ŽP‡Ùï0‡Ex6Ä¢4‰OR\ÏÚµ’ ‰ twÀFìÑ`;l1j‰-;‰>XT>€>¬‹p¨ Øa<¾dAªÃ5TW)!YÝ6îxš \–²Ôêøíº*’"p%õ®qÃÿ ’¨#ï“Ï|‰äTs‚Q›Ð(êGdW,æ|²]rÊ`®äÉiTRìø÷Áe¢TÎv§”:¥ö«‡R¦áFÔÚ˜«®ÂI5D¼“8÷¥¿£‹ÃŸtÓð^ˆ¡‹¼‰7ñ[FÒ½ôDÈÍ#x¤å&t& Ézp^B"4„–¼ZÑ2-±*Kx  t„x\¤&c¹ÃC8ÇÁ(n†e¸»qv²Ç©B\Œ¦r¼Êõ4ªQ2µ¹ÛúX`‰8…uý·ìFjfð ¢ÕH71†WÜóæ£Š°›=TjèÜæ#YL‘Ñò˜ñT7»òÕǺÍ, $š]÷”ö]w×¢ê‰{‚ùn$öJž·Ø_+1WüÐíä›jH¨¼ÕÏ5°”Œõ´òíðŽ »]Xx¸–ZìòÒ36}ÑîÃnGÐ #ì¡×–M¯Í“r¯èp«Ñ»òwa(¼ÅÕ25ùÌóæq”Rqò&¯Å-|è ¶å'¡YÏrúÃ-ðœú —ª=8ÖHëB¬„ñÚãoßï;ünH}çZÖë°zaýÝ5<ã}_¢#•G{ÌüÞÂaeÜ…"³¹Má6Vˆ )ii mµä î ñ)57ÚH¯‘Ë5\õ·Ÿ«¹Tß<7][D oðϞ—î¼f'¹Á¾é¤·—âÛý~ÈšÜ=évpd(Ê:Û¨•±ßuÇ3D.2?¸ £†*…ÍŽOÓ\N}2|gÄ>W¶”-Â7úòÂ1néþöZ«¯u3ØÚ?04 9Sò_zˆþ¨â‡üBÛCYítS%AiXdqØþ.b¹ïû¹«+ÎóŒ1[QYËÔ.ˆ·æ:\¥ì}v*ø+P04ߨz.>¤Ýà~q0¼¼*/zò[U_º¯„½[EÁ?\BrrÓ]:ñw舓”%öê¯a_ü_{ÅW NQa¾a8»âY*Œmõz½ŸÁ@jA˦ ‡D=N­spè‰5y.~§pž3C=Ù†—òF)i>õ6_Á&úàÚ@ŠZ‰Ü´_@7~ [ùGB8æ p“jÃø©x(ä‚IÎ&ý7Ÿ† ðIÓ lp‚¬Ííõ[ˆÄ»|†o«Æx]íÀÜË¡#ž×'á+½€¿Tz=Ÿ²ð3–XÓ@)¨‹})\o$Iãp*ýÓÒ(½ŒgÐDÔX“&âQh¡MáZhâyè—q9Üâ¼ âá'—¡çÐjR!˜G9+ÖÆýøÚÁn¨è0UŠi‰këCp–` Ø kq¸>†·`3­ƒœzž¨ ï Ž6Ë#XXÇêBÜB÷†â˜Ó@,¤WpÃHP)•ų°+¿„ ªóˆÞÃSÝÇøÁÑ<·ÐÉü‡8#¢ìïÂkîâ­ÐC ÁîxšFÒ=Z½Ù¬¶€Ýt=\çbZì‡í¹œæãÔWž£fœÆy¤¶ò©³ò&p,ÝÙ¸-Nq ç'—eá'ºI¿T®EÿÃ.@b2ä¡z¢;Á•M”Ò…x%ä¦Ú°·{†ÓŠšü?‘Ÿ`;Ôí1=t–ñ ÆÙæygWSWŒ‚<—‹R+ê"VÕh®QÔëÁl¼Á]Ä©j?3ÿÎÚ–}ºC-ýÝ’ŠFqMB5ö¾‘WåçŒMí'ö7ëˆí&ùïÃOXBÅí\ßÎàLR"ðEN“sLÓ©£ZÃÏà_Vœ;ÞZã,öeëev³’1Ú¼/ÒD\öôõŽï¶Çîfí U†Î>Rgôp<¬ƒz¿Ø!‹Š§ôÎ5ÔÜ!£ÜCÍ e6š@)_ƒœöºP &üÀ»p2Ð)ìEíäjfó§·'53¦„¿ö¥–©Ýs|KðP¸Ì­¾>á«£ïG‡EîÈ—ªMx?vfœ¹3£ËE9 Õ‘Mm›Zz~éQ;">”6´&¡·ø&öÚ·#¿Eïq§ ßžMóv–qXVÜåX[°@dðæ2sz*»›x9j­þ,Z¦Ü#G»-‘ 08Çí(m«_V1µŒWè~ÜJQ¿ÕE«kè°Ó9.ìwÅP‡¥¿W·2[‹¹{„×›…ô_œM‡©\V]ÀMø2Ã8„çà´bðOê‰] .l’/UÿA3X"cöãW™—÷q2UÇI8Q–ƒJ–7`椊ܞۋ<…hßê® IDATùL˜‰!7h7î†üÒ¸L×°²Î¥óÃ]B5Çì|¡r”Ån£»AäÆ0eÿN,¦ÃÊú*fÆ8·âYœ‹è1ÇÙ½Æ`=•ûðø¢C ¯¤úÔ‰¢}TÓùÁ=±™S]d ¡ AzîËÀæ³ülº£‹é‰pÎÀ=‡OB&ÝÆY¡kÂ:j†ÃÌjð7Ô7Êá â®ÃqÚKwyŒjŸõ{à4ð€ÇéÔPQ ŽÔýT4 „ìN[ÁÕ<•‘Ÿ¨Jqyè¯ß˜[œ6v$=‚åºõU;ePëú¢šlµ¢ÝªŸÎd”äÛz¼“‹ÂôÀMúŒÉ–£ º=W^‘ÿònÚJ ô?¸‰+Y‰0¨n‰¡ê$l…ÉüS.R õgoPì”Â[ÆÝÅÌæi£“ }“¤Ÿ2X{Õ:'‡Xñ½C­S1¼ºbõ¤zÁ´ª÷VW©gÓÅ«´Š…Á ‹x©Í(UÒ:Ì;õ>جÓ9+tœÞ çPéó|Ùÿ?œ£óª‹¾E¡ÚÉ?Ýu­=©ÞNºˆSÇ;Ëq«Þ V²:(ºÙ‘¼I~ÖÍ)ÂÕÇ};âDXv#nxŸ€Ÿ×ñDʯ‚Rd„?JXƒ—ðê‰'U]Œ õ Œ¥uº96Åû MëB‹Šöj87†œSsÌoDQÝÝ]ÒøK_ç8Ì®ÞÊâ,kmwªX3a<Òoé±ü§a{§‘èLmI3ÅdN âô ¦áWÜ ?%eØCÍ(‘Oê·\€óÁ"øjs¹‚]×îbW×9uS1›ç‚9ì⊬ÏW±›£–¨Álö$=%8X\6s8•ÄD™ÎB¸q -<ú 7¥‘*·ª¦ûñPÜfìdQµÉeÍÜzš§¸'<1¿Ó,4ß"Йâ+þm.ÔCõ-ò$”ü}B_Å=Tΰd8 µÐkõñù]÷y‡oç©.–Ó}[xÎÐëÀ…TwÃ*ˆÓa"öë×î½áï’ךüKœLF@–§vÞš2ÆÕEDÁE}W…Y<@%‚x1‘š%wSH]ñ Ö2e³“¬#:Ù­¿ìÚvûºÚi *ª“ÎRjG9ÍDu‡³{Uf½ž¶©™Î:5t˜·²Qˆ¼î•í©fñF»úÈE´“+¨-¬¿õàÄ{‰O¸˜5Ï*C¾à…@*u%”Æ*iÿ¥¶æù;;o¬‡þT‹^Á~ÑßPò_pÁ]h,Zb kNíÔÖˆ™îºš{¤Ûpl»©îßXø¦\xâ©]Ô]Ït÷TËSlLU'Õâ4Sœ‰ü/2ÝDöÂä„ÁÁŒ ?7ý92nÞçá¿(.,ÖŽÏ÷;_òÞ¯ÿ~ô=ðµYlØç²j¢ªÚ–}y]gdhž³ÓJeWµßè€ç‘.$SP¸Yͬ¯wè>fO©ŽÛ¿ÕsgåÑ:ÌÉ©ŸáIã­Æ;¼^P5ÒÏíu%˜ûYÅB÷<×¼°ž©¶yŸ¤ô¥ÿ™æDê3a~nä;ë^æ9ïDÃ7Y^ÐGW¦ ÄíCAg¤>àÍå®ÙÏõÜý‡ÔÖ9ë<¿Ö©J|CN5VŠƒág=?<“Ì”N_–E _>È€cd~×~YÂ~djOW?Ÿ‡ï§èê¸UFãµÉôB¯ôœ‘]éiݱîÉá ú2¥VU»ŠžüAþ’Kå ñæÁ sÔa1ØóÛúqØß~””Òrœ¥ð|â¾w™XäÛ–ì*ç®èúOÖñv÷|pÿö~\,ëê%">˜×2BçU5ýNµê:/ßø…¶ã ÷߆Ôûå—°èÔûè1”r¯TßíŒœŠ—èÕ<r覘AÄ4ô)ñ¯dTG>E|È뿹“wá(÷åb5ÕT»á7/V&­¢œ¸è*Nó.h*öÂFxjOo\Ê*„c9NÄñtþ%¢ù|áÁp…bñ™¸m^ a°˜ÀU¸«u~~Šñ„ ·x†}ùžê§97P£ð¿I¢ ?ç9ú’^ˆðO<£ðkÎ3¢ $7Šþ¦ËÉ ÛuOÊŒ…ø ÕÂUØRêÆº…ÜÌ»¹æÂJ¸MÜ…Ïpˆ7:¯Óhtá"•&£©Ç⧯c z)›âb:‹ù•.É q¶æ/Î)Ý•cñÅq8ea3N…–*£žu;Ч¥f7g€ó…æàl.‡Çà³°àœù\f¥,ú¶j¸ˆ³©•»ÏãrPÐU”" +RJHÃÄ:e`”Š5 ˜­a»ª©FñyU@}ÃÂr¾„—P €0?´”¬–s6Û/î¡Äð¤ne¨ŒB|¢²‡Æˆ|t†o¹ºçŠÓÉÿú—ê–0ŠÑ|vñ5“wÃ^8q¸Þ ×ø«nƒx8ùÎvÀº²%…<úUÞia³ÒÊÖ`8S@AmÞÍ÷uwÝ‹6Š™XJ?R©ð¤,-kˆ6z ‡*"×@g=Soᑪ­Ýö%XH‰˜Ý[Í›²,­]˜²‡J\Äoá*6 µÞþz§z¨ÇR ¨¬CsØ„¹iÍ—Ýì ú²3+è·º;/bÓĵv‰zú~è®{¯a‡Ã9Ì ©‚ÀÑb=¤£xSô|ΠÎr|€'Ômz„lp¬¦Ëëº7í Aæ.~ÂyD,^Áɪ–=Uç²cÄ ‘^þ©Þê¶ÜÈLqòƒc)í¬4DK¬ å± ÌÓ'x*É{y3Ž~,Çßà<øÛÃqj „¸*gähÎp+lÁ› ^‚3Þ\ÎoŠaøŸÝO׺Îs9§Ý C=}°%cw5D¹¹1 %žiáÜ×ã!ÅüÊP )Ò+ŸâvzÍ¡2Ïæ)Æw»‘mó®@5ó?t×qòª¿b?ßÿ±6}/¯‘›w‹|¦`*¾.ŸàT¨††—9?œ÷|Öúé,²À¸‰n§Š¢<ìÙl.uÕW—¡.qŸv-ðH*lMfÒ­ Ð“Ømð»ëŽxD+ä~ú@˹¯ ¦ôìÄkX®è{ØKo ¥â<Þ òpGÐû †pq÷A_¼¬›ê­|ZfÅ­r(GØ 8µÎHg‹³Ð:h=ѶÊc?p¶B lå=r¡û¬»‰ˆ~؃Mñ=Ì3D¬QÑ|ç¾âLäƒÜÐY£rªêp‰©kÄ9Å)è–óLWb²ÚRÕ²o;&¿†CœÑé.Æx[F,v-ŠˆˆX•ªJøœ¨—a?p2ž !.˜!ÙŒ&Îj%ôlû»¸ü-ЉxH„+º!U$ÞZ9ôßx„óè†3e+RUóМƧí§Ö,k»]C+'‚öèÆ<—:áMl9ÕUg:ŽPÔ ü*îcõcˆÆ¸ŸŽª ªN Sr¦b² â7˜Éüé-Þ˜ÓÏ.ÙD——I¾bð]pÇ~œŒÉFiú £ø9§â·ð“vñJY],áÛ¼F5QuC×‚å‚ ¨)fWE¬Ù sð:î«gâª'öbÓñ\g¢ÊmWÏ)êÊkr$ýæº2þäAmîvz¨!4ƒâ!ƒ @iœÍq9¼Çúƒ³vpwœ%óDÝ”6:“ŸÓ¸ŽùÙÔw  hŽÏ©1­À\"J4÷%ùµŠÑñ(Œ†xFÎJ ÙÔéø9NÀf|³A_–šA]}TUãÚ}´Ÿþó•x ñJ.É¿°‹Ó×ùn¯¡ª ÝÑÜæÙ+Çð>ÊB†N匢 \Ñ;ÅGê*vãaº‡õœ$^e± ~‡€ìjê7 Bãs_0<ÙëÎà[6ü˜w4é) EŒoi®H”iÅw˜%ÖÉ+ú5lÒiXYí\³ªd]€2Puc‹ñKN”¥<]uÍš¸S:õ“º= ]Ò¸.W§µüÑOCE_ã²XîÄè6ºRh/Çê7ÆküS¹2šSDaY…ÊPCµŸÐ.¨«{@Cª£ è½\Hßqpm߀Ox²^…ëá›ú/ØÑÎxc—`Gx‚‹ÔtûƒÎÍÚZã~h4k¥4s›¥’–û×þ¾žØ qŒjÈÇõa¨@•©*…0‡1#©ià‘ÿ˜Þ÷é®gš'2¼½‘àj&gãBMUU‘³ãOz!â6òª9Â/FËþôf‚!«K?æ7}”Î\çj'®Ápßc£¤•¯ŒNrMp}0æxºxV˜ùÌf´ÛL+nÐ_UU—K|ÇE;µÒ{;b¢'UØó¨ïQeÃz†5v7˘çAiÑ ¾Ê¸Õ‚}üÃs+šáÎ'ÿ4£=T'üÿa´,èZe$È ®þ˜Y'£­#v3èØî¬ÔglÇ髯ð+¸£Óy¯yö†õqJqÃÕVZ^ŠJ ·ÂÀµÅÕÑP” ‡¹Z $“U'±9yAð/œQbe', õLº’”Ö_ÍÿÅï xœÎþÐbOGoú°¯á=½Ñ¾”" —AÓ>µO÷Ôÿ9— ,ËjÂ>|ìzâëäžé=qÓ{ʰ|ï̾¸R¯e—óVgµgØsô<«­µÂîh¿ Œg7l,Êÿ¹ŽÉµ";å°ŒPžÀL+Vw²“tg±TTã;à“,PøŒÅXmáãÏ| ×Òú›D9|mguÞñÿô¼¤o0×è¦ä–Ôbíó̶Êc·ðsòÞAQûù#W0õÛ^ÀU çàpÃ`&µÀ:ëlÃ~ZõszüBkWâ³Ä8¿’ë1·N¯?é,N7~Æn'VL˜W4ûŒËê:€ÆP‹BN˜Èçy‡³Y×÷À^<'ñÝ&ÓS•A]¦Ož¬.SÞ1BWl©§Šž4ï©þÜkÀ4Ì+Ä.£v»d §•?õ(ب‹ z“ž‹=ø3}æEªyuV½Ãuc“Zñs'YÅ^\ªûÃ[üª‹Ãt˜…hjèM·ñ Óïø2݆(Ý{™cÈÅýõ Ü£Ê:Uô9«ª©‡˜d–‘õTNç „¸;OÆRø‹ÎS ZG±)ôÅÍ(¹˜Z Oàôç:&~ræé1ÐMÚtžª …;àŽÄFz,%Ð}ŽQÙù“ó˜îÓ5Œ üb OÐ im…;4H÷ÃÅhÀE±@˜€ëñ+G@+üCd|xËÀyŽ€Wþ€ÎpWÀ]<[]Ç3èÓp²™[QMœÆâX£bx[~we&cMÙ®cfÈ.NrF•ݾϱþÄbxsø?ˆáp#êbõ7ž#Ã3OVAë$.€RÖtÝZ‘´œ¿b+,…y,~­À%ÚÀoNÍ;°z°'ÖÁ¾p ¨ôêß ò"äbùÝFNÃŒâ¡8nþ’è˜Ñ:ú=U¦õ¡ƒa+=SÃÚëíNeÏrÊ­Œ¡´˜ÓjßâIΤá3X ûð@zB!¼ ½ð4÷WÄIÑ[ÿIKD|G#aNñ6LÇûPÓ.-ZS;z 78#ÿÒ³¸˜jçP&up"ôSÊ®ñGl(²P˜&s¡û2LU½Bk¹)1M{°þK¶Þ7¹•ÅâĘÛð}Nƒoõ~§UW®€]p'\”áðâ]ÌCy£SUo×oh 5À$Œ„Ã¥ã¸x)Ÿ¨Ä¿È¿í¥¸ˆì`”úµmrH y)ÿó©æöE®Íȧt¢(gì• /)§³*˜Cü‚6Ú’ky—ÔS°ù`2>¤ÉÐŽÑ3ÑM|‚Žú`'«·sÛé™y“Æ7Kq7ì´æ™ã*4¿“Eq¨¼Öh~©ë>ØWô“ œ›‰2"#)ÅxzNÓh®ä¢ÞÐ9“[[uÂ>ª.óKÏÍTCû‚ÝÏsÑ sWuu³Ä‹Í4˜™¶Å\'˜×Ì|ð)»#jÑP|‡ßä…øˆ óäpºMûä7z·]«\ßë0\õpº©÷ºµ‡ï‰»²„gÎó&zkßu¼+Üœ!.a[2¨n¤l‘Â?ÕÎ IøD/‡´æ/ãªüÃ,l,•‘Žª aõ}££Ž¸þö†»Nˆ›T—÷óž§.‚ƃ8Çñ ýÛðÅ™ ÿ¨íx +á'îÒOK³ƒ÷¶ë›ôÿŠ:¸ +ÀÝ6á(Ù ¦ŠùòÈîZæ*íŽ1ßɽ®.Þ¾aù½¿ÂÒ„µòĺËr—h¨MÃK]q©YÈ|jîņâ»,šN©u¼¸_µµ·Øyº„ur 5‡éÂ>G×ÄcqÎ`1«Û;Õíu¡Á”Á_¢¡Ü#òê¿à?Îhh „?t&§£«‡“ŒéC5õG/ØMELø!gtw5…cáxž¨ÿSuy§´kë‚pSpbìÏúERLRRÒßëý<ënkç‹ÿ(¦e'°N\G¡0VÅXš/¢œ_ê<„)x’ÈÄsê%Ô3Ô9ƒCØXµâ"XŸŠP$yiØÂ—éíuõf…¥ŒEr 8 ¿ÀÃ=´€½0›ßâ.ý·Ì)ÀYÀk÷ÅJد«WÎ`s—3NÍĺþ¢Í`a&ãV£át¯B^]ßð%Ž)îW÷À&{ð(…ñèÂ`8XJ·ãâ2<çh¸ §@;õ•Ûêú”ßRj§é³—sz…_àÕ…ÅTF=†â <§ )?ÒÔNàÔ7òWl!Þ`ÚŒkp§.]¡«î?¡ü„+°šocvÈï$È}b-Þá:\WüÔ¯õNè&ÓŠ`ò$áwúªír7õ¤®Ïj2œÃ朑3@î ça$¦Mua¹¾‹7¥Eÿ 9c`¾hjç0ÆB[Ç =ûåÃC\5"ƹÞË XÂÌ–Å›è›ï-+rÑ6hhÍ÷'Å.ÓøŠ(G+©’h(‰™¼L¬Öõí4Ü–á&˜œÿ¨´p¨IœAd§2à\ l TÓeú)÷©p=œË`uz…]hÕÁ7”€«a_„ßD­¨]bÅ~˜o΢гÈ^¢‰^j]-ÝÙS> ß}1â»ì}Î ¸¦ê+TÈÇ=pG(g bRh¡S©ß4oá!\ŽïÑË¥¹ÝÂfDÀx Ý;L\Zf¤%0sáT§;.Ö[à¥:§ˆWÃv] †b Y.@˜HoUušêRü7ìaeDÉÙ<‡bdoý}b$ Ç.º0õ£LEƒ²A=¹ÓHÅ¥ù›÷À £±õZÍä–Áy7ãߪ §áº==£OX…¿ð@þ¤³ª±zª±™þƪº>ü ©/†%h˜»Cõ)ƒ)¬Ÿ|H?LZ ±0ž_ÙkõXƒCÕ:Â)ù,—5ÝÝ¡ ×EfÙÑ;\ϵÉèÆu&\Ñ8¯RFQƒê`)ŠÅà.‚?¬&lðgœfN„i¡æâ>½µºY:¶Ú{Óž‡w<­½åÝ•½ëÍr…1Üú™“ŽˆNb–+5õÕ¿)¨£¹9ûx8Ü’»øoàÔ“ÖÊ|¶_­.«ßpŽÛó;Üæ™(-ùÓ=ݬìr¥hmÃŽx]Q¸\–p]2RŠD±ÓøËyN)å ž%ñ»3YO‡ü'nÐ!,†Î\Ltei/œú¾ÓŽqO¼®“±’+ QÝ.»Li¼#eN×ÿÌׯq*"nS&{ˆó‚’Tvî€yT@ÅX—<Ç]ǰ­—ÜsÕÞ5¾®ÎfqW/Šò®Z@¿ \h4´‚½-ǨY\‹'êrº¡þ vè Ê1sj¡§©Rø›ß…ÎÂ#åQ‘ÁbÎG(|äl”³“S×'Í´›Ù)ÕQIìv§ 5î•Ï4Ù-\;D>¡Ý ]CÜm@òÝYѧƒÇy3§†U>›™ù!fÛ¥˜—)·“‹ä ¨.KS5¸CÏa1”æ/<\ÅrSgž}R}1΋þ¼Vì¶Oq.˜îO£ƒKi´èlDzžàH}•[Àž`I¨ªsr¢³Þ_N£ÝÍÊêi­çª~â„qÞæàÕ€¥V%&ÇoOž¤3ÄwŽ_†BµädÜCÏ1Ÿ¾¯¨Öúk0,®¿]Ù¿?â‘*èël.ñ¡È*¤Ö[¿¬'º–ý‰gò åQÍìQη„OþÃñi~÷åܼIµL,”ü ¿y>¥¸bo_w1§‹t^{°:¤ïðKÿ¾;‚•1¼NŠÏbüÆWz­SÙ¾L'¡¾k–ÑQ¤3B ’œNé4Ð;Å\å|µjª­*¨ÖÛ_UÞ»ì2º‘7»ºÏEê9m°dtQÈ}Ýýu1{'Ýcµ—WÁ~Ì·õc8Auõ ‡ö?ø6éóÏìß/ÅÙvÎPG'»:dµâÌšÆ]CŸátÎ\‹·Àaÿ©†‰r8’ÊÒXˆ‘Ã!«>­Gr!Œ†³ª$È Ò2>ê*™,ø i¿bžˆqhB-~Šá«*Ï?p¬:¤"¹£}jáf=Q?³w‰Õ U˜?Ð|"ÞéÜîA>L†]\cU1•&ê7øÑ¸ÃöÒœÆá„h¨§ò=Cæ¥ 8j«£œpyÝD»ôYƒ³ˆÝ®ò°€×Ùs1åñÀ7Ð  …Ïa\â$>‡Aø  $ÕäCÎzØ ¸BsŒ‚]㱎žð—„X|€ 8á¼”8ɪ ú%çˆÁXÍž¢«Pmú€«°'…•\†‡ÂMœÌkTn¬*w˜7ºðL€‡P—r×ÍtEÕ‡@?È¥wy ™ ߫ܺC0®§&P„îqfÊÊõèñBN8,pup–­SîMy-M »¢b^ö–q+Q70ã÷õغÁ-I_Œ_Ö:ÀdÉ.å*œòDD^W6ÿ«¤ 5éC²/Ô OC7¹XoÓoÅsÑŽ“U[^‡³ÌlÞ+ž9º¼õÐúÇŽuh=ÎÕ†‰x‹{ñOÑ’Ý2Rä…ÏÎs» ¼âjNjçì¥h’\¯vàÏ„æîeR¾Ù§Û™þfÔ|Ñ4z•÷~¸üt'n›–9qBÒð÷vàPì §yè ãqðJ¼ÅÛð'•…ø7â|?9%¹Ì7îQ*.ÔCç&Ôá y,SŸèüey>Ô$¤¦,õ^µ…ß:¹T `[Ô§ŠÜ—CÏ'œóÔ]?R&æ‡Îàðob:¤‡r¯èÎhÕT¬{Í“Ö=§4ÀØCÆÂe¯Ç`$8:¯±Evâãz%¶sŽá0^€Aw]㈫ ıáôÔa?ÒUá_—/¸‰üBÙhS°®U¿Tõc½~b¸ÎG¨ ÌÖ/åc°ÑžF¹úº2ài™lvÒ㹵džô˜·Ò¹SÇÂ(ý7t†:ùá’8.~q8½Ä×|TÿЇp sBe7 “ʤ²P7ïmü¦…¯âš IDATþ‡ð$¯«³L~_KÆU²ìN_"ò„§¤«7qðC¡ºÑصØ8lÏs>ÙËB;Õ8=_+ø‹äi̬èñ0šÁ/cLÅÄBQZ4¢‹\A_6æòâ«'ÌY©Êê2- fÖ]»â*wœì/{âBZN!±ŸÊhøŠå“öPÎÊÿ㊼Gwµ‚pWtÆ—ÿÞ G‘|¹–´Ïó4˜ß9©Öˆ­NQ³–'‹û. ÀxBk'S(-Uç”z“DCueIã”N‚Yà¦wÒ–eÐù§ÝמdJþ/!ä_ý{Ëê?_Ye“s‡:õ_:ýU§”© “H!7i nÒe~Ç'èLÎ%µÒ@^((ÊçF'™I¸è‘n9ôÈAyŒD=ïŠrâúà•“])„ëa£8ÂîÈÜfÉçü›SƒP=§\Ty0˜ò‚ÎJÿ‹,f-SeUýݾ‚IpJEê¡<ïBcØ…éq&êÔNY;&Þ;ógä+¿Î„vIï£ñô/zDvA¼F÷ãZ £t}¸D÷a‰s²Í«!^HË቎¢>A—Ä)z"‚Ô›.ÈT.¯1X<7=:——x*ž§k˜R´ÇO؉|’'p.¡sª6& «½ /°\§Ñ3ð°3Õ©‡%h9,—ݸ‰^Cá´€Ò‰rð¶é8j0¿ã­Úàd]ÞÁ'] ^Àn=‰gé7Ð#ùÿÁ`×Й¹»û$Š[ ܽ¸»»K€âZŠ[°ânÅ ¸ëǽ¸CpMqy²»÷Î?'T\¥0ΫVs<÷gÅ’Ky`£X©VBí&Ð ¢ø°Jƒ^4£¹ ÌÒvIœàö˜31ê*KÀ},㨖t«NÇû0?…?( Cl%Þòz~C&¿USù³h€5ivÃö…KÂo#0šªñŠÅ ¤ÊBtØ3á%~‡v*?ïÀ÷<·ª%FSWYâ);ÇËéò]ÇûðEãtŒR )üÂD&ëˆÜÉ›F9 šk×’ð^)[;Ã9?ëu·*¢tÇZ}Ds¼§*‰)r­™ÎmeŠ­Áh(÷µå42©^Ç¢\râ8>Ä3U[Ž5ÎÓ >îHÇ3ü Êkj§Û»2/ºC·A×ÐwA·³Œ áÚàZ¦ç<]­ùZ=™Ë^fnôL±ûûî$ßÏìa¹='ý¦Š±“ÏÍÿÉe²¨o±µ£à§>N+猋) ÆA„šâÏK·èm°zÊHYÑd²¾ÁèËýTož'jAÚè€1"š¹úÊìö&õI5•Œ„è`½¦ë0Y‘]T)õT7÷øëÙËU˜¸¾—fˆœ¥6Êrœn×-ý ¶AkŽm¸#î¶ Ú¬˜“ìì~p+Lw„ë ÎÙîfΙÆQã‘¶ƒjA¦ýØÎ”×ü{Óº«rœ§…XC/r–ºåü)çp!ÙÏ$3Þ;Ȼȿ$£½#šn¸ö‰~ôVûá_-ø>I ɲƒú‡ª–*¿‘FRàHÇY½¥9h¾ ¤ìœÃÞÆÐU}ç—8Bhv”|!öÉ›pˆ·P$Jhê»e–´oرr4~Õ´ ú-›«NÀÝЃÚc­.ÅéšvDœÅOøÞ³Ò2M>íbÞ“]Uªê€w0 .š–#Äa9…,âhîXŒ”VÎ •Ó‹úƒ¼Ò~kŒ6b‹X C¼‹Ì§–STçÔ'Š!/†*ÃRþüx6ãýE`öçG÷9=D\6«8ò8g¨ô²`Oþ“ÊëWh™s ’»Ð§2Ô¬AúÉÑþÚUZO.£¢¶Â±–«ŸúoÐ…wªê©ZÅw°ºÑËkЖÛEíQòŽÿ±š¥ß^Ãç^%ÿà¿Ýnk”=ƒŽÉHëO…|Ÿßaaj­TAÙN˜T€±ÒÊbÖɘžÖ!édªßnï«’±;òoEÑÄ^bÚÀ'0;ׯÔÊa€UØ ÂSø©ò3Ë»v"Eéô¡Ú?ÂGåSŠ5:‹Ú˜ÃÑÅ6¤ &-Çÿa0ø±Œ½…®¡†‰ê;Oàò¼[ÊgP™OIæ+ËÕ ®zFà-W ²ZozEájµ*€õ! aNpCs±—.6«0uTeEqÊFá0§CäP¯ù3(Œ”Óù3Ÿ£®8EmPÑ8G=•yð¡=IÌÄḋ° €¼žòâ 8ÇŒ'á‹Õ7bolãy zÅ)Êÿ㎜nÁ/.7 U]©ZØ-ÔJÕG8ÕvRØ‚‹ò6õ‹U9GÝù9d@1eC/ø»ä5V-Â8þ‚b0M¶7ðnœGë 4¡N˜‹Á@6¹²ö‚Õ\»$[ê¼ÆG¢§Ý˜{Ñ{µŽýè>îÄ1Ú]h cUušGŸE+£&µË²>(ÔÑ&è¶ÖÂñ+ãGù{X^øÝ¨kÕÆr±_¯ï|‡·TAúdŽÉfù¯‡ãŠf4ò6Më¥^yÑ÷VmuÝp̤ê2½4 SU¸%u¼Î»…×èÊyý-¹9„Úêœõرѱ ÙSd^•nR<ö—²Fâ7m“(B–½Õ1C:cŒ¾ çk/e[¬à8HµÚþ÷Ö+ŒN’±Þó#¤+Q^ ~å¥WÙ÷†d†”ö9Óry^ø¦Ûyå4Ç}¼ã66‡ŠöK-nåE4†þ†ù4ЍÿÔ0U9O‚¶\ÿ…b Ïð@h€ÿñkºA7ð &_`<¾æ7v)YVÆP†Ùçd6¢6ÓÚûd<ަýâ…xˆ â?ewµâ1ºp;UÍ‘$Z¨—vuW…ÂU=·¸!óñe{ áü"RFË0ÕGRE~ Û±ž:o}S•p;憷ª07’ Ô%8¢–ñ`es;ñÙð»‹8÷è<ÅŸäûŽSù:(2Uo* Ox¯ö"™DA9Í< çà4èð£€_ÚU  \…zò«Dx‡ µ£ 6ºR-(À§U~ð Íp^ázAûüŒ³õ”ÙËòçôò ¹W¦aOåÇ8X®–CšòÓq•}=ã}“½Û2Þ¦‘éÝàïD_#wM¬LCñ…ïªQÇeh¥9¤å’bL×30·¼dØ}½{­Â*M‘@ýn·ºÊ¯Æ|ÛÕÊU±º#KT¶•A­|“¬¾¶­îÈ:êw{•jÁ\=é¹\SÏ‚zi•uË߀KC1‘(ŸÐ%5çk{´gr“:b´«%ÔX?‹­ÄE<Îíð¸î¢nî<[1¾4N;vãg¬íÆYÚ!^mmñLõŽ·:[}©sꮯš}R¿–mžÔìçâ3~æXu!#ÈWÙÊk®5OX—1òŒ#Që­ Z¥Áõmþމ޿Va9„¯ qŽ : y©’½ÛûÈÛ1u¹ýM4§üÚ6q;p¬UÁ×ÁÎ!»ÓNÕOµì­ÛU)äïáð®Õ²e =”+‡ÞÒñÉY6GÌ䋾ɾyöRñ]LÐ÷9—:÷ò¿ŽK²ˆù-#wÊ];Éû!q‰]Ü{2þÿ¥·óY¢°Üé8êÈÔsi½\JrÏVc ·þµ’ú"5šÀŽ¢Ž˜JÉÆtg„QJ, ýã|Ùd¸kz@ÏÀÔ ZÙeÖv9_gõ¸rÓog«S¬?õ½Ë{Ô3Ô7ÅõÊ5?{˜œ';Û9)—Šê2w5ÊóìmëÚ ÷[mPÀÁùô%ÎêzŠö‡±Û» @8‚K°b¹2ECQL«©´­òUÅYµ€šðZk*º!Á.¾£›kÁXo>íÈP³Ò}ñE¡ÚŒiœÉ]á¾Ì.¹¿‚ëö]59¹QÆ'ûpr²gº·²í ?à—:xªÆ_!†ÞÑ»0Mà¯ÃÕ[þÄñ)ì‡.Ô[¿Â«ð üðü×à’ œÐƒ#°†ÊMø rÁ-5Æ@<Æ@¸ ƒäpµŸ[Ñ9*L5U8V¢P|¬ñ‚g Œ|UA©@Êš¾ ^`^\G èOVö,h§þ‚‘TE–ªƒ<£Çê%Õ~ÕUýå,ƒGÛd;e;˜M¯´×XSãév.˜g¡ ì¡â±N%a;”€H*ɱ0¯Š ¢õPý¤×ºDýhׂ>xƒ¦ñ®Ík°>nQ?ñ)ý+¿Š"œŠóÈ‹a3·…|ÚólÈKXð 舑›JPê 7¸ ZD•Æû¹®æÔSq”œ¦²p7ÊIX{ÂlÜ9±2|·bä}x«-ÄWú£Ìx,FÉ„±b‡øLDkz­ö%·uÿç:kNõ¯P?Óîy[òQ¹Z8BeM Ïl&JúûaQ½;[NÃVîúmG-õÜWÙ: y­£ê?ƒMôÕv{„*¨ähO0÷qVƒƒOu/O‚ÐUÔÀX ß`Nï¿mgÚËRŠxÕHŽ”c Ôû1þ»´meÈöA;Íü@#¡ƒ ¥B®?iÞ^_+šœ1òºš@],hŸ£~Ž^®Þ²f^³¢<.·Û<Ç=7a ½ÆU<ÑÁ Œ[âD‹žð êªÜ&S5þg`–ýÎÞéO·,˜@'½™ª±ÞÛvXÃ襕'u±UfcŒ˜ e=WÍu®´‡Á3Á#ÔßÚ*"ûsMšËÇsy—øFõÒbÄhs ™Ÿ²ðå4X™v¤Ü¤Bx£ûOÑT´£-´Ús¸#·:ƒ#ì|V¢ê`ÎH}ä™”¾Òn7Ç7bœö—ã”r¯{«Ö]§\Ë­DV,¿T¨µÔšI³ “ÆâVìDkp¼.¯øúîe®Îìæù–ï9—ú0¥9¼÷ïôp¾v¼ÖæÍružÒˆ†”_»©UÔ^è EK«†¨ã²’ŠÆ2PÙ}ßUßÝÉÝÒÙÏõÌ\È+ùœuƒ…Îy²;øºö É*`îòÞò´¿Á.¨M½œ¡ÎÍŽÊZ„Ø„¥©·GíÑö9:æýCùÔ/:c,7f9.sìt=w»õ¥Y§ì6ÒœRÄÙKõ»ÄTE›HEé¬VJ‹o\W΂sXöÁ ‘ƒ2p¤¨¦õ2¾`Z ^-ÅV¬®¢Õ8ë4ý§ïD-í¡¨JÕ©¾¿¦*D¯í ôVoh6€1=M'J´×ª ±Õ•Ye_ØŸP‡gЛæÃ=>k/ŽœÅ\eÝö÷<ùZý×jï|kÇ•1ËÿÉ:Ï×á/Êç¸%b©›x¯V@yq—BÕäiê‹?‡X)Ή¬|c°5-ÑP¼ÑøK”pÜäAôűĚ¥ª¢yð‰:/‚ÄS¦¶ô¼0 öÀv^ÈÇq¥úGö´‡ñmèÆÏ0 _ábÌJÑE¤}Ç…_kÏ›T³ŠØì?‰DÕ6‰;\Cp>áÜZîO)ŒËɾ걜„õá¸Þ#h«(ø)# !äÅý¼ f`Xp Ë‚Ä6œGâCˆBP‹*SK®†ëщaP›¿ÂQ\Œ%áîÁOp“Æb &‚†wáþ‹RfÇWxE$\P-±"^æD1FôãqœÚ)“£¸0¾äãPoðgãíý\DM´Žr@yxÇDwJ… ž‚uD’ˆ°. Æ%¸gØ4V¼Ra¯¡øžÒq òba¼Á )Ò)è!v©Ó²fó=[Ý ¯ãx¬Wt{Û$éeZ© ¹®24UV³kså¤)?‡ú…ïMZ»™¾M{oÜ£ûz ㈊çgÜ/S1^^ÇïÜÆ1ʨÀù° ÔÀKæû·§îøó`”Uãy4™°)ø?5\ QõíѲŠad訧z¢’d:­A›SMð•ÐŒ´7ÉõÓo‰z/GX@óМ!Çþ—2(y_BåÌs™W’Äá—ó¿Þd6·s¹/XKä|¨£ŸÒuãNÖôàMâ³pëu(Ÿÿ³]RžW³¤á`/SIRS•á´Øë·«Ú™8‘æ+[¸´ÅÚk,‰7EìÀ Ð ÆÉ¿a:΄ PƒêÀVƒ ¸þ†åâ€<Çeé#ÆÁ.µ“.€4ûÑA¬„íÙ 7 +zð‰]‘j©ÜÚhç@ò¹õã ãw±^Žô­5KúÖ„Ô ¨ï<ü ð“ãCÐ>gnžD™ô?_5íž6¶Ò+ÑÆ™¨:Ó[}<†‹ßñ9åÑÃPj åÖúÚu}Ù}+p œ´ýÎ,î wrà,Geç:‡[Ä;ßÚi*UQ¥y癿¾9'=§·¿w\N]Ú3s›¯‡ÙÛŠN–zFÀDÎå>äúN;ô®zVm–>Ù£EzvùÄa˜Z ³0«™v´}ÇÔíëØ:ù~f³ôqX‹ØwÔhn?à=øB÷É(þІ~Ã8!Ž»]ôh ƒR4Ú·Äœ‹Ë½Ë­K*5ó_ó_óñWR±f%ûœuË¿ÛÍ_Q^Wš$òŠjGhþ€].¥GS'|Àsåì'’Ô}ƒÍj¾+©­S³¦RæÏ.ßE»m¶º‹Eó>ZTÖr9–ë×]¶~ZŸl¨LéëëÙ”Ò™îó·*É…² ”—¥¹zà2 ÓÐAUí|¾ÖþËò«53#Ü7ÙªœÙ_ í‚4ÑÀ¨«&B#ÌÏí ½ýViæƇÀ¯Ž†öKo ¬ákf6—}¬AÒãÛèloœ­©™ê5}k¬Fò,ÁÓtÊùÍqÍø'ø}@£€Þâ´VTéyäÀ²R 8#ǹJ»&êñú=Îù+ˆ/ZN ÿÈ üƒj›ÃñtÙ}gÑXã«5ž»«[eKß?ò¢] ¨ã-‹Nv8als¤‰ízŒ-EIý·€ef[ŽòŸÕàØ®Fò¶‡cDGý€õY5ä|0&ÁJüM¦óô C¬Íª˜?†]*§«¯Á¬øK=Ûè!ÇòuÌtÚ0ÆéÉ Üïm[•pÕôýMDùÔ®¦V@]ÖÔ79W®€<ú¢Kåƒáö>„aVáÌMò/µþö\ótDPÉUì¥ìNƒ?Ó"핦åüâSYªBo³$yÔ |Цv ‚p›ž¬ÞóOêc/Sǰ$µôת¥$˜$NàNÚfê„ñ|«ÛƒyäpžÿãëX†‹ÊyÔ]U…:PÇ`Õ~áqØ&b`ž–æÈnü¨ÝÏ2ªf´²„o‘Ö^_N³ìòŽs «®N™”ƒ[zy=䤓¸LËËϸ|‡­j×Çx•îªZÇy±<_§d5ÂE>y‡Ã&­0õÄ6²T’)4‡ÚÊ@^«ÆÃXÓxk`9Oçl¨Ã5†Æ‰sÐòH‚˜Á÷à+.Ãÿ 3ö 60CåZ¶í|‰Ýà(/áÑÌß ü@A=±¦‡Aš ÙU{. ó©ÝZáÄ{fˆü¤bŸ§à2„atœVqe’4…œm}âDÈ¡fÃŽÁb\¾Òiõª¨ílòKl~¾æï§”YÇ÷Ø{Hí5Ÿ˜7+uÌ14pžÕΚõëxRȯW†/n„œež2.ëÅñ.Ï£ÓÜ—+q%k7´†RØV@¢6§cV-—µÀª"wcn<¦ýõ[8I–cÕy^á2.Ĺø o‘µdÜB=ᇨ kXF΄|vj¶c,¹Iò&½¸»o†{¤ªaq-F}Tk´QæEWkiz/ß!«©½8óYB·´ÏÜ_ wMZ· ºÅ geìJ[<ìè_/³xgžÀ[rÔ²×Û 2·õ›a‰Ÿú)ó] ˆ©â“¸†ù ?t’¬ƒÖ^½è€I¸+Y éú@°Þà òªZ Ýy5R=¡)Δ{å|˜+ÈÙ‹¿ŠðM<à%êwªI!Ü„óãPMÊ-Ãàž?Í[›zÊçê-ï‚\‹¯õ?…ËÃÊIíh*5€âüïÑ!5Îñ ˜¤ÖÃqí­ø!êªPø&`3µÊlzm#ôU ¹°Ü©ºòr­üŽî@SZ¦ÆsÞÏŹ#^æ#¢…‘ªsÖ&¬ÅOådaÙwàd8v—ñ¾º/©rX”¬nãVP›2ÁRÁ˜Í¾e—U¦v ÚÈŽ=iÍý‘©küõäÒbæ~€aú^ìN—E,¶Ñ2Åm±È×LÛåîZÚ;”~£üÒ>)úsÛU I«)k:¾;ú»K¹#Ü ÎF†ÖWùìöˆ…ïpͪdÐR¶µºò(uß~ïF=­¾ömŒÔóC”ÞÎýV\p ƒ®A®z²»m@qã¬VIkL!êæ´Ýp&ò®"+ñ ¬K­´ƒšŸZÊdkº?Å{%ù‘wµ')8Ðᜠµ¢µ]A¶áÓü Îó%¾ 7ù4ßá$˜Hwy§ÓßÜÕ(lÙÕv,#ë9 û\]uEëq§ˆ„<²~@×ÞÀ¹úgg•€ÃÒ©¢/}±¼nöµƒÍBÖÇŒ,)g3òI' <0 c¸O`EG¦#¯³·ÞÆñ^lîüoB#µ“$ ÒNQVÑÁñ_ȦЮjòö„)Æ œ£jŠ~i]5|ÇG°’Zo–õÿ²4ù[jÞŸ½<£|y­6 1޼Æ2ãºx¿]Ë÷A=ÇóÁCÅÀYsê—ÍC–m¼🫛c–ã‘>‚ðW¶KÈ}ÜBͳ„ª¥u…›0\”q{4*Ágýɾ(Oª/É?ãÚîŽ6JëåÔ¿–˾›8>¹^êã´‡ å⺰û›‡¸—¨Š­õ(½‡ë{á cýü•U¯Sÿ'qO^oø´’XÙè,ZÂÿø•Ds,‡q’ºƒ›9Î>‹M`•ÌwøµÕ¦@Èà:,ÙU;Ó¾#Tš|#ù¹ø]ÎUû ØÌÝá¹½£å% IDATI…þ"œªIÿM9Îý.£‚úîªï­ïÏ'þÔî²›¦òKåã@ušÿP5CašjoVñ&§œIòåR\SÏ=ßþÌ ÉóAÌ[ø‘~aN9…«ã¸8“]°ÌÎÄó˜jwðÂx2t×ëÂeüR¸†èîXlµ¡6Ú2* }µh?æÂ«ÉÝ¡‡ÿdñPô€dµLUå’¸†Ñ,ZõT9ÎŽM¡/àÒ…ÿåaàÑKiu0™¨.ðÍ(c\†fò„ù.ó*gØ•í5r„\ämFï‘UmXÇ ! q Þ„<˜ Ïã*¼ï°‹X-åõ’Ïp<ãTUµ…ØnÑ;m¦¸KÅh5FCvì“ ˜¬CÁtÖîM{ðxh tÀò"švQ_Õ_=…Êø Ò  ÜÃZp¾ð~Ú(ÛȾ D:*,øŠf¢ƒ†P>Z KÄCÈ‹[P‡p:A¶C½â°–sã1¿Â\Z7•ð ~æ‡Lb*:øùq~ ’°nª0‚+ÉHøéìÀIP‹Sa\€J´§]ÖYî¨:i[p?:ñ%-ÇÖ¹Ãÿ?mqïz½#æÍø#N%ôIí›ñ›DfPBóäEž1Üw‰©8–îÒ~Ø ›x Â_4A)õ›¸@'離€>Ï>Lc©¦õ\eSÌÃ⋱Dû Ò>Æm1jØ™ò£]GîäÚ꬈…\F;ìÜá°`.$‘!*ñ-/)TûP#=Óú—4çü}Ãzgo1 Èn¿š¥ÌIÈ#wúº{¶{›¼Ã™ðÁU›Ws8¯ Æ£VW_¦÷rZyZ-nã<Û+ÃdÂÖ8ƒá­ú"]JR_‘…æêiô’š™§©!æ·ïÁql€3p #†«]r"ŒÆ¿ áÆÐ f¨ƒ­¿‡ð$kED_>(ž«Fp .AlJ½Ugòq-þƒ»*Å¥ÕaNÅ ~Ä%1ކi¦É2œ'€‚|œÊ]áƒ,«vŠâb|¯ÅT9½ÔAå„*PTæ>A±¼ž‘ÇÉ\ª²™ß?GuµÂ / S[uC»¬½Ý~Wœ¤Ü”E{hœÆàlTOa<<ÅÂx‡ïâ%„D)Nà{ÐbTM~K¹°^¦êÚšà:eçÁ”…ð?‡ŠxfÁA•Gö‡ÿñ¥Ù2$%øƹºÜÑÇC~ÜEË´.°M+pô׸^#2J©¦ž…™–ùå6¹þÄ!0É;A‹Ò~@N =×Û9ÎêÛŒº)&ˆ™¾¯æìÔ™Þ"¾Cò4Oƒ$ÎÅëÈm72Ÿ8¿%?I¡ŒðÌ¡2ij^Ûp"èMÀ÷Y÷Ò¬ƒ·9Þ»n:.Ò Úù þ_dh…­a¢Œ–²¬Q¹øªt1±qÒÓÔQf=3Ù,Î9]+õÅúR­“ž•.Á0W ÇTg]G(OÓ{¬æÛão­Ð—ÍßYÍö•öMñlQZ÷È€<®çýÚdm•~XÔ¥ W¸{½QÒê 0ŽÓYV…®²7m$“ïèë-òËáé‘VgÃ".WèÓÀÎïº?¤ŠÓ¦ú®yzMí}ÄO¼ÈÛÍZ§%¤_õóÇYûíãf‚£°QF tov, \šq̛ͼ£ùÔ3<È-ýKÁ—úWÚE®’z35UF˜ñþšñïä \gø}ÓìÞFöÔÏÞ o˜ÕÓªI×x8О;.ºv9J8œ¿²Üwfö»ÎàêDæ]ÙÉŠ·O[3äÿÌE¾+V´½Â ´÷ûB½;½uRþwá7ÿ+ÒÖ^-çÀ*÷•äŸö_¾ÏÜCí€ÎGfGßuïn«0æÔÿ7_0^«×ÍÒäv˜Be`Œ˜!¯ªA܄רÝ0Š#Í7\YÍUï8„Vö@_{‘*¥òøÃT ܇¯@*´²}´}x‹Á)£…XwøW[j˜õT>Àf4U¬!¶Ÿð_Ø¿‰…¸*ˆÞmê—6Ï~§néÓ¼Áj€åùe‚Wò’ †b*,’ù´qMMƒ8‘FPŒöê¾yÀZš—l†ø ßg7T]ì$Šä «Z{p]ÐŽâKˆrìäÞ¼€¸‰Ö«dî!riG᪀‘â‹X­eÑ_Bm>L>®,ËàxÞqðˆ.Š­²©¾“æÀ&yšk©ôßÁSÎɹy“! Rû` ÃZXƒ Kr.ŸXÕdΔFI¾¿8RUWQ`ª *TkŠ/”ê»77ÌÅòÔÃEžÁ¿8‚rÛoUuX+'µöÖïrOV÷@ª¸,k‰4ÑVï‹!˜÷ÊýìƒÇØ’yLæqŹÔ,q•»À0þþ‚;pS¦¨Û|WÑLÃÒ¼îÚm¤—¾Âˆ‚é¸ CD¸YNîÁ;âV-¸´2dV˜ÍÙø$Å‹eÐ_Â^بý )ÔÂyŽê3¡#þe±¢k÷Q>È ŸÁ…T;΂ÓDIÜÆ.z†Õ`‚ÒCù°;â˜iV°:¨$G.} ôÒvc ±æ[ùx™èIMíþò_8—|ß¾î$ïYõЗ’^Àœês™ ¨*³L×9?63rYµRR9AåÆöø?¸¬? w9‚[šÉZ#\‡Ãík2‹6_,¢hþ`oð}€ ð‹ârÿjùAuƒ‡°VB¤ÚJ¯õ"«E؉þÓÖkx¤ÔJ¾ÅZ ­2”¹#Ù"4$Y¤êoèn¥3‰×SnûºËÊæL«!Oæªêݯ) i_¹‚»2zF·`¾7r»z¦®IƒÛ`~m9ÅVU†‹òY=Zòœ€l>ÝõŸø?Ùך®O±KRù°µœ®*G¨…¶Œ¸'‡ð¨ç>#Óí’F-µÛ»µ`m®9ZNã~f_}·†Ðè€-à4¾Ò·h}E.ÓjªÒøR-Æñr§õ^MV[a£öDÐGqF±K¾‡?¡Är€(‡šc¡©v…Nà¨O»Á¯6cVGž£|ÆiÉý„ÆMÕµ›‹©";6…ŠX/ŠH^ÉÑ¢}ðÖj/ä:•›MøÎÙÉW°7jb±?è6ÀU`k NPoyÚñeÅj¦òñ&( »CsUÊq¨³0]k@›ñ)”Sƒàì¥T±ŽïøZÑðKCK:#B±&Þ„¹X@¥‰Ÿ”+É‘üÍŠ•·x=)m ­çµ®æF2l‘T«§¹˜/ÙµTÌ'ëñH•Ç'<ÇuM6’Em‰ÓDºž*~粦º†{ažØ ¶ò,yj ïÀ8Ü(ÞÂh~€YøOÎÏ °:¼E oñœ‚q÷ U €æ¼L-ÿÒCì"Âh!T³žªýö{}#Gˆbò,¼QS©¬A‰¨:*tÁØ–‹ÞDÃD†ªñoUO=ñåñŠ¬Ï­±ºŠæx„¶Ú?• ›è‹µË¢!,„˲'m€ój7}ÑÈx š×á#F›£åQ«¤£@*›»h€ÿ»?‡#šÒw}øAƒyެkŸ–#µ%zÞ—áü˨;àæî´ #©;“í ö}{•¼J#µÎ¼igp/‚±[¼Õê†-ãeD‰¯¶Sccº…ÉÀr'„Ñ hª\j%07»¾:ZYÒ»äo2—S.øO8¥OÖãõ ²3‰]b67¦«8¦YS¬h¶…Ë B•Se„¼ÅÄÿ~íÌX賓'¿>2kEÇ ›!E­Óbœi!ñj#µô´2ۉ晔©íU‘•òßôö#‘`>ô/M“Ø q7¥¤´ìk:ãÇb½‚¸¤u㓘×~aý°»h-Ô#,iÞ£ª4ŽGfÙ—ås–EßZ~Y–ðĪ(N˜ïÌò•¾ÙzcmSr®ïƒ§΢›ú; û[x›#&q3Üïß­jª0=Ess¨¼b-ÁÜÉÓÖØšž ­ƒ†~rÏ„ùR³'þ|ükb¼¥Ç¸Æåì }èstö¯ò/ RŠ&ÏTdFȯQza½º(oöp7wW´~óL÷žs rÔ4&»#­Áb 0™Lå]aœ~ŠÈqÖ½Ïsšç(×ÌÖ ÚeÔ£G0Û.'ÂD>µJÓå÷Åšes«ÕÃWÝ–±ØW6^˜•ì¬f­uähéœ!>Š®Ö-#!åßø7_ªõÞòØç¬~Ž’Ák²¡î,èÔù¼-<^«×áhñ0 ‹^G_©ÞfØV²'FÈl<^„›_ýyüeeü|þ£N¶W†¸Ùy´¿wR?å&>ô^¸ ïÅ6G¬£¬£¯+WÀ°€Ž¥ÚïÐZAïBœ¾æû¾d™QžþéSÍ O¥Ô—Æ>ñFRMÌÖsƒ-§xC}Ÿ3»{ûl‹±¹³TpGM×HGHHW4®4nˆHñÇÁ{oNÈg§±äACÅ@#’{B ç|9\öÅ|üÒÌYÔù›¹ŠOà9•íüñÖ%®aO°ƒ¸·è+–ˆÅz„Q9°~Fiÿ8dV±é'm¯ø",ÕKÍÄ.b&Ãû¦Ê'»Kƒ'@"·±‰_¾ÇÖDê“Ù"ilf¼za}˸¨€nFyÊÊ“vˆÐÊáKøg Šñ,|ƒ9a'4e¬Öro|'–‹ZNo´ªŽã¨š¸YøÊîÙ°æ…DÖ@Ùs¸/¼…\öUõžßâuÊ`˜¼? 4ÃüëX£Ñß!„ƒqŒ‡.¢š,×)—ø$ Ú§!;OTeTMŽ–Á4]ðØ_ÒŒ÷¥aªäOÀ8Ç>ôr=í5&ñ`ç:¡`š†-0Ìû”©ÙÊÅT=?˸µÁx`½5ÃáöDû¶úŠð¦èÌÁ¯>ãRŒ¡gì‡Ãð n@” Tû9'øh7>ÁVk>3{±1Á#T5OVB'¾SÛá#æÅ¥v[ùgp<|Ãû0†©GÃ_8+´B¿ú*ŽŠÚp×àJžåÿn]µÉ›V(n0ÄSú=ð<~'˜.ûCM••Ÿˆ ª:»qZª1Eb†pX áÊ 1’8\ -éHk°×|áüj=´Ván;Tº(/>‡ÜDl¡¥PÆèl¤ÁO*3U*×Çò;Ç@šHõ¡¢š Ï¡¾}B¾Õù5ÒRõg”âG¹Ó™ š¨p{ž™•C5í„JƒòàSíàò\ÀìV}X«àIG€¶ŠOS}›#\Ô¶ºêúËi¨º©Ì´pOwî°$ŽãZxÞ1HÕâõçê7»mçCv‹çi¬”ÅñFªãìÀavsUãŒÚWŒ·ŸÛ;dÑ_\%STÐÚØgá4R›¸šª§‡@4Œ¦ÖòŒÚŠ Ü0 ÎQAšŽßøO²æÙIr½\®j åR±þÄãtð|Ù¢j0ƒÚëᘺÇy2`hOpEöV3h?át®‰ýÄNžÇù)¶Å8N¤ì†—OÃ0èªnÂq•Çz¹ÔþÅ_àJí>~áטJ/¡.\ýâ­œ)Ù Ý›´GÜRŽâføTæ²FIŸãå¡ùFŒ¸®6ÉQtZó0Ìk%û®[óa ÔÁÁP†Wha•!“Qµc‘ø<ÁUÈ;ÔOpÐt­:Îä$œ,^¨K§W£n±ÎZeýOýyÌNåCÎcô™áZ×/}CÀ‘‘¡MÅuQ33¿É~XR]㚸K…ƒÎÆXÇpu^­7¿›cýËBÖd\åXE{}Åz°VJQY’Ö8–c6˜žÁ©¹ÒküˆNŸó¦¡Ê—» opŸ‹<~³/ÈýMo¢uÀ¶´KVðg3ý¾¿Ä ½¯ã(ls¼§,¬h”–¨]²F‰ƒ†ÇÕR?kÍÔëß̲-¬NûYÊZ¡ßÔïYß}ý·RÞ%Lõýê"NÈ‹ÆC‘ªĉVi¨@ÕƒœÓµ-\å÷fWé Ýõ~ì̳Îñ (gh*Ö#µ!þæZþJötÙ‡puó€c›VºÃ?ø;8î™â´¾Â~굄óU)³ דÀŸù¾j®íÎØà§NfϘ˜Ü6ígFyû¤6,hs `°Ö›é—wN7yV¦dIx`64gÚýer>†{ŽWî8-Ò’à Æ?'¬b§þ-`NÐ7ÇÀÀp÷c«ëëCà¥ì‹ro×÷Ì î˜^'#À˜X/ýPJsß3K樌˜ôsñ¼¥2³ø Ø;äGžÆu0ÅVЃ [‡ŒÚ.eäu ùt8kû¯9þqü'ë22Äc#§5Ð’ëúîy“0¯•jû Áó»yÚ•>#¥f|ïGÿï>„¶€æ¸Òu3¢õœÐÑq IM â|Š&ÃF¨Í£øDÛ(¶R¾#žQO¨F#Å+`&ÏQápLÝâ­ØOåµâá&^”ßáláþÅ.–¼•w©æiշתLY ºaaœ 3Õ`n K º¬ê!®Ð›hcôû"'¦Úõ0ŠwÛCl©Žù‡xs™‹¼Ë½S|qÞ¯X„£D%5^U„‚´†Å1Ø™ÿà ¸¾Q{±”Q€ó²<µÇûXQ<äCíµˆöUãô 6‹zZE­…£ùœKE& d!HÁ!Ü ÊÂUû1§Éžö3^'ÝŽ^°˜‡©tèf•çŸN²ïbW#>ʺ\Ü´ÓËeÄdx­p8 µoY„i:eU±_æá³P.ñ;NÌÁÊ ¨ ~nG¨N”bÿ#é«QKTÓ«CØ©N‰·ôŒ¶éÿÇhN'¯ÜÕû–ZÍ/qöæµü¢,qJœÊ/t[©há[(/7è§µ]²¨LÃ:ü™4j#À-H¶Æqn/‡ËÁüoñBX".à{ʯ‘ê 1š]* î@E¬(Nª7¼œâ¹:σ|¼ÕUîÆ{8¼ãê¬6\œx ¦¬Ð™•'ŠŠŽÖG}Žû»}ËŠÆŒÚ}½'¸ìÆj€œ ‘Prª–öI™¢N«‡P_%«¢¨¶b…ê¦nˆçj„zÂÿ'ëZ¶€î=3ç\åFmÒ´©mÛ¶mÛ¶mÛ¶ùjÛ¶ñËøòÌÌþkõ…Í4Nê½”Ce=LõÁãЊ^AyŒ€,ô "U4`£ô5–VQ‚~ÍZ_©WT”³Z° oøëe|*ù+yšç¹¿XŠ;°ÓŠWßôQÖ1ä®k‡9(UîÈE¶Œ±‹ca•b2G-wr 㮡öήÎסe"G¶µWé>Õö5¤u$[Eœy]†cïÁ<ì¤Ú‰ˆ_[ÅWóbHhøÙȉé[ɶ)}’Ã0•®ÈsèYÖCoµ”¾WþÊþ2²:ËÊ:Ÿœp ;n«ë©íOjSð—•¹€{…Üv¼5‹¥Ï]0M4éR×IU+õ¨Ô3"bØc㛕èjy“ÏyçXçƒ]½™ƒ*x)Å™ò yzRë„qÞÃV]×ö×¹#,[Ô©Èn©ãR=¯å¸9DLYÙûdÛ6ógŠ•¢í?ŠÇ_õ_ÿ߯„ê)]¿¿—ËßÓ›âñèMü\ŒXZf&°Vðœÿ‚á4ˆÝ„îˆêåcs(µšÿÌ‘|Lw‘ÍSíw^OõÈ6.ôVÔÆ4½ÂD‰\œ¶{´NÕ†×jVÚ[èíã×í=19ÞöcYf‘Ž|p:@}ŠS°$ü±ÚÙÛ›»ÌœÌŽ¡z²ÜèëW¦c-™J]S1ò•_ù.û;È2V. Œõ•òI¾šîðf># ŒèbœxÍÄ3q mñöæ0GïÐ öÆ|7î9žÅwý¹0¥nRÚ”³#ÏÄiÓvÙ©B³†ü€ýj`à„Mð‹mghó4ËlãÑø=â™}»õܱž”}àœöêИ¶áAºMõ„q&6¤-P–èr°^{¡Í“½ñ"ô±Vó/ì+æ+œÁ '«$%_ê9Axæ?ì?ëÉá=Ãrx^XV JÙŽØgRÿfN¥ìô ›B)˜ŠÙyx .H¤EòœÕ†ÿP¥þm÷îôNú•ý×·?ãå'ÿýäú(Ìà©õzèb†Âuü ~Á§¸GÑ%½Ïát| 4ÃË0>bWlƒÙ}bæÐíáŸÙ•þéꉭÙ^ÑaíƒñP[¦,-ü‚=´[Ày ^i€gx¼Ç3àR=0kSd€q<ÎRI,1_³çx?Bo(AU± kG'yJ ý±rSYÒª„>¬ZzQw§ÚƆ±âë†>| ³(‚’TmÕ™¦ÛT‘@b‹¹Ð9ñ¹Í)²ð¶o0‹=lh|‹+±Þ‡kàfeÙW6ŸO€2ú0û õpÃ~˜þàÒꮥkˆ,XSŒΑga/ïĺ1¸Múõ[h¯&°DV«ñÕ_a,Š~Ã{ì3YþҊнi¤“½EŽ9èß4¨=t}ø4ì Øh}\¼eS)›bYËÊ¡”\D't!°Ø@È éŒ“|·n®¾PV °e2+Jê¥`r¼¿Žs Œ´vàAl×Å(GØdö›¸™lŒTÚ©zbWz^±‘½bYè:lC»6鞣AøVµÀ‡Ð¥è8ÝÖÿh¢Ú ök·êô©¦ÁÚÁ-ªz(²>Œ:ƒcÕ"QŽõÓ;E ~˜ýcµÍ嬻£µk¬ù†ïq”@}–›‡ØNљϬ†CÀÃB;°)Лjð|"üViÐÀ*j+žd!» ­k¸%–Á}8"®‘Fd IDATwâz¬'å2üF’¯Ã4ñ4æTH„9j¹}«Ü"¯Û¿à-œg;Í2°òü=taVïà1ì‡Ë°›Ü‚•˜T-!ût±NØH+ö>Ayl›Õ ö‹b´›–±0}D—7¾ƒ—bX<„Ù*HåùizCxjõ]  ¢ [޳±”¥™¬®Çs2Jå¤Xá dlF 7ÞZóù1#LwV1Aíifý–qVNéVéX드ÿ¬ÒŠSÆWRVÌM1¤Ázü9EQj¶ »ã'XÆSÁa,‹ XQtA:x_!7ü¡Zø ?êq,”Ðu1-lÑ»)|£¢øp.î/Ø|ø µp} G°•îãúbžÖCO¸æ8CŒŽ8IqdÕÂPé0Ì‘¶?Ft˜%éX¯Q7w¸¹‡‡ºÙ²¦Žböö‚΢Ž5Ž‘¶TÆí0L©ÿê’:¿ÜvÇ{g0¤ »¿ ¦áA!+xÓZ Ö¯@.ëµdr˜½Ž-‡é Ùú.õwGvçǰÏA{@©7ž‡Áho÷@ µÞÙöD.ûJ32³‰÷4Ó4·pËîØÀº„ýûOfÁ}A¿?»|måKé›’>±W09¸B$»lˆ×tŠä_\Íœ§íFêêá'Ü”æhhA—ºÙ¹Ê1‚OÁÊ-Þ¿2¹f’#Òx~{ZøÏú#i †ÙsºÆ„žµåvÝ‹p$þÀg…OQ›µÐ†²ty_·TQ.ð§ê\¢Ip3²ÈÙÖ<:á*ë>äÚž!{TÉð­®Æ¶§z3;ms]a0ˆu"¤<Òe]´Z$Å%^÷7õ+Tõü—ÐH.N)˜˜¨›|äße×_Ç}G²{\šéïCÊ»{R€%êªþ›¾†ñ-ÿõû=î׳?kÿ4ðÖO©çyæxã­ç]Áz¤TKŠJ ó¥Ié\Ï?ÛÛÏ×@fµzÃK®Jzv'ùþ^ôNìö9•Uܰ 6Qø€ßÅ Z OŒP9L“è¤GCó=ÕÇYl!õ`õ­¯ÖvVŽ¢ëÖT9Nm Œò6òîtó®ól×E½nÿOã{/9[[„'Äsi¯†Åá [†ƒôyœ##é?µÁÿ?Uˆ>û~z'ÌK¼˜\*aXŠ3¥[Bõ`«ìm£n8êafÚÂÏâHÙŽ$Ç0'¼Ô5hš.­êéø\PœGž3Ìåj/d3©Š´G”שº)=t„ÂäÄú–zgé&ÝÅZè4xÆk\ÄïÔËêú>¼ ‘X ó«!0oÈ0ˆÑoñ¬1WÏÀ> ìÝ8 ÒÓj(A?颌Ôo)A ¤ ¸NåV-ü'¡UÒ—UMÙHÕ”d[5”.©þXŸŠP<+ ç°vÂ;¬­×ïÁM§1=£ºpb¾ÃY4Q¦NÒ£BŒUÒã*™‘QS™™-csÔRXËê«Ñ°‰\ª;F¿ ‹ù6?>†Iì‰9V¸ÙA(AÕp°ÓfÙ„?¯×ÃõM!³¾ ɪ?B[æÑÔOº¤+ŠmlºÙ½p—}€çôSÁTÚ$Ærîekõœ*÷XO±›üf|æeé( Ÿd³5KGïÄ9Q‚æ‰üÄêBøÛìÛXI¶?Ói¾[+=Â~šéy6{0ŸÌ¤ ЬÔeÙ{˜Óð3vgÓiùTFkaÀ€u˜I] ÷°J”•µd€ùé*ÍcK©¶F+Ž/Ù¾|ì±ø ÷y_\ÙŒSøÕàEå.JÒyÉ ·É%…VAmè Âg¼fÖDËh‹ÍPûøYb66¨n:QWÁË<†Ý–}q)5¡^Üi…Gi•Áüx…fC]º&g°æ¬¶n±øÛ/è•®,ɾbqö™à &ãUä4[w”]lã #!V°VÓ1ØO}u¼ZS`íÇ’°–ÐUæÆ­Š³V†—fÂ&è='þŠåÂnXQW²)±†ž˜›lÅɃ ƒÚ1«xOç(;΃ÆÇöCOÌŸÑwÝK”Óõ;>OwÑ1,ŠPZÌ Ÿè8>RnÊL—@aQº‹]YS¸±87Êê²Ì&{ÊRúœ\Lí 1Åá ñн­Ä(Ü„ÿŒ˜‹O°öÊ!È=gå,k~´Õiûy,[¯wR¼¾$óS'z³ÁŽkì_ÜmYQã²}¹NéØtòZ¥ôªà)žÃé˜M±¢è'»ŠBö¼,è0[^õÚªkkÍ>C9ã]Øjg?3 yª©&¿XBûøñ{R¢’§xWz?Ë0¹L÷aûp‚ùÜ\Æ'˜íØJôåñ+9ÌïFUs¯½#ýÈöž­õ74·šmYÐüi/âNröµ [v*E–¢ó¤ù¹,&"ͤØýÙþî‹ˆŠŠ†‚j¹SÀKvwë±z¨~øŠø¿j©çz‰:„iØûmžßè/:³ ÇÓA?ØÅ£ñ£iŽÿÔydo½õm£Ì8ßHO>ÃÅ`˜‘5¤}Äר—¡gR±4#FwŒîñ=u–ȳ‘¯£¦¤ªù:l¼+WH²ë‡™ÍÑÃLK©í;Ä=¸íXàewó¿b¿1 ãŠ;Jï3n§~ˆöη ðïö÷¤‚4Hç²5C“ßax•µÆ›ô‡ÃµHÏ tPeæ@'RÄôûÐÜŽínÞ0Âé^šÅQ«²#ºaÒ:Ö–* !G«Zjºžb’N}„ŒGØÒ»€§ÑÓe¨¿ï[િŸç·§GHư¾ÏYG?÷÷׌ȽæVû,3çßµñWþþðGxž¥Pw±od§Âöòrn0€ù¥)Ÿzkêûzfð¯çZð,°Í²­rìó Lò¬d9Öú§äK ÄÍõ/ôFÒ™ ¦¨óœ9_Ûêšánf‡&웪fu£õ\Ö›ûD/ûbó£ð‰nl—ÌÁ:±ºbäC¯L?µfÂ4Ð_6†6ú47Õ`z -0£¹64³Y>lVTMVÞ«¨Äaæ~¿ CU)?úè“ú®ü®-iüŰhâ×ä 1W&s1Ġë¡>)£EVö‰Ï…å:Y{t8•‡gô˜Å`Oë…R¨'É??éÌ¿¯ú»×W˜mÑsU]îIÐMÁm8Q ʨOÃjÚ@óõ8e©wÔ š Äl‘q“5Åb~çsØFð‰ËÆc* ‡y^=F¤@hcùzôÁyȦEØ3ÑÇâ=RÜ‚ q)9!4XަScýþ­TõDwæý¹Åp;Ç•ÊK¿øl¯®ÓIÌ ßd/¶‚7¦ö`nêÅê*7qšÃn蹪;|’[ty:£›ÇÄ#ØŠ¹p‡Ê‡‚=ÏX) 5_@Ì«ÊQ]ÕŠ¡S÷£8ЈP^"ó²ø˜†xOï$X n©x¶±¢´×Âa8†©ÿÎvÐpJ¢ÿQ¬òÂ_ýƒ%3Á[Ó]ZÎ@UtÃ:K¡m…ò. ¤#p Öá>ØÂž²‡—ÊNÜYat´›m¥ð|¥q;Œ‘õUVJÁ–¼"’}cW¬?ƒ›¾ð†êº-Õ‡ü˜âåz¦Qm,›y_‘‘gV=U+l`w%ÌÓÖÖhÊJÒbì ¯°91’¡¶:âe9ì¤ëQÝ ú@;¦ëÅtßj®:IÍ.ó <;…nfé5ð‹JSeP·B>l mИMJÔ^Oà•Tw,A·YÐHp>k­¯ÀFá„xê2»ò8ã É5±:_"WAJ‘O‚sƒóxZü$>ÑAc³~‰—©. 9ºûÆš±o|# ‚Ö1Öÿ¤Ç´Hå‚}j*¥¦l¬1VÒ[Tøª×°ÓXë’©ßë Eñ–âTKñ}ôzʃ0ÃÚGýT{ª­nÁ^bð;Cg*ÎÊyú7ÜÂKpK Ó“eQõ?¬®FXehe1Sá%À E°†Q[ññò§ª«a^bké$-C1Úô:C^V?…x‡á4–må롦êíé/”gCȯ™*Ëa&T`} 5½Åßb‹ØâÚÌ&93òÁÞ÷¾¾Á²”N-Öë­½j^ ¡ë®½»±$vqš!ëSŠ8¯¿ï϶„ZTŽ„ÃIq„Q"PÐ[A¬Ñ'ui¬/°ô2ÃÅpãx¤®Ó:}áØ’žPn}°lkOß`ØýýuU²Ù²C^J¦yfuC¢—pÖö “?¼gísD"%âöà!ºIì“è¿ÉÃð”¾Ädz}äÿéí²¢¹NÙ­ÞÞþ‰ªx‚×á`GG[WW^Ñ–ÒðÂ|ºþç æb÷lŒôÆ‘ÔC"º‡Þ î•£­·’µí“l‰j3ߣöùVz'$dó¤øn¤ NÞð3µ˜oÛfò;ηaŒ+ü‹±)òÈ.x—Þ€¸”Bád ÎÉ‘þ7ÁžíÚ%gû~ó—ø‘ÿtmvíoJiå,•ÈgRœÚ’Ö¬J7~ƵKï£õV •Üë/D½ûñ“ÝŇWÄQŒaaþXܰM`·åFû3áÃf=á⟡$‹çe±¿ ‡p¯ú +ÈM÷åÌÀ¡@&Ýj/ÿÉÈâxéËNñhUÓ=ÙùÛvJ/Чý}½+ý{äÝH×x½É¥ê¬m?'„«=ÈW {§Ð+®÷îÑîl ý²£‰£›g’÷œÜð[¨¯r ÿµ¯¤|¬Gèù.›£~Èv•Eâ9–ÆøÎc]ŸÂZ‡—1«8û9ýª¬z/w»¹Ò»JG=–ýâŸ?2|¯Á\XÐÂK› ¿Óš”2ÃwÚsΚï]ç¹bͶÊéò¼ƒ}¢ópÈçeîq®ëb =ÁøNqw“߯O˜‰ÿð/´0ªÕé?W˜ñGŠÁÔ€U€cUB]âËe9íbçÔ{zÌòé t²MsÆDî Od»mmuÏÄïcÖy1pÌj¥à[/ù{ðâCõäÂÁ‡©c˜åP‘#EÐvÆÞFàU,J‰ª…N¡§n¡¢Õ*éÔ tµ-åNܼ¯­¾Œø_ˆH —ž©géÊò8œJÚ#Y–’)Lš%f@ œË»BiØÇà0¶ˆ‡Ãl?û{øZ[,g¹DQÕL?ѧq^‡ÖX ßRvÌ(¼Á ­À†í±&¾Àµ¬+%Ãd«œj ¥(š¯ÇL˜(îàV007Œ‚«Jç!7ä³^@#V êÃV¸DTøC®ÀKxR¥Ñc)£Œ"U‘)hâh—RëרKW§y½cŸûªs7¸è2 /¨2žÃ"°K-aïáÅÀ&JbeÙ+z€ë©"¡YT@–Ÿ•Åt0“Ú£îS; +qÁ›º ž‚t‡ófb.tGŽÍa<Ý¥w4ÞÁ8ªŽýù]€8Xø–ë6gÐ6 ðÍì*fÅylQ¹pÖ´zñW¼:Ô)¹ žÁ5Š ¥L°\!fc;vKÀP•%šäzz—d²,§ŽÀ¶ ü†§a\dõYNõkbg¶Fà9’¼^Ãß²³\e°-Llæ×ü©‚ý=¡IÚ¨ ò ^g6¶ï K =â)–…éè”l¨ËèÆTÚËŠéúz$½Ä©©4™¦~Ëx‹¨sÁ©JÐ Ú7¨a ²ìƒCåVŠå žd7¨cà*mØ‚à´õgúZ[•˜,ƒ gÊÆ”{Á‡¶çFãS„Š8ã¾ásœÆf.¾Zÿm^~Ð]Zùô[F¯W£TyZ¬$‡ìvÆë6S?£÷ººµBù¬×ÈÔeñ.k kØp–WãMuÍÆ%ú‹2îJΆövÂþE]耈2Î+æ^g§?t£Ž·G¹Úø·% Øþ½Ë›R:}†fг>ïÁ¦!ñX´Q]>‚ýO¿¦:!x=°Û3*éI­âüqêçÉÿµc?xiû`AF~«¤b[øîAžàÏ̪NQIžÚñÓœoÛêŒq\0LJ]3 þ*©ïVVkFÊׄûù{7©–ÌcÜãjmÿàšbHvMxØ.±L5§7|©üN?À¥OѺ.—é_0ÊŸd¥“3&'eKª“´2©Ý¿åòŒ^ç·i»n¤ÖYÍÕ?V$åWJi+9éš7™ï¥Ÿöá‘ÓD ç=G¨G‘j6½£G:7ö‚&ôI}¥§*Ÿš£ò¨Ð€S–gþ[×âŸL Z)ÔnóíbjÅ ³û¸=ú¨‘ šë€ý­Ñg°2¸Xo6ö²N˜_‡ÃD~ó²ìöZ˜ž¯¶-Ä 0{ÂêO‰F3¨ OÂmTû°ýj@>ÞYE~Žw—q)xÂg˦º4Kdã0ŸKeÕu=‹`e<€5Ù'½½8ŠÆòJâ;{Ã7°m¸“€HÕA cE`“ÎÏ:Ò;]S¦óÊ«ÎêÚºl†l¬áqâ f„o¸†GÀYEñz…Qúa«ImôR¬Åvâ?‘‹ú@žgð%»'Öˆú<܈'Œr:—vÂêHÃp¾ÀŒl06ÂPÈLlJÿûð Ëã* ÇAUq$†@~jËb$L¤rPŠ a:\±›.w ·\¥Ð}é„b4M'ÀxX®

ü:se ³›ƒ#²†/7óEQÄ*³Lèâˆ4ö ö{îka‡\"ø‚ÅPèFT•mÑ×Ô¬ Œfóܪ”Jk¬ ©ú·ÑK,d7Ä'Þá+x©ÜÅãÚ®?êƒÔXÕT.–†êj¬›Ê {B6âH€·ê;{9¡‚~«t%ü„.ŽOèÛÅŠa@… SP8¯Ãè)«ÎZBZ–Œ ±î…ó±ŸjÁ¶²]4Ûð‘È)Å[ÃkyÉhA‚ÏÅVH â<7JŠÕ²ŒlÍ ˜ÌÌËáÚÁÆëºt—Y ?aSíÎl¸¶È!Za^èkØ)µn‰Y5°³NH0ËÈ `°ñMZPWDè¥ôPgäöF­°îòÔBÛ1žmƒƒ0Wýн “NЛlUŒáõSúà=Å©KXJÐvÆÀ|Ü·ù¼?qä§^¬3Ì¡Ç,<Ö¿E’ØãEy¸5Ù(UËÕj1•Ár6ºk ¡¬.‹g‹ð°X" ZvVRŸRÿd{šª«ªibŽ1†ã 'ÁÅÏb>âð’HÀ_HÒ?©±j…ûá]¢+” Ÿ`{CÕé–cCäkÿ«ŠJÎß꽺.¾bÛa¼¾©©?™ãÐ3ÿí¾ouõü›#i¤?Ñ?V>䇰+VÚ¦Û/Ø:Áùàõ@l ÿs0t[7ÕJ†±ÊŠ`§C'³™¶ªÑ.£¬­RØtÜ y-½ÆÐ$ý«ÒJþQÔ¶™j¾ÕFú·0ámR_ _¨õ<ÌÔýŒ-¦®ÐN6]MŒ`­Yn¾D?‚z`°.S1þÞÉ;¶Vù'öfÉeÆØ@a¶§:«ö@½`|°9•]*ÈE3h/ fªûl±õG.’1xÚ8iûk‹1º/âVÒœû»ú¬«“½o°€|bÕInŸ’&qΟ:Þž¾Éꚺ(¿È/²«¯ ¤ßj:Õ¡ý²j°¢UƧ7éÑr ó³Ïø,ìÆ[‹~|¸c±hÁ¯ÛÖ:¾ØyÄ>£ŸíNh>^žWõä½à¢ààhõ\çÁ[Ú&ÌìaÄšóÌEè²O y§§\õFxS¾X;äUÑ,cvÇÐÇîf!Yë§ù”þ£3sd|Ø&c³¬ýÏ&R°„1ÙxàX&ºpîžÝ”´Äü9 IDAT×@ 9Í™ö!Ã2¸JEÏJ+´mô©´ïBÛ¯¦.l/cÜŒøåäö:öš¡ÝÏBEõލæÞšæCªá3ìoD9¬f[ÂÓ6£®ÑÛ:K…¹Ü=Ã?ÆD†Ï2ÊÛZ««!ÎÄ><-”Ç"b*‡h}ÎÐe,eÇôª;ÎfˆwÄbþG1ÿ+ ˆèÉ4. ?úŽ9Ϻ\ËßX:p û[SÕ0g"­ÕCKâX6ß6×j 0¯:©ž²Ãº T„)ôGwÆú•ÇžPÇ`sÙ “³ù;¨SÖ`wìË|”IWÓed[:¥ã"½Ê™A«/ ¿z8_¬^Smf¨GPžÝÑ;¨Þ1dðlk%ªó|¡XËtŠÎªû@O\GŒ"Cp wcX`Ð[t HŸô6Ö7è#”†‡•*™=€ÔJÂwê¤]´õ€Œj&Ü!§¾¦ëÁ>Vƒ¾ârªjM“{P*½—•Àë4T¥‚lR¨H)ŸQ ÔX‰)]ŸÈ$¬ÂÛ«C8QfM« §~©›CZ©o¨iàÐçõ_^N3 ïa%&°¬"ïûð…‰ì-‚‘I¶•u —,+ëa;8å1 ¢±z<¥(úHÿaKñCõÀgü‹|¦ëÐK[{u¢Ì¬£(ƒÜGia:¨ÿÒÌ¥¸ëR–Ÿ@_Y!‚’Y}»Ð*ú šC ¬&"¨=Ì ©x‰Ðšñ¹ §)j ïÓ_­g³pYÙ*Õé¹Yñ)0á)v•çÙyqAÏ5΋Ñ5 ¥ÀQ:ϺÂAèÉ&áGÕÜÊD9Uõ úâNÕéYA^A/æ`³˜ƒ¨ìV½t)ZGsØ>X5!Æîó)ì<À',n­—©u¬ÞR_¥_b­‚Ìø–÷ÁXÝUÇÂÃ@+·ÎåÛë +úÒJuÃó)ù´H.㙬ü&±Sb o³i½^!ÏÂ;+Kà‹>¬¾ésÁ¾b5[Ç C^u±2+߉9Õf¶Vé™tGŽkƒ?u•JõÇYø”íÆòX^äRùÕ<±&fª8Ê,þ]¤c³eif½Ô·`¬¬a–¶™â7»Ìs鉃¥ÇA&U¦Éjrˆ•ÍjïE5q¦9za¢;y-ã Ç‘"„ggŠÃ8Ø'üoåaì§{Q²˜/ó@6k¯rÓfÃdWÄ}=\·f­ÉMõÕ­.Èï¼!Œ•™€x6Öè_„Sñ®N$§$5Þê(¼ÆQÖz°(<Cá-+¬—@IÖKßVõÙýB>FÁ‡"ðÅÌÅΙ¯h™\Á(íO+ž&žòÝwÌR×Ädû-“Ӝ͒6ßÅzØ›èŠUÍ0Ånj.pó¨Q[ÃliݑڙÞ=#ìiH.{óTñNË‘ÛÝPTgŒÃ¼kcwñðÎüi2*¹‚ÆãªóºHgWÎãn¯;Á1ÔþÀÆ·ñÆU£¾­˜yÞ¶8tRê´ö¹‘?£ÎØrØÛJR[=’ÖËÛôUïó»i³¾n¹)Ê?›Ñeµöâ z3DvÜÉNa|ÀfÉ´*ˆÇ¬†2(FZo­{|¨UÌwϧ5“ù|¹TUÙÕ÷*å·¤UùO²÷–öŸö~ÖõO^é[¢d oò½À£”°¸¢2“H½±:ž´•UÍõ<-OYut@iUY£BèmŒ‡ölŽdv‰?6$ºÉ¦ìÁ]*Kð¤^FoÔqrSe| ß«Þc)y¼¾Ýüq;>«0€ïe{Ù~z VN¥˜IKRŽø{ªÒPøí\ú×Õ)ôˆÙÏ>OÇ›eá‡ÞhëfËí>Óôk/®dÀ#E3c\H´•Ÿ<æÊ©“Ž¥´ó÷µ’<;lçí§ŒŒ©¯¦ÛÓ/õǘijËz0•wá¯õC¾Ð5o #h…ç¾Æ­"äêHÍdok1k¥j¯0/-ôÕ ÏÊìÕè;?h¿m ¶žfŠ9Æs½K+ê£ÿ*»ÊH_TºJßô+…“hß /á,Ívp=P‡ÛX[Š£äqôduˆÃ ‘º†œ+ÛY]ôkù ƒ/Æ gœl†•°¼>X7ªINØN[Øè Œß4È×;ðŸ%tN)×ÕL+sàl£x ­0œ%B1ýNñ4 °Ã|–„” 2èk·ÁUÚömøˆŸÂ˜a'—¡r«Ìì2/®[` ü µUký‘üÐnâ#jªPi4iJ ±¿ò邺µbÔQW¡1€¬:­Ælk ïéßpÇZ®šÃCÍúàVª;YœÎ*Òw(OÝykLK¥°•Dë1Ð’²¢¯ æÑ±#â.ÑEÅsìoõ!uÓ/8F{ ¬Ã¬,ÏñÌ —YµMmÅæ8™€'°†]F¢rxZ¶êôÁævÞÖ ót4ˈ™ Í%·jMÓ!B´úÃöžíƒsüŽ£žƒ¤Bj2Ô„–*± ¬–‚<ð‰ÍË 4e§½¼ÏN‹Õ=z¥N0ícN5W;XËœ(!;ô¦o¸2c:†Ðûàq¨Ç:À,8‚Ç¡…òi'¥Å¶ð^å¡Ð‹¾éÜl_Ì:ÃRèYð´ÄŽ|",Çbú9Ü‚ìj < 2Ëó|.ämD;v]à+Y¬Ëba#e—Úª©ÎÁñŽýQŸà¯6Yw– qt—¶éüp.A2ÄPcj °/?FMõèGÅ!Rïdõñ0œge Õ[i4Õé‚*tÐg™5„ :kLÃÚê(ÆnÖ³T¼X°)7ßÙÿƒßt±ëæ9ÑÒžQR d9Ù[}…×ú©sñ?ìoÞƒ‘è&ÄÍxα$¼Í´SgÕïu½ZW„Rü€˜F;©ÿŸ…nèÀF؆RtN|iTdÏi#·sŸ¹U7ÐÛ¥“â°,¢ªËË•@P7è™0”Ï6Ù Ñ êFMØqÊÚ´^R:¸‰¡æZ™UÝg{xúËc~A±Xž}ƶxfR:@ƒ!R }˜³Ò:L¯fAgÈ©?C8݇GP‹éµz+`« ¼®DntB:lÀÊ’ÆÃø’UAÉ:±¶Xžê³bîf™”‚Wê>Ç cN]+ÅúÐNX¥pU¯õK<Ø#*oÍ v ËóBô2Àj6jÂO¬&Š¨ëø’i8+·é×Ð ëq¿…Ã>å·–ùo¬î¢’¾uùc›‘Ç^ñÞà­æ_æÏªžÓ;Ç/³ûZÎÝÛì†S˜½Åw8&Ò³×ö.t)˜)üxR?–»Ñs_Âÿp0Öí£¢Ì»ÆY‘•`Ÿo;ûÕAÞ†YøAÚ! ¶íù/Cñõ‰´ñw<#¾H¹(jáçp vPt_n®zË¢,ÌÜnû¤Ò«ÆEO¥!x‚Ýô¬°¹mnŠpÔrfqÔNàißtGªém¦³«Ñ¾¢ÉE¼yü+øJ6«y%ذ3,ÆñÜw:™ëüôÚ»"œï"_ÚRñýh¥tOþßÎ~Ptõ,%i©É.F&:¥j—;¦†ONcÚ«†þ _%Ëýiñ;·%}íâ:DŸ¡lº6/¨òŒê©›è¨@¨?Üó1yTÒ‘Wÿ„­±Ï} VÑHµ#)"¡Ô︔›‰µ=[°œÙ8X Z±)Ö1—CÝ1êtú,ÄÁ ¼nåCD”ù•¿Ùk^Ž…øëù£¬1žÿ%äùgYEƒ=äшöÑÑ©¶F_HµÆ½Þ✯.È…þ_¾úÁ •˜|H•„O¬‚~KœŠ±Gz‰.àíOÉ­—ùßêÝ:ÆŠ 4÷ÎOÚ<âÙòwKÈð°èè¶ ! ['q5±JTËÈN¶êȆÖ^½RçIº僙° þÜÌÏîC)žþGó  ôÃ#T]73üka ²ÎЖL ü‘{Šî’t¾™Ç°( ã)·¦}°Ž.Ñh§×Q+‹Oe3YØŠ¦Ò aI-“öùXG|%Xº@wxCEEÝ€J}ñ>Œå%±8ÍdeЉ¥Yjý–¢Hêº'}hÜÌbØqÇê²_â¹±W¯R_è6KÆ(ü©c T¥Ô3Âh,¿0ÔX}z¤®­Þ‚Iz8íÔ1¤ÉÿØz¨ÝTNÁh]•J@c݆¯Ä (ð. £.P†>ÐDØÕØBòÒbrôU? UÕ±0Ñd|·i½9 wòF4@Oc¢O[ûqî«Ö±¦pAÌ¥uPG`/H Óq>X°Og©,¸õÕl Øl,¤ß‘ÂË÷©År½Ú™©7kÊBQ‚Å^¡—_†ÏwÒ+˜mÕoê¾!ݧYa92ÛÎÿmóg¶U)8$¸NùÙMïi“þa`·Ù1ø#/ÐeH°¸¨-_¨œ,‡Qg5ÖQèCYa0ž°Îè§_j O)l·³¸š$V [ ŠZAeE.vÞÌ[ ›Mu7ê!Í×m6÷.{Á¨Za1æ_7ãýž§ü~à2Åé©κÁPš®«ªôB÷…m,EwÞf1<Å$o®ßª¿´„}Ç(è ]XÃG8 žY“äf ¥\8 §ˆUF>¬H¿è»Õ™¶à™ñ9V¶íã9øÞàDùBn¡¨îƒ×°ªx ¨ÓèaµEfã]±O¥¸”U4w¨î:‡® q‰^ Åñ¨è†Ç`‰ø¬OëíÆpš³ùz¥DÞÇ+Vgk(ÙèI] 8œ¤(†½ø]|OÑì¬ò¨':?USñ½xÏq¾|ÇÓÂY±Q× (™ZùÕ zà,c6Ø/bÕÝ…'±°ØXIÇqE·ÒŒá¥~ DGEGüEÚ¶W7Òóø(Ñ€ dµõw‰¸ ª M˜ ˬ›p]`áF|ÍêS:&BFøGßá» (…ãUGGé‡*¦†zÖÅOúæî9™RÜŠ³ª$®ãïì{lGyˆ™šRuºÍR¨¹ÚndÅÌzu Üß>åM܈äÊI¿ãïÇ=KÞnKkpîO})UލkfØ5g¬#3?Õ””·qKåZÿÉ”q:/MÏõQºãü7¬Nþ‰û’'yö%'$ Æû×ù[w['¬ÂžÙôYÓŸ3ÙÕÛí–YNDÚš™ÂTª2ýÃ,§•)©ÒÒWØÇV`<ʼnl6[9±%žÒÉtÛz¤}Ԟݒûè¥ñ<@ÖxßÏñ°F¹îš]ÿO<h•v>ç¼÷Þï‡ÉÖ¤Ív[mvm®Í¶íͶmûŸÚlcj²Í™FŸî}ÏùŸ'Õ‰Åµæ ¨ƒq4׿–PH€¯è“²Çfø3ØK’?¥œˆÛý=ûÏÉí¤¹¿K™mÉÇq5ÛÊmÙàZeÅe•lü‹©ÉÐ#DËx¹¹!~Ç£´‰Êã)Únt‚—x‹~Qê *;»œÿœ±ÚÔð"-Å-ŠpzÕ)ÿƒòU>I{ܱ’–C9›†'0ÿH|…H$üzÓzz¡§KG©ç¤ÁÖJ½á´‡dÚï`-|…*PúÀVèŒ'pW§)8I ÀGȧŸ8õ9Å~Ïm%I›v_Ý˾küÄpH ku¸È'ñŒúÅ ½•ÂЋÊá5ü¤Áxx„%Œ—jžø¡4|·âÍ ”Ù` §Æ½QBq ÆB%# eÁêXG2ÊYGså;¤ ËfºHÝÓOs=ôVêð°a!«þ¾¨Â½Ìúð–öÑ õŸ*¯ÆˆÍepô„T[q#Nä‡BE,Nÿƒc0 sq8 cð#ü ST VÇÉꌒd}Œ‡HM8‡+à5¶‚ê¹þ)ݰ¹šÓ©è¡Å´™–Ð N¨Çè_XÛø‡ ïo6yî}‡¼ê±Þä/e{íåNج÷Ë9®[¡/ô¶¶Òr©. ð¡xN©,ê ·¡-xUŸâŽ­x=¯Ta¡µW^@ µs`)þ€6•ztƒÊã5Ø ;e+öV5¥2øhÜÑŸë°U·—‰…G¡ƒäÆw0Áé€Ï07«qj_ÏA]ã’ó&5Lt-’]¼\äkþXVéÌ”‹C›¦¹Çšn]W<”©2HsŒýŽp;’žã sž£;ÚuŒwæC8eŨ?°¿q¯I!øWšIuÜ !{àw®dT¦l˜ƒŠãã)ì“H‰À-°¢Ôzü—Z«EfQs¿Êa¶W¹¿QYüýÓ|óìsþ5E ““ïø,ÏVg£jŸ|Þ×Ê÷Í^ä-•TEvާ¬wZðn=')1áñ¾¤ÉñR6{{û :äî¡P„Ò}¹|ÅÞ\”_ñ@-ÏöÀI«=ü%GTF×K"çÜm´í¼ñnƒ<I9Õ8uA9Þ§ÞýÞl ¥WMÎõ5áK+±´:`õ^ås“Ìxʸ«>âs5¶‚\Hç†r«V`W˜k­+«ùL5¹R3´Ú픋) “úf¥dN@YÉ©Økä3§«¯FrÐä°¢ªMpÝÔvøWY÷«„q‡"Ð9£2çÓÃýW’´oLŠ'éϤ4Iµíõ)K¹4òºï¸Ë(e®ä#ÒšÂí¥z˜·ª—±¼]Õ±Žq fãiÌ›u}ïß,çv`Ž>Jn«4T7¶‰M×T¼õ 8%uþð¥á‹ÒééºôN=À_ÜÝ2.pØI'Ó-žíiú Ÿåwj#½£÷ê%ÎQ•tM˜Iså \ œ›"¬(­¡±y%ny\á¤ßþÅ×½k¥Yš¶0󇌆sØ“ÊA ( ͤ xpä“VìÓQpß›lïçïI1Þ‰‰ïŒOÜ™²Öó–=ºWPÍ©•ºs©£º›`”чJA)Ooè€tæJ§ÇÈ,º÷p6Á›˜N¨dµ‘º›…p ·°ÀÅø[öÂU)D‡eº¾J†œ8“&ã …¹0Ô•«ÐÎH:˜ýè«3V®ã5lFs >^„–OÒÃFPòásL„ºê¹4•½ô@ÅcÕÔy¸‚‚n8GösK9Îoh1…q}cJvNA~ò讋;¹ºdâ{t{ÀK€£Œ ¸™oQ5îÑ 6x/öã°§Ók!|PñCùL$š²Ð 0ÔPuœcT±º/K¥‰+¥¡ú—,\.à$dÕåt¼µCÔôcoZokýg‚?ñŸÀlmÚëîpÀ)!+i¥±Œ¯ÊYc1O‘˃KqV“2Пë£ÑÆRð6BÄÑwÌ!z²„;ýUs¬«¯À9H‚t˜„¯ÕC(Œ©Ì€ê˜L}¨šQS²_æê(ù¦?)ÂfÞ¨³9Ÿý/ý‰Ü\2sÆŒRÈ|f†R^ ¥ÏxÃiˆË©3Õ”¸£æIF>³PAa© ±;¶”PQ·Óón¸i^STvÎ%y0¯ªmqŽÃVŽiüÀ×Kµé¥Pa ‘ø'±v]'ÆwU߀¹öÊD§1Ä»×̤,ž‡¿Â2†ur=‚º¤VšÕ݇ìBþ[ò‡±M=³¾Àî‚–Œx9‰Å)³SúBsaXØK¼ú®z/m!Í4·§Ô (iy|ƒ‹²–êÂ¥å/Sk辘0zÃ3ȉ9€ÉƒCp˜J¿Òx;`#Çá<-}䣱Ûèõ.üu´©ù·ª p<ÎÃGTÊØ­JX}dÎRý¨tµbÝŒ¸ÿ§Bõ_"¨-´à ˜‚-±.¾4Ÿ›_h¥5ΩHqyZû£ÈŸâ‹%Kºåɯëãm,äÔqJ{Kð ž µñ=Å…œÓv{¾÷'§·ªo«}ƒ¢°½•;´¸Ñɺáªo¾¡€ên,2º7™¥iç*ÎUß'W‘ÐÑAÑAýÓÏð†*»Ú»º¹F[·<µ¬æjWNðÀ#µÌ·-e–]Ék%B\åœoC…©…±Ë*«âŒS›ƒ˜­”ð»öÌí=ôPû00ÊñÒàë®Üº›ñµâûu5¥ÐB®ª‚­uVtØùô{#VŽsª1Å:cÍáê¬{©±Ù|5dzÈjj­áOpyŽ&^çjL ·]6ä^è\㜑dÎ ›å l³çò7ýÅÛÐÛÕwӟרÃÖÀ*LA2QÍ yŒïÜ ‚CôýɾêÉìùŸœò%AÝ/[\©²51¢ƒ;…Æ›,¯±Np[('}a¤‘Ó™"Ýqãz|•QªÀ[) ñª–ÓRWKú·Œ• As­V[sºzáúƒ’¤§”õãgæ!:ßÒéêöUÉÕ'¸V ®`f@e…¹_ËUV2s/¬ïŒ¥r‡—¤:ßã ÎU®'fq{£5Jîë;·,~“§‡ì<ÇÖ2 òŸueY `*ØØ’A*Î…íTW®ia†s +Ó ¼O(=•å<: ¯àf4¡›x`,ÆJ d„9Ê…¥¥'ÔSò#b#q©˜YŠB?¹ó¤+X‰m¨Ì•Ôò/겜{•A˜K>HkÙ¥ëKM8‹Oa2î„ò /áx‰{ÁÅ™0ü¢ô°MmÂ[RZ,ùƒÓàLLÀ®|ÂdgÔÅɲ‹=|CZJ7ŠTmh‡zÍ}d0¤õr‘JQsµÍzÏ$µÔƒ®TQ&J'Š[$J6Á˜Œ“ ?7æÿáªIYq…ZkåÅGœßù =œtvj†‹ä¾éÆqj ·ƒª°Ä¾©nA5T”. #¿ÇY †áý@1šctQ£“Z‡·õd¬$YœÌ<ƒË«ITÀØáÌ⊰à8ó䲎†ŒpMzK4?úˆ‡0™#a¥ãµþNÎ"5MÞa žpì ðnQ3•‰<®pzü+dþÂÜF:µÞ¸ ½œ¢²ÆŸ™Cåý†Ê+yÕ!üƒ£!LŠ‚¨Wô‹ÀY™"Ù´d¤DÒwl!Ã` œpJp £¡Ú¯.A X «ä:,y8AŽa5œ!›¤±Z¡¼ø^¯•(•B™T3|DÏ¡ˆô1N@S¬Éí°0½’j«z§[ëYAÖ\³ºÁYð‹äÖåö¤ Pвá`É$ ¯j-v”tú›¾×Nybý«ÞÀY&«á!½ÆÃº²X2Ùî QÊñÐUzÊd~c±#unI­llŠU)+‘[>ƒGB(r­WàCÊg®„{tÍUÙ –Hί>Ãçvãuz„â$ªMÅŒšXZýä0çsNˆ÷›cÍH£¥¥C´ð(9‹Gé3ì‚ËÜû³—wÈb=ÕîiS}U¬€É9Uk¾ê„_üœÙéÏJúñ%ã“ÊÎõ­(eÙÑ:­Nïë îÂÙàŽR2âQ8uíö&ݘÓâ ÚîœS—•£Ú¸?˜·Ü§` $I!cõSá–¬€Ìô‘Ϊ’4Ãèh,ãdšÀ+eíV=i£ ]È.γé>ÄÃ/¬†ÝÔ8£™•ÊÕ-(e›J~×aïm'»Õ¹Þ4ù¸—yŒT¾viÕ RéMî’vMÿ¡ß÷©‘Æo$‚)Æ×¥ðÑÆÃ-ñ_ž—ÀžðB.Y¥Cê…ÿIש Æ•*·1_y¨aê¡îð°5ÖùÛ>VÁõÄxæ¤pºtAµJ/ØÕÝ9¹¤îùSpœ÷Wöyœ%½n.Gq[Þ«:Aê†öalŽ=Ñ­Lõ üFkµC" 5Oµ´¯X?]µq:•°¦KVwy+‹¾Õ5ÞÈnô1[†ôtž*'x¯»wHœ{oF*·8’ó»Å®xÓúÞ& Ék}3:sRåSŠøþ¢ìvUÿX:+U8ÜW$AÕÉöŒÁYäW•(?Õ÷½ ´äô)?R>y~%,Ž3¼\a¸Ì….¿*‚ÕV:h™ØÃ·Õß oP@é0Δ¥–ß=8ä‰;‹9?è®T¹6Þã¼ úaI£“~.¢Úêîà—Þü Öºja˜œ•lÔXNÉ>«½ùÞœº"bCPÖ—î£ÖIML­kÁcÉÎw9FKs‚Gä½ì•›Ékìßþz U“²û<ú‰ÙŸbß HL‹Ãù¤†(ç$ÆÉú…Ô–,ú=¿—òÎKøSZÁh(×0VrBnþ¨®¨Tê0Ρ%ðϨ ôÐ|ã5”ä32G¯”ml±—A,N¡çõøœæá%ú%ô09cà9žÇC8‚ŠKgÜ(Í!SJ õ¡9ä„®NW»;{U2ÚÖ(UKswYÄÙ¸-Ö%‚ëÆxÉx©“x Ü4öãN ňb*Ÿš 3뺈ݗ^©¯#9Z~âéOðý•?ÁO£ž\”'¸Zâ FÒd¼‰»ÉoÄ…j ݃dX‰Ge€oþ‰ç¬jÆUÙZ&¯áN~‰”Ô_*CF,«[q^Ø }à”ÚQx.AY†1vGNÇ $2èpÉ£ó›–± çÀaê">ü SÉ@tÄXŠå©±üÊ©Dk龌Åbp ÎÐsXAyáo8ˆ¬Ëé¾ô“´:ÍY¥ |užÐ5¸çõ:Í8]u Xó<»õo=žæ¨jxLšC-Ü(½á•¥÷Ð]®âÐövݾ`§5¤Ó¼­®¨ú†sNo¤ÿa NM%i˜,ÐKØÂr´?‚rA gçà^Ö.'Y¨™ñïóÕD¬J£qo «á†¼¸ÙÞgì•'ØßUûªöþ*bÔ½¡"L¿ŠM¹gÒ‹Œ÷FoÙ ŒÑE¨‹º‰«áª3ÅöÀ+HâFrBQÞ+3ƒ H1Ù±:4Ò3чœO4‰”ÚÅç¡?2L–fЖA¸yû@#©O_)ñ έq#Æ¡Îq§7}’M•œüŸç%ô™ò©Hg w’Ú²PZã< ‚>ÐÆf½O>â'Ì«ä¸~ c¥„AjÎ[t8l¸p®´–¾æZ, éà$$Pç¤q‹Â¸‰ÓI¿âU2JMV¹¸„ÁW•ªÉ+, õø)N€¿Ä‰2Æ|dÌ€é(f$/×à©ò„›ð" ¬Õ:X‚jÙÿ9;·U7õž¡G䆢gò\žCéT Õs#¨–$Ão£Š=ø_¡w%–‡Û‰²XÖÁêw±‘4°Âè ŸsèJï0šòJ:¼Î½G0Û¼ÕEÙ"á06“2òà ‡üý(•²]S\)Ôˆ²ñSþ-Å”ÿe¥²Ó‡¶H}}‡ZKcëž5Ù¬h£º¬î®¾ê²($ïâµ OPs¼«ûsöLÿIgø$›«7 ’Ÿ8€ w¶ã3Þ•NWýwA>}Š]º-t–:Wå)¦–¢öv*L%ÕvèeÌЈ©|„õ0Oê.º´ÄÒ!*‹Y\?\‹Už ÒüääI›ôéb´'²§i*㫉?Y+,¡GéNMë…U §¢et×£ÅfWcµ5î8$i}Û­³;½¸.LžÎ1vôïŒæN£‚Î'-]‡qAuÞÙ>Ü=Ý*èJïöYeƒÓºê§ºiU l´EŒu†fîl{‡ø³ø³&_Nzæ)–â¹›Ø"y¥Ïã­gSÆl³œ{½e-uIj »êãX’Ì’ÁîðbÆâàeá­Å® wdèwˆÕ!,&ìaDÁ°\iJ‡6 ^ÚE•RmŒÇP„/q2½ã5v0ºýã<)Rj$ÏH8#t}ï˜#®\úJšLáÛÔƒÔ+SÎkîPK8Yžðü@îÀ/»bâ$O§”Ýñé|â¿{Ü‹ )¾¡þI)Wõ%ßߟð'Ò!ïC󗫈}QYÖLiƒº#Ýw\ 43H˜ùSõÇ+$pöH”\Åõ:Ê9/œ†¼Âm’tòÅ9À¯å2ÿ#ÉP«bo8büÊo´¥7Åôü éCO”‡ÆóižÄ奺݄/C~g˜ÊKUȤԪ®‚8BvRwj ¯õ;ìãÏOeÍNþ+j2-õ=Pi°­=C§ÓÉvws ÝÇzJ躚n0ë«§´Iâa¸uð܆ûprÐ}©F‹ôUg:Aê­‘Fï§÷”Õ„S Ž?ÎhÚz õÞ0`5Ëü ¹ðz©·`EZ![T ¢`ÇŽøÊ\mîpºìÞeå¬pŒþ–ʘ]–붺¶Z‡«ô|+ÏœwrGÚòMZHC0F®Cs¸É$ à‘DÂkùOÚÁs3½ª !la7Ãɯ+é2K„ôê¡*yp²Z‹Wè'z  4‚#0J¶ñxÎ.ˆ.ÞÇ{à»}žfb•À•ópQýMgcÄBò2Ê®ÊJzÎ'±0¦@ 8‡å$VÖYŒšÔ×cy«³8gõNñè켓¤-TÚaj#ÀK1`¬×£á:d³{;ËœSrJ2p$ŽPåä=TG!†~Asªke°`ßtV83œåöHîÂßìyˤ4¬7çÒ7:mtípL¸¥IÆ`c›µ<Èç~gv ½®Ú¨þÖ!µ…ÞB¨d¤ðàýÆ[kXªËîµ::xœrßêDûB.ºú«°ðA¡ÕC¥®&mäôTÃÒÝÈ|ÇztÃØjÄ{œóÁÛ¾ágãˆ;>Üí™™8X·òeLYØe[<£°\P㜙Åú/84(±+xWÈ<ëaP|Xóà?\díµÄ¨jÌ1Üꇵ@ ¸ëÿÆ4Á»‚÷ª7®1–a~ Ý০*N1’Ôv>*È î¢nS9ÜèÎnv7»…Ÿ4ÎÝ «bü0_ZsÌ$:ÀŽ€‘ÕYíí±gWÕœ¼<‰ ¸Á_ðˆÑ ¬€y±º9‘‚à°Q®Ënã&®Ææx‰§Ë#'«ÝÙÉù¥žÞëyT Ô)ìäõ/• ¢$F’á ΣhÚ®:é“2‹{ó[È%Iø!ƒ05ø^#™±0_Z3C2Œ‚'ØSŽÒGÿDÝ["y-Ì´êOü*­c95­E ê)}õql,d¬‚(yÏ»õÕŠ/؃dÖó9Q¥uöcè-iº}Wâ .yd“þ×8€û¡Äpc禃"º»ù@…©zÖ.—¨?¥çäqøš·HzHÇûä=ýëàEÊOÑÐgã5ê ƒŒsä…¥ÖFÞ%ñªMçù tÁÁzö§78“`€ïË4 O  f7‚Œ€5Õè“° ±Øýä?}Þ™Â~\í%„Bc)IUೌ¯|‚rXËRu¬¡úÓ@.mñv§3tžÐ, €ƒûÍCZqÀ5.Âx#{Ê0Œu{¥ܦ½Î5>èÎøIµ² AI`¸ ßø* j“*‘æfý–î|Æ­¹2†¦Ër>_錳G§ƒ¬¥3—¡2Ö$cŒ¾É õ¿î?ŒÆý„q&#Þ»L]¶îBAykv2ÃpŠ?œÉ\’ç² A¤ C•͘ƒ;è˜ öJ jÕ 7<‘2Š¡ôÂ8Ø ÷ µ˜í,Ñ礢å}PoCg¼LÏùO¨Í‚ø™?èpº‡³y;‘Éò ÐÖ™èDÂCikOÒ_õg%iÁÔGå!^…#ª£ZkN1:BkŠDÀXóšjYt¤¾Ì礯è,ÔœÒá(,¥ LïSŠÊ8Û¥ýN} '\€\çópOúÆÙéç”® ÏØÅuà§ä…d™ÉP Ÿ«UT¨›xSJª9T©C”††ð4æñ8þW=×Y8ò)ª[+¢ |…5°?óx§Ö@F9Ž_`$÷†~pÕ¿]>Ê]ç–û*B`[Ò]šÊnþÔÝx,íå´Ï—e·Ó—Ÿ@ <æ|Ð^RôOÃm®¡¦ G¼;=å<Û0ÛùEÆàS'GHFœË¬£T_y¬QFeS©©¼UX—àÝI§ÒÍ­­ af,ÜPñª=ÞÀ]² âEX/õbJ z©ê…i¡­ýU𫦾æ²Ä8bøìÀ˜äÙžÄÄœÒC¿LÙšºAÈäàqafhDx~*À·’ÚÀÇSËŠ0c¬œæM×Yë¹ûFøØð!®âî4î3—YÁ=Í,M]Ü£B¦»¶qì(5¹*Gòqóo —oAßô|ýžÒð'^§WªòtÇö]|’bWåòØBŸçœ‚V„k q3tBIJ áÞða!qV× UåÔ|Œ2J«ÊÖ.#¥ÁOü¼6´Aªm™¸KG¦ÉtORà’9×?Ð;„/ê§öÿç˜7GÂUOE¯óë ŒÀãáuœNBWmWÒÿœêNfïiºéÃ’B=‘ã³¥[šê^êôÉ/¾¿W2iǯ^Ÿ›qQ^ m  ýtç°gÚMi{ ³³<°œp³@§àÉ©6¦åÐ9*“Ù)x§5-y®µ[ún:):ÀóœÒ¾çò!1îןéÿÛ?Šª:ù¸ƒ;>÷Çé<*¿­|ÜÙÔW£vXmWÕ\ý£6õ͆¸ZJg=;%¯çMò!Ÿá/iHY8vœ¿¦¸Bëëù2Ú:[ Þ•ZKŸ…Ìp?Ãn¸%‡8“¼…¿íÉÎ5(ãÃÀ6_*^Ë8Ù.moÒ夳®ãëŠÿÈ< yý©L‘³p àxìÅU"?•ÆòÂ$ÿu—^P1yº×@KHÂÊz äÐ1Ô£å˜dtb`ír"£ÐøN¯ÄÚt ^àré‡Ód©^k_Â)tfJ!Yg4åÚŒàìT J%Në¢.`y©.«©³±bð?UâñŠ\Ó)úÌ€Ù„K±FaI¾Ä×pΆ›”AW㱜—IØ _@=õK@²®lتŒ—•:¢ùðÓi*qüN¢~”:Ôe: ÊdL² ŒÇÛvm:g7•và±B0D¦Jšr}¶F©`~FwÕ]Œ"!Ôé%*ZgÓé8«²(3nâúµöh.× dðÝäA¼‚—ÓPÚOð<k,‹ C¸7„Ÿpš‚#=˜à$O–ÁðLµ¤t8“þÀ%’ó.Â#y½ü =pTÕ©)Ga1>VCìž|®û(¤`£þCÛp²l…áê0”Æ^º5¥m°k([•…JöJç×”œšN¦Ù\~K‚ž 7¥ˆ±Va¿Ø}øÏ vV Ü]ù>æã*út7©SÆNÙ “¥¹½P g¿46¯Ú_Ìût;sü­ÂÒ­‰ž ‰‰ [¹¹¹,îw¶Ù¿ÿÚèK©& GãÖÿØÂ¥t/êlV zfŽä5kû†û;Óvyd\TqxÜuYg‘‘äÁÚ Ï¤&ƒ/fnµ‹ËYÙ@K0c%‡P©u´Kb$Ÿ˜Z±¨ª‰w¡²ú¡é¬rIõ¦üX;J?Rù ±ŸïBGì‰I¸\æã*,!°]Æ9•Qå Rrð,ÏiÌDLÔŤ›*$a!üGÍ$#¦ÂD™.ä¶4†þ²ƒ6¨ë ’0vÊc¼ñŽÝ$ŸìÅ¿`ä…Sy…N+õdŠYÙ\¦HŸ·÷ÂN˜ÈÍx tªC4|•H£e$Bg&>•Âm9?o…Zòž·¨ X\…ÝÏêÂ8JÁ~Ësõ¾ƒ á6eıª«,Çï²–Ê>Þ ?Á/%d×å5äÃDiC{‰2f`fL'Ãä£ â ¥ ¸(ZFÑNµJêòHúK2­ÄúRóP HâjNEä¬ç'ÔÀÌKà/h¡Ë}ÜŠ†¯Š5ÐY–BaÎlWqüÉQº ÔŸœ¾¯!ãÜŽzNÓ(˜êàzØ&$b ¼Ôsvr '†nÂn.?ØïîÁE¼õå6=†nXÑÝ~Ò´0¨€‘Uùi TPy°õýÐ.KH y˜ÞÐ?j˜QL-u=äh ÂñÚqFùÎêFNaøW—qzÛ>ê%Qæû­¾Ë[S–y*{ Ù;õ/crÆö©ÓG Ь1ÇMv}.©„o‡ý(¡bÒ­ä æ< v9s\eÕDš*C88p2è Nüi¦Ã2tÃ,éJgd2O¨“gåÐ/%ÂHoå§-ê§ž¢Sü ƒgÎXg=ãsÎ]§Š½?ÐÏ;ǘd¦UI'‚&º+«ô™Ñ?[òê’Ô .aTA=4ü-eZXéôq¿új”vKyôzæ¤ø<ùð T1:´(ãüÏþ ÌâæÀĪûP™Yü °6¨zð¿ð—+h¬êáúìu×q‰5Ö“SZèÞÅ­a¼}Qš%ô"È#ch›Zƒ†ŠåA›šÃh‹;άa64º«¹ô*¨§êoÖtµPƒøŸä–Þy¾Åž?+~­xäKIýÌIуމeTùWWƒï–Áyd/V*RŽS)Ñ>4ÁýK—´™¦?•¤’•òÞ?”šyÓÙx†/'—BmÔ ªüC×¼F'}œŠs„ê‚™xUÓèh.Õ‰Š*=7¿bµšA]É~©ïÈÍ@¨Š3r«Óà—óÖ[ã¢úÃL+WùˆÞ„{©ÝqöéÑ|Üxjåà˸šÙ%ôœO™ð„ëø¾ÒmšƒCd‘æbà‚hXÇ¡z9 –ñzÔ„y8K²Ae Ç;ø f™kœÓ,ºAçärZ¶Ë0ž©¯˜[¬OØÚ©!µ QÚË<<Ç·e¥p_Þb•Óèc|SNS]~•%ó`nê¡þ‚k0_áuîk3ÊI”Ù8±;ü³¨.u~ñt=?©ú¸‰*àu$£Œ¬¡pøàzbevNéŽàó{%(p1W±°û°îí¢wiÞ”µNd¨¨š-)Ÿ}ÕòBfÿ>n®â‚?9ñõ¯äã?Umjoì0³‚­S™=õ,A×Az‰[º‡Ú>àҪŽNáR ) <–cÒGB¥¿j Ê©4RµUmù/ÎÇ1|SšÃ4ú*  /–†Ûz¯‡fгÀ"UP~À2,€MÑ‚Ð×Q=¬ûá¶EÔ’?ä.oQ?ùFmŠ“%ª”Q[É=MÏ/p–¤†Ù¥_É:P UÝx&ÿ“•xPµÂL8=èâYX”vI¼Ó_ÎÉ]”Ûéù*†^aèÊ#íx}Ø8«2ÃU;N”2ò îpx°$V¦ZØXU€ØÇ©M« ”Vwh½ªx.Sa•´…x ŽîÂßx+¦Ð?KjŽ¡³¢nÉjn" l×Uh î”m2P"i–ÃÛÜS°€„Ba9M/Ô4µNH¹bǃ0GO‘tЛÞÐmuÄUC qÉåq1×¢ºð'ß ×È͉4•GQ¼Ñ&ÈE\™œr¸ÍÌã?í,PáþZÕ;p]²Ù5ɰѾˆÅUÕ"ÚF7 Pknn å¨=‡ O”/Ü>B'ÕqÈí:,—°%„„0'Ãbìf|¢ìÎ;¯(*`fQ-­Çæ&÷cöKDJ4ä…!C¡/¼µú`(âNæ`³ëöº½”¶ËP—Ô}í"þgö ç¶§‡ÿ†ÿ¡opà!á=< L{¤½ÖÓÓäÿ’:)ôvhPª!OÃõ÷f ± ©ýg½A‰{Ô*c’±Çê0,)«uU“†lª´êƒqÎèl p ¼0Y¿°«ëöûš¾xfLÒè½mŠ:Ùíþ“2ÕÿJâ·)¿½-½OS*)Æp5Â]„¦9݇)šØ7\MÔó1Fág³ƒµ”.óÕ:o“äš½¬¼!þ4K]Ü—\›(Ûø{þ¨o{‡9U}¦‘Áš~HÓñ IDATäjh­²æ‡ü62–5Útï¬ÞrE•´ÄÊt"Õ«¢ëCX)c<$ËŽN9?Å÷3>G|sÿ% |"ÐV†Á¿êÁpc#ÕVw]h²nZcUDÐ&+‡94xwhHð%÷R«¶YÂ8…#Uxð çL2¯à סˆÛÒsªIþ­¾#ÞpJ;Õs£ Ì7Fû£<ý߆ƒ¼'»Æ ²r[‹ùìµµZG«’ÆA o†+d—w”„§¾²Å¿/IJWKÝ §p3˜}© æ„ùÒDîq^¬/•¡9w—81°TÓ“×ùoz['÷Nêê©ûìÓÞËü\•ûì wëf ÅèŠRÊ‹»©¨þ›¾ávÝWá<±å?§zÑ#Zƒ5“ŽÓ,¤F°šyƲ$W¨Y0PÃu˜Aÿ'CpLÌ2ʬ`jG--Kꢰ¾ãòYúÁ0ñ» ÁI2JnÃE¸%Wä\à;ÐÒëìtöéjír½Â‰8Zàr© ±è‡yã¤9ü†58^Àc¼ Ëð;l†O§v+Rwø%Nà 8™²a l18Dw×M)788•:«þx ÞP/,+ùÅädqØ—ícò‘ß¹žÊU6­TÆJ0òÉ)©Ï%Ž‚9àÁ½ÎDŒ„MÔIºBc)|Ê Û¤"¤@?h„e`vâü0 ð(‰ÝÍÿØ„ûÆ)H_±¨/-…úQåÄ¢XYýÄ-Øó`;igÔm°°o`óÔ>ªv`3ÎMÿâvkÎT>#XšJaY-­àÞW½h%¬`Kbå?|¡6õ +E?í :¢ ™Ï\ÌŽ®)!ÅämÈûØ ÃÜà*ba#dÕ¤cz-G9;¥Ž¼Ó•ä—*æ}–´0ñ‘ÝÌ“%Ñé¡)—·³Á6ªÈuå„]JÞH» Ìj.Ï„¢ô3š#T²Íj¸qÀ(ãú+Ø®¯ŠZô^fãQãw Q<ÆyÝÐ7 ž§”öîIÈwx:ÛPZö2Øì½l–5G©ä !î3Á¨–µÆØJ±’g–5&YÕ W» ôì†áT“Ÿ±­šÊówU’J™c¨«|ƒV¸LÞâù d‘¾¢Gùw8ÅuϤr?Ï&þáÝê?ï9ä‚~ÎGNÑÙÇ#¥ _„k8A§‘½°œ›ÃÊÀó°¸ÚÀ¹<ÃFÒÉÌÁO`„‰L±tS4©õz7—Ál`#Vý¦aª GÊiX¡x»Q1nŽð)\špfyÇO°Uƒ¹IóŒ‹`ã µf@*˜ƒ6|–ñ8¦«ñð ŠcQø3ŠWzÀO|K%±žÁŠ[vc9ˆ‘5X&èi°\†s,¦†ŠÎ i§«ùºa@ß—çìvºèlF!ÃKGLØ[ta»°}—Á9¥°96U?é ŽPäÔäéÖl,']øOi`RËŒfffÓ RjÆb¢œÆV<z©ÍÔKJ$m¥;/„zÿæÊà¦ÆþOö=É¡ d84Àut[-1&p7±á-I}‰”A*áÜ RSeR£PSkÈ‚s9½t¡ÎÐçÉìÅìE„Ý©˜ºg>•EøËsY‡«·¸žÓ;ú"á)4€Pð@®‡„ùåN‡æº¿éR¡Ò€sÁLn©KK £°ý…”EQt®«£Øã ¤äPšÎâ55—[ÊfO÷àÃ[-Ûe²¯¢!=æ¡Üô’V K5ø Oa~lŠ·cIr¥¥ìh®1£pœñMàº| ½78ÅŸòÂ6â>'Ïq&ÇMøÑ)a¬ÿSŠ?¾²ýS.ËfµÔ5Ü}ŽŽ+ÂKPŒ“aµ VÓƒ_ƒæÛ˜AX¦8)fÃN}Ĺö‚à°Šk èÌÜ»û$V¬¸»S ¸»»}ÜâRÜ¥¤PÜÝÝݽ¸‡OžíÞ;ÿ¨/ ÓQKwP× ®y”zbdàös€a^KÅ|A ¨¬*‡½ñ:_à¦z;0Ž€Ÿù6wÇbx›ŸóJ1V¼¢X#]ãÅ;ýZG©Ž¼ ÚAA½ >r2F¢æ¾Ð™óÒ|XÅ9e1;A%âoü|ïD,>–ÛT_U :C^$¦a7܆ô}]—²ÿ'ns ºI °öÄvE½ð¾n¨ÿÑ}!7¿ÆÑfYº #Uކq£j<'S=Ì£Kázîè •áîÕ=!A4‡A°T¦é·úbšŒëÅ»£:fL‚{ðUÔ‡\Jåsþ)p $A!»qˆÂä¿ú;L­ %fÀ7ð¼àãr:Íç¹:”€z,z@ì šéJº¶±–ˆÛ2‰×@nÁdY ;Q@mƒ}Xž[a"šj1Ö£óÊ+^‹ÝtŽÿ…µðÞabWE<„VÖ÷ï¾Ü©'Œë°š»8§Ê2®Î;²¦ùÂõÕœb.ßÅnX/^ñ§Ô xHö¥©\º‚ÿƒÝƒ#©µ÷oßÿp1máYËüáèçkí $wýô7šø>ì ]#æ†àäYÔ„–ÓHØÁµi -£•æH£¢#£.Gp]n,7û;YOU[)m]·´0ðÎáÇÀ¿¢vÇÞü€m¨Í>½T½’i0§à=Æl´Ã™9¢GÆfƸípΣòIMq\6?áegHЗà]ú¡1^Œ1[Ì]:—Ñu¥¿S1W|‡3ùÌÉÆÚìòóVNÀ‰z„2õhÜJWÈÄâ\6ð }®i·Ñ¹,Ë[Î{4užÏVÂsNçWÃõ2=Qo z„n‰oÄsT&~ƒJ´ëë?á<q/á„ܺ£=ä†X£;fÂ58›HL’ÛÁ% È;¼^Ì“=Äz<„·ð,‡TUŒÿR¥uuØ`ÿÀZÂÒ¥©Íø_‰#iº\Mh´[ò:bé–PpCO=9'(’÷°ÀÆi§`/°ô,ÊSð26ÒkAr"ŸáGP ªS!Œ×•øàÖeUvƒhk=/ÑíùÕÛÉ«Õ$ÕŠ‹Ê·â’˜fÄ ‡q¶ð“Äuó fÅO†G=´ÿW¬ÎöZ~Œë±ë}Ü€§ˆê´@L¥p ˆ†*U±(©sëž|–ê ôÆár©½ÖåÞ-kóU‘møº8ó钬DŽ©,&‡zŒ&…êGG5¹>¢Hˆá~&æÑ8‘ \¸2‹WÔ >b^<Q-H‚h,¯#ð̧[äPsæçB8A¯¶£T ¨g©6\ÆÙ ¹ VäYPÈÚ¥6ª—¸†zóuŽÁÛª¼E…ÈÄ1Æ\]º™Ý±  mÅCÌ¢ýlÀ.lˆÕuû(•UµÔ41 Ÿóß"”ç™AdÄrÒ¤H1†ÓpÌ¢gñj¸¢7R$Þr¸Ãôm9j`gÈÄÓø›în—´š ë;z­*m…ëhϨÔwÞ©©ãg&¥bAÎ’0VßÄÌ|Ô—A­ÉOÍÄ1T’RD*Vu°+gT °)dçh )\—&‹orˆ0°¬áÉÆÑ^÷‡·z}Çü":ȻЊéÿaFd;úÂ}»1¿„8…·Ã+nÀwt+qûh Û9¹D]¬¢[ƒ÷Û½Õß¶²Gèj¼£ãíXy oéÕb+½ÄË|*‹ßtýL4íú–ÈGÕ 4UÓ¸º:ˆk°ˆ˜k9lÚ–ùeHÀ܃ãà¹\Í]ñ0¼…ûº˜Î Óá0Ü‚ EMô7ë ;T½C×¶ÇâH(¡¾êáV]WEÆ“ôáÀh±‰;©Qh`mL7;cGìnÇ$ØÇ0n¢ù¨.ï)mÌ¡0ÑþÄA8Æ¢4§é‹xÿ hª!n­äD³ÎÄŽÃÌö#˜ËuIÝž=|ˆ-Ú ùª c"QV6òa]ÜDɼ›ð = c2˜¢}€âÔÏâùÖÜŒ AÉ‚8ÃY;N%q|†=t!;Î;bÓ>«ÂÎÿYô ¹ÉX.†ð@çÿèIz(P›{Êx)áO[½õõ goÄPOõ…R`q{œ üŸƒ艘+4CТ,Ø-r9êòPÔž¥u˜Ç«‡‰¢ÚF!g}ÑÄ1ĹÜ>ÿéÓ~—Xöêaö:» ”²ÄWÆŸ×kÞXY„T9;¨‚{iXegbpÅàëa=»fêV!´kPRPœ£4Ió†ühÇ›®ÉŽ-a¹s´ ɺ ü±+Ÿk»ó Æ“ê%~…&!Òlc¥c¿l>•>³œd¿ÐíòÖ ûÏñgU'𵦊3b3‘EYð\æ’ ¥W¼¡îß]áŽ5žféü3loö2Ä>@ŒwV ®Œ­ ÉHæ?!Œš#Äc%Z»_­ºTïPAÖPïÏÔ]ñé–´Sûõ-¼°·Û§õ<+“’6K~8=-OZ©À2W6k2ççé}|‡=ëüyô ó¼ç°÷‚éJ¾”ê9/ù!Á6f°ñL73â± yÅ683E9ÅH®ånjî6²ËEÆ1X+ßÊýFK9Åá5#Ô9uAwöLß”î‰öƤĦ'x {¤~hÔ:H5œÝód½Yÿn§Û­¬3AýÃ/Eäu½ rýíÊ\ß½;ìhPN×;Ž¢êÆÜ”ojWO¼•zUuM[˜ªÌÊžÍöô ¶þÆVasä(’øRh:ÇC[¼ åá%?ôgö¾¶¾& O-•6*U¤—·®è/öM{Tµ{Z+±3´€s|òÂF=M—§Ft¯’·`¨¦¿ñ5 0ö†7p ¿ˆ\²x…ôewª,rÈ»jý§Bõ|ÑWuoíÇÔR…bEÌC0F4åÜ\OÁ/iHÕåÅZÜÄ6ïÔõð‡\rãjh¦×éuVo. ÍÕ9µ[oñ— l,×gµ`´œ!FáX>£ó«Ê*Zí×ÝU6Î@ yTIJxìr— ØÉxl୴ؘÃP‹#ô‹Ð܈ÇÍ(Œ‡qЂÐéÇJ¢€Ì‹{Ź–êýøPU‡Å{£*Á‘¸⠘Ƿh§èêhŠ4›nãt~i?ÀÏ4@U±§é X\ÏÐÅ\1¢Tƾ²Äc|§"øŒU›C’þH-y´”Yé 6À5x . ß@è„cÅyÈ‹/pî‚;xSX<v@4̶çqYFQÇtU–KAî G8JA[~w  >ƒaŒe‰[¥?°¤¨Ogq:Vj0 ¼º9¬DÒ‘\ þ—UúEw9W…zV7ˆÆ;•RЃÓVðZýÄM:¥6P6ã´å»:3ìÔíù'N‚ÑØ…ãäC®f?ð4ó–PçëÔ™æˆuM”Ÿi’(edñ&Í¥:FsíS]ÅYm3Su4TÂ{F{‘ËpÜÄó±®å¢*ECA˜ð3He¦ã"ý\åJ*+&á1êÀOèIU0§j‡ÁøŠòsŽnÌ % ˆöàµXíÐoìÕdÒXš =â ü†s¡ªš o¸4àÆ0—Ê„Qƒ«°Ði8Tl€‘xBdšÏ‚*ëO`ñxë/=Xƒb0^ì;¨Áð?€“BåÅsô³Ce¨ɰ ‚`w†ÞpÖØû¬étHÕ“è’>‰÷D ®ƒ5íGê½êéªØ Ëa2g„©xQßåÌhz³È²®•ŠÇ`;îÆ7èïÙ…×q •¦é…<øÕ}×.©†˜Nþ‡Cè¾Æ ôžÀÖTb_ü P>ÃKý vò=ëw˜¿Á2Ì#ªëïðn@:6Æ.œ@K)Fφ^z¦^ƒøfƒG| RUž"Θÿà(¹€Kw ƒ:da%‚Y3„••'„Óî`WP™­¯ê…~k0»¹ÚÃ{ýV.…g¶[ ár|À³)åkàEÚ­øÅñ)ªå }æ^²;ôy'Z«ð¨ )3‚›9κۺ`‚tÁˆÀ Ý–#abÀ/»`µ]]÷¶Ö•TÝŸ2%-ý‰÷ºo¨w1·‡>ëÿ.âœñ£ã¸ìk6ëÃE¶Ò¬Cºt¹ñ¾9ÇÌ3aŒ<ìD3ÆUÙFæÁõpÏ¿Ÿ-üC<”]D*eŒuõ0÷YÇãà Ô'Ê*Þm¾"éky˜øipªþÜ|áØ/\vCïs{…:cíöÝÓÏu«€iò”<tÁ=ß9_t4#Eœ@YGÂžê  ±¶ûSü+õiõê?©³YP:S¨¡ºãí¢æ©#v+›Ö~ðþ÷k2.TwdÜ pîxâºéE¯Ë»0õJJî¯Oœól};r§{…ì­oÙµpQšôÏrMK-˜žìé)‚E‹ˆÿhkZÕ@33Ýz­2:£áÆ®à‡;x£˜…-©Ž=CD 8¦§ÂûàÒæ>ÇuñÕh霨›YZ¿·›ÙiuÒÛ{6*§äHü”žÏž&稹F˜ì§7ªªž<žú"7ÜálÎ(WNׇ°ÜáA/ŒU²¼RMõ7{FŠå·~$GÆ»‹CtúbçÚô~ `ÿpÏ‘—y)l6.@(ƒ²ú ‡.:4€³Ðï¨p’ ÛÕR §žTÍÔÿ”V¹ø°Ê俈 9ÙúÎWyŽè a­±Лú”޲ïB)]H‡‹^r¤ñ'íÇá4‡=ðݸFñ›HAÿš‡Cø…ü®‹ñš±¦:ÊKuÇ`?üMµƒ3Îp'äQÉËô[ôÐP1NóN>ÎÅùŠ–`Be Á*xBäS«Ô;½Ì؉-©6OäþÖ[NÃ!¼êA*Ä9uAœÉ”®rÐ^ñ‡•×î«æ©ˆÀEÿM˜ÃŸUvtT3_ȺµŽ-<šKò :/_é”G®ÑQ¼‚«aW ÇRVt‡x,à¡ÑŽ{óc:Æwø>~×¶š­rÓg,Eà»KÁÃKäÞ¯ š Ó,¿Òu­.ðçÁÈdö0ñBÞ­›ò-ÕQ…P.ª‚Y…|¶jøŸX›øŒUoQœÉ!\Çì.jÓR ›a9Ôš ØÁgu¬áÁåPÛª­F©)T/qUåÕÇñ®N‡qXŠÎÒxËR* ÓuA8 B/~«‹`gñ@ 6ÆNíçwm|Âæ”,~‰Kçÿh—Ó°”5ô&(% +náçº5ÇÚO°/ü¥¿ã~ÜÆ%YC$2Í¡²¢5æ,Ô?:Q_‡íØÉÊ+B hÄKu \'¯8ÁÝõ=È _¸·þ(ÎÒ¿ ø².Ç?áª ¬to—+̃Ô©]ÞÙ¼ÕžoW2Íïâ¨z€õ¸©x.Gê"–A…ô^Œ*âT3¸¼Ú£ïq C.£œ4P?Ñi¸œrA>8*‹ZôN—‚ÑOýÄ*̧KéVÐD¥éüŽb)KRi(Fñ0˜»Á/hÏõf6!/”Ƽ”™ã :\Ð4²Ð©T ÃEiè>Üu~åßu/¸…1špQý²«kz30§éXÎVp+qY=TÿÂ'Ú"¥L!'›ðT+°VÁupã Þ§Uq( õb§Nªµ:‹*¥PuC•ÆE¸XÆÙùtA]ߨ%ƒÄI8„sÔD_}ÊJ¤šxˆãTKÈ£ƒøšÞcm06àXú¤ïÂOñý„ùŽ!ü®:ó(¾î8‡ ‡|$~@W(ÊYu1ÈÇð85ÄF¸†áRX¬Êc]ì‡qºÌÏ^Îíxu†×xSgUåy7ÔÛ —¼môPwx<„á]žmßÀ\j.·Ã¼´ÀÑRTòµ‡ÂVu,2ûCónÿ(Ä3u´ÈH­­eê¹ä#Œ‚¼úŽ*`ÏäÌxÔ_Íô[j…àD¨pqçRÕá•ìXl»ä\QWˆÅÈÞ’¼ 2ªa|ÉxH›¨9í…Kꤾ¥….ŽÃE`4ð ÛVéj`àïôŶØë)lÕ´âŒÝFmÇÿô ûÑË=×™VVmà5ºrzTÐ÷{߇@eëŒÝÊž¤ì;ž¹²U꤃?wÙy­Ð¯‰8H® .®Yu7fé¿yõÕËívz|ßÿÍûA]õî$ã ø$ûF6§÷]{6á2­Ò>¦ kŸê(êOó7vÿ­î%W dû~ׇ —S ·šá°=ËüO|]Óç$óØž6ÉuÓ{ò¥×÷Ÿ¿0å=8«­µFgGfyÜY$(=螸)rf ñe•ÕÄAçc2!ö”óu÷„¦vIûœVÙ³Þ;ÈwXì³°¢ã“ÜaÖ·jX9édZ¨'"}_`XÀí«›Ö+im‘„Rß'ú¼fê¹´.ª¬ÊÈdfwßpuþêÔÑ~ñêrXàŠ¿e ¬ÿ¿Äð_Ã<Û®û’:$ùBÊ\ª§r˜CÇ@ms©{”ƒ1b/g‹x —°ÎÃx§Ø[Gý¯RÚÄ»RcSŸ¥_ó°rè¹Ð V@û…̃ûÕžˆSÕK$Ü£¼ Ý©%š¢ÕÄo…Ãýcù”æ;ÐM¬ ÊFÌhÇã¤#Ø<+àj±Þ*a­¢-Ê͹é|¡¥x˜ýz7£(LG¸­ÆWì‚•z#”„u€OÀ`èÈëq“މ/ù€Î‚•u}µ;CVü€óp§8 ¿ó(È ^ØÀIpÇÃyš‚+á j ´WíÅ£¢¯µ0ð"ðÌ ³ûûÀ ŠÁw\Û¢(ÝD­U 0 Ÿ©Ì:7^S^úŒ+ÕqÉ«ù¥¼‰Ã¨ÜÅC†^ä z*wÅnAQbêÛÅI£/¡Ïæb9†ÝºŠèÇùíïPOlço2“Î8 ‚ÊP‡âA±îpy{¿؈ÚáV脳p‡ æ |”Bažw¤ó¾ "©N×ahó]·Bf}¡T`«<‹í¹œÀ×u#:ONé£ t²ËÙ‹Ý!ö”cÔqµÝ8•ïèzœGW×ϸ[r·ƒóT÷ÁXNƒÒ°DgRÚ^ÉìŒù°½Å[XAñ(ˆ… xcnÈu)oó2î ±ê&oåíè´>shÆÍq&üEIXŠ›qT «p‚Žð;ú† IDAT1VñÝÐØ 3ø/=›«*O —Wƒ8ˆGB%,ë|dŠlù8ì`ð$×\Ç™ô#©M¤íXS)R ý’‰æw µœ E¡¯qŠp|f­ÑìÐÑ+¡'Ë‚oAR(-‡§ò$\À`ȉF´Ühe¶(pÊs5körùùoÌ ‡ð_áåwЇòØÅÔz톔€Æ‰lPKÇÃõ[B(Û¢8°9<‡r Ü)7ÑlÀó! Úº6¨*œAïÄ]3]à,PËCOé;c¨ªÓ|2ùG‡ZÊqn5ó‹œØ:ð&¬¤³*Ä"r­x΃à,üewà7X[çÆ›²݇šÔ„{P°8$nÓUÜÙv«“FÓÀ,;5Øé*€ ‚ºúÀ=ó£|e\ä(È%ú¤ ̳VZÝÔ ÕÑ|&fRu#‚¤hHCé9}vmvÆ8êÍ#øc6_ø7¹Ìa==Dd˜#‹Ìc¼”G©µ^hM·Rì£þÅåóBÜðw²‹é»¾†‰Áés½< ÎïnoFÏÀ8ÎÈ£ìÝV9»¿èåÛåï߬ÔGñzýIWf÷7Ò;Ž@î´Oó,ë¦Y—ét¬Æ;ô0èÅUôPÇ G{sµ‘Y¶¤B8 òé43ÑÜkÆD4Îõ/³[?í%Övf‘_”âj‘=<µˆgaÂÄO]Ó%º“ˇá¡óYб !Æ6aRy…ª ¯RïÔ>cQj[Ï*_‹@ë?GE;±Hç:DçÃZð7õTU¥|G“#¨ºìö•‡W/Ú"-KÚZ÷Ëš<ïËǮۡ³"ž:s91¸Šƒø’ûîÉŽ§‘¯¢†ÏÈ\%òJä€(OøZsŒdMÕO­5í_ãò<ôNIí^5í¶/9°1ý¶owZƤð„!ߟ§†'6ú¿èg‡·y?ÜûÔ÷éâ¸áI§¿T÷·à>î0o¹få u…Þ7VŠ^ö^È n>G ÷‚¿˜vˆ]eôÒ'E%=ú+:nî·ô_ƒâ›~½•t"mBÊ•øä—ºÍ¯€JHžô:°(h‚Ý7C#Ý?ûŸ¡£”ƒËs6ž¢ßêFüÌSÚJ •iE½iVŒ?ØÿPå¶{¨:xEwÒÛñ‡ýPßàÞœLUJ?µöCÞ…ûÁ¡2ÂÚn—墔.©ÿqmåi˜æD¥£æn³€ôˆßå}zr¥j*çÄåv.ˆ…ëú æ§ö”YÏ[¢ ÊÁãi§þÄE©6ôæ÷ô*ñ@Ñßþ©ÏB¯„Xî¤ï`Oõ•ž‘ŸsógþSeÀx¸`7ãÖ0ÁîÇ!’Sà;Ö°ë±øÝJƒPzÍ› ¸Î‰ öEŸÄQœbEŠpý/„沌\"óQhÁ ìܪZ 85÷õ #‡x‡Q2VÀs<¦S P¿»¢ì³üN¼‚z¼Ø+0+4ÇFx?ˆÅ¼úHŠÓjrè¡ðŽ¿© ö)•Ýnb}V^{ƒšÊ…¸¨X¥  c ½NÐT˜†MÅDÜ)˜ü¢… R[Áè7è Í„G˜{Pwœ®\â<Õà'X¼ºgå©<¿Òn½LŒÒ¥á«.ËùÉCSÍ : ¸Ä.Á­¨¥}OíÁÚ©ÆÒwXÂ-©'•'1â®8Êã©-áÁøþQƒ°ž´+`Æs^ÁÁ0C=<‰ Ή˜B³é ˜-šá¿°=ð”×à^H¥ÚÔ£ ¼Ò·x-&â#8ƒù4J¨«Ÿ™óôïv[Ç#¼ñ†ÖWÔdÊ¢ç¨rTnqSáç£ú¹:‹;Å[ÝQN`gbT trw‡“÷ŒwxRçæz(õàÈ,oëêzµª@­¨9ìä¢j‡JQTV« ?äW|{ÂG([ úìÛvˆžL)§ÎÅ©«µÏxo4ѿˇ" –èŒj0o…ÿaK¼Y±&¿×]á¬È÷èÁ\¸ƒc8 ˜ð!Õæ) Lê—ƒß ™{A7¨ÅôN¾+üô쀋¥ûB}üûÔŽæ| Úà ü@wa7¬â‚ð³@ºø¦fB/È Ã±5ßÒ«ôH1Š«3›1˱v øªØ+t}u8ÐEìÃXO_çªv”Ôut*~€xµ Zð».£zÎy¥S4w6Ò¿)ò@oÝ‚ñ :Bá˜XÅ[ôXqŸR`©è˯9måKì2L}Œ¿Ùñ4…rU{€º3Þ–ù>â’ìç÷vuø¨Ñ¸àÈãÅo¼‚O‹O¼U}底ΫJéÚPÃþ¤c1”ÿUn˜Ã9‰j›ãh·]‚EI΢Kð0ëÆÃÚÖßx×úU<¨þùþÚ33aOüsÏKßд.Ö.Äßi—üfÌ–e/}—ãjï¡Àajé§z0TàBæ<#?”t’ÁØWñ¿Ê˜k¥Y{Ókø_Am_g¬g­°oªÌ<öÚ•õ8U2í‚ç¢WÄ]ŠŸ‘w&1Þ;À_Emæúp&c﬛ó­ >Ù42ÒÛߺho‰Ï0>ñÁç×s IŸ]ï¯'÷ûaüÜR·¤}°ž$IÈ—ØéÇ×ok~Å}ö#ìGÝ”Þðô"ÈtÃ.$Ç`5‡ê¾¢´zY3í*ö'ßgUTM´ŽQMøF_ÅÑ_¶6FˆëXB,£æA9Áy(S¹ÃÌÚ@ÕP7d¸ÿ•/)”>Ç;> ìçöøäF8 Gèk˜I®1ŸóZ¹D&Âa¬+Ä 1[œÍß7üR1Ö¨vb‡]¾Má ßæù5ìÛ‹ØŸ±Y©¡Î"ɺνÁMÂÎE”‹Xaeèê¾èži ªTÒ™4¼üӽɱܸ+‹ÉS¯á†µÆó4ý•ênó×6{¹¶?‘Õܶۡ#é½LЉ˜šd÷Cšfÿ²²Š~¾iÿ«¡Ej¾Ãç~ô#tŒ»hX6NŸç(FFŠta:–¹Ÿ9'‡Ìmdrîw¾8}£ìâÞÖ3.Çùd!™I­KùÃç_ŸvßþÒI.9û[^wù aåõ¡)*ˆåÌð„¯ª†ýªžB½1Õ,öµŠ__!!ÁÚfeV9•“è(Dã:• ¥u[U>scpÒ¼g쳪¨xƒ·(˜¿ëêx•æP;ª"ªb)ÑEÌíÍ*Ž‹ÔĘ"ݺ¼†-ÌUu¢=lj‚¥ñ=¾ÁrxSÅÑL/àz£Ýüã¸'–£ÅÚÏeT°Þ¬ó8¸N\‚–T!|2Ú¥u]$.ceL—aø^#ÐXFÂÜ|éà&[õÔÀ,îÀã}ßT‡@fÿ²À»¢±V<ÆXó¹lŠ.ÕL—UÉ"ºâWpÃjã4†ÓŽ»¸ ˜MTL —9–òPÇÐUÆ™—âÏb ÜäÐû`o4ÐI{¡»1Yt¢ƒñ„ûA3¶ôu^¡Žûoc#È ·h´%ËpA.…ñoät,À«á±c­³œüCëöŸ5Wÿâ8naþ’_(·˜ B©0:õS®©cõº9ÿDÓñ°jª:áNâ©2½e NÀkøKçä)´β”Ë  ÃDùBœƒN‡åõ"N̺…ø“¦Ó<+9 ^¦1º(?ÓŸð ¼F“’ÅÊ#:CÞ‹µ0VsCÌG‹õœ­ VÿÓpüÂ>À!\l\ˆ)ðMg€’|ÔXŒ;ÅcUÀ^-#¨¹Xh\Ô­1Æ`Il£ñkê£?QkqvgÍj—†Í¾—ºœW‡.þ ÌÞäÔ͉ Þ†¾fúž– Ì.!gÈüP]Æ™]é7ú,oóÝPWƒ3°€¿ŠüPÓàJî2¼ ^‹¢"»ùÕ^âL“ÝÁáÊàœçþÃx@(þ“§¡\à»ñÛY+ewüb?ĵi³ ô©ím’ú:=Úþd})jºÜì(åˆ ÚèÊí?•~+Ð(M§®I?Ñ'CLpïð}‘§Ìïð k¶o™?Úw÷Bv¨)ÿG½ñ7׳TEI…•O|mUaÛaÝL9º-c—ÌûCö‡ùóؿÀ÷)aA¼/¥~RÙôÜÉ猯üÊWÃÈèFÌÜò¡;.8$rjFgðÚb®(ÿ®@¼¿¼§{ú Ÿð?±fëK2««¢»¼ºjƒBé‘i¿üu©O®_¡Ý]-a cÞ§ÞÊæ@û MË0×z!vgŒçª¼E*LÐ_ô#\Cu6^ UkF5]=õÍõòý\4Á•´Éó!Î÷·/Ý3×Rzžx&Ây(®·ž¡—ûhD±>r^®ùôsÝA y‹²AEL3ø;¯£®jüCMd¬c£û¨ˆpÍrçã:—pŠ¿ŸZ«¨ÜPÈZgmcó)´‚¢œ òø‰ÿÇ Ô2î­; –·ÅX(£rÛmô¾Ãm8#´ÃvoƒJ¼+b¼ã¯â™Æ€×ÜT,§4•êëñ¬°#6§;ð# ²ÿ¹cÔ…Ñv ¼„"Æ £/.’»œW1;§iÃç€ïj­Ý«B^WV\n4w6纕WC­ÏöU¸ÂyaŸ,îXîLg/÷ÆYvë+>âöìÆ0º`V£¨ˆ¹œŠÈñ!Õܽåð„©“Rki‡î‰¿TA}D†Ë‰DMx8LÖ¶QHzEe랊ƒø^'‚pÊC¸Ö0ƒh$_ç8…»XÊà_Ø {ñÎŽizŸ‚ª²«ƒD~¨©Ÿ`„ìFŪG[dfYE½PqÜA¯†ªP~`f€Òp^·Ã°rÁ>BýÙæ\j—p”q5P™-ËÄS´‘«âL(½¡†XädrŽÀ Þ¬²¹W´Ã¬‡\YWUŸ|ßà¸o’·¤g€÷’òCf#ÝÜ';G8bœ™ùœN¬¤¾Áj"KÈÍê²å’mÕtÖà5JSkG«&¡ñ:‡JâkršüCžåSÚïñlÂ4^ ñ*Šác=ß¾¤Êèžò½¬k¬«:üb7NÚþ¢JªâF¨˜­ð>ásª-ô¶P 4ß…Žýá>½X-©¯H‡êPˆÛÓak4”‚œöEþ¬ksÔ´Düƒá»Ü®·Ûs°‚TFŠfVy:€tØ)ª/å(«#9Å.±.Ã\~'`‘j˱¶Ãv’Ójp5q£Wp¾ â ø>ð3®'¶ó|ÌOg°"9í½ê#Äè]X‡Š;ü/V'¹¡ýMou6nÃÛ9/j|!O‹l4_æ¶rèÂÁû)ŽLçY3éÔ‹ó-^-u mC?mÁ´À¸-êQgþ„Þu8†ÞÑÓh‹èjÔ¦W j¡ª.cDC_;»3×õýŽ14ÀY Ó莘'L¡ ¿ˆ‚ô¯Ñ]d©Ñ²¤2Ù­§þ>'ã2ï¸|;²Ý .å)/g!ØAKmå[ üyÕ{t8ó‹-˜ÅüKVÇÅÕÉþJÊ+Ï$Í÷4Hë|c\“3ä*(ã®gÎ9¥Óc1F=9Ý?#­³/øÛÊè}çëlg† ~7N Y-Ÿš“ƒ}¡'‚|îÁ*JV#Rãüƒ}%Äý˜—#¹ååñ{½-Òcügù†9ÒiRÈd‡ÔpŒt¶Ç îâ¡›]]‚J;R¦…™—•SœÄ}f}ÿ »îŠ~>`äq7t äj¥¥;ÒøúÑn…œó‚[»žo7ò‰žÙzjïÒ½Ýý¦µ¾±”·ÕE¸d4Ϩ<Á±R½p 6‹9ßévª(ÔШáÞ"¢"?ñ¿5ãñ=ž&ë*epxSKxy &MK—V@Ûfc3»]Ë«ÞÞåþ«É#±;6…Xj(f!û¸>DÕx9€oôÚØÕõ@_ÿû¦¯)mÒ?` ñJa;܇A"#uÃŒýî3b»¹Àìef“™ûñfƒªˆu+u¾c„4ËÜßù;2ÙEwó¨uÙødtÔéz–~ª&¨iÛC«ü·|ÿá !qþIåô,˜¬Wø,‘JÛ¿9É%šÃBÔ†‹ÿ½åU‘*Oš5áÁ¹Ý…*¢Äò", ×àô…mœFiÉ-õs.ˆc=%ø4J=˜ØÁ÷–w« FÍ) ºÃßê¹* k<„n|EÖ†Ç<“Ö`>nE¨;íPótˆÚã¯Îmu{ÌÎÍ «øG¯e-¶@V¶¨£í83ã~èÀsx#®Ôxd“Œž4™V‹ º»n §8·N€GXÛè€8@ì™ê4ö?â©X.P—Úbé€WòE~ŽmŒçìÓ99 ‹@ÝÖB|¥#`*á ØFP'̽ÅÍm³Ž|â*¤Â&\(òÃj \ ’ä$ŠäfTJ´‚Õ8‹Pj/ûÈP˜*¨/Tí XU8tkÑÒÌõyŒ l¥ëðŸ]R1Êã]º»y䆦¸kéÜ*Šñ%z‘ðVæ¡}Öoº=þÒÍ!I^Çå¢Át]÷æ°-v¶"ÙÍzVøI…ùT <-³<:³‘Êá^±š‡¢t ¬Äáôm’ ðö˜äqÆÈjÑ,³·Y ¢ÔDúW‡Ñ6êBÕo*+|ÄF€ÊE`ƒÞ‚ÿÂTÈÊÓ¹þ€vpâ<ˆá%ÜÅNú¬–=x+—§u(wà[Ø‘. óÅnгËA)h_i1ôsíR0x5Ÿàwê3Üã¹\„~À JÐSy?浜úB;TœQ“ê™Ì)òð ±ï¡"b+½ ´†šCá$Ì~LT•(ˆ†`mc<…AyÇî ?ÜaÜE_ÐYp?±²8†™ýá²Ù>¨ˆHwo [å<> ôBðýÕaSC“‚ZGŒ ©c¶ ;’Cµ¦-ÎPÚµÜýRU6Ì’T<È–ît24=$³Zðh±ˆ²˜çT4§«Œ4Y¬1wȹÆnsæ¡gØÊ,nÌ‘‰ŽâÆX£«»Yǃÿp÷å{8•ƒE} fP_W³JÐa÷Gó·×õÉÙ׌6ª:?ɲ©3·Øk|«`*:ù‡]X_Ð[ô(,,ŽhN“í¥ü;xuD¸óBH‡ä»¾+ÉÓßêEP GËEFšcbØÏ¨BǨgê.~6:º®¹@M¬Í“ì;ÖiµÖN±;‹ZÖ%{\ £ã‘ë(îpn r…¿äH{«¬ªZΔAª(»ô(8„ÇE*ª¹Ì!b£³¬ãˆÃU7ð2½Š4üª‘4Ãñ\þfÏwNZ…gœ9] (õV5 Œ]è¨'­œuEw—Ï9I¶2ö‰I2ÍÓŽñŽªÆ1°hvÔýôKðÙGu!l$æÂ!óžº(Á›í5¨…;¸'åæ^óq^¨LèÇoÕx¨PØÁ7ÆSƺÐþovSQݮ͟­ÃœÍ>f[º;DB8¦9“à}Æ`n¬»«Š Íxœq“Þs'âI.ÅqÝÇ:<‘Š10²`6ù·À&ª)JÓ Kó.Î ãà6ž ¬·Ûêk`ãgé!.6'su^m;¸=îÖ¡ðšña܅͸.÷䬜Kx?°ŽÇbUî̵à5¸,¬…y Ì­kð.¨ wá¤i¿.g)†«?ìSüDõÒÏtÀjË­©-4åãtþ€X5L „(úE×dO\MçpÍëÔ ˜ CE„®Àóìò6êhœ-òб¼ Üz¨ý »âD~sð_M k Šnƒm9—Ì%^ “šŠ)ö\+gˆ4™…#¡*Tâ³0‹ºp&<ˆ[h–è™ÅK˜Ç‹Ø£[‹ `2Ö'´jA>èŽ a/V½°žháÏl/°IõU=íÊPžª©Ð{RuÇzG,ŽwLÃÇè÷Ÿ÷ÝâÓ°T'Ñ$xÂcqFCu4xgÃÚ¸œZbœ‡Ë¶ÂðE'èWNÁЖßa>Ý À0~ƒÕ´nñ À+œëäl{·¡_8@c= †£ø‘n„W!^¼eÍÛð˜:ªç©çb³øU³wÂ1ý™^Ói°¬þª½jM[p";Eü ¯ ?ïVŸR5ž¯£ù!G@_ÜÃU0:ál¬#Nè¹:Á¾ã»9Dw˜9±•Ñ30ÚÞ"üÎçT@Á\öe¾måTµ¹¡¸c†Q9¨y* oDMˆ… °€ÇÙi3ÎæFÆ,ñ?N±Zè_ð”>àã±Ê¹tc‰Wa‚š¼âá¤b8æÆí”VÂL$ÌaÜ#è<™üŸ-©<ÞŦvßÅ–² fžôMÔÂÁzÿ _ñ8‘jÓnhaWTM¡6ÜÄ=Åã ·V0kª=ˆÞŠA" ^À½Š3) ¯ÉI[íVZè øš„¨c¹—?—Óƒðwk”úª‹‰pŒ¹1+MÆÖ8–ÓÚæ™$zQQþeô3ÎCU%ÖY¤7x£ˆq†Ýûè^¢*zá7]Ž ÌÊëmÁËy·X‚sÉÍ©p¾§Ÿñ2c;~Ä>¬›ò>gŸ€H®C;á®ðÀ"ˆ–‚+qQˆ€f|2p´Ê+v¨ ø«c:ÿÀ¯nQ¢ž eucÕ@ׇžÔ~S-TS=ÇË=z¶^¬2é>pBVÑ:/ÕcdNÙ>:÷ò^ȧp·Ñs-%J¯÷\ Îj ótw\7ëÓZxÏù¹¥¶IDà«)iOÅ{è–Zg…èÙDêÕ#­–.…D+t[häD˜ ´Ì£Àl»¢.êÄðР{˜OMzýá™5ËÉ&šÁåy6’äÐQÖ›âò2bM©E½«ÌFß²_ÿö÷ç±W›8'CAË#÷ w6‡¤®¯Z)¦L‚º2ðNS~IÂ]ä/¥Æ#f1æo0D~s]½á'…BµœúK;=5°(p™Û˜,|ЦÐ0éŒ õªAaLpÚP\#a8r€ã<á¦t®SJ}ÒK]|…gd'ܰ“ÊMIÀÕT—Â>ü ;¤%çLÜ‘w£ËOL‰wLi ¥ —4UÄ@%Þî|2Y¹ñ9ÍNSÃ>DcèlÇ=PTûi5fP饜ÂÝ"Gå’Ê´Vp{i…Ôÿmq¤µ…¹ð“NÛùLygƒ{¸Ú¯ÓK{¸Ä ue—b<[¦Úói½¤Äkæ¡sÐ|¦¯¶î%²Þ9Í ¤¬‚­øêàN3] 'á4K–r%YC6¬—2Üîcˆ}À„™j ýGmñôÅùÒYÒSS(ÿÁ>‹¥ƒ/4· -·Vò þlÊÙ ü7¹€t–>Rü°5î‚ñRHVè…ø J¼‹-Í3ðã>ü^J´0dzf~â7°^ã\ ¡;”ܼÈrSW®+?䪉£Ô£Úˆ ®@=<U`;<ÖQPFêÃN¤ê_lȤˆ3RfIy*%h;*ý~…—2ªálú…á—€pL)•p¾ªgß‘{îÌj,¡¼pÕDî:œµN½.}3Ò‚ÿBt ¥ë¸>J©âÒS¢p,ýR •…ÝÉÎâÉäî«&@c*£>ó5 ¿éÞäZ´ˆÒË!g°ÉdîR3\C}ìTþGäVÕTaì+@K_y0›Ì’70.ñaI e2\ÄopA–ÐE§¡ô¡í¸‘Îñ êgh8¼€ÂØÇÒy ÛíËö,I„ñò³¤Õ—ðœP«§¦·ó]ÝV}i<¡‚òV—Ò ¸Í‰´JNy(†–rs{èÅêÔ”Xþn >»Þ4+ƒ_e ¶ÖX3á,åâNÜŽÑ ša¥áYN;gçq\€a6¸  ¤œTÇÉÒQ¤À±’K&³ßá¢Ÿ[Â}ù°(†TØVÂd””væÂGy£jÒm5ÓËá$-–]ÜVé×”F™&r ¾È.U†ÞÙÏ8¿äVá¢ÇèÆ´: ƒwy GJÛ@[™‘T†îa?®Iÿ”¦º Eñkx9¬ú*~”óN„³7q¹?%?ö J§î5§Ÿo€3Þ?/±®s\WÔÝ=Üý±‚J-ÿ˜(ç¨ÿù%ƽ;°Í4S~kŸÚN¨«Ó+,‹qý7?–ð\æùÊÃ"ýÊÞ¨ç Ku+»k«Y%kÌ“ÎYá/çmŸñ¯Ý•=[ ¹S8@: õõ2ɘ -™ø½Ú*$½Lá¡kŸ55¬M&Ò×$.ìÌŒ‰³®ÈMéBð^ùál˜ÛzoÕSiÕ/ ¸VR.{/çµóø{óRŒŸpä³H:>p;°Fæ'f Ü´3Š‹ÃSilPwWm× (ÍÃh«>§`œ¾® Â)Á=í…x_ïSyu¨{±û5'ËiƒÃÕ ZíÙ¡z˜=ôÞÐ#ÌjŠio„šÑ­½eã›þC3y<å·¾±ßbî&®õ—ƒµ²Î70ôuè© ÖcËKåÔ@Ľ­0ªiw ÚéiRʹnòåò=÷® Ü÷ýçë-‰#`˜‰rŠq+ï h#W|gøœié_”ø-qZÜ{;1P×>H·¨Ð#j®gÃ{ÊYËÝ–úö˜ÖÂwSk³Õ1hR K füK3Í”·™“Œ\0eq’û‡û[R­§ÊKXŸ#öxÜo^‡(³j be3ƒI]6EM9×k^‡sôY)…ûq)ÞÐû`%`"çÃeÇ\ØvjÓ5þ\¼N<콕¼sæK5ìâú‰×±ˆ¼t²ÙÕT.GátÇX8OU©™tÄ®’`@2J8ÚTξŠ¡´ù( ¸ êÁl¹ÌÛ¤8dã|ü†÷˜ý<ݾçꇫG­áÙ’_Ñiz§ÎѸÄ])9 2>¸ûÍH)Åéd—Õ€ÚB9N+³1Bjr5RÉIÞ °dáAÒ^~`Q8++°,\£áÒBM¼Ü„f1º)7,¡HŽã™¬ø àj’•÷ø/î™14‚“H,¾SéŽW~¾‰ù¨ -¦Ò°?ªÉ”nBG«WàÜpTþÀƒ ¡ ?Æ0Ø,ÕšÞÀSùk¹²ƒÕ¡4ïãGN]Yd{íÌ+á¼B¼|N:JÁbÜ‹™©&æƒHÇ–ÕMÕᵦ™<’Ú´ÃØü*(®Ñ•± žâV7ÕÃe3§T—Ívû õ¡Œª«Ë0H/Ùé¼.y\]¡ª¦N©Zb3'mÀ±£Í…ÅO¥eøžjÃ.ø›ád‚]ÜA-)ˆ_al”µP _Á4Ü­žBR¸ ùÉ…µð v‚Öä–'pÙ´`c8†ÃÅÇ=ð&f ­ú$æ2£¡ ´Ã ’—ŸA*^b¦Ê{ZŒ_ÍM|Gi(•¤„DœM±*V©ð ÕÁM§3¦·¹ÍK0wÁRóQæÓ`X ÓU=SÈLåÎXŽyr:áæ²m‘‚¼j ÕÅ©ÇTYüÃýLˆç¹õÔ„¹ù§V¡j(‡ðk;š‹qJéÍ W­2Œ;ÈXH½ToNŽù9ŠßqO¼ð«]Ðv:.÷=w~8n’štÎAs“{é;Ð âÈ–ÏPz)¦Cp|ÒCòòbyæ,¶–麮SÎÿ$¥µH}Të!àÏã+a¹wZMñ€4⤃nâIYOG ’NÃ*ù«’™ÝüZ`w¨þòM¶ ã\I ç“q&܆[3 ,—lðþÒ›hX…øµSßœ†P“rSç´ª7±u£Õ²Ê8Óù$¾ßø[Õ”¤TVþ¨1°ÃLµžF9IÃuAžróAµ’n΄É)Î*¡Bñ£© Íå•ù)~Þ€ñxE¶¨hš' ‹ÁýÆ®dÄjˆ´Ó'Í¿°ûËV©Á#œx‚ŽÚÛ¸)ÍT¿) ««ùø ¢¥‘Ì£&BžZE ìó—¢/8Žùx1“I¿1:ð nªªÁa²|”å(ðòJ‡BýE~â~X#…ÌŒç.·oÉ ó“ËP{ë¾éÝ)îrû4ÞPg¬;‰ì"¸ÑiŒÃdfð;™©ÏÉ'»ª®¢ÊIš‚ñ&U” j·”»(gq·„ë´Reõ‘1NA˜íþaÅ(w™à¬–2kUµÙ[Á÷+Pʽ7>eѺ'œàrœª«ŸçbØ€7!÷AÆäž,2iEîl6òÓ„pµ9æ÷ß4oAç.ß Jˆ¨¤2ZT œFÁ´3àØcZ'þñó³vY5rŸ¡„ Î+ž¦Î˜¹%l‡;Äòêa!È Eà\ãnò§B| GÕ]k OSŸ¨"æR'e‰z¥¹ª`1)ÕÔr½ƒ–J[~eÝãu°Ï”÷žÃ'ýÓq¿Iⓘ¯fcbßÓ@°7#.ð½óÕSgÍ%y$¥’`ŠzžŸ©2¥³SôrU–O0ØÉà-¬Úè#ª³½ß.ìÔK¼¿Õ×HŽ©PÏ.•Õ3%ô’Ydæ$ΰ²H¹„<ßB›‡ÒÉTr+ï~⢘åÎ<{­:m ¼v÷Ksˆ*¹eP¯RuMó×ý3ø‹õ×i÷$!wôÑ„ŽqÏüé¼ìMî¤Öš Ç!å’§Iù8¼¥g˜UMEEˆÙß.pÅ÷¿ZòÿÜì ÜÙµÔ·ÆLJVÛ9†³CæË;º ±”Åt¥LØÑ釙írØ|ó–ó%¼ôSþNú”ó÷^çºsÝ>îÌ´²É¢¸WfçŒ[…‹! ­ÄÐL ie)ÔÃbKmy ð {à£ô…£Ïudœ’;æ |¤åøËAV|1°róÉ- þƒC ¦S9ÉE¸o¦Æ\T¶âGîe÷ƒ‡¦^b?ß»~B§i ÒÌ¡ øSS}¬ijí¤ýª3,Áã0U­Ö1ºjDëtœÙâ‚HX‘rvB+']8à\¨BÛà•ÜÍR…SJfÌ@³œäø?¬Ey#_¡bœ—R ]Ëan=Þq Þ3'h¤ÂšÖLµ$1žî¥3ÞÀ(µ‘~Àúa^Âû3f‡£dd’驽ê.t”gPªà숃ù3·ÈOûå~FÅ௓(ÓÅîeKç"Ûº&¬Áï’R¿ÆBp>Ë.J)­ Þâ,0šbr‰ó±1 &°Çc_(‚G%Ajà ܣòˆ[‹Í­e*EáDÙ¥3|†ÙpYžJ/}6ä3ð–ËBcØ%ãT9*Dݼ_†C0–¡ÁöJ†‰V[<ÍIÀ90L–ÒA‰$7þÂE°•c >râ-Ð|JŽJˆ7¯9ÈCð‹3˜;K:’úó©Rv©@-ù‚ÊÝ2šõt€ŠÑ*k gѸ3_„**§¡½Ö'ɉ_ƒ?Ó]5â D™ÁÎU§)Š“é`¦z¾ÛT_Åš®X6YkIã jjÈ9‡ñ£¼Ã¸˜F:–³–[i…!µ!½Ú윖=z! Áëú¨iO³s¹rêðÕ,€Ý°ûA&؆ qJ9Lñê*ͦê3=0;}â´Ëêwú  øè<Çí Ã]H+d>ø8] /GÙ% £/è·—q I⬓bÎadM6¹­ õÀ®ªbzÈǃ©ìÄ·pÑY‰k¡–´âP¨¯™lP¿Ó1,çúŸ·wú¯ºÒ[~'›“¿8ù ™ ÀÜÁM§3%¡l<ݵPç ®@%!cxj¹h¹vp öI¬‚TH­µfÃ5ã⇴€þ¥NîÚxË|改 ÄÃK‰¥ŸX×ä•ZtLæÒyü»Ï6Y£w@sÀI ŸRkÕ—àcá÷<§Ý™\åé*§u2:m}—¹µõ”Vâ˜,2Þ;ƵWuÿ/ý¶äß5§í–zsÄóð´¡5CVèhiëOÆ;ø¶iy ‹ºŽÍTE5ÃU§BgW r2RA5’ÎQš á"¸@*M—á¬Æb4PÕ#[’,æ®°8^‰òγ/JçøzNûjÈt÷åà³!ÏÝÞàzþNN_l¡üžæaó“®HÑÙŠq_VÍrÙÃL¾ÄõLpy×ÅWM<í;“'®Òß_ö¸ê«©P=½;ÅÓT¥“¤KºŠ+jðï?•~·ýy.¶câ‘Øk¡®Rá=Ô{åu'õ‰Yh[qí¥v ÉŽg]ƒBç{^zyT0þ¶PNí×Ui½éç*aݤ‹:¯Š j¦ë»÷¥¦eVrÜ!ƒp*þŽæ>’œ<ÕÉ*¹µoŒNš+"sªÍP,|eªAÑü娧º^_Ü“?o!S[¬’ÁµÜ'¸7E`Ís½ke =ÐaλŠ÷¯½×WÂe 6Q`+qžÐ6 ˜ÇÁÕƒ…–óäwK•`ê ÿ ·îª7v?'3/¶g9«ýùÀQÿb¾I׬«)^‡^MV=(¥{ç¶«(”•ÙÙNwg™?§XüÂÿÞÒt´ =V?}7¼Y¼±Ã~Uôg¢Ñ”ŽB`¬d ‰usg(äd椔ҬÁî¾\—‚è_3XLº`>¤ÖkòrÞ¹ñ»ªð}ÐÓn™ëƇéÍ`N…1°Êü¡JtÄT3‹ð&„Ó\ÕSwƒÍ{`ÖÇl<\òHL7œæàÊ”?Áv÷SˆÂY­F`ø"F¶KC3ÒîïäçFºº¯´A Ü‘¦g‘_0*ë­¸ oX=Á ³x¶šˆÆŒÔa:ŒÚÚ9Sˬàóô•†ãCh/;à±ÔâQ—Â_•PVºŽ‘x êJsHÆçe(_T÷±¶ÇÓX…³Ëq¨ÎLRSÃio®†£†Šk=¢””váTh/äà°D.Xãå…iNù¸(ô‚úßK¬x!Ñ™Ëp—Óžãf'E%œ§c3h¤ÒJ?£›A4$•…XÎuj ^8©Ô!j¬ÐI4W±¥1Æ,”YvËVv«´4Ú4–'”ÍÉ!%ì <æÀ?ê«Ê Uå× ;|SºÒ5ú('¹†ÀI#$+”ÆÞ”ÕìÔÅMÕ²Ê=þ¢¶ƒŸ’ËpIΓL8FaèKÏá,ö”,’Œ—¨=xVç¦ÙØÀZëÄ"âÒI&éžd¨*{!‚Çñ>8 ¹±îÇ_ܺÒ7STVP¢Y#Kõg˜ ƒ+^Í¥‘˜ òs( ×%öC+ýà ¢mªËÍù$Áé&‹%=Ÿ¶NëÉøGÊÐ'é¿áÅî"ça¦”7å,ö{u;õ]¹0žáš˜R&sß¶Ó˜/z¡a:kú½ÙÎJá k„þ,;ñ;6Á€Œ67e¿¼Çÿ( ŒÊ„*w¤–¼%`o”&J@uL+CÌZh¥Æ«v´TÎaéo¯7K¤žüÅá4QÝukë‹ë›S@ò²›H z‹ùx–üÃÍ&Ž—Ç˜êÉ ˆ„‹ò‹?Áú,·©,ôâ=pãÄ`v(('d¨t‡§9‹%;] ¸MòÀJ!©v¦aÔ€R˜´Òjqq¹£ëE¦ºYã®áèÄ›ÆÞ=Þö:=$µU@/Áâþ6®‡: 5–ÊØûÉ| @ÏŶ°T:Ë@ëüËC$%¼Å ’ŸêÚF/­dªItNúCp>dÃN8šD·Ñ•S óªSÚñB×QôRÚE 0§öOò·H¨áûh\Ñ‚&­±æ¹Kyú…%O¹5ÅõT;±¼à®›˜:ºû·xû¦o•§ÜǬ<ÖD&\®ð%mbl Wâïà±~pGé~XÙ-·å¥Ú$¥÷“Sꑲx¨þE³ì_¦ádÐV'3Ÿ·/>PÐÇî8ÏGlhšK)5A:8N—d0œNë·8EVè€Ôâx¬¥§£&í:ƒm¥ª„{ #gª®ÿYÿ©6ÞÆ;kÕtWµZZq¾¾aqâFÇ~Œû¬šš<,‰•ô²J¯›óDep›­b*aßT”{þé¦3†õâsâgf§«ŽUÔU øeØa¯- ΀WøCd4¤QÔHÿç”P¨ ›¡Æp?ÉËí¨)yøkŸÒò^¦ÃM9)/a4ÂWa±§ÛXRM€4F^@cìˆÊ ƒi–íðY ;WÅOÅíD܆1\ÛDáf©A‹Ô.•h÷ãf2oâù¢A(…d’žfÒMaÉMÙ®O³_ÈP]šÁj-±9hȧ B*¤‚ ;ŠÖ3uš ÎUçi(ìÃX{¬†óþúüNêû~C*øËÑT@%bôªVfº¦^Õáß\Äš‚!xÃiœq|x Êc‹|  ×w9î°Ìaµƒ 9…O ©îêˆ[ì-x –Q?XI÷¬v¦A*­>"ëçêu 0þÅHÞFS0¹z‰°«“LzJ}b½_åp­ óø›:I3^&™d·€Uj„êáz;Œ6c¨Þ‡HýUѵü¡òv濼ÈTÖêtÙ-® Ö«d§“eKÙ0¨».Dyù€·Ht_ZÂ¥ýëíRþIß¾aöè¸UdAdÀzÑ¥ƒÿAÆ\ªáu=4Gàn4Ëã.o7ÄH™XÕï4sù8»á+1Ô%uÚ^IUi‡i,ù¨„p”|””ãy¨º‰ùMS¨hÙŽ#¬HãU+ݯHô©ÛênÆ4XIfÛã÷ºFà*jÕTéÔÍ­“ÖTwÜÔ†jóˆÀpsßî˜PÕwüU1|ÏõÆìû0”óÑb·¥V[ï¬þê¬êã-¡«&ÉÞýKׄBôX2úïÙ§°GÉH‰† n7½ÃC.¯5]ôæôùù$O4ô‡b9(hbKßZÈ )ÕQå§ù2Uu¡;º±§—õÛ³Ù·× R1q¶Îßê!™]~Ïu§# ±úØCè›eÒÁk½—¥¶µÑPêõÔ¼Çq>$…LÒDšÃ@é%nH»`º{kŠY%wc"ùœ]È”3†êP0t8p^2Á-SDu’Üp‹›Àyª‚#„¤†ì‚cXFÀ<(ŽœHž‚I(˜–c½—"T)ÚG/eý Í¥ ¤…|tZ± îÙýø·ŒsQT•š¢°dHi£ði«`u³‘<œ+‚ÒK2iN1å Ga8\Á¬à§IR\˜Æn†-ð‡³«aik€Uk{’É5é,9$™ôUä´rÄËâòî‘ÎÍÄ0Aª`Z|C“ôg–¼“§Öê)ì «L5µ„þ` Ó)Ì>=H—w"L“Š=Æeþu—’¼_µ4ס%Û*7d9m…ËòAeR‡¡´œ’Þþ=…ÚêªÆ„ãn`’»b.úL;!9b&ÃP\Ç—ålWÔÌ5_ú”"ª3/–j* +«Hg Õ§Ÿ°TËWß©Æ.Œ‘pŽšB6H¯QANÙ+QØ»:á#̧ŽIrOŠœÁNaâ¯ÇÏóŸ|2öU§‡íwË<Áznö´0WäŠ]_o [8 ·¯¢ýÒCJãUìÏ9 55¤ÅÒ?èX©%_ô>)¡œAOq±ÇíÏ*”›f1ÿ'ëè£B¼ 90¿ÄðaÈ ÷ÉK$;σ9ÅÀ áT ã{,ƒYà‘t4ajv³V‹‡ÃÕîÉ^¨‡]èâ\¤e ½’C¸K*Ëf* ³d ÆÂÿôPZhÇ IDAT§­J WÌ=ìÎã¬lîÕÖk¸otÀë´¢4ŠÎaü+µ1'Ä žH ±–ʃa/õÂjW#¸¶.bæ…³Ã:¬[Ñf»©ë%ÊÜmìóNG Tž;ösøãj¢³«µXö›ûNRîi¾Ñüeq úe„J¼\U]h4çë’ÙqAjèiÝ/¶¢ÓMv ×ýUOボרŒp®àF¨'¨2EÒ3HŠê¦¬üCi-Ô÷·âžØNNóN9¥¯àYXAUà ó’Ê©“øÙ‰‚œ2H’›ÁüË$ãÃ[XÖ(Œƒõ¡#õ0é =‘%¦§Ãÿ)„ ”òp©å!œkiêFóLvIiæé**O€y´rwSDÚX½¤“ªÕð FSt£‹Ò‡Hk'FÐ~)Œåàœ¬ä1¦#~ÁK¸šîB jÍãÑ¡d´£q—SØ©*6ذ٠Ö1:˜gAˆ„ÛïqÆjœ¢q½³Élr†)Çùêô‡GX¿ɚâZÒKÌ){in7÷0X6»ð„}ÃJã[lW–’œsàlùx« AG~h*q5]^Óµü®ãž”î¾®j‚iPqÙeíý¦ VÁPŠ;'½¯ #L‡ajªUÃUKeVÃÍ:g}à³S›À9~ éá¾Y'pº½FöÂgݺ`Ox–,øHئàmÒ8!U…A±—ä¶íèl¾g1oè#D ûƒoCâ;9aVšàà]îžØ¤aaORõ,7‡ã’c*ˆà¡f/µýú¯•A¹ƒ®©Ö®<Æ»x±Q }à­/OB{ï53«À =ÒÕY¦Êl|!)œiæ˜r›ÇÐŒ¶@¬Ä¿˜_âá¬U”<Úc­·Læ-&ÄI®N©Ò“©Úæ ¢¥´ÎyìÔTU4—±£bº{¹9ÔàZP 6¸¹òªÔ˜œ²èCR•;H+\ˆ_¬tð‡¿ÉPP2*¹fyÈóóä Z¯ÿµ†¹N¹§'rÂó!è—U×ÕÞÇ×üãä ÷±Š9?í/<G[’;H}3‘‹0:?O‰>óÚžx€/eiª+‘—{¶Z›­z4Ì…<îü•âô5ûƒy˜Öÿ1øçïàd—rÜs¼MHÿw˜ó¿/#Ò„Œ¾9Q˜3xÐþ¸ïðxLP©¹žÙ.ë)TrbIÉ&#¥”Ô§>k¦ö5ßúãïh¦8sÌpK=£ýXâœ_‚ÑxTM¤¯ÜF™ïz9¾€†êVã#Tã ™$Àn n,˹+>w°°u…úØø£é¢ZñDhŒÙé¹ü¥&ü›HèÕ¹«J ç –Bˆœ 8›ïñ8l\˜ ÷$¾át¸¬žél¸Ð)à p?ÌÁ{ µŒ6wù3LâpE¾Ë{zc¤·4“+¤T½K¸~çs°JTÜWBW‚•Þ“[ý«ëHi ñ¬‘‘ÐÖæºN©D/M…›. óé€L‘EX §É{ë¡UHN8]ív}f†Wà ˜ "a–ålÌ* ‚!ª/€Z uaš}W ˜ Îqohb oc雓Òôâ>¦4o¡üôÖ}:xPÒ¼OR@¸é‹ÉpÆkèXË¡Á=´Lg‚ºîKð•7Ã5Œ ô–5œG–©Û,¯¸/'­FI¬¡I>º¸w„¤‹0È=—/»†QVQwz¬æ{GE·p¹Ÿ¹×¦ Íõ… ó|?â2ü¯u@Jr5áê\Æá+}ƒ.Ã÷Ìn0Éâ6ýÊàMöw‚ýŒJ]«š¬•vNµ€šø¯ªßT‰cÕõ ºÁßä7ÄcGØ¿¥ æü2PK÷dÙëƒ*Ñ ô`š-]x&ä^°¦RMÝA SóÝ]a%äp-‡Á0 q¨ ájnPi¦F‚É2êÈF)Çdßâ¦ð-|„>8yh$ŒÃãØ§A=k·¼2¿Ô>úµà „;ßà· 7;¦«V"̼¹p}¢,´™w`,Ï™ì!°€‹+7%ªvX¨”0ªÑXãHœÁ=$³àÈ…³á-8r‚ð…Ù,apÆÌħ¸Cmr.H%Ù¤ú€÷R¼‰ñÐ &ÈI„Õjóõ¥öõYg„zìçQ0€òèj®^T Sc1HƒU tSùÓþà5XNCd“‡r˜êI¬ÁR\_}‚ùÎuÊI7¤Ž}W(‡ökËòÇ3̹ït ÜŠî½>ö³Øl69¨º RÛ ´¼Å=XFÒ¨ ËÅ‹å  ¼…_TN G’ Ò]Ö@ )Éå,•RzI | •DCJX!Y¥…´ƒ÷X Vã893°쇣ôrg쥣¥ö3{8Œ*K1I©\prÂr¨‹cè3|ÁÌ.sà|âAxLÜè…ä4f‡62“*Q4Î:,¯õ |°4':+ "ô6ƒá21ñò]Š/=Ä×dI'N‡7a%×À®äÑmõzi K¡·ÔÄ•R™—Ê*&†Ò«MlS³žÑg:Œ%5,× ¥Ì‘5Òƒà;䯩˜†cEÙ§ŽÑSÓKâiè%/á:$í°/^‚åNjX)Ì<¬o᪬“1źj¹U‡ÜÊÍkù<_€E8CFC0„ÃD©`:´„·…´ëÃH®G`¤£ïp–›îƒý’VÊ:ù¹Ï¯#€ýƒéC@C.ã2iöâ“ê9m‚ÃÐÂCn¥:t•÷ ,‡t&ë‚Ëéa¼jªçÈm™ ÷ù*õæ•R]çUa¡4¢ pãT[Ü'e.(½¬¦¯X/A8ÞÆúäÁbA×T-½Ù=CˆW“ñ–šæ¤çªøwªTpk¨>r êÂøO8%ÞÀKòòà1ðÂ{œf'à˜co“=ÍMn$?t ´ðÒÇUˆõXÏEq„z¢®ëö//ù¡JÁÒ7ë;”Ï7Ú×2xðøà¤’ÞuÕrÇQy.eËzš¿鼞§Ái‚OY•¬ z5õ€eT]ÕVñPQ¯Äì˜^8Éte““ßÈd<)8Ü5L}îmÏ”†N#>k&s‚l6Õ¤¢””ØŒnaš“2JrHÌ¥øsÉfœ!LuwÊ]%I5=%¨Mð©À§ˆÉàd”(˜ šëê:>‰{É'ëLIA·$»žèúŸÊ‹{ð)®`2O1Ö™oª@n§¿L·ùþóMó¾eâ£2ÊpÍ úD ¡œ Üõ–‹YlïsΫÃÎd§‚.ÎE9'f¢‹´ÎŸ×µOY4NÓëÔè#¹L‹@-o¡øg{àºìõ7MXe;ªÉÊš9Šÿg„϶ÙgÌ:gâ(ßjSßwÀôv}vEèVÃÐð£sBT\¹Ø0ÿf劳ÕTŠ Õ÷h›÷• ²wÀh)‡0X Mcé» —™,·9¿3œVëÇ®—ØŒª¨nê®Ä.¼ŒÏáO.ÀÔré‚Wñ*¸ñƆÕTêC5O]†ÉjæÅ±ðWÓ ú—ËÈ3øl†™$²É<áR¿ãYZ"/¤“ â‡$X?`9 ­1¦ÅÚ¸á6س0Fð$É ×i/äâP¨Ãmìa<*Ð,ðÀt'+ºõL³ÕôÀK\ÖåU)TKÌ‚«Õ«”z¯Ê 9F¨ÄÓDù$Lè„¿Mi ûÌtØ;p‡Xꈭa²*ÌKá7ÍxÎõ½p ga'üÊC1ê¥ ~‚4ôE}¢A8AgÒOôdë°5¦`)5óá|÷Õ\¿õ$5œ 0QóHHÏ+%?>ÃÊ”ƒ¾HHM° ¸ä5Ç‹G›1¬‚ΔÛÊ¢^¹6áѰF!bùüÇíZþíqÿ‹õÄ®„½’?ÁV5ÀŠ¡Sj3ކ½—bF|‡w° †ú RIšáh^,"ý©0 ǵØž?ß•n7àc®.Ué椎:BHwˆÃ"0›Ú@C\¯Ÿ@!˜d=•w 1ôÃúx”F ¨·R·Êt^'F†á=lK5xƒ4†¦ ua‡M°ŽÃ@xbгÀ=5âkàLrYöÛs¥?””àáx3p†ÞS1ÕV²6 jÖ¶?H¼¬¢hÌÓ¡‚Ò “ÃH%} 5Å” Ÿðeì/¥iô'{Á3lAcñÜÄP‡ÀdÉŽ‰Ô׫Aj®¤Á9tõ!µc™ ²E……Ë$#f„lNZ¹­QN{޶¸umˆ“ZØD^s$_†ëÒ 4ÂÓbËF)ÿa'˜ØÆà»9騫j&ìàµ:£ÊS`>f”:Çù¤,„çËé$+ ƒý^ÈGˆÎ0Mf¬¯"ì mtˆ²K.Ð/Û%™ìåY’IG¸•%‡ëdÜ6›ü˜ Šûo©ü0›c1xeF©6ôžÿçì‘ÞúÊcl {ćB±”Æ 4Žjâk|¢šAt ^ ÙàƒNK™dœ,å<ü@Þ C§Ô(9! ÃÉ„¯àßźx•Óztä<‚íþ hÓ @_y]ígPG~8Õஓ*X{ªÛê˜k«5]ærsþïá.ÔÕ*Cm´1AuÅCÒâ±<¬óä+²×u:t¯³2¼V’ Á;=Uõl~EŸÕèåûfŽCf̯<‘º¶«‰•UíÒ91Dß%[ŽÓ¨6¼¦åÚ \œsNAœ$7ͤ'/–/Î|“Íü'Ñ„_äÿ‹´‡sxrB01¬’ý°‘}ܽ&=„œ²l½ Ó×\*GK]GÔz×hë‘ýLÆÐhß»™éˆÝ!µ¬ÖKT(f¡-òsáQþì|Æ~Î Œ36?†ü‚Kâ~Ùl®JI»”‰ä)·´¾PIÏ÷¬õº¥µ!¸ô•}Hì—>î‘7*¡a|@z™Ëê¸ 7UÅ¢ŒV~×uqoð4q5ð´wG@»§3Ï·/¡£7sÜ£ø¶›fŒIŠ¿µ™)aHó?环«läLÞ$öCä?„uÜJ=v½ŒHŸ„ƒ/$ó%Ÿ–"Æ3ÍT )+Qq™¬"´n/rÒ@‚¬Ð‹¥"ŸwØŸÂ×—í„ä~>¿ÓÝ)•Ð*|rHêðb!ÿÝ IgÿqÈô´~˜6f wõd‰ßê-ktnùÙöB&]G½„[˜šÓ-uƒß¹Ö©oîÔË®ô-x„;Vf¥šž"Än¡—‡õ°~ú‹š1jµ±ïÈU*‡QÎ4i]–ÍTE_ÒU¬E˜ êbg™/×%Ñä¢QVS,)i9 wì˜?ÜËŸ)Ð@*A*}ɼ3Ϥ¸¡z§_ùò뿺\“³ÎÕR^Ë+XÕAv®˜§ÒÚù¦mµ‘¶àt¬#T3ÕY2CþaR@m¾ ‡q¦×§°%N£g2\¥×7a7Ô‚œ0QŽCy˜Œ·CM3üËÈBÁÇà[DÑü¾áGÇá(ÖÁäx»cIÜe Ô—7p'9Yå™Äª+xC6™ ü:¨šxnÉi©áwø¬ã_$›ÓTºÉÙh2ò{3Û©iØ”Æ9tn]@VËi/Ëd•”³ 8KLwîñ'.¤ÓÔÐ0xƒ…øŒj 6ªÿéÙtäÇ.ž>ï¿g>ét†²TZzýoÕG_ò}þdW3§8ô¡SR_‘õ–oâ :K ¼ÄÖ.%0¿¬—±°[ÂÜW ÖÂH…¢4 ÓšÂòŠƒ´ŸÊaMh(/¡&ÖÆt°FºÃx\Ä+y",¢>¸çÂVØa–CHkx|U ­Ü ÓT·›ýìK°AòÂõˆ~àœ$ñÒЏ’¡´Ns[F(óÃî ¡øÕÕ;ëaœ_šø^;ÿ˜Ÿt~£X×8ƒKý­Ôr5ÖuUªrE=GµšémÎ,(ƒÑ¼ÌDàïº6¾‘}ê:w\?ø?8†‘ê5d”ÁÎ ×IÐÖ;§‰ü¦2« ؈®Ë]8lÀ(è ¡þÇcá_(L)%Ü•±j¥ØÍ\wjQK/‰êì„úÆ+ $÷ròò_˜R ÏÐïÌ™(ûumZ‡-u4Í’ÜNIyïí¹RѪ©þ„bv¸‰âƒæ ïÇçh™B¼êÔLu6Éæ•lTuQSeYݰ.ß’¼â†VJVóØ¡îÉtöÐs'\ Óulo¥‚Ò¹-ÿƒÔ˜¯[#Ü󱃩K0AîàïP“§pÝ£h)} œ×ÈTX"ÉX‰üXÑ ‘òÐ’²cõSâ!7qæ _–PÝŠê0Ž*Á°W•P5±Êâ=ù¨:`,ÍÓ0 ½ORöšá,äÆ%’  =4€H€”PnðtiãüÄuXÀÞ)×qJrFé ÚN Ïð=~ íRK`.Hƒà$4àMØŽQ'l‚©å,–­\QH/0NFÙ‚A÷|ôÉqsŸf8á<Û=ż1Ž™‡71žà!héìa²‰Ÿ£;$7U)–æd´!<4º¾Î&9èëœg_4ë¬îv§‡NÿÄÒ&ôÆ]ÒÊy/Õ ¦ùK˜A4 ³bfÓÁÉl…Œø•ÝÔÛQ*†Ùà5Gªß)ü=X/°ÜŸ6¡ƒÓ™¯Ã¤Š«`H;9 aXLf[C¨žì›Á2j®ç€çžs(pV‚¦•yïü&SÍ4¾l×4³9ÄI)‰\Ö{ت¡æ$VÕë¬SÒΊ[ðo>$IðÉr»ûºR¦¸9žòM; £L S;˜"Ø11eÒ\ßF|<%4cøTW»+ S/ü}a¤ýÐYŒ·Íf󙮪MTÐÐ0ŸÃnYÍ‘ðÂ^ï¼’è µ“®…u¯œz}ªé³e¡ˆê)Gümí >Žo{³™Ó;¡PCNØ­8Â|1Ónšq²2q´ÿŽü§‚j95¤!ê— Õì­ìdJÉ&y:VqïW¯¼=ÿ…ƒö-ÿ¾@áä Ð×Ô¦rošÌÎ2熹«»ˆÁ•®ÓÞOÞvÖPÝ?¤ZŠï!-“Vh«7ÌJ61í‚k¹¶4r ˜ïžçx”ëx6òNn ;3 ÃYÎ-ä>¯kRcë†ÛÖ;œxy gþ³nZ^{©SÐiG¾qVÒ:LëTó¼ÄÌ€{0·Q3}[U2í%ƒz[ *ÐWƒN'1\Q¦È{Ú*ƒ9ŠÎÂP™)˹–Y#ïq)>„3°2pé,°¶=Ú‰…yæ Årm«šzƒeL8÷Ä؆–ëÚÍ‚¶9 ™í¶8s9L ù C°+$É¿˜(£°^‚1˜ †@Uø]¡«Ü烰KîpÂá 4†8èÀƒe>äÀÒÇ4ƒìøÂ9$3²B< ªÑÿ(;m¥8±Ô0l .µÂd)Î0ŒØÍ¡v¦xúãG솭e:ç ‚?uuNp"”°ûKY•±)VÁŸrCöÚ…è|(¡2}Ám¨1RÅ•‰.`jY±úç2@p!·Å‰ÒØLc3B3>‚9\_!X _¨:¸ÆÓ'(ƒ71»ø¤T“Zƒ^@ ž¤=†\z…5ÚrcE÷Ugâ7}Eçs²økùÇsÙ;x8ÿáiíl§ŒÖ%•sè-r›ñ0U·ÉmÌŒÜã#â–¢¼ßÔ‘h©N©ò’ƒ÷q!êÙp-÷7£e •ÇFÐ! ÌSÅ –òš ²™öË=ÌÍÂH,#° 5áOÒË„Ú3ñ&­Ç"ؘÊKӟϘ‰æ«Ì¡ƒ°E„êB¢´±÷™³Ü²ãf:éü%¥à‰®CFå3Ã¥Þ…¼PÞ˜78/e—¶´"\Ù—sÑ? ³I4¹å>–^ÔHï!Ú%[à¹]-èõ8SR‚þ‡Zé¾äµÕ—`‡“LÒX“°í1‘\ËTÐÅÔ«§ã–êÎD*q7-F#©¹—†ÊÎù`nÊ!°Öº"?$7Α Qä×êVÀò0‚>AJçÆCJµPÇS~LÇ•x‡I†ÿÁIœOYñ0f°ïòc[{T¬ãŽ\YVS¬<§#2Çh /Ÿ± &ŸTÁåä—;¯t¼X|X=ÒŸgš¶ÎÒ߯Z`!‰t¶8•15~—8s]–¢%¹LJ ¡3r¾bi^È—1–1…!B*Bi…§a8…+˜ ³`a5_CGº pt¦0½>ÚËÉ­ã8òÛ%Í]¿ðˆ7{$N¿ÔDñê¦sB&p.ìˆ_ %'–6¦¸)ûT3H„¶0¶Ã'½‘†CWÓƒÿ3Âj'{K¶@NsŸ+r"G›Ù£SÉXÈÍùµÝB ××é¹dÇYȵͨ+¥íþÒ®bC|,Ýñä7õ¥,Ï žòöÜ2·a6¹éOõ§¾C¨™ÀGñøóžÁÛI7¾wþECƒýÒ®ô•ë£ ©j°ÎBg‚wÜeå„©’ÊnoºÁ,è uÑGyÍ0¼ÍÓÌh¹$¿ój‰àB )L3gV ˆ+µÎãZ㊅ ¼Î¤€]*†WË1ìít4¸sÒâû`µäfák%+²¶óp^¨²àõmô4qY[åð~ÈÝÀg3ÁMRMÊëŸÝ-ùfðL°ÿåô2ßu$Ðß=óU&+™æºÄ¼Ï\~Ë:Jyš¹Ç„ì‚û!;ݶ=ÌÞŒNŒŒöógáTöËÀa;›ý¯´ïy¼¥è䲃NÕÀÙäP€®`-ÏkÕ|f­ùÅ¿Nüš v„‹­ƒWQfr芈ê©êeÉ’ùX–Ìa­Cüú…uK"íÙî4ðVW( %é%¤„,ÒΠ–-0{šø» pFciµÊãóÜòŠ7ɳJ¢É* ¹¦ê…´µþi77ý¤ ÿ%M8m„,¸SƈCõTìP·äˆsÂiÇø²ÜÆ¥`á}ô©Ö6¸§¢Üyi95rý’Ïp€;â:f:p3Y–ŠÍ[hL7—Ì$) Nr-¡ÐH¯Å+Ø6ÂYsEsI9' ;/…ŸLN@8vÆÃ¸ƒ‚6ŠOŽpNS5ø«˜.Vôöç™ä’ªXÚàªíy¢oz*„=S›U¼Îi¤!þÄ2ÁDâ 8ç¬Åã¸\£ –ÒüöI ìµhæÁ]ä•)T‚JÐ]K/Ài¬Nké²JP/ûˆ>áÚKQ¸@íÅt”,rSeܤ#R$€zpUÚc"hº*¬‹¨_8Åi‹ ¤;·Á3¸SÐUh ‘: ¬…¶ú?¨ Ya†Ž±NáöÌ…3” ÿžûu–ø ƒ3aD£”ýã&ÿL‘äÔñ ¶‚ÅpÆM\~X;e;Láj=’Kp\ÆÁXé¡#ÁQÊÃXj 7 +þÄÌXB*¨\Tÿ€{ô÷Iui Û$ÖìÀd©K™('öWQ\³âsºñdj@A˜=á>Gb( Ù`<Án˜[&P:OÃp,2Äà Þm’°!–ô0ŽBGŽ.êã<â2«a;ˆÇ¹ÐŒ_ MÝ8 Åw|Ú|“¾¦UÁ.N„\‡ŸÐ?8NµR¬ª«Ùì$âncrã^ªA—¬¾ÜzÓ ø Ï茤!V4î¦c$Ð N™ –E+ Ò’6R«À$Ýîa>ˆ•dOp¯ªJë)µSÊô¦*»¨Ñô†QÅ.°ÛA<‚âR@ï•®v Â6Yƒ×垜ǻÐÃì’‚ ¨1w—F0ÇÁˆÀ¿Õ|,i¶s4 ¹‰ÙaœL6¢Ùr×S- Ý©;žh<-ÌL 1Gü.k+7´£ôGø [q3)‹` &àD§Åo´R“Eía8îÂʸ ¢1„ÉvÜ%ß©­*GCà .SóÌ3{+>¶S˜BrŒþ³ªA?A—x?•0©(µ¡6e¤UØÞeã¼6ªC-÷9 ÙÁÂãòü°FÂb©†¡3κsÊj‰‚‘T‰ÿ…èë\£ø5Àø £ÍB>-ïø!´‡»h ÷áSN/iÌ;­$OѰ§ê¾{¬;Î’ã’Ù´‚PFÒ=aÅX9ðˆ,1ü‚Õ¹´ççªÞënþs·ô³¶€¯be§ ?ÇÆñµâ~~ ¬ 2/œlN_~§àx“,‰r=9%´•ß!?ÂUÐfÑŸ®Ò‰žè¼æ;ü’:¦“¼0MÍ é®zP åp¹(’úC‚!ÜH@îÚ_’š&Ûñ­ü œb®ÁéÒX¤£ØÂ80Nùdêºû%?³g­\ÃúœÚ ñM¾$Ë\Íü)àèðšI&ÙÅ—¼Î.þ ó?ù;"y„¯yâà¤"q«ãü±iã%Vö'«ŒÉ#œ§Î§2¸ù™^L÷ôßT縓Þo9«Í0×H-º€»‡û¥5×¼ ¯ÞdûøŠs”+Bcç˜w™} ¬µöèÖd.cbœÁ)f—â VÐûÓZ£ÜëõT9³ç:+öÅåJ(Ê‹¤ PBš-¼ìÝ–&:í•9|Lê§:Z¾˜ðˆÏá=¨OX%ÏYOÐìõeM|Àýì˜ä|’Vê:î¼Vîq “NÒHKÈ@'(Y=ñ¬T³q6M¢?à¡]F=‚Þöbº¦‡àB,¢.ª=ê.Þ‡IN¾Àßè@c.gn›ÆR—wú*²& ŠKñ«Ô·^I+’ûgñIÚ:ŠþVƒStÕpŸ u°Ÿ>éšHûá"¤w’Ì%.š|î,%Ìa¹ï. ®V7舘+Q\kà¢îZáÝÁýÂI€/zžÈ׃q³|—¾\}W)©¯‰L.š\œçƒ+øÉ Ç#% ˜l4D}qý†PQG¡7TM©oþ‡‰”žN[»¡.L¤K1°ROQç  ~Ƴp Bñ•ž†bfj鱚îYa™j[¡ ¶‡(Ê 1;ü®9Ï$¯ô²sã¼$%+ÌÂñØH¾B~ 9° Õ{ð‚ÿÃtòSJÁF¹/qñEî.‘ÁfòYÚ8íu<á3xZÒš]ÎF3>8È·)yeà…ƒ_xœÓ~`où×úÃÕÇ3Zw¯qzËçd°)ïÏKÀÍó9µü±ÒPv{×À¿¼Ç“Cd¹ê‰ßñ¼T€l¸–þâr»bI*ˆ.µA×Ñoè >çjA?è S©ÕwªIÑ*–úsH¯bð¸þäºF7Ô-½žÃQôÊqž Õ!?µU~ØÀ™åç–ž2M"$÷¡¦Äͨð&tÄNø„R’à¸ma¶éÃÕè7k5OÌ;4W‘tµïw|o;UÒ¼ iA˾åþñ#ö0ÜÁTüMz`$LJ^òãwh%dŒ†“ðVe‚¿à½zfˆ§ÃKÕîJJ(x…ñ;ÙÜ€¾›S"ÒP…C}ó„CyER3*#¡+<àìÒAN¨­øŽßÂHˆ ÆgàÇA’èõp:ºöáXGçp„VâÆ((°°$âcü‘ÀŘT[KQˆW¤O’ëÎIµ•Ò`mÙÂùÀÆ+8‰–àkÎkªà.Ô´üPRãår[Åò´´fá uYúòZI Kð/Iô€4µ¢«àÁñ˜×ÜR[T4Ô…—a Ž7»iµ£ªì“*¨`†ð9Dƒ¡:ŒåP JÂÐHÍÆ æ¾Â}¨£Z©´«œÀtØI²Á+³3`/|"iÌ2Cé*^“vEΩpBp28RûÑ$)Œá ïqÈZv£ÂHXåqµT5ãø°Y ;`mç!ÿa· –×)ØÐ\ý-íÌ3¿« ÓÔ1uAÇ"rTœˆ!ð²ãü Ð\&-$ŒÎH>‰ ø`Só“ŸédÉVðÊ(ÎkõTô3{ÁœÀ5³Î`$Î¥9¥]ÂX­{Á<£?A5¹Êp9ô Ε°ßŒ£íP /¢’+X2â*ý±’ìY˜cx ÀXgd@#!(â…CÒ›Ig< …õh#è=Ý2ª;8ÍþF¹p§S»·Ù×í¹*ƒ*¤"à“Ds{ìHh¾3žêÃt[±_•ó,µ««Êú­}*ôTèLß-îžüP›R»bâZÄßöÿÏÿ0¹»<çš~þaæw³41&äzèýø;í¸Fvq>©Alç’ÓÖKóN>Z§ád´KURßä™sÙx/ÛýUL ÓÞ‘¤† ü?MV|ä>mE…¸½cÝ¡Öæz,]¡w†ïî]?¢¾MŠ~ðcøûÂïÚúǪSÁä5I7í%‰÷ãs~l¨÷ª(»²ˆ³Íüäi¸ß4•0úéº<•à @þ@`C`|RŤ¾‰íâæGýq<ÕéÎ[¢DÙèÄÛ‘ö3C\®G–ѷû'[Ù­«”Uw·o–H<à»ß7©Ld«V;ëç)÷8ôRxït¾ÐT¡O<}¹¼Ä%Lñ,³JPhÈz+Î]Œß;/Ljn$~ç¯6ûìÁÓµæI»q/¤Ã ºjè~ §¤Žô’ù­)J¨>èOúÂéèød„T0µaˆÿ´}܉0!Òˆ¯ðs{¼ÙæOe.Ûå‚Wíjn±'Ú¹µe';øÿ§¸Fy?{çD L7Ïõ·UÒ[‡¢Ù¥üÕÞiꙟt@ê:;¥nèœäÎoÿ@xà9Ý’›ÒN&ªGêo±è¹u]6è÷Uù"I\€Bb*DW7Çb~ýÈ›PÄÊ„åüÃ`Z¼i6ÀŸÁãʧŽCºˆCfSµËiÓU¥MÔR'â8n½pœ~B­ßõ=,¯EmÀuR”‡Øl‡µñ <—Μ‡ëËhŒóyLÇ6ê4íÁèVk%­¬‚·2Þ‹E£ 7´`ÂŒ0’·ãhxKËq5ÜÆ/* ÖóU9^>ͱ3ÔÆ£ÐZvQ, h*ž±ãèô¶çè\ ±;ù;òGl`Î:ù) g˜©ðš÷Ó}ƹJX±tgX`V§·¹i¶8k$3äzt‡ëYR™#õ¼Ã=ð¶*¯jñ@¼en@M¬÷h4ŽV婹ʨNXOC¾y0£{¦».5Ñ­Šð7üŽ6”&°[]s†u E  ^ƒOÖ(û•…ã±+å…py6öƦlh¦êÈŸ(æ5Ã`]£D)…ùh׃G˜ádîB«Q¸v¥DóÔù¬ˆøvøÇ¹_ºM CàËb%„8ýŒË™ Å çÑ7¬Lð>¯¦¾ø7tÇX<†}Ð §ä'<¥yØÄz@£àªd”¼€)°/ò7‰Cj CÀ ã¡åâø•r¨¦”‰§á )ˆÊŒWUqucù¿„Sr.âD('è©)*Ᲊ3AÚG먳õTfá)| ¬«¿¨wÜ›bcŒ†kp’sÒ9úNÉmðÊsZÜæ©:¡÷bEg7—ÚÔ b€cù»™McQY ߤ´Ì“IڙɃaŒd§‰j¾¬4½¤›ŒçÝp§StTI¨îÔg¦h ߘú‹eù™Z,á©|MotÕ…;è¨HîhŠ˜Âª"®Ç†P@J¤+I·P÷íQÎkècä«UCiwPW)¿l†ÙäÀwpÉÿÄË1p‚Àt“M:iHxu±rS‰Apizà‚:M ÉK8›¶Èi&9%+ö€d)Gûh¬0å–Õëp÷à¦"…=˜lJÊ x…?¸o—‹æŒ’Í*™û8ù1?=t†R,ÜãÂ"ÔP®ópn`2ñUÉǤµ’ð?µÝ `CšŽÕ¨°ÄãCöÒr=VÚsuù†±„Ie;)rx?yþï—"Kx:¡G»²KFØâû+aN|‚½.¹Œ¿ äiäÑgBW‡p§u½Ugð)o^ÁKxë_dS+ç,Œ£‰¢$Á 1æ¿eBÿv_0áö¯3q9ü ‰e|3œf´³ ‹éùpÊõË›äþî¶ô<•BUÁ|^×·Ü[³ø†'eŠÉü)å÷[ñic²$¾ HŸ4ë:ã“7»«è&ɇ©œŽt•ƒ¿q±r¨‘º¡2éê§•!PÏ,_|Û|Q¾áNÿ`íàù)Fò¹mO²{œ»ºk€²Õ;ÜLÆßÙnfßÖ‹ÕOUJ_ƒM¸i„k :Åä|ÿ™%j§>‡ÓhÞéaäsB°6¬’òÖâqìËq¥D +ÑA•VswT“¹¼sωÀêf*ßÅ2T¾ à0I¦ùj)~‡X˜ÎÉ'>Ç5h†Ø$yM'þ Ïåo’{|Ð)C‘ô4°Š—ÈAœ¦ã¤¼¥‘òŠ{H_óÙT1Ù9—ÑD3·`Kêbž›wf]ò"ßtû¾ šÑÆ¡{úŒôÄ«ª®Å%˜Êã/¬‹épªú(Ý 46Ç0íS‡`µÉÃw¤êý1#»¤ƒô‚Q* –†?¥Ö7ì€pJÆã´VI5¼Iëè ¦ªhÞcLÂA8RKjJZÈ¥ FK*|Bu!ºÑYL ˆ©à\“æ¦Êf•Nýeq—üÀ²¸B¾ÑèÌ 52t“9p2›9&«é<~Âù`K´ÄHnœÌ…(»~(k¿ì«&Ôºˆ¬2˜Nrò,š_$š'S2-T·¨—ØÐŽ<Ø‹S3N„“XÂ¥‚9¿¬€XÛ@+„ùõèJåÍLYƒ•(#†ªÌ4Ãt æ$"ü&,5a™ª…^ÌLU!×uH—a¡ù,°¢ŽM4„ʨæú9åÆ'¦ €rv~˜ˆSñ?ùK¦Êox pkg6q¶ÈfØäôRGQ™c¦4ç—OÔšÈviÏ ü¿ào¥·x˜Gê—: CUåÃOj©™€7LZy…øu†2léyôHf±Wv@5n%ÕTfù){ô0МCðm´Y&Ln\ j;M3g gÀ1¼^vQø*³¨š>£y[ºTfW^ÇDZ¹à_š;ÁÍ‘<¶ñ|œ.p3vÅ›8Ê`;¨…upeÆCÐV¢å0¼Ãq©)Ž­Ô®“¤”“ ÆJ$]pbƒ$=e€ ú³ØI¹›Qp˼±G3cqÜ€³Í}ços…Æc5¨ªc,V3馀³ÔÛCS”fÂΤÁɋłs±–:ÊcuËŒ!ÜõRX¡Ù=¸›óõàÁ“±å®ý*œÙÎ$ jÈûðeÞùºœåçÖµ jÐ/úïØQ¼HuN~8Íqeyà¬Ów<9Ob§„Ëþ a ÓmýÃ’zbZU[mÓ½Ïý3\Y¬\î«.R[]ùa,47¨¥Iö‡‚]où:Äïí?&Pß,ýô,š"ß`‘û²•‰«þîÿÂK“O= y¦Ÿ‘[¿°îéx÷q=ÀšRÉ~ïÌ NÀìèq¶Ð/åÕYéŒz¢BÒ¸W‡ À/´ñD.ÊÙô}u@U ýàŽôü¦PLƒs°äÄPÜbíÐó]==ÑÞnÞbÞµjLÏáÁ?I;?aUp™/B>×>Ï 1\µ¢|êuè%zàNVÁ„mõòà!»eôUó·‚»iàº!x7§·zY—餷¤«û;NÇ]ä2µ`¨æ¯h/Òõ¾ùÒšI1·NAH¤ŠžfÖNz¹e‚üt¢¥ÌâÞ2⸜mE¹z[c%‡:ªÚ9U>'½¿ƒ?µo›=ÀÎÐ0URpmü,‹Â.$\²ë…$'ƒ}'t/¾QÙuC® Í:襚óäžÂwq1Ô6_’%\4Ö‡ñŸr$d¤¶LÈ£áËàZ •à>ôÀæVêKBÊHn¼ïƒ›1Yõ¤‚ô"°nå¹`a}^¨ŽÐh‘ŠâG•^Ãjç­x³9E`2tQC©µ.!-鸊¤KôR÷‚ôøJÀ°€Û°îHÜ-ä+ “üÓÁ{È#÷°<¶áþ3á © =õ+È#Id°2äàxÞÌ{yî…K8–ÃpFnûƒ·¥¹ y«W¨ÑàrFòAùHýÔaè¯Zã@9A%á‘ùˆ-¤^â6|Æì¤SôƒÏÂ+èÈ‚•Õy¼ p&ÇpÉf~Ç:Ð HÃßHÃX—é%µÅRH*¼*] ê¼nÀû¹…4¦’П¯cf^k®Óy.h1 ÿá44·ù  >o³wq%émÿ+Ûu tpƒÕH¦ðÚÄ L#û°ü¯a û¥0¶A’#XãðšÎÆw°™ªïÜáÕôÚ|âÏ”ËÉéi,Q¯\ÌOðè{XÃi”C†90 ;ÒqÉ$kè!Ͱ ¤ådÝ)`ÆKCúhÒBU^KU(V&áU îÍ–á i`%|†8HCq# §™0I~çòˆÛÌY*Ù±¼ª©ð)|ÃkX ¿Â1ÈDà ”W0=¤„pîIyh—±ƒ”—Ê!¡–Þ!§¤•ÎI³©)ÕãÓð îÃi¨‹-pm€o8 Ús?è‚¥%Yrâßœ›`]óoà1éÇñ)V‚ù°‚ÎDGà{«iIÐeQ%è^´ìÂÎe¢ïé z=¼`¡*HÝ¡©”…šÐ¦C6˜³ÄƒE!Àuhƒ6TIjIvÎŽõ0\Jskù‡ZÃvœéª†Ç©)´¤~úÕåò:`aÙI LUŸù‡³GcÌÉ0ö;Åà ÄJSN+ ðºúšQ IDAT¯Á$B’é7oøÑÔÇw’ÑüfŒ µïº«ÒLé"É&£9*LUuN½PÛå³ó—‡jtU~Á%Ì!‹´_7y˜ˆyóá&3«ì]¼û‰.z¹¨‡Ú[¸ô5u¤9hç ¤‘1èðAsÓ´ÀºðËVðdnð©³^ýkÏuRªÁ®ºŒ·+f¡¾Ng#[Ì)ÈÑœWæÂ]‡qÖ„XŒÆo´>ÁRJ„ÊPÓá,œwä?øéy¤€\ÎßÒSò çæœ7™*fÜ2?ð!í„i4šQQ5vÂGú iñ 605`‹ø)-tÓ¿ =tQË%R¢¡ -§F0MµÎª€]/Š%ùð÷•{f:¯ ë¶««w ÌN ßíêïýnµ:z-öò÷§ò6uW:U64Á}Lrõ²’¬¦”KQwð#Ö´×™£é¿ëDˆezÁO™ ]°4ÖçL°‰‘ìN}¼La°W“·ö³v)e¶xw¹1ì–uHur÷‘†\çÂ6(juIZæð0aï¯j1éâcMZS ÜçÕ +…÷7¯Ç»Ëê²;õÑ ÔOµQÆâ1£]{\›ÜƒC6yFx³èäpižÆ&¸ÌÄðW.øê¿kw´ïÉ_ú ܆aÈRO‚ö3Íø꫃8Ÿ;Óiééñ ÎÆÉ4ŽR~—ߺjM±Â½tYòJÊÛŸ2(m/ïòÁ=9l„•ڽ̳ÔÕÞ«È£gê=þë©TAv?éàêÉáOU5ݪ\7"g9Sxsȱ4…ò>‚çxÓ3av\ g±“þ†Óq3‡R¬lfªƒÁ}VôÈ÷§½ú›³°H®¹ÊºK¨¯¡yß¹F{=)†{öxî†Í]ò-l°•:“ò¹5+é+¯ døY8j¾ÿPÜ¿·H³Rò«gÎq늜 ÂÊ+9hŒ¸¨íâ'Ô]­•Tðb°_0*X‚'4N<—tC·Æ0ѪIå!/U•:Ž¡2ø\ª­êªõ{*—kU%íÊL‡ô)jÆAÜM,§€ €±ºŒÆ‰ÀtêÓMºƒsà´¥ïðR«Arn`˜³I:Ê(õ‡²T”ºM«i%bd±”Å鸷`^I%ky—ÉÅëÌYþ.%-ßq…S€>ë÷X©Š€%ÔIm‡¼¨i±µØêÅUÝ–'Jc¨bæÀª*Ç‘Ô/uDµQ­©ôƒXÍÉÌÕ±¿+"5Gq笌ù¤¸:N6Ý/eÁÌ8[Õ’Ær_ÊÊ~S5 wt:a&È%Ýá&ä7sÍ-·›žR©Ë…àƒ¼†/Öˆ†e8Ž:«ÎR€¦ÓsLP½pÍ…GR•¦˜8è .õU àÕÒÁ Þ /pîÇ/‚c°’ʦ ©ÞÐKV’áî GƒKÌ\§„e’(£ #S¯è‹‡ °)xOS_³”a';ÆK6¢§ÐQÍÁ$%ùç}”RDŸ‡Ž<ÞÓGe¤® ª‰Z‹»d=tÒ}é…MU¢¾¶ª*µ L‚R‰œ„Zê0¦‚©ª…!øP¿‡–Pþo€Äo¹ õ„|üšêÉmJ¿c+ŽA‚>抢'¸WNËbü“‡›&RÊã}<ÆÃá´šHËé½ÎŠEÔ1, ópܤ¼ä¶`àZ W0ƒýÜù®ŽÂiá²0Quƒ^ÐŸÆ  I˜þÓ$EÆg÷õþá+ã½ä~¨>§;˜ºWú“™næÜ”+{Æ&¹¦çN…utêÐfI’ì .Œ_ä¯ËsÙ˜mîV-ŒRqä¢ÚÜŽÉk^Éo ºõHÕw/Ùê’â¿Ð’Þ£aÓÝÛ-·.ª¨zXX­¶“ls™WÈO禫ŽUQ5¤“ô¯žŠÛ¨VH’çºgW*—ë…šáý夅æ¸ÕÓ6dÞá6žá¡¿(½{® Uk“cQ/õN[¿«©ª‹Ú¬&Ãl+\¿²F¯Ì‘>¼›ã`s { ³Ýú×ßåbÿûU"“Z8¥ô§Gtkày8fZÛŠ[‹sùã$)é4ÈŒâlœ‹Ëh»A|BôQj¶ªçâ3™O‹ñ ÞÁ²XWYR‡æÊ ,‡‰æÔ¡Q8‚(+d’+•.´„·£?ÎcÔ ;½ÕÑ™)ß“Kaç+úé–ºï)+ÕÇ&Ò–ÿ´ŠªÒH=öh½CUW½Û)^劗2‚’ÖŠÒOjv¬¿¢$?ƒMPT"á¶ôäÇh\F{ä"ƒ9‡ ìïV„>¬'ª‡3Ñ4å¾j¦¬ÿuâ{_0wQ¤™(3u{©ë´‡˜§¢¥Ì {„*/e­êA ÉSÀƒùoÅXg5\¦”E_Ô¯©­Šµ†©!B¸_,³×s ‚q1ø•nÈd³ÆŒÇ§pQöÐ_tßÈbŽ[f¥YJ \Öœ‘´ ?R^Ê„%q-'@:g>¦–!pÂ;‰æC2Ÿ·Bc© ·”*Ü@…àTÜ“vC/Çmo’+"Áô”‡OÈïøŽø >Rå)JBû }öP«,ÇTCZ™Sa$.Á4˜zC|‡ƒ%šÓNìˆE­l´¶8EŒ2A-ú†àd\&?èoþÛt6-gÁy´J§ñœ€mXm3s›bÒŠöê³TOÑTù×LãZRÿÆÓØ^YUeg¦¦° ¿™çø§,ÆK¶Ç)ef»>R^K¡Û©ƒ(þÛê¦7“#›Í)<"µÌ9ø àŒÀk0BšÁŒ„³RJòˆ‚W*^À!ЛïÂÙ‹kà^ŒŸñ£yg±<Ìe‡côÕI=P0 £ø´yŒù¡ØRJã6è¬=´ ʳ%g¥²„c#¸G3åˆ\æ&pŸNàó/tÁHxŒ·!?ô€$É/ :˜¥øÎÀéÃç¸)Ç'x]¾Áigå¢x\ ÿ°Í}$¿ô¤.ܳà :©"eNÄ|üsÂH䇦/{`;ì„Ë]úS9µŽÚá{'ŸG°wÓOŠÑ3a œÆ¸B&˜™ÒQÝû7÷r WÎm|Î_¸€´„ß`µP]¡ŽsYúH~k]Ç(ç©©ËQp¯Ã vàøe*¦„ñ2¿›>0 Ϙ®˜™²¨ÁÉÒW|juLpî;éá_©)Q¦ ÄIåî–%æVÇÊ`Çñ(Ü%›eµê§ZK&®–s”\“:ÒoA#¹‰uà 4 .Ò‹®Êi¬ÿÁ!P\šJq;gy® ä…먯“‡‚Mëe¾®ÏM%S@~ÓOe&­‚ÔZÚsYµ€‡S’†âZ2Ùt<6š88*`NÁeã܇ŸäŠ$8¯a2/À¢N˜ ×a*R½’w—¸¯³îâúÓZ 9R”ì—Ïþª‡¹L'«’­º…笗|Úp§eÁ¹Ðl"` ¶Ä{¦ŸwÞ©¶ä¬¯ÖÁWHXÞÃ@8AÓè4Ž•¡rBÔ%ü?Að W¶´ªî}Ý=Š­M²±mó‡Û¶mÛ¶íll;Ù$M’ÉÌdÐÝï½[õÏÙŒ­ . T_€¥̃”ßô‘ñ¤¦¤ÅRN9Ï9Îᢡt\7†bba7T&µe}T ¼©CJùB¹>v¶ »ø¬)&ipf¢|Ös_1Oñ”R^­X/“ÕœÀ@™c7ޝ’Ø:x)¸ÝöÚ«­™¾öÖ 2X{)…,u£LF÷ƒ³ÃíáäÔ…°Y¦–Ð9¬véÞx6Iel¡_ÐÀÐWòŠëËK{ÚßÍÛZgõ¾Ô¥Õ1n’äYø<ÙÐ6¢Hh½[½¦’æ™­¹‘º¡;òRkè/Ïx¹ 㚆br¾íe•¢ôTÏ•ìðRµ3e̦݇hp =†;BfLïu=¡ƒBÒÆíˆQŸW«¾‰E:¾yÞ)î©Ë¾:ž_”·À'hÈuŽsöŸÐn|íœgƒ-¤…IïLÕõ¿EÜc¿Mẽ'­µEÕTm<®ŒIx&m¨›Ü‘ÉòÃiÓKà·  P ƒà‘ZÉ[¸·Ã :R]ò¦ Ëé/Oíô!1öôÄ]±>(ÉÿwÀ ˜ö€Ç;Èvë˜âþé7œLfˆç…vOþ@)Ö ¤¯öP§§»Ë~át岺€•-b§§€.åif½ñL´’K,$Œk™®Éþð•øUÁv=÷¶ w¸oœ$<7»sÜ9r*Êc È$y­‚XE!ÊS^2Re«%gñž—¹Î+hŽÓê€m`ŸtÅø? •Ô=É-‡ô'“3ˆzòiƒ…0ßË ºƒsÑ ú¨ š¢xG’±Ow’µPÓ—FËJ>¥À*¦¯ÉsÊ´’a°óÃB),åð+å8Ï!ï Ïí`Rÿ)1æ-|r¦Aü ZÀ+:ªº›f’Ϲ åàtÇÞ¸†Ã'Ÿ©¬%Ÿû‡€ëtYÉT_›õÒÊ›Ì\Ó\rby‚9ÁñÜ¢x˯¿Ò‰¡“4¿SuñºÛ¸¹o•x_¿•C¸óbf«\„J¦%ý¤JÍ‹ä lÃpðÁRù-9éwå^j1—°Ï\0í(V£+ƒå`°¿5QïPÃÍ5sD>c §/µ¥bÞôQ®˜Ü|þ6ÅíÆ˜Sãv©«×«¼ðUé-wh0ΦvªµÚ(Iñ•šål5Ùœ1˜ÎÉCX ó$¿X2Szah !ÌÔÌAö©ìP*Êd"=M âß8žâwY'Ÿ¡ˆ»Ây9b®BOY¥ÕA×oRIzšsJvð醸I¦8# gqQ5¿Ñkø&° TEÀít˜–Ü,/°‡s&XŠëáìÎ’Ê@¾Ð(ú¾EG _ÂZ8{ÉÉ H>Ì)|G¦˜û’› Q==OíÅ3mÆÈEÕA}×3Ìyi.e*ÿà®òLÒÊ]"U\umxåFñdšmð–ê%e¶ÉI°‡þÆð]»"LÄѦŸj¤«cE.Û`~ÆGø•öÐnI)-Ìÿà§ÉÍÏa/‡hî®ÏaFJ‚ñIŒÌ…(Ž£ ð@2É.¨oÑgÕ\fAFá4Ø–‹ÂEN ÓÑÆEòÉ\Ñi!MtÀ</­Uñ?iͱ¿‘«¸ |سÃ/~ì¢&r<>¢ón;¨M3ú\55á*FQ2SÇÌ…¼p™ûÂÂ(\¬ç¼ƒ‰˜ª)—…p &Ëq¼Å ²'£Äà;|ƒWô3 —cAcLþ%‰Ös¬ŒA9+$t’)2Ó9èý%®c§â<Á²žüÖ{u™ÈJjMPëU Á¶Äîm¹ «T))‹ñ2æ„p“—OŸ•y×`K¼¦6Ã!ÑP^[ËÕMz Õå¥ Åop·©4~òFQ4W›ð@eÑ)¤žž®ãT9¬ÑVg›á¼ Ö`VZ‘”–æaeaÙŽ;á-†iP~ª³p™4ßÄœ”‡È*<ÅÇ¡´„Ò}¬ƒííš²”z… ªêßñ´åçðF54²IZsVŠÊRÉ~Ÿntp0©ïi©²J´›Í;A]…¡­úÄ«xÅ{4!š ‡eüŠôc„½Ý·Ò[ÒjªÿÉà©®ûY~{ TãRÊ=È«L-¾‚í¸¹³Ó}¥IA›iyå&Tî!=`y¾yÊBcOIϬkõSUÜYkÆ%là ¸0øb­ÝÜÔÍYLR>ÅÝLÓƒ¿;:nJàvÜãØÑþŸËÅìϦgTñ¡÷)š³@ãU“ëI?lâôt³@I>Ê3u[k M´>Àw'–Ç>&n ³÷:ßíõ0gWècbó„(ËãŒs¿êI€2FaKŽÐ«­Í0WªÐv=‡ B3ÏeE}ÃÞþú²«ÖƒÃ»eü âžâ–c2£ötvâù>v›KFÌK±ºœŠÃY‰ƒ”XÓ æéCó`9U¶v˜Dº«þr+È4Œ.¹ë „sÚÃàœnAJ«°É#ÙT>˜åþÅaÒ;Á_<<¸LHŒ’ºf/¯„o<_RÂ}~½åÄgXƒsB6UP¢`$§äPߤÄ50Ô\w<_‹7Ø/Í žãVçrrRòé*©Á>.)Wá­™Á3¬—ú»\ÐÕ)À{°¢9i6C:ÉL»x«ÔSp•V¿dš¤Ç2XnÉ]ʋɸ¤,‡Ç2…w€¢S¦ô >à,öB$Õ…ýò5dº}Ù¾D¹ÌH>Bm¬ã7ç°•圸Ï» 9žtû˜5fœ8¼Õü‡û`­@æk\¯ÀŽ…‚tFrÊB}ÌzJÀ禢ÂpFÕÇð NB~鯡 |Ð3ª¸ZËv(-E! ŒÅ/ø‘Ã8©ÆImøS2A5u ©€°¥¾©î˜ÕZÓ±"í†øEâ.jƒ 0 ü†0»ã øŽCe”Äé0ËUÖ-(k­Õ2 Û©$Ò’˜½º,Uã§ô3ÊMè©M6=ª˜ÐÒTâ3ðœ[¨òtwèZ°NCn¬ÁI¤\“­’œÏ¹ó¸µ)()ø ”¤‘CÂéêÈå¦p“ËAùÛý.ce»Ù,ŠÇáè ‘%Ѹ§c+˜aæXPûÌ5t–ÏÊrÈŠU¡-|±ö)žä…vpA]!W¿T  3›äz’Ê%Í¡! ”ï’Êô—ôjÀ$ …oüoàÜË ‹¹«ò©Â/ ‚@²ÃJµˆ[Ãø"…d8ƒÞØR}†ÿ0·™¤…º¼†ª¸U¾C^Ï?¹«iì¦1[¸o‘ÉØÀ riyùá.´‡A2ŒÉ,ɧÛãA¿¥&¼§¯³¨ªðØ›]>š÷V¼„ÁšÆá‚I ¯ð“\¦ÃPÒË;h« Ã)o”pÁLmòÃëö¦eöE÷¤uÑÍÏ.NÁÎ8—Â)6áRͯŽY‘ ±!=Ì…}X?AaÞÂaòÒ­eq(Å©¡™õ^*ãTýFÊà{: ϱª9¥èXƆfx†cñO¬¥wXÙ <ô€*Î"XÀ른™h¾j¿å~ÞnpT’Ãh˜ mI!¹URéÍåt"’j$<Ä6TFC$=†RðOBhŠ»`§º¡‹(𾉠È@O6ž <€£*‡ë+8Åžêù¡´ ^uÞB¤3Ëñ¨¹ò§W;ÀuË:ôpèÔNZÅ7Ôs*tåõ”Çç˜O§I˜ÈlhÏ7…‚‡u º­?±VMq5ZÁA‚ÐÜ?"á2Ow39#ñÔ‡ü¾'0©=xתҜƒ¾W ü£Ý91á gãWÆîKxÑž9ÖÆ'ù£ð2á "6Ðßv sˆ»Çͤ7Óa¼ÞD÷¦M!Å<Ó¼<‹ÕUõF’@1þ,K…Õ«/ƒuþ„A±ûãFfø8‹|ÉÃ|) ê‡V¸ï¤Œ“Ø4˜Å|’Uî § óNjÜ@IÙ‹·üýÜËxÞNn^:‹‚íÜ>NUoråÖuVÙà)òcйŒÝÝf„:‰/¬÷¦‹»ÁéFçp¾Ç†X\ƒŠP‚vÐc<%ñR-÷§¹ÊýÛ1ãÌcháÃô‰ó‚u™ãÒÅ·LXxèocš&¾ô/÷W¦½ÞÉv†ŸˆhŸÄ íæ±¼…ôQÊ®šºW8—‰rž™J°Ê­·…<©êÏM©Èׂ“bÅ÷þ•#Ð×Y”øžQÀÓ1˜Þ9>šÍ‡R :r:½VZÊn:€%ÑfÔ‚<—ÎÒé›é‚ôã*2šÇá « 5T—¸B&›zxÜ­¼Ï=dApéé—ƒîµ Ëaý%ÑÃôrH¥'íÎÄSx×]/M°‚ükä£:iï²ïp€ÚPÕ ~„¥dßQϱ)¥Æ²Ôƒâd¬|‚V˜{á|Ú§zÑ3ˆ§uÒ•"Õ¬!½¸-†ò”rPO=ëÒ\9©;òRRë0¥T¥^ðvÂp®¯ð9n“7² JË.ø áÔIr4Ÿü¸Ò˜T° VsðcR:ÿHsl ]á†u_í‚LØ“:ÉM²¡ƒìB€i0EžÒ,(™°ÂbЪ£‚·P„<2çá@|Œ»°.^—2ÐDZÈnЇÐZ]„Œ8Wö@%px¦Ô6UÍ<‹“ÔP³ ¦P¨Õ©(öƒ¯°HRÃø\…9¸Já0S ßÑMSÏ‘Æ8R’K;üHoñÉ…ø&U£}T\îA}*Çe*åÄñ‹€ðpœcå…LÅh|$ ×Bk5ßâMj,}` ƒZ©†A^ì[¡*ü‚{¼ëá.é‚~œ‰éä_ BcÜ/`VÈcxmOÅýØPÍt«qG« m§U¾OrBJ`?ðKjîã–dcþÀ”Yå婸³áE*w$‰×œãö¨pp Z ÖS.')tsyŸÈÆtÅKÉ19'ì6uä Rmwü‰ÙÜ“&(7%*ÂzHŇÍPlïlvûHñà2{´s‰ßA è.Ypš ïZ‘¢¯©ÛPš;¸£p”æXR P›1Ñ:¦£½)q ~ñ^”÷Ð õ oÀ Zcý ¿é­†ò }Ád4ïb2HK§ðê }`¾€ çÆPF2ý¥¯x‚MÍ/.g’B[XŠ»`‘üÝ1‹4æ]¦¡!|¡„’úv©TKƒÀ‹b+ë 6,3Ý!Ö¹Ù±'M£jx.èÝê?«´2/”=!N¢9Lû!;NÓåu++{Ô$ŽŒPìü©„Þ ¦ÈR)äœ%ÓÌ)h,Yx‚µT…Ð O}o+]N˜w_ÂÐÞéÜ4"ëUJï0o/5ƒöÂMS¾JV9 /­jÁŒ ކ2'¬UÏ­PLô ýÚ‹Îã(¬/QRìmÆs¡`~Îʽä¶ó‚Ñ<îvŒ_fò8Åx9_ã´n“_}±;º[ƒã½o­›zÝrP8¤HÈïÆ°OᕬvЛNv'žhÐ{ˆ¤Ë üÇœ[q££OÅâ’w†Ô [à[Úǧ=‰€‹œ*´ó3˜m0ØÓ09¶<3}a">æx hª*I!¸í[§!=°ÌáHÛ“¸<¶`pø–ö~+Î7 Ù³ˆ(êèéf¥óåÅv¦øS4ÙýC>»!Ø6l][úi?œÃPÕÎò'¼7âMåöãÎj_ü ÿýŸ·üõc ýn$…a]è+ — Úëø5Щ¨¸g«e!u/s—ð¾RáŽUƒþÁX[vb4>€2j¾'ÆÓ3ä¨ìpk˜EðþÄnòÁ^ËM|w9ƒ ¡±¼ Œ<<€g°´OýMSãSí¶¿g9“ƒ¹ã†ýÎñ;éïš %drGÁC©Ø¥;¨ø®áh “oÒßË l¨Î`AµRwËœYæÑ\ßi]lf»ûÃD˜ÕÜ3ø^òp9×’þÒãX>à IDAT–vâ'ìŒÍxº¤wWºCd±MO–ÖJ:ä¤\á z·—¦êôö]‘“²ÇÓ&ó7·—Å’A)¨ˆ÷a…‰†L0„HMÙ`^Û;Œå¼ñßw¿8 ÜÏô×Qx -±>á”n‰Ã1Jw·SÒ µ^f‡´ÆdI Šb‰‰œÖ±7ÝFîC·Õ ^RÔ³B_VÑäkØ–ñE]oI¨B›åyï¶’ì˜ËRAøçcIlÍ¥EP÷1͆Î0»s*. ëÜóâ@sÌ›<õu{k®ˆ* xˆ¤Á#ð„wÁ0\†sª` ÃB çÓP å,ŽÇ hÉ (Iëä&Ô€ôJÙ3PZùI¹8ŽH.Ì€ï%Òšm>ðpü[±¹z c$3¾Æ¢4'S5ºŠÿØCÜ4\Ûª¬–AVÓ…Wqä…xEšñ+î¥Já<ÉyÕ\µ@.Ài]ÏÈ8ª¥¶Ó:< /à¥[‚åfå»êÎÆÍ8Kõ–±ð¯þ®è=4ÔiîüËßé&¦Â*<žwëšòB*c\¢žÀhÆ5ä5¾ƒ[¨ 'M Íá(×d‡S©”À]ÝXî'¥©.Ý…h"û±+ü‚9ðŸÚ†Jà$ò‚ce ìpÓAwÚJ}x8ÿå`.ÖÓ]ä3$Jþm­î|”ëë¡!&ºâEÉ'L¸sŠòa•wCWÚùp›,ån,4мÄ4€:À¡uSéè­gLà­3È –áMRŽ©ôIó ꤳÆöûd?ÕË蟴kÔ&¯«wR.ßv•] ~±›;óhSЩùœ tL·Êéö!‰In%+æÿLáo+Óé¼ô”Kê„,ÅPÇ¥¡›™ïÓßjTö­I1$IRonµ…=úg•ï’ÎÆ'8©5üðK ±bÔÕÀ9lvC5y* žë0Ø€„lÇÁ ;i³ÕXçMòÒ—ÜWÆ“)~N<į—Ž´³'\tFys#U*y¨^­3ã2¸\?JJÓ þVÌ— ÎŶ Éje0-ð³7¦TõUÐÁ¾W!JûëÇ7Ž¿S5v¯?WÂ!Ì£‹ùæz›©LjöRCè¬ r¿©wê/ù÷õŸKÒeOÀ¬‡Vλmp¨Ó0hšŠéºÞ©º§,âí–ô¡ê'›ìWÎ0Sï÷[䢛Ã]€CoªHßMß_î »>¬v_ê¦P’ó…úUv¨Ø“´¥›3Ú3¡ˆ›ËI¢Ïé^!£<¯|¿Ãê…ìô´×ßtˆ5>pÞŽv÷ØìM?w‰Ç‰t¾8)á«¿χú’¶à›yYÑçéŠc=?TR§—Œõ¬Çáú´7Õµ¦(m÷všášr­ã!m± m·2I S ‚¦yb>çžÔÏÑ×ý?£šýŽ æ°çÂl) .g†Ì žhÌE­ŠÐ—žÓßÞ ÉŸîvî«©~<˜Ja5<è‚Ù'e±$®3{0þÄZP×xæš<“Â>sÎ åóðŽlåïü7ÈD÷‡zkd­ÝН«cÔF× ÝÅ­ ³qqž’r`ÁsSQúà,ØnžÉ}YoÕ•” &ƒékâ ˆ‚É]­Õ7sÀm*éÝ fš>­“È|åõ䡦ÔQï¦RÚïÖ…­¡õø ôÌÔ*}úˆ±!¡)ÇfüÅg8›ç»].ú6¦Z ÎnÒÐ>Ø…C`5À¶ wLZÙ+ÝpÆ{n©>4B1ó@WÈï`†ÉÀ#ਲ਼‹ãSIÃUe m€Gü “ry~Éc–-/ǵºeè'ëœoa´ÒžÔ‡ì/¦$ĺ– …“f0†¼ðRîJ_Ú+wd„ ¸Š BãO˜©òRZÂÿ¼íi¢gyÂwöN8j?sxK2ºþ+ò­µ¿Bºüá‹õŸöc¿Š?kµ…ôL?þÌ9˜¶³7£=rxŽGL·~¸×ÃŒo¾ç öçZaN|«Ub·à·ÀÿjSUšŠS<Œ– *¥7è]µ”o¯ãpç®jt¤VþâÑ:*¤m¸ŸôAÕ—RÒÌí˺&å‹Ð¨¡íñ1¯2gíªvqûj\ ×ÀþøØà,g¬œä?t}ÙH]C'9£t“f¯šîë¿ð«ï¦þ ÍÁ#ÿø‘´°‹zsGl‰ˆM:0éúЩT úóÕÄ÷þõþ‰snüçÀ¿nÞHïñ&£—ÜDÒ@ sOòá{nÝ4Ÿ$oÈe÷O|Ò1°Æ&¼o 遼8šŠÑ½ËšBT”o¼ú;ðÒD žù›ø#êjTÙø‡ÁBÁNÁåæ_xmÕ&j£‹H1çÛH‡uv]Ó_ržPrz‡a¯©ç#Åh5”4Ia‚ôqÈ@øî45ä×5¿ä;µp¸ë¶Ã锃¥TgG›²Óhh !©3ÐýËìÀ=PN§ÅŒT6ä^ÃGž!t]*(J’›<† nË|É% Õ X¨nf™_¿W$DûŸøWšçÁ îtèl†¸o|“Aää͵:ëdªª™¬;ÂDïqUÈ”Ìò*ÙXS;ךœ;Ò¶M×;Ý¿)¶™' '~¯ûf}‹Š*ô»W ·›“öèOtˆ.R(”Ri±˜¤UƒÔisÎa_.#µé8ÆczëÇxÌ(y ?—‡_xW*@Nè{ð7µÖ©e©\ƒü)MgØ(Úô’¯¸Àr° ŽÓŤ¦‘dÒÂÿx®ûŠoCqÞÎ5Õo ª Ð#õSÞÆûÚ´‘5:þûüÌYo*:£¸·ÌðÄU¼ˆNCJóì†þÐ…¾ñ0fgšú¬¦›¶ôQ 6-¡~¶¯©]h»}(Hëe ¸ê.Ï6¡|M~ãg™Œ§ä¸Ôƒ"è§dÃuÈ*›¸O†;ûÉ )†sdǾðvHÁ™À† °âWŒÄ9Ø :Á y‰mi«ÓðBrSõ„gòBxéï pØ W# ¢^ÁaÜ߃CÛ¥<¶F‹c"¢®‡»¤¸¸”X…òbÜ y0ÞÄEâ“öòFªÂî #è” Õ“iµ‰Â¢ØÁé Ià ûðN5ä :4öy/JWˆ¦µj$ž0÷á<Œ2‡åd¡]töcé ÏáœFé`+öâN/ p%8 (™ÕCÉ.¥!WQ.Ȇɠ ?×ýñ/BüÉ^Î)wdƒ´’(Žãa™©Š×p›ÃeÐ_*à ¼á8ëÈ j‡uÜZØ=ÅnÃíÜWº'6çGú¬ÔOÍF»8îPu°Žw¿ô”ƒX«Ó|•g`¦¤”ê’‰¯Ð<¥$JúqnŠVcm„Í0+HeÙÝÒ®ÏÉí¾skó\•]÷Å¿h³Š¯Œ€pùu`Ý”&²+È9쀅`“® õt p*”S«BràKšeÁh:ƃ°pëÀ¿p†‹y–YYu ÀFÃ&‚>Jx¡€Â/|IiüÇ=Ípˆ©Ï½¥»™ °,¾ê”\fI ø]LA³[ÕG.á#üG¿“f’³Ñ|Ea¯†£XßÂRèà)x0«¾&M±˜'f«8݉fbƒG%¥³ûb 3ÀÓÁ'žõzæ—‹nÜjß ´ Ö¶{¦\¶Åû,ë䙬I2‡´£i`™2ü”KÈwžJ£Òâ+:6¤—Ô¼DÑ¿XŸ¿[iT[Ì£ÇS_iåédÍÓڛ蹮.‡‘n KB;ÐöyߪxøíÍb­¡QœB¢Í¨„Ájn½ 8ïNr¾Â¥Õ0Åg­´¦òrø$é'Æ›}Þwžþ²M?“º‰ÿ3?L¨¿M´¦y›:SÏÓ%a Žùâh™ ýþ`dÙÙÝòN…ˆ¡©Ãj„ñ-ö\ ûéY ·E„ûßaoqUT=¶ªõª ÇbA\èÖ“”nóÍ].[öA\á¼q}ÐÉâTu&›ýv¼]UÕ*QºC†Dù*áþÔÆï Œ(½=±VMïæŸ§¿ŠâeÖ}F5—œ\ÕIøÜL_(¾ÅÏ?ìFnO§º3ƒ„–ç]ð,ü°ÄN«îÂ1µÄó Ö[ûb=×=›Õ ]ÔwZ¯´2…^Q#F‡Ô Yá²éób'ôëÌw6ºµûÁæ@:Êë):Ïû*d®ïoÕR?PõÜY0vI+˜èi WL爤iÜ^Oì^ÿùj¾HVú¤÷èFðVmñn#Ÿ®i­³^pó­èìQïƒß6:óï­Üœë%…=z8SCi´*™5úÊãI«ˆ7=ePk0·BQ*Ÿ‘UY˜LCp&\‚ænG(÷6=Í9SFÒA2þ‚• ‘_cAˆ4Mè¥1wàŽê-.× Æýröšê¦ ¢q!õ©šãýF©0›§l‡pJ¤Ô\òHS!§ M†/v ÷„3!ñ£S81—F&˜Ùæ™däÑ&/&Ð{Ø­û„DêÌÞ‚´IñŽ€K”:ì‘gª¶ìþ4ž,±¯x/gJ“¹dÚ_a5½Ýô‰âÏÆþ”/rgLTLþİΪ¨v{rZóôJº€ça/#/V„¹`ã9yƒƒ°Š^…O0…§¤¡+tVÑ6)eŽ»=T4 Êøù<ÂjFø÷BYÍC  ¼ oz&½Æ>ø•“q墌\A>á;ÙÇ]áÞ¥×¼îé½rJžèž0Lz«‰R.É ƒzVsÞ"sñ)6ÀZº#äƒ8LÃG7)Ý£x~%y`€ÁFXÑÄ©ê(N ƒ)Оb?è%1¸Žòk¾C( ë’ÂÏp öÁ¸… —Boh,ÆáwU‹Ãñ2ô„ó˜¶ÁC+ ùp4~…œ RBöæޙêÜ‘N©Ç8aðñ'ˆÂ0 ·ÂylŒÅ`ÜUié—ÙA%D¾O¦Ã(lNë ¤t‡bôXfÃx%EaT†þòC¥ˆu»B/ü _¹'5-¥MÅö ê“:ç?ƒ×±§½²R.¸!Q0[Rèïj˜ºÇanEw’:Maža2"t'LÀ=ÒÔº¦Îð™å8Ƥ¿Tç>¦‡IGhƒZnÆàyK)Tø‰‹e9V†M¢p¤Û€?ÁiuOe–8½&ÉNÓ»ã :eâä­t”`NâXyÃ{ 7MÀ1ØŠK%˜)»Å+ßœ¸ß:P~)‹ñðÛ-‹Õp±‰à ç§Iø7×ÒÙ` ‡ózØFï%?nƒ®\_Rq]<‹¡Æ@jÈ%-á’T‡ZTDÏ2až4…?À–L¸ ¶J639ØÇn§Z´Kxt㌔çªÑz„ʯës´,¦å°·Ê2 Ã+ ?°~zoÎ âi-¡¶Å3ØZ®J8¤Zº3%·òÂÜ®òÀ: ïñ•„” V˜½VQ•Í@ z8¯à¬’žÓÂ2 b+:.8ìJE»%‘RFzlÆ1ôVý«ŽRC'³¤ xé5x….^àÉð V—i±µ ¨êžAøNÍPí±“¼3¡j Ô ÓU3{!Ï”zn’çN{*ɱIÖIU}6d‹U\JW;Y”§p²{áU& wd—1o B®É@YˆQ8û±†×ðNQ´êmÕô¬¢«x›[Ò-ô˜z&äÏ`U^æ‡~ö$Q½Zg¥°saW;šâ™à1ùŠ©œN?.(®R¨Ú|B Î.õ刔e‡ÂtyË,#=ñ‰ÞHwðØò—yâ¾—Ÿà1íh¾N”ÚT™ªá"˜KÛô(΄á†ôƒl¦>ÖÇ'Î&ëZjï¡gÐA¾àm¨‰• E¡Vƒ~Fƒ°ŽRïÕIC1?œ†ÌhÑr™'èWáe´MòH3µÐ}cX1;ÜYêd€´TE]§%ø?x.g9ÒAZh„‹e´“µÐ§À5Y L ^†K¹+§ƒw&V¶Â17ȱ°a1ñ@k,fŧ8LH2œË®4§Ö²€æJ.ÎdUãÔnjˆ¯¸’: ÊEì %©½͛屺$…á´/­TH'™(ÄKµ a?·«±L ‡dÝSNOœFGÝ¿q-¦pº»¤jðXp0#dágøÕ;ÇÅE1Få³>yúËo,M)<§SŠe¬šmR˜ 4Ô.ÏUN˜ˆïÕx¥¶XûÝ÷ õhîá2‡+š_x'AciM Uj¼¦›Ÿn¢Ì–MüNÍã<¼Z2y5´F&#/ÛòžJK¼ÜVEp):Çå€pŽŒ‡0PÎC>¼¥¢ÔvôaFšŒ¡¤T-8“ᎠfuOÂm~,H¶tÇËœŠîCK·5%ƒ2œºãôK|Î5`.m’8@­Â•¦´©­ZÊ8)ª†â6üMåt¤XÒxBÏÇ÷˜É®Ìë¥;gr桼— ÜD¢ù,‚[|Î>E¥°¬ÖyUiªŒª»ÚÏcñxÅ7ð*>‡Ï‡*È<±êBÚúä§¡øD~AISnã˜`© O("™2´\îKŸáà3’À*ŒK¡;ÝÅgp—¨“Öé( |ƒ/PºcqˆC‡#!;¬sGà/šW•GCVõ_ê=~ѰŒ¼R]0ä´úÚ]î`®'³Ý'înLâað™ .©©!»Ìw3žçqŠ`)g“sJÂ¥ ƒÌÐWÃ]ldUa´Æë˜žXßpÊ¿ñE[Uv]0ä§åÊj—ùÇ^æ.ä&N1³ˆzAmX¡_’†"ž‘j$÷¤Ç¹P ·yë0‡>Ña™ ù‡Qô?lw³_¹Ú.($iÌ77ÄŠÖGñwè7_Mï¬ð9!yGLŒÈ›´–o»çŽ7/ä:î§u|éXý«û“ŸÆÚ›‚•í¡\b¬Ó0‚E£é {U¨îŒÒƒÔQÙ§þ§»bšK©ñ?Ïh½ZçNz0lEøÆ¤µÂ–„ô +’äª7Sx¥ˆëagB–„oÈæ}š&|7ÙcœázDB’/6ðO°Ã­ §Î]²ã‹ÇÍNPQÃ~]ÿ5=!‡“K¿òMŽKy.Ý—´'3ÕH¾3ɹÔ¥;;&*ñVÔä×Nü–Cßì ¤Œéôo&$»ËN–†äÁ‰æ¸¹#sݱÁKæμ 8ùåÇ¡~.ý¹ ²SÜÄØê?ŸùOzæ³»¥yŽ›ÒtÅSöQg àL¤2žtt2ûVª-0›¯p=û—=Â…à.7¹yâ¤7§ØËmÕ~Õ;Qu5‚‚v3Ù5+¶IBj÷žè@IéÅôP@=Áí°Á×óâozú†w (ÄóY' % eźXŸS<6÷éœjÈõa¦ÚË'½Å’œòz=3Ã#½ñª±z§kÁR¨I%d0ÖÃ1î|¸Ë[Ly§»© —Í-yKkñ<ƪsVqÚäÉé©¥¶è›z”¤ÏÔ˜âE)ån©pцòÞ¾Ìiì{òÏ7»°,úî+¡ô`в[g©¬fU÷ÜWÕí©§‡t³ÿ-\¹`ýÌoþ|’¹SÄ€Ô£“‡zîX³é§šª?àQ_.Ìâü–†Ð.þ½Ù­rJ>ïoUZ]׳ Ž7ÿ›+ñGÊLoñ¨\…d âÕ<Œœ'M ›;Ç`^¥Šévú5´Qã¨.¼‚Òj΃,ÞN˜â­-Ø Ñé ïé_—õ”ÄQmy·)Jk¸¯™ Éøß”¿ñ‚É(¯%‚£`?”V°Ý]&“0Á ànì*ƒU(Šm%7 k°JÑ5h ×á>ޓøòá#<©± M‚OX¶È|`]7]¡±±Ԁƪ ¬‘ôÔÍÁyà¾ÄxZ%ùá!´‘Ó03Éù=¡0œ—ÿÑHéý`l†ËÎdn+³ð6†­˜ ’Ðl)t,¼æýª ðmˆ„¡2º`¬Èi‹¯Ñ‹yp8ü¢¾ª1חžeüZè>ÒÐ_âÅöXÉux2¾–eÐ^‚P¨G±*¬5`&•T`ˆSáiÅ`+Õ•Êð.r É£†Iøf­àT0C·`/wÆœX™2¨óNžS,—p¹Ô”î÷/3R~ÉMIïén¢yŸz&{à¼*Å«d:M’ïà‡ ôÂ:;e Óh¿üå‰åæ›\'è¥-G½ÅôV1Ü@ ûÈ]h„ñ Ô—pî!¿¡=;òƒJy¹€>'«Ð†+@Þ9èG_Èyh-û¼å䪬’.øTüÒcå,¯Ñ7¥ …ï UqZFZe’«2 .s&·ˆ¼Pµ1GyÇY}éÖÇÜ:R‹ÇàZHËI肺-¥Ì<)]ô]oO9•F×õ~2ÿsšc¾„îð™ª)WæHQîkúêXÁ„Ék® `¼º‡Ke<ôœpÙiEãyȧB#~ IDATŸPzû¦•Š.ðÔtMFReÚÁ° d„!˜ –šo0ÚH8æ¥3RŠSE®`îËIg¸<—ÛÆc±8³w°µ€ÞÐÈ¢Ê:éc‘‡0ƪÄ]àƒžmŽIeèeàŽ’X‹N@ŒõesëÂo˜Ü¦ÖžœG¦¨§¦¶ùE p¤lÔûÌ^y©Êqxš”]w¢®‰Û@p¿i*äTlZ(ªû ë'ñÅ‚.÷&w~›Cæ‹\§ï zÞ¡Ò:™\’rðEN‰—¥\ÇÌÎfgŸ›Û›§p‡AXur• ç¼ÁjŽp…àÍ`e.k¤u¡ T“f…Öô§ž!U½Óõ+õE5ªª’JÐÓá3––’TR˜s°‡RA>ÃY\[®Â.Ø×*pÄ™g˜z °© óQ‡y]DÖÐS¾òN²ÀS.kG·ú±ÝžlwçNnÞ*Se§õrÀ$Â?œÇ¾Ë‰&¿ÛD¾ó ‰!v? úþ±V¨_ïºrTw•üV_y¸¡=TŽ{üÞ>z»Vu¨º÷mÇr¾rî2Ân374è7íÜLÆ«'ZÅðâoì’ác¥IháP'd³§“î»&þîânakLº`©˜f ¿ŽïƒQôRýò÷ú])aÝ7X9¹íüáTðÄÙý¥ìKj5:þ:òQÊÒÙÀ¶`:þXiw3ÿã¬œŠ“†T –Á7JŸ[íì6ñÔ+v]bZ“ gX9tV­a¿ûØDBióK,vå<ܰ2ÒSé`¡–”‡¶2Nz{b© »Î“D'û]/°60Ñ?,1™Á ÍvxL#¬ÝâJ«n‡›z‘ lU}±<Ç’Þ›Ô›Ú˜Ù´Ž8™ôSL‘ÃúÒ‡z$¤]ôÿv³5xs; · âD¾ç<0·á¼´—ÿ0¦5ðÀuMÝ@W*üŸ xÐ*í|Îyï½ß7ži²5Ùv›m·µÙÚj³½Y›mÛýÙ¶k²&?Ýûžó?nå#z¿ìl„¼ú?}öQ°ùç@1c·³R1Nj~,Mu²ý\–§!°Äx÷¡†z‹óÁæ?h.®€³z¢ÔÐí©MÂô”0©@`åä¹!ÌãV°?A+8…[¡ ü0æð6Îb¶ÄYøš=øNÕ…FX˜—H^) Sa_‡·hâ]hä—\ࢲâð3LE Ýà‘p8¡¸C¾A8Üâ«RAĘCéi±óÂI4P<´²'둺U ¹PËØ­¶éø¤'r}™uÌ>0Fb"T”ÖÒAˆÃÁÒŒÛC (+ ˜ ŠCF¨!ä´{Ð$µóòÞ¦RQ4¼Umä.‡ËVÈ@.¥¾«¡2DA8mäL<Æ«zøÒy.ÙàO§†QQÙ*Ä>ï<Õ¹¬|ÔLŠÉ®ˆgô!Ü –È6ÕÐìÇ;¥åÂF0æã)8?Á! ÊÈNiM{° Ö„²f„Šk€d‚ÙÆ8O~¶¹…üV1¸È˜“`‚¿§¬tZaŒœ’EÖU{V9qåg ¼*D.Aix+.¸D¯9 àâ² ê€[Šð ìûÔ#¬N‹x—l€ÞJAf¸ß¡:$óS1…y<Ô0#te¾Õ#-”ƒ˜U½†YòŒ¯bKè.³í1z§ýXKŠKßÔQV¬ñ'Žç_0ÎVf"r¯›xR†ˆ‰}¸,^Ǭê6–ÑoÍ*‡jeÏÖ— ´ë˜õ –x¦úSœäW™ÅòþR§ñ+õ…ãÜkBKiÕyžÀiÃM%Ÿî.kð®q€6P%ìªpO¨ãœã?í ü&™÷aŽtÑÏä™TQŸ$„šM1ÙÁƒ8YǪHÊÏ¥±.V—TPs«ù°Y‚éOíÑI4 ÂZ npo8y‰ÓA/…>fZº¢v`k¼†%¤5Ô‚tÙv5ZnT63ªjµjk¾“ÝüÞ˜!=8“Äò:|¯ÿ†¬°V¡Í—R c(Ì¡Eª¹®Â#tW|éZ/í$;qÆ‹KgÛ¤Th)E$â83·„8Ùî4ädü[ž‹* È».|Ãhç$ƒ>ÒO`nuǾªú·û"t2Õö'Á1³’˜ÊWC>¸+Z÷‚…}îâj™xÏUÐ@{6ÅÞ𞩇t‚K`7ŽàÞ<=ðÍ¿Å~j'ÙÊ騩#íÚº“êOpjé2Þü+äløÒ°oXžšÃ §ÃïIÞò¾Â¾Î'Ÿ¾éƒ¡ªº‘“Z˜Ê„¹8žGñ0ÝQzH݇ñX‘ŽÙ»N1§‰*§·C¨ªÁ©u¤bØ¢óøŸÙ}œ¹Å}[ßë×e]„=ª;ŒP¯Ì›|‡zoËÿ쮿S±?àõ­Õ£ < òþ qñÉßþšò;¹°ç…÷€/··€m\ÀIâ8<îkéw¹»²„¾Ñõñ“ù8eƒg|ð÷2çù²Rʨ0þ6( zpŠ\•2òåÃ72C]Çôj¨îÄ´À·Ë÷opÞ¦‰ÁEYÔåÃÊ2òÃ~ÕǬ§Á†Ãt‡¨ÔÛPÌ…_á&¶ScU*ÚhMt÷5ËÙB:ZG­œá*¬yس¨9Q«ÓŒ:mÆX—\G;° ¯ú|Þ‡j†¶œÌfŒ\•læ-ýËài›$]U?¹³š¢Zêj‚uWèÍGíÙ¼L:ygâF¸ád’I,Öâ( ¿º¯ºš5Õ"s‰µ÷™ÛC†Ký)ߊ|oò-É06S¡,·ƒ—µÞ™'`´ýÓ}’lÚbÖ£¶ô†Û;­ôpßrç³®•¸ÚÈoä‚d#'ï€Öð‹coÈC·Oª¶ÙŸPAk»ùÝúf5VÝ­~´¨\ua–ô1_iš(“Èͧ«WzÏ‘Œ:’ ë 4ÓX"-é~—;ø/T•aü®É(Ò*3}”xH#g¡2uæT˜ŠÉIÜSt¬.ôtpÁ3¾ UÐ…ßìܺ Tujê; êÐQ ËJL…=鋨XšJš] ­ôð áØCËÕA®«[‘# 塪»`ŒñDÚJV鎵 ¨,Ãl +ð©GÔ|‡Sq¾ÄÉcrCNÈH]IÍăƒ“( 5Å5ùvÄýp–¦AK8 ¿a¸ –ü0Zë³²X/Áf¸ÒC~© Û!+,ð'–Âbúa øƒ—ê2TžË9ˆý¡‹Œ€BÐV®á=˜‰É2“—B}(.© ŽîÂS8Gµ¸Ÿ—1+b{õžÃyÍ•ð”NÇÕ9ñêj8Išò#Þã%5¶ÂV¸Œbh¥|UÍô¿º1’ ô‹ûc?þα¿S]wÃð/Åa>#?¥ÿT{^ 5p'tæ^* RCIuÜØl´†¶˜Ë8c #Æs}„ÚYMõd¤N:üêpLBd“np“óB%é w!¬åfA}ÎLÉ'™!Bmð‹5Ù ‚媖EÆc}Et@~+Ä^,Á¸Õ𘠖7p„/«ª ̵·ÉY{²œÇìÐÒž­=ÎÎ.“8œÒÐ=£6f‡MæHHT7jÒu«Z6s *fnsPÃpe…¦üTÑeðe„$jF'1µª†C l¢a2?H:A½* }ú„“ ã|^™i þ´ «cTHåUW¨=¶Ä"øT™pŸ¦àÙ*)–J¸¡?ù p²ÓË~é<ä›ýÂîJ²„¯“$¿Þ;¸¦SÒ÷€J«ÛdÁQó•œ7«q;¾¡ÞÆ÷” ŒûqÚc{ƒÿJ®ìI÷eÌ÷K C“^'ÍTé95¬Ù;ÜzÉ¥¹=vR¨gÐ[ÿÜjõuªâ÷c¡K(véùЀ@õ#tuí•;RÎi§Š›uñ£QÇ5KEY¯­mæQCÍ#¢à ”B‹‚»‡Æª6Öks@³ëÛÁö-ÝÉn$%xˆý¯¤Ö½œíp–&±Ã/¼çì4‚z†®+4æòÙ­çÃn*á0¹|¡±!e 0¯²æ !•Íhë?˶‚ÜCe$½µÒJqyº–T=ð=0üã§äñÕ_þOß÷úQÜØ’êY'‚†„^pÝqwg7ž¨–ÆEÕ\†Ù'ðf °w‚óÎÜW]rÂÛiëò÷ÅépÅÞf¦6#e’™Ó¨vºþ±$ìaØûà˜t \ƒ«„Öô’®³M¹C|éÜ,Øk+(‹»sF,âªxÈl}T·6*` ¥ê U¢BæHŒä©ÔÃìc{hWèp‰m%§³nÃ*}JxåÌ–Hø[¿„;0‰êâyœo´¡©ø£ÈY°† ø Þ«vøØˆtYª˜»A×ÚánÔ:ÄÜÂØÎA­¡žq‰^C'»–}@¦©qpÄ*Ìt~×3~å[‹¹—ŽfC„3×±Æn4ÏÀ%­tÖ^LÂ8³Ò.%¥s]çw¾*ø‹A(“=p ЙJ©iÕ9$ƒ5'sÖ,Ó#¢""F· :ÚÏ>ëÿËÛ ÖáW¼‰Ý0ÁÎpœÍú¤³]r«¢øÆ•£üßÍõÔŠÂgÜ#õl¹O5qcL/»ÅC§ñ²,$¯¾ŠKUY÷ðd‘¬üHvÂqpd1Å)І;ñhÈ.Ÿ 77ÔGZ€Ç¸Ãû8ìÚ¼W¥°³†FüÌEá6|‘|ØOÕ…”«ÃJy¬ûÀè'xÔÆ(Y#…h$Gê?å¸:ŽÓ±0õ¡ðúá+®G^µèl­tw’¼²Ÿã#u’Þš³Ð­BuŽVÀÚù¥1/å†ýàESY܃«¸—L—*ô?Ëm*9!ŽAFKÙ [ø<„JcÈ,óåð"Áð`&Ã2™¥‘e5TÇår…¦IglŠÅœ´ŸšƒÛÙȵ 7ø©v†søór3¬gÔÑ—¸'T‡–F缔kâ"‹á“d€,j'¬¤6¸Qš`a##­¦P :cc){`"tSÓ8£Ô…Ä/¡îä=ÐORý°ƒ²pº¾©¿¸ó|´a0§À&8Í¥u;íQÇè;U–5Ø›‚ #t—ÿŒHc Ç9U)n‹  ½ãWuaA`…ñžë(¼I‚ÒqÉ*a t¨½Ñ’?(7<‘“\MÆãV01‚vá{ª(6NQcz 9e2Ö¥v2— B¬LÄx @C8B—t U·³ÈþŸnç|ÖŸ% zÒ{:®>ÀdìÂÌeFSý‚Ïê® sK™ k`¯zƒ§h­ë¢hL6jêæ°šÉI¼ c!šÿ§‡ÀAû=§V®Ê /ñ¶•^] þ ŒËFº (2QEë5²JrÈ;»†Ìß&†nЖFá)CÄÔ·å5Ì€ Üo«œˆŸ – XnÂR8î|ÀôPVBÕtü¦ò9øL·°´\•>xfÃhg¯îÏ)ƒE;x캟]ÚXé™dKÞÄ‹´M$ÇA‰§ãögÄØáúˆú[ÏäŽÆDš ™h°ªè@a&ŠúŽ•ÕcþiíÁ ò[ 㿓ΗäÇ)µ“[ÇJŒ‰ÿãý™¯%>FýÊþóðçRž¾×öÚÄ ÞÉ:½gžw¯ÿº¯™ÿXÊ™§}*S`¥£¨¦Ê;]!4Ñ(zÀìc-¨IcÀϋힰL?ƒžFc¯;Þ-xEÈÛàÁF2^”âÔPüe ¯¿¯§±þ×S%iAJ:ÿJg€½ÝÎã©Ï楜’$Îäs¤o Öþhœò}•?\ÙüÃ`U_Ï€"ê7´WÑV1ùéÔu*ÑÝÒžIS;9µgfJ}jÛ«¡ž‡³ª5ˆ«í·ê‡ž¥&–7èµ_Â8xê'}áZ23àsyeôPåe“ÑGï”Ú’[Â¥–dp2ò‘”¿¸ªÓ-%­¬ÐÙÜU5Ú(&`'dÁPÉm?5Ïá_R$¬rˆºƺFÅ»S¯vG…V°ºcÞäk°Éù€'¬J«^k£.éi*$è-VÅ9‘ ]ì>¾X{H ‘·5摼xþ•ç´‘^à^jεŸp>ŠéÏa¿Õëü´_ê4x/ÐetÀ4&Â{øi¥Ã§n|†ô˜WáI¾¤û¨ùENPrØY3Ÿû`P'5Î`Ž6A]t·NÉös@ÜÛ÷Áo‡Ø—|o¬œFy£ sF©Šñ”ÁÚÃi’ÜTDà€þ®@+½ ?Àb£sè5÷˰‘ùƒŽ!&|ó=öïõUI>,Wœ´vM™d'ÛŽ.Ì£ÌÑÆz©7Èϰëî"°>[µŒÙƒ§gO»;¸­/SÒ~;o`€Ì‚Ãt]ýaŽ7&›Ý)£”¢¶Ï^ˆ½p˜ twãbv@%ß{L†ÔŽR{«¼0ÖZSi,•y2Ngââz&]†Ì\\Rá2{(ìÆâP·ãšÈ!ðQ¢°'N“Ýð¤¡×/d”’UN+Dh¬šÃQ˜H‡¡4܇YÎTnƶñƒðH ç JF9_¥<Þ€5[¤8¾á&f†lú•ÃÎX@À'®†iq/¦Ö;!7íÒãe4|Åz2•úÑ&Üä ò€¿7E`yêŽ?!-‡þ2‘·cœ¹±”D©ê‚“0RÉY™d.7FAA‰Ó=“XJáW5L-µŠ@[xSžÂ1I‹gä"´ç4:I1v¨APTòÀ|U]¾`SÕ„oBþˆya9tÀŠR‡|ª&Á*c1ÖàäÀ iÅq.DI.õ —e!Fîp"Žï¨Ñ QèWg‰)àÜÖÃ1F²IF)N·i8\Äg"?x†~ÏU\‚>\ ä3Fâx.coãçô/”˜-9V&ÒfüHM¡³Ô‚‡ÐÇñ7ø&¹±^Äs2 þá]º©þ†Ù!æÆCRBj@}i¤ÿÆÌ 7¹÷Ôõñ–’Y´‹úã;ø-¨#—à-4Ƥq u("ùÕ¯¦u0æ†õØX qsiÂc6h=AjÛàéÀ|ÝHþ°+ã)i¤á*ÎqœNaæºge’ãœð¾øcO¸oj™)7T8‹ÍL?ô”Â+ya,VO`Äàÿð•Þ„nšªæÑn×ßa÷P㹫”³€u³ÎL×:ìSÒžŸçôjžVREÇH<ØK)TšVr=÷[Õ̳ÒU¾a ìƒõôï8‹uZkyh9]ã³p ýpòÑ~šD]±‘^hCeŒ¡5’,a WÀÇ»q/^v° Œ·;ÁuI ¡Ð‚7àZì¨ßŠÁ[õIØË™R™çèð éû¹:ƒãè˜.&U$³¨Žx àss;n¡XטŽ9¹ÌÄù\ËIA<‹¹áˆ*DZOÂOP û@)k”ÀÒ®åº/¬áSðî„#Œ+!ãÕ n์‡„ìÿþÀÎÀRgK`¿uEf[Ý93rÛ}x t·pVˆÀu•×Z1Æj¬*]ô)¬#Óñ¶q‘GqQ\ ûq,›Ù ‚ebS_,¯ãá¾»½ºåªn× ÜÿýÎiá/Ÿ°Â·Âÿ‡›ñ¶ÕPGú?ûêÑçs™=P`Þ‡¢ÖycŒYÚè’õHù)&eWâÔO>áÎìC_a%ŒF˜ª¦/ÙwSú¦„&¼²§Ü·8hGT“àî¿ð´¼Äm®n2\½¦ßzwó¾ô¦õ#,†ê_Ød´"@Õt÷·v˜>볎ã#Îtg Ì÷~å`» û)ô´;#,4­voWrHcý*Ô–Ï}+X…eˆhá ÞY,ädH(Ã?„^’—³è0˜[¤¡3ž`1I3Ð*Ñz­öÂßBáø…ïInµ>r-Õ>P"¯ÑÛy Œ—lö:éÊß’MxÌ))ƒ`½ÜÃÒ2þÀæà„P’zÀ¥1€×yáO¨ícT¤!öbj }œ+*=²SìN€[%7ü#ßõ,¨‡Ùå',UT:8ãɇ%a<^¤n$F^ÌK( ¯éÕèÅ_°çª0µÞ«PL%Á,‡á¼¬ö‚ÚUf  Ö་‡­( Œ ÐŽ.sqé„«Pheo‚Ír!Ðï`[yÆåÀà±2@¶èÞ¯/qF¨óá)Ñ<ï`‚ œ~*£ä«ôƲPFkÊù8 GAøª‹Ànœît€™”[—¶ÿ ’àRÏñM`Ý—89g“^äääIÐ^Q,¾V ¸ˆ£á&öâk8ÎKµaV9"‡p ~ÀCa Ï’Ôð̕ݒSË^g¨$AOû4œ‘âN/£*ípr›w¬‘2fÊb¡ËqON!·&B/n*7؆¼AØ_†ÀCA-i9W§cTH¿QWÕ?zž]ŠÙãq²ÁSd†íòÆ>D(iø¬‡¯ Mü…¿¹̆ v4í’FþH¬ýõw¸}ôAåDZö:­¸•ÞÒ/Ñ«ÍS)õs»3öÆR9C²V•F…Fhâ:î8Ý]ŸðLäÐÀLø­ ÈüG†Ù3‰0\§áŒj ¢Õ ‰”]pM¥¡û¤äü­¿ÖÞÇr³ãêc•W–ÑÕŠ2¿b …{Î|ç?>Ïûœíj±³Àß×ÿþâŸîË#–þÎa®°Î ©æ˜)·z€­TuJ}¬¥t…~.T5ª]øÞ°Ô.Qí)£÷l éíækîÜôôòOῸ¢®†ý0s@A\‰©ä2Åg0ÚÉÍwõ¯ŸÔ¯Òñ½U}))Ç%©6WWcT% 5®Cuº·±=™2 OC}Ì#q»`M36`µÐ¾A#¹.¤ ¤öÝõ.ò–ò7J©æ9ÈõùÛ—aIã“ ¦ìõV÷?ÒªòŽU)²«µð©™ôÓsÎ 6vÕ( %ã•„ÍÄm~ðg …œž ¥ˆº IDATã ë< <ÞÙöwýU¥“³ÏYst5QõüíŒi°Û©©ø»£/#õ7cBªr$:‡½ßýŸ}ßáµWàŸº…•ÙÎ)È`?Ís ~[ži½þ²%¡§šönÁ¯yñÙí´Q§˜«Üuh¦ñÍÈjlÓ$WãrGç…/ò>°:ƒKºª*8Ó˜±T)>‹cÎz¦¶÷J0ås¾Á-øC6@5•Ÿ†ËQLoÔ—,8 ïá$\Hë±"¡6íëFü€a'àüŹ ·` LWSTejP^ÕZîalØF`ã0ÁJ¢þ–üpTÆð&ìJ£´ÚãQÊ Kð-—ž U,\€+pÎ>©WÊKýžòÕÕl/_!ˆsÚuô5nÌÅpÎdžÖ™'›ÌÌÐü¦…7¨‰:¡tÇóS)¥`²¸0;T•x*âv®¯*â»v‡OêŸÜq#qcIè 3xDÁßPš‹ÛÒ[hÈ(´Á *–7 •….‡±ÆôNc™ Ëd&l‘OxN^òoòàê(Í¥¨ô¤«´[ÓIœˆu¡|’9úé + %lò iÒéÚ:×ô¿×;9§ÿ0‚mÒ€+É'êƒà-”‚;XZÿ„$ÜÆç0=í¡X©¡¤1†þ¢f:½´0Ë^¨l¶7ŒSå<4T>méÒpœ_ꩼ™Ú‡y·¥›ÚçqŽÔCp-ˆöâal­oÑOL'Ý 5„À øŽZï•¢PÌiF‹¨^Á"F ©ÅCÌJÖVú×Ì¥†—œ÷ÔA²Á»“> Oe2ߢKí¢ ´’êȳ˜šÍ‡ FëNtÊÁx‡TzΉ͢8›HEZùœX}<¦Iö}¡5sÎRÀ•&x»zrž`ŽÑù¢¾‡ ïn©ZH;'ùº/g†bðºa¢œ¥†«Æ-óœÑæcàf~$£e åTí$³Ô¦Ë»¤Ÿ,B-9ÔgÚæôÇx^ÞëòÀü‡¸,—_öG]œ"x <4.éÛÐZ“*à TA«vwøk¤ÕR-è $Sgº#Ï©,LyPPí‚· ‹% D€)%ñ˜$3À^èÑÂ8ÓãRZH$Võ3'òrŒ¹?^ä¢z‰µŽ«zƒC›ŸýÕ­—›Š„õ ½î.\8dzØKY~W{È!1Øèhç“ïÒHFç¨74 `(ÇÿázÉ ©q Ü…;TGûVøó¶ÈÑ4ˆ“cÚÖ#8›~Œ;à€/¢`Oàª4ÖUô*,á®qÆ÷:ÙN©ÍvvQW‘ ÞŠÉ«HÏhOPà™o”ýÛþ"-iªt´ÎPµ‹jÃQ56i€üÒA†ÒwXF—ðÝV/$•¤ÜNan —é˜:#‰TJË?¡&Õ¢0ž¤Ê0g?”•ötáz÷xOn况‡òbë8^6:àWýÀÈ óèª$êéÖÝ »ò c“Úˆ-á‘L“_˜Gº/›çq­¹În­Œ\œ³á8Æëd ô€ òJÔus,¨é´š†¿°½”á~†µé.‡wðVP+ìʤ¶Ôϸ—©íØÊÒ]NÎq#ØÑ)qP‡‹c8•sà‡—’€½¡lÇ•PÃG*óôn Õó¤–2ï‚&A>4ð<î°ˆ ÈMGôp. ¥õÊ­wJãf}À) ¶jcìrRxŸXÊ*‹&H°á2 ƒ °(Ü’–ø㨚³Wkõ˜~â"½ûÊX†|÷n„Þ˜èÍÇ(NöÂQ|cùe-¼67¡Ѝ§v*( ¹ÕtáIg‚̇®ð˜ãC»¡”¥ãÆPüF¥ $‰×aå1v’0ÙB1*=ÜkÉCxjp^q3¹æ †‚2–ÊÉbÉ*ïñ•œÓÙ¤¹ì3ǨLÎ*ªÎÙ'$v©âRP: Om1†èçz WTÕྠŒÑ§<ý§ñ"Ä-‡a6]£Ô8–ÒýŽ?B(üO6㸥æâ#˜!áÉLŸ¬á'‘TBU¢R:(êvZÓ]"ÄŠŒ i“¼&ñ¹÷SBdâk»¦K„„á Œ¥PúMùð¤$ÊoH…‰xUý„Kt].ã4Ú¦óël’Agaâ¿Á’‰VI4u7EÈy¹©«Lé_,+ÅxW€£²GâcX‰í¡²“CnÀSU’º¨¥²™ÒH¸NqNtNb6h,À%-,¥´ÐßÓ ý êPœ,»¹f “Cu—z­2@ *ÜÁ±ÔÆ#Ü „È@ù†{t¶ÔÂ&¦±Æ À)Ʉђ=p <þ‹ÎmóFðo÷¤ ·!}\û#–„^5ò…d}mV¡XßZ£ò(ç‡}L¦;à8N…%æ:Zý&*QÕ­ŸáJ)"Åà"—à°«Â_Ø9ñ\Ò]_[o‚/•3WÃI3/ÑDü€·d´$âahAUà,'ÓKˆ€ôÏrºñ–RÆ4uQÖÒv+ZH½ä§þiOÖ…u*懲ŽCè#ÎçîFu¬f¼„ßpÉlËkà+ÝVItY c3Þá‹£ýÆA•JêèžæeçdÆ^Ð&\ i`¶…æ,œEùÕA~ŠçAK6ž$u$VÏb†ó´wÒ\jI&Ó$c±jm`†ŒƒKÐrã!ꉛ(‚ïËA>Œeå¢lãÌŽI6ç†e*Ø·Æ©Ìë­¼F©$åà‘ÌáºPÖybÌ‚ð /H )„ãp57–K˜&-©"Mæå’")0ÒÒ#¸ o!—Ü”‡v}g”Vqª 3SÃrp¥Ì]†IUá¼DJ~h‰›e1œ¡”,å%R ¢a}À6˜IºÉg™À# ¼ôR©>•HX íôB™È‘˜êÊFÊùe5U¨˜ÜÆ=0jcVjIï ƒyšoó{HRÍ‹ª'÷Ô‹Õ^ã9|”zü˜ûðmì‚Ëù³„ßÜYîa15Žfa’´ä×zWm°b€y“¼D?Ô¢D»§NL0k`CõSÒëe ‡ºhìÇt¸Ý^'¯e>Çÿ9­(«2©š*¿n#s©š ’Çþ²^ßÊÁYØ…›r.¾i¥»ú, ù˜ä•ìrR'B¬ô¥ 4¯÷ôi¾Ê0=ÆCaø[¾Á7¸N¨‚w”’‹!WTEÝ>mÆÐ•:&ýÑó"CCC"K‡Ý ”Ù˜êpŠ/yò‡­f ‰e”[¼Îs+ùGZ¨8š‡íIüJúò~ÚJ'Ü…y«”2>«·˜Y*àúSfÂ^èdšÚ?p÷²[q ÷µæÓ|k0܃ºœœ“}*Ôø¢¥°ØØÞ_ßvRp9®vO’nœD×ãìXêQ˜ zá •ûR9LcäU#¡‚SÜŽÑÆXNŸ  ªô:YfâN ‚NrMõ…|2Bu¹ß!=•Å9P*aSØJ~pcUKXëÌÝpçJ[ÿþËÞ›|áwo”µ%èœyÇ5ÛõÁjm¼vg³Ò%çõW³‹éq\šÓ{OêÚcôÅí˜ÛèC­©¹J©²R&«»>_ ¦Õ>¬?AOLÄFÎÔÞèø9ò‚®…å žµ&dÕ¶Jqœ”„,Vœû‹”îG:èo£zb Ò ä «•4ÐdVŒú–ªgV¿Ëy"RF™+­ÊF[þèšîžb¼šî¾î7ã‚o•v/’æþ—AwCg fSW_h/éhvpçð™ð\ wë­¸Ñíš­ïà0~íÏ£p[©Ï œ¿|ì”wrCE煡̽tÔµÞY¨*9U°“´ó9ðg`]Êú›$Ñ^«ziŠáø­TsëhW¸/&°×zãÚ«^s» ’ô.~.4â¦Î5.¬*ªsÆÐàÑ©7áÚ¶óÝóê÷gc µWœ;æAZjU¹­jqP”º´3ltd~W9Wéð2*V; |»’.&¿ð5ö/J¬lgÓwôò«òº¥û)ÚôDuQÃ&ÀP듯sÀÈ8h瓼žrÍôêÚ4W¹êÜNW¥Fj ½Ù\lNV¯ø½ðyìFׇ²â½IÃŸâ­æuÙ¢ÙF ñuá\bÜV• »,|†|¸Q"ôou¶©|ª£*Dd•‹¬Z®NAõÜéÜ[¤6Åè¤ ‰“zñ¿ö ng.5W¹7©,ª‚ùÉ¿%°Å? Êgÿy‹õd\KWL†¸ÄéAÙÔh e’•Ø_ï–>įœô2,)‰× 3îêbÈßò 2Q@ß‘x ’`4©¼ËlˆO¨„3Ôʺ ÐÌúÏhžL™°…<ÑbË×'3«yW}€ÕF¬÷¢·¸ë¯”ëaîûž×n |Òåí>Ž’ŸþÂÒ§‰Êx( ~K4®§¢~H<§¢®’J4„Ãmµ›Kƒ0 V95º|ê#’þ¢?r}ƒ0#|´æ[᪕óɉVE¸¯~D³¡ o3OÈm«Ÿ™ŠòQÞ“RÜ›GLý<¤³p´ñKëPcWå~j¡Pð\zñ]ïÈ>c-”á‰TÓÃUìq5þ-mÔ~U ¯P„Âqú-Ir÷ãchÅ›¡!Ì„ì¨ð U0;©Nªœ,¢!x'ðØ©"÷tCíá f„Ñ×Èˬ§Â#½%ÏaUæùpE†`v\*aˆÓK?à+·zn^Âe0”§ÞTAâa¨Œd~PW¼ ‰1ˆcx¿°ï@eìD ¨-Îg/ŽÇx³³d”uTW7ã;T›"1ƒQÆÀ1γ¨°N…e.%É&дVÁ (+%±\ç\ÒÎRvø,çðŽ”O²^ÚÈu%õ"¸.ä ”ã.fOc4}¡âÎ%'kŒ‡FMjÉ[åÂ’Ð ^Q&uX'è:bÃAnJ­À’ŽpY¤MTQ K.(ˆ»Ð¦Dšˆçñ0ìjÁ3é-ßÄ#a¼J½ÀÔÎɨ à]Õ6ɬŸB3¨)}TAúMýaj  ³rZô«TpŽ:ÂßÐG*r5®Ïûa|WO…õNØ ý¬žÐI>:Ô [Û›$•<À>¤÷·è"wâ—æKeaY¢kªFp†«¥pXÊKÚaœ–‡¡_2;±á1ÖèNñ•§{º•élJŒ´CÖ[;­"I÷à>aauÚsiÚ‡´ùöúãƒÏ B«Êù'agŸöqß5¾ã=ª„-h;TâøNž©|v§,(l‚ =0¯KoeÔTÓi¥Â ÈЂT#=Sñ:˜Boäƒ4„W¶‡Æ`>û«Õ^ëõº(ávÉ'Ãð¸òÂ2úG?Ò;¸˜hzìt5QF3žgë2ÔM^ áNZM%ÌŽœ]·¦ÑôN-•Ý’A8_uN”óê¾Tà0V–pÑœ(ï1n@VÄKpVå¼ËùMe‘ýÆO {¨?Op^ß”pOAÏbs£¯QX’AFÕt]´Ïp%ñs{®‹Œ©ª§QÑøEkh‡* Íñ½Äzð ʪ ðÚfÝÒ~æŸãŒå>í/ä œ·ë{ò«p×ìÔŽnFýÌÆüŒ–âÿ”×øBóÝã ÌŒÌ!SY<õRB9=ï'­ »¸’‚ß«†ÔÎßøà±4W¦ë6)Wé%Ý×7¬V ÕÆHíº ¶¿‰1Á]çU8B%Ï-„‹°žÛ¨,ªuE¸¹`.)æ<÷þéœÔ…Œ€õÃ,èT•.z«¯¤oSÚ<è¬ë<Ü/0ßääÉŸ6áw¢ÁŸ`ŽÕ*°>èÍ!,îs©Â2À~éÎ@ÏC6enèý*çš´Óf,y#[óÅ˯Œ¸”vEÖ­ásÒ&¦ÿ2:rbºÖê_µ,(»â/é(îyœôXq‚U0$mDšÌ—"ËGFgQ‘Ãû¦ºÜ="0úW‡ˆÛÑch µÄ sFÈ~ã˜^+Å‚•-þ6Ž•\0¥Kâşג~yÓÿ õžåúº‘µ/$»;(?õÁná½B,#ت¦bÌ6®{ôÄìh¼äXþŸþŸnïÜ |„bas˜ãjÔÇøFã+_ågÒØy£Öa~a<‘œª…ñ ž¨'A³i—ìöª¶ôŸû¬»·QÖ¸Bÿà¬G38àïèâÉâ| d œò-ð¥œÑœPýŸŠ‚YøžÖIsÃGƒ±ƒ;nì©Àl¼Ñ.ge§À$þC–s’GK1#•L‡»ÖŸ¸@WÁÑø‡ã‘lfõ <”Oë}°¼º‘Œ?y?fEÒ]èθšjEä\èèzb´—òîÛª“Ñ6¤¼é·rDœ ºâÚâ v=6ÈŽÕQøÖ>ÃÛ).ëÔµ3&¼Á YÕl¢[¨F0^—Ô É/ʆÚy‚ÍqsÀ 0^'à[: Ù-iyƒ½ÞI븿þ¡‹8åd˜¾¦¹ñ„9EFÓ/tãR¬¡ `õ60|ä¦ÚË­îNwç°‡:³¹£/›½ÀèHv ¸wé²ú•¢Ûð ÒµtSh"ÙÁÀž2³ €­ÁÁú’AÅJ<\§ÇPã8ˆ‡Sa<,ÛЀâ†Î2"íð¶V?1S©ZÔ’žªšüŠwQA,…€% ¦,ÒO $þÇuŠü’ïqÝ¥âXTGÈ(X&‚Íd©Xò‡¨ÜTS$=„ß2*Kw'#GÛ› -t6àZX­×ñm8 _/tUz«/‹RѲ ÛÐK¾…õ!§ÜÂÃú"”ƒáÎt˜…YxÇ1ëÖØÞsi˱p;©\ºŠ¼æpNóXyŠ[±>.ƒ¯¼þ„º"ßáWÆ™ë¤RÈ’yô7ÇêK2Ö°dvJjJ9tK,ø^¯p>%¥ÒDu¢à2ž“ÿÁêÃC¥)3vÃCމ`–^'í \Î@]ø €ÃàFÑž£ÍÁø”©úrDÝ0>Ryp-žÁ™´I­…žP¶ñ`Ú„…îjÓÿ ‚À¸².Àçœ{ß 5©R§¶±õ¦¶m;µm»Ý­m[Ûn·©SÇÉ̼÷î=ÿ÷Q ‚WØ®á!zLÿáXÅõ°5åì?µÎëàÐ[¬5Øoó¨¯êó[‘K7€I²´®‰ÏÀÀ³"×ñPø K±̰.QuºgÿôõrÌN;äž¡)®RéÓ¹â\Œ b1«àYõ(m`†¶!k\¹2¦DXaœ]‡Õd#‘¾q´½K-墯b$•Æ/2FTu\ƾ¼Ý¸™ ÒøÀ6”¤‹1ŸA_è t,Æw8³Õ\»à/ž-ñœ½CÐùíÇ"Ž.ÂT£µh‰ÄkZÊ'è* Ä‹:÷T/ÅCÙ‹—s ”²¢Ì¿­cæC«¨µŒá1d¥-bEˆ †Gá Åà%õÆãeb(6Çi˜}2†Gò^ê ¡%ìЯù4ÓïÌ$±]¹Ó:‰hžèO'%<ÕÑb«ùIÛ/ãÚÇÏðßJ?;å­ï¹·´kÿá ¢»ÚÉÍä~L[Eð.¬ úâ'}ÃøËh/?µ2‰lTU·1êRMÜMWU'©„‘/¨¤ö`¢ã‡¿€Êì;aÓÍí 뉭í6þê‰Øè¿¡fóa*x&ë`µ”P4¥“~ªá˜®]àÜÀˆ,%Ò— ¼>80(¨t`# €ŒÕ¢†±Û“à.ìzè¶<Å]ÝÈ!rÁM=E5ãµ*ÌÌÎÍìs&™W½3㻪åþ¤Ä¶`›Ii×ýW­VNó…§.ã?ðZ¾MˆMª‘¼2.S\ Å”|ɵyUR“´(oLâи A‰1ÉeÓþú“_#)Nºö†ÜCå£À{jš±&¸xhö 8 ëÉÈÙ6é;i­Òº«¡ImÌ­ö{»€ÿ4O •ÚóÍçþsv”É«­Fæ÷ ¸›ÚŠfÉC·åÇlìÆu©…m©ãú: â«"ƒ,olr‡{ÞX•üy|!àÔ!†²aY£9Dª8¯××7%ÖÛÀȨrÂ7ÿ n ýwè·ó®Çt4Ö]Å?†ažøó$>Úf¼Ý‘·Ø ´Âu|†—’‹ËRr+ø\ÍÜï¨^jcQLÌ/ ¡%ôà"‰€]¡¾Å.úÿv´*7=é=äfÇTº Åð¨ÕÄ÷ÚÌžRÄÚ4m¬¯¼ÏJŠò%ù[d´êÒø”þÆM¸Wfä³ÐÌYXgÂÌœ¢GAÝQ¬¥…ü/å¿tqì «ìuò2ÖÆ]Ü^W³¿è¼ª0ïÐ+ù‡joQñ/»½N IWð _ù0;‘•é¶Q8|¹Ûçè™þy¦8Ïcg qÐD 8‹ ?Ã^‘OÏVåÄpšà¨öø¦žH¾—²Ü²©{ÊÃÄ·©=¬®¾Ez6ÜÖGäOuˆ·ŠQ²>Õ2jÃ>˜n­âS¼Z­æ‚¢¨ª›òmnñôÎøÆÇi¶1W´AÁ=àœ·6Ám^#VâRÚ@Ï`v€ü°LŒ„×”‹ÖÁ#x€Å͉<“¯êù¶¡s,å̰ÝSSž€öÞ="?ý«~ÀHç¾Ü,ØåB1 wBE`8¼äÁÜNÞ‡˜@×` ä­˜£8æâS®O[EVôó¾ Õ}[„›X£øFó.}”KòuOW«D ” ø6µ¥Ñ¼•+_òuÌn.¾âEÑ ŠÁJºÍËx œã›pR!T£š´ss^ îÊÕt6 ½ø üoñ>†‰|´ÚÁ(LÁœÈgà,×ÛЕ³Ázüy¸ ´äí:wà Q½p'aNqæƒ Ë_â*Òëø1ü…Ca8üä³0WŠxº#Æ@޵–“—ØG¹>æAº*ަR8×BèŒ`"v†p†Ò°ø”îBé’¹ª}ŒÏ`ÕžŠÝðL±Tg€0íé3µ‡ƒ:3,¥0/ãêà¶6âd<‡UE²ÜAÿÃǰ¿ê|*®ùdðeõ?芼²óm,‚uxßW«à ^×UEaJÏñ,„ÆÀr#æÔ#¸ß‚ÿD8ûõ9]Å*(+a'>¦³¨=ÜVYö èKOô ͦádèCW¡Ô¦xˆƒåô/&Ã^„ƒ ŠrF*Gd1žú?5Sùýt×èj?èFàn®¡©ôôQ4†PSÏSµÄ¨&ß IDATc¿£¤øÏuÒ9ÑXäê&ÒS0Ñûp%„ù¦ÓL†hg«€¢à°ÏrkµÄÚÆ˜ O¹3„C0WÆOtÎÑ=y2ÜC‹ã{Ø ó #dó½§–üÁ|ËÁ©‡éʺ=Ÿ…¶p†Ocg|Å93Ý‚¢pUÿÖ›íñö =S4ÂDRPQ (§·Á3<Œ‡©'Ád®%†Ódœ¨ëó7]Gdå;<–⼊Sq#ob'¬Ô¼‘;Ã6½_Õ€EpO­‡­FUÑEøq³¶uy ²Šr2ÁuH^I+ã;ïËç?—­ºê¥œá¢)< *oÿ˹pôäûF)9‡zsq]I·¾Øƒé âpÑŽåiìEÿ©žtŽŸsð˜#–@Gê ì –ð­I>™ü0iöv?¦lâÿœo¸ƒèC]°±Õ•³Šáº1ö¥œŽ¯Æ*˜Ý¨„ü(î(/í¦Ñ|–.ÎuWMÍ\ƳWÚ°4Ó[T½UÓÄ[#šNá|¼ýÌÏÜßÿήe•Õ³ùˆŠ6Ÿ«ñ*{JXÚë•·š§‡c¦³®p·r46¸sºFñ¢‘'å¶ïŒLñ§žóódkîæ ÷f1_ûîÚ>GK1ËñÕ•{ÂMg6™é`øËp'Í—¨„^,fâçm÷`náí•8ôçpÿî„üñq\!Ù[ڿשéí1üwÆ“bF¨O4Vô£ÝÖµ—§&%žMÉ g MuºÎ»¥ãÁ¿tŒ¾ƒ^Xc,càº1ZY××>™Šc>‡¥…ò™‹Mð6‰¿d®ó÷á¡Î7!+]«‘\‹ÓÂ\åpG›ÔK U}Œë»jB*ÓU€½Í¬ÿ¶²Z­1½Ì„ƒø |§.¸kÀn#7`:£%¹fâ7ÏÛ)¢i'Ý…fª¼Šƒ¬ö®tÎ6ÆtGIWwc¥+Î1LxUŠf¯0§î„-漤){»¥VOȤ ©qÎ [Ê"ІÒ&èCá²'…U"Cµ^„À$Ý:é«X—‚)DMÓoù§*Íï²þÁÙx|Ø‹þf‹ÿp ®€Uif´a66‹“eQëxeï×Õñ8# P%Óñ;®§<Æ\û®-y!dà>jÎÌá Ö5¤€¾˜; «ú_è²Ñ'$ʼnitÝ÷Ag‚xOuãnЕVâI¬Gußx„ú"ZA;FŠEi»¨¥÷óy~ÄôAíS‹¡$  "á ÆÐ#hÏÏ!¬R:‚bG¨¡NÈK´¢èüÖ©PœòC¼eì?üD<æPÜ«¶söÈóü?= jK!?Ƽ˜ëñêJû 2WUs9H-„åX{ñ=þ×E4^¢Ý|‚×saꋉ*ÓDÊÍS!ŠVÂ%ØM ˸5EÓ|C¬Ê©puÿƒî쇞øFÂA®ûa &ñ0˜Ïµìéh$»q&w†Oö^˜Ê…ø WÃ*A¢©˜A-Sdm:ˆŸyt¶hµQðßü!`†^e×ãäC¡ôHýI?1ÁZh¦«ð4ÇñØFÑ ŽâM¸Yl&–IœÌ£¸¼…(ÜÉõ –—óieÇ&°Èž#MxÇ[9J⿺ >?ðüÇÓà´ÂáPY;h?=†º‚ÏtEÜ¥àUäÊà†Zê]Ú;Y[z%Þâöê_Ç ™ŒôÀÐÈ\-ÁP+  øÌ2œ^yÅ~QŸvb9ôà",¹' 8SŽ‹XQ¬Š®ƒaØŸ®A7=ƺh-3n9Üÿ©ãVsõçמ„Aø…wñxF‡4l÷ >W„ô°KéÿÁUm…@C^í©iÔ¤ê†e©!߯;Pêa>¨Oú…(ê@]x ¨„9ø_€û0_Â:¸Š!òè–:X…SW ‡ÓD‘›6ò^UBá&—¯pƒí2¹£]W•¢^t_í„=¢­s8\Å<ŽºlÇn¢¼‚ͺ´Æ…xÚˆº8G?çÜʉ¼ZÀ¿+i‚h(¯™ëÀ0ì¥P-¢œGdg!Ú9Z©pæÀÌ4"Ðmgµƒ}Åx(Íåù¼Ê“E à(p@ š •°cõ6^^…|ºqfU è9ÎÅ~Üs&ƒd6YE6ƪ±ðA²®":Ð[ŒƒŠ¼„ʦHÿ__+Åê!Âiõ°KêAƒ'ÅQg±€®MxŠïóN'GÒbLäÁ|X¿Ö™8J‹ßÎöâ^`S²Ü­0Sê)»–5C·.;£œe\¯ÓúŠÝbŒµÓ› #|ái™­gÎ9FwÏKs¾½Ø*|Ô‘z8¤”³åpås?¢‡²5t5SìD»zb¼÷­w™ÞfÓç0›È.ë¸ï„LËìøâÉä™pÎÓ%ð¹se7]£ì‰þ)4Wç6=´ ªê_\Ò‡Ô^‰Ùg~+”Z#yI\¼}D·–ÄÁt*­ÞÔ×Ô#ú…¯Ô+«Nýú.—3ÅI±Î%zÓg l…M¹ 0PÙ¨2¤ Ñÿ°¶:èöfwóˆú/¸mšJ…`¸]Eµ”ÕG¥´³;Šû<8mftžM^c¡ºq\l3¦ÈK\A=ƒ½pc€²¨¨^毤«™-ÈÍYÅŽP©"³}ké,¾8ÎgW­Ì3ê)?³cù9øt $Ñf̆›_²¶ˆsö4*Ê—žÆŽxçqˆ'È)þ¦~yÒ^¦kê'©yͺÞm¾bþ•v Ì¥î%ä$·ÑAßÂ'X‘kó88Ì!ö ˜ŠŠ¿`?hB7鎔 ÷u꡾Á{¹þ U8ß@²þBÙð°}A}Ñ–ÝY÷WùìÔór8e)I4À<0Çøf´fiÄ‹qPË%ù˜h/ØZ µð1¦ªŠú‘0}¹½õ÷V÷,n»‘:=鞟r?µaÒwk•Õ8µ™c-íS]ti|ó[ë¡(v‘i(öunæ8AÕÆ«ðÛÀ˼›ërAN€‹2ŢsÜ»ã>n‡S ®†{ì«*FC>ã™boW'â9ôƒP芤²èP9ÌßÒžg_ ±×ÿÚP,äÂäÿ dW•U´ÕÑn Þ`‚3üøÿáu0Y4VQº%` ¶ÅjÈ…QпBmS<™t5(…¸&c?»œÚ¨ƒd_ÃkÄB(ŒG¡Ü‚¬­Oãh¯Ó ›>ýLƒž p}†&n4€v°ŸæAAöÐ jO¶.‹°¶}Rù2]åW)Óëà¡\X@-¼‰}y T†¼P‚ð®hkõ#žƒ àïçCp\º#‡+ПÏÓf Ärâ]J}Õ«±Áù| &Á6à 0ܸ‰Âx|¢‡Ó5jÌxL†FüvƒNøŠáB8à ¸¯¼ƒ¡‘Z¯g«Õ\—ßê@ØÏÜ‹t)¸#¦¢›¾R¥‹*˜Ë[£h’‰³¡³¾Ïãè-,¢TžÇ9©2>ÀâØ²€Sà¿ÅpêMA &©èU1ì…l¨i!Taîke-(@õgxß`fƒ6j/Õ3é,E«ò¾Ì¤"UÝǪÄ)üÀ. ì_º1Œ") âv8+À þÄnÁÜ#ª×üòãéèt·L˜‰Ve „(3‰séñrì‘ÔK¢0Î,ŠÑ3¸ÌèD@´ç»Úëê0˜.]ä}ƒ!9EUçÃV[¥2YûSÖƒG¿2Ëq^ÀÓô|ö]Ì åa$}£ôú¹q0îW x¥ÙÅì ™ ‡»•0æs *²b$ž¤ÌX+Au:Kè.«Ãè)|ÅQº‹ž h?b’Ϩ4€4®ÃAöTf>(Ò#x¥÷Rœ¬ ÷žK%ä$×ö«Wþ]ø@ä—sôRÊŒD=ùßr*à[°ëÓw àÆÜ•BtG‘A0“8†ÊÚYT~©6ézàšÆÐj˜§þ¦ÚlR:Ç©…y¡~P/#(¬‚ñTþˆ Ty]–ÅÖþœvÎ?ßîGƒqVã|Ü«)z7TÃ9"“8L7¸ƒÊ+Âÿ`­k´d™ýä+AµÄ;Î$Úe¼–{‚ ‡:þÒvzñƒÛvÕÌú`M·'ú¢Ì\Æuç-OV;ËÕ³8’õì ƒEUÜ%F¢GGèH½X?tÎs¦Q¢á%§±Øïñ¹t;ŒÃj©1{:¾%?‡{ê þÔo=¹ÅRù·žâÜ&ºjÁ~ëMÊa—ǵ‚~ÈOÆ}m97/àCÈYÏVQÉ.¨«ð¨´§–ÃÖŽ_ÎwÎq0Ô¸LG>vòu2.H3ÉþÀgy¾}Q_— “mŠeØÎ…3bìÌùÅ}q…óÉfÙO;ô ÏœîcHߌm½Ú;#~¿þúða+ÿ.UºÅ•åáÂ``^n ±6g…²º¢•èØê›í;âï§×êƒÑ[0õµ¯¿U9¹Š»TÐ2³·Y;d“!¡ ÷ï”^©^«¹nû»›ª¢':‰õžrîÑz¡û·kGÀPWu÷AÈîþÂÑIúìŸê5£t´CU5ŸúëªÚþ'þNjÿá,\I>’Ù¨•øC±dä‘xšû‘ã^ssÍ•K݆˦uŽVðæú îã8}Ðz¦öàw¼ƒKõ*"×ÛMy¿1BÄŠVb.œÄáú3ž…ö\þ…Zú¬‡ÖzÌ£ŽtÜ’'ÀeX ñˆÌ†=©f…é4„óp>ÜÃøº¾ÕH¼!†òª+¾Ã UÐVN¸MÖæµòÍLÿ>¸¯«Xh‹àãûƒÊ¸kìM‹0X-Í2vC#SÊ´ #:qXBƒT3¡Mr{øÿÊ;Çc}2ë[­Ùj’2Ä c©±B¼àŒÎ‚‰cáÜ ñ!^eÈE'©¾Åõê;äP¶ý?šã´_7v|Ç ð–~`.QDì¦çü ¶é’j>Ö 4‘›ˆæc,÷ÂʘķíÌ:Dvãð¯˜mü%ñg( 3ÌõHX“ÞQ•.áÅ–"Ôg•‘ú˜z&“¨.\Úž­!•OxtwmáèÍ]uFî£Ê@VªM Ù1TA!i=°¿óY¾¢wŠutš–è¡ZÔ…ÔêK•°žFîÀûqƈ™ØÖaOžËðW…ÖbGAsŒb„;*ÿä:ˆs f… ý„¨"'òCÈÈ!pÃ~ë"«ªS꣮H}±•è͵¡.§1´ ÃzŸæ<ðKßãå\‰ªpè̯Ä^ÜÛÔ6¾kà=†üx‰¢¡*Wf·š‡°-ø,ýN’#ÐA÷ô+|(Šñf^Š¡zU«ˆíÜ¢`¼‡)XgC0¾£[œ ßS,Ýu¨“X.Æ@CpâY½ ²r´5A•±"ô§6z&OV$ÀFœ Ù¸-¼„Éz‰nI…ñ…ˆáæK!õƒh(Hì/º¸ýŽÒ<È «ðþBb3þ…±æG½.[£áÀÎÀUa"òù»ò#¼Æ1°ÔxamUÕ0+Ô©¡±@—“pdäüz='ãsümµÏcM~ÇE¸< …rÄ«! :òj©¶ËÙÆmG„ü±7c×ð5»†g3&‰Í´žNÙŸ}üÝ‘x¶^¼•zF²rÌ‘¯Â§…T5B+»£U©Ÿ¶•I)i±oŠgàÔq8Æmc=UW©¼û«¯P€Îsnîí¶xÿÁQXÞ‡Ô0^°‹?ÐIQwÛ]àžÖ·ñU!—6sÐ5ìæÍ y´ËÙ]½S©?ü]÷ é-ÇêþöwÙÅ:¤ÖÃp™æ˜©ëaº,„cg8%S¸ ›Ð»`ÈÁ' }ç3ôY|åmv^ý‰¶À5c\§®²Œ†ªÜr`V‡:«¤5ß)œƒ±‡Ê®ŸØ¡XY,vÙ†%t+ßWÓÒ-q˜CD}æÇÞÈ´#fEo¡´ \#Íï[l÷tœò5s¼/œÏ=2`‰±›šà?â\€çð_ª)ºãÝÜa:âM™ [;Ëé…ê3Ÿ²úù”¿¢ë¶D뙨PžNÎôAé`²¬â.æÍáŸFÇÄߨ+a˜fÿLëƒe8eu¿t ¸ëYgμǬaÖ<Ãàìå.nP_£æn†“y8ùCˆºöDÞo„àE,ƒ‹h±Èn—¶+ñHÙÝFTúÊÎ=îûá•<ÕÜ«-—'0Þ]Û±Å`K±Áó„r‹¸]¦vÊŸ¶'e­m¥ÕûëÛ›:âwXÜîø‘¿ÃÍM‰Yc3[mãÆ·µ—ƒ‹&°O²\æï«4Ø)ƒR,yÿ÷ŠÄ 4âOï_1ÞŒ¿î~ýÇWáë¡ïé`QrÙ´óvE¬¦[Å,QXtp>pt ¼ä©ð:Ô’,¥\5½µ ?4¶ƒq ±}n1éì´O¥@3,…u{5XŒµ¯©£Ž¯òµqØ 7aúË×PöVòŽ×MÓ†sýD?Ÿè;-•‡ÄkÚ„ÊCùDQñIdC%òF°„S/Ì«×s8\³—©êvyµ‹fñ•—Þck@z‹/¹5‚":sÂoØÊø]梸Š|$&✡´hÁeð§·+ú¹CB\}<û<Üœáb£8B’·ü.ßMô«Ò:—Õ"µEšSuH’ËŠ°'é¾7¼†›ûŒm²ÜŸ°NñyiŒ‡9¼ÙÙ‰_èg¸ºÚ!›êfæç…öfó!ÖP-x¢±VUƒ¦ÆµV[xÚÃ,¼ùèÌ¡>xŽwÓM8Æ.ÌÀo±Žo…½ òÙiº& ã¶üqIßäÇFe܆µ±œ¨'B ñ“¶ŠuýÕÜ >ÉhQ1*‚vg‘›òd¬ ¹ñ.ÌÓ0Hmåª:ærµŒáIN/ZãȤðwu”Oq½J†ìj,7À»X_WÔw gò|˜Êa°~ µ Œ}zÀ"}Mÿ…u §á#?‚BXƒWê= &KúÃOÔXô³‰+°¾ÃzøÄßÄn äJöè ò¤Ê¬JâT¢|â3<¤îdëûx€ÞÁ¼íX§ÿ`wã…Ú­ßËozŽ2é©8 Íø%§ñœ~à#h‹å¡.ÆÜ—âh=„¾Ác;u‡OV$þOgV¯õûo¾¥ˆÏ’O¿ÃÔ•sÓP\a?g|S…a½Œó@fV>F%¬ ØU TϹ„›ÙášÖh¾Ï—9§iØøˆøKŸq>7Ú¢ÓñÏèlz½>¯Vñu\GÑ|(¶$ü€ùpÐ1„Ó`8±-äÒºžB{¨Mq` Q1ÈíÞïÊî|pXp ~Á›"–_è{\ž³Éb8ýÃäjQKÌ¢/ô„#à7\PY`%vדdFYWnÕ£u5ªCß Zˆ,°œÒU¬ÅÓ1†Â5\ÊÛa0Ô㡘j}Òà Ä∕ô «0ænz mƒá€åDsªB“p‹ÙTþ”®ì´_èÑ*«tWžµÄ­€ ·2ÂHO¯i­Â)â%¦ÊGâoüNcdgyÚèÀQôZ‚¢ÜAäOd´ó€ó'2’!öéc`Ã+{‚öqc-y½žiÌrUr‡É CÃí´ÖñÔŒ±*ئµÙ\n†Æ·MZ•Ÿp6¹yb”.iÛ}_¼ƒÓÊXUUœÿ«yƒºëó·|%Âè'ŸQ>»ƒyÚÇ¿ÙÎb·ñç0VŠ©ØÀ¨$Îàf¹ŸvÛÝd)#©Ã|Êlèö[f/ÈûNr95ʹÎ1Ÿ~=Èÿèñ¶ ýüæt«jœæüöë„ht­NlÙɆk£&ß´û¥­ÿÙï÷_êþ³ÙÚ×[,íxiˆZÍya¢f×0µýÒòúZ$ßÒƒÍí©…}žÔ¤Ô¤”˜¿·‡µÜ›pÀÜ™ÖöÛÁä I_““·ÆwOlÿôÇ¢äiW|è™:,;9Â_ 2¦™¡€­œ:ÌrïrÕ”©Á»œóÒú9-wBpç’Œ²¤7×QFgGhJ¿¹.`oQÃUië šÁ‹`}À™FYÇHk,·ò1BÏïûºÌì÷!þTJv«¶½I]Oîž©Ž¡FŽ q醅Äí ®ü!p Wä#ú‹ýÕÜk¤=öS%w¥`êbµÜÌ•8ÅÌaY×E;ѧÁù ÜœQ‡IlCŽf‡nÌu +Кÿé~^°[ Éç ˆòc0Ī<‘“¬GX¶p5}Vë?V¤:nÿOÕSõ"Gzëø «d-zÎï<]d«—#dÎØ7}Š;ƒ«l!nëHÕˆ7øzû\q½’g¡7®ybêäké;nÖK^ã­•àW=t[(Iö~qËòAvC9c BåHÂÜ0[ÄÓUUtïIâœnCu›áežÏ.HÀ•±)4à•ÍÕt$݉èŒÂòz $P7^ Õp.àaú&ð7n¤s‰·òã<߀`ѻҗÎÒ%ù„WdÇœ4ET’º0å hØÝ8ž‰Ü‹T¨Èc9 ÜÎá¤B7<ÈÃuz—¹žÅhÊ­#ug,Ž è¨ê3Èä0õšƒxlÂiv.’˜Î?ZLÄgV ÒËìÅËa9á½\˜¶ÐÑUÇëz´Ã¢?ëaÆe ‡²­5\E¬äèÓÈ+¯ªÜ:«(‚×hžšK3±‰YîC˜'qL°ŸÒ`슯qÔ ›¨¥-SÒÿqhcGÄðEîŠTÃUˆà÷`bKÞ'Câw™ÿ9§BÑßÿå÷Æ?M¿ÔúÖÄñ2iŠzHÉëLßd+ñM–QØAh|Œ™!Åx"†8s?¾DeitÁ¦p… 樃š\â"äa?ÄÐ!}ŒSì¡b–2„E»½‰Ð{«ÍØH$¦Ðqêè¸mgQ7w¸Ÿ¡×º3„Án=˜á{.LJ©—Žæ\pÀ A~ç¯ X„«è ¸IeÔï¡>†»¸@7ãLŽ{)#±ˆG}h,qmØ‘X˜Zꪆ븙¼†íµm”ÃMg`ˆ{zrùà›î[®Ç£¯+†2@—¥ŒØÑ. Ìg…)Ø\Ìkðè"ßãRHµäk„·»9ÝáûW÷Ô^;|—è´øåÀ ˜_4°ï+‡~À°LD—¸IqžÖYC¿M )”î…øa44ê;²É&|Z®ù±„꥞ùþñþñ—ñnôS_åÿIk7ü ¿–Üêê‹þ—ÔAä³WXõ­zojoßÔb¾Ó¾#fN#½0•Žl²V“ùÅbrÒe½Ågv´³ú;Ð!~ KÕ/›C^‡í"ve­í z&ÿöM´—B}Ç ×ô€áîÅF ÝØóÑ)¼Ò~ϵtšíßã¾ëñë~6K^‘ü0eŽòQ>l§~C0½´ãU ïu¦ê €±©¯ÓÖø?9˱­K‹¦j†•AÚÒÎùÒ¥Žƒæe«ÓcOð%b+XˆÙ­Œª—^içv6°ÿæçr}ÀqÃC¡?==ž…vHœ\^¸çsƸŸþ—48d¼uÀÕ;GNX+¤»\î:lgUoý&çJ¢^ª¯àYí[V~³ï‚ÕÍò™ý´Ƙi«˜ŒëÌÆ².S#)7ï¢ÑX[ Æ{²»#Ûf Èè+—Ê~¦0{èДÞ+z®ïº·¨}^·œö3“*Á·ø Þ !0³á8¾b3Ôã_ZBWL¶ pà³ 8àvOê¹ì/<ôV”Á©² ¤if‚³pVGÂ81b+®cäê¹ IDATË=t ÊÄká±ÃpÆó|ÑÎO¢¢*ƒ^Çk§ÐÃÒË`û¶;ƒã·Pr^å×ðAý²MýÕ,©»¥fÿ¤‡ÇÝJ¸†þh{£1À×Iý/u§®Ë-¡9WÒ?ÙÏñ*·ãá"Ò‰­JÂgÞÂçð¼nŽ· CS|'Âßz%–Cx íø¬£¡\åÅyķ۫¸ÃO8©Ï±ÐÝp,Ö±k,ÃV˜ ZÈÙÔÞÑdËNœ…·ð•¾@71üÑ_¸:䦰€Ï@)èȰ4ÞÂï°7‰.4à&Îç!UŸS³ä}Iïƒò•@ÿÆLx@Õã½ø÷ÁFxHgôÌ¡Ø[rCØÊ£õžÎ :»ã,ŒÔ‹Yà *µ‰ #€Ò\öa:,áxM¼…éú§>¦*IY`œAìƒmb5·â/vD#toÞÅ%a´. `3ƒOPNçÆŸ\˜ÆÒ{¼?1“«5^SÍÅ ©ñ/¶7ÒyÇDñÇŠrQì§p\¦‰Úâƒø[÷ÂkøïQ¥Vè«ú-猸ûáqQEëâüƒg¯EEÑÀž§£t8¬€c« h7…P?*‘`ÁK(M-¥›G)É»Ø`¯¦3xLµ¦ÁØÚS ¢ÞÍßù¦Ø¨³óE9„VPCŠÅ,pD|´Ùn¤¦Ùt¸Þ¡×ðå´ì ÆûÔj¹”>È+h¿<`Nr”Ç¡ªGâWs‹d‘l¿Õwðµ\Gyœ(^nGàu˜¢s`ߢxÿÈø/ü%ítØÇ_=?nú±Î¸“ûioÐy#ŠÒf‰°n…Î ˜+¡NXmt ÚøÎ•ÝUÇ5•Ûó0J„ÈŽ 6ÉâP”GÒNl†å!Þþ¦‡ˆ,Ô…’d5½™Ërí ]vKê _ð1Äèpµ„ÚCfèƒé¹ÝZ‡ó˜Ìá\ÃmðcEêh·º¤‹;¶©ß¼OÒ.аÀ¶ìÖK±â}‚dÇ•¨]UHRšÚÍãõ~7PËŽÐ[WÍŒÂb–˜ñƒª`—ã8|…ÿÃjîøäxËâ+Ì/Ä5q\mƒZìðžËá?¥gr{{R+\+zùÇÆ_àòáé3¤4ºô6ÄXILÁÈ¥>ÉçTÃöˆ XG¼Â‰°ÍȈE¸¶#·w”U ·¥u×s`j&û–œÁO`usŒ¦Cꦫ51œÕ[Œ†¸†*R6‡IœFŒ®˜ ÅÜ/œët JÛýá¼Þ^d­1泫ýŸõÖŽçâbw¥Nú²˜Ä-“ѦÊãnÊ%à?Þh–gÀM—Q×ùÓ?ÉoÚ„€BÖQ]”$öéBðN¯…*Vå×ËíƒzžýG¾QãÕYÈæìã>íhèü[¤ª%¬Zæ¿jPàZm‹ßÆ'ó¨ë€3_RF1…fHß”Ëqý‘zžµÉW(!wR¿_J¤¼Ø cÏ‚ æ'RŠþÞñýEj­¤*)KºÚ鳯í ûr†|à^§YÖw-2¾ÓpŸÓÿÀ~ uxPZûŽ £Nàç.bQLöÑâ ´+h· p·r¶p~ÿR ±J„p3m{6Êÿ©Fž,߃î³ùÂÇë—ÆçÌk_±/¸”™]„Zþãæ]] OÑHárÐ[4Ñ V zÊh-¶R¡²Ò*‘Oò,ÅG¸4…±º™]Æ8Šajµ˜Ž“¡/½ƒñØ^Ž?Ä~ã¼ÜIìDõˆ¿ë*Ǫé¯è;ê-äk뽚rÛ­ô½–Ò\ý]ÍÖDαëÑ#‡ð3¶S­°TñMÕG9œ°©^ÆU97Òc¬$žaU  ܜ :6зõC˜,Ð&˱˜„Å 7h2ÕÀHš!ƒô\j©«‹ÇÏÕÐCµÜ½ƒåvèg|“· q\]³–™ÛN'†Ù‡ãÎ$Œ´z¥ì²žùÛc«ºy‡ïé~°Ã¨J'>èÊ¿ø¡^£ˆ#„m|âÉ€ÃìyÜVçT(¨• „ÒŽ&ún0®ÂÜä¬&ºc+™%tÕÆrtÞ,¦Š©ŸVm<ëp·êÃÅ(³(DÓè7Ý ·"NoÑ›µà8~ÀáÌù¬#Pgñx —ø ÞÁ“U¡§Ú)®ÂNœ$¦ã(}†[ƒ«BFÞC…)Wƒú–|#òiÂx’Þ­svw,dâEr–~)<о`%mÁ|þÔÇÊÈYdp1j÷·ÿ§Öè•F],&rÙýÔxÈ£¸!þÄF´{Ãz, Å bàG@v µ!+ŸÍ3x_¢D,“°Æò.~¬Wpð\>Âô Ns#(Ç)¸‰ÎÂq’P‰gC] *Ãs<‰cÄ9ʇÄ2î —Åa¸•áo¸6פAø•×À3½ /ÐOôóHÐø€mœÁ-ñ4E𺋳ñno'軘&ÃR8IK¹=ΧLÆ/,£G‘ ‘ü?ÍÁTKßç~ð—pm’À]y*ÔDŸ=Z]æµ ¹ <ƒNt¼4êðx,Kñ z¨h(vÃuø´î¨WÁ{ʦ‡ÓaúÁé ä‚ð?`>¡ÔX­ëdõÅ.Ï™x?×6L¥ b³1Vé;Ê@^yKãu ¿`k}A}ÝY·ÒŘõlvƒÄEª¯ñ|»®˜HYM‹çau‘ßÂ)c7¿¿Žˆ ø)4ŠBÄ»1P¾…ŒTQj9ºE/Ç!± @3{ŒþÁ—Ded ?à#qØ…wëQüI¿€ pòëlêœYƒä¿â¡ OظOXÅ,§Ý̈¹À‚¶â“¸h”³"Ô Qÿ[^Õ–¤w`]ZH™`?ô¤žØïZ¹hu³óâÙN'ñ.ë2ì…fЄïbSº‡Ûu°6u*Aôkl ÿÚsìõÄyÒ¼f.2:¨Gº.Ý¢ùØÏN¢fØ 3Áq¤Â¸!ÅšûÇõBüŸ•×_+%å¶GÄͲ+söLÕ¨#f‰OÂ%®ašzêëŠQЗ*@]vÚû¡~ t.öAœuX¿¦{VV½SM€J°û9sÀg¾'ßRK+Ú“&ëâUS`/d«6WÑEø}6m‘¹/¥˜¯Žˆå“–r¦§þº˜^€Qªæƒn-s‹sÎS+²êªÆ5áQU1ˆúq1» §Á}h¯" §Ã)?ëâ­£]ÒÓ3¼À­üÇ6¨M÷1×è>ŽáÎì”ælb0’EK‘€~ì,þâ0Cn}M/á—ËqK‡óqõ«ëæ{ uN½ºK‘hԷʳÈ6ÞŠi÷üC|c쬞Ù8QN Yè>ä|àvûg¤œóf‹ýsà[6ìj·ò> 4=‘,BÿK76"JÍâdáKÅ´Ã^öÝҸˋ¦´) BG9–CFŒ•å]@ãˆñ[ÿE÷¡]Ã0hçx'[8Gý…ÄS)áuîp§Ó9ÓXçöºK¨²”èó¶±$Dù»ó/ÜÈEa4·„õ:Ô>SÕeýZ±ù\W‡º 䱟©JºKjvïß*Câ«—ÿ”]ÂJ°ò@/h—ÞX#ôBv9‡Œ2VêÖhgIëœZ"9$ar¢7u¸wJZ®´1¢<½Ö•¡°x%º ^¨J!´ *¢¦ƒx#¹?~ÇdN‚¶xGç£sÔžÏàf25AIüÓÀ 7u1$¨Æ™h#¶Á®ÜG?Á6øÝ<‚Ép”?éo0Ã?˜óŠ:®MF–à~é>.ÊZ(SÉÐn—œL!˜ÕšÊ9ÒŽý¬•–ü£l\yûÊ•©qÆ\ó§YÚªcò¶MŽÔÃTuM°¥ðÞ°¢h- A;lÀ½!„©Öœnr;.ˆ¥ŒµüïÿQ/ºäüÅs©µlðdãŽÌ…q¬†cÖyx¥ÕØH+™9lÕ&>@r „8sà\ZÇx œ‚ê¼ja.n÷í^ÅÊ_'ó ¾a©ÈÍE¸Ôuñ"…JpNA!NÅÇd«\p²XsÉ=  ¤òEq«Àp:Jkñ'øàŒÑ~pà3øK¿çXnA9°·Åø–ãøDex4<…̰"Ô/ÍpRÅ)æb”^Ç’AØÀmGA|ænØëq¢Ø5à,‚j8óBM8Eð7”à z“á&6â¸DÆQyL¼œoÀèÃmq=7ÂÚ<ÊŒUq€Ê^ü—žU—Õ]ÁVú߆K²#”Q4®È|ê¡4¶_Ã^MÙ9ŠÑnÄ0|]¬†ðB76â=쇜fÆÊrtXÖVì\O=Óïv/w§÷LòÔ7¾gTBÙ3‡Õ ¢ˆÜ¹.ä×\Rdpñ­râí”–¿/ÆÏŠyõþð/3i²~PY¸œc¡ÆLl †:Š×±ý !²¿ñNî”wq>Å÷|Xÿ²ÚTš'©m‰}c©Þ5ïˆ*оÑ?þì¹ÕHÅ^uð Ç:&XõKça{¯½‰²ÐXÑfâ[¬5 ‡ÒOZÆ—)‚ÊÚEq¬ìÃßp¨n-ãì64gCOñGÜÄÆ”‚ñþ›¶`sµˆ›éòr¾³;ý\2PYpâ)öãÁÕ­õ(Ñ+ÇÛ<‡r·ð+áäûXæê³Z‹¡J¢UJËžvÇ剜4&}‚=ëÜWiôå!Ð.è±µ´…}Ø‚^à þÁËè湜WÂ'.ŒÙh‡ZGäøŽ ˜# ΠYЄŠËøF‹S§Ô`: #•‹ïÒ[,§Bñ|ƒêCÝh´¥‘ÏV­|öùþUí?rîÈk ÐṟÜ/?´å—ÞÑ®%ιΩ1i[ÝÝß'§Âä,Þæ44ó‘+0m îæ[æ*.ˆ­ñ%Œ¡5 TÂŒ…Ãä/lNÃp ßS5Ø¿±Š(y0›þ~Âaq•¶aIˆ¦ò"ÄR ŸA-IeWÏå,Lïd}$ÒœÍÕf´`1Ù’K¨ýE‡à8@5ˆÅ1ê>.›²?äA`BK¨LÿÑ}œÉ`57æf`…-Ð~r0áäàò—7ˆBïS補3åEÙÎû&rü%a°ÖŸ¿°ÙгÁ@Þg–áiª²°¡ÔVòVyHû¨ÆòAÑ7RÙ.â~ »0X¼Âq覟kcêˆp8VÃüܧAŽÅ`Z#§Š;ÚYXf¹(.ÐÑ€_ÜW üší¯¾'W–lí¯lgAjËh³÷›¼•hã÷ß?ž$Lú¥æ÷õßüƒ'Ø+:ûÖÔçXD1KUQMËÇWy¤|ĉT_^ƒ:4‰C ­šEI¢ Kiå=ò®j3Úaò•ˆKPWq4¾‘=ÕiaäÄ…„ ]ÅÑQnK=þÈ¡úB¸Ìwà&㘠¡ð|OAÌ ãx @{c£~زNÓFx'zs'£;VâU,p7ƳØ>â8èͿ鱆É0˜îÂ/.¢gBA¨IúlÑ ˆlPÔŒÂüfþÁD±‘}E ý“ª 'õúÆPÿj¦‡ú…û}òÛðÓw»¯ÛZJL–[íc¬.Ë­¹è`Ù ·{Ú»œ¯\—Ø=Åü§ývÙð æQNnY0¿|`™( Z¡_%õMƒ°¦ª®&òtÒ@Qßãzè ½¸6*H†]xRýæ5ÐPìç…–ª¶ÚY‘S¥ꆖÇék‘ñ’°â$*Iº°òSQ•Fs:µÁö˜oÂO ©¹– sbv ëá<å9ðQuQÇeió¾×ÛRq-FÛŠ© ÜÆZNm™(F_p6&Ã#µEg¾1ÿé]Uæf/añÍtx|9@4Ý0$b V·• Œ ¸X=«‹—ÁQ9)#(=Gr¦QÇHöÞrLsôáQA ƒøž·˜¾áÍ\3ƒÓ,i9“SR6xËÊÚBü ÿ§¥†b?m…ÂP.…½ÅÏQWˆ(àžíî¢1Z@Ÿ?>Ë}Vöô™©²³œÂû¸‰Z£Á‘Oúg»]fˆhëÍ´®‚ÞT\ES¬Ó‚÷…„æª%mFµÄ=%eiºŸ<îºËÛÌÞZÚÙVõ€bˆf¥ ”_Â8qÒ“Í›×ëõÆ(‘e{Pñœ\Ï÷¸O¼m¬Èg}o ÑRTH¼)O3¢Å¿ÔwÓÑ–×àb> ±pßáxÃà‰ì«ö Ã”Žó9ÚLK°ŒÈ-ÚÂSèç 3…¨oÜ—Îóôû ü£;Ø™gˆY˜ŒODúá9º‰ 0”Ë`0hæDÜÉMÔ\°ÁpüFKà¼~¶b1mZ=QTl§|ÜnÀY˜'9/FÁl³}¥‘fVê+Ò˜9HÅÀ J€Éô]盪®‡²!–¼| `.wâ`@ChÄŠvñy Yq;5†ãP#y²:À/ÕYœÇeñŽò•Ká!‹ç<Ch+¿DqMQ_T…×`ð@Z#n“æÄáø—¯`”²-ÑÔÏ{Ki°Ö¡Á³µïâ‡:¯à0_Âë¸nC¾áÖ„·¡^†ÕÐ.ÁTðáþ\:Ùó`»¨=Æ?¸U]†ƒ2Ž{Ck9Wàj˜AW8'øQªÇO¡¾æ*|~޳ù'¬¢PÜlÚQÒC¼†Ïaá<*C}´qøPk'—©ZªÌ«ÕP˜V›á2„PGUþá ô‡ø€—Â/è`0F¨¬“/dÅáØ‰÷ÀL• oÒmž ¡<·Á^(à †rGˆ¤©—ðÐN×H¼'”×ÏtË!fó­:JËð:¾Är¼>IKà W3x f“^Π~ÈpÉú®AVºN^|$Ëñœ +Õ4µc ³-Üå 8¦A"VV{Íiæ Z-Þ`0– JÐ ~s}ªâÝ¥ Ö±Žjr^ÁO¹oh“ó¾ÌéwCKåYž.n•R/í¦s®3@ÿó2öi¼ñýì·zq”ð:ã¼u~ç¶ÖgšM-¶Xé{é-ÜÁ2·Ø¢UVgÅcí)ï„£¤‰O<—ðNÞÌÅÍN´Áw~-Á†' ‹Þ˜×ÑNí“Ü^1Jã1W ?°5ƒáÐZ˜ê›l ð!$â(¨ŒW±1o„a˜ŽAÔ¿ãTŒQØk*CK°­Ô£Gí—µÇf#W îÊTSÕçB8îÀjê#ôƒßpOÖãj>'j»)‹:#ª‘a~4É[³b ¹EÒkp¢C·US“´0¸.žG®—žÆöH»Åg¸=›Ï9{ªeënoBÃeÐÔYYÕ]Ä5,Íbó Éœ¾ÚµÀï½ã.î2ñ 5Ã¥ÚSí²õ±ÅƒKµFb:ÔÔ.±¯¡Þ àþ†Eø oà ¼*sñ,È/ðONÀðŽ?Ó$xÌ©úD˜(#ÝÑÞ¾Þ€ôƒ®»‡ù·h#¬õôñú1½®(ŠóDLÁð§ò,*M7Ø-zñ5¨Mýð‡¨ ÿT¢úÀ·åZ9Ö³Àæ©"ÛK?Þ‰;HÐhËZ½°å’u¬e«u/…6aœ0÷R¨y‘gšßŒfî’3šz?é>Î2ŸöK“ùà´PòšwqzÇÔ>É=í‡Rn$øçgQ­Õ‡³{ºá/¨&´PŒ+b>ý°þ†êê¯íQˆ–4«›ªÓåà'>¿­¯¬Ñ–%b¡o?-F7`/¥iøD¤k‡é”vVo¥.ºª[kÊÜÎônñ•g g‡…* u¿ÕX|Ê˧Õ;p¥ú¡òt¾5AbKx Sù ýÅc"Òµ[Ú"qB£×Ü;À)¾•T'ñ1õYYáðŠþDZeèÇŒ)|!ë ûu?‡5ÄÏñ'øZ–ûÖ-bdQ×Ý7=‘“š°Íì’ü4þ¤ì’7ã‡ëº;›±—Îðÿ ¹÷Õ£h9]ÔÄ<ôC ÿU‚`%ŽU ZSœ ¯¨vã:r:ŒBµ¯*Pcщ—Q7}¼öNÔ/™ûͪ4 Q›Õ?š©ò¨ûÚîýÑÂcÌZzC¬ƒÕ3Âý’ þ Ch<Ä` PÇñ´ê¦Å]ú¦ó–3_ª9˜]0ÜRVì¦9Pœ3¸7®TTÕù®5Ç©/Xžá-hM]Ô îÈc”¯RX ëx\Â%vA,åOœr(öÁ%4ÚZV}á1zQ,ãuâqXæÃ6h+³ÀCx˨1N p Z*pj£ 5v"·Úƒ-x_„*¼™þS-d/£k8O{b¶S °4&bml=±²è®&Ã<+n‰5䯂ÕtùþÇg”?9€Õ^èo!zCVz®29…’!+>ƒÆ(`2”T1xXf‡ø'Ãg޹Xƒ‰|À$ÙîÂWUìÂîª;×b'öã¿2¯£K°¿ ’eÄ Ü.Úð2> - CAnsqåÁ¹z!5gÓ…x‚à6VU90‡ñAtR m_‘e VŸº@´Ê¯Þs>¨ÎÓÄ.î¤lj?]¦`ì?y\†²˜I¯Õ‰“¶s¹{äÈç¿=îü—Ñ"±\üZ#‡st~ª•ø“öÓ •ÂÈ“•—2°œ‰EqŽ à0nÏ·a(Ÿ‘‹¡6”‘mU‚¬ÜÞ¡žÛ(lnJÔZ¹‹©·âþêþdK››îS/Ð%Jˆ ¾GZë—´V©õdC;g­fµ• 9Fól‰"Á©e>Mïu¸û¤þ š ³íû¬ÿÃ-Ø CoHsq:+nõ°;ï¦ôJ$Ãj®'Ì /mrÈ)Êvʾn«éQ-=ÑÆ–™äÌiîâcÞ©v>ÌÙíÕ­ùÅHXJ•t·å³å¸m6nV3á¹x…ÚÝð8•ƒ)Ö°“W{†›ar¬ó½±Ð¼b1b8\_oݯ¾2¨"Ù²×æ0Ò\sÝQ™Á˜r"yº×y)ã•j–µuÆ/‹»¢ÉÄz+Ê>ržOï˜x"1Ïߥ·¥Dü{—îçæÌí^ƒ5µÂœ 7µMÖ™ ánÑÞð,ËYXÌÃÕW³£Šq÷õÎ6êój×g µÏèNªAI>O}²V¤â–yª3ç ËìäU* {S6³­Êä@u]-äÉt^Sz0¬PºÀkÚˆwñu¸—@4õ. «¢r ‡ãZ‚cU¨Ê¡þ`&ØñdQ—y3Ìæù^Âkv1gp§™bŽFZ/Ü!†àZü+ð85…`NÒÚÂ5ŸêÖúxÎuà‡O£ÍWÅ<ŒÒc„‚(ã.¦2¼@»£"x‡\Ì..£–@8}£–°fCiЇ—èÏïy"êpšÐy¬!é>棕r·”ê1àZB›¨×@¢^æxƒvÏAô…f¨‹ç1ü`0¤pc>¬Üj!o—mÄV:(»Á[h —x×Ê©5ðLÁ`h‚–…Þ|D(t£©ê©¹Wpî…vIeù-/£I°?PׄâôøLµã¼L»,6¢>©&œçÀ[<ŒEá#¢WðKÁb¸$ê ·à¹ƒ¥4zA‚ä]óÖç÷Þc˜Žå1n çõNTîèû9 šb ĦAËiÍ"„ú²²ö‚½71>5‚}‹Ø– =p]öŽ>»MÖ_¶5Áa~'láXB„‘2Îã ÎQÞªsFWÛô|îÍê9ö†¾–#>mÓÿËÜdÞvºœ5Íâœ((Ž™•ä{ŠÒƒµ¿Ø,P qL­`g篋Ká m†š8Ylý ¡;x™9 4àÉjª £Að nrEñªšDWptipH5à‚bAg‰—©Q‹UCq…¦ðB…r ÿ“Ou»ï[KëD׿´‘†ÍÙÃÝAàæXâKÚ)‚ ¾Òu:€Å+¬ƒa0 ­¸oC1¥8'6AæÁxU f‹ïÆ ¸ÁW)š2ð;V5/zï8?ÁE¸¬JZÛYÎø¬·/²†ëonÚX»èͬaŽÞ2’}Ðn‘>5}wgr;çum¤œ­sus.uŽRhL—oô®–ÏZ¨­Ÿ¥•6²@ &@1Þ+‹Q®a¯žW£½ ¢¹4f6çQ v0òŠEÀe€Ú‹­puž8£ ¶võtò2ky8×ÂybTÁPºÎ?|^[oh´qZ<¤«Í²/VÙd?AFcm˜·©½ÌÎK(ÌuûSÝ7ÿ™N8Op6äÐöɛޞGZ-mÜÙ[›`6‘ûéÏ];RKe¯UC‘ß2˜æ¹–x ¹Þy§zúüíe[ï§l‰j²Þ\¬’…]ëÍHã¤{ºÌ€±èÑOâwÑY‰¢2–Ѳˆ7‡öîÈŸz˜í^ÖýˆÞ—ÞhíE2~àêêèùà 2 ‹¡âï R~ùŠ:/©gV§ëùJwµß¶Žã<_Á7U˜¿À]®-ÎkAƒ£ÐŠƒx¥1_äÅIX‡oš+à^U‹D+q ºêu,(BåÈD ¤RA-’³ÑDá¥vôŸ(ÏÔ#Ò½(uxjpâ…ôù© Õ(UP íµ=·#¿= §ÀK­U¢äÍ`š ŧ¸`+šÎµùŠyBÙð7· ^’VƲ¸/Â]Ê,%CTnx¢J© P€Fky1H\âç.ÂÐOÅí¨^P4·³‡ùÔ·šú[$ëÌU¹3sxzgœOö“S¿gü5zÈ!4‰cÌÖ°‚ýx  p‘g2ÉÞjÏ&SDh·¡8>à÷X‚šá|<'y,Æ—‹òOÞ©p£´GüìZeQC«+¢±Šìà†ñ4]­ã ÉkÔ9«VˆŸ˜jc{á'?p>X¡zÂØ£Í•*.ãs ¶Æ&"—HUŸÌ-ÆiþÅ'E Y°ÅA?­0œÃú8]fòH¼ÅåùVÅßP µÝ˜ýd„ƒù¨$’0„j±’µa‘ªƒ5 Îag®$ÚàFœ (/–5–Òš,3Tîá·ðž„FÐBN¨j­È¡üÅ^>OoäaµFuÅw¸Ëas-G"SÿÆ./¡DËe¢-nW·9R+ùS^Àí–ÒäOeÅ.4ä[qŠêb™U À²4ÀrùTÍå\P÷sÕÉPêB/j q†êËÓi4äßQÐW-â’œ'ÈeðDåÒºP{~ÆÃ8þñP¹’x·÷/¾ä#¼Zt_ÙA[Çß=s`ŸQÉSÿ€¯Ïnåá2äf—x!i½-ãõ5…+ÈE\›[‚‰ÀaT †«vÐAƒÉlÒ\°B;öÃ¥ ŽE`¼zÏp6î‡g.l¯-£*ØCŽ'·U¹aNÃb*7!|_æ¡ûT]»ãÈÆ“à¬å!„CÇa'ªÃSñ žQ—ÿ”„ÌJŵZ}ÞŸÕE#¿Çßô·¤s´°iý,u8ç1†{¾û¾²v8|{ú?2Š'ztÖKI‚Þªbîþ¯Rÿz&z®‰·~ïýoÚ+É8ªà=v•Çó[Ò>X‹2°ºŠ2—HCTÅÔT²ÒI­!U¤©ÀøAmƒ¨ :±"[ÔfÊ/ÏA11œ¼˜ªÃ}"p³0á œâ[²#þä–z„Öâq+a®’ßÀÒ½ ¼êòÛ÷ŒÌ\zo8" @oø¤LLÅO¦FMèA'…õá¡§24…Û,ì½M^‚G,:à nƒîìà+üþð¼ëÙ ‰Ð Â/^Нp*/†x|¢¢T &Ñ-ÞËÄ9ßì'Ã,YõFàÃ38·9A¬ É;¤“§Á[È}à*€¯Ôל+ç‰þ2æñPm1•0÷q4ôWÝq;ýQ©ÚB „8o9ùOV-á£,ºa(Za;kÕ¹0ÕÐ*ËK2¯e!6ǹP?óUË"uO†C2öÀÆò5Ñf©ÿáPh"WB?Ø$«Éê½5…7ˆ@~¡ŠÁ‹Ç줚‚Çì¢Ë`óœÚbúXþ£þ4I¼U)ÞVjZÏf9å!léÜ]œßiˆšçYŸggþFöÃ)—ÿJîè} )Z ß:þ)þÇ]‡]œ8ÍûQN†8Š€¦|Ö¼¡.ÀF<Ä59 ëAwõ†?0ó^Ëï  6ËàsׇšÔÀ¿ž¬ªŠXq¬Ea44@qÀùtÚ)•ÄQÌpZÁLˆRÏ„W6äêx2T=ùNž“ï` ê| üi-,¤šXEÕÂPö3¶á}<%êókxˆ™P‹c]X7ñ ¬¡jfÀ5Ô5ž,¯Ô>Ù7Y‰ìâ .£¼Ö¡xZ$[î›+ÕZøãí-ƒÔï’Dao.gLâæ´¹ÉU<»½µ=Ò5Êì†},M­»ÐkÏm[‚ÁPHŸéå$ÔᨮµÒj£¿g°ç ßu-2¿«m|O›DÑŽÔƒ—Z>X¢D'u’‡[}8’÷Šãžš´ÍÕ_k(ž¸ _îà™¨ûÃ[Óò‰ÍžlXþ¥Îv/ãhµ¢ÍtûlÑÎXšmSÀUêl;e­Õ!£ l®^¨Xh¡ûên(‰-X³V÷~¥qÒtuq2j'‡-ÝéÞ¿•ʈa¢púgïCï(ËbO Ï‚ÕåWoaG€ö§k2Îã2¾É­|AÖÔÂóôÃÖ0¸f)Ë-%1ž·‹BDªåœÖ[+ W³tOoº9uˆç½»‰ÙN °ÞÂÎú9­´·”³§<ÍC)æ Øµ±1 „î0Úpï,oUCy®$þýÞëñ=«·æ$¿R! µhÛIjâ©(‹hè-ìiiýé9’ÜZóM‹ríMêméÎ ¯mo²Ì÷iib©ã¼éÏ œ5±¯ÚŽOÁ}i6…Âíªö–RÈ)Ž¨Ý¸›ÒE ȃ áç%•WŒßôpëNG] Û´*ÞßæÀÔnž~ÜÐË=p– ïj+µÇìaúgo°Y…Z*ÒN숭ÅFnï`#ä…âPB(j%¡Dà'±ÎÒ`œ¯i¶ž5QE”¹D_ ¡­4F¤˜‘Ryš²4Ïð@uN–‚K|]u;¨†5Eügß§u–MjgiMÒ|¿ÑìÌ…™VW —Ÿ{ŸûEÜ©D‹1,crF}9ÜRU¤Ñ\)  ÚO4Ñø‡ýa–|ÏEX×jª3*›ãO-·ææUÜßóW.Ë£±3”ãT‚e¡^Zª:­'Ð*}Ÿ½¯(™tWReT+Œ-ô%Pˆ÷òW^‡̩ª*ìÃrð~H¾ø¬†Í±¡’W¬‘»y­™Ÿ_¨­pu*,þJ€TŽæ+„{éî€h: °tãf¸·¨ixV¼šöÁ^x.~`•ƒ†<ÇÊr¼—ïQn­,…œ|‹@-‰×`9¦PNJ‚,xšzª¢\GüODá0j ð‰Òe(3—q^ƒa7®Wøúê§¾ó0ê)Šñ3|Ê=Õ7þ­*r?‰T óÓžÈÏÔ rS'Þ ÃUSåËÐæb*/ð ŸÂÁ«ø6äÁ|^µÁ.¸ ÅNÕ‚ ˜ß趈u@pvà7n„õPÂÿà*­_,„1+ûÓ?.Äà oƒ2ø„šCºjÁÁêÇš›d"ö£{˜Sä†rx^5åªP …ÙSÕ÷ÜÁSÂÆ÷à L’·I50¯¨!pœß ŠËãÅ5á>EâtpVt@^ŽçšØbe¼ åò°YK¦!œO}ŒÔV€zÆ­yˆZ!Êásî ~P6Ãh¬ÄÅø `¡?n•Gq$>R¸þãÎ0nrcn§\\Öàuy‡á!£5Þã®P ¾q>Ñ>rÇŠT’cÄJl§·a#ÊŠI"Ÿ1Œmr°˜+²‹GÀüRÆ‚F›!ˆÝ\”uhÇé®ú a÷q¶_ÇΞìF´§–§«±Ä²Ú±ÑQÓÞ‘OxŒ¬Ô——‹â¶¢¾ÍßQؾï¾¹ÀüçÍÈRnégòtÈÙ*K©øyiy°Ž_nkI˜®¤qI7_{‡z,˜“ý¡›5\ï¤Mó¾’‡`26Ãâ0*r œJÍØ* Á5ÙõŒš _ë$c <„Êzo:¡Mà{Pã(È£!'o៪/â¿pcÕxx =h«´ók± ·¢ÐQÜ©~`eì¨LˆO¸*¢B8Úñ!5 jP-Çë ;4¦²j¼ƒ!§ò@]œ áXžŠ«¸•Šã5<ªòj ʈ¦ óåáÿayc ³ŽðšæVvñH(†_à±À,¥Š`´z [ÁjÞ“º•Ñ%s‘+É膇“ÈþÌÇ%Æto ©XÄÇh9…¢Óú .aM™À‡ÝC]×ÓÇe IZé¬bxÄd÷ysˆº¨MóñZZë_´{\S;-Æ:ºÎ/õ—~mõRZ}‹„e¨ —v t÷rû@õ̱ž¼ÜhO#µW*Ðk p6rOQ¥ÿ=L[ [XLá‘'‚„ß\ü,lb)׀ܿO¾L7Ú¨ê«%h](ž˜ÕÍx¨‘¹*£Ÿ{ûo°w÷w?pšiÁfPbV‹mÌÜ–¿ÖƒôÇÑÏ?Ö7L4[#½xš%IJNÜ£j{¹µ*-2kˆX Ï U78ä=3*C¸¾8³drv4«qOΧ5Oµvþ‚–ò#G’Ø_´ib‹è­õçp˜í¤8Ê“mÌ\f†{Ù<ä-Æ)\Õ´iˆC½UÄ} 9ºŠüFídÒð¸–ñßSßx|Õsy±>Ç3gׄՙ2&¦_ÌÕËùøûw‡Wjж]‘±›>ka&‰¼ØŽÐ lðu¡ê‡:ƒeny†ò`CÍ„`áÐNS„µ¯5ÝRþÆÚøÓü“æI˜ý­Á—»_â¿;kÉʦG,!]koûlÏ‹[È Ö¢$Ga2gÂN5‹6¨rôC‹Ó¶‰û|]h¹!D3íß¡­Óv‰3ÚHüIq¢ƒškiª7^“%åu³ŸùRuÑo‰ ®ÕÓFjù-«ÅE뢢ãhFž¨\±ö;AÞa[ktõbœ%nXúÕoc?®ô-îZÆAú)ã&k~Æ)± ÇÊ'T ¾B,~æš«Å#± ò`9ÕH5?¾Ã‹p íÆÐZÀb­ú…ôÏb vWÿdñPv½'eb1lÇ^,Ž¥ÅK8©Îè/a±<ë¸'‡âTN…ÑP;™¥—g“ÿ€fø Úpô§ÿaAši0­ü\]€%꛸O³é0Ž‡Îø P7³›N£ÅjÚª•ò¸I¯Âu!;=æH®ºÃš%VóN+z©pè‰Z+QMÜS߸áepÓ86‹tšÁïõu0L¡%‘·*-†ùÐRëe9Ÿƒ/^'®Á0†ª É ½ÀŸËá <(ëkÅLU jð/>  ·ŠÂv¹ of‡Ž]цÁ¸œ2h·¡b±/lR]ÀoñNá"ðÖã¨Å“pt…³ò'ó|VÌ)ÏËX~¨íËù ÜÆ#j8ßUíXÇ’¸œ^@;,¢ÂÒAÅ1+¯2gbeãï07ÓRüKE1¿ae”ð~©Wp–þ3k)›T(†áÚ—ÉW”Ð&€¤æØˆ“°3LaÂ,Í+`O‘Ùy k‹Åð,¼‡l°ž#U$Á8Þ#° ÆÁwc,E2+áèÍYa´rðÞÍéÌŒÉPK:ÔN΀U@\L4×>¨läƒoÌI˜AÆn¨RNÁê ¾ñ ®æî½à=Ž„ŠoíÆO™¬¹`/Æ9Ô‘Ç™Ã4'&ã#ÕYa&ÁâªDÂE‹ q9Ã8Ü%Ç#ÃrÊÑÜý0^÷¥On+jžílÖŠÖU댾-L·}^Y9®r6YCé\‡– «kª:çM¡¶>ð¦šíÝ{ _9³ÀJj/¶%Û¥äÉŒOkœ6Á¨å]c¶·´¦´×ãœmè?­ÿVW-þœ›GŠé° céÞy)ÞÇ>tTíøâÛîÄQzNj‹U!@Ãq–¢¯´zªÃËÔ)8¢À pcGlM i ~³p³ð ü‡ÃÔ` ¥\L@:›xR·€ÁT ^Ár¨ˆÿA!Žá±œ_yaT…u´¯B:•À›0Ò8+‚…êˆx ]H£ª„á‹öL?c®Ô>ÃOþå8këª uŒ¶ â¯ö‰Ö§*Ÿ}²^¦³Ä)ÐÊýÒÛшôŒôx½Eà‘z/kð}ÌjY‚:U¶mÁÜ4H«,ª§²%uR‰fïôrÎËi“Ó˧?2GP3½½Ï[3ËYyÇ›Œž]&à`­0n×Z—j%ÈnC[œNÖËëoúJûE[ºc]oé®Y¦j«¯jÂxN¯¤5² Óbðºï<ûw¬}-ð>EP6‚©f&?·l†îgö•%¼ìZìsÕuýrÙRž¤ßqvGºO§OÌ|âÚ“0$5ŽCeï({²_-šíg¶9|5ŸdÛ ÊaVÀËz´š«ò¹Ë™¿ÍÊ¿íõü.e‹¤Þ¦¾éS‡'î¯/eO²k¤vX4ÓfâŸÚ³j8ºÚR´K¶ó¸!i2å-ûfÐ10Æ ü ëæ·>¢¦:éôLWÁÎ>NWlÜ‘ß~…efØGeûd&X­Þ5Îé׾=ˆÿãÁ«®>¾›´P(‰¬¾®E®'Ö†Ö²–•â*ïÑZB´„‡q¿¸ gÉ q´’|q…Uv裺r5Ù„?q{¬zÓkph…­KÔGÑRï /›U¼w]Å“¦gOÿœ’=ýEÚD£¶»´<­ ÷æ_†šig¸¨9â.ˆÂ-Ðë@ nÀä§UÁ0Ou¨*®„@Ëœƒƒ­gx=Nòž`M•w¢š àI¨ÎþðWîTU0Ÿ:$ßÓkŒQ½Å#<£­sH1ƒëúuhMÖ=5ø IDATì%}œ–ö²—Ú.¦ÝÌHH-”¶ó_ƒÔnr±w¬M§fbŠ:ÄëQç$Zýñ°:Á[a-­…4­_LˆRg%{B!YÌàCÔÓ5ÈOx(4â=œþÂ1ØŽKa'ƒÝ|ÚpïE…SÚ>K¾­[¬œÃð¡wp*p?8a ;á3g¡W˜•£(ˆbù2T]ðCy¶ñJø€›9D d §P='¦b~xÂq'„B?20mp:ÀDØ „çà)6‚÷ø?Ø„ø3xE~9CýŸôPÜã~l‡šf •(KÀüÍo0‚s}žÈ3ä4u ŽŠ@¼#§jux $i˰6d7ZˆÆÔŽÊ±üª™Í! Láf!'Ô„Ÿ\S~Vóå}â/öb/æ²²¼ŠQ»Ä"ª™jä¥4ú £0Jì¡ß8Ož†“|—b`2Ü£vPžSTõ€àt²ÑK(É]a¢ÄC|ƒ{©+æHhƒü RìÙœŸÑ ¬ ßbS ’>j4 ÇœPŸ6‰Ý*ûãá-_PwÕWîÍŸT ^B÷ «ZÃå|Àaî×\]šú\égv¥Ú"­•¼_ùç‡I8ŒšàyîËp2Çã$î¿èÿÁ³ð›²ÑXùU” 7U–Ãüð­ðGþýÄ ¸n&©+Pˆ}¸9^÷i3æ0| F°âtYYK¥*œ7á 1÷C$Ÿ†2æc| ]ñ)ÇpQ†ÀJmŽJྠ° Dõ0/”1'È22•kÃÕÊr˜'ÐmŠè;€Û°J­çÐ[Ô£~ðkðX¸Ãupõ„]­Ò!T[KÛ 7…rè½iúrBf>9ÃÛÛ\s5RµHÅ44ºjÿÓÐê`]î7ʯ¯o¬Œpú›¥}k*‹NÚHÏç¤ûñ=ÍæÖù>ùüüôâ–Óú@«)—!ÍsÐRuäPý?¬‹ ÔQ³¤êà]g±šŠ_Ä2ËXã”ú¦€mØV´!öc’¶†çðzËg¿…°ÉûC^†MæÌÌêà£îI4×Pm ׺c V—áÛ1‹áØ 4>ä9ÜNÅ’a01¿H¦¢¢µÙE y\ð”G7Ì™8çÂu°`EnÇq°šM ð(ßâKª38M o”ÿ´3Ü‹ÝÞCÉÑèF5É->Ó_ØÁÙÝ]4=ÉGZÇÚÇøxm±Žy™ç}^qkY$Í‘ú0ƒRâ2¢ñuœ!VYk¼ÂJè'û™dQ×IÝOÛ_ù ò¼½Ù ‡¹-£—ÑŠ‹8'ÉÅæa^‘ÅR¢0!cOÈ`ß®>ISÜ·wµ×F‹tGûÅ?ýw‹ípÃÙÝ{Ö5ƒ,Ÿ±9¶tœw×fè×õž–×–œP Š]ÜËd˜*¥vJRƒëTYïkʉÝ<—y#®•ž=™=þmòÜvíòùèZŸö)5Ø@¬õàÞ4fR+G(ׇ…úh͵ĉòÏŸi³h!^ꑘ&*ûú’ÕÏ÷æ!8 ü¼{ÍV²ÑËûšÝÆfïË@§æöÕÿZo>k®19r~Éa÷îÏrÔMìœ^C-|Д>¸Våí–êÅÁö¨FqggÙÌty-¥gR@Z-ë6m=£ÚÚDKeëŽB‹óæyò7 ÖïèWþ ³ÇÙc-Û­º½¹åNæmê ¼Àêr 8ø7=…Áø›–ÃèMóà¶2©¼:._«4ž¤ªË¶È8K^Љ³dèu´Ñ°‚Îq±ÈÈm 2_%ßL»b„g$ºÀEåÂ2Zqí2嵌וWKÇÇÔ”¦C¼êaƒEjˆ|Ž?ð»|¯`¿(ÉŸá§%\»J '«c¸AùAjgÞS—TDú˜¢Š›ÉüD-°fÁÁ|WµÔ ¼ôótÎÁ‹è™ “´Æîù؇ZÊÈ%Xv&ÿvSA? ÿúå½_/õ¯Uð¬5ST'GBu¾›9Œ[‹û\Jý&Wæt~®zÂ%îÅ<?b$NæÜìaŸ,JÐ-¶p:ÿá™ü†pÃO<k‡“¬\<”“EQBrÓdΉƒÙäQê ?à;Ð~âDhÝð¦ú†ƒð¤YŠp?n ýáwæ#|P¦ãjØ*Îr.(ªŸ¥Áx_À9¾ q›ŠÄú”ÔY;Xétœ–ê9,%Kpq\¯i×åbê6þÁÝXƒçóIuñ,©ÆÒz¼ƒñ¼Ïáwö©³pUÖ‡¤Ó¾Å|e8¸:V¥HÕ*Ce(fU“¼>±Ká;Žâ‹âëв‰}¸M›£¢!ƒEÆàFœO-¬vòj›Á+°lÀ5xk‹åâ®÷ŠªÂÃÅ-ù|”“Ò¡çǼJ¬©\ÆhÚ‹ ÌYè† 3ˆzª7Ærï-Ÿëµš+•Ÿ)ŸrÛ#óˆŠÖŽú*›ý ˜(j„i½ä(nànÌ`^g7ž¦¼ð4¤žn=ÕÄôw¨Žùÿ ?!ÚÿÙœðŸû:|Âú0„{r Ü ûT„ZM]¹³Ï%xŠ¡}Z”o˜~,†røÆq%*‡á*OƒÖÎmPÇ]f#ÿ›~åpj¾Áa£üÊû jé2N$è©âëÇ_sGû¢dw^‹&ÛÚÀG¼ƒy!ç ‚8ÊÁ¾Ý`V¹8ÛÀG§à5ÆüLœSMåùp^á1XÍT}å€ <ÒlØËù• ãâð$‹˜Àc!·<€oÕM:(ªó,¯ ééÆå]z0=ÑR©ÕZÂ|_œ¼¦¥”ÉØi}Òœ][hµ÷š7Üüìøá¨@s a;Ã7 ³k€¬éYæüŸ«¦»¢s†9Ñ›Ý\Âÿr;š©XfSŵy8Eû°+lTo褈e×rôÌ12ûª!üDœ#üϦo¹o) ’CÍÔo›>F¿Üí+íÝõ"É|-É“UV“ ¹ºµ’F¨`ú]Ê’•ßãËÐúæ“ä4ÌvÁQKëaßèWϨhÄÒ3Ø×Wb+d|¹9šâ]ÜDcÅY¨›Ð?ˆæ”ŸîÐF+ÔbL¡kŽ•ö£"ŽÂµVi4Ÿ¦M̬ù³»+1a_âz÷tÈ¡Ò(ŸÞÇö—`5–‡Ù_y˜4´õô&Ð6 Ë` îƒÖˆÿr’T^\”å9'õd?þ&à4J’&~Æ#r»øMib ú+»•%ïËN Lêÿp47ƒ ˜aå¡Ö|­=u¶‡Yþ¾-ZNïï *˜ŸñÕY9cIš0sd´°ÆÁ [À¦b­¯œ¼¨L5Ó7ŽöÐ/ìá|…ì°JS»±|ÂÉ•ùÔÂZ<_éX…¡Å‹¶¢“j/ÀP#—vP å±ú+=ú€!’i«ŒAœ„8D%˜ ’âÞ¥ú+ƒ{Èá–&–P'\„Ep2öPE¹9†š˜ 7‘Ä]Ú>­‚° ;`¾5]Ö êg”&¦âjò³æÃh¢¢ø( …ü£`?†`NG7õ¢6üJ5ヨñ.èÌka0Ç=xK¥c ¨ÔKx¢¡ÝÐJô…P™»ÃŽQÓñã¹óTeq l©¦ÃzúÈsáÜ”x Ñc<"òÂ:ü›'Á„³¹>{8ƒ¸(Ÿ gr&\‡®¢$R°jË“aeåÛ¼ å¯\kâx.žà-ü`]W'dñŒâr ÃÚ•äYnÌ—!\mǪtCµT9Õg(ŠÿáÍÉ+¹]”ù%OW×ÔU¨‹!´Ÿ÷Ӽɳ൶±“;Y ø“Ô=ð¡xÆË˜yŒrË=ø]æg4£&b%,Â?á?,Îß@‡§ê8 Kãy"8(Qíã5¸‘àE±cð/òÂ'ˆüŠ«Â5ƒ.¬êâ8ÎQ¼‹ûñbø µÕ8Kÿâw·)¯«ÖÀØ ¦aÑÿdõ’à QõT>UKâ=þˆ‡±.´ã.ê#ßæBij ÏS™˜ NQ3ŒÆ­èÇBåàÞøŽã% åx0dç–˜Ô2ŒÃê\]b.ܤ–¼F¡ 7a›ÚÇ:ÿäéìg0N-ƒ¦´ŸpÕ 0Þ@(Z+fcKm<ö·xQ½–šÆ#i´Êea Á¼ïÁbðSmÔ$¬†A”÷ém¹'Tùü•ŸC¾L{áÎâd°Y—ä4Ë r"¦Á0,Kå@9ˆÛAü©vãÚ 0À{ù”ÿæJ¢•l+Çr#Ñ™ õGÎCx ~ä"*zAgž¬¹t{ª¥\S¬Ñø–Fx²ú¦òK”p@=¹·’+é"~‚¼ÆçToòÃÞ´™-Ž¥90PsΆ;àÆÂBx/»`u‚+À=ÎÊ}ð/„eð„뫿,†à2ÆAPU…C ðS*ô–wÕž$Ðꯃ•ÆO0?s3:%sq±÷…r¢¤õ¯•"ëŠKâ»Öíxg¨xHÒC­@5 wÒVxÆãÔ ®Ì-±ŸÇÿ`ÎV+! xvÛñ=|ä&T×X;ìï­Ô€üæPËJ–?=ÿ3 ‰|XREW#Ê™ã}u|Ì÷êŽUKAwÕ >¨$uÁÚn…|:X÷Å[ó§ß[ Ùø%¸àM4C MÁÃÚ±*zÚò_aÏ&s&kä“c!·¡k\_ÆQúémå*耟4?Z*s(C Ëîñ¡×İà#ÏËÄ®óËöc«ÏÀˆP]ÅiÙÊì y#[¸b•[ÔIÉO¨3èò †ú„; +Õ…ŽÀˆ¾ Ö`¾­]ÿÀIƒ#Ô&Ùˆ›a¶‡¼4†ñ"õLÿM T.ÒðB x©ƒ¬3x? \Ä'Ô5ªÖÔŽª·Þò…uÛh$޹/f®Áß³Í|€“ƒ&°TSå%έšWÓozK{O:©S²mø}¾¨cœT»]37¸‹¹¢3G™1öv¡ÿÖlŸ“µú ½3ßee£ôúöWìã guçô&®¾dk˜;±Œï4?¿á!iÞ‚|&Y¯aïæùίé‡Ýí½>YÖÚ"ÊC¾¹I U³¼…e³¢|à'ò¦ëqE]{ijVÆW³V@–ä+©‡ÓæZÃRfÅ;”°Þ‰ 2Æ6Ž2œŒ%…Sõñ¼¥V.g éñF¸ß»ý­™²HÆE®©×ã SNÜ#>Ð,óaÎÁܘnC/°qn§pÜ(ïA°:Èõ°;t„Sø[^>4ô ÎË èÁ{ O‡ð¼(°&¶¡þÔL}Ä%²%´[鉆˜âÕÌ€êôÍW ÷Á]û„À=EÿR“N¥tF§?–› ³ºE•̓ܒ“Í:ܦø‚ø6NV6 Wp9†PI1wó¸)˜ÊsøÔ”gñ Þ͹T‡ ¼¦ ¾A ã šLY±¸6œœ†÷Ôg®Ä7ñ0ÜÂ>4›»ó"u>â$„uzgq ‚̯Ú|Î{y£JP?ÍIôã­?TˆNbº¼¢„oº–?±¬UVÒô€º`CH’Ÿ¡6ÃDh E9šzÁ¿¸\ä¢E¡fB3õ¿r>Ç2ÉYÔPnåù(fƒâ‚±tWþ˜»BÎWÕ+««6H4¤š<”ž«Ö%¬âÅÄ_Ôƒ‰*p¦Ð\1ãÕ ÕÃYÀPáІ+i$>Q6í¢œ ¥­XãU%œu`ŸV?±½6‡:À:U‡O±à©\‚3ÁÇ`·œÏ5a~ÅsXFUÄ•XFg 3Їe¥õ²6{¡¹ZÏWñ£\'~`vvp]oí£©$Ä' h?oá/°›Á.&æ”U0Ï™þ‚ê îÆ£7%È8˜Èð«ï©*À3´ ° s.üe¸‡x¤ý BÖeYU-P_Ñ’ýaËóf^³V´Yb‡j}±̓1¯pcj€ÓÁ¦ŸÏ,‘YÍ;ÔÞ*ЦÕé¶¼¬_P“´zß^º–›Îd§¹OÒ%c«­ÁØY›,íÐ2ü„.÷¹.Öw[vÏRc­%ªÜŸëÉó]_̪ ìÖLíŠ}q—Mà>þ¬ý#Ü ©¸»[á3Œ†‹Ü/ˆ=¢MÑK;<Ôásâ?:å¡.~3¸ƒz&Ï©éí!¬ã.Уår´óSLàª)šìåižåhÊo˰•ÑþrÔô+¡µ&_Sy=ue;cž¹šQ Ÿ†vä´†ªÒ¾V$™·D >‡ ´€„¬)Wâh!vñw`|MS¡NƒpnÃ!ØÈ¿ð3ÜÂû´ëÃqÒbê¤nð0®mî…_Üžúð,¨¤—À‚8W6Ç×Α†Ãkùâ úá:èk=á=ª;@lAET1>ƒa¦Z¤æÃïì‡sl/è;Ìp~B^Ä`=‡ê͇y±,B7¨8‚îLбO:ÈPŒp:a?ÁF%`ê‚·x6÷–!вC4$¢¦ºòw¬)Nã"@öqYUG•†Úª3GÁºŽ—àÞƒ8Š‹º á[Qˆ;r]EA—MÄ2zÏ¡ª2·Tƒ´Ÿ”)ðX }UˆÅ†tÂ…)¯òN2UV(¬ÕaÈ‹/¨ôŸ­+2RîÐÊb4¡ç½ÊRµøZªÊc[¼†M8S–·Â, R}5ž‚h-ÖÀõ*‡¨û`µýÏ Zeh€D=Ç6 ñò`y±S]‰øD•—S­5r'ý{!U|8ǼÌû´–"êRIˆ…—j( ‰8_*ÐÔN{VQÁä“G ;—’©ÁÁr 7“©ZºÅᢦh¦f«~Ö]uÍš§°"å&ýÂ^…¸ƒ¦Ø+ àþdh¤«™<€#U¬6gÓ'èËÓÅvÚAÐÜš¯–Rqë(¦Š`«2šw¸v6»ò/x¬rÁ!5R\…ߪ=~‡šE8 Ç)˜H‡MkTøjL¤öÔ}j–ðÐû-µ¹v.dEðŠôD•ßd+©b´»ú*x [ZKÎaNR…Sô…b ~2ÓpxàûjÇtX¬=7~©r询*8ÑÞ$Glè[ÚòÛ—t×lvqq·ÕÞÌ`½ IDATOŠÑPÏs~È ëñ5_Çaªù<3½ûÅ6| 5A¯’JPnh Íc/àB+ŸÊÂ-3Ä?‘¬|8Ù¸ µÊz|f³gÚ넳VÀVOvÏ^s‘·¦º•°îØöEŠËö+#,·o;¸…œè\gh´ØyÐ/Ðÿdv©·Ýv´óœó6ôhî.žÓ8Úje½­Õ5uÊŒ§“C9Ìå¾Õ›až¶yûËÎøZoî×ÓúÃϹ”èníþ #ažÖÍÈ¥{Myž–O]ÁË8Áׄ†á@Ž·µÓ¦Ë¢è¸Ÿ˜µ­:Ž îƒÞÚPÊBÅ<•ÝwÊPPÿµ~i¶2Ú¾ÂV[öt„,€º{ƒNk'íéþãX¶ 8šiÕŒ¼þ¯‚7„ïÉW°P£buKä.ý¡d·ðSYç§[ͬõ™¡¾hÏ/O¼§½ë³{Ÿ+«ÛH/ŸrѳÎÕ9áœ+‡ï`ú;gDÚso_£ÔKêòº9Iœ–¨¡ÝÓò8â 6G^Óo™ß“R;ýùÅ…, :g¿å;f$c~FÃø<Õ§WÚmÕ©\¡†ÜËÊ=´^ØyÅ“ìÀ"¸¯Éç–†•äß&Ï0ñMý]Ù—ò*iWÚ‘Œë}9Æð  ÿà'þE·h&2ºR_|@ÕÄQÙ²¨>È|"Ѐ2,0W@¬h†u¡†x¦Üêì¦F˜¡:ˆÿaG«¿VfPÈ%Ðlú…_&tW-n‰$Ûë’¶Áèçì<†Î)íŽím¼}5µ¿Nçh¿Ðí#Õi§ÕSåSdÃzB€„­$Â:øFÀ>Î¥žñp8ÎW9+@øW[ÍÄë­ðJ}¶¥±Æ.ÒDa{>Z­µ×2±#_a'¹à„` ^Â.lˆg䪂ñjè‚?Ø i<_&R ~NňiúM9“Z‰T…ƒ“¶PeÜ/ÞbxH‡¬92TÞ—e¢ZÈA-ߨ5 gÁ¨¡ ·ãzT çrhÈÔ$¸‹_Õt¸‚ÙÍ]܆.ªÕP³`yQ×b!ìÅ8€ß©Åüër;l'½<žð\Ã%!–©<…[s0Ø a,ØaÎ+À[¸Niç‚pKžçm0€›BVë ¼å›¾"”½¥ïòy¢ÀâkÐþ£ÈïðäØ Oè4m§ëø–‹ÃoºÀã• ZcŒ²Q6< ›A04ÒsÊ¡.AnÁYÜ bp•~\‹Ñ¿¢ƒÓBN‚±uð2´À ±vcnÜŒ'µqôC»‚ÅØ4^YEÌzn­µ)\›ˆp³ƒ4RlóÅHúWÛ!—Æ—Ô~ë'<€¹Øœ&Ói2ч#)†Q/*,tôá9¼†E!îÓhNÛ)Ã)™³ñeê‚Ãá+êøS]Á XîQ' ƒ—b-lÅ^%‹A%K3³°ƒïñl[-ÈŽ¥l£` dÑ>@Nø&ì*BÅéµT=m8åÅpý0EcK­(÷àIº‡?s½¼ÂlZ}nƒÄ[¥A1Eíãt×ÁFHh,^x„:L+Dc¢îàaN†ÛŒ&äãp†ÇñL Q`ª^WúpÓ°1ÊkV²˜›hówù<¬qÖWlªWB›~ÆÑŶXßøÜž` ×ø¿´åÑÊÚ#µú¢%¬—…µâΗî 豄<åè~#﹜sƒw„§Kp$ïáï¾7™Cø ÎʼjÄâQø-æS L¥Ÿ¾‘Þ~ê;¯‘±f è‚%Ä6˜K¬]µöð> ¶Þp^Ëã]v³´Õê× õÅ=Æíã'Ög:£¶h9è»u™~B˜™Ží¸O€üšÈë<€‡0æªÝj.PnUC=æÇtÛÃÌäÜæÂnX…[á,‡pôÉO¼örmèqêÞ†®j9±΀WHRWÒŠªý2Edчb;¸gcœ »½»õGò´†Ú{ú â@é…qÚeZL0§ÑÆ)~ï׆§_ÿýÛúå=éKà@›îHv4r5`™l$öày’Îúï•~VŒ¾V50¿ªsÚ }Ÿ_AÇûàcá¤ýkäÓoø}:"h~€ÇV([‡À·¶fþýìSµ¿9ÍŠòjˆés/Âò¥ïÛ}–l€©Ö¯Ò×êÉ8ˆúÓKúŠg¹ºx/Õ7: cÄdÕM­Q'½ÓÕjùD5°É.\îÁFYG«áP‘žÒqZ¬ÑVã}ÿ¦þ†ØÐ3˜¨Ž_© Ò¾ˆ§zCqPó¿ã×8ð!.ãúÉÛÌPggïTÌ‹×l>qÞgû®ž›¹åVÝÀë–ß6Ox—8¦ŠïUœO‚ϯ —°w„fâ •ƒ¶â Žå,0ÁÊÇEà%?¿á.×…}ØR°$@iùÛ,Ãé·g,v¦î¼VçϤãß›{Úe\IîO¡°*ó|¸ ~âQª€ûð&NæК'a7ùKES7¨#ÀB9„}ð–èBµ© 1Yíhý˜rs,© UPNÕ^¡Ÿµ„ÛâjÏ5¼‡ß¹,wW ø_ôi™zN8íXÚ§Òœ<ïrÞó{Þ Ûëà^°ó@ÛT#s­+(e½ë¥ºÅ¡³öoá«r‘uÝêŒ}Ä?è¥ñúàÏSë`5TÃ/ÊCç0 zãÔ1??É "Ô¶«Ðþ’_ ©±IdŠP{y±OÏP6èD½dmØoÅë«8ÜLE1øÁÿpd'o¦NPŽ©÷r=SMTÊŽ“!A퇥ÜÚqe¸‰¹a%·K¨\ħ|ŸöŠÿÔdNTË`=?Sµ¥/ð2< µá9ØQ'_ªßðXŠ7¹™Ø J ìÎòhƒ/UuòQe:§.@[šm-ç¹P‘:ã} ¿p¯¥°‡j:G°B Lë F[S¡"Ì{á-„‘N­qöä®0–r·cÈ Õ¡xa˜PÇj—±¼²ãŒåwüJ¨þ¼òórÀm(/4US¡9ü†ÎXÚ–[KÇáüHåà/TKòX¸Ì÷Ô+=](5‚q ´ãN™Ÿ‡X[S%ÑÛ7ĺ#'¤Fô zA^þ­ø! £WÔùf©Z;} ÞÀù\.šÓ¨.šâÕçíÚðƒepÓ1Y,‡ÜXRÌæ{œlœƒl¥­Ä“ û).J/Nƒ³tˆR]ò¢)üZíÃ\4 $eÅ$õoAaŒ”ÏØËáX†Ðu+UÒ§ê×h½™½ŽÈ-é5!Sfjõ0‡o¨î*yçÈÇ„ü¤/‚4,¾QïßþšÝ•#´„©Ù"?.Óº§|HŒùUè§ÏÉAæIô§×0FÃ=ˆ@þª((ŠY˹ŸêFR ä÷j?çü8«ñtácÌÇ͵S4wâi~,²*AíèªU„ýy'Â|Ö 2è+ã.p„ósnX„k )åÃe8þ`¨­«pEÕÄ`^u¹"4ÅdŒ…ܼI=ROdQS<â±ìV?` Nƒ"7ìÀ90ƒÞÃj²Ë@Jma¶6YK¡ü\T -VøŽš?­ êžzf&ðÛÛ€W¶}F1­¤yi °{ ýT;Í¥ü<) -0 n¥ÿ œ!ÿØåí‰Ô\;M=¬32L…Èj¾ý0{Ë_ž¹úcã¢ÚDöõà„ц_ÀQoô <å·Ñl{àWÜø¥r¹cõjJÕw§„÷˜Ó0òÙÎÙ6ã{HV¿UQ@­è$÷·þ‘q²ºÏæÅÿxÏû|ÜÖ¨ãÖ#˜¹¨†zì;ÒB ùnÂ}:cŸ@¡t@zdAí)/²ê1à%¬ôpÂê(GH»Z' áCj±*à‰´us¶õÿŸÃ‰¹m‹á©ï/QSN4?àõGEa?³ y‚Fzòx,°{Á›?}üŸÉ‰¾Oÿþ5ö¸ûŠ+„C ò§©o5ê„Ôr-ò6ôD»²¥i´ø–ŸÏ~MJŽJ¸žôÓ5Î9ØìâF×f_õ¸3 Å’Ë|\ý½oÒûŒé-<›3ï¤\†}iýÿT«ëYh-ÕˆwÖAw°ßXÎo¶ÑûÑ uJðª$Ǩy¢¥<*·b¹Âì#­ÁæBÙ ÃùÄ)¯´¼j}û³[´ÁÀÄNrµ>+s£õÞ³ÝÓÀWÄsÌ}× ‡«qV5Ĉ…BPDPW ?&« ØQëýq‘¦ ó<цÀ ðãTIÕ 4n¥x—bàuåd]hËÓ½½TkëW#^%8½ðˆÛy‹ÑÑJ×6‹%âT`mÿ[¶y¥ò‡þSdXÞ1…Væ~ò3[Þï¶ÜAñ#¼%<ÿz¤ÕЗÛbõÓŒô÷eõUƒ8“Óù ¤©bXf¨Ë4 *ÂRš!8ŸZcSÁlŒUà&“øÈÕ¹7­Â-pE°ÑK›a#£•^ØÂh¤ÿ Ù)¿aƒœ¢-¢~zeè*>êÿÁOŽ—7eè­ÞÊ{%…\„­¹¥¨-‡ž¥Çâ%JãnÌ]8ªK©~ÑhyêÒ6(Nûx'j8HÝÅѸ_Ö„ñp^Úq%“Q‰AüGÖ…m0/ñm½˜ÕÅÊa„Ëæj—áåuP÷p¦¬¥ýV{TiŒPõ¡wá¦ØœÛC È©–ÊC<ŒêÐM#ç€yZOeW$n(Žá"'€nÈÚÜVuã’üQeçIÜË* i†*ÉÙð,fW Óð;fò(ñ¾ú [¨ˆ¯"N£½ÞšðîZ{°tyØŸWÃnq—°–“ \Ë5d.¾m9ãh˜®æjç± dÀ(nµ½‰›y³ÚÈ)z‰çª§ NÕéý TäÇÜ k«¥ÔLTäR•UgÑE[ËU 0DQ*ôõ†³a†±³`¦6O»L‘Æot`>ã$à#6b/áÆ~.:BO\¬mÀ0BxÄ|ç(Îå!ÔñšÄa¶ñØîÙj²®VhaôËÙOÈ×ïè!´ÌÚ‘dtÑ{ŸªÇÁ ¼Àuñ€ÖN¬äIÐ/Xþê8x!%an~›9S.ƒðƒÆ°ù7Ô…±r©¬¨.E|¥ÕKžnEÊA¹R{ÿÉcMÉ<ålÅÔÏSVNYå{Í)—¤±ÿÑÀ½ö‰A³‚¯{‰ƒ0߸/Öøœ~£ÏèåòŸË—Þ§äû² ³×y”ã®qÊxidA§>]˜¢q¼ü ¥i÷0ªºjŒ¼¡¢y~Àã¸S åâíü„>C$€Œ¥ìb˜5Yeƒò2ÿ5y ÂxÆ¡<]¬æúxZ¤q Lçé*ž**Tqx =–ä+¢•x/úÒïà4ôÁç°æc$ü‡Uq&ÿ‡n… 8 ·h Té;4„ü cðÇ®ðNB,,ÁÜ’¸Å ê§A5ó=‡3úQhŽËñ9vÖYUxˆVÉæðÏ:›¥uøÐÜô€À)ƒí‹AîñöR¶ûîFFZéûÌ»}GÜÕ|Å3s§Þ1‹Ùde©|0àFÀñÀ1Æ{CùÂßÄwÖvÏçÄ]j#‡cNç÷ânàikz2—gÔNi”Þ;£Jfa9À ð%Q9ã»MÕå-çc¸'Ñ+zm>Nµ–5õÒ5ǼàΘ¨®dŒLevpïw6”çø9«`Š7¬Gîçìu—Îaé®ü®®¾kîiº/‡‚‡XWå&ïï%u×·Ù÷Ì>ßQŒZŠªýÊÕÊ×ûp5GìCe …üÍl(“”…÷Ì=æP^á=ç6s˜?}Í\âŒÙÞJÕãÕíw‚jf˜£Q®Â9D†< 3¼Ï\«Üƒ~{âC¾7ýù 6Ú¹%½JºÍ*mMð”R1>—ï“g—»–§©§‡§¼·Ž•‡eEZ˜º#msš=ÙrŠŒ¶I×ÌÍ)ø%^þhf–ó.p^ôºà·£µiÈåŽrÐXëfA絕xG¥Éµ>“/¨§Šù¢Œ‘«ø¬Ÿø8¼×Cå@5ÈøhµõìÍ\”²þWìÇß_~oš8 ÃkÁÇÐUϯMW¸$eB^2´w¢»vJ‹ãWì…³pˆ¿aІ‹x†Ž@Y Æ b®¢ã"öã'õ|ÐÓŒâkj‹'?ÔQ)n‡*,£ÕHœ5¨‡¸©½°YÂA‡ô£AÑÇ•-ß­œm•ó .ÚÙ–òayËn²Ê÷ÓIcSÞ'tIÒ­¶\H”ýTS¨#Âb±ÊÀ>hGè»à7WñœÞa$ôæË›êÉQ<{¡„žTŠÎÐ'؉ó´mÚm–žaïDÕlÅ,GÝa/kAO`ö€–øÇª%üÒªau€Ü°€ÁÕMN²¢ ëÃ( &½„"¾ÈÒCÄI¾!s('÷€²%¿Æ(ê€Õá5Äð{YæÃCnD%y0ÔÑ\šKâPŠ„h ¹®Tëá4€ÃxŒzc>ă@¼…öB]\ÊÕ8ŸÅËx«Xõ€·AG|ˆ+àt ¿!?‰jðžÿ#&òP Å·¸£°^S_i5ZàÂx¼„ah‚Äâ8ÖÓ UQÅ¢ 'á~ˆ]0_ð:ˆÅXg©9¸÷pü½Å&9DU‚þ PÁRxÕp!ã¼âfîÃðŒÇêøœoB´ƒªÙÅõÄ'®À{ ¿òZì Ǫ¥ø—SDÑv”ü™JA#ƓଠCa«ZAU©Áh숳±Î…EYíží*=¢G¢¼æüŒyÈÆùpŽøˆHè&¶ÑHŸ¨;UÃtQ À(¸á2n†»&Ša°ÊC—ñïQá \€Æ0úÈ@5ŒCä4Þªì<Öx‡–X¯a6ä4X'âá+¦B!\Åx7^‡d­‚Z¦‚Å+ôÒvê$ûãd*‰Y ÇÂP8N¹1†³‚€°ês¸W¤ß´úZ·µ(Ø&Èšr åò\Û`:Ô—‡á3’‚q¦ð ç¥ÛpSNáD U¹;=¥j%•B›•›nBWÕwR¸úAÙ^dÐTÇtmQðÆ,}K³¿»fÛml×jXǹ£Rê$á <‚{DaTæI|ŸÊãoþÃ…T7Ðð<Ö‘P HÅšô/O´Í°YÕ³þ楸 'Ð5ìÌT^ÜNå8c©„úcäÓãy¸^S”án"NÌõrh÷,3Ï‚Êeq8ñy\cNJßšºïWe½ˆ£yrNÈiusµíø+mê,n;gSP…-ÑßvϱÁ¿½”ÿ ‡“ ø’¼|í[SÛÉæÎ+²¹µÓ ƒÚXœ‡A.eHË[Á¹ÝÛ+³§«k7îÎlè öl—i¾¯Þ¦"Ø¥’Åÿ nU¯­ü¯µRîI¦È 3ÓÕÞ÷æeò¥`„ Q~jŸv˜¶ˆÿôßúfÛYu "µ±ò¸l½ñmõ¸}Ox>W¸†öYý­Êl<š©ðÞóX<¬ÿ4Έ;¢RñÒ …Á7Á³ÂìoÏãØiluܵô{í±¹Ló±» ï©ÉüFcC[ =ãpÇ G k»£\H+ãCà_!‹²_nç¿P¿Ëe°{¥ùÊ•ñ=3KFËß…Óþ¤§yy(í×÷Álmôó…©9øïÃ3¶Hßmß^å6]¦©Î[íÍ¥x%aiR‹¤F_ä÷.±'ÝŸ3-wõŒ»T„ U=ÏagãH`IúiœÓ¿À5ü×úf-“c¬Z¬ä_àVï­Jj…œl}à8X ºhí¹*Äã̇®*É/bå—±Ÿ$öK©È—`h‡×¡-¤ÉYTV;Ä[p—¨(n@EU“𢦍œWU}¬‡kQÁ8y˜mðÙ‘³Cˆ³éˆÚňÙE^ÖgB$×Ê@-XI€Ã LEá=Ì®þ`ŒÃ¥ð’_B9…Où,,ãÚ¨Ã7\+æP}<#`(Sà$LS…Œ@óð&SU!BÕbÚoŒª/ß0¿jAZT ?–³a-h° ³â4UJãh¾Çßy>~Æþ8uŒ‡ vˆx±„Ÿà;¬mµÇÝU¡½ q%v“,Ær!‚;͇Îf9feû0=|[ÐßZSÿ=6‡(õIFÉÇf~®Š.³§Ö›Z´If?+7ÿröt{½=àžøäø¬êYÙ­,V{ïDŸ¿E+,¶Ä·ø¤ˆ´…™W9ˆãµ¯Ú!¾…ß©)íh¢ˆíñŽÖB/Š 4n³™œÁÐŽ×h<¿z‚¡¼¦Ü¢ÇÕüT½ÂCØ¢´8©ú)m®Úƒ º<ÊÏy-^À@X(^À#X%èæÆŽp>ñ\„ †Èa2Ɔ%1IÍáçx˜ßp.(Äup΀:ÜQ^£ŽjgÂ!~„Ca7¢>ªŒö‚à ‹l ð9çÎÌ_€€bww·k¬Ý]ÏXì®5××X»»»°»»A¥ùkæÞó¾ošVPŽÃ$Z®*ò ¬‚ë›ôÇ>wÖ:¡—µ£öOÎ’zÕŸgÊY¾Å™Ý}gÒÛÅü/àdP þé?˜1<Ág¼±õѵn†Í9Ü䵉ü”óAQg gÖdÿ!O]5ο&µSR¨ÿHúIßÿ¤&‹B¸EÒpREd«L‡÷¡{ªû˜ï½¯¯K«‘¼+CÉW~¿ï²°é#D_ÑW›§íTÔ8é‘…L§ÙØ·Ö#M¯û¸Õûæ©qlÉ&ð7Æùxþ¥üÐZ_"ó()Çs"ÏV_<.ßJk‡ ·F"« |@Šo¡ìÁvp6Ò::а˜&ÞŠp#\kª—ÒwbEÚmªÁÿTi¸Þ=W4Sà$¾·ÔEí{ìÛ¢ÂÍ}z k¿yÓ0aŸÙ/e-¼ñ³Zíc` gÑE»iÜÔ²‡ì¶§déèYB9p™m£hûâœì_ ’MÍWn[^_œ»§»žçP汌:=“õL{JŒë§¿Úƒ­§Þ.¿keÖ›¹†c:Äéµ\€sTo#M¨x¼…;A{~ìGËi´QÉñÝ«¦˜Áj‹ÙUzeÓ°N{Úe¶M+œq3¹_ê]÷ìŒ ˆ¹Øü¨G¼Özo¸)C¿ª,šC 8Cû îçÑrŠŒaPMक़ƒ.ó~X…—`ô¥¬°„Výn IDAT¨p®¦Õ„ÿË—ÔVµ°§SœøÉðlÆgØÖ‹pŽt>t¼ÁË!!ùl?]c}ØG¥‰=iËÒÉ·V'ÏDß«ôIn»;›/Ó¼âñÑÚâ(#;ýÂ1tÏBE¨ÍÇqçáêx‹oÁFÑwñS5 þ“G96€åPžP<üÄÉÂã1ÂÕY˜Fñx@ý¥Úª—è‚~ø]e£¦Z*T„–| ú«xõçp2u9d¹J=æ¾|T}ÑæŠ|Æ ZLß´(—0K,ÈÖ:¤”=wÆ Ïoew±ÌFôÊŒäÿ@Ç8,ÌÍ¡.”fŸõ^ž°\Z. :†Ãôk@N~-Zâ59á½üâðfð2h¡<g«zЯòQh Ë`·ú ½hDÀ=8Ë¡ Ÿ‡ïü.àw1½<òó^h¯JªhÊÅ(Ãq– TøAæÄ¯C $\€Áü×€³C}Õ›gàMl¾Âiˆ‡T~ —°4€úИãÔ¬Å幊Ã|¸[Á?ÐZŸø碜Á¥ÔEþ†¸,ÖÎRÌɽá‡À(ÍOÕPŒ£òx÷Àn)‹ìØ_vP'å>šŽßù2NÆcò5ÄðΓxªèË_•¤òxX[Í!F¤¨jGÓvlÇ-9ÊËð?YST«¹x†»áe@=<¤"p¼àÃ|˜kóÏu ò)¢6ã(Ûð!¶‚ ÜgóHƒªVVõp$Vüp‘5ÕÓÔI8ã­ x B™©ÔUYÊÙT™fÁ3ÈG°«²sxEYð6þŒµhÔ€±œ‡ ªåÊKÃh nVE0_ªÅ\‡Ó<SäK•ÓÊŽsåJybeôCoGñ½¿§Á2ÙÞ|e2OŠRþÊFUc‹ÂwPQ-ä§j$¯ä}Þ-ê°œ*—bMê Äi9Gä'&°ìX&fv1‹x#DjF p_äòþ‹ª'ÀQ²/GÉ;™ÿÉwzI½œh¨¹´êeì6Âq{(Eý¤šsK¼¶²í³'Ú#mQ¢ƒ4üžÌé¿S?eyù&©#j>·¶Õ¢Çú"{²£bǹ8Àt.ÍvV;ME±ŽwçaúW÷·4ÝÿöwowU4£YW¯âôÈ ;Ž¿C®ä¢Ï´Í5>Û_Û~ûœ9]çÿ–#¹»5ÑýØûÈs1ýEfõ:³Ü¤" Ò›B!í¾«¥³+µ ;iÛìXTÕ8d|2zëõIÆEž®ª««YO>Á 8ë{@Ç=Akk€/pKÈLrÏX˜Ô7uݯ©)“S’&z¯š{0…JÙNê#è¬ö £¹2ž¡H<£LøÅ{Ä)hŽXûâ4¸' ™Ø\ô ‚ÔDÜൢòÓ ñZNB'íP‹©¨.X†Ïñ(¾f]¤1ŒÒßj¦VLK žÆ®â<ƒE‹ñ\E'Ì„¸kB{.Ç‘xŒ«py¸ˆMñ–å\ü“K`=Üçø8Ï¢(ž­¾Ã&, ŒÀì"’îYÅ9;„ó0sC~á°ªáHØ 0já œM!€*ÓN(Iõà1ì¤[|œ³¹"¦ç¸ àè~ˆ…º”«ð öƒã<ƒÁa˜F•a$„s=TX Ÿ+L䑨LlÀîªáï4§b{‚ °­†§â¬‡Ú ^Ç5ÅU‰b . ÷¸#ÆA®Îù¸B?ºé?¨É—0H®•³U¸H$;WTåa%ô•MÔjøÂ§ùôæÍ¸ gA6Øo‚¨$wsm8@7ø¢UZÀ¬…eU _€>ê:ÝÁÖð–öâß\Óð#ƒv µØ‹/i.ž­¦Bo¬å¢.…Δ…X9¡ž“C©”VÁ懒b.Æòl¼c ÃúÚuÚÝÍ,+ÇB çGöt›åh òÊ)Ðíwá„3Þ4ÙIì°•r †•X‚,üÌ»Ä}˜)îQ’°kóEg#ŸÁ¹p–ÞÓ>(ÌÔ88‡³£‚ PœÊË ’õ™ð–æÞ8Uܶà Q˜òjEôúJµÄ삹ø ÷Ñt ÒÜW!šK€€H¾ƒ.¸‹9 <,Áy\‹2x›zA?ƒ/° óªØö«˜Ãp+‡Ö8 ñ<>¥‹Þ¸ ÿ檴€ö©B¤“:¯è6««ó§ýžêlûå pLÁ\1îÀº¢Õ´ŸÎRÕZd <¨%¨ºº?»öŠƒÆ¾,Ãzbwû×5´Ä>½’ZiFyìò˜çtz>¯;Í›à‰ò)둯£\¦æeô—±ÆwµETßèn„8l®ÂYŽh^ûRÑìaŨhÙÐlÍ“á\¢xøçàJÈ-œ¶Ûm·ny~šù6-£BðÂyÔ6^//Þc¬¬dJµ‘CT°êOKy‹8ѶÝÚ8½„s #—f걺IƒÝ…½QfY+›õ/Òj ºÃ<ù ú‘â+VK¯dÜÒFÌ)úG£š¯g3"ôd³Šÿ==JúšúØŸÕ#2ÛÂ%m“ÖÍ5Áµ<¤léÊĹøŸú¨ußįñcÒ¯ã™7ýÍÀ¬[µÛ! 9­õì±ð•ÎxæÞª†ú–f¦]ð9œ–ˆ•´ÖÚ =dÿ'¢±¯½ 3ܬ/Ïr,à—ªmkÐŽ¯‚¤>Çäø]4+òl¨Ïy±>ÎQAØÊËMð¢àˆ@»øKTïô zQQJ¼À­®¥qûÔÿÌ먭µ•yþöüíîgÎH½–”×]Ú ôLò‡ò4^kÕNU'ƒÆ¯EAÞªžˆÅŸG“ ÌÑHh@³ø!çTÕ©·6ˆ³±ÔæšS­÷t\>âÁÔ–@6¨Œ·!B œÆ<Uà¯B7œg4áÝ|U•ÀŸCUBžbpb¸UÅu¼ fÐgõÿÄD•^â?j å ªžuX&ñ  _PÏcOøã2YVf¨­Ö%UGmVU1µ‰“x¢t©+0Zþâ‰P—ðsކ-¸ç‹a ¡;Åc ŒÇ‡¸ûË1Ôöq ¸í`vÇ\"R ;%ÀB8ŠKù>Ñ$XÏÝh5žÂñZu5‡×é_©HQ“=ìäa*zc5@­Ç—жâvë—j Þsi¨ ±p·°‹§Á*Ø wUí¦ÙH¾—ñAùH6æ&8 ÚóXN‡šP‰ñCQ›;Ãd:Í#`#öâG\È7Ü€«SIì"}О›øPöTu(¿ã~¾Ì£´—|‰Gi/!.‰ƒ«j4–îéÇá Â3p‹_ó:8ÒÕa.ÉËø•´cOì¬|bZ*šªâc9Ýú­r{¶© ÈðL•Ëù“¯'îþœ(ŠÀ*Míy%í…gâ“uS–Õ.I7k1¬¨‹ÞP®Á»z1.¥)Š«Èú0‚½|‚òÈ!ðI§œZ[û%Y›¾OãÒWø§}_þ¥±¯[rêï§*òXÕóbÚ£Ä瞸´U™’'pœ‹m5¹˜¢·^‹²#³ÖZcªsºÝÔ²'‡qù ÔÈw8°M…tÃCÖXsžù›©fÜ‚ÅvU.¢JA mƒ ²œSO¸)¸Ô5ÅÕ$˜ˆíå@­œ(®–ckšÈQðY¤Â.ÎK V}ãÊÃN9HÛ(yöA#¬ë $Âj'ìÇmü’Â*þ¦á;,ÆÏ¸4¤^ðcTŒ ÃCªÁXÉÃp Ugµë8û£`<ÔZr/x!^âBø¨Á>j|¦•XGj+)î‰dXʱf X¨+ï}ÙO+ìþ×_D^õ¾0]j±l [¼…wõÅÕ ÐÐ1Y{ Íû¸Í \ ‰£¿ ’]»ïøæxeÖÆ¦*«»?°FY9}1ò¹èŽ4 ['3s¸[Y›3÷¹KÐjs¦Ü‹§0\o¬yŒwŽ9ζzºí¹±jªJÐÔÿOÆ7_ŠdÕ—ÿ¨T¬)ZCUj©gâœL{ —ëî›9#e-(Î+½×ÜãÝ/<Õ|9ýW½[ý}åêŽÊµÆL›—‡âhq[ëc÷uÎV;Ûûl=²ür-³OׯSmz-:Šh#úªI©îËB*'ý)>áXc«1Ïè!Úiwh0—”¿Ìu©…’:g¾þZ6Q¦ì”Ê÷Î=D>±Âé)¿Á‘[œÕ7W0 *ꉸ•,<Ýè8<ÀKØzs´l%Nó5.eÄjó4Ãö*Q€vLýÍo°0Œ…^ü– vY7é—_Prº›0’ŠSŒÞW‹}ÐÊz®ßð×\U»Ó!gq×F1×vPÜÀbtÝ|†¶ÔøŸþkŸ=I—|ëÓx+©óúý$íÅ ˜Lõ±»,m ˆ\»!ÊÂ7 …±ø”Ša#ìC )'?ôÀjtLFÑOª.'òz*~`šH׳¡bE%Ì QÔ3,É ­á<.…Ò‰IŽC¨)6âÇZœÇÔbn¡fa;Î)кªÝ™*VZœIñ¼Æh§¨:­ïq:ô£?P@ áÒÅJq·R ÌÀ‘ÈG0 zÃ4œ/zÂ|+~àIn)”ŠW;N5°6¦²_ÍAà‰pRa·8ÇS ?>”§ù!vøïÒèÆå°vÃ.\²CY°c·çËØØÿ\¤Ó™ŽUa•rS+œë`,¶Â’\‡Çh«¹9§£+à-~Jÿa7H¡%”•ïâ;4Ô.\wq îÅ’Ü ÆÑÕá-®_ù2ÎÁT8Š–â&zEÅñõ‚<–7ÂêŽ2Y’c0EÀpð$. e¹5æÀ.bŠ,·x í‚‹°FÕU¿a•¥Ž” ‡è^燼*Ã]\A1øKã/XÌÍ¡,æ¼ðž öc{˜ ¥¸Üàp:ðtn³Èƒ° ¥ÃHb¿rc\*[ó>B~Ìç•ðO. kè4€Á\â«$¬Å+<Ÿ@€ÜÖˆÑøþÐîòQèO÷ð<÷§Û|š«Á1š¯]ÁdØ íÕ_|X¾På´‘ÓiݵrÓOºÏ­8P9•r©ûf½¥ŸÖŸ0Â|ùdîà½5ð,+°€x ' `&<¦j„Jуµú-rÑ^©8Tœå±*HÛ ”‡[ZÇq#ŽÅÏbTÄÖ”.bè¨ÎoÄ^:o5R§´mïá¤q*´Z6›½uðQÛÎï¾ú»ìÓž~ÝÝ:­´±”Þ…!õwÂàW¼‡ýeýEÕDœ +ËU|HMÀ­ÙÊg]êømT4^ŠZ¿jÿ*“Xàk³Ÿ·¼¬Š–NÔø©7Ók+q«­¡-Z4UÁÐL/ØŒ­àUÿB5¸È…0„§âì ?á"d…™Z(x¨ ÷æ+ Ï¡o§eœKmãGxBÔ^5à·ÕV}â®âˆØŸÅhz¯¸/O†ƒx‚r",¤&t÷@Vîw!‡C_¸ëÅ>¬é\¦Ó[èÀûqÕ¥Cê3¦ïÖì¤Õç]XŒFcQÇi£säu¥Ë¶Î‚ú[.÷ä&ÊÊ¡æ5{q­ > |ï$»Ï5×ÑÝqÝÊ OqªÅª€ºêâï˜&‰røÅ>Ïå<©ÿÖÚØZfŽuŸIýâj]õ›<Ù¿–jâ9Øìs¤Ì¥-¿i3D1o.™Ó|î^¥:Y­ù uÒJÓ:8)“¬Ã8¶ÒeÞ‹ÁÔ’æèÉ¢Œí-6ÛF¥ÿ‹Ïåÿ¨˜µªÀ=MèX^{L—e‘¶¨¢Ž³®µ”â¸!–ÂuG‚ñsig †ëŒ¢,å¥^|ò€…ëÉ(-1‡1†mЕº¨ó8Z+#†d¹ªÝÓʹ´¥â6.ḋðq³„g§ ûjjã½3¥üN|Çxµti»„€Pß‚´_&$ýœðø~òü/!7XçÝ¡?¿Ù¸þ !ojU²G¦ìO —¥Ò—¤¶ñç@¾$Bp©°ÑI5Ì7Üçô%¥wÍ”¾U)µ÷‘×Ó8¡ŸõîOM§Ü0NþIvÔé6žƒItÚ1Ю¬tø-{Ã. [0Å—ƒßh‰æ_vm³¾U©t‘–ãŸF:ŒÕÄÿÄCºªå Nbkƒ‡Ds[ øôjÜVYôSžâ˜!÷Ñ1˜£RDÖ¬/\EŽSUÔ'hAÓ9wòŒÄüì¾Ð»Áo@õD4ÖºÀZI÷T˜ü‰W»KÛ“ýÛ± ´5àn>ÀM7Ü]¡¢¢´6Úlë çàQüÿÄÉO¿¹£ +ù´?FFA eWÝ %ñdÒÅ]<‚=é<†:‚õ輌¤ud³Šð.ãÿ­ö¨¹Þç0[NM»^³×†›d¦Z¡òš›é)Z8PJÛ`-¤R3tAml)Ø ¶ÀQ(–ºL ñ¾Ì†ë±¶ á"Hzˆ½D^Œ¡ÇÚeñ@Ì‚ñ" •7ã©?~÷½ÄÓ¸ÀN™üÃÜɱªÇbžŠÃñ$L5±)„c[ú€‹á3À0î¯M"/[\ŸËª*X:hCp'[Æh ¿Å¨Ã¹± ž†r"þࣼZCA~¨.«±üž½ÜÞá:˜ ½±—ÐF©Öká7ÉùàæO8 ߨ­è‡lP@ Eo9ˆÏsë Ô•Í8ʪøºàIx•x/ÇàÎfMáŽò$·ãå‚4ª(¤©Â CnDјEÝ¡Ê4Yn…ˆçÅ8ãp#œÁ7 Íà-=ƒp^Ë .æ£ÊPNa,åÁâÖÁ™ê7€®Æ±=_€ÃØKສ0¿àvVÊßÕ%|À9Ø&òƒÆÅE:ë@hkñ+×§±ð' †Å0mŽØŒY¡>s#ÜWa1vÄ*lÑ}QFÞWsyÙB;@+¹°6‚þ€or«ê!7Bn/ó3uÒ?‹Âß2x…%|Ûé–ðw×(Ã<§õið½”›g‚Ð*À Ú¡×UÉЗrEjCý÷UL”-Õwmîâc8s«3ªlãß2ŸX¦™X“]X\üÀL…÷\•êR=µYŒ%³|°¿ÀA¸‚*©Cª‘Ì®RÌÞfSÎïëì½èîõ¬ÉÇÝ{ÓkÇ.Æ~–ÝôÙ;ÚšèÇ‚æ:¾ÉJZo˜é.ªÎûV'¿ÿõ»lúk-—>›d•cz0–û»Hw‡Ý¼-©¦Vs³$Ã{ÜM8ˆËjЃc|›°‡šÓGÊP²s¨ÂMø†ñœ¦²ÈðC}ÄXèÁ’æÑ7Ú¥ÕâH+Ê©2òµÀpðÁÊJÏ! jB^G·°¿®ûÅM0q7¾§Æ4vP,ßåü8ƒ¸6ÁEøÛ¨°NCaj ùÀ‚Yl‡G¸…·Ã±Á4( Š—âßô^<Å¥jšZ©ÐŸgCبު ðD~—0Öš#}Äæ45ÎhÕ´lh9º:6=ðµã³Ÿ~ÅhkëŒã '½ôtʼë)íáÏ”ÄD§ÝéϺ'¿«È¦±yòæy49 #‹ß™â˜i„Ø–ÒAX%4ÙC~ãîþ׿B¥¢¬åöÆT:| ø¨ (ž¥±­­ˆçp–§çj™]sLÆ-ÁÃV"¤r¶Üö—ŽAŽŸ¢„Ö›" €½œÍ«µ·Ou&jÕì®eÆ gªs‡~\Ÿe»¹46¶‚r,t^ÛAƒðçX{9ÓÙØ¹Šòk.Gh‡ 8­ížX#ýæ?~·6Îë‘®2®|®"YеŠú{¦T1…6WÄè·mg]µû¾MÖÿx¬{[Æ”´$G]òÎò>rïJy¿&i›žhÏæðú=Æç ÝÎóðVÔuœÑÐVzE£TÐ?j±ù-©?‡Žª´ÌI¼×|Md[ÿ³­7¿©,Ò‘òç÷+ö¥Z”õÃ^5pfÎB¶¿õyFDS1ÑI{ªí×ÈU0|…+ü’}È ÔrKÉÇÖ$Ÿán Ö?tL/B¿a¯ŒU­Yê+¢vôE§Îb±ÚÄGÕNšFI < cøƒÕÛQo|AUDiØA³°ÔÇÜTS­„÷PÁY­ ¤³[líx ”#a«YGÑy‘ ’@eÀ!òc__.CÓë0ÓÈÁª¿ØfÕßýr£ùÌ|è/žB¿7øNzJÑ>¯^Û~Àgè < åL¸‚ßU#\ƒøT5T9à!/à©b)Ïàox¦PA. W9ȼ `DŠP ©¬š(·ãhåâ™|ÃZŒëù­fK¥ø.‰q4_†ÊeÖ ù7„#F)| ù“¨Èx­\€q2ƒ_C]åAa<6‚úb.f-8…~ð®®lê_ƒ8k4Ÿá·bZÊgµ9Áy47ÅC€öLÍRûq Œ§¯J£w¢±\)šRW\ÊKøìPÅT0„¨Šð[‰ÜPŸz“rÓ¸¢¢U+Ì U!•Î.3/&Jâ.\"ÞªH¨HWUÏS«1ši?Ô4¸†À;Õ¤¦«l0An˜ ±2N¬£Tj á÷ñ6À‹ªÌâú ðŽ„Ã| ©­j˜‰[E5܈‹1€œ¸.BnØÍn.Ãɪ>_·&¡ë¨yЋ¯ ßàOŽd7WCtV¨+©å[ä28A°ÃáíW§8§Ñ ,¯®Á:hÁ…±ß’{é „Á8j«¾ð{c.UÐ \H︹:Ì¡ü7«ÿèŠ1GßB¿iÅ©8¬ÎÛà-$€n€{ò8ˆÀ;°ŽPÂa1tn@ˆ*˜¢wƒ–¯þÄer²ÌGE´õX5Ç£Fq:—Vx±ˆÇ pšrk§D.ðËj…5YæRó±;$áÁPVMå þ"g«q`ó5Q”Ìw”“_ðMþ 0´€æ ú†ß¹Æ"¤©ßÜNáß°Yû†Ãou–v`  I`ig )<oD2”Ðl0׌€e꓈c/×VÇ <]²FA<]Qwø,¬Â’°]ÑÚQ¦~‚¯y®Ø†s€Ïo5µFÂFÛ÷À8g‹à»EbÝïR[ÅÜvLnöá/¹G¯âŒM[Ÿí¶}ºñUô€¯ ©Ì IDATjÍÍUÏÌê ×2þçi˜n3VW‹öÌÞ=Ϩ°mžhYLwuM|”ø#³˜?«ÙÿÂCÆ!ùY.Æê§Íå\H=2c±“hŒ0œSiçUKy8¬ Åê-”Ä6PžÊãnꡞÊaªâ 9ã1S’S\Àkj£:Ãű.ä <®©4õ{ã¬DÏaQÕ¸*TÄÆ] =–áµà†Ýð +ónöÁFX¤ÃròñežÅ» 4„ÐcžÍ¡*FAN•&‹Á”­"Ì_û¡Í>ïb3­¥H‡¨ˆ¯Ê›C}ýüÕ̹¾cžœ¢Ÿ¦Ò8›Áckö}Ù§eÍj&Xs\þ5=qdb)ïÞŒ“i>£˜­¨óL€~<Êv(`Wö5®ÍöYöéÞý™1?“’ß$lOûC‚§–YŸ}ޱ¶’Z/ý“ÖÏÛöóIé”§Í^ÖÞŠÍòþPî˹E¬&6Âyÿ5ûz×4{.Štî²[ôÝê̯“çðD‘„ãNqO[k¯E_4~4Öè¡¶ú ,ì)À2y‡ò`W¡OÇeI‘×öÛÈ ¹îýEмÐýrTSÑîê¶ÔüI­À>“‚Fý•mj¶Üö,!í¤QÜY,ô—¶G»î\o«­ð®ãpfVOlMLü•t1¹^ò©Œ¿Í®øcuøÐ>7tzî?ò.ÊÖ+ûÆlU]µMž–z4I›åbðgƒCRCÎŽ Ùnçܶ#ØÈkße‹±}…Ú$#ÚV˜«kmXCŸÙPŨ߼®Àn؆G)PÌ‚çØGÁå¸U=„yPFö •ô™^q(ïá™æ=Óò–Ä ZëO‡5¢´|ÌØI–Ñîjk­c¢;Zj/R]ØÃë¹;¬!²µØãoºµÁª ,¦#ƒõ&\¢l ä#BÝ1P]ƒ¬xŽ×¨ÕÔ›ˆyŽAÜ7 ”)FÜó–QT½Âû Õp꽬~§ö»åŒ’î§8Ý,®úÚšÉTGAs”w¼¾ÀzgÍå†0_ãdk…ª"ú²Æe´‘Ø‚iìçw“rBuí8xø‘’Ô±ûÉX¬Gø¾$Êb?ý;ÿ€?Wê>ç°ù­f)hdí1×X+,·…ÞΪ£Úh&ÉùÒ[J­2{î[.k°?MuZVÁ²³Ì‹­™X”›('çâP‰·rž¥B0?¯Q7ñ¬â0z€^…7ù¥Þ,(ª-Åp‘>`æ†Ý 0ºBAñ31V„*æ 0W&ñsLU“U-x'àΦְüâ€ÌÍÁôDÎSq cÕP §3)§‹ü¢¼òCÞ ™ê‚šÍsQÇ‘ÊA«±ƒŠRËa³\Í :w³šª5ÍgÕp˜‹É)4‹ÇAI¼Ñð˜[pñäåuZEà&>æ©ü~«0ZÀYŠâé4…ÛrC­ýÔ‹ûÁh¨ÇÝq'æ7A’ø=‡i]4„^¸M½àpG¾à`Pæ#œNM¬ ~%wð"XÁoÔ0x6“zÄÓøã‹j.'Â0¸(sQY`‡7ü·ºÀÃU!nŠ/a/gÀ!HàÂÄeP„ßBgh'?Ë?±ôeÂðÎB?ålðpkH„*ž‡ñ#žÌ° «dc‚È€ŠXÁiˆæ9XŠêP.¸õË{¾.r¦¹[m䙀¿ñÁ±hR±|M¶ ÅPÄLU̇|ÅdnéÛ¯*©OþcVyùJ•å§óÇ"ÿËŒ/´# ¿Ñ?Ûv[ÿ€!%}3/%]HÞÔ*óFH»gðÛÞœ_²|̽1[1zë( ¯õÌ7ך•Íó&_¡æÕXÛP¸0Õ"øG«Í?á/ËÀÄGj%Ϧ<˜‚óy$A”:Ls°#¼…\ìQU`7Y÷ãIþ ¹¹*ï§Ãp•«ã),Gáj½Š¡9÷á_0“KZÉx{I Î ËPZL‘j+l†,ò"t‚’ájºŒPñgíPIXF}d ò,ºEç1‘@)èÏÄuJTÍi7æG/fÐv[ }ƒ³¤qC««%‡%2|¾LÙ6!%iCF½ŸåÒÚø¥nðuÀpÔ .-kÛ° a?C&. ln«W zeënFaªÊ+݃;9s£÷s58Ü4è¨ã‚-B_FùÍ$¹HÅr>ïgÕFmõ¿å‘"Z[7Ì¢þRÞc}S×ùΦ_˘l]v/Șî¯Ê™œàÇÈ2Æ/}¢ti}h¹)i¾ó}ñdUY|;¼·©¶Šó ÄZÖ3¯ÌÊ%ှTFJ1ê‚T$™íäyœ¨öa8õåðZÔóT9PèRFhêOOÑô2r‰vÈxå8kÏ´?ì<¼Ö,WsqÏlË£'é…\Ï}i¾0É*©Ú'âm¥k‘\¡›-©³E´À^.OГÀÞA÷CÂBš» [Nç#Aoª_×ê`1£‡‘¤4ŽhùœÙ‚³]ÈÞ*[É,9Cw´­q¢WØRĨ4g©oÖ\zqgKg=c°3‹³¦c›cqÀ[ã±-·«'íÅt1EeÊkVü›Ô51\ü«òËw¼Ëº–R.]Xé© ¡iŸÓ†¤ŽL©ŽšÑþ¬eÖ%õ¢ð2¶ÉÔQdá0˜FÑ£Ä=D H3DkØ€ÑpUkŽ^úitÁw´zà| ‚Aðz«xګ覩kØ &zñbó–Zy(ü,°Z–ÕY g7Ç-ÿß@ïC‰žÇVRPî€2ÎeÎΡŽF&û3Õ¤„'ñÙ2ÏÄ'¦Îµ²ûì\šºÐ¦ë¯©/ÆñQ\Ãq9T†-ÚÈÅ,0à•âЊîÃjnËá0 êˆŸŠ•Çd;Y§ÒjJUnù­iV[u.ó ë zl%x@ë·ÿ¢ja>å)ÜU]ëä Y‡a?5JñP> ù ¦Â_²¼¡–a-ŽR—äR3—Yƃ“J¨ ™ÚÃlÕP$B(ý:0´Ô'‚§BXCÕPzOÔCœ€cåtšC˜‚O8¿¶•»²WTã |SDSuœ 6p/Ø¡VàÈà+‰W9·ÇÝJ ¿ñwþ»h…}ØÃ@È¢<ê[ÕØÁ¿x.îÀ "›8EàD⪃/E~œݵ×Ü"i?áH#¡®¡f” ‹°N¨H:†=!9‚¾ª:ÜNô“•y½è#»qM,žR8ÌÂà‚  à–C8–æãw>Å>jJ—`“˜‚WÀE߬ý*‚GjWð_¡(¸ÏŸ¡8ìR.ꆿ¸ÆéT Êàw# NCCû6¨ m¹à(n(ö@†8‹Ã ¢¬€1#ÿ“c¹ºµ’'à Q‚M\Â?a¢U /`ÿ0l„ ¬]¢*M7ÛOôHEÚHr©¡PXI8ïRS ÛÑ>tª.hàÑ ÕWeŒ×O@œ³œç™ýìñŸu#,-¬\àçÒÀÑöì¼Æï4Ëf¤%MÌ`¹ì_àmèÛ”´,óVÌ' €Q9»YW¹¡äóŽËü/C÷”–­ìS‚ó„†ÛØK:"åSÏ~O»äã)9ݵ|ÿ¨,T¢Ä>ûwù.Ñ4E‘Æu8ÿÓ¢ñ¾Õ¢xŸ:Ép§‹÷àäIp _ÁþÒ"þÂwX iP‚gàI<"=b=V·>b˜ªs käá \K«·°ß@üšà3ÌÉ7E¸æ¢â– ¾ oð7çƒ$¨Ì'ñ„q%8xIÍy~ã1Оa5ôsq1^LƒatDŸOjÛ´6þ]Á¥ŒJ?ïÚK:¶ÛzÑzõSñ¿M=“Ú.#Þ;%½Bfì…+ôM¾±ê ¶ûU-õ¬ç¼léuzRdoÿËŒJ×í;í£lõXóOãFG­¶(dÚi¬­Õ¶½±_–ŸåEïT_”/AUQ¯­ <^ô2VBví®æ†]ž}ž[æ‚ô‘™ƒh ç–é±5”ë9^ÛÑ6E?h¼³-ÍuK÷kql÷ÿám˜ÞÛ\”Y××–þç+i †=ò²ÿŒÿ_- ç[Ú#­'åmò³¹TùÔƒãð‡|n¾ƒÕV+ßY>Gf?ÿ!žoZf~úCÞÕŽºªx>³ jçžïË4ú–{›+¿ç†g¾™Ç³53ØÿŸçµ—äyRæ3,Ûg¼>Þ^ÙQ ¿‰ô·j¥mU²+uØ­öúúÙ“ôX[Là@Ûj;9;ê3¹ž}³x¨†;Û{‹’¶%Æ7œl‹Õzû/‹-ØÂ²á$¬¤/Ὸ§Òé0™‹ÔI%9‚a=ÇÏP JA%f–Ãæ/_@{ŽãñX»Êò¸N›¤žÁ£øek¨DÕêo S-i˜}¢¼ G褊‚Ű”-lF}! îÀ-žÅ±r;Çpo‡ƒG}ñìÉAñò*Ä1f;¸N†y÷R]™9!A;€ETŠÕ ?ZÓ}³a«UØSrxnfâVßIž„y3è–’e0»·¤¯8ûý+}¯}M|×}äyçÝâ« u¡ÂEMzŽ™Â¯M¤@ù•A§ú›þEGS8(z³ùÂQê»u‚KÉV áëdçnØÒ–WÎ…Xm›è@#y¶ºau„ªæQÕP<“Í-ŸhÉ5|{µ»<Âß³Ë=xSüÅ]´´R-å4V-³æÈ V ÿ'Þ‡¢ÖFx&ïZgðˆ™ÓŸJUÍQ¾íTĺ`þ§úz‹û+«!¾¬rïTN܈e!P» =q"-Ãdh†ñt›Â)ü'x)†X>€wÕ.l1ªV“ñÎK°WSd*øð¸zg0ªÂ \ …q‚îTZ>]Ä¿ê>ÃCr€Üj¡bœbe£Åe%Ä|¼¡²i;èJ÷ _Xbߣ¿wõrÕw} xØÄ^ÀÞÏ¢÷4 `º`«aì·_p” è˜3 Ç{á¬sl]a‡³£~NJòX,ý¡»¶•©ëKÕQŽ·cP€ýOûÇÇ_ö·8 êS;âø[>´úÒÈa•Ðòñe./BÍrÖ ¹Ää-ìËÌlíÕü­ŽÞ ²šªf½Wßµ§Tšˆ/ê2æÛò’«"ùy‹p_H×*f©šµ¦ñݹWýÀ%ÆT#Ýà¿ëß—“ãÝ ó^Æ8ë´ÓFy?â+Û\˜Aù1RoÈ}å?éLÓ?Ì“gr‚®iú¶™á¨,-#-ÚìïÉ’ùÂ×$ëí0\ö¶zi—rk/i½é°¶ùëxÿâæm®õ6ô4ó Kñý?Ë%zS–¤Î(/©Õ8;ã×WÛl½ì‹íCB?c šBu± LÃÚåd'¾«¾¨Ò’e ¸¢2&ôTƒÎ8> …XHvÔXLÖjâRã£íºv\•Qý¹¥Z­¼ê4×–Q v°¶B"Æà{ì -17úøi ©)íÒê@Gìwø:.—óÔ0.ËéІA/ü eð_h÷ôézNñH{¯úYÛpdæ´ô/¾âþ³žÁÖ!Y²RŒ+ÝóÄÛ+MK_˜>”®é)úý›éײë»ÕXó/YHÀ­êªìœ‡þ'ú«}*7t‘Ù!'twy’6ˆ£h­€êÚiõ“7CÜÿ ‚­²>À¿ÿ9÷¾ÏT“mm˜\›]›¾ì6Û67l¶­Í¶¹ÙÚìi¦iøêÞsþßóhÅê³,w‹|¸ƒ b£xŒJú&*R®ÉRÿ§ûP-=OçA%hsîà£"=·D6dÁ1þE¿T>¼às|O¿W¡:YB˜¨¡>«œ:+·²îò1ª$‹qK|°‡¾òlî(Æ9t8÷WûÅ8¹Q\åíüIÇð0n€Ú4åÅU<ÇbÑJT#¯˜*Ë¡²±j«ó¨ÓF]ñœúÙ³9žÑH´V¹0)*3¶"'F@ÝѾð/Dq~§¿ìóÈŒîê›5”—H/WãÑrŒŠ,27ݤÿQy 'µ—†Ó~UMWPûÉ ö—g¨>Z³‹OÑ\]MtÓË1 Aôk1QüDyÔ¥æ0S_i ÿন-sÂ…¯4mqÏ(#u×Å>Þ¯Žóoªú#ˆVó$þFŸÃqú¡Ñs±À^ÆBn•Ã97QwµÓúB™è5¤ÊTç…¢¶¼‹"¸¸þõøºîÆEx²^`?Ö[ø¼#Ɖ0üåÑDì“÷Ñ™×q$ÍârXL/°‹Ó6*ŠR4U¸)Xäµçóä,²E?Çjx1ŸžÀ0Z£%>c¼®‚朕êS5LÑ[ÕMˆp`Ž\%¦ã#ý+VÐz{•ª/®£+½Çpܧ‚<óA/ÑeD/A%Q.ŽG²è-‹rQô׿T{±O̰_a%]¶ÖSõ·:a4"°_³Z#"d3r‰2FÌÆ|îß5Ëâí¢ÔBü¥‡ë«èÚoP6®dÅÛÄT|’Y¹ª~,VR1G„q5<¢cüT=£ÙTÝPâ>Nê‘þSfÎ {¤Š–ó¼/~Þˆ-û9,bmè²ÐÙÎCÁ]#ò§Ë=§èÓoߊ_]‘Ðìkoëg 6°T}uÝvô¿Ð-|~Öjz-šžµ­ýCjK_Cz †Ê ¡#…™"¢§EôúµÂ›”\H/¤Z´>éPk îÈÙ´q8mû©•È(ÎОHUQgx>@U+rRkºŽÅ\3‘ƒHB6œÄ1x€v¼÷ŒÐóEUš³PµAŒ|®»©ÆXI'©8]ÐçEKºmÇ!#Ÿ0ºps½–bunb,Ëx.Š¢±(,öÉh΂züó‘_Ÿ¡d‘Ê‘»¨“f½ ?UÀ“,ý¾¤ ¾”-Ð ä|Y›ˆNâ4U 9Ò7ø&µUÿ&¤-÷Ô·ý®úœW,ídgêNg1ÛXbÐ˸cÚkoŒUÃí¨ªw›*¸–˜äsvØ©¤ú K(/u0°VÖ_Xýa‰>A“B«EUt¹}‚š{ò&.Šÿ³Ì÷µÉ$gõö d1ò‰`ã}Ðû0ñF¡zÖöHu›ûðrk:‡óU=źgµQUøöQ˜9ÂØì<(¦Ñ)ó3]2ªUŒ5†ÏÑ{õ`±Úl_æ:Ö<ìÑY|oG|HØ7+éy|Þ¸•;pšÿq§ˆf\º÷äãCß ºêpýêRѨê(ôXp’=ÎênÿÅ›u¤ø"Þe\QTUzÍ^¬tkýȳÍSÊ›œ¸/õxÒG5^m³LeÚÏåD¬çáŽKò¦øf<é†Ü[W$ó\„˜ÌƒÑÛQ÷é kjc‰ù6¢1~ówîK‚»!ˆÛònÕT˜þSÿ¥/[ãí›êUEŽyŒ_"F\šÑHô×eDã¨ã¢;Ý ‰u\Hmí>é®ïJ Êê(á,œÖW8yq`²ßÁ„ß¼lÉýT”VÐP: GSÚ-€Ch€u\0'¨Õ”7Q›þàŽÆ 3ʨ´Ý½ÛɸÒ}ÔGËC#¨¦Î.ra2ò *bÌälø"ûêãE×ô ,ä¼x#2ò2ŒÀRÎHC¸&¯…Í~ÞÁ‘ÈÀíT{ž¯J“–Ñ|”·e|Åoò$6"{tSz¥§òÊN Ä(‘•F““2É`”àî¢Õ§ëh½^åà Ž¹øŽ&F·â Ô ù>†SI4óD*U×ÅtíÀwnIp[C4¨Ž¢›D“14œÛŠæHƒ4•@\ Ä4ºjx&ÓÈ%úSý/‚jù¢}sC?É3iñÔYÌpN šånþÂÝ#ôVÈcÚbuuÜMÜ;É{Ûq%$}Ʀé¥+¹ÁÊíùö}›ŒÊš#ÜU,ÝÁègAíƒâGu­„' ‡hG7tsÕÓh#½w±½i5 3âü|—^JMÇ‘YD#ݨÅòGõ¡<>ê‹ÙÔUDÚ…£"˜ `˜ØNäF!ú×X‹Mò»Â,òÑ3Ü‘Ë_]øqØwN£Ü”×5ÆÜ,¶cÌhY*²Rd>gXÐwWYR±Ú Fj?T†ÑÒ¨*ê©H¬6?ª©{¾ƒ¬2Î*—ùÌöŠOÎŽ(×2ãšôpõ•ÊÙûÍz²‰îÌU‘C¾öÕß?jp`EZc:¬¥~è7õJtÇXãµQÉ\ä6Ì)® d§5öÍ )ëlhµÓ')½?ƒwjJ^ÿÝØ ÷äríó·Êš¸£ìÁŸMÒÅÙÉû>d™ó Ñç8»«P ³ŸBèîÁ´X~!Š;ºRÑÑÜG¦qŸÂŒÍÂhØ 9)5ì<Û¦íp:~·†y¾úkgvW3F;»¸âe{‡#ä¬êÎìv³FùÿIÝo½T |²k®1›ûÌx³ qߨîè/§‹uäæ×ú‚š¸l½×·­cäsœ”]÷úžùæznZ¸¦Þ¥Õð®åÔŸ~í°†$}It „ß©É$gfw Ñ@þ”‹ÝÎ"¢ä2c2£!:±“«óx¼Ç'qŠƒQŠÞè6ºÇh¯>È'hþgƒl:åƒËÔVÕ¤ÜÔ—2«¢ó8ExÀðÏåaÖaë!­4ÆÑU®GƒEQþ…&hǧÔªŠ<²:”ý¤: IDATÍ6ˆÍbª±_z¨è£äB'ú‹êëVz6Ÿ·ÊË‚¨“>‹c(Ο8 h6íàK|F UO¸þŸ ¡ºˆþ€³:7sIªm·á´Ä'kß@Eeð~b¹¸«\¯‹à§áÆqÊ=K®Ö§uG¾Íç­Eb-¦ë—<ƒ'[ùÔ)ê‚Mx­ÃÅùx8.±-Ža5Ý—‡°IôÆ|Qœšá‚^ ~×OÄ}‘*Ãt3õPäTCÅßf_¬ÅDépU?X;‹˜ß­õr­êx’êIñ=8‘ØñÛNN—®fæbÙGF¤ž9Eσ7ä™él4!ø¹3Κ+ªÐìcC~Iýš~jäªô¦QÓ¬£_&Ü×U¸žòk°ïsð‰ æ5׌ ]Η¾žXaGY3UE«a;Œ2Ô\‡&üÐÚ/¶Ñ*ò3q²/K‰Ÿò²ºÂØÁMé ˆÿ‰5ˆ Ý¨B xŠfb»UTÝ b®ÒD{4Ã(=Û8—}‡~Šìp¨ ñª/â‹æDQ“ÿãåü†á mã²Ôت)ša¬ºL'Ѱ†¯ë¦4­’ú¾š’6…i4íW=õ,qCu L3¤Ža‡·”w¦¤{ƒï”?Á•ùy¿è!{ÑnÊ%:ò8E^7+;CR ¨•ÖÀ$ÓÛ“'$²ï™ç©}ÇžBcBz….—G0èqÜXýÏÞfÏðþîïkwTt»”¦I=®á¥=>¥‘.bõKÅð.YÁüÓ˜àÞ)él,ƒþsߥW¢'ÿò1;c±×*—|Ê<êKç~ˆÞþÛž•ƒ‚ö9×¥NöT ]r)“ȸÊ,io`r? úF¥¸æ¿JÉ^ÉyÇþNŠøÅñ¿W­HÿWwMÇQ9Õmµ‘?‚††ž‘s謘®·!»#;¦OKkîùä»hâ¯`/çòFœh$³;çè¥Á¥C’œÑaYÓÝÌÜÁmM2"}»RžúƒTcþ-ñ‰¿¿;|(«»­) —‘õ%ý˜/¥îI˜A…0[Ž•+Ã2zÃK¤¿•9-åMb¸ß% NÊ“|ûç<ûsâæx#pÇ“äõÑaéåŸÆÑ^]6Óë¬ÖB¹ˆ¿Ð2<•kÐ@¼ xJÓEo:q,m6rs²iפûTNMÇS{ xSÇë©©éÒöøŽ« »²˜&·¡0å6HLàíV~Kuuu¶9†×A¢²NÃ!Ú-ÃÄáÂc$c?¥ZCt0RñïÙÔ h;JQ[jŒœ¼ðZ_AÄãž^BYh…hM}äSaÒÔ¡T€îRQI|5óR/±%¢¶#Íü=äŽlìºèÞZŸj©áUG½y1Žþ0nˆ(ŽôõWËé!ï2ÛÐ[DpEQ…êÃÔt8×Ð﹊6DCjaFzK¹4h¡öÚÿè~å}åÝÌñ|Å7O ç®*Ê®«4—¥år¥ÌÀÿc‡ Ρ8n 'çàzª•‘×Áƒ-ÊÅeâe—Éœ›Be0Öp¾/¾Pu5èë|ƒŠ"Q,D{~*Š‹±ÆRQŽ‹Ë¼A—Ó!ðÇôHšÃëÔS:Lã¹¢=…cõu¹_T¢\½9Lü æXaø‚^‰,°Ð@ÌEñŒî# çÅ5„‰E´Zl§Åv-”æ±< ­¸ *ñ(\£øWdÀ@BÃEnŒÅ*WœHDµˆßè&˜‹ÃòÊÊ)j àb1¥×!PYt1~‚e(„^t’‡ðLš'>QwñÇÀRÁt ‡ußÁéQPMtç>(„V4—f/ïÒ£¹2$çÓoxO£8JÙy?ßÁ ã7:O9´Æ6iñ j沇ŒÕÏy:ÿà‡¸v”ŽÚèÁÈDeu3=—þà­Vq 澺gÁHÎMh†à—˜¦îëÒzªMÂâ™Fˆ.H×ÅJ$ ?0…&¿ë[z_չГç /5åHÔ¢­*VŽçoxÏôSF[0B ®dp¼B¸x%kŠ"ÔPýÒ;pŠëãoÔ•ûù‰¾Å/QYçâ£vv«?õ•9¨ƒ¹’Ýsƒ›ŠI!OóT.t,ªþ­‚϶òÅ[–z#„9P+¾ÈS©â×5âàçªkè­¿©`‘8«›éÚè Ýú ]â’þžþ!ú‚u6命&õgŸ7wdý°ÿœsdÅ{Å š.º;zÊ€™Sž¸ÌÎXègýn=Wíí£ú½CøíÍôXl~‚E]ñ›ÔÊ/.YåŒ"­±»ÐŸÒø*šÑp„Š<ÈÃ;±E¥ t‘ ™ÑSߣÁ\‚æ ›ë¢4+Ü¥h/7á6¦H~ªñ MǨOÄ"zM…±L—EfýõGšO×9™pnŒaÖû%&rx "bÐUU¥Ëø]W§†8£[AÒiž¤/óPró;Äð:Yz󬃥Ïé8¼Äœ¥œ‹fˆoª¾hØ-P=õ ÿãJv°ñ‘:b–ØDÝ86hGò9eˆ‰t’Sð+ˆ)j¡^EkåQGŒ?iý-×Ëù¢6FÐGUt¦”aØM‰ø¨ž‰)üÒrù&¢œ5F¿rÞIÈ\!Û¬¡9zõ5ê¹G†íÉ\<¡d,=é˜4<¾ä€½Ëбr¾¤þëâoäïdÁ+ý{؈È)¡Òù»¹]vÌq¬tD¹»„œ Zý4¼{PÙ y]Ýõ#†ݦ¯ôƒ3ZËDG|‘ßEL¢óØÉ×(šj󼥯\ZlÅ>ñ'Ÿç0ñžÿä/b-þB-ÞŽ«ì¹äy–â™(ËÿéÝFVê®";ÍÓ[Ñ…šb¹¸ zÑgßÄN9%dGÅnùÔ( :kåï\TuàZú–Q!Z®wcŸqY=²saµn ÿãÕ[Ñ™£D±…¶£¯Î­§«[Þb*Ú¡íž¾b^ dJº4mgò·ROÕ,Õ’Ÿé»"'0ÃØÁûtS÷MYX7ŒÚëºd4éêNÅu—GnñŸó½I}÷eaÚñ´Rn¤Fû-û_#Ü,îªéÊꎮqÆ~¹AXboU÷ì‡È«ßé=æ!tç(×P1 Z–+Eký–2êùšqO/u¯_ÍAŽãÁ£¶¥weª’µv–eÙ¢3—ÈÖ.[ö,Ï¢fÊ’5_ºÙ†GÏ )‘åTº.‘¢ §û^%2:ýň&ÙÞæèódîè|ésoÊÓ=Ïßr8*9MQ6õZ`€ä}•2×6ìÂV)NAÌ墠{“©0Ú8§«ûÊ:Ë:?¸ÂÂo‡ÝÌÐÈ,%”9Ï^é™à FßõÔ¹3tš9G6Ý@èv°[­×ÏŒê<ÿÅy5z’b -Jø¿z ÿÄŠŸÎ|½øþÝÓ³ñ‹¾ù°4Ð6mLšÏó.?u³'Á^âíg%è¼V.q_~p¸Œ$YÃA®i4—¦ÓÍãŽ1ÎJržYØQÓìA)¢)žÑmìÔd Åãµ-¦bwÃE5OeA.u‰!ê'Îζr€ÙÏl.gë£vQ„>èò‚è‰Áb—Ȧ›ê‚àÁa„pO1‡–¢1ÕÇ{úM4òš±×ÄCW¿Âþ„ C!â°ÈOmi•n,êp¼]SnÏé®yÚ¹Ûñ͸ëŒ}ÌÖ2'kWI³—œ›u}¦/®â¹™/§kÞÀìU6ù{Bz$ÇÇþêgßI»§ëƒá7;Rt¦)PkÌÒmáÃû=[tuu•Cù_ö"Ú¸À°R4áA|­§\­ð]ÿ­`õ×gqXö§Ãòã'¿¢·fYB¨;£ûüÿÒA¤ç¦H‹t<ו;©VÊÿQQ4ÖÑ¢4¥Ø1f Y]m4öÈ"ÖEÌBX  "ø½þS¸…úŒC\Ô[Cî—À±×ù‰s<6°‘˜ae¦AlâÜ[÷§&tçù¦.J?µS¿{¹8ÇÓ”å0ŒA.žƒ'˜¢¿ø—¥·`q•Ëa¶©—Ô‰¿êò¨…®¢ þ&)z뉸 ‰™"ÙÜ—'ã&c/1ô›¾A!hc}§nôYíïÄ?Ö5ÜátžˆO¢{pFU’ÕÄ+Ÿè)3XkDvyŠ7°nC]Ѿ¡-ÿŽlØ„º q[µÎÌØKŸÇRªÏ ÝáÇ>ăñ$¨·¤ôz¼Ïßõ4>Ïy±G¯ÕGt)üÎús5>BK¸îƒ¨…õ< ™Ä-zŠT_uÆ_ÜÄ:D‡PÌ:IGÐ,p mO–ãå"„¶!?å K§çRú¢Ná *ŸÞN•ù/ê‚öøŠx}Ÿ)3ˆ®TŽ"©mMÈKMÅf‘[.’¿ÑC9QÎPWõ3zh_Ó/õ»¸%Êh›MµZñ@” lSç8ÇjžòË7/ðß·ó~Êð¦ñ£ç~ѯÕ×÷‰ê‹\º nó MêÂÅÔQ£%ñM÷бŸZù$U¤áiçST•K¨­.K~,àcüžŸ©t¦ûº4ïÔ­t8Å÷õ.jJ£è݉s}.«—QEî§ÆBîÈÏͧH¢€h¡‡¡ ·§²æ]X7’ÚþϪãŒåÈàM¡åÌpWŽˆ¼Áîàô磊GÄfl_ ¯a8_Dî·ÖYuUùÄ Ä9?§ Kÿë pûÓüe=‹¼¦?ŸÕØ«J[á©ÙíÏÒ¤‰JiÅyx„ÚÉ'ƒãíûéÿý„t¹3¥ψ˜ìÌÌói»³R&$êD;«*¯Â¨&ñad§·º>§£iÌ£ñEîVEx“XÊÉz§8$B¸m‘é3Â1uˆ ³ý Gpž'ˆ•TU%¨,/[‹îÆFYFn3kÓv<‘ótW]H‘È!6Xiâ$rÚ«ù%_–Õ¾èøÃ¿Çî.rØT Ž©3tËuN 1¹Fs¬øÏaªú‚¼ßWÈ×9°Ã*«cšï¨GÌÖ³[–£"T¾IÔYö©;t GVZÆy?—Þr®ÓÒ†gyÇzJ%,ò¼û>5v£'àI~­w&_öͳ~øVy‹y»³­ìîÑŽAeBóˇŽJãåDê¬x"*›eÄl#É5@61.Êûv ûKj#{£?§}Žb»kœ«{Ðð˜tiá#!,6ôOZêºjÅ˰ŽfjBh)st 5¬BHac\È«cD¦n‘¯»rõÎêú«ÐÈBårôÏ] S¾EyÛ絃ߋTy%°ÄÛǪçÏHåEý4|A;;Jë!¼EÍóŽMH V>ïOã• áûi‡#.j.?Çgÿ=Q7ÇXÙÜÈœDã¹vØT¶a¿²§Û§x;ÁÞžJiCðUŸ•óÍÞÁ$3ÉÿÑDw0Uåßî4:kÖãPçužøŸÏ«–Ø9›(·réUt†,>ÉϱBŸÆKÞ/<Î]DsSD3#EPƒiu¦L"J,@GUE!êP~q{Ñ»äö˜1v²Å Ä@ÒÔ]Çð ]Rä§IÔ€‘C$è©:ž÷á8?Q¡4šŠZß)™¯ˆˆçÃfUr È—æZ|R~ªN+¸ ›ú1Yn-›é‚=оŽ÷|çiŽóVã¼ÅuðUùG²Fš†\–7Ò(¼@m@ôÃWæ'(O ˆ¥]4ƒŠØ¤ëé©ìD/zBU¨ý ÏœÂ×h1,´ÐÕi;%a4gÍ4ty¾¢ÇPoÅxþĽ8íé%oTM¹£:+ró)z¥kà/DU‘ÇØÌE8öð+4¤8êKyôØ[¥×Od}CjË;E!dEyˆ¾+¢E ^ÊÛxxÍ£ôbôæ—¢“¨ ú7‘]©<òè¼z:_à¹ØÊßäQúF¿°ßѧù.ûÅ~ŒÆºƒžÎïpO»é®(¨/è¥Ü„¸®î†$¡üxBñÕÃ,~Ω\G=äòôšôžº£ –ór®BcÝý¹§]A39=­ç8ç«Çªœ8ËÍì{4ês a ˆP93_Ûé“uI¼”û9›}Z× ¼‘UèÛÖB«¹íŽ_òãð¯CÈDÍåjÑ¥äVªB§h"•áçt_åx³ÈiÖUkø`à‡LD+JÆÒ\ŒçpK„(À/¹0©ìôœjj;PU(žR1»ñ}“šQec‡é¹è‡õêšP6ºNcðU¹ Õ1ZëR<ÝŽÀQÕï|ŠCBZ‰~\ŽÙ§yaà{ §¼Fà3- yæž•æ ïéÌVø|/9R”¦Úâ¼èÄKÐói77^ó+½âÙÈ"2ñuµ…nc ¢i'ÇéîxJëdÅ[ÌP§ÑE±Çx>=ùé(=áb1õÂÑÀ8)“Q…ßëùº§=I Uw9ÕÂØ(šŠòý÷x%ªÊ%º ŠÐ(ʉ$µWeTeE{„®Hp’úÛr£¿²É°öyoú‹ª2jµ0Ú›Ûy‚ªb¿ví Ló­œ Û–äXAyX .Í[ø*×­ñFOó€*2Ä5Ñõ1¢¤;»k†HóÝTuÞ ýT<ñ©ý¿€aO•ÛÙ ª\áq^äÂþÌ…¸í¥~òšó°óM´zú²é¼À×N¾tlˆ¼m†¹î‡õíHéDC­«ÞF©õÕzIêåá¶ÆcŒ°«Ú»y‘¡t•Ïúªo;i³ðaŠÞèH}ÚèÌ{xšãPPs/‚¤î¾Å2”s<µ‡ED?`­OXO=£½ßÎúµ2vdZ<í'åßÝÿÒ*aT ƒ†;ʸÚû*iAjV]\”ø` ñÌO™i®KMöçOÍ|Ž&¾ÞݺšuÕSSÝòÔòV5¸#i–sNX’³¯yÅléþf 6î\{ÝõîÀ5š¯{ÊxW©ÔW÷aê®å¬kçcc u p?gs²1G¯ûQLIÈ/çèEV®è¨L¬ºÙweK =…Kj‹R¨&MDF9’þ£ªˆµŠ Û㬠µAµžs6ÙÇqB G¾`§,ÎUåœU›•iV¯ù%^Û}КWËGò)ÖQÑYV¦¼´ÄìKÑì•Nýæß°mDvNEÑçxH‡i¾ÓŽÐšÚãwÎŽº–.èø“†QLTbºzá=•{Íí(%¡n¹BÛºŽFÜM’dgðvÃHûš55ùgcÊ©@vï«€3ðÔ_FOÀa=JϦ" •&ÊÓ[ž‡Œ"L¿@©iâ ¬F7yR”¡ò,-äö˜Áwy ót1žúš—êmÄQq˜£f ·5_QÕåjq ÁGW‘YåC64âãDE…é´|Àÿà¥é z.â7‘]<§C¢‹li¶5ö9‹ÚûøouÏÎd÷O–5|æeµ’²ÒvP£µÜJÿ:Üڇ¼Iþ&[P:‚a|WWºwe§ú®‹á®º+&êAÅÓÕ@±‹ÊÐÝêSV4 KÑ 9#…rþ$ÊÉø†Šá)¯sér=¿EEêA‰h„nz#U@ ZE7x¢>ʧÕ#î$òˆ—z3Ÿ7ï )ÉovÝÉÚJš~0ø*:zéTG˨¢ú¦«ñß¼xçÃ(ü4 Òt30Þè z „Þ‡:4VgS½ù"örìáOxI‘´B§aª|%ÿ%NˆÊØ+ŠÒ¤á£´P6á¡ IDATE”¼Iq|…{ŠËTÒzÊ×PÃÿ7n E×é;ÈH£Ñ¸e„˜w­žâ<ÿ†Œ"‚Jc6@ˆì(ÌqªœÚ®[Úóuœî¬ºé^˜‚²/®ê[úªÝwÕúÆÇÌ|æf¸F{°„ïS]Ê¦Óø­äö8{22V«šÊ¤Ö§ÄYZùûר&öa1I¶üxì¹ûí~ì&«túåbÖ‡Ö‹!³‘"R,À_h¨Ý0¨… áºâŽ$³ƒLƒ<®²Ž±ä²¦Ò¥þ›2æg3še•‰訜X PG†ûUw¸<˜AàMF û¡µÅÞb¶šëçaÓ#GFm¦Qɤ^ö¯ô„ëYüL/÷-LéÁõ\ƒ9·ì!錧Õ(„Ý–—F Ÿ¾Æ;jVPü¹Ì,«ÍÀ9Í,â_kL1þ¦J4ßQÖü®@ة舤c™"üe²šb~–Eø©Á9”ÇZåxæ<\5¼dÄ÷»™jd|ödóåS¥éˆèjŽõæòåÆ /âZ~Íçxä Dž¶l_)»¤QÒLuÅÿ kTÊŠÔµö%Ç5§ð×28ªJOЧàöîkÁÍÃêGÄ ³Œ ªò½Ô·“?üú_2y\ Î׺GSE¢Î6$wë̲´Éô"ý^ï¯Ä.²B²/¶Ò‡Dõž[ò2´¥DlÂgÄ×t ÌnýJÆcþ“G©)š†AÕÅ,íÃuÝSïG%Ü0?ˆ6"Q®06à¦QÄ^ù4LäÆ-úŸ\ɶx(À’#è³\d4—Äï´A®ÇvTC6Q‘ê"_§–|œ«òBºJwÏ  ª§ªóHÛ‚NpN±øNø>$«„\9äšë!κJ˜Ýé)Ap›Çðûa”ìáF«¿¼³½k¢í­¨„(h·°o‰"TNÜšãŒVÊ‹ÚjŸÕ„H»·£ºí¢ ¾ª®©5ýqI÷BBÄNNâ=¢†ˆáˆpåp‰ü&—¼¥Óêù÷‚¬öfc­ÃFÞ(*É‘tWNFWÖ9ˆ¯ñ5ýyºqÅ)!„Kè”lô¥jššÉ3t-ýe8JzEŠ®Ëè‹Æ )&È–òw$ Ä\„{âOÃ%CÐÁf¡ÅwõZ]RZ7ã:èˆ*¨O¹,WÔ9ù_¸u^û!"G`ý þ†ÿ¦DÇ '»‰?Iw©°žŠ\œÖÐÇuðŒÖREøè!z‘ø‡¯aŽÈ†]¤^ Õu8/×gVˆ3ò:É!"=DYY^ßâÿø¨IÕx%fc)¡ÚÒ®&ÒÈyQ‚w`=‹NœŠAT•ƒ¨®Ûžó™«äeª£»é¾h§½zw)Ü^ýòX‹åFì³=ø>ã®ZÇËœÓu6ÑBʯ•‹ñÝzÁÏ)ŠÜº.¾S/‘…ÑmðÞbݱ:N/¹1…Š0:IYђѪŽXê#Èkr({ð”Û±"Mé”»é!ò ŸxIZT>ŒÒ±ò²óy@žÀ*j£TŸøÜz;vSIŠó"Ä(ÈWx—GVlåOb8uâAz â )È€©23þ‡}Ü ß0ŸW ï|Tl¥›b;¥Cvt¥e˜#þ²×©©ò¢1Å ¸šÍEPM4ÅSji–¡¾Ø¯Ë ‘²ÛóCò™ùÄ39ÓþÓJ°Ë¤ý)^ŠnÆO±‡}ÆŸÎðc"îá#º‹ ¸¨÷ª¶z  Xê Ÿë×Öl#ϱÀRL6‰ŽʱH±Nø¹%bÕó¡ÚÈh·¶®yÇùj¥¾L áOv{÷I×$ùÄqÅõ£d\1÷c•”WÔUÝÕ/­¬O?G¼ÿ‚bF\îbÎî/¡=ícwV=PŒ4Òán¢¯¢+ NÀv$Ê ú5<â ø‡ü'E€–pf»ˆ~oݦ˜‡´]éx d`HÀ+sØå^UÑ>®ZÓ[ê!·³'P‚#âzÇõõl|+^½zW+(à.›ïcЛЙAþÎ…BêVh©cÔWÝX®”íœî x #ÕÀsû™ü‡Y,ÃÊ­M¯×óX W£Ï‚þ)þ‚Vek6N‡. ­jþpŒt<;¸¬š.§\Š_·6¨™ÛºÂú¨øk‘oº““¶1íbBUÜä5TCž¢£ÞGY‡È:K¨°ñH5Hœ¯(AUQ8œfYnµŒªš/ìHN=Õtß%n&˜½ìq¾+ÎNÆWßýˆð Ž£Ü3ó†Èæ´I{5d³—5;éØï¬íZá¬g>‘W¬Wv¼·»?&­c²V¥íöUR=²îøvù¦xçYS¼ŸÓ‚EÚª†2Ú9E\ST,Gúgù¨€¾ÍWé’Øì(Ãs\†£‡±7,W„rwq šíˆd¡>znX#üK=÷ý|O1ÏŠÐùh°«T«>-ü^ðwGaù–7y ï Û´‹A5CCÓOH76èCÈà ¾ò2~áµ~'Æ¢ —D-zMAÇgîiÒ¹U »†š¬gÙ#t§êYÖeï9Ï>ߤ@ΔÍþEþ{xËŸ°Ä¹L.Ãu“Œþ"§±Wv0LÑY” ctNÁP”åT˜ò .R_ŒÕ=E^®®6qŽ·ÓFz븉5XÛÖ8ÏOÆÔ¼)Ñž†)ïRÞë(AÍèÞÏÈè$~ª\ÖgÏÏo“TSŸ÷${¦ˆŠ)¹cÅ\þŸ¸e„¢÷âOz¨þË® PI£Ë²GD#¶é-8kFñ\œ–>¤£«2‘NS>q²Èþ4ÊÓMt°“íŸ*ÎjhU ”³"Uv{(‹­Ås´Y«dS™†NÔÝh¤!EQ:Y‰Š‹qâ‡XH_¨:‹`9PXB‰’ÖÝIg¡“â §ÇdJjd‰ãr"¾`½HASZgŽ‘d9À@]‚á‰ý7êìúçCDã‡é~®šûïËæºŽÝ††sv®Íƒø_݇Gèé(˳°H•ÛÄ:•…v‹?8«¿æ\ƒ7±Ïñ h(V‰ ²?} ùî©&â&q=º.êˆ;h+®Šdçb Îà‘ã¼ȽÄ0ªÍ8Œ(O¡øA{h¦PtP7‡]-Æj䤂\ yåmt§çb®ÐUÑNåP?©hÇGEZÆÃà¦Ûô“EAj®&’¢õ¶Ÿ'ñmlÖ#øž9‚´Ø'ës*¦^Ò¹!xHùè_ž¢s ŽšS[6pÍô½žú N‡É ô—©•aÉrŒQΨo š~~ÔÌtÄ(IïðŸX$þF¤±›ŠÑPc,RÄ #+Æ XŽâͺ4]âšüRç§”¨_#Õyx£öª?°›£ñJ|¤±<u˜Å Šç­ìBŒJ‡Tä㬜+ñ7ޫ✕Já”v ÄCÉtEž¢Z(4T¦yœˆ««fŠâ¬n"³Šž§Gcˆ]”>c>ˆ;æ Ê/Êü¢wÐÄfü¦+ê.z]XÏuŸ2¾ŠwÆ4™W;}ØÉOP–òâ1ňêCsé>Îâþÿ ‚ À*®% 3sw÷i<‡àÜŠ»Cqù¸kq·âVŠ»;www÷w’ç»÷Î?×ð>~?°‡62C&#£0ðL§¼"]/eÄÀ.î鼞¡Œh’Ýž¡&W¬åÈ€–yͪϋÅjZbm°{Œl¡?c†T£­ ÚM{ºyƒïù1Ô&ÔÂÛÚèdü>X‹‡o®æ>á¹Ò.ô 0Ý_ŸcµÆîªê¤vÛžfÆhÛŒ¡áA¼`ûÝÊ©ðY-7£=£<1¸1ÔW"ÞW1xE„i™DSñRuR·µöꮦ÷àT \ÞÑ}XŽNªŒž‹ÕÂÛ iX«ðxœµaïÃÚàƒ6ऻü“rjvnCÿ Ñ%\«µ±‚ï`:~çìâ9>°*a6,‡¨"ê§ú€31×TIÕZ] Õ9IŠe³¾ÊÅÉôŸ¼¬âõ»° €vŒÐ?ðÃÜ&Sp/Ô3ʉJÔ›Únêå ‡hé~dƒ×è&n³4¾dËè™äYøþí÷O¿Vò=“yìŵ­C] ìq®å2 ½–w„w¦µW†Ë8Õ¨iÛiÛ½Õ)óç—m¸›ùOð¬Ò¸š•-TÙ369üçÁï_¾µ3/Qç«ìgÓì©°Pð´}tÔJ¨‹´þ4žû¨ÂÞ·æð@«£§/{(LÎm –±b‚yÒßšŒCB_‚J2ã=í`¤z)õ̶oFsc¡-UŸ®9*i  g'Oðl²¶9Ç:^ÚN™£Ýÿh5ÓxÊyëkƒßll"Ìæ¬_RýGé$ÜPžÐÕS°ì®Ü¼Ô¬Œ'CÿY¹´¤ôúþnæ?ŽÙî‚ÐÂ:#ýîæÆÌ‚ðëá…ÁUÌìÎ\JÂq(keNYeÚ=%¿Vzs÷gõÓ·:¶ZÌv÷ÒÈ·‘í"¼ÞKf@”4"õ;x¿h=ôQª°¹ÛJ€¹Ð7tPB{*¾‹&úª$ÙwX›C¾@Y13™%´ÓPÔÒ¥Ø0Pݱ˜ õÜ›Sì2z«·êµqwj ²bVȇñ¦j“àœÕ‰r —3¨¾œò7È7ñ Ä@¬á“:FkÔwN]ýCså±Ðßdãf5‡W€Ý|˜)=x×p²C([!Úc.TÊöÖ}- Ïâ3ª?4…‡ŒÆ6yõ‹z^Ë‚²/œÄù8Ob/œ¯e΀Á_TK=¡éø/œÀ p’-ž ¦É¯¸¦ÁœÄûµëêwU×"ƒ¬‘Öm5\Qeé°;·ˆ»´»ª=¼…8KóDÞEJq/‡ñê›9“177–j¸h¡*«•TŒ—ƒ^ã\•fåFÜ+ã¿Ø'b/ú‡p3¸"s«?åq³(Ÿ†l¢­„þ¸:Agî/Ô[ÎeÕÿTOæÞô 2Zµ‘a5Í„öcqž’pšŒã@è W‘«YSW±/µÁbbª‘ˆ;ð4Ä¿ §Dðò>ÕçÁ<^%3@ˆ¤¶Eë hÞ–ã¨"¼§v8FðYèWÀ x¹žóâ\ÚÇ©,æ„¶üLm‚ÏЖ†Ãn ù¢š„¹Ð§fðÇQ0Ò©e}ñÌâ‚ø.ÑCžG1 áCÕ&ðT8Æ«™ 5°®È¬¦ëx–›b8jðÎÚ‡?ð‰Ò Ä'á^£&0P4À>ÒÁ¸¨Ì71ŸáaˆLØ?Q'¬ ®‚,TŠª%4Kt׊7œªÞñt½*Œ€¯´\</âi\ŠYÔß0ï«¶2ˆTYµ˜ÝXÎpkz€5à…ºàæÿÁÎU¨'äÄ |—R(›Ê¦Þ¨$k>|‚#Ü^Ä"›XGËñ®ÉM8þ€ùð*hUèO(¹·ºHóE_ŠÃòwþ[½å˜EœÂ…°Hvâ8KEó"ü_Bø*ƹ°´ˆLØÞê‚MéoªÝ¤‹Ú,øK®¤kb*¶p„h›z O¸&hðLåDŸE&ø‰fp\Áñ8DýGí° 4¥gð7X¬Sª¦«°m¼Q;¼ª{¡«~XưáhD\vosüãÿ¼ˆCôkz„hHcü>š§opœŒé™!”¥…ûGTñ˜v?W'Ïý´P¤ÉzVï^o᤾)k´1ÒÂÊ…-mEˆ÷‰ 1Âv/vaô½ˆ¾êFáKï¬ä3áõ![º.<þF\>äÅ>´ܼ?jMé*·“ã¸"Æ/ôPÍ5 ?ê*·@+•ŸŸB7î wq$—åþÃ;ø%jb^ƒè6îR«Äv[.Œ ´îq|h/­Åâj¶åߨ­M¶¦@ÖP2~à—2œ“ùGÏãô÷F@Ï®Åã½°ò„²È”NÊ¢¿®Ñ8è*óT )­ªUh„·²úHL+šïÍçÙd¾÷uñ}5ãƒ]Ô4ßl=Æìj5R¡,tÓÖh5(Nü‹a8G`1Ñ>˜©"(ãfšˆÝµ“ðóQ+uKËï…ŸU vB‚Y ã`t¨ üÆ=UM¸Œ.ºªo¥([cª‹¶:†¦i-cFÅ^µU ÿݽӥ[Ý­ÌZt`y -PýCÌ®©ã½½ÔW3YuÁ\*EÆË}\QÆXcà§Éº´ƒ>«]x“嬈Y¡3,Åš Ôzñ$j„‚ÒZ¬mÀª"ÑÞL–ä:Ú*èA–hŽÛ…]ŒãxËSYšBkä6~10kÉÓªjeá ,ƒ8¡G²)þ†Êl×Öƒ¿C"°&àmmõ¢ëyá3lE“‰RªÐu5MEÈÞô z[ùø¶[Ÿá2ÜWíUwþ‹Kp _æÛBÇ8Y†®boÕ v°ÅUÔLþK^¤N¢'`5\‡¡FÁñLTÒ¢Ðé"·€ªæƒÎ–ƒ_ð-Ø p½ºØ‘5.½ð&O›x:|¡ç\&@Y,†‰øLÁ Ü^ì€aP’[q1¨H“ñ"oÀWpA=†U¼_±…mÄQŽæbTÞ©–à‚+ð'T¦å|ˆÛ¢É¸&ƒSŽƒFÄR.k³Tfl!ñ8˜­àü°í´‹ªŒ(p§º ×8ŽëÂt•„x0•Gp'(!<„·iìÁ«bƒ8Á{(‰6Òg\ÃK¹7ü#'ÂLø¦fÃmjÃÝ9†jâPþ(ªCÆœ:fÅu¼•úC)œ‰÷ðF«¸î@,®ãFÜNóNl!–ãÞõø>W‡P„BC8l•†CÜJá ¼ŠÏñwêͱj/ç°6a"æÇMXKÁ2¬H­q5 B+ìKA‡Lpœ¿ÀN¬‚¿ÑHÚͱ+Ô¦†ÒjS|DùE)µ†LL¡õ˜dåP5d †S¦ª(Ž¥j²9vBk%ºé ¡Œ0xÏTšüÅûø6•Âp}%—Tgå:‰à EÓY1,ñH°¶L<€/Éyš‰gÂÿr]3;|wæEá¿Ùÿ‹Üíª¨:Å\탭Ÿþ?1ÈÈ©•SoyM¥/ØJ/¡ÇêIŽ)ŽëÆX½[ä#õ tÏWØû9©áÇF~gš+¹«±ÈUÚUÖvÀ¹(f\ôɸ­çGÇÇÎÌüï÷¯?¥?RÙBWñ{TI+"1SÊš_­}›‚§¨Å|›ŠF©ÏÆùà×Ò• kŠxfQæb_ù–MåZÊ—x ¥“à‚m0ºB=h!Þc}Ø,â´:ô‰ÓõÁÚ~(e ‚–ÚÑ“A~L¡ Љ§á&(a¬ M¼G®—u”=06CwóžîÆŽ<&©?ÍÊæYs™¹ÎÈÛêeRv(D [Ó6U†À:xÎwø8|•y&6ÆM<È:jú¬K<ײ~%DïXÖÖÞÕq$üGÒæŸ”I ¾åûÞ.ýˆo4 ôb¿ó™Óc•7jj‡-‡qÌ6ÈvT·iÍôl4ú¨¶ôD»FÉFÛd˜åüêøNØîÙo `‡phõQhçiÚ~½ú9 ö!¶¾C£úǶæŒjzp´/2-ß×Rª`pîÏî–?p>m³?ÁßBmòÖó\L­²£g‘vÿ•èÍÍ>ÒfMÓŸŠ[<À,+¿¨#ÊcÔnºGNãeÈš!‘kQÛZï s»ÊãËÁÒü_`)Þ1=híEÇÈÈÇa¿Âr„)G¼~]+HY­‰ª¢¹,­®–GÒ¸›:›jó¢NFE¸EŒ¨n 3ƒ½ ÆZM‚käø¤ó?÷ÿ*–˜üå{bþôb)W“~ V lL{l<TWc¶†ŠÀ .)’ƒ·¦uûW0åpJ}O·ô©­•=pÑwßßæWÝ”M¿ª'7üu0uPòf_Fo!ß=ÙÓübéXOæ°rX«ˆéñŒáòÒæ»…¦YÔ³'-_cíƒ,kMsþÔêk‹ÃBZUøáˆ&aµµk¸:¼WvË4~ª3fgÛKn¨jêýð9\Ò?ãyþŽaI5YÔIJê X ¸·ê¥9vB;­q8Y‹Ç¢:®“mÝÁ Ï¶y˜f;à§­±—Ô»+h ]§9'ŒÆ,Án•FŸU\è¨$Dz¾«íÐFó Ôà·)dR1ŽÖá\J…ýØÆÁ8Ì9×ZùlQ‰²/'³Gî‘aüVöQm­Êò!ç—Q°Tì¡îh‰þÆ= ¸Ã…Ät«åÐ~È‹pòÂ^8Ê7Õ í-¦ ˜ ‰3ðZ}~È“Eš¬¨.‚ /àwÀÅø—c/ž€åè§PQ­‘8.âjMð²˜EmÕbøƒ'U3½øÊÒ^:Œ7Åm*€Ùyß)¡œ<ÂC)·ˆ–ŸE¸ç“° &ªYðNSA¨ÄOEŒP9Ô|Êey&d€jbì‚^ÐŒ^@!Ë .8 —TNN8r‰™j›:Š!æÓ&±³ÐtÑgó<¸Ëã` gã¬I'ø צ/PXU£˜ÅœË±,3D@šÞ„ú0ÛàtFÄv\£ÅR.«ŽóWy^ ƒÎPFqf˜N…¸0ïÐc8–’‹Á8GM° S(6«ºXŒGËyüv«O4fñ …UÕ‘"`ŽjŽL9¸ x©.|FI!àï4r`IÛQ¨‡ŸõjLÖsÉê%f¨‹|&Á èÏÁ™¡¶€¹x Vðrñ‰ÊA ±Y\Ä(ËÂŽü§µƒ×qºùƒïñ\g\NCmð40?àNª æ…‹°‰ß©9ŽÂPWsaö3KqI¬¥ŠÂi#u¨@ÏÕȈ•UÇŸ`Gi½vHUSE! Œâ&œAm2GXñÔ ¢Æa™ÅùT3ÙX´ÔR[ñ§žß>Qo-F;òé?Å"=QÄhK©ìÇGj΃͜‘×ã^‰M!¬Áœ"9¨>ⵟçAu›½ rîÎ|ÕV2*CdÛ3{I(@05Q-C¯zÁ·¶Z%XoðsO§Õ8 á.ÚDÿƒwhl-„ÝöîÁ!ÎXå ¶çì´œj¾ÐRÂlÁÿ}ù,½ß×íï®x}…O3¼aïz¼L Ós$õ×òXƒýU#ò…tVpg²ïÂ󢬷†ÁAØC'Œw¨/m3ïéºÖ$TC«´&h#i9´Uø$ůþUeTNà* S4MâyL€û*ƒÜÁ¡“ìfÖ¢ìV}k"î§oÐ?«`™µÑ6U]‡zÚX,©}Ò—sqÎö@üj‚R¿ Ð蓺N+üw‘.ë#´D*B#ÁG»éVâ֜ƻÔoXÁXÉÕù'î”ÃÍãf kJ¨Cð:•ÿž5ñ¬ùü>é`Z¡¯/RšøÞ&zRºxrû¾É㢚+1*ܱßý&¬!´rsàâØZ³A,Ôç ÿÄ·¼³ªV>]U¬ÙÍvÐvÝFŽ#Î4gŒ­†ÃÐsººÃ³Ü•Ü­\3œg\ÕôFv÷€ˆ!±ý£*E<‹ÝÝC¿¬‹jµ «¬ 9T'ß”`O~_3$6·>šm¹½ÑÞØôjž=žÒ©!ÏGÏž”f¾Þ#Á)žpß|¼l¸ƒÝð.qŒ2íÝâ~muyêèü/ª¿ýîþç½?Ö‰WéMSÓ“Ú›„ûcßhŸâ>àzàîf;à|e‹Ç ¾PàqÊtÿùtígGëzð¡iUM ɺÌ_ÔE•Çë1Óž¦ýú~üçù fî6Š»ºbÙˆÌaÏ­öG¶ Z3Ë,dßöýÓÏmê@Ò%_~†—¨ Upv>ÃmËì'¢•ˆ¶=…j¢c”u„\ IDAT]|·=-ÞØÓÜ["´Èeáó" bil@n0æTkvÚÝo?ä·ôyŸ[ù?x¥ôV/Ì»ÜE,ÓïjïT+£¤žÁS0xv¥=ÿåÁü¡U¡òš²NÈ+ª½xÌïe'Q_µP“ÕÔhÈh†h6ÖÁSÔ„*r1ˆÁ2¾Á*+ |PKx(ÜÁÆV[m[¾a8ZÖô4b''Xï’úïðÈÑW/fš±t–lám³„g½äÊ÷)j¦ûg ,½›Uægâ·ÓÁ¥Éý~Ü´>,I*`Õ÷&«­¸RŽ–‹Ì÷ ÖóàEØŒ?åW¸GøoÇìjzªŠX‡T¯TЧEó ™(…j›©…~YoEí´"ú6U2ˆj‚꫊ài|§¹6§B°@=5RÍá6tŒó ©Êñt b^¡›XM-APŽ_ñFú)&«„ÆPÕ*h½Ã–ÚpÊM9¸6äTŸy vÀE0 3Côªwœ¶ÊÚªïWsù²¼ ¯´¯ðŠ“Ô*%›(‚ߔ)/ËŽØ™ .C¤N|Ÿëàx µAÐ Gˆ¸]”ÁX™"µ…rTÑ<(0wç¦Æíá M´Té°Ò‡‘|úan¨Ã/D#E—¸²Ê£Fâ#nˆ\ëè¯ãš0B­Vȩ̈Út15´5úÏ×@>ç2Zs§Ù«  ]b8ìƒjó]å§TÚÊ£¡yx¹y +q˜êg†ó.¸ƒ›èýÄÚ4\äMè“ñ ¡ÂpVP»ø ã0ˆ…ñRÂFØ)sˆ¦0©-T]h"\6ȃXל‹¨Š½#Œ†*8D fÀ÷ò(¢þ<ãŒM€tßq~.µ`œJÀåb-.Äûð‰ÿà£Ø€ñ:(|­jse.E{1®²#PI…«9g YƒÁAJµÂD ­½%³[y…›ïram!|…¥j8e¡€gåWÝBcµ¶ôUÌS› z@ôÆ]ÜJ“!váJ±^ âv^À÷¡¾rXyŠUÿ£‹*?m„?Eé¶N ºC—ÅAAÑJ›Bp¾0'©AÊÎõM…õE:7§îàQwƒƒf ?˜M¬_ò‹†$ÏÞ~¼¯0-½Zɦ^,ÓÛ„ô¢ ç †ç^Iµ‡"‹:ËÙ`LFÍÕ!Ô2Ëɘ©F‚ºƒ_ÐcíU…ƒ7UYi¶¸-ªË¡ƒ¡p¬&[òoBòDoÂÍ_Ž>øÈäm‘~߬¥Ítô³žÎx¶ŠÁ?D_÷’Zž½<XéZÄzK~>[él™^Ìü¼$qȳfoïzWú2™Ac‘~ʦE5Rl â ”ÓoëÙy’J±=ö{p³Ú£æ«æ¢-Ń]~Q‡yoÁØPŒ‡Ã8®Avü‡Ö@3Z¨¿&¦.˜O©7î~T(hwm7aX(Î2hfˆ1—h¶\ðGØÊëSÓöå›ü«­yˆ‹s£Pn«ô½0ÿÓÚZÍ‚uð¡õ‡¿¨LäX¬¦ª˜oà=Ww ûñ‚zhiŽ’ÆTؤÿãxj«b̶¸,.Sæq6Ñ'|hD.Y/øŽé6ÓãÙYÉžIÛ– ª†^Ù–¢ß_Ò{,0Ìœj …9†Sî¶âĹ!4ÙžØC7úWÔB÷“°W1½°êleõåE }Ìœã*{jjÚÚ”þ¢$/®»8ïsg‚ÝîÌýýÖç£úB ÛYwiÜl+b~óF~zñ%ZÙ ¢Ó6<,¯þX” må9§·†ÖÞöʶD»bË‘âöسÛrk7ø‘*«ÕqlÈ ‡ócû<ÑiBƒä&ÙýcÒúø¦'åO/åí—Þ#í¬'Â-0Èêe mMy}p•±Æ0Éí\j7ÝyѦˆª£^P+WKÓaFȬèÿ?à&'ÏðÚ´éÿ™ÎÔ§ÁŠfÜ¢Ú`¹D¸A®îÎÁQÝy-βUãvÚ"é‘uåïÖDõ@ýíkº¯Ö¥ÍòŽHÏém:¢.˜§Œ6¶FÎ!á…ÃÆöˆŒ Å|Í2.üj䀨ÍÁlž[>GÒåW?¶òÏIùùó…<˜eÔŸŠ8ºç*䎰ÕwÖvuîs4·7Ô·Ñž,[éµ+æ#÷ökæÄáì$›„m¦gj±~ÚÂ@­˜­<•wç5Ãï®õäãô¬ê¾ £µÅª -&¶‚²9å×X‹'ªñt_›£—±}ެùÁ1(Òe«a¿iç"öZ=H ö Ôá翦Væîgº[þHóK˜7‚õÕå†ij¼•"ZÒ9]âwå´Cª‰êн€ ŒìxE®’…UŒŠgECÑ'^Ãvh3p³˜ƒYð%u€ß0šbVÕRu¤ep_‰âØ4êN‚›ÓHíŒÑßa7¼‹») Fãÿ¸$ŒfÆ_¡d‡hñ3à'έlЊ›òflûÀÂÞª5wÄxÜI7è” q"÷âÕÆ-Ø ïôÒÔœË`%4‚1Ü„vò<YÔ'H€þð ÿ³ß2Ð;`c ZáTÄp@΂Õ<$´ZvÁã* â~mÆ’M»‹Í0/m¦œT\ü§ÀNÌ%Z`CHÀ_xH>áëpI%B#~ˆAœ¨²ÀRί:Ceø‰ÍU ¼‚¸"îÄÓV?Ž„ÆÊ­Rà(ÝÆTì)öq¯ÇÁwPuÈà esj‰ÍU=‘óY5§©Eà30Rè/ð)ß‚|°çànøÛã õ“y0ÏãX…ÇÂ#øÍÚ¹à±lÉð3ÔÂXP4¦Íúßj¬ªN3¡0št|Šéìà ø b},‡.1—>ÓZ*sé Œ†º€Cp.å$Ÿx/Ö¥:Ö­ƒ¶ÅZkU–Ũž«|¾Oð»»JCM‡ú° ×èwÔ8A›!fÁCHçOj5½Å1ò¤l-¯H6AI_¡?ÞÂ8¨óDU\1úTXÁ÷é™6檓*3­;.æ!8”N‘Emi¹ñ1—~^ ù°'ZXšRS\K‡h¥8"Îã4ÅÖ{a£µª<ÄÕê+wçHÕA[!ÆÁd³•5Ô_^ñÄÐ6q€‡Ê\zS-™‹ã>hÜÒó‹aº§ìmM²íÉZ6J9oF|vgŽ˜æÖ?º+ê!s“k¹SÓÆSE±TLâgª*jš©oqŒw¾ [±›Ý¼ÓÊAwƒB-g­+r˜ÿcÒOíÔ³ÐIÿrí„ý/½=/ yR/Ú‡FœÛÈ#©{Öä¸)'g8¯ÅkZ¨…ï»ù8ÔQfûñšãNŤ¨_çýå­§¡o\‚€*!ª@èTÐn­–ÅpP¥h±” wð‘ú[§ºô6‰>Øž+Âfš'Nb˜È¹µ‘Xb…ì~¡ïåQ6ûÈ÷8¢£ÖE¨ŠÎ8#FŒð8êZ©Q«#âíßìÇPÇÓFå~1›Ë±f?ó)e—AkÎÛyйK&YÅ諞Ìã@8Ç~ÚÁCŒxMÁIþKŒ¢xè*¦’'Ð [Ï~Õµr˶ò)hæU}?ÄN…ÍÓ¾CÓÈßìûA ;íx§ÿyÔ­PŽ@˜éUÝ®P_ÊcÞ´LÔPÝÂø1¢[ìÙ,yù¬ÔÍM_«|Ù–xéWGoÕ`zìû3Xý2ÛrÞÉø&â-qŸbŠÊá<ÃUÜ é)låãø ‹âO`TG;ðŒá¡¼ò íÔ.ªsé‚hÃ¥ 3O‚Çp^p´ÌÙðÌÁ4Z ìÀ¸HüzÁpÈ—`º Qæ;<‡)Ü÷pdý|>ð• ¡+ž‡"¼t ‡ÜD’Ïr%îG˰"–“UU†Á\Ë+¡<—áܲ’B)Ø…±ªbE# Ç‹V zÈ£ñ7“‡x¿ÙÖ*e®Ô’ðuð F¡€]8¾ÊSª0ÜU °=Mv̇EP;c½bÏæw8û‚]õ†ùðÎSþÎY =\ÀC\Kb€6Âbh ý¡®†?Eh€‹dUø‹&Rf&+ƒè©õV hÍcr†—¤AQ“õ4ÒYÂ(mµÇúj®g6È4ã/z#~ßEiqÞ1×˵,7_ð´EÊé*·á\&¾‹Lb"œðÖš. ¡—ò2µŒWa3Ûk*M¯¹k° nÔž’­ÍLü%ØHU…—°Ä6K”–{\Ó"CÆH,?Ù­Oô'…Ö›|uŠ9žºû:ýÎ…îNžß+<ç¥Çª)¬•ò—³FËqr‚UË:¡ ™çC_Íè"]T0m•ž‚škðºõ9”™ÛhËõ¶Cô ‹ ƒÇáNóŒ|f•6ã¿/Oü_š ½K>G=@ûý ­½¡ñoÖ ­¤µjøázå¬`ëÏWÍÚ|’+†~—Ë}÷¬f+Ó:T¡Ÿ|õû¦_6ïiܪ½¼ðiSÒ Z«5r]³;"2‰üÎ#j²ç‘Q9ØÚzkjÁ[Á~VG|÷÷…kyì+ÝylÌ»ˆüŠEFD§{~:«`™xóÛ7•;sLºHnrÛú¦í¯ìë-)kÐ*û[è=åCYCž4oƒÀbÙJÝç¦þP¨‰œ§&+úÃq;ϱֹ3¸Ë½#&‹-Îí²²uÙ~EÛkLP[¬µ¢PÀ¼àìÓ—RÛ; SÒúá#:nNóÌ ‹³¥kuD{÷s{s[=C£=ÖïiËø”xÊ«®P_¾‡¹¸Ÿ´¯ÒˆÚÁqBK§h9EÎÐl!•¾ÓV™ÿƶ¢œjÎøcx4¼†¢¹&T‰0??]ŒžÔ‹ïE¹d&ÑÈ[Q½´b<=T3§lª:¨mâ9h¾m«ý;þÏo4ýD)|Æã¬¡ìxÛ¿#}.Û}ÍÕlO.Ù@]6É•°žñß]àhÈÍ7ð"|æHȇE!£Ú%`¬¤{\ÞÒ  ½åQq[ZD^µˆúÂvh ¨sa:ö†)Bá],ªàkè©°òÃX|u¡Ô'4•Ÿ¹ŠòËÆ|ŒvÁ:X #Ä)ì7x§ª¿x"ê$_£Ýj'$òaÒ#ìÀ &ae81èæ^Pm°CÍ‚ßp8zq%¶Àâð\ÎâªúøE/iLÃþ<„ºÑK£g–ÊZ§`tÅܘÑi”Ö¶˜y¸&w㪜£J\ ÛÙªHZhGÄKœ‹aê Ƭ¸¦ˆ×¸âH<¬ŽáL|€%ñÛÕOË॰Mº¹g6ƒô þ'Þ« Üó“.( +p ~ànüÄLtŒ¾â7¸'[Ó{ü¬þäËê"¿“3@~ÞüPµçáfW®…JÆSvr¨NZl$ïó48„çå ž­ýÆ 9>Ke`ÁEÄIQÈ*HÅñPè’2Xáu·ènœ "£²`1 Ò𠿨\Fùh m„]ØŽˆ§0Ÿÿ…êê›ÏG¸”Âh‡%ˆÆç¨8dW销îpVͧ¶øJUæq¸{p=µšCw~)§ÊÜòÂ'ñ„ú¿â­„–0“µöæ 9š‰¥0Büs\³éoÆ"Ú9º‡“MÛ ‰Ø˜c8IÙåbk%÷åñ<ûÑrñlœÇR;/b´ïr3÷€“P€ŸÈ¾Ê¦>ª¸JÜç ò‚:¦Ö“Žëeš„è>Ô ­“QPŽÑjË0;ŽT×y NÒâaTKC™Ô 듵OÍã¥j8Ü7iúwë7´üú¡¨á¶e±½õÎ+b’91ñ(JkÔ~*ò5±í¦J¶ºŽ#®Fú@”¸“ù•­újáxDÝ žõòöÏÿÑ.m¿1)T!TØüCÃùàÔÛˆ¬QfÆ/kcRrP%½|_MÏïêQ˜r3½lÄ–è‰G?Üm} îCe§‰¥®|‘Ûðœªòë‘ö’ZSól•³¶ÛîúàH4·þ7÷m¿¤ÿ¥Àí°¹Ä*ë¸ MUSà%v‡)4‡`%ì&üCÑ ø;®M4§`Š!ŽKt“£b78ª|ØY×Ôˆ¨¿Ýól3Âï‹ÞªÕ¦iN›Õ|kl~¹A¿@ y Åj˜£§ö|³Â©^rÿ CÕRï)jD›ÕdŽÔdL³•6&èç¸ ­×VÈfG‡>íu„(‘ —¢'C¨ñÑ%¾Ï lýÖ×ì,÷È™ŽžxÏ8 ëǹx‘ ‚ú>{ ³’ê)V9èe˜¶u®›á+í 鵂ÿŠ¥*«zbÆËH¾á»åÍd­U™LŸ5O6·òÿ,'æ‹8m7“ƒ¬¾¸Ô‘ÞÚc‹ +¡Ó¾»Bk·ÙÀlœ~6í"7 ý'?Ã*ë•Ê“R[U¦AÚTmE¤&/*3X‡¦¨wÁ‘þ›¡ŠÁ\FñJ,O˜n䂎„¾±Á¡½Šý7<…ƒeÕñÒS:X £D¹ýÅEá8ß ¿-ôËimöTæó8Ddóœ]#û‹ÖH?¬þ­ƒ~²©ï\mƒµŸáe"Jþxa¬…A¡æ6ÿ»¬×¬þ4IiV ‚oåâÀtßjÀüŸêá¶Aú5½–½‚³ŠqX?¾IæR×9&tÎìm¢u™‹Ò”`¾À3—•ß¼.ûÙ³ ñVdZÌÛ˜ëá›"ò†-4&è•ð„¾ILÓ–èK(‹‘¯©Üê¨ã]ê+‚Û½Süƒ-ô׸$|MX+gµð2öùZq}N„ê”z¬bTi³ ßPOÍw*Q6V[ÙÙÌÉýq,,£¼º—¾À £¶8Çßõ;â4…ʨq«ZiÎmW°Ÿ[ØjËQŽD=ÍúÛù?£ õÁqÄh£N@MªªFúZèÝ­Dýšs/æ‹[á¾N®®Z1aÃŽ*ƒ¨†ÉzÉã=û͈Ÿ”˜Ã|ï÷˜ÙeQ³‚êeEàQ+OÛ¨ü‚JËÉP”á*U:àÔážÔ*Áem?x1‡ˆæ+R%¡=V„}ÐÒ¨ŒÁ –â)̈ÀÁ8Nµ!+vä<<‰¨0§CA(«á,ϰÁëp¾âƒð^A"‚ñôQ7ƒé/N;)3L§8üXò‰)ø"µÀ>˜WËa*ÆPÎT _ãǰ«RDÌ,,\sè‘¶ŠjÒ.¬šâPd &à;UW5W_­O° æó xŒQ‡Õ´R{'oÀ{mµz–‘ ëAQ=ûÀަÆW¡%.ÇÓ¼ZmÀFp‹Ja{¼C'Ô0œ.èÄc¡4ìÀÝÔŽc Æ‘ÆÀûh<ã:bôÂóª*7…SpZ[DÏaŨ&8—6â+ž o ¯,=8ƒµæãyø]ëJhˆÖ› ÀœÂ•ÌMj g´Z¥ÛOÇa‚Õ{2‹Ó¢®µ.ñUÍ6ðA ä„‘¸€¿ÂkHb—Á[1‰š Á¡…3ÁHÊ'Ë©Ž¸’êâqê'ù†p3tI„©Ô‡GpgApKÒ3ø?R8,¤st˜§ñvyX8Ýö6'ÿÆ£àw- ²Ã,­°6KÅ»:ÀqØNz‰í¢\îzZáØ¢S¨clig‡»&¸fi7]^{61ÊèK³åxm=–³øYÎzB÷¸”Z*ö‹E‡×à>ÿ%ZО©j›ÿú©ç*Ý|î5#eo«ÙJ,Q÷±²¾PjçekÑO<á]d‰Câ‡Èƒ-©œËç®V"Ë‹,î s½e‚õå™ÐÕÐ`Ë«õ²o¤Œá]/ßWŒ8[±ˆ3®{NÝv[ûÀ¿¦ÈC´ÚcãRÚ$-©Ê¯‡¿<ðÐü"{ŠlÁ¡¿9¹)¸ƒÁ¬œ©¶[K­æ@Á_de_[ÿ¹3ëÏìn¼)Jˆ‹â < .MÖ¾D~m—þ-M¿ª€õÑe°}tõvüëŽq4P#äs£c ÕE>3“-'ßñ;åw5R¤àã€pÑJ‚UÖ>™1µŒ7*¸ÄÿÌ¥ÿk͇-ØPûuú'%O‡þ°*4ÖQ±Â*k«êìíê,™! §¦Qª:e½4§XÅ“ßxO¦6¢Üÿþ¼'kȾÆAb…ù¶¨aú"‡£W¸+l«µÕÓ—B“ž§Í€oÖ)ØŽ§#‚á×£Ý]ÝwùªÕÐLMô'F)ÈI^m2­IÜùc.o M|Œ¥x¬ŠÒ?Š'V˰ñacµOêah6vŒñÅ›W9{ºõ“ÕÌ`š=»p´Ã<|Ùm™#ОUÏ":ð_Ôé}ÖáNÚ7\Çsèwì E7m›˜+·jwix°*'%Oƒ\\×Ã~ôð%-³˜-·:mb5„Ô•S]%ÕÄP$µ£%¶ft]|¶3vˆ7¢v$´ËŒ6sˆßð±ç þ­}×7:¦‰Ü.áz¤™ÆP#™êòk¹Ì\ËË;Ô$>®J|É%)3¬ ŒààÊ".r”?ð.^‡.VX%‘¿ÉÏ!ÑÏ<¥Æ™W¨=¼Ãްé»8LÝ4nª«\ âÕ|./çS_,íaÿ€!ð'©áDЂÀ'qíj§š¯ ³áq¼‹»á…ø®E;UY8†o‚ ‚½½xFpv„ÿÀ¯¦@+¿m65·Õ¶/­‰R¢ð³ãlÈ£G©'É5?67]I…Ó&ÙR/r{üÝR¥Vj㇣gEµÈÔÛ¸‹¥ ÜàrúñÝœêÝ#ïx_YG=Oý3­ƒÚq³¸6ØVK/@'Â'ÛJ»‰ú®Ô ™òìÇdîmeœÐ¥m^úÁÀŸ¶øŸUŸ¾·Û‚/Äïå´ëéù}•p—†%Ô:›Ý…²•t,p®µ?rµŒ¸©‡ß §Lfoî¤ûTXž ÄYá0æ²K41 ˆÒáaP˜gx¶™ÎøG‹XUÌý_Ø>sWx5Uvu6Þju¥…¸–(‡¬<\Wf2?«Gð^)ªÊ[,´Å»p æ«PþäÍj¬¶þ“™µžT_DÚ‹8_9šÄ– e3«„/ÉY*Ƈ"á¹^ïCV5; ð8µÆ,8 îÉøÌXci<&„µ'¸V.x6§÷“x–òt_æˆ:xÅÑQ냓µ ðÀlëá,åXç¾`Ï¡'˜SSÓ–ú/…ê›z‹‡’Äó4ç€^P™cyyßÛòØŠpvå?Õ ¾¤.™È™ø&”´¿÷÷$«fr)xü/­¼æï¶à}Ó ýíàliìŽÖÃþ5dázãlhŽ•“ÛÙj¶Zä*gûè¬å£@fOªDÎó«Bp—™¶‘·hÕlwh³x#vÙ; uÐÒñ7²2kú8Zßø,¬”;­ÝÖlËKsûC Œ©“ý–Ì­㢊Õé´`èL …ÜÍ“©³»«§kÊݸ.Ú!µ+Ãs±îÇu ôb”Q¿a´×ÎEÔÓBžÄŠV)ßeùÔÜë½bSµÛfMªLDËo•ë̆¡)ü‚àP‹m ðZkÏ̯ãlÛ¶]§ºùfÛ¶mÛv7Û6^¶ëÔ©ã_3³÷zß×_e±K^½¸H…ùp1L“£­ú˜—<,¸”³¬qA¬½1w˜äQ9ÎN-Žˆªb¯öŸ£±gLÈFã–£Oxc×^çÇ ú#Ž‹j" ÀHÀ1,åGàW1Š&ŠZ1ÆùZ/¡¿®±RÙ,Sž•3m“0Aõ…ùÁ>Lïq óÄ<þD{Å=³Ú¢urþG½ÕŒ“¸§ÈJpÜÛRÙŃšl©uUí´Ì® vM¯ëÐ5 3}¡gr„œÊa[ð 3ª0Y#å8qšC+NUœ-ßj¥yÙøW ÖðõÆX®(ç ìÄk1–ó¨s<ÒêMÃh&´„¯ê¼ºÎÕbe³ƒ‡+?d¡¢*Ø´ P5c%Ψ–ÀLì • 4¡D¼‹Ãì>|Du‡è*vÌø*@q5oòX¸CÄ8 wbQ‡;h‹ r¬’j:dTá/–…*à€ 8 ã5 —AjxÎ¥á4/ã.Ô“Reº¸«Ý™kȯ*Çá%<Â)T§AG¾Nƒ`7•âÿagÊÏ x‚šàSr`Šr«ibíÄ´^Òm̃¹)æÇMê0.à\`rçåð ¶Ñ|ôpiõ”Óa¨Â.œ‡©!߱ɭe¤aiUÃ@±ÞágÇnÈMxæê¤ü¦^XWƒJ΃`ÂiüDë(Ÿ8£Ò¨KX‰kC=\åyF©ÌœZý¶,{„À妥pæá·äQ˜¿è] ì‚\ˆÓ¨¥ü6rSøŽc!L6P™ÍNÂIËùFs¡Àh–ìá®Pþ'zÉ“j<¦ÑÊjÿ£­ê1·fƒ¾C]‘‰‡óA€i ¢hÎä€|†í¸¦RüÞþAEñ£UÚ«+2 ÷åƒö`ìC½Un¯ÔrÎ/D%.::Ta403½£Ê¸×ÊОêÀHõãx‰eñb~ÃíÔC{¦öÄŒW{y;Õ¤H e¦;”㵺ø‰w°&â-Ì ?@#ùÈb‘ŸÆh™¥G-Tí ååsp"ùm”{dl,Á,È­"`/¸S†r£ÈÉç¨3M±ßËÖÊ Õ|•,kËAê–òÓ*ý‹¨¨…boNç©&]õ¾§Œ"ÚÕ¦À%¹Q—ÂëÏhhfúõÖìžú¥¬Ñ¢´ÿÅ6²ŽâImld¦œÔòˆ|Qa©ü!.ge·î9£—J&½¨½Ú\˜|'ÁQã,6çK¢’9=Æä­¥o0;Ñ-G†ÐTXfk½oh®ì`¬à{Ì¡åð¥ÇˆàRf3(»Eu­¸IÞÓæ6mdM)éØkÜÑ®¶®wÆ çâ@&ØÕ>¼­X“tG Þ ¤·–éó].=z#GêŸT üGX|΢’ÊDÅà‰éÔ¿êÓp#ÎG'ÄQ+âcØ+Gɉr™ZÍÏÃ0uŠ&@#û)ÕÂ{*]dè¥îÛƒåq(Š…Ô]‘DôNî®Oεæ'vÉ~as¬?¾ñ\Älj¶µïÂZõÑþ@³p 4Àâ²(·£åØ!X\‚/ó¯½ÉÓ9N»ÊqÁWb0åå.ª¡Ì¯Ž%dóÿ°J8óiuEÅ`e·Rkg'Û#ìçáfÂfjj9Ñr&P7«¬¶×p_x#Œ†Fu‡î¸©Ý›ŒMžgÜÊøŸ–ŽgX…°2â|˜ÀLˬ)#íWV_ÎÎÓ1È=ø“‘ÅXéYæ~ÕÃv„…E–MYDèmNó¿õ¦÷¼N»Ó3 Ý¥Œµ2wJmº`Œþ¸ã~?S.©Fò“@Ak¶jiÌ!Òóèk´­˜^‰"­!ö*H5Ê5(t€Ð¨e¥z.‘Wò-®kuŽðž¶¿_'Îõ“o%ßð.OÌgf’¡ºº"‡¨Òœ•«›ÇÕn3Í&æó½ožcËzó§ŽÏû÷y°oâS¤l%§ÀZ+Çûû%¦XÏÌÌÉlµ²t럀3%Ú—F® Ä»ÃJΡ½ÔÂ&W*-R4Ók‡µŽX²1loXÏi—á| Æ'£¥s޾ZæéåYç|ä1Æpëùœ­Ål1I3°!MÕ^`š$NÀ<îN›lÛ~'_[C¸‰ZËŸ¹ß2÷rjUÀâjUWT¥ßÜ–2‹+܇6QFÑ |%Ž`i˜¨MÆ¢"ÑøæØívaú ëB¶÷éDMuõpVO{ÿ÷Ÿd§ï§o«¨jþMÛ4ÝŽP_XJHIÇ ý«)†'´ºÁTz‘œ40¹3?K0ÒÛ>l¥}Öó:gzN:ºZõ¬r0Cö > ã j‡U‰[Âiµ&Áôr.N⦔ ŸÑ ¼Ã«ÙO·±4lÿbì¹ð#‚0Çã7Œ$§ÅH1Œ§`.Ñ×`Ž€Ã”‚ù±:hçZ<’3òHí0ãP¸»a|¢Ü²‹V*#t¥á8ŸÀhÈi©¿áC´j@²xãµX ºP+h •¸<¶Àñøã°&ÝÂëØASóxªÝTµÐFÐêA=ñ ¤uøPÝÀXUù±°î@bíñ°£ø»l*2ÓT¨AƒDS±‹X4:ôQ£ð"\øP´¾Œ.̺i¹¢ö K Jé¡.lÆpL‘}©9Zv¼“¯ÃnhKÅåuŠ«a,lÅöP—KÚåé õÂÆœ†wòO¹‡“¸œZÀO0 æªpvðˆàá|‘5AçŒê&\žb.|ÂçÚMkÅr¼'\®EV*uì§ÖôÙaˆ®ÔÝ™“ëÃRc-Ço†Ï ¼ØŸŽÃ Œc´£xc8‹yð4Ì…v4 ¾¡O+ŠÇàŽHÛÔÿ8Žâé¢Ú ùð›Úà·:IEñÄPo¾a—ä&òš?ÇAV%*-jr(FEðæ‚,˜„—` ]æL¼@9x<þ…iPU]ÁÓ0VUÄ×pUÌåÜ*BÛ“x5¡Ÿ”qlCNè+œ¢ž~JÀNNi8QFp&X‚w”WMµëÀ3¾gÿ¢ãðjœIm‘ix†|+»É¶r›<£È—ö1Ï‹#ðŠûÓ6Üç ²õÕÞ¼©rÊCC²°laGŠ1Þø+zSZÇ~Í—9)ârØv­TÄþÈ áóSeŽp‡/ÑÿÚ©nŠT ßKIwRË/‘-øeðo° o÷öJXwÉjvý‘?SïLÇ Olš)ç’V$W ì3AÝüéÍlîÜà¥m-³VÊiò¬ïŽÍäc°óFJ©àsµ¬.wá¬ähŒ¿ŽZƒ—ý¹öêW´!øÕd~+z΅άŽÐà•À2ðÎ6Ù\…Å.ÑγQO¢“Új³rplÄòKboxq÷Ët·w­fT€¦|N €æø›NòG9‰^auîÌ ?o€c°‡3A3î¤Z¡‡Úß°&ب„Ûϰ5œÃ¼dÀg¨€&·S‰ò$Lj’¼F|Ö hmœÕëÿÓ6ÂW(h7ÏÈ6Á˲°Há³r©]õ6,W/¨§5Z³7P žÂ“àÊ CáþÖïÁCYCû!FY`´ÞÍÕ ;pª°âŽl´ÁêyáèH4„Q(åLr‘Nž¿GÎrü¦­Žíήv"Á¹ÃÃÐ܈Ò?q‚xG6]W³ìï°Må§*AvåPþ#éïq>í§xõU/ïŠ0&¸«9‹ÒSçsg¬3Ì<+ñfgº°Ãévg“ÙV.gèÍÐÚYger§v[ãÁĸÄ¿sÿÍ¢êÁZ6a næŽ"·Q:=N$éB4¥§Ž ÄLrè¡2rM#Æ93*îw %4IÒã@÷à<;1)sÂ^ÛŽsûÊÚY¼ƒe­Çþ^ÖÏø ÞÖþ‰ñy^«u,h@/~•´<Î÷%aZò1™ þÒL­”³š¶„žòb•A®K>š’VÎIÄø¢ÖßÔ”¢*‡õ(l×ÅöI«M±uúɽq¡¨cx çe\Û0GHªcá{Bû‡5 î°Ý œ EÕ°¡†5\ô‰ì6îÑ5QôæGJ'¢à”>‡RIW-»¸ª?ñ6à™v6ãm|ÆÂhK×ñ+ïŦªUê¨öx—ÒMç8®pÝŸxgl¥Ú&ñAççÖ-‡˜…ÂJ¦Tqˆ2‚ûìþšFf/‘ÍsÊÕ8pÐúl6I©gÞ‡éÁ&òŒÖ•ÎãM­³û‹žs…ÐÎ* 9n-\éô)úSÜk•‚7¼A´vÁSJÁt‡áTŒÇ¹ð¾álûI¨xeA(4€ç¸JòÈÏÕy ®€ÜþBüäî<‰›È˜"ìØjÛù05P3¤d“aF̈»ð-M¢ÜZõÇê¡|   Ï€L< Á9ní¡Åi¢|‚¼" þ âN|Mûð?Î ua7ß–ÿÃO|VQ!þ 7ÄÿÔ%ÞA>ÕfaSµºãnZL.|®¡Çpn`Wy‚Þ‰®ü¾ã*^Šð«=‰v@9ß`Wh}๺¢¶pŽ`?žÄƒÛ¹ÿÖ¶\ò’YNõäçò£º Íá.J{ð5¼Äý|æRîõ<ª<Ÿ×Òàon->á-^¯ðDÚÛ P°!u¤!2ì䫪0Œ„JõÌÜ'*Sð‰Ù=¥¶9Ο7Å—ô!VÄû=ë»ö9êÇ™o¿S†]ØlÔ~˜ÕÍ"ª“üa­µOãsœYTNuÂÊfž·ñ¹`!3%˜Û µôä|AGàjB)oOß‹”þfYëš}XFÉÛ¸Úþì~íÑõxOÏhÇt!)TÄ¿µûú¬°‰žõ¡££^z6Ø_S¯pŠÀ€T Œ—A3d¾³¯7à(¡Eû‹àgU1PE[¦ÒZíõEIêI&]Òêr_$vp_˜Ég`%æ–-ñ*4V'Qa9Û²Cú©!…©”ŒÿÐ(1MT£ø*¿P>©Û‹èj*s›µSØ]«q6ôª #Š»Д°F_þƒ±p]îÀR8[ŽöX˜ëë­ (§”Gù']²ê(ÛpíÆôøõÚì§Übï…ªWRªÉïð;ðÁ® +Rš],?OÜÀèd,7v¸.‹¬ðÍÑExa’£Ÿƒx¡£¶#¬¡ØÞÿG=••­%¼JrÜD£ÑÔ–êhÇ‘b#¯æÚBj ¯à(‚¿"Qé²dpº«Ï¶?§¹±*U·ðÇöOGÇ ³¨cNši®JZZOvÇmo”ç†îåÞ!.G6㸱]û¤7·+˪øÅ¼gæå¡\J̈́ɢQç¹ >ª@¸< E.=R›ìx†9UCÌ`%ûÖY«À9E¡÷ שð¢Î_ŽÎŒ˜Ín<%3p•‚—p<–Ñ+a]º f7ä&dôQTšÃ½xfÍ©‘= ›¡ØÍc êÀ&¨E’Â2Q–~QÅi!Fë ¡Õ‡ú¸_üe›S)È I\2À/)Õ®g…ŠðÅÜ‚ƒð ?/T†ý¸‹·Ág\Op…6Søèš´ƪ˜ïc]¬L§do°p«•™öÓUÌÄ)à1²;4s¨'”Æ’âÅ`OêˆËÅ{9Ž»ê›¨>Þ£9X’)LUÍðõÅ!â¬ÆX‘~`"?Ó¨1dà“0’3A!^Æáí©¹hIµ¨kTR8yøšŠ’óì!v„ôªPœ Ð…OU ×à5æFZ}ìôLœW­E?ðÍŽ© ƒÇþ¨ÒãS¹1#i°G1åp9 Âù‹§«óvmŽV¹8´Å/X‘wÀcØY8!¸ æÒxŠÁ çcS(ŠŸ¸‹˜¤zªnFûi"˜4 ªãHø®JÁ-®Ìë±çÆ<¾rSŽá|ò=§»¼B¯Š•¹¬˜Ì;A‰[òDÃ8m=RÛIâYC{ Ýví-\¦WTGëO•#r¡¾ ê¤?d” ÿån˜alj«ÖÉxæøYÔm¤{ëKo·ÐŽØ ¨ñ#˜%˜Ñ;‡j¯.™ËÎÓì)V/±Ü·'ewÊ@L`~ð¤\ȵ´}ª/]tüâiZ7úê$W>}Œú.»wðOrö”ÅþÂfÚ|óQÚã–[饣±wAð‘©LT—y½6ÒH÷IY%Ýkœ{Äù†®ª®O8§ÓŽàUM¿é¸–/}†Ï%Ú}该£?êö1¼ 5òäæ*6Ø„3©Kfj­¡¶ƒ²9ré¥E6±#)GòwHÁr wé.Þ€6Ø„kp%`?6'`Wè,Šo4žfQ6Ø;QÂVôÉϼŒbe4d6z©ºÚ‘ c ‘¸¨E‰õÁœÁëÖ«wà]°eàyR¶ÀcáaT€ÆÓJº¯¯„†ÚLí¢Ü¦¼ÐÞìaGrúOëYTsè¯õ•éÙB¯Ê[9ÜÞ ï­›°^ÛðÔ ®åÒÜà Åp„¿C4¼UÑFÅÙ¦‹8 à*~ñTðr±EUUGõïj°Ú£¿ä¾T-zÏ ‚1F»ëØïRž×z¸k˜>ÎÎÑ/†t÷ ]Ês*|¡ãQAOOýôÒØžjqúÇ{ºéÙ6<*)cD©Qž[™Î”ŸÚ;sá\ƒ÷£.GìÇÍ®—žpSX·ÒŒL‰ˆ}ìîá-ùwYÂÇ`²½%á¸Ý†õ9/<Å|·J]G´˜À;s©5äÛü/—löNðFêÇèO5]>ÆxOEªV¦ræÑJ@.í§ºõÚr¯9Š›~+³93¸Ôª$Þð@ˆ#sª"£àZøÉ\÷3ÎÌWt­ëmÚtY~˜OŒ|éXô£iîÙ[e{!´´ßЮ¼I¹š9Y›ÍßÔA½8ôS™Œ(z¹Œkbû4 6‹Æ.Ò&ÉÓô©âÜ¡´ æá mŽ^KDëµõ"ƒvÖèOù•fáΧ"°Ï{¥µô¨^m2ÑŽÑ~šÁßá tÏT’ü¦ÝÆE\^,{x‡u7Ã\ÿÚG‚'=“ôN0(òý¼ÕrÉšI›} Éññ¯SÄåûÛÓ¼-¡,(Û[]\É! ÚÛˆÜifxªXú¿#ÒäH;7Ú H± IDAT}»¨,é·ä«¯MÒ7:²Ês&+ïÙ™ìãàíðÔ>g¦XÇ­_ÿRU&ÖË`á”–v) ‚פšìg?WÞà˜÷ w’ß}¸ó}ÃïïÏV?ëôêÙ£ðØŠ¿£­sfWÔ]*N.†¥¼Q¡Ö²ú×¾d W Á8 sÚ%EÏÏí°YÃí¹à´q+„ÛOÌr)YãVöÀ•À`lDE0 Öq,Ó3hùµ®¹öSY3ðÔÛÙŽqXŠ jµP-Á¸+ºiGVW c¦gFDý“ëehu5zCj[­Á 2ÂALK‡D}#ƒ^ÛȨç§aÚ ¹„_@ LÅÅå_k¬èî{îsJÝf …–b”9Ù¨ª‡jíD(•Ò§Á¼DÝõ´Î9n;41mOúcµ5jŸÁ_¯AmøŸzB#´D3IÕ°@vµ+úËÛ—ì÷ê‡B„8DM ¶fâTÃz.£>Z›áÇÃж`Yþ©6Â_õDNW÷¬ŒÁ)Ù¼ý5~ÅýéáSÞü)xnuð&Ù…D´ £·ØìÜî' m¯uCåhÌ.Ò‹%Æ}QC[ÌïeuƒaÜÓ™k¬Þ*›9Ë$,b•æ­œOÊ-b.V‘Sa<‘ +q•öÀ0Žå?œVµçö°{Á¨@½8+ €PlB÷郶ÔïàQ2p¥Ö €nµ“ã3ü£q /å€p‚Ã1·‚Ô›O@?gð€‚_ASëa®ÚGÁ†Ît_A Ö†ðL,Iø€ós*x‹ÀÁ7á8ý‡ÍÙä§Ð›Ãˆ¡Üg¡3–…_PÓàwŒ¢=P2‹µ¸—OQr@’vB8ƒ8©Áúƒ>~Â_ÁGB áf‚Vð…:ðZ¸‰KùåÓêQ9ÑŠrs%®b,§6X[ YÁé9ÚÀÐ oq_*+¸8oäÚc ¯òulB¿é<×/Ø ?„ üŠŠk˜,SQw˜,c°(ÎÅ—lBvAF,#'cþÌma(.Æfœ´OPuà7ô ‹Â' ÍæÑØŒzá-¨e –—`ZŠo4›Ïób¥y°;ÍR›UuÖa)å„ ÐB­`B8Tàž²/ãs2-šO© 1ü¦¼ÊcïS£U”Úbe‘Ï¡ ’‘ Qƒb*ô¡Ìôrà{,Âû`?do qx‰k‰~r¢úA‹è1îÄT#Ô)½®@zω¼ñ[°¸ ž€×|×^$wÁuè̇! nÁüš‡Óm§"tW›Ì¿ù×Áøƒ|¼ ÚàZ¶±$×'ö…Ür«÷â €S ?ìÅ˘ îKlÅ"د‰S´?Ói*7°—ºÅ`¯íÃ^ª7^ãs2‘òb[нÆdO5BN• i¾ñ,¾ 3ô•©ÃÓˆ˜m\Л8›ºÊQ7ÇBÍùh#4¢õ¼Ëxî*캲Ó}3B8®{ªGFaaw¶¦/è‹oaæôo‰šìäÉ Dý‘o79Bë'ÕÞê§£:‹XY#õv¢ ŃZÀ=ÐßnóíÛ394©brC3s®'Òµ49sp7¯–EkнÝÓŒMb±>ïPw‘F>µßú—Ú³Ê&וßÍe®z™~ÕvTéP}‹ü— e–Þ„¾‰_kï„59º -¼\<7^B’e'½Šùà˜ˆ­ëÆ­·¾ " ¼£)êDjíñŽeäÙTÌ¢jØ ´HÉ(Ç©£‚´Ú3‰‡UTM8 }U-8Œã1½×ñmºë”R¼@sðþÀtû•™8æò*9áSQOêõœTEO2fè Õ-ž.&óg¨D[±ügô jÆ?Z ;ÞÐðxêh \ÞMXæ7¦¤ä³†B]+W°¶Â8‡Ù@â$ 743Û}¬ËÆ_cºžN<Ô¶ê®FS°†ÞÓ7"ù§¯E gbÍ”€Y#¸#Ð g@ ½£¬¥æâ+“}×jƣ캪ƒêcÖƒEj9_⣱qË>oÅZ·ì6ñµæ%PìÒ?º7s°eð&Ô¥7ø6Ù‰Ó0kµ?·\Ç×år>!u-[ÚѪ¸}Ú‘A³ÅP Ùá*k¶ˆ\âÈš¼ ²eØGù7MÔí\YÓä O¦!!Côšòµ‘¤½çÚQý£'D9[¥WU1"°ÓLEÑv • £è‡(®ÿq•pfqÅ9ƈS²­~^Ë+ÆuÍ‘ìä¶Îv¸‰Aî,®cú¿îa®–ZÇdgPTÖßh© Ú¾è/øW¦óïó5²³*Sæ—y´~ÚF£š«V¸ËjIZi¾¥¾Ù½ÍiA-àMqxKbâJýñ%¼H|—œÉwÉJ²ú@a¹×nÈ X‹÷é9h*vÀû؇‹z9ʨ·r<ÁJâ‰VMÓ©º®CÄé±x“nßàêt…ÛB d“‘Ü—Ê|*Ž¿Ú]d;®àïhy´£¾v.Ïx;œ{íB®µï"w‡ˆˆöó„WuœO5Ö•?pÖŒ´?û ù6YÇÅ힨5 =ŸÃ—¸Bá³g•ó¨ª-ÅF+…ëA6û…êÁgíת/LP;Ô uÑêË«TG;/æÄY å0³1®Av­V‚Fúxš÷õ ø‚Ÿk x¶Š¡_ðŒ R"Í ¥Z+¼Fƒµ–Â!.‰+H¸QÿÃÔ\•ÒÁa¾)ê_• åàÂ)3_…Ø=pHu€;Ê Ù9_ã1T¢`7ÿ§&a8Þ²uú‚}drðL®Bcá?¸Œ…a»r* :Êx>[ÕQØ‚eà —á,8 :óX¿Ão‘À ¸sÑaMW»¹‡>>ÐuG_ØŒ@ö[0ˆõT:±m0“V@3¸•Ô¼¥ Ã9¸*p´r«º|O}çê¼T¾„Üœƒ×Bw³ÅXèüÅä„Íz]øƒõíp[ùµ¢^qtâ¬%öóY˜Žéy+äòì]ì;&«ÆPœ7C^N 4R TôÆ“Àx³€Å­0RM Ý˜‰ïÒ5|kgÒ3Ò{µÁ V¬HM…äi~ ‡ÍŒpCå'‚éUk5Œò4¾+ EU‚O8—ÖˆO¢á¨ åÖ0\*Œ[‡ XNÁ'*E xŒ“ð3¬å¦jANUC¥œœ‘§éµƒóŠ*p‹Àµzqd8Kð¾¢9KùŒìâ£ÆD®ÕD#.›à4æ…3r‹–¯Ûiôë´K­?a-Üã{PZ¶áùøj-1‡úRãU?àN„–pÕ^ à‰}Ž*Rjn£©“|á‰è­vã:ÛÀÂ;˜ˆÑÜ]믙Ð+áCµŸ3Á»+¼a¾äüÃ.e&Z[‚i`‚orì L ÿŸ{»ã•³¥#V £Ûb¦],ÐÂ.e½ö•¬»Ö9ƒbi‚ŒuÎr/ò0¬wäÑÙáŠ"ãbhDêÆøÈq(àÅþúì?ã\Iù‚‡\k‘®kî/îÚ`]j‡á­ª"7ÚWpÕÁ;ZYºà(A+4›CâF$nûÛüóÖo¿Ž³A˜¶ÌØàÊîyÎ1¸?ªz²´ZÉíñúk_N³ ˜ûÇ_Ô]X„hƒ#%W]à7 ïÏ69ÍÉO¾_ú¦·wýk¬ÉV#shä­ˆm¡Ã#[¯é“qÛÙ›HöÖs‹ÔJ¡êgKÕyW?ˆn›Å|ÞØ«O£ûöv* §äní¸‹°äÀ9ª²Ê¥ø0¤‡¯|_S{d´UÛ²m=§ðÁ{Ô^bßð1«hæÍ_ª\ˆÀo”3mÏgÅ4Ñî#ú@W#ðW:âxäÑðoÎézD¾2¾„5кÈÛa¶¬Lqþ1#¬ËÁ†¾\þÂÉ=ý‰f+«O’×ÞX8Ï1š4îEìÑë‘¡©Šþ¹óë`ìšïífð»Sj˜)Á'¥¾”B­É¢œö?u,åœ?ïBÒ_Wë·•G«­© ŽG>¬…’/š¯ì‰Ç“Ê'–ŠïcKôÅ_¥g&l¢î —|9ôk”Zç9.^:R9«zþ†V1Ú`×µÁ‚­öõÐK!›ÝCg¸.ºÚp'v©#šiø8ék}02ÐÅ=¶bŒ>+UÅÈ0ó³çcxG“øq[¸srÕ”ê·Z¡ÞÀ£ ÕFKkô²¨P+8#0ÖbÍgU´Ú–ôž‡Ëë*•)ìF#u“ΆÍgƒS94®MƒÔ†æØ&Ëá9³jÇûvosl„kÚ^º o)žOè§\G]èš#Ùy‹£ÄÝÆöx•šamª‰«a¿zm·1‹ÞÖYn«/‡öÚ\÷M*ˆyn±NÝŒ2Å|O«ÔTÈ­G‰,ú\Èá\ƒ±ÃZ¦¦ªóf.)4[liUTtV‘*:üyšŠ€BêCGÜ ;PàÈ 5†PIÅq˜–*@Uôó"Gf½99ìNå(æ)%™ÌQ¨õÑ{ëŒOŽÖe,v_s-câß²›•*¥¦u/ØÙÑÉCRÒʤp´ö/@î†b!Wƒõ\ÉÞ +pŒ€NP F(¡ªÊL¢1®†—kŠ1àÀŸT¯RœP@-“ÓT(‰3ì•°™:ã9x¦^a7öq2~†£Á1x+ÃkW¦â|káD® à-À7°,pðN(qØWòxˆ…L\Žfb’(-`m朗¾`>h“i=¶iœÖÀtc~‹ó‘Ùç`˜JÄ.ÔF+‹ø<ØÔlHàÊ´ŸjS5•pSÌ YÁƒ‹á>€UБʪ¦ðžfá x-–Ápx™ ÎÇðâ©$‡"K`u® ÍØ°wÀRΫFðX‚•e3Ž¡¹Ú6QÌžÆ=95T‚pS­”ùÔ)õáp‹o1VV7žjsôé€\VsIŸËËF.-šZð¿œÇ:(ÑÍàÌlÁFn„=x6¯ä>ªó8€y2Â#°§Â9U”`4fµ‹ñEȯþ*¯zG‹±€Èo”Ä0¯¶w‘ š63Ê!àà$åBªôà[ê²µæà:kž½Nõ1“Œ³z‚yÎ çW²\ªƒî‘!†Ø`lvæã¥¼ CV9Ù<ã/î­”ðK¼1j…L€™ò§.Ü“B_ÂuÕ’—úîyÛ¡äMêØ(ª8ï¤jò6ÃbyÔõ1¼¡÷¡c€kˆ»‡g_ÄêôÙÝW‰ÚVžKld ³àZè$oÂpW ¹=d]dÑËK^WEx#ÛÖ6†o±ŸÚ ­y¤é‘sTký}‡Ï%=“7Í,ÒG7Â÷Ë?F?=)Mþðºë…ñ`ÜC·þÞ9Ü^Óäúù#}Ýß¼¼’8ýwÀ)ñþeÚ$N”; š›ˆÒ‰O|P½£oàÅ~ÆÇ©(Ž’GÄR²¸%tÄ h-°W‹³ìÂU4X­ÆÂÚþ|⢲_Rñêä´ËÃ9>À³±§ý^©{vß”hèÃåƒo°¬æÖ”Žš[ÕnÐnˆ6ZŠåa¼Öm1Ûñ¿ÄFe½ ܹ»»Ÿ‚ZYïƒ{’Ê&Ù®Màw,åiÚãîel ¥–G‚D&O },ƒ±¸K{£­pœ¦qTQ„œ˜^>õþò ¶¶„åÓsàmJoqìs? }at]é?býŽëïŠy¸ütgröMÍ{L­µúñEÔ(–s«%ö*k– &´åB Lô=±jO|·ÍF¢)÷v²-í†Øð:¯;½ÚfgÃKC½-Ì‚v¨ö×i<=??d ÿÓ@FÑvcôÞ’·ùšªdwÁPÐa…Þ\DëYk?®k¢‰c«û#׿jÚæÀtïïC¹2!¸žAA>¬ÚÃz­¤ê.k ¿0…:ïá`½Ó¬Ñ²¢lï„÷vVëµVÔö¹'…¼ ‹Œ¸˜ê³#«cŽ1Ï|n= .’m“ð#ÕÄqb“öÖÈ&"ÈçÜíüÇÑÃùÊyÙx§s•ÒÆBcŸÑ ³ÓØc; ¾ÝÇ^õÔ{ÂÍä]«öV¦Y†ÑÙÏ_x³üÅÝd‹p²jŽeµ±´@Eñm ÷13‡r‚ü.ólÓ'?Asø©êBo•§áYœr#®É_Ôxg`%ä~<™J¨DÕB”m´ÁÐÀ¿@5¢-¹ª¯¾'$É=ÆøÏÐçÓ%ù„bUdz'ÎÜš{žc—g–³gÖ2;É ®¤iœþOLòÑþÅå\B&ŽÅÛ`ó6<mÄh5ˆy)‡’´Ðîò)þGÍ€µq*§¸ ߈­pWb#Þù±"ÀG>®Ëù æ,Ð ÈNj,õ„PÖà>ø/!¤Çõp.óF~©†ÀUšoažÃw jb3È=1gãPûBZÈûÙæ±ªNc›=ð?U™Îc=5M|Æ 0‚óÚ»0?v·@%˜Â_à2uÕJbwª­/‚d:`t´±:©>€»‰C´™ØÚ`–‚ÑjmAK„uPÉüJÉØËš¯±¢ªz€_zÙÀ8Ž=¼“Ó‰H|®¦’ŸŽÛ¯°N¤—˜@Ý´x„b*qï‰#4ÛÃo|½á ‡ò&þ‹á8œ—ЬĽ9®n¯ç <˜ ˆ†Š|þÂ[Ø1œ_lÀ\ЂÓr5\ÃG¹+0Ÿ‹ðgì UvØ-~ðGœ¯åâg\œ”ŒË¨2Fógq•“0dbƒÝêæ5œžoB~¾ªºÃXØ‹ÉpH=À6//ÃXn/½ò¯‡yV^¶©©öíà<­®pq6ØD&¿g¨,¥ÇpʪËÐ…ïk›µÔi&:Çg° ÔÃpüÒq51ÒrSý–j¨"9?•Â4¼"a×Ü/Roú¢Nâ Ì.»Ã%ºªýKi›~P¡‚œ_§uJ—7ì* ÿP­x¸z­òÊRò…jeÇÊÚU¸¦¿sÕó;®»Æ;öG¶ŽèöoÔO²^Ȫõmõ£2•/šêø—¯$;Û$j"ËÒ&O6Wi‡ ³ãy(ž¸?yXrH|Ý„n±ýõg]w´æu¶ é+ ‡¼©%‘íø2ÆÓØUÔÓÞØ¡jÙ7äúàÝàfÿ Éò”Lo7çRnATX–D0mY8Ð÷iuT£ƒ±”6ñ[ñ…jžùÃÞlg œõ÷ô}÷¦òîPG1û½?«µš¿^+mÜìDø;ûkÅo>§z]æo̯ùg$üžê[¾`øÌñCáŽù$¥¼és°–~A;‡gá6Gj!ÀYà4ÕÂ-²…8 %Õ6<ƒ#¹ ¼†zpG®UÝÄu’D¹IµÇQê ÄèMÕnǼ€÷c3\Ê]9À×­5Ö/Û¶ó*.ð?ZŽƒ;Ðòrû ‡ñV-½ã¤‹Bò†PÉX‡ëCv膋#š¦)—î‘ëÏBÇQù-ØúO9G¤q§©‹Z¬£‡Ù–ª9‡ütãΡ‹"'ŠÛî¹®ÿ ¿öCœþp †š%Gƒ‹½} ’X×\AÏàÐz˜ó­ó‰^×!ïí 2ër‘Õzêãô5gªgÓ¦}©Í2®¨Ãæð@I»‹Ü¬^ËS à<ç ³³Ê¡þ:vq»6m-µÿd 3¼²Ú›ÅsáŒ|¬*Ò1Ö`˜4ü´Nýð˜Ú,㨖ñ[û Ý #„š»4 Ö Œ† JK1R+I[°Ôú‹Q0Ý1MŒrfÇ(N/⩊ܫû.ëb‹]v²Úß#ù%w¶·Yëq =ÃtðRÿ]+Úhç¢TPûmÿ+ iÁ¡ú*ýî©”FyÚEä«I³í|Z»˜=ÉÜìk>NÊi ¦Â¶Öi+TMrTt®·AœÔ¤|.„±\¿Ccµö ?Ñ@‘«óMÙ†¿ÀՖ˪‹Ö>«Ê‰nf È®,»Ü ŽÕ¡ŒÕÄ?Ža*€ð oÂ[±TÆóHøJß±¡ZÄ9¸€L’{±.Fáü@_¨³LâçðÎq_ÜL¹E;ÎEÅ^h ~ÁÒ\ ·ag1Çi©E œ®_U^<¡æÚ×]Ç`BšÊ"·ÓɇÅ-½Ÿk†îSÛ°¿œ¦2Ó\ü"Ö‰‰Ú#ÜQÞuÛ=Þ¹ÍzaUUßÙ<ÄÁZ\¬òNxˆó¡®ã©°™ž²C ¡•¢•È‹M!„ŸŠ¶˜Bñ>o€Þ²)6£ÐnÃ0`"ÍÁ ЇsÂiËõè®»UŽç‡bÆ«að/g…X0qM¾Í°çUÁs¢ì䦢09¸Œ,O0‹Ê°¥<Âia‚^ƒKÃm̪Fó&ŠÄÁüŠF©-ê1†Q®&ÎRû "”à4X 6Aô£þ"µZ«Úr~ZCCÍ"¸^r9–÷¸—ÁG8óSfˆÀ ê_v«3|]äK¼náoU™#ùùWŽ‘7üÄñZ®„޹© ”Õòs;¾/WÃhÁ_( ,“_E|U{e?vRnöÁ/¬E¡TUÔ{»‡\xªâIZJµñå)xÜ~Šå(·*…Ïð-¦8N÷TQ¹‹w«ÐþO<Z•u^kïsÎÅs®—mÛn²Én²=Ù5ÙxÕ &c²ùgMvϼ÷ìµþïûÆÑOt•ÀÝq¾Çñض‰ãð»ØJÀàþ¼G\§ÒàxHl‡~ð‰Þÿå³¼FýE¡ 2h¿jLíø7µHf AxúÃf~ áÔŽcy8ý‡Ç ‡bÜC-£›|É|…å9¿šmgWÄpcŒÖP/äÌå+\Ÿ@@ÜÂÑ#o ˆšt.ÚuÔxþΧù´>M?†+!J„i‰ÙÚ.šÄY è4×^ 7ø&LƒÒÂ¥W…›¸”Ša¤lÍçó\‘ßòmNáL¢'.…ƒvw§µS˜ÖQqzŠÇð¦(@#¥ÉßÀ ¸›EV.K¯ñ›¬T*D…A{½Üy¬ÅÖK3_ºd”Ð3±i·Mìe†¥ÜO ãòiocEh-­ y^þáy>K]—[ŒÃÞ†ÁÜ•Åc‘kê§\cõo²¼ö2¤Œ$µ‹³úªû‡$yÍVþ_Lþé#rKÒ„Ä™>¥ý©4LYÞ›=C­™§_ÐàmÁ?Ò¶¤In8 ‰&ñGDœ‘6X¥`±Ï6g;éô—ۼ$z¨Øô ±‰×ý÷¬¡±#pö VN]ê ßeMÃô)ý±n¿×b¸²njGìòžíÞj¸™‚é‡ ÇÐfòOµ’ºãc˜®:an¹‡Š¢ð…–³ OˆøG ÁÜ›Å'¾‡Ÿ„‚D½;·Pµ­"ê«·”`wJ_Ãà’kŽJÆ×r½ZŒ™äb¥×Ë`€óú‰V1ú`°9­±õ›9L¨âÔŸZdà„¯NÐ[uƒšº¥+ÄÄû»´sЬeu÷H¿š¾ßÌ=ÛsÇ”(•_ÿ`Ÿç¿e1¨î'öÉç®OX\Þ•—0L_¬Ç‰F.ÇÕÁmÊD8>S®b½ñÙ~ýôÞjhf2;¿¼“½m4·^ÔS̸îb@ë¢ßÛ8–:cª³Œ†³[l—Ea J.EÉ”¨úp,åãžJˆÎÎL±G)øæ¬’õ—Úqœ‹?ñ ŸæqPÖª)ü Z±zcØ-r É½ÅXñ¯rOXŒ=Èä1â.ºøÊÊ¡*K1J\¡"pN•¨Öó$;¯X cE)OEñXèZs÷9Ö}Åø‚Sܳ´58h«¡(­Å,uÙýVôwfñu{¨©å‘š;xwö>Ã,§¸Ìáª'ª¼)%ÄfNó’KÛ[œÍÎ(ñ@xäS.¯9wi þeñ(–çBÇËÎpC0¸*ö…âTZpežÅ9±+WÀ&â'¥¹¼ƒÛ‚!¢´0ŸÈGtž[MÄ$xEÇø4û9 âa¢P:‹š8“VÁvø &àU¨‰Ã¸ Äá*‹™a#uÅ!ÇSuÎO`¡ƒøN@c„ǘe_þAø=ïtZ™;|«ê IDATÂÄ:ñ‹VÓTUÃyÈß·(:‹åØYŒ¤?µÕˆö~èt 㜌‚:Ó zÂSD/Ø sݸ¬Ò«pm~(ª¢~zÇo!›À ©¼€Yp€8›ú  ‚ý°î9먳JÃM<érZSž*—cª ™9÷áXޅİy¯¨ˆã  ,â;Ð]ܯü > 4‡d•[´Æ¿p¸šÇ3Å‚MZ £¡4º 7†Õbºó~ÆËÎ ÈLÅ|ÁYcög‚ðk©ÚÐà3¶ NZm‚M‚³¦ºÀŸê(µæÃP+ÀDèƒÑ¨±€5Í£(„"à8ìã5tÂA€ ²X›´Æb­S“{qqúÂï`³8 5qVr~©ÃTV6ÂŽp›‹ó¬F4Tè¦<‹"&…ÊxÕ^b;iC´xÀªèz¼9t³s–ªÁÆÄžñuS¯¤KÎb¿Kkov/Hšê‚âÞ~Þ“°À[Ìø.úÈÜF?Ý£'Èùžb…-üEÓæÅúèªçºÌì¯Bß!ÉÛÇn3E°j%NËTý6u±²ª5Î著Rg( k¹ è^ÄæSóËyÛUÕðÈLBèØ— i»‡ÅÝ XD¤Ókà…ÜOì Ø‹£h‰HÀ*<?SOèŒspî†,òŒØ®ÞãX71–+ášÎ%ÅLìa¶ÇþŸ‚_Usº€Aª eï´á<蜠/àæON2DAsñ ³r$NÇýVi~.ûSÀœ@mó¦]/î¦uÌÚ@<3gª°¶6¾þ¯9qB’‚Ý–IqTW 3h%=éü/üîœUEª"y·:á7–ù¤Ï,©¦ªŠ± Q!×`KÅ‚|®Óò™¿uJ6ÿ³Ô„Ôɉû4Ç»Çé2\¶V5ø”7“+Üy°ÍS8È õU2Fëã•£wÁV´ì„ÿñïv-uŽÚ‘êfñ8Yޱ8Í™A±úSãVîçËzšGÛèÍå~ƒ¯<“½™e½-вÈ\Ò²b½fcèÉQj£ñ›ìU®ÕÄZõ òœÆÇp×î&«ã˜ˆ±~»ð®ÕòÉ>ÐÎÕØh'C>¸cÜ“Ü3Üažp÷õ„jnW£¡‘]‹ÄeÚ}‘Þf‰9îd¹VŽÕ÷P^»íƒË¼[mÕ°½Àè¨Åjõ&ÚYùBhá4·ýÖ»«ä»lW°ï©¡®¯;«·„·MÐ&wšq—{ï»ýÆï®³®;®B<ã°6-àU žÓ(§/Òh 8I65ªðYhe<ä*QG ŠHÖ’¡´§çÔ_õ§K* ÅP'ú©b¹+Þ‚žÔ™@>~L³Õ28U8XuãÍ,` 5Ð.C6î¤yh>ÄGñìãJb!UÕÅVg70d‡G†ÍmÅu½¾–—nxºïŠ¡¡'=Ÿ1³ç€þ‚ÛhÇ83þ´5g…<äßc¯aä-õËzš»QW¼úKˇ`¬)P&­…5 ÎʡʠóFØc/[¡»º5ø“Sïq7 Ñ8[¼Çö°OãAÐh¾Çs€x™æb~1º¡¥v ÆÚD1Y< Ÿ8 7y ï¡f q)_ÀG[0®çxöR ø…‡`=Ôƒ*œMlÆ®+*‹LTÇ B$6Á-b-ždM¼‚‚N%™ˆ¹)¯ˆýò$¿ ÄwùYÅ3Ìߨ…ÈŠ[±6 ¯¨»>JnV#eNqI=¹D¸'£Ä,•›³aWS­œMÔ‚'ª ²›\GëƒñšxÀµD$1ÀŒ(°Ÿü²¡±Ð£8+ ÀFà…4± lÎÁ ¥ÿÔøäÔƒ½•áÔ–ó$. úcu8+kàKØ£.ãHøÆßy _×vˆ­p\kŒƒáÎæ|°‹?p/£x&ÿ©•ãšpJžã¾Pëba q _áÎÇïø±ÊÃa>•¥yª.á ¼T”GEžŠ‰0œZ‰5¸Û)‡EŒš­–pyø€JLÒöðF~kᮃLð“Zã|èNeá—w¾ÐPègW#±‡“M,Å0{*lg3’VÀW˜+NÂpþBx§ÚG>®É˸›-D¥1ü„Ó1àKÙâ-X‡é åºD§`/«X çb3-ƒ<+ë «ó!+ÀÂ`8åX‘N!Ú4y^¡08ƒó­ƒê!Ó#å6½¬Òx,ôÓàì"Ê@Fm±šÁŸ¸…ÁVØ d¤è]±)vçù2Œ‚œ‰SÄ µ®ãp&½N2~É×x ŽÃY¬Í´Ý(©X-o8£ƒJºës={ôxó¾S/y4åç×b¹qÄWôJƒŽþ Ý1eÌ•I“ûƒbƒ•'ÆãÓZñ<_yÿ¶ä7Ö.UÏ»ÜÙ!ΰÀ{œ–ìM;fŸNÏoïÔcýáv&±J–vòzÊ·N3:.÷;]h¯]ù­û¾þÈ„²ÉÃðÀÿOÞìL‘'UÁOTCÌa¿wö›ãœ ÖxW-]·,,Ü2cÞ,]s^ÀDz‘V ­Wò—äúvg»ˆ*íýŸQFÔs}ÔŠ@²±LæÁ{Âá¼ëBu8Š÷p4pž¨ ºQø…ŸéÜ/®ƒe¼˜óÀ(«ÆÐ7.®2XETOnom´ bÆ;øØ,Gðíg¶ A :àì ñ‰(#Úª‰*ƒ]Ù?%°×9 ¥Ö03;u&û ÊP#ü¦ïýÔÜ{ËZeVOþ#µ^Ú´Ä£œ+À«Íó&Ó}\â©cW³ËS7ý…ý9mœVUËïÛ%ÛóD+¯¸…oôSzgmþLÏ&§ÃȨ1ÌÇÆ=͹Å!ö[GÙ™ÊpϺJ‡¬s'Q½íu¡'ÂÊx[ƒÝ{d´Ï)#b—$þX+Ž®ëC £¼¦ÔëèûôÜTƒŠ˜Ól2ÕŽö~÷ÌsÒ³éy‘Bç‡ôжkõõúxÝþ`u1ë;³ìOöc£ÑÚU¾A­Šì{¡ÝÞê%±"þ0Ó¸ƒ…˜giŸñ:–¹%ä€N|žó}\ƒ;eGakÕõäzýš^ZÜÑöx›\ ûåAÃo“!Úní&ƒG¨8;gRM±%Œrnª‚öxû«øA¬|ò/´3qyþG¼Â<¢«/oyª) þ£åF#³Ì­-s1KK׌D}…\ìéôÊu5|@ð+÷)ý´‘ATVÁMmq3”QãàŒ¼£=ácb «£²,g¥62;z!?é?9ƒE\Êîgft X“ü‡(/çTï!·x$Îáz¼c ŽÃô’FòUg2×€0úÖËÌŒÑR‡³CíàîX žS’8Ϊˆ­ sÕ WuǜƳ]yÅ¿öM×¢ Á¡éÁïô{ú@ìÊ«ÀtºŠ¾f”½S®´Lj„ÕU ö}Ø[8“VAvpNq;êŸ~6}gú/ë¿À»GqÑYÌÅÓ¼ OÑL‰ï¹χ*XQ.…2x†ÃO,ÃýÙ!øšá>è 9ùO$jC’Hsôw¢™vUÔçE{/OåÔ•¿ðRìÍÅ1 &qhÅÕy8ï¤ÒX£U4äÃkàà>‘ µé¸–¯Éó2fó¬C5À1Üߊ¡Ì¸QhdãzÑKÃc‘ ·àBÌý1ÁKxCø t­0;†âM¾$šâ?”*~BNƒ<غaW¡©ÿ 1m¢X2ÔbœÁ h³¼ÏÖáâTQW“ù£úÊ~,%†C®€ÕÅ?‚!”{:åÕ~ç$,u°çm­ì.ÒesÑ  ®Îá^h‰T†X»]ǵùš_­æïb#/ƒpW² ¡b"—„{¢½åõøQäíd¼ÜÈSÖeû™sŸâO4ÅcQÕ¸ÏKùwg VyéçÂÓÎCÑ6Ñ1ò9N×KÊK ´,0J|ÅY®VF-ÿsW>2 bxùàᓃÎMVIþÑþÚšåÞ þ@ØŽ°3ç¥SÖb¾óSµÅŽ;¹@êG+›Ù'~„ÿ¾=WtKÝæk„õÕõÒ*hoÃiTÞ—Éþ¯˜÷̪fŒ\/®[ ½ï]ˤp2öh9µþz¢ìaY§Ì¬)R¢Íb½QÔhÇ%Å<¾«rSqkžØÇO%ù˜ý,aG§ öeò~o°¼ˆ¢HLL-b߇´Wé½Ó øÆ¦·Oëî\µ7¨˜à©Zi‘Ï=YŸk´›)’…‰Ùh:J<îÄâ),—–CÔQx$Ao\#\<š:—y ûDFg¤pš¬fR§ÚÏ·XCí¨×©|H© ÀsœB­å6£³¸#Ã͇αÀk~î u.ÚS˜Q4o[Ëí’b“k»§J†nχ-§Ä[ªµ×¼ä8êõÔ»Kxâuã¼7Ÿ Ëß5Íéš6KÔÁþ–›ú8¿QgÍ+ÓXµúFU-FÿŸ8†‘ò:ÔeÜ—<3Å2œ!ûÚEÌÕög¬{ê[5Æúåoª¯—käýð ™ûdæì=´Ü_1íh¢?ýZêa;ž&s m¸X«ýÔ<îÚzº#â µÐX,†òoTp_}—QÞõç ž¨çåD¼ ÷Rs&¼Nm¸”|8P&éBVȲž~B3 ê¶Îê¤Ä#i/ôƒÂ0“Çà;. 7xÖ„Üðo€‹p"W‚G\‹b>žëvd„,(*xšýa§»BZ# u¢/œtÏð»«lÑ*£1Õ¨-b `³¯tÊœÔ+Ê,¥…ÊœýsPLèrï m§ÖZá+ã)Í5­Í~¿ù§?Szþ”ÖN'ó­o‡+³'Õu!$:¸ g Žz®‡Š>ঠé9Xª*Î{Ó:¢fÝåêâ™Üëäâ?¡¾•Ó| ¯ì!ÚH{'°§úp®Å‰!fc'ŒƒFÆqÓhô Ìì£|b.£#¢6ã9s1xÔ5¯rX‹p!ŸQå!¡ik1Ïêý´éðV3®ÐZäÝBj5­a\Ï^mïļ*Õõ—ü¤½eqPÌ4ÆbG¨+ˆ8õYn”o¨¸xï܇²"•§\•\;ågyW;*s 6` qË`ý ¯ñ›¨-{ÐUª¥m…y"WÀThÂ~¾Ã»a5 ‚?¡oâ‘Ü¿àhü‰ÜÚ@wBð3Ü‘õñ;6äŸÒÑž€óa9/¥çœ»x+m€¢ÃC±<Ã0è„Y  ‚!PZ}‚,¸¾ÒOØÌñ8Q$ò ôÀ\'0¦A9¨‹Q†Åñ+ ƒfÐ ¹p6c“»‹qü šÂNÆ$è ñx8ʰô‡‹˜‡ªc$fç9˜;Ë7°¶`UÊE`œOp½š ù Qfò8‘>qßT°0üïáFh=ádÀŒ  §¬B·)ø'cnü Ϩּÿ6ßàeHV‘0¿êèWÄ|p²Š‘|”£!›€FÒÿ`mçÌÍŸ1fçm²‡VŠñœHȤt8¥á/¬‰çø.|À²ü»ØMç¡ âõÇðHX‡Ka>îH¾…9øž“IMQŸíbr§¸ËáŽæ¨xöA]!«‰]b%¼ÆXl'R¡ hÏQ\S¶ÀÜ &sÕzÁ#¾åÄ&x¾: îÀû¢.ŸWIò™m9mx¬+ÇŠ ´–¶s ÆCN‡˜ ?Å*̉¿óx‰Fbwè«ÔÃQñ ¸ÉÅx”u"ðŽ‚–|N«(PÊreþJÛõ!pSȨ½ER[Ä(} þÇE üæ¬yBf‡ÔÔÏk§åy]3^êÛ<µ]Aáâk9#ü[âßÛU’7~t¥¿LlûTÿ¤UìhÍò-1'©Å¾¥|Ž‹ëwS«§KŒg)%ƒ3íáw°Dß…yEKy’?»MïOÜç¸Ìhû‘?%ùŠ=w«Yzš7_Hƒ WÞ7òX¦ú™‡j/´±Áe2oLqY·moê¢+>…:h‡øºŠÄݘ‹Áïø•Û9Và…ç™|%ÿñíNõƒ†®åîÌø–©⋈I‹²ÀÙæì"}¢ñŸñÅ 5¨-OrYzWç3MàvtN`v±ÊqA„á:¨Ëð³H¥tÅ8’óq¨hªÝäj\F¦À}>¡®ðl( Ýy<„WðÍè¯%ãõÕɤ¾Z¯)ŸYÔ¿Öâ•D6ß:-ÌótÂùŸ’"†pI ÂEy}„kŸ{µ{pØã´ÈæÿÇö'[q»œ?Ržñl î£/ðÆëÅvžäþª½Aâ¢Z+‘„wÅByÊ]’W“ɵx˜ø)"Œ®ÏÞBÎg̃“*#d4ËÚøÓÌ#4͇Ïx„ÙÁÝØÛ.t“éäÁí¡•õ–î1A7ƒÞŸ_a“óRgCº¿˜½ŒÖwµõp€«Ãz£“¬ˆa ü 0Pü¦•së•õÉ ±j9íÓäK»ðûlõ(ýŒÿ™»kÐ[W/M˜bñ—åÚžI¼‰Í2YôCÅ('wˆ¢\*ˆÉñ@ÜÑn׃¡°‘¶È½ØBõ²ï€F¹œ‡fVû¤¶ÈIç{Òð?÷U¦‡¾¦¾êÖLv|;&ð(y½ü¦F).VÐæÀ?Óö÷ô‰oÍ3¬QŒÓIóOkãòóæôFzH—;Ú=Îhbg±àVg-Uurqî©ÎÒ[‘[}²Ïò 5®d¦¥Î+'»š$rq¸³YœE ÙfÈM²¨8"[ârý‚vQ–RÉ/VùÀ •Õnª*8§µ³&ŠÙoœËVa×yMk⪂Gô`9—Š;ÚHÝ’·=‡‚V¸&â8£†žƒü‡¡g5¸#yµ.e3Q 9’”ˆÏœ˜Q´Teq‰è#\r#,ÑKÊZÚ9Rº]ÓÜiºß½MĈQörNf?\ÂîâÆ1 µnøtÕuÕ JðxÏ·mú0tƒ¿pí…<\É ‡áAÅãdiNc—SSä¿ôKܾË$®ݸ„ârUãTu޶óBQ_ˆcznp:Fp[X ¯`ëð,á_>€'E‘Î;à“PpSÅèŸiÜáê'táS4œ¡2üε8&B_º‹)R¶w°¾èÀohÃZàR׸%¶ v´uÌ¡\ö‹œ|Е³såà8-M,Ês¢”0 öâ@îI~Ü!âä_škp/Tf†£¼+‚Šãop{ò("'sFpiíE;l¬¥Òß”`ú±+.ÒËñs(¤RW¹––3ÉT…nÂóx4‡Ñ ñYŒÇÞÐöÃhj.†Š<\%CušÂÃ0‚Óq1_Ü€:X_‰íb.3Jq²ÖrÑjšÏi\gb2ÇAâ%œç“¼AKŽ3E_èB×ù!ÁJ8@ °ºÐX|È7!”K@QªÉŨ·‚O´\Åb3>Ä}xX ÇI8[•ãGP‡bS®¤/:\PSSŠà¥¸F®ÆU0P.Ea³¸Ž.ØH÷i9-§Ö⪼G{è膟í_J‡ƒxŠðC®ÅE8¬çŠP3ŠKZQû ÇÁaaÐ;˜Wã„ ÙˈÖÜ‹÷‘À;<ëO¸4;µšK˦ª¨¬j‚ÊÅ–}NϪ-€ ê•ÅUÎë/˜êbu•À5µ}ð ÓNñ YVö£[W{³èŸ³¼ ïãYäé&Ëic¸¢È$UpZø› QÎ`WkUWÜÚጳþ¦ü)Ñ©9R¯$‰Ë“\Ê?'ævüÉLT/±;pL P‰”Ó©”Áɚ匧“þ)ûDûFJæïÕÌ<¾Pk¡ªÈM(³“®zòféé”é‡D7m†j%tYË&ìœ6ÏùˆÉÿ·9]=ÔnÈ£|¾mrÓÞjïŽ2r¦Íô´ÙÖWóÆ2íô]f=,ø¬îþ¥¡â—ç:>v]de4ÔA,ÎOœiª²5q?ì§õ!X–ªQM •WñŸÃhž+ªãx\Mà¿§ç˜_Ÿ˜(g«j8çò<< Ûè;m³³í<á ‹Rd`\l}ó¨÷W´ËÂK8 ­Ýµ¡ö¶»p‘èl­b 긖Ë=r°«¹«žuãÐÙÉn}õ}³æi+žù®ûxDKíÅ?b¬·uˆ?㣌ñâ¨:`Pûç“já-Ú뾅͵ pRN£@Ú QXéx‘SÔq5*szL=x%U´ØEÇS§$øÓ‡ÀûœéS Ý÷\÷tÖ?S7U‹iüaê£x©·tÚÿƒ!¸\T›´¯ö³—þÝì ðç|p_c™/݉wZÍTn¹ßßÓIÆK¸æ_†(§r9M4Ú­sš×M„æ¼Í™HÑ´†@ˆ(% ¬ UdI­è>‚¼Ü„§p!þEû¸¯‚ßÙ¶zpVÞëôs±–Êá©§?ÇÖYj‡ ;‡;Äa÷#UY5‰]©Z¤|¶RnŒWôÍî0ùÔß"¹›C‰bK'ØÖÒôhXãZãþèÚOµ´ÌŽæ?8 qfkû±$Jå ªKÂÃø®ñ9B'…•;B›wÂï¹oãýR0ÍõÊê#V¤ã¶ð½R'‹ªéذVYÍU°}Åj¨f÷Òoè•dc½â…“r%GʒƯ è˜°‘®w!OÂÞÙGU©˜€u>þiŒ?gîL ¼uæzë£ìâʤJ-¬J°á:ª_Ò—ió¸•keÐWüWûÃU] `Wšå™)`Aç“Ýľ‰±žöÆ­ª´Z¥ØÓ)Âñ¦*åŒáŸöN³ Uqêágœ¦}òÎÓ"¹ Ìf4Õá|Y\8b¢]ØyæÌ?g‹óª7T—óB~yúr¶!Žû«ƒt†ýNQÙ^hê9LÂê÷†é)®ƒÏðþàÎb9å$÷:Ž´‡T‘@sêL¡*?„âŠä¹¿a ‡Þ°¾É{P jãrÎÎÓ¸ §ÕV_YDÏã`•ܘ‡á%‹&&Ãø ùa4<…ZxKÓ*ì Ô[z óø –Âà/È £x?×¥U|ávøÖ ŠH<Ì•µœôH4´T bäÜP#E=±óhÑ 0oB68Ïà9<„_@wx‡Yä{¸Í.''@aÁ·Ø[5‡ÂQÕ„Dø†×D7øÅµh/T…Eöõ6Ë0QRnÆ£pŽòóBq0 §ó8µ¤å…Ûdqì &Áÿ0çã@ѺhuåvXPkÛK¹©ºÙ_ãØ*j‹FÆgØ ëDyT0fÆI²œ\Š ) =0˜N)@7ž¤qО³ÓSl‹i&÷ÃÜUuỼ.Bc'J~ÆKü’Ýr¼ð¾rk16ˆÿQ…Gq€¨ñüîŠö4¢1ƒSÍ9cÄFq…“UvÚA¡ò©¼ƒËð&t¼†óÇ‹G8Šcm9 ~À;ÑÚ*àìgÅG̨¯‚œSe„îÜLu–wå[ñ ¸ˆC¹]¤¼—ûÒié$ºÐ=ZíôQœŠs/¨Æˆ[áa‰÷qt¦Úb2þ )*37U5x6€B¤ð™Ú<Ê—0àS‰ú%y—:Z­eV5.²pVo臬/Cþ6'd [ì>@¦ØCÓ© Í£gÚ#ò‡ÑN¿åÚŠù eîµ®d¬‘Zз#¹ðzxßÊ仯æ:;±‚ÿTr_ûUñ ±Òù¨ŒðÝv諬ŒV¸ö$äO‹HËP!ø¢§ë±nÅ~ô=û±Í~Í¡Z{à°"{(YЮªdØN©¾¥éÙåZõ—½‰Ù#ù…v¾%b‚C¼UBº‡NÓ«yêªSžD£¸ˆÇi–XëŒnäñ¸ ^„D.“²'½‰øeä÷L³"— µæPm<'ÀtyA&¹ÊÒ+ž$Ê‘éܶÊyN«0^Ç`³ÝÂ™Ž¹  MáA¨8—ÓS¹y¼¡»š­yá—¬gKë IDATÖfbí¼!‡qHú6«œZ¶Þ÷)­è÷VI¥Ó§¬Quô¿”†£ôjFy9H‹p;r”Èo™Ž“êI¹›Ë55tš|UL‚òú9÷G¹Ów=ð‰Áï„ÆÎ1«€¶_ÄÝÔ‰íà—®“îÖ¡›Ãï©éR’œ!¾©Z]k¯êƵÄ2 ¢jl©Ã6«IT‡fèUŒO°›Ú©–H´WÅk‹í#Ξ–œ5IK^kîM-è §Þbí ð›HÒ^á<õTËíš…}ˆ!¿}ÆY !8ðÔùŒ?­U©Åx‚ÿ±¯0pÇ™[Ìz¸*8¬GÛéö”Ï[E­¶n·÷¨¶LÈÞêbí%öw³³™ƒJÐië1LÅLèÆÜX^ìm»ifÆj$@+ôsShŒ·ø9÷â\ü©`(€ª%¢€h†B¼’ߌ2è‘¶w¯¹—?"ÁþŠ4 žÑ È/âÕ npfûº]ÇùWtþäho´ºàˆ™®,Zw×#OcYÂȨ–­°1e®Ñä»…)ŠÒ<`=¤Hÿ…ÀAΧ2Yl/³§…ùëÚ½Í4gvä!:Osh¥ãµï9-@ài|‰¥µTù œ%AºòÊ_!Âó…ÏòF†¼Ÿö ¾]öUGîYÅ9·š(jf3·ãláý½“ÂFD˜ÁÞ­ñl Ú$3º ï.ý¬^À(&Öê+å0ºÀyè¤` ß§·Xƒâh»œ)G;‘¼P;“^Îh.µb­¡ö0sî˜þÍ„2ÈjãDÑÛ@M¥t_ÊïÉ•}9Me!73Ū½| FÐz¾ ¥±*3>ç²ÐVÓ$¼Ã_ð åE°b¹>àœÐNÃÎLXÿ'šÃfH÷álØ[ϧÚóA¬‚cá-Írø¢¸G¹ w³Åp‰š6hýDE|½apâw˜Ã£ #†ÂœŠ;`4‡í\ŠýtZR=ûœ8ŒEÍŽEœØÂÑ¢Ÿ„Ó"3åä‡TJL…£\JäM (Uàp ¶ÂQNÅÕÐR%ËÒÆDnI/Ô×i6\ƒ Ò Y¾‹Gâ)®‘ù 7ÜÄaðŠ=8]œ’k{Ð?à¸6M$âe¨Å;¸<€ZÔÿ…JàÕ|ÙÞ"nÐô”|„¯ªŽøn7–A .ßsA§þK3íaÐRWk¸Îç¬r´(,‹A²-ØXK^ã81 gàyq7Sxȯé þÃYÌ™ü”³8„PP†ÂUîn¼¥U°VŠwñÑŠÁ]| ó 4 ‡u"‰§ªË¼Ó‰ÅSPÛyÂÅøÕɽa˜˜ ©ª<äá0g1܇$¿A}|¢úóQì—U0oæïünÄ£ê«úM„Px€[p.ó´9â:|†ò7 Çë* /œÇ¼€~ãÁÐÇPg¸Kƒá zDg°a³ÜI=à»xOå9DLW}™9Z{¦KµEòžþ.òGŒ‡h¨Ä1c°7O¡SXƒöÑu(-`™Q~ÄâØ Ó¸IO[ð £`(¬áâb&½æVXÑ|LS1§ýD7°îÉpQ[ãÙí}!ÆŸÉt-hL‘ÿr¿Ë¸!ÏÐðoÞ¨ð;Þxïï¸A p’8+çöJmì¯åZ•èo_WñúÎÐS®þž “[_;‹•ÒZ9uÌ}þþþVi§j¯h¡÷´ßP¼Mò™GaX  F@ýÌÞ̃ƒóNÏS6w@›.›sR«ÆÕøZ͗ϼ’=vXbºUÛÓÀÀ:ùQ~ֲ뗵.e;¥NŠL“šÕÚM…hçâùZƒh@˜$Ý-Üm]“óf&§ŒuV çýÁ9fŽ1û™SÖ' òé³õ-®ã?®…ëÙu¢oU&êXÎ>㵔ʣqž¨ˆ=è gÀ»ü´Û) Ïà Žà>´Èßω¡BpÖãkIœI«‚{8FS°s•Ö©gIÝý—ýщíÒ*¾&vô527¤×Q[õT¿Šž>ZyüƒPyªIïh‡J…iªœ3×5YpºÈî´Eõ±W;oaŠrj‹3<‘_Ñmû¼úi¯¶ºª ú5÷)cŸ§°7"´¡ç+è¿x˜|8¥õáüvQžÁ‰Nw~I=ù¬Ýˆ;|æóN þÄ 4µÚÛUø WvFCe°8À‡ÿBYþ©•eCå“•Ä6®+‡yk—!Ñ¡ý‚rxŸeÖÿ¥ljà¥UÖ_Ëÿ7üK½!?¶·ô}ÎoPÅÈmÞbÇÕC®`¥èó´*¼/´vhYïãà|aBúÍÜ·"âìÑvuoÆ_ù~ŽMÎ×*fUòsf`™5ÊÚh 4KûŠû£ü¬ò‡ÖZÑ'«öî ª£Ë µŸ:>«UÌÙe†8S錿‚Êd•Oé•4&©ÚÏ ŸyãÎ~›ë[çÿßC+à]@v>Û3#äJˆíZbL6~i ŸÙ¶:“Ò#x0/µE–‚ÂúRÑ:J7v²†Éõò•ýÙòQy³Xrsµ¿bòPÿûYúãaéå|9BÒ;¥í ´åâåV_:˜òÈú®Ö¦kò¬^{ÊDÙP{åtµ7ÀrŸhÅK±…–n  —PϪ'ÐïQ[(“ñ`·6ðy£öàÓF%èè”7ޱ휒»ÀC#ì–XæÙ.œ 󚜛r>ÜOE])ðŒ–)¸‹ÀG˜ zâj¨ˆ·à&ïÅ8ž« 7翱º¸…×p½ÖR$±{Á µ³q-ŽWYÕTÇ4ƒ,ÝŸÄû(ÉÚC¸ªU!àô‡Å~Kyá MpÑA§<—âÊRkiž3Zª Nê¨ëôçL4ƒøì¢ú¢•(«~ÇüŸU¯8ÒPÓÙOI°B á׈tœ†â_ðPÝä€F!Ðè>_†b¼€\x^tâub‡pm£Žx‹[à?˜ÒLƒe|ÉêG ¦ªSà1UÀT^Êe4Mĉ§b»X91ûóx M©" ªKI<ÐY?á¶Ê£`9•@Á5ë3¨&øœ—p5õ§¼ Kx™ðóú/M§ÙPŸ/¨¶°Œî‹¢"¯ÂŸpÎñ‰k|ÊÆb\˜fÒ`jEE¡; ätãh'Àzh Ã%±Š¼`³~ $¬Ð¿A Ö‘` ç-| èÇU@q)y˨˜Î[ø¸›3‰HÖø…¨aŽòK·èA;`0dRµå,FõÅW(ÎYÄNLR«ÅY[¥A_x ŠÑa~ ŠÈ梈Ž‘ØBþõ! Püý…kK„c"†‚…J,æ'Ønó ÀÇÅ_Ü\ìÓ«C3ìƒ×…$§0µÅÞJsîÑImœ^ "ŒçÙWg 9–·iæ1žù9ZfŒò´ËR(ddH_Ã+£p–'^²œé+8aƤOMÏ—¾Î—^Ø\ücÈç[ñþ´roè-OƬÃJƒ$­bp[³»/_êxl¡½×ÚËâU xðQ½–ù—V”ßž«+ôÔ9¡J€’‰V%û.ívüª+œ¢ËÞkþÖ «FZ5Ñ:ÿ;ÆÖ¨œÅv‡ µ!GÝ»B[†ð•ô:œ@cœ•ö9uÅji.õíNéæOWþnªEú UG´SGQ9fÿ¯F ‹³ÇG%¦Z`¡Úc5U´ut¹ËÊê¯Ê÷M+ð‚;¶]•;Q€§Š¥zks< ‚ciûì»04¡eê%k¬ï“µ‰üæŸVwõ†~Á$™Ñ¼c/²w˜ûuNÿÀ ÕI3Ÿ¹Õ‰ñðž<¢\-ŠtÙÆ•W›ƒ…µ$™ sË¿h)œ¤®ª/qV[§í§VsŒ=Ê>j´›Š)«Ò/Ó’¸ÿ%½v®¦ç TÂÎ@J”]©:¾áЇ¦r=õÞqùcÓ+§VJS ØÕ_Fê±øÑ}$X½8{GÕuY¡øG¨e‚]²)ßr&:¹¼õ#P†™o}/è«™3mº®ž©Â*Zm€£ä([=u¶ZmÌÖ´Áé@3S+û‡ª—iÛ¬øÀÞä̃ëÎXºd%ÚýÔ[›”\fÎÔˆ¤éOÒ^`=áךf^šñVD£ "dv˜á4¶â¸³¦Ê³ðàH¡ÙÃp§ŒàçM8‘&ÐNÑ~¡Oî¦güQ•Åéb=Æb7ÈEx8äà$è?ÅŸ0o‹%0ŽîÊX5œ¯An©–«r¢´p¬f®—˜ß¹šÈ²µ8Íßì©VAÿŽ…Û¢šk‘§{ž~‡I_ÁÿÁ±ßyÕ°SªWœ  øªï‚bTÓšÊû‰\\×¹,Ž˜)þd®FyÕ¿î}Z?é’rƒŒTÕ©'Lw%$'yg'¸ëÐÛ $új‰¾8do Øœ‹àc9Lm ¬ ©VjßT°8Ç÷ù[Ž¥ô“3\}ôMZVÙGwµÏZhà‹ç/d.öG^¹Öâ*+ÈÈÇY¨9ô ½à®ïáÚëÚÀáv>k¤ó¿9]h9|À`ë±3ç¤Dû½¶J´[ÖÀ„;Gþ[`ŽPÝ«µ`î¥r©£fÀ¬e{¹ˆó˜^h¿ø"Ĺ«îj=5•Ë9‹X§àoužŸÈ$^‡p‚ØÏ]8^d€Šœga¬…¸÷ƒ¬b¥¨‡ci ‚æØ€§ò{k D0ж8šëåh6÷Å¥4 ¢d }âOÐ:Ñ.8ÏñÇ70>ásZ1¥¨ »¡=P‡ùš,[rY,*¦b^ÜÌb”Ãf¨ ¤^ôËZœê2›Á,VɃ<Áj‚ï¡2·áFÐG0Âí>]æ×PNýN©Î 9—kb8ðúáOla×ÅNµŒ›q \·Ù91/6nÐ+˜‹éoZäÜ–ÿÈõz7z }ÄJÚ‚Í8³[-Án¸šq-()Ú@qìåÚ#za» ~PñN>Å·ñ¬ÁÉôV|”6þÿƒ¯F_ãüpcéõⵟR$ ŸÆ60R+ÁOÙÁHO91vC ­?Ä=*îÃIqG>‚}°JŒg)¯ú—ÞP¤6 ç@§Š(c¸10­ÇÐzˆ…€Ð™+òuÂÉ¥Z©ÉPûóEÞÅ%U¨Í©â°ò¨‚Ä8<¦,žáÚWùTû æÃkç“–.{ˆЖzCÊ“©®¸„Õa2l…¨á. #‡©Cü‰?³%ÄZµ@=^³á¢pjX YøŽSF¼Änô?̈%i"Îâ_úi¼Ž[eInÏ•é&üÀ²A]â‡t‰_ ¯l†;¹:œ`ŸWç Ϥ3šW¾ùôí²x&–buVÅð¬…}`8õÆ•šîu_5 dË:V»q""»{o¦QÞl|Fk¤nòؤnŠ+ÔÓ™dUM O”°/õóçˆôŸô\ÿÝ}ŠÆ*W•t'c˜s/KßéY6ÂÄ%¾®©{ýÙ±,+ó“øªÆŠéQ8”g¹FÁ&ãNR'§‰v'îQRûÀ°ÌÊ„˜÷úëxJ‹¤fé!*¿º¯Âôâa}CË;­~m¨ºe5L½™ù…ë’ÙÁÃø¨5 ñ.ƒŸâpÂ8ûu¤eú~{°E8-nFR5|æùìê-JÊ'_§ß6+Zåüu쪑÷aPq=ÔµA´ã†Ô[œÅÑ0KäÁ…ÊGËm·úF'Ù’Éü– Æ.úpõ‚ëãÿÒú6Ѱôæiã43pÙ:ê Ê¢EjÏôFƹٜäxÕ2Óï›`Í£µxÝÿ“W]Ueyì'ûh?ʤhù;2ËËXÃð Ôyi=ÜqâÕb6xÝròXÕÔk¾­¶h¯¡þÄW›ª‹æj{2¼ÛÖøÞuR¾Çÿ€u,Q@ïÙÝ·aÓ´©m©mÛ¶íÔvm¥¶mÛvÓ6ÖÓîÎÜÎ¥±ZŸ¶ —UÏOvöÏ;º­ ̨ úýoƒÛ͹ÉâFûgXzšê~Bsäe¸ßo„ÀZï‚´©r¡|bÃë¾fºUÁÿŸ9Ýl:Æð!ZŒ£)µ… ؇]ååBªãO±.ˆ-éuQà1b"t”R–$ §Yë-¡c‘iú{ÐAñ•_Q‰E¾c¸5Ã}ÇUMau©[⫤ «”"º²ÉDz3þ’D¬XÂ,qަðx ‡»| T§H<ˆ 2U‚@ò‹Y@øß£x¢a5l³JÂ*а6‘‚Õm›å6âÊ\±Âš)#ÌVÔÅŸÙ8 ‘J_µ­«opW±ÔYI Ò¿§Uó0GR$eÓ¢ly u¤³¨²“1ÀK²»qμÏËÁ)OYªlf.+—•¢œðî5JóÎò‘üù•½´’B IYΞŒVe[ }æq=—ƒn¼ÓZ•Õº¤~Om¬Ø ©QìF¹Î¼`tñŸ4ÃØ&<ƒãíëø9h¡ä5öš =|SÍE¾‚þ‘VYï ÛK®ð†¶y®œêà€Ê¡v­íž¾ÖvNo¦¿p4Ö?éiØØ\à‰ŽÍçïà^˜ö…Í ìëøÁ[¨™•ªçÀDª‡mð¾gí¨£ï …à'«§ƒ›8™œ´òRNÚOm©4DCcj !â üÀ¡¸öÁX(&ÇÃ}8£Ö¶NˆH1Ri¢LW#0¯²žâ®0ìÐÒd“ ãX •©l[Ã:ÐjK!XC~“íâ-ù'þ ñÑ "\\—S|cÓŽùrȉöïü°–ÇßLÞQ"d ~’³¬¢…܇q¼¤ÂpÆÞ²Õê45¯Ú‹*:»ÙP¦Ï(²QÔòo2²Ó&¤-6“ÒÓROˆª’ñ5"›ù Þø{BSnòÛ¼¦ÃoÁIs¶h.Çz‹™D#e/T°m¶Ýµ×ÊAÕËÄÕôé²o&Ýä0¤ÕÉZsðø¨2Ø …ÿøq–W ´ê»úèOô'T\44Ó­÷ÞÑÞ¹TÊú…_ýÇL?s2± ’ä|ªäå{ÔZ¶S¹É·°TŽ2c¨(åá‹U‡†C7k5„b³ÌÁ¤ÌÅH£?]½Kåps•kÝOÏâ Æ|¾–›Íô¥‹W†î7.Ò5J½J…î§è¼› Æ9¬|ó®È¶!ÛØÀ¸0Ÿ‚ x)sºuËÈ-TùÃJôÍ|)…?¶š” ¹–QÜ¢ùªA{!Xi =p/5Å"ÐÏß Êå/K~±Òh  ƒ®â'f ?¢"î¥EÒ¤²‘˜‚<¥Eø’Ÿe\î‡q|)nÂ~PïÂfX%+£è’쨵¥öò7èxŠrËìì3ý…+Nè%>¡â#>¢N¢­´è±‘•£bȪˆäÊOeÙ–rYa0ÚМÃ.âz/ð;ì!¢J ¾—ãá¬ü ×!Íã_h'äVBPc¿Ô¼ˆx“Md™Ø6!JQŒ0 &.ƒ0øÉV9üŠšÜ¢,`Yà /EIV cé •”Àrby𧬄(zŒÁ´œžÊœÄŽC0ÎÅ}†ÉÐÁjJø Ëßôƒ /q5<Àu¬8*ÀAŒÅŸT]áñX °ú0Ÿî±SЈ]‚¥äUR©ìdI˜„™`5T‚ûÖz:&†šGŒ-ð‘N°,Š¥ÞR+ð38&y—ÃoiøÏ³?r+T`Iª‹ –e3L ›ÈË„ýüÙÕÑ5Hëj}µî§Vø“šX86)iJj§‰»Ø'%Ð~0ðmp¼ÑÖõ%}©ml–‚në‘x•º‰/É{V%5Þúâý5)‚¯Vcü§du•^,p™Ü褌Å>FÚ;BAX‰/¡2ƒ<ïç_ïΟ2V¬öGÈü'íí}õáa½õ>‰Í"Ögè“9o訌ãr,Ão8F5d-q›ÜAƒ·…­ p½Sº°J8h”Áü•-F݆1| <„?6Ué , àì§ÖæwyV­Ú–ªe¨-K×ÎYCE9³xj“äa©·Üß“Ÿx*É#þÉb2;ÎK©˜ÈS”&ÒÆ)7”±jVþ[«©îÁ£í](›:×¶Z¹§W à(ÐÔ¾Lø›‹+Òï¦(h—sE¯¯Î¤Ãò;ªj˜,/§)Óè©ü‰ì>~b‰ì¶TV«WøEí¼Ã+²»Ø‰Ÿ6wù¹½ÜŒÆ|c¢ Ö ë¥µOþÄb·¬NãiÔøöIqÙ;ëgWa»1Æ3ß,âKh$ÿø˜äp3›Œ§‡X•"øJî§J°ÒMSk/a¨îZÇÚÀNÅA!Ú{ ^Í9ÎY›oÕ·Ø[(óùõ+¡¶¶­UBmO:?¤‚Ö%p’£¤zJ©¢ÞƒÏl9‹”•¨ ÐJ ÓÞÃõXæ¬Ö/8رW?fë Û}mÝs}—Ý7<ùü±Æbk¥(ÎÒ7ù÷™÷ýå­œ4V°¥lÍ£ÆÌæíni˜^ÅXjEùr‰ÁrŠ¿ Eà£<¤Ð-S—uäXAt^4‚Ú°Üa‚xï:c^0Ýbv°zʧò¨|{ÌÁ²46²`IFXë°ÒŒX]ö˱XO/ð”µÎ*ÅÉ*PŠÇ3§ÓΦ*]¢)Ó¾_ýÌ•°VzÄ 4a"í—µÅl+Pl1¾yø®¤º<Ò †jî0÷’Qòmpmž`û“5pºíwÖà%Cµ®ö®½j-¥:÷i?ôn¶;¶ß!aM`Xıì՛ޠಬÕ3øã ;èÞ“ÆU¼eÍ¢‡ì:eqÐÚŸË;ÂóÁ™²ÖS 6pµñÐmy áößíÿ´ÄÏžŠ±õ¯YþD&4JñÉ"ÕúXÌù…J×wŽæ3~éë•VÆ\«eIæ]ÄsSͱµ±?±5uù§Úöx IDAT¬rÕÊ´3ãÛ@{þ}¹Bž…Ö ûæ°Hʲ 3¡¼ ù”Ëœò7U’© Øi<åÅxh%ÁbÌ-}†ËdYž®±Ç°„®ÂØI£äO¨M×Ì>Ý!¸»PU¶;ÅÚàIæÀ¶¿A¨%—Êw2ÊX ‘ÔÑÚ i •ÀYôJé%·É ì’,EWesY ~ |TæÁ:¤lR/ólü‘}¥rAÍn»ÏV(º¦àpþVíCÑ2M&ÊûVñIr¹öÝWÛó½ü½:“ma¹9²‚ì›Ä÷ãRHä·xa˜Ã˜Âv‡Pi™ §â 1Í€%² õ?å™(Á¬€Ò”:À{å¼€.,|ÃZ¸b`4Nd;m;`?#>zâkÈça?ZÐŽ^Âgº&¿ByÏ:/ ÁkUÅdØNçX#ÚF•0Þ°A<æ0ZÑØi4ÙåC/£Y¢¢ÿ%?„¬QP>xÏâ#¶ÈŒ¥Œ¬¤ Á¬%ð2há;lQ·3 ë¨Åq ^™­`-•“¬2Û§,âÕ0¯òîÃ#– nxÁz°p "yK(9”GÙXV’öÒ<º+S¤ZÐ0X‹Q4†ƒ×å@l„7%ÃÃø²áOÈN“aš¼ÆÖAŒüÕi!àhÈ^R<½giqõ

)ÿl ¶†mvƒ€¶ùXƒmc yO¥¡þ#ðªkHàà ýìÃ2ÿˆhî*c|V™ùDø¾àO_h÷Ø×oO^ÏΔRÆ.«$•*àÓËiÕ•Ñz/ì.Úg R8VtåÔ«kÔ®ì ‚€ßê—·½•ê`¥x-Yœ÷æ”.ΟƒZ+—í‹?Cn˜¬óÖq7ð¶Áú´‰±n@;oϨuøf^K²;pFä¤ Âƒÿ)UT§í´S¸ÖëMƒožÐ(:‘Ëúný‡­Ä>,¬eØa\fî¤W”™Å);µÕ¶™j/ðÒ¾—×Q7«yŒBü88¡u‡åÚ,¶JÏaî—UønÏ-£¿|G1Ö ÐJ`>¾ ûâ,Œ2™Õ‘æ³ö|®Ö6êµ'¼kÈÒ|#Ó²&žs'‰;7:vDÌlóµ·Œ§<µ¥§xÕfgaž½‹£ûîªà\«¾ã|¨‹SÙp‘EKu$±¼ŽTW.Îô$}=ŒVFñÚV(ó°$‘™]âYñ–s‚³™ê Ž´ï×ú8›è¦Þ›ñnj_j¬V„Ê<7/¢-å›´-êfýã‡-_¥ÃE´Ö›»Ù}\-r+É­=_ýuÙgþT¹ã_h…àoN£2uv¯µªÑQ1OúÄ`Ç5þWhÈ÷±;øWë¤mÕïj,KûŒ=æîøãé7e°û®9Õô)¥ø66´‘êrm½öØþHª@þúò?ê"—È$úÊÊ|òŒ2CÜc ÷™7EŒÿ3è¹ïœødQÖ›¯°¬ÕÈðYÝÙÿlonïho˜õ£YG_#mWµÆÊy9 ±Ã*m|4g™kRwø³X³e-qüëæ ‹25Ϙ#ûÛ\…sz¦•úyà“À¢ü³¸¢g²r„ÈR¢›U”+=Ae ¶˜må e/‡º8Ì·Äæm?(k›7Õh£žï Œ‘£EVv׊’9ødðÁvå¥m®¾T-&"½S)µSnšÒ¼þò~Ÿ© ·5 0ð=‰¼Ë’iSøL}ž½‹-:iWìYžÏ;¯15ñÛ (qì2ÎaËy˜Í1îêmßÎohè¨àÌ_¼S=à¥ÓžkîêÖròiJQÊâé+'¯ ±Hã1£± ÓY7ˆ¥d$[aðÏ~C1B¹Íΰ©B;±'­g˜ ;c0dÃQ”W…Cø‡ó2¢”Uè$ ÿp}—ëØbŒ¤? @¨.6ÈZjè‚ïiìÆr64ƒ¬tzŠ»(!æÆã¼¡’E¾å¿Y'“D~5ža vžbC¾ŽýÃåt]œ“WÙ~v€UñdÃ8‹ŽQ6ø iÞÁò|†ò“ Jbÿ¡eí•éXÆãñ²ÒÎRC˜(T“EàL~HägtÒz„qì½bBfvŸï§…ò{Gé1d‡û8Š¿cÝXSY ŸÓ5Lô†‰ÆX¸I™¬î qt€\¬ ü‚ª|„x/ªÓWZËb1YWÔà}0’­ƒÔ’v`_š'-ëµL›8 †Î4œ&Èap_“ÊâyvFÔ”'YåÄãIVÊà@D%ùˆd?Ø[z í”÷”“N0‹d/álIãå'%Z°䥻f[­‚"Ø*Ö3zÙ B?¼ ågjH+  —Ⱦ³Ö*Ú‚e æÀìd¥PWZ2–þâ(Œ¤‹0‚ät8 ;1/T‰W6ÂM§D&á•Ùð |†IÖ3«$Û#êše;­¼òMiÔ!Èä/l…½d0<¬©/¼Æ{ÿ.9’ûûúK‘i?l_ÄîÚ7¹ìx”Vð5b±¼€—xý„êÿ ß1³Y¬¢¾¾vž,îŽÞH£kj&_#ùÛWÒp[hŒ<%«XÁò8C¶“O·ÝV\ü%ÞõÍôÞô6Šk_5)ôïžx_êcßM_¼·;Ëã}±"ØS±‰ç׿‹(ÙX¦ø¦ýL—@0Þ’O¥aÿ7(±VÚÇßí’g¦cÚ!ßY­=4`}lŠ2Œv6Ûrû;˜/Sçx²š?Ò¸³S «¨‘åWs)mØ­ž£#eµæ4ÚãÚ&îZqpG¦Ëìúj}Mq¸ÛØð=JcÞÜ3Õ×Qöôn0ca‘ÿ¼uÒlìŸ-³‰•´›±…hgãµsÚN%£zÀßÝÈ.z{ëy³Š Vºí•<ê{µŒ ìÞBÝÀ÷heù†2ÅñÁÞ]éµa°èŸ’ÿ7±›/Ò‡þò3&ñ<̆óe8‹Ÿg)øýbKÆ™F^¨ ÓÄU|  /mÂhþ†ÈTZ&WˆV=Œã·Õˆg™;¸p.4§„PS¶€/l2ýÀ¿<˜þ€ 'â¼)+Ñ:‘ôºØ¤l #”(øI×ñ¬€§Ä:Ḡ;)F6Ã’0²Ê-9É ¢%¦®ü,e„lê8öº©·X)¶ËB6ø'¶Ê2³ðàVˆ½Ãvxí¡<ôÄ~°€Vte.a.zEíäö•†Ê_úE±²`;(ŽCa±›2Ñ+*!{ȯ8þƒeʲãou/LÆv¬©:€e¡ ˆ¢Œ–¶Ñ_«7Ý„7ÔV¦Ó‡—…5g·± ¥®è¡Ý¯YUÙ“Ž*娘ÈÓøm왘Ŭ¬Ðˆ¶ZŸå['/cSšÎ²ÁJ:¨Hº ù˜ó²žJGhŒïT;õ ª§‚pŸmf¥q M¢çX ã¡ †ö-gåøÖžB0úé.•§V²]¶`8k©ŸÇ8vVɳ¡6¶‚®”Gžbía›xð˜‡ñò”VEy€Þ€ ÚRÎCï‡v ŒÕÆèµmé¢5Cþô/õôÇym¨¯|b¹øV[í¢^’E´Œ| m£ÅDì,€ý´J¢!oPqÔZÂÓ,åZ%à³…CÄ«´Òêj‹´J6w˜çVêïc£ªøç—¾ë"–<æCã+­ÃRr™óŽ«–sgPVg¤ý¬S×îëCm9”AØ_ªÜ•X#:O½•¬œZ@àNížvš5f½ÌÃÞÔÎ÷ŽÊγö ޶¶Fx”~‰#<'ëäߢSzh£ô¶Žýu¹’AMñíp÷ñ¬1-d4nÁ¯JEžQ½¨'ÐrS0ë‰7Ô,`È%ø‡ŸD…'øúrÒ ÁE«7™‹ ‰uÆ+‡˜/þ±hÿv]¼A·„“þÒñ\Fkm6eûá8GÈX Ãu.¼ÇÌ·² 5³Š zaý&ó@¥WÛh5ÙVek©žQ”«Ê¥¥{yòò¸IÔØaNõ¦ÜêoQèáø…dã65gÙWÙ:ÙE[šá>n$c.³­gnr÷¸ô¥i]“–%T“ù)¸—6J}"{¤'ZÿK‡\a™þðË4O `‹¬¥‡Y<ÍJ‹ü?ah’°'? ïWúc!,Æ£ä|Úge – 3´2öêGûC§×VG¤ÍVQÊ..a+“Áþ†<Ú<%Êö˱ؿ׷Ò?ËÕ[5-×#¾KLqÞ!ímPmÊ2¸FâEå·zZ?æƾðhq‡Æúç¥6Jz Gd¤9\–1–ú 3‡-„.°…öÓúnã2%Á yÜúä[©ÖfxÊ,&àV¨!'¨ãxGþB©¡ÏÑÚQ¬gï£1ßT+ì·ðF ¬—Áe þô­îRîõúºd3å™Ñ>]–õôh“©´¯*À‘xB‰„Q^ñ rÔž²¦|¿z‘¢jò(Íìv=À¾(0S`C™)¡–g¯ÜbµFcQü ÁØIØN^Æ7¬tG„(–ÖaœV]‚Kr ^‡'ænë+ V/È0Šò©_°<ö|,Ü¢t(Fëe!눨Kó¡.†@Ú‹ér3ôã1øžnònÐ â™`vÜ ~Cq¨¤4?µ`Á~+Á$šMÙ)3M„þ”ú°¼ü"V’›EŸ ¯à;›‡gñÆa"/o>ao ]–cäTb]ÙeŒ „ò]xc0«\a¾„µ+’ØYìÂRmÙ„¼ÌÄ.PGì Nâ|¥Ï²L”«Ä øE(/‚òˆ\Ë4Dh ij=Q„~p›<…µ?4™:)dM¨Ža°ë[‰ë¡6ŒƒÓÐÚÀ²‘Ž @@gúŠ "ÉrÃ'˜*P*oõd3¡}#•ÊÀRë’Ü!,×Àt¨@Ùø ¶Í¼¤~á´¬rÐîÊ/øˆ/€¢¬('¡mÄ; B<¥/t×Á/Q0RmYà‚aøB=çXe^f=” ªZšÓn¨Žý ½?#F›,WÐÙˆ?ôÁ ¸Ûôc ~†ëÖaªÀ¾²)4 kB–÷ÿ’pÌì7,vcßé˜Æ{(5y+Ö{ØÖY)ºA*Fj‰4&a5†`Ã%ðˆ†ãz¨Ãæ²0HÞ—Yà»øˆY0„ÂIZ#Ò¨‹È€-°L2{Š"V TÖã"°±jüŸÌ/{Ê| OЃ±NÐ×u =ES¬.V´µÒªa ¶¥9ó¨ÝìÃrÖ÷Þwßü]Ä˜êŸæ.áaÁ¼tpÖ Õn¤ÖúÜûÊ®P¶ãIÊL‘œ~HñÔ³P-[5z W•}zE[öÍÙ'àPp ­ƒ+ÆÓ‚ä%°²w~òqj©ådmxu²:Œ°>ûÂHSšb}~‡.Ó¿ÔÀ„Ÿéa¶ö!§ʹÎÂ_mz` »»!1<¾¤x*úò;¾,i͓Ǹw%¯|Ûüð‘õL¡T£!Ýgü5“˜§Ýö´€Ô©®8—¦tE‡” >j¥šDGOmwùÔ9ÖoZz³¾t9ëi¥4ÜWúéêkn·›Åͬ82¾”­”ÍE3ÖÕÚJ³Å%R«:ØCý±¾Öš #­ ŽÞÚ›<.ìt„+ Ýû’özzëxZ? Å?˜-x7Çb> Ÿ*wX %‘¿GCþb•l^ÅŽŸà©ÒI¬ÑþœÖ|ù‹å ئ·uæ´‚-æê­2tÈIå{qÃ*bt“]µ%ÊE¥OÄo¶GþŽÞb†wKjý4Ç;«ÚzPuè®o°ÎKîC QÈX¤wÑFh3Y$«§Ÿ• r |Ìs«ƒ•ájv9‘_Ò™ž&¹¯y§b¤ùÜW˜šÀ!èCëÌTKøOûž›Ùà H“)T›Á5œ¦ŒÑïóñÊ$[V¥¤½5­6ƧôŸpŠn’åIŸï3}ÃíáÉÑ0Ë1É5A=§ øè(h†ÚÈ[7ndTjg|ólNMO¾˜ÔÅW:µPÂpë-Æ/nßá W°º¯ŽÛLØ—)qfJçä†éÕ}¯ÒBÓêú·»[ùÞ¤_𛼱EÕÜò¦hD ’}¬©¢˜õ×Ý×(éÍ“TW™Ç¬òÔIÚ ÑWÄlå3 Yq9Ô€OÈD{9`$ÛÄ~(oxY\lóª•Àt1è?»7ôHÐIûTÇuÍËv°çl›H½ùh-[À¨wð°ÅáƒC²BY>‘&ú’} ¼çlOô?jAû{2¿Ão³þð]Û¡GØœ5‚9·® Ä#Ym­¶2P¶”'T®üÇ÷¨;´íº¡þS–ê{ìO˜÷âs6™5ÅÊC%…Ígg æÓ¬:Ô›ßQë*å3yÂ2Íuþ(ßcQÀ,å´¼l©ÖCÿgU7EK¦¡SyXl˜Ù8k¹E1c¯¨ š[ ´·,ƒz@+¤¼Ñ °¼†ZMQ§é›”Nj(Ï¿0”Lüµ&úž¤G¹«¥fIÉí;&WŠDµ[Á2òaxT¹·àÇ6`'( ’}vuä;”̃TCÉ|[†JÝòP&šgÑhv–‡³QJKEÀO^[H…¦àzú Á”M¨+&±fÌ‹%ñûÄvB0ö"ëÁŽp*xp+é"æÆ`ìÏ&Éžp JC%|†çh ®‡4ºÆ.Ãw¹WA^°ÈF‡é´–Q² 'ØfXÆn)­á4Û Ï©·Ì£i¾ta&v@1p‰éЄ~škew ¦ó²Ä|­ˆSä ¡2TÆq´&ÑlêÁX…ÞÁl5EQZMÛ ºácõ(¾‚>|dÉrŒÂÁÖHÈLo¤ÄC+ÃX_öÂ!HÛ©0ŸDÓa®§n°Š=‡-T{Ã<\$ÓgH±2Š¢‹9“S}9}Ç“ a,¸q ¼ n€XÖ½€OPËÒj¡T¡Öx†…ºØÛS!šÀªáðÓ*,…ûDïƒð GS©†ç!§Ö@mm ´`³ùÜʲ°Å0ߨƒØ,ÈÂ÷‚) ËÈ•—|*í‡Z +„‡1°]ê¼ëÇ•ڲÜS%ûŠÇláð‚f[Kàƒ•ÝŠ» "ßÁdO¶VQ¼‹-íärȪ•….l0ß>()³؛æã/|_¸ƒ"qíEÀš´¶Bë “{äø%U UnvØJ  É`XYxgå„È![ ~PÇ ‹²XBÞ;¡QAmõ2ð×K§íÓµÑÎXí·úËÙÕmúGøï¹#ܧ¼•R'øîˆ…‰µ}ÙhotJJŠ'S´î‡Î¶ëÎAž‹ê; vw5†‹C¼AÚ÷IOo}멬¨EëEœ?µÿÄë×Çò§Ä$^M;™ÚÀ]Û?_åÙ¸ËÛÇ!uk jKûp½®rÉÿ%ýor;ÿ÷ÍÔ±Ž0Çõ¤¾†M÷æ+Ø·Õ="ux\¿Ø»¿^'.Iì–~V¹7ûoÓJ\ Y13ßÈUµ¤Ý¯œµÍð(þ¿IõÿÙ{{' Ù–Àã~g.í†ã…sOà•€ÂðÀ9¹[[ÄFÐl—43¾UÚŸÄüékÄd·á^ÏlÞ æqÞ >iãÕ»ööŽ]ü’ÂP?µ¿Ú^·)TRœ3·ZËySå)l‘¢ß×!E–$Dd¤x:†ÙÅh%Wɽ´ΩGÔxöMù£¸”—ú0ÛbVÙ‘Ã-ækg°ˆ•ÀP{¥¬`ƒø>m«¶ìênÕKå#ÒQÉliÖU{h™Õ½ê!þKNÀo0RÚm%œ¯­B'„f·ÿsjvå›Ú™õÑcye·­=nQJáyÒÒ“¢|¯ý¿|…êàž23ÿËëɲŒá=ÊÃêð¶šUà\À3óøƒåæõh­ `W´|0k§[êg^„ò+Z=g×Q¬(ÿÈG*  ÛȸljôŸJ×Ó§%M’ÜÂ0Ä#™•æãу‡°jp 5†.¬3ßÏOðÝ®P½½ú;¬WX÷€5ñ™Zdzàè”’è‰5#­§"žb%õŽ~Ö³j<˜-¢5pŠË{rn¥²ð sÂfÜM£a-Äð²álF}¡”0Vb1l- ²¶|'¦ÜЋ~‡Æ…ùàŽ`×ñc?`»lÓé§(5À e!R¡ Xì:³ð0wð{,ÒrÊ>Â&#a„³³xI9C'¨ÙäÈ/{‹fð¶A|‘ùA•¥ƒšˆÉxƒVÐwì Ù;ˆØ9léŸé§lÍ2±/¸“U‚24 ‹X^WÙ*‚xœ/ ¹Œ¡*ôCÌ¡8…Úq‚Ê­NÇõl6¯Dw‘¨!A ¤`º„qì0 ÇîxWÒh+JÌ´’E°˜%fó¾ +PÜ !؉“«0ƒð‚qÆ*Èn³MlRgSùG*ë¡<-€ó(Ãè-µ„æÔ&¢–q¢™0F‰„Þtg»¸›²y¼<ü"î`kà+=ãµÑAµé>¾…H¹¦áØ S ¢öß@S[ê £x;Ï*(ÑT/)eq œÕšòaÌ¥\¡TîÈRøWQ:!÷ñ,“9¯°Ã¢4„â<žÎæ²ñ"#ßϾÑ\†pFa鸖T‚à?ÖiJ^º.‡HÀåðN¼ÀoÔG.€Z´£he’kØ÷½dÞ IDATNöŽ*±\cÝÀA8æ²oÚ_–\3ðGŽÎ™Çj·q®HçØ7–ê¬áÈb+"SA¥{âgÿ ~$>!ý­{»?Ús¶¸WÆo‰orÝ+¶Îqv5«³ŸVû´or¤¿¹1PV•Gð§ÕDDé?Œ"¢”Èe ×#ì{C*?Ï0GÄÒ$Q qõ¿*ÿz'ÙR?¤6àùÙ>ú&kŠl†ÆC?VßqÜ™C+a¿æ/ï}%Gâ^±Ë\çåMKß M³· ^ƒ+X*y“ö¥¬Ní;cÅ©ïÅ;l-G²r£¼‚+Yû›Ì]²æ Aí´²Þ{Q]®Ç™oÓJ¸“rÉaÁªâi'CftŸÙ—¡f n z§o\g›é-îh­L2óZs†þ5Þžþƒæ<ß*c­ì@åÁaËû±…u+ôWÐ Gñ dçÝæQ Ûµ¯Ä*°ÿx­ïé¹Q>â{DŠVK™¡0?[ñU´–жpŽÊˬPDÌ‚ØUÞ—+”M< ¢µ£ZA6H)¡Íáus^Í\*Gt`·À7z‹Ð›Asø^½ï'’ &÷Nxj®ð%Ë7ÆmïsÔ£hÙÕÖËqD?§ÞR×(}yMus‚çäGÌBWÍžJcžW®QC”R¸ ã¨b}“"JÖ…fÖºb½ñåöû¬CÞîæ)ñÖ”b)¼·åU^kÀz¢É†[¿é·¿“w½ÿÍ”YÅM6]ÿ¥çágÕ­¼µ,F6º"šÊå”fØ­4*…{ÙÜ®D©­Õ&ÆSkþP¼v#qG+힇¾Ëž)W„ãkŸ>A¹ f$¼µ×ÐcY.w:_À¿¸dP®Ô³þIÇÈ-3«¶çÞxïÇëxK r¸µ¦jcö®öóÊ[!gupCMs«øá>ŸQŽcÛØPè¦ÆèÏ´^övè±U‡5¾yÉÖˆŠâ±™“.X/ÍôQ~VþЦê?¥~cÿQ&‹›Dó`–™5yÛH§:f¨_`_[l`KÍ© pDë‹m×mïý]µAž<•*Ê$a3»øª²ÊgjI‹ˆ<ÍVÇ\>Çb».ÏQ7NÎwö-¬3Ù'rÓ!X :ÚŸk]ÔÊéGÒ/§þô¾õœ2·)N¥JpMÍrüæÿà¯ÚÊxÅš±¹<;òB¶£´Š9szÖ¤¾N%‡Ê8©:Úò*À3ò‰ê.O/ïã¸ùÚl&{Ê‹¶·¶âê4¥=/Ïc”}ÖJí“rÎÚ‹«ó¨k‚aVkãƒÜd624RMNóg S™-ºòÕ¬F+DZ ß ïàëmv…΀ŸéüT:bæ7étàë‘ÔÉúþ -ä¡}“ÿŽ'í_ñ¡«K®Y9¦ÀèOïvHÚ 'è:6Áµ4GÃ3¹œŽAÊ +ð8+§a<¾¯ð̃“¡£¬Š¸ŠÀ¶ jà_ì"ªBðÃQšuÕeÔ†±Iò•€Pè#§òûT§)C°>^‚jtfË`+NcWñ ƃðƒòàV¶  ñ\ÇB² ”¤mâ,ÅÃ*yy,@e\¡²;† °3°ìâ#›Góð) •¡”ÇÝP€Žb" g *ö§@k¤ >»sã:ææs`„iUè5‰‰Ø–•d?±%ÛÍsQ'ùT–‡Ã´J&É 4Ÿ:È-øŠ¾ÁÜO+ñ «A÷q6e^9%¯±O¼+¥­#HÓÙO\Šu[ØåAß'ZÈœB¥”˜üWî¤1ÉÃX[àæä¹luá5<³àdW3SI<ÌJaW˜…Yœ}©–ü€ ¡ Üdëå0 7`!<¢ò/^¥¹TnÃ/1„‡)— ŸÒ‡oÇ ¬:›®žÑgØN'5ŽKNmä.›½£ƒ“3¼ ìꪥ™PÌéî•zÃê¬wJ§ÞÊþTݼ,=><>\sÜ•¿ßÀëVÿ=Tëð+]´–À¹CäŵW@çø½¡mƒ+—’鑾©” Šì‹si}¤re£¾4ƒñ˜^À5ÈÁîþO\Fu-¹÷ÙZ6Jpw—"Å­¸SÜÝÝÝ¥¸»ŠS\‹}Š;wHB žÝdíÉú¡<ÔÃ÷ ÇÈ;ˆƒ.E‹¼4.‚Šù`4Æul"l·T‚°‰ûØh0  ¤0Xåa{ e¡Å•¸ Ûâ+\ÏïÁ*Ï©­(†#¶XÓ„ŸÖ[Hëa•ÂÞø;vNˆÃx‰Q¦ ˜ÌzS8ugói=ij\T×B&ýí N@äÆóp× .ƒ#±2wà8Ôà.~a`0‡ü©TŽÀ,, sÐ aâ±p Ó!„'á MgSY$! ób'œ(O/¬W©î‡"wà¢(¬ |Ì&š;ùi6XtÃv8®@i ‡ÿ¨¢øÊâ@6Qƒöú[vŸÀ/8©OhäbnÖ†¯2´Álº@÷¨$ÞbgÙC‹ñ!ÔÀLŒÃåìl´â¡ Ýs°­ÆŠpOT„­Ð þ }˜¿Òxê ¹ÈGÿ@"ì¢;ЗÎÂlàÛÏŽÑ(Îúb2¶–§A}tÈá;ÖJK›¤§¼=Œ‡ÿ6¾ ‡`#nðÂJK>ˆbÃHÅd–—f£› „L€XßQ Ÿ yÅ4 i4›ˆÕp†ÇTŒ<ôƪ*óVº_üÉZˆ4å†4IØU«Ö"玘‡®¦!É÷Ø_Ïüiº¬|üIøkíò‡vÔíyåfÑ3|çƒo|ÿŽxó¦1ÆÈùÕQl£3¯³¸’ÆßET•nŸ\£•~QµÙáþÈWêbgaÏpÿâй´éóC а#ê1ÞNú—°Txê¨ÌcÇ©›ªÊ¿ƒìê¬Í–oÛ´¥RQ휶Q-ÀË+o¥7²ÆRƒ`¼^C üîÿ*v…C=ù[j“L—¡ Þžuë>…/Àk˜Šý‚OØ >8Ø"¯'Ü›?O’Âíç‚ÇXaí’Ü=²yL쇓¸6´'Ô‘¼¡r˱º¢4o"gÅ¥Ñì™V@ª¡ÜñQ˰X~G.¯ “Þ+ñò"ÔäFÚU¯Ó®Ê3&ÓPÈ;´7pØ|m|ãé ‘!_³m–׊€9‰ÏÔ'‰ÅØÛñIm&—³]ÐÓ>¥’òQ4fJ‚3+Ø3YCþ„^Ð~ÊR:ÊÛ¤ëÚ}ûug%µ¬+ox‹È÷á_so¿•U CX™°6΢Îhû i·6EùF«ùi³¼ÿ¹ñØï mÕçe(E)–vUp¿Šü¥æZ[(Ž?V~q†ÌQ¡ ú0¶ Òø7%·ÒÔNü8+ÛY]H¡«j.-È>há¶²øJZ!åççå~J%×¹³íb8Éaj-÷s©½ítd 6YÝ뚟]Ó÷ÌW0ÕHLú~1;=½WrqÕ|èKkèD  ŽÆuðõc$n´6æÂó@_ÿ"ÿǬQYcBc½Ý½ñÁF5s‚·“ÿ‚§fè¹Ñ*#53‡g¾o²·Vðg¨ƒïe`}°¤·Sú™À´ì™{è¶èLcx_i¶ ùd¿:†©«´IöÍ®LgwûÛ]u®¨Zxª_ ]Ô-þL}f«}sök¢lÓzIij¡•U&¤à@ëfhxP({ج­å'`§úŠO &<ƒé°Ê˜ &˜&gei”s˜«|Ø([´saxYtBKµ.®¢¨ÂÌÂïÖü~xÆXGCun^öÕÎìŸó«£¼þ»}»\ðµr\´âf’±Ë²Ì#â-3ß Aõ£BðZÀ¶”•fḠšã<¸E›Ø8¸MŸ‹?1'†‹"l&¦b%ˆÇ6¬%‚Tö¦Q<Î΋|…t…„ÒU Ïy<š4–5ÄU˜È'°™ø]dˆíPÈl%’°—¨vL~Á³Ä¨*„Ïâ Iõ­sF ¡Yv«#Æá:, úPÛKóDWøÛñù¸‰“V²r‚œOþAxu:ˆÿcQ$  Æjà†#°•îˆjt•:`}¸­Å(lˆuLÆ~Çù"œ‘‚X_³ 'éfˆ‹ÂÄ7ÔúAyrA!lý0'?èùGv¦HÛ‚/¨*u°†’ma ­Á·?By²Ó•cÚ2×Ð_¡vÁ” Ý?<+ÊqÛµ1Gþ\1ßcÕèqÎmy“ ÎËß2Ç㜗òôr,Óü¶”­ºâo‘hõ!?ãR©œÑu9"½Bšežúñ~Ó§EÞÍ™ÚËÞ­<¢ìºa]µÕ±ç¸ÕAî!¦ø—™UuÝX¯T0#Bš?$þÖÂSªûwfµH¹ö½¼gEFžÔ¼Þ’ÁúKªi;ÎDG°ZøÀ~ÊãÊ9ÄÝÒ¾UKÒ¸TFÁÿ žh,W”cÔ3F¢™È«¤æNæé‘)EÝI·}w½}ýL#tÑÜ#]—oJ¿Y©¹•S¾!&!å’ ÓŸ,šà(kc°«uWüšm~¥™Db/îÄ š{¬ éç°äzžÉŠÿ9ƒwgõC ½“ñkvM~r°(^T½ülœ1òzNyì×W>Çå°Î¶bü?ÑDê+ô>YoYüh/£µ¶VŠhëmëµfŽhg¬ü‡Úo‚¦›Ce¼¢ÄÚêÚrɹõu¡!™/‚-½ö~1(”iüEP@܃ýl Uæaú6W."?‚øY;Ènò…ámž2^úþ üëßì¹fÍòÜe©¨|È÷‚¼¡ÑÁgô_(Õ;—j±(l( ÆÖž4¦òOfQs~èœ Nâ3Äÿ(CdžpÓÊ[Åã&€0‡áw:¦;L)°B|•W8VG#ÆG” knÏækK Ã_Ø_ØŸfœÑ“YU5óY…Ì1¨D¨{•Ǭ¥¸e{ÍL#‡™-Ùñ 8ñ…rHže{g++Éü ¿[Œºf=acE3'FM»D7a»üÜÌi¸­ÉV¹”¿YC¢…XF ù›`UÆÍÆ<‡vúàfé»Ç~·&  4“ŽÂ*‹Ú¢(LgSÙW (?ª¬«XȶCœh@#a%6¥Ò´‘»¡#]g¿²ÛðŽ@Q8KÓ  ¡Z‹ýGÕ@%.†X3ü+‚CñWp­8f¦°_`˜uŸU¦“z È-JÓ2ËÛ°7l ÆŠ§¬_Î Âlø*Æ[Ÿa®ØFÏD:!º0ª §¡êì7¼ ­‚šlvfM± L£ŠX d¦XÕ "þ “é;~µA,«ÍðŠç„0 R6ÅÓ;¨O™‰—Xkx"<”¥ Õé¬1Ë›a;,^m-?ng%á.=á¿ò_°S´6»Ò&º…/©%²~ âRÍp9 ›À çùvzUà 5‚*Fs¯ùŽ•`g²#¡ Öª@´2š€ƒ·‚¬)[áüE¨΂ÕðB<¢ŽÒ(Ó.xga5¥c}s3<cèhÊ jKYdýD.<Ê^aNèBåQa‹€ÃW¼Mð¾øg!?°Qòa+«&Jˆu8—O÷Î-"[L…Å8Ç\ô{Qó‚¸mLeAÞ¦_a2Ï¢Ù8ßÓu1¶ˆÚ´w³Š”Å2hT£ã˜ïSqª†Û©¬Ð»k?1•§I»ð»ø¬•ÐÎQM±š-€Ty´ãÒßL+”ç¡ÍÖejë=mÒ[¦ úyÓ<‘u3¸5¹Q`§fQ룒]rLSí[Ì‚Ð6QÑñŒï‹nݰqŠÝç»T2;úQcÌ–"áG $•ÉŽ2¯ý¼Ñ.²^Þ†Úv­ˆm”5Ð_ÖsöÚÊ“ßÜ£Õlnê"¦jTrx•ØDµ½¶Ò‘œ”?›yßéGõsV_ï­ìÕ´(ÔŠ<¸ÁÙÓ™aŸoTÓcyËO‹¿]ñ·ä]x…ôî#ÕEX;›5_œ—ÙþˆuìI©ÿýÌýíQÊÀäi]|×2.ÈÓ¬òø,P'üe΃êz߯ø5™gý¦ú‡[dx¼ÌkŽ5™£MU½-MáóØ+y™¼×ˆÄ3ÁÙ¶Zö^|µËçê%òmM½(Uí7ÂN2Á…}r Þç?k¼K«Ðð5Mÿ%¬rät»Y&*ÚÝ1% _âg*lUæ+¤.VO|Fƒ Á»þC¡ ºBÚ/Êñ(­4t ·Œã=* ™fÔ Üg¿¬L‹ã‡&†^ÌUÓªáD¬V:ê8ûl¾Ð mªÒI+LSÏJïŒ VÁÀQÛBû%Woy»yQôn6+ð+‰½¾RTSÔÀux–Pêð€ºÅ¾Ø¾F}`[A•3Ný¿ù¼Úk›gêQæsýlð{0œªó û•/àƒ$ÓÛ™#ÍÆàà,ñZt‚¹xŠ•Bò£¢ùf£;ûê½ éœm˜T*ï¥Õ0Ïà]¨{Â^A, †õ”›©Úa^Û#öhí/G5 íൠ2vË#øqqVL°J ¢ÞxJ4SÿQŽÂ×0G?ûDmº}o¤ûkùÜó¨*l³rgMò¤éƒ{ƒ¿„j륲>g oGONÿã¬užå¡tß›”0#C_¨ŸâßäDɲýîXâð(sm;lø~•´56ãºBaÇ]‘öIŽnaiÑ{yH¹ µea¸ŸnßBïô(3Òj†UåÍjYõ‘ò«ÍCØÔªm~QÖ s¨ùÀÊ¥5gÃ%;¼´Þ5¤:r}i±\ÌvÆYCÔ¾8GI÷øbX-æ›?BgB%üCü»‚n_5ß{£|(=_oôô1¿³éfuù¹ã°sì—ÊÊ£Ä^v•e'¥œÒPR ¿¿¾7”~,££¯¶g€ï_æ„fìQÄÕp ëæü錳?Å :ÁJ+´ê1¯£®ELqUPK³kl…èÍN³ÜøTʧM±_—w(ÇÙÿØc–Å ÚÒÌ*˜¡ä‚FÒ1ûMVkÅA+öŒ‡‹²"7ïzŽy'û‹‡fÀ6S©)¼¥öòEÑ.*`ôCÖEÑØ2­z¢1m6n™ÄÓø <íñ–²“ÇðtÞš %Ã,=ȤJÔ®H b̃kq/ÖƒªàÀX¿A$Þd‹@by1™òðjà#/ fí1N„šðˆ&ÒH¸#)Kaa!!±N0™ÞDÒá"\œnÃ$¨a½Â”Ó¨)¦Ò ëýûyÍÁËXBê!–r³NRe(ÃÅT3ݺ,ŠÁ|чÎÀ!Z*ÂN¼ ðb¡ûÙ,< 6¬ÈÖÃ@¨Lƒ¨:Åák´Ì‹¨ã ‘›MÃçì®ÁGà‚zÒïhƒJ.1F˜ïÅ ðሴˆÑ"—.0®X¯à1sÄÁ<Úkå¦v–SàœYêÀ7£+t€$ÚqTÁ;èKÅqÔb'p>ÖÂÜ" à_¬-4¡½b=t¢nð;Ô˱Š1 7³Íð™¥ãMé.5§rXž}a¥:TŸnBÞFš¹­Õt?‰¢øXj%òÓ~‹Îa Ì¢>gƒvèÏb épM(Ån³÷˜F0ÂWp–ÆÓf‡uqvC Òqô­ÙM¬‚&¬C7FQiÔ¡–ØÃ®ÀE†E¨€$à *­ìã „ôÍ*Ìd[ð%;ÕÁ ?©Ü7±=M¥Ös:o†6Ò¤nì$«ÂÚAì.(„C°’U„ýÅ5N£>UЍG(ÎõÀÒ&„]%\ QŸ›Ý{Âjiǯx1¹Ÿt*4!°Pï÷}iâÛäbYw3Vøÿ‚x©›å¶+å—cVçºÚhHsÄr±Ó6’«lß²¼¾²É¥2l™¥¥*ž‰Þ¹° {\vS«­ã =ÂÖÇ–é\í*ì*æš& [åîèì>X«ÞÕ¹Yž¹ÉQ-ì¢T[Y!E˜NpÃèLOVT°Ð×?6ù ý¥ç´˜c£ã‰´DZ«e¨ƒÒ»gùB–Èa]ް¯åÜí·Üä«1g#„Âö8û©ãƒ'3»þøw4y}BDò +¿¯°ÑÛ*”=&h> ä+²uô¡˜zªÏæâü*ÜçÌóF1sƒèÜ2øwmÕÅÚl©Ô%h˜1Ù÷.+!PÅìjh–SŽR7ɯ!õ•?™uÄoØÝŸ˜+¨†Úø-ÝK­”|òeÉ#ï’bÔ\Êq¶BÏoNñ´ÏŒÈŽöÔ͘éÿ*þEÌfØ <ô:c~(EÙr6޹¤Îò@:'îS·Ì:Þ³¾<¡ò¥]ÒšŠ÷Fï K¡/Ò6ŸŠžâuÉ¥ è IDATÖÿcoZF#éûNµÂ¶G&¹¨{47îN³rÐ-¦ùŒßÄ~QšrH!õ§£¿©Ø”áÁAž=\Ÿî_œ`\Ô¿‹ZÒ rééz}ë›ÃsACû#Gù` 0Ššã¬ÒFo ÃÜF˜Õ/[õ$êdE˜Û¡;ŒÀ]¤ËC•Ãü±ü‚Gb.íO5?óÅ}¶ÑkîVòÉ-Uû,ªGgÍ»Ö]s¿þ·¥Šµ"ÜÚ¬ŒR:Á"©¾-BµImœ#¶¨‡;Ýa–$ BÕì!þ6þ×ì »!·£²Xëg}]³X­Å #1å’}ux—ˆKáìUm6'Õã¯ågòW5L-ášh¯)•s,Z0ž_cu°ºúоI®¡¾Ðd© [Hå¡+«ÃâÙyjXAµ‹}º=ÞÑ1ë#¨Ï¶¦˜­ñbº¥WòiÿŸúXc_voO¤Z è,ä£ý¼~ƹ2 EÁOZƒÅ ̆ÿáù#ç¡î`»q2;.­`ÝY.V†ð?0 †SM °ÐJ#à þÍŠÂwÜU¨>¼¥ÒP óЏþc¯Ñ OhÈpÒq0>†·ø ßÐ0ÈM'A¡0ïŠFp—?`!ö—俳Hȉ¿@7E('¹ 4¬ƒ×ðzÀK¦LvÞº7xäÂ:¸–MeßD]iÞ…Dk¡Y” ˆQô [MÝè´ô”­À¶"²YÔ¦›R9ÖJÓSzw`5$b?qŠTˆÅÇ,…©¨â|VŠ5†l¸EÅ0J™Ì½lµT— !'²0‹Fš7Øö_B.¸Ï>BApBë–‰šÀá‚5 Š[b9ŒÇž`EÝà>¤P{Ì´YØ<Ö˜ßæãðk#å€mØŠÓ`Pu1ŒÎ‰bͰ¦àw˜fu’=¸:ð¶RḰ Ç^ìþ½©7,¢¢¢)ƒØsàk+5o}c˜-B‡/a€èÈêHk±좖|6»L൧°±uÊbI°£"^Ó2tãS\…9¡ô°Îâ?Pߊƹ¸Â¬ÅÂqMÅû X›±_ð;>d[YÌîA(d®†œT*T-Ä%,)ÚòøÞóqT"…úÂË\²î²],\ê éòXuŒ4OË[K©ADgç*ýgĉˆÅöéð3ðÑy?8(s{ó3Ï[Ç””ÞžkÞ%LnoìÈÎÎþbÞ M0gÈ—"#Üán#çÒØ»‘^燰õa:l«¦µ² TÒñº»‹zžKÚµ¸âi–ãGøù~ZWoG3áËÞ¯¥þF/¬YÖ%e£\„_•.ɯ Gp^h{f½}•ºQ+czØ}á£ÂÞiÜ•ìuíyx³¨¸[°\ 6s¹wzÐJ>ŸþÆ:í;åŸ*ñž à$hŽW­2ºÓô‰«æe«!táY%¾H9$Ö¶HÿñŽ\Ã<˜Üçw[s²¶øŸy˜±Ýìg3·Ó*–en1†Â :oÚ­jÛl¶˜ËRJÔo‚º“uÃ0ùìP¢gºíµÒÿç~Þ*¦&‹—Måpp§§Af¸¿MöæÌ–Ψðxç¯î3á•¢^[_Ø?¼ª¥_~_Œ° ë-°6¶ékƒõ¡¬:ž³¡ôPn+%tÞüÓÚ(†šÃÁ\øF¬”nÕ´vÌ”jiAu#Ÿf666é`´µîÁ ³#‚­fqQ͹ú3ó<ÄÓÖ~m˜ZßQî`Q¨¨<‘—²",›òMÆN3gH¼¬ü;}ÇwðŠÂÖ˜‰Ï©½‘ŽIûð7Ô1̤÷4–R',IÃÌî“P.ê/NHïe/ p?õ4-š.†„êûo[«Çs,pǺl1ó†u@L³©/‹€šR'yVq¶—÷ñÁÖ)ÑÖhmÌЈJR}øÕŒ²˜+JëÂS],G2ké#¤ªü‹ä1RŒ_vyó>CúñÖTÇHO³Õ©ê q8>´TrR)+ÑW6ì­MSzzS2 x.ò‘rwõh¤7ª<«—`y¯(¾Ü˜suî¾î_•Rž|¬"ÄÀyá±>›ÕD;œk¼Ê Ô¿3YÙV Ué$žg¨t´þT›;êEý[(WžÈe¾×þÔ”³b`p®•l¤ÒXþ“WUHâ÷äÁÖ¬fô Ôôï5ÌÌZ©ë²J 阣nPƲ¥ÎwáçÔG…g—\“–fe Êj‘ùOrgëPæòÌüÖíìÚÖ½¡rA^#ä-J{8'máOye²i‡·\êŒàPõ³}ÒÏ3µr~,vJ?üj­Â<°…™Fƒ[WŒVè+——%åyÌJ忚©ñ€¼&³aê«PÉÀpOµlŽ„²ÁAF£Lh%”–ó•ï쑲ÝXn¤ èe¿cÉPý/&8-T1´ÒÝÓµ$¬ 4\:zÅVZ­ri|ÏFÛeíO¥¾ÆºpOÄš|&Ñ"ÌAHÕÕïæ/ú˜‹7évHL tX)±*söÄTê©kp’Õ—ºA½˜èÇSDo‰³çøB½ õ`YoòH}õ Kf³á èa>R_Ë÷Ì5¿ZûòaŽ5ZŒû‰ã֑DZ M|gõM9›²ÕßH” <ö 0‹â=~‡­·*[ ýIVI³¨Ö]>AÊϧ)oÔ©­ü†R½<¢ˆ®©Oð”TËÈ]ÄRP¹¬­üéª+—šÃRó¯P÷@iîâp¬®rì=dp`u¥~ŠÅsóÉÒH+ÁÊ/”ñ¡žb(^¶S,¿q6‰Súž ~ªKWù#©%Ïæ°£p…v‡¦2f–ðfq†Ø§èpLý_ØK›×­Ëí¦ã´3+|ªó‚´F®çn®4–?«;­¾T[RÌš†œd\ JÞ\|:&Ùþ³eñx9M4íXÈÜ‚ç•ý¬‰T ni5hƒX‰C¬/¨ˆê´CÏrÀ9±ÞVL¾¯ÿ©†³7ÙÜìEÄŽÌ¡žñ0Ao¨ÿs±ôÅÛZ#¥5ï+×¢’ à_:&às=€ú!?^¥xÊdœ=æç òàÿ0š L‚H6c!®ã°«ÉÒðÉM ïaºM/ÐdÜ!ÖÃvœ Üø ¯³gbº8ȺcˆÕ– ÐL8aúX ·>Š#"//Æ·³þò)ë\2Ò­É¢ ®Àà­ã’cGXãœu¢ó‡—úî¾h]°†y›?øPe;çSŒÅ™p+qkÖjÿS½Ý‹ëΑ‘9›Fûƒ™nnOŽÍÞZÝ—pCªË 㨠~‹J¦—4gж¼±ÒÞ>S~«Wq¦U_uÿËîìÂwÄSÛ{&8ÕˆàeµÓÔóÃéà&+š1ËzãäÉrËàÎa—aª”¢ û÷»¢§h]8B¿½Æ}º’jf,þ1׬­/£jAW°™ì§õ76ÁF‰¥4ð,4Þœ÷ÿ}XØ¥™ï›ä@¼>ÆóλE®g¥V•gØ6D\SW+½Y‚V‚?¢ÕR"¬•¿}VwSÎø”Õ;©¥xcôôõSVÙ«h†½»{‰:›aeEÛ}ûR¢æ×=þŒ"ØÅÌc¶§h%mbå½X]ùMKƒ\J PZɧðß]Ü.[ ~ÿ³@–ò û+P‚}û\˜­ß±1„êæXÜ€“Ä$Þv{³ k*yl lëù$˜-NûÿÖóWÒÝT–C%Œ—€mn‚«ä´ÎÑ,‰}¨"ŒC¬5Qš°o¯Zü.×þR®JÚU5NÅÀë$¶æ t7ç…d¿Mï¥OÑûZË`Ža?¬#TÇZÊ×Ë•åbvÕÖÈ–È{ðïØÌŠ…¬rúBc‰~UêÀ¡O{ÇGò•Z†|ƒÅhý”¿%Á—(·´gPHj$/çmX‹×«Ï¤›¶Òn´4·‹Úsi¼aÍÙ8¼Ë¾±ú¬ÛÄâHi;¯ƒM¥“’ðE¼ÍeÏxwÑŠF齊ôvüÞÉ’úþEÔžõ1N4–×+ͤ¥çˆÐºó3ö.Š,•v T/Û·©×µ£rY§åÈ!ß°)ònX Í`Ÿ+Åð^PD4…ÌØÌ쌠Ïï¹èm¨÷Éì†ôÕv—Ïô`ö2ÿ×àB½qÓ8f^ Ø”Óø´†Žð‘=·ŠñÆ.Ës&´Y®\¡¤ï¸bé§™[çæxO-Ïž Wø«gŸ£ÉØ:"r•ÝgOø8¼ˆ…Qc‹EAñ OP>Šá1\—ºH3ùŸÒ~e Ë`å e*sD±j@ÜΖÀ}¼‡D ()žc.(%Ù^ËR8†2n±¬6¤;l3ì‹ÀRø ëñ_KË©8=vÐj’_p:Hµ©1x±ð@{4 õ¤ð•© µG±8DEá#l„,dü°tœÍàn<%F˜½¡5ÄëíÙQzÄ”e3ÁE_° ,¦8«[UÌÂì'}ð&Í`5ë=Ù;ˆ‚Üð 7ÁDV޾`'~›>€o—²¥“òh‘@Ëá+Û ›LŠŠzT£|Á:ì.kN›à`ˆqÔÇÂ1KÊ Sè,‡¢4tÇG˜ E {MÕiV ,h":YϬV¢§èG·õ«–A-ôYF)3ÊüfZÕ,'4§X+7ÞÃ:ÖYZÇ~7;òò¬¶¹ŠNP¸)à£x«ÇÁ7 ôab;•¢øŠeÀn0 ±5……p'ÅX\ô¤VϱÎÅì~†ÆT›t)R3é+5‡‡lÞ„¼!ž€Uø¶Ñ£#«ƒû-zŠÎæeØA q }€;lL€<CGš‚çñ-4Ë ]0«¤´Bôà!þ‹à–æ["kDüÔ~ ?ãN‘,7·}rÞRŽXû𔜇ª‡Æi_X×´÷ñOâö¥¿d“µÒê§¼gò6‹xã[TÖ%{†Õ:«µ÷Xh{ÚÍìWÞòòL¢åÜK]d+xUÌb»•oò?æ½p‡û‘}( ÁîGµ®R».G©CÔñÊ)¹—z—5ÆŽf[q˜ÍÉì–u8=KJgÑmϵ´ˆÌd½;†ñyÒqvÑ–”µËÏÒKÒ€ÖÞØÇ¹ßåJŠ,Y9ªƒZßvPÞ£m”zú«Ó]j<ñÏ œÖèœP ÀGËäÎÊ[›¨Â|—kû7º¡»Ÿ\"÷çˆûVûJ[Q{½ocãŽ&Èx¢Ùg³3­ga-ôbgCi¡<æ¤i™o³?‡øŠ™áQî˜Yî†îia Š>羘ÿ”±Ç»$üºë¾«Ÿ³¤o¼ñå§J«Äeé3K“æób ´‘GZ“á Õ¤fbp°Ý =’m©mcñ¾êpÖ(¼føi÷ ÖRº¤)p(£bš;-.ko¬ÐxNoå‘,HSÅ|"vù”èMÌ¥¢»ê¹áÿŸù ¹lJGÏ–Ì<ž«^§>?/ø»½¥ÖJÛù,¶|^Zo9’ϱµ—½xÏzdœ³Zzº['ó3;{›ùìÁ¿Ù™û/Ç È¿£Eº£÷†wvœ¯£lïÐd¶ì±Û¾ºþ¾ïž“f”t™1âüޱ3ÎÑ8Ë‹ÃüÆOÈ‘l¿£˜« Ÿäjeû@=•;삵/ƒŸIì1›)õ-…äà.½¾X)ý Å¿ÿ<:{RVº£ŠƒËWÐ+ñ6Âds¡íµ™nnã6ý„ÒYÔZ0‚¿¶ÆÓ-<$OÅ÷¨±Ip„ ó‡Xÿ‹²¬•»Ø$9^¬Ü ëcÏÑÍ–Çèé;²·úg…ž}ü•°´ú“ÍÇÇ¡NI'ƒƒ²k±ÎÊ+LŽ —Æ)yµb£UØGŠêü2.¤çl>kÀÃB© ö–‹«‡¤C¶4¶ÛõßB¥Ð&.„ºz+ÂÐÐN½“ÔP­ å”bŠÚL̳¶bQsº9ŽÍf~¬¢üàåÒª»É˥ˡpö„:&f?×ßÁgZA«hÐ×™ ÿz^X烡L¾T›eæ”*QTD,H¡ï¡$ßÇ#³‡ö©Èqù†#"¼2# ³’ËRzÉõäÉθPÓà}Zhy ¤^†þ¢œÆóŒÞ1°<°×Û<0Ø5ÎúŠÝô›Y÷~zý˜Ù”ÇÚNØ›R’­5Nò­òÛ”­~RS•Óö=×Â/vÓ ÿ«ÐTOœZ"ì±ëQx÷èuöÞ.Ù¿ÉÙF£„Ù“oÁΰàÅ.Ñ*áà!™þ… X%¶ÑÖ3)^"ð‰ë¢5V´5‹‰~bÔ¤©pŒ’Åè"¼X‘]‚µt² Š™!¦ÃkÖC…‹:”—VÂ3èma%Ê”A=DÚŒë¬_p&Xsáܧ98)Ø—JÐTœg­¥ý`ãí ;=c¿b,9E+:}q"ÈØœá}( ©8ÐBFÀ3¾—•gëÍÚf:ï!P\ÅE¬Þ¦~ð/–¢oБå´êÒ~Q.  ŠP‘Æ –ÛA?ÚÁ‹âKhghÄÑ9Ôi˜5œ3“¡%´em1k›Ý±(Î)tò *J°ª ½¨#-†>°‚JÂ,£à(·aOÝX)¬O¬nø®a*{Ë61;&u†ëpsâEXb=ÁÞ°2­ A¬±€ªÐeÖoÀmņãZñ‡XÿÒdJ§Y ±0˜Ô„âÑeµ‚Ÿ¢œ‚3´L4£ue ± X‰Ýñ2ÍÑôB¼Á[T2pϲ¬5¢ʼn YUÞ‘òZíÍ'â#‹g<À€5Ä  S;u*¯…øAö‡à<4Åh( å+h%L€Ò`ƒÆðžÚRY¶IܧTvY¸­ÛT,TC¬9 ¡Åb6ö€!"º‘~Â'œÄú“Ulk–•³ßÄn}<ä’ÇâÊ…EàT§·bŽÙDÔ•Kò½¬Œ}&ïãë•Ò ãM`Sú"OŸÔGÚ#(ì[dÎÖs[7#‡æJ¶ÙsÏÉÇrWgóäßs~¯þ¥’¯¿ùDáÓ…Lë¿•Î^ýýߨé±¢oâ¬cŸbŒwÔ™¬=v£3Ø“.÷ùƒž–©3Úʇ¿’wà:gµ±-ƒ­¶e5 ‚ÿƒ'Ÿg€Ñ:Ù—öÅ;Ð×ÒÜ'ý—c©—á r|Ñ*F-OÛ¡5Nm˜–%Ã*1Îø•?…KdÙöÈ-á…ôØŒ¦¾…>ô§{ßf¥QùP”Lº«wE»ÂÏ"N»g‰_õ0ý£¡­ŸÌ_GÕŸ™MD”f†ûÂîÈC@—ú›¥Ø锵W9ÉV“S+fŸ*Ðo(•Ø`L`!¢QO¯BDšÌœcxy£ãU¿~ÇÓœº·®àS ‡•a¼æ!7(Eà-´S’LÔ Ûfnñ60â0&ì©É²ÿ‘æ± b6Oãq8KÂ|´áxx4-ùŠ^’ÜRе¸µ(ÔPŸ ‡d¨Ï¯Ã5ö/í¦(²›OþcžÍ¢’žÇ¹x­2[$·)ì´$K§¤—ì(eÉ©¹åoêu",ƒ2b2žîiW”ÝÒIrY3ŒNk¾f³Ì¾æ—Ð'<Åk±&ð·Þ8;!­H¨oÖ鬦z½P˜nN1Ò@†k¢/bþÐõÐ.«µþÐ7?ÑÏÐZ}£>‘ÅŠÝz*æÇCõƒã©¯ùÎóŽð"iîÁ㸯ÂÏ9ñE¨{Àé]ÏŠIËyYõ¢}œý¼#/ùÎe3/=Í×⓱ͬo¾ –¦Ck½“ç¶pÛ2î›O²ÍïuôÇÞ’[Á,«bö¡Á(¬–yÐ_Ìtg›æ0W×`s˜â|l5¥g,7Χ%oêo IDATÖ õ¼­¥œŸ$œdIû‘Z3½n@úŒrb)ËPë’ ·Hp¾–šÃ5h(uÁSüß]°¨O?©’ÔJì¦px" Â"ÚC ›²ê8žÝÆí Ó@jù¡=í$¸è«&cÍ‚9t‡Ãp6—@Cëñ?°±8/ÓBh`6¤1ØÊÃ%(€—ÀƒW1E<¥®xƒbà"[‰×@£FãpQÖÒRê@s‰ :®‡ÖVsj Í nfÅàWv‹å€GK©‚yÍ\wpoÆWCEü È •è4dâßøŽŽ°?ð íÄf8«óÿpÔŽˆ_M›Ë áEÞ6‹f8?²>Ô_³FÖ7±<4ï°Yâ<­£;F²‹ææ2ªD§éÇˆŠ‹ü°Iüƒ•èÛ„#Yì@yÁ'nˆ ¶€Åb:æF7ÇBê;6žoT:à)qÒøQ¸ ]0Ý·ÞG4¤j0Ï̉&œ£Vð Ó܇`õƒE2á V²†ˆÉ°C,…Dêˆï.Þ†EðNì$ “¾±3¬ •å]ø5æ‡(¼‰ ÁmÅÈ÷E-±S`<<%âóâŸú<YÁ²Â´â3*Auxm¬jmÂ<ðÊ >Á4–Æ®ˆ0æDF i9Eo'Ä{*EïDšˆ¶ª„Rð,ž¶ Á"1ÆÃj8‚İòð…½d‹­46Úg³Ù=Ü.–6(²Ü^{ ”sÁÅõÊ%en¤Å8-Ìòa"öƒ}ŒØ,69û‹¿ÅÉj¾‚8{‚FCuY2¨äÓå ìõXÖ—ÝÀHØÏc œãð9t/d]á°Â¢ Ø -`˜™S±Š™ Cu:$FÓ]ˆ‡pÒx(Gä¸Bm¬™p XgÉa.‚R0ΘŒÙ`…¼Mà¡ØàÔí,šÖЯPÕLa/0J\`xÛVT+îððö"¬´²CD›«ô˜ÀSÿ Û8–‰/mKm}c¾ŒûÙ#mÝû{ß®¥[ù};B»1Å– ž³—Ú#ßem3!rLl¾èÛQSŤPvïŽä«Éº÷¬ÙÞ|E«d X®3÷³¢|§{LD{[;Çgûzû’`RàŒÏ†Ir—9Å*)ÛPºQÂjÎæÂºˆ3àŽ Ø[Á*™õÅ_ÞógÓbÓW¥÷©im3ËY›Ù_| 5ž™/±¾Á"Áw!ÈN%‚+—¬AÁž¾„ÀÉÔ7Þ¿,}b žÞ‡ûï™b\2¨ƒýÝô{æ5í‡s L°owto 5Æû—dTón²n~ç[€›3ãý eYƬÃzëåͤ±" =zë8ôunTgi^H´fC_P5ý‰ù=ÒñUæg7lãèbúÎääŸÅÌøXÔûͬ¦_†³.üÂõx[²Úìo(„Od÷ðšFùÄS:Ï*iûX7£ºø'd>NOHnn7Û[S,‘—Ä}:eþbµ¨C˜M«m뢼Ҷz–™¬öf"Þqâ”]½iFý”ø[I‚7Ꭱtå0[oĽ8Dc~l&›*ÇÕ¡â²\Éÿ3n ÒwrÁ.¼Ì©-Ø5ÅI „?g='"ê(yrtU¶Äl×ÚÛ+8³¹:y-ײŸõöùrÇÀ×2ôYD‰•;f¬œf¿â¯ž:)b{8ÒEaîâ6i£”IÜ¤Êæ2c—|`ŒÖp«|ØC]h®±ßѼ¶ã½3ѱÀ^Ú6‚G›íÂw%³J;dªc ´þ6]ye¯ä©,z·ƒ‰VfèL¨2…¬ºøØ¬j?àn»Þåî Ö2*ýýƒãº7ÀƒÊwá4Ç¿”*ÊoQ—(š&eéÊãvq@9ªBÈÔŠ8h{lKÝg²'Ø;h^gg*a蓱D9#øge®Ì,NãÍúl›ZEÍiWå s¿ô÷ûíÍï‘'lÃm¹|Ä1k‘oªa }ü[9b~…OtùéT–Ì›³í´Ü•3Ëzú¤|p½ÁZê×{A5¯£‚»¨V×áPê𓬮G.¡Mà¯p÷kÙ^ÜË«R’ǯ0×ÑJ<Ïåx6‰>BMHd»é:uf: £ºhÇ0ÂU#rCmh&ëP5À2„±â&,ƒ3Íi9Ž@Á¬¸€ibå (èI^¢8Kà\h •° ä„ðÐN¦Ð&Šgƒ0®Xëà ”GUΖՔÊXWª“X|ql1~Ç™¢kgåb»°ÕÝ,nÈþ|Œ¶¶B,˃»ä"é¡iì¿ ÈÒh:]—Uå!s ü†Yá Lc[yºl[°5,\¬2í„Ñ$7½¥0öR>¨ =aü…Xœ|ð/;#kÒ|> ‰r*3 €MP_Ý‚?Åüˆ\‹>Pqûì—Ehþf¸*½‘aM~ªA§±t”TZ– 7qÄQl Ì!wó°þR ¢ èöƒyr¶xI?h ¼â3ðˆ•I‘8Þ¾Ÿ=cÅh&’W¡¬¡w²;Üa]h9Ea¼MÝé.‚:ƒ}p«Åö²_á+Ùü…¨µR_Ðù;†7´†ràD™H³ÙÃ…Y.exBÿ‚IÃX²ðÉdù?x EYY8C©àá8‰ÆàMš&/)¯Ê6°‹Ék8žÕ‘#©5]àÀQ ÙRˆ…u`âm¥œd Ü¦Nl¡šŠ° "Ô¯Ú7-àè¥.÷|0¢Årâßz&_ð_N[ã›ë¿Å;ÝÚº ›†ïjËÓ˜¢$Ë3 §.ü~/r‰+¯#Þ9ÓMŽXÏI{sm£5N–`Õ†Ô_fÐ29UÜ5æ>iw"¦».†·¨>[Ckÿ´`Yå7VM¶åÐçúW™_‚˜ ÿÜñµ6G‹ÈçúKs6¾6z¨-Üü…ÅmvÜ·ÞX®a‹ó%†ž;~‹:­Yîٮ짮¯÷/û¶îÃÌ᩹¼(†¼¬•}0•†;TCmc¯`×D)òóVæK+Jtý²çëIï”ÜUòfÑÆˆ)2§ú()ÉS®ÆJs Àú̲:˜ð$]·²gÉt«¤jª*oØjuQ>ÛNÚã}›oœiHƒ=ðÖKô.ý’åݲÙEŒ\”€¾ó¾CÀå0‘Õu[t•I2S4dñlÁ¬Õú ²+Ú-åÛK5á\ê’”,ß/a ºhìž’ù=’ãÌ‘ŽVö¼ŽŸê3O3GHìEŸÜŠÍXõ#‹VT€v~Å}²»|$‹ðqèµ**G¸¢¼3¯ÒòwJs¾H™oËaOG›r[[n,›Œ»Fs‚™]o™–?ÐË·Á|Цú‡„Òr<Ëð2ÿLù…k=ùvw¬­Ž;IÍfæ{2dV-—zÖq=k”šî,å{â9_´ƒ>Ÿq'8Êxaî4O¤7ÄÐVÙ·*Í\zòŒU14Þú¤îVêñÿôû²æ†êJ/翎jÚy%KÑøÛ9÷§¿ôupoy_­ ¿¨Q5ì`iÆïQÚ,»‹ýPþÐwó‚X?ÔÚèž`=OÏêëíÍòFGÑÚ¦ªsm6Þ‘•ñ4V[ Kô2â=ׂ—ØõQ/ib0¢ªúŠšó&Úg#Ùº++èçôZ_ŽûgY”¿°––ûÃs-CcÒrnëݪΰҵꮺîû¼7v§ù8]ÎdGÛдSIŠ5ë…«ËE8UÖǧö«¶½f¨Øs§ag) n+Έ¥Îîßñ«g„öU^ˆºÇ«»é“ecÑ„M‰ÈïZmçœÜ/diÊêȼޚ)ÕÓJ/êäÚ3Nk5>›ÁÓµ®?¨˜>9MSòÀïåUÕÑš=Õ5â¨s[”O›¯ìá9het¹@G³Ð„ÀøÀ0+ ÇÊÖl3›¯·äÓÝý<¥ei×–œ¿„³‡ÉÏå[³Œ™d7«{o¨[ùH+V¹E#ÒŽ°BþÅæ¯b ï'n`$ûXú"Ëå)›ý¹œ+{»¿ÓÖÏS¢•µñØGñxø@wYKxE„)YÃp C_Ê„²6ucÉØ ~ƒùò€ÿa_ÚÍŠ2'¬„²5%M*ò"‚³™É*b"<ëhDA{x-doL‚\@½©, D;º¡¼¥G¬3}¦B,×ÁIÌa0·² Õ•«¨$T€al>Øå2jÄæ‹Iò $Ru(¯tÄŽ8ÞÀ+ø†½1/e$ûÓŸÔ¶P a!üÈ‚ôeÇtÞs¿Ð *,{“úBwú§(ß ¼òȪ¢‚ÙS¾—NêŒv)e*|¡³2»,K›¬ùŒ³aT•Â1Z« › Ÿà¬<¡Q2F±©ô°Ê¤±Êì‰u–öÐ)‚<Ø€I™LÕÑΪbvìÚcOÙ8ç) Á@'»ˆ»trÑd8Â+Àø7ÆþtJLÅðLÙG©”#+.#ôP9¹N~§JØA|Â0gÑY9Íg•ÙÌåánc%±[K«è[tö˜DÛVÛc…·¨7ojd`NÀ*)ªâ^¬§) Ó a·®ž-°ÍVæ‡ó…N…úRN8m^2þ0+вˆ6Cûàî¯Ì´•B˜‡ºª„µØüy ÇsœwíÈq]Ñ—®ÞäÝ ç[åÓ)cY8Ó_‰Vjk•+Öwi§“ŸƒÅì?^-øR·óí†Ëè¾ïKJ;à{¡iJAu£2\™g£:Õ²?¢çr{h¶¬£NÄ70_8:Ó£¼’_SÒyK%Q+º:6ÛßÄŒ²å uà³DwÌð=ö×»§œùð_J/ë„ÑðãùÍÓòP³­ã´Ö[m#—‹y°Éܶ˄¢Œ¬€2A,£#‘y]•X6Ì)žXkÒÒ¾ÞLz('3C ÌœæÛÒ˜$×A×’èBÑÍ”—Ê¿JÀ\áëüö\ ÌSâù¥ih©9ÁV3Es‘‹…Jâ0ƒwÖ>ÿR>Ã'(@ýØ¿êtõ/Î6“™]å`QÓº%6[]ŒËÆNØ!ZðY´Hù`•—Cè-¼æ?lõ›ìOSð=ò\˜2tÿEÿm»¥³Öð•ü£RÖVË}ÆYŠVdž ŽÄÑÊ û<ó›ÚC«Î¥tWb1Îz¾bž2ã‹õmr8æ_ÜBÓq2Ëã~ìèåðª~%úS¶gžÇªÓYZq*µÕIl°žž, W íÀÒ| 2„ŸfœëÙìí°K)F×铌n¾™?ÂoB+Âã’‹¦wöv´ ȶPBû è(òÂ~~ž¶+wÔ¶d›¢Ô¶mSÿÕÞE5t&8…¶xšEÇ{ f”õ6`£èTÐc{¤|ÇÚ&¸Îeüæ÷Íòv†çf{{=2Ä!W„g½ÍT®8Fi •½8WÉÉê¯ÁzëFø\ð‡ïM¸0z“OÀ˜hž ×3JFõ¦:ⲑE'W’¬äôÙÜÿ¸V9Ì,™î€=Aε5’}äaõ i´Æ}Öaµu—ådyg>å(¯i+êüê é©â*Zü°gpÔ^wºgNTY~I Œ8¦Nƒìq%´¶ÅÊå(Ó`œÈ'«£)X꣤jÇGÝ3<µÕºŠÍ~,úITœû–RÂ6Ã1ÂÆœ»cÚf|ŽÐGƒ-Swf¶ÑñÜ1"œ’ù3WŽ ï Ýåía?ÛB1³ Åõð4ò¦zF »À [×F¾BÉM'µ°}ãZÖ\-bY"/äQV³[âöÁët®ce~~“Û ,pL„®p›±‚ßHí£.|/~¦í¸Ãp°<¤ÃE\‹{à;­µ Jpèñ=Ø`¢²„JR–Bõq>n„XHg C–¡6jC7|Õ ÿ£ x+È|4.‰yò2$ɧ{`3‰E‘ ØHV¯•ÏèÞçE˜jñyl©'[Â8vÛÌ/³Áðžc~¹ ¶(eh{Ä:2 ë‹c0R¾²ü´OÜÀk8.Q<þŽ­k˜Œ)ÒMÈÓp¤zK‘€KQaå€X3Ú*šaNÈ!$ý…ƒåu¼3©”‡–x>S#|‹‡ñ Z‚¢HˆÛôŠr˜n°ðûà+žÊãØHDž±WÂ+*Íq4Ô㣀h+‚ë°˜­ûÁ›±uI2pë3ôƒ#fÆq“œÈ£ðÞTì¬9øQÀ4¨‹Éð[Îòp…í—™ò(…h2å®b4$²â¶á¼½ ™Ý¼Maïåå^– a7Œ†½ðS&±ãèbë 8|‚¥H¯ìO“±*»ŒÅ²ª$1ÅžæL#ÕYéÍêRVrà"ʃ‹ñ4–ŰzAç¨ NgóðŒ„tÈ5¥ ÊŠF"·°SE-…ÿ)·é…ySÝË ©ScmzäO‚ãwÛ¤È>žeè þšýÖ¦—106ÑEær¸”öþQÛ<³ì#m«x6Ê>f~cEzδçɽa¹Ž¿´ê³—0•gcy~’ŽìäNÖR €âñŸ“[¬ ¡a#ã~džCb¾Þ™]ͧzIÝéüCßlV7`é·#–~M[Œ~VHiÉŸÙfÙ;j{<½£:F=Qzd¦RÈß'ãƒÑ-ð3°;¾Fü”Å>.&.ë¤l²~ÉòA«à.ñùùëÑÏ¿¥uÅô€qÚÓÃQ¢\[#òÓ¾>Þ4‚c¤f• ô=ð«k&Å;ŸºÜGݪ'ÿ ?Óë‡z¼˜–ƒ¥æ#í­Í|b¾û# z6Æ…<†kX„»ØéÑÒÜ–Q)4%°0$_®üRÛÈohæo¾þ~Sû[ÛèÊÍ›B?5Í•ñ"b)>/ÌÌnÎÅêⱕjùåg°p=¸é• ˜Íllc±¹|‡£°•Œ·/RrêW¬}’¢Ø*aCw§¨$÷¥,Ó³ôȲ×…r[‹…Lû¶C |?\XtÅTw³’S+«ÔCb$ଜÃÂEQDŽ_Ìòl"VÆ Š—?æ­X+r³:#ª‰|J¸J÷Íãâ¼H0ÉÓV3\hÖ¤ r®Y#­2ÌñÍÌ·e¤U’–«ý²6²ú‡»éÙÐa vä^øÊn¹LÅ‹eã+gýÍõÞ¶6柘Á¶»¶|ž’ézjÅ/;¬yiCŒ\þÃá‹rÆŸáLaÿÚJQyʃsÐRèžÃW{û$µ”^AMTSC[|‹D19Ÿý*‹ªA%„÷˜‹ç•µ0ïä8IKÕ°=‰ó3F}ñ®sºnšqÉEƨLo >£Žâæœ/RJkµlUÔÓ0R.§'|°¹Jf·®ë%D¬qK$[ÑVSE¡[â‚£“cž2Ï>ÍvÅÖ ZXë”æÐ–RõòÐ=xĬo^1#¬æ3G­–« ïÊ5º/^ësõ¢Ù¡–¡¯úGßÉÕ¤=ÜèÛ”àÑp{½pAñÁ¹ÅÏ6Îo¿ŠsœÝ#ïE'£7jËm¹Õ?Ôßq4õM0Îùö‰íÖ×9þ#ãq ™Å¬§åÓp ûÄF jÛHŠQÈÕœX^dº—F5±GÀ9-3œNËØ’êK=@±â"dÕ>ÙÿŠÜŒXHÛàºâ*mêî9iÏÓ6&ɾ•áŸlEà:ëÀƒÎ¢š"÷„{zú–þ.¦˜3¼áìm2ù}øªUö ÌâÏ ýUeoÛůeÉèôܳÙ]y&6Ä3¸m´nÊGø„Ké™<óä˜#÷Ñiù„·†t›t°@•]A§ƒø³ÐLü ³1“šÁø kÂw¶ nàPH™P²S5(wPsšcéÐÏRvl H…èΦZ¨,Æž0¿P6ðãl†bøï`{ìŒ`Ž|Ξc…˜T¹NÂL*‹CAÖ—NÃB¹»a7:~LÝi:ôÄîP4ˆf¥ØPÜM¥À?p%ô†È¡³lh¼„,èÂX\¯–¦ô7Kãkð‹Rœ%ã86‡âÙ¿°±Vˆþ‰V!zC­ø —ῲ¤øŠÕ°<NÍ` ³ªÂHƒ x Jð8˜Ëa>¥P…^Si^›£ Sa&qk/Ë >Ü@ñ0ZàHEyà?|ƒK™‹µUDúÊ j'¿A}ø“Åcué ŽÁÅ`²ãpSÙ"eÇ2Å?2«ÒÒD‘ŠÇa´yÇÒ­Ì„aÖ_LÒA™:Ñ^xñ—ü?~KYÆÏñ?Ù 9 ‹Ð¯bË ûñ”Á/Ñ%8I= 5Ç ä•\@S¨$ž§ì°T\Ãùì_™Ë`û¡æ×ÅPØûaœ1 IDATA¾ÙYœ¤|‘rFư.pØœ³L=°>ž€YÐB†q8{Ã!,*Ò 8¥HÄ"X“£ÉTöÂiúÃ<(bã"oÏ×Òt±â7ÅÂ…¶ê²Íaù=M;]™æõŒr s;Ö‹'0Ü|mµul‚ºV‹È^öÚ¶{Ô÷ÉÞ@bªUF8p&aÞEÙÀ#ùû>ë¦DYVy©Þ²Þh…´ mj ey¶‹‘Ý´Z4WR:Ëúúð´Sð·x’õGLJÌňá±ÛsT]êú¾ªæ}9[ôò50Ï›[)"PP¯¦eÛY„|¡UÎ1P$öÙv*×µ?­rz{éòóÏŃìËì£ânäIˆ©•²³“Ó¬ãr¿þ>­`Æ*ïŸùlA%Á˜h ÔÞ‰îÊ:—[ÙÌúÊFüǪ̀nÕ`¹ôßý`u샸Ö%Êùí‰þÁhJ i ý#Ï|²œÞaÝ@´Ä؆‘¹ƒ‡²dËZ¯hš`FMûƸÑãe½ µÇŸ"Ý5"­¥ÿgf±Óš#çÓ[¾U,5‘w°?ä)ö©îØc5Æm¸¾yÇûë…rhô•CµºŽ8ýëŠéžԇÅj9•ÍZ"‹V"#Ëá~g}­ŸÚ‹Däu{T=[—è³jaÇ»è2YoXÙŒÎÛh8ÒÌ–¡ákxMW3þ“ûD’þ&3è㾬Æs[ø‚u̶ÏÑN:à+µ2w°è†4Kn´/Y͹¢ˆíWeˆò¿…H¾†S&–²¿¬ñrž©iOaµ¬…±ì~Q—)RÔT– —ù©«l‰u•Ý¢{Üøl‰Úˆ¼ üšG1œá[ß멊ózÔ¿=ã/[ÃÀ"ë‚úQÏi-·7³Q/ùÆÞ•Ÿ¡š|’ö óó¦²îñJgä==_è@xs @F6¦åüîö ðǧ²žZ'õâPÜú(ŽXG­Ê,ì Çm„v¾IKT¾r‡ÒDáJGؤnQÿ‚­Êå?\β6à±MTfáiµ‹¤Y¬£ìJ#ÌÖæ’ð„ŒZ™;2””qßó|?¦ÿåý’ºÀ™®>3¨Ð…ŒÞá×ÁRTŽU+¤^°?å7ÀÎó2“-V÷Úßk½l™êT%^}!–[¹ä…à£w8¤ßf ÍÖë™eÍ?ø_¸@žEOøzøIHZ3e(fooÙ)Z+á-qF³.ü9Ö—œ,ÏX…Âs­ r§•ÕX#OZEƒíõ¼¡oá³÷…Nû3¬¯”Ó:k8µâê«’º€¦.z„8¤vMé“’ä/È’.½o¦o\xýçÌ3ð]mfÿ#bŠû®ëªç‚û”¶QITúòK¦MÔÅ:êfgÑÈ‘™±—"%¿!ÆÊS¬5ûŸí*ÿÃ^(n›\iµ Í‘«Cã½ í!õ)Yß(_m¿gÛÌ/;ïEŒdohk㫟öÌûGê´'ÞÊz¢¬SàÛ b­ùe!ÛÓù^–Š]p0,ÆÑ˜Ž»¡ |ÄO8Ž]¦¢4›5€0§B2ÂêøŽ-†(ø,j€ Ÿ`úÚÓPêÂjÐ.8¡0Z ©l<•Ã_ð6Å…8ncVÙ«AsÑ `5ÑíÄ·°”6c . ¶¸þ‚QP ª¡œÆí8ÿ‡wá(°™ÎÒ$œNœ &vÁÍX“õd£áå M”AѲ.¥S+Öê)ÿÑ? ùvlN^Ûb߆~ˆ•üò’ü÷dWº {Òsš yi!›åqª<Œ!N 6àYj Sùp<ÄŽ2‹S²5 fÉîpzËZàÅ4àµm#yþ·R Ö€‰‘8œ½WFò*¬ Î㡱Ì#IîÂò[Õé#5‡'x+óæŸ1¶FZðÒäd¸ gåC˜ÿQ[ªG?q&ŽÁZê+^NyéàP~åå}k èB7E¨à æCÄYr:¿ ü#§ÀSØ—ÑGËù]ðAWê‰Yñ¢Ðð0îµÚ+¥YM¹ ñP‹?V‹z޹?9ó(nm¶º ýú6ߣ@)9SHò²Ô‡ß„ë­²ElR­lûÂÉ7â5ä0˜y̶*·?à‹”ËZyÍeVÕï„ÂVcë«Yïxeœ˜c%˜{ÌWÚ5þÅÜ©ÝÑ–ÁgÀùš·“¿‰Â"ŸYO?;!›4x'µ©m#«¤¤©–ÕÊõ2¢BÔ<µ-®'‡;›sší-_®­´ýj¯oûÅ¥)míûYÛ@⺠äÔ¾»Üúþ?‚ߌK¡Ìðve´­§êg#y~‹_“;`…±\–ƒV¢¢ÈOHWh¾¼ …mà´ñÐü«3Í ì²ñŒþgíU~Ç2^ݯxÙuLÃS2¾QV±AåêqšÃðZF¡ØEÙܹÞÚÿÖ~zj„Gùkú°žT(h%'ü|¼õSIïaííi>Õ¢í¨TþÄÅŽúZNÌ«ø­ô¶)tÕ™—›f”‘üSS±ÆÖðgñIÿ[wû 닦ËÚ&۳ѥ½뤶Њi=TT”ÓJV« ^bÕéöIü‰í²ÒI*ÕY/Q‹iõ’ÃÄUÊ 7W[ÉzÇp¿Mö·bÒ.c<Û ÚÈ’…­áz-ÿÄÐ/§Bñf6« e‡Kž$«—Z%º–ý­¨îX oä`qÓÑŒ˜ìŠÕ¦´á½ìí!GN£˜‡¢H|¶ñ¤Á뵯³ëýZ¨²µÜFE˜?.lþ.úŠq¡Z¾ó™ è1Vf–ùÐQ×]Æ&ðœ-]yJ»pžR¶óöJgV"T_ñZ-•TÌ!߉çÁ˜Ìɾ¤ŸóÓ;˜áP\䫨r Êëëà}é[âoR3£“ÙWo¦ßtºÝ¢VznFÚ"Z)}¡øè©ÕÙ,þÚ'bÄ9¹R[ë,ÓÍñ#¢_̸è™PËŠ4»ê>¨ÂÉ®ãm5¨„¢>• )sa¿Kƒ»Êq3ŠEaeÏ,«¶ò±Gª¢%d‡5ðúRkhh"›‚…¡B ð<›*î`(ŠðSq~œ,Ì‚`…!eà Ý£!à„ctê±á%¤‡ˆ€·h@o9•C¯,(·É?á=€•¼vÂO½àw( ñ5d>(w ¶5NŒ3²ð~rŠ}Eúé/Dù¨=ÙŽ&L V Œ¸÷›Q:œ.º±á¾¢"¥™U=ÎÖAUØ/6áðp‹P»PNE(Á+éˬD6Þ16ó6ÊmÛ ×öØ3ž úÙüd|5ç bƒ•G,O 5£ Aù5U[Éã [)m»®)íëíÕåv–µŽL±åä³ñ¶¢X”¯g%­úЗ^è·ŒÒHø"L×J8þv´öÔÊ:'Ëx^ß|'ZX ú«»éª(®_ç)Zñ¥ƒ›}´'8>|Ìzf«m¥ó: ÉYŠa¾Ñ׆γû°ÐlŒ]Ywu‰ÃÃSvŸ}‚RCYm»í.K>ø%r«y³ƒ°˜F!‡þAùÈ›ÈæzQüjmOŽ {¹ÂçõSæ6^Í}ƵÑs6RØ«byEÇ¡0SíÅûÀRûGMVS[£•µí·ž™ý™7TÏ—ç[ôu¾t3Èχwè5e3¾ÎìÂãísYWÏ8çcµµóŽ=…yi_x¯Ì wCÌ=xQý ¥„½ž>Ü(dÔ¶ÊÈ]Ÿ–/üÞÄabÞ̃®jê#ÛaGqG6µ»}NöþiQl»ÄZJßd”¾ÈyE› v‰)Ëß§Î¥Û²žõÖ<%“Ù:¹œŽ‰Ñt™ŠÒOêC#Å.9€~¡kÔ‘¦âLÔp?‡áo Á œmÝ¢É6—ÒX=}e{™ñ:e´èj=§gøÃšj}¶v…ÓTúfœnã„çy–ejû”ƒiõŒ‘`)Ã!oéE Æóƒ¬½ñ™ÒZyCìN6§eËèùõÅ—‘åG–€ûjÅ™W› °·úIöÁÞV2=PãEã„5Uœ§çl¾Òcªr_«Åê²JyÇAÆÙG9Y_\a•G­8Œ³FY{¨.ý 9Ì¡Ê2#7?¦9pV —Hï”Ñ&õ®79­|Àá§Ï;­éêïS\¾Ðh9‹ÏñÕ1¶ðY¿ÍÐK[7újí]`#fj rå·Õ—ïõJl-v§ô?«­uÌ$ Ë~1‡˜?q"Þ•nÅÍ!zÓE³ª1j)óð“õ€Ê°3áX³0”´7“ ¡°rÉV»X‹¬zVð»ÀÆðè Á›~ŸÂÚ†–ÆŽ“eYõToLÚ _ëð¡ðjÛ/mF£jÁtªÇ¯:Ò)Šc˜ê„GXßEvE9ïjkkG§(ÃüCnµ>‰¶ZÛIõ”ÚÙ^Ã>ÁÊ"šã£³én5´ŠXÕŒþáw¾åááñâú…p²ÙŽùfªªqÚ{Ãk쌘µ%oµÊ}4òšã'¿Á ^ßÞ„ÁÒ„Tù“òCcx‚)´ Â;Ë‹+)—ˆb“äYE‡!8 »áö ÏÈ9 VÃ(š©T òÀeÌ^¬ ‰ŸcÛe&û³È2è¥k¬!ô‚%ìüÖÑY¦ËO¬7^¦µª‹vÐË{Ø*3ºÁèL>xÌj‰ñtÚvL˜Dõxgv“5€¯Ò ™À©rÎU+³zØDì $Ö"©Á3èÌF@2<†•Á49À_4>ÒzÒX ã&9zÓ>ºGÄië¡ÕI¦Š‚â>)Â%q0‡•òk#G™‰ø^–çh¿: Ø'|Ë‹ÒKÁå{XIdªxB~\ˆn(·`œ‡1Tª€€­ò6æ86óÊí4^ëÐ=±ŠÍ£=­)s@I´ÁtÁHZÇVÒ=,N*4ò@¬ÂsavüèôÐØb]ÃhÌë,g“C\£ô›qG© X-*½q䂃8–Åà\œJoè¼’#¨¦Úƒv§ÙðŒ=° Ð( x/ùPÞQ.J'«%uüŠ-0 ¥\çò¼–=ƒþƒ4<Í+±'V<‡ÖO«åv(ƒËY€šc0KÄã&Ù ÝtZ~ÁF´c Ì¡›tšÁ{"ù.x&½âŽõÙÝÌuAî û7Ãs”èóþU¥Ý Ÿ ßÏœâÝà{âOå%™êç(wA æV[ØwÚÿ§ým{m΢†Pbåã„Üké"_Æ®qP³jõ]Çí»l­•¢FQߨ£à½¹ÀȪàtò•7ë„÷“îFW#ù-+gø¸ÀÏt=¸9<ðç¯[ÃgŒ8Å>u ÖU™ëX]ôbJ³4luì•ÛlØ1Ý^ÏŠ%OôX3Õr[šcæ¡Mb‘è‚!9Ç:#ñuj:L dZV–Oä1t˜¾S}Z©<`3msB/¬CpÝ9QzØ*gm×ýȺ™þäm?ž¦÷ð?×Y°¡µÊ›];‡{Œ»Þ¯Ï8—¼%(ü½VYlw`Õ¤ºp…ZÀ|É\â LàM¬޼»²ñôä1ÒmT ýéë:çsa.ÅÚ’Ô¶Ö*ŠURCÙŒdˆe;Š0†›Ÿõ¡áVÁõþiÖ­pF ZøÄh³²µÝªfý«nå#Xµ˜6ž¥1ã²XqW¢ÿŽÊù>*šæ©œ=­zË%φÅf>ºÊŒ—zyòÿg½– ¶viSÓÐ;é–ip ŽðÉû:7ãƒ+° µÃWÎ¥±ý©¼U\ö%Ø?Y½0 T·Þ°\öüJ £ÎØó::?k=•ÿ€U[@ïÙݧñ„àîîNp‡âîNp‡âÞKqw(îðqwww)BìåÙÊÌýç¼TÚÉd:¤<ó¦êSA–[ù JfÂCQšZósø„·Qž)”͘!fÂÍà´`+îµe†h)^šåÙ5¸fl°¹yY™GÞ\æS™%å›o™’’'c©UQ÷Rm[œrÓÑ@ÝçÖ킌îŠ×Øçü*0sŒ<hö£‘‘hTRî†Y¡îÒnÏt—rø¿8IMr®ÜŸ%‡£RDºjÀuL ,¾žæ^?£ŽµÊUßSSoé>îÍ܃ÿùèýͰÝüË6_Í SÕSª'zÀžôÿ¨¤-ñL ÆËÙ˜òƒ{•ûî\üËÆŽâS+³á$^ oÂUe2l¤9$¬(ìb®æé˜òϱt\Ázñl˜ƒêÐSքÌA:BÝ¡n…ÿ rŠl:5óaqtÊsô/ý£LÆÉÐR7«Òr¸'çÀ3q×aE«“R=¥,ˆµy‚PD å>hð/SX<[ϲÈ/ô'´†p(O·•ü<‚zòXgh]´Uü;Îas¡°ÿ|p¢!¶‰ÏRà=jÍmì)üd§EQø JQ'ü$7³G”!²hÑÅÜní7Í“FA³q\ßhÞÃ\”@ܲ‹éäÅ,ƒ~sM}Ÿ¥œckø…Ôü7J )n U—÷­òΗe±<î`/X;ÈÍǰ|Pˆ  t†á0(ÆGŠpêÈãà ÛǮҜ ›¥ yVBÍ>bKŒdGd«Ï*qNtwå m®z•ù³TpßP)7‹Ðl£Ÿ×…¤Gh|ó±= KòºäQ*xK{kBËÌ•þ‹´VÏ ƒÉÍj `ãÙÙxÛó¨Âúg-“7z\Ì÷¯öO]_-üÖå[Òç ÖS1F+A+øJ<ã\ä\Ê?DO‹™˜¥¾ƒÙªk Í~úc½¢79ã?O k•ñÚ¬å:©¤ðt›3¤¾ÖX¦°YT*ì‚óˆ³ÐÏØ/½Ó6zYÿªÂ(/v›õŒæ&#—ýXÈfGÑ‚?Šk¹&ÇVÊÞ7ÊÀD£\fÂ÷¼Ÿl?þΟÑFy~§–÷³–RôG”Êkb SX!Ù–&«ÄïbÜf>WE"~Ù¾äý–{ah™È6ÎÜÁÏæùÔòš¯} 7ÆÎÚG±2Ê:îÊlâ¼:U«¦öÔŽ‡^vf5?ÀEñÈ ÃåX“Z…n-‡soÈPõ„&†¯á⯌…˜¬’bzVRËôôŒ"–ÞEF~³htRD›Q¯¢Äy IDATj_6Î¥<MHk¬E÷|­Í×r©úƒÆSh§l«·â»ùC&;VÚs;«í¨ö [ý(b?ëk½Î¨"¾$½t:ϸLÆÂê õœ¾Ýü׸¥GІ|úP)ª½ôœ–™¦u/ø§UØø*HàU£ôC&³nDŇ×q]ˆ¨Ý5|GúÀÕþ–þÛó-- ;×…((ÎXÉbSõk†ÐW )ACåU¦Á8zN½ûG ²r0‚JÚ R2œåÙ˜ëVhñðûpgœû?m¿šWYîÚhûC-¶;$§³tøØÏŽW¶ö±ü;Í[²õÊo¾ÐfjµD[mÕcßgo[æèþB›çŠŽÙ #y#G3þ`«ÀŸž™–† ͘†[U»š[ µuá‹X!µ¡Òœ/Ô*h%©¡~ûðÐEa%œŸsG]iŠ[­áZn÷Ø–8}!'lÛœœuÔ×ÎÅjšÚÖù ²A¼#¬‡ÙPŸ7D7PLlÏ3ÕXO}¦-áÛøb¥?k®dÀnZDz²}XöÚJ).ù§mòšŽ3 ãá+«ù©Ÿªæ¢ZlƒÒžßRöÛº9€KûZÇPšŹ£U»z%´€R…gs05_kskcyû¥»ºÚõ‡±dnLÑ_úëÉ/æ%+…Xã­ÝæÎ€Íg>ÿæT‡>ÛS!ýbf¿dç×Xo¥dõÓ³Bšÿ33ÃÓμ¿ï›Úû}ßÌÜÿ÷¦Ökß­àp˜-¦àZ–î(QøKaCùXÇAmØ-e6è$^RmÙ].Ç©² •d›µW®[šÏ6'ô$ý¤ìöpj›xoȆ[Y&]ƒóØ«Byöš÷ãÏC^8GG.¬z^éÇã•Ç¢©ÈE©}Ç!𠺳¸/à"üŽ6™€Û1›L mi5Í$¼$¯ÃLîãd)µ”E'ð*ù š âFT.bkxŽ|;Ö¤™ì®¥Æl*x á_°‹šÑmzK1×Áò»8ßU(Ø<õ¸-拸\?ÌAŸh¤ÌÀo¤ƒ†ƒ( Â×B§tôAuÈ£Þ€yt^iH½!…µgË?¢íèå¿)lTvâ̦´€ý¨³‰² ,ŰÚÃkXGû‰ÑÙ^¬¦â½q à‘åi#Ž¢µØ«Âuöï²/0²±¥4—±1T; T,/JÁ)¶*ÒvŒg $Á€K )‹µ‡ªÐ1½Û‹/E^L+Á§ü 1PœJÈÇrÏÊ„®c5Ǹ=8­Ô*ɳPUÁÆb&¡)4up)0âb "Í€™T_v¡ªT…fàxޱ fg”Z)>˜ÇkzE!¬Ô•1p…æZ×E5,+³ƒÂ€‡íç°;F#䃃á/x@Ä$xÊfÂc‹ð8›Ì~*— `VÞã0¶ ÞÄ–8 ÐTÜ™d£Áp²áMʪÔaÐo/ç¸ùÑ]7$3K1×{=­J¤ñ9,6wÞ\c:„ M•ËøXÇcµ­>XFieS§é«Ø : p£kQÈ~e†í¥íëbJkŸ\&ëâ*­³6ØñÅáµÇº¢0Åž×1Ú9_¸¶(ìXÚmþ›㙕ö1ýŽçQp…/[ð:]²Üð—ó$ç\ÛíáŽóÑÑá ,3ÊógfJJdR³¡¾Ò¿UF2 júŠÕp?½­¾¾§ÿ“aYÃ’'¿ðíùîúz*c¶±J>ÖFÛ˜’“¹Âš9Š(³B›‡´ ®2ãàÔ[÷«{ÿUùtêÍ€Ož”»?z&o‡$.½‘­¢›ÅœÉ’‘uw–¬ZGÀ=†áe'‹ÂQÒ¡6Ò^SøGûB•a¿¨„Ïä®´ßI ýx_^W ¦h#/š£ôÞze=†Ý2ç(X«ÉÿáŸͬ#ˆFÒ‰Ûq¯ê·ýO[æ¾êÞîüÀöü¾ã—p R¤“©PÌ*)“F 3á:¡=Ί¸aߪŠOÎ lOM£µóö×Oè·pÅÁpˆ§ð^EM6ƒß”³©<ÎÁ4Yžb1BOq·ÁÞ¿â0äÐ ìp C!*ˆ× ½QþÂŽx ¿CGéž’¡`‡!¸ˆiôªB€ºÉ…ò=eaõ±7«ÁbeîÂu8×ÓCk¸³Âå#ê©™¸C¡9|Ç•¼uŽCáŽÅ?YQö„=—dNQŸÂ=0¡ÆA,¾‡åÂjc/†¬*ëB6Y[¾aÍq0l…ÅÐŽÖËšð˜nÂS8LëËÇ”"+S*€ÐNS)1‡ÑìÊ>SWv”¦Cö›Mƒe7Ч_$á¡’³°lVšuä$QLZV?*Ig!Tþ-PÉ`ã°'ªƒ%äqy—:‰öP[®µ`iª´dØq–‡ÐÆz-³ÙöA*\vnp—dwù™Á9¾f]`m@¢d¬X;L`›0…ÍP»Óy9.©Eð¸\+'‚¡d·P¡ê¸Œí•—a ¥ 7˵ü.õ£9²¶ÆZ°N•¯¨¦R[~ŒuWÂl„# zÉbˆ«pT£HIÔUÞPïRê)#à«+ÔÅv0f€a#\MyE&h2Fáyªû*ªv¾Ù¿Z§¼ø²,Û¶l‹ÏˆtÄTp<52̬ŽLßÉŒÇpíûûOç¾ôö>òýôW À›Ó,,òzô\Î…q¢­L•}ÔK¶ÄY¡?m;ÔÅæ™Ïç³]p^èJ¶·óïÆ_¥Oør,ca ¥^Y 3úóZ)Û¸ÐKŽÎ>ÙóǬàßÝ+\Ûà`Z™Ôçé¼»zWäèê¨Õ³÷s¥*ãmëy¼M5²ùzøÀRÔ¡&oÀ–+5Ýwí/ßFÝð„ΤõŽ™ÎKî Á–Ö-ñ¿ÇSÌ#Þ’>é=çk#€×RŸ;:›[¤'ØÝnWþ`ÄT~N­j‘ ðˆ8)öÉzœñ*øÙ¶ŒŠi¯S•_Îëvé\«”Ç"l©»¹ÚÏY‹.»»dü)× Ù+U‘‘ÔÀhäO­*öXí€ýžm%æRbmcè_L7F±ÕÎïê ûÌ gþ=jYüh…Ùú¨$ˆgÒ´}5jèhUÕl²Y9­ ³½†ü4ÕÃ8ê`mPOj½ÔU®>ö¡¶ úaë¬pxãrµ¹[ ¼Oé%ãRô`pc¦ÍÊo 2¾Z[d,¨?¡Jj^5Zû`;k߬´dË0InÂ½æ¿æ½Bà±ç\r#¯/m¯ÿ¡uÊôX«µ ÚNvšÝgû=vFÙh¿Ç&aaR‚‘™½|Õë|‹ÌsòR›C”£‹¨„ß§uæÈ°L¾“ÿÈdk3Ë&Rè «‚K´y¬3÷(åñžêUNÃ.õ_¥#ÞS>*õxM¥/î•1Êh4í|$FÐ lŒóù*-Íþ¯;ÔžáäœGvú€!²¿éµªã^yÂÚjþkMfi0%+´Æ:À°ºè!'³|øýÅâX9z‰4ÊK‡˜Cåßò'U`Iü¶™Wà^®òZ¬·Ø NWÍ·°Dô£4ZF¬=Ò'òŸÕE¯&š™›uÅŠ×çÉnF[qJí.GcN­‚Ÿ7ü,û%çxïx›ûGzêf4ÌL+Ìó/, n~Uôð 6 O³¬N‚iê^è.Êîfë|à»ï‰5A<³F‰²˜ƒíÀOì:s`S<†0 Ã{Ê#; ?Á5XÄÎâ(Ã~á}XÁ^³[k³^˜•Í®`ƒörc8"ë@ó`Ôb)üLÂ…¬:å?úåk@(ƒãàœì­c¬ŒG`:›ˆ£)+ÖDÀYÒÊ 8‹‰MÔŒÝÅüÐI9¹ÀÁ‰š`mœŸ±²<£1J8PÂYúËbr‹L’ãåCšãØ|vŸòPMä”›ê‹ùbŸ<€B6dñ'µ‡>²#ÜÆ‘°žá¥ùZ>‰E„-t þcq^‘±¼2ïA%¹…Ù¨2¾…%p”n’ÉRà=ÔàµPEs¡=þc6£’ð—Y¿±bÖNü—i>þ½ùnlήŠö‡m ¿ÊÏÔ PˆXÄ^á|Y›o”H%(§€›.›Ù °¸ÂÆ^Á^ìʳÓyâ8 úÃJ€YØ.lÃû°lÛ?d5XL!2žl”‹Ò .΢9ü9˃à6<|€³pŽJ@&6„w°’&Â\¨D6~/Ï 'Â?Ù;ù‰b¡ !?e²pÊã18Šóp $a8bL€ëX“ÙE–ÂNÀQõ».š;:nzã#¾‡jö’¹öÆæÈÒLù 4ð 'cCHx„bOÌ%ç¶,¥í[¸^f~L×SºgÖõö¡÷4rB)\Î ¾’à Î&aVþˆEiq62^é‚hHiêynpS+ SE5ùô(ÿÿüà#kA{+”J»*¢7úH¸9sôˆùìŒw†ò¬TÓcô+bº^JVÂsl±z†·eY¸õÖ<­J’˜C¾ ¢’)Ø,YÄ–_)+ÿv”×N€7„GlqEÆîϽ>gõP#t™«¤­'Ö’ ¾üß2·§õòžòÿ… xõ/e;Æ0—>8PÀ¯aUOÕZ²±šÕôÙÞMJ{~ ïØGkkØq:`as¡ÞAvqD+mµdµ‡}¢zÓ¾.´bÈ`û;g˜í_vE2v3¯ÙE?ÈNª[å0¨Åz C|¤¢d0ÝìJ×íñÚ<;–7K[Ùͺâ£ßãmjYÆ­àSyÑ>ÂöÓÝ.¢Ÿ#.²ž{s–×vfKu󈚮e.‡&Ýib‚r‹mS}üÏýW•q®Zö½OhW[?çI×!¾;mÀƒõ(‘©+(T“ÁCkɲ°!íì²»>†lt~ŘÐåö;æY[k\e›ÅïòCZ5áL“½ÌóÊ0¥1/ìD³_²•gúSÇ<[v¶Ô¶Õ®ž¶·q4æQÚG+ÕõÝé‘eÕÞ|+ÝÄ@¥fà˜5Ft7DÍ»©SùMÓV`œÚJ¹EY2ò!mcµAÎ_¼s-ÅêeƒŠ¬Îûñvκ༜I>©ÿ0³¤ÖOù›}O]™:Cü©Ï2½Çµ±¸T8U›¥Ä8“m­í“EI8ñV=¹Ç*#ÔÍZgu¼ZÉVU]oÛå8lëkßeŸ¡MR3ÔY¬¿ÕÊ÷Qn²îëWŒœFmhb~”·1Lx`1— Ö/£¯ù$8Àp[̓í¬&ò" Ê!ò|ç™<§qYIâߨ(¿¢þV7ó‘êcõ>¯£ Wzb/Œ¤opƒŽ‹}°›àE¥ŽcÉ|ŸÉOˆýÖ9Sïª >1²Z«ô|7ÁÆÆëœÈãeÙⱆ¬Œu!äÆSl.OQ~Ñqò“ZKJÒcšÃ.b-6–b;¡>›Lû­}òoŠ“õ(›²ê|¸<ƺiZò_x—b„¨ËDЇrlœ[g«lÅCëkEQ¶O¼.ˆ&ØÒú©Ÿ–;­aPJSùdšã¸çXŠmIT|žt×µð¨˜(Û-ûg^NŽ –§ÄY×ÜmÍ=‚n¹Gv³ž@UèE«°¬Ïùù–Cˆø«gꩌL=Ÿßt)¿Ø ­4Fá@5l†£ù#QA~2•âl Ó¿Ó$X#D åÃÖ8h`Æql·ÜNŸ1¯Ü@'q?<Á‡ì3&C!lsà(.¦t—c% 5ð!´„:†!¬%m…¾XEN–Eq5{ÌŠÁjt±Ñ´â0.Ào8åÙ:êÀªCVð÷T—já! ‰P“ü26Rh(þ¯°Q¬¦k|/Ý…ª¼.€D6*á\vúÀŸE¥ ˜œ7ØÊŽ`¥PSùÊ:AoåQù›ŠË8^ “vQkùB’L‘ùÅP¨ àDA€-¹PGÀcÙ€mÄn¼"ïñ ¦(¸&ï3K)A½ðØ P4…[PJb.n4¦¿ÌtU kAõ+áËñàÇÀV}¼•$,aºÆœf)Ì®:ýËü<µ¥Ül¸|CûÄFk­y8ð+ðI_«Ï1d`m¶ö×Å”`4~Ó†·}«=«VËÙ-²yxùCcåJ ]é8(úÇyËé©þçú6£»¿“ÑÍœ#y®( fçÑl'å8ä¨fÿ×VS­¥í™js¸£ý§ô0þàåXPtV-Ç¿®YŽf!'BÆ`ºÕ/}JZ isÚ“Ô©Ûƒ±þ²?µu†}·rås­äÏA_{Ý0æé[ô†3ðÑê)zhU•[¶ŸËñ^­¬ÇЬ#UÂ~Êú`ÖÉö|ÎêŒÈ:9üÑS"çDÿp ”!¢\ SNE­d<¬Ö[•ç öŸå5ÿ'7ú±*˜…1ŸÞÛ×ÙZè›yÛ˜ç?büK;‚QzЍ.?4c¿cGHe­”6Mëè¾ì.é¬eåéøÉ×ÖVÍ™Uæ”G±3[%†™W=Û­«0Ûü344rMö¥|°RÅžU€?«¯œÈj51¢+½µºÊÕ4ܪgdI뾈ðŽðÔòÛ(Â|¬æ×·Ê0^F^iþú©ûÔ}b¼,És({íW;Ñm\=Âðé¼®Ìã9aÿª= ©åî akØSø¨S²¶b³­¯m›o¥vÂñx‚ò`çÀN‘“‡­yè¦ËЂíPöðC``KlLU¬µÆ*ÙOñ †«mcùZ– íƒBzo£—Ü«¨elõ´ ì¥*~P_ú[‹ÝþÓ™øå´Ã©·Í^ÖÇàú”,J=ùÊü•õHô>5ÕÝ5L ß”í‰êν :80*Ã_943i‰õÚèAUäGë©}š³®ý¯È^!'CX×ð± 3fd–óóº|;3 Í|ÑÖZYË,©”6†a¢ÌP+ñ,ò «¡mµ]W@] Dû[/ÆçʼPЦñµü¶öæoX le j„Œ 3P‡ ë5{D¯dKý¹¬jð”ׇzXEEùNý)˜U7x/xÓøéïã¼#½V}6×ùŠq%B]©•Rz)·Ôò°ã£ìou¤çP…߆¢´…#J^ Bp/kcË.êÉÔS~b'ùf# RèÄ&qr p>t,íö޶’ú¹à5åQ° Q'kû}òlÅ86O™¦F;[ó öclŸ9ж–ç0·ùüòêXJ{«$„°¦c^– 8Õ0Â*(ÿÁhÑW)ç­q²±¾‡M,•wåcõÝ e˜L}ätÑau–âÐ\v×_¶HWˆ{_Úùßùý§XOùÛÉ#Yu-U”›8ƒ·°‰·~P2Í—á  å”ÖÑ{˜ˆÛéµÇפÑ}ø›Sœ/àœÒ‘›ÖÑ&ZFÁ1ð„rCO*KQ¸ vàhÌ€´öBÊ ka$»Í‡ÒsÜ„Ó!?„PˆœOí`6ÆA!Šä§eåƒxŠ„‚ЃŽP7z Oi5›èŒüÁ²ô:°pîÆp*Ëé…al€°òËh¥iö„Í ” ›Ír,ŠžP`5úMG1faA¸Ž{a l¡™t'@k(Œ+(Z^¦BÐgÓþîâE ·©IÕ(ÀG±%r„ñb« G”¿é6 àc™ÄÃì”\GçYn¸KY&ƒN|%&C=~‰.`{D?)T")º J!‹£Ùj¼L[)+ÄÈ88I]ÅGq Â<å:þf]( f=å"z©Ýá3ÙA:ÅÛËÿ€îr5ÀDX å1”~Ëf.ë’.Î@O©P2¬¥áLÃÁ¼#´fí¡5}“å­Ë$e)ÜLÇG¸žýAå¦qØQÞÂ"¼ ÕÅB”Ìæó0Qî!„r”Iè.ÅàDy Ò`DA7x‚×)Öaê„7p[…X6؃Ïi˜tÑlE¡ÏÖs<+;Z^ýrÒ£OÞ6Šf^1È;G×y5¬›yD¿b,K«ã+¬“>ÛSãmW]/\Ü{_nú%«™o½y’šn"zjk”YpI½&›Z·ÄuÖÞ÷Øg€_Qb¨¶¥ð2x Pk†'©¥ñÚÏÈãÊÅ×1; ܸ>#4Ó=ÊögÀ‘°ÊêM­Î¿/¤Í5rˆV¢Tp´Ü&jÚfó†ÊL÷ª°Jö'¶“îÂäQ%0ÏWÓS5£½/‡ç0T—õùBÞÈÍwDĤþúU29ƒÍ>¿~¦¶NrZË‚/­…p“à+á3ëÌÀ}™¡$ɯÙ~}ŽùË:¤sù;8E cE'٠ʩ͌Úp.ÄpuTÚJ³,ñ×Èà~_ªzŠ©pÛUÙ}PËk7œn¾Í<ïªÈ6¡æð„h< ISÄa¼í¢³«95u¡àf‚?N¯`ô»ÅIùšÊ¶¬!ÔÖUýĩiyÃìay´Ê–Ÿæõõ”I­›¶#u®õ¿À q›uµ=t¬R÷:φœ´Ü÷œ´€R’Æÿ¡ b˜hê-æ[GyYW¢I:E}›÷_ÏÃß™þ_Á“V6Z¥ÑØ^š±DF+_x1¥}"ü£žUOÇЙvà#3ÄL°²ZmD1ôË.¬©ºÏ¼iµÃH×­œZ]æG© ,1†Š|7«ªu.tŸu6æÙዾA¹­ö%\OCÇ,smvÏ™ÇÙ!ôtD‚ý«ë—Öʹ8d¶¶Ù÷§gzð ÌØuZ+ÙµSÚM©È5Br)¹¥_¿|­OeÃ`…Þݹ!<ÑQËú&Æ¥‡ùþóÜQþöLKwfî6ÿòÓïWÆiÏ×´+þ…Þʲ–ïh+7ˆr08¢í7FÊo·ýPûÛÆÛ7)kìåeK8ÃKS¼3šE2·ëÏü ÓNɦ<¯cs¨rµpO²Ís|f­œ3ܧe÷|ÇÔìBm;Ëõâ竟ãS§c s¥÷u6xË›ÕïÝ&¯ÿô¯ÃV´q´Ì«¾*²”§ƒé¡š”‡µÀî.nϧôsD(~nYõÌK⃥šéFœì,kÉò³[=åZh Kecz¯´âÝo¶Òè «®ÖbEåëosgÐfdû™ êÒèïóE*le¦«%ỲÚùXw C}ã?¨g5·L±!0ŸÇ<ÓêCõÙ ª%3-Ëéq,v¬ŠXòÊþ?[e1&©ãÔÎÊ {O{¤ý¡ËÐÚex‹-ÍuVõàô´&f}~à/ã’¹ÆØœa´´ÖXï…ÄÜr8D \ÀœÊ/Eµ´‡ðnJR°‹4¿zþG¥ÕÄYDV‡zrþM…ä (Àž§3,ž*ÃŒƒ20˜Í„Ö(yW6UÙÃòoJ:»E™¢  ¹ ‡Ð±zZ3tU.1¯ûÆ›ßã^fä1YcbÿN÷©ÎR«•øÖQ9Æûðj[%;Ÿ£Dò%ê§6U{©cY!ÑU¾GõÇÁ¾Zd}±ö8~;?¨ÃCž†võvoslvG(+íE®„œ´/qeØ»Ú9ÚØ_†zÔ…ê0%€ù ‡5×:%f[›ƒ f_<ïc–T9é²¶âÙvoò§Tœ36˜JÒ#Ñëg”ÎH$z§x†{ÇŠÁÖpÓNês|Âoñø7ÆÖÂ+L…‚`ÇöÆàC¥+M¢Ó,›Ô)a%V”Ú²¯˜E>eKY¨œF×`4å••ázá æ„kôÂÄBúHµhôŦpØrCKÈ€’’äh…“0~@Ð…ž¼8 €¦|\Cð'´Æ?i5dy€ÃoÖ’/dyÙN`ƒ 9¡•£Vxé'”¦6Cá6lÅ”Ãá:ÝÅT¬&†ãe<`.®TA¯È+Ñë%|;¬q4AN¡;”(ëë!ò¶ˆ0ûŠ‘2 v°ü »Š»ð ¬§…w`&¶Ãñü¿}ùZ¾§ÐgÙjâºO—¬ÂžÈæ8¾XCa04DUža]ù¶X9ÎOó1ü$ó*]•·jMìGߨá·¼V(>¥j27ö£dx‡Ýà@e¨–İFQy¬ Ý 2ïÅ‹c2«Æš)¿ þ̵ÀÑ,?ÏÝ#ÖnÚqkïyžáÈdóð4.v^öÄXô¶wUgûÏ´µ§Â ÙKò,Vaÿj¿Ûó=ìݬ³†Iô‚t1Êj†Ëè‹u\¶¦Ú!vʹN­9"“²"oº¶G¶‹8å:6Ôv ZÒÛÛ`/ʪ”·µ“|‘’ÇZ\$néÏ”fZVwYª"a´gEʸŒ7Ám"6ØçØ*jGíí©¾m²VZÜÓî󺲢-Ô¶1d=ùÙ&Qƒ]¶×r{ÙH~ÝúLÌ#ÆžôºÞ~þtç"×D× gk÷ÛÐ)X]Ÿ-/“—9ÿ ý+¬“°ä!Ú#îX]Å\úE)-®ì×"ø¾Û'È*¨DÂc6ÇËHj%ßšg¥—L‘›Ç².<†A,=4»¹¦†uwÖˆæ^’ç£Ý£Í ™:ÅyÒ1Zi¶XV×~Û{8çÍ|—üI3þ4S4‚¸no¤ÔÃùfoè ¿Œ¯ ¹Æ=£¨|nœÔ#¡¼k‘í¼v5ÐÖÚ)7gæMù)¯'×I~”ôQNòVöT”öZ]æN³³£«­4Å®ÆÚžhIÎ/΃J€³ÜBvÛr¸n†üjn°¾À¦`„yXÿâ/f=ÁVÞÖÄCm᫲™+º²ÆäÍ^Fµ9B]þ ΤÈz®VÎùúŸ˜]œ?ý²øÃoc°§hê3ct°¢¬gÖ‹œ÷¥%’”dsœ6³’øj¼åð2÷³œ´ËÞÌæÃCöÚGf/ý,ªR"]JEÅRæißð3v—>k?‡ƒ”XÞÞÞ´Qõñ8‡Š=ZoVÏ8 ƒ¨±~œ¢•ŠêR¼Â‹»‹8jåúm±|0Ý?Ñ»ÜÑÿ3ÐÊw+ðÛ_׿$p+˜MÌ6êÉ;Ê\š9‰»†; j'Ý^û¥6ÿŽÀ&ƒGåƒð*T•óÕiÚ|âXg¿àJPüJ ×qRxC<`®£WâuÆÏë`ÉL[z¸·G°GƲÔwÆd½—~ÂÈĦxNŽÔ×d.–#üeS“ýgþ•"–ñËp«Èð“=¢AR‘ëX yËiSYUþ‚ŸU¾°' S‹ðÚ[iË‹ñí¬ªZ‘ÝTâì—T•íeí”4xeÌ–;­\Á!F™àk¸ža®Á£ˆÌ„Kb2u6±#²©y‚Çé0XÙ®m·u‚ðŽÅòÿi]añ쨾N¢5–Â|q¾Z<˜ßÛ2-]ùŸò˜g³¯uŒs q¼°oÔ9“OÔ]¡ÃÝ‹µ7öݶ¡ŽxKñf2Ñ’Vyø ‡Ò£ŒHb=k™ÖpS3±¶Éë˜Æn«{Ô²l6ÛEp×Xe¢òEq铌|Öœ”`r O‚ù!XÅŠ 9¨×±ÕrQ*(¬ œ÷@ÓÐgÓ]*…G¡:8`¾ÂUÔÝP Ç`c(G68 ¡tÚ@j¯ñ \…ß0Ar¬‰Aù“¼;ES˜%›²Ç<6²A¸“.c~È„ZЇJâ6š`ì€dvƲil)žÆpg·Ù˜„ë`8¾ÀÊð_ð9˜F³íøM¦Á¬Ooñ6†‚²c%ŠeÏØ>x ‡q'­Á,4œ¸Ã%X@ÍeªBÌÞü”³ž±)ð^N c´:ÈÂaœ\$‹—2¿0 ž°ÏÌÅß±(œõiœÁl8X¬/oŽ•ù,ö‰Ÿ§qIƒ¡(Náh„²ÚŒ³ÛÊ –ˆ»••´ OáC–Ýôáì $[·d ºE•ñ8Û+‹ð¸Â*¤T`ÄLІlÂCCX9(«ª[ .ûC›ËTåžRaV耋11ð–f#òñF²+þ€x…¦²PB¸Ù8’ªÁXÅ:²ì’V•^@W¥§8CÃý°ŸuÂk4”‘­åR\ ñ4‹×ae<†R e•Duí/¼Ìòó¬NeùXY~G;ÈŽÀ@5¿L¶Žˆ1Íd\cÝùE\E÷©=Àš¬/€åXyÜÇ‘9`ÎÁþ˜ÌÜl"~TÜÊ9~;•½µmUÌØ(pÏ2ÏYÇÅX£¾1Û’a-"š…UÉúOö[Ùª¹…µ­k_ìP_.vàzÞØ¬K%‘%Àc´±Ñ%³x*ñ ›/¯ ÕÔþácE1/ƒ7R°…p/øÆ«‚¡á¡‰ÁáçÁãþ¨À ßñÐü´ò2'mÊ@}«f–×Ò´Dý¾ÖĘeûŽçð‹ÕNWõ¬ò­ >oà\ø:y±/Ë/ªÙ ØŽk¡ZŠØïÈÌZiI™;3Oó›É®¬n¸€j@§2—g.1×x)cá¨5Çs] zGÇCqX9j=ÏdqÚ[ö ¯ †ä­ð«PuY ‡ƒÖ*ù].…¡¾Ð‹HÁZðÜÚ{ví쎘 °ƒpbQj¢?Í!E»§=׻ɳlªvÐÌ4WPCëA°D8¦Ó7Ù 6«báÍVÙ\ýÌf:(l&™—¬«ÄÌ/™qá§ußÏ™›LO >Á~V“÷—ùA(nœ±‡¬[ÄÚë%Ô"k¹µÖ”bjbØt²ãÁ²ÖâP´e˜‹2ßøžfœ÷ÏèàÉáï‘>)mzx¡¿«gå¥%ÖIœÇìZœÚoÚ¬ªò.ŸkÄ€G,íe„œbex<2.*{Ÿî«stÃfaiH4J¡â±%{Ä~?ŒtZ€§a2e‡eEÍh!܃nð*â ø‚ 0 çÀFèÇÓhƒl EÙ ìË6RUèÁÕ9úÝÙVXˆ‹€Ók¨B'i5›A(ʆ@OHaí! š@&ØZØ€SÐŽ¸:°ó¸¢1úE  5žCƒ:¢À°¦Cê“ð»B±ØÂ`@½âàMg›°1•¤¢˜=T7ã"Ê…ÔC6‹Å©÷x÷Qw¹ÌÚÃä£àLY ØŒ=ч¹i0Þ†W̯V[ýð.”¥Z0æòÜp@$ð«Làx†ýO•ÀÃü>¼ÆAÚ>‹'ÉԎΓ©ÞSHÙ©5mQL›(Æ($Pnh‹§¡®6PEþ7–§åp*Ó¬¥Ò ¬d§ØHêL`2Ÿ£U+½˜ª‡ ´Y<Î.a6¸¤`2¤á`±“ `/Ø76]®gŸð_ó>^ÁݸH]¤Câ¹Õßâr\ŠàYœÆ_ÀlªÅ ³Â¸Ö°šØžÉÇê¤Z/Qu¥‚X/²mr€j¨k†xÌg³*ì46¯Äl=oAvv…æÉ†&©ÚÒ:„}T¶ŽÚ+‹™l‹æ—p9¼‡ì"VÇVx§Ã3èÁ~áñX”55vkeù+×ÇN.üVZö”Îi_/|9aö—R6é¼®¯ËV$K™èC±Ÿ#+«{ÚX­Ír6Õg"È¢E¸wpœ7:¼ÀÚˆó±«O“\µýÄÖ¬/bNeÙèjO2~¥ÆV_”ZI±6 a-‹ö2â]D¢›Ôu—_²V“ʆ~ ¬Î¬êi8 Uù*¶I,×ò°º*“:YÄGã!Õ=úhló¬fÔç¸ßbnŠ7Z>=•-à/µ…áC¡‚é½eS~×^[ßd‹µ÷±ëF'›ßÊjr‰ÿß̘ä|0P4ýìùݵ J¨ƒç=fÃ"ê=bÈ{‹û§[!ßï­!r›ª!€E6ž £ì$ÎãMc5¯‡Ó¨™šrB[¾‰^ Ÿá`üSÅ-Ù¦°6Ó âpUÜüøìß ØMOsSèPÚ¦´½_>{Þg¼MÚã›'ZEéQÁ˜-9{g GíŒÝï8dpO¶‡­íÔJŸ_¨œóÅ[uÍù¡aáCÁ0ÔÇLºÎ*ð{òkeÅèUÅ0kð¦±óö ö l¥æÖÊ€óù4˜îZ- °h·ª©Ž”úáT˜„¥7ãSò‰Ï³ÓÚe2ÿ ÷ç¼ò­l«rÈ<°Ø¼éÏáË–4:xß»(yk¸P`¤ÿGpUÀ<~e– Nà‡µ‚8Ýv]ûOm]µ»Ú.½‹Û§ÄbS2/yÛcv—Ÿ¥\´På±Ö‡Ð@pÃ/|–áu>‡Â¶ÆvT‡í ¢Öò ¿µ®ªâŠálí¢¾WßIq ì^gzGß ¶)æºûQG”Ñwè6hM‡ô«l†¹B±~R9eíð:|F‰zGm .à[!‘Uÿª|lþ¯Â, Uˆ}ú0Ay l%}!SíUû•—ÃjÌ vVÃà­`GàF82¡=V§‚˜ Te‡gø÷ª‘PADÀX«º°ÏÔJ@Q˜ a ¼Á¢¸„9á }¥¿É… Áϼ<¥ì” I4V5£ù0 öÂbøúCE jå1LÃü¢ü¦J–«èW™ “©\Å;jÌav˜¬*cq¼¨UÙá.„åsæª<§ìª?! ð@!ÜE¡Âê,.ƒô–ìÅs¼½u ¯óUX~A/îÀ)øvÁ~Оu ÅJ`ª$:@g?åOÚç½Î’¾ñ{¤Úâ¿èÓÎÝŠ3v:öùfá žS/ÿ³= NÀJ,…¾^ÿ*ÚYW¿U696¥3ž¯Ž\Ž~®MjnاÍqÖ0*òQµ\OõS|€Jk)MÒŠZµ½3<¯R+;‰{‘Ù"ŸÅÞ¤ýFW½† ÙHÉbô-Z?í¾¥É óïÎhâßÀýb_kèö™xID¨X–¢ïåuÜ—#Fœ¶Us¼TÌïÞ Á/={ÔÕP‚¬ÅŸsM¦á}[”C«"fÑ4w³ècNêË2úKº‡Çü›ý¶'ñÛд)™,㬷?:X[S=—Ø`Ïeþ*?©ì-[¡.Èoª¸zN‰X"Um<ŒqЯË+Ö7|¯ªˆI˜jËqÄ¥…äÃ@aýž¬ŸE£@sÖAyˆ5bsTœ”~ýC(T_³yá¢è`µšr©,â³Ù@=äS™JÚ¿Û`š¶Ñ5Âð˜SsµŽwþp\ñÏY_H»–~+½¨º‰ÙE˜¿—Í)-eù±%­?Uqµ,ØÊ: ëŒ$óZÔ+ÑW/bÿáÏZˆAÍò{ñ!îå"m©ýlfÁµSÏÍqÓ9.´5t×5œã°:+Èj´ÕF›ÂMñ‰ß¡GÚ¬ÍæXápRèsxöRÎc]žàÃØ,hÊMj{­x+Kà7ñ¯9ìÇz̯ç2jÛ²8Zºûó;ô“**uRÒÍ`£Ì( èEeÌ^¤«!¸\Œ›akSôznÄ´ó¥‹]iGüy¨4µ€µx–£±<…W~\‚ç<'ØiÚ€/ø=¾G+†9Yöª4+¼RϺÞÌ>°¼¶ÑÆ£°3ÃùÖÝI÷º6FõÑîj³¸ $Ýð'øþµš{6ýàT–"­f¬|¥¦g^ mWçÔ:y@ý­7ò _Š d Nm’z.pÅ{$©b`Kh›¿xpe°1¼‘CwÝŠrDÆDŸŒÝ{^—Z^J±ÚY»Õ<ËGKmU‚)V%m¡orðÞ÷7ç þ#™¿û˜Ù¼ŽŒ®ž¥)MÒ'evìôm ‚áö\Ûk† …7É‹þ'¡„p ë8†XûsÞ—¥jÃøY>¯ƒ ÞSsÇ&27:õxá௵qâ‰þ¾± X¹ÑÆo‹ÂÚH¶™y5XqïE°ŠQ&ägEåbë\°†´«JærYH†Ã­ÝáYr ›±€@ååÃCƒs˼×|‚<¢­·yµÏ6ÒYžŸ|ænºFIáù0\ÏIì3²ö€6Ο³]†™Æq÷ Åßé(†Ûû¹ÿ†ÏÚuc¶Õ¯Âûf=Q%}R¿ûšÚ¤Ÿ ÆÐlÕ]ÄÀUñ ëÍoE#IÀsH†I0L*GyÁŽñ?ÍvAW5 ²ÃhlTµc'þ?ˆC7f·Ø=Jd9q”ÌO£ Òê†/YÖDzPv`Mº…`Le¨Ude`8Îø—ÀgôA/¼‹#07bwŒ§ÞÅà$–ƒXÐa&œ…Ö°vÁjèÉ*â'ƒ§ÕØ90ªòù˜Ÿ¦@1| Õø kÁš‚ÉTêãuÈÀP™âi¢ Yùp5å€Í©ßdAóPX™½i ½VçYõq¥²äd·e‚jÎ,yEû]gÓ˜`‹Ùp¬Å:ŠÐOàn\‚ 8½†ò¾Ü:YÕåP#þ„µ¤9ÈØŸz"”¥0™½Dz_p6; ß±<fØnì-—«ùª9•ÅÇjŒr@„Õ–ÝÆÊt—v0‹5…/l¶,A«!'ƒB0Jô ~4„m§œ°•¿‚›PY_à³°ÃÝXZìæV×Ò,œªÆ†Àa8"?ªÔÈ:I5ñ e X%–›e€¥XKVžýÀ!¸‡ÚòѬ½…ìª6z¡G Y-\É쯭Ïa ÆÊê”'Ùv2Ná^xIßñ] Pƒ#;½ å€i@X†ÊþÚ[vZûa/ ÿR6„JNù6ºúÁó"tÉ?081ÜÎyɹçf9W#GyFtÒš™>ëUp;%c¬sõ÷Ÿ'¥Åûަÿ–ßëõ55}¡Vj .½øXócä®Èù‘nøvÂ@ÏþÌ}¾Ô«ÞëDª„Ñ)êFDËÈÞÑMônâ£Øù:ýJêu\zæÅ¡ÇþLÒ=ÛCg|õ8Ñ,vO®Qßp œcvW!UK}³¼¸moo÷joø¬ÀpÏé3Ì:Ê%Zy›…ÔB{çw²6TTäL«À¦‡Ÿu´ ¢ {*“T-×ûÈ;‘eeuk€ïŸÌëéÅ‚WÕ6z…Ѭ¼h,fðI¡Ïàà$k®’T˜¼VaU›m62Y_Á}ô–IC€.Xž·æ‹§c(f§é6×ûcÅ6>kÉpª¨'æFœÁ*ãg}™å6@šŒ5ÿ‡Û¨3LƆðLìÀDYÏþÖÈãÌë8bœw¼¶íËØ vU-2BÚYî32íc´ïÞ+^Jÿ#ɑѕªª2¢&°MÆGê Ëy|ÌÊðh~X\ã ‚åE«ºùéV#ùsÜŠ×ñ«é€*¡ß#åõ”œé-ƒ2Œx½üA_„| uà‰ñ‹ÝÃ{:3¹´:l—#§>).w{üÀ˜OQíd5'ˆÚPÑ{Ò;Ðg¨˜„Ÿi2Uja¼>ÜöÜh¯·cYCõ &¾åûh§3Ÿ»ˆ»Šþ‹í-—ÜiöSwÍ«Áܾ±¼"O¡ñì7^Fázþ”?C']À¼â³>“¯²%IZn[wàç-Ì»˜E¬¡~Gò‚Ì2r…—8FY·;âìÒ˜"³ÓToì¦Tõ„߈¦z´޵b?®Œvë]´qÄ/®oìƒç‹]ó¯ñ«nÇ]G¬ù^+`w¨§P†Mðt6C-á Œ^ŽíõEzø“µõò´H“17Cþ8ây£M4Þ¤–Ö DÅfiî¼u_+Ìûãps iEîößUyÀj©J±ÊT%Í\¡’é×B“äXÿ˜`¦c8“ÙÕQë¦ÿ<Ô÷A"›e{ÇÊk;œÆŒd/Ä×[3_h^ÐiöK_á?@_­s¡ÎqÙÝ[m§çŒozgœÃ6³|lí¥ãF цäiö÷ÚSqNdƒr¾Ts¸l­RÔ3?TfÃÉ­úâ@-Ý¥L}“ËØDÕÑ옡ùf$¿y 0›rÑ^寮ù˜K+b5áͬQÕ†æã[9P= ÿØž±ÞheœsGªTqb°//äȧ/´û ™VAV6¶a!ýƒ¹KþÎÒ˜¥ÖÁ‘[ó«ø ÉÆÖmóφ÷ê®y3p qVw¡EkÉ ÓUCšv†òàL£†¨q?À ºÄ¾Ã=ì a&V œïùXžLѰœõT;(?Ä*Ki”‡°Îpˆ8¯A9ŸÇ›ò l€åŒ©BÿE«¨›8NÃU^PÉø;VR¥ñ/¬½åGrÐ L„Rخ¯ê~„[*:C ƒÃôœß§[PŠÃeÜ Ÿx/hÆÂì0»‹ãa!Ö¶JP(MeTGLŘ jˆG°³âð·Z‹hæ’mèW讬&Aªçl~×úÀ(ÆiL„5Âßð U£¦ôˆ^£&ëáE¾_ÖbcXu~êÂ70a*]U«q;l5cñ ݯqì– ­85'²6|7.nP»Ò@X ¯p!Ý¡(°«oxâU<|Å/, «B´„v4Žý`×a/ûH`«õ?AïªLkEn™.Ù"`¶#¹yv~7Á: ZÑkú h-*öLzi3¹äbü§Ñ¥ÑQ‰4ú«OÁ «ZX+ñÚP²D¨%¸…ñäÁ(® ã,ͪҟ°ë©T•ÇT8›˜ Õ¯ê“yÔç• )VU°k| .¦Åª+¬Ãœƒ(Œ£é˜ [­Þdñs¬6«Ž×XmÖE[ /‰zà(ìüú¤F…o~ßï­ê¯hýZfô-ÊÐe±=%òÞ¨jFT´Î^Áºp¶0QP¯Þ¤ÌÉÞ>žÖÖrOs_wåô·¢ <šÿÆ ` ýà=s›Bnhžuxœ-%ÚÐ,›(¨Bò“Dkøð€V’õwôé¾uÁ¬5-ÓE4Ê~:"¯±H¼3rÐ<é¡ù?p¡¶×Û/ítúö™}—ÍB‹õfp"£IRßdîs†WÛÚ‡_hôMYã³6Œ;£=œëF"•ÑÆ°;<ƒuIJŠs˜ºa¾ñ‡¯"ÒØê}ÕþØû=íkh=S]BR•W'±¹Ù‰þP»©#DS¦qXÌfŒx^÷ä{¡¤ùFÞ¥éTÐ,œÌ-íé÷’Eè’oO0Qi×XO‘!~×FC^ÊöКÎ*ðâl„ *A%è&øÔYˆ ÏW\•2º‡3ücÕîÀZßÏú´*‹éð!z]Ähç¡èN±7í/³vOèŸ-õÛη'¾Ýñ,Hï"›ª­ÏÔLùŸ8ÌÿT¥ÐA‡é!èZØë5;š+d­Œ±³®4ÑŸç}á%skëDc|jVö¢$ë”⿊÷1»Ž5']Ó"ÊÚËÍzëÈ¿³|ˆs8Å\Ç¡[3m_ÚòÀ˜W£GSoX]åš`)ë–z-gÈjžî"Z÷e)î8/”K,¤JfÕp^ÉÌ—¡yþ¦ü#ýbf ]]’'p¡(‚õ˜C¬ Å+9” ºÃk| ÃE‚ñM_ýÞ5HïÉb¨}ø¬ÈBUÅÞ>³é£J7œ‡£ŠÇ¬å%Y1Æ´úÚ‘Oû@‡Ìžá‡¾‘¡¤ð!ßúp5x ÒŠÁVæÑ:îN¤­áVæAñ+h¡’b2ËË ®÷Ä$ŸñìH>“1Íß×;Z{e6Ö~†–¬‰îç§µtý€XŽc!-œdž Lñt D_Z»T¬ü[¼Öþ3ŽEÄÇìg‹Œ"‘¿ÀR>ÚvX½…%Ø^u—µeM|‡€éÿècm1ÚF[w‡ Þˆsâ.T‚¿Ù5–ŸYÚ2¾F,Ñ–²k¬߂װ+Õç?óñ­÷Ò¦ñÓb0ߎ«© †vІ£’4AžôÎWÍC¥Cûƒe|øKfEÏÌ0þS¿3Ö~2ŽÓÛ;{#}ÏÏb´iŽ&ZŠmŸc¢VFû™f‹ÅaõMÙÙV]•„Ÿd/ʃ+ȼÆíÔFE©eÖpk£™ÂP/ßòLåýá·{c}C­ûÔ‚¦F°Lû  [ •°‚/8¿á;X­Êó¥x–žáDôÁ0(͆±]ì?VWÀVjHðMÁ¸·ƒ zô+Ž…Ý°R·¡->†%ÚúA#xsxˆÙIªƒ%a ¾c½){bõ•Îâ1Ì.k@vÌ æ`;8 ÙY;Ø9È„CaÄA'fÒlÈsq FávXˆy`,¼a“X1UC•£îtEVƒEìF¡‡ŸÂìЋïQSÕaú—³64 K²O´H‘ºÙÉúh•ûù3x̬ +ÊÞP°¡¾ÃQÜÄ‹°"l±6¿gOá<µDEõàè ŸàEã_XƳ"b./ªÊB)ZAÿƒý*^d_xCüoY?˜C 2ŽnC8‰]pL¤!P¿Ñv¸ÿ£8Îc:Eýhµúwà,NÛa96SÕÙK µp7&A€ßagùK*@ãY¦á1V%ªjl44Ђ½„0 ƒô’oàß 6Þ„ßà1üN8Ìð$v§â[ø.«œl,ä¦5Â…ÿÀ1l‰…ÀE? ܦ˜NÙè&x$‹²7ê\h¬·,¦ yÜZ­Í°uÑ:h+ŒŠ {X}æe71A<íØCXn5gSsÚCÏÌaTÏÆŸ³ir›±[ûSõßI)ìi õñ¯eÑĵ0ú°ó:cìuÌÎX’¾2íYúÂ?{FÃ`¨,Bz¬ø¡ÚîhšB5¿àë+|Â˲»* è]y2aû°‚ê@M1þ¤Çì¼zijkYÈj°¶½ÆrqPû$¼üÚzñÌO/Ù1í qÕ~K|‰áVÚ¤¨?Ýy£7B.V×q9\Ä7g/„îû'Úÿùh\ø†õ@Þr]1vòHý±#ª`e,Û Q Ÿ“wÃáÌ5¾Â¡¦!î 'ŠÞZ1þ=Pï³;VÀú *°¦j›¼‘ª²~OߤÝr´0¾©O4rkÓE–ܱÁ¸gcd¨CøAÀÁºâ#Öodzb[ø°Õ• z$ ÿaùM{$>GFç~åŒÊÚ/ËkVÐ±ÜøîÊjK¶Ãâ•ÖòÚ?‹b¼­}ª»=/k²Æe©oû‰OÒ Úv:÷™¹”sÙN•Hý#Æ%göˆû¶I9UÚJGS7˜yÓŠ|¶³S*ÍW…æš‚ÅÑ>Ëâ¨ÇÇðƒ¢ U‚+Фñ0C}£…¸RYEk($sËKðZà*Z`·þªôNe³j™j&·±ÀjØŸÕa<ãdW|ÙTwºHMXë°üƶ*?$°íj¡ŠÄÁØu“x ¢a夬<»Ê«‹IP•fX.6Ÿî°¶¸æc_µXJú*–Š;DË!@uè(žÃ¬*̆Õ0Šáy¸à'Z„?É ð…%³æT“ᣚK[¡ xÙï<'kȯcXݧ®Ê‡÷i¢ú ¾À;˜ û”®òÒ_˜›Ïç“X‚x .ÒJúݰ˜Š¡ZøŽ¥a$ú—5ã=p¬ÕêÁD6²É/ØÿöŽbç±}à/õŽ÷pÀC´)â5ÅEz&Õ§b˜ ’já}Š£SØ’ž«>HØÞcþ„­cU!DwåtÓa¹*B#ë"å‚êj/ø!‘™ø _³Ê¸Ÿîó[8 ~¨Âf´œkVQ/­ê¶§ï¬kÀ M©fâÎú°±¬;ûðCÃx9²²ð¾ÀOl ¤DÕO ´&Élôˆ^°wqk³Õ‰ÍnKÁ±ñ'îÔÉ(ZÐ7&˜j®}ÝëS´'1cmÚ@¿ÈѺŒ4ž8À{YÜjl;õ ¬¹uLJ5þ> ÏÑJ4Õ”VV{óð?Ñ!£"›:ú`6u ÊšûüÜùÃõ­“ÿ^¦BÁ£Ê}$ëݘmÙ§å]2;XµíuøTÿÌl‘ÑœC³BeèQò-6ÒìÚžþ['E|ž~žÉŒx¼áZoœ€¾X0¼#X'ð[¸èzSðÝI£©öSClÉúKÌ=çJcoc¬÷Ô ·Ùöò3Ÿÿ U6040š‡¦…l´*#!pÓJÐWÛkC ¾ÆA¸»ˆð-ÔFv²ô‚^ÁQÑöÍÖÊl©-ÖæmÃ0g„Û[«1æë¦O7Z9¦ÚNd9–m¼™ü'K ® ކºÐÛ^P]‡öä‚EÐÀü[[ÌÚ¨&æÚÀ¹`8­ò§§ÉÃTiëšf„ú*ˆ{Ö™¨AÐßökÄ wÌ4n Í]Ò‘—%Ù†ÿãßU/ög1oÉ7°"[²³°RÝ`ŒJó…Ô‡½eÙX¶‡±V„Â’<–5TõlGôᬳ‹y=n2?D i¥&Ë«á–ÖDÖ^´(Ѫ…_#Ð3;â/޶BY‡hÙrÎÓj¹ÕÖ…Ÿó{×h;|åÃGÓ^ùó™Mä@Íâ|¥­€0µ'­âìfðmæê'³%<†ÒVM¬Í¶Ҭ<¿ª•ƒስÝÊMùxÍàÛ¦–[uC¯qþUÏ«=ÐrÐ&áØÆŸ#º+ˆÛ4ÙV .°ñáÇò¢–î/'+jÝM›j®7 ß eâ«ôߟká sBz 5ÈÞ8°[ܵ Õµ]Õƒ¸\«wÆr†i»mÜÊÖE[èðiE`˜ŽÂzc(–ðÇxÞìo1åUNó²t±.ê*;Ø»g8{EtŒÈì½ÉQQí ħïð߯ÇQþ´C÷GüÆû:§Ñ µÿTs gdýBÖŸs´wov5ÕøGóFôY_ï˜\™«]ë3ò¤/…ç2‡UÙfÑYT|‚Ê2x‹·’wî2ªÛ“´Lí:”ûÍ:þÞò/àcÁè6üf®” ‘óªÙ)*D5×þýÁžaQÈËÖÁ7"µÐ¼/:hóä,F”a( ò3`»x;¼(—©ª¬S¨¨,E‰xXKŠÌ©%E4Œ:Ë:¹êQGm¥„Az3ö[¨UgƒÅãPKi?"àßj±q[ËE{Äl\¥ŒÇ<·¬j e6øŒð®#‚5“´œl‹aãDºUJÅQó Tò×-pŒúAUÁÂH’n1ÆÈ$,Œ¬; µµÿ+ä^ð~6`7ö .c+v–}‚74ïÓ)¸Q€ìüAµ¨%ê%éþPÐÄ|Éš³tƒFAŒ•õq=ÊM—X9@ i®…‰0ŸnÑPÅb¼Nƒá®zm!½ÀÍð ßÂ{µVÍcŒÏRT:œ°z³òø_ ~X ›p%œÇŸa$íRka5¢B0ÈÓ4*«“PZÀcj µºJ—І ª‹Ý`¿šÂaœzMûphø/ Ãb¸DPOUR±Ð€&«•€Ø!Pãh4 ÄwرAðîàa¸ÂJBNøo¡ÐÖšG6¨Õ9pcÖ ‡³X˜N¥Á{jŽGq8”M!q/ï‚ùq3^Vºu=|„ÆÀZÓR…ñÕp|FGQ‡rlÃyx J±½¢9>cÓ°¾†ál.=ÃvVñÓÌtë˜jkþÊû£§é£ÎÂÖBSñ"ûƒúSU€]QÅY¬¬³`2ˉ ñ½ÈÍÓÙqr’ŽÂ1Zk)hßåqÕÓnh_µü4žÒ=Ð*ãLh¬ö†WQ MbÛñ¸)T‡ÁpV³mtú°‹…yت [y Xgåþ?˜A—Y]¼§Nq'÷Ñ?b?ÿ ê8½œ²B¡-jVøhðAd×\ícÖ‹Îe<óÇw_QœéM J5*ÐC–Môó19³þÐAGï ã˜-ŽoÕU|ýÝšû•TáÀÛP ÷Ç2ªkde6sªþE{ƒŸœ‹ŒzÍp=ùgøÚ¤?5š~ÚºžâÝøf¾f9Esÿ/w½\ë]~û}#YB½ÑãèoD‰ö¢¶³òµ>^ü}ƒõ‘¹Ï¨,ޤöM‰ò¹ù~9×~_¿d¾2/$¥hk¾'¤ÄøÆë±ïíß@\Ð7ÝõÃ1‡\œWµI"‡Í§W»ü}eRr¥Vÿ|5£Hø›uƒî`NVF»eÆ«dµÃÙK¬—dÛU6µ'ÜU)sƒµÇ¼Ä"‚µƒÌœÚîÜQO—\]cgøj¦dDZá¹IË3sÛ–U\£ÍÞ3{3õÈîÇQ°Ñ“?¸)sº7YZ W!—øšÊ>×׊ÂP¹-|Ü%/‡â!/Ë /Õ_°=%ý”vÉô…sß›wùï¡_l²PTOsV¸¦\ùÆuÔÖÏœ`¶¢Ur.í†Í¡r$° ê.]Âä?óCâú}1œ¢Š„P‡Z;±–¥l•íÚ8{×Ûljæt7ÃìNÜ"ëxï³Å쨿,®äÓðˆ‘UYf¿/ì¶ û¹  IDAT >Ô1œWR}bzgÕÓ-æHž2¸Í§çGHŠÊ<ï¤ZÙeîJî›~™kdÍ@´U‹ …pÌ8ŽRH›m³½ƒ¨ßð4+¬9ZÌ>)¨/‡Æ2MÖ‚XhNÿJT©r¤Õ‘ò©©âïíþeçÿºyµkè‘Ìq–曈¢ñIoSÓ|Å=s’·ïjã?æob¾´XvJRù¨œ˜£0Û5Í2hü‡è˵k8èٹƊs7›Œy©»ø;AN¾+ã>6 š«Å¼<„ùì ¶„ñ¬¦(«0Ê97Úw:Æ;ÉîµizaÇ ýƒXáÞf-2vEGécª®¡¶±ŽÂÚ-çãè“QÓœ‹"“bŸÛNè£xÑš9ØNQͶ3j…>×Õ)ëBã‡"˜‘"@•„&VûÔßÃ-ýk. Æû©§ÁùÎx(´-y0Æ*'‘êà_‘´Þlè‹JI2wXm3ݬ¿gÑnãc~†qvGh“u›z`.üÝzÈoòse• ¯ú·p‚5F;m]²òÁó„Z­®É–ÔHLe#x¢½œþÐøánëkœvŒã§øs‡ÏxÁÈ…-Ä‘ ÃX[l'>°^"ˆ>U_ÝЦYSÅp Êa옶Ì9-äÝí1HlÆ^ìËOask¬±ŠÁ>-Mö 5¸™îà^lmÞ°¦áÑ@¿-¼8ómZoÏs¡Úňx½žÀ:ü […¿ÁJ<ÀÎCsÜOp Õ€…P…Vò±ÔÖ1E…`€Þx™n°[l5Â&˜*Neá8yá&­ag±¬ÂO }Uªƒu)þM#á3[A-p À ˜ ¾bú~¨\” _˪ÊKÔ#X é;‹Àwr n‚5t\½ &øFõSa5‡8„u1fâ)ÜÁjÑ,Žñ”S鬸 çR%6‘V±X¶öây8 uØš¡¢(E½4o˜kÌ+vféP^¶A!–c9\‡Äm˜ê±Fl þàÃ0’§AQ¨ /èÛŠYèÛ&FB´±ð+€x8§æ ]ü¿Ð!XϲñÎÌ«—Áhˆæ7U+ù!|F.RšY vòÖ*u Š˜³á?¸D˱óˆ%²*®bYÁ »Å>(€Ëy^€+¡.b—Ôïø”RÛà=‚šÔ>Ø^ Ãý²ƒ!7k*Øa^ö”MÞím’~Ý*aU¥\ú&ÿ3ƒz@ºq-ªuÜ“ø‚YJ¹v»´Ã®ÃQzÔ–_{îȬî?ÆÏ`UkDÔfw_Û|ö‚m¦ l;NGµîUÓ c¿ý@°{ð•5"52£–ÕzÈ,ªƒÓæJ3Ç9W\£ã¬ˆs¶íÎöìlœ6K+Âߢó@­©1ÖÕ^Ø–1›ØËFæ’wµEÚ–Sk$vP<Œ¦ŒÐíPk_ŽðJ Y—ÍÕ¼y„+ªºý“ñÄQÀ>ÚX§ä‹d+µ“Ò§¦uö®ÿšñ={Òh¶SEmÚ%‰ÝèÄl‡ñ\[®oAÒÔÏÆI–Šk´ŠðíRÕ¨¥¹Ì¨`oiø"ªdÝ‘å«8(æÚ?ú?fœUÄh÷r¾-²PtïØV¥¢žFt4¶Ex$ó9jº’Y÷ÃHaå4‹›KaŠWë­á?­\©Vb%6ŠaqqPóѯV÷PßÀµ´ÒÉ›’߆‡>xnɳ‡º¥}!ö§õú豸‹×þ wWÊ\mFIͺ§R)ƒ¶ÍpÔ0^ò;¼1,—ËÂf[•duÙH6hE\?G?Ž3Ôz}¦ë°‘ÝÝ-k!MˆGL †RG ÉÏ‘©¥«>]vÿdÜÓò¹Û˜CÅZë ¦ëuÍlnGsÛ«,/cÿJè©»¢ÿ—Õç:;=ê’ì k¬™T‰–ÒV²‰-FK«·ì•`¯lìhtÔ›Èvü¡þŸm¥³oÔùl‹ì{íÍ\gØòƒŸ*(¿Ù¤ª+sIŸÜ¤j³’4YÏà}]-*óxUö‰U6WÈ¥Ö…ÔK> .üaûÒökëäQ_§–T›ÕRØÈwÛ3ø}Vs‡"ñ¼:ï}Éɘ”Ù²¢Œñ Eñs8@u±U5íµÃì´ŠRUjªÅ*™¦&øŽ…ZБ%°þðGò8Ì.vÀ(‡?ÓGü ádÑB|1²êYÝ3‘®.i«èØë>çjcŸé\àìïª)Ö²ª<[ª9¡ç´8T6cT¤¬øÎ8ê, ΣN§ë/ígþŸü—[5|­äÀðü@[³Q =Ð.ð*mjÚ3ùο4P—Zóƒ™ê‘YÎWGºBÝèb•¼­ÍÖ×Ì«æ\kAz[_yù6Ã盫vÓHëY°»¼ ·úŸÂçŒðmë”X /y"Ž–mÕb¶NÞ7»SçÍXÿ™ H;éûdî•ï€&èÓ±5Ø“Çc5v †²|X™D¤ñiôTuŲjªÎVPe5í¦ÙlœÊ˺±ºrU¥ätu¥:L.œF#àþŠÿ@œÀl4އã8‹jÒp¨õ°5Ö‡Á;`îÅ_é͇jÔŽJã|€¯pÌÆòTžú²“PUm„·PA½¡rðw‚ƒÚ²‰Ø¦ã-œ‰ì5…l•†«P +Acš‰GpÄÃeú¼†Lˆ‡»—ÚÒ˜LEèúW=´6ÊϦÓ_Üj!ÇaC\C&F±M0FâZ~‚FÑfh'¦°úP—-f)¬ Ó[»¡=$°b"žÃé8þSÓ°?m¥_à+idªÇLðbø _ÄZˆHöµÂ†fXæ m…‚ü¥l«ºã0«(t¡?T2hx +ñoHuнð<~aϨ”étž™…i ]Sxü‚mÇ| ^ÅN¢DÂK¨@9h>†Ãø¶ —AVôAu—¼¬#»ÇÒU›þbÄ*ÃrÆa"܇ùx‡uÂü¬±V‹ÿÝ´-Xj²m|?B#)Ý\¼¹äµp=µ—ö±‡ôž¤vn@2¾Ç¬2tÅ.8ºÂ¬Ææ³ºØ¢ñ+o›Ù7>“ç D+^ €'x•Gši™~§ÎßÍ=½Ù¿.úák‘ùÙ¬e̯ÿl,¢XL!ûFkµ}©íGìÆè†®œ}£cAÎú;£j±…¼‡Ó~Nþ mUw¹%f}ܘl5ØwqÜf¨ ’ã:Y=¼"£•æÖ²ÉÿÓŠ„|þvtv±Ê¢¸#WÄ}G9˜É·Ñ]œíœk﫵aŸø+žS:Î2S÷U?1Ö>˵“´ãzÏPG2¿Ñß2Ä’m Ž›îê"Þ)"‚k´^âµMwÖˆ©¯=±¾¾W‹æU´¿ôQÆ-}¢ÞÔ(æ9a•ÃâÞÁ)qé)fØ*a®cPñáršêÍ×ÈÊ´:èÜ`á~äh'âxEìNñ¾UÅ\*™–®¥ˆ_Ù8^A³¼ERÒzr hõõSŽWî³¥ßØNø*™E 3ýKØy¨BlÞ£&x‹Æ[ó̳¡7b¸Î¬ê|µƒ3ùg6€­ –¶çò[«´ýCx®ˆ§â‰s—ù–ºa›àˆÙF_­ןÉã­Á+V‡ÐQ:Éóh†ÒÑö‡RÍ’që$sHø 3O(àûM{,¯¹x]8,œÂCͯ]~ÉaMs8«j¾Ñ6RÿÊ-Ž›/’·ûêgÔÑÆ˜e §{›ÀI‰2÷¹vI¼l+6Žn«÷ÔJºm“ë˜{°í¯Äó³§*ã¤mÖ!>…ÆG¶Ü`Õ`<¦9Æ kš6ÚŸåÍŸwÙf¶€?Pžó꤭Òw#<½¸Åµ™?£ô+úvzºböŒRSç¡ü#ýsy1c›¨"éJáÐ3þÞZ1ŠŒó•åü&ÿ$m ö£ NS)}4œ +íÌ`_Cà H·ê‰X†Öðž$öÏà`ûš`MZO­Ø]è‰÷Xqoˆi¬®nÈ×èµÑ;üWØ¥`?ì‚Êp‘Zb^Z ^–DAjÄ‹âfqRgñæCN6nÒ[H"F€€Fÿà˜ ½PƒÅ,NQ}Ф’ÐžÃœF—0ASøn8‹{ Î –Â( ÅØ&vˆÔVÑuq@l º˜ãMÚC—Ä0ºFíè3ï ßh"N¥Ü”‚«0™ŸFAk Uø æ ?„Ótê µa +ø÷³b‰‘Ô‹õ º`&6‡–8“þM  î§pMŒc7Ù+ÚËï³cb ++ϹXƒÔÀxT:Ì»ÃR|‹Rê'ñ4T….ø ¢! ;â8B‰ŒO¨.xàŒ¦úÖl@((ºY… %0Y”`·mìÏ`…„!†Ð5i$¼´Á)ÍûX­VtÏc$kJwé6„tSšlzÍyô‘mgƒ`;ïÈîQ,½ ã(¹-d§8‘I·E/3ÁÜKDuÍ+t]v±œ@žIm`2o€/˜A«áþCsà†Ó5¸EWÍì´2HÀIÖâ¡›†&=•hzX~>T|Á" ®’˜ÞûéEÅ?rÛWÛ@ãûuV5×›œ Ь,±Úÿ”ú&3V9 ߃WÕ«ÊŸÎRWV:H9ÙY¶Ý1ؾÍq@™¶Îî²·u¯q4qõ´ù—d…‡>§¾Ï¬a”Ó,#C:…§1><6,KªŸÖ>+ŽoʬŸUR ᣖVIìÕǤÖWÆÊ]r„b¾Å_w5•Â|: W _/}£o7¿A*7xÔàÛY|3'ÙºÊ8Ç8æEÜqŸR“b¦†–[ûâ IkØâ¹àšcŸê(§´t4·pwq-Ûå ¹WJϬÂF)-»VÐn= ­>fñ«òvû6g~ÛÛ¹”-Œ.½ž9‚ž/€eFd5Õ>dµÐfHš-»û~·‚ï"†SJ5'˜oæ5*hIòT©Ì9a6”¥ -´Ln»ÍÑH”Ò—Ò^ù–JÐÁLö.d†ˆ1OÍ}¸Ÿu”cù ‹QcôzÆ"=¿þ—‘Ϭ.{Yž#ª`¬ÿ¹iµ‘fV4š'·Ê™µÏ¿†Oe÷hÎýCPÂÚÚKóYÌ\h–7§P$_Æ.Àn>ܾX颖pGCuüDŸé–m¹}”2É­e‹·Òôh+IßÌ  ¾6tÀ8ãï’¹7±U¨¼ç÷”Æf~ñ33‚ÊãÌGê9Û`ÿ<úlœ‹!ª™wü`œ Lqü£­ •3¾;SÔ5Ô:¾d¶±3LÍ=Úâ2á…Lî´¹í׫ó¸e%„85¯­Íz­Q>¬XhQ0ÒÄó™à¼v•â#.†QS(iNCQ!ø®Ê.ÖPG"Oï¡;­Á÷l,fÏp.ü`« …ZÀ0ì~j‚Q¸˜&áuÈ+ÊC (*fÑ.ð@vŸµÄÛ8—ºÇ›´NÀLðá#˜‹§ =¬„Ÿ|7•'UZ‹è5[M ÓE\÷°6œƒuØ Puè3è­¨FÅÅ56ŸÃ øýà˜H‡Ù4 ŠÂ%:MME]ë˜0ͺӈ³æYÐ VÑž…±"+…y™‡Vê Ÿ0’z@'öÌ:„EØy˜ dÇ©¸'ðK,…MÁ{x-³ÎÅ¢Æ$Âô~ã]hÔ”–Ò\0ÙN¨À¶ˆŠ µ­ Òx™MÇ*Ø–µãËX<Öb XcŸp‰4ƒ†S8½‡¥ôdÖíì;€³Ø›69#Ä\£N—–ñÊ^ö’Ý—ç@yÇ›P šÂð! Äh¢…Õ@†ÖÔ>àS¯0 ¨N+p>ÜžPr‰ÂÐ/Ð'ØA— èk…›G ŠÕß4̆f2¦å`J ù)fÇ>X ?ÁXÈÎâaÕ¥­TRg« ý$Ÿ0ÙwI¡•Lãyá L-ÃeâZvÌãÊëhÃfð³,.« »¾2«~pˆ){ž…®™뮞h”ô ó𤚩#ÛlÏãêëúǽØÙÏ9€ÝÇrz­à®à²à—Á‹Á¿¤ò¢Y ›¹G§M3ŸhÿêaZÙÀ¹ôòGXXµ³»¹kwFaOJÆmm$X'•6Òa9¿-I]›q7IfCZ¡]4C4ÐÚoõv ´7J[yBÛõóÒP[_9I^.µOp,ˆQ#'ÛÖÙ‡ó§<·üMú 6A?\(ÇÉi ‘7Šé|«@6s]¨¿n×Þ7W‡®ûþôΔÛr;¥¶øU•oÊ{•-ØÊš:Zxã=ždÄü’ßs/ÝÌlökLÊD}#š;fØëª3` Ë#¦EÔçš8J²q¨²Í2‚ðX›¹ZD\Ä×XPîgUm­[Êå¹ò‡U˪ÊÞâWqœÍ¥ºhƬ½üƒ/gyé05ÐÎøšt{ =–ö÷o³4½Ÿ©è9õþy%~­ù6=åÔª¿2Ì×W?´R)çŠSÑÇÝÈéâõi•Y4ÐÄ+gö”8;Ê…¥DBD‚íí­}ª¿7h\Nô,òtÕž„"@Â^ü—4J¹!—¶2ÃfúCݬ¹V/+?î‚%|™²‚·tÔ_V:þ]äÆœ— ÕŽ¸W8Ûù°2FòS‘&ÔÀŽø‡i·šÀ¼ào‘í} åöü–ºéç)oƾ‹Èè°çÝZÏδrž‘,˪À/Ê{¥Íx)R>–Wœ§ü¶lFAëŽ\Åèjô ÖðíLà]•åÏÚè›íI FëCázœµÖÚjM¦eˆk|kceØ’äÚÇHûvñζÄ%l#wÜíaöÙ¶'|›ô·C€/V*ëœ=Ü£³;†EvÎ;D]çj‘[’žÙÂííñ¼úKîÀzÚëÄþ”ÃÝU³µæ–‹EN°*ò<øÎ(«Ù)ë›øW*¨±Ñ ÊпÁ‹Öt£Gð Y9PÉÓÜèœñ*éTàhÒ™7Ü?äG©gÍCu³N~;iü¥·Ñ7.[õqGÖMÃVYõmâ–úØbì±áóc6:š…Œý[z( ÿ!¥ßíuq©TÁõ›Q]g&+”÷ëᓬM°>Å}¶à­\?Í‘†æ˜ÃJÓÙ¬fì÷×Ôߘ'CŒ*FgM1‡˜—4²¾âNJå¹å)¼ 8¸óZaèb0œƒìP ÁCˆ 5Eƒ?…ÙC±’NâgÚIÓq ¶cÅf@8 e+è V†èÉnÁ:R(3á–6Át8~¨€ÿ±lI5Ù ˜c:XW Y±l0|#NSÅ^p@yë’h yÍ—dG¡ÚЋ¥2Ðç€Ex€/' 9v¥ÃxŒ^ÑSšAï( £ñ´Ö³ ÈÂØ=ÜÎþ¦ÐsÃ(jgØ}h §`/•‡‰¸ ÖÐ-J ý,NÌ%®' vâ:G‹°.¥ŠTO ²•¹¡Š™‹eÂ<ËbÃi'Ș ÎãgNãW§Spv‰ÆÖ! «N—Ä/ôK…0ÃÊdå?m½l ]"vc\žørÅÜgø//æÉÊ™?öIøu÷‰V•àO]¾i¾‹ÚC2›‰/ðÌš nÛ(^‹5åo¤R¦­‚í«ý±qIË%áX˜„¤‹ü«î^ÞʵÛ]>"%OÕ€GTˆÌ‘ÑÍóú›y¨lV"í­¿µsfuÿBàrp¹R¨Kà‘·‡¶>Z&äOÙIÙƒ,”“ÈÒ›‹Ì¾Â•ðyè¶+›q>}~JsOÅ´·iÕøë‡?Ñ9Êv‚«öîÎ>fasžíg«„„¶½,úôã¯}_›½‰T‹:Tg ·\ìïòçúUtaiç1þ˜êT+ˆÖ±Ç˜ÇúcH<Ãz,’øYy;ìcqR4«mݦ²Æ%=ʸúϵgŠ«OÜÙðɶ¥ÎÎòó41JÓ•±R²:Y­ÇFªyqSv\QþÇõtØevË6$ü¥Ò!¼OÌÅç^á(¡´ ßíºeUÁûvÍH¥ì¬—¤é¼3oi|cüõR{~.ôiaZ³ÄŸ[hý‚Cϱ‡4×6_þî.’:ØûÚ „/ÙŸ^ökzçÎÛ1GGKÇRµ¯?Ñÿ.#1}dfm-¿¤o”žS[¢ßÓ%ñ…-óï5¿JUͼodaɰ¯‹È¡æpÿMÑš×*Q’ätåálœmŠVÌ»'ø õCÒgßÑ_Û~õËØ|©ýn&HßyPR“£bLÓG›wxã_#ŸY¸øêÏn– ÏLÅT¢Ü ¥,G|¸ÕÁº«T¶™oD‚ô»­¿moÖÎvwÒ¬aéŠü––"p'¶“fX×Á!ÅK<^>¨ÞR ª[@Æ–â°ù6XÍ÷Îr™²éÅ|ì#l5/§ôQóêS¤Çâ¹8€óq5SÄSÑÙðM+»®^°p>UjíºaKtæ±ÍR;[uh3v¢¿‚Ù‚„ñÁÞB¾}!%dyŸgôÓrg­3 û›øöyúR}ÌËçIëù'å9ùl^Šï`ƒ1M*ÇZ~öu3ƒuQ }”;X Vš³ql.?mé0œå…¥¹R†4­³W¦n¼‡2“_ã!¸.ÉjN×(Ûoa·³ÅÙ…ßÍÞM-éxb/̳)‹é¼ñP ÒPq[q•µ5#YoJàY$ûÊcj¦!Õ±6iŠQ]Ëéß&†‰ýfk¬TÄföÀþ»Yðn°kÁt%F"íµUOɧp]Úd«ªŽ—7†p|“«ªƒoTÜJ IDAT”…ÊJÃÉk‡/æG#veÛꈋjÓÏöÓ]6[_ü%÷Šø`³¹«UåᎠ¼,q%à*¯/1ÒŸ€ðâX8ÔQLGÌ žò> ìÊÈÌzjþ¢™j+h„9å°´Ãý˜±P r`q¨7±–£Áø>Phð®f üÇoS'8‡ÁQzÇW£Loàk€[á8ƒÒ4ûcy¬ƒ q>UÄÐ ¦bNØ‹£aíçÛÅ0ŒÅ70uåp{ ƒá 5áEè<4fMñžÅ³ð7ì†N´nÀ ø`'øÀK‡a¼„)쎄Pëã>v öÓ^úF»„c¡*-@T? .ì6·ÐšjÖoÔÕðZGh›åB %ȉ‹±ûÜ`Ç5t•©0–¦Ja5±ûú0‰7°²<.À i8+Ì>`ch›è9ŸÇSØø »°ôŠ2¤›´ ¾IÈVaQ8.ùY¸™ ÊSO\Žs /þàËØny u“îòAÔ ¾ÓXœï„3)I¸¡ ô„upÖ›±¼̶Ç¡Sy‹O¡€º‹|bx ûc2,‚ßÌ(aœQ‚ýÁFã,‹ÙÚOWp–gר\ˆ}a+rüC´cSy'úb}‚ÍÖL–w²Tg©yhŒ5XT2˜ÛðM¤óêÁ"ûð,>dça4›Å2  |§Eð \´ÒX*¿ £9ô”MÞŒà7•]R ”xEélÜ2çTò$Ä Ï‘–-)"NJ ï#÷R<0–v™Cüä fþ“Zþ[ Ïe óxXBüÅø£1m¢Ò#DW,ãléDÌk]4¦˜mÌ Z¿ÐZu 2ZÎÄx¬*¯ÛÈçå­¢dI—ÒÆzædK/œyÎWÒž=âpÌw,)}§¼0R›eü´n‰3¥Q"Èkoå˜dv£<¬·}UØxwçO£¼åµÎyóhkРI+Ö«Eä_Ò'e¶¼Ê\jÕ'‡Îû6¤]f§Í†™–4ˆå³b™¶#aeq¢¥ke~þUÔs2#V^å«}«ZX‘œ/\ÿæ¤|› ÝR‹Ë§Õ•z§`£`mw°wèŽ2ZjÊn:n;~È¿XkX«su–RŸ×d åHÌO÷-'¯kþODš.Õa¯ikàhŠÈ-ŸTÎÒ{áˬªþãØåÞè²lyX½T0¿ç Š<ü¸( í實¤_XCòÙ†±• —’]s(&—hÊó¹+àlõ{d†´HIa›}›±Ò7Þ3ÔßH«© ÑZjÛ´ú$¥¨ò–•—I=œSmm£>d_c¯ë¼¬hî…¹Ârا¸ç…¯–‹È?p#`©†I)¬·õšâ¡^ƒ’úW$V ªñßeE*aå×ö›…äœÍ]_l/x×°-]¬a3Ô3ŽÖ‘Õò<‘æÊc­4[ çcÑܬküªû¬[VfÄäˆüÃ'”‚Ža³ Ï›3,[DbD'^‰ ÝÌ—šÈkAgÆvvµYÚ6C8Rƒ=ü§5O(ÃóõW‡P­P“ÀcùœëOµ¢#ä¸åÜ!}¡ÚZ–¼XîáX-dÓ Šÿ¡TCïhö·.Hs >UW²Z?¾nsq+sJ5à5kL_à(?Íæ3?ûÄŽ©ÝYq,•!’¢ï ‘ûèhN xõ¡Zž½_¨¦šê­ÏjQ>ë3ØÓæùB´(³YæÖŸÓ­Zzú3ª&×v*Öe+Éc4}ó…cA¾½ÆR¥¹³¡9’×ãŠñR†0b1~©»¬+”iý2º@¤îT¨y{)“µÆ1R7l³h†Ø ÚñRvÞKë±’ci š=ožG¡ÙæzÓ%î²cJšº‹ýÉðujÎx§”SNÀZЉ7Jê¡×÷ õø©XhxÊ˯—¡t™¦K×á»K÷øKþ‰®Z Z9;›át˜50*yjyþ“—aø·âJMev„_ž)¶ýÎ*J÷Øa¶ˆ%B¥(ï%ZÙ;KCáŽDØPž¥‘gðÍÖ%kµÜ$⵬jgl)¯S'ò§´À<.bà!›ùItÀD¬æþd¹©“û‘öÙ¨`ë(5± Êù¬¢%I­åì“ôž¶cO5_+S!ǰ;E²•ÈW`k³{Œ>VÆÃt68e²9Ô³Ã<ú(Š~Xƒ-‚DHí±,¡8V”¼ï¨,¤BC˜ 1…• 2,€Ü‚&Â#Ü(A Ì ë° ïN—E.Œ¡ê´GBSlŽi0—v.°‡§µ°—h­máxh=1ì%fÀU¨p0Ì£±ì"®§LZ 6˜NúÃÐÀšT;‚* Á/è&ì¡–´ˆ~§AƒeàëÆ3 'ŸÄJÒcÑÖýØŒ­i9\Ã8 —Që=ÌÆ ò$öæá)vŠÐ1:÷1 Á_@l uƒCÒ2ZíÁ· “fAQ ñÅlø4Ü%æà,Ȱ^áQ*&âÀ]å·”m| ËÉ*š·)‰ šqb®XKƒØ€ÉÌÄû¢&¤§b$íÁŽJJ³ÈÉ#X¬˜O¹p[E÷i4ä£L6‹ÆàQØnua·ØŸR„¸#V²×ÌÉæâ!ˆŸ¨ «ÄnS‚( ž‚oñ-^Â1L“R°0%±œ8 RΙ€˜Šq.µýÄX‚!¶Ž¢&•€fp³(Ø#&Šñ(›i¬=[+t”Á Ø96Ò4¡$ŒDù3¦©:æÆ¼¨(Å¥7ªé_i-¶ÕL¯É‚–ÚÉ9—¯ë+’)`åÎÚ¨ÿâ• ·±^.ÌÎJÍÿÙ*«ílõùmåŽò*þòÂã‹‘&º&+\Zi}6–w„Zë ”aò.¥«¯™1npS¹&ï—¯…Mvß•»…Ù£·Úã©bØÈ©×Ðre%¥-ÒV¿&[Yý3oe]’RåVÕ3J:ÃÜõÄ`8Îö‰ ó O`ŠÒ‡süîh‹ƒí—•ÏÑwÍgæ0~Ô—ß{YlòŽòÎÿ™7pÀw^|TšF?°÷à©ê%[{µ¤kµ½Y!”ÇJ”&»ug-ê? ˆ?ÂwÈ;I.ÍšHc ª òñ¬œJ=vQp¬/µh).„Jˆ}vÓU‚9¤h¥ÿdZb³1C”ñ½a3aÞ³j‘¡K§Í÷ºùÿY]QãBÏ]å!ΡztÈftÀž¢y àëéÿèÚìú Ö“»J{£æqK)*w’vÚIÔ•­êQgE¸_.ÿ^Û?žw)Uü‡ÄŸÆ1z[!ã¸r;ÿ”–»r«ÓÂÿŠô9ªØ8:;-ÖYùÊžIa¼,·%Ðlö7´°Ù\‡tCŸ#nÒmë`0Y3ƒ'¼ºôP9¶ÐýÌmØ3bs©°·tO.î:-÷ñ•²å—Ë)³lKÜWyey™z#®…–x«5²éE3]ê$Åñ¾HÄU)JSw±¶xëÍSê]Ûé&ï×À`h*¿WJ²q²Êÿƒü0Õ(é}ñ9½/L”Z;‹â±é¾°Ü|d Óõ‘F|h 5Ëãð}yûR âOeì;] Ù é¶4L´Ÿ%Íxff£M¡îâ™ùÅÿ3ëhú華ñÁæv g[Ô÷Ê[q‘$Xf4í-¸®_!;öæWÌ ¤¨MÙ*–*µ·çpî´ sv›¹OùJùp‚¿w`µ?ï/OÆË%íUêþD„]Ò`9ÿ‰˜Ÿí/[mGA÷iŸbH+ØXå,¯ØXáiLõ]ö=ƒ2~ëy›eÅged= ,ÊšìW´HoÙàCÿJ}·4UÛ}©£|B-¯°cMö†Y"Û'Yo©xX¹ö¥v 0Æúld™¿[…`¶µÝІR­’T¢`VE.÷‚3°•][4÷˜o±{Èî1?N“òòK8–°v¬‰Ö5l™ÝãÜmÛnkh[œý±qî2ŽŽòjõ@ø"ÛZ|¡ìæ˜-Í6S¨-L/â”Þ:ãY¦_“qGøÈ±­sl‹<9Wýìîâx(ýŽÌš‡{øw‡K¬'”K+_q¤Ó]–GZ-ê‰å–'ë’wIÆ‚´—Éo2ë¤ÑÄ|`[éô¸Ö8熽Šz«• MÍtíEè¹Êòˆfe«>5•Ò)s1—¤,œèk¡MÓêñóÔQ¹À®¸ÿpæ„-EmÓ“UÌ;"8;°%ôw°‹*d‰r$«?›¥60Y7ùzLKƒo};2Ф.䤱R¯ˆUQMcÕ0#zJ¼Ç½‘înõÍ p¥|Ø9ιÖéc‚KÙ4õ¢”e9\b¥YÝ,bÞ·f5hÈ¿ÚÚb)f7Άòûæ…Zé7à…mΆڒ®tæÓpÁ'h/ýN‚¥ð¸ ÇãZÌóðÿÌYK)ZžÏ¤|¼Gy)Þæ±T\©®ì²} $ýŒuU›Ÿñ!½,½¤2°Ã>²‹GŠ’Ý9XAû6Žá¹¢EÌqoŒhèî‚7ÙntãCÉÀ0Oáä–çdMϺ—Õ839ƒ¥¾Mõ?Ìòy­ôšþŠL—î‡Ä‹óÌ9-¢Nd¿x=zƒ²>®¶‹›a'í#ì³G\e‰•Òë›(òÁ ßožBi=EMk¶§Y(ËX,ª{]ØÄ٠ϪkÜ[¥¾jY÷9ÐÀE†q4tÇ_Ê?5+=©‚±:éûhÈú3ë¥UǺbæÅûV.í;ž¶:sÀ9k4>¡LáRSå×6–å:5nU¦€³¹£‘#"egnkØ3Oµ5tÙ“Íëò=òtHk›ÑÍ܉™P\½!u–*¨#kÈÉËÍÆ½)ÓYSX¥;؉i²a{â®N²qLµ·P³Ií°ûWáŸb–aÓ¨4^‡–üƒù—5—õÓטc´ º¥Ÿ†C&ZËås¶òð5N7ödNÛOÅÖÈÛX^Èö°0§ÏºheãÀþ”c•òêÌÈ79Rl;¢žä›©žuµŒ.h 㾿«µbq >VŠÊç”ÆÜÏ_ªé¸ŠßrŽ•îÐaû€Ðsg¨»o±‘ îòÔ•ÞËÅwkÖÅpÖJS7ò ÔUþ›`>ë mgݵ¢4 ÓNcyÁÐGó…|Z<ÃSÊY9J-§\UþR¦ñœAG<®ÝômðWI¹“Ö m¾œ¶Ëø ·à`©vc[”í—y2š8ÍÇÓ,;là Y.ø›WÇHx…ƒ K³–M¥ï̤ùðÒ 8 }a<£è K`öƒHÁ/ø Ã!÷áJŒƒÉðšmǧ`•ÄZ’a-„;´Ÿ¢‹R;œ"ªâYìFk` ân„Y‡:ÀYôbSªÇz@g_rQ5¸EÃöBq¸ÍŠà~j^i(5€hþ…1†?à)t†¡„Mt c¡;ƒ,ºŠsy9ŠeOy”x ©!ý¤ìô7kD*æ¢üV³*Ý1óZ¡1<%‚l'½90Az%V“U'œ¦ëì+ ³'œçéò©2=Í «Ä°¹§ÔDI3þ¶Në=‚§=/¶ÎRÓVÿ<¹h‰m¶9ØJ¤§|?â<ämé±~ Â*V\P–ªIG¬ÂtU˜P‹€xý•º f\ÐüõS~é¹µîøàž=2gX¸Z]žÃ×™,ùeòŒd# vô%Šãœ¨÷Xú­àp( ›Û™Leµ)YûÓ#|6QË|Žb³ÝŒ7"ŦäÊ'bðˆzBn.UQaK\a~Äu¬µ4Í8i;Üæx¨4Q—ÛþbR?G›À6ý~ѳt—RB¤‹ê¢8?¥|«MðeÈ4òû[k»­éÆ65ôÜ¿Ðo(3¥ ¬®}@Ø%ç1ùú^–ýü ¦á}¬™<Ž• .2Q¹mÇ‚Ò å 7¯™ÍÏõÐOÏÀi£Z(jíßë+(Ú'F©»¢bÝgä0õ@¸ÇÑ™_æí±+êi|éð:$wWøÝúáý©ÝH¹˜86óK*KHô®Èzo%d¬ñ\ ½ võVÕË ÅuDy_rôÏó9û¨°ùQ¶ðœÙ—F9•"î5ò`㜳í¬ãŽu&àK_„gFÒý´sIµ’“~<þÚé;èi†—vÊ•í‡ãã^eWDSµ’R3j!žæíIøšÕå-­rzUm[àßL¯aƘSÕ²Ölq›ßågi¢ñˆÉpO_$ï’K*È.ª³kÜR“ð‹D«1æÃHx/^Ñ XYV3°‹fþ­úýÐS´ÿg¨Ÿ8*Û#]ª?<ÜÿžEó“f²RNΔkH½äƒ¶}R‹Èdeµ‡ÍÍEŠÓ•ÖŸWUs¹šYSC/ƒÍqé=4 ÄzfôóTrâyë¼¶-À?ýã#(Õ W¾¢—êÓ!™Íôó),—âoö†Æ°ì¼”<2ë¹^μZØì˜õÜ#iåC­¥d`oél[`-¿ÎÏYv ô®¡Ëþ"ö]úò°¼á°.n â¸2¥ã|õ„âP‡‹X:/¹ŒSŠSþklEäœÒ‘Gt²?TÚ²FV²³½MQ+Û°êW½ Ò:,Õ8¯ætÔ0j:³k±RÙÐ@陾4tѯbAíÑ6R µ³ÛÉJñP‹B'öÊž_)ï(¬Uµ.éçÌËYRòTíwm›¶KtäµíEi¥r¿2Mo¶õu×^d½ñ,5~f>M)WI}f×Ý…m”k"/Ö’JÓyïÏ{Øò‹ ´ÃS]_ ‚lµ¢\òk¹'›Ï Je•a<‡TA‘ÄVÆ|ì*ª›ãBµÅ®°æÒ5+ [§ø¬aiÔkE < 5¼ ¬çq#•£O4”–ÐF±‰š@*}Â… è*Ž€Q¸Ý$à ±‡Fˆó´ 2a>0(Ì6Cp‰YäŸðÎàpÂuX ­ð 0hŒµ™~Ò(Š.,i͇p˜N:T…~b,¢BØ bØì‹3Ðe  »)vRvŠÀ8ô@Eš3À™xG pœKÙ ( ýÈGÄSºÍ†‹(Q™Ú±ëÍò°ÇX ò‚ÜmK¡y8Ò:Ž1pšZ‚ ³p04Âb°{°—˜›‰XØ S`=ÝÁ¼tæÂ”*a€=74¤µìšo¥,þÝz'èI ¬Hø Ñn:N 샠4«°ƒ‚ý1NÑ0äØÄ ‰Ö>¨ŠG9§Êp@¬‚ÙÔŠ‚Â„ÇØ–ž²õê(=…’˜_*MéüÏølÖ„Êò+¶`sþޝƒËÔÚÁ9x/æâfGÂ;xm!ÏA øŒ ̇ÿá8DÓÍ;¢/4 ÇôQUœMáJ* …úb%ô‡ôÚ*ÄOá"žÊÖ±–ôW`–õœecé+Sq ÏÏ3Ù¸dÊO¯X_é of +íb‘þ¨æÎ1ü²Ôz-æÑt}2Ý‚Ž¶&ÃS'xßA 8ßâ½ÁMo“Ô¯Úí>”uzºD4rµŽ$;w”á+a<}1Ÿ„Fí KÂGl‘j“_áAûTG¬ÒÞÐ^ù¾BsäÚªiî‘J —[qºx›<—ã.¥öI;ÎÒ½-ýÏ­†) ¿K,ã+›õ#ðNÚFh€c·³¶<@þBMñ‚Ù&ô ßò¬­¡`à`ýº¹!y5iÆ êå©a›µ•hû0ã7] Mõ/ñ¶NïœUFŸêo¦õÖœFE1€;B'Œz|³’­­8±–…T kwü^ÿXe]!töQ½¶(© Ë _庑—£.bQeŸ NóºùÊ æpœf†=/VU ±åf!Ó©®‰½%mÓª[B3ŸëÓE¾ͬËV+ý_ðé±]t®‡Ì$±?˜Þ…*gìIzf³XMÈ­ˆÜ8¥ }CØH×B\¤§‹âþÃfÀšƒ6­£¹ÊêéªÆÇ˜†xÊðw²fûÌrØÔÜ’à‰Qc:FôSªG¿Ëã˜Õ0òuL÷[¿Íÿ3ÔÏS/Ð"ãŸÌãIM,jlÎL뮥gUK»*JÕ…n@NG©&¯¥Å[?X#WÇv󨫕4ÚyÎ6Äáe#íÕlh ˜Ž«2u£3êX‚ÕÙ(ã«®=òçðOÉèÿójÒwŸái«ùÔî¥"Êi—â>:8Mg¢ÖÞ\¦ï]LEäY,IÚF¯UÍöLMpšëÍýÖ0cî‡J&%è8îÏE´ø¡°;ÿɱR*k”°&ih®d{aké8‰›¯æ%é;^¤^t’±.[ÓõÖ´ŽåRg;'F§ºÈø[ÛaÑ=øõW_ËM?õÂfk<£’ý±«ôTZKª\Tj.׃hûÃ_Ú¼+>kgxSû#±™ƒÍÚÒC©¿o…ŒÑªçÀ©©ô/咽í0@*ˆ Å }—:”73JˆP˜qT\³úa£©h¥±Ü8PŸÄj«;ñŽ|“%KŸøuéŽÜFNQ IuðtC ›|NÍ Üp—×wÛ}Ž9¶ÒeqŸ?1‹ÛÖ-ã¹ÔMëm«‡ñî5Ø:"MáNÑÊÊPgØÚIãh£TJª(º«Ûù=ë±Þ2l…®ëŸÍ{ÁÕŽ1¼¶uÖšáÌf~Òj²Ù°M<°ªÂì(åãxNx(· w»ßëoBNï¦À“À³àw­gæ½PT`…9Uùa”TŽ©ÿ(§ùèÃR û††Žb³¹‹š·Üy³åÈó]ýdûà.@_$Rà âlé.uǯ¶9ô;ß<…—q/k Õ¡5òù78Ãù.x©½†"ž•é dA4ü^±™%¦PGX.¸ÅŽAQqœ>àb¾™*s'¡D¨Çò›=K¢V’²C}¶Ž…y¼ÿA?°!k†k±ìe[©>%K‹»V+¸‡÷Ìo´]rqØ€Ø&‘@Ç ‰8K–x%։͔ß‹úâ;ëÇc.ìÇÊá̽DL³î°+¦Ñ~ì»( zàwÊMÿa?Ú-^I1l<놷1 GÂ|tÂ,lƒX]hÏi šÐ‡SQÑ“`$±?EåÁØ‘R¡%]d¡’UŒ/ò»¼t ÚV!c*½ ³t‘½† Ù¨“øj<…CXCÚëX1\…û˜…GÅ=q²^Ü”·ƒ VˆÏø éñ"cÎI IDATt„h˜'¥‹iídýП¥1‰.ÛKÙÚ³èð¯áùÕAP‹Òƒ•}ræÌšßÆøWb¬>>Œ°æçõúòw[Û®µ¦·úéƒrÆ1WÍëZ69?•Ö/A?3…ö˜Xœ÷e¤ö¢®Z:˜ïìûT“OÅ#øîSiªÅ~Bo¸"µuUnEõ2¯…·‹è£tWûùûdMË Z«S£“þ—íŒÓ¾>^²F{ÌκG¸'ËÃmSÙ?f2ô ÷ ½DÎf3‚Ó…bŒÐ>›5®—·@_ŠúÄ•}>O¬QæW0³5 ZïD}< _”¿£ž)ñ0[6`¤Y&r€{»Sè-BW¥ÁxÇWÑ3ZŸ¬äk¦Ù ÚV¨ Ôg,/ß‹ _©¤çv·>ºƒÁ†Ñlú6‘®²xY‰Á6êtöŽÿ_°)´Ñ·>´Ã<ä[¢Í L¶Æu‚g‚¬ VO‘l Ñ]TÁÄÀÉŒ.¡Ìôhv+a­¡U«Â +á ,Êv×^%ôÝ¿2½ÕÚàCS§Wö_,—rH4ãí•‘Òô¨³öWþr¾U^Ø[`>k«íõÁÅì¨pÂiþ?åŽç_¤_ö>ªOʦ*¡£Z"/Š©_LÓ”¯ÚïYñÆÐà†àòPµ¬Y¿ª„*gUÉš æá9î*}Âj8Ù–…•·§;“ýxÐókmF´v7ð‡§ _ï<Ÿã•zÓQÈ^ Š·}p;Þ‰tó°ð‰}¼U“¡¸Û(cý‡°·jIi½ÜÎvE£=­Ô KQÓÂsæ(,í•ZñÅ¡–Úèàs·(‡¾7w}u¬qåsDGdDžw}w”ÿT§i¿û°GÞãÁ?Ä]í­H”VÈ’ÌrDI.q\+¥]õÇû+xr¤¾0Ö…vmì%¿#÷QO„;#î„°ú1Wýc•v|›ý\°jJC´h¬+Q­êâÖ}Z)Ý’²³·â“T )–>Y~k{ÏÿTi{±YV‡¬ß2/¦>È,⽊“*¤£bœ(ln } öÖîA6ëÍ÷×üŽâ C´•~dϦE.¿ò‘½`ùY ÔÏL‹õo¦n&kw©†VL]Æ*ðq”OŒ¡Ñz¤qLÎ#Y?Œ¯¸1ÔG_(nS;+–­gõYs(>…8q¬ Ê‚epKÔ¤6ø'/)&‰=øI̦HöJám:Á†°Ób)8°4Þ§™ô“ýE¯DìÓ`4\ÄÖ%!–²0–vÀ˜‡™0ob%|…»h -Å8 sá#ªN[ÅE hk ñÿÁ`ÔØÐ{ßK2«·w+î.‹»»»»>î ‹ëb‹»»»CYܵ¥@}:šIòî?^!Ç“àÃð¶á ˆ€›ð7;ˆûèœ`ͨ4Ì“i7 ¡4ÄŠpžº‹ÚPþÃù0Ò žC^¶‰þ§xŒ{0SL`¬(¬PIWX{¸'ÁBRE% Ç`GÜ%° nÁ~ðªÐAÚF]ÅúÂò‹þ4Þ³2||åyñV…l û &‹¥J9ÍU¬ Ö€ç`8h„IØA.Ø ©ŠyÞ3ÞƒÆx‰f°Ü/ÁNZ¦‡lÐÌ¢†à £:\Ç!°BÎCÄ\Þ‘•⹞Ã6qŸRÁ)žÁ7\‚µäá<Ë‚DEð"~ƒ™l=óÀT6 {PèWà?êk1å¤·Ô ¦b/z†W`ä!´²è¨8«°:š¢1V„¶è‰,ž/E•uaåq ¶ò•0ƒÚEMõïv-òÍöO²O÷¯r½ògf-ñ‡›C@wz?·Ëþ•š‡û½¥¿NÉfYn¯_aö#Ìîk±05‚º\"Œ ÈþeÁãî*ŒÙ"¬ò%Û,j%{~Ú¨· ü©ÍtöÏÓF=‰F{ÊP‹Ñ-{!e¹¥bØø¢MÚ‘ä4Òõ—±L²ÄZ·‡t•¯ðkTVoLñCÈÔB1'¢Dù ä勜Yª‚£ìÿÙÒT‡ì…Êa…µg¦5Ðßœ&jPºýºí¾Í¥œd•Øÿí ¼×.*³!Z;m 5´ÎÉ’¾ÀRËÀ¡ò7[Nç û >F~çûrÑÝ^>ÎÃùù¨-!í-Û¤Fš¢õEÔ ©+{ÎÏBGù­åDñró 8l`p-RkB~9?+M!Szaî5æ`¸ÏC7£½9ŽúÚ9‹âËÜ/Ïôáž)E¸ø$™ÛñÂ8Ãñ4e¸T–K;U—üæqô/ÔÆB4†DÕÌ}Á-Nˆ/PÎŒ£ òO–a9Îa c·QÕèƒÒîbUˆ‚Gâÿ—ÞP¡¹)QJ°8å;¶B¼±Q͸bÞdïlÅËù_j)ì‚•¶ƒêÛÌvÔ:5 ¸ÿʨà‰ÑmZŽÀ&Wﬞ'Ž‘9ÎÙÖ;*‡œ³V „üí/kö’«j¿Íòl®+•‚£Ò;V>Ðþ¯ôõžOM)Ãó0óqöÃÀô´/ž\Ô‚¬Ô2YnÅ)0²øZH't¢¢¼Æé1Í  ¬¤h» Ûõ ™ÈëÀGÃð;f¬ Ô…bfgx‹ ¸ë„ßa óÓ2**°ÕFwá %Ã%1‘]/dàgzIÓàšyžÂ¡ŒÇð†¾‹†›{ð1ä@‡èFñì¦ ”ƒùYJæx^J„ñðïêÃõ}P—g`#·¡›Ã]øMÅañ–Á‡˜ˆ‘ðRgúH&}ØööräØ\Ó&V+ ØWÉÎú±AôÅXð"‡›”‰/Ägh Up l†s¢½Æ†”„Ûè>ÄhbIXÉ‹C}˜Á $¢)Žˆçb'l¡c<%at¢#‡ÿ­Å ´AWV›ÏP ÔóC+¬‹Ó`µà ±Lc­ \f'X̦*XÛÀâ*Âú@nÁ¾ø ¯±+XçrÕ{øl\„71“ÆAN¼IEi&³›XQÌÀF°’Nó5Ð>ð?á®i¯˜SÄQ7ªD¹`Äa=),@ýa)®Âfð‹'Ð:jÌbaΣyðB,fiøŸ\‘¦Q¶bÁºXÓuÚ×Ñy¨Ö‡6{1§ázn¹~›=«]5@ìgŸÒßÖKnû¹¿»zZKO/_ ß÷ˆØüís”QãíC~9†*›Þ|®0ƒ%Íüþï¾ô¬zžF¬ž¸ Ö¥6Y™MÓh u†WpNÏ‚dì¬Öac˜ÌÃ^VˆzŠ+Æ[ã&³µr}yŸ$ñáÎöÒ1±Yn=Ê{ù[jm¢Nù´üÁì€<ˆ’-Íl¯mŸ¤r{c¥“ˆþi®§æfšmû 5Ò»¸ox¦sˆé™<ù´ò˜„ϰ‚>œêÀA: ]ÅNªÏXJŒÓÕpÛw{›Bz¡£…³³SE¶&3·+Þû3Û÷å¯ôþü^J{÷—ßóÌF¤E$†¯R6ñ”˜[–fêMkÇ.© þ ÆùWg;¨°¸æˆc=äy!ÓåÂêyþÝÈkñ½eí𶯠{™¨ÓòIá•geö‚šßÑv}… 50€Ÿô޼OóÌ ˜ì\øæúè?e$iyLÅ(Á¬V[Ëg¹®\–…¼’çI/Â!‡ÂmÖžá}#îÙ“i»ç~àO^NñPöž½›Z—±SR ã-i¢¬‰ªž‘Þ&³uZ¸jØóGâžç+^[²Þ|µµ¡e,þm‹µe8ë± Úÿ;ý ;n,õóÄxâïý¶ømÌ™=Vù“ÚxX’•K>§Ä¤µJ_aÎÄ{½ò*K[û܈¸¼ÂãCã#Bsß 4%«õIèJg„­M³^¡Sê°~‘~­‡Ñ;½­±-ÐÝûP„‘ÁÛŽJ–CŽŠbypI`ÖmÔ^¯Jµµ·°ËrKíoáxÕÙ~'rr°zöK*š ¤Eò»Ni^Þjƒ#®€âîjîà^ˆõOð¶Æíü;äÈ¡ÆI3ÔïjIù¦Xœ Û¼-´>&Ú@ý ¹$Ž˜É¢®wŠ7¿ë»ç/ÝÝüwÎßu>ñîñÜw¹L‰VÀp*Ç–CqlkGå̲TAªÍÛ‘‹÷æGi4€p¸"úÀ5BMi$”Ä·`e˜ÂªòÓX‰;± ´+”„5pòã Œ¤3| nÅêl6àÓpa Ç:0 Â¥Ñôþ‡UpÊ4+ãK*LíDuêOm)„­Â½¬&vc›ÙOü„W`"œb›°|£U”^Ãʤ«ðSüE‘°•"È ³i$ÜÇy˜x'DNãS0à¹/ŠQf1,†cxOhGi,¶ÆqØÇñû0RzɦÀ¼‰ì=Åhþ¶³þ\eÝY–á²9#Å!c¤#Æ_X iŽe›°.”a6ùtÆ ÐàVQœµ‡x *R'Ö€ BöŽÁa¶A†,Õíô +ÒxpÃq>V‚‹…¦˜"=…Ë´MÇÈ-ý2÷Ãl›Á‘Øb;åÍq|“`)>Á ÅJX¨pÀ!Ø#æbW¬‹ÿÁBúÇC@y¾àÔŒo¤ÆôÂÜOU…Uœ4ÿÖ^ÈM½XGVƒ]e{p$.ÃÂì9îg™Òl¹0oõ*6ÒÙ+°Çv£D Ž«!/¯WF£(ìî¬öa»DAnn†.3Ãî‹Ëníù¨;)ögÈí°Ça_ç,“¥!lä1—ë¿)V¯oL æÒ˜–SjªœPÎñüŽ4?kß/²ÒaøªÒ_‹:ôƲÎ:òÆÒ9Xݱ /OiP‡óâÜ÷™·ŒEæšÀiÿ¿úBÚÁšˆáò4ù± ™&B’Õò Ûfû*%]T(lå4Ã̾øÉ”X}¨ õBFŒQKtijx@Dã± >àoÞr‚gSÈ#î†-‘ƉVJ‚ã~ä¿1¹r*‘ù†œa˜¦‚ç í0¿ŠZ?½)®´\”.1_áöH{­W—n³ªf0î>šõæÇk_oWß0±çZ>Ú¦9m•ñ$ºÄ`Ö„†‹nÊ@¹».—S*Ú°zRIõÛ-Zè›äÏÒC}Íxxé9ï£n³|¥r-¹¡yߘ¥ïåáÞÀ?@b)8Î8ìiT—{³¶– –óÖ~ìtøé±Ö¡J=å„ü“Äë¸\ºVÑB:Ï&EªÆ÷ÂÉ˦’ŽG`/Köˆ@?f‡Ä7ÉŠú³mº-ÓÊÔºÊ!å§üVÈKó)P…ÊÁ2j/ý´4 ~ð-Ξ6UË6Sß¾¬–®½nÍß8â‰ÊZèÏc8(\º ¶wgÔÊÜåÕ÷GŠLtìµïµuTJ±㓹¼"Ô¥&±RøUÚg¤RÆvâ1å·D´àyhŸú_rîkæìŒ³Ãü¢å0> ½š=AªàëÙ"èwüߦ|çŽ÷M.˳‹ìöæ·¡<íc˜§Ð¹)¦¢öƒ‰Ð ¢[Î-6AC^€m§.â‚Ù j²ÛЀ(jFS]FKÀ…ÖvŒíÂ(ÉJ‡¥\Z;3ÃvG?j+kÉæ’zjkS³ K³Œ)ŠMÚ+Þ{‡é¿EcÓÅÚbÙÛð!â¶òÆnµ2KŒcƒ%Nºîk&’‚»ýš¯súVŒo}vˆøãç¤ïsô™²b2\¬˜Xô ²Rl}b×Q@#úŸÞ•Ã\¸¾ bm‘¦‚úÂ<,ù¨)ÔÆ'CÏ`6.Êcêá|‡ ‘nãGàð–ÃKóʨ‹ ¶:›÷h|¥¢ð} sÁE7é=T¢ÕøƒŠB]ÌEãá.îÁ4 Âà T§Æp˜ZÒwÅqD?ph(jbmQT4Â2dÒ[¬‚§ñûï Žu0ÏŠæhv ÒìóY–†qÌEåi,jôŠÂ/8€x ßð´pP/éŸEu,ô`6ÖW¡M¡†bl„tÚÁ á+ŽA,#aŒÇÎ8N‚ uxhƒÙº±.T…¶³›, jJ»ð V’ìTÞ˜½h‡F,‰*ÑhD3¨œ(ú‘ZÒ7h 1ؾÑL61Š£ˆùX*s1É0œ5Á—¸þ‰*±kÙJ¶J”–q7t¤~¤P%ÈEQ¬<ãÍØ2:Mýá§bpC¡‚T šÁ[œNøjŽ‚ë°ÂÌT1_QE ´bØ`ø œ ù¹ÛÚ¢#»ÊŠÖ/>8foTÏQ%ù_:i·½Žq‚>ø»g_Õ_~¾üzÔoêH%¤"—¾@ßýÔ"™¤€Ù»Œ~¾Ó!ñÕh*ù FhGq·ùEœçs•æêÔEÊ´µð‘ÿ—1$°Àüå­hç[˜6=h‡ÍÁjxÈð°QyH'ÔrŽ§Ø”=‘V)Ë-.úÈÆà^ö›4s J—õ÷!,_a…´œÖ)“74eqr(C”ºÒBhm¹Ã7°Êü.†Ù&x[x6§™a´¶G„Kƒ• Z.Þ|b£Øƒ¬®T¥B_*>áþZ¬Ñ6žþ씼(³›ÚÒ¹õ{eû„ÐI6ݱݹ6G/rˆê%‚µ¨ž9ˆW Œ ~ ˜¢½§v@ã’ÙŸô"R+šÈã-Ž—¼­t-°Ú!ýÏ(iŽ×ã„*Þñ3Òg8fëoTÛX§æPB%Klè:Ûé*â-–1͸ä~î*’ÖNÎ+˜Wn!ÍÓgaÖ\Øa¤±@'.Ðÿ¤¬àu/£žþ¸@!ãx–C›# Mk™ÞéGëS¥/z¹Smä,n·(AÞïCK¶ ó˜EDu2%‘M#‹r³”ÐèÖY!ÿ3 Å.˜î™îÛšùœÎox©à]¯ÇÇȯ ”¡´ÇbÖ4­¬¤±ÂÜÊ¿k¿´uÔDj óç`3oH5é³–æóQŠ—×â%iäáÿÈ¥¥ И}Q¿úÇk¥ažõ#~3~~JfqÉÚ%eB amaõ؆£,=Þi”ôïÉØå“Ån»€ûÐÒ.Ÿ’.±•¡åí/•Ö³!µü[ôC4>h»Ü=d¤÷ºC9ÃgÑ#^?«F¾ŠÃŒªz˜‘à›çqÉ3ÖírOPÎÙ«DN´”µý/ä¬1Ok¢÷Ó?é-h‡±Í¬*âõofb0Žš0 fñ±–£Di+v¢†Aè+]ä×Y¥±—å|ò¬Î¹lå~¹ üRÒ,_ø¹¼¥…ÜÌZ€“Ê(ÿƒÛq - ¢™§´v®•—;}1--FhTÄ"Ûd§Ë©ZëGWÈ]Ï¢‡;¢¦‡¦„¦Ú“í%ÕmÒ.^œ®ˆ׆”s®Óß»~]íÚœ¾Õïî÷hï|ª¾‘æ˜>ý¯Å{Âi¥À¸RºÇ.à/V[ãBÞþÅÖÒWƒ^å($a?Ù&â ¼/a)úáŒh¿á2¾ÁþðçC%ÊKÓ€áRÈ'ÂY;n^€øìç±¢ÜÀ±ô/Ô¤ËÌd2€Õ‹/ðX ÔÃI4œjBnQ rb vÀ `YèþGÍé%R_’Àñ‡%AxÃvÁzy(?ÅŠbô*Ð\ß&S$ëC°ÇS(޳`ü -!çˆêì5–5þã§ðïàá0ø‡óŒòô^Âf° 6¥ PÞ‰| K MR?O¥Õü3]PkaVY¹ Õ1ý ‚:@7xhüI-i<ìÖû›+i.!½µ,e™Ò~97B–¡Vâ*ÿ“Á¢Üƒ **¹ :t„ã¬?[!2q_ ( ³,8Ñ,?è`á+¡;l–;ÀÜ!µÀø…ý`ù±¹`˜Ôš5À1p :ó€üÃ%aæñ0Ï£A`2?Õi=4Ä{´ ²]ø›¥qÔ>Áxjäûè‡Å‡àZÜ€ÌxÄVIßx7¬Œ3y,{%åÇ|ŠÓÞ@êþ2¬¼}¥µ¸äŠþ¿DŽY¡#5z´£ƒ5è^—ÕZo*‰PI¶±úZÑÜ»£›¨_Ù*õŽÔ*ŠuÌ0wùJ>¯úçÁaº‹§à8„õfw*õìõÆg½c:B ÃU>õ\Ò‰ofRˆ+Ö¬ k¸©ÐZnŽfòµ ‚ÆíПYw}åƒûÙ§`‰àlå²Üž¦Y;;tKi¹ï%3ìÚpm³ÙÎè­o´¬P:ª1ÐS°$[Âj_/,àéû8 ¢R¹v‹µþ$­n°3&àù;.d™rQ^•3΃ùaЙ?ÀBøÁ˜B¿Í;Æ)Rý‡å¿­ƒ¬I–ýÜÊ꥙ü™f^«ÍyfAbí(K©–u0 Qùd\ –Ó“}µ}ßµgz]LSQ¨èÃ6ò\i¯ÙÕŸ/c@¦A ” öw˜Lns©óåÃŽïö‰–#Ê å£ý î¢ÃÒeÿ5_¾ìnp›mÇB4¼ZKÓ Ï¨³úË9*ÜPO;´Ð}®ª™ë|³Žy·ŠÚ¼xF‰pÖ(Xlö¦=4V5kOG G²mõÓÒ¾Fˆ›fuí¼fh¨hÍÃ6<"qÛ€µ« IDAT]1ÆC¬ÀÎ×Åj‘Wï¨Ý ^qÇynxÚC„@Tæ¡ô>žéY{¼NÍ¥W!â&ù¡§ö¸çeMï¥Þµåõ݉ruQ·föÐ2Ê V¶HéÒy~ßf¥À ÝÅx;X9*3á*?Ê¢Ð` q âØmÄŽÀR¶E:DÏÙ Qá#²)iÊX¹“xÏϳ7Æ#ʹ©1¬7ÿ´Ô°t ÷òcÛ}ª.ì{ ßc9ÖL£5t², ‰0ÉÍ­qʹ̕½tE-ŠcÍúo±Ð¨jƺ’²ÝÙ#õ Zi LÃçTR4 ué‰x$Ý ¥ ØÒ$ZONÖ¢©7þ‚³¸®‹C°‡®AÖÚÂ|*@_q#ä‚K0ÛÂV‹h §÷p ¾b \ÃPG\Áw0MTÄuø’¡!tGax¿H!¢#=€“‰­à;6¦xr`w(“ÀÁö i¸zÀ(½p ÝgsáýCà:Ì‚#𢎈Öxã žxOù!hþ¢ðà6ˆë ÁHÒñ'¥³uP˜ÞA¬h `º ÉÌyÍ󸞭…%h “ÍÇK´Š–acŒŒKCÅl‘ϼc:i <£ù´™ð¥Æ ÚÌNšMð›¸ÆÂàŠ-¡µÙdTEn 'ð#Å íq ´ÃR´Í°³~°H uñ›K£`4FB_È’7a1(Ì&S?€Ûè($AnœŸX±^lE.¸ÃnPe—±?vÆUКá]8J`//e!ºÀS:E•a!dc/ì,Ù˜âyk*D æPÚŒ9øzhY)ˆÅLìG¿„ ½l¶…ºt†›×™“fñf[ã¸92ÉeÖ¦À'>`E\#ÜìV1þ¡;Rc5['Wç)þvÞ3z£wücBÒçÐn—Xä˜F¿ì"„ï³ïN¯^„UµÉn¢ŸÊjôÚÇð%å«öֶѦ@2'‰¨àP×&Qž“Û²Üç( ÝÄÛàGÁƒ?õ’†æ~àší_äó¥ŽkÕ³ÁîJÛé>ë©ÝQêk„èš^Ø?8y¶Ù:k¿ü‡<>£j´Û ÑWcœ_ʆl£žEFäû/Úë”ì“#þ¶UÇ®J{GµìÓÞ˾Õ~5c“oI°„ˆ1æê/‚›ñ êÍÎî–þÔ³7k’»±R8uœ«½± ÞÂV®)»ùzi™Í“p-uÁIF&&¥Ò1<+–@{é ·Sb3ºgµ·Y;¿ú¨¾ûWr¿‹ž],tyh”ý‘ïOóó1Í F’a‚fløh 0¶Òm±’Æëcœûœ·] Ũã_ŸQB;—>†º æŸ‚~å‹#Ó1XúàhnW•;²½ÀáeB£lœÿØÊókʳgLoãh0îH›–Råó%ÿÏí­w“ïœévL ïk?`kdOµÌ';m Ó׋(s}°1ÆL÷]:âÞ$;~ð¶<@©¢¬“>1Ý1KëÎl¶9„dz â«©"ëa8†ZЉü<‘UéŠ-¯å°”ÛÿHëÊû™GD7ÖÑÂ_³HŸ”>!uÙ:þN¡ÎúHoÀ&ã²è$ÍÜ.žoå]tÑ<`¶£—4Šâ±2Ïļ‹ÂcØV³yÒ3ý<‹É¬êû¡§Kå«F™Ü¶|äËéÊïÇ‚ó½IšUœ„|¡?•ßòWé·K±|5/C”’ÓâR h‹&ò)ïÄl›93³iÚ_1æôóø•òtÖl%WÓëòñæc‹!³±ÐQô±Ö° Ë(ë0˜Nƒb¢EÀKñÊTà®(ÏlbÎÇ~-ê`qhÇšã7HÁÅì2öP&@ÈXs©ˆ9ÿÃ0ˆ‚T>P ±ÒG˜_QÃXˆjci¸fv¥ºb2hÔN´â¥0ŠÁ;Œáq;×C0¾‰tÄl©¢ÕÆ X)\lõàsX¨u˜(-JòaPñÞèÀ`ˆHªÂÞa9¡4Ì¢|PeLäOh’WÃ|ì†ãðo3 {bK­°Þc üEV:‡3©¯Èþ`áØŽJ7p=žªA ,ÂL(oêX]ÿ¼NÆTñ6²¿)/ï"!ÍÁ^l+|}`–”›½‡Ç¢«F£‚YPöóí8 ³_˜aY8Éø¦9µ™—´Ì_ïù$^-ïìèºö v‡õ˜ÃûuîòQmxkgå¨]޽®IZ5ßw·i%9J?é«‹Cõ3™3¥pü¥xC¹”å¡‚–aêU¶À¬ïSŒÊz;÷YÑÃ_³K$g/ö.O?›2Íó§–Mup¡¼ǰüþâ¾öuþL³{°º»Î橎Ežß,bÙDxìê7-±êÆæü%”‹6&——@ʧ¬²„Úß›kÌ/ÜŠ/Ö·È—émïš&ÖûVz†d<ûµS/›aÕ›`’¬±Bì „°ýÖV¶üJE˜§x¥l-‡ˆâ•̧sb˜YÅHÑX=¥.ÛŠu´Æ7CIªŸô&£mìÿ“~ß#cB~Ø_8J«CrLfÌÑÒ}çˆy¾Åúis€· û¡w‚QÚ+òQ¼„øî;í:áúÏ·×7å/$jûĆXXì?3÷‡.Œ­ÈðY<rý†x.xUÎÁàÏЩj–È“gBøöðcÙï3¦á²¬Þ>SzŸ®º:ꬷR«¥>ñÏÈ!¶ÅpÈz^ÂÊHäÇÆzs6, Ö7¾kUD5ÏÔí?ýÞ%¶a“c"ìiþ£¾fršm˜õßð=އv»òjÂAqþ–(£ùu6¬Š$UåcØÐ?Wò[þ‘ŸZímäQ®/iVOYm€'~Qêˆ ¯”ul.ý‹À.ù˜ÒÈ\Eð¹³T±6毴\fœ%Õ:Yo«Œ<^oh¨)16ú`ks¦2Ä9S^&Ž¸Ê¿žb_Õc­^kUÞKnòB*üh$EËÕ±®¿c ”JËè硸ÖO[¡Îîã9©òmörW #;¸Êã‡êK{Aë{~É •åªÒzûOç4Çÿl£OØk8«òcÖœÊGÑ k™+ÍÝúë¬úÚ(­cà[(o¶ À}tƒM1&ëeÍÁß ¼ ~ $uŒyúzõ¶^&x Ê™ùõQ@´³Ã0¬¬œ4]º‰­ƒä(ªÏZáDhåàNE‘$ÈŸZÉÜ¢OÿÑK)ÄÿÉgǶ,_`3X*¶çÇåüR†Üšµ’¶+K,…-ÉFÏøDí»§oödí_wfêEß…ÀÿôõäQŸ¨²3Ù¯táW¤3² ûA}ˆ”¤Ü”ËöľY>éŸbëÆe¿ñ 4e“±HÜ!_±]Çó–F¶å ¬}Âf›Wx²T7“{zG`?‘æþ–ª'°‹l87¬±–—–,(ÂD¼ùؼOIxnÓ!hŒ3Dkì V\ÄJà0 ƒlžB¿ñ*M$NõM¯9ÍÌaŽ7»ŠçfÙ`ÉàÌk®Öò9ÊË_¤±aB›ò3ÉÛš-©-†B0טỎßèh/ÊC„–Ï|„Н«ï¡ÖcôæÁXhÉò²°]9âx,)l·‘A­XØo¾Ô·?ö¤uF° ‹YˆýÃ_Ñä¢f8»ˆ)gC1ËCÉÒ+f@n>w†Ó¬Ÿh‹ß¡7Êl/> Þ¢h”ÕÐB ºð7ð’LÖ„m¡P›ÍdÅMlÎr˜íñ&l‚¸žŽ ÂGF7€Ñ ñcáå£F˜„ŸØ,œ*=g`‰—­R^³/ÂÑ|4\RB¬—”Ó²¯Ð«œG¤Ù1?äy¿²SΆø=÷Ý•ô†Á…¾{Ò½f àI 0Å `"Æû¿°5fGO¶í¢§Ò[åò£ˆo&6,öOåx‘ÕRÖØ$v’ê© ]Ú“¹]d£<¹˜EÍci F¢×úÇB…ô:®ÐÔ~'ë¨w½y½É—suéó†(„?Xc=ƒOW×øúêsÑ>®6;š³¹ §‹ÈAµ¥Ì¯îˆ)¶lzO¹ä’j;¥·ùÛB£µ¥ð‹ÿÁJk ¯¾ÓÝS»‰£´ ÁQà‚}´“Åû:ÇÀëôSîšî×±‡ü§õâÎØÐçÖÞŽ’VÝ•î¸ÆôÚgëš¾8s±ÙEüé«(ÕS¤Õ– ÊRþSæÿG¾,€‹í¯øÏQƒ•/Ô%k=÷Ë'"öˆ›ÜºÊÜ],{ 7V²ë™ÍmÈ­måÍÌs-φ£å‰STóÖÀþ8<øBª¯|wQ^È}ñ:ûdéoÖÖKÖA†6ÈÐIˆÄ@{ Óïün—\ÊÁ§h…5‘4©žm¶ý8¶-Ð)vkôhu‰úN–¥uRö'XÒ©s è'¯-Mì»Õ_|QDÙÐgámt—o›Q43Î- d'åÜØ@¾®¸ N:©ÀpF­¤TÉ!RØÓ­ÞýÁeÌo¯R6G=y)î5J5µ–õ¸Vž•SWJ­Ô²Žê¬QØÞüqáàØBMƒ‡¥ùŽê_¼¬u›væ†ËÖëR'ñFrEӻXæ…` -ªç³»‹Vֻֿτ݀^8 GšŒ}p#EcöMgŒ†TŸÚh¨ ¬4‡C)‚JÁ ,oi‡p!lЇ@®ã0'û*öÑŸ°Ù¸ `17oÓ/©¹à—ü‘†CÞfÑ56s'»Šî.á}Ö’‡Sø’ý„˜“M„SÒk¥¬-Ô¹ LåGUpô§ÄF±®¢×°4—Ïàÿà\>‰mfm¤:–òg©—\^[Ÿy‹xáÔ,‘–ìï&»é€¹Ó^€WÕþŒ¸bK“&Ú^Ú :“ÙXÞÀ¹ZD‹Eòþà1-Òû>»oÆØa™ÞL[úmñmU;Ùái¹¢"Rszò¸í{£ªEtTÿŸšCúŽké¦m®2˜®ªEÆXzZ„ß )ãÈ}+¢K¬¯p›â1–þ± ô 2EIÏœàoìÞíí­‡S“@«¯TbàhU^-ñ ªLhzŽ|ùZªc¢JÆŽ·í®oŸçÜá(`é\ë,$?ÛÙ5òƒíiHóˆP¹-æƒ-Ci¬œàl¬\·vVWË ù|iõvû(£Ãº[»¨e½q÷Ò҆fº=G|çÄq°‚ÝE}ñ‚Ö*ð@n(mÇËG©–ùá‡Ä„” mÑ%Üc½ªî´žT»È%ù û[Çé MuŽ´µ’»Ë¿U[òÖÖžâ¾74"°«¥«k´±Ãhï²_¦¶“·±¾¯ŠU]}Á‹ûùÿ]ã˜TÓÿÅlg­íí ï5÷èëD^3,xA¯@÷Åx 7Õ¦Š&øo ZÔg½ý…ĵԩÉkR¿fÔH{éíò»gj®Ìlj'Ssd?Ë~Ÿù$l¸m– 9ßsÑœ"òhmQa{x‚å¿‹%Õ‘rCy©Ã´Å«±–öU—§¸œÅ¬­m ÿÇRÎr€½c1rw¥–t8lJÔÛ<£crÝÊ©ä¸sÝöoÁŒ<§sTŽ6m­ÉöÚÊp3—ºAú¬= ›RKÝe]j{­n}mÿÇr"",ÒiŸs6j“£ˆc¿:Qytô”7å\ñÔ–l­b-Maƒù3û zÇ`&ÕÓZLLQc>HSnñ¶õ~/4J]`ÿ-íq¨Î¢ÎøˆÞÖ£–¿äÚ(ð—ÿ»öK?êµùƒúøƒ'È“ÔDkÇG^‚çà¿ —µÜçóäL[1ÛüBnÿŸGÆ%%Ú2Ùú=4#¤½´NV[‰<¸æŠm(Ø]$NÀx©¼g_{|K²‹g%àR*Ñ¡“‡"KFŽ´öµN³Þ–çÊ阇ū>ÜÌ‹©KY}&qŸÁ?ãüŸÔmxLŽöÖô*ÆJ÷éôzÙ2.¦Sü½C³_U]‘)á÷ÂkGô -l›¬,•F±¹–ò ´£ß¬Â2=ª÷TÀ•U%ã“»Qà¸o™¾Æ^=lšõQø†ÈªÑÉnÔ*š»d¢ó˜ à,Sm¬hm¨,‘ʲ$¶ÚŠL Z‚@cô»z%Oí¶Ö^t2ÞRk[õêClèXo¡Á³¹¨aÔ2“E}t°®Á7ÌŸÆ=¹«œÓšhígíf9®äE?–b ?³óX…§ð2̇ý¹¿ÅÄñ†²ŸùÌ(ϪŒ4w÷ÌKɲFg7Ör‰ê°ÉÒÚi‡\¼×Í·Á3ÞFÁAúrºyв_ S’ÅÉÉòW ‡jlîFSŽFž ²±O¸úÉϨ#Ý 5x šP¼Å©ôÃDã=^‚f?jC]Ñà¥xQéûÀîšè$ü6îÂyvÐ’JÇè¹ÜF\…¥ÐžšÓ]X a »‹O¡ ;Ïvâp:6¡‘8.ˆ p·âBôcq¶ ³³ì»ˆ-¡œ€k0þh¬¦Îp”åÁ-0&òR” ±, V±º¬(—y/y#Rø–GÉÇщƒÙNºÁ¶HS°{Ì÷¨ÊÎs¦,ü¤÷I`”6’–ÃäÆò0'Íg_É)I±R VÓZÈ^\ã̰'«L'5ò÷•žÊ#Ì6N‹ÊÕ¸›®Pu_oÃ`áàº#õ3OSwÉ4ìFe™^1PA‹õWð6òí×òë›,_ÔÌÚοÃWF” 1£ÆÄ¶a­s¢ú‰áìSHaªŽ'}1ü—íœu½hàxå'ÝQö8w„Ýv,—×Dzb+ç«,%9ï…?•‚ Xs)!––¬¨ý¥ºÃàcåÃÊw,%íç?Øaù¬e¨£T± ÍÅf1ïRw}WG^Žï4c£:äðæ’%¢sä¹#´tvؽ½3ò¥ï1·k¥ô'’®H5Ô9¬¶:F§YRdYÞ­–TvóÕhzÃü™Éâ§ï¾ìW]!’sÓÿ ‚ À*Ž- ÷ÎÌîÓxBîîÁÝ­@q‡PÜÝ ‚»Kqw>ÅÝ¡¸»†ø³Ý¹ÿGŠc]•OÉÞ;žÁ~·ùQ66'áÚ© ˆ[^w~>Z$¸NAÜ!›̲Ø"gx§#áéköº¬Œ^SëiËÁš’é¿IQxÓæIÖÒVCü¡©+Ÿ ÔÈxñ zr¦»LÖ01«æ² MØz¶ÛÀFµÐÔZ!OËr¬uW¾‡KüºÖv[gè™QJ™÷Ø]o-¦yj ü¥fùn"<óH—N@*š=X ÕUf ï…´crnƒêøk•żl<…ï² ù Ͳ¦fsººÓ}Gü%Ì>˜ÆÙO9sëëh±Ú¯íÐîóUÙÇœÏn M ©â¸á^àœÇŠ9k‹©Z°~†¿±•ÂB°N,gËø|À¢` 9Ká ~†R#¾!fEt÷YnŸ»¢k»õ—?ÜÛŽÍDƒE˜ž‡õgátÞ™[äùÆègæ5UŽvõÓÇð^ÐÕnÏã8Ç‚â‚"\›bΆ[YOü„ö~©#0D–…=Ôþ›XnÑ×®°uÔŽi[´×Zj¿4ÃV*Øbw rì~{@9Œ¦ÖeUÁ·K²YKüÒnÓB¾XÅþ/h#¥×¼ÀšÌ€z9iW ‹m‰xJ Cw9Þ;ëºoؘó¾®µ³m´Ý¼_Ä5\ËÆâKæÃ­àbiÌ)[a^›©NÃAÓ[Š ¡3Bnð  Ç&˜£·Á†Ö4Ö’®û·i‡0Ež³oã7¨~›½ƒÏîîZ¶'Aù$:Ùq0"Ì=®‹½ü$ª08$š[€û;yŽZ¹Å>CþÀ¹+ IDATýF%HWÇe;9Ø?ÓŠV/åLù‹,9S}¥ú0€mÓNAn>ÏÕ‡‹Wîæ²9LÀ)¦´¦È©F1#S½ò7cà°UT fwUcjÁÊ©Îð›ÏU´96ód`•ÿ¾Gzã¬æªªj…mxa.0“à3h ÏÍvÒ|-û—†hsÅc5—Âðw¹?0Þ[ÁxœõÉÛÖ<¤³‹­ð;¶¡á #åK<ÆÜ*‹¥²ÓPðdÙ˜¾T=Ň.CmÄ‹îÔˆÍp¼À¶Ì.nÀhxÅJS9ê!4ŽêÊ@ ¥*·róÐZ}bÿ2NÿÀü›êRKʦΩìj“º/S¨—ú,+â18¯ºâ(K;0š¶À&0“ë€ÁÌü‡à%^×±»%ºã36ÁGÖ®ÃrÖ9qNbÙð'”Â™Ô jc+P°»@c"Ø uƒïØ£!kB’úŒ£¡dÇWøÿÀŽbû€¨Eà#ÒÕ!hOq¾†ü°“Š¨Þ° SòÓ&¯€Gu¢\”¬®R^8¯ŽÒXÌ/Ç`Ÿ*ÇÁŸ|’£y>H“üÇNˆu<˜ŸÔ걂¸oðWTNm§]ø–”1¢²X)ùŸÆùð/ÕW;Äim*ïÊG³#p ²£V2>ä.UJ„h}1V©?ç7õQŽÆl2 ÓB¡EÀ’w`“?Á¬Î{)„›zïqó ûËÜ`”²p»»*i‘FÜj÷’à¡ÙŽÝmëø–BöÑ£Ù-›²Nãn5 Rl`%4ð¥&øŽü,óéÛÇü)©)/| Ìæa£Íl¤¼Š)PÛ:ÌæC)h+.B< žôÕž3vqŽgÙf…/ŒüÃ9«‰”löÈŒðžÖto_ù+ýþÇÊþ?ScÞmMþùyÝû5žsßï™àqýè‘vÙŸ™ÛŸ(?Ñ#Îð÷*ÕvOüÃÅ Æé›–—åñ”›NSŒ†q ªx‡=e äÁ§òwó;r /3ðܨ`t0íª¥¿_fŒçŠùÕ[Ý·Ì[ÈW%³ž7Õèe¶K?ëËÊX­ÞÈ=ò“|"‹Ð;¬ãd+¾šwfµNû@ô9r9;h—‚ʇtE„t›VÜÕ3x«{}XÍÐóAÓÜ‹Âÿ Ùa¿ uuôüéÉL!ÚÉ>¦â-Ì'æz•dýC»XAlª»‚œÑ*Þ•e‹ÄoZ)ÜÈ•¬ìï‡ÌÞêýæ1_ZV)[ŠÖÌþD¯Èçi‹EivœÛ¹ªðÂÎHû§?êzhûˆ}Á—Ã㣖¹òóÐÑt‰Š° Æ=ÿKG„Mp/-ÔÂî²_‘)V ïF³…o¶ÕêÒWÑ“íÃ<ΓÄhfƒœ8[}fqôš ÚRÄjžaÿMóŠWð+°=YR¢;?²ñêEñר¾²šÌÃÞÀyµrS/K‡éxÏ츦FBŠUOå:аœêÂÂ((ïãQþ˜ó›"*‰"'³¡ØêàiÈk© œbeèžú)þ ûr—=MKd¹ÃüAQXÈ÷Æ×ÙjhkÃÏ€üàÂ,˜ }øvòƒO ¥Š¶[mLÄËàÅ¡1ߣZE§Ñx‚¯ÙXÂû©RcͰ ÈëÔø`ûEGc±BìÄ»öÜÚ9í wP¬F³ÔJ È…JaÍekY†Xéh…?OõòxÖÏwÒ^š Û¡ªqQ¾Àë² =äPy £a¤Êký‚Ô=PM®—¡„/ÜTþ±²) ¶9Ù!°9î0W –‹²ð Ú¨-Su´¦Ð†‰að^oìhÁ“°³SD­°í¡k}-mìGô‡ciU}•ý‡£éÄ©'ŠSK通dið“ÂÍãÔˆ’ }IgßðõÒ/Á$º,É¢d(B 0'Ã8¨21©…:¯ºâ Ì»Á=Ú£F²Þ°«Ò zI{øU W¥ÕešI'¤S>–%±0æÀp ÐGUvá9}<éj[Ÿ°€Ja3±Ü€(¸ù¡ \„Z0Œ€Ýô‰¢±–‡Ï8{ÊAÌBqJ[°*[‚iЦA ÕЂÁ 1l´SÅ@>¬N‡é ݤ¸,XÉøŒPý(ŒÏe '¬ƒŽXM»…^ºªÊ³B¸UŨÓÔ ªÓ}V Àq|£ywžÃ!ˆeÙp7åmá›ÄíxÛ€¦ÚAvÁI؇Òvi§ƒ´ ")›ºÃ^c():AeºÌò¨Æê1šp” e^hE•rà@£?†áYñ• †X¬‹€UàžC ‰ A]ܧÃv– éàdØPø[5”wa”Z‚ŠJ@~ü-gIXŽêÃh 9p;eB „Žü7ZŽÛ1«`OXÎëŠw0½r¦ÕžA]êHSd(%«þ*fc,Où½Ížf°YåS¯l´7*ŠÍä!Ó tdËøgªJM¨ lãÌ]ÖiùDÅb¼»œk¶}ïlÛ ‹ó5Ùˆ¥ö¬"]Ç|¶·æPkE ΂çÍÜQM#ÏFLdçµ×{>=Æ\¬×Ô»¤?å7¡Šs­Ê.Aª’V´µ@ﮭĈjaýìWU~w±˜­Â%Ž«A¶(s\"¯©ÛØD´fü§=\‹ƒÓz:bm¤¦fè“Ò#ÕïÛäñŸ4DVÈÄ”—• ‚V‡Î‘AÕ§D9ÞÕûKOt:"GDUŒ~㮲LíwýæœÀjÐ{Ñ×¶”/5êG¿ˆlä¿àÕ^õµÈ N¯„I²}ÈóŽÅ"hÏCïl…œãµãô\+¦/  ¬-_C¿^ùùÕöÒ]&li޵ÑñÙD"Ov?ãĦ¥ïƒì?£t«LWæy/Û_¶â™*ñ1-D†³†=5§ç‚öÓÜìûÃj¥êú}©m³öÓ0ØK_¿m‘cÍ©*'÷[Çà§'Ñ×¾ÜSWö·Ú[(šúàTº÷ñÖÂí<Lja2€s´ÎÖŸT@.·½ÑçŠ'Îf޼PUó´êY.ÿN³๵ÁÜã˜Ì§cßCà(ĪxÎúNõx–ÑbØN±U\¶ÀZ¨¦;†:㄃ÅYܪI“uÒ>øºg6üÄVzC[–¡Ÿr×àƒõâÐ^%±ƒngéóûd2+f$™k̽±ò…u>34ùä×p1ͼà<®ƒÐ;ÂÖžUÁ#¬,þbÏf¶Tçq†?ãµ- à ×2+z'xz° ³ƒ÷/žð{ëÚµ^Øv°ÊXÖ¼g|¸ü©ùÆo´JmVkYS>[™à¦Kª¤*ƒЮæŠJ,›:¦¯l€ñ¼,é¿k|ãó¤PGšÇÛ ;?Ýu¦Ú«jmx¸$G¢i1ÛÉRÖ&k5Û–UÊ?ÕhèìœÚ‚õ‚Ç”è¾ãècßï© ‡ü«H_Y¾Q߈ñX—s,†7Øa|‡_TI<÷ÍÏ0›@„:d5€¶æ'_½¬äb50‡&j¾m©s¾³NH­àÁQ¶^¶ÊbæÅ*øÔ¬g<}ß|^>ß<'{gU‚u4ù?ÍÎóÞNò1ª†sdÐ0w]>;UÛªõà­Ù'÷ý¼Ík›‡›°5FË5Ö@« ,O9pâôšÜ+"š<ö?õÁlšÖUÁkr‘<ÄwXGU¸Ðä* æ{!JÑAó—föýe|Â!ž2þqÔÆÜ.ëkôPQÝq•Ïf±p^Þ§­Pܸ)_A–ÊOÍøns¨ÿªVÈWÕܨõ•¡¸Æþ_–²àä•©+~þ™ZÕÓ&3ÎWÂÅÿºª9V¢4Ôd¬F~Ì®—Ò|Ú1ý1æB..aO8Ìæ²ûØœ}€»Ð•íÁx—?dãp&²˜¦–ÁCLW °žRѼ0 W•!ëà $A?ŒƒXþ»«VÃNl ×`© H^[B.m?4Á©Ì7a™ÜÆê©ìÚá;ü§Hâ{è2í?ÞƒÒŠp>’Øï8VaS¨ƒ;`%å@PMð$Ž„aTˆ‚À õáwÈ„‡PYÖS=°æ“.•Ÿr©’t·ã+ª ³TIìKÇe ˜¬†Ð9Ùã*Á{ì\ÕaM±&HüUÙ¸‡;¡.´Åì‹Õ\P«òÊ }12ÙmvFŽ&cp˸‰CàŒåÃåðB$l[±Úñ 6Ä~òäÆªZ[ÜÉÎÙ¡0Üf ¡úЃzA¯ˆÃžJ{á v¤ú8[I¨ïÕW˜ýé ]ƽtž]ÄÏꔂ}jŒ©¿ÄV`sL„ ´‡ù©¿ìΤ¨Ü ’0 Á¯nâvuR9ÔhõSÀlЇºC Dàø~ܹѠj¸ZÉÕì>ÇUøŽ‡ÃT8Ëc2FÃMØo=…þ{†ÏÊ´Znï£àÁî–4Á=Ú]Kè]lK0»i=åð7ô±ò;Í™´ÇÜ& 6Ec¶Ýî=Ñÿ í)&¹6â ‘K;èj¼ÎÝ%8$dõÆÅ2³C{c=P`¢6’磡®*ö¬¾– v³a¼#"\eS0\­åM¡ ý¥—fcy÷{Çm±I¯À³ rzxšÃ¿(c~JÎoÒÒ}©Kìj*à®äv;døÜ 'z ïD>ÁìQz_ž¡™¶öl=æaÇ$ÑVÝUƒüØÑ]«`Í÷ÛÓ>Bùü3éîÐÿóW4óYÁ2ÃŒ`%Ùí¿fk":›~Òyýïf%u¼ò†£™#&l›{†ãO÷Q6æk¥[4u|„/Y×}m¶(xŒ½„¾ÞÖÎö†Oå‘®Ö¶KÎúOí×ã‹@!ßNïeßßËfñ¡û4Í2)§YV ƒa¾XùA´Éê㯓)¤b¸üL“U°5žöâVØUPÉ<øœöYÕ¡)ZÊUÚ–;T„œÂö1Ú{5Ç:bÜ4’}«Œãµóƒë‰ó‡³±ÓÒ?‹06“àCè#ô…µÊûf–±[ÖP ­fš‡Ü4˜ú[TL±ÚQ„Y“öÀ_Æ^°ã+VŠMáÕy?6ŽÅÀhv¾SdÀ+\AÏYw°p Ën*N ¨*4‚êÄá :Ègñnì‹3Ö±×õÄÞ"¨dÌ6¯3뽬j5lþÉÆŸ=+»ê8¤ú9âµ%,;œc»i´%e@šæ€ôsdlü2GÊ¢Ùù]ÑQ·kÕD04v‘»…æµý0ë¸[NÏ8ü•ðžÒàª|ï‰7‡úÓ³&ù_˜Ÿe fØ1Ô¦ÿǶ…‹'\S+Ø\Q гw<†çÄöâåUs¸¬©¢(;¬‚¶Ö8™ &RIj%‡Q¢µÞ¼…+¨#äÀ™íeU0Õuóï/FSm,Â¥x`¿ç¨(ªñ"Ž«¶åÖX~5=ksÆš_[2/$¿ÿˆ÷-L­i Ì'Vj—1ë¡z@[ˆåK±T„ýª»ìo`„UõyXE²G´ Úó&ðêB«DõØg˜ Õ4€ð0ËÎÔ€¾àÉØ ¼‚àXGÊÆðNõ¡S*C5£&Ðæ²þÎv«T8À:R c_)ïAkýÔ œÌ¨DlAÁÐeQ:+b½‚­ü+í…^fc%Á”.¬ Àé+ü‰/åJˆ„ì¸êÃR’ »!Žã\ÜJã©l¦šãØUTê.$S;õjÐLL¤ÚØŽ"i EÊÛxò«ÿT&Õbu[äÇæ´JNÇò¼1tD›X‚ó`3=Šj¼‡q-Õ†ÿð+…cX ža^êÆ£®ºR –hË2p‹Þª¹Poó^P vÐ4è A²;5¡±ÊöÁ~±„ªQOý˜’™ðÞ«AT :crc;v{Ãð‘úSguŸ¶ÀÕƒ÷ÅUà…HÊG“ùj&«úPEÂ|Ð…‡ScʉMño(ÆêÒ-õíj7ÕƒõTBÅ«Þ, kÃ/ü‰Ÿ©L‡=ÐwB°úƒýÀ¦Ò‡ø2>IUÃpVQæ…ͨAA^‘p›< Ca<îÃÜø^auÕ&ð²ò¸â)Äøl“Ge¸ÏL+nïí-´ÖÑÍÌÈH¬b0Pæ£á,‡†ÅÁ1ˆPµ\uí5lËì[´>¡ÿðµ˜äqZ¸RŸÈ7Q/ah¿{Úfä¶½G|2š)V}WÙ\Ÿùn¨ÏÔM}¡¸i+®=‡Ô› ª$Ïí@*àï.ë˜Uƒ¯;‚DSþLÿÂŽ¹»ÝsÝù•ã»ô×gWÿhX–U;JoÀíÙ켫w½V\õ˜¡ ÃWm‚©zÌ:ûï[§h8”!þ[EñÐê¦wÕ!y^W‰|ýBIž3z¬ù–¦'h`DzSü;ŒîÆ!«(¯Î'a5ç7Q@ö”×ÍsCÖí´¿2~zV$ù”eípÇäzª5æWíñt›»¬Ï—MÕ+ë7™¤¸§•tvºno©OÕÿsýå˜è=¤ÔƒL+ðÒ ¦Ú°êíj‰(ÊÖ˜o<ØNR4·™KÔ!ð´ö·¾\óY謈ƒ/pÈ×ɬI6sª¡è¾'„;ÙzÖ”å×§ó$–(ž‹ml¯XÊvâ3Yß:è­ ªÁþxÿ³¶éPwfÁƒµûAŸìíðŠ5ۨ柔œðeæ…©ñì‚i/­T¾V/É‚ñƒL×ê¨Üˆ³yö™5píÒ~çMp§¾ÖÞÓšjSGdksŠ™ÛŸ’Ú!Ým¾QÙ!XŒô=T QU=ßϬ‹j¯ú¤º²|`ÙViïýµ;¶‹°Rë©÷Ä xBwX;ö7óÎj$;ƒq櫌'Fr!°(zã´Sl$ßIâ­=•®ƒe’h¢º¬¦©$È£5v tšì‘c³ía­ ò¢lC“±6¯Éàöû˜¢}d¹D½1¼g=´RöHR[e **Ÿ°ÜôBµÒN‰b±6‘Ó+À@:Ížë‰â„«ßÓïZU¬FùSõ—z¡‚ÚÀv@>‡’ó«þô ’h¸Ù^ùÛ±ZÈòñ¢üŒæ›YKœŒÅa6m£$쀭`ëM;°1Å¡:=…f0eÃx‡±—r‚Óç fw"_FœŒliÝWÝõ˧ǾUÚjûnöØïó5w"½?Œ¢¼aµu™ï¨uÆÛ´L߯ŒßVf64ÓÌ‚xE·;Þ9Îá\œA[‘‚Bï[Å0~ÓþÜáÕ Ó8@ËýÃÓþížjïyGeìõŒ¤Î<ÒÝŒ]³/Wímÿâ˲3/Û«/ᚇU”u’žÑ7Ũ=æD%U/ëº!7¨Kj:¬ Ö³‹–”OäÌީùSÊzžc°1ÓÖ0¨‘+¿ã«­.Ì“ÈXl¨ýætˆ YÅòòý¯·ÉQßS¾ß_~ªã˜ZËØo5‡¶bô­¤©´ŠZ@è]é;…¬«4KÍ0oÓ ·Ž€„ÊzapCA8ÊÁ Õˆ^`¸ª6Ó+ž‹^b4<§šX ~ÀAj †a)jLÑÔJ`’ú‰‘Ì£JàjCUðrV7‡þð\>§Lª5¡£\J9±“*W)Á:ƒyÉ j3½a)°> /~eý0Rñ-ÅãGx =ðЋ5ƒNЙ֑¹a„Q¼ý ñ«A%i D༠NÁlAO¨!<€j3sA…ÁßpöÑ ŒƒeVC9ë%„ñæ,õzÈòrÆ7P‘ ãu>ˆ‚à}CyjÙà;€Sª<&CµatƒhɵÚÊÏFÂ+…ªµ¡r”а?Іð˜¾Rkã<ö€š´lðâÁ‚³T’µ…!¸KõÃÒü½ ¥8ÞA>ޘ΃¡˜ÅÁ7h©fa¨„I¸²CsæÁƒ0b`¤üŠe!V:á- …Ãêeòs,/Úq,ü sÙ¼„¹Øc6‰¿ƒ£0&˳˜ÁþÁƒd¨  ø{ ¦ÌÇÕv–%°€jJ?)Aq<ŒõY}¾•—¬$ý…ÕrüC‰d~Žt®>²>¢õ¶wÖMö7„âsVMÞò83žâ?Ð^hèI÷ßÖç‹-¸‹ðßen “Wr’s[p _ :o5¥–Ê«þ¥9ü &(¥ÈÃ2ÊÕÅ6Ù^ƒ¥¨±*.­‘¿ª?Šzª”l4äPǨ¦Z¤±ÿ´ßXm5·²\ð°ŒY¥2׋_ ³“¬ýËÚ«²Áó"gFg7[Z[ikhkÇñÐFŽW"ÄšÄp+eï­E@íæ§Æ?pßÀOUˆá2 êSPZåŒ F[Úä%ï#V¿Ç+8Ú^ÛÒý¯\Áv¾5_»Ï³®¿ž§ßæçõ‘ö#ŽšZ k=¥eAO¬Nˆ¬Ê;™'Óš^˜>=½ ^<ä¤Ûf×[ò)ú 5Òú–¥2ÑsÎX§]cÝí{ƒÇF¼p<´÷Mð‰­SðÔ 3Vã#y!;Z8çõ˜Òæ}”š^ÅòùÜ©2ßú}˜SkD™Z„Ë/ª©’ÐêÐ0ãû$Û·­¹ÐÙÓÕßC.a¯µ̦•á»É'çúžÙüë¼·‚ŒëŠyß,CydÊáë_`Öwž“µYŠm„ƒÃîom޵4¿ÿ¼ÆNХȅª§üi^VÓDGlcžµ¬Žª76é»(ýü,ܧ-Únѧê\kŶ¹‹×{oéV~>Ó:íïó­kŽí‡h+).ª+PÌL ä‘9å-ÞÍ›àÉ®OV»ô¡ÐÀîè©¥9s8‡ò¬†6¿ê­˜fõ¢á0Ìú]V’ä ÖËÂC‘,˜ÃYÞ†åf—åJ(ŽMØ3Þ ñ˜sÀ¤b¼*ŸÂN‹Þ¾rÓ‰ñsmÛ´j¼‚-ÔX²À ±ÖÌ'`.öŠo¢íjµÙÞS+«ˆÍ«Ðª;HÏgߣ[xuÖúÑthO·­)†_9Œ0«º^:ÇÙÛ„Tw•Ð Ca”g·Ù(jDñüKàj |`•õ»1'£’­˜í ;|Éa×—Ù6ðé¼!NSík±Ÿ©_Â¥xwÓªEMÑÆÞË–,#Õ„EboªÈÛˆ!dé7ôHÞ'±H»ÓEq² dcJu ²²»í±ö5z3¬&+Ò¬ÿeõ7k&‡ÿ °È”sß‹Æ7™Çzå:Áå Ž¿íå¨d‹dƒ`¾‡9U**’dŠê ×A™ƒ= Òk½ ö4ùeeÍ·Z›m~6Äù,"L§D ý©X¢yöM&)F÷Œbª#í‚8¶%QãýÇê²»-WãvÚÖÚ6÷ápªâŸã)äÛào`\¤dprDB8Äh³·r‘ï‡g•o‚y$cv– d¤ üõì—øþôg½t=edÖ0uÞ|‡ÙñsÂÅ*²p¶£(®Ók•‡É“°/=C/¶Óc±%;lÁªc?[4^ÇEü܃D¬ýÁIóqö—s±/ËUðVdóTõ‹U-é*^†I4Bæç#ñµAmpÃ&¸Åça^xÈ?A=ØÃ A| é­¤4‰òS+ ‡â´æÒ(Z‚ÿ±l,ìÃdBX€Ÿå¿¸}*®Â›4꣟¶ÁøT’‚ý”ÁúR7°õàÄTh{ .ý‰w‘àžc!?”‚4L…á0"`0§ÂoàñÖpß,)»È:ôJ³ÞÂl§BWí ÖÌÎæÑiUU¥Q´bc ßaæ (œ‡ñ >ƒÑ0>á{šˆî†&˜Jp=¼›é1M7ß!`vy†ÃÕN‰±Ø€]ÛøV†l>݃T|J[¨0´G·øetâÓø ‚5Ç›Ç1Ç@u( d(;‚MÔAz åÙB¹Uø@oÅkÈFY!vµ{Ð/ê!bþž¼øºi v?´€fpMºØf¶šü0׫t¿©PšýÄm¬&ðù˜—ñ3CœD·ó‘ošb¸H„N¬_g»àˆw~×׊•¶O°ˆgêwØh|¥´uX”33Êê'åay†]Pù(ý ße_dëî¨.R¶c• «¢I(`sÍ+ÔDßÄ󨎘.Rá¾ÿyÛË;Öˆ”£¼‡'9ÝGoôÉa5è‡ø[t€i¼¼J›a«yØ{¢ßÍâU^‹&/'ÂÅ+û52 ´Ùš­…áTÔ©-çÝ·}—é@ú¸ŒLóFÏ€?0ÙõÅÖÞ?Ùº«ÐWê(MÇxG†#ɵ7x^X9GfòHoy_u•7Ð^}ÒŸB9ÑOâgvKEÈc2/ìf—ᎥªS4ë£zY´’ͯPAoI³Ù\^~àK^«P9õ?šÇ! Þ¢ã©( DÀñ/,I1*ÃÞÞÑlj QØ;PY*ÏNP{•ˆ¡.uc@÷°”¦­8‰žªJT{á ìI#˜ Lõ7T‰VmËʲ®ð—¨^j7ܦf|ÄÒO¼e( &ãLöTu!6„º,ãñÛx`®ÆöÖN6µ£ÁtvK/Ç"*tüÅ>Ò:£6Ð)S‘?ÃWü“­ÌRë(ã©'܇`üà(‚á DÀ(òRa|Eݱ,;Íÿå0ÃJV×Ìë¨Áw|!‡©ÑðŒÝfcÙpÌ·á%éÇ>"žêWð®­œ}¸Ã<+¤Ph QH+§ÏæÏøcãØiÛ¢OÅŽ4Ï©ls2]ÿGéÃ`1‹u°{€Gè M„‡´ˆÃD0¬@^¶&°ÚØe´0øëfåõö†ï´Ñ‘¾Ú.@ õÔÖJdKÌ–ÆÍÀ8ãsÖžŒÔ_#å &kiù´n|«¤néU´”Ó~Ëy]¯Â\0‰J²ÿáiõÞ—ƒòž,H;©t¤ïY+<˜r)½ï÷“ߣ’{¥æþâO¹œ>8ý˜·¸6È1‘ ⪫E—÷ƒBÙnÁ>×\ý3ï£g¹+©vö'ÖÁ`HT]L¡[ž¿åZL7¾d÷d&?Ó²§E~)*öêrþã*®½q|‚ò¢·³ï¨ïnƽÌÓž:Ašc¬Q3õÙq~’×°˜}³~‰=Å¡<´g…i¡+6³ª¨Å[[!85#Y]AŽ·Eéõ¾|ô¯ð–4›ðªô»­¿l¬}“Û];Ä jž~\eZ‰4–² 9¤ã0å6÷ªiŠXCÔDþÀÚÀV;ûÛzékÅöHæRÍö¹á¨Á‚UOw>=ä‹é–Ì_Ó|›T¼°ÌºàÏÊšk`½-ºéD/­_í~,Ï’d]¨…Z ¯Yˆ–×Úv°&Zm8'¯IÂÖ[•ƒ®¢¹5Va˜«vÐhÛCü2ÙTÕ\P5è%N“G`%ß+ •"«Ê–BŽ\cø¦k;­g°‡ÎÉûjޱ6°Ï‚kT*Ò<ˆƒÁÇŠS$ô¦Â*™L\Õ`;‚ßÁ/ú@SŠ´~cWá,lesq$¼’¥x´z&Oãk¸‚!l'~ƒvÌÀNÐFP|‰op+À¶k¹è( à¼eq!ΉT™®ÁbhާD¼‰uô»Ê©ú]é\€Aü(Þ‡®0n•è?ºÃÖ¤Oâ9=IOq,\£û,®Ò%ÜMe¨$µ†Â”aYÈ¡ö`{x6œCØCÁâp€6`þÎ+c$a~¶ŒMĚؓïR=Ôiò±%ÐK5ÁÙp•‚a2¦ÁwèMWi;‚JøŽR L£LùCµƒì?¹”%Ñju‡Éÿ´øçÃ)ü¬õÂmò—j…-ô¡úVÞqA¯È®òŸZ’>?r|äRl«Ì²Q\;Élâ¸ÊÏðP<µRËË?ˆr®²Žµ¼oj?DffñHönò¹ÕžÏÖÚkEq(†‰‰jä£A|¹™!/RyYÆš¦:«žÔˆ¶³cÌÀÝ¢¨ÖÁ1’à.«â?m”4ÏCnªG+¤-0‹k=ó|²rd•òö/í'µY|¢¨G7ͳÖ«)ƒZ  •a%=†Ÿ*Îå}¨6^_Ivý¦ú.ϰõŒ±1?]£#žÐ+ñw`¿zalÿœ¬?å­²©ŒüV4ã¿°ú1…c7AعÐÙŸr¯|¡oá§µ›_ymÍ­ôkTTdkdT´>SU«hzí_íôüá)ž¡?M—¶ezƒðØX·FŽHg›ÀÛôØäBöæc¾í}Tq:Á+¿x"z³ù<–íçÉ(­VŽrΪ.ýÎ_¹(Ÿ¶Üñ‰Ý^½KfªãŸÇ_§7O;•vøWß´ñ¹¢æª€MF™Ó© „RMº¥ŸãÕ諨Ìz±LžˆgÑó‚*s™úG[E[ö§Úåa5ÅÏíÔL_rø¶ ç÷ì§Â6Eü¶ÐˆÈÑaù¬žì4…«ãê›ÍiÞ€ß`’|ï/"wÙzÂ,kŸ”ò1U:^8u@Õ…*£*;ø^‹~ã[µDv‚!ëa[ç¼.sR^ó’ã›Êí7¬¬×j ÙÍsLuæÈVÉÑÁQÚ=B/áø¨­ÂÁ4 ÎãD5BöÖü1Îd]ÅIQƒ5åÝétƒÓ–SÍ€]ôXõ4î«êT”Ž©¾jYki(ešÁtA+ û±&TQǘØÎò>ø„¿[Ø/ÖDÿ爑Vªš£úû³üÙ]Ôúlµ›½µYl'xùz6[•Ça°‚~²°%uƒø­Ar+?ÀΓ]/¢íD¯~Z+Ž5yI¾ž•f½ñ#¯.’XMöTó󩬩ÓåjÌ7†suÔq¿¶õ¶×ÐðwZ,öåmµêt‡ˆ`ª«zÓ(8­þT ¯º¢‚ØÈÏ ·ápšC•YMì©ZãÊg¶üeœ7óx/ÊÎÖCO²| ùÚ±ñÔ‹íeUé,‡ƒênÆop–â´ÛE(fâöà Öœª’èhu—Éæsê%ÜüvJ ©µxÎ=J°Bª­‘GÕ6ÝØ7> /kÍì]p7ÿ6z|ç?”µô[nÏ3Ïé¬&é¾ÌÑF_—@°,ŽÁì$‹Ú6.fò¢8›û »$¢qŒ¼­Kp«±l)ÄÓWàê(ûÍ8ø¤¦¯3UF†9<­nò"ϱTýWocÏö´|õ2z|sÁùØß,Èéºê\´Ì±5ì…3ÁYÚ>E¬û°›*¯rP6œÿCè?ë©:Zù°Œ9Ø|až“Te³4ü ù?Ú§–˜C ]5‘Ó X«ªCL!^†6òlÊ\ÀÚÑZRå¦6ø‹¦ÓfŒÄŘ ùp<ÿŒxˆè‡¥ÙŸü3æÄþÊÄB8ÁZ‹ PP2v ¿ÃM ë± é4 ŽÑ SW)…Ö« ö‹`ý ³¯»¹ö9j_ì/çÌlW⪹·Å\Ž¢°|Ù’³ù²U šÚ%(FóèÅõÊ*L~”!þD«oà›Y5èÀo¨“b)µ÷}„˜bE›Œ8#ŸZ%·òªÆ0ãŸÈúðæ¼?k*’Y5ܰ„ÑÞ»y=WwŽ—zGQgsº@O?” +þʾ¨Œáiu¼c3OûÛÂJú±ØÿÁÿÓÖ—ÕÕÊ;òá5[”mŒz‡¹ùN+ š`Ac¾êƒ1Ö=œËJÈ®¢&Îããø(YÇÙÈllÌÙ˜’Ù¯FÍã-Ú5ç‚üâ2 ç/V<{“ˆ±…ô»¶°M¯ÇžkcËÅ={?{˜û»¥c“³§Ö^?TÝQ(中¯}‚ëAðœCƒ>˶'ôQ¶Ø"+ƒê‡Õ‰]xík“ÚÅ[Ì—;³ëÀþ§E¨f×@ÀX_¶Ì‰l=†X¾Jœg  ³¡'T‹íÀcjzíz(ü²¾#ÝÙˆo„ßrSXw¯Èûqˆ’Á3ÙßÞsfï´Üæ;«°o¥í©Ø£·ÄSz m¢æ´Gb±x¡âõnl9Ë«sðð º´·w ÑK/âÚg–?ª®siXjôîœ #¯†ÏÊ6WŒÒÚh·Åe^K;*z³ZŽn"Xò?¾35ŸÖ’†&¨+—ULíV†:ªªP ùFªofõDùä s íÀªæ[5 â®ÛZ’Þ:h~Ùu4rôà³´6ê5t¦Jü‹8GS´"Ž÷¶Ïø7øHq þÄA8A†Z%Ù;vŸ¢iPAûCV¢dV^)UP6«PÀºë;hæß“ñ,mþÏ»™¹3ßyÚ¦UL¾œvÖ3Ñ“b¾°ž^Ç‹¬»‡ùYN9«`g9Y´äyñ1ßå rÞäá„öÆYБj‹×†‰{zS±Õæk1 æá ¢-4 R Äß_« ‹yYMM°+°U ú•Í3¸ʨ­p™ªBôƒ]~ÿ1ÇØòÎâwyKÕ;øRöš›'®ñÁ´{‹XzI%Xº¯†Ñ\²£·ÂuXÌ4Ö –à!>’aüÛåÜ…giš™im˺å?“ÙçËgŠ`}ô+Ù,”ý,Œô d4WÕa¼õ\^S×ð ÏÃL\#Ú¸uÝ*bËÂ’þ(j.S}ËØEØ"‚Dwí5ûŽÛ`“xˆ‡TacÕLn2zÒÿ ‚ À*Ž- ÷ÎÌî³¼A‚»»»»SZÜ¥¸;…âîn>îîîîîš@€}¾»3÷ŸÓT5°V@$·Ø.6W+‰ñtÕ:n®ðKYóã%óZZŠSÐ5Ú#¸Zi…p}‹³›Ûa3ÓÌ/((^ž’Z°†Ì ™7B{ñ-|SEN[´ø—;µo|>U†ã¡Yfñà.núXì•Rãã´‹l³Cz7é0/¦l6çÊqŽ"J‹_Ž·öÆöOAgè|HX…Œ‡Ô6«ï¬3öŬ/„l¢*H!…´ F™¿àyƒáœbª7uÀ#Ú6(ƆÁºÆFË‚TŠ™›é Æ8|R|b§1Š>QgìN5`9Äãø «ê…Øì¬r:Í 9ÔGqöþ”Wঅj܂ŔïãVl†6U*©62 ÿ–p˜ÞC´^WÎS•áå€Mp…ÝÅÑ0×c|ŽA˜C†Ê mh$ S/pŽ$NÙP²]¬-ûŒ+ñ8V huÆ(;ý@€³¸žÎÀn*"ïa býµ0†fiù õàÓqšPwAMè {b L›Ä>àml¥ ÒwüS 4ÁI‘Tœ¢pªsź—Doö÷ñÆÐ³ò‡Ðº³Rt ÛbhO{p&¤À5ü /­j¬;V/UuM…qªêÂë!À/DUFFZå3k–=p›õül•– Ra®§üT ’vS)<s ü n â&Àeè‹ÝÔ@À³â1¦ó°ÖE7lûe¶Ö/Ã`yE}§^"În9ÆÃ1wGWqXõÎÝ]WÎaëlk3­ ßË6BZ¨°ë–﬇QŽrb¸ª!>Ò*«<+…`?LÞÅ—v`Ímwc Ã\µ)-‡ÕÒ,ï¯,òø9¦©Ã&i;y/;Õß”LKT\'»ZÅiúêc3ØFãñ¼š®|”Û\¨ò@–@³õNÚî­è![@=ûu…%_²=2ãÜIb#¬çÅ.±žßÆkrk`Õ¤d,Ê C&½Œý“ã{Í4þÒ¾Â6I ×JØ#ÅþžåÕé”JÂt„6ª‚Él§jAÏU ë‰úŸZ§Õ9ë)ïjöÄVênmÔ'ZFÛØ.Ú§V ]í“3ùt¨®*1Ʋ@O^ާË|4 ÅžCmúJRyè bÉ« :‡æ¬¾z ñ|ïW±~ü™U×êO±Ê„Šì³Ø:þIï§ ÎÃY]½¤qÌx*·SªóO[,”Wee¼Y7t.´Ñxà×3¥ižÄDÛUý߈œŽ-ŽE®Ÿöi¶oÊ˺¢a]Ôò£‚*¼>®ãÿ£_jF›(ÔÌšnÝ2>‡’ä¢Pn«*5ÎzJ#xoÈÜ›c  ¢zUÕÅ:êoáQí#:¹F‹v"‰-‘»´›â›‘ÂÇCHv§S´ÔJ“]èe‡¢“:ëdÈa¸&EýãªÃ³{+h÷ìùP$¥µgXˆ¬Kò_ÿ ¶WM½ëk¨tJWs¼—e/~…²ÑêþÍWp.JOé‰\ˆ‡˜Å‡²bTl´Ÿµâ 9óRÍPº+[âjúK §hª¯ý`ñì¨ö'Æ`§”•rÂ<ð©D+hÃ_ {ÐÃz°j äÖ/¡‚ý0îÂaŠ;¡p\>êÇ®Á-ZùÑKC©|€,”A(Eùq$lÅÙl•:OH;1?LÁåÆÏÐŒeÁÕp—UƒAð–ÁP uim€âPfÃ4èq%M§ø”ÆC+¼…má>­mSX²ævNãO¬8ó¥[ƒƒuåh/ÛñêʦêŠNÿ˜C 2TUá­†—§Fàmü £ø=¬ÍY6Õ’þ½ñ'° ÓY ¨U8ÑøîS!1 ~ÂPª„^,cNd×p„(‚¦P,v]˜Ÿ•dEm“Ñ}ø¥Ó(Ö{3 *£)Z•¡Ü›Åâzè·O©‹Y“Õm¼BîðÄ)Þ]ÁaÖûPO8hxês`MØÍJ²ŸÂ¡9õdºÔŸ÷Äa(e®ú9{;Ïès£ù1Ündˆ¸œ#›¯|RѸ4ÿ¾ô¸'v‡*쩯}h²ë»ö=ø”×pâóÓCñËVÁYÔ¹^…Êú*²F–úÛ~Ï”op¤±×3!½¡|àõ5Mœž8?½£e ׿ÜaVL‰Šïó™¢è\ì‹|<¯¢³ÑÙ'¦0+$ÇØ—{ÎÆ} ëc¯*ðâÖK‘¹>Fe8}œeò=‹øäÚ’ugXOÌQ0,IïoF³ f3’¢Íêü 6õ›Á"¥Óv^Ië(OáM¾!pË*ýe_¸‹>xWÍü2‰¾KŸQÓÚÉ_ò¼¬›g‘á,Ü31h§KPç„ö±o¼ »B/(£þ+§Í ïd­• ÆÔôþ;f]qPߊp}›ÌOêÕà,·¾šñ*7Ãé:•`™q^†M0R>²Šq›$ÔÝ IDATŸ âmQúRç±°–Ù~†^[!ã³Ôi •D6ÑL@vAË)ÞÚó9Ça¨¤%ú R‚Åü‹ƒÇýË©0uà‰b+?ÌLj6¬¯fëäŠuÙD#=ÖùÐèúEïᵌ²b[ØOÊþFÏ@5y1àö½µršIWè?ûI~7Û°ýô‘iTKýÍ®ÒrkÏ€µi!æÁkjm‚X”2 È(âøŽwTea!<¥V0ÿàí©ÜÆ1ŠÔ"؈§Y+™*`U«]A¯ÜÇ2AUåµ­ƒÙHQ r–š®ö³6ò¥Ê ×P.ì ¶ã0¶ú«nr¼ü[n0îXïÔO™7ÙïDm´ŸrŒŽs”vÌÖ׉|Ð\ámÔ**ÆþUçhìuXªñ”¼6Ãt@¤³•9 ú°ñÖNs€ù¾ÒsÿXh¯geᲪí/oäýð„7ê>ødvyØ,£*«yjr–O}O(ŸÊ¢™0X=gÙ1e Ü(çÁx[ÍÈj™eôµX™%û‡/zH!Œ¶àq<Š+`9„‹´ŠšR|ŽÑªîÂ.0VëàQ4`7ôÀ<êb}ˆK`*ü­)‰uÆbZar±¶¿à!ÖÖ"i $¨¦Ö[K`«»dX™uÇ£äÂ,̤»ð™•ƒPKõÅm|.èX$>€µ8B¼‡PXmƒ¦xj@:DÒXÍyôÚÑ3Þp]Ægö>ŽÞýršVS$âgê¹ðºyÕŒ—%Up"‹gïôrâ«Ê¥m-DQ¼*ªnC=ÌŽ7X§‹d­&(²†H›µ\Yf'ßž—éÝa¼´’'E ×dÕ\ä—Áž“vä5FY÷ô¶áâ½þ†Nâ\¯×JTm<µÓžd} ‡·øÍŸ9éJ°Lj”'*¯þH/i/b[È …Ÿ ©5°º¾ËþpoæÔ¡ò4$ùOð¥âShbè´‹Øìn8DŒ½ªL{eΧ‡°šÊ† Юº²¹ÆÙ¿ëõ´ ð?6Žm¥Žp3ã3ø†#m\Ç]Íð”Ü@ØÖ“ˆJæ67š}±Aá»|aÞd—T~í¦þ1Cv½¿]s¼á%ø1úÃXÁUiZ¤ýÂâ¢Ëé<bò@ouÿД‚z‰°™'BW->Û:­´cPÄ £5Íüq3½‡/)4ý‡oðoŽÙŸmXùÎü3±ïOØoÖúUýç^ß1£sü„ÔoÖöpÊâÒ‹ê©,Íf.•éFŽËÑÑ‘kìg ,Í·¤H“”ì”ñýSÒ\wj m’ìQݽ!"«vK5áŸ\Óœõê®KVåÊÐΕ½K,{òö<ë[šj*ÿÇöÀXÌÖÃRèFu¨^Å[rÎæMÕmÂÎf=ÖľFë™DEØå|#U8VðŠøOÍd'\ ù 8,ç­d§ p·ÛÒà=ë&\؇ “¯g´gr–ZSszö¤;(Nf›Ü=’jÊߪ¬lÉИ`4fµØ^YTÎeØŽ@èçíYÝðèðêaÈZòª<§º¬ºÙ&³Ål8>Þú¡_Ö û«Ðpˆ´5Ó‚t͘itnó›žúi©T‹8+iD {~<‰Côû⎩Ý{"Ûd*¾…î]YnL%¿óî áüÒŸ|ÏýëÌÇW›yë{)‹h”Ø›1»ó-X6Ÿ­˜~…fP„šo”B)Á&PÞJ a:õ3S+.8DéðšÃ(,ëºÅ"±+O#ñŠ‚&ì’Z_0bÔAÈ.gHSUJŪÁêMÌ¡rb5[®ág¼ ‚‹ƒÿYCí®Ðyh¨^8³3¢Öz',ûÅXŒÂ^O÷:ç…Mv¯qtŒ´GóñÚHØ©úÊ×ÜAS¨=Ì[²x•OT×vð¡|­mŒžìØÙÏ^'úŸÐ-¸d5´zÑçQŸdÿ<5^:ÌB• ÿ#sˆÞx‰žBSô²(v‹É›²°Õ†ãzÚ­!VEBFÈMa=0<ƒ/YEúÒè1”„8,û©>Ãx˜5‚(N#(‰5diÚ`›©ŽP7ãuX4_A'°99à+a“XW€%¡ fáþ‹ßÐÏ;ð[ü<}†ß¼ |¡ü¼•õËÚ š®ËÃ0 ö°ALB¬‚…𦀢°‹ ÆâØâp+]ÇXþÿa§h'NUŸå#Û-mû5:2`oaŸåþÏyÔ\j¤•P£h –‚­pVý2ã¬ìF"¿ÅÛ£X¾Y4fÕÅ\>Õ·}dE ¨Ü¯q®¹ž»Äª‹ŽÎöçöùæwmÿekè;A'¥Ç(`þ¢p¹ZæÀö3ÆKY–C½à£n²f7̦ª2kXç?mæJ+“ðå}>g¸¥«®;øF+– Â*Þ+¶Ën ð¬ü?q™_‚ZæVé1†ùþØ¿\v¦Øä¢|@ø÷˜­FQµÊkúú.òAΧlyÀ­rÐ)¦? žÏØ?¢PÔÌØ™¶†õD¯Ð©:ÿÀ“ÙUŠ®;ÅR– :>ëÓX9ϧ+ÿ4Ïjÿß±° ~`oUSV14ÍÞÛö2ªDtxä.çk£/ÿ¢O!ætN5Pc¹RÑ^è…E]=Þ9™ÏÐê:î;kFMÍïòºÇœ~¹Ñ½[ú«tyÜçq§öNK©¡‹¬uÒªÔŸ§ýzùe[ÂÈ`åäc~+õI0&82êß©tԌȭ‘ÇÄßÜ“¹•VÎñwDͬ2þpÍs.µÏ—ûLw06娽 =žÿ…Ê´DÎ<¶¼¶¥šÐÚ:¦ñPÈá Œ^®FSAf±¹¸ÒÌLÕM¿\/ÿ£wü´å£<ÖTæÑB¬«* ‹c ü%•Á¸V«†ïu·ÏP6ØÁnQ¹…uÄÕ8g²ZXMé2ăàMØ1´ÙKÙghLÝ‘‹ø–‰e…T…G˜ç¬›–Ÿ/ᤕ¢kÔWV~ Þ÷ ¯|"†ªâ¡á¶Õ®¿Tö@û"j@šº¡µUKà^ÅɸœÝÂ?Эž`¹Üj[®•]`DS_6F\²6kB¢2Äï<É‘¾ùìœÓ„åÑŒÅþ{¦Ááfµ`¼¯°P=ƒûí<­°{µÜC#~…‹nq!º¨>YüO«kô u l ö³*„jÊKÚßÖPµ4+Îúé˜~5±CÚ‘„3¯§tû™;å]*ùŠ‹Œ¡í¶ÂÎô\« -ÏÕ©Œ­ÌãBÈ1¬šžšT$%.m¯É†ó8œÎ—ê«i4äqÜ#öPngqû,µ×½U+C )¿ÌcÜ– KÞ;"ÆáRlyá‡}´Ú@ˆÃ‰ô€úB, ¡îø…íd.qC ã·ô½â&ÏàA3áý&³i´b<-pвŸÜ _ ELÂòºõzÉÓÆK¨5i![«ZÒ-Ö›²a Tbs 7®DÚâ0ʧåYüŒW­|0¼j3=£R¸ ÏPaˆÇìpNBR +@ió!Äl–Vá2‚58W¹Ðu!3ö¦Êòª ᪥\ bËa®Q׬›Fw*ARojJOU%5Oý d÷ÙM¼GÑ… øQXÏü| ?Ƕó¯G&|±¾±Á8Òü‚³1Ñ â[ˆ§·” »ø{J¤õ| ô ‰jS*Uƒ)ø¦RÅ3ôà8U ¦°Ï,5.i©&ñ\p’íäÏ!¿2 ïÑ4J‚¥¤d Ô‚òtë³Ù4íf%¬}Л¯‘Qà§Â4×Òy;àW³,‡ïÆa‘·•ã Q:EÁktÓM(€ãÅdü‰S`Õ„c8˜µ{ÈfQ²-¯ö*86Š$^,:wä{DØgŒvÍV†Ûä!Û~ NòþÜà+éK‚Žz1¶usÕR1·°Á0È«ufÿáYm6Ënm×Ò˜%°uðV —)fC£v ¸±Ó ·sQD¬xåŠpõqxmC]õ1aý\W(ŠaÕåNšÈ'ê™íoíCõ&öIzcm‘–KD@9½†ó¦yIÛ®Ïü5'PDå²Îó?dнMØ-硌a±O²® Ûëª#–úçúø0P$}rú}Oý”|’æcÕÇÐW± 7c)UÏ:íYïÿ’ÖÇèªÅ¾°_ö îV®ù‘ó£Gèl3ì¹ §xWüÔŽ„Þ¶àî`»àxo5‘ýÌsZ{­=;ºœÚ쑚#®{Ê’ÄÑlDÚ9ïûñðˆ 6ZÓ*¹"yYZÙØ<,­Š\h&ðf4C;mlþ=Ö7%5wR!í;ï®]Éôg¦ÑYú¸r;‹k ´XX¾ã7¨¬:‹éT›oÃ6´OÏžf¦÷6"½ÍÒǦ–3W3±ÑÞ *«ä®eÑŽð~ÎaÖ'× [²¾Ç>'lA¦CY¯gÈéÞäÚ¤1*ðð_[cÍH zn„ÎX‡­cj‹uOÏ.nh«¸~Ãþ‹zR=~ž5gõøí—~ZͤZâÆs7c\c£ +¿ÁjÂ:É;²bÛÅZM¾_åû‘Yéâ$þ‹Mô»<ËŽ#໸˜å Õ ùSÒ¬GVÈh®ç­l‘ÚI6—Nð£T+ÔK»ÁQÃ$ØfMÁ¡XZPOÕD¶Á8bìáS ;,±Jßë쮪¶jï¡o0rPyv?°Vޤ)pæã¤K 7ÇÐ *A¥Ñu0I‘w †ñV‚6"ÐÓ×:8‹éœÏ³Jð8‘oj/m8&Elt·ZæØ‘ÞFïgŸ£Ûø9Ñ‘µd‘ò­QÜŸœÖæ{£¤sq±oû¥çþ1úË;oÁŸ#>ïOÛüuä‹ôÀôĵ_—Ó\‰øÊÖD«ÑÏyIËè¦õä+õí`ZÛ`¡©ÌÍxR,K7ô~¬ª˜c¯ÍþÑ–»®…÷ʸ#×Þèþ9>6-ó8öA¬Êi §Ë*«ŸU}î]Õå3T}b¬…š¦FñA²°Åú¨ П€:a0tϨ ¤÷ |I+’p$í€gtÒ…@•^ÍünÌ ®â¥Yq-I;d?6ÍþEË%$ÿKLW=Øb6Ô*ÍAš´³ЀÖã2¶kS v ˰Všd+çØáøÇ¾%lHÄÛ°ÜÑ=³ÕwùcΗ4lW#ZÄãE5%þ'¾ª%¾Ñ,S(-ý‡ºî›ë'Ïû˜K¥4²£×xk†‹š²’šhÿˆ…ñ›þAÁ¥|›ñFEÈò¶Üî÷ c¼¯  Û -ÌNXÅYÁìuÃ*E‹Ùcù™»GþxzvÒ…ïbÓ•“¯¡—æ,†YFv†õůì/V—•ùì™mïm¯‰6]{) 7ܧaÐÎÑ&,IÑtRd£çê[¥Ñ"™‘ºÁ5ó d¦kTucÓ¡3»ÀÃÙ;Í®× »ÙÆYÜù8ì¬c!|ÆEš¤6dñïø›ïÀ9b¼3K´“+§Øˆëø`œ¡.Ò#*¡‚T—6`\Yð;8p4}«æÃX6šÀ~œŸÐÉ‚j-Æx&C<¶ƒ"䯂1ô/¤c9X‡‰¼=õÇu"ŽÞÁE¶€jÁ˜¦À˜*OÓ`ì§îR1 †XIòg0ÂÿÍŸC^5ûÑN3 Æàá"Ýa% a4‡ÿðRM±+6§­ð{ªÙ4ÛÀ~¨ŒÕá>p| yÔ8øF6Ù™m“•å M·¨ÿ¤šÐ ˆ¥¦xO}†qX–«.pšS$í‡;—òRcH§}P¾â¿˜è¦ØãÕM*I©ÖŠ€Cjk€o( l@‹a#<•Ó¡#|T>´Ãø&wS_ÜÁ÷ª|—Ô¿ðxX¯¶`"púÎÐIüíUˆ½ÆÙF»ÀÄ0º©Þ°+šgpm“…DQ„a4›Öª˜É†OÕ¡«j³ùÕí²×…›uÇDˆö+zaçG‘"^ê–¨3è´´rÉ5æŒàß8Efº5“—ým)öqPšáãÉmEX×Ì0DÅYÊ9×¾HËà ¹;»~×U@´Ô†òá´D%ºmÞ ] %YeC­8s®àÝ·bªE\Í5-oZ-"K¶žùî†ûrgÏÓ=2GÌÀè­rªqÆÃ)§Ìá¯c›l/Aã#è±mw£ej‚œEm½˲´ÌøGì‚\5<Ûž°=bª˜¯šàT5Ъa°çXè„¿czcih­÷‘±583mXè”QÔòY@ƒ+ÆW+\n5¿Ê!Þ€õÛˆIÄLj~"^KtNÎíà“í­³ô õ)ko¨·çNR½Ðzÿ÷cOíï£>UH‰þ½'aM jš7õ‚ç§VÚ™`™ô­ßWòáÚ{VÛ9GûA=L´„IZ5xl­oPRCV:ó(­¿h¶Éý·{EöÇ1Ur$äÿu[¾¦±/³•ɹ Ú‘%Ú˜z;í¦í5‰TXª/Ôƒ=ü{—ó²6XËeÁTþLüÉ‹èµí)V˜¹Qßgß¡.q€ºKUa¹ËJ·&QNë¼5Ží—/0ŽC| ó2ÿÀØQÝ·Ä,Vg®øFCVñe˜fãà Yü2NâçÕ*5Œ¥ñ‘Ž$w$Tà}ݽ߼»‚<ýBÒÒŸM}Ïü'=Wá(M±ÞØJ±b¡øEõà}¡]PÂxh¢ê`Ζ}`…õÚê Qªõ£Ž¢¥ÞƒGèàZfïAaÏkPñj•‘5´Ôh`ú¬!ÆÜ  yí‚ÛB3?Ó[yg{¦xêx+>ÏZÏÍÞ¡Sþß¡_©g)þéüÞc+Mqg ;áJvî¶­³Ô×°ò2Öwȃ-D~Ä–¤ßq¬…AZMhí‚óX¼r}Ánä…ºüÜÀ…˜o@4^ÃPÅ`$›ÊB,„ñô\ð†î@'|F¯ ¯˜G}à ƒ†ð ÛbyX‚ÿão(³:¬º›ÑAfÈG§LP»(ED+åMꦦРÖŽ@6‰ÇÀü›ßÀåÚ{úÄŠ‰¿0½Ã®0¾Ó$(¡þ¤½p•7…'è™Q` ÌfÄžxÇüÀ~£›*B6:É'ÁOÚ •Ù|l÷1¾ä!+¾äÍØSö ŸAKj+ŸCWrZ3Ù Ü,/BmaÝ‚§XÀú̲±r7û‡å4‡:|?NÀl•Å)|+T§fl05'ª nÅgÔG³4H€gКºây4Å#¸Îr°\ø‚#UŵjÏÊ+ãVþŒgg/ô:ú­gF;ô²EбFʵü…í…µ\®%Zí¨žÝõÜþE­5å­q&O¦ƒ2Œö)°þ•Û­²ª„6S߀ÿèMô`;Û F°t<Ï2rCOÓvj)ú_za‘C§Ý×6£Žo±^pª„µÍ{Ä·,4&ñÀï§?n›–‘Á7ÿVyåv1Úýwx{™Ž%ùyת°¬®¯ü.~´'°—ÔÖÌ]T19PwÔÄÎö«â-ô¶þ5Ë`Áäœ?+&އrº÷½m~‰+Ñd2³–€÷ª€¹ÈØî ¦ÿ„áÖv5–Üæy€çk  –ÄÙ˜n`Ya‰Ù2QSÕoÃ0ž¢i§\Ì£Y5Îàq’çf‡Ø[V½Ô zÃc¹ƒBs°–1«c]ÖÓ\ˆ™ùÙžå䇡dÀöb+~Åc"L5;Õlù‚=!U•vZ©ÎYMñ­uᇱ1²bw,E5ðOí!æÔnóÚ0‡Š`1Ž.l.J³¢8•Ïg;q„p0Æ~‹`3”Åw{OËT&4ÃEei"™sG)G+ÛgîwÆØ÷k´¢Ðš&³ð'œ§¦Ð‹j!Ñ–}æŠ?Á0,̶i¯Å6ˆ³õÖ:h­øH¡‰ÂøzóV°"4úÖû—™~\Líão7÷㌫̀çpJ¹ÀMµ›.Ð&öWäÝP³àoÊåfß/ŽFì »êXÁQqlÎ×jWÔù.¤’çy/¤.IÉ’~"uµÿûï¡ñû>ÿÛƒ4RðŸôh´ªú|Ñ\äe–%ÿ—“¬W*dt7P×ﵓ9Ì÷>W V(¿ouJ™”}¿›§^ø]ý÷+ê%ÏÐ2¾×¾0ª{ô—ŒÝäºè/™ëx³8F¸Ò£e£vç]èt&ßðìN-›ðÛ)~ÿŠ´„@3ÃéË訢Ã=}“ÍzÆ YÄŸ\hö$Ãå1–Ù¹Ã]յϖÇÞJï j²ñn Çì0]`ùs5‹?#&ªæ ãE@¿—×õT6g@/#^º{ØSµUÎmC\?° l×;¸;ºf„ ÕžrNà{0 +Â|èmà#õã[ø%,ÄŠ²HÛ4±˜=‡¸•ÿÀÕük¨lªª¶YïhvpŠ5Æ‹,8ž:iÿÂÛ±3³›lí`K!Aí‘íÔ#”O¶}„""§þMÚ­AX ' 3k>Ü3ë[+d¸·íÙ£Ú`y|CMìOm§9ð½ì—•N+ùOÏûP¸ÚØœ GŒÆ–Cl¯^M[nOwÙôÍŽúöYŽl:ÿ ºóç,–—f…1Y[ka”æš^žM±e´}± I,;›!ZŠMâºùL~ƒúÖT•©îðÂ\el7<Áÿx«†ÎT¬æÞíh£w´¯ÒKãhÑŠ•€Y˜“î l jái¤.óq¬6Nô×Ùÿ°7û«0fÈ®ñ?Xܫ凑ì8›¥¹Æ·ÂLm¯­&µâùø`¹”ù&ô)¸Ùgy³øƒž¡b2J°ÕÕk„­¶ÕÐriûÙz!ªꋵHV²úʺÖ`«(ÄRÔã×ð2+çø‘—µÃ PX!¦*Ð Nuh“U˪kv j¡)ffCã]‚ƒì²8Ç3s¾GR-ecí´VX4Š®™œiDø³¿$NêBlámùdÇZˆÝØŸž±zØž=†l:|»Æî‰¸ÏÃI©çê“|Cñô‰ž«5Ø¿S+»•Ÿv¥ÜK{‘>ÝãI=ÿ»§õÑjK+Ùi‡n›¦?rÿí¼g_¶:²DøßaŽ|á#Z9»Ø›ÛÛñ[ª´Ì-»¤ÿˆ n Nµê™ûT+öMÏÇFh—Âþtluvp÷°gvü!â´¿„nÞò ñYci¥<­}5}íahÚëk­°¨íœ½='Î8-6C›ds8êÛÿÖ°Cä¦o¡­F+s MÃîXŸ}‚fÒÀ'8Òò°9l5­TŒÂ.¥!’ÀÅWÐ)ƒ©1¿ÌJ±68,âœc3ÄÇ ‰ÈëšeáElÊ5Ó•¼jC(»ŒôCá½YF^µ—̬þä 8…Oð“>²•¶Q±X?`kt²>¸ &àj§ ®ÇN‚|ì.f‹•†^Á0¼Š»è-,€´À;Õ?âN˜Sa >û°}0‡FñePšŠxG¸ÁJBojC[¡QhÜ„'²,‡âÚ*¯ÙPü¯Ðàg±8Ïöã Ì §¡lÄ®Ã4ˆdÉ 'E,]y4æÁ½l7‚´„Яv±%xÓú‹–S[«›ÎÊÑOUAaKx%îCu†â^‚mÀúì_Áš`̇×h¥j‹£­p¬Œ7ÔÈ?Õ.ŒÀF²&Î:°_àÅ/Úṗ D¶‰½ÂZjŒÃÅ´Ÿ~Ñ1¨@–šÛÔ Š‚¦YYyO>-ô?À}غè¡g÷xœæÀjˆgßq Ùp4\Øcü`›Ä/°ö±z*?ô–í²ÁŠc[èÞUÝ}úèîîîw×Uoç¨ìì®PG*ñ(=È!'Š|p:À¶I鬯¨KùôªÃ”Îü€ÒÉÑ5F•¥ÁLƒ¬çbGxžõV4`*V£Ÿî¼jì¢2^’5àÛŠ™ðu¦’4ʪÓíò%Ö¿CC^]•;©‹õÈXap D®CiÌ'CÎÏ®ó®x]×ÂúJu¡¦ÙÃe7ÅY*ÿPò…ò™þÙÍÄu+C*tÆwìã(èøOkéz ¿p®US[ù`Óå@:£~“ÒmäÊdå&žR_²ÃÐÈañ¤)¯ye*.Y›Ðyˆ`y •±Êh¹›Å„Qß,)³ZÿZ…¬ò-ïÏä|†±V/»Lãd!~Vì†4j Š­¨7xÙx|sí̸‚fÙgxKØÊóÑxkÉRTF°yø£„_¬aÿZ÷¬¸Xü"§€°×Èê쒬žkoE;äù¨Öl6ÚQEm'¬uA¼¶N›ùÅVÁyâ%3vå£ùr˜‰'¬²éýh’œòãJÈnl,GÝh›\*ò(f£¶ì‰ÒJ±¸«5ÕÑåí*ÖC1R%NPHy ·qdQ iŠ{z_]«”„¼…»à:Â[=a7…½£þ°œfˆt¶Ê4ZŒžç†<˜wQ.ãA¹‡@%9EDÛûÔ™v³¢xLwh¸UWîà±øˆò~ö´U<ÎÎ1ßµM®µîbz.ï;í¾·™+AiÇï2.»@´+>£µ4•ûYøìü¡Õ{˜¬”ÓÇìÊû•Õ6ò;†óE8ª]Ô*ö[–¢9gx:*…þõ7±[š ôb󩺶@³ey}W¨);(Ë[%eÙ`ùôcÆe§Ò×Î$gQ<¬§¦êUÏG}†NLÚ¾”~‘‘ÿ‹Èû– ~JÝÏ;ñNìo‡{hÖdѼÞdºÒÓ¼5<õMö¦Ù&x]ꆘúÑŸ­ÉVTä”ë£rÒºôÕù¥¸‘ñ¶Éãt V(åèo*We3ênKþ‰Uñøi]P4˜E ؈*âU~,¸‹•a!XtnB}º‰ñøXÞ¦fÐü˜»Á>³eŠ”4^¶Àú‹vãB Ü-ÛÁ^ÜmÙœKGiŒ4Ñ5(†2Mž (7Ý7pƒy<¶cŸð$…ñ-ë`]èÆ'A¶œÝ‡ìx¾ÑSˆ†|Ölìƒíq›,BºR ﳫŠ.–È-p†®É_Do¥*žÄ|l Ìç÷Y<½ ê°\)K±ö*{„&»c=¥û^ª‹ð$ô†pœâi ´÷ácûý|xþ€¦t¹*Áå }•ÙpL@dŸäšoW— eFjI{©-fÆW8+a~ö\™Ï6âïNËAWû4`éT›½d^9ŽÊžÐÒð?%‚Çñµ(&‹`O‘‡R`7»Áãq®V¯9–(n§þ^Jô¤5λ³a!3’z=íDòTÏp×>!ºœ³,›†ßÕJt]ÉÏ—@¬Ò@)Ï[±™¸ VÉ­ò ýkVÅGLs·Ø`%Pj¦¬ÂÊêõ²èJ£ä$ë¼±(ÕHþž4óÓä /ÕþIk¨7ãܵâf~îX뺪§½C‘ôRV8Tñ'$ž…,‘ßi3Þ7Ä=Ó{6¦»:ÙqÀÕ8Úã©íÿyÒ?ÍKýqý¦mg€ëôÔåªæß~5^qG—ÓKò®ªÚ%îÖO@Žk_Ôåêrú¢PÎ+„o`žÀ_ØJ÷EW@Mq”WªAØ"NEšÛ'ß|¿ë[Åo£‹Í„òAÆ žÊC>„צï 8Zè£+œ\“3ÍvfñùqÞ,)i•VÅÄP¨ ›² \TæáP–YÞ7®$ЇÑï¢Ë:¿Ç\÷É»ÉÁÕZJk–m:‰WÌѲ?ýƒ¥(/èf8HÛÙ |·ÿ¥¨¥ÀA5]9Ua³·6T>÷Í(Ã+Æ9¾éYxC|ˆ›”KÊB¼&«SHdÁ‚l¬…IX_b<üaí‘çØlÖŸÄ'jCcUø„Õ9|Äü/rÌìco‚½â¸½ÆõJjêFZ+YÌ€u`×! <‡ùvoK¥±òž5I~€>ô‚Ͷ¶ÛÊ–ÖsñM}¥vT×Q2˺ÑNþ—¾Y]G?p 0ƒ˜‹I[…ûê)Ñ_¾iÄü-Ewãq'Òry@”0Þñû‘Þá‘ç)‡)~»œè ~J Kð|ìÍàí1šbå;[@hÕy]¨Äp_À@g ÐÙEs¬Ee>õ.}³}»k”™`—O9Z&}åsÑZ¹v;®;jXñÐj"AŠçyÕiŽ­ì/vB™LN¨C%¡Œ,A}¡£Dš@ŸašüUô“ÛW¤jÁ2dTEî9é{uFp'’l¿2›Â)6\®—xO-êŒÃT²¼Ò‰>»UÖª~ë¦ÕÑÜg&0X|ðÈ<:çµüߢdží“ÿ—o }ò‡?­|Pƒ¿'§Õò8‡CÙ_Òꄇ¨L“¹OI'ÿMàúh»(·ì-’åSÑɾ#ö›c„J6=‡âX›nò¿Ø(~KR3H•^@{d{ÜHGÈ!«ËdªEõ‘h½ßdMQO”€V`ã&E`2¼•^ºJqb°ÝÎÛpŠRƒŸÓ—ènGsG@hÏÎé?¢f9çºä6½é®|ÚÓR€×r]Ár»/jÁ üÏhg†A¢¶Ø*«ï`ýKMØg#CPVœ‹3¦Š5"1ç+RU½í}y;s(¼:ç‹Ïy>çu=K¿`]¤köêC›Ä2øŸðɵ¢5ôÅ^ò_e¢¼ogÂgJ8}:¦‘ûm®ÁY›øN¨UåßÀË>ßþR;²5ayÒj¹Q^¥W¸OÁïð†=PÖÐ[˜È·(ÓÙ2õÒ¢ <×õª7ã?ƒî‹¸&êÛ†›,Fa9†–°X±•NCYÚQ˜ÄêB6š‰£¨3¸á"˜ìWÅ Ëp|Æ*cüv°×³L)0^¡¥þ¤ñP˜Ðßbýcw²+ÊÉx2°ýÊZÞOCNTaÞe•y/zã\ãTè`'âЇ6t¥ÌuØ+ØF =”ÿKä´ëâR)þes$8¸#§ûk޶Q=³]ð ÿô`À‘“Ö/º?9“ø"¹’7p/r&ÒSœ±R­‘î%zGe÷ ç¥2Ô]fÁ<\²’”õʤX/ì‘mvÀºC/ézx‰ìˆí î©oœMÝ÷ãlR­”b‰}ŒãxÌ2o2'¥ _Ïûñaø•ÀjïðmÝômø¯ºÒXÈJê–Øbü>#m£©’Ž£0Êê€ÀÆãzµ»h#Š™ºØ#J¨ÓåPÙ…·†N°Çš¼”Xâóó"ù=VµóÛ¹ämù’/+8V?û’_0¿¨^{ŽP(±;‡yµ~Zõº@Ï ½ã“íRáƒÆ8ódè·Ô+ßï¿«õf¨Q0åu†Ä¿Ç^w6Ò·ùê;í@³È°@×p¶ÐÂ`=*° ¨ùí¥„ìût*[ â›ÜæÈ¥ÿ§xê"j]Ämv;ufpfj–`yó3éQ¿áfv€µ(ÍÃun÷ÇBâºòþan¥'Œà1 Æ'v]yJ[å7\§”Å{"“³“r;2ÛôÝå"#તԅÌöfvQŸéœB.âØÂ%vIÝšŠ‚2+¦3“6EÌ&`Ïe&Ü¢ö×Kø:©Åå¦ÈþQO>±#ö7J¶ók­e^9U+«ÓPy+x×Q%ù .‚ ð SX$ÁTx¦t²÷Ê0ÿQ=åDÚ ßXY>ƒOcñêH\ÇæË—ò%ëªÕPGRQóÌŠ¥y’w–»³Ë`çR.¢ÃeE³:Ô£¢öãï@BZ~³l°š’̺±¹J/êå´Zr6Õ³^²bÚKY‡…Ü YQPØRþ’íä™YUç(À Y ̹RK"…#‰Î êN§»¦êbÞ¡Wá‡Á%i• O¨Šc`tÃØÑ-µ>Ê»¼Æ˜¨|‚‹jM~€­ÆNX•VÚ×è>³9\‡[´J^¢Šö[ØG~Y€6S.™ I…š™e]>;°Í8)?ç…5³-ƾâ¦P`œ:2°KJöTGÚÕ;²›ýDz, %­§Ö}.<õ´U~ò¾;B;8kw¤ýxÎ|íxí´ùÙ˜žÞî,-‹?ã×%%†>«%Rr¦ÖH­¬nÁ)ÿDúY§ mdo}l¿ú†Ç³Wzºû+Þ’‡´ÜÆ`ÿg¾ßìéõŽÓ*ìé) õP³F—Ð߉áš:<ÇÚ~LøÖÙ7 ›s[Æ2‚¬°œGÿ£LxfÑilMÈCsdOº •¨<æb-ÙypBe( ¨Šãá¯ÌòÀœDˆ*R}Míq _Ke9úÌ…rÐCkX*Ê4+J [è>”ƒapˆü, Ðt±˜|ÐZÁ*y úÂV žÀd([X=ñ>âü“î‚“þ£/ÔE´Ãå°ÛÈÌ2«|L9°«AïÙïx g DZ‰äâe¡-â&Çš$ ^rË?m Ïc”(‹Mùv؈ ¬4ë( ½§Að‰×àU–ÐRYfþ ÷›³sà NgèeÆË˜‚·ô>b®< &ÓØŒåXkÙÎÂCq^^¡Ò|)G˜ GÒtvšåÒ®4”ÊØ7Ѓç¡(Nà+Á€Ãì‰}“.Éx™‚ßð‹çÅYyÇ3²'ϵÉ9’•õ¾!wºï£{±ž7÷ssÿзãe£R Ìð!;‡ñ/¶®DŠñYȱ«ÞM{¬`Ȉu°.Ta›×ôÿ5¨.ÌüP&TÒ^-½âµ=Nd‹Ì2ýì`}¦¤@cë=EþŠ¢\ÖÔÈrš|kŸ§˜Wƒ'Âû‚ç"Wq†~!Óå˜cúAwz†YÊ?Ð:ÔM %—) IDATž°ß„ß„ó#óé³]ÓE;ìQŸ”ß±’ØÈöòTk«rG^Onô³Û§×šÎ*ª•cE¾ˆo~vQ2”aHÆi®S¡z/ÿ ÏÅ¿¿²¯qƒXoÆÈ~Æm½Óöຂ‡”šäà/rEp^ðÐ÷«á¥iE“ŸÛ%Ó?kÛyÝÑI" ¯8v'7õ7ü^9|lÍa+øå‹>›eÇ3TQYÄŠÀd8/ÏÐ)..+•Ô5ü‘Þ™•`]l…ßÅ’éÓŒªb_LDÔÄj ø |SÛ _ @6È:éB×Â[ìiá’Z¼zUË)—‘"ÊùPØ^Èó)Ãà«Ìh¹B Ò²XÕC'ÒÙ¥åi 룈{«Æa ½ üË#w( ¯²q²¢|¡Ï§$±Žg´B,eÔVCU¥™²ŒEER›ÛeíqâBx?”ê{,&c*<‚+, 5¤¬, â^v‚~ÂÚDãdz*/Ð#·—þ´oË V†e_)§ºÃЛàñšÿ¦ÕeoEsk¡Ú])Ä^bw<Å_+U”žŸl öÐljjV^¨|’ò6í¯“gl5Økù×@w'XÃòÒ»\¤ƒøËn¥½e=¡¡Ô^bÙ˜i>æ½Ò–ðÆðŒì]ú®`Áw`¹Mþj4å¿Ü);¡`©Ð¦ÈÇp*”„]¬¥ú«ÖLõ3¡þ-óÓjÜo £2¢·ý™÷£Ñô›a9”íƒj‚ã(NÌG ‚-äüF%­Sör‘`N$Y§ä0Ok~G›#ÄÃH”ù(˜Æ(ƒX&ï9Îé]¨äç3Ôy‘9F¯ÀI³–ù{ê+v—m£ZYqÓè(ÒÕ§‡œ);¾?´dð^J7,!?ñ!/'Žb’±ÁÒŒ.魃ϭҧ·º¤Þ .2ŸEšïŒúxŽÙný?ýILTTë˜ß<˼{ܦ`,,Åh:IG1…þ¢X˜ O¡»Ñrt§cæ`©‹Vg¹\žÇ[pF(õ (\€ñ0Ú£a3µ“]À“0#›‹n,mÕ‘e ùMcµºÙõ1nTô˜¨Ï®*¬ªÎÙÁùNý¤îwv·:[nè!ûËD˜[4º†ól†ÜÑOµ¦ŽðÆš'ý›ñN¤ˆØˆÈg°Ç¤;nð(³¿í^lõÔÀµ1Û\Ñj#³”yÝ>ðqÇ—š)wýCÓG'˲ò¼P®òöü‰ÖY{êÜ”aT†…1;²Ê¨ã ÞŠOeÍùØ Ï”¹HxH}I­iß ¿Áy°ÙdXc‡x2[gÇ@=¸B÷¨²|ሆUO{HÍ©(ƒçø?*Œ!,Ž©x{A5ÖŸå€rx€u­ð'ô`'á+|àûq‚;G±<¤ Øš`{©`44 aÊ%~Bù¦eÖvàâØ?mù¿1Ï¢sñâZ-G-ÞΓ°wêÛÔјÏ÷Ò{Þy—c`™Ü¦½b½Í«V?V‰mfÏX^ÊŽ±JÄ ƒ mY)ÊG`Aˆg“ékÉJ‹A¢1ñ\N2 Y#dÙP³xÜZˆ¶ö@Y1Zí/2Êa˜;4+ðÙ_(°>ý£¿ƒÌ¤U.ÇMÈö ÇØ¨ûÑÜjGµÍìØ(GRv!¨KM”‚®jMçPÇ9Oû¨n>Ãü…}à Ž×¾Ò1³ 7t·.RU6̵ÐõH†»NoÌÿb‚±â.Ç´ÿ˜íÍÇǾȕíÛyö'FäCHea‹ÒH«¦MdÓxa¨o•±K(‹íßéÓ­¡ö |nœcÏ ÖLï–ö>4Ë|`þhÌcó ËØY†WSáÞ]™©”ñl[ƒ ðž2\™Ï"Z*Op½P§*ûõ½1{œÇ÷=ý™óƒ«qfâõ ÛÂé•SÞ„f$W ΄ÏéI!O¨¬ú‹ò‘o¥ÌV~³(›k±?Kqäàw4ÓxdI­œú=ié—õ?ÇDFÊ­z´>–ó-VCza<ÉFÑÑy×Î /ÍÖÐ]ô´^Ûü#¬)öc\ŧúÛD…£Ø{Tz?-žf™=0&‹¦0ŽZ¥€ƒGT¦©ß¥—ÓnYÈîAoh®(@uEYVt2^ŠÃâQÈi®U6(sµkÊjö6Z±=Û/¶³?ù@hC eu¹„´J&cWxÃ2±³xS +û¸®tÔq\UÿÆ0݌䷖ˆ*Fj°M`aj=qÓ>ïlN‹´’ëJÖ ;ÚJ¢Ïbüãø©ôŽ:•±w®@–#úߞɞóɇ«%HÙœØ$yŽ?˜fú)æ"3»¿;uUé‰ý‚öÚ5­;2·ñÔÚfÏæE•û<#íãyyªM[á4Å­àgù± lçÿAäØp5ül€Mð +;¾a#61xjOµÀ× û•EcuíwÙŠJ@6YžúqŸÉÇ›³ÅøN9y¡ŠìÏ/c99æÃ)J1W½:,SÖÁz¬«%@º¨L%•Zƒ ³èŽ£E0J b5ÙÐØZf¡7 7(0JÆÐDpÓNÈ‹è0 ÀP÷cÇcr† Â'žÊàlMû”£Ü}Ã÷†ä¯i_Èg=ñ·5Sð–­îÉ dZž¹]œ;f½£~êÕ¤W gå*k‰‘ ¿)·Ô ¬6ÜãÓ¥ Ũ‰õ¦É±8 h6 ÙÜÅú`~uŠ^‹Z¨GÅpª+Šºr™–Ì;±æÑÆù²^푬l`w ‰Ú¥'ùýþÏ‘³Á2"< ¦ÆÝèQ>­3|æÚFªO„+ížáLŸU3PM­ÂÛ;öDoŒm™õ¦gqTžÌ1Æ ë0m…‰éëÒXÅ@9˜º(µ8)-%Ëžý¸õ}õÛ­Á·? ¾»ì—R7e´(Ãúøú±,J?G(CJ˜É˱²°—¹3ëµ½õr‹'îÛwÌ;æ-ÿ€ËDúL™ìŽ¥`ò¸–ЉÐcxs#U4wTömƒKÐhl'zÉ^vvãdu E¹šEvþ€EʳŽ?îkùä-ZCƒ»ù>~Ý~áÈ̼)ÃRr~ü;åkŠ_K2 Ë:ÐÆyŽ]·×S-ãSrKX¢”s²æ±n/¯nðp÷äΉe>ý0ï¸úe¯!‡É4Ûú®ûçà>^—âOÌh™•ëF÷ôul7ŒW.[ã ž>E¿g$ßõÜU|Æ-ÇA¶Ù®ªÔëÒ¯ÔØ.`þB£p•ó]`ýœe5#+¢])ÜPí3íKZ¥è”êáÂðÆÿÃÙ“y&{î­É×9CvìnvÎ6e-öÇxò³\øÌ>×9°­J)öûŽ +q¶‹/aÛ½«}ÿøv[#­¾vóà}mjž´UÉŸ’Öþ’¯ýù²VÏ>7wwqˬèüî‡o£‹i=âöe"hýcöÒäP¾Ôݺ“qŸvFíþøÃ>©¨¿«g‡ß†Y“"•̾ÁkáÏa!Ö²Y0ƵZý¦åÔO*7õ•Z'ÞUYà`|·yE\!L» øé³u›@E,Yi±C{üŸ•.ë‰ÁÖ û¢xh¾²Õ†Ìê5-»3E¯¥=tÍwìUmµ¯ÏZúö;/é^ÇMý¼:Ê1Û·žÁäÈ{»’5#å°yÄ~ì¦>ÆÁÊõ´êÇ"ªGäRh&ÇÇÛí粇ôÛwÅMûÔ¤ùöq̨ýb¦ˆkV´õ]4¡|úý}W[Å(%  –f㌒v'{ ½Ö|*§±ujG>¾“Û঻ðãé6çKh:[——Üz NlH÷íõ8–ºÙ/äVX­ô”`kI{±ÜÂsì(ï¨Æ'°ØqJgúVo‚³ú,­>ÖSޱªÔ[‰ÑÆ*•L|­öÙ~î/$ÿMé¬fÉáübÙ&°•—Qö³ó,V髼6·VñÕØ×HÛ¨fV+;æhQÎOº‹•ˆl6Jèlún£©ûžû¢óyì÷ØkÎ$5Ñޝ®Ñ#áPÚâïÚfäMÍ”Þ×û3¶z=cÛØÜQ Yný¥ó‡èdü.§¾r„XfUóØZÌ©Q;N²¿h­£¢Ý8g¯ìcž¬žtýG¦µžÔØ{1ocú9³Ñö„NÒVY•F™¿ˆbtÛhlO‘iø™åUêj-´“Ú§Dx™a©5±b„ßoÄzt›ÓHïp•ÒŠ~ýÿž\‘vÃ>ž ‹ã"mæPr襴‹¼|ðWbV2Óìò¨­Èb”ƒ-ÁÒì >$Í {ô%aAhÏ¡y¢¡-§m4…òàt–Ê{äÅüë{ +ÆR-X,«Ëcôžöâf懫N:ˆ}åyZ/›â~vâ>ø³ËJ4GJ ?Ã[YK~–ïøM¦Y­x}6‡/¢¯ð—ørÂGºMei<|ƒõX]𦣺²ÀyÜCß©<Ž‚™0 /ÃqêA¿@na¶èF Ô.ôòRJAœÈ¶ãàèeép€„õ8HÚ²85²ð¸ß²W‡Õ  xa3 ‹¢9¡)–…¬ Œr°›ôöâvÒ` ®Åfô/Ö`©¬¤vc¿‰)®µŽ9Wò[ƒyáy#ò„ô¤f­% WtŒü ÎäÖçcöp+óoù%ò’ÇhQÑëxK휞¦Ív5WfÀxReæH{( aeQ:òSÔÑÎ(ÏBgüŽ}e¥2_ÊVzÛië=YœE­ÕUž\Î6Q¡ÈñJú÷'ú’/ý´¥ÔñŸøÙÕ¬ _ÑoHæ¤pc`(Ó˜ùÕ¿-ù™y"°ó;wóŒÙã(‘©Ž·—'—¯«'Mß …5ve ‹Mj´!¹·©Ö¸ÿ‰æëç ƒ‹Ç“ýþS©©[<ŽöE9Š.)ïpcÖÉ®¾ƒYš8«Xž£jÆ,´õ†&è×ø?zåÌ¥ÙK«HRÆ×Íü˜_z15R7ÔÊÈ"Æas’þÚ]XýCjÞuÞ*ÐS.W*o฽V™ Ï€"‰zË ÖA£2® f=óª½)Œ20#á#œ6“EØÊeüv÷Šw84õ€Ö\™gÏ Ä%æO.–T úB÷ëÌšQ[®÷ß å ¬ûÖØº¥îôí²ç&¶a }yYšx™ó=GZŸŸ•ƒ†µÙp½9‘F¾Èb|êÍè*`7Túò ‰7•¯šÏ«EšªK½]U\‰q÷E¿àÒÔrXÕZœ™º10×Ï×Í]Í2¨JG»3ÈßkWØ™ÉþŽñB·NˆZâ:¼1˜ƒƒ¿ã3œgŽ5ü£үñ÷¡Æ‘S¸+Ífoc§ðÆÐS?ge±'êŸEĺ@C½ä( (F`uQ)JÖ Z`^YY[£œ`ýá\”YÙ>õµrÐ=Ö9Üãt/÷‹ék U ß6–DâS}jÀó$ì nÿÚ;4Ï›ÏÓ6¶+¤ò½Î6K¼9ø>Ä„¿_Zª"L–ÄhM•Œ¼™ŸÆžT4[]äÊ•~"”Ýš/#Ö%ZàˆS³YÑìîÃi ŒSø;e*޵rËìˆc›²£XC¶ˆí„½fG¡?„°‚Ê€|¤ëä-vÄjW··[uìŠÄÇð×—§°Kì®ó´ÖÊñÆýJ51Þ•à˜Â>bÊ<«Úš$+¬Fpž2‚q, ÝeQvËB¦±œÙóí×v\úÝH2«µ34Òw×ðõŽb¯P°ìP¾ÊÌ…0 sQ'¶¶ÉóJsèEWñ$¡ÝЉVxƇ±ëÂd¸ü&¯Éoá V Žh#xië6‚ÜhÔjóþÖ­†Úƒ½U;iUíL8Õa±Šð/;N+%íµ.kG®ÒÄà ÍâëÔGÚ9þT©­³;‘iÆ›ó‡t×Õ×yÇ®)ê\6Öx¬â­#—Ôç¸o‰Ö¶[Þ±Ç[ûbü¾£Š·Ø®}ŽýÕ³CãÏ—òG’ÓîúFPç|VF™ís¦c%e¯Ò"’ŽyldK`®ˆÆŸXªã^@©Í˪ì)ìW6"2”nÓuÑÈövruŒ{ Ó•Q|ˆ•`m—nó„u€UöçäÄú©¿‹­€Ýß:.Kè3´ïz}í¬XB¿›EÃ+ M"½ñ$Mew`# vSqéƒ:`àTtãÚyÜ{•t3*§” /­ºuM饎·¿*ÿÉFAÌlÖ€_±."îцªOq—½[4¢eöf;?ÅA ‚íP WCì‰!´eC¨%ò!XÆñ­à‡&ÒK6L—!t³ñÚ_¢s,#’ˆ>x”-¥f4‰]‡#0^Ö‡1·‘›rȲ.ìTóKÄ’,ˆ a·ÜËöCfèD¨’rµŽl#퀔 G‰ÑIö07n‚‡Ø‰-ÄòtXN (Z®…4÷(Å!³âlxÍì°2ÁXì„Í!/ÛÊê‘AÉbŠŒ‘7ÄEeÛByX6œ‰7YM– ÉOâÄ0çA# {`˜‚þ4Ї“±7l€žXNÉ _¡zdo:kŸ /7V†ŒÅ,èŽSHV>Òøþ}£¬hWL«õs³<è¡Ú8”-ò&éoCõá¨ƒÕ ¤?Ñ·’n)K½=¡¯ã²1ÍúW6ŒìÇÊe‹‡&8¿9 ox¿ ˆyF9‘hîðñgå:¡åt´zê)í,ÃÆ¨ƒ1•¿±"áY©d=«‹RN9æºõÕ<#>`Ë’™•®¢‹U lQÅê(‹Z•ÍA2Ñ*e ³—9ÏÙ Äu¨2/8ÿåUìfî1Š[Ž2zÚ‹ÅgW}‹6D;âÚá*àíåLpÔŒžE…c‹ñÊ">ÐO/¥VɧÆÕË¢eCWû/\éMP? óÇ\ÿcÖ h'£?Dö§ö L²Z¥¤¥ egÝeð‡Ú‰Ç°^öv3Éz­Íâ{xŸä¹ãØå8­÷pÝgëÄé$À |`²gð%Z7v™å‡ÿ±ó4ÌðFªÇÓ_F|ö(¦9Ç).qZµöÙq®2ι¡™ÇøW-¥ÄSGžŸµÕëʧÁ¶~™v.]¤NNž”~ÆhÄËa3ÿ±Pk*æì'CàJí~ÄÄ]–ëè¼]Ï<ž¼*eŠóRذÅy¢Ô:Áѱ92äˆ{€K]Î,3¢´ “ãVɉa'®àµd÷ÚÔ‡©ãS››ûÙ:»`u…C<-sÞ—F;›¤tµ²afy1ü<¼-%wk£ƒÃSêjuÖ«>HÍHçà>ÿøT/¦Zãé!oI‹CC«%²õ­÷„ ¨’®ªúYÇnX¢pxñ¼ÚBѰ ÿE6”ÚÚE5Çý†fzƸÎú~ˆq[ôx½F¸…Ò(|4áýש‘~)as¼8`ç¢É¯·«Õ™‹Èá]q Ý1ìׯþÜ÷ëšvJoϦ)Õcm‰ZÌ™U6×í­âO1sÛ}´X¹Cd4œ‘¨pü 3â»Èj´’Åñž Õ>±{ì.Ü¡¶ðvÉ#ä‚tÚóÕ°œb?•¢jtÌ>`oB?C%"ñ¼·=ƒw a£ÈYÐçsíÔ?¤¾eûÄ@Ä*Èf6À2ºBßí4LL—ᥫ‹ÕŽÃ1ý=ìþÁF®¿¸7x9T—fŠÎÔC]et³³)ӵ⎜áñVc»jP –TT 88/9â´Û,‘ïÄ¿àž¤é0NfW!E>—‡i#6½8—>ËlÒC=¨¿XÏY) auìȺ1ɇ)YOvNÒXÏçñ¾¼1l•Ùè3üµ5ŽiWai`ˆj̃УF«)lŽãOõN‚$ú,6É}v'«”RIé£ …sPJd%emÚËûðØ‘¯ƒ‡²8g„Ÿåƒ¦ü¶ã²£´ºLíëžÍjødšäÜ® ÃŽ4^ººjëh]Ìfý9ß~á;à›c/ÆßØ3s –Ó ˜ÙèŽd¥°4 àAÌF7T…=¢¥JGµ&dWÝjvÚ˾Âpk]¸íLÆã»‰‘T^;'>Ê,¸*Â,ÖMâìL+îfŸúY+ùv ·q RÊ”,Fò\ðHäÝÂMBÿú‡;¼øIna”Jü;]Æû°]Þ–ßáTľ M”BÊlö àke)9h°KÛƒåHQwÅ”vXñ <ƒ³ü0Ž…~J–ÌvR ÿ–Yk¬Âv,o‰p“¡ù°<ÝB„¼°”•Å¿q?-Øe­”£™v=¡äÅì¬û SaFQ{ŒÆÁJ¾’º¢Í¾ál*Cl´¹¹üh‡Qƒ¯ä«á'?DZtM§yP™u‚êô;“ ya*þÄÒx 6À,dð’RÙix Óä2j ]¥.QeØŒ%ñ˜Ž3ð*wËÜò;¥Ù–‰÷gMm‚Pž Q*Èür.›e-1Ö*Ë:a5>N ¢á´OÃda–¬Gý¨¯tÀ8ƒ!˜€—%²øUœ‚^˜Hˆ#Ùb–ÞBc9CaðŸ=S±OˆTÿµà?ÆDO¬ã[ú(õ`8Sð£ýÄP’†[):©¥ä,& YCÛƒ= Û­ û;kç¯ÎÑ›ú²Ñ©Ðà ]Â?íIâ¶åu¶È²YnæʼnŒÍ´{ö’ô i‹SUg!m±ûïÏN«“”‘JŠÐ²¨6‹5ÔšÁ6± :^ãbe¯Ö\sòüz¼÷©ºÅW*ãéŒ>Çw3Ϩlä‹ÔfÚ[ÞQqF‹L»ÕÇ®*¾œN¿#ÅQ\)LOÄÿÈmMýñöÝृÛq¤Qœm3¦kƒ\#¼Â•šIêÙùD§»°aä džìŒã´±±­¢d|¯q¯Ä9*érŽѹ/Ì^m½7æ&ŽÁùQsƒCÃ+R–AN™;ò])ä©{­-æ@­½=‰ya²¶K‰åîq®Bl¥¦ò她'tW”ƒö:áTþRÑ™•€/¬º=¹-ܤg4»Ú×`w¸I`§hJ½åFõLê¼@6ë è .s W-çÿ´ ì¤?J\ciØÚó(î„}#p>¼–ǰý|wÊ·HY¹WôQâÕ¼™µNš™sQÎGj$øÚ …”>X[„ᬿ¡'_láÌbÒ26‹)=Ó[ƒÝR:ÛÝSa˜ài윭—õå™ÕÁÖz-ÆXÖ>ªÈD®ú×ÚÿØõYQ(g]Á§&³AÄû·[)ÃSq íUÓ½*&‡õ§rfÛ½ÍÄpãN¤³]Ó: ƒBá?’kuxC·KÍZÊ ö»·¾YŽå;õ¹^]¹€£ðä’†UÛ›ÝÍír3Ÿÿ¨kÕzA+¢žW¾&z†È þVv Å~˜¼?yÙϲo/¦^½±0Ι¹_öÒžñŽ?¢Ýêô¨ÆêUý?]nêæ IDATìèH”ûe_¶VQ˜IîÅ™Z~–Yo©~ÒqÔö:Kð¢¼qÀÃ,–káA{v¶üF«€Yw†Ø~RùÄ6âr^TfY[n†Ùü½hIyèe¤?a<gEº=Ýp™•ÌV_1Ë“Íu޽gS¼9½‚-âšò€®B/¨o ­X¡Ðž`ÙÀ ®bæHÈ»Þ1ɼ–²J}Á=Ìó¥ÏüB•-ñÂ.¿B¬¨-sÃWk/v¡{vyœ#³K´Ñ4Â9Ù2-ò?ek·Å3¾P]«Ø)]g›q^á1˜K‰‘¥à™d-•»ÅHu2xXW6Úá#{Ù*H•ãdNÊBC)\Çù¬¼bK0'|ëòì†T„mÀ^\ǦPŒçħb l¡÷27Ld鬒:ç+31ÛŽ'(•·[‹åp\YB¨ÍÒ±ö„q”…7b À gp]“Çè°Iì’õè<.=ô@¤šµ#÷ÍVCs‰±Æ3ÒcÁ%ÈžÐ\!òð.úe¬öÀýV;ïý˹QIT@gvͤóp_ù ClÐá+Fñ™Ê&ªÇ¾²Šá]vŠk–6VðÎP^îØá¯¯W[ªþpã4›Á6YeÑd£dW‚Y^ã©Õßhý#ýGý¤òúʯúãc{yÖ;-ý¬¤Ið/UN6H¾õ³B`oÊïI+BK#-`Ÿžj µ¦Ð™[h´’ßÃlÆ ÃlJåà%,7¬T„QÌ‚FxU¨2yh·9%²ßЬ¤Ü`‡ØOì‚‹!+öÁ£"§\ ÂøM¾ ŽX‹‡PB]„ß!›½‚jQ¼¨Ýi.\ÁÛäÆYŒ 7þ”9à6Y†&¼:`!ô§g{BIrS1üi8ä‚'ì2ˉ-hì‚~”ŸJÓM¹—Bq8ƒ×°åÄ·øÊb_~Rà|F™d9\„g¡\‡P1¦¬-ãå0"wª‡Ì%ðwøU0lvˆäƒrtœ|â7eŽxÉ[íLöžà*;—Ý1tÑ€ïÅ94¢½½¬ bNh Eá“ïáZêü‡D Ø =#5\¥s62+«ó´P$§ëô›æ¦<ódñý“¥@ô_Íè6²<Qóÿ°¡RXÅ:l ´¢oLÓ–jó}WSõ½ÝÜΙê£ÍRF++C‹ôëQ‚ݳz‰’ “± ÊW+œo%ØÒZ¡ú¤M/Y7í³úÌÌØÎJ ÎL˜/7ÚSåv˜Ä  Ë@ÏÕ j Ø¥Mæ?]Õ Ïžc1e~d‘=Â~uíEôÅÝHå+­öÐîkÑ®b 8]<‡²Z)Ÿ5ì\竨eÁ¦¿¾dä§ ‘;ééÖ*ôE­ÐS}ƒc»–¸‹äÙTøK®pz©Àkÿ7;1ë×/Î{jmv"껫ŽcjLñ¨˜ÁV=Ö6ðÁ(aÀFu£9ÌdoØ~U¨#e÷`vì¤6K²l¡ÇV}¹œEG¨}8.°>“Ò¨¡ŸØMµ ûÊJªã±,>ÐÛ¨E•"JX)þæ—©§Ò2š}¡„óf+Šiá?”)â'?©•TÕ”ž]°§³n§«–²˜¯c} B¨žh ßx%x­ƒ‡X“WÂb˜~•Ù™?\CýËùMïãY”±næ·‘KJ›à§´„¤wÁÝö#ciRˆeÞÖÛˆ5öfí7Xí8Á^aihƒøÿZf]€Ï¹÷Õ‡q“&sãŸ][›Û´Ù¶mo¶mÏfÛ¶6·Ù3 ?½¸÷üÏSû}Å×ÓµŒr#üTÔØ Û#+D kgØÕ0ré®,^-j’j¨a®Jj:Ÿ-óñØTÄ+ûø{-‰•QÆiGe Y_f¥2/•Åî4ÌÊOíÿ‚µÍKVF³ŽýZNÆRü©ÿ§såwc «°1ÐU_ˤ÷Âñ<^áô”Ñ,·•ÙÙaïán¾Ø>â¾§õÅê|ÉJÀÚJe'ÎAïä°¯Ð8R£ÉôÙö@ñ@,4#-Y6ÁÚÁLVÝÐY3;ÛÆñ 6ÖÝÜ]È8ç‰õdr¿×šͽ-õÕj÷}¿±“Ǩšþ^ÑÔNü5n€4FöÕèu§ÙtWæ“;`!]‘…Å ÈÑ¢žÃÊÐ<¸ŒæÁŠÊ >·ávOÑÃ.c¶-ÌÞö{ç…L’Å<>7òEÌ£¼bŒµ`ý±8ŽdÝÔ©²Ǻ¡Îf[G mÍ–4Œ­`Û”?õmnMû©_s·w2XÃÒÎË ²M ¢+›·³w¼»–^HSeMŠ2ïce6a;<äÑbF4ÔKògÎ Êl{¬êöq^¼©/¶‘¹i$žñÎJjoí1ÔP¹Ra¶šf¦‰—bh¨¸¿|j±ôk«Ávp„Ī”3ggÊz%ÒHÓN¸>1/;EƒÕH¾Ð¼ã^É»èm=óÜ7Ô’¢ Våk“žÒǤ)IuÓüX™¨:عÉVM™çó[И2;ù`$Š·… Z ƒ=<À ¦Bal„™`0[…E©0«Ã:ʇÇÅH8Gs¨$ÈKtS5Õ?¨½“FG(“ó·ÝDÞ¤™ò¨ð‘|,ëyàlÁEäÿaŠ§Ñø zH7N“MOT—¶› Pží'`9vÄk†)ì(nÁ¼x€’à;X#ñ9®bçáƒÌùœ…Ðr;Ýi)Ö¥p–]óv¡½ØÚB:†´l öb>ÖˆnÂ9¬›©Lt€9ð”žÒV¨i¬'uƒêøEQN¹Oâ°ŒœG¡ËGíá¶à=øN!Y1>‚2au7ÆM«p]”s¨œƒ&by\À³g,œ™´¾Ñ4€×a?̇wt?âX /`?ÅÒS˜*ß°*l¯R *A2·±–bE0œ¶âO]ß(ãá#–Èù¢7=” ¶މ‰‚Yi©º½Â¹ÈäÛ䯺È,îÜsÊ3Îz*ºbêÀEµ–ñÍýY}Î…>ŒàUñ#ûÂk`Œ¨ű=xx}v:¸ÚÜd‡ì®Á'Ö"Xdvwнõ<ñ…ç·—Àq¼§~§eò |ó>ðÜÐ+†_sM`Gu·±Rì9›OäS§ ùÌë¹s›¶™µ¬¢JsîU"¡ý)]úU8¬vÔ&èý”sÌb3ñ_å‹–³Ñ¡½¡,´Ö©ÕÍ2¾TkŒÑã×ÓÿN—ºÀß#ô,ØX|pF[‡äO™H»áR¨ ”|ÐÊÄŸá+oÈÞËS ×<º«olO’\ËëÌ6O‹¾þ©ýý{ÕùÌÒ>†õò4Ñ÷ëéÆ5gÆpþ æ¤öž½öÞÑóç¡—˜ƒ Ç/ï:ÄSQZl¶Ç@v(#q“Æòm8ÊódgªsWLd m3ß Íå8ÚAõºfk¹^ê`¬í*àQ”®ž9žvj ÙÌÓ‚ý´Ï©‘¼40Af·åç¦Ì)Ȱ›úÉåðL| óà¶|B·d+Ú![;íé´€§Î.šÉâM˜‰c”|4<ôŒ‰aN”³SÄÉ‚V{¶ +À'ð³l‘zsˆq4ö::ö‚tö ß@<5€ÇØhÜã)ìºg4ÐFj‡Œ™r9$ð l &ò^ÎP³œZ/TÐ*«>Ƭq\éX^k·5—¿®ÒÔÙ–Ml_Ó_)™h”Q&)Eä(ú ')‚ÖØûGTÖÜ,Ò_•:ÐŽ eñÕ…ólm†•t+ònxJÆÆïnÖ/¼Œ§¶»³¼ž(Þ{N«o³teç~Å;7ñnøA»÷göT3Î,]#¼¢V'âfDQ÷cQ†~— ~>ý‘x-ãØ;¹æx¶(µU€ì%݇N²*6†çVEvjã'ñÙ5ºáR¼sr$å™Zf†qÝõ0ö„w“'‘ªûÖ¿[o®K;žì{Õ²Ãm¬Ja^°¯\.…«‡ ¤Œw¢øl–ê`Sk¸ñ?q é5œDùÓ5ïÙѹ|¹R»$Ô•-B±æ$16­Œæ5¼šYÏyZÄÿâÿD•psŸ‹ªì=î¹¹ÝYcnÿeÚyý½“«d˜éâMR êãenÙDø*RiÎ~§+ÓÄ;zÄ=<EÂ&û¼Æ:É¿àª,ïè8f¡•,7FùÂ1IôÆÿ¨’ˆ§«²&Ë×ôM©A5Tap#7ÔêOäÐo°ÅünÁêXKdž7/;Cíµ³êiûxân íÄ(e3Ë)g`¢·²K×ýj¥"Û¨”3b)›DËì]p†ùÄ`Z‚ÕEFQbè)¤TPéÿÓ2à}<ÌDµœ³Õù¡®¥çlOp ò˺/«µØf·›¿”†I\€p‡§£!ó÷òš/~ˆ”ƒ<¸LÛ¤Î6&º³º&©óØ_ü5ë$»ˆDyØÎèjÚÊ'òÐh® ýnwq2ËAöz±DÎG)sâ eÛ/ev¬Ã.“‹]Àcl!ö“m¬µÎ{zrÃ|*åî K‰Xc(Y@“Ä‚æÖù¼]²<~Á­"—@ŠøEͤG$á%pS,J:fõ¦«²ˆ³‹NÂzm©½†»´ËîKwh{ëq3Šàr˜ñ4Ø0” ail£ø#p)Yÿ#•E ²bv~X­,çÊÏjÙ ò(8UXV‡‚‚Ð_¢O°Ÿ,ôÉz²¾#Zà8¦\‹à²ì Ÿ ¬7i€(……q˜II4 ‰=a¡zð ¼C?Ä8yغê³Rc=X2<á^š~™·á}¢ƒð”ÂLH@æ€&ØAyLdY)9 ³ÁE™ ½àdÀ×bá&Ä.ÑŽ=Cƒ]`°‡üN†‚Ñ]²äÎR+|exuã o‘¼ÌlãñãUWo:¯Ž›D ^¥æP‘Âa¼gÖÄBÊ?ì*§Žtêñµœ°Óé¡mâEµRzFµŸ‡ºøF}°™z=ó<Îj8.ÖSù j ¢4†ábNd ÌêækGBFö?˜¯~vK§‰^Ä8‹Ýß¼ŸxþÍ•—ݧïJ¸¯jpr²-Øý|±¿Öºd¦È‚[},pç†R}‰fÑèÙžß¼­]o=W rU [¤ýOÏÛÄ[_‰ƒ¬n™”ê ùåÿX²^ŒUò°-vHα‹cO§§ý/eÑ¢ Ë/k‹C¢D=„ÝøQÊû«å\Äïšð;áÒn¶5˜âÖaÊÁ’Ó.ó®a~ýmx}ŸRT‹O{áÔQV¸¸ÚGyèJ÷]_"{ƒ™+żÈh™<#è³*• _  ŽR*¹O‰-N]c¢¾Ãµ5µÏ¤ì²âìë¡+òŒÕÉW“Í d*ètÊ™vÝhÀ»ó:îvžÜjö'íp÷Žø©;Jm:O‹óè9xö™†˜«©þ¾0×ÏbÏ’EÏPÈÜ¥õæÕu¿’1EO+l¢¾”ù›ÖНµ®…Ýqëa)®ûN/¼do2êñÅê=,—ÑïØ‚÷ÀÔ?…zÅ´ˆØh>À.v™×¿Ôᙦ{j¾ü÷ÓÊÈÂxKÅìg”ÿé]¢Mgåáþí9lo´Ç¹Îª=´Ëáåú /5gØ>µŒg…¹fEfrå÷¼ÏØ:T.øöGö`å”ÏßJ$ú¯ÁcöRO§§z Š·¸ØÇzÏô`ð´vWÏ‘÷~x÷,ß ÿðõý¿ÿVúw¾oƒjâBR§°óFþ¯½Å;=l<šî/‘¾@Ÿs‰^ñˆM–qúõV§QÔ€ö9±Îv»‡ÓÑEñƒ>‘>AujJëÙm¥ºˆÅïZçµd/¬ãNg·L~'ž dGeO£¢6\Ñ<Ùú÷[ÝÖnè‘êÞHÍÎsóó,L‚ì.d£ÂxŽ •c;ù'8…׸N9H tH4¡=N=g¼è%~—¬ŠðÏÉÃò(…CåHÙŸŠ01µ—Õ¨'Ž#/ï‡*<ÂDz3æÃcô^Í©yø5Æð§¬A‰ò5]æÀ;(M• JA¾O,•+᫘âÔã=µãÚ^¥±ºM}-2Z/-͉M_Œv~Úd§Óõ«R_ÕÝŸù|vçÕ`7ø@寤œVròrjˆÃØ”­¥ú؃[°CɯMa¿ŒóFõ•–Î[àLåÎĪä’Mä~+ÆÌŒ½C¯BŸ ‡ÏJ?~ßw/}ž¯[à¹ó>S?mˆò¦»"•ì¡ZÀ8ñ‡:Mm“eOÌ mC¦žªyõåêD ³.Ú7ÅÁoéIW}ƒ¥D[-ÌñÐQ;kîµ—ËÊä@T 7m´“Ù3¸ KX'¾ž"ôÕÆ¿úH÷÷÷-á4]Ô¢ûfnvŸç¯(7 \ÇYLÁZl Vc×a]ÇADÂ+[K—\`o¡-Nû6–§dZåìt®bœ³sàjÊ ƒGÔFLij`OÂX“­ÂrÜf?ðŽIp %Fá}öOà ðcV܃ °ø çÂ~¼†•þàa õ€±ÚL|Ž'yþÀÕ8?c×À^º‰”‰¼P*!Â^œ‚íäDœÝèæ„ÁdCH¯!>‰ý¬6œ–iì d5Ø6P¬dCñ;åâåøK(Å®³õ|­¬$*Ñ|˜KiŽÊCM‘ .A]ÆÉ¸Jb5Vwa9œ…_Ù*œ(›3þM‡  ,ÆbPŠeg•á-TeÃØ¶žjÍÔiP,â¦ò/‰*ÐògË{,b}ø O>cwz•Àw1Êi .ïWMïï:K‹¬ÜÖùPUÙStcq¬Û•1 þÂE²¼,ïÚDùaµ1™žiKÕíÐDëÊ÷Ò2>2æ7×6­gxwœqIË£Fes=qíõnöhJ~× =Oð¼ù;Ôö­ ±B¸—ýàãÂ.xgic”heDx-âP ý׌ºæ=êêdJy#°ÕÊáÍ“){–Šò£hjîJ›úP× Ú-ÏÕcê0~ØÓÒ[U?¡çtíV¯²¡ì½Mãű֪+Dý°ëXÄ(œÕE ùËñÜâ–Yп̡ÐÎ-¿ÃYe=´âãØK­¾þUQõfÞ¿õ-Z~×­·ïnäÙˆïõ™ºß;5Ü~Þ;Â]À>>¬|åÓÕ¼¼ŠòÜ5ŠwưZ#u­'§è¥‹\Ž‹´µ‘ëõjóûQØé¸ l—‘³AíÞžs·v†‘* |÷<SåTêÂÃRÆ)åiD¾ 52LQ^*Ýôj²±m;—˜JšlÄú°xe»þSßÊó‡?ŒÈ¥ðŒ0 \·µ’îZÎ û¤V>ðÃ÷ýçƒoÝÓÊÚ7¬wv hÖºô7ÎF{‘Ú¸ÏÕÂz+[ó»îƒz~ª£ÔeìÊp¦ª‹å$;ƒùËÊðu«ÿí϶OíÀ£´MŸæû7¦”€ÏÔº<νÑô5Úa£Kïx]ûø[¾r=1nutc¤þ4ævD’·„ËpŸñü^6¼iXç¬=×\âŸì‹Iyå{˜¾ß¿•sÞ+|¤Þ?|¡}Åjxo®O/•X=Dþÿü¥ý C;)ùóõOqŸ‹Ç=ig´]j:÷¹ÏºÖj_"f„]qBed}RÆ7ÊÅdòxôͰ^¹‹Oi«â­¶0J(-µw.•c£" –ý*¼%ºeAù„ 9Êî\ïŸêh­ Æ©/•8Xë£ôõœUjÙ\÷ŒÆÞNÔY?¥×p:ˆñ¡öŸæ¢@ŒíÅnòžd'Ù&õ¼¥>PNkÇÐBrª;Ëh)­–?±²µ#cÿ˜)vG¹ç+Ì>gT6ª«ÿ*%Œ(ï~—)z º`ÕIÎd½5eÒLÉb–ÂÕQÚ>—ïU>ºªw•#´ â<2ýÝ¢·tÊîc¾°âœxÚze°¾ ¦n rµ^Eaäs½Ã\,&ËêôXÜ¥tQ¤ÀHˆduðvåi TÁs4NÐQÙNb ªÌÚóHú{¨›2…ÞÊ”Šcö‹"òéü0 æ|+­up…þ–°¬l'Pb°Õªn‡‰uL²[ε†Ú jy±™\jž§_²#µ£oà•}œÎèu6‹:Ê]™_´Á²"Ý Æõlž@4ÙI² éµlÂŽàEVAmÁk³1Êy^R'žã!/C\!kʬ0KÊ¿àªìb¿eí ΋xn½£hC_déÐP³¹¹ÑŒ÷õàn #ZGuÇ?Ô Ê^!XIƒaå, IDAT÷l­ÚÑåQ=¥\µÚU5‡2…—cGÐÄ3Xˆ/eÏ(ÜóÚãQ¾F^®iHy]?@k ;jw \Mí|‘ßíX˜E*EðÏ£æÓöýtÕ]M6ë“€Ý,Õ4þþƒ ¼4–a#(šçòÔžº°·ÚK¹Ù©ÅÚëìZN!1ÕÚF]ŠV ¶ŽpäƒÏ8Ÿ^AºüRðƒ¼Aá"t SôE¼Â pZ–‰÷ì™XV)cá;ÌdÓ üƒƒh4(pÞ+™qÅËÕ4‰þû¡ºÜ@étAyÎÁJö»š—a”z«C#XB¯en¹ãa8C‹p žÄ¬Œ† G¶ÅÇXºSgøeà-E°—l<.PÊÃQê(¶²[tÃùŠÓà—ü…‰4%Óø¥k\“üÒO'QŸzê{â< ÓçkØT¾Äû›úQ3†» ,.vºVXì…ÝRÏòǸnC#ù‡ýó:÷­ûö1Æv;xwñ§ýZi¥“:Ôæá<ªJe¡36áñI1˜×£Ffr+r¦|C´Jm¶ãd{bÔUrñÜN1ç Õ¾žîõô§L—Þˆ™ø·«+íQ»ÊÞ¬Ý »ÑÑS(ìzèŒPs(;Áp?²Ç„ qwç+ÝÛÛæ@šþå¨é œgÉr•9ÅïMÊšX,e*ÕÒúdþÜû‡6'52½ÿ±ë³ÚN{,oD¨»ÊÛBy5 ?5‰ql5¶ÒwËîîÞðk© ”Úµ®y+µºY Íþ9þËd%ÁYóuƒùÕ¶í!Jm­i¬ft5simÜñ®3þ+<Ζõé 滥dýR÷“®”`³Ì§v¿ã¾¨¶Poë—ØLe‘~€\J å64±7Ë:îÜžQìµ§½ù!µ¢ôÙ;ƒÇ5fŒå5µáJNçã_í¹ì:”±h3”9ê1ãBØÔèCaSX#¥-ië~à ùŒùlûaíI^™Ö2=Þ×?µCBίÙÞß~uÉ*ëôÅÖ:g)ïÍÑ ¦Gd@\†¾êk×eõ¤«TöRMO²û£·$ð0ÊÎjÈÖ>ê«ègÕF)uš~Á¸-²±q¬²œìŬLÆFcE¾Hî£ÍX{ì ùzA:ŽÃæ{ÊD¼p‹æ,*ë…|…$Ó;è1üØ×o¦›oƒÓÌ[¡Òæx{¤X$ΉIê6hJ÷å îe[ùÀ¿åDQI”ab}å_Ä x"ŠûÆØ¯°•ÚÝzˆE"êDö‹™¨áÇÅ÷PgÀ×X0™[.t¤ˆ‘sá oÀAɬ=âûõ>ÜGË•¡<ài áƒãËØd÷q>:,™ö‡­™9ÀÌéNƒ°6îÆÞü¼¦RS;©ôQiÿH„8чz:ÉNY|™C]ÙGu9¤Žð‹z:Uœn4Óî%ŠP¼ÜIÃy/!Âå;Ëë!#›ÇwÀ -^©L •ÚY”ò‡S P%™G)£åzçÕ´ó° s~àNß]»kh¸zð¶’K{EWh¥ãsÜήÉYöF{“ ØÑ83hÛB=ÑA¬o(¯èïá4–[Ê(©§XǪ@[ ÇY|#^aãØP¼¹àÄÊÖМ? Åb¹¸#ÖAf§—Èj—K°ëÊã1 °ùÊ-: ƒå#{²ÓÐTƒµYN\Ekb»EÜ÷€è =°¶³I|VM=F»®\6TÝâZ¡QjËùb9k'TŸ™JœÃ·ÆVpgRùb#oX±'|2;:Þ@+.¹ÿ,ë:íí¼0>–ÙbYGþRêŸAœx+n8½ív]8&†ÁÿŒÔÕŒÊf­)KV¶Æ| ¡wôÔW»GâÓë Ã?Ã÷ â~¸Ÿ=)TcÄT’ø™æð¶tÑ|ƒa¾z\Þ•ÇÄBzOIb%«Ä“1wcSú%£¡*Ý‚’l®ƒNò‚:P“ ÂÏÜ k Y¶†‘8Ç®J§è1 °½˜…-”à_^ Ób¾‰µÃÙ¢),¥Bâ*З5Mm¼4¥]ó¨°U| .¼ï ü„6x‡ßÎKgš5JvV»[mœ²^¢m´Q=…óá uQwÈþ<„:¤/¬ì“ *‡¼ÂmlÕVaÆ0‚‘{Dfg›ÁvSHlP~‰Yl/.VTü J)#Ão²],èéí­5·Î«ñ®êa»qšë4•C†xŠj\ÎTôÞŽÝþWîw4O¾·}õü ÄJó“uý¤/I{ªñ=î¥ÑV¯éž™#ñYb&ßíD+­­opæ]Î9놺\ßÌÞ¨\Kõ©ò ¥êúmS•¼Zª±W[£.a‰–T–Rfë‹™§M_#vÛÅ佯#Ù ªš2>ù«ñ6zGw]ólä™ Å<ÕàÓ¦ª•ÃMO1X§ÔÒúÐaÌo°64”ÓÔÚü.kÅ[³t&¶ª‰ C··”"C3Ciz†Ð6]³+¿z\Ï­äad»«¼%òCX÷{/‡L÷•²†ÀT1]^Óåßìthd`—å QÁñÂDm«i}K¿z =œz"BÝ@e±¦sÊ.¡¦/š»­™l4D[Ïœ¢°<ö’ftW"¡:Pˆªë„"óƒ·;ß8ªFo¥ÚO+Cµq+–ÇѤáE^¿Cõ- w`§P(,°4Ø2hÐù]þîªgdöROi)˜;"cÌrcvR^º·%ïýYÍ~ø«PRGß•Ð2«–á–ïS›!²Œ|H«à‘\³°¬¹‰×פœ¥î×nò‰P¿°s"ƒx‚ xŒ Ä 2Ájã¿e×õ'¥Lpš8š=ÅI””ì| ÷yjãõ®ÚDuªÖ+(¯Õ{ü¶Â¥°ÚYH~ÿCg‘î?!2ÙóCÚÙ¬–!錃¼±»´±3¢£z@Û©yå¿ÎP‘&÷:ƒìz´ÎÐLèÁS!ŠZÑbÑ̼aŽáiFè«=õ„_ =ñeL°Y`¢y—.Èv™ÏÐ…žE[¡x´2J]yD$ r*‹Jl/d”UtˆÅ©_ý»‚¤'…Ф÷µrÒk­úriv3{2D‡ú:½å&+ÁÉÌDûK¨x:zújûk„æ™a$]–U½õŒT½Ž×§ä2êÃwÙ›ý„E°”mWw©¿³)< ?Rˆeœsä=š%¢eo¸LÉ,^ܱ­LåW±–<Ç CB¨J¨—œ–.‚•DUßß\ë ­Á-"¯{~X¯°ñ4I´ÃõvC™[ÕZaô®:„ÒwFŽp7ÆSFC>”Ýblä¿ó4Ö—šÁrvHܶÇËpa‰M"ƒ]*P"Ëj”v>U³;ËÝN˜Ip,µ–aÔ¾ [ì…9²¿£È6â…lˆõ±9äU:ð^l Å+S•›PØ“àé­Îv]Ónò/r±SÙiZàŸe3ÇXaæ&qD^¦¢1Â4LÀùÐ z`_¬Od^EÒ^9€rÁw(H×°v¡ŠHp/ÄÏð‹—Ÿ¸ kÀ3Ø.+²¯ü¶ã£?¤õRâ5‘ ÂBõÉÀJwÈŠ^#ŽÊaý+Ü‚7<„¿áYy‹%anq OQmX…ù ‘á sd_è£,”ŽK± \ÅF0'1^á-,‡›A§{0_ÈXÌ®› (†j±½,Ÿ:ƒ¶ã6›Ø‹•Î ''Ï-2ÓfåÜÁG¬*ëÄÞ@5vœ=¢ pžbq8E¥xWäðLù © õ„ 8M~FŽÃå],ƒsùp¾ãøœÊò!‘=§•-ÙÊdìëŠÉx0| 7Z+‡ØÐa lÔ·j7 ¾ ÔrJq}œ1ÏøOeúìðÔNûÍõ@kઠ$+/"¹tJÑÉ®,³óæFGW^Vm‹C! &W¤ÞI›zøÏÞäkiÏ¥U¡ÉrÖ×xE¶P+ðvz}–úCy§…˜*+¨ÿj[Ô«X 2)ÞéÕ\l¹Æ,aIߊÔìR·.û×#]Ïcæá,§N ð?¥­b3\Ý¢ºÄVO|”˜–~5àOùònÜMazæ”uûÌø@–ô®ì×,•‡µŽÒ¢‹yvx ±B®®jA­“óð`H&²ÕÆ(»ŸSÊŸ6¡-±l§¼ÌÀš9k”±¢2+iü´£èWØ6\­½c:?ÍágÙ ‡­òw6Ñ"ö›ûxS¥´«¼V[{ý’PÜ<¨®àƒDµP|º;píËÐWkxe¤6òú·$e°g8 ÄnN ÚŒ¯ð‡’¤S•ÎZ[ö‚“Òã_å>+³Õ¼8 ÿ?¨8(Êt¹òÊcÁsrj¸ø˜øG0Ê}›¯•”b…eðÛÐ_‘Úb…]T“÷7Z(syy¥ïÎ:ká#N„8¥”¾ÜS7[m#Õà<þTü''ZñÁ̲¨Î Ø·íUXWô¹eúB½á0‡‚|ü-ws ê²]£œXJŒñà‚pÙn‰ÝÁ’λP“Ô#)…“#ì®¶'¨µŒ2aÙ_ÆxœëÌ“Eè_-B6•÷ùL£câ„9u©(=³§„X»­b¾Ì¾$ßk89Áq¸œotOKÿ*ø„§a=?,êÔ‚LÎâ³8%¦9íÒîbŸÅEÚöUÏÏ©¿óqp•ZÂ'ùÅNÇØ ý¶\ 1¸Rs–Ã,ÈÀRmÜc¨3EŠžr3”’çɸ@.X—à¹t¤OéˆÓQn§ÊòMƒ³LDZz’{‹«½Š7œz9eª2Ì™ÁÞÑ»‚sAŽÂK¸˜ÿe 0ú¨eµ"sËl©³MT/Ƴ8h.*”†²JD‚gŠzÈ_É~éýËͳ€íÔŸê‹¡±¸MåìAVk|p#ŒÂP‘:ŸA€{²¢|–%°@H^ÓÅ q™>±)ùƒe#ïcË>Å=ÚÕ‘¦›—œøà%³®ÜmßÃmN5ò¿x‘~ƒ9ìëÙÙ6ªG­ø-Ø _aµ@ê%“iµsz*÷xIìÖ‘¶à9lÇ`Fâ8ö]øD¹Ë2Ó.e—²‹.°Mr´užÉï2#Ö€g0”U†ÁP Jâex‹^Ø‚ƒqdb­¡¶“ÿȃ²«˜EWq«ÌÄóÍôBfä·` ü`÷a:~§(x…ed2=…} BºI«ð܆nò1´—ª=Z®°~*í JMš$ÏÊŠò’¬Aø/»‹ÃᴼķÒvr´x1 ýb%6bcHàrñ“r,üÇ*â7èÚb*‰nJÆ\܆I0”w¥Ë¸Ï‹0y/áh\û›éCÕ×!=]Ù«õSŠ©]Ý_ñšÖZf‘\•øa,b£TÅ$øšá7ÖÂó{Xõ KÙl¹§RMòÈ[0ɺbWõ¨<Ô ­“¡…v&g«sÔ˜\`¯2 ç¹ÞÕµ[WEgŽlå?“V,iÆç+òîÁÎö±H-òÕq¼‚Îsç’ÙÇ*iž´Ú§öQGÚ]][Œ J\x5/(úÒà,’6/¥jl09±ú§n¿æ$ÜJ¸—êñézºÈ›PNód°…Ù$½8›“zÇ(‡ÙcÅ«N£¶z¸:μ®hXޏ‡ßc2jµÔ+aeÔszgwCqŽ5ÓæÚÄkù-…î p–  bœÁ}ЊïUmkrzÕ`6Ø%).ë>ßÕ:â¼þTóü«.лð(À6Š~ÎgÙÆY©œC?åRg)¢…¿a¼"ÐU5V‰OÅ?ìËJYd'ŠsæÓ'ºg°¶VY߬u‰Ì}‹kíAÔoe5x)«¼ïôÇ®©Údz×þ*œl6ñå3¯¸!‘¥Lÿ[ÎI7œlê&>X^‹ØcýåDé™Ü»µÿé'µµá¾èS‘Ò/˜QYʺî$J>è›ü.í,20áÄ håÊ©·WËDî)ò0°Ô*®,2[­?¤ûþúžþß™˜YÑ­ãBFk×Êj:ëTwþļ‚ígû`=’¨©+>ªEÒ_¿¤ì£™V{í­¨%’1³ÙÏìâìSöjÒÝHYkC©´ÁÞá›aíIïçY\œ”t>tÞ¿/XšF+q˜Ñ<$[*‰I““ë%,®Û*ºuÔ†¸¡qmx 刎 ½I—^H^N›Öÿa+øDu‹ZV/CŸ tJ/”V%a°]ÑürGmC-ßsû³5+˜W±g‹ÿäuþD®†Kø ßÓ/œ‹}Dve>?*ϳÕx&ªºÖLuEµñŽúÇCI³œ’È/ÁRñCl¶ª›÷Ò>$ÿ´®CY¨Nyå{¸þPýÀÊÛ¾}D%l£· kȾò<¶à;Y-õOjA?´ò2éb(UÄù˜EiVÄYäåäþÐÚÇ>¦B0Š<¬/{Å÷yòhý=ªòÜXàʡij~t"¥ÇÙ7X bO¬¥÷Qo*ó"‡i†î—ûB.g‚’lo´úúáU§&»&êÉQ°ƒÓ,9²Âox+Ã9•Ó/Ú!fË£Veç=õÁyö7èGKøy­¾RK(}Üïô_ôHÎp)úŸ®baÕ"ªOL–×äàzÙQäwvªÓxgl­dæáâwû4u‘ÍùþB®Öuµö踗ú³úJ<÷Cïà‰àÑ_ ìöYYÑî.[é]ec9–ŠXCãücCÃCÃi’ÖÒX©F¹†kÍGN5ûDzeûY°Ž{––ƒ/TÛÂU- ‹bf¾‹äÃh8ø)£¬ ›°1å¢âô·ÂhÙ±=Dbvù ÊI]\ÄÛŒ{ ‘ÃÕKY~.F÷TÁÜÉ•DkfCq6U«ÆÈ3J%g¹ó–ZEŠÆJSy}¸æÅWü]¤XÚáDQ]ØO?è4îù°‰›Êtœ¯7ww÷Žj`´ÌY>Gõ·Ÿ7~þ²ì{ýÄ©¤”yÖæ'\^ªÿQ~ŒcG©2—ð\Tæ5Ò¡ìVú©[øVm€g–Ë ïárÑO¾ZÖ­¤KÎ?i?-±Êóê´JIÃW8^µá<=æ¯1Et€*tÇ2eVéWD.Ì‹häã\«x^k5Û¤$?ä=™ëð‚Ôhš8b- ¾¦þò¡¹‹&“#KÒ ²TK¥à+]–×ðL¥k²”fkhdU~ÃOÐÙþKàIúMð…ã)èéüKÓY\“GéðÃrØ@_ 'Õ’÷ñ FQCˆé¢½¼È]¨°Z~( 7ø:xOëa%5†²Î`“(ˆ]X2­†5á ¥§rŽ“Ëpô…6²;N‚Pž 8È?°|ø…gei;nÀ÷ð–ñFp²Ìô}†œú[¥•ÜiLÐ*JÿÊËbJÁKÜ$—ÐúŸ:S{À§B؈/Y.-ª!Æ9‹Äy3Qæ’Ãè‹R’žðM®t]”]íÂ'ÛA¼l¯±Ë».º¹^Ož pñ[0¿©¨ï„×ÙE}ñ)M”³Ý#‡´ŽE<‚µ˜àºm}•Õ¾Ó>x¸½¿ž¸'À¦ã§@EøéONHBÓ#ù4U4Ñ}l©h*i ׯ;?|…Ó=‰y?uýR=éFÊ;“¯™SRT Ÿìí¨g…ûo§–sÍ12F•R‹««ÂO;K¬yð\ö½úX\çÚï ÃaþÉ:—Ü–;›ÐC< ‹P³€óÇ®haÚ{1 ˆà¦ÐO§PàK²ÿlúïiìÖfí2›ì¿¶T_¸V*çõ.”WkTµçx˹VEºÙ]Ü¿;óÌÏ¡Kr=ËÎŽAym;M“óNN¤’ŸwT†Ë¥2ÿŸºY­€çà8ÔºË^ðÿd>Zæ¬Ô2*±¼“ÅÙEQ‘ÍÜ…]#R²šöuß÷ÛÖ9+‡þÓñÑ<Ù\ËÆ¾š3ÓÏ'0Û«­”JøMoê÷3™'`^¯`ÁN vÔ‹;¦]ÔøLÛÓ GÏþùÝ ˜u|“x²2_äù+âZìŽ0O¶¢q5£_f‹(-xƹ}ìÇé—MO§S_¼lFÛ)¾ˆ@Dàv…ÕüôCªê['Ò©%*á žnVsOï¦%¤”a¬¬7&Ó¾¨ÛFH}üóî§Í/F{ÞGßÏ[:ü‘~™ÖÊãÖ,¡ô×¾UþEάÿ”3ó_²,%Ôk02(|ß|Å’ê¥Òj⧤h žu¾üþ“Ƀ~˜JjJÈ´ Sï¦d7„ÖF9ÎW±=Ø@ÙÍ’0…ÇU°ŠµVÛrE×ÃþÁ30SܧѴ‡ÎØ}e+QŒ¥*¢ Ér}›³:üëP,|ÍÿÀ™>Ë@KÍaV;ë,žWŸs_¤^à5ÕxµœºBÆQkeÂqÈiŸÜåÜ”Å@ROçû…)°‘Mã ˜Š xE%Ènª~m¥ÑJɨpm6Š=e!ÁE¬¸®–$~Ç&X Êó®Uê9¼«ŒõÞŸ‚;Ü&ë¶i.a£ô ê;LÆò”@‹ä"Q¿aȃxOv¶ŠvÜE¹a¿Ó *åÔPвGp3ü­+‰ß¤Ëü¬ç˜] ·á©ªÙ²Ö²–o0m§lfZcGv‰ëJ^¥LÖ;²‡p¼Êß¼ Û¢æT_•ÜUBo® Õ63¦=Ƨ»¿¿OË–šʇÅ\f\¥ˆÌœi¬ÝÝ~ÍŸ)pÚ¬O[¬s»Ëþó”ó ¼†OEn¹6ø„ýÉ«Ò#¥­66ü4;Æš)½ÙA¼Ç÷I‡r±Ut{ÑLY·ÊQôB\äKY~¨*šÉx|@¨øÔ[4!*«z‡¥ùÕñÞš.MËþ6“‚묅¸•މ•ZÌ.*ˆÜÖ«¾óË-jaA:ÏÛóXæe*ÔÁËØKc[^V)̆ð½ú(U:yÃߺ÷‘ƒ Žaa™Ë¶m×ÍîæZ7sqÙµx³mÛu[ÆÒª_žsþçµà`1hÏÒ¿AÿÄú£ü껳Â(ò/ÿd¿©tDŒ™ü»XŽdãuŸ^5XQu7#V–€Áè ª‰o‚9ümöƒ(>’¿ÕXžäÓáZÚ;ú‚hð  Á9¨u²5tõQ'x‚ÊB ÓaZÒð~'ræã˜õyÁ;·äj–á,Ê ÐWd’j°6Ÿ¦±ãˆÑVY6…M‚á]ëX.È!}À¯ómd&J@³àO˜ “ 7ÂÉ`,‡Q4¯ÄÛðCh : VŒ*ÓüÒ6áÙ n&ËÀV Z‚_Z"k &Ái|°tU(þR^H'a¡°Èãã IDATðžåWØy4‚ž`ÕøØÀšÌ§ÓÌݼµ5Þçk`1¾g);ÅQ¨9Mº ¶=Êj¶ÒÛ2ØŽôÞŠ ÖWÙ.s‚ÒGb ÿ’z!8Îhi]5Ž‹™†LŽÚ*ƒ]9@á³Ø6Ú‚JV,= —óæ~õ½VÎÄJƒËÔ— *hÛiž2^i¹j*“8Í‚ÎGöáâ(9N¼…¢ÔÔ@7o][rèëð`©ðÙ=AëÝÒÏòƒ‘(^héÍfýH¬Ëñî©äužÂŽÏ6—{¬ýd0Ž•j¡iÖy² -gŒ™Æšôeƒç2«åÔ°¶DŸ¢&Ha$¥-ÕŽ)ñè:< j€ãB)þăp.£Qp:üW¨—æÊ¡˜ž1bísw¶kJ;4¥j`½þ]‰êÇìúdfràÏôÔÄw=ÿ©Í­‘øhf·ÜH¤Þ€/pCؘµÌL Sœìyóøêˆó²UVÔW#ϱ¹9Â^dYÑ ›·x«ò(7)hx÷¸WÖ·B7’›³æþÚfS³enÃ̺LKËiBW¤4…3Å“Ê.+ V›jΜ5¿J$71_ÀÛÚQãA˜Í!ÈMÓë%|S¹ÁÆ.a¯ï¾ùšVU,+‡fêgÍá<†ïaá ¨ˆ? â$ÕwVUýÛó›|“QÒ×G?ê–%þîož6gÑ_Ë÷þK‰‘œBj‚ ´˜5ÒŠ×öé½µ[ Û,CÓP›k•T3}³ü ý‘ïIÖàŸ£ K¢®æyÞK¥@yü ×B}a( óÍþèÜÈ+âbh,[ó¡x.ƒ™0ÀZ±ïVCë«L6±O|žAÀE€ ÿ#7ù.\43¬òDD˜íà>øÆf+ T1?X ùp¾2â7¸µR*AVˆmñLäÂYÚ}—98Ð;0Ê3ÏúeÕÇsí„îAÂuüJ\ VCŽÇ>ô„V!sP¼õÒºfíЬiÅ…&ó &ÌAUÐq¬ ¹¨‡Ýe[e $ð›Ó Þ]Mº <Âma>œ,ÀŠØ U~u€ÍÀþÇñAlxÁ›ƒ5ÂR2„Œ£ø ˆÑs¥? Ï M­¢útd²,w@v¶&¤ ç³Q¾Ï,M|¯†£r ècÕcÐ6TÕ륩8ÑíE-=ÏØ«À`&Zf>‹vŸÐ!©ª'ý¶)ä0ÝÎGR/O÷dkB0C[+/²åð–Ñë†uR ·Ú1Bk£º8B:Ê1x#|b?èé6 GÒáÖ~³+;Èž³¿àYÊ]°Ì»¡G°?ø|E­`ZÍÃgð%ÉûÙNK© Ú!í·Ù¼_ƒÐ+t|c½ëéüº±$‚Dí[p}mî3³ÄGÊR[zˆkÀ'À‡S…ýÊ`$ì)ûI/žL»¾ÁÝx³óžøcøJWcÒ2u©t¹¬,ú8Èv/_)ì –³XáD¸¶F8M%¿¥_$wÓö˜1ÁÅisü ^À7¤š9ƒ²+gìÏjâ”ûƒ÷†Ø7p Üæ¿Í^Ö(°¿×x+^ÝÇ+øsИŸc¬c§á-4¬%7à#Ð^lI¢@lá3Qº+Þ“€-[X(Ö >KMÿ3?·pJDJMcˆvƒ>CÑ xš?‡gA:Û è €¨*3aއ—i!Øžá—ÑKéðÛÚ;ò¡­Ã¾†Z{«»–A¨Æu!x¶ ’X*›ó‘¦BCYuð/mhhŽ ¼| ú€ÂQ8 á×yA«(‚ãAЬ>Z÷€ MÌsè^ë'8WòŽ`(ªH²p6xc‡€Yl'œ1ïƒÁ~ð.˜Á+Â…ÀNà3h'®®Ì—' ŸáJ‹¢½?´_ì#èοÓbuÔÍÜ‚ºðﱈ£¢`ïÂ<°Ï1 îDûT| †™ÇЫÀp£¥¿4*Ëc±Ë^Hƒ'9G+ÅVü ¼ÌÄÏ…¶|•F³æüG=4‚ÚÍ2¶Š$/ Yâ*A¾ û"—äÿ›Á¿ù05Ç*FyäT2Û-­;¶çà,.´³vXvôDn.&’Id- 1 €pÿ„LL!eBÒC3B„ðßö{Sž†‹èéf oWã‹9†wžÉ-ï9–u7£ûŸŽôpNµ?ï¦? ´³>“yRMi¸k¤ï‡:7V5ßé|ûBÆç,óúÞ5óiUÙ9_ë M2´,¿4;=ÞÓ1£«ûŒü,%¿ƒÇ8ë‚R¶’lá‹oNQí¡iö¾r3)Ö@ିìþ‚O«…™¼˜o=T›ê¿ÄRz}*À‹Îc.¿Þí•vá†Ö9[Ú#w´½Uæ ɱ(jFvâ_ü“ÜWêÀË„•¶ßrNToä™å›é-àÿ¾@RæxúÒdKmñr¶(ö"Zµ@ã ÙÚJÜ\í½¯W4-«Ž¿¤¶Ã÷I?£ÇúNæÁ?žCô Xm¬h¯Ã®ùÌ'é×…-ÞµŸ±¯yÊ»÷Á¨î“Q73ÞzóÉóÍoU¯²G–I±5žæñJò{i#È0öÁxöE¿¬ÍðÎËøþ9Y¯¢>лXGÊØßÍûD>, w:‰¾ÛÚHf°*œ"ÅÐZá®b<Ò{7ñ[$«`&éŠêÐþÞºé’'yâÒï«ÃFà)œ îà3¶×Á f’‘¡Öýu*Ð.´êžÃ}漆 üÖHaº“?ptwíSŠàR=tZ%È&ÀmÕBŸ„8 ŽÁÅQ¾Cãáü7®Œk£Ђ»A‡cPu6‡¡S|úÁ þlÅ·Q n¢–Ü`5éoÐökÑw¸žtæcŒÖÜ óZh†‰uÈlP§ãïÒiÊ­$ãmCßSY»Eª¢k¬¨-•Á üG¡fFªÕ´°^XÕØ¾Z£XP‰mB>pÌ:ʟд9̼Lªâõ8Àjó+B>ë¹U4+²Ë…ÑdV_ËÂú‚&ìA[l›¥Ad i MA%›…ñB?¡¦%Uù^ÎË€Mü \¶ñ…p\fÝo¬›\ Ùèãíá2¼·ð3ÐÊœe4 ÞÄz³¶àœ§¬²OsJî­JI¹ú`51âô²Ö]ºŸgá·ÎÖBO¹¡í4ˆ—ç¢høSœ l³¿q yL[°Šä ^ž›™hË í’KKÊjEÿ¡n­Ã ‰ƒDÛFÌ‚%¬°å°jd<ÄEQz\(†ò‹ß„wBW Áél)ý¬d)Ö]ªSÑšn>6‹€mt ¹ %¿ù 䇉°,Z„?ã?`˜kã t&ß (Ä7¡ÿÀ2°—ô—Š€lÜn!ŵz i…Ím“ðË¡&!®æ®±˜‘f¼ƒíàGô·ÇíÍåð ¿n%€Æl.ýNrÀ^Þ™ìx ,‚W¬§´C¹&Ôq6‹l2?|t¤3xÈ3/å’zÁÁj£(8ΙëÃ0^­†CñlÔmҤ{ø^„¿Á‡7ü¾ô«DVÀSÝš`¬Òî‘18³vƒ¦ œíáì sðž< Ü`6X þáþƒ¾™è(žÂõ<¼AoA_²LÈQáF~ቺO€<ÂþÈ®:¦²Wà&¯ÌÊˆÉ M^°KÈÏgš·A"X§u†Ç@WRÄ‚`Œ†õÄÁ8?LƒsQQ2 .)…UtîZýlIW›Û³ÕãÆ1P\!g@GP>ƒ¿`ø÷§y{ø®†a4¼ ®¢Yà«Â/ƒ¿¡›ûyoþ‡o.hiÀƒÜ¼ :~‚ãÐDµéøµ‹AQžÁ¢%ø\3Ñ8nƒxœˆoÂqø3QÐFñ!þŒãÀL> Ü2wXóÙXZá8vèæc_V`*k)N'Å–J{iØûÀ(–Õ¡*Ûe–6ÊÑú¾/ÞÉž_J”¼ß–ÆóHEmµ·† 8hVõ…y¸Ž·¤ï»(’…Z{­Öì¹±^'ÆHË…‘ö޶£BTÆ"ilT…[é[K{4ïf¶‚=0?ñéè7¨ÜÀñh•݃À¶j]åòU©íÌ’ÛÁÇ®_îŒÐeÎ'Ò;|IŒÿ –â‘V[:ƒ]·LÍïy—==­gÊFí¨ºÐÿ ì|„‚µE쀿Ep.Ë\ê}‡ƒ‚ÈÍÝ7¢Z›Ué|íkpxNÁœМê_ƒßµòù²¬ÂÖ0ofš}·úÑ¿Œwþ;YS‚£*vrÈq¶û(è+…÷–®—ôÔ†û äYE¯Ñ‹:4J­K –k<Ùúˆ÷ÍžÖÒ ºyœ^APú+W•ŸQ¡aÕÂfˆ ÉxçIÜ7‚™p#^$(ÊG¤kƒ=1pF¯jV…•­Ãðfp„ºÎªO‹kQh¡`³ùÙRú+d¥£Døfm |aKµo§ãÈé/܉­Ç½÷³pêbíFà“…¾‘ öC4‡ÝÂÛ4)wíŸùæÃÜñy§§ë?I„´cƒkµ÷åž·8äêµ6«&ªˆç‹:± íP^³=äéÀøsè;.±ïj¿–ÓÓæ,ð¹Þ É÷~ 2ÞóKîÆ`£ü^|è´¹/G„«íÌ»(\@·ƒAÚ‡àMs5™AòÁÔ­?S;yëf~d—z4ÿîº×À9û@›oǺôÄŠQ;f#:,p*XPßoä˜íŒúÆu6‹«™³üNn=cµSó8òÙ/®R+ç.gE9Ö±#´n!4œQ-–•„·È$û©¦(Š…s<‡D£!¬y ^Ÿâ±¼ |{à  ¨k3Áß| üïɧ€«ì(ýnèsµ±V>s9Š#ù+2ÎVÏBºxÛÌ1Úº£Vä_¶€*ø$”ø{{ué„X ‡¢ÍЫå7K0»ž¤…ëÐ{ð—°C)/Ÿ“Cñ_h:œÌ;rÀ_½Ð6e8G@ì7I.אּ«±ž:è2ÃÇ¿›kh¾ˆ5¢³Í=ƽZ$»”c4ô&ãõJ]Á% nøÂ/ã=ðH!ð¾cÅ ¦Ñ–|Ûf]÷ù³3K¢Š,Íj*\4FUê¡þS9Ûƒƒ/l–Ð_b»Ùhá8ÝaÅšè;ÌYUÆ¿ªkhK1UÌumv$ «Bw©Ìî¤}j…Ô¦ºõF¼ƒÕvÓõ?9K˜çƒ¿ŒX}b U µÞš¥±`.u— š0|´¢•§ä;kÚßµÃõ·m´-ŸüžE¯ð+Ð n’1”>£vÀH0¿Ãóü±Þ¼‡¬DØÕD¯à ØïnPvcoØK0]gY|µõ‰î€̉ÆÃ¥ü%¿ÊbY(º,ªÞ4—«AÍC«ÀI¼ ¯)ÄHϤ©Qz€GJðsÖMͧx6œγvü(J+°o¨…¼.œKGah+?— naþÛ D·h”£GYoà„Oa OG$K´ q˜ÛÂm³…+!Û¾(ƒ³ÜOc÷ÅšÒínp¬ÀK–O_zâÏø{Ž.á‚æ ¾‰éü3èà ք•„NÐÅïÀe:,ÍÀ;!oFëqgø¾òÁíwG,Ö«àÿIsÜsŽ–2í©ÁÎÆ_Ï”[éuÓ&é?µH3ž÷# '€n¼>‹¼äa7’ŒÈ2©‚ó‹à»«ºÇ¡Ù®Kø­+Þ™§3c w ¦ú‡–C½K¬…ò *b_W£qp(’‘û ô¾ƒÈZ¦HÐ9N˜ì˜ìŽÛ(NežPZ/¤-²°9ÜŠ6‰'ƒN°&ÊŽA­ÑLØ}%¹¨"Ü„ŠâkxÊEYp)ï㟰ˆåW! £Ð_ð–0JˆáÉ0U±MĈo•ˆð‡¿7Áʇ‚PrŠõbÌá*(Ó6¨›K_ã <’åù¨ÈÚú*è –Ó3E›«ÝÉ=’{ØSû…òÒKû5Û{[9Ç#[ÁÏBÙP5ÁGùz’L²Á=”Œ– ÿh­Tn,Ô^éCükaAºÕäv¶òÊ*ЖEs`EÔŽ~°‘\!‘ÓÞ„¡*h:^OÓ¿ñ~˜— SQIÔwÆ5á%µ_†[ÀRŒ3Çý#ôˆëœ#Ù9Øi¤±óTÁmØq@P‡`»àdOÿÀÒ`Uµ ¬½$T¼„‡ÂDá;‹öi«ÍZæM¸FØiº@49.(žÉžÉ)UøO︯c3¦‡¦ÎMÒvH›Y8x˜¸_ã»À/MA—z^Ûˆ7‹_ÝåÃÒ .-~5ìfäμ Œ‡‘n`7ÜGkg$š³Ì3ì*ˆ¹&G¤t{Žû¾Õ”=íi9¶Ö¦ýÌXõ‚ã£ý‘½pA)"ÿ„›ñx>ŸÖ`½ù^ã ;Ʀ«—G|½þ[-݇Ãp7ÛcrÛö‹Ä€ŸrÓ|ÓÐ [ïˆzáOC¯›”¶VöÚÈ+'‡Æ åñ0G9V‡ž×ÊÊ)Ž RŽz,ÏÚ+»/:»É%Ùo9GáJ?øNWë3¯&4^ùýÞ¾z™—å)Fî…#ÐTÍOZÕŒ¶Ay3˜ýMo¯/÷ ¸¨£kÄíü- 6)™ˆ6ךͿ\YáéÎÂ!M# 4ÇQà øzhÙê+ïÌàÅÀýà(ÞV³Z)ôëåý™Û½„ l):óû‹Mê/ Œ(rKj#ßw¯Ð~xFgš|‡ù\m޵D~¸ÑiGC¡ø”¸„œK›ÔÐÜ`¦ÑÖÜ$Ü'ËÙ6ÛWJdâ}œ™SØ~=ŸÕ:Êkñž2MÜ(¬D„ø 8 LØ“·å-(ãáì'øÌ~h¿9 $ÐÒÚÂ÷2%¿Ìºœëÿc/Áj°U Ñrˆ¼Q^.Áfü4ºÇ‘F>HMÖ³çœÑU4Ë Ò묈¸œâyÑEІ9à7–»›[¬ ì…öÌÈ6ç}álÔ*¯®Ô_ù;á%8B~gÿ‹Ùti:٠ˢR Uª Ÿ¡dö !'¬z– õa{ý4i ßh¯båPË\ Ïµ„´àäïi+P–=àH®U„­®ò©ì)¨~¡óð¨K¶ƒ8yN·–âH:GÝíâ=itÍè’Òß_ñªn Ž ›‚dW»íÛ’R 2jÂ[ðlTEHa;ïÍþ‘—Áë´»­ë}Hçjð¼@Zž À@Q°#,d0¢Qc¯Š3ÈT>]º)–¥wïmU„Nή¡e•ÐD ÷¬Söø¬™Aµo­þÝ0ó˜cÁjGŠW &Äréy: ~µrÕ¼~fí+#S@Y²}‡ã„d° æÃÃÙÓèf6È_?¬ƒrÑQ»ÑÀ`””„ßPô 7ƒ9° j²l¶ˆwáÑ0‡A_ñ ‹ p¶kŸ»NÊÓÚ©‚ÅÒ-Éà/ÄÞÒw¾M¿¨¡÷¶j§šùÁ|VoÁÍGÐ^X¼›ù^œ…3a=x>"Zh‚—⊑åÜ>b¿Øï‹óÅÛBCá¥Q4p7ø¯¹Jn6‡N¾˜TãÝÀsôÌÈÇó€‡0”‡Û@98 ¤òæà)®âB8>°æóoø&Ï î¶[Á,k+¨æ¹êëm‰ÒO%Uó9]ö×Ädÿ°Ön°Ôá>)^&´ºƒ~`nÀ§¾4§“ólÛì­…Ò^†C/ŒöK‚ÜXy‡Cñyñ&Ý‘JZå!ÖèÓÁMcú̦1—D¨#É}ù„ÿ‘ñ*÷HpC¶7§} ¡Ò‹è›}”k³m†½ª&ýƒÊƒ±ÂT~Ñb)Û<2D«±ŽêMkf}gGa/þ‰Š!d£_®ø›SÃåyLíÍm61.B óÙðK¸™ëÿnl#­þ¬K°(œJÝ`(LRp$ú½BÇ j†KÿÀÐk$H¦x[»¦í7 ¦ ¿ëjõ ìPÛ…y¢áέX%YZuDá7Ûzçz·c7¬knÐvZaG§ Ùž8íp΃X_ <·^ŠÇÝyµÚQ~&ÃÌq¬˜Í÷¢ûJS÷lü·pá½Ðûgâ÷™GÄýôy Èy5 ¶NÖì!8*±òè_±ˆ˜-_v”±O_HMqþ`^qý< ’Ñ(»ãÏc ªž7:öAèn˜ðVè~çIÛjÿZ\^-5Æ^±¢m¨ý±1Wî%ÅáAžüú=dâ\ž…d×wð<Ø*¸I¯J(µÍ• ž!'HÌúžÒÖ´´yÛxÇ’¬õÞ)üŽ~Õk§é(n¡ùéP3ÏP§f9XøG UªæÙ"–Ø»„×"ƒ“Õü9úG|1Vý3lgõ6ãÌX5ÁXf-0>R^Ivö¾‹lçót+õ;_/ôѺ¸q¹ÐbçBZƒ”qœi4<×dÔHÚl2S£À›‰ÓÀ`Å£\#/ÉÒµx­8îW°|FñàÌ@hà‚©¥¬cÇ ‡QAk¿ùÞèŸûÛì»Mºò(G 6]ªtý‘«ãK¼'íÂŽ°<4ÕÚ¨‰›ƒõp.¸ü2ìÄg,ËçÀÇà2û ÆƒÉæC‹ŸÑ ã·uXLqÔ•^Ù79â>aŸq„CÕ@ªùwàpp¥Fë;µé´)ùÀ+ƒ||#lEÔ×RµMZ„oŽæów5Û—œgÑ`\/áÐP;g&S9d·±JÁMB&+Û‚X6\EŒO|Zn³Æ /oíRš8ŸÊ‡%¢\”: ÿQ te{|›´òü ]k°]©k«© f[@„>®àmýEXûÛ*«n0rØY«"³p2œŒËŠ‘` ä¶½F½«?ɯ®ö ÖL­ÄVaå½ÐÓi?xG§lo­C<Ñ(©å÷ñ4 u¹ÊÛyøË«{ô j}/×·ÙÓpeC±ºKX}6 S¿ñ|¶;&ìYx{ûE¼Æ9S¯˜•“ò,XÝÿ–ô¤ÏÐ7g1ᥭ–mµ4Ž´ %à~¼ÌÚÁ_Ñ©fqý‡ŒæršeµÅl”ÅúKA$÷òç ¶§mx10ÄÈBåxÈ­ ‹°õ<Ô¦÷h-v×*jþ¾g#ÙK* ¥P}ZP’Êô’Øù%p t3¤@7o9ß·Ü=`[ZP^|¿Ã i QèŠtÔ+ÎF¥Y˜_ë˜ÔxøÅJšKŸ-]Щ­EÚ¬>6䌼O¯jÖ³Žkhmµ›æ^£•µÙÑAŒR’KmåBÇØ#¥ßì'ŸFÏÒÈöÉbm£¯©<ܘÏËèƒÑŒXµ@^-ƒ^8¶†ñh=ÜËì<“mÁ–dÈ^ÂÁ5ØÎÆÓQ¹ß!‰—VKY±¸|za©µr_úˆÇ Û,–®d±Árl¹™ Ö‚‚|'è 8ìÊ®Ã`ß!ŒàçefÿAîåySèïê ѰO²6Øz)ÿ -´•–¤eß2úð“`±´ ÷yt²ba{¾”ñ|&«‹‘¡ O‚Waw%ÏÀ%‘ñÑÊCÀKöˆÖ4ÊÅ‚oÌQ&R·¢Rxª†÷à! š}²fê«Q^ì#lãM‰Qª“D<̃±0œÞÁW3•oÀ[¬ú4ZüƧòïÒG¼.Ëåx+Ô‘aú”.µ[­i[»_Ù£>Ï·4<Î×ļm6aÿ¥6Ï<¥WòñÒN€Xú‘íùk+â ¿Ë ¦‡Î‡óL^X˜ÃÓá#B´6fYVÝ·Ö÷Y«•ƒ²j¡z`7c /É×1føÌ^à³¹™¦€õìÄËúóú‰·{Æ'Ïó§:5°T!óXZ˜¥£…4I-ª2£†VÄ÷ž#«xç'>ê²;%äNØHô?Þ ìE+Ž_Û̸жù‡D.pýòÖY@ø#~GW@Oësðž×ðÝóz½oõð2¨ÎO€éòxKRÑ(ü çc¹‹ög ¯OòðùŽä¬|Ú(#ŒóíPËúpð‰ÿKFYmª:1§>žMþ‡û {¤‰²Œ'Ë%䎎÷òvÇyO²ý°'M„b¤=¼&‡Ih›RL)F.9…Ê#(Vènó_#]«íÝ—ÛÓï)ìé£ÞÏí™ù,ÓüKû¬O’W;[Û¡,\”ù‹Ôí¾–a–2„ŸÀ˜€ÆÀò߇±¡QöÕðœ.ßS„•òtù™c¢í±tÖm¤ÝZÍô#ZCä ®L™áŽ^dåeRpSÖë ¢…ÁWžÈÌü©u¬†Þ¿ë{C2Ù¯P_eO7ÞëO©ÔÍé½é7úǨ/’*Â夽™í§TËÂ(Ø/hó…å$z£2â<‚ôÏf#k—ìoä(IƇYd;®)V²½p\JŠ¡’$Õߊ„"Ç¥&â˜X~µY`AÖö”»ß›ûfLɱèeõ’ÑŒàFÂWÇCÅÆ™-9ü¶Ëá¬V9jWøË¼¥ònkâz¬„úÐSÔ?=kuî<£¯~˜í’AžolE”7–g ×ð.lÄoƒ>Â\çÚº¹&‡l€ A0É#fíÈ}šr÷;ûy7-%{Uö;|’|£©—=ÅÛm;•ÑBŠÐI6Å•¶ŸbRÀ‘,:às[‚ð…?“ ˆ+`)¬ãQ¼ <À†ð­ðïFj€$0†kÐ: ¬ÂçØT äyHk²'“ƒø#8i+'_'÷‰ö. éB-aùŠ—²¡´p„öFåp< ƒÑ°,q§\CérªôÖPîvìrKôKqp;QÉ\p½áçiqV·ÖzÅXe-A¯ë?åïæuúÏ©;‚£Í}jý@Ð7ˆ^0«°¶æ!õ2uÑ{æ)ßWO“ÜÔïá+úÍc Yx§R Ðß~Á%sÊïáú2£Hê6|6dGxPÍï¬ÑË«;É'r­g•\Ç•xü—=Nê&¼VêÚ;Û}dÈ#ÔR¡IçñåÈ ³©†€¿€üAFê‹¿‰eцl<É…¹l<È~ÐQ¸­0¯Ä“d|D’„}Dô¡ët,ÕqvT?b–TïæÎÎé¸d¶Òy¿šÿ˜ÏŸ‡7qÇÙ$,õ•„»p/nãyÔaÜ’}Á;H}´’çX‡Y:»C;è±Zíìâj†¾Æ×Ú?Ï·Ñxë:ò.übäň“®³R^©©G'Hï¥<þ þz\3uc:Ûïè/N_¸—¸? ab†x¯2ïš«á{оžé9ôê'¡-Â{p…V¤KõÍlŠú ŒAMäÐ`\ßo‚L2†TçÓg$o7'Ãzóàe=ÛÓ<ã»ç–{îdÿ}ž·œ‡‡Ä yh¢RÝÄÝŒ}BSrËe£Bi¹ÇÉy5ÿ@ÆRFó6Ì¢@ a©ø_Ã#„zø¶xW‡>X.kÜ”»1ðlí¶xÔWž£XˆÐMš¡¶°®®æ¶ŽP}š`à)žû¨„2QhkVµ¾IOØ~µä£éVÏ=%`»cÄä.@NÍVOhÍ>;¾ºRÙ~#àóØK"»îèBàÛB‰êOñ@‰ÀÐ@­`š*ꓵÓÚßVMvY¨HfÚ^[ðZq²ÏÖ^:bè=žÄÑÚ”ÂP Xl(ÝÇýæJk€‘<â«ë¿®ó¾Oó2Ì¥ OÀш¡Ÿ£T'³/ówô*ƒx([€J!ØF~€ ðX,®G_é_´µÅ6™wƒÛƒ·…Ûbc«=¯¥hv®²Õ´Ø >Ãü!¿)=ÆUpY~ÈVZžˆî¡Ö8'*—H_Lépé‚$O”–࣠†åà{`.E ù¤s<ŹʥÓã´ˆ9OËfuô)9ɾ_ÆSTŽuçÇÑd¼ÕAÑ¢]lʟ˧x+²ÙÚ‚: $’Ìoá&¸%¬ŽªÁ:x€PŽëñkð…Tt-’Ô¾oú4zÔ|ÊH‹ú•¯<ŸÊ+f¼ñ}aúdà>œ#“/ẎÿÉ·áPá9ŠÃÔ²f5z’ÿ¦[Y«`@~ ÈÁ[ü5û4¯€PÐÐ|›±©F$ØŒÆK#yQXTLçaœŒþƒQ¬\ÄÖ·‰<yI¢®®kʦáR5y‹ÔT<ÚÁY_Bî:¢…¹™ErVù"Agž‡lCCÑeü ¤Âu, l'¬'¼%Po„OÍ*l„^ÄÓÆ36k€ï­}¯~.42‚…õéêß#<0B¯„vð)$ôõÍáð›XžWpÔPØ÷Úâ¤râEø®3+%Poq5ÿ…R•‹ -NÒ·kG³¿7±A¹Ï¿ÒK™³rû€Ñ~±wÀAû¥êÝ@EvQ´brë—õ·ì“êeI9 àxØ ۆܔۻª†Î o /—+.ó–^Ÿöðõ؃ž€âkŸH{þ>µdDvdhþdTƒVƹgÙ9Þh/n—ºóÐ » —ü„Ñô7Ê™5p1%ɾ‹ÆY쮺Õ_BýŸÞÔ³6ë{ ®¤-CF„%*ÇøjŒxvqlwí²å]Èy×S÷º°#$ÜùÜé|+Ùű¶a‡òNÏ-–±(½ k™§J/EÜTy -6F …zÆÎàrÞM޶çCEÅ?8ÙIeºÏÃò£VB g”9Áß´À-¡¢RÙ1ÃYdé‘Ánü»çß3Éß—ÖŒ8œ¯Px:<‡Ï¥!ðǼî+o‹‹´ŠL!›òì‰Ìõ½É2] š÷äI°–÷ƒg¶°Êê?´òÛÖs!ÊvTŽTv¢-æ‹@ŠZD~…3`¶ï4öÐOÎ…î\±­l·œ°¾ž-–ýÙJêçÍjW­Œ§@é"¦‹…y „ó¢¨;¼ˆóÛÿá^ø'ØÝ¿Îë5Ï:”GWð–°ô†R>«ñÐøL:—e#¡Wö §„JWÇ+û#RÉÖ_¼J6kýì¥ûiØB«c&[ ¬1f[Á©×c­Øe¨^ÚÍ3ú#?OñæÅ/®æÌþеÜV‰®%]áæà,ulð–¶K»Éf½R¬4ΙìlL&8»—ÛF DiX{!ÝF¥%ðNà_Ú–6køüjqž­ÖñöÿZUuÙ¼,¶·……–àdˆÔ>¥%m‰B+|UÛ%„€o”6ÄKÜð}Ão£.<•¯µŠ¡ Ρ=¥ãBœ°‡¬ñnó϶¶¤‡Á½Z[aað¬€ÿÁûä”ÔRê®l'»Ä#0Y¯I Ê»Œãà´Ä8©™X¯›2™O!}y´y†7²ÖYgô™šËúH:ÃcȈþ–¿~È9éÏÒ>ÿþ&¥6Ç›Áv3ÉhEÛ²mƳ*hj5¶r…µxŸ+æÈ‡•$Þûà2šC¿jáVÛŒ¥X–Ló²o€®¦îKê×ñ@sºžN`+˜•=„ ßì!Êp_¹®ö¦ú<顸GøîdÒCe­Ò@˜!XT36ØF(/ðNÔù„%ÙI´¯µݳO@Íô©Þ4Ó©ò~zþc¸ÕìSÚ^úDoɯÂRð²åY?úJ*Šj§rqéäØ#‰Â-Ò^ìÊ»©]¬8ÏÜ“¾­¼•UBšgÝÍÚêç·k/ü‰þMä”ÕÂø'u±ÿ˜7•· ½90ìZþùÃ"Þ;Ë¡b<+XÞÓ0G ô4Š©])p6ññd2îa̦g¬U‚`k¦ük(åÀ¦b%»#ÔÇïgNÊÉ+ô“óØO‡¬°ÏVŽÛú;ºº5šLâYb²ÖAïÀ?àfh-žgáqþf#OÉ5'w—åm¹öhq‚gºïxhÛ)½¼L¦wZvˆw²°[q¸’ò‰>:€÷±êæ$ÛýZc>MoGsõ8†ñ&[Œwbn“œåÎ=Îâ¶Z1Ÿ#˜¬$܇óÉxìÅ!ÏK1ø$;DýèN&Kñ#¶½à,d-‰]²Æó.V i…'O4Ì(" ƒ{XEÐÁZJѺ¨8˜¦Ö;°4< FG| |’Ë¡Á¶r¤*#´å¾È3õç| –sŒv`¥½“^•¶ãÿºZ(×M¥®ùF8­úýQ:ô¦xS…¥U¥—Ê]¹²uÌúôñâ”ƒÓÆ8\F(°äð!]ßøGvÈîðççï{™g|³ÍKjBÈMáœú0難Ð(þà(öÕ·OmÌv„FF^}s³5˜;:ØSÓ­ÖC~N‹Óßkm þOÎŒx Ÿ‘¯‘½Æ$ÿÖ`Šïˆïnú st°wîW¡®Ô×”º '×B}±JöXhwÃhûm¤ÂÝ<–â+ô ¹þÑD™ªäÊEm£”eòSp™Ìä ¬±^“Ãü‚ùÞVU…ÉB<Ž|£×ÀTzÆÌ&[í`CþŽ3²•V·¢y¿mfS:Ø š§átX {¥6R!çþ<‡‹ñFÐÆÚè_ŒËl¢ªÝô,¥¥¼^Üd½µœ<›×¥¿à‡hà–¸5–Ù ÐSG¢ ¸0¼Là®æøÍšÊÀ“àwsi)æn~Í ®Ñœ‡jãÉò Î(L¡%ð –dÕFíÐVœ¤´–ÙñdÇZB©¤§ëá6x™Ÿ§"ÿÚƒ‹`X ?ŽÆÐ#f,øÆF3ÛÃׂR8‹xý­|#ÏqIÇ`× ±Žµœ×ž.ª]ÍæßF£¬S)UœqŽaJYû™Àª2U®JïÑN’êàXR™Í“Áæ§í”™7Â.Ûê‚ÂNQÁ*ë+‚#„«úBÖI{m©ustÖ“NÅ`;?<(Lw’Cîo®LiJ”#áî°ëî¹ò~ºug=ðFÁ†*Ketu¾¶±#w…·±=ÉØœ±›ôÈX—sǼcÎ7ìfó/ý8mem´&Ó÷dî{8;¸_Ù뉕•öb.Š;ó)Œë¹ÛýçôSÁ0ú“"_ÌÁ´¾õw‡é0Ü‚UPÖŠ8Ž/¸Œ…Â&Ò“l§Èªmü«h’¾E)#GñýBŸJÑ®J¿ëÁsÁÉÖR3ÈçÀ¼¬¼€>“¼°5Ü|{²\XD°B]²Ž””³mH¶;×~YÔy@º]WA_[,}c¯ñ%k·ùK¬rWÌhfÛ;É)Ê~ÉG$ŒÑPOˆŸz¼5CÃ%C(ËvÈ=ɶ]–'*IfE!ÓVÖŒ ÖWÑ…x º£¸ˆT vV€7‰AL©™µ BËù+~‡öà‚-HKcé ö6ÆþÀ ¤¨lÔWÓI¬ž…àßòp)Zrø‚9#ôUF—Eëè>æÕ¦ 5í÷NI€à2í»µž5±:ò2Ð-ý7«cíçÙâvÁãùôèé…H;P˜Ô ÍdÛÐoþ¤²&ì5¸ »^ÚßcŸ£€\üÔë[Š)Z¥µ­†_+©ÿ;kG=ÍlÛ,8è9*¡©ø¨ùÏU.´^¾{kÛÓÐ}!‰îgá‹­Aþ¡žS~ÕÛ/ø‘G[-Nw+¥¾X³ÈÑBuôÁ9mR­Ì·UV˜`‹v|G¹V}ó¯b6¢£“žmí@áF!Ö¿ì7+’ýd ÎXWÀ)4…íFcÌÙtóÁư.~ô‚à0®lèÅó ™8ijÛmŠÝnÍ­¹ÝÚ¶¹µm›¿mjÛ¶‘”Aƒñ<\üsàwã¬ÉÃ@_Àz³eb9kW¨”©/yã N™a'ÛAª¢Ú·÷˜‹Ø iJ°ÊƒäPëOuÜ9MÔÆ‘}X¦_2Ö€¤ Z¨·Ô4ÀY5¸C]f?e~ud Òø?<“šu#ç÷ËùŠ.ä¾R×9²~©‚œ ßëã‚»,q¥¶ÜõODA×Ýð«ÎÂÂk¦ÑݹÜÑ/X•>µ£a›”–—ñKœÙCÎ1SÃÑ¥ô»Ÿ2'u¸;×ì!MòTñ•àÅíeÄýÎØØËBÖps,ƒ§õ¿Â;|r«àV2X¸”³4»oΓݶãÀ„•„òh&º)’Ö†m¯À0a¥x$óÖ˜{éa: Ø”,Ñæ;AhËÉûµuÚou\OI¤Æ°²xL ã ¡%ÉWz‡d²õ÷¢áæ>GM^hô]Ëîò¶ôœU…ݲ–²Q`4˜à¿È#Æ¢ptÄTavMíù`+_K®àñx;ì§·ý¥Í­ 8@øšöÆ-@{žç0BócæWœƒ®Š¬ËÀ÷t Í#& ÿŽ‚¸ûl4dÓÌwF-fM½hmÄÙ4c©o!Ë="QhÝKúVŽò õ@ÙPP–—Cÿ‚W¸Ÿ8Wl.ͳSJ oa_0‹5£è ¶K*…ö -QÌ/w„/øMÐÖ‚ïøH¼Hx†£ùM©(¨Jkëù9a&p‘¹âtü¾†Ã{`&š †Ë¢€*‹ƒµŠ²WNVnÉ^á€ÒKœˆÖ‚·¨»Ö0;»Iæ—uœ&} 1à‡HhˆÞK¯Àr8—í’™˜GØ ¶— ü/.Âól,ûVn-¤ÅŒ¼Á*ú¬ &>ðç‹@HL!˜W>F.Ö ´ö]'{ÙØàº´Æ0†¬<ÖåO¸3t3”X¬ÔÆÃzð÷Ñcp!^ ªÂ·`#_‰vÀƒÜ‹zãFü8—Ð èš%¤(e¥ÚNB½ßCE¡¬ WÇ*õÅb*->¾ ÔÙ/*Ú )‘«´­Ekà›à½ðXòÊ•+rºzAÉdîàkð ¼OØ&̶íÖ6DÞ‰”,Th-¿”[hõG ž‡w- Ú¿‡²Œ·ÎFÃÑ’CjÊ^¡ ÊßÁ¯àhC“­]Tc7éGð]|ƒÃ´¥¨ªÖÚÑ [LTk¿’™N£Y#²:1Åfò;®D9Äp€P^œ‚÷ÞÞ(vš •³€÷°4I(A“­7ÆmàÑÖ,Ö]ªGkÑ¥ü’üFœÏƦ82Ô_¨÷Óž(‘< –ðï¥æÜÊhÃXñà2ÊâIö¦hˆ‡ãù&ºXOTœZa¥­ÒÙñÞÖ×â*0q»^ÓÃüsëÉ+^Š€Ýh”â‘J‰+Y"jŠ6Š“®$Ì æ_Aa;¢´t¦ïQM<D…¶Éƒi‘ëÔ£7¢¶ÆŽ¼¯žÎÈ=.ac޳gÒ¼V‚7^¹* Zg8yˆüéÒÃ/*eGŒ0c¦P]™‡þç ö³¸øµGN'-øx¶+¸½€•Á8ÐLú¨.¢Õ,üHÜuØ€\7Ž€Àͺ ÝÙ|šÊòóÂTà›Ù/8›s÷ÿe} úa¬ÉèkM³nêÃÙ­zxœ›ûôì×Ú[ð&+…­4NZCËz_| :Þ1Jy‡J’g¡iÁ¶žy?ª‚âv³®ï‚Qž¯B_Ý+¿7ýÜõÃõÀiâw6÷¶Ï­š–%Žqô£ µãŽ/¶Ox±vÓ¹F)l?L7ÒM°²®XRWú@‡åÁbå›zW+c‹ KxÅ«ÁI°Zx ídXgåR]š 14·—|^‚]ñ§éÚ ÿ߮ґûÍž¾~d´xVž§6Âý”—agƒýô‡Ù<-Cõé¾îR¾Fþ.ž7ÁÊz-z‘oKÄSxê*êO!Ùb•l‹@ô˜Lš´Û(újØ^L‘XpÝŒêË£³ik~ 6³–ªÁÁà ~¶ò|ê~«¾î¥ëy$¥÷¯àÑÐ/Ä <°'8ÂÆГP wžÛËæ IDATœïŸP™À£P]«;MÍx9|>ã`)=ÃøaÈuž[ÁBÖV=3˜_»n_¬½‰èq"¼*)j4 õ}“½ï<åð6è)¥…ùÂÿ$†Zƒæâ¼üùá0¶˜DÑ–<^_LJMúgóc.";øq’BG±¶VIcPÈCúéó|£¬KúUÏScyÉŸm¬×'ëvÝÔ׳çìÞ 6¦IOÕUr5©§O8*À£Ø P’´CX— ¸ ªŽ@ b@1З:ø8¾¤nö¼`á$Â*mÆZÙ¡äÐã@0ÁC¢É ³ɇˆQZíð"a]uíÀ™®•€m”“Rqy4*hj)4CúG½OËû˜ÍæÖ5R•žƒÍ¥Ö Öš¥'-—Š çµýŠM ¢A¨nÜ6zðw¾ÞþÞVú#ãupŠòÝöVؾÂùU~,]W'*tLÞnW¯ªqÎ"æ¥+ÒqØÇê'•ëIãÄÂxuç;èM°‹ï¢1° <ÉnóÈfcè :”3Ûд½Q.T*ØžÊVKý·ÜHs9ŠhcÕÁêc<?»aP€W~¾†Û¸—uåÀtXu‡ñH\öFy„ Wà~P™Gó¾üï.ð`ü˜ oŠ9°8ÚÉ:’öAÕXLµˆ‘l@T®ó…¨‰tSs;;¸bñGü Ä»€ZÊ{˜NòÛfgò>÷Bð¥3odäz[÷î*!—ez»›±â.zþRÅŠùàJ©„g+)¨!¨újœ å…êÚYûÝÄiqõ%£}öta *w£ V²Õ %Óÿ@o&<#”N8„WãZt»ù!(¦oþ–¾-÷´o-Í/¾ÙgÄõ‹ù**)üº&ê!cÀ56“½°&˜«‰f¤µˆ~ËÉõ:ÉõÜÑÞ¶f)0 ÅeÂ'4ïÃçI$žŠÊñ (îÿH~¾¯PîÉop{Sõ—²Gh!vBë¡ó’·h ®Çi#’ŸÉÙƒ³ÇùŠæž¤Ò¼à 0SYˆT¼Ä~ð@Ï`_ƒþa„К ¡6ß±N¾h‹”‡€áöïJY\ĶH Ç%áwI íT_+s¬Tu”Ï^E5 ;¥M ª¬gð}t2»n‚Û!ÄBtQžæÁdy3äüâ$Š÷@.ëokŒ1’E›6Nxq‹Xéoî€û€‡gÀ!0JÍñ YNw|4f+è(rUì6Àš€ÆãÊ|/^+–'O¡D´þ…šÊÀ‘ ».Æ‹GxŠŽXÝ¥õà¡‘ƒ^ÂÁH–ª«P¤r8잸Kš®-®Â(F1wA5d£êhiÔIª»€Õ°<Á—²]J'¹PWÞ-¾G£¤Žò[Í‹¾â.âr¶(TÐÿÍÿ…XÙíÈv)¬v´ ¨_¤p{S×:¥Óé(ê4ìOä|âvÇV{s;°TFË£ <…V¶"E†¤^p’§qš!$ID[¸Íe„Ï—ª©ýl§µi®NÝ™äh¢Ìvö’Ú)á't6`¹à‹¡¬qÙ£a¡…ÔSøÂûIm¿؆àgÒQ|Y_&Ô—Ž«ÁxðP á'h8ÿ›Ž2J‡ê&ê2ùå[ênñ{©X•±ƒìfZ(¨è¹’1ôK¿ÏÇÜê·ßñšÂb˜j}2‹{dÚƒ½”NÑ–eþgü/àrGç´0¦äžÌxó£³ad-ùñÃ×'+÷[RÆÞoû¿®”o©·põ˜|[9'´÷‹[¥ÂL¸öBQ¼£”,å—Î’C¡w™“ls³õÒØhÞÖ+J‹„ ÞçMé"1ˆ;åZBš\ÕbÛ© ëóü ê,LDƒÀAxFfŠÌIËÑÝ ˆöâY‚`À¯^ü²yÉ8ž³Ë×/óЧ|Þ ¿’q–vÙö¨`ª4‰†³ÅN7)Âc”sÖE¶YŒ ç  }@ÕÐ !_Äýp2þŠfþÃ^öNÁ½ú}_žP/¿-˜á©ØfDS‚}ÍžøtàRhfè 責¿”GâwÁïÀ|ˆ“•¤}âK×éî«þzfÿàuc ÜIcÀ©9lŽüÒDcB¨Wè¾/7îláTÊv^mK²ÙY5v $룛ÝÒ$E¡ZcG‘ð¾¶ÁÚj9¿°UG…ðh"ñ3¬7ÕI%ò‰eëMÉ+oŒ%µùLž_à+| | óY'Ì%棼¿™7Ë<,æ3èr«?ÈO›XÅÙ;ëÙFß‚ÖÂ¥˜tR¹¢Œ©Ø-Dá6°M‡ïÐn¡1¾ §ã8 GÙh5½Èë‚¢Ô`[@?øšé¬ïLWX£n° ~ËûÚÿ?_'ÿG²lƺ°Q~¥³?r>pæH sh~ûWé-ˆÃÑc¸ÝÃÇ´CòPÛr×WRÀå‚÷‚KÍ£V £ yHsÁ|p¬…áÂ7q+%,: D¨‡Ð6dŸù\ÿŸÆmo&iËJè#ìrØ4ûŒèm®óê"í ´-”êKÅam}Õ>¶¶êqdH§ägè/æ£x<ìw‰mQm![8‹~ ·g¹‡¹Ø-Î@ŸÉº‚§V´YØÌÆlC=êÄ0ÑÖY"òq´”BïàR0âC@6°Àx ì…—Ñ]äÆÅó ,Tç]XÀ—ð-ภ~ ÜÇc`{Kßã¶ì­µ–×ãgy >.}•c”LûŸŽ¶âPi§ú ¿ÅÓ¥fä(éLƒä-ÕÙ9ÒȪBOù7טfú?™ã<«¾¬|O~Ë9œõ_`º'ÅÜó›{ùR¥(Ï@½íGãHìçó§«§ÝXçõq¦¥/Õ;»ºFØú&žüOÉÖÎàŬ[`ù F2é p ­G«…#L…6ü/xÊsùX0¢Ý'Mý1:‹z%cp‹}$¿â‹›¹ßv&|¶ó“\GãÊ|Z˜ˆÿ‡’zGãŽ^Æ:ÊoMáôû…·P¨ϯòÇè.š†J‚ºpŸ î¡Ñ¸ŸÇ ŽÒ%^~×n:nÀvŽõv§ÚO½«µ”»a‚þÇ/ ÀARŒÇ°JælïyÏŠ +»‰/— b,K ‚Xv ¡‰d«o]"2/neÛ&Ð4´S¼§Ëª@XÇðÞ¶eø•ã¤Ö×f¯ém³TŠ–=ÃËåå_áŸÂj(€§ðý“^6Nr54ʨ, -¤ÿ¢îä½B7ñnl‹N{ðÜmž¢“ø!z‹ü ïóg¤˜± Í3þ‚©MÄgAC¡¯c/ç(c…Qø€oì°h2ÕXcßA[ƒÞa#ĽâR<O››€7¤Ÿ<VÄOícðx${ŒeàPCá(Äsè™~Y¨ Òõ?`;íxDM±ªó[Â4]”èCR°i‚@QË(½ÕÂÒUQ¯‘î´ L3—ÑÞüoU’&#S¸ŽÂX=óÁlÓŒûÆ3ôŸ~OVMw‘Ì«©=gý>¼×Ï‚#H¶ô]«n#±kòÎL¬§_êt æàò ýbµäç©M_j4×C—ô& ‹ ¼eMðc\‘–¶³Iì8MG³Ñ]r×À2â_ê9Bx)t¢à[~ŒoÄ«a¶…mñòO°^š)½Fç˜×ì+L6V˜ïÀ=òR'Æ,¸Õ–ßÂöò/ñ ŽÃÀn”Ì»ðSx/ˆ€_à=t`ëq3°RüKmÛ/5ö³|e.x&ݾñ#(‰ç­ù$8èhaÞŸænx÷§‹øPЬg5à|>ôâ‹à¼#hÂïðòðßÈ‹cÈ2i1wl–³±¬+MÙ5©Wøß|^Ùl‰[š'É_ô¡æ76 ‹Ò@3ޤ²gVw¶‹t n ¾ï®ÌÑtÂ×^îâÀ?ØWq2¼$Gãi¼Æ'‚…².稈›ç"ê+„WmÕòÇ>9Säª=@…-|ƒP‰v˜]÷A7oËaeà0°ñl-{f%›½hÝÀ6²^¨-®ƒn “ù&ô?”Ê&X ͶúSëžy?T=²_¸ÛÞüËZóް&ˆãå…z¬>tõÍŠÙ*Ä·°žÞ"tï9èϧ {Ám6Sé   Ø‘¶±XËGϰà³õ‘ÿ cáÿ„mhº(næ¯Á4Ò ½¤S”cr´íBI4ÎbØk° Œâmàr&’¥ì>Ψ‹ž³é 3PÜ‘ÓÄî´‘Ò†>‚Åi/²Ñz©5±mH·ÅgQ±ÒôKzcÏ–Ry%֞ƛ·È;ó ¹`\×[ÂOúxOô×'å­LeœÏnâ“|ûmb™è3¹FB<Åÿ9Š7#§#.7æÓåA°ŽdC¬‹–Ëy Ô‡…ù[EÒQ/8šm1·ù£ôÿ /A} l“pŽ´D¯(`*ÚÓ¬vìÈÇÃñx9°±sþ1à,+|æ>¾Eë±|ŒŽ£„Òl˜ó´sα{¢Žñ³ì¯ŸÇÀ@®xpLˆÒIü®xÇ šÍŒOÁk¬äoO¬})v¾ÀˆÈ Ýœ{ûœØšà“ò©:Š£-hÙà›{Ñ¢“5×{Fƃ<–§›@ys”‘Å?ø¿y¦’ ú­@ùП±ƒòæQ>Fæž~‹‹PWP„'X.‹ËeР©XBøÅZGÆ‹mx)¯‹ßöÖÍø™Û8tÆ“KÆÃ[òbT?ЃUTŠjqZxÔ²‚+µÎŸQPØ)÷òµ4ÂIXVyI@Ãá_RMÙ.—ÊÙëIrW S’òn ]Dßðó· ìiø7ÛDöƒç¡ý ·\< 5LØÚ:gJ0I]"ϸØFižàaBGÐŒ~ -Qm˜!åŸË;m?´~x<Žf‹a€ßà¾>t€\§ûàWõ¼˜09nQžEŽ´8#ßr{[Wÿè"fŠ÷HZáà©À\w¡@aŸÓW#ðZ¿¼H6KÅ‹ö“,'¢ÆÐžÁ4Ö ¬‡mÀ„ãq-ù ®ÆZY›F‚Zà6þ”£ûXK+ˆ´ …N[^©³dÉ&¯È»Ùt´ dƒá×\À±îÖ`¶“õ•Ÿ¢¿a=”ŸEÂc !Öž¯¯y?þ Úù!Ø™ïe›yº“LgÔ\fÖ5ÓF„y‘þmáŠðPk —U‡ÙÛ;;Ú[kýżÛJ·€Nd#ØÀ–€*4Î 7ö‚ÁYå}­ƒ=Ù%Z=ïƒNˆyÅš|Ø‚Âüð1o4¾†¸ivÍ*¸›çA7‡µïùi !/XoH—á\”ƒmoºõ«þ…¡ïrw±UÕƒJ˜:B¸€fX[Í{€À1V*yOÃÈ c Ÿ/8ä[bmàä:œ—ÍJB `8p(âu¬ˆâ¤îj"ºc«‹ãUÒJéë½ø0UøMö\gOØW” ƒ3Ðr`c>6‡[`>LáOà! çáI(£Ï°7ȇæÂãpèv€d0 –ÓØ˜¶Å’ -L~ùæé­ø\É>ìÙdVÑïøÊÈ»Ã.DU³ïï3?CEJoз°2Ìz|8™ _ƒmlŒÔÁ±‚øIm+oùØ.¡ÜÍÉý¤`Фÿ’lP…:Æb²ð7øhe»¡¸Œ!:„K°H áÓ -1Váb2–àkY@×€,’>åïÙsÞÚ Hm OW‡½šX‡­kò Ûq%Oð€u“\aÅY] ˆ›ñYTE è¡„²òeu3ÖZoÀ6¹‡‘VÔ"]”ÎÚ^G#}Šóq/"¼ÃÍDƒ>Ø•˜?,EºkŽ·{Ôáê [=´ ö–þÂt ׫Àl½%í‰Ê‘úk)^J`¥ °or&h-äåöÆÖ¨(é»húÙ2q¡¤‰Ù¸„Þ& hQ6’ÜàVè@5¼îjˆMÅÁrœù·1&øZHœèÔ֔Λ•õ¡i¶r‚.í‘TZrò¶¬‰%ƒ™Âzg†p^î¡{“çoQ«D†Óì‚nº§xjBOøÎð  ‹P^˜"<¥OÍæ‚Ó¬¡÷‚h)䓤2b>eVØæðcÕKê¦È4ì‡Øë{,M%‚yÄíÌ†Þ f{5í’w´'-PA_L ñÓÒ[ÔÞŠ…>ÂM|ÆÙªŠ+á¡+J@N6¶goYcÔßR[!MªXè$.N§ƒÇ,–‡ƒül/ÚCŽ ³•y¶šá'µYÑí"¾Ú.É•ÅÃZÎ.éHµŸg `7ûYbÕ k³ú&|ð8›†µ¶ÅÃq5¡´Ü%Ѭ&®ÀÒ|1Fð$ò;Eª³‘¬,l g¡Í|¸„Ê1Í’x;ÖÕ,ÍÚ‘æÙÁPö„E¢-09l ;ÊÛŠpÆDå)Z ”ó@­†!Ð ¾g‰€Âãü7úÕE-ay~l†ÿª :¬Ãsh5–Âß²¡|!¼†Ê –Ü.V)ÿñkZPêÁâqp ñipŽe?Ég`êFo=Îåûð{wèqàŽ1[hO§ ˤaÃÀdÄ=Ð>aê lDu­ç°,²ñrœ²Id6¨ÍÇJka>ƒ ¨#?GâÁf²9”h¬ö 8ÜåõVÞÜðyö%®|ê]ùýØ £*ü¯ÎÀjˆ*ˆ_µæÒut\¨(˜ä!ÅrX™NJ£ãx%ÍâCA68øtaš ›ãM‘›I]å ÒDq¬Ò'YìÜv/Fü¸`OTMà° twAwN€3YЖƒ}Á¾d™mH ª%¶äµ…0> ×ÁdÞ„Íd˜iµ[J4–Jñùbg[¤½~غȦd­\Ø,(Í í¬·è.k‡þDñ©Ùï†5ƒ™¬kBʉû„¢ê(0Í·ýÖŠJ‚ÒÝVJª¯x¦¡õæ"k!¿EšQËJEnxŒ(¨,Lf°$ª)cP>2Cûˆ+â¥rUqƒ¸QØAê§$ôƒÄ~â7e£2Pâfy.+x&ï-…%ÐV¸uAíÑa8ÝF<ê9šØî ["JÛÞ€«êoé&?OÚë#@wß_)ý:¿ Z OÐPÌ Òa8Ì ³ªhåµ*°‡ÁùzíÐd]æWp—Ðÿ+½9ÝÃ^ú¿¼â5– L±wˆ-Î(ë)=Ä×ð.ÁÊâÁøJ ªjÞbGÀÜN½§|ei%7¤ºø\Ây¾‡fó‚á[ä»±ý!ä!üS}Ë›g” à­ÙÖ]<§‰'Ìêëk4CóB#Yüíˆ'Ô_“ t â©–Mßð `£ØÆž×œi}õ'æ­àvЊC¡yxïc£ŒY;ã&ûgðxE[›}ô=9˽•¼=ÇY ÚOlãªwûö1G™#|½H1ÆØUá¬kuX”²Oä¶Ò1_bÿEš-Uî«nuÎvv…G…Y£y¤qÁÑÑ3|Väu«|]™¤/?ÑmªS‘ã þYXš±„~²œÖhWé°9þ÷ ß6d|SîGØb¾¥ÿžä/œ»Q™«²·yOѪ!Éœ9L<$ñŒœ¤$Kñ’'œ)O¥úÂaTì •|¿Æ¥ÙÏÀ ?´Žónp†dØšºŠªù¤¿Õ*r†Ø|ÅážËB>³Z¨åïv»TÀZ¨lä{©ŽãÅÞ,-lšm”£³ Ób,Aì#öD»‘/¢ ûïÒÉJ¿è ö,t%¢' ®îVmêPW³Ô¶ßâ`ºBm‰¶‚÷¼˜øLKé¤#cCkH¢±#Ô µç“„w(vâ>© 4N›ŽF°&Bú3žn\×ïú>’ËÙ“~.ÿO:GüùÕáW±Ô^®^'zŒgØzñål4I!³ˆ^ü6N“ÿÙÜG¹n¨>ýæ8¨¼çoô™³Œ]î ÞÁò m N´•s]èú'òBÜ9[KûvÇCXTœ¢.ýÙêKÉ'Ïõsºƒx¤«öûCÜ0½ÞÉŠc=ýÌ#!‰·àQêK©¸ Ú†+_¥NêQy šß‘¡GªH,ËŽ¡¦ÐbgÀJXZ¬ ê¢L¡|ˆž£ž°4Pùc¸“/ yÅ;°![©DK'pºèG“à%ä%¯}+ÀàѬ—¤Pð^ —vˆŸe;ÉÃ)8m\0‹óB0G(Å„’b Ü O‚sø,>ý4î‘Æä5‰g»è\¶ƒKüËG.Ð7º_°­¡Ç5ôÎÊc  ¿”ªÚüŸ.ÆãP?xK°ö¨×Ð)¤:¨öÒ/Ž=ꥪ=Q‰Âñ_ØÜÁ•QI8”,£èpwÀ*Owß‹òXÔÂvO\¢pLÅS,–AóA)PQª.|ƒ»ä0ñZ¢€Àvƒ4…&KGÑs¥]CÖñ£Ô‡†ÂÑSy¥­ÞªWŠóÒÁ²6£Ex³¿â”\á™â#鵈À*~„Ùø~Ln´š;o( IDATŒá1°+CN°Úäš÷Ò™b/ü†5„U`:XÍwÀ¼h{ ïÃ׸(.€™˜‹CBWP Å‚lŒœp  !ZÄ£¼˜ÓBȃÖÓûp/@ÂÝ€ L€Ç…ºÀ RÅ š­‡Á[ƦñUP»uÆž$W”fŠç„Ÿ0Œ¶nš²Ž»Wû~f9rö·ÝZÎNoMR 4Ñs[¿øœ“o$S‘ÎZИ$ÆJÓåûÒa¹¿üÄúhµ¢õ;F;kŒ bN‘©4Th1^(>¶öÒ$^I|"wHÛ”l©{ØT×Xû7m™³¼¦¨«mu+m-VGX¦ljùì‹¢.à¼êÀ<5Ô®÷q#x?pfYgÁ&a™Þ5°:7+05g}Ú}³‡µTn>Òúhk¹UÒø)¶tgM[ y">¯åu¿ %5ye«5 Þ²nà ` N>Â|6âç¸kcÿ?GlòÐø¹êg²=\­¯5R2ÝÜ`Ž Íõ¶Ï®AìD Žpî³_•YØ:5ZíëX®—ÇàkÚ í¬<,ÞÝÍ[ÝsÊoý~àÞ+d*È‘…\¨1Øã?ïG´ZÚÞ”Ëïe,ø¾/çf¦œö–ÄXqh>")R­»s¦½¶c¸c§#ÞþÃVO¬)W–Úáy £I¢R^;#~s4³ÕŠ…mµ»µ’)ÆÉºý¢­æQ¾J[a(⦽¬í?´[ܧyÿ¨ìyE½5gÙ‹Èeå~Ò#qŸâpu°mpT*(ñ¯è%±s£'À9ÀiPD†c”³º:ΊvÔS&¸:Ûh§ý’¸Kœ îÂÓp$/¦8äêLZ7 ±$Üìï^Lî‘FÊ~:‹Ý*˜vÝŒÖ+‡®³Q¬š›š1#·OP 4 uÎ ýפÿÔ qgP¤ôA²ÌÇÁýìgÎà’ìU™®4-«Z‚f‰Å|ŽŸ¶A¶Y,€KÒbF½}îÓÜüì½O/hÂî»–I‹”9Ž¡õz~ܱG àÁ»Þç¹ ØúШ¯q4 {+„Ÿg›Î GÀs£2;o©^¹ Þ¤6Ö¾‰·µ ²[œ"\‡G€Áï°/¼_ŠÂò0ŠÌ.ñk4{7ÃÁ`+›à«ÐÏÏòË@%y±*|Eðš•A5Í¥ÆlPùÅ¡(‰$±ØÃ{ƒæ|€ÐZ|‚AtºyÈøHÔ‰P ÞPÿ3¨›ð œ€ªÂO¼>¿6€•àìIJyUø§ÕˆÎç!R€¤€Òü À!¨*†¢8R(W¡z؞Òb1°ï?Ã,á¸ršS>…Ü#±ÄòÏ/ùEÃKpA±¨ˆbxU4>b{ÑXÆgÑy<m‘‰£øMÖ·Uô:Gö«òK寿1|Æ,c0 RÇàêpyÌ@q$ˆ…‹ýbö–°0?‚Ê‹ç„eè%^‹§¢Sð-[¢HvE.'Þ€ƒño¸ öägY7|\ç+Å. œ7þ¤œ4Î íøå»‡»‹=X†Ð&XÄö¦FlÖ¢ zøH]Ål4µDƒ‚ÛÚ&HÃÅDþ–­¤çÌ™æŽàES0vz+Ô[ù&?ヤGø1o -¦‚ÀOaßœ …E{à{°”燤9|&ÿ–c¥ÀqÞ€o•Ù+t]¡•ÐTpžÍáMAc˜ Êóãøo ±c ”‚àXpÿ â¡…jÁÝWƒ€'àÁ´ïa;Iž±öFüØïû!ÅJ;Å#¼x@ÂP‡J.€Ùð4ÍËÒ¡‰F’©íGwQX…ÁxK°4˜J÷и4:+ìopÈ]ðØÃÂmô”Ä›Â`í¹ú–Îññ¬¸¸“uËäM°#|†¡°;°À^´·>0,dô {QsPÈ÷VhÍçÁ‚Šˆ³ÿ9nÚÂèV}¼y >âyHh¯ÞòÀnl#ÄÖЖlÿ[{ˆãpyT…õ S<‚­ŒyîÙýŒZÆ*¶>ìª£Ž¶Fìªv›Øöß—„&¤¿Õ'Ø„¿ƒ­x¼ B5¹ …–Á°h«L³ä\a˜JwJõâuåÆ(—Öv4Ñê(]]ÇK7Äü¹]Œ3z~+ªÜâ'õ£à+-m–WÊÃt^^û»²&¨dÖX^”þÐÙ%[;biYÒÔ°~Ájã¥ÙeÆÐ?Ö|>w’æb™Åa$ìbw­fYëzztFtú$aú&L‡ÚWÀgb?T])låÝv¢¶.Âxa¼(=¢y~ìݯO”÷>Ê©¿é‹…‰H"ýb6ò>r¥¯÷Eî«ldë…Ü/Ä›Šh(Üvæ}ºÛzÀFJÕ@Ÿ©Í*AÏ)ÇÄÆñž «•WmƒŸj­Áð’8ÙÈ.[ßKw#ï¬@/Ïuwí`IOm_ŒjÈ_Y/Ûõ`ø— Œ:o*å´²¶‘jô@W²RÕÇ*ù$NŠæÏDzñ• ôùzÂhë¿Py=2ÐU1êb:N:9o·&ü³rÝÛßjÇ^êÐxëkÆSØ¥øSL?ýûü¯•ß4¸–/'ÍïÄæ$´WOŠùЗøÎúÂe®ÐÌŸ³/'ŠzCyƒ7ÉSïÊŸ¯<£ÌáYùõñ¬Û·¬ì7Yã¼ÈÜhœÏÌ£—'áü§™ùSN<¿ ^3îGÜW«2_Û¼ht‚êÆ.3*–X“ÃØRêò‡”ej…ØùÚKé;8 X¿5ƒ¿ôkæ G+%>ì®ô§T £¨‡ju©ïMœä>y…Ž8 lÊ‘{ÈDKÐ|ù’u·vÛ9H¹ êƒÂ˜k{ÅçÊ@þ7GßÊÇÀ<5ïåÇÙq\T=+kÐ.œƒSÈYó©ºR 1ìˆæ³Ù‚›<¬S´<É ­¤9Ô% r•ݤËПjW­4| Ô*¡Òþp÷Ï¿£ý1jÛà ë©'\ør$!“ÊÿÌõKK³”éáïâ­°‚±¥~W&zV[#e-|’ó®–¿5*“$vÿÜc=Ý`ý=û}笣î=é~×ð–Ëi¥{HYöê1ë#¡Ã¡¯>IgJ ûÝø8q‰:Gó Qk#æ…Ùðqž8ÊÛÃë÷Å£Ñt2‰Bp‰¨K/…Ïà~ïÓÝ´.•ykjÀ ªñ•Ä`ùpó8ÝÀsPkŠVÊ©¸~)ãyLÿ€Mà!݃²ä&Ò5°ÒVÉ5€œ4>:Óú"Bç3B_.÷ÿ|íB<[Ý7¥“âmRߪG--±êq&úCš‹Ê$´^ÛÖÒ=p…Ö¢е°)žÉ[ª¿í…l‡p]¥TTü&tÆ•y8>lN§A4¬‹‡Àð˜XZì;J騉5 ¨,mzÁë ‘ïecá V›¥Ae¡ TÀ#œçÂ6p'L€e¤)â=!†÷°E©ù`u4‹”€'¤y|h—ñïd4u¡{rSó2ég^FŸ­æIZtbm`.¬G.ð$ÐÖ¿è¨Êš sÑFÞn‡Ùlá-®Ê‰ Ñci;<"Ô"ÀoØÆcôEl‚:WŒ© öáƒ4ÂrÐd´Tä¹NŸãvôl¡4œ)6{áæµz[×Iqa1~‡§ ·Åæü­òÔŠåíP"Lóðc,ŬAêÐYrUÒ‡%ãù|àDXS0]µVƒÇ|-¼ˆÒYg©z+tA_ysvöïÐX€wa|:Ñ<Ô€Ÿç~¾”yaXÕÃ]xž¢@] žƒ ¨/ˆáœé€óu` ·µ`>]‚üð7ø^Èuù‡ý|¶› ZiÎü’½VX]W–2L~aÏä—aeÐÇðZôJ_ôFˆYòrQ©”ÔVŽÀ¥pQ= öD]ñeµ³c½(ív êák°}ÒèNZ¥à´U‹ˆcP°çƒÀ^ˆLÇNñ›ø"ZÎ{h¤dꈲ5—pþÛ•«Za¡&ê¦Ç-46tSºÉڠǚǟäþ_hñZù…FÈ\‹]ôjÉ¡’Y!ÏtßÚ¬sÁÙÆ ë#ó™é»ì’h¢¸= ¼·µ•’ʾ$fg-Ù:ZܲX6)šÉ úØ7b#Q/‚c n®§˜=½kéÿ‡ô ÊAéaX'užÍg;&_ëÂN°?ÿBß#Ÿ#œåEø2ÞÃü‹÷TÒ¬#â[W˜öAÉ•ß(·\í"ŠÑó´”pYm)ÄÈÏ´deš4:ÚŠ®äøƒ6”üááÙgôhsÕošñ<„7àýB@(j×czØúEí°v]kÁÛGŒŽhi¯£÷Íh•yÊ0xÒ˜ Wƒ–*5?“û¦×,oµCü'Ý÷öÜmòßú Ñ‘!fâž8é´5µÍYà(FT=Ý]<-;ÅøQÛ›/w"ºÍáßaÇŒ‹†ìomöcÑ(BÂljÈİJ vYâ¼ø™êÑ03j½“³™<Ä ¹§ü'Hˆ -…FzX¹æÔNX!åò8Òž¾óŽõ\M+JöÎÊn FÕ+5^}äpÇp¹Òf­¬ŽÁH2|SŸ³³)yÎö±ÿ‚-Ðzº0tÕ¯á9¯úþÍ—Dä¦ËiqZT·šYG„úb9ô™Õcykðsœ†£Ica/±šo@—ÁùPrÁþ“oâëÙ5r‹ìE»Ñ |NXj«m›#7²µŒ8©LµßŽŽ3>§:ß=Ìn”Ù ­ŒûZÓüî !YMÊ?¼TÕ| Ô(Ø…CÜÉú仞sEcUPÈ Í=/>9äîA?‚šä'®ËþVsòæŽK™kˆÑ<ûœï„y$ÔÀ×ê×^q¥xIy!ýŽ_è˜äJCã¤æ®û4æÊkŒ7KxV×G†^ú Zבħó_Z1 F†0ïCy+ºŽ¼à€ðûæxò†¹¬3ô h‹ókh¨Û…©x= A¯¨Ã:ü8;J®YϹÊZeèùz z ·”ï¸ïŸ—Úú’Hs…áæ)°2žÄ6 \’þæ˜Ät¾(Ì%¤ =ŧª î ùŒÞä o8Æö‘Z$Ù‚FskYúÀ"B:®æ¼ì€Îòd©,ºÍÓÈ7o´Þ#XÐ|ÀFqœ„GjMm÷å9¶s‚&,&±­t ŸÏ÷‚»pò¢UBú‰'Ã:¨.øÌ«ñëÐdyA}tB™b%ôS…úÈ;´à l˜¬hŸ['·‡{¥² owïÒÛ‘I´Š“!¨Œ«ÁYÖ%^¬Çÿ¡/ü-íŠе$E(ºIþž'Ó¶ü³ó¿y-”ÿ’È·W²ÄÿVf €~^U“Ͷm׿Ú\;›½µÙædÛÚzYS›itçúþ:ç¼ïfðɬ®8Aº Úï£fj}ÛK4‰|µÍ—JE"9°L»ÈÛñ‹æ«Y‘b£®YÓò[Ö#4@ßèasÓë¼ ïÀ7Þd¯RtAŠp…M£…x jŠ)ØÀ‡€\ÞŒM³ú°´#ó²Þp0û‡´áHsÔ øÿ`6hº¡3 ,ãà\„/¢éøD/Ãqà À¼?ÆÓj ¨c.ç5¸Ž7ó™4?xËû‚þtËðjPAý¨Šû‹óij6j»«¥>À.J¤ÿP>ÛM{éñÂØmmÖ=á,CÔŠ…&ÑûºÈFB†x^©ÎPÎH£„]BŠPg4X?¢CTÜ#Âî-yÙH¸Ï2ÝÆ!#14?8KÜ‹dy™/>’çBÖüBßÁvÚC0‡u°^Ò|¡¶Ô¼É‡°{\’šò·°ÌÆ à4¼T<†Þáíì‰4н¤Ùô¡X|§)¶ÞòߪGº“3tu0TÃ,Σh8Øì^éU‘¦ÁDðˆ½SŠJwñ èb®4±‹]‡øq‡8VzS–_…ÍŒ—Ö0ô˜æ~ =±V¡í¼­þÌ‚ÓÙgtY¹A²ˆT„#ñ¸•¿Ä Y ~O¨2Q |†ãŒÉÀ°Ú†âQHÈ+ÌÅAœFǘ³ùÓ°jd&ú¯¤—´ªCÝî”gÅ…áf:SÌCf%-2×ëò\Ýñ½eÍáßzí_&©h^Ï,)ŽQXøs¬ƒìH^«À5*jP?‹êÐ[jq²8Á±@™QKÞ.´q©¨žúEŽàEÄ9ê2Û¿ð ë,²Äè4þ¢µj³Þ°'¿=$â˜Ø6Täç}'8ÍÜkÞÀqÎy‘óâã#‘Í¥Œ”jFŽwu—»–êa¹« ‘Tá¸À¬@ò³Th’ ˜w•{ºÏî.Ý,0MµÛkàÈ<Û·ÊÍ «­Kø‚°@ø¡¸²ÑR9%øÜW*´M%Rßưh¥Ì,íý\ï¨é<.¢ fÂÍB[ûÜ<£Œ*ÛLí›~†Róë-ü®2ß‹I1ñouƒrW)+Ý,¡|Ìã¡É³m<™WçmøÒp†¶:tßÿÂè bh j¢6ÜG¢éx8hˆ¯ œp¶¬C—ôÆš'¼ËlŠöŒñ®sï =ΖÝwƒCË|ó½µø0¶Åh§Ôp|‹GìuŽVwØ3åqâ9q­ÐŸ&­ðVôöäóÐ[öÓªE¶‡ {öFzx:SC¥Œ&fó‹±ß6‘æè¹Ê¥:ø9<Í,ë€6XÉdëµ–-Nênû}9Ö9M(+¼QJ³O<>i<’_€ý €äBÃÀ)<¯æ=ðr2¤‚Úü5÷Àst+õ²0Agø?Z,ÚìÏô€\ÕÛÓÝ2½‡çRî!eˆæP^¼ ™Œ+ŠGÅÎÂL1¾–O‰Óñ ±7¹-•dmÙJ+æéà%ª Qt—ôAljE‡ù2«¬ð5âulâ =M]¦)±âe°Å‹i'tõgEÙÚ›- W6ª[Óô±luê­­Dc|`F¨Ihˆ¾R‹µ’h~x‹TÆÙÂyYGnIeYHÄœE𠟀@.“ùõø!ºYšCê ùÐy’­ft§ÖBwÐaµøYú“Ogeð JiqÔüMºÂ’ N`:X'°|˜«³(Úç÷ ô>û‹Õ4£ét¶>Ö©´Uâåñ(¬!þ'•'ßÙ!ÚèUåW¿¨\Y’¤|¸R(Ñ—'šØÿ”eh–4ëЈ}?\;"Ÿ&ôŽ_ƒfÂv w°±§OVíðøàgý–÷cÎèÜVÀ¿$»¥ÖH?h 4.Ñݬ«ÐÄ~<:Y\ *ñü¿e?ûöÚÜ2åÙ4Q8å|$³¶­²ýnS¤/¶rÊsÔRÈ+Œ%£ñw|,ˆ1œïSˆ2èEN¡ë|0žaÝ¡{| »lÖU樂?Ûðì.®e›§Êâ"œN²M–—«ÉF…Zá®Þ©þ°o´wÄÙ´7\"¾·}‹zœ8ÊŽ"ׯ1¢Œ+}âz±h°ŠÒU>ì:"•^¸þ&^< í°Rõñ¾\4 D³HÊùx£ŒVÁÿL‹ä1,™ÅK­pâ…³…3'VµonÚ²„?\#\g#ω»AK‡Ýôž:|}ø_ _[õ˜(mýáZ“wYñ´Jû’$¯ÉÛÏ÷ËëÌ(íGþ[¹øD@΋l8éÕÂÔó—ÕO£¾(mq8ÊXåu…¼Ú@-`}‡nÛr¹„ÚV´–YA–Ë ãéØW)+xs°U¬iVßÉfZW¹lÿE‚?óyßcqôòþQÆDmY¶œÑ+eÍóïô¬Ó»=a˜Å`œuÖòÒ¡be…4Y©«¬µ/‰¾53Êf~:[¬Øæýj3´‹ÿ@äOä=~‡°ü†µAˆ =O<«„"ûiØGò@ƒïqwÔÔ«ºýî>¾Oú‹àÒܧðºj»¬¸®…± “›äu°¥¨ux¤4ϵ*â¬C´/ˆTTÑ~Ù™L]rKx~Ò‡Vus»-cÅe«èÚ/ÍWª á`r /'9°·P78 Á0øŒN:ŽÎ±û6xp½wR(MÛ CŽÕâ6õöjê’È—jQTKR•jI+ `µ½7ý Ý2ž¸géôh™ñÝü"”¶ÜF7ó–ÔÈVX^e{‘WÚâ,¯döRy¡2¬‰ËÁn|ˆ2+›ù¨h$Ò4•¦˜•Á^Ž¡~ Òf­pK–Í[€*ð9ýMoBƒÂ.x€¼O‰…”òúA±Gèu(3ØÏßÌøª×¶Yø½ÞoÄ/”hä‘}â%0®`yÁTàây#^Fó|7X×òò𠙉ÃA8E?&çiÖ XWeªØœ´ Å“SÄésß ÃÞÐRšj/Ù‰.²Wnˆ ¥ªjiGŠ<Šld»d©Ín‘x”À ˜ÛYÔŽ%³o¼ 8Ä÷Yãy^ÚÀ8ÚX‹àj8Ÿ…ÓIê Ž;þ ÆŸá¶mç±èFÞ½g•™ÂÜÁ—°Ûf7Ŷú6–Ÿyôïþµ¼C°„o•YЊ…{xoQ¼NJa»ô%l¿îò¼|L5A#¼€/ã¼è›šmy}p dsÁlòWðµ¶4tƒþD-/,JËÓálÊ™n]aõ鴉΄Çà4Ô„ïáíX¤UŽ—àO°÷áÙ¨}ÉãñqèÌ…‡@ª°UÂ4x‚õ"U˜ªwD;éx>›-5chi¶YKá9P©üšuҺ繟5ó§MH$½Õh[ RƒæäÏLØìœm™ºäÕä(¥&|âh¢¦ÉÇ#ÖFî¶—!õ„S«“9Ú®á±ü$EÒ=|o<¥Õ ÿÏ9‘ 3«ó0wAWÁfð7š§Ò|6Á_€éÌbC-@Ýt_ï7Cw³«gosoÑ*… °ã‘ì—@ Ý"ÿØ;Û— —/å)ÂSy\Aþ$¬€ÃÉKò5ú‹iðŸˆæ±¥âózöõҞ%v±ÊÃa‘vyˆØžúœœOs¶|-û9¿WÊ.÷+}Ï’XÉB6j7\æO­:6r±x·ßò'èYÊ ~Êß0»°{Ÿo€þ;é#7?¥@[¬"ªÅTRLAŸÑW¸ÃœaL6FÏè"æçïI-ù¼»‘TýšŽ¬òx‘Õ¡^sOîpQß ÅÝÌ׿ýOy;bD%¬ ?1žX¬ÀnŸB“B9¡€¦Wyÿ@õ¬—éŒaпG&EõŠkL±yL°•tt{dñ.š Mä&¶5ØÃƒÖA±¾¶\îlv¦åMÓãÀQáÈ ‰³˜áÅ¿NºÏJ[lÓ•¶B_i*áRqXL¼áèäüW.[Ïñ/Éa"-˜‚ììEøTtI{²cS8¾Ê‹„ýÆH….ƒ¹ÂD²7º˜eNµÞ+_ËÁ @æ?Ù«Œy‰>4{ú{y7ûÛ{VÞÂWÛã¥)Ûî¢ÂfÏÉÁoÌ!\Ó†³/b]óÚÏq}<•à²uØ*®YV-‡µœb›“’Ô:¹BÞ·Ž]¤¤í˜µ't±À›/þôÖߊºRaQW<_ìH"­BÖ7\A˜ÎuKfˆÃð#´…Ëfu³ôeúÒð§˜Å1‹bJ'ÌÓÆq‡6dÝùñãËD¶J% >š;Ø_Ñê蓲 º½Î?ô³‘-?$</´N,ŠÛézZfSì „÷xŽzµ¬NÞIx%˜„ß+£œç¥ÁtOh›x>Ác½Í¥Ÿ…çX¦CXmj /Â-êÖÛSŽ É#Ne½-ÎÖßéØ,¥“•B+¼æ%~ØuGuá=0ußyªõ†]¦w|Ÿ¼1¾g¹a÷ïð1ã!hk#?½ŠŸã—|³…Õb”¶P{ vûòù¸ÿdh˜ï[ð Z¦õNª,×÷HgìÏ\·åEÎ#Ñ¢ÞÛÂÊ[é7\‘O„?XOšÀÿ¢c,ƒþ°Ó£fE–Ä»›ùØ èÓò—¤«1œNKW­íÄt¶Œ•’ãä4y¨MSOÉ;ÔÂJá&K†sÅ}ô oC®‚ŠàKÅî}r†4Hy%lRþé†çò¥è,Çæ‘ppág€ØË¡ºp (t‚! =E'Ó‘VªõŒ%àƒèOü/=ïÁÁæá#ÁºÓèÏ‹ÃEˆÈ ì"ÒlùmÅ"˜cŒ2A“‘ ø[ zðŸæ6'À+ô–œD}A2ž…¦ÄãÏâÒo '±d| ­åa<¬ð³p ñh6ŠoƒYf;«ÂXýÍ„ ¦Ï3«yç–ÖùÝ1îÏÆ¾ ºè6Öƒîç'a R˜¨‰» 3ᬢÁ°{¿€‰4Ÿ9ÓO Ü#ô#/xk¡)·Ã pü®o°î‚ |/öVFË‹” $Wj%7[Zˆ½d~öTn¸±î™{yAzÌJ¡Má`”†'‚e¸=éCK³ïl&3éF3Q_I/›7­ëÖEs8 ç «ðÛáˆ(aªêQ3Ðf´•ŸçÌÌÖÃZTp½{^Èéû{‰As¾ÿ}\͸–1ƒb.Å–‰“åÖâJw°íuRõm'x[ …­Ææ^3Q?˜pÐ|Üe}³þ‚-x1é*þEVÙ9‹;^8ëD5ˆ=gœ ¾ÖždÿÑଠoÐCFZÁúémñ{ñþ ~#ëm¦8N‹¸ëlñLì®>ç92M”ûvEí©<ÓåsÒSð/Ž (©¬^¢ñð zâ`"¯Î@¦3sèswO³n¸Vˆw`¯©ƒä äp¨ ‡/ÌföÛŽžê%[È2±.x'4î›Þ¤¡kà±8õ§8ÞÉYÓ|³ƒÍ~MÍ9” ¶£óÅÆà`ëgšíQrŽÕSiîáX¿'b«}¥ô ¿¦íxK«¸ÆÿÇ T\‡yIOfç‡@Uó»9Ú*î[ã=}Ýð}vîŸáÁVßä¼ëª)ßW;ÚwJs¢ÝÑõÔĨ{+ø=b­=ÙUßV^J/É.±#þÌîQ7/aV±šš3¬Ït‰’Ç=×½wB§•u\tl¼"®…Cù-áLÎÌŒ¶Y;Ü}}«üӭż´ù¯U´Á¥‚ghôØ?BSÙ°óËͽôžÌàô`´‘?|,øÅœ/>Tj©Ûˆg²bâBa0ú1ŸÆ·ûM÷âl‹V J¾Åä0þ jزH@ˆa¹æi-ÝZo†õƒŠ¡4Qßa¯iΤ ü€¸)¢A䘸:‰Mó̲=UÊÈsÂ[Üû<ð*÷úÂîÚ¿Ú¥w ×Jsî}ï­ï>Çòke=ËéãðtÏóˆÑÃó„¢ÅŒ]¢fØu¿4XÉ'Øùr¦¢%¡vÚuþ“õº>“ƒv˜ð…_çeòŠÇ¹3Ú”ª©wóü"÷ä²Ê5›jo ‹'ì‰Ýä’IU¾J ’Þ8]œ¦¼S<Åx–•”†¿Ðã¼{Š{KæÛ ænêž”Ý1kFÆBr–/Ö6á$ò4[@&[ˆzƒ£8|7€¶$¼'¦˜ƒê* aETŒs—Þõ”Í~`–âa´Niàx%aa-{ì=ç”5ËŸ‡Mô·ÖË€.Š^-«æûWÏ¿e÷Íð{/~®ùéû»³h$ŸžÆžÂ¥ä†Ô+"=îˆ8Köc¸žD‹øïü\È¥•ðð=Æ%…«âg!ûè¨fŽÿ\§]õ”uŽ1OQ?¶hìY/p$¸í'Èý/èvŸÊ½*’eœ ôÌÐý;´ÓRú`m³A~•ø¡¹Qðzpfð®†jGÒFáð,o&.î²…ò©/އ‘Gä,4¾‰(ÕÞ‹¦·?š«àÊLa¾4[žDºÑj ›Ïd3Ù/–£ÐcCÁ ^”ÿ<âýqá²t ‡‚Ç­Kô½¹Æ|mfXMý‹üB F+¯Ýan½…^–_:¼óÃvR˜tpÚíõ]—ÄJ®!ŽçÊh©Š´ÙÞŠln 5Ô{BM3}²ÒI_ó†v"|ÓèÎ.˜³àø\†åÑØøPeðD^›áq°4p±<›㉱Ikʦ>³¸ÉŠ "_êUù)±ü—–57“×Zaë$mF y~ ?AºÖ|T§ØgZãÍ7x‡Õ:6ÊÀ¦Žû¶ ¶Çòɸ2¯ {`;fª¯ìuP:ì-Õ>¨ý•nÒX%W9Dׂl,¥B7´ì”užŸ1v›Ç¬múGëWøµêænø»ÜÄ>T(ÁRY/†ùEáÿÄ®âs¡œÑEš%Túˆ=ð~y«TÒÙ‚w¾)´ˆà©`Áà™`ÛÐbÒ Dñx'MåM…9b=^ØqÕ±Çþ5j€«¶=I;)²ùŸV–6¿@6¼Oî!ÄK‚£ m=š‹2¸̱~€9áÝh$˜Ì·7ø£•kNæ)|$`h™tÍöXÞ„ÿÈÝ„—‰WÐßþ¡ªÍZ¥= nÒP,¥¾Î°ÝPG  ¼3ÈO«ƒ,X¨x& vµ¶TJÚ&ˆÇhUÐ0˜m”ã3àFÖ UŸÁ}ØL %PPÏÊ Fƒ5ôOÉ-­#/P\\B…“¨Àg;i«¡´·W²Õ—[ÂdpÍ·òÒÒ–MÛ¦MGSüÍÝš.³æŽËUÂã<(8,𘠨šÞ¦ Ùx™õ‹ùqzWx ðŸê˜'ŒQ¬%ãø@xÖ±®ñÙ¬'Û‹ÏRså2Z €AMüÕêÑRUŽS„wê`Å'ô'lœhɯñ1YJ±™A[ …x;_&[¥Šxˆ%¶p?®/WRË/BØèíüÂ,¿ŸÝ{:ˆOÕÅ®ÇR¤4W)€Ž¡Žd¼ºÎµ+OàÉù'ÔŒÜ éàª&<“êJÍ…xr.´Á‰¹o½¹“·)t‰0–ád*^$Ølêý-×ë»ookò¯KÜ&• J9æßtO”~‚Æj/"_;ªsØ^Îu²•ôC¿L;MÅÀ'R×Q†„å½òrPœŽ5â1q%i¥6–ö¡órUQ…¡Ð_…Lî)”‹ÜwØ1¡:.‚èì£+-¨ÏçÄvw`iOrNZn¥?ŽuË;,ïL4.ó¤\ÅÙÃ9Vñ иbl]ôL™ŽK³sRçpéPzNø-ó;5X„æ3Û—øÑ/Û¾”~o9ú‹÷`×–ˆ·ÉƒÈ>õDÔP-9§F°xÅjcÄÙ@2²}»ÝKýçåà/shlf;pÕJ4Š µì; _£¿áVXÅJUÐòBxI|  œfM0O{×Ê,(”ܘ¾ˆÈõfÔþ¹ùãDãptËD?¦‹ì‰Y3\Ê3<«Û‡¶o÷j æ+2Ÿ| A²”Ÿ, GZ‘hUæç{B-µ¾R­´sXÞ~‘{óÞKè^4–hôô——.ˆGÐÖœ5ðž’RÄTè NoÍŸ|uÐv8_¨n»*—ìrÇŸTG‘çbRΡoÏ_ꀘ{’„ÞiWB鬊§odæ%ÕÌáð Þ¤þ«å%g$ŸïïÛÉAüÈî‹.-·qô*¿ï‡ß½¼UÌ$6®'ö´¿Ž»Š@…¾àùqÇÈæ]ël0™»ÃÅÒ" É‘í”Ëê)!•ÝÇóøPóèò®°Þ% ‚}8‰Vf[ó˜‹]3;²H£è/v•: ÏÔºŽ×V k%èkîþ7·‹gQvWoJ0ZÁÚÙjF]ÙÿoL0"'ª½#8U™+öA­äVäí'UÂÌr°5ÿh~eÌIÖŠ™Û:Å7ƒáè9…’)¤q ÝÉòL˜…ë—˜ŸFB•®0¿éÁÜVšùIÛŽç(–þ#»¤Vêt%Ó1ÕVËvUnª¢$|´GªmÔ›òy¥„¼ ¿B³Ñ°„'ñrxXä~+À'è!êû‚Y¨+oÅ›²  É&‚ ¿ÊîY_èïtA°¸öþãjú „ûi@ V¯GlŒŒŒüìLˆi$µ–H?D>Õ`[ðœcëAHEÀeØÞ%ÃqB!Df¨ Â"in {£ép(XÆî¡`ûöD¥Áh^‚;hA~ŒK­dvCï£/ OôlõŽÏjþ)4q]p<Ïs©ørÂ60ª[ø{è¤>šm°š³st¥ù—¹L¾ã¿m½4?ûB%}}ü­‚¹¾óþ‘’C­¹.â”#Ë^Rò õyE|­‚üý…»‚pÕ˜!{ð9òTšËnr•æY´/;ÈoðÅp«† Ù,ï[j¡¿åÀM¡®ò›Ô\™Šòhk9+ƃÖþŒ÷ãÑU¼w‡ïñgD `"L{ †r„¾Èèbuï$äD[³´ÖþšÆÍðE+Sù*§Á‰) »ó¼ní¨äw¶”ªƒ4[#aø&,%6 ÊÁ¥ Yj€“ÉAùOé¨Úªß”J+±³xRÜD¶¢—V!íG8ÆèXäOD÷ù:A¨K¡û¼™p•[ôßÁ¨9ôT û\{µº=M¹E žŸïà-õf)K•^£*èVdŠ´X|(7À_a¿Ç¦Ñ$>ƒasX ,Ä©0ÚLGÅ@+Z9œ¨f‚{C+ôþ]Æ3 Åñ4çkµˆ€ãoÅüt4‰KÙã*.N%§…N¼ ;Nÿ02ÃËõMá aW˜ZìÇsŒš=üéç9÷5ÿ;rhx¨>ŽþA9¼Ý‚² b"q“$ÔÀÖUõÅ>Sv&=O˜ï*#%gX to‡æ‚íð(#Ä ‡`IýhÅSxD0U¯gm2»Ñ4pN‰QÿQ«8Ǫ¢´Uè…y-ß—ÿ‚º˜ 3XmÌ Y“àpž‹·b„À/ ,¬Žx°­^ÊœíMñ_ó¸è>Ô$Ý3æ/qL x-z/)€zc()*ml×úùžò6 JR• *Ä«•ʶ$í£þÙg½2 Ñ¿õ+?€Ö<8’§9=JYþZxÍ£±4 ÿ ûË-äŽre©½€÷‡ÛçvJÔ?]îèŸò¹ŸøgDÛˆ«ö³‚Jt² ¸ø=,òÕ0Ii* MÒ:äÏï=‰¾Ã9áeÒKù©ò·\ûÄÿ¯•<7‚?½ü·¡]¸¦äá!˜Eß‚÷tˆæB‹q7 ±²–“Ó¶†¿ê?¼+}›À=V×8í½èþð3ÙÈÕk*Lûiýn|ˆXes<޼].j/—Œ2ìlhŽvÈ¿9ü#'ëm[+Ù¨Hö ”°b2R¿wËljëmæÎÔÏ€Î_ü%ßàlíÞšõä)OíU\G·"f‚lvÁ‰…ï˜çôÛÑú{ïÒŒÖfw+E̱¥ÅÆ¢¦â;çJ>–]ÙÔ÷ Lù1×±=²~„n£ÿù[úNºM÷W4„´‰+¥nKM³¯e+_ë›øÆëœÚ¾R¿ »-÷ÕP5³,ª.^§%çôW m÷¶ Ž5®/kH·àê'²÷ª`3­~ƒ–âÛö"Â3ü^~OG†»†kU½ŸÒ‹øV}>‰û(]œ»P™è\-WUÿ³?’rq…í+p>ãväùh)G Ám”‡Ï4š±è•G¿jë"½æ{m¥J8'úœ«†óº2¯6%Ç»Óùç‘_䉿qâï¶1p¡y‰÷@yø·ÝpH%fŒÕ¤ð^1‘¬'fDou¸´Y É|GOá+~Þq£U¨$^Éz³`k–›/r€…z^4Ž€¿‰s„4©«írDi¸ Ô ãƒ^ÉûL« v 16ËÙ?2+>#zsüQ›åI¶¸›G–ƒq¬üÄ?XQh"v€[ÁtA¹¢ð!ÁP'‘Ê£<‡ÇÙ¸v6g#µ÷Æœ¬>þJй}³¿fýæ?ûRY ©Wœƒ¢~·O³ísÄ ‹I~R¤°‹ð#lÈ U°, ÷¢{àá¯h~EÅQ’À…ÙÂyå)Ž“X<æ'a[žÄʃü2;„¡}ü2O‡Á$¾„¶ñ !kÌ’´ =%ØÃåk™[Kò;ruc\I7Ñßhžs&ÿÊ‘šŠKKµÔ‹µùnôQ’ŒÖæ6sLÀéy8eå·bÉ[ã?!ê’³½­ƒ0ϵ. ê`èÁ~¸ìC—óyx?Î>‰•£UhoàìæXMðTo¡¦Ãÿ.°LëHoJšÚ}rXîì´¦èvsŒþ<}Ñm؉4 ñòЀ“Œš¡–z @ÜB°Šï²¿Tè_ú«ç¿ÇdKÓëÃlj¶†êDt'áJÜÎÄç\•ât¼™)¢‚Àa¨#Ú ¶À%`œµÝDÍÁ:<‚ÇAîq|3ˆ e ÅH[¶ ß…=èq؇ýk›ˆ€¦|WGbÃvK"õÀ$Ù…‡êIé¾è”N#*øÐòUc-àN _%ø/yâŒW¢Å²‚Ïâð6eu€ÕaO^Ç ¼,¼’]†·`ˆµðO×"ßÜ‹=9Á™ÁžfªáUމýÁQÕK¨ ó_{iœ£¿ãˆº-»ØKÞÞ Ð;è6xöÀ½ ÖÌFól®6̞åüæýªå U­4R¥T®¢}à/þ6³Xå/2®”ÎDiêš¤Æ >×I¥6Ég}":lϦ t”A“Ðz†4B«#à.ÿĆèn*ãtþž·z¢6d0èJ0ÎÿÏ£ÖRšÐP¦Ì#˜H—¡ Ò˜Êð p0O²~gŸa  hotÕÒBWí¬°£{Œ×U,vkt9WûcÉ@†P„\àóa%t|§q#!+œzJ‡Mák ëá<0ÕØ®Ý1“ŒiF&/ÀŠƒâ‡$%Á´8oLdèiLFLãl²ïý)ü'^V,¡.)Áût¨Y ·HÉ£nŽx-:cåzD³ƒä¶5¥R!\6жðŠÐŠà± è,ÄcÁ¿Â4e+È&åüê%>¢Ëázü‘n£×taXOXŽæ€ûp’Ø349ð5¼6rÜx_¿¬²Yu~íÌÞá™+ $é ~«v•ËIµä.Âÿx[P‚N±®Ú‡6øƒe²GüˆöMöþdE?ÊXiUÏ.hjfy'y~ê úlÏ&Ö–½ G{z’ÿÈ~ÞÓ¶ÀeE%9S#íù‹]Ô¶ëN=à¤ÝÊ’Èmë®KkÓ4øRL±¥ÅÜ(ôÆöOÄó˜­¬ßÏ&‹¤À=¨©b×=Gôló` Œ®ExŶ¤^DU4šÕ"‹ÉTòR©žèºœPe{a)Žvñ? e…£yPiÆ_ éZ9s%ÝË¡•bQm5;%ÆÊm…{¶=|(¯ê¦¶A¶nT4y;¨‡í¾¤…Êdå߸70ž«…ïÿöÔ#Œ‘Vª´Ç¾ËÑTú]8n»Ý'êPÌ3¾V¿á·¡EæßCé6‰ßäeázhÇŠ_`Šò›8üpô–SdŸcé[«¯ä‹æF•º@Â,¥`T‘¼A|æ'+Ìß‚gÀ]½[p±-däš·:Æ «‹P™Ì7îX?ÌÙìíLãȇRÀ<–—í¦ÙVë oÉ?¦ò‚(…!]åbŠ›Ô°¶Á]B9|m‡oñz‹ŽÃu`rO)º¸bž(8Zt“¢T$”‡%I~þâ‹y^Þ¿eõx}JA4úÏúFדut-¢¯ã>¶ÝJ÷aAÞ |‹ÈrT å™ XLp2Pù!)~&|´ÕSF¼~‘3¹Þ@nUÿS¿àßè³Ô%®õ>õ«ä" Åh_Äw[kØ4ö7kÏ>p0ÁÀ¥x>Ϫ¢Iü-¯Š¿ÀËpþ ð]¬x.ÃÓìhY –âX®ÑîÆ Cõ_òe¹}¿¶hõƒ.:4¢QLÁȼ/'ÍXC³Oò6æZ4 ¸áD~•A7@>´‡×ø~Æy<÷YY¾•¬ @~V½†—ø8lác¹‹-bÁð}ãøeÞ–7°F· —zÉTp Ì¢«ù5pÇl 6óÑÚïæHzÎÏÌVŸRßܧSÌzá“áxÿ¤ÌiŽ1q 7¢Z%lŽíkÙÁ$X>¼ÑW>gÌKóòT>Hö$[|§öçSù{pÌ`Uàx9É?`è‹Þƒ#ð*Úrñã ï`-9¬ 3 À÷ÀÁ>”ˆSÁá'¬ÍWp;i¢àbvÚü"vÀ"ܪ…íyÓðz˜]ÂH8|#ûÀ#¨‰å¨‹/÷ÿϳ%wLæ@O-–EÛºÚÊ;‡8Ħ+5•/–¬TS„Fh2Úšði`9Ø…CM€tƒ»$-aØrÔ”·äÿÐsF¬µŸ¥™ü“µ’§,¼ V'ŸÅ‡BA” ò£z(È÷ AO@+ÓAœŠll£K>“(Ûrà£Bh¶5ÜÊoèä϶\ü€2](FÐ%¼vd ÄK€·pH/ ?‹Vµ¶±ÝÖMp’°¹Ç+£]à ŸP~2 ò_p¨ „ øm¨ÜÀ •á>ŽÏbé|?ÿ .Á&^ÞE2¬«³ê^õ)(Íür ¯¤/0¥¥54»át£{'¸ÙÐÝYΞ&Æò}áõFJ8ͺ ³åp#17hÂ2YiZòf°*Hàµùv—|š÷yYó=¿‰òÀÞR8›c»XR³éµ´4£;ï=gFµp4—d ÏZÊÑö–¨ðП°¬Æ‹Ó¾,Ew›³ézS2H/rÆQ^¹¡(zØ}6Õã*K˜­4Éo¼ë¢}À “Øgåô:G‹?‚c´1=§sïh÷Ó=¿g&‘ßùC”—£¡,Ÿ™@zàžPYe IDAT?U`ߨælÍ툴ˆ_ž÷lBž_—ýÛå>‚ß~02A©/¦˜PQÆäŸž{Ú×Ë7ÈQP¾¤êØBÃÄ¿à˜‡—E³àT~ ´'“÷RKפØ®g±qZ?+Àš~m˜=2+1÷…ùˆ ùøÄ^.öxÊbÈy'ú…YMÞ ë™eh[òS¥U>’YèÁ ”ÀE¾‡à>—/€“ÀðÙd1º#|Á[poЊ?¡Ô,`0mi¨=_iÉF%GZ $Ù’$Ï´ŸË¡õÂp-C#€‡9xeV‹¯«,§Õ„|´æ[ ô{È7°Æà/>Ðì7Á+| jÊ{‰ÀvÍ8ÜɳáU´›•äMàVÜ'¤J–-#ªCL?m…þYÏ56X…Œáá![ 2~kún­ö·‘lê8Jæ )(SŸù§*áú¤2D@ððêâ ÔEXgL‹çS.Šß™ œcºQŽõ± °±¨Ä ,Z(ü ƒcà.tï#a$±6°ø6À­|  GÁW¨îK6`Qè"m€èîà\ÞŽ'ÈÃ/Áø•…sÙ`žD?ÓçFãÐýO½ |Ĭùf’^Yï¼íùƒÍ—bÅ%Jgõ¨ú§½ž-IíBI¥ñ#ÉA?@`K4‹€ùi°–ÙWe-£Uø]>‹Åó¼¦yÄøÈ‡±u|#ëÊÖ‚m`5—…dö ­XçEõØwúü“Á(~/ci×à¥Ð]ãT H8Ÿ1‡ï@ Àxö€©VÀhÃn[î°Ã©Ä;NI Eã>f²1¶0÷Ã:ü› «ÁLÐ̇n~̆ ÀÏ3Át¹5‘ØIQcg´<]ûz®k£­.@!?¬EzjØn–Wi-Œç³Ì-ÿ#ë¤çêr<€ŒÐwÙnÈ&è¦/fùà!q„9Ül,/ã…¤ãÒ36E8HÚr m†ø J‚zQê“`Œb«­égsûðb`7øÎ_ˆûÉ¡ˆ4Já<ÞeÚÌd+Q”Q ©!Ì; ‡@'{T…çâz#6Æð0€jÁzäê!¿'ñ¨^Ü*%F<+…³Š¥Ðœ×ã¿XOp<âùÅp?‰“/JÈmñ¦Ñƒý í¯Š]„)"„]QeùøkeøvðEúäìM´ºÿ¾ñ¿àBw=zþô³ÆòÙÖXá°Öœ¿&}­Ó ’:„5âÃø2^ˆÖ¶ðö¬ }Äœ(Õqç6¡ºÞªnlõ ÝËmœ YZ’™/ð‡™‡Ð´èaþË:óZaUäuõæ sŠþÌ܄РP1æGg‘Ê·‹WÅà=þÊx*j€nñBè¹2ƒg‚Çì<ˆekõê×°žú' €£0š’óÈßíØ’n¶bR?pý>´N±¥à?Þ ö2«\¼ß [Ò–Vˆ×06˜UéEšM˱C¸4èK Á8^ª`ÿëÀ#h1,€ß¡ x,Eú ŠÖ;µ…Ø¢ ì“¥™ÆoŽªò˜à7ÿ‹à]mJàŽÖ5÷Šõawu¤ÑUmŸUKÈjÀ³`!&‚ÍÓÒ`Ì 6–ׅ娛5å©°>lBÿ€yÐ"V¯Â ño<›Ç¡nðÁZ±~:‰¿K›É±‰úŸ@{Ä çbºÖêNgøŽf¯ÐºÑ·9WÐ41W½˯cZØ‹)µlõÅT²•4ϳpÇW³¯( Ÿ§=…à²ÕWÞò¾ä‹¸†_âÕÑK~‰¿£Õi*ÏË›Àªì'§Ö>c>mNÒÿZMóYùèbØœ¶üà-ÿÎDš›€ÒŃ[‰¹âUð›ðgóÔÂ%VTçÈ'²ÚÊ/[¡iÁ—á…Ò°;&[§ƒE h¶‚q4F(ˆß ÕÐutN„køZ¸øÀ8¦‚Óðð²;ÔþºÕ ©hž¾SMd£‚Ù–dßЬ£…x¢Ð‚üƒVmÖÉü G˜[Ýü)áþ¾»ùæ`àcó£Œ6€·¢&L¥CWC/C[àAÔC>,-„–àONXS&°Û`)\Â-˜ ösà<[Ì ƒò4Ž>ƒ‹Y5ú?è…Å@#:VæÑFÏ @ŽYÚ¬ƒ 1Ô á}Ài±1ǺBJw¢q, „ñ[sB´~p¿öÓÜ!Be €ùX"tò†FKäv#ÁÔéoø°úõ¤íh$«gˆÖ |ÞÄ̲|puŠGóF¼ŽõÆø \5cèXúÑèíOÈýM zÌ Ño±/ Jú΢müšY*Þåk˜¹5ÜÛ7˹RÀR3±Œ½“ÝO’…žB1 ÖHFl[„ Â䤑Íì5˜k¿Ë®ú2Ük~}öKþsfG:θcÿŸ¸ ¬pÖ)(Ûmiö†xZ‰ž°?@"ï ¢F ‚8м™M²§ÖÐ’o¦‡¬ –Ûœ­}5‹™£x1ö”ÏFcÁ(q*œë±/ð(ú ̇;Ð^ ¿Bs¤»4ÝHg›XQXäà=d ù ¦ ÃÿÀG2‹‰_ùW¶]YF‘<œŸaeÑxüŸ x°2]ü~øq8gPÍdÛØlÛ5Ù¶ívófc7MmvmÆæºmÜÌ™IÃ3?>Üç€Ë‹b¶,ÃgsŒ¿2…yÕ«Âi~SžÂJÑšL"óÅߟ²¡±Né}™þ†¥Mbêyk;:Z»öÓIÍXóÕN¾¢?ýV•æ ƒa²h2=!&:gÒ\èžDóÁ?Joú•YfI#,Â<=å§þQ9«5q¾w°êØ?².«ü_Imw'Ít=ѪÐFT fÂÆH-¸Á¢€R$tÁln®Àóp¬øNÚ¯õ¨ ‘©Ž‰Î%ŽNÞKiìqûPFÒÃû,š4Eü­ïӘ㒒¤HQØÕNihÕ„(¯ 5+ØQrOØmäaÙB~G^ºÊÑ[}ÃUÚ ^¢£¸!º"ÏÁ74†æÃÛñmŠd)ÙUΤ, ´ˆcWXKë¹¥ÎwvwçŽàø%b€g“gSdY×s}˜2ìÁ[dºì*qÄk‘-²³Ü,ñ{ü±œÌj²SìƒÁÙ|¶S6áãey]ÅKðF¸†ZËíRBÜßQ,Í$ËÕ$RLDÀ³îi%[ÿ£ÄU‘®ü#ö[ã•Ñt$ßBóQüeÏeXº¿ŒßËCó`£XóÄ©|TŸè­Õ÷vWVV–›¤—3( ùxÅå YCÜ“VÁQ<-¹È%(Ç7‹ÉЈ}ÅÏÐEÈ¥÷§§ÕîZîì‘9Ñ4º™bu§sKEÏÓ|a³ÎøSá‘õÞ>„*˜sýùÕñ²Y¯&jïµHœKÞÔn¢†hºâà P7Ü.ƒ`ñ¢›\E‡ˆƒÈ‹Se"ڂݲÌ”E ’Di¸[p™]¤«}ŒWÃíŠ|ºâ†}J+í°:ƨ[4)êñá7á‡ð]ù¦>Çg”~ô-|ÅeäùŒ¦b6ºG™ÓQ•æ€uÆ1Ë#¯Ù=ùlhª$ý¡¹ÀGÀ 2…ö¸†vi 2à2ñ Ê7£câ+É;ËV|¾,Ž¢à3ûFËÿÆ}å5YÁ+Áq4ŸÌ„?a ΃[É%8ŸøÃ*ÅúeíÎ̪Ò>µ/“z'+§•rL©ËÿàçpGu¹’ÏÆ£Œo¸ \BÍí¯J7í½ˆFGÅC¾YÌ¡3·íMè3ÙŠ^àjb¿»d#ÙJ¤An¸ÁW£ª(‡ò•,Â~û ¹€–Y3ì–ŽãÛ$§UøäÇ;ša#•Ü0Êet罸;Ð(¼›¯2ZóO²´ZÝuYï@ŽóXV>†—.’:p“ýÉ2À™“nÂ×ð Ñ“¥Á‘GΕµåDz¬î¨t¨&;ÅïØÉâûGô1]almŒ±Îhu ÇhÿЇ¤”è"fðL\†,H`©Æ³¼Ñ>PÑ,kæÓÖ»ÞBž–$M…¾8ïÅ”ñê™ÏÛØÃPÛìM²·ql3“C7cꌷžÄ¶©‚íQVEñÍùHqÒ[ÄõN¯‚_òá¢*ΛâCÐ}¢ pFb’ îò"|HƒÞh’L©¢)KaÇìGÆØ`Ŭö ³ ­N‡’ìl½ÖJ\Ó“Õâ´Ý âe‰3äDœÊcÐ#yWùa8KänèoÿkzÃWÈ Ñˆt‚º¨«£6}E¡ ñ¢¢p‹ òž™a:LŸœiõÎ(ìÝ¥µÑ ±É‘‘jŒs1Úëþ‹¬6ú©ÛH^'ެ(/ê%”îNKNWKyxœ-X^V Ç¬SÚmº‡.SòàÆ"‚4‚Çrœ8 µåçÀd£GðcÏàWÕßiKeRÏJcYoþŠYýÌöi¹3N¤~IÚlÁ²çr¸lI–è5\?Ô·ò‡L%µü;3V§õªüÊn‘l,«§ÕÜ|šù)í@ø¸™ä}qËJµ"o¬Ób!~€Gˆ 4¯þYtÒz¢¹®1î—`ãU4o€ÙSÄF^C.#E"Ydíóc æK+”fF†Jgÿ]¸µ7†&l½]ŽPú(ÿÁ>ø‰Ö@6øf̰¢­y¶ÀëÉ 9—v¡­`$ËÆ“Îákác¢ošßhËXÀLnô ÌÏØéœ’£½¯³z•¦á ýHzËÜh¿6o6Wáæs¡µ_lµ+Èßµ>ø9­gŸ‚öJõ´Îûiƒs^ .HûÉ!©º=‚^VwFåBÌ#¹G³d‘Ç̦ÍWÊ Éâ/CkÍÎ|›GÆu#=MŽðßy%~ [q®Ÿ2”½âuÅ¿`[ê¥3j«¦ãWwcQF°W®ºòµ¯BT¯È/E–zrG®slý¹;Ñý¸‘u(üŸº¤ÞõÖåKq>=$›’ûø‡ˆ‡©ágÖBs@F]þŸ¬%~aOí á1J[x!Q9½]`’w¦#‚Í’ãÔÏôkî…Ïšyi%s^VgÙœå¢j5µœrv A-{xMh‡°ÎÛ§D¤}TÖçµÄîÀP¸ŽÇâ¯pï@ÿÑ¢ø7AÇ)Ce#‘)‰lr$_Éwu(¤’°£ ѵöàFÞÂ÷ȹØÑ]Ûè‰(½”"„²±ƒ0¸\úÊš¡_¡œœ"-¸*ëÃbtMÖídC9KÜGoa9­ŽÆÉ×0ST‘eÐlَȰlyÞÂ*‘lOâãù`šÕ™}µKZ1V38 ûÐZ2ŽžÒ:BE´DŸ/#QzM^“At†öUÎÐÏÚ½r-²œ¬½ÝÁn‰»ÊЍ¡èéÈ/ B˜ oÄ`‡*áËò8”€N2SŹykþ'¼–Ç€iCénýtä¢hwE‰2ö²¶ÌÇš‰1‘õcÄY‘Ê·ŠÓ¢5ú†WˆEuùH«l‡vÀ9tÕF•µOä-Ã>ü‘ô$p ‹ã裴ù ГLƒÞd!$Ã]´ À+ô¬‡Ü„ÈÎr*IC‰¨µãÄÓ"‘‡ðt½¾æ£õ|zŠóØ—´éèQ ‚ëÐ*A6Ç Ÿi_ùnGþ&näB;é{zB)C+¨7é1˜ b;\€er­¬êÉ;âš&ú Kh”Ø.·#/JÅå”[ôëda¾Ò>(  ˜I¸ ^Á_‘&4EìÒ*U·“r|;Á(M>A—¹“%‹#Ás‰ý,°1˜'ìòï ,°óf½ ädË\Ñ=M †JÖ-ëkŒmøä1|_–ùkí§h#£Õv|/Iâd1D*tæqâÚ*ÖŠäˆ,eä Ô•ÄÅð-4œ>$ñyår‡>“£ìvI¹Atà‡xáð)ÑÖꨒ•œâ‚lQàž(.ÒWÁ+æ ”—LuqWú+-”YüoÀªÐYr›qžqÖw¶Ž(‘O-£ÿ®å–·äg³+È>ó ¬¦( 7Q[þ”WËgÜ‹ø^yLÞƒ1r«zD\Qâb GŒ¡¬•þÁ;¾²r|S–CÅAùž#9he¶’¶£+eA•“¼h4}‡ÖÈòäòÌIúâL>—;ÅTû VOMV¾ßc‰Z›}wøBHe³¿Þ‡Åx „,]ßçPÐf5/­¬Fƒfç`}xg´IÙµ £­fbª;;_iÏ>h &›Ùcss0nb–5z…ÒC?ìZö1|X×n}/¢y»£YØŠ0÷à¢¢Ø Íåc tŠx\.ÄEå#6ª ÂNB;»=ìWç6>UäBùhQ<ñYV— ;´<'õâ$àú—=ј(¿Ò Úwå5Õ¡ìUæ¥=\¦9©e}d}¤‡VÇ™2Kd[ë¤È'öa[¾5è/2Q%™P BJóKð&¼ÆÞÇ}­³þövtNÖNkmð É<éù¿_ ŒûQá[ÙÔx|ØýÙûع#º¼·„Òº‰ ?Œ¤/þí¡žéÑf.²Õ‘µSªÀû/™_ÀÙsCÓÿ„G™;Å]QHéLE~qÒl¹‘n×Fºo{ï¨Ý%´ÊA—ñW”ÓH¼:ÊØÌwÓ'iÓÓë¥Ì8ð½uæPžlß„¨7y‰ÎèEÝ›ÄúØÙÈfz´•Ǽg šÿeä4’—†é7~×sûCÕéþ)_s$= 4ðW'µ%ž±^ ‹I,iãøS9ûXQ\‚ä¤gH7œ×¶l£·9кÇRŒù=£¨?hz¹©NÍØž>åC㺢gú”áüéé8ö…"þó¿@=éQGSå­'#v¨xž“ÚÙõ\À›ì6Æmxf|ÖY¹(P-Ô0tU ‹xŒ‘[´l–âÍ\Ýä´`'ãƒUÒz™á’½ÃµûÆ!ÿec¿V?ºd©>zï5÷`QHŒ„œYÓs§Œ£5]'"°ÃQ€¿Ó@Y­'õ•ÉjIr]â¯QgÀØVþ+yiün¬  ý ® Nód}|43[öœW£ ô’ÎAw<õ¢Soèipb°1i»­©·š0*Ú·ÐTt˜ü®6sŒqü¤ÝÉè‰SST¼Ïšøj‹*ᨠÍA÷b‡MÞÀgY§ð¬ƒ­ŠY¤,J.hËôâÖ&¾ƒÏàÍx3{—VD9¤Ö×'«Ã”Ê%Ú·Æå± :@côMªðF¬gd}–È›Èfb$/gg° á7lºµ>ô”CIðšüIª¨ñ‚,/øu¾N´±ÛyÙû “™Ç’& ô u ¶*™ÃMŒ¶f¯$jCGG1êQ=Îvt¶² r0}>6¢Eœ·NGkíºÏáªà¼¬(‘ã†(ú½ÆÇq"Ü‘«ðk|5À爂þ•ÏØ~Û¶7Xw­&fyQIôFïîXåˆE+¡ºècÝ3-³§<Á ŠÃ2$žÛ³ev~L×q;ÊÏyuŸs•§‰C§;ÔÍj!è^å4Þwã¥$Ÿsª†ÝŠ u Ïå^|XY„È¢‹ä†+¿bE\ɰ ’EŠØ ?È—„å?(?™N4HÝ•Ð<Úkݲ—dÍó—Ni’¢é×E1ô'ùœh*«ëŒwMÔ¯¹N¸Nz~q-£ß(qìÔ¿ãõQ¾˜ežR^ËUS¬J2E®E}y-î…ÜpFĈÂp&‰ðHÞãõÄ=OBíMÔ’ê: ¸¥¬P(߈Pk)eäll‘ÿä¹ – !È%;ÑÚÚ3ežÖÄÑR?瘧–E›É µ ÄáÊjituãÅ1sŸl&¶òâ¼-l’+“£Yk«&ÿ‹So‘Ú®Xwg/Gy¥:Ž“ø_…~繘&*… Ú^þ:¸#«PV&ÚŠîòç<ÅF ˜ûRã¿¶úŸ8;5Å?"´êW_eaÄwÀç|[Ó±L«ë¸.ìÖ¡za5ëE(Éœj4¿#¥ÑßX` =Vz©•ÈmôÏCß앎Rž~Z´•CK¢ ÑýÈc‹Úžcµ¯Iö2Ù¦FDR ÅIbâ¢Ð6<2t9°ökóÛžå~ßìiï‰Á”üó=VÔªê¿î>Ž;Þѹ'æ¼ùkÎQ9oúãÍ|¯]±Î3¨€ìc9PºD¢#%°mœ´× b•$C=OõS‘=ò„Ý•Ü%h>Wº¾ß’šÜ‡^â (?ý)¦£Ð4ü#|"à } Êx‚‚3«uZ÷¤D±mCÆÈ #ЈnpEg«Aü¤zêbžûêFGKçÈj¬ ŽQ“ìùÖ5±s€ IDATüÏa3è<å¶vLýD>Àf;%*"º”³š‹©1ŽQPÍù”SÙ%üDβ‡Z•·f ÑÁ\#o‚ù2ŠfôÊøó[qósê†/cƒ2¯†óކþ'†Ðåd#Ÿ©•¦W´-øÚ)¦ËÏb'¿€SÔjN¼ÂÍ­U|2|O»š:Õläšþ—ÿ–\ž™æñÀI´]­Ä/qÓzÂ~P늵Îz¡w<Ô†¨-<ñ¸•¢—ù8ZE°YJÖFD{˜Œ·è$B“a Èƒª¢(Qý ì—|1ÿn¿âO‘æZÉ[Bu\Œû®Ý‰¹ŒœÖ(ã+ÉËz³rê?pI:è\ M'y×WŽŠêè‡˜ÆØ ²·h`»ÔhsŽ<^ã†dp^Y/åôWci@8ë³=Gþ„2ò9+ƒU 2ËŠÏÖV–ï`ÛX@ä2‰í拹‘Â'}ü KdW¨Wp1¥‰üL…vWd¢šê*¹†2?*$òÊLøÀþUÆ-P¾½‘ãa·4™ÀÊÇÐ Õã¹Dþ^Áæ&›Ðg<"ýÑZ§®ž§á@'º dÑV¢¨7EQÔ n‹F/Aþ•ÓäÔR‚”(Lz"'®¦n'ñò! ÈÙ2jCwT€/Á‡ðz$DŽB{Ð`Äqö¡½hVi3ö^L‘ë­UÐÆÎ/& 7ô#D@F{Eoq,ˆ ñ(õ­¯žá® 6ÀWÁÙÔÕNù‰à28 ¶¡œè*Ü'>º^RêèË\•'èL(Ÿy•ç‹Ø3î…Ëè2ò=è'êÎC|7Yƒ€½BÉø‰GqY8@–ÑVh4¬ç¡-'W¡ëð–¢2S]El9‹-#uà<ƒâ ÍG~:&jÏô®9Þ4{cÌ0‘®n–³®up;íœÈ{ò—$ìzž£i„{¨31Æ$œ¬žÕ†ˆ²ðž†äLýŒkÉ6|½¢=qb”INZ]d*¯kÿ‰‡À1DçÇà%\†Ç47¼$m”(ŽjŠJÜÏO‘JCñNì\ ÅÛgE9½!‰UÞáOÎetœRDKV¦áx©˜Ëã=)Óõ«êVÏΈDú¯ƒFŠF²¿,WrºH жø&Žš8 Äg^‚d >u9oÇ·Ãz)Äø¬gxv¹96˹²¿ø—– &«öŸ#%k±÷<õÂë¢Eu·~V½‰Ë«ðŠß‡`B1œBÒ¾ð ò4àùÑ2­†æ¨‰ÝîBº£\V¤³‡ÛrÖ@땎%úºÇ7[›ª†Ý¹qMe’1QÞ‘ùBí`ŒgÞúÁ§Š£0~âPIæÒ+‘‰JÇp+enB”O†¦ä;½±5ne®M”"§ŠnÏ*›ô꿌4šxýçq5¨‡e¸™®PÿVïÐáZyå:hp^Dž¢xùˆrt΢-h=_‰re6Yeƒã Yɾ² ZŠüS¾•ÃQi«iVU¹X®9¡.oEjqä"~@N‰Qv¼ÕÄ(ÅzãíÂ4ÅuJ9FÈhêŒ7 û²^ã¤[UõŠô†g³•¥Ž %Wkns‚]23ÍN¤Éic!Ï# ˆW"$†«•iqœp-U#Ýáz(ZÏ3íd¹ÙÖè:¥¿²Ö±S‹W¯óiÆ6> Í„]Úi»ˆüqäöìÁ9|g]e]ûE½Êõ,¹Mµ¯êÛP_£>V¾¢,×rád P^TMÄ6—·?™Y˜çFŬ,Ù¹x?^Côc_­9¬ šÅø!{€¶ZÞ”¦l‚Ö‹’âü) à¼0H®o¢šÒ§â ZŸÍd¹ƒ½–»QR—#)ÊyRç&ëà#£V²±ô vŠ_ ß—á-;‰(ŽGcpk¼B¹¨<ÖÞÚÅíÒÌ4'Û¹y=ÞFÚšxÂUÖQßÏ4¢Õ µ7¾¡þÎÞòxùH3é%Ñ_æXäDÀû…=œïÙì8– :Z!߈D™ˆ“`¨\--|M$Éå2§Xã(i ŠCb²ØAÿRi[Ôlúwí‘Q<<3ë£hÁ_Xod-9^ÆÁÕøyS ±Sø?¼ ì—weKƒ3Q#qĉ©21\bäbQDbQÙŽOG Ðxºׯ-qwx‹…œ:Èâø9ö‹çp=áÄaOÀ\µÆNrWô8ô:Gsj_œM\ÿéñ´Çõ`*4…!â1z‰*N—“,üŠt5}@çò±Öþ—œ!‡¢2°ݧÇÄSYFòªœð¤þ×nŽ*¢º.à½è¨Ž`÷-a1Û‡âðè 2p-¼TtÄDuX}°O~aý5q±Õ=wsvÐ6¹"–§„ ²‘ĶwðÍ8N[ñ**›ÞÕ1(b¸y‡Å¡ç¡ø¬³þ×<“ DÇZI¬º· ›'ËéÓñ5±“Ü!¹ùrÞ™°FÉù°KVÀCpGtq¸ÅÑeT_䤱2GŠar'Ǩ¡¬ÇhO²d)'ñ!5¤ºðG@m¬ÕÀoÆi¸ˆ¬ÇÚ)é ‘]½M~Ê“*·°ò­Ü(Ÿ Žè3Š#c´=¸?ö A¿ËVVgƒc(…ª.wd,OE‘ä­t‹¿H».ù‚Ðg?鸆7‰ñ†û‡ÝF×è2Z徫µÐú«H[Ò‘^ÁÕq_„åm+?@q´ýÅÑ#Ô¥×¹èÑ#˜€ú‹Öz¥“˜èÝñƒq¼²ÃQÁöfuõ—άJ“xG1_”ÖÖ3Ïu—œÕª©ÿè{e³t˜ìT–‚¶Àù·³œr~ˆ®üz´Ñ8¼*¸Û¬owçËÙ’ð$rqI Îô¯Òf’òúWuŽ^“Î"]iå¨vMñ£Fx®œ‹²à/aJŸV‹æ—pNè/ŽÂ>|ÿ‰+I† B^¹w.þ“£¢™h h:Œ‰Ì‚sÖ´˜>DŸà"›©´*”-ù¯â édt77ÉÓ"“þê Š¡d£VY^›d*Ê”NÞ‰Ö¤¥yCñˆ¯æOô¹êd²Ã½Ø]×é5…K>‡÷Ø›e;c Ϥ±öñQYŒ›ÒxQ›tUe7¾ËÜTÓnû‡¹§I“›´wÔmR[9ü¨iähu½Û_jå´f¡²Ìæ~¤“çb{TëÈIž%9Ò²{bkêÕt(ÈrÙ`lÑr“,Ü…V‡•27ÜÀ5Ùiàæv Y@$7ÍkáŽ!®7QÿÆí4¾Û—¼Æ*@ÚÚ'Ü ˆ89&ÂÛpuZɪdQ¼Z G);Ý —Ò§é¿iV`²ÿiÚxë”$\[œ5|Ó5ÉtÒ§¸Né7Ô‚°Nj°ßÄG ª&‹³NÆ@ÖÕU½zU}_Ôs}’~8`÷ñš-ÒVз&¦lt{×ùìPºO\‹|£©_ŒÀ÷Bʼ];„ÿÁ É}1’¬ÿôæúrß§p k™–&zði QþV=êý†Z.f w¯çkDgßi ^2>…›²ƒYѬ¹ß¦'Bpuæ=ÿB¶–˜PHžÁÿÊæ”ë+td¦¢ÎTƒúVÜ¥R¤ÈVTG[#Ø>ÖÈ`Ž`‚Þ¥ ñ#1B¹'*GÉ@-ÿÄ–!ÕYÈÝ[ÏV‹•Î:s/ð8£¸6¢çlpZÉÔ$õ6i5v–ëƒSá¯Å¿ÉÎVꟴ¾ûœòNíKßàÆä¼ 7 '#¹ðd ¸kÌ®óV~{W¨‘9œU@‹BÇÙ5Ò*œ`î²[]‚©áAv#Så%´íÊ =ÞÓÄqÉÑ‹$Qy0F‹ä*ZXõÒlr4ô' FÛð ‘ià³d9s´((Þ³ç"ÑÁ¥P/u$iIç“Ǹ.ý$+£ód(YDFÓ_ðn"ñ.QJ–âšXÈΰơ¦þ¼™ý7³êØçù9QvÈ´Õ¾ƒnJÕZˆ†‹!¸<øèITÕ«LBÅHÏ {«l+sXŒ „W¢ ±ÑX-Òíãf’ìÎf‰)¼«hÇ‹LÑÅìqr#_(߈/l§œ£¤ ÕÄ¿*‹eQe‰²Ån-·Êm¦fœ ^dgíá‹0¯Bä?èÿŠê’;à¦û´ß G-Õ«—Ò®ã2"€Ê–”Í ©ý+ìÆoB>ñ;,'n²WëFæ‘Ñt/ô/€Y @oØg~·´šØíyáàR³føƒ½“O‡HWxW˜d! iWj"ªÉX!Ðs²¼§@,ºŒÎ…CЊÎ'Sp¹†â1¨¤< ÷ÂeX%lž]\¹Ù99RngänÈ)r‹60T„å49=„K¼'­ÊÛ°Ú¨?ëÉ.²ºp®²gî¢z{¥­£ƒ~ÔuUV#u÷QTgŠ ¯ËÏ)Tù¡ZÞßõì®h-ŸV\o§Þ£³Ð |ÊŠ?PÑ-²|ÄePvq\î"ûÅJ„øbuº^[Iv$º}¾ûÊ¿¨ƒÚ-ýç÷'ɇl=¸%ý˜wïW÷žì£rÔŠÌòæòVõp~Ý|bDòîÖ«Ð2M‘§Ô}ä~áiÄÊS"ŽOàlfŽÈzõ=gšö53ñmÖ_ßo¾[*¾±©¢–ëžÓéj«:µ J&‹âéHáSÑ"YÇ®,Ûãr";¯FÃOñ›2‹–Fù‰×ÀãQ}È-'&ËÀ®‰Ù¸8/ÆŠÁ þ‚/´®Éh‰PøUè‰òÛE ÙÃ:ËÇòSáÖ)ûE(ÅØn/Ógyæe‹sôu§¸‹9ŠÓ$ÞHÏFø;z‘–€ý2U2áF‚Ü&UxöIž¶Û Ì4»™yÞZi$ù㾆Sw¤ßaÃ̬d¹rXy‰Me+Ý@òŠ2b±èîq9s(}èQZJÆ o¬«0pCTGêŸß]=ñ*±†¦%DCñI¹Œ«óžÎB®^¿’‡v‡Mü³uŽÿÙÊ;%rnäèˆêzrüW.ÇwšÇñI¯M¶£¨¤&×H‰½è ƒÂ;^Š_”ÀOòË2Ôµ%¿ÆÚ‹Xã»kßâÕÌéF±Ð*ë“Q_üaÒ—™9E';ÿ€ò9:‘­r)L’šY!œaõe³Ø´Ç ÊǤŸŽ³9ò°7ðÖ[7xÇ ÁP›¢Ã¨$o‚k ²ÌTrÃh’Î1¼¥¿ãÎÐ ÅØ~dѪÁ?,—µÑl,:g= úÄIôIÍ…òàD+Y5ÒHL2‚°?½U&üüdµIœc/M+™å9«æ@¯ÔÅÞgâžœáŒÃËx-[Ðu²#ïAsãz"*Š& ÷FUÄRùÍDsåT–†À‹k‹×b¹/v¢š8Â8æØ‚ïâîY9èKçÒLŸ’ÉüÆŸâU8 õ±ÜæG>Ú,c ²G;ž9ì i‹> Ð ib/cÎkøÿ‚ÃQç®/ÿ'*9,ôA9(‘ “`?Œ>ÊQp]€§¸©CÆQ•$ Ï"Å®g> ÷aóíHY.j½œ§Ð/䜒§é+tOb8"Þ ¥ÐT¾†öÒâgäV[Ü—&#ë¢M¨"J&£ C×É)<Í€ßp^p ƒô£<Œþ¥#d_Q責-WÉË¢ø)æ ..ŠVÐS6¦h$^Èc(¿–[D²É¬eW"{C{µ\27«bUÅñèIgáòtªZ‡æU¦E–s £gŒ4ŽéW´U¢ïØÆà½½Ùül ìö‘‡íVÃö!#/cÆÝe]wÌ ñte5 —#h‰°ž;ÑèLAÕùwhŽÓX-Èâý¥œ²ÖÁK(@N£ê"‹ühLWº+w ¾åò¢þ´Š[¨CQužÃhÙ*³Œ?[hl¨‰,‹0yçËãªçkîœíúyÇ·€CüÆ'Xgíÿ NÖB7Ñ,<œºiG’…¯‹Pˆ“MÐLT W–uåñ H3ÞšËÍÔЬ@Zà/±Üpj{ܳ\3ÐF¨*÷m«ˆ ìr¿lƟˉr­øCL†æõÌL/Ì'vyM à;¬úž½Ê4¥©§t” œ$#Å/?¯Ã!™?œ?sZÆÙP 8Ù?QìFrUp·“îGïÒ¨äÿø>T ÏıàG 8ÑR5v¬v5w8YX&°¾™þŸ¾=4Þ¤½LŸâ5K•hòï’‰†Û_|“ä.{þM…1¸%ì±²Và³G°"ò€,Ë@~ú‰þâz&óø¾D{㢖²'ÚG†‰òh3Í÷¢š¬Ž…ü<ÖC&?ˆåEè†W‰+ðDLàŒ'X Ù –ÇÞGê+ép‚”‰2 ºà rºŒ†|ø•Ü#Oá/ø"h¼[j/²ID¨+‡û¡ß‡ïúÓ²&Ú•ÂË †òš4ѧˆ³l);îœâX¥p‹¸åûì[éŽ\fí ¶KÏf} ®úÑBFI}³g•5¸GNÒºÁ þÔ¬’¶&„SšƒŸ­”L;Kûã:ºýê"ÁGBô™°}†©ò4îm?cÇÉ“Ðöp8î£6hèÇgÝò“}NÎÇ.HUÇÙC­uæ þЧ7’#?Ç|ÊQÔ÷…ä•Ï#î§C93xà-DhÇ““ÚÖlÅ#†z6»T|•®TO¢t óák4·X(ZMds( _d'™ê•Þ5fÒ.™'ÓZ؂Ŋ“¨ºäûfköß"Y¿`ÈJGc3œl‘Ý5³Ê™ƒwõ×Ù>˜í؈p«À¢Ô¿ï柭R²Žóª ÉIÜÚì†SÐÒ`ÿ´%î÷dŸs¥ò‹:N{àÚ¨ßô”1^FÎŽ¾—Ý]x3Þ¨à/Æ›±Åé§“Ö*ñ¸HªƒüÒÈ=¾íõLã6ú¨|´;…K"EÄ[SE.ãi`9ÒÞ:Í[;ëfß›TPŽ‘‰ÐÜnG硾x¦ÚRU»¨kõÁêzÈVò¥iåñl´6˜ßÌü'i8¦²¯Ð?a;¸B•“ ¥HsðŒrd÷2×#×K²C³Ä^ŽÍ$çÑy±ç…ó(^L•­Psˆ0¶Ì‹bÎÆòƒOy!oÀ£‘©šì),Ó6õEÚ¥Ÿ§¯{‰^ÔYÌÕ\±‰ƒDɽ¼¹½œUçAîãX ñ^¬µ; S‰Íªa®†4ë½1;4T]ƒ¹âh£fIÁ~´@\‘såq\^ƒ¼h  ‰r¿$ÿ Ÿ7_é¡ !op°Ý…¿—½ÔFä*¯I +¢¬8$+‹â².ÄÂs° ÚM¬~¡µ~þ`D¥åæ°†ðráA<‚¼ ¨ùžÀÉ$™>G»QLu .Ô”+ä|HEÝá…–“ÉïŽ_å x-ó‹™ö5s$ç¬=d´—GX#Q,ô-†ùæq¾†Õ£ø'6 m‘­es>¢,r4¥£Iuç Ëâ-QÛà {²y5œi½ ye2Pò‡«ôr"¥± ô Ž#ŸaTmØ;ÑLôgÄ3ž)çØMXº}Ê|f,Êj¾,bô4Z[UåTüMÉæ´<ǽ‘Þº‡œ{h½‚¦Ê?ð|x,²É®òŸ#ú°Rü‘Øòa¾ŠtÅíá>êAk@URGª„xô‚.Gà=ùCà®.óKÔ”ÕEm6L¬åñü¬hdT”ÝÉof#vF–±Üð¢I™5÷ÌaÖ~ãx1ýÏÓ8]'*µpE4•Wq8‡×²Þ¼ é®c5ž…K…šìð##9ô‘5æ}HI#œ7mí‰r‰ÔF…Ä.8-+ðXü•EeISÔï&ü{a;Þ‡¥ý—p²Û¦—Åñµ¼¾U›ŸTþ°*3ƒç„†\—#j‡Œ%Ñvù^–Rn’,‘7¸:t0}cÆ”´.BGƒUÅY…Þt0í?À*ô݉ø±¬‚‡’³Úw­~‘\Ån¾€lÃëåJoÏ‘T£„o]¤í{«';ª ®)x-}å*B¯+ûHªüÂV›OùBëd8ŸC¿¢<|Š}Ú(n[5ì5"½Ud.­´D¹ÈC ³hqQ›D’|ü²8Ïüæh"oóŽâ¢˜Dsšx!:Íü•;C¿û­ªl 4Å~}©gWDWgг’>@'4Õf¡p–Ì–¿Bû`;¹ˆl¤Å<܈s  âË(’u;dìNYž¥3´Tó;UÏAGÈztZÏí¨î¨î½ívûÞ=“=™è&Ëk´€z øhIV„ÇËŽfNÞÇÚjV¶Ö9Ï8r±ºÚNY.ã  OöŸÏzO†8f‰ÿ©†Þ²¾Ë¾Z.Í•ê+ÇKœÃåGû}{ho°¾‹Ûúee±~DI =ÀVdžF·ÄÊPšò'¹‡¹†9ŠzR6ñy®Eú-F+í<è}k¶ñù‘ž]3Y%÷pí+–„f’(ÊWÁ4öœ1êeé >WÃn\°B¼$©cÏI×Hº/SQ^±O'1pn:¨=ð|1€ï·k‡¡‹þÍ1f Ö&´Öÿ™e'ó4-Yý²\Š'([ñKG>g–#‡»¸ã¡«»ã¾¾A–æ.9È FžplÁ;ù•Çß±Gœ‘uQŒX/‡(™ì¸È0ÖÚàk¼†X"·ØÏ­¦ü½RYuP—ûº÷¸¾ÙýÄÑGi£6Ð'S/ýgC•D©‹Gâ¢l.Âvyþ¯|øÛU:¨•É \¬Eƒa .‹fÈ*pSºe˜ÿ&¾8FÚm!Ñ3>d•ÍóþoþNþÎþá °×¨|B,Ööû €¤î IDAT?¨l_•¿qlfMÅpÄÌ•f†Õ­5—óÁÖ0çØclàKd‘P6«1oméÂGËâBdˆZËakíu]}àX¨'ú<ã7íz|Ë‹Áß|ÌáÛfŠ¿uÖ²´E?jûßùgjx‰½€dW¹«@Ô<ß_7ð\Ö®¯œÇ™°šIM¼“c¹Od‰¢b3OG'äj«4>CÅ[TòóÞx$^ ÓQ´ƒ.ÂåHˆÔEFgJ~%-å(Ù_‘dt®H›GÀÙV¬–WÅ&ð°¢>*kæâóe2Þ=B6©Mg†s[±ÌIVê±ZÐ9NßA«Û+èsäàšôÊ9v vŸ‹Œ>öÞ5|Ūlv0ßò‡Lg»ñfå(¤SC¹Eת¯Ô1Z½„«œ¶EÍ­< „Úˆ|¼*‚2ÑP¬ã ˆÃLÔ-å£ážü‹ ✩Væãò‚¢8´¥Çx]TIÙSœ$Çç׈ó±}Õnôlƒ%Ò²¦#jËÙ–‡EYÅ^ÞEDÉ謶‚yDÑØù]»EWÐÈ‹rã:p‚<”ÃP;t%ðeGs œÜ!ݲ–(+>É¢áÄ0†˜u"#©ó׉ãÒæ'ü^]®å¢Ëc#úFÞÓikéEí¼>L«ƒ/à_Ñ=QíÀ Y²ÐÐaÑŸEØmÊ[²®„ÎùYðEæ“´ll¼=/âûiX½-òöDãxÖ„Àߨ•^ƽ”×®År!Ç¡v#«} ¯ÚMñÊ’ôOD»ñ&ø §¡<úÔÁÍiØ«NÖ‰C«„ŸAE:¯ G\½¼õb–DäóVvmô¾Öà¸&Ú£V!Ë•åºMŽ) /Vˆ,Yž;ø(«ôpT‘ßðZ[t»ØAÑS^“må]¼œ$Ñêm:O1éR¨)-yÄ<Í7Ù÷ŒÞr#+,ÚÙÉÒKë:±›ôexžuÃ*Zk„YY4G ÿpßp›g5Ÿ’ Цà÷²§Þ䕵hTQîÆËP-ÔR–œ¤ó£2¿ÒR¥õQ§:c"_ûò¹9¾ÒÁr3‰g×2‡ŸrLÑ~8šÖnª6ÚIòÓ8í E}R¢?kìVއ®‘KÑ?ÙäºëÐ}Õ}µ#ž9Jjß\™®Dm­ÜÇ’“—ШVGqCCµ,ÂzwX"øgð¯Ð³”üé¾@ c~Ê1ÍûÆÑϳ#jÌaDá5õtÖ¼à°Àv×§¨ Ų̀9 öOå)mmµ—­P<\ÝéÜ5ÉYÏQUëC¢Ð.h+ÞÎÚÿ±Xó«-ùe±$ýN–Ëš˜6$}Ó§X}ˆþ™O_˜±÷ûrqÛÞ¬ú9‘ÃE¡ðѬ¢YCƒUàkæö@ª‚ÃÃíåûŠÝ?ó…qÌÿ6¥™|f•’;ÌÉ–ËñœxÅ­€:×±WËÇÆghíä/ ŠÒB„rÈ*´‘\&z}ÉCYÔ¼à|¨¤ã“Îûê'ÜÙ‹=I^ô»{Q85¼8454K^ç 6ÿ¢¤Óò¨ýOÝJ7¸^¸z‚îLµ¬{‡vMOæWÌïözžK¾ é›…QºÓ8š!îàéøU°^H¿Y1üÞÈDÿH>K÷#öø.ÃWmŠ)þ‡ò8ºTõëÕe7hªÌ3BEÂí¹ +[t¦|7iˆ+@abKŸÔh9qKvEµ‘Ó®.Ÿˆ^vm¼Íþ?Að UÖø=¸ø4lfšlnöæú³­ÍÚÚlm¶m›7lܰqÚ¼ÙnüùÞsÎû?h ÝÒ åÌÁf9ƒ’ƒ\чê–Z…Î#N5úãTr¼ú·á¨ËÔ (,æÉGöÛ`;ñÔêcµT\5kÊŽª.Yƒ_©¤3à.ÁÇä-Égq’n­+ÉŒÈ3Ίæ@u‘Ö¶˜Ï`–ãÛOŠDM ÅÚ„ÂêtzßðߪìÐw3Nœä±<+kC¡ y""d_¼!VóßÂüÅUi«œs›Øh~3›`OšU'”‡q4$Cå_êµ­Û©²WXfä çGÒ>§=Hî›Þýý/0uc£ì¬‹ñô8?ú‹7Ð’/Púò P.‘q…Á—Ø$pÒ_ÐŽ–T]ßtמˆjú𬻵Šl©6Ä9VaKÕ\$‰³¸DÚèÐT;l ¿Ê1X/J§êf³F…®§­ |Êü˜zÌW6c=-"º9ó˜ÑtŸÙ(‚°~Ú3Æö«_ÅZñŸœ§ó*ð7Çsªº í‰.æA3¨.ý &ô yÉ}¬ƒý`³J¦Û©†ûé6ö‰ Vƒp*Í!zË|ða+•NA/µÛ@_ p²,GÆ`.;‡Ò’¯Ðfˆj¤ ØZõ—&-eo·&Ë_H \¢r«ÁhÂú•}ÖK±_Ì·Q÷ø;c‡ÅsPgYW"i)w‡¦DOugÿbmO/ç˜ÈWen_žïq!™+~•ñ˜Æïãw¨J²’jPOnEºá8 GÙS¸ÉïóƒZ#¬³s$/ànìÇÇúMýÿJzQ‰—¡(}ÁªÓT–[Ë#Öª#r9Kªé[ŒŸÝ'¢ªÄºÄ$§Ñ\¼†–Uæñ÷M¡}I©ËÔXuÆ^%”FïB,Îä5eOqŒ~€U¢¿jD¶ÇãÖ¹OÕì _ô×°®ÛgÕÕzóMÚ­©YÅ zžŸ¥ ­Lè¥^cM¨[ÕZò…Þ#ûᓪ‹Í`ž¨Žè%'r/©ý£fê½Íï¶Û\ታWú'‡^øgøŽ?hºÃâSÌkÆÞܱÛ9ÙùwdcõùÛ d3Ù«=ŠrŒâµÙ®‹î#ᕤ»–ňN௠§“yÖGVÎ󗹂”r÷”±‡¢Üæ7mr0[¨Sr îÂt?Ô"9XY6‹}"aÞ<²Ôö,Œ÷<;™½uü”Ôïtu˜wÖ[)–Þù›ûõ@ë´¾€=Á¾Ž'%x þÈQØS?::nZâåÄNÕ¿O9 µNžq²©¬®f]æ÷ÓZ0iº1ži±;íLYÏÞÊÎí/)ò[¯‚Õp?¹ÂÞlÎa«ºŒÆÞü=óÈ FoÇ~Jér2ÿ3˜Ãªf/#Ãíô¯o+53N„z«—9εPõW?HRPÿ×µÖì'ZÐþpÆAôéšîI8åÙáX¡÷Ð6»b­TrX{DoM’Ä®¨Ï€ÂäßÃ2 LÆðxuž7Ór-Ü¢vgë—R%óAø/u-Ø+AN©>¾¦¼‡¶/ÔU~eÈ?fŸ}ñl®>úBùwpsréO¿|"É©¾–d‰1WëèXAÏÒÖJK¤ïÕ+ZÍYC{ñg\GÚ&xþËówíZfi•µ1ìü.+Ñtô‘ê„Óú=ùNÕfAqï“®PTcË Š"Ï0A –“¦’×ì˜OŽÑ‰ä6™£MbXç0ð-â!lÀNÁoâP¸µÅÖí®ãa+KF‘²äéÛ $¸ðɆ§0’ŒËÓÂZ:…”4ºš™¹õ™ö“BPíÄ]µ nª10V-ˆ¥RíM²µš¯šÃU:J«Gã2=S$¿Ç$ y×Tɰ‚ö§My;H&ÙùJ{–òèD3[òW䪊Wð­V€”S³éOdËåB¹É¿²šÖ žÑ-P@*ÕV5¢IÒy°šõGFÀor–JUº½E´ Äûx£2¥-û¶þ}³Ð—Ì;¾úæWºÜ£çtøÉ}òlUã±\Èê‘›ôgúDÿÕxè9fÜÅô³øCýg,cÏ]Sœ%ó=eØAÇDó‘#FÞ†j˜ÂÀz¥&âXX‹.¡Áï4À»ã4Z –Ê©î‹t ­ƒ¾¡žþI©÷gM­¯ê üg~6ƒî4Ï`³««®£¯ÖÚ¨]PåÉgõXu%óÕjØíuä|²¯(]QJÂ,uIJ¯¬&iuØtÈêðP-ƒ- ¶âf(¢î‘ޤœ«’àÀj9‡ÓÄ:uNmÇc¸ÆÑ’ª4„VªÝ_2u‰`åPG;Ƹ˼áF:ö¤y± ~™§Ã9nPA²A/\ÌâÁ½á4© Ý0‚ïg‰ê¼Ñ÷0§é}ôuÎQú!Ú”€˜%|VfiZ]VR;ƒ #Í¢ZÀ~ØFžðjÔÇÉŸW)â€Xy_½JTŸEÝp¼Ãzâ,«CÞa:Ö©ól ía•£Õºïlîwˆ_ŒÆÚSRQm4ò™%­É–3$éÒ@ÖÒÊ™Ñt>bÓùH^OKׇñÍú|£„ÞÕQ†ý¡××Þ‘ÚÍòбv=« ^R™xPQì,g2ª¬ïËé{—îJ{û-îG·Ì–™{2¶Òlr£8ÈfêÚ vu£­ã3ßÈFA†åPå%±X ï§'DPV"¯ñÎ&'á%¹ÉFÃŒ'ÎG2>²%±ð-”m³Ìñw,wÿªUW›´›ôG î0OhÝŒaŽ1ÆäÈ+9ÚB u E2a<ŒÅ+’ST%u!8Ê^¥v°1¼§æŸÔ õí¤>'̆įÎÓñpP"Ë4S¯ U9ÐvGüÒÀ«ò<ŒÔÂz3Ç£§«k|–W$›?ó“<ÓžŸ<áÐ[ßìLAkÐò&6Ä€"b¿ˆÂ4µVVà×È*ZP#X‚±–è+ˆÂa‘Ûä`9DuÅp‚wÖ•9[sñ:<‘`+èdºžŒSúáÜÃð0ä!}¡+™I/ðÞ0‚µÀßU)ͧ±N»·9?zYž&æ-~WM%—?oI…õé‹N \Hïj9h[2XëëòêÇͬ>^—Ó•ý|ØYFva#Hwø…WwT1³xª€b7Œ¾f—ˆÇ:m¢jÇ?O1÷jGáɦæƒC¹Ù¢°x Ûô©Ì€Qì3¥Pƒ õé.HÂO8%Ú5B÷|¿ëýšEO|í¥ºbÇ M‘zõÛ©”g©®ô\ËÙ¯¬8 tpnpf%@iõ'/äqwÏJÂUí-¸…%_ÅEzµ»ïÇ|-ì.±4ëû ]Ä0ÐÛW6؇[ô({že}™?”6=mÇ‹5Zi½ebm>ËÌeT¦1ÝlîZ1Û©Ü ãÞ°›ªòxî9×Àï±äq©Eéà·à»X-:9äìè™@ЍŠô°±ÝÝÒ±ÑòÔ‹þ“¦~Æ%¶®Í€jVoõÚw…ÁЇ]W?V¬žôœŠô†š7®<^ÔÆ8ç;·duyç>O:yuû7ÿÅwS`‡º‘ï¹ h’s#Óu$aCD#Ýñc—½/Ó4W§Ÿ¶®ó‹Ž+ ~ç[c”ÞÐuÅó”Ÿ üP'#÷øˆêÚëØËsõžze} «žN7q§¸aô„“¤«c¬Z£Æ²X8"2To±Ó®‰° {ŠÿÀOú[-ä=yZm·ÿ%´“¼·þÜéŠ(SÌÙÎ èè²Î²°&¦YÏÂQ¹*“œÖQ¬†'ÃIª‡˜…XKºŒ!| ÃÙxùT†üê«b´æ#kÈŸjä„«Ê…Àeƶ™NÂ±ì ¤6ËË œÂ+ÄÅnAq6‹ã8ù» ÛZgwÄEá)²–µ•Ç#²‹Ö‚náÅÉPRjÉl8'|ÝYã¼qÁæ©÷ƒÙ´.z!ÏScžv4&UU+Ù_õ&U±®³1¤>)Â[óžl Ý®1=Ãõ’g²âLWxÔbÛ±1|bYá4YDnˇ˜\¨j`Ñܺ/&‰Šá²¡»áf_|…7ʶ ¯”;ðýŽí?düaŽ7†ó8Þ—®‚ŸÅx»=l”“”N~`MÒ «æø |&¹i‚^CÛÈéÉÚ ö·s¸v‚¶¡…!`+OYs´ô9¶±ùˆÝtß"ºn‰/Ö㎱‹¹ùqâUkÔ%µO-%3Ù.Ì`N™ ²Ãp•ÖRà ÖQûe8B^„¦l£ýR>SóínÖ@6‰udò¬lý&Óiƒy¡î%P•<£Óp¼F½Hÿ §òÍ.˪ã>ÏgëækæU×¹ÛYÆÜ£—fI™×>öýr0Ï{!“Á?ÀšBttÉ;‘?ZûÓ2jµ YœÔXÆÆ9=‚••ÕäT¹!Ð^€;3®¾“Óµ5ü…ofxµï›¯Kú\KÚ}b·ENvüϬÕ€o§YhqøÛãqè~oýd×—]ìÿ…~s44ª¸Òb‹ý?! 3ŽÈniúŲ©¨)«Ð¦ä ›ªÕÁ\:³YW­.™Ï-Òf·Äëðoü+¬»´ªä½x…g,¯¯2î“e¼ßÃg7]”/TãÕEí1Ù÷£×D$E r•ôü“³Ò§ÙÎ3Î^)ôË—7^ñ‹Ý*ØFêf'©ä¸¿;gFÅéÉdœN†»'q—q›åMío½†‘~Gy¬æ>­˜"êÛ3¬üúȨDê¨Ñ áÇr9è:©WaoDUyÆš!vÝ36³{wó) cšðµ‡yÔ£ybÈ5c™£l„ßÙB¨_Ë^3qL Aàoöï`ç¨Vþ`JCû±Þ[ꈧśÄÏÑ#—`+ð鋘Ë,ÝÇü …Õ|7ÏšïN»®áf|¼™]ÄØ7ÜÙºC ¤?¹Á–À4èLÇ©‘O·~  ×´ãT#X…75So¿s©ÝcÙiú{aè…ÓÔ`¨µ°nç+eõV;§žŠb´.µY ΗØY6dÕKÂÁì ,ƒ¯°C! 0IÝç’LÃ*ì< €_Äl•SÎw¬@ i¸Iàu¦‘´W‡~x—ˆçjƒÔU9JçáhR2IWúHí£Ùé?ö ’ÎZ7ð(´²c¤Êjï`›a‘šJߪFØ´¶ç[•ð‰ØHa¦…j»†8>°{QižáŽpT.O ³xÌ÷WdÌQW5ãV”ÏY„>pþë¸NZkÚ5Ú¿cïXÖÖ§”æ"ÛIEVƒÍ€Áæ]³{î±]ëíhíÊÍCZk=E?fœs¬J׊™y#9IãweȺøHæó—cyÈæ`'sŸö»¼ášiÔ!ÅW#PÄÑ—YödÇ7­ª<­oeÑã0•\¡Ë±?!Ûà#݆ÝЂEòþ^å?‘,™ÿ¦ßt02Ý¿Û#VFŸvOwgF töÕÿà1d5¦ÛéÁÛê´î³ÕÕ6Üâˆ_Œ£QÔ#ÿ¢}i R ·`-âQ*d¬²Èeµ©sê¼VwU*–ƒœª¶‚¶_<À ÞÚá[öcÿ¡Ð&qVŒ–~Z&ãHø?¬÷Ý“YÃÖ—¨éߨšÀ’Ë<äD׉øšQã#_Føô8Ö‹6‚FVKè_±Œ„¹Ä}ˆŽaÕà•¾Eë¯r:ón°ÉY›#Í'$(Æéõ˜ŸØLV.J¡æWwUiÌ%*c 5Pþ ùÕ,Õa)žV¿ÂSñ¿Ábë«HÅ*ª”ªù¨–’klyyè3rò@Gõ†¼•ÝÄ>ñH•µ7/¬ Ö“FŠÿx?ÚXîÒÞs¯hWÈ/¬‰q™–æy˜L¡/Ù"6š/ÖëëÙŒVZ_}9€Oqgsççç GY: >ÂÛ)²Š öj|Ä—;–{î:/ÆüU0fžfêµ·ð¸M›>$¨7%ùIcö fA ~™ü¥YýŠ^«µ1œÎ°×›¯´¼8Äñ›£=jXú0rÞ¨¤uf7Í3z ‚ü%$O]½ MÕÛ1b}sxyþ`"ß*zï°}Ø7\€Ô’[eIVšë¥’»bëDŠÏ’í¶ù$¢t–éÎBîçy”6Îø©@ãï5¼S墌 ý88öÓó”´äY_.¥ôôvIè¿*ªÚ×°=g-ßþ'†Òx¬e¤¨ÁPêH»«o¿”ÿBZïò ?3·FïÈýP‹œÁŽj­zYÅáTMñ3©¨úËY˜3Tþàr«¸¯ª• o/Y­äæpGÙEݱ”}U §ÎQ‡ø$;c¾å£%µÜì>iO:C 2VV}‰_ÝÄW(ó¨•Ò$eIOçÂÒ˜¢»ì/η¦Ó:•ÓŒ/ïjÝÙíÊïÚo HQ×WÓ¾öuùçØ]Þ5y;â}õ÷+Þ¯Oûñþܧj£¿7öž`S{§ÁÆ”QÞëB߇}›Ÿv åKZ®ð¤ô\å8<¹}JDƃԒŸÎ}•y*µó—^¢^xA¸4Û@>Ð…äŠZ£ämñçóƒ¢c¨qh¸µÝè›Ä"ã˜y‡~¤¥¡v«ý­qlò|g=<Å=Ù‚HäµBb°‚-à! ò\úuý/ÞC›Ã'zs³R´ü¤NWý|~ÜK–ÞâÉ#>>ñA,Ì˳+`ºÆ(§÷¡®l›âz'<Œš;9®”>€×#g=ÜKâþã%ôŽz*¯ýÖŽ÷ÉŒ²É}‚ƒµÓ’ù­•jDÙå>~Tû†AULöö£N¨ÓÛãý¯^} `FËOƒ­ôÀOéåÄíÀÁŒÖýÒ^úç|Ï’ÚÁJHÎ’þS°ª÷ˆÿ˜ÝÕ[Å¿X÷'óÌÁ«¿ö ìL · OuÙÂO¾<>è¹ëYëÌWѨ¹Ô=Lgð*\VPÕBgwieQ&'‰v9vÆŸwlò?‹ëÌÅ&§ $ÚEžâ¿ã?Î$Ý9FG”ÖD¶°7²6ÁF_jäVEd@=Å‚'‰Ž¡sX[ú«¹*:Vyê»wš§œgµù|/¾ ‰´³já*cHUÿÿ©¡™oCí8žL;óq°pF;o AÕMõŠX%Ý_£{Fv ×Üì'v”¬^ºQU—óYa5 Êc^™UܱÁ[0uO]ò-å{—ÌÛÉ3™—Íú¼¹çç¹Úlªi¼;éCáéGž©òô5=.“`l«á5†Èv¨…é¬ôÁçì,¾Ãd¦b¼µËzmƒM¬%[àX›%ÙSÞ“a;¿›hFh^:ÚÙC¿HÿòuxžÇr¹@бì¤>A{Ðìô= §ØxH'½Õ²™¦ªÍPœœ´.½ªö’ì,V=½¬×ìö O5*8G ¥XŒvI³ßß‹Qv´˜ŽÉ¸ß²úÆ6g”c¸s™»WLV÷9Gª3F? ïèJ˜*Z£R¿©ü¡úÐBä2'X9þD dMxPþÀ5XÇÖí©x\–°œ¬¨#VÈVNq×Υǻ‡Ä¼r6‹®” Óì¢ea·pWè„å‚+õm|"-­ýJ›Ó¢ì9™Ì2 T௰ ¾Àîp€øp >‡x5P6À0æÀ½@w$ªi§Ñ‰/x½Ðøà3ü_æè@»µïóˆ2ä6}Ÿò¯ï¾ïi@¤gõM·»„·Ê}z6ó¸¹1†xÂæ ç$Cð÷@U«!9«êŠÞ”CVr—æ€-P™Ö£»éVX{ÁFùùuíc2aP*gŽ * cõ£hŒì„õvYµÎÊux[gñžªÄ³á1µN&ÙÑ-óÏPaï ÿÝÀBÿ~c=ÍM—höQ{ÃÚÐGüN‡€üÇÊ' âryŸi^’•þÍ÷‰–rƒè`LêhÏ IDATÑv_èN®à<ãŽöUËÎ:Ð¥Œ@cXÄ÷ó¶ú>ç>÷Œ¨é1Gcú'lJ\JG;îºfzv'’¯ÁgtŠ\nŇ¼þí¾Dß¹ŒL_]q ¾<_²þî,ìñ»ËÊá._#¶ÒEä’çCDª™+b‘g°» GÚ²ì¤|ÇAPGåxô=F9¸ÈG˜³5‹]çYcø>±gÐ/“ñü½¯Êò‚¤€©õü]ÔHï±@.¹3>$ßã#•—ÑzñÅì®ûO÷9­¿çŽ3‰Õ1ßð±ÊÉ<¸ZàS˜ ›¡ù‚5Õ{åÇÁª¬:G¨JMAS8K^¶Æ†ËÀ`rY05´@4´Ú_ü½s¼Óä«ÌŸ3EæÌo1ß_½h¿ þ°fú—НälxúK¯nÇÙ]­NX]„3ãdæA9ÏzÄ6™×ùl“‘¡Ö™eÒ–’xR\½czÃ¥èìŽkÎQŽfG½*ûA®Ò0a)j‘pl œµÊêíÝk„rY8 ãøŸ.nk¸:E²¹&GÕótsÜŠL¤ï´+Ø=|ÂØîiêÑâ«ÇÊVËõŽíÉ"ùI uJý mUEø3ñøñ.ù¡?w ÚÛTGènµAVr¬umŒÐÉ{|œš2æËÊ7ûƒ5}}Ó—À‘ ¦ƒ)¶†*â.Ë&ËÕj†ÌÍ~‚wð5<Ðþ'£V8»ü]\³òV}ûMŽåN®™|çsøÓü´·¾ß1û-¥ã÷™ÜÏšZaµ«³¡rÜ’>'Åý¡Šºèí–vÉ» }ßû$Á,äö»]î‘‹˜àø$ãÿdtÑ$ùªúèåXn8ªýõdOµÅt@n¨Åø Gà?„Cyr†aéÜ­§º²X˜£Yë÷ {Ti$¿ˆBó†ÿʬ\äã)¿²±˜ƒ÷÷4ö<~ëÑ] ÍL>‘îÂZꕽì—Ûq'©¥6aتlP{Ãçý“íj–\å/.<`ÖÏ›LTsÝã"œÎ¥‘ù\õœšÞ€÷cŸI-ÌJ—ÂEHwyF­ÅÚö»Ž5Ø{73.Óký8òeT(9XUl7‹GЬù<¢óš6ÊÒ|˜ÊBAÕ ©¦Ø““ïT[Z˜‹—€.0–µ ®³ƒRÇâÐÖýÉ2—Ç9<®ªŽ?\Ã"[ºFcFuz‘Nį²ïŒ.™ÀZ‘þ¸’£khuržncñ0”`ARl%q$¸ b6&SU%H‡l<O/à :E; 2íG¢øe²½^§Æ*w4[Ë¥–"ŸÚiÁh«f8ÃrÊþò)ùöózæ[³ª»ª«Rô]÷ó’~žÏ§!¤:Ê{j¥:+fȲb…:KTu ŠªÆaœÃûršwÈB4©O­#Ø ™î®ê3Á·áD¦±uÆËˆ=å¢>Äl4”ž‡¥³Í¸WŒäkÀÍÙJrŽTÖÒkü*O¢ <Îa1–Œ`¥Æâ™¢NcOÑOµV»HCMZ:*°ÁÜ£}‚$ƒ³ìž@ƒ§Ã Þ)rOÍh"¦»½bzà5=8M&Ÿ3¤Ãùfg’s”§³3»ç£1 Êê+©M‚r³ ‰þ8VB™«X²¦Ñ=¤é ‡µ4– Çjmut§Y.š¨t•S±I>RÝíâgäJ@s.±4m¢Ï“WñW˜'çãd5˜8dUHã/T%L 7_ &¤võ­Mc¿ ŠÌúS}§£¤^WÛnd³E'¼®Z«þpJkCþÇz>ã\zÜð¤‡ý“ýE|?|h~^oâè®ý¡á&ÏÍŽCªü;QÊu£ˆósLœ¢òÆWKl¢—wœ ø ­®U*´‡¸žzϤYÉìl‰Þ—6£»é3׿¨È,Sô•îÎæa¶•—–…c"Üõ4£<ÿDƱFWç.>žÏ6þa·h~hA.ÃŽ`_2Ÿg—{á]É+`Y¨I‹`<ÎeÕGù"éÇæ3ú±X2ˆîÓ¾‹'êz¢¾ªöò'9D§‰®üoW§èâŽú1CcwÒ‚´øSÕWïC›#Oà>>?r£Ñ,âóTŽý•õfTÛÿ<Ý||@†3uZ¸–µKN¡>×m¡K7®9œZ~ÚMOÒnkùé5Ýaž#ÏHYö”L–ÅP'%HW˜@-bÒ?@‘}¼9iŽ×¡:ïÂ[jOµ‘¤"t„dÌ!þT>ùÌ®+&߇¦…Jx+ï餅 û61D}yõ§{Ù]~[¯dVS«Ì§Æ&®?øZ]ý8‰¡¥ø(Ò ~'•i¥‘ä„Ú§®É>ª‡x#7'ØÏàõª`{õ¶Ë+ê-ý>ˆ£NZÛ‘ß³œ”×½ŽVòí¬C  Ř3”®N’iê:Ü“Å{«*LxŠBÏäNy’„Å-’ÿ! âZØ ïhM6“f‰ØYKÏŸ=zwt­§Á‹ÐÐŽTD—i²Åšoµ¹ìþ8Qbdð|È‹uR¶¤UÏxŽÕØ)-Gìω-rÎñ(&ÑK¡·¡-vGÿ8ï’´ÒiIi}£~|JŸ¢fû›† Ûáiõ2ÐU”Sí…á~Øî]ŸÒ&Ííoœ91¥«:7±¨¾ÂÝÍhãèåü9ª"ÿ¡ÓÛª‚²©jšö5«'vÆ?Â)jþ§ÜŠaÖ0²Þª2ØžÞbsÜ#óG<~G%÷*þ…üÄöÂEµª¨ÂøJJ.rb» øŽ ¤ßfv²vû·d>„-;ûÃ#³lpz‚ÎÎZ>ºP]Áª-܉¢ |ß•F»È·Ð‹V©8šm‘£á:IgU¤\¬îalƒÍY'VÞqß,bä‹ 9®²ff'-M˜›~‡$JõV¹aÞÁŸhmv˜d’lì»[ „v„d’H¶˜nd§èHÅùxL5Umäxò€ä Óù[ÞZïFoÒ{Ú³p]ûb0A¶±b2‡ó.ó'2‚5æÓÔRùÉ î‹t™$bUk£žÁ@kÇÏ9¢µ:z'c$k«m£ëH!x‹ª…*Ÿ=Ò^¨®Ëš2VFÜ% `†*­6a.èο©ÞÓ§pFÎÆÂGNŠ ØJû™µÓ/¹V8'›ÜµY74‹¥“•þ U+V¶€8¾–ç£%ùÖƒ>Õ»ÿp§x AX%à09‹c]œG’ ﲑ†z í¡VWŠQt< RdÖT%Úeè½£|Ù=í8²Ñä²é&ÿUq“glDSOþøü‘}Ù.2•õ‡v¤ F©Nø?œ¨N¨œdÉÃB¤,yD®ÒwÐa=iÚ™%ѽ¿Ê¥ ¼§*©žª¾$O[EÅ5—|ÇŽäŒù¼3Ÿ Î©ŽðUpyý²•ج€u&ɸÔê%öû²†HFJFÂMÇ_æ3ÇJ=‚uá°?LÁERá\šü$‹šf†"O’†pJížyÏ_0° ø³÷›^Õ,`vŠ\âJs¾×iµµ»ê©´Äzù«˜#Þ†/Ê!dæQÅ#|‹ûžã}‹ŸÓ–~{ô}°]7óBæcî¤5Õ#Ý£·Ò"LÏ*sWôúÈ€ñz)–ƒZ¢m0—É6œ†wØG }£³¬ö'¯ÍfÁ2¸eƒßH, ˱jÿ Æÿô]r½zé2$RðÉ×ÈŸx]UaUáÑráÕÖ 9’n§cHö”¼§£¡ʆöJkç6\‡\“ñL ¤ wxQ°=o} Oç÷µnY+ê½™l¬#ž‡R_§½|œTÍÿÃÀ·P]„?°eäKÇ\šèâ8ãøèêílâ^l v|×/³íÔ+Ah ³‘ÿ‘¦5é|z€¬Ç£ê+“è’]û[_Ã_²fü“êª~—Ÿ±2®åDqÑÓúÃndí ç ¿íà‰(&^ây«ÑvÍåÓó½UôãÆSv“1}$MÒ[ééC†úbö3F° t¬lQx^v’/å3ò€ü ³q4”EMrõBu · ×öµÏÌè$ë³ñŽ7.•{8¦~üü¬¯³gÆT޾šÐÈläÈ)¯…1T'mdZ…´¾CÖ-¹žÕT[°•(ÎæhfðaÎFfiM&‹™¡Zf{ÿì>ñíÀ×j;UµÀ^E nÃæðOO¤ ÄÑæäo^øÈ&8¬FàbõœÆÁ'ušTšâ2¹N¡FïÑfì WoE~eóø¾ùòõL_Œu‚óBoxiúƵP> &ÛÛÂ+«CÍçzEøE¹eY]†ì˜K}“¯Twj—W´7Tòò®¼¾¾Ú:FòÐQåÕ#­†ÉîØ•þjÆñl…ŠÿÒy<ŸÈ:jéY¡õ‹ì´ƒÇÍŽ]Îññî¬ý±¢‡Ü꼡œ´‰üo2#üB}„j—‡…2J¾%'å/d)ÞÀ³¤ÌÆcÉx ‰CêZGDû¨€ûá9ŸÃ¯éAÇX–Fw÷´·êozн„ÿh'¢Ótu˜xÉuö’ëøŠ”¥è%Ò!y$‡Cb4œ§wÕ_háGüH¢É:ŽçfÛ4¬×˜%ŒS¬d7ÿpLôœ³œác™kä\õKx®z`õ€î´,ï¨u®‰öd§ÑP>»à7ï^oÅðÆŒýÞ1é/¹0g;»ÅÒY ç ~~W„¡å!^•†O¤µì-IÈ#¯¨ ¡Q{´¹t7 íV|>†Õ ^—÷°2 ?ÙÂùmݪf:Tºm¡øT,*›ð-j˜LÆgr±ªT*¾%=éMUX­ÁQªýZÂ}JÈ+zžî Ù˜¤eÙ6âÇ{ЫB2Q} Hšƒ.eÀRÒ)0>£j­·KŠ~àÞÄ©ÓA« ?àBkëp™6¹iâk#~²gÊi8þ…]¤´)°–«Y0¯ª³ê äTËíQvQONTÛiCÒ”bS° ¬'W¡"–¦'HÒ…ÜÇsd¤ «–tÀZX{ Gª8†àátÕHý#WÒuì*à²]X$¹G…ãš~Õñ âuï@{@xIÃø$/ÙëÔh»‹ì¥ªci=h¿ÁiÎÛ„ŸÔ+è³ÀͶsø¢5›¥[” òg͘ž!¿< wKïúíÉÇñ¥õ ö®Îˆ¡aÖªÐZšW6‡ðY<+Ôs", »ÙYu,¸™ŽƒŽ|YΑ­Y¡Ð[£©qӻػ<4Ùþ¦ÎØÅÂïí²Á¿ÙLÚm2«Ê³`2‰†IK{=M’ÔR9XV´Ÿ©™öUUÆà?ä;¾®Ö© þÖ#5Š„H;{Aô)rƒ4¦­ødH"c°´l~”ù,3;Ö¶WÛuX}©Š°ÎÚÏl‘Ö]t–ç'§weÆÇÏë}C¼¯Ó^ykjû´Ñ®î é9n$Zb£<‹Ç£/E¾sþë®Âãì­Ú í79›[Ú¬E>â{ìgÔ*ÕŠ$7YFñ3$]@—2¿Ê…ñ€F™ÅªÐѼ)w°Y 9Õ;²ž`wq†ÞÙ8§ÿaÆH—ì<+¶É&á—ä¹Â‹˜ß‰á|§× cÝeÍvì¬'ס3YÀÖ‘Ñô6»ƒ«hk2‡©§ò8Y ÈKš~£e¡ Åí2»ÈcwöG§ùÚdNöc¨Ô¶)}'#_—ÈC‘Iî/yÆR2OBH ³YÇäŸ7=¾M*b]̪²@5^ƒëü"9¯42rÛ6È,¥Wìsžrž†ž£zz¬‹”䓌õò#ßÏcå<«ÅƒNªò¼¬luÄtÙ‡pÐõj¾—…Ôh¸fňIÐ=üG°Hp8ž—/„O•¿‘;lWæÒ/‹ŒïÎæPó¹YÊûÙÞÚo*úDu“£Y_ZI_ ·èiä/ûlø,RŠÕ"yÈx=L‘»ä$âÅ(âS|ÕèzRM/®¨t¨{iOÖ⬪ޗÇ_~-üagøk¸èzÎȃÆúˆD»YôÔ,y;Çýï+ÃÏñOÿ¿×ê by1Gýn¾2—‹lx“\RciUwãàZ{"ìòu‚lZ%ÈT¯LbëXmšÈ¯’pA½d%’bÔÀoÄ 9i.Üh¼”_éo8Iö¢[ŒuÖqބʆ§øÚµäX÷V=ÞœÄVEËB3BeýÙ£ì“òpÄbê%ïÁ$ã!?Ϫ1$§Ú«ë¤©ÚŒYT]ÙU¶$CIR•ž€Þ\ô—Ào­°d’ý?9H¯™Tá)lBƨ‡ÖTÙ xÄ·#aØŽ†d*ÉÂæAHöâ:«ƒÀ$NZ‘kô¡ª¡2Ypkkø‘8šNR0›í¹TklÿÂJÌBÏ‘½è†ä#¹¡—<£”"àY9FŸ¦?5™#nEïѶÊîöuõu$+Ù ‹Eyñ]–Æn¡:ökrÄÎ&ïSªBpRD’®”ˆzˆ£êOCd Û(J«ƒÊ§vãVèÌWÒ#E‹âéä$?Åötj[ËU}¼$®„ÁPx®l#DZª°Mk§'’$rˆ/ ¸6ÈxQ TWè‰Õp‰$µ°‚u0ävèÁ jçÈt³©c}ôõ€þÇî¨ú‹×á–¤ ëIµé/“šÏ—&·â\{”=Â~ÏþaŸÌDþÄi}h˜dÐíô:û䟴hÖž¾&_ðÙ­VûúX~ûŒìï/*ª÷Úo|)ó°kn®%!¶‰ùñ;f§²I¸ ³*ŸåcßìÓrœg†Þ ¹¹šÏ3 @ á÷” Ÿ ——¶•¿:¯´2ü›ùVe§µßá+N ‰éò«½ØXÓ¬³ò–=MÆÿÑ€¾ÔmW’éêp[»…uÏ}Ädâ(½ÅÆF×é¹ø±™[$wáÿTÐz¤:„·ÈM²»}Ä.”>"¸#x7XÉ}/ ËàùÝSÏÿö£­BJËÅžéÑ#²þòë,«#AmOkï^ãzjÖ£åxEt¶×âFÌ*Q½T÷a(¶dMôë¼½¹Î¹Ÿ%lO°nzœß)Šú·ëOõ4ƒ·6/jëI:˜]þký«e7v8¶»¢jkßÉÉÐ* ôUõ7¥EÉFœm¼Óþ¥ù<¥<8”`MÃ)ŒjÀI^³åä ‚œArAcZ‚6‚üP˜þŒƒéFÕŒ4¶ô¥:G+Ó8 ¬¤ù‚5¿ä/)M¿/JHN|÷>^sŸ‹l¼ŒµÎÄ®‰LÊ¿ÞÑßñÕ\BjªÌ,Hœòž^ÓÜè@VfC«YxV3+ÓpeßS´j®¶Ú47š(¶„«¤9è2åäµÈRÜ1d«ú]ĉ=!§œb­†Cúq¸*:ëiò 4ãÿ©b4Ê\Iþä¹DzQkC7À\™¦"íµ>#}šØË#b» µUY˜mHi¶ÛªXîÿ,¢]+])À¡7o÷†Y°^_$§‰?TQ1JîVíõ7ZEBiS²‘ü&½¤°TfÛà>¹>kLfbxVà'C9Ê:t+3z!ï`ê“GŽ®ß"†E†vË÷Q19 ¥Oò×"1á+æûSº§Âlrû©½öN< µìDQÚöÉ$8E]†ßQ”  Ÿ—ìä?9[ÍÝí4¾–ÀTø,/ó¾Pòë=h:¹é¨G:ãNkƒ%Ö‘bkJÉô„PÝÈ"4-ô"„Þî®úîü×±,©Ã6mqÜ®¾=µÝ—½ö܈j®¦±ƒH}5QOqÏñ| gá¢fÒXLsH+ [’ PÒî*ÃÀ¡#-­\Z[ggGšºçšKû?‡nC„ò‡âÄ­ðOâ®u]€laîã{‰Ÿ¡wÔk¾“º =VÆ“ì©:ö[ÃÞ¢~Þ"ƒöY¹ŒvÓNš/œÙh}¤þ†®×]­6ñ.dõlæ÷Èϱ£Õho¶´ZÁ†!ññ¹OÊ‹ìxyš¯c}ú«Ú¬6Ù½ ›ªK+åè~Zä³ÈñW“¢Ú@z`¼NákÒ ’}¤-žÀ=&¨Å@ÏÁ+z‹L¦Y&Œ…Yp’s»²Ð5ŽÛ­óá:áöÖ«±wˆpÚ'`¢ldÇFt‘QŽ¢Ž ì„Ö;È窘:†¯Dš‚Gó²+ð„f!ëH;þC-¦ch¶Ä˜hp§Kßnd‹¹g† é 3Ýjw4<úpíš¼¤þ‡Êî<O ‰¼düëºê)Ás;÷8^Ò5|(u*,wÓ긨Íãi1™O¬Æ¡°Heªùø@Ô–å~>†¼¦Y¸Õµ{Б}¢_´£”’½´½%HgüGeÚ‚YýÞÒÓÊN†bYcÿ‡¶rý©z`u@´¥¯Â…hkÜ ]á¸ékLÂâÂæBŒdMX[ò‚v';i|€‚P–ì&&C$ ÿ’ñt1aÔrD²î~ð‡YŸZpk„7‰ÖZ‘lÝÆ8G:²Ð1ØœüDߊÝÊí¬ˆ“Q¼;ÍÏ ²4¶ž¥yisø™LS{a=R—“Ò´9&@A’JÖÂz$`9Cr€ _¡Þ`à‚úãx]úRU&—i:žÅ=¼¹¤.Š”‚cQ,úCY,ÎÁÊøŽ<Þ³ÖòOùZj苜 ‹ÂÅH• n›ÁòqÐg)ÇcBÑf%Üji/·6[µ¬6f¢v‡ÔÕÚ(-´ùðxD:ˆ§0ó&}ËrØrÞ—&k”­ê=Ç£ÄgCÐ…¡Ãø:Àõù,˜549HwKÝïø¬ið1?%[²QæZY&‹Ž°þW(gϬçYýå»\æ`ßHþ.0ïP›émŒžêßz'c–ú\»ãBF«'H¬ò 7aiùTÔeáö1´ Å€š¢'¼GÆÈd—’¨G‡T+”c, ªÞÌ÷Ì_ìqpàJÖÕ”}è(Üîjèt…;ò…ôºü cwdOäñpG)WEå{èüw5óqØÆRíETŹùnWTVtÅ;H~ ÄTINåÿ‰eà+¸ÇnÒáòOX=EådôÖ†³Pi4_®»P5ÅÔ±^ì ¶CD|tÞ¸toYfëùèÏÖ £â2/A~À¥ÒËðO²±˜Á“Aa)åsV•ôÆñPªÝ´»j]¥„=]Ü3oÑ·ìoÔ u¥QºŒ^*³ÕštµøÁ6Še¢j)7‹hˆ”Jnå°ÕœôT#wÑ#Ÿj P5G–’åe˜œ%k9Ǻý»2Bá-¿÷×Oev(Ì›‰¿A‹ïæ;íJfäj½£ &‡IQñP^3d)qJ ñ>‚u¥[Ûäj¦„Õ>J–ü…òʬ³Õ‘ïÉön¥–¨ÔŸè!W£Mü4n s¬&x ®Á™ŒóË%r*/ —Á›àÞ¬%]ÔôàPç&%Ç1;äÅmÜPÅ–@/)Í‚ÛäzîŒíXv—2-cÒ·<æ¨Ìú)3„›ÛÞ5Êg4A+l× hŠjÿíëë0Ñ]Íc´Õ+’»ÊXœÃ+*sˆKFN³=2`›l/>‹ÊÀ5ø¢*ò©¼(³íª¶*£…ä›Èk÷³Ï‰óPòVp‰ÝW,"/YAº“¥ùrùËNÞBþñþg²;™sì)αxB„Sû®¬S"áxðT®ÝÄlùUΣQ}rÏ'å`qYùaeéÁ¿t»¾XÄ/Cz9Žjf‹Í®ÎvXŸ¼ÇíÛà+ãt-s©yÍ×Þ«~'ºI®u†Ç]+ôvÆB|€o†ùáSz^à6róµözî.ÛÇ‚Ê ØþóÊD™š‹îrx(˲•Ú‡Tëõ¤ : ‚µ2™7a“ø|V†ò„¿³Ì ¼áMDu܃lR0þâÕÙ GSë ›´I·ŒMêdµ'Y ó³ò#Z’x[Øùakø–èð¨ˆ`°Å¡ùò˜‚ꊅ| ×=hi[Ú•kÜ7é‰,À¨Ž³QQ#B€ZÅ@ª@‘ƒÀmà¥c˜ƒî”Uem~”&GÔ]¤"¨¬¼ÀSá¿2 .*‚bð<•3Peð\ ?ä Ø1Y‡×âÝM™Èï? ³~ôO2‚xßÛÃú*.ø2{Ì¿dqrF«b¨Ô˜Tñüô‹kV’uƒ¦*Î@u4D"±Ö:舫c†žòhTü„¥•d úŒ+â…¨¨\*ƒ' ç“5ä¾…·fIbÐÑZ\ ÌÂËÔZ{†nß°Ã[â¶pú{H:¼ö=·QÝÞH³„¡¯U€óª½åŸ0Üò²?©eoeùDmÇí¼â'Oµ?ñn’[‰C댊â x…{áÒz Yš¥»È'´Žn;ù‘FŸY ­+dŒCùZùJú•z.rŠ «O²úûº—Ȫ²íÜ¡ž€Í]«@3yÖ„…ØHcY¯ÖÓàWdrÉb »ýŸ9ź%Ö‚RrœRÜè¬LEÏq~8pM:±@Ïà+°N¯zßN"ÃÔûØiS¨'Ù?(<§\Q¹²wÒ7‘¢J|ö:þÀjF_HìF¹Œå¤Ž#A !ó¬ââ.Ÿ¥Ì¯`8kcg€Y`6]mÆÃæö=®ËNA?´Ñ6¡}˜Pº+Wq*ŠÞÊ‹ò;Þ†fñªZ2:Ûd]6xc½€QtNtÅü …nɺžð2#Äÿ$9ÇØ—{Œ:þçÄ”¨¤þ’þ᪙ 'Ëù01„)âJWšê¹Œ^¡qþ…žþ¨¬O9 ”rÿû„_?Ãþ Ûâ\¤T©¹ÄÌC&¡™žSžÁ9Ç”>à# ¡Cé™@%C÷ Õùê8×2õHUNÊ«}aòü×G?õ‰Î]AÜ1¡c#ˆZX÷öX)û©lòÍV¢”Hô½`÷­S$g 0ɇ*A²)X"–Ñ–¼“û…>ƒZr©Z—ó›â / CÀ5¸ 4·1Ó©þuÞvÙ®šñÆ»ÚÿN?òˆÕ„•É<8'8Çü Gf¼ÎêŽÆÉñÖU´ =”\µ†8¬ÆÕeÜDÒõviyL¬á('?Ú-;©=paç¬eÜÆCð:Ò^Lò dü[D‰ë¢Äø/@íAÌ’•ä ÙM.asÁ!¾Í^4S¯et¶ë)>S˜ 0w Ù?‡–§d»ëǃ=ü\,†fŽñ=´÷òb¢Úû-FÀ¾\ AÜ üH$+"Ëæ¾ï( ª*/Qií<\)P\$ò24±-…‰¼:Bv 'þ¦ºÐ|Ë>àÉ↠‘ïeGùN.ÆcPEôüxEUù,@g˜ü ”ßÀÚâZÞ‚ …xïÓqW\B»ü½¬…<Öƒ|í.ú/¸EtæSr,ÏlkßϕɛDï@bF'pì·Ñrøúp%`k ”ìÃð¶mC•}d ^¢eò³JUüÌÁƒÑOчLÂÑð_!Ôu’å¡A$Ùsp^PH+Äb æk~‡ß–Ûa(gµB]Ñ]{,½òÚü¿d‡ZÓs2|×ý!žUî‹Êh£Wèy¥$,"¸õ‘±H<¹ 7AŽc ‚aK@àSäHT£A‚x ƒa<ªÍÓÕEcååõKpŠû›÷°RÙN¶ù&,ÏâŒÒþts˜:Åw=0ÿ© *ïl'Ìo¡¯Íw(!'•é¬õš¾ u”`͆%e†ý€l"ãÑ!˜F’Ú¤2þHZᨂú ¬‘3P¼ ¾[9¬Î&ëŒÕõªî¡!Öe0T‘X~žOLâž“ÑT&Ÿd†ýÜ—cöìÊbgˆ¹2À®(Å‹}"Zž•ˆ>¢/ŸÂÇ ?®£ñ&˜ €Üx\&ÿ@oи ¼"¥[Lác鬫7>§KÎ]4S¯’î¬ê’!Â_žµ´¦)Ù—¯…ÕñLq…À3Üna&ðÖ¢¬¸”èp'¹f©5ô› œ(ö‚ r5¿¢áQ€‘ðTP1èÂmåO6Ë~Gé"ߟæ~-'”?\Eõ,4Ǹ.‚×â"úMVÁUè$øOÎgù@»3uÓq¶C]§ Të#a ~‚Záp2X a±DYϬÌâX‚xÃRd?ñL•[é4mÇWØmø %ÛU$ƒ ¸-wÉHþD|SÅ,Ú[Ta²ìk¡Z쪺‹žø FZ;ÐMå9"EÏb‚.¡ÈÎýÙÜN)ªï!>|ÕñS«¦_%ÇU¯ÝÑÜï=Xí/ê×e«hx Òh3ÒI­E<4—8 n¬ ²€8k¯‘I¾¡~¹Ç\Où6qž”ï`Y™C{âõ° (¡&ª}qCØ&RE»I¼|%Nòòü_-ïÙEÓíTÞåáÈE«Ë‘ ûå‘ ¬`Å?^¸…²OieÇ?É5¨Èígb Sèv2,¥I²7¿§‹¯p$îËlº\¼g'ä¹T&ój4 †cÁq{±×ýkß§/Ox&~¥?¦±·ž É“ÄwØN.áC¡WĺÏg=I)®ßP—;Äö‘¾åX<Â*‹zh‘('4Gg˜Ë­öPóƒ?Ø7E‰žÐ¾öÿD3öYV@ƒPgªvÈøŸ:C'I>ÔxÑ=ô…M—#‘ŽJé÷Ð G‹\á 0{3KZ;<ü¿ì´”Wj!r |ÏŽöËîñkj o¿ aƒ£‹æÞeüçÓí?"{DÜ̧”V/uö]ÍH˶³oùC|[øðOàôª¿Wf »1ˆÓŠM ÊÃÒE=Ç.ð`‚â7<kòƒ´¾±“lÿs½p5Aÿzÿ LÍnÂVÚÓ+¨eFÐ׸NÈUØÎñB†–Á7Ê`VOÌ„yh>QU‡·äwC3%ý·± Õyp0:¶ÂÆ  "åTÆ£h.Yp ´ÓŽð-t2ê vâx)ÝË7ñ~ ÞQg°Æ`¤ÞÄZf&°~´ ë#¦Mñž35ARßY92‡x„-KæêúÁ¥ce§¢áÙ`/üÇç'e6ÛF(¿Îp€XÃÅEOshŒºáBÚru±:Æè~Ðÿ17¨*âá¸A¦¨žA *¢…` ¬ŠÀ=°Ì/£ò x'‚µp(è—¡ýð9Ú‹r~ª˜( =6~‰¢>d6ZÍ=—sÚÐLÿn+\Ó%ÅcÁuçzßeõ,¥þÎÙTJº¬ã·qPûDjÁzJ9øLÔfÁçPQSÐ4Z™…K’:ø1.H~ÛhÜ)ñ`¨ ÄÃÊZ}cº±Q-çï»YÃÉþ_´±=Ù:, ¢õX=ÌÖ?lo`“7×b¾œBh–(ŒÒ›Õ)aA¯8ı¸)CÐ\xR4‚cYOÙô `~ Š?Ñ0XŽ“:jŒZã=rLÀÓ¤nã•–`ÇA£ÉŒP‡L„³Ü⩜lý$%`10̧á^*ì'VY»‰ùÜ¿\采©oŒ ¤5.[ÃîržL‘+Áo0ŒÇ °7¨/áz¨±ØI?*Чô=šŠ£´ƒ8Y¹«\#ùH!u<)&‰Úľ.ÒÄq–f·ËÙ%¼u­¥¶î©æÇj>`ìÕš©}ðÃðTA4Â%pqЉAžjí´¤ãçøôÎ'ú¢â$À6–ŸÅØmÅU~|Ç6º¥þ%`]ÔEÌ üqÞÉí9ëØÔ¼ ˜%:ƒNR›Ó3ö“ì5–Åfšÿ³gɶ(MÆÂYÊ|ð„ææqFG|Ø}ãŽ%!ÝíÝÞó–ghŽÀró æyñô¼iE}b{Ú† ?ÂGF9ÔG¹Ë‡Ì!¢®(ƒýâŠ, •ÑñwQW±LE•%øqÙÓìî®Èjнæ¶WÜQÎI :AÅlHä ”‰Û+Íq*¡ÐáhtÙ9ÇB7‰â^ݳÉ× óxýÿ± Y6”$É`9Mz¤RÁÕ&ôzx_qQŸ÷)ʧî €7(¿ù)ј¯pqVrÜžÀþ…uðX\YŒGÓ°‚5øÜ¬†«Å{°BÒÔÅ„ ¼â­Ñ#ø}RF(gÔ ¥²ÞÕh.ü² ;ÂnØåÑtvؾbžfñÅÓQ´D+QC\Š,PâÉ[2äBëx5w8FÜ’uáøP{Æ@ /¯¤n¯@ot FÂeÀ‹¶ákrCÿÂÕâ&Œãá½ÁJ:Y¶­€è/Ö³s¼zÄç‚9¨;-)Š9|X ßóG¡ê¶ËîÎ)ŠC×é|Nk &Á'è¹~ ,!.U“Á"åžÙZxa]$Ï£Úu>¡T\“íá%Ê+ƒH>ƒ6f½E°È‘—Õ=à7ø†Ç°v{ÛÇfð³l-l§Dã«|.{e.°ú{÷ûv"UL“ûo]UícüŸiØ\Qþ½ä1^^:Ű>¢=åf±Ž'Q覘Lµª!šBø,ºˆ ¹Ul–íb2À™iö|_¿rQ>·Ú®bÌ‚1è†ò?e30ŽŠDW=áå¸͆K`^øV† T–³¤KfÀ«0ì "EdqqE´`3øQP†ýO>æ§Ùõ•rËè©=Ñÿì@µH‡@*ö˹¢>ÞÌ×Ñ×¼c@€.èŠÜ;"E–£KD2cî8ßmo_bÀ>ò©^]]¤üÐç¨ÛÕÞŽ²Ž*Ž+€?Œér޼D+Ø÷í$O’+Â͹@ŠAð½œV*ïùqQ˜È„•ey$ÐyÕ“‘p!üÅ‹éb oëoO*ã0´ŽÄárÒVäàcV+€/ÊjÇaQ9+ÇÓɳÙ?; þ±«ºúç³æö`÷nòQ}¡ÏsVÓÃõðô5¿ÄkÊÃjT^„’lxœåÁRp ô‡ÜšÈk ª\‰ô™î£ŸT¿{£ê ê•«rþ”ˆ–îkò,ó\ãƒr… êkÔzk7EÙx ŒÅÕ´ÆjR[ù”k¸qLëâ*+j±«fo9CΔ E/ûº| +#Q9é›Ñ72‡£•|(]ì?->u T°F¾ú3˜‚šXBäUÜà|fvÈ4¦â.^a3ñ‚~ðeï1¬°ñéä2¹RðE‹ÞJIµîb½³ê©=Hí†]Âù5Øá*ãœu&ó¬ùÈ7Ì/ØñûŸõÄ»ØFûDz’_ö!ú—ÿR\Yòn‘Ùx{MlàDV/á-e#¾L¦)£Á ±^ì‘q´?u[ôZ²^ØÈ¥-àçÀoPØn)$HFkax~ÇmqGv†\RwŠ8ŸzFÔa3åÝ@|`V`›j÷°/Šâ¦üƒ”—Q4ßNt´H®Áù‚ƆžÎu×õW°ÇU ÿ¡F“öVDçì)ö ö Öä^+ÊhAFƒPíª4Ò Q^Gž•5aáò1þA£e2 çUÁu^_Áû”^N|×jøŠ›SÄ(~ÜU"wH(R‰©ÌD­0—ã¥jL3”_8t“l‰Qs{žò\ÿr´32œ_õVØ¥Eð–b Žå€9ÀJè€q¨i¡ÆÁ(e¾†wKñ1ÚüÍ®¸«äÜ6—§WþÕ7ÐÇ7)û"ûI«Ñ‹þ¹Tä=A?õŽ~݈U¾*Û´Z(Æ*+MÇ*Ea­¯±'è¾îÐ|zGÙœÀõ­4:^³7Ó_¨;=É4r7ÃÍÉfí9Þ%àAB±'Óú,Ëz`7’Qž\ÓŽð÷rß^G~@ÕD0œ¤Ì³˜~ßhó„·®ï/<ÍØGN‡nмù:ôEÐ|­¹ª“ÐL68(s‰zA³ØiÙƒ%±C° é®´3fÁaj´r†Ÿ•£²››ùÄo_O¢{UÎëߥ¾̬ð»mö ñ…Ϧý—®7Z°Ì`K9¤TÊóåÀ­ØD–Gô»ÁNÐCÍ0"ÁjDP&( tN:e¨E¨OÔê/µ®ºF?¬®t­ ùZ6WÁêÁ žw¾IÙx"Ûjí…A`„(麬ÖÕGéÔJx;0DôCá Q¸åWYRâ…™-’íiÐH]å}ÐIä%3ùúp\[½CÆÃR _6›ÇËnò¨ O ý#ëË¢ÑS´ ^Ãð/¸ !}PñÁ¶à ì-¢e|…ÎŠî² jkÇÓ² @ ©=Ö: ÔP¶£=Á»œƒg8F;¸º?ƒ—Å4øR|$²Å`"B·JÍ×,bµ–ÝåjšIΠ¦ø å|((=ß[)Û°žØß͹¾_VAKƒánØ^nØŽZCrÜUFÁxz’dã¾h˜ZÊëò¢˜MÓyÑŠ%¡WXW«[ÑZ5¸Mžy ¾W8qT?t¾q´FÍ`!jå¨X]¨yÂÕÕ¡ÍëþЬ¹{S¦ý.fÞ Mqî`⼫͋ ,‰>«vä¸ÈßAƒ#‚ׇæ3êÑ©N…ÔAY؃› ÅÚz~ƒŒp(þ{bŒÚL\±_²ïþ7ô!°òtŒ÷¹¯l`CÐ…0wèÊЋÎmŽÛ¸“,B7±ü¼¨@gñ?ù:Xtå×ñ‰Ÿ.»¢+v<7aËIÖb%ƒLRŠãœMž“dº: MÇñ"¹ ]Á£ØþLÕÄr–´æé?p ;;áâ‘ã «º‘¿UÁ„ØžŽÜÆ34@­ Õ”_‘Žó¨ã4UY¦n$×aŠ9Ú,k_JwY=ÌQ¾65GÒž2T%Ýá`òÕ¨ÉJÐ-b°wZöŠÌ1¾x\`KàûCvô«²ªc¬ãQÄÞÐ.†Ó5Öq†8W)ÓÅjô¿—¸[Qõ ü’?Ÿ\³ƒk„Ácd_:7Û+Ù1WÉPŽ; ðsfºø™Ó0Ó/.ò 2S\‡äN`y)æ„ñNu.Ž›¸Â ¾ÁB­ÁYHñØ÷$×Õ8”ÕRÊlèûà"¸XÍoý·ño.:–t6‹pM Éÿàü¹‡° IDAT]ë†ì…ÎðÉü,lI&‚À»Àjyìd6í&‘tÉ\bô‰ÙÔÍ5N»±æbÝ.¡áÔ’Ý`{Q‹'ÈtZÀÍÞ˜Ø_Æú½äñt0^Kðkd6hAØu£§D¹™!âoÑJƈé²L“ÿÂR¢—@rŸýb×iG~}ãùE{³¢¼6Úó(ád£>&¨±ét†äu,vxRz]rÍ5¤cžñÞ±?²_î8¥ŠcWè=øôW ˆ‚ŠÓ*/œ¸I ?ë'ŸÛ‰ü7Ï!b“S„‚óÉFâ›ú™]·:’iîÎ9ëÜó³ÔôÓ¿†yš{ÆÛ[^»?iËSY0ÙOV“µr^¦®ãÃà3Õ…N •d®ºgàÁÊYí>‹;ÉðžžÈòH¡ó¯Rõ¿µ˜ãfq<Þß÷Sþgॡ F vOfq:Åúmv1¯˜i8­nN­D=ђ刜#’A>í59d\P»ê͇]›_‚Ë»R5ªï×äÈAžÂñЭ†ÉÒ"Ëøg><âmŸxÉ7Ñ}à g6(B²MÛîÄWZ{Ì6ìýL1*-KÊXÖžÏdwì“l 7QIøAå6¨ SÑ ˜ ¡jJe<‚”5Ê©ŸÔ¢Ê[ `=ô|­àZq!ßä}¢áAðˆŸÃ>ø#NćÐrLo#úáɪ)]à> ŸÁ›h¼ ÛÊ!²Z!KÉ.È/igqNÄÒ¦æI¡©t6!ZA+óÕsêsµ²RLç@ WX0í »áá —Ôq+^ÒjÅv±'ü‘}ÏŠ¤/Y{¢üÅ[]ø5Ú  ]a(v£–pé“@4Ü$À?Qy¸ Á7”¦`j®¯_åVe…XÀw ¡„’¼síwî Þ¾/dO02Úe? Vú@,y޵e£êJ[ëkÏøžfʉf^QNý Ñý;Y‰ƒŽ%ú\;¨²Þ^É£—ƒÛÁñ10Ïf÷qÏÏ‚6ËÏ·*kˉ¦bÇ74Kk§;”‰è¸…ÒÀü˜}§Iô—ç»·¿QêþìŸÞ2Ù7=wÝ’mdÇ“ÙQ2ð MÓF£C  ^J*°jxj°:øŠd ïdßÀ8«d е“£Í¶!–™I¢bò¦­†¦±EnåEI¼¸Ì;ãF  Ö‡“sÆc4Húqädõ­š3;ã«ïoÿewÍ@”¯@μ™ÁWòÔÏóÌ™UðM±µQw£·äos-ìR~”on„ù ´±>Ò˜áÜÂ7ŠGãwd4ØÁ(ËN¤ÔÂYQ9¸ïgrfm¶BÍ- v,¼Sî'¦‡÷ Ûh´Õë€cÒ¢lÕóVäçù¾¾õÍÏì.ïâ ±òZd´¦ûÞMv«@{{’<"'˜1¼œÉþ³Á"ÐÔUÄqÑHž»AOP2xDy•ïÊWðÄ…+ÂMCÙA¨Å”xTFÔŽòåêz*"#¸$þtÜøO߬U–ºs»£0Mvö6±?›}~H]ÖclÈ•Ü.#;‡_å³`ˆ:^ÔFEºHkGjX]¸Ù±:ô!Ú«D8')‚$¸ž¹:ƒ]½Â”ÐÎAªȈJKÉ•˜§vH‚ó]PºkXð ZXÞRÖƒÂb3Ýî뛽*ãÖ/Õéîš~ÒS?k}j.”9Uê=©ÏÔl5]¦DàúŸZWã»óTP‘àX#8hdÄ@|WíÜÎô™,D·ZI¬ŸE¿ÙKd%VÛJ>ZÆ*ð‚"˜ô%¡jœ„޶¶Åw’ vG6 ·±·°eh]+ó¼ èûÀ÷ò<np·ÝT45û3šÖ±Ââ  8)&ˆT¹•Fy7ЫÌï=ŸS“ |Í9çóä¼Éü‘3!{ÇﮚHÿ‹Q«¡¿L… u†™0”É¢‰x-ªòâ Ï/æ ·l#«ó1pˆ,þ…õD<É—c¾²ú{ÏÜÞ%ÖOzˆn¤‡èRq]âóào’®ŒSÜñËuϹǹßqÛá$>8R? œÁS‚ÿp™ÁzøWéàûj_ŒÉ5^H®ÀËÃùèÀk»1?e?£Sä0ž6]à,.ùVØW¤ØU^ÌêBŸZüË|½ýñÞÓ¾ºV˜UÛþ›Þëaˆz(Ëe#y}N°kÁ®¼ê*½Vhcu…r˨¦,€Éèü.ºŠ4X¼baèFoÈWŠ ™®´V:Èù¨:J|·”‡ÂÚ¨wøpH=di¼$¬f74ÛÓjì_ê ýi´o$t –â‰úÃa»tÇXפ¯1ÞXj,Ö>¡Spé@Êàd&ÑÔüUÖ¡cðì°ˆímä/k#·yŒµ‹F‚Vü‚¹œ3Q ç’çƒû‰¿ºgœ¿"z£} ©‚ÇWÈ~AÁm_œR†Ä‚@?þ,©¨LrÄ:ñ(4…Y -¨3Åÿ¤CÞÅÁ™½À'áK¨¡à.Þ£lD‹ð;R‡Ù°4ˆäÃd)y6ð«Dÿ ì3Ù_i"‹bé ÖV̧ëíõ "7¬Bp¢yB«¶?Ýs0ó‚YÌ×Ó]ξ`óÇÆ°²Ü®¿UŽ)¡l++)ªxªùwûê˜áž Þ¾á•|0P(»(ídÅвrž½BT”¿é ³:sñ æH Á>¹­ Àwù7ú‡€q¨´ ÇB‰Wu\K©êZ!ý𸖠’ÅNÑÜëe+½¥êÁ¥ƒþpÆ*7‚‡è3õp¶hÇ2xó’û¤ çõ¹Üb{ø‘@²¤/ØÞcßF×ðRßðj×È9ãs£rNUóq)´F«óvÊ í2¬ê¾(,&ê‚vh0ªŒtõœ¤W N ۫Ÿ…ãêaÅ#óÉu|‹¼"¤((þ9ì¼L½E+8ÞÇ‘8µƒ•Ðp8ôÇ;Qò^ªòÞR •ÅP%k“u(§¨ùÅY YIÖ£¼Êjõ΋èN³@ ùz¤”Ÿà\WŒ… ´Yš¥¡å{ƒ68k\_¯ãv¤ ¬Ê£ Ð\CäOyu­•S¸Ÿ< ò˶†3Ñ LçÒ¯<Þ¼jÝ;x>Y4#½Ù¥•0ÂŒŽåŽB®HX¾E³gý1°ëÊ|¨<û%%rYíØP>Ñ^É/Ɇl .[â z?å~WoMÒŒlõ0®àøÏÅÏ‚RÉ'âÖ+‘}"¶‡;ÁsyÞwų/ëDJŸO[}ùúîýÜ´™¿6¥uÀ@†¢~LŒ•O‘)Q;ò¦äkTÃÑ_rÒ±ÑYT-¦‡…ÿi«ÐYV‘°â2^›ÕÝ r´Ì°ŒÙ2Êþ ÎÌNË›9œ!£W +R/ÏSý¼³qÄö3Áןv§ì˜$ÒagZG‹é(9l§DÒ°Y…N“‘þÁ<Ônjň¶JœÑJ†|,‹£p: /ü,?°<ÎòIb¸-ú੘¡xŽ<¨Õ#÷PuäÁ?ì&~¢µ7Óã§{Ý‹ÒÆ’e  쨯ÎѦCõlí7¹¨ü‡ûÀ)<”>sa£lî5a5Bzæ}¯ûPx·ø¬tÍ=.žw¿3.×µBaÚ›E–ªŠã„â#cq®]úxÐFV¸:Æ9gÿ¥”×6¸Š*_‰‹5ƒ3Ù¡œB¨¡ë$íŽ&à81?{—ÙŽ&Š 3|,¯Á‡n¯ƒâÕPG_×7c”£Œ±^§Å£QJšRL#MÑSzXÿW3ÑR„À¯½ª¿­w02ÿ络“Ï>ï{˜#éþJž±´PàŽ¿ˆå=Y2H7R¾%¦úƒwHO8 MÇËd}à–­Y Rá}¸ßQŽù`<ˆ2@w”‚‹©y]û‚:çÃÖ†7SÚ»ê3ª8¿†^ Ù¨VT rýÅ“X'zÆ=:kBæ›ôŸßÞæ,̸“|šéÉZ æ³ì¾"H 2-SpOù¯x;ó0áAµøp¤J6±à&øÉë€'à$Ðľ[hV.»uÀO‹Ó¥ÊbmhÿÇŸšIt« á÷ä/8VSa¬<*ÓPΞ£»ò ¤$Ét\=…^*¿I~Œ)¾([£üð&{vÈQ’õ²“Ød¶>·Kʦ ûòšÓáþ—x‡žâ/Ú+Gå ÛŽ[ÊMçãËÊãZ¢ ëðùþ$º“}ó÷fSðtE¢5U=c<ÓÛc¡œ##d$|‚[!«(œO³ô&J)ÙMÿ ¯S¬`·+Gì¸í˜ª¯’SQøû)1<À—ðŽ˜&Êðl=æd¶‚fD7QŒ~“÷%dkX!1žõà—Ät–%Kð‹ì7ã|2¿jHEàƒp&ö¢¿á\Ø r0\nÀK‰7>³ŠöÖÿ“Õ¢'í¼Ö0«-ñ¶ö56»šiî.У¼ÅãÔ\ú|TVŠZr-rˆcð\)¿ÃpPG΃—à@4ž„?ÁZÞTvç?ùQŠý–h)U¨ºèz/‘w°¾ÁÝ„‚ .€(ÖRfðjб¾k"ËxèÀ[šŸM*nÚUÏå{kn¿(¼ùÙÞ‹[ÛÌôŠà­á­j·úǃ*"‰{A91L4§?Ù>–ÞŸÅ2k”Lekã×ý;Ø)û›¹’›Vg3]d˜?­–n‡]Áï÷=ƒÀg‘ Ë+ÓA;Þ—çå]ØR9Šß©áú4±@Þ±ì<ÿ—=Qô3SñÐI~TB ›˜ÊZt]Ý„¿§‰P¶É^â²Ddª Èåt—U”o´·ú |-çóYÊp</'s@@lAçxs_²O|¤IY[Ö€ a;1VE•`¢ˆƒõæ*û'(ËûÃ/J~-ÎÙ˘««Ð>¹úe;¨@ÝÿCÄ\´tÀyAkž„Â5¼Žhróa¬¯ˆ@l¤ŒpM)ô½£NEМToïŒ"Þ¦î*Þ—¢°˜{+±ø;îˆ:,Ž£¾ò¹Ø nðÛB‚[Ž%dE{™¹7çv ‘ÿpN]»kP¸rãJè"ŒÁÒê°J=Œ]á•´ñÓVw:KHþ Jµ>x‡ªOá`4‹„‚p ^à‹ÀÙG‹|ÿד%_Õl}3a¦lËËðnf~Ï{s[Ö¦_;Ó×îfÑÔ4³fàï_MŒ5ÊzæØ«VRÿQýJa-R‘¥ý –È+âÚ(ÏÉjZ¨}ÂïôvúVNì&±`5Ü®AaÖežfßõm¡¾5ÞÅþñÅŸež -=Š»®çbÚɯ}²;¥­ú6Õœê[êyÂñâ´%¨ˆæá2 ÄWïƒJçk]ÆÃè‘Æ£&ÑgE+ô-@{• N õ÷@j :óÞp”œ"‹ÀEà»p‹’‰âö_l9?bUµEà¢+í_¬éÌ1;XÌ]ö^ž`=·gÃK 7K…Ue nð\+caMôNÞ¨ªx(ÐB= €NXCKË’z¤’¦ä1Ê„ÔpÅ…?È“4.OÍè¶‘{¢#ó>/P4ê{ô”|-¢òæ=‘§Bh…Д°Vz¦^&¸¯Í‡ééþ3ÞÕÖ{c •‰eºÈÃZ¡uðˆÌ íÑ´B2Y=¥Oe%†9e’úUü¢ÑC©Â,·ƒ "Š$ãlX÷…]`q˜ìOa!Ø ¼7Å7V”v´ª&˜ÿ™­Iì!¯)êÃTqMƒâ.»Î½ò)»oáæjkõ‡ëµËÐV‰ú2ã­ÇW5Úgø\F}­n´}Ÿ³ÏþiFzmþ®B-XGVPâõFÎÏ¡år Í;¸¨/âQ”'NQï:7÷¦qr¹lï¿b]·ªÑ³n¿¬ŽvaxÞQŽ PNn’N>’ÿP¹ûa‚œ‡+ƒÐåÀd†ö;4VoéhTZ«¤R_+¢¡y°(þm@’xOûƒ¼ž•'ðÓ¾å`Ž<Ê<ì{Ê+™Ð÷ÐmøÊeÍHÓ½crÆdwpwvÇeŽñNð¶÷'[ír`/“  ÎÀdp¶„Ûàbü>À(^€XÖ²½V œSÁ·×ëóyc¬Íö«)k-î³ü%¿øL—Ãénå‰!q ÁçÀg0AÞ¦«äqÕ*ƒàZ¬$ù ÿ–õ„V5¡Ívøü ºƒ±r;8 ŠÇ0¤ 'ü"`WX&áñò4l óÉŸb£¬ÀûSÇâ¼Ý‚¾±v-ŽJú/pÅúc¹ ËÑ…ò8‰——QçgqHÞU|þaþ VËœ4o˜ú×Y#­ ê€(;·œ ·êñÖEkšiÖ³±¡â2h$ñ!¼Ž'‹5³›ºgÙ=5R«úŽzûì¢Ö °_pyH9Âß"Jб2 ܳ6˜—í”ìÞ“iÜüsykéÅEш¢Vèr†¬@†™¨ŽšB¦;ö“¹zŒk™  åžzJ[…Æ«ñ¦™Üý¿o§ÝNNg@á¡"Bãø¸2V¹÷Ë å4Œ¥·åN`óKv;Ónmõ  ìo¼—Ì/÷جJvtöÕô®©Éf¥@¶o Õ2•[j/ã»Ó‡ã~p#¬ 2Á:Ê’°$ø /³1ö(¡±æ Vƪdþkýe>ãÓø=χ@ qÕåõÀûî*9÷yJj‹ô¨lW–#³‡yŸ7å7Á ´Q~2þqè"ÊGåW˜5@Ea!üu€4@oÌ÷³Z²¢øÄ£©!-¸Ÿ„É­àÒ‡Õ‡ñ8|­wV.OÕ+ú1g^ç uap¦Ó‡Z;h9bª+\}/—…s4’cr?pÅ)¯\•²F1ôLÞ–p´|&trDñ£w¸ ¹¥ä!ì’QⲚ*ŠRJ=jÙuQe¾“æ͈ _aÚ8ZJ­qÄÕQý„¿©¿U? ¡<.8doy_«ºõe&Ó±¢Ü%ËL¼+¨­2pxÔ»DûH^‰x¯ʃxq—4ãëåÿÿ‚àÀ®k èÞ看§ñĶm«qcÛvc»I&lÜÙ¸i<±Ù[“™ î½-ý"[ ¦¨*p_¥ãk#ä[ó¯'¹žü43ëJ¡åÈTW:[¥]Çs$L«l5LWü°š¨pÂõεÂû·õØzgŸòõgXýà†ª(ó‡zŸâB ,´Ìà—Ðu§·=Å¿"SG}3’/$Wú<âkEÏÔáßìï¡”¸ðCÄ}ë~M¥½Õúüaí=µ‡¦ÛÈB{Q`n­½D³'zsYÃÉfëГ;2 G’­f(ª‚lŠ•ÉúÚ“T1åPê`¦ªB Yê\yé*È'ãÙ`š’¡¹lAêÀ\9‘üC,ÙEuV~þϵ‚|¡˜ê|ƒ¸®êÁcÌ¢ª§*…ÇàE\ˆaú+­Œ1Á>ÜLâ·Ìô 7›æ†Ægí…{v¨aU¦áßø…>swÿÏ{:\#Ì«¦¥y%yœ%êº{‹,e-±ÆfœLxªA6c ’AoÂ\ZMW0LÿÅŒ'mø¸‹ä ùò¬4/Œ×7ÒxWB¿ãôûún6”5e™Ñ§ÂÄ-2Cå•?ÉküÉÛªê7¡;Ih!öÑ(˜¡â%Ú•„#z8ƒOÅP+‹¬#æÂ/2Á?ŽwW“‹é“«eªî™¯Düå sg£­ÕyL¼”…b^SeMzB^䣸ö`Yë[êÀžÀU»¾å¶‚W8‘‹ùQÑg?W¸J%zÊy—{ªè&Uäù„ÇäøšÉ÷økªqd4y¹è²O5ZàÿÀ^8̨ëêµe nb;Ò¡µ°-Š%±=)9I«ñd8Œp^Êd<Ç«ª~d*<MÕ0˜ ›ÈDÑ?ƒ”käŸP+Eï»/‹f¢‡S6£Dà¦Ýå1Í|+}™Ì©.?É ndjœe­ãÍxÝŒÁ¡61bŽxíªàùÍ|NgÀGyEß)ËZïÔrÕž#Ÿ©"ZýP«YI¼ª.´jc]ã¨P®À’ô©_2®§wû1ãs;:Õˆ(äv<«¼ÉîäÛCzCi^ XI¯S7)I'›ÓÍÚGZ–cU|Mè¯õz¼ºœx±<¹ob¯½5cwgªä;æ:¦ŸÕ6kôÖ2(ßYwœ£rŽÕÍy+ú’]0UL7ÍF'Ðæä:i§RÅðàªà³`n»#Öqçô.v`kXQ’& À¼Œ7`€Þ‡m6÷iàêé>Èçsâlâ¦}/xÓž`— ¶M:¬‘<+ãHFGÿà`©äyéó3ÓÇ2ØGïjÃ< ©“|ŽŢæ{|Æ'Z úâN6VÕÃ%hA}éìû—ú+2 3©<$N»£!õS®÷k&í ¹È=¶JŒÉ8®Ã":ƒÄ‹³*¨ç"ÿÐça+´®ìHºÛsèMÚZ†ö?uA;§UùrÛiªŸ×³É¬¡föë:]‡#yU-Äú«vøA,B!æ‹JØ·À|Å’¬ô4sNÀMrVËD• š@¤¾C¿¢+}uÄ'ËC×úÿ2–á5µw)ÝZÍ+Z3]ñƒ„§vs5Ùèm\¤§Ú:„­‚˜AëS…H&\iU Tµkß“w§GˆÔD‘Ð_ü_“Ll f“3öä:î«íi<Ö™{á¹\ÇjóËj‘¾ð؈­¢“ŠÑkšïô3PÍýш5KÃYuÔˆ¬?x™¤ën kC¨7«ÞAcŸ+8ßžh 0à®ëµZBæ‘‹° :ã\¸«J€¥š@SŒUµ¤!}ØFeåëÔuùÆÊ“üz(ž®"Ãx½·v\ ÒRH;2!2Ú÷*¼Cì>×tÖ” 6é€ zcþŽŒÃÃîúÆ0ï1\$÷Š4¯Û]˜]îës°W`F°½SD<”)Ø”Žrk¯!‹½ÿ ·gåÔ)ÞOMWqÖ7ë ]@û@9òÝÕJŸæ*Êj[ èW»´ÃPÄêÀ z›_ùéyÍë»VhçÄwƒáò$Èö_Ú­ „i“}û"lÿ‡àãŸ9h$Ì”±8/AY…¢“>оœâìöOvÆ“ö´áµÚ§«þ´Û¨3ì ¸Ù7šÌk ñyNF°¸ÿd‡µ8fÓXú §c§»³Ix%+IЗR—|­m Êrò‰*C§ŠR¨¿ÐþÐ>c=U͉®¯áù}yªº2»Â´H}:­ {pŠx«~ñžppû#eº±˜îÖwŠ«)þBiËD{j¨&St˜¾ÊllÄ»ŽÅÙ¶w«J¢™¸¯âUsHÆÙô8úð `$¬ÍdµC­â‚»Õ`k}™÷µ:ðQjÁ_ðWì†ÄuˆSsìҌ֤Òˆ½Ð#ñ‹è•TOg3 ÓÊY<±f†¹G[‹hç‹ù;†ô×Ó]£‡¸÷’ëFþ§ú:UÕ/j¬l-JPé¬%°CæZïMúEýô§õÈvWë©…ãvQÏ*j;mÕ çc`ª­±Ö›A߆Už™õÞSÝÕÐøŠÇ x_–V.\€>uFåbÈSèîî¤/ÓÒÜÅôfqúž&¥T«/¼;¿ê¼“ñ§¡ÒþÑdÿoé,¿FZ;‡­C<\Uí¡)ÝÉ&ßÈ&ºHM„ê<\Áµ¤.k­%ëZ*(j.ò󪹕L:ªhñÎþ¸æy IDAT™Ãð•N>™6’ÅEcY\¼Q­DIÿšÐ-+:c\Ú±ÔgÏ!F:#­³Î+ Nb„JqgõŒðlòìò™‘izi-«;“ñTwŒ¿ô²ÆRW{>E|·ÃC‹ìçBXùn×v ­W²Ë?àgÞ”!V#;E.–m¡»Þ6²gÄXó¤Q›äÄòx]Þã+!ŒÞ²gˆRbÝó­Ñð‘oåßeQjX?ÅBȰ:Ø9EcV :Ég¾ÌÞž^nb62çãJһȚêƒxëä-Dwÿ+ç÷Y£ä!­ͬ]Ò÷³9° îh_à X¨g™eÁm>Êr` gV>¹Vn{ɼN[ÓÃz£ Ó{º•¥@ey°wZÊÙž10­kZ¾Ÿ}Ój%‰o†dqÊØ_…ÁþöGjÛŸ„Á”)¦ËuÍSÓ]\ßàŠ¦u´ÙZkõ/TÀ†ð cQЬŒŸ!§Úź3…ÅÈ¿t Ü$7°!M„=d•Ä¢œ‡\r8¤©+²šB¨ª|ê-W[óÈ•䜠}ñøDÞÂ1Õì /Å<ô; …†Lµ35:¨œvy_…­ô} {å[䞦_Ä–²¼ÚÁ³óu|0æƒzB§?!žœÀ$¯T&¸!ZéÝõKÒ ÷½&ècŒé'ƒcBÒÚZ“T4éò’Þ0=huTÕŒsš×ðy²†wò¨Ìd«–ë{x”÷/×8’‚ãè|¦þ'-•`õpúÿTéSƒï?vyÓÿór>^æ‡8zD¾ŽªŒZgÕbÓœQÖ9ßаâ®îž*aËc6ûб¾Þž_Üœ>3+¹ý柮CîJúo´<¨÷4^›£°%ýHãUUÈCVÎãåá ‹±¤a…õ6 Ënô02©%®d}%ù[5”Ë ³ì/“ɲ¡êˆ‰ª ¾TT-_;¦Ù—ÙƒBóìsPY, Äû<Þ=̵Uô¨Ìo\OØ}\¬þRÓÈ\ñYµRY¡&즫!+€¡¿c™=ÿÃ7䘦¬«ØÚg-W’&òÿp ½OþÑõVfU÷sƒ=Ñ¿)q9ÄÛÚEU,€Iòœ"ÔÒO±~dªa»2é{ñ1V%µ·pË›¢¿æ53¶yf=‘«Šé Ÿ]$òlسY+ðWò Ÿì”‡–”zz:á¹0pÆû»Ë^ü4‡Ý¤(æ›ø}«l0ŠˆÔ´Pb­®‘®ûŒÞ.ªqšSËN.B%²˨ưPµ—à+ùu^JÅÉ·ˆÑr®6Û­øAµÖ)º­&‹ñâ¤8ãèòNèY°ŽµÞÏüCÒ¼âÿádF/ÙK·ƒ¤7¾ÓÂè9Õ3VÿÄÒ7t,µúúSR¿;ÕÒw&NCMæ ž—¿¨Oô†®¸ jÑBÆT©á½(¯¢–Óz˜I-Á¬Y- “k¸UÞ„¬ª»<Ç`®<ÄcDC»µ=0ø)ÃÏg„^e”©©Ù×ë?ÿ\ôƒ¤ëƒÓØ™ÃKJŸÚ.³‘"â‹*EöÉ¡* 2d^ÈZIª»jÇökaž‹Ä&§µÚЛ÷¡s… µͬ§–e_ƒyo¸uT[zKä—Û Z4Tq¢)‚ÇàÓÈa- ÊC"¨åœÖØ¥]BÔ¬XUÚÙÀ‡`]笚J_È8ÚØ¼I»kºvÆ«w¤é˜I‹cŸdYý¸ž ÓHQº•½„5j™ø-H­m~+æ §ÍÿAqú†–PßÕ¿êƒÜ/›Ëâò¦˜#ãåiõ¯ƒA*³xŸ%ë´~>éù'¬i¤ŠHϹֳŷ8Çç¼ðóGþvo‰­ƒ¿þL•5iÓ3ŠóœÁ]i;DGgDR«¥ÍTEJØoaäc>?±rù§úŒP‚3Ù:ŽÏÉyµ‰,Å4‘‡±›sA‹Î$Y ä–1ú[ÚCÌ"1»…+UÐÚšZïtu eżô-+‹/ôd-C}Â{ð€ !dw2ŠzRwC z€Ëz…ÉQPwiP˜µa{å<²˜¬Yá*é oè}-ÂJëg"–ÿ°—úi­©«×ziåÃîûޏ+pÍ^y8n·fX7Ä ¾Ï©'‹¿g,„r¡ÏþÚ)1ì1Þm"’=MÂEÍŠªy1ö oSDã…kª¶˜£óI#É3Ôb1¬ æÑÆ (sÿéäšÈ&bWÜ®þ‚ Z)ñZ Rïõt–‹ì÷mÖË™o¢Û¹Û„½ û'Ìgž7Üî ®¦„²ùôù ž‘s¼¸œ*j œF™AÓÙv¼EW‘±ê-¸á ´Ã=ð€ÞÇ2ú@WM-J¸„§œžÏU^#²4Þ“ÍC}Õnµëª-œ ò¶: _0ùª%²òZ¤ÙŽ`…µY¸µ¥kÈ3ò„ÜÔi´2Úýoí:-¬e3io ô­‰|—¥|nçkd÷&÷lW´ÃjÑJ¶äÕE6«Š]È>Ïsó|3­¤*ºÎ;·ÔÊÈ|žŽîáîéäeæ`%èٔŲ:ô »©q-ƒ¾Ss‘jîÌ‘OÍ„ˆ©…3›&¼æ_Äß¡P 5ãˆX̓¡Òž–†Ï˜Èpéáì5Úm (·©òý‚ÎÅzè…p\†qr–rxKç/¤6‹²ÎyÄÙú5X„Ý$oð©¡56.à(ÀïbÑÒú┰í«ÿâIï+c·1K/Óõ«àÓŠÂtõ=2^’¶,¨]c÷é•‹„‹Ö#ç«Zú5í ß,Þš`×Ükù ØDÖ…l ¤`h’݆æ#õÕ1Ľ‹ÌW³é:’(kŠïRÇešì§âe[ñSlçÛœD«‘èÏË‹½X+B yþ0üòš¼C1N=+Œ]†©N`>^nèŸX„x,2áÚ€Ç>Ç«¦™ÖKÿøPRàLJs¨ '2â¬Fö+KôÈØìY ê˽ ¼9ÙýW69ÈÉiŸ£7évÈŠá1\gåõ'9/ºqŽS¹,J®ðµ}ê˜(å0<¢|v2LÊÚcÚ4¬™Éâ ?ù[^ w1RæÇB0¨…ô-, ²‡lºê@[Ây¸„Ù±\χD±Çui7pi‰$‚6ó\# ì:ïÉîjêŸÙC­'Yª]3®#ªhÊQä€×˜×Œ’lžvìTÙU<ûß°*°N©×Ó:ªuÒÀ©"79â õ̦¬3©N¢DgÕ-u]þ'¥tóúVŒs]d3®— ®-3Žº{Ù‰NõP!ÑÓù¬€ÕÂYowÞÉÓt‹cÔqŠO3Å=ž!FËÒö²†%‹¯G›ÁI(Gn‹&"‡¨¢ÎȰN}€Òl© +é@|Y>Ðd9™m\g™d:úËQP‘gaÙmg ¼!"Õêôë4†íbc´úžñ·²~ªÕCÜ®|¢·Œ—…Õj*ô¿ª÷j£ü&ÉÙøŸ¨%.¨¼¶¼Fî°Ž<vúL ŸçÛaLôJ=mH9“–'u)ÿš¾ä‹)/¡ÆfËRÐ9lŸê&ÇÐã²–Wœ æå™õëÑ6ǦÞö7Lr¾Xƒ¡—Y N¹Ç»æh!åƒw*Õ®ZŠ6"L¦zÀ2©KXû¨+äÖP”¡óÅi;¤&aœˆS¤M«Â6\®F“\ðI )úub´NÎ2h`ÌQõˆV±ð\Dª=‹{T+)¥Žajü‚9ÈW˜„“è²7ëWÝ?ÉBÚÍ“`í´Î[á0^‘×Xv#‡Y•þe¾0òF…€É‹,ÝÆq8WkC~Èòƒ7Óêò‡2ïwßã¹E©°šÁ9R»î*&BÚW‘îØ2“*U­“ëÁCõ†ú£f¨(YSDÁNj˜€Ôsˆ0h"î'?áØê,÷b¿N>¨œ"‚Ö$£ÔEªÑý4™¤;È/ª–¼ Ãdq¦&Ú§ËÁ©âõ&´ßˆ0VdêN pȘ ^ÁbÌ9e%2Bíu„Á{„ÜÒ3è"\ ÿÒmÚaV_ì‡å²·òЧ¶×Ê#½ªy¤gRø5–B·’Çæ4½§ùÀ¬‡œùZºHNÂbZJx,ÉR4ƒ/Sÿˆ<ÎFqZŒµ§ ¬àÔqÖþ8í˜ò3AE0êè¹Ý~Ýö&F¶Í²Eü¸d ²&˜aÝ",ß6³¤™—”Á$^·WÉf4í4¼Ã]¤œ–•±‡ˆ“ïø \}ä9·¥Çèõ¤{e5Æ’‰±ŽÀI00” YùZÝÒnbmöFËil¡1êŽZmß ¥ñIV‚œ¤ÞªUÚP8$ŸÒãúd¸iBodÎ/2ž|ñÛøñŒš®DýNØ,uW•…%±ü¼%Íä2ÚHÞ¡  l–?dš*LÞ“’ä*Kw}¢éO{©ìÇb3‰Ö ;êÚk¾ÈÌ).¨URfîVÍŠª?hwø©õ&“ÙOœ"wbmúÐuÕì í„—ÌÏ(ÝÛ]3‚î’¾.7›äjaøÕbQ@ôÁÖÆmׯ®x;³ý4‰]ù}ü„¼Ô΋ðF<]^Èž±Þ?Î&VWeà"Ò‰U ÛÅh;’OeV™ñ+iIð’ßà*n…™˜F¯a6,E-Ôéeµz©rÎ^g†½ÞêºÊoE°Ú ×:~ZR5Ä]”Uà]äK2Ð wv S$YõC󬵛Ó;Âéis*¹ÈòhÛì­7ÍNýÉ\d-¶Pǵå쾆]ÖÞjŠÎ„'|Ÿøž6,µªq8°N[iÎä{ùy9…q*q¦¶œè:„mä¯ô7˜wð^R+ H#Ø7ZGÛér±E¢½›LÁûXNʺâ‰è"ÚÓEÕ'¸T.§½è¨Ê"µ­d+–0_"Ï’µéùCóq²lp,ux;²O÷i¶Ý'ãJ§+ïe ùµì –—¶¢/±7M&óØSÙcg­˜%YòÉ©FŠÀ~GLpP,TÛ/!+9£SÆP–¯I®Vˆ×vU9HÝ…85•ŒÕ(ÜùxêB4¿‡³á&ÁïpÁ3uJ°€Â8õlÒúƒIòà:u„vÕiÙãŒ7œl·:ùcHAô³Ï$^»cvÖG£4·LÝ¿dÒ+ÜêgèAzQQ&˪îÅîÅîî䬋G pfñ3ØM~ÅR0Ð)‚_¹Ã÷²·x”=Æ(u_ßÀJ±E´ ÍC¿ð£ââ<ý©MBƒÆèCôõä•ê®2à…êÈ+óê˜,Çi»ÉFú;«B7"åÜç¡zš‘f‡;Û¼_É%ˆ0vཨüKéG¼Õ±¼X¨¶’uê¢ÊÆFÃ2Ž$ñ4~'… ™Œ«1‡íT{ugÃ¥ï¤3´ü²–ÏéÍ:¹7’cîto˜û×`!ÿ){2ÜÆ¶Z.uYŽ7+Yê) ¡©¿ˆM2N*Œs^8ùÔ4û©“‡±m첬å< %Û+ä ½¿ÂçÛUƒÏ¬ˆà}ÿ+)£h¥Ê 3]­ÉVBj…€ ­—ùUwÁ,u¢b3õ~ùʵKyøŸ»~ÔK<’Ü?©OÚ+˜M¤÷ ­ç.í«ç>§'nRåÆfVQJ|Wåi õ3h"†Ýè5éxÑŸTVñŠïÎÕ4ROÕ«ZÊ¢ãTaµ‚ Ç4(Iÿ%¿“´7\Å&ÐU®”×HøO}À7˜…V¿“¾ÐûáE­!+ÅšiÔB:ˆM“IÎj‚úðŒÚ9"•À±´éó„5©zÀáJ«è”xᆰŽFíIØ1¶^cÞAªÌ+e‚ÚA*Âdü~^sUW˜$7ª“ê““¤ÞÉ<¡Âp[vÑ·xToÃp¹Up-¤Vò<ÖaÑÐziÍ…Áb‹UgƒGÔ*ùJÍ”‹éÈð­r¾hO™¼z•di¬†él<­"Vk=´›¸›Ö"Õ¨”uEmñCK„œ²ž^+ÈBd9 oÅ<óp.ëÌ”9p1ÕàvÞš’QÖyY–F+Kùw‹ÃeqK˜ä&Ö ‡õû´¿:©ÙìË _ܱQñú2}ŽñSy¼œÜà̲_Ø?¬¾VTÚÒô\þ»ÉfÆ}v€í#\‡Ìût»yn’Wƒ“£·!›´ÕúZ5ƒÊ<°•5'äå(×çé5µ#z;–N«Ó‚lµz,©X»<Ì„pÙ–Éþ¼îÂæ˜—m!kà.;¢‚äGøF?íéÂé]ƒ[dIq:ùLgŽ÷]ØGmiäjc ±Me „'þüA–WDõî³$RC‘7µùxÖ,aaC\«íFzœo•º­ÔxM2“<˜¡æÈéñqFC‚ü*ÿí¢TUW¡œL‘hšƒveùÍmTÅ…KŸ{èlxºš ÙÝk¬fò¢¾I…c¬ZЄ¯…õj,@öÁ:õ§:GÒp¶öz µ±Ì|dŒ7bI+ÚŸ=uÕï$ø(êÑ|ZßàÎ`M'Ê)›„…ùȰ`W’lt¦Ýù<,ŒdÈQM<&[‡¡é ;¨h>”6ßhpBðš´×ê@iò„†°– uI}ÜÊŽâëš=ÀѬ:Î5ç/CȽ©÷›¶W›¯1Õ4´Õ?Ø.â/k ñ”zY6Z3b}Tè‰îTw!둽؇ª¼³:-6…ÆŠ)¢›ÓÎ!…á™<³YXpG`$,ö[V<×h }©YŸÍÔ^#ÂZ9:x’=§mô,ZOsjتðn®(WUéÐn¢¹Ø*Φ_ Su‚9øÿhvs¡±Ý5ÀÕ×\î[¡ )/£0 ¦Ñ벂Ú/ÿVSÕ79D†(ø B5’FòÑêLÒWìš¡N©q¤’JSW¨•±n…1tx*"ÿæ¾ÐÍÐFÇôŸÉ(¬k65nÐF‘#Î{XTG÷oº—U&—œâÎU‘UР×y/s[#Õ=¾Y\ÀÏd VV=¸94Œ e$÷W±f.û'¥=OñÈ7ÖxÙ‡Ô$A3ƒ<ÕâhvO# ³ºÞٛŮÈÜ"ç©Ì›}Oôšúf§©qÁ¡|ÕÏ,©±§N‚zNîb3 èNmñÕsAßo(WO‡}Õ`ÑJFÈp-AŒåîœ$ÉûĈ `æcƒÕjð©¬ê‡lª ’yê1ì£+d_uE{‚Ÿq”vØ£çÑsêC(‡80›Sè)®@¬‚¥°‰e‡Huè¤úª¬j¬³×ú+ôÞÿ4PëêŽÊ/·©µ|8þJ:ÉŠØsc6xŠùõ"»J"EoujÁﬥÇ¡ü¢ƒOF=cõkZ稇á™aé%Ép™W=›Ô¹]¼…TÙFT“ÛÅ.ò¶Y_•OŽp|ª°%‹kú?z_²•ì¥iršŸ…­¸à`Ù†Oÿ$kË›D?ùo`£H–)o©òî¹vSž[þ->¨|¬ÕCþO}·6ÈSXÝàžÈ¨¡f¼iètÚU˜,ÕÄo`ðÜN ™ ”úŠÇ©‡v]E9_È µnЖ~„ÖN²:¨ÊÓOø üigü–_3d5RÚSÒUÑ},&"K ÷ímÆÓ ‘š<ä·x4nbgÉ=:ší$G(Ðmd9þb þO¬©þúzwã";mv%Ý]»éz:sª±ª²x«Ušò ÜÒVÈ˲Œ–[ÄIÌÄI¤‡öŸ]øÌž'ƒþÐròî’ ÒIóx»€¨ÇÓZ§|J^eŸM›‘Þ:”ꯒ‘ÖŠ d« ³H?ú”þF³¿h¹<±ÆSWõØŽlxØ‚¨º|?"ßc-ùT„©‹¤4=–ZÈ_̪«>óR°'¨ƒê¹ÌgÔ²Œù©íÒ׋ý¡ƒ¯á) ÕS§[µ<j7´3÷VïßûŸÌí£öGÊXñŸG`)Ô%™!l æ©›˜,&©$µ‰]cS¦$ „.«t\ Ùé š+Yô.qÚ§×2¥+2¤•Vƒf¥-ý'˜ŸþA&ãG¸F#Õ4U òWuœÍâ°“*À=µyžÝž\‘ûU{ý–Y“ÞðþU10JFŠsöRþ»ü.ŽðÁÜ‹û5ÝÑ9 Åa—ž[Ícïèa¸«?ÎqeÅœ0œÿª7&¢‡ømPʹ¨ö‹ò±£t%f×’H9eœÒhÌVð±lá1$™eõµðvôܤ`õô¦ïð¢<Æ®Ö+?#R;ŸÌžÆBZSíÀ²ØöÂKx§ràyÈ9°*¼Wäu©¿p¨Z ×UNØG{ËáxŸÎä¾¾;«Ó†³M0Ù:ëZã¾é>†_ŒîúÆ@½3i(nÊù>·µ;X$}°ºæÌÄA¬¾Ø\È8›Hgè7¨\|d¹¡ß%z:xqaò†bGÆ*çU°·HŽÖ¶“:l“nš•=©t¹LîÑ%d¯ˆcŒ°P{ƦÑApVµã?í{ί?dy¾Iïÿ²wd©&ŒSá^×ßÌ ñfº§ò†&ãêOò+™ÎŸ¨§ðSŸ‹¦iÕÉØ>ÊZG–Ê)ª 'í°ûF‹“xO²Êé cí嘪¸ÕÉÈÇÚ…M4õûFmí>ÛÍÉ(/6k»ñò»qŒ5j=4SLnuØm™KVÖ‘M™ÏIol¬ªK/TPOx¡T ‹®†Öh†gµ¶A[§÷;N¤Ù±[‹Ô.e1ä]sÎÏãq¦y s¾÷LN ôÏ8ñ3˜Ö?eìË«‹±÷£®yËE,Ò±2#\dûèfÖ‡•!‹°Îâ—ä{µU­'ïTì!»¨§do‹­õ:ò›ÇšÀbe˜åŒArŽç•û‚Ö‡Í0rk5õ0Ú…Å;Çûá# ¯h’ÞK §+CŽ9Î~ÈûTyù—ú¡g&é,¿ûiuã$óó…¢ý6tÊ??iPè@°tê±J¾ð•3 é ¦.މM…'vÑŒÛúRUýI/k -VP[‚¯ä™•…Ò*…þÆ–±V®xïo[=‹Ùzà5ýoý ÜAó“ fâ)¼ŠèÄgÀ ç–‚™Î4œU9ƒY°;yÄþÀ¼$‘m€ZXVìU寎‹‡Ä@Õ\£‡!š%»w±j¸yM_ÂJ-LÅfàW|Í|‚±â¾ÀõâÖ€ªy¯&âí?ú@/îþ×õÃøÕÙ'cŠý&”Û^ŸV9¥TÆt5Kü“^'êp¦¬NDc†/ OQ³p!Ûíkiº¸‹ …õ"Æy+KÂdßA×M³RÆ6os…}R¬±öFç÷øÌÓÞžÃÊe®¢\÷Ã×?Æ8všS ö¨£öY4pŒpŠãøAæâvØ!«¸ŽÂqxÐÌä5d×ãµó¸]¯È’TÆÔvù‚\b¿Ðqª‚òP…¬€æbÈ£.ʬÂoä;„ƒvY§w[øË¥bh1×9}¬^–úXs1XÆÁHÙÔZÖ‘Eä[~›Ÿ—1j‚3™÷Ö~§uh>Õzׯ’9Q+ñ;Y§.Àl\Èc9yJ¦á¿°ú€KM”§ð#¥¦æÈ¼r›L„îh«ïü_öÓy"–ÒYäN¤ÚJ_ÂTòŘ屿úÎ v²…å u¯[ÖVC3^ûw¤ÝøÎ­±ÕÑ ¹²EÇòÊj+ÕÖÒ€Zë~Œmí±4—ü[®'Aõ†úñš$7BV™ìU5ùFÖ–h‰ú,-3{¤zéÓ¨[ú`ˆl«WYœ&b4ßÂkÁ0õÆÞh¢•bÝà²î6zÉÜjÖI61š{îEÝ÷¶×ï³ÝZ©ë|äëÅ8µ•âOøWþÎßÒþÌ©LV Ùb(MX¤º§Ùi¾ó>ÔxàöÉ×a¯"ŠFìðOqI-Þ&wýQP%wDuo¹Pþ´·îήÌz]í¥qš0Ö‘¼Ñ[«²r' Ád˜ýà&ÐEê ¤’×´€^Mƒ¸Àë†èj¶ÙRd’}¬‰âKpuÚ”äx¾W²Ä®'Âx:ˆa F~e¨M" ÁÑ*©­Ö}½£;¶•~’÷}y ½Lu¶«‚¤‰,¬ª«/PÂÕuZU†ðVÕ’%ƒEá#zÉbY¾Ð v5QYÚXß«uÌ„J¼¿°Æ÷ZA멞ƒ¥è=ß\CôÍövò ºK®ÆD±%œcÙyu>m”‘t7fs¶„y ”(>¡tëÌópíÕןÿ×!pÓßóç£4«‚×å™—ÈbXé¤+!ÞÓQ¼UjßrO/hf_áÅøã75p)z_ÿUocì£ÿcFfºŒÄZš¬‹ùH(%Oá)u=ðX®±‹ÖžáOÁ(/Äòýújð¨•ÚùwFlC¾©tÕ̵ÙhñŽÓ·ðëV)8:ä¿xa¶6¥ö¶·eæÛÆ×úhSך³[,ŠmѹF]¤_dÁéTƒ“²ô%õiuY…ãô:Þèâþų×ý—¯‰vAä™ta~_Ø#ŸÉ(©÷Ã8NgžO<Þi³QìÅ3¡Ÿl‘žjþ&vÊåô_«šÌª –€ÇñŒ–Jêi?Yv6”%@'ç#mÉAŸ_ÜSwÕpC-ü¬•¤åÉecqóç|­ãøÖx£®pïÞˆÖØ—-ÄíøæÁCu^¶ m˜£ÐòéŸà?ò˜.Q7Ô%Ú“Ô åÉf|+g©ÁÊæu¡¿L–ý0‹Z€}¡aA¨åh~g4!\Þƒd¸šq2‹Ój TÏqÜ"}±ù‹nDFs0$ !·þ]‹vJáM95D0ˆÏøìõõÎ$j±fìþŠñîZ3úEÏgnÕOû:£à¾“ÍI‹9»ä ÖÐYlU™*×ÁBßîˆ}Ñgy×Ùž®cßõžyî½îÓ®Úy6äG®Nh¥1‹õ†ˆö¯*¯xËÓå?bTF^È,7Ѭd…‘Ù¨Eþdõ\ûØt™ ƒû¡t™¾ ý”a!4£õœ¡*NK²Š†N7ÕPõ¡T7h‹s° Ú²> ’fÒÀ ü Nжl®Ê¤ýKÇŠþ4>9¿µé3QF-Å^â ?OSù{$œ§En(/Z ¡wt®ð$SÆtgX¨¨~×­¹Ò"PcŠ)6ñ›ª•ŠàA57CΞÂÃD];UfUÄK·Ï5ϵPÏÆ®ºw2‹ñ¥ZÃo‘žÐE=RÕÅM5^ìTsUõPdQa9üΖAg¸AöI!u­“Sˆw4þ Ò1ze6ŠÏè2ÒŸ¼Œ,‹ HŠ^̱8¦¾ý8èOÌe•¶¤· öOWbÿLͨ3‘ѹÜîÚ¢ô¹é䚌l¡yìˆH…újuK•ÓÈ9òBüß UNcçèNÔhmØlve%èò2˱¸^•¢†]@N ŵªøÃ›C–⧃ßÍÒìWºÉX鉇V#þ¯«°ë*m$ö3qr“ý¤ Ì·Âð%[,¦(ÁêÙEµö`k%ÿ…×¢qÑÊk—=·ÍèY-Å•Ä~S•UKùƒÍè³”W´¥Cõ…Zjð˜oühdí Øb:°‡:e_^P_ Þ²õPZìqÐX}Â"dAè¥Ê‘€ÜDg’7úbzûÒj,Yûô­Þ¿øzñÖž"BX ªC%ReÉ>õt£ªv“ÅáHZBeÄC/³Ñäo-Ë@sø àÅ$z´>ž~ª­Ø ¾‰Y•¢$Íëø±8ÎSÓ°˜Ü…wÕE5ÇÎP#T5ïÓ7Æï¬ ]EMW-2ƒ®¾¤páÏbµ“œm3Ϙŵ=®ÎbXÚÄ$bÐg‰»¤±"cŽB;«9°"Nš¿¾ù—óZ?ä4|òíaâƒm_³þl›øš’YÔ2¾ZLUԊП⌃´mDVïf»-«-®Ð}?²ÈŽnã¤ÍÛÌpY]€qœï$€Ç´­4 ‘ÇÿS³dÈà7K¶IEND®B`‚vips-8.2.2/test/images/IMG_4618.jpg0000664000175000017500000054067312530402247013471 00000000000000ÿØÿáäExifMM*  ªÊÐäì(1ô2<‡i&  CanonCanon PowerShot S90´´QuickTime 7.72011:10:31 22:41:23Mac OS X 10.5.8‚𠂍ˆ'è0220°Ä‘‘Ø’ à’è’ ð’ø’’ ’ ’|ò’† ú 0100  @  °¢ ¢ ¢¢£¤¤¤¤ ¤ G 2011:10:31 18:34:572011:10:31 18:34:57 µ “ Wäè0(ˆ"˜Üè*w   «@r&0ìLTT Et "Ðþ #ž '¦ (° Ð-.À `ÿÿèC ÿÿÿäWpè“Àÿÿ@@ÿÿÿÿÿÿdäW+àD ãÿµ  žº ýÿúIMG:PowerShot S90 JPEGFirmware Version 1.01Ú›?/`Á] ØÿÿÿÅÿÿÿÐÿÿÿõÿÿÿ®¨ÿÿÿÐÿÿÿÐÿÿÿ/Ú~ÐÿÿÿÐÿÿÿÕ ðÿÿêŽê ðÿÿ„ò„|É|Áà¨ÿÿÿ»PüÿÿÿÀÿaÜÍÌÛÔÈÚÖÌØÇ<¬Ò¾¤{ %ÿÿ }Y{` @° ddÿ³ÿ³ÿ99³ÿ³ÿ``9`îÿõÿŽæÿ UU Š €à€ ÿÿ‡¾XŠUÜG]jыВÉII*Þ7ª$)¿€Û@@ t |( „ X´´ÿØÿàJFIFHHÿþ AppleMark ÿÛ„   % #!,!#'(***.1-)1%)*(  (((((((((((((((((((((((((((((((((((((((((((((((((((ÿÄ¢  }!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÀx "ÿÚ ?ùÒ’Œ6ÒRѲ—e ųmã9 ÑNÅb˜ F(┚@&(ÇÏNÔdÐRf”Ó{ÓiÁ±Ú›Ž)ǽ<ši”´b€E)4”°p;RéÞšN´ŠÜFh ò(3J Èö €(íï@ïž´™ÍN–ÎøíŸZ²šc± Iô.Q[šÆI슜"ôREu¿ðˆ_[éqê-n<‡;w>_­u~øU}¨J“ê8·°òĦ\€1éÏOzà­™aéEÊRV=8e5þÞž§“ù2á4Öu¯a“ÂÚ/ˆ|Eoáý~ˈÛ.¤BDî9çW9âÿ†šç…IkËo2Û8[ˆ¾d?_OƦŽgF¤”%îÉê“ßúò#*-"îÿ»sÏ%XžÜÇ’ʠȯM;ž<¢âìŤŒŠ3L‘Ô”f—#Ò "›O$iÁïL 2zFÆ›éFi 7{QÏ¥¥¦ Ç©«–öàÄsïÚ«D»ä°æºB›R¶»»Aû»4ã×&°­V4ãy3»‡•yòÅjhøcKÔM}mg­^fÙT’ÊxÈë ¶ñFPÿjèPËo7´k´¯Ó9è–>]GK²ñ'†õXl¦³·L'Ç’UG9ôüx®Çúv¢¨Óê:¦•#©[ÙH¿7¾Ñ_)MΓn)|7ºó$ƒD¾ÔtKzÑ= ¾Ðl „£mî{MÕuMCÇ…5«{(Pí[&Èã_|ýãïX:GŽ/t êºÇ© äÿ«QØúð? ŸÁzŸ‡´ùÞ]kJ—Ra)]‹žû½k¢Xjæ©%wîÙ'§ÏóÜšxˆÔ•šOóéæµ½ÍÝfþHo¬u=!J¦Œ‘(¹+ÄóänǨë^Üþ Ò5?gW‡ì¶ÒŶxn#<1þ1óg¶:×ø’ÂûÆ:Mµþ`ºvÒ[ÛZùåf8ÞqÇ?îüa6ƒ›eá›Ûyõ Y#U²xp¾iÇL~µá׌jÓ„ZÕ^úê—ùõò1Æ(Õ%gÍw{;´–÷ü=˜*Z6;4„ÒQšd‹šJ1E-iwPiJnê7P5uþšÚc=ÄjÆtÄnz††¸Õ89«pÎñ²º1VSAéX×¥í âz WÕ«)Úë¯¡ïŸ üg¨ˆ§±Â»Ú.ÔËZòŸX]éú¬ðß)Kœ‰$SÔ¹÷æ­ü=Õ¿ˆ”ÈäÏ~¿Ò»¿‰F‡‡.õ´îÖnîãuÞ€. (ü‰5ó‘QÁcœTt¶]Ëséê8âp¾Ú+W»ôïò8?ÂGPðåþ»£[ÃInùX—±ëT¬¬í¤Ó//Mò¤°±_™É`2Lc&±mõ[‹hg·Y•:íuõÁÍM.mÚãzˆúuåÒ½gQ_š]tôìy´êÓ“½8_M|Ÿ×ð:mi|>t½:mÏöÙÔý®)NDL0_by_jõ¿‚¬Ö~ÕîÎí²]*€;á?úõÁüЬu^}GUͳ²„‡ø¤n~'ð®çRñ>‘àÝ*k=|›y%iVä–=qíÅ|ÖeQÍ<4äîµülz0¥*ðÚÛ_¢µï¹Çx®ýl|Ws2|«wfêãßú\gŒgɰ¶'›{DSõÅ^½¿mbùµ­IDV±ÿ«¡—zûšäõ]BKû©n%9i'ÛÚ½Œ–Qþê××þ¼ËaåæÛÓM~õ¡“prõiìw14˜î£áÞ®ãh¥ÛïI´ÓRâ›N(:(¢˜‚”R Z*Dlpi”P4ìZŽVƒ) Ž„V”z¤·SÀoæ’x¡9ÚìOqøÖ2ÉŽ ËXYZ Zs¬¦&XYZ (W¸3XYZ óRÏsf32 BÞÿÿó&’ý‘ÿÿû¢ÿÿý£ÜÀlcurv3mluc enUS$žesES,LdaDK4ÚdeDE,˜fiFI(ÄfrFU<ÂitIT,rnlNL$noNO xptBR(JsvSE*ìjaJPkoKR2zhTW2zhCNÄKameran RGB-profiiliRGB-profil för Kamera0«0á0é RGB 0×0í0Õ0¡0¤0ëexOMvøj_ RGB ‚r_icÏðPerfil RGB para CámaraRGB-kameraprofilRGB-Profil für Kamerasvøg: RGB cÏðe‡NöRGB-beskrivelse til KameraRGB-profiel CameraÎtºT·| RGB Õ¸\Ó Ç|Perfil RGB de CâmeraProfilo RGB FotocameraCamera RGB ProfileProfil RVB de l appareil-phototextCopyright 2003 Apple Computer Inc., all rights reserved.descCamera RGB ProfileCamera RGB ProfileÿÚ ?þ <´‹ríÉÏSORÊÏæ¸éSsCF)Ê6òÙäŽÔ— »”|‡;j ½Ê@‡\†º’=ÿ*BÃi y8?ʘˆ€'§ïz•Wi*;Ð aðüœ÷ª9·®Ñ’;Ž”„H¡Þ>˜#"šjœ“·œŸÒ€jŸ'ž<ý*Fe–êG8=)Žã@0F@Æx¥)Ã&C:îh»Á‘¸uçŠP€yy<çŽhR[$àŒ~ÕnsŽ”€z2üÈÇ<Ó~\mPH-üC’)Y¡3 Ü ävî>•)eásž¾ôü…},DDh¸ÚAFù°lzR2î?/ÝñšŒ+.à1»?­1ÏùÍLÛ8r3ßÓ­ ÚÇµ la\®A^‹ýiIÈè2;ûP!@ÁÚ¬A'Œö¥rZPO\g¡¦;uQH-· 1Ž4¬X’çïؤt+)ÃÛ<ŠŸ ¬äãø½(ÐEyC’¬GʼSOGn<§=Í?cNsœ’8¤NsósßžŸJqƒæù—Œsõ¨‹ÜÀã' ßZŸÆ ä‚FGçSÄ£iÈbzö¤Á»ê íÉ£bIÆ>èÎ΢0ç"šIq*1ž˜8Ñm†ÕŠ’#2 .ç­Ew…ÁÆ?:b-Vgfp}~´ß)ÔœŽ\ûЕ“j㑜çéHÙq¹ uçõ  ùfÉèsÇ^úÕ¥ÀŒ}ïjL*ë´³p͆õÅ. â5ì:PŸ@ªO}£ž ÿ8¨Á “ŽAÆ0x¦¤,ŠËŒ©äÿúê7UM¸l›}©s.cÎÞ%½) Ò¬*„æ¿…K~6ŒHÍ4F _$¿~)TFá•<ŸãEÀq9Ú#B_4í€rà éžüzS+v#¢.rAŒ¹ÿŒe¸ Èçžß… èBÇvÖeù»‘åQMå—VŒ;žÿáNâ%_˜õïŒSKFI|ç} å –ç¨u§…˜øíÞ€Êɰ‚sœáJ@Û‹’2qŸþµ o“ œç8ÇANâ@£ dŠaqÁÐþí#tÍ1Ø!¨úã‘@ •¸ÆÑÉ'µ1Õ²3Û¡õ ¦8'®zžÔ¼HÉëÒôpIaëéQùC3dç©éIs±n$89à ”„ÔŽ:SVÜv`œõô§¨v6Kç¢ô DS´à}LSÐ.ÌÁõ4 %8D$Ž~Ξ7ã$Žø CwsƒÖ¤pN0zcµ,HJÌޤR¾C íÇ®?¥Næ|ú qDFCœsÇJma©…:åI±¶ §9äÿZFS”}y¡•x$°Ç½@ v„Æ9ëïRÆ0²]Ǹ8ǽFõeü_jdj ¯9éÞ€Ž-•ôõªÒ¬’36>bqÛ€%Xùå¾b1éÍI™ÃÓŽÔ ‚ ™ÁèG¯­&ã p:Z™X9&B9ã€x¨Ÿ‚¯Nã õ¥Ô…EU²Þž¢«>FY¸çöi”öD¡ƒà„rGSŠRqÆsŽÄÒ$hÈ\¢ gŸJ@ÉKìA¦rÀ“±¸je?Ê$ü*{îùA9QП⦂¸ 7Í×h€S.ÇÈ€Ê<Æ|„õéL ”åL``ŽÇJ9Ú¬}x#šÙP}™ÓÊÁ 3Žçñª±ÅçH›jãŽ*úDQ¬… Û›éíWŨæÂ[³&å°ãrsÐ vªî0À„ÚÙé·­RÜhwRÊåcØô§4Kczdç?Z[1Kjvù‹žz€*–ÀKÙQÚ©=ÕÅoâÃg·Ò˜íº0e‡ëOä  ‰:ž:R–ec¿¡§êH˜ÜÝ?AL#$‘ÓëBÜ®ƒvçsß4F6c#‘Cdb¹Ær•3 ÉÏzz"årC ½M†Í鎴ºŒRNOnԘܸ'#>”„"ªFx Š@Ç€:öÿõÕ-Æíˆ€oÎíÕݼí}Äœœ)nhÒ[ Q³¹W•ôðÊ ž<ÁØw DjNãœàð1ȧ.ðä•ò¦4@•Nâ0sÒ” Ÿ(à‘ÔÑÔmuÎTg¹¥íóÂäçŽßZkÚ:ªõü~¦šÙp˜pGQèÒ à¼÷ȧ‚ˆ>SëøVCÐ*¢nz·¿¥”¼“Ó=)j9ÅQ¹l}:S‹‡DpjlW9T)œ!ò÷çÖ˜‰—ͪ ¨ãšR9-ô¤>„L ìnÎz惷‚ÜN¦!ª2ÙVÉcÖ‚‰b?*PWîJtõǾ)ÇJ¦pÇŸ¥39Rs†Ï$ö¦a“ï‚F=T»p;cè>´õùH  ûú© +²&ꬤ€ ã4¤ÄFÜãžÔÄYcÉ7ðóÖ«¬gƒóÏozLçþƤJ—;zý(è[væçæý}©®  žIëè)‘³„ä ’jPÆF,ê@ÎF rA÷Îz{UVfÃî\‚}h!Ëdí;@ã=)ÂE%K ޹©€á)ÎýÙè3Ö£‘Ë9B£nnåBÙQŒ÷¦ôØxÁ9Ç¥¹*±*T·ù½…DÍ‚«‘ÇÖM›Ýoþ´±2‡Ü9#òaN2åG<Ô¾D{]·`“À=sK`#SÒ0¸¦?Ÿõ¦ùŒŸºR}3ƒ@˜‘øõªð½b¥]›è:PÐÓ°»™@Un;=}iâsÏ‡™Ë½Î21éþ}j8G˜³‡ÇAB)jõçæH.ÎG\ûÔöó:Æ['“ÛÚ€Ù‘Ï,rFÛˆós‘´tõQݤ²7 íBPAywr8ã½ d(#1õç­6AŸF„džŒzÕ)í²¡âa’2TsƒŠ6bô+¶8ÜùïMáy/’J{‰ŒVPp^8Í/@C.i½È¬>€àŽ)$WrÐ~”-ØymqÇP:úÐÏÈ?ÃÇAU #*î3ÇÀÝ8Þ"•º¹ vЛU‹`jBÃŒž½³K0þ P‡ËÓŒzÓ¶»¸äût§}lÓ6~l`îì=*5(§rgÜô5>¦¬G`Çæ'fFp3ëNxðˆWéɤ!…° ¯Ý=0zÔ˜–$sšˆ¸;p§=ÿ iÜp¡~¼Pä.ÊŹ#â i2ÛxÀ8ÿõÐ"¡Gž¼ŸzŸ’ŒI8Æi1‘’ª:œ°ëLAóg?ýz"€ÙÀàrG¥O"(W= ¡€¨ª8rC`ðSR 3€ /=©2´+8ÜÙ$gNxHY©ã8Ñ6WtˆUHö'ƒN‘‚„±ÈÏNh¸×q ¥Ç žƒŽ)ë&IÂdFMC’Wêvçû¼ÿži¤ÈZ1’>˜Ç4y•Ñ;Ø;@äçð§¿Âƒ<M1011‘¶ž cwcQÇm9$‘ÈÀâ„%H›Y¹çµDc†_¨Î}*E±"íÊíûÎü)|¤T’õªÐ{‘®ˆ-“ïý=)Å#p¬Ã»ò¤·¸€°Ê€à“÷¨iN3ëƒÐ”ì>‚‚­&üã)ˆ¸r@ÊtÀ 46þxȹ¡‚„p äŸS@† `‚qžØ«K pX^µ,nWhàƒÔµ^ù…@àg§?¥Ø!]ÂqÔÔgÍ,ÅOàôç4ï y†A×>µ(vSƒŒÈâ˜ö 38vÏNÝ9¥&5à¼c€³ê=ÈÂùŠSÜÀÉÛð¥}l‘QÁÉ=x©A´È:Lã°£Ì=GÂmøÓœ –H#`Ãc®G9¡…•È Q( ²c•8Å@1'i<3ZWÅp§žJ…Ô‚‹¸Ü;ô§Ðly‰þCÐ9¥L°¼ äòHïõ¤öµ°‘ÚQ·îú´-¹V8'Ž:tüéô 1íÉÆy=(6ù9ǹ¦;!²DÁ•w ¹Í@£æ (ÃÈ?CHV»çt‚4ïœç,˳—'šc³$Db¸þ,ðza„‚sÔ_ΤV"Ènÿž)̧¹#œuª‚a[*0ç§zEÂï Oôµƒ•c–  ãN ´šEàc#$vëQ³†,ù{sLîtÉÇŽ*»²áÀÁ#Ö’]€bH˜ápÊw M«QëO¨T)´ãœo­Ve€CÔƒúÐáø†:S@|«‘òý(:²£` SÅFp2 ëí@\Q¹Èb¿?P)ñ‚‘üìúr?*C,!)å6@õž•”—ÁÆIz€Ì©ù•ŽI玘ª²34äb˜ ÿy’00Ò’IpNÒHÏZ²öîÚ?œÔÉ+ùŒ…ÉÎ)X‰Sp€qŸjŸÏ7màgÇSíSa܉\“æÁ'5é‡!³þM5®â&ÎQSÓÓQȫž€ûÑ`ØŸÌBN\=©Ï9$þd¯9¡ eˆ¨Ü¤çëJBm 9Çn 0"–$(Š0O^>µQ£`s€@ãëB`W9?/¥9wï“TìCÈùAÏ…HNæ|ž€­!>Þ õïL(yp=êÖÀ"’ >”’)ÚEtvUäóÐÒ€– qއµ+ ¸r ÏÀ©@$ ¤œ çïÜ´åF¿µ6AÏ9¡y¸ 'ƒÜçQª¬ÛPjǨ;ØíÊ‘œñJ¡J‚0;@…(cUÝÀ#Šc£ÉR98$rh)ì! †ÞG¦8<ÓXF«½‡#½nõO›<ç84‚3’Àg?Ãþ4=¼‹!Êjœ«ýæç)×d`OqŒãž=©B®0§¯EaL÷¤³(PùÆsMA¹÷9ç¨ÇcÒØ»÷9郜šk¸Ê‘·¶{Qи÷–^sëè*Ä“4Ê¡Wzz º±_sm 0ßÔsÚŸ“#À2{þT‰!W“ÉäóI!]ź½M67aYÊ‘?‰¥&ÈËœƒ¶itÉ•ã©Çn´(e#¨=¦1ÂS.\ŽÝ{Ó ˜|œãÛ?çÒ€¸Ö}¹ßƒïŽþ”™Œ‚{zÓî9ŸÌÉ*sÜñÅG’ |ÜÖ€%V@ùb éª,Ÿ¾#}sI3¹!›vj08…é€òÛÑz3Óó©C•ÛÈã¨ó@ #Û' €¶wÇæÍ-@x\€zŒô©JïÃ)9î ]ˆTáÎ ¥ˆ0ËDÇ9Ï®(ï7"Fgϱ§}þ@¿ÒŽƒèLÌX|džý±Þ¡$&~^}sI1ߨÐáÏÉN?ÎjBP ŽðõÖž¢nà2@ÚÙüR/Þ!³¼úQæ6Š¿(æCÔö4âz å}°3@­mƇ XvàŒT¨KÆp z™£QY¢XÝÄpsÇÔ†U'rc#ŒÆ)5©Iô#c’ýäŠhòàæšõ%HÉå• •#·ùþ”¢N ’s»'qëþy¥Ô/­Ç5Ç•µ@^¸$ƒÉ¨šIUö±À>ƒ¨¦D’„Ùò1$ºzTÔÉ0;äñŸéE„÷,ƒæݹÁ\qüªTøypåOzˆ˜Œ»r:ñŠrîfaÞÁ'M+é¨Û$€·ÎAã?ãO1å¤vOLã zR&Í‘¸%Õã=½1Ió.>SÈã­0d¦3å¡8E¿V>qôª1Eîãß½0åA^1Ðv¤2¿—–U¿Ï¥ Œ”ËsÏ­0ñÇò*;'œýi$èO˜€9O¥YI`o ë×ÄOæ–“†9¨Yß ÉëÇJÅÛü-Ï×±©˜¯–¹ãŠn0 üJ±‘œõfB¾Çs@³üÆGj|"‰·,yà¦3Ç $w§Ð™U†é ý8¦ aÆG¾$„(Á‹HƒŸóš8‘@“jŸcÓ×Þ˜€JíÏP§oZž‘Ás(Ƽ2? <ÇiIa €É?gŒVdд.Ê0ç#5)«+”„ˆ5'sÐñõ¥i6ß+†\ç8>¸â§Ü§¥°ÌÚ7`±Áút¥•¶¶À ¦1ÁýhB#^2½ ïN1ÅHÃ{ði€€%íž;SÞGfýïZCØDaÆO8çò¢AµÇËòŒdtâßA>L·99°¤q´mÀÝ×­2DŒ­¥=O– (Î@üþ4˜ lÆì·RàP ¶w7>ž´0$ò˜ 0Þ;úÔ`–ßódŽãŠC%D?0Áé²~ô(Qߎiu ,j îO9¥Qå•ß÷ýÍSvB?1K°à’=±ôíWÊ•„ª¶@9Ú;Rè fVÀ(§ôn{ŠHîB°ÊüßÏüiÅ¢ì6©Vv71ü¬±Gô £&ào”ùkÀãn)¸Qïb8çÓí¢'®¤r6Tœ:qJ¹`D 1ä_¥1u!m˜*™Áëíí@ÜYˆÀ c>Ô0h‚Haœî÷£iU+žAÆsÒ˜ˆ\ yÕPÌHçž Ðv“½;ƒÐPwã¶3U ˆÁ,“׊»!•~l¿ýzLdäI!ñÓ¨ÁG §$t>´†W\dîœãõ]Ç#ÿÕLó# 9Í *…b[“ëÜT‘4¥~P?™¦ÃsÌFO{T2 ³ãŠ@3Ê`tïÏÒœ#iTžG¨Àg”È0ü)b,T¦üÙ‡_J°®êbqŽéNO,¶K¹É P¥vB¾Q{c¡¤˜ ‘ x Ε­¨þÉYTìG÷N*'‹~3ëÅß,FCŒíÏ#±«1:üÌÎy0!™îÁÆ?»Ò YŠp™ÚF7uÍ °NX˜Óµ @P¶O\v¥kRå2AÚIëœtªŠÛÙÜt5HLa9Éðÿ p }©ì@ã°•äÓ6•˜ûõ¤€n{Ï¥F0Oâ«Ô ˆ zúRd2xÇCK^ O„ÓYÆ=y y?¥)°àõç¥4’püˆW=O^¿ZPªÜ`àÔ3V*¾Ü19ö=º‘OiÃóäãÖ€NÀ$ߨ<õú „JÁÀ`§ùüéXÃ^`ª8ïǦj&•W=8ÿxÐt.fsæÀã#Þ#°p«ŸSž£½ã(  1Ç¡íõ¨Zåã‚{sÒš@DÏ là`òGaCK¹†GÍë@‘Ûpqüê?˜¨l¾§µwè5ºƒ‘ÉõÅ8¼…G<úŸjb™ÎrÔÿŸ'œw^iHo]ø_N¦Æ äÊ>^Ø8üj<€¯lP|¡€ÏñÖšW ƒò¨ç`š,Èæì¼õês· ºvÎ8R?>iŒ…UF~nù=i®àÄeŽ8 C»€cAƒúþu:d¦dAÇLu4 Ì¥·*õàóüéV&#lgŒ@íK`·aòBÌÃoê9Z–;fHÁ1Äq“ÓëEúL®-X1\dç$c­^T…P&½zæ“Ôi” *Ô¨þb³Þ7RLx+Ž«žsB¨ø·*¾Ó…ïÇôªÄ¸RʼnCÀ¦»ˆ–/ð8sÎj»‹˜äVç=Aö¥£`ïd˱eUg‰Œ¹çŠ´£%]@\òG_aFÃrœÌpŽxÏ_Ãô¨H* >vîàþ½¹±èñƒ(Àä:û~¢&c"õ=©l;èK¸Äd€F_½BÒ+3ŒãpçØP*\ÆÈÈ«ÐtçS7ò|Ϲߊ¥±.÷¸Æ]ÁŽà©þ•l7sŽç8Ȧ náÁcžÞ´¸Œ)FâqÍ#tRYs“Çÿ®ª¼{Yˆ8n(ÜÀûßÝõ4 ž®~_Êž› Qc'{ùSrÜÃŽ½¨)9Ã/÷¥YÝ[ŽN88ÀÅ!­„|6IÀoéRDŽQÀôíÍÈŽï0ä`SÔSÙvªƒ¦ýt†7 ðëÈ=OZ³kòÎGäšo`ÜîÚGËüªÌ2s”Ï&’a>ÿ¼ {ãéNM»ϺqŸlqE€•÷IL܃þsMòÉ`JäñÔqïHvhr®öuTÈÇOJ¯"’€Äs÷…PBv¾ÞsŸ›¿5u™P§§?} ì|èòÍžA=ê8ç#º¼ÒpBŽO8ö¨’0¶}Ò}h8Æc¦Ò¡x GÝ4X„ |Ëž ìÒVÀëÇAL »ŒÑÉóüÀwãœè2§oÊ:æ„)lEÉIàóÓ¥;ž„ñôëT@™¨NG\š{JH' c“ïE¯¸ •þèëJÊ£9éGP9^ý}zÐã¦âqž Q³HfÚ*¦}Õ8nøÆ(ºÚÀ P;ýiç’‘ôïTª8à2œOóÒŸ#0Ç:T²îC¹ÙB€ ¯jjUù”ç=HǪ¹³Æzgõ5]Ø»''£§ãJs„$28 k¹!”nàç}J©û°[ÌÎ vÔ£@p¸ã@¦p¬ÜŽxã© C˜’ã*1ž½À¨æ¸Ú ¦=sK@@ YAÜxôø‚€CqÏLÐÀ‰ô‘IÆõ^Oz: « 'v9Ú½»Ór0 9¹§ÔC\¦Õ?)=‡Jh_Þ+zuëÅL§*~n´Ç†å<œt¥`±™ÔãM1CnU KœŸäÓ¬=#fó ÄH>†¤Ò¹Ë!°9äRº4±L˜$ôïùÕm³#2í‘(¹Lo”ÌC B:tˆQ»R2±$JvåHÈãëùÓ$S“¸`ã$¯Ni-XíØ‰[—þèéV-ŸËᘌr=i±ljFë³s(ç±8#58¸“<±úÔ²Åßjê¬O•L…;4™+Ðcµf’ÞcÆOoΡ”íV*V9éþqVEÉá%œ«&ñ©,À9êÿÕŠ[v+’e9 ò@âÒ´˜fÊÜúö¥æ»7-¬ÞEQgúŽùª÷ÖSÚ¶æLÎO^?›«Ø·k”¾l—>Ø^ô´¹VNØïTEô#ùžs´àѪxå/´|¢?âéGQŒ¢Ú DòÞ•M®ä°àûæ‚ú*²â@xÏOΡÉI~ezdŒóGÌ›ŽòÁRþhÀÎF:U"WdžÔÐ1ƒ+•Vãv3NS‚êIÛÏç¥1/ô>ýC¿çúP~Yy7äúúcµZ0ÀR9©4ï²È’e¾÷§Ý¦”äƒvPHÅJxç÷4Îó=h¾^À¹aëÇSR^¥†1¥&„¶íÌp£¯ÿZ‘•c|+ääèÍÌ#qÚy܆W$7Ó¯øRL܇rž¸ÉíNeÙÏ÷§äö“nA8çƒÅ#³aAO”Ù§½¬§·g'×½><©Ë).ÿœ 8ïžÜõÙFõUÁ8éÏLQf>ƒ6‘!|Zy‰Gä÷±ÔÓ¸‰ ª„.Ù#•ÇOÆ¢\|Ç‚1Eî§h ¨ÏNO9¦lÛ€çæ4ñ…MŸöïJv’HËzu_Z,?0Bc°ì9©6pÏ·i@äP‡}uù]pzôÅ9yp '&‰XRùÈœg¥EÛ/úÈ›'‘Û%lÄ)Ø^OqÈúÕvÉ+±yoSÞ«¥Ù¡~Ú|¶Œ®qÀíƒK<Ã1¦@_»Ž@£d&îOöƒm bÝ=ñUΪÌ>êã¨íJ×À^¬£(' ÇZ¨ê!“7ÿþª,-õe–ÚcV‰pØéïUƒm!‰Î8Å ɰɷsa[î‘Ô•£2C˜‡bx9ëÒšÑè5¡uddÏ–ôÇ_NqVR (â<»dïƒI±èÌÉ.£S³—9Gjaƒ£ lÚ1Íê&Ëq]A&íÉ’¾ô$bÚáÜ»3šL7—µ°§¥1Xe¹ `õÏZsp̨3ƒÚ‡Ø‹*œ¬ÇCŽi±¢îr@=½h¸Xé4‹mæG+…fÇÞéŸÎ­kw0Ïiþùrq»¯­bÓçº7R\–8ãÌÏœ ¥K¹Hó‹gŸºAæµf ä4ƒœ.0íI2yGŽ õÍPôZ‰æ„w*GçþqJîˆp _@sÒ¶þÕĆŸJ´Ù,h›Ó¯®zÔ¢Mãnì¶iÙ;žW<*”åqÞSÔÔhå?)BO¥@>^ äãô©]€BT·‚GÁž¸ãô5KÌ Wo>ž”/ÈüŒç×½ X†¾Â1!b[¹â”$L ‚yõ¨.Åsm—{ûT‘E‚Äž‡½Jâ°!‚…÷ÊŽ3ÊLnÉàñÅA½Ë26°=yçšFù…ŠÿõÅ!Èç @ÎÐ3ü©Ä‡.=ò1B­*4k¶ÝБɨ‹1ØàO—¨ ¹! Ù.qHÉü*©³#“ÐQè.BîÚÛÏcØSËå¸È=:v¡ÜDm±¿tŠrx$œ~u I#1+¨ÛœŽ™¥ê;\˜Ñ÷<¸þté N „ g8£ [Q­(*ª®O>µT«’AfÙëžÃÖ’ Ù)ùÜTŒAÅG‹³ qÓL°Ø¦b3ÎOÆy1 é‰f<ôÀ¡‚lhq&0êíâ¤1U[o||ÃúQ² 29-$G# ÇúSR#’Áˆ' &‹…‚A&ÃŽ[ó¥ò§UPã1Τ@ÞZpÍ–ëƒÛüúPˆÎÄ€sü5L –Ùqœ÷Vb´fÉÙ™ã§JM–•‰d°`»ò¡;ç€+6KišP-²sÈ#(M‰¢f¶;Bºmã÷©ü¦…Äe$ç½/ ± Ì$Èoà¯CTåfQò #ü*–Ám!É(Ê®pþµ{{º®üïÛŒzv£­Ák©Q̈ùsƒ¦j`ÙŠ=êIþï@ºÅy!ÀíÖ§Ó…½›Ì×,JóÓ4>ÃK©áVžF‡îp3œg½g½)é6Ë‘—Ži=CЈƙáÈ?xT¸a(a×ã®iÜD~ar䃻’FqA ̬Èãš4¹MßQòÂÊÀ&á:ŽiºùÛêi°¶ãeÀÊõ$ö÷§;"GÔd>~^ô’–*ÜÌ£…\TÐÜLƒƒÒ•´i1·ƒ¹¹>‚¥‘âŽÒJŽ Ò)lgJÃ;c#‘Ï) a³råSÏ5H’U(§ó Á‰â‹–µDqþ«ªç¡þ´ü"¹@Äœ` `¼ÄÆòeïÒ™Ÿ=@U׎øT‹]†"¨}’“Œœšs¦6’NzñÞ˜­¥Ê̇ d8äu¨Ñ9C¸•9Å1¬¤–÷©ãxÕN–ížqï@‚±võýk:Eä’nã4“³<‘´óÓð© -ÏQíLEÈØ:Ÿ/©îiZ&,02q‚iu+ù,›‚`’{AŠ—zçu¦Wžxçš²Û$`äpE+€ÀNÖ$ð?LŸÖ©HªxßœþzSƒiAÆy¨ÛÃü)ú ²O”–ù‡¨ÿ?Zi y<àâ%~ ˆ íéî)Åš">|瓃֑F¼c1ÿ–\Ù«1²3#œŒ“SÝŽÅw;K2 ÿ{úQ¹_r¸O^9§íHØÿ/r¿Ê—¨ô°¦@à* ç¡Ï^j2Ž™ĨéMl.K圩L·³ €>µQ#3~ôëÀ¤„.$Ý’WiãúQ,arOSÓ&ʵÐÕE}¤që“×üjùб°íÎ†Ž–E` rݽ=¿Jh qÇøQÐNö,%ŒªVS1àájàµP›¼å Üu9©¸%mÊN’—Ûòä¼1P´j¸Î6î=óôªè¹$8@Ä®GAÒµ¯­–ÞêhlgûD¶Ô˜)A õ yKÜ#b›@aA,ªrFzòô§ý¥Påþ^½~jbWŽŠŽw0ïÅ@bˆºá€*>ôúûeˆ>ƒÇLž*¤÷ ÈBŒãŸð£v&ÃdNÎ7‘ž\VòbØ€nÆIÇéCèY¶“ÏRcQc‘ëM•¥·_0dg“Ôt£B†h)ù'N0@Áãò¦D$yIƒm ÿ*@E:RåˆîäðùþTǸŒ c/Ì~R:d¥z"K‹˜Í°Ø0ì@ÎzUao¹™úqÛšk`ÜjÅEvó&sø{Õ–™Š¦b0;Q¸¶ES Ü\ ¡ê}O´gs€ ž ì(»©i­°±€ÿ8È#üÿžk&åH|09Æ{õ§q½r#óƒ8èzŠ`“šU$€O™%ˆU~»:ö©î$ûĆëÇ¿™]C+4`nóÛ𨌎ì@ žü[B'Þ6îÈ;¯Ò™ã·xªH›Ïj!®3Áä{T-¹¶``ã'Rhl³ob×,«#sÏÍçRÍc ”ª1l8À-öS8¨Á夅Șïì:š¤.Å÷)"  ´ŽCsÏ·5U‰~¬yÀƒÍ1ÈaÚW ¹ãƒQË| N~í"Jóe@AQŽ;Ѳ6 c#Ær)u$!NIçéS¶í)!ê|R¶…-™X¢ýå\޽ù¥‘Xà1éÓ4…Ðvw´¸¾µ K’wòð4!ê@a.üŽzÔŠñ;¡p@cŒöj‚‡p÷íI½UhÇL´ºà˜@K¦8ÍHÅŒeãÎãÔúÓÔW(Ë’ pOÐTÙ°£ëL 2@#ÐsNà€Àäõ•HÁ ‚ǹ㊯!ùÇCÜ@œíFsÉ=)xÀà{Š~„½Éam’rõ­Ad'9àô,¤WeÏEäôÁüi„îíä)€ò>ê#u§åÓ<ŽÄŸ­-Aj1× œàž¸ïU„Ý lqÎi•Ó9(3·¯ÚpN)¢; Ýþ½HªYW°Ïb†40!Ësרú1xôë@­î0ªy@IÚ{VÄw[Q¶ð1È#¥'±I•o˜ “Ï'¥JÐ0!x$úA¹<«à¡!²qœv¨%ìêåŸ$œ [½BÚ\Y˜'¯\Ž•bÞ@¯ ÈÁ_—sM‰n$Ñ´}AéßóÒ WÁ ƒŽœž(Cz1êdäÐ œŠAÉÈ]¤rÇ⎢[Ž,Ëc9çœÓUöF¹ÁQÎ}h"êÊ ÙØÿJ¥,sb3æ(Z``7Ri¤ËÈàU[©0®jêȨBóß=E¸âF_æÎ0ééN9‘— Ž:R)—U˧8Çó¦¶_8ÏQT‘ h\zb˜÷ëõª¹¼ë ÀÚqžƒµ1RGÉwî*É2É$1œ`=éîÃ{säu4\wÐŽIwnNÿAÚ¥€eØ:G#'¨£ !ó˜‚WŒt•WÔ¹GJz„a ç±ê{Rˆ_$@ê3Í!¤ˆ²"º| ðzcëVÞhtà298ö¦W‘ ±bcE8Za‘pÝTŽÞ‡ŠZK³yù®2y§ˆ3´c9.{ô¢ý†´#Š&v,Àééý*Àù÷œç­ÇæNŒÐ©Û£Œ€zÓÐÙ.å9;O^õ# ÅÆòþadQŒcÔíŒ]”6âO~ƒž*ºì9-¥É7Ü'r)M¶ï3yÇáùQp¶–#¶³.£ò‰1îÝGo‚Ø”Üa—9û â™:å€P7;ºša¸éÕ »°‚äðEeop¥C’­ÁÁÿHOFhÃadlïÁ OÝãN1¶Ö ¹#3HeTóOî— €F÷­4ˆ*©#æÇsŽh"bðï%HÂ⩼»¦ÞÍ‘À9ê}꬇~åB¥$ù\2“èi;r)“k—ãÙo~ÔÙå …T|ÊpïI¥Šà,gx±î:õé­,Ÿ6ä=sßü(°žÄdÆ3´ç§jHÏï"àŠ­lI:±ïcŽ”õPJÆXô þ•F·ÆD!¾nk@I3*¦ì&rO¡¤ÆŒ‰z¼€|ìÇ’zÓUYó0= RQ»¥%¸ô§á˜çŒŽzž:S ô*î;‹ºåà㿵OŠ›¥eûË€Oc@J²2(RORjºFË -×§=èi†9$'^;ÓŒ®èß6TŸÒì=_q*£ä^ùúУvày<öÿ8¥`ZÙ”ìRW)JÀ´Ïz®2¥ s‘A"áB|œ§»Ê ÅþcØÑ¸VnÛ¸°çÔ{ÔLÂFoLô åÆ~¸!ª`2Èv£¶zSÀ˜ƒýáÆ}NjÉ•U†9#®jZI!.Êb<”ƒÆ 4œya“* ~C%EÚÊãÅ<žvîù³ƒ@ ” Ï8¨Â¢§‘ߨ£ ;‰‡4éI?xßJÐÀ…‰eê£jDÈ™¡Œj¶OAƒNFErÍÎxÇ­‚@æÜ…(~§Ò¯DØOÞ(òÏOj5ê2@aŒG?o õ瓟¥Kc“lvr¾Ã¥K8Y¢%Žƒº5fŒðܘ×8«yƒÌÁïTMºŽ’V•€2iœ(Î ê(HÄ9}yÅ?z¢^ø¤–0ˆ­Îx&£e'åPp9ÀÿõKa= 6Ÿ3ééRJKF±àd6îgŸOj@¶"S°ŒŽºÓ÷g''øìväü½ú BØ$Ó­+‚9þ”Æ8ÆãÇJ¤4uOÞÉ•Æ20OoòjThc‰›níǧOçXÜÑn5Ôo(½2=j¸oÃÜç‘ÒŸ˜1Å_yPÔ•T¥—hã1Od;h$Ñ¡P tëLXXà” ƒI0iܳ¾$ŒåNñÐúzÓŽT š©VB»vl9b8ÛÆ=jD]ƒ ÉìZnÙgj®À‘äŒe}j¼ŠÌîÏ# R‰cŒ”ló³·‘“Zð*ˆ•ͺ™¸ºv©“¾…$U{=ìZ1óghûµ›4RF”Êþ>ÕQka=Š&w%²¹P1´ž+FÞìNè¦<ÀÄŸBéó¢YR6Gä׸⨴ò˜ºá{xúR²سëG&Õ'чøtªév@.Ñò'8>½iÚãCRà©yÈÉÉ?Ê®µâà;¦îäçîšO]}JŽÂG1ÜÝÇT¯s9†€æÉÆA?R)X;–£½ŒÂñ®Q‰Ü}k5¯ díËFqýhŠw`ØÓ wmºù«Ëy#ùU{•1ïÚû†IàŠµ°šV'³U´Œ .B}ëeã×lQº‡ng} KîTWA.,R'I¤N¼AŽ:ûÖvXH‰/U8\?JIÝjV{Ÿ+ª0ˆ˜žK¦3Ä. úÕt¦ž±m‰åŽ ¬®0G§Ϋ•”àŒôÇ¢î‡5Ë"6`¾ic…aÈîx⣶d‰„’ ¦qëM-{ÜÓûDxÌ~„gÿ×M0 ýÓÎiX­Ê±à¹1 98ÇOëWb™œîB6ç€ã‘M¦„´,I!wiuã¥aÌÇ÷ÅxçÐp;P…!€`«`ã¡4ÿ(ýí§§>õA!9RÒ‡ 1cEX\1 útȦ†ØÏ÷AíŽÞô¯pÚÌšãn·òFz«ƒÂ¨ü3Ÿò)¡Û«%O’T=¨ar{õÿ „* |›¸T®¨FF'¯4v%Y·*üÄvéV ì_“¦3“Eõ)yq—Ëõ(q”PAÛÓ#<}($‰Ñx ÇUÛn6¨_j`+)P­‘»=ªGpUxô8 å0à>æÎ3Ú¤S¹Œzàõ¦Å"Hó’é×8#Óó©JeNÕ%³Éô¤0ÃU‰ß‘Çš²Cݼg"Fw¡rÉ穦gk«p=xæRݬ9Á óÁðM¹ã'ëÒ„A\`0,xëÓ¯¥;iò8y8ÀGÀ$òx© PȤǗŽJlù{\:zЦà6[pǵmXiÚÙã·­iZSkðž)»‰†ÛÐdtÎ0~”åÎY€HÅ@Ñ£C¸gPq($gÐÒyX…÷ÏNô¥†Éç{õ=‡Z–5 à2’1ÁÏz: È]êSnrÃ'ŽõU”6ç ÷¡ÇRX1Çqè=©ÊÎFw  *ªX|¤ã"•&d”nå=OoJV×a. Ç G“"4D÷|t§0zê áNy gžiy|ߦ;U2V€ã$s»„ÜIÀì1Hvœ.Õ/½G†þÍR}Éb*g `m=8¦ž¡ÎÉdFÚûTãÚ¤@NÁòs·§ë[‹ ®IžÊsÐýjº•S.p3É ç”ƧçRp£­GµÊœgô¢å’C ²)(|Â3éÇãR‹rÒ2©mË× ¥wv+"E¶b®e,R0I©>ÍEcËŒšErßQ>Ãò¨™IÜ}³Ò«°åXâÆÜ“žqEÂÖ!y›§ð÷ÛÒ¡ ,»ªF?:«u%ö‘Ì>aßË×5«§3F²üß3 ZÎz•Ô?$ûšrPà•<çÿÕT®­<ÆilrXéI;0{Xç'|ÈH÷šµf%ÄHëµ€Þ™ôÍhgÔÕòY7ˆçÆvö…f%7F\ ’H=ªÀ@¾ìœ=)Üeûy±Y›*@äv=j„Š ²¶NÞŠ¤u¥ÔM\®ù@ª[zT¥›´„dà9¦%¦„vȬø”m“ïVž}ìˆSlc8Ï“ëK¨Çƒæ·\dóÈϵC0É"@BެZvÖã ƒg›ßò3Ï5ª›ÖFrþx=ýh}„¶(\–‘·9ã×>ÔÔ\œ)Ç#üô¦ƒ} M¸°ïŽ:¹o0‰Hî nhJX•bŒ‚2Gë3ÍeùØ|ğƦÅ6ÅV]‰èsßÖ¯µôfŒ’I9úPôaÔÌuÜÄ©#owüiBqžx'¡§qu†Î29íýiQKFÛ”m9¯4¯¨·a cî1:ð{ÿJ³/–€lõëúPõØ-mÈÝV1÷ƒî¹àS1nŒñšCz¡¯û˜Èc–$žÂ‘$ò‹9$qÇJ¥ªÏŸ<‚A?‘¤ÈÇÞàž¾”XLI”mûœÎ:Ò èF~ö}hÜPªÌ[òÇBjd'æ @¶GjC[(ÜùažÜUå©•bÿBJýAîW/ — µeÀÈÏ=1@ІÎã§zfÒÊÍŸ©§æN⌅ÂôëÒ˜C®qÏ8Åô…•NGœÿžµ­ ùŠsG gñ©cC';Xañ×j$)¸FÞøèh@=V,¤mãùSø.\õöâ‹I©“ŽÇŠ¦ÊØ%PmÏ'µ1Ù•È- #õâ¦Q¸ùj[9É´ÄJéµBŒî#t¨cýÓ…ÉÎq€ipˈÜMÀç‘É5MQ #xÁqFÛ »—VÄVÉÈî{RÄŠ›×ýi\Õ°bÁ‡=ðý)]á¸ö4›Ôì#¬¼¾ÿýT̾£ çž¦˜%wa]ËgŽ;wúSwe³ƒ×Ö‹€ –-œñœSëR—!0£‚2A9 DSåLMž3ŸJtld $ƒÍ BaÙ=ëž”­Ó¸ä*‡k‘’°Xí##­HpW¶ij)Þ[œñP31Uç#ÓÞ˜t*çk63ëœu§Bzôj˜‡êØçœ0Ž¥sŸBzÒ 7 ØodqP«òÌS¶‚d¤îe᱑ÇJƒ1,~bhˆ%ª;·Ó%áÊ‘Î?ݤKŒíÉè+Ÿ›C^[2âÃå¬p“’OñŸäRH¢bæ@ÊIéëI>ÃEk†òËyR ¤dc4ûKŸ²¶Ö£ïÛ’sši6˜]l:kð|Á¶[<Ncš£ö¼ä?äSKK°7,ÙÞR,®9ÈÖ’êÙÙ<Í…”’:ýßÃð5Éîkk£8\›| ÃøìDdy7JSä9ŒcÛùV‰u1¿Bº(Ý—9ìG|ÒÂA—¯È;tª`I.å‘”H:üØî(IÚ#œcŠOP5'•Eº©ÿZG ½ýkÍŸ{eHÁæ¦(o¡F™°²;uÆ3ZZ{ùŒà…û£üýj‰[“ÞKçZ¼ $’úõëX1Æ ' dã|¨äöïÐSf—Î*½®ïŸZhšc‡@q뎕jây#B@ÚNÿL̬ ”LNGJHäòòy=H™&- ÏÝaŒúU†Ú0 hóž´ž»Ù áJeú)ÿ=ª¸iC".$÷ÿ }5úf* ÷È#¾3K²ÃvÔ rqÖ7 ŠòÉ*áŽãÜÕVÑLõõ¦'Ü‹Ëf%ßæã•¥niú‡Ù\ÆÊ /Á°ö©’º°-Í;ÝF†k(cÜñçüûW=1ܾvÏ$ÔÅYj91€…“AãxÁüéñ©ÜAÎÃëÛñ«ÒÂEÁ Ç\)Îyü+4¡Àúÿ‘I^Ãk©)a ß|~µ«e‰Ôà Ïeö4ÞÅ÷ Á:—s¸“Ðõ¦´.ìî9žh&ã]÷!8ç8æ–6•%ÎGjV£[næFO˜}êtŠŸ.rX¨¦‡t0—»Xt{Sƒù˜Vn\qNáÕŽ>Zn1ŒóÁÇR)Ë4œ lzóȤÕX]Kàô÷¬Íž[´c%‡’z‰ùNæƒNmª‘ È 3ùU¥q[©2eF }:x îSƒs‚zT²Ê0>\äúTŒªSqÿYœgŸäS{Àä©ÜØÏZŽ&py?(éÇSA;´XܪF9)ð¶ÑŽ®}³JÌv.ÝÀ!Œ@G*;ýMP.¬¼!=ùÍ%ª5¾ê_˜œµm1.õþ#Î?—éHd2Ä þ>•W7ÜpWД×bm©cÛ?½Gùãó§áAÝòè@ÿ9¤U’WdP¹ÝÏN½ªŒîL˜ÝÈ v¦„Èþs’ÃådzšBÀ† ä?§4nàã¾`r:Ó>l•'“ÔÕX—¨øöœc¨õæ´"ò˜²’ý?J—¹H®ÿ ¤ç=A⬣²”çŽ99ÍÔ{‡v*yŸ˜w¨„g»K`&褑“ßÊš¤làg Åú †\ƒÓЬÒ)L’Ož)¡]•å?ßa·Ðw§FÌŒÞã$g?þª’Grç×éQ(bry9=ºP(2*FáÎjUsæGæ),8àu ‡Ë†K|nÁÇnßZ¥±£<7lϽACýÞcS‘‚NzÒ™I\[œäÕn…æÄiKFTçèzQ³TA‚:žÔ[£ Þ‚¼$dž¼gýi‹ ¥NO\ç“Fnƒd,P0Aàç­#;#6F€ÙïBì!ò”’5ÜØã©DÊãÁôÏ4 CÙ2„ŒùÔŒd#$ŽÞ”À«)•™C “V·6ÝÀ`pî K$(ꛉUìÕL¤‘ØÇ¹ÎitšTg =³Uݹn£ÒšØqÀ5Ã|§æíUêMÄrd ±àzš‘ã¿aGMyÁÃæ£e~ªr½3B)›ÜIæ<„~ñíÒ³^þ Ä¥¹Éà Ý>•΢Íå%ÑûnùTʘ¹úT“MºHJ•òÂn*qúÒµ™&|¬‚U}«´ä‘޵X0yÊLkÈÀÔU¤$*É ç§QëT¥H¢wMùõ<‚i­D_µºûVÞÛ ‰êoÊ®ÞkGíFê%ýËÆ•Ëæ÷ls²Ëö¥*¿/9=ynÎhТL™Œü¬I«ÛC+ërÝä6±:…]²`7\ãÚ³ÕBͶEÁ'¿4>í ¶#Ë!߯ùæ ¶‘d¼§pìOÿZšOpê-Û²>Àœœæ³³÷Hsއ'¥;-Ç 2 ÀƒÎOJzJ%]³œzdÑÐh´n!ýÔJço I?¥Y‰RTvÏÈOjAk©˜g9˜å·HÈÇJ‡†b0 ôi¯1’+I²‘þzÕˆ7IÕAÏ^ŸJ<Ĉ¤S§@™Ï<æšÒ2Ì@ϯJ£-˜*ƒÆÉïPÜBŽWoËŽþ”º‰”ü¿-q÷—®h!Ê ª1éŽO¿µ=Ê5A ’~o úÔ¤¬Ÿ0 ¶2I¢à…eY›€*= –³:ЕÆIN• †ÈÉÿëÓè&5w2°#åȧc ß cŠEÎï½×=Í7ý®ÝñÞÅäI$àóRÚª½I4€p‘rIþ"•¤1¾6ð8¢—>fF(N=*ØžŽÇ9¤û¾@F9õ4܆N g<qïUÈ0Ì¿¦h*6w@Ú:{ÔêQ\À'¦y¦"yc* =xªñ2¶únÏLb€.Dˆ<Ó·'ëUÄAdo“îõ¤è¾PPÀ½*ô^\ŠC6z`t©e&íA»?@GùÍg”(+†Éî8õª’º°ÓêËÚÃÁ-‚Ëm .:žGzÉ¢™ÜŽÏÞ÷úÒùuš¾„2,¬ìw䞃ڥk%Ú…‰$ƒÐô§v¶%êg24dAèjÒHÀ ãëA-XÒm’M†Rv€OÓ¥g]å\ò œúž1BenФ…•ÃîrjXYðé!;ˆÊãéL›YˆæMÀùœ“Œ{R6 O°üãlP&fqÉ<8õ5< æeQˆõçÒ˜´,9SÀçéWRæV‰FÿºïH{< ¨CµºíÏ&¡ó Âúµm6µ;[yR"äp:ŠÇÈ™OÆ3Ö’V)Êê© ,C/M¿äÓP‡+¼p'Š¡ (¨B;±Îh2ŒyÆ?ɤrf<„Ûï’ÜSC1@ÇqÁ]œv¥a¢¦ò=óÀë[QÌ‹bðœÆwÎ=1M¡èaýíìO$Ñ%–LŒŒŒS'}A°1Ç<’«Ãß׊H `¡ ‘Ž¥=˜ ŽÒq·+üé\®‚JåãNpÓšÞ†qkhs'ÎÀÆ:OT4îeÇ*«37ÌàpFy%Û8ûÉAǸ¡o¨Ù–]·ò¤Ô±Ä_{ã(=zÕ‘„üÊ==…JâX¥Uö y\7 d„P8êFy÷© ŽI9<)Ǿ=©\aL#´zð?Ú×W \2ä{~ÐÒh…Ædmô©]Ü"c SÎÓß4xÛ|c’sÇë@›H!I>Ÿ…Gò¦0¹ç¾)ŒRw®zðj£6þƒ#žÝé¢Zê0.=xà“ÈÅ(ÏFÆ1Ï|ÐIs€qïO.@=ø ~:v&˜0[Í4-Ç)a·¾;T¡zçÞ“°ÐÜp 玧4ÙA‚p}Éá„to”sšvÿ˜žàòGÐË Œ†z~îNÎXqÍ '\ˆÀfëÎ*²í9ÂþízqȦðRÁ¹Î3ýÚ¦Ãç@ä`z@yÎáA=9Û½13îDqÏj6Ô™fù[äSW|Ärr:RØ >Yhð\ðrGÒ¹Ú®™àð{Q¸ìZ[6!8rsœTa·ÆÄrG¡Î}i'aÈŒÈ0ÈŠww÷¦©òÑz‚F úšdŒÅ™‰ÀÏQH]³ÈéÆ}@J$˜³qUî£,Ìêÿ!½h¶ ALzŒš»j»÷–cÎéØP5¸H¡O™3Øô¥ŠR»FìÄzc‘ïG@ê)ØK±áXqý)ÈÊ­ûјñØgt’ç ûS<èƒVÜzGò¦Ú6xrr>•žñíÈ<ÐRÅ@ò}iTíPÍÏ|UÛB»q‘ž‚¤d‚x4ZÛPW¡Lj„.FxÑQµÏJŠ–RDù?.;{Õ[8­E¹‚â1»ž;ž+’ï¡»KBƒ£Âñ!ÊÇ×i¾•¼ˆÍ']ÀŽ;V‹QlЮ߽~ïLâ­;þéA9$dgžj‰îPÛ!eQ÷{Ž‚¯ÄóF;ýßñ¡ù[ŽfFs’N<ñVe*F¤ç#ø‡ò©™xb*…GÌAßÚ³IØÁ·ŒôÇ¥WBåä‘Ô+$÷yùfšd“>hÆHÇ4X. F]ìê;¾½*©Ž`XžF8ÆiÜVdé™bc¸d7ø¦†µ ýú»£=?É¡~a’NHéÞ“}‰ËUÝÛ¸<Ñ«åväÜ{úÓª­$‚$êsþsSËk‰6îä7^ô‡½Ég†! ¯±Ç½PB"@«¡Z“žUrqÈ#úÒÈXä QŽ)dEØÎöçדϵ<Éç8bß ãè=)\J숺‡` R(ß"‡ùqœL~CÌ¡”`aú|SMÃȪ€`g©¥bnLT1-“ÓéS =«å s“úÐìVˆG¸,<ÀÃÔœ®rsÚ„ÐÉÒI"{ˆ“t ܃U£fxÀÏПBɶm±»0Ü{iUÅ»0Rxç·µKwÑbsx¤¨·P#÷<ç¥ZÏš»„·^N®)ØÌÊNsKåFã'p 0xÈÏÒ‹ÛQÆ7`šl÷B„ŽÜã­‡µeÚã=Z‰UŒtgL0•jj/†ïe+ǦïS?†®ãûê2=ø>Õ›¯o¨UêX:Eà†8p2N}sÇ5›ý‹vȱ¤?18bO@x*°°•t ÅveNF «áÝAFÕ… pHÜ9ã9«öÑ'êuJqhWÑɘâÜÙç$qùÓåÒï!Y·bÇŽ9Áü(ö±bxZ‘WhÂ6W .Ç_Þc%Oçÿ¯O‰K3|¬8süúÖ×OcšPå~ñ,Ûœ€±ðFj›G". çi&C]†J@uqŽNy4›—™O¡D\f0)Î=;T¨ü‚¾=¨°!¬#,Üüùëž1YÒÄÌwnËvÅDÖ„Oæ.×P8ÈÀäûÓ°0K޾¢‚F0(¸çn8ÀëéJ6àÿ~€#b~\aÏJ{@ïÚ®,r£ôæœZGÜãúR„!'jñŠ>ñ=9íOPdeùU¦‡1¬†C“Á¤Ç à¶9<AJàÇ–sÐÿ:C±*ùpqÆ æš©÷žA†Î޿Θ„RÆGÊx=óO˜.}=:óK¨ü¶JÇ}qRªb¤àuÓP„Ææ=}9Çõ«‘²¨ä|Þ¿&Ä“¸^€·ó¦¾Km“ÓRÔˆ+F 1Ž‚¬$‚ßÓ±ÏJ7’H²ll äQÆ'•Ï~Ô êî?>cn‘†ÜqŽÕ W8èxÀ¦ŒÇËò¨àšVRT.ÑÀíÚ†"ˆóO)<úš¾Ž²)(ØÛކ€Æ…d\‘éPĘÞ_¾;`ÐŽd ¸.åµvV ÉÇò q+DîØÇÞ³±ó ç=JhlÓŠU1l¿\àŠ{ | Îvõõ¥ÔFkB±±b> ÿJŒ¡¯îÏAïT™-áÑÍ‘ïO$äýy¦HÅÆâäó×¥1б+¸ÔcµPÖç¬FòÒwÈûÞ¿Î¨ÜæGÌxü)ƒÕ– yh œ>áœó‘P¶ÒÊdàzáú @÷-Ê‹æfÊ6 ÈéP?–¨ 9“‘íE†4ä1ò›¯¨éMG@†'FÁç“ùSÐk:…#ndþ#ž•L»/\BSZK†ÇLôŒ­»Îi"–Åssµaá:qÓ5P‘Nãóþlt=êX¼·FÉÚqŒ{Ó$’5w‰Ù‡ÜÀþõÒ[%Ga#¦}iÌ >;Î !ZìiG#¨ ãšlKËщ'žõHv$‰¤ŽO0—ŒZ’\ Äe•I.:“Žâ‹\kkÛÂ’,¬Øgþêôâ©ÍÍ».jo¨ÚЪFQÞöP;JÊrÀ ð8ªó%Üø994±¥÷uÏ4 ËŒùdri¬ ŽHê;šÆ®A2íàãŒT™p§o'¯jµnxr)Œ¹bÀaˆÏãJÁ®ÄʪŽF=ºÔ¨ÅˆY*z€=©´'Š7%ÚÍå8ù€'ÜU3ÎHÁéÉöïAJ,Њ?1ÙYràøÔ ÜY v#­ ­îh¡}Em2íV½±ÈÅm[ØO4OBw`síLæ’¹µ*3›²Få·…e›ia÷ûþµÐ[øZü¬‚àœÇ§Ò¸êb:#ÚÃeMÚR:K]`bòF0z¨ÀÇ·ùëWšÞÕ ®ÝÍÛŒŠã•G'sܧ……(jŠâÜÚ9ä SÞ3Ü|Äž½ñêjTšw¤ŸBÓ˜…$.Â1’zgüô¤A˜³ aœ§Ÿð«U3xdÆ0§Ü‘’vž‡Ú«½“Ê·8<õ«U;™<,º")!”•D¯~† ’Ý\¨ÀR½Ç­Z’Ýʎ颜¶Js¼tàþzþ•—&‡nød@9ãßzÖ±¨ÑÁW 3èD;}°>\u¬;6æ%et!Ïë¦OSÌ­‡pwFK£22yæ¡1œjœž lµ8e¢Æ¤•Mÿ/^MEŽ@ãæêi’´B/Í&8àwÅ9Ñ\tü?J]I}È<¼d’Iö¨ vóÔSaNòùí…×û‡?xœ…4ÐJà/Î¥H¬…Fpq‚) \ž§§ëDŠpT8N{в aë·ô© 4›6Æ9É=¨lbŠßä Y‡îÜ€;Š&@?)üj2…Žî<~TnÃÖ€–WpqžÝ©Ò¦ÜIãéÐsÅ0,Á$GÁ8Æ;þu Bà¯Ïlž”€’1$X,§ß×½HÍæ®£#§šìD;²½µFöÈW+ã©§°Ù ã½N’¢3†ühbUY†~é÷Ïùô¬éF U_Fü)¡=†òGR?8ì*À/?­>¤œ p3Í1U”± sÆEXÖç ›é™*0®3ê*[ÙXäxÔ0áˆ'ŸJçå±ÐäÚ±–—Ÿh˘ R‹§ùYzqÚªÄß°Âù‰ÆHÈ隆;Á+0;O§`nÃäœíoœ’xïÿêªÉ8%]ÏSŒô¤KÜÜ1/ÙLöÓ†ïnäôè+!ÝX³(ù}sÐSL²?•ü“ ÏNàRË),y1·_c׊b^„ç¸ãó늞GR‘7ÞÏõ‚G+) ÃÖ£”È(ÉçQurú $.æîåÀÓ4–9Í2zê^{r)éÆNzbQ”{ñJêå¶ùQ¨ lýÓŸÃúÓÙ³ høÇb1“I ¡-¾2F=qTø`C®pXhDX<°ø`s:¦šcaÌxÛŸlŠ ³µËB=ˆÒòÀõöõ¦IàãŠ) ‘Éa…þµ) ±È\)¿&JCv—•²{úši”÷º`Ž´™"E$LÁׂÁ"‘e+Ãt#ÖÆ´.*,–ñŒsžI<Н°±Á]§¦{ÿõ©^Ã" cÁ Ó9êiÇ žðZ/ XÔŒ¨´e w“’aPÄÀ#e0:–Îr(HdD‰£P̃ëI5´‹ÈaœvÁÅ>š‹tBÈò…(£¯9õ§<s€ÝóÐ{b„ X`%R:tøF˜ Â@2FF:ŠaØ|QK+€0>”žL¡Ø ŸÃ&žX]#ÞXpxJ¬¹Îd9äúŠWQÅCãŒôýjѳˆ3"†ÆAÔÒ½‘PW‘Ói6jMm4¢81Ÿ»ÉëÚ•<4æåÙ€l#ã¶k Uqv=*XWU&lXør(Fæ@[<ç=ë`èi* Ð+`g»sÞ¹§W»=|>Y+cÑ£>ZˆB¡è1ÎkV ¾gqÀ8þ•„ª¶Z†1{¶úX>b‹á×<Z»4P[#¢I9ÜòϵrJwg± QŒ52fC#ºOƒÑºT-k+0Âà㯥R—s SrzObFá×5¥•;ëTœŽÆ³T–çE<$¦ÒHÕO ³€‹àW£ð´å¾UÏvxÎñQÚç¯G$­Q+Dеðf§q"Å‹¿ðíT9_ʽVÏà¿Ù´k­_W_-m²±öÍyؼÖiÆZ·kW“ðeLL%[M¨$ÝíØðmkC‰g›ìˆÉÛœ~}«¸Óv·0žy?/Zö¨Öæ‚mê|i—{*õ8û©™M …È‘3è88©&… d³Œ/®y®ÈÍî|íJ™r@ÑeFsÔô¨›]ùÉÈ$œu­”º£Î©Ijš0ïôkk–”²•|õ\½æ‹<9(C ëŒÿ.õÕN®Éž=|=®âaMEÕÛqÆ8àRºã8é])Üó$¬ì4’ÄS“À$u÷B Œ‚ž‚‘= ¯’ŒV1Ïâj¹bÄ>{g¾)ˆ’P0 lG–[p-ÛƒŽ´ ±‘ Œ~5`ƪ>pIÏ?J%ʺä§AíS5¸Æá™>üúQÓqÛ©Ÿ‰S©Ç'½[!•€ †×Au¹ÆD§¯qמôöÜYöãiSKpCŒöÇš…H(ÛÉ$­4+1‘†xëÏaR! Œ×Ö€·ÈX ƒÆOSR”EPǯZ@Uƒ‚rxÉéJÌUAÀç>ô©Yœ†P‡nÝ"0*œ7¯qô¦!˜™˜°mãŸçJüŒæ'¯'šD” ¶7ôÁ9«q²4÷cÓóõ¥Ôå¹ 2ùŠ #ç±úUTŒä§(À84˜Þãv‡ÊrFF9ëP¯ÚWù²zœÓLȰ²Î « «g°ÿ"£H·©*Ÿ¥% _¸ÈÌhJ„uÍNÏ–°“Àê3×éL$ñ ÐÉ…ö皎d•$(èp¤®žj(ò×9¨Ä§šÌžÞ¿AFú•bÁò¾yùB÷ªòN(`D˜Á÷§¸®$m¼~ð§­#ÇÈ*Ä{cØP"ÂeÝGn•¢°9^GÝ=ézšÙçžsȧ Žlôª3 $ž¼S@Ç {zU!­ÏBŠÀ½°|~ìñžrpk6qä$€dgŒÍbŸC{Y–6ï9þ }ºSd2*æ4=‡&©2R(„Ã;ºCgùÔ«*­ƒƒ}¨c^cçPY£VÜ0J¥÷S²[¨Ç"„6µ6lÙ£·uêöô= Qb±–s!áyàiu½‘q!Il‚¯5pÉ3\(ôöëB®Åزƒ¼žTœR\H7¢F:dŒdÿ‘CܧØnß2FØr¤–<ýßz[$D„‚Àô9éþ4l@EÚÎ0Nõ*´kœsÓ©ö§è"<ª$hƒqÎ02ÆÄJd`¤/_éK¨üÅ…dkˆ®%P"ÆO8ãÛÞ­Jé1vUÂ>½jzdVYaqålàêI÷íUn’4šR(W銭…} èüˆ÷|¾þ•lF¿ Ù…n#½ IÝX°î‹V8_N‡5œ™Xð­‘Ðæ„6À"³¹qéK°Œ‚rqŽ•W2–<ž£¨˦FxçùÒP‘÷d±÷óþ{UTŠœðyÉ$b„Í[]Ü€™CÁ>µ~hâÒzÙ#µKÜ£±FùNPuÿëSÞPû—Ô~•B%H‚-¼Ž8Æ3Џg rPr9â•À¡4™uì}E81PN>FõãšÖtˆÒ]®AN}zÔëæJ!oö©ì1¾[¶ÐÊ•ÀÏãøÕu_Þ³»’(¸5sBÒXâŽ_3îœ`´×i1Q•ë’z ž¥òè‰.n£fÚÛñŽGj ¡Þ<•!IcùÑn ã©bÎìÞ¼óý+­Ñti.dY˜íLÿßCÚ¢¤”QÙ„ êM#½¶ÒRh*F~¹­hlFÆU^Iy¯6¤õ±õxl%´±v5uWÚ8ç¯oʵ–ÄmŒºžžÙë\“ž‡µG ¢Ð¿ ‹ ’­Œ€Xð*!'‘#EÝ!?1ÏÊ:ñXó9hw{M]•ˆ•¤óõàO8þT¥$l0$¯Cá?ç5ODG%Ý‹ö«•ÜI'õⵡÓL±ŒrŒŽãü*';#ª–«#oOðä“c )@Ïá^£áß^ê×C¾âå¿^>3 0r”¬}·põ\v&0Œos߱|e%«\é&7?4¬˜\z+îÿ ÿÁ54 /«Þ|€B.g¾;×á|Oâ\rúòÃà=ù'«è@åü-”eXxK0‚”ûÿìoàŸ†²\\‹%žXÆá,Ê@sŽ•ù{ñëVÓïµ;D@Ö°Háš.˜8ÇnØ©à¼÷Ä›Æb»_eäz9® ¢K ÍY%æ|­©x*-&Ü_ê C9>\] }}kÈZ€G3BmyFTã#ñ¥æC¼½¬ž^C—ëÆ1X€¢31”ç=þµ%KdFd(F1ãªÓ¯ü·C×ï ~UB[‰ç %77è1íV„=8 Ü °ôÔXôãqœ‘¿·8ÀõªMnmÁ Nzt¥pµˆ£Y%ô.xä*ÃÛä{ŒÓn¶—&ŠCmŒœq×Úœ$ˆ¼™úJ•p¹EäêÞX$wÉÎj6†9Hïÿ*®€ˆ I|¸-Ï|ÓÞ\£,ƒ¯ãLEG›mÎ=3S‰öÂ>cžÔ]Žì;'ÍëÅDÒ³dž9Æ)­w%®£ÀŒ)'“޵ ±›¡‡¥R¨ô(®wXGÚ°3Ó•ZhÓpôÁÏ­aknto¹Œé$lrç†8ëMb¥F $r*ÈZ Íìäãp:ŸJGeyC€ç‘ëŠ Ñ9™”ªîP8¤ˆ¤™%@ñã8é©1›Ì.Pâ>¡r2=¸¥HHüÐx?.8–ÂÜŽB¥ÚÀÆ×ñ©m¥h¾]™äúÓ°ö‘.¥4Ô„ Äã©ô¬Y<ÂFs¿àóM-˶ì|àô¤:¨ s9úqM¢ŸÂ@Èű¸yrùÅ8²í1K_¹þé¤%¡%”M-Én ïßÒ´kîFÀ-ЃÁǵ&5°ÖuXö6NßNi¸/ò€@ö¤ X¡>h.ÃË?z£ž [%FÐyç­;ŽÆc©IÄ89 sÒ´­á<Õ‡9ÏÖ‡µÈD·JÃ=HÉÏ5¤K$Ì€nÀæ—™VÔ’æYF£$gæÇQŒÀ…c•ã‘TºPtÚ@ܯcÔÓ±RëÐç¶hê1¬gx#·lP—@]óØr9¦ØžæŒAÀ9Àãnxœ,²œõàvÿÒ¡=JZ£#dŠŒÌ>CÏQP0ds†?–?­[!èZ2Á¤û¤àZ£†á†Ìtçǵ&‘C­À`<Ð<{K8eØ£ŽØïJÌ-ÔÍÜÒÂñŽ}ªÝ²» ‘Â÷nù¦Ö€•Ùí9>Y.îž•e `ª»rôëIèZRlÓ‡K¹b DBu§>•¡‡®ænȽÁÇÖ²•H£²žsKCF? 3…RX¶6ãÿ­V¤ð™A0ìÇ@£:àÖN½¶;a—·¹£eáû(v1\Aúgé]¥¥„Q‘åÝë’¥g-oƒ„:¤Ñ¬YÛü8>õ»¤éwÈÑ!#€GãŸÓqU©hÞçÐa0î¥uI#ªÓü;q$£ ¸°8sšén|,tèZâæHã ‘»‚ÎyÎp¼BnÈúú95EAÕ’´Ws•˜I0xÊþáN0œqý:Õ3êÕÎ;ŸÇñëZE´®*¤·"û €d_AÁñ`¬ !ÇEÅ)TdS£Í- [=-ÉPcË6{cúq]æ“áù®JDˆw·ðuô®LF!S3gÔål±5"´>~Ë^-ø£¨Gg¦iޱ"©–y""8³êHæ¿`> ~Ä>ða°›T·ŠûX#&¢ç­?x…Ʋ£9åxï½Ú{yÐü;“ár<,q×ïº]Ñ#áDz}­¤1Â$ƽ«Ãž@9áä09Å~ ^VnµY^]®yÙ®nëA´õÔø»öìÓgðǃïâÓx¼¿ý¿!c\e›=«ùÇñ z‡xÆÛý/ZyHwS˜Ðúzšý«Ãi`ªÔ¥öå«ì­ÿ{¸jÐ­Ãø|E^»~G#¬ü>ñgˆí†¥5ƒ›b VU$ôÇa^7«|;¿‚9#’ÙÕwÊý½8¯Úð9•µJ2Õ Ä|7ŠÅSúÆcÉu/^YdI2I,8 ŠãîôyCoÙ€3Ðtüëêèâã4¤™ø¶i’ÖÃ7ÀçfÓ^ÌÙÆ2:篭R–ÖG”u8nÕèÂ|Èù FÆêÆ<–-¬rÝÏðõ¬w¶`IVÜNsšé§%c¯F̪ñ– ãîŸOj«4+2‘FþŸ7ò®ˆÊÎèókRM4qÚ–‰,%äOû¿Ý®w˺ºÝù®ØO™?ˆ¢éÉ¢“©§ü;! “°'ùV¨äZ=HdBÓ7ÉŽÞ”æVûŠN?J« ÈrGò)8öäñIœãh>Ø©b·AÛCmY3·¾GøÔe e·r§×Ê—Aµ¡3’T* úsI¸‘ùP…³ÀùςۙŽyÀΠ d Çäb˜T_—¯—Ìo¡'÷ddàçŠPAlóŸ»T/1Ž¿6{c<P8'®žhQíÁ†p;â˜'Ü]¶ü£ðÅ’;Üà~tüì?ÅÈ CÑS;™Iâš|ÐÀ/aÀÏZC`¥X2œõõ«’Ë&pBt$v¦#I¥ÀR¤úg§çPkªsüÍHÛ¸¿/š»HÜGñâ„e‰˜H23…Ça@‰UøVÃçœÖ’K!Xáb ‘ÇéC/¡Hcvð¹ìßãO¸e—cíË“ô¤…},Cl#+4„ éVÑ‹¨%Gœ¡5¢3ÄEˆ@¸çŸzcŽFY :æŸR_r<Ä_z–öœ#'$rIÏغ’Ë ¬2XöÇ5NHârvÆ@ðsBXÀì³=@§ˆJºàpºzb-´1¿—sŒñYRÛº³ÈÏu¢,èF¤mŒÏZq;”/}ª’Öä3f vmsëÍl‰¢ò]·À`ŒþVmjl´±É ÆYNN3´ŽƒúVd®]ÌŸÅž„qút¦·¢2ê]NLqS‹tXÃÎähòøãCó’Ä ëRý—ye—"rõô¤Þ¢jã–/-™¢P>¸Íf4Î’¼ˆ@nù8æ„®' Ïßó§½XWM„ ™zqÒ¨[èBØsùèM"Œ²ï9#§ô¤·Rô+.ǯ½>â1»lCåÜÿ.¥¾ÄR¢HHfãŒýñBвCž#­aaRT…ƒÝ÷sÏJ¼Å&hçWåÈ;Qæ Ö#DÊdÈHêp?­'™¹r ÛÐö'•&å“$0<­rÓ» ±À=1Þ„ÃȪÊX› Óæ=+NÑ£+“· 4=„‹_gI%‘Îvtgæ4D|¥+aü'©íH±’·véX󞫞µrâßb,q¦$A½Øã(]efÎvv28!°IÎH¨ÔÊí~ãœU¶îZKq,HCãæç©íRù%ŇN)^ì£FC krÁ‡88⋉íÖy™™O\ö?…"Ý’²2't2òÁÎ9>¸æ™"ìdb8Ç¥Y›Y¼ÈÝoðŒýkOb˜ÀÛÏF#Ÿóÿ× ¨+’lŽÜ§ °ïɈϻ6dœç9©¾ºš8ôDöúl—.Lq6ÓÏN˜ï[6þœÊUœd|òeª†uÒ[øR& ç¦;òyíZÑhéU^@ú×,ë6{pŽ‚ÏGÔ±@mÛwuÿõæ¬6Uà(SïþzWªÜ¬zÐÂÆ1½ŠRÈ–ò,;UnžGuo˜ó*Œ+Tï ?zÈ׳‡wÊX¯|‘õõ®šÉ F2[(QÏ>ÿ§5ÍQØö0PZ\êl´›½[m¼pì :¯%‡ #Š÷O ü-¸²ÓÖ{Í*Xìñ“&Þ[§_­xYŽ>–Д¬Ùú ðüñÕÞ'ÙÞ1F'ˆonôwk=Î8bq]ž“ªßù1Ziå¦<©œãœsô®ªÕ(Á7såðXLv-¨¨6ßDŽž/ø™›p±nÄ FãúV«x:úA%£#Ÿ¼ä}s^LñØy{±šgÓáøs0‡½Z“Šô64 4Ó$)ó\Á÷¯ÒOÙ³öXŸÆ·6š½å›.–zËÆr8—ô¯ŒãöVYR³•›Z¬ðIJu]zë݆¬ýÿøðoLðþ•›§[nƒ-òcœu¯¤´OÅ.­Ço”dý+ù;™»ÔÅb5›nGµæïëUìì’>•Ó¼&XwZ*¨îV¼ÿã/Žþ|ð¥ß‹þ ëqZت‘!—μ~ÉðXúžƒ¹¯ŠÂ˙㡆®iNVKÔüï[˜c©àpÞôæì¿Vü’ÕùÊßí¯ûuø‹ãψ.,4»…²ðœékmqŒã,‰±_œš~¤Ó݉%œ’íœç9ï_ÚÃÑÈr:Xf½û^O»gßã1tpóÃåXY^+/WÕüÝÏÚߨá¯Å[ûx‰Eͧ٠蟣Zý!ñ—üá¶µh×+²ñ²ÛYI_¡=q_‰ñgâ2>$«J”ÜU×ÝÔ÷sŽ-†I‹¡«ETƒ„[¾úßcòÏö‚ÿ‚]ü@ðªÏ©økE7šb–9‰~àëÐó_“8øâ? ½å®©¥IˆËÆTc‘í_­pWೊQ§*‹Ú.—<¬Û&˸‹ó,¥¦¾ÔzÅö±ó¦µà˸Ú_:ùO WãüMyÕΉ=£•u8ÏB:f¿fÁã!Z*Ìü;È+ag)8ès wyqâE99úä×?udä vàžùû½y¯ZKŸžãpÜ­èaOnÀð †SÀªs"¶ÐÀî8õú×deucçêR³w"vŒ‡\‚GFé\Æ©¥Fèe@Còz[Ó“NÇ“‹£ÏqÁ2ÈUÔ)uÿ Ë™¿y¹qŠï^GÏÔ‹‹Ô3($±{šµ¹cˆå³ž˜êˆÜ…e?3ïâÆx †ÏÖ¥ù ©g{0Éû¹Á$Š‘ °]ß©Šõ!¶íÑñœéH7)çýYÈëA;±d€I9ùM"áˆÀ#×¥Øo}Ie€+;:ZkòÈŽÃüýhê=,FC¨nøíŒÓX“¹${óMÐäsíþÝΊŸÏ° CR[säqLÃepsœþô€G-ÈäœsÇj.ÛHÇvéô  X¦àY·ÆsMq!(?½×üûPwŽØÁÏõ¦°P üÛIéé@Õº“BbäÊ3ã$ô©ZQµpÃúÐ݆’h®c’U8Qž§š‰Á„`(Éõ<â‚Z±1rŸ!Í?ÍC°AÆ3ÏåJÌ 4ŠYdQŽE6bë"3e_Ž¿—Z6cØx‘QŠ3’{ޮǨ€`@t,:PÖ¡{1‚â’0HÎ}>¾µFbÒâGpT}ÍU‘M¦E梠V/QбëV gפö zº•Ýœ’;àRÉÔÉ|«`äT•‰c*w| äj¼nÊ]ˆ'ê>”j r“ø«Òy^nâ»ppOÞôÅf÷/”¦%v“æ+üC<Ï”Ä$mŠFsÁæ­»2hcfa¼qŠ‘­Á`F2sÀíM…¬Uš¤&Aàç§Z|ŸŒ)*OzKa[[—¼Ä‘‘Õð£©ÿHrQ¸!ùˆC.w`ŽÜsùÓCªdd‘×"ŸA=º1E\–=3Þ§\6AôõïKQ[©%ÔRQ{`T1¾Í¸$7Ó'šBÆwù•¼µìiÕdYsëÔb»#ùdv AÔŽ3þ4õuS¸¾Hl==)î3Aî3c969âšÐ Àn¤ôOóëSnãO¹%ÍáŽHÔ:ŽÜVoÛžf—øT’y>ô$E{‚$T‘\Ÿ¥"DYIf9==j¶DÛRÛÌcTHÛæx㯵W2¾æ,2ÉR¶%’îV ÚŠ’G•­‘#_”äsMôØÍß.zIíÚ¬,›ÉÊ ¸çÛéCW%>„A›ÌfŒýO=ëFØïؤe³ƒ“MèiÅ·c°³ðýÄþP €sÀëÿÖõ®žÏÃ0[Ò¨/Ô)õ®*µz#ÝÃ`y­)#UmáÌhÉÆ8ÀÇêâ%¾í‹œç'èx®INç«JŒbíbñqHLr¦ å?î¡ p?õ‹mІ·$7Ÿº©’sž?úÕij—bƒ 8ú~µ6GE›VDGO':“œ‚8Z†ÜFG’œ÷ü?Zm™¬?½{j[[WiQD`öÎ3éǽt6V–ÇA$mÛŒþ aRkv{%ITŠŒu>˜øUðûÄ¥ýŒšMÁWaó¤g×±=+÷À¿´Û?éºeÎ…Ç™3G““ÏSÈôÍ~ânyì*Ñ¡‡«gwvžÛÕ~dÓÂåN®&®[_±ó'ÆßزÊþÊûVð¼"Þñ[-o"’¥@ÏÊG|×äoŒ>øÓE×ntË Ü1ŠM›Y0_qœq^ïql3L+£Œ¨”áÖû®çÇÜ#Z¬V7,¥ÌäìÒüþg¡xைo`þÙñEÓtä÷Lë‘øvõ®®+Ý N»Ž×Ã0‰NÃpëÃ<•_¾›˜K^pÃ?ÝÇwßÐçÉòpþ •LÂ+ë6d~”~È_-¼g Χ«ikÆGá¼aÅþ‹æ} a>­•UÏ'ÞÕN4ü£ö¥ÿol¼—™ðÕÕÇœ^L{Ÿè+WO“”Åöma»ƒ–ïøt¯êySQƒG-:“úÇ;zÜýåÿ‚Iü_]ã·‚tkøÃiÚŽí5òwn2“ð µý{ÿÂ=e<°†´LtÚ½ø¹ƒT8šré4ŸâÎëN9ž YN‚ûâÚýQcRøset€}‘|²0ÊPqí_|rý…>üY²½Wðå¼7ÎŒ ðF²{ãšø»1Æe8˜âp³å³Øù>ã vMŒ|<î¾ÔzIvhþÿiø$—‰4õ ÿ–º³Œ³(Hÿ‡ÐȯÄ/‹?³Ï‰ü©^éZÞ•$:Œdƒº2ä÷¯ë?<@¡œR…³µT¶ïÜý»†Ë8¯)–c–ÛžÞü:Åÿ‘ò~©áY ó#dÚÙÆq^y©hnš@Þ`<0Ç~{WïxLZª“Góöw“Ï ))#»°t&AI$ßÒ°n"`~cÊ·NõëÂW?=ÅáùE ­Û$G°5T"î&NŽ3ŸlWT]õG‹V™ÎêzBJ®ñ®0~ö+{yá•Õ‡Ê#ÝFjJÇÎãhòÊè­r¥ºFsÇzª¨y,äÙÏ·ØóžŒˆ)\¸g>”ЧÆ?‘#É“ ¨OåI¹°œŠccËÍÀc޼{S£¸ln9 cð 5Ç%G ñ“ØÒ ˜€;ʤORÂt‚§zP_oEŽù¦>ç ÅCÔÒØèÇäOzH±bH¹ííU^àùŒ¨£üþ´èçnHŒd jŒ\«89ãžG Þá·ª‚1מjäg!úo#<ôÿ?á@>Wr•'åS—+ó•*£ªžôåa'*Ló¸`ÔqïØíœ€p)_Γ<) ÐŒpiâYj«qè:ÐÄ•|µ.‡x=ÍE#I4‘¢. ãÁêBK(1ð%_CÆ„2Pï''¥L’¶J…û£85eær‹9¾•=@®á] È óÍ0»,”äóL2#f^¼»PÊîNÕÎ3Óµ0+îÜ‘Éì*Ê·•òäìaßó¡ -@ãûÄ‚IÇ`iZA®÷`•!ÐD™6 ’ÀõÇÇ——ÏN¹§`$‰ ˆñßRã81¿dŒõNô1•çæŽ š‰Wœ±ÎxÈ?vª$²yË+„“ü ö©afv¯ŸÒ¤fªÂðÇ»<±àÖšís“žr:Ró,d˜2‚?>*hˆp2Ø”žœúÓ{h8îm$h±«Ü¨(£9ïc×Þ¥3[]†ycòÁ_âaóý?XêÝÍôZn¥`mvùmòƒ ©·pŠÝn&C¸‚N½j“؇ ÙÏI)C˜›iôêi¦‘ISŒáM[2¸õo1ÃJÝ8ª’$¥~s€2Þ„'±­j`Q³-ü\çô¨^Q"n969>”Zìcöä!mÄdƒÐŠm¼§cœgòõ£  ÈJ‚Ç cüô¥fEÞÀ㇥+»†` îj‹r&Ò‡qÇ¥èKd–îÈÓïàŒÔïZOmmös S½ÎúQ±KÌÆ!W1»ÇðÍ]³Ù$rTÆr<óO “¹i`Ñp8ãÇ"¢i#Y[”?uG­HݬBYde2d·r;U%Éã½4K&2,jO=©FBQÌxë×ü)ØWêFs±ËžsŒvÇ4¼±Ÿ|ñBwlPÄa[:žÀÿ…>I"„C°ääCWI\ )Q_…=>ÔÂ1»:M'Ãwø,6¡èØë^…§è¶JR8ÔIÆçooL×%j¶÷Qô8 Õfo,ÑB„[BX „ûzÒÆZçh“…#(Ö´í7FFkוuçéÞ¿¢0ñ§–ä®u]½ÞfþW?>ÇÕžsÄÊcʽçôñû.ü ¸ð§‚ô-2Kp/ö‰geÏ<ý"Ѿ®±¦G Ы¾Í¬Ãß5ü‘Ä9Œ#ˆ­Š—Û›+|S™¬5uË/ƒO¸À´ýŸ¬ÄútK`‘Ù#y‡`Ú0?ýuõ½¯ôdK&±ƒ3ÇI—ã§Nõðy¶n«ÅRÃÉí¯ù ÄC_õ{NéEÝúž­á¯ Áôv,Tä•ñÿí“ûhxö5ð6£söˆ/~(Þ[·ö^– < gä(=«cÒ£ Ê«çy®Ak9Y¾ËK¿’Ôù ³_ˆ3Šyd“iÉÿ,²v‹ÎÇñÓñ£ãÄoÚKÇz§‹¼]¬M¨kw’´ŽÎÇj§@tP˜gÃ?îu;H¢“Jßw ÆvýÁØæ¿³0ÑÂðæWGEòÆ %ò?¤2¼¶•~ZP§jãËm,•‘âÿ> Þx`Mw³,ñ·*QþE|ýeÖ]èÆ3Ã{ û §Ãí®Ññ\A•,·0½5hKU÷Ÿ~Æ~-ŸÂü'¯Ú»#X_Ãu¹O÷71_èYðàèž>ð†¼q Ì&Óu 8îa”0ÉüŽGá_̾3`ùóªm¼_ácáüYŒèåy.>? Sƒ~z5ù3³¾±òS2qךä5 82Ø2Üs_ŠTVm[cñŒ-m÷1?áÒ5˜^ÁR§Ôõ¯ÍoÚ³öð‡Æ…’FÑcƒUOn¢‰pþ»±Ö»ò¬Ï‘âèãp›§ª?@àÎ/­‘fÊ´äÝ=œ^Ò]QüÏþÙ¿ðMo|žã]Òtºðón̰)o/ê1_>/ð5î›#$ÖØ‘ ]¸ÆîÜÿžÕý¡á÷aóü²XÍ{Hé%ýw?[â<³ž`cešÓ¨µ_Ë.©ž«èK ?—_ÇéøW{`‘³ï+ôé_±aª©¥©üñœåò£Vqhæf…ƒ <ÿßYü+:K|e‚¡à×éBLøÊô¬Þ…$"V +¿Aý}kSÒ"“;€ÝÔvÅtÂ|­6&’œZ8 «?"@Œp犠rrr1Ò»âî®|åhrI¢«ÆWhüºSH;¾÷ËŽøÆjŒ¨p_¡¦²Èwç 22’…N}ûP[ ¹@ùÓ° chÏËŸjq)Ü÷ô¤ŽP’XTŸ|„ÏÌ{Ôý@cG´`õëMÝ2ô$Ñ Rëß¹íJHX§ž)ulPÀÒ ltÆqš¡5³BáO^´] ®äh¾{Œâ´UY3¼»É'½!¤ÆÑžÀ‘ÇÒ¥}ŽÄƒžøô¤cÚ~l sÁ?çÞšNÂN>QÐù¦#IE/¸î§È¸]x' )0óŽ#‚¤†ÎAíM‘Ð9trÄ—Ô{P®”2*w(ž†–4 ÊÄ ØïÎMI¹HA(ùºä´Ìi в¤c8?J¯¡{|Ëëý(@J6vùvƒ×žÔÉmÕAhÛ9õ4À„r ¨óÓÖžb%FOÌ={Ðm¸Š~nôÙPy`î%½:Š‘Æå:üÔù“;»ALW™å¶£|‘‘·¯·j^Có%@à×<òj6hÉ#„óŽôÖàj¨ˆ QŸ¼rhH HwgoO§çPW™¢%جŒK( ±<ŒQСë'“ 11ëçP.v îzÓA}Q#®ì®y®y§¨±RÊŸ—¦ 'ØdqDW%”’O'&¥+$’27ÉÇ9nž¹§pØ£<ÞKŒdŒzŠt,†sÀÎ)ù“Ô·#…Øê»r9Í=o¥u?(鎆¤wå8w/ÏÒ†–DO‘¶¯Aóúе· IØ$œ×'‘Kµð$>‚ž{Žó x;òÝ@õ¨Ô£>>„»CAr)$†þï·zŠ6RÃ{`Ær1L’À*y2žÞ´ŽÀG´0Ǹ₴±rª´ŠÏÇo¥;w!s’Àf_ áÇWù`=º×Äñ`²ŠžÊ¼ìÏÚ¸/ÃÊùÆ ëõ$£ô¹è6ß°ÿŠ­ ©â ø ¾¿Ìq^µáÏØA'h…ƺ‰Æï×ç¸ÿiF<øx]¬åÞ`èW^‡ ÚþÀZ4†hçñFw˜b?7·θïþÃ]¿›cuçx‚y÷ÿòpþ&ÔeÔì™îÏr®KE4ú¯þÈÿ,VY¬ôI$@8wcÉô¯ÕþøÇD󬯴»ˆŒgØdý}«îòÎ*˳/v5W2>G2á,fõ(Çš>[¢Ÿ†¼#â]bù-´å‘§'nI qüû×C¯Xx³À—Ñ ‰¦[¬î ¹æ»j×Á×­õgfÚØæÃàsL&ãSj)ŸCü(ý«|Kàé,ÿµPj)ýäS¥F{63Ò¿¡Ø×ö–ø;ñnßOÐà× ²ñ4Ši×’*Hùãä'†þuøÇˆœ1S …­™` Ülî—Ùóôî}eLÞyÎIR”ï©«ÛºK[yõ?S®>}·Oxã·Ä!w)üÛÁR¾0i~ñÿ |3¨§öÙ_3Rx˜+?v2}{‘ôù—…õ+æüAK/œQnr¿Eø6GÎp¶xéK;ü“ù½âÏÁø¥“P»²äðNzžŸçë_°°ÁƒªÜÏã;Û!¶0ÜÁf'úWôoˆ¹`8~­:{É(¯ž‡wEψÇÔû ¿›Øþ¾øUÓ­xü s_jø?‰*-°à濊óütëb–mð¼[™sâ+(ËK³Òï´e´ŽY¡A*¯ÞÛŒ\×ÍkŸÙ—àl)ãŠZ\Wèl­¦[›–aØ$yÚÞÅrà2ŒfeŠ Rrè—âûzŸ–`3<ö§Õ2êNnúöоò{%ý#ñö¾ÿ‚ÏjºâÍáoÙïí:.Œ®Ë6¦ÒµÝŽ@ÆÞ"_`Iç¯jüø™ñ£ÆŸ|JÚÏ|Gu¨ê3É™'º™äqÎ:±9ã×Ò¿©ü?à*98ÜL/‰jíöò_Ö»Ÿ¶äùV†0PÁÒQž&Ä©m]þÊÊ¿Ϻf¯ƒ§£ÃâwŠ;“/ʪ܄õ¯µ}˧|<´²öÚ`WÏñ&iˆÅæ5h+¨ÁÚÇêXyÒÁá©ÓT¿ç/Ž? `Õ¼=ª9¶UFlã Áçú¥~$ø’Ëû/Y»¶ŽªHØ€0pýÃüg¶ÃÕ¢ßÂ|·RŒð´11]OFø]âÛ­W²¼·8þu“è?úõýíÿÁ>>Íñ¿öeÿ„nþÁá½ðµÈÓÕä?4о^>3Û‘éŒWÇø½–*”(ãbõRIüî~?âT7€cY½põbפ½ßÔýk¾Óí™ 4\uÍpú†— A˜G¸ž™+ùÏJ »-Qü烯=ÎJKyÁu1½‡PsÒ»I!‰Á œsȯ/ÞVÒÇÐQq•Ú{yão†¾ñ~—y¦ê–ÑK ªC¬‘†VöÅ6·¯üfüO¬üAø3§‰-Àyî4Äûàc,cÅßÒ¾Û¸¢\/œÂr›ö,—mt#õ߸ª:òÊ37þÏ[K½£-”¿G÷ô?™Ï‰ÿ5_ jWv:…ƒÃy20e £Œ_/k¾0I01æN„qŸóÅtdY•Õ×t|õhÚèçuM1'äÁ3sÎ1ŸC^}qg$syeNp1ŽþõÝFwV>sG–\È¥ ØT–ò¨éG˜4À ’x>‚š ÌÿãLæPÁ‡'¯½5[pÚ:wÏÖ„ºïÜè¥EÀ Ì3Þ<•$ 6“ŽsÅ:8cÉ¿-øÿ:.¢.Æ 'jhmQó±FÑÞ´=k’Gknä¯ñH=†*xmíã+, 2 '©Í-l4‰ÂŒ«9Àê c_dJ d·oÿU%¸=ˆmÔãëžÕu™zö `ÕÐ7¾IôéÒ¤q¸{qšZËO•Œž´² ø OlãëL<¹ˆPãëÏJ³W ÃðúP{8àœÔñšŽ·D{d†éH¥XÕQ2Xަ¢y˜vð8ãÒ‹ “x8@H䎟J@ï±'ÈÍ01Æò8 „(¸zBï¥NïoëOnd œœö¦sÇ ~sÈÒ¤€`®¹¤\mÙÉÏ$Sî­Se;±“·ëVK6ÅØΩ’\€Xp}»Ó®Ý³ØvÍ+\{Îyµêi±z"²D¢bv¨çÜÔ "ãc0ÀìZZôv,çˆp#ÆG¯ÔsÅIóQÉ ñ“×ÿ¯þŠ[‘o³ ìé·'ŸZr$Ò1gfHëȧÐ5z"hVT)e ó±ÿ9ÿ Œ'Ì€—<äŽNiІ8âýòÄò© @Dv“ϱ É«•Vùܰ=ÁTnzü›H· IS$Q)m߸PI\zzÓÒÙ›nrÙ‹jÇU¹8m uLœt=÷®£MÓdºšÝR2ÅD{ÛþµÉZ¢§&Ï[/ÃN­hS‚»mpüðÇ‹ Ô¬åÑ4†\äp}«÷GÀ:D·ú6—ý«nŸÚf%n ýz×ó‰Øª3¯ Rä¯Cû7€pUð¹:uãËÛÐôÉ<¾HO”98ì}+j×Âilâ5R9R +ñ¹ãy£kŸoÂ=NÊ ¹´ó’,ŒþðU§ð”w1„v3È'Gjçu¥u$ŒV5&íܤ<%$Inö¯=ñÁý[…ä}.b~ó þx¯K™×ÁÖJnÊúšÇ ÉF[3Ì´¿ÙûÂæò=º$q]+% øW’üpýžm‡âÍ_×ð_X]Ëän'‰Ê´g=A#ë_Ð8Yá³l¾3V”fµê~1Œ¥‰Ès)F.Î/GÝ­?à±ß´Ï­O k:½¶¿ ÇÅlš²–0¥e\1#¶âzWåÏÅ/ˆš—ÅëÞ3×uY®µ‹û‡ºžIq’îKéÞ¾_†ø-á¼ß™`¡ok¥¿—[´¼Œqœ²8|D°Ty*×iÔ·Ãu}—K·wЫðãÃW¾#ñ“¥YÀÏq4È›sÔŽµýTþÉ ­|3¤hzLVã1Ä¥†Ñ–||Äâ¾OżcTèáã-““ùmøŸOÁà¸kŠoEèÚOø\GmfÐB¡6¨ cë^«ã߉_ ?gïê¾&k°Øè–±·ßaæ\¾2±Ä½]§n§šþE£F®;2ä§iNVK»nÇáY¯Ös<}<9U«.T¼Ûþ¾Gò›ûsÿÁ^¼yñŽ÷QðíBmáÌLË ­¼¥gºûÓ:à¶q÷~èÏ~µøâ?Ššæ­­\M{ªÈÒ»<éK1'¯Sï_Ú^ðN#Ë ëÁJ´’rvëÛÑlÖ+,7dô2| \ûÕ’ÞR{¿N‰t0nð¯æ¾.ÄÃ*ÍëÁ%ïJï¾§ê9¦?ØÃ ®ð‹üÏ›~7øBßKðÞ¯vð…"mÝÕüèühÒì›]¾ÔôôSbe+!_á>•ôþUŒ±5*Røems9ý†Ü›Õ=>Gx~s Öç)`rOqÚ¿¦ø"íS§üøÍ§xoÅúƒÅá?Z®’òýݼ凒ì=7|¤öÝí^lj˜ŠÈkJ*î6’ùkúã°3Î8?8Ëië'MÊ?⎫ò?´Œn\ŽTŒ‚;ŠÃ»Óšg/´ê+â©NV?‘(ÔörÔåuK$°Æ×é€;×?‡ÝSÍ1±aÏ­xÕ©sM´¶ì{Ø\G$UúœåÕ«“°ÆF3€G5ËjZ%ýÜ3ƒn%RHÙÛÒ¹\e)Z'»†¯ rR“?ÿà ¿°÷‚jß¼Cy§§É òîRþ5ýAàÿO„†[^ZÃDßTºÓxHÊ82jº×¡WÝ¥³û·ó>ñ˜ÐÜTÄd§CüëÍïmÙX•ààcŽÆ¿©0•¡Cù·ˆ0N…z‰­™Í\ÂÏòàqÓœ{þµ•$>QV\ìSŒgú~UêSv> ;‰$^rÝè{šãõ8HÛÕNÿïv®ŠRjG‹¥Í„– Ñ:þñyùR*àüÊz{× ¶>nQqnã 8W%xéô¦¶ÌmÇÍ‘œ dŠÞ`=±>•FS£=;PªKÇ!#çé?Ï¥Y…Ñv¶Ü“×éŒs8Tsœž}*ÁC±ˆ€ÝÇe…sÚš@ã çüŠz­tN¤|Ž'’@é66nî3Y#{_sAbÛ˜Š¸d`ryïYßgt,© Nz i›¾\BdlàãÔþ}*¼êSl†/Ý×=jVö5²å¸F"s.=ENWËšÐ|„üÅGÒŸ+nK=żLÉÃr¼õúgüõª¶rÁ#3Ýp«÷xäÑ`æ\ÖèKq,(­*©cߨúûœWSñ˜B¤çcôoö0ðV…e{ªüBñ-ÚA¥iÈ6Ë.p\öQüGé_Ò7ìy­i¾=±Ò|K£À륳²A¼r꤀}³Œâ¿š|S­Zu1X–½Ô”­›?XÌ(,'FÚZ:úËü·¿h?Úëá/ì‡ðøxƒÆ×‹>¿*“§èÐH¢âõÀàœýÄ«Ã5ü†~ÚŸ·ÇůڻÆ:Ÿˆµ6‹@ž=?L…™mìaôU[Üäšùï89â± ?ÆÇ܃µ4ú¾²ùl¼ïä~wÁÙ3Â*œKŠêKš4Sè¶sù켯ÜüÖ×ï¯dviƒüã©Éçý+ÉÇù¹” ×õKgðÎÝm¡ìÃq9ÍøÇ˜Ô¥ÄÎŽÙÙ_ïgí|i™<-L¾’výÌ_Þä~LÿÁLuáËí*+”þÝ¿;#„HÇä³×cñ¯å;Ä*º¼»ÔCº)Îy?wÓú×ë¾Q|ã+-[ü¿¦{‹0­Á¹hê¹?–ߌ>ÂúHçÔm#Ý`ãYéë^ëðâ&»áýjÎçOÕ rÃ*:¶HÃ)·zýK7ÂÒÇ`ªÑš¾XæÉêTÃÕŒ$­—^©è ÷üWöÔÐ?k‚º5†¡¨ƒñKB³†ÛY„‘› *\'¨l ñú×é¨qÆsÒ¿s ðÕñ9«Jœœ|üŸÍYŸÉÜ[“Táþ#Çe“ZBmÇü2÷£ø;z™Ï§C#“ ϶*&°MÌUpŒW‡,?'Mnxq®ö9}_Fóß Àãpà×?&…5Á’—lc–‘Žñ5æJ„¥Q¤ì™ëPĨÁ_[V>Hø»á…Ô"¸·•XAÉÜÓƒÐs_Ï×ü'öiÓ8å@=úþ½«ûç Åýg Nª{£çü@ÉÖ^1]N.þÜ®Lc œ¯Ö°žÜí;¹çÖ¾¦/cñ e.Y4f–)'˜íèÇOÖ¢»‰d+ LÆOzêĬxµcx4ÎXÒ¾Wd?0Ém£¯ÿª¸×o™”㎾¿­z4¥Ì˜ÅÓösv*©àç?^?n6™ÆyÆkC„ÙFCïHå$–=>´z}*e˜#éHC¨Sê¨UU™ÈééÒ¯y€ìPr¥Èæ€Ds)R¯ÊxÏøUHmÉëœö£ /=ûÖ¥©&`ÅÀÁÏ4˜Öæ­Ø$'Àëô¬{˜PDª99Îyüi"žÆfÌáŽÞçÐÕÄ8ê†R:‘TÙ¤ÚÁ±Œç¦*FÝ…ãþºb=Éã¶H¨ä±Dz÷&˜¤Š_0îcŒwÒ–6L¡eç¦ Ó`ϹHÆ3ëR;îP¤’Ùìx4€a™„f0;¡¢Q¹YÑrx¾´U‹ô sŽã­@ÊÈsøñþ5I«‰’¤ÎT ø>µhJ².7ayãÖ”É Â–Áo—¦ÑéU gã¶;}{ЀIøÉÉöíIæF W'¶M8¹bv;µ1XZ UNÿqhÜÈèqÚ•ŽÐ '®iúÇ£.æm£àSB ê)úiÀ@W“ëJ¤ŒdŒQp;SåI99Áíôª²Cº¸qŒð:}k$tÉYš±ˆ-Î aI#·5F`êÛŸ–àúŽ BzêŠi4¬9$ÛmÙÁ}ºÕ ¶—•ÛÀ=j×r[{ˆèD¹Ãp=¿Jc]¿Ï³‚IÎ)ÚäìVÞ€Ÿ—2“ÔðEZ@L†1“ÓŠ–¥Iå.ÊÄ‚¾›‡L’@*ø=À<šhO[Ç\g§<Ò¤,íÂädã&˜‰ÁP­·9#§¥npHßÛ<þT È„näñ»<Õ†¸ˆT.yÍ ½Š<1©þu\\ù‘¹ã¨ªÂm\oŸ¸å¹ÏqØÔO)sóQa7 ÒF ÀüúSœ! ÎNÆžäÜ<ÄÚp¿1sÖ—záp€`r=iY¢o”áTð=)R91QÇןʖH-œ¶é8Ïz›ÈŽ"O%N@8àQp-ĪÇ%pô{U¤‚1˜Ã¾8<}(Ø´YA x÷)*LÖ¬ïrÊÜO^~èÿ"²“ÒçUsJÇcgg²#Uˆé×ÿÕ[qFB«˜Á'€1ù×W{³é°ôùb´4!@«ºEä õèj‰”<¹`ÙŽ8Æko¡rÚ"_ ä{žµÐÚBUwÎI=ë=Ü,o%toÙ\ƈÜ.ýÁ®K}쎳··æ+†ªŠWgÙ`jT“ЉèZ^•}pѕ̙ÇÝï[·zuím‰É rG¹Ç~kÅ©Rš©ÊÐ0˜lOÕf½Ôb›ÆŒ¸i®NI +NßZ–In½?É©”Œ}¼ã-¥¿{1Çr꧃Ôdgë]¶ãÝNÂHä[Â6À³´u®N_G§žö]Ÿbð’N5—KžûàÚçâ¯ÃýJÛPðߊ®!e$ÑÙ¢#¨ ƒï_ªÿ³ÿükÃ/e¡üfðÈGmˆuKF=ZHÏQþí~QÅžÇFX¬³Ýª“Ó¤¿àùŸiG<Ãç°ú¾-ªu¾ÌûùKÉþûðëÇ¿þ6i‘\xÇÚv¡9]ÆfT•º6}1_+þÔ´¯ÀO€–Úuö°š—Œrš}¬™N8ÞÜ…ê=M~/”àø‚®p²…E©óYÝl»ú/ÄË-¥šÇ0xã1úÄ©à²úÖæ¥EÛkÙ_CíqðÐh?o5ù"ÅõÄÊÎä ?_ÙÝIks%Å¿XqÓêx¯O)Ä,bÄËuÌÑëqêð<šZ+ï?V?àž¶‹¿fo‹¾ñ®“xÍeëõ›I…¾¶n$¾£§¡×ú|%ø¡áöñ^íeÿ“Gü×þ’~ã>Yí^]Ät£ñÇÙMÿz:Å¿U¹†ÑóœÔN»Wç•h«;Ÿ„¦@á6á•’kÌu»«‹ã û1K<`}ìz×ÏãÚ‚öpZ½ß‘éeñ½Ni=¶õ>mñËItòF©ˆÀû½«àŽþ‡[Ðu{;Èó‘2ôõãå•¥ ÚO3öþ ¯õ\^qz¦Ÿâ _¶OÃI<#ã Z±…ÙX0O­~^x£KA$‡+´t óÀé_ßœ öùVo{/¿©úw‰˜HÔš¯¤âŸÞxõí¹ŒÎŽ§$}ßÖ¹™m¤‰÷¿8Ï‚¿M¥%(ÝÌ™Z­sÇ „9'œD³ï-ÓÆÏVö®¸»Ÿ5V6“Fv¡hvœ°ñÓ¡ÿ"¼ÏU±û<¯(Cå±ÁÏsí]¸y#ÀÌ©is •yMØOCÚ èÏŸºxõÖx[1ô\Žy¥ Æ3“ëÞ˜-î*’2Žx”¬;¡D剠íÔÕ€¡òÌ9#¯†-àew sŸSÅVT–2ÍÕqÔšI±‹ ^¯wÇùþuYÆ =»€j‘-v%‰I'žÏhx°GÉƒÜæ$&ÓÉ=qÁä u¦…ÔêgÇïÿRõ¬Çi6„Üvÿ1P¶FÒ½ô6¬³å4ädwúö©¤]ÉçtQÀÏoZ‹ksHíbƒ‰QHP™j9ó]¦ÆÖÊžµ[ÈÚd0팜–Ïâ* 2e÷àçMhO˜ÔhüÏ9HëƒÏZžæTTÆ|óÏ5Ôz+™ggwÀ>œàÔG– r=é7$ìíÈ8ïOy[ µŽHÃÞ€¯ü@úçRêTŽ;Ѷq‚G•àŒ_>‡žiØ[ŒóÛ¹AÁ¥/½‰EçL@æSï·JTCµ9ãš4BÜQPsŸPzS¬ª°w'Žô®RB‹]Áo—}©â ´Ž3Ö‹ôDñ„r;Ô«=HÜE- K¹ƒZZãí.^y<­ÙéóÏzïtÛÐ^¼êO_ò+ ¯•®_Oš|ÇPaW%C|‹Üp3ÜÖ¬,°Y¿wÑqž¿çùWÙôЂµ‰Ýp»{ç Ö§¶Aœax`{ý bä_-ä‹°Ä%*7ƒŒWIml1™AåyééÛ¥cR\¨õ0tî΃DÒYßÌŒœƒ»ùO|WÕ¿þ j>3º·6ð–…¤ü£—Í|ÎyšC„i;XýW‚2 fØøRkÝÝŸoé?²§‰lî­m¬´gŽÌàÉ#)QÇö¯Ÿþ1ü1Ó|­j67²:ÜGœÆ«ÕqÇ&¿7Ê8ž–b¨Ñš“{Ÿ»f¼=†Âå3TöŠ>M¹³V–'A„Üâ‘Ñ¡Y›`+Ó“¯­~“x¤~V<³•ŒÉ^XI‡ýüE\ X1ÉŽ:Õ5dM6îjÃm<°í¢r¹<çÓ8üiÞ\C1ff@ ÎGãéŽk;FWG}'R‹Sg§xwã&³á ‰áRâÖçiW¸ŠvF=ˆÈ ãŸÖ±¼GãS^¸KýFúIço¼ò;1>¼“ë^Trl-<[ÆÆšç}m©ôÕø§[°2•¢•¾âOøgV×µû]Z+MöjûO#*Nr@¯ÚÙ«à¨ñ3Y‹‹Rm”#(èOn{ž+à¼DÍ áJZ¥o™õü‡• |ue£Õz«:ÀÍEŠK=9£²Š0v¨Æ©÷÷¯?øû=ÙøëÃ×W —v áŠœ1á«ð\2T«¬m:·©]§µï±îPâJ2¯í"ïùZõþ´?Ÿ¿Ú§àö±ð×Ä*n-äH¤rê'œ×Æw’¤‰Iµz·=+ú†1´ó\¦Ž.=QòüUKêùƒ?†vkæ{‡Â}ÆþþÖK»å†YYULç £ûßçÚ¿_þøKÒ4H–Þj°Ý$À‚\㓚øÞ8ÆV¥(ÒŠ÷d}ÿÒ§K.Võzž‰ªxI\nDÀÆ#üþuÄÞü3¶½<¶Û•º¹ý~µðôq“Â;6â÷ù^ªÓ©Ùå²þÊ~ ñ²—®†…‹ÅA‡qÅ{_ƒÿd?ZjðjÐx^?³FÙ>ð™þuÓŠâŒÖ¥ aèTvÛúg‡‹£—á*¼CŒy»Ù^çÝÿ <*Þ×4½h[ˆ–ÖE¸ÀXÂG^ÃÈÿÁ]à§š'ůè_þê2 u¸×¯PìKû "ŒLqœœž Ž‚¾o-ÉåœçøE~eJ^±m­|Ùùv}Tâ^,ÊóÕocƒç”Ûó·"õº¿ÈþXQÍ!½‹Ð*tCóÎÎ)!Uß»$.9qúÒÚãèKþ™ªw௛•§øÑmI¹P|ÈJÈry#Ö—ÄäƒëNĶ'Ìä¹>ô†]ýW@:PÄEþaŽ€þ4çr}1ÍW¼Úï꣟a@v1n:hÑ· ûÌHT‘Ãõ™û¼sG0ì?ìû›8÷Çe‘T FÎ{Tݱ؄«¹ùŸ$1Þ£²±BqÖ˜¬Yò®qócWb@#Î0:v;¿Â§R’êÉ´œàýßJ °?"üÝGÓ\®€A$(a‚94äî A÷ü©6 @\–8?S#¯–úñëEµÐ÷º1¢| I9ÅdË/žÌGsÓ²Šiwc¹Ðtá yn;ñzî£_ ÕNó‚}ǽrV•åcérú|‘LÕŠÆØ”ü˜9Áâ´  Aöè+‚oSÛ§fVÝÈÇl¹ödv ÕO-ŒYš¨ë¡µ¥Ø´²±°lô#¯Ò½oBðæ¤ÑÅm‘œ¯Ê àf¼Ìn%Q‹”ž‡×pö[SZ4á¶{Õ‡ÂCFÒ¢Õ5<¸¶ªpÝÅ}ßûëñYø»GÒ#µŽG2änœwæ¿,âúë0ÈñNœ´IëèIðvQý‘Œ§F¢´¥÷ƒD³°Õ®–=ZÎ8ã< Æ@ϵ~fÿÁDÿg™l'Ðüs¦F[Oº­åu\‘"Wôõô¯Âx/,y‡­'¤›Oæ´üO©ÄNUeS-nñ©ÊüÒ¿ùŸ‡…/` ´rByÛÔfªCàÛûÐe‰ &w ¨Ú{ÿ]OGE6ô?)­ÃÕ]z‘µ¬rמš)J0ËœƒÆqZ'†nµ+…!R ŒaqÅvKÒuçRÉ«O[³ê| šú4ûtDAüÞ•æ~j>¨Åf^ÊSò…êOùÍx8lâœóC›âÐý#6á(SÈ]h«T‚¿ª>j¸ŒÛM+ccݦ{æ¨Ë©JÛbA–bGC€á_d¢œnÏÃëÖ”fãçcôöYÒ/oM´M)¤ódQ#c¸€ ?Žkúhý˜>ØèÖ:eœ6¡¤;°\å² 'Þ¿™\úÿõ«é߆µWŽ~̧NÔŒ–Ä€ðÌ7ÆÙö<~5ö™ÎE†ÌèJcÓæŽnâ¹åóÏšKyª¿¿l…>+Ðm×Ç÷COÕÔî"/·N6ò:úWÛ>Õ~øÎÛ†üM§ÜB1ÅÊQœ|ÊÄÏ­~CËç—9SÄÑÛE.'§ÌýB½jõ(ýs ïRzé«WèÖç±xoὄú•ºÄ±J ڟ½þ×Hð„£µÆ5Ñôé\W±#Ÿø 9ý+ó^ ÆWJ40tÛsì…γ<^"¤pøzS©Qí¦Ú>ýº?jï„^ð5߀¾ënñ=Ñ0ÞßZ«ù0C™UÈÁ$ñ‘Æ3Í:þ-Öuß¼·%ÏÏ<×5úg†¹F#—ýoüI»ùÛ¡íeØ|~ lmZ¤œ¤º¥Ñ?4·9ýÁz¯ˆ5KX,šGw ¨£$çŠýuý›?g;Ÿé‡UÔ-1©\ $0ÿV½kèø³4‹¥¶–³›Zy-ÿÈõr<<'>6¶û/S•ý½5c¢x3ÃzKûò ¸ÿc'ù×ãý²Û¥EŒn, ^¿ ÅÃR£ë'ú#Íâ;Ö«…NVþù6z>“ \8òÎq€kèøG^†{k‹)²«½Šç:{“YçxÊ „ÕY¤š{ÙNq²QÑî_ðHÏÛ[Xñ&ƒkû;übÔŸûfÖ5½¹,MÄ@`Ú³댦{qé_¼­Í9béÓ£‰¯†ƒº‹m…ê¾íWÈþ5ñK‡%Ã|cŒÃ¨rÒªý¬;Z[ÛÒW25’ÞÞY]ö 'Ò¿š_ø)üËQÑ®ü]ðoáM×Ùç†G¶¹Õ­e-,áFc+Â.I÷ÅyfNóÌþŽì/z^‰íóüg¥ĜEÍ‹_¸Ã¥R]¥f­êÿ,¾)øãラ\Nu«¥¹óÈÞ{ç?Ÿ?ZƒJý§>&éE.4Ï_Äàà2ÝÊÆ2qžkúŠ#“ÕÂÆ3¡¥¶?¬±ײªèòEÅik+YIü?ý¹µ­A Ò~#~ªv‰× ‰nŒkçßÚ?Ç~ø›6¥>›b°êPÆZf¤øOkƒ.áš¹Vr±8y~ï·—c|Na­“Ö§EI5ËÙù˜¾!·Üòn÷ ‘ž8Ç¥yUý°GaŸ’O‡ë_·à¥û¸ŸÉIJ؉úœü¿y‚AÉÏ@ÿ&²eˆÎ:œòjõ)´|&íU ¿”Ù$ôÈþ]*µÔ$©}Äc޼×JzÜòªÆñ±ÃkºrÎ ˆ¼Ž}È®$E†Úž¾‚»©Êð>WO’«eP cÀ©ûI/ótÁ­‘ÄL„–ùx+֔ü«1ž!ù1 ‘IäÕ䌮GîÏ$Þ” +è4°2‚¿xtü)$ÁÉqÜH<‰`˜–NG‰íþ¨ªQ%äd ǵ u(Ìó7™60eB‘ü¨Àò7\ñß•‰½Ìf›s«{ý*X7`xZ²KÇj¦@$ô#§ÿ® \€>\Ü‚*n6?Êù·¸ù‰Áp)ÿ6ÿ3€GŒKÆ ÄR¼?)$€ ÇO»@ ò÷+(õÿ8¦¦ÒNWæç4î"D AÃýêú€Ü©ç¤ØÈåËmlá=¦…28`Ç#žy&˜—!鎧’xÉ!Ìm³9‡ŠC(¼xçJ„î8Ýœæ­5mHh”HIÆ{T§ržß…&,¤Ëœ×ÿ­R)Àoîçœô% ÇQœ õi]C¼îÆM ¯ pCt÷¥IFwtÉüª„ô²³’}MDÉÈ{úS[ˆÚGŒÉ¿¼z~5f{°@X”#Ž• jktŠFéJ²þ½j·œ­ùpO'=©’Ýʪμ'=1Í/#3,Ÿ­1 bv_¨Î<ЬFô4ÂÌ@0:Ò²3ó‚sŽ´ÓHNà°—V;»uÅ.Ìí%Žï¥+“mK öUuùÈœÔÿgr@þt4™bIl”Ç_˜ñ¨„@`0÷Îhp~M…xœçÞ¦Ž ûah/ËÕìõö¤gðpïïùÒ!(8;q÷zÐCaƒŒõhU²>aÉèGz‘>R¬ëŒu2“è3ž¹ùº{õíV ^Bœœm$ CH¬Ãªþ M9•E*lÒ'­‡#¶x5B£;Û#p)ù×b”Óîоµ±¡Y‹‹•Ê«D9 ñD´‹4¢¹ê¤z¬M,Ñ €zcZ°«YÜœŸ”(Çë^tÙõ¸xòÅ#^"UÁÈÜGúU¹·"n~_óúW·= abŠÜe†g¡ö­kXÊŸ)=ù®=ª$ì®vQ‡3G¤øWB¸žâs>ßœ‘Û5ÕøÓáL>jþÖ4 ìÃu¾áÌR/Blò>†¿ «ŒúŒSœ¹gNKïLðqx·—ã/Z~õ*·ÿ·[Ùy[ó?%¾+þÄ­lÏ6Om¨GŸ§ÊGnݾ=Ö?f¿i·iw1Io‚©"¦FîÙÀàýS‡øÖŽ' X‰{ËgÑŸs &4¦±8y]˱âß³gŒá£*OÝe$îô'ÓŽ¢½ƒÀ?³Ú95 |2œmá¾§ò⾿Äøz¸UÔæË¸n8lK¯S^Ç»ßéšt‰u=bD‚Â5-‚ÏŽ€¬kó;ãÆËŸêRÚØn Aã#¦I}j¸GSŽúåEîÇoSŽsŠYVS,:~ýEo‘ñõüív7DÜüÅrÏz¿ YEæ¾T3·+»¢ýz~í6æ8ËÛbÓ{_õ?Gg¯ŠV.t©#•ÉW•NàzqÞ¿«ŸØ#â/€>/è±j¾ÔSûJ5Q-´Ä c¸=F{Zþ]ñg,ÅQ§[îKGå©ûŽ]â8'ÚaµöQJIomþ]OÙß hHÖ­–”wbWÇ_¥tÚŸ…ô{þÂ=Ž£#‰UNTŽÄõ#Ú¿ž-VåN馕»³ùj¾2¬1Iµš’rôOo¸þ[à¸þÔ Ôþ´ò´ãaq,R)ᦠ7qì6þuüŸxžÞ[{ÙPヴ“Ç>¦¿®<«í8fŒ?•ËÿJgô ªÃÁYV&2¿»$ýy™çÏ&â7ØAê*ý¼äHÅœ`v¯Ùe‡ÆÓ¦šîzf‘â»»Kd¶…0?Ÿ"½ Cø™â;”]¾ÒrÛ]†O^0kÃÆåÔ*ÝM^ýÏÒ²Ž"Æa¡NZ#Õ4ßÚÇV"%Ó§ŠúûÄ_ Ç‡í­¶Z%AlŒ­~)‹âµ_:ö³–²Ñy#ã³$¡_ .ÚšÑyùüÏç³öêñÖŸâ_ˆ:¾‹¥Ü,¶Ö˜†9GÝ;Fúg5ùý¥ÛŸÌhþënÆq“žÿá_Ð\8œrhNZ9{ß~§£šûج€ñ_‡ø™ŽÇákB… ŽÎïò>gÄþ$Ìxk$ÀVÊêû?k6›[è®—æ}Oðÿö@ø[£ë–—úW„ííM»¬«4I¶E+È*{×Þhž\I$…dœ“S_d±ÄTU±˜‰·)Y|‘üÅœEŽâ ]*˜ú®¤ ­w¾½=Ïø(¿í%À_ºúi—¡|]¨ÄÖö 65 îaïŽ?þ~*ü@×õý{XÔç¿Ï4¸îÆryÏ·5ú—†8(WÆã1óW³Q_-ÿÈþŒðS+–]ÂXŒÖQ´±Ñõ压ñ¹óôÖZ³ù!K»“’AϽq—º%í¾aXGLs޵ýB¼!h¶}Ö+RW«c—ºûUŒ‰ƒ´ª•÷ÈïY·zœÓvärN?õaI¦·>oV¤c(\ó-\#Ç/ËŸ˜¼d“Î:ó}Bßv~ðiµô87h£ñþ ‡5i}Ôh ,jrz‘ÐsúÖLÑ9ØH•ÎâOÚ½hŸc)Ù³HØ;3'ÍŸ”zPÌ#`=A?ºbÛÔñjB×0o),„Œsï^y©Úy–œã×5ÛB]›Ìi˜2¡PÂàb“hÎÔç½+¨ñ¶Œ±*ƒ×§4y÷vã 0ƒ;€ó3éR#ºp¤'aÞÜV ¨²29ÍFò©;›9==éõ,FÛNT|ƒ¡ÆJµé¦ í’ÀŒb†RÕ Ñ´ebxˆÉàÔ²(H0¹ ôö¡X62mÄB'ýâz`p*¬kûÀ ƒœSÔ–¬[T °=O<úR¹Pp0]zâ–½Gek‰¿8%{ôç¥$÷|{S'r bGo19#ß­,n *¿k) ü9=)J®BƒßÛëLO2?˜c¤õ§¤Ì#ýzÑd–t7 ÓÚ®$Š 6;šZ€ Õ_…Iè>\yŒP|¸'¿*6ô)2Êw6ÕTÆp}}*‹V'<ã4Ö¬—n ™À óž*v*ÃsN?Zmy†£0)ŒÿNÕywwr½ñùÒ-0r©ïß®*0êÇ“ÓÜó@ )Ú vÈÍB)cÇÕ6(®îç>½iÀ¾ …;™-¥)#’8§}ŽPáãÏZ/a“-€Û¼ÌøSc´ ž3Þ•ÇbÓF‘©Ü£gb*ò úZCµ†,EA c'i’Tð©’(ˆ¦[q R;ÉÎë@!P]FãÞ¢û£IÿŸÆ€òvÔ‘ý*2Jƒ‡%2 $ \‚­È‘Úœ@| =‰íLv¹I´¯ÀB¡âšµõ éb´hÆEr¹ã޵êœ--ãf˜úf²¯+DíËáÍVç\ªq€ß)ïƒÀ­H@UñÆ+ΖÇÕRކ…¹\b7dòE<á¤Â¹*02rõ;ã#FÞ%+Ÿ(Žx÷Íuz=§ï `m8νsV–ç³—Ñs©­> ø&_kº5œoó%W8ÉÇý`~Ì ´ÍÂ:f‹kbvѯ™…<˜ç‘Ö¿šÒKKù»®|!мi£O¦ßX#\66ÊB:sÖ¾ø›û'\X½ÛE`–árH¯á¼õ`ÚÃãtÞϪÿ€|ßq…L¿ðuª{­Ýy_KxŸà“XNá4“gæ%p1þ{×|IŸÃ ô[_ÅEÁò!o¸~ÁGõ¯×òõ_:pÃKš²Z÷? pÍ,U$ù“v¿Èüoý >/x“ÇW²&LzBdEv5Éìzžù¯ˆõKÜe°Iè3È\Wô§ à©à°4éAj·õ?ñ4ž;0m?uh½e$tQ¯ïIëœ`uí[úL¦9·gið?N+éª|,üÓ ?ß&z~™ªyRÃ$rÉî÷çÖ¿P?coþ#ømâ=ÄZºÖ÷öm™øF °ãÖ¿:㬺Ü–µ)B÷LýÏ‚ëCG€¬¹¡84דLþÿÿgO[üSøUàˆ²#SÓáºÙ#‘ó B¯}>'ŽHñ‚ûƿŽ!„rs„žÍ¯G±ü‡Aàó\V˹Ê?ø šýä[þ Çñ÷ÃRøîËá›sÓø~Ø‹‰2—3€î™ë¡;kùñ=äw’äü‡æNkúƒÁì¾®‡àê}¦ÚômØþÂ¥†à<Ÿôœ¢ê5þ6ÚüÎ%!V”¶NÂqÉéú{ÔÉo;34x,ÝíúWì’vÐùêtÜž‡U§[Êf›pÉâ»K :yv4hx ž9¯7QCV}~[BU!zχ<«IQ[–™°ÛÔõâ¾Óø7ûüQñåô6ú†ç’ѱ™|³µsïØb¾ˆ¸•a¥:³×¢?LËòê8ZŽš…8êÛ?c>ÿÁ0-4ë› ¯«>ÜfÚÁ'æ'úWë§ÃßÙ¯Ã^ ±_†ü5 ¥ªŒíTùœú’~ñú×òÇqn78Äû<<ýË÷?8ã>;§ˆÿaËåˇß'Ýþˆô­?ácÛÉ%ÄVAX{ üËÿ‚–ütÓ~|?“@µ¹_øM5H‰QÆëXA|v$ð?^ `1Y¿`ðíßšjþ‹V|çâµø— B÷³æáŠæ}­ó?’ë—zî­y¨Í¹¥¸ÈÌyÁ9íúÖ%ƒªÊ9àdzóŸÌ×÷ JŽ4c´R_û"N¶.Ue»gß²¥­Ïˆ-Cǔރpèzþü?eM2;OÙïál{1-ÌHËcô¯Àˆ‚á»@3׳µÍV-&Â[¦¥Æ#Œuvì+âjJ,ä´QGò½8ºÕ£ êÙøÿ9øñsâΆÞ"Óí¤º‚Ò4î.|/¦08ì+ù2øŸðÓYðö«§a4S!ØÈèTƒß ô¯½ð§7ÃÇ < Gj·m§»mÜþäðç—æ†Â`$¹°÷Œ£×}ýKà¶…Ä/"!æÜv´ãükõ¯ÇðK Ïx}|cð÷QR—1ùðDÀ1Xdcs_UÅ|SS‡s “ýÜí§Gß^¢ÇæØ £ F9ŒwU¸ÝoßÒÇâ߯/Ù¿Çß u»Ý'ź$ÐJŽÀ^×8¯˜u xÌêð€ÀmØ=x¯Ô²,ç š`éâ¨JêI7žen”}½Í +¦¶iìÏ(Õ¬åùÜãÜÔþ:󫸩P¿)ä9½}¾Z]‹çT<™È^Á±Z=¹\×½sÒCÈä‘ÔŒv¯f›º?8ÇBÒz²&0¬9`vðyª¸D-pÎ+¦/CÀª·2æŒç{gg·9ü?*äµm<\Å#¨Ì©Îºè»3ÁÇSç‹89ÜᄜµB€ Μ~UÞ|Ü×¼M»æÚ ‘žÆ”ÊÆDîœsA7ɳü¼Ž~•.ÒÄñÆ8ϵMÂäÜP¡AÎxÏOz€€ÙÉèAŠh,³nÉ8é’*aq$hŒ‹–^ŸäÓèµo$’:‰Ø–ê9©Þçh!ylãq½*Z+es#yiI)ߥr `§LúUq È»@ T§ }3×¥!†lgžç½H­µJ–Ç<}{Ð b iÚQHˆ'¾1ÏqJàS‘ÈÇs“ß8¨£“kœzbê+·ï ëÆ§ùþTìîêH8ÀÅ0ô¬«‚ÙßôÎ*_9É?¼0) t‡;U¾ldZ³ ˜|¸ df€#`“®Öw¨ïYÒ¡,rÚ…£›²HïÇZVLlžÜúU½È€¼}:w©c'Ù÷©c[ˆÛƒŽúb™÷g Ñb®]•‚?&3ÏP*‘ÏÊ01Üò~”†K4 ´–#Ìçoª¬‘ºG9íޚج„ïa„=9ëøU”´‹³äý(¸É|˜€À@OA‘Îi(ª€¡¤€€‡€>µ ÁsrF9=(äA†QGSÐÒ•ÃîPÞgjN¯Þ¤WU(Ï®O5+v5¸ sœ“Ž€ b.I`Ž@'ŠiXã‹ ‘ŽxÍFHÆ\óÓ9Å0näŽBÊã$ö¨Ÿ' …¸äœv B…;Œ®~ñ=iáYƒ¶Fz`óÅ1X *ë–qÜU’±˜D¹ùz⓹],DQŒhHç8úTa2­ÇNG= 14HPˆ†éìð1׿>´FŒÇŸLçü) ë¡\înfùGZ° ¤¸ÛÎ:Ó¸6ÍÙb g®Ô…òÄ(?†h@·c.1ã3éYAsŽíëŠih é´kVž`ÍÂ/ õ+E+.ltÇõ®lCÑ#ÛËahÝš6©ó1Œ~•¦ŸòÏhë‚I® í¡ôTRv4Ä`ĤêG±J’™¤0‘Ï‘õÍ'dÏF”¤u6–,ÛAßÿõ× økNÊ›×$·¹ÿƼÜTýÖ}†K…æ¯ ®Çë'ìOàHo¡,þº$².ÖÙ‘}ûÆ»øû‡£ŸäóÂS^þéúK³œ§”Wœ×¸ßI­Sû÷ò¹ú¡ÁitmÅŽ“¨|>´Ôtu¹qi47/o4Ðnù V 3·éÍ}™á¿ø+ì‰ã5müg¢êÚ¢p¾lÐG=ºv$ºàökð o†9¦„eF>Òëmšôèÿ᳟38¸c8ÍY¸KOT¥³òºGç×ícÿ*ýœ´+Èí~hkw!stŸf€§ª¾Ç¶HC_µí)Ç/&¸ºQÓí!b†Ú) $1'øŽyã úφü˜åôéb±òÛUÓ¦þ‡Ùà0õ¸w%ö9{â¥8­cÛ¯Wø뺬“îÙ3y.:n(×u{{ ?M’V—FJ°õàWégÁØ Æ¾+KCªÙhË.©$þãŠü·‹¸¶†[AÆ2¼í·ùŸ°åYN*¢;Ctº¿CöÏöxÿ‚mx+J{ ÝkE7HTËHÆ0~½xCö}Òü1gce¥h«°Q€°íè=¯åž#ÏñÙÕy©Tnþ¾GãÜ{dzÇb>§J|´c{Ei÷÷>‹ÓþÅmiq…8s•ù‰¸Ì×AkáFG1: ëþ5órÂN6}ÏÄ+æÿXrrzžûK|JðWìßð³Äª´v¥鬟ä¾GÇwM_“¨ œ“Ó§ãWôí9å–1·(>\ã¹Ç§^õý"æ”ÏÖiÒç«hî~ˆþÇ^ ¿Ö~'xGÖЗºÔ/¡‚8Шv ýkýü¡ x+¾ÀÿB°‚Û`e/ô¯çÞ4¨ªqK¤?7ÿüGéŠJ.]Ö*sû쎢Y5%º ʇIŽ{³¨Þ®é¿åš1ÊÆ=‡­|]j+ˆ…½ØûÏå²ûÿ#ùºtÓkv¬C¯hš~­e-½í²:í8Ü£ŠüOý³ÿbŸ…¿¿´ h°Zë%X‹‹xÕK|u¯+Ž©æt±ø}zÛKŸ¦øaÄxÌ‹9ZRnj={§úÍGÇ؇â/Áuu].ÂK½[+,K’ ŒúWï¿ü·âtÿ>ß|;ñJºø@Fe_™í_§=öœ¡÷|ašax“†(f¤½¥6¯óÑü¯cúGÄ%C2à©fø ^”gæ®ùZ~—>‚ý¤¿eÏ|cÐuMSðÔŒ±ùp]—t^äãŸÆ¿˜Û'þ ¯ñà¬ÓxƒI²{ï >[ϵ˜þðì=ëÎðÃ?²qßÙxÉ?e7dÛÑ>–<^âJ†<;˜Ô÷åü&úið?]m÷Ž0ð”ºlÓÁ<;@Ïn¤u5àšÞž© ?0B8¿±òÌJ­F5"î™âqfVðµe»œõ´lEË{“Ÿj㯠)¹‰( ?§©¯¨¥;Øük1¤ã&fÜÂΫ·‚y5ÏÜDèU±£É滩µ{3ä±*Ò¹ à4jÁO¹ô™*Ç×g^Ý+¢.Ìò±1Zž}¯i¢ |ØcÌL2}ºW:­µ¶±Á9Éí^„4Qò¸ˆòÔh“vrÊÄ7qŽŸ!_—,¹p9íTûä±»+.ÇÁõÇMŽ çž´¬;–YÆÀ7|ã¨þTÄuùóÁ=À¦= €ù dôOéHάªB`ç8#ŠZ NÅ’dFWV]øÎ@éþ5\]`ŽN$`u4ØÛÐÁÔ¸ùOBi ]ê$c=?ŒãnÙ£Í]æ0œŽ@=èÌv–Î:VrÆ¿)À9lö¤”¦3·©AÓœþ”–£"{Q»pn:楆Ú)G+—úã4ÛÓa –Я™åŽ&«4,»˜öÇJiÜ,B c xÝ“ïNf’9ý)è+“Å$Š /taÔU†eXKórO¥/AŠ·$>0=çæÍP—<€zœñMn&5NÁëŸj eN[¦ÿZž›7• œsÇZš,|³î=¨c[–D Cí9cØÖ«KGÊ‘Ž£)÷,–9ú«t©UãÜ»PäuÏzl  f'8Ç#&¡y2XËwÅ p/ İÎÒ¤y8~*4*É1¿)9 ãëQ…I.Ý=GëíLN×ÐBª üÙ=GJ{(B äSGA°Qó)ÏãQÄ™ ç¦i€ã.æ]‡“šw˜5à søÐ7ðÀ¾WÔT‹"," ã?‡ãÞ“l±$ôìiH‚®3ïLcXŒ”Ú’1°‘‚(&1²6Iƒü4¨¾j*¨çŽçÚ²A%08ÛÏjG‘ˆ\g>”ÉcmË· ôéK¼µsƒÏJB×.'¡#5!Æ@ÈÎ9âJ[\‡!‹^øëV ¯— /×úÐ%­ÆUlmñëšsFØ*Ò.àŒÓCKC6gód¶OAÇ›äq˜øçßñª=#ÃÖamÃmÉ#œç§cŠìBmA’7ãz× i{ÇÓà¡ËIVhBò¡Sv=EiCæ69Œö®*£Ù¢ÖCµ•ÛÈǧLW_á}Rö 8à,Ì@~¿Jâ¯V4©Êmì}&Sƒž/N…5vÙìšÏ®t[[0ÁZG\£ÔÕÿ éÿ¿µˆ¯*Ø$r>€WÎOí¨ÊkÌýS“¼aJŒÖºº?°§‡´÷ñN…¤`~ÛpŸíü¯ê;àT6ú}Ž›tÒíx©¯ãojÉæue=5_›gé>!IÇ(Ãaá·'ùÿ‘ëŸþ ø âU»G®x~Ë9”•YT’…‡8#§­?ß·?üÄž³Õ¾ ü1Óf¾ðÜyybUÌÖkÔ‚£–í~uó<ÅȳztêK÷v~Wëè|§qÕëC"Íj~楣ý™ßO”žŸqø#¬x#SÑof¶Ôm]%CŒ2ð>ž•ÎÇgsòÈżÕ=S8cïëÛÞ¿­hâib¨Æ¬]âÑúm|4ðõ\liM´™æ62êG`0úûÿõ«˜Ô¼WâIHGÔe( 2çŒäœs]£Fv”Õí±–+ˆ£EBœšô8½CSÔ¯°.Ý—€ÌÇX2Ã%Á_6O”ãåäjö0Ê£±ò˜ùÖīͶٓy¢ÝJ%b˜P9÷““ëí^s§eBvÇ‚x8ã5ëá*FöGÃgJ‘´¤ŽqÐÚ3 rHéÈÿ8ëPƲ1Øç©Î}O·zôÞ¨ù­;¶sùm Þ8ï^§á›ÕŽâ5Q‡È<žƒÒ¸±±N›G×ðÝ^\Tú£ú™ÿ‚$þÒ:ÀïjøãZŽÃÀ™‚òâwÄvÏóÛ ƾyÿ‚¾ÿÁO[öøƒqá?‡×2'½¤³ÓãÞ@¾;¾k‰œl`q€=kùË ÃUq¼qVR_ºSöÕ$’ûõùa›p¤¨qì¸Â¼m‡†2‹ïY©Fß(ëóGó­¯êíu$¬ò Î3Ðu®kÖy2¥¿‹‘ÛéÒ¿¢°ôU:jÑšc^':’{’Û3Ë#+œ’x‡µz‡ÏÙü… ´‡ »bŒJ¼ò:rIòâ"Ùúåû üfð¾…ã¯i¾.µhÆEIdÚÑrT˜ôÈÍl¿g¯ ê>Ñõûß e´ø{* ;Ô“¼ŸvÏï ‹†p¼9’ÐÉ2ýaMjÞòoYIù·sÕ|=so¸ÍÀ—?¯áZ>µÿHŠ<àîç ßøWØ:¾Ö•ú4h:uÕÑýÿÁ!~Çâ/Ú#Àw¿ÙÂàY?Úß|{‚*ÅÎGl~x¯ìz þvÏê{\ÿ×F—ëúŸË¾?׌ø» B/à¡®ÍÊ_ð YI!ówÚ­4 ]8\®t¨:µciOUéÐüS»²0õS$v³ùIºM§¦kã߈>Öo¤¸¸û8Úryeâ¿2âÊue_’Ñ#êøgKˆç¨÷>qÓ>·Å+¹ì¥Ó£šÄ;E3ÈEÁäרß?f_„ÿôÛÈ|3á›Xõ;¥ÿLºó{g®Ñé^~GõŠØ~Jõ±ÖË£õòGØñOã©à_àë5 4æ—–©˜k66°ÝÞYŦîU;VEávú×Íþi>!ðö­©¢­â=»‹fwp;W~Ê¢©nG£ô}~ÇÖÂc(W…[Jñwí±üh~Úÿ³ ÷Ãÿk:ž–SB¸•Þ?ÝýÌ“òþøõâ_ Ïe5Ìw 8Éç5ý»áæyË&ÃÉÊòI'êéŽ.ÂÇ‚¡˜ÑÕN7ùÛ_ÄðÝBÍ–YÑסýsŒc­p·ÑdI”ÜÀîÇlzq_¯aç{XþuÎhróha¼M“~ éÿê¬;…/¿Ì#qw ÿ?ã^¤ºНs;~ï68×ûþ˜ª2·Íèp?ÏZéLò+.xÜæµ[_´ÚÉcæàø¯7’d瑎õÝEécæqÐjw#•s¸ƒÀõ«Pq‘Û=kcÏ#RïÜg¾·r¡±×<ô NXŽ8SOIˆRÎzЕÈÚ£å®{ЏÁYOÌH÷ÁÅ"¢WdR²rƒÐþ ¥ó·9÷j&G#nÚ„sÂúTS++«‡·ù4â<Ä%ϦhO•¯ôŒ[f{Žž”h`~ûñ‘Ú¬@cÁsݳÓò¡€ÙT!%îø‘KK†Ü@$‘Ö ê6—ŒóЉ•²ÊpG<÷æ‘ÇC…#=ªTœ*” ÈäÐ[ ³'ånùÍX@Š î9=)!X0‰IaÈ<úRò¬Ù!HëÇ4 ÖH8éŒ|Ç4¬™ØÛI=±žÔ¾€Ñ—08Î1š‘ˆò™Wׯ1G[Ñ´Æy%6zŸþ½2áÛË;—žƒ!ís;i8]¸¡­;]§U,ãNO@¦¯4YÓ-D¬ý@ÇáŠÒo›+ÎåéÏCþyÕä}^rÓHÓ€f%UOv>¢¶m†ÂAFާ޵ÇQë©ëáâÛ:[[ D@¤3g‚zWè¯ìqðnø·N´:`Ù°«· ç§õÍ|oæQÀdØŒCv²lýõbsÊs¨½Ø¦ßÈúCö®ý¯>ÚOnÖê-·¬Ð63”c†â¾ð­°¶Ô£’`2ñ¼óþ5òYže±Ë³ÇþÕE[›ùâ¶—¯Gæxv«ÿÔñÿšémx×p?™kÂüCû|Tµ»6Í¡ÈNÂFë_£`|EÂÎJˆZË£¿ä~‘õ0v§ŠIöz¬ÿ°ÇŽc”4Ð…ŒJ°çéô«~ÂÚür.û€X'¦xôô¯j^ aãt۹иw-ŸµMz†¹û!kVzuÔ“(—ËBP"ÍýkóOâ†Ï‡5 »jÉpŽU¼ÃÈü?*úîÏášU©ì×CçxË!ÃSË~³K[hx6¢è:€¤»éžõ”\ƒ“Ðýí§¦ ý&–ªçóŽ%rVv&€ !²|ÁÎ8¯AðÕä2ê ©?qÕØàޏü«T¡$o!¯xÊr–×>§µøá.“àÙ|+¥NÐý™™—SŒ. ù—Ä>#šy®n.%fWaÁbzó^[•B†"uœW4žçè¼SÄ\ÀÓ¡NZ$p^tÌ\ü‡¡<÷ÇùéTKä…Y€>aõë_L¢’Ñ•ο36lfýê’ÄÁÞ»]"ñRx]ˆ(8;»l×&!^,örªÊ5¢ÙôoïˆZW…/ì6y‘NÝÌùïÉô¯Ü/†ð[¿Ú ¼=ðÃL×mít->Ým-®¢µíQB¸Ú<Óœã§#§ùð‹Ï\js¸Íu]»­Õ˸k‹ð8L¿;¦å2çµµ¬íº}QÆüBÿ‚Ÿ~ÖºžíR?ŽºìÚ|¸ ÛÞ¼!1ž ¡WŠè?·ÿíy®Y^‹ZñÔ„ÁÖQ©\-ÇO›¯òô¸(XIN½j‰=õwùŸCO„¸?OêØL¢’MZü©·êÏè»ÇðWß|ý—>è:ˆOŠh+Ý9õ;›ÉLɦ\I–o8ç÷’ à œïJþm>2|zøñÛÅ:¯Œ¼i®Ü_jWr—žY¥'w=lOJò¸c†ýŽ'ëØ˜û´ýØ'øÉüô^KÌù ø7ˆÌ3œu%Ez“PJt¹ß*]¹•Ÿ¥—C#áÏÃËÏk66v¦K¹BƪIÉ8¾œWôðßþ â÷øegâ}ymmõK…=ŒùÞ±‘Íé×îw¬¸Çˆç€ÄSÂÑ»²æ•´^gÖñ§åÜC ñKš­yrÆ+u¼¾Z}çáWíiðTü3ø‡©øvè"^Á!M‹ÀàààtÇó÷„<- ÖªÝèw¡5ö™>lñY,\:ÆèúÌ4èc}Ž:’÷jEI|ÕÏë;þ£ð¢ ;âÄÉ!ùV8t›RWŒ·Ï!ÛjÆ¿¡M;H’}²Ê¤E×ë_šd™U^ â ñJñçno²Z~jÇðόقÄqöi/äq‚ÿ·`¿VΆKeÀD_”V]Å©\œð+ôÜç*²”©«%¢ôHü–Mu>ý«¿n¯‚Ÿ²þŸ}g¯j˨øìDÍo£Z0gVÇËç6qnÝëùäð/üßÇ7?´½¿‹þ#¢\|;º¸û-Ö›nYa´¶b1®HÊõÏ$ry¯Ç¥Ã_ëÖëÆ7…+ò¾’šý­÷ŸÒþx_W1á¼v{š.IÖ¥(áÓÝiüF¼Ý¹|µêT 5_xÁÚ7Š~Ëm/…u8–öÞ{R Ìœ“ëØƒÐ×g*«îÝžâ¾5Ñ¥O t¡ËÓ·sð|\q4ñ•iâïíc&¥}îŸâqWzkÝù¨˜TÏ.9ÿáumÛLIâu@G-'õ¯µ¯hÝ’û_ˆjJ”UÛ?3?mÙ¢ÇâÂ/Üé<:ÀÍÜ1¬\¾ÐIê3Èô¯âOã¿Ã™õíÓ—còÌl5fyƒd‚UA€s€zóUn@RÏs» ïšêƒ¹áÔ“F,è%óAà±íØýk‰Õ­„RDXòp85ÙEêxxê~íìa`Ü“Ïb¤hQÉçœñR q.Q»×‚™\"™#åÎN*fˆÜ¶)Ü‹G¹X68Íiwô($§ZL¤ge·(°íNØÎ¤ÿNù4¤,„( >cÓÐb•ʼð{Þ™;†%J”öì*6ê ç4–åê\¶l zÒž@q’¸äÿž”¬f°z¯aÿ× yg À÷4þ÷¹ý)“ä.O+Ð`ô  ë“?18ëÇ?Ë`\äzsÍEbŽåÉ#©>µ$@1# 'éâÑ2“ò“Ǫh[qe@}°Ï4#§ÈÀ‚sƒUQ²3Î3Žæ€,Œ}~ï_þ½Hã€wdù~T€­,I‘¸Ž¸äô¨7mÛòäcÒšUbX0c§§áV·…çéïøÐ4É%.zã'¹¤ÞJc–$çš, Xöà0<œõ)ñ‡¶éríÛéIhHêɆ1Ïbj À( ~o¼sBÔ€¥Ü0QžsÏR*„ò<®dü¹Àö¦…ÐnâøÚ ®qõ®¯C€äHcÈnäÔÏDͰÊõQè¶Ï°ª)áFO<V#\¸n¿å^|Þ®ÇÕRµ’7¬â9@ ê;b·mTy±²cåÏ uÅqT{žÖ:£Ñ|1aöB3Œ®Gž¾£ó¯è—þ Íá_øF4 k‰dóÜçòÿ>Õý[‡w¦™üõ™^©ÅwÁ¹˜€3ÔÕûk•YH݇$3ÏÓñüëiFæ8zî›ÐØþ×lm. ¯9?¥bÜ]3ùŒY\8=GåYÆ’ZÕqŽP³e¸GÆå;ÆYppiÉtávHÀðå?×Òµ±æûVç{—íîò9q¼6AÇ-î+¢°Ô$U €çñ^kMÆ·¼µ:ËÖ d‰þ}ÙÁéÔë]ލ<²¡rFxçýjò+ÓO¡÷ÙF*PjÌômÅ×Ö`¤·íXmxÜHé]O‡µ«4Õ­ï Ý ²:¹“ëëþs^+ §(­ÏÒ2ìÎ¥_f§Ñž‰ªkWZåô—w1“ÀÆr;q^ÍàÏ©Xƒäþ5òøç 6Mécìð’•j—îGÿðIŸÙü@‹â_‰ô±/…´•Æ0D·Zäð@#?…Mš…¼F9a<¬coµ~ œºXÈã17''úr¥ÓçsøïÇ éæeÞº)½O'hI$¦@ä7âFj2xÁ=s]¶>rZ6&QÁùõ¦ã‘Ï=0{ÓH‹ LŠ~îWÇùüê&lç=G#üÿ*7ô°á$¹\v­J$rÃåñÖ_[ŒWÚľ1ì:{TˆÈ ²¶ãœÓjÓ¡d^¥†ÍT2²RIèyÝE†Þ¥~›˜ýþ€ {¹g9̦!…0äôÍ*¸ÛÇ×ÛÖ€woaÈÆOÿZ¢áXäžôÀ³¬7#7n6Õ…‘UNî@ç2UØ~V=}{ t’1÷Gw£¨Êm»÷ã‘Ü* µsÁÇ z.KCW¸vãžjÂÀ¢<'ŒñC`…hÊ‚ê*4,K¼ä=¨n ›6õÅSy†òJçÒ4Cù,r}»RÇsÖ€W& "†hÆIëMSœ7AœçÔÐ0u,¼Ž¿J¯å”r¦AÏJi’ÇC >T÷ô¤`2H ™ÖãLÔ@°8b?ZG@¸9;ˆÆ©)`Àœ/>Ýj8ÀP 7 ¥ ‡aImÌ?¡¥hØà ê8¦{B©ÀÆ}jmÌã$Ç·g tóR‚~vFã·z…˜Ÿ›œc­I™•¤çŠÑ.‚î·=j¬ˆµp:vÍv+4“¹ˆö©b—j‚ 9äçŠ6O™v±ÆOOnÕâ»AÁìzÐCäœã#ñ§ÂâA8ý(ñÚ¤''ù ‹V%˜àp4a ò±‚XqœRÆ2¸\õjL®Í’˺@dZ…ö©Ù€pç¨÷ö£¢#ÈЫú0ÀÿõÖYÚpOÝÐ]DåVQ”ãŠî4E*È dzŽ„ö©¨ýÓ« ¤îvŠ Fì6äœ`võÅ[· 62ƒ:õçK©ô´º3¤´^s¹ Ž+ Ó­HdŒŒÈóšàªì›>‡*‘GП 4{CU³´šWT¹Ç&¿©ÙáóøkÀZ„‘eÂb0q_ÎÞ3c"°ø|%ìÛ¿ÜWxuCêÙlCÒút/‡lß@Õ–úÆÎC(+»r„$ñߊþT~=øcCѼ[¨ÞxjYH–V”y‰‡‰û¬;ašù_ å:y…ZPø\UýUíúžÕGõœ»ÞÑ”ZüN—á7Ä+†Þ×õ;+„MRêÝ­ã üÉž g¯CZ?~$\é¾:Ó5k‹Æö•‘¹èÙ'“ø×èÙ†QNµuv½êŠßr=Ü·SÁáïÒÌþÑ?cŸŒ^ø—àÍïIÖ"“P…s"¶ã8÷ë_«þʶ×*Ä£ucpµ0Y­|=Eg7øŸÊ¾#`*eÙÆ+R6´¼ÓÕ3Öa!¹+óçþ mñ³â/ìõû>éß~ë­a«ÛkpC+ª« cx¥;YXÃ*85õ¸ :ÅS&¹œUÖŽÎI¸L.;‰rì:ÔªTŒd»§¡ù%ðWþ ú,å‡Cø÷ðö;Ë@>¥¤¸ŠoBZÊ·á¶¿A,ÿ౿°>¥áKýZ^[^Gñ¦\i޳LßÝB¤¡<÷`+ØÌø7ÃÊôé:ÐkÝ’ß^’_ªûØxÁ<Û çájʶM{²—,¡¯ŸÄ—ßê~|Nÿ‚óøO³¹>ø#sqz7š÷PA\R Xöã"¿4þ,ÿÁu¿iOÃ-–m¤h+!À{M=ZA×4»ˆíÏzúð¦u¥æu¿Ùù½~ëi”xQ”dÐXž Å:óZòGÝ£ÖïïGå/ÅÏÛkã¿Å+©¥ñ‡ÄÍZñ%1Ézâ>O@ŠBÏ¥|¿ÿ óR‚þÇQ»yb¹6ö'æê:ñ_½ä¼/€Ê0ñ¥„ £n¶×O3ßÅñ :T¾£‚„iÑJÊ1V_ðOž¼FV ©˜dƒß­p3îFßÝr×>µúZ’?Î%l]GæB.—¡o˜O­_‚u0‡+ϰô®›3ǧVÛŽû@Ù_Ýý9ª3OŒ€ « òsšni:Úhá‰Á;ý=}¿Ï­K ýìœâ\º2!7urs1R#`<¢r8ïØõ«rÕÖa™$c#Œþ¶+9-_ ?xêìÜ(ÚÒg#9 ŸÏñ®žÞY„ÛŽ9㩯.´UÝϸÊê½×éç*Y—å ¤×}¢BÆxÔõ$Ç zW‰Œ’Œ$~‹“ÞU#cë|*×µ¬®ÒÐýž@_ò¯ÓïÙûöOÕ¼E©øq#ˆ2Ï"äz’å_Žñfy 8jƒèî~•Z½ “,ž?öNÞ¶¹ý¦~Îß ¼?ð7áO†<¦ÙijÃl†éÕFéf#,OÓ§á^‡ªÌf—Îqý+á³ÌfpÞ/£§¹M«=e®¯ÖçùÉ™ckf¹Þ74­+ºÕ%/¾M¯¹YÎWüÁ®iÚ§Ë< #1 œŒŒâ¾ÿ‚n~ʯÇ_Šº,>"²eð-¢µÕåÆÞv§;ö,H÷¯&ÇÆ‡U£ÏiÊm+wmŸÙ|5žÇ#ðzY·Ú¥N¢œ®ùWÞÏìGÒ¬t+NÑ4ÈZu¤ okÑ#E £ò´YŠ‚s^býÕ+'²?‹*NUjJ¬õrm¿V~lþßßµ´Ÿ³ŸÃÝRmü'Œïb{;2æ¶Ü§2Ù‡oCƒ_ÅOÅ?Šzç¼IªjÚÞ«qq<…ÞIXÈÌNI9'žOë_]á¦^ñuq9­]m&£úþ_ýƒàÒ˸~yäáûìK²}y#þnìöoÙ‡àV¯ñ—U–/Ã÷wÂ9THmã,9þð+õcMÿ‚E|@ñöwö÷ßaYýDö„QŒà¶<šô¸³¿²s…£9-IéæßCô&ãÜ—„ç 8Ö§RJî*IIvÑ÷;ø#çÄm"öÊò×[‡í±J%…¡Ê289äþ‹þi¿´o…þÐþ'2É⛣Ü+î7Q ½ŽÓ=ëàëgõóìm)΋\©¦Ý­­´ü?3ùÇÅ®8áþ2ËðoIÃJn×ëµ_}™ì.Í@}kÖVgS‘׌Ð" çÛ*7åNi€©b6ŒŽƒ5+Ääð£{Ð"3ód‘ÆE8ÁÎ ŸN´ÙÁ'$óžæ¤ÞKt8èy  +¹AÃezsÞ¤û꼸 ö d€ÇhŠŽR³m<è)y€« ¡*3¸ô'Ò¦NqFû€Î¸“nAÇøT :žI­0Ùà©ÈàÔa É$c8é×Ò€$Th <Ï+ƒÃuäué@$ªØ#¹î*0Ûáè3ÚŽ ;rÈ€°ƒŒÓ%]ä2ô÷é@…1U°Þ95À©¹qÇéT›¸¶4¸o›§½8 î;`T•Ô™ÐÜ­ŽÄšfÍÛˆq銑±¬Ùà§ÒœÃ*r@# bŸAy•öº•Fnc8ÆjUÈ$À˜íÔG©]ıïQ1@qÕ‡‘#WÛÀàç=1V¡QæÜ@ç=飿 ¹%W =1L”û„dŒò9Ó´+¡W ’wÜÓŠªìã‚m7ž†/®ro­YX€=N¥1ª1° þ²0»ÉÀúRÇ„ÉÀ<çÐÓ¸%r@ÁwnnŸZ9ÜÄ|¦ ÒÖ%rË9ÊõÎA4SóFr3Žy¤nS¹™r‹ÝNHê =‰Î= RÐEË5&Q¸w¯DÒâ)媡éžZÊ®Ç~ ks¡Y[!D¿69À­{e ¹•¾@{py¯>n×±ôX}Íût2(‰ë‚*½]é±Ðœà~Zþ¹ÀácR„=Ý,ë¬×4©‡ÄI&eMã R"Å/Xqµéßšçõ_^(†{¯1ן›ó5éÃÉJ+Såñ™íj°qœô8›ýeäÜÊý 8ÏåšçæÔçRæá¸=û׳J’i&|&+56Ó0umE¯%ydÎò ž¦¹IÞBvI1È}{^…8r®T|ža[ÚÍϹY|õ=A<ã¯ƧV+;§oÊÇœð?ÏÒº}ž‡)¤É„í³vHÆqùsëHdmÌîx zñK—¡ª•ÐÌTŒ=½ÍkÚ¬ÑïÜy>¹ì{Vrìz¸IjŽºÒìy‰kÉ\ã§?×µuVâxÓœzq^~!%©ö¹L¯#ºÒ€Ç¿9§ÿ{/„­¼×‰¤Œleϵ|ÆfíNv?VÈ å8©ÿ³Tþ%ÖïítK 5žÖhÖ'  ¡=?tûŽx¯í#ödý~xSá·Ã­y¼jÌ¥6æ5š=„dwäÊ ¦­7ÕÈ´“>ý®¿e=Cã÷‡"Ólc”¾Ã#6©ïÏ\W¬þͳ§ƒÿfï‡Ö ðÜBKâß^°ùî¤úöQØWÌá𹎫Áâ©¸Òæö‘¾îêËNÝ~ãôgV¯Àøn¢ýÕQÎoº_ ûõùFcŽ•ÆøãÅøOÃ÷ú«Ó¢- êØïì+³UPÂÔ©Õ/ÄøœŠÅRï´ÒûÏã þ /ñ×]øŸñ_7Ú¡k[iÝ-£ó0FqÓ¶ýUù ù÷ .Xä¾ÒÏJý³€°qÁðí•›W~¯V¢y&_K*Ȳü¾‚²…8ýí]þ'õ›ÿð%¬ ø³ãI`_?δ±ˆ”û£ä~C۵ÈÓ«ó¬fXüâ½:zÊ¥F—ßcø£Å¼T«ñîk)= ãè¡ãi_fùÞ ®*„˜V8g¦Æ(9bÇ×4ƒ~õäÎ6úU³˜W 3ä¶r}ÿÆœêÀÀ$¶4磊¹¶6œÎ{zÓ¼¼dz þ4"XªX&\þ¢¢› ôõô4uÓCÔ +0íÇ=?ÆœSNàKžqþE …… d—­BÀ¸áŽ:c¨¸íØQI*8½©X©ùŠÌÓ¿)È 3LÚ] lg=qÖ•Á±’ylT%³žOZp€Ç‚I“ÒŽ‚P§ÈÍÁè !L`îçúQÔ œ‚:f ,¤”ÜÙéÍH7*‘œ€)¬„d¡ã¸'hÑ"T$Žç=Ò‘Õ”ŒúãsÈ#Ä]ù9cüñ@ưT%ØÆHéPÊ#T ·ùÓB+¨<ár}ÅOoF<Öaϧ‰Ø±nÁ?…Iζn9Éëž?¥!­Gyx>f@bz”¦}†3 ýçÝ4n6­ª#CrÇ÷„õÎ1K#´lڣש CH21Îrxô§Š¡ßqÂOa­ufC!gÈc¸àIódÇ4Ö¤šºjHÒN@9Çã^“b¥ˆ'»ãééXÕµO¨˜Hã$dôÅkAÿ«ÙÏúWScèhYØê¬ã (Pr zqšôŸÛ=´@¶Y†Þ8ë^V.Vƒò>÷‡hª˜˜/4~ëÁ6>Á©ø†oÜ)_³( 3–n˜ú Wô]àŸ Ú¹·‰XîÍÆ+øÓÄlwÖ8“æ´¦’_ŸêQc¤ð6´3éý¶ñD¾B+IݳҿŽïø(¦‰?‡i‰ÚlÑm1êrì•fÊþy¸ü"Äû^(®å»ƒüÑó&-Õ†eNOW¿º_ðOÍëá"«+'V>õÃÅ.ÅêA¯ýZ£xRv¨z®â9¬…¬ÈåŠ÷¸ë_]~ϴ׌þ øçGñw…õÙí5;y–HäÈ>¥Xw#½|Ÿdtsl |-Eu8´~ƒ“cib°ò˱jôæœdžÍ5cûŽÿ‚zÿÁF>þÖž±ð毨AañZÚ%Ù˜¶ zƒ®ö_ë_Ì8<\·8Yf!{ôêÁz®ugóGó;‡«p§ˆØl¾KÜUá*où¡)+?–ÏÍç‡ã+ØÅüçw,ÍÓ¹éí^E}¨yri &6œàþqÚ³–ç§„oC¢²q#+ÛµqÇçþ{Wg`Ò®#…ëíÍyøµ>ã'w‘é ÓÌ‘0#ã?júÁ¶Ì.-Ô fn¸õýkäsI7%Øý“† œbüÏßø&§ÃûOüFðn†Ìª·7qG,ŒÙŒúðþÎ46×GÓ¬t«(öÚ[İľУôü·ÄÓâÓ“¿*·Þÿà#ñŸ¤&6rÏ2üÙ….oœ¿ ~&™qW,n­a“̹„ºŽŠëO-Æá0¸ú5±´ÜéEÞQZ].Ÿ>¾Gó´ã'¢ìÇkÌš‘D±À½k>õŸç•xƒ:­šT‚‡3IEm­^ˆ)ST  ™+¶|wûTøÊßÃ>ñ>¥,á~Ïe,ƒ$u qú×ÉgRr:?Ì×Ìú~üVy„£{Î+ïhþhoÿnxßZºgww™¾Vû ÷?x“cs¨ÝD,âß&ð¸<} þšÊ)¬.MEÉY(/ÈÿC§W K¢Kð?¶ø"÷…'ð×ì¥syp¤O¬I#epNÄUükö ÙÊÍϯÂÖ%Ï5©R/Ok/ý-ŸÀ>#MUã\ækþ~É}É/Ðì/Ôm?6+Ž•I&¾×Žkb(Λºä_yðXm"Ó òéJ×箓IÜêEv 9#šù;öºø£yð¯àǼQ£é1\ê–ör2‰‹(m?0ÛÔŽ+ÅÅ*|Ѧ£~f–¾nßô3ƒY†yÁÎ|±H&ÖömçýûJøÿSñ¦¹©jš­ÓM,³¼¤¹û¬äç¯l×Ä×±[ÛhºŒééX˜ÇÌryÇé_×<+…XL³‡‚²IÜÙÝ(ÅÆ”v„_$y×ü/}'ƒ-5«¨JÆå–<Ž£ßÛ5òž©-€‘~_^Ï5únUZ5)µ¢v?ñ*ŠU$¬åÎZeî ¶Ò~ïõ¬K´ß’©÷3ø‘_COt~/ŠVL¨êbqÀVS©  \dñŒò+©hxµUÓ1uHÁ‰Û9m¹ÇAž•øùŸ$îôÖ»ijœÆGßb…8>aû½ºõ¦ª²ò#Ò´g‹2…fLèiæ*ŒzyÁ¢Ú žáV2áFçbrGoª…Y2ª ·¯éGAu°Ñ'Ìp ç§Θaë†äŽ”º°äù° CÏ4ÆJõÁü Ò¤ÆÁ9úS‰?+îc½.4;/Ýæî*5Ì<‘š}@ k”QÂŒæ”ÁsœãÒŽ‚ 0t¹9ãéHª¥L€Á¹áHä-‚sž@ô¤;Á^œšˆËó?túw%²bG¨Ê*–$g¸ÅÛ‰bÄ tõ ,àcŸqKœàdö=©ØÔ•$ŠÁzœ‘Æ=¨UP/È8=O§µ(,ØÜ¤:H ~slþ"ØéÓµeT¶8íÉ¢ýPp<¢3žN(0€’:sL±¸05Š ‰våORÐw&(͵‹a€Æ=E(fÏ̇=~Ÿ1¡ñFÄá,1ÅUº› ŒsœýßZK{ƒ3ÊF2}3Š—ºààU’tºd9dUn$y®îÍA| zó\õ^‡¯„[6«³xÎW®=ó]¢‰[qŒ ¼çŸÊ¼ú»þ-³MˆR°Ý«Ûü ¦¬—vÈT—ëœð¼,Êj4¤ßD~¡Át}®>”|ÑýBÁ8ü .›ðÚÏYš=4Äž{rköWÃ:nÓ±dÇ×ðßb”óŒÆ«Z9É'é¡ýÅ5Tg KhÂ+ð=ÿ@†hÖRKó_È¿üv[}Sö·øš¶ÃkC,P±ØF¡¿\Óðuß‹kMl©ËÿJ‰ñÜ<½¦3oùöÿô¤~aÂ7up±”Œ@rT³åðÌö[å–<!v㟯ô¯ëhb ýÔÏGû2¢´QЦæH‹(GÙ÷rãМV•®¦lÂÈ\‚¸ƒƒŸ_çZN<ñhT+KUI= þ|sñ_ÃmsJñ…¼Ese¬ÚºË Ä 9kö÷ãOüúãö–ýƒ¼EðâœñuÒòÍàÕ×58",H»(ãž×­~_ļ±™ž3ÃG÷”y¼â¤Ÿàöù÷;sœ›/â——cªÔPÄa*Fj]âåù¯3ù¥ñF¤nog;˜ç¾{óÒ¼»S»S!™Ï9Çüç¿5û_MÒ£ú$|{ŠSÄNÏK³áäÚ3ó–,Hk1ïSŒ„ ‘Ôçúf½dŠÅWÜ˸˜ÌùWß§½g’À…R ã$ƒÐWL"­sÀ­Zî÷Ó¦÷m|ü»¹â¨<è¹Eå¹%Fy­ÒgŸV¯ÞDIJœ€dçÔñÅod uú~”ܬ¬ŽH§'ÌNM»˜Ÿ7¹=êu*»q‚+6ú±m%rPÁŽÕ7¸ûÜzÔ2™U°ƒ ̓ŸáäTI1w4¡É€xÇ\öÍm[²²,jÇn8^+ö=lµkS'Ú ¸Ï¿·§µÜéÊÉ%¸Û”ãÐsÖ¸q:è}¶Lýôz®† Ê…Tß<ãóÿ=kèo÷vËó +Ü×ÇæzBwìÏÛx_XÁ-îJŸðJŸ Ciñ+Áß\ˆ¢K´¸voöA`ÔŒ~5ýh« þVÏ*/íìW3í÷kcðOå)quÛHÑŠ¿ÍßôÏQ‡ã½xõj]Ý3𥹠>2 ¹/‚k™Ô^Ò"×bÄÙHøùÿ ñ=ŇÃ/G åPíV표‘\øÄÞe‚Š_n?™ú7…Ô~0ÀFJëž?š?_ŠšªÏ¬ÞHbS1ÝùúzV¯Áy4ø¼S§\ßAæZoRT›5ý;^þÀ”V“ô?»¤ÿÚÙýâÁ?<><=û,ü;AÄ»Y¯UpG;A_nB95üïƒmÖm½y›üOó·‹ë{~(ͪ®µêÿélëc0I´ƒ #Ö°& Y¶ô¯Òø‡êÕ0˜j”Õ¦Õß–‹Cä©ss4ö*ãÆï_UY(¦Ì§wû×ÅŸµ¶—ˆ>xïJº„Ú|éŽÃ(kå3‹šœ£ÒK×sêxJNž{ƒ¨·SƒÿÉ‘þyÿ£û/ˆu­<ÈÁ"Ñfƒßî–=Èâ¡¡Lóg?J=‡»ƒƒè 5vHY\c”!!ÀsÓ$ö$`T^Z¨lŸ›ñçÚ˜2@£n1Ï¥T޽p9Å‘XÝôõ¥Ê.Ilœôa8=»ëë\ýÅÎñ¹X 3À5éRƒI#ãq؇96Ù’Ó;»Œ•Až dgžk6ë ŒTßOzì‚»>oVé£-¥òÙÄ„r0 ‚HªR JîE9èÃýEu$xu&ÝìVh‹>Y›ŽO8ÇçSÇaË  H-“žxúÕ7m_QÑä(ËeˆÁàþTŸuðóÁ Ÿ¥O™¬Ü´¹`i/÷”rM79S¿¹^9¤t¥på²Ç·o¡'ïzÓVHäÄQ°8ë׿ëÒ“ØÞžÖ4¬SwÊxŒ?çÚ¶-\`º}îàuË-Ùëáš7,¼Ç”©l ½ÿN•ÚéÎÄÂ¥ÆÑƒÐd× sìò‡ûÄzw‡' XIŽxŒûó^ýà«¿²\ZÈìraò9¬}Ù/&~×ÂóJPGôQÿ×ø…¢èß¾\kÚšA§É¨AnÏ+ªÆy$žú×ö“Ç,i42+DÀ2²CÜþSâŠj†wY½’sgâŸH\=Xq. ÉhNŽ£jZüödÏÖ£ÜA<×ËÔ«v™üü„‘È5%²—Ðu©¦Üñq‚îU´¹-üž]¼ï覿¿à¦ºõÇ…ÿ²¢Œžbç9;A~µÕÉísüI_îÔý_ÁÊQ©Æ87>’¿Ü›?‘߉ѴzÕã.r$;øÆ}¿úõÞ~ÎúMÆ©âí6Ä€Ñ<èO8$zôã_ÒÙEO‡*ÕíÐþÔÄIFµgÙIþúüЭ¼-ðŸáÎj Ak¢ÚFõò”ŸÔšõ”ƒÁ¯æÜ5WVó2ªëcñU¥¼§7÷ɳ´ÓŠ]@×'VeÌ;03_¯f43#Ác#zJÍú#ƃå©(™î¸È5Uþµùî1r^,ꎧÂ_µÏí¹ðãöhÑ.-eÔ ºñ¼ˆDk "Ž ˜<}+ðCÇðWaâ/‡~>ð׋⑼Cv&Wp`¢†BÚ:àŒ×OÂøÎ"¯,E+ªqjݥѿò?¥ü2ð¹crZ|G™KÙÎS„©§Öœ]ßþÓä5¾0:—ÄOËm¥Df½¼º&5\g,ßËÔûWÚ:øà¿…þÔÉ*ÜÀíõ¦"5 A!¾n¤õéÌ9 ç©¢à/ÌguÎiÌÀàïÆ?J@4I·+´:cš r{w PIn=8=?Z…¤ósÚ˜ fÊ*…Q <œu¨íª£ œ÷  ²ÄgnAýj²«6ã3Û¥[¢Å±Tç«;ˆQŒgµ4fj•ÜáòB“ÏZkºŒFW’?‡üý*MãxÉ ’5ùO÷{ÔS²FøÀ@¦ÍÃîÆH“@FàÁê ¹“ò¶:Œæ˜ ’Œy8÷©‚A9ûÇÈ 3£à‚ȦF(W|0=ºP!dVÚÀtè1PÆH#‡œÓ]9©9ÅBzäœ1i!’${O.2$ž) ç ¹'Zzóa{žxþ´øÔ…ê8äÐ Øy,¹cŒãëƒP2ØC°rGOéJãh˜Æ‚¶I#¨8¤P#’¼dóïÒ€J "1¬¹€ ‚qÅRØÄy!A#׌ԖÈK©s×­1-ÎÛO*’´Ž1Öº• ²2€Ür+–®çµ„WFµ™,áqósÉ®–È3nV p‚}yï\¢}VŽïGTy"c÷ˆ~Jû‹ögÐdÖ|}á>ÎÓOwÃÕ†Iü:WÅñMUK+ÄÔoEùºø]IË7û}¤fŸ ¼8‰¤éöChŠc\‘€0 +é¤63ª 08ÍçUÝG8wWûϽÏë:ØŠÑ]Û>ðͲÏ?ºÝ.2Nkà=gþ ¯¦ÞüXñ/Å õó]Ãjø c¸ŽzòMx9.s[(•yRO÷‘åvßu·ä|—ñdx_‹©5üXò§ü®ú?¹³ë¯üÔtµ³: [Æœ+yyãÐb½â÷ìã|^øWâ¯k{›WXd•R`¹€Ç]À~¢9…ZØøcuN-5~–Ôñ1¼]ì³j œÎ3Rß{;µþgðyûIü%ÔþøïÄÞ¾²1ÜYÝK+)Y©ûÿJø¿Q²š)$Eã?6>ÕýÁÂØõ˜eXzéüQOð?]âhƳŽ.—ÃR*Kæ®q—ŠÛÉD`v'¯Ås7„’Øì03Šû(ô?0ÆJZ¦bLû†÷—®Osýkiœœ¶ôÉü;W}$ö>SÚm™bi¦‘„YïÓŒ}jؾæÇ#p§·ç]°V< šì‚‚Þ^sþ×·­+åÔlí9õÅjž§žã­ÑË‚ùÁÁüÿ=ª¹Û¼Ü“ÆýtµfZ’6æÁFÕ”²È<ó׊-¥Ë‚жg( ($â$ô¡äÚʃ÷À#3tõÐz·›¸‰À,§ÿZ¬Bƒ`¡Ï8Æ?Ï4™ÙM^Æ„c1yŠNÒÙÇr;ç­o)Ã(@Èõÿ&¹fµ=,;³7,Ñdmå¿Þ|þuÖé³¢íU?ºèAíþz~5ÁYtgÖe“÷“Gw¦¸Šâ<ä©P1éÍzæ©âHÁ`õÎr8¯œÌió]Øýo‡±<²Š¹úð§â"Ãc¢ZÛ]lŠÓs°o—-è¯ýÁ??à¥~“&™ð£âÞ²_ÃÒ•O¿•ËHP®O%é_Ï\’J¤:„=úwoÍuGÑø•ÂÔøË„*Ò¡ñ4W´§Þékûy]Эͮ¡io}ar’ÙL‚H¥ƒ+©×58\mükò BòSOCø*P•9:rVkF+ÁÕ9@i1Œ}k|+Ì)5¸?•õµ‘¬gH×,WùSÿ ø?yâ?…Ú~½§Ú?Ú­w´è£$!à“ì UY:9Í:íi~vgè>fPËx«-­7dê$ýkógñ}ñšÎ-3Äz¼Q“òÎàägæÇëZ?³Ç4ÿxãLÕõ[D–Î9VVŠF*&ÚAÚHäg§ý3ZƒÌxmѧöá§ÜsWŠ©^tܭΚ¿k­ÏíÏö(ý¾¾~Ó›á­ði;·…b:sJ6L@I'ž?‡“_¢Ð¾þ‡¡æ¿™êЯ—ã§ÅFÓ‹kåÑüÑü Ç-Œá.!ÄåX¦ÚOšþhKgú?3ºðôÑáƒÈŽzUÛÖµrû_/íÐ×ï¹V'/«ÁØxV­ïëeÖëO»D~55ˆm#ŽÔ.í¬¡žîîuŽÚ5,îì¨É5ø—ûsÁUµòµâû¹’Dó‹;”’yÉãùWô>CáòÌ £e¿ûGˆ§B<(Â)F)tKCíÏ€ß ¼/ÄÏÂV¼€ÉiýëXá¹þ&ðZøöƒø‰sâŸÜÞC)3‚ž¼V¹"y†sˆ¯%xGÝ_—üø‡ò¾„`í95þl÷o€ŸßÇ^›ÃZÌ¥µ«dýËžLÑ€{žâ¾.ý£|9.Ÿâ«§ŽDø!#qÏéŒ~uïd´>£œÖ¡²z¯™ó\]Uæü±VÕ$ߪџê1ãq$g¾´1²F\aAÌžçŠhó‚³* €ãëøRެ0§¨ÇqR-Ê‚±Èr:ó@-d”>nsL9Ç”,x<)ƒ'¨9lžŸ/ó¦‰+…Ë@ühÜW®²8f$v9çò¨NsòŸ”pÄôÅß/$Ç R‰2¡ûqš‡ÌJ³sî:Ð6ž£ŸÇŠ,!ÛŽÝýÉýj<|ã#zar_0ü¬åžÔÒìp ù3œtÍ-…~á’‚UN3Ç=Å!MÌ6¨=j–äš.X)'êNj&«¼ƒëÎjM|†FçxÈÌgëÀíS¦å לúŠL@å¤b»À3þÙ@UVçÎzP€‚6f»ãö«_u-òç=(†4gó7àtú÷?ΞÓmå›<Ðlòs“ŠV ¢œáz)ŽÚ~T”àbääg>´ƒÔTaÑ—¯AHIF:Ž)Žý†íe›ŒëD#Á8ÇSþzÒ‡„Ýœc×¥"©d]¯ƒÓ u¢àµ%ŒmäçƒÉi¾RœouQØzÐÇ®¨G%‰ÀÀZhÂ!Œ)èsÔÓ,™![~qÔúVY“n@åºÓWúŒ=éùÕ»0 W¨èzzÓè(À¦áÇaֺͪ#HËE ç5Ë[¹íá–—F¥¬`¬lØ7Þôçÿ¯]Uùœƒ•ê>µçU>‡µHô ›¬ƒŽ˜¯Ò¿Ø’o‹Þ l¦éXòIðv£¥Á$i:ÜŽãV#xlnÀç$ñ_ÉÏÆ_ÙâÂjóþ9ðMþ›ªÛ²Eym$l9ï¸g§zþðߊhað´²|cäœ.£}¥–ï¦ýQýAÀùþ[Åœ5…Ë}ºúí(Êv£¢’îš>TÕ¼1s m–Ý×ó·ïŸé\ULJ/´qÀÍ“‚6g·øq_¼QÅSœ9“ÐâÌòZên1‰Êêú=݆ÿ´ÆÊÊ+8Nk8Ê-|ž§ð‘ûlü=ŸáçÅi7;Ã%ħ˦IÇé_ÉzöÓ†ˆ“´ç±ƒ_Ó\!_ë|?„ª×ØGúõ•[†ÅAé8FIú¤}ðÏã—Š~ê:^©¡jÓ[jÖò,°M …]c¸é_Õgì ÿƒðçŽ,ô¿†ÿ´úAâ² }{…ŽcÀqØçøÇã_â º°þÚÁÂõ!~dºÇüÖëîê|‰¼!5È=¾+ë¸dÜYGyAúôó±ýxsR³Õ-¡Ô´ÛÔšÆdE,LdR2#‚*§‹¼m¡x?OšÿX½TU„ÏÌÿA_ …Íiåü>±5§¦¶WëÙÅ4ðUëãV~Ñ»[ÏÏÐþq¿à§ðRmCIÒîþxX6ÆPEÁ¹ ÙIÏjþS¼ñkXñV¯}{u4#1,ÌÜç9¯Ð<2É%VŒó¬j½JÎëÊ=ô?¹8‡èp P¢£jõ½ù¾ºíø=ëZ´—w×;I'æ¯~¿çŠú7ökøwñSŚε‰àÍ9–{ÉvàHG*Š}Ið¯×3lLrüºu/gk/V{9}9âó9+¥«þ¼Þ‡Ñ¿µ÷Å«? hëáÝ1Õ%œ’ãd@`}A_ŽÚö¡5ä$Ä ÌFO\ÿõñO‚°²£—:³ZÉÜàñ”èåñzÅ]üϱ¿c½FçÄÆÔ*Œ…~ÝçXµÏ‡|¤¶¾HðT•8ä{æª8Ž^'äoM?#ºX_iáü¢–ôÛün~eê¬C<îìcŠãïP!P@'Õ}q_ªP~â?ó¨r×’9Ë Ë!%Á|gq\f —ã*T1Ç~ýëÐÂ|}_‰™—(þ\pqÓ¹®oV|R8 ŸÊºiN-]IKüò/A‘õ§ü¹åŽìp}k°ð쌼(§4ã&çŽh Ù«/šw 7QÏðûŸ§¾ ¥alÊãŸöhS•Ì$Fþ–"gܯ&_á4Ï<|¬Wœgéô @÷*Íò–#®}*F˜(à9>´ÆÝÁ$9Bæ=qØÔèPeߤÄ4 “‘Ó Òcc021Mà …9Àî:S¤Ãî;¸ö=E¡–T¨ ÄÉäõ¦°.s´Žý)®âíztç­8v¨" ʰ(pzŠM­¤a‡Jù1bFÐIÇOëKµ†B·õïH!°»ó“ŠFÈ$úZh•=ùö§c œ€qÃÚ‚_AKy›†ÜŒJ„7?Lã4/1\–6Tv©XàïÍ6ªÐXñϵ&æ*›8`IéK©V,6vîg>˜ ÄΠ>êJ+©XÝ· Ǧj–IFöòøx¦\2oæïÏ8©o ‘ó´QO–C+|ÙèjØ!Ü›9‘×Ö“O(îÀÁñÿÖ¤o˜0c‡ïG˜Û>@펔…C §€î¼æ˜0G?7§æM”`‘“ŒŒš,>„€`€Ï\S  ð~_åI\D§)Ÿ— ÷(ÚCç4IÇ8<úzŽiŠ6Æ'“Þ„ †dRqÏ zyÞ_hqŸ¼x£q‹±6¹ß‰:¨œã!†yô-Ŧä¹X±ŸŸÐw5™ƒŒ–ç9Ωy’ü‡®[ Ìã·AVíÙ BA'õ¦öw:ëÊÿ6vñÛµu°“Ë;ðGN8?ýzä«©ìátFÔ*PÆýùzéíQ0㌟˜àð+Ï«²>ñ‰ ì–D.¾lñÁ¯ÑÙOSþÊñ÷‡¤¶ÿXn0ã8L°ýGjøn1‚žMŠƒëùОÞ9­_ÐþÂþ[Ú\èú|·³˜"íÉËcZúëöv Æ±Â8œœ:þ âIOÚÊïq4ê,MX­"›=ÇÖÌòBw• ÙOîú,S§–ìÙHúŸóšøèBQ—5þGäÄ¢ÛM;\¼wplùyêM{VŽÆ[H¥ÇQšör—|[IšE*PgIùAÍx¯Æ€¿þ:h·>ø«à ;Y°u*æÝL±{¤ƒ§èkî1|Ñ¡Jpv’wM;4ú4Ï;.Ì1™V6ž?/ªéÕƒM5ýj»£ðCÇÿð@ x‡QñEƃâÛ8-S.šŒ—BXˆÜãå*03È5ùÇñ[þ÷ã…pu\I¦);.ìOŸß+ӹ澣&ñ'8Âû<6ehÅè¤×ϵÏëÎñg†8Š´2üÚ‚£]¤”¹g++ëÑÞþ§á·íW𢆞5¹ðôÖN««/™Á*W øV¶î&ltm¯êÆý,£Š½ù•ÏÄŒ Ç* I$Õ»4rÒD©$ŒÁì{~µŸp 9$dã©ö4÷?®ŒÉb"PD»GSéøŠ€¼ºžNy­.§Ä<† Û”ààÓ8v­œZ«i¡ÎÖí 2åq‚jj’[–w±Æ8ãñôëN"QÖì‰>ÿðcœŽ O SpÚ@í€xö¡«ê”KµñùÖ9ÐÄR¡¬šûÛ8;%¥ŠÁÔÅVé¢õµÏe˜ÚÜÜ# ãï`wäÕûMmâ1…a¸õÏOóÚº?iÏ=âe†ÄÎ ê›=C¿5 *â  ˜©Q‘ŽŒ}¹ã¦+ö_öÿ‚“ü@ýŸuý G}%ç„e•VÿM’Bc•8h?q€î+ó>;áxføÅ+TZÅùô>…ÁqfCˆÈñÊê¤_+þY}–½ý€üý¬~ ~Ѿ¶Õ¼âˆ[R1«Üé³°K«v#Pò@•ô™ÆF”¢Õì 7ð’î"¿ðYÏ„pÙxëKñ¾¦…[èJÌP`NrA­7úÜ2Û<ͱ·nïÛÓñ¯Ú|/Ä}c‡)R“»‹kñ?»8g¹êOùâ¾s¼Õ¥•$ØÍ’çœç#< þÉòúy~Žœl¢’>×4Æ*Õ8|1Ñ/%¢=‡à×Á¯ü]ñ]†…¢ZŸ,¸iæpvCñ³~¸õ¯Ù[ÍÂÿ¼ká %‡K±‡÷Ò‘ƒ<€|ÎÞ¤žÕòÜYŠúÅX`¡-´kÍÿ’üÏs"êj›{ËÞ~‹o½ßî??ho]xÏÇ×àfŸËùI8ç¶kçûãç2L ë†î~•úvO‡ú®]Bh£òÎ+Ä}o:ÄO¥í÷h~›þÃ:QƒÁ¾9Ô~FžÃz`1#ò4ßÚ«GŽëÁ÷ó$d„˜cîúšøgSþ2‰?ï£õ\6þ0øQkzOñLüfÖí¶< ïÚçü+‹¼J°ÜBòzwïøWíxgî#ø›ˆirbê/6r7‘üÀ(Ü ’O·Ò ˆ;G½[)ÊœžI¯J:Å Y{í²¯Îv’\¥a݆hðG̓×ç¿é[RzžV%^,à¥G2c<~†¡Vd~HÜxö»–ÇÏIZLqÀÀÎ=iÒ˜F€ÜçÜúQ¨]j0B2NÜžùê (VÈ ¾¤sô¦I&iV)©0 xÁOçHmX‚g ùjŸ) õ¦!?êiê¸eÉϨ4dBÄI*òsÞª ¤PH}qøR@)–FÇËóœÍ1äß´!»óÐÓÙ²’¾1SÜXòz{PMd’2;pGéP”`Î 0¼)8ãÞ¤uÁ6h à¾ÖúŽôÌŽHãÞšÉèN}Å;Ê.7c§½ ^ ›”îd}iûòê8'˜£p¸ÙnOÞÄj¼0 œ“ÓÖ€™[©'JMå£G˜r­ÈHć,¸úU¼`€1åƒÎ}) j4ªÊ$8^ ¬³Èò"ž{ w§`e†A»Œ·<äR7”`;cÞ?NÔC£L9äô£Ë †À©\[vn!ˆ9"¡…e]¡¹äb˜$dRKŒgŒ~4ØÎQò÷ÂóÒ“Ô§«±>â7>ܸ>œS7å°ò¤Æ÷àÈ¿Â;cÒ¥p]”’=yÍ7¥€iîNü㜠L1! ùq×ÖùÓ²«* Ù50\`u¦I );ªÝU㯰Î:§±Q·1ÚÙðJîù21ÍoÄ í*ß&;ö®J›3ÖýÐBÁ×pÆà01]&žç ŒqŒóÖ¼ú»I€whô} QAùIŽ?¯zûÏöc…î|eáȬHóÞê ˜“ïÛÿ¯_Å­dâ[þWùо¾\Ïêb?®’=Ló¥mº©ç©À¯±|5|1oƒÆ2Z¿‚sø9?hŸCé8¦›xÊîÝYô7…™äòNÜgäs_Exv#/—: c×Ü×ÈÚRW[ŸŠgE³¯—L1)+•=8®ÿÃÎVÓÊfk`cÐÿ“^Æ]g‹¾çÄãgÏCÑb-gÈøs_ešTi£ÆKQ…‡áU¥Ž9•¢™ã#\Ôñçg¦èµ&šiÙŸÄŸüWðŽ/þÑÞñf¤Ao£êúªÛĨ¾dLñ¿9ükùZ×HGx×ÜqF ZøM_Ûp®)ü7Ý&¿CúuêãxC)ÅV“”$®õ~ëkVp×lƒ%îäYnÒ(,ÌF1Ó‘ïù×ëÔÏÏë­Læg,ûÝpj?€psÓ?çµnyuc­Æ’¡‘#ÿ[œÏz@€Èw¸ëÖšf×bhá8$/u¯¥tVwxLqÆv“¸31Åg9Æ;³ÓÀåõq²å§™WèÖ®ñnü1ןýzæç½faå9 ÜÿúëzjñLñqÏØÕ•%Љ$š6Wi \c–àJì¬æO.9À55•ÕËËê¾k3¿ðv‚|UªÃ[#®áŒ£¯âx¯¾4ÿÙKÅ:Æ“c{á½+í–rÆ6ù úw¯ˆÏóºy\á®Ñ{³÷ÎáHæÙ}l\­{és€ñ_ìïã¯ Ãæßørê>H Ñ68ëÓÒ¼¿þ«ûJÍjþ›HëõúW>=ÂcéóQ¨¤{™‡ â°Räº}QöGìðv÷âOÅ ø},”βÉòç*LœÆ¿R?ࢾð·…<(#Ù$#,˜èU~n>œ~5ù¾wSŸaòôýù%÷_Sôl’QÁG–ý©B¥G÷r¯ÍŸ^%¹µ¸Õ&žvžœàð®m.¼²Ä¨Á œñ_©á¡û”~w™U__ªïÕ›6ú‰?Ë·áÍzG…|U=»ÆË;{äûþµÅêhõ²|ÁЩsïO‚_´‡Œ~kúf·á-vkR­öˆe*Ão=GP{zþÎ?à›?ðPÿþÑ^ ƒÂ_õËK/‹Våbs¬K«˜²q¿Õ{çŠüK>ɲü·>¡âéûžôgóMEüŸ^—Ôð¼já¿õ†#åÔoŠÃYÊËYSû^¼¿¢gêí ’£åí\Ö±oçY̤ ¸9Í|PÒ§*Ó¡üƒ‡•§~5ÿÁF> Ÿ‹~ :e´g\²f’,à!B>t-ާ‚¨Å?~kž×µ‹K½2X|§Ã+ÆASŸå_CáfmU«`fì›Óþý­áf&8þ Y{wßý»-Wã{öÐùöÝá™Ûø€ÏùÏáYßnx¤Ëƒ‚kúšRއ­]Ê”ÜY¿gâW·tV™ƒ´ŒWYÄHÙ 2âòG³FÊÆNG?Ö°©…]eNÜ6mR”èyÞ·|g™ÌRíŸÞõϿֻ†ŸõïøƒLðî‹a%Ρu*ÅqÄY™›€9ô¬ñ¸ˆeø*˜ŠŽÊ ¿¸ãÃÅâqݽÛìéßàìT~ü7·ûu°ÿ„¾æ4:ƒíùòÔã¢÷õ5á?´Âñ}£êvipцÈ\àZüÄÚXÉcwå©Íò¾‡·gô³ Î~ÇàwŠôJÉÿ]Oæ»â.‡>ƒ¯j–2Ò¤ì ã†ùˆÍr~ÔK{603ÕN Ïå_ÓX,Lg§]õHø\ÛV®wZ…5wwùŸ«ÿ²„zW…þ ]ÿljö·sê±I¥Xªª€pO®kÏ~;x¿Âºž…©ØG¬Àòº²*«†¯qÖ¿;¡G[ˆ*ÕŒ[\÷¹û•>EU$—,-ø¾.Ó­mÖg·¸Þ¤’@ö÷¯½&I7 3Œ2;Wíø99A\þ(âúqŽ>¯&×f ÄKó“˜äAY‘6òñ¯ §#½h|'æØ…i™÷Cg$c¾î£5sò™qòçއ&¶¦y…£8+µÏ,~ÿ™ÍPݵ¾T'§¥z T|ýKs ò.@îáKæ£áóó’1Ú™ž‚,Šàg “ŒúÓ™XTrÆz©LÛX ý:šjÊsôëÖ€!—%˜žÞ¼æ†f\ïë@ ,2 ¿8æžA&Fäp(ðŸj|¿pŒmÏùöªe7½y<ZH`ðžýóQ,`ÛˆãŠ`=—8p3ÏùïRÛ•PCüâ€/y¬Êà`g½C*#¹ÉÏ uZV° gk0\ögJ§.Ÿ)gÈÚ¹‚ WhÏÎH÷üh4k`üÞýb¼ð o/Ëu'g‘U€#p<ã½ ûJ±×ð¨ó€ “ÏNi‹Èc9Éúõ¡ŸŸ½“NÝ™,]wž N3¼ãŽqIî+\—r†fÎ{b¬F8Ãt#=zÒ4?ºeU8 â¢ÚB@Ï•1ÑÆâyÏaÒ¤MÄ>àçÖ€Œmç óJS†xy ¡‚HÍXR®Ç(psótÅ ̘–éÈéIïNxÀãó§Ðz°)"0Áˆzr)²#6J®}ýé Âɳw1ãøi䃂3“Óƒõ£qô®Ì œ.i ŠŒ œóÇ^(ô¸Ð76ÇlÏÖž>èB„rväñG‰·rÇ àŽ=©È~UÀ;²9íE»”V“Ì-¸ÇÇ@28«MÂÄnÅ&%}HpX0”†` õ9§d‡B =±ŽŸýzdeÝ|î'=:b«>í¸?wÛ½ZèI*ò2Á°};U»<ïeŸåCó*/Tuúy'p=sÎ{bº%ÃŒ€3Œ ök–¯[¶cr͈!õèk£´X>î½±ÅyõUÏ£ÀïÒô¤Q3½~nN:ÃÒ¾Ùý˜uk]+ÅÚ ÝÜ„DŽ ¹,ÇøsÍ|_ÁÕÊñ4㻋üèO ª(æØ[ù×oÁ]HM¡h’Úíky FÃg WÜžŽW6ä[|¹«Žµü+ÄqP£hïªv>ß‹¢¡‰¬Û¶¬úcÃ3´"2¬ÙQÑ—?•{熵´H³r›…|9rJ7»GáyÕiÌÖçäŸü{þ ¯¨~Ì>,Ñ|ð›û6ï_·‹ÍÖê?5b'aÀ#kó7?Äjüôð×üMñŸLuŸ€<9p‡þîáKãé'½~ÕÃ^WβªY¼k8NwiY5n›÷ZŸ¤ä^ðöaÃX\NsZ¥èáô{Û‚ßO½ú×»/ óÊÑä–.]yþ~õŒÙ —7öÄù{rÇüˆaÿƒ”õexEÏÀ 1â$+õ×$úþuöŸÃø.¯Ã¯XYÝko­ZQœÚê *_¼ŠkÆÎ<8Î²Ê «Â¢ÚÜ®/ï»üˆ—€¸lm9df÷šé8èþjÇæÇü»öøGûVü!økâizŒ^$Ò/'¶¸Žæ$_ÜLŠÀ†ç ¾ÝM!Þ(µŽ;»†‘²€ñÆ úWí¾a±X,êø¥i)·m÷wýNìÃ…ó.á|.S™Ê2œìâî¬äÚü9™IóA$GÏ_Sïù~UŽÊÛ1ÁÀÆÜôç¯Ö¿i¦ìî~S];» ocq7ï#´“ÎO"›=„‹µÄgié×9ÿ"¶sŠ9þ«RKšÅq_sŒ Õ›-®'X Gið5¢ŠlŠX:•jÆ”c«g¯øcá´— ^þ3¸ãåÆG85Þø“JO ø_QÔÞ­a!Èf<ç^\g¶Äœ—?hÉømey.#8ûêOä›>>ºº’ü³•%äc¿ƒÅEœC3³– vè}:j1Hþx®¥^¼êKvÙrßMyv*á”d“ê+^ÏOiošvŒ/Ï­cRwG^‡½t{w€ï#ÒÚ`Ù“ÆïZýÕý~1xZØÙøGÄ)‘®‡ÙüÁ»p`8_R8¯ÉüDÂΦ[R½5w{ä·?§ü3ÅGû:¾^¥iÊ/—Ôþˆ‡ìÅ¥x³f£¬è+47ÊŠ®¡r„g•Çz+Ä|uÿøUãÃ$ú~˜ºeäì<¯)ƒŒ– sߌWòÖ«àqÎ¥&×GkÛîØá^"gÔT«%V’Ó•ùnÓ3Ò?aOø%û|øÛ¨>¯Íc`É3]ì $²cÚ#îž=M|)ÿ­ð¥æ…ñèZéN4$Ya[‘˼à*g 8ükÛÈóz™·a³LC·4œÉž‡FGÆn"ñ0Á¾Z1Âh¿½/y¯Äþ[5Ø™®æù6€{gšää•"è ó³9#Šþ´Ã;ÒHòóIrbê6ú²ºÚáTñèz~µc¨€áK„#ž3_×¥kRÕŒ°ø–šiž±£x‘•L‚LÈË“€qÚ¾•ømñ‹\ðµÕ¥ö›¨Kð0ut«&Ó× ñ_žåtñ”*R©§t~—“æ1/eWXµfŸTÏësþ “ÿtÓ<}ƒðcöˆÖ‚j…#·Ò|A;ãÍ<†åsÆ$?ð/Zþ‚µ8­µ+ŠýÄ«÷”ƒ•>ŸQ_ƒgTa†¡_+ħí¡~W}Þ­m¿DúŸÉ^%ð›á>)›ÂÆØJÿ¼¥Ù]ÞPÿ·^ÞM ã¯iÒè@³<¤»¡0 1#¹ ~1þÔ_²7‚¼ya¨^K¢ªÞídó’ _$žüšü댩•ftg‡¨Ö×ì}w†¼ià;ïÞ\EuŽ5èHÎî{Wõg çÏ0¥7­éìÓCƒŽaƒWRWÿò<–á¥\•lŒúpEVK‡VÄ€þœWÞ­ƒœœdîné{o¯ …—*x'c5ý”Áa_‡zg½3ö’ÖÿêâÒâlc\£;Ò1ü#Ü×ä>.æ5°9$0ôtöÏ•¿+6þûXòx£;©’ð®*­ûÊÒ$ÿ•JüÏÉ´š^§é¿Ä"Á2Ú… =F2:ü¤øéásm© Û°p=+ð¬ã‹©E=Ó8ü:Ì?M½îå#ö¡ÒFø®F@V'hêzWÌÐx§Y… ´ŽñÖÙ3µ` žxçŠþÑáåFM†s×Ý_‘ôÜMˆ«ÏjÕ¤ìÙkQñ^¨|»Y/$'`B<Â:ÿ*͸Õ/.4ùÃLìû€aÎ?_½˜a¨Á§ž#:ÆâŒê6­·CǵW˜ùð»[¦O_zó‹°~ÐäžFsôÍ}ÖÐüw‰®çyns×R9o˜ =k>0_LrOÖ½Z{bW¿r;¤4ŒªŽzVEÇú¶flî^HŠÚ;žV!{­ž{©’.$\ç#v@Ågn.NÓß…7Wãd’"‘ÔÉƪ"•8fçùÓLÈ™¤Ú¥—’9ÁéÞ¤IˆÁéé@NeAÉõã¥CUŽÎ ¦ò£##sü4¤ä•rp {Ð:0'”t¦ºá½8÷àP nRJåOŽœ÷©÷hÄ”pF2MWwdôÏ_O”¸!þc×4Æî8Æ>RA¥VÉ+òŒð;úR`(uL?nüUbÚÙ8äžôÆM¹‚…Î09â¡I6ùç¿¥OçÛ#ôÏãR3 VR§ù  - ,F8ÏjU=r8÷¢Â@\+ŒõéÒÃ/Íœÿ:!0¥HÞztÇOzUBIbG#œzP0h¸å°Ç¤õÆO8éš~D¾éŒã'‘Çz–0ϸnÇ~s@‘?–>f?tt•e0P¹çåÏJE‘oQó3üýÅDeÝÁ¿®( YB8Ü8¯ùâžåP3“Ò€$›ÕUTäóÞ•ÞÇ· ÁÈíH L` Î샞¢—kª¨V8&˜ ¥· z{ÓÔãa8êFzPœ—9'ÓÖ•¤PÞ^røÇËßÚ–ãÒ§$ŽÞ)€•Ú2:ûP Gpy;¥ÏÃ’Äìàrz`+HªälûÜñŽ*Øs#,‹‚€÷ëIìC?¼>f9íÚ€G\ñО´î¶1ÉÈ>ƒ¥2RÃØpwp{U¡*IÂü£zv7úÂIê:zÔ†æMÓ#}†sPa°r@_¯ZÑX‘Td‚8Ó¥\³ûòqÀéÎ 4›wGYg”mß—îÿõÿ:ÜŒ¡ŸÎAÏOι¦zÔ6:K2³õ8éÏé]›àmàúšâœw¹ôx'k“¥O˜ÎHϯ¿µ}ðÇT’ÆîÒár¥_’;ôéé_'œÃŸR/ªgî\_“0ÃOÍ~gõAû3øÚöçÀ~y&åm# üÄ_¡~ø¨Øy&G$ÓÛë_ÅÙîUË´Œåo¼ýÏŠrÚX™Éµ¾¿yõW„þ#Ž3/SŒäþ•ÉþÔÿ¶¿…?fïƒÚljî®OO[é6›†ZR0$#û«Ôûàw¯Ìòü§Îie_’^—ßå¹øÛáz™–o‡ÁSÚRW}¢µ“ùE3øƒøóñ³Ä?¼o¯x§_½’çR½™î&•Üîfc’rzö¯™.õfVwòÄóœu⿼¸+§—e”0°VPŠVôV?Fα‰VT0ÚS‚QKÉhk=Vâ[ƒ~Z/˜yÅcý¾f'©ÎGzõÆMXò'Š«4¯'¡êR´Ù.À ¦kôköp×Þoóeã}€ŸOoJùÞ*¢¿³n—Sëx#RY„é·Ðú—â^Ÿ7ˆ¾ø–+uÝ46æé2xù9<lþUø;âå_¶Þ+óód†{ áà¼ÞÞŸfŽŸ)seÔj?4ydèªÌ g=1Íb²ÒG#hã=9¯Õàõ±ü¹‰\­Øé4 j->@²"¼©Nµôÿ„toøÊI¡Hn~áGùÿõ×™šJµ%íi=Ô<:Y^a9e˜è&åµÎ¢ïöAÕ5›ø®ü=*I£´_?”w6þ£è1Þµ´OÙ«UðË––ÂI&Ç´ôôÇÖ¼,Fz/e³ê~™C¼.ó Oš7ºcÑôŸ†Ó@áf¶"LçiSžýkÍ?i ßEð=¦›,*·wWÔÈUÏÓ&¹0˜ÔÆRQ•õ>‡ˆ²êxNǶ¬½œ—Þ¬~xËmåd*Àçå õ…-’Ÿ:`H Ì=~…}.âZ””jÉ[©¹imn7)… ~þz`SÄd1†^? Åɶîwa)¤tÚ|ì>`3‚1Ø×П ¼oªøWVÒõm:ù㽂T–2¯‚Œ§#t Šð3œ,1XZ”f®šhý?„±òÁâéÎ/Èþþà“¶ŸÃÚïᦓà¿^Amñ·H¶X§·wê° Ï‹=[½G=útý­‹ÂZt0²%Šò1¸¨È¯âÚÜ!<6eÃ87ìä×Éë÷5ó?%ãªx¼Ÿˆ±X)¶ ß<<á-U½5^¨¹£xMӯﵵÍÌÑ,lØÇ œ:þeÿààÑg øSáîŸ'í:•ÍÞ¡+•À!FsêÆ½¼«/£‡Åä´éÓjJ¬›}ïªÿ#Òð¯WýzÂ9KâM|”ŸüdëˆyÛp,?ˆdzþµæ÷,ÎÀ’tsÖ¿«ðjñGìyÔ­‰Ÿ«1Ù‚áž}³íŠ‚+à àòx<õ®æ“9ø6ÓàÄÍ\ÂÀÒàFºžO›S¶QÌE‰ù¤NÝÊjüWÄ,Ÿ’•<ÎÖ.Òÿ ´s³ù^'eqâ. ©Œ¢¯[ý¢ïË´×¥µõHýÍÔ´ô½ƒÈrdäðåé_&|Hð;=¼Ö°Ûn.ňïÇò¯çìû *UTõØþmáÌoÕñ1‹vWLü¯øñð^ÏWûM­ö•¶³d8)÷{Wä?íû=Γ,Z‰óö™-â8Î1Ó>œ×Üp}Zy);ÇI.ö?°ø3ˆèÔÁSÀâgîMuèÿ˹ø£ã¯‚¾%ðÞ£ªé÷Ú{Ã=¶íÈèFëZù¾òÒKIZ"˜|ã`ŽÕýA”æTs ©IÞé2³ÌºX:¼ëX½™¡¦_ {ˆÜTäóÓã_Õükö®ž×_ñìñâE¿³5ö”%bDw(>u_MÉÛÕE|?йw×xn­h­iµ%òzþ Ÿ+ŸàÖcÂy–×”#í¬7ä¬E?þÇ$#¨ÃGcþµ~büu}Å庠 ¬Jã®yï_Ë™2Í"á¹ñ~ûUˆ¥g³Gòeûvèi_5gŽ+üî{{ö¯ÍÓĬʧkqƒÛšþ×ຒ©áœ¿•¤ñ´mš©wŒ_àk[h·:Êc.ìÀ¨ N>Ÿä×Ò¿ÿg¿x‚y©Ù¼PÄúœx5éæÙµ º•ç-^‹ÔçÈ8z¾g?ikC«>{øÍàÈ<;}3 l1ðIÇ~:WÊÚ¢’êC ò=úÕô¹.#ëXU}OʼFÀC™T¡Odrw¢?•QrùíÜÖ$ŠÑȉ»# ž{WÒSØüo¹ äà‚ã¯Ö²ç!deq‚@äšÞ?ä×~ë8][h»Éç‘ÜÇû娒H+¾? >rµ¹˜ÀïŒ0rx§6[ï€8àŽi˜và ?ZPÃ爦c…Q׿Z\“Ïn(.…mÃuÈ©œ®c­DÒÃrþ=)TüêK™=ñøÐ…Iò¢óÏAÁ©^7±NÓÔPÀ @BÊçƒÁ#^‚”0l_c@¹]Øýz~¬_9‚syühê+’ýÙùúwõ¤ÈùþP8Î1@ÄW]¸ Ȧà³.28øÕp>Ôû¶ù×ån¾ÔÃí,§“Ò˜ÈpR çšÌl/âiÙl‚Ol•ZuÊ ù¹ÏcëH¡|ÅP1ƒš‘‹+€D|–ƒQ†õ¶?Zewt®1ß=êÂ)Ý´ã§­Sz-LcíãÕY@À–î1è*Jb¤QòƒÅ ò€}FhÝÌw³(Æ}9¥¶1»=ÿ@ ûiÇÓ5j%8pHŒc9Íæ<ÇÓ…Ø9gÖ€Þ“+úšE+• <„0lî~éíMƒr’sŸJVdGÉ ü‡ïšwÈdOsÒt*ÊàØÀ”±¶ô ~‡ßë@[R&Œ|²˜ÇOñ©—Ûƒ…ÎO=h`·%Ü­¸mÃwÁ¥lÂ’P~tžàÝö#@# Ëÿ|úf„I-ÜóTRZÒ«(ÚâqÐtúÒnmÎUqïš,&õÐË”“#·rïªF‚£žàôªD0ñÁJµiþ°ä4µ*;£§µm 0äÈýkq쌲“Ž@µ„NÒZ³€g<ÅoÁ0bHrŒc&¸æ®Ú>‡-›;Ý&e1ä’¼÷ì{ßÃÉb¹»Š)î4/Á'¿ãÒ¾o4¦ý•D»²pET±˜k¾¨þ‡?f¯é–Þ Ð­æÕ"k•…Sh€q_ þñÔSˆ¥èL¨­$æøiṈ̃T«BÊMÛ¡ýcš`Ö' Ñ×Nšô={Tø×áïxn÷ÄzÞ ‰mn›ö yI*Žäœ þjÿmÚ£Äß>!jzí-Ca"‰s…×Ö»ü<áxO=žaQ]SZz¿ø™ñôðk)Ââ³j‘÷¥û¸|õ“ü—Þ|=ì—GÌ$Œ’zô㿵S[”´¡I\ƒØþ_GCÜ*>2mÖ“‘ÖøwÂú¶§6,í$qßh<Žüzs[Þ"ø}¬è…&žÕÒÞE,›“nWñ÷â¼ê¸úë*NJìô©ä¸º˜GŒP÷Qå÷V©æ±è é_¡²æƒvt¦”®œ*ŸïŒW•ÅU£ ©óu=Ž¥'›MÛd}õªhïoà?rØþ͘dƒÝ >Ÿ-^ÏXÔbA•Y"¼>œ]\C]Z=Ÿ×6QNÝü¾Iy…ÀÆBö¬ ~mÇvrFqž}…~ÅM'©ü§ŒV“¹‘$ÉH`H­- â.­¡êVï¤Â\ù€—$àŒû{V•0Ñ­NQ–Í™vyˆÊ1Ô±XgïFKó?V>|k{Ø­$K“Ê K|ì>ÞµúËð«ÄÞñäV¶¾!Ó`g`Ï…qõí_q:˜:õakÅI£û!ÎeäñØ9Z|·ùÛTÏ¿<%ÿóð×Å-5ÞFæE$Fü>x'œ`õõ¯çþ ËðÊóàOÇ«o…W‡eö›¦BÓ>bó0gÓäe¯ðûŠgÄòÊ'JQ”9µnëM?Só\ÿèæ¹fmbaɈ„õ´¢´ûÏÈYœ;«Ïðžç×üóҩ§Í`Xðr=ºb¿¤c¢?–1õó7`—Í X ©÷GsR˹™r8"³—ÅtuáúV/Ž_!ãh9¶{+¿Ñï˜Ûýš¿hüñÿ‡†_¾Âû³}]9mð¿¹6~šiŸÙ7°L‰vF<++ùÿƒ’¼Ummãß…~²½ó>Ëáé'š4 ìi§np;•AùU¬¿‡³ ³*ÎrÜle%5fÚçM¹6šßEÔüËÂeYñÞ3‡Ã’¿¤¿âÚÕÒÛÌñíbäôÉWx$N#p9!»gÐÿžÕúÎ Z™û~sSý¢g?rÆ)Y˜ó÷ àõïT'—oúO˜œ(ùë^„"|Ò©ï›6W…dÄRãŽyíõè}Ùp ýÀKgðäW*ŸSÜÂâ]’¹±e«O¸ÝêA#ŽÙþUõçìíñ×Ä¿ ?Ö(þãà°ô9«ê?éfý ü'3þ5ü‘žR«ËRŒ×¿ 8¿U¥þ{£ù/8Ë*pïbòÊŸòêm/8ïó‹GÆ?¼·òÜDl÷/%K÷5ñ?Äÿ‡zޏìUBʈ#`à aG¥|¦Qž ¥/†çëü#šÂ‹¥)Êü¿®çä×íû,ëÜ·wpÚíXâp .K®W?Ë5øñ§áÏ…µ)í®-Z;ì@ñúþ›ðÿ;§RT‹Óx¾ëªùÑU1ló#ö´mÍ¿à~GÍ“½tõžÜ×Ö²?Æ­OàÇÆøãJºxfÓµg;[”8ܧ،ƿLâs —‡jüÐkïLøìŒêO SᨥèÕîÇTñõ·Œ|# ø›J¸§j6Q^BAÏË"ξ8øa&£‡$³g Ž?:þ/Éa*9”¹÷NÇÃpµ¨×örZÆM?“±üÑÿÁI|/&‰ã¨çe%d€mã²:×ä"B Ó™í-ž£ëøšþÆà)ûL‚‹íuøŸoÆ?¼Åak/µ¿ÀýAý„~øGÅþ'{[OŠål줸hfMÀÉ• ÁíÎ{×ß?tÝ6ÖÂé-­Ö(’6¨0lt¯Ï¸§Z§¬=WxÅÙ/ëÔý/‡¡`(Ó‚²äOæî<ßî®.üU®aHÄï€Äð3Ö¾SÔvª±N[®qߥ~ýÅGE.Èþ]ñ2NyÎ&ÿÌÑÈÜå2ÛpÇ#waÛ8®vgÚá„sÀõõ¯©¤~%‹ø¬C3’ª¬¹,s÷GJã>^ØTÁ#×Öº#ñ+žEwx³‚Ö÷‹˜Ù†NÞ½?É\FzýOô®øì›¯üF ù·|¤`£­?hÊ£hÜÓ¹ÂLl8\÷ÔNTˆÈ8À§ÔLj `8ÎúÜT˜Faž‡¨'¥T(#b ç<?Î)A ¥wîR8”„¶H ÇaŒÐ8'ŠrõÀíŒÞ§gÈ\H7õÍ #eàqÐàUt 1ƒèiôɰØZ\{òO©Å5¨ƒz™£9'¢ž3N'ï1n3Ð,¹ v*H\Œ÷©T±@G'?Ê+IˆeØ?AK.[cù»ûÑ¢Ո‚@9ýzk´€áÆñ{ÐrrÞœÿJ—Ë%CˆøN¾Ô¢&ó 91ñ‘MòJ»|Ø=rG&€dOòä•úûP¥:n!½?úÔõ±™ª å±€y õ4äeVŽù£[ y–0T3ž„dÚ¡Ãd>߯Lf’)“§ÎùsžI7ýïJ^wtÂ/4Âùˆ9äóßð ~ƒ2%NvñÏJXK«dç# åक€=é*®¡ŽHÆ!€!¹êG]Ô—È9ü逤DË}zzÔÖêç=;Ѐ·|Ãi<]Ü(éÈé6;3ü1ÚIÀôÇZ™ŠŸœ2i¯Q»¤—–ár8õ¤r“‚¨D‹åÜã85}tŠ¿ùnkã<=,Ï –QŠXfùÿ½îÝú6åƒÄž—LÖ¤¶0‘)ÇÈèsƒÖ¿[ÿgŸ®“á ^ÜdE™Ž3Éá_´q†9Ë(Ãò?ˆú.À}[‹¨Ö‡×!ð£'ß\Œi7 Žp>Fæ¿™¯‰0‘©^0_Ý Ö¤Õj±}—êy|Ub2j’í;ä§‚j)Ç—n|g°÷ëÒ¹;˜®HÚdÃ)ÀïŒv¯Ü(ÚÇò¾bš›HÄšÒÇ Ç¸Ý“–©`X—ËçiÎxéô5ÑÌx‰OSÑ]øþ}+ãø›*Xš?X§z?‘ûÿ„\\ðxÅ“âgû¹ü7èû|ÏÝïÙ‹öʼðÌ–iý¼éfƒ,ZC r=0å_ÌÿíïûEj_´çí-ñKâ–¥ze[ýRAmÎBÛňâQž€"­~sÀü/C ŘŒæ1´ùZóm;üÒ>‡Å,›/Êhb³šI)×Q„mæï/ºÈørhÚfŒ™2:Zš8Êî;r3ƒŒœ×îvè1ÕWw.Å" FPBœdgŸ\ÔfýÙt…`݇µc4ºt†Ç1R¬„žëÓŽ}«¤Ó.Nâ<ßßgŠÂ¤nsUFHôT’6ŒFýn<ð+ô3öEýª>#þÎt¿ü;ñ$¶z´¥Z2J\!ûÉ"OB¯ˆâÜž†o—VÁâ»5oO?‘ú‡ âèW§WŒŠ±q”_TÑþŽÿ²Åÿ ~Ôÿ~üUð‡ˆ­îu›»¿¶,ÒDól/*2•²F@È"¿Œ¯ø/‹5Cûj|MÒ5Kè;Ÿ”KæØÞ3€;rÇñ5ù®_áŽ'‡s,q†Ä*Ø)%g§7;Wi¥ü­5sòÏ áýŸÇyŽMÂtiÖI>ÜÑIüÕšîçgZ¼²J’¦H'··ùæ¸{¹öã‚N1þ}+öœ2µ4}ÎmYJ´š9û‰–F”g##'å#ÐÿZÊ•÷¥@ˆ Ì;W£m”í+‹kxc`S ½?•v6wñíˆa6>`p7üǵg^OK Uèj‹ýâ96Ðà¼ô®ûA½’‘±ûü;ûW—ˆ¦œ>«+ĸWƒLþ„ÿàŠµ²üý¤ü?áÏj>_„ñ"£yio®ýÇØçô_ʾ¸ø¥åI§_…øG©È5ù×Uçâzšm$¿~™‘&°ô×hGò¿ê8¿ãÿŠ»ZBÀ1•€ÇœñÏé_-j©åHѹ#Ÿ”Éï_Ò¾ ¢?–3“Üú{VàaßwAÛû×ÓRØüSñ\dÛØ¸ÛŒëY3ß»Ý?ÙëÒ·ŽèñëÞÌá5ÇÛ2ƒÙ{V ¸ÆÖ^½ý+Ñ­üF >£)Æ=zjkN[j*áp2}i˜ŽB0Ïžüb˜ÜËòHö ‡¥WÜHê6ç9ö¦uçúRŽQÿêúÐö?>ž´Õ#ØÝŽ”+ÎzààŠQ±[œýìv :©Èì3Hw1c°d÷ÿ i#“Ö˜ÍÀ*1í@ Iƒ~ÔòA ´€zàúÓdì<`mØld}*=Øg¸ëHhcc–êHÇ R±o0cž?JRÜO¼eW M•w(;€Á>Ô ­† PV¦‡–êÄ€Ó¨¢àYY|­êTsøÔ\îo-0:ã­Þ…b[/#®?ÏJ0Hjd"vY@*<ŠaM¤«:R+BPP*ä|£ '‚Ïò§:®2àõ¨¥ 'q<ƒ¿¥W 3+´äç" o½°ðI䊔(ÇÍ“øõ¦ `K… jŒr½W4 f‘³‚sè «ˆIQ#O C®û¾aמµ.yÛ’yÎGh„J•Ú}óŠ•~fAè(L•Qû¾¸õö¦¸`7^”¬”·ÊYIã=ºÒd°pÀŒútÅ1‘dnü„÷<.)àŽ3ŸzWôl³¯9ü8¨Àa#cþ” óX7+ótZt„¨ >áçë@ˆÝÁÜBÝõÅ+‚P s’3Óšvc¶†L„#¶á‘ž´+ƒ–ëVˆ–â0äŒüžõf(ê7dr(eEØè b 9À zVìŸ,1âN™#Ž•„BƒîoZ†dܧžçߊ׷%ùHb1Z䩹îa¬¬Î›O•• ïÏZêìn|¶;znÇ5çbÔû¦·,ÑêÚN©?ÉB6d09éÃÒºíÄX,h`y@Ïùÿë׃^’i¦×²¼d ¡R=Š÷¥Ì‹'˜‡cdžzþ½dÛNóIûã†ÉVÏùÍs¨Z:ÕkΤîÏÒ¯ØÆÿGºñF™§ÍehÞü–9sþzWôðE´_²@‹fޱÈ>§†¿œvƒê§*Ý÷¯Ñ?Ùûöhñ/›¦hºD®ªŠ¡ÄGp9â¿v̸¢•nË15çÝûÞ«KzÝXþ‚Ãq ´ø‚´ÒU)Žz¥ï/¼ý+ñWì;a¡|ø–þ)ÕV ¸ü77–£€ë°öé_ÀÏÅûà×u4bB X•íÁ=ké|Îkæ˜Ül«+(òÙvO›OÀü» Åsâ|£5µ;S…H¸¾÷Oü53¼‘Ú0ËÇ•Ë]eÙÐ&Ò¿§(Ëݺ?$ÌÕªHøV'ä<)$˲úzÒO›ü]ÿŒ…®ÏºO?Öš’JÆ0 `ðÃ×µ{±Úç岕äi!Œåƒ°pp@ʵãn$O˜ƒÀÖ¹ê/zçU9u2”HP°ÀÈëÀö­Ë)¼§ ’aI-Øÿœ †´»= =^çMe|£9áˆÉôö¯^Ñ=þѾ,ý¡|iâ/|GÖæ¿ñV£;\]ÞÜ’ò\HNrÇúWËPʱT10¯/a~e ûªOv—FÑ÷3ÅeRsÌc†ŠÆN ©oyÅtlù’ÿUÜÆ~övFç¹®BöI^_²+Ÿ{$€~ké¨Ã•$Ï‹ÆÕr“3>WiÌ!»ž9À¬µÝ+ùpãÞ»‘æE¹JÅ«¤‚É#Ióå½G§µhéÓ$§g=?ç𩩬èK’ÉЉ"oçxä]^‘xAFF·$óíÿUyõ`¥Ïs/«i¦£¾ø¦} W°Ôí® KŠÊT’TóšÿG¿ø'Æ-Wãßìð‡ÆúÁi5Å´m2îBÛŒò[7—¿?í(R}ó_‚x“—Jxì"’¼¤Ü-Þúþ‡/‹Ôé×á\·þ*u9oå(¿Õ#î¹–#*P«Î}k翈‰î§ÕIŠdM‚•ÈØãR9í_ñf“…:t)ÙÓÝ7ׯâÁr\L¨b”¹íͥןüÁü] Ýéö:¤:]¥¢JµÄvé».Ìyo­~M|y¶ZŽ¥¥ëVáá0‘¼ÿ=9ÇPkÈá×/íg6’åv·âAøs^51¾Ò2~ÑYë¾–KïGóûNø!.|iâ5Ž4[ÛiaQ=àã×ùé}ösœ«d0PF@ï_ל'Z5rš¾ÑGì\[K–¼11[Ÿ´_ðIO‹òxâv©ðúþì bÅžÜ:¸c=È&¿~uÏÀމ¯_ZüGŽ2ÙS⪒§&“ýâ 0¢ñ8¬>!}ºq¿ªºü’?à¥ïâOÁª©]Ö÷/ƒƒÂž˜ô濞‹€ÂôzïÁ Å~Áá´œrZ´žñ“;8–&.K¤møŸÑ/ì%àoì/Ù¦ÓÄ+%Õï%¸aœü‘-GèÕÓ|EUŽÊõ>êì9Çsõ¯ÍóVåŸU«.³úUÐrY'F=_rHþmþ9Hßð›ëëÉÛpØÇ¯µ|ǪE ”³£'9Çã_Óyû•'ýÕùÊž#¾lã¯Û—ær7ä©L28?‡ÍÌxŒò:×ÓRØü[½áÒ±TU9 G'°õÿÄœ¾sÐÒ¶[žMetpºãæä‚ þµÏÈ`Häç<â½|(ùºÎõ$#Œ…ã“÷A ¯ÈŒÃÛ¯¥QÕEm §¯çÅ]hØ*“‚;é@¤S˜ ÇOò)ÞI@ÏÆÞÁûÔ®uùÛkuç¿Z©É wu4žãŒcm½ûS—clP¹lþ´ UPUŽvóÀôÇZE#òc9ÏZ]ØÚF9ÎiÜ †;ùÎz@ Ø }î´ˆ#*Áž´õè-+eè«Ðã9ÆNîp2€Ä?.q’:JNO^3š[¡!S–ɾ;þT,›×Ýi š6d=0™§´ª™Úù'Û­BF8Ó9ÇÖ„d“æ=F8  2’=ª95g:åÇ|ÿõé¡1pçf¯jP‡ks·úP+FŽÅéÒ’o26]ùÁÖ‘Dx`qû³ÈÍ*É…s›9v¡4PŒ+©ýFj ,ÌÍ–î4ºLdžR  õ¦m%‘Ôãâ¤Rë”ÆW§>ô !Ñ«f6#úñV±¹Ô1!GoBzR ìwb:–E Éãš{¥ŒéÝ´}ìdõÍAÛÀ'Q¸™/ lc·¤ƒ þtÕ[FÔÏïú~¹lÀÆ¥°HÉ+íXÏc¶Žé›VräasÀŸzÛ‰¤ 7`Œò}qÔVgµ‡‘±bêf`¯ë]}¼‹æ0)òýã“×Ôô®:èú|¶¥¤Jðý¼÷è±"òÇ0séÅ}#à„*ñý´vú<„ƒòg+ÛŸNkå3Lm, )Ô­+$~ïÁùF+6tãJ7Ž—}ŽóÇu†Ïž.¶`g„K ¯IûÝ8¯›5U¶²˜!Ù ‘’~¿ZàËq±Ì)ûh?uì}e1Éå iŸT~ÌúÈÒ¼Qexg+å²°#¡$Ž1éßð¯éàWâÆÎñn9+sÀS_Œø•B/0¦å´´?CÉ¢±\'nÕÿ3ïøæÕ|´7%r¬8õÃϥơl‚lÁ;úWóåµ0ÕÝt¬¯ø\ü›ˆ²ÙFY8ôg±|jý—þ~ÔÚtÿ(ƒRеïa¼Š0dd8ó#Ï¡ÇàFkë_‡¿üðïC·ðçƒô˜íímÆ×m£Ìô˧ùTRÄÕ¯F“ýÜoÈ»7»ü4õgã¿f•2j9)¿cJRžûó;¤ü‘ÆþÒ:e¤ß¾2;Æ ßðŒê;KmÿG~O°ë_æñöÎ+/k*%W˜àr~ëà¡™ccº…ߟ¼}•NÎT¶R§o¹Ÿ!jÍ1T£Ž'üñ\į’qÀŽã#õýgGX#ç3'ûÉz™/”$œcœŒúÖy/¸¨?/^OÒ»ªÇÍU½ØyQ´‹"¡õüõÅÇ__‘é;}é¶ÅN+úª¿ñ#jvßÚbš•n¯ÆÈ¶‚A' Œ}?Æ‘¹ qׇùÍQ˜#…|géÖ­£©Ëg‚ÿ>”˜|©¬sŒžŸ4î“*A*Hüh&npكߚ`Œ3u#'ƒÚ˜>äa®’O­\òãLñí×?ZLWÉy`Æ 5]ŸäòÓÆ½6áB}üçëM üÁÝëïL#8Éìjʨ;HÈ=iˆ‘”n!‰ç¶1JH*D`ž3Hd_6WnxãœóRà69çØø‚Ë($àuâ¦qä† ×·ùÿ"§¨ÈŒŽÀ:Mc»jôó>•Z úùq©t8<òy"˜FryŸZCæÀŒñLrHPõé@˜£SØ~”ä` } ¨É罅唺«ÛÞ£2o*X“ƒ×Ò†ã¹Xñ’qíN–c‘Ïqži’É„ÜAŒzÓÒEÃsŒñŽ”Šd*·@2sÔÒ9p9<ôæ€b¦îÇ=:žÕ‡²3ïé@‹+ãt§»11€ÃgLwô¤e ÎIœÕRÇ\äõî(dGRHQ‘ÜTr;³8'4À¸9…ëǯ…Ÿ8CÐãœÐµH)É|ñLÚ]ˆÊíÎzÒÌòß 23ïL”乂;P‰B©ÀbAP:~”Ö—†B8íÇJwvéÍÒœUKËó ~×q¬ …Ûœõ zÒnhÁ'`3@lÌÂß9 œ ÓsòŸÂ¬C±Áè? i,IÃqJàoFxY°H5·/¾:0zö¬¥æuÑèëP (9 r3ÛùV¢ì@<¼•ã9=ë’wêzÔ]¬^¶’ElºãЃÇ5ÚXÌ¿¹+œã“ý+–ªmC€¦¦> èÇU×ôÆ“ý@q¸œ`©<ŸÆ¿lþÅ—ok„1Ä›p[ËÉ~˜çõ¯Ç8î«öŠ•ô±ý¥á&É•w¼™èÿ¼ añcÂsè7ç7ñÆ^ÍÎ?tøèlô¯Ã¿ˆÞÕ¼â _EÕíÚˆ¤* qŒ~ÿõ냱ö•\ G¾«õ=r…[OMk £&øe«Ë¦jút‚çË%”ûgñ¯ß¿`½Ñ4xÓPR‰ 0 ¡x=ëÌñ'ê•d¶z¿C«ùeL4÷OEýyŸ¢þ ×thc’ &rÈØ*Ìyosï_^ü$ñÃèpÍs¸–àê+ð$Á×±×þâqN¥zéÖÒrì}ùáÏŽ?j·Ž8Þ(™±þ¯ìZÅH—™æÜO©ë_’{zÔjòÔÒÝç,ׇ(¤ïÝŸÁShûÏ‡ß±çŽæÐ51k¨êÒäù«÷Œ2î2ªýQJŸbküö>%ê­©êWóÊä±v`Ìy#ÚÊv¿¢_«gèü—Ç,àŒMF½êÕý#oÆçÍúˆo;,ØÎsíÍrÏ•–\¯Íܯlþ>•ýCAèÏsEûÆüÌËŽ¤•1××üЦU‰ÜIÈÆÓê:íJíXùº×»å®HöÏJÎ_6O¼ã9#“Zœn÷,£´nùG\Ó +0=3Î3Ûò¬ÑºO—qD€å@ãÿŸóššóYWœd®G8è1øTÛ@Œ\´EÒ }ˆ=3ZP€ @ÎÕÜzóúV2ZÜèåpÐϺÙó”c“ŒœÔ1ÅJ1GÝÏÒµè4õ.GpѰ†ÈõÖÃvî# Ü@ŽÏ>õËV*ç§„“æ±¼æh­ŒÂÕrÝ>Yô'±©ìoDw Œ¸\òOçŸJäœSƒ±õXfáRŸ7Sé3àn¥ãŸøN–k) ¶¡Œí$Gö*ð-C@ŸK“ì×к])!”‚Xÿ†+ÈÃcéÖ«:\Ð{sÄ|-W „ÃftUéÔŠ¿“±Y<=©ßÂïkgæ*K…$ª÷'?Æ»ÿ ü7º¶ðåÇ‹µ›'ŽÈ¹ŽÔ8ÿ\ÀöõQÍt×ÇS¥^oyèsðß âqx•ˆ«MªQMߦŸðNÅ+ ¤c÷`\·'žÇ§^•çQMåÍ/÷€ã¦wPw¢Ï”a™ÎÙ3¡°œªÙÜ;öü?Zítò09I¾`N?Jç¬)7(ž‘á¹›í1¤\¸ óßé_Þ§ü+J6²v½­´;Mö¶Ñƒ“ÿ,¢Aýkð¯ª{,¿ /úx—àÏ_*5áõh5JkîwýÚMoZÇ5¤Àù‡$Ó¼kQ׿ˆ+[¹ITŸŸ æ¿–±˜º•+¶þ%¡ø^W…R½³>QøŸ¢®µ0»‚P—;È}²~o­|™âm2öÚÚöÙïË# í]Ù-Jn»RZè~ãÃXˆû Tgcm~gâïí…áLÚ\ßȤ(Ü®Ø$‘Ž?>;‡ìúÍàˆÑÎÇ_Lw⿪¼9¯)áeF_eŸµq$•NÃÕ]‘Ãé×- Ü{$`ÑüÙÀê?­Rß³· ñçì÷ðïÄ}÷_ÙËi1<°xvsïò×wPj öÚëïWý†ê{lé/³8¿“M‘ò‡í—zÐü2×ñ0W Ž3_Ïåü‡ûE¥Kr6ÿŸÊ´ðæ?ð—^]ÛüŽþ5Ÿ*ËáýnéOö`Ô’/ÙŸá^ÄØÉe"z“æ7?Žkø»¯©N[{Wÿ¥3îrÈZ”ê³ù¶ø•vfÕõYctVy¤ÈÎZð{ÒHpÄ“žwóÚ¿©r˜Û OÑ~GñçÏ›5ÅKûòüÎvâ07¯éÏzç®qƒ”9Éæ½úGäØ—Øªÿ,jÛFàÃóþy¬+’¬ç#©޾œ×T7<\KÐáõGU¹›f:àzæ²O*[¨õÅwÇcçª|l®K/zõ§ù÷2sÜu¦@ñå–,8ã<óHOÝÚÄyçÖ€ þfb>µ&X2®ì/^IÍ(‘íÜg¦;ýi…‹0@ÄŸAý(%±¥œ†à`qRG+ dc”ñ@+yZEØHõÍ@¿;S/ßµ´+†Ç°]bâ8ÇÍ*ŒRE~U”×­—æ˜zñøoiz3÷Lß ~Y[ õæN޽ȋ¸_JÔ$‚eet|Ù#ùWÐ ~3k~6ÐŨ0Ž<Ëœ)õæ¿gÌ04s'%UtÑøCšTÈóYÑ–ŠökÑŸ¤³ïíww}­[xgÄ]³lI·pÙé_­žø‰<ÞIk¢À( ƒë_Ï\S“K)̯Jz£õœJÃg‹¤µê}=á‰vžByÌc'¾“ð·Ä5cÍÃnÀÎXþ•øßd6n¥Û©ù.}“GÞœb~kÿÁa¾$[Ëð3ÁþL'žþKÇ“ò*m #ñ¯äKÄò‹‰ä‘0Û‰£ë_Ñáe‡áÅεroúû‹–XNÂRjÜΤ¿òf¿CÉ/ã`ÎÀ+8É{W!8ÚY ç,ÄôǽBáÏÇ3XZW2e.¾:*õϧ‹1f`É$ôÇÝå+‡Ì¼sÓßó­XìŒÌ¥,Fhäóüê¦ìŽz4ý¬”Våßìɼ¦–NফÉhÃieÛφ6ýZÁM=™èÏ 8+IXEµ‘B·ÌS=Šîüá-K\žY­­O• e™¹ì3QZ´)Sr“ÐîÉòªùŽ6\ÇžßAUã;Ë$òØÿž)ÁóÅHæÅÑtq3¢÷NÄ÷:eÚIJKnܯÊÁrñ¬½¾Kîøô?ýqW&ô3©†œ-&´4íÿ{’Q¶ŽIuÚE¬·’ÛC!8 ´džÀ{Ö8™F•G²=¯ WŒ¥†¦µ“Kï>Ëø»ðšïàçÀo‡O®ÚÉмQ)Öå‰Ôƒšå àÿxïaê1_C9yƒH…HÆÜq‘^[‰úí •Óºrvô?OãL,¯€ÂÒÚ4£wçwÆçôuÿ'Á¿þ0x«à?Œôû[´ñ&š~Ímw€’¼*ÌÄ7U`…˜w;q_¢Ÿ¶ÏüŽmG]±ÿ…y6©âÛ„2ÜZaVã'ne'퓎•üëÅA§xKâ_Ãô¸ñ8Ýu«IwlÅ6ʦ@ ÐòkóŸöçð–‹&«aá;Xl|?§£[‹GqH*ôǽ{ÙÃ8Íéâ)Oš/u­ÓwÒϲ?ZÊ1¸<Ó[û.ª–4oZÚ·g§V‘ø¹âÛãu¨J…ûÝóõô®”2ïÏÌ>Uuk÷Ú Ô#è4çU=¦iZ_Þf朻H”1ÀÀçüó]“´¿\ä £§?¯?­sÖò4À»É«á ·ð7B “ËWúÁôó¢þÅ~“i»Ô/g#9ÞŸû濞¼h©Ë‚Á¯úz¿)×Ũ]ëGðŒ™úQñÌwcàãŸZð níã-°ò3Å-c]±uRî~G’AJ;žâR&ÃH=>µó/Œ5…$m€’ÔJô²/§sõ¬‚ƒ¼Qù±ûHiVšï‡õ«G€6 vÆ0óô¯æ_ãMŠÙø†ù-:y¬3Ïô¯ê kOë5©7¥“ü,~Ñ™.n\ÛÅ£À!¸òæ/’Œ‘Óé_¹ðN‰‹}ð—Æ^žßé÷Bê%î#”a¿ñáú×ÝqÍ.l¡ÖKákñÓõ>wƒ%í15ð÷Ý'÷I?È—öÇ¿I¾kê²gåž1_…áÝõŽå»9#5Ãáôyrzîý_ä{¢’Ê »ƒŒuÿ>•X¹*¤Ðs@š+n,¡Í.ügwNئĉ@Çpz`RÌet4†C€Å¸äzVˆØÀ¤^ô1‘þó)À'ñÏzUAfosÞ“ÐÙ´UÏ­crý±žh˜‚¹ÆÞ¹ã½8dëìjºˆæ`r1OPLg'Óÿ>Ô…Ï™¼ ·öÆFs€1ÍÚ²ô=1Ž*C1'#Øã4ŠÆv¯·ùÍY^¸$möÅ1Égù0I8$ô ®Ó–ãèxÍC$««ŒçoøSã…p3ÞõKpLóO\üÄ}ÒpúÔ\@Ãæd'Ÿ§ZŠ È‰•%ºäP›çÚW#9Îi ¢ýî@ê9üh7ŽÞ§J!V=Nzõê}èˆULð9ÏÖ¥`[h!±×Ú€fôÈÈ|`{Š„ï„„ Éô8ÅæW›k¹%ÉoÒ¢ þíAïÍR}¾£Üò3ùÓþ\$õ¦û¢b˶N‚UÏ$öǺ =Ùç!G¯\T?3ª‰©fï d=AäcïVý¼¤mç÷{N>ï±ÅsT]Nƒ³ÔÑ…Ö?“nAÿÇEm[H‘[îãŒOá\­t=Ì4½äuzEÆÉã?̽Iþ>†¾óýœ~!¾ƒ«En÷X·ò `rúæ¾Wˆðª¾¬èÏÜü(̾©žQƒ•”¾óõB×VæÚ ³û²'Øú×x¯]Ö~x²Ùd˜·„57;7r°·ñ.ü;J/:6ÕÞÞ§õýJÒxíú ~ÒþÑtŸ­æ*˜çeÙýÐÙÕú&][Ú`©K{¤~ ÅÔ.$ÇAh½¤­÷Ÿ†¼B4Û„†î=ö¬À20cÖ¾ÅðOÃO…¿­ã¶œ±LàlšÙ¶‘‘×Ï×Þ¼üÒ½|#jNÈýKÃ<>OÄ4*e9¥É®ûÛk§¹ìMÿÛÖüWn/>xšÇnE¬ÿ,ƒÐS^×û"Á6~*ë|=àïx>é.俆5O ²2œtÅ|GqœiexŠ=Ú²‹Q·_O3í%áîCÃ9­Lâ´©áã*Žœôk•6šî‰¿à²²éÖ_´¡áßÊðö†‹¤XÜyp۪ƪ=1Œ×âä-Ìí–S×Óçú×­Ànuxg RnîI½|Ùù×LfU¾Â“~®)¿Äú‡önøßãO‚Ÿü%ñÀZܶ>(Ò¯#»´¸¶²2À÷ ƒŠÿNïø'Ïí+¢þÚŸ³Oƒ~0Új¶iâ‘´ñ”Lse|ƒçÊÿq‰Ù±Ú¾Ä þÞÎð•(×&á>g/…ò®e·T¹Ïxã Ü3…Î#M¹ÑŸ³“_Ë=¯é$’õ8ÛÅ^‡AÔÅÒ[I³ÂÛ°$0Ks×o|WñÿñG…´cmeáÛÅ/{æJ诸*çóï_–xf§ˆâLDãfK|£}×¼X¼¿„±õê·ìÜý4m[ï? uIEÅÔ²ônsŽ£ò¬vÃ]‚À‚ôéÍ^ÓV¦‘ù¦2£©ŠœŸVÍÛ2É SN0IÏk±Ó‹¼d»c±àÈ×-}ô=\¹s8³Ü<Ú5;XÐmPëÉè9_è«ÿ»Ò—ñ×ÀëFB¦M=î›pêd‘Û?Ê¿š¼n­ìèà#ÿO/÷&{>#Þ<…¥Þ·þÙ#î[ý¢Î+2ÛH'Ö¾TñmÌ–‹)À=r 3cù•W5Ôü›‡-5>Œù‹Å:ÌMo+–ÃAÎN;×Ëþ)ñ*ùÒE,¤Ä;q’+é8[:²ºßs÷>Â9[M–~.Ühú–‹©$>aÝnêw(8ÀÛžµüÅþÒv馸÷WµDc bߎ{{Wôw‡‘•,Ætª/{—õ?MÆS©ªª[F‘e$K´€DÙ;OãÖ¿C¿`O¦—ñ/XÑe”u 1Ô Ÿ¿ 1êp ~«Å4=¾Gˆ‡—å©ñ¼_“>¥æºü¢?lmâ𨱜&å^œœñzü†Ò,Ž£®éÖQ&f–xÐ`w$ý8ö¯‚©¬>G^Róõ|kižåô=?ô£ú\‹nƒáé!%­Œ„XÔ ü÷ý±¼]ö?\ÛÄàI3€^;×çÙ'ˆÏiÊÛÎçÝæ2T2lMnГüøƒ­Ü™&™‘ŽòÇïrAõ¯:ºgÝ&áü\Ùþ•ý5ƒ\´Ò?†8ޝ´­6ú¶`Mµ·0ï`•¿Zé¦y8;½ä»#ðªD.à¬ß7&»ÖÇ…?‰n0sƒô ³ðr=鑨†JâžÊ¤‚[¸4 Í¼œ»ÇzQ¸«g;†;Qê+¨waòçœTƒkàƒ½14&âí\×Å;gœ÷9?Ê—¨…¶í=«0ÆXŸ~ô‹*–A9 #\ôÚxÏl:•¤*ÌA< ~”†"¯³Ž¸¦c XçŒóHÌûO@8 åÇñpxéÖ¥-°¨1À÷ô [nÊY2[9à­BûBŒçxõô¦&3,_,m8Í!#î…Z>dŽ…oîÚœàƒH.,qÿµ\v©ÇÝ(™eN9¢÷)1±.àÀÉ5q™*±ÁÇn‘A®öù~P1ô5ƒa‚NN:µS Ķ9ÇƤ "ýâwç#ÕJÀ7t…Tg¾õ«PÄ g$}=(]„l ž„S’EÆ ÷ç§øÔŒI !rH,ÜŒŠ€H÷Û@Œ(IÁˆÍ3ÏFÏ)ߊ`Jw–'chàgŠ®ÎÞf}úP›u?9^´¬Ÿ3ñÅDŒ1l‘úS÷?ËÁòÛœgüûPµÉÜìAúSCyGÌtŸÊ æ.w“É?/iðÛPrFHÍ4BNÉ]ˆnL¬§( ߘ֛‘H]ý5šòål®yç¡ 4¹!š07+`ƒQ;<ŒÛ‡Ê9ï@7Щ!ÁÆìŽ‚£àA9ïÅR!‹›©ô4ÂCè=GJ«‰nO‘( ÀôÑ[IÇ9Ï^:ÔK¹ÕIØÕñ'ÈÌ3ŽƶmŠî ÉyÁï\óW=6ÜÓG`0 îÁÝ+^ÕÈÉ<Œ ƒÍrKsØÃÉ«V—V#©z‡„µùlµ k­ä2¸ÆÓœWޤªQœZÞçÞpÎ:XLuÑz¦Ù¿?á(ðå„8pSž¹è{׺x·Áñx×ÃZ‡‡oAùtò_œžzñÅ~ޤòìÂio_ñ?»²ºñÇe”«_ãŠz?0þ9Ø_ÛéPj¨Fµ¦Èlf©Uû¬=Aþ•òTw$Êë#– œ`vì1Ò¿UÉ'¸(ÍlÿáÏçŸbèçZïdtþ»hõmÒ»°Êʾ•û]ûøubÒÿµlni@7©ëȯ’ñ§±Ê&í£>˹©Ê»—EùŸ« °»&7KŽvƒÁ¯¥|9¤ÝÜþsóuÍ~V¥8eÜÒÜúüþ½8ÎNÇâÇüžô¿ÆIt Ÿ3·N·XÙsÆFqŽýMxŸìÁû<Üj÷ â}cN&ßÌÖ7AóÿµƒÚ¿KË1¿PáZNÞšÓæÏO/ÃÆ»ÂW¨½ÈR‹ü˜?nÛtÓþ/ëZ ºkeo !@ÚÞX-ÇAÉ5ùçwÒ…%‡çõæ¿XáfÞS‡rݤ~ârRÏjÊ+K/Éô€¿ß ÄxëøVmÊ`ÁP €W×Gt~3ˆŽå@¤ƒÝŒ†«GL+ '?>ÌF9>ŸÓð­f¯Ž\<½ž"œû3íÏ€c´¾‹Ožm˜Éè=yõ>•û1ðCƥ峙10ÀÏ$úñÓé_ŒqŽT± ônçö·‡Yœs.…;ê“‹ýê£þ õc¦[ø]0ÕRâP42à.: Õù¿<åH]À§~jþÈᦥ”aìî­øÙÍJ“«JµWyJm½Ûi\¦îIB˜gØsÓóÍ{‡ÁÿÝxgY‚Êêä›f`ÊöíŠôñøhâ0Ó‡‘ëð.w,£?ÃÖR´\’~Cöóöuø²mn´ù"ºë´ŒzsÖ¿§ÙKö¨øYáÿ뚆¹£Eqã›m2ca|vï¶}Œ8=GÖ¿œ¸Ë ^ž&†2=«£6ù5Wº²z,¬þGôoŠ™7ˆøz…\º|³n*MuƒiI|ÕÑüRÁH|l4¸´Ò´5Ť ]Ž9¯Î?‰ô[[¹l!º,ìÅWjœ1³ŠüxJ¸¼\pÔuv_qð\—WÌ*9B:&ÏŒ¿­É,—7#§U°íšýc†r©(Ö›½Ñý%“eq•Ûÿ3ɵ­I/쯩ÆG?CÅ>?¶6·Œ¯n¢P³3±P 8^þ•úgÍoÞ/tϫ̩rðþ2¢LøQÊÜ*ì‡'è+è¯ÙkÄM üiðL‘K…{!‰a÷dpsÇS_²gUr¼Dûò?$áŠþˈ°·zs¯ÌûöÑÕü¿%šOòÉ8 ?¼ÓÖ¾ø£>³ñkÁÅ7Äúœ!ë÷‡ô¾k$J— ×’í/Èý'ˆ¿ÅÙtN_Ìý÷ñÑ“ÏF8TõëÅ~D~ÙÞ&Šk› 3Í8Îrxä÷ãëŠø¾£)gÓ[kùŸUÅõ¾¯ÃئŸØ·Þ~\êr¨r’zŒôãüs\䨒nx=r8=…EáÕ¡søW;©ÍVHÆœå ´ç9ÇÕä8FÎ_ëÞ½­.|^!ûÖ(O•;Àägœzf±¦—và[æî‘׊é¦#ìš8mA‹Jø¿‡üóY¸èTe{àô®Õ±âKâcrÛŸº=éI/•cïÏ40m%CŽƒ'&O@zç½7ÐHj27~”d6K1éí@­m†£2î*NïÒ…$dž¹Á8¦&)m»€ôÍ(8 ÄsÛÞ :1¸äŒçô«°µº!dcއ=ýê ZË"6g×׊¬¤·=Gá@ޤˀ8=}ý*mÊñíÇï:Œs@yª„ŸáÇZppz!íßÒ€O}°;zš¯/9* äÁä 3ü?Ö£oš1ós׎¸ª$š0ˆË¸qÇ5ü¾? ]D&r¤–ïÆJAÊôâ‡`,Ä¥±¹9ïVcÃ(äœHhz*aˆs‘“ëJ+“‚{óÐ{PXèJ¬õïCY‹»·ô¤À€·Îð£Û¯øÓd ª9È8ì9ëMÐL›W…éïÍ#HÍŒAÅB+0V''=84±·Þe\{ s@ÀÉó ¬sϵ&ÆÜH9$óê(кóÎ}霮ry<õè1w»œc¿jT*NÁÇ4z7DV$n9ô¨çÇ–TŸN)u ç¯^´¨$`Tþ˜G 8ÝŒuè{ý*RB–f ýiÒ]°|¼Ó7™æ!Î=½)0`0’OsQ±PØNÞäúÐT·%vAÎIºˆÆ„Æ;Žæ‹4ÈùHÁ”ˆ¬@|’8ÓÖ€"¸ˆª&@+ŒŽj$’^ƒÚœu%ϩϹíN€/Ži»‰ ßÎàxÇ"·-%m'öïþ=µ6¦ÕÍ”++±Žõ· Ø\*œöÀçŒÑéR•¬iEp$áF®3Ö®$¡I-üð}zW-HêzTjjjG*¨›:ô®«J¼òX&ï”sô5ËYs@ú,¾¿%HÊçÛÿ³¿ÄÙt[È-&”ˆ‹ Çp)ãñ¯Õ_øûBÒÖXe-òØ?¥~'ÆKí’ÒGöÿ‡´s¡ëcçÚçÂúdº.â XÂê£A>N pUˆîG#?Jü˜¾Áxñä`pö¯«àé:™Tº6ÎüZ¥y*Ñê•Í].uP,{¸ééú}kõ·ö&ø Ú^·o¡^ÌÚuÚ8 ݽqñæ â²LBŠÕEµò/ÂÌj†c*zI¼Ÿn ¹X‹…±´Ž§ükë?Æ™0üÇ5ü·ryv½÷\J¥ TGÇ_¿àžÞ2ý þ?Øøò=VÕ<%<ý£Ír¯G… SŸQ_¦Ÿ¿a¿‡> ·²:ÌŸlª¢À‹²!ëÔʼl׎ªýG •àãgN6oÎû¯‘òÜGâ pY%»)ƒU½œc9=“JÚwÚýã¯þ ¥g¤Ø~Ù-t«+O‡[–Þ5@í@¨Ð-~TjBM¾XüôþF¿°8sŸ eÕ*;ÉÒƒø >‹'V»¡V®²•86üùQϼAVC» §ís×Q+n}j¹8c9nÿàŸ—óEö¦oºX’qúWMàMe´x{W†B­ än ƒžz{ý»OÚa*Gºhü -¯ì³š;M~gÙ¿µÖ¾ú£é €+4ƒŽ2¼W/ûhrê?|s¢Ëy6„*öçò1ŠÂp¶!IéË#õêÏÛñ®-l£ù\ýyñ%üvöׯiÜ3{ôâ¿ ÿjOWÆ7vHáãŒs†äc&¾s€©J¶dêµ¢G­âV!PáÊúüVGĺ´…ÌgÈ<N9®.yX S´t¯Þ(/uÄ9´ï^LÉž~&á@a£##¡ëÇzïZ#ä«ÊòíÐ+)$tô®bîa3ãhד]T“±åbZ³g q*I+ì'$æ¡\(Ç=ÇQ]gŒÝÛclq»×ÐÒ Üà ž;æ *7Ž3Øõ©VO™sÒ¼À@Á³·Ëšj°e9ä‘Aq ÈúúŠ’ûuªV ²PÈ9¦n9@Ç­'¶à6FÉV^\R°Þ«ÇÜg>µ%!ªÌ»Tçä.´é áHŒ•Ç<÷¦&ÈÓ*•'šj²6ÓéE\‘Üägi ÎG$ð k m)USž çšˆÊùÜIÇN?Z¡}4#ÜøiíÞ•Aî ì1Þ†+ˆÁ•ƒ1ü餖S°äzŽÔ×qåÂŒäôÏSNSµIçÌÉÏzVé18‘qÇlu«Aä HPn'œcZ̤9í¿.sžsŽõ,{†Éni6P›Ñ€äöÍ1Yš\Œ:ç¨Å-Á“mŒ’ý}8ªÌñ>”ÁØ£›ØòvûS܆s³‘ž=i²S8Ý´IÒ7JôëJq ¤p¼ |l§.[rÐ.®Jdû¥SsLrÅ‘JC"Û"äwsÇJxB•_š›·A ‚In1ÛSCÊ}¸4†”ö&×@Ê:3ŽÇ­_²çäWù‡#ž”·5Žèè”åNÜ'Ö¯Àí–€-Ô×éQ$wÒnúøS.ö'=;V´rxÁ9ÈÉÈtÿ8®y$ÏBœ¶e áB–9QžVÅ¥Ê,{ð<±Â‘ßÞ¹§,zøZœ²¹èÞ×¥Ó$[ˆ[ùþ.õúmû9ü\:í²iW·#íp¨êÝGLf¾‹²çˆÁ:Þ'ô_ƒüFèæ -«?vz/S¾ý©õ9âðNx²eEÑWÇÍW8¯ÊßyúWÇp~5ÍÁk.kÍŸAâõhýnŒº™BÆð™€'hÆ@¯ãšúáWŒîôMZËR·»a4ne'9ãŽ=+ÝͰʾ¥7Õ4|gæÃfÔgÕÒ?ìýñ3ûS¾Õ/]™ž sœgúà?ˆ:LóFÄíl3Ò¿‘óŒ…\FòNV?£8/©‰¡õŠ{4}›à¿i—0°Î© _Fhþ3´¶´3HxTi POô¯Ä3-\>`éÔµ?Ÿs̶·µ”Öçùó~Ú¾3“âÇÿŠþ(”±ºåäÙl†•ÈéíŠøjâÑÞV …ˆèyí_è/ÒXl‡GùiÅ}Èõ8ªƒx¥E/†1Ü’*Üh÷N–1ž¿.qÏù5ÈÝ+3€x'ÔWÖQ¨›²gçYŽ ¥9N6¹ƒ"€Ò0#N¨„Ù1ƒÓã¹®ýÕ“›P‘­ipCçËê1õü:÷¿ƒßî¼®Z_­Ë ª³(b NäW‘›a–+V“[£í8/5yno†ÄsY)+Ÿ¿?h; Úq´Lèï oñÒ02ÔuÅ~Î| ý®üQá~ÙáíPÅŇBÄ|¤«éÿÖ¯æ,ë†å[°Óù¢Ö–iêê(È0œO“§YsBK_žÇñûEø®ãÅ> ëzƒ“us¬]ÎÇ=wLÇ¿½|Õt~bäà«ú_"£ì2¼5%²ŒWÜåÎ;§O Ÿâðô¾K•z-UÎãºA£{ÕYdó(Üø<öé^äR±ðMõ,YÜȯ‘²)+‘“žÇò¯¸>üj¸ƒN‹N¸»ýâ|̬FXãnAë^FoƒúÌ!4µGë¾q7ö>>xj²´*/•Ϙü}©OŽÞÿ™ç'$gŠá…Ë ¨ç ךëÃSå£öGÇq&1b³ìf!;©NOñ-,•b[=°;çü÷­K£v€AÝÓîŽõ5™Ç…›SGo®±[@û‰99<ÖMÄëupår~¼Oƹy9dÚ>ºx§^Œ)ßcFÊÑî¥g<?ˆú_£³oì»â/‰š©â+„X¼6¨ÖÎ̇q“nT/>¤ÇO­|÷f”ò¬¬ß½ÓÔûÞÉžcŽ•Ié­[óÑ~gƒ|Sø+â†Ú¶¡¦jvìP?É(û²ŒðA¯;°¶‘#UU;Áã¯58<}<à ð{£×̲IåYœ©Ii}Ù¯ø#§“Å¿¶GÂ!,E­-ïMäxòcgªŠþöýs]G’(P>îK÷ã¡¦Ê 9>ǽ" ‡(¼úúSÔïp˜¶äzSƒ0À‡ žVê>çP ½Cùn½€ì½M'ÙÕ`ò9bŸ½ÜB¾[…Á9ÚrprHÇ Íœ/jXä Ùe''­;sìwÊŽíÞ¦mÇ…9#ƒŸéRRC2¦<(9Ç4ÁŒ“Œri‰‘H¬¤l$ŸZi@¤®;óƒÖŸAX—Àu"žJä(ïМRê" ˜Á§ãå\zgš}@U9À#’:új‰ ‘œÙïL• ÏLÒùm…+ëœúQu°\†ŒcðèsÚ¬:‚8:Ö¤¤´Ô®8`½jXeu# |Ôý‹AÒhÙQy9 ŽÕI·tVùÇñH–ÅW'JK U¸£*ªÍߦhe"|³[h;ƒTæ*JŽ;ô¤·c–ÛÊž3žO4¾k/ wíÚµ ³àHîiþj€§ÛžE'pêGôïŠ7+|£õéF M… š3ŒãÒ¢ÁëÛÓÚ¦Å\‘eP0[?7_Jð¢58lõÏj, ¶".W…ã­Hå—;y'¯ÿ^‘@$Û‚ÏL0»BaOAé@¢Æ@¸ïëHΗ· ã€+gm¤ñœŸjt¡Np¸\côúPUX°vö¦dŒ!p9Ï¿õ  q11mÚ 'œ~4ÇàaFîÿJ ¡P±ã¾*a»±#Ýæ€#•‹ rŽG¨¬ÆçÓ4Öâ•Ø«Óq9±KŒ†ç‚8öªB³ÜaÎF~öx©¡m’¨PyçµФt6Í·ä,vœƒÏJÓ·•W,¤ûÝ{Vlì¦ífh¬Ì¨QŽ@>µ8¼nO;ñÇZÅ£¶'K×ãzƒíèjü7ûc Œ>ãÁïþy¬çôk[srËUx˜(ÉéÂò­z¿‚>!êÔm5[7Ä¡†y=3Ïé^f7 M Ò—Sí8k9©•æ1”ž°iŸZxçãwü,o†Öy¾·•[ƒ·ŒdµñUöªí$ßågœœ ðò<¹åôªaßó6ÒøûˆaÔÂâéìà¯ê%¥ö[Ìä¹Àôíü«Ó¼¨4wѪ2çp$ÐôkÒÅÂôdŸcÀá¬KŽaJKº? ßÙ/\krÊëöˆÜ ÀÏ`Néšýð{Éo24NxÈô¯äÌöŽYµ¯3?´*¿i•Ò“ëù#êÏë3ÚîF0zWÕð‘=€¼W¨³`Ûéw2®O¤Lkó>)ÂÅã©ÊÚÊKóGã|E…Œ«A®²_šGðYñVèßøÃ^¸ç}ÌÛ}¸¿ øJ÷Ä”qÙÛù’»…Ø<öÀïÚ¿³pc„Ê)I»(Á~F¹–],~}:W÷¬}kñ‹öWñ÷Â…ø—¯øbâ 'Y‘áŠs yjBåT’8b9ú üÎÖÑPÜï 0Üp ­8c7¡œÓž' +ÅIÇî>gÄ<¿„¥Iaä¥tÚÖÍhתjÌá®î@aÈôŸçFaÉ~Çל~uöé6´?ÄËßw$PDT äŽAã§çZÖ—­¸•[»TNšzH× ‰•9ÆQ{oþÎßï4{ÛmQ½Å¹*#ØØ}kõ›Á_ÊYM-Åé[x—s|Ýp=ú×ä¼M‘Aã”⬛¹ý©á¶} ׇéûVœ ¹_Ëcð?âm䇊µ›ÕcûË™\–Ç9rAÅy39`Iäç8Ï¿JËaÉ„¥É~Gò§WUøR=g/ÌÎv‘Éq&{zõíO,*ã-Àâ½;vº ŽL88ÁéÇL[VW²[ÉDì².1† ñÐÔÊ<ÊÌèÃâ%BjPvc®nLŤ‘°ÝNO$橇ázÒ£–ÊÆÕ+ûI9·«-Ä‘6»arvãƒëÖ´T¡²ÏCéßë\óZ\íÂÏSB&ߎp ÀÿdWI¦Úù¡²jñ‚;ÿ‘\²vW>ŸïÙ#Þ>øPñ6·moeË,Ž¡Tîf=6Žý«úàøIû)kß >øÃ×ú3Å«}…nïchö¸šoœ†Ï9…ü+ðø’†]‰ÂajKâ“Óåÿý¿‡12,²‚«$ªWžÝybµüZ>Føùû>YxËJ¾ÓµM?d¡XÅ0_™ü+ñ#âÂmwáçˆfÒµ &òáxdíñ­ø36„!, Ý”½èkºò?@Îp”³l ,ug'èAð@…:~©ñ£Æ^8ÖÖÛEÑÉd,Ψ9?솯ë[Pñ…¥»[YH€ûÙäþ5üùâ~63â¼T–é(ú+_ïÔþ\ñ:5±œWõi/r•:qõѽ~óÂ<_¯[Ý,,£-’9¯—|e5«Á#ý '›¿-¥|dl¯©§P'‘òoŒµ'[‡ s¸íèpAú×Ͼ Õv–3A•îÊz~¿s᪠¦Ö©ºd”„-£>?øÉwÐ[ýÔ"H^BÍ þ5øûHß[ÜøãR{{ ã{|ÁÁÏ¡¯Ø8 7Æ9GmO§âéûq–ïüÏo® owd8ü½j 9ŸË ùÇÞ#?çÞ¿pŠ÷QüÆê^£g¯|1ðv£ãè¾Ó­žMJþu†0A‘–8é_Ð.—¢XøÂ/„ôü + T€²à`>f#¹'&¿&ãüJ|> ;ï/Ñ~§ôW…Ø5K-­Œ’ÖM/’?4¿kŠq$oá&ø}¬ßwÚ==çšü¢ñæùÌÌù'•÷>µö|„t2ØI«9j~iãj«ãㆄ´¦­ó8[¶yNyä0üâ°ç9KuéÚ¿A¤¶Gó>5óI³*ä¥Kä}ìuÏ¥g@X£ÈcùÈÉWb<Îò±“<²¹;q´Œã²óšäõ/¶«¸Éæºé«>%èÓ2d‚zÔFNxÁ½+u±çŽhLY*s»±þy§¢GÅÎÈâ@xV`HíÚ«¼-Ãrö¡0–I§QIŒáN=(I5Ú#íÅB1æp¼v¦¶sómÎ †BCr1ùSvØVî?çUzžôò]IY20¦¤¢í’Àoþ½3a‡?CÀªÑ p ñœ×êjb®8nx¤$ˆŠÿ0ê8çŒSzŒc¹¡ ŽŒ¨Î3Ÿ¥s’÷¥± ù[ù{SH`øÇøSÓ¨îÌx÷.ýÂ<€ŒúÒ° f¹ì9©"!X3žÿ/±¤ZØW‡ ϯz…FO-Àîh%î=¡à29¥rØ<ç¾sLD°AºO5ˆÆO±«/’ A½9çÖ“e­å”¶IAùæ ”|»dPGLzìb½³ôÅ& äФð@8&œØÏJN€c¡ä÷ u'8úPU¶Œ¯z{J2£ã­1œ.ž{sJÇ9ýy  1È>ëôÍXBЧiãÖ¡öÅÉçãµkr™]Ä÷ÏݬÚÔèƒ,Ã)Œª‡÷ êkj Ö\¶rÝAÿõÖSõ±êajòØî4]bX¬nbI Yîô'µs—7,æL0)œS\ªšSr>Ž®6UhS¦Þˆ±i{²xÆ3‘ô:W£xrí¢¼Šã~ß›®8öãð¬11N›=¾¯lm?&ÝŸØg_Ž÷A¸²{Œ €}?ýf¿W|30µ–æ’¬ =Ͻ(ñ…5OˆkÝ}¯ÌþãÀÔöù&ïx/Èú“Â,dæG8uýy¯¡¼Y{äü!ø‹"}õÐoJÿ\^¿5âx/®Ð¿xþgæyÜo‹ —óÇÿJGñ¬ø_RñG/4Ý:ÎInžåÑUT–$·ý<ÿÁ,?à‘q='ã?Ç )â·dY¬tùæŸrÀýÕïü«ö8¯û…éà0ÓµjÑIwQ¶¬ÛŠs8p¶ÊÞÞmŠÍ-ßýºµ?K¿à±¿4?ÿÁ?<_a¢è‘ƾšÓQµŽ ä"Ÿ*Bq±Î{×ùÏøîÄÁ©Ü±€7duçÿëÖŸG¼l«åÚ%w·ûãñœZ¸î ZÒr”kÔ»{ûÉKñmž;#sŒœ~žÕƒq$ŒIicg#==¿úõý5M+•ceiH¦— <9Àô<þ^•zÎý“r£ źç×5nZ£‚•k3·Ðµñ å¤Ûñpý‡ùë_xãcêºüW—¡ïÕ ¸ç.œõò¹îÖQ’[¹xYÄÿÙõjàêÎÑšüVÇÆÞ6»)¯_(oݬ„3»×šávnæÈõÁÀ¯[ Z^GæüI[Úfø©§öŸæU1’C/Êz7§çVQ•¾ð$ •'ôü+¤ùå+¹@ì¼ì$F>SíSÆÂº‚¡ÏCC ´î#L2¿1ØsŽüûÕ è3ƒ¸1Iìi_F\ŽV‘É Œàþu¥ªP¹;@Áôõ⹪/tõ0ÏDmZ*³‡' ëß­z_†´ÖžHƒ0Ú_*üø¯35 mŸwPu±0…»Ó¿ü_ö>ðïÆÚ?xÖÈÏáï Ú¦²°4D¥ÍʸXQøÀPÇyÏ] w¯í3â_ƒ|9âH-cÔ´HerJ—Øcê95üiâŽ1f9Ž;ŸU¯+k§ž¿Áâ>eŠÃq† F|« J)Yõ’æ•ýtû¾ ~Ä_ |ei=Ìï5…Ë©À N ~FþÒðKñ]†£‡õûK–L´T1ʤr0zWÃä|WÈ«QUê9Æ6·x®Þkñ>ó€üVÄaçõæ= ¹–þ­Ïü“àG‰e¿üH¶ñ>žm5{Û¸`‰Ì‚%-¸`ô,ÿ¥}û¬xææ]íöƒ´tËcó¼Y™¬ë<¯Š¢ïµù$eÄÐÂfÜO‹Ì0žõ)¸ò¿%¯ó<Ä><ÝwòÇ=+çoøòIä`'r9=kÕáì–sšœ£¿sÞÉ2¥tùOñŠ™™¥ù‡ðç­|ûãGk ÓK:Çn ’Kz×ë(K Jz_?Vɲû¸ÝhÈßÚsöœ–ìÜxwÂ7 -rD·ËHº§°¯Éßk7¥Ä·7“3ÜÉ=çõ¯Þx#&Yvš÷å«ùŸ#âsÍ—Ó—»Ìó)œÏ#ü½’[¾}ùëVì£ÎØAÌ„ç*¼ý>•ú#÷`Û?¥V¼cÛ?c¿bïƒËàÍ?Š>$²Û©Ü÷NI8ÏÞ“ž™è+Öþ:|Zo xsQÕ€”=þb88ö5øN>ùÇÊQw7*ô_Ó?­òŠÉ8n—2³Œ9Ÿ­®~xÓÆ¾¥}w©LÒ\Jìì{±$óŸóÚ¼~ömÛ ã-Që_»åØxСNVI#øï‹³:˜ümzµ%väÙË\È›·ãäçÿÕX²º1À<žœÿ*öé§¹ù†&wº2'mŒ»¹9Î{Õs(Ž™ŒçÚº¢®xu$îÙ…,VC¸€zôÏ¥ró¸,ã ±8çü}k²™ä×h†BÜ‘¼õãüæ•ö¨IÁ'ñïZ#‘[q†0e#ƒŒúÓŒ)ÛP}èˆÊ\¯^wóÒ‚á@#œÐH~ÄU¸éϽVx7„e|Ž ÿv•ÉhŽH—wjª‡l¤ËzUk•P ·<Ò€8=ML‘HFJ{sš%Yv1'޹£@+’~_—žø9Í<2• ÆòqOÐ]Hßn@ ÓƒJ‘·õâƒ`n2N= ëNX‘¿0;R%Œ”à‘Üv¦3i8Ç^ÔЇFÛƒÇAN€þ´;ß@Œ|ÙÆzâ”’XõéèhîäcéÄ)?9äRo±Iw$fKó“ߦj9?Ë­ °0fÇÒ¤YŸvIÎsA>…Í¡ qÛÒ½ Œ‚XÓÒ§RÖÚŒy¢á€ÁÏjŒþónFÚ˜=ŒR: Re±’:÷=ëB)Æ~èXgoN´ëÎ1H:ÛÖ€v8ÇœzQ’T‚8õE&Èϧ½/pù}}ht` ‘Ö”HIßÇqŠL r9Æ XYØ‚ ò:T´T]¶çm^Û€çÿ¯Tħy\÷ϵ4»²fvÇ·Lc®i •R9íÎ(°®É ¹uáºu¥~L194­aÜlŒ7ÕG¿J‰rbšì+ô¨`;r Ä·-íš,&ŽW !•0Bóš[2·’s€9ëF3ÈûÕb ¡·ôéžFh^9ÇÐ rÝ»²$ðzÖÈ•ÎGàdPÍ úã;†6p:Õ¡…ePT9ÅC:âö»–BzŒãð­ v“Éñ‘ëÔT5Øè†÷¹Cc(9ȲÏô«Ë+FÌ%l¯®}=}úÔ´uÒ›‹LÒ·˜í„<qŸ­K#œ’Nz÷«OJy–…Ø®àƒžù²Ò»Ýñ>Ñ–##å#ßó®jñ÷>&­ÉЦýÖ/ØoÅÍŠ_Mf\ˆ ¨õû‹ámIæòd<¶q´7¿˜|CÃÆž}ÏÞÇ÷g VX®ÂÏû–û©ü-ª!xN;M})¤ÿÅGàÿh<Ïu§ÏmO¼dG~M~WÅâ¨Óħ{4þããóú^ÊJ®Ü²OîgË?°ü÷Jð‰ÿámük±·¸× æ[, „g*Òž™ÿgó¯èÓàÁi 0Ä©¨EDUp+à8ˉ*qq,Doì©¥'Ùuùï÷xŸÄϳ;aÿÝé^0ój_7·’G™þÔþÿ…›û;|`ð,–âGÔ<=yhxÝ ‰™?ñåþ]4)´ŸëVN|™åŒƒØ«úWî?Gl]«fX[ÿ#ûù—èpp»U¸K3Ã-HËïVý—µ|Ã…zžæ¹IåP¸+•à“ϵ`QÙ•æ‹–¬£ægüÀc=Fx Ü4J PO`;W[еË—bHn]Uv9Ùœäçæ®ÃHñ=æ˜ë-µÉF#kcÐõéÞ¹*ӌӌ‘ÝÇUÂÔU)JÍ·z¬—³Ipå™›9 ×ó¬ï<1æ!“Ç'¥sòr+â12ÄNUfîÙ\=ÿv§w#‘ZˆÌAÇR:‘Ðÿ…#žÿ,­ \ÊóN%”)ɱªÆØ¦A¸ñž•ùKû@~Ó÷~ Ntc²Ãr§™3Øþ†¾ç„òWšcc‹¯Ý-¼üÏ­Çb¨ä¹têIÚmhÍÄwWsÏ,óo$Œó÷JóKë©^áƒ1eä¨Çý…ÃÆŒ‰ü×ãçŠÄT“w»fdc.#‰ÈçÇOþ¾kí¿ÙWö|»ø™âXµÍ~Íâð‹«ÎX`\àä"ÿ_jàâ<övSZºø­eêôGwdï6Ï¨ÅÆðƒæ—¢ÿ3õ›ÄÚí®—b`]‘YAÄEùUp8¯ÇÚSâüž(×®4Ý6펓ÉŒåYù qú~UùÇ`%ˆÇ¼EUtµùŸ¸ø…𬫇êB.Î~êýO‡5[‰%¸1ÌesÓʹ›¹rNÞƒé_¹Ñ ‘üUš×s«6Þç=pä>7 ôõÓMk±äUo[œõì‚ îÏ=ë‚‹ÆI'9íŠëŠÐò«k+!#9P[úãŠj©S“×ÏU# 1Òåvò¡}ëJÙJ‚G$zýOÒ€ëd9•¶89Áɦ¦Ýß1XüÍ ÔqŒpgßÖžŠª CCÀç¯ò¥péa«negV“æ<ädTq[mtg·èi¦+K&A´…Ï#©#X:°ÃŒã9¦qêà6ÓŸ,÷ô¦iyYòú}hZD*¿<šd‘cN=…;ˆªÑ‘¸ÀéÍ/–Q m9êíLVÁˆ¶3Þ˜r„ô'Öªè–)Ë}sŽ”éQŸp\ÇN)_]DB‘4{NµXFm'åÆOÖ‡v!Ú01×Ú•”dm›°=©&Ô“nIg)Ìp_'’{t¤Z¸`’O<ŠRKŽÞ”ýDõcs€pI­%ÌQmU3Å&$5Td¾xÆpiÐÛ¶`ãi"Êj8m¼w«Ší ÙäT'±’|±a’ÙàÔ9%ŽÔUj@‘¹ëúT©œ–˜ qœ7JŒ’Nq@çR’¹$ï@Š9èݨØü±AÆ3ÆÚNBô÷©b,ä©ïÉæ€ij’>ƒ5Ò@?Åסó!ÛôéÒ™¸œ–ûÝèéÙ$î>¦§¼ƒÐÐŒp1Ÿ§¥"‚2ØÉ­äm"’6Œ˜¨Ë¶üƒN(`6à9àqÿ×§Gžõ6¶Œ¤÷#sŽ™4±‚ÃwoQT;Ç#¯"‚0~^EÜ@B°$téšØÃF­íšOcXî[ŠfÜB62qW”=ÏZÍPwE¤(ƒ+Ž ìjÔs&Ðsœôã¥CW:`ík“g…aè:qš]쀣d¾yö¨:±<2Hq´Œã;sõ«"wùAn:nÇJV:iNÚ—b—k¸”'©>ø®»I›ËpÀä c'<×5ex´{ùm[U‹¹÷Wì­âitغJSçRpßO_nÕýø Xßkg$o¸Aûþ5üéân¬t*¥ÐþäðοÖxfœ[Úèú«ÁZ”P¾žp $“šúÇÀZÛ[O¡'Œ×ã™Æ×Ëègĸw5Q>§Ü>ñmªÚEJ ™Áè~•ô'‡&Äaï­Jkÿ%ý±ÙÀØj‘ÁçX:«zqšÿ·[ÿ3ò3V@¯6Ž “oθk½¹'/pG_Æ¿¹è|ü«:VÄÏÔÉ‘ž=Äò1Ç…3Í*ÍÓ¸Çó®Þ‡ÌÉûÚìJÓ.Â1ÐýxÅIœ!CÆp@=3YJ"MKÐj©v<œ}qÒ·ìfKæÙK½Ç¿„ã¥ÎÜ<¹æ mÏe,{O–AãƒÛÒ¡Uq^qÛ˜W%ÓÔôÞqÕ¢ÚC$æ8£¥?.$ÿúëèŸ~Í>7ñ”zæµÓ´¾$¹ûò¯mˆy=ù5çf…, .i?yì¹àŽÇqf?ÙR¨ÂÎsè—ù¾ÆŸ‹4ÍáÞ—%žŽ3w *ÒÉ˹úú{WÎvóÈdvçæç×Ö£.”ëSuª=Yìx‹…Áå8ª96 Z–½Ûó&DÁf)Æ08õ®‚Îßë~HWMMÏŠÁEJHït‹'-àm?ÝHý+õþ ýðvŒ¾x È5ZÞÖWÆDhÌ Ÿ \þUðmŒú¦C­ü°“üÙxJ/ N¾.ßç9}Ñgú=[x§Ið_‡´¯ éQ¬zm…¤VvÑ GJ@+çïüL‘šViþBN5þ}æʵ›…îÑøîK”ʾ&Uê+¹;ýúŸ1øƒÇiw,Ó ºpyôí^9­øÊ&WwŸƒÑsšìÊr¹Ôœe(êÏØ²¼±ÁErìx~µâÛ‰ä–G˜*dàf¼ÓXñ1F2äÇÏ_­eYZ£Ë;hÑòücˣȵŸÝɼùÛç%¸ë_ügøí§øj ¨àÔQî°T²°<ã·>µôX3 |p±^çUÐûüº…4i-"ÇŸ‰ß5ßß]Ü^ß4…Ù¶†c…ôú:ùWñ“\Ïq¼œ Fr{×ô&I–RÂЂ§ $ÆøËˆeˆÄN Z+ØóûKΑÔÊp 8Çõª Íq8f9NƒÓüæ¾­%Ÿ”Σ«+ugÓ?þk|Cn³ƒo FáînJðŽ= =+öËûÀ†¼?liv‘„UVlu$ÿ'’kòž1ÌeŽÆÇ/¤ýØoêGxi<«*–>¼mR¶¿öêÛïÜø3ö‘øí-„W>ÒîÊÜÉ̤¸xÏë_˜—Ú¬·Fi¥˜fäþ9¯µá<²\ «ozZŸ˜x·Ÿ¼Nd²øKݤµõ{œôÞi`çŸçÎO*”`d#ð÷ç󯸧‡ó¶:­äõ0ä6p=}>•—pÅþ»Û§nsŸZëJÖ>n¼›¹—¼oÚ­ÀàÇçBF$¸ã9ÀéôÅtEjy5$s÷²‰Ÿ#‘Ô+4©ë»¯nÕÖ´G›Qݶ.UP©8N„zûѪYNHÆôô¦ŒÓÒãLŠÅH:ÔÀÀc׎&»[¨Î8ý3Ml³1WÆ=© 䤂È#$‘Ï\Ó‰ÂåútÁÈëÓõ¤ \C)%˜íè2:w©Ô¶EeVëŒSa±'ïl€A^W†Üñééô§¸ÞªäaC„89ïïO "o”Œ9"Ex· qø÷ëMÙ•ºž™é×üúÒ¹MY\<¨±¤ƒÏ9ëOòcUýÜÛ\åïLHθŒ\Gìzš„)ÇÌp½|S[X–…ÛµSp<ò84ø(Xnè \½Æ˜]åð¯„aŽyÏîO¨…X´t4™GLòhê¢Q¼–ÈcQc-œ|½ÎzS½ØïБ+`ôôÍ<ã'8RêäR2ȸÉÇJ´„¡!›<çžÆ“Däüʃ Ûj 8ÀÉþ”GÌ€ÜñÀÇéHTà.>Rzgô4Öâ{e†Ð 9¨¶‘ž*Ñ…ÜpN 8îç¡ê(ÙPŸ60O Tg‘šfTcÚœ{îzgÀKœ–ÈìI ·…8žp€ÊA¶zSc;H8É€, sØcµDd9Ú:})%`ÆNZ@ÀmãŸ\SÏÝɧ“‘µ‡>¾”òårsAc·8”ï,läò}*» ¸O<}:œqRªãïg FÂFG^)~êmãæ˜ÝƒÛÛÛ½/ÍÑŽM!!rC×ú…M¥X‰OtÏJV-nkDT¶Aù‡N1ŠÒW_-H峆xŽ}3W±º‰™v8`pF>§ó¯è×à'‹¡ñƒü?©Ã1,ð®ì3Ž*ü?Å,¥‡¥Z;]¦eø3Ž•\¶¶½#f}«áT¬‘É/SÎ ¯¦ü+­f$g“ qÅ~&ðò«„$Ðsü=ÓvÔ÷ïøäZyéÐûׯi_á‹îϽ~YðýJ­Ú6g乞NêɵÍ~<þÚžøðûWñ†±|$¹m-w`ÜM‚@öɯâöÙý§|OûEüD×>#xŠñ[P½b6¢±¢ðŠì=ýëö?x.®0©âË–?=_ä…³ÃÜ;ŒÌ«éZºp‚þâøŸÍéò?6oçÞÎå€|rÏÆ\‘¸’ß0×ö-h¤5fÏž¬åædO&ÒÁ9ŸÎªdîÛ‚9÷#Žƒük±l|Å]ô mtr7ã<žÔõbŠ¿Ì1×9æ‹_]i~m­Ç9àqŠØÓ/ÌH›cþqQR*Q±Õ†Ÿ%U#Ô´Mfîô$Q ’VÈ €K õ? |=ŸÅ2à‚H•-*‹‘×=«çñÕVlýk†²©qZtßKŸhü ø/à_ M¯­Æ/5´;×wú¨HÇÝÅÏzõ¯‰8U³¸†ÚàTªaxOnzŠøÕêæÏi-¯¢ò?®8w)ËøS‡^ •íyK¬·ýù}ñ_¸ÕõK••ÃF®Ê¤q¸wÿ>Õæ ë"®9ÿ&¿@ÁÓTðñ‰üqÆXùæî"¼ýæjÚ·™ ‘°0ßçò®ÏKˆV'¯$d}þ½Em›9rÈóUŠ>±øYðÏSñ­½ÈÑ4׺¼Š¸haa »`v’kú&ÿ‚&~Ï·VßuŒúѝ‡ô($[)J~íïd]›A#’ªÌÜtãÖ¿ñc8†‡qô\­&¹Wý½§ùýÇôÔ!—ð^3´s§È½gîþ§ô‹âß¡óLrtµòÇŠ¼gu¨I/‘.Põ=Ð þ9ÊpoŠöÓ^ê>#‡²µ NkcµŸÝÇ,Š$lsœµåÏ‹¥U.û°8ëþûK”ÑIV©²Gêùnå±äº×Žw¿hž9é^]­x­²Ë=ʪ¨Àç¥zøª¾ÒÔðûyu>÷/˽šO”øãÿíIi ‹C¾/v¨C:·ôÆ;×åW>)êšÕij^ÝHòÈY†ìµúÿð÷°Ã,Mh%)[ÖÇÍq—Ã/£õ;ÛsÂ5=v[–c$‡æcÏÇo¥q’ê Òydäò7p?:ýf8Â*ÈþtÌq³¯VS“Õ‰§ÛO{p¢8‰‘‰;U}ëí³&¥ã›ËmWÅŽöBÉQæÎ=?Õåg¹¤2Ìê^óz%æ}7ðÕ\ÿ2…I«Q†²§ÌýPÑt¯ øB¶Ð|7e\IŒ­âb:“޵ò÷Æ¿‰ºO… »œjý¡£a Ààõç¿¥~I•ѯ˜ã¯Q7)?Ôþ˜Ì1x|§*FùaN?’Ñ‘¾6ñÇŠµ[»Ë¹÷–bÜqÍyÄóãÌË|ÄgÓüâ¿{Àá– Ih‘ü;Ĺ´³Ë‹“ÖRg9%ëÜî0Gúw¬™åóˆQÛ=2;׫N=O‚ÅUæÐÏ–@Tä`ã?_¥aÍ)E$ýòqÞºbµõ}r„¿)ê;šL¨’’TˆÇQ‚=ª)>rÅ{ðjJ*®é €Ø#¶85hdÇ^i°9á‚y?ýj@G8{šÐÌrà‘“Å0ç±ê{PÉR8Æj0@Ï8 ¡#¥õÉÁ Œ ç#üô¥äƒÉ  d ‘ëFFpË‘ï@ 2À¤c¦›¿A@ÃŽFy©<°wpzR']¬v“õ zõÖ˜gsq‘œsÞšèÀàz眊P„í'ð  ‡}£§ëG——ÎzŠ~ï˜'p ¥¸<Ð4Äãã´ »°ãåÇc@6*® Ï¥Iƒƒ‘9úRÕB=¿;}{úR¹²ÄýyÅ/1Åšpß!8'ñ­Þ²ŒqRÕΨ= ñÊ0;¹éÍ90r£'<}*YÐÖ„ÂYÛžÃ:¸`ppOΕ­¶¦Ñ}ÉD][f3ÁÅN™’O¥fÍ ï±.OÌ­ÐöìMl[Lc!YðLõ ifzXYZHô¯ j&Öí%x÷*Jä|ßZý„ý’¿h?é:%§‡5Ë×€¤›‘ü žϦA8÷¯Î¸ï+«˜es…vµ?§¼Ïpø<\°Õçe5»ÚýÖ?üCÐõ;KitÍJPœƒ‚½ÓDñ’’¤\qÆ ïùWó5uŠÃVö5o#ú[Bª|ðÔõ}7Æi• (Çb[üûÓ¼sñ³Ã¿¼5wâ=oPX­bBÄ’2O`z“Å9áéãd©õnÉugÉÔÊeV¼i%£wsùœý³¿külñeÛµä‘è0;EkjíyŽ$õÍ~dëzã\™„’xÎþšàìšVUFµµß©ø¿‰YÜ+c ÿwIr¯—_žç *ù°©;aŽJt¾º’ѧ* àÿú«íù£ \üB¦¦'™Á\ã.í^"Q¸}ÜñÓÚ³¶ƒ‘!I$×d%usåq&ÓÜŒ ·F0=;Ó“yf$€€Œÿ犣‚ÍÊćqŒ©é×<ãšbƒ™ÙŒvÉäuÿ Rq’gG¤ëéÒÇ< IpE{ß…~4jVO½ÌaÇ!¶œ5äfŠƒ‹Üý „8²®G‰‹JñgÐ:ÆË€"’}¡xä• }sQüFñɽӄpÎLŒ¼0#¥|­<²t1 Iu?¢ßásƒ*s÷¹Z·[Øùjúà8,Ñç9ç¨õýk-b…\ìöãçŠúˆ¤¢’?šñõ=®"S}Y¡NNAË`qÆk´Ò oÜFîÞçŠæ¬´g£•»U‹>¿øñÿÀÞ*Òµ½6í¢ºŽPU°“!á£qÝd2÷ŠþÈb_ڇᇎ>G¢ø+ÃVšõƒ4—š]¡[<‡-*z‚zút¯åïò~Ì>øqk¥â_+Qñ/&c·?ìçï~œ×²j~)¶ÓšSêˆíÆLp+ñ¼v7ã%Z vK²?¬ø'ÃpöUOF:¥ï>òêÿÈùãí'‡b’ËM¹ vÄ«c ô÷÷¯Î¿øçSñ Ì÷·×¬ó¹'–Î=ú¿Bálš),L£ï3ñ/xÊU'<£ ?v?º¿ø—It$“,À“þf³¦pGßås»ÿ ûØÇdæÌU{ݶcÍå¦I8~FzãÚ²çœüǧ½tÅXð«LΚäžNì“ɬ×pê[ŸÆº *´·±4Œ »pÄû9ÏÞ\Ãv9Îkª Cͬú2ŽX&6òzThp€òAë¶´èq1Çæ!vœŽO)FÌð¥ê!¸¬2¾´1È;[Ý…;7dÿ?•–F$ŽvÿõÑt>ƒRM¬Q¹üó§±ÇÊÙÇ\ÓǚܱUÝþÖN*Mè̈vÈÇj=@’7‰Pî¨öÁ<ÓCn$±ÂžÔ`HW`9Í &qàú ›j>i|<þ¤Ó™¶{ž~”;!ÜX—PðÿžjD$‚Ê6}iˆY<¦ãàõ8îiTœe±»ùþTt¹D¾fvàg¦851 “º1ר¦4Æù[mãŒdÔf5$ÆHÀ9ý)…í–ÀGlnÉ#9Û×Óئß($}ûÓ[{€N8ý*´!“’ªÀþ÷z‰—å*Ø'ߌPaݸ2žsÓ­lp¥Ty~ã§çJEDhbyÈ$Å#HŒ¡c] óøÔ¢HV,Ãy¦9ž[4ñ¹‡ ïZŒôþ”£x8ïVð{×=Í5À`ãïPcƒƒï@Æ›¸îzÒIÖ#¸ÍGŽ —­I¸mÁ={â€% †ë‘üéØÏAíS}@@$ã§­.üãŽ}ª†ƒpöõÅAõ!Á¯jkHZÇ‚1Ç~½(m¹ã“Û¯n%¹$ ¶@wá=0y­ AÁçw¯¨©z#¢›±:1W#=ñƒÀ«Èí¸Ÿlf³gD]Þ„ŠJpAÈíëFàªyÀ'§¥$o2Tsž¼v÷>Õm$$åòN8õ©‘¤^¤ûñ¸ƒÎGœU¡,q‘óaÐÔúÔô§f®t:^¤QØÀ–Ïæ+Ñt\YÉÑNÁAêÕçâé*‘p’>ß!Ìç„©ÂVhú'À¿´‹ü3³ì¼‘í`ÛD‡§Ó½}ÑðçöðÕ,Žž¶‚DAóÈÇ>¿çÖ¿5âNÃfu)EF§súcƒ¼GŠ„0˜é]h¯Õ_øWöÓðíû)žp‹´0bäƒÎ9î+â/ÚÇöžñïÒÆ ó‰äHáo”öþÍ|gp\°™Â–*<ц«×þú/q “ÕÅáfœœlšó?2õÍbk©XÉ.A<7¯ø×žÝ\†™"vÉ ÷×î˜zJQKcù9ÆË‰Y=Ù³á‹'¿Õ ÞŸ¥~ÖøOþ »%Ïì¶ÿõý@Y|PÔ™.t>åÙ#ŠÈ Û¤\gÌ“ªç€<ž>[‹3Ùe2Üo)½W÷V­ÿ]ÏÒ¼2ázÖ­|T/Ìù#þ&ž¾ŠÚü»ŸŸ¾ø‡ÁšÍÞŸâ=&H.UŽ$Ûò°·b?ñ ­=íÑaØÇ‚½ýÅ}f[І' ±wM“ñ§ârLß„ÄC–Qo滯S.{l0D$±<ž§ô«É¥\Ʀq°?)ÈÀöÅz|ñHøE†œ¤ÜQJ{I#&2»Xöõ¨Y>ñ-´º;ž?úÕI¦sTƒ‹i‘£êù`kVÚíãRý÷BNy©œn‚NYhÎÓK»PQžBNGNÞÕ×O¯Ìá#YHˆ í^ejiÎíWÇÔ¥AÆ2Ñ™æò)ÖTš¹†3‘ø~=ê  ŸÝ”tv¨^AR·µwfœå °8o§ÒéîÇcy€ Œ uüþµÏWfzù|¬ÓG«ørù¬®ã .Ièjý5ý”¾9ê_¼Cc«éº´ÝHC²¡ê˜Züÿ‹òÕËêÁÆé¯ëñ?¢<8ÇR”žðM4ïæ~åxSö‡ÐR¼î'Ϊ¨i^(’BÏ mÉ#·¾¹%~G%*ÓQZ¶ì}ð×ömñ—Œ¾É©ëVÇMðûùóýù…:þ=+îÏ iøC¤Kg Z*>6Ü\º¯›6;–ì¥|æ+/¨áeî§«îÿÈþ‚à.ŽI†Y®aWšÑ?²¿ÍþGâoÚ3ú[L­|Y†~U$㹯•¾ ~Ò×z‚Ím£¦ÕbO˜ÌC/¿jrN”å µU£¹‡ø„ËiUÃá'ÍWm:"jþ$ºÕ.e’â餕‰,Xå‰ö«‰¼¼y ç?6ÑÖ¿LÃÑ((EXþUÎ3˜ÜDëÕ•Ü̳"•ù€ sì*•Ü¡·òIÉÅvÁYŸ+^¥îg4ÃË(IwnµŸ+¡r:gè{VéMYÞÆeÔç~#$óžƒÖ 2Œy{³ó’8õ®˜+#Ω=_cSºÛåË ¸φ(NóÉæº"´<ÚÓ¼€£1äàvâ‘@g<~?…W‘ޝq0Ûp8=Ç¥P•†NÕÜÀöþ´µæ8@!ºûL3© ·ù š?Žžÿ^§R…C¯9<€{ÒÜ4r—%ÉŽ”†PÛƒ øÓ=ª7qòƒÇJ,yCŽ@À çœq@TnãN;SˆÛ´òGAœR¡pùíƒëëNVc·#g=(xÁ ª3¸àãÞ¬n ™ÆXŸÀPÀŒãËR§æœS£‘ÂíÎîž´0$²ÉûœtÇÖ¥›Ën6¡è P1¡—vÖÆñÀ=)¥È‚àuôúƒ°àì¹óƒß5"ŒŒô&’T$yÏ^´õV`[gÌ=y¡°+¼'ƒæ÷…Göhöç$sÓ¯­0µÈZ&Cè˜';*ЀzžçÞÄЖñêA8•¤dÞB÷b Ð÷ÐÂíM½=)¥P˜þù8úR¨¨H,yÉZŠD߸‚@þ4 ìadnÝÉ^˜5"²‚8õǯ¥h@Ç*Ä‘ÐóÏZhÉ<¶€1’AÀÍGÎ}zPòqÐ{RíÈ$hÛ»vxR›<ó鎴ŠG9oRiÀcŸÓ}[9§ §¯˜ c$qÓ­=˜Œ)ëÒ€ª¥»çžÔÇ9ù‡¯aÅD±1~ƒ'©É§îûÅÆ4ªNwÞüv¥F+õ=h7×Í •qžC:1׌c½8—#¿¬|vŠSŒc<Ð;ˆß(ynõ†f^xÇza¹6Þ3ß4¬z±=óAV°c$àã'ïW­¦`Dg%{ô¤ûf_B9,oçWÕË´½Î:Vlè‹Òå ä)$žiª¸T+ÐõÁ©:S¹2×NZóbÈ-ÓØÐû–·æ"V Ô‚¦ƒ6Ýà6{ö¬Íá>…¸ÜÆIÈòóÆÓÔúërÖï+±pyǧøÖUÕÏcˆä’W7àÔŒ{ˆàõz×Ek®¼QGå͆Ü‘ž:â©IIj}^1•¥c¤¶ñ}õ¬r¯Yˆ,U+ÿ\]Gûé™=ëš8XF\Éj}¸ƒSìeQ¸ö9Kë§™¶dnÏ<Ö*|îÃÇøgñó^ðÅö%´ä°`»´úúÿõëõÁÿl|C£}¶9ÂLØdnçÿ­_‰q†E(UXªjéî—àPd¼3LsZ«>|jý¤4ß []C¤Ý oÈ*`qëƒþq_—?þ*jÞ*šieºm»‹`>'·ò¯¡à¬‚4aUhêÖžGÎñ¿C†ž ‹÷š×ËÈùËRÖ^v*ÿë;sÇ^†°¬Ù.§|0@9ô¯Õ)ÓPVGóv3,Mw*QÒZòwÞ&ö8'<‘þìÿìô[iš­ÜbîT;–›€>§<`W6b§õ:ª:6™îpœ(Ôϰ²ª¯$íÓCîOünÓ48|³*d# ŠÃ+þ¯‰¾"|}Õ5™æ±Ównx,§ïWÊäùªTUªí¿©úïqÎ,ÁÏ …•êÉ[N‡ÎZ–¼Ó3Èò³È~flœç#ŠægÔ™ßò0H#®=?ýuú§’ÐþWÌ3*˜Š²I]½L9®\7rr9õúÖ\·ŸË^üòk¶¹óuêÜ|“.bÆ7óŒt=«2êåÀÊ› ç>üÖÑZ]yÚú˜³LÏ=ÿ•R–FM͸îãðô­ãy5jv+m “–aÓ9ãè{Õ)¦Ø‡,è¥os’rÐæçq;C30?w±üê"Aä¼ãô­ö<ù?y’1²å~aéØF"«6xèI=(}@nù‰8cê*6I2p c§­!¡1¢õ$v¨|£Æáƒž˜éL DJ~Rqœž:ûTq²&{qÇ<ÿ39$Ž¸éŠª«¿;³Ç'Þ˜B%›¯§?Öž‹#mŸ1Ö€J)R\àpxâœ$BOxúc¦}饢ÉqžGCÒ‘ŽÅ%3Ï8¦>RO#ž†¦ÙQ‡ÝÁ'œÐ¥ÂÆÛXŽ{ŽpjºšE¸þtjË(@U›ŒãžÎ³È88Í+8E^Z•ã*·#?Ê€"eÚY¸Æ@'¥ ßgùN˜Ú67ôÏ­Oß+ù^â€$iùùñ펿0¾âªŒpp:t wì9Ô–Á\7Pÿ֣‚ ‰2Äc§jB!wòðTa:ž*T™@^Þè°†SØ9ÿ?•#†]¤g&€F Èw>½)Xã~Æç¯_þµ4:O¸ÀÏÑÉÈ•e¯þPÁ¹ @äVN'|q>îåf¹,C²€¤ñÈù¾µ¥¥×°›ö°üIúTÍrų§z¸ªPZÞHýÁý–¯4¯„çñ ð‘®kr,q·Cä.xðO'è+þ1|iˆÜN~ѾPÛ•AëÉëéÚ¿1¥†ž+4­>òqýéW2¡Ã\…„¹iGïå¹ð¿Šüy¨kÒ\]2Ç’B«tŸ…yTº™˜FL€žwç>£µ~‡ƒ¢¨ÓQHþEâlú®oŽœç;¦ôGè'ìðŽÃÆ?´{VÒ£¹ðÖ•"ßß[¸'Ø~T#¸,G 5ý;é^ ñ'ˆþøËÅϨÛéÞ†?;T¿Ê-½¸éjÌͪ g§ø—ˆÅ,6i)TÚ)Ez¶´ùÜþ—à\>!àÜ*¼oígEnܤ”Wͤ¼Å?Ú?Å Ö-u-+e¹³,@yÔ3·`zp{ñ_;ðî…¥ÝÝGkt&÷xå;¯ÿZ¾ïƒ§R4ö•ñ·€Æ`¾³Rʤÿ§ù6ʪ²±^€ã$šX+(ãyÈ'¡ü«ô•²?‰jiUÙiscNb®¨‡`Jú'Àß ußÀÓé° †5Ý$’¹Uç°89'Ò¼¼ÃOV®ÞGÛð‡cx°8(Þ[ë²8oÃ×Z-ÛÙÝÛÉ Äeƒ#ŠÏH‘pÀ¯eœö¬áV5i©ÇfF?,¯—ã篧f©üð>?xAõ{˶R‘ƒÁ`£¡>äþ•Ï뿵]&3i4!oS'œá”qÆzöý+ÂYŒjb'JZYè~Õ©ƒáì>:œ¹¥8©Ivm^ǘo ‘–ß)ø*+OÖZ8Ôcø°yûÕÝV© £áiª¸:Öš¶§Ñ_um"ÕVãV¼+üÊ `»zsÛšö Ú 25´Ó˶W9ùÈï‚: øìÃ-©ÄrËáGîœ=ĸ<§&NOßgÏž3ñÿöö¤÷Bf1œ¶ÝÜþEy>¥¨ùÁq #¯qÞ½ìa©F ¡ù·g¿Ú8ºµ¹´lãæ½>nôo˜“’{UEܧÌd·nyõ¯^ìÏjâŸ;i’Äò]JääœÿSé^¡aâø|)fÖz;n¼týåÇCôSéÒ²ÅQöÑTúu=¼›5ú„å‹¿¼–‡ªø›R¾žQ-Û4½['9õ®*úï÷ÆEp@Ï?ÒºhR8¨¤x¦gWZUjÎí™RÜù®Á(N=«1®6‘çqÏs€k®mŸ-ˆ¯g{”&žBw;”v'ô¨ã|ÄòOñ®„­±çJ£{•î%vØŒt>õ›,Ü푳ýM8£†´õfy˜¨.Wæ8Îzõ¨wF[Ìf!HéŒõ®ˆÇCÏœ®S’wÿX¤òr8=+º¸i"ñ'ŸRsšÞ*Ç Y”زaëÅ.Á½³ÔsVsn9dÃÉÇ^•C¼Œd`§Ú˜z™ØNÇ T¨êd_Ýãê)$RAç'åþTª7™€ÁÏÒ€"‘•ÉA9ìsÍ@>S¸Ÿ_€‹ ô#ƒŸçOóIe*z §Š` t óäõÀf¤ŠM “½Oj- ¯Ø ο/ä1LU`rÑüsFÃô#R»ÜÆìàQ–^ßµÐéÉúÔ…²½3G<Ñæ1ÜÚOÍœ“ŸÊ˜]'½¨ÉÆ0G'®jd‘Tp£n:xœ+ ô=:U4Í·ï~¿JV¿Êò9 àõãM‘Š•ÝÀÿNiˆŠ%ߌ{󊺰…ßÈ#š,4®I…;˜Œz c#éQ°<0$IÀš@J®ÌHþsÚ— øÏÍØéC)c8“8Áª‚#$±ëL ‚¹8 ëQË)|n1Øõ¥`%Ü3ÓϵK#e  9=³Ò†=ÉÎOÿ^Œe{Ö¦b|ÀCÖœÝÍ+ʼóëH8¿„¨}k?ÀÑ’ºsæ~ŒüKø“‡ü5k¤X6"†%‚´`qÔ¥~zø‡Å7SOs-ÍÁ{© Ê“œzkærL"NU%»? |[âAPÀQ—»ê¼ÿá47Ï1$œ«g¹çüóWtôß(P‚qŒs_RôGó¶£­ˆ‡]OÞø'%} ½¼¯of@óµxÀÇÖ¿S¿à¢ŸtŸ…_ |û7xZä%ÒYÇ«ø’hÜ5Ë®c‰‡¢)¹•üÍÅ4ç›q®îóóËþÝØþÞÂÒäËøkö)SuçÿnFÑÿÉäŸÈþf>+üZ -ݽ­èóòUÈ$•>žÿZø›Z×®µ—šiNH8Á9ðï_Ðy40éì5ø³ÅrÌ3 ˜:¼Ô䄹i9÷ôÏùAi-Ô»e|Žk蛲»?Šö³K»=ßá÷€¢º»·¹×dò´ðAÀ4Ÿáõ¯Ð¯Ýèšn—›¡¼qÛª…Ø«ÎG®~ëâsúÓ­hÃáGõ‡ƒÙV)¼UUûꟂìQñ×ô/Ø8½D‹UÁXîS€ã¨æ¾ñƒn¼¬ý‡X€ðC£s¶T‚?*œ—ÍMá¦õèm⯠QZ\E†Ž©¥RÝ{KôgÑ^øž—ÃhÒeP¡$<Œ`~_ ¯U¿¾Ó¼OgWåVè BËŒŽOq\8Ì4¨×çGÓpÞ}‡Ír˜áfÕ­kz#ÄüK¢µ”—6÷Qâ6$¨8|õ¯Ôü;{må\Ù©’Ì7%G)ŸQ^¶·îýãà8¯'—<¥A{Ë_Tg ZhmÞ6Ð !€ï@Ö¾è’mÜrsÓß=ë³Ù'ªGçU1õiþîRØ«&£0MÊÜœtÇÿʨÏxrÊÎyÎsõ«#Í­Œ”·fdó‚Êø< uYå`ƒ ààÿ:Þ1²<š•¯'aË4DüûW¡ÏàM1ïV—vN0qÛÒ«•6CÄÉ+\§=ùÁçç#ïqïüë,\ƒÕIÁÇQÔÖ°†—8*â7Ô­-Ãàí\r¸#üÿúë4ܨ,Ä|äüØç&µŒly•j»Ý•Œ…å¾áàëS<‡aŒ•[>äŸçUfö9g;#îœHÈãûÍŽj³JY‰*AÀížúÕ¼`ºœ©%¡È®3#vÇÒ©=ÈRœ€0Iô­’èrÊVFEåÓ¹eGã ÇÒ³FÝ ž¼úšÙi±Å7y ¤2ò¸=Îj&ƒ Ù3Œšfbï0ò=)ªUÑÃ1 ž¥?o•ûÅc³¤.Ô1±'$ŒõÍ ‰9ÇÌ};§,«¨~\ÿ]$¶C–ð´ye× oz`DUÔ¶ã½>(ÙÔü™ÉÆ@Î?€P¡É€*p¨PÅ@´D¦ÞqíS‰p1ƒÅtF8É#'®)RI݃ŽÝþ´Å­ôòía·“Ó¥HP dñÖ‘^D9 wà1Þžìt‘@t!RƒüóC8ÎÕ8ª±)’F­‘‘óz°ÁUàÜõéRQ¬ŒduÏ¥>IFŸâëŠ}B ‹·n9ëƒWRA¸(ààäžÔ ÊW”ëÏ­0¡&6 qž§·µ!î9Õ„›“¡ààb€â0 Áæ‹zÖ;Sÿר§\á»ûÐ6PÈ]ñ·RzqŠ@B`÷˜…$¡0=©Q—H  !C©-Ò Án@ùqZ'ãŠRqß½i8 N½’Ř œÒõoS@ dpzRz`qŸZn3ócgƒé@2®ƒMƒÔƒ@8É'ðúÒ!9ù†súP'§Þ¤ ÛŠóÒ€&“‘œþ†££qäô ‚ª 'c>”+r2?.3@y«¸ªž:sÒ€ýAô㥠‘JàgƒÞšAäž8ãŠ`H†î5&â)?1ù¾”+Fzz”)ÆÒ9¦crä zäÿ*Eç¨Åíîú C‚}܃Ԛ·i)GÛÑ}éo¡qzš"BY¤å«Ñ¸*91É=¬Ù×Ô”nv;IÈýjMÙ+¸qŒqI£x¾¢Æzä%ˆ1‚=iú—a[{n+’;ãšs 6gÌÓ5!«½‰mÉçæ8ôÏZº% TžûzþU,Þ“²°ä‘—t|c9çëÓ58w$œcnOù©:iÉó$iE “Ëd}}ëÞþêVÞ[`>н”ñ\8è:”5ÔûÞ ÅSÁæ´ñ•”õûŠ^1ø™6³rgn\|«ó|£>•ä—“^\y™ÈÏ;‡8©ÂáU$‘×ÅœC<ç:­é}rËœçרü+¶ð¸G½N >à uÏøUÖ²§&Ï#^Ó1¡M-ä¿3ú{ÿ‚~Xé? ~¯Ä¿”¶yc‘ôÈeà˱Knǧ§®+òwöÁý¡üAãÿx“_Ô¯Œ·×7 òÈ7œmU< Ý+ò›gÖÆI'fíä›ÿ€kqN6Y ÕÇÉZ~Ê ü”o?ü›O‘ù‘­j³ß\Mu4ƒsd×#+4„ÇÜŒ ýšŒT ¢á\ÛSˆ©Zní¶Êû6mÉ%‰ÏÓÒ¶,/"´%Þ1ævlgš©«ÆÇ‘‡œaQIô=_Ãߦ°ž& G ÁùÇÒ½÷Â,Zú*loU ¹ÆÓÓlWÎãðI¸#÷Ž ã(St°ÕÝšÙžßeâ4%B\äsÈ;ºtâ°|q¥ZxÃJ’)~Ôƒ1MŽAãƒíí_1F3¡ˆŒÒÙŸºã+ÐÎ2ŠØI»©Å¯ò>:¹š£=µØet}£“ž;ƒé]ÞñòÞh`½mñ zÿS_QZŒq4”ºŸÎynqˆáüƦNÊ2i¯™ìPøžÇZµ))Y!aó+g*zg>µ‹wgöGI¬e2Bùç=¿*ò©Ât¦á#õ)ãèæxuˆƒ»hð數¹slH;Ëx?B+’šäÇ)-ÁïÞ½Ê+ÜGáÙÌý–2¤WroµŒÍ1îìÜpÞµ²Lñkõ(›–.Áà{ÿŸåQ™]YK8$ ãÞ«—¹ÇRª¹\Þ2œcÔd÷¨^ïfc çøÕ¨ó¬ìÊrÜ~Tã§\äS%'`w<ž:åZ«-Ž)U½ÊotB*æ¨ÝÆx*GáV‘ÉRwcŒ¨‘Ç'˸ qT®®ÙŸ þ8çÚµQ¹ÏRzy”ÚF|™ÀT20À~äŽqšÑ.Ç$¥Ô§4àà±@äÕ‰4ùeUçèsZÅXä©- ‡ >Äç9äô¦&ÒAXðqÈΪç1,rp0¸`IãÐÔbB„í ƒÔúÑÔ˜ä›,Xíèxâ•cÛ‚ÄñØc‘LfAòç÷]³Þ‘îK&HéÇ *oÏëŽÆ“äÉVC‚zç¯Ò€#(ìx"ç½Oü8 lê= 5deÚwŽƒ`3Í4&S\QƒéÒ€ÄänÇ5dF>aŒÒã9]Üúb€ÊìÆqí@#ŠFݑ֑TrC`PŽœñéIÆãƒôÍ;<R`=hŽ@?{¥l}ìâ€HëÒ“œîSÁ ²•$}iWp<¼ãÖ€%úTr6â0IÏ84Âqžr3ŠPQŸÇ4˜ ÑàŒã>˜§ÿ #·J=@L9ÉT$üÞ«ü© %!»qJ¬@Û€ lIÝŒ A@OjŸ#j¨o˜ñÏO“æàu  À9ëÒ›Àçµ+ ¹ñÈú{Ò†$ = nZصÉPáøè+I\`0Á=±Ï½&»BE´r˒㓃œƒõ«1²É”fÏúT;3®“è8¸ûªÙRH®2CóÚ•ÍÚº Ï@½ŽIãô§.Ä÷ÎrëEˆ»½…ŒòÎÌöëøUèÜ£ço^>•,ÖZ¢WxÝBàz ¤;楣tú—c›G%Tg8àšß:¬žR§™€Aëž¼VR3¹êá12„Z¹D܉AœÈSJ¸X9#üûSJËBå7'vM† ‘ž¯Jøzö±x—J–ñ Ú™”²QØýk›ÃÕK³>…d–yƒ”¶ö‘üÏÙŒ_õ;?‡_´ ³iÑiÒ”Ú6«îxôž+ñÿâ¿6§¨\ f܀瓞{’kä8c-†J¦òmÝŸÒž4gU]KîZÿyãW.–-“žÝꃸE\`gžÜó_y?ñ3½ÈW/¸‡Á8ô…F\„ØÍ3Îæ³Ü²·eb\õ±§êòÛ\‚%?x“×¥gR IøLeJ#8½lð×/`˜9¼u8P3Èü}GíV82mk®ttåG¹÷5óÌRrGïÜ!Å*PT«NçñÖ-iX±Mîkí=‡?çé^(ÓÈ>òà.0 æºðwöJ/t|ÓäÍg‹†ÓÔÓµ×ní1M³±Ãb»]?â ÜìïÎìúÕU¡ëÔóò~"Ä`'ÉÍxuE râËPyu\“–^˜lv¯?œ³»0 ’An:ÖÔŒ9YÁbiâ1.µ=˜æóÉläqÉTMt›ÂœŸ\úVê7Øñ'VÄr2»)CòŒžj¨p@ä®sôÏJÖÝYNû26—ýg÷‡SéYÒNí’£ Øž†š9çTbÌCn8òÇ8çŸj†[®<°ÁŽ8þx«Q¹É*†l³³È¸pBö4©º5Þ‘õãë[(èsÊ{I9°x<ŒëTÚ}¬¯¸õÏj'<§©Ú,¬[ƒÐu¬ÙnDdæ2psÇAZ$sÎZ\¢ÓI0¼(J£#–réê=?*³‘¶ÝÆ¢³È oLvy†Ø×nCÐŒcšB!i$$䀸ÚsLÛ#„u#'¾=©€DÛ>W!@'sQo\nWÉÓ¥>G>ZAÆGz€(r¤©Åè²1ƒØóɦ•ùƒ©ÍXH\ò>àþ*|Џlt^àõüh»æ.[寿‡b¼ŽÙ4¸S”mïíH¡2¡ø_QÜб9 «—íÅF»ŒdÿŸóï@­Ð,Ç-…ÿ=©ÈþSíã È hyWp§‚Àçð¦%Žc~´à¿15äöoj|`1%[·9  ÒepwÁííMdu`\tô V3áTö9«BGPAÓvEŠ… ùCøT…펴Ñ,ž ;sÆjãǨ¨Ç_Æ€D~`ÀŽHæ®ù‡ÊTI2ãÈïRZ!de!ä gj5Œ ßw>¿èA89=Áê})áÀ(É`xþí9ÔA9È>•ND*ÍŽ3ÎÚ¿6œóHKÈ'¾ R¶ä=Ê ›æôõ¤Î Üyô¬BgƒÊ•r7zЃÉÏlSÇÞÇO§zN=iYÁbÝèƒ<œðyÅ+ ç?/ ¨=¹úÒ8çÛÚ€.@Áã¯Zqqæ€Æ8Î@çéR#ª…çÖ€ $@\dÖ‘0ÛTýÏ_J— –IãŒ÷¨ŸäåFp1HŽOÊ>õ2c=ýh`À8Ï©@-Ðç>”^È à$Ž˜ÍDÖveù}½~´-@ÓƒŽ};ÐþY¦[’x¦h(à•ÈÆ:[Ò¹Ÿ¼8âAcÇséEÇ`¤ä:Òœ®Ö–½A!„óއÓ4¡p_ëOÊÅ+õJ‚Ãn~µ<3y-‘¾”jRÜÔŽE` \tü*ÔR1N ïÒ¡és®} !ó%pAÇ•eqó+Œü¼sÐ÷¨·C¦.ú""vÀ=ÎjAÁ#fg×Ó4ïæV·å8 ý1ÒœeòÀž8·½+ ;2di<Ï(¿ùúñS˜ñ†ÊäõÇùæ¤Ñ6ô²m•‰ô<‚ÎjÚ0ûÊøÈϧó¤×ShJÍ£ºùŒÜFÝp3·Þ§ áŽäu©{°Ö¬¸Œ&Ó÷ÏNàœWaá«Èì5.¤°ndr3\•ÕéÉ3èr:Š–a‡ªºI?Äû—â?Šdºøà™¯']Ÿb8EꄱÏçÅ| ­Ü´×S*ç—äžx¯#'§Ë̺]þgëÞ,æ»ÃE½\"ÿ•È$wqY펯Ìyäÿ/Jú$çšò»! X«n#¦Fy¨Ú^8lÈXñŽ¢ªÇžÞº‰æ«0ãùÆjÌG`ùy<“žß&º YØéìînV¡'8Æ==+¯ÑÔ4¬]çæèGb?Z®VsÊ¡Fk…I6«dŸáç÷ª¦å¤##éšÖ1êqήè¬]ŠnëÉã5X¾NNzïZZÇ4¤Û¸«(NæRÞ¸Á¨d¼‰aÈ{Õ%r%U$T{²À/b¸oóøÕ9P„Çútâ­+òõ*Ës!fU8SÀª‡ÎHläg¥iÐÂr¾‚I¿% s€xª‡ »'OåA™*nÃ>H$ôÁéR‡“xRFÐzH¥äæl¤*äç È5 É*ºýÑÇ@:ÿ…1½ÊÒ6âFïç4äTØqùç­«sÏʽj¸$:Œg­H2üä`à`sÎÑÓŠ“Îf%AùG§5Hz{ñO—[ âí,@ sÏZ£aó䎞Ԇ@U‰Î3ž;T˜-³¦â «¬o -Ît¦>HLΙ g ú÷¡eÉ`Ý:cCCCÀ‘¾`p}3Ö¤1°Áì9úzÒ![æ\ƒßªX /(EËÎG¥-2(Ü£ƒ““LÊlO”ssȆI&w¨ÚG½$Ч*O88#=i\ öÌdàp;v©QÃ.ÇQŽÞÕ@J!*å°28©e|‰ Ž;ö"¬RBKEZWð1Å1Š®Ä(SƒÏ~9‡” ’J‘ÆyÉ¥ÖàB“©Ûž1ÜÕu<ƒ·œè)“nÅí²”Œ‘ò/9îj»íg&OqœãúÐQU€qÀŽ¢Ÿ»FqÏnôÌÙ˜A1Ðûõõ¥`£ ž}êÀiÎ î8§à~t¸éóqÓš0rNxïJà7‚F‚4ÀSŒ^™4‘rÞ”¼”<óM<öçò êPNzçÒ€óÛ¾zÒŽàŽ=E(BÇþ>Ôd#£Ž(Q»‚9lSpÅrx$ò Ÿ…?nF>´¶Ô ì ˜óÓÒ§{Óõ£ ŒœŽ©„/'¹>´ Œç¦9ïRñÆsüéˆPr[pã¯4å=H/j–†42’r9?¥/…'=ꬊ°‡jð'×Ò˜{aphêCמìGåB‡<ñí@Ð¥0£ƒž´»d\í@É"y"ìÆ+V9G”?/Z™#JnÎÅèeÌ;yÀ=êÎårw›·=«7¹ÛNCðU' ¾Å#Î:ŸÎ—CP;”|Ñ€XþTäXã ¹ #;Ó .¤‚M¤)B[<9*ο.ï¦9È©²Ü¥-v$Ý ŒG`O ‡>í3Tí¡b=Ñ£HÝü; f ŽzÍë¹¼_BÝ»+îx8>•Ðé²ížÐ†Ë9 Žþõ…Ux´{™}UN´&º3Ô¼MãËNÅ4§êF¹È ¥xåéÁ‰=Ï©®l%Gc踛9©›N›øb—Üa<…‰w#9Á5QÔ0,­ós׸æ½ÝŸŸÖÖì§#¶˜ƒ‘Î;SY²ç¯b8Á«±Ç/1¬òy›AÈÀ©ãwæ'#¦8Ò’ÐÎ.W7mftD IÏúÕ‘(‹qÏÖ°’LôiOÝL¾—5SÆqÆ9ÚzñCÜÊÙ8ê9ç§…d⎟o'ˆ‹•$ž~\/50¹tÁdÊ’IÀÎjy{Îï¨é.¾ï œéMwr2ç‚1E˜J~e#uåoþ}¿Â•ç\a{ŒŽÕqƒÜÊUÅvºl€T sþ5V[ÅPÅŸƒÇ^•¤c©Ï*¶E nVO-³Ž{Ž~•^K¬¨3Îr{ ÕEõG$§¥ÈŒÜcwËž ê'Ú%SùðÏÿ^«”Ë›B«Î¨Û‰ãn=jœ—÷)ãŽ=xæ©#)MÚs‘÷ºsL/!ˆ^§ó§c+Ý ¿{…V9ëôâ–<.[æGCšdï¨þ<­ÌAüÿȪ‘*“³ŽyéŠ@HvtôãƒMg üô§ZM’ÊÛ.s€x¨wó Þ½‡µ?Q•–-èsùç¥M"…S´ðFz@T>W ÜÓ³‚¸\·Ö€!¶¯ ôïN²Ä7S“@‚O ×9÷ô¦>Õlã¥2G³¸`#è*äF"¿'=3ÈŠ+Ë"±Ú íî}i¢m¹)äb€"ò]¤ÚªIÏõ/—³äeÎO&‹ô%”¹\.{Ó–YpFx÷§~ƒ]Í;+T˜œƒ®åZ`)³Û¦ú—m ™­³Êò~¿…2/´áÀíÔÛÞ‹Ü’ÒâX÷Hß¼ŒŽ¢’5W`ÌJ¶Ð]™]”1ØÓ÷§iÎ G@!*ÅQ<zõúT†0ƒjœŽ§óšr bKqŽxþU¤ï$žGlÓ¸ Ã;~R{š°YÀÄnœŠVaœÈN; á“€yÏz1‡ƒsïS,aúžÏSÈ£ÔE•!TlÎÌ‘Tä`]=GQŒÐ·ÐÂK`õ9ϱ¨Ù~brvôç½=‰ó(•?xœŒ“‘Ž¿J±ÜÄ`€zã·Zin>QÏoj±ãx§aGFù»Ð;;þt¹$sŠOLõïõ¤Æó@Æîü©ƒ$ŒqŠ“®v¨É¦ã?.8ê}¨©Î}})Wwxw  võ984À‡< ã¥KêE Ücq `º}y d’ÀœaŽE<Æ$wÍBT±ÉïS*®@êh„bM¤ò?JróÜã8ï@Æ1 ăÀéÅ SÃÍ&J_te jìî9Ï~=…3ï7ÞÔ¹PtÔ{œ(#åãŒP¥ÿ½‚{´ì€%`K8ç=)ü»o-ÏAëA]ÙYztÎ3š–J)Ï®{ÒÜ5’ñp:nF?Z´“/zT5mªs-#–ÏÎ1Þ¦"6È€ኖtÅóRrr2zS‹:ú摦ÃУ¶,ÿõê9ï# ão ~´ÚV)ÚÃUHeÜǞ㊛py¸^0}ûÒù–£o•ÿ˜9çêebAgÉ`07w©‘¼$“Ô°„oÈ8-Œ`ð?ÏnÆ\0vÞ¤÷íY´žç¡F§-¬Y’ùçË ,qÏzÏyKr <ã­%3JÕœ‘Yœ$ço^Z¡&»ùˆÀúZÖ'“VEBJ…É×éÍ4»¹<ZµÜå“,Jäà^ *–$•ž9èH©{™¹ ,›— äscJ–=gc¦Ú²a1U~ñê}=ÅHÓüÞXÀÏS×Ò§—¹|ë¹\¶Ö0ðØÈ=éVr®[±æŽU`Uäïx61Ü3ßš¥%Ä“òò…èJJ ©.©]€ ËlóïUMäj¡¤\¶Iõ­Tne:šêÌùµƒ“ÁxªM|®IëÇÞ´Q±É:šƒ^7ÊÎrGÐ×N»HÇ#Þº9•Äìàìc“Ž”Íò)oN¹õ¢ÝÌÜÙ%Ã-¿­(S!RAÀïžôÈÜC`¸íòJ×qÌlô<БÅå6<Î¥L;BOJ/ ÖÄ{ÌqÊdäfžÉ„U~qš^‚ (ÚG9'Ú¢t(¬0¥0#û¸98ëžjôa<²­‚ùõ怈 Àê9ê)“ì“8Z ÒÖ!MˆíÇÞ88íQHWnôŒš !WÚ3¸ô«n /n9ÿõÐÐ 0±.òÝvŽõab¢ Ätݦ‹°X‘þEÇóŽ­B‘ÈK.ïd0 PÔ)7 `qÒštríLužÔ¸mÀ áG^9¤ùœ¢žFI¤$#b€ÄŸþ¾j´’ýб€ ϯ4£ ÃÉÈôõ«‹|«àÉœŒ÷¥a¦Rm³å‹c<;TP)‰ó‘Çû]iˆ²Ïæ êxÿc"¨ à•Ç9æÈäe 2’Çx5!š2Œ™ú“ëGˆ2ÊÚÙÉ<ɦÌe^p1Ðôôê0ÇqòÛ9*V~™\ž1 %¹WQ»Ðv¤VÉ'n»zÐ1ÎùGPqjcÁåî£lôP×!@ç ¨NàÜý(â—(=zR“ÀË õÐŒñÎTþtòH$Ž=Í-‡Ð…æ|g˜ëR»o Ó´ÄW`í»w<ñÍ0­´Ž}ûPâMOjvîû¸ï@|6p2N1Ž´ðä¤àPfÈ8#·¤YqòŽhPàXødS{äŠ ¹&w»€¿Î‘‚ù»s@ï ›pvžG¡ïFv69>Ô³¸p£qcÜR®ÝÁ˜÷ͧqç†àe=:Ô[¾rùqÅM¬1wtù‡Z¶—LŸ+Œçô¢×ìiGq€S¿oJ´“6å;yÉô6³Ôë„õMÒU“b¨%wc”qÏ=G¯¥+*JJâ.Kž=)Ù€|g¨ô¥r“êÉe%[$Ó¶)ªÇ ®£'ŽÜPÆÙ*I´UÈç=j_´.B8+“ÏŠSQ±:30m²óÐdR+2¯öÆ)rô:Æ–Üûœuôì) V¾Qןҧ•‰Ô¾ä\30n=:‘ÇëQHRB8QÐúU#žR¹M™Žr2OPiB RØ\ãèkKhs·«ceuÙ’ùõõ¡%åÇ+ùTô#'cN ŠÅµù¾y4;eƒ€F=êyQ§=•‡‹•Ø¡”“É8ïéLûhNTpy<ç?áK”N¤?kw©ÎXóÏZ_¶ˆ€ØØÀãoAT£Ýíz•^ð•çߥS7o½¶ŒõÏZ|¦n£¾âKw+Ç´>íéT÷¼€Àêi¥c9IõÊÐÊ{ÿ>hÛÜuõõ1½Þ¢;8 K‚sÔŽ´ª!våºsG€ñ’<óJ¸à(ùÏ\Ž”0Òã’U„FO¸ÿ>´ ̹$íôÇZ™)¦O¿JŒü ‚¸Ü8•ú—¤C¹0#nHïIòa@v2yÅ{Œ;P= Ï óPe‹|ç è8o648däŸJ®ä:1SÈ'ïw ÈVÂôÀäúÐ1ܾzu  ¼ØÞ6'—éDmÛ8?ÃM •ÉÈê3M*]x\œûñ@‡Ú¤–ùóÅZ‰”|£¡äŠlHq.®­ÚO¨]ä<9=€ÿC'B€HÃwÁ«ÁÑ·Ÿ› ð9?•-nV ùWž ô¦N‡§¯=y´\ ð;$ ©ãÜÖƒ3²‰tÇ¡ ”ä‚ïžÿJR‘¾çŒ€G"Ÿ  £jô<óÜS‹*(XÈÁãÞÖu‹í#!B‚21š…“|‚Ep¤‘Î:zÒ¸ìZë!‡9É9ëïPÉ€º‘œàgñ¡y¥b„9ܸ<ãÞ pá·ç÷¦Hä  ÆðzzÔs»„*@aÈëšàTQ¿¾ÿÔ {(-އº¢Æ‘÷JŒÜçzÎØO¹]¶€zŸZMèR+Ê$È$àã#šD„¹)£Ì,Fcb9$ô9¦ Y.yéœÐ1f@…U[+œÔ y;Fp})¢_`LݽLíœàüÝ~”-Ãdeg¸éS.H½Y#IR¹ dgÖ¢VV<yvÇò¤ç±•ö m ŒõÍ!žàЛ i‡©$óJ÷Ø‘‚Xž~´78'§µ0ýÒ9À 1‘Å(8ÇoέM ‚7Ÿ¥1Š¢ž½:‡¹,y>ô2cßÖžã;:&ç óøi ëÇ9 CÆ~\“Ç4õˆûÇüþµ[ 0äcߥJ¯„R½{Ž0h¹FRp3œ‚*T;xÀ#µ0 Äçw~ÕA…L¹*TôÍ=dŠ‚ {Ð¬èØ àúu¦cwÌHéëAI RÝ 8õÐ:Øæ‚E ¡öôÇJØ~RéIß¡IŠNÅ^s‘ëÐR6ÒU‚‚>é&û Š7nàñ¦†ùˆ8ëÏ9ªó¶?ÕŒv<ô«1^H…UÛ+ÑqI¢”šw4 ¸Uýâ¶GuéƒWÒâ6Ã8aàç,ê…K«îê:©È÷â¢ydîã=…K5sî;Í“·<}*Erø'Ÿ¥¹jB—>Xç°cÀ¥I ?Í’OB¥+j Z‚LAÝŽ?•9¦ã'ŸU⬆ªY‰”|Ù j°1`¤\êúy¡s’3Ôÿ1®w³ÿNôìg:d@îÇÌ/÷ˆÏœT) ØTŸ¶jº9w$™+× g§AIûånþ˜ ÎUeƒxåPŒTrܰÜwrV¸½¡]»’œ(ô棒fbÀ±Áè)Û±.£Ø$dqŒÍ>@  RA#‘Ö‹‰¶ÉvWï;c½Eÿ-7mÏ|f_K²YòÊNXs´j»)@HSœg¨£¥»ŽF!€ÀÉ=Z¢pb~ÌUéM³\3"íà`íC|¹%Ž1×ÐS)êØ™Þ ÏÊ8ô§ <¼ª©Üxç¿ùþ”„´ÔzFÌ[œ‘œð9ü)oº¹ œàô¥~ð‚Cœt#æcòªó]HÄ Ù¡Åb#ŠêD'œçéÍYŽN¥zà玹¦ Xà øf«É ¬AZfý˜Œ·<óƒMLÉœ1é@ qò;ž´â¨ã;¹Ç­DJ¯ ‚{žô†\€«tö÷¦"`¥€XÓçïK‚˜a’ÝãHcOÈÔ~T¶£spOi—…qÈ?)ö©Qå·6=ÎÉ EO—GNÝ1J] \o,Œ`Ò4@Ò«®q튉]³*„óïNÂB¨+µ»ÄÕ»9£y¼—MÑ“‚r)´5¹–±ÌcÆrØÇ§ãN’ßfÿïŒ ^£¶¬‹æÈ”>•#+$ ÊW4\’ɸžh‚‘ò®éj¬@mÌqžÝÀ¤?1èÞg–]°»¸É§Íçž3Ôw£¨<» iI-Ó=}©Ž ,ÙÀ#‘BÞâ¼{v¨'<~UBs¸íÏ×=ª€®•*G> tô« FÜñžM6IÒÌW ß5­ )7¿Ê9㊗Øh¯,±È#o|ã9«0á0wp@=ÿ!CÚÃ*^ßy'<÷¨VM»xÊò)­€l¤“‘’¾´Õ=21‚éL—ÜfÆmß6TM çæî¾•V¾¢+¬q–Ú[çíÁ¡” †<ŒûÓ'±Êž£)01žzÐ3íJHçûÐÖ#·'®hÙ°ñÔШ8Ri$ˆ.vÒ¶9ÁÆ;Ô‡2ÜãŒS1ŽÃµ.:ŒwÏz|h¡Èè)ø•}èg@ó¨‰ã$Бº $7Íž„R–$nÎúÐ+¶F_úÓòŒwŽyôé@G8<}*mÀ!NÞ”€Ã°È<Ò•(É#`àûДm†çØÒrNHÍ'*N8Ç~Ôôܬ€>©€ƒs;Hê™ cø oÌ0WÇ┕Ú?ýT`“$)}:Ô˜#ÈÉæˆXd…''§½‰ÝœàPXPpr94œ‚: t?;·vžÃÁŒŒé@¯v ¸ Æy÷§á¸Ø8½)= 0IçR‰Y ÜN;sÒž…'bÂÞB““Ó#½ZŽí#Ï÷¨hÒ5;–ã¸R¹R1œƒÚœÓùƒÏ#i)è7ÍgnXôÇjáƒôÎ4nO?[ˆ.eL˰ÿ)>П›¿jvaí:fQŒ@îzÑ-ÐU ¸sŽ}i$'5b¿ÚÓ8ÇÍŒ Õo¶†sÿ¬j­s>{€¹ó9#"­F ØÆ3Йü赉ælAÌì¬Ü)䎔ª¸Êʃù~5$½ÇÜl e£ìOþâÇ—Î1ùж£q†+òãy;y@.Sæ#‚(ŽVŒo„ó‚í@ÊÇ%±yÇçAM_AHáYXž}¾”òÇs0cÇ¿z4@ªän=0~¢¢Ý¹rüöÈ4ŠK¸cÛž9È¢I„@6Üã·4[QlÈþÔq·éÅ9Žý£ËÆ3ëÿצÁ±ÅYw tïNHä 0'$ñÞ%Ü|’9ì@×­1K|êéÓŒV"”\€˜ïÏáM®H@ÆI<ÓÙ݆#RXrƤ¡Ú7|Än q@XEpW|„–Æ8ÁAUËüÍ€éŸá <‹Z¿Ížüœb£m,¨r:žq@ 1„ߎü`cÄÍ€©ózœŠ£l7aØÔÁ…ÇqÖ›zf0Ã'½Q¸cnCÁý)ÃâH™6³|äóÍN‰äM ©àÍ!ÈànÉÌ`ãV#upJ°Ààdõ¡ìŠƒc{9Àì)²Jp¡˜ŒtÁâ—˜ÅF‹ìÌ¥`{z{T;ò23þÄ5Ã8EUÂç=hŠ%‰Ìa°O9=©6ÀŒSÕNsÅhÚžxŽ 9_QŠR*ÚØ¹ªØˆ&òxûÖ3Ç属ã'­Bwµ$ˆ eQ¹ŽsÇ^ÕH(Ã(àžÙ«B}‚%nP6{c¾*Á1lƒÛ(Ð œ3’GLp F¼.× ÏB$UF ë‚xªO'˜Ì£¦}z hLULç¨ÏùúÓ˽Øþ”%D+¿3c9ëL2¹rs‘Ðã4-z…Û±ïúÕÑtê‚&QžÇš©JgÞÄãjHö@¾EU´'[è+³,j§9Çÿª£cò‚äšhƉäÙíÅK´Ir{zS¶¤ÜX¨Âÿ*k†NväÓ9ŽÿáM²ÃQ@XwÆy÷¤Oc@A»éŒõ§±åIéšC•S€1õ¨Éb¤qô  ÁéK¸†'¨÷ œþf˜8ÁÍ=K|ÍÓE9ŸÌ ãúP`aꀑSÆ?0çùÐà <ôÇçL-÷A 0ÄãŠr!f†zÐàŒ:ñN Ç+Ó#Ö§Ô(àvÇÖŒ&î€~tÛfìlÓŽÜçu 1™IÈ®1O àƒé€|àG>Ã¥FU¾÷j c”—Ê‘ŸN{ÒSæaB"hÉ%ç×Ö§Py ¹'ž½h‚cõíéJ@ÎÜŒg„=Pãƒòç4Öäò{P»™8õ ‚ƒƒ’ioqãhúÒ< ÐñÚ‚Ó‘‘ÉÅ8cnqì)4—!WJ‘P‚£§9ç;uJïlsLRe ,‡ÏµE?!¦GÈÉïœûSC8bŽ3ÁëBIl+±!p ž(8ëžAÇ·µ À»’C6àSW,¤ÓæÎ(1s”á¸惌†# ôë@‡ ä0Á¨ªT. žž‡˜üÆÊ£æ=j<”ÞŽ¤çŒš&ÿh€@UÂŒÝGøP9 Ž6([\ô¥a"…,›PŒzÐ!˺?›<΀Cghçß©¤>£‘vH=Å:»jãæ$šûœ“Ãcþ½i0?)çž{ÓAÔ°±*Ä›HœœŽÕVHØ•PFÞƒ>ŸZí ¦$jž¼ŠDB…@ž­ï@­¨3w^yäžÔ¿?š6ÉÏ}¦]Šc-¸ =qý}éJ>Æ;A 1šPf`ãpã°=9©Cya–BIǯå@¤»XœðzgŒS|ÍŽAHë͸lP˜‚3¹?…d‹!$Î_z±Œ{÷ 9*Ø ƒÖ§ÛE˜Éoi[BŒ—Â;'iê1Ö®ÛÊ€ª²îö¨kB\I¿;^ùÅSÉ8aËúŠÖîF¬ÛÎ:ç##­i¤Á‚ ±ÏzlCÙÖ=ã&nqÒ¤³±Õ¼Ü ýÓøP4X»¶t-…Êg¦GD–hÊ•äœzKQ= q ŠÊØ8๪áJð<ý 0â2A;g,k½Y·팟qF€;!™BvŽ2q“R$ùªœãÛŠC¾¥»›Öº¶Hæ'9î3TU·0~LõéÚ¦Öe|˜¤Ã”7SS”`¤ŒØõª$B¡› ·Žù­Û{q}i$c‡Q÷±œöõ¤Ê‰ƒ tvV,J=qH¡Ø¸d¹Æ9ª$­34q[>ÙÁ5G0Úr Å5ªd™Áò9Çzcv{c9Í Ln3»ñõ£åÚ7 qO­€üò¾¸çð©î#?#d瘠}K•(1†î}iÀ²œ©àò ¥9a¸’Ç×ÓÚš£?)\瓎Ô!7q»ãÓšB[œ•KÔDbl ²äžœÒXîÁÿ8¦<Fx q»ž:Ðû×Ú bØèphPŒ’y'®:TLT1Sœ~´àÅTÆ“ðÙù~”exôŸ…!ÁÎ8éœÐg¶:ñO ý7#v3¥ ×§\Š™°`à uõ§„Î9í@]A ä¹4ý¡Ôt ²ãiC)ŽÇ§¥I·å#úÒnc‚OÐc¥.€)8Ç#ê;T÷)ÁöÆ(U¿cŠBÞœäÓòÀÁfϺS³éÔ:]Ì$þ]*E+»æbWéüéy•q¹’#=3ÐÒ«o8Î=sÞCN¢ ¨eí@Uä±#¾F)’ P$‚js²ä“Ðv ,švü‚A8î)ZãNÂ.ߘõN”å+»Û¥l”Älààt=ÍBT¶0ØÝ(E¨ÒS–Ï0[ BH%9^0=:Ð6î!'rÃŽ Z]èAf9=c¥¨èc œÇN”ƒwGoQÇk–"WÎTàc'¥)x, g#ÿ¯JÚÜd{_*Á8'»b­yp6b.[ñI±$Kt-Ä)[F8Áëøþµnê ÊŽôâ1Í÷Ü)È>ØÇ4Éjà.IäŸJd¶FŒ±í2s'ÓNr$c·?6Gj ÝÅB¶0^}é¬ñ¶áÉç9'­áØp3éQ2a˜«œc¥CéaVKÉžÉìjI"ù‚‚6’sÒ · HÅÐÆ'5iå¶ /çiäš<€ÏfV òUˆ"f^ÄŽOP(Y Œàdd_ñ§&õÆÒqŒ‘ÒùPŸ1Ó ‘õÇ­T‘HPcbë´P®ÆÐØ­f™›i;ˆÉ½=`FQ–#°'ÄU¸UˆƒÔ{UU}ÉÀù³Ô~´zÞâ]ñ£ Ê5zæèDCÎÕ§ Òh ¯¨Nù:Œg54 @AuïE´Ð}Km2F¤D¸…ÆJç'óô¨óo(ÈÈÛÓ'$ÒwÇÈ hî™Æ8éYò0Rvõäv¦Û ÈH ?Ìy9éùÖ»ÃD³IÉè?JOpH„ª † àäúÔmÀ“€òÿ Ð6+#J6¶GÝÏÔ%v©ÏoóŠFÒ†dcÀºû\Û@»—g•àœb”ŸcHÛ©ÊjR)¼v‰øä Ró™UPórF9«èCßA$1ÌÝ6ú_j­†å<j ·QY™Be0ß­+/Ë»“Ó4ćDáÚ8 ÿG´¶X¨…-‡¾„ðüÒmê8À?žMKr¬Ï¸®íý(ê2ªƒóÇŽ´ï™víÁP>SžŸ•±ÈªC±…î8çÖ£Á ½HÅÜûª¿6;÷¦–ÎpyÝØU-@ªH%¾o­w‘ŒÕÓ»ƒß§‹Ð¿ÐˆÛ–=Á§o?684…Ý•F:…3+¸ç4‡;FGI—ïÓ¥* l;T»H*Æ? nO Žâ¦ ‘ƒ×ÓÖ€!l–Ú õ¦‚}zý(áNwÅN ão^´’Îyü=)êàéÓހĒ8ëš07qœcÖ€% BŒ=ZCyw  Àx^Ù˜‘òâ*J‚9bsHFÜÞøÇJ`)à`:ý(;G9ç¾( ¹Ç~ !,Ùëïš,;Š3Æ8ã¥4H±Ó·LP!ø$àŽ}½¨9P~\þt?1QÐsOP,3œ1Ò“  [sàqß4ãܳ×)\¤»ìséÅH-÷~Qü©60,I œ1ëR¤2²åPž´†2¿?Lð3Ê‘˜e0r:ÓõZ ¡GÏOZB™‘cl/|â—¨ˆ …;ŽpxíU| _;³MÂ<{sƒ–öçŠMœcw~ݪÀA¸`r1ŒÓXÏo_Zq\u§7elçÞ€ãžàÓƒc ŒZ{è!ãsO¯¥9A±_”u=Í'¢¾Ài=9⯠ˆEé Æ3ßÞ ²&ÜÌOH×Ðõ5"FÁ·‚1ÛƒŠZA»ædÉõõúSeŒÆÎ?!AVÐzK½>X[#ž?:–XÙG#Ûµ. ˆÂž6õÏÒ‰Ž[pü¨Òàõ*-ÌÃj¾JŽ1ž*È•‰,£åoçOÌWcšBIÚ9^£Öªn.뱇Z»“‚p«»ŸRzS˜ïÃÉ'n£šA},@°>åFsÏjy]™">‡­0°ù<•É Áby5RFܾޔ.à? ¡Ã Æ;Š’4ÞCž}}hW%˜y?$‘’1Ò¤PdS•O^J7Z¸ µÔc¨Áª’ÈÎø,3íÜÐÝ ØùG?6sלU¸œIùOlÐ"Ùƒwßl8û ò)áÄgÕ€ÁÇ­NúT,—#ËÛ»‚xëUÇÊÃ$˜ÆIéM+w$w”“'®ÏQø:”rѰŠE9Ù$VA´úc·øUd·`¥ÈéëEÀ±~Z‡SŸcÁç4ÖV}än¤úPP‡#¾xíŽÒ*¨ÈÏ`kÊ„¢²°À\GåU“î Ó§Ö–à>RÊUÐ`c}j¼’@€~ék a&~Qß·ÓÚµDžhøtɤÀ¥wJWäe#èMW Éü9n£úP€–B©¸)Æ~oǸª€ÈŒh[M• *Á~nA :ÕíGQFPb|±àj-©kcš¸%%‡LqQ;›Œ‘Ï5¡LÛ¸aîqÚ•ùª@ÀÍlµzèÌÅ™KNÙªÇ`c4+ØMê1—å-»*O¦*UA†À ãcïS Á@ÂaÇ\Q‚ËÃr:ãÒ‘CLçÔàJ»v‘ïÈÏZ v,‹µ@8`;T‰Ûótª]É$nQr: ÷OljàSE,Waç)ìvc+×¥0# ‘œñœ)p@Àû´Ò<‘íšpǨ‡ÀëÚ”Ýæí@ ‚ äô§FIùxç¹4h U8Ç©ÉR8Éǽ#g õäÔ',@ “ü©ª7±ôüªbˆ¸<äæŽ <(@8ìjÉRO½0"O8Æ1Ž:Ô…1œ ˆ)i8?Jµ´c9ã ïšhÆ$àÔ¤ƒ‘Ÿå@³î# ŽÃ§$mcóP°*^ý â•K_?¥/PX†f=¹ô±äqŠ`*üù 03šr®IcÓß­ Áã4À˜û£å9Í0%m€Ìr8Å5•v‚:g·­!Ø“hE ·QéÞžb`@LÇoZM•n„{vuÉÜTŠ¥ÙU˜'©éCÚábß•HÏOSU>Mû\ñŸÀœTŒ·åÄÁ°û@çëVaœíXÍ ãð kF#KåÞÏt¤y ‡ÀÂôúP6ÐÂÑ*=MWò·È‡<{Œæ?!Âv0õíùSÊäÄ£ÈD#î 8\ž*»sò©ê;Lq€ <§ãA'ç·aa¥Cñü¨`~ààã·¥j‡dª¯<Žø¤‹dã¯Qq(vî'ŠLò=óœR¸õFp属“ænNzu¥æ2Ô ¤GïàõÈ© »ùyŒéRQ2Í’§$ äSÁ ÌIõÉÉ wl”DTlVù³“ß4»•PÀ¶yãH¤¬46Ì•Éô ÓWËù”¹ÞO‡½É½ÈŒ`±Ú§µ&c±ät84úh"£ÌT…ýî¾µ2Jϸ0ç¡Çj›×Xdc±÷«Ö¶ë‚Ò‚{ þ¦¥”–£.оÑl1ò’F;úU!m( Ì­œ`éM5Ôm]•eB0ÎÒ¡ œ¨Sƒ†ÝéL‚ÉIÎ}ýêÝ£yO·óÐõ¤Æ·4f)r¸+À#š¦bx•„ízzRL¢»ª”bã$ž>Õ”wª¨#‚qTHî1žp$ŠVÁPÊ¿/^´±®Á7H#—%¶qéšØ<ðyþ4žaÜÑ+Šx´˜QCÆLªIíéL@''å'ƆfÒBòI9ŽEJ¬Ž7;aÇŸ¶ÀÀFáçVedP®Ÿx ã=>£[™îL²å†2sÇ…ZI¸Î@^Ôɸ‰0+! IëZ+$jØL2ž(z 5â#ý£Îj‹Ê<“Œdô¤˜í ÑµD88Ï >õnÞ&`YÏBOL}i0[2& ;äQH›Äc#§)¯0{Œ¸˜n‰OðñÇAïUÇ%Š7Ÿ­4NãF1ßiÂDÜ<ÆùÅó1'!r\ŽžõZ2 6O'€=iØn3¹zzR—yS•ÏsÍÃà1ôÍ:,…Ë‚W=ÿ*dõ'WJG@8ÿZÑÌ*y`¹-ž‡µ.åähÅFT  c9ÏÔS¸Ä;C+”\½0íÀÀõÍ€‚-œÿ\ÒHØ\õ?J‚AÑ-Ž9éCFdp@ïÞ !ù ©Þ8àÕ„9@ÉÏZwܬJrG>ôÅS·òûž” rqéëI•,pÐÓ€}ûR‡ÆzÐÏ99èsÍ9™º“ǰ¥q‘€­ŽiF;õéŸJZ‚ÜÀÎ}¾•Xž½)\« óGózzP tëéL”™<1yŒØ\ƒÜÒI ‹˜È''šW)"X£rʹôþµ?(øUÊÿ³Ò‘^dR†»dÏ€b£ ÈvïsùÐ"`ÜvóžFsVÛ0ù…×y=?»@Ò¸ø ùŒ†ÜÒGhÁ©ËgA¸ tíN[2ìÝãƒíNâÖ…Q õvªÿcu‘ÃäÀ÷¡0³$%b ¹ñÏøQrm¨ÉLÆO&€¯òàçš}ÚŽØÃ*Çp:ÒØ9ŽGZW ‚¤gu÷©cuv È?AšOq—DfFn1Çâ¢d €NyäõÀ <ÉáÇÎ8‘ÍL©‚ò’yì K);î@ÞSüªJñ’zS vÎiôuYJ˜øö<J/Ì:(çÞ—Pb-¯œ ¬d¨9àýj©M¥°„w_QŸZ¨H$ ñîzP»UVi[§õ´/bÛ µ $ ¬IàýjXÓ±<–¶ßeqýóü9±!g’AÈèzÀÒ¡ÉQ’q´úzÕ³24o ÇCëCÊðͼ¬(Øq‘õük>U;¹<ƒ‚)¡îb Îhf`TüÂ3ǹªD’ âäcöÅ;p-áì1Eº  ªAaÉžµfØ“œcïwàÔ±–„ÆWŽž¸8ëøw¨¦¶##Žžþô}ÑAý¢pjvžD¶“…éÛ4WóJda‡AÓó¤aIîiUƒ6I=yÇLŠ“"0£i>§Ò€ƒž@àžÿJ…Ì0  1"‘¸Œ1\T „F$Ö•Ãr´n·>ÜUåµ3 a[oþT1X¦ðù[|Á“ךk¹?/GµPH±ä3Õ©Lì˹†ýh°2'fmŒØ#§ãC¹áÏáE¶Ä<á˜çúJWeP¹ÆÌ~TKŒÈ*3ô4ÖpùïBW$å÷(àóšp%I#¿éTg>¹©duê{ÿ…0Ѹ$"’?•0 ?ýT&܂ḦóÓ4Œ'P¯=ªo(’8ÏšW`(ãzÓ¿½W囑€{æ˜ ƒ9+÷{zU’Ã/Ìi³˜ýáϩųŒäúRN̓ÍFê$ê0 ¾àG°dœñš‘K}ìä{Ó”tùϧZCŽÔ ä€z÷§¡\’ÃZNqœõíéG݃³¥ ’Fï»×­FAV%OÖ•Çf<¡!~o¥8®ÐKƒŠWŸ'=x§ªîܧ€yüi1¤JÊQô<óš`Ww8À"‘Orhã20ÆvŽN{Õ‘•Ó6çé@%r9Q•JŽF1U„r;s“Ž2Nhr(€EÞvŒ~f®+í ‘žphÂK:ìá>LòRÆõÉ\==hÉ »1?68ÇQNgUÝ´`õ9õ¥~‚–f 1žO:Uü½¹Qç™È'Ë[â¸`W÷¸n ·­Y0bãvî$œ–©ôô(Ü<’¡}ÙþáTÕKåGëM{’œ p¼Q;DãMz–ì­òþrŸ”`õéW.ܳ?RWÐpi=ÑV´Li7÷HÁÛŸð¦*«6ÆbcƒLŽ¥˜Ýmß2O\ç?¥>YŒ¤³F¯Z:”U“p#…„w¨bHø.:ž£“­­Æ\¨P8¸ç9©aP2Ç׎”Üs(o¶yúÔ;vœ„ã¦OoÊ€°‘ÄI%ð;$R ¶Å(yJàgŒSö<‡ËU$ôÇ^)\ b„²¸ 3Ï?/½H±± ¡ANßJ[–¶-E§ÄcIH=3LM4¼ª2¹Æ0rÔ\vêhÅg2þìLjùÉ=?§=¬¥L1áx<ÒOQ¸;\³¥ˆ÷²Îøc“Æ=>•®–°ÈލÙcÎ8ùO4Iõ.)=Ê:<®™P SÓ¾~µˆÐ¡rŽ¿»SÛüóR¥}œlõ"k4ùˆÃ9î{}*žÄ2g#gëZ'r%â ‚EÈ<QZW–ÂØ®N$ÀÁÇ“ÝB(̈ŠÌ3œ‘ÿê¨ Ï4¸Ç<ö¡w Œ’…<ÀrA8Èÿ=*Xçvj6=‡Z{ê2»¹ŽC Áå'ºTqº¾{ðp?ÏJd·qûË!•Hè}Q– )Æ8¢â°û{wÙ^@õÅkZD—`dçnrOJpêUu1+BçåÎ@çó ìUË6`dR¹A›iùsÏ^jÖY£-œg41б#9Á§Œ±&\äô4Ä9Tr8Ôÿ!òS¯N”˜ì9¥‘C*ùKÈëÚ†Á¬cœg¨#šœ¢Æ©ä¯\æŒóJ‚º žjÅœë†gl`ñúÒµÁJ„sÓ'µRy2̬y­0;~R>~Á=*ÜäEç…Á4Oõqÿ×§€¨P=F{QóËDêM28œ6Q@˜·Ý>œdt¤˜IH§Œý~µ>@gÁ 3Æp»:äŽÕ£$™Ú©‚;zl ž_›“´õËOj¨P!bWŽÔü€i*Ä éÁéJNõ X€;S!ù À†ÉAңܶ®=¨Z‚ù†wgHÃvâ8=qéM\ƒ‘ƒéíO@~1MùrŸö±Øv¦Œõ?z…~ T$xsבR‡$Fp8¦ò8'>ý¨p¬Ç+Íù2Ï~•$ˆ1ÂÒ¡$€q¦jh܆+É^hP7tÈÐS “ùÑÔ(ÆÁÚšb€'Ï^Û€¬ƒåöïMÁ*I'#€M€à$œe{sOÀàç±¢ÀH»@äõ<ûT/<ü¾´+âÇ·ÝÝ(óK.1Ûµ0 ½@ê*M¸<®}A*[BwtÈëS¬xåO^Ýi7ؤ‘2B €GAÅ6x ;~^¹†–ƒ%†9è=‡Ö„Wb 8Úzæ€.F¥»ŽI=A4Ù#•À>_˃Ÿ¥+€, UI@8É9Í=íÆWÊ\ÜœQpòä‰9î:Ö‚–" óéïCeD¬^7Ü ’1œñ×ð¥‚86î’]¯úÆ…æ\lˆà~&¢R »pläš`írhafiýÁ×¢hÄd È÷ -q ´{НÊ@÷¢wºåÏå@‰"‹s XðGþU²íud9Á´BF(Ëßy?ˆô¢6uÚ¢Fއ·zv$ͺaëÎ2*KxÇÌ¡NÁ÷˜ž”2º•爬ŽU† <Ša‰•„›An¸­›jKæ0`VÁê;i<Ù²¿½%xü(òÞÙN ÄñB+— )ëŸA@=ÄMã<œñ´úRôv%ÁçäÐÅrM¨>U|Ÿn‡Öž¦<4„Ž˜ÇCøP4V;dÈUøÛž*š¬¨à·*AÒQ ˜±#Ž g­kˆãHÊì„Æ);¢£æb.Ï%”!ós÷»Â¦‰Æï½€Hõ¦Å«-ÚJ±–Xþ@1´wÍNÓî'l`vÆ:Ô»IåD"&Pwr@ÀéëN`h óI¶lýÑÂ%qŽìFÔcêsßÖ®6£ÛùI¾)‡—œû ‹³w0ˆ 6H$q÷O­!’EŠHî‰fÏÊ?úÕ7ÖÅê·36,‚g\œpx Cf;qÏ×½JUÉ}(=û_f;fŸŸ»òûšç%ºŸºC|¹ÏÐÒK°íÜ ¾NOÕ]ÊS’iÙ¤1W;‚±ëÇJ¢®9ȴṲ̌@¯Rqþ}ª„ô…¾ö ¹ÆJõ­x,a*ȯ•lüÄq‘Rî ˶6Ì}N:“Þ²åžGuF$qÀô¦¶˜ØÖyÌžPÆ=O«ë " 0“Ød’zPØ%}Ë,L;1Ó×5Iai¥òâ@qßÅ%¸>ÃÝEÐ{’3Æ©î"_š^GCÒªéô—/eðpsšl­#«eˆÓüóK¨]ê‡ b@Š"98ù³×¹©D± æ"éϧҘ^Ã`‚dX€—’>¹«+r¨9îG¤Á.¤Ê`ÁóR:WííLÑ`æÜõãô¦ºÜ,dÈ¡XHaG­Y8‡íRåðî)·Ü”®TÆfÀ<…ëÒšP}Þ„rvö=©y‡A£•PÜÆ^ô;‡ˆ8QÐqº Žžb¡m£®jËy„“?Ý<‡C ›Â¢‚¤Ž éV%áH^$ÆNj]F‰í.­àŒ¢ùŽ9<ãð5F ¦ûJÏÈSÀ#ƒéK]ʾ–.8šî_=ð˜g§áVÒÝöã‹Éã†ô¤ÚH¸¦õóã*ÈÇ~ø¢Ù&óD`€AÎ9áIì ks¸Ó%ŠVo“,9Tz½ª–tÀùyþcñ®{µ#¥¤àaéR¤®mÚü£ä÷"®Iimc+‡݆B‘÷O§ëZ]ÞÆZ2ºéÚMÈÌœrvž•v.¬®ž)H1ü@ÕE·+H‰ÅF7D+ûÐ@}ØêjÍ™7–G#=y+MŒžÚ³oÜø@Î+®ðÍÆöšØnoáÿÖ¥?Š*k†½ÛhàûRÉnÒ(i ŒäuýiGdS½Ú"7d)GÍ£>•ŠnÿyûÎH<h†ËPÜ£L§pù‡$º:qSG†‘ÃGëúRhw¹{ËU µ÷#1Ç"²î‘ ˜À;sõ¡µŠ“Á±[jå»ú⥠žZ(`dþ5DŠÜdPO¡íŠd–Ò9qµ²G½)ȪnŸø°8¢ÙÞ7ÞŸÝ'Sè"ÌD;À©i ¬d9Ïj+8cÀçœçÖžü»POëL&pà僊»g2vßÖ“B«—ÚwGžõ(ÇÛò¤'‘Nà@Q‘ÇQUÈœŸ¦i¦DÇçÚîÝÿJ» ”n Áϵ ¸hTà <ž€õ§æLs¾¨ ‡O:Êc#ß!i7§$ rOÇ¥û•÷œˆòp}ûTm÷OôÄ!Âð[§½FzäŽoZ=EèK¹Up@÷â“ïp_v1ŽÔ¸c ßJ•ä¡[¡ïå@ k£CŒõõ§¹SŽ™4Ôa‘ ƒÎj!”öõÿëSÐfœŒäóOܧê= >„‰…V'o#žh`X±<·aG˜#Ï<Ò‚–;SîÀ¬’»W ?Tƒ8ë“úÓYN1è}¥)@Ù ?JO@ålägëS¦ Ãþtžªà!\±Ž1ÇSY{çÐS@28y;z{Ð1»§©\Bû{tô§ïv²)Xp,åŽsM| mÓê×´Ž0;Ò2®TËu9íKb­ØÎí«’¥(àsœ{PجY@®Ä¾^3ŸJ¾-•ðQ´ôÀÁ* aÿf„2†9biÒÁcV’Lž¸]±¤º™²»¶Œ'©ÿ=jØ/ŸL™ïLW±M#XòÌzS¦eŠ6B0ýóBô±œä†_œöϵY†!)ƒÁÉ8àÐ-ËID­òÄñÏOj“Ë\†aÁë‘@`¤ /ÍÔc­ @Ë!R ê<šLe”–P'AÐ0ç‚b“/Ê dº(V*ö$–â9p¤ò _ðªï µÚ:Zo©$S¦ðÓBõ¨/í!*£ŽCCZÜié©Pò± ˆ³Ó©5´N˲6.z’1Š5°¬[k˜‚ ‘ƒ·¨žÕbÝ’E`ëóãŒ{T—\–ê(–(l²ŽxéU!{QŒ.]$ä€8 sI;”§y¼¿0œóš£ÄOÌ #žJ³2U<Þ¼T%‚á‰ç¦G¥1‘‡UpJ>ªèµ{¢¦ý×Aßž„½K nˆ@Ÿt÷ÑŬZG '||6qøÒzZH½xœ‰‰¡y8Ï“¸ãTMÊçlyÏÖ¶MnbôÑ™’[³8 ¤7ÝÏ¥_Ò.—O¹i˜±Lràšm]XKÝwb^ÝÃ{tncŒ îqÞ¦Úâ#)o™F8ÈÍ$­d;¦ÝŒÙ%ù[gëY’C2ýîµD=À`¯ LU´˜6ÁÆáÓþ´4¼×®¿*ãÎjy$>o#¥k »ˆŒ• |ÃÐúUw·ê@8ÎJ÷ÅC7HˆÊNtëS¤É¹AnÈüæÇaFqß·µJƒ~á´ûóCØi ¨›²ÇqÅ(‡ä ü]©¹BƧ9·lš´ÖêŠNyã;¹¤4ˆÊ*±L ‘ÅG¹£}±1#h ‰$žGdÛ÷‡QëR(fÆ9Ç¥,¢bòbCÀ\}ÑPÉ F¬ÊFp)m¸Ýˆ‘KnÃÖ§uÞ¸dɧõ¦!Ïm–¤¦ŽL¶NãЊô°çv.9$~¹§Fdeä@9¦!É1j¼Y®:æ¬(G þNÎý)Èd|ï.Ä6tšIvì9AÆ=èµÐ^ ëŒõÁþ´ä’1",ÈYG¡ëš4¦åé ´x`‚>oaQʸehÈØG$ûÔú”íÐu¤¬›œÝç°3W£ºŒ`HO÷ºu§`‹îTº`åe@w´rF>µf)ȉPüŒg8îi48Û™—âžÜ¼‘ÎÄCÛ#¯ùþ•™yq¼Ž°Ì¥Ÿ®ÀöÅ%¹¤íb„“d˜w9¦2oUˆÏáWêd$q`owù†-<#”AÆ9ÈàPxBAa\¼.8†r=({º•Òc 79êx«2IÃ’ÏäÔÛA¢‰ÜU]‡c×Ö›ûÉ ‚[8ãµ>‚ô4#ó±eˆä‘ŒÓ. Èµ9ȧ¿4¯Ðm]`ŠRcF»çæï튵¿šmÈç¾4Bð±ù) Æxš)6BI–âÕ‹€¡HG·ZŠ<‚Ác È$qM ÅÌR–†FÛüC=@­­?Tƹr!?ÃÓ¯ùÍ&ã7jÚÂJ†Þݳ0=ëžà"¼|zþµ D)Êì ³ewÈÆ:×Em{Šð”àžù¥%ur©Ë[2ÙŸlœ61Çn½éìàªË¸gƒ‚zŠÍ«ßP˜Æ©"ÆpÄu5 ¤æ87«î`6û‹\Mö(IfÄ?9brFvƒŒSâ))‘el9Œ¯õVÐÉ»‘ÉnÀy>`ù¹½Wô}i¬·ÂèÜ’ óÁún<É ‹´®R3¬­(1n$Ðóšž?"v0üÄ rG£Þ„¬„ÝÝÈ.&CÂy`I85±4iOÊ~èîi‰ÙØÊ¿ eŽ.= íNûA[r€ñÐãüþµ[Ø™Ÿ.ÞB’}rj5\+÷qМ★IÆÀy t«D!Œì^;ç9 ‰ Êœ¯oZ¸»cIŽPu÷¤À‰O^çßó©·cq^p¿_jqˆM‚¸ÎG–à)Ð(L ”)BNr¤qëVá•‘Œj¸'¯Nhí*†b£€È>µK¬Ädg±¡+9“*‘(Éœô¨>b°'9ãŠ<€“;°6qéHY°Œ>é<ÐÕ73–ÈwíL|Ççê;Óh ò]n`ù~Ÿzª3Œ€¤Z°å™»n<àÓÕö¦L÷階@C(‡?• ø8“´`Hà:W,0K`ç¦y4«¹“pàôÿz2’ƒ)É”Õ%€ÙçÚ…aßTD ’(玭M"(@CÎ7çò¤ÅmÈDd„ç®xÇZ·hWxYˆÉÎ(]-I¼¤q±—?xžÕh@ÖŽªpFs‘Ú†‹Q¾¢I)% ²žNHéè*)RI®]ª: žHŸ‘e uF’MÇ;}©±Ïd³JÝÈ߀½iØz_SzÎ{_,/“ƒœô>ÿYÖ^lÒÙOÉ‚OjËU3k®Vy²e°C`:™ÕÆ~o”pÕµÎTË0ÀC‚bfdZ[ØÙ! ÆÝ³Eõ)ìE ¼ #rJžsÓð¤;LÑå>·µ‹–“ÛÃ(YUJ°ÂäçŠÐ’æ) áAzda:t©–å]XÍ‚IeŒ°‹8ϯ֧gh×/"†ÏÖ‹3Ü…¯<¼†@ô=1DZ£™¼ÄˆÏÜRåÒâæcÃ2Æ@aß= ¯5¹߰†éx4YÊ÷ɱdgbê6Žø¨„ä’Û½9ªH›ërå¤å‹˜(äÙ­¨â{*@ &ÜúãÜÔÊ×-jV…HJÌAoEÎE2CÌþN ‘œ~€Ç¿>h-¸œîõÍ2 ¾LŠ^õkc2œ™ÜÄ‘øR.Ò¿j`M±N8ïÒ’P\FTçÔ)ÅF‰`qøþ;€ñ¶WæÎ1é@—Ë@ääv©mâ?:*ýåë×#üŠ•ÄHOE8\÷þuNkwóù›?…%¸2AÇÆßxžIíõ§™6K|縅)¹-Œ“×ëM µvr[qã ªŒ†Ý×¥O(sƒž:ÐI9’_›…=qÇjˆ_º1ÀÎ #Æ×ÎìœñÅHCy`ÿ°éLL>ð$rZz#¹-3“Ç­ d[–ÔÛ—YIÜ9çÞ©^ÜpAçò¤˜ö¼3,|æ“Ë8<ŸóüéˆL¢³p}zSüÉv/“œþT ‘î‘sƒ×¡õ« n»çbßJY¶D‹$¸î;~g,Å0»ñRÇйl¸ÇøÒ«Á±=³ší¥ÈǚųӾ}i7Ü z‘šzÛPûeOÊ9äõ¢O(~îHqŒÀõúšêcð× Ã§·lT»QrÍ’:Š£6µsʪ“Œf˜àÁ» ⚻Ѵ’HÇ\÷¤6=3ëNâpÇ irÇj±8ÇNô|€PÛÃzTe@Ú\wàP• pí’Î:Ó|²Ûyçß½0 O•OÍJò ‘É8'Ò¥Øh‘ržOçŇ-žƒô¤=ã*ãJNÜ ‡?×ë@ÑnKide1z⦠!ŽÏ=KRò*ÝJÌí#¸Ü1œÒGäHNqÎ}(ia•Âü äóV6FΘŒ™çƒJã[™‘S`8ç+Òœ`óˆg8QÊóŽ?Ï4’{ƒÞÄ’Ã "bdQƒÓJAµÙ·mÎ;õÖ»ŽD{Ã+7Ï•ç>”Žâ#£#œ¯ó¦IU$“*È>‡üâ­2–Ú¤çzPyŒ©íøÔ±FÜíbTEHÔ{GI)äíŽÕJÝ1vS÷ºzÔÞè«ks¦û}ª&E¨Vãøy$zþuwuöƒ€˜$ãÁÇ)奒+ÀÌò„‘”w^µ$òÁ¤rÎ29ÍhÕÉ&Kˆøvg±õ÷¤{ˆ ³no3°úREÆZóüô‹íþäz‰Ý‚ª…ØGzÿ¢nú•±Vb‡xïž)¦y0ŠéžôìHó6åAå`ö œŠÐ så‰äOÝŒíRÆ®ÙvÞw]ž]·ÍßqïYó=ÃÊZH6–a€8Îy¡yš]µ¡(äc‚Óuç·4˜Ú¥³óu=ýTÑ™%£””žAÇ^‚¯Eޱ.æo8ÿáCod5ËÔAw¦ªªKhì€÷úþuÎÍ,ÌÏ ec'})"dÕ•‹qYLwNÁ”(ãrãu=oÑ Ã1ŸóÅ=ÃmXøÑnA=±ÓüjIP²Ç?Œ{Ñ~ƒ%’+uXÊ8ÞF2Óíôë™÷r|²vƒÔûÒnÛ—ÞÉšÊ[£fB '®:É–tC°r1þMjZŠk—r±—9ÄóÒ…2FÁ‹œžõDkгö‰ÒBËÄrGQ[§Sµ6oŒdÈÚwWüúÔòܨÊ×LçbHœ8‰°áºÚ¬¬‘O&Å‹i°öïO¦¤;t6æ(-·y˜q•î}3\Üw^fŽH=ý}(KBäÒ±Ü*È[œr檚F °*fOrÀ}ä+`¿SÎ?Z¦Ñž qFàkYO"+#«Æìö¦\$o8 ÌDŒž¸?Ò¦åßA&µ†uBFÉÏZ£*1²±úúSBihHd¤xÏSÇoéLò÷ˆÒ1ûÌãÒbz½ r«"•$ÐJj!\2ƒÈª¥mˆ®ÊIàÒ´íH»cJD›zdòj·)_BPŘÃăåVà}EdÏo9’XCîoö{œÐ¼Æõ(mtàœ7|ö§n*Îr@#µdD¬·û¿ýz–8¿vIaòöõÿ=h¸|Ÿ9 ã¹ëMÊ1(GjtòýÅå'‘QÏ«“Ž ç¥-±‘Š V(Oÿ¯Q=ÉŠF(NìäœÑ¸a"H^Lô㊯+ X±ùäzTõ)™‰Sžzž19¢K¹&3Œš°[pVPsýiLHªüµ=r4€ªë±Ù[ƒœž ¦19 y=E=@– mòF¬2 Æ_Ô,â†$u—÷½×¸¥}Gk«™q–RÊØÇNzS·°*ôÀÿëóLCvííÉ=zqNGdùUpsŸ|м¥Ûçf'“’zÔYRÄpOÌÉ¡¿µï(‹é‚I¤–Š!Ö0[89Ç4Ü"¶BŒdqÁ J䯖瑎@©]Ô•lm`> Rê5Øw)p8êM(t(Tä€y¤ dŸ»'w¿zk«3… ´uúÕÚÃãNYp~sOÝ¿2:““ÓֈثlàrAÏ«ÈYÔºœ'@ 4T3s€};R¾ R§ëL—£#^TðqïHÞù@8Àõ4ÃQ6©R${Ò©°àç§\âõ$rX±äúšktfÚ(@FÀ¨|}?ϵXêŠÇ ¦$1…\øíW!·cÉNON?Æ“} H‹ËÌ ± ïR0ÊûzzRlVcB“·çüÍ8D[çÈ݃žqšW/Qž^öSù€ãhÀT+cç<Ýù¢à]Žîñah¨ŒŒŠg–ÎÀHqCúÓ+ȆâÞ»[ ÅF°ù;ƒäd{ŠD½ â™—;F{’zNGa—ßÎ:mëI¡ßM2¬Ìw›Ú¢óI-ǃŽô ½Ç"ìŽBÄî<¯é¶QÝÈÍ7P3´ž¢†Ájõ:!gdK@¨T¸Ï…s7V$#‚¤ž˜©‹îSEQe(‘ƒ]–—Vwã·SøÓo°B*OSe´­0*àcqÀçùûVUÕ¬6Ï"BLç ž?Ï RoSgÚämÑ ªop@ÏJɹŒöÛsÉÚ; ¢9Zܹw©¶(ƒH1ƒƒÇ®}ë.ÚÙ.wK$È¥OÌIè>”-·wd3ýž(’ÆùãÓ5WÉ“w!±€=j“З٠ö;—`è„í=3ÒipäÀPp2N(º±)>…Ø-f_1ËäÿÒ)•vÜ¥Xמô®_+[’4°Ø…xì_þµB ‡-•ìɪèÝ ,‰ò)·LŒ{ÕÙ"ù‘\‚ãø:äžÕ ¨¡lç¶IÖ"Î9çÖ®Éz–šHéÇ#ÿ­RÓosDôÔɺ¸S)!r1Áüù¨¡ò#iq¹¤ÀÆïçV¶3“ÖâǧIp\¡Ä‡“ÛëQ,^KH¡Žð0@çò¢ý.¥/•·ržG%”çüóU¼¦YLåŒqþ=è "Ü—‹Ä¾eÇîpX Çd’O0¶r\O¦„I¶]HndÙ äqÍfàÿ\VMæ“ʲÀè8#åü*atìi;M´â8îf@ 2‘ƒN*¡œs’Aó­÷9[³°×ºmÇiäpF)2¬FáÁÁÈéH—¨ô…£ÜFz»kt–¡·¸ÁÏÍÜžÔ˜öd7Z‹\¯–@8¾¿Ö±7ÌqÇLÓVµ„ÝÉ „¡RÍ&ã μɸ¬¸]äÇüгo3Æ Üxõ¤5ÜÑ‚êxÝÈ“†}*ÚM`ðKWK€N 9¥­J^eSq<ˆ±‘ò‘ŒƒžÔÇ–òäbpzŽ1M Lxµ;Lñò•8NjÔQ˜˜œºŒ‚ +ŽÖ(Ïlèì ïõNi†O)]È[ŽzS¾›’÷±·n BÈ…Ç$ƒ×ÐTâÌD,ª$$‘Ûßð¬Û±v#KY`G–Nx!qØóÍcªù†Fó¯ÌA5I‰«hEäüß1#ÓßÓúUܬ0~µD2H²Y9~‡äU©3#€#Ø¡ºt"€¶—+@wE^1’>?—–N¼ÓA-#67}OëLÁ`w1Ýìx©ñ°_‘ã×&¢š4[Ôòr§¡<Šc2ï¿‘«ˆûÑÚ\ÐRèRÌÍŒ‚ßùÅA´à`cž=éf=ÉÈdíŠß,7ŽçÐÐ+²Æzýi „;rqï@Èã9È9&ž7¦xÛÅ :Ú1/ó{äzS¢µ™¤Àp20:Ò¸ÉRÙSkÝÏQÛð©|°Kp´Òܺ®NOïHbAÎrÝêQ”~7uü)‚ÜŒ²ï9n ãšŠc·y…ïƒ@‚M‹»<0åOj™?w‚[“œý(hCØ«Døû ü§¦i±Àf 8ÈëHkP9ˆn#×¥gÊ —ËsÎ20e0e`Ê­ÛÒŸœ•À½_‘ w«Œá¹è 5¤%I`1×>‡µ!y\CŒïSφœÊB«LâŽÂ;«GJ×$¨ž¸¦·Q$‚8ëRÈÆáÎ8÷¢ý‡f,¹ 1ÎzÇÖ´ÒD_”°óx'¨â¡Ü¤ºsçÍ-Ž_¥"©!†ü:Öªú Eší?7+[d–Ƨ©\«&^0Ãé‘O;Ÿ&ynOOZj–B#ý) åÇBµK·‰ÉôÎ¥qÈ ä2Ž8P1Ê褻¯?L~t@>ѽ íŒÏè)1«à³³H÷1Þã†ÁÇÒ­y0àÃÃϽMÊI×±¢«aÇ×o$Ú±›L·‚5–3ðKÑÎ(Õ«l¥v6ööÖæUm8‹*OB=ëRw‰r¤ç8}½i¥mNJúÛÝ™BädñúÕˆ^è>è#¦¡“©iÚf`ĶIê[4ñå)‰ÛçÏÞúQk­ æiÁªG À“ŒsŒf‹­AæTÂÇsŽO­O+½Æçî™Æ|3Î9>¾µZI#»$A³ß `yž˜¬ñy2ypݘöÿÑÎɲG¾‘™G˘ãJ®.G@ “𤠳 ƒÈãr1õãëW.®adÜdñŽ»¹¬µ¹ºÑÒ^[º„`Aü9¬y I$ë°œœñV®Œ¤Ó,Àñ´‘[hÁ#$×ë]lšù.!ÓT/fTÏOÒ¦q¿SJm.†uójz„°°„áWÀ÷ªR­ÌK1àߨ'¥%m®)]êQ{„@b”±cÉ_CPÁ$Ì7m$t»ïZ%c.¦Ú-ãV2LÛ¶ð:gëU¢½Ÿl' 20zQd²µˆ€vºfšuó}úúªI26ȈÏL MØØe* g8n}ëîyÓ1ù­³=  kqI²Ù¹*sОƒëWf¶ŒÄ?z|ÁíþzÕ•Ì­ô;³ß½84ÁFX“HCØï,pzäu4Âäáˆ8ö4ÀqUP~÷¡§l ½äö¤-þèîÝ“Ž4Ó¹°xÈàSB`ûܪ¿\}*ÜQMÈFsŒÐÊE’Ù*~ltëÅC$|4„ŒCSÔ #›$ '8ç]˜o;ÈÎzŠ`Omq!2Fô«‚àÆžZÌzätöÔšE&Zk•XþtÃÿ ÇãT’_=Á˜’qògúQmô4¡ek`ÂuY?ˆɦË$|瑞jmq½64nIì!uvÝÐÇNµ‘5¼P)vnIãæ’ìÚå)I–eaþ¬HöÅ41Ê2Aê:qT@ÈÊ•±!ŒqëKpD‡s¿ÌxÖŸQôØÃÉ–ÝÇÿ«4ø¶±uqÓ‘žô1Ax AbNGëH±Sœãžô¿(V]Ÿ1þ*©¶W+ÈÏ#ØúSÉV]Ø9ÇoZB_ 1þj@Dœ:‘žŸZ·æ‡€$j¯¯ù懨ãÌ1œz”¶ÎBŒŒã§ùæÀ&xòHn0xãúÕ&a#ç?(ç§¢ÀG„°>SíÒš“’)“³²NÑž´›Øî댞((³ «« Ãå={qVÌkéã¹®!Ë)Àb “ÐãùÔ™ ƒŽ¼R¶¥-^¤gÁúç‘M2.9¶1ڟ̃‹|˜SêOª¹;ز‚:s@‰Ä 9è è=jt,@fÑÐÊ:…9É?çŠhÆÍ¹Á4yE@þï ç?áV”I·1€Nq×½67¼WnGPiÊßqö¤ÖƒóùÆüóþÍSgWVV véšHFqÞ$ät=ûT»†FÒ:æ´ó%Ü‹,X©<Í.ŽøÎHÅ?A\p21ÍJ¬WåÆ{þ€B1†ÏCŽÔߺy€§¹Õ®#@*C à‚FzÕfbîÌH v銓A% ´s×ïu¨­Ÿ0“éš”ÆÏA`sÇoΪ†bK61Ç  i? ŽØôÀÉ©ÒIIÿW€:Ñ`Qäˆ?ç­D"¹ÚÁqÈëš6w3Eå|»Sýj2›2I<`æ•õÅ›\xÖ”nB¯žaÖ˜jÒHÊ8à“Ïš¤‘Ûž¸&€îØsƒS,…KùŒyò)T6Cæ‰c´žÔŠœ$Äç(Õ®XÈÉ!³Ï•ѳ\y€|Üõ¥~ ÑGxÆÌƒ Ï^µ:—VBõçµ1ù—c‘Žpî#ëQMjÍó³‚Ä8ϯaîW[V ˜e Ÿ½Ö¥xO™Œ’ã ˆÚWÈÆ?LÔ‚ÚQÎp Æ8Í;»Ù@!°rÄ þÔղ찲ù¹Ç#š—©qÑ›Ú%ƒË¾I1u2’Ÿjjé–׳ˋ §'×¥G3»±Ò¢¹P]h2ÚÛ=Ù½Œ¡ÎAn[«™7dFê#Ëç¹è*¢ùµ±”ýÍ BÍ2±|‡¾:UD· '˜s€O#°Î:Uù4Y’XÀ‰bÃHâ™I"ÎZ01÷F:~T- Z3²yJUbþ"Gjt"ßc¸¶žFVÆGN9¤\e}1±»;ŒçŽßç¥U‚Í]ÕcBØ9!³€;ƒJRGDñBЄŽÀŒu#~´ÐÑÚB^9svàÿÖ¨NêÆ®ËRÔn_vÙ0=þµ$P³ŒÎ[~b~£¥7¶!¶Ê·Õ0È7ž‡æ¬ï¶ÉùxÁ<:óÖžèÉ»2¨’Y¤%Á'$L‚¢’§9žM2:Ü߀¹ÈàƒÞ™$̾Z)ÆÞ9¦;عivðG1êàp¹ü¿gÇ#Ï3M*«0$œŠKq\³qF3 ;I±5PL€bCÎ2½4ìE#,›YpN0GL®Šåü}i“¶£ñ¹o”fšÜFFÐF8¦½ lb‘òey.Å+ÃÿZc[í*NãÛ#=óH­‚Þsš$V?2s€zÖ°P‘Rzg®}©2ÖÄ<¨ÆNOLv©&Så®H,Ig?Hʃä7ŒçÚ¢`Ä•b}0×c/PqÖ´Ò_-˜ažjOP#•¤fFs“ŒjRY‰Æ02zÓ¢FP§¨Ïõ­8~xÀÜrIàð9ïK`,K*Ãj±—È9ÇQïTfŸ|"œãÛ©5(¶ô±RMãqQޏ>¾µ[Ì%˜°ÆçVAa’#Èõ ˆg*yéÍ. 8Ĭy\¯ €lʃž€ ÐÈÜ¥±õâò¦dÎO€­tJà Ÿ—­6-ÁT”À=³Tÿ1SiU&QÔžÕNâMø rù÷éIâ…‹cÔÿõ…\-…G9ù¶ö  ˤ|²Ï¿zÊy\3*žÏ4$`¹É$ò=iîÖ]ÜõaêG ÊÙÎ=iÛX…eÍ>‚¶¤±ÆÌpG¡=jèO-˜l½jXÉ6Ÿ˜–ÃÇò¦m$1FzÒªr SœqéS›TüÛ‡žÔ;€¥B†,Ù‡¯½@mÌG~{PŠªá‚çÔzQµ™NÖù¿ˆc;Uµ#áHü½=A«CpÚ£GŠ@4;(-”ü¼ÿ/’NÇÎ9ç¥' ÌQ–>1ÓÞ¬m¤1ÜzgÛúÓ)+ŒTØØÆsPàÆçy÷qÍ!1²ÈHÈÿž•™µ‰eV9ÇçM…É\†9ǽ7*W¨‚zÖ„;ßQï»—ØšBãaS™¥¾Â§äºæ‡ Äâ=hZ»€¡‰ÿ–|sFIݼqžÄqM+'ó¤$çqä{R… ä}{“PhбŒëžjDE`¢)3ê€4Eœ›–Ãqá­W¹³’0ñ§qJúêSVDio,o¡ä¹A õ¨§‰H7þ‚KrƒµdÚp}ýj“4˹@Ú¹äžæ…¨#ùBêCàò:LÚ¬Íq¸~tµ¸üÅTÈ*Î FCê¹Á#¹÷§q h6}üuëžµb8c(ÆLç çþ½ã[Ù–I8TL„Ž@?çšcÅ´9#œÐ´CNä ‘° Êq“ÍoÅen±ðA*:n.i]Ž>cg²Ù庂sŒýk*fòÇú dþTÙΨx äqW>Ùß+ *AÊŒgŠmš)(Q$f9CÙO"¯£°Áˆœr9Á-HØo%¹ÎqŽýT¦áT+íƒÛééJÃD¿iE Éžõ©b aË.3ÐôÍ=qz‘ñe$ƒÇ5MËÎÛUI=W·ù¼Øœ¶HêÒMQìJÉîÉÉ$`þ•Q7"$qùˆ9Î@_zˆÚîÆÍ¶µ(Mt²7nN¡Tà{æ¨<*¹džy­6ÙòwԒݾR#'jê,{•Êzžþôº¬Ñ,vöÛØ ØFzàÓ¥CÆ‘6àà @Á¤7Æ…£YÄ$û]¸à÷ÿ ‚ëV7°yZˆâç„Ü3JÎû–šKDU·Ê˳“çëÖ­Expc™Ä8àf›Õn Bõæ·B‹oóvýk$–SçË&3ÎÓž¥Lce©U'ͱ$1I±•ÉÉÉÿ˜\$ù€¹"«s½‹<2ªÉ6â¡r ¾ÞÝ+÷3ù¦DÚs•¢Ì–ÉÊH“ÎdÂÿ9ª c%Ѱyêj¯pdjû|‘’¾‡±¦ÊŠ3 a°ö"ˆ3;Æxöæ¤BЫNsŒŽ3ŸçLI–..b”*#É=ë=ý7P]‚Äp9Á«vò[´…nXˆùÆ2h¶ ŸF6UUÜО{j¦¥Àv=ºÓ^d½À.Öùáüª@Ns‘óÅP†œ“•gòüéL~ŸZ•”;«ÀéÍkG´@»ñsÈïY²Ö¥8w¼¡b\±à r ³$XVØ>aËÚ®U¼³œ Ãj¹>^⃧_ò(%Ë0L„ö=ûVÖÉ"x-ÏAÒ“"ÂE÷ïíQ”,¹ É<ûP“¤JªCŸEÇAêiÂV”`“þ}èÜ­‘Ri7È\¡ÁÅ4ûÍœáð?­‘=Ã1PTãcÒ£è@aÁåi#; ‘ÓŒSÕdÜ8 ÛùЊIÆ1ŸJ‹*͹AÝÂäc“H ’³:„ãŒ)±œ«,€îÎ;b•€ˆq±¸óš´âw‹–P=?Z5* ãy¤9$ä_lUiÿzêËÇLŒO¨ž¢"—ä±éÔÿ*exSlj}3ëþzS#pÒnfÎïN•YÉÞ1õïE€|jY³´ç¦jD³•‰hÔã§j6E¿#b„b7ôçž”ÿ(pY¯þ´ ¬av›±*\íQƒŽ2OÔ°!ÝæŲØïŠ‘*Â5ÁÏR;S=»Ý—8=ñÞ§Ú› ޏÁÈÈ£®£[ŽÚ| _¨ÈÏQÿÖ¨Æð3¹qÐR ‘.ÎdϼÓâ’3ÉúÓz¡€ò+‘×Þ¤á~]¤°ø€äîÚ2Iý=iÁ© 8'QH6r<{X®sÔçŠ`d”…ÉÈëÛ4!ܳ”¹”p¶:ž”’ÔB–\dã2(c”àñ×Óó¡hFGÍùPÀçîxä5[T/ úZÌÑyPYŠƒÏJ®°,3øý)\ Q¼öì=1žyõ­Xo<èü¹€,ç=(e]l4É'#·9 {T¡"/äyR­-G Ë…¡¸ÏÓ5XÙ’©— \´Ó®WuØ¥K€=JˆD’7Ì?½Þ‘ÔtQ¼’  ÉoºOó5¿.“"Dì ª° P÷F4°–(7ÿ ïžÞõ"ZÈHIm\p‘GAYÝ r+8ÝÏLã§µ-Åõ¹‰Ò(ˆž{7ìŠÐœ,eÐã¯=ñZ«4@|ˆ@ g©õ ±×W&Âà9üûVcÉÏÈ2À–cêhKQ¹w*I3Ȇ0æãùQY°Ëúý*‰4"h€dñÓŸzÓ‰Öʪ:tõ>ÜÔ²¶Ð—| ›Lcžr?†ªÉ¬Ñ7cŒóŠc3ÇÍŒDÿ?•iZ´ò¢=Ûx®ýt=7вÄG™277#ùU½&{gw¼Æá…SþÕKM­ Å©¯©jÖ,Œbœ€9ÿ=«Š™¥¹’ÙŒü¹=½)B6ܺ=Ñg$JÆHr¹êMDöáXm“ ñ´q´oC´/ÚÚÇ™™Xœädpk±‚m.XUgµQŽ2~Ÿ¥g+ô4§d¬S}>ÆBE½ØÞù_¶}ëtŽd/†ä?âÛܶº¢¿šò¢ä–UÈ Ú‚uLÛp¿Â@¦(ë©{|ãŽGáï@õ&òÉÙ‘œoÎ*Ç–bß1t掠ŠÂ8Ôy€äã§¥ê‰êH4ÄQi8^H=Èæ­Û9òݳò‚= h+ܘªº·ñ´öj‰`/–rA½3He’QL…¯$ôèœXŒúC„"QÍ÷¾nzUGšf ¼çÜP„B:î+Î*HâyI%ˆ\œS⬬`¶[¯#½? ã`#ƒÀôâ1žB#œýÃߊGXâeqÈ y£pä" ¤gÿ¯R K&Ø×“Ôç†lüåçÆj|åV2AbhêBÊ2Ž#éO(¿0cžüRbmÚÀ³NÃyl¨ã'¨§êvù‹ã¦=éÁ™ð;ޤŸóÿפ=½IéÆqUX!œc©'­ Èlqgž4»ˆKw4úˆXåE9ÎûÒºŒyŒx<`v?þº} #” žØ9Ž) ï!IzšA¹Œa°˜óèjq(ÁÍôéH7ccʸ|¥@´÷“Ì 3È;sž´Ç²±WiËwrqõªÝlÛÎAì Q&zeƒg®zS•lãŽþÕMêFà 0ûÿúéÜ8ùééqÆÈÎ{ÔÒuÀË#ëL”ƒ•ÝÇ¥=Xœ€¹  €%IäwëOYK•r¶ƒ‘ÿê¬ qJÁ3ßqëS(·!˜ã¨þ¿•H÷q§Ý¢Ÿ˜Çvr*šÄñ!f [8`¥ªˆÜÍ6 àsžZe$4xÇ÷°1JÂZŽçË$íÁ8çƒÚ´ôëÀhåüÙ"•ŠR³)êÞ\²Eœžµ“¹Ð„XÎÞ½:ý)«XRßB\LI•jžøTÂæñB«á—$ã±ãŸéF—Ñã»»\¼jª¥±œ}ßÏ¥t6šíÎÓöˆÃ(ሚ%Ð&Ì‹ÙÒæu˜Æ«89ÏzjIÄQPF3éKb^â víVÁ#'‘þ•~óäó÷}©ù»K8x•6¤Žƒ$cµShþlmãø¦¶äOÊ¡uÈìhA.V@X~)†‰—"òB‰Y™äí‘ÀüEQ2;0ËüÄñÇJÛî<ÊÊø-Ç\!Å\€\];(ñОô¶ÝèH-€ Œà?ñÈ4‘\][f(ß&‡æ6œI|¹6+HÃ$ƒWmlÒé›lD äsùT·b£»²óè±}ð¿8RxcÔÕµG½¤#9êqϵ_¡…îh}¢È †ˆã“ÏÔÓÿt#y-¦p@¶}ªM!c%Q]› TœiÏ’(°Źݞ;jam’E JG^‚®Íwo…II瞦‹]è’QÔçn$‰ç$6°µÓÛêŸÚV±¤ó1 «èF=¿*obµ·s7V'™æ"6·æ¹õYœ6ÓÔóz™2Ü™§_,$±ä·ñgš³§ÙO}†ŠÆ óÜñM÷å9ƒFÌ¥>nƒê Â"2>pAî=èLGK§j>fìÇÁ!°ù÷§Þ:\³sÔÔã56Öå­ŽbrÊ 1‡OJ¢ sšÕw!é¹,’#÷~õ3¸Óµ \ÌEØØßœúúÔÛ²¡GpLÐ ãåÆ[ß½¾R§¢žÜÓù' Çsš~ 玼w  Îi0Sìh2˜ÈûRòFü`v4Só==jð12 )íŸÒ¥Žãç@I<‚ã=)ËPúR,Fa\§¡õ¦2˜obû‡^”Š …\¹äsŒŠqub®8Á?Ó4eY‹¦ÌñVåw"äU 2Þ´º”¾¬äÙ…=y©Q<µ2•Ïlt#Þ•ì"TÃçnKŒsUnBĂ߅& ®$8`z~TöQ">fã‘BФA6d7\àwÅHÊ„ª€t>ôØ„1¢ŒrúsšQÀÞ¥NFïqþqKVU»r]Šãgn¹£kléÛ¨¦I".èÁ* sœS2OÊ­8㊠cvÁa‚*Pª¯å¿”º\vÒäœ<‡Ž€TS‡]¼Ó?Ïzã$@vŽ®qôÍ80*Aì~¾Ôn"%B¼íä÷§FB«HÊ 9§p'Ã#G! ŒqŽA¦‚I$ Q—Q¡è»cÀõèÞµ(S(‘s†õ^¤ÐÇk9$,jŒpvä• P(ëGK‰ê.T2#æ²î'põàSV¹,ƒ.JœüÝp)Ø ·9'Ö¯Nıáò–§JnxÛÓð¦¶ðlôÅ2UaTð4\Tù”| tÿ <ÍÌBŒ~TÀè–®­ÆOÔ°IɉàGÞ¬žÆÚ̾^ L¹<©ªjñ«±¿ÜŽŸ…$&õ[™„`Fß);p äu£vü;É–' ê(˱I €%çŒyõ«½²«#¡fïÆy¥¨ô3>ÊKB0€Ä‘ÐúU„–(âTnƒ“ïÍR¶â¬ª¿7^x>¿çŠ–2¯ž„ž¤Ò•‡r í‡% ù`dzæ«úÇ'¸¤›˜ù­”çÁ#Ò¯Û°PZ@ Ç$*l.Vš7‘Á3óqžôkq–;zpBž(è+ôÊ7·zг¶GÎ\œóŒu¢ãм¬]h¸Æ2Øb[<®ÌRxŽsJå4Ñ•%¦ríÊŽ­Ç…FÖ°€_~Q“Núnâ$óÀÈcê;‘Á¥Xžf /BsÀëT–âÒî%oÝF88ŽhhAy$ «Á_=k74#ÔÔƒIY˜”ž¬9xüiš¦’ldŽ]ÏüA‡Jž{»¸>[˜ˆË1]¸ƒÎy«V¢H$*Ó(Ÿ™G¥[µ¬BÑ ŸìFà™XcË=V¸û«öÔ$Š„Pr (FͲêÎÉ"6S‚r¾¿ç½XxŒ± Èúò1VÎudHp’)£•nÚèC…ÛǯqB%hËÎûJ9ŒdŒœc¯­H×áw# Ës»=t-³æñ˜¸ÜBùÖsK#FÄó¸àçškBª&ò¶œ7r}«B)Qv¿Ì>üi‘˜~ÐüÌxQÛë Iþwù9Î;qÅ©=Ì…À%O™ž«Ö·’B¥ñÏ$úÿJèMû‘È ï ûs׃øÖEÑV™Šð:ÃÒ„µõÞ唦ÎÇñ­O?)ò1+ŒŒShi™÷NOæf1 œš¤î‰“¹! €Xñõë@#•$œàÓ 1ÜK{ô °@_š€‰[±ý)äí'¯Ð™ |À| tŒchÛòc§­7†cŒŒþ”å\–Ü~onÔ‡«sÆ>´â¡¹'¨ïK  8àÏ­J¬@óןóÅ'p4QL±mÆq÷½ªDŒ*/BcRÍ%¸XO–Nq×éUÂâ&m£ÏPi-µ„Æ[kƒ·§LTÑÛ´¥•0Iè^hW4ÒÞ(A2±^?º?Î)îŠc˃¿SŽŸ­&WBŒ2˱Nø= L"QÊrç®OnJ#+l\÷?Ãôª¥òœd‘“š°>Ä qÈ]›‰•:7C¸’ ¯|÷ö§aG°v^­ÔŠXØ+ ¯ÝïßÿϽæ:fÏÜo—¨§úÕ)› LЖ€È⟻çŠÒ!Q•ùÇLŒç­ ¼ÌTÆ[#¦àTP¢2sþ¯?þº,orS…!GÝ÷?ç4CØ N@¨ê@,WÞ¦¶U¶…Í&Øã»‚½F£’NïÛ½ €’ü²¢ö<Ó² ˜Æ=E0b‚Ä)~ôïAmß0 ƒÓž”.å' «qÏ㊌ÈP…ϰ¨Ý’/Ê£stÿ=jVr9rÄg>¿J@2Py`ÓïLˆíe|~ðç$Ž*€²Â4Á'ç'#'ƒC«ñ,6ûÕ:1²6  `G¦*¡wŒO9SUa©$ziûP²í_›Ò§æ4®,@ƒžFàxÀ¢B ¦Fg#ÔÒ¾ „u.¹ ŽÏ­90¶ìØïNú w«‡rAðzJ‘¶#vlwúS[ (B¥0:çÜÕK¨ÔÅæÇ;CB´¹šž˜èqJÃ;Y¿„'c¿ŠþÖX<Íë‘Ô*Žýª¿Û¢t”4 Us¸³uëXr½N®e¡,zí„"‰ÈFv ?—éX÷Zؽ\–îx9ã4ãW´ÒÖ2$$¢3$‘ž1M„ÎÌ\FÅNFTzâµ~fOp3-’ÛAëÎ?JjF^L€ÊF1òõõ¢â•ÞŒ|׿fß èvçû¸É¦¥úɰ¨GaüèhŽk;_ßC5¿”±ãqíøÖÑ"düz{ÓZ!I®…È'1 8©ç~{A ’©R¹{}iuï-L™b‰ã»2Aç¯jÈÉ~QïõªZô$ŽäVco~ÔÆYh çûÕZlJ¹`ÞHÊ …ÕWÌØWæËtöâ>ã&9òó÷@ÇɪÎìbj  õïUØ–U1ìËþs'ƒÔL >k"‚«ÆqÿëþtžfKª\ðr)X ©EbÀöÚ 2áDk““Ž9掠WŠ ]¿yÓ¥N±C»2ïvÀWQ–^““DCËLÊŸ^ic )>ãG·~Ç ÁõïI½CÐxèJŽG¨ÿ9¦•ÆAàñ‚ ü;{‘œöÅ.äv@ù$r0>÷µî,‘²¹fàߌ zS7° ˜ç8Î;S@ôYCíÇqüéçË P÷ÇëF¢T¨ó@‚‚#IãÓƒ×4YܹHÇËž¸æ•RTŽƒå'·­0$! &N:qžô(\¶ Ÿ¦+é ì6B] zqŠF˜,eŽìt4!OF#§p ¶[ôØ ò Ï­80_›?1àcõ¥qÞ–@è ùÆzúÓ™•ñÈ-· íJÀ†’Y.8õúÓ‰òÃf8Èèh ‘9wqž¹ÿ ‘‹ ÛžzsÔ÷§ä ¸`;»gëÍUw(£çû´ÐŠ“ÛÒà‘×Öªì†)ÚrvŒãÖž˜'%¹÷¦ïa #æ xÏsÚ‚3އ¾®‚Às•ئ±àäcÓšjÃKSÿÙvips-8.2.2/test/images/sample.exr0000664000175000017500000134331212530402247013662 00000000000000v/1channelschlist9BYRYYcompressioncompressiondataWindowbox2ia•displayWindowbox2ia•lineOrderlineOrderownerstring'Copyright 2006 Industrial Light & MagicpixelAspectRatiofloat€?screenWindowCenterv2fscreenWindowWidthfloat€?Û²stç]|;C·0¢°*~öÕkÏq€hÞ[z{ºAEQFa†qÇqÇ ‚ ‚ $‚I$’I$¢I(¢Š(¢Š,²Š,¢Ë(£ ,ÂÌ,ÒÍ0à 4Ó 4à 4Ó 0ãM4Ó4ÓÎ<ã4Ã0ÓÍ4ÓM8ó@<Ó<ãŽ<ð <Ï8à<ó€<Óû<ó4þÏìóÏð ìàððãÀ?ÓÎ<ü<ðþÏìó{<ð<ãÎìóÀ<óÀ?³À<Ïððìãû7³ðÿìó€<ïðð ðððððãý<Ï;³Ï8óü<À<ó€?Ãü<ÿ<À<ð <{4à<ÿ<þÏìó»8Í<þÏ?À?³À?ð¼;ð€<ÿÀOìþÏüÿOÿÀO<ü?ãü?ðcÿ<ÿüÿÀÏøóý?ñÿ <ÿ;³û<ÿÀO?ÃÏ?³ÿ?Óý?ã¿<ÿ<û?ðü<Îðÿü0ïOÿÀðÿððìÿü óÀ;À4ôÿŽüŒÿOìãÍ8ãM4ãÏü”ÿÿÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿw?ôÓÿÑ?òCÿ?ð3ÿ;ðsÿ<ÿ<îÏôÿÃOüÿÃó½?Ãü<À;³½?ð#ÿ<ïÁüXÿÀÏìóþ?³ÿ?ð3ÿ?³ÿ?ðcÏüÿÀìððððÿÀìîÏ?ãÎðóÀ?Óý8óÎ<óÎìãû<îÏ?³ÏìóÏ<À8ãÏ8ÿìÿÀ<ÿìð ?Ãü<àð?³À8îÎ?Ãý?ÓÎ<à<ãóû?³Ï?Ã<»?³û?³À<ððóÀ<ó€8óÎøà<óÀ4óÀ<À4Ï<ó€<À8óÀ8ãÍ<ó<ãM<óðó<ÓÍ4Ó4ÞÎ<à <ÓN0ÓO8ã<ÃM4ÃL4ÃŒ8ÓL0à 4à ,à ,ÂË,²Ê(²Ë(²Ë(¢Š(¢‰$’‰$’I ‚ ‚ qÇqÇa†a…QDðgg_íÕƒó»ôYü¢g ÿ¡F!Uß¾ÿßðí·]ÀTÍ8)¯ÙZ×íÝN^ï¼”‹áÝ­¸ «Û÷ÞþÇïåü ýŽ¿/¿ta<:Øø§/rŒÝÞÌCóöï×ä²Q¾æü [w¡¿€gõú¹n®ëäøh*ºšý§[ܽ°9»¹-Îy¤ït`«ì}ß{cßÿàhß!›¿™\îë£}³òûÝ^ýf> E7¿ïðïð3µùû¸þÎçÚÀ'û²Yô?çwY~ì"ÿÈtwáŸÏnnÕJENܼm8ì~÷ƒQI­µMµ»³cï×ãñÿ‡Çÿùò‰óí}ÝÞÝíþïç9NÌÞ¿æä¾:¥á™½½}̆ß!ù›Ÿ—èÛ+ÿwëýÿ ÅðÌÏÝÜÜçËãÝÙ}ÿÿÿü¾Ò5¾î{†J}ä3¶ »ïïÞ†½úü¿÷g¿ŸÎ÷þvvß¿·s7¿ûÿ!ÛÏÇô5?‹Óÿ–gì½;Û÷ûñúøoåþ=ÿ¹ö_{ÓûûuÒö]ûü/›œüÍíÚÃ}ÿùùØü»óo}Sôß™˜ýßÿï»ë™G¿w773;Í×þæ~[þÙÛÛ˜ü®¿sw-ñÇÚ6ü¿öC!ßm¶wgæïnsï >ѽßùøýßßï¼³¦þûÇådáïÍßî„{¿²/„!Í·}†Ç9èö×Â/k¯ïËW·a¿»=~æÇ;)ßÙwg/KØüçnüݾuÝϽ½œ¾¿÷)ŸŸ©Íw¿W×m•µ{ß’¾íaôÇm¾ýÚÖÃUz“¾]Øw~ý-þ÷dz̵÷`û9}¼£7÷'¹îÿél†[/³û_ÞÿÝÿ§ö?³{a{nb¿<ùæ{þûúýŒ!Õçd£óoÉßþžõš±~WM™$ u@O €óÐVvVu¿ü>oÇÿîïIýö†^Û|·ö?ß»wëþ-{ÿ3³ŸÙ ûÃ/»msÚƒtÎÞƒÿyÿÿ™kÁ¹RöÏÏËÿ^}(Ó-.oVê=û¯è~îg¿£|çíßïÄõùžÿÜ~ofî?ßÑùr~ŸÊÛ¾y.›ß¹ûŸïÌÝ¿ï}ëïÝÇÿYöîwÕù›’ƒ©òRêzoƒá™¾_àÿìÈîî?ó.ÿ«ï÷ËÇØdè]4$ [þ¿òÿ™h»Îü_xÇ Ö›kÚ±—ÊÙù ï×eïýÞkïè^ÒµâçVæ­¹zþfíóz½=¿×í÷ÿæ~çf§å¾ôÔÛ­ï¾äã öÉ÷åO;ߟÿ/ÝÍ}=;çoý¾ðÞÍÌý×ê{½—Ú¿Ýš»ÿ‡î?ÿ?/ð½/ûÏýßßv²Ëå}îüÌ’•òÕÌ0÷ô« ܆ü?>ÿoO¡¿÷~çÚ; ¿ÝûÚ¦´6h `¤ ¯/ G`žï¹—íÈ䯫S;·ÿüÌë¿®þ–¾9û‡vuö¿lÛô»³wï|ëíßlîçÛöüüÉ^y{õÿ¾÷5Ÿ«Ÿ{÷/Ñÿ‡|%e~PÈççækñôµïWÓïý çÞ7¿3oëíúÿÌË?âø|6ŸÙÛýŸxVøüÜýèwÃ÷_të~ÞïÍݬvü†k÷í—¯ïööçþþGkó»úÿøÿøÒ~¬¸A8j¦¿êjæS±[שÛ‚ÉÎéZ]ûô½uò“áõµ!8?¯{uöÿ5ö½*еëÝ\Ì{ÓÚ^l߇=ñ~_û#=ܧçÛûQAøŸíR¾vf¿mÝŽB{ ¹ët¼*øe~µ¶[¯nÌÿ×öûö®^ù׳úi¾çöá‹»guï¾çõ­ýæ?s-_íŒ~÷Øæäe7ç_k ß-™¿~zrø^¼÷Êûÿ¿ÑÝÙýî ¼Íµ†Í) àô ÀB(@*»3wþï•òÿù½³þ×¾°Ï¿ïïÌËëß»üÿ…¿qò«ë×Þü}ßWÚ·…·èœ±õÛßõþÿ†ÁðÇä:]†Þ.E¾s­òÝ|¿y÷Êív §¯ÈC÷¡ý'džC-¹ùÏíþ»ïöÏÿÿë¾Ûù—ý¾gfÃå°Ž}÷ßøø=ý˜þÌÌ÷Ýï†Gö;ÏûBûÎ}÷3ßšøoä=ÿw÷v'¹ï¾û_ìýÿú+P+@‚…È € €}|£yAÈæÞ=ŸÏ„>V¿Ö;~}ý÷|_ÿkcþ/üï³þñ³åòÜëÿt²×϶oô©öÛ²7·^/¾~¿ßøžW#e*–éíaM«°f~?½ºG›}§ C¿²Ð‹Š§{îû÷m÷ÿ;ý½¸ÿ}²t¿Ó߇BÛ¾åã_¼²û¾þïÝÌýÜßÿlw¿¡÷j¬i•ÖÝ‹ÝÈö¿5ýý»¯Ì~fw^ò‡ã»Ýºégð Â=*«”iîÃû?~>÷þ[û廯×ô#ù˾Ÿù™½Ÿßû‘Éìò®ßÿ7ÿõ÷ß¶ë÷÷¾Ð·v{û;?ó÷c¯m·½÷Œ/›ý¹û¼úk½×¿óú÷Ûô™MÿÝí¥××ëï½™›È~å÷7oÞèuöù>¿~¿™ÿ¾ÿ×ëÿÿ·3r»÷Éεqõ•]“ã»ùùÙÿþ÷ÿ[üþþ†ËŸËBžA¦µÈ‚ˆŒå{w¦ëW~ëýò†|²þûYù‘ÎËçæ¾yýýß Œ“ùæ^—û»ÒþüÝÔÿcÛ—ï½ë||÷2ß»›-{ß ­+kvY9¾ÍÒýÛnçÚ¶¤g}ûÿ¯¦«á´—Výkk¯eëŽl¡Ç Õ›Éóƒ¿ß}ßýÌëV¶~nc»¹™ß<Ìßîëß{sŠ'ô£[(KozzYOa{z{þÏ×ì/¹|×ä/ïràê×À]Lȡƈ°郸Ã\Œ ýýåó­~¿w3r›»÷å¶ù÷ÜÝý̎ß°ýÜßíÈ¿!|¦ZøþÌÿ}£_ïçßÿ{nû[ÿqúþØãû{¿;:ðèCw¶û÷φ½ôM‡_™¿ý·ì´3s÷v–ä/™hô7aý›ÛÝñëçÿþfgïëß|ÍÍÌß}áççC_šûç÷Æö¼omÌì…áöÿüÌμ-ߟ¹›òýÇÂ>, P A\ü$¡ZÚÔÿ¾ò_ãHüß²–[öò¿^ÏrPÈ]ûŸ~ß·ØcâùWŸ}ì¾÷þl£—¿)´ƒšýÏžf?áݹù.Þ|þœå£õÞŽç;Ñçç]ö„­Â¿|6ùŸ)At”Vò³êÿÈgeÿe Áhï>›YJðŽFù»ÕÝܽszýýÝÌÌß΃ó;³÷/ç«|…jëájfÝöŒmoχv×s7kýþÿË]ï‚wØ[¼NЀ%ÞÈp&sf€©Žãû;¦ÒÙ'¿7µù»¹ýý÷…?+ä2ùðù>Ž?¯Ë÷>ù™û™ÝßûÚ™×ô>0„5ùùÏíßgýãx?£ÝÇ¿7nÿ¶ô>/ÌËæí øN°ÈÂÓè>8÷ç¿xä=ùh>ÆÏ‹ï»ßœþ—BûÇÝù¿ý½Ûøÿ{ßxîgþþþoeŸß™žÿ‡Ë_ð~_w÷²ýù˜ÿø[) Yÿâa<ü0¤@ °ðËõáy˜:åÌ 8HJds`~*|&„ =ÁPJ© /‰€M€¾P˜1=Ë[+àûìJ{ÏOœzü^»î?2ƒ*ác·íO Q•˜nʇQ—::ª$† ´‘ÀsÙ]»ÀPnûVÍb‹tœ>Oc1DÝ %dmPšÊCU‡fLx>)tÅ>è@ÊìyÅ×u‡ršp1T$È™pÁ€U¸Š9TVrÍB߀ÍÚý«jQxåik›LOok'3d¶ˆ+ŽW§)ìckUÌM^Œ ª›Ž~W;ÅŒŠRšJ@R;þiý•Š”jÍØ ¿—E*í0ÊCÉÙ¡,¡0C‚àJØ‚ÀW à€Ü´/W‡ýoeÓ6Â̦c]ß¿¾/»‘ujÆ_½ÒÛ­Ïø@µÌßvN Úo3‚v‰ÝŒ:]%.ÿ—üS¤aÑ©†özºÌ¨7ïy¤£¢3ŒÕX D®fRU]„uÁ¯y˪¢e“¹Á‹ÄDÃÑ$‚‘i"‹Ë6ê¦BÀá)®\s˜‰u¥ÌEL¤6qM‰K¯<´_ÈS‚S©? ÅÝù]«ç¾ÑÊìc/f©ä5ò„ÏWÝñ±1H#¹±ÒÊ'ó”Ô‰\]ÕN*Uö”½FÕ €¦€€j#˜”@ú ìà„`´@Û½&uöžóï¤#|ç3‹Yn·ô§—þ»¶ž¸ñ*hÓ2NeS3{§ì÷ë—óú +©½ñÎ…‹Z¯Yxru–Ù:Ç’(‡HõdV’I)ÍáSå}jRÒK¦Á~p퀫 ìŽtÌ#@‹QâçÌÂAAD]Ç-7©(ßayÞïMÛuû¦Iìȹb˜Œ*£êúÙH9,—3v˜ú`L×uK›fUA™‚X26<¹(ì–”/ ”)÷FŸÁïË{ç"iúÀǶy%(. jð4 0`-†'š%—¾{¼WÊ7X0ÜîæÚ m9ÏçvéÁ×Îÿ}¤”‚’u ÆÍ–Á욇†.»KLì8:C2¨õÖ‚-¦®ãÒ •Ñĺß=åîŠì ‘°-Ö÷¹Ò1-ª—åBÍç©G&Í¥Q@šIݦ(‹ƒ/€]´AZá!VÊ?6’VY¬(ãE©umkv%vMÿ>­¸<Ò­=Ú¡.|ò\º;âFQrY1ÈŠí·K[¸f†’WýöéKHfñ½Èà "‹)dÓC)~qjFïBÔ E¸ ×A€“Ññhg€c0$Aä@"V` óFô Ú›‡Ð•ƒ³1ˆ%”À ®v†JÆQ”1ª^y„ÂÄ ûke„ÉŠÚ>WÍ €6Àô%€y@3pTÄH¨êPk°L5aƒl ,§*¨éx ¶‹´Á°þ€ßP ‚p`»øÀ3 Ê¡g>-Àò1½íëá.2E¥îI$mØ+lê*†a?€Àøe.–ac…Çìw.´?+ ‚™m«¿íkZ²G¢–ÝWKGÇÛ©ð³gbÿu^¾F˜Z1Ø(Ÿ³ê——8™K èèƒ5 q½p…æUßPùMÈ3Y,À,€)€†^ŠüüTLȈ E@ð(1ª¹Ña“$0cγe¤µ]0¡¹Ž¼Ðç{ØV‘ZmzÁ£°¾ÿX³¦ÍSÅS18 „U¦î´Ž… `‹ª ±!3­RÜZÏ1ŠØŠa,÷K3Æ ÃQáÁp'GfÔ*túYsN½ÝžÓ9G—Ü-&%wï·ÊaçMŒÔÀ „mù‹8ŒXFlŸ¡+kß®­îã>Ibú¥(ùWK7¤ê-äá…ÅBRç[ÁýÒüHòë\ž¦©C r°kÊûÉ-î,†k*|ßõa€€DœÐCPµcŽ‹ xžü xXÀî#§J,‰GC!(¥‚JÐàl®ß Ç)º:£ŽE§ÅMmPN8¼JH^+šv"ô¢I Äô;Pð$‚ˆáx'0§Öã@°nÐ H,¸°`‡CW“"pÇ  BO©+û€Ü˜0Q‚xà#€à¡H2fŠpÖE‹• Ö×s!5:CLF϶ýžPdd/ +I€÷»® \¥17 E›&ãŒO÷6¬Q´áV†tw¿ckºf… ˜?J1m§ìç\O%?ró”—1W ‰–BJtê ¤±”Õ»ÚtÈ xb:8ìãæÐ*"€ÏRt$­L›5y¸d À Þ—Y×CQôK &S#°@)À¬dR—š!¬õ ÇêZkCB"0@1B8Gt7Ñ B÷‹Tñø€œ8 ´§Wr%Àè@D0§Ì g“M€Ä͹Ïùh9F•sV0ï¼ø`B€ò ‚Çþñ|Ò"2ã´çoX^麹Ê.T3ÏrÐNè¹dˆýgvM]:Ѧ«–srÙêÎ9)6†Ñ;Ê*× Áw›l‚«Ï?¦Ý!Baê>X;KVžÆq‹{7h±µQ„ `€Zr _i=^kÙ¥†£UĶ—1\ÐAxø@Z€î ¼¸,oa°>I!ø¹€¯T0pø €ÞIp"”H@2(däl7x€yÂ-ÁA šè X<!lÈÖ„ÀšaP€Xƒ(°ð -®2‘ÑàM€Hq\—¦.]0.À¤€$Ê8 ã@§P*ŒEÐ<6> °¸Ì•K7°2d¸dÔ °€ø ÒñA¨‚nA(3NROöë<¢¦ËL å)jW0ÞŸLÍBZÃ6ÉóæŠÖµïÐ+^Tj¶ÍƒóÑ9{ímÜŽÆoÙV[#/Qêܱ†‘ª&˜®‚g]F öãŒ`Ú†D¡˜P€¿5`(P”º†}·´ô¹“}©§?^`€ âPd˜ð@.Z‹ä> ç'HáS)š‚|Œ-líx€ €G¶<ÊJ•^ AB°¬@/‘n­,à~hCÈ àWÞƒÀ/@ì¸Ü@<×<³«;``! Ù½Û.ɤ€Ž€Ê\ÿ‡+@,€~Ú¾•åhะÐB(0Šôº£@“4€x‚À,ÀöJ R¤^Ùkäph)< b¼Õkv¦œ-i§Š>ñµºçò¾×3+¦§FÎWé>vÉåññ¼zq0ìîío®Ë1ˆ¦ôiÍUqÑß$aªV®\ô錘,B=†»é=G ›0€ÀX¨Áv¬ÇM½¬w:µá­´Hœþý2Á:4p 1$ ‰ò„²¨T€ºW»Þ¬ˆÃ°À§æ  ,ŠAÀ Î2`£Ì»ð*]UlL–  ÂÎù¨HÐàP‚Ø@I?Oò'Er~ çIàY0s-kŸ^(¦òÁ¸9ö¥àb°@DA –2õMÁ"„”¶9Š@AhaÀ6Àt€1B¬Ey`r˜ð0€ýöxiŽ5¶ËÁWK³¢s÷¢(åc „“‘„FŒeû÷'{ZÅå(BùÛSÃö¿á‘†w?q5"í:ÊVTñé•#ÿå †Áì6ŒŽ¥Yµ3/8ÿ>%BÐv—JuË»š÷¸ò5ŨT<üÌ€*°€€Ò+ PA*éY›ßy麦¨l”`4€ù [*c§',¬TëUìH¸Ä#JÉ5mò”€A€I!j% n€‘' ƒˆ½µ¬éYgRàÅï‚}£É@¹.,º }•ˆa &síêDÑt×ÚC`l˜pè¨äÁ4• 7ލ(ÀY¼-?–j)ï>p·ÁyKïWá ºû]21Aó^Ú—¿+ö¦ÅÞ}÷¤ø§ ¹˜%Öö9ÖìÌž?­Ú£Û“”•Ý©dÒ`ˆ/EG~’·­hÝÑ©p=@b^V*3ud¶¾îÉ{¸”Ú_ë¿5>¹ÆAÔ  K‚D" 4N ÛlÒS.K”°¥ÅÐìáX?¡CšÚ^LíÞèôwÕÀ§\ ¢€:j6çô¼"hØ/Àˆ  ŸcKmÿ²b*’°©à& À¼t¸+B£©à$ €"pÐ!¤`ÃÿzgˆæÛOÖ/Ð.UÔ”Àñ‹@€zÂHTB*iÚ\¢]ÖxùqUP5zÿoü/±{¥‡ XfNdzC7««­CéðÔõˆÿFöØü+—ºiÞ¿?<±§ó¶~Ó¥)(šó&|h–ÇØïè?¿­€² ¨ë‰L(|^\µJJ‰¯[¹õ‚>ŒP±²R àitàúÄ4VÊfïÒ=• À4 &†„Í©V\!'Ò„N”Œ2ø4\ „϶×z%ÙÓå€kŒ #Ãá¬ÂÖ(L¶©j²<“ Z~o̬øà6KŸW€¿ˆ p d¬¾øwÝG&ž)Öh¸¸óhªž:6A8È.‘”»±¤¥mVm3(ÑBzwÜu[;d1±˜Í¦?ëÖbO`âêë¹MÕ/_Û_$²»öwØl;e÷­ù·²ïVÑRLðÌ$æ’$ŒUùÞ®Ýö—¼Ðx ,ˆ+´Þ;{~ÖߺXJS‡B«,N,ð8D€?Å€Üp#6) íþßÛÕ<¹ƒaG¥>—ä1r€…Ø 6Ao Zt¬@ŽJ³w)Š `$ “ °8vbkÙí:´'F5g§­³UNºx  ö‹.ÂÀ®à D uØs¬´Ù PÆm>Ý›äj j†É'ó%›à ˜ R¯¼{`ª´{Ÿ”¼m(e.šIм§JoÝ;ÊöØïCÝ÷2îmû!ÿõØ=ûNçź½ùzê·Ã¬Æß¶]ÉßVüµÊ\&”¡f/ŽÁû)¤ÔýËRð¦;Uç½×Û/ ¨Q’Ê\˜%‚ÜØW "s÷þ–†Wwq·¥)y„Ãé»^öxü¦'hx âÉM&<à+ÞGo þ;v€§ ø€öë*yfPÅHdmuèë«”¶P8‰ÙC'ÍÅã^pm•Ž—(>0Ç%¹ Ëc²K®F)]&˜7ŒÔh§ÐGܦm'h[Ò7\“ªV9µ“ßaÛ”U¾‚_È_çð}/\|ö ¾__nîÌ¥³Æ¤DèªÎ@¯+ýïöùÍÄíÎÚ‡©JG«Þ“#µŒ9÷›0¹¡°¸\GN¬)[ÅÝv[-¼¥òŠ*€iTºëšú¸¤¹b~Vf@%àÕ;L<‰)XXè"Ã`b b40l‚Ž=!BHÑû—,*Ì„X‡YÇ&`]¯™lyÇÔô$¬„xA$ ¢> èØðù Ǻ‘ŽÖAñX¹ zëNaµÁ8¬tRT£šXéÀ Va´ŠGˆ¬hp#š€sg:ðUS/Æ’¢hCVr5 ³2¨Jƒ0 f· ÔglãƒA Â’ªˆ¯Å„…Âø•Pk»—³Aû›5 <Œ€2#G˜#ÏT5uÛ‰pJ/KŠDÅEËÿ2‘ &î>wVq©îYuœ²Sãëpç>nï¦âÂE‚Ób“^ÁÄežwX*Dήª’Øì]ru ˜)l\pO)iOU™mÀœW$ÒÄ$A0J¨BpA… ô„PYˆD  ÝÔñQµLÊG­ Hã– '†/ÞJQ2jŒM¶ºu"l3.AqôÂú6 ø:ÒþÈÕÌú«Âb£&¡ïÙë $Ä>W¥Cé*‘×Âí&³4ï²ewšQBPåÀ• ß‹„3FÇùÂíÀ¶©Q™M˜sóo;(¤vwW‹T¿‚¾¦­}‹Š0Ô©¯pшìË©Úz«å“¶¥yå…î•$FôW*Q±NÊ\ÚÒ•³nÖ³—v°êÂæðÅ̺uçpÌMÆ2¯ÁÔþt–C'g¿ºÏJöíN½í k쬾HÕ(y7’zˆ‡n7ûéÈàns¹Ï1c^b#mšŸ?\-tËÞm»oÌ÷ÁÄäå_ò{ò}‡\¶Õ®¼ºæŽDú1L\àÆB);šŽlY¼…vÏýÚ׺ÿ´Lºíé4®žMsBsÔÅ“*NS¦9dÒwŒ ò•‚Ï»MIÚ×rîG•ôßñîÖ•ÁÞ¼rbFDëáÇKعÄý|§Y>ì’Á$­ßOH™SØv”£éìŸ,“ÖÅ$¤=Nµäç5$FÊÏÆ¹ù©ÝýÛз[láA‘]H7«™‡ãán=VG,n+âi«ôNÉ<°Ñç^ӒΨ΄Ʌ0%R&su\"I :‚LSp.' ”Cɇ‚Tmß,HɆDxÄ̇Eâ¶L¥3gP¶À½‘"¶ £€Žy;Á¶†nu)¤¢27¥ (‚…Ò&;1­ÏVÿ’KŸ“·áȰ6®ppÂÕr¬Ôÿ—n—f‡Ê„Œ K¡1ŪZœ²¬˜}ÆS4”+%+h#6~t²Î Tl»GF”âT6qÅäÛJýìÏš!±Š­7Áx9¦SÆW¬ªj•¼\QÄtNN=ͬüÔ eÂÉI<»#$ÆEGŠ ‚*`d8°é‰.„PQD"—``ââx7bªÑÊ—üuÊÇá:ÈÝ Ö6³½~‚†N·‚VëC(G øø‡e‹…²‡ä&’éaÇG’“8M7Ù8.˜¼sW%ú{ ºy+µ8g"$“F3BAÂo#L‘ÉÐ?¡¡ Ò£V QFhŽVT¶:8Zcƒc®H1çj Î2°oä. ·¸M¤)HZäcìɵºOb¦.€ËŠ…»ˆÙ×^âF´Lj)YfK·h6ó7=L¥b…d“-Õû¿ÃW2 È–M&&á™)*áeè Õ>Å=>ҔȔ»Î;7U D.Œë Ý¢Ö#¡`$ Þ@¨±ÀŠ˜©3o]êÏŒª6¾ƒâ(ø’ÓIûwgÔþ$m,IL#Hô•ÕÐ\÷•¬2ä,mL²i:DÕX!d׉ÌwÍI9Ë’—sÞÎOãôÌÿL4#dr&ßÃå4w֢ЏþQ4Š»D:í‘ɧDŽ.Ö°ºIŽÁF$ù]xNƒÕ}m©{*):¹i©‡M`îñ¼R}U}=‚pÅNðåôÍVV{é õÿqðÎ÷Ò]·÷Eç¹ì6%ÑibÚüÂôlma×W,²W$ÜtË&Uyœ¾ã»ß›)2¢V™Ç]ªvôµËLJìjJC×è[Z‰\‘z6¯r¸°“›çÙ óPFô>’h®‘D<‚,¸a¹–ªwGu®í Ÿy?”bV›yR¨ZfM»Ê;v½v››½ËP}±Ã¹·º,D(8C£i¦¡vÈ\XÉz‘L×z÷Z)ά« £q«1zF™Ð•døñ® áç™ÓMœ,ù¸£½é‹IßàÔ6‹,¹<‚ºi8˜ºe½å¼»’SÓ³m›a¢Ì™ŸN*ÏbÞ'f´4«UC6`X$ÑH2À)'¤¬p¤D¢A’­ÃQ06‚ bƲ!ãÍlïd…ÄD"-DfĆàx/8€pÎ!Š#tQ.+ çØŠâ¸ýÒº a¸ôAÅÀ;Y½§˜(³NšdhF¥-á-pÀFF„c‡7rˆªÑFõM´ÝH.̓õ&±Ú¨¸vhyR %p)•ð°ã® ½íPÁƒ$Á ÚÉR:e;nI1ôöí¸¡‘gÊn—ƒBWQ4w &7 lìí;STBÏdLÐɵĻ™ÏÄÌ ¶DšêP*dTªÊ…û:ƒ´px±¥ƒXº”5jÁýMt¡Ð¿YpRõ•öÜô{Ö,…©“ÀÒ†L&4·ÄÆòm–H äšI‘0`/ çÐÖÊ £Ä„I‘–Y1@°Ñ"@ðD)'TN‰U2©¥B‚jðÀÅ7±4Í›]u+M5jq£,.¦ä“eÌõ\>ÂDX\áƒQ&ãWÙ ãá² âdH¥[G`j.NUåb7òƒEJ š…¶’6ÝMU­v)¨@™eÉz»”õhRñÃ`’ ȩ҃ÁÔtˆ ]uv8‹òó²6‘`p³¹ pÌb`:ç Ê|¨,á÷šìYhÈø=‡J†)J8T/`‚9‡sÍ(|ÐÖÇî3ITJ#ñ,lf…WÞýrI^x±êÔ²2¹>³ÛÅòøNóeD/A2m'ò»D’ r—$Ðîúáïˆ:2tž’`ÕÅ.‹TT¶)¸½UYMYs~ýÙqŠ–LXê‡P2’d¶E~µúV,éË™O—fÉTCtoCv¢{Ä•Ó×e™b× eRñì²\p´‰«–ÕŸ%u9W¾éÇ_Öõrz¥—‚uƒÓpÌ º>éa· –Sæù{÷?òûg'Ö],q\Ê4›*„ã#r]O£©õ”±ÇÉø,w—”!.–™²ÙTé°›<ß7ßÖT=¥3?äÕaÃ'Åw;Që—ÉÆ;Ç-ŽÁì/óðÔ&»ëu™,OsÐ?cï&Á‹ÉØ=R[1ˆÓEÉT=dlÞß4ðçE7í§é:rrož¯Æ¦§l¡ÇWy×H[`™°ÂÂÄÄ©‰Ý;1΂]¹R¦[!ñÇòÓ//Űã×úÊ âΨƻ/*«uxq²…oø²¡­‚&¨þ‹:Õ™š;¹6u,hψüELkQ$e(0W7e8|£Û^F¡UÕk‘›ˆòf(q>ðÉÕ®vºµ ¥‡L8€£ç9K˦ ªF„”½FdG$!€ÑŒ¤BÊK˜Y ‚‚B½2!š™Ðž©«ˆU'@""u1yÙ›™t&»O 1j=&ˆQ pŽ€ÍÝ;EɧíÔÕO6ÍV ޲>tése$« 9;™ZÒv¥‚ç¹`¹£m2à_q‡IrqËèÁ¿dh®ù`¡3ê…¾6©Ý‡Îÿ£:Ã>jê!ûl£R”šõU«Ïp¾²³ï+˸¢mª¨Ràr‰R¡1ôìjéõàªij'’X¡£©°5©©ˆ±@66£mÏ—ɪâ ê^Dª3¨¥QôÇ«´ÒxÓ«] ”,ÙšíwìVÙˆ‘˜±BB Ê  ÀÒd„'ÍLÈåFôÊj >^&Õ.ÆJª ª%\%ŠÅ†jJD‰»!ƒÝ¡>ªÍA¬Æ·›¬yvLºðo]QéâÜ»¢ŠÖF9A‘ªánP‘Ðm0Ê`Ðɇ ˆ·>ÇèU“‘Y¹•Z]¢@½Åêù§—/‘m…$Ÿ#PQn*}Ž‹.7²à32@À†<}¦mg.õ«w´å†eBÔa9/`1Äê‹Ãp²m$LB‰õ+ü‰¡SC@ëEi¸V&AB•ƒÑTG =a%DžD£fI°d †ø2Ù”¶uf ß­A‹#z($e;.¿óãÔ.àæˆøuI'k$Tý¦Mb¸7Vnæ$ä:O„Ð#t©ÒŽ*yKÒÝ.¬5š9"Ñ}µû®åÝÈåHâ4Hš¨p§Ùz&é¬Þ­–éñ×ðŠãï4e"Äò%qŸ‘îbÈáÕ­ÖòØu‘Sd;ÅUNE§uš1>–e£n¼?ѯK7V»õÚGã)NÍM×6ñ[b˜°"ÿQhÆTQ±×Ùº«ÌF°D²vÛðÏôû!EÛ9ç ªw–UÌ÷#ETWTìQ¸µKkQ®÷çîã1QÛ0öÛÞ¬$K œ ª&™¥Œ:cVµgó–F°q‰Ýþ ¯É¹®YˆÓ)÷kh¹w"ˆÁ#´vw/C¸¬‹ó˘jƒöbvR2á¾5†%/,à„˜ø¶¢½¦'°®C§X)T©Ù2jY Ü»‰–ˆ¬'Á> î#,9‰­%%ÖQªšÇÜñ¥ ¾z))"×ÁUsM­;rØYÓpØ*™BTž2‘.Á¯Uýå&þiR”Ò8W$‰{–”Ñ éß,˜9°3`îáXY@ £ábáLÈjƒI 6(iî„â ¦4#K…ãÁ,0(\ t…!˜6¥ºÁlÇx;l?# NPÐ>'‰Œd军:–a®ªãp'dóas´Px²®›29Z¢1Àcž?A¼Ná£ht*8Ó¢'Ù£5ƒÄƒ¡ib]zPV Y4Á$˜ÚáÊâÓ`²,C |&ÉÃÃÁ>š¸4 Ydè|…ØLP`F°@¨š…1qåeŽ—fϱl¸Ä™9$d¥­1ŽH°p`voäHÂÀ°7´¿^x\:pDœ‰áŒ(£$p2ldˆ<ÏB±0j°ß#! ÇÐ%©q èú÷hWSEÇ6o•—‰bƒœ`€)0O¡Äuè½õ+%¸SõÉ<áÀ’`J\czb¨l&plL¨\&€J<˜Dž ÉQ¸p€s5E”|NXxɹdá6è.O`PƇ“OÂuù\:A>g0Û•€¢êXç´”]Ñ-§ (ê#8þV ÄÛøA· `ˆ:ò@à”‰ú'ÊÖd2YT™’ïsµ@ÿƒ›¬¼†Â8Z„¦ð· é¼b@|Qƒ„]*RI‡!¨#…€I Ú©ò° áÝÐwB&Á Ñ 8Ò"$EѶÛ8ª%R¶Ï³È‹•:׿—©¥g`«§,$ñK¢HªuÙœgÉ#–i^œ¹Zës="w“z¢×Òm{ ¸Íd¾Ž'ùÜ÷Whrç­…øGrÇ:ìªÍªì¯=E(Â4MuÆÌyfý¯jCEIµŸkôs“°öš™)QqªˆJ½ˆÂ_ÒÙ7æ¨ôpg¯[ü¬r%õwôYøRéL8W¯DDØt€84+LUq)s“^ÑRË»®#2àìjŠ> ªâ¶}}˜ÕºÂï´·ª¤yk™ñÄâ¢qüvÙdåG¹´î÷v×­ù;ÇŸtÑÈöâ¿>öÉ…”`_@×ŇpÁhؼËr©÷£ÂµR;JîG!—›QnÎÓk=ÍëÝí¾÷ù2Ä}8~ãñ¨Gý6Ѫˉäk-H*#ÑØ/¥•XºÅ¢É Ô{~Vl¢…S%€Ñ´µpÉ”ÂÏ¢=&ÒMÓk‡hawý¶´—PrÇ|åŒ(YëçâÍ pS§pË5SMò–FŨ=Q5Cšk;¹ÍeÔ'”‚·‡”#qЍâê%.ŠÍe0i‘F'pƒÄ®ý*î— ƒ¡ Bc„"p ÄcUˆ‚"fœh¬D(4.º™9Òáy@2ˆqFxEfP È„‚b ƒ–LÑx.ÉN(ÒY‚½&[TÇ nÉEÈ–˜ˆ¢8¡4ê¬-%ŠŠ¢õ–IÆN#£[=ƒ-@˜ú…Çñ3‡Ö®3„úE‹½1ÂÅÐE“†;X’D–¢ÇÆÊ^›“ŠUËűóOWYò쇸?!˜ÙWFÅr]‰•CÖ>åSô\Þš>\rñI:ˆÝ(dÿˆ‡šB,HeaP¼5÷'‘‰Æ‚EŠˆœßâb  C “¥#sGZ8óÉ?Mì+>‰kévÆÂö¬R#Dm—p³¨¹—½%Qwï]ð2éÊVùй&Êh6°Šiãa`zúBÑ@ÕÉX ðY¯‘£C·-5 ê~"CÍÙ†èü´é‰®êý?z®šmÍɱ%—]‚ቘúž(B•Ò„­¹=}ñ­•‹ ŸšCÓ!îÍc#ªÁ‘xÔ"…` MAæ ‘³k¼&TV,V\™8],[*:ÁùVGV%Ë6 gSl ]ôΜ¨ZÍ2è”; FFOQâYªXÔF­qrsmªOJ‡Šz/-Ù†â‘P/— \±Pd4†(o!¨3ŒA>é¶Pdò{a‘é,P=¶lô«¢“ óƒÚ^ë>~'@ÔJ`‹ÈóŠX#¥¾Ü£jBs]ë¶äÛÃ×KÉfÕûß9Ï•ç¦]3?ƒqfÑõøFtÒM´Þ8azÅfžGfþšÌ ]¨²fÕ²P|«˜Å¶Æ(e2ïØ^miý*‰V,Oäë£äè—rRgݽýú›j½lÂé$‰*R̰ã/§+¬‘($Hº)27q#£fG4ßYn¤uI™¡Ï¢©Êù—{Ÿ•Ÿ©÷Nþ£|KcXn62Óu“9F”øü3_ùïÞV‹úø´¿QR¼›‰.5‹e"r‘bbE¦œS6Œ6벦kOëCß‘uéÒiqµnFqU'±vmÚ‰ÈøÛ’P†°ÙšDÑ]»õXÞëÎÿì©ØL»Õg%©YýD2`ù¡$‚ÃB%FQ%°Ì°Â‹l¹[]z7U‘]†6²-X¶Å o ж,¹ræ¼ä+£Æ&¦EÜr @’C]ÈCx†à‹b6‘»*­*Hò…XN€@ø/7s³7äuŠâáPpƒš:1à‚yo Ãa´Üh”<”0]æƒ ¼h‡&Ááò@•ü … äP/@É8Á‡Œ ‰t¹qI€±¯îâ†H¨yJZ½ê™T lƒ"¡‚æ/ æÅj xABl6 ‚¨é…}ÂÀμO‰OD3ëÌ8XLa8ð!Äa$}Рadr£¨ÒÀ̾"—Ã#CŠäŒ Œ'h‘²ê°UDç>K‡¶µhûMZ:ô‹¨à`6f$hBCñ8~ÄhŸº$š6<0Ä•ý!ò F ŠŽ¤*hÌL56@t%´ÒfÑ4æZ ȹ9[”C›’,µÞ`N@æ«GÈÃÓî¤CC”fËs9dn-"<8˜)0ÚŽQ¨‡ œ2JÎ|ò!ã ®Ó·KÊ2*]å©’hF‡ŠmÜc~D5n\H¨Ê#cfÞ ¡ 5£ÊõBÄ¢–:»B„ Ãâq1§bUyí.¡rÄeŠ ®vÅÄkª>X*¯ ˆ`Z@[‘Õ[ª°9ùZL´ ÉŽœiŒ ˆ„Vñ‚ç.œªs†ßíE¬_“VUò²î–å¢]³xv%¥5©3'y÷Pò¨Q¹jëš“\‹wf´}jê°å¯*«‹¼ÌW{Ô'…°Å¦ê™vô‹8O.«oM•ÍÜÓO?‰=$r—«ÝÊûJ:Ú–ù8C®â·™”*p§ ¬Mè\©ÔZU„ô?¨\n«+¥â•ºÓ´›äÖÑH¸8PU#~³ÇJ tmÝ^¦W 2)ÁDDöTÁš—_Û_¦ù÷íËP§Ù³A§ä’ÌC÷ßKSlš(žF/­«°¤¤fŒXlÈÄ0±"¥"ñ€ñXòdƒ„*NzD Í1}òë D!0œÑ@؃£©5ó4'YBtA¯* 6NáBsPÊQÁØSÍ6±ê;©$ë4m~¤èo žÙäÉŠˆ‘ \b“rÔwÖ©†•^ëÄÄI÷áDRº)dÛ·Ò(zfã±z×÷aĵ,˜V7AÂaºmT–PP†±Þ_çýsF¬d40Ñ€ÊI‹±ˆÕDÆ&ÚdcÉheÅDÂ$hPäx­üô‚þ0Ti)lÿ.kÍ’.Ï…p QÊ‹¥9Ò†hM’ÑDªéš3Y0Ryš:õ$”~¢Õ‚øáëDD㻊™—^¬c"£­ Fy0#¨†AlÄq.”Â#¡âQ Ù<¹ê–0Sh¶P•D¥&š0.~&Œó´³?4&Bó`þB8…bÃ$2ø)&Þ¡:dªµx :šÏ±ÂU‰¤‚óRÅa ø2¡SÉ¢‘˜=öZ.L­Ý/¬šáÈ,²Ï½å³¤=gÁX?+ê§Eí9ñ¦Ö×½þm‚j(^ã•MGåTF¡R³?£Ñs”‹JGä—S`z\`HË%ØØ…1¢6òÓRÄ1–×¥YÊbGÅ,$‰KÊ8¢¥@¡* ]¸üóe.^¦!Oð„k!›­óo !4®eýÇŸÂ|)·åª=A¿/*'³Èá¾# 8%}ß“+¸Õ}ߤXë¸å’§'¨ì»Ÿ™+FÿÐ…ao‡§gÒªIK/ë½4ÙMâUè^‹ØæÞ“Xôq$,.húV3Ý·×>«Ü¾§ÿØ»'§QÆþÌGÏWUkÑsO£Hé,Ñ ³ëík³Úö±Œ(82±çMÖàÉw¹ (UO"D‘ç S‰y&"{oA £û±:Êð„Z–u“¤—òñIIÝ šÄkÀy[#. Ö\Ÿî•KÜXÀgÁ1@Új[lüªüZæTWÖÛnªíZPþ8çéLPk'¨ÿ†»±( œ (‰\mÙ¦uaP¨nk¶"ˆ.ŒŠ@«FWa¥y1ãƒ×m+srØ<¸ùÕ͉Œ‹ Ž,S55‹H2ó1d¨h€C& PP^hPWVz²I61™Ÿº#Ù6`…åˆö#,9T߆8wö;›MºRv¼³æß1Wt¤¹C¥MÓ ì •Á·$Úí–‘Qêz¯éÕvè2—P=»ÔÄž1..JQ1›¨™BhBÂ’»^ïÛ—l‡Ì=x¢ë4¹çY×Äܳj5ˆàO<©d4'a×ÖK'nqèä/P• %ÖnúÊ ¥ò,ÍBíÁ*e\QtLdM#ªÊ=KAÈT+ÞÌ«êâ+iÅü«¥³çKÇìúÁ•ܦ¨õ.;U×ÞùÖþ²sÿïí®ÒnïÊÎ ZÑa\Pz;£Ôo¥%7yÛcÚO˜V…¢²qnd²/Uµb¦/AæL™‚úèÚx^Ú–dRa)ÿw'®Î¿ôÞ›ã¯ýŽRäÐÙ–‰ø$4 DB ¹¤¯gÑÛ¹OeX›¹Ì¸ÝͼnG*œâÌa„Ö¼¯U‘.0Р:¤ð0 ÷ 6 º Üx¡hÕˆx$&@à¶Ùo]´d€ÛD71ª=y-l~ô.ølßU*ºËÕWL˜t² =üÐÑMîÀhºEΗ4óùG5+Êù,]fÊxÒK¬¤pz´˜és˜‘h+]tÑʘ"ñ·*e]Ê\Y“è݆T’êhù†,ÛÈà·ožòÿl7ñ‰ÉE¸©†T@ÙYbQÁšW3Fk:h\„S,¤/:—"ŸC;•ØÂ TÅ•6\¬Ý†É”£€þI£@²N/'(*JÊYÌÉ¡ñ“¡ ÙìHª6H°L6;ˆa¤aúdæU],… ƒ¢¥ô~}Àÿ>Õ×VLßÄÁãP®Èè†8…§ŠdŒþ“—jžáâ ¢†åWlMrÒUš¶©Neda4ŸseÞÛŸj’•—x| ¤èS ƒÕÿˆ®+‚³žzˆïÖŒ¯2îÙíû;$&"cPuó,øû뮿ž—ÐÀ—ªy¤ š•SÖÉêY"mó÷VÄÓs;_G%{·Í=Ê&—mRÈˈ¥„¡E&“™gKÈ´ŽºoŒ/ݲϿ7©@ã\5L­1y°aÀ(\õÕÏwêeùÅ‘i'6U¥ÒÞn¤]æ«|adTc½…ÊxÄ—q¦$z)j,ãåÚár—Py7bãRìr*•*†‡”Àe÷ •w&Î$LŸ ^DÈÔHìøÃ~l½Ç\×m¿úâïfþ«ýöØVT»?[Õ÷÷/lC$^ûÕUËV|í¶°vžÍ˸£n9êZ « ¶“[þ¿öän¥çÛ/ÏhXvÞZÙ°÷w1­kFJÌûlÕ¿ö¦µ£[õbâ†ûÓ—¨âÍúÙŠ/ùR$xŲ¶ÞÏpm‘Ùê&¸1SʼnCLåÂì ¦,XV`Ë Îæ TÔè¦ô\€g1§‘Üg¢å„,´j㈞_+ÿŠ·.ÓïYŽ›D+ò ˜šª˜ºÐQõ]š$Y."J÷ÃþY+‡Ô=‚ iYû |‘C’ºTt=B”HÊCÔ‚­¨¨òâ e¬Àìaʪ&¨µU B­ªó‹ì  Ýa‚öZdcD0ª7_'Û(@$ØFpeXJGA, ¨T'0Z ½A%?#*3|Q‡M $á2¨D"—<Úcs½`ú‚¡²àKâ|ú7s*ÂBþSQ§ ­ È@¢'M¤¶›¶T™¹Œm«îÄh ©e†Ë„èéß’Ü_êš]•d;@œ€¥Q8èp“‹°Ýy@éæGØP‚Á§S‘ÑYö˜ˆ?[×qaRáÚvpõ’³Î»Îß]ìTÂGœ2øoS¤0xª¶½21iÒ,<®&L2p0¶‘ÑÍè’¨žÑöh‘O‰´èhN`ÃGÝ)þÅ 4¦¨<ÚˆœgQÕðžcÙ¡’âÁà–+0DC³X^éQ)B'Qp«U4ñ¤Á$¬}ƪÜê14Þ²ô:(Ò‚ãÃãs…ñ <ì#Q IGuEƒAHt°N\|ÀªÌ–0*:A€‘(5Üb€PŒ+M¤2 *Œ’ƒd“ÀXãôB`(døDp8°xt$†š,y:‰’1=J6ÙIP¨º‡ƒ´D¨L$*¨Ä-j2D‚—SPŽé—I‘Æ¿, ¢PbiÓs‚d$‚𠩏ìpòŠÏáWù•3RªÅíÝ~Ÿ~¥Q8Yl1dåѼ™æ åßy'ë%òcedõÖõÏË¢šIÙiÇØÅFâf&ª#’ËÒ-ãrgŠýº…O¬Ø‘RŠ•TôR»gDbæ(mXj¹ÿY¡Lf˜Ê¥n…béJ›¬÷öÞ[&ì™æî}dm¤ƒŒ2sWYjôÔÎ{²_oúì‚)"äm´’KÞáN Á*Å7™Q#T³0C4%ˆ p²°T°v芖”·ô‘AפM¡zÁ§mߺ¿'tµß‰ÁXBQººø¦âÑV“O:x5o­ß\nM=/#Ô¸ÇÓºéÖZû&ù­{5®}_KÖЂ[•¨FÔµÿ»ýKíþõ•ήXèÉîÊÉ“‘Œ2é±µ‚ņI `ãžÿ~ÛvÏs:‰¿¡KòŸÐÉz+©eiKã˜ÿÈ]õâî ñÖÝÜçàcrp6.-tH±d÷=4 !Ò~)Ô0<ñÈ×xÅÒ7’ñ6!=>¼‹ öžÞönV«Æ‹©”œ’.bäT½sÜ‹’L9¯g¬d(Ò«'•¶ç8šÊ™[ÐtR.“ &VVîË ²uEŸbéäÍÃ`¼ŒcŽ ~vJ²Uæ› LðXm+hy ©dCER—ybgŠ(Ãa•ÜL[³?„ÃhIß‹ °H.i ¤¦H‹m'^Ê(DVˆ„ª'+Tæê—DŒq카‘a‹ñ¨|øE¤ËFn%±§J¥#É,yãz‰@µ£d£J²n|=7^¼ýi,i*N[IÞìJK&µ‡†”¨5hŒ‚¢äHBh±^"4a¡·¢6Kû—€;NF‘'V­ –x¸É ù\&ЊÞ:ƒ-þš-ŸQæn]G¿§2:ŠÜEóªuG¬å˜‚Š´C8Snâ  ‹Š.…¶¯\Ó9råŽ*ÿ¦5û~ÉaÂEM\d’T*«ºÄ=èëò»Ø3!Ec u3C>i>:íõ5„)†ý§µFº8ܤ¾ר§—¦&(,a2^?µ°Á@þ§Û=ÅwÊTÌY JÄc«ØÉË!•" ` š` IÞ–˜ÃØ)5þÁØw!X2ð ûÄ*®Œ°Ì…Qi8[qJ"‘÷J  @ãÏZ?‹"eŒuš½[Eäpæ#RvN#D2M·#¦Ь Ãñ’nɯG4g•¢fœÚ2ü¬\¾8³«&6Àòf4Ü l¥½Wµ6 Çq·âCÜ‹ šI÷vß…’»ÿz-rØrþAƒ~7æËÊ(ï~[ â~º–Ú?º¢qˆ·èŒç‹ºb&ª´ égœ¤|Sdµnùy½ò} X²kzhÒ79ßšlq‰™¹¬VP„z/7ú^jÁvÓÍÞƒ›z´»vþOºwMv¦‹ÄbgPÁÊS+]Ñ\–%U¥2¼ŽÈlÆ‘È]!ƒØG{²óé“òEÍ{}·Å)ÉÂ8¶§‹ÜÞ›‚ðÅ)Ûšü}”rîeí½ÑaèÞ‚Û¯ºP½–‚û;§|¶Jzš9•Ù-Ü»OFó؆Èݾ‘}d5­=¹¢¾~¶kž´íä q gÝnÔ¾ülºsÌ›šÖf· tÍÓ“þö”o[' «.×ã±J÷qwaΩó÷ñBÂå ü ·© Ï9îÁˆ’ùO ³=[úx«uC3Ð>ë´¿¹6ù+ÒÑ—ŠY3wiYNŒríã?vï®ÛzY÷«ÓÔG©.ÃíW¸žGÂÁ#­¦Ÿ,^Ieº1¢^n`pTdF¸éqUXs-àS4ƒ†wr…6µÆÕX&‘[âJŠŒÉ ‘ós¶ËP˜ñp†h}GÝ—AóΗ§½€Ô^äàè–¦Â`D†X„PfKqx<”*&@¢t°©S+¨D`¬fÛ.žtÑq÷pÈF|Ê\x•S)„¥+TRvÑkÁ©¢»‡­ J WDN¸-$eãVƒÑ€ R”ÐÔKhV™tßU $…‹ó•êê‘.¹u†Bð‚& ‚š†…Àö'xbU%‹0Vˆ=D/B ò²}"©„*Ž®*É6 6ÜÑ"¡xleP ‘´¼²fãžTÊ¡ l-4Xx‚¬%#@ÊR‡ ®ÛL¥KsÌ!¡)áÄ{Õë>¶ù*Õ¹ pxú£¥ä©‰B©]4òDr2`¯¥ŠÜ»Â™OWSY1šf&(MEIG”„ÇfäÁá@Ujœ! ¥*ÉLKÞûís^e3VÅܺWI*Ü ‹H$‚0¢\/PÖjap„¢ .“º ƒ`ïÍYàEƒa‘!€ž>*2Öª Ãð„„c"¹ @ùJ-ˆgÒ5ú]0Ÿ#Ót¥D\Ù"ãçÀØX‚ÐØ|-BH„jJÆ€ïå.•}ܺ} #ãSçÓêRÉ[Eý¡~Öå@駦òä„Ú0PtØ! ™ÀÓkî×>Ñ®Í+å¿ ˜¨äM\ÔÍ\Ä @Ó#³ÅØ7}&%ƒ7e׸:Êã³õùKM7dŽ ±÷ù>ŸÿЄ¬[‡jA§×7Oÿx»DZ%Ã8¶T²;;Ô{0HYÒS))ÅÓ–‘ÏX³/qb·°ÖQl@2 · ×,Z’^þd,M)5QH(tÖçúö6é­;ÃoptÐåH|ä A7–¡0aéV^0äÔ±d<å[z 9J¶›ÝQÚ»Š“@—ˆðf™#¨,×¥ä½%Ô'ò\?Dx}R‹$»nWÓ<>\ÔÓ„±ðû|-Ù^”9÷½fî>¹KíŸl·á+˹§­Ÿ“é税hýŒkØ‚ Yå3Gè±jÔ«š“ÔŽ[¬›=hZ“ìùþø|Ò{6fíÂÏIóA¦m&9QÜÛg¶6„ppêÇ*=‹<Í$ý®ZiNš&öò°omWÀ•Á‹ÅÓ*©ì%yëåØYÕx¶JvKŠ"˜ìUQÿ(ëúñL ÂFÉßk½Æ®Ü¥1”îÏãÿÛ>ò}ú6|(ò˜ú Dñµ @·”¡69Nn®›»Ì@Ä™Žu `.$5¦׺Æí³R*¢#‰ }ýq —4>GHƒÑô£í¨µM´–SË*öMEKf75 ‡©”d°ˆ%@^* 40 A ø8 â°üp”q"±cæ‰(ï#)µ*…ÕÇ–êP³‚a .1d«F%Ç È@ãXLŽ4d¬q“Å:Œh„ëèB"?3*L§ •L3~(ëÌ‹Zvá·íC*EâÉèÙn„ÈÙ(6y9±ÂòR½Mü¯$0}HûçX(™uQ‰dW$s8CPl€h$*B1#N¤êZÏŸ_…#4…F‘sf¬;õsÙËëw¬½ÓLÚíJõSÓY:ý£IÁ¹Y4â¡ß«l²a)L`žñpšj•’°I6á7JáuJ”Q4ö [6i"TM·gä¦UÚ©[ÃîýæVµN|›i#5ã5(hœyä0 âÁdZl8&. Š~‚0øPSK㣈F,Œù²³D‚AubO$HD=O¿R‚&Æz'^ªÊ#h%Ú,Ž.ÉÉ®¼b*F$60º70ÿ“¤@öÛèPÆ2ã²û×ÌåS•®d,PŠ7I7ÌuÒF*‰Dô WæïßÒµ ç+F:^ã•"lF âÊúp†G¦òͪmØ¡Äz‹)ge~Ϋº?u¸q²ŽYU~ñ‚ϧ%i>ûZ_ £ Xš ±Éy‹É4Üz…ÇH“9æ¡åëÕ̃OríA¹%º'¸Öün³Œkå § ޤúhGg=!b¸%÷9§£Ì¦bœ ¶]YávBØhöІ°zƒ‘ ÑDÞ7ãj/n/í—LÅÇxìêsžyd¬?#bׄ¿ªôP%,3¡=ÐÝ.$y硲 [i§^Ç»ÕæàÇÑåQ?PàOl`LÓ-Qžd„LÚ†¤i½ؼIŽ„Rá1c1>œ3!†õBU™¹•NbÑZ`ŒHHÃo:¸án$ [@àúª:4*\¤?+ ŒØËŽ—lÂí×RZ…Ã2Q @œN5JÔ£ô„žHôá1Ñi±ÁÙ¸Ñ3$Ž6å(å]m u¬ž¦™Ö-3ŠòÓg–pã-ä¡)½2óUcPgœã ”·|Eθ»ÉÏÉïzo©]ñ6 ˆÕÂC&"Ë(¨Š\@ñÇ3Q7°MñN-.dpã|Õ¾k¥$HýæLœ DdÄ!00¹…³šÅ!9á‹!€z ñ &0LèTy ‘@è°ÐM4Df†ÆAÔ¬,ŒF§…͇Ì7ž¡iU^GtÖãà?茌O†èÆ 2 Œ‰ÅUcRuqÎmVa2Q‹/·k"FäQWj.1Wõ4Çò%›ª¡¾ÃBq±oF éÐhPBUyo-bÑç¨ËÇœ²®±øô#6Ôkee5³<ŠZ£çê[ׂwœvi.«—-¬š½/ Ùï·¸/ktoHÊ*-êÚœ®öy¢Éo®Ù[=–õΆ;)[›?‡®Í®ÏÆÖUê³ò´åïÚ'²…žŸOߙߢ§ä‡ŠMhÔyÒÓÄ"ÕDÍŠ,$87iÉûTÝÄPBêGµfK02¡9æ"‚¹jIÝKIÖyGâ±±‰†.Ö L@s.9#Mí—'äJ¶Ç)KB/•5‡\Z••c±÷ÆšþÞ~+u1g©…Ÿ=] eq^GÂH³¤‹ÚüCïüõÒ“³+’†SÛ .­bêëAe¡X‘Ðy °[ÈSc×0»bƒdÍš‡Ñ°Æb„IG,<º5rlLâèÆiÄиH”1¥`@±c§GAŒ¡Lƒð=†áLPT+eWZÇW‰*&–Õ™¢?"…Š»}Òæá‚ÉÈWñM]( ¨™J—ÐT´?®áÜi”_†\"šç6\ÂŒ*$SZ/Y»MÕ_ÖxÕ In ‚[–ca‡ŽAÄ¥Bl2<ëAx̹2åC…ƪƣ«tD GJÌ&l}ÎdÅ\Y;VW²ð6Xæ/2¨6‰ìÑ;åîÄ’ D·Áî(Ün_܃Y&žøb“´ýlS•ïeZ÷õª•‡5Fsá>FäVÈ)åÐ,?ò‰Ây²ù&©¶E Ê%(!µb4Ô‰ÁSe¹7› a4£iUp¤p®ÇÜ É¢k.ñ»ôáð¢%ÒÅ》d(£_Ä×–'{ûÒÅ l⮎Àn§Tžj÷»Qä:Y7 iž-)ùªÂÓ5[4$l0¨s`Ö‹­±”Ø©hf²­"í’½%†‘òsª­ ½ït°… š8 „E<(y¯5#œ¼•™ÖÇVRÝ}±Ùœ™Hí/w½‘Õòï‡Ûåz0dkÈ‘)Œ.b…ö§[)N|›pΆ)U¹XÁ7VeݲüYÃ3ŠŽÇÞŠ£K%òÃ0¶awþÔX©ˆÆ+¶¶ÅÃwTxêü´s?›³fÍ&Ý{?-&·˜ee‡† ÐEÎK§ý=R2ƒíÊÓݽ¹ÜRæ ½ËÅtåhAM¢è9×iôRö…T¢ÓR…»Ÿµ}ò7¼nùåÝÍ‹ÆbýY¸õ·^üïµæÄ’_Õu·#õ8¹–^2ëÿtì¾½7Ûû­OƒKleeÒY$‰ ÌDZèÝL|j#ˆZÐæ/'Áö÷Iô³|ÓÒªQ H¾={¶f¥ä^…«ÏþÊÕøJR n³¥ÃGW/Ur6‘Q#¹°­6·sÑHóÜ>¾d—FD¢ÊIðƒõ®£©øò1Ťé›4?âÆ‚ffQ1«€ ºs¬€Ý\¼hÀAEQ†a†qÇqÇ‚ ‚ ’I$’I$’J(¢Š(¢Š(¢‹,²Ë,³K,¢Ì,à ,à 8ÂÌ0Ó 0ÓL0Ã4ó 8Ã4ó<ÓN4ÓL4ÓM0ÓÎ4óÀ4óóO8ó€8N<ÃN8Ó€8Ó€8ÓÓÏ4à8à<þÍãÀ<ÿøïþÏïO8ð<€;³Žìÿ?³À?³ü<óÏ<Îìãû<ó€<ãÀ<óÀ<þÏìóÀ<ÿN8ÿO<ÿðóý?ð#Žóÿ<ÿŽüãÿ4óÀ8ÿÀÏôà?³€?Óý;³þ7³À?ÃÎðã€<óû<þÎôþÎðóÀ<ðóü<óû<óþ<óÎìóÏìþÏóÀ<óO?³Ï<ÏÿÉOüÿÃüÿÀüXÿÁü(ÿÊøóÏðÿÂÏü@ÿÄððüÿÂOüðüÿÂüÿÀÏü ãÏìðüÿÀÿüÿÀìðü$ÿÀOü ÿÁðïO<ý<þÎ<ð4óü<ÿÈOðìóÏ<ÞÍ4óŽ<ãÿÿýèÿÿÿˆ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJ?ÿÿÄOýÌÿÀOüÿÎNü$óÿ?ðÿ?ðÀ<îÏüð?ãü?ðCû?ãÀ?³ÿ<ÿÃôð?òcÿ?ðcÿ;ð“ÿ<ÿ?³û?ñ3ÿ ?ðÿ4?ñ3ÿ?ðcþ?ðû?ð3¿ ?ðÿ?ð3ÏðþÏãÎ?³€8ÿ<Ï<ã{<Ïìó¿ 8þ?ðü<ðìþÏÿO<û?ÃüóÏüã½<ïÿìðìÿôÿÀO<óü?³Ï;ÓÏðøàìð ÿN;³û?ÓÏððÿOìþÏ<óÏ8óÀ?³ü8¼<à8óÀ<ððøóOìó{<4ã4óO8ÓO?³M4óÏ8óO8ÓM<ã<ã8ã 4Ó <Ó0ãO0Ã8ÃM0Ó ,³L0à 0²Ì0²Ë,ÒÌ,²Ë,²Ë,²Ë(²Š0¢Ê(¢Š(’‰$’I$’I$‚H$‚ ‚qÇqÆa†QEA‹¯ó¼”Y˜%IoÀÛù|Ïûw~[WY›VÝuæ¶Ã©À-7¿ýhﵺ·’Û™›)eûoø&ì!øls~Ü ¾ìŒV‡AÚ¹Û qý¾¿™lRRÛØ‡Â0‡[a ßï_¿òTîšlçöª¶üßµúñŒ” %#w\w¡¥ WÀXåyþØîæV•ÀTä¾{ù/¿_¿W¹‘Èmó¯¥à-mK¹×ÊBZ̧Ugýz–þR,nøw¿ÆqߥrJ© +»`Mà‘HÒQèp¼T…ù½·®fÆP߇Ç3iý~ÿ—Ý–RVËö^9ýØwt#c~U…ò—þŒgûŸÐÝÜè|27–BÛ»¹™ŸhÞ2ýìßÎÜì…TÈäósaÝùÿØd¨Ö­J¯VÙO½¡Ò†f~C73·¿ïŒ#xÂY/†d#xCsa¹·ÞÜè~oæþgïoæC1kÇûs!Ùÿã †ogǾ=,†fd?¿3¯¿ ÿϘ €rp`9vùžŠÙÎóºöE^v9 ]Ël;m³Ï¿ñ‰ÛmóT_—·t;ò«MI?[B¿·„3öÛÊù’ØBÛ_#ÙѾK%kJ•¿îo÷vAIR+G+µR7½á°ßŒcnØ}¬ó/|¬çîíë›ûòíÌ”=Øÿý;%ØCà¶N™xJus³{6ëÖÜïÌü†öCí×¼·úýµ—æVœ÷÷/×…·-5#ö៎VùêC¾;€ýp1p®ˆ›²…Ûö[o–:ÝûÐïý¾nB±ÿ¾)ÿŸ»º¥% C¡ táXþææoåþ9 Ž|ó³:ýÍŽççýÿ¾ûoþÈögl?%|ÉgçËé¹¹;ë9¦Åóÿ×øZµ¡ù»›ûûnþØÿælíkÚqÌ܆|{¾¹ÿ» ÏËçæoÃc›» Çó>ùû‘ßÎÌÝ…¡|½ûvû¬£»å‡ô6]_÷>ŽÛs#Ð¥2Q–äyiµKôkÛmÍ”w¯ßøîÃ#%TÜ£Õ«÷Ž(·^[ 9l̆þüÿbž_kÚÞ§þÞQúC~]¿RUç«½ÐØå÷6mõXÂ÷¶ow÷i ó5|Ì•“ÑMª?L´#ô„!Üÿ/³…21¥ŸÇ¡/Sá¹µ3wñë[ÔÙÂÙý+[·sv÷—l2ÈïC#ö¾s÷¿Æ_(u¶ÿ[¥ª)Î[”…>¶ÞøÎ?Ëß¼”Í÷AgÙ€qG¥oKzV”3zvξwæ~ô>Ÿ „Zïås?së>™ÙÌÿ¼/ÒÕ>0È~ZTÿûe³òŽÊ[‡Ûÿÿa™Ÿ˜òŽu:ÖÝ߆æÕlÙ;®â²ZÛдo—ïÜíÈvF±ÿÌ¿ævÛ+je¾™Ý¶„{;#’ÜÈt69/œ7³£ûßûßÐc~_ †nnf[oÛ»¾§?ÿÈ_oÙhüà¯Â1¾ÊÖºw|-—ÌÝÈtᛟº¸­”Û_69ß»°îËçì!B1¹Õ­o~¬ËÍÏúÿnÇ!÷ÙþFjÎÙ]ÎØe9\¬+çd?#¶Ëmç‘V·ß†¿ujŠ´ÊÆù¹MŽu*aG—ïs°hO½}¿Ç³rkC©áþÛÖúõcM¿îåÿ/)çÞYy/æ;ùOÌ…çù?ÌÜØBùC²ÝÑŽC³/ÙmscC?/U†R5–¹Êr{ì"³ß·–ïÛU ÜÝŽe6;Óߕ헞ä¯Ý ß߆îü9XôÞDzöý¿ïþßó?ÿw'iÏaÒüÜÝß„ï÷üüÍí|2¹›™¶„3?zõ‹~íìè[­ÿ)+Xß#Z6.à®ô¶YŒ+ ÛòÿûlíÈ~vvþ_ÿ¿3w3·7sw%eyMžÏçÑøK/ù{[óáüÍÈfïçÇ¿·zQ–ô{ó?2ÛvCïy?îkÝkO£Có6‡êž¦~- ýÍü¥a(Ow«ßûÿ¶ùJp^KËßFÕá=_c³ŸYÚvþ_ò2”íŒw»«ß²Éuz”#‘ųvýkÙ°”¡[[Zÿ½¸~QñfnÏ”aXýovŽ­Qy‘Û;-d÷„~ö­¡ß73»i fd÷¿6¿8=ÔºÙÎjÀ¿>·êüº–´!ë÷vA]ß¿W­v/hÊ*Ãe¹{C¿rÇ®þßèûð½£ñÒ­ùNJD­Ÿû ©Ï݆fÚNß­ûÇáñ„7cùŸŠ”ÎëîæÆëïoJ™>ûæîogçBÿÙ}þØgþnì3sÿ{ï¿G³¿zY 糆nü/ì¥Ú´:9ÌW½ýÿ‡V…oЬ?3öùB]G;/ Égõï ¼' fô-¶¶­·ƒžO2L¡¨õŒÕNb³»…A¯'‘„ £Ô쌧{g) ÎÈ[vQÏœ?áÑëþÁXÒ;HZÙ?z5%_Vûñ½ûöÙ—¯â™÷øÿ_i+ÞwŒwr{Âû mñW‘Ùù|#Ó×TWÙ¿Os;»ö: øÚRŽ~çþævÃá¿ÿì¾ê”¥l¤óþÊBZ¯©FÝÌÌü¶^ÿߟŸù›ÒøävÏÞÛä?c}Üèî)kw~nG#ÐŒrY,\¡eVÅ ÍÙfqŒüý 7|òûÐî…¡±—gvÞ±ßïφCc<þíÉäg ;×i¹Ð„>ßÞŒ:ÿŸ ½÷!¹ ØCsûöñ†ïæì/ôo{ÊSõØÏ:VðRùŸ¿¿ d7c%m¹xô>ÙN‡G:ŸW·#,ŸjŸ–­1Y%êÕ}ÙV2ü³Î|!Ÿ~å3v¿ÙûÛö[rËß#ŽFJ}.µëù+”—uÖ¾AýŒC|û†}je*VæzýÎÖÆñT.ˆîýžz7ÉFp´/l”'wÂYþ®BÈ_oÑUIú¯=Ïu¸Ä#.Ux9KòÖÿßµóíó„å ÿüîË;e¤º•Ëô~Ý÷^‹m·dÚeu­øžKÊzëÁHÿvgõÀYþZWv3Þ+›ßüÝÏýÏÎßî†~í¡[öOö²´çß}ÎÞ†Çö9ÌßßßÝÈÃÿ·ÿ3>•ØÂ¹±ÛnæîgÇ%±ØþoØØ’p8²†ˆ¿÷ïxlªÈš8C„:­·{!¹ûÛì32û¼?!]¾Bñù^1¼!Û™™½ãû{æþïGc²„o ÿB[ ÍÈvæC>ðþ´+Ö·g~CñÕ+ÛiÃò>œw732Ÿ¿È×Õƒ›]}Xì_ï´¥½‹ti}È[ƒû¶ö{í^VW+-Ièds­ ÝßÜ„/õö8·ß?ú7Ï߇ʹ _eÛ•¨¶wʰ„w!»Ê G€Ñ†µª1Ë÷XÎ[ ÝàÙ™ÿ^ÊÞP¾wÇ¿v_ã=ËB r×øÁVkÿ!Ðúò°O,•öŸ=®/åzŒ#ûìùWmÓŒ-½Ûürý¼¯8븣‘êBj)™l¾Ç?ú?Û¼ Ÿ•9Ù¿ZõåH^ßÑü¼v0–d?7­qþü¯ß3ï AÈ;÷ªÔ‹9ÌÝÍìφþôr9?Å/»ßמ^ýyt­´r9’‡©Êì·7:‡C!p=Oãæâ~œk.V Fäa°¬´ÝžÛm•å·'|ÎŽnCóså²ù~Ë?)S¦ÌÔ¶oC6¶Ú{Ѷwüaydöuœw¿v;›™ûðØÏ;7`¦Ga›ûö¯˜§j›xÂËfïw÷ïöß>×X ±,m`è6†9Àr›‹À)²Q}ûYûÆ$*‹H€ß¬JóœŠÙ{ â€ ÀÜ™2àBB·s¨ª5߀@ `‚ pÁp€cÍ@ã .^žå»m”³à%e˜•è_dN‚áÃ+¤ÒÅ«x]rB—ÌLQòÍos†@¸%øP€G`#kƒ­ `ú´zgO£-*l!ÕVæzÖW6f¥SZ÷¦½xL=­o‡Øýán\eÕgMúJ•[›c¾§1& ØUö4~•yˆ|o¸ ŒÉÚöoÕYµkºŽŸs"³ö`¥-LÆ—>Ãü#Õ·* ñâ0”u #/-gލÞçºúÐü]æ[0Òð}OÕszv,lX  ?€cöùó€€Ý ìdÎÙÛÝP6Àæ a—¬¨®ÎÛ¾o‡éC©÷¤-ªëÑpˆp( ÊG—“t„ìÛݤ ÙÝ‚¼õ=ý¥úµ}çA~ø¶ €º b~ùidz©;M™e2Împ׿äÊ2Еk±Œ2/ÕÃWç¡hÕMº÷u£îªã¸ÚŠòÔëü©%hzÆÝw>ŸB^¯Zñƒ7¶¾…ö¯Ó¦ü-ó-T·vÞý¥FkôÚÞ×u‹GœnŽƒoêÈ*øž, °¾ ÀÅ#(ÜVõøÒyÜoüÛB§±ýÚº‘”Ái€eÌ™<\š¡h©õ×´iG€“DA B` tßb¯*»îj”?Íû?Uv>‘“ÕÒ¯Ê}§/H'V1‘ •£"*wÚ{ë‚`fÈ'A†x1¤€aû½2‰Xü‡ªª†-“µŒ¶_¶µâeë_cyWe³ýZ”ØÊߨÿl¬¥!³ÝÔÌÂ1‡[~ ¿ßÅ·>ÚÆÙ'k)ÕœèŠëöÑHÂ0ëYU ãÞªXC#{oøúqê‘yxYI‚¢… æX(ÐÊ râs¤j¯Õ1+Bp÷b[ú> V[hRJc;èÔyë/OAì';Í×ó¶¢!P\.x€³•”´©% ¡Ûk)wõ²´©ˆSñ mE,ãï¬âéÏRŽÕ<ÃrZH-å¥}A0yüϰRP@D@qJ5׋EæÎUÉG¤²±oàÑäÉ!ÐM,¼a(çYy+òÿ½\ÇeôºŸMÙ1/ùXï»üÿãïNÞ÷Ôû©¢¡¨oQ×kñÅõvÉÿ1]…_úéª[[]å¡GûN ƒáý}†Ÿb ßá+€^ð% 0¤è­W©)¼ÕZô"PÞ¤p®¬b[µ³Éó ¯)XI8´ ·`(›ª:B¤ ÊˆZz ÐÐN"´9ß)Ï®AÆ¡4e²È)tÞAre“$EW£6 åDu‡h»+Üñ+€ŠM„`KÑÈy`f‡ ±4ô€À¬\¬K™#­Ô÷PxÁJW)lVÞÚPÝó÷vÂ?oì›õË(­ímèïdoo‡ªÆbì¡’(·ø}]†Êo~z–gXOS¬1„wìz0¸¢çY©EV¢¤x˜.,Šæ;pT+Ñp  ùÉ裤ä¥mw½‹ê=åÄwSô#R=¹vÄåEf¤8_M5ØXt,œ ˜ ðI»÷N¢q:÷Ae •WQU+>lŽùå@<Àg qDwïÕ]¤(ᑺRáÑŸ=%aX¤ €!x ! Plr À‰ô$-€k„ˆÛ!8©dEÞž©#)‘÷ý/}å›JÑûK·¹“1…²3êÙN푃‹µ Ãjþ.ë2ÞTåáö™¼®Ê¶‚ßv$¶‹ÇªCO.âÔévIÿ¾)ýº³§L‹„°¢džƒÑ Gy‹´Æ))¶à€' …#=èøà:3’gî7™ deÚ=yLa Æwž_ªÒ-1õ&B_+ý·Í\ñð/€&€I`Ô.$–`èE¥õ6dvù­œr³†Ç„‘FÀv€ù:&ÆN­µŠúæ+A.FÖ/l»à£éØ‘X¼? Ì èZ\2X`€!Ð òà6ÀÅ }FŸc‹Cx“ ­µÕaXõ­g¶öÅ#(d¿ûu^Ë|2›·¾ÂO±]…NäÏ„c)~ÿrû)ê¯Â·5󳵜/…çµ¾Bݤq.%;x¶'Ñ):ÙýÈMæTŸ$TÉtÏ €­ Â` 3àâÆ\œ{•§”˜=5üËeEb`ÓÐ,aèÊŽ¿xr›]êAdÀl€Öò"^)‡Ûaû×a#œ‹Ëò敌 6C)@z€Ú¤*%fgQƽԼ:Oò98§N2Ì’…&\ Pk ‡#;€¢0/¬ô9¬ 3¹B!ú±x)&ÐB:¶ü+ûUo=- ÆO[+ÿ½vqWïýªæJЂͪZa3ß]w_ƒ¿ZC~3÷¹Él93¦n¦© Ƹî+.·ò²l™æ „? ‹‰gÒ¸9;ͳî38ظR¿@RP [–»Ñ"^Óœ_=e Å6Ü) K`—xN5oÇmÖÄü*ôž]o2pàj À Aî„‘`9 ü ÀH°‚êDÂêëa`O@ EÀ#Ùqð/@6ƒÒ0thIòm® Vp3™à]Ç"ÀóAHHðv°KŽþ&pv Àì`“Àx†Ò´ ™K€Õ4hð-Š€÷d"‰ŠGq{”ŒeŽÂݘMõ£9 k qèu·3«™ý½Óï¬yÝ­¿O³x[©KÒZ+%³úÓ¾|ò5wùˆ«ªYv'(ζ½c7Lý•Ø#„i—º p fBevh€ðL ª¥„a¼ç ´K u‚}Aóun†/;ãê<ËîYgžÈ²½:Þ£ëZÁb àÜÁ¸±à7š n!Ó‘‹Gž6ñ<~nÔКm[°ØÜˆÜ”8ôñ£ÕËÁ«ËÕ•«;8^´,†l¤LÇsG@Âcq`Ð…AùÉò;œY(}6Ké}õ¢å›„2 <Ä¥9ÇuúG÷-²¾ÿÿl÷%¿š¥Y9$‹}-K2þY7Ãå …n¾GëNº‹Æ£}_¿SöŸªË8»OÖÜeù÷äñ=[’î4𦠰HK¤™`"žn5}ÿU¨&œ²\úבÄ$° ú~¯Ôìc+ÉHSëhÛ£]cùH»~ùÝ™JR 1 ÖþÇÂÝöy­YoUX˜²ªW&½½;›—¾ofgIËKP…òi‹äxv`€eLŸÕ˜SCqè¯Ð§¶*J‰Öá)ïßvqÉ.Â{±^k>¯é“3è?hH/°  ‚¨ 2Ap Pà/¢µãß9d®¢¤ Ð~Èpî—x¥õ+W_¤ºPÈR,>ËÎazîþÞû^Uåî·ÛªÀÑ€ ƒ#@ᧃHà5ÀL©ã«{ªë 3z[õ&+qÞ‡­ÿÎϺOï×J p>Â1+ƪÅ;•Âõ…¸ÜÐ4ª€(…Ž `W÷w&š¬K¨ãë¦Ú,*‘’¹ê{):ÌûÔ$%^ày þ`>úP MÖ‚qÔT¥Ù+â C;…|•=ðÉ ;@4n–¸:öhé˯ÇÔ2Q[óëO-ú»È¨|K䃑KñèÊ—RkòèwO+óçàrô1yìîÞµ¡{tiE?ïò…ú5Ó6í¼Î|—Í=êG¿>]–ï¾çêú¸ ô(žàÌ’ŒË` p7nÊWй.oVÇíû¢¬eBõ»ÝKBÏш™Î0Ž @ÜuiÇ£ý±É7î]þø$pFÚƒ0µäž ã w€¼p’ /›Ça4é;’Þ 8Ž•Ð Dk‚ü l[ëò?9·|Õ,‘kQ²€œyg½p:N„xD;_’•4ѺÎN°ÁßÅOJ[m» ܨ”õB?§³¿¾/c÷øæ^3¾Cî£æ¬êz ÕuxÆôæ–¬.ÿ]UÙV¸“"­Ìtþ¬ç˜çõzº¯¨gájþCú˜·¾…ö7’2Á³å~ÉÄ”#Í>,ÙÀ‘ ÎÒwÃ5܈)`ï”Jo½DïMþºGpüÂFD믠Œ“ - Ô¬bÙqÑI?Ýz‚2w3T”\t ¹AÐôkàÚtPi! ä¡4@Eð-fI(HùÀ6ŒÄ¤/$ºÑ«z JDWïŒ(F¸n ÕÁ…€ÖUg϶=E¥cÇÏ@ðš©…ÃD “báDG¤ã€.pP! $€U›bãdŽLC‚‹ ð­¢²ä5Us Tuæë%˜-g܉šÆ,a%®ã•98gQØÝðÏgUiˆø>¹ hr0´À¨ˆ"$›=¶ @]ð[X`‘,E@°F| EìùsIuúܻ۰)¡œA5¨Æ=õYOwc¬Ey=µµP5l¤YÕáS&ÕoTµÔ4UɰªzTp$HÕNXñ/ÿ¦Ž0uCæ…ÂvJvý¶“i*š}É×^'ŠTDC ®I‡uÓo5V&q Ž>20e€ÀdT01h8„Ð*®pú£‘£ ® À¹9$ kÒfO*xø6œN˜t“½th‘#8¢æPgT þ¿0³, °”BƤ !ðÔJB±XáÔ])vŠaIx€bÐ;²Á- C¥)N[5 YŒVL˜S¥ˆ©ËßsÁÉÐs©¾•Ì® „§ à† (@,§ ü]ÂÏ&™‰Õw+y;Z^mÜêÇñOò«ê–Ç-mÚÎ \dzd­áˆõ3ï?¥È0€Ù×͘‚¶¬`Ǫbïd,©t‡’ŒŽQ"©täð+Æ)ñ¸˜,\cJ3æ&¼'Ÿ—_ž„œˆõb”­í{±W„ï®jð¶B•ŸMdl*­Õ¹ºé7œeX:ºjMÉÍKÃXoX¾Ñó^Ò`ôÐ׸Tø÷‹ªÔÒ¾Ž 'f×»W•btUW¥+~õ/ćV5Ô4¼a<–|~ui­°Ç 't(À?AfÀ¨p:ÅàÐn v,íÛ®´bf¶‚ºiãžKvxÖ±EÔÕ³#îÂÆ¿ö”ÿ~Ouºðs(–Íu¨­VÌÚJ3^:³_%¶Ÿu¢Ú…¼†m?õÉÒ’ÛNºV§Ù<,Ûv{ŠO#ㆬ?‡{ŒWÒ2=P¢c–”¹{„U%¡ò&MÝ]žl«ôÆñÝqT/:£Zï²üjæpÖ³‹kb\²u^Úε8àœíHq6¤ºiµè¦Šh¹Ü~/k¹[8¹n%~N(¦¸fjÇ%עԡ¢C¢´Á)Ðý@–°wqJ«,Åiq MÈ$Ýt'¢Ä“É4ØÁñXn1> ÿè‚•N¶i9%šó…}¥yÉ Ì#XšÆÖyy*_°Û&ȃáÚ”lS˜QDýÝåªÑÛ¯1“Ø }„d-hÙÕ ç Ž0X8“ŒNLªiEbÚºVÙ\ª•"·¸ëoÛ6j‹‡PÙFtœT$}¤Â¿°n©IÐlP—ˆÓ,ñn“,™ZYÔØB(Ä °uåqOŠDVÉ .!àË(¨9™tŠz 徆uScfQ²Ì¼™MÃךÂQjJ Ü•…Ý"äL0€XIC£ù ºÈ,ðt–‚¸˜ø2Ueûnî—ùË»Ãõ›æspšiX:µÉ¦ä3&¥þTêÒÓš—‹y]ŒXqø:‘¿µ2ë¶GäÌGLF—®šQ2š`n®T¶îB‹¦L˜Âv’Â%i"ÓiˆE'ÆìœBÃ\äýiM†É"úŽŠtoäDaˆPx7p^j‡Ÿ-L„z„|mê´Zn(Ã(NªhzÄ,èæ§œÌÿ n„´ŽAUgÄú+2)/%}ÁœÈÔ¨ºÉ¶y’ùù—ÉZ¯&§-\¹;Wt¦Æes¥ÆO(…£E盋t{¦ƒAÑéÀH3S ‹A¤è$ºT@ñ¸×ND÷B K,gÍ0ÂaB0“`–è~ ±sç!ü»Y­+±øÁŠ>H¹¥Ÿ““s¶0£CäEd2ÙÖ.Y­kÚûUî¬^÷.X£‡3'ÔÜYÅ7I"µÄ©‰JDcqVº´/CM]§©®I¨¦û¿,–ô;¥IyÝ·Éèíº~$\MS³ ‚}„è bé´º—Ç^œT“8¶-ÏZ˜£Ñ)Ò—Ñê5 ”'LýQì)6Qr×új2œé“â®ÆÔ6ù‹SŠ,.ˆªÂ…O,Ìò PåNÌýÉ.u ¬W.B|Y9H%Bª `ÜéiëóÉdîÌV–Þ._á«Y{Çå³~LökÊÖòŸCÕ‰2¶CöÚçÿGï8;((´¥ªsŸ6 ÒÓ»-ŬnyË¿ÏÝÍ‹­›}ëÁ¼¤Ò4ñ¤Ô³Â”d¢ˆÂÿæ"Œ†Cï-̽ˆ¤Y"ˆ¢q•ÅXHdÃ>ºŠJ9‘¢ï4Ù¦½¿£ö•\hOÆ>A—bl{07ƒñ7&ÏTuå…ïªÛià•vÜ{©ú갟—®ÞZßâ†ÒÖ;Ç"¤ái52¹XÂaÓâ@ñ%ˆ9#U;>Z}w ÅÑ5­F3L˜ž(@­  XT¬( Ã)iq@”Œ%Ñ/Ùc"ìô‰qhߎž\ܤ*>|ˆ6\GB†'G"ìùò)–kÎ2˜ž¡oˆl¬¬V½†Ï×DCT©H8ñpañ¸ÝLv‡·øK³ÕNR7h½#Z97b³v¬²FLU1óNÅH¨D>¸¬À& ìðI S‚øe{IÝ,q6A0Õ7 :8>‡ÄæF*N—Dm/l%‘ˆÖÝwL(N½Û1/°[³þÙ‚dxAå£t¯6\üØ8mÄz9l)ÝçÂs£dA.$§Dƒ@„"àò€ EàF“‘ðd†P~ÕÚÄ Zb¿nÉžs·¥w°ý‹[†‘J‡fM8œ~OW)ßSëUöÞÓUM’‘,ŒüQAáXò¶ÑÂäjן)LÕ…ë]3)Óª²üKJ@q%”Y” ÑÛŸøáÖ¿ËŠâ3DÔ›P\Fl€BFã°ÐŒêkjŠÐT¢dA5 kB?æ! ¤^ÙñR¸0„g\nÇ<Óó7‹ I†$ĵñÍ¢ôÉֲ̼†& ‰AÎH¤HÙ8Š5 e£¤Åñ!4R±1ã‡É !t pP„lXÑy=ŽQøÕq9(–É-…¥âb"í@ê¨Ì†0è@|g÷‡ÄÁ-0Ìo1¸Žˆ DZ¼´œéóYÆyh¨éù|7T:LšY¶ÔðG­BÒÖŒžRÉ…cx»÷‹ï÷¯÷M+úôüݾۤ—[æ¹¹"Ñï–Ý'ƒqZ³Ÿ™ìéJÅ®oÏ!¬ŽÙÚ%»û¶[Uý/£¾÷§×³ž6”vH°\\Ι=[/ÿ÷¥óù_ã(H:øü IhÍv¹¥K`™çýûýó»ãï¼Ú‰1¨^úlMžærûSi&§½dÄx{Page+1çl'©“ÅèA” bLMiU±\‡@°Bô³Ñzmkµís(—_û^Õ…#ú™§ûï±í+êù¯]HJ¯7qüLÁ~ùlQ9žüé4næâoF5–©m†Æ¾Ôê?(ê¯ÅÇìÂ:µVñ>»'5è»tX«J¯µLÁh ÇÁâYgU²ˆ±,ê/w_óGZ,Ûrÿß–z~ëùjNêA_1„“Gæ)LJ¹Š4]Âú "döP¸R7.Ô¾e«ÖËl=³…±E–OŸ9­ÙÝ=êÃáx(ñŽbrøXÒ¨h„¤ÚC‘3uàÇš!S–Ö|Õ ]%Ñì’TÉzI¹I•U?¡ózϦ°ÑAÁqR2áÂv.9Yã*jÕ‚âsh–¦¤OôùâÒµ¢AÑÅ­Œª¾ó­öÍv`óLùSÛrËÕjšT›YI!a ƼÒ_wÛÅp½¶lZQ6Ü}ì’—íŽb„“DkYL³ª<¶ :Fñ ÁÄÁ˜à„kÓ4">Y*&N¦^Ε.ÅÉì.@ÑrÉÕl¢ŒŽQ#q<‚Š:Á¦K‘aÒöÍTr¼Ð%¸IéÝNmõZGÆL7©lFSwÅ6ÚžJ€°Ú͇‚áÙ’ñò`[!¨$‹ÄКFæÀ :€"Bçë–r¾¶]G‡mš-¨„åŒP̯*»Y´ålʾŽ'VYAûÁørÐOÚ¢iÒåˆñ*çq eéEÜ7Ï­“5 c¹F£)ÊJÅm0»ÇS¤ó·/¹·KRª‚Vf€¨„ØmD¯”˜òèI0ÀEâXÔ(!&ª•l'0p%–ŠFâÅ‹ª RÌ ÖrUauzm3‡]h°Á}ÌtÍ %žàD<ôÅŽˆ3š!X¹¶]†B’´c2çêêï™ã`b¡2‚K剖y*SEÆÒõgR¹ <˜ðØø­+¥äh—Q ÄŒŽá$EH£SYÄ u‡¨EeB âÇ–0„âÄ^10_Ó¢3ƒš'FÞÕ÷•KˆyÚÛoCÜÄ e%kÆÕ)ºN«×Gh£67‹GÖ…•²‹ô/ õõèSþ= {feâ,¬¾²GTkÜÇ$×·W¹ÕSužé¹Ê$A‡˜R4ËÉ4Ó·ÐÛbŽû60^T„TÑ—=5v ë±n\×C-m¿*›©ÙÊYÏâ$Í]È^ùì§gÍU•¡~UÈÒí+vñH&S¹»š¿šÇ­ªËdfLbÐSã-’Ë P[$–›ļ;:cPFƒ©0iˆùuw«¿ô˧òÝzU¶Ãw>ŸWzWºôgŠþ§-h¨î·'}ìwžúÞyЇ«‹)ðÛ+c<¶ÂÊ)(ç)}Q{-ŒFx·Ãñf±ÆÓ›sÛú[¡k¾¥ „âtÕÛ7nIq;9€Ú“Æ Êþ©Z½&Ʊ_µeàô#{dïöÏ× êžÓË;yQ‡ýg.8PV qáäƒË‡-‰‹^24h³‹hãîWúuR¬;XqB÷êë7b*Ïdô[ˆôÉS¶l±Sb£Cú5!~ï0ÂV]?B Xꨕ,)¸ŒˆsP´ÛJúFü)0”°l•$Fâpä6u…Š ÊŠ‚aPØ´d¨£dü…E‡·lã·*tê•û² A N„´!`LGTàÄ}¿¯¸T‘䡞îz ~Á=flý  †EÄ X’Š *\"[.zÖ)(kM¯Ç‚;¢?R¢ýrö…á ,'#¤!ʤ ªtZp(Ä2/ÕD©¸ˆ…â(˜…¥A2~KÃ4""ŒÌXH ÑÓ&HV1Hʄԣ¼&€ÈJX„ÕiÛ8ˆ‡vHÀû „â¬'©7 ˆÓÓ›ÐH˜]´(ªtG°äx$¥$ÄÁ ÜXDà ¤€à@…PØ á'Ã9–Œâ ã`~T=Àøe–$p‘Ѽ6NRld€TdNË<™ÑÚt÷½ë¯¨>dK‘…v£ï8î9÷¸I„13h“A|¼^”®LhHå"û¤SÞ3zÍÆÌú¦–AÈÓè‰áäNŽ[n©ûñv ‰ˆh bâP…™ ÐlP)€ð ¢S á38 pIô"&CàE"DœH(àfj2 #Ò'&jfU `€Ð€lƒŠê› È;Fˆn`% €® t¥°AÆ!‰0>¸T˜½tÀ±FŸƒäÀø_\ôÆN”> ö¼/æ¢ ²¡™X0ŸÔÊÁE™ú“¼^T &çg ˜Jàð¼ò¾Í‡Wz­¶ã  jRdxñ= ¾4ÊŽœ’Î*†bAòª—â?¢Szf¬È–¤xƒNrÚFщ­òkœV®Ú90úéA <Šf¢ÆKH×cÙjšÃìÉž?¢—Er% œÙÙqòÚ·‰C¨Ývi¬êi-™ñøeŽ8)Â)I—ÖKön.?xëú¤sá_[•Ö¦ýÜQí­agTjDªãµPÐ¥DEU]Ȥöèæ»:Rô…ò|‡Y¹¹Ç>Túâ=KÚÒœ³ëk’’³9>(ôR,\þÍJ+î‘@º$"0ÂägXTtd·Cà²ÉBΫBtS–´ôíÍbŠ;?ëÿu¦â­wŸe%Ÿ~?(Jêjý»:ÎU“°»ï½i/‘ŒùŽ[rq¬å)ô²·‡C-ccR[Æ=i?‰ØOVºûnËþ9íE ¦Òw¦æ - ðñô´&’‹&XÊÊïœ--|–™ %0ܵmXô+ý'±ìöàiÿ•&¤¸°VN¸šêbõJÂ84¨<#½Ì Ð,†ó´TÕüÍqt2,¹~¢ßu‡–f¶1,2$,T‚(1îåîÇÉDÆǬôÜ'(z†ËÅŽ‹àXP8G£VeÆÖ–‰ ¸mábÛ…qxØéuF×8¸8F¼ƒ•Þ0š<É.æ¤2•%dú#R>JØlI!À–ÊSº¡7OL'*<¸gˆzÓ7ë †Æ^°níM‡hF â"—‡et_÷»‰ÕÛ·å‡&ƒßØ^< 4''ÂÓ<[¬›/4‘—Žñ÷OˆòÊx•UÕ§F;Ý*ï¥EˆÆ5!P2™À6$µ‘”–¾”½Í»²ô 0ùÂR4•&hÚ)—*éá‘Øú‚¢Â1³¹[¶¶(â§[xÒ#Gú¥â²é'1UŒá1ä¹ 1Z%˜È6\9æ øŒº˜x3…(f„“¹SoÅÒG*”Ûd‹ØÚ̹Š'z×m݃¥PPãÇžøb|U;§ÚíÙjÙè:ÊÎHÁµLcîOçÍjßìåz~¬-e ò°W¥q6;7qWhí»zúܘ²tÈ•6ß/ÆX™|/¦v¹Š°Ý£ŠHÀà7h)BiÚpbB‹¬*i¾RҚΪ©‡]KLæc/ÌoQ_ÿX.Š  è]Á4âP–DXJrå=¿¥¢§I,tá™òRóè†t´GºÑ†[/(FÒ@`¾I@'Ξ¸ WxZ€ÄÒAXz/M' iru‰ÍV+´@¹EÄïI÷(Tyû'÷Ú_‡èÌl}†ƒb3å©õ1ª 馸¢eÈM(¾Ñ›­—gèâŽÂŒ^×LL µPÙ0¤•N|Òf‘ÏJ–ÄUİÄ–$¹…ÌÐ=¨q‚É,qÆKßrïkf'µåsïšS2w7B]XÛê?{BÜó Ÿmdï¿®¸ìš,˜Äá¡8Ý(÷Êßç’Eè½Í®[$¼Pñ[¨×µÜôœ†i1ÛS܇ÐÖF&“œ””唬mï*K¸™ùmrÓºO±*ΕUÂÎታ†×»!X vAx›i@f8&ŸJáÂän·à¶àj& 2rÔgWå®g鯚·¨þíº9úÅéqJnä©(íaôÞèÙK+‹ü£ ÃF ¾n JÛð¼7•ö6Rè_¾]LØìòy(CvßþÖ¢›K&[r¯}ôñ.<<º48à(v‹]965Ú+)¤õbêµ…"íÜÊm/~·õß•sÃn•BÈ÷0Ì4¨1tGC{#P¢åí&j£h8ÿÕ\f+úþ¬¦uþz(TBâ|OÕ•„r`­†¸[|GhqAÒƒwÒ'Ë™á`Ì:qí+Ž Xâ7^žucež¸–Œ1”Ò„çÅ$Ax< IH/ByL7¨>é£p„%¢çj#އ„Æ O2 ˃J}p‘íÐâfÐ#±k‰Ò%û‚T#‚xÊÇ(‰æBxÕC4KŠåÝXÐ;D=0f²8 ¢(4–ØgW9’Xâ¤È=±‰Q2wdørP•†q¸°¼§†Œ;9(ˆ„ì4C Ãm+»Ø JQÉÈJÛ>]4…¡ÙeCã¡È´!ÅbÙ„kh‡hÑ”#G©ßŠ£ç0(&iú$nî¥ÜOw¾üfj`Y„ÙZxÙ$:ÁÀä9ÀÎ,u3ã€u‚°ða#$#âÀàOн:Ùþ®YÝÌÜûÿe÷yé–ªTú(!‚^O…‘ Bð®Œr< "s‚×ÉŸ!dÜÞ”árgáo ýòÿßд©_ž§É<Â;¡X¥r¦ÊÕ‘ÇBaF!ÄnXŽÔqšÍwÍÙ*¿() GZ”š).VáR°ÈE'••LyÅ-â¨6œ°å8"]‚€øKh—R²–Í͵SÕ®P´ðêã§×®@lI— &Ã)cã0ébtN¸†,‹>;6!:ZœA‘J‚[Ó™!# Q‘È´Ws¦NÚ+3œËGA¨F8áugRþtx(Äÿ¡%Ž\ó°™+(ƒ³AMÊÃOB«v­ú‰hkñ¥½0ôéUÁ@þ“¼¸–N…Z¡²›3 ̱‘ñ(ájèn[ÃBƒK‰(:GȺi5äe…dˆª‘9õÎÔêe1{§êºvÓS9[5Tœm)^J?„~™SF„› Ø*@R û˱ø^Ï÷.âa ’ˆÈPàÀ_„HðMƒe„E‚RSÖÇ*xgý·1ÐX!8 Z ½—Â÷WÜc|U~I²ÚÞZέ8Î̸-™ªª?×|ï^ˆ3ÆáZ”˜a{(º¦QÂëIϭ㸼9‰­¯güSú·/«Ï¥zôúUé»¶þϦf§Æxk Èh¤ ‰‡MŸù ò@¼) @Ð"¢*~FM²2¨>té?#”m9/Uu—Øã¾»êuÎ<‰+)Ê’'%, d p°\°A ÊDwP·¸S#p0ù›U<É›*RÄÇdƒ¢´ª>‰ŠAS CQrd%‹4« ¢4 ƒã1`áh×5aÞÒÍ.^FÞµ#rÿ®4¿(ùå'"æÃ".…wÇ k¥á²‚4Ä×Êݧ,˜×“a؆ ~9B`¸š¢ÅÜ@dã&/8­v} ¢´å¾<˜Úö+ÁÙäib<ó c¶â›scc%‘n $c§Í}e–ie#¿³š·1ºË~•T^ÕH¿ ýd‡Fk‰nÕ]½àNÉ:bË9îÒÈjíÚ}½Ú?4°,µÙ£-cq‰­óVòi^ß~Êå•£kϼº™ê7R££[–%µ®ìçhëªAOõeCï‰ðV |€‹„SEÅb¤B’#­"TPx¼„ÄNf)öFA¥Ú£ù?*±f=[gÒÕ7àž/{uüüm‡:½ðR¬j¼bç¬qUl¦îz·/–wl{é+¤†n©Eͯìiw–k“]=ž•:ùµ„!Û,߯}¿¿ʤ±t ìU‹N‡C#¢ðd‘˜¬v¬ÁYº¡Zåå.­ÕR[²ü¼o·Ëõw¿~yÝX¿ cqö¦9¥Ã+¥ö,æŸËæ±CŽ6Ìr)ÔzõJ´%+댈„Áy(”é=‹1´,\‰â_&L$>Є€Ý9²þ-äÒLßt'ͧ»˜ë–Ææ%Än8 CÁ)áÒbë <@#ˆÁ` *¥COèYÐNm§¡o†¡>‰%£ÅáP¢ðu§—¥uPBÍ HØ[’`€ ಂjhn1xu#‚€ Ã`è4¿ÂáÍ߈tº¡ ?(ú$%I›5;~¹¾'xøÐ>à(äI3¡eW ÉÜ 0B Þ â:()¸t œ˜Ç\Ê_UžY·Šš(k¸Å‘>[{¿Ë‡D¡0ùÙME/jßFÓêò™·ÃY!d—[h¡Ú¨ŠÄÐ…ÁÛXï?aEßuëaܸڭ<ò£Í<žÏr\ÈÇ[ëûð‚‹ž¹ÑiT"N‚H< )ûH pÑæ®õà^\3‘zAå ™bX±‰Š’£ë‹búd$¶¨àZ(dˆÓ/‡IÛwÜ´ÂϪ)Y"kE\º8I0´\K|%±0KiÀø‘PöU K°¨ƒ!aÚ‡@è ,`ÊKQ#îG^tTLÌâàÖÁŒaÇàû@~Gßa˜­h!‹„ZâbÑÒE‹¤YãÕ,C:¥ÅQ,ÂÞä4Ñ-ÈùSEfoÝ0¥B q‰8H’RòG5ÇÚ] å“Hqq ÀÞÊY^º±šy!âùÖ6ái¾6ɇÈÕÎ\ÊæòR‡¿4xçß«¯ªãîżMw"‡É%ò>M.º#e)RªïÒÊl!Üü^‡q·ÎYÓo²eåD»ZN³†!8g¿$þž.{sj‹@íTÚƒMªuGÌ·¥Þ•Dôv¬w—D¢¡äVë|, ‘X_;âñy™¯5Pœ4­àÕÏ “- Ž8ÂZ®Õè»^¶Æýߨd+¾“Ì/n‡gæ=ùøÿd?å‹ÝE¥ÏB¿X¼õ™êß-ݰQIÂŒFWš’¶ÿÆòz6»³o«­Óò4–Ëãÿ·‡möúö&™~–i~°8ò‡FFñ 0γ¡¬iŸ2¢ù9å³íîÞ³¿wÎû²¢¬çÖEñ/y‘®7`±r½ò <Ä®GsŒQt¼Ÿƒ´:…¬It¶¨`=K°Jn&¤´±¹‹(’É9ø¿ïjH=$Ë<ö©?Z–UºëæÒ8T/I¦hmB#ap‚jŒ‡¥irüÍŠOràz$ÉKˆe‡‡!lŸ &\ Êeáù(t”rHßAÕ –(4YQ¹`pb"”Ãg_¾y šá¸Ø% „ê74j¸IRèªl0 Ì­VDª“¨˜] 6uÿeh¯ ’ã2²õ$TÂãîyCe4l±SkŽØ¥Ja‡JÈ`e ²Š*˜J››0²|Ä/+xú AðgÚýâÖ!³æ«VÁ1š™B~‹5"³„­uEØŠäI˜»CÓ5*5CɈ]QÙþ'O{6gÓœL`Ä &ÀNÀõiZ¢ó.0LÚª L´¢dá˃E İr ¦Òb‘K—u»¿:«*£N²dN#0¥±ò}Q…]2ϴý[C”²I y†îêÑEO$ú¾øãöpÔä÷‹ª½ùkn—¿S×L™øQØYEúϯhWz_ûS3Õ 6šèG`|E tˆd>8ˆNó⨛-Fƒ!8ÖÏ.ŸøV_6˜|åŽUeWq1·yùvȹQósŒ´Tê—½9„FEª]qcDe‰erÓëD¶¤ˆ/ ƒÄ¤ïk¯Ü»ˆ'eÍHŠŒ$ˆBß;)úzjtÚäìl}róÆpͯdÆ- cשúDÔ”[»â’e“(×+Jµ43+ñ Àˆ| d—²Y!¼‹(›Êâ_To•"Oz<ìË•/Y% ˆDbñ¥e/å²lK‰nã—Ug”eúôÊȆ&J»g$tÁ–(¤%geo’¤[\²¯U¨ÿdG²Ž¼i¬J¢4iµ¶ŒJóÌú¯c=m|ƒ)ˆ¸üÎÇM¶Ü¥×Sà²%R9 HÛZv·whâÏ'0¡›°¿ÜÇÖö‹Ð{Ý~^(çEÕW¬Ü]ÚåŠÀº¡1¦joU|š‚<0AŸ£C(¼€zžbméX;õ»¿¶µX¤ÓY$Òm_–äû$ú°ÈÏ=gëMµ»?gŒã2”kÕÖ±-𢌱-^÷µaiÕ‹š©ü5)O•¿6š³Ù×èl’ÖWgû,̇B÷ø~ºª,D¢{–™.òׄ™…„¨TØÏÎ:/tV€‹NMYä?3/•VÕëæï-e fç`?f »­j<«÷ºÂ'¨Ná©Í‹F’­ê†Ãf’UÿuÃïœ`Řƒ:¬Œù¤;!Y}²Ý'~ÊIÕì¢î¬ýk ÙV×Z:Üm ‹Rr²1ÈŒ\ÑÅDy‘–Ž Ç)Ë^dpð>‡‚á‘0zt0 Â$K¹q[CAñ5ƒpD…ŽY:wZº ±2á)€Â#EBØ æ‹а¹óí¹!ˆ¨Ñ ¡PS¢F‘¾2ê!dC‘HS0n‹Ý&!yVs¼ TP4/>¨xù›% O2mK“IEÊZãD¦ÂÒ»¹r¢’Êtѱ1„)./^ó%:!*µ—èhÿ^&öž8‹­Š]ØhäFt™a‘¡Q‰+I]­Æ˜qœHT˜\ZŽ ‹ˆÜËÙ·^éô¶ìÎ2$À²ìÃCQçÁä6])xðù¡`Ð27'Œ òÔ€S¶„°‚ÁŠÄ/¥»´G«1:¤L7-¾;Ãlj>/8õ•U‚bƒëÔy´çàbç°é’«——#ð®#ìˆõ­äí9<‰L°D¨~Èü‘¯; –¼bôõßBèûEMÆJĪR¨ý^±‡ÓZ¼ÿNù©uI ƒ,C$§'EdC!ðàð=ŒJŽªBüÞrä°FAv3„AÄ•’uQ‰œ‰Ñi„,š¨vâWŠÚEGWV‚ £qR‡Xô• çOÅX«͉…AÁz%ŠË‘pÒƃM6åkŠé˜[5¦ qQÁ‚(xá1ТaÈZ/i¹2P¹õȘ‰µ()tZò¦³ïk×a›xÊ•æÞN[xÏšx†frX¤^oE›ÝEßkT|äÖsT•vFž¹ù}3«_mfG0'JÕœ‹~ö?ýVˆÜPûe%žËý¯Â1È¿™I?ýÙ,y‡Œl4ØA‚½(RÙ¤u¤&Ñ–<'!­þv»È˜a†Ôø2ÜA 2/K—²¯Û£÷¼ÓùI‚´¯Z½1Aø¯«Ãc\½ë6¢æÙëÕ\š·ª‰u¸!Ôø›œ›Vnù¶fKÔî‘7súffõlc*~ßhµÔŠøª‘܇öuóoÇ_’}kPªV©f—Ò;+HÃg E¤iE9Æ ¦ÁOîfcýICöS}X°ñæÏ0j‡ãBœQ¢.;3ºwŽi¥"²ÖQåÖÏH«¬…Ô#_Hët4ê¦6ë¾bLz0ù뎜.¢].÷yï{+´×ºÖK"Å ©T—³ç¶Ip_[ƒÑêaÑ‚S 2Á¤¨Ü%-a4îlÁi²‰+Ä) Nš„‡t™@Ù0d§" îzâI„ÇÁ ƒP’ƒ°Ô„iB×Ìúª·-¡ CòHrŸÎcÉÝ=Aœ\  ÀM…6_Åi)Lb¶~R…jÌÑÈ™™’¡pÁ³i™nlrê C¥œˆ¼{5hXxù´eL¡@ôÐq¢ce C–̬fDú O™$ãR±‚A2#Ã¥‡&iÃQ>2 zØ`ÂÆ8™uä¾[8âÊ'¸õÅ.ÜâÑoH¹€Ä ¢r0p €Q„5ñJwÕ- j@œŒG/)'2] kÀä/ø¸N…CcÍ×ï«IKÕFÔ/½UŒX<±n êÍL¨ÂŽ˜†ÐÕŠ—³Ü0¶6]èÐ!.ZÌ'ƒôH–Ó©ŸRF\8FÊVE³½Ík‚·§bÙD»POº¼' r»Æž]Ü}[ÿË2}Ë™tÙ–GŒ²hG?„b`PýjÁ‚|®e˜"ÐÐ@&IµZ?-”TåNr)Y³Mu‡:‡Ï¦Áö¸ÐvêxgÇØšä«34ö/@Vw (h C1ás Øb‡,k¨~+hüÒ:AÌ›0‘–"å^þ¼ÊçGbc61GHÉìùbj^«Òd2Á=`ìȦäkËP:M¢xÎJÞNÅÑ{µæùúá-˃"ãVM”²OúBQ"âkD÷,äÖ×UéìáeÒbvÑÀ­”)© ÒÐL²7ßö–’Pä¸RLdÄ%›uëôa1HZz¯²¾?‡àoÌŘ1RÎOi¬î¬LÖ+Õ ó |¡þ¤ ¨u˜d\X0y•½ev]¯*_4îW-ÖÐ.6:¡cÈÔmª-W%»œÜ>H”G¥ê·w6™-ÆJA†‚ðjD)“?’S㣅EeY!Ãäïdì:*B 1JCB4„gÜqêJ›û‘óiE;æuWŽé»Ÿ„ä¦öҔƠ]ÖúCþs¬ª[Ûûeÿ{Â[YÕLVÄ0L¢Ãи&A°†ˆqC¬bÀ¸™‚…‘X¨) ƒÈ†h2VAÁœ½³ ŠÖxzÁ`]ñ0# zŒ¦îÀV€&jtÁ”¤HHP Áb%Üñ‰8Ñ"²’Šü®K‹LïÂhχ _bARå­$04W„%fè[£Á!8÷®/:n̬N\dCD`’oÏ! ÎŒÓt%ÿ3Ä'*8Ün5wðÛ,‡Âª&äî(¬…/¤}£pʈ7x¥òÇD=‚XoEB80r¢¢ó©àÁ¤C°Òˆðà@éYРº„ãÀžé¨Ï#d¯|R¡ôˆ×AW IÐ2¯N×/yD ’…£“qt-KI"±õ’R¯¤G  ±Ã¡ù±q ƒ" ™*ÙcÉm:핤Ó6Uê°²î_l‘¦ ÷­‚y/f¼ÁðÂHfË Œ6Ht=$ Ï -aq€>×<¨Z'¡`ØšKAŽåfMY’*>m“bsa%CË “Üxµ°vX^`"d/°?4K¿@å:LI3fˆÇÃRTWÐÈC@ªNZà-…åNÀuU˜b˜7 Î Ï Fy«Ëj#¾\à_TÒ‡¨`ÑyÑBÃDŒZW |¨}±TÅèÁ—ƒé†Ü€á¶Ån†Ú.±4‡Öª•æý*åÏ¿xÂU6Ñ%L#Òø”ùmÒQÈ(åÞ‡ãÊ&“«Š)?†]TÒ z#º7|¡çÞ†|%^ÓÈ]õ]{Úeêe)Æ_3Æ ¯çr&O5÷ÔëCغøÎÍZcÉ×`ýÉe^ÿß}G|üÎéÔBö!%¬¯’¦ 5 P‘šõ`rÆ×ÆzNü<ëê]Mù:²lË®û²·í£h·íEÉ8LX5ÌID Pva×$~'¬£m•ÒLë8p¨¹#~²×š­Œî Ã@Î9¹kåå<»ºÿ?ÎmüËg× |òñN–“ñëvóê_þ°²Ö]{å¡•W£«Yj™¸ÅxUo5CüoÈ<‹ÏaÛí!î5œk¯˜öáu¤·/ªBP„a™þÝ×àòŸîbI¬:Áµ)ÂòþÏÙ¬¶ ¨bë©ïo|2øcþóîËÅI8~g0ùãÎ\Tà‚ø|°Â$LÅÙ…³ã%’žÓׇqFóÈ™[ö—­V ¤'„.™¯#›È(‚Fâ·Ý„°jÍ,’i57&«pMˆÌáR"eÒ±Õ«ßBk‹rDõ²±J#ï28ˆ¬ÀîdÆl¯TŒ}jþØó–B7é(ZFâÜVà”ÀòèHTN`’‹¢…[—Àù2O × 0óBhùA²5§"Zg¬B€;B<9\HPt;’8P|°‰s/§¤ ô‘rÑû ¯'JÓÔ2¬•H¡¬SaÒÙ• ×m’!•Sgˆ_àÆÌqøÀÕR T€n =psˆ‰`¨&ѱË4kZbâ–ªmŸŒz<Ù¿™BJ&µžŽ(ñq•ÓŽYÐÕÈ<.=ÚtéõåCˆQ ¬$)/Á­’¡ò ™4DÌÇÉOšª©M¸•6Ù*”‘c¼p¬î®é!¢† 4yÁ=ÅÎŒ&-Qƒ/š@±çÝe¹Í¢!Ü [¯¿&µ½ENCáCO³ŒØ™òi ‰¨lûíˆÎtubÝCD8ÛŒ#â 7(2žÅ]}þ§:¢K5fÕ³s“¢þA {µ…ßb©¶ UiÂÓº–Y«EQ!6Ï,‚؈¹8u Ù²QMÞ4M3ÑÄõÃa¨Od^DASë+5÷Ì¢ªl‡Góá ÚBwHnîÚWÿ„_hÒZ»©ìš•i[„à‡,ÔE)¨Lޤª§Ýw˜’wfôtÜIÅbhSJD<Ívw¿}¥/<屫ÊñØk’Nÿ;°ºçmû±È;÷¬¬§±×ÏHÌ¥:öÁJ³QUE©ƒ‘ * ¦'¾^^º$ØQÑP&‘—Ö Ž2ÐÍ'¤‘YÅø#àÓ¡ÌUÁa ±âCߊPðN%n,7¿e)æÄåbñÐ’œ4¨¤A”Ñ)°Õ"ñé–JÔ¹ƒ*uM™Ò¨ìTN#¼¤xã¤Fø×6ZoY6˜zÒw['H[$Ḛ́B©¬,^þs!°¤1áÖE c%e¢¨))(_¸XI’Ó¾åÂÐñ"ï,À'(„fàä.‹ ‡xõs“$°%?L•Ô‰ó¯§B‰+åU‚xŸ0®•OBdÄé‘Þ‚¡.•)Á¯ÓŽÝ=…gŒÉè‹MDÁXìP`¸ËðN‘ax% ;‚p˜* b!£îÙHÎóNèt¨ ØŽ>‘r‘Zr‡Gš¤œGd]°2+7ÇE‡¢•¦'>•nt:d}RÊ'}—­QÁ€lÉ L:ÅhNûz6–p9$óƒq¸ˆ=[.xPásǘ2 óîø½1[¨MU!Ñž¬ªUfvZdÊã ® sFHʈÁÀ?Pøvl/M„@‰ŠG•9(pËS!7„ ¾5Hw~‘øä˜@>’¥Ï (ߢÇÛ´DZ”bâ(\Œ‚ù8Fô"ká…Ø}qrÁé:ØÃ0&D) G†L¸¤FB@ã‘¥Ö2^é†jxT`ÌX`¤ò-9®µæ.h=ˆm0Ý0Iðþâé†Ó,{ðÿž0êél–Iùߥ[T¥QÎ&iZ’(‡”Z"QØ‹ƒr`¼ø<¾œèL™¨Å$ì"ÚÎm«‡¨¢„@Ñ1ò'f'ZŽ®0M4%øØÚ5²#Á‰î9:=tIJ+X®„êzH8õ×NŽ\‚ Ñ“¦%h™ ”&‰AèG—cê˜5ð4žl„ˆF"±,j™ Vr“Õƒ!I¢P5±± =…1ƒâãk!%Ô&tALÝKkÔ^é–²Èb“ëÊ6\ˆÒq)ñPêa!7&p¼åÉDd¸‹DÅÞü:x„áô¢i¦_!Aî–õŒ†ÜŒC|öHm•Rñ“ø«úeÓ´:G4ÈJ‹l^«iã—§¯§íRG‘˜2ºÏ—,Zàö4hÓäjù›¶¼j¶ôì8T+|É>$»WcJm§ô+‹0L—˜|ë–züÊìÉú‰Þy9ËQ‹˜éJ™ÊÆRZŸ Àvª«Þ@°¸ Æ =˜„Á®#%QMÎ1E²*« NióÃÁ“êØle(ø˜F¹×WJ"¦HÉN¹QÊUêRA8YxN5(¡O»<ݬN°ñƒ²‚Á¹Øš dãû§‡Ð ‹Œ²hT™bæÊæm†ÍDR,FCi0ÅæX¹k¬Õ‰Î‘¥’ÜTèm3¨:(‘-EÎéÕUªÛ±Å>ÛG ¦²\nný¹÷è²X¤Ò™¢|ãИx<¨€ s¤gÍ:v„«Œ±^^ äTÛEö9jš¢ìºª®"D"˜"É=tK”agW¨1x¦å.•Ý5>wqåm]ûAû¬ìÈ[3Þ–Vé8…ë¿+×]%ðàÒ«óÕa÷ ¢V›Q …H‘(+­ðìùç gäµôÙ8žb|aóÎÖ½ïþ¾­m‘µcó…Ôùe'q”& ¤¡=š‹elϧUÌH¹B¨µ¥ÒZfuuæBp²Ak¡¬ª-“Ó}E6OÍ:…ø•ôz_È¿ž–AzcÑ»öíNÈJ‹Fg>Ÿ,µ¤üÚ]÷oªüqgßQÉ!ä<ç¿x^‹=&â_$z‘ ¡ÃŒ©5"¿­öžÙŽ_Žªm㫳ªG:3Ûä/OßÛ*›“ØœPt/*D„4y®ò5Y™¬[ç+ÿæd%—߬Êä<’-E…±)‘[ÅkŽô¹·X*¾,Ò¾'¡_“¨U‰Ý}lüw³>ÃÌÉy2Øÿ ‰†&uè«Í)’NêÝEÿgý—[ç¦bÃÇân׊·@u,€@^+ÈAQFa†qÇqÇ ‚ ‚$’I$’I$’Š$¢Š(¢‹(²Ë(¢‹,¢Ì,³ 0³ ,ÂÌ0à 0Ã,ÃM0Ã0ÓM0à 4ÓN8ÓM4ÓŽ0Ó <ÓN4ÓÍ4ÓM<ÓM4ÓM8N8ÓO8óÍã4óÀ4ð 8ð <ó4ð<ãÏó€<ß<ð8ãŽôóÍ<óÎìó»;³Ïìó8»<û8ÓÏ8ó<»<óÀ;³Ïÿ4óóÀ?Óÿ<ðìÿN8û;ÃÀ8ðìÿ<ÿ<ÿÿÀÏà ððìÿðìãÏ<ý8ÿìóÏìÿã€?Óìàìóû<Ï?³€8óÀ8ð?Óû;ÃìãÀ;³8óÏøóü<?³ý<ôóðóÏðøà?ü?ðÿ<ÿ?ñSÀ?Óÿ?ð3ÿ<û?ðCý?ð3ÿ?Ãý<ÿ?³¼?³ÿ<ÿ<û?ðSÿ ?ÓÏüÿÀðôÿÀNð?ÓÏü þÏøððìÿ?ðÃÿ<½<ÿðïøó?Óû<»?³û?³ÿ?ðSÀ<À<óþ<ó?³øóü;Ãÿ?³À<àìð8îÏ8óïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÿþƒÿ!?õ#ÿ5?ðSÿ?ð“À?³ÿ?ð3À<þ<ÿ;Ãü<ÿÀÏüÿÀÏ?ðÀ?³ü?ðƒþ8û?ó“ÿ?ð3À?ðóÿ<ÿ?ð“ü?ðÿ?ðÀ?ãÿ?Ó¿<ó¿ ?ðƒÿ?ÃÀ?Ãÿ?Ó¿?³ÿ<îÏ;ãÏ?ã»?ÓÏ<óû<¼<ÿÿ<Î;³{?³Ï?³À<ðüóÀ?³Ï8óÀ7ðÀ<Ï8ïÀ<½4ð?ãý8ãû<óÿ<óû<Ï<ÿÿð?³û<ððóÏã¾<ÿüóÏ8Ïðó€8óû<À<ÏðìþÍ<À<Ï<þÏð4óð ìóû8ð<óÎìóÏà<ð8þÍ<óŽóÏÓ<ÎÐ<ó}<ãO4ãÎ8Ð 4ãN4Ó 8óŽ4ÓÏ8ãÓO4ÓM0ÓL<ÓO8óL0ã0à 0à 0Ã4Ó ,²Ë,²Ì,ÂË,²Ë,¢‹(²Š(²Š(¢‰$’I$’H ‚ ‚ qÇqÇa†aEQD<­m„!ws­±¸ }{í™×ûVwׂ7¿;?³ïgïmÁ·åû­Ë›Q²ÄœÖýÿß²û=úOàøåk|̯ßÁgwlm¯Ž€ÑÏõ!©[çmðí‚À  Ú â¢Àr&j`/òû–ê€`ðGKj Â÷ÿ¦mŠ)}‡ýÁަ3¶†Ï6Õ©½Æ`®GéG)\gëfëOíƒå°àE2 pöˆ¦[°&È tn‡Úõ½­Ù ûÁÜôÛÿzVÛ|° +F -¶®©Înà"·¥³_€°µn¦æ€Õ¾îC/L„õ¿µ»ûw©—¿çîgææ~ÞxWi–¾_òùöü‹¿ïì¾îææoî_yùÐûg_/Öëm¿óé*öÿþNýE>[¯ïº×P@b8¨Q¹nçvBÿ¹Ûcœ ÀÌ)ÏÅëzø½±÷üûï|~[n®æfþeºê+uo\¿]õ~îæUõÚý¾»¾N0xº¦ÅV¯þ~oîÙM–¿;Û¶Ù붦ßú°†_¿w7wÿ_Ÿ›™o¿Z„;í»ëVý7÷?'hu6¶ûl9íÞç¾ð¬ûþ=lË~âîßÚϽóó{7?#Ÿ—ìúÝþÿËvgn[w?/¹µµµÿ²E·µ—ÈSqÃâ ™´ãB¸%çyËóÛË ` Ë”3g(ýž9›»ø´R2ã]nŸÛÝÿê1_ü}_~»ï—Éî[a³~mvð¶í?÷7÷­ †Ãßξw¶Û/l̺Ÿ„Õ‘ÇqKgïÿÿþæü>:õ/}ÝÏ•]³±c«g,½µ÷ÛUÜÎŒ!·­w(ÝúÞü¬+¯r0ý¿w6ßûïì½³^ùóý[ÿýsžúzúýü×¾Ùßkç(¬U·k/q3nÆ 9”J„d@_©–šç~uwØ@|è m„05Ü‹63ö¶ÚPw?'ê³m¶v/®^èÿùXÆékŸW½¾u¾Û_‘Ýãý Ãá€Eà ÐsB 1(7Îý }©u¢¼§ZY¿jfgm¯ç²¥ŒMÉŒ¬œîºóܶC]¾áÍÞApŒÜ̆~?­Ës­–ü®¿—ƒ÷ó·s·>Ù¹ßù¶Î½bç_ó:û¿ùýx]ñ¿å³7÷;û_§vf_!{e6ù¶RjóžWvË ×z^]Þ–&­}S»çõºâL¼ x‚»¿Ž½¨^ßýý}ù©Z^ßûÙ÷¿ÂÙHWçZæB×r}k—ÝÛìoÖ¿ä°V^p% ŽÝÈîÃóí{æeßïÜÛe¯lü̆g>ûs¸™fëL·æwüw6«UKwëòþûeÖVï×XµþÑüúþÛhþË_óm¶Èëòùýï}⣵÷;·òþüÝ¿K-\´ϾÂߊ}ò?o»±Ì}ss=­3ˆ¬Ò¹*Ø C`Û!wy Â)€ÒÄÏsÚ¼öø¸Àò\˜ a€™äÊ;Kç¿n£ÿþ˜­§jÚ=mëuûóiÊucû_½Ún§vçnC-÷‘¡N…`(ƒ0LDÇ*ý_þÿÿ S/KVv¶¿nUð‚Éxk³cQIV“m!xS{­¯Ê"™§Aï¾=Ùû½•Ž_{/ýýýù}¦Oiö®ßeùùÛnAù¹Hëû{÷>ý–ßÝ} üì¿_¡¹+G¯ å­÷Ìì·åÿ3?¦úÚÙkó§Dà ‰Xí’_€öyµ½²ÿ½OêE¡H/ÀâA#çîCß¶_mwï|nþöëÿwàëë·žÞ=köeŸíìܬ¶ÍÅåŸd¤#›Û¾?úÖý»í—ÏÌÞ«áŸ,ëÚàîZöÌÿüÞÝÕÑøj»½ÚÆSѶÛûwòÓ½÷ï|Ͼ_+~‹YÕêoîþ_øÞß™ûûÞ¹W¿Ì>^föÜŠ™jÍÿù³T¦Â½›Õ­¶ÿ½©‘‘#Å)Úœ …@€Bµd˜“vëë ºN à`« RÇÀ†‰˜SZ˜0÷_Ë·zÚ¿;Ó•î½,Ÿ;sï‘çîþï7wËówÝÛÝ>0ÀŠDžÄ¡>7ÙjOmô±„©zWèäÑÚº—Z¥‡”¾cÆÅž9Mâð×ëïÚ ®@ƒ”¯¡—ÈOÕ™ìV…º÷׿g~™¿›÷ú¿ïûßû» ?÷¿o›wïíòöÇß¿oNçûï°ì}»Tœex^ÿöÝÝÍêõ/{oçîþæó „œÊhç)E~YÝ·Cß™˜ 0!©TH€9"£‹|27¿Wëå>û\½¾ù¿¹ùøûe²Ù{f>p‡¾T|·³31ýêYœ‡,WnømòªR; Ì¿ZßÙ¹ðÍ~ÓŸý–73ÜvP{ñðú_~Ûqh”h ° Àbˆç‘öúl+&ÏöOám×åý÷ý>¿|}³+·É?¾Ûðù×úÛ[[÷>÷Ëov½¸¯ÛWÖñ~å¢ù×\|ÿ¡¾úíï W~ùl·,ØüAH=YÅ»…)à^û2—ÿ~à(W¨U @"`]hǹDæ>rVžeœþÛ_òð{íüüÛÿû½w«~ÆÞ¦öç÷åÿÔÖNØ€ÊïÙnRí£J½oµ£xe¯ÕßœúØJ¯Ê×_¹ÅgÅ>>Sí܇f?Áp)`#„À¢’!ÍûG¹©»íW»›w׿±ûÙ¾ûwwnçî_6ù—ßüËõŸ;×íµû_áµÝ¾åäê¹=øï_ æ=ÉBÏ͵ïÿ¹™~ÿ¾uímr „êšôùÎÀ $øÞ÷ç»÷ïüFB¸†—@6=G¾ßÿð¾W2ûÛŸŸ™ùÿþûßóò—œ«[ßo }¤µòûÿ•V¼ÂSƒÂA Z¤>o²Ï}߯üÝËî_{1õÞÿëö?4~‹®áq÷~_{}ô€– ‘%8ä>´1™ îb_½ã»ôËÝLì쯿mlü{õôìþ³åÕ»µn×Ïèç^ûLÌí¶]Cª-væþR7³Ž~¿¯9æÿÝñÛ}nýŒ6õš»šŠa|%ˆ&\[½kænåûsìúeó~÷½ÿmÛWß¾۷ηìùöÍ£ãý¹ïuKæþæïçïæd=ûÏÏîø9"4ΠJž«ÒtTµMZöûf_-ÿÔ0Ú.‘h[Uáûû¹*IùWü/îæïöwçßrÿ¿»Ö†F¯udû–} ÕCø\4 (ÞÛ»}Ýýß¾¾ïµo—½úß¶„r~ºîºuvÔO“NþÞýßßÍÛ ¾ô0Á¿}ó}oqîæ^ù¸û÷þdz:зe>,Yît]Wë·ïÌŸß3:¯S?#~{ïYFMßgh9¹=œñý÷­{÷îüíÊü;¡ÿ÷ÃåDíY÷jÉ“éÅô£ejûìcv«@ââhàœX'ÕiRõ¿oå_·åþßÖ†öeÿa|ûüz½—‡ÖÐêÊzúÞù>¹­¥„ä°®œµÄé·%=Ç;>Ð¥¯öµŸl«l?•´±ÃA!Ž90µ*y¡·VÿÎÍË&ÂW‚S ¦2¶ç]Kkîûÿþß·¯»ŸÙ¿—‡*é‹Ál÷Ùg¿û³ïÛn܇ýó­Ù¿›»ßn-Úÿ®ëö½|}ÿ>û¹–ÎÌÜßͬ2³ûm"ó¡ îÞÍ£š_ô1ú=÷ïùÑÙß™ë™ÖÒÝÚ»ó>Õk¯ßŽ)ݹ¿|ÏÌÿýî÷ægõþ÷¼-¿}¶æzõ#ByYQ™5Ù8Õ»-ŸðͶÚÿ—¿ä§ÏûF ÁP"èëoiØ]ðßÝìþÝþ¬’<$à(@¼PÐK"H À%H¨Vz4 ‡ƒ†¡s)=7óÀbçSâõN6ž©öÖkzPÆ® 2€L®)| ã ‰YÚÚÊè£{öGª‚€jülð'ÃQÝø÷HÐ ¦^@° ÐñFÄ+¤E a`ÝÄî7~ *îFHðÀ) C ˜Tž ¤+õ:v~ÿ¤ûnëüÆb£ _}ºa½÷£ë.° Lq"Æhàæ<ó+p rÃ0èTŒìM [(IPÍW[œòß(=ðàyœÇ@è,À „s€QB\š0¿—róØË/yÈ‹Ôä;}6&ldÈ!–øZ:LÀ*œúaLM”?¯WŽÅmbi&( i8€Åâyðø .ò ° À+.HßÞö‡ÂðøFùkWË…†c;^îÞ ÿ@)Á€&…á/³-O–ÑM‡=ªJ‘Ntà ðIq™5iãkö´ð(c¡ÀóA±Ú‹¸ÑŸ¯WdeP €0ÀüW¤ NÀ[LúÊ¿c×/|ý½ómw¼&Aœð4>f.¦OVûÆË¥k_ÚÓ7­g}=îê"²ÓC¢Þýé^£ŸÝyæ×3ça`‰"€aÝ«+¹»wäT8¯N6½áЄwÜ×¾š®Ûv6w5ŒœýÎS¨£¦|Âc'è ÈÐã`t¬>1x8\)<„BÀ-–¾¡{­m·à¦ýý7-u‰Ë¹¶|wÖe)ÑX€i^‘^³ËKš0k”Üzº¨Ó ž§Ô+8_wbÓ…b Ú Ò4ài Ÿ”ô À‘µ"¼½¿kgŠÀ¥1P†ÔX/“PoYo¤õ?¯më[ïMpÈO°> éWœÿ~÷èÂÐôðjÎkt"âQйÊÕùòÂ€Ñ ºe's¯›Ó}+ëóŸÐÜÿœÈ$Àõ¨’& üýzÊ´½zq•sf¦RViêV9ý½®«ÌÏ£TÄ™|,qJÇ“Fÿ*HüšI‚° FA€`TX‰Hx, €"«)©žc²Éí{) v0•ÌÊ3 v¿,Qƒz !Å#S!qÝÕ2òûjåï^°Õ=žâ%ékS]r¢ÞÜO“/<ÀJÂ",ÿVG6™4$ôE À8$wJ~¹ÿ¥ûß{æýoj¶ì‚`uoµ~Õ¸/æ³/…ÊK%SÉÄ#¢([ØC¿Ìøù+Žu,ö÷ýÞíß½¥=»ì¥bº àlO™(ýÛVê×ÒÖűy;÷Ž`ðøš Cæñçµ/» aÁ0Œ}xèdd˜½{øc0f á°S%-«c¦‡š;sµ³`f•Ë÷ê ö_ü`”tè<@·ˆ`©rÿ+W«\:iòøQÚ†evŽZÿwö¼(øØ/À €"JàÚ°ðÒ0lOÞ¥~à Ñ+€ h ,ƒäÖ߆ë+Æõ¯ßò¾û­ÇšxA/4‰rFÏ¢Ë>wËoñÑX4ÀR‚àˆ€"ÀàF½êe€ñ¶P»_KŠo¢¿Mÿ´r¾kvb¯‚\°3ÃHË…bðš$õš[Vj÷µö Úî¿y­ëïç:±¯QÆ >^q§-øá?V—»0U…Õ\Ë'‹S‚&CDVN&ÂÉ]ÀŠ 6ÃೊNì!"D¡ý¯¶ÙöÊò’fYF:Â/…ÂQ0'A¸‚l @:ßSãÕUédÜSì›R©mêÅ»îkï'¢@-à=‘P.(Š€ŒÃ2¥yWŠŠ1o¿& Ð@wb¯ÎÈ:õ¿qùŸ÷½òêYpMÀôˆ•öÿÕeÅíÕvê_9bL '®¥G©M„btÐ}}­wel§YÊd¯83¼ M£IÆðBþ™5­×r÷µ«kÊu¶ê{?Õ¾EÚûÿ,ÃL(È uj:ùg{fÝ{£Èزä@‰Pj;ftÈ' …Q Ð  Ï>Í58¸ê?->F´þqµ,÷ª»Ü0³˜ Zh¸*À£¾"bA ˆ%¸gLB9vŒ>pF©»§-A3ê° ¡ðH­©Ð³0± ¢pJÓd°%à€©`ˆM<–Lñ`£€Á`ç€Öï™[v9Ÿû?·ß-¯÷ß+`ÅWØ`@µ½ì@ÖÖž)ò®Ä\@ ÖV)¬†ß”Ývu‚S« ÿÖJ9Ûžk7ÓÀ=ÊAîy¦€IÅ ÷_\­nìŸù“×QóVÐ×ü$´R ¯_>¨& Í)YÅ¿ú.³|?)±K€ÄòU-/hð[ÈAlœ!»vxù*æ IÕ¥²¯¦ã¬QcÆæª‘xpB€©‚<&´`;#×O>„€ÒÚ`æFh­8iêè_Z#XíãÙënWð ðЉ^°HÀq6³­¤©×œ€sº  +oÿíøÿÍÛçæÿYý+ѵ@Ö‹UŒ½1~ô¶/F»Ù²a`eT(R9™¾Ó¼ÊQj¥ÏÜì:¹Îš¥)8¿ýÝHÀ"Ĩ °'F7 ï„#ù¿õžÝÿ¶¥¥:¹\…_*¿k9zŠÁ0„-“;V°žN¶1yP¹&Üq8Úá]ûØx0ÔÔ 1 ÒK "ÖLx”C Á¸8pÂj=r£@2—  `ÜŒuš€;~QyÓ@‚0\H’ ûlESžÈQx²AŠYŠ#Iø‚[hY¶h æQtª›?­´E3w¯[¤ XÃ=Ñíì?±ý—Ù%ò÷ñúönVá ]"Qò29,%NÜO¡D ?&t>‚ÆW!â‚éž¼‚Pb ”UCÈ«~„ÜuH<Æ;0¹8‚6¨Á”h*‡àæà ›ßeö£lV1w«‹ÎX¦t„ÈX-ì,$@Dé€ï¨=À´2/¬ÐÂ6ìÉ9RRT8Q4”< `=ÀS”Ø b±Hq†Ñ1šç ‰âñð¢Šáóq}!I €e¸/.fj)U3hZÝø_`ä À|¼V­î“ÑdPãiØÖWEHò7¹uœWzÏN=f™ÂáŠ7R$›¶-ß0èÄèÈ$¸ ‹çm~ýï½~¹mïßíû[þþˆÂ}Kíª^Öz­Çdˆe¢7Mjf¼5ÙH¶i dè­úï¸ôqnzÛg]úÙýWŠB˜88Náhñ:<ûfþ_oæÙOÏ„;/Wעܨ“>±ì ²*p 6YFæò9Âoœvq@»G wø“à‡¨•(TàyåóEï›E˜ÚÀ }ð#€ƒ/}V 'ìØ|ñ¬PÍÍܾŒÁ¦Ä¼xØèã±8v ÄÖ^æEg‡U3Ã[%X€Ú5ÒõÆÛ!;j}ÁÜBøÀ¿KWl>bÃRPk‡ÀÇ{ƒ£jþú½öº¹™}¶_þö}ëšô(œ-«óxP ‚ M€$ˆ‘6-Zõ|&á&‰W±¡l”&qgqÖY±§¦æ¥å€ÚÀ*à"„°ŸL½zð<$ýÌÊöîW±û\Ê[¯–å!'…gk',XZ€×ÒDA*Ý‘¹ô‚“ëÕ½ºè¡w€Ë×Q¨S H@Yõ@lÈmïÏ8Sô?—j!˜Øà.ÅaŒËŽdÔgʃéïú|Ý5^r•šáP#¼p.‹ÇsatiÒ…UDCh*uTf|é¸^VìpÕ3³—u$ï¿n›vÇèî(ÁòµÛÚ÷µòÛ}Îý½ó3ý÷ëZø(D^؈ ðBA €@‚ƒ|À0CÂÉO+{'âÖ“ÎuuŽ-€ @%8ú«š]„³Es¸ìÈM0­âàlNW8M=à”E§LW·ò0Ýó¿m¹O3Z¿Ôb{Ü- @Æ$,O ÃT¦°‰º½:´¹©nRëm«_µÀÍÍ„ È›OÕWÀ /qª’ÔÈ”îe€©B ““M/q.d‹Še ´ÈåÒ¶‡3•ǼÞ—c¾EeAG€)< aH5T7: p†5êa}ɽß,§?=.¿|x‰KÜÞ qóI@È£ªp8@Ÿ—;z“ÿý7ªêÙ¿l¾mºz=Kh·Vp#©­`vÆÀ  ø°€ÌJ^€»«¢ ¯2ÈÊh,ø@ǧéRiçɼ‹QË] ãï9( \ÀòKp(‡€Ó ÀU†ÁMR®N÷¾°ë´§d6r€†@¤B†@p. p7h4ß aˆ ãÐðJ€¨#‹ÓÒÊÂÔwå§ëx‚)*÷Ã¥ºÉàþç § ¹¾:]24+Ëúe*”Ò}p¾®æô>w¾3X}í&µŠs¥ÒpôÅ„€t€Àt4; p¬Lâ÷Vè.åþ‹Z­(ç»'Ï ™^d€ø°$>ûoõòϽ³~™¹ßïìÛß2Š™Òî™›^' M¦6„xf °—’EŸ•µ+örëUÞëx€Ù„;q;ªêØ@ÒM¤ì³ÔtV^ à/úÕŒ N¨ÆöýëÕœŸZZ“¾dïÖ/U“h€±°išqyx/Aðd1$ä¼—ê½U¬¤Œ±±Á òäÇa~ßÍ¥¸­À]P+€×"®“ñ bWË»óñPñhuÅf«îÛc]³ïŸðÞ¼5˜«gÂ@Yx¡À+¤ ä0€ ¡&hQQªãЦYÖל;7þ»]M9@Á–¬³¡Œ@rÒÙ·½¯Zæ_üËeóws¾ž­žbÄÃ!°òN¨ø$@(T<¨$½[Ñk+zÅ[ç^ ™ƒvIGwÙO‘8Ý!jÓP À?y ˆiL Å!˜$Å"!2þ_?ÜÌÛÚ—­ù\ÌHÂçÈ<‚àPÀCðKª a˜;ܼ pJ (ú“}íÊP»}.8¸ Òæä EófѼ?¥·Q» ° &ƒ°¼â+=->g)iɱ (EB¾IL~ïÆ‹g§¿º¤m~Œ1WR¡¹h¸ Mª˜ ^Tgpox}ò—¦cí±ö9®ð @:(ømtüËþ™—ÌüûÿæÇ7÷7soÿÿùô| |Â1æjÊôt ð Àtkh Äˆ"kkívŸé«ÎV÷ênzëÅBÓÎ- RÎ%–×1ÇãPI@t>¦Yõ»áR9 Z÷ßUV¸ß»_$Èb ˜àò0XœÀHªTX(½GÁV$äã¬÷H]bvÀ0…¢7„J§Ž8yC$§f%ÍX”‰EÁ@áV¤IØM•èpàz­¬'” mS xF<"P ¸'“PCbñhFŠÂ<Âwo4n ‰ƒQ`˜€ ò%ƒp-HÅFG¤òŽ)¬(Æv¨n€œЂ‡ŽŸ2uâʶÚê¤P Ãòpd©:XÀ «ž>?>lZ<U]ëÜ6†PÓŸ‘ }Â@”< Æ^%““êg‚,Ðt›• ƃÃá"hÜ„ ¦˜àn—ð ð\Á±áŠæ]/pO@;nµ¤áU`PøÁUVÐî–& t%©Âh¤¤@0WVË•6xøsJ° Š[eѹð%&iÚ#›DIÑL¨ú ¸ €ô˜@¶¬FêùjØ¡¡ÂaZƒç‚ R,\ Š“9@ÕÀwÆ^Ý?€.:‹,p\<G† .!,@^4D(™4hJ\R|S 2«‰uõ²0¸J-öH8Èrm%Øn¸<òÃyhå·&M¯£’R@ôµœe¶Z “FáOú „tµx)á1»¡š„ìGhÞ0ð~À"Az> Š4€=(=GŸ„´á(¡Õˆ e€Úkx¡Ôð¤èÞÑÛ}‘ (C‘C *ÉaQ>‰Tô&D_0R’"t(ÉÄ‚°eióï|@â„& ¬ pð|p…eðK6 €Wc‚©Ò (Dò€ÖÚwtá¢μà¬àW`†À‡l\Ûß{Ñ%-ÛßS±‡Ï ÜŸÅ3:`ÃÍZôlÁ—ÚËÒ×ÇÚ7Ÿ sZ”Â[•Ñ»Jf$N ݶ.¨ÃÏèò†¢yûæô+ÒÇÕB»»­xäd\L_¾ãnAíqO Nt.S œæ:ÂÝ (Þ#0™5íüD¢'¡œSê”ô؆C­'DZ¹úm.Òåp)X¡ÔÔö²K #á“r5)d×,3rµ£[k—­7Þ£¬gl!'¿#¹MÚ›†q(ÅÁ1´7ìÔhhž«,Û†"¤Kåºß‘Ç …u,³2@Àð¤4“Ô³Ú*Z£·g Ô ÷ä×l‹aûƳÚQ<Ó[›_NÐ}SUR(‘¯¤°Oξ~•„µ-HbÎ']>äѪ_è_£ùß/bø¥m*óQ7UâiòZ÷ÙKszý¸û¨L.¸9pa`4 ‰×'wDãÆLy••¾+÷Ûü”`QEaÖ§Jô¶KŘ]Åÿ4q—EÅJÔ¥ã˜h[r¾,ô}¶ýýxÑ…W|™â ‹ÕÈ^ ]ÇÔÃS/4”Ë$ôŒ¹ûGûþf¡‰ÐÒá`|Y§.>c4òÆîÿè™ Ùœ‹KÍÄ… ƶBÌÌ4o/0ç°t0¤…*èq–›;òыþf©qÍ™Bˆ"‹^^Ñ_„=3Zªzç—2x¨ágÂÉÄÀ”±baÀ–>L™ftQ–,O]t§•™:èO–#jÉ•±è£P{G'y¥Ø(Õê‹…&sW Ö`bMœûÈæ>Þd¹ãƒÍ±»¢q¡;Â8ÙÑÚäÌ‘8ÅÕŒZV³ì«n–q}úK'Ö«^›ÛäúÜÓ¼¬ò9¢\¿ÉÔ'±u]>] ªçgcöW7ª¾;ê·˜œîcc“´|ùÚV2tÓ&[ ­E­S®Ì‹9î(èq@`˜~(¸l3@üÊ)ƒÙ›xÙÆ] s 0^Tê"¡<¸h˜¶…ç•}Úmÿ2é(>‹BÏ”• ,†¾zÁ D Pèfn Ò¨Œp€$ ÅB¼ÒØ,.AG†'Ïš=<ˆ´¼7 !á‘ø ™MFÌ4šb¸Eç ”Y¦ÖÆ›'XxUM}õº:Íéâ„?‰^¼D³ÃëFƒ fÁ¡‚BAÈ¸è¡ TMÆQ:!Eæ©”Âá€NC€ÇÔdèÁm¥ãºòñèžN:F\œ<›õ3Ô²ê*~è\&HRÛ Âˆ'ŠCîÔØ¿¤´5Ã1·"(¼M¸‚¡i¹˜¢C£ ¸4\ÁÒqpDªN_!8G‹—3Oœê6‘¤‰È[4tàð|p+먜DTÐËܧý¬?fü^*§©(=Ί™Ô#´âš»õ±JÆ´‚µ½rQ ÅÇfÕD·GHHS!hu†ßîl¢R#°TÛéX—r%v›¡ó¨¨Ã(•µNÉ(8L'„!:ÀâJ^©õ†b r„¡þÝ7׿°àxp7~ûÜÔ³}{«ŒÄ¿’Y®O+h¤’[Ý×§ìJµ´Ç!U¬¤Ôþ8ÓhÒCaE°åG¨eæ/%™ØÅG$Ýdàä/!Íu=·œÞù:[ÃÏOÆÖ•o*?bÿŽþÀj³<^óºÑ£¯ ‚V›<­Ó-yþUð¹¼!ÕfiæâµUˆ-Sžšg~8Áxºñ¸ü·wvýE½k«s½×Qø£j6òæ“U,&”~⸠,ô7 bòÏøÑ~0éŒ59B/ÈFÙ°‚5Ò*Såj“áGŽˆD±D»ÝláP¬çâöН#ª|M©±žOó›îýü­™T¿ºæ#‰_&£{<¦#Yë}·A÷S Ue!¨Œ´í@HRÚykið]4nÏ?®¥¶õnøÊÁ¯¦%ˆí:yƒ”f:mW†ìEmqt¾iâ(N׸ÚbÔõNêvb‹æ7¡ј-j·™Û’®0>|t^2("¥HAÒ¹ðj‰âj‡GÌN„M̨€±–žŒÃ‹¦Ø:]çѪp-À¸K+Ì*\——¡#lzÊ=y$œÜjÿŒÄâÃ¥Œê–‘Çû˜j…0׈ð#´J‰•]ÖΦò¥$ Kß6á2ô8ÎÆyAV ôì 5Fœ7`hiªˆè|u‹¶_q–R–kß"HZmÁÁº&=“ÿŠÁí°:ÛÛê›D™¾¨hoÕ6QÄx‡’ µñ€+– œ…Ek•†pj„Ü ú¹³MqUªlZ}!Œ½ FhM$4Ñ™›ëÌݶäµ0=!ˆœ` §2±1Ç"£2iuaKž“Í6±ÑÛ¦HÂ4IÒÍÇn>›œÃ­©€‚£Ù5JŠ‘­ScLb{9Œ¶öÕ©‹r¶ÔUŽÑÔDðæNDu[ƒä!X4’c¤F nŠZ*$/ZŽ<™d¹½ª,NÄ£òj.„Á⳺"µ—9Z3YÙ«'eJÂ[v6‹Yéœ#.NyÓ‚³#!l ˳0‘˜˜3¦Î¥¶ÙÔk¦|\ÜÌŠ¤·5—!-˜’ÀNq{2±{„ü;X¥*URÕ‚IμZ2R95PU%[ƒyZVâK«c¯®¥YŽO'­§E_°m .Z¬®Ÿ³sºqæGî,¹ «>@Ø}qYÓ˜>ÄàaÃN‘*§*­àƒvÝÐM¥«–´í­ýEîÄŸ·‚ z:•Vï¾B–»óŠz;7v¿X{–ƒu÷š¶¿õ£H¢‰¼i^Qä7{XŠ%pF×щläH›%ì7µ”Ý´“âVƒ¯#“ãWæÓZßGX0âG&ú/Ý-›ªZ´Ì.­˜]аˆ€vCª‹]6³z:¤ØÃU¦`±Pî'_%lþv_,—IÓ4—Y馣B™…FÄÎØòªFÒ_hë½XUMµ3¾LÛÔÙÊ;ÇR ^)¸µQIxˆ>1¨uaI†4ÇIñŒ\Yæ9Z1ŠFiu§èÔ-‰s-úJìÌ˘”C¥ÏLи¸ÜG®B±»y¶i^žSZÖêúû7ï¶|æå›öö¿M¥«{äv¹IÞûÏøzܾÅõ…#:'Xºež(‡\*ãð±î^M/î+s”]êØÍ!ü²w£ô–EZLáØH°9B8#¸(ÿRÍ´„έÍÕǦH5J'¸äÅ“²Ò¡=°ÀÑS„òû1s…惱j'0Ü(ÇA8Œªi"DlpH#b™%1ë DQŠ‚˜JHçϹ‘”ØD,â4ÉxÀ͂ғ–à­ VBÀ¥húg9\`)‘’!)¼ÞCR½V¢?!=´‰Ñºä@ä ‹…‚*žØä¨ßó<¨U6-"wÛU¦â:5]ƒôsb“¤ ¡‡œHZ(ÈP8ØÉòF`3ü^"†Þì[t$Z(lP@\èž\Lœ€ö_y%ÚD˺3r€Ìhì‹Ã#º£ÏЕtƒ!øåÄ$Bž j£Q«ƒâà"¢ÝÐŽˆìA]Ã:n: ƒ @8dm#1u¦µ#FÌ‹‰1ð®hÛhPa ”¡‘ÝàpÄWÀ¨xŽDI7D^„°K/NZ$ƒ‰D ¢B*-Ø)‘•:…’Äå-Nã³W Šº4¯(J

*yÈcoz–LÁ¶Ö¹œ#lêÿ©XF–ŸX{Fl1]7™eT¯»ºMÆš´zÚ䘻+1%è–ëä'\9EñTÀ¥¼í<É‚`Ÿyñl7/H´ùÝÅœ(ÖÒnÙZwåTjðtÖšpÏ”£ødÚÖU®Å¥Ý~n Ö­ÉzãLM·µX§{wo¹‰ô€W ‚ð‡áþ‡òSˆkŠtWä]ÊßaêÕuX¢»ë'ê:ë°¢Ô[Ø„cEl§¸ªNéöGÞ{TÅå~_Ÿ3.S2ïÉb¹õ'©ùšu㯾íÔkÛÛüuk˜åüÄ61øðòc''–ty; £$L¼a„ë¼ËCéÇ×[Œ:{‘§8yU+ QK6p®á ädäƒVJ´¹†9”HtÂ[*óô.…áPL ÁˆtGbk§m,=ó¨x…8¬ë¬ŽƒalcfŒØèªä"0„L2 ×5 y`iÈR•7c¸; „BÑATN t˜Ä|ì+… šPl^9.(ÝB7HWä†RtDŽۊÆhô£µÑ-0ܰJh®qs¦ÇÄ ¸L§ð²|^nFÑš„½ Ó [Š…8TP„è©A<ˆbl6Ä~>F d=;/Á`euQ¿ÏžÓiã¶K¿ËZ»©ü€ãl†DMëuQë›uƒK6xbù_ŽìÞºˆ,x.±}IÊ’…óqEÇQ}’·Á¶ÓS·ÄžTØ~>$̆‚Ð¥ ê''/¾D\+$ñÏŠÓMpƒ4õFƈdLéJȉÒu¾J¹—N’/ÓŠ¶¡j¥…,•Þ¯óbò3®Ì!Â1í¬ fÐ ²V7€¥+¢á12÷|_gESM3ÎR¸T& -ÄÄAQjÀø|HVpAˆ«‘L@3"[ˇÊDÔfÑ“ ?D‰PÂúiêÂ25!R‡"iñÚc“ET­©zÜה̴9•"`f²Ye ,‚ê .tfŸXJ. °„2Ä,nª6/ -¦ñšÈJ‰ðw–yyÃ%Ç‹‡n’úÆ@ø6gl£Š—͈u3Qiÿhª—ˆó^Ðkv‚ ý±çŠ zã×!yî9sújÏZ°¥ïCTÒ1%£ŠZÖÈòé×±µãÐλ†SQØ–,%¼Ñ£eS/Tnh0™ ¸–èdl±¥qŸsäÙØyhÅrGxït}gáÊš]#÷ÔtÒg“k7Iåg„Ôˈüê‡ôÞ›²Ê+CP1‡ÜbŠ­²»Ë Žb‰25PÙ¦crc÷*Œ·«†Úã­=“ʼn`Ó²µFÌÐLE‚ªé©ê»U•wzWÚUwî9>ÍÁw·CžÕÎ,ÜÉËÕáj¨Xu8j[ýo÷þ(…RØ -#³³û﯋Ö]ªZê:uç A¬FÒ/’6šŠl¼\qȹӬþ÷·['Íòg§«P´ãÖû75‹‡ÆÄ7qgUv‡Í¨@œD°¸Èü~ÚlWm5¹K0õµ÷ZÛhÐÌNàõØŠøõSU‹®O¨KE2ußï¯t(µVÉdo‘í~«SÖ^Rí“Ü[ ønì.ëÙçmÌšó>c˜Ç½÷{Ì:aæÝ"‰ˆ:b´`”Ró†Võ0ºó¼-–Ý¢Ð<¬"þz¶qî‡Q …`°mYÅ,8_ö^Ólؤ¬;* ®ÝA<`œ>ºX8IÖ-rhˆ0fAmsªHÁ—U'e~”±‘Œ:~C:‡ç<Ä’øÌwƒ² Þp¼“žŒSÁFlZh1^ó ÐS‚v§¨' .×D¶ƒQpí1M´té@øX:#ˆ ¶¹òp~\ñyÙˆó¤Ka P¸Eq8åѸµÑ>°Ô< Ñ€Vf ‹*düáaºp¿×->–ERpÌÇvÀÞ·‰ÇGÍŽ‰K®: @÷+ŒãQk€Vh´…âzÇÞVØé)·Sñ²æO¦ˆ% %f~ÌÇ[ÏO'ÉfÝ Ød¯Ý–j—wLj^³ I†‰”~e‰Ãïc‰ÂÀa-$³ùÝ àä©ñâ‘hH@XˆpFX¢CéV•Ǥ¡É$`†»4í’`àü 6C6’´âz; L×™NcTKÍ™(¤Òqj-4äw–òÕ…ä£P¼'·ýS'°ˆÈî ú&äÇGFÍ£„’ÜäþË´`¦DÇJ׸ȹ—8”á±õÆd¡áXý×`yÐl”™èh´±šz²äRŒ/wŸ|4íñÖ+Ô]¸]ÖˆJѶ”€Ús„Œ)u¸Ç-,×FEG"$¨V<<дXA2!‚""ÃHvDòÃ呯W£ë]3Ð3EòÇ‘ÈÌPx™ã¸ôs葾޹c ‰¼ÐÕQ;DÊŽq tá—ØŠb™‹p>€°Ì¥¿*D…0¯Høz i—윶Ád¢Ø‘§$8nd8ul2ÖN‰r¨U„ü9 ¢°sá!•P|¦ º(¡*¹{ŽÓ4ÐýD„$BÙP@ ¶ ö6ðÅ>²Ä£ QŠOÔÉbÅ­j!<…â­!»¬Ãæ@œïÓ+-S2߬‘E˰t¹j2£„Ø\hPIï[hb„qpÛ^Ÿynú3~fÍN+ °pUˆm–?IéÙ˜mÍÈuÝÚYHÖY óom¬÷¾>Z·i©NLÅ?(`VÁ;–òÛL¬â’êPËŽž€õG×3Çøå µ)õ„žÜjª·U*¥+ò§]w^ÙûôÖÔLß±„J¶ëõZó]ÔªšÓË«¨×õäRLýŠž0¢Œ>Y;ÿ÷±u=XÃTéc1Ƭfçžq£‘tª·Ža|ÒØp™˜¥ƒ5ŸÖ<Ìa+lyröRª½l[–åc'Êñ²µó-û—»¬Lǚź/ì—ÊÒÈÒcbõ1Š/cpe‡¦_RN¯s:Øñ¥uïr Y«¼õ\3&<Í]S¤ àÈx:T”|AcÇ`ù@èè6¦©S‹õüÓ£ó!pé•nnöm87Ï'\©)kÆ•F¹ï߉ž//NžHuT{’rÍÖ|7̲ˆ¹%š½ëûýþþ†ÂªÅ\Øne ëñh(ø|¥z»'m«†>J?zréyŒÞ÷štõE-EæL±²MÈ®ôf)ìoÿ˜”ŸaGþ··NérìÒ±5Ž,5H2XhDXJÔ P¥IÈnè°œ6 G%a¼®CãawÓ‚"Râ2”ÉÅ®XRjfM»-c Å<9à¸ê¨†išãFHŠMÀâ5‡è•á TPÄÖ²à}1§B#•ZU”©kGÑÙ\8õpšÍa–gˆÌ®*lŒ;2ˆˆJlgã‘ÈåK‚¡)”" \+DSÕ¼<™ íÍMH‡„S"n`ÍH"Û TøÆö+858‰‚ŽFÛ{è.¢ÂIƒcâBãã¢Ê7=và¨Ëj»“)œŸ\L*[— ·Lˆ2ÜÄõiŒÌÚëËc% J2‰³(`it´~Ö¯­·Gbâ\#'Ó,V÷ ¹Ðx'Å.UgS;L™›˜²!àÄ+†²qnhhq£I›çÂÆ‘‹ > ÔŠ£Ùy%Ç|k¾®ÝÊÞ}ÐA'¨5’¾ZÚc“(§BâQkÏ+#’×-ÖX•†»b ØoGXRJ\µUö5NB±’–‘0:Ââ4uHFÖ\„ù³œ?1[‹™Q•õpàŠ%bZ6–4ÏûV½%1æX±ˆ(Åþ ÁŒ¦fVk•¤C…Q¡~7sš´2´ä@n-]%¨BgLã&B¨€+$Äï ©g—¿“Ù30ú*_œy½(./NÚ)•ÅRc}³X¶é,t–}s]ƒvqBeƈ ÞU…OfÑ™£%UªÙY~uÓ*eGÒŸÂ ¹ã÷’(¡ôXÕgÓ‚tb™‡´%2n*ȸÉ}K¹åçœÔ¨URú äTkÝv7¶=¥luÉWpÊ'ã°íqI£ò"`D= Ž…OîÞJ`² ‰Ôù‘²Ó»Ž®äniV ©}ÞQD|b–Ÿ7©˜)U%~…Ç-jÊï&a!Õ݃LïÂæhÇ’× “„DºÁߡǯ sJK/D{y²{#®Æî»U[” ÊŽÙJ›‚Ôm[°6 Ø¼ã€s[k×êì†oÿ°^.l‚ZŸ” VÎõrîÆ«FïuíjŠ]kg!YO甽¢•è½5þp±šš¡¹’øÇÈLQW˜”+u1×ÑÙb}å1pqì"Óz¼†÷959•"ó”7tÅç+Ldo5=íª_㸕bå']¶Wrýûòè÷Ké}åÊÙlWVµ£Çi®/ÒÞíÛr˜Ç›²Œôã¯õ®Cç_ª$²=HùÖÿW³J;Ûþ¶=Wv”¾N)t­è,eH·ÌŠ†ä¤Ž®rª+ #€¡'eB;$d¤!ØI„8g‡‘…ä#BùÖˆ²£ÖyÈ õVJ^iÑÊPè´7ø4‹ †ÑãñGG †¨PV(RÉHn.ÞidFE‹ÕÛ-/8„¡Äµ§5÷¡±‘)yàô€v>xÀtºË:Ñzv‘¸x"’§¡M¾»|É€¬. 0Ð`gt4¼”eŽåvÊêH">/0‘è†Ë„’‡— -¶˜µÂJÞAL±¥ \±h¨:õްx扄%KÇÚ¡¡kKX!D`,àN¦cÙµ‹Ì•Z­¤µUeý8%•9aãíd®ßa=¼‹ù³“ãD™¨ÃiuRGHÀ¢Pa/éê´ú›ž˜´"&ÃØ!Q#-6: Éù¼ `=úöp}p*Ó#é0Ë›Hª]êñ™Gü‚…,›‚©¡ ”@„1UD Œžkžâ÷ƒîõÂèv‚Xi(RáÓaã%S}“Ý„Ct¢Ò‘5rDLŒÒ!ø™6x@$`Ä* ¤l- å‚Rtt¼ÄÞön¬(jIÌ1+·f–7!V+ &Dê/ a<´pˆòßY 0@Ÿ™=(ÈR&¸v±±@AÀB¨£®+eÎ y_&m Ý«¤ÑSŰ5Aax ŽéIѪdxxÕÒJŒ¾¦wäši³oZCscT%p&ÆÜ…cÆyŠ‘´1Áz¦`·Qd2BÎ; ©Sµ1(ú¯ÅÙö`^©•áVê:n.Š™Ê½µ$®^`[Æ“E5jÙ=·ß6ÛYd.ª›ö´¯ ÂËYW©Š¨–Žý±j¿_»³ØQj™™‘þ¼,¼¡ÐÈ+Öºõ“7kÒë.¹÷sÔ飆f*y†岓RÒ×Ý-0~˜‹¤'š Be‹‘”¡FÄâQCNJ%#"é º>/sBëˆË†caiyJ!Óe&¨;`+{Ö´<‡F TÊ¡¼ÃCy«¨6Xqã™”<ÉBƒIyU+ÌyäÃæMWEžÛ"*(];A–5!ÀñáxóDLD‡‹¢yÒgÉ©QáDøËö§`Cç͆±H-ˆŽ!…Š_n"0BÓ>J[²Q†Zä‚AÃÇw,òë3$önóSœS•Bµá¥¦20²Ö!A«²8Tµ‘c¥Ç…éÕ1 ñhŒ6gN܆è.c¦mMÞÈÙ‘Ž¹îu4á ÛU¬Þߘû,¶Ý·÷ujÏ9IŽ…€@L‰&tÅ%[­Ä>–õžÝBöÑ;c©Ü‹e®ÚÎVÊMqQ`ñiôYR^]vÛCθo ±†SZ޹¤Í¨:ºk=÷5s‘`ÿ͇E,ŒZ5‚ p¾H)d:x©ä¼kÔ¼·`ìŠÎð› U‰è„‰Î³ìÆäk sæbæøÅÎ<‘’G‹¸V¡ Hø•ä/ t–įÓm´Û ±ÕºlÖ͵NbÒø%T¹°N cÁTZr ¾÷ûtVë(×ÏÒ°V¨aœíÒXˆ‹-O[‚c´Öë=vbÄ­ªZ[Ã>ÜòØî?`ÛE?O†Ã ¢¦] A#O¼±üÿè{ÙºDÎkI_c75ºû¾•¶ÆÜì5ØwÂõNÁð¿ÓËßÔŸWßu|õEDŠn:Ab,$ø*Q;u÷N·{;3‰í{0„,:.Eä/:¡œ¬SãnÖðÅ«'LF_\ß+y>²è×-u¬Oλ³óml¶¾/bÌÉ:­×±‹±^³iÉ[1é”3hdÔ±ª)wÎö¬h¬abF‡ÄëÖ”ë{)<ûåÒE7½%ã¶ý2kÈjufSAU‚’T…~:A³Æ–6HÈCHe RpÊ(†&¶ÄY°¨ à„(ð¥èæ‘u‰ µA²› \ÂKÀ.´L9 „á”°ÈʼiíÀ6>¨~dA0:¹!,¬7ŽV,ɃOTœ|D„˜°zA ìÚS“8,ÓƒzUë¬Jp´YŽåªr1¨Rö”yŒ ׊N¨ÑW×Ôy)ˆ°%HE¼ 0n•8ÖB F™2H ’‡zxùÑ‘¡eRF¡¬ ÁPrFLÒÇ4mуò"zÞ»‰©xùÅ€øê1ÈK¢rRX+µª„  È+2¬ƒ]Z:3IbB)7˜pʇ pB‘Å]d\<O ˆ97†5E£ÃÄå) S“φéêÅRäÄvéqgÎ&}¶ AÖŠRâ‹wx…TZÛCÆEáDæÅ†’×%'†:t‡ >fŽØí+p[Ö¾GBUš4 ˆD”j†2À2åâ{Eö/*(p¾aU*i ŽŠX>J!’ûà „ÂÀ”©¡1˜*Ä#‡ŸÖ"PÊ¢zĆ…ìK‚ÝŒdõ£àñB7upÉ`3c?Ê.¡Î Equd¨SÊ·Ðé`¨/X€GÄCF,Âd¤¬×Ü(-ôÎð°Á A^¿;h¬œˆ RÜ듵§èHœ:¨‚ÓG¡¤¸_£ƒ(ø»æÛò/¾ÖGFöªž½¨·ÍU,J¢Q4í¶y²P\é,Ű<ª×²‰U/äõO·r7ç¿;®«m¯ç«çèALc~rçn»²Ú­Žº± =úü1½]jó͸ÂÛxE;ç|ŸýÖN ð˜# Èßc þÀrJ'·ˆíkzŸ^q|Z°ŒõíÏåmo…îùÚñï•}©IÃ;sÔ°â'Ñ6‚’ãh«ãέË_^Ï…3é*­ =î)fÿ§{ýk{GýS ¹òƒç ÷ᇡy["4÷ëï…ÈôØ)q­ÉÛJÜ› Y‡ò¹¿h½Yª¡™ÊØÝH¾®B©£¦,¼!°¾Â¯oäå¤'/ƒn¦]‰àXÚµ¶´]aT§õúÕÛA±]Gôÿ1 å}»VPýûËšaiç8qµ•ÏÙ7oGÓÇöö¿òߨÿ…V|aµ{×±—¯s®ŸRÆ"Löè¯Æÿ þúÕ=™ Ç(ûþìÏñ›6ÌÛ®eÔZI»+öªì-\wíU@è’ $p~Jè‹$" ]…‘-8\AócØ.ðäÉ–R:NN¦3GÆ^ÉCáÙiD—ï,'/ö… x¨˜S‘ÂB¥>&F¥gE¨Vu2‰ˆhRªñpŒ¨~ÆÜQŽ–C½HÄ*1$ó"ÍGQqq¤§kŽÁ2²{!âBÒÙ‹ä`bÏd•tKr™ó…‚¤ª¬Ž*ª¡lT” AÈ1ÅÜ’ ÛP”ù:Î0Œ 4Û«ý2*×}Ìœí8Ùo†kµÿ¬íN®A¤GÄ‚´ŠÜ£0hÉ£"@Qƒ•Ë‘´D”ˆv¥æ!/ZNÝù˜?5$<ÁÛîÚÛœ÷¹!é'ŠM‡=%ÆP³¶âl!P„hàÚô$·³·Tä ”(/xpq5Ä…œkEÖ‘{Óþ"eøT¤rqéÖY•_%©T¥š@þP“©Š&3i˜yâÑuEËÜ…ó#3ãN¢Ã‰Qr¦8[ùW_;Õg^1tODË”’–L¸ñrK'²¬¨Ô[rúxøÃξªÝ"¶—ürí{6,QCfèÄŸŠCB㨌àª;§ãrdȱByBϽ? .«§\@@ŽÅ·³‡Çè*áIñkØ~q–•iwv%®SòçZŠA¸°êŽQ …éϲ-Ñfð˜”Å„G¸u„DEˆfÙ¶[•y×KÎéKŽ@®Ì•yw'ª\£Ò\¸Ú$¿CW§ê0<0°¶$UŒâ\±k>œÿÈÝ/–…UF¸ûÞÐ|µó1s6b[ ÿveö½7§ÇsÛéVk8¤ ®@àÁÑY£keã9ÆÍ@á¡e5e’²ty-í‰hßÓñÝ»õk+ûím{Ùwg¿ý—›ëmߊOj¨â—Û»|D+AE™‡ö -ªxY²ª±È½ˆü: T~“U×ÖFcv6¤žå\õ+«û}]ô1© Ó IR†A&B™Úï„ö‚i7VbZò}B•—RÊ÷ëLÚ:—¬†ß5á õ$ø>«ju½kJÊ̇×S×µo…gJÐMtÈÒšuÜYÅÓAJðŸÊý6ìë­Z¾ÝÛ§N,ŒÜ3¬K>¯hòi·xUNÕ¹Tß„WîÏêYËS©¿nÍ~íóëÔßUò|¡ ]³8v„ªyµ¡tB¤^Ž×K±ÛæZeö޶@O$éßòªöbªÿšøÆÛŠ\ÆIYÙ¹¶¿eö6„‰—qE  ËB°À~çØR¢¡pvBƒ`àlè5ñØšJÄ’q©xÏ7¦x@EÁx^"‹H„ŒF¡Àá3tB ¤…(ŠFœb*\:çhŽ¡Œ½“…㢦lÑ¡iƒ„†è‘¦H‰¶P•´RXgHCñ[ð©‚YÜD& -J4dÛ-ÈrdeÅ¢$ÑQ‚$7ä í ‹ ËŒNâ19%:& `|é¥`);!a¾€T„`z¼ ¨¶Dèlf—úýT”̈#ä&‚6ºÍ#ä'ƒRpŸ Á;eJ‚ Ž€>42.±’¬¾Z&‡ `qõØí7Of:d†¥Ìß\R8¦KURŠÆ‰p¬ ¿n$Óóµ‚G&ÃVFÈgõ¸qÂaÍݘ›T5½G šy [KrQz ½®i^|Ø5婇EÂ,±P2Ì‘¸2òØlæÃ›l&m%WUM 'Xs“cñ™T/L ¼6< 9ª%±8¹gSÞ÷+ªw¤ŠÕPñáy’L`m.«%쿌»í,]D±:lÒÃÌ‹X$2' ƒãtœœäá*ÊcvC1âuM{¥Xˆ„,&½ÇàÃÄx˜>`ÈEŠŠƒÈ*'pÛ… ƒä‰Q”Šqâ5d»‘˜:À0ÂѱES–B,Ü>qщCÖ‡†¯.u[Ú—»«F Xê´’nDm3WQ$S{J%‹®Ãvù.£ª XºÞ€‰) £þ-ldhÊŠ¤ 6˜\ÔS $\™ËªáËôlúÅ3·¤{¡N½,¢ ¨ŠÍÕ< «j¹ùjÓK‘*sœ1i,eÃÞrÊÆ̳ÙWË‘Äb•<ú·2c¡‹ÆÎ)u.nÌ,bÆo|ë}ý•™kºúü{ã‡.¢vSßÿ˜ÌØD:ߨK¼hXžK¹¯µ)=Õndך·çÎù®CïÝi·¼°»:ê>¶„]¶0bEÁN ÿ)›öu]º}?n÷_ñB©EQ²š‰êí“A—y}SÕ«kOZyGÒýxîåºö¤ ŸW(09ñµÄ³á™žñÒ$³K¥P+ÑFE)‡g…‰ÔD˵¤m øç)¬41¹›½ñý³™ùXe"áYð‰¯­û?>4½k›n_ßïõlýé^y¬hbä?Ï¢¢Òb´|ÌÞý£ÿ6þüçêˆY»PzµpWâ¥}UA£–­Æ´ÓGíYbó7ËK ÊðƒýlˆN‘%`Ž$«†õd¼01ª1ˆE)ÒÂñR½Áöôu!‘àö‚îï%šeƼVÙD5#TxÀ½äs x8¹\’LÔ½,‡å‚¾zÁh¸%+`×QÅŠËe²8t}8|†•§ˆ¤VVZ}ÙžáÑP)$ˆYNJ<ÞÚ¦Ç;\Ü 0âI)¶4¥•qòP|­R]‹L^ÈÞË™[ ÀŒÐýZ”hà‰r,0Õ…šøáR•U¸·jåätˆ¼–X+ yg»ÿAá¼ÁLE"y?'Ÿ¸?’0Jp¦%ªÉø¤VŒ›€f;{/TÏV”ìÿ”àbÍ^öO!L t=‚k—=u0FL°$ò|£±PÕL×§Om\IQ¢ƒ²ppµÖG®4œI4öM\‰w7öŒÜgMÑ)‰“MèF‰üXTèP80ˆTið˜×TÑ5OàÍ%—™¯C!'Gßt!WD¢ÁðÓå…¼S÷½½»áªUQõ[¬`~]ÒJé’¹xd$ÂÐÌn+\L¾X\Q¸ïjL.eC3§¸y0wPõ8€lV©Õæ*¹)²þ„qzš¢ð[Lòžm¥‡’*[åÐ&6(Y)gÚ5 L/±"¼l¡QÎ j -•ѹ½³õ"¡þèÍvþ¹ ­7Âj ú7 «šÕÓ5,N¼é7ÃÓ®–‰`ƒ(Ôñô9›ËÙˆÑ逨ƒ³_ÅFú¦ÿÕŸ§ù¨î_)æ&wó´7/¶é¾ÖL¢,Kv`ïÎß5Y_ßïýÙ.- ,&ÁÚaZ¨²±BÏÔk5f7­ª+Ω’qU|!‘u§¾ŠQX5†ý¶—³˜žQ„ï<Áœ-:´?Ÿg¿33©ÛîëlHŸÊ¼§K,XôŽ |P8Ý\{ZÛÑY2ɪå[zz¹‰± “§ó’(°â½Ifn—êi§ƒ8ÓH Rd¥öÿ©ºï¤|ËÍXYsJ™ysïxÛrêNPRƒÌÁñZûò¥+¶þ¯vWsököÝ<ÌëÛï–ß´Ï KÉ‘ËawËòúý…œV“¥ÿÆèìv®í›ÒÓ% ˜p}!ÅäTµÔFv¤ ‘\Ô#Ûh¾Ê@>ölžÀ`[p¨t†[Òü´AQFa†qÇqÈ ‚ ’ $’I$’I$¢Š(¢Š(¢Ë(²Ê,²Ë,²Ì,²Ë,ÃM0ã 4Ë4Ó 8ó0ÓN4Ã4ó€8Ð4Žó8óN84ÓO<óÎ4ÓÎ4ãÎó8ó@?ÃO8óÏ8Ž4ãÏ<óÎ<ÿ8<ðó½8óN<þÎðóÀ<ÿ<ÿ4À8¼<óû<ó»<À;³Î?ÃðþÏðÐøóÀ?ÿ?Ãû<ðð?³øóÎÿôþÏ<ðãý<<ó?³<À8ÏüàìÓÏüÐïøóû8ó½?³Î<ð8îÏ?³ÿ<8ó½?ðCÏôàþÏï<û?ð3À?³ÿ<ÿÀOüÿìÿìÿÁüPÿÀÏü ïøÿÂOüÿÀOøóÿ?³þ?ðÿ<ðìð<ý?ÓÏìÿüóÿ<ÿÀóÀ<û?ãÿÀO<ÿÀìÿÁðÿÀÏ<ÿÁŽôÿÂOüÿÀ<ÿÀ<ðþÏ8ÿüÿÁ<ÿ?ðCÍ<ð4ð<ÓÀ?³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéý8ððÿÁOðÿOüÿÀðþÏüÿÀOðÿŽìÿÀüÿÂÏðÿüóÏ?ãÿ?Ãÿ?ðSü?³ÿ<ÿü°ÿüÿÆüpÿOóÏüóû?ÓÏìþÍìþÏüðüÿÁðÿÀŽìÿOðï <óÎ<ÿîÎôÿÀðð;ÓÎ?Ã<ððð<À8àðïOüÿìþÏ8ÿÀÎ<€;Ãû;³ÏìÿüÿOüÿôþÏ<ðþÎôàüð;³»?³À<ý;ð#û<û<Ï<óü8Ï<þÍ<À<ð 8ÓÏ8à;³À<à<óÏìóN8€<Î<óNìà4ÓNã8Ð<ã@8ãû4ÓM8Ð8ãÍ4ÓO0ÃŒ4ÓÏ<ÓN4Ó0ÂÌ0ÃL,âË,ÂÍ,ÂË,²Ì,£ ,²Ê,²Š(²Š(¢J(¢I(¢I$’I$’ ‚ ‚ qÇqÇa†QECÀê­}6çßvýQà2.¼Õ{çÛoðY»v.ª^zzúÖ€2·>·^”é˜àZ[¿n·Ù·—v +QSpt§4“¨ ,ª•¶s?/\¾ÇÀas|ÖCÍ6.Àh›Ä÷§4|yA™[À`õ¹ëž6gM¨ZÀ FÛK4ü†óû¯ç€ÇÇ9û¿*5Vï¼}zÿ~§®ö(Å@[óž³®ÁNì *(¦© ÅÁÀdPPx$Ã+;à|»;:˜~­Q¾ï§ua‹C:·®2>¢Ô‰±Úüww€ÅÛùVrÝ»Ïýç!î®C¯{ÿáH9ù»Ÿ›<Ÿlß®·t{ÔÏ̇¾ýÝyÏ÷;/³·é÷÷ןn­ÒöJ£{íõ¿íèîUÙ½›µS_¶êçµyËA`´FçÍM­Ò’{P1ùßÓå2¬¨ín5}—½-š®ý}Ýß{ûÙîçÿ»³¾¹wxîWՇײòéí®÷ÒPò:¡Ýê0³¿§}½õz¯ŸSiÿŸyðœ·]çÖ!øD ‘QsºVíÙ³ßÿýîïûèÍÅ«ãß:ïçæMGÓ-Õu[œkðmû‘ýNÚ¬Ýüý^ü…]ñÿ«ú]¼ÿ¿ëíûwæQG’:2êW~1mZk©ùûŠ&ÌšÒ—Æ;7#L$„‚ùR-ùÖ¤lƕ֩û±Üöq¹ò)šTƒD3-ï]7+ªîä6ûi½×Öì›–}Þ¤ú¾’]îN•¾õô´Tx|7+k‰Ž°[ĵæá)¿Òº´jŸYõýßUET˯[xjýµRꢹgeÜó-ÿIoff¿6€´wßfííºÿ[ÌûüÏîw×;{MeÝGvCjëÌw§Ñ·:å;~ï6ó?/3í×_ÌÛ—e6½ÿ½îË˽ütÕè¾oºd‘‚™*JÆQãµ§ÓªšÖüßêSçWÕÔ16묋Žw'cÝ· ÇÝo«·1ÝùŸ}wpÌÌÞÍS!zïÇ'8Z(Œe,Ì%®}þýº·-¯Ï+uÎÿÝÈåïÞVÞÔPrJ·?ÞÞÿûw÷C¿êênºÿr$} ¾»þÂ=ÿn¤¿ëÙ7'V\è¾½ïÚgþýºuû3\üøãµ½ÞÚÓ]zé䳯êÓT®ÅïéÕÔÌÎìøP{1µ&Õî `îK)µ$²‡E¸8Ù1_S±öŸkiMÕT¨ʤ`vb qßî·ÅNÜSg/“uÏ·Aî5VéNã5]=ÖZùÀˆ‘Þ¼ ˆ˜>‡‰Ž6PÉ’¾<ÌçîÛ¬©+þ;_³ºÒwöc¿É¯,uwô¼Êæüïû:vAjÕ(TV×]w]¾·^^WýßtwVÿró­¼»j½[û¿ºïö_ç÷»é¹·¸ïN®O//9׸ÒÞþû}•uä3îÿ/¶Õa}ƒÿ A„Îbimœ~Fó­W3û?«¸ìÎþIgEì¶án¦;3ivÎ×ÿÿœëßùÛ?t|ß´ÿ?~e 7ó¸¬#Ú{.š9»Në÷wùw—w“·v]Þÿþ_~{¿ÿ/:ïû?»nõ µ±`s•¼féþï¿ßvû¿?ºy÷}Þêtó~•†Ï3šìÖî{:e*éd.ÝîtÓËËvoÆ~é}ÊÛ}»ës{¿³yØ´a/=-ly)(&J¯ÕúówÓ{ǹg»ÝEwý%v­Ös[²U¥å+¯Ö÷öžùuk[·}ç_l5³{õõqÊÇ\Æt< Ò| àÖÈf4°]1‰²i¾=Õï̾Êçgçß¶ŸÞþ\;¾¹y¹ß·—×·[ϯ,)÷B0¨M³™þí¼ÊÝçåæg]îþW{óó1÷üêìï®ñ·J×ý}ùÛ¯ÏÏ•í~û~‰ßÖèÓ¾÷S+\¯}åÞg]öÜ<ÆDÃÅ5nj}ã?uÞÚÂTÝìÜÿ÷~ß4‘ÛÌò5ÁòIʲ­.»ÚÞNçOÏü»û¼î¾…Öë¹¶ên>àëõÏ€=à,†ÃK=‚!ÚF«st©ß÷½—yw›ß›û}›Ùß÷ÿµÝÌËüÿ®Wû.ïö»rEðÞþ»¼¹oQîÛÛÛ¬Ûö6úö×ëò¿ÿïvçv}ß_kSê~ë¯]—ÝÎï÷|–çlgIv}36·ÞÅõï}ÅʘU5m^ÞFôeLÕ;o}½ªÆQ IWák[:€ì^ùuE³×ƒr×ÖT·¹×¯××­e×åÎ÷d;õÚýë§wN'M`M/€V '@ ” €Av 1žÑ, Fný»åôÈIª×ëvå7ëùÒ¹yw{‰ÞzüÛËõõÖ¦ ë$å: 9ßunÿó/óòµ¿ÝÌÞ†ë¿.÷.¸þÚÿ7—öïÌvïîmzùótë_¯årö¯Êæ»ëÛ;ûþëúçÝÞuß_ï¦Úí8“éN¤>Yõkþ•êþf^÷dò˜cúWÚJ,Iñ­Þöõ:ûûn÷ã¯s3o¶é¿›¿»¾öájf{Œað€@$æTp <κ»ßžìϾs¯~ïò{¿ùŸŸ_û˼®æmýÞ;þÿ;y²"²ÑÑþ¾®wWû/){®êÞÞåz;7·UÞêýþ_~÷þW7©îøÅ/?ásýä·¾ßËzñÝîÚÎîYÝÝÿÓ ìºÿk•èåæÑî#IXý96ÎóT}kfhµ}ozÆ¢£ß{2+±  ó’u?.é—ô·Ýüse¹î‡æ¿s~°È¾‘vü“`@T.‚¤Xܹ$@d€'@Û†Aó·QJÝ.µï÷©ëþ­g—Ÿ™¼Úã¯}Ùw üOëÈž0ôT(¨ »¼ûýÌϼ«óöyZ^:ßE¤£ß¿Þ»ýßÛËκu!Ò}îÞÕÓé|ò}[¿ë¥Ï«uçIïìëÞÛÝíìÌÿüÿ§ßÿ½ ÐÛ÷?¿W;r»l~]Û¹Îý÷¤ÄþSu©RAPGÊÞßÓëνÍüìÜíç¹?…ï»î¦å_µ×&ŒÃa+‚œ $ä€u€¤€ Ó«îæmcÐÏu{ïó½û{ÿÛ^Ë»ÎÍûûw;]î÷\-=†C¡®‡ß¾[÷t¾êÿ\ß ¥iÔ¿«Ý•ìÚY+úäïïû/>]ÔÇÁðËŸwÖ··^¼~þfµþçuîÚ“£µHÍ93t×þká$Ì\³k3ЈxÙÀ ‚ Ä ƒ :RöƒÙVÞª˜¬Ï³_ïg“NöµÓŸyóÇêŸ÷7ÇNuåqÚAw{uû¶g V€3/Ý]ÍÙ¾wßÝŸÛÿÿOíŸ|ã»:Üîv?ßØë»øöG3|þÛv»!X~_å]=–V¿™Þî»÷Ón¹×ß÷ù_½þµ¦*ålÇo> Ñÿ^̽“Ô¼¾uþoÕ÷ÖêÃùahì/®ï{ó9ÙÝû¹wy÷ù{]íwí?é {­ý¯B)¨l à€Hy£íñ`l.%.?¿¿·­×þÿáùÿ[ν¼ýüÌ÷[ºSãTíJ«‹êŸÍêöB޽­åçu/×__ß;¶·øžÖQ·ûóùhW¡7ÔÌkõøæt°ÓËåÑ<Üæn?¯;]—ô¦]#÷mÞWïzñôW·îÚ î¤õ¥;æo¥UìËÇ›'´¶ëÜj­.,¶6t玙† {û7~ö÷3w_w»kù×î§þ;©,†›ès_@ìˆ> €®€@Z@ÂOE€wYDà-†Û<¼MÞÓ6Õ/þ0m×\˯äsþ¹ ýYÙ‹}cý÷UÙuÊ©Ø,¯)Ÿ÷Ù›w´ùæw÷Þ^e_4¯Ü×~;nœ]{iëïòO­o“šÚ·'¯çk½ØéG!n¿uqô†Mí7G_öý>ÿ;3îî'î¼ÃüîÜÚ#Ö­<˼­ö5ý‘õhç|Æ¿ÙW{ë™›y”©7ºóÝYõÕÝZ¿û§—— €~|ŒDÆ•D¡À! %⓺—™’ê__{û]ùwyœïs³yÐä÷vï_ï£çmý:´ËÚÆ†@V @+€XY%dž'Ò4 e`=½`d À@’,.YKàzï¸%XœÈ@:€ð)<°? ÀO!oÇ¨Ž€ ¬„›ýaŽûÆ´)Áøµ¾$ØàVNu‚Ôv‡ª`áqùᕨ¾roͨ oÜ@ &ÀÈ$ø>_ð‹@WÛ]¾}°Ïÿ^×(ýjo¼O!„ÁpÐ0é¯ iPÓj[ÿ~ߣû¨ï¦\¯RCþGÒ¦¶ž™t 9v8‚¡H’…3ÇžP âɰ=ãÑ$Þ‚ëJm¸¬y¢ÄëVPø CÀZŠ„P0À–èíPâšær¹{HÇ­Ë£›`/ø|Pd˜̘О•Ú jüÚh´¤ïÕz4É/“²"°:ÀnŒA|,¬ ª¯¹¬ºö§DÜçæå+îj{r÷¶€äz4)'X0@œ9 Z†îÒa‰ë×ëò¯ñ²“š:`€à 8ž:þþþþû÷÷ïëûÛîûülzãä7±œr–Bnµ«[ ïê°Û‹ë¾(Ï©M®½ÓqÚwcÀßKRß|`´Œü~eõ¥æñÃ3`~Þ«)ÂÍ“ÄWÝ BÀO“Žë÷ oö}}œ)-W°õ+ªHO+@Çjj}žü‚y:ìlèÜØàz%¢h"ƒ î8£«\oÙ}µÊ»ï·»>¯MEÆ  „€á@6£?¾ìÏë»ïÌÜÛû¼ïwßïÝß¼À¸ª\­œ*´ù׫þÌq-õ±µÝÊýÏ%iÖÄÍ·„~ÊæxÒ¥ †1%4ÒAõÉw­ÙEv>™*GÙË«QIŠ} \É% ?‡;ÀŸ]ÊNëéùª(±33'ÉXÙ@\”ÙjðP4”´ucàÁE_p°xYtKQ+þa»S€S0T3F€uŠ#„¤uP|@l;T$ø#EàYâ¼êW7Q«F£/0¸®e¿Üh#Y|°U@(ctöðÑ›­ºðJ¶ÄÁà*¯'§~÷|ÿ.ú÷mêNûÿï³ëŒæå„ÿûˆáPâEè°¸‡’E ¸v`ƒ_4umÎߤ6ÍÏ@ýÁö5R2„ c_¼ X`‚±”EÔ@â¡8 äE©"š¹”—?û²äÚ±…KÈ@^ãZ òö| ?íAÖòÿeoŸóÛ3…ç&|ÙÆàŽÑº:ZdpDh¶€€ª+Dk + ÈžèVÒ›H¢›KÏèWdÛcQ{c c€!­.þ—w—ŸŸŸw—[ÜÿüËÛ¼ÿ¯ÔÈE ¢†qþbã:Þ¸…ÆÕN¾~]e*=É^÷Ág¼¸€šñúP ÀAlh6-»RÔµ¨p*Òˆã›?®©³Ç:êŠVj]Sú¶)D–´í樭սhĵ®nÛDш2Œ¥~žέ|ûQP(€&s÷Ù²n'’xí§:M¦ê4 8.@å$/€7xamü0µš áD Ð ` J&`”x4Ô5q]S(m |ñ bù‚8¸#àA¤˜£@2ɪ ÔÙCw6¿·½ÚòšÐ :0àóOýÖïîþï+;¯ßÝçרý»½½ NRÙÔ[J\RÖ)_:t¨ÁÆGÔ·]߹ʳ&ÿí9ZÞ¼2ˆ y“1T ‘³Jó ˆàL€Lð]"¹cÚ})_¿k-ÐjžÈó׋ۙbI!þÍøCyºC âè ·ÔÿÎ,A¸%–TÓOàòD`n‚ÔPû÷±wùØ1T‰˜êÂêiKU @@I¬äKŒÓ>‡¹_/€Î@ƒÚ¥+Õó̦õ”Ÿ›S*‘:¤!*!;º¨ °Ù3KÀàÜ *59ì¶£Ú}¾÷ÃVTN˜ç8ä)ÝwïßüÝ´ãwy÷ßuù^æîøFlj‘†0"å!#^û †ÉLJö”…Åò¢‰š1nÍnT5Ù¹xCåà@\l,ƒêXŽ$Í5LJÀ¾a2v7"“ýµ¶*ý\|À*æ¼ð “CB4ßø•©°7Š[`§ØN„€v 9Hð(„€`X©!³ì¬ ð€±záöƒÕÚOÏÜ3äšÓ²n‚ì¤Þ|9Э ´Bˆ0UËúåu¤/ïoîòñ?ì¼ï¿«¥yù÷t*`!†l@vý2èM­ò/K¦L!,Ê(ö2 °T9œ)Ѹe`¤” à$(‹-ĈÆÈNóÛ4&¥\eïªJ#¯»‡Œ“¬›f¢}ZÿíëÿvìÜßÍußto®õÎgÙ à„xUµ±ëÂÖFBÀ¼Z(6XýŸ(Î0ð¢`媵—3NªéE@ðA h à<â`=»ãá°î Ä¡$â u¡ÔšZep 4ÀE‚J |¼€üñP …¡Ljâê9îQÑyÃ>Ç×ß9ꩇ@ð.ßû{û™ÿ{w—õºÜ>ÿ÷K¼Ûwíá@h¦mÿA”fµS÷‰—‹N*iòåȆo¢”‹ÜƒåêZŒ Àg ¨ä‹RF ÞF!‹’$)!Maïï¤ëþó(Fá#©iFû˜féŸÔÙe3©”ËujW'Õ»’i„ gÀà žäì|Ðj*’‡åH (Äš˜L$&¸—2Hp²cë‰×ñÀÄ.•"JäŽ2xL* ¡ k­¤¡²²áÚB™3}U¨½Bµ%À‰üL v5H÷ŠOÐFU ì ¨L‰¥Ãrío\[£ ¢P$DÂ!X@%,l€ !.¤€Ôѳ@Ôžð¶Ð6"jãÃa©Àî³€ßD†G Ð9’„bw€ÉRÑÔ4·&æEªÒt7ó$N 3*qÈc'Œ”2# ²Ô­Ëc©ìŒDâ°œ%‡cãe†4l¤0Œ'  þ `ԵРà!„q8„|Z %>Ùrו5ƒîÇ”†@Ʊcº y}oêaí$q…õÉL´"26I›0V”ÊlÈ‚X ÅdÚeæL–±™t‡m¥ªÃ@Y­˜]\ 0­9¶­»»IVXÜ¢¤Î‰2E]…Ì¡.XA@q‰ 8 Âi 7†bŸ¥•»éÁ JÑÍc ÇBJXÅŠà@d,¹´a•äÈ@5ƒÀ1„°bÂé@Õ’ÏAºãÀó"˜H00;`á0Š€Ka¿_Wz¹IƒRi¼C¦ƒÓ0ÑB†ž‰±yà-ÆØ1Y a|@hƒÈÕTdCÂåÀó%m+@øßÇfýãßç ÈE¯Mç”!\‰DÄdát¨P)1S Æ®×ã© jìUY%I%‘¸û‘¼·Ëù³N£ –*X—yciÉ!=Q4ݤ¢_I§âÔºŒº˜—Ñó)g—¹  ©rÅÆ]{Ê-hbËâÙîN•’]}îOýïÖÔy–UPìÓ…Ti†/«²¹Ûμ½Ç_ףؑí·,ïí¬õª*LD8D]ì´³£Žw¿ùüï‘–Ò]%í.¡T¹Ã§”#,òúùRãNL¼öÁEÛ=COZF[4&xûÌÅ÷ˆx:-«ëUÄBå‰dw„UÑÓæ^Eu€O‡â€SXб CÅÔáƒaÐÀ™”@ÒÕØCtS‰ààLÕ¹ 6­‚ÂôØMÅÏ>° × Bð¨Ì/´DU‚$²qH¾-ÈOï0isˆÄÅËI•án"¶Ñž€ñræÏ1ã’5q­ÞŠ1Ê1BbX¢F†ûÓêIŒ÷Þ%ñ•‹BÐ|ŸO”¨œó5žK\³„Ð4÷AKŠG0-:82W­b6º>‡õåéõRŠ”……Åâ=(’¦–JJA—¸tȶbÄÄH…9®™ÆÙCt{5œ?Í—<ªE84-ѪœRQiµ¾Nt¨± ˜¸×ý{nõÞqDÅPLÆí= ûy9õ_û¹·^]ç{QI$´«täóŸþ"$(eS>¦AÎuk•Az7™\¦Ï:”qRƒ›èîCX&ö…ë„0A½A!ݸ¢¥µæÖF;>y)}-®÷[Ô‰ˆ•UdÈÞÓf&Ó%è½c ì )ZL°ÝÐh]6ùÉ?–‹Âh h Ì8Á~"øpÖ:¹iР wÖºb ðš|T2…°°TP@ºVæß„ƒ!\%®F»8L€#” K юЗW5¼]Zu¿à®Æ ¨ƒ—‹ BpRpȨ%‘ƒ4,ðÃá¨Ýáá1‚8¶ÚíÓ®jÈë¾så\Iñ€=ã¼Løh/ ‡‚1´È1ç® ¯8ä¦ÃbD"ñBbôÑA¢ï éñ4|IzS£Œ¬1ht°…A•ŸJ¡ú`âêÑ3ÉKÞ½ÉìÅ2ÝiQtÅ‹¬¯')£T§Q6ÃP =”PÚ´Qöl»è’н 2æñ,PÁGýCøÍ¬öªlñ1ìYêju_ \Víœ'Y«hy¸-…b[­ F•È`–&†³fK1,_¢š´`ê9KšÆí Ö½¶S¦ù¹q®0›òó²¿<–5ò´‘Eé<¨ÐÅÅ-7)óý ’V 9—˜hxqS lŽ9¡³ôUûØ»!·:OcùJìÛ–·ú·ìúÎ~×ÌZkÌboJë} °F`è· šm>³§¶÷ïä]Wcîž/#ª[íM†óéÒæaZï½ÿtz8ŽV*BƒK ¸¥Qޕȡ䥣Æ(¢*ŸÖm¶ûA†ˆª¤ÖÝ¿q &ÃuÎLš…è¥ÁX b€ð ‹8 ñ0æDÓÅK–^F/Ø7²«rZ<ÑÕE¤$Úeú‚Š “‘r.‡àWdˆ¤“-‰!àž(HA¸è¬Õk!PÁÎ:z#9‚PV>}‚´œ°ÒLu]i‚a#‡‚pJK)F„Jƒpí3eo2>#¬C¡½gQ¹±2‚×¾!Ö£@8.)h]Â’"!å\üµÅ"`IÀž˜E˜_M‡ÂH1Ð$”ÔrÊ^Ç~s®a%C ®‘‡•#2|3@Ç7’¤ ~"2­y †@”ÐlTË‘ªÚèHÅCÚ”àb[ÊU=›yžÚÆ@Þ˜¹¸W¡@<æR¥è…(„€ã)cAÈ@ à/9¾Í.µK'/±GøëiƒødÊþHâ3Õ± ¤ G>—J²Þ'<lÉ`2žÙib"š OSâpˆÓ=„!$#è, #a!©ÅP-B0Q‚H>*4v*”^† Šˆ@Ï%Å,Mžˆ0!U­T76 ¦áàQˆ¡L”C±(ÊX/´Ü$jÉ’V¿G(¤"b¡!€ÜÁàꚈgDP¾9¹ N‹ÔOW¥á{Œ'sÓsµŸ”ל¼åÅÅð5NþmŠE.9Pf(ž.Hd¥a1°„hR`2+;Ds\öS@à(ÎJä¸Þ ‰wúF3Úã­‰­ê¹ûåþЇðºÚTâ›?hmi{R«z_§ôžHè•›lçÚfš%‡dšD`ôè&â8PÝT”Œø÷˜B>‘ÔCö¨•]~ÇSwlß¼«‹Íˆöˆ–&¡“ §÷ÞÔD¡â‚­õZ0œÔ¬¦£U{{³BoNfM3î.Res4Ž8b°¢‰¿¯îËþurXÍhš äneº{.P¼ftãˆâf„¬H&r‰ ´®=5NÊÜÒ+¾›ÿîòèÒ­ä1JMŠÑ¾7×f§µF–4 ê*™°Äój³Yü½¸·'dßJîB†ñl2û•UæU©Ù.š¦Q+ö§”¬)hëJ¬”“Ó\ŒÅÎ[Ö\µÌVVXl?¬_«£Æñj?'V¦çlå4”€G¨•2¤Æo'a¶¶5ª’VÓÕ(bcÈÇ ™æàÍ&éÖ½]¯î»··{%œé×yÒRõFõ†eÓòÓP„-ÝдøÌ“ršž;“ÌøâœgMTÝžã1TñÊ÷3PA¬sÕŸ¡khh]¥¤!’£6P¨÷â¦(ÎË’%mÔ)il˜j, ´ZN/€éÂaáYÑ,Ø¿h•@$1ê KÒ¤¸–e0”eè`6™KŒD#ž<^'!ŒÚ0t݃_Dj ²Ãê0]QàäêÃ᩠̼•æÚ¦N¢Ð£™<Ù“PIÿfi)Þ—ßy<„6ÃQ¨œ„n䯩mx”`nFb,öCL^äUQ„¤%’h†T®ãÔ#B3uDãäl/‰zãÉÑ Q/´NCryFò4K³âßYTTe6×q¢qPz|Jƒ‚¶ƒ3Ì>!¦EÔNŒk.?1„ÕQèDœÎ¯Ü2 }-¦—ƒy;7“PÊ@Ú­%¹sÓ/X…éH?$ ­—\ìÿzœi›m˜ºr÷,ÒsmÛfЉ&3…… CF/ÐÍl§‚¸ŠD˜ŠJ¤àè©ïòð­D5mÁŽ!,€°!Š»‘Ö͸!áÅ^öàÆˆ"AˆÆ…"Hȸ¶Úä1ìN/Gy ¡ öÎd9ãóC$twÆê«ýpŵ¸Ö.Z†Ó^ ¥Å ¤ ‚Èœ¨¸ðõWtU¤u·+WÞŲîuS­lz `*…P‚咉߻Zû‘Õ ÌÁbƒ³\Iˆ±Ç5Î%Yx*…)Sl*üÚý+-w&Ã2œDŒZ´U-6ZÒ/LŸÉh[轫Sꔚ(äX™5 ÜJ˜é¡¯¤¦!ƒ £89dV3(Â!r‚ª„&EI’86>˜!yjó×mäÉ•¶Ã-Ñîn-Îõ,Í-nÒ gF"L¢q!ƒpý>äá<ùê´šö¢‘©¬!™ d32äÓlÚ“¼wåôÄ™'Gó¢Îæû±Ùÿ—ðíŸR}Œ©6)”ºÚ0Í ¦`g*—®`º%%‚…ãJ¦Ñ pÔñºÜ®Hë'zkÂNWe¨ç˜ôX¤²Ë"w‰ž¿B•F\™A`&O‰é¡ei*ãu¤3·`ü½ËÅ+kJ”%!òyQ”èøIí= PyLË)RÓk™'‘ÈV˜™ëç7ò­^l1"F^Þ·³o¨ã2z?êÖ“­V)0L¹Å¼†LäÛÿ£§:ÔìÌ®š|öÿ)·×ðçßﺰå*®ºë{ùX&úvO‰yPXÒYØÇ_ß½^J'‡½ÎÛu×3®SÎÈŽÅ8ÚÃÖ»ÖÄýõçµ²¤ë,nѬVŠŠ_å wA>‚OJÊ"k¤p}ðvAÈ|ÒBäeó«qá:hS>:-o•Td`Z`´S>½È}Q.­ êªPÙëuÅQîF §ž¡9H†”p1`4bâ¤DFÅ¡€MÔû(ŽmPôøÔûM5嬤©~±6vlJ«`Ö`ˆàÔ7 dU¤ˆ¨ˆœjÀvÝVA†W+†‹2óHŠ—ÕuŽdX\ Š› S—ÂÐ(‘ˆB lš£!Š…b í²’T‘B:JµXš/jF¯4±ÑÚ§®àpÀðb ¸´àyǰ~Åí•5q¥y*èÞ,!Ø66áõ,Çî6¦F[ÏO£:¢tù8ˆ£²ØQ9î?"0®Ž ÇÒ*:rÐH`;ˆ’!¥p{^úõhêÉÇ–_i$‰I‘ÝK‡ií ¨†™© Âp¨%"ÜèÁ8h6PÑ`Ù¤~†Åê®0h,އHŠp€ñ °#‰dÄ„ÈÌØTp H‡ˆn6)?º§¯Qä´# A$‰@Ø#@À|‰h:Ïâ–S+‹ '08tês§‚®Å®uCŽhT¼LÄP¼NÊ(—6™ŠÆ®4¡¯©»­×§3bF~0¨Hp±Q¢˜«`˜F†¤5â§½Æ^mkLy2‡–%l­Å„ÎaáâˆàsQìUº4ôµQˆ¨ÒéK…Åa"•(º ÁÛÊ*;²é!Ä.B—IåpCZ¥Ë“•º½¬“ªXµi~T/LŸÊ™+ÑX_Ó!CÝ W`¿Ž<Œ9œáÝZ.ÉêDÛùŦñ¸czÇŽ6Ó5N´{ijÃT ¶>|XpË£os³ÌsÛZ=Б ò5M†¨Å†Dõ"qÏYõ0Z™ý)Lª¤¶¿?.äíw?woï¾éY¹¼iýJïl­‡Œ‚1¥—:ôS²oa±"øÊ–q uáT´äÝUÕ+J·w\›¶ÝVµ„ÓR•NŠ©/K˜§§\½Eº€WÓFöF³Tœ-­·;þ3…»•Ã-G^©óŒ›¢pv+jVóÔK§Þ]T @¹ÊÁ!†´VPi!Õ›Å)LéˆZ• +MÝCåq.á¾Q+¨É^]=Kr—ÛnŸÜ#:ãØ©aJ'‰Û÷soÝ«Qî0õÜ¥¦úlÜ–Ò¹ØÖª%@®ÐQÈTÈe_´w©ÊÅÿo×+ cjNÇUJ›y¿ò.6>d{GèuÇlõyÛZ6·u¿«üšDßÞvâe?•I&~¦žˆÕL‹H˜(V(Ò¢31²„*!J…DªLÔȇüòF˜QÕG^–§db~jÎ$[^–V åð ÍÏ0Äc ‹jZ°Ý6ÄòƒË›! áXAF½G™/¡KhjµSodXŠXÉk=ska¡ñK”#d¹Y“ꦪt‰a“†þ72|PD ‰PÐiÃÄ„#>¦dˆl'L"`¤°DLšÊT=…PÕ&N²þsS¸[ªswÙ÷&h´,ºK! ¬J+ „9M4mR•håßϦ“ÐWЇÈ.ZÓ£Ìc«rÃ7ÒS׌¢æ;b’éJ<ÁÈXÈÄC`"¡ a¥¦Ë FØ2ÌZfTÆÔæžkZ·,n—Å2 J£p&ê.ÚéY| ”&¡{$jŽjH)NÓBb¡é(ÿ2Yc ¢©ZÝ08:>1 ‰„rÀàÈBè†3DÌ’4ù9µ%x˜ôKHÈ… g *p@â“„ÊEŒ?÷EŽ+ àö2RjÌÝ¡zª©¯'µËD"b¢‰Hf?W½Ö8£kšçfÉ>nwF§üüäÌ(Èù ôÍŠ–» gl å–&ç8‘H&(]*fÞI·ÚÄ÷¡É|\hˆ3ÁÑ*sv:dãÌÜ]E'Sñe}Ƨ4ŠL¹¦vï§#¸=Qçsß«)æ›5¤59Å×H3szXµVqKh‰IƒaP([ &ƒÅƒ7‘¨²Ø‘^<ˆQ‚ÆjrÞ²¯‘ros0Il´e"ëíd¢<-49L½„oT¬Ž**ýɘž®Jªû{O?ž^q±;bôí„>:å694Ø«ÇÛ&غQSk uÜsÿõê¾½;¬çm+c,€T`˜‹Tx&²ÂÒ]Z‰¬Ò§S•h’3ßI¹½Ï=ÛÔKp”óYnumyòŒiÈ”¼ŠGÿrZëROy‰ ‚<ˆÊâ~{).ŽIiqË{³iðŽ©ÎºAì™rû(å¬aV ª‰òlÕ§ç*°(XLŒ#h´L¼ÔÍÿ}^Ã>ëöàÑl‹`‚el#-ÐÉN–[L'w oÓæ£J>T£ÕmMZ†do”]>·vW»¢Ø›Æ8}e_ÕÔö(ÔYòrÚ—M¦׺¯t“õ*b±«¯¡ÛuËw'i¿}Þ¥©g1w¹Zñ†Î¹dáŠê¶ž&Á…Í2©¿Kª2Ûpk^Úèè>Æ 4Á©æŒ¢BbÔÃ%„"ÇkL'J»(ÆèBÕ4…qY¦ÉÒ0NL­”JY,óK>7Û6 ^šÔ¼N¯zudîÝ!2-$©‚4Ç%a8GÛ& JdX`9G:¦ÐÈtÈ‚ðÐD¾¯Ÿ.ó%• Ä|Nª~y°‚õ%‡Ž«&DRÊPÖöÕ÷ðÈC§ž"¨V`#..xQLÒ¢@R š6 $ÁI£ppàà¡Çˆ ” Ãh2†¢4v€vŒCaF5a‚êõ¡Ír‘~Ý hðúí…Õ ;HÆÆ‚€U`L'“¤Ç‹$.FÍ 8€ˆ\&z”.‚¢Ÿê«hå›ml—VÛrÖ”<2Úd ©â–G—'mg9ByNña(—S†…ˆÚaCí`ŠT$‚‚W „q8“T ÅÅ" ”£M$˜¨ F¹é‚AD³ä¤U2˜q9ÀcÁ©àN„Øn 1¨2ƒ /„`ÆZýMc:ª§ëq|[ˆBX¬ÈL‰¡°b%aH|%4€H, rÅ‚‰àôN0¤ ¶8¨éYFJÈ…×àœ áˆä. ‘æÅ&ENYÀ¸TÚ‚µND3½çwX¾ŒÎ”j¨µXž:.3ÆÞ·ÿÑ©—RS·±Õ“_M›"681×%Åt Õƒ€4Šø=Z./£ÙNf¸çYº¹rw¢$›ÛM¤×Þm:ÊpöIm qºó hyÃÚzdZAÇ~[­½ÌÖ ¤ö-É*…õQ¡R‘ßM³KY´‹%ІæEZ&L]BfmZ¯‹pšp_ëðVƒÒQÉ㡵Hä4)ÖÒ *¹Óð)©ú­#îN–—ØÍD# ˆhðt/ õ°Õb›èêÃiû6o÷û¶éou]·¿ôÊl«îHaQÑóõ­µ?A‚ÎVi¤ŸbD†ŸFÒÒI´›t®PÂoc•K“‡3 >ªF¨ñKž²¦7S7Æžå÷’™•ƒ‘x‹üÒhu™£‚Ù§%R»8Mö›Wç>—™³]’)‹ ™·v>·}_”`;À4¤…>s±äf aDýùÕ…g}Ö•ÇâZô 4}Bˆ¤@SRŸZF—žéì´­AÔ R è#^&eɧÐnÑûSþªA;b™‹8‘EŸ ·UÍ9µ Z?rõRÅÙ{EqMW õ-?Yƒšj*¾.cU4å˜åþͳi=œGi}¦§Zãn–uvº»êoG¹!”>©i¨&@±9ܪçÖ$¤“§æa1cc6Xl©Ç$ÔFÒ%[mV'ˆ¬\ªò±b'##zCBå5±~¤¨¦§uÔ0ú\¹ ?Êä?ٵ̌aÁ ÔpÉzZlóÉ Î„(p9ñ¨I FbÔ Ê'bä#ãk3‹&JD)D±‚$Í*[CˆFªÊìDLÚ")•ÔJ[×644b ‰ÆÆÃ3„ç‚Hé`Â(lpºêHàΩ@ÑQ%Å •E"È}#Ò;ßLk)u¥ÁÒÛÔ¾l°Ðxx8™YQN áQw7„† ®fFö(­¢™ø‹ß‹Hù{å¯ß×W»ÛSùÄÎ?ZM>^ÒJN*eNF¡jtnV5ñ£ÉÞz#ˆìonaÒÓ°—½³œÕ5¦=É‘ÄKႲ6N¡jñw™±dºÂ€x›Kž ³TJ ˜˜@‡„ç`š5§6j» Ø™&5Ä%!Á‘hÆã8 2øk¯¥Ç ܾˆJðn ‡iTe£¢ÚŒø¨ÁIJC ¡6(8Œ„ÁêAA0ùdÇÓÊF6JV` ¼¼¿YDÞÒ¦”ÈœMDÎk>GyB)kg¥žFê¨DaCRy×!ÚÔº»B‰uK_Î*sÞ4LÁ’³ÅËX± Ôj˜;2?Tj$ JU~ÌÏqÌ7ï;-/‰ö\­ÆMhÇ©¾ÿ&œB¼…NS0™•X6õ éáë4èeªÝõseŒë\Ï 2SRljFP¤”gò¥»ý\O“¨¨˜µ†ºï=Üœ5ÏrôSœ¯=§ò÷H [Éb?.äV•–£ìòt~6µ§[U,&ÃOK8‰×WŸAù-Æªš›±£ÜÌÌr®ÌÌÖSu›ÀÖ/ñÓŽß+¯­iVý¾k*ÒU F–ß³ZfSË݇f×é•ú8¨ñ4ä\­Sõ²î‰£Ä.GFþ,|3 ×>ª[¯o¡Í°¹ûK.J®¾Ýê[ñ?0œ6<»•š®_ È÷™Ñêá¬0œ•b²¹ÜžÝYMØô¸“yn¬1ˆá*NÄg¨yúm*²’¨HSªya½ž2D¿øFD}¡MlЬxO5tfç „,áû‡¢ Rp¤x˜tÑïz«Å^+×zÝ^I%ip¶úlŽf–Å 0•MÞ]Îa+s&$‹ Ò@KpÀm!D:Ñ$âP64ã$¬ª¨xJ„`¢²nI‹Hºg " 9–ŒR7RØqµÕ]SèÕ0ú®Dpyh&N=ç…&Éb0$( l„AtÄ(tÁXœ"Šž ÊȆ¡ñ.—ŒKL¢'E%2R²êÒ“ûÈc®ð¬´sº¤R E¡éA* Ì:DƒÍPk@Ôš<|ÑmDâåVJúc3¼¤Ò{¡Öêê0œ?¯ê Ö¥.P¢„´…ÊÉX…q$&˜$ÎyÛe‹ÇFEK^Ò¾ºÎ*ô,„¤EôaÂqá’ÇZ“®"(ËQ9apùàm ÎPØlÔcrµcÖTUŒýÅE Ž„4A©òv«/sÏ'!‚Ð5>Ç#}òâ¶…*ÇSÛ|+\;õÐÄ<‡¢`‚*·Š ÂF&%À"G“Š..POkŒIíZUZ·­óxäv!“‰G‡ˆL*øªqB΄ @[u¬º_Ÿã¨¾Ã×Íá{ÆÏs¡ã"nfõqæºÜÏUcËT.) 4­UˆFæÈP€4C™¹uU¢>MJÝ~°Da$ºW’¬”VñM ªœÖ.TV EÕ‚}?XýX¦ÿKúqÊô_× Äéè¢zY£ÂƒM3Vÿ¼ÌñC ³²;êH¤âoJfFÍœ@Dñþ!|SɽÑy¦{ÁGÅFÔEix¤Â*ç²rÍdW—Ï$iO‰#å%/¤!}ÇOZŠFª’5}¾©¨ëv>ÿ7w³o­×•ÏûsS6Hâ-D•”`m!:é¹;ÞÝ ®ûôÓÇ=ïå’Útç¿\•»AÔÛÎs±Ô×±½”Z,,Óò®öºìp³ŠD³ƒŸn÷9”Ðtò½¯å¤îîâ_¸$fºŒË,Bf0õ @……M'fÛ7•][MŠ$º×öëtP¼‘c?èî««°wf-MLKJŠÊÞ‰šîRŠòÛZÜü·Q“‚Lu~÷î®b ÕŸCD¾Ê4†ËQÒڷל£4Σĕ§%^ûuÇáé¯ubäîV†ðMb¯Ø¥EfØæªÇ±IÉm-P@¹Åï-< hOdô¦!¼hˆvÓ-7Åìœ`5áT `^µ¨¯DËr£³„ƒ+¬4‰k¢d@\#—ÄúeÁ¥BâÑ ƒ ¸¹Š±T%l›ˆãg3èû íuD˜¿Ö«³ ±¦°eÈFS*Ö1 éÔÑ  ]³T¬±ïL?‰RòUÂuQøjYá”ãfž?Eá±ÊF •‘¤hÔɲ226'ȸU&šŽ)¡”ÄUˆÔ ëÌL! †Ö”¶‰Æ’¼˜Rê/©9²ÊŽ¢ÅAY}úXQß¿wÙwÑOêPdbà„ªLf 0ÐÖ Î ¦)Á¾‘½jÊ'äDßG:òµùýº‘WÝJÍÏVãmUeV´tžN×Q>xbœ¸ºCY¨‘ *oáæ&_*›©Äg—zŒ¢«Ì1fŠÄ²è¶Ni£(!©ì—†¨¤ªt”Œ… à‰¸lÁÛ*ì™d)Âà™”„°®ZÉ~7j6ª¯Å“p¨uÀæÆoqJ™W-|W“þß“¼¥C„BƒJÍ£)¢°9ˆÝ88¤‚°ì:PT9@Z‚H¦Ò(E2A¡ICEæ:0å^²½Eg@ÅSY<Ù, ’ß‚¹¥bJÙ}_…[´'Ȧ»1ÏGY.0 p‚ ûž @¹!Âñ¸¼|€0š È„ð!ÑS"÷=§RŸ¿NÔŠ”ª4±ÞRdç n£ÉúÅ&LDt P×‹Ï $SF•±’þ•>êèu¹œÄò°¢7a/•É ­¨’Ñ(å/ª:-K&ß›,oœ×YʽX/U4Ã$~/˜þ¹c´Ô”¥¼^GkáÇõu-Ì>“È”˜ЪCA8ä©¶›´ªI™í&~%ì:ÌzÖc¶¯Ø^ºû9ÏËÌïÝu<°ùÔºaT„Ð:x@`­dÍG èžI´jl´£_ºš7Çîýò¢Öé!kØÿý¦-•|ñugóîkýJ,|ÒdÆÈùäÓ[>J{çû®žôÔI9ùv!ÒÏCè>m:«Qz›á3k©ÇÃi‰ë·è­¹nnQÁ™Wéó¾~[ª¢~–,8T^ô•O’y9оó¯úoI§ÚoÄ“K”ïŸcn—µ©b‡Ì ÒÝ-j|ÞºšÎFä~Ë/Duï†ÕM~>ý½®cª¦­ClÙ8ÃííVŽj2æ9ŒEhž…èh“z-qUJ|sƒ\¨#Àe£D¤Ó%QX´¡ªtT Š ŒZ=’|¥–¨ð@M˜ªi…FÃrA¥Í(é[‚ºŒE°Üx†R DVeÉž:תۡãývóÎês 1êÖ~4& X²áeæ®<¹Á8G‡©mÃë,t? aó#²dK …¿±rŸàóbñy˜ïT¹c% ¥cÓõb ¨ÈøA "‰ˆ‰Ô XÜ@Úlàz¥R˜ ž˜//x~„¡’1Yáiv@(< @¨J.<^6J’±U¤Tœ}{·uìÀ9|†b1iá'Ç‘"㚩ţ³"t¥ Ó(:ɵÅMÈÂØ„WGkl³Ù(¬ï{ä»ßŒ}à{ËÇiT'Ϻ¬lˆj”Ø&‡€š €6ËG敤uA@˜Òf±q•™!”q¶‰ ‘—00X`<‡…†éÆ’†FC>š ŒlC°ë–é3Ä-uŠ`@¸:@à˜b7pÐ Áñ!_QcІŠ(Ž<È\+ËAœˆ¸°éQ‡ƒT›V©{(½D¼X(HˆÍ‘¹A! e†!ÀW#è4^xC`Q‰Âh¬bX:CÕÊ2ª‘R‚2ÂÄ¢áñ2wLD8ˆú Ój¨-PL]k¬>Ã]{ÿî¡ÛEì0Åýÿ¥ÙÌÔÑ´Š³àdu}š3Á"û+p$·” 8Ȩ= -ÐÀ á͆þ<ú›-òXޏ—IäÄå6ßÈãq`ÂaŸŠÌãŠ0À”IJJX9 Ç£¨ŒÕj!¥./§ç?Þü„¾™r¯o)U5é¥Ä¶–´úZQ ©Q&BÊid}X³‹Ê©²b&ä*ÑDH¼Ôt5FÒ›mô¥¹sS™EœºSЇš˜üÕ_ùØwÁÔŠ©_ͶÓé'^>N`Ëu]Æ9w&¬:ë·;Ý_ÇS¹]¤ËÚ’ª ÕT>!TÜõÍ¢0nÈž‡é'C|Ìcð0›­Ñʧ6MkÜ÷J´þ¸bSŽ4=ÛpôqìÖŒØØô‰ÂYÄfÞ»Õ¸R>ýwo7ÿ|“*r&õµ ÑßÕ¾ã6Øùäá¼›uj­Å,ÒÛË9ùUüÖ¹8A÷tîw]Þ[éS™øšs.!gQ‚Ä ðö¸õ¨¦öt*ëïHe-eó…ß'5”›i¡‰UÕ ¢VàÎÅ’üÄêɾMÛ5¸­Uƒî6½¯Šìbï®Ó©}Mì‡tº[.—µÎN”)­Ü­›bÐê,Cˆ­ O¸žÊ PÊ,¢TêxÑÒ‚dK dæËݤ¸(,<Ò©.‡¬Üȃ€ðpX écBÔAtÑ ww 5@}㪃éâ±[CìÏ¿h’žø™>ÍKäš—/|– JdÒGµÜZ:6#2#Ùr¥ªü[ t€È‚Ó (+¶É‚]J-ç2EÖ‹›ltÂämùŽ]S„ˆ‡Ón  qœi)Çi‘1""Ãê,‘uI¨#¶5=;$6lÙ¤†–°;\ûh F™‰ýI³­a[£©ŸûŽÃèÞlyŠ Ô‰((‰ºÓꑞ,Ä&ˆý/"Â6èDÄÉÚ»[§Y¤­&Ö÷멱m=Å~i8®ó]üD˜ê`„µäƒm4µ)Æž¢g³oi!Z"ÆTGùDM*§¼Ç$ƒLÇVU³‡ U±î)úÕ*rrË´tPt°ñ¿!&p±mKèëWÕÕÙ8Sá›X·ö‹<‚!°‚øPa !aÓ$—H[¢•L<ªVËhCÓFÍç0xÀÀlBxZ8@Û ,±eSM(ÌvÉshÊŒ4uÉÕ2ÄGŸ WÌR7/ÜýþÚ÷´æjÜ+ÿœÖ\¥Z7JÝ%÷ÌË$‡å¹ºM{!ë™E<, BÁ1 bKQ°¼ˆG#Ä¡ƒÄ6}%IDŸ*~£Æ¹ŸAʦª–骂§Ö&x†H$•LvlIÁ•ŽR í*6Ý,²ö¤œŒÃÕìöö›=}\–(^Ì‹¤Å[ñŠåaÍ)$èJîUÖ·z)-%¸R”QPÕÁ›ˆ•©c÷bÙš›Ã£ÍW'¯õyUneZ¯ñÆܪ‹c¹ømª'0‚†Þ­µ¡QGähµ®ç>Ý÷µƒœïê^ªÇRû5Ú=´¤ '"&[9E ø•y½N­ëå<§ìµØœï®¿uqvvµª5Vù¨[%éñbuÔ+ûSZ‚è7ŽHMCŠ{ú<ã9F^Ž%N.ĵ­c#0çÂ<¶™×­|×·=çÙ–KijÕÊÓ¡ˆ: 3q¤ŸöÿÌï]÷ãk“¼s£<8hÒäéÉ;‰«,¬ºd4x¿Î›ª‰1‡µÕoïÕúþ7mz5 ªÄ¹•µÞØÀpŒ²lÑ4IÃ2âê¯3+«SŽ5†j¼tfç{ï/·ýß(æó«\£åÍksîÿîï¯õ]¿Ý’s—½"ª(¯Ó¥ÈM#( bH†TTúY_4©8ð%ÃQèù\ÅÛˆÌÑáØä@ ‚18Šæƒ5СBA,¸Vã‡ÉA`jìcÕÝ–½ƒ¦˜¡:K–0ÿ¨€2$E¢ !¦gƒaä8 ¢ÞD™A8ˆ|”E%‰ÄË…èÉ0ah¹²GlÃÒ¥ÑÌKD‘²IÛQâê„ÆV ºÆƒ‡[ð·6Ù¬È\6Ašm2°ÔD ï 2Î Ž‡UCƒ)•̸K@FPÏŸ±Xî¬ë´¥¿-Ü[ü”zuÁ4Ð>‚€8àÐÇÌÓ£œñïqâÞ ÇO4ø…!öýŸF-hÁ8¥Ø=Ö‰@/ÔI"€«‚W²xÑJ0 AÐV4lHhØå(Ô™4”^£áªgù ²Á¢LôCç Î’.0\ñ‡®Dx€1Z[9ÞŽÀäâ´HÓ4=¦Œ”˜+CqÔ®\xÛÂSÌ'jœXÔ™Þo²˜óÅ´\ÒFåF.œrH(Ž”ªõ{©Ô­/ëOV³¨—Jq…ެ"ðô„Gƒ‘hZƒÐC" ©¡£iŽÜTºÕ—óñv̨Ÿ—™ C(£Ì¦*JšgçÍY} ½!ÑÂ>g](Û*üÞÕ+é_óÞ[2®ÙÁ©•¨_$N(«MMÈRÜöÌ9ä´²@¹[¤JE¦t…S™U’b !:KÄÕ›EìÆ(ôfò0}Lê ƒ;Aí°¯¡cÂäª`°bÀé„­+ä h0l^ñ=E¬™5öã©MK3XÁüû}ß}ºïï³~í (ûi•Ë já{*¶fªccÐa”°_¯R»h”´:ãð¸|!é7të1¶ªø$Ý{<ªJ×ZôáµQ‡£Ç¨+…´Oª5šl9®úE¨)™7ÎÂs1kéCÆaÐM/Mjj_•ÏgWÒ/¯¨ç½D¦¤»£°Ó(×Voç;#²ÛèW™sÊ\Ñw7K§MZ-ž¼ë:FçzÒV4Ú¾tKԺ·/ïÛü—wÊ-RÙ]µûƒ-- §Dfw{FüͬfgœwMÔÖ-‹æøÅµ?ËÚæîöës§“›t¥;¾ÿ÷µÏøfÛ·s½–µVý eÉ“Xâ€SÌÔ JR.0™ó†‰DÂR$45g|" lTTb“d“‡mûCTéFrC‰=™H*H%(b`ì^I _Ó²û°^òêM6º`‹)ªP\nàºÀb‰…‰ÈBH­R ,^”€lšB×?V\–?´¹c}ßðÍrœá,˜=á %07hIxILì‰t[‰¾”‘iÈÚ$ºyx¸4õdËóZüw$ïÝM¿Xʲ´pa´£œß*ÓJ? ò: Ö€éÃËÎ GxŽ Ì‹ŒºnbËuÔýq;©©å®®¯ÁçP…÷¥´ì#ßXaÚ%±DXT…5âxxøh+,<$ ¨8X»6 ZMçO–eI–Ëp›ETHx^O㺊Lè¸Ü*–<Â5›ìDlIÒw%”lÓ…•$LÅj…SËÞ…ár¢Ý4&¢†ÕB`^eðº< iPZª¸f—êü$­§ÈØ]´ ãrörêùµ•!iá¢â-¢)’ãûb D'†M \)ƒEáIàËLÑT Ïðª>ɱ¢O©a:šÒ8²–·V; ~{¯ûWÛ¯_sUš‹%¹¨rˆPƒ^&AÚÄ&BßÖž=uyîçVã¯êÄžÇç -ˆ)úÙ¤|«žš-NksèwmÍçiƺ£fކ-ùhñzª¸åö³ë½´RFµ:šÂÇ— ”çenäû¨ÿ}^¦ñ‡´f†àcÎ=o4‚&ÀìWŒnëu©½ûÏi¶ÝÒHù£øsÞ|_¢œxŸI¹ÝüêÇ–Þ G<^ËMÇÅTFpãB‡iH,†ƒÐ5jw°ßÌç6êU•gw•¦GŸÛ{—¾ë…¿“Äò1ÞØÇ“µ.¦kÜRF2à€:v`x_DÎAEQFa‡qÇqÇ ‚ ‚H ‚ $’I$’J$’Š(¢J(¢Ê(¢Ë,¢‹,²Ê,²Ë,ÒË,à 0²Ì0³ 0ÂÍ4à 4à 0ÃŒ0ã 4ÓM4ó0Ó0Ó€4Ó4ÓM0ÓL4ã4ã8Ó0M<Ð ãŽ4óÎ<ÓO<ã4û8óÏÓO<àãÀ<ãÍ<àðîÏ8û<þÏð<Ó€8ó<ó»8ð4ï8À<óû8ð<ã€<óÏìãÀ<ãOÿððóÏ<àðþÎðþÏ<þÎþÎôÿO<ð<ÏðÿÀ<»?ÓÀ;ãÀ?³ÎüóÀ?ðÏ<ÏìóüóÀ?³½<Ï8þ<îÎóÎðÐôóÏþÎÿOìïOüð<ÏÿððìïÀóû<þÏ<<ð?Óþ<óÏÿ<ÿ<ÿìþÏðþÏôÿ?ãÏìðüÿÀü<ÿøÿOôÿü óû?ð“ÿ ?ðcû?ð3þ?ðÿ?ð#ÿ?ðÏü ðüÿŽóû<ÿÃÿÀOðÿOü ðüÿìÿôððóÎðïÂ?ð3À<ÿ8ÿÿüÿüÿÀ?ðãü?Ãü<ÿOÿÀO?Óøóþ<óÏ<óÀ8ó?ý3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÏÿÿÿÿü˜ÿËü(ÿÀÏüÿOüÿÃü ÿôþÎü(óý<ÿÀôÿÁ?ðcü<ÿ<@?ãÿ ?ÓìÿüÿÀìÿÁOôÿü0ÿOüÿÁOìÿÅÿÂÏüïÁO?ðÿ?ðóÿ?ð3ü?ðSÿ?³ÿ <þÏÿóþ?ðÀ?³Ï<ãÀ?ãÀ4à8ÿÀOìþÎôÐ<óÏìóý<ï?³Ï<àÿ?Óý8ÿã?Ãû?³À<óÏüðüðïÀìÿ<ÿÁÿOôÐìóÏìþÏóÏüþÏ8ððìãðãÏ<½<óÎðÿŽã»8ãÀ8óû<ó<à?³ŽãÎððóÀ4ðîÏ<ó€8ãÏó€8óO4ãŽ8óÍ8M?ÓO<ÓM4ó<óÏã4ãÍ8Ó4ÃN4ÃŽ4L4ÓM4ãŽ4Ó4³L4ãM0ÃŒ4à 0à 4à 0³ 0ÂÌ0²Ì,ÂË,²Ë,²Ë,²Ë,¢Ë,¢Ê(¢Š(¢Š(¢I$’Š$’I$’I$’ ‚ ‚qÇq†a†QDðɬÆÿ‡öC3Àqì2ý™‘”aÿà8¡–¯K;/‡Nð í»ý+ZîÎŒd¢ý·ì†þîä3!™Ðüî·÷wÞÒÈþnG~ÜÍÜÜøvö|!‘Íÿ×i~§·¹í±ÿ®äsþëÇ;;/¶ß˜þý–BÕeòT½ß ¶Ãöûù¶„uýÝ„:[«ä??ÿ~óøo%:d¥Û_ö™›°ÌÜï¾õa[ì!çoÆYÛ™-…c¶[Ë÷v|qnØÇá(×emø:Ê{yÚ×Êåá_϶æþo÷Ã;;'Kÿ;-ëô!8F?]Ε÷¶,þ­¿2ûLÉ[{åÖ܇í÷sö;ß½møn^÷èý—J\VÖm=Ÿ[ez÷_µ{¤hï~lù.SJýEÕsÒCS´µÅ%ó¿2ÿχæÆÿn…·¶9Ÿ¿ K)sÏHñBkXË’¿YfÃ{mÔ¿ÁÉÇÛø=8öÂÞ߆_áîþóßüþ_?:2—C{k‡·hmvñ¹]¿~wföwÿvn÷ÿì»s¡ï~^9°ÞŽC?²ù¹°Íß„29‘ÌÏËÞVÛ}û¯»ÿÿùÙýÿÛmíüÞ„ÜÖZº¬fìGþûoôµ6„7v1üÛíí÷ç*}òüÌì†oöngïÃ/ûB¿-¿CeðÛAËK™­Ô¹ åww7ÿs#û×õžæs¡ÿ èCÿ·áÛ|®_»s3?w72ý¶¿}böµ•¬9ŽìéÆkw–ܶîuõìý–C#ÏžW_ö:û)Ç{ò~·Uû±œ?êÿÃã´ßêÇ}×ï•ÈC2Qþ?™™ŸÐüËîûÝ— QYå.?]?@·Ê› Qa‰)IÍéâh°xª*ßSïÜú£Ê Õˆ!ôÍ?>ÙÿŸÙMŽæfÓ:¶¾A©³î¼×…d’I ¨/ð™!sb'(svÉï{Ñfr—m9 ß„WŒv0¯÷ç~Gÿ³ÿÍýÎÿÈB1Ž Þz¶†\9m,Ê(+YjçÃVºÑžN0ÍÌ—[2Ÿ-™,ø~çÇzùûù]íÝoînÿçì!û›ùËß·¯}·v÷övt?ûkµß¿ìw¢Ø„±xßwÖ}þ¶BÓ†e·wóº—^6Û»)ÔÝÛû»™¿Ùû¿ÿìîÿÌê\ä—g¡]÷cؾ¿ZIDÙ~»Ñèü;qeG¦z(—Åîô>ß„oý{íáoÿüÈfçËá~m£mvïõi~‡Ï#ëë0Õr_øÃ0ûõïRÔ®Ç÷~ô…&äoÙ‡rÒÊü½îsi da.•³ô~:ýã»’½þÈFíËÃ>ùŸ‡×3Ûç©MR0×ÓÄÝô·Ç?oò‚;ýËïÎé®r‡ùךÈa>Zæ6j«d3óÿã ÈC¿÷÷ëò:ýYùÛöI67nrié­‘¼/¶%BÁá¡›_u7È­<݆[ÿ­û—ÌÌÎØÿB_¿Ø¿´Îç~Mží™Y¤€4çSº´v?ýŸ„²†Æ†ÂЭþÝ¹Û ÿ‡}ó²±­¾ûÚ…ãyý6‘Üé;îÿä%ùYÚù½Ìí߆nþïûë9Wë ¢.ÇJŽü·àþgÂÙŠ²ð·Ëö=Ÿõ½o9»Šsó33söï‡ïfv|:ÝùÞŸÊ¿mëÛž“£†Ì÷!xgÆ¿2zõ ¢°ß–ÿÚËwïçÿgä:›ÿ½½½Ñ¼~ù×èe«yôI‹Ë–„¶×¾núìw×»ºÿ±—ÂÐ^Ûj׺þ»‘wo[äåðŽÇ»Øu£ë·i|7s²wí¬£¿oæd3?2Æ4ïzÌ«@Á׿n)|Æ™’Am9:wÅnHRe®æÇ4×РcvUÒx–¦ÊLâ:Ê7·Ê _÷ãÿ?ÌÈmß¾Ò”[ovªßÑÒ§¼»("¹©šê¹n÷ß·Zç§šVê…Jy¿ëoÿfýs27ÿ®ÆÌÜÞ¿æbÙo¶ïì‰üøà @ Â|îJ÷íÿ‡^.°™ë}±ëü?¿§ÐFýùÙýšþßÿ¿s3¿oöË~ïÿß%öÌÿÈmöYŸ ïß?3¿¿~9ÜþÌ̓†Ä›×œÉâý<—Ã%ÿ›|¾vz×oóû-ýKíŸÆ.ÏìÍÙîGwûáÐýýŒ:5ê÷G^z.ûñÞûVöž¿-w³7T¾ñô¦*çãm–oC¿óóz_ Ý߆nl3;zÐøæÒöu¶w`0!à”†Ð0ïnG÷²Sèqÿ¾vW÷o³í¯ßÿ¹¹\ï[í|ÜÇ÷µþ‡ô+¿¹žýoå£x}--ý–½ý Ø}þÛ`õžñƆ"{æžì4yÏ[)Ôî„n‚&n•¨ù­Î@§º®;çâHó- µkï—øþO/»ñëþïgfä Ü­L‹]jÎ*é±{¸÷2é|½#ºþÚ5ùy‹Wz™ùŸÙ™Ÿ³‡ä³:y™ †fvfC!îéó·–ÞÜŠ °£ÐýÝŸùЖ^û}·Ã3öðÞßìæfÞ=’®w÷ÞNÿýÿ¿3!‘ßÛîO¥‘„6ÿ¾V7߬?w²÷ü”÷ã³õžN_A_[×Îéõ~Ùýÿ>®þ? fu;¾ÐøÖQ„Þ9§;?÷rûñègïvgïnBЭìOZtúV÷¡XýŸŠÇÿw3·! Þ…­uݶÞQüüßÞÝߨçÇ%îÃ-Û†ïä3s?ï'}Íwö-ž¡) VTð1ê Ãäøy5l’›JLäIÁD`È‚é›@.Õ+ðsô<(9rP<ÄA @Ÿ‚"€éÂà;Ù’$^`*hlb0C¦€ hbð#à'€É°F“TH 71ŽëÔWzUj´ýÚÀÐz«Â&ˆÍ+rÕx«Ñ†÷æædõs -/Ûùúãö«ù¸Æóä`ôg± é-¸ è{¯Ã¬EãfÀ¸Ch³>ȣʰ^»‹Il¡W@õr,Bû¤  €JÉDð4Ô´*³NÊegŒU'lVÔ' Ð,ð Û#¦¾¿ßð”|Ë ·òݦ×ܶßd1e,Àï#€¿b@uà½Ä;}\ûUÿ{îxÜHA|£`"ሠ`‡p)p|¤I qðüÀx€ƒ¨@=ÁBHÀ ¬h˜¸0mP`@QÀ1.ÇÂÚÅñT0º¹\«Â#ˆ¾‘sþM@Ø8Ð'¥^ÏÛãÿùßùùÿ 9·íìÿË{ù™™ÝéâZà…€;7ß„¦·bïB#$ÈÌO"²TÂ;u‹CÊÓ©=Þ¼!{l¨ %á:©NpJ €_@ãþN À)€‹*–?¾sΫ­¾ñúOGÉõ=Š+ƒ}õs%·„mïhçÆ÷G­µŒe²Îb UD.ÃPï7ÕÀ `…€@ý眦¾soíyÕtµ‚5Gïh?"o®MõL`O,,BðØ¤€Éƒà1à:ðŠkŠA¡d ʼà0–!ÝHZ°~ EQ‹Â€¬U£–Æ ±ÛÛ#2X3SŠGKÈ^0LÀÏ÷ÿ³ò¹|ßÜÏüÜÿß–Æßl„³s6›çŽp dYËÛdlˆY…%‡ƒø C0ø”ä½óêâPA(&Ši·W}ìËÌ ` S«©VùÒ’(€(`Eƒ 0!jŒbÅ£*Ô÷íëHPÕ$—D¬×ÛmÞ‹YúW_̧ÌãÖì­­;_-¤él¿Áã⸌ Ž8]ÿ¤S>ÔzÊÿŽ­—O„’@–² 3N€|ø§Á퀧j°;€áˆ*AJ¸”àŒœ ›5ˆ®;Ê¢ üù@%0 ÀLA§• €ÍA‚ À\…Õ $ÀåT‰ÄëAûPi*IAÕo‘I HáXV7žd·ï½ý™Ñm¿nGë–­w3+Û#±é¸@jß–Q0•ßX_OË'& "P0Š€Ž x¸­‘ h &“Ó«¾ÅüÊÔA†@¡2 ‰„n€'€NèßÐÝxe«<ªVì@J‚c~ê+6$¦K¹Ó[vؽ\Õ÷÷¶z¦+Àä¯ËÚ7õ®Ä§ N€Ë×õðÀ#„ûିs2{×q› ç¯&Ö–qg3;Z0‹“j`N€PrèžV'Z8C3AR 5Á'7ƒ8 4Áº ãÁìPB(&‚ò¡sÄ@4†Öt€ו !2‡Ë*³‡&Ï-+ä„ÔV7˜fæs³>Ùßùûû››»_î·wþönvfæno@zÕ~]]C«Î{y“4JnËêAV˜H%Ь݄p +N¼ü‘FþÌê± ˜Í‡#ð‹ ÀQ…sY;ö¤vŸ§ŠzÇMž^(ܾ~÷Â;“^Í¢ä:Wiå¹u¬y¦¥ ¶{¸ü¤QLÀ‚˜U…áxPél³Æ{±ŠUËž—®e eS|üð¸TîVÑ@$%d4‡p;€‚<IÐ)§r€ÀDœ°0‚50'¥r§Ps A´ôä*rŒÁ$d?ª°"̉â\ùÎ?ð[bhb]äƒböÂ<¨o¯nGéùûçg~d=}¶^–Êås;·ö9ÃPMïcñ´—ú7¹çÍhˆJ0 ´2dĺÀ ¼Ü Ç5·‡Cce‹E l Í…(U&$?gåøJîö²›œJJÊåW¶î¼ñªhËáLèZò³½ ?gC8½—¥ã¹ëÝ×)”B`P!RÀx$†àŽ 0h›*æúé}B³£öouö²`h0…#7Ú¿ý¢»òPRxppÃz¥I‰yÀ#à1stË©õZÀ‚¨C!ÏHÈÁ $€ù÷£ñŠþ“+=Çhô0:f–(í@¢ºöÈd7s3a¿™™ ÜùF7‡möÙÿ¿™¹Ÿå ëy]݃øƒööË›ªjÒúÄ È3p®NÆz‚òÕ+ÑÖS#%ÆC°?3)`@œ$í7ö½¾êÙ*âlÊ«Æ*൤êæÊØ‚û´uìµ{-ðŸO¶»’ýŽÚU­R»†ÁØ p$<¤q÷x—Üð˜²ðÑXy$^\ òâ$ƒX< À}p¯Ö8±"°4T¤à††`èÄp'ý®Ëó”Þ¥À¥CäøˆÂøÖÀd pž `nLh*œ=˜êdö¤¼,U'¨I¸ö‹ˆ&€Áâø[ÿwêùiG>½›JzïN¯íŸyì‡vG¥"c7;8ïÙÛ?–-3ó(˜l À`ñy U¬ ÎU¨ö±,}õ:l!„G†À£ ûVÀ]kÚ õ€Û-‹@ˆˆ J¨ZÈ-àGLhè_þÝûO·YØÝnùtΰ~ó·K^ÊPŠ¥B 9‰@ôX` Ð BØ7€½€¡D»[qvå²ë7ëYárÿ(äüì #b0pœdìsYÔÌ¿#ͬ|ˆìÜ„UÅyÔ<ó׆¯W΄"áha( À¸)„xÀ¯Š¢Xtd~DWvË“6H`ѳ÷ªõüø¶™ †Cs7w?ÿ336ÏÏÌéæægïæäC˜J.m-Ëõ>2óïß{m,(‚°*"¦-#±hê”óéä ·H0 Ùù ‚ aIjºF+2f4| Ç„i/ãߪ¨üªþué±z·Ý¶Z—®? ZQöðŒSd ÙÅ™×NªC@ðÄEH%°”±Ð ÀÞ$84qÏ뫸AÌÀ*AP`„:#.‹‡0*©šK€ pc+dŠj+8qÛÎð\ã“DêÈÁ1ƒ3 —Kw‘¡‰ZÁc$gÅJ°…JTÁ§´#<`  A¤àÒRVÅ+ê{/ÎËïÿæìñÜÿ×/nÿf|¿~âØ,Â`^YÞ­eß:ÊÔ8À$É’%½ ?¬±¶¡E‹hè<ð.Yξ&V…Àƒ$ùd!8B@ʲöQðaÁ 5éÒ´ö=•­¯~ù™¿ºb³‡Ob­—¨Õà’«¾ÛÀ"@ý&„˜ ”qÃ$_A€vƒñ@Í¿€˜0 ) ÌÎ~0DA°YHÁûvT^Æ®§ìd P¬ñA]|”ÿkzJØ¹ÖÆB-Dð@ƒ©s L$œøÚ–ìÞ55D@›Ç ä®s\‹@{ÿºLÈ3 B¥Q_óaÈ~oîfnçü²¾C'¹»½™Ÿ»šC «¥œ~1Ͼ_çËBJö†Ã€  Ú0$Iôcå"%Gè×tÁÕò^ï4¾I ˜„%xæ×b΀k~FÝ„¼gy79*z7ŽÏöñìÈÒò»žnÇ5R’t)™VѪeoµ5‰€úõ 9MWÖ"Z«ÍÜÒ¼¢—{è}èÆPf”°ê+Š ÁÌ^iô„*ô˜\ ™·$Èxr/ k‚†ÀQ^ïGã˱MI P‹Œh Q·–Cäa €Ø1üÀÕnÓ§ÓÏ8»yÀ Å »R¡( ˆIòüï9)eá›~wçÂS×mñçÞËÚ°ØwïËzïžJ—ƒ¿+Ázýß¼¯¨qƒàlŒÁƒ HÌA ê$²§9+w§ÂNŒH‚5$ád@`øX[æ‚Wó4 àž6 vÀ­Qo7tÅM¾ßáïnk7Ù(’òE°ÚÇ®ÞÛJ)e Åɛ٠ֈ'n‚øÈ/ÀçóCØáʆæqzˆÁ`|Ó”¬HÂKøhæ/àQ@WÈV‚œ Œ¼nž^²Îsªõ‚1xûœ·99-™Õ­e|` ZHdœF ÁJ0#.´Ö+vÊÕ6LN³ò%<ÀXt™€ *¿™Õøfþ~æd!ù™ÿÿ‡[ÿk™™»¹™›‘NZ¸[ª-úÖ-ÎLïŸPüRˆæåà•ƒT p¡h`|¢ÆúÁ9_ºì&.gK…@%$ÄguâM”¨ãf§­§/GUº¯©ûxïÊÒ„ý…—‰ûOãºJý£íÆú¼§"rð$àÞÀ«S#±vΓ ÕMÜ¿WíHp —n.±- À@hc¦½gÊŽG‡.÷W˨¶2­½b¾Jû 0€g[« 3Ö à`_"¸%†€P›yÜ]’ÊW[*»ˆ†-Zƒ¨ä B¿ü¶5xg~ïçÿþ~ì~¿ý·¿Ïþïü~9_tL0fdi»YNÐ˲·O­:DHAД°ð …û 9ãoë­Y‹‚0.5$àü h…@ Ks1mBä€Îa>µØÅ)–K{tvó‹üïõ÷¬Î¼±åï¾òó¾?#™µ 48 ¢À‰@aVÕŠ·¬œÄK6ù@aÌÑ‹R™i9Zû@|0ÀAâLëôŠî {W«T:€: ž ÁáÞ³ ս͵äÔQ)l2ltk¢Ðõ*‡¶³ÊäÌ}çM4¼L¤d… ÂÌ€„±$N¶çeÿï=üßí¾nfnîft;¯™ ~gggäsnÀ;/„¥‘ÞûžÎYDeòs8p €,À<´`jJù nã…J¨óÔh`¬;*¤“Rÿwk…6TOA‰§N¶Ïmù«>,ŸÆR;g1woz¼äOÌ‹8G`´=!’܆é À6@LÕp(%£iÇcãòÆ0 Q4!D‚#CÞ㬺­K`!•+q”$°*Jtý ²BÁŽ‹"Ðwƒ´ÜÎâÓXf1&¢€Dqq@VÁuà H 5¶t”èçSª-î±ëŒR²PÈ~3©‚yI›£É ƒÐ"à|N?r,Øè˜2"A… èX|”ÂɱŽð‰Ã‘GÉ—9á”4•°qcì.ÄàÖ<ñÍÕ-ž¸«»SÒºbꬶGoϺ©ç¬Fî¾~xϾ_¿Fxÿ(}K¤ù ¦Lt¸éIIJç×ÃTéÕ  |õ™2±‡—ÅJÔ:f„}"˜¾×%Š|5mÏj]å×Z§ µ¥ºp„Ûfê¥ >Íæ6W–?6ì£Uê{;l¯FNvÆSIz8K¯¬™•/]×ÛÍÍÔ4yís•QæöLë‘s›“uuqh¨B¸*,ÓŠ‘Bõ•²_Bþ/ãæ.ÐSÑFþ⥅]·Y £¡E=p§¨T,jD)¡»õpûkÊŸéÿogB9›ùÁÁõ >Ê5ˆªÊ¨¾¢ôN³·Ù¯Í~ªÄƒjÆ ž^»×Õº _Ÿ›Òæó1‹×`²£³×"O~—óg친‚A4›=ê:•k1<<ÃÈ Ž$ûJJ¬\÷¤–¦,êД«Ð»ÐÈR±ëjÜs’4ˆñú Ã³r𤙆,½å“œe/ÈÊçÚA&) ZÒ픆I|L†(ô£Šì:pH¸‘A‰É-m†fw½øÚy-=JBûZ«¢6E²¼zè›b4tìI“–a2É<› ¹ ¨~÷߬?/'ýܯ»ŽAÿ¶Uûͺ¾ÿGöŽÇãÒÊzПÏ~v´úV_gŒ¿»>µw“MÈ"æh&™…Њ ²ŸLDSñG¯³cçÁj(Žš¥5hâ~‘B Í‹âS®9ôš1­Ë‰"pá~|šã>È.jÑ—QèÑ ©­Œ,®ëÂ/ÖôY…$ë–D+Íq’¥#ÕEñ3}:ÅÍ$@U!‚)Q±¹³51W´ûJÕ?P½ÜAñ©ÊäP¾©xÕ qê†h.å8R„âá …~NaW ø;â~`œ­9‚nÄWºì.%ȱ>uZ‡]²¯¬ig'ÙxAs(Ž$[††åŽâ⌂4/ƒfƒ¶VTnzZœâÏ&y?TØQgä¿û!ñýß–yÇ»$·÷ìe.T}N(®Qþzn<ŸÔgÅÎHí¤ê’ú˜Ý朄Mi[j†‰µÂ{XùÞ]…¿‰—ysº³2¦o£”qÑÑo­sÇ_™a×=°ÎȰx.!"ÌxÉ´­:AfWt¨dúx`/N{}s¥s*`õÏŒ¦&ëȆta‘q†ͧŸÞ\\°ñ¥+?VIŠž(8wNŽQ¥<,Š"`¸Eh¾¤Åi.ù(ZbT&8¸ììyÉz¶ƒ®¿nqùU¾çT=®+wj£í&úÖË[á_Õ¡y³{á߆MåßÇŸ²ßz›ÄÄçYÖ¨êîyô1J‚kêñŠrX æ˜IUXhI±' <ÞæR$Ô×uWÚw[Ö8ä¤ÚËJ«ÁÉVÌ:T°‡¥Óö\õW5ŸµåÓ­w?¾{ÛÿŽ×ý*$Äd-Éç'e)<Ĥ²×F¤ªٴɪ·¿ÛÜb±^Ûh;kÏ‘O è™ 9³z‰n¦Üm¦xe¦_¦Xa¥þGˆ¾À­!¡ò!ò¡ûD> )xùIÆwQgÛÚÏÖœr™c³’ÆÒ“(æ^ÐͦŽVgîkÌôâéÚDÿö9WV:û¶›sñÿ»ézO^•Ãñåš”ÇÖ„äùãòFÊ–«Hð»JÍžMê,Ô äò˜Ç8 Ÿ y  ujCsãki g°ÿ}NbŒ¯ZLãìôæ“h‚mÅ‹EUN¨99ZWœ#Ñ”9jŸòfJ‚³¿-Uño?§q‡e%§‰WœŸ/=á·¯/–OO8v,j'82\¤+³ï£lòÓ‘Þ*4.ÂÆT>'™Õv•ïUŸçïY9ŽãÞ«Þ×7»~ÙZ¹8^v¦3 Ykdïšüc¿Æì¶“×=}ÿ•Iír/>8´¤ZC`]NM`‡ C@Úlm^”¬îýáuà±ÇdĨ&‚o†%cãxÞ^IH&†AhC‘X‘Ê_2L5±y¡®«{üÙ)H¼êÌ_+å‘ù‹¥ƒ¤JÉ‚ÐÕ,"ú²ðì. šiö‰ì¸J8\-…’²¸ù’ë`ë¤êêÔ¾—vÂxoø¼œ‚@þ@q<\ ðŒ5¾@³öGÕÀíðÄ„mÛ¹wÚadÄÒIiU6'uØ€KÆ‘/mó 'ä.Ø®$1ùÓ¨IÖd¨`´ðp°0âÜ3¾tÝ*÷Uè¼Ð¥mE;ôŸD'yQ '–ë7m{6y Nï=‡Øa oªÔg'#ZIU&œ8b¨†Œ$  ‰EÂ#gþpQ‹JDs¢yh’|~G$yÅD‡Dö$³kž™“ýh'26pi¿cÃpÅ7œÌ †DCˆ*Q7ki¤BÁºAh8ØNdòò@»¬ŽJÄë‹£Òò8´`î¹Æ F¥""¡öÖAƒ?8“ÆþÍžq‘|VR³jø¡@u’ ââ²MÉΆ‘YD  M)#àî á\@›#x`Œ>•Œ GÄr ð6±$-óu o9ÍÝ«£TÕŒª¥õßo iîmKj¯ms¡—e_­é™o×úÙ/½²×ººÛÆšv†GFÄçŽÊ¢ÏÀòózk/™-iÆÆcg,:0Â+þI¡HÑ2y.ÀÎÆ¬6¢òß<á*ë?§ —J®ÿ6’bç R çÆúÞÔTkíµïQ\”IMýÉÊR›'¦e76Xˆêf¯Ó²¸R¨õ$ܨùS(`¼)õ–6sÏT¶àŠ¬Ò D®‰Ýit鎂Û#“Åu™Â™„·ký^§‘œI:GÒ&’nGò6‘ü‹ƒù‹0´TÁë„.6S>cÏaëN2·B#ÁÛŽ˜L­Z 4!])¾,üš±Ü{ohkF{­ï aLé&õm”#-í'W{m©ÿOÛ${æ‹®¹îiDŽ?fÙe¡2ÊÕ{Z£Zºhò–#‹JMäÊÆL«‚˜5Î>ßݪS¡gê…‰@ò»½çÒÓʆô› ¢ýV•ŒÈÒy‡d÷ó#U§.ÓØœ!’¬«,®5·_r[[™º BkmµùjûÃjµJ‘¼|Ô l#†ô„TâÁò0¨¡ï!ºüh½PÉ •hH&Bò7ÌÄéȶ4A"—†Ë n'J\a3E*¿ J38Ô¯Í'u¹ëÔ>ÄÕ(u GÎ’‹E,Q™¾ ’ù™*ºÀ´ìÇr)i‚ÃÊÌjÙqÌвuKBSxàÍÃñ…Ä?(S†a„\ PŒ„±èÐ~},ýþ£‘ý„6:Ûìºaf*/l¢+Â1¥ ©RÖˆ§ª‚8À¹Â¦Ï¨¼Ñ½ÆZmåÃ0ý€ô".ÁÚ[¤…+è(¥¨^¯ªÔTV±+Ü„•Ìo¹ýõ¡´³°ÜÅã(ÆËÙjZmÄÝ‚#ÊšTÉ¢êU™¢¤Ec§¬„sEgÍI…—%eË›8ñ2Î6¸ÑÂøé¾Kàìînž…Òb¥«<ý¿ÕLíïuþWO«Ž|ýûBÓ¾úîcž™s—C• Óˆ¼)²´c~¼¿û¿~ifì!Wši­TÙ_¨}ÜÈËç8zÎ3¿]zë¿ ­yóHšbpc¬âÃ×ZSݵØwü·.ãEŸÃŠÑ0“äéÃŽ3n~NÀÞidis{ª³—×éIޑؽz Û‹ö´í¾ÂºÝúû²wšmiúËŸ§äçñGoÐÿ¿¶»\ç9emÖóÖ+li¤Ç—c\<}{“¯0ˆ»Ï M ª‘HhT.ˆÁ¥D‘á¨v¼9ÔR * ’’¥aÎd‰Xa¡à¼ŒJÚ’A‰0ˆ\Í)ð¸XÇAbâk­iS{3÷<Ú…%ø»" •Ü6TK’’ˆ£19¨ÑÙ bJv{ÝZ”"B¸Üj"2E¤äUîXèG@ñ5Ýl†lD°øxêñbbéP*‚<cAl9ŠcÐðj¥A}ƒãéüã,¾Ãƒß¥^òxÓY̸P}o—w…^a…†Ê0Ð/3 &£Ó`«JG,ÅÓ‰äQ1Ðw"œMä%±±‚xåТøM`0gÏ,1÷ I¬G€(N÷6ööÖõ¾ÏÍ:r@òZ‰dñ¿œ$˜óïé·§[HƒL œ ñlâƒÃ%&ò-ÙNÇËJB°œC&Fâ£rsUjL¤S80>$œ.>N”Ô¦êÊ"Ì ‹‹?æ0 a&ËK‘–¤-lzf+EÕ‹IÙP*AÚ”½Äx²â1ÁÑX•äc`®2¨»Dç‹PwO®Ž•ÿåë·ü[P/šmx`ü7‘z¤ÉHa:'—ÁÈb)$Žªñ¨Qƒ”BC|˜4ÑÊD锟”ˆC C²‡‚.ïÝ64設ÌLê§ÜV©ö«~·Bgß$W¶Ùžm߯üÝFÏ*ª{5P·jx\¡ù… %è± i O†FhDZ úì€M&ê9eÓ–c£)ñU‘Q@þênÕ~ùÿÌ>KQD>àå±Ó#j]k ¹ë±‘‡MÈ+‚‰˜0b锹ϨbjѾ‚Kk7eÓœŽÈלzoç˜v*ný”Q¬r³qœí_aõ,ò¤aãÚrmè(Â{¤_¦1 …²¢ã¬±çƒˆÀbLKˆ¼òù'àÝÛ÷½ìzµúû.–Æ1‹¯Ï~±Q4íýã˸“IîY§æsâuxÏRÊÈË“UWˆügÑ}WJ7çñMWºÚ— ê;IäÛ7}ŒâñÅk=váò¼2Sz4M#Ïuiu²Î{Òǰõ«SŒ_!l«EºðÔ¨ÞI˜ùñN„ÈÞeÊÜTÁŸòkÓóBPîì½Æ UûmÎ8Žð~Ñ3”2¬¯´Ã·nRŠñ¾ÆßõÿÛ²¬âÿÁ^¿?šdq5UÐÎ)}MÕÁ½Vô“2ÉÛ–³«>{I[*¸çÆÐ Í“QõHÞ¯"˜æ (¶}"VÖ¾ÿAç[a3×ææ¦‰µ]ßz÷ÌË:4Õ¯ ïÊË·aÅØµŠ¢£TÛò¦N3æxÕdpE§ìЇ%¡-¾§ ù@üŠ577 5îLá»/·1ñ³!ˆåOê5T¦A€€‹Îu8fCÂ2S웟H‚ÒÌ2-P60÷òeS±:®oºó.í?fo®½[ñĪ æïóGjµ¯×Ùqf \&OûlÙ…ºq‘-¥bcC­„)Ðäb`z#°Å h Hoª‰’£Póh›7ß’mÌUýÝ­Á‰¿_mE}³Yó¸ áZK“ÆÏ`ü1DHFg#Y ;¹kÃâHݨ÷B¡J˜Ou%O,kLš· áú¥´ Z챞‰ãýn£°›>¶ÉËKïU´æŒOê5ÏyeoÙÇ}{7urº «xY#€(í5EwòX=Áš xÈpt)ìFáYמ!ÕÇÈ;Dsï $Åê›^ë´pÞhÐYšB’•dpá2FMHkäeC\5UbI£ßÚ½ÎðÅmÔèÈHM**:Gœ‰T®qñ}ÀƒÄË0©»/|Íj×n,ÔÜ™SwI’‰@£¶5àº~d‚:/£(°ÁÖU¢,aa¹eMû#wxÚÜñ%βk¹w~_Ù„o<رßþÛ/&z9µSvO2Ñá-¢u¡ hŸ GsÇv–ŒàfÉiÈó‰É(<¡¦œGR¥39.Þ¥‰Ÿ:6Á¤F¸9V¬Nr@ŠtœšTnÈÝ)¡>­KÁU×z dÛ·nŒ4ùçQA»7Ǣ×í̇G%|¤UVšë0„ºÉzó{¶ï¡JüS ?¾w’¦ ¯wöqÔÔæ†4¡™à¯tM\q1¯"ô0_u®jíE˹ï^¹ý —Ó׫0f k>OR¼)ªŽf9hMd©þÆñÎb×m¾”|gƒ×‡vçã™ûS}<‹£iºÍÞ´F[«²Š»N™÷Úì"¾Yº:ÃcÓµe´Œ¶V%ÙZf üCór¢1Ísˆ6Kg=&±*hø{ñоhk†|m­*r)°Úé ¢éN?g;oë?~ýæòΤ;îË/TQeîZ•…£8IiCs÷»'Y8v+NZòêŽjµ$§ ꯚu¿÷ß»¥{CãÊ^((|t ua(”nœA£››ÕQÝCò;'XôXêŒ}õ'/îÍ«94Ú—ÝrÙùy}ó·ÿgZBw¦­Ð†õèìƒxª [›gÎr7F3xDxD¡TÉn"¶!®6‘3ÅX±âWfL0>jbp^2x>†0¶„P¸æ'0V I °"K• Â4”¡°~|ؾa—‰Æ&7$;E5:Á@ݘ–Xù£zÀÐò'×}*™TÙÓî;5O*V©õ‡µÎƒL#F¡1 ÒA»³çfKÇG‡Q,VMFÔHIË*žÍ¬"¡ÑöÃB¢J°ì|©(g °LàÄæKì À[Äo0 D!hRó­á.9õè錊ÆMɈ ¹<3‚ú ÕŠŽ“‰ã@‹Äa˜@ØÄŠŽ/&,|QâA¡ „dfÃðôJ'ì@ ¬L%’¨2j´ÔîÌn¯yUîMm:WJÐ'Mígö$íçf¬ÃA,pDch8IKŠMÙ«µËU;& 0ªU  À ¡ÁÃ5^1pO³¾ ‚ÃÛä-ÈñeО,>/ž%‰cvAäþ1+8‘Ì–‰È.¹=>xÔp©ìºb² ½B8¼Ý~ @ðˆ4,8ѱ‘˜#%¬J·W“Œ®Âç¢CŒh®Gh§™Y3äCXZÏÌ[•„+±W ZhR4(¤9‚dä1+š„ÊÊAÙ)Yú®#LhðQ•¤T<»Ö8ꦇï9Uvë[_³_ºÇd;ûØÎ¼ý÷Õr§Ð¶™ãi]OìP1å"J^@³²>È) (¸wB-ñUX?¼làë14Ò†žùœ7xˆðÙDÊ0¶ã>Ts£§‚Ú°¿5î+ž^z½¬êÊg†ÅuÍ&•Ü«OXýrë7.›êW^¸Ï1$Ubu£õå•ã[ž•jË‚tx?‘H†¨!¯Ôë¬Ýå2JÁ ê“_µ`lÉŠ‹¿=ž²ózc`/¡)DÄŸH BÒ¤Ü-¨Œñs$þKT’œ³_×=ßúÇ~̾äî~¥.òèhÙ¡Þ †(Ñ©ó²ó—xý2RË|Wu$§Œ Жßw&û#vÕ«=Nóýˆ"³ü?º6]Ú¿{Úúížs:½:Õ'¶q®üu¶Y;TüÇBÓ×àü_$O#aQ,ã.‹pM#m5²oOêå­›™µ‹Ë+Õvjj^™õáx®¬š¨Öµ˜©—/æ(ÆLÈõÐJ‘—ÎPß–ïOçÖ<à –YÿÌ‹ê›Ç«XÛ›Õ´¯'¾°÷KÚšuôZ˜HV\Á;â¨@Š„=œ}‹ŸlúìºÉ”Û¬ÕûÖPxÚê½Nª“õó¾[«?þFó´3#|ì´Ñ5ÚÅPÿ»N;d9 ƒB¢€ …û@_Óγë=ØÑÉè´°†Ðù¥*…„¬XÍ!ˆÉíØ©KÇË@@@ÀT—BTÈ­ay –bÂq%ŪRúÎcË®ìû:ÅXbº¹…ª4¸jeR@‰'hp# Ž›y¢cÄŠ·Á^þÑúêqÃÐô5© †É¬JèωýfÛ éÒcÎù2¸Ù XÅ×0~Õuêß6kPQEÎvP,ÉTeµTL¨¥ƒ’³FË6Ù²!áç\L;Šäõ3Tº¤f¦.C ?"C‡°û&ð—Çc¹&Hù±Ï‹sN±BEj†K¥(@phñ$˜áZs·@kQ SÇ ¹Y‘Ayâ#‰ùúRçâ4<|ÌÍeM‘ðd9’ª„j™~Q“±Ž¹kXñ×UY¯ÅÓH’l¨».ÂÓ㲄„ê‚h!DU$—‹Ñ,BÙiRÜL9e0ÑöPÊ Í_½”Õë»nì.´?VÞÊd¯kæ^ýW_“î;wlÓõC7ÑšZbŽI‚—&t#JHat3%Š(€EÓ†4ÆÉ‹· Ì_4¼L« )'KqXvÈæb4!‹Dðf Œ‰™y/¾™ö!Ôè5E9uEˆ|TÃ,£|—PP¥ÛHŠ ¹¦¾´ª°¼¢ö;ŽM_½^ìëÈWŠªÅx|W35óy1g¶†+1‹*>–¦ñ2‘„LÕ¿?6Ñéø ieÐ,‘³9’‡¡D›„Å‚ï‰oŽQywÀªeU}'òX“r83C·AÉ.Qã‚ËÁn<ÿÌfké¢újEjïb9ÍYÚë)Þ:ÍyÇçÏÅQ£±“P›ÉØ?ô…ó§ÝGàÃòE'åð¶¡ÈB29G¥¿EÛØN~K%…Tå ÚÛ¯“*£¡¬ê¸¬ËìG(ç'¢oSM.5Y^‘„)uóÖ¯=nýºë>…¢¯&AtF<›Iªµ\Þ*î¹¹ú2ÙW’ã>‚:¾_£ÝÏsç¹Ø9#ßX¬{s­n»ïyYºûOÅÚ³—Þõ±Å.|¨´üÛ A\?"M2¸)9xÇŸÄ\[ì’ö½4øo­Yë;kýnŽîc“¾Ak­¶•¢ü6Ùÿ»§lÄ—æpíÙÔ”:9ῆuû!ÙÁÔÆX:P&ÍÁð¨3pìG£/ÄÄà[!M ýBÊ4+ÂÍž%ðgÙàÔà,g1‰BÈb"ÚΞž>¶^bS ÁRÆÃÅÉÐúø~P—¼ ·°±’ÔCƒdÐ.:!¤Æˆ`¯̀ț à`›ž%åßd®ÑH„ ›U ÜX! ˆe‚z‚;êâ¼E¸CT´Ýæ­B‡Ô5Ã’±(´J˜OUïÉzàNtS1a€ñ¸Z3+†Âñ _ÌÁñY‹eï%°1m|~[£Û7äŸYpW.Ptfˆ±ôña;âò—œá§Ã„3B+àê‘U]Lܸ˨¬áÜÃþ€Ó0ædk—BXecÕAPPF<]6‰‚”‡¶uïY‡2ÍE-««$ØC€V)-l½PþÉR·]B­é©:á |K@©N6@‚ÌÔŠðb7$¦©Œž"âÌ-` £D,o‰Öý]dK˜dDÊ3§IÇ ¶Ë¯®%– P˜ %Ôr&d0$'XcÎ aÜŒ Ò|7»õ¡iñf0HKPô@©AÚA!/Ò+sY…–QÜû/$±Bè$ƒñtðtÝÓŽ9òÿH¤grµÉ—A ²kO6±¿%$ñ 1»Éx‚‰µNÙ§ç.Yí{/ŽÉ¸»ú\JÒœÖÉž+¹;'öŒ®.„ârfv§ƒÈiP§Þ*d0‚úA=ð¶ÀްÎlàÖ%s'ò&‚??÷(¹w °c¢+…ibžê½Kêí ËÝœ9d‡P\µˆAun%k]9j«}tî/¼©ÖŠ&ôå4oíÙ½¯7û—ŸÚ,:£c(_5×&³¶Ùë‹¿°në-Ç\›æóa(⊺*N*~ïìó•_Ú­ëiÆŠ.އ&ĵ>3j[_Ý—ÞÐj Ö»pÇ—Ogž}5+ǘ>sÑ>Ë£/yl…ã×h†/·mé¦C8¯dk+ýaXt¾WžÂŒ‘àhò«åŽU˜UAÿÆÆ&ï+9‡Ý:q›"x±ä… s¹mrµÚÉízýšõ%ò–ËÆœóðøVU½£wNy÷y6®sX–CDâ;á|ЊÁaà? Õ†J H•ÃT¨ ù=L½¼Ò_]“hX%|½QL¹ ÈHðÖ ANT(4éõlÔüV·¼v¯ Í…Ñ|j?eD]'ØœléR ›­ÐÅr`˜ìnªë¾Nx¬À,†X)3H°#’£dÃÙD_kl+ Ìú‡M!©-FwKj—Ϊѳw»«TÓÆï?…(@X$’"T)NQ5„¶X?‰@ñð_àQ”‡°ah„9ñÁj¥Â@,”0  Ž6¯ÞA CªÄÅ_æ®$ ãÂIõ £‰¨ @n˜_Ga'jfêù\Œn È€õ@òFÇʹM‘¸CôÞs’âRBÄäßsðÛ¡pý>*Þ«ìs·+ÐöbÖØÀhñ¿YÇdnê[­4üUŸôD+ ’˜’EA° nm6¶Ê“WvýÓç!5&Õ‰ôRKî9 >ù)Û“*XòÖt•A½Õ¡RÒ34™Ø©[4`ôšTRiãâb"ä‰= ã²À«-AfmQRóh æ íŒ`þ_m-µÖÕÕºð°>+"Õ\æ‘²ë …© òÅA\Ž”ã ‘ |bN\2Vç)Çn¿5x½[×çÝ6#m= l­Oµöªj³É¯U2•¬÷gšJ%YõÁõ•€4BÈ‚ g¢ l\!)eG*5`nÄ(Tn,ŠˆE!l_uA{Ä4öm…R?Æ.Õœ‡È€H Âb¼z– äM6_ao¤*±J豯~G ×¨»üõ`ùØ¢Ög”Wl¢Ã¯+&'šŠD‰#Uj(–$—Z­ö¼³Í Ò›lœï‡å¬"ý¶È-Çž*‘ûž™Õ(Q’«Þ'ß™µÁ`„ã´£ ‘„ÑuÔckH`F j‚ ô°]¨^€^€]àÉPÃ!(élÊ4ºÅR%ÄZ†tB`±‹É¼ŠJ>±zuR«Z‰.¦‹Õ5Núî6¡##®Tó½6Zg_X±½•ãØ•sït2 æ~Y{mãö©ÉfÖ·¿Jw–ï_™$0ôXût óW>ä•êµÇB¸ty¸y÷Ù›ƒ+eÖó÷ñMÉà“PEˆÏç¿N“¯ÚJ›A¹ü~®´ñÇ{nï=¢mš!\â¶#|/½^~K|zÓ² œe Ïï²®ötûïý”vhÈI‚¬mÿ¬TJoQH2 æÄH4úÕ:ú‹8v'¤·Z±êËþÖ­ÿ£Hd0å×ùÇ;úò¬õZžÎ*¦q ‘YxÆXŽ•‰ƒëÀf;“ÝRæêõ‹”¨¥a¸|B:“z&Ã<'á±0V•ÌJ„ý]ŸTþá(‚0D„A"çÞ-¡ÔaJœ^lШ.QLZT/6”ØKE5HWÐ?K|Å@²ì´Üáq0åÑÒ3IÁ|0Až‘ q‡ð^ B8V¾LPIVIPh¥ÇƒäŠQ)0Øf7 cdƆš†;«A×íQÛÖ ¸souŽ2äÄb€hŠÀ¡‡“6(ˆæà4ÁÞ ±'*ìÀÝ„ˆ,BÖ…-M.nùú…i@:Û%³J”¤‘úq÷&#Òlˆ³¤…\”Dè ¦Àã1}pèJ½HØv\Rù ‘ÝDYë á¬4¤ˆ @tŸ«ædx ˈ/‰#¡o‘;X²Qš|j…ôPõæòób1«y W]¢ª4zˆ+"™Åôæ~Pâ¨ÛFd‘ôà y4JA†(AYË–$]ã%%Q$`J›xT7*iã¨!cF«£X,¹©HŒP¯?)£dáѪ*­u aãè˜Ê ¨%‘dù:èãž„èÔº…¤¯§‚ÄÌóf¯NˆOÖ“ùì ä'Æýj¡yq <HAüÈõñò@¶2 ç å @OÅ`O‰*xtxE+ôh  cÔ¯ví×…¯·¿ÝNÇN0çÎÝÌUª¥}»QƬNÉJ|éj¡üLò›„¯ÂD˜fAdÄ¥`j3C„¸©0òGYÄ1@xA ìJ¦B¡¸2Ó©ôF£‘Ñit—Šª}–!P+Âи LdkCíp°VE/6ÃYVGE#úƒ’IyJo⥌—6åWJ·\·’qÄ <6“¥5T\E¡ä¾_†Ï%YC\û/!‚;Õu{~èk÷¤¶0øO©v1gI%2¿›–%J`ØðÐ&…àâ©3Šê!˜Œ·Á’0ä)àÌù]Š¢‹P•±A0hàÔðCÜ1ž¼q…‹ •nй¾o± ¸@ÜAð½e o+!{Ž\L}‹›ÊËoΰ„Þ$ÒS÷–I̤Z´’¶2S_aõëI•Ôþ䡳õ–ü˾·s™I]›WåÌcœÝY¹zƒ fO%!QãþÖ‘î?¶;Ëä~¥—DžSœd˱•ßÖ¢1QXDÏSOg`ÌžcY‡•Ϩµúæ‡ý‡$~S”¾?«v}X¬Ž¶ö8´¯7¿§~ègv÷e{—ÃSXßVÿºÍå¦ÚÂê@únF‘º|T¶ Åà´—xÿñç±ù=l·w9‹žÅ³%ŸÒþÌÿ¬?Ÿ¼1‹Ó؇â’òF†Öèí0ˆD=R—1ó§È"VŽÇ ðô=µÈè‹ê–‚úÄw„„$’Q“t«U k©pGR'4! ƒÐT NÚz ‚ŒxrÁ>RF~ÃDwý¦ Ó>þ°É»||¼xm5ÈG¢T ¤|L#Ÿ‰ô]A5â±ù½ ÆBÀ{švM‘\Y;v6˜ÀóˆN— ŠU‰.!3OÍLÝþU®“û“&Œt䑾{ƒ0+Áà:ðKd.ÛÒfqêQÒÄaÞÖ÷þsê»Ûç5MÎÕo-Ç®óFÒ}tø{—‚˜FGȳcX4Ë>7ÒØ6G)vÊQºs:…`Y„±ä…Ǿq?i^îšÚè R.Ázä3¬]bVS L±ÈYM`}K5', ¼Cô|Ëwìaa£å²xñ³„MoŒ ¤ÔëoÆñÈÚð†ÏÑe_jBë »ÖVá_Œ*Âqˆp…ñãÊH§ŠIÜHˆüOé:»w=~†öü±øØlvyû¸´;˜´^¥µÄÖ±Ôib1 Æ"}©Ë³8&¡%œ‰Vq˜ÔÅJ‰U›ÎÎPÑÓâ¨ð=\QÆMÄ 1*ey1dZSaH›ÁqˆÎQhð€j¦s÷ÊGèŶŃ£öÞT«•A¨¶Ô¤¶1T0p†eý—£Nì'-•¬Å®ÿõï»ÖËŸÝÏ~‡ãˆ±ùoÇò¸—Å¡Øô’`ꯇš9Cž¼Pã¯?ðÛî¯ÌÚ’íµ/ÙýZHäŽUz±‡8î¢Ã·g¥.yâ—Ñ>‚hi6ªÊš(RãÏ8ÕÕV6HnyâIŒÍ‘*LL@‰zsN “¯]>Q‘IAÐ¯Š¢¦² ¼. B8j-PÁ$E+‹ÇC/<Ûç ‰€ü¬¼¼SléŸ$\jœŽåæT‘ÒÂpÐÂç”!'F ¡H #‰gß#@u‡0£…µfl¢:Û¼ú}qª1Šd¤F(ÐÀL Kq*„¸ =7ÂŒNH²“ðHøÇ@6ÃÐÑ+WøÐÁ¥ Õ Á@j0ÚÕëÜ`< ˜p õÁìðÂ`ÀZÍEÎ.©Q¸ù1º´¯8JR¾I³¸ï+à/‚ V(‰ð\ €´ @ß`<ƒ ~L\‰õc’©xc“ªÀÊ:î‹bÓEþ‘Ò”ƒÈš½Êäö"“ÀjÃw¸¡è$ÃW²R'@ÛÔ:M}F ¹§- Ožaª«\ÊD#¢èsáEP²¤ÅÑàÔ<)æ&IúÐÆ—Nõ­ž3Ëõ' Óe“U\ à§›Ww±LE?(ç.ìØ)$!$Ù=MíªšHg#MDÂKA‡´D(˜Å¡2*Ô›eˆÅ’`ë˜ÝÊÉJ¬ÆÕðãDKˆt,‘< `‚&„äLM¦kš©r÷å_¨µN·”¯”A\†j­Ñ,\ZRL媅×rpŒ”96üìÕPìò/×R¹z_XƸÿÅðu‰Ý'ô6õÕµîNв Çb¬jm'““«\m£m9–^èU¬Nʆqžø/=^¹•ºqúš 0äÏ*3)±JÇÙ‡jÐ[ŸšóuŠÞk¦eɺÄWÖi-”27×ñÊ,žkÓ{_µ¥x^•ßͲÙÝ{J6?”’ò¤ ê‹ÖaIYX¾ë½FÙ|úì]žBúí„~ùô½6·Þnó›^®e—‹Æó÷I$GTZOôCç¯¹Û «¡œÍœMvhH¬êlÉ£M,Ӧիƺ¢©˜5lÅÓX©|­ƒ"áÔ ]%øÑ*Ç×¹áúi ÑÄAxnf=$‹É ý è ¦°ma[!¿S›Q¡õPÁªÇˆ VÚèÐ ¯Œ|°8|D¨F 秈†,ˆäS{«¸Í„·7™Ù¶€ íŠF§¶T$6dÛïY”É0±й|ÊVoãÆ‹CèPp¢/›´nph'«13ñ(¤9 9+|CVV t‰AÄ.ɨ$$óM<ú.+D!n­À‚Nº°yj͆ZÒ¡j§ŒL˜à¢lŸ‘:'@1)G0ÚqôLÝ·zN0ï`¦Tfû+‹òâ,ÄIçôö^Ý?gFÏ…"ÎÂòǶM?H uT$ì`¾C\²^nÝyñ4MWœÄ¿4€+ÉKB GÕXº"Ya²µ7*#1L´3>2XG,Jn`RÜÜD–Ôu1B‡*µ(vEʉ¢UT+¢(^+;Uµø¯I14 •–4€|P.X½ ý×™ÄU*‹Ü­âö ¯¿Ó¼³ß†må’}÷éËù1232Àz™X_\…ź2°øT>D"':LÊ¢’sñ>X‘ARÊv{ÚÎFïZ•5~6Mõ…bì×ZÔ?*â;Þ¥yzŽ6þ5ŠìŠyôËÂ8¨ë¦wÅ¢Z À—I…#Ê$a &³$MôÍZƒBHS¦ <¬Þp©É“ò<9E˜“‹Ñº&Úòi›8ž‚ÁÃ%³…÷"à®tWñ^âÚâ aaX¸txàòÅï¸êê‘ÉåXU24G‡E=®*@ÚðW’Mµ^Jký«JŸ±üIÉ4ô%iªÆ¶“*x΄†L›ÈÝ÷>Õvix‚6 [µd³â!°Í¦W%tû ª ‰Ä5XI>>© ‡ô"ãK‘ÉHy¸Áòƒœ¿§,R':$&èÆÃ+ ®3‰Z þ;{íX¥Ž=Wgm ŠÉ ÚÏAÿ¬ª¹=x›â£yþ’Ä}„ÐU4bsÕC+¬ÁÍÊ×úg¯û5ŽÚZŒ¾÷©Ç½3ÓÉ+Zÿ“ÉEöñ–a†c³Žœ›.⸶}fgIÃÎù:Ï!²-?ìÚsƒ*©QYsÞáÉy2w.®3t¥µQµÿM—Ïé_ÓYaß=sÞ»¯ÿ÷àý)7 ¿ä;;÷ó¶ðµßëíº+Ñ;(L2xJN[¥HŠX&“U÷WŠ-_˜ÓΓÅsÒéÝ}YgàÞµE›UüËÊòºø½ÎXíÙÆtû¨p›‘EÉ¿¿'¯w5›kØ£ÇÌ_Jó#H¸ê“ÄO‘ †-iµyót~¯i+A‡˜•BÁÛƒ'o4‰IKæo°”„¨ç ‡hQ¼Hˆ!ÝO^ýl²<Ûæê !‰aD1%¨ ’ áãÞT“„+i´ ‰âb`צ†A@l–``[£Pºb(Eq,˜h°¼é¨I.J±f)Vú[d{³c÷"ž-C9P¡¨8AÖ˜@‡ò@EL. ”MÐ?”@¥œ‘9Ÿ‘À¬Åàüd Ï>TÐÔ" S®8.$£Æc“¨àÞÿ‚«%V>èJ›—¦Ç·ÃSÂàüÁV1#ª%,ˆ";¨B¼*H‘D›¦2"XjV!ÉYÒU›+ ^Ud öH—Ó X@uä$Ùsaáš5*ž…ëŸ s9,jrèu%ŒŒJ,\BA™[Üg´›jD  X‹Ab/ háÐúJ2<'$ 5+ gí¨²¶WÕª'•4šû¦+2±JÈWq„4Hôó¼Öc\÷'GÓ\1]f ¤†^JjÜ6|vt”à7!@‹  ‚)˜ÌÏ6‚¬"(Wâ 'Ez€ºY˜1hûlÁkƒ?C¯UmièóE¦Escl6T™r4ˆÜE…H’"T“¼¦Îåz-ˆ®Ot0*íóÎzUˆË gÃÁð%.ºÍX…×g„®ˆ±+eÄÔ&Fw[3ñúsœSu07]]mÿê'ç,!O›fqÕckŽN…„7C´BbxÙ´$SÈ“¬h±)xzø´èù‚3† î•xœuál®‘@‰PµƒµÄZˆÔE#m Ÿ@űõ>KòvÃÔ<~m¸MÓësëj©Pâe† •ÞË¢¾U\-EŠIv÷³/þ¼2ý/”½¬¢ÓsVµó–‡-{C÷.ï[Dà <.&5†|‘8MùÊñ5e;•ªƒŽ¿Xªe:›Ûa‹*¿>Òæ²OWô‘†éÍ®ßãß²ŒÖ•QµÒHí’.~>HÕ}oŽ_¢óuõ£Id·w¯Êïßö_)%óíã Âäû龚ýzUì,zly=±KBŽÁ^=•Þ»ÞïÂç:uZ'9ž^Tº&Ä’>6ñ¶t¥$Ъž›±fV^ç—9F¤k#8ú—ˆCœ‚|è< •aLTªº¯ŸJ¾²Ž ç¢Ä T`:‰†5U#óAÊ›¦iÓ1_ŠÏ‡6c:b …. pò¹ž`¾0Pd¥FÙ‚2!º…$ÊjØÙ"¨ŽS2aœÀª!bÿ*U÷˜+«. ¼L„; c"…;Å¢3¡|V©äмÜû½Ô÷5ù0“Ï_Ž>*‹a¤:«Û Ä"õr±· Cñ-!¾ETE8>d†héôDQ±`a4¤8C)цÅü~5Óúƒ—÷®;¹{¡¯@T¨+!Á¢g}ApìIhëÿQ$`§(°;\K- *Vz#KZ,X‰AÉ@¯âK¹Ì Š,È”AmpMñ·G­(;¤±´OËwMØaK*lÓø³¹áÓÔ AøoÅ7hZ,Bˆ>ÑLÇ®¸ûÐ"Í:š“ˆhE«©TjÛî¥OžtÕ5(öHlxˆ\êä‘¿ÊÍŽrÚ²“„¨ÛDR±äSxˆB-!ùf_eŸ£ Ùuu& âòŽAY~Õ‹öBVͽrËÅ–ÊKä"Vù¿¶m /ðI:nÇš¤*@²"´O ÊÉ}‹²ýo¿›k¯]}¿$qZ)|ÑÒ ¢–ÁC‹W«6>NVÐy»3˜Tp$ÊŒ tX’ˆóˆ Œ ¶dl”ê® ÒÂàÌn õuF-#hõ V1y5¼ÃèœY%qDÓÌ¿SUŒ¢Htǹ¦lv‡nŠËœý‡¿5sª† Å—Ó§ïf@ú<%º)ž†®ôÓQW:òt&÷‚t8zü£ fO‡ši‚‰hôŒ†G<ÿdãËR'g‡<íÌÿª b躥C Fψ瑸èšZʾò²—Œ3ùzœ{`ä]û9 ØB U–!U¡ŽòÏ&áçsbèoK‘ñV ·£ñòm#4´5—4í¨ò¥ƒ¶UŒ÷ZPT‹ª‰zÊž´&þ[ –%n1Üþ…¬¿tF—y…—ªÛåµ;È. ù,ySu7X‚­S®j½štRgdq:Âñ9 Ñê¿ê¤¦úõ#›­U“L2öM¯8û™TUs®ÍVÔ¼åDÉ.Beâ]?s´œ¿ÅPr ¬ô!Z^ÉvÿôoãßÒÿƒ¡43¾¹Ö¼ßHÒ¡¢˜8¦}š¹Î%±dW”)»¦­1Ž^ç`͘Åàα`z«^1yõê¼×ÖÑ %ÞAÂAº!G@žÀœ|(ÝjD$E_ôSˆ}:™ i4¢¢Ã¤ ê-¢Ȉâ«úž¤TŸa•@ Ês€]]6ÂAQFa†qÇ r ‚ ’ $’I$’I(’‰$’Š(¢Š(²Ë(¢Š(²Ë,²Ë,²Ë0ã 0ÂË0ÂÌ,ÂË,à 0ÂÌ4à 0ÓM4ãN4ÓŽ0Ó 4ÓL0óN8Ó4ãN4ÓO8ãO4óÍ0à 8N8Ó8Ã<ã<Ð <ÓOìóÏà4Ï4ãû?³Ï8ÿ8ÞÏÐ8óÀ<Î<O<Î?ÃÎìþÎð<ìïóý8€<ïððìðó4ðþÏ<û?³Îóû?³Îìð4Óû?ã¼?Ãû;³»4óÀ?ÃÎ8Ïôã<ó{<ðóÏ?ãÏðóÀ7ðÎ<ý?ÃÀ<ý;ÿ<ÿÀNóÀ?ð3Ï<óÀ<ðôþÎ<ÏôóÀ8ÿ?ð3Ï?ðü?ð¿<»<ÏüÿOìÿÀÏôóÏìïÀüÿÀôððÿOôþÏüÿÆNüÿðÿOôÿOüpóÏüÿÂôÿÁÏüïÀüïÀüÿü þÏü4ïÇÏðÿÀìÿÀ?ÃÏðüïÀìÿÀ<óû<ßü ÿÃìóÏïÀOð8Ïã<Oÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøü¼ÿÆüXÿÁÏü$ÿÅOü ðü ïÂOïÁOüóÿ ?ãÿ?³þ?ñü;ÿ?ð#¿?ð3ü?ðÏ?ãÿ?ðÃþ?Óÿ?ðþ?ñã?ð£þ?ðÃÿ<ÿÀOðþÏüÿÂÏóü?³þ8ÿ8¿?ãÀ?ÃÀ<óü<À8ÏôðüóÏ4þÏøþÏøãÀ?³ý?ÓÏìóÏøóÏó<»<àðó€?³ÎìïO8ó¾<þÏìÿìþÏøð<ð ìÿ<ó€8À<ð?³Í<Óþ?³Ï<ððîÍôÓ@<ü<O<ÿ4Ð?ÓÀ8ó€<<ðìó@8à ìÐ <ð <;ÃÎ4ó@8ÃÎà8óÀ8ÓÏÓû<Ó€4Î4ÓM4ã4ÃM8ÃM8ãM<ÓM4ÃL4ÃM4³ 0ÃL4à 0ÃL4à 4ÂÌ4³ ,ÂÌ,²Ë,³ ,²Ë0²Ë,¢Š(¢Ë(¢Š(¢Š(¢Š(¢I$’I$’H$’I ‚ ‚qÇqÆa†QDðªï/÷›ŸPŸyΧõí° ަ¥nú·{ Ú‚î³éìÜìQeú¾^ÁóÚÒÌWcw•«¬ÿÛþ÷"fßC«Vß~•ÆðˆžPA ^í0í[Y h°Ý¬ü9½£T2@ WÿWMX9$ID -×um$2?p,š¤®x œ¼vîÜ­)÷˜N]ÿ÷n?3;À\Uñc+y!¢¨›´qðŒpH›”sîÀ_U=.1Ç~ÿîìww,¼ÌÜwà]Ö—Ëa}Îý8®§W¯ 1iðeL|†vveÞfä~Vüܼ¼ý­Ï!ðfÏs/ñþþ„.ïiZý/7oóïîß:?ŸÜkùL¦Wï·¶ï¯súû)}×$«][ž»ìÜ6½¹wß\çæK¿¿'ñýšVÙ®_e_û/çöf^>ÿ²¹ý÷wp§Ïú·ßÃã[þ»{trçùŽkóß—ý›épü¼ûÍÏ¿­×~ü|àÌç>•»Ë½¦S¿;+µÿp<jÀ`+íßÝÞÞîwío%uÅ9JÞÚ°fS–Ó÷ãyÚ”Ú¿rw»+º÷cí»‹nÜã­{·qwk'ÏX·åjýÍûú¿ÜMMÓÕ¿ ¥(õJÕW¥õbï­¿oü²Š›\î¶t¢Qfôn±¬ FxÃbKCr—•†Ròú¿×w·w÷™—™—yôi±«ÒHàù¨¯>|ßößíYvö*Ö—w_Ïïüžn:üä´Êµ_ößWæÿua^ïì»Î| ¶ ´‡ÝåçÿßÝ2½y]?mM†Szyo·ÞÝíZïÂßñÇÞï÷æå5žÿºB7Ÿ[¸Q~b‡1x¿fúïÓ-øþŸöë°†üéÝ}ŽýmõS:¯ì÷åã_½ÛŸ—•ÝWw¿ÕÎ|f¾¾Ãoi•ºýþ}Ýå¾îé•ÛǾ„—½ù÷ÒnAHt¡ ëónþéÙo‡_}__ëËÃ{isº×óò¹Oþ»»ûü»Î}æþÒ½gÝûþú¦Ã¾á[ƒ¾­Ï¡yµû¶þN¯^)\î”Êßü/ó)¹‡šs¡‹¬§~>߉>ìûåì:žŸoÆŸ};JËùXb‘؆D;e´vÎ=¯=ÎþÒàL23Ç2[/2È(Pöm;×vf*¨6á•Îì[f„ß_¿ÿìËÛÌËÿÌÌêæ/Œ,î»4ï@~>dƒiÜöûî¾®n{µnþåýsÈk»žåõr½ýÿû|òþµ§Ãÿ§—á×_ \ãÞMöæÞgÕÿû÷œÿ¼£çÿNƒÓ·×gÔîÿëë{ón÷¾òÿ/kò¿ÎPçýçgÓî÷9÷·jweÛóæwçŽA~‡“g|:OºÖûñÿ[¹w×(ç¾óTÍUîýæ}ßIˆ­6"÷ÎV¯Á÷ùù™ùy÷—w››™yÏ÷ì9÷Y3ºÃŸ¶ìû~ïÿk[í¯ïwçeuÛŸwÝýýÿåíÃ6þë”úÝõþûïnóíÜšùRq•”}åi¯…Õ¦ãÓ—tíÇÓá9ÿ^Cß•ÜwhWîßäaJÑÏTúõîßw1ô»»ÙÝh³?µ†îãµ&f6˜çÖ°*âŠáªYT]³²nɵ̆uIÖM¨öZ·>’{¸¯õ‘è plèÁj¹&:ŽÂ¯çþ÷æeåÿý¿²Ÿü_¾Ò7IÖDóFé‚J[µ¬þ®ß¿ë§ß[êï_ÏyôÝ}ÿ×/û…Âë™÷Õø_|nýù¹[…Ö­Ë!¯×ôº7Ÿ¹íÏçÎé½]÷ís¯9û·qý¯u_H-7ìß—7­}ëCéûy[¥Öû+ý­9×”µo­W]®üɽVkا¿3??/)߯çÒ›šïfW7áú]=i¦›—õwŸW_U)Û…_˜þϾ뽮߾¹›_ÇÿçûÓ¬‹]oáÜß6þÿêÿîæçeÞ]çßåýßß_}öÛî }æf]æ_íïîoíåÞÞzüå)Óžªµk>¿ºÿÃzIÓ^AL·ÿÒ“ú\3rïk_„}Q¡¾&;]çiuQ‡o?úœïö~fûåõBŸ)(íÖ¿VÛÿ]‹§´È„<4Bã5º±7<ÿVÏ:îílnVT†ˆëWL7äOÚÝaXyºqk†˜/¨qs›s«®Ò¿^ëëÌ»¿|sþ··TðZH!7l¹¹±x›&.µJà;£àTDðCZçüÍ¿íO¾ËÜg/?/3òöÿûÿ.ïá÷i//.ìD»ûû°]Fšü÷üz·Ãßy}½™_¾Ïíüýç]ÒóîŸy¼ý“y´œew¯·±\ç×w/:÷¿®¿Ïmß½§F¿[£»’ì¬;³Xµn?—wyÜîG_t½ºt?;{iîý]®årWÞånàõk}—ï÷Ö1ÛÛÞÝë®ey÷wû]†ýÝþæ]6zÕzuˬÿ¬ñ$dêªÜöï÷áÒ¸ëó2îþï;3îÿ3.ï?oo79ÿ¶ûÝû¼ÿ®Vú— =ÈÝ2—~~E­èB¯ú©ÿõìê?~¿K݆©Î4â½[úôcwß7çç_å×ï]õ>®µß‹ìï»k?ž‹uYÚ ©—¡{îVݱGÙݧeÞq­ ê¥#Sÿ“ÕžkÜânma{ÉÞCçêÝyNêÊ·òýí«òó·rœýÞÍÉcí«Lýwa“ÝÊÓ¢`A€$‚\p,Y+<Á*¿×¹ëNZà?€ÖŒ•Oc.¿össþñ/wï}¤¼ÎÌÆo3.íÌßû»çýÞv]õß‚êtÞf~þ×ïhï_gm+—ùÿ½¼ÿ{ß{™ŸwwŸ]uñŸ÷íÝÞ_ÖË뾻Ϻ]súžÿ…ä.±êƽo}(½ÓeÏÏÊܵۯ¿óëý&:™Oî¦gÁó{ù÷¥¬êÇ7{7¹“…/¿&ÿÅWååßÝ>ßÕ÷Ý÷ßë™w—wþç?£ö´ Pij`‡§®vMîcxݹóîïºìñÏŸÍóº]:·ß×ÿ÷Ù_ëë®Òëö윕ÓoþªuVúsŸ_‡~W>ß{“®ÞCÈ]a[¿ê\2y[«K¿íõÞ~_õ×™÷Ò÷']¦kïk(9ÞÞ{jë–í;›2Ó'ÚZ.ÕÏû¼é8µéµúr¦ðFy÷±Em9Ô[iHù{µ–5¶÷÷ŸKWÝèÏmÿ·rÊö=Z•ä÷o6ŸC“¥\$À &ì™T’Ù¯ýÿÓáî^\î—ÿ×¶ïåµ—ýÛ›[só)—t¼ùÞ_çØ ÚÁܶï=øì!7ÖŸ}}ß»Xe¿ÿÿ·÷¾óŸOÓ'ýõúýôóûë¹—w C¾Ê×îžó·7åæ\k’k¯© é¾{ Rë°È÷môè™ð¸¿åX¾ª}Ûë¸ÂbëK=¤k}”î¹í/²ÿn4R;oÝø>ö¯ÏëœYƒ´ìüžRžüÿ»¨ Añu%TGÛûyûûï½Í½¼Ì½ý½ÏϺìþ½Lž;súßerŸýywÿàsõißLX~ÅïÐ^¬•¤ð+žÝ>v  %@8Q5”ΆÝÖ"²Í€ŸF…ÀL6u 0Ë@ºJ"?92¾ 'WX [Ð(@ªø *d$”ÎQ@y÷ w~[€`,Oz|f!ªø,EðA¤ 0±°,Çž-ßï·ømÞýçþãðç÷þSÛ¤ÝoÀ&ö÷äÅ/ü; FÉ€YÛýÖþSêÒßËõE ¹Jm{Œ¥î\#@ºla¶×½µ®ê¸k³)ä5‚ô³Û7LÝó_/f]+ ZäúÀ-˜›=n*œ¾œ!€¢Ö'}ÿç]o/ïoþÿ=ùww÷ùÝ×—Ÿw—w·yŒšÕÚ¾zÔ­'E;½›Z­ÕªûIH¦lû²@F>_¹S¢Ð#Гh3uû\È:ö@ÚªÈ ”í)•VÔ¦(‰üv_kbͶ}äɲº›—îZoK4–“¬ò›Jc{T…d*Ÿvç«”|sz'”ÊVq8oEX ur`a4 ´ ädàF4EIÐbÔ “KÀ«àÐì|)Hq‡…„'¨*KÁ‚@ÉA%¡™“U³Ö!ŒñkÁ¤Ø2ÀWˆmà3kƒ-0'˜åÆœU<ÿø½Ãk»Ë?éÖ©»ý=èï-º÷÷÷~Þ pà"Ãp_rÇûýF×rþXcSŒ0¥ýCP@)@l¨H€ Ç’Î\û­ ¼np€¯,úž:˜@ P€%ÜNmOÚ´nU¹Â»xú[±qËÊÝ~¹›îÝg”ŒéýÝÕ—›ÌÛÄ“$·âµvÎ(ƒœs_Y´«m±w‘xHØCÀFÔ AHÀC®ìÛ&“ofaC0ŽÖÁÂ%th\ @b¸Á0 ¨ðd”›9´üÔo쓱Zh z…‚fË€°€ÀȰ €GŒÒ’Å‚€$£–nîW(Ná¹pÞ¼ÊÞdv{xû¦ÖÛüË·Þ{žQ0ÓÀÿ:òÍÎw¹„ö‘b9ÐyíÈ>¥•šUrp|Ó¤OZ¬)YsÒ`<Àe£2~Km%Iè÷Sý» a€éÀù ¾GÀÀi °ÁÖJ'tÛ˜o]šVžþ¬€*€º€›Ä`)í`IXñT@ÃÙµté(RÇÞÞþ]ß]Ýnó;ï³²ë ìë»»ÿë¾þ»° 3@Üëy’sU­vnv®]5CÑÌ«ø¡²¦â•Ÿ÷è›Fü,‘¹kMý~šX @àÇnŠtß8ã»5›f{Ýðÿü¾™yŸû,ü!ý¯¿·ì.õÓeìBÎëÁ‘ª. z›4ֺȷKÈê va“>8ˆ{rs8ÒJA®øtùò/qßø*Àj€Pl À<€zÐ]x @’ Q¨ `¾Õq‘ðN’ˆ ~Ÿ-`Ø(˜ø+€Ö|nà0ipO€O€ÍH›<ÆÉC˜ àÎRÇkµÛ¥Æï!ß·ß |~³îÊÓéY¹p±#3n•JjàV‰uÊ3Vªwºÿuæê/±{»—äq bJñù_ÊÔŠƒ3Áº ðH&Í,Õ´-Šœy¸aX¤`J¶ç^ïå_™/[/k“îËûûßõ3ëLÏ6üüÌx‘ÙLíPL§ýaÕ}W®âŒ=—Uª¿Çh¡ÛllwkÜ•§Áîç¾ÔI²þ†=Ð'`m“ !. g¥tP& %€; Zv”;IWùYÉT*? An|ž€K€FH&‚Ð4Às‚܃Í4ì´Aÿ™û»ûûüÜ»»Û»ÚÝÝßwwæ]íõÿåê!·”MoÏ“bïµÚ´ŸÕ©/i™ž¡jÈà?§[yXHÄ "ÀIˆ˜ÑøýOHxa0#:%!©vŽ&¢™Òù(þéÇ>ëïí®mÎŽfåÝÿßåwù‘}ý&Žf/Ñ,XÉrõ÷æŽkH!ßIÝU"ß·aµ>–£’õj¬Xƒ PU” 8Ÿ¸,‡à' J‹c=dpò3Ÿ¼ôÇ]‚·ö¸.F\speADðbhŽ $H@g€Ü?"Ì9 ÈíË}ÝÒÔ½ýË»ÿÍéV•þÿ§W©w÷p¿ÔÂþ†6 `9–özõuÉ}åmø“Õ“/e§iŽsËSï¿-×R€tnd²ì¡ðl@@2€À(€ Æ_ å/ÕË·ÕövI^ržR?o»ûû}ç_íýÕÿ¿èSój·OEÃê¢'‡µùÎÍ}~&ßv0J’KFõ?gw: øÍf–d0A.nRè ‰)òѣʃxØB¹ý>Ù<ìØƒÜàp0€ãBSë‡Aàz'FàH' Æ ¥3û»»¼û½»·ÝÝÝþgö^~nÞ~^~gíýÇáœ0ö”fÝïäÕÉAOÖþþ •n¶‰³5Moßÿ÷µïnº|¥Ô´­žQ @7@€…À•ðð1€U‡@e¨¾úŽ©Šd+oËÎù3Ï[ó%÷ßWý?òÿ;»/èþü»Ž«žÈ¡#Axa*.\ôÕVmÇ­V8Ê4„ÓÌSòàìA8€=€™€üÃÔK7-<..ôDh 1€¢Lj^v“3An,#Èׯ.‘RÀË]‰áÄ0 ZV¢ÍÁàJêk€ê …Á˜ÀÅŠÐ’%³HßÖ·~ïÝÿýb£ú}wKçgy¿Øþ4Ø'°-@û@ò%ï»9ÿêÓ¤åÔš_¸ÛãÓ‘Ò žçi:^Ì<&肟¡¨Üà A9 €ì ·—ø5mîŽ}¹¸÷×>UûVIמ½-ò¯^çSoéÙï¼®Þ}r +ƒptgÈ"•É.úH¤»èO’·Wg+µ’3„Ë@3¤köx¼¡¾¦–J£p0@Àq"O"òÔ…4 p`!‚Hr ¾wïÈP˜”;taªÉn†+¬•°æâQ%°Î…ðou:ŸŸw}÷—×÷¿ŸßÙŸ[¿ú×?ÿ;6ò÷ko&#¨ÃBïïÞ{ÝIJœ§¬^Í^ŠwLõ´æF²ïÚAÜMªÝ¨_2•ŸjÂÐBÄðG„À°9ÂÁ¨À8³éÓÿõ6é;DÑD´àôêµ-ƒ²Ù>1º¾úë}uëß_ç¹€@»ÜÆ1Zâj“©ŒQî)­{NR‹¯V”7I€ö¢Ê]ÂõºaÂ~`â =0š!LßoÖ8x-€+EþøÄÜzËjb©àPÙ«h`‹»n“:s!ƒ€NÃ:@G±dФ·=L®S÷òöïÿ¯eHÿgÞõq˜»oÊßÖîä‹€ ƒH`/Ì~oïí†ÕÎSµÜ¸ãÜʸÜTdhû^™mÕ}ƒ+%T¹uŽB'"V ÓP:è ý»Zý;®™Ï«ãŒ¿­=Þ;*U‰&÷ÖÄèõç™Ë~c•Û¬ïüˆP@À`±ÖO— FPÉø¨üØ®Y žvXq é$1r‹îÖ²w=Ú')Lq` (ŒFå§Kžˆ 9Àð ¡ A|©ãn¢u¿iéVmÞªu“M*à̼hNÃ¥æov×2ïîÿóîû;ók»›øü„-÷y—™´[gvàsa¨ëýç¯oìÿ}a}ʪO8tŸÊX¤™zªl3zWl1´‹¬Uaˆ@&@®ÅDî?+8Ò7ýüú÷nR¯É)<|ûíšnTãâqJF zš´$ÔŽË1÷tþÓ‰Pôr<,)ŸE»èTÆät&Š®Óf¢Ërâh—”QZ»ÝŠŠÎ FÙ"v. ‚‡[üçÓP;BK¦&„ThÓÝwà”Ý!)Æm©P81t!IÄQˆ_„ˆ¢q„=¢-ATá>;¨‘²šÀÞܘ˜p²A´œv€%ª*Ì"A¶"À†œHˆzBp>r™Á7^qi‘ÍE ô^ÈøÔ€ Aàj À¡a¡|hG ÇG¸`ÇèœÇ•ýù÷škÝòpEª pHÑÚƒÇ,\¡´ ´!K‹’R*S#‘³3uI±%ùl_¿Z_R±X(³e³Xû‘0êˆÎ /t‡Q|šˆ!¹–ú¯R‰6P¡GT´øwh•ޤ®gBÀY<ë Æ‡ºL]î æYƒv‡K ðn²È=G¤(NLƒû\ÎçÞë}+÷¿îxAn R©SAQѲ CàÛ6ΨŸÚ:‘*(AÄ©NßQÌ]uaή×E)²H?gS›KV~÷«¯‚·”Œûþob®c¯¸j±¾? ,ôНEeÑ:ÂͶ~ ËaÌ’ž÷q!Ãw[s*ì‘£¸t’*ž‰`gÆÔmË“=6×מ£½Ò¤còoÌ2Å«Rk2Õ&Œ¦ÞQ„{+'iË-Ò ¢Ö"ÂKÒ==·”œ;¡ûuûèR··L÷®`MF]V}O_Ò"4r›‹¸v\=h è±D²<ù¨øêšµÂjyþ&Âz ÓÞv2þ[èÛ¹Pzp?àBDxþBÆ v(à€ ­Qrƒùt„áHZ/ᄌ2y…HÈÉM`˜6_‹¢Säö‚mK@\P*mWùh4-U·÷.Ù{òJ’‰Ã)aèB9[‚¶°?Œˆ"2sü9(LgªÍß7ó•¡Ò§uÚñ5~£š¡hzœ™´ Xz€Q, §žP>æâzAd„fxEÂò`}ƒ³Øë–#ÔJÓ´*0h… |„qéÀî&ˆ/‘‘Gqi2²X¿Â½’X%II!©¢} "1Ñ DŠA¨ehé|&WÚ̯Gó=ð¦·Ô_CâpÔ öÈb¼ÂðØŠ!‰ªŽÏ2k˜­!%ä •Š1aØPá­‰É6â<„¦Œ*CæY²Òhy[gôj˜5ñ¼6Îï:Þ±›F¢¾·§ª[d´Íâ}¢µ8ײ|Ÿ‡eá¥Ü»Nšx)qÊLf©²ê¾0hµ²´ÊN‰ýBö•š&\£)VÇã*¤ØóŤæG¤\bQ3„£®2<Œ¦eOU<§5I.YÙŒam“ö}äU"˜†n’íê‡QN ¨Çþ9(7ê6sÏ.©‰/Ó²Þ”›DÜÉ ]•éòÔN"ê}ê)L£ð)¾xלÁ˜ñò³ÛbšP᛫¶¢2B‰ÍÃÑ» ƒ› Pü`!H‡µ¡õGá :ž¤YšQOlÔŒ4@6 ¡ &Ê ‰"ÑL#y¸ó‡$²6'tãµnÙy¾šñ¾´Íô«.„{ëålˆM£Q9‹P¨ñ'Äb‘ãcu‰üùɬ›.ɵdåSªJ:@©£nºú)Uød˜ycƒ‹¨øAÑÜ+,:<[º·+9Õ“œGé“¶ypõè~e3èVp* €‘IH‰GѬ‰ AWõµÑÙ§A"q\ ÇĪƒÌCDÆÊÀd0¢ z$9h§NPË_|ïK±N…ÆŸéC ‚4»1ŠqËB'†ËF,ÈÑ‘¢ÄWÂÊãlÂ.§½m{‚.9½ú{O24¼QWÿdgW«}+Sõ“¯©ÙÙÌ[SmÅUŠ¥‹Žm¿J=G])ãu¡ª‘—r­©Í¿åª+~Þ{—¿ÔÔºžÛ¹{õ:“H¾É„«›Á Iu#Èã ¢’úÑiªé%É9‰²¬ZTÂ9‰©¼'F²*¢U§OôΕXèK"å]Þ×yÚt7“$KH³ùÌ4M$#SfÚ­¸Mk=‹9Å^pìhýßÜS¥3œyÓ°* Æe+á¬V>†HêKP…‚¢¬ƒû¢¶‹é‰VIò=’›7ó\3Ã/2ÒCÉ_d‹1â]˜á…L±qpõ é°jðþ7!…%U0å0õÒã¢b’ˆgœêan:Pëtn¬²C­g Tc™£Ù‡¼A± F„4è>€É~¨‘aÓÊxcm—\YŸBódн³h>Y,48ôl’9¬ EA v%a•p­ˆÉC1X&Eù!ld'  Siy…ªžÊ„áŽDsÀ B” ˆ4ÇÂÓº ² pĹw‚¦©\2«TUf úÍÀÖf‘°Pš‡ú„QâáÐ&Ða\{ü * Ù€‘Ñ4pIóˆü†ýy¶´?„à"Bx"ˆ£ ŠÁ&Ó"ð¹:ÄeÏ ¢ÙGaØÊA¦QDœØ¾%"Ñ—ÉFpæ®e%Ê\;_Ê ׆DFµEaùª]™hÄ¥ÞÐÀ”_H¤ME.Ì#U~ÄÒa„z ö| Àˆ½t”ˆr×”“06_ŠG$÷ª©F›š­¥k)BÕ3Î8oIœ=ƒZ @?- ¥:pàP0¤¾²á:X=‡ãã^’'pJ¨K‡ ê@²Gsà/®²ŸyÒ0I¦3N ‡Nî¨ß\õøÿ¼÷ݾ½~­a_Ï­ê|MGkKNPd•B8جlèóGXíTrªëè²ÕÇm­Jô>žýju(ííZ«¾_¸PHÏ“éôè9e|‚'ùÔ $jËmZŽ;.Ý8˜A Íæ ¨ Ü^•ôt*…žk·ªý†µmû_F‹MºA0¸eäìcÄAl¬iЦª¸¨>ƒt”õ ûR“íéA¼º¸/‰&ãˆ<%”Tã&’·80r´TlíƒFq8ònâ‰õ]_‰ˆW)&µˆ'ôj.öß=_[}ʹñQƒ}×QÞ;‰aEÓ’øÓP>ª+<Äÿn ˜|cVz•ÅÔ¡“ð^㛲ù=FЏ¦H-]'ÒÖÔ.q4¾Š#ÖÙVl}:qw\‘¦‰åaÍŠeæÔêˆ|, $CÈê“újÍéyÖjù;Æx¥/µßsfïwW}ž¥Ìœ£`´½éÝîa"ú¿.óÔ`í:’ÔªZ˜¶+…-^ÊH k‡·‡‚‡Ce/WýE‡F‘|‘3J›zV”å8ï/ìjÍìºgírßoèÂ5·×ivazÚKôÚkÊLþÏûTvQFç>¬¹?ý& Q”7V”ƒ‘xôÌnT:"’{Ä Ö%¬M„4lâ—&‹©½Xz²ec8’•NЧ<ÞIâx Ø˜,#¤ fó„ÁPj>" 8Œ.‹Æâ šdà EA.1uC~7®ÈhˆDª¸GD Â¥Ð>ˆ`C(¾ÍŽÕ‚Ues™z±®¹af"ÌBàÀMl OXC”Ú-mà‚„€'F)#…AX7ÔÊüñ߇ú îP¢7.p6Ì"':™!%PÙaSF¥"¤Dd °éú`’"ši’A="Hf‰ ¢E‹š¢wÌój»G &µF:ÜF£ê·ÍƱu7½…ª‰¤Z5m^ÑÓ9šXÑ™Ô,' #ŠraÈ,EæÊÌUNô¥JY3eÅ ¼žø-î6[̸6v•,Í™e9%-ÕÏ«púA g“ãŠCŒ±UEÄ3Áüj)lÝh73¢Ø®J4™&µƒDöš†..£ ¨tþ¥¡«ÑÏ_©{¶‡hqÓ§&IO?%ƒqà_ ñDŠG:”ŽVTÆž.@”pä˜aœ¼¿wøÐ@#ƒu)R h${ Ñä΃‘ÄÍ¿œß¬ðSòzŒ“oLª5w›5sWxªá¤ðÙË »åî=Þ—uiéˆÇB€´/–øŽ2rd®TASa=£Ü£œÔg;¢Î28Ñ ±¢¬>/ïë‹+®by,öüÙr1™i½d’£Kú×F9¨Ôåž‚‘½øå¬$'‘ÿ'¡Cß]Ä}+3.X£‡ …MxÕg䱚V­¿úäkͽn)øð¤™«#RH[2!©=¯‘~Qý_a}¡[Cm¹OQ4£5M‰JA@ˆAçE‚{3ùÏëW&§SB$YÂÔ¡]VjbͽØ}]K7°ëÑD­5º—7àÙiõßG¦É´®üIÜS”Hžoï›þç_×7f¯6õk-—WòÕ¾õ&ëº_U ë 7%Ï»—EÆìŠ.õ«ì9T×µz×]Ý”‘îRÔ&Œ£ùlÀ¤‡Y+^+ÛGc“ï¢g¹´‚EŒí|øÎÐËù¦¯¯öÔél½n‰Þ¼­õÆ{Wgw}µzo¥Tt¥‘ Tâ9±?]<«sX©é3yÊ´÷+I¹IñDðuxSTRN+Ø©‚i‹,`³‚ÝŒcÞ2¹@ ·k3϶j‘±úsd¢-gÙ8Ü¡Y OéhÎùôqËX|ÀÝa-†`Õ8F ¡€9…rQ‡¢=+ §PLê.: 1>tóFN›™:¯'šƒ“ƒtódyI(¨‚Œœ¡$\E&*ŽŠCšÃ¼2WBMqšÚö¬HdÑ“tèR˜Å(À”l2J…¶lÊ×ÕÕ”!½m?'Ýõ…ut®ýkÏÈbÑ^R†a{óÔ¿÷:ÿ?’¢Nqc pUC ^ 3ºg(ïשu¾È6v¥SÐuAåGr¯'Ó™CÊZ8|õTLô•mÆmÏëvë5$¤å%Z+toã¨tgQ¯¦7:v§õZØ–y» bD@J0]±ÂQ BŠAV å7?Xdºƒg•zêÑüÐ"%b’g“™"DTàÎe•(R+»TøÝÎëmãšÎͧI©¼“©-´àîE‚¹Ä;"=³wn{NŸ»{0öLd_¼uÑ„5cšýîRš¼ÒMzÿ=Ú—_Õ1T›©RJøg!Øvò)à½Uª9ŠW9ž›Þôw¿'ÿWÒ?ÛëC¢¸MÖQ§êµZ-4»MAˆ„q©>FTÉç\Þž-¹oï{²ý”&VÉ:‹á3…?•Åzk¸´fN˜Â1޾yoÛ¸R KN/ÉI šá*¨“ÞåÞœtõ ‰3eP‚Ñ»¾ÏÎÉÿÞûK£êe·,%,& ²ÜÜšéQz±e4l©MžŸ¼ˆ€T±UÑ‚ÉI‰O"H^xýà šq¦›Y¿"䨛šú·cÿ?k}[ÉVP‡Ãå‘Õ ¦EÿõÞ}iM+ÔúUÈ©35ȬÛ†!Õ9â(ÅJ}yÚíÒ´Á‘2àðVC+¹ÆWáHxAÌ¥XnÑX˜%N#䇆æë]-¶)±8Å•¨¶H‹˜~ O^ê¾b`á:tó¼4Ö ëT“͘IX+X ÜsÓ8…׌@‡Ô`T4GZ7'³¤’š”%RãjÓdë°E> Q¡«“N6¬íC«&\PŽ”XyåÔ²¯À«RI|ºC02eÕX°~°ø¢ð áÐ\àS8´ò°ª>R T+aèŠ0ä °88&ÂP(„ }H|@)CA8Ç›L.› æ"S6 fQÖØ@°SÃŽ°#H—Àâ“S¼¸'LqX.‘Ô‚h)ð€µ˜[Xo¡%¢ú0Kƒ¨OL¼tx0…Š´b„¹0rRz8BáxZ¨mD¯ âëÑ'•yóa„Ìd.¦ ‚0“¸ÉePšë'T;ã!0팃ÐI2B!ɵ^ß5 Zƨè¡Ä¸ðSˆX—^JÝû-¢ÞNª¤Åf‘ C€òÚc„Ç€7/<,…üfhAF+,`¸ ‚€iE ¤ÃÕÓ9(&Lby9œÂäâNLbXÒÉ=}Ä5ƒ! È±ãá6@‹ŠÅäPüF5JöeÂRÙHìð¹g– %ÂZ… dB³ k†í:Ô•¢éŸ Ï"<@P¨ÂNKgCxÄBaR†±Žà:^ï&™ iÚ‘«ÎŒ ¢t–âG ãus÷O[öV1~Úñ”Mþ¹*~3õšJÖ«óá7ÃyñÓµïEÙ¯ËÃk®gS‘N“¯R!ð8zÏÂ8…TøCvíŠz¶³ÚW<¤È+ÜQÚ·­ã•w2»{w Ú)^ž×ÝÙëž×éÎÉ?;YÓ»'«¢‰yÁ}Â+Ð긤Ê¡@8>ºJõÑ-â’PJ£ßq™Ñ§pì‚l/Y–û‡F%ÃfñÒvŽ:»´u:Aš!>1< O qvV¢ÑJakÑ%úl`¨ñ„êÈdÙ¥T¼¬Ü|$JPh;' H—  ´Â[¤ k" ¡I0;d °¶ @-ÁT ¥rKˆçÍHFT/ 'Ö‡ë䃒rËe¢˜Å9ÄAÔÙ·¼]RpðƒÀJ£ ÓÊ@¶ ma,†¹`ƒ þhV¨¶‚È_Ë«;†èÉ"puF(RdT-ÑTÄÔ Ózˆt4O&*±¬HxLã¶U:E_Få))I ŸÁŠ/¢ô~ÔÌ‹MíVI_ƒißü$q»Ÿhª««К|ô^¨T˜vzk*"€ »Rcøy²-‹¶8C@Ñ2E-v󔚞€Ÿgc“SÍœ¼@$Pè‚T€f¬‹bî¡YP‚TðlptP#‹"xv$‹¤Aÿ!›‰²ê–@šeb ‰IÄ’Ä#1Š81‘!’SèhÓ']alÃ’¡ñØ?‰Ô9èr$ÐØ_ŽP:VXL>#Ñ:ȶá×Ez{dµOõwš¬ë5jï±·ke⻺ü~óߌãù?禾÷)Ý—\®f¹y­×æŸá‰·ù-sýû=^îþ¯“X©eŠ !ðsNvh,£Çu8sŸFÐÔá©Â±_‘‰²JÑ–Ô¶NTìeÊcÀä”6Ýy(ðÿ!Àƒ‚ûÈ`ˆßæogºnRÉd‹“Ø:¤Õrã¾1HQEJ¢B kÊ Äãa0À&B8&Câ< ’/‚€PVU!Ã;1l,6’BÄ`Q1Á+ƒÁZ3PºJ8Vªã±›ÈÁÓÅÁÅE1Ð/cÀ@ŽaðO‡”5 +ph‚aT $©`S¢é-Ô¦HØã(]«B·«â¹*Oø2 )Aü9§)t%šB1]øN3¤I ΃~Œ@8Nz4Ðör° ¡|F ‚¸˜¥²‚!˜‡+a¢N2x¤lØ·úÂÂZDÉa¥OŸJ©Z„Ž“ÚÎNø1W! ÖêzÃá?'gvõ'ÅrfGbB’aÔ {ù*×”™« Yí(ÁV@ü¨o¶f¤.E R¦Eohò‰É’ÄcŽšËbl¥dJ|^aúøzX¦\¥±;ŒÚÔísÎYôŒE€üIÃÑ^BDHd†›ñWFr+‰Jc¼sË,qãÀÂ34ÑV*.nô,]W{³&>´"fIx6º+®.ØÆe¬ "È{\’.²éÑ6µx¦™sÝGÉ»¾¹¿¹ùœ#qÊóóú—žù¹pçz—Ù\ü¾¿ÝÎÇ;¾·N¦gO¡óþºÞ}©_û~QÔgÝÜdªeΉ(ìÄI(ª<ò©KãʽLÉMºI˜ÔÁdŽ>r³ÍJÔTiÞ\ÚnzõZãkô%ó=Ìlv«šÙ.¦þo¦ØITÝɸOBÄÃì^9ÓÇŒ‰ži#é(DT]Œ†€ˆ‚@#̃˜²‰5¸>>0ˆ ™÷>(UK:ü‰è^†Ñ¸‘´ÊúS„­%PŽNgÌ#µ Cæ)o\*Ñ€h°€”òÖÕQ:†ÜhŽ"€ìB¡¨¿µÂày0 5.¶cÌ"å ê²X™Ó6}Òå*Áïæfƒ2²ËŒðeS:Æ*ÆZ¹tPü éÍw»®›Töõ­2ìÜ9#})\ÏÉäÑ>ä¢Ó2j«³Q‰ÐT@ÔÚ†ZЮً&æ!:+IByˆ¹F©×œ¼a˜Š¨ìp@ò¨RŸ0 HÊ‚°h*Ç¡±y/!¿A³È“ÇÝh~T#¬)*&6¤€)KD°¼Xš˜)Ãùˆ€O†þ¹{#%E¢À†pî Ž˜SIHê:-93‚XH[fÓ¥:²ÍµÐ&|†Ba91ðÖØ/2YEqÅ›Y}>ö×<£>Pˆ¤HÖ%OÇŸŒÂMª ÎÅVAè`eÍ<˜– ° 蜄OJâŸ$6ÂØº¡åKT&>*œ'aÅE¹0÷z®ŠpHêÁDtdR-“ˆ‘³ƒ‚ƒxŸ øXdÂ+’ÁðŒ@Hîßj‹ån E$Ò,+™PXƒÐ] aØMÁ6/ Í ±òÉP¨¬>´C˜C aÒ`ã% Åá»^„U ŠB¸Ä¥0o#ˆX°×z<Ûk2É_ÿÏû~¢ÿ¹_ÞßýëýÿºøCw{÷ÿ»»ãõ¿ì×åi—vÿ»éoeiðêßÞ_ÿßçßÖïºÿ¬]¨Ñ_ ¨&#‡q¸©<ü]1b§è}N|ý"ˆôÚ)“þSIiÇžB€V)ÌŒtÆ$‰›§]’¾àÅã“qüAÚ»’sàh¡Žºc§%q”©Ä@ï0â™"$+˜ª„Ðn6Ã@ðÒt+²!‹ ¦ òšŒåýœ®¸yC›¹X$UÌœ'Î×\qdº„à¸`,¼`XY´([s*!d$ÌÝä¨Ì—"M Dšèä긹¬E2ÐFD@kEÃq~¤ª"8ÏBnAUZ´í°ŽP’³ê(‘C‹"QÖªë°õQ¬ì³UȱFÕüèÖ)­ñ‹m­WkïÊ» ¢ÉFäÄþ¡îGœN¿(¹ÃcÎTceKžØÆáYSƹ"¦ÕOÉ5'¢ª~mÖuªi„‡ì‰¤fœIÒæÕ„~ÕKËãm¹þ¿;/¾¹\¯;žÉVD:tÈ÷“:yC’Q¨¾z\ÕBц„º"LÛÑ'È5AÁN¤©™8ÉÞRö—_§O)Zþ{ï_¹·›¿Ÿ{‘î§|ãþ÷v¿ n¿ã»˜ÿ}ì1÷›w·.–]ýÿfïnýåÃò÷îÿ™^PB@]44Ic‚£lÖ¨S•G"Š(í #%Y¹©²ZäççK*È*`©¨RÕÀêãº0è²R8ưwú2ªéHÝqÀ¤œY‘-òE<¨Š3˜T4 ©¢I`Àcq™6Èä胩P}6 ³ÁŒŠ R ½A~Ãy@(FÀâ=€„Á±CAÀðuŒ_Tƒ"ù ŒŸ ÎqÎÞ]©™›×á)-H?6¦1Ñ0à‡“ÁÊbÑ¡Ñ5„q%@DÑ=0BH68"4bÉB¦ =—h·¸`¹kHdìûi IÑ©*2(°0e›[júb®%eç½ ã…Š ™v±¹{rqt¡Ê‰Z-(>‹ª";2 DrPŠd˜aÈ%IJcCûôò„M䢄5½rD¤©"NIóUÂ+!Us§‘‰(l©dŽ,øÓ±)’ˆËæFǽ¬•©KË'\î-÷סHºöù*æ’GT2Eé9g[£qOTªPÚ$4uÓxIì©W}µœFëþŸšìžû¼ûèÒ·ö²h!ÃCäoL@¨UB‰±‡S%‘ÄÊÄÙ9¸[4J–¯¶ÍIȰ!ázsKe®è[î5‡¿6òßËÇú´^ Qh^C!q¤Ÿ?!XþåÜq[Ý—)UýŒS÷ãŠ{ÿ_~ù«ÊìswyþýÌ®÷õröýô‹½õŽDäË`Ù•Í~ê‹p”À‚NJÌŠ@6Âñ]O²Í/|ªÈI‚˜’ôF©Všpk¯xï.ÄT]а6 i¬;Àh by(Šë ª ϱÈjeMº ‚(tÁÈIE€'ÉÐäjLÁ.õ±|ÐÊ ä-àºAx,ŒP`fšM¦th;ˆX6ÄjˆâeÑÚ ÙY&ŒnnÑt£*ˆ!P–aLlÐûÆÑz óxåÓƒB!qÇXI¤£†HÑ*@8K!*uùC÷ðŒ6++*ÕÍŽ)½Z§Å’ >á©1ÌNNxñÏf1çOòþ™êÕÛ¿¦²´gVDu•©×¥v¾¶uÍòy¡L¸ãÈpÓ¹bêwUqÉÖ'¶=‡½[u÷o«ÝÆm›F²*'ľ–{—ôÈ£ÄÖ™ébЦk4i+ÈFp]ɫۊV_ ~çþ}?/Ö§°Ò©¼×Pº]"– 0î©þUZÕV±Ærãùÿv«^tëHÕ›uÂ{_éÛ8õñz1çžwŽbV¬Yöν¯jl; BW+†>lzð}arÈfff\­o•«ÌAj߯~Ó73ûnò÷ÿ¿ÿyÿ ãq›I`¢-j¡ª¼'Dz¥Ë,…±¢&Ìʉe^n襚•,ÉÙp. !©¥£¹Éµ˜S¤õ׃ª2yŢ D²™ªÏJ è¡’rââ‘ÈxL55Æ&ä!`ŽÙ¸ü’zÅû\9ÃYNÆ%gÇF2´ÌL¢t¾×Š#Ó¶°#Hó ǃé !Å»$†¤k2”}C±Q¬’%á ‘ºbjL8Œƒ Ü©¢´& ‚ÃbjTD8ëKXИAOª7/xÂÚQ­‘˜öˆX„2«(5„­9S¦ì\žÍÏX$“DÙ¥Øi”K«èžI³‡Tq1҃몢ÃÅ^鞘ur¿’îƒ×{)ÓEFÅ¿n(Ï[~µxÜùb"ü ,ã¦;Jy,XB aòd´Z`„ŒP–ipô ý÷vZcRDµych:³_L¤ÕtÑj.^|øÐWœ63só[ZAÚÅeÌY%8£±£÷ɰ­0̦"«_„Ãa©jP%‰F(…‰†IÙåÓ\SFÄr"ª_C!Ou)õТ©,»i!“öÆ•î~øÓ³ uM)}pe÷å¾û,üñÞåùî¿A®ÙßR‹eql¿cú«ëLWåùIÕYÖ›Ðî®wÖíû÷/þeý–Ý"ª]5ôn¦‚~5>Fu=Z¶§šNdxå© ÂwͶ.JÖ.<ÓS7îËTþ Âw”;úŠU²¶‹Ì ‘¸šnPë(<®ƒV„ˆ˜P¾BÒ©KÝQ—^ö×eÙÜfvt-Å‘ @4.TƒR%’[3Öš<œìnEÄ1(˜.ºTà<ˆöcé øf¬ÞÈÛdóbJÌ«o¶N4\éQÔ)u“½†P]& šDPœfsΤ‘§3F©ç%#|eé\‚ˆÚƒÛNMæÓʸõêN•z 8¶S¡(§rGïVI µ­¸Üb«*“Á¯†½,•¹B½z£.0ü‘¤¿auÌ‹‡µZ!£¯á\dª LÒ·mKXæ2執ñ¦S{ž›½'7¹;«½ 8Ü\æ l±/ÈdÄtmj[«Š­n‹Mx-Ïü¿¾·ñ AêÙ‡ØÉ U1Xœ](ZRUUaQë²qtçL«FWíQÿq×I¸¥eèwÎÕNbØ~¨=qU<öœÕ²^‚ÏaïbGh³×ògJ,š‡ ¬¡ç­°œ®=‡1F ·ÅHVSüi nFµ÷_îÖ7…Âöñ÷éFï$V=B5¹w‘€q6J© ˆL Pc¡=Ì’Šˆ`ï‚©º,—ËOFÂøv :Òk ¬…SÂAX‡d dªaÃánGFÄ`WH„¯ †L ca,›¡Ú ”éÑ= (‹BèqŽ™’L¸Ž|#^>d+´ÊŒ‚2Œ¸Ô*¨xÁ¹hØIØ2‚Ç8^xà"uDd ãDÈGLbnS ™WD9lÜ–BsŽ „ Éå…Z Uű`2Y©©ªjñ!Br„‹æÚR3$³Gš¥Ü0=1UÌ Û¥q BPI lÀÊÌI‡E&†gí¢‡¸ˆ‰Rù“ž³ík…¨#ŽŠÅ°*œòI‡º¹EÇíUÊ¥vo^‡»ÈU„‡‡ Ï„¹hødˆb&ŒÉvPOḃFÒ>[l²“T>!–­R1¸A˜™h9!|vÂð(Ä`xâ(‘ÃØ9 #bQŸkǃÞÁÂ/ŒGéÆOUéŸm 'Š ‹3ª$¿.™š>~å{¼G­}÷þ î½öü_þ_p…—}[ñÏõ;þƒjþ?ú£Lû½ïNuþ¼*ÌåñÚ±IÎtnjôï>v¥Öï3ÎwV¹ö#Ͷ«®{{®œr޼ÚÑi oBfŠY+š$¤áÓ•žhç2N Í8ÓJð®Êøt˜J°³âZãBa”ÉŽ,âÊMHÉ¡ÔQ9K£.ÓˆÑ-—›2³ì°uÒ–8ç/c?£¨[Ì/ 6óÀîÑIM=ôR<êï’»'úè^¶>6­½_:XÛj9ësº²"bâߑͱÅù|[Úmô)yúîS{8î3Tõ«ëÞíü~j'äq%°C\¾Èdš=¥ÔM¥yŒ3’û»‘ݶ™<‡ „ĈÑ#H‘)rA“ <¶,õX&K¤½¸K]=R"[¶,î1‹½}Ãõk«Ês½¯’Õ.USUzú­U„®9©ëâþů‹[Å­'ô½y®ùl¨Ç±ŠG_¸üß}2ößÏÜÍËü«ýK[qéc()6·vü÷‘ˆQA/<”´Œ8É 1Ø|X~|Ê8LÃ¥ÃÁмj¢Ù±@#^¡›¦t" ‰cÀUˆ%b¨fB2pvd1^¾7©‹d" ó#7iñ˜Ñì-%æ~©Q&<„jK"‘„#èNAA*%Ÿ#$Gc›]%±"r!@[TÐtáY@bqÚ",>˜DhÌ‚p”JjhÓ:d^RBª“¦î =:Â!0¿³W„Q“‰ÍÆÆÐhKæè:ñŒX–¼³MY¤ä‚C/°ªªƒÍ-™-~ùipy€OŸAæ¾]"OE2•'Dª›£lú:-/*g"óª89 ¯êazÏȤø;Miƒ4'*;\vN7îüžÉ­T‚2Âñ)²4<— n< !NixK<+®2oÒ$]¯œUÿõvÚÝÔjZ†‡2IUžÖïn¹¦8»©ÂÒ€þ8¨ÐÌf•QøxLA1/\Ä¢Ìb¦'Ò ÉLHâÂ=Á`ž‚(ºI¨–Ì¡ðœ‚NJêתt¼ÔV)%QžLpo àõqŸÊáMÝ Ïå®>½Ï×ÿåïyk»[3þå®¶·ÿ©ûðíõ:¸Åý“_qÚC×ϲ¯•ÞÙFCלh¥{ŽýjM×ǹZe_ù‘¾èü+°Ú}ËNMoZáî"‰³Žã~lõ•!,:YÅ*‚–ý}n †¡Y€©ÁVÄϬI°ÈKÀÐã`º Œ°èùÝŠÍLܪ¤¥S”ê«\[XË™I½*“Lô$÷ºÇÀc1¥ˆïº€­KÍ红\»™k"‰F¢U…¸béÔCÈVGdR¢¡Q_ô¤4N÷ÔôFˆFë0¼í2æüŠÚêÄÉCÄ‘‰b“-N4±Îô±è0ŸÐaB¯~Ìå”%'¿=äʱnâšcª¤•eÚ›,b«§U¤ë£³§i×kúÔ=×ç~·±t”Sk^II¿¥d·©C›8²‰t(½oVfÍœâÅ$kZüÊö1©”ÐͯI&&l£òïƒúy›OüêíËj-Á›OsÇçý?¦²žÃ¯Rã{›µºçåóøÀvx8œ bçAEQ†a‡qÇ‚‚ ‚ ‚ $’I$’I$’J(¢Š(¢Š(¢Š(¢Š(¢Ë,¢Ê,²Ì,²Ë0²Ì,ÂË,à 0à ,ÂË,à 0à 0ÓL0Ó 0à ,ÓL0Ã4ÃN4ÓM4ÓL4ÓM4Ã@4Ó8ãM8ÓMÓL8óÏ4ãM4ÓN4ãOã<óO4óO4ÃN8óL8óÀ8Íà<ãÀ<ð<ÓÏ<óÏ<ó€4ð4û<ãìãÀ7³{4ÿŽ<þÏ<ó¼8óÏìÓÀ<À;³Ï;ðÀ;³ìóû<ÿ<Ï?³Ï<¿<óÿ<ÏóÀ<ïüã½8À<óÎðóÏðãÏ<ÿMðóÏìóÎóý;Óü<ó¿8À8ðìóü<ãü8þÏðÓ¿<ý8ÏìþÏþÏïøþÎï8ÿüóþ?³ÿ<óû?ðCÿ ?ðÿ ?ð#ÿ?³ÿ+?ðCÿ<ÿÀÏü ÿÀÏüÿÀÏüóþ?³ü?ðCÿ ?Óÿ ?³ý?ãü?³û?³À?ð£¿?³ÿ ?ãÿ?Óÿ ?ãþ?ðCÏìïøðóÏ<ïÀÿü0ÿÀ?ðCO?³€<O8à4ïÀôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓÿÿÿÿàÏüÿÔOôÿÀøÿÂ?Óû4ü<ÿÀOðð<Îü4þÏøÿÀOü(ÿÀüóü<¿?ðsÿ?Óÿ<ÿÃOøÿ;ðSÿ?ð3ÿ?ñý?Ãÿ?ðÿ?ðcÿ?ñ“À?³þ?³ÿ?ÃÀ;ðÍüóÀ<ý8ðÿÿO8€8ïôþÏüÿÀôÿ4ÿO?³¿;ðcû<ÿOìóÿ?ÓÏóÀ;ðÏ;³Î<~?ãÏ<ü<ÿøþÏîÏðóÀ8ð?ÃÍÓÀ<ÎîÏóÎ8óÍÓÀ<óÎ7ã;³@<NìÓ{<ãü4ÐÓÍ8óÎ<ã»<ÓNãM8þÍ4ã€<ÓÍ<ÓN4ÓO<Ó4Ó8ÓM4ÓN<ÓÌ4ÓM4ÓN<Ó@8Ó 0ÓL0Ó,Ó4À 0Ó 0ã 0à 0Ó0à 0à ,³L0ÂË,²Ë,²Ë,²‹,²Ë0¢Ë,²Ë,¢Š,¢Š(¢Š(¢J(¢J(’I(’I$’H$’ ‚ È ÇqÆa†QECÀs%9땽µÝ†àmãüªÝ»cBÀu~mY=l–x¶z¿6e{d¯Wêôg²º&÷?¯Öð`d±ûmò]ŸÀod§ŸkË#½{ø/¾·6µ$=„ÂëV<Ö!ŽÍÚ ÇðÀL\j½fÔ?ŠÖ¡¼}P/Û’Âäµ$'åû_ZÑßÍge*E‰´êÛ?ûíÏþ`/ã-µ÷w«{æè“žwßouPCЬv?è™lÏ·öµ›’ÍËg}ð¾_ç’Ëf|9øÛ3fj(æW3À\O#‘«0Q®ß–Z’Ííïß•évº4ÊYÙ¿ß›™›YÆR•×ú/x߯A´ýßø×þù‘²÷œå‘ØþG#·ÍÏŽ/ísÿNÛŸ ¥ùŸý{ÿvµ%¥>¯þF³‡ªŠïZ yìª}Þøss¶9½ïwÛ2ypCÒî¬ßûöJ÷ŽGå²ÚWwÿ¥kÓ¥´Åã:Võüì•ÿãÙ|·æ~eò9²—J/îåÈ”HiX¾†ˆuéæÇþ6ÙîYû"[Ž=¾‚v©Øþ.érµ§Cm’3Ò^þÁ½É÷í¥>Øü¿gh×zwÌßïÜøüss3swc-Üì¾gïÆ1Éôö_(öoËcŒjÿ?¦J;—önû0±-÷çFݺ¹ó'ÑAea´²ñ”·þ1σ¥Æ¹µ¬zhqÚô`bO=•ë”ú1Ùbó[Ù{ÆOS¯ÿKß/zG³ºñ—çÓ]é_—†Ñ—ì8Ï?ËuÚ0)"'Ï|¼ðçK߃úIvžƒõo’Ç1Š;CdÌŸÞ9ŠœXÑßÓÿ³ŽÑÝg:2æ ©ŽNñÿþÞÎïÑl¿sr1νû?çû“ÌøÊ?:Ç7oFË=/o¯iÚWüœvHXÛÅî¬o‡'‹5yª—EWN ¾¾CùÑŽge£³ÜÎËOcoÞñ½²vË[:RûÇ2?–›?ÿ2×—N¿fʹ—çïì«N”¿`œþÎŽ__bÖél+ JNž…=äOc‘Œc½/¿ïæ^Åk|øû3729´º•Io¡¤§‘Ü•³`cçò—JÑ‚oFïmó¿~[ÍÈìw6ûÝùù½¿¹»»ñ´cxÇ{3¾JrÖ±‰d³ãóùôò[ß–¯yÆ1ÍÍìîÌÚ*ŸßÚgd¥+Zpíàƒ)î|óº­0ä`vY-ûk4ÿø¼Ä–ÚÖíÉÏo.‡;sÿ©ÿôf­_þÖmúý£‡{ï9sžÅÕj +¯°')Z;B³kìõñF+YG±d{“çfzù¸·ÿÝŠsTO/Ö´zÞe-”q0YMëtQÝ‚mQEÿ£ÎZsce»”ÿÌÿûõzYŸùŸ¹ÙþW7Yú4ÔÚØ/~*½þÈ¥ý‹S‹-ïkz/¾±²ØÊ‘—VÀ¿—îþ}ú[jfoô;YtÌÞßܺõ‹ËÚ9óí½Òw“ß³¿+.†;™‘”;½½½”¬§–ÝŽï|º7úõû;µ‡èÔ_aæªã2†ÑœcNŸK-ÿ´ÞÈïçíós7s37w¾1ôJâ¶’c'Ç#o¾_--ÿï•cÁ8/ŸË{:Ùùû»™—üÍÌÝüýýÌŽtw{÷û©òßÈìzžÅÛôQfÌdç-câúÆ1‹âþÆ/´ÙÞqŒã(z}Ÿué¹8`î¼vr=™²ì£ºÃÉ- «·É³ £¯¢D·ñëß)-¹ÌUŽæÆÔÜü£ºÕëk×ÊÊ‘øÚûY¤¥å‹5ùN‚ØW|Päaf[h`ŠšÃÛŸögæ~üw£µËºé“Ɉý×¾ßr›zVõì¶Þg•J+ü í~äú;™ùÙùý™ywæfff~ÿæwgäm˜9™×Åïþ‹wÏŒ¶wCðq]÷^|6,ì¢ßu}Ù÷|g å×êC±ÞÝÏž~ÛãiÕÙ>Ëÿ~ù‘¾Ù—\ûnææ2µ4Ì£±Ì–e·ß»ÿòOµ’žl¯-øÉôR¤v› Úœ7Žý7«§^]=‡¶‘ûþæ^ÿß—üz²Þ—ÇÑèÝ2›.¤¥²Ý´¶1ÌÍËæd ”z»ùßoϾþgïæäw3ó7/ûù›™ÛŸÿÝi<¿FÓ¶eÿc}ŽäcÿÑçìk|Þ3{Y9lw'óB ` zñ~%úÈê¹ ° ˆYåA¬ ư1„¢( @t,¤©ç*¾µ0žRPâbÖ^¿_/*—+BšØd tà`´02ÍÀ‚°°ò¿6æ{—­o7ô\r½Â¾2,N´XV#^%P â=AÐùiê—ÀF´»1›ð\þæ"Û`!à½MÌnë$ñ ˜8¤K`ål©Ñ¢ AŠ à`ƒ0ì —«NÛZý¿ÙµaÿôoûÌ8…( ¨¥ë¥eu/?Øæ€“ñù5.H@ ØènÃÀ €(¸ÀH3æKÓÒf‘¹KzÒ_3úy™~Ìé¯I¿evºöuª4Ź“Rþ8lÎ7na¶é6÷Kå{ïFûµ£“y/R·á¥Ì/VÂæö? êdë >ð,êÄ#0ÀLQæhÕ¸ ^ÔÙkE¿S,] PE´/ÖûHìtwS¥Æ^cÑ<ÇQ r`GÃ.€‚—ŒîóŒY\Òô¡Ëô1„jC£ÀJ$I 8‹!+Të®Í™U«*,qƉN×Õ¹lÖ–¶>ZMdøÀ&@y’G½+@®M·ÎÆù¿ÉKÔÁ®~&X À[TÊ@AÀo)õ"´/[­]å"èÖNQgTš‰_Àí¢aÁ,Ǭ'-“zô—÷×Gg-G~ýúë0K½Ö%˜Àoø³‚b…5újòδ•_ØûÒklÖËâÅ­ù=¡ciÓ²ˆßŒý~´mÖ±÷©¢ƒïjè¨ p[/ þ(>¼V¾/…CÇåÄÀ À8ŽÄL*h§Jã]Ü~ÌËoXËÚìÜ’û¯ÎÕôEŠæ{Gá§K6³]rÅËa9‰0¸ ˜(j”\œªTµñùÀð€Q/9ZªNâ•Ð"‡Gˆ(•b˜]ëtyãäÀÿÉøx–1RT²<ŠJ gí`ÛšñµÀ–Ø ñ0N(ƒ ‡³Lñh$Cˆ€ °)Âì¬ B”Žò¨V6l<€s(rI„®÷Ï Ûbâ8&žEÀï$·Zq~¯·Ðß­ÝoÐ*® A4rQçnkï\38¤g##äj¡ÕÆÒM ÕuŽ„. …Àø †ñ ,…WŠ„°SÅá°d 0èD$W(•€U‹R8N l²aŸ:þK,ö#Žlÿë·èÛ§,Ú]Ãk,éCUÜ,ŒÚP è,äùø%™  Q€#A*E TfM%<ƒ´Ÿçúµçó_!^‹ÍL0¢±ßS ÌåK:òŠÊËsXYc‘åæ¶oä]cCÈÑȨB±§©t¨È|hœVf`B¼NÉ" §›¿yZG¾1éîR–?@ ÀöF}’}‰îçÇÿo×áØæˆ YFÌnoûÓ> gòj¬Òó¶9‹­Œñù’¨±Ø@åK Ô`Àൠaj@ Œ*Ù–ÁD8Á6l`ùP,Îu—o52½61”`G·ç¢å)·ÛôsëÅÆv.Y ߺØ'™%HŒêÈ p¸(rÆÓ4|È™ÞVºqé8ÄúÒrp0¾wþcWkå‹Ý&"a'¢a…Ψ<™sæÙ Â’£¹ Üæjë8cœÖÍœ°à€â$8 u%ìÛŒX¼šPÄ °J—pÐeú¦Ê¿6•Ökºô²?žÂÄö2€{pVàÐÔ¼ ƒsåCëô¾[;0€'võÕêð¯Aj ÐÄ Y Àò7‹xÇåç­!ºÀ¬4D1@K €x^ §¢Áé0@6Àª9ðI‹À&JOxA@æ µÅK-B¶MÕ˜/´ŽÎ·¥ãݹ›·i r[ÝAw;*oÇ‚0ež " 3[*@uA„ p¡\ÁxQ'f%ŠÏ h±UÒs3•¥6e˱òiÀˆ«QJîÑLXTû-2bûòzµ_^`+é-ö+»>“LÀI¢†'6*£Ee© JÖ'RNÜ0€g“ás~õv©pª©W^LBË3Ú@×>½´  €YÑ3´“ûŒôÞyÛ[:7¼~› ÀF¥!H¸ÖBX§°¤ô`À2@E "&Å¢^Ú6ŒãlÌÃqi@d†ü(h”à³üà†5?BH$A.&<ÓÔËˆáØ — ë÷‡Ûj4š÷ûr÷ÿ²ñ·uï¾ÕX­²è)bšHØ©ü£¯ßl¿B‰ºÆÔøw2ô¥Óa§ •[Ä›'Æü~ ŸT¿ž @ aV 0 ,$,2[aĵ8 %‚t$‚Ð9@ì+'—ü0¬ÒÚ(‘ž@`å«p­0H~Â5¹Bƒ°ð*cÌÑ”ÒÝ@ÁÔ£èý« ï^ƒµG`:¡0¨‘€Â\0Á´ņtŸ ‡gûf)ôÙb+TˆxABaÒ=‚¹°ô3p…?a „Ä`މ'AU¶œ{e D \l ‡áéfÊk±u±þ«ïÙ™·‚ìCù›9ÃJ.ë§·[æì|É9ÈÐÎf~Œˆ“%‡« ÐX” Ò“’ë^ÚUÕ·±di&äÎ0êןÌBí£:tuNÑõìûà+³-ÜŽî‘1( u£Qü›*Æ…Ò@Ûg"* YÔœú>™Hž?kµþ…9Jû'ç±æ'Ñ‹ðE°ž¸4È'T¯ï¢”;}èúù)S‰Ãy$J@v€É(šjH/T˜Ž ­)…´3d¾gsÈ¢žFØ›Lè>UÌ`; €Ò3tâàìØ˜vBæDp²#Bh ° È#$_”«¿ëÕ]ÖîÕéFz8ï¯(îõ–¼o=ŒåX¿²ÌFGAd~ÇVOkFÝ?‰ýêÒ¨@7¿$N£ŽÇç5ؤ­8[ušƒ`‚°Yët+S Ÿ*ÄÛ° PÆ5K»”‡ç/nâLH 4Á’°>%£ESã5§àÉZ€´>JF Ã0àqR 7ÆÄã‰md4›³’¢ÕÎ3¹¾<átA”€°kH|¥j)JʈÃÆEMâ5‘l§àEà€"DÀ&ž…ÀŽÄÄ`œðød˜´µÉ­]y±Ç"Áø!`Z› :¬˜N¬;ÈÃÕÙ#§ê³‘¨2 )à?`ÖQeo˜Æ?¹»'i;ÆûjɈÖÙ\¿æÆÓ’õ]ã»ûàµÀ|€Ÿ(€ÒRåþ]hü•!"«Qÿë&S˲qF´ÿÿíoÈ>>îÎ.N˜®²å§\¼ŽbëV¢ÉÑt5ÜAgéJc?:ÌdjQSúzš? ª‰Ì½ŠY°àCe£°3@ÕXX ÐU…åD0¢@L™t˜”·ã^… Ý5 ¯@9˃.ä-¡}x²-EfÐ"KF‚v@à9D`ÌèÔ @=AâPõñ ; d,YK)¦ÊóÌ^¹„"ñH˜)'!²¬ÑK$’ƒ£RÒ#´Gp¢š`þh¸ÆCŒ„w"²Y­[íû2æû/kf]˜%IÞùŒôbóÑŽÊòžvÛ`2#ï ô?ëÞ®MoÂçï`9ÀG êt1üÌýž1ÎfÊC_lÏÖSê@Û±XÅi]³û­á]^‹_Îî¯ ñL8 ÚAQê‰Gp]b¶V€ž`ð À€m‡§> ay’êÖÌí2Ó§Pž,þH ë6À¡|›‡»ÐÐ7Áàc†øàŒ'jé“Q_0‘v°a#â °{9°¤ •³ð:C°›2 ;Ý@². m-…cTÔ/CtSánÅâP OlØ—„Ñ$Jm*𢠻+£4ÌÉJÞÿ_*øÅÙJ;WìåàØgïgü½:ëJ«ù?øÏ?á"¦à;Ó{K?ãžÞüä¾ ôæUJC*½Ý_»ß\èí~hc»mÖ­ùþî¦Æ0å2ÀkÇ{#]¿[VÅH`WšArÿ€S“%P¡B˜0ÀJ@h† $gIÙ ÿÈI(Gå3pC þºÆo8ͨà`  h‹a,ñ,RCRòæd{úxÚ5MIh¢2Ф2@âXk@KÁ‚Ù0ضcsňSO33#hŸté’-0$SòÒ)19‚Õ),˜vº$É…ðüØr`"òþ_óÞéÛ×¹ÕÜbÐC÷“°?[u·É–Cgþû/Œ¡–Z¥D˜ [îäzu£²‚øþ½ûXV2¬ÞLc–Êq_)v(½éL—²¾ÎTùÒ™´¤-^‘è¹®õvrŒdímÿEuã鎚I¢*ÀPÓ¤|d¸ÑEâðdžvSÉMyVñ`¸˜¦~©Ø þNÔ p•°á+ÄÁ®,1@86@Ê…ˆË·ÿ—”1ŽÁ ÿ{½Û#®¶®R~2\|¹îWö™½ËøøÔ<!üý–æÆýYG¯8nÍB¹Zð¥¾å¢¼6‹_Ókÿ)k? çêH7ÛÝøìñÏýW|ᆵŸõœAœ]¤Ã£pæt€°öúvABèÌKh)ÿéŬÎqVà·u]¶ìݸ/m,!Uƒ<ç˜$! ° ·“QŸÕ^¬rÅÕ"Wñö•Ø öÐøè O@½VIojº>ÆgcìÈýv-Ò–Æ[ÛíÿR’ÛnþAlÌü1œØ_YœnS¿í,§F‘œ×ø9ëÆ0O¥“ÙlÙ_i|—öG£à‡dE¢|ËѧŠ×Ç*¹æ$Æ¸Šæ je†¥¢ixõ!´G3ƒ™+at¥ããEŠ Sˆ'Ð@¶.šŠbh/KÔ !VQ$Bzâ¯)Œ«¢þ­u‡Î(–.VÑ0…›BæŽ×–A¼FäÃá#iÿ™¡«o_Z­HwŠ’¹¶Æ² p †qøn!Ø1M7,xž \P“• À4Šd£û¸­Ã7ÏV#~õ ªž¾2ºr¨jΜ˜C04Û-LghŠÐ„\H±h$z @¹‹AY3¤ú~KAN¹âyq›² ™:R}r(áá´X›fë-;&®`ێҘĠx~èæáE]<-WBôäÛC3DR¡5áp"q.–±j5¿ðÌÞËÈ, ^©ÈnØ•‰Ó}‘ÙF¦h„p %7( !GôV €*ƒÈRA| ÈEs ñ‹£ðÞ­\+nL—`ÏX~ÍÍ]tm%Ô¥œhÃ|%Ç£ÛÄ‰Ñ …‚±^6<–$Â袼 3) Ÿ=κë&f"aZU8|} ÖQ@¦"T!-n ÉA|9Õ¨@M2p[’I8G('Ÿ×mvj‰/íOóÁ÷Ê-np÷£¥±¦‰oc€eÊz§?”e»54W‰wÿÖÏy?¯àþÜ}ãvWÉù„_þ²– ;ÏÖÀ>ÚSèl%>¼{ÏðŠ…øTZ·ÿ¢îü@<æ£bHèâXJ˜BÃ:¯ÜŸ«¥ ôÃRõ†QDr ‡S]*Û‰¹àÞðsðéáµ ¨ÚqÚ¼Õ´‡.ZSÅ lŸ*YÉ·r«¬¡1“‹ö(oÈ"‚W‹:ŠŒ¨<ÆÛ€µkÒRl¬¹,¥y¡V`¨WP®§È ¤™[¼ôÌn* '¸}Ç,@²Z—’z¹g²‘Zê1eÜ‘ãFïÑAÚK’³IÊéŸ/€{ÅH£ì]S8tHhºçÔs&ùZ—’×K:–k³nùúüÏ¡aõ(éã_a+QI¼ß¢ÎZ[Y-̬š@]¶–·«¯ð㓊,µ¸²ï°ìÐÆ‰RF0ùu@A¶Ú] r/V<±¤“I4¾F_:ä¿{ïðëѾ+ëR¿ßm¶²g÷=™K×=’ÙWÞÕ Hù’ŒItîHai»~UšÔì–N`諢謓÷š½GÕ1eäšÈ¤Ã)m9îßúVÞ9.Ÿ1¬]’ê?K…QOÈ•zi$‘TRúOMÅzŸ“á\“I.%²]EíêEÍŨËãñÆ=œj-]œn­EbÍ{Xß#䨋—¯‹âñžR(Å(NAB%JËÝKšÓ.âÁrS¤|À£Qœzâ®–RÓ–‰i†–®®„¬ËÔøzdñ‘ÀØ„¤‰ó4d³ÑÌd3P9"&Í~µ/Z9#¹rÑá@xEסˆCd”ÔRiF˜i 繪M¦Ró3Óeé"dMÂ(ð2®„—1N¤¡XF–ñÈ„L.䪯Ãï§™Ý ®\€Ü|ûÍéìö…ÛB8´Æ¢J#Ç‚“\€¨»ÌЬ,ia=󻬌.4ÂO›B[¨95lèæÐ¶„H1+Lµ²ž$”è’hÕ㪖˜êÔNЯ5rèJà]5`mKÖŒ©Gn©+Ä>‹BE J{ñl¿ªÌ›`¯WBðÜ|S!‡¼`(3 ¢ Ã>~&ÆH&AŒÐé@šP\øÍØÕŠ¡»?Ë¥°õ$¦~…[7£ì;¶—t5äÂ2:b³1¬xÄlG‘EI&g‡W+:ϺÂ?Ù6%”+[Y¶ºRàüÌ UUçÉn“ËœÛBl6­.‚ÚʬK$ºÒê·o-b6ŠHö§ŽyŽÚ#©V$Z[Å)ÚB¶GDüÛ‘o/!müM¨,Ïì)ÝzoG̾7,èâKγ[™öÃô#¥ÖÈKÍáõر—KŒïÜ_hÂZÿ\Ãó‹mOIìÞ=«q•Gê„ôÆÈŠ¡FÜoýÿ'‘/ î#Yµ?"©!H‰#LÆYeà}¸²bés†Ì%BU 9%HYj8Ãq©Iã¹\þ˜šè£f¬1¼?§¥(Vâ{§ÔøWÉŠíªdµYTЬY¦ÄgZ¢?.Èà3ÊÁœ´«AÈLʈNš'ŸáÌÏÖK¨Å¹ˆSñ~#C–e¥ò¥¤ö Íêkx êVðúÃé5F÷¹Ž…æÕ–r‹/g_eùîTÿ`ÉN¨ßå¯êÏØÚ¶©Ö^éâÛö“7‹°./-³Ý¾Æ1K7±DÄ«‰ÈÜ„*fqWŸD¶”6jI׫B öàœ åĈ;R5³ˆjg–Ž•‰ÅF>gbÉ£ŠÍö/Žîta“·­zô½ïö«ûj¤ª…4¥; Ù“nûV š†ÎU¬Ä=J{9ÆrØÒ žQÌ‚È Á>Ï͉2ôzò‹/ÉŠÏÔêûyÙÐò=Iéy,Šð®Åq-ó7Çz=„‡b$ˆx?Á䇲3Ã<5ñÜ$=ä'øŸÄÍbVÒNEh†4œ¶×†.zº;(R>_["kær3‘~adRÅ5ÓÌ«cqgÛÕý}oèd.¦ÙH¦¥xrJRÈ“&ÍPì9‘ 2L¸¦TUÊÓ %QT()Qá¢WD(PCÈ®Gŧn–Txq79&)s¶Ib@ñ:ãâá+×DÚº¥ FF„3QPŠãf c˜”ÖHõ6]×¶[V¡“bWS.%”†Â™f¦ Th< (LiKËFFüP”&ÇwCž2ŸÔE›L|~®‚T°yBDÜÕ÷V#yÎO9i&;ræ’6?.‡â%1`´¬ž´Y¿¡'  %<:7u—!@L;Kâ‘»¡SÇ÷%ÔI:‰*5+.Ùü|½ióS%®xú]zý_²"JaoÁ ¤ñeqÀ0îÎqtJñhð’4("ÊwhX€3#n)VÛÔE /ÄÇËÄŒ$ ð% àkVÃøn¢€ª¹r!¼Ð_ÂU*E+G!¤ü1©'-–”ŸCŸ~¬<ïßJ±v6ZÊ"¦JhõG-ù‘'% éƒËıœ˜7‰¸g>A|â+­,ƒŠ•ÅÃMPbQ¡i°¢>ÀÞ5އYQ¤lU•Zá¢a"#|š7:8 É^~HÑ?d£d ¹[ºh¢ìvA*Â5ÎY-d­%¢ÙÑpJ]¤[áZÚ[(‚*‰VÛk³±“︅øQBa ÍPµHK –¯¿«lêRhÆXUdÓMs H¾F ¤æÝöž–!*Äøº°¶ÝírñÚ·­û1_Š¥tãšq„I<$4o±EÃÛ >S•0wDlûŒÒÕ.‹i«]ÚY P·Ncc®{ëÁG¨ÑØè°®Éæ“u¥KŸsÖ~»WoZcÊb9¸úhN¾‰™™aa¼Rr$,_hT½Ù£ê¶kËß[Nõ¤Z8‚ì.Ò™EœW|” ²Â¢ˆ&º'ÄЀ„¨ŒÇ[©dºcqíÈ6!èŸa:œEKŠX*𞸗2dyC¼`÷Ç×*+¸*2E⇺b¹„‹1©5/¢¦Ês)Yj ¤Ä)Ý TOán¡—ƒD…ù‹q Lu†œk¦Öpû‡þ=ÂöS0ÔDŽ™ LŠÂêÜðŠTó¯“ Ù+š+ö°¢Ñgž!•m:/(iòÅšv‰„<˜ávÐ 1ÉFåÔ([Nt¤œœ¨ôÙ¹è­árËaÑ›bjaÒ4’wIäá8œTv½Yƒ Ø~4ÞaõÍVö-œ+ çAíÄÆù>¼Ä²‡gŠÒ•(h‚ÚC£¢Âtàlw·UÆ×çÒòùð>Ä1BѹqV„™±œÛ¥Î#âz#çôv•KdRÆ[ñ.Ýd3±>ƒ¨µ Fnºü­„sŒKîêRÕgœQ r5…3Ò RZ 1¨F‚\¨,”òûë} ±TR|*¤GŸ… nn¸”} á«>ü«(„PTÖpäi…Qªa””À2‚°À•³w ¨0)²œ|àX?’ìüµnÒMÖ=/í”–Òˆ«Iµ¹yRu¬m°ÉPâ®H–æˆÐà2”ž)ݬáóŠÿ„¹!ý½’R£‚ $ %å#’yãö²µÊE)(øš|ú,Qåo!š‡Káy¢Š4è\* F 豈†•àh87 C#¼‚2‹¾˜-*u›eÐìux®ÂD.¶&jÕ†‡óVX©—!X‘â‚Īå/ÕTÏJ’—¾bˆ…Ð(Á½h*y&¼‹S+·|7>ÛÁš¨f†0‹ÑñFÜ XsB5`“¸Ç1©R äêVÃOEcÍ 8ãëQÉY…Hk°‹"‰SJÞ†î°íŸ?›É˜I´¡ûb&iQÿH¿L !a· l™a+­ŸûêӠެT’—jS¦N¾[{tuaÔ%èÚ]‚{Û*XÛ¥ï¤!*L@»õ£ÏïcP»Kjš%«[E^¯}RzlKJ1U¨§)U—üBcqÙi_§]ɧ¦ô-+6á×á4—¶\66*8Ϭ¢hIQ¼Ò<[;ß^²þ²/ÏÊØGeÑÉ\Xa ìbêÁV%•’…Ôâ°Ì!Qëë²òQeðÚ!“’Æ4bP+Ÿ çB,¼åÄC×$Ž* ÞG—ˆBJm„ÐU9#ˆµ“?â’AV Ô“‰è–Š®ŽÑáŒP¡”þòõí-Žæd­¯Êÿ™³ÎÛk±•y\ÔÂ{ Ö‹µÎ 0eþ0¾:m# _˜ƒþ7ǘwPJ–\œZ©mºØÌ'äê¨~aÖ×gg‹=‹ŠöÈnXèùÒ ‡M2»~YTõ6‘¬ÌèVµ"VµÖa?]ÕíUè;óŒ7¹JÏ­´m]dÎè{¥“´æÎÛ¯-fTOQúÀì5vðL²HC´Â!q}qsழR‘ƒõÍ¢b¡,¬­²eú½ÌN¨=ƒØü  ÉJ[Yõº«–O9áøþ‡Çêz3—R²¢1á ð½Z Õo*Ÿ‰|‡åBs Uü$û‚Üž! Ä Æ â I¸ˆ/ …ãG§#xŠEÔ©¥"8¤bðÜc!(Dà±ÊQÉ¡ÄÞú¿i6†B¸$– v¡ÁVZÒ’åeLDD<<Ê@È<’²&’VVX+†ÞñYHñ±D1Z¶ Èð¤LDT‘ddžtâÙ8õÄaxÃaU`yD'„0ªæ¢z$A»VÐRú)¨Öü8´’¤:xÄfÀˆ 'à— à²f+(uÔj¸@¶T"ÍÄàP„‘2@‰&4ˆÅä&%ð·&(Œ|XÕ—78:*&{¬djý­Èþ,´)u SCBùRÂNðóÙ‹„ QÙa“GŠÃÐ_ŽcÈ%AJ?4…u'PŒSM~ï(Ë4Š!bDd¦-<®¢2è:Ã`†YW}HÌjxâ¾%¬:vˆÌ T¢a‹)Л”`lP*¢níš.ŸÜZÂÍ”¨úéΗ‚§»äÂ4Nk®”'(gƒš¡¥Ã÷}ÅNRÒÐ óP¡1¢`Á0$xu/O0.Ý)*”Þ5=( 8¡P-• :r㎕>¦÷VItÞĶÙ –ËI•7ô5úk©.µú²²'­,Sh`¼íd¨>ç»#þUÊØ<ÓøPW?…MÒ˜˜Í¿û)ÏÄÉ(?My^5¬q;üúçô:ÓyÑK ‡œý›£åèüñÑÒ?H¬¡“1«UIR!È­Pè|îˆN™É ®VϳW²Å©­ñ§É 1W!ƒ~Ñæ•'i''áÖ¾h8¢`E£ñi‘âRÜNÒ{ù ä^™ r¨[@ñ4"AŒõj+ÃT2ܺñÌÊGá~—;ÉÁ dÁØ‚Ð3@“¦SÚ ñ|,¬ ºF0%À• ÀÝЂf* F°|u€€D Á&.ƒðdgoB”ô]1u?44…QÁ0yˆžð²´õNp¡^!…a A&D–I%¶—Z:ÎϳsrU‹”†ýý¼ö”´–QOÝP)ˆáˆ¤©f¤ŠÓtIdû¨Þ¼2ëôŠº&9ã•Ð-VþTO@7×;ž)“õós{­‹õêâ#”Cs$«;UŒg4äÞå´?’«*×.ô]½yéV/ê¥ÏäÊ®¢Šî¡2œJv)áÜTÁ åvÞ1„Û) å0˜7±.ê¼/©tÌ !Â)T3- 2 ̆<",p¯1N‚]Ø^耳:q¡­³ÆÕ•  ŽÓaÛ/•:­#ÄöRU¦بàøâÎ(“HŠ&M:6ûÌ”2Шl¨G¡?ØWD'@PX:Xkòp²Ø3PO\(^v<5l®||â˜ÕEJ«ï/H[H°v䥡´øV#ÄçÈ–®˜S â$5ЇÃêç(fv8N *fmµM-l†=>“à ÉÇV_PUIU[Æ*VE¼|PDåƒHéÀ‡! ãz0š¦bøÒ„–*;…a,(Œc°ÆF G'î…c²ÑÅ ËîhuRzÒË5åòã¾…? l×)±d;;ö‡ Ä3ð-…èD›…Ž—˜ƒð*Â&á"3:- ‚ø(Âh&› ‰á´á€%§(…i€À…§£òx_h+ý d0š) àK†ñ<].†@BØ>€{’Z+B°ºÁhQ¢@Æ¥ÂK$™¤r¬½D9¶¥—ûÎRT¿¥ª(gè³i|`CçhP•‰SQl,Æ”’yT#Hž‰:-0Y jÑd^œ?V~dÃ2ñØ…4 Ö@˜ì”3’_;}Ó´lN÷IY?Ç´…dÙLù”C£Åƒ" Ò#£"‰å䂯mðŸ@±RÉ<ÿÞO}ê{r¿= }1Ñ‘JC±•è#cµ€âªoy‘鋆a-¢è(Ãhð¬Ò{"Ç$£\Jƒu¼ž—ê¶Áªêªã¡Î,o17X>‰äŠQ(Øó¬í ºïMfÁW>t´ ÅK½^Œö?8zÚë}Zçš¾Ä<¶°Õ»Êë·-alÕú%~“º «lë O©¡ýÏâ}#™Ÿ@ƒT ²–6QŽôÑB™áê±a±R&fQ_,Ýf¹Òt….ÑŽX7®7¿¨1ã\D•»¡©cåI~Ÿn“­(»÷­ãt\\€/LŠÄѽ Ú?Fˆ®tø5 ä-!Lb‹‹ ‘Ý-¡ q@À$×·4ê f—àgè߬ææî|JÊÒ½CúʰR Àm0@,„¹@já&¨-6+Dàœ A‹`¨ û…1¢t`š<H`?…œC‚¼½aàMƒha  Q @u”À© / ¡„ ªK–\$¯*~(‰ŒfJlR:B¡ÄÀµ70Ä™†és9M—æí-:ñ¶íeUã=ccM\]€dNRÓØºzÊ%°FÌYͪÆÖËÛo«QÈGÃ-˜½—„Ýõ•?[Ó÷iàØÕª£—¶ƒäÄ„øT]Èμú2–‘¨¥K› ž¯}öß›vaµdôÏW'èç亮80OXR±ÇœDö«m vìÀUˆîmp‰&*hþ ×k ,¿N‹Ÿì^íÞÉÃ,Þ–™ºA¸›ã„OU?lɸÑaÙ°¸”°ÈªJ¤>/&*sVGçÆ¢áŠ‡ ¥4…C„©#i; [a˜\úÈØ´˜%I0üJGÓ‘4åÚÁêþ|#_#( ·j‚!´°“ã•-'È$‡Ú±&Z¯—Öl@„ÀxÈ"ZQàÊ#æ0”šX5i%‘T#FáÊH˜C¿Šƒs‡õ2/}Zmt<)Šç—ú(ÔÜs£ ×+l6•†!0F£LO !´d€µhR6ˆÄGp’ 1”,ƆpkiœiáBCþ¥ A#(¬áó2”\½á$/"æ,BFú^>dî¥Ä•È„0 D€ŽF!.(­!;q6ƒ|0Ab(„àà5‡SK«°AÄZJQaÌ”c€N ãh{„$Ø "P1yè‡lŒ@Â,‡68\‰™(ˆ±® ® kIT,!:|YÔÉŠèH†P¦D—Bଇ“i ›Ç¡‡œÍòú1G M$¢lQ^Ûh!dÊ!18 OÆÁ„¢Q4NUƒñYª+ÛQÉyØnBÛ Kù±ñ°TöRhÈyBARôHÄéžU ×V¸~ãôDØ–‰ ª %Õ*! d-™‹ŠJUŒ‘™^ ‡§Þ'C˜7I½†ð¼$vå¿EÄLýô§ŠˆçÅ~ò›ËIk™†ÃPÆDAƒd™/- ņH„;å#·”Ÿ©AUxð<ñkè0¿W«ÜNŽxÝ[¯o^ñzk$«·Õ¢{¸¶9+Ú—–F6È?úû~®?ÎI\–+” õÌ?÷!W3]¥WY¯{¾·tí1yI’dIµ(ÝKëbªJâ³ÖÝT.âÕá­c¤öóQ(+O JFµ/€z¹ceäbÎÃ:ìF)`+pͤñXµØ©s6†,ÓØ{+é,~¹x²Ú±êvÛG¦!ˆ¦ŒÅ”"ÙȾŒ_.ŠÈ<›‚€ŠBMŒWh@m‡8C‡Š+¥²É‚óö´aôýîÁõõ°˜ÿbo49‚#Ÿ1;‰£h¼Âd„Ö‹† g„ˆj~ Ð$ÀÔˆ¢@<ž eÁðÓéCÑ<èC ”ŽA² 0´4%QøGœIðºM q4g!L p’æ6²GS8áÅñ¼àÁIT²¿â;ßo?k'öíò³ZÿÞÛýŸËbÆQë µUL®ÝP§rg[×Êϧ£†VçfR*&T ÑÈâߟ‘nËÁ<–t­f½.·*/·µ£A²¨¸ã±ìPT7´8@LÁ‰r> ¸6.%xh±*å(O@’Uݽr·ß¬bÍå=øþÊÙ¯–Ø~ ¼¬Ep²àû‘Xnz²0SåÎ"¿J1øß2îÉÛËéåOå)`•zÊêÝÉèZF|?7 *\u).FÓУŒöcÃàºÃ׉¬-Y+7‰•±7îò(Æe‡ƒB¸œ?3õ©tåK»(dôψC”öXП•ãÙöBÄ,›½uï+¹„\”°Í°ÿRãâ\›†ÑÍ[9 „ñ+p„-8  n•¥xw©f9!"”àˆë Ð!-¢`ŠxT0Ðqã¤/Ý$Nк‘ijäM"hŽ-É7ðÌ bª±8h‰²€îGL%C˜â óÐÐV8‹€ß!àÄt†`¬´øEr0{¢¬-ô+OŽàTÄWT™U S²ù:ƒ`C~f%JDP…ÁkÂèO…Ò â$ÀS€p"ÁÔ$A=ÉÐ6Œåa$ñi4V8ÊjfQ€ PJ•’‹‰Ä Öœ#HAð5à>ƒð; ]¸O¤”á»ë($¾Épz6HD«‰CòÄʞpÍ…m;6%hgÑÚÊrRÒ¯_©ICfzÕ·$c‘’†"ÖâÖ¡2N/R=¡µ:WíœÝ¦LÞ¦m T€€¤Os'“Ê5¥¶Š6öoØíK ~ɤÔÞa=Joô_Ò ìˆÕtá_J"%õë,øÃÖ ØÒµÎ[ÛCwò2@ÌØÀó‰ÕB~…SCBÖ*ZdkŽ.ä ïJË`Þ]3 ã¼.ƒÕó‹ŒS$6ôa«ö]êóõgÒ-ò©R™ÓïbÑS Jçä·¯_”Ï‹¦É:†Q•eZŽkÖ½çÓ}zEu¹çò{~§ÉŽ`?W;{geÑrÚ ÍCG)¬Š¤vG‰¼®ó)ß7ꊩ±$—aQ`ßqµÄÇ”ˆk×ÃAѨ¡mP-DÍ$"çÌ @<_@^ZÒi1™´€±½mu÷æäÞšª*»˜RÄÞ@?,t~‚PGjH9†9sU¢±Y°¬È!m†pi&¥,&´ê@Xï5 ¦m)’¥Þ“ëÞ÷í¢ëµT%–j­¹;ùˆ$À– AÐq&À­40¼¨àŠAàÔqÑV³”%¸€Ç¸:„÷„ÐHºsö~Peï+1ܺŽ—èH€ëùN´ã°úŸ!Ç6䪒#Ò¬µxÒ |ò¬ÉI‡Ü;jHk‹hûû›ûùŸ–œ†û70p@[d-R×iIGûã•—³ìôâÏOm”¬e}‡Þ¢«4¦Gh'í¨yJ4öÇÜƒŠ¤«UYÍ{­knò"ä>W"»¾BÁô“®»;ù°ÑU0óÎð÷Ϩuš”èN¡3ÉxP±JeŽ,ŒIF CÈŸ¢Öy»$ÔE2Ó„”½c{Auôd© ül|âxº¬¬¾‚hæ! ‚iè=ÊɤI $‚ƒDˆ]bÍñTšys”ƒ´(‡8Jà‚¢ˆæ0 ¤Q½y “‹£Z·IäåΔ•Ìú-pä\øš* œ/ ®r>#®`˜äÀ~ºssóïyô̾74fi棙Pm€E”C zAL?`K—…8A…ËBVˆ JÕ(⤢Œòææ„Õ† X?7ÓœÌ÷_ÛÖ¥RW4‚K%"lÑ2a2; BJ„ð 6?hÁj ð¹ØÎ$ˆÂ€JÁÅã ª§øpð‹áë¶é‰Ò2è6w&Âf·q?½-gߤ æƒø0sŠ`•2>x$ ­†@ °_¼C+bˆØaÈ (¢nfaèä9‰À”á ð´8*ɃÀÂ¥a{¨¡ˆ!F4 K°à˜¥ggÑS’ØuÈÃ7ÉÞc¢E Ë‘žŠÞåüŒÖ&)¥XÏÒ¹±%‹É·Ê”±IßåìŠÝÝ)Ò#õŠ‹Ïœ@‰ „ Üí¾gZ_S!››,—ŒDÛœ@ÉÊD§Nuom¾Z{h¤Î»7í?Ó‡o¹þ£¹Ì V%šç†*Õœ¬›æûfΑ{ 'iV..Ë\½ˆh>Ø0V~g—Xd©;ŒÊ(V$‘QÁ[k’)ŒŽT̯'F˜3Æ”D¦±„un—¶Ì"Fe¥§HØâµS@³õÿ¿ßŸDS¡A¿Q⥃a0æ”I(<^›Vq¬ýÈœ¥%éEÈU&Y”³GÜIÂZ1TI'®9!FH a2@£OÑTÏX%\ž¤·Lž0dÝ%CVWúA(`§SäºÆÎõMïBHq„ÀÖ´9* “¨d9ó­?qK'µ;L~€‘D[®.~dù_–ólÏ.½]º(<ñ)2‡Ž<©}#$[w¨çÛAÌÁRCZ¥‡aN˜Ü0† uA*¤(à„øØ…1®lBÞèŠ4£,9v»£9[]—Ñz3žÙèÂ7ЄèÚJ`Š˜K ‚“à–.p˜Q"£¾R&FëFñàÚv+€:†0þ#¼t Ÿ(Æ‚> ‰ü~z-‡ˆb™@ßL”9óƒ!×úÿ)Í_›>\Ÿ¥§’9óÇÜåsQ‹}ý³òŒ¯%á¢ßvW67•»r¥é°6þÁò…™R+^öÿÝÍøöÛaïµ'×RT¡ÅZ³[(E&v|s6_>¦N[oÎ ÉO©ÍS>»[e¦ÎKñ{3ÆÑ¯½7}ì´òÈËö¿òëÒÍQ%šÆµK"…Š|èÆN{ñèA‰öâxùöáåOì{§l“¤G\iñªb%p¾lIî{1á,ž# õG5%£+¼6>|,à¶ŠÆA ]$p i†Q$ሠØu! <Áq|| ìp\9ëP5òŠˆi¥B$Ë­ºnv´2…ø ƒxS 2=;1J¬Šžd¦‰5˨$—Qñ¹ÂrÀÄV)ÈAÔTŒ´ìüv1 %¬'L’MA,~rsæ)È2z‰O‹“!Wó¢ÙÀÈ#ADt1x"¡X5…BAuÎÔr—2lŒ4Н=Á+Ç#š‚hˆ=Fp4- ðyhÈÑ£DCÒ9@¡Â€¼¸"À p6ß%È„À¦ àhˆñœšuJHM …áx70P)‰i p­Áq`q¥¤²(EŸœ»}p¥yµiuîêÚá!pƒàl=3õ"‹. £8R ¢˜'`ò#… F‘°E€5#ýØèê" bÈIFP„DÀdg<xø\¥ÀžB)¢RÖY)´‹#Û»òÂ~õ‰¯+p1^ ®)<‚8¡j5…C´©™J»¿š®[ÓeÆM°[2înµòü8%´~nµÃâKÌ®\T|yA=qFÃÆ 1mZïÖ´zÕ§jA¯ëÓ’¢`spè}†‚\F´6‰Á^gÞ\2‚Ä@‡ëƒ¤¨@¸©ãŸ,ÅÊ×i¬BÆAZÝePnt Éâ5ò¦Òí¹DwcÛÎÿ{f‚SXejìPí³ íÅ5ƒÝÛ×ol_gÈkiGX›Œº±ËW 6YxVWdòÂ]U15Ñé^g–ìe-Œ‰Ób4¤¢Ÿwóºóëuª8Õþȯ1‰”4E6—bÊìÆ\1nÆW­`kª!Xð>œ?Vn°éHv¼&Ò¦è…j¯y¯/ǘW“VÏ"^3@4#Â!Gƒ=¼ð±i®†‘!ÄilpÉÍ(’°‘D^ŒgÅüõsªŸÑ!óo‹éE¤#ä¥h_aë±—¬]T`A“Å¡D²(¢–Ì0Æ4ûÄ‘ã+Ra{:ÏRNêo1¡tM|¿ŒªXºINS“:VN Gåæ™"ša·”æ6ù”"]ÂM˜"LMxYñPM2|ÚEð˜0Ì©°3ë jc©RÂé`àܰù9¥a˜ÜêB€ð'ƒKN† Ê´–A‚ì• ûŠ#k3­¡xŸ¨ã VgUgR:û4ûä/Š ”mkWŠÛ'Lr7ÏbÈU‚ͰW8–®º b[âl%ÏYfU•4(HA¹aáAÂKKCÆ‹FÒ¡V-Aõœ~·ûÿþe+H³é97•a_§Â¶Râ;±Eþ4mó%Ä¥‘+ŠFYœÛ~ݲý¶N|ºt¯?ñG—èÞVŒh#ßëîÿFÛ’Þr‹nä7Ì¿í£}í‡m±íùä­H¾‘ÔoÙÝ,ÉÍÖ9µÚÿO ‰ô¶{»é|oÊÁ¯ã׌þ×+ÿ ùMèß!“ø«UÀ·œôWg_}‡õçžû|‚Þo¥³ Þk<Ä ÀñåÓ zÔÎê¢r„¾0ÃEÞÃñd ‰ˆøx&]X¢ƒ€kFÐ>È I,f@Ê•8trVPO3SÑÙÁ l8gÁ62‰ƒ‰áªïY ÐÕ1Èøœ)‹¡ ìB„ǦÌ\ÌÈKÁTrZ€Òŕᬛš'*A\ZRu‹»´Ž.±T.ªèœ´¶yÐÎ { ëïïou¶Ù ÌóÏýkðÞÖÌí¬m·½enëïôáÚÆæd»ãVlÅו<½Ö—”ÞbQÝíÿ¾Ú7¼;_ƒßœ>ÿ?ïÅûA°Z×o_Ëõ¢ô`“º·TÅÐ4îG¼Šl§Ü´¾çÊ©j—ÑЮ)ðªM2žV€¦¤éîtž|'yaq¢F Õ*,1°( „`Ò'Ždd%£ÀOˆ#0¿%e‘ #x9XÄt -J¤†/̨X6!M •<ð] —ÄR‡Ü"¦Î Â2ˆ@æ)¢™F”¡h„>93p¾y G´,lvx{!y T„UM“DVÇ‚¡â…¡ W ä"h’P=VìÞzòÎà B€ >YC`'…ÐBÌŒ‹ÁªZê°‘†ë…J1á°Vbð9*FQ ‘ià¿Ek‹‡>1FRU¸° †sP<Á:àµ!5€¦;N/Ar€!G£0ˆì$‡bYg’è › yœç—‹…'–mz«rˆ·X5+…ÅÞå%c€jYj6“®td/0GTø¸’¶Íž$uÄkcRðІӰaô< ŠÑ©úÔà¼(•ಣÁ5ØY„‚)Fb}¿«ý´”çy"bÒ^KÆ>¯>ãά+mÑ5a!Jà §FÂ2Ê ¤¡>r€¾î\xyf‡ÐÁeƒ0{$&hÄÁä‰îå–Àu ±bkw?#I Ù•V)‰ ¨W-¥/uõw_¿Ü­v3fwϵ6rž}Õÿá‚ìc—î!R‹´NV½TIÔ~|ÿLبÙÉ._Îã<ï·Ÿþd;Üÿüc„sSJS#C™£,©?<£zƒֲK?b^„‹X}œ@8±.¦1vªšK³Ñ‚³>†1¤TÅIÕIYЖ3+ B™Ñ9Ñ .ƒ˜p„³×œ¹üu”)C¹¤òÇGg¢êqõɨݕ±«ÊРYÚÀý9 Zª$R‰L¹M£¶gò‹ÁN_¸;pU˜© µ°žåÌÙI)µÝõ• FÀÆfˆÍôÃ(– ?¡5#£Yž!Ø < !ÅåL •Ät€%¡ðñƒ.凖֎šXZ? "Psà—U¬9¾íe]1«ƒh´- 5ræì¢BÛ‰×T»ý@ˆªÖi›­m¦»IN¬¢ç([)Ît‘H#0 ðì ¿Ïûð¡êTLŽ( zWo±·Û²%©ôŒ,<¡@Ø:FRÚ^{½Ý™¿ß±í´rÇq{±*Y™3Ëôñªä{ò׎ٷŒõ±ËÒ[ [I/%àezÌæP¹’èË/÷׿÷W­ÿõèqùªh§È]ûÿgÊÙ]¿å÷«ÿöl·¥¶¯ëí'ºÄ-Ñ$4šy±Þî?½‘ßÎùÆ;µ¯xÚV~ùòè÷^÷ò÷¬`×¢æ9Ëd²*}Ȭõ¶ƒǵüþßÏÉ/dWnȵ©3ŒKßIÐ'TÙí l»QÃb×ÖCZÈ'a 6”Žl/pWâY¦Ø8R+ÂH†‡¦xl`(3Dµ0g1@tüNa7ˆ$„uÏ"©Ç#É•#Õz!¨¬– Ü©)’1È´]\Žæhiˆy2of+œ P7?UoOèã¢Å&IÖÀÜÐyD`¼ø~6„ÀåA{‚ÃX|+«9KEB Xau*N(Š(y1•!'4~\ ëlÇÉ ‚8Ði Àë 4‚-@ò%¦wàZ´àæN-ziŒQèÒZÀ’,9H¦'‚“ ´–=F¬råæðQ^F#±h /¬X­ˆr%„') 4JÁOœyë®#8¢T žëç§™hl‚„6–­$¦(£‰ëF«‘ÂRŠå>nëöïÓg³Ú_gÿ¶èåùf¤oWb“_Ñ®Fûz½š*¢Fn&W¿Y¶ÒÞ¸%ˆæ‰QNfåH G=ç bëe´vOìŽ=³€ÜñNKë.ûïÖÛ¹nûËçñ‡#ËÍ•ïÈÿ½©NEZö.Tùj–Ô:éªKÇ~ž;ù:ÓùËëëÃ:–‡mŸ»~þËdõÞ— d¢£sÿtî]#ìþAúòÛ÷^½yÚ¶GÄ1”˜œå•™‹XÆF_+ÊÝó1}¢‘eO9!º‡ OPjŒ—Ÿ‰N»uCØ ¯xü¨¾äŠ«…Ž¥–Ôg|©[³:—»»HÕ;;( ÍýjÉØvµ"^Ëoç¾c·ŽáXB9u®Nè%zYsF‘Ùž!H¨ûZ>-Cóãr‹D‰ Ñ8£nünZud²©µª‡I’ZKÁGtñ"§èém„»„„Ûê¢}ÃIuÿ(|ô!p.OÆ÷Õ`‰jÌ$Yí è¤âbƒÛ¾Ä‘¾ŠõŠò’w•Ci³HÞ^“×Ã4Å~EjÖ0;ÌIkH¬‡ÇOûžÜûQ"&¢%ܪ÷jÍ0¸ôzKRwÕíØºôŽöfÆ9ýû>Ûåï‘Ì” F‘_ãù.c£Û{ËvÛÙî$mžb+ßé(âRÓ&èÒ„FïÝgí—_†½ßµ;mÕÈhìÕ{Ö¶Þ×ÛÆÿýÝyå{w#»yæÅx¯ôÙd¾WcÙœõ•M78Â\û—ÛIíƒaø+Ò‚.k×çþPMß~ÖÿùF_Œ^6•r`×¹Ù»l÷9®ó²{à½~ñ¼»>[òéä{4àíq ôZ¦˱AQ†a‡qÇ ‚ ‚ ‚ ’I$’I$’Š(’J(¢Š(¢Š(¢Ê(²Ë,²Ë,²Ë,²Ë,ÂÍ0ÂË,à 0ÂÌ0ÃK4Ã0ÃŒ0ÓÍ0ÃM4ÓN8ÓO<ÃÍ4ÓN4ÓO4ã8ã<ó{4óM<ÏÓÀ<ãÏðà Ó{8<ð óŽìóÍ<»?³ÏþÏóÀ<óÏãÎüóû;³ü4ÓÏðÿðþÏ?ÃÏ8óÏóÀ?ÃÏôÿÀO<óû<À<À<À?ãÏìÿìÿüðôÿNð<ãÏ;Ãû<þÏïN?³ý?ÃÏ?³ÍüóÏ8ßÀóÀ?Ó€<óû<€<ó€<óþ?ðÀ<þÏüþÏôÿüóÿ ?ðþ?ðSý<¿?ñ³ÿ?ñ³Ï<ÿ<ÿü ÿðïìÿÁìþÏðÿðóÿ?ð3þ?Óü4{?ð#ÿ<ðüóü?Ãÿ?ðcÀ?ð#À<ðìþÏ<@4ÿÀðÿÀüóÿ 4ðÿìÿ8ÞÎ4ÿÿÚÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv?ðÿG?ðCÿ ?ð³À<óþ?³ü?ãÿ?ãü?ðCü<ðüþÏìóÿ ?ðÿ<ÿOüÿÀüTÿÃÿüïÃðÿÁÏü`ÿÅôÿÁOüÿðüð?ãÀ<ìóû?³û?ÃÏ8þÎ8€<À?ðÀ<Íìï?Ãü?Ãû?³þ<ÿîÏ;ðsÿ<ý?ÓÏôþÏüóý<ð?Óû;ðý<Ï8ãÀ?³¼?³€?³À<@8Î8ß;³»<À<Ž8À?³Ž?³<ó€<8ïO4óà 4ó€;ÃÍ8ð8ÓÎ4À8ð<à <ó4ãO4Ó€8ÓÌ8ãÍ4ÃN<ó 4Ó 0ÓM4ÓM4ÓL0à 4à 4à ,ÃL4à ,ÂË0²Ì,³ 0²Ë,²‹,¢Ê,¢Ê(¢Š(¢Š(¢‰(¢I$’I$’ ‚ ‚ qÇqÆa†QðarkáœÛžžöÁGÎSîv«ë@ÇgK÷õð}EpQ:ßUÔàýõéH„ÅÍ­û½UÚÝ‹#Yõý_àalÿŸ¿Xì_– &]ƒ²”'–"y î£×jk§œ”ò€¤T ,%•Ô-^¨llüC´Í uÞüëoßE×]ÓîÿWÞÎmâê€ íuÖqH–[íý´ÿ·7}=Uÿ‡U__]]ûÛà`¬½nõä+±Jt}cá.5[óÀ½}wWW~è ݇mB¿ä»Yßuï¾·?ó*êooöwOÿ¯çö|áßo¾¿|ýŠýŸåÿÃ=õÝÿWY×/ƒ¸§]|?ò‚µ×ÊÒHRd¾ÈOëµÖï+UÎhä©×dùßu_ýJgI âdw—¦9Ñê^ÏQí;p}Á×ÎPÕŸ(8ì«gY;Ÿÿ]¿îŸwUWyÕu_wÙ÷WŸ÷þöí5§“<– jjMim$QI×wåß¹ñ×ëýðÊêçÿc^Ì>L[kÅ™A¹ªõz¤½Ê¶ þñÉ»ûP»¾ïZþ¥ôÒ¯ìõ®QßÉ»ÿ©¿ç{¬ýºÊÏï¿}îívJŽÒGô=ϵ9WU×b.Ŧ×J…P tZÀ®À¶Ûð Ӏʰä¢0¢$'jDÖ)^Ы]CŸvUMƽfܵq=‘=¿Šcºâ ä¿ú¤:uÿW÷U;ú»þ¯«¯¬«ëúúïôðSÑ~ٽסêª3Îz8·’¾~×wuu]Wø(e×ùSÍÆz_-bq’Š~wÿ^_d&ûë¸UgýÃꟴ¤ÿòQûc«e¹µrÊ»§ÕUfW^eÕ]{òu®­·-˜Nuê"¤óR‰.lõ3o“½–ØÝRL°^‚I €_Rá< ¨Xn¬5P-„’R5[>Ž’ÚEé|ÍqÑð墇Šx'àšñE² o2–Énu÷Ï{ªF²«+³êªêêª®êþê®òêþþŸû¹¹+vÇ~~î7MRlNÔþxæJ÷z®³*ðÎKPɶÎtÙ[ö¾÷3v¡Ê®Ùk}?§Ñ¨GéÍÜ«õ‰‚2™¼˜—|_9»°Ì½þû®û¬¨Óë'Ø×ÿ¯ì¨E—§L™¬! *[Ú{âèxSHQÈ—@pA·“̈PåÀ¯ÈLMÚàà0+! >cEß´¥Uê«~¨¾ª»î' N›éõÑ©ZÓ맨þï¯î«š~ëýú»úºÿúõoÿËá¸ï¤ª§Õz¯^ªˆ9qEÞŠªÝ̹^~í`(W…çÞ|ßÚ§ÔÊù» ¼ªêÛ뿾¿ûÛÏïªþÉU{ÿëëß|¬§]uVþWŸwPØGòº¯?>õõyww_ïíºÍ²Ë Ô"žª×ÿÐÐ>Ç©Ôlç Îñ”9ÂòfIEC°”èPEÀ3 À.À9ÆÓWåOÚúúëêïú¾BÛ@%á¤2„á4d"'v·a ¿¾ßϺú¯þª¿Ï®¾¿ºÿª¬«««ç®ÿï³ÿ꿽ÌjÚ§g?•ʾ«ÿç]\««Ë³¥Ý'Õ¾›½«ùÓêêUßfŸ•q§ëßoý¾¸¿¿­ñUµ_$ ÷9tøV^ÿýäa®þíö]Õ¿r®¿òëºó>MÔ×½mÒ"Ù8Ó×lÜh‘3ˆdƒ€—ŸKAµhPòFª8ã€AžÅÀ…H<)àˆ@€L@w½¥*ªª¾«ê«ê«éö,ùU¶º¿6¶«nï:ûjê³²ª®®¡U]N(óy«ê•( J ª‰SލÝé¡äh—Tü”"júÙ{p7‰w´b£h‡/DÀ -€8€–@M>ÏûÿûªªªÊ¼üŸÅß>m0,P[›ŸÞÖ÷ÕUÖ}]Óê꾾ꮪ«ëÿ*íý_UUuŸU_u÷ÿVí¹mÛ~×µiñ>79c›½IŸ¾¥ŠBu»’ìT=×ÿwyp©vÂçÜø=õðïÏ{ß9NUÿsºª¯ÿþ§ãþ³]Ì…}]>¿£[ÿwѬ¹Ëë'Ê#ºeÒed¿Ä¬Á3y;a8A‡ÉLÝ®yDåß±+oúïG÷äB ˆB$Õ/š4¶ëê«êUTMUR»õèð¸ó¼O{X?ï2©™·¯þª¿ëªªú­úªÿ¦:àw?ûû»÷ïëûúˆ«þUTaUSª¨Ue>f¯Z½Õõu)C¾{87±øMLW–…þ_¾{õï×õGßWYßbŽ)™÷ßÝÿõÿuWþuïäºë­õ÷÷Ù•U_ùP‚°ž°‹]´ % —93KÄWNÁ ôø–± ˜Ï›]_+ù*ÊÇ>,Á,Ü€d  *ün6µjy_•W÷UU_WÕ›5(9 )õq•N«ëóköªë.ªª¾ÿëóò«?.¯ïýú¾/‹Zµ}çåßßååýÿímïÊܧ)¼váÎëußÝ]ÐQôþ݃ùX½ôîÁÕ–ÿîÞ–?ï?çW[äžµ7i1üúúúýeç[ó§·ïƒúTü·ï_\þªÕƒÝS¦ó¹i25FÎ >Ý.‚lë.ü ’Óüìç#•LΡ‰1½j±îÝðÿÆT©:É<0ƒç3«3¯ï꾫ꮓQEP˜P|U*ýÿÕuíNºî¿îªª¾êþ­õ}P]yñÚß9Ù竽yÃÔ¿ììÿ«­û©Uòj~Žûk»®¾ß]û R¢£íØ;Sýw©Uw__Wþÿ×ïoÎûçÛ]W(f>¯ÿ»ªêë+>qï…ÕîJ¿n¾ÿþëã÷ ŠíÁb¹=ÂædŸÐ¨jœÁWNMÛ“9Êd%Óu´–)[r,íÊýÃÉÛJF ÂÀ<p’NE×SŽFï>ú»ê¾³÷ž¨¨€G žšŸwYUWUWWUUww]_—Ÿ¨s°œs:<¯«jZ”¿/p…¾³î﮾ÿ±Ûsí¹3R×Ëî²vöF£'M¥˜û¸bŸSS2«œøý_UÔ>ªU\þï†-¢Ì»ë¶ý÷ÿšýÛèÂ}ý>êÌÊîÚß«Œ)ƽuÈâ©ÂSÔ‹Ü‘õ‰¢5f|ß._I*ý6]Ë_i««ê´ÓúÏ×àA}¼G奈™D¼Ç‚Yªé´É«}Šªj™ôœ€½\‚ \¡{OÖ¥÷]W_W÷}ßW ‡.¥ÿÓþåÕUt¿(¯?ã9ñÿïce_S¥«¼—Â|§©Q}{êó¿`5“’Gòç›ÏÕs=õ Ç×W}Õ^WÕ_çÔ+³Øo/.îò¿ëúóò¶3ûÿʺ÷ïwWü&ý쬥©BRÔ–º¢éMŠáö×#ŠÕ­(Q.fÒ%SüÛ¨/ùêSï”OžìÛHÄ\0® DTìŽÓ½?þÜýÿ«Ö@$Í$©Oªû««ªú¯ºªªª¯ê»Îûÿ¼ØG”ùßÝfåýÇ–ãž~˜‚ÞsZÖü¼ªºÎíÙÞvl5»ÎjúåXH‘•>*ʬfß¹¨»uù÷öú¯ú¿…n¨ÿ» ëãqíï‡T¼üßúÿ÷¿¥Ó½«Ç+}÷K/9|îRè®Õ›6£}ôm}¦öúIvÓ·ÕÜþíÛn•¤W–;‰_šÑ”B©ê‚ÙpºB =0½Þ‹ÄœLMÔl ²ãE`žz²·2YUwõUÿu÷WÿU]™ÚÇoÝWäk¾7´w6Ö¸yýê%»Ò¿Îl6?^ǾYµßÏVãjÈÔ±;3|®}ù'Êwyõ]uÙ•ŸWﯺºçÊog›¹¯«Wº¿òwuð©ýçåûç]{{Ó¾ëúÌëZUKú{‡ÜbJ†\Û }5%Ã}4Ã}EÉ\†Cíóî·=¼nÞÚ™XëÑA<«Ñ Ã@ƒN9ó0ëC؇D\Cö¡òD`=:ë7ªU¿³¾¯ï9õw—u÷ÿwUPéC>£(+rSÕå©E'•ª\.‚ZR¥øøq¨)B±Ðo:a÷F` ÍË™7ï$ƒ  ²ÐÜ,xÀâyoãy´ˆÌpQÊ005ž'!3. #l-×âP2Yxü#$n3ü¯y¦¦>‰TÉ6#Uð9‡I‹8*WõÖ >P¹x£"ì»§ç©¿ûô UV€ #@‹Qƒ|fn™ÐÊí|þ³ªºŸ@(åYŸžÿúܾUÃç.á-Å“C˜vȉ™ÂY¤løQ² Ñét“W}B 9‰¬ì†8uÂ'*Ïd ÙçÂ!áÃ/úà2@Zˆñ­Ù¿ig=<”’‡éïÇhI”P) C¦^R €-«at&Svž¯Ô9ɶ£t(‹Î¢ L] ·IƒÎ!5B˜z,qÒñ¨&@x àQƒØV»Á`A æ xÃAàƒÀ`„+Áÿƒqˆô^ˆjE޹ê›&IîŠ΂ð¸Z—˜µA|ΫËQ÷z÷Ô¯¢ëùëѹ2ÉV2$Ô!¦ uGäbÛ¿7½›|^öÕ¨©mßÜ/»®”§NÅ|D¤QÿŒ Ï“;ÊæìÜÉî. `8Á8ap †Ýƒ? Ù;Œâàá# Zg•0ÒµÐÀ)Šçä`EÀ€^>Aª² ÿz”Eà8€­XZ=‘|4ßj˱Û?€Oðã@;)¾næ`r-ìB’ƒÐDjä±>êèä…B$pHðL("ÖHp2ºuŠD;DP>jÑŸ Ü|Pð(=Og±H7lím‚R&ç@à¸7МˆÅu"¿Fo?::-°±’× þ*L©ªíÞÝ?ûùUÏçÚwÂóbH-ägGmx¯&éòvPïuõ—¹ÙwµŠ\êö÷lû}-÷s®FÄeãñ>Û©mĽ Sð<`MyMMÚçÛ}Γ%̾Ð,ÀÄ)0 D#AhLN¨Dœ,pH6b¢X ¡Ð2Ú|^.X¥ÅºvçRr}ýª¦g `7€H Á¾I@’rJ©°øqirÑ›ˆËRHc1KÂb¬!N†vDá4| „\ A ì‚¶ãõ@ŸU[—l;’x(«‡TôíªO&ª{ø @O 뉖Ť²ÐƒpšjÌB 5HM @0G 2ÁN/€Ô!Àu€¹u¦ÏjÌ•ÀBì(P¥¡äïv8ýëÇkº¯_•7 ªR„Ã4€mÌz\Q7D,¿/ Ê“¨’)Ž»èÛ“®«¯ÙK[Šg[Ä=hogÎj›ß{{û[[[[[ù°÷¨bPDð`_fgE#¡ß¹'ºíuo?¢ê·Oü¸+ó­ûÉÖ¾¿%u·ÉΑüu5ëG?ºTuêolå¯våó¼ß­ÈoÍ5³ïuMèvZ…®v!ZG-¢ ”Î4¡ß2æ ¢ÒØ@&Þð €"ãiä—°$dàŒ´mèʇÀHA4X°-šZIÜœUO;ÀÛR¦‚Ãõ1oY¾§Õú•íä•&rÂ$À²p‚ æ¢H”ôì®Na¥ž•FÛqy!yÚ6¿¦ù»ŸC[ƒ¸“£Ç°uŒŽ›Æoªüúÿ¯ª¯¯ú« Ë@Šó– Aà5)@ýkNÝÛïn > š^¾ë:5ÕY{/}æå:žŠF¤!¸aǾ«òýõyRª¨/?zù/8¯(®œ§t ߪ‡[ÔMí´B“¦nÂChAŠUHL> ä‚j9¦ À ³ 6Ä‹)'Œæ¢BÁàl²g9¦(ЊLï¹Ü÷y˜'¾P`¤ `Ô H‹Öj/ûü§Ú¼ï5}õñ¨úòÐ5€<€ƒi)ˆQ•Æó²%ΤÑ÷§É¾Øs#È»·ÞýùÂ^÷/f€rª¢ Ü™sŸùýÿ•UUU÷W]U7àð=€oRÌf 3Qš¨Õ{¿^w¨ý[òêyoúÚú•ÖîC-Ø’Ö=êIò†ýsÞkRõN9Xö8²†gU!eWåÉIËúÝ›ýR&å8¶×GbuǼÖšÝgBZ z|`èÀF`e ˜ü©Ò÷¬u€Irií¨p`ÉÀcâfaàjǯÆÁâm¨8#ÂÀg*q¦ý×9SîRà¼ÿ°»ëR&!CD o´ÈÄ3 Æ‚ÀoHÑðJš¢ô[l‡få_môçÙt×Uu%WZö €ù¹'7_­æõx“___FUUUT ÿLGawÍp2}|ï%)¡\þû§ßõe÷íÒ›ZˆIC°+ø€ûV«7ÿ2ú›s³±õ³·snܼ}2÷T¯Úv:xôç“=nT«#°³RÁÌÝHî&<Ø`4ŒæäúÒ‰ð‚¶éãsæç€v€¸,{.1íATæ#gÅQ  ‰Ÿ~´3Ýî÷ßV?¯^}3*ª”| pôˆ”I+ ˆAt°<‰¹9 â»·bÉŠ…ëBŽÃ¯º«ÕÈõk÷äºrãPé²%ñðØÖ>¾ªªª«êºë©úb4€Ä†ê’½lŽ[öž©¬2 —Õçwsý|Úîªj§ë¸GŽ9NA×eÕ½{%R˜Og”8ë)TjÛLÒ$Ê(ë£ööæÛ#ÉvT.] rŒCíFQ–vž’FÅ|Ú<¸‘Ý/º™–ôÎÈT7óv‘j«ó%¬ .J9ÞqF yÒÚ  ²±s‰ã)òP…õoVsÕOïZD À&€~ùÛô^FÄÁ [)m§›’¾æ­Ê«SÜŸóu•.žÞ×»ñ£zI¨7GSžèí[úþêꪪª¾t½~ P¾P 0ýïçõdºÆ šÞ¿ýªê«ïªÊ~]ÛÔÓí{oç³÷Mtêyï¸KmZÍaúã­*ì3PLÞÀQ~Uo[¾£¤n¡Ê•ÏýG;Õî‹÷¡Ô£·[Mss^Q¨Û.f3ºìÌŠÀw·`ú¯Œ—¥•Vhßû|“§6&NLGóu]õ ¾[ÑeTÐM€—D5D°JÜd ÎÐÄP…’у$¦Ï5dÕ‡\tåWêýwðê–JNF[Ùûžÿèï»sÇH"öR¾ýL…UU}}WÕ×~?Ax pwiþúªÊå©õYpßÿœwoƒ¿•÷3ÞŽÝÔ•v·æ÷^×´yÏk¾›Ÿ „úr÷µf·g%è§i•V\³hiŽœÄ…,ÅLò·³–zŠ +ƒ|=ry²[gMUâO[J@Œ@Ç àd äJvtN0)HOßlë ½ÝEsûŸÔÁ®GÉ@—.d P`?AÈ`™ @˜JN@‘+ÀçÂÊ!À7YhÛ}¹Å?U'ª®º®úý¯¯úùÝVWÓ•T—3ÉñH7\Ù6Ö×ËOTþ¸ç”Q•)Ú AX¼ #N{9 óÆX9½ÿ|ëïú¡•JóvC¦T¬Ð†Ž\¶²ª½Ú«¿}6­ÛßžÕª¤óýÜ—G€OúŽz®«ë¶½¿^ž²Òñp…­ûÿîá%T}«8¸TмãñX®Ú‹ÃõÉ[ùU. @J…ˆ•o÷‹ë:ê ET§ }>RÚŸ’Nx@  À1}€‰/6ˆq,ÿe„ƒÁÐFæÌIV ®T¢Í2ôþÞoW^?ò²®úç›ß½8éÓ4è †KÅx©Ÿÿ÷Ù} Úª©LÈ>`ëPKw>hýUÌÞλ[{›ëÚðmSqµQ$”ês{´¬r·û¥‹Î} Î?ûö׸ûÉs•égWî<§’òÖíšü¨Þ#°ª`«9d¥H…G½Í8ÌŽñy>›Éžj8®ã¾û³ø` ¤m8½TK©þ"ó|5óOi£ü©çUS”G‰F‚óLà@-€‘Òù,í•— ¸\™À ·# ›mÅóú÷>ý˺u_ÕýWÕ_ß÷ÝN²Ý‚õ´å¨Þ ¦¶‘j“(òáÁHhæ¤:*ªFœüüë£~Z„Z¹Â}™ÿß]•Þ¼å N!T fõ5ïÜ_u· µ2þ½M–Æ«zn„Œöw'€¡ß¾v ܟꓚ‡ŸJ%F"påƒøï8/)qg\Œ—q3Ù)¢ƒeºiþʃkøÁOP  E™$dâÏYò#N–ÝÈôet½ÝèSþWäåBP|(`$ÀcƒØ@3ÒÛoN± §Aä…jrAˆÖ—¯—mNœç._*í»Ï¼®»ÜÚëÍ~Wõ:úujÕ0štʲ‚ qßÃ`\~Þ à±Q7ÿ3ãù>| ²¶·¾óê6þ—Ï£³®HV)€¸8c7µ•y Œß‘7÷O¦9KêUÙ§é£Â¾æÀ;çº>tÍ(ý9¡Šm">um4„8¦R> ¼TÑ"d®• Baññ“‡’QZCB€¶¢Ñ©Ò“tˆ( €0@ìׇ£ÀYÀZ‰`½B‰VmvŸA¸œ+ Fƒe‰ Œ‡¦Ä$^ð?§LÐ;•ƒHtÉGƒÄ\)í°6(±€S,nP* bqº<ž|áxøT1626kæ‘1¹Ò’0À €8 ý¨Rm4 N¹(vø_Ž;P\$¼ë¢ø¬¸ˆÇfI™›s1iÀà€ ¥±x9ƒ0%¼SJn’a`øÐ 1ƒ,ÍV@E†à4€–§áØœf e†w°ed2VQp¶ŒÀDtɳä(…Ì ¦6içÁn”¦8ôt„6¼µAÀÔ„ÀpŠ‚ós$tý8²h!Ð5:264&œÊ¥œ7àPiƒ€¶%ŠÐ¤@ˆBã…"¦=Xþuõ`õVZò8ø)Îk¾~¶Þö ¬O¨qç ª¤Œ°D¨Åsê‹Ô@ ÝF<­)«…R’Äzüí rfA‘‚©ÃЇˆ•THž(£Y R*`¯­Œ ülx)ŽÒ0°v“."ª¶ú[ÏYà[ÁJbgò5•Ý:~Eë.“ÜtÓM‡€œNc9 F}É&§àÍqË¥«n30 ÿU÷ò¾éu[>ÚªMîþøÛ~^U'îþÿ¤ý¿½½žú»éõqG½Gʾd>õIgêòÒC"Ñ\».(fóyôL =£O ,\[ÙWÕòºåkœ9G¾jÞ¦:ó³9‹òÌAÙ4s¤rEót £¸¿íòYÒUéªÎ*ƒ¸zÐXoåJ#@¹žBiIÝuw|~ŽzÛw*Nïa;ߗݾq·þ=ÿÝ9{úå“~Öÿ6q1*ÒZ1£¸s GÀÎ|=`¦ À½D¦¯ŽÜ”jåN¨ã­SVÔ·eîÅ­ùö^ß ¼·õ]Ö\:7»¾}f翟ËÝuVÁ¹½‰åŠAÚ‡vÖ½¶ß Íÿê¿åóÿ!?äòêuw(?«s¶_+uîcžç9[ò‹u)ýgV¾ßð}Òê2Þ6¹§:^˜òeŽ(r|6œYNH+ XEë›q ¢)%HA‘´ˆ‘®¸ôd¹htzG ÆÌn¹n “OCpk ñ=*35Cø§6¬˜PBÄÑöM›†åbÓ)LO…ø7á`…ADAÈ‘¨Ðx ЇsL¨°ê%bö3±%´‰ÂK?ã/ð” ‚øÍÝ€_ˆA B5’\rûŒx±Ñ5D+O"U¤¹'H”qEÈD¦¬²NtOŒÃà: @Ç™™ ãæaA€¯0š7 €h‚\ˆh€è“R&›Á TíÀ>_‰œŒ3WõìT´éذ•²±ºañ*© J|3x”SJMY“Á}å ä,ƒJ`7…£¹ï^ÞhN ¶,¤ “ˆÂ@èD„AGœG4¹Qjýúô±8è·MªcMDÎQ˜åÕhw$W˜µÝ‚«òÿqQÅ"§¨ÛÅ÷ˆO¶û(8ä{ÅàiãÈŽƒöÅ\ê¾ëçzãëÒÿÒo»j¯Ûêéöõåcïò¹†¢å¥Õ=%-J_›a;—ËâjžœdcEE)q¨¶E(ã¯YµMRmkÿaì'>Å8”h_4)Ü}¸u vàÔáõ£4Á2dÐd‡DÑÁ{ty(ÍL°üàŠTqfD–Ž«äHÓÍ>Zؼ”¥Ì‹Æ£¡²Âï@áÐøNJ–#H€UŠAÆ Õ}}ÉDZž“ò\M©ri}DÂôaÚãñ)ÆŽ¼R8p}3 †CÆÓɵÜu§pT $@GHÍE‘HôÂÂÐ BDSÁÖ˜á_Ñßf"ô/!oT’Ó!§R8Ž¡îKN8TŒz dH®‚Lž5JÊbf 3rµ_·_…„ÆæÉžxV, @Fà ¦t>>V©Þs]QƧÇã–JÂ5Óbza͉g‚,„ËëAøÐ#ÚÓ ¤Œ²Ç‘ÆñÈKöúsŸiÊ1ëj鉸¯Î¬45øÌö¬šX5.ü•7‰­žo›—½W¯vÚœêþ¹õ}O½üêë•W×ûïûóòp}~)'ÊSÚÿ‘åê¤Æ™Åñ¨×õÜ#³¹)U ¿÷ò“†e¾ßÔ§JæûǾ³®³íýS÷}ÎsäýŸOoòwÿ_uww·¶j„¤Bß@ ²•ñ ©Eæü»D$Nˆd¡èÀ9Ì,pâ^ ]Iƒ-$BN¡)0M#'%1@Tpܰ+‡aœ@žX´á¬6‰ÁŒv£ƒc„zbšm ‹A¬$…Â03<ûÈ#q<9v„¡ˆàärA*L¼V" ÄBTP‹F‚\ªD§ŽQÿ ¤\Ÿ1«èèÚX A†@”°*ÉÂPK1*i ¦lWmÚ‚„*—!Zp>¨}ª(§×p.ƒ‘xPŽä “…U ‚HÀ„â1(f) CÄ("TFL'——Pà V"AŠ “)(^ód® †Aá²çOjOŸC2¶HP6 AD€oì\äÂÝ&N‡]˜PÓ³ÃÔÓÆ–„Ù‡€ê°y BŒúq²÷…”¢¹¹z… OТ’1d.:Þ’õpS÷Ó±®ï"BãHÈm &2ü’§;xu>ÎZð‚¯T¡ƒå ¼+8[§ˆâiÂ.%N*6 ›A1ÍP´ðÞ,6@ bÓÇÁ¸x´É×hø¹´½>öÙì~âÊ›Z4`F ÈÆ9Î>r«Ùêµ ¸œSrê/S'õjfYßìvs’Y&uC!M ò%ƒAœœ•ÎVRüÇ:tCÈtæIqz—ö·ï·cSüˬíçÎSnþÔ­Ôß_—ÞÞ×·÷NåVUøtõÙe×ÞÞ.Ù )çÜøí¹b¹˜v/"V#@‹pܪEtVòE•°– œÞ~®ëap1š‹i’²ŸbãÍå>aÂvŠ)=Ý‹¸5™±3¥*Z\²1XC!ô;ÂÓªQ/£6;ÇârgUâƒDl0B„:pET; õ°ò ÌZ0$õѦB)^ÑäÌ·ÎÓ¹>w™·vgŽ‘™SªY„+Hˆ‚ñT˜7àEDK5tÈÍ׸Pž+@f")ž$ÓESŒ…Œ`êΚ“°D¹òóŽò‡¿c„±&‚ÈR‚LU@ÂðoÁ ÐK*æBÜÄ4£4!tX@ðÒƒŠÁè;7€.AUÄöKC)Œ3 ô†FÄÉã” ošM÷>oõ­ŠºrwuŸLHË …ÁÐ^t¾ Öí…þ(郌Bâ¡™Y<À~™€UB,8(d/}‘'‹NÍÒ=†0óÚGKF6ǫĕ2Þæ.Úô¤jçI¬Ü§/r Þϲû)÷sË…å}UUVfwÔߨ¤z/çÍmvaÃ5Uºï!Â+%uNsAÄo9=‰/G1|ƒájRµ¾èþ_ÞÞ~VUV]_Ô²ݵûŸõ(Kûåh›¹Ó†(W¯:.nzþ$Ml´³É¬ê¢)˜/80ÖàrÈŠ¡ØˆÂt¢Fj‹¬Wcˆ…bÃpÖ#„áPˆm/BÙÀºKX¶zq^ÆPáA æ#„n=1Á®\$•`êA Ò l98S‹ªÏ–ž7.6Áš†ÍÄb;A9žd”‚1z ÉT˜!Ð=„x £ñâƒAˆèB?Ò:¶¦ïú®n—dì ~)•Tÿh&EQ™ i Άáé. †Meb©Z>‘9†!€¶•ÐjP kœ4–ƒ870ƒíºD@ñ$HQÃÃì,y;¡<; ˜ˆ!dØ•1?ÚbEBñŠ‚Èwšp-(‘p<¿¸ë ìÙA¶ÁÓˆ1BÒIŒ ˆÎˆÆ­?‘nϦÝcùð¦ºv›®ß¦Ïhú‚OîÔþ}—„׳An¯ÂŸ’Ò& T€ÊÐeðãÐ-ËI¯:ÂBŠg®˜&øü æ›Ey¾yÐí¥-ªµ¦Š 1ù²žÎƒ³çs¯>{Øÿ†Â³î¯”‡þ)ïúå9Q—6GIÅfìá9:³áv÷ü(ªÝã÷ !éÑM¾‰>:s«NWrÞýŸgÔ:qÞì÷÷ïþïS½{ÙUW^ïÂÛÿÆèÛSnµ« ⎜NË'QÙä?iIEX‰dµ1y‡§#òfFnŒ×:«Ôrªaâ‘8GŒ~n‚¸æÈ ¤’uˆ :•¼š£WÌ™m¿qaí4‘zŒ†䈑™D×V1@uL@šdzl³„©K½fÍÕjrsà4‚„œCòA­0˜"XÜ\xð‹Zi‡ŸÓêkÿBpô·‡]Xí¦Y-¦9j©‘Ö N oÔÝØ¦-´eQùw à‰a¼ †Ò!BB!ZôáSÆDð#QRn=WóçCäÁ‡‡æÉ¦cDO€ž^(¦·ÊL8“ü8Ñi€ŽÀàèÃôTé4EíŒÜ †!Ø€Úa(@r ¯÷¢tÚ&3LÛ8ËÙ“™)ÞÿcqÞí¿æÞ5ëµ¼÷¾Öt¡8 d3óåa( `€ÍÐW‚ä˜Z$'³O¯ZéN¿‘Ï<ó›—\ü¨Jç]tþ­Ö”ýç·A×]œëûŸ,Ùmʶúê«kî«)÷•>ý©ÞJúÏü8qÞFz˜ÓÔEǠůÇ)nZ zô£ãqšþ¿«êZº¦>áþ£½[‡åÕÕßSþ~¯÷åýÖÃokr}?“K*3†¥ ¶óëœQ“Qñºkb†DBôâ°®Ê2Q:@Ô-€ ‰To[M àœvèÚø.F0)•¶Ö¦ ™ªQsY`ÐdŤB¼-„°ªÀ/ƒ@fL$,çVu@þ$–%Ò­É» Â£ç.Ç*p|Òälò4AI¢bi{0ƒé@Š5@ðÀͨÉk€’Ę.Q¢'HzJJYOÄ\¬+N¡*£‚Beš—N¾𠛉FB©°l¥ó¬À I€!†‚ WhÝ7š³à<ž Ah €3P‰Åc Stˆ>pBJDE É“¬jœT*‹‰H” Á Ô$MÙ¡ËSq;{ÀÌJʼ¶Ö}Üâ¨Sz‘^׈0Å:ÜÆ+íNõ ¡ÉAEÈÇÅ„¥>[3_^Ð_Ñ6]«y·¿³¾Éþ¯ös)®ÙeXsÊçÝàK»·ç̡ѻH‹B¸ž"žx öA)±àm ÉÌÌüU.…’ÒY»¤ÎÏgӡᄅEsRÕF£@w-'|ÔWuÄúíÜïßTä«ú„^¯ägY_³¥6~ŸYl•³!èh¥Ï†¡$IpoÓð«½õ÷g7~uö"týÞÛR»§=Ñ„›qší"­¶»;u»Ý!©ó}òß]Ôå[ð·àk2ô²éÕ_ÍòåQM·Y~¥½VÙhñ™`®–fböÐXÀ๡¡r³ª)ª§yà¯aÏú§º’sëä ‰”^H‡$ CœÉâHÞH¬Yœ¯ÞëÌ×4m¹°s‰ ±+,K‰Ò&ÕSŸ0NÛÒÔ™56S%§O§mJ$ãÏ=Ó饻{8ƒ½_j2ÄׂÛ5†Ùú•Fv55dÒE‘y‰òäFH ´yÔ*˜b¸#Á# cš’àA¬ ›$ Öy˜$pÄé«FŒ4õKŽÃgFÍ­?ˆ]'‰a)ÎÈüTuŽ<¬bªbé"˜éò7Ö|&Où<#bìâ=šŠÄ’>ôü˨O³qùÐõm_S­ðã—„1îTñÚmTªþ¿ œ- î!¸Àp&ƒDˆdŸš­©|žö‰ŠŠEieÇ—õñGÇó3ë_‡kprSéþý×^çíveå÷eî^çÊ·óóþú§ù½|Jê¬òd¤ê³ÜuëÛ{X£žr˜¥m{Váoõ¨ç®ø\ujWÖª‡½÷•…©j|[WÝÿY•XûÌÎi‘–“8Ÿ3móG¦ð†<ÞL™êŠý1‡‡âqÂÐüB<‡’vÐÔ¼bhëgè˜CxW "xd œL¤‰•j£Qz Ï“¾£Þšã²óTÚdq˜8›EľP>Å–È‘&…°ž À!±¢‰DÀr! áØšŽ&ãÅFEtÐúds{Ü<@î!œÕ„7ågMM æßÈ”~˜·#üšÓ1j(³È ã( h1,*COI1{£.T ÑàÄ*‹&}ý7µSÓ•ùvíÝö)Óøkþ·3¾ë¯*y×¾°$^ü„R”Œ A¬`ÊÑ©Áa8÷ÌQqz…éuq±N¹¸·7Ìlg„1$LÙŠ£&†ÍÛqûù>sÿʪ‡Æ1ûª×Ç'W“Ïÿ©÷Ï;÷ÝäÞɹ{ZDÆŠ\ª)­òÏÍ)Ú¢Š Ñξ[ïÏÛ¼OôéóÏlg ïSs¯¡7~<íN²ùêÕrÝ{ýÆÑk›)Þ¾áê]ž©©ÂGK´Ý>¨Rf|•:ÍÚt§“¯äzQEž[ BíGpÔàúHušNíêÊÚð„`¸%’‡°y §Õ'©N$Nú]ð°±ñé£VR•'8ÓŽã?-Kã}fÓPþ©%µ=‰vxéqÌÅhL„¦‚ºãHŒ˜†œõ¬ójœ_0áÏ@óVûÔšŠI~ZgÕbg#jt“¨–NÜ”ž%§›ŸxÅ(U5 ˆÀ¸,ÉFBSƒ# è8 g„B4hNLâão a„ä~ĉN…OèÁ);ƒ':5HMå6Wªz A^ìKÏ—6Hlç$?3´GŒcBáè‰ôãEc0‰ €ôb<°ë³‹+ªOòyS¾Ì…tï§ÐŸFpøòžÿØmN2ùËéµhH€¨D+€| Àå(¤FçÏg°!N@…°›©ÜKͽݗϧNÂM×î;n|”œ»îª½ÿðì»®ÿÿ©ÕUÿ÷U½øUunõl kQ(¤ã%é}8ó–´¶~ŽâºÄèÒ¿‡Æ£ÌL†ÎÙÚWµ¯þïnxÞ7îS¾äûòJ½û ÇåB¡ÆŠ‰ÌT¹°Ë±ÅÔdú#]Þs \rÇžkLf$¸Ü ÂH8rÕ”,”É‚ªADÔìlÌ3T¥a3ÐrÓòžV €è, ÁÔ{Ë•–IpE„Y¹äÇŠÂ5Z áø’LI0M%hò¶^ßLDÉb†MÍ ƒààj;å” å«¼÷äÄMAxZ CÀƒH_0 €@†Œ˜¶½N¿8ÀK! >»Þy”ÚNë:¿$(š‹F¥föC÷Qø¶À̲„0h:¥é„"D¤Ø’uë‚€PðdÉ‘˜x|O ca°È!€[Ï6T‰!Ì„É܆áˆY‹;2[Z @u„QÚîœÿ!ÖÕ!Nì’ÁôGžôYmg÷w|3è\²‘/{ÚHîІÊáø ŠIâkåx޾ÙÈV¾©½«nߊO¤¯téýtúí»ì…øÇ³Û€B]È`rŒí|`DÀUºƒ c$B£ÉÛ(q©å~¹u÷Ý”è´A5yXÂÃàö¹TeÖ¦¾)Ž}åÁHF¯ýñÍÉÓ™ÞïfNu{“H€Ï F‡øA ©Õbîªûÿ_vOèaý?í¢ÎÝÍú÷}Δ…óo˜›“"×yNsTç6=¹Ý×ÛÎSï¾°IºÍß÷þMKµeœÑÏ!ãÖªæåÑlšEª“:s Ï dySΣê_13Ñ:ë֮ˌÎ6O„1#p>B› í…c¥GfCäG£œq.ÁÖ4hg¶qEaÔ qÆ“Hê-jr•J–[&|Õƒ'S¸íÔÍÏÈÝèèÍæ<_InIŒX,tp±_BÖ„˜²Iñ-’YÆjÜ®gìκQ2u ÖWB\Ö&…"‡Ì\à|È20Âј¸àç»I|ÃSc£ñ°˜΄’—Zø yoAàËÖ!’C"Dé6 .š¦^YIß8ô+ò|y•ú{~£æÃ^‹Ñ<× <ÑTI"ÉOÑŒZÖø9£B„餰zt|Ònjé­Sî]\ÿ[ÎÁgîNR_.†ÂÜUúú›ÛûJÁ‚p)À…‚8@’’kÅžc§ÉîáKRWÖÖ)JV¡ÞÔ¢ž|þ¯ûë¸Ô=öû~]cîÿÿsù^œÿûî}Ù;ž»Ó¶âúok1˼È^Iû Qñè½]8ó–´ãëZŽ/#ص-}k^Öå±|Z”{ó2úí¼k-Õj7Ÿ ™$²rµú¡É9;Å*ZQÂòBòDh„˜›@”b6, È޽ ŽL,¦ Ϻp/yJéÉD5- é Aœ`l ¢ÑJm H´ƒ‰³D/Ãáùñ‰Ñ"¹Bk’Cß„z “&çRŽE„MÎ œhŒ· k,ðñ_èW4ÛBKb|ƒòj@.4=ƪ$㋈ÇO)¢9Ìj.d—¼CÔN¡ 6>Êî5‡ RLFƒ. œ0j  Q >à€»+ˆ çd¨H Ä!€mAl Ùí1‘HsqÒW”Ü>,Jô^Î7飔‰Çî›ÍÕ!#gç)>öÎ’ÎÌ{U¸±Z¨½Ã TEq)]/‰Bœ\”%"DE„Ðâxÿ|Už]ò».|Ÿf½Û[fö=mÇлÇÕf_Ux_ÀbÐ@ Š´ŒYƒÔ*8;hãvçuíz°ßŒßvç3%ÅÉ„„W%§ŸÉ÷Ïå\31õÞûʆͿ«oúlºþgqÔ‰­`º´H\±Wý+UO•ÞfòýÏ;ðÒ×ßQß’þÑ3™2iÏÉ÷ü–y2ÔÎvlz÷©K•ʧõ_åV¨ë¶Ú±¼ƒG}h ’°<éûUÔ‰þTç¸)ŒÃÀa< ™ è…d£®Q²w¶sÐ(I3Ï'NQHZÞ’'ïaKZêç«GüîH»’QJ&öΫïZG)_^$-ž†ª–(“%TѶçõ,ä³äçÊö ¤øË“‰ô£¨¶²ÉCÖ‡ Àc»:Äyô¤aPÌ·ÈŠEM&ñbñf±#lì‹©Á¬O 2†Kf‡àÂE0]>d)‡EFHÇ!ñˆ+“…RDoGIšË“„¦g­ô…U¶yÄÅí©-ͽ:É5™·rz+–»‰é-ÄÙØ§!d©riĉ æn"¬pôÉÝ&áºq¡@h €NŠÙSzØÆŸµêØ·Oûe5wµêlvÿŽ|9Çg]Ê”r^$`#Bà*Á 4ƒãAÚcw`P]ÏMWu·§¤¶Ï7N[’¯è¹m=Ú~Ãáy'ÓßYÓïºÜû½ŸíwÍWfçËåò{³w&›í•Ìñ$ÓwæJ¦*ûèUÝóùüÿSUȽNcTŪ0?ÌcÅÖ-{V—zúµ¯‹Röü†Ú_7ÐÜ“ )õ• jÔñZÃ:°#RôH“z ¤²gIW4 FjJH4'&.œ×Ehu SÅJ Ð"&bO8à `®R£€= ÚPNh7 J£óï## ð;w­ý¯bÊ`Ä+ƒ¸øÇyx®¯"[ÄÑ`„Ï‹IÌN.1}4+$%ÔÎ[MÞó‹‡4ˆѨå(iNŒ^.qµK ˜v0,ü¥bê@‰ ™q}…DE$£€’*–äAIaUÒ!§Š"¸œ‡éÝ”ýØß|ØaaY`”Œ‡OSÏgòú?y·&ë?cX³J.£ÞÚ¯R-1‡W>ºèÈÔHnU3B½Žåg^K§¦«¨TS‰:¢wkªëÂ?«.ïãÿw}1¦Cr•„2Í¿™ ‚˜¨¨™åç˜òy¶dÊ9 Û.ûÊ6×}=P¶t ÂVPT8Hªw¡Y™ûFWQ÷ê|¦tÊ~¿éÙµ+Fżȅ“Pà˜ÝàÒ2 áØ‰ÙãìƒÖ¥q‡Â VS—•sÎÏß™VÏ?mŒþélÄ Ë›œ§})59oɧQó\åºø*×¾n¨–šë’Ý–÷Æ!˜ùHúd¤è‡ùI1ºÐ&²$´lñÊâœE s¸wÂŦ@‘›x† AÕHx‚ñÒ‚nŠÂ»NÚŠ–:¬˜„`dDc†NWÛ!2(‚Š:¢LDÙ¢¦“¤X¶é³ §»¼Ÿ³m³×Ͻ©¼îݶRŒp” š×F£,’£,t*¥ FŽŒ¦1T]Ç væÿ†>kL¦eŽ '²k8¦½Ú6vÿ<á»Æc¦1§´éƒ€ gÈ2+FÉ ™7ÂÁ°iÐý¡D±™zVÏ4²ê³]6 Ü3Jf²"‚ä)u‘²2<ó”ø6¾Ÿy×Ü*jg‘Ù¶<Í"k—=! §¯`„úk':É7Zí8Ü † 9A7Ê?nF”fÛ7/7«u.ÞuýY7çö>Ÿ,õ$øÎÇk¥˜†ð(ÂPe"/!I{é«®Sÿ¿/ª³ï.±ó©c6ý]Wf^eä²ÿ?*¿»>úº¿º«{ùòƒ¾î:ô–ÛZöé¡‚+1³(ù–¢Ô4žåÝ7Ü:5×Ö}vãßYÊr’?ˆ{ñû"Ò+$™.’<…ñ|s!Õ š5:k‘a¦<€•+(,JšV/'ó YVfu$‘b”,yÒP‡‘H&3-:;ñDÕ Ãò1`¨q9§Z#.lм± œä^&1ë4T:ÔeÃ2-Ë\SÕN£kN?Á£ë—,Aˈ‚Ò£&åã~pr‚-`¨+Œ8F>^B ˜“.•WbÝMXÒÈ1©‡é¡ UDHl5ó² –Ë 1¸V>%!À=³¬Ð_À‡ؼL-CÄb_›(XpX À©@™—ªmæà˜ ™u#ôÝë.¬¯8=â„d»Ût¬¹¶ì:Ô¤ª–r³:â›L„pc‹fOˆ·ü,¾Î4Óþ7sƒ–¤éßoûg9ÝEOÍ|£ž¤¶æõDpÔP¨Æ3\ çgB¯«¯êu×+½¼qîÿN­õg×]lw' t«ç×;ÛÕK§ü÷^ÞõÔ[§1˜$‚JGÉm5%¤œÓÚ+6ôVnóWšù»Œ»ØþSãð¿‹òéñŒó#yñÅyJZÕ卿’LŠ­lŒ ¨šœÝPfR ÄK››,3m :!§!m¤ƒø>‰epª!¾V° LÂÁ˜iÊ"¡°ŠœÖfX}BR0Ü€°ëÏ /œ4éð]“Š 8Œ 6ñøF4@_™~Ò{„g ˆAøù$™¡2 “ùõIÈCi ÔˆÄ|;2<Õù¢è*Túí,yaðÀá²Ro•–<"ÄóQ\YJAX‚Y@2æ¶Pv‚$G2ƒ)xЂ('-u$îùñ[}í îºj"˜$ Ø|;1"Ë‚”tf¡àpz:Ðæ%€Ñ !¨Ã¦É Î g„šå…áX–°ªA„sþ§YzeÕžv^Â\ù-å&‰Õˆê!Š˜–+è{q£¼ž›Â;^ú™œÑÉLU[Õ–‰žÁ»ƒ¤È™íqÁª«Dõ "<ÔJ¼R9MüãÜîã´£ý½—•Y™ywZIÛQPtžPvDóW Ï$JÒ'\“{W œéâs4Æ®°7⇬B§VõWÔ?¾Uôû}Îß ¾Öÿ.¹Ù¦’f•u¯67LO«P ¤Tõ*·ÆÔ€¦õaY~'}u\^:z¸Ÿ*Ínñ›eÜ›«òOýwve›½³Ÿ›.O=á›Ì]à.vžæ| éôƒE,ø©;·Ûþ,‡…ÁDˆáZ%“J:R„oEŠyO”q.¬_UwØå7æì%m¤0^ä,oæmÆGË‹ ›µ:Wú)âÐÄÅåö+.*DQ¡]“d­(oHlÓLU ²ÿ’¼uEý ¢' ò9ÄïŸâ´â¥d¨|¾ ³;žúÃø2“˜F6˜Šx]2Ø0ªÔ­¾{\ì6.4øp±fEEåéx‚€7¼7¬È‚^ƒÓ¢’sÀ´@”•D–Íâ¹@–œI †%Ó)XSÀ>›–ždaáìÊXÔË&iLÔQ½¡¤®÷äÐ:LØÉÐê$GFˆÃº,8IŠ®÷ÍKS:Bö ËJâ\g=‹§³±l¥Âuôª(†¡”^G©Q1‰&ËnúwÍ3ªWúŠ99_?T¨¾2{å Û»¿–´ííÉU°=„!X$ÇÁ©çþg×Vÿõ?þ¿73±ÚÍ}ì'ßÕ›Ý:ûþ»Êîüê‡æ×wU?n·ç•W,qMv¡ÏrN½;Ñê;Löi¿wÄÐK4Úž“òoKÉmPÁ¶ÖIŽŒr¡µë[ùþ«àøÒ–Ç-ëLŠgT;5Þ¯ºäxê!pÜ@1’á-"&Ó–,j¶ÀüGÀäÆÎ›Q ¸Ì^Î8> GÅR“t†dˆˆSÞ‘ÑÁù%,?#p«œM(¡@Btrëa¯Ýq3FV›Ï8]ùéÃCŠŠ°8 nã £ïljÉÏ8@ÑP”êbc…4G$"˜´j,ôÎèN‚Pܸ~j`T‰ˆ¸)žáéó3®{zëž©=ËÌ+—ÑxáSäÒaZ Ú7ÁˆHR¨9˜Ù¼¹!€¿ü”ƒc²!¹ñ\juEQ‘`q 쨶ŒdM| ‡æL DWGèŠ I| =olz«V•ÎIÇàt·’@žØ™%³Í éB4@”7Šc§|…ÖnÈ×Ý™æÄ$¡Ãc¢™Pð‘2ÏBmÔfˆåãN²Ü1òÇÚÊwSß)ÂQS½NÚ”cù2¼/¼1H!¼x0¤Pi™v» Wýu㨞`» ÜÍlS_²ŸçuvýíþnU]íã®×ã—nË\oœQÖÖ0e)¹ e?”§}þÎB)”¼4Ü£ ï4ªzt í_rÔ;¨†-ã´æ?eðßõ¿¦¿]þâ/í*Ôó(uGOO~¹wH^Îärzvt݆Ñ?O´#8ulÄem’$L ›“’«]§<øä.ß;Jtº‘²mhŽj#d~±ûšUÌbaÈdŸµÄË*fÊ\EˆtÅRñ‡Y¦¸hqÆÝ­E¦Zc#jøË†2Pª‰°‹1e;ˆÇ¶(héæéý­’ãæQO¢¢•Þ³å>«.©¨5[u«êìdî ÐO [†$X‚€~œQå<Ðw¤™),¡ç:H²*^J6†8|„ÚÍ‚Ø\cˆ’chLIX’ö9¤7¥RœBÒnF ùATè¡Â»b¢ÂÊt(Tö”,ƒ‰ø–dk±Öü÷Ùô$'5CG޲•y«ÕýG•™‡¸HJ>ÇI9’34ÄI›6ôi’¬™Wõ¤ìÜ÷æf^GkUȨÏÊžæcîV‰AHhä6b qØ»ïuu{ö¯s§S‡OsëãRªú¿¬êùÿÕË7'Ïë͇~Å>¶ãôúc¨/.—qx+jcÔÚeìúoOIÔOîT½¬IˆðßQû¶©]ScŠzÚ¦/2V+ؾdG¹Pˆ.(&B9æ§á=[NóH ôtØt`¸ 2€'@ôJ”B(èÐ7ûÅ`˜j-¦M…S! Ã}t°r¹ãäÈ!x.Åå©AµsêŠj PV5 ð„±÷žøð0Ò—¥ÕB¤Ù)Џ(¾* =0Zt&õBw£e‡“¨ðO"°J|\ô|)@×Î%¨°Ú%›Šé æÌ=m<Þ$ž Â@?•Ö F¢ 8Þ#±`Q.%r}!jxé:䇠qaa Þ<†§šG ™8| û­G@ŽŠö È“¤3Ù¹¨HSÆ~p0½u†‚b! nd¼ ò}­¨2›Ïúé`Ir¾®¦K·ï¸Ä_=÷Õªr aaܵg:b?ܩӧŸ? ¡ú·TØŒg‚÷ußQZWéHŸˆˆmuNœ@&œ…=*éyHÛ ¬óQ`ž•ã¬>"Íg×äû}›­”3È)† q!ý#¤í·MÁWµ[;ɦ$.À$ÂøÞQb8úŸmwm3YJãÞ§}^TÍåÙÝ=Œå!Y S/Ë•PB‰¥§u\ƒÍ®êwxY÷]SÑ7¿¯!WÝ3®L$k®0ZÒA|‹áƒ×ç¾âñiêú¿|5ê¥?h¿çÕ³óþŒˆ¦NìFڦN2š¬ÇÍÓ‹#+x^”bP/p~#EÁn1€ÝBÎ+Ežz¹y¸Ê†8o¨›M­êÞ{ˆœ@²¸œñ…ÚTü÷"ŸLÏ o5EJnìÙŒM¤™©ú¨Æx/]çÜŒfBh0H286Ïv5`lf–6“šÊÈè½sCG6}ÞÙòóÉ5I`Ô´Gƒ 7HOLAlÛ‘s2뜲LSQ`æéQ”æ$bZÂÅ>/"<’cØ(~ôæ¤n*QC¢¥Ö1n/œÒ#\ÞaÌ>\A3Áqi+P#ÃHÑ2`c6àÉ â[$K$"Ä+ië8ªE”lâhÉÜNÑ© ‡ôAÓIbBfI—!âO%P—É_L%T¿¤QÖv :öEåÁû F¡—tHóGMV)Æý„¬!y‘°ÿšôÆŽ³·×m¯,.›9«ð¸5²ÝUÅØ|r¯«ðÈÍX\$£nϾWuyõSÿ¿ŽÔóvO—wô©JÞÙÓ)¤ÏpúR“ÿÑ¥qMVÔª‡eveÕuê¼øí4¢[Géµ="³{IIdÞµêÚ5´»òR£UO¥>5F¢ö&{a‘8Цb‘€Ñ¦â‘ñQ§Üä.8²‘€>‰`†rtH^AàcÄFC ¸Å¡0Ýr~aÈC¤ç’0âÚoD×€td1HJ–Z„L¸xÔ†°¿›ˆ‘Ò39+ÅðFƒŸ˜ãÔó;æ&}9@U@Äúx̵þD …eáà7úë‰ ŒLÆcsA=X³7QšÅ¡Ø¢#2eî‘.6.*–›YÒP[8YªAa Hº‹G0MFÖl´ñ…é|±8€T@ÁtÄLȪ¡^.l¨¨BDά)¨qåd 7ˆŽ“lˆÝ™{ÅC²aTB LÀf¦yÒ‡Hô'U:ûCLI•J­6çPÖh¼nìhgiø·'‡vüŒ÷6äÔó -õdØi•U¸žO¥\v½ÒÙ9æO…Æ•¤pù‘8!6øk¡h•&XÇ –̉Õä³Üyé´~KÉZ“Jéð¶›Ó¢ëº† F¦ Ò&bw·ºþÛ¾vÖ˜i‚Dákúª·³1Ýÿ­…Ôº²W»»~ÝܧNÌÕipý23LÄ’,(ï»]ùϬû¼þܧü­L¿sÕ亣†[ UDÙzy®)ãê/àaâËܨEÊ9ÕÇ*¦r§DÞ£„Ž ¶™¨‘Êg?×Ò”b Wh<Àhà´.&d¡¦Æ&N @o gÜb‰&ÒÞ+Pü|2p7\¿ŒTóRl!&“¬KL-”³gR)®B=ó8f×Oká ÷¦ƒ’î&0(<€ñD‰|ñâœ^ZDEGJñn"»dÅT†­3Ø£Æþ{ó¯ãÈÇpüàsàÕbrqϸ~é–"ä¶Ôú) š‘¨cÞ\6lßæåE×¥j–•Ü:i3è×]óh¨¤‰IUH™+ÕÙš¶•sPÞ3€mÂb<¶QG8^`1tˆr±…Ôæ5îXóî±ÇU_ˆ¬9kdçI´£FÜZ¹?ž¶ƒ©X1ÓÃÉI ñ1.“L¡äªLòw:W°Œ¡Îl©Ðþcˆ‘#(ÉÐŒjH)ºA÷MÊÀ–gpŒµ‚ç¥eV›„߇4øÄZ k~Ô‹òê í»nlë§uV¹Æë¾ôýêºÏ¹þv?·«_Û'ÞûçÙYŽ.•Æ Õ{§*ÂÞ­+ï‡nR• èlª¡8|uõûýñv™ö½œvmÚx$Äx†Ò:—Ù´¯Fô4™Ù:ý‡?#'Üj<0:Ÿ$"Â4G¢O[Þɼձp¼f1H€ž«ŒcÀ«>j<ÀŠ¢æÖ$?5]LÚï iÙmtHäôèflŒfT4¨/ÊÒ@²Ã*E„ƒi®ÃßN–£ £#dÒF_:PˆŽ)-õ¾hŒl.KBrI<¤oÂòˆT(´ÜB„”Ø9 9ÀâÝÌv‰#QÉ¿jê¥'JƒA÷ÈäpfѦ7i¹C½dUÁäP=)Ò%åžéáШ˜Úˆ±7šLÑ“q%*Rq‡œaŒƒÊu’ÐHRD<©ÁTM'K} ¶“§ÄSù§ÄDZŸÂÛ·MB6 V¥MÜ is3¥8…;vй6ªýõÞ5qÞ?)À«ÚÊOû;[áRs!66NUî«'-cz‡Çéí9'JæÛBlŸkSÈÐÄ\txõ &TÅÌl: ¡^a™JhÀ{@¬+&ÈáAȬdêYuÔí‘nòjÎMŠbað!˜Äoª}IB5U·ŸÒì~]ÿµÓúÈmwïTäß;2ƒqLH…³!Ù@X $½ðZ²–ÏÅ}Ùÿ]í÷¾ëasã^jqvNµÙz¤@çÒ—w¡Š@9AXNòÅ·¨¢7­›PÄ ¡ìqÊZ-gùä£GõˆÐL‘,½’Âá=æÑ‘¨(”†#à±<&„B3‰ÛJ€LÓDÉÚĤÞQÅN‹¼°ê×µ½ud€tRVòs¤’'Xù÷IÆo&aHÞÜ I7gåE.$TsÌ”ùŒ8Rʤ¢Ñ«0渢É#PCÈWÊÇc–ØM}-é\þ¦§Ò¬¬i‰f\p}¢Êƒ¼¸hÒ1šuÔì#O5<Ú‘Ë-˜Û¹·çCTÌøé3㑨A”óUÁ”Â4”‘EMçå$i¬4ŠÚÃ(ŽÐd( aæÈÉÅÈÆDf±f •¦ø;ˆÐáL •$(XúÌE)Ã$í8Ó 6i÷ ¦%ŒKàÊ‹"ÖH|~°ÿM¦ÐIùÕd³6Í'Ç.R{àé#cta)áú¢õ‰ª×3&!DËŒ"ãf `ÄU„PB1m©ID œÊTðƒ Œ b dO\ú·idz®[•>ƒ™v»?®yןßÕY×WsÍ_>¥˜úÝeEùÝÛQØ}Â4¥G/%3*oŸÝgF½ýW[r¦àÛÙßqZc#yú«XÜ’½%¤´vŠ‘y¾"´VšHào¨œu¼çäb€†ÈÓ,UE‘HÆÄBáù³K!¸è¸T—P1ÈìÂä^{§ …³ƒE9¬@´8ì¨.]”Â8ÐJ—&LùȇHÄ0ðBJò8àÀÈÉÀýÅ–7¬¶ˆpÙÄ+IwL8ˆó¬K7úÇÞLH&ŒM†oopF-MbÂA ‚?]PwCÚNnpY8œØY`Å’äÉæØ±FõIO.Tu÷ &(qB[®º@ôÔ’¾‹ýx¡?Ø…w`cYDF£Ä£U IÇäºLvÓ+ÔéRÓ>1]n9vþâƒ+J‘‚B!)ÜK9ŸRÌÐ'уè­1é€M;)'‰ß@N¸~ª4rV>j(NÁº§àá%¬ªÝ .¶H”ž+Ã^Q¦j:C6-·–ªÐó/C¬㥳/{ñ.§Q_oJõ½Qíg¾O!ÃHÛ>e8t“®1&V qœ†¡)q D E`iD‚1„9Ó–Z€ÈJtâéäÌe.ꬔ~âÄæèÊÔüì•„vë_ÕU½Vý¾ùO5׺÷ÿAOíŒÔo Ý0#wËÎ`TWã¸ùÜn2vURºõz\ìçê'bët‰ç2êéêžOÕu ŠLƒPt?X<~Xéõd:ôÐj?‹VgCicAŠÄl&#e´¬"tz‚˜÷Ì&mèÝKi)T2)#}-VêÊ)îBÕýWnõ…CÁ@NŽÌÈDÃa<S!Å8áÎ×3wùú·«G=x-”£H¤Ûº}?!uwun__uÕ{pwwúU°ç¾yÖ³G±ŒVØj²ó>7PŸïÿ_Ý|gÿ÷r‚|fÙ—MUô¦ßt¶ûœZ¶ý»•5ém-#äV…ævdói¦´zÎ3 ¥l¤„¼W*ð›AQFa‡qÇr ‚ ‚$’I$’I$’I(¢Š$¢J(¢Ë(²‹(³ ,²Ê,²Ì,à 0à 0ÃL,Ó 0à 4ã0Ó 4ÓM4ÓM8ÓÎ4ÓM<Ž8óM4ÓÎ<ÓŽ8À8O<€8ð8Ð<ãÏóÏ<óü8óÎ<ãóü;³û<Óü?ÃÀ<Ï?³À<ü<þÏ;ðƒ»<ý?ðü;ð#ý?Óÿ?ãü<ðìïÁOüóÀ?Ãü<ÿìÿìððìÿ<ðìã¿<óû<ðóÀ<óÀ;ðÏ?ÓÀ?³ÏìÿÀÏøóÿ?ðCý?ðs¿?ðSþ?ãû?ò3ý<ÿ?ð“ÿ?ñ£ý?Ãþ;ÃÏ<ðü<ÿü ÿÂOðþÏÿÀÿüÿôÿôó€<óý?³NþÏÿìþÏü,óÿ?³Žðð<Ï8àðà<à?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöCÿ?ó¿?ðÿ?ðóý?ÃÏðÿÀOüïìÿÀO<ÿü¸ÿÂü ÿÆüÿülÿÁÏüÿÂOü˜þÏ<ÿ?ðÀ?ð3€?Óÿ<ÿOôóÎôÿ ìþÏðà<Îìïðÿôðó€<Ïüð<Îððôóÿ?³ÏìÿO?³ÏüÿÃÏôÿÂ<ÿOü ïïÀOÐ;ÓÀ<þÏ<ÿìóý<ÓN8ðóÀ<ã€8ó8àãÏ<ãÎ<óÀ4Ó€4ã»<M4ó4ã 4ÓL4ÓM4ãM4ÃM4Ó 8ÒÌ4à 0ÓÌ0à ,ÃL,³ ,²‹,²‹(²Ë(¢Š(¢Š$¢I(¢I$’I$‚I$‚ ‚qÇa†QDCÀ%[ÒŒîí×ÿÔSçõj[iôº€¬æqš«ž¯*ÇàuuUU¿ÕטU6ã>uŽOç+)°¯ŸSs꺀IÖ×÷U×Ô.ü š»†:2‘uO <ú&På’º¦Š_D TwWeö×÷ßð÷——|Ü»®Û!ÝU—•ùuý@$kÝ?픩½³Ð)Õ¤±lÄo?ð*7m(¢[õ@UÕÕu[~«)¸:ÕI:̆Wµ¹`S]÷îÿUUSl _Œ»s!Ó”fTý†±½­öÝ×æÓ [»³ßð÷Ü—uÕµÝõu{wMû¾ªüüü”åUUÜßïý©×ßË+þêêê«o{>þ꽿yõ<Žÿ6ŒQ"”û‹I=BâêŒs’èR¾fÍQ¿ƒîº­±q{ʤ‡–“4‡R/EìÒ'rŸdÛYWUU·ZÛ®¦ÕÕ×ç7M÷Í+~_Õ~u[{fÕÚ½³»ïÛod¿é¾ßoÃÒ¤ëÒ‹—bõ%”«†•÷ë’ß»v¹f³ëû<Î j-Ä‹ü¿ œ[E–]¨ý ÖõÙýuÃ_ÿ•u7½½šë4ŒÑÍÓ{º:ž^W_æýÿÕmÝßýÞÞwþ¹µöû¦Íüþuå;áTÚ×ÍöÚm?Ò§7²P†M½´ÖÝÏZçÿ¯,ʼ쬄‹?ÿ}WõÏ•e|åõWU×Ovê}´®Bª¾·Ÿ÷Ÿ{Õ‹kf‚¢ïºŒ{*N¿¬eÇ!+=P›:u-rþ®¬}ÊR™a¦{uÜ–ïU6çNøt¾›ÿ,m/Ù_‘«ï§×Ü/õ³½SýÊ~´’Ð*i_•·ûSáó1¯ïËξªê¿úûþ§ËŸQ½‚MÊ}Oûµ-´f¿U¯£ú1RóuT¯?€¥N¯2moÕ~_u~WÝu}}Þ××åm}îSòòªOÙ]_}Õ}Õg·Sä«ßýù·¼Ùëz›ù—SIŽžõõþ²æ:}ÝR)8'Ο÷úG-MjÒ<\sÏyy+ˆä$˜·ÅÞ*±F xRÑWŠhSâK(±64óT´œê­Qœf ÃUãR8Ë!´˜ýÖ˯¾“Z5Õu<öÕßÕWÝ^ßÕVÜ]ëºxÚ¿ìmÓsk¿©Ò·åÃÒ¤ýF«©Úl>{+†:Ùœ_>‹]Ï·=LQNEŸKXnS]uŸ—]<¯¯ÿëQÇŸÓÝ4z½[½ŽÆåsþ¯ynʶ»»éÙwL7;óšoj½ýNË·ÏõÆËzogØ~eNªÿ÷¿ñ¹÷tÛ¹×ßÏ»ú¾®¾Ú¿ËFÛu¿Ù”×a‰u¥r˜“²S¦q–/ëºÿÝßWñê³›gû¹Y†`øeìW§Sû¹ß¬vNS¶“9;5À"¶¾tß۪ϯ®¾êªnÖöÛ{ªþ²¯óù¿•^鶺®îÿÿê Ë]~:³{ªë?*î¯ow)?¼¿ËÊ»tò©èñ‰­qœö›ÊäÕ0!xB-*Iåï*±îì¦ÊZU¥žƒÖ”­ßÍ·7ë'“¨¹g"Ýúúþ1(¶*éŠÏ»åÂH¿#ý¯ÜÎåuW7.îªçÿ÷Yy—õn“šëmåþEÌôºvµËçq¸Úü³Ö©òîGˆ÷ãîüÏo·šØ©˜ÚéÎ_󯶩ýlå+ùý}·îðÉT&¯}íÝ5±0Ú~¶éŽæÝôï.ºªþSK^šÍnç¥Ýn¹ÓŸ´}«-ƒ.•Θ¦çâ -+””K£\YWeuv_ûh¿i]£©ùÿm¾¤tÍ÷÷ýWõÛ’©·”‘}ÙS"mž1ñ··’ªIÌ÷ÆçÕTßëïʫάQ*ÜßµZÙ¯ÊâžÅ³Ë¿Ý›æÍÛ¥ÍÒËk–QxUW€‹º¿‡VWÞmɬõí^VU~S lz¾ï²º¿ûî0·^eevUWýVo&»ùzÏú»ª«ú¿úÚv;ۿwµ×÷•Ô¡,CLîïçßTét$œ´H!£,]ogÙµén_ئz8Å/Híg÷ÿÉúwOïžõEª zºÙ&[)U®^*ŠÛ¿Wórÿ)ÿ2å»§÷Uuùßõ]u} º¶ß>“}¶NF_ØÖô=,ËÊÏ}:åŒ5‰¯wþé_$ëšõ­ùÂS¯«ÅªZÅe«íÉÿÛ?U:ªJ÷^õ)÷7¾å_µ‰:mèï1үܫºË¨û5z¦73þÔ»øUzxübK,~¥Œ¨­/Uuÿ*yH•6$Ìÿ«ÿþ5õuU»¯«gïöï§ÿ÷Ymú¯«ëªÇwÍŸû®É2Ìh»3"ëãmQ+æ#'NW*»®êÏ꺨|4ï’ï:µ§Êý[.uÍÍÿØôªž1¤?µ5Q¥“U—õ}yÿõuý“¦íUÆ·ªºëoêêû'}tÍ}׿êõ¿m®Ÿ¹ßUù•_U—U—õ# ss›—NæÓnïúa÷9))ýýmuO)"ÑE >ã4cÌÙNÒ¨cêÚÆÓzØ’õ6OËnóy¯§I¸ É ¼•ѵ¹W7ÓqÌóok;“Šp˪ªª¾»¿¬üÏØo7›YŸ_{_[{Õß”ßËŸõT ³c]+ª©Í{ì„ï¥ßí»·±·÷ÕÍËκë¿ÏÞ¿“ó7˜ü“©®ŸºßŒü÷å_WÝ_W”Þ¿nGßÙúç^ÞuW{°äÉ%Œw–v·+;ÃH q^g3ú§ÕÕþwUVÕÿ_Wß]×ÿm5Õ&¶tæÛç•9'Å–Ê›âYÿ—wÓ‚p¸ÒV£/sº»ÿ>®ºí—mþ>ŸëÝîìª^ëGN¤öŽlÛžË]Š#”{Ù÷àö Tÿͬ÷×öçmî]7«ª¯«÷êî«®«.³®«ò]:Ú„[Ÿ•ù[¼Þß®©ý}U}ÝVuÕVÖßí}ýUUeýWW®bÍåõ:º³º¹ÒŠ®eŒ,0[.EËÒ9³Rµö=+뻺m¥ÐÜÎÎì÷e½†RZKæ–½DÐ.b×ëÝI´ïÍ®«¹¶ª6Î꯮ïêú»û>möÓæg è½Ëk½¬zôÃVÓöƒ¢Æ»¿~;?”÷[K›-ŠôƒXeÆ/á³æ.ÞãFÃf}0 ' (Ç`7pÛ†qîLa”À<2ÚmÀ0Y•ºLfà’ h–4 ¼ØYd/ÓÂt¥Ãiý÷2Ð;MK)•Å…æ#“2Önâ8ш«« œ¯$À~þÀw÷õWwÿÿoªªºûªªþ° µWUW—–ߺ×_u÷çgµöÚèDhŒR1,B£‘x´8 Oê6H#fÏÇ/ÀCfUÕq·Dnƒ€A’€0< ÕŽûË V_ß7ïªîÀ?VõklÊVüïDL"ù>«§ÊÑÀºeTUC¥fºé‘—<”„‡ûC0üÈfôàÉžQÚ–û§²¥bô@/@®eTâFbEò#ŸT¿. ç]å¶ï=)Ã*)CôfB|±”ïÚˆ€Hš4@%MŠÅ# `+Á×ã*”ÿ¯Ýî÷ü=?JÛ•_U“¸ÚõîڕΧSîþί»ÖÞc¤ÜÜ/<*Ü· ô3#}B•AlO>Τ~ß}ô?/¦z¨ÚhG¦éˆrU·Rlï[Ÿ¹ÔÿÆÛ¤“i÷××Ôaˆ³ûefªêo¶ÔúJMö!vRÆQ.d耀о ã¾"›ŽµtÅcîò#ŽÎnÅɘZ€ ÍŒ¼ªcñYÈéײÕçnä ˜ã»Òü­aKÜžÇêýûïÚ¹ªÌ­—T£oÖ¸XoÔª3¿ìJ»ÿ1†ô~í‡b92Ìe¨›lÿ­æ“ã E 2Qå^óí›Æ´0 € N€z‚@ÀLMî72D.·¶B1ó^Ìa˹v¯W;fŒL²º¿r©9ͧµÍ½•Ùø@@h½ÛiK=ÿ WŒY›5G|õóÔzŽQÚ=G<ݳv­¥Žm]}ß?¢Ú¼lÛN¨hp€Ö>Œq%º®íÚ“˜õ=§û±öú”Òî-–Ѳ‹Æ lTê|eôß©ÓR‚±Q5bø=EkjçóAï7ž¥\ù­mÒ ³cÍ›3éð·¸3p`U à@®@ã YþD™ïx°&T@]^Œ>Ž{@•L ðÀÇ c–¤‚T„/‡È‚#‡tõJ™M²–»åórISws*(&cb\™ÖÃÒÞp2ºü0F˜ ˆØEÂ^×·¶ªªö¾¿ª›ÿ÷Uùÿÿu÷W__ùõU—D_ý\UØüi(Á çCâø®žd2?uÊ’ xª¾u•×uùmi ‡yW¯åøyŽ·»¢—}?í?ƒ[tžÌ)j n k:åØmÝÓ®³ê­·Õ=ÎÈC1XÍ"þ浜£ùiØ`ø(>ÕOæatÖó2#Ú@Þ8€òd€1ŒO‹‹›ø]%Ë”@nû³6s÷ßAÈÕhÄ1TyQÚ®…±ÐÊK@r€Û#¸ä™ºÚoN¶§[û]}ÿÝ÷u÷÷têÿÏÉ亪«ë›Ó«Íu¾6ï <lð …Gn¹õðéy† Ó$Ð5]_²µÛmJݘÒâñC±”ÖwGÙ{^ʰÓR©ÿ6)¬ivêF 5FsyÔ¤­„Ýrv[›ÛΟü­.ùN/à¤XèÄ@Î…|·}¤JHX.Z2R` A-È¡ó|tð¸TÄ0Wδ 0ÀàN€—#pàÜ=i3%XºZ^ý©¶ùI{Q#0×JßЉ~B–I|ŸoÏó@ºxbM€é'Núrëökê?wêŸ]mÿíoÆ®åõóý¿ªªªþ¬«ý·]VPÔ¸Ào­=%qVÔQ,Ä„}Ãwëz›ý}øÝÔ“±-µev{<ÇÓgݵ›ÙË[\³½EÌÂÎÒæÑêb}5ÔÛ©]kãre½u æà¸@–¤¤mìfûªl6&$冠a0Æ!p:y¾˜¤«˜PŠ€ ð寂RÀ àHý˜2Óî-òøô»õÑ÷n½•*ëú´Ë6_ü©š¶®”ˆ@@-—Eý›±lÛ—Ïç{røÞßW}{}ôê¶Ö~Õ~dm×w{]ÝÌ„€@*Y º™ô¢C²ì?OEKÏ«¼ÎølsíF¤ÔM$öU7lªõ^ÞÍnßÂ4eÒØ"•FÇÅ#‘á)pSÂeSõ³<Åg똶6Šá mŸž¸ºÈì$µ½í¯›mm‘$•à°Ò ð,Η—0u­ 1`ð p&Àž0 +[(C¤{@äœ<¾ûJù·õÞEuo¢A;smóÔHü²í«5<ÚׂÇÃÐ'€xˆÀËëÚúªÿÿ¿«¯ÿªªÿ¯ª¯«úÿûª»««¿ÿ¯ÏªÐ‘[À]™H+€”É-ò.Zí£EVç²Ûô­‹íªú¯ÏÃ>'Ôœ†I/uÝÓMÑ´ÇK#[¬&Kõ3ðvˆ"1@¤`|‡ ¦úd쥎»®öÖ³ža³öaM§Ïèt#F<1Óïqî…Ũnd`¥ À@^ gMb¸ÿ‡¥I{­·™tÚʼûêÛe»­›³/ùµMþøÂ¦Ýf’‹€0gÔ€VÈЉts­(˯ºF­ž}Wgõsar"DSÈñ{`²ã ˜#CÃÄæa{/ké$¦ãÿÓ»âsh–‘I%œc’®§o˜’À6 Xè \ ¥ËÕ»ÐM€"@®€ºŒÀ-@¹dy"$sö3ušÉ;êå#f'³ëÛMy±6ß;\vÖ± F”~0¦ü&`n %ƒØ“{û©ÿ^꺮oWýÕ}wÕ}eW×]å}×]Ý_oíkZ0@oƒš@)BÂùñgCÒQ‘0à­ù?R;óo«›UYï199–å¯ÓlÝ4rs”Q„Ï 14ŠÕ¨òœ»Ã‚ Ýn(­’“ֺꯂÑM•ÛÂûÒm¥HØ|J@è–ì_NU†œ¤ÃñºÈP›Tp¡Caì“ œF¨   3U|6›{Yéw[ÿmË$ø^ïe~æjõ”ã2U>vüåÑŠœÀÔ¤˜# N£Zw;ÛëŸunN§ûuU÷î×Û[ÙÝ—Ÿu6¶xæ+9°´Ð&€…04Ú@gšqêr&Y)ªC‘R~ûOÐÞ7©výWF±%™¬’ûOQZBˆÃ ÇKò&17#óé2|™ÌŽäײh©Ø$@€>M šR9ÂdP>Í'§H…‡GÁ C,RT8aSÁ‘ ÀJ"ï¶Ói räÌU…Mºe¶5–ÉeàóPåÀ"I…±0˜ÅÀu ÂCfhµpj.>ŽÈuW,â1Ê ®Z;˜% µŒq²åy‰Hуcà ‰XSž"(|®Sq!œ¨)Ø~BzìxJJžYÑ>!ŽŒiAÑùäÃEÖ™dÅŸüø º3î¹6š$ªÇ.6ø2·|û+~4 á¶_¯>lã•©ÈŠ©¥…AÁcæNPˆDç,!÷évL$*$!•ƒ¼Ùy’3q±‚úÀ ¯j­½sÖG5Ï=æzŸ'Úi˜lÞªnŸÎZïŒÙÆqÒrõY.ô²­÷LÏøT£Ì±QÙ2Ç壛4ÃïþïÀ (øéa ¿»~akÉMÁë³$eè®Ö€N*Œp1ˆ4'"€/S a˜&S¬â”´rd¦#UD:Ì…Jø(xS˜€¸Šàìàv‘é½"³­=J$gHÖÑ>h©qd žj›[ ‘Ö ¸ÚJ0®?› ½w"äÓöûç])×oÖÔZ·ìy¥É—.¶$Z%ñ]0rg ÄC3>—K›,Öþûy¼Öÿ}M¬ßÊîX»cñ¶iú¾þû¿Û{³+=½Ù½_SÆul¾s Ѥ›íºþ½©ßö}äþºÿÛ,gå<è[]íï©¾× bÎ^qêØt-®úž.™ú+ãþŠZGh)¦Y# ÍRâ3©* ¯•°ÁZ-‘ᙣ„FZâ˜0*22iâáèh!dáQäòÖSôÚJ%2„|´Š…~8ƒÀ¤ÃI›dâ Àn„¹¸ ‘hæ™4„fŸ#‰RÐãî8bM}m¾#+Tàr&2$Ä£sì–¶Ì(Á¢B)˜$BT8ˆQ0T„´òÂ$Ÿ(")á,':™6Ó¡GÚ(œ"#Þ¡WI¡ŽO6@Õ4ßA¯2Ij ¹Dµ] k°¡§ð}ê½Z©›êiáÀÝecÁx><¢ D@ø^|VÁXð`<“€Wâ’c2€gèHAphJˆ0DvÌ£ù÷3ã®= úv7Q@Ês°¸eàÑe&CÌG¤Ì²k/ç—½Iêb¸/bÍëkèFÂT,Øø®S ²£bµ•Ó¾îRý©Sþï}SY©y£»+«ùèÙ(Ï—‚ àž(šFf´RÎ í©Å)lÛ°’*m »Ë.Ý¥CÉçÛm_÷§rÙNîüww9Ïêêý½œXrâØ Œ—iÃk¿Üæi.wuÕOú¥Ï’í—ǯ­·ù޾¦Û©}„ãÍ·+sá’æÎ;ò_›H )sœ6u´Dà ”*r‡í¹‰q ÖE–ËâÝ\㓆7º×ƒÊÃÞ¥2ÕZŽ N©x$)v S2òTaŠÅ0U#m+fS/”±–-ÌYk´´ëàÔ¹Z|/:a­¼@m–6®Ý븿ËÕ Ô"0Êš“&ò `èÌðNh|!@ܾõF¬>W&°kÍùœ…5ñNÔóË“Y+H<ƒ ä#Ñ,Å-ÀòG2 0¥E³3Z—Ë/®ïµYÕUTé¥éã×'¢(#â‚tD4b#ƒ¬¢Ɉì•drf™HÔI˜`žÄî'ŸÄ¶Lò'™IOs®÷ùìüºú ‰£o`Î*Áè9.¢1<À6’›tyÞ‘Z$ÙÁ­Ö¾u/KóñuT¾cojmŒåLÜê7½÷umÎ~¶ÚÙÃ÷º¯úN.®—ºÔ5+ß–3Rªÿ¸·j¾pEˆy™ÏöØæz«:ò®uݯɹ¯çÝ:u·=¶ßÏ=‡´»Ëh¶†äÁFWièveXŒB¹ilÇe²ãCظ„O†ÇŦIµHÌAÙQÔ…(Cá೎0ù¦HR’À}8J §ApZÀT #-€r&+‘¶-{* RÁÌX#–”ì×-Duê<ô6ÞÊ• D¡[D¤m)>W:+6Sži~ „V%ÄÅ¡éñÛ…JƒÕ  éžT›C³B˜G×I¡Æ…ÆÜ>,«¦g•2žŸC‹š¥g­Ö‰­q§¿*ïÅwm-B3IÉBšà6¹T*­ „ sƒÐ9`„Päa¤/þ£C…rÑÒé-> 5–MÅtfËXiÏšÆÅ‘÷,°KjÜz™°”Ù3 F?J(†_ÀÜ¢°.kÓÝ8õ^í­»'dÙ|ç²ìöÇ­¸ª¨2´ä2æÊjŠHŒÌ‹ç¡3Î\BX2IŽ…¢@[¸°žaàÔUxÁ”žôñΛÓÖy­›aN¯ÅòÞ—¥ßH ¬‰œ:À¢B®÷gÿœ©Ëþí:ž¤Ì§õ\™Š–ܼÞ^l²7Ü÷c«{mÖÓúŽ_?ùSiÕmUQõ\°ùzñ¶Ž(«D-+]†9ûÕºùás†ÍF¶IGBÓ‘`˜>ˆÅ|‰ËŒNt˜b8é›kŸ–`CèfApÂ4¢a¨Ô;  ÔvF16ÌX—™Æ^HßyÚ 3FBè†H[ï“›MÞ¬éS]'}ήºÖõOþM]¡æ—#DMáÀ2 æzºˆ<þˆï<Îç‘Ïlƒß1ùí‘ÓpÇ+'÷z·™Zœ£-¦çäñ)–2”Kªv¾M½UuÓßÍ£ç—äYÅ­èÔœþý½®¸ây{+ôÙR,¸ûË5ë ðóBÒÁQ’J‘´K¤Ô)œH¤Ð\ ˆ‚ÖJ¨%èÒN©ñ1Xé?b×’<…Æ!MzšoýMÖÛçr^Úˆ‘”Œ•DpxjÑÊ)/Þ« Ubñ šLïáŸQ®uÿòmS„‘è\òÎ9*vµ½Ùêû]ú÷¶ónršcÎÌÈ<ãSl)ôÞwºÛoèIêJ_ó®j$‘qóarH;PÌÙ0z+)ÁäJV)ÒÅŠ ÕHµ™9vi߯Ù9¡iX;pÁßö *%hY¹½âªø³Äé &J™Q:˜5¤\Ah.'á]ˆÜEÄ4K2‰¸ÑŽ‚0Ä'³Ð9Ï{øÅš‘&‘ñ,áXf$ÌL„/TQ”`¥*]ÌìæËvY5xÝ™µq¿ ÷­Qbnf¶oç»3û;_>þìžvå}V÷°ätòóÚPÑ3"ã°‰1¦nÌQŒ15Z–ÓZkÅ<ݳ^«R¸9ÓSÌj˜÷ûsÒeƒžÀ@4Å@k àd‡ d"$»(½®÷^>ªûÊD0o`€R^ 43Lꃜޗ7õ–;Ú“~¶’q‡'¨æ½whù•Þz`jLðŒ•øðùÙU0>ÙNZÞ—3Ó˜?®Ö>31›ëüôWÑ›=:NLM~û=õKMiEf­ÅmÝ?òá%Õ^WBñôj'nZ·e>„{r3æÎç±j?b‡­8vÖJ½ÆK Ò—˜%û6ʉó‘ÁuŒ.f òxQ@hcé¥f‘úI—rO{-iããü¤Î¬P¡B¤—Ò¨ }º¥>…2Ù+¢„e ‘¼Ô8ïI LqáÈ;ˆ±CF &øŠÀð,!ÃPÌQ“vÏ5H|©ÈŒ0¿®œa΄±ŽfËi®Ij¦]†W0Ó0{T‘Í=ÄAÃössñ¼Ö¶ºÛ×ßsl÷k[.Dá f L£šPtƒàF"@‚Šž_k–JIr4œöYìw¢3n|’Œ¿Í7Á H¼’ˆW!y4Š4-±&á“Ñ G¨Š"˜‰ÜJói¹×ØöÉíJgfO!H›Ñ)‚BO'‘Ù>Ì2L±å ñHàL„Xóo"4N™¾ÐÔµ³!õ¥>ÏÇ%Í¿ÎÆr=}®aìT¯oªÿ9*ƒmÔéÖÿT›]õ:ÞE0¸¡p̸¼aÒ(q#ˆ¬~Çü“HÜqç¦fÍa‹W q»1JR”­'ƱZIϤ¢­+ªÁ:‡æ_¶Û'{ÝW­“eÌó=³fãbaPù†|ÖÉô’ÅÐ#Aëö5µ¥Ž@ØWÀ´ð|% ŒÍdš@loˆÎ¡5|Í.i·ghq!;‚T(€D讌dX*;$Å*¾: ÈN4 Ñ8ÄðÔH~*|.oÜžÙÂQH†Bòð½Q(Åy±±Ï*TFLƒàP®Ð›8’‘—†€ô!´"B2aG 5¨Í"‡TŽÎËŠ[Ne)¾›H$rZd—&¹!÷ù:¬ Îý…Ñ4Œ‘—ÈÌÝð뫤ës²\ÿ‹z˜ÆØüÁ¤HxñÁl/2J™q´m»Ó)1%G6š­±ÚbèKÂÌÛ?ü[^ c”˜)¤½‚Êî˜/öP/_ø/ßXý«×ÅtÌÆð-ót|ÝÍéŒ5ÒM-Mrп鲑Jb7ÅÂw¢relÓù¤ü¤I!ÜkÜ↞x¶Œ¦a‘QH24>èᤋӜëIJu-¦8ªºÙi`á’ÓECT7R½—:æZøº4ÿÎ÷k0Ø"c5]’¼t?ÂÒ0“Bg\|Ÿ+µ/wð¦/á?ü…ü%½Ñ<²D»žIû¤ÝüI÷Dr©þyª|ÌK¢f5Êój¼Ç£Ÿ|ïï¯þm#ID¿6]“<‰™M†Ç6uõ›_&³ÃÒAÂë£rç|†.$RIÈÄÿMY$ßSÖLèwC¦ˆ&½(£4° ¼ThUDÆLìÔ6¹¦‘H\ˆ` ŒñæÁÍÄ–U©w¿ÿò;¶ä!qåäe±ƒÄJM;.…3…eìî2g¤Eæ×8¤d®é ¸ãS~zWm|NLß³›½Hâ?ضœŒÍ*Óz­™Ý=!v‹8LÒTÕl=/IÎÆÓ{á:”ënçSßýwhà38RZ\Èýk.(5F9òå‹\šÔEä\†”@uÇmÖe¯4°ÿ<垉Cæ&C&†Ö|3ha‹¸Ì!H"`D Œ¸GpnBð{`þGÔתf`½£Vˆn£ãæÙùi½¹z—%ÉÞfÂ|a“œé㦫*)_&ÆhÛÔ”÷>n¨juO‹ñn£ö$åܔ޽gSn¶åÞÞúìúè7nÿ–FÙÆg 8Œ‘· ´×ò™õó©×Sõ(á°´±9)ª>gLùÆšÃ4­©æfsN4ôȸîÅhŨÔò¥%{ißmçVïçÓ«ê„j£ð¨é’·W—{Iºž ™-jMû~WCÿ‡ñÞ j¿Kª—Í`þïØÈaâHûù¹ôZ³!cc¾×ü²>ÈûhŽêï/D~FqǯýÉâ%°Àù†°®Ú®JüH„±á^!Xe¥áYk^qꦖ:O™jå«Ê×´ÞØD´àฅj ‰Ò7 wM½tã¾÷c»9¶öìKkÚ† — ^@Ö”bÚúÖ¹ãíÎGß"nïý”l»ö:IÒ’/%éþ÷ø¯§±žÐ–,õû3NSΟ’Ì™šÒ}V^wCdÆ`•w5–¡j?—ÝM²úØU¶oceœ±¥Ó5 Jñd’„­F)H'8µ·#|a&^¼ -Ó2€NòHi¥·åøÎ;©žA€†*0>óßÌWá­½mtšµråa’Ád0 „k(’«4²Á@*F¶º¼H„‘3¦fÛÿ0d¸È™ŠåÌÍÆP9 1n!ÒÌIfÌBõÚËýZv)é™ÓX(²w’4HÚEfŸ¿—•—×str{ÿW;Ùmô‚¸‘81ˆËÈBÔ8QæH”[E´ˆ¸jF2°©ýxÅa›ÆÑ)±½´nát@:L8ð›AK‚‡ø*øu ¯Ÿ¡0à80ø&&T08 §áËB{B·‡q™,G‹ÄNÀµ¢D̦«ÿó~dë)ޛе†Bãqë›ÛÊ!‰z£‘ –!"ƒm¶³-'eͬ¶^ÙÃõ)éÅèÛSº§6-®¹×Õë{)¶ù9µ×Wy_Œ´°|D\uk²Ä—Æc*•Ï—ÉgݵØçRW¿76œë¯ú÷Ý_µßÕ÷^ê§ê±QLŠTfG"Aãí!ó–iîvfNÛóîû¨kž¸òjÉ Ñí z5ÚüaUá¤ÚÇcЍHœ‹N’“1…Î?¨\ 7܉KȇÒe’-É$ÁÔŠý‚$ÞX*(:xúýö][7Ix\X)C0ä81êHa†.Ùo»v•‘Qàz„€· ®7!鉨 4>Tœ¤AH¤ ZŒÂâ`O¨ø¥‚qé´ÌǤ»KàŽÓ;d(p~9"jBÐÂÕ½ƒLy³Æ5æ"*0²8 ćÅfgˆA!r.@@„Ó/›·¦Ý—6ó©fÅÌ}ÿb*è°/Ås DvWĥǣµL•l|e×á6‰¬J&ù`'?¿æ‚;°Je`#í>ƒ¤àHã6 Ý”Ÿâ 5Ö¼7°ÞÙ›YxÒǵv}Âf²áo3‚ßVd ©ió^J’ÎóÑA¨NecÌ3ÿxsOÚ¾_é´ƒdiza¬Æ»g¿[ѵw!”÷&üËvÔjTø¤ß­lï³ûsvë>¡«µ¹îouÓõ·ý›73®«FýK#hBtJQŒ}"¶4+—‘#kšLÑ ¡áµ°8F(=câbxhHà›)H°@@LkÉ…¤cu-‰"[*ô|èT ¢€^˜—¼2ß61„Ô ˜4CaÀ$‚p%Ä=@9`8¸ðJaiŸÉX´L øè)ä¡’òñ l<ˆ<‡c 2fÇa+\hN„R- `Ø!(°­0áû#©â ¿!bP=‰d”$¡/‰3%Q¸ô&,Šs²>a ® ¤f@Tuá X-Š…ò<»˜OVDÈÉš&)E ¨@´d<¦iÑ…Ç —Žv^‹ ^‰V±‹}6§Ïð@/ GΟžü‹^ÈH€3–0$â‚Á2p¥A¸À$áØäÖƒjy‡é™¶ Ó$ƒ‘Ü^už[ŠÕ@9“clJNrÇ”rjâ£òçÊ‹XÉ,È„f)Žx—šܰÊ‚ãkܑ޹©M¼·skp@ä<$È|Žà¬ËñH<+ÅKˆ‚AÒ¥á°!bú¤›ÀB7ð­ŸÃ3×Jè-{øžÛ~þ3Á­S…Ë+-¿D®« ^Xà*hgêh£Ý…öLÈÖìºiù}äÚA…ÆUD’L£ ÝTyÅtQ!r ¢'!)‹gv0x3ÁdC FbÕ?ú^ÚN‹fžŸ´Vdjjht"Õ/S~V6Þ®”¿ çü­þÌëå|ä9TáËþ4ÂÉ·¯·Ýë}ê g•rM>¡ô£î›”Vg¥ÿÿï¶ê¶Yìóz4»‡à»J?™:ÌKzf«¢g«R¬‹øôÍü «¦&¦9,l«¾êú²<œUl5Ùé`êŠlwÃTË–ya9£©œ|'ªå…È×µé$m{oñTõÖ„bvHŒ0ÞVI-°â5‚Ù8ÑÿQõÿÍÇUú²×Ÿjû5ýE”*iШÓ8”3¼FÁÆ‘’>ÞÆô€±Ê³¨¨ºÑ½•¯SõqÉN×qsùyåÍ6oiQzÝjüXáÙÒã„Ëœ,x¹¢ÊH,¡I³I)Æ1JN’¨RwÌø@È2P$ˆ€´+ !38jNdÙ²Ó‡š^v'dBá*!Tž-TQbæŠ4-xºazâè pQÂ7´ŠFL«Ä‘7ˆä#Lï2(¡V Qƒº 01ÁR¤˜b½4~Ñù÷"šQUÆyöC¡i5¨J$E…9G,Åhœ‰ZÒ-2Æ€;H •-f,PcU`™³'D¦‰ŽÅ$œE @„CÔæÌ´?Å ¯×\û’þ× È‰8Œ2!.Âxèφ£„“`LdH% ÈÈ¢¡ÀSAtf‡`ñŠÁ*Øš½ô…`i Èø—Ç8J‹Âí6ypž ¤R\Ð:$] p’&A<ˆf"‡L³Bøb¡gsò"(:$˜)ƒˆìlºÃì°^„¾kÍhú³°éU=¥htiÓÁOEl–šD>‹Á`!‚Ê€—ê@aPØ´™̼ "DŽLH]ßiÿX,îø%ˆ…á±8\X!"Ô)$ND J«Lº Îw#^€÷ЄÓI _~rW06ÕqŒ¤‚Lçj>°6®Âžíñ¿'w©æ"_]ßõbgk{×Ôs¾8óWMðlBYçf´ñÒü54Õ·`U3¤c­æBMªðéC©ZÌCf.„òœ¹ÑEþ•9TŠG@âX€F àì{ÉAiÞÛoÒ¦K­'§M·;9–QùGÂDĆeÅZnZ}‘ÏËeuz\Š1˜çØ¡±ÁÏ3Õ)LE¯ôSu¥c»7‚[ÞSã ¢Ó ʦ°™ˆ€.`µ“Œ¡Ò*Gÿ­à ^\³v ^¥¶Ê©Õpÿúj/“0>@û÷Ok+P¦†i@ua<ÊaX6µs%²–µi.öÛ§®¤pC.>ºW¨Œ /’…Ë{ÇR-ÛDI2…Ë…‡ŽaÆ¥ 6ß(d›así„9=DCÓ&†„Îsà“ 08•Ÿ˜úûb¼.Ië3kPЇÍÌì*å‘ÙüzÚ|ÈÞÄ//Yyo16 #rÚ‡ØeâÚ9ÄhD³2-HM1m‹ O„m<ÓÖjÑ®5fÓ¢àf'`Èaˆä)’—b- Il™Aôˆ“ ™‰QŠ4Vð±ã@é·Ì4Žb® |.ˆ¡A"be‚æŠ O‡,ÚIµV°’ž$´Bñc&ˆ7Y ßu®™Ÿä—U:ÂYô¬‰âuÐO Á…Ë $uglˆ™£ÊpŽèZE¦ #$Âyy¢±à·ÌÊOt=¹&¯Ý¹ézœk “-cšÄµ¹{Ë6wM»ÆÍÔ—æUoŸœM›Rùþ”MäU.i{%øŠ¥.ì»ÞÆ^·•¼²Êø¿Ký"šÔÄ¥‘Ü‘®=ç,Ó”ók„Œ pRȵ¡sÉU;†¼Õ5/u{¦¦œ²ã* @æ ÆÒS²ê+s4Ôf(ZÁ‹åì­Ïò×§áÑ—&\ŒÁðdåC¢BŸ’(F96¶ ífŸ¶SûšL<Ù`—,2/>ˆ¸ˆ.ÞÊcS%+ŸÑ$JGz9>„èEËÍqõMA7çB–hÌik%)¼€!Ô‹-"‘*Ò*œb„{è»äfħ†2F@¹AÐÜ€™ÝQÖ|¾å²í-¡"0¥cö]eŸ{?•5…䭉̈BñˆÀ•D6„BÈ"ÃÅ¢hï ;æ'¶ð›ëEü5!ññÐR6:MZ Œ”(°Ö ²f¯ÖfŽÑ÷Î …™ý1EÝeóë’qrýe|rB2js ~Þ ½:Z¼†MFèÑzf9ôm$™[±…µ´aË´–S|MQt%«5káÞŸ«‚‘ÓBljæFáÊ@òM¡› 4"2 Z€Å覤&öc‰”иó’i’ÆQ¸6O1ÍSÛuv¾dØ¿…9kƒ¾¡DùóO6m ´šËÊ@¡ $åëž&ÕL&+¿`êæ¢Šcü"Ï""Ïxoýe¸Ëµ«¤N©racfÀ˜p­& ˆKAuVP„qé‚Ár«‰˜{ £$f´íìÿ¼çl-­êÜþƒfT¬5 +?Û¼Øúîb@½CÇDSB–¬ÔËhºŠ`;]Ù½¯cn)K˜Â³³bWd€AÂö t¾C#,²mÂ4BöHSzŽ÷Ê ?åÈ`\‹øáQÂ2¼"¹y0¿i~¼“ðr©—ÖRèñ©Dí¿6Ëà: $crPkï//^‡‹ÕÀ¼­½~¬‹þï’/²ã". ‡VÞó'Ķ+á1¢,:üIú>ÉAWómâFAYÀ‘›yv% š8)o2˜ï‡49T@hs÷‚ºãMR¸h¸ÅPþ#…nf Leƒ?¸ˆ¢ÄÎLÒðcöï›i W 5Ôubë×MÎøéè—ú†˜Ã6ˆÃWLNRl‚q4Œ}Ä|*`"‰† q@›•1åøï«szjŒü“IÞæjûo5׿u“¦mšß¼¯ê¿«F?¨Ý¦ ?•‘"2|< `–OÄ£pHƒxec•×ÒÄhèj6Xñ¦ ÆmVU4!“ƒÐ´Á`^7‘HÉ9—•ñ +iZÃÔ#$hôØ[@Ι«Å‹b Ë#™jd$`ìV !h‚ðß@Üöù3Ë%aMÕÌŒÊd^Ãþ­y…@Àø™ÁÁei„É 1j¿G?ºz\ždñõÏÇþæT-®vÓ³¾ß+ËçUúU•¿oü‚N­JÚßo?n3«Óf_ÔÙLCæÑPRœµÞ½îz\£AK3~wEþŠj Ió¬Ù¤ÈÌ€ZDD{$¸JA4È6 2p™^Jo]Á4‹ÿ½ èCBx7 @ôøYö¦ã_mü› ó]J«uwF¢~q(¨x)3Ä ‹ˆƒs‚x<¬d[‘g‰ pÀ£j \é–2^ˆh„n°C`®!-”:\ål¼Ä ¤FhZxJ¨|ã7Ûܤ H¢cÉ—"І¥@€Yè‹ÆÇÅ…ãDcütÊëNn[~þsº¾×á–ãÀŠ(1¤L¨rϞʗbI1ìÑH: !]Ÿ’6•q_¡Õù es>Ìg’úZdž£[kÑb(mŽaëÒ}#k‘.DqN'D¦>¡è‰—%HŒÛÍL¾ÑNmœ¿*VÔâD£™•ÉѦ»é¨­/“¿T.ѱÁ¬Ï£êûï._—5zQ…A¹'[^Á²¹Íˆzþlòúu50›U™¹˜³VÓIüœÌSL Äb œ-é‘3Â/$3¡½Œ°k1«‡ÌtñÞh¯Ç–Uí-“Gèº3eËìqÛûûV&8äÈxI±aA•[5h늤…V VRMŠ«tW \ÁåÖrUe¨”™ÕÉR³R@«Ÿ ñ• \óÈ‘‹X – x®0Xq#NˆÀF«˜;ìWç?—ºÖeœÙË®¿û¯k©ôÛ¾Øt÷÷ÿúwH‘:Í#žoŸ´£üÃñ ò*$™q'L£E)„Íá®Wµ&kÍy«1G¬‡ÉôG!,ÅœÈ,°±¢ø„m;eÂìpÃEø4––K¤î!¤bi•±Š$Åù÷ލ°½" ,@7Q°Ô*Є%ŠK©…f~j9„¼èL%`]pMƒ#'ì—¸ƒi’ÓÁQÍh9ÚäÒx9„h)Yç (c;ù606mÄd!èŸkœ:6-G!”½{ãÃàùõ0Ü„/·Š‡eèn‹ªJ‰0l·¡¡òb.D‘i›¤ÌGÙ‚ÑÓp‰# úÚª Œ< Øò( ~—ùü«xp_íBšƒ^”`ºSrçŠãÄâhâóôÜ3ƒ &J!‘ÓZß6Î,fîŽ{'Kx#ˆÁƆó —6dŠJ]a_dʃ*’£Ž“Qc/æÛn·² /cþÃ…©#H4tb+å9Í!d«ˆ¤"rêT¤vVîâ Ci°‰¥& ]´€Éå×3«Û)”+S;‰8ëZ¸d%Hœ3,ÐfžÌ$’–IÍt@pxC<5„!8NY¦™fŸIælþçf— <0dòÏrrÌïsó£ n6nõã @²"ªk \)”øX]§Ã¾ÃHZa¢tt!>\Îk’7–Œ !'a¼PÙ*e†Y0ñðW4ÀlÍ 8¶&Á€Ð§Þ€”¸íp‹!ÛÁ˜Lxx¸ÊnÇ©ìÜjsJI;ÒžÔßU•lZކ0 l\лƒ4•BÁâª, 8ŒV< c ‚W4Á@#Xn@8Œ0\ ÌC cp_…"Çn)æ$T#rðˆÉqðK<™£6 bL‰ÌŽÌ$=2& ó*¤6¼‡Ôr†EgAÈüÕ¸(A@‡µÙ“Bp>!ŒDAvó) BáHJG""Ñ ShÐçèЀB^ ‚µ–WœæuU†$µo˜¤SËå4)ÄØN#1qâÁ¬Ú1¢ÌQlu£’<”F«Õq{y Ö+`¢KÌÄB3À¨B B€°™KID@ª;BˆÐø’«ÎŸ/ç4Axìrž `^@Õ e>àÚ¹Âû˜aõzV0NæôóÊ×AÍÁ;RÌúâ*§;bË2f&úÙg3£NÄ“­aFÏ¿µÌw ÊvOèëN‚NšR¦OãÌ9Y©Ðœ¸ø~B 0ˆû̪-P.ÕAùÒæv†Ó>Yc@ø´ ̃°gd IêbËHþSï3£Ñ‘sD¢ã"rgMSCY‰[m}ÇMÍã·¼be#Ðm6‹,GÄÊ"Ç̼'˜9a wèíA98¦É²3 ã…ÃÔE¥@Çb!xB.C Jx¦ž°;¼ä¦ÐŒô¨4î²U×djÊ`w¼ ¦: K–Ç+JPë›BF¸ÄÑ5©,µ„ÈB €$bO*Å€ìXÑD§‹n%ç ¸pðùQ ÓG=Ù¦Vóìü[IkùÙ&¯ˆ=­}+@K‰Ý=&5àøÐQL8`CµNÍ~OKŽ()ˆÄÑtU>öWNG¿ÉÆp‹Q.6*Y1ÖnuÚí2ÖåÓ¾mUw¡I,ŒÓ*=µÍ­®¬{$*Ñèý:þéI=άÆÌ°Ùc†¦ƒÿ‘aü‹™i„Œ°>ëSX‡ÂŒ®ÀÎ>?ëK…aLƒ2 7àøhh]âódsà–d>&¡[„ñ(i …’()˜»Äð#Á1x™#g*‹Ú6<6`sƒ´+Ê}tî3ÆâFÑõ æR?¯—µvænÓhô`ù¨‹"¹Äb6NžD¢ÅFÒGg¨%àäT21ì…4,бa ¬pp+@;@ àì·Ÿ ˜Ãn ô™öc-»µ®Çë_Êꩮ ³)óãÝ,Ê»÷ë¾›û,ž®^j$X‰«Þ]ùz€j‰…ŒÄ‘ÆZyX¸©RŒcp\Њ`!¸#´6# ô0xea†Xè:ð¡‚5I 0gÑìçõ·]Úšq•$âk8¡Ô¨ˆ 'GÜ ¦qÌ…«²pXš¶.ÑHbˆ°ð.…å|PüX9´Ѱø#J$옷¤¤Æå& Ä5ÎŒˆ‰z2#‹‰øZ©Ód)®_IÈu°yyÖDâH[nBhd<£ÀF­ a"Xve»W-‰ë¦"ô ¸dd‘qØS29¢Máé( :Ž‹=iµ¦mW¢>”êô‰7®¥äJ‰X ޱÆ•™A[þéW‘•’Ël©û_HÚpµU“×Hw2¡Â¥ÀÐ,\ ¬ô¦Ò“çÊ7T"kbòäËé¬ä!C’L"†s…b`P‰ÃSC$m«2 ¢’Ö~òÁVÌ$ù9 èêÇ­ÛXwG–zÇŸ.ïðÇÐïÑ8²c+¥+#µYŒóI'(õï"ÿö™FËoÈ\\áCÄååx^§³æƒÒUAL€Ã£ZO&'“ àLX¡rÀÝøñbò>V\@… †"c¼¦²bkÆÿ1c'>C·!8PÀf¶,ÛNmÛ¶÷7s-ðŠÚ¯¢*Bh¶´—ñÝ pô4šæ5Co8Á•Må‰YÐ~Pï0@û„6EÀƒàë¦Í`@:FÞ~Â-®Îmº´Î³" OEff¨âÂZ ”n‰Ð"Œ§2$X¢Ž¹ ¦$D0˜[t<‘—`ƒòÀY°Ñ1]’NÝôÞÝQAé““Ñ)hÁ!|C(  HáZ} ÒÁ©ö.ÙR¡µãæ ¬›†…ìCþ°"*"Äwä‹O¦¬½ŠÜ[BRàãÇ¢ýÁÎÊ¢ò$ –$[¨T¬¿Æ¾·©µþ÷ zWúb¾æþ~IFuonÛþßÊç}ᵌRN´ò.uµ³5Pt9ÎÿCEö;PDˆ†d¤­ˆÆÛÊR¶›]$Ù0írÝ' ¼¸q£˜lÜ2ÑèR ¿0^%D˜˃³"÷’š5o0‰£…D<ì=ÁÙ£YŽR®}„u9åeg5Ô¹•’A$¥Q¹Iö”NéÎz^^ÛO”:&¿œõP 0ÁØt%*>€E ‚ Jx f³;Uíór€©Áì„6F¼"LyHžäŽDN!“*p§Ó}»e¹û {á$¡oœ¹6'»¦Ã¯ß¼ÊûØNHÏ5É´QÕÎe¥†"¨ üt=dhÀé¢ ƒÇ‡– £›.%X^€$¡b@õà¨ÐT,2„hLT*vRu¨Ì-òöÚyY­÷öQ†NcŸ-@¨îÊXL¨ž"­ rrä€Í[޵AQ†a‡qÇ‚ ‚ ‚I$’I$’I(¢J(¢Š(¢Ê(¢‹,¢‹,²Ë,²Ê,²Ì,à 4³ ,ÃK0à ,Ó 0à 0Ó 4ÓN4ÓŒ4ÓO0ÓL4ÓL8ÓO4ãN8ãM4ÃO4ã;³8ã@<Ó<ÓÎ4ó4Ð 4ÓŽ8Ï8ãÏ4ãÍ<óÎðãO<ó8Ï8ãN<þÏóÍ<ÿO4ð4ÓÎðïNóOóÏ<ÞÏó€<û<À4Î8ÏîÏ8ðãÎ<À8ã»?³¼<Ï<ÿÀO<ïŽìÐ<ÓO?³ÎìóÏìóû?³Ïìàðãû?ãÏ<Ïìÿìàü þÏðîÏìóÏìóü?ÓÏþÏìþÎóÀ<ïÁNüÿOüàðôÿÀÿìóÏøð?ðóû<ãÿ?³À?ð³À<ÿOðþÏüïÀððüóÀ;ð#ü?³û;ð3û?ð“ÿ<þÏü`ÿÁôÿOüþÏü(ÿÆðÿÄüïÆOüTÿððü$þÏü ÿÁÏ?ãü?Ãý?ñ£ü<ÿìþÏðÿ?³ÏüïÀ ;ÃÀ8ÿøÿÀÏðÿôÿOìó€?³Ï?³M4ðìÿÛÏþ°ÿðÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôÏÿPÿÿÿ;ñÿ9?ñÿ?Óû?ò³ÿ?Ãÿ8?ñü?³ÿ?ðƒÏü|ÿÀOüÿÁOüÿOøþÏøþÏüàüðÿÀ?ðÀ<ð;ð#ÿ?Óÿ?ãÏðÿüãÀ?ãÏðóý<ÿÀü,ÿ;ü?ÃÏ?Óû;ðSÀ;ðý<ÿ?Ãü<ü<ðüþÏìð<ÿOÿO<óû8Ïìó@;³Ï<ó€?ÃÏìðÿðþÏìð<ÏóÀ<ðãý8ðìóÏ<à8ðøóû<À<ð8ôó<à 8ÞÎðóÍ<Ï<@<àà4óÀ<<8ð<ãÏóÎ<@<óN<óÓû<ã4óM8ÓL4Ž4Ð8ÓM<ÓÀ4ãM4Ã<ã4ÃÍ<ÓN4ÓŒ<ÓM4ÓŒ0Ó 8ÓM4ÃM4³L4à 0²Ë,ÂË,²Ë,ÂË0‹0²Ë,²Š,¢Ê(¢Ê(¢Š(¢‰$’‰$’I$’H ‚ ‚ ‚qÇa†aEAƒwï»û¾þîÐUWß[Õ½WÁ™ÓØÜëûê7 }UwU›S×jè_W }^Ϻã`Ëﺪ®ÿ¬»ðþ´Uí뫽ݠ>k-H1ÚJÕ°>7mŒRþL/Îtæ¿›¬¦þ««üçÝÝWʪ검ù«çä1ù×+÷ø­÷èÞy„t¥€¶s2•;Y÷IðÔ#ûû$²¨ßo¸Ïö>´­b…cw€-éÙ%u<ÒöÓw©€]Ã*]ïû¬ËË{=›²Ú×ÂëûÀ`Nç?ª©ew_dçý×›ù×µòUõЪ{•>ýÍÈÝV_Õ]ÕvUëÝþ¹Ï諭¯ê¿ÿïûþ«ŸÿUWõÿÕÿW±çö)÷w_Y÷\Ü>*þþ6rG^qëò˜¥¿:ܧy§³ôêÿ;ßRWs"ÚäÉÚ[v*[PL÷ôù’yת¤2ï=iÒŽîÃg™wù÷Ÿu}w|¦¡z9 ®­ÑÇ¿nøë§"ýªÊ¼ìœÝ§'-ßýº×Ëîòyÿ÷µýuŸÿ9d`÷yóªŸ,úŠz_n}ÙoØ¿¯ë®ÿkïóûãîå×íåûÿéÿ?뫯§ä?¿þŸ]ßUMÂ*±Œµcóoáá(P?VOyžþ뫟šú§?.w·w÷uWõÙ |*w]mýzóE²ªöâŧ:TµÈ–W2Z’¤Êž2¦%;È·ûO­Ý}?¦¨àªWjr‹§¤öã(R¸Ýœå9Mß¼¿r”ç)®‡çmÆçû@ËÝüïþ¿ú͇Ü?³¡ð¨ta¯M¹ñ÷ö~}ÝåÎþþ¿ÿûëþª¯ÿº²»*®þ¯óïj¾³:¿¶ªþª¾®¯ïªp›«b——’Ì«B? €<€¬‘S.{¾|òWõ|¯±G}Œ[£YXûÊÊíÌQ'§v7pæ &7¼ï†>GüäÎsÐÌúŒ.tïÓýê9µßUUYT¤S ùb¡pn>¯°øÁùuyŸ |ž¤!—Ðçν×Ë.®÷þ¿ÿ¯*®®ëç—p¹jß™ ;U•=zеò”jê©øûÿ—Ã;¥¯ú·~²ëÿúùÚ÷õ}eÏg}ß»Ê~wÿ×Óµt¿ãઓœç±­æ|rµÎÝ>ª£uUUY_o¾ùWóêùONOyÕ5PÁÁÑ„Qáņ¯vuÎÈiVúù{Õ¯wòÝw+÷ÎÙ• Æd½ZG²™ßé$œ¦u¶xýOÔº”:]Õ_}•™˜çïUWçõ2Ê«¯ê¯ª›×v sû®«÷c ©Ô«·9ïUßW¿_•U}_Ÿu;½þ¿ì‡WÕUõg×W¿¡ßŸUßUYUõ÷·µ®ÞýÓ£âƒ~>…Ö0&*èÚj<Ö³tþ¹ï¾UÕß)ª)J»›ºôø’Òí6÷õתɶ-Eï–¸« QØÓ¨õÏ¢ãò®ê¿3rÚ'é|ýÝëœ9Ü„5]d*ᵸÿÇvwšú¸gßÝ]Õ~JŸ ¯Ï↓ü­ÿ¸\îŸnår¯rÛ÷ÕÝÝçþSßÛó†þ¾û©ã÷éÇß?ÿþr½ÿÛYtýÿú¿ú¯¼ùÖ[OëùÖÏáæo Ò¦74€Õ‡—®q¥&#§çÕþUß|3>|§5[^ý©ôg.꺻~sʉ‰T¬“”¯\”çÜ}½ôGFYß.¿ÊëëÓÄrµuµûSúø\æw\r[w:ûnRzŸÇVºî¬ª«ªðfu_>³/îóf¶Ï6²ë>ëùêU}]gÕîmmmoìþ»3{:Ý{NÕõ]Ôòÿï>ª®ª«+éÿ*»ú¯ª¿®®ÿþ¾·v¯_<¾Ý¡Ì>lÈ”XÐmǯ¾þêÿWiDö›Ü›ÛSõé[ƒþ³ï3ß%Ö?¦*Ÿ&üØnJèÒ,t×ÿWº³ú¯¿üân(n-Û›Y¿¯×jpµ}OÇÊöå{uе)KÊüÿªûʺ˪|3*»i÷דêê¬se÷q}~ÿçv[ùZªï¯¼ËßÞúí—nÍðÉÿÛê®w>¿~[’µÔ~Ëyð~ÿ}ÿåýÓu S÷SZÏ•€.žãçTòž]€À%”j©œÔ09WýòœøïÕÕÒÙp¬Æê§7ZòK«AèO #È^=_w\“¼î\ª¢»Ë ÖkRÊݙߺ§¿ÆûÞ->ûú£ 훸y¦}ºîœ‚‹{‘ÖõΪ}Õuwƒ3ç÷OžN¿¯;>UU_w×u·Q›Õ¯÷õÝ_}ýýl6»¯¯ó”ÿ‡WkózwÕ•_ß]ÏŸ¾”Úúª¯úºªÏª«Ë¿ý½½ú¬ãš"‹`Çsõk ëàVZ%Ð`$d‘µ7ö~;m(Þîÿ)UÝÕ÷ýG¾ò®®—ww'tîd½¥'<¯ú¿Ì’ý½ÚûºûÈÉdéÿÿßö)×_UŸ”¥-«káW]©6Qh×÷ÕýÝUå}}«S¯­®Ê§Ïó¿¾²ë¾ê¡ Ÿw­®ÖÆêªêuõÿÛ}w-rÜØdöïÞO!7¿¯Sr´úü’¹;«ªþú¯«û®}FW¿ç1¥ÃŒÁnÕÊ÷¾vþe`à:**‹Î“·özŸûúS¾÷•„ë®ÞÕ°äÏ…«HíEßUOiÖ9½nú·þãj¤BëØq5ü±ôÿ;†ç¶j\ïîuÚ•Uýßÿ¯ÎÌãªMN«Yô¦â³}û—]yUWýÀËúÛÿ¾‡Ýýþ~ÖuýÕ]]Ý}äŸ{ûò»«ª§Ê—Y]Ÿ•YŽ+¹ßÞþû²Ê}n\õ‰í·Ù?ëêýúªÿú»ÏSNT_œúUÂÁ ÜG¡å?k·Hc~…ÁD]‹f£<…`®>ß_–v-k·>îÿŸôS.³Ѭ–\6±¨5rª­úëÚî5{ìj±þÿª{‹œŸíξ¶þïßU××Óþ2R¡jôßi»ÙBæÿʺ¿¬¼¿ê¼ÿÌ«ú©o¿;êªëwíH?yý®J÷5!WW•ßù÷{_°ýª®èü3«òrMt·lä¹ÇîÜúº™?«ŸÕUemÕœ\ô—iuª D ýØý·Y‚Ò‘°ÎrÜC\á³Æ¡ {[µþ«M½ð}β³ò¯ãj”WóK/%ˆy¶Íû¹.U5_ŠVïS‰¶§½÷å×IxùEUÝýÕÒ+ÊgËëÙª¢9Ëg»Y}äŸÕ ¬ÝëÊÿ¿ïWtyKªû®¯¾«ªÏ»¯«ªÝÕ¿ó.ªöêëÿ:ê¿þªëë+ÿ3¡êÓµF ºâœì;çëwçÝÎç[ÿõU_uU_‘’´¶F³&ÛØ”½ÊªË<ü¤iqVE¤"ÁD FŒ#Ð|ai:¿¯.ë{;?·npèZ¶õ·t©<é÷ß}åNKÊnÁVùoܪ¯ºßƒ>Ý·­û3nÓ[»*uîîÖ×÷]ì9[>Ï~¾¹õf_ÝÖ_V;ïÏíSßr²^ÿ¼Ÿ>êÏ¥Û÷þFUuÕßõWwu}_T«õêþ\rœó³Ç»®ê§nu»u÷?»«ª®IŒGžš”zT~Ë3¼ª¾ì„àFüóû”DÁàŠV}ûë2wŸ?©îÃ-߃çNú¾ìO«z×uÖ»³~ÖüªõÂlúnwþwÏþ¹ãt·§ªôŸV޾Ò~Z;¯OS·oúª^¿}+ÝÐÜå+~ºªÿºÎWÔÿ«ûóú5õUVwýgÝ[ûº÷áïè|ªºû¬ÿ«ª»ªººº¯º¼îÜÛË·ïWæ]ÝÝeå?³>ûª²ëêþåØoͶý„ü´@]FþýŒ±î,Ô9\UEéfÞäyOZV½««×USõOéÿe~T\W”œñ¨¹S—]ov½¾NôÜ–.:ísû÷÷ú«¾þúúû§“ß·^çNÛ÷*W*—ÊçW÷O¬~{ýïSß ë««¯¿ÕùãßÊv¥#´3XG5_‡x3*Tp0€KêPÒðDÝ|CÏV!Á©H !`…m”„³Ý  ´5p xÆØ>w$JÓ¦¾Ü€S~WÛÞLoá7Ýà{«\mR×TSûe`+V>õú¨Qm;Ûær£A•°Y*ó`²œ ðà%È%Þ–®ßõL×ø «ª¯¯Ú»¯ªAUG/,ŸÞe_à(h!hU¢À2ÉM@<! -À¢ à,·õÇeŠÉ]Acj`¡Ïú¦‘!NJ€WýQûŽœMKço`]Ü»:Ör%5Ü\áñ‰±©›I: Ã¨ÕO:˜Å'9VîVÐ WuÆÝvvÌ3Ò¸®Â›ü¢Í‘„ø,Á¢ pæe•¶…oÝï÷TN(Ũ÷i£C‰Ufs‡MÏ™ù»†¨ùÇòŠßVÞβ^çWd{?ß~¿º¡<–uAû5TY‹ëRT1Hè ðN¼ gìCª®)ŠZ› Sá—}]s{•/ú»ú­‡ÝßAW9Y|z@j4 ðMèl b ÀD_ùêòŒÃ“ÉUEù±XÝCE—LAôïÝG°•¤EïWãõà¦EÖG $éÆ*x0¿DfYß+,¯Óiyž1³)¹‘J³±¯žÂþs¢X™p-'Öð7ê+$PˆtàPÀM\OZR/„FÀç=7IGR4üB€d‚Ëgjû¿‡;NÏá»YkØ <‚4Ð.žy7‰£“·¾š‡»ž¿¾|³Ò¹]ØýxePà l˜`@én u‘=¿¯ÿÏ—ýoýõõ}U_ý]u¾²¿²¿çáH ºh€ p â`#à?û"‚¯vöÞ}ŸAU s¦ýæh™!nSýþÚöAe#Æ8§qíN|hóg W/5Flœú]µÐ~‘ŒÒ¸Ÿ V†ºÂki)YÛíw÷f¥¦&>Lã8ê¢ÐeDвÀß©­kp™Í9·¯(HRs©Ý©RP€mƒ =«=tÎ-ÊÑÎØJ9U•éÀñp[ÜB™y½ð©ªù?ë&¿»û|¤W¨U&ÉI<ºP!`E àAð@ 07€6Jùò®ª×ú”¿©Pü¼¼÷Óë*þíÅwrܱtðÐ"@n…‘† &ǂҕ™î×.nr¢¤9²‰Ý¯¹’„oó>·>”:ï15Ó=# ÚÓ·ŸQë¬Fˆ¤Y#&µI‡@äÑ#ZêZßÇÙ/ >àÔVÇA÷ÆŸzÝ C¤#×XûÁž»ÀÀÑ" 5}JŸ/+™»É‘õ¿r '…ÒÊ3€ªÜ͹jTŸ/IbÔºo{GV{>ðD°ë>˜é„ØlËYåð]ý®ÿNyîC‚dÀ<ÃH0‰€ÿdÀHÁyˆñ£ÖüÞ¬¨Ì 0 ¤"`£‚4º£½n×{½qö^ûv3ÚvJO¿ª€aÈ–€©¶ ðEÀ Ê!‚&` }7D@ )nêóꮪߟÿjJvÚâ8.ÀÀÂ@¬Ë–ÁÕ Oòž•…~_wåu­]g· ΄ûå.–dÛ̾\b!7×÷%¶®7ù>“¬<¹t3 —½äåñ<£Æ)—µR¢HIÿõbÐà=€ÐùåAW“4öÇ œ™µ;ËþÕZîy 4G!Z­Úr’ËwmÈå]ÔÀ“€€4¨‚0`8@èçuê#]ÅŠiµÈ~„@5Dz §Î<›§]’ØÇ1ý>jow5¯„Õ×5^E\ž&CAÀ,ÚÌc`3Bt@k‚ XÀÆ Ò1¬ò}žú·õTùæì94Å&€Q à€€& 0âx!b _Yá‚3mvØýç{™‘ƒçšÐ7—,åœ?z®YùÖ$8o(û,¯po§,OaÞÄý¤%Ê1G |ùÈ!Ú™ðîw)_ôœ¼ýW×»ZU¯;ŽjÉ\ZU[ÝkLñM›nBò—¬Õ2­ó|ºëû)Ò2ôVøùjM©Ý’za m>ü?ž£ðgHª/ŠZï·Õô;¾û«ž¤©ý·18 €Œ…ÐlŒ#Àr02„f÷ËQ¨â±…Å9`ˆ€ 0bð„„`2 †Oå=ñ…Gåþ,¹@zòªÏEÎT÷©{ïÏÓ´§Tç*®ä½C@q€ñ€õÕƒ €ÌÈ °*€C@ú€*`"Ç&0-*°0Bx Œ®T>„é0$Ò`F€²Á&ñÔË ÙSÓÛ“}líSîñ?w«{±fP¾°ã“t_ï¿—üLŸ¡Ñ©ëºêªMöæ>2†åóL´6„uxh«µ§S+O[š·åüiù‡.j×b´ö¤³s~÷ïSêU¿Üði:QðJT‹zTøMU}¸£ãq§a9çóÊ@«8=°E%åwÚb4ÕOà³ɵŠ÷$•ÕÒ{åØl“%nþ8Åî+{Ëï:¸ Õ à]€ôHu¸iÓÀx„k@õˆÁªˆPLŸ0x¡ŠÁY `Ò\p @BÝ ¸ÄŽJTÞ²î¨ëØÛ{Ô&·i¼ªßΧþfUãú0Ëó$xsSçUÜû×#öšIÕî/{¥¯Zt¢¯ÉFäòdæ P&^dÛL¨áI!¿Ÿ7QÇÕýÖx2e-ÿmENbŠúÜ’ }ó÷g™ûY’Y ¤Ã34 7gζ®ïÞûSžsú:óÁä.€ã 9@– ûrjY¸Ó“õ0'Í<ûj›FêWµ9«T€‚N´!«5_{š†à:À… €÷Ò†jK`F‘ €ŠÀ9mƒ4 k…ðÊ ð Âx¸/Bà °i zˆ!à)é€#€ ¹—¹O“_P! 8ª ³y’›ºRð”Ÿ*vÉ c‹×g½ý}GÒé?_¹ÍBΩòz–wÓÅCª>¾~Úé›y€“3T#ï:í+ñQ¥g÷Óžäæ2ˆ‚¹¢"ˆc휮Ëe?¿Ý¦úµH_fJ€HÀÝz¤NÀv‚! üuî7 ¸l£@õÛTòœäUýèÙi´e €› (B”vwÎöJpªÐALøÆÀÚ¸Emü® ZÍÈØÐCÁˆƒ¬*J€¥6Ðø± á<µkßð;–ݹmÍåe(›¬I±“¶`(Y®Ò]Å:ݧ»ý‹f "¸$éGß?~–éÿÖk N€=!³é ø½2tám( RÐÐÓ`Š^64Ê€Ù¼–2@™FCqRTr`9<  1‡}Ÿ’;“óüp5´Aa‹¸»ÔýÌùýîö(é××ÓõÔìç-JÚåÚ±á5L/éÊz>9Wl©•Xñ^ÉSVË× bC(&o&q-Ûæýë÷0f¸| ¢x~© 5Ø<éü¾qÍœaY.Ï¥5ð 3Â8 À¾P:/ žîŠ’ÿv¿òÕΜ›ÄØ·'‡?zJ—óY`àÀBËvá-z*ÿYö¢[Wn„±À〠8}+íò½ªþð°'€²JôM‹Õp”"ô @€íî?ëÂIr‚ø pvøIHlÈ‚°R± 9ÀÚˆÄMtTó3ï}§(’Âf$Dç€&ÀÐåªÞÏ·ë*5U9Bk¶Éïzî³Ó…ÅÃaŸ$vll½kïLçÊ~âÿiçìëð ìºÉMe³¥9C)õ¾wø³R¹9? Ó¸y!B@¦ô•Ò­¬ö–*sùxH´’Q,@ 'S†Û8‘e×øh>35LŸP¨}Bœ;D=’cI³Á»  ß‹GF›‘‘¸úËÄ‘üŒH4Ò@È& vÐ8¢憊ï[Õyu;¦2ff†l!ˆ,´êV‹Ù5pMNŠÊADFÇÆdc$;ëÒ€º%Ä3†8 b~Œ$ðŽ`LLd€E’áFI›6“5Û)€`÷½-ï‚G'4Ó¥š¤Ì™4‰!IbSÃàs¡#]Š@õ០Äâ¸bJ •#‘µQhÑãäÇЛ„b9áHÐ4€ÝÇ´V‚w¡J¯‹AvĵW® 8ÁÆ*Pèhüè½1ÔÏX½CÄ"bçK¼²È¼½Ä®%‚5LÜ8 ž[ ÁzD--£Y0V#y¦¥—n{ó•ßÕý÷›ó©òzFÔûºŸðê½ÙÎ2­¿û¼’³·X„s.§y]U9Åž÷ê¿ì|¼ÌáËhˆ’mÿfÂpµlôÐ:‚‡qÐàV §û¨Xf;á˜4‹.’ªí¸ŠÒLºõÔÎܯjî²Ü~¬õ¸‘0ʨ®Ê0®c)”Äfœieg¹Ö˜E'ZRïŠn×¹ü¼Ós…:rlN+ÔÒpd;>è²V|¸@tXñ$<2'ÁJ9ë5‰‰8ûÃÚèh;p‹# !QÓ&“ë6ÖøxŽ1>ß®²´þÎuZ¨ìß%£ñqñn/}gúŽ}l9_èûòw>•y³›.¶Õ2Ã,Â-0³Çë‹–dBT^xv$ ¨â[2ÃQ= HmVÐL­èÇý¯ùË8½â™o¼~}ïë™®?©†TGfømF5²Ú!i(ÓšÆ1[G¬×Ç^Åm ˜"ˆ©‚Ð’v6PE#aü\ ñ ¼á­ ÏN†GF¸'(^0 "pb‘Aá… p”|T&´@Ъ\P•„d¥W͆‡ÈÂip®gau¹’Œž8-AÑ}³îš7ì%p:äââéIœ††Æ£qàº)™LÐjNFnZF\FaÕ=i¶4·WÔé>‘ÁBª^q­µ´ÒÃ3æTF‘5Bæ‰}´êœ›àä•êΣ®Ê\ã^«dëÈ|ë(Dzëï@´H0ó«Bàû¥:›çŽÊ§Q¬h±ÄG”Bt91Â1” ³ZC#a9°Ë1,`ƒ$P=<- årT™-%ûKêÅ¡›ƒœ%bÕÜ7Çd™Ôô˜¨É£)˜Ù¿\®Tª/LqÔJŠ5<Þx¾º[¦j8NnѤ٨&=CBªÐÿÎqdK8eN8ÞO¥SW§—rÍÕäë¤iÝÙý×^Ô3Žòc$¦lwØÃª½[ŒÓ”L²& |Ó·õ›VJÛ'XŽŽÅ‹ƒuÁt¤å'8zÍIC¢‰FiE¬ 0œáÉæïgkg6ê›@‹‘â>Mò›«¬k¦8_4³Ë 8(¨ ˆå@² 7ÃPý™ÈÅås˜€ëq„&}Å>$ÕøÍúŸ{÷Þ9é}<<ËÍ“¶¢Y$y«Ì”2p1ÍÂã†~~¾²¤ëP'«²á€C…À¥D†Â²rqbDn„p¼à2™œüp8&Oðí±P4€uÁ±€Y ÓJ „Ââ¥æD6‡DĘ̂cC±TÕÒã'>Šb±,n/.û¶Ë‘¨°<ɤ :wNAeC`ØN&x²> I}pÊ*1‹†Â¨=ȃ٘%(mêü¶}âû"q9¶bˆ¨Jƒ#!8tZ˜|d?i™ÃßîçLší»­ø(P²k[N#74t‘¶´¦Î ð8pJˆGR$áâäË ¨¬ N%5ãQlÔ# ±DÔ]+d\ø! ˜%‚†-Bñ)êçÖK[k«ªê¯‚ó§Î^²ë9²f1~¿ñ­½Ó®^Ê[ÿ»¯ü›ç¾¤›WF~POœQ=rRU½¤zR ÓôŠmÔJ’+<6‚¸ÐW/Z"ç»F‰AØÓŽŠo>pQ>HÄ! ´ã«6nÉŠc&ÃXt̽CSKÿÒ´ÊÇ•²ú#q!Ž?‡)“ÿZ*dk­É¦ˆËé H’ã³ô¤k&œ8•²¾w‚‰ñ‰ZälgQg5Ì|¨ÄŒ%¡|hÂ0aXE‰¢V$†1˜F¤nè¼~Žm™6u®™­õ¨· í IŒ(q¹…CIæ‹d=¹,>¡æë+é2¤_Ï·ö)}“»ªF±…J²JoEƒ8¸tÀÝ‚¼¥ãpá1@T˜ð²t6¤òýZ.©Ï‘+d³Bxú!•ÑCÏ@›+!›q¾6Ê’9ÌENqlöºL/ eÌ}ÆÑ[3½È£·R›”%%Ƭá±3¤iÇQ?Ž™(ŠIé55í|þ÷1:[Ó½z“Æq5¦³g™Ì½Qõâ=âŠ(êarf©$šÞ|ˆNT‰+t•üÔÖqWSGÎ|"}µðáç"mfP3²ë0™§EÚ´ü›Óá³BzGMD#bt±uºœ¯ÿ;áÄT 0‹õS[J©š®‰Tf©cΡ+<²¥‘Áj(ÂÛ@îC ç];§ÉÀŒÜè„kí ‹5Áñ ¨BÉ~B²ãtÄW’¡h¡Rã±²óâ¨=ÃÈŽAêâØVN#åQ|M 2 “ [¦/¡‰Q˜&ˆcÔcDEÈDSŽ7.5¹òNµ ]ÑDɇ‘¡áreÄbÂãx–ëŸ ¾Z§L4ÅeÑÈ¡sQÔÖ‰ç>=älF+Y™ã‡’¶£Ïüy¡,\nR@8fAE!Ä= ¹x,Bèì°¡o!ÀS®TÀðØá `·–,ùãÍ–ýPÿgcí¨–c\ç§Rva*šG3³GÓ‹]=çì—¦Ô==õ5_iÒiˇ‚øÁ‡bŒi¦Ð,ÃIÀøs* *ò§XÉ<2<0l<pÐ<§US²ä‡¼™è•™ÂÅ`³Ð{èÌQfÚK%…ªJ¢’6Íb®)Šç*&+òQ dýZPëYO«¥±—`éŠSšÑÓ–šü¹­fVì¾·zÕ³+:p|øx¬á×CÊ·"«øà¸qª"&Âø^q.´Ëˆ›Fjfy¹ÑŠ—·CZei h‰ Î;2·æœÓfò½3…0C“›ˆÚ9\žÐ[ÖÜÙÂû;ú½+ÚØ¸õà• aÃ?´Êd3žåy ø-$º„?ž R›—Œ#ÄœãhM†Çˆüï’¶3‰B ½§™ÛmÕ,éù±Š1)NýÝ8\|x„*T 1¦TÅ.ä Ö4JÝ%„’/e'É(œÔú©”GHõ¥Ö¹Ïë®}"$"œ:E½G°uR*hûñŒÔ)ü¥)ë¾àýÿR®o˨:v qÙœz«ç¾¹wr[>¾¼îr2NFéÈžh: O 0î °‹0Äá¨%BÐ6P,~ÍErá‘ ÄdQÿ;iì«86«¬¶²zkåUk®£j@úH•M½Æå?7V]8îKÜßJqÃÏ^âyÏ5‘«°H'DÑŠr!™¸ÐÀàèR(7A*ZÆc%0ÿ¶¿œ%æÆcóBâBh¿Mõ$¥½n.—  gî,òÅH2.u$Ì6UKµéðøT•¥§½Øü—mngV^kéðürÚ]YëÚiW&ÕKeó•î[ó?.3V.E6&ĺ×Ù“ËlÆF‡ ÜFÛ‡”0Äsg6årM¯èÎ¥«5bжL¥Sª&P¶.¤äÔíÍÎv.c~Ÿ“* ÕŠ"Z”ÄÈn™f 4ŸYÃl}„"|.”@™€ì¼_7é P2³0ü? r!”#¬S×Nªˆˆà(ÀâwÇQ À^ˆƒÄÔÀ^$$]×§D£=$K[2"üEñLÀßN0 A@ŽVÉ Nú{ÐÂBÀ& @® Çb5 W Q<ÖÐ8q:1tÀÉ“ "&£1ÌH=Ä+ã3\ØÀTz–WG—‹–™ÐV.:.ˆá(N„`pìJÏ FãÑ$DüÅ,aqTØÜÒb#)¬±“Nî1›Z‹ùóQw‰ÉÕd”f¸èá:ã6'„6 ¦4 Šp\:‡Pî Qé'ŽlúPö fÅ¡Éd ö.™¬K TÁXGq¸Æc‰»fÙ<Ÿý#®”/f¥öþGç;T쾡ïÕ‰¬œyïVVЧ™Ü—yÆNED œUáfó"øÚn\èÒè%: IÈbÙ ’Ë;~îõÞºŠÀ®ïéH)9Ù§“rÄšÓ#QXÞ7iH©ŒæH©#´ÅŒŸ$ ‚"BX«FÊ«S×4@üÉüubß–µÛÙý[³ó sY×f"^üþ¬ÿO'$øúRBr¨ˆC`•^*ë–Û¤fä#qú#y‡,(ˆ‚ Â"òÓ‚@/øRÑúSÔƒO²³Q´Õ0©õí'IZéI°ê„ ÞOgáÌl§}ÕS~Í…Wœ5)°*"y‚Âõ–q <~¥ÂÁAXÒgÂÒ"Š “5i ªEpÁÖ›>˜b¨ÑÓämM»O×Ë&;gdNŽ'çÿ¼Œ¹bƒ3P]$ÏEbþ=IŸm+ÛcÊM >f©©ÓU’b8&•î¿·¥_ê0yf$’#{ÖÉ5)ÍUr³#Èo3cQåfªÑ÷×ãûžÕÞ¬âø·©Ê\>4¾-OŽ|†½L¿v?¨[ ƒ3pW‡‰!`À;´ ¼,AÓ8 ³dçÄ c`ô Àò—J9L9ÑËÄŠÖ8a3ÍI†N¤‰¦ª[§ÝÖϸ¢çòN¥-i:qãMq"Öºp°D äøLDoÎçÉè’Kà‹ÖÜ—ïóûº?¿pvSù¹jc±qìÜ¥Ü^Ÿõý@é°šØNýWjJ³Ì¢çs³íS”S#Êö&`Òi Î¥´¸Õ37e8¹ò©c^n£‡ ¦BÐÂë-dD†‡R:åÕ8‚S€™H’m@x#ò¢m.Ld,¥€¨«¤‚ÍcÅ{’ÈÊ@ôˆ~(À!ÇcG¶ÞÁÐÝ®üчOa!¨ÿHmd’’ I”)BJ1–ÕÄì f#¡ˆw./.¨’%…ðÜ…sÇ]DCué%@„JPrDÝ(ð)†îA¼ûrƒá#©<`C"&„ØH€bäÕ`•Ø h¹ÅLå"ÜHãX¹¬v»Y·(cXƒŸ#ß®úQQT91ì(rRG—Bd [‰h: A07 ¤EB÷´¸*F!L`„‰N‹…ᙣvÚªªõwØÅ0ÁÁ8È13WœëJêT ö“=uc—u ÉS. FôTÏ£ŠOMÎs*wƒ¿9ËwË,¸œµ¡rNj$²1ŸPù‚¡¨&ÂÈB„Ð"¨XÁRDEÄâšT°¬‘Ó> òbƒR¨€Åä¥@Œ‰Á"†¶Î¸6 Š/‡&Ï›› Ì ´_X™ØJˆþÛuKH«©X.‡0ìJ/c@u«2 Šž/‡&‚âDÓ/õ΂„窚 ˜( Cèªd‘=3KÅ…ª^±YÄ. $ "H‘Žy,ˆN±H‘Ã#†ˆïàÃÉ_ŸÌ—µ•oXò¼´åé½U6gÊtÞ~,0øÉt'‰ÕYQ’‹ŒPDáÆ ‹Å"Á H´ÛPj½­J}· =&Ãhð8¦…©SA… à£Ý„p“»Ë+¾3ve²wg9ì÷hµèˆeµQ›šMÜÌ|O©¤5%`CiSꯑUÌV߯ˆä‹^/!éG÷ö{êÿW×QþêÙ¹Ê;.Wû›¿ó T•šŽBH/‚pÀ_‚*ÛòÍu¥­—yT¢þÚ‚"Å È☴ Dðöxzl;Eë«Åµ–BÍ3T©õ@2“ˆTÁߥ&«V™¤)Ê^Gè`w© F!ü‡ÇÈiGî˜úmw9Ùã°f)½Ÿj)Ú2BpU›M ‘†’@zŽÌÒ#Pv¹‚T\Žfñ!(b•Ç ÑÉÃúKDÐúü©äïz4Am±  âˆÆîÅǂŒ$ÞØ:­—yPk5v-éϱ˜w>ŸJyÊVŽù,ˆàr=ñuê6øT܇>xüÜ×Áî)wW•W/üüå)UþÙžþ•Zܵ>¡q”2¬Ô¢VJÜ?M/L ©ãwª¨„+ƒY‘ Ná4á¼7ÃÀv‹‡Þ%„ØFò§ö jM\î5%”mÙ;Ÿer1K'=è:që¥?V <'—‰‚ÀAŽ”*ó»QèGáý§ÕΧR—Nñ)Qwk6äß'õëòOœ%}Îã¹:ÙíMò|ª{ô§Ï]×ô}ï깿£o½¹« |'Û õgJd£¶Ž¾‹ò¯èV]ÖT.¾Ÿ;þÊÏÉÏî«5kS! á{³å˹õ÷6ªòÖ5~œyß¾§­{6ÖnÝÆ¾Xæ8ùAÇe7]”¹x%ìhn©”ܯ&Ó*µÈÆÛ¶GÅdÁؘ@ÃÑk‚ ´@04Hb‰®iïeU¦ý´u™Ú2°O4nî ÁØ8‰âh K‹K¦%7Wð‰GÕ5³FP¥O%Ô8pù[% %w>o;¹&‚÷Rð0GhEÁ ˆÝ §ñˆ:Pú0uCIYí…€W5· Þ˜(’´j³Œ¨Ú¯YÓ¥K¦'8t‚L+GG'¦ÒR3©?ZŠn|&Ãjrÿ$O§ßœÁÙÀãùs­ gvóaç FêŒ) éÓ‹@þ¼•ÃDVX•¢cé9£ØÜ# • ÀqT ƒVŠä!…' 8À„p" ƒ ÈE°’Ñ ‹ß ¯'mµoî£êjµ¼Ÿäxòéž7‰ÄŽy+QñÀ„]ÂU ³":!Öœó¶¥ò‘qyïmË£mÕÜ¡& Uȃñúc$è™’±¸)Ÿ Å9ÞïkïÜê×vºSÍŸõç2bÛ‹dN[%2–šÑöÒMU/Jo©¿¢“ÉÈJ8dS>Woïå)ôþÿR¯¡¹;×öÎÜ¿ú¿ù*L58ŒÌôÒ®â&¡HýÔüë:›X¨÷¨»R㦾)HX‘´MüMýi­ôË9M-‹§%„E}V[”ÔR\›8é'i4]#/\а£"Æ~žmË~Ûë©VÔç°”RPÌVÓ#0ˆ¬RÕÑ%ÍM ÷µwf¯*¶dàæ¥qÈIŸùÓ7.¶F°²ŠCFE8FA@ÄIÑ…¤<…×”.;€x:Ò‹8Zoö’¶¹ì4ÊäU7 f7º:F³§ÜUŠ™±Öœ¿|Ø}g¿]¿ƒãU]ʪ­Z’«ÞT;êÿþQŲ¿)JÅ¥¤¢ŠƒáôÅÍ‘KYcŠl†¸Ñ9˜¡ML"LÑ´ „p;€Æ €hé8P Po©Y|.¯ç»lB˜šuÇd‘ÀäÉJEñ,b±ØÔ4´Ø|ø¨C@ÃpR ˆ‘èÁFO…)W«r°÷Ê¿÷*_Жjå© ›eÇj)Êæ\jïîÞwö·¶;_}ý]÷µ|âׯº¹^íWü{á°ý_T&¤Ý×›§•!ê쯅Ö=õy{^ÿSÞîFßY²÷uvO{XŽb€UDtìõ•Ò²žS{f=4VA8cÔ©ý§K‹*¦tóiªwöÝ×`ì]Ç„¨ÌÌ(ÃÐ:MÌÛ­:œ]ep©Ì«\#æÛb9P^R(lAÞ^D5 §t„郡A¦Zêÿ>2 1¸„Xà$ÂàMÍ"á–€3ˆ! !À@°˜|1x^ãFL§ur5ÈÆl{Z2èËuÔ]Ü ‚tv)KQü:@Ó"€®6 ¥GÅÆ& Gs!2¹Ð´ÙÈ]q¡ÑŒ`|lF6$‡Al_NLL%“~ª!„ „…¢7ˆ3vޤO‚ÿ¹Æqb­£s 7غ™M4>(V%ôé²oÁo`ù!AÑ‚e ÒÛ-3N çƒèT¡øU+ O:¹Zu ÄC§Ù·Gˆà†ÈIƒ.‰`f.2@EBṫ «- DSŠ3 ã‘X /|NQ3Ã98EpZŒBÑÐ#‘fŽ lp$…€†„ÕÁ‚(ÌxsAu$(’(/¥I0'…ȱî¤O$Þc_êÁLq'#¦bш*¹±?À×2çwB÷Î{í÷|ý';4Û/ww¾ŸP" I¥_lQro<©ÅIáÑy)@E“À÷3ž"74j”B¥Ï©ßÝn»SVûµ¾¹Ývh俣›º³–Ë{×ä¢8Ð.€Î‚L"BX`3d0Émz¶f»†Ê¾‚5ñPž'U ›½ RQ\ Áˆ®hbû ˜£ïý/abE€4¨R.iMܬvâÓÌâhÒNMI=¹ìÑÔ´ÈŒ´Ñ§îܨ}=¾—Û°«Ê}{—7ˆ‚Ð@($”'er"‚ÑÑu) é£ýU”ú+ï‡Æî#:ÙºCæÎ3œ’“{z¹°WF&¡„I*>»§H(C¹OXt/ÞX”¾ŒÖS5g½íœâ¹’Lg„¶‡`‘ŸX¤¸à­3SÚ:¢ÊÆDl°w¥J9ÕùLvWÇëþOÆã¯Â4§¾¶çrä7’/M¨Éª°µcü6!‚Dx بGa!½:S5Ze‚¸X’i4NÈÔ°Á.ÊVè„Á¢1 1Lœ €G¸.:.16a ÄõÀñ ‚Ð00c€!8 j”ø@8SEN8 ðL„(U@5’u“Ù4”<…9óѦ5XØHâ‘}+-üÊË|Ö›‡%ÎþHå1bÿ«Ønkçüþ•}eÏòï2á®tbÙÔ9Œ¦ÌìéÍG*s„á×éýÃ^üî£s»#̽ýe¾¾º¯??2ŸÕײ뭻¯ü¯ïüßœR¨Š2±NÁôPÃäüÙ¹ü•Ï]2ÕŠîA¾iÝYܶ֊úø?:mÚ”]|ªväÜÉvÌ8‹¢ ~fÒÒJ¦ƒÄݤM¤[}2‰¹3 …¤%¦ÆÍµg'ÉCv•yøAµjÓ\¥Q f q]ÁHF"ƒù°°Ù^†Ñ£ÄC0Ì‘ù:¸KÎ;éNî‘óŠš[ZooTƒw2Ë·âÂáÀ/æ,/‰Cë/ÃZƒ¢`{”4ˆÍ$.2!Ê8F-У)´")å°E>;úa–ÈnÐqò¡4¨.¥HW«H¦”Hã*s°qEàÚX4¯z›—ºÒ­ž'â„ë5³b$5˜:-œz¢’„‰ªgl <‚Ð̬r*‹©Túe…eư& ²Ú®Ì^*r„±t¥CƒLR ‘  <'>t0^$‰ — òסÑW—ÃuÃøØCˆ€˜Ù@+h)  ‘¼,—*J L¬€$˜2'>ÉF"Hu›‰')§½Í@Êî«{Ìg¨PÆÅ²ü-d|™2oÒ¼ú…;ݲüþ©Ý×K¶ê÷;e;̯'"%s[w›–5‘’‰ë5t“úµÞó#h…Kœ+úúëëêÚª÷îûê[×Ý[ò©ÿTû«k¿Y¤1J F@êD‘Ð7F¢8~@B]9Äï}w¹ÌQ}œ{U-ú…!ïEv ž`ÜÕ¶kžžŸL£²¿h x¹‚QêãÝ"ȵ“gRñ«Í}M±R…»éæ—%siY-óÔï÷ôòLzý*;ÆÄbì0ð]%)A«˜¨@¡Iaàퟭºû¯ºbK¿9WÛÝÉnÓ*%Q5§ôôoh¾%¡uCyØgjË‘DÀéŠF›~BO‹½%)13£/86X¯Ê(‘‡#Î+27W9ûÑŽš‡’x£ñZÏÍçw_8^Á;ã•õý8~#YÔÛý*õ“³3T¶ˆp y Èz?PÀ„BXA<&DàMvSˆ4CæåIgƒÂãˆL¤7o„+ƒ„tTÈ" ªT.…ÐÚ iƒ+‚ã;%q1Ä̤T~|<8HÇÅŒªD¡áárdƵ<…áèᢥHÝ>ø 8ÉÙ©ë F ºFö1h©KÁY”s ÍîÅ¿ýYÕ`«îªû9ýÿó}NŸW_ÐÌ…×öå\=T&1¿;9~åÜUÛ”®®·]÷~­öÊ͵Xïºüª®ú»Ìçöm;]óëîRî¾»>ÿöKQg …* @{È5È*$?5MOoÒ‰ñ× øÝÔ’sÓ6»„˜¶­ aÜ–N¹IÓ•µ-ë÷Šâ¸zŽÌŒ4=q£gÓ˜èveÕÇ„t ù[d”IšŽÃ€¾\ÛºKíIvKs:äP,So¥ZTM'NƒšÓ‚è¸ø%ÍG©A຤!|‚e,zêíã=œŒ**´Æp˧¤<º&÷$.¿^®'ƒ]E0ÁÜdË'ÅôÌWyÎ'5˜BŽD ¡˜c( 1 jÀ_uµ‡"N?KŸÜ*rÐ…BFLÀœŽùÁÖ›š–O~ %ŽtYI§žÂ…²5paÌ!¦y‘›Ó¢á.±PŸYl'TäAá®4nÓ:* e¡ô(ÓÙ1³FzpñZ :=*ˆ`0lÈdV˜6—Œ†' ‘]ˆÁ\)A>…GAh; .-úô²ÚP†G„ДP‹™9Ñ^kŸœ%X HÉru8w!Cy."ÓˆÍxdŒßN¿ ]Ì"TÛ MJœÃÇ•X¼Ð/™ %Ë–6YRèl¼ç;9Ϻ¾êîëz?|Ù“ÿïþñ EÀ°l]Ÿ(Fá o#<%@á*|TÄ©Œâ±ú¨þþüö?/gg7÷Ó—Ý»¿û.|Û–vüÿ¨}_aŠIÁ)„YPÔø£„j˜¡*:‚‘±8xTjÈ©ÇmêZ¨â€üáÄvFCâA‰‡šü3íø•*n¥ÉXÖP›]”}ouTÑ3T·¼_ÆT‰ÿUËá7þsKòÔ´Ô‚Ÿ¿»½ËZJÓK»i|lE zçc=X‰‚½.UõUu%´ïž‚‘¼s÷7%óç9È¥ôÜh©Š^t0c‚‹ƒ0ÌD#:ÇâeÜr ¢_#yqºƒ9‰å‚AÑ %“çÍÔÙ]²HŽ IŽºu‚’تIä“%ÃÓ=KœNw}fü¼ÖyG-ÚF¹¼út÷þãÚô–iEØ[ä:!y&Þoƒ!Øf ÌÃÈ ªŒX†€”ZN椋k̉ì$¿Ñ©HŽ‚ÈY`‚'žøe¡È`©d  € Ê•Õþ¬r–è½!h“ ލºvȬì¯MÈ,² žøÈêC'Ú _Ô–iæÏ,Le£ Õ'ñ‚Ä™Gœqß®ƒ‘¼¼Êî‡ßÕ}}ýÕUç¾Oº÷¿žú¯÷ÈœüUgjëªßSUÊéäîï5üÓ'ÚÎqŒ¯ì¯®÷çÖJ§mVÊî¯òPéÞÂu—õùOçÕÔ—1²×èQX>h³âœCyÀ}¨¾Ù¸!½$®i¿Ò.eè OHòËúv.c|îO¿¥?ùøÐ¸È´M18œòRTFhS fʪ;(6*KŠ%&ñ”Å”DE™œ¡J'U—MÔõV‚®#…úxõ¡Yhy!d9Yxè^)Në#“ÁÔj¨BÌd’®²ãNÑ5Þmº–Ü×\–yè§tBóÏOqJ4-ØJŠ¢è) „Ä7)Éð›' 2ò€†‰@¡³2¤eN¹}m æí  Jp¡0„ŽH¨@A¿;ãC¦êIe¾¹ë"Í«Š‰ųNQs#Œ¨Îb94«F|­! µi©6ê‰ÁØBÄrÈ/:B8úW I›mIÄá®8g2äap¹QÁ4ŒKP`ƒû…!8 ÀÆÐZµ]Iøáý £`Ü6# ® ¸ÉÝå'& ÂeÉž<8‚±Q+(†L°Ù5É,SÐ(Žc•ËøJÕ&%®Ç,èÔ†˜Ï‹žf—Ÿ7õwïJû¾¿ëk.·?îùûŸÏøz—öQd!üÌ ÿ?•„?çK¿sÐÙCp÷Ï7&Ôî«Êÿï×ósÍsêì×=ýY/|êU/ž|+ÿ)ôŸ ^*¡aj:…€z,¢€è`ë2¨Èà8F¸Ä°dZ©jŠ.EU4 Y7 Ç‹0Õ t×ÖÝÕ¸—qÕ^äèHcª¬E¡¹Â:>¤ÔOÕÍsR¬™ÇÉÝŒ‹ú:ë™ý ¾KÉZ9q¸~^mã°:LˆC#D•{TÈP:dA̬¯·åCÔ·VKN\·§+n÷¥ äH S›@Š¡dz!¶NC (‚ ùKÎaü&¡ƒcŒä 2¦erx½ýjü½íŸlê‘À²< B+d1!lh—P¼‘Ô1Uhoý7)y•¤Þ&¶µ¥Ó:ÝϾ½»H¢+MééškZq‘|, CЕep¬™Š›6ê‡u¥m‘¡‚æÎHã%aBÀ;ÃP‚GWÀkƒL¨f(J€ðjDGÙþWÍDJ(]‚ù¸ü†zÏÙb6W`Œö³¼Ø[F!¼fñ‘ÃÜI˨²«+ Å(„òR†JÜ)\¦ £˜æ;ÿùÙŸ›õýýÿõy™—ïû¿¹~6û©¯3¶õX6†HçuþWåî_f¿\†Ü9tý4‡ã:×þ_ÿÏ%ŽUõV½Ë­Éæ{þçW—_÷¹p̧ÿªif,㸠ð=ÈQÐù¢ =#Ø&EN®e&]‘©"ˆg ÇÒ“u×ÎSS§Õñßç¢qƒhÐ7™ºt…¡NCå⩵x˜H%ŽŬ°Œ¨ÌtÀ¬æAæ™ÉÏ}:A*¨„R3`Éù¯uS€>V¡'50p$Å€è`ÈM$!9ªDD!ˆ Äeí9÷r÷tGv~û]@ÿòæg-ò>u§ª2:T‚'–TÉYu7KBˆK O é8²dlo¡ÎRy?É˹ÔzN‘5Mfb¡ò&²þ-R?&236>$ƒfIÅóélã"J¡p¾"¡ñ‘bZClEÙ™éàªFÌAÃÄÐÞŠÜ –}PÐ![âÊRsB†güÿuͯËãuuÍ{$uÄÕ9IÉ:µÕÒÕ•ëWùFÁ§"³dž€Ñv,!ÒªE­ÅäÙa) áƒ Èb à°2dá±ÃSÚP8lÆÅ¡ø0¢t¨'C óúãiœFCèAÂDžpêÌ)RœBsXˆ|`ee¢qrÆÃ4ª¶VˆûpÅåª+®/9º²é ‹b‰‘\sÝr]ýù¯ý§ý\_ŸœîUÃ~mÕld¢®FùM×rBê/LFö_ÙïœaJ®ÐѵÚQ¢NJóLë4ÏòýÏdi]¦?ü’¶a–Ÿ'³íï—}×äjPWw_8s^ÅÞ½ ŽÌZ… µƒ´”h3¨ˆÄ£X±N |<Ÿ"al §™NU_»w8ª¼‰Žô ¤‚ëÛƒ"«¦Ò‘1°…dÈP'?£´3@cžÿÛÉ­#‘_c—rY›qÇnùÜÉæûáÔü7ÄüP@ë„‘WT­w]Ý;úªºÏËúªªªû¨¤KýJÛ‹*꨸ÙÔï3T·RÎSÎqd»4ÇòpŒ_†õÅÑp£âq:ÏiûÞÛÝ´XC>”V‰2F ¸/D>X¼Š&˾qó½ÿ•ì67EÅ׿VýùòÒaE*5› ½õWÏö¡Ã'žÇ^¼‰ÌDÿÿ'XÂSG¨LE[ƒ¡Àòr8¾>Žƒlƒx¬¼L5¦(C&E÷ÕºÒæ§ŒøzŒ°½l½OîZï‘â7ptħcQ‰Ò˜ ¸‘çlüŽ>†ur©[vNj(#‚FZæ£ÊKe[×ýV÷Óç~øWÞ>ë6í÷FnÃ![Žc¾äPOÑÈÊ-ô÷ª®÷.uïæ½o—vÜ·gÑj íÌwÜ{XÛ¿îÛ¼ãÓâiµŽÓžÝK+û·,˺ý{´å³Tm,žD²Þ?€}ˆyB“Hž“=“ήßÛëïœßõ—wf r2À” ßCR3:3J;âÃħ“Éx¤im /:L?2\†¶¼SRC(6ëÉIFJ.¹È$~óL :ù ÆË<Ó"!&ºg$%eBhÇBªÑ®ï¸tûçØ¥©Žtû')§5KÅÖ…âÛ T‰Ðž›:´Üð¦Fj×òйÀÒBÕØrÊÂCŠÏŠb b°Š\.™š®R„øÉ~\õ9ägƒâ3áœÈƒÁ4¡8¤1 Ãvš&8ÖOSëOƒÇ LªOÌ^å.CÛIz¨ýý+Pº¾å‰´‰Bâ˜^PF1xVn˜³¨Q’ºJ¡lqÅ æƒ ^™ Ýi±ù©zp-Û2 ½#€Î¡é¹P8ÁØ„LÖxU“V D¡ : [¨9»®Q$´GŠÔ¬M"•QøIi ìÌÔT2Ìlj —%=&d0‚f…Çœ‰3F òìԸĄ•3i\é¾9-©W~Òõ-Króî¹#.rsw|ËzûÜÄ“È:ç›6Í‚ ,æE ‰ÞøøÔ,‘ѹ‚S‹?ŽõWTö:¹ËûûÔ®úÙý]ååz9K¶Ž_ÝÂõ[îÎsQüüžòÅw¾îè>·°u°±ÄM…¡9‰á"°Pr­À| ™zÕφM·/1 àÈÊ|jéû³»6ÔEæ±2Ó%ˆ4Y#L6·{Í‹‰ Öæ»¨"ÏZØøT®½ù%íLuƒz›y}¨4/ «ˆÜ“2`†X2“Qío+2ïêäýŽsû§Õ=½Öa¿‚f'ó{0`ƒe⢂§‹-x„ÀöcÚ>^#@“ÞxYT\‘êlát Ë­Ö”Ló™@Ë‘~¹7dÁ¤_áåŽØRÅ”¦n;Ý›Oø¸sz= vŸÿFãϨÖ}_åmT42a²a¹3‘™—§ 74ýÅÔYS¦Æó/TJæ&Œ».{0ƒüd(@m ¦aäH QAcÇó'ý’z[.yø¼…‚xo7-'q:]ò#Ø|zB!¸Ûø¡²•”‰É¨Él”Y¦é*ÆØdÒ>6ƒ¯“ºþ¯ÿ÷ëßïË{þ§ ¿ÉcºëÙz;J¢/Ghæ×Ë·x¨À­äl2£Séýgcß5ÝÅ´/GNܪZ–èün.±ªòÖ¦?.”¥ª=VÕŹnUHcäú¨~wýÏ÷·-¥Ÿ}[ª(B‰ù‹ÄáÐÒqÂîÖÞæO›ZR•Oz»;þ{•úèGÂÀ.iX} †„†Ä¥â ˆ¿ë‘\ Y¼Y(,£b€ø<@^Ñ™åz m£UµmRVŽ’¯:b•ö^qTHõg …¸…;,ŽQ¡öà8bí<×çÿô»*YŽm便ÔúM¦5y哞4d­‘M9ÄáÙ¸L7:ý5ÄARá™[eC± 3:H˜ŠDMtj4ÄèŒGãó}’éÉÇÐ(ávýR$GÉR´l„Ì=@‘`¦ðÚÆåÆ‡f}›sj®J“ÄÕ0é„§Ç*#ôï¬éú·V§_?ïzî«ôg y Áœh>˜gD¹RQD©UÊŠH¢äR(€C/l¼˜%Á[†ÜÓpq”§e GEÀUÈ9 $UÓ°vguÅt†€`¸À3–*$éVÒ4êÛyIÄéÞœˆ¨_5("ˆèø´¨º,“8¯Ü‰Ï¢-¡D@6Jh™´fî»Mýßgm_×Ý?\w8Þg[-í™{My¼GŠÁØ9ôë–Mˆâ&!!HÈ0u¡ò¶Š•q#Ex¾]Ù$ÿʵò%ùpÃ?Š.ÿû;ÿïòó.ï>¿KÛ¼Ï˸sß÷u»ìÊ^Ñóî·ô/s/³>6‚©9xæ®pÒƒ¡>0h8Šá Pà˜YIurúÿ3ÿ-‡Ûéuo:¼ºYÛߎW§[üYZï{ÝÚ#iê¹ÙO+w÷ð«ósß]ì¥ßkÿ+ûH[ûo2öï?ïy†}övwçC㹿ùWïßlî•wûÿóòÿ.·yù‘ûœ–»í‹ûߟ÷v·ãÿòñùýýÏÍþ¼·ý+N{û/òûºßŸ´¯eö}>7wš¾Ãç^ÈgmgoV²÷ÿ~ýø½s÷t‘›Ê ê) |½ˆºTŒÔÉcÊż­ï^W]TŽkÌgôÞ­uÓnû—oS_œ´95ËÜrÌZ7V®×{à¶*¼üçiê¿óTEŒbÝV~«£ü÷oy+ǧÐb1µW7k?~Æ0|=jË«»—ÝÕ¯Ú¾¼Ï¯ïÓcýL¯]çç^~eÖöósïk_ËÛ¿ÿû»ÏÏÏï~_Ý{»îÿ}jÅý ë»ü»ºæsïw÷»ï?7®ûoï¿óúïâ§SúÈ à.§¥sæÈ¸5 s8È5úÂóÿ–^>ÊX?ŸGögí6ãH½yl?;ûŸ MÃÍÁÊ5î_ÍôcÕwÇ+ÿÿûºâô<õ¨€þït(¼Ù´C¨$Ì¿åÇ;/ŸO¯o3U¿ró>úó3ŸO®ßæÝÝßæÿ}ìúÝÝÜ;¿ÿsòò°ß˺fÞ}íßÝü땯CjþÌÏíÝÑ÷·\­)R;ËÖþ¹Ý|øßQý ¬6éßp{°jhí6¨F'Èa6Nÿåáèõ4º»ÿ—þÿn!ø9® Ø*ƒ»ô÷ª†ve½ð­ëÍ“2:†¦rÚ§V®cµïÌÝ¿¹íoº¹=•ÿw¥ØêÈ{«{”õö¾ßß»ûJÑô…ýƒ°s?¶’þßSëñDg >·ùÀ±Ë¿çç}Ýnÿ1ùù»Û™¹{ûý•®]ßÝíçç}:y\»¼ÿͯÊ­ýô*·lk”îî…sé÷~û/»Ýr¿^Î^¸Í2X¤œˆ aJˆ„ÛËì¾ø(\åoúÿçfE tÄc{*ƒ÷Ø´p¥÷ôm»œá»š»s<©•^kCz½ØgßBY>.òþMÇçãŽ)|+‘§Ò}³þ¿Qøÿ¦ä—èÃojÜN`kù>råYýcÕ]Y-¡ÈÁù—yp·ævæ^ú×Zë}yoÌÚR[Û¿ÿwןwÖï÷Js­-h­¹ôË­)[üZ¹ÝÝ%.¥¬õºýw›—Ôîû×¾Úü×¾:×+x÷šï?"bCñøE„^§ÿ¦ÍÌø$\žá#˜Tßó/Ô}ÞÿB2¥*qyâ:£áŠë*Óuî^ì3yGnÃècö«U´ÝæC'ðÙeaœø-»û›¹ÿ7Ñɧ›|£ö0ëæÖ~¸éjÈθuZaZŸOZp,w]Í}þf\)™w}ïÞ}/o­÷vý¼ÿ»Îɾ¿—ùwùÿ8·ŽË+ «ç}Xs÷á_ÊÞfvWér¯W/;söo—Óû'õ™G 2 P…¬ûü—$ƒT'êVþ³§iÓ3TN©Û¯~æUïùCþ׫µì¡Õâ÷rrËÈ}ßUòçztŸU|šËßÝeñÊ×ëù—µ{xß»ó¾»ü¼µ²^§v:õ¾þ›ÛVÏ´‘P3¹ÿ—oÞµºyx¶Ëaï­ßæ[ó+×ùy}}w×¾û¯ou){¯Úí?þî³~cókWôýÝ[öu¼ÛËÿ¼¹]>ÿ.»ùÖÿknýi-³£óPþ‚çŠRÿžÍsÝZ£YUö;¹ÎÚúqìÐû%ŸŸÛpã§¹;Ç÷mÅ뉣<}7ÝŒ•ä}Fn+ÞÊ=¸ÜëïϪ¯‡Óéw®Å÷Jgª›;[¾=ÜZëÌÕÚ,Ó}qÿ\¾ÈgôɆ‘ó談>©ýw|úÖ¾fÿÝ¿ßý»Ûü®å{+ù÷ÿÙoú_[ÿïßÛ—½}ÿÿ°¬=÷ŸÏßÜÙí¾w[õÿßeûúòï¾îîöyÔí¯]-ñÛæŽlíaXr§Kk´|§Ný­Ö*Ñ_÷ô+µý~g¿­·ÎïöŸòÊKîÍì¦lòo¯ßTí[†-W¯–únfÕñv1f‹m~XÜ\é]i÷yZß-ûÇgÚëŸøõ”%*·¯ŽþþýÝâÖ÷×ëU±û(-‹uzÿ¿ÖþŸÖîþïû6÷îï«îÞ^æaßÌ…ÿËóçÕ{ó;ò´­36»¯çÞ]æÝÖ9»y~·Ý÷Ó¥¨J ¨‘ª"·Í„øYmMëXÖž¢þ÷s·â~úg~µ“nªÕaÛ¼–Eì¶¥Ü8YkçUúÐÕÜ¥ûò¶üO§˜Ky3Õj»Zzß§¨´(Â¥r8ýßÈ==­ùQÎþ“ªÚ»ƒ³YøÎg5cñy4L¬ԫy±‡/ÀnBywû™{÷Oü·Þþïæv]ïmÞuïç_ïÝÜ/?3/yw¹œýøÏgß[û}wëwoþuþ_ÞßîeÞg?6þÿo2ÞÖnix²J‡)¹¶u^)„s?{)r/úQ¹wþNî¯Z?ßÿrû…ÑdÐn}[øf]ÇgsÍíëüû mCF^¼7öîÝ̬2ßñ§×û¨¼ç(;³›X©‡g7îkòó/w2 ôrÊù\]Œ»Ì¼¿«ó¯Ÿ·¯Žö^[þß¿ ÷ßßßÝÝÿæ_~msßóÇþþfßü~™ ³öú~[ú½ÿ¾ýÌ–Bk~ffo^]ßæ~_umŒV!UBº—Ÿ ç€Â ‘ÀŒ- MƼíw¿¡Ž[ýÝèwõýs_ 5£×wðZº®ÐUßµÿvYo÷åç]ä>¯¦,¼—?mA"ì$ÿ¯ ó,¤QÉ·LŒöí½~&¸Ñ=oÕMÊÃiãñ÷OGf£CìÄ[÷Vtù™ÖîóÀÜê¾ówòó®à÷íßýævg÷íþV÷ïóþû_¼ê¿!ÛvÿûÌý×òöÆC㛽û®^_íúõ~eß^ÝíæööuæuÝ7Vú)½VT-Š ;€h¨F02…ÍÓ­Fn/ÈÿÿMõ®RáõºýÂo·Ûõúý¾¤iµ¥ÿw-ÿ½‹ds2ñù•ïüúäªù1±Ü¼«ûmZæ–r«ëUÛºO¯ªíÉi\žÖ'V‡7¡ùoË¿|?E™Csà©“ù·xvDÇèå 8CL o/™š gh쾋ó³†x .êßÖ{}ö³æº°ßm®èëîŽÂó—ý{Ø;Ç)Õ¬ƒ³‰5+%î*’~ú€±¼Yyma°†gÌ ’(u!fäv8øû¡œÀ!U - .8 Oh,Üê…F]@»N Ð)&ÓÜœ "瘢 7 %ÀŽ|øBz‡ù'8 Ç #éËÁŠX+õTà-@æÁs ÐØ>5ªyÓ2;wܼYJ&‘ïÁ Å:Öo÷2™ßÓàjß[×[ò–ð™¿_ÏGWä€$äcQzÆö ®eûÀ+ú¬^s'U´HDe:oŸÓcrÛ}% K/]ëùt¦>}ó«4ÊÏÜ­sŸëö½z/«3î+«ë±my±Ë͹¹µ{3_zïqŽ ñØOF<æ3 …6µï@ŸCìæ   `%†C¤êÃ@À pMr»á‚T‚Â|Áx)ðC΀Në+$DX)— ³ v@ 0–Â,Ð[X=8¬þ}qÊ~·;öóu% þ5“’ü¬áÖÅ ÚDh^ÜiÕ³–Ô+iLý1Ò1ŒóȪ•±Ë‘§ˆ5ÏÅkïîØ3÷¶K–2û€ B ‡3—{©b®3¯Òx¶}dýßÚý×þ—ÞÅê©s[+ªÛÛv}‰r·ÒŒ7usO3ÜÛîWZ »‹±=ÉÙõƒ À²c1Z¬-,ZÈï,ùX\ƒ/Æé„åq Ð~™Ÿ“&7€ €³¥ë0‚àC’2¤~ æ¤0V|ŒÐØ´™ÒÐ[ƒ0¡ÔÓ@ÆÑê€hƒ˜À8€Í6[·a8¸îÝUÓa%åTÓ-àM`¶‘ö×ùæEª­ŽCíß¼W´£{gÕ¯K8¶9«r¾Ú¸É`K¼ `E!Ølø:·{ö °Ç*ìH€‡%Á†»O?Bc†"³ÍÖ½¶ó¹e··}‹ÎgëYÃ×Ë6ß^¤sëâY>ñlYÇýdø7’¬nNÝ?k3=¦Ï;)¹V/ZðêÛé²`¸~¬ãŒ°m°p[Èsç\ Ž‚tÀm}Oá½MÖí4r| î Z7R,!}Xé0tÃÜphæÈEž- (ëJŒÑÊ>Sw¦»“¬!Ûçú«ŠG€O=Ò¡3aŽÚÔYÞ¤ky´ï…Ê‘ºÒè×ç$©õ먷Õþ š§¨0hÕ7¹Ë=ž[‚ÝâÀ{èà€¬X Ð p2«'.gŽ]ù>‚ÌK6·<û¾·÷ûß[{·ßp}Ôÿd]ö`¹5N1IÔ‚y!IÁX#ßjHñwû_ÓúÆD²ÿJΣûú‡­ýZŒo(@`` XZ @81)€àô®fÌpœ á !à[Øwe4ÐŒ |Œ€÷!Tð-Q°|Ìð )H@Â#Á”HâP6€ê 6«ù½\ËÉÝaór’ÞCêÁ9 ŒH€ö>›¹ð}T»XÿÜfõúë+8­aï9^1åµ´ÏQ-J ¢€!˜æ/SìuÔm]l÷TØ £]Fí#XT}×6Q׿—ùã}Ð_!´„nûêþÝN¬ç/Îýa›M¢%Ûª¾á‘r™8öi-£Ïß¾•_곈q•·q¸SYØS+ód8T€K‘¥k à.€KD4‚ìÎ/o¼þ‰°Ð£( Fñ]ëD@ `%SŒˆ"ÀP¥Î—øüªD²;!è$'0}0È”FArü@£HKz9úÍëúØ}`Ì•´z­3 à$@$€ƒ0þܸ£ªô«”ºÓŸ[M_{WÏqzG’½º¤|(à°vG‚šËvÅúþÈ1b]„xàZ•¢J¾«¶Õ:u|­ð¥yÚuzP„2èüÊÜkv3¯CÞ¹åó Ϋã%e4úºŒ¤¬à–6 !à·ëü÷· atk§äÏ•-ˆgþBµJ °’&B'Ú§„ÕB|Y‚Œ?>e±bh;3)@ÙàbF8@J€ ‰À^‰¬ ælT  ¨¡ñЀêB `Ì dJˆ¦b0§Àæ:‰ •X.‹ûò3Èî¿hy[•ŸË•ÀÜPø æŽÕòËŸÆ»Z¯Y|~“ù©„q^Bµ£¬Sò“ËÑV5R 5N³ÄsÍæ~«ý«—ɋԡô„ê®jNóKG½Çªë«k|Üc‹[º·Áßé×b²Úõ£ÇÏJ£²£E òÇ(˜’"ÎÀ4¾!‚ Þv\Ö©È3õJEºeêûï÷þmÖ‡U œ c€`ö-ˆœÍbñX€@ÁV[”üÿç-‚ë„H/À‘{PYÔÞª˜Axù\ÕP`Èá(ba#êÖ ÐȘ:“l€á"0²PCØïAhúö³w&«hÓ×ÞéÜj¸wÈIòôߺV·×-{¦µugSÊö¾«ÍϹ\eTÈÇÐ7¬Ï£N àð$%q„+¹¯Ïk4@ôèá"Nun“ç×å•YŒÆæ÷ö9ÏÕ•=x2Ú¾^«Cuó†ÿÓ_ŸYÿôÜÍDΪS€ôÊîÒ°jú ãÀŠjèVïÜj­uìwÚëƒàý {Þ»ÝNJ¨>ø °pˆ°N=*s€!lÁ°" Å…`Cü¨Ö@Z¢;àXÃyÃ"•‹OLÉ3…ÇVb'+ØŽ«€‡@€”Î@ç SW&ÒI g4vìÍÃ)´­ÜçÀ7ë_AäXèÕ;}÷k.ÝÃ+’WÏÝ£~ïthßK;ëX"<û ¥š„üÔ `qLúýV>7¯Xr ž/r9Å^ýräÒGS±7? µ=m§Ã”¡C±}_Ë-ÒÖkßnÿ6yÓÊ¡Šª*™=Z¥Þ(†2€këßOйw;FÖço]JmÒW=s®ò¹k8Ì€¯¸ Àà(€ ë2ˆÞ³hI€Äü˜ë¾È>Æ ÍÀÄ!B>Ï£ãÔE{#a0䄨âiÔ++ `‘xAl²-LÝeÖ¶LVüä4,¼ÅÖª*›³%¯Ùù¸÷q»ÆM$‚K¹ôkפu¼sïë_Ü?˜üYrFHGI0Õ[ŠŽ¾ZˆÝHa àL§À²¡ Xw7ÑôÛÉÙðjî¶ÆF”‹òEîÂÛ¸5}Óá~ÕG%¯uWå#ÿŽÅÊÆp|ÒÎÎ^l\lA `j’‹8wΩ­Ï,Õìòë‹s»¼Ü:ñz½u²€r!A°°°,z¸à. ÀÓL€±.ѹü*t @ ƒdÐ7BÂ,Ñ5–­Üa˜äW^p—¢sW¨°WP 0$ÀBUùëiiöff˜•Y²"óÅ„mË vçªXvš~Áï£J]Eë]ÕŽ“ý÷ù·®ÞÒ\¿VÖª…¤Ý#52z5bJÄP Ñz ?Äáè kœoæªö~Ï©JPÐ$¯Yh/]o>ÙŒ9+Ja >ëE÷ë=@¸º´VuwbÜN·”r“ø|Ü[ϲþ‰¹õMÿ7ã²uâ…1K4L-_ìØùÇsqÛa\Ïo),ú;~¤ñZà=@Læ-Ås¾u@M€ö¥èëÿº«ƒP=˜€5Ƚ>¬ïLeó<çç´å*Oº1(ÆjŠØø©£xê¡‚a¶šÍÓhGjœ[=ÍAŒoMÈ” ¬ëÔžÔO<Êuü~]ï¾ ¡Ô+¯¨+*cQÙ‰ÕŽ± Š!%a¹0øÈ}jEÛý‡*ìA?gD£ÒèBÏ·ôù7JR½oeßîõiþ¼ZÝô/ííkÕêÒzâ·*γ´§*¡áXÎ褱;·:Z/èî_Ãó%>È\ÊÈAƒáÖoh!Fà¦òT eah@2G”à;/<]¾¨eêÈ ÒÀø½óÞMNšg&ëa`~\ p "At@p!ÀÐÀ ÏE¡RŸeÄRÝJ7wÞV®W©[Ÿ÷Fé–xñÕXívݽÕ׫ë›ÐùSó×äêN›q´×a($µ@w:\àÓ Áé yá^Hìû…?uib¿jqšÇÈCªî”·Âwîw=¹¹pqlm÷‹ãs¥ÊÞôOLûr|nÙOw¨ùöõççÜÌ1Ù¸+ÉGôM°iˆÏÚ¼»Z’Õ³ïc»½\®Ÿ×ä ñB(E®;Ädê’|TÐxîývUŸ<Œ"tìtL”»ÿX/óæVaPð#p)áÀ€ ÝeÚRLL?hÀ àWÈp <„³²}Ò;»:AÜ~íÓ•UR{:¥˜êë4îA¨Eè±Åífìùå*þR‰@´}§kÔã*H °ä¤J ª”A¥n5{_iG*ÀÄäˆ!ïݽíªüÞBsz¹E¯þVþtòÛ5£ÌY.™(´}5¸…ýwô¢¸_³ÏºbœT.› ž ‡…0?Ì[uÚÇ®~}îOó­ù-þ¦¨£'´ èôÄe¬´c` é×/ÿ­ùpeüæÍ™÷gËÏÿB_“ÉJ€ÑÐ ¬´ZÂY@-LíÁ0`>nj' ª¤ÖÔ|Ö¬>³õ«Ï”¡ý¿J䕽éâáÖwVv*2Wìiå ÂªR·-uŸ‘ÒE–äIs®°& GC¸E±Ùÿ‚„êøã *tö›ËœE§Õ µv+Ò¹’þΟóûÏ|.|½cI9Hæ°óµÎL1B4HX*Gºù?&çO)çiëý+X¶ÀÀ@€ØÆ5ÆžÍo6ÿžö^eæg¾›íÑ óQÈP'@ð+@ŽËCpà18` ¹§ZpÖøÖ‘Nƒ¶Å!<êÒª–´lâ¹hð( Pè†M"z–ë.èþƒóc#C™Öœ‹søÛ™•b·;)ïø¶øû ¨jã&!å$_*⇘âm3<]¤óyªdm’¦(+¼Ú¬GSBsP]Ø>Fdâkå@N@" Ä>PùèÂñ© ;H&,ln<èRTlhf¬O(!K Ê‹kjÇ"逢¨Âµ­i·”¤ —e ¹ÔhmÛÞ¶gC8¥t+1Ö]µ®©ª¨xÿ§4ëžW9îû3ù̉ÆÊ‚n¼Á…¦l“eDwNBê‡!.Ôj Ú d¡p¼è E ¶Ø®•zŸDd„†<2 TÈP¼±èNƒž-¨X<¸Ôƒ˜6?0¸úFÅA|nBØèØŒb<83?ô •Ñ£ÒŒ‰!‘GêЋպíÛ_ß?ÿ ÿæßkƒlV:˜*›Š£±x˜/t¼d- Æë‘IËO˜°2mQ¥ ÄQ=Mb+èæŽI[Ì6 à  n dP ¡Fê‘”†æŒ1X¬ A$æ!Ad¼èÐðŽNXˆ œ}Uj¶Ž¹t:†Èa4?¦ Ê4êÛS0©É¸} ˜ƒA8¦d–îHŽN'ݘB·fA’šc«­¹IMTò×~qãñ~טƒ_àjk{÷H»Sú@ 3b))æG«mH‡Á„DDj½ûŸGnÝ_§×ÝïúwûW[¹Õõ}KÏ­#ýÁoºú ý§¤øueÎu}7Òª:œÝOOÓ©r‚ÇIJØ*ÆàŒ á hPÑpDaêq”kêÚYòµ°ñÐ(Ó˜²‹æV`Ã90˜Z6$B{!Z¾.Ù’îò{SFÕâO©!½›U\¶¯}cµÃÖš/]gíþÛ‹NKV1û½®=µà·V7MÍ·åþuæþþÚÜü§Ã—Úé¡!Œ$¢ÔyÄ °Ö­¸¡†–iˆFx?… IOÿ®}Ú0¯]¯ý9EW){L¨6yÉÊb‡–rB^ÖN9Ã’g J ÚOS%ÍÛ7yŠÄ:®h_¤§VzðßÞ÷ý×ÿ¯?¯³/j€Ø†¹rù ÂHùDQaà¿ g„y"òJt\¢È•ŒÃ«£|®ê¾Ýº³ÌÀÔ¤`âL ƒ"q€á.Æ: Ê ñµ‘¶É¶•uiRLuC¿K%è¬òv‹ ЧE°å®:»¬RÊ›ž4¥1éhz,/XòÛ&Uy»Í=DÕÛ“?aCÜÎæpþö=‘½PéçŽ FÉKWu¯wÜXÝ™)$VQ„ÖKd˜KÄÜKÄüSdš– <–„¾Q¤ö‘é5¥´V‹ÑZCÈjƒQZ.C¨x–I4—ZG¡Ã¶zÙz× …¿_r]DH1 p¬TåbÐtª)ksŸ»r¥s¯ÿ»îLVÅ‘Ò g&î‘á`ØCjAH¼‡O.&dìIžN‹1;âŒnÓg ý]Õl ijºÄIÞ†Z¾SÒåúÕwèý=Uà½\Í„ –•ÜY‡×ââÞÅ;V¦,Íÿ=2Óú# ñ¢äâÛmȈå¶a)MM«Êª 2&–‚è?àzhš!è)ÒŠ© m…ccCSÆPLhº­‘i„úeçØ¡a©X‘‡Èå„äç(è‹BÑ«IÈyK3^µ¬tñ°À†•ŸpŒtÕjí/ëyu¼¿üþ¿¶ý(wñ‘ "88™ù:†pÜbÈ%€]@. C²wŠaj­Ý8Ê>—:-7gœHG#^lV$ƒ0O(-7ìawÃO¯ éóÕj—öT®»Ä´É žÐíS/)X:“°TÀ .¦"(4©Ê•è¼ãï¦_UøÃ© P -;r‹\±©Òš¡™=K|¯½„=,ÏY¹–4W!„5mãµEk­œvO[zߪÏÂýíú|/aL½¸z÷_ûŸÛßÁï¢ÞµÆ°ïf‰äñ5Bd¨æÔú|UŽýnéëârõc5‚è²Äyd¤Lrì/69µYÓ±‚ÔŠ›¹¶¾§‰åYF­iÐ`G$‰&"ŒWj"àÈ7¶fÑÆ¦ª¿j*ý<i ñÍ\Š“¯|7~ï.ŸŸÿÿ[¾®A0WRE. ¼È82§ñ(*0 ¬&L†*ŽE†u©r ]Pq5¦÷_ý[¹í¬; ÒdM'Ñ.YÕîv-DÙ’9ê¦gŸ¼S%Ü£kbŸEfEÑEȎñó}Õ{©ö]m¹¨‘ª?9…ëíÕ¶Õ²»›pèÚØv§ôï¡ä¸ƒPò+Iè¼—Êê[£ލ!@m£7…Ãq8dV¹š'g.º«º‘c¸…Ò‡–Y= t›I ŠÒâ?Eh4þ³hh‹ÐòKG„–Iä¼O¥6MdÚKÄIhñb:$y&£ä^†Ïú?gðî³ç}祆ËT„LQ AMp®Wèù}n¿^ý®ûµ€xJ†YW F`ŸØOò£á2'“·R3¨ Êôu#¤á"‰fB ¤àºÂìÉ4¼nZ8J2òFÈÔEk/T»ZâÊ+eÎϧ6u%»7^• ”òœ‰’]£§Ô6 R/P¡ÂåTÎ)h÷CÇ'`hÄ‚Peˆ*̘*,t]ñÖ &¤#qųñJxF™l71úïç¦êò‹m0Ôáh'Ä¡,ËÕœ Pd¤¡[¨ Ì"Ÿ _ˆ5y)Ò”Gj`ËofÁçY¦\-Š„!„ÌNbâÏš±a ø@ ® %—7K’$éÈ‹e ~N¥tÅY,ÜéþX‹ALxW|w¡†žõ\NŒ!ØJÇä¤UjAÉuÐÈ<©¨#ØW¾ ô$Â'ݵh]Ýå}u ŸIçK‚»®Q-UñW)™ÿ§Œ®8pö4/c§7‚ß)ätWAêÖêkZ¯4ò)¡Ì™þâZÍÓù ‚RòÂJD3,PfHâÂeQBÇŇËkß§×] «sg\¶á‰yœg\÷'#„^PsU.Ü%,¶M„–ƈ ³ïŪÅNã.¢š_>{zàú1ÑŒî•ë}±·5Þ÷½ÇëßpÚ>çÇ?jû[˜¶qŠã'+šLæjy߯÷þoÂoX˜äu!ÐÆD âп3«Féä4}1ZÖ¨½ÒJ#ŠDòõE«‹ønñ|Ÿ‡š”y‚[)©ãªÑ -².8?“K¨³6Hž?±w׊§ÃÍ· Sôÿïÿþï+´úßägF«ˆ63#„pB ÄñÀ`AˆF£• a8#ñ‰ˆˆ‹‹RŽ:çZë°›²…zûx>+:G Cúœ­ë¬´×ûaת³Šj}W ö;ócÈtZ5|Ëvð¬Ø·ÐÉ …Ï#U¥"r˜ÕMe|Û½×õ[PýOPûÐyþaìk5;ŒùëE‰xž¥>U…³Ô•rÕŠÞWdì’I È6(àê%…ôh`Ò¹c°Å/5ØÞEç¹ÒùEIfQåZKÄ« zðÇ×%³þ»½ûªõ;T<ŠÑòG¡ÃÐZÏÙú"´X’Hâ~Ýümˆ¾Ù’3p†RŒ%‘/×ü+•¾…kÙoÊü§úP×-„)JŠÁ† ÀäœF õ!r²ó–Xú¢‰a0Œ,‡$IéÏ,ØèKW† «+/øÕÊY´„ºÁÆ[á“P¦½ñê>°£é× ’Kc‡•$39#°¨åÕU¯|ö®Í'¨`K@bX`¼€%€/‚ Ù“SÍRšжA#ª´ŠJÙX¢dGDó­,Ēлº°^ÈigxÇ/,qÃG›ªî‹è*Yª#’ÌT¬(üþqdˆY‡…ÅÅÖo>¿ùÿשׂwÙÑ6°gËGCÂÈN€<„Ù :ÐDŽHˆˆ‰ÁÀÄÚ#C‚ôÅEôÈå/5Ïû­×ûôÒ\.°¦ldšJWRê¶U²²’s¢A˜  õÑ3'¢³ƒì=´Ëÿ!T±ÚNÇ5ŽÊƒÉ9‹L¨çÑP¶AÅ1é£]› Q1Õõ0<`ŒMù424>ÙS«Ð¯+‚÷Ñã(óÆYº]üþ"™1åƧè°Êé"·V™C© ¢à”(ºG 26,ä1 y üÔ;y¥8ÔFžåGU§Ž+’Hú¸«@Ú‰­BO‚Í0^ʘˆO¦š>¨ÕÝaŨ{i„×J“OU½S-9ZAŠ+Á’Æì.J‰' u P gNkEØ’÷µÿn±È\{×ÖvtÝYJy»3Õ?±y8j¤Xu„ñ/dYh 'GgJì˜t¥0†¨AÒƒèã°û»ÞÅ¢éé’Mê]öEõ~Ýr°ÌÝèvÉŸ=#°f‘Ygq¢Ø·äwÖ¢JÐtr(@CØ©!j³:?'QŽÎ ,‹U^G\„âäAlÜ/QðÏÆž5Â÷á:j¦…S¯Cç]Ôì˜I7'F^\ºjª½ûxÿ‡ÖŸÙ“+ŠAJOndŠêl- GÉÃG†PâÅÚÅ“€i…"Âàtl‰wÏîî®u×ÿ¯× C†&25N®T¹?Ö÷í¬åÛ¦‰WÜI:»ò‹¸¢VíaêÛ›ôšIJ"™e«º •¬ÁJyJŽÓ!,¾_ÉÚ/˜‡@þ"ø%ÄK¤ôœIäžKi4õ¯{fqé»dŤª'¥’¤z.Ùñ6†ÁU[«¹LûguŽ=l®wÙôZ†ÐbIÄÖVò§“zX3ìÞ§UQ»Ù¡?qUŒ*4òÜJË>ÆÁ÷·™ÏÅú=^NéÚáîAR/ŠA‰V;>>ÍV̇_eoîîîïžú°ÁM²ÀNÕ2°_+b±i¢ˆ¡Z…#²²ÐÂXÔ‘ðîH !Ä[EÁD~T?v×@Dh€‰.%b gNd雦*иöD±8 Fy™¨¨lFx™rp×:ÄØGòŽ8/Hññb@vY£`ö „hLjCN¢Tð0?m6Á¸t^ŒL* Ãpy @î&Q±\€Ø‚*‘‚?0˜…) TW‰dPV»/%>èaÐ%6m‡%ɉ¨Ò¨ Ä@æf µf8 ®fêÂm2uÅfU šß8P;Ý=â«P0&¤ MP ¡•ÎÎÒ”§:óÈÆÅvC`¼ÐÖGÉ8”µjÏÕy4ÛÁ"bTffîY îÿ3†×r°Q€hÁ À½ä«ÚmÊÉ=Š©BÀŒ Ä #c°'Û²2‡ÝcüvJÊìºÿh7‚`].0”¬ÐÁ‚Q àÊ!x6À fJIÀOŒ†$£„‚!±¸3ÍÅ3a IŒÈŽ7R›»ëÍ †Œ>>쑊`HGJ˜SÆmÁÅ.RnT"º©ƒàmô æ*Èc€/gê«ìJ÷å5ïmŽ®øÙ—u$Ù€s4*ZQ%/BÈŠ€f” ô%K¢v¯©T¥I0(ÛLé•÷/•HÑ ‡RbЧ7^1èFKI˨Ã>Mªb+¦TÙä‹z­ÎCÇ@: ŒêÃ3?lÛʸ³\å›= =ïý=Bœ2# ‹! ‘–ÐñsNÓs3O:&ªI\2X¢(27gq>úI EÛZïdz¿2ï_±¡Ù“Ì_ƒ +¢Cé'‰gD¦¥6\èdžZ7èYЮ ÀCƒ¢]ŠV½¸:qyaœÌ¬z€z¤æ ‘Èc$ÃEÄ$Âv‰kŠ‚9 Ï Ÿb¯i•3aB%Ïr=qŒÈ§ˆ4ªnM§<ŸÎ|×L,‹é§OúS)ÙŸ}Å΃d2ü!L;;c‰Á2• PÑs`è‰ãad5 Ârðº¨wwÙ}¹ýœûθ¨ÈE Dƒèèf\S(¿ßa¯î…)õ$ë’dgIk®×>LU5-Qå5YËy1=· ׺?±­þ‡:ÁçP`ÅHÖÆÜ!¦â ðëFžVÉóÜÿ|½Ýv“¹cx®Ÿ$”@ôpe†%Šùwº¾3o²€æ¥¥Zn&‘\`êc¼ÔO=Fbýܺ¾‘³¼†§ª~¤µ%¡&Þ;‡°þ¡.“ák…¾WR¥ÆV_ƒ+²X¥ÔKÉ,“ÑÚGhq3‹[3CBµBN èPyÖ /qÙ¿³³²¹÷ýßû\>‰;1–ªRhJ Ú8 :ƒ§ÒŽ£„€ÂÉR¡ñ° 5£ ¤0®-¤ qºð´t…âŠÈ`(lr q¤êÈ䡱°áÃæÅf¥ÊÎÛéÇ×aÕñ‰Ò90 –88ÏP56ª²œÙÀu¹Ô}ÝÿS‡YYXqÁ°Ô02±ò‚qá ÕQ ‚F(D5Cã´è¤’GEW´TnB9bx ìûXÐVx9Jƒæ¦ròJM#&ˆÅ Å5ð\‰‹ß3zØd»‡Ô’:1äUå.³îl¹ß:˜%Å9…*{±Ù‹óÓV@=«±TÉ£Db~ˆ‹Ç ½Ý»¿·¿²þ¿ßÿØ •°.A7…QxrZ¶ª‹Ï©T'Çñ9'FIg´þ+u~œcnUd ­ö¯ògE1tÁ! ùÉÝ™Êã´"Êäz:”ò´B`ñ`ÆuÁx"KT$'ŒŒ„1]Šg[“æ¢òÎ>ñ;úÝz¦F(\:/D|ñ3(õ;.s·8Vø§+`VÀ¤#H€â6<Ó”Sj¿-ÕÈcŸW‹qC®Ùlœhdq‚¶®…{§†äŽ#úPÀ‰×ƒŽj ¸fÂ=[Û ß¸'mØUhêaº¯V3œ*WG½#/F(áÔbÍ„dEñ{£Æœt¨³#¤l®XaAàzf‘A–"q®_âõSZ ö5 ŽXæÄwU«9"( œá(ØŒ¿L—(>s%/ ª¡©ú\©2€Þ˜U6>-|‡&Ƀ⼲"¼Må~'j(]ˆ %<¨f^„!p€A%Å´$b%B”¤L<7fâò8¤GÓdtœøcÜÈ­ÄÉ#ÊÆG8l@VféÖNXóäŒ[GÖ& Á¾”E¬„L2ÈñùDM:4±t+…¡i¢hmÞïßõÿïþ+ïä`îaÐ]ü  ¼ô•@Zö挔Œ1 A˜9†Š`ÍÒ•Tì6ªÎÕúð[@* ~h;2\‚c3š( 9Т‘Hd8„RA¤[ W1H]D­»%‚tULEƒ ™˜» 9ný9ÿvM©NŠÇÆ CâsË(G«›§¶­Òš}H:up,^ƒA‹œ,$ù@„H(’ dÕɪ>ŽÚ.¥›?õm‹åá…Æ“4®@îº4 ¤+JY'E5Ê‚md¯ ',ЧN3Ih;z眜nd+\3g‘›¢‹DåcgLºŠ‚Ÿš:ím„K»Üâ…p¨•Ŭ¥.¿Ý¾Ý¼Ý}Å\ëJÄ÷ùV°Í­ceFÕ!y~%@åÏÎ8#,#óŠÌ¦clA¨Ù•ɸԑ’i“r$øÃrßšµOT¢¢ý*H½`ó¾}ìÛìì‘x½Á¢×+:‘改 >â3Цœ”}u*×L]Âý&\–ë6uD’žaˆÇ:PÆ ¤‚ù%(Z’=b¼::˜š¬t°Ûò¼tñLj8Xiƒ)Žª7@Y‡ÑW‚‹UnÓ°¸±ÂuA¬d^Pp!>(š×þ;®¢lØå»85F* a6ÑÍŸRÿÊç_Ýs//­æã€D‰Cj„Ìj˜U œ:sµsÕ.káàf y*˜ç¤YŠS±ÃÑ{ݼӟ‰ò©ËÚ–Ö:²²ÓÈÍÆšZ°Ý8‚tAp,LPÀÂrÒ †£ÒR%©““ÊfUÿß}ùûF1+E8M‰WGäÍ¢(s¨Õö|(Š©q'’Ôšh68ÓdgÉET8‹,¼6ß«m î+z·©µXìζTéwŒl_eK“é<†« ‹g©*¡°pðqð¶ñ;ë Ú&Ô+« ë¯ ‹ PàÒ#’ùø=#Ç$ıÝG®›´×9²úR[ìÿìï8ªê¾5]1¬ÈoóÓè‡0ÂÁLÜH9¶%¡eaF¤D8>*X¤A>ˆ!`Y:G«EãaLJ+‹¦ÕlÍæ¬ Þo‚^Aél³âòáÁÌÎ Ì Y¶;?Vf‡$ÂñŒ†¥ÞZ‡$¬•Mª:yB3:É3Þ}ì3)%\*U¡pU¹qG™Ñ ®ƒÒc pef̾àCÏÄN!…º®^yÆJXx±æ˜GÆa8|à‘Qx€lJ‰H „)Šƒ`ƒ2-RWVˆ5²Ü¡¡Í%ÆëZrTæ§©Äu’d!Üg‘0|VÓQHI‡3@™|•Æm¼Ý¹2†…Ãn7Œ^2Šç·öß÷÷›{w÷{oÌH Ä !L \‚,)…pÂ3HÊ}š‡“ âñf$E3 P$ŽI[¨YãÎ^þÝ ±Á¨¶lhò<ÍMmµ7âr“=›:¬3$p^ËD !Ó…C•a \Èã×›4jV§”»  ëäžN»h‡ ]F"™Ñü1³cîR“¢/n#–°( UbmVdpH¡0•;²,—T¢{DU„ò×åX»Ó]ù¦ÛØyâLÕx•p<1:}œd­š#q”(”" À Vö?Ϩ'-žíu@'ÎY#YªDÀô˜•8ŠÓ ¥BPˆ[a1ÈQ329uZ‰9®躷|–Æ$ö¡‰äjk33òwïÿ™{ˆ0™²{Hw…ó6Œú àl¹§–äå¾LQã4F|£͵Ó=Õ;&iWnu‹Fø–e>Á×÷æß?¹‘Z7×;ÖªßÈæQóª† r^¯y¥LìÇnxïC—‰º¹Õ§«Š¾Ö™¡Ø w™Shqc¬¸Mk ­î„HÁúéÈ´ƒº^œ@˜Ž„J2 \ D‰ùì,Pñ3D¨ˆ²”ÒRŠrêgµ2Qû•²h—Ç# Ø8/_`vÞíϵo•IäS˜Ä5 pøéÆææ~f}Ã=û›¾Ñy±Ãàú¨$ø!ƒ°3—Äô/¢®&(Gºxe$ß‹‘$bÛ:•Çyæ¶HdÃOU³râÞ¯äQ5Öˆô"ÓáPê. ÍÔd—u~?dÒ,ÒIi‹Qñøž©4Š<žÊüg@ý“èÔÜçßADVÐÞ£{/ÁµQ“`!B¨gLÊTzÊÌÕ‹AÈlÿÅã›{•jѬQê²U<Ñ= ü§:¥sy»‡>¦”Ê*B¨²AdŠSÀAÔ5À °4! +ä4¤ hƒ÷ˆ¸!#E,^É¢DêH%*­V7}óŸ]2™JÖ½ÄÊÍÛ7:y lÉ@#°&`}ƒ%:À0E°S´‘’"Á0-ÅøMG“"0NR&¤ “lz)›*:Ah¤æ€ƒ¾íe)r6‚óeHÏ!7!ƒ¹6•P".º]¢!pE ƒ1b´ä#S~m±\ØxfêÍ&=ëXNBMp$+X¹œ3LãØî ÖªÂLà6‡Ðb°æ`41VŒå…^âä…€ß Hè` èˆèøÅ¡d¨äX8 æáRabiñ Ð3‰æÓ|¸ÇOø8¢ ‚ã`E7#9Ì•(­ø#‚!ȤnD RÉ–`‰‘HÐB‰áiÓr’s£Õ'Î(£¾¨–%嘙ÆÔ´=Žƒ8¼t†¯ü¾°¯ýUõþQßâ!‚7ÓP{ OŠÆ\‚„š–ê ªM‹‰8Ä3 C0¨?†£ a:@Rp\0B#é0_‹AÈÀ&ÍE£  Ò¸M›šBè"ZÞ8l|üFÄ£°hˆ‚‚ó è-$1\ˆÉ›Nšiê ¥&2 &“p§%UÊBôbA(†L¬¢\<8!‚‰ÉU&#:"2^x.¢N]ëUVAh<½U%6›UW]GWyõwœœ¹5% œ­}ͼ ï>%ÕµÖÐÚ±æ âHŒ¨¬,“€@J:d»~ÑùíÅ1M"‡qøL+!« æ¦áÜÐWã–Î ¹JXZPÁ2†Å/b6yEÈ®ôk!`²EýŸ9B¨âOWûœ0È¥’ÙŒ|m)ƒ­UyliõMTçËG‚A8ÅäÇäÉŸÍ^B˜ß+‹M×+žýƒGüÜc¤¾–+²³þí÷7¸KR›ÊbÕ|ã.µZo‰ÝW×H¸Âóª)¥â‰YJÅs)%C¨§¬°­’¹ra…k™TPHÄq‡ÁeÝ" „”Q2p„wÉ tôÜ#—Š”U˜z”ãr0i#¢€Ñ0{ÐÊJ’¢@î9.èêØÌ²˜ºÓ¸¤˜|%ˆ@Î ÆjAðŠg,áçÕµKÑùå žÛ³N±2"³Ñ6Ýÿí»ËÌÝ}71bÕBÎŒ<Á|ê`Ì&˜Ìû°qcóÄGxF‚¸¶=Xzð£'ÍGÃÎO4 ¡70r-,óZ°pɇÚ`âB¯.Œ˜×8¤ê¶×v—ŸÂH«Ð?ÑÇ0Pqƒ øa‡–Äh H`˜^grtì’ò&ÞÆ´è‹‚ Eä©A0ÀiËçc™¡è/Çpí±‡u¶r7Wý7?iÒÕoQj±É5ªðãTiÍðâdEÍ“«éi Á•k»î”,†E ³2wz…}V²ºEKì‡fi¹FIý\­X¾ë­öÓ9è’Š8$`†œ]1ÖÍÙ‚49›„'(D¡ˆ9‘ 3YÃ[(«Õ÷7±g·šÞé³þK“ë ˆüŠNl6šIläÅTNʈD© dD:¬K‘Ÿƒ‚0YãRÔ‹BóBv“ºig—¥Þ¬µ#¯¤9š¥C]ŠÊ½"œVÑÍ1ÞŒž®dÆ]H—¢ó3ê/÷¿fÂuÔ>jÝ>€~#DPFä; y EˆGô#½8f£«ãÙ«Ñ–Ñz,gW{×sU串Ø+…ó€Fº²±¤ìÕ›1ÔJÑr¦WXÝ lˆUi¹_v^]Þ{ÿv>´ä„:Ä6›pAôf%ÊBmú¾/ǧ‡]Xá‚+$ 2`x|[X>ÈU y%VEpœÑ_>Y5gR4¹ÊЬßÕßÿ¢¬¥§ÕtWÇ/•cT¯I1 Ð2&þ ¬†Þ^3daã,¬S!¿’ÄÑ;KV_+¬jzi9BªB†Kxú<¼y†›ÉUwš‡¯‹Î:³ØµžÍ«c6sÖÞß«õokÖž¯šó*œNnV:ë,±ÙVÑÉÞv1,©=EôF}Ž^Ë¡.[¦ÉÉÒ2fj*¥ÊO[Yÿß}Ÿ}ÈL˜­Õ|-Pˆ˜vn(Ù8hpð‹X+ )<(bÛn‘M…ÔÄ(¹)PŒR&nh6©5BâÁ@ÕNmÙ–^Bl¢eMÝ¿¨öŠ‚À€™|PG b)ôãõjÊ‚øad¨È`¦uNÁ<ŽE“dfôÃWTqÌI1…dƒBRìWdl©õù–ÓÅädM‡ä1³˜¨Ah9… `• p(AÀ:ÄNà€C´Ö–“cÐdР72­xY­­R knM<çÁ0ÂBDÅ!d@¯ôɤü¥Hû~!Q¥fŠÌÓ¼ÜÑá^Ö’yýkàrnºCDæU=kž¬Ê ›10Ån8Až€p }\Qy•Ý}ÚØ£ß`ƒ*3æn¨rƒá¨¤2 (‹«Eå.§ ¾|ð‘)aœr'ƒ!ccrª¡@ÂAÈÜ] ¢ˆ¸`C1¶Ã¦ýÓƒFËR2¡³… ð¹Ø™0šQ MyÈ)Û:ˆ ‰``À8èi…#pL˜ ‰‡'$WxÝD¢‚UŒZ7T­S\Kç`lºTÄ…¤‰EåQÊÚ*ljG"œc!PÀxáÏt^õâΑ Åzu}¡<Ü«­ýiÈé>6·ïŘ‘!ÚÓ¥ŠÈ…áŒf\2’ÅÕNç²ÊêÕŠNHd1XÜG’‰¿ÂX9ŠéÈFÁùˆý]É2jŒ—¯GF>Ÿ$öqð@È”pR…¡œl± …) úÆš£ÞÕ¼ÊS:µ}õ¿2Z­êŸY9™ŽMÇ ^¡þ< éÿÌ…^ì³·®˜½gq)3xfŒ¢ ¥”?Öµ¢u[UhjJ¬”úC‡Y¼­» |Üß½Ú$óbÁR„N5W"Qn$^Éȃ꺱ºT©íþˆäI3JU] ®< ¯Ž¯wR2:Fd‹Æ®«çj™b.‘–9i6›ÄÏL,ÒdV¨9¬åoTÅaÑYOQ/“æ/'«An¨Vä²A˜Æ+ùã¸þ[”“À‡Gj“ñ ¯ÿzç­Ùu37î÷ß&dW&dØ,¼8"#¤ˆØ;É"ËŠòÆìÂz.§Faf~GB+6°s¶¡¿v,´ç~/ìÉ ¤ô+Yˆ0}Zêàß5ŽT.£hILS‚+ÃAh^ðyP4hEÁ ‚4ÄE†)$Jpɲ©I»¤¡‹Un=H³Xvþ ¥¡ð„?‰ÁÉãQ{(üüCH¬eÒk§ùHÍüµw#kbÏ…^øÝìü¼×þ×;¨ùA¼‚‡ÚÓgÎÄëHWYÉh“S Š£±Bë6½V„¦¯ëŽZš»ìÑ }"ǽŸö/ÿ;+•Ç|ÞqT{ÅÓ4*™î—8iŽCèh›œ¤qÆÖ™Úì’@©]ßIÃRrØ—FÓ³gí5%õÅ—_ÖÏúo¶/:„òI¡„Œlµ¸ â62Ffª4\tï,r03XÚ*Pµ3Ó=›©1hGäÉÀH¸K¢< zÈ"šqr¨æ-IÓ*b€… Ãá¤J `¦ @ØAYvY•Šƒ¢B9…Tü¦BT´È5Z&þùžd¸ñy™ryìÓòòŽ z܆ӶXªj‹T•œ5@Æ3cbh²4@åHÞ)E Mµæáý“î‡àïcå«­Vå6·©Ú¯ðç¿:ÇQÛy°SÑ–Ú…Óªu!Xø«JÅ¥“š1ë‡Ô(’„¼úÔ¶ÚkVjd˜µF¸!•)(¶T˜êr§¡*€þ¨í‘[CæèÂÐÙ-˜L|4#˜› ‡¶¨¬àêfÕ Â.@ÞM;ójguÅ0‚*YaPè™á.°´À¥")á“&‚óÌÖNyÄ×¶ÃºË "]s‘D˜lõšÔÎ…ìáZâßø¼-nµ»˜T|˜¦¥Cec"ñ¨‹Ûa²ˆ±pȵ×Gò,5NlH©ºn/ƒò*™¦2·YµJÆ(ŽY/ªÕG4 ê½v±¶${Žªs#6YL”M‹Õåêî,d¦Ê·Ös[ç×?•÷óéÕ}k?4z™×Ûíh¦aœÏ!Y{ÿ/'Ç ©RPêÕ£Ó[Jbã­Ã³ÒjAÄ“KÇ–_X¬=eãJ3<4d¢ÓïiSäu$3ÊOºÆdEÎŒ”¤D’‚°8Úæ%K2+&†kÛ J’®IKc¾ZÑyV˜ üÝŸ÷´€æÍš*u×Èí£qÏÙ÷¾±šAé$•tN[Çš‹TRÅ"xßϺÒ¡yŒ¥ùI¨žVFÁ¬öãU·nóãLsç'rÊçÛ#Ó¡>#‚Áð9rF#4‚ŒÌ³ÒÀ’GÒÍuL¦æâ¥kfU9òÚ#iËé92žQV–(¬A~¤>Žhjyž+˜ä”£åÿŦÊDú>`ŒÙÈM·Óö ©×¹ø­Ä›ùµÎ-Xº½!¼ÊgØ è±AbF²#麱’‚w“Ìòç­Ÿ„!p«*’ñ;¥Ó+:•ƒ°ŽÞíwßõ¿žü>4^»¶=¤KC’máV¥P¾“6u)Ž(qIª†!:zGsªpá’–ë_Œß&,¦à‹iï«ÿ{ïÿ ¦`œ=ÈÕ8U1 '+„ˆ1¤+„ .QmIÃmºpÐu 'ª6É __Þ÷|ÁiáÔÕÕÍÊJE‹Ø:v†U—¬‘›È›qÀ„G ^#…‘Àä–ªIÙ@t0¬ÛC¶ÌÔ © ȇM'Xú ÊÏ„ Pê?æÁ>ž{.ƒ(ÀW#šÍÙi–9@A *— áaJPiƒ¤ÊY€I‚“‘±(jnPÂ8„ Ó!QÀÕ5v;u[a=)û‹¯Rg¯£r¡(µ‚#Ô»âðgÀö“y¡œÌštVp…Ö®ÈF‚øÉ_·Œ.ॼÁ|†å"_²â2Ï7ã'àÚcqÑiÊ«¨dæêsIqÿ(õž•ƒì$z%Ëà}bü|œ÷V¼µ²·ðMrÉF‡ðeŸH­¥:’¤¥)@E×U(vx DÇš!0´D+,6!…“qìŒ×$)x¬0bR€(…±‘ß ƒÀ¢A¨`*6èáÂb ±¥x©ÉÛ —:ÖØ`wAðxúe¨¹D0B±Ñzã“R9€CÇé•Îu"1 éQð-±j)pÀà ••‡6ÎfªåTßy›ÏÄB‰$³X™²t­ F.;‡äAz tœ±*H¢º¥3CÛ”uHøàˆ¤!.´]šj ÚËñ”4šNتr-©Sm®©è˜dêÞ´ßMÝ“ò«¾Öw[þï‚òÍÞË·ôno¡ÞYhAËnÝécRžõÿí}ïu‡íôi ­ÿÖGS.DÐðV*òU뻵b4Bël{0]“vS75,É% l™r^JÉݙָÓHçGt"HÏÌ›+Wλ{ñ<©"âI¨W$ÕŒ„‘^°Ñðî/Lœ).C4G¢Z)k ¥¥fýWõŸÕÖz¿yj}]ª¯vUŠ¢tš¥xK磑îÏÜaS:m•)Çú=TnÁ LXÛ@Ž$Æí²­óÙŸ4Ð¼ŽŒ,¶?cѽ}_\›Õ=6:ÞeÍŠC™ª%‘ûcC”IUkZn´Ì‹fYåƒÖÉ Ö<¶®ÚüqØY©ãtPlhqÆï4ÃKqD}h1CõÇͪœbй½Ðø,Å´tâ0™$/ð¹¦Êã2à¾ÊÙC4^yé|§ p¿ ¼»‹¸¹„X{`ĽÍ)ý_‚îžät*ÞcŒ´½@ÖÄ*p½OG8ĈrkÆ4ªwÒGj‘‡½µ©,›¯¶˜ýYi"òdÅú1²C§¡e?Ú×äSØ¿Ÿ#¸a­As€dº( ”‚9R^Bóü¯•Ñ¥Û±w&~Õ¢`¯Ûõ=i4åN/‹MÝèbÖ¯·`ún-•Ùš@bèq™qTx°ÒÇã¥ådž—¯l[em'6UBYš6$*“B&°Ë ø…MŒ\64¥<ˆöÜ`äÁ0¾MÄ*•D¸l¼ŠÙ¨dáÃä˜ pͲG C Ü€än¢(®10åHgöpîN½;Ö'ÜôÈž\¤p¢ÿÛ@Xʆø€ÔêbDÔœ¸ómºÑñ<$1kz “R¤ÁdJ ¯Â¥.…ˆ•8„Vž30Ä„â Û]´¤iýVøaެ²vNQEŽXôg©.ñ%_ˆñø“ò§}m7F*r“CŲqÏÂEÌÄñí)kÿýZš’Xö$ãë®Ù”Ðú£¯:QjÃû–Dd"8€bh+ M‘Å¢ª¡Š8­Ã”éI¤™WÌÎkz¦½Åêy«„ˆÍEÁgáPõ3øh("”+:‡”ÕL#©YâàxKK4Am‰ÌOqdÂA¡órÕ,6}ØÕž®£| (:4|/³¤˜­8È!Äõ%áýF=3Q ìQ ™¨ºÝHP¬Tù äòã85ý-2U¯×+{ûÐÓÊ’e wœµpŸ*ÞûœÎ̽…"õ¶ò½Ü“Ú›#õÇ®õV3*âŒ&¬Hl•„…r°^¹u@Ñ\‹ø· Þy¸­s9Ou^ØÙ­)±2µeþ: ~ñŠÂƒBŽ 7ÖS,†–@ŠCâ*QiÀ˜ÀAH$&Š%½iuœ=}¼¾îܘn­ÁÎv¤(ÍJBº×5›×U©íES3Z kµEZ, T…!ô!® AÊ@BÂÌBߋѥ‰°~+ Ùˆ“°HºÏÞ…¿ö5êí®ÚªW-÷înÕgƧqjøÚ× [*³L´çs3Há!ÖÙnSùB}óœ.Obúk6õÌ qΓEFÅÓîVϪ“ÕØ˜3hàñΧweeÑŠ¤ˆEÝM¥Z{\æ)«¾–²‘¬é²{Xq¦gÇ–=­ ¢öjP˜sÃ|кÑ-™y¸ˆàް– 0¿ Ž¡‚/IhíÒ¬IÅTh°Î£)Œ¦$ÈD>¤Q *¼Øòc1™r7›á¶'ÓŸiÄÑS¯N…—2rØÜ'™5­m@Û ¢VKˆà† 塦W:è)Šj.ÌÛ5#4iã`¦P¤p0ÆIÏÂGT6ã‰Ú3 ü£FƒTS3ZõÎóôœE'òˆ_}1m}9éwmÏ›§W›fFÄ3R ìp:½)÷’ˆE!TñaçÆ‹\9j*M 4o…ŠVÆÜqÀîéÅEÞLj9’µçðîßšÒ‚­R°‘(f"ÓT *t*¸A!à7‡á@$‚#¡Ñ@`‚¨>8LI¸yøð`¤[6U›½i54Ÿ^VõµvBôÃ1*c$…h˘fG êyr‡±RÔ JŶÛz·æ Y(Ѥ»5$\;!%B c´F¶h•ÓUux²N8³Š¤ù»È¾¸AÛzX1(H«’껫Yc㓬鴗ŒØ,Caš!^–\p¥bFUmÑEUzç.\äël1œ”Ń"ˆ±CÁ`EvK°n0†"ÌG¡N= rŠnOŒÐ"©'#ŠæÂBc䡤Zy çvõOoÄôù N¦›ô`8 Ëxœj€"=-C¥Y˜^„òä‚)0)J "˜Øz` (S Ó‘ƒÃIåý„2ÅH‰¨À¼H0<;'Ñ‚PfN#gnà5[#ˆÃÑlÈ'MˆéÈ®SÌj•’:ËžQAtx7á.f°øW7‡~%Å—t¸B@&’œš‹$s§#ôáüŸô‚ÍÖÖ–jªç'k¹o”G›û”Öñß—_e³TµÊ>tæÿç ¡æÖêmßÍëÆY÷½ןt߆$u#ÖVTØÃKW&$(7Jx•ÄV†É9Ô‘=h·¥h¡ˆ±5œ¶ùÛknL{ÞzHø§‹ /t_cIˆG•%L»SŒœAÄd÷ŠÏ]mƒÅÒaN2Z€V²0%)©T³Ï]L;wò’êæÿrÕw¾ŸUëÐíœ}ïvší’Е… ,¨àì~Ц ‹°CðHH]@Ø “!©ŒPŠAðL4"Δ„ÿªy¤,°ý~óãÛÿ>•·„dŠhç»ùŒ¿ßñŪdzë-ÿ¼îœßH_ÚÒB¾ïVî/ï~-Eؤe) 99Ö›ܬÕß{Ž:Í&ïªmUò÷XTO¶²O"OÍø^×Ú‚ŠQíM¼sçO|hÍYkuc–, .ÐäŽ/ ‡@¶dà%2$ÈA`l¸„ OLωî¥ lmc– žYÅ87Ѧ Ï  ”†1`3Ž¢6¡±(N¢Þ+œžk#w©õ&³w!ô|šÖѪ¿j/…Úý-º¬ã½3ï$²Zæs¶{xœ|Òsƒ‡š©6w­ÕA)ÁHŽ f$ñÕœ6od¦MãÈyÛÜíºÉùMúñ#¥Ãün0üì‹î{uÚÖ1ncIÚ˜ž†'h7'&dj•fRMŸÊ®ª‘“Œñ7¨“¥LÓ«»oL™tÕqcDQkk²Ç¡t¬™o ©E}æ8é06î GDà8¢Bq6¡Tàb?H‚:bC"sb‡º*}wèúîž¿EüÌ1ì¶‹P¨FářჇ<€™ e‘ø¼+¬…8µS´]9Òr¬)Ù& „pä Š¡)ÆD…&P2q6\³iþï$œæŽKN3÷¾Õ>=)â3tTŒ¯_Ïaý«ßÑŠ¾¶¶¢¡5¢÷õ6Ü\úðb=X°×¼’Ó©Œ躼ˑDåkae) TeQ)'$DFf¤! ŶÚ5ˆÌbBB7PHfѳv O5)0ÙÇ XẚåŽ=ÕÐã~JÚÍM²§¥‚”A@OD†„ÂÁñ²x5žèƒÃ(„PÖÊt ˜XȈ"©iNuXcr²?ý ÌòwGB€D$²,&cA>€©œØFñPO+pV“N˜úˆ¬‘S,C"rlPc ât†²c3d.åwhµ”ò[$mbóufå„TjmZü…][ÅX®Ü…>ob‹C±1馅ÛÜÖµ×9ˇ羬ÍL!ŸqÈUnžÚÒ'zìÏ/>yoZåßð·v+bŠê4tA‘Éò†sŽ_jƒÒÀ•Q*ÉfIů)óËÅmºV¶yJyÚø½o³ô,âz¢:‘ýÿ:Â.Õ²|ÈÒ$ :žºlxŽˆ=!ñ²d¦4¶I§—¢ìæ×!ûy•¼»ÝÊ\g713 *÷ßÓ¹êµé˜ ~;%%ÀòÚ©›bè 05DЃŽä?Á(s<ÄŽƒÀuJUÛÿùËUÿøáî=‹[îï²›;´Á v]_½¬=ïÞ†Â߯Ûüîº1-íÌ…þî¾yú¢™>Aijsªuº‘ŽVø[ó!'§YZ•L}Nh¡ƒTMzªNíR*—zVÉ‘ôíÈþõv”îm”Òw\·6WI3hjÈM½†LVø\€ª°vl\Â35 0³ Žž‚ádV ¥‚‡ $ƒx ä:ˆ‡ƒ›ÄrÐUp,X‡‚i (¿°N ŠƒB,lÎ<.Њá‰õ+̈…˜Ÿ^LѲSD˾:ê'°øÔ¾QV¡$‘;(9˜WëP`Ou0€ö^>ÎAEQ†a†qÇqÇ ‚ ‚ ’ $’I$¢J(¢‰(¢Š(¢Š(¢Š,¢Ê,²‹(¢Ë,²Ë,ÂÌ,à 0²Ì0à 0âÌ,à 0ÃM4ÓM4ÓM4ã@4ÓL8ã 0óÏ4ÓN0Ó8ÓÏ4óìóÌ;³Î4óÏ4óŽãN<ã{8óý8óN4O4À<Ó@<ð<Ï<à ìóý?³À<óŽôï 8îÏ<û<þÎ<ÿìà<ð ôãû;³ü8ó<»8Ï?ãÀ?ðcü<û?Ãÿ<ÓÏôóü<îÏìîÏã€<ü<ã»;Óû?³û<óû;ÃôðþÏ?³¾<þÏîÏðóý<Ï?ð#þ?ÓÀ<óÿ;ðCÀ?Ãý?³ü<ÏÿN?³¿<þÎìðóÿ<ððóþ?³»<óÀ?Ó¿;ñóÿ<û<ÿÀOøðüóþ?ð¼?ð£Ïüóý?³ý?ðÃÏüTÿÂÿÁOüLÿÃüDóþ;ãÿ<ÏüÿüHÿÀOôïÅüÿÀÏðÿÁüÿÀÏüLÿÃìðôóü;ãÿ<ððð<ó»4û?ðÃü?ðCÎ<ðìð<ðóŽ<îÎ?ø#ÿ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöOìÿÀÿÀÏüDÿüðìÿÑÿÄOüÿÂÏüÿÁüðüÿÄOüÿÁOüÿüÿüðÿÀðÿÁüÿÁÏüÿÆOüÿÁüóÿ?ðÿ?ðÿ?ÓÏ<ÿðþÏðÿüðüóü?³û8û<À?³€<ÿ<ïôóÏó¿?ãþ<À<ðìóü?³Ï?³À?³ìðãÏÿŽÿÀüþÎøþÏðÿÁÏãÀ?ÃÏÿðÿOðóý<ÎøàðóÀ8óÏ<ãÀ<ðþÏ<Ïã¼<ÿ<ïO<óìóû<ÓÍ;³@8Ï?³Ï<ðð<ðÐóÎ<û<ÿÿÀ4à<óÎ<Ð<ãŽãN8Ð8ã€<Ð8ãÏ4ð<ãM<ó4ÓMÓO4ÓÍ4ÓM4ÓÎ4Ó0Ã4à 0ÓO4Ó 4à 4ÒÍ0ÂÍ8³ 4à 0³ 0²Ë0ÂÌ,ÂË,¢Ê(¢Š(¢Š(¢Š(¢Š$’I$’I$‚H ’H ‚ qÇqÇq†a†QDðêG6 _š”r‹-à}õ¿³sãŸ;P?#ïü´eŸ¹ 0;»;c,–Çs@ù”ãLÏï÷üÐ÷¯Cÿ›×ØütËÁöýŽìµlßã­ùiUë€ýR±¨ HÃpÛ´#U(_BG5 |zòƒÕµÿÿ¯ .¿ã-ßÌ”£° çUõ÷cZõ¼p®í•ÛýºÃ`q—ýïò^G©,jÁÆcκûž§3À^wü~8üïÝÙP>ûczÞ÷ÚígPß·wøÍpŒ°°ù·ŒIUªªiz¾Ìz›û’ÜØÆ_ÿŸùŸ·í¼vÓÿÏÍýÎÈäï™Ý·£ýÖÈîäw·å»‘ÿßé^;»ÝÝßÝÍÍìüÌÞïü;37þºs'ÐÇMD=ÑÚEn”1yÿËò1êtÿcî[`®nKeÐäweÞY¹Öù~vÝoí¾FQÏìÿ²ßÛyF,~Þ_̽‹wtº\Ÿ×mµŽÛ †ñë-š¼(3ûròÊ~^ÝùÙÿ½©(õ7×Çå%å  Å çov÷äcûLçxç^;iç}½‹Gí¶~æ{ 9B'A]ŠŠzyhgà/cÑßöÇ÷-›ßÿÿ¹Ÿù›:îædws·7k½ßÒÌ29¹òÌÿÜÈîolwwã™»»ù™ÛŸ¿Ÿ›——üswó³¥½‘Îül«ÿdøóM{Aç»Ït¯³¼þ3ù^6ØrÑïÙåãûÇ:_Ž~}³~?ÙÙ–ß3ÿ»r[üü¿eZ-òíèçïþvG>êìŃ؟togóóá¾_m/ºÊÏ®n®Ó¡“çé/¼¶ÚSoj¼ÛEþ‹çw_ÿ7cÿvjÙoŸ_­›±­÷ö[ù™Ù’ßÌéRy²Énüzß,Ûÿ~S-ÿGa¾_wzß;-+ÖýÈè;eî´Q4°1s‚àÌ‹Ôb¨ Õ˜|–iì×XŽCù’Úm¯—zðù¹ö|0søÅ'ö·nd»½ŒÚWí~ûõç›öòËÊôc>1£‡´ÕÕ~C—ùdc™çÎÖÉ}rþýMÝjAûlb ^‹ÿ…ô¡Er@Of†Æ7Œ¥(€¸[5Œ®Ï/.ùwÞÿ™ÿ¹¿¹ÓÅ£-Žl²=ýÿ#ùÙÙ‘ÈÞ?Ÿ?ìÍÉds7÷>9»¿G3e‘ÈÞ?ÒþØÿþt{¯¼°@À @ëCÍÊÝú¶õ‚÷È1û_/¶—ý¯^üŸ-nm¤ýû?scùô­#û.žÇr™½^ßkóû2ë_¯ŸÿÌêÉ™®ü§“ë_2]¿—ÎÈþäžÙMù­’' á…ÿ—Gõ aPŽ#!<¶‡â‰ÒŠëµìŽ/Ë¡V½z‡aß´ºý›Û»ßÏèÓãôÍ¿t²YÝŽo^2Ù~oçæm·¥ñüÞ³o‘´~1¿N9Û[væfæä3ËÞ÷ÎÌÜÛµ€[€Ò²,ž Òì‚Õ¼G‰2ž÷ÁNÕþíƒ~SØr–¥«Ôëw^3µ#öÉrù-®G×ËwÛ¾ùòÏ¿K–JËCL¼¥z*e·5ToO}éevûoýøßåÝñ—_ïu©[¤sóIXÐÀË mMç/äÍV;ézÐhùnZ‹Î´ŽÓÿ÷û3³÷?33-ñŸïÇs©ÓŒv?û¶9ûüÿ³;¿3?óïÌýÝ—Æ_ÛÿŽvåVúÙß¹™uˆ„ ²f8Ð?áÀ@AL=Å·`½WñéÞù˜Ù|¯hv°gNÓ_c‘ìîÏØå·6‘Ìͼ³3¾÷¶Ëo·—Ç/‹ZVë~g}ö(³Q”gú´ V6ëÿgG¾6©Ö¶ØÆµ†K-ø·Ú0!H([bÊy¨M¼ `êNt¾VÉÖËÒÉÔ”Ù¾«ï÷ëþmó3e.̯ÚÛ›‘Øúßßý‘ÌüýÞì¤vù-ÞÌËtrÑ¿÷We6#Õï¯_7%½ýzÝ,§ÿßã~Ú’!‚¥Ëgl,ø8úg À-òQ¿Û¬0ä˜Éçû»»»ûÑízôàƒÖ¢Û|ü·ß#»“̼ï|®î7ûò¾KäÍÅäwoÓ¢Ó-µa¥«vœWu3’ÖÓ~;³ÿËÝørº¶xÜ´,ôfxhAƒD ¨.€ÑH dœ€º@Àº),®ŒÄ¼4÷÷+’ÚIŽÙÿf~÷ÿþwæÚ_¾nG7r](Ê3¾äþ9)GeûòŽoGÿ3:ùÿýØg²øænþfæn~t~QŽfæljEPáƒ#ÞR—3-¯(žîfüïŒCoüŒ¶Öðu»ï9âÛû}ŽfO7mÉæË©Ûß,¦Z6ß–ìVÆ>RÊgcÚÒ¹ö;ôÜ4ÈÊ”Œo>ÌìÏÏù@oWŠËlå±¶NúV˜è `… `*T—ÌÀÔQŸBÎgN=lÒÿãê–EÌ)ûç_ó?7?ó;ó7{só#ÙôÏõåfoìw7-/ù÷çsч»ñyGúo/ñÞÌýÈçô¥gK;¸kWËݼ!“…?BpÀÀïÇ¥8çJ¹¿™Ý/Ue®óìm–w6’ÜÏìþîÏŒs¹Ž‡¥ZOzûM¼NRbÛM¯üeÅR#øñ$1uo—K£•Øå¶9~ÿk{ê~þǺÇbA ¸.ÂÐ`¿ @^h|Äá&"fOâÚÛm¬ºNEø§6ÆÓó7¯ùŸÇ>_Žgþf~nÎ6§K²?ŸÝ+þæïßó-8ü¯ÿÿÿGÿc™¹¹-ÍÜŽoæþm÷3r÷Ïþo…Aà?ˆ­@)€ÎD9Øü·ócŸ»ÿ±üÈý™-[ïA»–•69™»Ñüw_r_N¢ß‘”æÎ¯ô›ÍV´å;-8îúÖ_ÕjtÎß[mý|¾Ãü¿lz•b;¿öbÕÀ€q0 `E€j B©³@2‘;÷ãløs2éŠör~Kg½\þŽÿöflgõ/ffoKeûäc8ÿ[oý÷bÓïï‡å<å5bRÚþÎRŸ|0ôsc,ßìïÜËææoÇ{ÿyFT ¶¼F¾Œ6F7²ñŒºtÌÿëÿä³®æÆ_ÿiäsåû(î÷çæd¥ËÆÝzìIY]gå‘ÒzÄwMölíøOí6gO°ÞÎBvµ»+±aþ}ŒÖŒö Ý$íãK`ÀC¬à Ð!`pE€1X°XBhZØVb {þ_s)ò£šã ÕffoË3%zKss#ûÿ›Ÿ™»’îbÇé÷îŽ_;>±Ù~æGû7§|ýÿÿì¾e÷·3ã,¾æËÿouö8¼ùäΟ…P–ZKKeÑßþ¿äoÛ̬—´à÷ï¿.–onoäw³å+ô¡üŽKÍënœ«rjKþ䢳32pÇÙz~{Y¨MúšËÃoœ~[vž¯Û#™‘ŽRÓ¡@ø6Œƒ°vX€ÀLÐhKÁÙ€#7Rä_ÿs{£óŽÃêŒoþðü³£¿>üÈÆwÈÖ?›¹ù›ŸÙ¿²ÿ¬ÎA|ÍÍZÿ²¦K/ýÿß‚0ïZùß=èÛ#›û™ù‘ÿüŽ:žPõ+èp‰vW.iÖC¼¼mMëæGów÷¾{;=Э.´©~G2=ŸŒ»m r‘U3³ý7»«nïfí÷öûnü‹4¢®$¾ò({ ïÎzºOþÖÌ–ÖPÇc}g†P– b€N ,ØðãðQ€“ ÂÀ4$ܸ|(FòŠà.77;º;+æÁ,Žl¿ò?ÎÝýýæþvoþG?33í™òÈß¶vÌÍÙdgý¹›ÿ›™Ò‡ïmüíã×ÜÜÏŽl{óÿ:rf?¼¾÷üV¾³g»?¥û;÷ÿ}rûñÎï/ZN9+Î2ì–G~9ý±ÈÇe\”9*­ŒïÛû®Cðóý«gl3¬üêÌ-2´g‹É­ã½ÐC<êW³3ãìÀN¤-… €yÁ:CP趆'Àuæâ¶?÷÷ÀP}Þ†þ| Ÿ-$îDœgÕC'>{¬^๫اÿD¬ðwJArüÎ}v¹ê¤Êu¶{õÏúË@QV¶ƒ'€ @í,&a ÞªTt‚PiHöݧGS^Øog0‚£sqðZ…°@H€‚€þpÇ ±3Fža€Ä;J§ô ÿ€Þ¸44Qèø Þ½²×¹Oýúrˆ yÁc´CA @pü`1ÖÖ¯ÈáÁ™(Ê÷’`Ït+PýÓEí…˜ºÇãõ«½;¯[®²Ù(Ê)¡fw¼¤Áv ½Ì·(±¶­‚á3›ÝÜoOH  ¡d%@KLØD„°nb0JóIU˜X²©=¹Ë°‚{Ùµöwåw}cO&eéd;ë^í@Hq÷Ú®A„äÌÍ!ë¹_›Ù/ké8zx²ÎfÇ)åa= šÂԼĖ+%¤ïÓZ•dcØÝàØµìê Yx¼˜`U…À†`1‰¡x!Ö'ÉaæÞͼ;:bò_;vû-´U®Ô[ÎÓ@@RA‚ X6Gìõ6ªîD b2ÏYËl‰!ü_'çl¼ò ÎVr•´>œ†Q³K>fxÄ=Xt¬Ôà²éº ÆbÒAÅI ™*BB’‡aÔ©ª4Ô‚ˆ^R(FÖ?e¬Ø0Õš†ó-*ûN`³ˆ€¸Õ:³ û‘¬w­íôkòŒMÌÈB$PF>Œ7åèv&µ$åo*ŽË/öÕ¾/Ê;ž²×¬g8˜Û4`p?^TÌÎ `PÑÿÿŒ³±únæLÛ¸º@€/d†à—àÀjF…§@ "À¼°DÀE„( 5ã ã‘ûóR‚Ó¬úÛÑçáÃk©+’à<¨àíeQûѲÓåp@Û×ÍÓ¥8z•þÿ½%²¶¶Íhõ¿©æP¦Yf³UvÞ Þf§ˆðìTù‹wrrZPâÁ ÈðÒ±NÁ!´ÁuÀ?ayœVûܼg#14 0޶5ŠïŸß+Z‘ŠòFÌ Çç™’, ª ¢à±ðcØFµÉ ~p¿öм_3qe¤ôº•ËÏúy0 €¸Á˜1ÁZ«@p€ŠÁ±xc²¾-ñÍè% t—KÅ`I “©­Ð^СV9ð Þ °ž·ZØ:óœªÄ?Ë^otϳF¸¸  3Àäeñ¿]Uä3_Ubv§¾}ƒC´Éý`Ž÷GïÑå–ýP±Õí'O)¡‹ÃI ˆÉ_dëCb®“IæÌL°¯ùL À3b”‰ŽÎ6ž#|À¬ÆÞÐiÈ+kc¡è!  _¢»Ú Ÿ½ù=i†¨˜ä¯¯b&„0Ĭø3d½ªº[cx!ØnwgCôºÛ³¿Ú+×¾ñap €‰‚ À}g‚ø&C0$3^T‡?Uy™ÉµU*Ø 8ÀÕàF,ËÆ¶S×$@óhBâðÐáYK DÂ>Pß íÜwe”‚ö^=f;€ë,éèR‚ µ¯ïòÌjëž³ÄÉaæ¨6© {©õ§ý“Ì®çãÏRób~ã‹ÏgÒ.d~Ùj¯nKHI(+ ¤²…,æÙ8XÀu$šØ}>´–>~P@å»™Òsó­úÐ…3!5iõc8Ëcu³W›|ZW^kÒ¬1 Ppöz”6}~þ”ÙË ÀôX[.¼³-*|£íg˜  ¡ÚV‘à @4Á< ð& :2tÙNSÏ¢ƒ¼r+í° °eà@ Á 8&úv§øÅB•V»¥ ‡H€ƒé~kN4ý²Öÿ¬aÉ,ÏwG,ɬ%D­&ë°4uiý×éÏo¥¶ÐhÂbÓäIv?±ä8«­=bùgO@oL¸•¥äöRÓÊ‘¸» Œ…tnúæ¤E‹_ò*¶Cµ’À»k €ÈØF^)GfÁèZµ¤Ko­k:VxCÖãÐ_ñ~ü’ÌA#‘µÞ%«õÝx¦ ÇtÇ,íNÝ¥³qh±?ÊAµW²ÊKk½‘ìŒ1XаXàC(J.Ð@ýrñÉÏãòpâئÆM 8ˆÍJP-d`C怅!Ð ˆ¸nJ¾L‰À™x è6^î[£*ʳ¯÷ÿîËåÎA“YsD®Cðê¨ÏÖ†V`ÜœVNté˜eK•À@\Ò‹Såj÷ßßúj®­Ú›8¨ò«êµ¿ökê©Î±ê,díeùB©åД-2AlCÐ5EB, ‡ÔG:¬ ¤Q@õ*%Àô‡¯zÄâà©`°Ý±Ïåk8Ê0ü£Wm2;Î=ßj£CÙÖ¬ÞzöY–1†_Œå(7ÁóúÃ×[éOêævÚéÁ¨?Cž>Eª8Ÿ?ž¯¿8¾|ñUhÀj¬3àGÌ$à‰ H PüNà*áWÏ­`[€€ˆªÊýõ«Yö?Ñ”¯né÷Ú`Ÿ>Pœw—“Å™+”©ùx\|ñqÐð+ÜkÊR»Ï‘f5üœyx÷V²Òg•M󺤱ƞW‡bwrgR ùðàN•àøÐý›æÛrÅÁ˜ó3ªHœ‰Ký5¬&ÀåBÒå¶Ž‘@„A„0# ˜îˆûóÊÝ‚ÑdÕ·•?·t:ŽI‰[”?=»Ì¡ZÐ;v¤üí åv9<¼j¯á­ñø€<ØèfÜÓ‰ó³°¸³Ì PMûåÀ²t úXLÈYð˜ð‚|ID%C˪ø ­ ©( àrh€Ž¯åwâ3ÙE}Û…Û^û£§”GÔ¸ ûöæÊY·‡;®Ïž,€äŽk(«*x@¡ÂÝ£¶]ë×ÞîÖyhÉg׳‰¸mLgf½©ežýý¿»ÁPä`Fu a„a¢­æ†œ†ç†$¾ °Úp Ú¤~­þ·õ5€ÐW4˜7˜,¡¶m¾s•ŽÃh¾ã>¦nÉ1|χ}Ö rèa6ÂË{·oÛÎ¥ï+±|³–iéëû;\ T¸nDSR¬çïÇ[²“æ¡áåÚŠ±ïãÈs…ÀB€Š`at€.%R¥`“¤gÓ2Ø Œalõ¾ ŸÕKÚ¯ÊÜ´0Ñ™D¬„ò¹³Hîçël]˜ÖðÆ€IÀIQ!ªDâyXiJ””‡i¾Õ¥M›>·ÆS¤WÛÂ4ªs"êQ:Ïc§Ìõ•-çÒ±UìŒîÂÀ|¹’¤ J@€ž yq—’:ä ^™‘h €9pþ¿Í^vÒZˆ)H °$ W¢ó–ÖPLÚ¯È󋣯Y[o™‘[Õ-êg›B76*Yœ†+²îÞìørmü;ÚEðôââˆIƒÐ ÀcÀßÊ»ÒøvG°¥Ó[SÅn‚8!3,ž°6Ó  @á¸O€d<\ÇYpC¯±¢vzy;ìz¿·¼hõÖÿh¥.?Uû+(Ûmßt«1}†Ñ;á‘°+HLËQ–Ä— «ØÎ4…lÏÍ›ø×7ì]ujŠU©rLÉRÐ3íË©U´æRE 5RlõÒ ƒxEš:^øé…lëèÙdÙ°Â  rK{í_ŸspHÈã°ðYÖic÷“•>âhôþ­;×^3Øíg‘½~1ö.}Ü|ƒb]>}{I ß5œøÖ-ÞWs-~øƒp €@éÚdfKuòæL$»ÑW'›Mè4€é© ä`ÀÒ °àRÀz€:ÄÞ2Ïut¥uùªdo‡ f”“Û*BTuñ?±•>N¿™’;²âû+ 4"“†€K•©a·¹.Çc‡òûö“ëEkÞ¦ÓDê˜v>õ¢d®Àë«Â¼Í$%<ÒGŒ½¢@“ ™"ŽßÕ öVc¬­‡l…cNZ\´c•¼A¬l`B 1à;A :~õÝW#9A²}çëlÝþó«Y]yo“ÛWk+±XbÜiu¯zl³Ï™Ú“¿7¡œá6ë`BA€k9Æ ÈIs"_…È/ãGA0F‹pi™V‚ÉÂ]lÐð*bË&Û/ÝãË==úÚoÊT¤.‚Ð%ØëÄ*€˜0|v=ôϧe¦¯Y`ÇOu8·{@@žõ÷,âÝôrþÕ(²µ¥VyëS¶>ô*IÕdUy¨Vr'f¾'ëð*¦HøR âê1…0pºÖu²3Š¢F„2‚€ @aÃj¯ìÓ‘YˆÔŒâ`XŠ0 €&Öê^0çæfnRXnß}ݽ±o–¹—ÚüÕJkãZ/>öïUí&XvFçÞLfå’áãR³ÁŠ¡Ç#;t9ßG<£÷áøÝö¬2 `R"À›lŒÐ3@Ù `È®fõŸ0þÝË4ÚOåžwèÚ†Õ4”“ ÁP‘ZËãøÇ1&àúÖŽ©œåÌ›­J•«‰•!ÔZæ}áøWk÷ ’©F™ê£}W8f¼ñ˜Ç êY‰ׯéï<éÌÖ}Ô$èZ ` ºÑÖ…\'Ö»6vÍ à<@aÀkfk±½°Ôò¤`2ÁŽà~ú¡ï £•¼wwŸŸä²9±žÃhÏïŽãSòN’%ñ×Ôdb¿ctkæýã•ß~'ˆÁ|.ËA¤*‚°tãô®åçôöûÛe´?:‚œ|À`¼f KVA0CÀîÛ̱«°ïlàœ,Ã+SŸ]c\hP0-@¦%«âXrÕ]%pËiOºùŸj½·Yÿu•3£½hs´òòËä¯Î9¯är’ÈÙÖ~[+OQI[ë©íë"MÎ3%l'76±>D 8xX6yç9„…K+›3¡Å% VA —סÊýnÛcW/È|놴ZLÁ–K+‡êÇJ¯ÇïH-lÈ66¿ÏÛLñ«ïéÕl0óQ¶5)±—ÆrëÚg< € $!h%m:÷[™:_Xß–éý³lÂ…èàÄcÑÙ•1ÐpÍéÄä+ÍtòeØpãë$`pÌÀ8Ç(4™ê!A;òœ’î¯|Ë/©!n} êõ[.33VÙ_óYÚ)œýŒØÆûŒô˜í’ÜÂ'®Äa¤~Ì&vR‘¹6t6'tÆÑݾ F â¸EûsôZÍÌOHU‡MFô£¼ÌYF) i®0¾/€"C@iРð°@®¹šØ©=Àð‡t„d>}^Œ‹[¸eQ.à‚$F`faÉ€c…ÀÕ9H{eïÑGxKDUÆÛR˜Õ·¢ÓGU´1:°ÄBŒk…{ýÀã¤w¾×m€wÅ¡8Æ¡5/ãWÍ=ê?WžÓXã„à"ɺ0‹&a¿œ|€¬x¨"ƒ84K‚JøX€è«Ä~@=ˆd F3v@ZZ”Ñj°œRcáôð†¿“c¢XáÀ•1¬VY;'؆N¼’ ÆBÂ„Ñ ”‡á€3‚ðщ”(¦±!9ôC\ÎIB6©?ó!Dã³@¤è‚@x7z«q¿à§{X·þnöªX`÷ºò²4¤èÊò>Pxl¹- æ´I~Üá½ÈäHl¹Ic'ÙyYbÄ¦ÆÆÏ,[ÈŽ“Œ‡A2 °¥›)麇VP»Üð0””ƒñ²`Q0L„9@˜a „&ƒë09Õ(¤/„I ºh2J §’B[h.ÕsŒ Y|QµÇ,ŒÚú—R*.~6èÙ³‡@'œBmƒÈZ Ãâp¬F$b‚œ Ýó *Ô%8Ž` yÙÆüæÑ I ŠC‚hS#ø¾DjªL€æV¦ÄTp¡eô¡¢–A:JÚ* #øhNCžBèÎòdØ]¬ÈûD„ÁÙA±y9xq2 E)t*ЪçM¹õ¶S«¥JÅVÀ`¾s=×{ö;N•åLËî;Nœ¾»:Ïá#p£Š™jçïäk‹Þ?]§Æo8ðÈÙ¢±†ÃÇÍTVu~šÔÙTûçêOĘ‡Ï›;‹oÏëüºSŒ/lÿ%(cÒZ ¨hÓQ¿knÛmÕh‘;M|ÍJ{;ȵb ²ðA™TŸ ¹†Õ¥½¶ÞΕ²ñ[cY¿5<¯Ý篞­„ÝqHÍÇ‚|ÀI—8Â¥ô´=d à9…Ù ¸B`8… ùQµ'íèÝêÇþÿÒíûRœó/¶›ø©²,Œáçö;Ù»xä¥L°©3Ò ¦$ÈH¢’,plŠsN*‰ Áéau€VBhÈ+µö[ƒC`b8&>&ÕJ÷Çl—¸bã9Å®ÑôÍ#jlyÖå˜[¦(N™@\‰CŠô_#]õ—âf“³çÎ’•Æ· ¢JͼñÓœ´vK³;åiǵÝ|Ôÿíÿ÷/>Þ”YÜ[ïëS}hejýÛPXl³J›Þc¡ùíç(ÞYL@ê)”ÔóOó×¾94æËšJ¬|Ñ ­JNpµf1‰öi:ÓdÄ{óÖÄ­Œ­½¶=<ÆUbˆªÈzöüÏÖ4$Ct骩dúÑVÒ§/Tr*Ó>Oå˜U„sŒgKË7öô÷³ó_’ŸUæ´v9ù¹¦, á¾g—H„¬x/›>¼íêHAvÔŠbbq[ÌH×Ò4(=µûó¤x·L!…\gÊæênkOvö¾ÃM# ]¼›ùêý=aì¦ÊÃÜõ¾<Ûôhú¤>ÁúÏã{?7¶ªºY°¼÷¾ÿSzcIÿÕh'“Œ`¤Á)-\z¼ì”ÍôëÆYûl†Š›Rãþô¡µvÖ6é$œ€ÛSfÆÚu¤|› ²..:¨¸„&¤")¼Ñt뚤N}?À™™S2á5 šT8(YåºuFÞwûå2{¿¶Œ†Ñ¼b½}ª7/£jR}Kõ‹/bÒtþ‘Ü‘£Ñ› }Èÿ4ò“ÈôZ´Ù„€‹¦â‡šuÛ xOøfÌ º¨ ÖÈ¡*^7~þ´£¸`E´ð áÿÛíSp#xù`UŽÔ1xY’ð´jagnoá›l„X ¡/¸RvEN¬¹âXѰ“)Ó½=q!Þwƹ’ÿOq™x°EŠ¢"¿å0­g fðØäËÎsèì…ö¢­J”¯÷à –- “ºBl)¿d (E_')™àÀ9$Âb³‚u± È¼ÌL3 ' ¼š$gãA|Å"AŸøÚ憥ªž±‚bÕ"ÒíŒÜ‰ ˆ†ÜwÍ¡ywÔ‡$å¦l°á:”.ªLT  Y.!ŠæÑ© ÀoxJ ‚bu‡fÛWН_¯[©ky,{E‰N…,¢8bˆbt}|M³Åt#E¦Ù‘øÆ§Ž›]jD¬ûx/ŸŠ‚xıâÓR¸"ÄÍPx¢ÈÔ'Û®‰³!0KËj#Ü…Òó!L·XI35‡$®†¢æ#å &Kó…:ƒÖMR áÄ-Ÿ`ƇWÃ2p¤FWeã Ä·&…\“Èü)Êôç ‰GÊeˆ…a8(Gñ*¸ž¹3A²FjAi…–šÛl›b¾ŽE<|Th.¤8bâ'’^}ÍM±‰ì¡9Ô ‹Ç£¦E4-UŒÒ¤‡/= ÑE~}¢D [“ƒšA€´ ´^x .ýÖ¬Õ£(wiíÏ#ÑÊžŸÎýõ}îÙäyirÙýÿËìcìUv‡Áâk6Öë0ýºûöÞjlbürø×=¶¬-ÙYÏŽª<‰*ŸË©F¬Ôg5 8¹Ï=ßNomÅZkæoC8ÃŒ)m7)z½Öûîlf ›—W!­¶ÿ–ß'ͺpwtâ?,Ce-"‘Æå}œk¹šþN=}þæ™´¯Öý°{ñNVd`‚Ÿî¶ÅL˜O×%WNýN䮄4œ…P3‰¢ÞåçÈ…R1J¢ê£Dërú¶ÎRÙûpžšÑ³m(qØ«`¾F¯ÙèìçJÏÚZ”ï¾F¬ë2žÎñ_ý «^ü¾u؇ނ ºÕU[vÖÎz6s¬ºów§%TFØ<@úæ¨:°–®Ú-R(%Ó‚éX„Fÿ{b‘8z¸€­*°¶ò•iÕLÎ(¥ B~0YÏþޱHß#ã¤QÀž6…#É^êÆc Cp…ALÀb‰‘°Š\I 0”#PA}r15œ­2±ÑhèÔŒÀ]PÉ8–3…ž£>/©ª•nâðÖôËÔ~ÈL}@X4 ¡åm @ØÕ¡²EÖlÖDU_ͬ ÒÓŽ¨ „k#L^d­ª€r pd ô(‡á  ûW‡UèLár£?vÆQ¬ åüôc'“¶PÈM¶3<¤…³›Ü…dK²±y9â퟈ä°)M©—‹#àÜbANg%<ËÆÐÉ ŠÐdÑ:ƒÚIДX•‘GÀÔ^HŠ®0ˆdKN‚mH d&C䀕xÅðœVjèöw5ìá;–IωÃU”¨ 57áFm€œvŒZJ>N W ªlô@£Q¶9 !!Z!±0”7 ÁÐP G1EغûÁV'ÔD“$¦D ¢÷‰«ÆjZ-‹"± SH]2¨¿™pÜJHt"GÁ:0…Tƒ£Q…åII—ž(yMF>IB†B£'Ù\áös¤³°ìVP|ž¼ŸÎú{ŸVL½'fKÑmó¥Ñøþn9G%hòÞž>½ÙÈ'ÖXÏ͈+$|¢‹“È¡b‹"‰ga˜)%!×®¾¨ÕYúYf½ÇIÇŒ`MŒ2.ÊÆkÅtåVÑù ö§Œ|züòÌG¥ÿÎ=9G7{rUÈ¿>xô ¥:h–}ºÃÍ.U%^Ÿ‚è`«ÎžÓ¼Š‹³±Þ¤=ž³´L²‹(…Û¿ðü`nĈÈ‹`“èÙ1Ô?ËPŒ¦$´~Mr%)­QåË #€Xt˜|ªä좛´z¾±çJÝ%Òx’á,QEŽI¬fr¹ÇP3%»/õ“ÞïÖŽúêæ—žÇçZjÙ-æ•É!Èãdl.P^XX)FÆt<4;¢ak$!€œ†fŒ°ˆPéÇŸWG©zÞk*ªj' Š,T¯›‰"ÆX%¶”j¨Í™‚Q!óA4Ä)õH S†Ø$O@“¡ô@Ç'–PàV,Pñªš|.!Õ䵿$#j¥h$jM†¢ŨŒÄ˾ ¾Å '|aª\/—Õ+« ÐÓ›«?žPvÜÊbDMÆt<ÅÒ/sÁë—Pò»¯gâçVô¹ÇG*„CëŸR|8ˆï ´å¢´§|ï,•åJJ7Øþ¿óÉdñIÄv0D²¿Þ¹î)VU¥UydŽËP;$ÒI†¶é´ý,ß0±#ˆ·›zf¾íeÄ+Çþ1Y)? |“Pyé±LÏ¥¾u–S©’¼o-wFRèå.ƒñÖ\ôç½õ_ÚT±c äÅ2©’¨Öª8ÙØNHãSåÖ’Ýê&æ9°õ£Úµš‘·ÅÒÁ˜b€L‡! `C’…á?Tˆ©d&ˆjç3v_ॉ(iT-Bj\|c ª)„<5‰ˆæƒI8—Š0ž¤˜‚(¤ÒËF±³ûo†©¢„šHËå5‚ûb†” :N:N¢b$̾Uƪï…멨g+ÃS;›†Á1,1 ªR#0tV%6à–bc1TØÔ¨Í|´ÔŠÚ× f‰œ0ÓPa Œˆè¶îvž·ÒB¬ÖøíS©+vò3  ×.›„á@>  `ø&…"ÐÐAÓCEe(¥W`~£ë&P&'.KS¢ 3›QÊ¢Tî*²YÇÍņžòóQš5†ç“‡%0 ³lèÑI1ŠT°%y^QBƒb¤ ¯hƒÒpgÕfCY2p ÜÙ±0öxßËÈŒ½»((J¦ÐFdn¤íIa+ÒV²´¹z^9l•V:R‚aaÁÈU™Ÿ„ñ$ A‡À‘\5›M¨F{þL*¹8~ˆÞ Ò¢D»0 N V ŠÜ’¾/¢V^$~^*Aææƒ ²ü2:tÌÜâ– Ï=h‹“[HðÙc1Ù7ÒÉU…š0®/­‹;EʃqápÂC2Ã@/ÃBÄ"Qa JŸ+S¹wt<ñ=Ѹ"3ièf–hÛ«×f;²Í_ÆBG ÃnDS ï™…Áq Á“Hb@? "˜I½ø-¦ŒÇAä$Õ$V­ÂH”˜Uqp\!Ì5X9q‹‡wzã—åâº5WŽ ÝÇ‹+˜†«Üåò–‹l>wN£%ÓÒeC'v,Á"´ê á3PíôzÙÄB°É‘ DRcäCfIŸm”ÇÜ9(«8€ò‚s£nl­$¢éh9ŠèÞ`'Ôå1aÚJÑ…:!\,‹Dä2’%'ªú†^ÚM)Ë48Ácʨù±ùÓc˜BÁ\ùYP°L-ðê@º¤ê‚Ä£%jÞ9awˆÛ fÊ.J @´ °¢h#¡©),ð¿D1èÁ¸/û‘Yƒ æhÈœjœˆ&CР!ˆ&(Å2¡yÕF·V¥©&ž*lÒÏ.Ò†b0–ExÙi/óT‰–RPl­-«~ïŸt9£#×ïnm7¯xÛé¾u¡÷n×ãÒ”ÿ!¤ @®ýC¯IU‘ÐÓˆ†Èì@¨þ$H8[õ‘hÞm)»gøù¬ª`Hu¼ºÏ]UäË._Ä<… ³ŒInjíbËNT½.¼±–jÔ—øÇwe+ÆD‹ ZÑWãÎf-›„œºÊ¿F–þáØçÊ™d7¥•:r‘b–¢ÊÍÒsùfK˜\øZ+NZ  Š$„!f& L„¡G ÀŸ3 !yYYA;3V5P‚ê²û—ȾÅÇ…È'”â0¨"Bªkn¬ù×ÑD–ä±E3Ö?rm+¹7’¬m¬]ˆW•iX-P? §s¥ëäöÒ‚ý»lÈYG¦¾0E!=”Ý£”PëÊ;ûiÌ@ο¾ñ¿4 抟‹ÇžnEn ›xçÀô˜…‘t,Œ„Ž$ÂUšõ¨o×åÿe(ûÝØšâ6T§©×W#4c¥2‘‰f^âq ã„<"¶NÒË[-u ¥X†À ØOÄ&x)%…QdêÇ*  Yt£ÄIèŸMy:µy*Fi O &€©2.åTÊh¨m-[îôß{-?ošÃ¸ö?ÑZî²Ì"#¡B.„’‘h‰#â P*ÂÀ)¨PA£  ƒ@R‰$ZbØGÊÜ º¦ÎÏ2Ý|ªX&´8)@ůO* e–ý)¥Ì[«ãت—«FãЊO¤NXa%ŠÂ°x%…ƒÃ*ŒÇâê1yã÷ò˜ÉSh—['‘¸ih,%¬F}sRf Ll“w2{ã¯1T#Õ†ƒ» K•šÜ¾êÕ Á ÀÇ Ã·Ö(1‚Ì)–¡€ý#ߟ~[ÃFå­X!b v|f5bâ“T¦ŠÑÀª¦KÑa\”Iƒ0[I‘ £Ý Ž´w“¦U % ¡S‡èa!ZJÄ àoè¹ â¨ø¯ÉBC `!Äalø%.ÿ—†É«àªy*eo¼ü‚}ZNÖœ†ì :‡è…ô#Saã|ÔzjRÑ‚¢nüdÉ!H‚N˜?qØüQ"†w’q“ ÆÆˆDÔØ0A>(/"‹BÀ¼¢ \<'Ã¥Æò"ÑQî!`ð[ ±TdÌEÌC[ʼÕZ:—×£ólàÆŽ/sŒ®bªÁÑ Ž6 X*@Éq ¡ˆ|ÇäQø¢h,¨0|QJ/‰ GiÅXÄ []BÍ/SÄ„‡ Ãñ°*„ ¼¾)3…\_lô"ý°Vš@g´³7ˆªÀÂÁ¤+¸5 àÏ4IB.¼¬,^ú–É®B°˜R& AŽ&¤Ù0ËÁ³ÚŽŒÐI#§üàØüìa¸4FI1¼ôdúi|©òŒ¶ùñ·ßVõšFodÚßÝÈãúËäí5L¤\׌æc X»¶¾ªÄó5XÓFT}ˆ‡då zcÉT©Y&¥v+QkQ_«Åe®Yù$zO7¬Q˜µ­Å{¯˜yØ9Ã’ÒÉfm׊Ó?frkÃèܶz¨é„8˜YÇaßß½×¾N»>H»¬eö=‡Ü>}¨³ñÙt¹¯60,]‹†`xd1"†K‹…£a³ËRj»*%:x„êDJ̤º»ÂþLÐŒ½L=ê_* n Th´×¤é+G™€öôCR_*ò«•á4Í›üb÷¥qÆazo5Ç,~p®;ÿùôÞ‹´"ЉcRëž¹ÛR{5k#qÏoÚ×|ß&](È]1Vï¿'ÍÂIØ‘Bw¥xÙqdH!ºÌa˵6n¿ a®=f9Ÿš¶L×,<ˆ¬pXpx°é(¶)³ÇâWÖaÜ„Ghˆ®Žb!yceZKE£ÒzФžC¤=@žd#†àŽDØJŒ8E±Çì©×P(»õ`Y‡â0?Dº–MXKK{›ä5_Ù¤YV[í7T½vý‡Ob=•öZÊ,}N"²ø“ܧÂÑ0Äz( `˜Và:`x#Ã|qi^Nʇc>ƒˆ5 k¹÷™D,Å >›¾?u•d§»µµ`‡T%2ÍŸ' ¤‹aRd$½ ˆ¤ÊTû”2¤Ð)=QêM!ÜMFË(J×Õ¡”töË x¥#±tâ#‰Ì[M7©Ð«7éPøØ´ÁiQˆŒ¤ÊÄ"ðâçÒNÙ­+¿ýjüÕó^m²O”^#©„Ì6|ÆTÞB„®C$àP€È¢!7 ¦b‚”…Ÿš·`H˜ØQxÅj%†"(;<ïe9ËLu2œ±P7JÁ$VÃálLjÙ{N³¿Ü’®ºêU‚ÍP.U qÊ“ªÙŠV-­%h‰} 3gþRTÓÓÒÿxu«‹†Ø*J5<­[¥§ ØÏ‰×"’š¢Jq²aœ!ùà_ÇÊGªÖZ!ðGÒð¢øíÃõ Æ‘p5MPfŒ´¹£ŒN=°’ßžèâñbŠ(Õ¾'àÛ íŒA*ÂThÅAë…’÷ˆBji&¸U˜ó¦BsÏ5d:®KL\ˆ×–ÀxH8Š3¾V£AEªÁ«öÄÔ…|<û~H½æ³¡ð²è¶j^="Å+Wz‰UAûæJå 0/; n5Ñä£C.-dzѤȇV‹<Ãfñ|9¡H”±€X6Ûˆél¡{¤“¬~Suû~QRwOyÖ6ñì©C—rM×”Ù5 –}ÞøÆ¹³È7:6ÇY1¾l_¹m•Š wNBä§FÚ7m(&ýߥ¯—´Öõ—Î7v!^,ÎS¹´úÿ[¢éÜn””ujÎ-kn Jm…á¸Íó>l„Ñ®ªè¾±¬ÜO‹^^ß9|kx׳%O7TU$âm>ÒÜÏæ˜,@+– ÉC̳©‚øÙR¤ª*­W­VëËy¸Y|²Õ®KvY-ŽüÔ²icXáu\æËe²ažwÔ4kê$`pv`â|²øÒÄÊ‚“/Œ\>]ÂûÍE˜F ?LãÐGk)Så µ˜•;)ëZ/É<ÌdcRæK¼Y6-P Јê@i#T)(|k2z”Ä‘0Àwq#Æm ¸¡“lÓc/ê¬jtQ* O†r0‰l0„‚qx`u—­ ¦wníáÂ%“’˜¨},gHâÉà -(›ï½mÉ{7M^ò9 %Ö¦Gùõ•¶Š¦¦OJ‰ Að9‰È8ðe n$±¡¾är(?/Ræ@¢ÊØÍ»ÊNTêùÖ·­sÈLŠƒæR9GŠLœ#JåÔô7u÷;®¥EÒ¦„XhnpÖløž|<*ÄAÔÄ‚)rc‰•M6;õj1[8¥Ëä‰:É™´„B•I`n;ÖWÂ!¾›–• ìŒԂáìuÐ÷ûÌ B<À@ª3 gÁ4b¡³ÊÅhÅOr=’ÖYoMý§?gDBR©ô;ô„ëAkÂÔBÖÏ’” ŠEPB@§p¼T‘·¥•uõ÷ %UÑ¢Gæ\~©„«ÙK¢ÔÞPYr ˜“L‚I>J&’ƒM¯bjÓ}ËŽ †$Ohø)O ‘ pˆKÅ¡mIƒˆ–<ÓÈDa˜Ø”EDur+ª ÈJÒ—º´/Ù®ëŠ\l¥0zLC’cÒsKÁ!„¤Á‘SbQ0Èf² î®ÈS ä¤ÔM±h6̈)Fo\[+|™ƒ‚” RâS4È {•Z¯œ«×#Ï¥ÕÁôv•^°ÈøØ˜ ùH”†ŠH#`ü˜ ea˜Áªp âºÎ«Ú³Gç ¡,epIÕE@Rl䀼$Š‚4f$“ h(„ú +¬m ã Ú A`†#ñtTyõFO S2”o廥}Ê•ÑÀˆƒ8¾Dˆ«Eš‡ûØÉšª7)Ðá©ãÅ Ï«òÁLÖû ÕK4Î:·«–OvŸ/§WÛÄWEºÌzóéYg–~cZßà^9ßãòÜïùÇ­:Ëo3UŒtx¬¾(Êê*Ö6TxâKâfdµç*@»>¹ÝœãçüVr*UQi¾Ý–Õ£þ2hC0…Rcjóf®IÊ™¿¾Ýc¥dR ßLV5*”±òå>^t±2«2‚1“S†Íì6zH0“F9Ld/‡pørF6Ro¦áV!HUŒˆ$À™%B[Ññð¶p)‹`È##,ÒtaDvhPÚS˜áŒWP¡Û+N´cõBÄÌBç]øþ„ýr¦àÖŒÙóÚR'Œ±lé:2b´ý€ìª$ã‡J¢ñAsˆñ?+}ÅßÚÒòøjF¸è•b?$!B73ŠCŠ˜íÆÎ5FCyᧃ…¡I Ð%|ˆˆ Ðp|Ty¨N½WBfÚ¬6»¢ŸpÕİëö¶[9¨v±»¦ºðSpwx.*.Ò!= Q82É(EˆÂ@”'FáÑÓC1 CFAmÑÕÁ>ª ÇÔ‚q9Ũrkî6èö¤¼"TÀ2#\ ”…cñ± pJÖ:C×ì8± tfeÂHžl®Õ6¨ÑUŸ{^Ý÷@6ñ ÔD!‰Añ£Cò¢Òs;YoT²‰Ã¼œÿ HÉAø©ºâ8«z‘WèUÉ­ÿÖ®ÆÒZÙX%&tÝÚ¦¯ý¶Øæª]&»X&ä0u»3s?÷c—²™Óíc-’PpÎÄ#f©ßy¸*B46OT+1KSà^ÈjNá¹Lã§=ãÛy¤h‹uãÏÓ­HXÖߟËgÌqUÆ…â6 [2¨`†2R(ô¥“mä~гî-9ÎËÆÖžÀ‚Çä‹›“k xžæË²ÊBNb(6Të(˜ Â!´o‰!qXT roG‰ ǯà|ô TûJ;sk¿V¸ÊÓµï‡ ¦/Ť—[£˜<€¸jp³Ë ’Ø’E>1\“ +nŒ=Éÿ‚úΪ¥ã,¬¶Ñ3a-Ó¿Gá;§šZôŽßz÷“¬'Âú¼•¹¡¹#ãñY4LwÃÛ«/Ò.HˆùtS©UÂÿþËåýµ¥é»Ý7q^#…W+Ç4¾D9˜…a¼àkàâð8– †’VÉ,XldX5àò*¡s™Ð©[Àä˜Ù¼^TÁ¢ãöèŠÌ÷†î vÂAà’wF …æ+tÅ2{ÏÕ{{¬:äåC¯Oàœ•œbm`塺’t’>%³ƒâ3ÆDTð<’œ\„”ÑQerua‰}*ªº ØŒX:Ü”baÙ{é߀[`µ›•([ǨÅc(í ´â•IY£î|7/‡¢l°Œ9$^L˜vbesí‘¶)±õd%²VF’‚4Q …" 켊‘¼jò—Á‹§žµ`cÐl=Xz¯ÙEž¾óÜ›Ÿ°f²§GªLž 0=ðÍ…€–##Ÿ+>HN2#Q DA°V<°€œ~5œG`6/3b2ã-„[ £5‡¢y”Ã÷ÂfÉð <æG¬J Á."\€ª Ãò¡tnŠâ¨8È`ãHj˜3úDdÜñ£©_G¡*Ð|R‚Ø€ L ŒÙ âàÅÁ¸|JLüÆ'åx¼™›D3¢«ÂåÈh)Õ.ò¾±-ÏYƒŸÒ¾ec¸×5If6 ÈîKaúe¡Œ9o…nƒo«÷_6]Ùn[k‘Δ9>ÕZp2észzåNŒN›)vOW¹Ï;a¯“º8h¤ñ¿šVHލªŠÃ]kEuqîŸ-«u&£§ ×)X“ÏùÜ'€>f†Ö€¡PÕ„+}6ж­É?´¶?*ßl4tùÚtþ9²ç׎úvÍC‡'JÉR®…Ô"˜:–†Áhwð#ƒ0ã)ÁÜ" b119ÇÕ[óòó«^†¥. š/(%qö^'Ô=DP·ôŽ0¨á›‰–¸@ðw…m‡) I!øuMµí½ØêÇ%Y­œu¨.©eªŒ,~§"Š(8ãg3Wµë>ÿÍzKJÆñkä_44È´/xÒϼþvZV½å~·C(2~/ãýÛoŒ{zpEVšØwƒïŠ,@+2˜(p^ŒducÖed·Ûþ7ëå­YtJú]]ÞSwñå¬î± HÖ öV>Dk´æF brÁ˜qAš êfñJt0µdÊÀÐ|*‚UŽÌˆNŒ­AJ¥v$¨o¸Å`—?¥@Ð*Á, ahÃKÂxøX\¹J¥uûk×P†»5ie«µr&¢A Ð$ÁÔ&DaÐÐ`Â#e¨aƒÞÈrì¿X0€Æf|’ªñê¼±­×;Öz¹–“¿Ž1S¶7E–‚0÷^=}ÿù^ÖœmúGç?îÎÿ¿Çe-ú΋o|¶ò·uÔ›Oæ*®ä¬ÏlÚ¤T=¶åÝP¼'aCÄ•O:Wt%PM>ÀýW~è¿B4u´²Ërö¦­H¥[O3ƒ‚4(Ayçn©Û•8Fƒ§½´†ôÊ®§UIÉ)ú°×få·£>ÉŒÌGDƒ˜Ž]w Å’°j™ )„¨ÓÔfW £Ðº,‹ÄúqÊ2ÐÍË[!èÀÔš¹èHñÒaê꛿|åŸè%ªF)Š“ÂG#Ñ^«ò²Të*1máºa`² *#$¹·V²¸Çhý¤¥šRŸÒµ'µ–bðrªÁÒ¯ª&`“ÉâŠæÖ^+k¤¬ý×.%ž ("XÏM=.#³•sß”=OüŽflg‘ÍþÎìŸFûÿ™»÷ûÚ7Çâ’ ãìhíDà§Â¥$!@-ŒÓ¢THÛ d–ž^F¶¸WL(ÂÁÁ2ãChŒÖ6Çì21<0i X¸tV˜I ƒ‚¸]53TqÈ`Ûd¶ó¥Y¦Ç3^[W†‹´ aññ‘z Öé8òÞ»ª'zå®)zŠ”th¼ÇsmbŽY°ý‡`Jù¤Á˜3l¡¤­e«´›TÛVÏÙmm¥ þWÕ©Ö¬.(·V úÃŒÕB… ÝÕ¡» LëÑhܧàzŽÖ8ØÛÞ²s1iãØ!B „‘ U+Ǩ@¨v\EÊ:"$€_%Sˆ¡ñ?%Cf8|vD Ç õKÁs-ˆ&Ç,ãâ5'!°,>ELPj.¤/z;×=jÌQB2Aç‰è¥õ*àøj[”ˆr˜6Œr¡ø€Cf´f7¨šÀíT…E¡  P0DJH;ºAe9âPÛ‹ØÖ7Vù¡ò+Yt[!èØYCÐSkgÓ#])³Ì„XÍB|KPe!6¥é[v± ¶„1B*Ã4›Ð'¬!IU—ªyôÐ4ó™ûx{ß±h±yÑ¢"Ö—„;†ÞfÁIÑ9 ÆÉL®CZ,…£¹Pb™§JêE!3ÐÔÒ5¨Ãÿéwq^laë}­ïhm÷†û ¶àõ&Æu7¢äraÌÙ˜2hÓhO‚ôøà™Ø-Mð/ß 2(éÍ^œ"•ˆh <˜$KÅÁØÁàq- „APÌ?N/$çKUü/¨v „â$ Ša”ˆá9{©¤j Ó”ÙT«ï¦ˆkˆcahIÐ’€B¸r04'ÃñXeå!e@hçIîßk±€ýÚÕµŒ9dO‡8-²«¯ö¤© ɵ6:Fsè­Gãñ—uµxûÖÛe·jqðòÂ<†§ÉbP0D)ä/£L]ˆ·¥¼] ¤SúŽUg¬âïõ~ùhÛzý»xüØ”w%ò¶ÆLZ:·Fÿ ëc‹Ø àûˆ/ >a–^`1LƒÎ1' ql\ÐÚÁ逕@}RÎ…‹胸‡šNu¦,l´tàºN. †IÜu{A(.q5çó76´ï³E¾Sbl12GÄ ŠŽ’.Î}šJ$ŠIÓd¹:½H¿ÚYÅ‚ŠÍCH ³ÓKˆ¬›±³qiûÆ{Õ¯ZöíÕîz_^ZQ´¼ ßa—ÆÓ¶VJ~|ÉÙ]ûì;öÚÈ=t;¼'ÖuçdÚ=1dÊPñäÎõb¦êes!d|0Ìu“I!õn¸lbPâ锟‰iÂo8ñ<\ tÄ ®Ó#@ó^jÙ³–cCyˆÉ+†§ê×l—ï—8@láÁhüÖ"Y?ªúã–ê!È€ë¦ÄP”n:+()9›B€ä7¨*Pʲ(X>fœ¨é™Ï*±š™ÖO!ܘaåxº{®"’ýBýw_ãõ±q;‰Þ'tê¥Ý7 –~«fÁcLh™+Hñ÷~X‚èJÊË”MO©yÓþ*TnàkOw—RqŒ?èòOzâ¼ÜS+ÅWõÝëÕË_¡¬oX{³­ ïÙ[½gÊôµ^üÒI­ä…ž=ä`à$<ƒXHб\LVQ6’£!¨–F¬Ä.’˜À¼¸I‚@—˜ f§Ìä˜>àØˆðr KÂYž/Ø(9ZÝd±µà»Ò‚šä×ïžR8¥ÄÔ€êR5(N? „âÙÒä$&•.¨ëÉÂqò¶ 4ªDüG¨,RÀÉò†ÏI–"Å*nÌÄïœÉ1æçÛr_o–ÏeüñéF»ïæK¥-ÙK%¶ŽÓ'F/L”¿ç8Ëa”¥j<Ãqv-—w_bóÛƒ­ÊOb¬Å¤¤ë¼çYô‹NOÎå¬òó]1bÌQo§ŸäO »Õå}½©»·çc.·cr7£67-yÊRrM2š8¤z±ݽìôáN|Ͱê æ%œ…!¡R„ž®ÂNpt^5dIRÑ8žôU8³V(uXãN´ÌïԨ̉NžâÕyŒ;)0©·’ˆbȪH[÷¤²¼hÔÂÕ“÷éeÖq‰7¤¶8¹¹°´Z«™ß±ŸõâêÉàOïAY[­w—Tш¬¦vWÝÒù$cÎCzׯöûîwÿÿuò®Ã•ßørñƒ ³ºÿ½ð÷fæäï<Øäk+}åZ°Í)²î-â%G^*‡B~Ø‚Á"ëä£ ÇÁ¤ÉP”¼T°‚ð;©ò1;”k ü²LœVlƒ‚þŠ#iñ‹µ½Ö²/Œ¥7+kýe Þ†ä±''TˆŠòR)µDг%¦ÏÒëÈ€íZŒ|ôDŽ‹úAQ†aÇqÇr ‚ ‚ $’I$’I$’J(¢Š$¢Š,¢‹(²Ê,²Ê,²Ì,‹4²Ë0ÂÌ0³ ,à 0ÃM0ÃN0ÃL4ÃM0à 0ã 8ÓŒ0ãL4ã 0ÓL4ãN4ÃMÃN4ãN8ã4ã8Ó€4ãN88NãŽ8îÍ8à8à8à ;À8€4@8NÐ8ŽïN8à8ã8{4¼8ã|;³€4{8ßÀN4¼7ð@8¾4àðàôïŽ4Ó»8ãŽ8ÞÎìï 4ÞÎîÎ8ãìã|;ð{8ß8ã€4ã€;³€8»8ãNï8ÓN8€8ã»8ïMãŽÞÎ4ã¼4€;³ìïN8ã»8Ð8ã€;³€;ÓM8ãM8Ð8ÓðàìÃ8à 4M8N;³MÓN4Ó€7ðŽîÎ8ãM4Ó~8Ó4Ð 8ŽãL8MÓM8ãŽ4ÓL8Ó€8ÓMï8ï4ãðïMÓ@8ãM8ßìãŽìàãM4àðà ;û8»8àã»8ßÀŽìï 8|8ïŽ8ßÀÎôïŽüã¿;ÓïÂÍîÎã¼4ðï;Ó@;Ó4ÐôïNìîÎ8ÓŽ8Ó@8{8ßÀNã€;û;ã¿8¿;ðŽøïÂŽîÍøïÀã¿;ã¿;ã½;ð¾;ðNìàìã»;Ãã€4Ó€4N4Ó@4à Ð 88ã 0Ó 8ã 8ÃL0à ,à 0²Ì0²Ë,à 8à 7³4ÓM40ÃN8Ó 4à 0²Ì,ÂË(²Š,²Ë0à ;óc¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛ;ÿÿÀýèïÓü¬ïÄNüHîÎüDïÁü€ïÂŽüïÃNðïÀüLïÁìïÅNôïNïÂNü(îÎã¿ 8ïÃŽüïÀNøïÄŽü8ïNüïÁÎôã¼7³€8ã»;³¼8àïôà8¿8ïŽðîÎìàìã;Ã}8îÎìïÀMôßüàüà ôß8Ó½;³Ž;³»;³½8Ð;ÃŽìïÀøãN7ðŽìàìïMìîÎìÐìÞÎ8Ž;ÃNðã»8Žüà 4ïîÎîÍ4ãNøÐøã;ð»8ã¼;³N4Ž;³Ž8ãŽã€4ãÓ4Ð 4îÍ8ã{8Ð 4Ð4ã 8à 0ãM8À4ãM4ÓM4 8Ó 4Ó 4ÓL8Ó 0à ,²Ì4ÂË4³ ,³ ,ÂÊ,²‹,²‹(¢Ë(²Š$¢Š(’‰$’I$’I ’ ‚ qÇqÆa†QDà E{d û½­)cæo}ÿ §õÆI ß«Ó?/¿0|¼ü½Ñï«÷¨ùû—ÝÃßþl3Ç¿§}ÝŒ úÖ÷÷÷V£÷#›cóúïnï¬ÝuŒÚB‡|0{Ò´XÁ‡µù/oŒ CëJø’Â•í¹¤ûD“!.úع¸Þ]<]uÞÞh‘ΟI/ Œ®YKØæoæ ö÷/Âýû²‹,ÕüÝúÔ0¯½E ©¨Âî÷.à=öI˜F!w‚Fêdà4 „86͈ X$  È‚®@b‡0A È86º]± ¼èÓ—¶m˜eö]çåßþ]ýÿåÝçä/ï¿~ÿÿîÿÿoç•ì̆Ãóïîw=~ÿ7²ó3/¯÷7³òï{)ù÷ÿwмÔG4ÎYèg Úóý^½tÊtcv*ÂûßÖ:W\•ýýÝnãÕêßÝæßgBë.üì¿Èmý#N¯?o|éë׫µúóØübɬÇçG¯?!Ì´ºÎYÝöå~?JaÎ §”Z´KÃ, 1aVø+¤eÕ0ëþÉïþWm{ÜêW>ö—ŸŸý÷r½Ë…Öww÷yŸwûŸŸÓû¸ßì+¼•^¾Êüï.þþ5ÿÌ¿ÿºßî^Vÿ.ïïÿ7/|ÏÎò4`ŠÊ­ia•mÿÃÿç÷¡×K¬‚ñU òºRç^žÑÊtúþ®¯•_/!taÙyG@w 9tJÎ ‰Æ À¹†|($0dè ÑØð9ŒÄ$Qœ(ì]]òäg v}ïÿÞ~]ÿÞ^^}åö_ýÂû3ïûû«}™/†G þoî_Âúïþîòï²·÷w¹ÿ ½ü¿¿ýþû¾Z˜ùÌÜø9•Š‹f¿»¹ö¿L£Û½™{}×Ob}y·¹yòõþÂßוÝÈÞïþ?ý Ç׎G3²ÿc}}ÙЮ׻ú·®[ü»Èor f¬ëÕíªÂ=mű|N•Zà`ˆFtÉœ„"XÉÇâ¨xÖ{oq ä+[ÝÿLýûûËξŒrï)uœ¯î÷yÿy×JöÇ/û3/··#»Zÿ]ÝóýË¿»®]çl¯72òR¸B‡pq <.tå”R >ø»L§ÖûîòW½êdî—O­?¯;nvúj©êúÒ)û>¢ª™€cÀä#ª$«¾8 Vðe0Eëåö÷Çî9·;¯÷ùÛ ~ôcù—šüèVW·w·ß•Ë„s.l_B¹™w›{ÏŽ~ma[»ÿ̼úýi-ŽÓá{òþ¹^Às`†p-Ž'³;ZW`àÄ?š à Q{b»·tžï®õÃïo»ø5¿|½~7¿}×wytƒ+Öo·*Ÿôt÷i«c<úþW#GcO+» ºrô¯õ_¬kÝž†Õ» C³—¥’-r“=‘Œ@xŒ5žüAg3áñJE9°ih`¤€dA Øüs6ïocyõÛ_² èfî^æÃj¿/lÁ|½Ï¾ßËϼßmÈ×wþîû÷?~»ýyy·÷Ùu¸oô~÷£û›Hì®8á(}5ý¸ì:•ÒpÓ  `›ÑÅá ˽ÈgÖ=Ðæ­9ý„ºW! ÇáyŸ™ùw—Úî¹7¿«û;zëÖõ:·•­v»Zôîáúe{ûãÕÿ»Š£t°È³qÈÏšXªª±‰¤QNté(®ÁЬ¬uF)ËÁOä`µ˜ŸÄ^Gh0Ýíö=}ØõwãßNcâò±{’‘ßxA«íîn·1îöÅõÝ‹ÿÿ°\ýY|>x÷pÁ{™âû¯ʿà 3ÄŸîÄŸw„žþÆË­ÿ±|—~õ›—C ¹û¢Hãž/ÐV‚î‹—ˆøÏ)4/÷tav@J*ýŒBÀE#æŠV‰"í0#Œ/Âå·ü\Úú$7O}ö.³0Hò•/ÏÆî—š=^à’ÞÄH!+ .îˆíæ‚9±°¿ÒoˆæýD†oPIs—Â(Øv$EƒÏ;¯Œ”…ì×\H¯<Ô— %xFàN%äsL[iš r‘šXEúYÿîÛÛ™»X»û”—nÃ3³áXã0…þgä/³á^¹—Ÿ››[êßwÿÿÖþþó33>û;÷aß×þ÷»¶ÿoäÒ‡•l›Ÿ½žÃ0ÿ2-¹ÿÒvã} AyÏo¶M½›+ºîô+˜„¿! F›› ¿Ùí6uÜûËÿø}Òc¹J=cÚþNµÊÏ7n7ðèϹmIÄB4ðU—h}2p®ívqU¼¯ÕÉ£D4%8©ÒÆÒ®F|] G·ÄžÆ‹üõ0_è¿áëÄ£Ík‰‰‰â; ÁøLGè/&>x¿Ñ}âÿÇ»¸^è¼ñ%ñAƒç–0|ah÷ƒÖ‹ì¸=`÷Q‡ÂMƒ Äš¢QbQbOc ÆŒ*Œ<:>X¿Ñ}¢K‚ò¢ù𿚫¼zôŒzt^LGH¢>?ŒÅï Ë~0 Cà@a°/4ö}Áéñ}"ˆ`Y ó6èa&{ü؈íEÍEÝ‹¬V.ì^Ôaø“è“XÃÁ…c Æx=à¿ñ{¢ëÌz=â@øa¢#‘ † b91#t|¨“L]™6œDW P^T{ˆøð÷!}cÜD†A‡ ºá#ð¹ »±s`Œ P>Ñ…´ì8±0 å0¾At-gKÈ11¯1Õîy}÷õ}ÕüÎ}ä?„UüøA{nû™{üŠuä„BØ[H>…ámÿûꈺÕ÷v­ã|ñP‹ß㾋{žßü¶å~Ájý@E@6̱œ @4Œ±h¤ÐhÊñ\4 ‚’n2°Ô¢k3ɈV/"J×ø,]½@cCfj"Xh«.?O8]-e¬jº ŽMOׄ?~á¿Q ®^úø¸öû‚ýä2!,õk”°¼ú z ~Û(O1¸ÃÁ3ÂRTHB¼è@xŽ Í2x¢³åg?&‚ÇÈ $B°uhKpb> —ˆ{¯än¶Ã,.ÄíêºÃ¬zÊRЯW7ÞÜè15—·‘®Wû™æ˜A)°ª(MWš,âžIO¦}kW×úçç½ô–;_%ýÃ>ÝÎݯÿglê ±†t2G$-@g@ÜFn~vZ#ÇWé=¢µ3³ ȯ—¸¼£S%@D¨%â5 Ž„ÙcY SÏZ¼g'UÐÓv¨M%+½ÕŽ·g‹ÜeZÜu¨Ç£ë__®gû= ÒÕíÒYR•äTòk‚€`ž›Q‘ÒcÅPDˆ°F°k]¿A gEmkoÅXêZ ÐRà uŽ»µûë]™ÉŒž//׮Ş~gÐk§¿\ÕØ½Ô¬ã¡›­.Ëç3Q~t~7[L]ç·®¿ýInAÅLm_^sf- ¾Œé}÷ÝøÄEO8&AØ  @6 \“@ pÜx) !’t-€H©À-±Zhƒ±zëºnUñ;Ècƒvࣀsǃû¬Ü_¹¿ïÇ~e§aȵsíðÚÍûê\šœŸý½Ë¦tm¦bü¾=7¾ë÷°µ ÙiÙ‰ðÖ€åaî‘>cÖ¤Z`^yX8Â^4 ©Çr+â(*B¡îA†€uЄ ¡”àüCc,¤#D6…÷Uõa8/X5‹uˆIyÏ}ˆft_#UׯA«‚;‡¨ÏH¦)C8yçR­µ u[;¯Ã§•?ᑹ!_R>…œoO§Ÿ_õJ0 0]Ÿ8@©¥Š aV ‰í„˜-õZÏÈÄ"À` ´Ï8o(k‰Ual„\P¬8 ¸+À”óªœå8ÑƲ¶+]Æâ™­¢éîÜ}†éì±{k½aý{ísŸÕëŒ7aÕç«:Kœ£Æ ªð(’'À"‚ŠEÎÔøA=¡šgƒlŠ’-¡WüßYó ƒÀ6€²„¬¡P8‚VhKc3r<¤ó) î†â¸}®ÿ½ðŒ-w«^®ã_·™KÞ¿J‹Þo×åžó—¸|¡ßÌŸõr”nóþ”µÙq¶i¾Ú]Þ~›Ô¸}ä!_±«waèÈD…ÆH– õ%½0!¦ `g4‘þ„M—@¡½³’è¶÷«öTjMvv:”¤ÙéýžT¶÷¢Õå*^wåÆ^'˪QèÙBïOk—uí{—Ìö76TºÞ|.êöV·Öê{eæaÝ dÁT0P‡h`þ¬; X+ í˜ðb‰¢€7C]¤:ÁuMEB!<'ƒŠ1ü@ómlT,ÔBá›–¯úsÇ—¹CçnÕíGÎLí¦«  ×`¯æeÅî§+¦¥ûøœÝÅÇÌúœªn?ÕÞÖ9Í”˜ú» Þ‡6ýH±Ž­œ/±ÿŽV·p…A§0Ø?LÀ߃ ŒúhfAPPvázÆÄøiä›FÜ{ùžæ¸‹2ˆIËÙÒöÕ³%*0üi…ò•Ï% æß6+~¼ŒïèÆ.!æn=DÿÞWû>«Ý×wy}Ó)&ÃP¸]L£1^ p’ü0"vìA9ð$&Ö )h­ø¼—aWþ°% ”,ÇDâð…L€aa+§F“Ú[ÖîÁè;›c×^Yt^×ùCããÙV¯êöF÷ß´„òõ&|ÂjL[[K½¼®ý¹Ûw{™ÞÅVWc ]4Ü|ÿ®»w›[ùJºA‡(>4 ,¡DX z'kƒ@‡‰tÁ}x‚HŒ†¾"Óæ\fêêóJÈŸä2†,²ñòŸªÊBy²›½Ê±÷?àÄg«*ôÙÕ4û>Š¿žJˆc^ðÊï×úO¸d//rÚBnjðBÏA¤l8ä*ÕH2à0ØR ˜&!pWº@‰tßIhÖŸT’Ò‘Ì7©¦èÈ1,&"R¡·ÉVPÝÓœøÝ×–õbÔ•[2qŠ2û+É”S‹™½Nëgöô%]’Óle³ðè*rx,ZìÕ×ó)ÛùÒü¯{îWuèG.ãÚîÖŸáŽÂ(1uÞ’åpéZ0cÁ0cbî—´è "¢!°1Ì@&ÿ-¨CÁRp¯Céûç‰U“ Ái„õãÊç[¥Î=o/—ì±q„yjŵ$í\ÿ‹ùG[Ç’Uç¿ÿ¥U«äR]ýz•…wŸøÁéKh`í„lg†€˜Cü¦0.@Nð¢&ç‚VÈ<€>0SÄÎ69h „˜ø©lJÄeºS²ʇ€‚‚ŒD•ˆ¢Èð±ªþ"˜Ýˆ³ÐÑehb,v~"5Æ…—΂'è,aÕ.åDRÿ…§ÓDNrN@‡¬€>‚,±üDŸTø·ÞáqK±i,¨¶êX·ïáG΋}Ø m¾kœá–ø¶–ص¬lZJì/>8p\¹\‚ݧnhfõ€*`BA–Ñ0] $x˜ehD0 óÂÓˆ¦Q 8F ˜`†žŸ•=Ѭ–‹’ˆgB‚Ç¢à‰Fï›b5KñkH[õð³Ëñg2!´•ˆRà¾üD/·Bôÿð^uuÂâĸ,áÁ• bÇ–‚r€{Œ^–¦ °~†Œ w¶aYhA\2³‡Àp  b‡ðlCfgqð8ÒÍB´L! ®ü!M›®/ðª´@Ó/Zi¹pÚ°“°¯VtÙRç-ØŒ2ų:ß„ PXö¼ ê‘.ä=ÃÞ„1kËúNSÕéíä¶oFqªÜƒ/{ß+gŸä‚÷}Ai‡†¸t|EN‡# Í(àZ}wn%°ÐƒAõõàÅQ§-¾Àoƒ‚à) ›àþU¬¥=—š8ü^pUr]Ì¿få§×X.ýÉʽ¬WÞa¶`ûÓr­KŸž^ßÒ¹/£NC #‚h¸¬‚Xè$ªF|@Q´µ‚„ €2 ¨Èl`qŠ$¡Êƒ­øe„04ƒÈê(|°ñ•K(!‚ìZ ãÂÕñÑhŒZ`†4"mˆ¬…¬Åšac1±|D¢!Þ!Ü"¯‹F‹.:ˆ¬„S·‹=ˆ²âÕñ!r ¨P]N³ÂÚ‚3âãÄgDc…ª`Z¼.<\@F|X¦Žc„kÄcÅÆ‹Ÿ¬Óy }}KU!q$…µà¹Ä.ŠBßÁm/9`[‚^ ËLJásh 0n‚Îáà¿Ä0)D8lsh. a‚|ò˜\ôC ëBЇ¼" ³!}dB^ÇÅ”’!eÂÊb#¢!Qo‚âBãž "Õ‹j»‚&ЈÐ/ˆÂõ ‹PBp/z!l^…é໡ ƒ‰TQR+À ¸]/ ÁdCÏA˜… @¸’sì €7¸ ¸"Z‹ D†` ¡ ¢`4 l†8/`f†då€y2k s˜…xv¸â å‚›‡n± Ž+Žg¥×‚IYEæ+±«OOÊGA7T§Žñ–J­/½ý0£ÞsR¡ºÕxµ ž$/ãœæV+]uð¦¾ÿºûÓ9xýaÕ!+Ù•/ëS_¥Sq(Ü$x8ÁÉ÷#V±}ÅŠ‚4tX>äD‚I<ÜŸM`ðNÄÈNƒhDŒ¢Kª»'³-6¤‰êíd§Ë&ûaPÃT¤ä*ŽG×^`t% Ö;„H²bdž R¡]QøQÎÈ3‘‘G^«o•üt*OzæÈ Ð ¿Ÿ-Û€:¼tõAÀ™C4KŠcp5Î$I“Côü¬1Æ8Ö&Hè, ÊBwÒ9U !1`,.+™óDâ1lª†»Ìƒ˜€Sh°"20Dfbp‰ jæ‚€tv ‹d!F€ E“‹~$r‰9>rD¼¡ð‹­^ Ÿ+)…*ñmA °&§äBÑ›pÑ/¬Þ>y½ ÔQ¦#!1 (ȽG£}Þ|™•|j,"€”RyR·w”¾ûþü'ÿKëÍs»›çø )¿UTv¥z;Ur€cÖ•Pâ— ¯¹53v¡[­r^-lnWždZLI4Æ øÅ€èÁRFÄ õôîM D KVvv3€TD>3Õž61K¤AHg„À®£¡¢[ .U5Ch«áÜÂ,X†OFœÏ!=öÈSÓ ƒ,Y:† Bby>‰â´O…S‡‘xœ6rBƈoŠdh~9•Û:åT®2­*¢UI14Bd´™26Y·—®†l°Ï$Ô|‰ºï»ýÐøWº÷ ýåïæìäü]úÁêõnó®ë“êt‚ûÙ\ø8Ä5¨Ò*üm#Ò›D‹¼kÆo£gPÍבݧunòõOª— jž-V8fpF6ÈGÆËÌ4Æ}×§ìeFª‘ƘcEwel²¿R“o|Šª¨Æíø)å—NvSVcD‰Ò†á îz4ÓUÒ€}´[D°æVw±]]|ã<ªZ@j¸üˆQ½Ó« Ý–GÌ')?§fäÉ.Ìjëì_v¿Ú{"¡¦”‰Ü8pÜÒtò£ PÍšmVF:óÂ*½ª cÉb‡9‡®·´¯Rùê¦Oüæù8½ê\Jpý»} n½ñm­›Ù^ì¿ø_Âë—¾•Ý2»?®ÒO}>·N¦wæl÷·á‘»¥Â÷î½ÙÐîÿu“Ä%¨fA¶@DÙ6 3¥a˜1ŽÇò}›#K†Œ&ôŠÄñ I-ùy+ 0LÕ¦+ N­Jfg±â|áæÍõSZÖ:Ó-ÉÞÿœ­}É-Q<žÒû Rë´ºÝcÛû»O‡Cá¹sºsÕœ_ÊÒ¿ÝKïíì¼ÉAë–~=JkÕ{’ö˰«ü¿FKfÍ™Á5ì5昃©‚².+E#´ Í&], Ü@eÔûëÙ¢¡™EªIkÛÑÕ'™¤R0Ÿ‘òJ×ÉGßÕ÷ªÇÖ瑞õr°—R¾Üm÷ºl“¤1dåaPúdÖ"ÐÒKÖ $…QAÀ½J+~ÌÇ…$7c¹'$½d]Þ­ vFƒBb'Ãj\XT/ÓÉÓ5LÂ'Ñ⦠ï dÅ“„NJf&ȾFÔt“µ~søM®êzÉL”¢Š&‘¼Âýwžý¢ï\ùo+‹o­oŸ>ÙÎú¹Gq‚*IäÆÓ_ÚÖ¿ùÃå |¾¸î÷^×+ý×}Ó¼êß}o2Ï…e±Ìû¿ÎëÌÛý¼aB¨aÄq:a)IlÉ’)‘‰i¹ÛFˆ”bg¦u0ódH¸>†xzŽƒÇ¨Èöa¨ØRl¤ùmññ¼Ì±Vwq®5äñkL7ñ¿Išf€Õ´$Ž€Ä#‰c§gnØí²ßm¶ ƒœO 𒢄KO¸”ÒD&¨L Ågçdëe ­»ù{uç+Ðøµ°êû¬"—¡†1Ï:ªôjãë+^)\qRÉä3Xjy°Ã<¸*‘4ÇÆÑÕ’Bè!þëïG|PS1ê B7È’¤=<§$9ÐoŠ¥º¹öä6Ÿ b°åH'ó~â‡÷X±Hh* LÔ} Þ8.UÜ;0)M‡FŠøš#fÕr†ÑQ,®@ž‘OK¯I½^ÇýÙb#T(ÅÔUVý*ý•Ø/F‰@r𠉆e…Í ÊNXÁƒKÑ‚égègÄ ÝK‡I™:ã}wÚTx(]X„fOQ*uÙ Àê¡àüÑ£sb2¢ø€=,>'Ð ¥ãa 6Ä’Qd%¢š“L@è»K?ošAutý±MkÙmò¡\Š|@–Fõ%Îzë7^ :ÂävsJX…‰‰È ‘Q@ÍpÀ¶¥“óÑ0Çbõ’¶”\)Ì©®ÄQýˆÄtp&ºhkqõiÉk¤‡Í´Ù&•7D ÚûÓ§²ïã ¡y”•%|Ò'Å«ëèt/!OºßAÆ–jÙ—oºUœfÌ0Ý„öiSwˆ¨Œy4Âðcåìs>Õ³ÿkóòîûz}÷ýµ…%ÓÈ}z÷ó3呸WnßßV„H霃Â-KêŒù‘pãX0"Id—‰+’Ÿ#ÄÚ¦$á¼c(b*Hãy™'¤ÔN7ôïhÅAÑÊ<‚žzBס¢¢3㻡ÑAÀŒ1‡ÑĨ¢Ç„¥`þAÊ›ž€ðºëµkÖ›ª¤ö_RMZʧꑣýÖ“""'.u&ÓN»L­Â•­qùR”è±lË%•§öS³]æÿ¾™Jè®+Ýä«ðèÅŒþ/Há!%™]æ1nü6Í¿ìNÚ4'òm—–ÎOË”¦UTNV½ Ó;6X•wW÷_oÝw挌E.”X>1 œ-Ë”ý˜IçÙ‰„Í':¨\žy¥ƒ3´Gð›‘E=Ÿó´ÊѤN­ämëÑ~Yh‚v C:fR$âæ§ÒØì+ʪôHéƒi š”CÀsRGpɜꄔ"/È•¸úLd:a^'@ç™`¼P¶áad–´ý„Æ¥ÃThJF唥»5?ä×Uëe kÕu ^Ѳ%S’9ÉiòeoÞ÷õk ^.ú S‹°|˜ü¬Ö&èΠå!åC˜¸b\Šù@¢XÒ]bn^¨{1åPÝÑ2ŒOA;¢ôÇå>®VOÝ>y[¬«u—ÆáC²9,»è!±”ˆ£(ŠŒ¢A Ð܋ك°Ê0£Çu*OG•¬(3F~LêÄ „pâ‰P~Œb:ÁBzMè'36*’:W‰@í"³fíZú˦gãx«%23KƒØeƒ*&ì˜)¤ 1¡ :ÄŒX*°©Îq÷d±kW©‰ÉM¼Ò)¢ê'XºII›†±OW¤.—•»Ë­%Ý× v–}íÎõ~Û¼§Oz”ýØû¿ñÊG~ÿ÷b¤ÁÔ:‹‘2ÍìeU÷±|Žvß«¢­ Š×߯MlžõµYDŠ‘ûL,‹ŽzÓf¨Ëñ ÖÕ…Ù{ò =_ÊrëUŒµÜ^~¨Ä’5Ääy@;J+—;$ aà”‰ðÚ­ YøkÊ^r6†>íÄ ¤ø‹“Ñ ö»—ù8RH‹g~µ5›ñiyÉ+$ÎcÖµÕ||œõQ–šZU(µ Îñx¡Ëœ6“›T%B ñj›^êßÊã¿kLz3ƒŸ—,^„•e Q ŒgS\$­%ÈÆ\Ž,fýÃó+½„#Ëâü͵­M˜5Vy®e†?g•Â×ìÈÕ~_á ÍüìÍÌŽÚÝPÁu‚ÕëH1˜62d`~cCÇd•pS-1|qFi"ôÞa'Ô€J1CÄ:Å ö ì™K3˜}j¤OTÛLô’úTˆ_D©%¼‰ šŽ@ÞPc“Æ1T¤é€jŸ‰5Š•´wC·DÈžN‘½£²ƒÅŠV©¨ã™”‹+е®+.(-:<<¡ò¾;IåÝ`¼\Õõ4/Hå~Cë#b†Ë (õÁ¨J§~ã§ÓìNºÿ»vXÈpòh¤„d‚š¥ŒÎ\Té¬S°:1Ϊ£ñ1,Òƒ]Á®WJzyQ«g'å%ŠßS:­LûüySõd‡Í ™•HÄtebÑV3LQ“î)l2€Ü‡úäAVLlOŒ¦'ÅÅŽ7!¼ÐUŠ„‡˜Àó(Ô˜`¹tg%–·ÌÀJ6‘… C‘‰= äÝà{¨"®ÕŠûï¿Ê•‰r䈔Pq(h‰ÀiKcñØvs¯¤‚øWŠú¶kxPbì§NLNJL6%’XâŒbìøáÕ'ä\!”Ψl˜êÊ^Vá;•-q÷»î•=«“0£õYô¦>óçµ~†TzŠjÛÏUê-›ô5þ½†ê\†åå–o1=ÁqDŠf¤ðMx>ð ¤r-%Ÿy‹€0­!…QXÎPT™e¿x dâQ˜Ä x6E0…•Æ9ÐrqU,ZÓÕG ±’G·Ë'…ê9æHÉ i°jF(jà!œBbŸ¤0 ©¸u „ˆ¥+Ôºí&ÊÜoÖÚ‰ÄШnÁ~PÊ(²_¸¶‹Í%®Ž)9vi×µëíξ‡]Ã(ýõåh†Þ/´l¯Ù¦Sa_½û®d)ßsÖº™†I9¤ÆS²‡«w*{-Jº… )'¨±Õ:ÛíÈÿŽW-,=ê9ÂŽãšçÕmä.À¶´óž[±šåÛ;d­åÆùõk»I»¶‘ѹâj#IC«Cåþºî¯Í/˜Î¢´9µusÅÜ¡  p- XiMìLAÀ¨j±s¡ð+D‡& À}–“DÖãU­FÖ›-Nº{j¨u%LÑ–KÇòØãÓI3JI IDϦYñ„ m‰M–µNWçL9çÚuë5×¹}Zh‰© ^­^‡~ì® ¸×ëïÕÔki>4Zº'hÜuI9XڀфÔOK3ã0dÒÌd¼»iZçoÝ3{!½pê¯\Ü®ÊÃYµí•Y‚üů|3z;Ûíq"Å,[œ¶) F~R12£üh¾+HI©&ƒtÖHe)9'Ð5!ø; sr†¤M~»hfÁzóÉ•/‚CfSDÓ‹ŒAÜc>4X)4CŸ•0²ñâg (‘•EÏ\ùåßPM ¦REW"\,'·ȵj¬â 6`´øžV¹É´-óˆ¦ïÓ^ÿ_¥qè/®Iž[¥éŽ˜LzùÕçBëë6±ýbÈÖ•Ú LmdsAµ‡Wr«ÉCN¦\ôÀn`ú„…©@bh⣕Ϝ:~…ÇÚ.ߺŸyýÂwG\eZ§ÉJG‰ u))VZ}ùùÚÈBù–IÇeêNžÝ“‰Å NÔŠb ȇ6;5UÕzºí_hÍãS4”äîÛÆNÝg3£Ya˜æt1͇s§4p R§/}ªQ’¥áù ×™D΃B1ÉÅÂß½ÉHF‡%oSU'¢$€°iâqÖ‘$ƒÅ‡ÆÇ$ù2m©±'Hµw‰þÊ©•ZT]z2!î.Ïî ,—â'“ lˆJ…å—gù°¦®½ÜkÏ×3™Dœí"ƒh‘ÈÉc3oÊȺdݼ^çÑ+k¾š¾Fë£Tf–ì)JS·œ»è½n’¥Ò3é±Nô4þG×^bûzÎWÐmîÑe³§‡X‡;AÒ´tY´To)·ZvÓ4ëó ¨í6Ë•Ù$̦փn<21 œü¾°žÈÁ劗B[h×™.·D&uÍÊÄÐì,\&ÄHü&eƒÂrÒBya4¼‡‡#qo²æëNÍÿ¤k¾Xé‚ÃÚmOˆv2¶>"ºJò+)×G •5Ìwß¹ßWo²;L¾¥bïÕׯíyßÿ^g×wk°½øÝ>–ãZ†ˆ[ƒåØÍÞ­üB™¼kÉg$;xúäÞ‹ú²ÜÆØuÙËkŸHÏæöM‰úçX²³‹Öþ½§ÑSªxíª¹6âÆºd ž¬–ñ% ä5w/ïhËÉm-QÉ%Pj Öi tj¡Þznˆv4?J%ã`p‡‘Š%Ã0S–ÏHRµa–ä>]Do§tå9hýÔ^ë ±2:Ô©i ¡z¯(–†„m"è± DÔñ HÏeÃô˜ÄÓJó¦ó§º­“䥺*qõ\ÃVüí „[á1WïáŽïô~îžõ¨ÕqkkÉc `\²¦<¥ ìÍž”wdÍýq÷×Tméq³XnÊ~ý2²ø|6θçC#]«1/Yds/r0·cçŒR)U§ƒ\—XDϺf|[3êiäh eSëXâëÑCTíäV8ñ¸ì' ‰eýEŸ”‡3V¯ÏQ§ɪ ’MpŒ1 3ð‚`­§+;|ö'ª,ƒÆ:\+iSŒ*%ƒŒT“?ˆu•Ê”jóèëKô­PX+R­¢Éó<ó?Íu†ÅÙÕŸ^ú«Š$Ó?;T»k¡yÖ·<þ›;VsªœÂ¤qÀØc°¥ÆÙ#[8?šø®1%.áùYÆREZS¸­A`üÙ²Ò…7ÎW+:ÛŽ8Jªúì¤ÑKV8d¨¸¤ñ×µ)šÒ#‘Z5ȨUÀŽj,N ‚ÈþDÄHÍ<ÛCË^>5⨖(µeÕ¥”:bámMœ•ÛHI,•–(>86n¹Ë«— Xxr¬ÌP©JAøÄÔíÒIÿ!§#‡ —Îǃ“ÇÓ"‡ŠH’GPíô¦ÂˆmÖ゘£, íV{‹$bœmNh‰ÄÆèˆgÈb „: ŽŒ•(ÌVíØbâl7™<º4fÅÑ-‰åQŠY“‹®tÊ8£Ç¹5^ãΧ“"l9¼8‰èŒ¶^m+g¯Õ·Êî¶äÜRíº¡Õè¶…q?]m¦Îœ5ylÙ·¨ƒ•¾½ä«G¦×7]¿´ôß­æ³Jô¯tŸšW`½¡\” cX®8Š q˜“íãÇ}c‹Â1]ø¶»†*ÔRUqJ­’û0ÙŒ”ƒ@MÈU?'µJ† –*äpbǢࢢ#›)KÃFz&Å1¼i © 2ÊCùØÒm"fÌØ9Fh:ñàO¾GϨ¯RX»¯¦y弪­óGÄk0ÔúŸKd÷° ÖÉ3'ÌÕeÙÈÃúpžÖëZÁú·Õ«(Çè÷BrŒ¥'¶…×+Òü®ÎúºACcr jUU×ñÂJÃ&^ò:昀ƋڈM„×gW® ÞGó·+–ÄÑM4ÚEý§=Îs«:Ò’¤]]Už¢TrÉ1 aˆ/t3>&Ø54P¸Þ5Ì—3U'|ÄÉØ”¦ˆ½º½ä<-,¿ªTz—´ú½:µ5Smó:ÎG™Š+i¿r¯îJãUëyðþ·dí¹ª8í¬?ÓK8‰g óVû¸òÚ3I×ÉÖ½®"lÞ¤d뤂MG¨a diLøÆÆÿ>{-ªüÌŠðÚÒU·ïÞg jIxßM°«™á%2u‰I|q·ßº™Ô ~d擼]?zœ~m¨°cñdˆŠúÙ¡êæuÕ\ì#WÑ8tÕ›,&I w4ü¼ihr¬öÛœÄKi-èEÃÖ‘¼¡ã”èÊ/Š¢ëˆ*SÈ0u®ÃñVþòO.±p—Ž‰Ð¸L85Z“å×lk±ûY•·5þ;ó()~kRk£„i'×[¿›ØÍûºk¨H”D”¢Z|Õ¤ré„ Ë)HÌ0„’^¬Èo9a¸U«¬|å©ÐñÙRwg}ãíjª’5l‰2j¯ÛJ¬ª§§Z7&${‰ N ÕŽIʦA&TÕÄ áXª(ˆs2á4í –3hŒxNhtUª‰ª×tžæ¨%,0)–ª!ÍÇãóãñWçå")ÙÂÉ—P™èv²1‹Ó4Œ–p;œŸ™>K65Rr˜©®ŠbhÑD+,Õ0w‡°–ˆ£Ì’&"K£aPÕaªr2%øÎôHŽ„ØÄ¸Ò’Ùév‡£î³¾v‹b­*Cm/e†—J«†_‹–ï@_%¬'‘²‹¥Óéž®–Á]ˆ¥23Œ•.Ž«¤ñlk?J][C÷çE“¯R4dÍ vz¶Þ¯] ibëS—ÒŒõ¿Ð>ïBú„¯n=ÜÎVv•¢Ñ>À§Né9ÈÍ ƒÈvÅä X²¥5]T¥B lbâQ÷[—¬oî€Ý‰À¦Ã(¸'JgʧVQPzÝfµ'úS'¼ºh”QšQ- B¬ZRT:?E¸„ÜnP<`{–,Ëî.Imí"ÚzÖKZSåNtîuU7]wÞžt#ih±3äW‡5dÓÒIT^ÅÂT‹ÖüœÊÎy[r )Wäëͳþ0ξþèw? ßInR•,k²\n˜¹C:·=5Pd`¾mÕmÞ<×1AïÏÌßý‡Ïqùz:ùޱû×¾½õv•ŸOª¥Ö<ä Ú @ôLŽ¢ë¶Ù”É«© ´Ê)à‘jd+âwtΆVnùz`i‡DLTe­}iÑ-HÕ"–›ÙPäT± ‘X&-!®¡ ódÙŠü'*âIdŠø¤R6‡1ÙòœoªU†2EÍ!!Ò—P*x¸b5ŽT n+2zå)tÊ?bÌŽnr”oã3u~^Ú™L—Žfwd¹‡9Z3ýS‡ó=F~‰¬ãù2\d³CÏ=ÓþWNbp«6Å·#y£¡“ÆE©y •äv/ ¶f½WaÊÏßêVÞbhfihaS?2™·‘ìšùFÊ.4Å㼺7•MUŸIJ… T+Å •ó[¬?ËW! Âp¨jOdvßrCÃsJFo+@¤ù‡#a¶CQ©Šp)ž«~½ •¡™ƒiV•uŒÔ ±ª3+±°xžHì<¼­ð“Öxí:FC°ÊLàH¯®sœÀ…Æ¥˜KJÅ"ØÌšÎ -T̶ꛣ#‰âƒB‘W(¢“°¢.Š)á´ _)XY}cáTb®*ר&a‰8èS[® ãQ^;€Ä'‡–/‰‘MØGÊ•€¸¥ožŸ« ‚™ðpŽF™èõ{›êÔ ÜR±è± ¢2ƒcN˜Tjx h«9X§Vü༂« 4D±PO 1¹µ/ðR˜Ô­Yd²&‡$*T8¹&$³P‘“‘¢}[¡/xõQMãÇÀÄT´Jƒ>‚èXNÉDǪt?…T;$ã¬-òãè ”\[2y0M àüLôO2áWc àJ¡°(D!É?C¨PrÄr3ÔÖÚ¦&$CåªKoò@ˆ4ËèjvQát4qðŽ[EBh"f&ÈMÐËB?£dƒP5Fb ˜ÌÅ©/#¡ ¢’Úž¨åð£\ê­×W šS0ð#¦¡!qcŦÔ67OT•–7P(+9·Óð'ó"b€Å – /b/«X'i,0´(.”ÜŠ‹+B©pèÞàV=ZqJØUý¦ä0*—^0‘š0%P òñÈŒ³0ì&ˆ(ò¢´:]‡Ê:c[©t0‰™U×ÃÑó£òéϤW”ˆ€Ë†ü5Cèƒ{î‘‘ ‚SÅsá–]8pÙ¢¦ãcdÖÃ’ØúR ÈÕ8Õ³Ò¸3ÒÚÓ›„€¶(Šòx‚À’0 -ó ÅסȤ`’仟¶ñd>¦ŒŸ>©Å¾±×½cG¯¹Æ-”¬ŽÂh§ÈGâݹÛÙOßÝÈ嵨-³lòÑv¯ôÉRëu÷"¦ÄEŠœiÓ­ªLv`…ý«Í¬=if?”BíjóKS.’ˆ¥V·LÜíïÚô9šeÁyr ŽËrÿ¯'uÚ«‚º©“í¯H¯:bK]ŒäÒ¡· zgæ~ox£] (ÇW}5a¤“¬6¨¦‡¾éPø¸bzå¶‚?Ï•½Ëz‰¤$ÕXœ a·èœèUœ s2 ËŽŽDäL6dz¨íåŠÛŒÎŒ8ÓÍS!‚JBYVÛõY‡ž|묬É×vñŸHú E¯gíé,yøV1«5Hñ¼è‘”U@‡7) Ò/QRû=ÃßW#èÄ÷$çp>³îWU1>åO¼·ÿtgKí¬mä· hr×ϸ×y­AÌÕ¢´•Kè¨_hõ—ù­šq#Iê6EŠsðú"øQ7¾pñ¹ ¢ÿ©ú^—¶}Ë+.”߄Իj‰Ãí2ÑiÓ×^ß·¤®¯òÔ+î½Vq§R £g£æè³d¦»éal'¥’ò¼½hý'$…PØl(’¤Ë£ÕèÑLöXà̓„ÝåŸì9¤üâiØ -b"[s‚yô0ÅJgªµ,Ïn‹Í‰Çzå#[cbwxÁýq=ré^yùbE„LUüêë Ê)xu´p|ú5ÈdM",Ñé¬sCå»'V%“"Û%œÓ¾ë?iÚ÷/T2ÍÚU©Ú˜ktœ(ïf©†áXÉ ¦8f5ë’ Y7€œÿZÏ"—9(79QÈÖM#×ë4³Zú%hª8Ìg’ô°|@—,Ó üT29:|÷£E *A# Ph…W¬"‘2ÌŠ*C”b ÐzvÀë$Žq# ;ÑLn M> œ@Ktá@ÚV0.%äJ©4ðRÔ$p¼[Psg—ÏúKZ„Ù®K$&Z£Xõ_Âu"º §æÃ‰£37WE [ÊÃþr|ý e#i~¾][ëN^¢Õoóë;ª¶°™ÏÊÊìE£„O°÷¾ü_šæ-)`mRœå!û W¼ä®»W +öGkâGá¿l¡†EÃPtUF(Ƙ§@|”ÕMÇ÷`©#hÔ½Ö®ÏØ-ü&¦§ÓQÍ25ÑŠ- À–‘$8Ñ]f©L Ì¸xf©Yë¾y¥HeÉIiàáD’"ÁtXÓß?/Q¤š6š%%')(ÃüœA,[JGЩ5Y"ùbÛ­! Èã)s‚Úv.Íl:äÔ¤Ñ):¤¸Žå [O±SÚ§ÒùíÈýåÁùOßœû- ¨½™±²CÏçvÒ.Àú*V=¯]^š«YH§Ž KP-->s£Ñ4ÌÖ˜˜¦´Ìì~ʯM¯þÕúB´Ùܶœ¾?÷ÙV'”êbÝ>©qòÊ›$?°L G†¾/ÝÅ)™Måüb°ŽÆ¥ªï;þŒàÃëß ÈÂd8÷Ÿ¾¶äB §çQh\3@²'Œ%DßEEOC©á75L–¥>Ó‡|…!y8Æ nS^eRÒëçl{ŒÌÝÚX2D‚KýaO›Sv¾ÜVVé'#ZGXy±ÛnŽbÕÝÕ¥¢o2§&@äx“k/÷k R-®yS®qÅ—>øóÙ÷_ÜÏ®KýÖaâå¸U])õ~4•ß3RöXåú_/„ujÐâ]CDÜaé=šºkfÞ8)8;¸í‡èÐI19ÏË™ «DÄi8œ¬i!ÿa}jïÅ+¤ˆr®ƒ`ütRxªénJT?®éóF}²—/èÒ0ƒOL‹ ÕŵMr^­E}ATò–|Ó”ùh¨ÙÀ2LHŸHxm†=0‘:¦‚ ûçÁS) ãð*ÉòlŠ8Ð%{J„øìNHp§hæI @à( ‰lµ@œ[«Ùu@S­xUMMë(sÎðSE!a}y0£¸~àSÛRøON _]< 'ß#W`(ÄàíaCadGVX0E`¾!DÍ@]{àüU–HZ% ¾!Z`¡Ec Bì`PòZ—ÖxvUX§Õ6B¶»8SQØŒˆ?Ï¢øpOdÆ„åxÌ îTØ0b!/0%²SH,$¿K/Ý|&JÈ…a8¢@@ć8Xƒ@0t,¿¸…k£«âØZQ™ÄÇÀ-&”*¬¡^hؤX>Àp,ŒBâF Øã@ˆ\A‡€ ÃÔ´Æa7ˆ¢ `ÒЀ«*–A:8TEßI¤ÉO‚àŒ¨+6¯?PŽ.™ "Š -Ú(„U†b Ân5BP|\lè ¤pŽ˜â°æt|Ò‘èPœzIçh«DЉFÃ’§‹)m¾ ««&·œxAëK -'Aêø„\  òcBÿ;Ƥ$DT!.t°z! ʵðT5áPySà\= |Œ2Yâ‰ÐÀq4¬ ,ƒ…Q@EcÀÔ®Qîè? •pvI|ÕTà{&ÖÑ,¼>;è•kð}l7A:£ð¢Á HÇs•J­„Ù÷, 2ò G"ðÐùèKˆ!1"B®T‡ h«*¶¤éð¯â303 E`êÂp<` Þ2ŽU/ɶL+÷(ûðŠôA+JU2L‰aˆÇ)¶uXMéÙÙ<}™Di©­Ì»kï!£ÇöS©9»ê¿µ­a8Véo¶Ç¯ðï‡ö_ëú¶.í'ùÿ=[#æNSÇVT‰Çk¬µ×Ï¥^ó#ôÓOÈÑÞÞÿÑ9 ÿ\{úû¬}¶!¿Ÿtº_ÝYysćž¼yÎ-éR$>‘,:Xæý¶)(tz´„ýéf¯Ù^…[$‰&„aáV2ªÜmcŽ(Æáßäg…Ô”-¢0Éò4‰oŽc0>¹áeÄ[2\ÉôòAhõµq_ÿó~NÚ– ¸uï¾¶K^q÷`úóŸg÷ó©u†9%zªÏ,»§ZZÂ短¤h¶=»ñŸ¹» _šö1³D¶‡y}J'ãªâˆø<ì¾)HïJe²$˜|ñqYÒ³çÛçèÄr3:2XåÞïL¬ºÌ‹&ãýõª÷©,ÛU_¥]KlÍ=2‹5öBqŠëÿËš´•2|Î6LpÑ#¤r£ vips-8.2.2/test/images/sample.mat0000664000175000017500000263740312530402247013655 00000000000000MATLAB 5.0 MAT-file, Platform: GLNX86, Created on: Fri Aug 21 10:50:22 2009 IM{> xœ,wpT×5PÜI)oKq ¡HJ( ®Áƒ„(q·ÍnÖÝ÷­½uwß·oß[‰àÚ?ZBÓ…àNé—o¾ïÞ9÷ÌÜ™;ó›ùÝ{î9C{õêUHì•ÐÃzØëÿ~=Ü_ï^½¦öà‹ÿ¿ß»g®ïá¾=Hé9÷ÜšçûݱܙínTíàÓx½ÁãÞº˜¹õ×øR´"8Ìþ¥*‰XIÙI¯ÅcêS°i*î?GÛŒd õa¢ã™«…GT1CÌ:Ù³}b™Å³ »¤³%¥¬Ñä¹@²¥ÓX¥ÍµrÏ"ý+‘‡»I¨ g¦ÒOH¿Õ»”ÏÀ í Õað ø¯,HÓ¶i zUÓñ<¶6¨Ö\w‹§I"bûi+–_LûŽKÕmtY ¹²nàoþx"/ð¾ ÷WùášäºÁµY„颗vnðþãÜçns°=ý¡Ù‘鱋mõmP ü(XîeÊOfßå{ÅÀ^V× Ä%)/7„ŽÅXQ‚ç{ÑúÑ2f)¾ŠÉ•·îóôªœDË'KŽs¸Wïã«ñ…M‚ æ ÀBÙ! (Ë-$÷«gU>¯{Ò\K|NÜCJÜÈl·ê0Ö^6Ð1Ûü¥´Bªws’[ôÄ6f€¿DjÐ~2žä¦¶tQœ'´ƒäq€ÁúÐÌ”<`Ú„X‰UhåÎcýAŸÌÝ Ä,¢"MÄÔ4ïgÏ”è%©b•äyÐ’d/ Àxñu`¸@4“‡gΤ<À–5Xê'a/’¦Q_0À}_ÛhxWÐà ;K]lÇïŠÓ +«S?ýÛÔ&Ž] rÖˆWúµ¼Çí¬¯¨zÓ§Õ]ZŽNˆdE²cáSN¹>×ôÑu~–@]úqÆY¡±ámçÚƒ­µ­Úfdž…_žÚ:ÙÝéüË7 1D’byѾ/ujqCÑã>Ö×Öw‘úJ_9nxz™F+­ªtsÌÝ;ð{¸fÃa8©CuÑb考&»Æ>ÂByE< kGÇ/þOžåHñ ÷õ6/5=u%x?»#Æ r”?N0 ˆËä–Ç¡¹í£bOÑe¾‰’"Ž“¶ˆ*§Î$âšM×˳9xH?Q ‘ÍWþ¥X Õr©Ò%f‘i¡–¢)–”{T?2ó°ƒ)O(šé„¨ÔgX Ÿ%?+eÕbãnm~*•˜ ?z%šßÒÚö‚«ea±YŽ,`¦¶¤0p@1[¾Kü3‡É-`Ýan¯ø—Qgª5ÝA6™xQ Lû—é£àšÇTa³Gf•ëë §N-?,Ï£•74&1.´ )Û^%n‰›ˆ!®Sª‰YÕGÊŠ°sYÂub©p¬bB¤:kxea ºxX¡1Ð÷V¶b<1£|Hõ¸ºªº¼)ñªò˜ë³ÕmS¹0¾>ÁèIø+´9§†;ÂK£ ±å¡Õ–@.£ˆ1”[ÏNæ‰5"‡}´­Ž¶‡S•I@ÎXö3ÉoÎð3»CûZéT\´¯ðtAŽ4ÿ è¤Ž­‚Ðmë@­NZE_@¸-¼îžɉ³ã¤ØÆèEd ̨Áhàtàxð9jê¨håùDjë%Ï-ÀàxL™Pt[ø=”m€“ÃozÕÇyH¹e8HUmîüÝ-µ¡26åqÍOgK¿.<›_ZðSu„¶Kä}e’¸Ê=:ßgw¢i®v‚&ø“‰§êˆ ­L2Ú¾:xS½ƒú:õ©qd¹Ÿ¸[š¦Þ¢ýK¼KÍL§" Æ*:¾jVà—R³˜[èÇ›ÎT=Á]c xCØ6‹¿X˜É­¡`[$ä.Vç8g.kmå±¹¹ª¦ œ_ñ¡~ îbu1—)g€À4O²sž£ã©îjêŒò4A‡Äç~‡~{„d eñ ±ËsöBüm¬ºiFmUýÌ‚›½*û[4€W%Ïtj,íZþw»®ŠéZß]z{KÔ.ÕW‹„d­ d Zôip¡kè±õm‹ÚwÄõ±Î>íA÷¹Ì0 ^BXMmû6b²ñßðA² 7›_{ á}»”£ªNàߤ)Rœw‚ï›àZŠœÎìyá´°Þx@þZ!T$«…\1VJk…ì¹"_],;~iœáÞéÿÆuÌøPÞFÁë¦ïËBéñ¨1hדôlJUJ™ß²‰k—ÛÜ÷Ý‹^~øZ4¸ÑòôY†\ßm¿£-”Þõ-àË…Ó¨`Ý‚ÚW˜ëØE8*ÍÃ)ÂüéÂ, ¿HÅ2úÔ3˜ZÃCÙIÃ%Ÿ*¼>ò%²ÀqP9Q¸U|œ?ŒAÁOÃéqËÈû™[/…[8‰Œù„$‚ô°7æ=ïËpmS¹h‹qG9àVkÅýÒeüÚ£Usk*«7.>½ùt]QbÕ¤š®–â<ðÅÊøžCà]d÷#î­œRf•±OÝÍ~F9ç æxÁ:m—õo϶ʘ¦Ø*¾.¹«~ÆJnðÔ¬¬Ÿ½Ñ°­i§j°hmK½h1´?È ¹á>p&ôÞž‚ÔLJÇùž°<‘þ¡ÁE¤ X^ ÂÛUêð5dMdµÅ§îËÓ.0ƒ+L)šuà.ðƒl¦êŠ!Q‰ÕQ×ó\†ÆDžúºíó,ódYm‚dËžPüÔʇG„}áIh¢@^…'‡Vø±Pÿˆ©·ôQíÇðrîɧ»Fúÿç«÷/…¦‡ ½ tA¿…@äqëÒ¶=$û3ÏÁàpúg8Á:R` NÄUÔ%Î=Z’ˆurBÒ<åv£ß~×8¯¹¸v8 ®)ޝôŸ…õäoñ“ùçíÃ"A“SˆïÀâ*sʺ1IŒDÞwÜTÎ(×-´‰<€º¸%«Á\½«©š&ȶR†6íÄMcŽâÞf¼¤dNeÆ _׿T”4¤¸iG© Je5ŸÂÃ52j$UÚgÍwˆ7ÉÓé8ƒ„÷í Ú£#"xÈÍ‘_p$Û©Ê)JÀý&r2ŠEö¢k#óÑ[žZÅ4Iƒø þ·SÝ%ìúdÑ\°—œ..”uê.›|úJÝóÇiG¯ƒÖIɬI‚é¶;q‘­Ã[‡GžE>ÅJb Q1² é¸k¾¯ÉÆË ÄWx#Å9¿Ûä8ÆªŠ„Ïh!œ¾e BÕ³Ôüt.ZI¿Ê¾"^¥y b¨› ¾wÁx`3´ÚºåF/¹[+ܯÝûMMvÇlW¢z‡x˜øœ4Iú¡úŸ>Íí€ÂÁ ¾ ¶Ö ë ï Ø"„^ž.S˜Äù‰7”—ɲQ{‘›-·¡DO@ÑÄÙD¹Ì¢Ëè›Ýd?ÛC°ÿí0˜²[lý ÓѬ I PË$ü¿¸• ¸Ú 5øÕKI¥ß"‘(y„aä,/𩏸¾txc«"´Í4Eœd ·3¾&”6-lHÇŠÈLþ[¡IxÓDÇc¹ × Rx.¢VýÀ7Õ?Álâþ#bî>Í­ô d;^I¨i?ô04Í XÈyG’Ñg×ëkúäÈ;Nk £ˆ÷P^¶ô¸ødZÑ›ÒcªFÕ<®²–D+?6F°…ôÀ' ‰™SrñÔ΢`imÕzÂ4r‘KºI‘ó¯Š%£»¸%}ž÷–1”p©¾½áF£·:Põ;m˜ò?Gvèx$9€¦ #£.´ÁG¢ÈSxZ¨ÁµY±Ž1ª¡£*…z¿'“¸ìçíßøð´&‚zö[1† ¥…}Çsà÷4m¦©d]«÷½?K3˜(O¯2“Ûů4dÛvÇuÁtÅ8Õ¹Ýy·q·«Ûïf@'=ýì÷Ü3 ÇÞ6G©1K;ڸʴK±U@b/åÿ.÷Ú~€ˆh7ôÁuȲJKRŒµ3óé¬äK,æ%æw6µ£ÙõÊSH͈ 펄Stw™RÎ.[jì[Tu3WÑYôkìYâIòM€Yü—fç߃̉Ӣ‹¡~î·Æ š;ÚÞÆÁ¶¯½éÁL«+Å9Áö—f†Ì+ÜÀJ¿¯[S;¶6½æxÍ×õÊæûøKÄÄbâ|Ò}B>ÞÝò?‹lìñ¯­“:´Qf ~eËÄ\ߤޙ­YѤ¶{íëb÷üÿº6¸9æ[Nzn£¾Ž®Ž¡þï%kÈ‘šþMo‹³"M—hhz¬shv)˜r»\,,催4v>°]¸†gPr¼ y#Kb;‘ Á…ÞROÌK® m òÜw ½Õò.ãÛÐúhkÔoî@xŒÖút0¼¬bM¶5«ào¢ƒì;¢’wà|Õ[ñ-ÉPÓ!w§b -^år à˜àKò­öñѧ _°5쬎n á|ßeŸ?8ú+tƆATìïÞå,¶òL鮱Ⱥh{dX¼ÅŸ®Z/™-^Æoà/⬥ü,պȶ`’OÐ+8´Ç‚˜öü õñ{¾n]ÐvXŸ¨HÅUVÝ*yEÂ6c€¼ì¦{¥ã«~Å®hYß2“œIÿ›£ÝœkŒ>EéPçGk  ¨"<0‚‹–Eéöédîv÷'þÙ½ Ù)QCÚ+àË0óx‹B¸…¹žÿŽ"+ø½Ø]È/¨«XÑ܇ZE™Î<ÏÀ4&–¦ç¬9¹$?V¸ùìÕBVނ‰g¶œø7‹xš]>œt€õ˜ì,¸sБÿ´¶_ý[<@¹M ’ºÿ¾àgJ˜¼WD ¤Ù¸ÜùÔ£MÑ*¸âvé¸ \s&÷“江ù%&Eyèâ諈)ömülä ä›Ð1û5Y.kØsq¦ªÔö«=î×ìJ$Çp­¼Þ±Ê’o^/ÜÂuS4êÕF/áߣšíúB=qÜ«š ‹è ELÝ·.·ëoý õuõùgÚâŠÊ²™H2Óò›ã^*¶3'1¶ŠÌ²4é<‰@1Þ°È‘çè\má›×ZóoÄ \±“íæEÝò±=|ˆMç¼ÍÐuþé½ä~ ¶ŽŒCèNx*„ ~0úÓ¡Îðڰݧµ’ôÇ´ãe#AÞÅ0)Ô"òâ+lFs{„¦¶ÓÏ3öÓÞ7jHi”nj?úfÖ¢0 -ë„óho¸J߃Ó¯ ;wýüÑóm1L€ë8nÖ˜vÛ¾ô“"îöy­P`‘嘛s0©l‰˜ e㤉óeõúFƒR#¶°gÓši”sä@ÍÿBrO“í_}…þìÏt†kÚ–¥^$t7øÔ0vQžÑþ`Ì#§ÕeÞÏÙšSQt¦"€If/Ô>ö"y=µæF2£SÛú¶}ŽBå!ÄÍÒ üAœÐxƒ2VxLºÒ–í|äèãZ ¯ŠçÆßùDV’aç4HçÈð<Ä]-fæE`±¢Ô½<Ô×¶VÜLÚ‡ÁàNÓ_H/Ú–yïë+å‡9³iãçÕ¡eñ:u¿äŒŠtS2›‡1H¼8O‡þ{p’B«Ø$ÛìÿH©ÊkÆSÎiî Ý÷"»SSx4ÃUëe> Dúƒ~´sª·ÝõÒ5É­µDMÃYE\TT«$~z-°ÒyÇqÀ“ã÷Ã䘹-|îèÃùí†èO’µGeCÎà#ëÝ{Ážá–ûs qðÓи~ÝiÑ9±ñ±;SHF á„PWp3ütÎÑ¢¶ª3ÍYŽ”!üjqÌÖ¼SàÁZ A˜Ê V Ljž üü—¬bÆÏL+“À00º9Æðå`¾k¸üP!¿å}Ò¶¹½;fŠÍêù'&yû˜sµKµËþÀ²èw¨Á5S÷+0–š×HhúŠÍ’Štqk=½žÕ)\d8còKðŒé-ÓÉ Øê{ C0óƒ‘pðK»tˆ7JMª$i/”uàl½Ê>Ó×+ÚÛñ©c.²/8Õ¾G¿T’ËÉôòž[´@ØB––l»ÁdÍ"cÐtS¶vÂð—f'Yƈâì-úãúp•d•ô–ò¡©ÐµÄ÷)t%xÁý•ÿ­H(!4éá'Ážî_}6ßC×Fã û/Æ)V½e /_1–ÿ£hº,¬L_dÜÆÎ"…m«ù¾!Ó´Ôñ« ŒÈ"zo•m“wqd«ê$c¾Ãi.¥í¦K™ky] ˆÕ[ÐwŒ‘#㮳œ•s[ðP,% S¡sÐ;ß ;ÕÝ8\@3b5hKhb .ŒšÂç4nùÏÊÞºû²'¢?»9÷BÓ-5Q¶Oͳ ´TñUÒ˜zsžb$üŽ)«:Ù0Š4³©_•²4¿¯0½à\Ñè¢ØÙ…Å_ŸTP^¸«`ïÉv6îBO>(Ìmh©Î,>RÙÜ4”}øtËþäšVKØÎݪH5N׿HÇp.Ó¶‘ÿÁ}S¾èÄÇi§š —–”TŸ¯Äý¦D¾B§ -èÊèšÖñªX.úoh©'ź <Ëê,Ï<;ºv^ó ¶^ƒqvõÜÏ^^äûÖ²Zbw³ÈghÞŠJ­ø¡Ô¯÷De•Ö5þ·® òJ¦ ß+àPÕv‹) §Tm«yÔp·¾³žÚ¼‰ò¾àl`´¬¹wD¶ÄbÁ}úŠ9>ï_ÎCž *+Yº•.Mù8Ü:_yc¾§¶ÅXÕfÛQŸ7pÃ[æï€¦øPïäÀ*÷ó7ºtc›ç„ñ Œ¿‚ß…ÚQ¾¤øÂs£.ô½Xri¥Gž…̾>,´É ÿ ÛE¤:v*ªEFõäX¡}ÐóȦH!Z†Tö„+EÔ!#EaF^ïAIÁ-nžûGÿÊP™ŠîñY…–õ®+^û ½À´G½UV&${ ñ¢?¹k¸™Ü,1'O2é O…?:‡:çyhþÎ ;ØÏ±I™#ÿKŸêIs*,+Mgì ýmð¸`õØÊG^MZI‡„wT…T°Š9Ÿ6‚\B;#=ï˜`kŽö¨§@´T¬•>Ö ³,r¾ ö…û~Õ.‰X¾Þ0Êa˜ ­@3ÝB¢ñ?â#çQM[IÇëP»7ÎàšZÈ &'Mäq†ï†^¸®ÿʇÛ^®…úÃù¾¿´m h>ê]k[R…è@ƒ´ÁKµ+¯Xš¬gÌ÷-®çn¶g…q²½°ì1n2¾5ݳ“ü?)PØâŠÙš,T]®R*¡;øtÁ8ñŸºU’FÊHf©”Q Ÿ¤û¨?7¯d6€³->Ó“ß}ÝU‡“½î¢ ÕÌ¿ª–ÜoR úö(,¸ÅœË] 7È&ˆ±·³+Åo- a ÌF Gáyþ»V±y˜ëÝ "‘½Huà¦å”)˼!®íØdæ“”åñKÁxV”›*«Î«¥Ë=ka›…(žÄÅ-ÛØy¤‡µ%5»ëTÜ<[˜Î1UˆÊÒ1¨¹˜L¯Š›5KªJkG4fÓó+K—W®-½P :»¤âfíòáp€âŸB|Wë£r¹!á2±à-F M”H?CòTÍ*XWl.™Û§àAI~Yy³~ú}4;ríÓô¬½Q¾âóÙ¾4Œ®WAÇSÏŠ¢ µüGŽ|?Éÿ4PëWºêð‚j'ãÔ¥^*©æüÔR‚ç±0¼Ö, Ùµ1yÄâ øÃu¯HnÙk[‚£@¾“ÚYÝ\õ{ýÑæDÜì·e\3µINàŸX:“CBïxÓxÕ p²ì_ù %Q7ÝÀPT%¦8w{®z«üuð¥èæsݗηŸwù ½]Kànt²?Ü!ÃYá@äš í÷t8×yìþ[øQþ…¡Öß7Î>7÷Bÿ {;"ñÅ=þÊs!3,Œþ+ŽA±„8¡uXü¢…¾ƒ’B‘Pv(ÆÃWCßÃûa%ZóľˆæEÞDjb-±åÑ¥QsÄ‚&Fë£sÑíÝäXídû]¯ÍƒÀLà¦x¤¤šóŠ;ƒ¥ ¾#BÔ5B¦.Œ¬@K‘·!\ø˜èÍ6«tâLîxQ–nÄ‚®C HP Iì Š-¢EÌhvöy1UÿñKy „—!šÀïdí¥š Æ-:€Õ@†&0A™ho]yÚår¾.#°yŒü ;måÞmèWæ^¾ - öOuß2¤°Òð>ªœ½Sb² óÍl²o—®‡Ts<µèËXiøÿÿÿ —…[T ‡Ñu×\{íZÅf»;×@PÖÆTºkÈa‚a:ïÔîî;s§ÁV×nE? ]ñó9ÁyÎó;¿÷ýE¹‡?N„•âvªð;j‡–­ÀŠñ›e£,{\<ï~Ïdx=<Í•`É1–KkxËXñÌóœ%bH¡U+TÕ`ÍzU±ž=ŒÔÑøŒ`«OÁv4Òy2î¬únxe%Í.LWÏg5’\Ì;º8S‘‘i1úµ¡¿~GK‚í(üÁÕËý ‰ÊA—ì¡Üdò—oË8B0ƒ3”n$­d,Ó,Owy—‡÷BkœD(¸gxl›î Á$šmË“¼É'ë1çgq<.<-håX˜Í+yí;å]Â(ÑŽ6§¨IâgÂ}j©4ŸÎ&þŽï"T%”tÍÍ_˜Š>Y_Wq‹”&>ü&Œw-Æ/`Ö6®¯½W>£üHÁõÜž9³ryÅ¥ãÐÒú‰ îںʋU¹Ä~Ôä/¬Ç’Ͷ3~‹ÎÿLaÔv•eUP ¦œYyzUÆÌœ"”Œ×e÷‘ü›ü ŸÄŸäËð½ör`±#ͱÃ#X‰*:»çÌÜìˆuÄŠßm/4ètºn,Û Ûë_Ðæð–ó£ì!ø“¨gõ}I}p/p:Nµå£!˜›VÑ£VÎô褖¯Ò>,wÃ4̺Úåµ0˜ZL:æ.æ9va2c“p„ü¤|‘´—8^¬'‹ä¢gÒ¯ªb#¤÷i¯šŠ]ë|:ï|ÿͰ©‰z‰Þvá1´Í¸Ó²^àä_ã»æ=àù“‚ôЬà%O‰;ßáN[­®—aEÂÚPcÓ˜æýç‡5µ‡ëÂ7Â@0= l Üö†=¿øv~„áVßU·Õ5ÙhnûÃÉv×¹œßuÄw>ÔY-}ó.ñÞô®ò–šÃ¸4Xüè=©¬lO¡™žBø˜3ÅôQ9Bhât½€SÌ úXš¿‘„&W‘ä"éFo‘w«o—— 5ë¬Âm¬´”ôe‚Ñ“§[83 ¾ñ7{ÉîKz‡ø%‡GßCîMkfù]Ò¥ žÛ4ó¶s*)™Ä›¼Kæ$§C×S¼Y“k™"/ì®’˜1vÈž ¶•ÞutG¼Ã‡vd™IÖ×PwÈi¾Ùök;e$jp{2q2ú„r!~‘ —ä0QÔêSÖ6]†onh¾¥¯xï;°˜ù'þ@í êëˆ]ÕWI“ä½o<«x_«Gã¹èZl|)?ÏÙHE˜…Uï!æ¢x¥à Q»¨'؃GUÔ'ÎbÈè‡ çë3Yq‚c”5Äœ‰ÌÜÆýG~:w˜¥G8'lɱóÞq¬Ò P$)Ç™–»æ9‚Å´š’õÅâ3˜kÙqt!牤KœÄ±“Ÿ:X£µï¡8îøûMËA§\c;éÜír»K¡Î.ÝÁ~¡ ì+\Â_Ã%ÃÆ»Ï2öQN4Ú0ñu£ë?Ò‘À]ð/ñééîÕú¹¨<ÔkäÊ@d×Ì-ëB8ëÑøKäWÐKÇ `8‹Ï;É[ÊÚ+®ã·PÊëˆcKGVu/«,èÈù/ovÁ‡…’GA[yî5M‚ir@¡°G#6ÝnµáUõ粊ÂÕÙOÎ$ažûž¯!\o6ã]ï<‰?å¹ï©ô$ºO9û;´:!0°Î™’:'M–÷ ¦¾Luöq7Bm÷ÖæqÌPìWr§‰¿š‹ÖaÀ†5JûbŽp“%ñÊŠ‹¥¯ê¢B“)Å0K^Ïe°ÆMu£‘±•ý+]•˜j?2¿ÁGa^þÐ-” ?7ƒ.n<·ìÔ†!À>Ìçï:øàGöDM¼kÿ»¶?Râ Û_ºb=o—7äMññ¯6†*>™ÏëYâíç)uÅû®ÃåÖÓP[à^}f…FE.D/…èUÎ|ýTý5Ëèª7%xÅ#s0 Ñþ2¡JI1}³Ü³€64À›ˆ J|oŸmomqŽbW¹ç”窻Äìºi7›¦™ÆY÷Ùšmã,—Œ…z†ê/é?Âmàð%X%¨g=$#¨Æ “†ä‰÷Û¼©P’i—h=u/ê&²§¡­QºŒIèu¸3¸ÑþÏrE/V~“¼áݧ¨9õÒDù!̽G/¡<%jñ˜S dÎ"e/+ÙÔÛö ¯¯ÒfiÞkªYêmÖéî+†G¨üí¢¯Gˆ—Ø4–Õú¯2@zI[¤½.ûÂKf5ˆn˜Ðf¢0ŸÙFJÄÕu'\"ZˆITúê Âá7øcô¯²ü!˜MÍ:Ot`ûâD„ ÎÑa{ª[ì^áëªw]€6š¦H^²L$þiecA}~ý¦Æ3¤7ì6A7—ý™}ŠÕ—ñ‚»Us^Ÿ.Ìo’•hç þ`;ùs™3AÞ6ů²¥`Šøµ9yM.Ù+e—nµx”p¯'Ô3üмàF/ǧb=`€¤dV¨á?pÌ€6~‹Ën€Z ¼ß…s%ÛIÒ»|ª‚fQÃaZÝ·6þÍ|¡O¢°(»X»88à#÷7þþ žö /ĺÑ; )di AN ‘VÔYk/UMBÐK^Vðª§WU7ˆ8çôUp¢èŠý(<Ú’â¹à.tµp©Ü Ü]Ôî’¹ »,l-|YŒ.蓳=ud*>ËXú3’G¢“º1WšÚíªÌåÄ9رå×KNÛó¯gŒ:»,»«d—–Z•®ÓÐ_®Éîv÷`· êf7ˆ¿Ss꾕[ ÇåH3öe;r~Ô YVDôj³àâÊ–¥;’”v,_ÍD ò˜(aí‚zg-ºÌZýšæ·k™ÎÇP›³ÒmñÉBoC«ÂÛ¢Ö&R“ᆠMz¾~îþá!ù>P¾|Â÷)p(8À7ÕSçº~ƒWÀÑàÒ{œ»ÿóCÐ0¿*|'ÒÎ ¥oû ÁHuÐ_ÓçOç/QüiØàw@kªtuön,-›¶I&hw›c ºcŽ×ÏVmU~ÐL4pL»mµÖ³Æ>†+ÚŠl…UÉU}ViT#õ3 o”K•=TÝÕ­ªRU‡òWÙzQ•è«OöL 6‡¾ùš\4›Eqy§± QBîÅ[n/üŠÀÝÇ“aK7ô×eiFkûè[¥X©Wx´sLDùf žàÇŽ¯kÇäÕ*vaºè-Š_L[©1´zmÍVís$£ÌížÿÁ›u t±pMÄ}\KlOôÝÀ)™SÇëÍ1»XÆñ> u W˜¾º!¨YõíØBÜ/”tf!{-GÉG¹EцðjoXᆠfqìûôs¼åÆgÐN–ÙŸ˜>š\V¶á½ÒA 4Ä’ãž³r¤Ü<Ö$ŠšØ‡Ž4œ‰@²ø¨èè«üš9 ‚ g¡ò€V(žq°äDÜ ‚Œ—-y¨8¦©;¡îÉÒê:U•²T¶VÀ=ÙMó¾ôïõ+á ;Ó<ÌZc|¤S-.âoaQçQz3úÐK© ZÆŸ,§I֮ȶIžîr'5<®´–Y樖\19‘Ù³èaÓ‡è+Þô»g»ˆ„¶X䯵¶mÎ?”àqAÃÔjbAQ¶£zoMOÄ·ÂòDч¢úBFñ²²˜ü—g‚'Á’]u_ê¯áÞa?6JhzÑ=á1BGu´ôA>D *K£x•~ fåšp€)Ñ•ë.v5;~ج¦e9w. ÌNÈT0¤üYejÉ_…üô)… îMï†+»¯æ^‹\¹Ý|Î× /g“xßdBÆkÔäd<ÚÞð–È ¾¤ÿCà%evÄ!Äç 4ÄÛM¶é*9íbefk†8W™¿ÑLZÃ_(Z:X}‰ÅuA Õ»Z_ÝYýò¦¢a™ÏLÆÙyž|¤GSZ}Cv[ë©õ/ > Þ =ò_öøNxaw‹[åþîìãX-‡-YÑ¢æã¡ΩŽçîänƒsm{-e–צÓ=óNÛ ƒJ4$ª¹b ÚÆ8“n2¿‰R×XBîdÏçC¼#Ÿ¯EX"†*/ÿÁÁqR€‘ÜÃüEÜlê bj2s/Õ…K¯ëW÷;ˆìe-ävrE<›”¢–ÈË}Á§ÒMÀDsSò,&2*pÇ”!Y¥YeºÃ??Ãû$k»ñ¬qˆ¥¯±S÷Q½Et\ÔOV¦{`›lEËÉ€’•.¤¦âÄ„Q´À#öödÁ áIîvÆpð™’d Xûyî¹ÞëΊ®Êª¬h´ éiõŒñ$ÙûX9ê“‚É‚a’Û"©P.ÌîËL É´G¤|ÂIÂ!&]®ÑÌ2´š{[zìÌÃXv…¹|f Yƒ„J8ù Vþ‰>GÚ!¾;|ïö-–û•e˜¤±÷ðöˆ_1ç‘Û˜]V)§²¤ñLƒ»®v<²©hlÁØü¢Ò®*uUZ¡éla^}ù‡JAùÓâ÷¥‡j}¤%Œ|ìçbYþȜۈ]H$b_Æ–#K7ekk¬¤àÛ W É­¿j”ŸYAÜû²§EÿT»qq§p¶<³ ý·°‡ïYxü…5WŽ]<z¡íà%‚Íë1åJÆülÌ ì<’޵ @ oIHÂ%Ôþe­Á¢s¸{<œEäxç«ß6FJbs‚é;Ò+!PM¼§Lé™IýN·±™ )]ñ×ê¶Õ¿Æ‘^7Ng"4[¼Gƒ—Bxÿ&ÏÏ,¦x¥þ´pF€âéÚmÓ÷ë0ÚÁšy“Ñd½¹\«L%ŠBÉ&uØò—÷»7ßÙÓvA?Pü?®•7M²J¹_{A±låýjô V’Ó`‹·|՛ăÄ ôþ€ƒÖ¯ñ IΙ)¬äý`/¤ëmx4á)©Št›˜F b!{Öæ¡æT!zU>,?XRTÕ†CàõJüMúyáePÇIæq$ ¶=Ûi¥*Ÿ¨ù®]aG“-d€™Cb4g ˜¨pˆx›xãE?sä¾ïô \…憩frj/#†9—ÕJ{H ЌDz>QÖnékÔùÒxñyN--F sŒ£\_PrK ÓÇz}{³vœæ¨ºK»ÑlV~â è_éaÆöN9»’qÈP^´þçîòî0‘øÓXÛ°ë Ün¦¿ox MÕÜfç\C–ÙP_Ûv‡Ü}Ç5Ø~[7Y€æ,deùèçØhNsc"Ð%y%®ã_æOà&Ðwâ>»‹’ŒunUàÏÛte­2la±Ù7›Þê×éÆŠSgcíµ ÛqÏëÅä Þ&UŒ¤X4ëÑFm)a0ºÝWèªÕÀTzmåÙJõѾ3èLò}êïŠO†Ó¦-æNg³kƒj•´RûÎÅ‚Ë`¼feÕZÑÖ7¦;ÂçŒ~”}¬Å¼•ªµúrî¶èN»Aª%ìlèAZÎgê:´‡õ3- Ö/Ú­ôV켪üйåè²½U¥ˆÔâKŪþh~ˆðɽYw»_@FÃ+°£«’Q‰Á°ñGHñ4k-3ˆµ_Ü%þPÒêß×~+}÷­ ½"{ ³¼òïbZ¾âLÌIâ¡£§ö¤1s$Eé'Ó…éY˜ÒÅ•» ‰™¥'þã\iÁ„©]s×4Õ©öÌ Œ ,ó†œuQ /Âʧ-£–1–òbÄåK•Cü/ƒ½^jæ9ŽBËS\³q¢6êËçŸâ âÄsm¼±òóG»s¦½ÝÑÕbYËácÔºÑ;PÔÒ]N3§•ù‘z‹è¨[ƒftôYäô†·õ^Í©ÍFþ[IªþˆP+JNä)dÒòWVõ&_ãEt4õNA ë2-äÖù(ÞJóEP¹Øq"lšÒd _ó°Íï…lJor㥜0vYºÞ?­Ùr^hµÿgH`%òh9L=eå =#÷³3‘jϲTŠýZ‡t’ ‹mãL/¼"S®Œ¿øH¹@Ý ýgë!]ÿ“é=}¿{ZwiˆºÑ/^4tÔ1w²¶éf{ñ0Ñ‘©y#ø3M¸ËZd;e\#'Ø(X&ü…Ï–]0É`'\ Y<«½Ga¥s®PùÈxÀä ªü€u°šžz'Y5ÊTÙ;µÜÜßÑ˵ߕj~ÀU4þAÍÔÜ6GëÂÒÀ5÷mŸCîâþc) Ƥž=;ÜouN¦¦1ÛZÅŒ¤¾¦¥n(¿[䎽ÎmŽJÇÿœÿ§½bhŽc– ;ÂUÍš‹Ä ï£Fï#B™¯Ÿïäy¯ûEä*×FË$ôÆuT"àš¼Ÿþg5ï;°‰¹‡UÎÀ)ê»úÞ&Tá™jØÏÈÃß &Òߦâç²çš÷xÂq0zeÎ1³4¿ÓîV´”Ðj–×_§$ 'ÙÚjé°Œÿ‚=†9†•ÍŠyNÁÑw øÊì ÔîÓ-•áܽÙû³ÞfÕVyo”]P—ÞtN&¸DC-ÿú©h5ºÍžiÑ#Ñʈ.ÐÏShë/c±øÛo)½¨aÚwµ1ô¡éFËŒÈN÷DK™f2C½E™BÏ#½'t£.dMO„ºÃÿéöñH´4à–¦ÃøC’Ìå°~“7zv…oE*CTÛdÉGÐzõ/Ôk¸È+9[¹&¢·5’Áù ÕÉLå[Ãt‚ú‘^"}dïi;­®‘‰…3 ¼*e©x$?–y—Z¬Ãÿ´¦»îh0ÝÓdØ÷Ú½¶Cº¥Ú_-žöÐÿmgÄr[ûFU$nŒfò˜Cyx:âø²!šÚ›ŠÎïŽp\´çÄÿ‰@)J{D3Tð¨çÄ1…ä§hcõg^s¹¤î•àÌk*ºô$¸Ï]ìNtµÿn½hhÕ¼ÒÑMPóÀ±L ó8¯7xüEè¼mª·šT®Öœvn Íoò…O6•Dö…a+WBü*Ý.¼FA6¸;ÉÌ6 æpôäÑ0#pÜ:Ôô?äöIá4Ð*µÉw Þ±·Õ +þ®.Cî@ø³ÂY@qlIW·4©PRó;é‡v·s¹q²ýø©£âlnsþœÚ^„¹X¸tRMlc2K¨îåØå¸hxj¶B| “ ÅPìüpo|ݧìýÇ«9nL-.œ›8¶ëè´³ÓWgoÎJÈüÍ<”>á 1µ_Þ$Ä®*}-²ñ$í;{,ÿ÷5Ì`O ãê¯Ö!k“0³+§åÏY{nVƃŒÓUsmfVèßèG—›þ´>†j]d©¤‰x‡\½#˃Û|}\ß ¸ØÙ7JŒ¶ÖÞ†D .¾¶Mz”]@Éàñ:xmü“Ê»ær'Ñ=Ä}ã§UöòD¼ÅîNÐIóö‰öj9wñ—‹³šÞb\AëL{½ÛåWöyÈÎkŠ!ìr„€"”ã÷!%¥+W`›ñ¹$c;c5ý$;ÓŸËqó’|c_÷$’ ø×øúºI„o쇾­K[ìaœ?ÞAÕí—ªQ¸Æ_…†´œ;\¾ÁaõŽ÷$@¥N¯c…­Þ<ŲÀ:϶ɹÁ#ó?õÚ]Û³ÀJ†j«‰ËËÆæyrârÏV”3Ćçªo¶û™u‡i½-~Ø^ [¥Ó37ÞÓÞ ¹z*ãL"Î'¡EìµÀíq×£ðúó‡£Çü× ?$~^«{ 7ÂDQ(”îô8A›‰íN‚–ª·sð÷iFYÉgpetÿçlŒÈ£ÝCàa'¿€ß¡“ÚÚ”ÏÙÿ²W€L «g¬}‘ð ¬ÿI!óy„ýäbaœ*AjÒEµOÀ¹|6ø'Xά"~©}ŽŒ¿#ÖXÒ¯»ÂŸôcÄÏ„2 \¥ùé ]á×Ávÿs/ÖK÷/€_éè&c ¤36SÉÔå¦í¡§‘MQJ4Å'S__‰H?·Ú ›Å~`úO¶˜ÃÙLé‡}ZWŽÃÑüÖq¡æÈVÿ#÷y§ÍŒ3x ‡µIݩڠú¬ß¬ ƒT3 ·ŸÍ÷”’›2ª>S;Fb”çY—x1¡©Ñ¼óšQ‘8h§$†_Þôa~ ¨ öuà)´XÆßJ[Š#¡ ë¼Ø0FŒ•Õ q?H\ú\à"ëc-¹wÕÿÿÿ —eXT …͵uÕµ WìÚµD1‘¤AºArȦ{æÞéî®; ‚‰b`-»vÇ~êçÿóœ_ïs¢µ¬¿&º1ö°Y²¾!¼5±~nåÒm™¤zE+…0Œ"Ã8€3¶4–@9ÆKÛ@¸¤.»zCS(‚LÎÿŸ ¥L–íÑUð'`-Ý•½º¼î¥<¢LBT V\-eÅ@µçªÇeYâ÷Ű=ýVÆ¡¬ÙaeA•' ÎfïÍßRRX6¼rVyo岿d8ÑßW·9‘«‘ƒÈÎÆÍu‡Š–æhŠ» ð}É¥±ÊÔ–:<@PlÓŸÔ¾•6ò¦ ïÉ?êGXú4çèzTæŠÔïÜëyêe»n$ ‡0¢y¥Ú×Wׇ÷}î¤÷Lïî 7-ïc>ax¥7TZ!YHVÓ§˜¶bG¡ o[f+1ÅëÚvS„3Ö7¢ÓÛyºîYá:b;ECólSÍÓtoUB!‹ÌD,C‘FQïà> ÛÛÜ-¤†àÖ4WIkâ¬?ÀHú å ®ŒB‰Q¸ŒHq€ü7c´¶S²ˆ¹†2™J8ŒÏ†·Á?ÑN*6™2 ï5VÿÙ€íÆN'­fgšm®4Ï ç€ýƒ#ȾʙdžÀ›ŽolëÅRÉñÔÝSªkôŒq£]ÛÜ› t‰€ýE uÛöA•ü‰œ,±W|” Œ¥HÚ4-l$‚N5ÙÆÛ8–xóZ3JI‘… Ÿ‰ósdÅü~i¹Ï‹£6Sf6k¿@)åsýô$r€àÙBÎ> ˆ1×[»ÜÚ ž(ë0ã9Œ·ŠG`+™M<šh¯ú›.]ÿ—v0§mý¾±Ñ‹8ÞFm55,kJ€ÂE7­7TÖ‡ áÛ‡´ØpMäuÀfŽÍÅÞ,R ÉóVh¸T?£ásuNyRÍËò!¹Ý}çe¶bÚîÓïJ_‹þ ÖãøôWÒ ¦5–Zýa‘ƒd\µŒñ,v©tרFêIÚªˆqX<Òð›í/½]ö›¡ÆâÒľ?®j®¼èøæýì ”†¡/Rö‹on9“|³Û¾¿Ú¡ŽMëü»}}^gû{ûF¿ÐÄ?½ãTçdŠoŸw“wZ'Â\IŠiøVv¢03(2´áHóÍï]Û;ÛóÞ…r'{N8ˆÚë¬2Z"ãŠð«f»µzË?KxÖv‘ß XÐÞŽÖî£ÞK¶!–ÉÚHð?äÈæUØ>f®è3ç Æ9#>Âå|’c¡]æÏÚBíYÃN¨ÐrL*ž,ìRb §c½ã™d2BxhºƒC0ôÛà¦1üîC³Àj×yc™(N¾P'ÅŠTa½8\©sá†pýÿŒíÒÿÓ€/äý,Ã~á (îk3•B©’ßÁßÅ­ºI›)…œ%úJ›ÛVlî±|µï4Ô\åÀièž6ºŸ˜¼()0Þ7ËÝTð¸~ó£Á¢ûMÞ…{S•’ï)œ_%«”lÈp¤©Ê@Ô(òÊeʯÈÔnE}ÞŽ´§ÉÇË/( Bª‡6<¯[ßp»yFå‚‚ìúÒjvÁ¢ôG§D^MVp¤z| ¡{»±¢„›.H¶e–gB™¥™×rƒò}9Š´åÉüôâmù…K—êU­OáMðåõKK]œú[²2ãCɃ¦*ÜeÌÇÚèê «°úÕþ‡)Cv|ˆ/%T ïÛ×8W«ýô`„ ¡c\3¬rùˆÛ»€Ë§;ì.º¼™ºõª!§ñ ê!i7mu>‡I¦ãxlæN³œÑȨe•Ê F'Ú+uïp]´­²Ü6µ™ z¿¤ƒéÒ7ˆˆh"_£·eº­ü"‚½UØ€ Ã2IiômŒlæ!æÆ[ÆA‰A;Y‰)åVe.ëÕË|­ës„Û¦ ~# A­'ÞÞ·¬õó[:ÿì4µoi·ûK.‡õfôŒõË<Oˆg«ÇçÆ¹0îC¾Þgî©î—ÇÞßà¶00Äâ¦ßêÛlº* ÚlæËëhðÍðfz¶xÛ:ÈWÖyžJs˜“@+@¢‹7Ζ2[@+ã;X=ÕIººîV‡ï¤)[•'XHš‡ø½¹„X.îÖú5½J‡üŒ¶R¥äEHh¦kŽ9Ž}öYŽcN”CgýbaZ²õz]„)ȬÐH´ÌRª°Ê.©ý ¾è {:ËÌÆd†Ð,¢ ŽmP¿â¼ ­ZgúdýÝZešNÇiiò—¤­ðe¤ p<#Ž…ç„HçkiªÇªúDã}mѵëZá§ÈQ`0»LlÖ1m]î^ÛgÝ7¶T±´’ï†DS€áC­®X¹EÌcvs¸7”F%AõJÏV¾¡EÁÑUV_khÛÛzpóð©Iä_ñhR"pš5š•')W¿Ó0´o4bý(zmxoh4O5ŽÐ•e¦ÜBl«_]}†ÄüB\N®Ã›°h|æ0n)f*»õfýrtè‡tËZɯQ÷j&¨ûõÉæ"Å þUIyAú³¢Í¾ËåúÄà Êrr§_4¥M‹Nu¥ì-&€pr:zAÅØL(U›|úLäí×O¿Œ¼ð&ýJ¦=_Xp/ç[}hyEö²”‘±çÎÚÎoO­ÈÚ’“ZqÉAÞƒ¿h<[$å%z.ŒÉjÊ)™YÖRøWVHš(­"ëmAoqUY}ãz$ù_Ó‰†+•Ç‹f½HagÆçÖ•öTÆ—”>Gc™ÑúCö!¶ÇªE¼0rZF¶(&ÙëMxÞbÔäZ!–-[åˆ÷¶tïžàqo1Õ€Q--µwjf²Ðsè1œYÀ | ¾ÇÃc`,èy˜e˜Jl/q&`<5dÙ»ìUµm´e”ñ½ù-ôŸi‘&W½Z¶³àg—eÊ Ë4S¹&›·$åáiø¹„‰„ÔpÎiY½ªL6‰{šu„1‹ÞCãÒƒ)R ‰Cëµ€ñ”<…~ µþA§øl[è½ÓÞ×±§c¢ï7Þw¨ÝûâÊ?»³Ä!°ÆAhK ÔmÝg‹°Ú:-ùκއΓ\?;ˆ;‰±úœpÐÙ¯¶ŸïüÒekßàæy¶·Óº†ö/ºñ»ÙÈû•ý‰Ý% ÒÅÿtªÔ㔿I“Ä+4{ÍG]b_ý¡† ŽPØvŠ‘0@)XoøÓrÀØ¡ûÓ.égYxùÚ~û-;ÜAs!œcœWÁö·Ž@è†þ¨ùWû~S‘h8ù(¾—ù^8Bh’C¡Ò#,÷_9(dÓ8©²÷†ãjõRMšíÚén¹&YÌÍr0Ê™RÑ íP®c½­A÷·ä ³”úü”>š„A;€Gòåï+`Úji†ÞènivÊ2UÅê¢å”ým;h7¤ÑÒ~Y‘â³l>wû‚ô‚.Œ¦½DUÕ>iú\É(ÕYõôWàvåÐ ÕÞ*€ï¥¿×YþVMWÓ„À(¢FÏGª&iº4&ãu¥˜C߆Þ]BÇV/)•TþÛ8ˆUP™”ݘK¤8öBPKÜÂ8ȽɾÌ9ÏÏÿ£ë•Ry¬’§‚I>²iT©S«+[QÓ!î7’täw´·Ä@b`[bËõú%M°tš Nø]´…«(1ü­Ü£(V<"防¢ !B×eC»<þ|Ë<µîÓųçÆÇ%¼L :·Š/£P›/Îú’ðæÂý¸Å§‡L³¥þ­ˆÚ…>KK¬Ï@§ÝM"æ%æŒÍüv‘¢K>¿(éñ…?SzÓªºë¶6-ÂÔ>͹’”0*óKÉ®šµ¯+¾ä³r¾¥%L?r±%§¾dXÃå¶çØ<"§‡Ÿ+þž¡N{—œœ¿¬v]cìzm…TgÞíXdü$ ncF£’À¡Š$è´æ!ù~MUÃTz¡‘êÝrÙØ1Å›á8£O{€ýô’¬£¼dŽÕ޳u(Š0÷胆·´©­"äV‚ƒÐK'”G`:û›è¶n3³ívÀ6[°=ɉp$8ª\ûlêmÒÃòiºE¦V5\¢• t4ûÄYÌõÀt`/]K¹O;Ë_ªLÖ Ñìk˜RªšüxË\ÉHã¼µƒ™T,g4gY€]„JÁ\¥çj†8Þ¸;<¿xxnÿäºÐ5̳Ã÷ÄuúhþÛxÆgàêô ú5º$íY½NcV/3m6­Ô=1¼1­4ü.ýD]G¦P8ŸA"¨Éîá y¤þ—Þð®¯>¯z ó!s#7YZjh·~BK-sÌ!Æùú› ¾¢Hü '›sP(ãOd/dÂYÖ'qŸš¦Ñ)žñV3È%m®°Q˱|‡þuT»¾&аGØöC-†ž íç~&Ì!”Ë”âÕ3Ó7Å*Ž¼ËˆgÑÙ.ñ?ªNËLK >Wc±†¹çùpž)ºN¹\ˆeMeÔó{uÿ³u?qà¡Õ}ÆXr4ŠÒJlp6q ùœñö,Q'²2ãTNQ.3‚:…;Ku‹Ã>Aì¢ %K4µ±¯ä=}u›h¶jó&žŒîÇc|ÖÅ@SzÃ$¦•‡ê£œ¢vc-AM(DðIýÀzGÓÊécÛH4ËjúšnÑÿç˜4¦©ÐS[§eaä£b›W·Œn¬«V6ZÛB(àÈŸÔd 8»Á¹ÄÉT¹‰ÆV‘îƒ nIëøÏYeœj±€+¥Áˆóˆ»Qu­ƒÍ~°mŽ<çŠi`)qJS_é­Üô˜yemXû…9â»|³ð£2^ɧ0q¨¿[`5¥0äxãVW·Ö½ßBzUË<áˆ~–xâü­³÷ÒŽ5¼jþ­àHR@ìó¨óq‰³âµ§&Ô ÖϹÆIˆŒú•½"F³éÂÊtyFRʽìkE¸Œã)¼”£©»“¢2_æÝ-«„'ÀJ‹ß_4¥äeþSŠÅ6n­**r·eõ¤°“ËR±Ù … vâ³EïX>гamá÷ôòôÍe¢–g›™¨(p“ÒlJ°­2=%3ª#Ýh<ÁÂŠä‡ø ›`ëIW•+=e~³Km{©ËÝEÝÀÊgi>h˜øŽBwa2@¢Ü­ä÷˜=à 9MU§ð¨®éè†%úv}¤Åo‡9S]"çQ×L/®ä½äçÞèYnŸ«ÔòS¤•Úxõ_ì§ä§À{͇ڭ•[Ø3˜ •¾œÈŒdé8ÝœAÎ^þÉ+U¡º\yÓôÅÎ×^afP_àê[ûá"‚ÕªÜj=êæ tOq¬SMí¦¿¡ë%èœñ†n‹ú€h¡ ZúA>YšÃËXÍ8"Ø$#ÿOÙ¨Öh*Œ,gõ]‚äqH<óÁÇlPöÑ8ÝõÉfµ¯µ—꘹ìËüViú¹fœ"åª&è´vÅÁ~ŽHÄǧƒŒhêJ½‹™ÎÏÅð+X©çðqß)uÌ£ ¸>Úx çÚàžáZë8àhu:XK³)Ðl0ô0¯‘Ðt‰ø¡z‹"Y¼G°¹‘rŠ'j»øÃ•Ã0ÛZG«5ÍÎs—ùžy1Žõ'ñöÖöf™I?ÌþÙ&5ß3u¨Vñg±Ü¤ ¸ºIÛ¬€ÇsxGí'o|¿»×¶}Äi[ŠºÜãÍb#GÂüèñ¬Ùxñ–)àŽ‘w‚ü;ò ¢‰ØÁ'*Ì{ÍoxAÄõðÛ šžÀfTÏ.;Qñ£%axƒL¦ì`!;õK½¿a6˜ò•eËʼnÂÄ+;xOè÷h]”ÂYÒ*Ò8K\¤Ž¶ýgÍ…èÚ$V9í%ÒTñ_jÜÉ¿ ¡Æqü?•¢Ÿ«ú }$s¸z•à¥#K¨]p¢þ­èž-ÅqEi_IjIVŸ”Dý÷-þÙYFä¥(eî²¼m ?b‚.hR§¦ý’˜¹ýÂÿÊfÁÎÖ¯üt1 ©ÿä¦3;. SÓÒP²'gHr§–ìºx&£&cT¦5qx²(%=—\˯yR8˜«½(¾ZÜ\[[[–’¾8uôřٟ²Â³b ›«F ªhXÙkÙUîf Çi¶W./ï¨ jy £W à§Ù~ý óÛ2c—4™#ºZö\º]¶µvV«Õ‡(ÕòsÎkÞAÛ'c£dy(á4’mÒÇX£í×ì ŸLŸdÙ¥`4Ï·è`Î0Ï—ȳË;ÞûÀuÖisó<0¯Â}Òkíš×µod÷k_§»ÈÔ-Ê æ—Z¤C¹Ïho×L=Ñ•ž‰¦xq0ë!xƒö§DÅaðX !Ñ©öغœ‹a6…ëlûTU§ãÏ{)iåB±ÞoN· Üw©ý‡… ›,k–ó•O•·Ucdæûœ=”EIÄ}ié„-„'Px,ï¶Ø$ÓË*¾Z$æ ‰ôe4;€Þ€HD‰(‡¤ö.)4ǼV·RáÊyÑ¢léÉdƒ³ƒ»BŒ×bôÕª@Y5ÿ ãÅM§Ÿ¤ÒÐc0^Ât’’ºŽ±ˆõˆÆÂ2Qá„h€ÆbŠâk´<ÓUûïK'×1ÙõÝùØqÈ š¾›J43™,Ú8†R|ØüŸm½¾…YH\&£’“y_d^#Ì4Ρ±]n¸}éînë'ãNI¸‚˜LN¤C‚Ój†aÄjƒ•/$Ûäw• Þ0P J€Ùùc‡zR§ R¿¡³a'ëÄÍ©Tp™àlÞ‚zó¦Ð¯!û0—i_YgY/À:ÒGÌ=DÜÍ@G8Ç™Ùx<±©«zM9²twÉÞòŽ:2@ðâO9½O%öPãhG˜#¥RõPóMˆôó©š´k•lá{V«•z‘Q!Ø$ñ(ÇÈ\¢‘Üï,&ÈÀò&p“¨ûPËš{êíÕTønR0+CFÔ¬5v›ó-Ãd[yI‚YünæZE~FJ$Æî0çË«èÕÜ×ôÔáâé ¥yKjr—)ž*<’³ä hÑM»`Uý)èry]¦ï|Üê= ËJKhŒŸA‹ú;$7&çm<?ò!ëvú¹¼„Ü;éï3[.¦]ZÜÐPÆÎ =Þ~ì@JLñÎŠÒÆ’©¥§‹_ä~M Jœ˜:+ëKúóœKy˜‚õO €Œ9y¬âS¥e/jRëVÇlŒž–ù#w°€\¸¸´FÅ RòL’ÀºIÛ@ÁPÁ¶%Mi- šâµO©7´>h«Ý­V¥ô}ÈÃ¥-ÉãRÒJ£P ˆpü>ò4î,c´ËæcmVI(0ô4@)îÕ¦Yªm¿Ú¾Ú@ë )F?Q«Ë²œq¦ûÎuÔøóýOÚßµ[üÁþÛø¶ûf¶Ã½¾}W¥Oª®Žó·»™2T#$§…ç…²!šU“z»cX'ÇÝïò‡šq/3¤“Ø5¸ÏHDëY¬Ž7ªv?ö®öa|óÛW·xš¬<ýU€r•Ql­Áæ@(ÒÚnî0ÖªOK/K׉ãD‡¥?„v1­BÌD=BØëø%Ü¢c5·±¥àNf%CÀXÈ:Ä}Ãs³lÀ „E+¥Þ!=ÄF!_#óèqº–1Šeµ©T?_éÕ‹ê%jÉJI x½ø¬"Ƹ ª„̦m,„½€}‘HMÆ–â‚q¯PCq1´.æà-ö<ë¤CŒA›"Tû—1ÍzÊjßíœï™ì"Ø0ÖÙ– Û$û¯Ò“€…t‰¹ÉÔ笂ü8Z%º‰¢•Æ›: Dë"çLûïÖqÎ]‡l!­yŠ¡SÆ〽Ìç¼`ÅiMž£­Ñ”+ßkÃMýúåuE±º@Ç•€·¹ ¢[¿Y€µ«©´­Wú ·ö9QƧŒPš“›. §8ú7ìà> Æ{$x$˜Í¾Khgí$ÿ#É¡èFTaÛΆyußk~mü¾ÿ@‡q0¼7´0ìJœÖDoc¸xá þQÙ7ýó4Y&ûƒÎ\!_Ê—p#xsyËx÷™}Œxö+@Çœ&kÇ çR“Ûf·þÞ$i% P­@KÆ=¦Qª\‘Cò@þ?)Ø…ý }2B8\A—‰ÿû© ®”»˜~1)ïZé“z ÇØ <#ÞArK7W k ¯R²$;µ`|ݳæ1¤¯©Î£ òýÒœ,QZ@ƱòÀ’ÈÔæŸ-”/Ï&7§ÍÌ9š1´“—˜µ'}Fêü15“ª>gC‘+"’/ /¯l~Þ:ÉoKiL)ÓfÝI§gŠ dźrOupõŽâ†´ œ¬Gå{«ÕU›«ê+¤YÇbêF½.¯¨ÔWÏ€ùbÜq²Žc?Ícßeœ‘í«PWQßÑÌcÅPôT‘_ UÙYv›"d´wµ­é„øéùï03hoP¡(+c²u•7Û3ËÆ ¨=À.i”~¬>[wAûÅD4ž0ZŒ¡P”m¶ã”Sèè˜Ñù¶cWÇÐŽªÎ‘—C;çwœôwøï´ÏõÎð'_Ý|µ©CëA¸‡õ¾¼!ôŒiêNM®ÕãX`Ûé¼è\ ogW¾s’Ê­LW®•P(¾ ¬&ÖK™#µ€}¢g»w®çˆk¶k¯×çyè`Ú6X½ŽîP{!Lï6š  çu1ZnŽæœ:E»WûL¹[²˜»”9 €È‘¸mô–44‹^¿Ï}^¥Ý¤­ýìs¼½üÝ’>Ùz9 ½+=(ÔR#Ð0B!ÿºjÐxÄøÐðÎa¼¥{¦Y ¹®*WNTLPíÔÜÓæþdl”-ÌŠ10TšV+æ7Â;²Š¢ ߃XEŒj)~,ù2ã!+P@Uuëߌ³Æò¯¥Æ–e‹´jÍc̹ã£C£^ÃB7Ñ^Ëô*‚ÀÏü…B Rq«™]º4û2èõôÔsŒ7M ¯õ,Hì¾å\­Y >¬÷VêìÚ>M°F­z!'ʺ­¶*C•á€-ž¢\B­$cÿO'2zÈ«š6P¬ÐOy{øå¥‹YÜ+–< ‹§1i8!˜"g–Aí€e½ú¡0HŒ”Œ–6±âA7ã ËNÏ¢| Å’¶‘.bÙ„—ÔÇt&á v 9îç*} òÁ~jZÆðq;ø1`3z>|q «‡A—‘ÀmêvÂÂw¢ÄѦrËõaV¯yŒÊ Q)[hè&j¯œchPìå¬-Íäâ‰C”:p=Ñ„ÆÑoòñƒpµq_ÎÚJl§$¢ˆuGKî7ÝFMC†çn×R«æÔµ4ÅÃã3«r¶Á»às1óñÔ,Ê=Žx–X¶ „W™Ò:·efÅœrQELÙŸå˨e¯Êª+¿Ôͬ?WG«K©}ÖÕ¬¨Þ˜½%®6>$WœÔ8í.ðWЯ ¦Wžü©8Xw¤a/¼¤m'‚PAIm™¶¸0¶üZ1®(?§3ù}Š5gŒÞԺр9N„ÿ%ìÓÅ•ª~©\ô‡Šièט™ÓhäF„ Ä>-EêË퇜 v”±H´ å*¾’„ΰÖãiÕ'ó|Õ ótã|;ýÿÿÿ —_ÅíÂbÆœŠ‰NE³_TtØ…S7»@¤árƒËíî{¹ÝÝÝtˆS§Ø1¦³ûõ÷|„sþç<çJ<ÛûZk—íP.PÚÅcø9ü±jF¢ßcÙëM Š5D$f7ÿÞRÛò¤yP³·åV£-·õpËž–p³*ñ!öClH 3Eû%Î÷l|zî >šî·{wG:ãOöàÜÔ·Á+ôwxÈö^[¡ã…n}`\§­Q÷ª3ÔôÛœi¾-¾ßo¾Wâ_¬B)1obHbx0ÕÕå˜çzíìpñty6y;À ºü‡=󖽨F¬$ª§bÆÆ—†ÕºêóšûÆ£Öí¶nÇφ/æmro4ïl§eRál¾p”y²fd•8>ú{C‹ý·µ¶Alšc~¬êoÙ™~}|JâFŒ[ÈÐ¥ ÿá‘V‘Hš+AóÞr û©&:Eîd×WOØsγØMu»}ñÀùÍ—åÞkCÚÞº8>và›{µr9ûçñ%\´‰=2“’ËÝ%êrÿ¾ìz¤_¯l‘ÜÐä[Ð&¨Æ¦áê}ú¯¹“YáёÞ:óYã*œ„)~£is°>ð1ccbFKký[š©þðÿ"jI€«òˆøÀ„ª­½¤{'Áòß1‘ŒdîÑrq• <‚ûƒÇ‚/=lçkû(ÇKÓmÂøØ4E1_h{xåÄýð(â3iœ%~'™ mÔ”ÈþÇÑÕ7bÀ­äa¬ßùs¹·ñ†êàfÊ"FŒD£¾b|¥¾À'á•ÄÄÿažÖg~ ®Œ´„ZÜʽŠ­–!…Ït Å DòEúY°[tGR¡™Ã³s0Ö±p\”¯¨y°|Hv!õ.qA‚c`Bµa:tÞÀ` àv"ðUuóQ‘Ç×ä&Tù‘‹ÒcFó0§á½°ðT\:Á‹f#7`öbNa±)&Ž{@Io`¸i‡hè õ-lZqEá¡òæâ=U àuXo•q‰i5'—Â¥¾§uÑš©ì‰|_C»_L¿ˆ,ù³¼êâã|`~ñYdA¤, 9‘À#|  f¦0—Sn¶rÈÚrÇQk•e»íš#Ãñ€TåJB‚¢ÕÒyªRë”ÀÛ!² pÀ¹œß€B\žX´ªÌV”ž/ß¡d˜^Æ"Í®¦šè GX¸ƒ&.Eg@ª ¬‘‚›²Ïö-¡I SbNcn3²ÅÜ<µ9ÚjÝÕYØYÐ1©ýhÛð¶é­%-K›‹A ކÿ®¬¿r´©'–±†Ñ;Ñé¡}¾±¾¥î¬M×͇mŸ¹ÐwR®˜O›n[&:†+êßõ7tOtlÃIóxÛ¿°¥¿kxØÎð¸÷yø»ü?SB—ƒU~§÷®k“{U $ ŒŽnŒBÛ|fo¡Wäü`º§›o­öEƒ‡ü·¼|ßGÿß¾bo§Ÿ7É—éò¨ÏpŒ”z‹šÍl’ŸVÜPÒ¥w»þ×ÎgFšzµŠ®=jº¡-PJ ¼¨Dj3·‰–xNr¼U`%™R³¬Z’$þÌ÷ ?‹ûhZ}÷#áÈÁСÐ×€ÉGq^ö,*Ã{5ž™¾?Û?×tý`¬zW?—«PUÂÌÏ„1t¿³†ýy†ÖfÀT°x ¢žŠxZ‡9‡Ñá\øý¤U$1Dj¤ì¦Ž¤¾¥]¥OfiêJúbæ,–€ùš füÊúÄh¦¬‚~-› ±Ð¾Ð‹µÿ¡8¬‡ò.m¾´Œ¿–w—_'8-%h‘2Ù4s&á/ƒ7V(oÏg¥ž›rÑ\t·ô¸Z‚ÉÀI!@eP[¥ýmë §Ê¡°…ìÏì\çIÛBË]½]¿M[ }m9ë›iíƒ=:ëg íüÞ¼i¹7O%åÅ€ ÊWmwÐø´%»ù‘·Y¸‡@kª~-.¿p¼¬·V…[ÊX¯jô–Ç“ÍMÛ›·¶´5¿mºßüg¬so×Ä®çÏÚ3:ÜÕ‡:üm¼–í-Ëšç'*ÃçBÂhvCF#: OùR}£<@+@G×<7¥xÍaY ÞåÏô=õöó;ok}âÅÂSü‰üná9W÷·ö‚úƒêù’ËbgX‹Ýˆ@ShpD¹Uǽ1’¿ÓúÁØbâ)õ±ÿú\éÎOÈwÄ•¬Ï–íÑ›&ô#†‰Õ¤RJ*u ý4ý#}&­?u•OÏcT2Ré hI 8#Àx‚íE\Áþ@ÉľFKq+˜aÑvu‘a£<&Ä ÿ'ªsøs…—uUŽÛiŽ®-/)+¬/ºY°£Xé^á·òÑu ¼š± ½ÈÁÄ&Š4³zTCô>Ë¿ÖcÆtK“ë½w¡o‘×`ûÅ<×1¾°ŽôîĶ&±ÙŽùbòý2äYÑñQ'Xu³èiRŠsJb`ûáÎî`²‚ÀèA( 7À·#JþWbl$ÞP¢ ±Ë @ãÄægÍÃ[ê[_µ§wîï¬îÚyeÐeKÇ­vz§MÔv§eT«´Ö´"!c×{vÄo…ßþ Ž ©|Z'ÙºÌLp¼¾‹—6É$Šã-¡4ï§Içæûž›ÛY:^?±P~\!_æ ãß(0q–q³ç¥A(+‹®hliüzl!è–YW8;ãžJ/ÖñМiyáüêŽÙ.hÂQ¾éí þùLõEÝív’e«è”Ú†QÊq]` K‚mþ3žýö½Ž o‹Ëmš§ÇØŽxK¥¡!yÔ[šxÓîûrýž)N§iúM¯U.&„S>ÉMPgv|—­&‚þ®J/~¢¸äÝßàŒuyÆ8f¦å Óå8¤ÛÁ…£ ‘£ØoL…n¬e§¦W#0Úíý)áê(<ÒpO˜"»lZãžåþÛÎ÷äög‡ Céáá¡­öõ¦%6Š]cÞ ž.Jp×2¡W±wHèª#j—‚.ýO”*"s샴v*õ€p¡ù°ñ/ÉÐï͹›[Êó¶óæ³3cÕ[M8ý+í-]3VeÉÜçÌ%Œ­42…F›É¹/ݧ4Š©B­È#z%[¥ùÅ\j›e)“e³(ýkëºáW¡ÃagP›±L<•šË¸K:J:Ä2 RTuTÆPì)¤ %f^.òÕYnYåHÉOòóêÝÊ2XJdÜǽ€aALȯÐÿUL«¨,ÃWl,µd dpRõÝòpõ4p4´&³¬BÀ¥a–#O›JØE˜Fª]^EDôŒ£ÆæcËñ`Â*ÂYüÌbtr² ñ+r#š‚^GÔþ@ù—Êú²ÞâáEý ^‚§ ·¡6!A€äÚM„ÑĨÚGþÅucªhè5ÜvtÙÇÙt'Ùõ¦‹&³u°»:]‹¨M±ïTš·ó¹àáçŸü«¼†4Œ'|e¹ÛѾèò³ÐÙêúD8¦ ùGТ¢]y«rµET@1ùw¼/#%ñ”Æ‚ÖÎvjÛO­=—ìÔ·þÕòSË‘¦ÓM½à¦ÿšhÒ'`ñ²èˆÈÑPKð³¿Â÷ÜÿÞ÷Ð]èAz¯ûN…¸±~ _ümôddd„âËrÜ6þ$‡±aTé:uûïŸÀ‹Õd¸(+póÐAâ7nžlßêúÇóÿ·°2ŒòÙ T·Kìzç{×AgÜvÝòÚÖî\âÈ1‡”.>œ·ZÑcÍòN÷ó½Ï0÷0Wƒ`«´e8Æ»"N‚s™³ËšilhHjè‹íÝJ˜R«ûÑrÎþÑ&s¯ŒâµññM'š ‰I1Rp‘ÿ®ÿNȵF<Á‹®Fs\±Sz@œ+.Ю6=7õuž4¿‘^ ÄÄ ª˜”X›ooU"ÅtÅ"Ûïmý?œ=¸›xo¿³ÑÿÑùÆ:Û}Â×/ÐØh÷=´0áky¥áŽ©îú¥f‘b³t¸ògýÇÿ|ï>ÏåÐÁ ÉÕÇÒlê+Og—KI-ü/B£o¬rˆL4…‚2’>VgÒ XÃØµÔ…ÔOœi’“2¸¨‹{¹ŠRȹ(z%þ*/Ù*L®ÿȸÁ®ã‡Ùç˜×˜³9Íb¿f“5É“çã¸rrÜ3y‹wÇŒ¾„=g]ל›Þ¼ÅÈPy5tþv7QO™MÝI:@<@Ú€í¤€ã ìjåÃA£Í*²O1 PøFÁ²YšŒ‹Õ9Ü-p…Ý']i¶9Æé   ÀŠú«=æ‰öRëq[ÜŽ±“lw¬“¬K­ß¬—:÷8ÿA¿Ã3'ñ¥yMóko§R6d:×t}b|Suc{Ãõøž!x%÷^  ã5Lmœ½à´ë®J±’ ÙRͳÓQé•{¾Éü¼¿êÿÇiÚÌ'CKâ£#Ÿ¬wdXÞ6á{m£ÐÖ!þ™óOЬõ6G¸Þ;¼Wü-Hð§Ð>ÎT çJÒô7 Ó57d$A…Ü‹RâÐ)’­æežE¡á±,VµNºR²ƒŸÃj$+‰Wé>æö'$‰ Ý[äFÆ2ØD*6 Õáž (ƒë›,y¯jd4wá3~ ‹ò=Õwi~áFp+7êK®ŠÆó8Ü#âÏ&©79ô{Œªw‡CÁ$À´^N§K&h5ìr_Êh¤ a'hXÍŠŠüF=€ÞËœXeîbÖR&¢–Ö­!$‘ q©Øi;]»Þ¿xÕ„Þýœê¨î®|U½ ¦4³v häU²n$ìržã!ò¡Ù°ë†@K!•°ÐQ5—j€ÞW¿­ë èhÌ âBÂ*Ò\Ò5ò5òòÒM ˆü¿³q ÿ€”C]Gã’‹HïHI”%Ô}” ¤‹„µÄ&Ò|âoøuX7AÓúÐÒHsqëXàgÒXŽPÜkúÏéõ£ƒ›cSãŸxåS©DR.º%Ú$z!„ Ó¸æ|òâ1ÜTì\pfÑç÷Ò¡ . {èí®#ÕìI’å¢ÃŠ\K–×è´¨sF1=\½t‡j>áHõäúßÚ¾{hY`³§ÛǶtñÀ+ œ!æ‡PÓ¬i¥/#Lr¥ +È帤2‚{ 1¨,+öäí:¾âLGþ^À?8 ë†ð¬5+–høK‰FcŸbÉ b<_–8=iŠBÏþ²À Wöžò‚!ÇipÅLpÅ;q$Í÷ÕGñÌøøðUïK{† jÐéRõ0ãO&›.CxÒ…ü :âïUCrÐÕ˜NHNõ†ê6€~•6^P!ù¦»d.ÏåÔÒÓÙ“ynö4î~É:óWgÐsɽٵÁ1Ó´TS&ãIÕò%ªÑºÉFá¦n²þ™~µ‰ot/_êw2ÌaçdŸÉ Š b§šzBëÕsùÞ^ÅP«Öà ­ŠõOÌM(ãâp0°;Pé™ï\ïy}•èlŠ5dxwèÒdÅû$ýåFõ à Ô\g8¢ûSuGŒæŸF -nPˆxooÓ|àßeþǹ/ÙbžëxfëµU;r‚7#VïC×!GšbÑ{×}×a™ê¬$O:Pí2[ Æ]êéÂEx2ärÉÉä ¦IØújï~×ZÍ1U¶fŽü'y?1”­ îGwlúußnr# rIH#ä!–¿ ÿ&$3á, {‹È×Ëé´=û%îÌÚAá0Ûy«‹÷އ?Í_®*1¬ÕB5/uG©ÿ[àd>Fø_ ð]2óJL2XêÔÍžç›D79Kë0Ï ûjAr?å3žŒ½KØL—‘ÇÐää8¾v¡Ú u Uè·p ⌠ú ªy‰CÖŠ Ó@À55±*ð8ø ä”ûP‚­BŪ©ÈÌE$A‡D×cºrȳ ``NõÓÊÞŠÃÕ¿B[!„ÚȽ¸Ø¸«˜éø…ß?Jfî nþ æ¼K£4Ò»˜EL##“՗¤~fÜ¢ ÿ@LŸNIÁ2ë‘0ô ì<—Œ6U)€ëiQÙ‹Ù}Í—|Ê õ†îx÷™i³ägEÅw…›„‡·Ù¨ùèd9E.ØÌþP-›qáX>¼d`ä ¨²º¨2­ÔÅbÊûHžsY š§4Xo<["ÊhÂZŸ}»Wè/ŽŽŽmŽ ?ðƒ¼Hï|×IñaÕ§GVŒÄ%×G$Ó,Bï—Pß`HMd3=ŒLÆsÊRÜðºöª‚òç…™çp¹+òv•7ÕmÅì#¤roXt¾|ç|³C÷Π´g¸ûûÎz«Ýó½\ÇlFë–}úÙg†‘ÒÄ]¢ =#;/þÂ7󷉵†î4?1PŒù^9°zžb†ì™\¥k5Û³U{XkÐ߀Û*µåõe}+6ÔÍ$? RI|‰„¾„¾Cß¡Á„ËeË…æòo¤ ÜPø&ÄJú;Ñ ý$ëDò×á{`÷`ýhôÌ0ì.ÜÌôd "‡!_¥ê( "‰PùRŠ–á†¢Z!­à~Ð!  ÷¾u)ˆ ÈW\ÕØº3Ü}šk˜/+´=’N? uõ5i•$ Ñ!Hpˆ÷ˆùš4#$®]g™–’k€kš pœý½—ý\UÞÁ®QnP¿ü"©µŸñÖË&¯c–¬5ßò¯Ž-l!4ŒòƒQ¿Ìãs^4ªøCQœŠ’³srûV¼D­àü¨ºnÛ3}/C"ß`ÍW}âog?dàHd„20´f.x.€˜‚?†ƒzJÿÃ%w„ÖQ~»pª*:/Œ – ¿ Þ_Hg(ôÜxì6›ºåŸ)â=êöÝ® õGö<‚ !®ë­­£ÀJÑÖIùÍ*Uøíô÷êµfÂ+ªŠz_‡øVÝ*yTñ®×_^®§Q÷›hËVˆn ÛJrM©Ð|’Ù1êlF)g»€ö€4‹ê¬ÏV‰ß —ÚRUEâ,©_‘-µó²Ñ,¯è‘}YxKäm¨×‹²WI3›0»•¤1¬ó£íVÝ]ä/Ñeeâ)ï–`yk5dÇ!÷zë +Ð1F2™EcüÊsˆ8Ø,œ+Ú)’Ê'ƪ¬ew=_vX_eû`-U.æì¦c Ò tþô䏿{£Þ#ÞqžWž]—sŸýk²m-µ>°…ìo=íÎ>¦•NwÔ¶ßžm8­ÛkØ!"“·Ô–WÞƒÊÙhÆ„¬…µ@û@¶5Ý€ àÀ©ª*A€ÿš€k@<ˆžü•ßkwH5Û*®Ö`KH’‚]¹Ï==ß}(iKEì·)™6mÚÌÜ1~kÿ-†M6ÞÜüq³jóŽcOµ–®¨¼h«yX‚Íÿ¾·bZ ÛIû‰³q«Ð;Ð D=\)|¬Z1µhV^ïöéG'ŠNÿRð² ðTú±9Ë5UÅUájècM%° lÀ%ói*M"ë\Ÿ1L9EÜŒ3‹y‹øù°•'ç3Vý~¶þU}Kíæš•••+¦CeÐ×¥y°©Ð-DèËŠSÕcëfÀ‡Áo"§€¸· i0kÑ¡ãö\ðáɤ‡Rç§ I츣žmÚý_ôõMèúØ1–ø›qÏbÆÆYÁ‰‰K3x§V÷—åÀ–Ô7Õhà"WV’g‘ÀÄ~\zNÓxj?ÿ¿£¢=u©ØäÛIÏ’—%_IÔ'ÿ–6%}iJLºhÇñ#}ùŒS…gGçƒJrk©-}¸fÖ0¾C¸Q„S´à§-Œ™6¦¡@R^‘ž· ¥ô³¸•-­IÄfæiþ_Îâî„Nã_¤Uß2 ÙÐü¸)¯ñ\Cg}\ÑÐR½¸vWk!v*"úâÙœåÛzÓzRî§g%D$|•€ì…@ àulkü ð9øXœø)ÑÙ”›<Á$ý›U}¶±øNÙ•ók›à3š÷bÀ¤BZ/å&ÁD†®b÷@ú-cCÊGˆ’šL¾‘¼*±2*©5qwê´_¶‡36dLÜzcë‚=äz⬮úFMÊ`d1³X›9@Á$écù<ù2ù b¦â¼²]žÙ¶K¾Oñ‘SC.oq5~nŒBV¶ 1³9‰ÜUØç-ñm$*† ·Ôµ°P3^ ² [YA®–ù…ùZ^eé—ˆ˜&Cã_$bÛ #ÄñÄ7ÏŸmƒê¦Äf’3Ê;KßËͤí#Q…prÍ"8i',e=VM² P;bº×v_ ´±ÂÌQœ+¬ºÁ ·æø†vñzßöîí>ðûÒCSºÒ{|=IÝß»`]#½>}¡BE·ÊÑÛ±Ø5‘ð Ôù–ø1x &Ÿ7ÎôõØûÚœ…L7%fb,L5GtZ"–Mç¦12ùa§‚¶‡<•2‰´ŠXC*%Ù§pce”½m7-Û,·ô»äsè)­Z°0Tüd ·"ÖVSÐ<@˜Ë`œ¢Ngmjk×:MU¤n(w΢`Ú±Y˜å­oïZ¶æ¶®@&!ç´lk‹•×;ɶñºä¶Eò9í¿i¦«–‰"èÇ›ðȇPÑKâ65¤`²i¥¬ƒl ]E$\iD6 k¨XÆ|âèLŠUa²496›Ëúűªm­áŒñ”vƒt‰Ø+ï7Õz]Û{tÝYø@šy¤fR»M^(ÒskéÃÙ¤nˆ0’UÁY×~ž¦cд0qHÐñ. ò±6«~„6V?h_ãá[åO †.„Á7Cz+ŸÙô/?úi_ë§–‹Ø&ZŠdS¸ÓíµíbÁüó¦DdËûzTÅ.Ìun¿n»å©¡pðKÙ~¿\¡›iÙo“XwXdæJÛmËS«“è{(þÌy&z-(ÍŠ/²1ò me¼HÚ\,‘tšAh¿Á05¾­X_”YÒQ SVüÕìÐÝ•Oa™°cÐ3Pù0£žÛðª)Ø ¨,šWxêèþÃ3òá熜N9èJå'LH|j䂲jP4"¡xt$KLÒ¥ìN+ÙÞ—±y›f?:ëÓÁ3Ü2håÔJiõ |q3¾õ(f&n ±øÛ]c€.??ò v×-ðÙ¨Ÿ7=ÝÀÞœ¾exüÏe\á#@ ¸ù”ð.õJ%ysB^•Äw©éÉûï]XÌÞ#GS˜ÔËŒ›ìùœù¬¥ô\Ú&ç”ò¥$#%YR—EÍÃâ[Ž#žÔAkþ…í©=ÓLh¥¬Õr§XF… ãüäÂs,Œð™þ–³–üÿ‹ð‹õµö.O˜ŠÎ¦Ò…mJˆ~—ýO[‰¶_L–ÍÖU9vøšm|1—%¯Ã¹[g5<©ì„ñ*;¹¨Ï,¡n (ê0„Πz<û^£¿‘„žFyÈëÑñv…½]Ÿ{ {™á—A@çžÎ‘û;¡]K{¢ºYö÷Â'Ôjê|æ+j1‡T@ Ó"HtÜHÂIñÍÝ~ä6~¿â©YÎ µ×ñ»Í.Þ«x¦žÎH⌗ð$ 1’¿€×ËYǨ¤ó9ø‹8é4Æã›¸®&Æ:³­ƒ¤[Ù[ؓȢV:\Uu¿fL£ƒ¤!˜!V›ô¤©Ê¹ÑkõZ¬ûø×°5Í8ôPò+úWÚ6bzê ê}SzƒF(§c§¿:†ß´eºSæl3¢}€÷€~ ?kÆýIÈÁÎhXÙ0ÿ'OÕdøIþãî8jn/y"ý7vu26ŸÅY®Ú¥Ù­  × êŸm®NG´j-F‹i”u¥÷và„ÿ™e<*Ëæ2ë· èÕ´ö4ÙNs­i¼<•ÛË: \Ö—\gÕS§qâUo<È`z‡Ï»Qs“efsÊuÿsYýe¾e¥750è't>¸c»ÄëÄ÷¢~œÄôµpîSDàdð‚ã½<¦Ž¤´lN9ºl6U-­º ­ËïÍ+ÝLœ›Ú™N:‘ú"ž’ÎÞ×"âò@Å@ BžƒþI¼œ(MíK[”1i×¢ì¿÷ =:ö|í…²Òúê ħ&nóü–Qø‹¸r £¥ aÞ)þéLè@Q̉Ånù•º.3jã&`Ԅ躘´x`L¬5.#ng#¶ô7d9d4p8p+h„ nOןR~©nò" „ë }¡¦Ó–‘?b÷âå)+À]/à ¦öó>p¤ôF’÷¤eu㣚g•uðÆQrª¤·g1£ð‰„­Ô™$þ1qšßJ6¢þb[Ì;ãTfövˆ–ÏcÊéÊvM¡aÊÂßÍŸ­TX+ÝW\u`"QÛjO^’”QëO5‘ÚÚ„æl×/~ˆkmšv.»$æÒÅÊïðKèƒìŚюéþN_¿·Ê~Þ°it×T׫Ö\a:•‚ùµö¹ö&‘ý½e¬ ôã-|Ô~üá®éü\Ù :`ëÊ쮽qg:XVŽí•{a`M WµMùRŸÃ-¥?—dê4úýBGÕÝ.isŠÄr»1Ú˜*¯º•^g[`…µ{›áøÇSåëÉ5áyx<®©¬ÂÆPÛBý'ÇX¯ËßðìÒOe]l9ÓÐÙrƒ|•³…ûˆ:x ŸŒ=ÚT_w­¦µŠ] @ƺÐ~¸{¾n~oydjX"Û!ðÓ9-O…¨D•ßÍǤ þRΖàÖcñ1Œ,®“7Œ~;ï"ïg 9?s'óPÒµÆÍîâ°2Œ Nõo÷²¼rÃmS—ñ£q†æ/Aû3«š5Š3†³†º€4“ñVöÖ8Ï4[kjëæJm:A£Ù¤I0¾²gù¾ù?³=ß%$ƒ&!ÎÓ]rFûöy|ŽÝŽÙîë®ן.°#K•Ì»E Nïbåd¶ðS°VØ7Ëc¸‡™Î6œ®yG/eMRÕXg9÷»úw´M){§“`eÝÊ©šÍÚJíbͺ{Æû†íšqòÂ÷Âû‚C’9xÆOèDœšr;þ¶r}í½ OÕñJGeFÅ•ÊY0,jƒ•+I„~®|\yóÒ¥Šu¥·.Ì-5lÌëÝy‚ŽÜüϦ•±ãùÀgñkÃßâÒ@£Æ7€ö=  ùÙ—H@%3“"¶OÛ¶xoQÎ?'|§¥@㪻ê¦"`––áßídQ›\86W‘‚7vG§¯?´ñMÔŒÍ7¢[Öo‰Œ} \FBC€]‹÷0H}ý³ t=á5dzzznkÑœŠòºëpPÓÔN\'® ›‰A¸NÎd|dÎà¾åÞä˜Ø#9‡Yר!"«BSš„Õˆ22 uÓËz¤¤ÉLjӱZü,‚»ÿ”ܧNní"ýÚ>ÁºÔØ/[ÈZCJd¼’­Q,TÑ´õív!›ÇèÊ­gœȮEHŸ°'Ó±Oš*´Ð'fc ~9o¢Ú®;añÛæ˜ÃíóˆÓËár¡ckÔ¬Cüùƒ9Qµ[½M¹Šs˜œOYÏþ]p‡'fdP?Ó¬¬6Þ¡BErЧz.÷Lïuöôb:7zNÏèïX>;gç¥îþ.jç–Žíá¿Bÿ„jC‚ûœýšôÌVe¨ü˜b®4§ë'éȱg$YÔžs‹%Ñ8Åù{6Ïû³]%Wá×&^áui\k>T<<Ø8梤{™ok`fH"º‹Õ¯é7šÔŸA bi 3NFm ,&Œk¥!¸5¿VG#¦¡óµö[ŽJçoö%¶CÖ ÝuQïžÚâ$¦ðYŠzá7:÷½ˆ:OÄRæ Q”㘉äI¼å8eB8Fxo"ÝfLàg+ö4V‘çvxv×ÛpBPë{ç°‰´Rí0ÅKÙÕ ÙZÁPÁk>Aœ$ª¡_n}޲qPJŸŽ§©U‚•Ò^ãNô/ó 8GÛ"Í¿_XÆ;õÚY’ Ž›ãÑø,c]d«Üt˰ý.§ë/÷%{™þ£ì+ç3ÓÉifà´cÛ‹] ¡®@¹w½â-ëšüõºv1WJ+4Þœð6qMÊä”ÙºbL¾¾ábbS.jæVŽUâ×’ÖSá4!}£‹ù€õŽ3“ c ©?N1Ǫ«kÎkl¬jü„]ÀùWö„»”z«åecDóÐæþÖSämÌÝô—¸¸\¾Ø0ÇèÕ|)È“qJ‹ú³f„¶JóBÖÏ›%x¯”†:î»Kmw…€¡¦ÞÃ}j¸U»¡ÛÜOÚÅ&šÄß ûlšgY§_Á»×ÔWR[>»®¿z楬âŸ`ÐyôóŒS¨EÕHXYõ¶Æëͧk¨yºè á$2qþkëBr!õm}?­†\‡»Úº¯¹y‘xÄüÚqÑñÉõÎ~ÙЪÈìfç2.‘§"¸Ÿ•©Ö£®—ÊRæmR5BðLõXµˆ¯¤m§àÕ¾©ëÄ`j'q¦¤q ~&·º]¯#šÇÚG¹?{ÎYfjgKñü ¼/ È#HÖ¶«ä1š¡ÚŸ5‡‹§pÇpOh¼Mü‹œæ^ÞX}ºû€ÿqàuÀåéËÛ"¨ þ¦a©–óÿ,ßmÅŽ‡f›êˆÒdì±nñØ=|Åþ ó¬‘¤œ-G+sEŸÄ ²9îúÐ/^©å®ÎOWCí£‹wŽ1‡Õ!©0ukW Gµ'µãäÓU©ê¾ìª!’·ÔT.V_‘DñŸ°ÿGûHÜåcV#J>–æÀ0Uy•#a–²ç° Õ·köU©€E@Ç–¾- –Œ(aä1d×f¿Ú}mÛÞôÂ$bÂÝ@Ò³„ ùÀ°.îd<Ô”˜ÒæCª ~Œ…Üï€\O|œ‘ÊIÍIîØ‹È]|têõ¹‘¥ÛÏç58 8Öt"çĵÊá‘;©iGR÷Æ‘6¿Š:³:v},>¶üG˜±¨è5±ãGǽ\®ƒÎÏÞËA#@Å %ƒž‚bÝyI—“v¤Än»y(›ƒ\ˆžF¢C-W0 °û±ÙØN‚•` ® ¬ Œ!ºÉ'è+9b^†d£BÂŒ ô´üZ³]ŽjPןD=¢|àM”äÑö4µW­s!yØL’—P„ßG»Ëûª6Zoë›Ô.E>ÿžè¾¦L7E·B_¤%«:Ä÷D/ÛÁÆ•Ž¥~›ÿƒµQ=KœÃþ@ ·31ýŒAñuá3æHîOz€ã¡ã ByZÕR6ÞP¤dâÙgÏ@ÃM÷[º¹IeoË’¡GµzP×gÙµª<“×~Ô‹ è™}e䵚kó¯Ý½,é{Ð3´ëDÇÛЮÐºŽ´Ðì+p;˜z¬E†?†Lþ õNºøº>lrÞq•8ƒöûÇÐ]ï8jWا»ë/‚__UŸcBàjÇóP¥ï?ƒ“‘׊iöbc˜cÚÎù?ˆsy’ÌçäÚ·æHô0ô!da £õ˜=ÀºÇàÒN’‹ Füâ8ÚlÚ¹ÐRÿrÏc+U·CædæøØ‰x>þ õ»Àþ\—BÞM[NŽãΗû•@ådÙ&Iž(BöÄ4ÌÂ2NÓCdÃÙ`§4P CñË8µ"¨Ü.oPîQï‘¥q^ChD+M P ìŸ%påmõ€y–u²¥ßtO1·€S/0 2'áÅHþ…„`wû?ú ¾wNŠþ'¡•ñ†)åF˾©Ùöyœs¥k«c‹n,ï!§R¼Bk²U¹UþFß1çh'Ö±À¾ÚUïï¡í²Èíç•ØT&OtÄ”í9æÜ«¸MN äÒ ¼g|žX)*ÅÈ;U*í ¦]‡’åòBìÉùâR¾‘}‰LB_Eîiˆ®Ý]‚*†Â P”—φ]†Î¨„Tm©\Û []~äRi¡èDÙ!{Z$è^üeà1@;0¸ôhŠ»?è‰GÆþ+ýÄ@šÎBîÄ¿„$%@’bº!k!ŒDJòΔž­»v}Ø7êààÑù;óO96,v(>¶ûíÖ_Rfƒ‰Im);@Í×/ݰiÃðÍÛ·7©£[b£âtñÅÀ•À8 ZZ æßÅÿIŠwƒØÀ}`ppÈ Ú ¶€sÁã“·'W¦ìÝþÛ‘_`Dd¡˜MÆ“zˆS‰çp›qF\þ4n9¦û^E(!ƒ¨×õÒR=…9ˆ.¬Âòk^ÔþU÷ž‚žC qIØTo㳪Dq9EAân`Æ0õ*÷AÏË*õ!u¶ævf»ÁiÔš¦ËÕq¢Dw”ƒÆã®}Áiá«þ­.•!÷ˆüÕÝìGzPßø¶ü¶]üÝÒC¦¥Þ£Þ>óJAzkoõ‘Ƹ¦GpU}l}CÃáæÕè(œ³_Fx‡í§4pˤ?Hî­a^W}×äNvgRODŸørÝÕ?¯².ßík¸\Ñ7©g×͵¢“Û¹8¬ ¼ößõ?÷“ý_˜`‹‘nÁf9û·³ƒÞ@–Ÿo±/)z {ï»÷ºŸy„.tìŸ Áƒô 'ø!È bÃ}1ŽdÝßì$\ö-Zðçm L ¾óÖÚþ“ï¥~C×fPnãk™2BU$JØ"*?†fÜgÀÙs¹÷¹å!¿Ì_oûŸì Y€uã÷Öc^ „2GrÇððf÷5é,Rî#3IÂTµO4@móL­Æ ç$_º¿×·Æ;ÃÔͼÔú½©õ §Æ²]ÌÆTv1+š1•±ˆ6…xƒG-Ä®¤1¤½Ö“ÖÇ–ã†,ãacQ ÉS¨{5‘Ò»¬ÑD ÖÈ»læ!{VÚ'™éz'ïOÊSž¡áè.y\®+öù΋ª–SWÿ°ãU#ÚéÿÛ#qf{®úaþÝáÅïo}ôŸ¢Ú¶Š§±¥”:O·?óŠý‡W¸ÿâÇ$.&ú±<« $ùª¹m\kéÔ÷[¸‹¸‘Š÷2+¬9\UÛW£©9^³¬vnU~Å)˜½Bí- € ƒ™¡í°0Wé»á1þž]É;@¿Ä 7 cH±OâÅ|`c ¥ñµ€* /îz|ðgð8éH‡ˆgƒÆƒÿƒ@“±I©‰g“N¤®ø<L– w€› © u §€­àˆØ÷@ž”Ä©â@WAÛ!ÇÚ I;S­Ûr¼>?º*§e=i+mmUHIÂâŠqÙ¸B U„F`3~0h'ŒÂÈGiŸ1É ¦Šõ°å¯Ê~ª&À¿ À4jÛm©ŸbD+Ð "¢–$ÁÏÁeâ4ôáú{îIîñfcû;í ã2=EO2Ù¬!ËB£ZmæâŠöxÛ*ÿ°àÀZïlûCE#󾩕ÔF|!(98Q¼«›äü9À phqï3‚¹–’MÝIn¥ §L÷éÀŽÚ)tãM¸dúXþLñí:w†/Å'=í8Ý}¶;¦ó?ïKíháßL3e& Îâ þc]#Ÿ¡Žc¸Gøs%ç;¹ü/ì2O8\7ÔÔ§"ÌÐEkDøx¿Ê÷˜Í¼±‰ÆÝ ­WåÚÁžÎ[:C;‚ó”0„Ͼ#)³D¹¶ÜS{urãh«_ýžÛN¾ÏÐh+CïýËR{“â>ÜêѸÆ7œYì*Ößdi=Yn5¿¶'Øß:ŠäK™ÿÿÿ —eXÓk‡ l=Ʊ[_ÅÀ ¶-±»X(H7lŒ 66Ö#6ÖÝ=ZìîcDZۗoϧçz><÷uÿî™Õ¥•³ÉPåÎá=Q–g裿¨9£î®?"ºÍëæW±Â(_r®>s>;.§_βÜ#¹…9–lbæÃŒ[éEç‚i7S—œ-9¥:n9>ê@ôÖïñùqÇ&a0€a~‹&€Û¡xì$ìHh upù°‹"~¢+€ªžÛîC0O¡XhðoD¡¡ ÅD{¢5@(xZ >é œ‘a ‚‘Ř=1¸„ÍÎ?Ý’Õ«lýaõ–‡ÕÀ¼[õƒ¶‘j£Ì£üUΦt’”E’WNä‡V‘|f.O˜™NÍ^“­(yH£rQ µ¨Ÿi,•8B´ªÎëíPúw¸×™Så¹|瓈É[}…9L<´™ªûK[³Xƒ6`Mû,ÅŽ¿=¤@QÛ†ŽUi]õ pûmßÚÞµ_èø¯ó\WaWHǶ`kqËûopœ_ç™ë^èNq©]áî1ÎÙÖ!æeöë^wðgKm‹9¸µ%¢åpë¥öY]w»vþèxÞ¾¿}Zç÷.ýùøî¶®Gí¢¶ImOÛ–µ¿ Xœ­¦EÚ/J–,GvB8tn’w‘¯¿¯Ê÷ÎýÓØOõ@•¨¾ª2¨ÇÇÙ¾yÖµŒÔØV5Lá ««¿iûhêÝîÖ¸þí{£Þ±±v´#/JŽ7?Õ[8Hö1šDA½‘*£_â±êÒŒ¥°¥­•Þº8øË¿ÃûÓA5>Ó‡ê9µØÙêúRó,UP8A8Jü›h3'¡ÆÈ¢òê¿Kò¹iü  yÌÕr/ ¤\*Toɺ‡,ãmÍèf¿i¼§›\gbg“’ú2ÿ%×?ÒŒWï­o•5ìTG讚à %¢P»! Éó_d¾9÷%#!—Ÿ1-{gvCÖ묙¹ iþ³¼”·'Ï%'›ü™¸*¡ÿÊQØP$öcÒ€ƒhu ¨jÁ$@‰"BÈaL îø#ð‹¡pè ²c;ÐÓ¡(˜9‹{ŠÕáNÅ,Ž»´²!aÛvòÞé[çomØéÞ9{Ë5ðXàª*µÀJ”­@}@ǃy€½ HB@ @?EσæAÅêP!P >P<n-è£@@Âb2a¦N†ÇÀã Ô÷Fž"3ñWcGm¬:b>fÞ*>ZyŒyŠu˜E¨.¤KiFŠ˜¢,/+_Y>Œ*õK<µ=uoþ­âøÒ¥ä§…óÛ à¼wÅ»¨Ëª"*ʈΠEae ª¿²Bi÷I..Sú”ÇÑÛ™zÕ.tÊê5Jã}K¸!BG3æêÔ¯ãfV¯ao®Ï3/tíõÜu7ØwšGIÖQÛJš gÂä Ìn]SoË7ÏÖàýVf0Éëµñå ÇÆxOË'½¦üà‹kS¬ˆ³ÑûÑa·|v¬n©òN0ñµi²9õëR¤tE­Š¬8Ö°Oàbl¡Í¥ž§u3+k×é¹ö×O¿Çæœiåè‰cjšÉú%Mï«çSfÔÈÔ­f5IΔ‚A5y”.♌p˜ª¯l²ä;ÿ‹àQ-YdÆ+Fª²5—trÓ$Í2)Oxš§äo“Œk`è:¬×”#)•ƒ‰âöj3⛤äKê[ê~4>•#Ú©¦‰DÙTlÚk.°o5mÔ,«=.‘4Wš>k7ëæÕfüQÂÊŸù• Vð¸ûë–ËS¤É<íRYc'[Ìú£ú[)Êo•£MK ëäòÆq¢9Ò"âál^xnYî°¬âì茎ÌÙ3úg¶¥ÉS3OUøÍî5ÛþZ³$& £†ö"n Ý»Ç#§£&®ˆ: ~‚Ñp/øj'<‚¸‘LüUè%„9˜ Ì]d7¦> %a"q—c€Ø ø^q%qW¡×'o îýßÁÃÛ¸«$¼¿‚å¨q(lD|ä1ÔO€%G?BBƒÑ82—Þà °Í„¯AŸ Û œ §B3‘sÈ\ìЯ>Ðw8‚ùŠ¿Žé…DÂ*è;ćYH$63Ø0ð-…šã#qØbÍ|ÎÈštú*¡\^^AžW¾·|%y+)¢è¿3íIÖÃYg–düCˆ ZȽKž—ò«’˜^êKâ:—âê¢Óä÷•'+P>o:I[Ëpå芩Ä3äü*•ÖüÂ^ãZmÏ3G[2ŒF 7…^µš{[yÂÖ×óÀÝbO3\á÷#G„L(N"M¤wÕê:?<+üKƒ‚P`®Ç¦põU$š‘šOŸÆ+y'¦juêr}¡=Öw) i{ÒÙq~g÷›îsB.>êR´Í âö@RðX0´Çnäà‚@¢—í’:~3—Ê‹$7MÆ\ûm{«u±n·,\îÑ]±xG={Ý×}ÇÛßöž -˜ÖðVf«û¿ ã/æv??ïë>|~Nwý…ƒÝËÎh'ù„΀=Ó¾À¹ÄµÞvÓlµ¯v[=aþÿù¯x¸¦Uh‹tŽpî¶Uè{+§¨GX~\úuý…1"©l¨QfF9$vØ£_¥=g ·w¹ÞØ·:¤c„‹D'ër%84:šÎ¸ÁšÅ’0Ör—KwÉÈê ÑíȰ-0­Qé%ÓEšºä†IµÇØòŽŠl±P¿×*ÐMoa#ôÿˆŸ 2„»s/T#TÕ$å[»ÍºÌ ùÕþõöé¹üëgíÒ†2¼f¿išºYh¦»K—qh£ßÅe*¼‰nýK¿ ±«+(›'­¢^b†$^0{¯æ:ÿ_цƒ ¥Œ$¼Dõì<û"el¡¯jæ ’«§°û°ÖÓ¢égxÇyÇkHÔ¥ôQœXñª¦º•Ú§²"!PT–šQ—…Ïž–ó5‹œeÉ‘œ±5mcêúÔWGsv$¬Ÿ/Á?Àb‘$h¸ø­êÐÉÀ~ÀÕ•EƒÁD„’ uÐ;(sÓÏÐϘxæ< YŠÁÇâ.ãããÿÅ_ºíþžÒCNì=°2¾ ™‡”ÄŒ}Qš¨©¨ÐèÍÀCÔYp?Ú‡>‡~qÀ4 ÜS¡õ`+(ƒL=§ÀH³á2h¼1Â$ÌuŒ £†ßÂv`Qφ#1jüfl†„ôF’á,äs϶ì³°Íqgv&$còJhw™ÑÌ‚åâÑò쪜¼¡<”Œ'ϤøH1$W±)“u<ôýéݧÃó–Jˆ§Šâ öÍ#f’Òö”ß(j-,(ø¶4=@xTYV9“l/ýXÁg¬ea˜ñ”ÒcöÚæÞ–ÉÎ…ÞSÞi®Ýö7ÆzåÿÄöêª$L{×öÀ´AšÇüs”%…{ §•ì"ÆTÔV{„Aõ »Á}ÉsÓ·Ý¿ pʱC>N|’ë¯І7ml QOÖš>›¦Z:ÉÞÞm¾°6i×¥ÎË]%]pÓ±&x×gð)ý‡#ŽÀ#ß×gûb›Æ¸Q<¨ê“ÛàPÏVßQe*_Ë3dzM9ÖRd+°½·þg¶i‡ªÏâ»= |“ZËη]žo=ß碬{y§±ûÌeóå¬Ë«º:|õÎ?É%öLv”X»ƒ<¹^¬ð.÷Ìvõ·t„:Ù›»UÒú˜ú*…ûiûbÏÊf¿â¦uº³Õþ?çVG¤=ÄPÁÆÉöV·Ó{ÁuÈÌon‡ ‡J÷6m}g"Œë¬S<² ¿à g‰ »>SÖÚ4ÄŒq]rÊ,ë5ãë> n ž‹ˆ± å~Úwé~³ÌþJŠâ-á·Ð=Ôö~i©"[S®Ü«Qª*õY­k;äþŠ–Ôyà‚³£¾«ú4uIÍg©CþH~Pÿ¯™aÚÓ4DDebhu 9?—g¬¿«+u\µÏÒÜ•­3Õ%yÙl?gA5§’Eß_ós@øPÈû.Ü"ƲùUõÔ™ä^E‹‹»(—J‡?V-¨þƒz†äªhähè”N‰8S™“XC5"“D'{W»‡;‹vºhQÎŽ¬'Y­9Dz'e/Κš©ÍXÞr:úDSrèö«ë?¬¤Ä‰[‹×c!ÿ@_ ‰ØgÐàèÃ!ê •% ¢#¡%  ÍFöƒQû‘Pa ˜:x5hÆÁ1;ð4¼ ÷ 9†ùwd«å úäŠãÓÖÆb$àsô@ÜM¤êµùÀ;ø=`ËÁ@ú)‰ÀP(XöwÃáð"Ì,hz ïÿÁ~‚±ð/،̎C`-ø?°Jƒ ä ü 9…dcnaÊ1í˜~X3r¾VÀŸâÞlYŸ²…´ªJÌx zb¼ÙÝ_¾¯ÊY¶˜Ä,{_¶¥Mâ•%k se rŸŸ[^ºœYü.o¾¸èaaÿ’W$tYHéÿŠû‡å ÈÞNV±‡³\•¿—΢üÎêS;¥q‡¨“>—ÖΪ¨Ðrd{¿¹nX×™™o+‹*9µl'jV›èP¹‹bûFéæ’Â‚¤lu+ûE¨?d{äõJý3Z±mÍ®)&¼v§òÆ­'èŸêbuÆÁ6›y¢e’ù¥6ѰØù»Oðb‹¥êšz¾²ƒÔ’ z“ÇýV Û×dzÓ9ÖáÖ‹zнÒ/ÔÜ!YÁÿ‹Â%pÐÂŽä-*›ê«ìϺ{‚*¾T®uOëêÛ.éxÑ5°ûyWÿöOˆ»Íq‰s ¬ÏMƒ,OlÇyç}×îþnœ3ιÇõÅ[ïéUÊá²6ÙW£Á;+ tͱ=·Õ;o8Ã\Kýhïç[ãvS»­Ð39ÈöoµÐL”½½Ôm2&ªR«éwèQ¸š Áêžöì×+Šs rm†çƒ÷®‹¢[J¼Xô nLã…WžÏ«/°señcùƒØ+{˜º{¶ãï¢Aõ ²—†½íï:wú›½M®¿|^÷NåãÆúÚÝuY ŒÆÔ¦š¿ ?UêZDsks¥ Š9Z´þæƒjš¬E|K4†»„y°æóíWõŽ™Þ\ž@kgfw·ñÖRcË×ÑgT…0jø/…­,¨Â_a-i œ¨ÚSÑYú®ÜÄ9ÔЮµë¤ÍýÄ?X7˜½8ý¸9k æjJÁ÷2+˜ù#ëFVŸìÿ2Ò2פKRwžN;tmï?kfÆ-ˆ»3¢g36CÓdÿ…¾€·€tp%8!Â|(ôû£»¢GÝ  =Ξ¢RÐjô-ð5²ÿcÆmÆ0p£boaŸáÆ#˜ßÅŽ‰Qnm>4aÍHäQôÄÈ·‘2À7÷˜²Œ†ä` OB{ é xˆ6 ìh5êp¹1 O éðhô8`#ˆCÃàÈ&x$æ,äìqÞP Í„"zzÏÍ‚“‘Õˆó›ˆ ÁFaájè¼î…AbV‘®§%ÐSÜuçW_M6´SE%ûJ’K.ÞÚˆB:q^ñ¢7$)§d4mS%­ôyq$i5e)²,²¼/yoÅï¥òl¹OKn²¦J>s%ÌXR/Ú\æÅúýú—ªG\/i©g‡ D¾Ü|Åú\O}ÇHÕk¼Ç?Ëq ‡H+ÉVë¬+Ys›ƒ%¥’J‡”RÊÇ“þ¥‹êµCM«m›Ü!¾>-íùÁ›n‡Cf ³ümªÑ’dŠÚ?ůjãj÷Iþ|dÇ)ž™¦8ûyýï×µT5l@èOó¯ñoó§ú7{/¸aÇX‹M9Ÿw²ÊÊQüRňnÑû—…=/x]¬£àà…  ¦&žþ´ŠÂ¼Í›'©…é•¶8×{÷2ïïXo„{¢k­;Í{ßÛì¹ãù⦺^9—9®[†ƒj²ªM›ª¿ÔSu×&÷M÷ï0ïKOµGâÒ8þttXúëºi• ö÷uì³vt…¶¾jy¸åØcl0ñ“²®'Ý Uz”UwÔ 45’%46‰ÇmUO1ö±¾²—¯Õ-Q~t.ôߵᛥÂo’DE¥«^'e!•X¶†^*M„÷„ýž>ŽZÎæ š˜Tjÿʽ¬«âÝÊdK¢3ÏÀUe4’%KK'7ÒÎV#²¢Fmãô¦ùR«à/öfK2®1Q{¬ÇT§ŠBX¿W§SiÄ3… f–®ª.¾¯ãªB”b«5ͪÛE¿FVq–Æ(šÓ0’76•æ)7T}c­gbœà“t67bM›é‚%Œ#Œ.úÆëÊʺT։̶ôÌÌë™1Y…™PúÌÔŧ+N ;2yë¡8\L$ò: ü€¶ƒ³ ßÁ+h9´¼P„¨­p3 ³±‡®;À(€5˜F éÈxô à& ƒ'ã.a¬ø“¸Ý±Ü‘˜"\?LvÄ‚sÀÑ ýQàoÁ zGß_ŽŠ~”C1 È~€#@6Z X ³ðaPÌÞEË£÷D?öƒIÐìB¸&Cû1Û`È€ãáT(\d‚x ò ‡í=ö›ÐÁ_Ðø`Ý-n·[ƒ#bøø¸M¸ ±ëv.IB`^4¿u>öƒ|C¡?wJ'/5?¤PXp½h&±¢t*e£Œ. ±ÉI¥ýJÇ“§2ÎÕDS Í  (·ÎæžùÁÀílZ'h¤ÒÊ2&s6Ê7ê›e—Yæ’¹3ˆa¤¤ªPQ‹r¾’(¿£K4ÔY5ÕXjR ´~rÞ·ÞVˆØ›I²MTQT1ˆñX„¨aÝ* Çm÷Z®·>óS<Ÿœ·íËm½A6O¤cÒih·*_V^'%•ì¡Áâ]ÆÞÎ?Ý4Ú»Ò7Ï7Ãÿº‡µ/ëõ­ n{_¹†Ù…¦ul[ðª6Q¯½Ò¤«ÁºÏÞ=*:¹¤`9MÇxE­ÜT=–—]·VñMY£Ð5!6M¾íªÍ¥k‘â…GÄä†7ªÍF“å¬àqð÷ì¡Æ„úéœK\Qmƒ|¹.ÁöÄ5׳ÐÛÛ_ìÏóÓüo¨§Ñ»Ái;n4Ûlß|qÁ½®¶±öv‡$˜¼ë¯w]´n²i¿¹ž¹CÜ»­jý…²þ•T#©æL$³(¹â ÆëŽßñÎ¥Úv)»AViV9Gi/ŠæsܼuQŠ>õÑÂÛ‚Û‚$ µ9³y]¬ä¼¸IÏ»X¦Ü$ ¯(!F”9Y£”Ë /L_xOhäªR mÀ£$j”švUŒjlÝC^ZÅ ²oÌ»*’é¥>LóY.“4p'W·U'W•öäÅæU´+ ÕÉîÔ´“.•`Y<­­y,ÿJMn/³^«ÌSdÖM©ÖQ)Õcjð5q,)W(î+ëVÊ%òù¢ãü$ª†ä§Ä“$Ägy·3Øi;3Ogý–±0 >ÇÉH;»é¸lWý–b®ƒìåQÏ¢‡¡–¢N¨ -‰.DñÁ_è/h *!š¼"uH B@^C·—QU@*ðŒÁÃíœ{ [‡ËŠ93.†Ÿ{ û¬§ÀpŽ„¢C#O,íŽúµbV䨍¨N4nBK€Ÿ\‚–£Œèc@´ô3´ i¨&B~@ja7ØŽ‰‡9€†Th, ‘‘päˆ ‘Cá•@ôü –aQ±ÛbïcµøÍ±õ¸4|þ>+îÞº¶ƒýÏ,=™y®VDŒ;{êTGZbÚÀÓy)Ë³ŽæÎÉW¯W'sùþpæ•r!ávÉT }xùþeëcn4žÕ'¨Wê•Ýqsœ|7seaç å1Å9CAtÑ‹’ÙÔÜu²}¶=Ͻß%Vî\$6Õ+j'ÐCJ’ ÏÊCkÔM#,‹sÝk\86Û"”Kª•Ū«bx“~è4֧ǽÝ{×wÔõ^tw¦º¬.Š=hjµìr<ÁxwŽïày6V›iÞ³î=îïÎŽIîHgP«U¦4uI’^cårÆØº ëÜF§Íd¼©ÊDFX¯hP¢^U“¨è¥ìýÜ|®„o­®M2»Œ?›f5‘SYª¥FNÝ|^)+›ü•ô æ´b¸åv‚°œ6¨l*)ÃК¸ÿ4.S¾nê+Ö³ÏÑé”$òZ"g¶¤RV}3H-Gly†9âYt+]xB `=¤ßc¥r2yÜœî]¦²üZi1­ø‚³Ù§r_dSr7d2²6dEiL ?µtÏÄUçã`Àס·ð|`*d" ¬£Ö wÐ6TwdZ¤Õ•€*–ƒ.À t‚P°ý<Œý _A΃;‘#XTÃppãb¯Æ~Ž¿‰cÀã`à;6P¹|ddzÔõH[ä¾h*Ø´Eßè©Ä×`NôrôDt{T0•†ºþèAwq_ùàWd*FŒC×>îtŒWÉÅ<€ß#cXÌ2ŒBÁ9ðôä ªZ §À ðÁõó¶Þ‰÷áïáKpcKpó±Å˜0|×Ê–Äy;?ì}²m7~÷†ý SVf¨/=‘›w¢xLT¢£Îb~®Û¯¬T‡Ô+§rruÅ%%q™R—v–ˉÖÜ‹™K¶ 25åÚ`ƒFü¾ñžºÊ°\¼¬R;,ƒYp³ØV83ÿ[Ñ'*‹wAk3Ÿ¶§¨n u¼éÂÍÒåÍ‹t±êÍÖæüU÷‰Î¢xrKÇ*Jhœ W¨ï™{–úWx¸·˜n©¾«&êBŒW´—äó$DöõªåçÈͤw„ì’Û”áÜ~õ•¦L‡Çþɬ17Û)®2×s·Åg ÐZvµ|+Ý\[_K˜u‡m»õ¸ù7ó ëû*3§Ö\õ,oßɾ'§§ÏÊaB™ê¨2Lל#|WgŒî}Ê¿´ìVÙ–ó>sE¾„âåiîml°ŠleöW– 齊@öÖœ&ÂjêÖ%Ážz–m8ü¾+žŒ½¿Ù«g®¦Söež ÿÒÊ…°ÖÕžVïu;¸©µ¬õ˜ÿ=Û1À=Åeê«iRvÈ›–7øÅ)ü9½n +—kõšv¥á(=ÿ­ZbùÇlSêxÊRsºr ÊÛ©RVJ£ZÓ¤¯‹…7F+ú4_埯™Ì-ä0ØMœ¹UûÊÇs4ú=ž9ŽO2h ¯¤Žý¹²½:J¨od³dt7ëo1_,1ÐVTµÑþ$Ñ*& O7×½i*XÁí®R½¦æà¥ÇÙÇéÛ˜'žhyÖq±ƒoZSÕ†$ÕªYÈŸY)©Žý]Ï\­Ø\ü¡l"}/åtÙpª…<˜XQRŸÿ6‡•u5+½§á>eÒÏɰ¥Ö&/;HZ­ÃÅB¸So†Ã`0Œ€Ú eÈt4ðݼQÐ7Àߢs#¾£ÖD÷Gg#°ꬅ†B‹‘)Hx\Ðóãå˜1Jx/î³*fjŒ³< ÏDN"2p+°+ºwdR4cEV¤.ÒÞSkyÀ~À `azŠþÝX ¿¢CÐÿ¯ /̆²E°„©‡ 4è"ö5>§G°Ø£Øãsó~ö^ƒÿ?ÿÿ—eXÓ‹ûÆ;ŽzìŽc'¶Û7„€ âÔ£˜ˆ"Ý9bÄXw'ÛØÆzƒm°±»ƒŸÝù÷ÿâyû\Ï‹ç¾>Ÿû2*Z oDùbÈA{C»gžé m ܶ*¬1ô{hǶðð]ö/Œ¿‘[‘Úwèü±µñ„lÿŠøŠ•ZÊy •Ì ¶ÐòCäc”³ Û:ëáTü»\~1XZšó:ãÂÔÊÝUXæCÎ.I@0Ò\GÇÍ£œz¯µ5DæOž–w¬à%¡Ÿöu]uuÙNÂ_lú¢õ¹ã‹‹hì‘YÄw$/åEµ*Õ:Õ[U·fµì$o]v &Œ›.¢ÔÖéÕÿ0ØC[]+;s:ÛŒªùê7¦ÔF]ãŸfŠö”•ßÉfjVŒ­VÓ¬ø"*ìg«Ä‘Bâ<Ò3áúï—–>çÃ-M‰a“z¦!É€®W«U€ ¨ c¯”fI hªâ¼âžÊ…ÓrC‹úqpŸ òÒ ÌÊ”ó1kböþ¬%©Sâú#6^D58È ÜB½SÀ7:~W¡¯p)ü ENè.4"g#F`!`Þ"âÁ(æf$Æ ã@:‹¼ †ùèbì¨ÀéAûK0SAš_6À¶ß^€€<pÚo¹?ì›ïÏBÞ†€¨¶þ4ô(mœ‰ä¤êBâ=:•æGåÒRRÈ9Ÿ‹æ–Îgç­ÍëÎ É÷äÄfÈYå“¶'*p¿ÿD,rTwBs¡pT÷ È¦¡þAuƒ/ÀçH6ª –+ÀN$„”_`z6æ0J ßÏC+ ñ`) ]…棎¢Áà»I%c°Dô:¤¹0ƒáðrx‹ø°ØÉV*â9b¸‡¸ƒt ¿"¦@Õ)þÇ‘g@ûïþ@l‚¢r᩽ØBÌWôGT0¬AÿÀ< ì ¬.Yê •„ÙB„*ƒ Á9!ñÚöæ„ôbïEÿY1ô¿MqO–Ä}=ü¿ýsŽEžddŽÂÉ*­Äxú(ævåfþ‘Tlü •ÉØ<1…$®Ï¶n·9¬ZÃ0ÕwihÕòؾ@XÒ–Ñ‘ÍË©Ïn+|‰«Ë«ÏÚU~™vŽȣɾéIJw‰ø_ãqKy†ÿ“ÿJ˜+›T7Rî¡-ª¯ VÜ#ì¢èèAŽL¤%H ¬±œü)¯ –sT›ÔïD'YÙdYõ˜ÊD’YX£Ë1®´NbûßÝйº^ølNWf›¦uhÇ£.Š·ÈõËüP{Cp†‚®ˆÃó?æ./™€o*Ï,‰.‹"hyÜ#R½•â˜Ýü—ƒf‚MÇl*+Ó²Ég{k³8“Z;Ü'”ùßsÃñŸyÛÍFg¨ëpSoó g·±³V'"oÄqW gˆ(²ÍMö_Öõ!‹ÆôgMe­elcÐÙ|N+#Œ ÄÑ œN¯äú$V1C˜Ã¿Ä%0ïW¯(8žº:ë[õrAd]³6¯>ÄP]?`ýÞJé"tMïÞÔpZÛvÙµB¿W¶^ÔËYJ-b䉲;)Ÿ ï¢f † ‰Â?Mþö!j›´Æ$pß÷þÓ*wö›Õ›f‚j‰>^‹a)[¬éÒéŒqú¹ë¹•¹ž÷ž‘†g^©JU”·¾êLnG·V·nvn² \ךÿ×ð—b€?»v´mXûöö]nk³¦ù&·cŽõ_ýlY’x¦²_Ïk8í*j_Ó¹¹í­ó£ó¾­H|‘2§ôme!žÑ„j™nÕKsØ÷YׄVM¬õRÃüº[ÒlÞŒÊCjÉ\R›–rr ¹¯`NñàâUEê¢Ø‚ÈÂùƒòdÝÈRfýLÂ.ؘõ¢Ã¡D4½ÖCå°„a&\ äàۿSøò0`p¾ýiPcЋÐ<´Û†d,‚ÒÁÈðW°®„`HðÁS@â_øölàî ¬Àr Œ÷ëóõAüü ½uõ\é7/ ðÂW‹0<ô[‹†"‡#c€*pŠ=BUÃNCEÁðSÔ{” رAIÁÃÃB×FVìy¬çpì¾²HZ¨"Äg;n‡*ðúʶ¼‰;FŸ¸ž{¿Œ_ÕT^U¼¶D]‡GáÇV÷{(Z5m4¯S°—ɪ"å8’çgŒ(úDÆH¯Ç5¼v¾iF5ï·d(æÈkR¬¡f?Þ?ø–\sÆÅŒõé?“Ï¥ÅdW“vÊýtêÚrÕci]G\ʺ)iÞZw™×U…K¶Q«ðƒ+_W**Gò+ÞS>ð÷(8â¹,/%ŸvY(®ý¥ÓLWdw8û‹OÈrŽþY2Cã2þgÏö4uqÏÑ/ê.Þ;7ºëlë§–G­Ó[Þ8EönóbM/_BÊ©XQ¼²ø¿òôŠÇÔ |`õzz37@äÕ ØW6=-­—[Ê\u*×­¦y®•V­.Åp±QÓ¼£9¬ ,*{’A(9#Xe¯p^vnnhò®Iîñž°1œïì{ü©ŠÍ:évcTÓ©fªy“d(ÛA§Ðÿ¥Ói7éWYç,B £CŒMÌñì¡ÜÍü*i«:VÉ…híäÆJ]ÑÒœ€Œ¡yoHE‚FÉgé)Ñ þ­Ì;ýìÉÓWÎüݳáì°óÓ{':©²á‚¿™©ôœÇ²udwè{ zª›7B2Z9Oßf|§•Õn7.h<ß&èñ6·šl³ôó#ë--ªãR¢8I£è×n²3ZŒÎUêi/FÒ ÿ[œ]Ý]x«l#w\³È£t™cõ~r„hƒ4W{ÛpXÉ­PŽpë òüe1«h)ŽÊbêg:"mÇm°KÖÜê™ÐòOëä–6«é}ç5÷|¡9¸Ê—ÅJÌó\UžõnkýJÑHþEµµ¯a¢u„r¤ô¿9™¹”=šÄ*]\¸¸`YÁÏ"Fq@­ µàiþˆ¼Ù òº3[Iûg‡¿ ޾Žb"·£¼(":õ™ • & Cá9Àœ€«Àr`=| õ°J@ Aw¡ó°w°³éÁ’ ™!Ò æj$ú>pŠ.‡y˜‰àWN¯ .Zhão*‰ÄŽƒû åþKý7DdÁÁ¨ ˜—Á¬+`ìoÚu 7úwù ¨FTûG"Ä¿mõ$¸ ùBƒzhæo®å*8îD>b¼˜>Ìã –@]ÈÂm¢gÇ™šóz¢CÑÐ⿲}ÖÆ¬‰ê çm'ìðˆ>þ_µ’—¦y®E<¾EÐÇÇfs%¬´‘¤Õ5å„ÅÔ|w$mKËä‚ÜÚõkÌÓ¬£œã›ÿv68h¼‚\þRE¤ù²©Lð/ÉQ?"ëÄ©ÐLwU÷½äµñ9‡?‡7‹3šÙU3›6K‘ëLoÛÚú°‰­Û#u3fUµ—Wל¤<¢ä,¦ß¥ñ¸8áfÞJƾšhZ‚ì™ö£v¢q¥^&ŽâWò¼Ü™¼"úÍ€qEà«a>Ðü½CÖ3öÂÅÞS=wÚ§¸}]46XeF·‘a•Ù>îÈ›$U¼ùÜzA ÏŸ±š8„,c/­WÚV»î{â;L]ï;_wÈZ#Ü…nWóùÆCªv~£Dc½é¬qÝtQ!p/9¥sܳܟÝ3¼Ù®Ó²ZöuöxînîuÞq©®Çñ«ÉÑü¥)γ¹Á(»Ï9Å|ÅøHÿB«§â©©™´Z ÝBÒn“mÄXÚ[Á«Z}íkáM2§äeÁ®lD† ó|ú»¤ù9¤Š‡D'¹¾¢»Â!¬kO8§è:×1¸£»uÀù·9M5S\Înâ¥èºSõw Bu,?œ6‹Å’ÌüúGÒ3B‰¨ÑøÁ%m™Ünîðí,²0¤µÑöcö uc¤$vù9í`릳ޕ­s¬•êuEÖDÖuVò//üP)¯³ì·ìQ'Š2h‚š~z´hº|—âN-O'¯Öw)& V1Ý[ewÍJñ[±#Þµ×½ßó©t·Û™0²)âqæ-º‹¬rÊxÊSæ¼ù}s–û‡{…¡rr‡_i/¹I¼w“Jû›ºŠl¬W”_-#?-ˆËÛ“¿,ïgŽ wKzCú†ÔCÇv„îF§¢÷¡¶ü6ÈH(îB!A3R æþfÕMÐ #40 ø ß„–a¢V¡"°/)!øðAlgàˆ`ÑÃ)˜U(Ñïžue¾Â8D$¸ \úC ¨í(3ŒFMEeAÒßœ,E$#š‘zDôȇGoK[ƒ šüƒ‘~ˆ–€e~¯üG#ºž ¦"÷Eð"P¾ƒºà ˆþË1üÀ„ Ü 5¡Ø°í¡w,:°½ä#y:¥’ß®ù¥ÿ!Ù*‹ºhÌÒæ«>;¯»§ƒÚ–æùÞØ¥+lf>´èvºw9(ËRã–=Wnh~í4»ª Äk…ĤvùåkÍ]ë>7¦ÕÞ2ÃÓî°ùÔJEõ‚nŠ?’ÇeÑ( b?á;aUÌH£3(cö²Gˆò9eLÙóìÔ OÚŽ¬Ûùq9ó’.'22Öç?ÎëOweO /2%µ ¼¯Üc9¥4 3XTæ–ÿ¸¦Íµªù—9CÒN¿Jê ôn:×ýÅî¿‚U!ÝVg3Yjå?IL¥Ä¢~`¤Ê ž Û•­Ûžz÷v©=/MIÊ'ÒÝ×ֿޡö ªb7ÞM]ÃuŠ-‚Y$riE¹•7¿L°€Ï`Þd>d‡Ó7Ö”ò–eo)#ÐÚݶ5޹®ÿ– 滆Gµ«¸TÚgúqz.£‚õ“ÙAÿF eKÊl ¦/µÕÒf&ó¹p“¨…_ÌV²\ì<ÚhjTõ¹Š…C*{Š òòŸçjò˜9=YÊœ ¤oÿõn‹ÅþAˆ­ˆ»ˆd`:x 5³¡ PÞï_ŸD‚C¡¥àÿ ëÐj¸’ÁdôD¬ã ,î e…4I1ËÐÃ`p1 ™|&©ð,ؘ œôÛ+S }ðx¬z9Ü Š Äää ÿ5ð'ðš$Aø@Õ®àÐÁðRd²…lö»é÷ÊÏßoŒ¯Û÷²¿  †Áç`<ŒÅ`ч°NÔ› ×¶…!›Ã^l¿½ƒ²“wàgþQé>;ÝX®O·+yÖÛÓÝSiéþ<Ì;H )9ž¹&õfÖí‚®‚D\D)¢ÈîJü|¨7š>r[føŠØô#sS—ã&ÑN³¸#…¯y|­È- ¢NÌU$ßÏì(-­j¦¾!߯Ú]¶V®",% âý­ðè䩼«ôÍôãäÿ1ž;¦÷Vua[춃ꫜÑôG5Òª‘„S¤C‚¡õXóÓzÍ:ÉÁ-Î{j$Ç¢J«;ƧQÂé‡vån] ¹Ã~PA¤·á?–_ _— XÝžÑí©-+Ü2× ÇGÇ„Æ}¶& Þ<Þö¤1¾éçnÛ³öB¯¥ãVçõvË¿µô«]«=þÍ+éö‘-•=ŒÞþÞWçîwŸ9#êúÚZiSȺ…é[ÏjHX¸;'ú¾àÁÚ¾FIc‰%]wG¦”ºålålMˆþ«yxc§ãŽ×\è¹ãæXi*×^ÖÜÕ¢4gU12<ÿ=¡òSáËòÑÔŒZæŸAÅâ3º›^B{_óª(qgËêð„¸ ­h&®¢„Yj*JËßVÝ˯Ðd´û·²û©¤e¼ ŒÖ2n´PR׿x×jm¹RϪX0ÎÒ}åKO\Cf]”¼GþN{Iß`œ¢E‹ö1˜ÿpóE—å‹dÁAºú­=¿5Â{¸3ÚÃÓŸV\çÖˆŸØ7wìí ·ÏÝ'‡W…‘å?~×FßEÂP^3sXÎÁV͇ÕÇ`Ð5Ôí=E·‹Â  Ô¯µ²=­'é/éÇi7+Fs¦áoV>æ‡ÊÆrz™úHâB m@D¦p®1£ßè!ìlžž×ϘMyCCÑ-”5Z||ɾ"v¾O^DÞòœ¯YsÓ¯$MI:÷< ¸&p'ú&¼yŒ†¢QLÈeCÃ@\l>ƒ´ßùË„=ðhx„…ëÐgáÌOÔR´umC¯BÝ„" µÐÿ À`³ÿàLÃñ¨L°’‚ÓÀKàvÔX”/ü¹ ÁølGX‡œˆ¼PÁóÀ  <t5ô ì Pûñåç»9sËÝMÚ­W· lxã[< ŽƒsÐèÿ3‘ª<• ³ïèNÒ¶ ì'ì˜mÿìjˆùkï@îd{Fof|Ž ü<ñÍ8Ïl`èi®â®TLêðTÂIUÒ笔‚»ÅkK§â¯T„TlÁm"ÇòÎ×ض[ZŒ7Äâîâ™…³ùwQ‰Ý›FèÏIo ¸Ôë•S*&à]ôŠr¯ùƒé™à/¦…>lb ‘TÕ>j(®š!¬+b­á¨cUËâÆCâ-¤öòáÄÝÜN5Ó>Ö%i|cÛl¡˜´¦Cš.QíS;ºî­å™ýSCmSfËÌ–çJsBÃ`Ç·Þû½KzÚÒÉi*1Ü3·µôulêüÜÅîºÔµ±çîYu©±F Ë6ò™Üy‚u<ÒÚ\IÒpÜ7ΓZ‘¶CR›(~/J”ú(Ø*—–Q?¹¾¶~…þ‰a‘}f¢™èÜÐ ±TX]bÓiiX`öQÜ¥é cq?ÉJöTq 8…%'“¶3aQ¸ˆ½–z•¤&Ûië™ìÞa~6ÿ'ØÂ8@Ù@ýÆžÐÛ’cÇÖ[-ß#uú=š0ã†ÉîYí^³C)_/\ÆIfEK¹æï}öI†ªºƒêCºwÚbE¥Ï,!.&w³vJ¢jsd'øÎQ™éŽkDÕ©©_V»QTÇ™'ÛÝîè8êìS$rÌôƒ‚ïÒû²á2žx•ð® _ܤlwå9¿‹Æ‹‚déX_ôŒ¾¤æeMõ§XÄUí©m’°%ëåí" ;”²¡èMÙ ^‚ì(‡F¿_SUî.¿U=ƒuй—0@È¥þË$òIü¹«é/ñ˜ên¢š8¡ú!.&»¢ 0¿-×7[šÝ—zþØ—HfØãà7° ™3Pã8rÁ º>¹p ¼=µá·wŽÄš~ÏAô|Ômô Ô*8 #ß Î Àž€:Pe`ŒEïGü¶Ò‡ÈÕHŠDð’ Í$М"R чüøˆ°q„„ý†o±¯{´ÎgóÁõ©6nší?Îß»±dë ßWÜD-C]ús›~ûÂXþ![ò„‚Ó…í¹÷ #ñ8²†ÓÁQ©s•+9sÉ´ò)äÉŒ8|EñǼ¦Ì˜SÒã5éø‚ÜîdΑqÏ‚ïbÎb‰ÛÚµ;|wì ÛÒyz´!D¹72qÇú|Ä‚˜ý‘ìØÙ'ã2ÊþÁÇW‰+¶• |rÃòêsf&ÎOxprVÖ.Üʱ¤šžÌ®ºÍ¸$8¤m1éJ•ù¢¾Ê⼤´H°ÚyÞòk×:ƒÎjURíZe14ŒÔõºïv<±ÿâ†fU ª"—…³¥‹D¯è‹kÞRfŠgX(Ž?ctç¸oj–•W­aà…R%½®Y“X7Q9 Å‹Þ aÁ0Þ:îá]Ý'ã÷ú9Æé¶QÖÓ~=Kûg£ºóó¹1çBº[»µL7¾’Q%ëóMÓ­Óæ;›<v¤zû5º¯Â)Ä•8Úþ}î‹JY¶¶hùû!?N8_Í›øÿ}O}Í`°„š'èÛtKëêÏšsíT›ÙÅÙæ|`1ö°H‘ÌÂ1ŸKdÊh°!E . °²3š™f»ò;?„g\¬.¡åÈi¦Ý†’0f1+ú¥ækGjrAŒoŒõœFþÕº½Î;Ž;òq¬jºHex£Y¬<+[$%Š—I‡)ÊMN¯§mrW³ÒtÕtÅ|U½ƒ“BZÃ1ˆ{Ølzï—à"7GÈ“¾a𪢫•ø[ø§”k<k s¹ ÿ¨â^FýN:RÑUñ¶ÚH[ÀoçMfx«ùåK«#kΆU–å„&ç\JãݼgLDö=”n^þÀ(þ€âáïÀ*°Š« õP ò9ü Ú£Ñj#ú;\‰Ùx ;ó+p.f| ?ú>d‚²Á°Ž"@W€i„§As¡ ÈCðj´ »»ÞÍC®Gþfvp0ZŒŠŸ"ÃÁÈ2Ä|¤Ü¾øóûçø]ÞT¶.}ýMï7NÚ¼aÒï¹/`tA¥¿;æù /ÝGòö¤­)¿ÁX"òSE(lÂqü œp¦œÔS¸9eTbç‘Þ=œðéaí\´crð+Œ “ÀlÌ ô%Lp0<4Š‚¢l¨:Ô|ÌRL¼:î…Oý âа·QŸQHx<r"•–œ»» ¶xîbî†ôДý©qi©üô{éÿæ”%|ÙÇE£+¤ë$6M÷Ù(ÿ“øqÔ\(ÑçüÀí³´y;ö´œj®1åçR±œó§(шñ@­¶f‰/ OöRÃ…R¨¼+Qð„†°]—â ma{, 'ú”eã¶—‘Þ0ŽóvÉÚõÛâÍók×sÚÈ· Á”ϬçÜ4qríMY¿ôœUûÿÿ˜gTSËׯÕ+öÞÅvE½÷Ú±É9gæ$ØEÅŽ`¯¨¨ˆÒ[zBBIH#$@( !…Åz½Ö¿½aÁ^±¼¬÷ìµ×|™=kÍóìß3ßÕ/•#UCô¯Ì>Î!™ùEÍËêúÒq’!Iø[8[¶¡­þetÔî1{¨Þ !ÛÊpæ¬ßLÎâÇNBq9}ó䢙ù¿„ý„ëäÌAå”ZÄ´½úhõÏêË5í¦ÖÚ¯ÆéU¹¥Çõ)¦›·k©{;ÅP3¥À*ŽW-3þtljv{+u…áEÛF‹aÔR¦eu¦y§ù‡‘kI}ÐA-AšeÞ¨q X‚ÿ " \ÃZ±Ø7$ {ƒ]À6ázòˆåZr[pù²%—i¤ø2™”/A6¢ç°ã‡¾'>G¼±PÍÓÆÁÃx ÂÞ‡£VÂ7BÂÄf¡%˜ÜÀLÈ ôâ ü´ÙOÜ‹Ä/íò´¨k¡ßÒBÙ¢åß©_ƒä‹‰;r°\^j ÝÉ:ÇçþäË]zÏ’`û_³¤HXI>Up$7jçÚm!TüQ¶Ìoñ4?…ßC±ß¿3~!KÝ~jÿ[þOüZd ÃH×qœ´L28ö€OQr°|÷Íp¶-Ɔ ƒ°htyHn¸÷î®C¾'FŸò={9Öxôã¾+Ño÷ÕÇ€Øì³sΧ¥fÐj²ßåæK¡r®Ê£të†T^-z¡*ÀCû7i?宨©}¢ 1ow©š—h}ToՋʵ~Ö°ZaY„fžò†T/ß§û§b¦®LI“m•=“꾘:,—Œ÷dûØû2@jLÆsÊî[QT©ŸMï~ÙøÜ¼P99ç4û Gž³LX(^* “ŠÕyׄ:Q€èeÞá×üŠ_*¢"Vô5§çà„0ßÒ+©xÕ—Œë—ºÆIú!rbînÁ×¼Oy9é]‰çzQè\¾Ø«àjŸ*GqT*Vivߨgñ7¯¯ýǼ¼.Ùö—cŸã¦õCMEM²å™mº«ÜÕì ¶«ËÏÈ´’O:ƒu¬{XóßM£š0wg£Ý}Öá)ÏU -0ivë: á5]ææúñÎm CÓg4®tŒ46ê=þ-a-SÚXmÞ-¸½¦ðMÞÁj^:m^–7'ONÔyW» 4ÿ~­œl¬Qeä)¹—ùaÒUz•qŽ~µ|’ 7ç Ó*ˆÑ—YüÊ׊¯Ñ?Swˆ¿•?­¯¸”{9)FÁ§2¥Ž#ÌÏærÂÄréeÿ¢QE­ŠûE„Vܬ»hL+J‘L‰åï >ñY¬mܬ¼J—–+>Ï|–—h ûÊñÒ•Â8š6”9€~˜]‘³€?—U—‘©Èü”JÉ|˜–•lL¥¥ŸOge¢.  ò¬{Y³é‹¨­L7ueBä!Áê:Ò"òL»²á?˜š,‡(‰=s°‹è*,óK1Ø Ÿ‘³HùÁÛàcÒ?¤ÝpÍrÜA-Hƒø_8‘¦Â±fðû ->@‹._ÃIƒñLü;ÊB“¦ q8ñ22 ÇnWp#¼€Õ-ÝZ‡½ âN]Régó»ºÐ4iÉÀÂUBh©œÛÁ•CH¤-ÌÈAQ-g}ó^ëö ¿ ±åˆª]YñŸ£7,[“¹&kMæŠâ`þt"]Dˆøbñ›è2ÑM¨)A9ÈSÔÝ·H!@ X”é(Iªñ[$ © ÿ@7Àðb°ÎÁ¾àc+®ýÞ¹Í?Ê}v/%êçöÿEm‰iŒÅÏ$ÝLMÎà¤S);ØÃøkóÉJM‹KÌ“k' ò¤Ì¸ôðä/<²b²¾j¶ã@Ó˦HÛzÓÛÚßõìÃë…³ž_TPèVÜQòË‚L寵Úpy©àU¶TôFm¨ÐÎh2óWp#2o%ïLifý#Êž,+)kâŠh¹Ylá„Ò^æzçH»´°]æWrÜnhâ9²«³ì`¡XùsÙ6››(õ.).²Jļ»´­¬~ ž.WÊ™žz5ePÆCæLñ+ñ|~k+_ËŸÀ²²zror¶P¸ ]‰mY¹¬ÝŒþÙ#X&úZFæå´ðÃû"7¯xEþ‹t• ƒH+ám¬=†CIðì 4ÐŽòÁU@ƒÃ €1pÖ AJ3áWü ù4ƒÞãa>ŽÌÀ—ãÈÃ,t¶$  Ę€"p"8ŽÂe €x5ý´–X‚D 1ÆÄ&KàšˆŠÐä3ÁÇÿóâùK6,^…ôE’ $ŒAøDüˆµ€çpZ°4tÀêÒèꟸ-)—™¹Ü±Òž•´Ž®DqœŸÈØ@ùï¿gQ„*œ¸îÅjñÊE+¶’º‡ßÄHZÔ "À#ø LÁø=Ü «0*x: ž‡ 0”l0Ä@*~Öw;Í8|<ù.܉§ãsaÜ‹],ïÏ‘W“fâ#É„ÿ-o £…jV‡î|uzUêÊú%ÚUêÍ´iM™;"®Uö¼6³“j\ò-¼WôjÊ«TOæäì?ø“ŠÖÔ6Õ=¨ÿhÝf?Ú°¾)ܳÞé¸cԪɊɲTù·’¥&•mœíl‰¿è3œúOÎE²~oÅ"ýp^LÛz~I|<}¬ð¡ÎU×8¸eqûÇfr=]?[p“r7}tBó™‘ñÓ_ç˜}r¯Óe”×Éâ&' blàç]âôãxsßòò×åLù©/”ÕUôÔýPeˆ”œþÔøsg²Î…%H¿ËKT•¯6Ž©ó·i¬^–ÄZÔrÞ2ßäkÚná[£lB»½ácÓ/w+µM×ö¨¥º9»QÖ`rºUŽÙ¶õÕ¢ÒŽâçúüê Ë>ëuŸÍ³ê~ÛG»úÚÔ蕘K©¥6Ûð½z‚é¦9ÍšXO¶E;¶8/9`ÓÑ–†¶ýmc[û7ýÕü‡ÔN*/Pû«tZ^E/#ËRmò7'ŸÈµùÒ²õ¤šCrwÎ_R‰QëšëaÜ£Z$ú3ggÞiͨpޝ¿ªë*i¯d¸$ždWi©Vø^(S,_P¦VÌÎë'øU@(Y\$Ñ÷­‹hlpÅX³•ùÕšCöÛî}Æ$áZºWvFþOõ™OÞp+÷Š|ˆÚG»°è‡¦·UÍ(Æ+µ÷„èÏOL61~çX„×EB.UH}D£ÅýÅÑ|:Sž’vŠVD“Òµ,/öŒÔ´;gçèJÇ?£_Q¼Ï‚µ°ßèØ:´ÙÃë0_ 7’v‘ ó¡k@ èàS¢/¶žgÀAt¼ß#ÅãJØ‚Gâ¸ÑÈ80}öÁ"Qyˆ GB@*Aç¡ÿ¦_ $ΣpÖ‚ „yÈ¢ é Þ ¼±àÇ"ùâƒÚaxÜ[6§8BiÎO‘y—vT_)›«*‘LP ·>jImâ’›hþ¹*.PŒ®’ÙvÛwצ›sw­£ÜôH~…Û$(*Zw¿f¤üËGºÒ0²>Öíjë>íFÍ-y£†>]z®ºÀIÕ?É›= Ÿ«º«›VrG±F™§Ê*¤/Õæ–—ÄWe›fÔ,)ß¡ŒÍ—³8)Ó¾Ñ.pÈüÑ"²tœ´—„šÇâ߸۲¯0ÒNSPƤN³§^O™‘à³})ø±x2#D{âï06üãñ‰ø° úâM “„âƒIËCÊI`2s±AäøNÇÕ˜ó÷a¾Øi,®ÄÅøDr¾ÿ¶²¾FX?l%ŽÎÆŒD$x݃`h 1ùHÜô•–£6BaeàÂ8$‹·˜=ÿ¾¯)PM¨Å6W¯Ü¾åbtàžAQov¤ížxz-–W(X Ä‹ïëVëÆV)!mãZ§ŸôÚý+lraÙ¸ÀuÄGX°ÛFˆFÀ6ì¶Þ† —áŸ_·†ôp0©†â¾øm0“üê@-È`'1ª±WU MÈZ¬:MÁНÁOúHx~·+±x')„¼…t?ƒza3à~PNá¦ÎÍp8¬„ƒðÕÐrÁ7 K#áVø¿²@<Ü Tèta=zù‚¬G CÑ#˜LoÑBÄEìBë‘UHOEüIìÄGv£ â*BÑa$ûw,º¹0Pƒäa}VN?°‡òû’cg^£Hi±ÙÉy ‚—»Ð%þP°X~[²Iô‹9)éåõî¡»ÊVì#å=î¢[ð pÚ5§8Ÿ‡‡QØ=,ÜÁâP¨Kà²nRž-èoì3:ôÄÝØAlÂ1bEæ£Ç‘ëÈE¤ã‚t ¼„Ÿï¾ñ%áR8Æç’FÓƒU¤ð˜ Üàò/±$”±É}¸Ïi¿¸‡ÇÂέHù;K˜~7} ÕNÙÉzÌÚÇêb ¦gÎdS—Ó­¬[ÙѼÞê\‡(<â|7?)/š_ÏøL»Î8Ï^*x(›mxf%–9„ìÏiÆ´|DóS7¹úIíÝjšüEº>.‘²-/Bó¿Ê‘¶Ì¦¢¶÷­.Ïü¥,WÆX1)«ãJbBO_>vl{îúw«mÓœff}Ïâ¥ÎÎêÍžÁ›.|¤LÔ<–ÕI†JH7ç;$™òwÁêqÒîQV{1{9åIFMÎLÉfÑcÞ`Æ#Êúž`ž€(i“Ýͯ,‡ÓZC[½Û®¶l_ÒØ2Éó·GéùíÚº¥Ý«­OëÌöÅm[+ÚvyHCËÆF›O¥»÷ÀªrS¹õxíŠÒÒ¥’Y%M3ìûÝš³Zﵦ{Î5 u÷w±[†´Z=×XsTÑZå •¼dQÙåÿ«èQ¶_GÑb…qEáº<}âpÞYþ†’ ËXŸÕšµ™þ€q—>“¹‡¾Œš™™±”¾ˆ6Œ:3«–¶‹µÃŒ£X(cmv!sã+c-†‘ÊŸ \j}ÉËÑ‹x}%Ï¥1ÒM²}…Í2“€•ÆI9Îë/¯é*ýU%±L·uݶZ¬¤ªÞÒ+Üé´ÃÉá§¼£+Äу—ó°ÞÁ×6÷9õ }JÚ™ô?Y|~›4Jw½4[ó¢Ä«šb ¯4W}1=¯U»¾´A™ë…HI«”c«fYG™f*Ç #óˆ­‚¯täO”UK6Jo[TØþºÝ§½¬õdëé–ð¦Mîqî¥îˆÆÑMžýîaîõž~MÔÆûMV;Ç6¸öÏu³,¿jùÆK”=Ì6ªöpÙ[}‰Q/wm{ Úî¶}õHÜE;\Mqó¼Æ=Î`3,K-=oH¨yYÁÓßÖiÊ‘òœâ£*±êd‰¥8Fæà_á:rîó¦sù¢ªûúË·† š¦è½+“j¡…k®Õ¯Õ|R=’)…bškË Œùh¶›É¶ƒúˆœÖ a|I–‰_a(ª¿EÖ"½x˜æÏJKPwŸ]­ŒÂM⌜rBN,yT±·ÚU›[ë,_¯¶æ7äT²²2CPåNÝxÅn!%&=,ó}mDæËÔÏÉu™›¨´Œ^,>3?½3.ä¤ÿ[ð~p¡ç  ø+Ø— aÜ/ù¤¾ä?—ëðBs÷;»ð< rÀqðˆ` 6ØàxœwA2øH\¸ðoƒ§Ä¤ õ" NB,ÒUw“¤‚8³#Q¦!&Î üÔB8HŽ ƒj‘…D”ÈÇ'±‰8'Àk©-(•x î~¼muJ«èOU`SóRnÍÎÕIŸj=º%Eåk™i´çµ£"¼WƆa¡Ád9qá4â˱x~¦{Þ†u§Îãà1nîîk˜Ó݇ö;ŠlC4ØE4²Û;*ÁX0KA¿`áFPƒu kA-r݇‚õ`z®;ã&Cœ!øNí¦ÒÍàÜ‚ÓðXÜ&™X–„Å£tl;‚®Cˆ„þ(@ƒÑvâM$ }²1}ÏÛ#–Óï¶Ò‹¹Ïx†ì³Ù^¼v'“Â>AÝ–.Nû–Z—¶#cKúïtræ@ú-v{ó7ãµOÖpÆŒ‰ô„°™ÝI™@kãyå¾âmáO„rQÃ’OeåçýRú*×Õ `½B^ü¥x­&FTÏšÅLb8Ó¶žÉ‹Ü¶ÿk¹s9Ûç…>Ø4àXäyYFmúÀ´N†_î7á¯<ÙæŠ«—}ƒmJý!Ë=óÞš!úÍÅ/˾Y–©Îw­† /––UŒ×yÌrKx¥K)–-êUs¼á½‡ÐÒËClÎukúÝ4×5Ò9ÓÁ´G8 UÎû[{‡3Üñ»þ]ý÷z‹µ£îZ}¬=ÑÑéüÃ]ÕHnàÞÚx¥âØo{P¿Û~¢ÁËere{ε.iþáÞâ–4-níß’ÕpÑì,Ûe˜g½kO¨ï2µ¾l¦ËuËT]Kñ›¿üù­ÒOòÇJ©v­F-×(ªÔO+]7_XÏþ5±']Çl½+é*MPîÉŸÅëâùb©´—jpedõM婜%™l¡rP‰Vaw0×dyS®d­”žj<ÖÄn¼çön³\*žYà'ÿ_Abuµ5½a•£¸îgí£êUê}¼ël/‰NQ=¾*_¯z-–g/H¹•ô$éá¹)™ìTWêXÊ)f_v/Î.Ú²ŒCI»£ìdérªß\"D‰˜oÂKq&ìÂÿ„ÍàX|É¢àåË/“ºàÄn"mp|ŒŽÆEÐŽ÷±Àã±ÁÀ‰XPoâc0¤›AQ„‚ú#Ý™¯©"Ä'ŽGzˇÈl>Û=éZ‰ïâ<à(L˜LÄ‚þ#¬&ʉ}ƒX˦-y¸¤#p,fQ¬½Ÿ<—ß Kiùͼ]¬×ôélŽ(T{©äK^%Ç™8êdëž1;¬+6çz]„„H*…8ì+à%äúö9ˆáq@¯“è.¢½‡=GBÑAè$¬»V‚,}‡eÀQ¸W·þ¬à žØ=ç ˆeØcø«¿±±¤Mø7HéfÖ90Æ€` >0¾í ?8€y°©h!¦ƒK û;¶ƒ!è~4€ØŒ8 ‹ºo}*xö ýºQ›N}I󦿡3?qÚ²÷²}Y=é;jÚdê¿™KÒÇd|ÊìE £ëÞ›ÈùÎ`R¦Q¢hEœÍ¬-™cRî¤]ïvËÔC™¾ôíÌ陼trÚæ Eöay®;ïŠpB6ö-§_~'+aЩ_‰±lŒš|%úY˜-´jƒ“UR0ñ´jå©4lðÁy´Ûݘpîsº…>†µ+·H3¡&¡Þ×gëaí²Ø,6ó·º‹Ž•îó-¤‹ç®noùÏ*­ý£j©ª7˜C+”ø–m5Ûœ¦ãgeÃWT£¾1ÍÑÏr³Æj<`¹e)«½VSb”š˜ûûUü¬˜Y½µúœyµMkulul½Ô"ñ\volØíÜlGêu;lŸ­_ê"É ©Îíï›Þ{:›×·„6Zl¹Ý‰=¯ŠmúDzÇV`¹^k²jF6¶8Úª’8¿Umš6cO§À²JeUØ+þÿÿ—uTTéÿÇ]ýª««®Ø‰ºö"9qï}êÎ ©‚b€­(*"ÝC×tw×ÀCˆÝ‰½®«®k÷o~çþsϹ÷<çs>çyÇ«ªe–&ºãJó´üùùs›tŒi7iyÑ Ï«¥·ÊGf¿‘•^O/P¾)_ß];Láoç)ÉR…*ÎKÿŽÖJ/”?¬Õ­U÷,éµm¿\¼£À>ïYîöÌß³†·d·}¨«ˆ*Ï©=£èk"óRþQ~+ú½hwIPÞa©~Ô§À„ÓZOG_¯@û ©aùâ¿#Ç,†X†Ý;4Öê%nÁ;ÐSA1K“T,#ØD4¯åÔ$øS8ŸÌF&¤í'q6)&n8–½Åþ)=šFÌf¸Ç¯‚¹ Ÿ>Í¢÷ñï~»Ô*ýb|¸ßݣ½wœNnüls]€Î‰hÙ áQþ‰ÜpšG¢gº‰¦ S¬fÆA&ƒ™ÄtÑŽ`ÓËüÍ@S?ñxA#¾…V!Wòo@¶˜O\WpšŠ¢ÑtöžG.’TÒKxص£d,ÃÖø 4Eþ87 2Ü‘m‚ñÈSPΖ±/I¦n¶„à»è4Z«ñvô#|FF’© pÏ0çOGN^9Uç6ïh«çœ æJñ’±’¦¨Ñ’’½Ñ>â§bg‰(rbä/âñâ}QÏçüã}ħ* 1p} ½xt\R´k¼a|F¸‰oó{Ÿ,}¿ë͇¼—J\ü÷:OpÛgîƒÄ—ÎÜØ}Ø6] Î:ðÖÙvót›ÃßeÛð>)3~KøöMܳ‹ì®j½¦_Ô›º§õVi+ºïôÄ÷vj…ÚïÚaý™ÔíWr%/Oº®h®¾Òæ«ÑÓ$µ/lÖ\Ôæ¡ökïj«h=×XïZYõGáo9{s’òžælU.PìÌî*Ì/ðUÝKL5ψÊz˜‹+gV¹U/jèVûv—uOS—6{5L¬•UyU9W—­.•T<«ö¨¿Û´V] ¹ØkÖ£^Õ+{ò|S\S¦Võ6¨x#šr"9Qö3{i WÝЉëRò~‚¢ûy|¥sv{IKÁ9ù}yz©¦ýuÏÕî%jaSiYaZpÖúìeù®™£³ô‹¬Jn—v•ø6äü©:˜>ê̾À°˜ÝÊÛ…þsäE’ïØÿpð†ðgÃo…ƒðŒð#¡1¾gÜ»<>Û]™!!CçÉ «O:ðOr†lÐݯ{ô"xϘ—Ì94š &‚£ì]âJ:q«ÈP´L E!ä!ºãáÐÅ´wèià N§·Œ!¸kÀ'æ)=‘?ú1Ëìeæ2O‡™¯ƒw|ÀÎÁC™£7œn¥I—YŒyÿ1“É0x¥ q—ÙáÊ€Ò¨‰k“*ÒöÊ·gN’EÇ;„÷~xxÌ®ëîX4’nÌCëà hú¡c8ˆdCv N ÉhnCÏñ|\§¨SÐî…‚›ô¦’~Gχ!ôž½ËR¼¾Îb– LüËî¶ŠÝ<V“Odž‹cÿ"¾x߯Ïð9t2¨F N´!Ü„ j<…è“`<ˆZ0O@3¶ŠüG,ÙUì2ö6Ê@þ( ù!‰n†ÙÔ$n?ÿ"8Ž¡Å%ËtëiVEï,õ×Ov¸¶Gp8Î[œ±K<=æR\šdfD|Xyð›ñ¡³ÃÌ”¡ÚˆÆà×~e¾ö¾[Ã$mq÷$WãUqæ¾Ñ;åël)Û©vÍM 7~w2Ú”i©¥9¨Ûjó–N§ õ+-½@>WL­°$@}ú=¹~xdâJåwY:«è+å4guÆvíäÁ‚Á–Á¶ ðÒÉ ƒsû{{_h\›z*‡TÚ¤éI¦ÙöM—»ÌzË{]{Wöìéø«ùQ ·Ü³X/wœ|KÆÛ qöIqú§Ô’Û“ô’GJÍÓ¾$JÄ©þÎÞ[cÄÒ˜_3¬ä U9Oòõ*ìêG×.®´.´W *¼7噲¨t™¬H‘™Ý“}&CÕ‹žß»N·­«¶)ìË))¬¨-»U´²àZñÛ’õeUþ[>³ÐFî›ñL‘\þ¨vucv[‡FT{9«Sš5$eãWF}ËâºR¹É{R ³Ê_²› f7¬Õ k£úœ\˜p49%—ßÔ=ÔÞWµ¢È¯1¼i_íŽBXº«UÞìQœ“-É•´ŽëÉïØÜ4¢:':(°0¶-C“—Ròké_…s|•Yò¯²ù3¤?bºýÜOyn ™”>YÁ— ¥ÿ‘ú<ú†ÿƒ€…7#`Ì1É#ñ½`nзÓ=ÎNz›¼„ûà,x"ÇZÖÝͱÃÉüO@•Œ¹` ¢A#ز‹,æ[ŒeŸ±ÓI"Yl±KÁ5˜ƒ¡BPÉD«|Cz³œ¥ÄÌEJŸva|†² „nôïôyæ:SN¯` ;æ=£ 3?)SN¹òÃùÏÍ_š'˜~5¾kÞÊ ¥×Ò90‰mLl 슲Ÿé rËì—çg­ˆâ_‚ïŸÎ<µê oÝ5Ü@o¡œé·Ôj¬Sƒî"SŸ4Ã,ŠOᱸ~BrlFŒð~”yØŸBkˆ%ÒCu`+†¨’8G¢-U¢å¢'‚&A•%ëäh›%xƒCñzÁkÎè4W†–gòÛ´Ô=1x}ƒ'°;nF·°„|'!ä Cð ‰:Š  GØd6е%𠚨KÒP<Èy'9ƒæ¼#ŒÓBï¦Pöt “LûƒláGË1NïLßáä2Ÿ£ug Nu_ã9à¾ñôï¥>×BO„Þ ¼¨-Ô‹’Ô‰_ÿåV²cqˆ\Çw…g­6”mx Z¨çœÓmÆÄ$‘‰þŽ£eL 4$ËXT†f‘<Ùîãéê„§9­µÏÛR:©µ^§WwVÿáAé ý9Ñê•ÁÔ¾VÍÞöÎÆ#e«òæd÷ˆÝšUPßÝù³³£cyWBÏÜî“­s*k”7S\‹’þÛ••"&,L©NЋÓOX–¸!îgÔÍÀ6wO·>Ïí¡QÑÆ•ò¤/RY©6ùVê˜Ì7™Šô É…"nˆ’KvF[ľˆïKvN“*¹%†}:OÕÝ(¸’Íä¸Ìß©z™e'›½;ÿHÞEÕùý,MV^η¢Âê¾æ?š’7¶\­ýšÿMµPÁ“†$H$y±KR­dïR»R d*\•ÝVÓÚõ¥f¶r}йlRÎÑ*WmG×IJ%’ý¢|]~ 6¶zC홦üúOù‹ä[N :.vZw½j¨ŒlòÏŽ7L“¿¿þVÃô’‘ŠlÙ›”ÏI0ùj\KTWh`ðž`¿Ô›y.yiiwãGdžúNjߑèŸ& «d¼ÎîY`¿}FR¨2æ&€®'žÈ—Hð4]…;Ð’"ˆ!sH)jÂSØŸ¢ZžhP§½±ä5{§€Iè!ÔBsô¸Â¦”ò§“™µL4˜DýNý¤vÓ&p1r‚åà0²cöR^T4Äì Vqt+5šÁ¬/˜DZÁ[ÅY¹êšñcÖ\e&7w§ì(c0€ÿpé‰ÉÎvOwÈš_ä]`œ{X¡Jáøxœì:rÙùǶÁú?N2]M÷Ò±h¬†ûдF£ 5,ÃP(2ðükPX¦kxûÉejƒñx:$°×áƒäðŽ­§}µ•š…¦á"f5,aG²A¸ÍÅýd.+ UÄTÐKÜÈ3„Qú¨SÜ}üîÐ}›Læ³–ä*ñ剜D´p–ÅLË¿­“-œÙq¸‰p*vb°”6gеÀ <ÖÍ> ¦îQ+)>¦G3 ª‡ó‘Æl ¨À2ó„íª]ü};CwyïÝ7íèð3ÎBß°ÀÝâÝñ¼s1<.ðÚ)Æa;WwÒ!\'¸cYgÓoS"LáÝ6»dÂYÃàì¢><‰kÐ 0‚ 6eû‰«/r¶XÆ9>v¿jSOwk´QíYµÏj&·šv‹û…›ûŸõ—÷qzª:·«ÓZÕß®J/ž™šVn,ý£´ªâ~q] §~L繞Wí+;äO£c£ŽÊ^fEGøîñ„¬Z5?êÏè€èáâÁ '¯¦GO_‰èIzŸÞ™=-Ÿ£hÈðNyïïg$‰‹PçzyÔxôŸÞëÛ˜:1|³øeB_NrUWÿí«qùº¼êœ‘Ù?UÍY™²Š´|ûªñ1ÙEr:]›õ=;"랢¸âc«~Û¹†žÊŸeç+~VýUcTPp@6\zRyS5\¶-#B¹½<²AÒ:±Íµæ©Ê-kiîÄÒ”zKº³`‰|LêÌØh™¢:®)¯Î¥òcEQ©T5'íB.°¬7hñjHÍØž²Y\2ªiKÍ„œ…Y³¾§/MqŒ›{"Ö[âÐ’D~ÎÜ¿'BèÿW`^F¼#ñf²M 7ø®O€{øÁyû¢×ÕYÜa•¨ƒi{ /úC8FןlÑCd×Àqôz’Í=K]dl™GŒ þ‡ƒE÷Dz|½/ººÁ×_Qø­ã¯nÏöµ×*ÓšïhŽköN骵îÒxwÎïÌR_hÃêÛM¹ùcÓê“2eÇU¡Y§Ò7ÉÍŠ‡êÊÛ̇ÚgáØÓa‹’'eEENrÿ~òÆ)»3µ¡®QaÑ£ãÚ¢KÅa{#ÔqËÓ¯+^å\+ò- /ÿ½lò|j|ⵘ#~„Z—øýϧÆkÀÓÉ[ä73ôŠxbÔåDQÁœº–Þá÷Ú¾5ž._˜sL^"ߪzP°±Â¥YÖ¡×>ªa[ͤê[ըƦ|Jy@mR»gÏä®Ýj³ö7-3Ú?tg¤w,þ!—U[\ ú‘'3È(+kºÝ"­ÿR¶¦ˆªàÖˆjj" ¬3˜—¸àh’»¨Ù¡óCã» ~éˆò;ÙOÆég–Èg|HZ—(JNQÔÛUÚ—}“‹3&©¾(?ÉOdìŠþEü.Nç$>ÝÚÞáóÖ¯<°(¼,d_¤,Æ'Ì:HÏ{†SÞzé.“\ÔK.‚á Öƒ-¨.Ò1ÊS°ÏÓ¹·\# p/I&›<œ‡wá¿É0¶—¤‘jdBŠñXz*H‚B4ÈH¹+)5]ÀÌbÒÀT”÷\Îæ5Å¡tgZµðWðš²`,˜+Ôt:\ÁÌoÌE~9o6÷.÷翵'Óר?Ycmt”·ÖôºÉ,Î ^t;ˆUâ+âãg}Î…\vßë`h«Ïv’;d é‡ÿc Lès˜…H o¡Q8BÆ$DGZ£¡ â3#áj ®[èže±×RbqK'<.ôN… ÿÄO¨:0„Æ“ÝܧáfL„<âDÜW’z "2FúìZö5[.áEëëãÖ m\¬2,oàÏT“¹Æô g7…{ÓÎ[ÀÓãþÊ=Ìá~3˜÷pr8î_ÎþÓæ‘ñì~Û'‰ÅyÁZÁo–‘–ã/‘¦ÂÎÏíT;éXÑÓ¯ÐzjÇjëYÔ•ØeØýU³»³Zý¨3\3Q}¯AY¾ªÈ.ç›|LV“2&wW®®ãõ*ž§ÇSáSBg‡ª|y]ói ¬ú=/“¥Éþœ’½1§)RID™W©o±°ôCYrUpýåæYI•’%bEh|`FÐþ@çÓ]îÆÞ«ƒîGÚÆÝH`ÒmÊ,Zgh¼Ôú-]õ.U~¹úYB¥Mi_õ÷ªŒÚ¨†a ¸âli_mUûÍ–˜ÚÍA_{ÌÎNÔœ5˜Òû£›ÓµZûDÓ\1=­=Í5gƒêgŠGÒ)Y{ÁÕFŸ~GgÝ—’ß+N•äÞU$¦ŠcS£D/aNnVk¶Ö¬ëlkIEKÉáœøÔÂÔWÊ¥JY‚wd~‚¡RR^[˜[•6,ö~r_)¿"2ï¯,iN¬:Ù<Ý+ne ÏWéõÝíóÉá±’11 Q½Q'# Bm½_X­'9®sª¼Fã™L´ š‚ú„޼ZÁiü+Ñaò} Ë…Z2ýFjYc¼‹¬#óa:Ø í°xÀð bVR„þÌäÒ¨rj Þퟙs`"øÉD3—™q(Œ¦ºÔ¹f3ŽÔ~ ¤ns†sîýc¶É™í0ë3Úh¶Ôè½ÙS³×æ.ÜdsûµqFÎk®®¹NU/Y°œmÓfYe9ͺU°½¡X~ןçD_åÕÑ#˜¯ ä1cˆÃ‘|‚|Ùèrn%–bœ¢ÁºìyáIË3Y–¿Y¾ê‰ÚeÂ~v` rdru|&C¦€ßa à0+ЀŽx^â_É^ò­‚¯@*ŒÓ ~„‡ÀpضA'´}Au:: GìÁ:a£àëÆjÈ:d‡ïáI#>.~>R}d›­vË«xœŽç‘´}Ç,:Œ÷¥ºÆÊxì n$DwÈ86yèY?ÃpTp6jAw Ñ]¬ÛZÎ\áûQþ¼ î#îIÞiîïü-ü ^-w1ç)·ÚIÙò¶ropÇqGq¹úº‘g>ÚÜÃü6GÁsâ¾âÝÄß­ç¯d}ÍN²éog›{Ö”]躕.s’fV64Û´èu‚¾åƒlëY¥ÉÓhºÜºÏõ„÷þèÙ®±UÿO½Z Ú›ZÖ?­zU±¾rzeh)/—‘ÿžå"¯—-–ÞK¬‹úvI2“ºÓçÉíäåÙë«—¶5u–u²cÛ-š ÚzÿÚ/UfÕTXUZ×5T_RY¥Œ“Ä„ÝôkóQiüþsÛ~ü‰ç—@Zls6ö×Ô–Â5m“Z–Ö߬Yõº`§â„"¿àb-Óö©>®rkéæBÕbeoùÚ®Dµcóõij»ÎÂ?ÎfîœÙÿ¨k¨åE]zq \ó>~y†oÆ¢H6|@¶¼òxë„î¿»?¶¨8÷6£,52Å[Ú”6U¶5M##UíSφ ê¾ÚèY4*3%qš¢TV JÒDÏŽ×dϬ›V9”¾Z¢öNVU·W.Pý&Ÿ+û"Í•~LNL0/ ÷ýé| b­““ô£ƒÃç{Nu‰µü(Zg½Ùò¬à«…2Øf èFGÒ~`/ºGž°+·ÙuÂåÂAv‘cÝ@‚NàSØbxÖ¢?i%s˜Vyô>0J—dãáq´FB[]R|¥Óa: .‚;Ìú%ó•ég¸àÂPü¹&æ&_Œ†Œç™çqB8*“!sÀUpnÓ×™ÇôLj7åÌ[m*2e\»ú£!EÕŠ®e_ ý©þó¸A¸Á'Ãĵ#Ì/qŽR­´>3¬nÀB—®,AО€å(éáLd‡^`OÂ!ö"7á3‘Ör–ÕQ«P«d‹,ÖXøŠ58ë·ƒ­ÀöÌl¼ 'Á6æs ˜ëê&$e?±nä!̇§P!º€Žâ0~gæ"3LÐ[`ÆŒA?á$T¦ë«°¹@_è)XÌî$©ìâ…¯Ob(…ž ~|^dr0ÃuÐ& ; A¼‰ ®:äà$´)àÿ§×'r‚øc^ÃŽN9ˆrÑ!Æ"ptÀ—(ŒcStBâÙ¤ G‚7ôW*’Žàoà#ŽÀÜœ{ž÷œoÈëà "™Ï:gp@¥Œ=½4Ò÷(GÞ9Ž·Æ\lÞÉÕç Pk- ãŒ=õŽ.ösl&Y=·î¶ßrÀq–x®T¯©»^Ù6§oäùƒÍ½ÎUÇP§´+E;®÷éÉìÜÚ>²­ºyJóã†ðÚus[jš¾VZÚæ¶åæe7˵ißãb"^ÄKrÆ×Þh²n´íÑðz½& N9û¢ß¸o~·¯&¨ÓPmÜÞ×ÒÕ`\7¹¡¤†U­M®Š˜â¿ÌãŠ7 xÌýÁñj·§×¡ðòÐòˆy©rAóžºe•ÿæGÈûÒ9²B¥_éëÜÙdд°éKýø† ­toe߱ޱêÈ.-èUk•=÷´I7º4õÇ«fæø¤ £§HjG$}ˆò/Íw-T+4.á½Ámm¹i‹RUŠ ª#u~uÿ+8¨|ŸãÑp´wå94¨êV”Èv',Nz¯:X”§œ"Ý‘²O)QiUØ|ÿ#±õ¹ÇНäPŠW™s3âÒ[RÿMµLHïþa-Hø-ñRšwz]že®Ì®´œ-JÑD(Ø"ØNnÃsøoħ§PÞÌkXÌî6 ãÙô Æ 1¸Œ<À£Ð50uÂMpÖÂ6p ®cøæw™O ãiºFuñDÀh¬ƒ:=ª˜ó þ^0·Àh ¦÷Ñ›iê*ÇÚÌϸÕxÉ­5ÛL‹Ì˜8šª¸<úý‚˜ T¤ æôVþwîw‘)×èéš1FÊU}«F­>ºfõêȵM¾p’xYü;Ì6¦QÓ«ÁO°ÐÈ•¢³ |¤öë¨î>4Ò%T©`¦àà–°XpC°Z¸Äb²Å ‹ÿY|þ%žñ*2V"UØ6–tÐ~ìYÙ;§?hàÖÙ}ƒË=Êû¶öÅ÷åõ]íSi¯j:Õs:†µ KÓ_EÍ Ìð{æës9ÀÁ}¶{™O]xNXÞ™#Þ’PIÒʺã5Ñyá™O2öÉöe~Wì­ü¯yvç%ÍÒnÓîrWÏõ³’s«´ÔÞu÷ö©5¿VwT—V‡oQÝ’:ÄM‘ŽLiH9 ùjß‘;ª)Qó¤g{[Bu€Ê#s\áßm3zèîÛ†ŠÊ4÷ Qåë.#meç¹Ú›¹NJÇÌ;2Ó¢¤ÚèâÿË8˜:GZ—ø^, /• öä-V²ò÷é†éÒYRk™uFqBI|JŠ_Ï’°ç…¥ÆÉSž§D)¿ª"jö×dW$—W—})QϪ‚µ2íÝ׆õ\]v͉ê)Õ¾ê^Å„š?Ú_ ÚLMcÅ‚ Ç¢eY3³¤í<¼Y¶ ÀZûRßÑÔË|¾%§Õþ\à¹ÂÖæ:ÓÀæS†YÖºõÜŸ–7ÍŒ3UùåîLú³.¦ ϵÊ<“p"Xì¿&ôID¿0ÏÀêÓS£ªât¥}T½Óû%$ä$?Hß›½µ€”»×¯ÑލñÖô¬ë§ÝXÇ×Ûjí´Sëî7ä7>6luɯŒéée“- ûTqšDI—Ò€|¼2'«SÅÃÚÀ&sCiAc*NÞ%Ÿ^PÑPn8Uõ-5H60bc\|Á¡º=õq…UICäö© ë¬ÊXi¡}Zy;m[òÔÄ-ɇã›Ã»ó!þIGrr²ß¦­‘ø¿eýe'â<›û$•%-IÞ¹8hRøýÈÌ„ühÙ¡]+#Öj¶,^ò’« màšápWp:‘h¨„Õ䯤?É:Þu¤®|GâFd¸‡“IÄåþGv» ­F«áe€q{ÚqUh¾,„¾P…Þí¢®Ì{vdNЧÎéP5Ýv˜= 9Lž2§—ãgÑ q!kŸ‚p/¬fƒ¾ìQGöø"ÆöeÀ4æ[Åaú1Ó@%Îú3uânâLæ"»(™z gW²ÃÀ~®?ja.Û>Aîà/îTÂ9wªsº#µ“¬wš%‘ò±ü-Én©ó¼¾N%ƒùãÜNú†Îä–rkÑ-°}F>P3Y?ö.˜Ö=¨„í±tA×`_êMÑ܉†£`üþŸ²o€3lFVH/|g vA§Qšˆ ;¾ýÄ=Gƒ%“øo4œëÎ?Å%Èžtá$S¤ œê¸Ø€‡s?H:žIŽâDt¡íìyüf^‹³½´™ÊÉEÌ¡-“_=á\|ˆ¬¥¼ˆ?Ï=¡·È]2Š.¤qx!¾‹KpîI>ã%¸¡©t>‰Æ½1!¹¸]Ç×ÑmA“)Â|´8 OʺÒKºÑ6)/£Ú¢Ë”Öõ¯.»øÝàW843Uþ,yAö„Ô€ènaýƒãcƒ2§gÆÈ$\šl‘—­¸ŸššÙ>óµÜ%¢Wè¶ Û!WBß^»v˜“vm§ùqПyKnÐ!Dʉ9-ñ'Œ»À!t —Lö‘&²”\ã;òNÜì…[I9&mà#ñkzùƒ«Â>¾Àïá Ô·‚éÜP”L$ÄŒ6°x„ýaoqkÍür¬ia§˜&µæ‡Ù…Ž÷ÄÙŽ3E ŽÖL¼…ú‚j쀮 h Èb&;æ cÁº³¯Å6Ìð“1±ÓmÛ°¯˜(pŒö&aÛ*Ò0ûÙL=k)V‹¬Ä«q¡ 1û’ýÍŽB;JºMºA;·IúÒ)_r†?,Ý/ìé;~ŒÔVj)±•.áw~ ×ÂãÇH¬ùÇ`)šŽ›åðì0æ#Wø.ÄïHŽ`Ñia‡-Ñ ¸¿FQ4 ÏÇ+ ìŸá*䎬ñyhÒÀ8VÊÌ…÷ذºá©ø¾@ŽÊYr ÚŽt&>ä‰#:’G­qºVb Ú“\%_ðŽ:GäÇ>8’f’é争®’ñä*ü'ý¹B,èPZBNãŸB>¾Cä¾0©3ÜDšE,iH¯á—‚v¿b%ùL#ˆ ÆMW¢.DWáR2‘î@ ޲›…LèAKœ¸ucv>\³H¿ÐuqðÒh÷¤í—¼ëO¦M:™tpâÑAþ×"÷å¶«ý[w«æ{å µ}ÖÃäè$¹²-õiÚÀœ "Çò²ÊiUÎ埋D…aª±yK3z%.VŸø78/Þ"«1§oÁòšÇM׌ëšÝLwL3LûMiFÎøÌpß0Ûø—éq‹¾JwLëU×»nC½—öŸ†7ú8S޾¥ršòs„!teüäÌÉùËódéKÿË<˜•½¬°¬¨¾Ä·&X»J7DXRU9J³¾Ö.û|’¯Âœn¬õjj4ýUCnéÅó˜Ì°¨°É§ÙàŠ0—Ä•XÛÍpF{µô|iDí–&§  UT’¡(LÚœü9Ó½4C}° 2“f-N™“Ú«¤g5¨JV»¦/Mz‘öÓÔø°ÛuÓu™j_êøÈhØ)òö U¤³Ÿ2hTÜFE’BÙçÄ—ƒ¶§b•ygòÌYÛSlcdž­ 4ÖY†þ ì´5Ç¥Ïïy¶xýHîqV¤š–Kxú<‹„iæóïDº“& ˆ”ß q¤×ÀtÂQÎji‚Ë5²—qÐ}Ô=ÂÙø;1ÁVñqö«‚¸Ç¨7~.ÃçPW ¬¯Èc¦ÓŒÚ™ïf{‰­E ™:ÇÙ¢Vq³hcÛ $GÜ!dåCh…–B#SÂXAðÛÙoÌH e±ëØN`\/h˜‚lÌ’Žx"º(òfÿ8ìU‰:Š]EDı~¢zf²h.›ÃÌ„ÃámúÛO~p¼T"]ßã*ø¯ô2mâ‡8µHÇKgHùwx‘Ä]#©‘¼žûSº˜¾B:< ÔžƒÊ~£Ó“WHGâ@ìC;Ó•øa^ð Æ¡Qø)Š€Að\Šæáoð-h‚Cwf>œÁR”H¦Ñ«‚-ÁI.é"$ÐoôuÃ7@W´ËP\ G OlɈ ßF=±ùŠ­ýž$'Èfá“Ç@¼ñ74O&•ä>w‡óäþ¡1‹ÿ sh lÆ=_#ÑI:sy¸„Ì"ýæEˆ!Ad‘à—×ð{2Ž:áž8ÝÂf\† BZNÂ'áYàÁ>µcº°.âç(ˆÅÍG­bÌ„á@‰«³×â#Wí]ºî\Ý­šMutöº–R›4Q˜¨>²ŠTçüµâÒ{µövåû”y¶òdFG•¢¨]¦9ýdõ‘ ãîìjѨBâ—´¤ÿ’}M”àç÷ë”WÄØ¨aOØlç#={)%%wdnTæÇ¸vaÇ3åé'ýßí/^>F:[2{ƒ¶ û°Š¼&¹RâK›I"Š&³ùýô8Ù†r…Žp?¢³¸q¤º¡F'8µX:|n:–³ð#Ûc' èLzÂGâæ<ÛEdC@-ü„{¢s0ŒícÞ;*gÝ2"qúœgŽ‹D¹b²ìlf,’ñöt'¼†·±¥ÀÕ/v-›‡âá`t¿B'„.È@ ^*à=tGƒ„\ý|ðg`ov9¨`g)Aè6;ßa»±>h›öááx#)â^IFJ>òÛø-ürú’>å¯ñ¤Í’ëÜa´ÛÄuçîÒá|–d†$îç–„ ð9ØŒ*ùtÞ•{Ï›x#µÄ Àr|Ÿ¨i2Z“l¡•öƒ8TÈ»ÿpô|Ip46âDüU!ŒF¡6@a>FV ƒðHƒ“ðò/èÎDbè fAGv‚‚a°¤ÃWñ\D—Ñ 4’.àrÃèR-ÏãYäNÁÇqù@_ð;øRÚ7à H wðânJ‘ć Ú Aà~x‹ÚJ\¸HÁ/wbš/4ÅGx¶Å]Ð 48H~JBét¬2ñWFÀk¶´ƒÛ˜ŸìRþ†“Ó\ïyQÎ „®æ¥mWz|Âôä^… µýÕ¿sšÏÌ=ë? ´RdúrMTÌiëÓ ‚£O<ôîçÓÏBxß„•©Ö™k““£û¯ H=Uí׿›y,oÓ7~£0…`"ÂÝ©JÄíÉh:X´X ôb O™%`„¸…1Aî‡Y&‚ `±gD‘©ÐM°œ‚Ÿ™£ K ºxñ¿ŒÙcŽ;zŠî;^g\aȆâ{l‘( b·‹ÿôçÂhÄ}Ù—À ‚jÁ’„þc›€™‚&ð”‚zÔ‚„ûˆ—.à¿P?: !Ê ‘Ž¿ 44̓mÐ좉ðR *í‡ìQî…·`[êHý„/£!Àž¶òïÆ'rJΞ»JÝI¹MžsùEB¢OàÔ’5\*îE3¹£œŽFS¡¯EÁ8!UesNüþéK³ÉF,„þâBøNFÆc))`ãOTØ÷ŇQ¸ 7 þTŒàg¸A|Ið¡Ox.þS@O +ðyÒ† ªXq;êƒÞÁ*á)ÈÁ5A{5°σf+jñMCfÓeœ_DÚp#ɧ4²4W±SÐ:j/iϧA»è$;“u´ƒ$‘/è3 'àH{¢±‚@Úøâ¸þün !}húUh“¤~NÝ%„¦J¡ðVøG£ñ êÌ”L™;{á¥E9Ηç%;?p¹Æ÷ŸÞû¢^>¶/(6¶M)Í×”N,»S°4Mšº=7®ä}v‚rƒ¢6£éñ2‡ò‘•¯ª¶j$Õ¥¹–oJÒÐjìÐXߘ¤ ­o¨±Õ|¯×4]0Z˜æþæVã^}¹î¼v¿®Aïm¼n¾Õ’eþÏ´©qc-®–T_®•k{hΖX4åü—Î)¬®y{ŠòªU%žª°‚Øh^ë‚¿—í[¾ÒuÛ¿lÁ‚ó:Îkç>rû¦m­=¶ÚýÓùhF ìÌ Ùˆ¤á9Mqu{ C›èFÕ,©)¬¿W›XYQ1°ŠÓô®Ô8ÖD5ÌÔ+÷L¿Œ+Lަ·qÓÉuÃ¥F{ýÃéæ­-™Ío ‰M‹tÊÆtýÓ‹æstkA«SóÍ͌ʓå*Ý«ƒ**JÜŠ{©+Š¿g´O}åw¡„Tm¬üPœ’»+C,OŒß“<,)(rUø”¸~ò4Y^LŸäŸ9]³ƒ“ÚË“óËÕ3L‰žÑkc ”±¬Æ¥êGù„|¼LyLÝXû±Úµv„ v×ZïŠîe‹³Ú'ØD¾ˆ£°S¯×X_ë_X™S¼±òGÕŠ:m —±,ahô}ÿ Û£T²‰gÝNn9–¦|¬Æ©‰QE1±òÚ¤åñÃ"Ë}m÷{½ y›ü¤x|UL¶!:$ÐíÔÁ þ¯} }*¶§Í?KŠ„aGìøY\oÚ‡Ø!3î@wÃ;8¿$VhíÈÁÓ‘+XK€ÆîcÇ ûg ®‚¯´šô‡ÈrqÚÇ\bzŠv9 ôÓ„ü@BBw†a#0°‰°=žISø%´¹Še¸;ì×Òœ #멚ôä”$}bPÃxng;¯³çÈÅðc¤"1ô"ùŒÇSk¼ŽGßà1ŽÉü7‹î0íX° †àzt Ü@1ä!:•¾`t …8Chn•ä<É"¨"!ä#Þ `œýªF}Ñx4 æ¢ ôT!;Ú“þ„ýPêŠäÐ £^ø>z^ÀíÂ;ˆÑ$”,´Ë.Ø„-øßÜ,Λ<Æ*LŽñ[$‡¹½‚¾67²˜ˆ‡…¨m¡38®MðMðÜ-üò9ôDoñUÚ!qâ‡I<¥Ïø8ÈG¾Ž£u‚ݦ¯$&>ÌéךÇÿXzÁ=í¸ë‘à±ÉÝvá‹…p½‹—â@˜·Ü»~ß:ïbŸ„ÃÒcþMñºò¡úRÓ=ÓjS±1ÊèeHÑM¬[ZÓ£vzÝ–ªmªWªÕîºN†0cµq¾ù´9¯9ÆôN¯kÜßô[9æÉ纶¤#õlÓ]C”¹Â¼ÑܵÅý\ò9óͦmµªoVZVX©%ES F”†¨iQLz¬¢‹ÂOÿ½qd­·J“ªˆK8Û+Bëš¼*ÉQf?.-*»¦¸]u°v_mE¶6¥¢àcѨôùÉ% }•]K²u[š}LÉÆ(MšÉ™ôN¹öùË~ÖÌÑNÒ½)zJš-;%7<-_VuY-Êí’>1£´ÆÔü»YgÎ0KŽ&m‰nôï~bdPñé„cö¯œV+:ʇ‡÷ ?+;»õŒuÐßà¡ïeców”×oL( M XåwýT”¿ôdݦÓK5’ß@ þöÐÝÉšs$çñBä)äƒú+‘§åZø?­‘'HÍ:c/¶üt—ÈŽ³F°@PFG8ƒq‚:q—9öªãQæž°™9ÌÖNPá.Æ×ÑDΞ R0«Ø³LO¼ˆ­‡gľð7ô`”ì-ö!3•U²ìBà!zNƒuìHh'î!¼ Gm‚Û22ˆX ýh-¾NJÈtDh2íƒgüôM`J Ûˆ³é¸ &wפñ„‹¡þ…yô"­8žÜ ´’ÚñEœ÷GÈ#m£2<_´j£Ón.ú¡.t,gYü Ýò4ŠÆ–X¸ÖM\ÇdwÉøýƒ×¢•X†î‘ØÚ £B¿½ŽŽ¢HTï‘ÎÜbHÆq;¹hþw‰î§OÑm¼Q8£Àä›7ê‡ É‘j솫q#-' ˆè¼ 3Ð5ø:IW²Q¼Á‰„ÞXÈFÃîx4^Kì¹#ä‰ðZÊeIúÞhšŠâê.L­ ©…ÌqîÜj":¬ÎkƒÀsø7ÍàWpËérzƒ›,©“ìâæq>$/£E4†®àLüc§¹ó§­ˆÞ§žã ,?ï¯=ðd_û½å»¹ÃÚ îQÞ‰QŠüDeíà Žö”=Q—Ç›­›·5{˜ï4çèiã]ºÞÍèÛxª²séÛšœ¦|ƒ›QcêÙ:ÿÜøÖý­'[*M=MÕÆ—Æìæ¸ÏæBý39_678à ÃÓöæ•Æ‹M—›Õ‡W›ËQ±WöÇ”Õ W¥Mæëœë)¾²ëÑÆÝ Á¥w³¦ôIêÃÊŠ2¦¨-jZKæeE¨¾kþÑm8£so4V=͸žù+¿*Ó7™Æ>JpÈ3|ly`J6xÖÛ¨sæª>嶯m׬½QÖ!#6Ñ=¾CÂõÔÕõ‘¼uŠö ÷’r.×I F™Þ»±µä~rp´SØÐIÂU{ù—t 1'ý›¦RŒY¬õ ?ñÇ{ÐóÇà^Ù w“õ)ºE)N“ÝüÔ¾—|·n^ÜQ’%dJ.˜D'ƒ¿%ƒèGt–<Äãˆ?ó °E ±¿ž{Llðæ.[‡Ÿ³‰€G½XaÖF ´á¨™-f]ÁpOd¤ì ö¾p)N;XÀž…ÝØÇð([.Ðh!˜ æÃ v X ºÂ! dÎÂÛâ]âL&èd8 ,†‡Yq£Ð‡²Éz›SÁ] GéDì@»r¾ô&ͺ]†°¯ ŠîÀÁDÒ U°­@gÈà5lÃ6<‚ü…£©˜® —HY…²ˆQ °ÔŽÒ~ ]Á{q&º†s¦ëÈZá<‹€öå\ø<ÒIàAø:Á\ìŽW7´”õÑëþK­?¸ïÀOèòBJضÃ`p<ô?Æÿÿÿ—gXéÛÅÿÖµëêªkï½®º«`2OŸIhvì®]°¢ØA¤‰Hï„^¥wH ! ìØ»bïk÷ëýëš/™yÊ}ÎïDTì9ÛȾ ›„Éòkü:ÚL³³X¦Â÷ð|S¤#@žEÑ2B-©~ŽþDá°3ê„ßÂ3 X ‰CoΡ ê8n;@WIñäo²ô0ŽÂɸ,ð.Ü—Cwܹ d¼ïÆIGº–d’Kä ‚ÜV‰#g…ÆãõTALè?|‰¶ÐSü ~‹Ä/poá™|¨•ÚÆmEõ¸kót¯ëÑúütÍ8õɤâ`y"Ü>v|Ò²ìÔ¼ó%¸Ú±æAycaJâ¿ï¶h›Š®†`s±ÉÓnZbâ Žzg}‘qDcHÓ°¦Tƒ¶Ál®hD&`ÞÙ”t.ú|]“¢Ñ§ñ–››lÇ ÷õ#ëíÔ¤êiÙ®ªøšHå~e™jxí5\;°nŠz\uQñÜ>жˆA~§}ýׇ´‰ºT¯ó¯ú3÷ZÊÌ”vYoÓ×e§ù\阛–ëVn¬ ÒUÖú”šK|kågÊÕdïKÉ÷Ž›1ªz½á¢vUÍœB÷”/Y[ˆ–Î*•TŒ¨»V÷±ä÷Tcȃ€—g¦F?I È}R4$³oÄ!yñ ŽW÷®j©ùXš™[ú5áhBXÂÏ„»)6‰SN>píÿ-<,þŸøìˆgAÞ<ü¾ûîõ=ç3Ü·WHzÔÈȳþž“<ì=u;ìýc÷ü…C-ÍhŒä  EX†Tè4ŽÀ‘ØçÀáá,x¾C©8‹ìCƒ±³ôÞ Ý¸íÒÉp©ôXËuFC¹Ç°lÆ«É Ð ƒ]PˆE —ܤ¹“¢\<:‚—ø¨ p)ˆ€[¥˜[ u ;H枀Làæ@® W4GÇÁ!’ƒ)­à·;­B £l^ üŽNÞ¼]Á|h YGÛóñÄŸÄ«àxW pmЛžÀ½i²d.:ŒÓkä>cÅŒÊ.Ñû´_LÒ¿È.rž:{êÅú°žx2²ÄŸ¥oa(—ËÈ ZΧអ.–ÂW@ƒjàfÒ‰ÅÁ?ál‚Qì‹ËÄ)w‡ah¾‚ü ¸ ,hf¢áH‹ºá½¤ˆÖÓ¼†‡ì/³'7ñÿc‰¤ –ÃΰÊ@AX¼€9 ä16 ¿.Ç…°:Â&´u­Àp¸?¹Žî¡Íèú}9{iHBŸz†Ç±ÏìùÕÂË L¿‡ Ð'²Ï×umÀâM ö‹û‹ª¥ˆ» ª`”‰.!+ä‰-ñâɬù7Ì‘ùð}¬.Ù[­rYÞ¶c¶Ï·Œð. J€î`ãoÆoÊ]ŠÜª²—ê]Ú/uƒÕÊvµËµ;tM *•.mG”r^M«Þ¹qH#4n1®0N54BŒÓÍý7F™Ç7™/_8v¡wz.²i´ÙÝxÙÔÛ|Ál¾lhX¢ŸTß©šÏë‘ú!ý’!EnùŸÊ<+lk"T‰5yå™ù›Α½‚ߟúzòÉÉoî¹®Ç]»yÖœên‚ú»êeòÒû¥åÞU¯•‰¥R‚ai,Ó)/¹2I9¦¼µpOéé2òSÕ+ f¦M‹!1‹óâ•sµëjA±&uMÚÁ²’Š]5_Ë4ÅsÊ¢ŠbSÿŒÚhÝhʸ›µálÏbuÊÅ„«Š½Ùóß”–”;ŽH}?6!,£´0¯à{*Ÿ¼ò̟Ѧ˜UуC'N\òvHô‰ö8slý±xÿeÑ'b:ùŽ<î}\ãÉ{úë]/¯¹ wâma>ïÒýx3™IÖ`krG’P‡äˆˆŽ9‹,£“Èq ²€‘ëK?Òád"v—†‰÷_Èmë…ÄC¶Gî[`{`¤û%ñ\?ÎäÁeغÀmà?Àqd†‚y(TÒíC›è¨ÿJÇ8Ð}‡}àfxÆþÞ–¶€ð$–›E·É~ZÈnÈö ýéiDé*Ðćx l<†ŸM&‘µä(ªFïPB¹®ðLgV<Ä&|JÔã\Ò•r,“]˜7Í#|¹AÜLÖ­l%ú€3A‰Ô\çn‚»Âœ‹÷8ÙA×&= MЛQ è v§CQwÜ7 Gp ꋆá½xrÀÓÐ[Ø–ÂPøB<¹…t+ÌOãTÊbù²ï‚ßÜ ÍF·á¼×ÃI芸æ»d ùüÀíÜi÷Ššp„Ž\# DZÐbÑ“wxšËm‚3ñb ‘ÂGt«&£Ñ <iá7ôw"–ä5ž‚ `#š€»’M([Ò!,½ .Àe`ùŠ‹ÑSÜN¦Èú+¥]ØZ–ÏðÅ Ï®üÏþƒC³^ÆÐûòlåêúµz‰þSƒ¤aµ.W¿Þ´ÒüÚ û I¯{¡e(7?1/V‡ffß®qÒ45Ý02ãW3F-L‡LMÆcúûÚ2/7QS³ù`£…©PßÞн±¡iȹH£¯èé ªÅ!ésSêÏJSÎ'¬ÉŽ>«Ì&9·³Æ§šã;†®öÏ<ùÑ«éÄáSÜÉ©^)žN'öøŒ:ÑV?ÑÜÓÔÎà®ëPë©Z]·³fPÆÃ¸¬ØA ç˜-‰=Kì”ÕºªæÊ³•Óª"ª¶TÏ©ùXR”v+òoE\Y†z„Hð§e¯Ô§ëÕµ+«ÝÎ,HÚ¼+ñzŒ_ÔˆÄy)©‹ &–µ–•—²¼Ð mée¥r}ÉÜŒIʤ3y…F+ÍdesMBÞÔT÷ä©ÒŒqZïl÷ü©—»âè.—CA~Q#3ã­|rŽMôèâ9Ê{ªo›C÷…½'üÉH9½€{ðCø&äGÞŽ 2VÁóøw U‘öˆ,ßÖBcéFÇÆ¾-ÖMΚdÕÞzƒþ¸q´)ѴѼÞTaÔGšÒMSÍ}M-W]F]ŽfƒÎNÿEaØf8¡ß¤¯4È;ž{mÚkPê7èC’´ñê¾Õ^¹wR^d^Nz‘bŸ•1 ödøå°%§gùvõûîßì;ÙýºË¥c¿y9qçäL¿Ž~·|œ”ñu>õûj»jOª\+*CÔq%6i§“F%H¢ý’&W\hèP®öŽÔÿÐ3t•OõÕB¿ø E»rku_倃×ýUߪ»¬™¢^]¾%?%¹1amõùÌ•Pë„·©kr'V¾U•Ví/ ÎX_±W7L{¿âÓÙYé‰i/Kµì7{T¹æÙ¥oLîŸ2'Õ7{JÊ%ŸZÝîøú-¨² Ë ßì›ÙEáàÏÜ~ÿå¶íXü¾öK³pGà ×c?ì(\&é{²€v —I1‚ö“À÷6’½h?€¿…ç¡«ð5ú›<"[Htžk”žå¼A ža\è§£6i1÷7gnJUÒö0›„&€è((çb@G®3¼oH÷¡èØ(Rp+\ÔÀž@!t<Þë@“ä3TJk¹LNƽÏi"Û!û&³”å ³ùtrýÎo–o•òØ@zœ<ÕæÎ¦“‡¤Š\'í©ÈÊåh5tæNã´¬@/p³H–Ô›îáÈ–ñ+ÙjúšD"=Þ$Î^ B&áFÚÌâÉWr(ÄΔ"jØdÂøNEÐ`ôÝ@×±3 ïŠ{?Š2 œ€JAwlBÕÄ—ô%-( &Â"¹*ðP8·ceCe}dëe-|/:íÁ[i«gcYwú½Av“˜GiȈŠÿwÇsØ)zSáQ~°äZáô¢EÊg©¥õ1u\Uh‘>ÿaÙhÃ+óÃi½YﮩŸeYÿ¬6®bQÎ…,{DÝÅêÓÚ¢yÊLM?ýPƒ¶~½: ¼1W¡pPŒ‹½<ùÔ?}áE f´*¡îUE¿”‘±©)E©FV'æ”d¼ÉœWuN™W³)×5‰O—4IaVh׺åì÷8ê7)<#&5~nú‚ôêÄÒ̶¸¨€ÛÇ›ââ±a™ÝMøÝòÖ|œÁkñHaºè{ÒH®òIô E4Ưt^ú´Ç=ÅVÚà#bÊ‘‘$ùÙO2žYÒ2ô Œ¹¥ážJZáp_ú«“ÜŸ,„‰œ+7Œä–‚Þ\ç0Psybk™ƒá9Ñ»GÂRéa®ÌÁe¨” \üQô „;¸õàx &CÂ;Êí­š… Ùp!„~Å*ú޽àçÚìÍd¢‡ïÆEØ’<##È-¼Ž@rƒl«ñzi›D2?ˆz‰^R„3¡·Íü™½Ž¯‹ŒmE€ÿGŽXK– 22V̪YTCTèOô\Ç#À#XSDìCëð~ò ¯!I8‰Üf{ÅÌ©ƒo9` ¾r6𴨑‹t=­Æ¯ÑR؈›E÷]èRúIX%è„aÂh¡Ah3À64‘¿Ädl…¨»Ì“='é91UžÂsÏõ´¸“Z1SþBá{à':Y ð…Ûa$˜ͨ oÁj´ 5£^d ¹º¡6tÍGJ¼›¤À@ÉRVƪø—<âChŒxŒ¬$£‰ Ç/%j‘‚ýH$î'ÒyYOïáttŸ$AdÝÉ0ÿV¸%;cuÐvÁýŠ1Î4hvFV™4?&a¡ßÃÙ‡Ö:MÞõæX§°ç©ýŠËŽ(wéÖÏ™ÿiºwéÌ¥×74u7UŽ †Æö¦§¦+¦î&““ÑÒpJ·³¶wÕð² ¥›*6V?P©[W°!¾á¬¾~_}œæwÍŒºþêS•)§ÂÏdÇt*©¯¿SUcÎ<™™³Å÷Á‰Û^¡'6û- 48`ñ)Þwö)ØùLÅñ¼åÙ¹Ibü£$ñR¬ókj¶4t1Œiè íTk¬¬NRÁêöÊ‘u5?t ]Þ«ÇU÷*´OyöPu\ù˜¬=)0ûgYƬ¯4¥èaU—ôøäÙ¹Ó2NFäV&$m¬¸¤š[»N3¼nsñ¹¨Ÿ!Ÿâ»”¿S:H÷Jû•Ýœó(·<ÿGÞ¸Lyòå¸oñeЬßÃv{æ{˂ބXÇ&GgźD›#×%ü/Žøõ,ñnï:ÓÉc‰Òz ^-2è 7XÑ¿É{¬'}Ù~:ÿIØÃŸ&±1¨H8zÌ}oæÂ8±‡¿ÄLÞɪ'¿”o%3HÊS¥Ó¹úrið™´3÷PjË•s.×Ü™"ùGr˲3db*”x 9àîLÑþø ¨;whæþäv‚{è˜&æ½—h xFƒrðN–èðzÅÊ3å¿ø3Ódº€1öuM…E±­dÅ”Òi9ûsRÿVRÌ-š¤Éªû+ëØ› n·Òû¦õ8‹JZÄ5‡¨ÃÛ¥´f>Ox9;"#&)×¥x~V``íñáÁ»âæ„.ò­ôXtüÜþeKÚgYÏ@`OèšðH:„h±+áIÖŸJi™¼NÁmi;0Pú˜$­–þîÒÅÌ &‡ð5qFgr«¹;’Û`€Ø4F€4¼\$Éh lÁg°Û&Ýw ‘ä2*«bÐ5Ä€ WéºVl1d oK¢ à…Ü iOœ‹à 1£}ó1û)ïÆ†Y•ñ{Ù;±ñ;°™|Š|U¥¬·ì›ÆF±áb»ÛÍn³ð7e_ØZÔ¾—ÊÁv´”Ì‚Éßhª@_Ñ&î4„¸@$“Œ;ÐS\ˆ>¡ÒƒXŠNs“ä:×#<„ø€t†

pÂÔ?0¶?Fp8½S¶À? ä?Ggî¾Æ]¿Œ«¾qM8?(‚ ?à ½ÓÐ\¾G›½*Óô?H ºÀ H|?3iä?eDZ¾?Rå4?2êV=øÜ½˜gä?R å½Û•¬¾â+?‚5?^äü¾X½p½°ÈÈÀ Øà?j]¾ à ¿…±Ì?*¿ˆu?9™Ù<.0¾ ;—=ŠÎT¿“'¦¿df?"s?;Á¾2ž¾äÞ?+¢G?]+¸¾7½“Ô¿•ˆ4¿ŽÕð?&½R½™ Þ¾«™¿g#x@ð›?îã8¿”€]½ÆÁ"?»?1ÂbAž¦SC>átA0zª?e{?.ªh¾ :,=â?VGK?[@.?gx?M}n¿–±µ¾uÒ¿‡ˆ?F7¿‘꽫ûˆ<’€¿2Ú;øpÀ¿œt¿eGº¾U8÷½†–?$+W?Pÿ!¾E2վο€²½\‚P?<£í?c*оT1±?>ºf?9æ¾dw? q^=Ô@¿¢ÕÒ:«Ã?ß*­> ào?Ó ¾Êf¿›:?Šy¡?`YP@Ìv?l^Õ½)Ïô½µÇ =ؾX?Xûö½Cú€?Znf½<½ËXê;`½Rv4¿S9›¿|W?m“6¾&­$<©ôȽè`ì=½Ö”¾_I¿R@µ¿@=ài–?84w?€Õp½ 1Ü¿h œ?+Ëß?Y‰€?A¶m¼í5à?8Á>-k?9 Û@—¿ˆGÞ¿‰Ö»¿aè?^€®¼iÍÀ¿d¼?/~,½î|H¾À'=È,½Ó¤î¿ϾpFk?h¾Š4’<Ñ«˜¾¥p<.½@¾@:?dÄ}?CQ~½îË ¿‹*?H¿Šm+=Q“¼¹ž0?L?:Ù>3‚u½HòȾhÍò?Õè´=ž|½€aĽ?_ >K9t¾…Ùê?øK„?EØs?|žT¾1}?¾eK¾aWf=˜´z¾?Û|?Õˆ?½…ˆb?JÜ‚¾5~¾µU*?;¾#?4óÕ¿„Œ¸?<#Ö?9笿¡¥·½ÏV¾A¯¥¿w¶ ?Ø(?eîd¿¤c-?»©i?ÕÜ"½wé`?22­?@p¾P¤U?iÍÔ?Çüæ?DQä¾G¡˜?G9?!zô?Z{J½†°š?-j‡À9é9ä.¿kt¾N|y¾€10¿ˆº>é· =<Œ½›ì¿B#¨?Ep?è@U¾3øø?Ux?áá’¾ê½á"½Ý!ö¾!â9¼n®¾Ûx?B’C¾ÍÃ-½V$?óÕ¿ƒ^ž¼)m¾ ç¾hŽ¿–¡?%V?SgÁ?W v¿¡ü¿¦ 2½°c¬?Üc?ßЗ?3¶(@üo7A.‡æ½é÷ð¾j\¾,&½Äö?p©Ø?å{¸¿bWn¾!d7¾B§¾½ú?d}¾Žå€?a²Ý?9¼œ>Úm¿¡6"<%æÐ½Åí ?nõü¾wž¿xðà?3+@3pD=lؘ½¸H>Þ–Û¾q§}?A n?eZR¾M†:?N>ð¾h€j??ë·¾Yì ?Dù?%z>ì H¾£š#?¾;.T¼õ*?AP`?BY½1¾À½—í¿yõu?Eþ½á/ð?Cî+>*ü;?_0†¿€ ž½n.x?kûɾ¯?T´¾ÅÇc=ÁÔ~?br6½=ŒX¾!´æ¾;¸?h6.?€ W½ŠÎ¿Q5½ËT¼¿d=›½‡lR½©*ü?W =ñÈŽ?:~ì?z±¾à;½áì¾À”¿fÔò½ÿ¾<¥à?AÎ ¾!+ã¾/ÅJ?€§Ï?q罨3t¿‘»?€"}?ܹt¿ipÆ?)Z?Lk?Ù„G?0mÐÀD½ÉHd?k&é?ím4?SJh¿…╾ «“½²Ëô½E ¤½Ô°ì½®‡¼¾ì½ázî¿hø¯½öøœ?…’Y?Gªü?xЧ½¦¢|?TŠ¿£+ˆ?wo•¿©i?RýÒ¿Žþ;Ü<€¾H=8Ϭ?#‰¾9ý,¾ª=/ç,¾¦';iO¾F%@½ƒ?Jø ?kâp?Ðóù?æÖd?:£›¾$m?5ýl¿vϾQмËÓH¾<è?v“¼»«;€=>0½¯õ?O‘¿‰×¸¾0«–??·Ÿ?dI/½È›$‹¾ ’½š“^?9‡!¿“øo?Ú”¾íÜ?bÛ&?lôi¿?¾C½·¤Ð½Ð/\?4#d¿‡vÁ? xá?7÷¥=œ”¿€á˾…-?ùàÆ½ú^ ?Q(IÀ-<—¾M<ÃìÈ?KÐH?f(ù½œÞ ?­ôˆ½ÎUȽÙqV¾M¿‹=‘ü½f¿vñ6¿k}S¿|ÃÝ¿–mŒ½§½_p=Iª?:ÛÎ?s›²¾ÄúÂ=öçZ½b6Þ¿™è?Dï(¼‡½x¿Žf,½É[~?PŠP½ãDT¾`Ž?Pá4¾”Rá½hd¿ˆ±¼a ?éÙݾý¶O¿–Sy?XØ{¿žM\¿€~ú¾‹òB?l@ª?俆%¾¿½­¾\¶½Ã¥¿rE©¿‹n[=Cü¨?/¯?S>:¾<T?WTÔ¿(L½ik4¾GUA¾©?O’½7ú˜¿®Äv¿}·•¾Š ??d€¼ 6P?„#?'F<åf0?äz»\#@½åóœ¾ø2?@ü@?W+·?•4¾$®Æ¾qP¾Jb¾jæ<Œ P?&ì:¿kq+¿o<¿}È0¾l,?b+_¾FC?I)?$ñŒ¾> ù½‘<½ÂQð¿™_о¼¿¾²œ?^§¿°²’?ô оÖÿ¼½åYš?Ž<¿ŠÐ½uD€½†¬Ž¿¨ó½­lü¾ˆw“?IOо“ý|…0¿Š= =L¾ˆò¿ƒMd¾"E¾$ ν¹Öœ?M½Išl< ² <¸¢ˆ?[o¾&­F?O©µ¾ ´ì¿oÜ2?/Ïö½U±Ì?>ùP?dïv¾2Gö½‚:6¾¢…5?\­Ž¾,;Ö¿Íž?ÔZl>ò(?Ö9T?…><¾AIñ?q›p?ëkÃ=bÓP¾<ù¿„»±?/8×?x)K¿Š£™¿d\[?Ë_¿‰¢¾“ »a³À?/Ù?bhž¿‡¼ ?Fèb?Þ§}?S4¾€‰™?7Å|¾(M[¼ág ¿‰‰[?[ºî?Jø²<1I@¾©ñ™?Q2Þ?!ǽä€ä¾¼F»5R€?æî­½Ê”>õ=¿ŽH¾¨Ž ½äùê¿–†v¾™X¾q©¦=¡¾vI‹?\ßý¾Á!¿ƒ&œ?#?å‘?4Æ¿v’¤¾cit@…ª¾SÈɽ¼·j¾¢‘?lÄn½ô<<ð¾5‘½‰F¾“,¸À±½„¿r½˜?y ¼ü#ˆ?;߆?/¼N¿–Ù^»=¨@¾C¨m?wÓ–?ëꤼ‰ˆX?,êê<)Q½‡œ8½yú½Yßp½‚C<½ÃÞ=Åè¾8ÎèÆÜK¾RU?*ëÙ¾#ˆ¿•Ep¾å̾Jɽ¬b¢¿–·.¾¤µ?:ôÛ¿!{¾“è1=!§Ä¾76õ=ã,?AA½Ì‡½³Ú°½ðêv?à`f=…]¬?J¬Ã=ÕX`??õ”¿ B?CD¿¿q™Ö?'¤Í¿Œ¤=9B`½¨®z¾!Ö‘?<á¢?IáW¾&{¿Ÿ­E?Md쿞ì”?hÁH¾¡Q´<±”è¾l²½¾|Œ½Ù£Ä?X®Z?ßiM?Cʰ½š§ ½hh?=ìI<”r˜?Tt½D|¸¾D3À ?á7I¿‚m¿Ä¿H²?8°> é¾MÆÙ<,1à¾&æþ?BöG½ðn¿Œ¹½़gÐ<¤h½#ð ½úª?8È.¾ií?aa°¾(fˆ?T©?O;?JÿĿ۽5rˆ?B ¾l Ö?^­Ä?n¾„¡—?\y¡¾uY=¼¥J?qà½b<Ô¿ŠEË<ΣྠÝñ?N*R¾ÂýŒ=B+ܾDå—½ù `>úÁÿ”s¢?A3½?fƒ½…2Ú½¸0,?VÂ彫,?Z©Œ?n‘€?1÷i¾²£-?*ï¼êUH>°¡)?;6#?À¶?ñ¯;¾¡O¿’ñJ¾ ØH½öö6@EŒ¾L/¾~/°¿„*›?P€_¿‰½n½=ìÀ¾‹V?<꼿U\#½ªì0?cÀ–?!¾“$¾~* ?&q?J5ÿ½ó°?,·A¾ º>òM)¿„d^¾uZ¢?X(?[¹F½-u¸½AÃ?I.?mp?Ú¥ü?F;ëI?,»ž½ªmD¾]l?m€b¿œ‹,½æì¾¤¨”?S1?˜4?k"š¾n™ ¿‡}r?.È?$ä?"}è¾&;Ó=’˜¾>Îf¾T&u?vž¨¾V+½· À?às¿…WO¿‹ê†?€j$;1xà?R¢?‹z}>Ýp<¿i"ª?h‘y?_gi?Wßš==Ü(?](b½ÿ•@¿‰‡´½ù¹„?,[S@Ë9AA¶.@ãô¾qÆð=ïP<±õ0?…h?Ûl_½òX ½›éÄ=)?,?ðÌ?}jb?W©½µ¦þ?baN¿kåÐ?[¨†½®Œ¾=Rh=;å ?Nóü?a$E?ãpQ¼ 3ð?R¤¾/«¾AÝÇ?†¿™JU;ÉéÀ?C_?T?^êD¾H¤ÿ¾pA0½þ3Ⱦໂi€?/…”¿œ-6¿ŽØÚ?hÞF¾˜Ôð?ñvd¾™\Ü?f.”?¡Ô=Ç„?9';˜Ü?Ì [?K#½fK¼½ü¦î½’ä¿` ¯?ZΧ<Öè¾|öؽ€˜¢?8ü?dû½Ó|à?n·å?N¡Â=“žÀ?å2L?n¨6½ÎÅÒ?w# ¾I H?Wé¾ ¤è¼ÅÚH¾ì?‡…¥½§Þ¿„M?MíY?z»>¾<ø`?`ÿJ?*?·¾Ns?"Nù¿–hH¾cÀ¾E缿~àý?Ù׸½šiþ¾Ÿ?C?P½?Tþýgäl¾‘ð¾Ì:?æ8›½zâ,?Gâ>=Hã ¾Ö¼Zn?ßeH?mRÄ?-¬¶¾Ðÿ¾ƒ<=±[^¿‡Ä¿xå@?"‡”?DA¦¾ioq=.&¬¾Cª¾k4n½èûF?mQõ¾9þ=sÐ?Ñã8½ÿl¼ßq¨»é6 ?=)Ô½Ú¿þr!¾?àZ¾$O¸¾«ê4¿ŒBs?CF,?f­*¿‹£æ=:7(¿’äx?j&‘?)Z»½Ÿ´&¾_˜×?V Ð?˜@¾Q¤¾[¼?WM?Ürå?Kä-¿Ø?jC ?Dïë> >Ò ±¼kÙ ?uµ4=.3ð¿ÿZ?ƒ¿‰]¾C?P™*?Xऽú°?‚ܽ›ã:¼æT0¾d/UAæCs™BÃb?4Š„¿ƒ²|¿ )?]Óä?p_%¼Úx½ƒy8<ߦX? ñ>¿ƒVÙ?áE¬½E p?]<È¿„ŸÝ¾U(Ø?]Š?ÙOr?y¶Î¿uv;¿{;^¾v6:½ypd?8þƼŇx?32;¸xà?5ŒS½ÅŒ¸¾It ¾/Û@¾[U?B`þ?Òâ½'`(¾ÄÿuŸ‰¾q7^;É> ¾ƽuuÀ?)eÎ?_ <¾%áx½šXz¾%a?NæN>¿оSy ?< 6?t¬n¾Iå}¿z8u¿„Ì2¾‚ü¾¾rÌѽ葾%ϾT]a?FØ•<…›P¾$q=Î+*?:‚”½§ÁD?'ÁL½€¤½ÑŽd¾/ù̾™¡>àn¿–;}?zuȾ"œ?[(ÀÀ¾|¼Aµ`¾*E½âȾE@½[oÜ?/©á½×¾;±ÙÀ½?ð¼•rp¿ŸdÒ½Æï>?EE?{Ôܾ‹ÑW½U ?Z*ë¿°m?J³»¾=3$?=!?4Xª?GÈ¥»êp??„î?4±k¿¥çœ½Ðdn½ö›L¿‡Ý¾G¼“?BöV?7T†¿‹—•¾©^š¿tÆ@½Ðìô¿^݆¾]Ec¾%Aø¾³z¿’É ?.½Ë¦ˆ?H–½øù¼¾K?=?ñÀö?KÊ?ä`ÆB™—»A‡‰Ã@pf?dB%?M/½½•8X¾CŒÃ¿“hW?ñ¨¾_F+?!Uê?QX?¿Ç=Åä¾–G+?A|B?³œ¿…+Í?8í´?g¸\?ØŠE;‰f ?W†ç¿bf«?"éq½%{ð?D¸}½àêL?Fjx¼ÀK¾j>€½‰Á¶?!,Î?JÙ¿’4©½ˆd*?7èƒ?Ø3:½‡V½åìþ?ØÌN¾¶6½ƒ|Ö?\ìÚ?FñÚ½tHо™Î:š €¾'•½½®?=*½ü8?Ëõ?ic0¿¢…7?k¿‡Ë¬½Š¶??Z,=а¾‹ü‘=§m¿ŒÑz?ƒ´:¾ ¡h½§ýø¼âB =“ ?¾4W?QÇ'½Âùh?öcªBÓílC:ðó?Pþ4?lÉ/½úÕ¨?€˜¾!LE¾qËì¾Ñû<¯»@?à•š¿‘:á¾zÓø»ÿ ?:…f=R`?DÇL?TBÛ?P÷F;µ‡à½L:Ð?g—ð?I||½dÆÜ?]ç?V´¬½.²ä½­µ¾†7Þ½sÌ?(xŠ=¹…?9Âù½PIœ¿ŽÜô?;7 ½ÇW(?]×´¿’­õ¾Ù¾ ¹“?è+J?8bh½×dؽÑÀ½«¡¾F0?W%¾·ä= ×°?Óؽö6@³þD?*ZU?pK?Zø³¾ a?lfÚ¾BqM=P‡?7£r?= ¿“ËÒ?hø?$û®=dø@?FÑt?W¾¾‹j&?_?,ÉR¾K[$¿¦³?'BǾˆßx?î/à¾h¿‚F¾AHD?hD ?Qž¾!÷?EuÖ¿È_#?8=g¾’so?HÝ›½VB¬¾cÄ?YªG?2¹?Zš-?\áR?VŒÝ¾€í~?n¢¾\¿Œw×¾œ€ð;è–@?9³\?ê'U?>6Î?÷Ñz?NNð?PëȾ0žX¾™?6h²ü¾ÃÆ©?DD@pщApŒm?:=D¿‰2°¾~Âú½Õ“*?f¶2?‚õœ?n+£?Oú=€?[8þ½˜+ò¿†ýŸ¾ÎnŠ?4 Ð¿Š®´¾ VH?pA?V{È¿våÆ¿ŸE¼öM @7YÇ?aÚ¿:Ú½Ùìê¾+šH=TÜ¿‘싾+Ò¿™×V?.Ú¿‘ƽ熴½ö¬<ÙW ?2àœ¿ ¬?Ù Í¿˜=4?vX=Ôa>¾e¸Ò?!!$¾98Ÿ?bb÷?7±‚?JOï>Öq ¾g(½žn¿”¢i¾§R>Ä([??(¡¾'9|?@+:¿‹‰üÀÄš?]:¿™í8¾’Û+?L½å¾f?æà=z濘7Œ?6.нëT¼½>y¾`£¿{›,¾AqÍ?o ½¢¼?ð<¾€ ¤¿œqg¾:j?WB'¾‰^¾$öC?D†a¼bŒP½Ð²ä½ˆñ¦?Vé½ðŠÄ¿£ ¦?mü⾯¨@2P¾½‡?rRŽ?% ¾žnH?ˆ‰ž>úyw¾2‡?LqÕ¾¢5û½YÑ´¾×Ã?<}#?)Ô½Ô.r¾%²U?6c›¾iཪ§v?Óœ?0’C¾zrø¾y?CùR?mè¾»‡½?Rõò¾«Òß?%Oˆ?>Ë ½4­à¾C›¿„Zo¾C]¹¾]‹_¾ŽœÜ¾Mq•¾&¦½}t¾’Y ½¿1v¿‚Èc?qB ¿}×=3@P?Ñ-¿‡'«¾‘cn?RT½¾³*?bÏ?+à/?8çü¾¨Ú{¾„¤¾‘h6¿‰šq¾£ÚÞ½×pR?-ÿ~½íÉ„¾Y?óe\¾X`T?S8?=<”?IRM?)•Â?>Fõ?¶ì½¹™°¾5%„?TÏK¿’ºs¾ ö¿„[ã¿“û[¾œ<ô?Rq%?!½¨½†8N¿§{½j耾Gfȼ˜FH?D¢-?G¾BÑ.¾ƒ¾§÷m?ƒs?O’D@z½‚V>8—¼î=ÃÓ”½¥€j:Ê{?JÝ?»:A@½±sT?yf?_½†ÀF¿–ì¿ü"?L»û?o¯z¾‡/¦?Q&t¾_[æ¾ᘿªw(½pâ ?GÒÖ½þüª½ñ“0½ìT?Ft¤?€T¤¾)Ú'¿‹ê·?4÷=ßè¾¥;:Š€¾Câ?SG ?0Ì–½Ù"š¾—Á ?T%?"J½#Ä¿Š`!½Ž‹<¾­T>žû?b@x¾®%¼¼sø?PþH¿‰êZ½¨ð,¾8zL¿hˆ~?¾¸@?‰¾K ¼¹ó˜?!ÜØ¾Í{Z¾V$ò?Ú¿ò?`‡$¿b̾'ëÜ?Ã;¿–ô¼ÇuØ¿™º¨½'Çð?9:¬?fµ†¾ Qð¾3t¶¾P{N<ê;ð?L„ú¿ƒèâ?%œ ?\{ ¾'ÛÒ?qêì¾Ê]»ü ?"=–?ëØ˜?CdA¾åO¿”¥®¾ —4¿–3_?;¸ë¾Ÿ²ø?Zš ½ÿm(¾…Ä?(²?n”â¿öT¼‡Œ¿€/?]ŒŽ?æÆž¿‰3É?%’½`à ¿”ÏT?Z7•?‡æ?&t¾‰o¾=<¿‚%¿bÖ½Þ¬p¿ˆÓ¾Œn¾1Ź? Üä?j™Î¿„V?TÁf¾ysp»ÒŒà?aú¿„G?8[_½ª;ú½°hž?eÐä½Ýe¾:+U¾§3N¾G?)ß»½W°ì¾CB¦?:^ú½¯‹¶¾Eà¾wŽ2¼ÿH?( ²¿ìP?4]T?S„õ¾’6 ½1@>êôo½Ï'<¾9 ´¿Œü¾Œˆ¿ѽÕï®?0Ýz¿Å­?M!4¾Ž,½²áü¿uc?@z‹?(麾WEb¾k£¿Ž@4?Ø–Ë?SÐØ?4辜?I2R?Ñì&¾4 ¾.¼u?<«Ú?RÜ?=½¦?[{a¾TµÜ¾oïé½rɬ?gý?5Ëj¿™^Æ? `¦½ÇX¬?>ݾëY½ò4࿼æ? ßA?Z`w?"Yz½î‰¾ýнn,¾‚É¿—²]¾@;]¼$B°?OC<½Çsö¿à•?Ðl?[?|Þ(?[:‚<ãо# d¿„]ø¾we9=ÔeN>ªÀ?DRÜ?:É2½¸(Z¾´0¼lP0¾CRv=+_°?¡·r?yC¿mVÀŽ>‹–Ø¿iདTD<ºôh?8x=B>D¾=¶€½Ìh?[[±½ŽBê¿–œ ?k(.?Ü´Œ½£ ¾°óÖ?^]±½÷L¾<{ ¾t_h?|QX?.'¡=‡Ab¿•/À'?Xí»²ÒÀ¿Žú¿nW|¾Qû¿wã:¾ Uâ½Ú@?A‹=f«ô¾˜:íÿ?*¿xep?NC`?-Ʋ¿’t»7þÀ?M¿xòÞ½ŒW"?‘Ö?V=»?]gÛ½d?L?XKÉ?â¿<–|X¾‹/%¿‹À n­?Uú‚?ô¿ŒÝ:¾ÐC?tô¿¤ko¿…ŠD¿œ-d¾c-?J~¿÷ž?Z”¾N¶w¾È*½Þ„¿µö½…Ô¾„¶6¾Qg¾©=«ºð>€¿mk¿.W¾8pˆ¼’HØ¿’bØ?ú:Ì?3ø¼o°?Zà|<ÓÄP¿Žb„¾8攽 T¿fïW¿™e~¾†Ø?«,½¡êL¼–÷ˆ¾&.X½òDÈ?mž‚¿–Ím¿‰£¿½Üô?Pá7¿”ó¼]྅*¿¤•5¿£Ç>cm0?Q2º?MؾyåÞ½ ¾I>?g4-¾•k?[Sö¾<–¾RÀªD¾‰q`¿ *?^Îá¾t:¸½ª `?*qð:áà€¾cÕ[¾MæÕ¿‰‰‚¾ ; ¾Q†f½ êX¾Cl¾‹ëg?E+d?E~ä¾CˆX?eоêò<«g¸=Þ¸?nô?Už¾3I¾ðœ?Aͺ½&›ü?Í©¦¿‚Š”¾˜p«¾D3*?±òr½ƒ\0?]æ½5¨¿ˆ:ê¾4'þ½ýÒ´½‚?éä?G¡à¾«ãn?;@È¿4Àk½‘µ°¾ŸÌ?Vñp¿ž"x?*¡ú¾¢WS?3r?.||¾±p½÷â?u8?9.l¼`0?hÐ?ia¢¿„Bá?~˜Ô¿“œ ?iGß¼¤)X?>¼'?Îáè?]Jp<·¤?X!M= Ù ¾{«?îÞô?$!U¿uqN¿„·»¿…»„?ßD‹?^´H½Ã» ¾i?:)>í½y~ü¿0Å?UêË>»…à¾eƒ ¿q˜ý½kÏ@?cD?;;Œ?p€Š>ê²Ú½náÜ?'ž¿ƒÍ?A8Ƚµ¶½¼k?Ð?5ö¿‡Nn?P>à?|åï?áºA½‡‡r¿Eh:m—¿©ƒ?j²X?8;b¿‚Ïò?™š½à1ä¾V®M=´T?RÖÞ<þ^X@+ÑS<ÃÃÀ?,¡R¿z ?Râ4¿}–B ÅÎBe@Ò³°?bɽï讽9~p¿&SP;´¢À?3ÞX½”Áú¾nÆ>½¨Cn¿šµ¿HU½ÁÏŽ?+2 ?SË jþ?T8E?yJ¾d¿)‚¾›z<ÔÚp¾À½EGD?O½c=GÜÀ?<®þÀ€>¾Óö½ÎZ‚½ÓŒ¶?v[f>^>¿”KÔ@aP¿p¤!¿Y(=,£¾KÛ?|´Ú½,Ì<ÇÞH¾è–½ ¿™¢o¾·Åœ¿%*2<šØ?:™r?YÜ4?¢ú?7Ø™?', ?P:ξA%Ø¿ŠIľ‰ùø?i}æ¾¢_…=þÎÊ?D¼J¾~£?6ÝZ?hçš?<T¾€†$? ðß¼sv€¾=Ó?cùè¿”…b?Pòç¾x$,>6¤ ?#%J¿ƒþâ¿…g%?F?Î"‚¿¢—<¾;Z½u¡Ü¾Hœã?} £¾1úE=÷¤?AïØ¾# ¾'Ö÷½!ô?)OG?^ã¾w$û½pƒø¾gœ¼ùÒ?m.[½¯À>¥Ãn¿~?7¹ª=è<½qX½)ù„?HP¿‚Ëh?Î(X½·D¿— ²¾4R½é½l¾Î“¾+þ#¾"ì翆$龯|Þ½™Ö?7²”¾œV?QÜʾ(ñ¨¾Í";‡u¾„qp?Y²½¤ïÄ?Fl`?H—‰½êQJ>ÒÌÈ=²Ñv?áçý?€×²?Áé,¾šÕ?GŽÌ?q÷ø¾S=½3¾QUä½ p¾4×A¾Jú@+ ìA€Æ{@µ·ë¿‚SI½ãŒ¿…™Ä?a}3?GêA?CÃ.¾Lb½”\ ?LøÄ¿”§%½›)X¾|7\½ãǾ¾§°&½оSh¨?ð:b?>â÷½Æ‹,¾*ˆ»¾·À?éïq?œq¬?7;¨¾dV¿ªä¾G›Ú?4ÁB?c6l¾w-)?ðÇæ?Í5r½CD\¾0@â½^ª¾ûÙ?tPc?Jj¸?êU¿¾›5?Ds>½½Ð?ƒXú½$ú0À~¿’r?.§m¿…?vž6¾G?: –?#8™<¾P¾`v?D‘?=Jq?e¸¾dåÓ½¹Áü¼;¥?zž˜¾(Ã4½§‘ྫྷν4•p?1Ý=šà¾I²=ö´´¿Œç†?#@ö½ÉÂܽ?Ö?Iú¾€Ê?F¶3¿OŸk¿™|J?_õ?[i\=Xd¸½ò‰r½—ÉνœÅ¤¿“'~?ÛzQ½Õø˜?ï•¢?q‹?Kñ?c?9ÈtÀ ®¿‚‘ ?W]U?8ÂÏ¿‡°÷?Ü¡F=žV?Û °?:?eÖŽ¿|W„?ɵ?fª ?6[Ë?M´,>ºX¬?K1™¾pœ¸?àt¼¾vˆ®¼…‚°?Aü¿[eú¾Nƾr*?M: <‰»½×Äê<Ñò¼c ½¬÷f?>¹=¡!?›"?Jž>²‹¸?_›¿¤ º?[Ìx?Z­›?k±4?:ù”?x²:¿žb`¾ S’¾ܾ€‘¸¾Ÿ)¿ƒ±½r<¾yåc?S὆§2¾VYM?eß½³ãD?p#ƒ¾Åºfe@1fu?Hªì?/ÏP?p¦¾fK½®°½Ï/ª½¸ŸØ¾…+0?=$ý?*µš@Ì©¾Jx9?WCV?@†¾9º…¾7^¾6@?KŒ ¿qH€½ºB†¾Ï÷¾ÀÒ ¿‹q­¾^6P¾ (ƒ?Ü›d½·Ð8?CK"¾u¨c¿ž…v¿‚š¥?猿ogª?Ö¡c?-~N½„ñv½ü†¾‚é6?`-8?.£³<…¢0?ï˜>ÕÜ”?@¬5¿>œ?Ò”G?sݾ˜×j?eÕµ¿˜ªÕ¿{ÿ¬?8Úp>z×x¾ äо-›¾«­ ½Km(¾(™?T옾šeH¾gMU½‹>”¾B Ú?D‰¬?H•Î?Y3[?y¬¾d<½úG*?H•ϼë&?7©>¿sYq¿´«œ?Ý’?9sU¾²B¾`ñf?I˜½ÍŸ¢½å­¿žt‘?áyô½–QÌ>ù²w¿°?P©Û@'ˆÜ½×ô?Ì@Ä?=”¿˜a=ª7Ò?Iµ¾‚Ø?2¹'?ã ~¾²v¨?Z+"¿šŠ¿~ýú;J_?rÉ·?+€a¾ûö¾Yfv=Ep´¾€2.?Fiÿ?<º]¿“?(p¿‰9ª½² X?- 1¾㙿fb¿×Ÿ?èóǽ×fz=´N¨¿Ž!”¿qËB¾““;ä…@¾1 ˼…°P?bŒ?jó¶¾£Ó½–hh¿‹6—½Ú+ö?:þ¿wU=è|¿‚#½{Šè¼¿ó@¼Ì”p;¿õ`¾Âíµ¿Š ²¿•›b½š¸b¾?Æv=Rͤ?+ù›<4• ?1Õ°?cG–¾B¾UH/¿¨ý¾PæO?B7j½¨t¢¿¡Õà??N)¾“ÇN?\˘½ŽW¿{]@¾K\º¾&”?å.½nb?;es?]â\¾¬û?FQe¾7ñ{½±Ê¿š@9=D•8¿˜Ma½6m྽<Ÿ½Ádî¿ 7ð<‰áP?ãÚ½‡“~¾F µ½žÛN¾[b·;¹¸€?,ü>?bau¿–¯?ÞDµ?Ó#gÀx¦?TÂ\?M(†?Ö¸?W>t¾1?Åо>áì?_ð¿­³½Òÿn¿Šx’¿}À¾??Þ,P?,»C?Tox?-3»¾O5ö¾àY?mà¿A/¾˜n>¹º†?æŽC?&z‰<áRP¾•ü¿‚–ò½áH>?=‰>¾ƒ–©>çô4¾2¿¼¿ynx¿˜å?uN€¾VÝK?U²Ô¾fƒ6?T¡?¾‚'—?]÷¢½à¹?Ps+¾ŽÀ8½Œ{(¿‡Â^¼¬X?5ARA¡ÉP>–ðù¾MiŠ?<Ù€?_8 ?:j:?Ü«]¾D6?b;nÛ\?3¡–?I¥½hW¸ÀH‚¿…;„?VƒD?çݾ¥‡½lÒ¾1…ÿ¾b:¯¾ˆ(6¾W¾gèx¾¼?Fµ?MµJ½îk?-4ò?ª¬?ì“z¾*[½‘l¾{á½ÐЂ¾g¾•G¾F§)?AÊ?(1: ß¾m ¾?`Ÿ©¿œ¯?Tµ\?*b³?‡Ä?G£³½gQ¿Üp?Z•Z?×À¾•„¿–öú¾ŒŒc¿›F½”l?$±?>vÚ¾'™Â<×sø?!# ¾‹OÒ¿”g¾å¾?Cà"¾?Áð¾œö?Mö´¾V–ý?7‹?=ŽØ?g¬Æ¾nÂü=è|¿PY¿kmê½›ß =‡vÊÀqs¿y3À=ž?î=ø¿‘æ>! ¾);@¿M´¿{4=(Ô¾;IÔ¿‹6ï?Aéz¼%f?Fè=_nt?oÀݽŽÄ?DÑü=‹-†¿“go= +?>ä¶ÀÚ8¾}×?eÜå½ú;°?X¶ ?Bª ½ÈŽ0¾ W=VAè¾:>?„?Tåâ=b˾ ëô¿}°¼?5 @?TνñŒÈ¿ɽ¿‹iп„ÓŠ¿ŒJ[?oŸ¦¿‘‘=½¼?=ͼP 0?1¢L½…šœ?Nަ¼s>P½æ•¦?t˜@l-(CUí®C¹‚@?F—ª¿ƒÛ=‹¬^¿‡»½Ôxä?F²¼äÜ(¾!º?¿uÏÕ¿§Ú¼W¯À?NA¿†Ï¨¾{p¾ l?6QØ¿¡V>õSº¿q:¿–ˆŒ=òÙ\¾Ë‚¿…r¿»xÚ?ø ?¿Žéó;-€?EU?iè1¾7‘Ü?棾Eß:¿£x?(Ty?Þþ Ê¾ ‰`?K?n"¾%÷3?AÛ¬¾??]#Ž? B½”í4¾nê½~Ô?®!ö½Êhl?qÆ? k?P4=?hZb¾b…¾êý™?0ñ³?s æ¾aëž¾Œi¾yøP¾CMn¾f¿¡Í?X4ý½økô¾@™v¾°½çᦽu¤ ?EÖä?*<¾ì€?`+?&)ì¾?tž¾öð½Nx€?Eæ­¿y·î¾ŒPºu_¿Œàö?NdC½º$Þ?]MÑ>ñåõ?Mà>¾Tõ¿‹É?FR¾?[{(¾Ÿ¥Š½” ø?7!ѽª7†?>…ľéw¾Ú™¾ ü+?UêK?H(÷¿œ„Ľ‡#Ú?7ç:¾ɉ½Òòš?c,^¾UÀœ?X_@¾f&¾&ªÞ¾ÁaX?䃋¾,mB½uYh?4ÿû?MêÀ ,Á½‡†N¾LûN¿‰Ç?'H¾ô‚ñ?C¿ÿ{?YAݼäп~H¨¾nR?d¼¿\޽ê嬻ÃìÀ½Ð&‚¿dhÅ?eÆÒ½›c =VÈü¿i$?Añz¾M¾úa•?Nªl½"`= 꿟C˜¿\€O¾"dü?xŒB?Qìµ?BÅš¾φ¿¡o ¿lȇ½ø`?_’L?W¬]½ëô¿–V|< · ?)ÝÐ?Qáä?4ž’?FEÓ¾I’}½<§´¿Á¯¿€Ç§¾«!7¿z¼Ë¾=Q¿?AFÁ¾Bì\?„Áæ?¡¿‰ÁB¿žÆ$½‹‹p¾œnƽÅ\v¿‰,ѾAü8¿²ŸD=wa€?Mªp?sös¾L¨Ò¿³ö?6eÍ?Qá½ÀA4>çîD¾9C ?>­R¾ ¤.?`=¿ah?è8½åô‚¿lhZ?U] ?òÚ:¾4ûR»}ª@¿œ€Í?UE¾Ã?E]ç?Rn˜½ˆùL?R¿~¿ ¹Í¿ #º¾ˆ‹?\3Ã?åg½Çn?H Î?í!ñ¾Št?D¶?,ïá½³Þz?7Ýb½ª¾þ¾r¹¿zxþ¿zš¾ -‰¾pd¿C™¾kw ?a(B½òþœ=”HR¾qòÆ?Q?<Ž ?äš«?CÚ?I0&¾\e>úX?FP”½¤?R-=y¾gp«¼‹ð¿“Ÿ+½çØ?>Ù?Sé?RÜ=Æ}B??ôÄ=!‘ ¿‡O?\ZÄ?Gë~?>¸T½íÇÄ?VÓÞ?NF?a(?C^?]L¾Å ¿ƒ¢z>(¿hŽî?(HÀ¼Dà?$-µ?i[¾U*<•\è¾Rƒ‰?l¼?!U®?WL?280½Ü«¢?ç×s¿ZᄀÌM¾|.Þ?3k”?M[Á?ë±ï@(*p¾M«½v£ô>ð©¢¾Ä\>æ8?b’ï¾(\0½¬‰4?84¾ €½À²?ZHG¿¡µ÷¿†Î^¾†ú¡¾0¹6¾ˆ?l°È>‰ƒ*½ÎŽŽ?`+¿–·R¾=«-=Òæ?ŠÀ?Vr¿³©º»ä ?3¤Ã½áŠÔ?Iß˵?Z?ƒ¾1@{¾/Ò¾‚¿ù»…ó€¾;¤?g:é¾W~­¼T࿚Ò½eO,?2§²?_µQ?,Ü¿™Œ»?2ÄZ¼Z·à¿›ÛA:lݾW¸—¾,4?Aa›»_e?ªŒ½Qج¾vÂ@:'¾K¹A?fÌü½ôµ=ªê½>7¼¾Š91¿o’>r>¿}lX¼Ó `¿Ž~R¿‚oÒ¾—=T?bw¿¢¦r?v˹?l}í?U•=¾°j¾jûu?@;ȽÚȽƵ´¿påy½Bi¸½=Ux?6p7=Ý.°¾=ç~»êˆ ¿—æºá$€¿ƒ–¥=ûÛÆ½Š½® F¿‘ï½Q´?T3`=7,пŠÑ¹½­©2¾{@?D;D¾w½?ºD¾vE޾ ÿô¿–•佂Dr¾Sš>½Ø0N?;cнíB’¾³û?IZ‰¾QO˜?OA"¾—?ô‘¾O¥F¼Î˜È¾6΀\<ý§ˆ?'PT¾-…¾œ(.<l`?ωݾ§¤?./Ë¿{À¾ê?aš?.]¿5r.?;?aBò¾×ì²½Â[D¾ û´?T²n= Å̾ ÷¾¨n6?RV?b×§¾]Gº?®´>¾*쿊#?W,´¾C\ξP7á?Wõ£¾Yͽí$¿–‚T?`ž?Œ£¾"0†¾›u¹¿–º›?1cÌ¿ˆæJ¾þú<²ˆ?ÀB=¾0ÕÒ¿‹!³?S¿\¾œÐ?k9œ¾˜V?@aÐ?>ò7¾8µü¾22?0í^¾1ü˽ƊÞ?5v¾¾V–?I~¬¾oîü¾?V:?0•’?=½×?94/¾_u8?PCæ?^Üb¾·äý¾?Þ¸¾ª9?éDZ¾¡Ì?d« ??) ??Ò'?&ÇŒ½¨˜?Q;m½½”¾Uwé½9”x?SÁÕ?G•f?3È(¾é?8@G¿‰TÛ¾˜q?IÙ®¾M20?R÷¾…Ž$¾•é!?!^?eE?:*p½Òö?Cá×?\J¾˜¹½@ Ô?.{¿…Êö¾Lšü½{Jp?ÌŠ½Û˜6¾b D?RŒ¾¶?éû ?_ô=Ýäè¿—wÁ?[*p?KiŠ=¡>x?kÅ¢<¨È¿š˜j¿p¡ ½?KŒ½š•z?Kû6?_vn¾nÔ¿k÷ ?1j5½Üx&¿‘_˜¼—?â/½ô¸˜?9ºN¼á}˜¿”ø?bÃp¾‰—½,☿¿\?X¿ê¿…+°¿Ó~?1²Ú>å+¿š&?W‰¬?=ûø?Z&½ýP?aľŸ¼·à?½ìm½ísŠ?[-o?T8W½ïUp½™š”¾;ù¾ ·¿Ž>å?G‰r?9X?Mc¬¾'9T½î8$½é¬(½v%À?E–¾_Ê? ‹½¸¤?ÔS.¾¡ëq?Hà¶½ŒD?.qñ¾^)F¾~Z2?CL? Ђ?BÞó?P¹¼â°?m£€½$TL½X¯ ?G…¾‡n?BÕW½Å€½ü ˜¾Q=˜Öú?Bt½J=H?-”b¾>=¾€Š ¿™3ˆ¿ bp¾…óξǫµ¾(B ¾»O.?ÑZ™¿˜”?L«Ê¿ÅÕ?Oàè?g½v+¬¾,Õ??x†¿Ÿ?z½9 ¾6¾?O+¼½µ$Œ> µ¾~1¾1¸ó?F¸=½·äv¾˜!˜?VWa¿Ç›?QÖX?"pž¾mLð?P L¾1 ¿°Un¿tzó?-1?6Xg? ¿ò¾Cˆ[¿‘©©¾I樾…D„>öíý?X:É?4ƒ»>çì¿´)½{+¨¾pãó??ôu¾¹²¿ŒÏ·¾«;Œ¿§=;¾vŒt¾ØùÐ? 8¾ë/¾k?à¾SÑ¥?KÖ$¾¥²á?c¸[¾3ݼ^ˆ ¾)'\¿ŽxS¾°âѾs î¾+Vµ?GM"?-@0¾ÚØ¿?jQ?`Bø¾޳?ö'°¾œ§ ?=è?Kœ ?:§˜?༊1€?UJ?ØÚ¿¦*Ü?òT·¾p›±¾0ñ?ELè¾0ÊS?»Ö?Kø¾[ c½Å0¸¾$êe¾;Êí?$-Ÿ¾d ¾ ïø?ú]?ÚÅ@¿]&?W ï=±X¾T!Ù¿‚⤿‹Œ?gÕ}?N è¿y9ü½¼˜Ô?wdö?A>ù?oâû½^ø>\™?Ký„½„$D¾/û?ƒ‚.?B¶÷¿]ÂȽÿ¾¾G¢ì¾A;!¾Ðw¾€jœ=P´8½§#̽öà˜¾1?w*)½-x ?qÊÃ?PS8‰¿…ˆC?ðJ™¾:È=¢Ýv¿˜x¿€o8@6cù?Qtâ?<ëν4’¬¼©´¨¾$¦Û¾ŽÔ.?^4P½”ÕN?l~¾Çx?õîG?Au7¼Z“p¾oÀ™?SÊö?Ü0H½H¨|?k‡/?à›¾9*°½j̾!ïA>Ç›?=?j?ßõ˲?Ð{”¾TJŒ??…‚¾… ¬¾ž­À¾Z¬‚¾:íæ¾6>½aÊX?*Ù@¾šž?AÄa¿†ÕD?V±?æÝZ¿–ˆ¾β¾EQ©=EؾÍùV?O]5?:.À?S\5?7›”?ZB?&S³?ff2¿šJ?{ب?*t)¾ͨ?0Rÿ?’.¾o¿Žü¾-ű?j¥…?ŽT?2KT@÷À?Ûô¾n:•¾OÀ¾,aþ?8(˜¾Nö¾$Ö$¾Ë?»k@¾–qZ?Ôr²?>˜¿zÍš¿ aŽ?Löû?N2‘½Þþ澎§?Góm?Pïs¿“?E,Ê?jÃ_?C ̾]JŒ?>º<½Ž ?0Ø?1«?)ß?2p?His?Né¾ÿ\¿hÎÓ¾3i ?.âþ¾O 1?^Bؾ‘;¿ŒJ¾¡’g¶Ì¾¥ÇÒ¾³ª?E•Ö?D÷/½­îh¾½:¾©ß„¾êq¢?BÍ>¾Sr•½€V¾kµÙ¿†;r¾>›ë¿›€¨¾D‡?{P?,¿fèܽ8¿ù1ª¾i»¿„Àê?Qof>ª*¿†ø¼Ž‹ð?é’Ù=½x½½ÙȽ@ÝDÀã?tFƾæ²}½+ ?p/?;Ò$à?aÌ¿lÇ€?ÞJ ¿‚‡?>8¾¿\,è:'e@?.<¿”•:¾t¾(r; YÀ?LS9=Ãßn?I¹9¿ˆr ¾púb½H™à?Mp<¤µ ¾*L>?R¾¾Øì¼ÉpоØC½ÅØL¾O­ø¾q&>½Ñc¾!φ¾E¿_×h?4ˆx¼Ý¾¾Y.q<€?;{á¿„ñ%¾°Õ<:Ø?Cœ?o…¨?6bó½Ê‰h¾¢et½Rê,?ÐѾ?ƒо‰¿Ð¿püؾÆAW<Ó¢¾ ¬½÷"Ô?Ø“¥?u9¿’{¿€³Ï?OšÆ¿H;Ú?:ľ*³ô?Hƒç> ¿¾=—M<êÀ?CV½Y¤h¾¯@?k¼?C‡Œ=^˜¾0i¼ð?ä9í¿‚àÛ¾†í­?°„²¿”šw?TÉ¢¿Ž©Ù??UN½ŒSÖ<0çྪy@¼Ë¾t6¿Œäü?Iô?cI­?,ðk½]ß,¾´ò?U?޽ýÜ?A„Ó¿šÒ¥?IÂ?4cD?Z%4¿ª~œ?rý˜¾nÐT=\¾Z‰?\½oyÀ¡R¿…Ýc¾¡–½[ À¾†ƒ¿¬”«¾³?H Á?ãè6¿—–#?”¦¾›;£¾;X^?áP¿„Q?$®ô?_8G¾Ýî?€£‰?;Ľ?\r?,k«?å½S?è:E½-ž?K£›½³o`¾µ©²½ãpª¿„‘¿¾m]?é—¿ˆ÷Z¾¢¾¤k^?8Mо…R½DSp¾65?ëô?'`¾,Wœ¿‡¥Ä¾œ1í¾PŠN?K*?‚?ß¿?SWL?JvÊ¿›ýn;P@@?0=ð½”.º¾!GŒ?)ä<¾'Ä7?4 v?* оŞî?)ð?j>®¾ƒå½ Þ½Ìð¾2°?^»w½Ùá?:I;?Q“?Tc¿Ä¹½³¼È?„G0?ß(g@¸­Ÿ?1e ½R°?B ¿€œ¾¡B£?mè?d¼õ?MØÚ¿‹#2¿¨(i¾P)dCÇB,zN¿Žÿÿ½Ác½Q¦¬?0‰n=pΠ?€:~¿aÈ?p.n½H(?,«y½Ð–¾»…R½ÑHŒ¾~p<¾l'Ó¾drò?Joý?ÜU]¿|Ìk¿’~t¼ªk(¾vù¾Cú ½³Ëà?à¾b¬Á?8ÎÎ>,ˆ?[Lò¾V E?d_ª½é–ø?Dyª? Aé<~ƒÀ¾‘Äð¼½€¾2?nü9¾8Ãà?eâØ½D„¾5\¾H/2½Zëp?0­é½»o&¾§7:?RI(?6z?Bbn?/£z¿…[d?'c¶?²¾…KI?6#p¾KÞA½ñ¡p?9œO¿/ë¾ ’¿ƒ¸¾9ûa½Pxì¾0Ç ½‚»^?'øÜ<¸0?8ÝK½Å«Î?ÕOÞ?Y”¦?í"2¾|{¿‹Ÿö?Dh¾s½]¿žÓ­½‚¿¢«j?tPp¿pô?‹R(¾XÔ?B›Ð?E-$¿Y¼?X= vr¾´™t¿y«â?Wé½´D?(² ?L±¾Uå㿌x¿§Y‘¾TR×¾Ux?=+侸¦z?møÈ?#˜È?m©©¾œw4½3ö0¾‡è»Þ&¾×Ñ?`¹‡@+Ö;«à?-FW?†Öã½–.Ü?§B½¿X?bŽ,¿“Ò¹?lãÌ?8»½.(ô½Ãu?h½è½ýV¿v¨ñ¾‚é¡¿‹'H?Ö „¾g=Š¿–áá¿–:þ?=ë ¿v ¾…nz?y! ?C2 ?f©¾Ž*“½Ž^ ¿#®¾!}¨¿¦ð½¼Nl?NZ½¯%$½íD>?8²æ?!Š?x,ì¾…±½Ä®D?/p̼*Z¾wAû¾Ÿ\~¿‡7Û?kIî?U[î=6ø,¿öŒ?qÙ#?Ü(Ë?E2Œ¾*’'¾#ãa?YøÑ¿|Q?hò?ZwòA@ŸzBßBù?Sð'½ìSˆ?3$è¼A¾Š%—½£Câ¾L‹q=Äú¿yÖõ?tw˜¾ ;ù@=0þC,½`@=}m?ßîš?ô#:½ñªš½ö5Ò?= o¿„JG¾2§ª?K’ð?ß2º½³|¾Q*½Öçô?@bæ?^Œì¾]P0¹d?PØ=‚«þ¾'Ùÿ?UÛ=¾"—¾?y¹¾Lc¯?ïgؾ+df?½ç˜¿“)½¹h^¾[”ú½”÷„½Æ;¸½’”?Þ¶W¿~þO?F\®<Tp¾J,ª=W¸¾!Cc<”~ð¿ƒ4•¿Šñc?/šî¼Ò X?M’ô¼ýøÀ?9¦ª?ò—?¾©“?Y}4?>¾x½òs€?)„ƽðô?;&?Q ¾ ¾!µ¾Ž‘8½ÿ‹Ð¾‰#¾b(ü¾Œ”?Rßj?Wh/?ëÑ¿ `F¿™¿¬¿ˆ•̾ãg—¸?7…ù½Ñè¾–„?i’¿ ʽôh~?Øtg½û”h½Û{𿈽°¿™Ã̾<¶V?ªõ=8g€½½å¾9pˆ¾~àQ½Þ޾o/à?Rö-?*oP@8É ¾7 #¿„¨W?Ÿ ¿‡ž¯¾Uó¾.,¾B(½ÔȾBäo?^83?=±½t@½æ÷l½ìÞ¾tžÄ?VSܾ\P½ÐZT?:Y4?OäL?Ó—¿‹m?7l(¿ƒ`¾–ž?×S@?1ô¾Tú¾Q±;¾$ͽâ™l¼Rà¾ZZ¾…$¾™º†?ß05?>:4µ¾i¿„¸$½EÞl½X¼¿1Û¿…÷r¾g– ¿‰¦ô¾2!¾bÔ?@¾½œ„¼?0?}?NÙž¾¢º½$ôœÀ‚5¿Œv›¾ú6½‹Â?cV^½å®Ø?AD޾£N¾ nW?Fö½Ü@?"H¾ªÑä?N€×½§_¿™}ú?gWÓ¿‘а½½u„¾­e?½°¾¿‡|V¿{ôØ¿Yî<  ¾8rç½ ê?@qß½¸æ¾5)½y‰ˆ½!ø(¿e †¾;’?lL°?J†W¾LÔ½Ý Ê½ˆí°¾×v?ƒ.¾<)Â=^$¸¾W„^?N!?;¸µ?A“"½œ;ð¼1-P½ûÏî?\J?æ2(?€b¨¿Š¬Œ¿~T¿šŒc½†¹D?3Å(½œ½¼?>€?vÛZ?ãWq?î1ã?L£–½v¤?LÛ¿jœ?E8é?åƒÖ¾Hó—½J£X¾VƽזԾ·ú½õ^¼¾Q°Â¿š›¯?A„›<]À>É7û¿Ô¾ÉöÜ?ö>¿Ÿ¶Z¿üÏt¾š‹P?\Œ¿ l?7\W¾£v¸?|é@?!ýJ?=m*?O¼j½5Q¾O¶¿x l?`á½@WT?Fý¶¿„1×¾MXz¾´ z??󸿋[¤?T%ã?Oþ¶¿¥ g¿”—(?$¿ ˜Ö¿œ•Õ¿—zc¿¢o ½Üð?4"ô½ÜÆ|¾ûÙ¾IÑ[?:‰Å½†<œ¾-$¿pëC?0âP?S'$¾<‘¿‹X^? âپµ?Òsì?PÅ„¿–]¾ †T?F ñ?[x?N’ ?6 ¾·“‡?;áƒ?EÆ?.¯t?>¾Ô?W×Î?NØ¿™{è?!&ø¿‚—|¾Èå¾&„e½ðCR?Næ½ñ×\¾;‡?Z[?6U?C%µ½þÅÌ?ËP?óè¾oŽÖ?'ŒY¾Ž%ô¿‘–ˆ½ä?r>¾N ¼ú(¿V?Z]Š=b§?û¨¿Ž9f?v2z¾!'°¿pbã¿„üÞ»†T ?Lx?ñ@A¤@Bŧª?Dø„¿|M‹¼Á`¿M3_½ÊL–»·n@?EJÚ½½¼sP?MÚ>mÏ¿’࿃aD?夽™l ?;/㿃\Û¾ºÇ¾¾ K¾.Iç=·ræ? aO¼åuÐ?K¨F¾(‚„?ç \<÷·°½|zÄ<ép?U¡œ¿œMP?M¾=ÅÌ?Ýb§=<ºt?+Š,½U`¿Iáb?Y;F¿óî=%Ÿð½´Jæ¿|âD?Bnâ?l¾)™?h„(½5@hº$?9Ô(½Wß$?G[2?qz™À®7?aÒÔ¿¢,_¼·ã€¾›m?Z€@?UÕÞ?]Ï<¿¢C½ÔP?0Œ<¡*¾)Þ?G¨j¾k=O¿…ÐY¾“Èz½4qœ¿“ A?g„²¾r×̾ g?¿TT½Ï³¶¾|à?ô?Û†?P¼|¾¢‡ ?2ô§¿¤¸Õ?M}¡¾—Z¼Dúp?Ãrõ½3Ⱦ!¨?a¸$?3Çš<‰p¾]…¼Äc¿Á+?t1 ?èx¿„Z}¾caz?1`†¿œƽ9Ž>û:™?cO’?0ÁL¾i6?D˜¿‹d†¾¢ï*?R¸¾l'¾½ªÔ>°«¿k6Ü?%~<¿–<¢¿“Š·¹?? *¿œ…¾?¼|¿w¢É>ò½¾KÚî¾y<Û?KV?é{?>®_?8ð:¾Fâü?Iþ”½ôЦ¾“ ?nd›?RÅs?g³?%¢â?oØ?1k6½ê£H?Yž~½¹Î¾5[·?_„¿¢n¸?[è|¾ÓC¿|Î?¾¨ñf¿¿Ÿî>Íþ`?I()½Æ†@3ëš¼²§¸½¤,ä½(½X¾‰¨¸¿…P?-“{½”¤¢?Bhð<Œ°?QÁ“=C6¤¿vªz¿iñ¾X—@¾W±þB•åAB[zH¾‚Ü?mð4¿{·|?tÓj¾#™D?Pûû¿ª—¤¿Œ“¬?äõ½Ì.>?XVÀBñ!B‹–à@·Òf¿žU¾ôa¸½ëA½ÅŸè½Ì¿¤¾R¸ø½2Kà?¨Œ<àX?J/>’…p?/ºÅ¾€“¾ç ¾ƒ˜@)å½»2Ô?Ƹ?aȨ?äKÏ¿x^§¾”¡´¾LÈ?6è£?Lôv¾ˆgm¾Llf?Íø?>¿c¾.\¼FÆ€?L·r?`³5¾‰•̾&;ľm¥s?[óÙ½àØà¿qì?A8½5Nоgªf?),s??ëh?tCÐ@'?Cf?ã1? ²¾Ä?b¾,“ì?9>Ÿ?=!±½ô¢T?2D°¿Ó*?D&r?Fˆ¿¼7¸¿›â±¾T9y¿‘Iß¾–bp;[õ¾}š?VëV¾­–l¾>T ¾×U"?8å—¾¤¹u½ç¯À¿F?EÎv¿”鮼6æ¾|”W¾š+h½Ù3J; µ@?O&?T©Ô?HrX¾9\>óÑK¾¤þ?H!T½‡½ù`0?g^Z¼Ñéè½cp ¾;‚¿„ ¶¾€l?Oyz½3©”?Gñ¸?8¦†½Ÿ–4?®Xª?MÓ¾8¸&½ª&?'Oã¼K¾ ™?I[¥¾7ÙÛ?@µv?3zi½9 ?I±ì½BûX¿ 2¾„uV¾€‹$?[-p¾‚hÀ?Gð¦¾~¯?RXá½Ûߤ½Fl´?̈_?Û´X¾–z,¼ .è?6ª`?k¾$Fv?lØn¾nÖY¿Šiù¾å¾=Ú¿˜2H½É3Œ>Þt?4žÉ?e¨¾rØ¿ŸÖê=rªØ¿¦›#¾¿—á]½Æhx¾´g?/ô?P$Ü¿};¾¾œ?ô9š¾—¼†?`™N¾9ÞR?`u?Ê´?Q&j¾ÿ%ð½_„?)~ò¾¹?ò¾=û‚½Prl?Lä彈ûH½úŠŠ?_^¿‰Öl?z¼!?<5ñ¿0Û¾ÌY¿•qF?R?t]ö?êܽ· ?&z?d„tBžzA§gx¾Ax©¼RÐ?sZ^?I×i<‚0X?X‡6¾‡O?i¸2?6I ¿ü ³¾>ð?æšBÏî?Vº“?É,¿„T‡?J‚Ý?Mо€z¿ƒnu½Éx¾OJ=¾„sõ½{cÀ?âŒB?ÿ{l¾•ƒ<°—?R€r?ë*侢к¿Vî¾›…<¿…¶,¿ ÒR½$(?K4ø¿“X=¾b'?MÀ¨?7ûÍ?Opľr˜F¿EÔ¾EúÎ?N¼Í¾^èù¼[-P¿’¹¯?Bbp??lS¿Ÿ§¾NI¿‚œ?ã¾B¿Øb?5áo?H掾2×¾SÌþ?Aë¶?5kÖ?Xår¾ö£?6V?)– ?> ?Q‰z?+=澩’ˆ? $¿‡j:¾ˆ§ê?L7$?Óß±¿†3¿‘€?Qø?×]=¾•`@2'l¿™¬€?4'`¿¡2j¿£zð¾ |R?Y;*¾#²|¾š{¾œ„?!% ½jîh¾W“!?÷hq?TW¼¿‡³Š?‡ ¿ˆ2O?/k?QY¾qÛ?îªÅ¾!õÚ½p¥˜?ÝÛ˜?5üö¿‘±½ü©Ü¾”Ot?8a¿R¹Å½ÍÃ$¿‰z¤>U‰¾½§ð??¼‡¿”ï?¼ˆ9X?álü¿V?Q”}?‚M½dlL?i„c¾ ¦?i}Œ?7Šš¿|Ä,C¶uAnZ¿‡B¢>Â6¾L˾$¬?Fs›?oc¼Àýp?OVH¾x8¥=£¾³”p?DÆA@ªC7ÍÜB­ç¾GN_½ Wˆ»p=À?2PÅ?hSj¾.tN?7sÚ¾#˜ˆ½ež?\ß0?[/?Qšd¿i['?@Ö¾¾…-ø¿©ßî?ƒoR?H#…½Ž+„¾;fq?í¡ó¾7¢Ó?dhH¾Š‡0½ŠN¾ð…?P'¾>ÕA½A¿5Ÿ¾Je?#L˜?Qá?%yŸ?áj^?6Õ}¾—‚Ç?QÃ?s£?ø‹¾e ?CÖ,¿ƒéN?È´1?4þŽAœ3Bf ?JrÈ?;²¾m¢…?eŸœ¿¡/Ø¿Ëã?YÀ–½.¦¾ŽO@¼öqx¾Â¾&-Ö?×c£¾|1’?8¥ý?Kõ5?D-+¾*D¬¾"ÌÙ¾-Ÿø?€Ÿ½s"?ÝØ??Ã!¾„Z¾¾ õ?9K«½ð© ¿–êA¾r}¤?Uf¾›§¼¾B'¿…àÅ¿¡¿rù˜?8_½¾®?,"Œ¾ó»?È?„Ä;?>"L?Z¤¾!“Ù½y`¿‹'?õ ÁAß&Ac¢¾bb?cÉ~¿—IZ?äÁ×¾lÒŽ¾T[÷?.+`?¾„î¾ù¾Dß?Jü?.dº½r"l?,_'¿Šß?@s »u%?Öçg?OÑ ?)“ܽÐÂÈ¿šã¡?Ò¾ƒùL¾17X¾fV®?6lD½±š¼Ì_ ?ç"À?BK¸¾wh?FŠv?E¾5M™?Kýt½áÝv¾ x¾K· ¾S w¾³Æ¢?뿆½?TüŠ??Ä¢?4ã½R~¾¢º‡@=!u¾†eо*tݾ—R?;JA?M‘,¿Vˆ¾|õ'?Ò ¾Ͼ` ξUlj>Ô—&¿‰á‹?sY?Dê<½h€?=®?ƒK3?€%¿sÚ9?Aý°¿fÀ?Z\¿‚S޽£˜<¬d(?p°M¼Ó%À½Æ‘F½Æp&CqïÉAO“?f¥e¼y’À?CÊ<°„ȽȱÎ?A%i½Š±ö<©^€?lÊ’=up¾‚eͽŒ ?VªlA¶Ê»BÕ^A`4?¢h?€“Ø?E8Ê<¤ˆØ¾b$å@1-—¿Ž¤½¶qо´ë¿€e…¾dC„½—,¾krñ?Чk½ÑšX¿ô_ç¿”Á ¿†Ká?Da“?e).½Ãv½†@â¿‹=u½ÌØD¾1ú¿m ¼?ÐÉà?a¿ˆ<Ⱦξ€ ?OÇr?5(?bç¢?Qöк0:?ad„?)׊¾$·¿r Û¾£×ç?<Ù¿—"¬?d4¾]v?Ü´Õ?Gñ,¾+0¾¡š?"J¿ªE#?W¸`¾`ø>‡Á˜¾ƒ6Â?_y8ÀD¿‚š½*÷ø¾u-J¾ Rž¿‚+¤?7¾kð?R€¿?=ò+¾@\¾ŒñB?ôd½£Ar½j\à¾@S¢¿}p×¾N/ ?8šd¿{ƒ ?"^¿æJ¾šV¢¿¢¨èBØ*™B !@ùeô?:Ÿ?[Oš@$Hm?Oê?Ä]1?Hƒ+¾¹=¢?Uʬ¾øín>¼[¥?%%u¿‘)¢¿˜éj?Q²d¾4£d¾;«&¿”9¾ Ø~?Øn¿Œfå¾9Xì¿+Ô|¾E$Ô?[At?+L_?H¡’¿5~:¿Œ1`¾dÔ<¿5¥¾ å?/¼.?æd-?ftb¾‘ì½É/B?>¾¹ 5¿“—œ?{ðŸ¾QäP¾|…\¾ð'½Ø’¢¿c¸¿„6Õ?K@?>ñ ?p?M«¤¾aâ«¿¸f?PÒà¿’Hj¾Xô×?@‹¿M¿”ˆT¾b|\¿xšw¾Zän?5Ì¿›ò~¾ a8??ú:?>5p¾3Àä?s¾€ÒN½}q`¾‚N½ôéª?Mú½à­¾=k°¿‚áþ?Î @ „?VŽ#?Š|/½î~ ?CÈv?ÿ¼ø÷`?Ož?éXCÉßAB 6½­R¢¿j ?LX=¥Ý¶¾ƒ¶&<"±P¾|i×»´Ö€½°h*¼Í§@¿Žû½MYh?;?o SAÇe¡B%¸@´z¿ss¬?U8?gÆœ¾xã“¿| ?çŠó½¼[ø?K­p¼gÚ?tǼÎ?@=8õ0½•§¿£¸î¿pç?LY"¿ƒå¾O„M=3P?TT⾜”š¾¡5=„ó€?<ˆ »P©€¾uBm¼œÆ°?%Ö?ë!2¾O¹?k+,?."J¿‹G‚¾ˆ»3¼SBð?; 2¿‚|Û?R(E¿…cN?'ºž<¦¸¿¥[ ?g³?"7U?p9?ÔK?ýýÎ?/~Ø?bÑ»¾»ïò?Uàᾘóù?H⼿§aZ¿py0¾$X½b?¢Ù?Q(ù¿†•ß?†Z?E1,?€_e?C©¾!J”¾¬ßS?t¦¿‡7a½ˆn ¿Ž X>Pwˆ?GŒ•¿w^ª¾gà|?\ñT¾>ƒ¿ˆ€?KŒJ¿ˆÏU?Ñ&¿½¡Âf?g?ã–?‚i¾;’¿­L½—@v¿.Ü"¿lÜ´?4xµ¾V¤.?.›3C¸ s@Tv?O6¾PA½Û*¾ Ý¢?XJ¿›yP?\¡¿Š$½ÈÅ?6àì?O‘*?5wz½Ïc†¾jå‹?àÊx>Ê‹#¾X€ò?.¼œ¾šæ¾Œ0¶¼æ\ˆ?B¾¹?N„t?\ ½Ï¡Ü?PžÜ¿v,?àû,¿’?(Ÿš½q²˜?)[<ÑJØ?H‘¾æ?;÷sÀ Wz?R\¦½´'¸¾pΠ?5¯hAŠid?¤Ò„? b½=eP¿›ak?4¬1½ìž ¾ˆ@;?Åоó¢²?‚;u ?F˜½3Nl¾?šé?LDw¾¡Šd¾$?Ä?N‚?J#š¾!\?:i©¾88m¾W)k?TU^¾d•?%Ö¤>ô°½™‘"?0Áн²‰¼?,v?.f~?ov?ÚvÓ½…x¾…Êê½öž0¾Ï>¿i™˜?fQÇ¿ŠeªÀ½1¿‚º¾FŸà@wnYCæGA>j{?m³è?_ <½¢‹:¿z¡û?,X¿ˆ¿/¿— O?íB¿‡?wÛZ¾Ââ½Ø›€¾G?cB²?ßn‡B¿åA¦†?è:£½éjh?Jmî? Øn?ZJ½~û¬?<¥ >®à¾Wô¿š¼=wº¿Dö½ù´¾]ÐÝ¿”k©?@@Œ½cð>…b?'áš¿˜wì½ùúZ?Òñ|½vP½ò³&?òä¨?+d¾²F¿ªfY¾VWϾ>DÖ?w¾¿ÿ‚½žˆr??oF½öHü½Æ[@=œ "?ÎҼƈ¾'Ô4?`Lt?^põ¿‘ž ¾ž'ž¿ø?$ö¾O+¾©;¿x*<ˆ(¸?üÁ ?6Æé@0’ÿ¾5?‚ì¾ô¯¢:aµ?(§—½xe$¾A¤?<¸¿›\Ž¿‘ŒÆ¾éô½m8?D¼?}š¾?Àv?a\2¾¦ï6?Ú' ?O3¾QQî?Hä½Ýaü¾—è½ùS¾ ¾ "?Øä½Ñ%ú¿‹h–¿{¶z?È8R½$DP¿"Q?X)i½ã”&¾a½¿ê2¿}£bW¿“¼Þ¾ž@”?I¨”?0æÅ¾¬ü¾´—º¿ŠÍ«¾‘5*¼p¾w?CÆÖ¿–¼?5ܧ¾p8òÀ}Ê?,@½Þb¸¾ÐÀ½®[¿›¬ú?]°ª¾;±,?lݾ—ˆA?[n ¿•`ü?å½ô9н¡ <¼Yp°=K‰X?MçI½?д½ÓÀF¿ŸN»âÀÀ¾70½ñ“`¾!âu;|œÀ?6¿ˆ¾ Ïz?x A›CÎW@Ý?NÛ’?u8l?LZ=DIè¾NwÙ¾|9ܾ 6¾óR??0ž? Ø4?KƆ<ŠÚؾ7‡=âdt¿‹ø?âb~A•£s@Êaö?Ø’Ñ=XŒ¾@¿Ž‡í?LY…¿Ý?¯ ½ÐÞ¦¾ɾô¸½øÓ.?r?6¥;¼ìU(½l(¿‡’ä?8:Y½Q„¼¾›-Ñ¿‰Ûä½ëãœ?A“½‘nнRÔ¤?B “?Z‡V½ƒÛ½Gà¾îÕ?Gsо$íµ¿‚¾Q?:³°½ÂË\¿š3ý?b$û¿’£Ú?hGq¾¡>…?T¸ï¾‚Xú¿¨59¾"Q?Hž?á I½£Œð¾š¾â„?L]œ?_ãb¾gò:®x?,÷â¾S2!¾’«D¼ãaP?' ‰?_TÐ?}o¾ÃÀ¿ˆz¼¾:u6?D«?P€?>þ†¿‘)¾ƒl7¿œl5?62N?M0À?&…¢¾A;\¾t?ÚBå‰P?2 ?I0ɾ(G?S¶C?GTW¿…ݽÒn¸?P½À¿—¿–Íпœû0½ö ¿¤­B?Sæ!?&R ¾Ô¤¿‘B¾?%±?NS*?'l¿sýÚ?I@t?ÜìI?í¼¾@û¾%¬?ss¾$u?]õ?&?Fß?1y3¾/2ò¾¶Ë0?GU¶?!‘˾c5[¿jFÓ½ qŒ¾¯fÊ?m84¿‰÷?Ø{?Öþؾ@¿‚>ç¦M?iH…¾¸?bôð¿6½ªûÐ?4WP;¸s`¾š‚¿‚œú¿­¡Â?Jb—¾{µ’?éÕØ>þ“.¿ms¾˜„?+Œ¨¿–Þâ;ú2À¾{A?`:ž¾FÐ?Zí\¾Cá½W̬¾R€­¿t&¾”53¿Ÿ…s?E˼½ h¾ÑE<ï(Ø?%[²½ad\¾[òw¿æŽ½Îþ\¾N?Õ©,>å—¾‚·&¿} ;C »°(࿇@‘½£^?>ã˜?gŸ?HúÌ;¶º`?E…£½ç8ª?\Âæ¿gy?[K:¿uB?KYNA@“C,î€@ýr? ”É¿V꽃‘P¿uqŸ¿”ôù½,u¤¿—þ¿y á¾~‹¿…µt¾`¾S½õâò?8ÒŒ½HP¾´d½àGÄ?ßÚâ@¶3Á?M>=¼Å0¿™—Ÿ=,/?ó.(½Œ¦¾v]^?RVU¿½½å¿Š½Öä¾`«“¾žðë½-!`¾‡”½¹M¨?"%ž¿ŽH‹¾“Úu?M.¸¾”ƾ±—¾+Ž?Iab¾[-??XN?%JP>Ji𾊿|±M¿~ŸR½ò‹Z?(‡­¿f2¾¾<Ù?zü6¿šn@½ÿ§b¾Æ~4½„¾é¯?V®¾wo¾$qj½ìŽ?iö*?9dl½í¢Î¾Sè?_áI?U©=j@?3´K¾³Eí¿‘¹Ñ?i]~?ãØb½l?ߨb?lžJ?`½ÛÚŠ?6Íf¿•:î?)2ˆ¾¥¿è¿‘².¾y ¼Ú  ?Cã`¿{TA.³ÅBëhõ?7}½2ûxÀ jª¾®§?ßÖ?b=E?8þ½døð¾{ïÎ=xq@?*66?h7'¾‘US¼§Q ¾ž?\l·¿˜ ?ZÀÕ¾ÓÒ¶½¦Ê‚?GZV¾^ÐJ½}P|¾:°”?94½Ð’¾2âÔ¼=X`?` Ü?EÆ?!Žø?EÖD¿ž­?îãi?ÑËŽ?ÛBÀ?„νÑD ½ö>?a–?(™a?\JS?%æ½½½5$¾¦mo?[)–?J{Š?Ä…ð¿ vn?g+?5…?ßST?%î¿› ¾!Úg½¦Ø½§×d?Yô?Çc?|E¾-o3?^öµ?.˜ð¿ƒ!¾®#&¼í8? tê?HÍÈ?= ™½`·¸¾ª'޾X}ž¾i»2?_O€?!>_½’ñþ¿˜—?^aã?ÙÖ¿ö¾¥×Î?N(è?M>è¿w2§?1âd¾&ü@O`*?¶!¼²·Ø?yŽÏ?XìH½ž-d>°›¸?„ë‡?T§Ê¿NßúºÕŠ€?vïñ¿Œ¶Ô¿†5ɼäP?‚ݪ?ý¿ƒðc¿­*B¢ C{OAK“?zZË?S ¾*cɽââ~?OU‡½(uȽÌž?ûdÃ?ÑÿÑ?Šn?ãÒb?ß½ªÖ¸?n‘„½­&T?c%š¼&Ð?Ý@)w¤?m˜?Oæg½¾,¼Ø#€½³\½Ç= 0?,§þ»b¤@¿’–?JtÓ¾¸t½²“¢¾Coú?|ØÚ?5Äú½(é€?PK=“¤?T_̽ÚÃü¾£?g¶€?4nþ¼&³ ¿Ž·j?I£¿”W)½ÊÖ½¬ÿv¾'ùí??…>=Nc¾“J½Êú¸¿@?rf?O¼¿‡Ã¥¿‡{ë?ƒï4¿¢,?Mˆ¾Ì㿜/È×?Nª¾ýe?Ò”u?M?S:?è!Á;²L ¾.“¾›­¾…Ö¾pé¾’L?Q ¿Œ(?PV?<,½‰¼F>3¤p<§ÃX¾_º-?p0U¿E¦?DêȾU¨Ñ?";A\òšB_®³?Ԥ뿅ïÈ¿¢ ¬?4¿˜àT?0Q¾-U7¿ŠÏT?'û†¾›]ˆ¾›ÆÞ?dzÚ?"B@?¿¾GB)?[ô½?$Zé?@‰A?Î1l½Ši¿•/¾0w?AúÔ?XÖ¿”«*¼µÞØ¿žÃŸ?æ|ì¾±û½ˆ·`¾»´?]Ê.¿i§H¾~•0¾ ±×¾#¾}8b?4?åÖ’?0¤¶?0úp¿—à2¾•V?gü.?܃?ßY¾‡Az>7‡’?;í5¿’¼y?3³>½œ”,?4ö?\|¿‘Õ¾1¾÷¾T?!6ê½µƒx@(6C?;Û¸¾9щ?{=5?«:À»Û¿–øÌ>0WX?ó ?9Â?1þp?LcÞ¾;ƾ’Ä?3N¾&Š?+®Ô½îlð?\µY?é"?3AÞ¼£è?,Àœ?OKɾ“Ã>¹H?€|¾’k‚¾+8ù?`>™¾‹#?€k?d¿k¢Ô½XCè=AM|?â§w?[°‹¿€»ûO@½™IÆ;¬F@?jc9½0kDÀ(ùA·BÍ–+@|ÛZ=<½„?…Õ¿„ÆÐ¿XƒF¿‹‹|?c=½›£”?uì5?GÁ³?k~4¿¥=(¼„ŒP¾ö”?„HÌ¿ g!?j ê¾=<[¿*ú=¦.? w0?0fú¾>J¾‹í¾Yl?€1ѾhùÇ?o•(??Å$=Pƒœ?.ñK?i¼¾ý »)CÀ?@O2=ïàJ¾™ÀJ¾œ­u?Uü?Zü ?ÆA?kë?!/T½A{¨?E¿¿‹¯¿š ¹½Îh:¿™:/¾Ù¾o«°¿yº<¾®7Ù¼ì9H?t€½ÆVv¿ž…q=3H?Eð„¾?S‚=ÆØD¾%2;½Ãw6¾“Ê?}f¿m@½T½Ô?Ú\Ç=7¸@•7ŒAå´?†ë?ôqG¾2_B¼«ÉP?-þ½A(¾!‘ ¾kÃ4¾ù0>£cB¾€1n½ª x?'¨½1¹?'áô¿…-ý?=â?DDú½ñè¾Aé ?Eì?#K?+s&×Dœ?¹Ò¿›5ì¾i¨+½ù °?!fÌ?å¬ã?á6ÀK¢¾Q¼?]ââ?GH?¬Gv¾‘³¬¾šò¾—Bå¾_éŽ?3ö½Áˆ?Ùľ&G¾¨^°?Qct¾ž0?@ƾT®è?MáŸ?õÁ¿ŠË¾œTh¾60Ø¿¶õÔ½±?ÝE?qS?XhÅ?dÌ¿˜SS¾ ¬?æ¨Ä?2é·¾§M7?S7}½Æ6¤¾¥Ôο !I¾ê#ú?ðv¿ˆ˜Ä¾ž(¿ƒáw¿‘f×?L÷½?4ä¾Ä ð½…2¬?…Ø?]`¿’ 8¾'­¿rèÛ?^¯½½Œr¾›Ü¾{¼ °?Z‘zA?]B<*tC[xBÇÐ~¾›âAÐa(B‰W@;¸Ã¾³Ë<ª°¿–«ç½¶0?WU½.FÓå7<žè?Ù¥¡ÆýÈ¿ˆ¯á?ZSª¾‚5¡=>S ¾¡úJ?víP?9Œ†¾]Œˆ½ñëú¿w"#¾=€×?î8+¾^k¾5ô¾Ýæ­½_Þ”ÀÈ?BÆÁ?&£L>ÐÖ¾žI¼¿z˜D>ý|€?búB¿Ÿ½Æ,>€<ì½ÐÙ?u•‡¿“:¿ò|-?Oö‚?s¾*EÀ¿’†"¾y!ú?h‡~?×af?GxоP^?– ¿ Ÿ0?Tk¯¾X Å= ?TL¸½¯¶†¿ŠÖÏ:Ôn?<­¿Ç¾H:n?i%ñ?a©=½&Ø¿‚5e?X£v¿¡ýŒ¿†ÿ¾N­È¿‚žm¾@Ð;‡ÎÀ?CÚ0=ßøz¿¤ŽZ½Clp?Â_?Ný)>¨Š½ÌŽ´?3qÉ¿‘¢?6n¾ ¾rH¼¾k™?(˜?Zÿ¾Q^?w¿Æ¾+Š ¿”"-¿6(½ƒTX?3C¾ÄÕ8¾îzø?R!=伂½ô\?þ'¿ˆøK?÷s¬½¸BH=±É¢¿3ê5;PÀ½F98>ª@ú(TAøGyB+©é@ß{Õ?æ•B :qBƒz‹?X•Î?âv¿o;@?U}¼Ü˜Ø?*UGºõ†€?.=„ʽ¿Øà?GQ|¾Ša›?zD¤¾«z½‚sô?)ð,¾j¾8‡p¿ïb?[V•?]&a?4i¾må¾ø!@8Ñß@øû@ÿ;+¾vHu½Þôª¾IÛC¿€gK¾'À¤?cÍ¢?&9@=o] ?däÓ½§¤d?@¸¶?Jð?×Á•¾Î0¾¥¹¾á ¾£ƒA?WáØ¾4y&¾XE«?:ÿØ?3&<¿èþ¾Ky?RýM½É¬È¾B7¿‹%õ?]»¿¯ ?Naî½{¾k8À¾9»å¢¾<ò½ï8¬¾…‘Z½È5ä?AÐH?R«¿ˆ<?KC쾇޺?Ý#x¿kº?¨Ë?p6¾”ƒ©¿†<\¾e¶ ?QFb?牾WXJ¾mP?[3??!ª?VwÔ?8$¢½(Ù¿«ŒQ¿q`Þ¾„Â’?èb¿‘PÅ?Úp¾‹ÁÐ<0>Í‚Ã?Q£M?S‚@»Ò÷À½”h½G¡¤¾G¸Œ?VöÕ¾ìJ=8Ô?F8™>ù»½Žït=㼿]\žA·ŽöA¦rê@6â?S€)?pö-¾þí¿ÈÚ¾„˜£½þ‚†¾!5t½€ßä¾Y<Š¿‰;ˆ?,½B?hj¾É“½Ú¢ü¾Œ!n½B9˜?ñâW?Q¢Z?FÁl?{È\¾8éë=ÌX?{®?O ?HRô>–Í?1­V?ìdÉ¿ŸA¶<öX=þë`¾¬b¾y†À‡¾w®?di>¾v-K?1°½Ë’?]jM¿”IL?Oâ¾·¾€?u O?!LŠ?)PªÀ)½î÷Ü¿xK?t¡D?<,ø¿{2ȽÏ¢?Eq?Ø£¹¾M'Ô½àü?b{²?57 ?ts¿îü¶&h??¾Ù¾)Ë¿¡¼½Ì –?0ø¾y¨ ?Së—¾!çݾá/ ½ྊ];¾ ÷ˆ?<â&½üÕ¾eˆÂ¼ÿ9 ?'9¿‡Ñ¿ˆ¦ˆ?S¢N?BŽS?K17¿’žj½×-¸?A‘?Wf¤¾ž?Tïì?($ä?:…÷?<ÛO?;4f?'²½Öÿξ°`¼Þöx?xD?_€´½ß£ˆ<¢à?7Ú¾¿‡ßÄ?6*’¾ŽÔ.?eÓ?dÈ0¿%Ï­¾;‡é?"Þ¾)¾ë"<­\?ÈVö>¢ ¿›.m?á?+VÊ?O€¾BÁf?^ š¿{š½Ë”?8Y¹?Þ?! ¼74¿’A¹¾+ ¿™A¿ÛK?ÕÇÆ?å°&¾wôf¾gî1¾jÁÐ?UHU¾+s™¾}‰¾­ö^½ˆÖŠ?+80¾éK??uּ͌?Sãy¿fE¼?Oÿ¸=Z¶?ø –?‡i—¾N9½¾‡¾¿zº¾—–¿€£ˆ½…ßνÏõš=g¾Ø?3’ A¶ ~@ùª-?î‰?>Ø?5öÆ¿—!7?‚×?#|Ä?O(¾%Ôn?‚˽ý „?{&½è†Š½,ìh?BY?aºË½B‚P?×Ì¿šË¹<ÙÀ?ëå?WX½À–D<Øû?8µ|½ÄÔ¾¡‘?/²€?:Þ¾$ꪾLB²»‡† =¸pÐ=ˆt?;¬«¿”¶Ò?+ÓD?LƉ?CO¿ˆ€¨?e3ö¿ŒT¾<»ô¿z4¶¼‡/8¼Ñå ?eÂZ¾Ì§á¿¡á?\€R½‚ÓŽ@¹k?Ñù½ϼ¾Âä†?3pq¿W•?~Zø¿…V?m¦?DÞð¾â ?3¿†å0½ï”Ƽ⌀?sæÞ¿vUF?<<0¼åB˜½†Z$?`¾[F¿K›?$Ñö½ÅÏø¾¸6½ü_L¾ØO ?Xƒ?»Ê¾z“ð¿’Á ½î/&¿§ZT¾ rL¾„8?ZÜ¿?C†¿‹5”¾lÕV¿Žv™?:3Ö¾Y&¾rÁ¾¶À¿¤?E½þ ½‘¬`?SÌ ?9Ë&?ê¼¾] ¿UF¿§à¯?S¹h¾„Ýe¾x$??Aê?\h˜¿Dν%ˆ¿ž'?äs¾›ßÎ?xT-?1ŒD?lK?Üʦ¼à]`¿÷‚¾Ÿ›?IMë?<-²¾LÔ>½Æd¿¦*Ù½àn¿–]Œ?A°õ¾Ž ¿ŽÉ޾V¼¿ 8†?.Øà?ð?¢¾²ôz¿Oä?׌{?D7ì?3çŠ?Œèv?@»º¼"ÿp?5öï?äÔl?>Ž–½Þ¬½¨:?2kE¿²(n?:Šî¾ ®»ŠÕà?·ü?R6‘¾; v?ïÄV?ŸŒ¾gWr?&OA¾!À°¾Eœ¼Ã>À?ð5è½ÝÒ¿©?^>ó€à¿Îº ¿–Ñ×¾’ÑW? M¸¾hm¾ Ï-¾6@½«]X?%š½yÏ¿¸;Ø?AÚ??ûú¾Ûœˆ?`s¾f¿„‘ ?b¢Ø¾›8€¿WÐŽ¿‡ê¿âɾMľž3½×ÔÀ¼_™ð?Tà?1˜? ù½AK¬?HòqAPBI?àb)<Ù.8?J þ=3Ƚ†h¿YÌÙ½™/¼÷7`¾t=„߬¾8ß=&÷¾¾Jù?g4?4’Ľ:ξ¾z¿ŠH¾8I„¾3ÿè?è­e½Ãò„?Fu®½×:^¾2;D¿Š^›¿”^«@‰ù¾1Œ«½!ñÜ?eg?=U¾žØ?^;¾¾K+^¿oêÓ¾vªñ½XPÌ;‘– ?[C>ÎD½ìt.¿Œ™,?K;=¿`i‡¾]콇cÜ?C¡¶¿o’\?-´x?;™Ž?%ÀÔ¾øI¾/s¾¡ýå?Ot¾ Žã?i}?WzÖ¾Eo5¾:Ád¾¦¿ˆÉ4?æ¾gç^¾vEñ¾_Ã>þô¿„ûǾ,Åø?cÎ,?7íɾ"_¾¡¥¿ƒ9~½oÒ8?ÝJâ¾\8ýäÐ?XàG?ת(¾«Sî¾*ê'?Ô”ðA7¼@”󯽥Sä¾ p̾\½Æ ´?×&,¾Iv?«ï¾^]Y½£\²¾¾r#¬?Ò@R¿€ Ø?:kÅ?8ë;y ½´’(?9Õ^?1Ðl¾aá¾)‡¾e\½ÖZ?$t?^ÊE¾¶‹Â?BÐv¾‡«?_îN¾¢ág?jf–¿•BE½ œ¾„œÛ¿Šáe?=k˜¾"õ¿žË?a*n@D½äþ@??Š? ?)¯¾cà ¾± ¾ Ú¾yI!¾¨—?[8?)â^¾kÓº?,6€?K+k>µCš?CÆÚ?:V1¿‹?T¾.?`ìd¿›ô°?j’T¾v&¾j(?HQ‚¾4r&¾?H?;ëh¾… '?Rš.?Î\ȽéZZ? eª¾=†Ú?h…޽ȭÐ??’€Q¿iM ¿”àØ?qy¾„ÿ¿g„ ¿Š¦Ê½’°¿–ÞŠ>V ?Bº”¿‰·é¿ŒU?s™æ¾E*½‚N¿Š¸¿¾G©L?ok£¾™½2<‚€¾ }¿‰ý{=¤ 4½’Ùô?)dò½iÆP½Ö–?E•c?]%V> 9¾mµ˜?Ca`¾wnœ?ë̾*Ò|?qV®? Q?u±<¿¡ü7=–pþ¾ëj½Mg(¿ˆÆ=?wµ?Û^†?_ÚM½¿ž?Lô ?-hS?^‰X¿†ú™=;4?à+t¾8Ј¾w¶È¿pÑ×¾1[ÿ½ÞT„¾9¶?yÏ!¾ohn?Qéð?Nl½ÂêÜ?²;u?RâȾ ±"½p^¾ÕQ½Ä0?U°¼Ù`>ÞD¥¿”…ž¿†(?cÿ¾lx¿~‘¾®Ã?kÑú?Œt?W†;¿šÃ¼>• n¾£H„½šŒ.¾•pB¦ÛB’?N Á¾…;¿…ÊÖ?/U ¾-/„¾¼ôD?`ç¾ 9~À-„?`?>+ù?L.[?TP@¿­ÐL¾GpR¾uÃm¾0Ì̾Cw?gƾ=¢¿­Ù½¿Á½µL½Òq&?+í@¾£½»EȽç!ô½›ˆ"¾œÏz?bŒ½þ9 ¾¾Å‹¾,D?$%=?.•ø?LµÙ?Ý.¼fæ0?JÒ_¿”޾8˜@½¯ ¼¿‘Q¿Ž¿fݾ`ÖJ@ xT?K3¾ Vf¾Åš¨>Q÷Ô¾L%á¾D–¿È?@›õ<Þµ€?+º?2u£¾ Í?j[&?ÖⱿ”‘,?10æ½iX?2k–?'Üq¾À ¾%0$¾h¾ä=4ä@‘Áž?3 >¾ß˽ç®?>!f¼¾DH¾cÑì¾›Œ?Da½Äƒ?ᡨ¿É5@?Hu+:è^?ÚýL½`Bè¾GÀ‡½ŽçÚ¾ðF?c‚ì¾òª½éDr¾qu»?]à¾4Z½Ö•¾¿{òÔ¼ŒØà?â¼Í@¶F?=&½¥Ój?äΙ?7Þ.¾ ÈÆ¾XQa¾g½Â¼T ¾<”Q?f¯0?\_"½0JX?AÀ?`éÔ?YÄÀ¾“ò¿ŒPž Ý“?$†½ ”¾3罪" ¿gw?fÓž¾-69?Þ/Þ? æÓ?ñM¿“ùz?E ¾ÁÀÀ?ášd¾Y$­?d±¸¾)’n?k®+?Mbñ?cª’?(Gâ?ZS¶?×¼Z?LP ?Í$ÿ˜ýš¿ŒtM=—è¾f¿Ä¿´q¾)¾90Í–?ìû)¾¦†Q?!P¿ +2?T‰À¾(v?`í¾µJJ¾ŒX¾“dH¾7â¿–ß›;»L`¾^[ñ¾•Õn¿Q’¾û@?&Lk½•†<¾g,½´:¾½'¸½MDˆ?2óv@«‚¾®˜½ºâè½ù¢|½ñ2?DrÄ?*†U>Ôµ)?N¾Äú½’«P½ÛŒ?mWD¾7îC<šà¾mí?]±:?=_9¾鲿’ßW¾ ¾™x?W®?Kl`=›U¾1¢ê¿…c¾R˜\½—@ø¾OμsW ?.ïx?Y^¿|s>¾+¯J¾+5Ô¾u«<¾<}œ?úÀ¾”=¿‹¼4¾ƒ3º¿h *?GN¨?¨%?O‡Ë¿V«ò¼¿&ˆ½¦\?Xšp<Ú%ø?q=…<¶3ؾ3@:Ÿý¾–eJ½Ô€?H㤼™ȺbU?óÎ?ðŽx?æ&?.¢¿‹Ë¬?92-À÷µ¾£W½«»ö¾*W½Ü?ì“÷¿ÔI?dÉ}ºâ€½¤`Ä< l ¾V¢@ˆT?‚@?u"!¾Có¼®”À¾/ä1<Ø|€¾–é}¾#+¿©M¿ƒ: ?.²þ?0ø²½æø¿†–¾]'›¾Œ4ê?2h@7¾Æ@+¶4?Q´¾;†â¼Ó¢`?å°5¾?6:?+݆?guë?¼Ø¾B€ ½¬aä¿•@¾gÿ¶¿ŒŽu¾¥b =]À¾„]X?! ¾|$Œ¿I¾‹ÿ¹?,ñc¾ 8¿‡/F¾î)Æ?Jdà¾Lµì½Q ¾Aƒz½èý¾qí\¼&} >ó×(½¬J?«T˽êR²¼$0¾N¾Š¾*0@? »Ì¿¶á?: ¿†C¾Nf½û0¾³,¾|Â? Ù¿?à@¼¾‡©¼?PŽÉ?”Ǿ‘Í@Ù¾WÎȾ³HV?X0¾’§½¿^¾½§¾Žû½ìz½À膾¨‡Z?E¿?Ú i¾ Þú?:âξã0#?"Ì?ã2¾Še?cäb¾Á:i?.Cö?H ¾ý¾´z¶½ ½Ü¾ ™¿iO½¼–d¼Ì¿ŽÒd?ó-£¾ŠØÞ¿“¯½¾¶ ¿‚í¼ÿgx;L€?ÝíBëäÆ@_V…@5–¾|½%l¾8Û?eᨼÊd=„âà?SÕ¾´Ñz??·¿nxò?5iÒ?|p”¾W);,|À¾Vé?‚Xؽähh¿v‚t¾—â8?PÓ!¿ŒùP¿qÞ?L ¿~Ò&½¡Ëü¿tP‡?E”Z?óR?Uä¿tY >íe@?o€¿¾ß™\½kD?ÙÑ/½&¾ ѽ%èŒ?9º$?Zÿ®¿¥Yº½oÒˆ¾OÙF¿€ ¿©d'?XÃá?@`Ó<Žâp¾¥Øà¾dÈ?K÷ǺÃR½"÷P?o„¾ß¾T<˘?\¸Ñ?M¥?>&¿“—·?6½˜@ò¿Žd«¾)0ξÂéÔ<þN ?)y½,¬¾8àʽÉld?3À?^6¾+aŽ¿•–,¾½¬¤?Já|?2² ½O ˜?Hí^?î’Š?Kîä¾t¾W0³ºI0?Ϭn½_² ?°¾Qùø?ó½Ë猾Kh?€‘%¾Ššn¾L;뿤辌)¾«w!?[®Ú?êº:¨Ù¿lj:¿‡GŒ¿“̼BG`¾ Ú?F—=¾]¹z½ÿ¢|¾‹C»¾\ð>„̾)¢?@lø?\RÔ?`òF¾l\¾Ÿ|Z½i¥˜¾«¼¡¿ƒ8m¿J ¿‚Á`?Wf2?1œ‘¿¨Å´¼§?ÙÜU¾w!N¾1"¾[.¾?9?ã˾!祿…ßD¿£ ²¾'(€¾—¡>½ *˜?/²¿…»¾J¤½åüø?JïX¾ ƒ¾ÁÅ›¾"/¬?O޾KÀ„?,S9½*?-EÔ?H4??;l?FÙÍ? *¾!ž6?'Œ?áL¾…«“=&dh¿™ï?L¢¾•;?JAÀ¾*ð?Mþ-¾‡^нá[¨? ª¿€~¾¡%'¾I@>¾l=ï?9Þ\¾›ï®¾ŸÌ–?/ᦽ‡†˜>Ù*^¿ƒÙz¾“Eí¾·¤?6?U˽N?8=„¾-ÜS@:ñ\½Ã$>áf¿sÃ'¾P Z?†Â¶?€vU?\÷W½dü½¶(z@oø?;Æò?{·Û½y¦=0ø½·µø½— ¿Žä?p˜½ÏY.?FÌ/»ÌÆ ?P×5?QW ½—®à¾.óv?ô:8½ÙÎ?mÀÕ¾' ½•ï¼?ejz?bÊV?Jðv¾, [¿“×"½ °ÀŸØ?û{.¾…ü;¿w¥¸?æú¾«?É …?0 ?6‚½Al¿¤X°½y¾xPº´¬€¾KR?îè ¿÷ë¼xq?6›g½K¼<À¾™¿d,G¾FÒ¥¼¼Û¾45?Aé6¾0±©½ü¾4\ä¿r7?-·§½èP¿Š4¼9¤ ¿‰$¤½›ì¬?Û¿‹íF¾yKþN†¿óR@+Uª¾:EË?IÃÒ½$_?döü? Hú¾h á?"„¼¾]¦¿yán¾…r@(ª¿“ÐÚ¾Í?P÷š?vB½ L½Ü,Ö¿š{ä¾OËý?Ј ¾…=+»çë@?&cþ ¿‘v†@,’¾h)Z¾t`M?"<¾!@!An­SAÀJ„¿•Åþ¾šR?"si¾­äÑ?Æ’½Ÿƒ?>¹p½ñ¾Î2Û?WØ8¾¼´¾¾C{£¾•):?YŸF¾³ÂX¾7ÃŒ¾ÅÊ?ê,¾”w¿“Œ#¾˜aS¿„2ž¿¡ .¾bp¾VÞ!?^ÿȾ5½?LÕ+¾Ï½¶È˜?<:?-SÝ?CT¥¿~‰×?7[˜¿·|?Ëg©?AL?<׿ÿs}?WÌ(¿€}Ÿ?ÊXž½à'4?3)ú¿"˜ ?(’T¼¿Á¾|*P½Ö°Ò¿ª§½²éè¾@ï¿…²?×5¾ÛYË¿ ¹Ä¾îþ?G ž½¬K~=ýx`½Æ,h¿¤w/»Þl ¾s&½Œˆ^½ãL"½Ý/?,=Ë݆?N>H=0kô?g:È?úÿò¾6Dæ?ƒ#?Lpl=ˆ¾¾¬4W¼T;¿‡;å¿’>ì?L1?v*K¿)H¿näv?'f¨a=>t¾F{?­Ô¿‡am?Y0W¾{™?_÷°?@øº¼W?.%½Ó&h¾C+Ú?S2^?X>X¾Ab–?@j.¼8¿€?XÉG¿r&?Þ)½À0ž?(;¦?OWž¾¦O¿ˆ v¾¼g4½Ÿ„L½íj’»g̾•e¿i> ?@÷º27¾žòî?OAp?=Ý­¿{ô¾‚Ì(¼Ùd¾~­u;?²À¾zMk½HÒ¿˜ð¿x^?7ç*¿ƒÆ ¾™?¬¼ŸH?ÔAο{Õ€¾¸ž?X£˜½fÈÔ?€Ù>?U ̽ýŸD¾X Î?JsF?%ØÄ¾8ÍԼö?U0À¿˜²Î½ª[¿Eæ¾&ðý¿ñA½½GN?".?ùgÒ¿˜ž¿r…è?-r ?faE¾K!®?\®¿ŸBÙ½MîнÎÈ:½¯RJ½m¿„¿ˆ‡ö?$°½ }Ô¾´?z×^ASB½?3ÕÑ?a²¾™˜<@¼0?<‘½Ýü¾èx?/H‡¾œ¬¾¿®xƒ¾-4˜Àl?GaÀ¾Ÿ?àpq½­ùb½ÑµÞ?U¬{¾l—Â?7]¹¾ñìò¾vìÙ¾ „©?)•-?F’¿‰²?CÕ?c+´¾2D¾;æ¾¢–L?Ó#0?6OJ¾6*ˆ¾jS(¿‚åP?Ä??ŸV¾œÂu¿~v±?7ãæ¾fX?E*½Í-˜¾ct!¾^k‚¾Ôxb¿ªyÓ?! è¾S‰¿›jÈ?SŒ™?!Af¿šþ°­L½’ï(?>{̾¨äÖ?U´ßÀ¸¸>ùë­¿cоwÉ”AÉa$? –õ½Ö ¾ ß*?Z>à½Îy0¿yÍŠ?V = ©ˆ¼Ì?¨Ã½”ò6½Ü$ú¾ßN¾w–ß¾|Ô¾½Î¾Bm?Õ×?d¾L½pR°¾!?^sT?@¯˜?R÷¾TóÅ=JŠ8½Ÿ”@½§§ê?;¥Í½1£?"û¼®é`½Å²½nè?eL‹½µ n½Äÿô=ù >ÀTn?ä¡?D§f?ð9½?ßî¥?Zíä¾P˜??оaÆç?üǾ k?;r?EW;?eˆ2?6 õ¿ò“P?×ν©ƒ€?Oc*½‚ ½óT*¿Žêç?D)ôAo2‰?Ò:Õ?f¿‹ê5?-åa¾Jw½1l迤¾N½×Û½|`Œ¼ŽI¿Ž²•¾,x¿„Ào¾/4?P2V¿ƒÐB?ܾ¾7ý?_ù†@,™6?8N,?L<à¾-åš¾ b{½Þ ½ðc–?Enq?efö?7 Ç?ð´/>ܱP?G Ÿ?J.Ò?4>¿Ò޽¥ý?F¾Xž?Gó˜=5ˆ?F-u>‡ ?NúM¿x2?Id/?dZ?WÚ?îžë¾o¾¿>ÿbæ½‘Ä ½‡'„?“ ¾KâJ?<·¾¿—T¸?V‚ ¾møý½?¤|?Ûptßy¾€©z@\ú?Üì@½'gt?&ô¬½v) ¿š®A¿ü¾†Áˆ¿‡ÝÛ?0C”¿¡9¾e 𾉯µ¾.^½rÆ,?$¾#¾fáN½}À?F0£?I!Ž@¾+Æ¿¦½?b8?-, ½Ï+à?Üåc¿l¿™\­¾ ›þÀ®W?D¹t¾J€½Š¼ì¾©J,½9YÀ¾…Ÿz¾/«ü¾ŽÜ¤¿‹D[?-¾c?E•?;ÈW?&‰©½ªÊZ?$ö?k†ã¾Cú¾ÔÒl¾‚ î½š\¾¥œ<ä!è?Va²¾¤ÀÒ?BXŠ¿7`¿†¾¬<öà@½æòN?ié?2µ¬?jÍð¾ã®ý?^™Ø¾ gí=)ä?Ag ¾Q>?Õù?ga±½¶‘î¿ûý…¾X ,½€˜þ½×£š?ã8c¾sŸ½ÓJ0>ìp—=Ï5†>£”½9Ê€¾ Aˆ=„Ü`¾phr?ó¸?@'n?]ñP?Sxö½Îÿ¸?ZÁ<ÖŽ€¿޾“Ín?=3K?A¾Pm?cû`½Ë-°¾“?+µœ¿–Bð?7ð¨?@©¿ŽÈ?ìì¡?K’´¾™¿“{+¼ü¤ ¾ïp¼>§.?$]Þ=%ÓT?o—½³;†¾•W?`ò8?7"Ô¿Ãv ¿·Á´½Å>¾+ÙÅ?w›–?>W”?Rj^?ßy¾‹˜ ?9¬½„פ¾”@?=±†?ÐE?Õ¯@3Ô?>|??ÙØ=S…?[Ý¿Œ,b?P÷?0œs¾ P5¾&Ë鿘ª4½µRÊ?+àÚ?¾®›(?Utb¾oŠê?tÞâ¿– É=“¦¾øµ»ÑkÀ¾ŠéX?×(R?)rÁ?\ ?Óm)?U‚.¾0D? ¾KÔ>?6颾°¼ºÞà?*{Ä?M›C¾2ȹ½·À?@ѽ»º¾˜ß??M@? ì&½‡ï€¾\Eñ¾À>Ô¾c·h?K¾‡º¿ƒÿ—¾´GÊ¿{ÇR¿“s?nf‚¾/Y½CD½]&¾HŸ¿“j¯½Û†è¿šxx¿ˆC-¿Ÿ.?YúÔ¾¢yx¿‘Èœ¿L~¿<«¾–•N?aZ¿M¾=ïÛ?;LI¿’mî¾?꿇WÝ¿™û´?gÜr?4òý?p¼ö?0Ñ’?ÉÓà?Ìè¼”èØ½2X?`«?)É$?^ÆŠ?B©f=Üä^¿‚ë¼»i ¾;/¿ŒÛ"?NS0¿‡Ç*?Xþ¸?e²=?BÙ|½4›,½ù_Ò¾†Yå?P…Ì?ndž½=TÄ?÷+0½Ô¥Ø=Áx´?I[–<37p¾d=ÈŒT?æ¾½*¿š°¾#<1¾h¾= 4è>ÄWÞ¿‚ÄŠ?Ú?\u¾Ün?c.2¾k»©?‡ã ¿­S^?Qì¬?=.Ø?`a®¾ƒe½{Óà?7íž¿ˆMï?,N$½0?ÖÚ ¿vºd? Uœ?ã>Å?-Rß;‚ à¾˜hô?جÉ??–×?ED&¿Šwg½¨º?+^ƒ¿¿8?XýĽIøœ?>Oç¾"|Q?Nð0½àÎj?cÅ?uÀ‚¾~7g½ÏéH?ÙO=„¦–¾[··½;‰`¾7ù½bX?2Ï:>ƒ§E½É”P¾^Œ8?›D¾Ÿsi¿²?\€¾`ÒÔ¾˜È ?Ún?PÆ”? x쿃ݾ˜Â©¼íVp¾uº¿†¿O¾Ó¾ƒ|œ?Óˆ½Ìê\?)T?‚†D¿—¦±¿™(x¾… ¾¾™?FúÏ?[Àò¾@ÝT¾/Pî¾P¿ó?SÖC¿Û)¿‹…L¿Ÿzâ¾Dü˜¾¯‹Y?#š>?#ƒù¾ ¥>ïñ-?tñ?(k:ƒ@?ÝQ4?Pk?U÷J?Pºì?8¢·¿‰Œ?vh¾PÚ¾Ðxœ?_Ÿ-?ÙÕˆ?D˜½ãØÐ½1m¤?/ës?Kì:? %Ž?ãнx¹¨¾+æ¾°’Ñ?bt1?5y¿?Z#¾Ð],?=jÆ?àüQ==â ?7Xb¿LÓʾ5ªØ½æËT?%ˆ¾7ªª¾‘r³¾O™Ì½g˜?+hF?9ÓØ½,Øœ?Ò*>½Cì̾pjI?z­½àþN½ºÅˆ?0žÞ?\JX¾—òš¾µb¾¢ý?QòN@.Y?[,,¿„$V?Oô?5mc¿q±ð?+m²?Pw?G@©?T˜Ž¾¯0'¾~;>ˆ¾_·¨?Ö8?) ?/ô‘¾ÖüD¾LE¿‹è½¢~?ˆc\¿xïp½w"¿œéŒ¾B—½QÌ\ºæ¾‚nž¿lç¾’k¿_ÅS½¶Æº=b—ô½w÷p>R(P¿›!Ï¿‚ûð?N蛿û½2¼MÆ€¿JŠÂ¿xûW½ˆ R½Mþt=òT¾£@I<½ï?BÏœ½Êû^¿t=|–¼¾fÇœ¿`Ô ?Dn<‚eP¾»$¾ý Ѿr`?f€¾|"7?I…¢¾ Lö¿†G俉‡;Ñ!€¿“C7¾cèÿ?:Á›?Læà¾ZED¾;¿È¿“Á®¾†¥Î?_–H¾h…¡½Á1"?7¢½?äkò¿ŽË™¾e]V¾R$²?N,‘¾Vû¾oË>¾˜ ?cè•?Fó½o´Ô¿“Û—½l}ð¾œ= ?cÆÒ¾³÷æ?IÇ? ® ¾4$¾_”ö½Ò˜¿šÁ—½<$À?·˜?q·’?9«—?.kk¿¬"¾|å¸?‰>Ιø?L¯½?oŠ®¾ ·@¿ˆê_?:¦=¾¼Åä½mÆ0¾§¨?P%@?Y÷¾’·ƒ¾mSR¾LD¾Áãl½Ç>œ¾‚ ?Hq?ßJ¾¿‹î¥¾>6.?a%²?H™!?N‚¾TÚ¾¹?:‰´¿‡)Ì?Vo?C"ï?BuǾ ¾6?%1νˆrà?Çå4?ë—|¾?jȤ?VÉÐ?lqâ¿›FN?Ü€“¾–˜?X ¼¾–€¸¾BAè¾Kæý¾Qè?J?;›?ȸ?(øè?Fš?:ûÞ¾£0¿•q?1›½–Ƙ¾Zê¤?¦~?à?2þ+?WUú=‚g’¿ƒÇ„½=¸½ç7 ¿ƒ[q½ú€B=ï·$½ó­<¿qÕî½ÞêÒÀ‰i¿!K=I¾*~n?‰UÀ¿‡H|¾U½‚$’?Q/D¾A¿¿`÷Ñ?AÓ?:ËŸ¾4H?~/R?O±m¿f»ê?HÃf?jݾŽ$?]àÛ?X„F½ì×J?Ps¾8•u?:Rl¼ÙCX??}+?Oˆ¡¿–’¿R«¾£¿Dˆ?=ÅÛ¿y—î¾JVÿ¿x![¿‡y}?V͸?4dD¿…!5¿’}ý½b£°?3пl—¾'Y¼—èè?,™²»&L½Òª?Q^s¾ ñ÷¿„Vq¿‚mP?6ÏŒ¿‡?t¼EÁ ?IcÏ¿ˆê=¾iø½´h½Îp¼s¸`?A#,?æx‹¾QÛ†>?À½ÅZ0?÷õ­?^ÍÙ?â ^¾Œß²¾H#¾^Ú&¼ùÀ¿œwÌ¿Y)?…)½¨Üè¾(n‡½>¾^}Ž?W'L¾…¨£¿ƒä½ÖÈ>½Ÿh¾cÄ?UR?%±Ð½̾>ÁÆ?`VþŒÂ.;‘2 ¾ (1¿…÷«?0åz?9oÕ¾Im½ÕûÌ?66ì¿XGA?/:x?5‚6?òžî<ÙaH??Y½\p¨?]:?G>‹¿§â?rŽþ¾É¿w" ¿˜ à?ç;ç¿’½‹u„¾nG¥?IAi¾\W?R“„¾MÈè?*ÕŸ?-ì?d ð&?îˆÅ?;O?SÊ`?1qù½§Ç’?1”?¾RP¾hòk?IÌZ<ø?Vj§¾„H§¼·¤P¾™­d?Pc¾Ê??U,¬¾\tÉ?A°¾yw~¾pd¾¸Š½?fÍk@1žT?Xêú¿›0¦¾WD˾‚Ûz?aȧ?9b]¿M´?1²¾…Â#?âT¾dS¿¢¶%¾·›¾ž–?J;c?ö¸½2õ@?k¨µ=ƒ¾Œ\R¿l¶?H‚ì;{÷?,”½Œ?Ç—¼5½@¾}kY;žÙ@¿‘Œ[?R2ÿ¾Ý6¾ `>inT¾¶) ¾« ð?²é¿˜3¿oÙ¿A?9¿Š‹?á0‡?dJ&?EX¼?0¾%“½|T¾DÈ*:Ï¥?Zí?u!‹?R³B<£÷Ø?PÒo¿qÜ.¾Û³¿>t¾Dн½ÞÐ?29ö?idò½vOü=¿“"‡½Ž3¾9?޽›?æ¿–½Þú4¾z.½ÒY6?ဿ—f¾‘?]ù?Ñíð?W4Û¾4 =Æþ?R¤»åÚ@? ¾’ῌèa?Rº?5ö¥?ö©}??·²½zñd?.±s?õ9"¾ˆN$½„L½Ãúü?ôÌ ¾Zcö¿wüª¾Yé?fAG¾‰¢z½±– ¾çÈ<Ü'0¾62Ë?(#"?&r?Ofš¾üµ?d@‰?Jß¿‹â®¿‘m‹½Úè?5­‚¾+c¾B,š¿€€ƒ¿ŸTõ¿y”Ô¾zßÁ?„Ú뿜ó?ƒ„Q¾½ü?)m ?H‘¾Tûð?;3t½DØÀ¾ $¦?íqµ?5£Ï?n`¦?2 F½@¾>òŠ?&è’?Aü?kîà??É0½ý#þ¾%£è¿ˆnt¿«Üh½„„¾ÔÅ‘?èœ"?=yP?\HÔ?ÚöJ?bz–?D z?S¾ ?MK”?G©¦?1t?箾ûÙ?ç~§¾¦ÃD?Hï ?N¾Ø?kŠÌ¾@ ‹½þà¾aº?TÒÚ?4ëÔ?^¾ö¾U¡"<Öà¿ „½h{ ?(óÏ?I`L?.¹½M’,¾]òH½ÔÔ?z†?y¨q>ØVÌ¿r\N¾´¼á’Ð?2Ì‹½î@¿Š›L>“(? 8O?çI‘?-£¿šä¾2­¾ú~¿–—罌Ct¾78y¾C´6¾-Ð?HT¾22 ½v) ¿• Æ¿™l¾8ËÇÞ¿ )í¾r¾¤@W?e‚!?pø€?†¨¿€á<<ùP¿…íž>Õ¼ø¾,¨Ò¿n®º?T¼?õê¿®ø<8€¿¶ä½®ød?=7Ä?\OŠ¿„Y?n­H¾‘š¿hZ1½5$D½É¤œ?FpÖ?:à.¿xu½ /L¾ßž½#Pð¿ƒc«¿‹É±ÀLÃj½è’b¾h*×½›@T?WúϽ¤ÂD¾jöl½[Á`?åI¿qüоYñ¨?Þu‰½á *?Tñú½W½„½˜ã:¾GWâ?RŠœ?A!Þ½µw8?HÛ½cu?:œ¿‰x ?=2N?J‹¾Të=oƒT¾ggŸ?p[¿ §Ž½œäZ?Gµ ?`3ñ¾‹‡½ºûð?*;>ø?V+š½õ ô¾5dƒ¾Y™4¾C:ú?ûÄ¿™Æ½B p?FÕÊ=Í”"¾;[t¾8¾[n?;Q×?#7Ü¿“—¾¸ú~¼oZÀ?@ËÂ?_F?2ò½¼€D?$†À½·ì½ù¼’?Út–¾e.ν覰¾€E½¬8¤?7½M?=¾1‘Ã?Håo¾“⿌햾f.9?4l?'ðÜ?ßXK?ܲٿ’&u¾vïÞ¾/þ]¾^ô¹¾PéÙ?)ƒ¿–u?B¨2?@œ*¿“ãì@5L¥?+øÝ¾ê§å¾–ª,¿ol¿š½½ÿÆè¾}¾0½n˜?Û­f?îÖ¿}Ä?¬¾ ¾&•V?G„†?8ýžg û¿Žv/?ÑÔt?`F?IŽ@¾˜ .?Z ´?"³õྱ*„¿v©ç¾ŽÕ¿<½¾€ëu¾Q¨?h1½Ä0?Ó´¾¿t3D¾RžŽ¿€{N¾tä?б¯?,È¢¾á?G¶ˆ¾I/À?5e˜?Mþ¾«ž€¾Ö¾°]ú¿Š¯á?BêR¾2v˜¾VÕ¾0îj¾D`V?G4d¾1Œs?EÒi?1šR½•Ä?/\ü=̽ ¾[Ö¢»¤ÿÀ?¯ª½ð"š?Bq澕 ª? A?Lv½œ%Ö¾C­ò¾b“½?Xxþ?3<´?avÆ?!ÔŠ¾™?Mí(¼üKh¿s1U½Ÿ¯€¿™LL?J*J?G²?ë/n¾_Uä½ l?B;>´î¿®R¿uœ.¿–ó;Øx`?Vˆ¾— ½ó ˜¿†-ë?\°½Mô´¾!þZ?z[Ö?Y[A=ŒtҾǞJ½Óƾh½çu ¿ŸEY?€¾]N½Ëµ"@0‘+½rƒÈ¾ Ÿdº7׿”=„t¾Ch¾ƒ#®¿–|!=ÿ-º?!.ã½tÖ`¿Œ‹g?MD’¾Y¾W² ¿—ˆÆ?u»Ø¾Fz½¸Ê¾‘M.½`¾†¶´¿uÎA¾fAÜ?E&B?ÙK¾¾,•¾M¶½Á¯ì?à»~?P ¼½ó_ö¿oG¶¾BÝD¿‡˜¿šµT?ß b¾QaÞ¾Aâ ¾‚mÌ?×ì7?.õl?ƒ¶]¾jP˜?`‹†¿˜RY?xa•?ÈΊ?@ܽ³ûB?Ffá¾¢8.??é¿*3g?ÚÐt¾Nâ¹½µP¾(Yò¾+Ñ?6 ú?LjØ?5F¾Ř¾Gú¦¾8†E¾S?G3Ø?+¿?BÌð¾(Wƒ¿‡)ˆ>ôÛÀ?)R&¿œ0ʾZÒf?p?[b^¾ ™½tüì¿¥ˆ ?IÔ?z¾?N•T?–®?|R?;N‘?Q(<½úf¾t÷¾:%¥>µ$¾5êV¾¡›¼ÄHp¾¯@÷?<ñо‚”Ö?Dl¶?>ñõ?N¶ ¿Ÿó?>0°¾ À³¾L ö¿”ø ½Û©¾nŸ¿w…f¿O}?^f(¾Ä;㾑©!?/ñz½7!l?)¬p¾5áé¾€š,½X d?ÚJ›?I‘h¾ÍË?Q•¥¾Cc ¾U9þs0x¾Æ,¾všÁ?;Ë£?N´ ½ƒ Š¿d‹U» @¾¡†Ê½ÍXÜ?JJ½?YÈ?S?÷«¼®X¼Ÿä°¾Rt¿€¬C¾zΈ˜³?FX¿ˆ×œ¿‰Df¿€t¿ˆ }<´Ü`¾CȽ“K?]¿k=ýlÖ¿ŽÄ<Õ_°¾•Å?Hí)¾hS‹¼Ã à?,Üä¿÷ªê¿’Qy?‚šƒ½Ó7ö¾s¾ð¿ŸÁ&?N1 ½øC¿QІ¾ƒ 0?7$f¾P X½jC°½îÚ ?ï*n?Wúɽ­”¾csw¼+`?/v=³`¼è§ˆ½Ë/Ò?¹¢½®K"¾@͇?ûé⽸*?Dß¾G &½¡ùT¾Ìá¨=¢‚d¾`¢?>CB?,šä½I¬?&[º;ÀP€¾"–ä?gpL¾e|?dE}?#cø½zw¾Ã ½íÖ4½w“¬ÀY ¾oul¾d*x?_‹Ý=oT¾,½ÓܾÆ2¿?J†J?Fún¾?Ûª¾’î/¾˜,?Ç!r¾÷?z½µó®?0¹v¾z¶ü?®D¾—A@--F¾• [?ÙVì?AhU?4­¿ŠÞN¾x Ú?cu:¾¥äö¿”Ú̾N™÷?lò¾rš@?O=Á¿-럾 õ¶?-Ì¿}VA?¢^I?)¸ü¾Yɾ°0`?;S$¾»ô¼~úð?Kψ½œYÎ?Fq½Þ’ ¾‡=ß½Óô˜?\È?çËþ½à=¶?VR»?9­Ó½6(?*p,¾ZP¨?'/Ä?ti?6¹¾e1”¾D‚D;îË ¿‹l=Ê[°¾~º»¿†{—¾>ë3¾fž¾Ö€†ö?ë(`¿RÔ0¾bRy¿‡f¾Jáï½–äØ?K}°¿ø§ú?QO¿†T%?h¦œ?[½§iò?vI³?ßéË¿i󢽉g®¼*`¾3 ;=Ë2ú?‹§½¶-¸¾<ˆG?\gš?*Í!½Ò_¤¿¦è|¾1¾w[D<‹?KÒ8¿¡ˆ,?UÀ*?ì¾Xj€<ž'ˆ?\Ù?òÂ)½»Ì?PüÆ?÷ÌÇ?{âø¿›ü’½í¼¿…nü¼ÛI¸½*¨?k…‚¾žg¼Ã¾[æú½ ˆ|?¼¬p½Xë<¾~«v=MÌ?Ö:@?b“¿˜¯Ð?ñ¢G½»Ìú?æŸ"?A•f?5ý†¾2WÌ?Ze ¿”$ê?O6,?cÙ>Iu?OFþ?ZáÖ?>_^¿ˆ„ľÍ"?F&¨?•’?f·'?+*?nDr?ãJ?eQ¿¬k4½”š>Çܽ«ÈÁ?0…½ïD?C¼6½ÅŽ~?֦ϾJ†?ÛZS¾¢‚¾¹jÆ¿Ž…-¾}¯¾^<Š?"Bš?T¨À¾/"½uŠh¿§~9?KñF?Ös(¾-%(? `?C¾¢¾ˆÍ¡?æÒ½?+ËB?>Yn??•Ñ¿‡‘›¾®\æ=7«?Ãk‚?Î}b?E‡î½Í0J¾„£V?u#?Yâ½Ïü¿õÚ?G‰?JQ|¾¼¾Œý¬? }>?'v¿¿,{¾–øü¾fßê?×­?ÜM{?LÊ,¾R¾8¾v9†¼¶vp¾yǽÜ˼>÷èѽЬ?&<&¾,b˜?:ñV:Á ¿€=ó],?9Èz½³¸?JkÓ<®@8¾"J?~‡d¾-y?KFô¾„6¿Œ²ä¾ŽÖ?nú¾ ⊾—?@ŽØ=z“¾‰(P=×Ü?/yê?X¥¹BÑæB4—Z?^§;=ã_^?+ð?]š>¿”!H¿††¾‰ü½¦Ð?h“a?ò¥[¾K¼)€?0 ’?@Y=?I i< ?ð¾K*½A|V?Z~p?Mdk½õ5ˆ¾»åܽ¿B?9Y9?³?È#j?]ľí?\ß¾›‘¿•6V¾p”W¼î¿P¾“Ùʽ+ð¼¾cÁ}½–XV?Ñ¶ä¿ŠÕ ?:?ø?L¡\?õ]AUv@sC ¿”h?UÚÔ¿¥˜Q?-iT¾=2O?W ?Òù‘b@žA˜p¿§½ˆ¿r©?:•¾ y?S?ˆ¾õt?[ÿž¿—æ?9è?-á?SG?Î^^¼!“ ¾W|Š@:°@'$jC2ÒXBë?\Îß¾!¹½™b¬?#M[9ñ¿˜ß;ð4@¾R8‚¿Ž=¶?>iR¾Ú`¾S:2¿Š£f¾–¾-ýœ¾uד¿ŠUe?KÐÇ?q@Q½ÀïF¾.g¾»Õ?@*J?!ž¾·-¾! „¾Jù:?+«L¿Áø¾¿ ò9¿½Ó¾?ãõ±¾z½Ùñ¾Ma½1Pˆ¾µe¾2?¾??3@?×¾+F¾#šÖ½ã f½è Ò½€­½w#h¾ ‡M?_IÁ¾Bí?Sð;½“¾£˜?:ù¾À ½Èªn?Bû9?]ø>?]ßÜ?a1³?8šâ½£•?@rð½©?5•Õ?jõ3?Gx¼¿ˆ4¾R䎽 @ؾõú†½ÑñV?%—‰¿C´%¾Aÿ?d=¾Œ æ½· ¦??Û?Ï â?ٖ佇Á:½ý©\?]+#?:;Ý?dT¾H$¾¿ˆy¶¾o½Ãìn¾Õ‹{??eX¿¤6Ì?]~?Ø;¸?p&”?â=½aŒH¾NO?¾zhœ¾]¿‹Ö¾'ñÛ?G5±?^¿¢QB?™®?ô ¿ž¨I@*È«Dº²BÁ¹°?п*ì?>Ô»¾¥¥”¿‘6f?? ~¾4Q|?9éÜ?>‰N½Ê€?Ør\¾£ 6¾‡¹½?(¾®é]?E_?ÍqK?~Œ™¾Ë¬·?N*d?}¾?y_á?^e2?CÙÏ>uÂ"¿•Mc¿™ýA?Mbj¾rêܾ}V? Ôå¿„ܾP’ä?a|¬½¦:ƽhò¨¾_ØÎ¾}óv¾v½ÜeÈ?Üø?M¦l¾/•K¿Žþ"?X|•¾JÈÁV¾³?)•s?'½ ¾8KÂ?Xº½îô:¿qý˜?*að?R’­?mîæ¾kT»¿‚±¾z¯‰?]êS¾cvÄ?cƒÂ½BGp¾Qœ2?4%e?e’…¾qÌÿ?J“¨¾-u¿¼¡u€?£ÈC ÕcAPj?`àc¾ &?a…’?U4°?KsŒO¼‡0ð¾Â¬ö¿o‡¾—@½uH¾'Mœ?N(?ݰâ?Vd¾}ÂÒ½ƒÎ?Ü™F¾äde½gИ?‡ï=½¶}´=AK€>ÊŽ?æ6½’¬¤¿i¡Ÿ?h}µ¿„ˆÜ?/]?çÞˆ¾¶÷? ø×¿È’?rÃ?1iæ>XA½ó=þ?E‘d¾™ƒÕ¼ã3à?sýè<ƒ‹8½š5<@ ‚¿‚¦=,† ?Xâ=^)˜¿Žì?Rø6¾#üÚ=0’€¾aÍ<Å÷ ¾Œ)ú?ê5?@³¡½ÂÜ?4w–?gdQ¿›tŽ¿e%¸¾jò=üÌ?ÑO;“-/½¶?]X?'}H?`³ª¾hÌ?]’N¿–XD?N@Ú¾­'?æ?mep¾qÿ”¾bv}¾¨V½t-Ø=ÃÐ?C½?xê‘?%œ½I>¿¤±D¿wÃ’@ú-“@q2?H¦Ý¾UÎ*¾•ˆl?OÃ/¾³"¾O>¾BHÿ¿‰t?LD?æns¼MŽ`=±Ä?Jít»U*À?2W­¾o´?<‚?Pd?Ûlˆ?䋸¾ËÆX>μ%?E7Ë<2v@?8¢›?á:|¾UØÆ>+ ½¦Á?7ž?²/¼Šü¸½éEŠ?ÝFè¾0ü%¾UÒ뿚!?á£?"³2¾9Úο¥X€¿‹?:Dܾh$!>›=Æ¿‹÷ ¿“¡¹½«éÐA{YC…¡L@*ÁŸ¿mÒ?!Z‚?°Èv?10#¿T1?Ôšš¾çUŒ¾N—d¾*²„?ÜΔ?XWôÀ ؽ˜?„‡?ãÚ±?\Æ¿¥] ?â"Þ?á(ñ¾·ÎŸ?Yí?Wf¸½¸#ú¾‘Å1¾"k¢¾ô¯¿’˜X?D]ò¼Tf?Eý½¢ê侚?@¿’8k¿ž›!=žB ?:Óþ½ØÊ8¾Iñ¿zY(¾\Gø?Qm}¾M™Ü½Æ$ê?BÒV?Þ´§¾Þ2?R¿”Ó ¾Dñ?¹c翃¶í¿’p¾|J?F­Ð¿…ú ?7#(¿ŽR ¾,K¾JMZ?Qñç¾,§<¾ U½ÃÄ¿š¯Ø?jŒ¾éW¹?2yÙ?.¿Ä¿£±†? ¿?U/&?kÒÇ¿’]F¾S¥½?MW.¿ â>æJ>?+'¾P2?U>Å=¬¿z Q?{˜ ½‘™”¿ˆiÍ?I`š½ƒDh¾‡Å€?ˆ™À?ãô?M¿‘tÁ?IŸ?9 Ñ<*'0¾6î¿€ œ½°d¼¥L0¾;Ù¿‚« ?M~ß?T®c¾„ŒÌ<~8@¾ Ö⽈ï˜?^r®<ƒ¿“:”¾bü°¿’yH½z¢¼¾•» dà?5@?hOQ¿F˜½þ+^¾¬p<`Op?é|‘?A*?9G¿Œ¾qD?Mæ°?>µÿ=t`?2¢-?gr?Hë´?\ÓÝ?EË?^oÜ¿L?J §? Â*?\DL¿¼~?%6?e®¾#F>®ŽÉ¿`j6?yF?N¦³¾>ÃÎ½ï¢ø¾Žnh¾RR»õà½÷ëú¿”í??Mr4¾ ûØ?H?A¾Û0?)Y=¿z›I?H¥ö¾õì¾}±z¾)ˆÙ@,Ú¸Bž"Aæ}"?0±?# ¿˜ƒ0¾Æg¾hOê¾lŒ~¾$p?Á×?L5@+G?<Ť¾]0ñ¿‹~ˆ¾vj9¾–F ?<Û¬¾Šo’¾¥±\¾±Š¾Û¾L³¾¾@–f?GÆ?,?Kéÿ¾#ô“¾.¡»¾sý0?YmÓ?&?Aé#?4Öû¿‹VÚ¾„ïæ?¼Æ??"¬¿”sοŸñÈ?H’I¿—ë½·Í(¿£S ¾pž¿”_¿>ðÊÀ×ç?ÒÇž¾y*¾šåɾeæ?Uú¿–ïÇ?4!ú¾=?Q𬿎Á<¼u8¿¢óè?7Åæ¾‡Ôà¿‘ß½?Ó2ú¿‘½®¾Pƒˆ½ªÙÐ?h"¾cÀj?½§¯à¾ÃDP½°qà?D¸¿š¡T¾XKJ?S(4¾KõŒ>Ü7ƾ~g½˜—?nV½Œ~\¾.ã¿„Õ ¾ÌW=1´t;¨f@<²e˜¾?ÐK=¶+6?Ö´¿„7潓:?C†©¿~©¹– ?7›?Z¥Ñ=H<:Þ`¿žúï=ñ"`¾UÞ2?tÓâ¾Á<=±ÒX½–SR½†0¿£t?êVá?4qú?r;>¿Žȼ[-°½Â刿DK¾ª]d?æ«8¾=KÚ¼4Øp¾%ê»ft€¿ gh½•Œ¿” !¿w «¾q㥾@â¾z5°¼¶?<?åxƒ?5¼>×G…¾÷æ?Ê%³¾½Bè;=@¾/“Å?QF¾ò½B·ü?+D?f€U?&1£¼ÊwÈ?JÃJ¼ï5à?<š*?{t]?Z»ð€?2@¿g–_¾†¹‚½â»à¿)œt½òÅ4?Ÿò?ê&?(q_?qH#¾ †F?bËÿ¾‚îP¿~ûî?É4?h¯f¾_§}¿‚’? –7¾N5¿¬\6¿Ÿ|•¿”š5?Xæ¾™ó=®Í¢?/¢¿€=0¿¢˜¾|úᾟêľl¾ªnÛ¾à˜¾¤¾U¾›–¾&†¿›Ž™¾ƒ¾¨¾¡Z?^™V?LÖ½$ ¾«lœ¾ z~¿•¤.?ïG–B‡3M½Ê6¾›A?BÓä¾—j¾D¾¦ªâ?F›¾Å:–¾7 ?BÆ™?Uu»¾‘çn¾0Ü^¾t5†?@%T¿›Ìì?%,Â?ËÃl>®u˜?((r?C ÿ?>˜Â¾ßå?Ëa”¾§•ø?M忆5ø¾!WÞ½(¼P¾ÄÓ…¾ˆIj¾¯ëP¾ëû¿–Ô<½ Hè?`B]¼ü‡¨?(Â-?\zH?@(j?4ÿ%?,¥¶¾&ó_¿“™š¾8ÞB?![t?^÷ž¿”³?U ¾‡ßÑ?7„Û¾q”Z¾Z?8›*?#¬é>þˆ?îõÞ`¿»D’¾&âl?Ô^¿ƒef¿›“M¾ F~¾w¯:?kQ?Qö:½W ô½R"H>gM¾y{?Swû¾·q¾3Šp¾t‰%?cÆP½Ñ÷<=ཿ” h½_p½¡ ¾ðªM½«¹Æ<”Q`=§¢z¿nq ¾&i­¾q.,?G¼4= /œ¾JB•?bÔ˾”P¿q`²?0O½½Àô?Fk½4°¿¢ÒbºÍ÷=‡À?W±u¾8¸Õû¿dn¼?(uù<¦,¾–Ĩ¾u²¾ž±·¾ïЉ¿•ç?a£’?Oä$?x®H¾Ff¼ï1è½+²¿qfJ¾ªÿ¾µs¾®Éܽ&Ò¨?õÇ&?/,`¿µù¾4«–¾ßI¿‡ÄZ¾ýñï?Zé¾v½­ÈŒ¾Xļ^¸½öÜ?tP¾-nh¾lQÖ¾fÚi¿ˆû?ßÔC½0ÑÔ¾4²¾7“ ?ð¼üÌ ?â ¿?Z-¾2¡â?<9à¿–:ü=ÆD>û,u=^Ù?ÃÏè?áô¾œD(½Ç5̽ܙr¾eÓ²?Þà½IÕÎZ¾5Ó”?-¬¾‹5ï? Y¿í¾Œ‚í¿Žêξĵ¿W?;7Í?>’޾ J?DN9¾Œ ¿ø·¾í¨Û?0CF?Å𛾉C"¾Øtä?BT;¾Jºš¾ Øy?ÖÀÑ?\1~?3Ö&:¯€¿€×4½— È¿ŽZö?U$?,Óô¿ŒU¶?Tl#¿Jq@?IÙ&¾ ¯/?1¤T¾i¡ô¿œ«O¾ ê¾¢ú–¾Ù? ¤?/ˆj¾€b@?Ö#ù?Ú‹¾™šô>ýx0¿’£ð>ÏA}=q¹0¾zÈà¿|¢ž¾ÞÆÉ¾M|t¾I‘?‰jþ¾²Sо†K¾©¶¿“e¦¾’®?+”ë?*LÞ?‡¬µ?SšŒ¿t¸?Eû=?=!b¾þ«?I2?\(Ë¿†Ôæ=tRˆ½æCz½™?NGÖ½•@Ú¿Šðw½Dx¿›âÀ¼Ì=ؾãŽÃûÀܽÅér¾c#À¾/·ú¾]Ÿ_½·N>˜½Ìõ ¾1Þ¾5÷B¾“âR?I7 ¾V è?r?¾Ÿå÷½¦ô?yå$?:ïî¿¿xj?t3§?M8Œ¿‚Ün¿—È¿Œh*¾7`S¿Ÿ°!?VL¾d ž?Óî9¿ƒ[÷?/ ?^aP½þå?`’¼¾ ·?dp’¾ H?r…»¼ ,ø½)¦ì>Þá<°= ½ú^½Él¾1cê¿•ˆy¾¯Èm¿‘—ʾl83?//Õ?4Í?4ÌÜ¿¢„J¾qó(¾¤?ØgD½¸RP½s ?[¦¾Y ©?6Š;?,¤K?H£Ç½É@¦¾y⽕ç°? u•½=ãl¾†“q½X¸?#¬%:¡ò?8ŠÅ¼ö›@?‡ÆÊ<¶ °¾Ô·>í¾0Gg¿Šµñ?+ßM½ö­¨¾[½û\?2è¿w "¾Ö¶½ù‡¼†{ˆ?B=b½ƒ€à?b.Ö?‘¹¼µïÀ¾°l?yö•¾•”¨¾â ¾dßF½”°¾Jľ7YB?RIp=›Þº¾šsˆ?hõ;?äs”¿€Üž@üÝù@—%о#©T?hÝÞ¿ˆe?Á?b?=‡:¿o{Ò½½ø²½‘%€¾£ôn?SÖ_¾"Œ ?B”(¾Y´¿)Ì¿—\Z?YW8¾‘{:?Nœß¾¨ý¿~Ö)¾ªi´=KxÀ¾ŠF<½¼ð?ߟ?Ï <¾¦Í?OG&¿šI¢¿„$3¿©æ¼3ÁÐ?,bœ?:Ý?O% ¿…Úê?F]Ƚ«Ó迎ã½ÈeÔ?0îÎü?Sœ¾?Nû?D!?K?ã¾õø¿‰në?-G…?LS6?NX:¾,a@*§Œ?4Â?$?²áƽ¨­Ð??ˆ½%|¾dóϽPë̾)Ïß¿}¢`¾ƒ ~?QÀ?Ô¥—¾¸S¿¦bF?FTw?Oʬ?KEü¿˜×J½ýL`?×2$?ëƒ{?0Ù?W¾'õ0?^YÀ¾S@ѽ¦&"?$&½~~?5ÔĽÐér?šæ?@VÛ?.ŸT?J¦?⇽1p>Ih?Ps^¾‰Qž?(Ká¾)¤ã?QµÊ¾¨—¿WξQÛµ?2ø¡?!Ö(?æF1¾–ÉÜ¿ƒV@?G/³½†õR¾‡\¾b¾lºÜ?éáG?$6Á¾MåH¾ÿS¾éÖ¿´ j½Ä,B¾‡{¾Uqݾë?ÝÖñ?Ëø½M§\¾'o%?Pg|¿‘O„¾Ad?]l?‡̾—g<óˆX¾q~S˜½“ìì½ ¾Ø½w2`½¢e^?äš!½ú€½ °¿i¹G?N?m•??ÜÖ¿‚3<¾ 4Z¼å?7;^½`2,½áiN?‡ º¿—Š”?D¯ã?Lá€=8 è?,Á½Œšì?EY½šŸ ?Hì2¿÷¨?I£`?`Êj¾kþн‘€?JÜD¾Od@*ë>À¼?á©ø?qœ¾„.f?B»?J š½ŽXÒ?r c½Ø꾆ÆÄ½½rv¾%ƒƒ¾¢À4¿—5ª?Ù½¥?8w†¾l†Ø?Z!$¾ ž8&½—%”¾¢Ô¯¿†0ø?++;?{ 5½çKè=ˆý¾?Þc×½© Ì?Ћù¿šå辈Á%¿‡~„?8aß¾]´¾ta¾t¶0?:ôô?g…?ÉS›½Âcò¾‘ø2½öÌê?"€}?ÑʾrË4¾<í5¾—óh¾Cl,¾p?¾ÐñѾ¤F?`z­¾¼åã¾ Ya?’迈I«¾ᙽú†l?]²½?3u€?ì ¿ŒbUÀá ?.KU?.’?£½‹™Ì?J9ž=žÄF½é÷Ícº¾8Â? ew>ÚB¨?0ÅF¿‡8l¾-(?4ù–¾š@¾¡.?Â@½Çâ>¾|`žj¤0¿¦µé½ª{¸½ÙˆÔ¾ŠÞ¾› ‡?k+„¾‰U ¿’1Ï?5ˆÎ¾v¨¾ÅÅñ¾p=l?>”T?EÂ(¾–~?bÎh?Yàh> p¾Ë™¾“Š-¿†+%¿fÜ^¾2_ ?}(¾YÒ³<Ø0?-?\Q ?WžV¾ŸÊ?]ûz?yóì¾/´®? k8¾)¢E@ž,?NÊ?„'¾H-m¿€×þ¾*î”>-4¿•dä?hߤ¾*RF?N•?>Ï`<… ?EÍŽ¿¥Fš¿£Ù½“‚,¾+PÔ?*[Ǿœ¸ ?@!w¾£Üž½lÄ?d´x¿|ƒA¿—ÛB?ÂÑ?B¾$?aýq¾Q?Æ®*¾ÕO=g”¸¿ˆV5¿SvF¾1¤“½?Œ¾EÀ‡¼‹š0¿›½Ú¾{s<»CEÀ¾'­½ýú(?3÷O¿m›Õ¾gH×¼G@¾wH?v,2¿“­½k è¾§×Ó½Â0½ÏÝT<îð?á¾1¾±Q™¼ƒäȾhD =WØT?UÀ¹¾RÔd?=Ž ¿†i?ãü;ñI€¿‹ün¿~Z¿“Ï7¿‰(B?+Áè?^Ý—¾CF¼iJ ?UAŽ¿(Ìľ¾Jš?Lƾ~nn½µyÌ?EÇ?>Ȭ½çÛľޙy¿s¾\–¾BñU?0׫?꽆¾×}>?J‚_>÷G†>¡qö¾©:œ½¬ˆ?-º¢¿šNª¾q~n¾ƒ¹á?'^0¼×hÐ?:úç¿B±¾i Õ¾O­Þ¾›µÃ¾SÞ¿‚? k?0É2¿ŽrŒ?1z¿y¾Š¼f?ìÔæ¾_FоW«è¿–‡½öáØ>ùí=¾c*Ô?Dƒ½#°h¾‡B½µñ.?!íð¿ŠhB¾fE ?’Û®¾ ?wW~¾,u=ˆpx½ûÍb½äÀ0½C†½¬ M¨?T¦?Q޾B«R>öi¾‹¾|=Y• ?,Fà?W^g¾7Aì?|1i¾–Y¿„ܾFa¸?í¬ê½ 3\=Sü4¾c‡u<›à¾'øà¿m0¼¾b¿´?c~Þ¾r{b¾¤u远v?ïôÚ¿.ª¾ Õ~?F›š¾–ŒÐ¾éF½¶%¾a‡½ììȾlÉ?L‡ã¾j ?yI@¾(bï=àùœ¾Lää?Z9@¾àÌY<ªœ°?#U$½Œ·¸?È/®¿xè¿—Cf½Äº?Õ=³`4¾yLQ<Ær0¾5¶Ž?O‚V?9ðù¼z<¿–JÂ?Tد¾q¿¾ 0¾Ë¾´?/z‚¾Àa©½ˆ4p¾-Íæ?8¥•¿Š «¿˜Þa½ºàø?&M?ô4=>ÿ^þ¿s¦$¾±Œ¾·ú?>Aô¿,{¾Üƒ±;Ñà€?9O7?=5`¿’¢]?C"쾎áŸ?º]\¿™]5¿XÔG½£>¿mþL¿A½O3ô?B1¿‹™¾£Sº»Ãµà¾œ™¾ó'¿–k»´¤¾8+¸¼ŸÕ¾ºô¿w:?Ø–F=„.‚¿£ª?L¹h½þIè?N™¾ôO¾GrI½újÞ»•¬`½Æ>?_ ¾*~½2ì?A`½Y(½ë+Ľ¦õv?ˆÎ¼ÙÌ8>„™À?\ê`¿“‡X?Oá?HÇ ¾'f´?Gzö?è©6¿—SV?<\Ù¼¹Üà¿{M²½õ÷Ö?b@?'–&=N–Ô?W?õÆ?-X*?S·¾6Dཥ‡*¾8£ó½ó¬¾Ž­i½>ßD¾)‡ý¼¦R¾-Ï1½3&„¾X>«½…?-Ò‡?;%?À°v¾ ²½òl¾OÙ?Sðø?3;2¼¢è¾Gª,½µTÐ?2»?Q-p?G¼d?Cž¾Xÿ¿¢G)¾¯gH¾4v‹?%2x?k“n¾•Ü÷?R?B†?N¶©¾¹Ía?P¾Jë?ê­’¾„¬?dŸ‰?%‰³?]¾¾Šâê¿‹b¾G=q»ã`?0•‡½Õw,?3X?cÔ,?¿ŽÁp¿”+½ ¿Âç?U‹ø¾=•Þ¾!“h?e8À?·×ï¾[?Eþ?'n½ÑX²¾D¿Gɾ{•L?~ô¿“U¥¿–? ¬¦½Ú´Ò¿”!‰?ƒô‰½Ñn(¿¡qp½½§@¾(3d?H=¿l¢¿’hÍ¿]ˆ¦¿ˆ’?`ŸO½¦F¿€nG¿Ž”¢?eQ¤?>J ¼Õ¿‘!?¿oÀ??MÓ;rXÒ?E©v¼ZÀ?;Z¼»ð¾u擾æ*H?íJ½œµÀ¿”d/½?!ðx;ÀE ?D°d¿\,¿š!ڼŌнk|œ?_?à?)÷¬¾:Oê½ýÒð>áè¾Ac±<îøø¿‹"o=⌚?Ok½?¥¾Dí?H¨Ö?ÐI?z´É¾A»}¿y?`¾tÿ?m'7¾E±œ¾…Þe½­…Ö?Y”$?™ ¼W˜?Éhª¿š e¾•'^¾*“¾1ª?c±¾LÖ?>¾‡…Ò¿sœ¿“%o?]ŸÑ¾È-‹?/Ž]¿–GÂ?xà´¾€hƒ¾Içx¿Œ¶Ô??—w¾œí.¾<Œ¾A›.¿†Ê£?A¿Œ’è?ÝÄ®¾‡1µ?"Ù¿óz?Cÿœ¼ƒ ¾, ˆ½¥ì?Úµ¿}ÎØ?SÆþ?~¬F¿™ˆä?H&â¾=Ã…?8O§?Ù¿ƒÛs¾]Zr?@MH?¥¸p¾€;>¾Ã×þ¾†¼¾µÈò¾%•°¾‘ÀÒ¼¨\à?+ÆP½VH¾7ü?8¿Y¿–Î(?JmR¾a”*€¾F؉¾«~?/Îp?B¸b?0*‚?à•b? JG¾i—ø¿¦›|¿³?Üø;ÇÎÀ¿“¿‹:@¾‰•¥?ðz~?-Ûà¾1º€¾t`?N!Ã?%Ña½“:8¾n9¾FP[?KG¶½õ¤$?2Š¿¤k_?3kÌ?+8h¾Þ}‚¼·8X¾/Ði?:«´¿‰ù?8Ý >ï’ø½D&\?9'ñ>ÐHÎ?Ô¢?Y!Ž?Í„Æ?H&?!¼?+!€?Þi ¾-E¦?6͹?F—?ÚÕ?I;Þ?1 ĽÿJà½û¯p¾ó¦¾Vޤ?K†¾¸ÿ?hú¿…[ǽ©aú¾jzf¾6^L¿Ä4?F¯”?ô?7Fʾ+â0½É¸€¾¡ï?2ßZ¾)½ÏDú¿‰^¿ˆ ?Z%ã¾öt? @›?7G¾¾îï…?ˆÏ´?b†ò¿lñ¾®£?MEœ¾Y\¿|$À ×~?…êc?@½œTÆ¿ˆ.?W ?fäÙ¿ƒ\5?;Bƒ?m©¾n#=¢.Œ¾vT½¢Ç6?Fö‡?qg^¿…?½Th¾lÒŒ¾1M¾ Åz¾-´7¾7Š?ƒ`¾¹ì¼±Æ8¾ˆ€=(?HE²½×uÐ?,·f½wŽ`?a+K?\ô¾S i¾[—¾0º8?†WF?>¨æ¾Í@/£Z½Šß ¾­žÐ¾a޾9?o]C?H½"½ÖÝF¾¤¤¿€õæ¾md#?<¬?<)?r¯?Ok´?Ûo?Dª•?qÀ0?EH£?–.Ô¾™•¾²A¨?JÄ”¿ž!¢½º¹d?Ð{S¾7J?8C«?]p?=s?j×?ÛØ¾—º?Òúÿ?^ ?F†S½x… >õ&Œ?[¬ˆ?D"нk¼ ?á,¯¿gõÜ?6é¿d°ø?-xɽ"¼H¾ÚöB?`®Ž¾ ãp?3§ª?L'?NM¶¾¹ƒ¯?ßYù?8Vã?WÛš?A¯K?z-L¿‰ Œ?ø?È¿Ÿ´Ø¾\„†¾06?nô޽ïdt@:É㾘A콤¢2¾!h½wF¾YÄ_½nŠX¿Œ²[?MDÈ?<8@½²¼Â:xy<íÚ8¿5><2­°¾Š¿…³¾œBÞ?ñ‚½õhR<©H?&²¾ O½± ?ä´h¾]3=Iý ?[¿ƒ„¿¥ô¿’÷¾nÖ¾Q0–?1¹½C}L?d\ì¼z ?8t?F<Ö?#A_?W"ß?++8?cœ¾kj?W[ý<%À?VÝ™¾’ ï¿Àp¿˜²`?T2s¾‚˜å?À]¾…`À½Ó˜J?2?XeȾ6mß¿~ÆX?-'½„;d>õ¯Ð¿}±¾:.½H­Ì?9Ò?bÁê½ÖR¢¾ ¥D¾Rœ6¾/f¾(2?a+ö?p£¿‘q ¾™‘o?e?9…½¾ 쪾8ÇÀ½îâ¼?âcf?1Mž¾™ ?`]4?CP¾MY;¿—'F½¿4ä?:5?ðœÆ?,/5¿€Rš?,¨Ì¿kO«¾…ˆ?If?(ÕA½ûkl¾¦Ê?2éÞ?.Bø?53žî¾[-Z¾Å@?BD¾X Æ?;£6?>|"½££x?T½Œbξëô⾫?$pÂ@kY¾¾¶£r?ú?a‡…?4X¢?¥¸?\r?8U€½òF? :4??ÅO¿–ù>¿ö«¾›qø?c9/¾B¸>¿@œ¾§ø½q¯$=÷»Ø=%',A|O½É”¿9â<õ㾋ꭿv‡&¾˜<½Ékp?TAŒ½—Ñ€¾†*Î?UË꿆¨M?n®¸¾ˆ™[¼é(è¾+”~¾=•(¿Ž9h;‡]½ÂÚ?d犾2²y<¢€?@ÕV?T¨ü¾L å=Yñ<¾h¿t#½¯ª½³Úx¿–d¾l¿ ¨v?]@_½½BV½¬T|½ÄÆÂ¿yúl¿‡°½¾À$?Ø¥G?]Dd¾øô?[ë‰?=ø&?tõT¾9óî=ظ? ¢@?ý‰Î¿P©½ì¸?6³{?Xs ?,Fl?S̨¾€%œ½öbX½F§´<€¾L¬ ¿Œ„ ¾„½Åx?Þ¶ò?]e¡¿’8­>»œ¾@¨ ½AJ ?8_®½ÐÜ„¿’9?ahA>ñ2~<Ê&@¾<>¿`ÈÐ?(H¹¾ ýÊ¿ô¶?j\¿³½4ô¿AÛ<§ºx?3ìš<¡>p¾¥‚ž¾iN~À?süý¾„J$½8?9ô&¿‚T ¾Wþj: ?—v¿f~¾Ê;a£À?ÖI ¿ŽdU¾¶:²=.ï@¿…™V½70>¿$F¾'è? C¾xø ?(‰=”îÔ?î9½D¶¾Œ0f?S"ò?Ç{K¿†ì¾f1þ¿v¿ ©Œ¿‰ŸÈ¿–X2¿†Œ>þ ˆ?I_¨>ÈqW?`Ìf¿–u¾ Y„?)Y?L¤‚¾lp’½5<Ü?Õhý¾Tó=½–"ø¾¸×Ǿ…rª?>Xˆ?ÞkE<sw"?0ït?×H²=©j?){…½cø€¾(|_?Q™´¾›£?Op?Aذ?Rw?q ½À œ?C[B¿‚Ëf¾E7Ò¾/þè¾Aš¾9Žn?*s_¿ƒ¼ƒ¾Ÿî…¾1£½ûà`½í×ü½òrx½´Ÿä?9ð½ßv @o¿Ÿ[¾\NrÀÎó¿r ¾Š…Æ¿šþ¿â¨?9 ¹¼î˜?;ã'¾M„¾Î:u?zÈR¾hb>êþ?0T?ôTa¿†k?sBY¾*ò?Ù/“¾v%è¼í è@/¹4?Wð¢½ýâ¨?$Ûǽíæ&½²‡þ½,0¼†.8¾[ƒ+= …È¿ˆ]=ít¾B©¿™K¹?1%B¿ŠKM¿›ÃY½Ìˆä?<%H»×Í@¾…-¿ŠN¾žÑ¤»‘j`?.™«¿–Æ?Ñ0­?u_½xy|¾`?àÙˆ½BéhÀ怾Þþ¾ZKž?Iƒß¾‹= ¿y½­¾ƒFQ?ZöÕ?0¾QàÊ?F¿r½O¾˜¹³¾®\¿”iоÞ4¾ÊÛÚ)ý¿‹&¨¿½½úN̾Gš¾åsã?,†²¾8z¾€ò½¬H<¾7c’?e î?);¸¾‰>Ô? qL½z©Ì¾›H ¾©Ü¾fh(?™%?E]F?¨e<á¿P?"qÊ?`×+¾`ad?J宿‹æ;?LŠh?17¦?>‘º?=‘"¿‚ùC¿¬<´Î@¾XE?+ØP?!` ?N†¾_«æ¿‡ ¾F¼ß´x?16$½Ýý?8濜D?$´¢¾«?Á{"?dY³½Ò.?a%¹¿¹Ô¢½¨T?~.Æ¿õ¨?drp?H©ƒ¿ 8½¹)p?Ͼ¶J¾™4.?˜l¼×Í8»¸Q@¾ÎÓÖ¾~b¾m“Z?=œ'?[YY¿˜ˆð¾,—ý?1X‚½õ3H¾w3¿¿ÓÙ>\K\?8Ü¿‘›+¿…zÓ¾ μy¾m§Þ=sÂ|¾"m ¾+J?.9h½`|H?SàÇ?gD¾8”J? ß¾Vƒµ?eŠŠ¾‡ß¶¿ôçÚ¾”<„<ŽtP¿¢b®¿”„¾xîD?Ãa½¶ê¸½s•0¾fOÒ½£}²?7-?3½ç¿§¼ÇCP? W̽‰¼¾A¶¾Öt¾xpb¿¬b?àï?~²a?%­A?ZOŽ?CÀ?íÚ?ám'¿{—r¾‡?oc«¾Œ ¿^’ö?Ä' ½­ ¾ ±¨<ï €¾Ï3ȼ„>€?w¶ ;Û ?WB?|O¾ED?Rkݾ“8ð¿š5ˆ¾-˰?Y2½£öÞ?uÆ@?8š†?KÍÁ¾¸Mοpͤ= ?‡"–½á¹¨<Œ8°¾]v¿‹ñ?>й¿êÞ¾6ÿL?'’P?@qv?õðྕŒ<ÝPø½åø?G›»½™¶Š?Qáâ¾p.I?Sé&?P‚]?c°º¾IƒÍ?÷Ue½ÿ°Ð?S#¾Íˆ?a\%?PZy<ް¾Rs<¿ƒ ¿ª]¾ø ¿‘>õ>Ð|Ç?F7õ?y<¾h’@?mè¾,È@¿Ž‘¾?xô¿r Ì¿ŠÍ¶¿nëq½Ðô¾ÒO¾„tÀ¾Z2i?Õ°?*Vð¾¢:¤?mÊ?Õp¼4Ÿð?7ß?R7ý¾@òT¾†¹ó¾Dî?uSŽ?9È8?:á?Ú®·¾HF¾\r?`)?:ÇT¿”­¾pT½‰8ø¾õ)?-™R?Âñ?næÐ¾‡r2?B‰d¾)xŸ?;}?ÑVì½ O¸¿”•¾;T?rÂ?H‹4¾žT‹<Ç è?ÖV¿„;¹¾Hн{Ç̾·©1?tyO?ìd¾V¶â?ÃϽ—»à@+—x½òBÆ>ÐP½µX0¾¦Øk?kCÄ?>=1½„û4?×Bó¿ŒHÔ¾h#?f ?8O%?FO¼?Ë ?2«ß?Р¡¿1·v?%‡Ë¾”‹`¾>-??ñÙȾn½'šÌ¾Š‹?Iu’¾D•ˆ¾/*8?+}L½Ü,ü?a©€¾/±B¾ ¯Þ?'÷æ>aó\¼Õª?D.,¾éξVv„¾Ó#?)3´?B¥<¾¿Q¾8&,¾;_'¿•±½¥K¿‡Œz¾Ÿ:š¿Žª+¾‰}§?wÐ ¾6žR¾Üšå¾ŽÏ?6æü?Ð\;øÝ ?Lgf¿†‡¾«Ó™¿nV?ÍŒ¢?d²§¾žG½}¸¸?æ °?8?Od4?k>m¾º{ƽœ¦Ð?Cú÷?l„A?/<î?–ŽÕ¿¡îX?u㿉âw¿nú½ÑU=øð½•¶Ü¿€U¾*­¿óáØ¾ËÆ?\sd½ÁŰ¿~’?Y¹?n~>÷›$@1ª(¿ƒ‘ú=?-¬î¿ÄH½).ä¾Y[ ¿i%w½Ú^(½µÀˆ?FÀ”¿c7?Z)V½C$¾sï°¿‹Â¢?G`?I™t?ì`}¼…0?I‰N½&QÀ¼+æp?hȤ¾Eó‡¾y4*½Ã~F?uf‡¾©^¿ƒ£É¾WÞ̽rò¬?F ½WX€?ÓR½YŸœ?>3 ?iJ ¾¼˜R?X:3¿™@G¾1Ið¾˜?c< ¾‹×?sˆ¾a/3¾Wl¿š)7½X'¾\Ͻ…×¾¾‰ƒå¾€¬¸?: ó¾»(8?"½™²¾ºL@½âú?›Œ¾*Ò¾:Œ1½öÀ¾¹Î¾¡±?+&t¾ª_j?ÕÊ÷¾{÷½µ¢h¾ •¿—q[?F©ð¾Àåê?M¿ró??\ñT?=ø›½žµ~?)ö¾…޾Œêd½Þ¸Ð?(D?YDf¾…¿Š„è?ÓŸ?De³¾º: ¾1î.?ýо¥ÿྊ$0¿t> ¾þŠ?rᾇýܼ ˜?•?^¿¾¾±Ë?[Mþ¬7.¾=̾ì~?Q€\?EP>õ.N¾°'’?GFL??NÇ+¿Š¤K=2ˆ?£™x¿Ž×Þ¿uM¾}?«VS=À9 ¾l"?@yó?D‚ʾ•¢? ‚ö?än¾‹ȾŒx¾¬+Ž?S½S?-›Ç?HJ!¾)u?jþ?,½¤¼¨€¾œ=½â´ ?5?\FÄ¿jÞ¾”µ»?1Ƚ£¤?ËKT¿£ñƒ?P¥~¾D}&?AB\?JN?Ùªò?Ú £¾ÑÁ¼h¾ŸÚR¾•?=ë?>V¾Šíˆ?;|ä¿©ò%½ã!¸¾¿Äm¿ý.?55ž¾5¬¾|-t?;¶0? Ô>Uh¿—Y?j ð?Ôëžg­’?Õ†¾”w¾Í•þ¿ {0¾d·)¿gο¿võP?d"_¾—ª¿lÕï¾Ô«¿w—¢?ßI»Éc ¼© <çfP?A K=mŒ?S1ë¼Wо¡¢Í½Õ,¾‚ø?ƒÍ]¾Ôõ?cÉR?ÝiH¼¦]¿‘5?‡Èݾ+í½AÔ¿ª ¼±“X?g}?zªv¾…÷=ãÌŠ½ð€>½ ?HªB½±h?Y›x<ã&`½²¤þ¿„ Õ??  ½Â=*½íF:?d/e¿Ž¬?LëÍ?.°a:*{¾l6?{¬Ã¿—ûνF.p?EÞm½–¥ò?HÞ^½Ȭ¾5÷[?QVJ?)뽿²?4%Ì?EÑlÀ \¿~ýì¾_â1¾Óê¾€<)½´–ð¾&'³?vïl¿—Ù?]À$¿”û¤¿™ü¿‡ÞÑ?f²ö?PÖ¾nº?ÞÖ¼?`áç¿§‚ú?qzA¾v08¿Œýz?2Ôu¿ŒŒ?=(½Aд½ž*¾ o0¾J©¾>md??KM»'Þ€?õ¾Gr¾DŸü¿€Q–¾Çmþòx?#p!¾t–¾‡¾$OG?8Ž4?B”¾M\#½%]¸½—Ò¾à!¾„h?’?Kç?M,Ÿ¾Hr¢½ÑvξTUá¾5ËÅ¿¥¦¦?M©?Éý€?âLÉ?*™J?f–¦?!‰d¾‘H}¾\½t¾ ±?0T6¾'/×¾u¬B?Rá0?Ö㈿ví@?Ç7¾@Ä¿ŽY±?C§³¿›!…¾ö¹ç¾tÕð?euH¾QN¾xV?8Ùm¿“KR?/D?=´?/0X¾Zlì?4™Ö?Q=|¿¨y²?l‹×?Ñ…Ç?d¼¿ŠØ4¼œbè?B':¿t”g?K¥¾[0ð?+,þ¿ŽN=?.¿†Ž?Re@¼…… ? ^„¼q€?TÉ?fbú?^9?íø†?Hîß?F@½æÒz¾/¤¾6ùØ?P* ?3Á,Àm¾Oêܾ¤Ÿ?>í?a×M¾”ÕV?5„¾DãÂ?ã꾂Œ½œïð?$ÂŒ?Oˆ¾¡c‰¾ ±Ò?*©N>k°8½ç|<¼/òð?i€?èÔ2¾",¾†a­?Q7=&Î<¾ê[¿…1\¿w†?bzå¿¢„;c €½yE¼MÀÐ?^6Ä¿uø³¾6–Ó?ôX*?F(†?…l8?ا¥:à]€?N1X¿]÷'¾,!¼?Xjµ?E:¾{æ¾M.X??àO¿ˆj8½m÷¨?M(Ã?9í¤½B€¬=„ x?QÞ¿sA8¾E±¿†d-?cʘ?Oª¾"k¾SI?dþ?~Ñ¿–P½Ô?8&º=ƒ6€¾gÆ?qåv?7õf½±‘ì¾Vᔿu[L¾(Ì¿Œþ—¾—ÎL?Lé?1G^=(ˆ¾FÜ¿‚ „¾D÷Å?M V¾™ÓŠ?}h¾d.`?b?TÂf½¤%:¾¹Ü¿Pª¾Q=²$¾‰¡%½±Dr?$I¼ÜØ?:u5?Fƒ›>-™€?J-Ž?×*L?L„r?&{!?Jî5?7¦?Arq¾Pª?iÐ ¿œ²t¿WÒ¾šð÷>ÐN?¹ˆ?Nlv=¦±P?T¸º¾‰|?[` ¾oçu? ŸÜ¾_³•@¾Ü¾!8?Lö\?'Zè½—æ¿• ?OŸZ½æP¾›J?K^\¾ DÎ?;Üç½ÆÏ侄%¾ ‚Y¾¥T]¾`É\? yоh$?Èñh?–xÌ?@ X¾::Ê?ڌܾ!â?6ê.¾/l³?AXï¾,{¾Vq[?OŠv¾>Ω½Âœ ?FÓ¾U"¡?á ½?̾-¬.?G¸^¾7¾8¾R±²½| ¸¾6ª¾Ç–?HŠÆ¼ÉJ8?9䀽—¾2@t>î?é t¾MM`?WÏ¥¾&è?.8$¾-C¾ŠÛ?舽€>¨¾\•E?>I^?d›¼à©€?ÛL?2“T¿Ž[⿎>_?^Ê¿~¾lIÛ½[š(¿ƒŠá?}š¾žu ¼Pâ0¾K¦S½€_⿟{‡¿Æ4ƽâú|¼N¦@¾’} ?Ø9Ì¿›y·?BYæ¾r"½˜áœ¾aÙ[½¤s?Øy?GFñ¿¢N±½]æH?Là¿f°ƒ¾@Ö¿ý4Ù½u¨T?rGн°Ð?ü§@¿æƒ?‡Yt½Ä.¾Õ?gä–?eÅ„½Ð †?kßÂ?T‚q<õóp¿Ž??H^Ø?ë[£½«½n?3п}¡n¾r¨J=ÅW¾z–?v€·?+™¢¿’¦?Ÿ¸?uBÀÑ|¾‡Î¾Ç+ú?]d¾ºlS?eÉT?QbÀ=†¢n¾2à¼)û¾Ny†½{–¾.¤T?uð¾Ym¿„Ýc?X?r¾Í›¾4´¾Ö¾‡îS?dg1¾Pé1¾¤[¾ q?|Ô]¿„ ¾†¨ß½‚.¾BµÜ?Ö\,½'šH¾Vu"?ƒÅõ?ZG\½±*¿—ék?m!¼?Sx¿ˆó?_¹¿v¥¾?EÕb½„{è?×.½•O‚>øŒ¿—L?.z:½Í*ò¾…Í,?^ë{¾šªš?Xݾ{Y„?a6¾º›½z6x?"ˆ‰?¤ï>¾‘ã„?VöD¾Øy¥½CľT[e?^Wj¾ƒ‚ ½·Æ¤?- ø=Ó ?´ô?GGl¾eW? _º¾P§¤¾Ë³¾˜ l¾‘ô?Ê<оيA?'ª2¾Dd¾ Z?%F<ªßð¾ƒ,?^&d?8<%4°?!ìß½‚¥²½hcؽ¼õ>µe^À ª\¾OV½$?G?SDê½ûÝL?M‡Î¾lLx;ò·€?LÊí¾R?Gä6¾U ?8>F½Oܾ`Û ¿‚=`¾CûA¿èc¾Pa¾±ø?;wU¼¥FP? "ä½±½?tƽñäl¾§¾r½ªe ?Ç'Ö?SÂq¾ +þ1?;*¸½[)ȾÔ/J?o݈¾WæB?[¡¾RÊW?R-¡¾])â¼î|¾m!T¾6¬w¾ŸN'½0âÔ¿‘)=¿û=¾‚=q?HØ6¾Î>½(.ø¾íê5½ö–l¾š, ?ZC×¾©xѽ֠¾Ê©?[aq¾¾”â?87v¾”.¼©ྂÉò¿Àj¾„P?/.¨?C—÷<ô°?Êê?óؾo‡²»ôµ¿ƒ³¿u:?1¿û]-¾ øš¾†Z?`!ý¾B¾¼“ ¿ˆq̽à¿™ ³½¤ÛŠ¿”@ýÐÐ^¾žî±»Óœ@?A¦°¾T›˜?+€V?N%Æ?5¤V?JÓi¾Ûò¿?äN?IÄr¾z)y¾NÄV½Å_ľ˜>¤?p•¿”Û~?VD¶?Aj¼ôNø@+¥*¿‘•´¿¨†È?Jö¾6ã½ex ¾}{ð?B-‚?ÉÒ¾Æ|¾^­@350¾²G¯½µi\?Ûø?[ã?/…(?Râ?M™š?Y¶N>àÇ?9wT?$ÚZ½EAd@,Œ—?REY¾¦Ë˜¾P+?(‡æ½ux¾e `?SÍ”¿š F¿‡q??ò¿˜ª‡¾Œ’`¼Bnð?<À¼Ú?¿ ?ñE?1%’¾¹>’¼¢(h?‚æ¿Æ+?Ò^¿†ÿ˜Gs?P/â¾Á™?OÍØ?5.¾®ßl¾n®¾?W ¾ ¡­?qà? X0½Áx¿†R<¿‰Í«¾‚wØ?$úÉ¿œdϽªN?Ènä½ñÍ?Ð×¾Œ?£H½ 4l?'£¦½Ý Š?ÁÑ1?Vô~?AJë>fú°¿¢T¾2m€¾VH?yÒ*¾(„Õ¼ .?DŲ?Nÿœ¾7bO½‘ûF¿†ÚN@;R,?/ðL¾-:¿­"?àŒã@#d¼vô?ÐæÑ<"k ¾+½½ñ缿<™¿b…½ˆL<Œ`?´ô¾4.ò½Hô?.º?…˜#¾¡„Z½Ÿ¸Ä?T'L¿nÚ¿™Øÿ?EÂ?é>!¿}p]½k0¿|Æ%½“6»°J`?é ù?OÖÀ?Ͻ꽌I?ÊC:?Aëc¾pf?ÜyA?4ëB¿€§b¿‹â¼?Z†7¿ŸÐq¾œVÞ¾Ò³Æ?;ÜY¿¢Æ=¿–¤•¾ÀÑF?UÄ¿œåh?Q e?;¹Ø?b*ó?¿È¾FT?@ ¼‡s`¾.vÿ?fWÛ¾£øõ¾*6å¾:¹|?ë››¿’[Ô?çæu¾Œç]<õ°¿‘˾^C¾ÎÞ¿Œ ̽îSš?E©¾ª“¡½Îù¾;U½°îN¾<¯½é>^?‡ì½éúÐ?FDM¼ïp?V¶@?Cs½¹Ï ¿‚P?;+ ?]Yè¾…:Z?ij&¾”¼<¿‹R‘?Ú”—?NÀ¾iJ ½Þ#d¾vx¿Ž?$#ò?Ú§¾&¬ ?;‹Ò¾Š¹µ;¿ ?TòJ¿…†¿¾wÔI½T¬?E_?TS§?,T%½Æû̽§Q‚¾ª’¾–ÔM?Ží?ßìQ¾&z<½ß¾?vÀ¦¾+}:½¤›˜?q(¾‰vØ¿yÛò?mìf¾¯o½ôþR?cÊ}½Å#|?>µh=ŠcÚ¾›VQ¾Lê¾Á?Y¿-?LŒ±¼ ?Bå?\cƒ?²éè?g1©¾äM?L"?L O¾hr.?H¢s=¸?SDà¿uy‘?Aúl¾0è?Ršf?g,)??ú?Y쿯Ng?gÄØ>JÀh¾ ‚ؽüÏh½ 4>ö[=q©X?"Û½Àqj¾@†ú¾!D?=}]½ØÐ’?;³&¿•!ϾPr¼í ¾’4,¼ ë¾ð“?V”À½Ö=n¾CÍõ?L,¿ ¼«¿—UM¼óÚ ¾·ÞŒ½á ½¢Mz?\;,>½h¿‚b?%-⾉*?S­­½ª›t¿¥€™¿‚#ü?Ø+ƾZ·æ¾›Œ½á|ª?¿K•¾eT¥¾×]?O¶M¿–ã?nlܾgS%?=Ì#¾”œ¿_ˆ¿•S¾X|?LµŒ?nºz¾É¡¿‰nú?ÞÇǽ(N|>U‘¤½Rà?Ýuó?JÂ>ú”?‹Æ¾(Eà?j{+?øD¾4:?·¿ dÀ«%½ôaz?'š¼ÀÀ¸¾—ÍØ½» J?±º=Èm4¾Ûm¾…?4q“?18L?.Å^¿’Ò4¿•x¾…›o¾¶Qè?XZ½Çgº½Ä™Ö?:?V1ž¿¡üÙ¾V“Ô?PLz?`µõ?>Çf½ëÓøÀ¡ ?T—Úb5¼d«0¾w¿M1K=üˆ?%´N¼A½¶l¿™yb?OYë?ZÛ¾6ìÌ¿yQj?÷ŽI¿ŽÃ0½;6ä¿¢ty¼ÓX¾±%ù¿€xJ½h—|<‘2`?R²ü=€<¾¨Ÿî?o¿•vu¿dY¢?H*‹=&ô?U€c;Øh ¾‡ûzCžš¬@†–=Šëô?>dq?l; ¾ê¿tað¾6<½¾s,?%»?X¦¿ˆ4þ»ö7`?K—B÷KAΡ½EÄ?MY«?b‰¬¾ Q?tjò?NÍì=¢À¾–P¨?SMqºÔv?*h¾h§t?b¸?Xm{?J®æ¿’JJ?ã˶?A:0?$]Ð?C?À?»^?–¾l¿Žü‚½Ùľ½Ew¿‚ÐU?Vñ˜¾©?RƒÌ<Ð…H½Ë~?daÛ@szŽ@»-ð?0yk½ ½4?:JO½ùmоþç½Ãúο™Ñ?ø,¾o"@< (¿–ʼ?J ø¿›Dþ?ê‡ ¿  nÀPÿ¿Ÿô6?Up¾1~€¿o-¾™oë?P*¾w¾^?XO,¾ .½ô ?Ïß1¿dvZ¾]h"½°Ax? µ’<ÌÐ?!,f?áââž?l†?:ÿŠÀ ’?=É*?D?,®T?F›ë?IãÒ½-7Ì?-2?^<‚½Æ+B?‚¥¾º=×?ë $¿—/µ?[Ìr?^k»«`¾'?L¥ã?К´¿¹5½ãn<¿pzu?1”?TžU¾mÝX¿ Ád¾4è[½T ˜½Æ=½mÔ¸¾ ’H?CØÂ?½^V?L=¾ Wæ<&¡@?m ?½pЈ¾3•?n.½Æžh?tið?*?пÓçÀ¿‚_¾>›ÉB¼©÷¸?^O‚¿_ǾŠÇ\¿Ã?¾E[2>¤¯¾#Å?]âˆ?PYàïc‚½ÕŠÖ?5 ¼”8?Q§À?iä?!YAÀŽf@”Ë ¾8™½ø.Ì??vŒ¾?諽p/ð?*Ì¿{,©¾]»¾½•XÔ¾^LÃ?Y1?Bö?t€ ¾¨w€?EÚ¿˜ây?]Q?æˆV¾06Ž¿†…¿À?@ÿV?Zla?;¿ ¿˜u§½9þ4¾~Îì¾Y”¹H?í ½–3.¾mÈ$½ÓbJA´ñ¯C6”k?Öšv½Z½¤Lt¾®Œ¾ z?Iå?fñÚ½ü7þ½òÞt¾AÆÐ¿tlß¿ª @kr?EÊÆ?*Wž?1Ók¾p4뾫µ/¾-Hä¾5óo=ZPx½ó´ì?l<,¾sl×?Zf¡¿™ÎÓ½Di¾² ¾p1ο“÷Æ?C!ð?Nëª?fŒ¿¨¡9?kQ¨?Z†l;ž¦ ?/Âö?qý¾,!ë?p¡ ¾ù:êJ€?%ˆ »‚À¾›¹~½Æb8¾?+꿌p;½¡øö¿ƒ{p¿ŽrÀ¿Ò1?Üߣ¾:Œb½—,.¾_¾)>À=zK8¾.<ô¹ ¾œP?Y±ñ?/ß½Ei§ð?/uÈ?ª€?ÜŒp?íY\¾¦‹½Y˜?®ûÙò½$Ìܽʀ®¾JÆ?q/¾rŽð?(¿?jƒ1½:˜½â¾8|"½Å/è¾ÎAÉ?'”;? <?ZÇX?F1ñ¼àø½Ã®½~t¨¾hð¼ö¾+*D?Æ×\¿‘ós¿’§?gðë?1+ ¿‚D?æC?X¾¾£­ý?HÒ?"Š=¾!üò¿=$¾ Ã÷¾X ?|³+?0J>ÓR#¾i§˜?<Ë5?GsŒ½R ¾”)ò¾ É?ÊBî¿žŠ‡¾£+â¿‹ÈÌ?žæ?Y~l½ü䄽‡"?4s–½'Òø¾+½äÒ¶¾ÝÕ³¿sN¾Ÿd±?d—?}½÷‚¾¡ðú?aŽŠ?2˜ð=Œº,?3qò¿V,ú½@Z¨??ƒÖ¾sq?t`ð½™,¿~×ò¾x9¸¿x3K¾H¾àñ?Ɇ‡?4ÞU¾È?f¿„”Ó¿‹>y¾th¿™¾äm¤<²£@?bƾ ^¾AQÍ¿e@¿•2Œ½¨áȾuüj¿{L¿“y?Zʼ?3C¹½’쾊ˆÜ> Š¿½É½¥ç’¾2½Ð(?Ý‹›Aÿ¬C„ŠA¦ÆN?J;)?U?àKn?2?Ü]F¿‰ÞžÀå½ð³`¾ebÆ?O/Ͼ®•ç¾x-?äO½°Ìœ¾3¾¢ÒF½ Gœ¿è¾U²]?+Y޾¦©¾'°´º C€½Õw ½Ål"¿˜þ¾dóÀ?1‘¼ùÞP? ãѽ„òì?\~Y¾]ñ俟­Ó?Þ¿ü?I¤%¿ŠÀ¼¾|¾˜îN?E4^?dì²¾¡?Jåê?õÄ?èep¿š¦?`‹˜¿¥ÊÞ½CÒ´¾›c^?J-Q¾Ä½_?aRš¾Wzؾˆ~3>Ãd¾|¸¿m)½îd ?H¹Ó¾ þ]¾DQ?9´s?B+G?if»?UŽØ¾{n’?2Ë¿‘k©¾t(µ¾‘ªD¾—®Â?|)ä½ÙNô¿„©æ?<œq¾Rbü?Ì{‘½½žè?C?K?9[Ø?Ó É¿„>>ºGN½¡f¾{„´?Co¿œr?M…T¿Ÿ8ݽÖ]à?Ü×$?j‰¡¾lè?X.ê?vz¾<Ùl¾Zs¾u–¾ZÑl¿’X¾²ñ¼™Õ?1•>èz‡?ŠX¿˜»!?R&¾…F.¾ˆø¿Ÿ¾&ºç?P(‘?-,á@ /w? ï0?Ôy¾°ñ@?Oܶ¾·¶?V\"?û3½_8¾FÆN?Güæ¾ä?Qý_?&:¾Ž¾÷¾ªÐé?ò{F?ØÝÖ¿¤E?´Æ¾¥ ¿ŒÊ¿¸s¿°³½ºA$?,Æ?);Á¾°.¾-e¾•R0?'Ü?¿¾|—x¾¼—?S/±¿š™Ñ¾'¸X?h8¿Ú{¿”I³?…‰@?Ù+‘¿:ËD¿ˆ.Ä¿eq~¿’ð <žÁØ¾Ž¹*¾–нÕ*?„iÀ½öK(¿‚0”¾l)½¹,:?TðI?~éÊ?L{s¼‚Ò`¾tsX¼ ,P¿“¤Õ½ ½Ë ¦¾êô/¾€9d¿‹ÿ‡¾'“<ÔèX?c§c½VQÔ?CÀê¿™Á½åÞ¾D¿wW?bÍÁ¾Áfr?bHƒ?MƒÃ½t?Og?ñ:™BBÞ=An­¨?5ÅÞ¿}’? Ǥ?63I¿•ˆÒ½ì¹¤¾Â7^½ö–”@*?‚£`½ÌDâ½úð¿‘qнÀ´´?:Þ@¿‰!Z?Pe¢?Vd?Dt^¼Æ H¾k¨J½‡X¿’Â+¾dš¾–á ?Mü*¾$–R¿™]¿¥ÑX?>Y¿”Øx¾S[¸½‚ N¿…A%?^bë¿x¸!½  ž¿›œ¾¬}̽ñ¤ò¿ wT?èñ|?f9½}uÈ¿¨`?Uå¾gE½öž€¿žu½é¾‹.¢¿¶Ò¾š<Ñ•¨¾ê¿› ?ŽV¾õî?J$è¾°Ïî¾)Ó´¾&Ç‘?)*D?TR¾¾Ì•>r¦? gD¿”š¾@[ <<(¿“»½‚ìÔ½ãÓ(?áÌæ¾·³B>„-?)t?]‘ýÀ R/¾ i¤?@â¾Au:¿®0l¿’ ¤?à½)½êâ¾Fn4¾€x ¾¿.ý¿zò>?Q›®¾"q¬¿˜\??>;˜¾$…Á¾4À?+Õf?P¥@?8†p¾51̾€Ý‡½Û—D½g˜ø?%‘(¾ ì?CŽR¾~éÞ¾q[?3v#¾/Ðò¾Ö"¿Œ«)¿£ "?;##¾PJ@?/6¾H_°½u%à?"FÁ?CåÇ¿ F?÷C¾‡Í¿Œtm?ßüÌ?C¯¬¾©¦¾5ö¾|\Š?9.q?;þV½» ê¾uòx?gXç¾t(¾?45F>äÙþ=O^¾[ž¿‡M?&} ¾5r?,ó?êºÒ¾¹ÕÇ?~m¾«Ä?gdƾC]Z?iŽŠ¾ ÞU¼¹ À?@£½ìè2?LH(?_?2¾sÜR?qíÑBTܰ¾Û—#¿‡Ü;,5v?TÙ=±+(?Gvƒ½¡Ž¿Ÿ"û> f?+„?FÀ†ºl=2‹Ð¾¿‹ ¾gd¿â¾.ˆé¼½µP¾v?É=Û”h?H*½™?:nY?K{/?Oòñ?v“?äÀ?hìÇ¿ï?lª@iÃ7@rpᾌ=<ÿp½à÷à?_y’¿“ÊØ¿z]c¾2Öd?H.V?èx|½åJ?5AT?D@´¾«™¾‹ö¨¾"2¿‰ 0¾X-¾>¸ù? ‚½å=”¾<½÷ð?Aæ?=¾Hƒ?U²¹?Q”?Úì?W‹d?3Ð>øA?\l0?ä÷?.C5¾š#¾½ÔMܽñNl½©'è¾EJ«?eÍÀ?RN¾PÃ:?B©/@sO¿™–„¾7÷-¾u]¾t¼Â¾”Ùù¾ ^:?QY{½W$¾]+?;‡f¾-•u?FÞ¾§.b½IžÌ?Lÿã?IÚ¾Sì>¾&?E ?9V?#ÝÀ¾¡-¿Š_²?æáQ½Yr|?äg˜¾€û?Pý?W褼ã%ð?oø¾‘å?´qô½` 4¿• ‰?^û¬¾š¸½”:à?,9š¾G§¾Î±}¼‡ ˆ?#ª¾…ç_¾´ ?<Œ?/Y0?A¯¾S¶Š?ÚÂß¾bˆ:?ßìI?58Ì?Q ¸¾€4=¿?ƉJ½\ïп™c*¿‹ ¼?!§î¾Åfd?×P³?Pf›?LóÓ¿•Ê?'Qξ>u?,Ý?@à? ¾H¯ð¾´ÏO¿Š  ¿S26?.eÞ>Ⱦà?é 7¾—)Á¼ë(¾rcÊ¿<Ž?zÞ?T€¾•çz¾IQ«¾£l¼×ýè¿›© ¾«Óü>ÀŠð½ÇZÖ¿Œ Ä?HÎ`¾Å¼¾Œú¾©>Ý?æ"Œ¾l i¿Že‚¾œmˆ?O?/Ï@5Fྌš ?3‹H?¡½ß¿›kÝ?Ûð¾@У¾-‚ü¾R“Y?+`N¾,ü:¿g7R?Hµ<Õ3Ð?8JÉ<¶úȽ­Ôd=wÜ? ˜8;!†À¾T‹s½£}¿‘÷>%Ú~½yì¾%ÑÚ¾-j©=qô½m†¼·®˜?:"+>Ž-?HFß¼ÿ‚8½á·Z½×¥ˆ¿ŽE;>¨Ò?;bZ:Œ;€¾4•½JL?O÷+?HíÈ?BJ ¿y«?ßAˆ¾ Þ?P±h¾7:?ã¤F½×³:¼™€à¿w¾$a„½PĘ½Ø¹(?d}û¿‘ î<!Ð?×Z?³ù ?äw±¼â¿ŸÊZ½@ì?=il?rñ•½æÄÞ?R ʾ{Pß½©¸?*æ&¿‚Œ¿l ?m¿iç?x*X¾ùÎâ½yˆ¾^Ã?;0 ¾‡Á{¼\±¾£A꿉ìþ?{½æŠ€?3ýØ?8mÆ>þ°?IÌ<¿ñø?W­e¾Å·ä¾ƒù§¾u3¦?dá¾Æ^¼?T¤€¿’Oä½%ÈŒ¾—3=H ¿– Ú?r…—¿µÊ¤¿‡ý¾q?üv'¾‘n½¼n¬¿¥/&¿–Î1?(®®?úQ¢?T”€?k¯ç?8fÔ¾£o¾‚Þt?8|?<öÛ½ûÖо’^¹?`à?U7½›Ì€Àsd=$û4?@gð¾»bÚ¿“I+<çˆ?(‚˾ $€?-P?Ùì¨=9¢`?;™Å¾ ľ\üÐ?,ŽÜ¿‘ο“wñ¾ \t¾W<<6k¾p,¾„ó·?Ø忌ßî¾)»(¿ˆÛ?KÑ=„ ¢?0ؤ?P¶š¾-÷&?,?†s?YÇ´¾\£:?ñ¼L?@f–¿ƒ¨£?J¡Ä¾%n?0Àö¾ƒÊ?Mgþ¾ §~¾ŽšÂ?H˜Ø?.$²½Ÿè?c>üi2¿žg&¿>v?J±N@0:¾ –•¿i(¾½L8ô½ŠÎx¿vI–>Z2:=„å,?<–?‰Ö¿?L„0?m7¥?ófå¿zX?UhÞ?mà?`ʽS¿‡v½¤w8?4䊽n ?%¶»£à ?0»§¾!.?ÉE¿sÄe?;-r?s¾5a?ë"­?IO<¿ƒ™½ÿ‡¾¾0q?m”6½Dݸ?::°½œH?AD¨¿ž~à?4y½4ªŒ¾ «í½Jk¸?0,¿Šf…?7Æ?]ð©¾-ïõ¿ˆ$æ?gx`>è>©?GƒÜ?WäŒ?R¨ƒ½ì¨?=Q$?Y%Ò?0ë ¾"WV?Ò Æ?^½íÚP¾Øb¾Œ€.½´zÞ?Xߢ?Hù4×?¾7ì¾£JÕ½ÍCn¿¤Û¿à꾋@o¾Bn?î9ؽ °º¿VÙ??¬Ö¾§ð@?Y ¤½²hD?r‰ ?îC¿Ÿ•˜?6é?|¶±?2:‚¿ƒ¢½ü˾.Qü¾·)½Ýäô¾Mîü?]¦?'j6¾­’?-ÛÔ?DD9¾‹Pð½Þyò¾.ïL?er޾]Ÿ}>i…d¿’N?`ƒó?'Ü ¾p:>?ÆgܾæÍˆ¾ÇÇ[?Fr?#4?[ëï?%–'½öÍb¾R"(?dò?—½Ÿt¿ö?ü³á?<²Ü?<@´?9tz>Á÷l??Ûô?-î`¿™st?c§?&¦B¾9“¨¾x+º¾AÖ2¾”ø×¿‹}¾¿Ÿû{¾ˆTù¾¯Û÷?íÚο˜¾^à¾|?|¾—‚½¥ER¿‡Ì[?-Í}½Ü“˜?[y¿Œ˜? n¿¾P»T¾\|?X6"?M䬾cÞˆ¾?´x¾$Rn¾B˜8(¾ˆD½ôZ¿vÈz?E 3½9@½× ¿psÀ¾3í¿“.•?Z“ª¿ˆV¾WOÁ;UÀÀ?S ¿lãG?=–Œ?Mt6¾Šƒ²½Jê˜??ßø½’Ãо$¥ú½2E½‹¼¿™ïž¾kø?f`F?ÚöŒ?mÞ.¾"å?K×D?CW?F¾F¿bÙ‘¿ŒÖ§¿—ix¾¶Å¾"ʾ™Ê)¾yÕ3?Sâ¿”¥¾?X·è?@Nl?>”N?>|Þ½X‚ô?8è'?®¾¥Î?NZ2?,_ì¿‹Z?&æf?G»°¿œß½bÕ4¾¤wW¿€Ð¥¾>Ì¢?Q¦œ¾x×Þ¾|0r¾Í³´½ßböÀ Ò:?2Îð?4Ën½_<ˆ¾>Ïæ?E,¾ci?N¦¾…ÿk?l©@¾_6o?Uïa¾‚оP†®¾”z>³5y¾q+ë¿‹+¸?LI-?Z£Ø¿—,ý {̾: ”?HLÄ?áÓ?&>¿¥Ð'¾Äø½á/ü¿S*¾w¦½O(¤¾³¨í½äT?$ÛCÀ.AN@û#í?;?c€?Ú"F=÷@“¿š2A?d¡Ç¿œè?WÝ?Ev<“Ç?Õ…?6e¾¨Fu¾Gö^?JÏ¿™¾=7›>Ï,¾…! ¾zö„?.p$¾!놾-©1À"Ä¿›¸?ƒ¬®?4±Ö½™º*½ED4¿†·®¾›Ç:?p:¾I°þ½Õ«?%úº½zÄ ¾Ô:?ÞzÇ?9>z½øøˆ¿“s³?=–g½ÉÀr?LXþ?Lâî?Bºg¾|®H?Ë¿‹¾ÇJê?Cí¾¤ªI?2Þ¾¡ Ì?T&Ò?/Q:½øÌоOeÎ?I]¾sòf¾qrp?™á?UÐz¿—¢¿›åô½ûú8?BY޾cˆV½”h^¾_õœ=Ü ô¾©Ïü?w5?8¦è?Vs¾5t]¿‰Tþ½DgH?[(>?'I©¾V‚&?ç]ˆ?Y;‡½*œ¾`b¾Gw?HŠø½ÏóؾnÞ"½`®˜¿‘ü¿‚9ô¾M-6¾ƒ)å½ã<*¿ ¤P¿«( ¿_#2?`¾‰Y”>Œ´„¾>a¾Œ§ò?C²î¾ý­½Å¸½*º?èê°¼ä,`?CT|¿ŸOÃ?[±Ô¾/¤Ã?\6s¾ ä}?fJö½üL¾(–K¾‘>m?0¼„?jj,?^ÂJ¾ûe½5þè¾[´-¿[÷?yh`¿Žý9½×,¾öU?3ÍU?¹?ãNZ¾íj?Þ;Õ¾³ù¾œ¦¿‡¸^?)³¾ð­?NAç?J˜½Úצ¾‚²D?5L ?(d½®6ö?Ý!¾{ß><ä?Mž¾£õŒ¾³ÛM>¹ ¤¾hãü¿ž ½}Oø¾R¿ù?òð_?<|¿‡¡?<é½V¤¾}4Ì?G?<÷½è/ؾxÌÙ?B>?)ÙÀ¾[Yr?ÍS ¿†¸¡¾H°S½kü¾ –À½÷5¼?1.¿šI‹¾£¼Ÿ?cn;¾ƒä£¾>¤Ì?3íŒ?9µi¾|iô?J Ê¾Lo¹?7©¯¿ x¿Òv?=&?:а¾Œ6h?LrÞ¿š®©J½ƒ›ô¾Š†l?ÕG˜?-¨¾€W¾ŒñÚ¾.H¢?4½X¼¾(ɾ‹K_? ¬µ?ù³a½®…€¾§'¾?OŠì¼Æ7À?(d¾?fý^?è¢2<Þ*ø?0‚È@õ@?±Æ=vÃP¾„?Ò½J= ?I,?ñ¯Ð¾B“m<Ô¶ø?¯ê<½Ö˜½5ü<&7P¿‰ ?jTa?8„=žýò¼Ä·@=¥ €?CkA?q–À¾-A3?jÍq¾ax´?gxf?a¸~@?œ|½òVÆ?z…r?H´½Qd¾0*h¿p»<¾ øŠºß¢½ž-˜?H#u¿‹9-?ðJ?I¡=?ô5¾?VŒè¾Qоhº€¾8ÛÒ¾RÔö?þ¯¾‡¿(¾$Ú*?Eß‹¿‰ƒ¾ǽ$%ÌA ÛC ²¾‚fÈ?„vB?TfÒ¿‹@?½´ &½ärf?:[¬?bE'?8ˆ^½!úT?,Šr=PXœ¾s«¿v Œ¾ªox?ðî¾O¤?è"'¾0(ð½‡|j¾€Xê?â¿¶±?ö¿Œù?"d?ã­¾¶º?A½?ióT¿†Ÿ½­ä¾Y5l¿ƒÉ„BœÅ(B«žbCŒ‰B»‹8?C)ß½»B?H¿n?gå¾]Ǿ¨At?hž´?PÈ«¾ Ñ7?G%š¾€´Ó½W‡ø½òÕ"?R8œ¿”ñ"?%Ú¾‰m¾Š1'¾“Þ’=ñà?*ý?9YÒ?Ø›>½­¾Ö¿‹v?c|n¿“Õ¿½ Ú?%šB?Æœg¾]Žd¾9Õ¾TL?¶=M?&å¾d#ƾu¤¾-U“¾I¾°½’š„? 0¢?J½Ž¾Ÿ;¿¿‹»ó?¬Ø>²çî¾ãž#…?ì?A+=¾Œ[¹¾.Ë?×0ª?Ω?L?9së¾dÍž?;wô¿¦4º¾d->?C·0¾×¥¾ƒÌ?5G[¾¤w½±"p?.™?A\:?NC?d¡ú¾pÁ¤¾0n¾PCP¾)â>K¾°?DÞ¿–dù?ì‚?9¾z?ïx­¾O¥¾:!¾Û½¬lL?Û•©>•§¾jÆH¾ £g?!è?'Ba¾ŒØ0?Ý7?~…?R½Z?нnªø?Õj?†½†?$¨â½&ä˜?öHE¾*§6¿™>¿xï–½ƒ”¿j*þ¿§$U¿‰N?EMÿƒ°Ÿ¾&ð-½bS¾‚‰<¿ˆø@?´Ö=6› ?ã6à¾*?RW?H‰r¿Qa¿ƒ¹ª¾6£N»M¬€¾0›9:ÆÝ¾Y$ºv$>ûô¿Wn’½£>ûæŠÀ ûn¾Æ*š¿†-?BÕÁ?bV¾Š$0½ÿw?>á?C“-?ÓÊÚ¿Vw?Ý—‚?LÏü?-²§?íφ?Õ70=Lо…sÉ¿ñà?I„È¿ˆÆ™?S:?K3Ѿf]?P4ð?Å¿o¶ ¾)\¾8É?8ª^½õ®|?YKÞ?R6Y¾mð:?iZ¼½²4Ö¾sÖ>¾‚Èß¾•€Ä?×Üñ¾3£É¾*þ?a‰~?P>¾uŒ¿˜É¼¤X¾‘Ñr>×äŠA{l?Ar*Ë?Ø×‚?NÏò¿ƒñ?b z?U7t¾>y–¿‰ç?F)о5(º?P¹^?AEÅ?Hò ¿”@V?L3Û¾ˆ^¾¾+RØ?1¿½•?ÒôÖ¼(Ç0¾œá‚?úÓ¾¸09¾´e¿’Äl¿–¾ûü¿|¥¾%ïP½Çœ¾Ë×¾i«¿’wi=¨µæ¾„žD¾+;ª¾7t"¿e è¾Gfã½o  ¿…—i¿“=ξFÛ?`>Ž?#¿ ½ª-8?G˜ ½Ø€Ä¾WÙ¾8y¶?T²à?ì½ö?Ey¼½bh?2¸â¾üþ?á~¥?tÚ5¾kŒ’½B˜¿§‚Ì?q,á?)§¾?Õ…?Aap?S?-ñ?E~ ¾Qg¢½àh´>t 4?d­¾Ñ…±?fëモ;ɾ(‰¾¡ k½…{d?1ë?çÿé?G&¾,+ˆ¾· à¿€>f¾†¬$¾‰…Ü?%2?L¹?õj½°Pž¾‹ƒ ½×»®?3†¾–?}?Bêq¿˜ ‘<­@¾˜½«?=·¾kœæ?mØk?¼¿˜^l¾…5&¾ ic¾¥$?p:!¿œtf?Öç¼Ökè¼mÑð?Aÿ’;b?`ÚB=P˜€¾NVÙ¿†”?[±q¾,y¾ª†î½®4*¾5+{½GñÈ?OZ½ob,?KÒÜ=‘,ü?H8¿r€¾wõƽföô¾ Ô©?{Š*?Zà?aÔ™¿;5½Èîæ¾¾$ ¿µþ¾–¯½æªx?XøU¾-±Y¿ x¿ŒMh¿7þ?'FÖ½„rR?]‘.?å¥Å¿‹8t¾‰ƒ¾¡Šf½6ZÀ¾€™>õí†?2Äv¿s G¿š>M?;´Ò?(–?F¾”¾‘¡‰?M"?D^¿€+¦¾„dß¾lY¿—¤ø¾?f,?K:èÀSå?%¿˜{¿‘O¿‹F? ?PèL?gR¾z€?78?ßíɾ«>Åþ¾‡wx?F à?)U”½ÖÇx?'ï®ÀLÄ?A…–? °Ð¾¿—½¦pz¾ƒïH?aR2¾Ò?QQ?ÓM?æ6о·?8(3?`ø?<Îû¾¡oǽï ¿Ÿt½ç³d¾‰W[?^c:¾˜«x?Iê‚?Dã¬?[$y?IØZ¾a‡ô¾^‘³¾U¾†¨¿³`?6”º¨ì€¾š ¾„°?+ 0?•GÞ?B‘c?8¶Ò?!©þ?R¿¥>š¾MA¿¯}È?Tþ@¾Œ*¿{ÿ>?B›¼¾i?¿™NŒ¾3ûR¾"9¿ˆFÏ?1²®¾9n?-𬽉÷¢?;/9¾A}Ø?>H?Oö¸¾‹+¾ Õ¾<‡¾½¯¾¤XT?Q^2?AJ/¿aé¾·½×•h?+HÐ?×Rz?äè¾GL?3¹½¬#ø?QÞ½Àbà?;©á?9 ¿¢•”¾}?!µ/?Juz¾{8ì?cnŒ¾¨MŽ?KŽj¾rYÐ?43¬¿Þ—ö??ɲ?4 ¡?X¿e?,‰½°S\?m£½†Ê ?-‚¾(UE?Üû†½TǸ?$ôø¾)f¿›VŸ?jL‡¾m½ÉE„¾6—½\k¤½¬;à½aUð?Øžx¾{½ð¿V^?Q€/½Ÿ¢’?cMk=5Þ„¾!aÔ?…VFÀÕg¼¼uˆ¿jB?q˜J¾:YÛ=ú3*¿…ÄŠ>⯾dQ4?j|´¿‰ú¿ëJ@nÔ#?‚j¿œVB½6LT¾y½x½Ã¤¾Ì¯Ÿ¿dÿ<¾Oì½ÄÙŽ?<óÞ¿’ÖÔ¾}Ïã?nÜ“?): ?‡±Ô?¾d½£?Á½éaŒ?Ä›p½ÜuV¾“O¬¿…F?W_J?EǪ?Ví콸…ø¾€çÉ¿rv/¾‰–¾¢?CÖ¾0÷ä?׆¿‘¾‚l¿uw·¾)Qj?Ix?.”1½R{ˆ¿ƒò?>;¸?Çö?iò¸¾\ýÎ?Þæ»?í¯¾Ñ?}”?W2–?8o?QMú?C Ò¿‰Q§?Oø§¿Œd ¾LuY?AŽ¿œ7ê½ÝÕd>ýí?hÃu½Û|J½éül¿˜ î?Cà¾Yw+¾{ùB¾‘™i¾]R>ÑÖë¾&T~½ØÉ’?BAø?BÁ? (Z?%®N¿êš¾’ä‚?k]÷?7PP½Ç2h>ÓM ?MÁj?8Ö–¾e¨ó¿ž³v¿PZ¾~·¿‘<?4þ¾+j?¸Xº¾ñ?0mV¿Žvt¾‘o¾?îs?Ò©¾ (—¿š‹h¾Ó?&i¦?~ü¾„r=Zñ?ö¶=‡ZL?´Ž?ðv?×Ôš½ÒéP¾Í$b¿šÆ²?þÉ?HÊ¿™{ò½æ ¾Šæê?¿’¿—h˜¿œqµ¾†à»?B¾…Uº?(˜â¾º0ܽ]Ð?¥³?èÅT¾n?¿„3®¾Î¶¤¾;6q¿™¹?B€~?(T®¾£œL?%¢?R(3?4&à¿•i‹¾{#H¾žì?C6?hØ?9Èæ¼Ã¤€?BËG?&9??7/´½ëëÆ?Bn:½û›€½ñ4¾.à…¿”\?L9l¾¨Çû?6?F?½Ê¿˜Òå?¥à¾ N¾@„l?²¾| ¾Xо¢Å^?\’ ¾vRB½´¾ ?S=Â꺿ƒ¢¤?bDˆ¾j==jž˜?81ö¼Ù®H?#F¾ %?a^8»–À¼¶?nbA? þ¿e\þ¾%r ;í#à½ýuƼÇFà»\LÀ¿‚\¾0ï?Kо1i½L}œ¿Ž”–¼÷f(¾»E½!Ô?S,J?Z Þ¾l?j½ËÅ*?.$x¾+?Ä?9VŠÀe?¦ÏV=;T?7à ½¿~޽¢u¬?F¾”väºí€¾I?A*ó¾–¬¿†;¿³¡?,À¾9"'?H~€¾Š{$?:b¾•Ü6?O;’Åê?SCí¾£âʾ}Q?E»b½–²€¾_cÊ¿m©/?Ihd¾ Ô¸¿7¸¾/&?½åó°?ZǾsn¿ ¶¿›Î.¾'޽Òݰ¿ŠÊ?B½'¾¤Ê6½Dü½Ïç?[Ó:?:A-¾KÎ?;¥Œ?T G¾Zk²¿v“®¾‚d³½Úûø¾kúg?&‡ä?ÑB&½¾ÑÔ¾ˆp?8´˜?,’<¾KKnA|nœ>ŒNw¾LB…?¤i¾9½ðk¶?áhp;ijÀ¾wΠ½Û’ð¿˜bÿ½äS¾ Yc¼=>À?C\è?Yú¾—“Þ½äŠ8?"ð?R˰?;h!¾e]ྥ¿q?`¾P`ξ*vç?/L¾fƒˆ¾”úǾROˆ¾\çF?ar®?%Øê½¨š>íŠå?Ukƒ?1ŠØ¾%t?@ŽÑ½Xž¾^ó@?Pü?)"$¾y8?,Îm?Go±?7Mª¾2‚l¾Ì•Ø?QtX¾–ôx½±ŸÒ¿»–Ô?1á9¾Múþ?B€½=ƒ °?L)d¾B/T¼ P?½”?IŠV¿”eܾ`ú„¾¦8í?KUn¾p³î¾6­ˆ¾–h?GÚ?ÓÝf½ÛIˆ¾^¯X½m6ˆ?аå?Dsç?ˆ^¾pºü¾_H,¾Ÿ©`¾"`æ¾ÜÔ?5’ø?O¤c¾c¾ö7½®†°¿‡¼?$Ê–¾ï¢Ï¿©\B¿Š%1¿¤K¾Kª0¿›€Þ?-Ø.?Ùh‹½²Ý?5f¶>ÍxÀ½Üu?l¦ú¼ÞÁà=Óc®¿• ¹¿pU<¿ŽÑ”=Œx¾sZ¾¹b¿œV?XÞU½ø'"=‡B>ßM>Bñ•?Gãç?:ªz½Îkx¿uC)¿”&¿ZÒD¾`µÐ»¤N€¾Õ˜Ñ¾*R:¼-‡?uª°?RÄÛ?XÇ ½3Vh?El?Ux‚¿ot˜¾tŸ¾”¿‹%H=r?ìVz?{^–¾/êÇ?J ë?ERϽG@?Zþ–½"x¾géi¼dºð¾\J;{]€?a%x¾ƒ›?©Ó¿š¡v?,ˆ?fÂû¾s.Z?Uªž¾Fâê¾(mF?DYõ?OÅ?@yP=[ª@¿•ǹ?W.⿚Ž;?/Oø?(޽’ß–¾Ÿ}3?m»'?Fhc¾)¼½©E‚?qfÞ¾j@ ¿ ‹Ò½Î­4?@¾TÕQ¾é>ì?%¤è?/<¤?2º¦½ùcj¾”å¾,Û¦¾“s¾Hf–¾n½ËŸR¿¸ ½6›è? ú?Ýz?5Ö »…# ¾I_)¼pà¾Ó”×?ó’v?.ÐÔ½¾FÈ?>s¯=´?޾"2î?<ï~?H¸¾À ƒ½[€@s$6½WöH¾“틽ãZ"?@*?}<¾++Ò?Nã¼½ãåT¾Šú?Ûô/?؟ʾtóä¾ [ª?è´½ýªŒ?-Š–½ÙÑ ?![T¾¢‡??!p½*’¬?I5 ½#Ëp?HË꿈Hx?Ø]î?RKæ¾l|/¿‰!™?&zA¾2<Û?A‘š¿üe?IX¿‰Ê ¾ˆ X¾ˆßö¾%0ö½½Û¤¾R½2ox>á}M¾"1ˆ?Ï—o¾I¦ì¿¿_2?Xç ¾nï¾K'Ž?+ŽÖ¾dÆç?0”ð¿‡Éœ?;$¿‰r3¿¢œ?5¬v?;D’½mÈÐ?:H¾E.¾Ÿž_½å°¾­Í¦À +â>˜…g¼¸†?NÀཌ|È?,à†¾]øÄ?)»•:ä¾§m½Œ\¾8+ù?@u°?èö?;Iœ¾‘z2¾1|¾©7Æ?O\?,¾TÏ4?7[×@ ]ɾ—}ü=œ-D?XÄ?=$¼?LKƒ½8œ?f z>füp¾”ñ½5t?+¢ì?oœG¿‘+¶?y>¾© ?d:k¾&–>½P¾ÂÙ¿¦V?h¼¼½ /¨?`W ½Ù… ?_K¾-×?â$q?fô%?‹lò¼}^?6¾?&oÔÀQº@®à7¾pó?ß.,¾ ¬?xbn¾ <š=ì¾Qt½óÝØ¾V9¡?e;y¤½Ž„о3-?Å<¾k³‘¾&à¤?2°?KXÞ¾¾üû?DÁ¶?@°?Wî??ù½f ¾nݯ¿òÄ?ß3Ô?â»ñ¾uÈ`?eÒ}?9ß ½0|¾‰Øà¾Ú¾Ž„ä½ZR½†sN?S(]¿£²ê¾*w²¿§Û4¾?1r¿<Ó‚¨?L[!?jžÅ½Ó3̾{°?.¥u¾Ùd?9,É?W»¸?#cͽ¦Ë¾Nà½Ê ²¾Cý>?gZø¾b.?M¯‰?1<¾:D¾YÑ\½ ªH¾€œú?ä3p?&•ñù¤?]U|?8rÁ¾-‰¾Bµ¾<1ü? Ö®?L9˜¿•³¾g>†¿#?BÎM¿²Ú+?\ãx?Ñl?h ì? Ø6=m$¿š÷Ð?]? Im=­©h¿¡bÀ½çú\¾Wy—¾¯OÂ?FÔÐûR¾HrÔ?I´Ø?9y˜¾&XĽñ{L?ÒƒÇ?O‹k?Ó£'¿¤Í«?#ú–>^¼Ê¿‚5À¼:70½ÅíŠ='Œ¾N•=íóF?8·¼ÆKÐ?7+o¿‹)×?cc½ËTö¾€¶Q½¨4¿{j3½Ú@¾?vr¼èË8?ßi¶¼:$à?[6Ò¿€éH½l¢¤½\Í(½”莽»<¾IÔx?É`?< h¿„멽–Æ$= 8¬?Y‹Ü??\¾¾G¦Ä¿€fª?é,?Û·ö?D`x?J'‚??­<$©0?a ¾ 3s?àÐÒ?mµ¯<…À¿Ÿ¿“«¾8о\Ž&?jâ(?ã c¿„Al?"-?Zh]?5ÁX½ÈBø¾¤ ¾°4ð¾Fr?ÇÉ@)n½˜ZÊ?Yk¿‚h?0½‹Ç2?¾…—x?={ѽ¯ÇX¾ûw½™N´?U}T½ØÉ¤¾M{Œ?\šF?-Ðä?V6$¿™¹¢?ûgª?/L?3>´½î="½ÎÜF?-š¶½Ïð¾5]Ǿ¹˜?8vì?kå©¿‘Ïn¾¾uÌ?ä×¾{Â?>5ù¾Rýÿ¾„ñ¾¤^Æ?é¼?ø´¾#ðz¾Ÿ ?Qꢾ&°´¾hò?¾¾/ûý?GJ)¾‚K™¿Ÿµ«?7B=?#îã?Uvç>ôÿ?Mdî?.×½€¾˜YÀ?jˆÎ¾RVò¾ ö?8ý¬¾ X¦¾“i¿’7¿›>¼½õ.¾Uø^½`输‡{?Dò?.èæ?{Í;¾3(†?BAÎ?TZýšñ@¾’u•½ž¾NáǾ Z[¿©ç?GYÞ@(é¿h?42¬½× ??Š2?a|×?#ð¾ß¾’eŠ?ä[?Z’å?ëÚ•?Ïãß¿…)¾C¹¿ŒÎ?AöÓ¾ lj¾9\Š?ó’`¾…½¹¿¤º¾Y7<„G`¿–I"¼åbh?^üš½ö©²¾CÁ <¤m¿Œ©÷?Væ¾¼hÎ?e¾fÚÇ?}–ð? ñð?€›º¿‹$Ó¼Õ˜è;H[@½yÈÌ?LÖˆ¾E´"¾@&ù?VK\½é¨?8×<¾†D?sä¿™€†?E§¾Þ%½›²½ùxZ?1$â?3G¬?aè`¿fÛ?‚"ù¾n*½ž"ؾK¡j?ß龘A¦?Q™ñ?'íò¼Ïu`?É·Ë»Sî?$U§¾!Kã¾ ¿†[{¾ ø ?[£ã¾Á:I?måó?9hè¾™á?3 Á¾7 þ:š?Éè@?Ö(‘?h„±?T“}½Í`’¿™„£¾ "ž?èL¿ržå¾]u?TS‰¾¯Íd?dŽÊ¾®gD½øø²?9¸½¨H¸¾šyR?`Q ?'ï¼Ü辌¾¨½m l¾yW?-™Y?MXŠ¿dk?äB³½+®´?7½¾°ä¾²ÿ|¿‡™Ù?Õ°;½Îçø?¿’¾^Os? G‚¾B˜4?5§Ö¾)”?.šòº½}€¾D0?-ÛK??™¾ àE¿`?H9:?0(Ú¾!6–?452¾s±¿Ž%½ä†N?)QU½‰–?Åqö¾É¬?'×lU„?àð„¾&ÿO¼ÝhȾ€™é¾†NÖ¾‚3Š?8ö×¾H™~?^‹¸?);Ö¾1?†?/¬{¿²?ºBܾ‘¬?1š†¿‡h¦?+±>ײG¿Ü€¿õ²?+Z?ÖÑ|?Ö@·¼Ê¾2s®½j¢è¾/Û@¾‹B¾fÒH½œ¶2¾X•&¿ŒJ(?ÃØ¼Žœà?<6`¿P®¾§%5¿ˆ¼¿­bF¾fÊú?³Àü¾&'@?>]h?=¿¾XNÏ¿†µ™¿(à?£t7¾tÕE?GLU½‹fÌ¿g¹G?/.0?`üa½šÎ’?W6¾& ½C6\?Wz¿þ «? Y’?=¢H?BëA?]©?í:™¿âÎ?COB¿}Æ?IN?ab¬?`.þ½’Ì ¿ŽÉ€?[Ñð½¿V¿c¬:¾z™ø?m$¬?5 ?UËо*|3:«¹€¾qkO?vb⾎ªH=’ 8?>7ú?U6€?;ï÷=Ë=j¿†“*½N!?$¹:l½èc?\|v?Ô â?V-R¾ æ?Z=¾Cà‰½ äÄ¼È ?Q’/¿•fõ¾sVº?0o?`@?F°~½’ên¾M‹·<~»`?=q½»ú´¾‚Òd½À®ô¾¿á%¿Œ˜°?eGä¾Ï¢P?Z~Ì¿ ŠÂ¿‹Ÿ¾‘·±?úœ¾Z”?O=¾5Äâ¿–­§¾$¶?6 ¾}2Ë¿ –?=1N¾”è?#ºzAÎë?“mE¾ _?Óʾ&BÊ¿´°?o«a¿­zn‰?/É?ÎR?PéM?Kø?K.¾aó@¼¼Ç˜¾ï£?=¾•?7#û¾ÁÉ÷¾üi?G¬_?Ò6 ?éÔa? sx?m?? kÎ?Ds]?À¼<ø?å_ð?MÉ5¾µ¸=¿‰„§?0”½®:R¿“¿£?@æG?'%˜?á¿˽=$@0¾ab½ÙKø?R@(½›Ðô¿©Öx¾a“|¾¢ŽÒ?7Ÿ„? +†?K0¾ÂuÀs¢¾&r¾GÈÓ?äã¾ &?Þå?^žH¾€Úɾ|'ܾɤ?.Á$¾Â[J@ œN¿²x…½œñò½Ö࿇(…¾aL¤½ïñ޾SÊ?.¦˜?,ET?b¸Z¾¦[=¿‡ž€¾£-?tÄ?2å+½¸\¾ÎµÐ?"—¶B…l:Bß)?߯¾)ï@¾n쿈¹Ý¾¾â?^•Ù¾ˆl½»×¨¾£X‚<¶5¨?2ì ½óx4?7x­?(–Ú¿™s|?N“Ô¾ªk½¬^\¾‹¾,?>‡Ö¾Ãžª½ ip?/û¼?KP¿“2[?ˆCŽ?d2=óŠ^¾ÏP>=¿½8?c;H?=Ýg<ˆŒ(½•ù`½”€¾˜xÔ¼œ8x¾-¸8¼Ë¾"þ?k`W½à›n¾*Š ¾Mj`¾-R½^ì¾LB½gT¿ë`¿E¼¯°(¾ þZ?cÊá¾2@5>°^¿ƒ—þ?Qš¹?Þ´Œ=y,p¾IƒµÀ—¾ª¬¿‰šž¿¥Ü]?i?Z?Ox8½Àœ?B@œ¾ˆÍ'¿–H?Ë¢«¾<ï?EÁD?F!¾y7꿜“j¿ƒU¸¿Œ2†¿ƒ½«¾ް¼Ã3Ð?×¾˜ê?ÑMp¼ÔCÀ?;Bƒ½ŒÞþ¾ €|=ÕïŠ>¾Sð¾Y½^?Wíh¿‡Î”¾ˆrr¾izÕ?)9?ë?Ò?'v ½_l¿šs¾0cS¿ˆ}x?_k¥¾špX?ãæ×?"“4?2 Š?&';YÀ½Ú¼Þ?QY ?&XV>ꯦ?1 ¦¼$½ß­æ½å²¿”hN?1´¾·òö?' B?-º¿›½Õ?KWŠ?Q¼á¿—“Ì?^¤V¾°J¿ˆ\?D†¸?m{‚?ü?S>ʾ{¡?j´?2Ï–¿¡C1¾Šz&?ØÜ?=ʼ½ŒEp?)Ôp?+ù@AE×Bw—à?&Ê$¾Z¹Ï¾ZD¾xC½ë»†½¾2½n>\?È1P?`R:?»*¾nŒ`¾P¬Ä<µ0?KÝɽrxÐ?Ñ¿‘i¾Æ:9?K<þ¿‘¿¿?`x»>¡—~?븾žÓq?1øº¿¤;/?AȾŽÓé?HF­¾†Ó ¿…°¦¾ëp‰¾€çà?(µÞ?G£¾e‹N?eº¾T§Ð¿ˆó¾ ò?Ú6î?ËÑ?M>¾\°?GRÒ¾•Ì?Øb~¾,¸4?Am¾x«¾¿›zø@&0u@–TP>ôžÎ?8'¿‘V½Âæp¾Vù†?>×p?E®&?>cÞ>ÌP£½‹ód¾ëÆ›¾ ?.—½ñvø?Jèì½ç(¼¿ TĽËö@¾žª?9½Þ¾ˆW›½ß'Ⱦ@ÛÚ<£^ ¿™¿ê½æbþ=€9¾ê Š?gÄ?>º¸¿†ç¾Õ€=VãT½ÙïN¿Šâ:¿„8¢?kÊî¿›>.?^èg¾Œ\M?d2n¿ŠÃ¬?Z½T?×´TÀ'n¾i/w¾4y™?9OÙ¿‡˜ ?BíV¿€=„¾I.¶½Hz°¾+7'?\D¾_Cå½Ð¬î? 4?z[¿íž¾€Ä«¿á9?az0¾kó6=R8?>Yb¾zO¬¿$·¿!?Qz¿b(ˆ?L¬®?d¢­?áÙ®<-à¾BË?Iɰ?Nz³½—Ð??¥Àá½ïQf½5gh?L[½Ïéþ?"Ãr¿ƒp¿œ¡ž¿œ˜¿ˆ˜D?GÄÂ?Üø²¼±þ(? 9?JA? _Œ¿ ?ÑÁ•½²Éð¿Ý6å?U¤?e Ò¾L[˜?$e?& ¼?_ÂL?†í?\i'¿dq¾¶,Äîc?DÒ>?ÛP¿†?+?@wb?IºU¾Œ¤?q®[?5›Ï?ò7.¾ø?H#X?B¯Û¾'%¾Ç½Ý¿v‘R?/F¾·? 3"½Rh¾‚· ?S‡¿˜ø1?B?5É?êB ¾yw•½äÛŠ¾‚­3¼•í`¿œ( ?¬ >aÖ°?rgD¾z9?VfV?2Æ·½7½wIÜ¿’_c¾c]¾lèD¾O(^½>Bì?S½Å¿uß‚½â$š¼`?q¼¬ (¿‰«<†É¨?DÜt?nñé¿Äñ½ˆ(Ž¿£uë½Ôô?pý?4uœ½ÅBL½‰«:¾Œ×ü?w?-²?wŒå¾ƒ£dºøŒ¾h¿à¿[7?>¼z¾¥áç?\Úh¾è?ÜE´¾¥Ä{¾‡™d¾)¼¾Yuú?[š¾X*,¿™Ž?5T´½Óqä?Ì*6?ï{¾Så ?F ]¾¡é’½ää@@…¾B¾@Mó¿ŒB꾸&o?Ne¾ê‰Â?VÖ{?-dÛ¾-¡[¾™Pa? ¾iÁˆ¾†Ô=½ÚñP¿"ù½P<¿Š™¾<6v¾y ¤¿‹"­¾š ?\3p?Õµ¾¹!?î ¿©Ø?/?¡è?ÙS‚?PK¢½ÜKÜ?IGê¾ÐE4¿Œô¾)¢?'Þ¾sÇ?A,ª?+æR?\éo¿ Ã?fõZ?¤8¾ô¾¢ó+?Jf«¾Mȼ¯6à?Û5Ǿ\很æz¾I£v¾EÎŒ?r»Ý?(µÔ¾:Ž¥¾§)I?Cý¾fùÁ½³?`¿˜.U?0ǾÃNc?ëGö¿žõ”¿…|¾-Ýô?b$š¾³óÀ?޽¸$Þ?EѨ¾¶¢„¾ô$?òR?PBÜ?<å½Ì`”?0´¾€/¬¾Ìß'¾Sî?$”>ý²Ä?- ¾1Õ?*âÎ?&W¾mºö¼Ž@¾~/½£6–¾™Û?æÇ?:Ø?Y7??=Ç€?U‘Z¾Ž€>?Pš>?€?I¡e?ø¿u¾5qz?8½n?ÌŠÔ?DO±?¨Y¿kn?E"²k,¾{s¿‰”)¾§9„½ê ¾k6?f¹¾fÖO?EÕ¬¾œü¿†¢¤¾†mæ¿r1X¾I1={ÀØ¿‹ M?RÞ¯?I‡B¾Ãâ¿—qb¿‰…ҿܼŽF ?Cœ ?A|æ¾! ?JMK¾ãœÄ½Þk(?³R¾bä–?(õ¾5¾EŽv½¹å¤¿©^ƒ?PB?/oÖ?Jvø¾‚#þ½¨z¿–“?½kCx?àpy?V\‰¿š„P½÷¿\¿—þ'=Ûqj¾OnÄ?T㲿‹Ë?1;ž…:C<0Ð?<¼ÌHX¾ƒù1?á·?0±”?fïY?ÌÑ ¾W°æ? ç¶>´ ?Ëék?:ξ~*¾¡Ñ¸?;Ù?@¢Û¾8#ð?2é3¾»UP?|4‚?4œ³½°ã´?¼V?W†¿–}¾#8?*% ¼ƒ/P>þ濃X*?êü!¾m®"¿Ü ¿™….?·o^?K;ô?:1»?\rx¾’j>V(^?$·¿•Fu¿M}¾o¨??€r?g•`¾„Ô¦¾?{.¾§?¾éP@*;àB+r ¾–(4?+•Ü?7ʦ@ ó$¾´cË?ANâ?;2k?^/l¾ è™?a0ʾÖD½“L¾–n3?/ɾ¥ÔW¾I‘È?,ø?8­¾{¶,¾)о³w•¾På¾?&q(½Ë“¿£¾m‚z?E]õ¾f:î¾DÖ_¾&Îb¾ j«½Åù¾_–†?@µ†?@ËÒ½„Iì??>Ö½¥êž¿¨¬½’Ô𾊠ê¾6?Ñhc¿€4?OÀ¥½Ô ô½»Ü?€ÙW¾ z?ñx‡¾˜¿tÀU?RóѾ BпŒf;?rÀÚ½«ëš¼Ük€?`f?>Íå¿”•>??˜º?(7¹?jaܾ1–»²øÀ¾B½»)?@«?B-€?4P½}?§!?M‘Þ½ùæj?U­1?:¤Ô¼Ò@¾:G½[ÚT¾.t6?[À¨?Oå´¾"¿?9Ñ2>óGù?*#È¿ Õì?ÊS·?Q)´?BsÚ>ÚL¿’-Ã?S`?*‡@?U–?*Ó?A\‘¾>šA=f=`?4Ë1½ƒ8?!4?{ü¾hO¾»ôq¾…©å¿‰k¾«˜ö?S£±?½gëŒ?,ÝØ¿Ñ«Ï¾Lë½ýdˆ¾N'p>ÚB,¿•g~¿ˆ4"?ɾտ’*¿›Mx=]œ¾1·°?Ý"T¾ ‡¼þe¾gR¼¯—à?3Ь¿™ƒ¾?L.~?8Í*?gÜ¿{ÌP?/;Y½Ì£P?¸Žî?Lo¿˜U½øê4¾bíǾy]¾…Ñ^¾ÍL¾‡ÐH¾9ö¿sî?Mò¾y0?42ñ½©„~?3Úç? Ý;½ÇµX?â墽ÞÄ?-y½§T>ÝÒé¾ÃHD?,N"?[“ü?W.??M.E?˜Å½ñݾª:u¿¤(p¿¾-ƒ¾B24¾Mè»?¸ð?ïpC?B\½˜H¾Ž-ºÎÙ¿#É"¾š ¾ªé¾]¿f?âRÐ?dE<¾“§1?ÜL?EÇ—À Ú ¾=°?MŠ?¾lW~¿‡|ã¾Nξ'„ú?DTÕ?;J?Bú¬AÎ[W?ß„¿ˆ›Ö¾R8r?ñ‚¿ˆ¬½ê/ø¾˜<|?N^S¾¦@ҽ緎>ÐǾ^(ƾp…4¾Š­“>À©ý½’¾¹žø¾_Åh¾®ü[¾°2?Êžº¾@Áò¾ÈLŒ>߸?4É⽞ Œ¾·Y?\Á*?1lο…è¾õ¥?L H?,Z罕ľp¢ ¿€kç¿“3¾7©Œ¾¤§´¿™o5?FÙC?ŒOÆ?3ˆ.>½–¾Nõ:¹«ø?O=Ëðø?Ô=D½í{?<†Ô¾«¾C݆?vÊ„¾]¿V»Ý3 ¾mN?_)?5fž÷ݾN§\?dX0?Ú6¾Â¯¾šÇ6¾|}‰¾…-ü¼." ?XÌ›¿‡òA¾íw?G×6¾·h?SzT¾d?VNz?8™è?FᾄR?;Bd¾m¢,?r Ø?ÝOï¿‚G¾qÅ~¼ú†8¿”V/¾Œ¬t¾Ëýʾ°?8™Š½Ùp>¾ÆÆ¿„§:?TÌÍ?X>¢?Žp¾€;ä?-s*½.ñ¾‰ ?@ ?>»y? Ïò?72н¾Gf?:ƒ2¾zÙ”¾Rü+?EH‘¾W~¶¾9è¾#¿r9Ç>÷Ô?CcÍ? #I?ë?¾7?Ó2:?Ž¿tg~?"+œ¾Z÷þ?=ž(½ð$?0@¿ˆšÛ¾¯ud¾!GÚ?-'ê?=|T¾²î¾i¾ÿ7¾‚&ݾŸ’¿‡vX?>~€çýӕܾ„év¿w%ë?/tú?g\û½H;P¿ŒD¡¾šv½/þ?2ÏA?\ý²¾«¾Íæ¾ÂP±½ÂºÌ??Wa½¨<¾.¥ª?>¬¿£AX?q>?6ÎØ¿„CX¾«Æ¦½»õ|¾§¿T?W_¼¾uþ3¾i k¾†Yî?v©?¾š 0¾&Öÿ¾å¹H½Ðt?I–‘?+†¾¡¦À¿¯?7Ò(¾-°h?2ib?Kñ쾕Iâ?C92¿/оÀOz¿£Ø¸¾ó?'1&¿…í=¾p™8¿‘섽±¿(¾@!?ázÓ¾*'?R¥Ž¾—O¾EuR?i[?CÀ’¾Q_“¾_ оľÈz½¾Bè?AD4<¼wx¿–¯r¿‹1 ½Ì½®?8??/IY¿µu¨¼»§8¾ &L?ÐJÓ?Vî¾·¿’àû¾J»ˆ?9¼¾sá¾kô¶¾ôÿ›pZ?2z„?N›ä?'À®¿˜1–½Êj¾rÓÕ¾„¼ÎÛh¾->e½<²¤?A›&?^&k¾8:?Ó[Ž¿¡ü<8£p?6øÊ½W+ȾÒ3©¾ý\¾VµH¿– ¢¿Ž*Ͻóôx¾©=¾ƒþ¾Œ Ö¾5Š¿•âö¾^ €?>áå?_žß,£¿Œòþ¿¦·º¿ŒоÀT¾r·æ?#ÚC?&븾~”Ñ?5Uw?8J¿¿”-¿‘óÔ¿ÔÀ·Š¾4Š8?O‚¾N]ò¿†ƒ‚@½ƒŠ°?(|…=Æ$?3˜Þ¾$V¸?3£M½l"ܽÓô?nLˆ?Ø–Ö¾?çÏ?!ºV?Eª¾½Aw¿…YÇ?F"O?lš)?H¯¿CÃ?d,?ÜBº¾‡½…¾«?(dL?FØy?!w£½¾ L¿‘[¿ÿ©ã?.  ½YŠ„¾F–}½Ì%? ÿ ?`ËÉ?*ýH½ÞùÚ?,æú?\7®?:›:¿n&¾ëp?v¸^?;Þ¿é.?(ÜL?eÁf?M+í=„D½Êhœ¾6‹½¾Câ¡?Þá¯?/:Ú?8¼zÑð¾:t?B ~?a"Ð?´,¿–ö?‘:½Š{Ä?=) ?Ruо«Ç¼ƒqÀ¾Ÿ>=8»Ø?;õ?f­<¾Nt¿’‚´¾È€A?5<?+”¯?ZÃ)¾”‰h?Tgd¾wg}¾±¿–$m?at ¾³±»9€¾–­à½Þ¦œ¾‹gí¾2h?¥T½L7h?E?£¾-îâ?0¦½†j¼¾€©b?[üŸ¾ d?a“?…Ø?Rô¢¾‹Í’?M= ¾°ú?fªµ¾E€¼½HEà½æ6=tš?9ÌÎ?ç·¿£|´?dz§¾¬Í¾1O@¾pýénè¾=Üá½ùz?KeC¿˜“å¾ †ø?X¹Ô¾zÌ¿9¾Ã±½ÜÁ$?(׿’H?+4¿„`¾”‹­½Íþp¾Lß`?PêÀ¾†‚X?>k¬¾‹(p½âÏÞ¿ ùi¾6ê?;lL?Y€î?Í}f½“j ¿•ˆE¾»þؾ„t‚?<¿À?o ˆ?E%m?B†a?Q«p;ˆ@ ½ò0?I×?x1{¾E`Ƚÿ¹Æ¾¤òU¿zŒ¼ð"½pæd?Dм¿š‰²?J[×?P}¿xÑ|¿l#¾!À¡¾hè ?Û×â¼õ×`?GG$½\¦½Á¸ö?bȾ›¡ð¿‹ów½C“X?Gðb½~#Ü?gïÈ¿"¿=Á³â?èGÞ½†;Ä?Ú*d¼ã~X½üS½ûÄè?/%¾.?%¾ÈB?X‹ñ?e°:¿žEù½žŽ^¿˜üª¿”?&¿Žèµ?ì5>û§ ½~­d¾`»0?\ª+¾¶/?JWý¾7B¾wÊ€?,ÀG#?”Œ?[Hq½íh¨¾B”4?´¤¿„ü›?JËȽx¾™Jª¿—R,?32½Þ ¾0 ²¾>Žð? }ã;¨¨?=¤¿Œ, ¾7¯'Dqú½žÚ\¿ŒhǾáþ?/¾âÜ¿£)¼ÅŒ>ÏÔ?äc¿¨4?U »?N¼¤½ MD¾‰UL½gx ¾’:¿Žhv½øº‚¼` ¾ ø%¾!\¾Vë3?#z•??öμ螸¾”\^?lr¾|" ?m¨Ú?3rˆ¿„)@¾.?ep±?Û®?TÛ?k¾*íÔ?(нÑhl>êa¿Û‚?BjH?:Œ°? ?Þ‹Û?Æ×侃’¾z\’½®En?<;Š?T;>??`Ò?Dîä¿£ ¹?\l‹?1òŠ¿„ᾌ (?d’:?6~%¾Žº8?''¿ƒ½ê¿—±¿œj²?-mç?Rà;?F_N¿p$ä¾Tw¾è¿6?C¤™¾ºL½Ù½ü¿‘Ài?H°U?AR„¿€ÊվƖ½Ÿbf?é×G½ç³L¾eýÓ??ûx½¶Ž?è#F¿Š3ø¾&ŽÔ?A» ?l¬¾´Ú½ÌÚÒ¾[þ»¿Œ&7¾7Ƹ?,k½î×ξξ’t?I[ò¿“š€?JÇM¾KZ¿”+ë?M.?¦ ?Ñ߉¾—X½°}7~l¾ryZ¾-Õ¾Nس¿œE¿¢žË¿‹cì?Úid½×Ú´¾’xR½Ü@V¿¦D¾f‡¦¾Gêpt¿° È?t€ ?ïh¿¶!¾G-?WÇ@OϾPšz¿œé¡?:k¶?*ј½ë@,¾1@æ½ÀÂJ?%»,?HöÕ?-bG½¯0?;p?[ö·?, (¾ ¤Å?A •? Ê?3©]?fÿ¿²(>¿–ðÄ?*F?>¦¾O\R?eÕ{¾wS¶?R¿ø¾bªÒ½ø"4¾ (?I¤»¾Žlß?í1¨?Y:?:“¬¾‰ðj?^XF?5ð½¶O ?”„½øð^¾W“õ?5:V¾P­†¾o9¿>õhµ¾?Èý?Ñ_:¾7¾¡‘»?>Åê?4'”?dcˆ¾“çô?ŸÄ¾tEä?HÐ’¾¿?×@¿¨G?q%ο©jŽ?Vè¨?Zª?"Þ?!™?Z¯-¾;0d¿Œ&D¾Aë$?UÍJ? Ô¿49s?0Ï\¾é‚?H©~?ã)½ýy^;Ù‚€½í{v¿|…¾Nq`½þ ?*Ð:¸Ø€¾*“b?}ì1½Ù¢~?}ᮾ(Ç?ƒ,ì½Íª~¿‰T0½Õp\?OÅ?6D?~êê¿•—!?ÓÍD¾5HL½µ@@¾&2¾Á+è¿&¾w*l?9¶¸¾’ý°?,òö¾º¨¾z@?3:õ½è7ü¾lþª¾ Ôæ?;憽öž@?>Yþ½‚ØL¾“Ö½!;¸?(¾m>Mt¾µÆ»?K>¿˜{ž?ŒJ¾„´€½¸.l¾(åP¾`>ü¿¾¾i‡?4ξ'ŸB¿žÖÀj2?*o?H^µ¾|\?Ó»¨?&¡t?j/Q>âÉÚ?ù^?Ï»?]‚¿ LÔ½ó[>¾k¦¾½•o~?%£¼?F‰P¿‘ê¾5 ’?$±„?F¯¾‘M4¾J C¾L¼?Ö ™¾ª½ÀÑ~¾ÁZz¿…Œ×¾„æQ?ï-¾'°”<[±@??Ê罬>´?«œ?ßF¾ž¾ z? n»’Å`¾a³?GÕÏ¿”ÔÓ¾YØ?#¹4¼±@ˆ?×î{¿« ú½ú$0<ö›ˆ?ed(<ʰ¾O˜N?€Æ“¾ †©¿kÍü¿¢´w½¢|?ë48?JÝê¿ <â°½4¨˜=œb¿C?€CÉ?NDF¿:vñ¾w=×§T?L6 ?Sš¿?Eßš?o;¶¾£.?|f¿ Sl<Šß`?RÒf¿„\w¿t?f–}?5©é¿Œ>Ū^½Ñtª?Søp¼ó÷¾Në¸?[LJ?=NŸ?TzÆ?DA¸¾Ž½Ú B?m¥Œ¿œÖ?Š»V?!ý?ˆÊžÀ ß<žò ¾>"¿{èæ?:OŸ?©æà?@ýB¿{ÕY¾¸<.½t^¾ =˾=ÚZ¾„Óñ½&s(?<º\¼Õ~è¾(½&¿…о o­?x¢?ÀýX?Yð?ƒÉ?I#X¾¡–@?e§?f!¥?N¾…¾ Â?ÕÜ)?硱¾^{Ï¿€û‹¾pâÄ?GB‰?4ó}½öú?ÓQB¿‹Ø\¿¡Õ^½©º¨¿—§?.ÞŽ?AK›<q?:¨?æ½¾[ø½•Ù\¾…͵¿¬‡?88F¾2(N?àö¼ë?ø?-Mà<æB(¾WüD¾žØÏ?Ö ¿#×?6?W@o¾w_½Ðôä¾#>K¾ÉBY¾f²¾Ië?38[½™e@?#{à?Ø^-?3À›¿‰ì¼¿ˆ Ø?hÝé?Ü4E¾;>€¾W‹´¿4?F¤½pNä¾%<¸¾{¬r?¹j¿•æ–¾*ò®?΋¾˜ë¢?Zá¾…óL½USH?&%l¿¢ƒH¾Ší¿û˜¾Ö…B½íÿj¿ ž½#îX??o>?6¾I§¾ƒÐ ?:ø>¾œ,‚½‚x¿Љ½x ?q”¾wòE?M…†¾Í¿‹¾?ö?Î3Û? οÔÚ¾6ᴾܦÓ?ê`¾aá¿ù•¾²|D½¤u|¾¬“\¾#=ž¾<?)g¾J÷å‡¿Ãøà?/7è½!¨ ¾Jôw=åqú?=ý+¾)Ä?bÓ <˜üX?3ؽ÷»Ž?é ÷¿ð ¿—™#?[ºê??_]¿|³v¿Žµ°=P¶´¾g‚î¿C⾂Ùà>~ ¿ˆ®?pLü½G–x?eƒê>ÛŸO½¹Ô$¾)i)¼¦ˆ¾ ÷<&`>ÞƒÆ?\­E¾ Æß¿„7ø¿Î"¿óŸ<¾WÎU?c\œ?<™)<«} ?%£.¿ŒTà¾mz¿™{¼?Ýùî½6»”?Qaç¾>â½îx?=T¿’Aþ?^±Ò¾$=꽟âp?ì.?jZ°¾%)‡¿–º(¾rHD?qs½ö>n?n—?FX?<âó?alAÙû?p¼?`I»?8GÃ?X¿ŒŒ¿‘QR?9³S?èƒ\?7ÈJ?GǾ•`¿‡'ƒ¾“D¾œQ¾G,¾e«º?¿H?JZâ¾+À¾:|ö¾¶M?F‰í¿¢°l?é­2¿´â¾¿‡ø¿—~ ¼%¸>·»€?aX?;FH?X<º?-±1?Z#î¾()ç?<^f¾Dÿ€¾jŽ?Oû–¿ƒ¢7¿ª„ ¾z ,½ót¸½™³h?G™'¿M‹?M †¾'ÝG¾¦E°¾‚Ú£?*oH½»óD¾«‡%?BK‘?ÿ~?SUò?? ¿ŠJw¾„nÞ?U‘©¿Ÿ×?íf¿œ€G¾ c†?4õa¾Zh8?ÚÈÜ<¡+(?›²¿-ž?®y½¡7Æ¿“Pí½Ù¿Î¾ Õ½ÿ&?¥v2½˜;b¿‰h2½ô>H¾¤ç¿†ÀÔ¾S‘ =§l? [*½!M½íÚl½§?`?ÊŠ.? 1d?MÜ ?C]?Ù_B?ÃSA?L~?¾Ü´?51¾'¹?Gæ½ Ãx¾>Á¸½åOÜ?Cb¿ˆíÔ¾¼Ãÿ?8¬·¿§î½Äm¢?Ü–‘>ÞA?è¸?5Nâ?V„¾Öˆ½“8N½Öì??~½Œ©è¾UöÚ¿ w¿‘åe?eÏ7?#9ô½ŠZ¼?.ÜR½„-6?$S|?1D?Csö¼óFX?ã0aÀAž?.?]È?ðè¼¶¾è¿š€6¿«Ñ¾ ,M½Þ¯0¾Ó”½jž|¿•×;?Z¢ô¿–G!?“ V?RÂÀÂÓ¼D ?wÇ ¾¤O?Q0Ö¾¯/§½K̾ªÓR½ 9t¾æg½øÒ¾9z¿‚‡¾¾*$Q½—/?ÙXF?WÜû?Žö6?að;?B̶=󤾽hç8?h긾?9¢/@+>ª½½z¸¾B–½kÇ ¾Š¸±½ñ÷¤¾.]?UãÜ?BKÀ%q?+%†¿ž’?CÀ²¾J]>¾¯Å¿BÈ?=‚1?SƒŽ¾/b«;Ù`¾’!ž¿†“ý¾9³î?`v¿“£Š?YMð¾?­ªB²pÏ@×ßÄ?]$¾‘óx½©ûN¾ª}þ¿€^k¾f“#?O*«¾/þó¿†ò¾Qí?Qº½’ÊÜ¿…BÓ¿•¢Ì¿ƒÍÔ¾Šwj¿˜ñ¾•«¼¿»?N3\?*&+?ý?Ÿ^2¾g&P¿‡z?3=¾‰ÂN?4ö?]A«¿¥*1?4ݾA¾-ûx>”¿Uò?1¾(Æx?4–B>‹;|?=°½¢S¾q¯à¾O°¿¡‚¼µðP¿˜ÌÇ?T„m¾:3è?UÚz¾Rï ¾0§¿¤ÿ?çVg¿™1?¿Œ¾”ÓÖ¿Ž>澦m½Îâ¾ë ¾r0;¾ ¸\¼žµÀ¾(i¿ @?;£´?óp!?"øí?8•h?:ù/?JÌ¿“V˜¿ˆ„”;¨È€¾Î£…?'ÙB?h¦æ¾kðZ?;°Ý¿—!<€»(?jO¾B¦?4;º?ìÈõ¿˜¶0¾sÒ¶?8Qûs¾Œè!?2p½y"D? m ¿˜Ë¸¼ÍྊPd¼Ù?(/Þ¾ÿ'¾ H¿sWL¾v¾;g¦¾O_(¿ˆéƾaªT¾Ml?æµs@·.v?Ï+s½ÏÀÂ?+¦@¾„?à½LÈ?VÌ}¿’Öd¾M ‚?;µ½ßºØ?@ðˆ¿‚C¬¾.ó¿zG¾7?R{g?#Xù¿ƒˆj¾¿Ô”½3‹,?61M¾I$¾|[~½zù0?/“R½[?B¦¾–‰¾šÓf½º ̾±ÈŒ?WR?~å?Xп›"¨¿€=Õ?.̽˜Í²?%'¾33Ö¾“/ë½ÒÂN¾^Z½¸´è¾GR¼Ò?÷?T‰¾ÕO¾8Yû?Uj¾AŸ?­l¿„sü¾³¶“¾0sJ?ù·?<4–¿j†l¾” \?:@ü¾YXø¿Ÿ¤*>–?LÉ+?6bO¾©éû½ Ò`¾”ÚÕ?Nð_¾Ë ›¾_º:¾Å½§ ú¾ª¡b?{žÔ¿ªÓc?”RN¾Š„;¿›cM?<¾Ÿù•¾õ†l?S !?5º¿ˆ£–?B¥Å?L“@¾h´ç?R‰‡¾v â?D¾W%ô?fn%¾"S_¾Ms’?176À.æ?'å:¾S«n?ß”½»Ë?%Wò¾x­¾æóÈ¿”ª ?2¯?j7½äOнÆÀ¾Muʽi˜¿›×Ú½6ñÄ?$g¶?]>e?6D¾Ž!¹¿œØG¾Vל?ÜR?wz¾`Øâ¾¹Ó€¾M=ò¾<Ò½’ P?Hö/¾ü?T,ʾ“Ð?|⾟;¶6À?PÁu¿ˆG½Òt½°º¾ °n?Oµø>É ?a°(½yïì½Hôä¾%†¾J‡€¾A¹?eÚÏ?-¿–=™2‚?iuǽ^ü?é£á¿o‰Ö¾\BA>«^BgÜCLåB3Uß?D’¹?^†¿„Ž&? Ëo=Y_?]Å8¼ÃX¿™Ì¾Wý ?h~½äYH?Dý½§N?Z«j?KqP½ºà¢½ö˜?ây?9Þz½îȼ?-Œê¿¡½m¾7aÅ?P’è¾%]ñ¿"D=k¢9¾V÷†¾2,½ÿêð¿ŸÌò?@¾þ¾€Á©?`\ò¿¶¢F?kj]?%ÆÒ?EF¾Xt=#×D?3äß?7_€¾tˆ:½É7¾?)Xr?5_`¾bcd¿’E”½¿6¾#§?:È?`’?AF?g³®¿“Ô¿ˆ5t¾¯Òg?8™ö¿•F¶<ǃð?*X{½”—¸¾Íßl?:PÁÀUʽϪ4¾dýƾ5L?9«¼?_^r¾Œ©©?€hd¾´ã?×eô?0B?Lõ0?<>Ž?C¹‚¾.>¤?píè?v€¾^>¾³`ö½O”¾¢©Û¾GYؾÄB4¿·o¾HÄ?èaz?+¨À½vX¾ŒËF¼ð.p?WD½´#¼¾n2½_º¬?ݤû½›’æ?TÇ¿ƒ –?Ü9¸?Dé¾y_È?;ÖŒ½½Š4?XÂì?/1Œ?Ss ¾Êé¿’{;ª›¯¾97S¾qľ%Uо–Bʽ41¨¾•%â½Å2¿¯ B¾3¹¤¿–l?7^Ú¿îz?»µ¾«kн*Š?.T?h4‚?¡9½ ~ø?/•K½¤V?*Ç¿šB»?'ïR¾*¿üÑä¾.C%?Â˰?!_*¾ÙÎ"?P·¿?"Ò½ÿcT? ²~?8«ç?1ãä?E*Î?J>Þè­?N¹H¼z°¾?ÿm?cóð?õ«¿ƒê¾°ª+¿RL?/®0=•ÂŒ½¼¿ˆ=J|X?àÍþ½ÁÖ¬½GÄ>ÚW¿…’?9$>?K@ä<˜àð½‡N¢?‚—R¾‚ån=*Zì?>Õ/9|T¾>?3BÊ?<~?T ½þ92@ýå0A¶6|BgM?ó蛽ž¼¾EAx?úøc¾î×?B¾YØ'?Uår¿á ?€Wx?OB¿ŽÏQ?FfÝ?k "¿“¹9?G&?\oá?6=¾‹.P¾nþŽ¿Ž’&½ŸS ¾.¿}Ú’½èÜ?M9¾.s?V9Š?I?c]•¾Jß¶»u À¾@µø¿…ÆÚ¾Žb¾Ϻ?‹æN½ÃPL¾ \¾Á¾‚ J?â Z?5)3?]—†?I+ð?yrO½ÌV"¾Ú°¾To?d †?Ô¤=…Q8?(ø½!8?1´?â“4¾þµ?Û¡(?7S¿‡N˾…›Œ<8ë ?ãcj?'sþ¾¾>8?T ¬?L ¿‡£/¿¤’B¾'p¾’k¢¿†a?&n„?A]¢¿ ©„¿€jØ?Þ¨¾@QÓ¿‰q¾l‚8?!“ ?:8‹¿Ð¾GÆ¿†±?‚M7¾}Sb?G\%?Ç¥¢?Iú$?$Sk?L{¾„Ý[½B€¾™!H¼A€¾Œê³?K4?ÙÇ??Þ„œ¾|Þv¾‚ïz?¾À?"®?1…r¾V¼€? ³H½ïâBÀß’¿Œ‘?5„¤>g{´¿©Ü?F')@..)¾Z[ݾ€á޾ Ó›>Æp?JSh?'?WÇʾo˜½Ñ“\À›Å?Q`¼?ŸÌ¾ ÿü¾Q¢?Iac¾-߃¾*[ž¾ŸWI?O>«?>ãD¾Z¶?Û ý¾ ç?$¡K?Z˜þ?Aó¾Ž+龿ºž?b©Œ?g{*¾Ú×$?È ¦¾¤€?G?H ?CÏz?${¿—£¾%ÃÔ¾T$"?&ïn¾€‹Á¿|3¿š¬þ?PF@¾nÞ6¾R¿°½ÍÑ?4”ô?Ñú¾U9Ô?D,K>•¢Ú¿½˜Ê¿€~ª¾ÞC̽«¬”¾ rx¿QJ;?Õ6Ë?iˆ?aZç¿mI©?eÔ¾jì¼½ù)ø=¾º¶!?UV¨¾¹ ?lx?ÞäS?ýÉv½ˆ-=ðD~;tT@?i§¿“oѽ¦§¶¾ÐÍ„¼ 0¾¬?YP]?H<™?wt'?>iª¼ÿ‹`¾Ûì¾±¸?t(<÷À¾4qÀ?f¡j¿ˆzG?n}î?I0y?^À?F†J¿ó^Ú?3bü¾-×;?)Ò§?G4£?ÍH½½6?.oö?ó&½Éô;· ½ÒÜä9Ãê¾½Xæ¾DŒM½>IL?T”?'¤¾µWÔ¾Èë?X&½ñþ4?ÎÝo¿–C›?·TŒ¿$K¾®xýû°? ˜Ô?q„b¾våg;Äa€¿•-^¾"ßè?: ½·àD¾†ØÊ½= ¿˜`.=£OÞ?Ö¶¾½»™¦¾@û¼ò/`?ãlƾ…Àk?Ï–—¾?56¿5^½zŸ`¾i§r?Bl½üü½IÆ(?ÄÖm?Wÿ¨?GÈf¿Š¬æ¾{Ü?o<̾O@¾ 6|¾r‚¾hû? C¨;ÌV@¾1í´¿ss¿¾l??)Ig¾„{:?æƒ ?$ú¿–‹ý¿ÚÆ?TV¾UÈè?>ô^?HàZ¾(G?.æê½!ö¿‰c_?Ýj?' ©?êž3¾&á›?~b°¾sŠ&¿™4ú½ïb4½Iãœ?Z,Ó½è*Þ¾X;½Ú£ô¾4˜?íâ¾n(¿‘í>¾NšJ?Qù ¾.‹¾t F?ÚÁ6¾ÕwX?ÛZ~¾C„1¾#o?NÉ4¾­c?m0v¾b<¤ûX?Ëg`>°?ôè?A d?2‘@¾6Á¿– –¿‰ø0?$Y‰»ôÐ@¾G‘⿉xp?R†Ð½¨yl>‹“„?XªÔ¿o l==@? Ħ?G<ô¾ñ+˜¾PÔ¾–W½0áè¾ ÿN?Q>ľJ½JË,?.›„¿‰Ñ~¾tÛ¼éÎÐ?Sæ?Fùc¿ºÖ»7Û€¾pi?AVÀ¾I'¼ï=x¾&(¾!÷Œ¾‹;&ž?B‡.?]:F½‰²,¿ì§¿”˾Të0¾°¾ S½¿“PÓÀ£Ð¾ÈX¬?iK¼¾cçG¾2yð¾bç½µ;‚¾¢à?å]í¾=^+\½áØð½ÖÆd?3Š??:Û¾R±/;ÐF€?MÛt¾>œ"?2D¿‹³o¿¡¥P?x’?R–?dÚé¾#.‹¾pR?ºœÀ’P?.¥Ž¾T¾~ûR?ò¯{¾aí?ð¢?8ˆÞ=3\¿˜ (?fxy¾bÀR½Ž÷N¿¡Ø$?Hàô½ó{è¾9?4úø¿–X?3ă¾+né?'âT?O(¿¾¿Ž-¿oâµ?Õ©w¾Y^]?@Øn?< ¾%¤ö>5Ô?8<ž?+9R¾h¿G½Í$è?%нÉhL¾ )d¾¶\?Cšì½nT¾B·a¾ 'æ¾Ôgj>1ˆ¾Ëä^¾,Ⱦ“^ ¿Ÿk?ñ>¿š‡?¾¯ˆª¿‰ci¾p ”¾:ÖB?>J˜¼µk°?˃ð¾²?0 [?Qu¦¿bñ½97 ¿•S¾'u¾C²@¿€1¿Š®|?\@–¾:Ùˆ?\„è½ê+–?t„?BÿD½up(¾feU½±)È?9Š·?Cä?ÓÛÄ¿¼ø6¾žï¾'†¿œæÍ?iBᅳ]?ÁY&¾v‰_¿„Þá?<u?aZ侯Žq¿†rú?>åé½×±4?2Ïð?d±Î¾ŽíÚ½aI ¾b´„½ïKN?2ž?Nü¾AΨ?oƒx¿ž'£½I·œ?/"9¾UåL?A)°½–%Ž¿kª?P!t¾¥Mq¾Q¥2?Ÿà½é’?l”z?Z8,¿m?ÞU?6a¾˜ê¾u/4¿‰ä¾’†@¼¾™˜¾L8ƾù¿ô?N;½­Ï½Óhˆ?fÙ„?,7Ò¼ëÉP?Hg*½Ûoú?:Ä:>hô¾OzL¼Ä®¨¾~CоrÂN?A32=9§T¾Þ½†Ð²¾õO½ß™‚½“†¾9?Ö¾:¨;?T`›¾3–°½I±¬¾Ì˜½¯Ïx¿Ž¡³?mõ«?É[?SG?JÒ±¿ÀT?9 ¬;¥ÄÀ¾‡aϽÓ¦?ß¼?ðo ?,ˆÜ¾<­ü?„ž¿ý—¿’ÿz½Õ3ø½/ ?<›¢?H\ñ½ùôz?7%h?^|ü¿Ã7½— š?FŒ\¾* \?5Â?eØ¿žü<œ”À¾°¾?\X?<ã?½¹i"?âž¾¿Œ¤À†¸¿›2?!mt½c¡Œ¿‘·|¿‚…½¶qÚ?HÄ`?4Òß7‚?p‘Ù>‘ú„¾…ën¾Q¾Ÿª?1ÊÔ¿•2í½’t€?'E¶¿ŸM?ViD?Ëd?<€’?Æ?fy“?*‚¾Ö^¾Óʾ?¾’@„¾t”?3ºN?ÉË—?$Ÿt?M$.¿¾g¼?g“ÿÞ¿‘Pÿ¾‘_m?7¾<‰¶¿•¤¿–"Å?éò¾ƒ´˜¾&iœ?E™?HVZ¾dü„¾z$P?co?Øb޾55À¿ÅrܾD“?E…¬¾imz½Öx¾I[½¾¨o?]Õ¾"›?µÌ®? øø½RM˜?=Ûú=*D¿ƒ‹;½"§¤?Dë3½Â­´¾%åƒ=ꀽ»ê:½*JX?DÃu¾ ï¿ŸXI½Kì?AË’?á†f¾Tˆ†?eµ~¾.† ½ȸ¾_6¿‰/L?9<Œ`¾M@?aÔ¾Pj½¹z<¾c8黲?ß^?uûŠ½Ã P=¨WÌ?W ³?[–<¾»J:äʾ{’Ƚľ®Â€½ü¢Œ?W³+=Û°?K¾C¾`ð?<‡?ÛŸ?ÂU¼Ø­h¿• S½ÈÜl½ûmœ¼–[0?Óè?ÓÄ?*‡<1Ⱦ'4à½99 ?—(½2ÅŒ?(L0?a¹¿Ÿ/>?-¡¾?Ѩ?gñó?7Ïo¾Šâ?;âL?I r¾%.T?Hqž?'ŠÞ?køR?3E¾½Ý’d?$5è?âÔà?Ԯ˾8Wð?;zF¿ƒµã¾)(À?FrE?Ø^¿Œ ¿¥TܾÃ쾇_½©Ò¾dgÞ?O1B>Zå?h +¾m¦½™U¾y? µ¾°¿ˆåž(ªL?1åܾqè½ß« ¿K¾Š!²¾€2w<ä ˆ@Ï©ä¾n>Õ£Ô¾µá‚¾a(Á?Lœø?2pÔ?C ¾kÃ?Bñæ¿•LÔ?ðlœ¾”4è?0÷º?9¶Ø?*¦K?%à??G6?Ý3´½Îl^?B8˜?@àŠ¾MÅ€?Lø? Ìl¾@U˜?6¾0?3;?$¤Ò?Ã?NŒ³?4ÈÀ h¾+rJ?ØSd¾i6˜?AÌl?S`꾌|ÿ¾Nf>¾?íÀ¾ª“?>ût?K(¿„õr¾|˜º½š×L¾’²—¿„´µ?8ü-½]¾­S°¼ñßp?µr½T_¾H¢?à“ø?#´?&TI¾˜_æ½í‚l¾ªMU?Ù—´?'2V?Þ„Þ¿Ž ?8’ìÀ*? ¥A½a4ˆ?9Q<¿:q¿„H㿃 °?HŸ–¼³ÂX?NÑT¿hð¨½Ò|ä?iÌ·¾<'â¿q6;›¹»q?á‘A=Nª¸¿ l=ð ?_>? ù?=>H?in¼û”P?tÛ@(·è?ú‹e?\ñ€?WV=¿gø<;­0½õ4<{Ä>ó×?zÁʾTÐ]?„ó¿žÜ ?mA?d< =[z¾-£X?kR¾o(à?ƒ}z?ãÚ¸¾Yg0?S,<¿2¿Œµ?b#¿Aç¾nBC§Ï?P3Î?Y²n¼¦ð0?ñ¶*?Bù)½>÷”½þ ˆ?}ƒP?C^†¿‡º5?TÖ‘?jÂR¾ª“!?[’?D‡ù¾›SL½Ü ž?Uâ6¾QÕ¿€(;¾oÏN?Zxø?oÞL¾vø"?ñ+½ùœ¤¾o‰?s·²¿ŠíÌ¿¿?$·¸=&p¨?A 使°½ÆuD?Nc|?Kˆ:?GÂø?T‡Ž¿ _/¾Jk2?Cs?ÔFϾ*ˆ¾ÉqÈ¿™õ?2%x¿[€¿œ…½d@-B¡¾pí ¿V_?FÀ¾Â•¢?`l½ÅÀ?AñÖ?Nž ½ã‘@¾^Nt½ÜCè>˜ù?ͳÛ?7Dмùp¾®Rå?+öb¾£„ɽȣx?2ö’?èT¾qçʽ“?"Ñ™¾n_r?@¡Û¾Óš¿ŒÛ«?=|?"¡(?êä‘>«ge?L£^¾H0™½0QD¾1v¾$”>ðî¾<ð²?3xf¿•¼ ¿§êº?_ÅP?» <¿¿¨Pf?d÷V¾W–¾^2÷¾—†½Ô¨Š?1Y?eJo?*œ*¾,G®?Iˆœ¾¾©¡×?BÄð¾¨É,½¼WÔ¾‘8νq†ø?1õø½ô1¿;#Ⱦ8ml¾—"¯Z?Ôø>0¿‰¡&?D&¿‘].?p* ?Jø?önd¾{ļ-Ÿà½TÆ¿‰YÊ<Þ”?ež¾ïI¾¥À®½¼e>¾ƒ¾ì?O½Ë¿Œ”»¿ˆš?ý|´¿”¢¸½Ûø¿•±•»p+À½¡+`?l%²¾ ¼?eš¼¾m #=ÁŠ®?åò6>Ôæ¿w ?RÁ˜¿Ž…8½ê_‚¼ëd@?çpQ¾V‡=¯›¤?8Pu?gÅ?Lb+½dSp?-tœ¿qã@?ภ?òýs?2LX?]¾¾l–w?V!@¾˜È?k]N¾9ó7?^9‚?Büt?\tK¾.ó,?JÃë¾…¾ZÖ¾¡ÂȽû“4¾ Gà¿y¾FÝú?X[¾CÔ˜½·B²?@o?ã?E=ó½|”¾s!x?/¾:¾•É?máÞ¾ši¾c^¿Ä¥¾{¤¿‚й¾h_T?PØb?*´/?lá?-Èr?N<€?a¿†P ¾UÁˆ¿…‘¿…H½ø[„¾Q ½Ü–P?¥€?L}?Ç¢b¾¶qr?Í~Z½¥r¾lƒâ?U¹*?Ê2:?N†U½Ì›‚¿‚_?+6à¾a&ò¾ƒ½îR¨?,!$½Õrv>Îñ¾v(?J¿žÃ4¾Ó‹Œ?XÛ8¾KHž¿…š“¿ú¦?]eÊ? oD<оD!—> Sc¿”þÚ=Ú ž?R³?çh%?7²`<‡i¿“ÜvLð?Žæ>ö¥¿‹æJ¾^\?=~Š?åß?y!¾1¶Ð?~Á@½ AN¾aOõ¾o¡y½ÕÛ¤¾.#?O ”¾¹¶¾+;]è_¾@? e‘?èYà¾8…Q¿‰¡®¾[Xš½šP?Luc?Fé¾›fn¿wÎp?Mü?6.›¾‚Ü2¿Š’Œ¾•~@H7¾ ¦Í?m.¾ š`½¸t¿¡c¾V™ð¾<\ó?èç^¾”0j¿ƒ},?A® ½ l”¿“x ¿{]? ·¿•'°?EÚˆ½RUd¾P4 ?I`ð? à?@hú¾ï¬½'\`½À„Ž=Ç¡¼?E]æ½ýà”¾£K?CïØ¾’Ëx?Gì§¾J8Ý¿ƒÙt¿‹1ï?^!\¿Ÿì¡½^`?7RÄ¿pت?HkC¾ºü?,Øù?àN¿›Ož?)±ÀMƒA?@uD½ø±Î?Û>r?P¶ ¾,k2½¬M¬¾Š¸½˜Bì?Û30¾,á’?0Ü¿“ü¾5|?L_Ѿ¡\@lh|?#œ¼Î/ ¾†§¿?zžQ?1žp½é:¾’-–½m#¿¡+æ?;:l>»ÞØ¿nŽT¾µI =ùB`¿£2Ð?GBÌ¿­‡Õ¾:?Øj¯?‚Œ"¾[…8?D¾|,¯½¸rê¸Ãˆ¼Àc(?Ù¦Ã?Ax™¿ªc=·ï½LM°½ A ?` :¼§è¾-”ƒ?Y¯‹¾5¶¾<Û7À?Ü5ë<×`?(=\¼÷ø`?X ½ÜRö¾”§w¾,Y©½ÒÒп_Q.?1éž?jXß¾J/Ò>ÊÙ ¾’þ½Žhè?5†A¼ÓK?2TŸ½¯Šn¾ ÿ+½Þ~¾=à?âƒ5¿IÓ?E­6¾LçØ½Oõ,¾Trª?Möj?,…>½ª ¦?:ÈÏ@û·ùBJåNA¤¾²Ö?ÐI»?*ÜÒ½ÀÉ~¾Ÿè°?,Å?U#?jf­¿ŒZu½:ô$¾‚÷ã¾¾j?=%;¿šl¿Mê<½¯è¾ ]?g’–¾›ûô¿y¿ ¾·½^¾Eãì>ÑdT?4¤¯½üTª½Æª´¿¦ ì@/ó ?.“?Vc£¾o˜¾èr¿ äX¾£ëà?”ò?Ewc¾6­œ¾׿?ÚÏ?PÀ˜?.Ræ¾h `?5f€¿«¾ Ç×?U¢Ù¾Œ­v?-া™­­¾Lø¾k?bÑ2¿Š÷¿;¦?Á}¿€¦¾>ÊZ?k™÷¿™x9¿‡ï?+F®?Jvñ½ä¨¨<îþ(?B,?:ïÄ>ða¾9/Ǿ$@½$õ´?=Zª?YŸÔ¿¨»†½¹‰Ü?$<¤?6Ÿ>?Öë½Ï6<¾¥Ë«¾!ºþ¾W±½ñÏ?!K?N»Í¾Þ«½gÿT=Ü©˜>¸P¤¿¦Ï¾†?pÎ?VÚ¨¿£ð齚”¾.oP¿“þ5?%>?Y<¾µùí?C‹y¾*dF?B8?I‚ ¾»B?Ž}?ê©«¾˜°?Zµ¤?… ?Â]¬¾ MO½ªÎ¬?ÂuÖÀŸ»¿–J©½Ã+P?Ì›ˆ?P”4?VU:½àï&?÷Ö?`ȾZ—ĽÌNô¾´ÝÔ?Ål?+ ¾KQ ?â¾D÷d¾®ò;¶2Ÿ¾N·§½˜ê¬?üþ½Ê‚?A9%½^{T¿ž¿Ä½„2P?r?ZUоu@Œ?8»-?-Š ½ÍG”¾O$?W؇¾c¸9?x ñ¾†åÞ?_ ¾+õP?sT”¿–,C»’©@?R "=`·?I2l=É[¾2¿ùû¢¾&WÈ»¶?*?TŽ&?@–Û¿wÄ¿•-š=¨Æ?ܵ ¼< ?Ú¿%¿Ž`B½îW ¿„\ì¾Ph¡<=y྅Z=?sõV¾ q¯?m>?%»@?Hô˜?:—«?g§'?1Cú?â$á¾W¯½âò?l™¥?0Œ`?JVç½Ã.€? ,D?BE6¾oÏÛCfÕœC‚Ô A…’±¾±,?¼Š? Uà?NÏš?YÎ?å©ñ?<½¾”-¥?(xk?ï›ë¾`_c<|3€¾Ì—νÎ"(¾¥‘Ⱦ%7\?%|½ËH¾¬ 0½žJ(¾– ¿„Ÿ–?1è¾d›¾«T4¿Œ M¿—W?dtO?0^B?[Û?(sr½ƒÛî¾Ãæ¾.‚¾Û¬¾¿†s)¿›oŽ?2AH?àÓ¾¹ì¾‰F·?裮¾´ù‚¿‰#?Rè?+?A¿U?çÉ?.›ä¿‚J¾‘z׽؈½íô„?;°f?3¯j¿qx·¾Uh?tü¾I¡»Ò ¿£MH½¾Ä?:¯Ó¾yÜ?GiM@)jä?&åV>ùh¾".?<% ?ÙKU?- í?-Z¾››Ü¾¤ã?áû?Hå¾^èD?//p¾.b@?4mÕ¾9Ó ?4j²?a(ÿ¿£Ø?¿ æl?-YÁ¾x:?/ž¿?1t¾b„=?T?È-è?ÔíX½@¯<¾MF?M5?'ƒ'?O'’À ¬ö¿‘hÁ¿Ÿ­Þ¿€¾L?¦(?L"„?#W©¾N¤? ð·?ÔŒ ¾¦öî½ØÃ¾´Õ¢¾ ͽɡ¼?E—D? h¾ «t?-­Š¿’í¿¾}á?×™õ¾ªÉ´?<îò?Ÿ4¾#2¥?À-½ÏÊØ¾ºùð?I¹ ?Aݬ?ÊÍ2¿ž4ø?Ûh¾Õ¿†(–í?ƒ²?½Dxˆ<š­€½Ýó½o{L?N ?eªŒ?9ÚQ½œJè? 2(?ùU¼Áp=ñ=€¾”ñ¡½ÜvÖ?APç?xH ?¿Ü¾?QǾlhI?fm¸¾`˜ò?T!”?G’°?F|†?63à?A(¦?:?O¾<,k°?.c?JÒ}@—F­@ùžõ?HÑ3?Ü š½}ꄾNÉ.¾JZ¿¨¤,½õ® ¿’§-?ZK7?:™æ?i刿”†å?M¤I?=B?7“ @2É:½ê—n¾ M$½¶$?Mµ½èÔ?=½ádD¾ )^½ñ(º¾œ“ξ6< ¾².?Pš,?È.|½l$̽ ÒÒ½k‘ü?59ˆ½þÍT>àve?;¥*¾‡Žä½Lä?<D;V?F÷ç?=¦ø?I¬–¾­Zl?,–?DyI¾®&ý¼”,¿¨àÃ:Gƾ`’*½çè`?3”²?Q¯^¾yɽ§â(?R\:¾kÚ&?);œ?-.¾—–?J¼g¾Ž³½öQL?¼‘Î?X†?Æ*0?Ì‘h?KÊ?§4a¾¦‡R?1¾…ä?-õҾò¾OÛ?)–T¾Ü޾+Wæ¾ ãf¾ ¡Ø¾ ʾXÐð:4<? í?SÉN¾@™¾ß?µä¿‚nQ¾u`?pìP?ã¼¾\ Å?.Ú±?Kö¬?1þT¾Xà•¾Rt¾GF`¾œâ¿„™½Ö2?TŒÝ?3šM½áÞŒ¾‹B¿˜2»¾j€l¾9Üj?'ö2¾+Ž?ŒQ?<Ùp¾³×î¾æïO¾ŸPÿ†ØI?ÛÑ–?= ?("оgs¾Ž–Œ¿Œõ¨¿³Ýü?[¼?Høö?M•Y?˜4?Oô ¾ÏKd?%’¥¾oa=?\¤†?'Áx?16­?&$ç? sž¾¹~”¾u\?zp?cWv?AýÅ¿”ó4¾sÇ=sQà?Gؽñ‹Ô¾]ÇI¿O$? Â(»Æ! ??µß¿‰k'¾™â¤?d~v?;F¾v?æ!Ƚ¯Ø?Ü㽌©?J·Û½úï´?9hÔ= ½°8?gº ¾tά?Pk¶½å¬t?M‚?>Áu½àOö?6èj¼˜g@¾€é?±–¿žfé¾"—¾ÛB?H<È?CÓS¼®Ï?Ù–9?c?¶?4È?$à!?ö`?çÂ?LÎ¥?R\ؾ`•D¾U P?<À?R7ò¾GX¾öý?Ýÿ„ü}?7¬z¿”û?3ŠÃ?êy£¾xd„½Q p¾u÷ˆ¿ˆ,o¾«,¿›*„? †\¾’ú¾W±‚¾Úv? ¤8¾» ?N‹½„8°¿‹÷ÿ…gõ?"󯽴;俊‘f¿„Á?/øÒ½´-Š?Í1Ü?3Qš¾€½?2Ÿ?bß¿|¨?'ðÑ?q¤??/ÌŠ?,%b½íp?Ã?æ2k?íV?^;Ô¿¥ÒX¾,/ڊ??L7¾–.ª?KCh?+¾?Pvƒ¾{W¾DÍœ?Ô”@äÖ¾ø=<\H¿—º=«‹’¿Š¦;¼ì ¾(’>@â?™…¼:±0¼·Ãè¿…˜Ë¾®Ñ»ÑwÀ¿†â„½!TH¾J¿zXi¿”Ó=𫸾¼G¿ƒ³¾†J,½ÙKè¾VÉ¿†Œ¡À ][?L.½¯,¼Ë¼x¾|´L?,2d¿Ž¼e®Ð¾‹­\¿ô?=0c;uÙ€½¾ ”?SúY?IÃÙ?rat¿z,«¿ƒ-^?Õ&?MåE?9*¾gš¾„ŒD?RÜí¿,ïÜ?ðª?ÕÎE?Xó"¾!ý$¾EŽÊ¾Ã³w¿Š˜¿¡j.½ „¿:IT½³Hx¾wž¾4¡?â×ì?IÐü¾v¼’#@¾5 Ô?Yº‚?2ø®=¨H ¾e}?Nú0¾€r—?]Ðh¾ '½¥ô¼¾ ®¾t5>¿«z½Ê»ü¾Læ?õÉ—¿‹šð¿ƒ½Ø&Ð?\´?¾Pt »/“¾["½¦;P¾ž€Ž?_•ú¾Xg¿‚Š9?.ÞB¾Øò¾AðÆ¿šxy¿ª‡ˆ=Ül0¾U@”=èj?4ìe?q[·¾;?Úç]?ZíR½ÈD>?D\Ì?]ú¿–Œt?P 8¾‚çŽ?EâH¿¢Ì¨¼$÷€?(k$?s„&¿‘>€¿;¼?ÈJœ½Ä~š¿šÈ0¿™s? Ü?WP†¾ äÔ?i À>üÅâ¾ê¾g†Ð=q¸¾äñ½„&¿—û£¾l?Ã0b?@„¾^ž?`›Õ?Z©½úG‚>ýiz¾Ûñ?q°¾ŒæÉ¾är?d¥ù?:³¾|?«ô?WÒ¾‰\Ù¼ðÈ@*ÞŠ?_ 0¾8Su¾'e?*Ñà?DØ£?k?@Iú?+/´?X¿ñ¿—m?DÂr¾ÛÙýD«?BP?RFF?mZ½ÿ1<>„ª¾9Y|¾mŠ¿’ôÔ½ëÚV?,.®¾N ê¼rƒð¾EB‹½…r¬@Ôj‘DKVcB €@vÛ?Jüû¾v-.?%æ<ö4¾Ëî?ÜiÚ?MzZ¿šb?Eö©?aRÕ¾ŒXÓ@½k·¾)â3¿Ký¾¯ª<'D?`ùŠ?êTl½‘ûf¿i Ä?çtª½ˆwF<ŸxÀ=„ÆÞ?WÖ×¾-^x¾TÝ*?m˜F¿…øã?Úž–?4¼åT ¿‡¤?aÀ?S( ½;h¾<ý™> w½üª»ºO`?'©½‰‰è?4Ož¾hX¾fýË?Sõp¿ÔL¾*†?Þë´?Z8(?FFX?SH®¾e?T)n?:™F½Ð þ½]ܬ= Zä?w£Ó?볬=ßä?TÚ­??€¥½˜ô??mƒ?M…0¾~’?Ufx?ÏtE?VÇ­¾½‰¸¾59?9¦È¾Ìi÷¾Šmc¿Š “¿iK½šŒ€?о52¿–Q&?Cbî?jR†?a®¾t À½Ÿã¤¿\¨¿œn ¾•‰4?fm?@„¼êêÀ¾Óf?Jç?C)n?í†:¿¦ý^½Ên?Foè¾–ðŒ¾Òóv¿pq”>ŽŠn?M\¾¿›_ ?<ô"?1y½Ý‘H?9cf¾E|%=âòà½Íʤ¿£ã„?É%ï¾p^î½o8ˆ?2~I¼#@¿˜§?FhG¾‹J¿z¢½¾gI5?dD?¸¾œ)?,V?NÍ?Ù”¼ÝTø?ÙòŸ¿û­¾‹N;\´¾$½Ð?T’ ¾]?_§¾dˆ¿†ˆ ?A‡]?\¾!ú¼½µ”¾·ŽŸ?:±.?1ÇG?gFÀ¾rµa¾(•>¾ÐèÔ? y–¿Ÿœð?FØ?0…+½q¢€¾”¼?IêÖ?;Sn¿‘öÔ¾OKп}¦Á?;é ¿‹¿›iÔ¾%³¿¾AÂ(½&…¾¦Œw?=H¾LkV?XõR½¡ð€½“A ¾`Ô¾eÄ?*?ò?i¢¾Þ¾õ₩ì?T?7š?M1x? Ÿ>?bžŸ| ?SÏØ¾šTÖ½ôŠè½iSÀ?fzâ?(ß»¿‡ð[¾aAý½ÀH@¯ºC+AϪä?ô÷V¾KT¢½“8x¿š4ß¿…›*¿¨ÜË?[í¿‡­L½ãìè?Æ Ö?q°?zŽBA'>µÞX¿î@?ÒMˆ½€BÞ¾ àš½Ïû4½ùâ4?qjξvÛÊ?;Ðj¿‘|é½­uF¾Øä?`m=ÅF½c\4¾.Õ€?^À™?&¶?õ?5ÀWÉ?`–Š?I6”?U€¾”ÀX?P¼?DR=¿s™ÿ?N"½Åôú?"v’¿ƒÈȾn®Ñ¾S}¾wFg?tîÓ¾È ?eÔ?/¾ÈÃ?B½½Äô½;˜¾°\½?8)Ò¾¬ï=½¸¾púJ>û¶6?D^è?eît?$f½<¾×%½°¼¾~¾C?Ûp¦?J°5¾+"¨?ÜŽ”¾tŽY¾9±¿¦LD?b`L?CТ¼õy°?9«L¼ÜWx?@o?g•ä?%Ol?F• ¾…7 ½W,l½õ°¾gJ5¾JkÈ?L3 ¾EÔ6½/1ä?1᤿ššð¿ô½?7®ö¾‚,¾ ¤7¾r3¿?â¾ek©½é\t?;,þ?åW"¾ªÊ뿘»\¾tæB¾$'ü?ÔᲿ‘ø?Vüоl~¶¾k<?æds>âë!½;u`¾‚¶¾”ãg¾„ä¾’ÜŽ?úg½ÿì8¿—ïn¿–—\?;Þ?Xè ¾`q?Gk?ƒæ?0\v?è’,¾Aï¾×âÊ?]<¾5àZ¾2å¼¾!Ùí??Dxå?R#’¿¯B9?ßD?̒ξbÊ?#>ê¾M4¾“Ïk¾g$´?¬Ø¾ÝD¿¡ËÂ?.¾q.†¾„¹þ@'$A!¿žk›=€¤è¼èX€½?:H¿†˜U¿ŒVd½å6Z½€Ij?YD?p ø?IK½ô¹À¾| 6=ÈzÀê¾¥Y?Çt%½tƾeA2¿‰‚¾ZJ|?k…>¾‚¾Î¾Ç_`?L{;¾\øk¾XVÔ?Sûw¿UÌ?VÖ¿q>†?QYî½î×T?XÐØ½6¹Ü¿¢Ñò?ZA¾LÂR¿†6x½õnF¼„ˆ?2„Ú?Ùœ²?06?T¤²¾ î=—Û¢¿‘a?Af?m:ë½³ 2¿¥u¬?"!`¾šô½I­¤¾|gj½ìåÄ@)cs?ìÛ¾@¢T½v7ì¾T—S¼÷[P½‡²<þ?>¼À¿ML?5[ú¾ ÃÜ¿š d?x‚¿”»ì?Z~ ¾ÿ?nV?¾msÐ??Ÿ¶?+ij¿~V©¾3O¾VæŠ?ÜÃá?YT¯@(\½ÁkÔ¾a€¾ AÂ?àI[?<¬–?,¯y?gùÙ¿–÷¾²&J¾ +&¾·¿Ú¾L*a¾ J?6öï½yÈ4¾€å¾Jʨ?3ß ¾)Uz¾˜¬,?öq£?ÈŽú¿ˆ†ä¾ƒY@?dôª¾kή¾\D²¾Fk=¾tV$¿‘ß"¿“<þ¾TäÚ?û+¾„Ñ3?h潇ä.½±Þ®?ǾD#¿˜ ³?Q n?'£V¾p¿é“?.˪?(?fòˆ¾>‰b?aÑ3¼÷G ?JËë?@šT¿œTv¾,œ¾M6F¿ŽP½·`½³:°¾DpU¿žs“¾…žf?ÓdB¾~ûæ?ÒU¾ 8~¿¸kt?jè¼¾DY†?RiؾšCL½™,x>ïš?4°ð?DR¾ Í`¿“?Lˆ?ÐD0?õ_@rÖj?±\?L¾=çü½æ‰æ¾# >?)?T«¿˜®?Q1þ©ëö¾t P¿lнϞô¾@Ì/½-”¾§ðA¿v’?*6?¢ ¿£\{?ìÔü?-–?N²†?ݶƿp¿¢¾†èþ½ì~¾¡ Ѿ-Óx?0?3 Œ¾éT?BG ?HÎXTENSION= 'TABLE ' / Ascii table extension BITPIX = 8 / 8-bits per 'pixels' NAXIS = 2 / Simple 2-D matrix NAXIS1 = 796 / Number of characters per row NAXIS2 = 4 / The number of rows PCOUNT = 0 / No 'random' parameters GCOUNT = 1 / Only one group TFIELDS = 49 / Number of fields per row EXTNAME = 'u5780205r_cvt.c0h.tab' / Name of table TTYPE1 = 'CRVAL1 ' / TBCOL1 = 1 / TFORM1 = 'D25.17 ' / TUNIT1 = ' ' / TDISP1 = 'G25.16 ' / %25.16g TTYPE2 = 'CRVAL2 ' / TBCOL2 = 27 / TFORM2 = 'D25.17 ' / TUNIT2 = ' ' / TDISP2 = 'G25.16 ' / %25.16g TTYPE3 = 'CRPIX1 ' / TBCOL3 = 53 / TFORM3 = 'E15.7 ' / TUNIT3 = ' ' / TDISP3 = 'G15.7 ' / %15.7g TTYPE4 = 'CRPIX2 ' / TBCOL4 = 69 / TFORM4 = 'E15.7 ' / TUNIT4 = ' ' / TDISP4 = 'G15.7 ' / %15.7g TTYPE5 = 'CD1_1 ' / TBCOL5 = 85 / TFORM5 = 'E15.7 ' / TUNIT5 = ' ' / TDISP5 = 'G15.7 ' / %15.7g TTYPE6 = 'CD1_2 ' / TBCOL6 = 101 / TFORM6 = 'E15.7 ' / TUNIT6 = ' ' / TDISP6 = 'G15.7 ' / %15.7g TTYPE7 = 'CD2_1 ' / TBCOL7 = 117 / TFORM7 = 'E15.7 ' / TUNIT7 = ' ' / TDISP7 = 'G15.7 ' / %15.7g TTYPE8 = 'CD2_2 ' / TBCOL8 = 133 / TFORM8 = 'E15.7 ' / TUNIT8 = ' ' / TDISP8 = 'G15.7 ' / %15.7g TTYPE9 = 'DATAMIN ' / TBCOL9 = 149 / TFORM9 = 'E15.7 ' / TUNIT9 = ' ' / TDISP9 = 'G15.7 ' / %15.7g TTYPE10 = 'DATAMAX ' / TBCOL10 = 165 / TFORM10 = 'E15.7 ' / TUNIT10 = ' ' / TDISP10 = 'G15.7 ' / %15.7g TTYPE11 = 'MIR_REVR' / TBCOL11 = 181 / TFORM11 = 'A1 ' / TUNIT11 = 'LOGICAL-' / TDISP11 = 'L1 ' / %1b TTYPE12 = 'ORIENTAT' / TBCOL12 = 183 / TFORM12 = 'E15.7 ' / TUNIT12 = ' ' / TDISP12 = 'G15.7 ' / %15.7g TTYPE13 = 'FILLCNT ' / TBCOL13 = 199 / TFORM13 = 'I12 ' / TUNIT13 = ' ' / TDISP13 = 'I11 ' / %11d TTYPE14 = 'ERRCNT ' / TBCOL14 = 212 / TFORM14 = 'I12 ' / TUNIT14 = ' ' / TDISP14 = 'I11 ' / %11d TTYPE15 = 'FPKTTIME' / TBCOL15 = 225 / TFORM15 = 'D25.17 ' / TUNIT15 = ' ' / TDISP15 = 'G25.16 ' / %25.16g TTYPE16 = 'LPKTTIME' / TBCOL16 = 251 / TFORM16 = 'D25.17 ' / TUNIT16 = ' ' / TDISP16 = 'G25.16 ' / %25.16g TTYPE17 = 'CTYPE1 ' / TBCOL17 = 277 / TFORM17 = 'A8 ' / TUNIT17 = 'CHARACTER*8' / TDISP17 = 'A8 ' / %-8s TTYPE18 = 'CTYPE2 ' / TBCOL18 = 286 / TFORM18 = 'A8 ' / TUNIT18 = 'CHARACTER*8' / TDISP18 = 'A8 ' / %-8s TTYPE19 = 'DETECTOR' / TBCOL19 = 295 / TFORM19 = 'I12 ' / TUNIT19 = ' ' / TDISP19 = 'I11 ' / %11d TTYPE20 = 'DEZERO ' / TBCOL20 = 308 / TFORM20 = 'E15.7 ' / TUNIT20 = ' ' / TDISP20 = 'G15.7 ' / %15.7g TTYPE21 = 'BIASEVEN' / TBCOL21 = 324 / TFORM21 = 'E15.7 ' / TUNIT21 = ' ' / TDISP21 = 'G15.7 ' / %15.7g TTYPE22 = 'BIASODD ' / TBCOL22 = 340 / TFORM22 = 'E15.7 ' / TUNIT22 = ' ' / TDISP22 = 'G15.7 ' / %15.7g TTYPE23 = 'GOODMIN ' / TBCOL23 = 356 / TFORM23 = 'E15.7 ' / TUNIT23 = ' ' / TDISP23 = 'G15.7 ' / %15.7g TTYPE24 = 'GOODMAX ' / TBCOL24 = 372 / TFORM24 = 'E15.7 ' / TUNIT24 = ' ' / TDISP24 = 'G15.7 ' / %15.7g TTYPE25 = 'DATAMEAN' / TBCOL25 = 388 / TFORM25 = 'E15.7 ' / TUNIT25 = ' ' / TDISP25 = 'G15.7 ' / %15.7g TTYPE26 = 'GPIXELS ' / TBCOL26 = 404 / TFORM26 = 'I12 ' / TUNIT26 = ' ' / TDISP26 = 'I11 ' / %11d TTYPE27 = 'SOFTERRS' / TBCOL27 = 417 / TFORM27 = 'I12 ' / TUNIT27 = ' ' / TDISP27 = 'I11 ' / %11d TTYPE28 = 'CALIBDEF' / TBCOL28 = 430 / TFORM28 = 'I12 ' / TUNIT28 = ' ' / TDISP28 = 'I11 ' / %11d TTYPE29 = 'STATICD ' / TBCOL29 = 443 / TFORM29 = 'I12 ' / TUNIT29 = ' ' / TDISP29 = 'I11 ' / %11d TTYPE30 = 'ATODSAT ' / TBCOL30 = 456 / TFORM30 = 'I12 ' / TUNIT30 = ' ' / TDISP30 = 'I11 ' / %11d TTYPE31 = 'DATALOST' / TBCOL31 = 469 / TFORM31 = 'I12 ' / TUNIT31 = ' ' / TDISP31 = 'I11 ' / %11d TTYPE32 = 'BADPIXEL' / TBCOL32 = 482 / TFORM32 = 'I12 ' / TUNIT32 = ' ' / TDISP32 = 'I11 ' / %11d TTYPE33 = 'OVERLAP ' / TBCOL33 = 495 / TFORM33 = 'I12 ' / TUNIT33 = ' ' / TDISP33 = 'I11 ' / %11d TTYPE34 = 'PHOTMODE' / TBCOL34 = 508 / TFORM34 = 'A48 ' / TUNIT34 = 'CHARACTER*48' / TDISP34 = 'A48 ' / %-48s TTYPE35 = 'PHOTFLAM' / TBCOL35 = 557 / TFORM35 = 'E15.7 ' / TUNIT35 = ' ' / TDISP35 = 'G15.7 ' / %15.7g TTYPE36 = 'PHOTZPT ' / TBCOL36 = 573 / TFORM36 = 'E15.7 ' / TUNIT36 = ' ' / TDISP36 = 'G15.7 ' / %15.7g TTYPE37 = 'PHOTPLAM' / TBCOL37 = 589 / TFORM37 = 'E15.7 ' / TUNIT37 = ' ' / TDISP37 = 'G15.7 ' / %15.7g TTYPE38 = 'PHOTBW ' / TBCOL38 = 605 / TFORM38 = 'E15.7 ' / TUNIT38 = ' ' / TDISP38 = 'G15.7 ' / %15.7g TTYPE39 = 'MEDIAN ' / TBCOL39 = 621 / TFORM39 = 'E15.7 ' / TUNIT39 = ' ' / TDISP39 = 'G15.7 ' / %15.7g TTYPE40 = 'MEDSHADO' / TBCOL40 = 637 / TFORM40 = 'E15.7 ' / TUNIT40 = ' ' / TDISP40 = 'G15.7 ' / %15.7g TTYPE41 = 'HISTWIDE' / TBCOL41 = 653 / TFORM41 = 'E15.7 ' / TUNIT41 = ' ' / TDISP41 = 'G15.7 ' / %15.7g TTYPE42 = 'SKEWNESS' / TBCOL42 = 669 / TFORM42 = 'E15.7 ' / TUNIT42 = ' ' / TDISP42 = 'G15.7 ' / %15.7g TTYPE43 = 'MEANC10 ' / TBCOL43 = 685 / TFORM43 = 'E15.7 ' / TUNIT43 = ' ' / TDISP43 = 'G15.7 ' / %15.7g TTYPE44 = 'MEANC25 ' / TBCOL44 = 701 / TFORM44 = 'E15.7 ' / TUNIT44 = ' ' / TDISP44 = 'G15.7 ' / %15.7g TTYPE45 = 'MEANC50 ' / TBCOL45 = 717 / TFORM45 = 'E15.7 ' / TUNIT45 = ' ' / TDISP45 = 'G15.7 ' / %15.7g TTYPE46 = 'MEANC100' / TBCOL46 = 733 / TFORM46 = 'E15.7 ' / TUNIT46 = ' ' / TDISP46 = 'G15.7 ' / %15.7g TTYPE47 = 'MEANC200' / TBCOL47 = 749 / TFORM47 = 'E15.7 ' / TUNIT47 = ' ' / TDISP47 = 'G15.7 ' / %15.7g TTYPE48 = 'MEANC300' / TBCOL48 = 765 / TFORM48 = 'E15.7 ' / TUNIT48 = ' ' / TDISP48 = 'G15.7 ' / %15.7g TTYPE49 = 'BACKGRND' / TBCOL49 = 781 / TFORM49 = 'E15.7 ' / TUNIT49 = ' ' / TDISP49 = 'G15.7 ' / %15.7g CRVAL1 = 'right ascension of reference pixel (deg)' / CRVAL2 = 'declination of reference pixel (deg)' / CRPIX1 = 'x-coordinate of reference pixel' / CRPIX2 = 'y-coordinate of reference pixel' / CD1_1 = 'partial of the right ascension w.r.t. x' / CD1_2 = 'partial of the right ascension w.r.t. y' / CD2_1 = 'partial of the declination w.r.t. x' / CD2_2 = 'partial of the declination w.r.t. y' / DATAMIN = 'minimum value of the data' / DATAMAX = 'maximum value of the data' / MIR_REVR= 'is the image mirror reversed?' / ORIENTAT= 'orientation of the image (deg)' / FILLCNT = 'number of segments containing fill' / ERRCNT = 'number of segments containing errors' / FPKTTIME= 'time of the first packet (Modified Julian Date)' / LPKTTIME= 'time of the last packet (Modified Julian Date)' / CTYPE1 = 'first coordinate type' / CTYPE2 = 'second coordinate type' / DETECTOR= 'CCD detector: PC 1, WFC 2-4' / DEZERO = 'mean bias level from EED extended register' / BIASEVEN= 'bias level for even-numbered columns' / BIASODD = 'bias level for odd-numbered columns' / GOODMIN = 'minimum value of the "good" pixels' / GOODMAX = 'maximum value of the "good" pixels' / DATAMEAN= 'mean value of the "good" pixels' / GPIXELS = 'number of "good" pixels (DQF = 0)' / SOFTERRS= 'number of "soft error" pixels (DQF = 1)' / CALIBDEF= 'number of "calibration defect" pixels (DQF = 2)' / STATICD = 'number of "static defect" pixels (DQF = 4)' / ATODSAT = 'number of "AtoD saturated" pixels (DQF = 8)' / DATALOST= 'number of "data lost" pixels (DQF = 16)' / BADPIXEL= 'number of "generic bad" pixels (DQF = 32)' / OVERLAP = 'number of "image overlap" pixels (DQF = 64)' / PHOTMODE= 'Photometry mode' / PHOTFLAM= 'Inverse Sensitivity' / PHOTZPT = 'Zero point' / PHOTPLAM= 'Pivot wavelength' / PHOTBW = 'RMS bandwidth of the filter' / MEDIAN = 'middle data value when good qual pixels sorted' / MEDSHADO= 'median pixel value in shadow of pyramid edge' / HISTWIDE= 'width of the histogram' / SKEWNESS= 'skewness of the histogram' / MEANC10 = 'mean of a 10x10 region at center of chip' / MEANC25 = 'mean of a 25x25 region at center of chip' / MEANC50 = 'mean of a 50x50 region at center of chip' / MEANC100= 'mean of a 100x100 region at center of chip' / MEANC200= 'mean of a 200x200 region at center of chip' / MEANC300= 'mean of a 300x300 region at center of chip' / BACKGRND= 'estimated background level' / END 1.8263118863080002E2 3.9396336734110001E1 4.200000E2 4.245000E2 -1.067040E-6 -1.259580E-5 -1.260160E-5 1.066550E-6 -7.319537E1 3.777701E3 T -8.516000E1 0 0 5.1229798573999989E4 5.1229798742000003E4 RA---TAN DEC--TAN 1 3.166452E2 3.166715E2 3.166189E2 -5.064006E0 2.552170E3 4.182382E-1 632387 0 1466 0 16 0 0 0 WFPC2,1,A2D7,LRF#4877.0,,CAL 3.447460E-16 -2.110000E1 4.884258E3 2.020996E1 -1.756510E-1 -1.216810E-1 1.033711E0 -1.983727E0 1.295800E-1 3.129676E-1 4.577668E-1 3.916293E-1 3.115222E-1 3.295493E-1 -3.676353E-1 1.8262552336340000E2 3.9412143138150002E1 4.235000E2 4.140000E2 -2.756050E-5 2.082210E-6 2.080210E-6 2.758710E-5 -1.995751E1 3.740623E3 T 4.316380E0 0 0 5.1229798742000003E4 5.1229798910000017E4 RA---TAN DEC--TAN 2 3.540573E2 3.540761E2 3.540386E2 -3.379329E0 3.720573E3 6.385469E-1 631340 0 2072 0 25 0 0 0 WFPC2,2,A2D7,LRF#4877.0,,CAL 3.382652E-16 -2.110000E1 4.884261E3 2.020992E1 -1.896807E-1 -1.899146E-1 1.053666E0 -1.947547E0 2.564496E-1 1.057321E-1 9.952926E-1 8.409855E-1 6.534808E-1 5.836062E-1 2.101429E-1 1.8265237923050001E2 3.9410944281389994E1 4.360000E2 4.245000E2 2.239130E-6 2.754260E-5 2.756840E-5 -2.237040E-6 -5.853249E1 3.282136E3 T 9.464340E1 0 0 5.1229798910000017E4 5.1229799077999995E4 RA---TAN DEC--TAN 3 3.066676E2 3.066541E2 3.066810E2 -3.713645E0 3.282136E3 5.217843E-1 633259 0 1551 0 7 0 0 0 WFPC2,3,A2D7,LRF#4877.0,,CAL 3.372288E-16 -2.110000E1 4.884255E3 2.021006E1 1.109185E-2 6.184989E-2 1.003236E0 2.821703E1 1.669304E0 3.472891E-1 3.272150E-1 6.145074E-1 7.027547E-1 5.681439E-1 4.761558E-1 1.8265002235500000E2 3.9389460441680004E1 4.230000E2 4.210000E2 2.753580E-5 -2.509310E-6 -2.506890E-6 -2.756240E-5 -7.241166E1 3.420240E3 T -1.747980E2 0 0 5.1229799078999995E4 5.1229799245999991E4 RA---TAN DEC--TAN 4 3.117072E2 3.117648E2 3.116496E2 -3.289304E0 3.420240E3 7.084697E-1 628289 0 1816 0 57 0 0 0 WFPC2,4,A2D7,LRF#4877.0,,CAL 3.464660E-16 -2.110000E1 4.884256E3 2.020999E1 -6.813275E-2 -3.253493E-2 9.846212E-1 -4.591252E0 1.359666E-1 4.015671E-2 1.129934E-1 1.897491E0 9.687142E-1 1.053770E0 3.466465E-1 vips-8.2.2/test/images/cramps.gif0000664000175000017500000003152112530402247013630 00000000000000GIF89aŸËóQQQDDD nnn```þþþñññ222!!!œœœ‚‚‚ÖÖÖ¸¸¸,ŸËCþ0¹ÆX»„”Í A€àø‘ay¦ëç,¼Š©*¢‡xïç:a±Ð‰Ã¡bXô{9`GãUTà8ÃÁ@^˜ qz!X&“ì[LŒÓdCAÑ@ø ƒ ]ƒ‰} ƒvˆ~ …~‚‰‰bœœ‹¤iv v¤c­œ¥rD GCmD Gxi^c^o Ãbe^   Ä CšÀÃŽ—¥b ÃÚl”Ÿv•´¦¢­¡Ãv§­³¯Ípö*à_ à:ÂI®!àa2`Ú!ƒ –"þÜŒÑ'f’€Ñ†I3ÅJcÉ€´„£E f¨ÓBétð_+a]b1˜Žæ€´Ä hË>šõÆ0èg “7 Š®)æE’ 89SFFT4±Ñâ5¸(0Ì5*]E”Z6•¤Eà ²aD,8–¢âélº "<§4kLjª-ZCë `-\ ^õš0¼m`@Ò·ÄZ“ꔯ“(iÁe +@Õã¹ 4sÚ{؃WeþdJ)ÉH ­DÓÊ>,݃`Y½†Wä`U%3F: ŒFŸ`‰@ˆ4O¢- á{‹tR’yMÆŽ>v,6‰P0ÉäJ=r­ç•“EôÊþ„D „2 ½Xå‹D¹\WÌgláâx 4€Î8’€èhð@:X’@Š:Hç¢tÈ(af8ÙÊ"øès >åIRÛ=‡œ(‚JO;‰HhÙ†e ÑLJsSÞm“5Ѥ¡áx$€Å˜g^ŠÀA~Bž<3œÉ.^2àbV¬¨¨‡¥¥!Ú!£˜²—M@å ›åf@8^þ€AOÀ…&Ï$2À%<8íã0©‰¥eØ‘À`…Òå9^-ÀÀhõ¼™Q”•UF^…ÒIVpʼ¬ðÚ®«‘©t\Ч˜’‘N´EJaÇåµ€¦Þ:qÄo2é1D :.”íºÂŒKÊš:0È —li*à*XÎ& ‘„ ÀãõfX^°y§_>ùàÔ›Wm4!¨¦G4|ld€­­”&p=ò>Ö1dôý8ýãjÚ @`1 OÈ\* ìàD³ô¾ßH jÔÄÑxçȽä!Èx«¨T°´M •À(Ýâààdkd?+íºe²)ZþñÜœŒ{$AÊY5•âØÙêmºÞà°²¨Øáeo7ƒíÄÈâÛ,q6" ÄœÏL€Ž¨´‡àÀúÙ§óv tÀéÔWOŸ,N¾“XCOàóš¡–" `E7žë€Žhã1€¥·97zÃ’¤ÄÉÄÕ÷tæ8„âa€WH@„¼w "XÀ ç@à›‰,*“¨‡Ë,0„°´HÈaÿüGBÓ=‚)äÛÖºþŽ2¡ÁÁ7¦â9„„òã+ ‚3¶õ¡cÂáNµÈ5!¡€øNT­:ÑtØCþ8‚§ ìi?9ÆþZUžü˜DáðFr"" [@Çwì±9{½/ èÖçˆ7,É`è0™«Ø·µ3m-$:HÌZÊCž€ŒB²Ö ¼M„vR€¾p!³3"€MmJ£ÉFHÇNFŒ«J”Qìp2h@EY«À3¦¥*î@"¸X—%à1T{#¼ƒC>6Ñ“FƒÒ!`d‘û؆¥„e4G#—Ò`³˜Dà@Š˜)ÂuUÆd&Û›¤Ç¶ PÉ@Ønô3M­ÊÖþ”hŠÑLàLA#/X8íÌŠ rr™Š˜5{â<Õ!’¾Âà€îˆÐMÈèòÞd«Ê!.¤ÔXæ É6¾oN¢bŸ)ÂRXJ4¶óÝÖ"‰‚C’•ñã°àL“ j»–+ðõ4 `¢ÏèR¾ZRÂàä Ëcˆg&? ±\($Jô9žÏXJéÀ“‹ŠÉKX“b'³zZÕ[Ïxš<è£c(ò|uPšpVˆB«èBöà 3ðésCh©)y§ ŒëMEÚ Ÿé*‚n3)"ŒFF¥!K‡ÔÀ!Þ^ ®‹Š2Òþ•°a“P4Š‹|ì4û: ßøšè @‘K^šbŸ|D¡Ú-âj !YF26´5ð!?yX˾ˆÀIÍ+\xÕÃüüaaå#0!ˆ„VBÑ)L!„‰špƒM MÊ[Á0bQÒ×Q5¯]ðÂJ½åP,©î-‡CÛœH'T†gxÁdQ^tc‰¸ü@)BbN¤ò„—…X QbQ0Þ@wPÁK+åº}A³ `XKoñÃ$#;Ó•Yk²s¥eà-sÀNpó€¼D#{|ƒ )]ñÙØä#¯CBïFj²c’±a˜NÂÒþµÂ”¢»‘è‚à‹(!cÖ¡ñU:ø¶%tê+Ó8ô€ÛÌo¹ÆHR.5“äÁƒól`Q„•ÂNèZü4 RGM#AJ5±<(aÎÒÑP¤ÃÔ0xåB›5àƒ¡s‰8=òêá褻Ln¡©VI T".Æìð —Épz—W‰¬‰}ã(lÖ¦+qªu ãYÊTѦ²U@T}˜«øZ\ì«6#‘[‰…œY”ÍŽ³H r ›„\g Ì|ÛÉP¡ #bNz 3xËX{@a²߈yªVx‰UäYËüng±LE J!B>&óM.ãSŒ¦L鍊ý; 9‡ ~  ±š}¦£0…ÙÓÓF„¤œ”& ½ÓÃqá= `R$Â/àÕUœžaår} (f±­ÃRÌdb`ŸD ¶þyc"ƒ_¿3MÆu“HÔ-5NÁàà´ª@?±`)“€;v84Q‘QîW1Ç4…ñª Þñ Á'7C!@9Ò1.Y q òSD¾ÐRÆäZ@6³õLiÒ0"TÓ0ì1ÃÀIÈ$â 8Îr$2 hh@v8èQöÐ5!<ñ•¡ mB>NRLQ÷€OG¹3xGH=˃pÌ„G rk–"?=È —€yˆVùb'ÞPDlâ  /@s†½á<°¡pmè?ìrÿQFÀŒ"@°ZÚ xþ.B65&ÆÓ&…TPlPM8p$8 ÆCK‰%d6ñ2jda+Œ’/áàZ<¡ç}ôrñA$ÒÑ;€sC;TD‡VìC‹À´q=öÒ*$"z‰Ç7`ZSñTÓ:Ã$I|¥ZØK„w–µ.Ts6qDkÕqÔ˜ GGyO§Ô3Â÷CAŸ#E—B=¡ @tâ$ ÷„l0ôrHESðK÷8Gq5sè… ¥¶jXƒß×i.óÄPHä 7 –" PMINw÷&‡<I-¶s)JrP…€6 6AœPþ-j’^X$/{rHa’5ˆÀ«Ú@Çd™tŠÓÓ*orñ&ÙbÑ{À°“–± ¼+Ò`d*b ‹GËc±bvúPSË‚ ú‘!Ô%ÇtFðSFYDôçG€Ð%)rcRnnPH/—!’5Mˆ– ³B"ÔÙ¢"g"NàP—ã¡89Ð'7$®’Ó%Y¡ µ³1àr-%Iè0MÀ*½PëÒÌô4þg'l 9–™*"(?0YMëãvE‰á¨"j²«ÐR¹ù0Þ±Œm5&^ò&l ?Üá>]¢ E@v2.ÊCLµrDGÄ&=0)²&ãU–‡þ´uóµLgB[v‚6Ë£"a!9 ¸p"ÓxwHÄ&‚¢Ç02¼DLpDãa'p6ârÚ¸pŠ¢á,$r94uX†b)桬¡oÝ“r¹C¢°c–?£Æ vñ"ˆr ÅB £Ñ6Q?”# F ,ó’q08^L0ÀXrõµ,œÁžf‚ d&ðp2Êð9âs?pS3Ðé 9Y q BqI®"} ð ñãÃP|s{³f> ZxE·F$¤"Š ¬r'áeG0o&%Lð?êrÒ^¨1;¶‹óÐHx øx`Ñ!ÏÂ(ó’4„B˜ð5þórnO¡Øf£~òH”/Ç¡§€L°PjÂÐud!5*–Wã=ÙQ:…0 b§›ÒK¢ ‚™dÝÀ ×b@’Jø•i´€ ëv@“M:óMQ]‘/ôg-oq^‡%eö E°p%!Ò‡§¥†—0 k}ô§…€pè0^®«ºÑNúWÓ’ÀaMÑüBºIn†’W3(Íz¤|Úd:ÁÅ[葺ðeÂu :P aP®aP‹“ÈQ@x1‚{v8­0©&:±GmP-äÊ®¿áгp¯H,µ‘l‰äx6§¯òÀÁFþo®A_k¦©¿«æÁ\@ª ·p¶ÇTº@¿ÁfX­{hú¡;CQ,k€¬ðc5+0ôpëUlÒ“R=—éâef÷u¨ÒFbá ìp¥{l‘k)[ <kø¦aÛ£nÂÁ¥ömüPEAH-±ó—'§¤ØÁ^Æý0LBf·á±4ÆÆ9Í ÉvE a5xÁa#±¬§3ǰ±¡8á6bû#rõb‹â·‰°@·  iiVäe×jú²\CXº¬û¬+zÒ'ùÓQ¯¡mÖg>é¥1`“0t(,Ff}æõÈñ'fþè=µ  “z2ßÈTNòÒ…Ïåe¥+·j0&µ@ïá!l±\h»9r´€ÇÐ5KÀ¦_Ó, ”±:|q# §)g¶°[Ÿ1oš‰w@!èA©££[G%d· 0×P¢U¸gÓ’ÕÚ.Z¥JÇPµa§¹›ÓÇQte¥núЫ„À§œ€8)1i#Š ÁéàC½ÝsÑæl9<,ù ²(»‘^T,¡s…ƒTj0σ¤°pvq ‘šŒ† [¶¤šQ_&üÅVñekl{±×FGÔ…QÅ÷ ƒSs(‚mþ!V È—œP8×Cï}yf/aZ¼Z¹ ô,_À§Ò=È‹3Aº†'‚“Ó%3‰&ÏÔ¼é@9É4ùihS³#ñ ö(£pÁ‰­5[Q Ã0èE§4!GÌt9£ª‚Ê!ÀÆf0v·.\&[àë¢J'¸ògãO…£J¸zQøŠxª&^¶‹­´€g±pª¢“y–»BW4â$?cƒ>½ƒ’d8@˜‹õWÿá`}`ÎçP"D¦¢GK¨dÈeãA`÷ûÏ#†RÖ0¿±£ ìŠ÷Ìí{dg"š`XÚNhÂ-–Ìö8„þ¹…¤9ÞÃu9Ú¨ŒÙiE´ äWSMe¤”GE`;!D?ÒgŠú  qG–䀔tŠ:‹‰Ð[W`ê"N[ Tj¥Ho6‘-Àv(¨i²m›c'z)Åòú@LœrE6³æŠÒʸÐ-중 $—×ÑÐ11>ë79À¢S63“’DL—Sµ3Q^ñ’n…8{(m^àµhLö¦ÏƒCqLç ù!_8¤1`‘lª@ Þ3E4&±æÕ*Ò±]ÔæjO› # bSdþ1¸9aCkEP{’aÂF/…g §Ó_ނך1À²±6n!‚[S.'N«PDš¨êrÅr3ØäÚÛâ%Y&)ò6óÒ5ÓÖ3#*!I}›ÀRÈ7Ã麥E¾ãXááX™É6¡L’"©%*8ÅjR$¶6’9–²z6m@’»)F¸}à¬ù¡×žX'S³@\Ãà¬hflcYCúmê¢ÜC'hjðP7sFHëá<¨ºåb™NÒ]Á6-r S% ñ×Q:‘Þ"JÖ”o.ó>Ó£Ðf󩓈SþàèTÃ¥qâþ„@ íwËîµ#C‚n€#KvP^C­=l£@qw<á&¬•@šG‘úCâl*åŒAéБªe!BЉ"0L ±›xC"{½$B…t"¹Yqw–³˜mÒirr=Ú0åÁa$6¶ždSdX•\¤9Ítú’›Wä=Ž·5 ùë,BCkGKA…C¿P05#¹û <#ãÙnÄD Ç®ÃË})Š3™<–•:zrU èY3‡i Ç>‡ÔN8ÄÌâ :ÄS^¦½ïLò燶ìñBε1-›Q@êØòœ&lrë© cb[(e€ ³ÏÑ& ?þãçA£_¬ß‘>œHKó’ÜçÇ2˜asƒ©æ=Ašª^`h8‘T„*=1×rI~À*ÃBKxIÛS…ô!*ÁŒl+-µGß艉-ª€7BqRWÑŽúR[O1i ݃ /zÔE¾-9#ÒrH 0^!?Õ4r¡€o¦ÍÐ9¤ÖL³$}{O1ô_BÝq`™´±Q]W8 ±C)sèìv4Åø#S&0çcs<›_4!X ] |]P:âv>ÿQ:ð=òãÚ6q "6(I*+k‚ÛÕ{5ãá ì”ûÅiÂápQåTš"þ1+XtôáA§ÀBìcÍwFH&!ÂýxóÚ3bTO$  †À`Ç–‚¥9…çqçA\@ï f!~Áx!ŒGdR¹d6Oè±0,8A°0P‚ÁE ‹ƒÁ.à ™ù&<¦ˆŒp|(3‡)#!„€¨FÇGH%¡ ÄŠÓ…¢†I …‚†‡€,††Ÿ žŸD‡„‡"#™Èeæå¼¤„…5³œ……Ó›´ ‡á…Á 13ÖI¢[Œ³!mP"!Z¸‚f}Ç„þ)ƒ  !ൎø’¦ÚnsBP…âÀ· w˜™ö"Á—öfµpPbÒ¬’!8(¥¦š}1—4PêmñdÄÂrž€ú1ˆ€„™ (ÀÍ,M=h|y € ö 3ö Ÿ‰ hÁ@ð¦€6# Äðã”Y™Í”!ÉÆãŒ‹¦ úD O‚µvÄðçÙ³^Öü Ð4) `@(€“Õ'pg$¨À³Œc5 `‚‚hÈx°´±|qeÿÑvã 72X}Ë3¨ì1Ú Fkš—Ú.ø2´-ažbÌz“Î1܉ìÀCÓÔþ€Z(’/­p³ÁÈ›²e3ÐtÔUY}´l‚?1ˆW°h€Ò°¢šXja$»\ŠS!ŸE8KɇOŒA`€R+ ¼m2 Ôp¡p„B€;õdR€X Á…`Æi¬á)„/2%€jT@ç˜c8à /„Á-†Adq@Àl˜«(¡ ¨17cJj€˜cB¡@h€ƒ¶†!Vb£² à€7@Àá ü,Á±~¨qÄ›z —al+óÄ2:(Œ„xÎÀ…Iøa§ ( ŠºÔ'…ljG/ª€pÀ!BŒ¦Þ¨Â (ÃeœWnþʲt X€F jù¡ÒŽÒfÑAÌÃ@•B‚<†•-ë`€AK—QËE[(³Šüã7YÀÊXpi›44 ‚§8k¬F!Æ#ï¿FS…VL`ÝÑ2L°ŠËHÐz›«YH`ñ!G5\âñÊáI·º¤ª*R«‹!,°aäX „œ¬æ#Pl(ë–U0)êÞxa3;Š9/_š6Ë—™ƒâª¯ŠE[,¸ ‚ƒ’ªF j€ýXŽtÈAi£EH˜¸0ÄZË §6á)ó†!È|#›åÈüÊ+²QÈFéiꪢŠ(Û^#Ê3äŽnþ«H#U—Ò8u‡5vÎÁo½×Ð!ðÀ÷~¶ÿ*‘#¢—N)ã?n:àfc馔2n(Åóι¹æO Ö޲p¸Odî¸/X@ÂÕ8Î¥¹«iû Ác?®ñ40¸†Ü/z–#5I•+¸ð›#ª™\Îç_ŠÉï>¨¾Œæ«±¾í§™[@4Ô“Ò½GÃûŵ¯Kboü«ÛwE5¾‹Ï±iÜ;jãg‹·þhïT<Ê•äD‡ƒUC"™¨Fkªá¨ÐFÔ¨›ÚNW NÃVùƒìp÷”ª…ËDÈFž‚$ì`Ð`e–‡Lì!…¹8B5Šðþ…HÈ)þöÆ@È]Ž?8Å6"g ÃØÀysˆÒ‰3»i¨È|¬Ë@âW…x¬fL@ÏE1 MˆBLx#˜ ƒ"ŒÝi`¾Â8„12!¯KMóÌð»;Rî>\ŠCb¼0©mK”0ÁÛ!Òm<ÈDøp´¥T¡ àŠ€ž4#¨…ÐdZús·ü…‘,‚íðФáÁHð@Œ Š3Ô‚rutÜwÊdŠ-È¢˜·¥ÂmcÈ“ÔÐ=(ú }n€hÒL1x-/É‘XòÀŠ#.›:ÌQ¡Tz”¦x8žñ¹g8°9èœCæ`¸@îM T :áþ„Š H£‰§ëÐw ¾Öí¬ †)Xø¤¢Ñl3óB@M#ˆ²†‹Æ+\Q.ÌíyÊÿ2¹QX€ß9ÅRЇƒÐ3(ECSx$»x¨mq³Â+gW7ù©æmVP‘àj"+<\N09È+ôI8>C{[™ÐRÀ4©Hz _K¢F6¶´ƒTãMYè#SÖð¸ïœƒžàÀæºa¸4œè)':¤"å& ·Åõ B œ´7P*3p+~ÒÐ>ðš DÀá8†rt¨©…[ªŒÂ*±€Ê¬ç¦Ü€G”ˆÈô÷&/œ/nWœÆ›JX‰ÓúÔ%š Z­xþxHÀ :àq ½u`¨²ZŠ(:HvjÏ ;‹ØÓJ#l¡y«íì炈F”ôõAº‡LžA“Ÿ1(!úº7Ðó%ç˜T,Ø'/q¾é•³šPM ¼…AoN Có¶Ð“‰€xFoœ¶·%I$¿‡»£7P¦ìMpšÁ8ªpµÔU€#³û^ªøÆœÄ½. ´(¨ipG‰ÿèh0ë)x”÷z´E«)Øb•ú{ÑÀÁqibG–ÐÓ-îlgóç-8ñ©R\8¨dñ¬z%…kÒ4û)n<;làl 8_P†‚ipOSÈ R%Êé¿/a þÉ®ó(O8áZ7û<] pºÈ?õ ~ŠÓ\·¿ÁÎ) €Hü#JI—hUpåÄf`á§ IžxÊÌ’ÆÍSÞÁtD÷‰ÌÓ&á­PˆÆ †#ÛßMÇDŠº°½t;ÞRŒ‚³‚ë´ƒ]æLj•2ýÇ ­™îåV£#è.à1ƒ‡¡‡=¡€ a1ªyºTÔq¥+Ø-¨™ªÛ¹ÉvgÐ̘  ÿYXq8…/Úál:ðÒ_eO@àO\íM€(5R b#JŰìâa6Êm¥)m uCµü,~¾ ¨âÐÂ<ê·JþXɵ¥r]ÓêôVÓ!Éy…gEw—TE¥,ø>‹À!qtøT®‚•P•µ)-uݵÃqTƒA¸)³#bÄ\Aþv×pâäÈ×ÊV¢ÆhõñI_ò;íuθ[—ЀÞÑ)Ñ W‘ý¼¥ý¼#ªûàÛb×ñ4J¨ýàj±uC“6ÐÏR· r¦T¢–‹Î'Íaî9C${£°sn°ìy3t˜õÖ¬mIPÄ81ºìÎG“‚ÖÅ„sÔ(a¸ðýYvm☷—”£=ÿÕ‰Û±Y3dTÇŠßNaƒ=®—Ñ£þNÂë´Ëè_GLàXPþ$È3Õ .Ž zãÎG¶»\ñÞ¿ÁE®ëåFñWM[åi=ÑW ?7X.@×àìßoÀËû›&ˆ© ­$ËY;:Ñ*!þK¥@ƒÑsºQ½QÿÈ›l8·Ù±¹Ê‚°kžÛJžƒ¼¥r·ÇÁ‚Ô@‘,M ‰îÁžÿK%Iؾ  ÚP½°ƒÿX&»…à‰3ȲVÚÕÚ›Ù˽«[®Ãj¡8-ÛQ Ô˜/3-Ãc³­Ð/b’ªàœ°¢fú‚LìzÜÈA'CŸ½¡ƒ)»»· Yq7º2œ;ÏÚ›s4åh73%B"W°¬xš<É™-þn( ˜[ŠÌj4£J£mûŸQ›Ô:+X‹x¸Â)Ó³Ú²9ƒéÚ1Åsˆuº Èš9Ùx½ÕÃÃ¥b'Û#ŽH3çA0ÐiIx†!\¤NDŸÑò „²¼I¯=£@’7à ĥ*¼ó:ÈÆ%9ìÉñÚ4¤|«E3€Ä’/LpÙR=Ù)(Å!F*¨×ÁE¾uä/Uà2 )/ô%¢C^ò1ÏÙ†² +n@ÿ±¡5(“ª 7剔¢†G˜‚ÖQ¹¡ PÉ Š7ÔI+Áp¬ á(Â8–¤0Ф¸ˆ¦ðþ±º:ÛI¼lÛ4+˜#&i,M9JB ÙâDª%ø"S@…qh5ô6šª<¸‰Ûš¥œ‚X‰;ȇÐX‹\ˆ÷H˜2ð P8 …sE;ZÁM„‡ªÉÂçùœ^’¹m#h[ …+©äh„ȩ ˆÂ¨ ¨t›ØÓ0óy† "(†Q‚b‹‹¹Ü hò8;1YªŠ3&éœ3»ÊšK5#)QPÁ梜%›Ÿ«€kZ›m™Ç¸ªÄz›)ëŸó•¬Œär£¤x…¸eQ™uIÊ ‚qzñ¦ƒµ9¯Aº³óqµ?°’ $o!ˆcˆ¨ ‚b`"Ž=¨À“ ˜ˆ‚8­‚s®ÇYË岆:,°Ë)…EBˆTh¤(™0¸é À)¯)šB ¥„ü¸…„Y‡È aà¨{ÿZWÊ\¨jàèÆ`…Êp…Ñ¡Hí†QÀ"¶êqS0Dí*˜ÑÈ Ó³Í·ù.V3jz–îiŸÁ–N¾08ŒK8/Ø*HŠÐ™Yñ™:(Y(—eé™:j®‘ê#î,J¡QJ²œÎätL\Ó°ÄAê J˜þ$e‚Wr†öȉ‡=ø„[ùYP!p€Uè3bˆ(Ñ€:m0:†Lè Õ£H“*'ˆ~”9s„é[ÂÌ€ BEyµÙЦ>ø¹V2Y >@8x¥Šy¥¨¥q’*€#ÜðÊå`mà1[i¦äœ{KãÉ^É4Pp¸¡9 ZP‘ ycxdʼnX4Ø€…*ˆC,2€O0 Ÿé˜D`Ú@…S…29¤QÍ€C™Â û¢ˆ“€I™§ÑP´Ã9£`­€³\P‘YŒŠ‚ ‚ÐJþÍø•“xƒ$º•ñ$ö0Œ¤Ks*Ðñ*L`J0ÚJâ“þøˆÌ/˜X‚뢤!ŽaP%² !BÕÓŒRJp Ú’ÂzŠþ òHöx¾Ü‹Ü 2¡ 26ÈÙà½uÔöЭZjŒs`¹Ì3Ê£¤¤ƒÀZIÐÚG †c"7É)Ê’±ƒW4·×¨/¸Pô¬p+³¦Hœ`­ªxƒmØ*úZšvz/ÐA…lÀ‰›³Ú‡Weýh‡p“%ã°{ƒ#ëV¿0Q»©r PH¶ „Ý¬Ž I¥01Í9 ƒÊpéêªQþx]G ܸŠ7ÄXJ*عüáÀmØ °ëÊEQPPØŒ[iÌ- ÌT‡ì¹#WS—Ö²ZH°Þ¸À‚¹r’“°½ #ˆ…2ðF_<úG 8Õœx-I…6è-(8m‹•š­å*°T„š±”b8œ_`‰¤óö¤XJ`T0Y‡h›ÂÀ„ê°(‰XȄٖ>øÎ:¹„À´Å9œžKH ŽTÑÕh`X`² Ú3CvúƒTØ‚X8G±9i$ð&ùÀL¿Ìc’§˜“²3¢P”â6 íTÀ.õþ R<Ø{5 n™7Tµ¾=zÉUC7þ2 š(‡-3ð I¦s”Ø®á¹;vµh!´Z¦ÙC°TN£ìLYˆ`PvJ¼°‡ûÔ‚°H68¦T0©2«¥¥’ƒÃ©Nn„þeµXeI×\DxÂCLÀ/øƒ @¨dƒøq’žbØ‹ PD0HJïóÎM»4jÀ‰à`†º#‘Kx–’®vÀ? `;ˆG‰—ã:½¡ØQZ\X Š”x(Jªßs5$r˜Üˆ’Ú›m9çHˆƒI‚¥Ñ¿«\˜šð¡ÒYòWAPá,èÈbþ‚1© ïQXê†t-ƒó™EX ‡^±8ƒ²À€AøÅPÒÓ˜äRT‹€«-„ÑØUƒ~€ƒèŠÊ›eíuáRç„Þ«¦<­éF‹À¡Y¸…K{©¾‘E§Xª¡¨…Eñ™ÞÜ#p8‘ ¹ÏŠŽD0°B‰ÁQ!2)z¬(öêGh iû ØIY;&„æ³(<š°k9“c!‰I”p’|@üЀÄ“r”ÎÀìG˜P?RNk4°²Š4ót­XÎÙõƒcp¤á )pà‚M> TIWf’00íH8rujËié­þ…ù‚îØêÖC?x©Iy sJ„äݤÆpè_XMÛÉ#ePîep”¾0´wQœ~2î„!IòÍØ”¥6í¯…Škx „ŒÁ „-Bw8,! »€¤$ìuï(0 œ€«ƒ½v†•A?à¦è¦Ê¨Ûòp˜,ˆ×´pPEx% ‘,i ö˜“¹”ðf0 …3è 9^ã,E1‚•°Ò0–“øV°cá¨aËB1mí%jîjo„¥ Eµ¦'÷s7Á4‡+,œƒ¹zù‚¼ègÈh Iie±s BôFÜ+=Ój®sþÄ )ȤÕ+œ”¤Ä뙩OŠÅ ˆÈÆÇÑ#5ñ:`û|^5‡‚­ôÓªBv˜æ=Û® p“dßR¸Rëˆ4$b–Jþ#°‚?Gª‘¹¬„PXâ/) íÞeIS±KßQKW+ሑZ¢EP¥žuHx5’uÂÅŬF‚ûŠvjÐ@paà…?Ȱ (ohr®z,¯èio†.Ž(sŽh£·Å90BØÏ8¸bœð‰|9±ÇáÚY82“ðqE®‘¨xo†¦=‚ÆPjD O’øäƒÃqpê›(P¯¨¯èþŠxG¹W]j,s‡ø÷·&ô¢Áh‘ç;S™G1‚+±€Â›.1XPq'zÓviÔ¤ˆp—÷ä.î]Ÿ N*¥,t…Þ#ï`©Š!èT*…ù)£Žÿ¶pµ7 {¨á´ò¥ xœH!êKá^E¦Ãiy }±%AMâŽK†¨ ·ÒX’‰»´„(ˆ”‚p‰“mŠÒ,4£ ³Tš¤è™©Ó†^©oÁ VXN!i&ú`æDHÃù¿?$`™#*ÀC[ƒðõn©Qkví¼P(w¦HßÖ*¨­¹l¤—)—ÖMý)1kèlþ éª9ÎX„-…ÉÙ€˜¤X™1¶÷!PÐ:P‚«ÇJäo†Xh ³Ÿ 7I Yy¢ŽšŒ4Éñ’(T5›´–#ÙÓDMT!‰Q 4p .’LµÐdŒtÂ¥Üò .1í3Q:{e…Šxº¨pRFéÐóZOM`‘#}‘‚[`1Þ]”å«! “ v‘M”•#(È•NH`ù`¸mq DÀKÍpK3ddÀy¬¶ [åþ“€0¨¢Äk™…Ð#9q†4µŒpX!Á)#p’ 2r¤ F  `<ât‰…`A z!±]ó$’ˆu 3U{½àI(1a–N(»Ô€¥ ð”öÌS‚Œ&ÐÅR¦ŠqÑ=((™$„Œ[¼Ög6SJÌè‡FƒE æ‰À7òÅS¥‹ý* k|Ø‚*ijƒ \°â­¨h]™à#’¼&CMEñêBK·lUÚPlØÓ"EÅЂ.¸(Í |ù²h¯§…4”-·Œd@»…q®”€=ÔÞ7‹ˆB• 1ÒT–&`Ĥx!ÌQ >þÈH•—[nŠT£W˜×„ "h¡O£{¼&m=ºPeWFU¤ #>•"Kc³V´t@…Íòç†u½»Ê”Seʵ.1‹f]ô@•yÌc€KA!P*¸aÎ@*!ÃÜìsÏj>¤þE«½dk^ñÇf\Œ@Imxpq†ø¸Æò­—¹Õ¤ÓfŸEh'0QŒC ¯ñBéDÉ=˜‹3ž@Žå^˲¤‹…ì@ âr8Œ}QKÀqÑR ÊrG i®bÏ„/à3°º0ñ”¨ÞrA yj/šÄD±[ñË—¨T¯ú@µ{„(Jê¼þR &™‚(|ÉÎU˜À—nˆ£'bBë¸ö'Ä´¬'¬ð 1@ !1 r‹È€N€¬”¬%“ÂZÄÁŠ£`“ÂÈŒ(<H ¢ ø ì&”ñE©rˆÍdg3° ÏÈR@ˆcHçÁÄ:P€ôf+§+…–¢ç›:ì ©0Šá(t%ðîˆAÎP¤¬(gH…*"25b M<ÂW„˜G±E$Ö“fc\.“-È<*‘Ž„É|q‡€™‘„ ppG—àˆÇQC:œ|$‚ !ñ[Dñþ @ w8ãC=ªcLë?îU< †‹ìD âÐ’B&TÇl˜™Ü„aÀ=sZN…ãT>…ãT>wÎÙ6h7B=è5r»–¥ÿÿÿý/net/dirac/PET_Data_4/Images/ECAT962/t00000/t00740/t00740_tr1_segm.imgÿ:˜ÿ:vips-8.2.2/test/images/1.webp0000664000175000017500000007316012530402247012700 00000000000000RIFFhvWEBPVP8 \vÒ¾*&p>ÕN—C¢Ñ´ˆQ9·3u>¢ùʧ-:™c *dÛÌËôÎ/Àˆâ UñöœÒ§êoï±ç»·¦÷ÄO»óùnøþ—ùÃz­óOç‘ê3ý¾û¦õwøK[Ï;ë—ô>¿Áý‚Úûx™ß?ìŸÓú{ƒÏÊ ½±ý/@¿ƒsÛÂé=@¼Õï®õ?`/Ñ~²¿òy-ýïþ‡°W—Gÿ¿ü_ ÿu?þÓøeý–ÿÛéQlÅ œs78ò´‹Ðµ[Kž£øþ ’s7R!´iºÊ§V^4K™±*å:'ÃÂÑ©OøwŽ*wåÿ ú>kMmÏíòG„‹Fš W\ÿï_»|=|”ŒÀ= <µož_‰Ê"ÅÄ5è>žÊŸ04½ŽÙOPg~Ý¢s¸²(á ü“+ÃÛ0\ߎ£¸,‹ÆlÌÏn“lŒ2¨“¬SÖá Ù3q¼wÃÆ%^®ü¯×Yw‡ä$ÆUå¶iÍJ• ¥±N p 5GÌܽGYhÝ#½[î¯Éû­{`öõÊnbGEp—€N$,8#¯xœ`Èe<‰ZtX“tƒÁ$xíkÈ2:MÇ—Û3N\˜ Ø¢ [‹R„ô-….\WpŸ½ô©è= <ãó×r‡ˆkÎ'ö“a¦°‰lýÈLî€uP°É‘^ÍTQö ¾SŒ“å•ÈÈKËžÎ<Ÿ·å™nu7¢tUú¿€HªŸS°(C†`Ï•jÜOõ!<9Bú`E-yÝ2C¢g Î鯾ÂT¨ÎGñ“R¯ÝDV5è8…§rêÇÃÌNwq”ÍŠá‹þM0à…›<Ôv°uбŸý*¦ù}ãwr•¸·¦Ám£À©5 Ç÷WÛž¢Iq‘%Ý‚þ‚ t!`¸‚¯:iQNxߨí©ÞÊaä* °žÎ ‘Ùnµb® ,;ؾàà·…w«Ó¹×¦Yé×4©·Õã°¾k“Bs%«õükø„ŒÕW®ìÒ4(ʶ¾ÌÞßÛÒ^6pÏŽ}k·ßä ’ü¶‰ÛGö 85Ëä g}¿ËêòÒû¼WbÀYÜåNCÖÐ^F Љ §B¶qªYCÁœ³ÿí¥ri&oúx`SÞ‘òj&‘¹Ép‰l»5_çz§´×ü°¬ûÈ„TpùŽNß"´6Ô›Ón'Qï2"<…f»ü?L±­`®ŒæƒšÃçaÔC¹ô,Òé=¬Œ^Ò’ä¢F,¯Ð¨ÙGç"ݪMÀÊûî},(–Äæ)S1 Xqt<ç|1½²^œð¼ô”)ÓåŽÆcúA–UòY…¿ÄDn´_AàV/ü1ª¶ ²;zc’ ¯¥eš£dbºh…€8×:PHMÊGúçn‹š˜èg‰Öi2‘<8…©7¨Ãpò¬÷ì׫<1ôEÑû4ݽ5è傼©§ë8*ídrŸ¶–óãÜ^¸%&!K}kÐþOþðb[;¿,ãô½™Ws¡ÝYwEýu§C+i…y!+´ÿ'ù>·ÈÞNx.ÆŠ?É>ûü¿µ}LN;¥ø«;"Qÿ»®ÆœÍ;$ôíØMŸ~Åäz\í½ùæÁ¿Ô2†ëß²eᘯªóâlJ~˜œ+éw}ݸ¾ À5]IÓS½Š Vñò&Š[F Û¢›Ëxfd142fÑóÜôج+ä.œÅSB°í ­ÝçÔaÄTL€ "×ëˆ% ËJŒä3ÈæÒÃüiV£f¨âÙk 6—q¹HI,Ã'xþˆ5ü=µ¦/Áw”ãsŽ‹ Æ©·xámÕ(äîoöUÎùKe¢«"GõqÐÇ…Vù ¯Q"Á®k‡-Äy ‹%Ã1—w ²-;T  .÷fœÞWk¡© Î„íߟÑÈ` Šbš—u,ǹ[НjìqþçþÛ¤_Ë6¤~cH„¥Êùº6­? €hÜ9RÁ´÷f™ã<Šå†^VSgç,ÙúȤs˜)l¿•Uœ¼d<›éõ¦‡²f+U¯þ._K*J24fÐa­÷\‰ ¢3õÞ¯Á]õeë/½Lv7ÑŽç@Ð`ŠôFVÃ’M%W;‡O¡½TVÈzµ'b ¾­7.G—wöÑ6%©š8²~Ãø‰±Tݧä!º*‰TÚˤâ [ÝYb/ç±6ž>¯Ü¦ÌÑÀUÉU SñË•:ÃØ9 6D:æk·ßÛ¶ë1ñ« >ø … ÛÎzZ¶ÿr4ÏPÛánæhCn—Í¡²›+ž9ÁlÄC|!ÕÄ>2å;ÃcJšzrF=n$<2@u¨c¿8<¹R2Uïe»vH‰O‰x +ÙBÀ‘i¡ãX¥f@€Á5h’Å*Ãý·åd©´d|3ƒž4‹º`ZÀP •¨ŽÈuýiˆàÙå(— ~·žç„ð§k¡üêT‘¦´î+GZƒzôü-ƧìÆpÒõöõ)ê&I7‡/ dr~ÏW'úÑ$!~¬‰õ(¬$è²õ,ëR„?%ÌT‡y‰œy[½C³]-æL`ø}K˜H´ê’¯”7‘³vóRŒØð(ï¬"HÚÏYƒÆÅE·ñv£ çÚÉ“èúü’ÿ €¤Qˆ¥ú^}+úø´‰·bÒ[Iätõ§i©]ÅDÿ j:"sžâ ¡YqE‚Ïðaíêqùш¥Þ¨–¾ÄÖ¬-æ‘P‰òÐm•®&íè võtŠ”EEc@ ï>ZŒ5Aeçlš|ˆ.Á 9ön&¬ ¯ÈºÔóê¾²ŒL*á•<ûì6î¡à_{Ø 1ÅY³W#ä·p„ýUýN¥òî2¿c›8ü2Àœ œº#à‡Zˆç¸ëµ&;‡N¼ºnãz¡&âÑe:VªŸ9…ÇÚ:ÜÿZupË:7<íôÓÔfT„ÊïÑúµU"‹ @®×åÈ{®QÐ__•€ÇÖ¦¥Ùò * 9A¯øûÁ7ù²Æ5Ö§y¹-ö¸_?è«~ìgü/ü’h”Þ¸:»?NAXϹM8b»¡³ûÄ)B³^užwÑ#¾g•¢r„’ý_þuø§1q‘à8[]¤å"Š,ã"髺Ò>1œö8Ø¿xQT™`P•1®%ßd{Òw2"5ðAPVƒ´çæãß}XëÒÚ6êt;Ø€í>Û ‰{ç;~¥ûQ@´Ù†YÙhöÊÉÌŸ>Ž,GÆm2zü´#%ÏŠ·ÍvÉVIOÿÕŸÁlZI†#‹µÈÍúÂ, ‰ýeŽ=§¥jEè/‡Ö¾oZ¥²)ï7<Ú¢V)°ïBš•]{˜›ñšÃdÝBK˜„;¿ÒSBròº‘`îÛY+Ì¡Š«=Î>[aq =ÎÛç-nÏù}-óRSƒ¡tÎB¯G ß¶Ö›SÊ#ŸÜhãª7¶x|Y¸{äÈ}ø-ÀÇÅNÀÊìÌô¼æý ±åç |6<®UVOx'ÿÀà>1ÌNÕQîôÝI¨d{Σ¸}ß4¥bPþôÎñMgtý6–#ìË¥L:¤v»|"&Ðù8Êß÷—ò¦°ë‰‰smžÿ¬{Î…: Ø!-ÇŠÚÁNÿ¢V¸,Üø9’oõ-/¹>¶ðëªmVçñÿácú17Æs’?åîgÞåpËÿÕsj"³î0RûØ‚O®¸CÊ7¡è„ƒ\ÜËõžY÷ÂL{¶Zl8Èy[SMÕ}³ý,*ÄCÏ84ß½çœÂŒÁ6!kµZœkïùÈè,àÕW|/…„'ˆ"v÷yHÐgñÒ#Ým^“+>Cç1òY¯Š …宅x©ÃÒw¾«¹ê:¹ÈO~L¤D„vcÂT3aZzïÜÐ6RW_KÛ9ƒ†!A§uÛRî8’i&q¤…~f¥#ì²1›úÌ`ÂV¼M*|Ìj®ßCíÀÉ«\ÔQ@bQiƒŒª(q xóÉ<'ÇD&ùßg®íC_\¦2Ô°Œ–°Ë¬þüúŸZñª™¯h[î½·ÇÒa-‹“(1~Ç#ûßÿ½ˆuE{©q8(Ò­”Xˆ·hÜòÄÉw+í¼Pb¥ìÌ¿V ½LË,©e,ó[^·¨±´¬6€MÐx¤‹-4W<ï1ó˜ºÓ,h2fjÍ=õ^ËÄÁÒÉ;p=ÍIرüמš¶jø·*–ý±«1áàæwL:é¤hCõ×Ì•ú=ŽrÕ#Ðüó”‰-’qQ#¢\`¦)ÿ?…$EŽ•£íÇdϹ¾Å3*VSê?-¶ø†¶®û&$_â—­_C]I(^ ¬Ðw îâ‡ñŠSbøéù-× gZÀw«#ž ½SŽöÊ7´•8iìDþ°`Ÿi,%§X6^\ÙçØá3豋J2G‘>ûVÛ(\«HDkFŠ¢µ7ÿÖfž<+}„Q›AÂ0Vz÷°pg÷dfìOk1ÔcDÎùùÇE*æcÝ06Cfq‹¹‹ÆÉ wŽ ÑM"ÙU½3¬5%NwýèÔÍj+¬RðÁ‘ž …²œ§šø«y¾Ü,}¨|÷X™dÁÑÓD¨& õ6ý»"²Šñ$6-¾*k™@‚1 ´SF²V­Öô¹é±^ör@™G@Ý줌¨ýØ" _íüñ'ÍàÓøÊ» ä0¥ !뿇­Jp#Þ*w½à ƒšˆÖâcB©²›m3ד§ù\ÉŒmjo?Üm–ƒ—ûÀtNÅÄrªèY‚ÎÂcNƒ™íàû2k#,åEæ•O`w"‡cZJÅH%/$>ê6¹n7> ¾gò¾Øh ?ÕNá› ¸2 ß)gC2‡ôšpó„„Áǯ Y]E"ýÂ'ÃùÂH•FÃ*€¨e—ºé cògQä’‚– ¨pûÇi=Ù5+åùc*Ö_a÷ö~Š´ý²µO’U«"$´žf“|—K²¬dqyŠâ-Kp*µ!ŒwìH8ñ˜'Œø¿ºÿC_X:T Ji_7%ÖÝi£dí-]™¡?i—ÜÆ£Ðð“„Ùq³;öäF§Ö¯K|`K[ßE‰É’0eÕ?TÖ§Ø(¥æ¦iL }šbzßF¨ÌO‰ÔÑf’__ϹNn‰zñzûQa•|‚ÈV9‡êú(x_“îœMÎ%{‹»b¿ ®iî7{ø…l•*MEÕMaïEÂþW±ü?ØŠì±ÏëÙ{ýŠ1 Z°Mæö[=ÇÄ~’ô¸0¤¶Í¬¤·ü‚,"2éG~„ÿl—jpêË@|”²eK ‡~=cÐÝ›h”ÇÞä–|ÃÃ^,ukq £4X¯„ϵ/“‹yàŠJ=†ddå‘Ô£”hQ ýÃD,Æí1ÃÚx°u«ÇQ""²–»#Éc°iö»ye#î‚炪“|È*¹Ð÷Ááú–ýðð1×Z¶ÁDÔ«F>K·Çž¨~Ö´Ñwæoq˜ÃÙÌ‚Õu°e€ØŽ=”Ûå°ö¿Œ)Ø4¿*©ò¤ºðmͶò û Þ‚ðÚ•šõz9›A•½¬¼ -s³=£é%åAÍ ¸(û˜l‰úVœB;Þ5§QÏ›¼d0³• ZÞ3FÂ73|ЩèÇã${â„„Ë£Él…¦Ëv½fCÚ0FÉÎjøT@7J𠜯7•e.ã¹ê—ôf4zeŠ€‡…üémž˜pîÈ@1zØçÅÆ°P7pÄV€*Ò¦‹µ¸&ñi+5 £Öc‰­Ç¶¸ð‚p[`‰}Æi óë(Ⱥ~àžY¬«ÇAˆÃ;"ˆ¾î öPÿcJ•bšÿíÇÌ*¡Y/2åÀ샎M‘³&¸ô/ò‹zw nÖA žù‡ØLƒŽ-Â6û;äŒ>Åœì#4ÇËé¾Ü‘Œ5¼}̹Sü›˜'Ýg1gmü­QİždàʯhßO]Óõê®Hón5ÊJ\JÍ,êÁH éŒ&¹éG#·nãJXfOn«AGÃ`ß³%è©øœÕñê lOø´oªoˆ`*鵦? ¸5ó5È$C÷^ÒJµi»‰.Š1•1×ÔSöÔm[áwÕÝþvÉL 0ÞRâ,p>ƒÆ(TAêõL)É áàÆŽ£Uå!~Â/A!–øaÁô¦ñôû–5ºÖ^$!H±ØLwI:÷ž‰^s:8SAÐ;Φ}Ðý®A3 _¥JÊÍÈÄzqBMXÆÂ>Vyjj³ÜæBÊO:?ŒòŠ Ž,DÊ }Ž¿ÀÎ0(zø²woT5¹•‚%¿Ö½š(%øeg’¥êêÌLÈ Z_ÞIWÎ#]EÛR&“÷ý†p`\ÜÜ-r.ƒ/ª¹e_§@QXRÉD—Ów¢ÀðÌÑ]ð]릳ÝýØt%WeˆM®Íþf«Š“9¿‘Þë!$ŸÝ“¡iO¨²KÈ8@Þ¼šT#ëq #_RØŸð•ˆ~q‹“'Y.ðœsЦ Yâbu±éx+H›Sú©°çoLl;ácñê‡ZÀêÉÙ¾ýàÌ,(ðåôyé xµúÀ¿ å¤Óšœž3ËU΀ÈO½Ï7ì¨d߉U/àÃ̹uç2®Dô„}O>Éa?‚å†RèëÏé„ðÊgФ4ÒÍœ—[~n|ªd?t.ÃŒþ&ÛÿùÜýmL`<;†øUàÛѶ, ÁE!=-Rº‹†ID¯c¤Cü¦oté=O„Aá’7Z‹j [rÜ5#1©òƒ€e¸'m¸ýI`±¬šËò³^QK^ $ÞhõýÕ-ë #íŸ6 h¾`„·ž»!ùzüg°08¨è·¦DÛ¬ºUÌ[8®Înp·gy$ÒÝ9PN¼ xwÜk@ÒÁ"~_¬{U™,ccÌûûútÓá½öå«wT–®Œ¡Ó&¯=%[·TâCYž´ÿ] º˜ô¡™ÃùX|×?~L¤®ºsD49¼Í#Í»uÔX¯ôM·åI(Ãî‚yØ6*Ô\Ðàþf`u'_çBq2vv‘Lô›ŒÉ;šÝ]óõ+–|ƒMFBnŸÚ³ÍExï‚&PU)»sÐO>¨(i;¬C€<šËJªävÛB(kù¦§›„~hî.—øã°Ïúp´“iŒ{€]ùÇÜŽ‘P¼ºÂ´ÎçrÌL‰‚,'ï^,„dvÚyß"T™Gún¬`30³é¥éXc± 1Ð’mFR&Ã6yÈøòSõ #ßæ’”ù]âùg*·ðM5ºè)BU€²sN¬C‚økǾù\¦¿•5ó¢…Ï Ú;§ü±Ðµ6D,X¦f9/%è OB~¿zÐTNGC‘ ¯w=ˆc§Ú=­iœZ~-ÈkÌ`(Èõ)ȯ—éÿ²P¥ÌÐÕ9™9Þ %›‡Ñ×–—}ø&‘Û}ÕUX§ß!¸ÓpmlZΰåˆ-h: m¶ÿt€·U”‘ª=§`éI¯¢¥H0õ<¹“ÃÓ¡…§æ½³|_ùVR&Ãéë+Ó`ZçòuÒÞÑ%\ÇG(`f™À 0eôbÜïZýìNM S1ù]ƒ-`²ƒ ”›Žú»+Á·–I«@mÐçbWvo'ÓQíª‹í2ig_Ñ‹˜‚!ç4›¶Éót­˜õîw8ØT›Z¡-îNÕ;ÒŽ¨Ð•R÷دlÛ‰ L8£TRõ4•Ù§ë⦠¾58V‡7¨–œ£‚øNÅôŠ»â|¤±gW:%›•_Ó*‚ªz©Égkäû[ÿ4òF™%äŸI–ÎcÓd—pP!Qz¥øßK[½Î¨æÍ{p‰áb¨_·©¼Ô5ËÝvMÂß߇¿$¼”ÛÂý_ ‘ÂÍ!þÓ¼0bD²N0œ¦²?ÇËÝùH™1r†Ó ìxÀ3žÛ/…ƒõ­4ÀÈ a€ 0Õ£8:%Ũ¬‹û+Îô•é2#ÅòR`z“R„¢´¼<ÐöuH. P}$ª¶ÜÜñ¬ÂËgæ†çy‰<°åç»FG_a«çÙNq÷ZZ´A„ú©EmW+ŪDÞlÆ0¿5e†¦ÜýFœ®¡^içBͦ q:ùQ2ÑH›RºR%zœ¥5‚]'•œ|uIwÙ¡ú±7E¦ÅÍcPÄÉ{Çj¶ÓÊ謕HðÅ Cô—# ƒWÀéÚÐ%œLP³ë³ú4ãS@#1< O#Ï —Üöì ܤXjgK»‚ô·"À—gºÃ²]v{ Þñ„<½ç%QѲ£¿×%r„e›CÅNQD=X0`Ö,"áËkœÓ:#ž®^æ)h¹ 5©»(ó0ò[µõÀvò6Q„SI‡’Ù`‚÷¼Ë.±¶È<+¤6?e# Ÿ=t˜G#—ršäÈ ô6”²íSVhæ4ˆóœ/lÆ6,:AÁï ïN™UöVD ½5Lr<嬕À·2¬Ìüð1˜¬Ë3X}NThóCVÜï[YàòëŸXãöÔÏ¥¦7â;4àUëg³,îà³ñÑI·Ïî’ëÀ©µ#pTbCöÌ&d–"áù6(¶‘ õÒ×i]Ñ+ëј ¹@`}NV âIë¶gh…ÆýÕÙKà®ÄtÀ[Ž?…¹Ôò¼Ã§dAoBdÈ-ì H£ V`í=óÝ_/‹üèfñâ†öAÏVa²có0s±…HæQÜùÁšlÈç pçicŸÜ‹­ kå §'®€¶‚cuIíÿ¬Â8Ÿp*;BêrË1³°!éUU:õA-ñLM6].´ó×Ors»Øü×+yµŽ×âK±–¶Û»¾µ‡ŽsŒ-ˆ@—iõùc¤3 œoï ¾M?Ó¿b)5½wð>[kuƒ²\‚‘ÐçÍîÄ\j œ%j@e•ªŒºò‚¤>~¤ò]Ye×;ÜËDlRµœíìÛ´kÈÚ®¿&a*;]Éôb3AT®dnì¾€ñ•R@$íR@\à…¢,ÇÞF±NkB>ŒJ[loæÐ%Ú*öÖ¤ŸÜG@?üÿ°ªýêw½GoÜ8u/@˜/¤ ûˆˆ÷|±—Àß«¯ò Õe€8¯ÙžÓI¥CÑÇ€˜”Ó‰k-á7U›h¸ù¨¤×o·¤WòÒç<6>U³x) 6nѽ r­aਬØ©a Ý=2Q* Ë­aPçÙñ05d3­ŽC{þµ;"ÉŽU§gPÿ4&ù…¶Š-Lé{f¥CÊ0//š6Î*v·€W‚Ïñʪ3mľ7)’Po0žþè5Ã{›ßs3»3–OãõÊe%{wáƒ!LÅ9Ÿ)7y¤´sHj3köô‡Üÿ0X¬pù¬$w2²Nû¤ãP%“Œ»p»ú!ÚfœÓ¯›½ÜõÁyÎm½ÛF¸þ°ÒŒ±+kB…¾a²”0ÇT;X!Ň„öŽAÑÄͺÆ" “ü¤´¨okÁ_>° ë<£FoÕÉó‡®w"RG4‚ ˆ' #Z®¶Ü“®Õ†!êÖi7ÕHÉAÔ/ÒÞÞéYH—=gsU‚î+—`3…Ã_ëj 8ÙDÄù³ºwêêd’ná/B‘WwºXW'PÂ|sF&%^ï3ûÅ‘Jðq`$Å¢ºo)EF¯½Àó»]ä I²Ô†Ö|ÒR;]O&¨Ý¾—oP^ʇDmßîÙªú3ëгiv-KŠ—]–…µ5VKXíJ=sCÌû{Ö¡˜rÚÆËw`0‡•uIØ%:S,üþE[ø¥éle9"‰£ÑÛR(äØ-rç/Ô#œá,#Þzjš|‘‚N´Ó9iÞ>ÕxÏübŽïõ ^“²ãÛï»;ÌD”õý²ù2Nñ?Åe†µ±3¶µ¦\ky•ÝÀÞ¹zó7…NÅð0ÚÍçdm²… /ÿM¾<ögFrî2 ½-Ô9.aȰÕkÇ(à0Üljp 4ó±n„{â¬cz! ÒÇx?:_Ht€î‚Œ^mûbÅúH¿·iÛÍ'ò¶À®ÐÁ/NÍžq8UArCõãPA A!dµ£±…³@p€ò 7á@|M¸r;\ Dè§Ý¾…(þ“|¿RÀˆ«¡ÏšC^ò .¨cƒ>X¬xÈàSJ=XôrF.ʹ‰e„×jíqz.Í…Ñ`•D¯cXq._C%´¼‹ãñ…ƒø»“zm'8mŽÔ²æô‹ÄD+ QɽŽK‘é—Ò{}2Ï»!­å„ÂyKRVpÞçûW2z2Õ<"x¦ Ù„üY»Ê·TÖæc1rÎ8<ñ΀´ç¤\~§µºÛßÛVtêƒDÃ^t¸¢ýÝ•ª:3'ƒîÞóeÇ¢q¡ÿ«Ry¦®Ö aî VµWÄ ­ú±ºhs’Mw¿“ø‘ê Žw34*‹i$‚.†ioGq/OèöÃ’,i afbýòX¢:ˆ±Ÿ*‚FU¸T€‰œÃƲó—'n*)ÆØ Œª,2[»FT§b¾¾g$Šù=lÅfGÊÉzÂxÖ‰j,U@™J.tdû6Èâ~éÎøÄ´EHÞR,ÁÈD¿}Ókˤmb‘¡a§`¡7zÉ>Û2žm§âÕJâ›b~X ï3åù”zE}(bHÎE=fædqDÆÂa$Yƒ w®…E*¿;ØÁ!•-q1 Ó¡ì®#UÜïêñ4øÍó[}4‡=FL>3v»¶,S—+ÌNŸ=º§.8b„b©3Ö¬üRŠPÑ’ä¶H¿î§Œê"÷ò ü!" ˜“M[!滇ñ-È|²öZÓXÅôÀÛgžD˜õßIžçÓ1 HC»Èqó¾žx0x>—9Ká¹!{âÅ÷WÈ î… hô+œq×}(Z\¶S#a.«Öb»¾,F‚?Âïmc¥ê9à) ÷žÿ¨¯50…™ú"«"ž,Ð þDD$Ç{€a©¡oeMî¹sÅÃr–•ÍsÍÕâ*×wN{_<h¶|ï3úá3Ëï©ÙC©.oäM1åq6ͯ¥¬÷„h6‘ámU¼«Jž$­›Ú•”Z(÷bD|‹ãdŠ}•9·7­ävy Á4ÃK®œå­õ‹ÔôÆ¢î+7ï*K ¾kovþ·ð§%|Tú ÙàÔ¹X è*pŠ^}:îw·Ð]‘Ï[¤FGÔ¶/£,9Ÿ&ȤÚÄM|d.)‰Ý¢],ªNkï]õwˆŠ ç+=±“-Qjêm`iɾ¶MIóÜ/u9…ûÀ… _±„µMË©¯{XÒRvóÇcRc?gYÃsú‡¦`ˆ%"À`˜ÝzŇãÿ‡ÚIŽ7¡bf2wð ©´HŸÄBÒ_½ ¾•¥ñ˜§FÎñÊñŸ´r鱆é]¹2Ñùåùˆp3‹DJ0·œö•›Øê›7íÇÈZ µ9˾F2 Sé¤é2|ИýѸŽå*ó¼6λ¶49öá €¬@Ž–;»AQâU˜ÜXÓ¼r€ÛG®:B›í·۫鞲>±9Ù'Z³Óñ<‡˜˜ö2t ¼ÇíÇIÙëøõˆ¹þuB‰Ü;ô"d;7zïù(ùŒ§\k•Ÿ5c{ëta /ÂÙÔhZí$Ý…Es£­¼qƒ’¤‰„ì}>@l› ãâÎÍ øªhÎð¶7£æê(ÖÊR›­lÅ»B:Ø =FŽÄ¤èÀ"*¨D´JLsöÏ×ìŒ=UœDå‹V @Cê ØŽý¬% ¯LåÀ{@C HsÀäæ•HÊLëÉÍ[ ƒ¹åÇsªå`Á­VJç¼!±ü,0OÜAèómz°rç~¥á4($ßWèç¯2ÖWìž(õÞ~Á|NWbÎ6ÿ Ù¡$ÕaCl¡ä2:©aAž° £1rSÕI“ÅïöÁáŠÜnw(þ矀™,ߘxÍŸ‡}·=`‚öGÍE¾þÅ@H“·Vñýíµ_ 3·81õH»2~Âj 0G–œå“(P›¯i7w”¨^ú/6ÄÃUH$_í 1¹©àïýÀ†ªæ#ö‘WŒ.?Kä·áT1˜ë4x›„{ÆÇIôc 2o¥æËUDš>{Z¥ÚnÓí‡eŒœIXõxÔ?ã3d°RJßÏFÕÅe"-ŸÄjD:I²3¬5‡UI2Q¬i<5†W 0€oØ x‰å| *GŒ¢ŸnŽÐçX„ãu3sŸ‚­‚QÐS³F›1c¶W+îJó_%âdÊ‹6·ä˜ädŠR ;PìÄ%E .„»àüâ´1’eˋ׉y‚‹{Užv¥ú L O†•Òù䰩¯d ý^W„*,43ص õÒ–Ô¯L5@qÓ‡ž×ªy3”}RíY ¢SןýòfÅG¥»H½a‹‡'½;T·[1<8íMŠçEÿ‰­'fùÐrQ^ëóŠ/0,YJeŸzð›òý]{ø¤ŒŽû½ø•„©Í¬Á=ÆÉÏO…Z«¡Cl-'W&T áñ :€¿è¤êÿÁ¿W94žt‘!t|aÑ>.¾O£ÍG?Þ@LOiNàŒ;؇Íu¶åtšM^(—õÂfð´N\ºo·}½×§ÐFÜ*,<ˆ¹‘ø¶ßÿG€æª!ð!Ô9ˆ¬x¯Æ),íÞúõ<Ù Úý>;7bèß÷¥¹ô…úzöüô›€n ºñŽ%:îp”š)€˜·ºth»ëÇE”âE÷¿am=XŸið–(©(1©Àš×BÐß)dy–_ѯ[$€b#P´íè4ÌÑ €¡2¡‡sÑj±ý ®ñò œ†é¢Ä!aG|–P¤F³2“º°l^޼íÉ¢ý(X=,\‡þdâ3,aú|c»mټˉµ.‰ª]m™%³ÚpÏDŽæã§Éqâ\ν!‚î?}Û*ÓØâé%e–¨ß2¥™dö±ù‚¬Žâ·jÏä]w°íSNˆTaÄ–ðœß)ÐÙ¹:ô^ÙÙ…†¤b:Å‹øM¤´ü«£¼Ô™¿Ø¡}HŸFâžÒ°šq¿ó1(›îy¯3:[#Mô›fVVÿ7e-ƒê>X‹&w•×g`o§‚ö¢õ!É"ž× (Öx |‚äÏÛ*€Ú~E „NgfR¥/3gâ¶Î`Ç Õ’Ç'ã³´ÏÏ­_ñ©²-ÛïZŽ\ŠéÏ“mÓèiðôkaއ—ì @ c8¨æTuû|~«^ ¿¤+~ãuÃ3ÃJ:\‘­Í+ƒbúè5§%ç¯Wÿ¯»ä•IïZÛ§‰øîþ©H}J}ŠÐ)OHÿ~¿Pk$ýºœƒ¯)E¬Ñÿv1‚—s¿×Ûѽ 9ôò?îV¹~‡»pÝ™’Ž1Ó€lúYöUŸ÷“ü9O/4eÏèÚ=—gÞÉ>ä5Ö9Æ[pø¢Ø[`k—Z]Qž+dÍ2.IH\‡Ø8ö3#?O¥aÑÎÄtÕ4Ø€¾R( ÅÓ ÔÌ€´Ù«á˨#‹ä¯Oå”Ë]ª.ÝÌZ k‰^wŸ#¡¢ÌœÅ)SUèƒ^Œdß&* ‰aÞ¿FcYéÍÖØþµMÌÀüËß7·¿^§ï*±ÔÝ~,Á•Û¨?°8ö›¡ÉŸw‡ž]× %ýÍgf7‚7ùàI.rO îl¬O(7|ŠIÿ`@ºÅ·_`‰9¿ÅœõjéÅ©÷Ñõ–ã¹ n4>rÛï?“ÃOTjÖ‘¢9ùCñ\N»[°­pEL+¾¢Q–߸Ò=Pñxqy\‰®.²À"ƃǩ¼ñù,Ÿ¸{;Ô{´4OÅ#P ´ØrKþt?Q~ü‹8ˆDÖ+àÜ%sƒÅX¬.Ó„6#iìfƒLYNņт]¥«Y·€’„/tK"‘WÊ ƒªêK3üõÓ~;Ålöm‡ûÚèÔöS-gß¾ܘ«OÉ1õ0ÿàÿû¢£Õ1ŸÌ:]ø®—Å‘/âqàÈpgñx >õQµ'ng— ·R.àvWØÕ ô×ÝäSˆu9¯ƒhôA½ÂLpêfr|ÞÄû²±—aKÌ\uË´¼©‹,²>¸ÿ ”jV¢Xõù¯·ÚÔ†™ÔƒŽ:É]ÞÈg£˜ Ñu®â¯ZÞåLDeóBÒ‘¿À„µéŸÐeD‰Ù7‚ÐxìkÙú·ëHrãÉ`[T›üò³ÙQcÚëV0³)«í 6à5×:^ޝˆàÙuN–^R€²1éÎVïT)2²Â"¯´BÇíŤ@™"Ç/A$øÜ²Õæp‹]ˆKYžt€ÅyýÁ©c=ún1Ê+k¯âóC3: 34ÄWðö¶ÓŽäÒ`ÓàÈÌÌE]ÞϧëW“‹X×› RËÖ±™Ua¦{ë ‰pÕwß ›T߇¬@W–œ¶ 6ès{<Þ±Yˆ,äm>€ßLÌö0º_Uƒz„`·:*ÐQUÅK)Ù•ƒWåúÓ†ŸÒã–Û\Ù‹%BÒº¼ø•§ÐnÍÒþüljùò±âGŸŸ<ÈÁCz©©Û=gœEûÿ¯è±qÖ¿ÑI,æú.ü5BEÝÈs*pI7¸¦Û¦ÈhXÐ:*¸‘´î ”Ò~íÝ ¾ƒZ<Ò^¤cމNzÄ|›ñ5 àÿÔ·<¥‡GòÙ~^f">·äáÒ­cM“^Uk+îÅ h r@¸²ùÎbì=<<±C«ÆP%:KZ™§ r=)úÁò‘äã§/SËèÿ©«.݉‡–“/…òãeª#„jÛ¿yT-ü6ÆV÷¹†%é4b€=I´wv[þáöÈ`ÈçÙîÍôY ñp·hèhbdy§’1Lý7ØkŸn‡m¨qö+Ÿ¼Ð·fè5Ús0Ú|YìHA<·žÉ^r `˜ùÀo œ–¾ÎJávÚgÝ~杻/íºzx„ÀlWDÑá¬_`¤GDãa¨s`Ç™ª`„§7áZ…ÿQªq:ÝSݧ®›]Ré@´f¹ Åô0ÐZzÏÑ^L5³dTÜŽ™‰¦ÐŒþRÑŸeTÚRZ=dÁ½¦>ÚX1èpFŒ}B\Â`9¶ÍxزüåA©Ýï%0­æ ;1`¸Ü@ÏÞã–YàxÁ?¹G37QÙõÀÚtK3{î\ׯнú½¢²«°3 ŠžOLaˆÄMVï)ÑêÇ]“$|(íàS:¥Ÿ• ¤aÖzÇÁ:Î®Š ¥®VêgfÔú«Ý±G ŽÐ<„k“ûíÆ6Ìl²ƒ-)ךäö+ªŒÄ*xðR3õM;7–­e‘µ}•>¥uoÁ´· |O>ÇÛýÿÒq‚ëÂÚ‰•ñ^^hïãvç0hyDõ ïy~5øHÌ?¶/“ûÀ8}Aüñ¸­?‡à «½r㣹÷ïc4&lSð à¢K)çFµÑë3ÇD¦­ßÈ\O»anXój ë½ ‹-óóNNqèÛ»@‹Ú?Èpß¾«Ac0·\Ú8†ƒÌ^QÇFÕ) ç…uS¦Š[DÁBý¦«d86à“…ÆsÜbõ0áµj)P=æ‹RØèß8gáŽæ¦6êœàëöÔØêð8¹Ë57r]˜Mg Á #Òq©8@L~æÐ®˜Qç|©RÍÞjÌHòëè³_1±õþqÝ€[?µ[¾@"ß•$Ú8hŸÛ%ÿ›H_i2Pƒ& YÑ» ‰æ+åI8 ¶ôV,ÎNPÿß9v"¤œ7šuÙ{îÙ®†y)qÎv¦¤‘¨w%˜mG"€î ÈÕˆ?g~ ™uû]­IÚ¼7ä$X„¡ñ‹¡e±x"ù‘¯íÑ飰-#ƒ`ï 8ƳfIV;UV”Hr72D7¸è¸BÚQ§ªçÃÙ9+|Ö,(‘:tO­%zÐq¨Øä†„ ­[El)=C¸ –`E9©‚YÌÒO .rÉ–P©,å ­Ì¦±{çjW9Í ¿Ìæo&ÆÑïŸ}À`µj‰?ÑQ½Ù¨a¡§uµJw3<†Uz}˜ö2¿ËˆÐ4õþâÆMï¹Ìïµ1Á·§9'ë3ÒyQjiIÀÑR÷(ô,!C¹LS!ƒí²¡9Z_ÑÀqe-§2‚0ÆZõKrq3«-i§~p§zTKöe‘4¯g·JE¿àÊ/ƒÇ+ÛgÍv~Ÿ8¿d)q¸`‚§LC°'û–í·CÕ¾ nB'Àv);l_è$xùC<þÀ/\vó˜š&ó…ksÓóSªÞËþˆ™Bs9;ìÚ½’”TNäÏ-³…ë8äjhÑó±ñ2RÊO7%¿>“æY}žƒ–á:¼d˜Øo„{ÆñøŸzÍgt•£/ñ«‘àgG²žZÉ?–úóBo€<ÆÇUÞBw?|V¶7ˆº|àt ðQÞêZþ¿gÌI貫B#i±ó/¶…V5¼®æíÉ |g³›1ÝU.¥^—E« Û*_ÈnURêzËjuCênc¬\JĶ3#¾M4Ü÷ðM/<ÌB—$&<þ+9øŠ?šìëfµãÑ8wN¾µ[ 7·üGÈ¢·s€þÏiÈc·Ÿ"þqB £!Å?Íì9âf‡«‘,š³¾6˜†*Õ“ú¨™3c–•׸tîk?°Ly¯ÛEÑ8ôEJ¼×ƒ:hwÚ§µÍ¹Èz/þLo=®¢ ý^fűûä°¯æ¨EŒƒ¼½’ƒ\Šsl£Í{õå“s šUÍ,T—™nóå4sÅÞã9yO" ´ô¥<$X,Ìw©,wHZ)¢yX¡þ’êP5Ï5z0¶UBÇ=WP씽œ¹YßMñ‹>-ÝÖø¼­ð]ª E\+ºQÈÜEl³¿A¸`Œi² ‚Ñ@¶êOÛPo¾+H~ú°áÆ$¹eJ|ä™,Ðs|Aã|wô]Õàq×”ê“0Äé@—·¦ÌGoà_ô²¾³XDØ©f0™zŠÃG¬Bbä]'áoéh‡Üq#:©—wåÙ™´b ò1ø{,@jéhswa‚¼vB-àU XØÝwFP^_þïÔ_@\þ]Tm!Ÿú`p1a°ª tȉL¹Gx‚Q"Ç¢æ¬j:¸ ÎK,Ä]]{¯¢_’D}QfD¸•3« oc% øÖb'ðºËì!Fôþ9=I”ƹ¢† Ý­÷íqh365T7gÍùá °ÎÏî'™…qÊÙ4 ÇK铘?Ñ…Ý'p_¾ï‰‹÷Ù9ëËÀ2W ²éSZ¤&®Åë¤úÃ?,w…Ø ý´H‡Á8¦‘/¸ö+é"(Ã(Œn €`ÐÊiaT´iQ®êOæNÁêû5£[Rè>km^²@nbXg:‹Â1ì¦÷šÔÙ±Y¼pÚò±ÿ+)i}="í♈lƒi·ÛvP¨¿á$X0Ð×NŸfJÍG÷ÐSbЧ²ÿeX¢†­ D *ì÷w^ïDü…)V«/‹®~ ­V\dv´Ïͺ<(çV<k?%tš=&É¢0¾TÐ>ª±ÚSR‰ ˆ-ɼÓ÷¢"!ü(WoÑÆ¾ÿ5cg"??o³2Lº±:Q‰‡„Îß‚Š÷þÞ1hr91—C®w‹ê¥?aÒƒ3ƒúO2ïá2 %uÇÇÌ ‚1 ñwøÀ®5pÅŒ\dÖÇÀC³‡DµÍ•*ûí] S›æËUÊæÑóôÒœŸ>ŠKyÙêa(k8®nQ³ˆ·Uÿ’»]Œ® ®œÕ”îƒf|ë¦ø¿ÑbÈb(´¾µm„¸ë…¶¶éì^¡”i/Æ €éŒ­éM'æì‘¤²tf ±°Ô☠¡ê/k${·ú”Äu®±Âv m&Ìg⽞È÷Û¬‹ÇNA ÞŒkÊrµå¬Ðÿfо“5ðàôBF†Ó¦gwÓ–>¶õx >Ž…Ò¸O—%Ýê¥òé[ÃÛ7'Ì®!Zu«Ú%Í!›o¥WõhO×#m¿TXÍaëÆó 2ųYî> èÈ4æMûÚO¡ðw»¼=heyÏ5§îEÜC³¥íÖ¾Ò”¥ù5ª€ŽCwek“¤Öa'ŽóäŠeû›Ä‹¥ ›‘çÁ5SÒ² º†kê4t¸§B’‰–>#kD¯T+ø4CÛsÝÓzÛ­¬., w¼t¦À¡~QîcãkÜ\ÒóìE¯AŸ¾y^ÈÇÿ•öÎ)fÅY½à;…½ÐB?ïÑ•ÞïyÚò±”‡àeŸt/®mÓjÁÀ·,kW;æK<•*°êº‚ËÁEÃJ¿wöpSŒ 8ÝeT Ù” f>Yiòöé³éÄwôìÅÁóƒÙö½…Õã¶^E"7T‚Rô›ªULò-Š¿M0â+ód—õ-ý¦²=Óã8A²Èc yÌâ*{™™ô”„ÿ×Þê/­ënLHaïŠw Îc©aYj¶ñ[Í1Q¸ êª&ƒÕqî|ì4KÆÎfÙÖŸÑq!ö2‘Rkº¦^è Cå·öÉJäxÓÎØr™ ´ Ä|PIè­‚³Â"R™ìè±SM7sKï{ZH×ÅÀ“"%5¹¬F˜:¦ÈÎ †Ñ„OZ~9‰˜ÒÙ/Ã]âwzÖ-se*ˆÀfdq.z»?Åã7¦ÿ÷PÓQIÔ:ä '¿êž WBH2Ä“ÞÙÙt_î`dô¼ ?*zdCY'V7¤M@òŸZ¦oϧ ámEnõ—78^×屈µÇ8E ƒAáŽðŲ×΋OÜ~›Ç.ìy [*ʼn}@Š„ÒX›5!sÐWñ耫t£¡ETÕ°AƒÔ×nã•Ü5dŒTý9õ¤¥Êk9ElÁ5"ôá­Låȼ¤[4å@äêÚmŸ¶û.¯@/o Ü1ý>Pøˆ•ÀŒÛ©q¦DpoÂǧÆý±Ž5­ÉÕ³¹º"ìN ùŽï+?@Îä‡XcL,+^<²H'Lý°­29éÉc°qã Ì+m2ºq×`^ØÖ2…â¯Ü®“¿Z÷ˆj\Ÿ›]—§zžRšÖÌ²à §:jøB|ê`ããÚ:ǧ×ó=ˆŠîßéqªÑ¹DÆËC4@…Ñ¢lÝP_BÈdÅäF™Ð˜'Âæ†™Ôùì4¯s^þ¯H+b³v²VuIzöò¶ÅôLöë’L诵/UE ‚ÊtÓ=„ÈÏv\¾n÷Ð(ï½PÆ\Y/ÛLÑ?jO¬Q¼ƒe†ƒØdúXßGbÿ /Øñ*.57_¬—à«* „óÁ=Ž|)å%G<é"þ;[.ú‡Æ,Ÿ »Z¿¦µÖñÉ‚*È1ŸÙìÑS7,&‡‹ Mú°€ zÜè5åÅK…Ò´4DÇÚ ¶²óXÐ!ûñ^g2ÐŒçEÎ -! G™ /eçwT *À ÿ%x˜Qô§jÒOÍEdüfGĹþA`oÄi€¿HÁM] JÇî ®¤DÔèóòATN‘¥õSf«…Ë—éšë‹gpíâr\°†±iK„Fçüå}HûÉfÀþF%¶æ'é¿ÖÞÿ=ËørùºŒr¨ß>C–7/$gÖ‰¿ÃA©x?¶c[Ø.EiØàâ¯ÃýÚòª iÜf8¼¥Îr¾qœ·´)bˆ'±R :»|>S”w_žàÜvËú2ìeéÙ£¢W±o¦úù¢]‚Ìíĸ ÇK¹"|î!ª†Sfú¤ûlô‡JL¬‡ÄÈ3Tüó'<þP8€Öhi#>Üýä κý€žá)[üq5J*$þ®P:·öVA!Ž ÎD)A®ª\…¥þtj5d°?üA¹ÑŽž{Ñc{ <&O‰GÎI Q±Q´AUd J¢ÇP‰z ò€7fŠß±Þ"uähPØa ZÙ2°Qt>×Õ>¦‚k„ßp¢¼$U1‘î³V‘_n…x”¥r­è’0‰Röñ”°%Œ¡ߡ鯸U Zñ©0$(ë>õ…ß_W<+å‘Òðfp=t^œÔÖpêèxbû¶‰<´ifz{ÿd`Ëô£d_  Iý›Ó°âÎõbäÜåd®è§(­ŠÅÏ&È•pÂÜ%?Š3!ãÖµàŒBLÉžŠ&6÷ÖïÏô“ÓnÃû†ZÑüÈCL~?ƒz€toyšÛuú•ì©çÅI°X•‡•  ÷sùÔI¶{W{éë×àM,`tù÷I+õÂÅܤüêƒ8ßÄ>‡úrf*äZ ˜ÇÃcSñ€7-fw`¯Q)y3¢a7J#êŠì¼oç–‡‘b¯]4kÌX‹_,䌗'·ž2>D±Lˆ· ;î¬2Ýœi΄ži¬Ïwºž½BZ®@EÛÛ+Y¹Ý …¶ˆ³¨˜È¡ÃV°k¿ˆèi •­yWóìþ~TS•hƒùt×ù?ÎNˆöœNR©Ca\¦,oÛÁÁ`FÖÊœ.™ÿ r7ð¨]õ’mVØ[ÑQh„véð{ð³ÏÿÁ¥á"äÕ&g½ˆâÇ‚û¬Þ‡uç Ïš[£Fš^Ú×…†3®d1ÿWK€Ì¦š +\òË/ð%I–[·îÔóŽ·F:·sý«Y»‘PzÌÛÆY%/3 Å%qÅ‘ÌÞ"¨ÛØ,á åw ¾ ÿvŶ8“ÊdO´$UÍÙ,€r(“­œ“<*ë Ï] Ô>‚¤ß&ùÊk¿Á{ÐäÕ-[^0¦EHŠ©Ëܦ!Úå;ažÇ¶½t¶…AÍÝ>¦`§*;ꎱß–kÅÍÉE›Pb& ¹‡³T­D9YQÙs0q…]'™,ÜÏeT€~VǷV”SÊéù“g %.ÃoB<­IxÀbý'èÜßÌKæo>üZ°zÒåª FšPÆ%ìpBèo¡ò_,_ƒZßhÂÈ>1I Çyê;jû ~Ö„üyÿ}ðzü"ƒñæZHUò5³%ðm‘Ÿ]Ž·…'ðÞe!šµ«ê…ÔÐEÑmn«R’.À°’"Boe ×xÎ ÈŒLþF‚jÝvÿ;"!çPœXG·VŒš–t†1= vL×/'ñßð#‚„´Ï4o@fGôÔvuíòàµ*ÛéôÂ*.krÌ ¹¢/eÙçíkýw5“ýpéòËøµÈÔï:=ÝPZ…«ù¯Ì¿Î±/wñˆ//¢H6O1¹“¬q²42u~ÍñÛÃwŸ´*’ÇÙ‚ô @_þšZ]åÁ2€Z Ð4üð%rŒ§»¤ø­Èuî-2áSnȃ]%ÔçþÌ’e £qò:6æ™™±lßé2‹•ÌÝmãËa@Cn¸‚ì¤âe¤åk;2Kò ãî­O¤Žk /bF‰ZzO¼sü_c§ÈIüs˜¹ÊAÝÎÐ×}§ÛJ—è…cn ™ž¢˜Jœ,ðñ+¤4g^@Z{®Jíµ&bÅÆIdÃäHÐw”/ ìÊìãaˆèŽxON°»Ð+¨LÛ’ËÃ|ŽZ>(iD…w„lÐû6mºÛ ÃÛÇF¾CbÌÛêôr«hC;ë .­]°—íÕÉ.…[f|Ÿ]usR v‹uÚœÇ æ¼}Lá¡ðc¨‡ ˆAÇÔ½»Î…–SRŸ‰ŸB ky}ò³.FÅE‹¹YÑöÕ£al8žI¿c3:RÊOÆi«ÃN¤e,©hÒλ /%1m’ÜÕKFïpñFØ–=ç’€ípYDŽ*^ðJªÊq°ÛŠ“ÓáÆ€þ›ñ`dB[]»Ë5åãàWòÖöô™x‡Ú‡ÛìëÒ¨¼†aYœÊÕ¾÷†!’ fý^Þì5âǾa&¸½O̦“Ñ(ô–lÄiÿ‚ÓÃÔÙÒ©’ìÊœ$Zµ®^ïüŽÕíÈEC“¾~ÝìÔ²»§Ôö3÷:ºYÞ?Å¿Æ^š!éTž;Ó¯e"òHr¿ \K­w¡òɘØZ2¢Ó°‰+”¿âv‰- Ô¤¡ÌTa.þe8ÕV'À9´ ñØSi*…ÃX¯¥˜Ëž©FPb•IÐ[ð$€¡›cÇ[… Àaþ´U§x[Ö¾ôÁÙ²r‘ ´¿”륗a·å‰v·ÊhÇ‘š7g EµO•álºŒ‘ŠñdÔ3>Mß¶;1ÍmjÑ)H¥LÈÚ°¤2÷ñµcšÆâò"0â4ÌI61y“#î~+*“Ì&gÚ ±›RbÑbŽpŸ¯ê‘¿Kð´Kr®ð´ :a0˜Þüà·÷w6µŒé;/6³ø¼6°µgÕB´«Ë-¾ç[¡'.Ä4˃äøb©"€ôék7C7Cˆ¢óøL¨×~ñ I0Òߨöý/ÓRÏìä¹Il8Iß¿êðŸ_ÜWY½[ v‹Ú»~5„'½?ý€º—6ç_FÁÉàfX±2.6¤¤Î¥nËþ—õ†Tž±Ê&¨X,½c‘, ¿¥'ëI³†…ÿWH{! ~<‡ó.Ý6©\@'‰ð>÷p¶Ý‚#³âŒÑ“†ñ"ެûðÆB;òùÖ¼ys¢š˜ÓŸÉ€C󒨢{2|{ÌIåñÞ5ÑNq ÷Ù j> Yà`5£WtÏjè…,N¤!ar,sžÝDl¦.Qú`ý?=§+?»òTÆüyëˆcÐí&’'棫­Db³«T|f¦ÀX†Ú-1R²æ“+æ™Í£ ’4Üœ_y4ÍAK£YëwB½úÁ«Yu²oF'y³’‰?pwIa±4kĽTpñ®º"  FøàÂ7~B7®nՀͼUt/(âböç}pж䨏gÎßÒQ"™óR{>t¦ÓÙÎ3ïÖøÓK_ã0ÍvÁy–º ´;1A70ß,óODƒ÷þ$u®™Ñ †«üí{ËßP…š€úÖUGí×üç¡î}¨±ƒ®°ã|žÝB£˜u¸J"$³H²¿V äf—E}Ò}΂â lP8%ß î7ØjbŠH$;æ° Ò³GÉòÞ'÷~\Ûéè‰ïR6al Ç‘ðæ½SÊ=tÛ±Õ‰_°ÌßÂú¿éTÐ`2U ƒÔþp\á¥eý²ð˜S˜¼–ŒÔêOI…qž‰v­Ž`ú,-Äœ â/±'´ã< e#G,>)o‘NÎ*·+–Þc—üœ˜LÆÔlýŠËáÛRøÚß«4½É–ÇõŒ>í,›wjzŒ>‘E7â!’©uPðdˆŒ—:%½^ªƒóZŒÐÜ@c_9$q£WñœWCÇ?•ØEL_ÝJ'Zò“!K…{L$Yj)Ñ$ í –#*ñŠ.îè•«ž[ñ¼Z[*h”4ªüüT¦z®'Üs'¥• %U\P‚ î¯\þT¨:Œþ­ÃÏêÊìä'‰aùQúr>dˆ•‘uþH)½ÌÔ^›¾„¸oCpWŒÍnI ŒB,{®q~G°ìкrö.M^1Ö =dzt¯ûø§‚GÍ, ïó¦Mõtá–€ê:° `ž³"‘Çè°ZH@ *ñ„…é]ôaµ)sbõ")q–Õ¨H¸RgMBÅrÀÉ€]ú*Y¿yd‡Si)‹ZýgÿÑ@—TeãkÜIÚn\T:Ó' ®J‰¾Öç<åPºVDdO ‹&Ñ>XïÅÅOL-öÂq&S(ËšîŲÄ)K)Fi"K ­à÷–Áotdx´ š2hQ¥_ ÈšŒÅ@Æ“ oˆ ¿@®L(Á0Ó²ˆoúŠÍwk]¶#×cv•Ô¬g¨'zIvu,òÞŽ.0‹Xœ¶f 7;Z7]4oàmÁçŒ$!Z1ƳŒ9o Ø!O¹–%<ù? ln¢éó0k¿„·£í´²›¥›¨ã/Ö­à‘{oì¿ÉêôÐΞ Ѓ½9v[ ˆç3q>|y—Q‘ƒt5©bÿ0ù'Ú7q-þ§Ó(Ùãd¤ÔyÅ]¢q]¦ÊJÇ=†;Íõ¹x˜úÐB!†&^"íP|€9R]ü$<9ó´Ê„·ywf¿™˽HsE¢Ûvb¦7øFG¥X”år¡R$WùŒ¬Ì%2†È¢õ|gŽÃÂaôHZö¥ÿ~Ô°$gÿ¼\yírÀ:®n‚g¥Äë‹™Aõ$ÇȺÔàܺ†¤£êA;waŠÜHéÀT;_ëÙç|á¹éxì¯|ÓÊãÍ\EewÅ„Èî²yÿ[QasýMT÷Q¤tÿm˸Æë\8ºonô(èEe¬à’ì†üKS~ jø9tT#¶ä FTYlŸ ¸üt_±RX©9zXOPƒ ePaï6¹" S$1›N÷¾ à¿m¯dˆ– lQkçt6Øp¾¶!Ñòt5©zl–weK’v«ã2ª.EÖ(51^Ž8³S)Þ"Nž-Çœ¹4©sbmcÃÒð“7—^:ç.˜wwBfaXµúçå§Åè“UnþÄT¸gQàÛ8Rsõzazm^°‘œh»ì#3 ¾.çaòxAÆ`|"ògLžImÞV„þ\3Þñ6ƒ¨|®ö¢ª"¸HÕŽw†P®<;0Ø#²B£.Á‘5ðñ­Õ¤ÝÎ$œ3Ò¼#â?½èEŸ¶‘*@å×E•ktÁ4äÆˆ$‰"£ÌX]ÙO ,蔃¦ß±O–`T¨º"­I®Øî‹òŸ üT¼BÄåE]n%> Âà©už ËV<@‘ði°ó×4‚k(C4qÕ=&˜9vaÑ/5Ån¢ ypëO|y»ŠJbÂP𭃬V i"Á®‡ñók×tõÅþ­½¬Gr·màl­Æí¤Í©GmY·œ´L;¼Ð¯×–qŽâþe ÍñKÚA[ö$|ás]àÁ„=’²ø ª×÷`W­ð"KVnî¼wíÉÖtÎi!ÝO&Z¤/0æA?.§S9ÖÅåÎêÏÝ÷DØóPììKzë6ÑEÚ>e ‡¶0ä-ó¬‡kšÚ Ôæ¯›‚eçY£ÎvA°Ë}S¢±áóä–Ê…0㇯ÚÎSœ²R&ÙÉm¾j¤KbzU»½iTŠ/z­¡ï±•Ääˆu&;Uß2{Öuw,êö2±º\]îþÔí*´ƒÝžš¼(-J—ƒC}5"×þ£’_„À|S]’Ç™>nQ¦ ¿„ʼnIÀÃq ¼ãt'f¶â(äà2 û<Ó¶ð‹(¯LLwY†PhëBn*;7½Ž¹þYV[?q»Ç %<ü)»aVzLÄRpí3q\¯¯².(ÄC' fÂg #÷¤$fJ´¤uÁãû飿 ³ºç’¼f¬°×б¢$+¸ \[§.n:5£è=Tÿƒç°@wÔÜ»Hîê)œÐE`ðfNç¤yº½ïwZsò(èÔß vs~¯G&¡·€µ)Dlk‡¿ uëäÁ+$Ñšïʗ͹M¯}h½õÛÔûˆ¯Ñ²ÀæV‡´±iÒÚ7~µ\gáB¬iu\åŽS@‹ó 0ÏŒVÃ:ÍÖ”ÄV¼/Ê1¥“Жº Í)¤JB›®=V¶³#ŸŽ;ìƒò¦ÏÔÜÈqid¥ž5¤CÛA!ßvn>©ôÀ*Û ö8UåˆÃF²SrE篩ež}×C@dп–Çœ®÷›w!²ÏѤ«E É+”5Å!DkíîàÂ$Dš€wŽ;¦´Žo,uÉ=Ïðã3ì#nMª…œYß³ªÉ ­¿šŸX­–ªFÎ ª+®—ÁÐÛÚl §Ûen„¥G¼*ÞÈM 2{ö}‹3÷Á^ÕV7JíÓ+o § Å媧’wZs½SGàSNÚ%Ñ £9‰ªÖÑ'çu!ˆ5.à;ÿâjZaøùe’²sÅe·A±‘œw>ÛVƒù“Á“hgY@jmËÚsñLLÛKO sô õÒRjD)ì P8{êI\w~Ýö”§>Á‘ÈZÄá|¢žXd / ‘K1sS‹: RdÜ—Å!<,3‰ó÷Åbßÿ{]Ì$ìâi\èEp¬-a¤M Ð…Ù)Šð¤Ô¹ë¼VÉ [\Þ|Už¿¸íÔa5ðÓ,äÂý©õâFiWð|ƒ5¬K×W .çrÎÍwíí[™TWÇRô¨ÿY¾¸kž'éXwÕÙj™ÿïe]“g,å7«ÒHo2›Ä$Dî¥ËÛ¦ÁÕ¬‡êŪªîv´+X `yB<ÊZ#’- ]‡ò_6:[˜8͵D¬Ü‚m»(¹jAmÇïC‘}5–ÍéyÝž°¨#·Ïŵ‹9]‡mu ”“pnÉ5±{S 9U¢ÁªÏÐ +.®¢ ,FÒÞPkkíäÜL½EEldÆáÀÒ8·~E¯>óyWíÚLAèsV)â˜aðÚtúÅÓITšÐ‘i†1¯Âœ«ž‘|Î#-Ë /T—@%ŽiÔ+¬|çužà œd;5åíótóŽ˜Mâ÷æòjòkD81£aE]Íf¹…*?k×ôËŠwò!“0Ÿ‹âcC‡ò,c™õ”*îs íéØïÖÜæL¹û!wY{t¢:àYS\AòÃ_x)üÛçLßKuÞÖÒŽ®ª?xÔÒ«šÝ¥*y„j4áâ+̰ý<‡q¸;ÑB"pS3k®Ù”øé{ŽÍùq¶t“+Œ­Ù-1š’}ÅiÇM­›E8ý3° íÌošð_,ë™VÔÄh­hæ8ažØ²“‚’1³ö¹Å‘{Hæ9õl“8%V Ú‚Z"-Ž’v›™|³’» †Ê&jv2îì‘‹¾p®å—ïÈ®}6 JUíñ°»&,qÜÇ0':¡Àïêu"zÐÍ ò¥ZË'q¤â;8ÆÔ}›½¨xK¼Ÿ60é$˜ª2 fmèÍÝ%Èøz(8(óu>~-ÌÚ·¦ìJAçÏb¼™,ºéOXøêò WWâúªò·æa)ÒeÃS!…Œ¤JÿÎÀßw'¦Ø ­3vF!Wù­Û¹ˆªÐjÐo[ŠtÍŸ?23cßVp\]d]F*¡µYüñþ|CÃF˜='C8Œ ÖNbþ~»Rd{\ yÙÄð‡Š©²)úΛÔÓ/pŠô«öÿx­jcìÛR¢©Zx.xḧ‰lýa9`ðè†xª Ò@àlÝ|¾Ä?Š]†S™©ËÐ>~w˜Dé4Á}Î ‹*îL²~9•û'•h/v±« `uÔ!#FPkŒ§M¤Z$ü³}²ûO»džÆÉØI^I˜B2øŠ e¥qÑëÎ[!<ö”ë!BLN+å5FôÝj°áè|nž¢@ÂÃ9ÅÓ“¡q‡Eðšy›|˜¤þÙRD¶ÖÕº÷ªEþÊÊÿUýä4åeÀ°i¹¤!»&/d{7ÎâÏèöêFåªu àœØ€,ÍÄà&p$kG®_¾Aˆ—'<8ó²ö¯Oþ@Íý×E0¼æÙ-NÑ’Þ»>¾yŠÃ,¿?à1ýú:†\KÕ¢žø¦ÃXã)’ãí´$H"íýò-ÿ>Ÿ½#×?ƒ;OnY¬1 ¬ÎhÞäĶÝh¸xýzŸÔE¾¢ü puŽ„KQ˜°]¤è.];…,ÎØ™ÃQöß K$Ê‹<”Ü’›½í‚gWØNï‚øƒÝþûtG€ò‘¥W¹™ ™Û•ú•ï>bËåõ)ä åžÕp«§z˜ö‡…‚(N‹r÷ÌHïp³GýHPªK>ëêö}a—ÇmQá5òÿ­…3êp‰±ÔâsA¸UySÌèI”óU½u¡Bi§œÜ:º@2N3W£gKÈH”íßö,ýó¾C6Äx_7S²‰R‡Å¾m(<ðÐeô¦]´ˆKûãæÀ²¤ª2µÏô> ”S1r4ôõé³òÜ èPºùvÙ>PëÛ‰œîv¥NþPÅòzv+ËXÿl!õ‹ÐâBj?ïˆë?J‰ÈmëUC©`3c-éS.4adu5"HÓì„p8œƒÀZQ©3lT¥¸—àô…:hè±%×AG-–¼uäµ3)¯þÜ4¼Êbú>A‰¡Þ ¬CÚ[‰Èú².>ÿrý§£E’U“¦L»zŠ(8Š•ŠóöÎJf¡êékeÁtûõß™×m9BBøX¯Ù…„`b“xB³W}^Õ@Gâ)Ãä^”AÇP8`&´ÛpðÐÀùiS÷kžŠ©gc¾ êC]ñrÅû ÐOpñ?Úô²UkbIñÌåЉ¿œ‡î!ø²Ò²ˆ|ï‹0?^ [Õ#N‹µÐ•Áú9"ÇDÆâ.}û¤ËàTü—êÆ=É. dŒÜGàfnp’=' ¯»²a ^•GŠù|ž_Úc¡üK*ù“X}ÙªuÐOðE6+âóÈ…Wó§"5Ô˜À`i9 æ—@ì 'Du*x“–BÊè-wÚzv{üX'˜vYâ`€Ié{««I Mú¥,ãK¨ZCáJdómÇ›Ö)3aÄÕBs{/²rÝ…0“ƒªßog„-Òóþð@!oJždÃh$%|n¼ïßxE¾2޹#kmí`Êð­aÊRJ'Oð—J«­H>~Ð÷peš?:†&$'œ=Ñ(e9îì”B†ü¨Êa#2Y´¨.î*¨4^–3=.Z .§ìµ\NÚue¹ug •÷z'RqAI*Ûý¥´úÍ\NE¶¿CN ”î”dƒåØñ»næD‰.ÃøŠÄÆ3é4é¥cNôú}†xÜHóT²Åoáápu¯ßs—#9¿Áþ¾ftQDöåŸÂ„(O˜ >%V§MuZ9êFlÛ`g ŽÛŒZ ¹+ßöïiÆŒišƒÎÂþLHŠ”ÓYï.QyŽ’-f‘ä‘-u­óãK¢¤þ0âéUO•b¡÷æó•»”­Ð &ʲ¶•;p„w‰0¤:Ü÷ÃH5ì˜NÂÚšÍ%²|·‹·ÛŠŠŠj8.»C?œPéíž½rßóê©ØÎ§”™QlØÍÓ4>¡h7›Ô™I›¬ë½ÙkÞ(›gÏaº¹n¶‰§Úp@n÷wnã®ê s£Èá"à§!+WUåÅñQ’ZŸ>“¤Æã«c†‡Éû‘«éc÷M2g«7‹&:„êDÏ}Gˆ­˜ïo·cIÒ­§J0zÜŸÛŸô´_Þ’ˆŒ‹wÝ ß†¿®õ³TÅÍ"WG2§ØÆ5÷fr 9…ÎÚ}ËàiqCš|ÓŽ‡:‚ªKsãD꥕Žr³ÆÆ¹ü¹×9D©ÇŒÜýIÛè-oR–‹aÙ}¤ö.B˜¬çJ/®´¹¶þ¼ŒšÂVjë‰õ#ç>ç’M1–f!ÀÌ”8gÑ÷™Ž£Âbê¬í:'z1=Ä{Ù¸æz™pF{•ìÖ.}ðĢŌWÛÙöX ŸÏ~ig|ýj¹Í}ñJ„Ä) V…€Aì˜-9R+59#„7¦ìzh®›f¡ñ†npĸ˜þZ‚éË*&LMT™#Ùr™-U®#&®ÛÜ® 4;šEèá”,¼Ë:÷¡‹?á‘ɹBs_wÚùbí»ôBYìM–kñ+¶j];–ÕbÖZÐà‚KP§‡Åžõ;7K2D(#ÁW—7¼SÄ»´MÓƒv`Jw¸:íºeF7:ÔØžâC6+%üÎ&Ý\È„jaÀÏ1ñŽÌºùïî‹¥úbÂ¥P0âæ›ÐDjOåLÖ,;‘á*ªq;1Á ´hZá"‚·êJil‘ç5R3¥ÙߟYu\ēԥo«Ò;LúzÓ┲áp„ÒB»Nª®Ø®Ûi²Sx¾+K>óÚëÉGÝþ³¥ãås´jɵTçV¯Z|à1[úƆ&&Éý™•NŸ@x…éÊÎ7•´<j9b 59šžæUǽ^G’Ð_uÌöydý·u×±:ÅEØ×ÚlŽ4ѵèf©¸Æò=’_9µ& }NÍkƃÔõý—X\ˆ|õÓKyÀEp$Ô°=¼úFÝß\Yª¸NÈ©Ä9Bœg$ØKßh¨ÿ÷(%Ágy‹·ÚP)D„R½ŒÛ´z„ËúkR^ü‡ T¥p×Õ˜Dûbü"w`€ìVÒÅxæ"þU1#êç¯tpF³sC 6‹/KÔFëó¯[ŸA߬ú`Ô›ß×ïÙš™]¥ßpˆù;ï™­t»ÔØc80{,NЗO0c;ü‰ð¡÷G0©€öœÎørj#w-[Ò‰ 2a* mØÏÿÊ—a'î f°_å¾9`ë " ð1kÑZ‚ªóh†aZr´L\ ¶Jd—˜Uª9œ­qV-ªW6ƒŒ‰Tω—Ò`V’Ö32ûígh™ «4(³ÙŠä ö:72EŠ},]üÌ‘ …¨”âúš/UÀã’å[k(´]íÁ—Éx²ü„&ÿvÆ«iÕ¼IvˆÔ‡¼äÒG#®=ÊâyÈ:Ñ SñùÂh”ß$…6ñ ¢GÛJÍŽÞa–xrhÍÞ?fÆå_¯!ÿx›÷ŽM]@J$±Ä‰òBæ&|²Va\JÄ\bŠùŒò•·ÃìuÓçøq“^­¾£½q9|8ÃÏÏ7ñÎ…5’й_-:Wá¬íhp8öB¿% ïP…’áÜk͈ícÌý4¿â)`çouÿsÿ“ms-”‘êWEÛ·5÷ÿzvߊ[}ÿÇÞ=Qjðæš‘ t£ü7¡®ÎtÎHºƒÒÔ JЭów¿D8¯{u%Õ/t~éÚ=ŒÞDQ.Fò7ýÞŠ‹ò:Ø`ê%ya·´‰wV.àþÀ´u!Øû«%š"g:CÉkĶó¥É×sC!5\Fh:Q½!$öq¢Ç’Ó¥‹7‰¨§ú‘Õ"W•b¢û3^4œ,HÄõQ´P"üo\UÁ°w‡—¥‰0óã1X1pí;3imºétµÃ°b·Ú&ÛmZVQD•`õ÷O*£ªæøæ*JW ºló ~©qÞ)R·>·¡ÕÞ••3¶šX˜O…d¯“€Ç'£Æü*FÏ+q·ÂW-vE½º?×îǬ}ÍÖñ8 }fnmEH’“VL“–qÁýp“óRÙNø4‡ÆEpBÒv±¥¤Ì®ÊM®žñEµÿW8Ý0ÿ FMx*yvɵÉ↹õ&®ûPcÀ–úI€Tš +ÿºÚ½ÿïwüÎãг£X“ßêýãÅÝ}:»8)ýeÌí_|÷ýEôá^Ëÿðkľ‚‚ÉoÛP–RM3ï1³Ëæe€²ÏöÑßìS¿ÝaêvL†HØ÷Ý”]õ(tÙ-â³xnÉyÜúôÊáýœë‰aç§|%pê`2 @]7žôùÀ÷WX8 ±¤½a¥/EöÌ»â{zéãn8Ô^M¸ð±Œ(rs^ãÖ(³`ÑÒÌ] 1•!íúxPT·ÇîYo±c7ÿ Ü?ð+d{±¬B!ˆV†oc0¤·ÞtÅ&Ï_Ôƒß$W‡)Iš(Ã)m£ÇìÛ›É06EËN¦XZNELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿcurv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿchrm£×T{LÍ™š&f\textno copyright, use freely vips-8.2.2/test/images/CMU-1-Small-Region.svs0000664000175000017500000731301312530402247015470 00000000000000II*.xÿØÿÀððÿÚ ?Ù ‰ü݈eÀ ·µhB’$ÊìŠN@ ÷­hÕÖP̪Oñv"¬÷¿¥iÄ UÌç¥-QÚŠ(¢Š(¢Š(¢Š(¢Š(¥¢–’Š(¢Š(¤¢“4dQKEÐsÀ¤Ýž­æ––ŠZ(¢ŠZ(¤¤Í£4œšL“E(  (¥¢Š(¥¢ŠJ(¥¢–’ŠJäŒûÐÊ`€~´zÑÅvíE-QKE”QEQERÑE%´QIE´´RRRQÔÑKEQE%QEQE&äu¤ÅQE-QKEQE¢––Š)(¢Š(¥¢ŠJ)(¢Š(¥¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¥¢ŠJ(¢–Š)(¢ŠJJ(¥¢ƒÅã¶héEŠZ(¢Š(¢Š(¢ŠZZ))(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢––ŠJJJ(¥¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢–Š)(¤¢Š(¢ŠZ)i(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZZ(¤¢’ŠA@¢–ŠZ(¤¢ŠZ(¤¢Š(¢–Š))(RÑERÑEQIIEQøQERÑE´´RRQEQEQERQE-QERÑE%-RRÔw£½---””QE´QIKE”QE!>ÔíA R (¥¢ŒÑš(¢Š(¢–Š(¢Š(¢’Œ(£š)h¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢–’ŠJZ;ÑKEQE´QIE%RÑE%QŠ1E£QŠ1E-QEQKE”QEQE-RQMʆÆá‘Û4}H× æ‘]\¤R Ðæ–––«OwoK$ˆÙ¶ƒØŽI;° œdÔrI]°¹ÆjD‘$Ï–êOQƒœŠUuqòŸ× Ó•ƒŒ‚=°zÔƒ8÷§ö§ Z(¢Š(¥¢ŠJ)(¢@¢–––ŠJ(¢Š(¤¤¢Š(RÒÒÑIIEQERÑE´QIE%RÒÑE%”´RÑT_lr™¦ `±¬e¹’\Üí<`·CùÖjÌÑ;†3ÜÔ†Gˆm»KrsÍKÆ ³árA£Ö¥IL#síûõa\2«ÃôÍhÇ"ÈŠè~Véš¶¬CCU ]=8@QXqíTuÅ?`ÂöqŸÊ©êËþƒ€3†~›¡É s>÷eƒÑqUô‹”UH¤c½úcøzÔZ\Ñ…»’ÏÈ ë]<Áús[ËÖ´¿OzZ(¢Š(¥¢’’Š)( RŠ---””RÒÑIIEQKE”RQE---RQERQE´QEQE”RÒÑE%c™N© “òàz×*n$Ö1æapZÀóΨ7ËŽ¸¨-ÞkUxr¹È'œTÚR³¼‘nÚ#qž>µ.žX™S;V>ryéWm/¬çˆÃç|ÌsÛéZÖWrGäC0f9ùIçÞ¯ÚÝZMŠ)AÎ~¾õA¯aÓZùþgQ›œã§ëY×nI`óLŠÑç$çè?:§u2¯™ ”¹eêyÉíYPA!»ì ‚OLu¬èÖEºNq'>•B%qv±>NÎ}:×eF… Xòñ…Ç ®²'Y"VP0G®–6 +ŒÚ¤§ÒÑEQE%Šj;QKERÑEQEQKE%%´QIERÑEQIEQE-´”QERÑEQIE%•¦«­»Äì°Ê’¤Ö¹í/NÅ,rÈ!‘[î“XÚeƒ,’|ðSÖnÚ!r+ÊàîÀÇ©÷1.ÒKxæ4¼±#%ò¥•œG.édêqŠç¡söçà÷¬m8ˆoC`î÷5`D7`•'héZ05¸º>B—*kKp»¹gÚã¦=+Q]'¹2>ªäñêx­ûxbÚdo¹ à($‘õ«6öñ‡-q!px ?‘5n3X¾î ëøÕøãXÑQFï[jíZ@8p§µ>––Š(¢Š) Š(¢@¢–Š(¢Š)h¢’Š)ih¤¢ŠZ(¢’Š(¢ŠZ(¢Š(¢’’ŠZZ(¢Š)(¢–Š)+Ÿ\ÈY‡ß<‡_äk“¶½˜àükž‚êA“‚[ûÕ›um<— *ÂçÕ±Á¦M õÍÁ»;g ¸* íîçî'=Hàâ«ÚǾP²â2çw#­:ÑKy¯pž[œ|½sÅ>Æ'#(n§,翵Mn|¤er '%ñVÕ¼{ñ# ÂŽÕ¯¦ZŸ–âN8ùúÖ¥”ýkðOÝb´ºÕÊ(¤¢Š(¢ŠJ(¢’Š)h¥¢Š(¥¢ŠJJ(£¥(¥¢Š(¥¢ŠJ)ih¤¤¢–Š))h¢’ŠZ(¢–ŠJJ)ih¢’²žîÞÖ Æí8aª¿{ë\´“[B0%3 ýÕÏÔÖ“ÛÀ>W2ޏÇZË’ú]B5.þPŠAò¯Lb–ÛV•î#i[ljqå¨ÀãM‹R’yäm¨÷GjÉ>IYˆg9늫q=Äò4ŽÛcÓŠ©$·9bw“߯zêôKWq½Êß§µléjùiq:’OÜCüÍmi¶X&NóÑOðÖžýB¶?.=;V‡_–––’’’Š(¢Š(¢ŠŠ(¢Š(¢ŽôQEw¢Š(¢@é@¥¥¥¢Š(¢Š))(¢–ŠZ(¤¤¢–Š)(¢–Š(¥¢’’° D¨#2)Šâ8é\¡Æp8ô[ì™$†6¿r1“Jb Þ[(=ÈëHÐJª_Ë(žF3V,ã”Kt wŽH÷©l’F»·R>󎾙«Hæò#ø« Ï'½vG­t§ð¢’’Š)h¢’Š(¢Š)(¢–Š(¢Š(¢Š(¤¢Š(¢–Š)£­&h¥Í-´QE--QE”RRÑE%QEQEQEQMXãLíEëÅF–ðGF¹îSV(×îÆ£=x¨o7`VaÏ =ꆵ ²,~LLûs¢ªjq<ª¾ZÀè*inRGˆ¢®IÜ0j¦—ero¢žhJ$y?7$`T³›´žHÊ*äóÇZ¾k|õ­SÖ’’’Š(¥¢Š(¥¢ƒIH)––Š)h¢’Š(¥¤¢’Š( ôâƒÓŠN)p=úÓUp3ÞΖKE¢–Š(¢–Š)(¢–’ŠJ1ÏZ@9Îh"Š\QEÑERÒÑIIE-´g4´sE%%%RÑEQERu4ƒ“GZ)h¥¢Š)h¢ŠZ(¢ŠJJ)ih¤¤¤úÑŠ(Å¢Š1E-´QIIEg4š)h¢’Š(¢Š( Z)h¥¤¤nŸÝ¤4QÜ æŠ)h¢Š(¢Š(¢ŠJ;QEQÚŠ(¢Š(¢Š(¥¢Š)h¢ŠZ(¤¢Š(¢Š)(¢–Š(¢Š(¤¤4DÎGÔÉ#ŠAœS©Ô´QE%w¥¥¢Š(¢ŠZ)(¢ŠJ(¢ŠZZ)(¢ŠJNôu¢Š1E-RQEQEQE´QE´QE´”QE”QEQEQERc(¢Š(¢Š(¢–––Š)(¢–R AKEQEQIx£ ñFhþT”uëE-´QE-RQIEQEQE%RæŠZ(¢–Š(¥¢’’Š(¢––Š)))(3GJ(¢Š(¢Š)ih¢ŠZ(¤¤Í!´`g4¸Íf–Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢Š(¢ŠZ(¤¢ŠZZ))(¥¢ŠJ(¢ŠJCÍš)GJ;RÑEQES]•9¨î.ÝC8?…2Y– øTFá aÐ$ã*¬šœ"ÜKÞKm N:T}dKn8 x©#“Ìt©÷éV-nEÌ{‚2zäqùÔðÌ&MÁY}J}MO¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¥¥¢’’Š)h¢’Š)h¢’Š(¢–Š)(¢Š)¤ŽÙ'Ú£•Âð-íÚ˜íПéJ:S×îzx ZZ(¢Š?ZBp ÆqÚœ}*¬¬]IlðzV%Üíq»±Ú!Onk6âF–'v'†àTiÉ ØÕX†÷;PDÉv&®¨@ÒF¡QG +eT*©iÔ´QERÑE%QIE´QIE´QAéE-RQEQEQEQE-RQEQEQEQEk7Wyb¶_%ö;·ÞöÅdëó=½º˜]•åc’>•›­JðB¾Q!œœŸéPXëQ*yW‡_â=ê¾—®…‹Ê»Ë0û¬:°¨ì5tòvÜŸ˜wõ­T¸†Xĉ*”õÍkEk*åfQìÇ£Õ¼ƒ+*óëRc=:zƒV  PsRŽFA{P84£­-S¸ܹ=öÎÞ¦'’48ù¶æ±îT‰YãŒÐ¼K•}Î=pjm¶6ñ#›|àapz”­¬ŽMÒÆCKoq1¸:«) 85.›©Ï=È·•‚ Þ84û ég—Ê‘G;…[ïZÕ~Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Œ\RëE%%´RRQKEQEQE-RRÑKIE%QEu¢ªjÆâÛjÿ¬C½}ÏB*†µh×–'gúÈþu÷ªzµ©¹´ÂðÉózæ."Fi¥cµ€ÁÖ¹E@ÌÙÊ‘Ó>ÕÍùxó 8«6É¢‚<ƒÒ”“·¡= )fU 2«iû?ånþ÷ËŸ¥K ÝŨ)Ýyéž*X¯.-¶l•ÀÏBx­h¯Sì+q9 žû_Jé­õþÌ[»Ÿãœq¸×Câý.f2¼Šn ÓLüÛ»þ“¦öpTlRÜ–ïY𹺑HTžsô¥ÃG¾9$—$|¸ž”\&C8`9¤yr™ È bŸ c;8HÁϸÀ©tÆŽ;¿:Gœ¨-ÜÔºyXç21}jðeqƒé]ç~†µ@ ­÷ ŠR)‚QE´QERg'€äâÖ‚p2Hõ¡ˆU,Ä($žÔÄ(òj´·‘Tàu9Àüë2ïY´U¥©hª¥°Ê(g©óªrê‘Æ1;|çšÏmmv±ºŽÃyªm«¦Uqè7Ö®’¶è¢Š(¢Š)h¢’ŠZ(¤¢Š)h¢’Š(¢Š)(úQL™Â “ƒëéUoäTƒ®ô"¡»`±rpǽsú”(É+ã—l†Ò¹k¨Àbzäžs\íÜ@ã¾ìõ¨íÝC±ãª,ˆ÷séPˆ‹wQÞ­Cao$¾r:—="ñŸZÑÓ£‡Éó ‰Ü}ØÜ÷­+xÌ~nQØôF?ÅPº,·[§˜´ªJàqùS/‹ÝKæLàl8£Lºâ]óIÐã`UûH®®T³¿•ü±¨•ìkFËNžXwÈþXþ£Ÿ­_µ³šH÷ÈÂ<ôÇ_cVV?!ÛÍýâ„àž¬{Ôíg §™,ß½@ò[½Köx­Ä¯(Þ»Aç¹ïúÕYäŽU)ämŒvÍa]Í ìBBR?îî¬{™b•ÎÈÙ=3L2ʘ 7ÀZT»¸j¤¤Àáwp¸ ýÕbÓ©3’Òòúµk[jænrÒ¯ÝÞ­8u i—÷ƒ õ«VÓ<ÊÅ”/û#­\Óo%¼ó ˆ‰ŽŠ:Õ‹+‡¸W.¡HèZŸ¾ ^éV1IOšLŠ3ESJ–¼F=)¸bNŠ@2N ›wv’?ËÊ&Fïïz×5«ê_h›ÊŒþê3Œÿx÷¬-SPLcCû´àãÖ°®5<ÿ1 ùN1žµŒÒ±lƒÀ5÷ ¸è*ÎŽ’ÜO%åÃ?ÅÜúUÍ./2Cs6<•ìÝýªæ•;™±åöºší+©¢Š(¢Š(¢Š(¢––Š)(¤¢Š)h¢’Š(¢Š*½â,‘²8Èj£©(dnãéUoT:2Mcjv“\‹3ã½aÝ'𮼖öã‘y• äÝ«. ÉI çþ½Tµº.׌>Öïüª­­Ð·M’&ò _Ó%Idå¾cœÍ[¶ksx ±·$OÒ­Ù¼-qóüÜv­&Ž6ËÛ*®[¬:z·xb–tšä+«º}êÔÂ&™$‰FÆ 0=½2èͦÄfŒ½až@ÿÒ®»O§À_|n§r*Ä-Œ;‰VäóÈËmM¯ƒJÒG8ªj3^¬Ÿ&´(Îj©¾{´vÛƒ€9§‚Ò¢‡+ÈëY¸-÷ˆR;wªÉËaO?Z,Â4-æÀåãéž­ô­=2Å&ViàeÛÈ'½hØZ£&éb`W‘‘Ö‹´>jJ­œ»ýÕö¦ê ²éÂŽ=2í ܆É<AšdW+=Ñ ”uËõ¥•£wY#G&7næei7ÆÞ[Ôf®ÀÀ¨dßÓ lýMY´¸y3³Ì<”6@õ5=¼Ìù*\ò>PÝ=jà<òk`3‚;Ö€<ÈúÑÖŠ*õÏÌÖÐä13v±5SKH;ðÏŸÒ²µMCo™mÞþ&¬}RC ¨Ž1÷ºã¨ÏK‘ÆI=k `ËÆIîj¯Ød’ÒÑ#V̬wp0qS'kk]Šß½'qÇš™¬H-Tþóï*ßÛa³S$QŒ)Þ§½Â[êt#Ö¦k„¶_,Á8WM]tÔRÑE%QE´QERQEQE-RQEÉXÆ„ªîÁ¨o%’wŘÀ¶£¹‘∺&âö¨Y¼ï”“pZ¤.EøòòÐÎ!AûÃÚ«‰…ØÙ“«ÎÎEE=±A½†$Üs“Þ«êw–±±V8,ç-PÞYÿx§ Ô‚zš§umgæîUec‚Àt$óýk>å,Ì£!ã-·¾yþµFxí »H*é'Ù"E«‚6½‹TY+H3.äÁ#REh çÌ8ÁǯZg—yqJñHÉ9`qǧo`c…‘ È’òÛ†H5v+gŽDÚèüäõ‘ÒTÇv?x"Ǹªw!–á’|:…O#hïUçRet˜ã`T¶¶ÚF±Dáñžzj_#É"µpÀ÷úÔ‰†Šzýk7Z‚XÄs$‡wLÍcê6òC¶BÇq5•¨Ã,81Ýžµ6}{sѱŽQ|c#ëWtJúkiWt2, Þ Õ½/P»šÖ]Þ[N>aÚ¯y¦L±ˆ9Fàã¯éîdº”¹‡kcå ËèiòÌóHY£ÁåôªÆ1qcTfÜ$ãUi122 \ç9½(úÔ7 ´-‡*<úU-a]¬Ø«”ïbªêJæÕ¶¹\}â*꫱;y ;Ö“p̼†k'ÍgÆãó/ÝaÔÔy²Û#ÊÛÑŽHêzÖšÏ=´O<‹,JØd'&¯Ú‰eŠ'‘ĉœc½6ð ÿw—¸ëUµdl,7…b?Uuè8`€© Q"7+ ÎOf«6-&‰%PÑ\.CÏéVm[L‘ºæ9FU¿Úî*ÃÂ<²ªsOjÕ–7ò™``­ÙJ¿"7–Dlu¡DF €9ëÇZÍK³ÂívêàûÕ(Ô½Ã$«µ·Z²²ýÐõ¬ mÚ1Œt­ )P1ŒT3ÙCp›$SŽÄUk2Úá6ºŸl¯5Œ¡W^=RKh,£’;Pw>rÄñXå!¶áµS‚yr~ñ¬à±[ÄÑ[®·,ˆÕ{©šÞá% æ]¸øZ‰o´2Œ“Ò£Q.A%È䞀SÕã3y à‘–`;šaQö‡Œ·#©íL83ºdü§’*ͨŽ[fqó7FÝÅji© ¶eÁóðÊÝV´,ÄR[rOÌ:ŠšgŽÃìÉ8q­Kx"Š”Æ À<R]Š1&À[ Ïj†à–·†uÀHl?óëTµ42éö÷î²$ Óž‡üúÕ]J6{HfQÂ}à)ŒC©Êî°¬²r¸ÛœÖvwÆiO0•ÜÅ}ô«Nê%ŠSš±Îg$Æ…O.7?rÄvïVÝœ¯˜¿ *ËÌü0÷¤‘E è/ 7"’l† ÈÝÒ’Pù†BôÏJÔ®†µè¢Š(¢Š(¢–Š(¢ŠJ(¢Š(¢Š)h£§4•^ýöZ°îÿ(ZÏ×eò´ò¹æC³ëTõy<»2;¹ÅT‰ÐØqÀ¬H"b›ÈÕ› Gfî{R¬Â÷²¬¿J’Úå­nWgF]iÐ\g:U‡Ò¬C+·÷ph[[ –ó_9+Wa€L|ÆÉ%zTáA]¬ Ò´„JÉåº8«A]GËŒS†1èJ# x‘—qS‘òÔSAæ´lN6{u¦I÷‰ÆßjQÀ©}…?´QQ4q) Up>èÇz¯,PG"»"å>蚉Ö(Ý\¨à|£^hË”¨,>îGCßQQ×Ϲٴ±ãŽEWTuYeÆ ž g¤‚7-Ñ™ ·éXîþT“'qdNk1ÜDe-ÌÉ¥·”NH\G:„oùiRX?š¢HdNŠxnRZH²6)6J å[½XÊõê?úÕ”`ÚÅ✿þªÏhJ’Ñô<â¦$ËLê1R€X+“ºŒT˜'i1¨ `Ò;'–Ir8è*Ëɵ ¹ÜÔîñ$óÛÔÔ,K(RN;ƒUË3"†É’ BI!C‚r}«VºjÚ¢–Š(¢Š(¢’–ŠZJ(¢ŠJ)3š2;QKE óˆ~^¬z ©¨_¥˜ ÖVUk˵¶ù:¹WyŸzÌJîû£û¦±šsu¿Î''îü&³Ú_=_Íç§µ1K@ä;GÌwÁæ[§ÍmÆàØìiøÊ6̧J’kÀ6õëÇ~ÔÛFKAC\àý{S,Ù'½½üëEhÅt°Â! ¥mÆ‚1ŠZ’KEQE%RÑE4¯9ÍFð+È“îJkF¥÷j+¨üÈÈ.ʽx¨o"ܧ.ê½8¨§Œ0Ã3íÒ«>óf¢` â2/V÷¦»7sãu&”¸órÇ W¬À>[vãšÕ®–¶h¢Š(¢Š(¢–Š)(¢Š)¯Ž2@¦I´}â£Ó4ŒŒ>´Ò)bGÖ’FHcgf¯N{Ó\¬Q—b=Í67å¹ÅUµ¸ó$g9ÛPÛÊ‹pj¤ä½Ã¾xôïXÚ„ž}ô²îùCcð¬»ÇónÉãvÒ›"ùhØláƒ1Æ1Ö™7îã!8mÝ1íÖ’ÝÄv± 6iÖ²ùÈA“lŠ6{þ55œÉq £ÊÈáv ìWüj[IâWvY0\TR#[ÊX7û•NHÞÞ|«sž>µWË6÷ µ²IàV¶O­v™ëŽk¤?þº(¤¢Š)(¢––Š)(¢Š)®¹R1ž:S&O2\dp)²&ø™q“Ž*¤Ð£! ¤tjþ‡÷dH¬„ö=+.îc¤úôªo$±®Õ »…ôª<‘Ÿu¸QXþR6¡îS½˜•w2H<¦ž´;¯,ŒØSÉ4Ù¼1ã“Ö™ªÌí.:ƒÒ”etcÿ×J8 cïÒ´Ò/³[ÄÎY‰ U¦€ÚÁ É–Þ3€y«O¶HËœîÀ4ŽÂ_»Ž¥v“¸ðj»Éæê;ýÓɨ™·à g¡æ¦šQrc(ëõ«·±¡£EÊŽêÅÚ”b¼éXZ¥Ñßå#eGÞÅaÞLwlSÀëXדÁð+­®êºê(¢Š(¢Š(¥¥¢’’Š>QÔFGsŠª›^Vg!×'ŸJÌ·I{.÷óS,9íŽj”­<¥›zÇ>˜4Ù1$x$( sU®®ÂŒ¶ÔW'ü?J‚y„¡K6Xæ¢këx[b†éÃcŠ„ê‘@¯k’Fc¥DÚ”q†$Œf˜FÜv‘Éüjuʒǧ>õTH„¯^œÓl·—¼É(qÍ3Έو¦j?<6‰ã‘RÃoæ,F=¥É8êsÒ¯[Ø…âl*ŽIËz ½—kÆJ…:š‘ai®D9'éSXYÉ=är¸ùb9$úŽGó©m-šK¤™‡Ë¯­^5¾kW­””QEQEQEQEQPȬAî*Ý´’1À,>µZxYÉÆêzV|í¹ «e•qPÛ³Ç8úVlèB–#8ÏãŠÅk–‘$f·->G*>,ËD½Xô¨RydŽF6›¢Aœž”¢XÄ|ËÈ ¬}8¥€£ÀûÀ=©axÚ’!œÇJ¹u4Û ·„s’sj˜o“m T|¤óŠ™üÉ‘”1ç4º]…å¨ifƒ0óúTÖÖ2Á÷Ô1Þ¬>ðïRYØËk .w®ã¹M_•JC$a‰L‡^r™EQEQEQERQE-QEQEQEQE-QEQE%%RÒÑEQE-RQE-RQE-QE%%Rž• íòìRC7 œTWlDsì3Q\·î˜  ¦ÃËHKãžÕ^ÒÜ4'~á»ð¨à„y_6~jIa ÿëLHî,™ŠF²¡ç#­1RkbØA"žã­æ1Ô“íŒÓƦ‹þ²97zšp½UûѾ}§”vÉ1ëŠ_íH@Ï•7ýò?ƃ}ÿ–r~Bœ“ >ê8÷+RÁt³ýؤÔ­KâQò£¨§Ôÿ¥IKE”QKE”QKEQEQIE´QEQEQERÑKIE´QEQEQEQE”QKIE%QׯJZ(¥'áES7–ÞaÏœàzQIóÃ0úŽUŠ4Üå¹à`Õ{¸,í 3Ì€ã–êj¤¶µ¥”ß­G+'pwóYðÞÆòf+w{0“'òª]¤”‰v!¹©LŒ;1ZbI“k²—L}áÔUàÒ®©eõjU9àþ5mX2†õ«äÈúÒÒÑIEQE-QE-RQEQKE”QEQEQKEQE%-QE”RÑEQE-RQIKE”QEQL ‡Ç4Àø©ü)»¾}§ð¦\*´` AÈö¨u’k×pìj;èÒkY׌p}ë3  ¬›æ8>¨?­aéí¼»†éqÁÁéY6&+yU2\ô«ÿm·]ÌÛÔô9ªºÅšŽ|Å>›sZ?ÚVîàzcä¼· 7ŸCÅI§fÊH›ð<r_[Ï™ø0¤—PµŒs&H8ÂóM›X²‰Aówq…ê)²jV±óîç íRÇÆ(Ç«wúUW¼hJ1VØÇ©«*Ë"†ƒZQJ“D$Œ†SÒ®£¬ˆNå5Bþ9÷F@ª1XšÕ»ÅpLM…a¸(“ªA"LZ&a tªè³üŒß¼ÚÙ+’KqTâ·™‚I‚ì§æ@ =*íæ;\ Ì ùEWmA-}¢ gå=ª¸¹û,Ÿ¿„‘ÏÊxª¢çì¬Dð±ã€j;Èóå +6àGcéQA2bϵ÷gŽÞ”ÈeSËí|çñ«±¤f0áâõ$°æ¥ÇÈ2äŽç­Jx]Û‡NTž´–æe”œà éVtImfa.âýÚ±¥ß­¼Œ²ä«tµ ž+”ó"lއŒ]%µÌWPù°¶åÎ:`ŠÛ†hç|GpöŠ–¥§ÒQE-QE-RQEQEQE--””QE´QIEQEQE-RQEQE'Nh'h'Óš3€O¥VùYʪí,rN+8+]MÓ=ºÕ@¾|½0£õ¤º Tˆl ëQë*ßfäù±QêŠLQ’¿*¶ IØÔ(\OÒb¶QRX0HqÔñM•ÚÀÀa³ŸnMr*êèV0§wnM$®¢ª@`Sö¨šimÙÖ8 Ù-Ú«ÝjYK,vÐ ¡òÌ~•÷Ïj̱D «Z¤‘âšÓÌ#ÁMØn{TÆâÞæÐËt†Ù ©ÞXf·2L±ä†©I *˜âEÈÎO³gXe•E¼hˆA< £2Ç$¸…UT äð*¹ŠÅ¤uE‰¦åWΫDàKÿ,Øò;öè›ì×Ê\Ý1éùS¢?g¼Ý á8ãò­u9EmÏŒà×AäS|ªÁŸÇzÚK„§-ŽôýŠH~  ¥='!¤ý)P)Éൠ+î`cË—p0¡H¤–Ë;eÏ8äJeÅ„ªŠAuZlö2©«1ÕjÅ´$ •Wd?/¨©ínÂA@̼)'¥Mm;4_p3ƒ€I¦OÁ-½W÷¨ç‚vIÏjŽh%Ágê :Ú,…bæ6ê¼qRZC°‚Ò4N>æ-¼;%Ú7lTìÎ]CœN\ }+Iä•C±ÎX3Å\RÏ"î8r9`:Õ¤È^XŸsW¡$&2Iõ5j<ìÆâO½:¤§QEQEQEQEQEQIE´QEQEQEQEPzQAéUg¹[u#2«ugmAqs¨ 4E5ÄvÀ_h5NãSI<¿!Ž‘ŠÅÕu(®$‹ÈlªƒÉ¬½Fþ9¤O)óÇqR[KæGó Í·°ªð¹™[ŒàTp±‘rX‰˜Ä²¼ˆ#' Zv‚DŠ)ä’1`E_€:$R<‹‚8¤’ÞI˜¾OZYí\ÈÎ<³Ê…n´KlÒ!a·?(«Ü0-ä )8ëž¹¬»¡¾sl˜S€§sžk>à gò` )˨4D8S\ÚyqÂQpqÖ¥¸·Ú!Ú¤:Ó–V*1É9¦ÆòA¸¤€z®i#f‹£ãý“S#áðô=síVín@FIˆ±<çÚ¬Á?ÈË)¼æ¡y³y*c9Æç>õ›<ÃÍf€ùìsŸÂ³å” Iˆl籩Œóz·ü$ÕƒqåªoSÿæ§ûdÆ5PàñØdС˜üíÓ¶Î*-Ìí™Ó36\Õig?n·c‘ðN}³V,®7jƼ«ç¿LóRÚNZú(‡*AÖÇëŠèqŒæ¶¥QKEQE&(Ç4QE´QEQƒéKƒéKƒQO2Â2FæôVúú;EÁä=Uk«´¶Áwþèªo¬Cѱ>‹Éª?Ûñƒläú+f«f01ä±o@sRC¨‰¶æÞDÝØñOM`³ ö¬3Óææ¤MD± #>õeeGû½}«‘^C/Ý%[Ñ…YŽâ7CR•c¶EHzQE}zPH' ¥''µBò8É]«ŽyôªovL ˆ½N}*³N|ΡTw5•<ßjw,Ø À*ŽëëXÚ×Ú¥”©à«Žõ—y?Úðq’Úša2€KqéURÝXnf9Ïʸ¨#¶A,KzTóÜEhž=ˆ„GqV~Ó ¥áةԎõkíC -Åê ‹èeCBFNäõ¨o®Ë¯#ݸ Õk˽È" „Î@©mZ@žtS|½1Û?OëImqqnÂD”à éKóÀC¬™†œ·1‹‚óCûÀçîý*ÕÜMçOîf;ˆgbÒæ&º2:ÎO=³R\\<‰ÈPžÕQ®[9*öÅZ¼ÉRÇ<ô^ÔØFÐe‘‹ÊÄ^›Fj“2 R®Aci@¨¨·!Îç §î*ëÐúUhå*ÊIÏ8ǵ@’m+“žØ¦3X¯Ìi’Œ±`¡IàS&]ÎHP) oœ…` pr94BŒ˜`dàÒB¬"bHëÒ¦R cä= þub$GAÜä” Õ…PË´ÏŽ:Uh 7:€,¡E¿$ŽíÛô©4Ëo´jÝBùx¯Fj,!ó¯|Ò¸òxãø«\à]àÚ¶OJŠ)D à 㢊ê9XÇʸ= Gèäò°ìj\zÔÕ'ÖƒÀÍRfŒÑšZ(£š\RàÕ ­APà"IË`ô‘©jᡳ;äy‡ðÖmö¥±Z;o™‡ÞaÚ¨5Ìçù·<œô¬Fžëw˜d““ËdÖYšãvó#€}êFå`tvn„ž¥ûLîv—ÜOv9âƒs;»>¬z K;´Ýs)B¬rW<°íWÅ‚Ÿrá¹*O5m,ÞĤ¯<íÏ'Þ‘õiüñÜòw;zUYo†ÐÄuÁÅA%ã± ƒÇCм·’F#icfWaËø©íï9Éd-ƒ¸Ôð]•7¦UŽ2kRIÞìs‘[÷1[GæJÁÖµçš+tß#m\ñMŠâ ³å¾â½©°ÞÛ\ò¦W®ÐA¤Šæ Á1ÈjµýĆ66ÌuÈäÖv­|ÞK¤o³Ûš£©]°…ÕØäÖM³yI ,Œ¬HågÉv-¸ãéYQHdûÄçJ°U„Š›°}¿SëSG´Œ¨l¶Ïð5,hÍr©·y'Ú§Uš&,~FÛÓÒ¥¸Y-ç<•e⤜I¬A*zcÒ¥–Ø\Û,r0o491W×Móí^E-*†ägç5péâh3çxÜr*­ÎŸQlÀ8ô5NòÉ`Ú‡k0=G¥Vº³DÚ¬ny§ÇäÛB+2¨$ÍBDf2¸'oPi˜O(€3·µ:6‡i.^=¼F}êK8£}ÛË®¦~”ûh¢må·(ǧz•HÂ20(>é#'™ Œ/™¹à‘Å<;„6qÓÞ£a&öm¿9ïŽ=ª«‡ÞÅ—æ'“Ú«0}Äã“LË‚b^”èC´¡B†ÏÓáÜdÆ3š±°”ÛÔ¿PhMnÙŒ®Yºí8’ýÙ'°õ¨×æšRŠáÁ+6Óš-Øà†Ï~”Æ|ƒ÷î G+`§kÿ{5žîÉ'ÈpÝ:Õ7fYNÃӭ\ÓNm‹dm,y­Ý wØK1.H­m+w؃9“Ò¬¤‘ɬ­íš¿±MŽ­Ž£5i9sµƒc¨¬™È†åÌ\#ñÆ;¬]Q9‹Û³‡^]ó¬»õÊ^}Ë÷Ö­ÙêÊ6ÈàžÍëìjm7XGUÓíqÑCSXêI(òç`t'£UïáõôÅk«+.å!‡¨9­È`j;t£Þ–˜ePqµÛýÑš¥6¯i†2ÎǹUÈRMFÚ9 bGRqT¯ÉmÑ%Á G(3Ò¨kÉ»#½bçïF3ÇåU57tr©tä‘ó ¬àÐ+4Ê¥¸/e#ÈŒðöÆçYñ³Æßëã‘ÅTçdƒæufþLhîv6첓ü&£e¸1Ù#=V©½»¬èÅX’ÃP*±zÕT¼áÜ‘Wà†ây oÆ:׎Õ8Ù·~^Õi#•‰|’ô©‚˜]䔌± sëK¸î;ÏæiÊH9^æ‰.#¸Sä0 G¡¦É0|ùtSd˜?1œ¨ì*VOn™UÓiRFxÇj±=À¹·ØZ@뎣#by–æ 38uÇ^˜¤+h2nU9Á´Õ÷Ÿ>@nâ´–"ˆ»TÔü¿Þ©–ÕУ•àŽµ2Û²29"÷ýÁݾRÆÎ}*ñŒÍ²#Çßsô«[K£»F>ûUfG3ƲFGÌI-ÞhÃF@žàÖw–í:B0yô5§emöXÊd°<Œ×Oel-b(A9­ÛX<ˆ¶rsŠ¥.‰â¸uêBö¬Ë ‡’X'pO*P›Iegx&e$ü Ž(å‚BfICÁn ÕhãšÞfy–I$#±ž*(ÖX¤c*³; DaIeòÕþè(y¤x¡˜"lcÓ ŒÒ<1̤:ùmØíëJÖ§1»líÞ«»±ÝÈÊ;`Õ}×VO…ft©—R“n‡~Õn=~åGïw= Y]faÃÆ­î5 Oxp°Ê«vò>aYlógß/òïY’´¥–Üž)LŒAnw1ÉÜñV$’IefoõŽÄœz“V™ÞI ?}›'¦¢œiTA^rrh*ѳîs“C)Rá€ÛŒRKjÿ¹Kl´™Éô§{VqvùiO9ìM%³9Ž82_9&§[…Á“Ëõ§*ê!@¾¾”åÓ¥ÃHT.}+7TÔ9 ­ŸðÒc–ª7÷…\ÛÚýßâ|rƨß^‘'Ù퀣6*HáùUd!p½I¨v•Ú¥sëžôлZ5eûÝMPÓŸÉÕT:åZB¥¡¤Óʦ¥º¬ûJŸCQélRDq•sŒWGp<¢RÚŸNkßÀaÒ!ˆóõµ®¡hädŒb2x&š33È~}ä`ئÂÚ?5È»o”Ø‚1#}âÇŠl¬–£#®OjI[ÏS‚àrXö¥ùÊQy ÉcÚ¢S´–bNÎëUØ6àÍŽÖ `Å€nOAVmdŒ¯˜ÄmEÈÏjÓÒÌ@¼²mù8õ{O1ò¹^™íëCN®4<£r§…VšS%ËIF9ïP<¥æ2 ûÍ‘Žõ+3„¶£Ñ{Õ¹d+lC€ŽAÞ¬Êåa`Ø Ýõ¦ÄèÕדýÚ…$UqÎà2M0úCAPÐî™uö¡”4À%@¤Ä¢©"Aœûf„Xä‹aC†ç#Ò•Bº+à ԩnÖ2Üd¦9¦Û[ g dçè)°@Bcž=ª †]¬ ʾp~”Öñ #q8ÏáMefqΠ⬪³AµÛhÆG5zÅwÛ…‘ÀÏ@zÕ»U-Y>´Û¯5¢„2zÁ¨u™áKu Ç<¨ïP^™^4€Ç<­5eKvO<ãoð6x¨­¤kY“ÍRB‘ò¶x¦ÛÊ`•|ÕÎ?„ö­U`ʬ1‚8ÅtªC¨aцklÇlKKÓ®/éLtVå‡Ì:ŽHÑ›,>nÔÇU-’9¤ ­òŸ›´ÕòÜí$6;A±¸<Ó¶+GOkàNqÆ)%†9—ç_aPµ¤G$*çéTdÑä¡C쪾˜™% ÿÀ…DÐgåpчõRK’®ÃÙ‡OÊ«½šò’&Өކ©À¥¥ ÿ bI©ØÂd»C.P7ÌØªÖP–¹ /Ê>ñÛ ’îâb8ÆrG^y¡î¡’âeÇîÓu£íQ<ócPŒf´4â³B.rFG 5µ¤¢Én.\¾q@kRÁC@²á~qÁ-ùÄœTš»´ qÅ;Qb-È×)xïÄÄŠø˜ ×!pÅ$%TSÖ¹‹–1͘Ðg<žµ-­Ü·%‘“’3‘Æé@‘ç9ÛÈÆ1J²IpÊëÃ)*ÞŸ¦Ký®n.XS¼gøièÚ{¶¨&œíXþqŸâ5¡¤iïý¤÷(­KɤX“–ÆN+CY™<ÅŠ.Xrثڌ«æ„Ž Slhg ÷ÅRvà• ÅG'Ò«;dlwô¦XòÔ¨=O­2R «H¨^>~ôbHÙïH¨ØI g=é—ÂKQ¾0¥?ˆ1íÐVõ²Åh]Td·ÌIÅ[»‡É·ÜªOÍ“ŒsV¢`‹ªn9ù‚úŠ©o.éSå.ރ׵G î‘Fܰb§ò[Û‡@½Ei èd˜…$tSÒ­ý”²—|Ž€ÔOò‚ ®ëÝk.l‚Ñ=£U >óD@ëÁ¤Gh%)1r©ÖÒ›[ŒL@ìS­e6ó›ãŸzY†QÞ†WŽn¸n籌2I·$1<žÕËÝÊsÒžH…~ñܧž;q"09ÁÎ º0YycŸåPÄífC’Aèj8ØÆ¯¡ûR*!÷ä“RF²:$jgœÓÕ 皱XíH~‘šÑýݦžÀ.3ŸZ¸Lvö_–©«¼pϽ« ÑæXm|†VƒŽ tZ%âCd-ÝY½]•p±Ù¤L¤2iÚÀg·Ëp¤Ž)5Ðín¬Ü)<-&­¹¢VºO°£9r ýãÍsê2Jõôâ±nÊ^8­ë[5‹ n1ZövJãß¶+NÖÍPîÀÁÆ*Ĉ¯ .ð¹çÚ´®!Y-åMª$EÈvâ1$2Š3øU(Ù8@¼ž ¬hß’ `AjÍG2`äŒRG'.7 ‘×°’d+¸HÏ©°ç~ÂB‚ß7­I°)YP ÁcÔúU—Œ@EÁF?&OSéSÖ-€Ê¹ù}è‹ä´)÷d}ÅIéžMX²t¢ r›·nƦ¶Œ³º¨;€=VÔ"ûfÔ•JKÜÅ~é¾´ýfd0˜ó¶S×ÝQÕãÙ»lƒ†½X’)ÈPÇ )8éëúÕ TºU]ĶñÇ5£ªÜ%ð8«År¸®…—÷eG\v­†S´¨ëŠ« o8« ŒqŠÂ»…’ä‰{ÖTñ°™·Ž{S[˜NõýinDfÝK(üè¸aRÊ)s[®ÀÌBŸjS²iÊÊ£*p§<㸧:I%’º¸t?ިÆùY0ÀFj˜¸Øàî *¨“pÚG'­2òámlÞFÉV`ûóK4¢ÚÕÛœ8‘K4«»èàu¢ ѾP@ ©ÍJ¾Y8Îh†Pá¸æ­*+Ç´ü€ŽëEaŠH™œ•ÊŽÕtF$QIä³&BŽ>”ØîH%½)"F_¸rÄqŠdhûvÊI'¡éLEifu˜¶; b#²ÈO©Dj ƒþÉäÔæÞ2 Gû-É©L(T(/Ðõ¥XÊ¿ ÓM6(š9” Ú;‘Á¤D)( »Gó«#8µ°:¥húÑE%-QEQEbÛJ.JHÜ€ÙZæ-›ÏJô$ŠÅüÙA/ýk"ê)'Ö&Œ¬i~ŸCY÷Ë>«"6|Òã“Ç>µ›$RMªÈ¸ýápIÆ+mQƒË±ÇA­XÃÂøuØÃ:äŽõª™Žáµ‡8õÅY–E¹·Êw'¥^»¹ŠöÐFFÐÝsü5jâXî` Ð1'Ö¢µµ†£\¸Ü~½ª•½¬Iç4k–Œg'ëÚªCmk# Ë êiñHì¡‹¯$€;ÔÖ²±‰_Ì\“Ó½Oo#•·©$ô5d²à6pG_zÐ’TÙædŸz´î¡|ÌŒíæ¨CµŽâ ¿ãXV¬Bì>_\{Ö]±g#ƒHˆŸj–nÀt¨ÉArñ¿OP*<§Ú6íÈÀ¨Ø6ø‘—1£dCßô¨•˜º«‚ȸ\uý*8ݼÄ GÍ]¸Ÿ Ìl6¯SÏ»,ñ¬I{k áÔuçŠÖšTE[˜0Wî¸î*&g•ÂüªÏ~ÿáYn$¹fà¨<œóÏÿª³ØIpYÎ0:ÔðÇû wg'µ]´´Ù'$öíVííÂB’‡“×Ò¦iv(,sž€UË«ã !²xüjÍÅו{ôȪÞnå }ây Åf e˜0_õŽyßT²L¬ ÝwS6·¶*íæIž¤ðI§4+¹W`òmÊzR˜„VøbÀùpjÔIº1»ÉÈ«ö¨Ï¦Ç¸¨oæjä ZÉ3€9¨d@Ò…˜VuÒ£\(…©Ü$mrDxàsŠÆñ†$F; ¶G¡ÅgjÇFªÇic{ÌÖ[lQ…$‚Ç­.‹sòmbIZnŸ0ÇÌ "§L¥9<å[jí†~•¼Š²ik´aÎpmXŸxä UX¦+‘"¼†íYpܼ2”½µgCpcb³ã4ô†ÑÛr;e§<½XHû–f ÈçëVâKIp”’:M[…_‹7rkVv»‰cýìÖ„qƒvr:š”qS€T˜RÒÑERQEQKEËø|³M ,påöæ¸ý –¹#j‚µÍèlÌ͸òª1[V2ˆc0Á|rk]\“ɈHF É­D+12Ð; nÅ+êN¨.‚76Ö*)wd8"£gUÉO•˜üÙU%—¶|»ºäqUd“nv\ŠXnb…FàK ýÒ;œÔ–º„p&$Œ±‡y§ÛßG[ ¸àÒÚ`ÊÑÅÊɱU#2I,(2 nçò©´Âd2"Œ çµX••"Ë‘Ø÷«·ŒÍÌ¡î*ÕÉ làãpíYÒmH]·m9QïX‹È¥e.pصV±¹Y$a'ß#5 J²3çïÖ¡ŽE¾~ñjêȦFp¬àÇ×µOåJ¶FF «¯ÈTñ‘Œš±¦±kvCŒ® ÉéÔÖÆPÂñ"í–<ŸþµhéûL Š»r;ž‘Spp£$ã9ôØm÷G"*ƒ»¶(Ž,£ª¨É©a„G£«VVFpF7sSZÛy(êxšI¢&ÈÆz÷¨5(ˆùHêOzŽö4Ž2Ç÷=ê›,Aä“2)àŽI¬ï:#Þ*‘‘ ©-ûÌsÒšÌJM½‰=* ÌŽ‰˜žœÑ]€’OlÕÝŽ(œÖ½ÊìT:ŠÑ™6[`tESm¦FUŒz†¬o#`àçpëYMÍÂòEQñ²ŠQÔ6X~*-\$'Ÿâõ_[]öÉ Ï½fh¹7xÎüjˆÝ1¢©i`´Œ3Ú·"¸wùí ïŠÖ‚åðlíš×†áˆ8ÛÛ4¯q¯·Ëg$rðËïNk‹y¤möîàŽ@|2ŸQJ×JíæDÎpÜŠ–˜¹òŸr¯ñ{H휘Y™vàý(ŽÝ·“%sÖ¯E˜=Et_ñì™ê:ÖÅ¿ú•ÏQO©êJ(¢Š(¥¢Š(¢Š(¬”¶DùíãÚÄþðv"¹±Æ‚HT+gçÏzÆ$K¾%Ûýïz–$¼zRÙå•ÍŒô%¯Ì¤óLÔ’¤¿Þƒß%Ú—L¿ß¯z}–L·ÞMAÆ…I@dfÇ+ОœÕ[)V+ÄŠuVÎFpOJ¯g*¥ÚÅ( ¯Ð‘Þ­Ém!Lú¨æ´î4Å|íŠ1ŽFуWæ²V¬qB£¡µ1Àì3æ¾sÚ£ÓŒV¥£Hˆr2þ´Ë/. ȉóG<¢w2a•chÅT¿›í³Èà2¤CŒU{©MÌ®üªÇÅfjr”¶Úœo`3ô—vì±°S÷Ú³/¢mooΨ饅Úàå…Ebî@^µ›—œy®€´ÞO@›{Šè"ƒÏ¼™vacn:ñ[‘Fe¸œlÂÇò‘ëÅ%¸ž œ8áÛ‚{zDµž)„H6–9Ï¢8%Ž]ÈÀFÄç=ªò˜ÚB¡Ã÷Ô•«h¸ØêßCÞ¯FUÇR*¡½{¥Ê#ûàóוc꺋I*Åo)GÌAÆMf__4’@D@àãŒÒŒòlRÀžMVŠÙï Ìä÷¨’»æ$À&’%å¶$SÐŽ)–p &uÞQס>ÔÛX»Å\~µfΧHç§VÆ›b!ˆÏ3îf^8û¢´ìí|¨šIs°àûT)xL¯ `¬O«]jq;<¯=áå²rzÔ€C)RP*”›wïR1Ü ¬ûwîÚy8¨îàYíåyYzT’À²Á!w §ÍËo&pAí\î™­Ùë…&²,cc9 ²4ؘLØbµDj­æ*üßÂjþÅPH\zМcžµmó„J>mûp:‘QˆÄ“¨å±ÅFˆuQÜâ¶mV%T]»zŒs]5½¼qı¤avŸZ݆4HÕUq·µXíV”qŒ › ¤=¨4½©i8t¢–ŠZ(¦±99Æ*'‘–@œiŒå\0ijZ}aê‰q,(¶Ï…>:n®WQI]Q!osïVòÊþZÄØQÎ),íå+½ÁSžƒ¥-„&Bg1óÛÖe ´…Æ­î™drçvß•˜Ƭ³Î¯&ã½G‡LvúTäÌ †9 T伎l†•p~„š «B(˜äy‹ƒô9ªqø˜Ãtßk}ˆOºö`§æ8ç­tE‚òj©F;Óî•;ª‹FËxÒÆ~B‡yôª¬…gw^©ÝU#+#³³0Sóc=kÝã–ydv!~ðêsYð4o,ŽüÛ€ÏZÈ×~üe@&³õA™³5nX0*¶›f%sÉ 1׊nš¬×W©jM*62©^íšél£h%š)Ždr7÷‡ø×[kCç$œÈç ÿ{Šé`ŒÅæ#œ¹9Ï÷ªeu2Ê´‘ÑGZUhv²H>†œ­dÿ*«%•©v9dsמµuaؤŽžéY·G¹Š3†'¥4$Ñ,`p‘ž*¬±Lª°û¤Š‚H¥ÀVǶáSijÛÈÉL}×+Ö®iÒMi0a#´óV¬¤– 2UHù¶Ôjů -Ž} C¸I¨1ÏŒ~µ 6ûÒc/‚½\•ÒÜÛpzÝMl]]EfQTä w­9î#·eBW$tÍe]ß2Ü*<¶çp+úù¦œ¯Y=@éYW$ÅOú³ßû'iÔJÆ\u¦Ù©™Kä¬`÷ïKj¦D.I J·1EOšLgWg(‘dùLçVedE?>Xôã¥f¸òò±C¸·÷x&©ÆÆ&eH•÷˜ª¨Æ2Ê‘ÜzU™ å[${Ž*is´e9ò©eÏ—Êóüª¼4šŒBP1ÁM2ÁCêDÝ7wöæ™d7ß"ïg­oŸc]Gù¨¿Q÷cÇÌÝÑñ¨˜9lC~*&122mtî*2$l¶Ý¯ÛÓ4Õ¸™®yäUíµ+¡7—4e—± PÛÞÜ™6Ë#8oœ“ÄÌQy'Ž+$JŒJ+Ž}«=eF$)'•2}Ib`¨ °÷éI%ðF ‹óSd½ ÁTr*ŵÃO([µ5½Ì³d#ëSÁ;Ê6® zŠàù¤nà§µn¶ó'ÁSA…`”†áò ŸJÖS˜Á<ñ],gt([œ¯ç[KóF¤òqÒªÞÈcÛÒ³5‹…ŽÜƸg~ôŸ©Ì-pYúû Í`R=¬˜Ô V(Bª7¦QŠÎ ´ Ê}p*)í^æÙܪ¼©cD–Í5³É tÍ6X ¶åËm¦j-1B]@ƒ… Ôw4í ?Ó"ÀÈSÒ£®.“~µÑ:)B’nµÔO/ÿÕ[Òãa žj²þíLJŽ6ƒžqYûü°bQ½›¹íUwm07ÜÔ‘ ,}©É ¡>büÞ)ɯÞ0¨üà ­‘»>œŠª.E¼ò²U?ˆ\N ‘Ôâ@}³Hžì‘¯=KtÅU†6º•ÄIÐõ<PBpÇËc¹àTbÚT|÷]­ÉǵLÚkÂU®$@­Î3Í<Ø´L¦iTçŠ#Š5e,ÆWS•'<Ô+1ÁüÇ^™ïQªE– ºAОh¦W&@œŸ—<Ó`³i&ù±óæ’ÞÑ™Èldž(y2…<2Ž‹RÜÐñJ¨=µ#ÒŒÍ ÊÌqõ¤g@9 }hÜ^*nJd*±=FG«ÜÝô$qPÏpÊ0œÄô¬ &)p×|¤q\µŒn¨Ó„ÇZÀ±’&™þéõªóÚþð•;·ž0*±Pò¼îªûÈvòM]°†H”ùƒò¢®ZFñ‘»†ê*å´m³»9¦ê.cÜî?0>•³$ö0ÊÄ9;ƒVœ‹”[’x4«v` ê=ÏZ’;é-"¸Eã€ÙëN[§· ʾ€úÒJáå'<(,F? ¡u!¸æ¬k¸ñÒªÎÞl ä"äûV>¯qq$íB>òŽMgjJ ùgGaYú„³ yG GjÈfYßnyæ¨nðÌÛIõ¬áç¹ÚÅŠ“]6…,2y y‹Ã)ÿ&º[,P<’}þ„÷Etº,;vi>ÿñdV€;Ð… í<ZOºU*‡éWH.SÀ¨ãF_3taHo½œîÿ …b §äÚËß®iŠ›AÊí+ïœÔŒCà/^†’êD™Qó“:È ÉëPJŠIUÈöÅeMl  è*„°nbGÒ›n¯*„äœäRج±¹Š=ÀçvqKh²FLk‘ƒœÓ¤–E™0Bú­>öâuLÁ[o­-ÌÒ¤ªdÀî)®èT> äôÅVr¦/3k Ÿ»Ž*Ç”$ƒž•,2ÁÞe'²žÕwO–Ñv—œo†üjÕ¤–Ê2üã aD²‘Q~ä­S‰§  ÎV‰æóeØ€Ž¢™µPïhØ·n¦«àDw4L[9¨€ÞY'éI.ÆÕJžø’²È Š¥NyÀ¤”‡_0)Sô¨ZPª ±ùˆ¨‘œ¨ÂàŽçÒ£ åAÚ껀K\ >~´+Ü9ƒbš§$ÎØ$6+RьУ…@+ ³Q$+!E_íl[€ñ+íQïŠ&2aw½ž‚s;D>î®if‘}Шªr¡URTˆÜòIùÿZ³š9.–Q²3÷ry'ü*™¤*ò ¨z`òM]¹!\°ÏLô§i“:Nbgb½'N°‘Ć6bG¦jÅkÖ…E,Éä O<Ôs0rئJÀ''Yîã@I%× sYoxöîwêOz£%ËDÜå”úÔ@£—f|0jäñTe•%’I7ã•rx5RgW26ì8”Û¬AmöxÇ,B¨ñQêRáÑŽ[ Q…¼c$ã¥@¿)ÜÃæa‘íÚ«Á–w?ÞaùTVñy?{ïÖœ›™“©=XŒ3:Œ&¬Æ¸ 3žjå©áÕIܧ•5§`ØŽ@3½O̵vч–ØûÊyZ•™èƒ‘œTòN‘ÄZD GLóŠ•æTŒ–PHãÖ¡Ž&0ÈW`F=¿ýyªPÀë§Né€]HÇû&ª¤Lº|…x,§ò5^Ùcš#‹rÊO_ÿUQ± ,M ö”þ•RÌ,°˜Üd©Ü¿K ¼jK4{Èè*ÄGh¼Ò>èÍXŠ5Œî(‡LÔѺJ^A+ãk)éZv×"YŒ&9Ã/oj½ Þc11”|áéN(ÑÂÍ UÇ$7 ÿ…X8D/*w9ÏøSÎK##“ÅR‚ùKþýÆ$9VLVqºQ+‰_;ÏQÒ©‹”VF7ñv­×åÜ#±®Æ«°·ÈWÕM[@g*Tw¤ã"‘Š##2–äñÒÁ=O¥$vħst44‰ \“éMûç-ÀÍT•¼÷Ý!öç^B$$ÈÃ=†i®æ!†úUw#Œ)\åj'“É8­@ð´­æ,ƒièª*'´iŸÍß…EFÖ¦Fó7gwðNKxÑD—‚A Ô±ÚF‘ùäáH8|Ô‹qÇæœÁs@šáIòÉìzÔ)qr¼¢#^€õ¨ViÓã_ïRù¨ù ÁA==)ßiGB„…RAǧ­)¹VB€28¦M4* —b Æ@¦É5»a~nxÎ)X\„ÁÁã5^xJ³G¸2‘“‘øRÅž0wÈÈ¢8ÂÓ4Í3Qûö…@dƒÁ­=*í]ßrzô«š}Ð4pÑûÖÂâHÁaŒŽ‚¯I̸qÒ®²¬‹†ÙaY1Ô0ýi·âXð¼2Ž1Þ›<"T8á±ÅV·.äe$`ÖDPÌ÷XN{õŸr<çnz¶»Ïƒ[y¾X®×óšÑ~Ϝø4É"’ {)dUaµ¹ú C §óª­¥ƒ•ç?tUI´Å‘N%e=j lUǰ5Jk{Øv‘¹ðÂ+2ãI»C”Dœg·³çÓ®üfúWÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢ŠZ(¢Š)(¢Š(¢’Š)h¢Š)h¢’Š(¢Š)(¢–Š(¢–’ŠJZ(¢ŠZ)h¢Š(¢Š(¤¢’Š)ih¢Š(¢Š)(¤¥¢–Š))(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢––ŠJJ(¢Š(¢ŠZ(¢Š)(¥¥¥¤¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢Š(¢Š(¢ŠZ))(¢–Š)(¢Š(¢Š(¢ŠZ(¤¤¢ŠZ(¢Š(¢ŠJ(¥¢–Š)(¢Š(¥¢Š(¢Š(¢ŠZ(¢’Š(¢ŠZ(¢Š(¢ŠJ(¢Š)h¤¢Š)(¢Š(¢Š)h¢’’Š)h¢Š(¢Š)(¢–Š(¢ŠJ(¥¥¢’’ŠZ(¢Š(¢Š)ih¢Š)(¢–’Š)h¢Š(¢Š(¢Š(¢Š)(¢–Š))(¢–Š(¢ŠJ)h¢’Š(¥¢ŠJJ(¥¢–Š)(¢Š(¢Š(¢ŠZJ))h¢Š)h¢Š)h¢Š(¢Š)(¢–Š(¢ŠJ(¥¢Š(¢Š(¢’ŠJ(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¥¢ŠJJ(¥¢ŠJ)h¢’Š)ih¤¢Š(¢Š)h¢’–ŠZ(¢Š(¢Š)(¢–ŠJ(¥¤¢ŠZ)(¢–’ŠJ)(¥¥¢’Š(¢Š(¢Š(¢Š(¢Š(¢–’ŠJZ(¢Š)(¢–Š(¢Š(¢Š)h¢Š)i(¢–Š)(¢Š(¥¢Š(¤¢ŠZ(¢Š))(¥¥¢’’Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢–Š)(¥¢ŠJ(¢ŠJ(¥¢Š(¢Š(¢ŠZ)h¢’Š)h¢ŠJ(¥¢’Š)i(¢–Š(¢’’Š)h¢’Š(¢Š(¢Š(¢’Š)h¢Š(¢Š?(¢Š(¢Š(¢–Š)(¢Š)h¢’–Š)(¥¢Š)h¢Š(¤¢’Š)ih¤¤¤¢–––’Š(¢ŠZ))(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¤¤¢–Š(¢Š(¢ŠZZ)(¢ŠJ(¥¢–’ŠJZ(¢Š)(¢ŠJZZZ(¢Š(¤¤¢Š)(¥¥¢’Š(¢ŠZ(¤¤¢Š(¢–Š);QEQKEQEQE´QERQE-RQKKE”RRÑKIIE--QIE´QEQIE%QEQEQEQE%RÑEQEQE-QE”QEQE´QIEQKKE”RRÑERÑE%%´´QIE%QE´´QIEQIE%RÑEQEQEQEQEQEQEQEQE-RQE”QKKEQE%­´´RQEQERÑE”QERÑE%”QEQEQEQEQEQERQEQKEQEQE´QEQE”RÒÑE%RÑIIE´RÒQIE´´RRQERÒÒQE-%%QIE´QEQE”QE-RQERÑKE”QERÒQIKE”QKEQE´´QERQE-QEQIIE--QEQIERQEQEQEQE-RQEQEQEQEQEQEQEQKE”QKEQEQIøÑE-´”RRÑKIEQE-”QKIE%QEQERQE-QE-QIE%QKEQE%RÑE%RÑEQEQERÑERRqô¢–Š))iii(¢–Š)(¢–’ŠJZ)h¢’’Š(¢Š(¢Š(¢’Š)h¢Š(¤¢Š(¢Š(¥¢Š(¢Š(¢Š(¢–’ŠJZ(¢Š(¢–Š(¢Š(¢Š)i(¢Š(¢Š)h¤¤¢–Š(¥¦««Œ©wìEEñ\G¾' ?QøS#•%MÑÊ})jJu-RQE-QE”QKEQE%RÑE%RÑEQIE´QE-RRÑE%´QIKEQKIE%-QE-%”´RÑEQIERÓ¤yUšY•äc¦Ñô¬'îžG˜<‡åÚ@+7ELBÎÒvê:b®âµúV‰¢Š)(¢Š(¢Š)h¢Š(¢ŠZ(¤¢Š(¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¢ŠZ(¢Š(¢ŠJ(¢ŠZ(¢–ŠJ(¥¤¢’Š(¥¢ŠJž ó²¥Héí\„±4SüŽc‘{Ž‡Ò¹·FŠl£q×ëf/1êF uvÒ‰­ã”îý{WEù‘+Žã­IRS©(¢–Š(¢ŠJ(¢Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š)(¢–Š(¢Š)h¢’–Š)(¢–Š(¢–’ŠJ(¢Š(¥¢ŠJ(¢Š(ª“[Œ6îwX•©XðÍ·pÏP:Vmõ¡Æà9þö*½½ÏÙä œ©ûÀJ«§jÍü¹hXþ_J†ÊóìÍå¾LdþU|0š0Ñ>z]:Êã`T÷®¤2†Ciã§\šu/Ö–Š(¢Š(¢’Š)h¢Š(¤¢Š(¢–Š(¢Š(¢’Š)h¢Š(¢Š(¥¢Š)h¤¤¢ŠZ(¤¢–Š)(¢–Š(¥£½%%QAéF3ÅŸ{ý®;Ôçs1YwÚnùUáˆ`õ#ŠÏº² (dƒ×©å®^)Šüf M«“”ÇQŒŠd Á³ÇcQ¦§"ü¦/4çªéRG¬¸`†1þôáO]L†Úag>«S F0JÊŽ™ì5*ëPneš7Œöæ¤]N̲LU˜¥ŽUÌnÛ¡z âwC olò? µ‘Ê»£`ÃÚ¤©)ôQIIE´QIE´QIE´QIEQEQKEQERÑE%´QIEQEQE-QE-%”QE”QHÿtÓdÿVi¯Ò©Êv…ùIô¬‰ÉîPPžr?Îjƒ8ŠL2ü¤÷M,iÃoU^i×÷‘ÅlLNC™µ—)±10F#¨Ÿ$۰ÊyË+šF?,¤±ç$Ö#4¬F$É=ÍX‚ˆ¯€Êz?­hØD+G6d=pµ¥f›d—çïO–ú{rH˜¡î"®\j7–ØgF*{ñV'¾¸ƒã%O¦*u‡SÄmƒè:U9u»‚ÙRÿAUeÕä J–ú ‘5ÝÛŸïS“Y¼ÛœñþÐåÕ.HåÇ«-<_ÉÑÉ\÷*1R.¯uünüS×SŸ?6¸Zž;Æa±èqVbÕf?y#q꤃V#ԇͰÿdàÔÂu' ýyr=BÆýÑŸ~•enâ8Ýò}jEÁíVU–A¹0õ¦• cKKEQERQE-RQE-QE”QKEQERÑKIIIE--RRÑE”RTs†ûœf«ßJ#·˜ì ÅCu HNŽ2k5çê$ƒÇ5ÏêÊW-ž Ö;N]q–ö5Z5žY²¶íÃ#qû£¾i[Ïtëžùì*8¡–å–;½O¥jÛX¤ y˜•‡BGJÝ´ÒmíÀ.¢gìXt­‹m>@,¡Ø«CŽ@ãÐ ¼T`(Ð UýÐÐR:,ˆU×ržÆ›,k,f9 úÑ",‹µ× Ölúz¡ÜŽNOÝ=>•…}§A ÉlýÖ¬‹«¢RÊÄ~騌Qª³Ê| §®k<íymÛÕ3µFÜygµL¹H$6Óɬ[LÇ ÀwÅOo! Þ¥X aû—ÚǨõ­µ´•3m0Y:ícW½»®`”êG½FHw†v ‰!cç&Ð=_Æ£a$e„ªƒ­IÑ:ïBWê1I‘¡ü¨ŽE?23)ö¢i‹&<ÌÆõ*Y¯'1cÌ8ìàr*In')€Ç¸äTðÉ&À%pþ.ƯÛ\IöuóÂoÇðžÜU˜fsù˜ßúR,›Ž,WFÛ€?•%q€)õ5>Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ)h¢Š(¤¥¢–’Š(¢ŠZd’Ô7¬1ç½G4Â5ɬù¥¹rI€ïXws5Ìà¸Ü1€1ü«.w3Ê çŒ)‚)s{Cãæî4ÙÈghb*\»ÐS>ÊæSdtå½*õ¥¢Û)è\õ`+_M±ûLÌíÔŠÒ±´±íêÇ’jÀÎzUÌJ³ƒéF >”`Òsši?Z³¦£åpzåG¥kâ~[¤ÿ-_¶Ö‘†Ù×Ö­Gq yr©öÍhÅg8ÂL¹=‰Å^K«y‡É*äöÍ2ê$l€ìÏñ ¯wÚ0¡ºQ\FN`g¸¢ÖŠ,dŸëVí¡Â瞦§†?.0>æ¦ç¸ÇãRýjO­$Œb‚¤ô4‘YW,—2–Ã)ÏøÌj ¿Ú37ÞRyõx _ÈØ& AÈU”($cÂjºym& èGjŠ=Œç8SØŠ³ç\[Oµ¤2nu¹q/îìe d2 tnEYK»‹I»ô¡Q;ßÎR§ô¿c9’E*sӃ ÁÏ>Õ²Œ”ä+¨‰Ä‘+©Î@­ä`ÈOQN§ÒÑE-RQEQERÑKE”QE%RÑE”RRÑKYs=ñ|jA'ŽE`Nu-ùW žá…cÊo·ü®}TÜÝFªg“<ô8ª—wÀšbþ«]Mv£>ÿaR¤Ñ\ųîILµ\°–<‘µ×õ¨–UÏF±Mܸþu zŒE9Jlà|Rñð¥8ÛÒfÿJni C-ÇwQóëKŒÒ!‘NQ‡fïJˆŒ¿ ;NHѺ>Öb)f· ™·9­ =B{R#+çGèy«ö—ÒÁò0óÞ¬ùùÁÀw¯¤BT}zV‚^î ìÀþTÉfE'/@).&A––Rª:ëDÒÆ¤™€:Þ\.6‰¶FZ®—ñ‚BÝ2öÖ¡KÈó9AþÐÍA%º3–YÎò~ñVuÒ!˜ºÊY;ˆÀ5JáÈYd,O9õª¬ŽË¹—kmäúÕb­Äb«:0%ûÒ©iåPì>EÀÇZ{;O±\Œ"œT¬Í1PøùrUÔ‹FrzlÆqUf,=Àª“3)ëäû …Þ4åqô=)NºTÈ…‡}¼Ò›Ã´.G £í¸ géRÛÞ=ÌàTV jÈ%ÅÂÆ]T¶*ՙʸªXïV)ŠH¬Àœe«A¤‚̘ÔnîjëM³ya oï{¿Ÿ1fväq?Ÿ&OAU&—Î|ž‚ž‘n_•ðÕˆ0ù[“ÊÈÊ“šx`Ì»ØSÖ2>óöõB>öXúTM6æS´t¥mËó2´•Ý~_¥W8[‚#xu5È'hëQUÎNjyPLà ñøÒã|€÷Î"Ï‘É&´ $ R¡JŒq]E”­4 ]ã½tÒ4‚Ë‚8â¤Ç­X©héEQE-´QIE-RQEQE”QERÑE%V*;‚bxŸŽ‰»\“Çsåö)èz ç^9Ñ rF@Sßµ1šEùA-÷µA¾HÆ:¯÷[šƒ|‘õÁ\ô4è͹Éò˜g® /îwñëƒN>KÆYP\a‡ H­°7Ý4†" 6HSMhJÜ…5Í–¢ÁLR#©þï¤[ ›€ +qÐØ.&É™O|V}Õì I´QEQERÑG4˜Éæ š1ŽiizQE-RQEQE-´”RQEQKE”QE-´”RQEQE-´”QKEQIIE-RRÑKIE´RRQEQEQEQEQE´´QIE%”QKERÑE%RÑE´RRQKE”´RÑE%%´QEQKE%%!éE¨v¢–Š(¥¢ŠJ(¢Š(¢Š)h¢’Š)h¥¢Š(¢Š(¤¢Š)(¢Š)h¢’–Š)(¢–Š)(¥¥¢Š(¢’ŠJ(¢–Š)(¥¢Š)h¢’’’Š1E´QE--RQERQE-RQIE´QER1À¡Ž(n”‹’94‹’9¤ïKKKKE-´”QE”´RÒQE-RQERQEQE-RQKKE”RRÑE%QE-QKE%%´´RRQERÑE%””QKEQEQE´RÑERÒQIKE”RÒÑIIEQERÑE%-´”RRÑKIERRQKKE”´QERQEQE ¢Š(Í€äÒgqÅ´ bŠZZ(¤¢Š(¢ŠZ)h¢’’Š)h¢Š(¤¢Š(¢ŠL€~´SA8¥¢Š)h¢Š(¤¢ŠZZ(¢Š)(¢Š)(¢–Š(¥¢Š(¢Š)(¢ŠJ(¢›Ži¸æ’”S©ih¥¢–Š(¤¢ŠZ(¤¢’–ŠZ(¢’ŠJZ)i(¤¢’Š)h¢ŠZ(¢Š(¥¢ŠJ(¢ŠJ(¥¢ŠJZ)i(¢–Š)(¤¢Š(¢ŠZ)i;QERRÑE%QEQEQE´´RRQEQKE”QE´QEw¤¢Š(¢ŠZ(¤¢–Š)(¢Š(¥¥¢Š(¢’ŠJ(¢Š(¢Š(¢–Š)(¢ŠZ)i(¤¢Š(¢––Š)(¤¢ŠZ(¢Š))h¥¤¢Š(¤¢Š(¢–Š)(¢–Š(¢Š)i(¤¥¢–Š(¢’Š(¤¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢Š)h¥¤¢Š(¤¥¢Š(¥¤¢ŠZ(¤¢’Š(¢Š(¢ŠZ)i(¤¢Š(¢Š(¥¢ŠJ)(¢–––ŠJJ(¢Š(¢–ŠJJ)ih¢Š(¢Š))h¥¢Š)(¢Š(¥¢ŠJ)(¢–Š)(¢–Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¤¥¢–Š(¢Š)(¤¢Š(¢ŠZ(¤ëEQEQKEQE%´QE-””RÒÑIERQE-QEQE%´QEQE”´RÒQIERÑE%´QE-RQE-””bŠ(¢Š(¢ŠZZ(¢Š)(¤¥¢–’ŠJ(¥¢ŠJZ(¤¢–Š(¢Š(¢’–ŠZ(¢’Š(¢ŠZ))(¥¢Š)h¤¤¢––ŠJ(¢’ŠZ(¢–ŠJ(¢’ŠZZ(¤¢’Š(¥¢–’Š)h¢’ŠJZ)h¢Š(¢Š)(¢Š(¥¤¢’Š)ih¤¤¢Š(¥¥¢ŠJ(¢Š)h¢Š)(¢–Š))(¢–ŠZJ))h¥¤¢’–ŠZJ)(¢Š(¢–ŠZJ(¥¢ŠJ)(¢––Š)(¤¥¢–’Š)h¢Š(¤¢’Š(¢ŠZ(¢Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¥¢ŠJ))h¥¢ŠJJ@ 1`0Oz@ 30[’hÀÉÀÁ<æ––Š)ih¢Š(¢ŠJ(¥¢ŠJJ(¥¢–’Š)h¢’ŠJZ)h¢’Š(¢Š)(¢Š)ih¢’Š)h¤¢ŠZJ(¢ŠJZ(¤¢–Š)(¢––ŠJJJ(¥¢Š(¥¢ŠJ)ih¢’ŠJ(¥¢ŠJ(¢Š)h¢ŠZ(¢ŠJJ(¥¢ŠJ(¢ŠZ(¢Š)(¢–Š)(¢–Š(¢ŠJZ)i(¤¥¢ŠJ(¢ŠZZ))(¢Š)ih¤¢ŠZ(¢’ŠJ(¢Š(¥¢ŠJ)ih¤¤¢Š(¥¢ŠJ(¥¥¢’’ŠZ(¤¥¢ŠJ(¥¢ŠJ(¢ŠZ(¢Š))h¢’Š)h¢’Š)h¥¤¢ŠZ(¢Š)(¤¥¢–Š))(¥¢ŠJ(¢–Š)(¢Š(¢Š9¢Š(¢Š)(¢–Š)(¢–Š(¢–ŠZ(¤¤¢Š(¥¢Š(¢ŠZ(¤¢’–ŠZJ)(¢–Š(¢ŠJ(¥¢ŠJ(¥¢ŠJ)(¢Š(£QKEQERÑE%´QIE´´QIE%QE´QIKEQE%´QIKE”RÑE%QKE”QEQE´QIEQEQKE-QIE%RÑE%RÒÑIIE-RQE--RQIEQEQKKE”RQEQE-RQE-RQKE”´RÒQE-”QE%QEQE-RQE-´QIE´”RRÑE%´QERQE´QERQKEQE´QIE%QERÑKIE%-´”QE”´QIEQKE”´QE´QERQE-%”QERÑE%QE´QE-””QE´QIEQE-QKE”RRÑE%´QIEQEQE-´”QKE%RÑE%QIEQERÑE%-RQKE”´RÒWÿÙÿØÿÀððÿÚ ?èë£®ŠŠJZ)i(¤¢Š)h¥¢ŠJJ)h¢Š(¤¢ŠZZ)(¢–’’’ŽÔ´QE--RQERRÑERÑE”RRÑERÒQERRÑKIEQEQKEQE%QE%-´QIIERQE--QEQE%RÑERRQKERÒÑE%QEQEQERÑEQIEQE-QE%RÒQEQKE%RÒQIKIE%---RQE-RQIERÒRÑKE%”´RÑIIIKEQKE-QIE%RÒÑIIE--RQEQKE”QERÑE%”QE-´””ŸZ)ih¢Š(¤¢ŠZ)(¥¥¢Š(¤¢Š(¢Š)(¢Š(¢Š)h¢Š(¢–Š)(¤¢Š)h¢’ŠZZ))(¥¥¢ŠJ(¢Š(¢ŠZ(¤¢’Š(¥¤¢“­-´RÒQE-QE%QIE-QE”QKE”´QIEQKE”´RÑE”RRÑKIE%RÑEQE-QE”QE”QERÑEQIE´´QIEQEQEQEQERRÑKIEQE†’Š(RÒÒÑIIE-QEQEQERRÑEQE´QIIE-RRÑE%´QE””RÒÑEQEQE”QKE”QKE”´RÒQERQE-RQE--QE”RQE-QE”QKERÑIEQE-%”QKERÑE%QE%RÑE%RÑE%-´”QKE%%t¢Š)h¢’Š(¢Š(¢–ŠZJ(¢ŠJ(¥¢Š)h¤¢ŠZ(¤¤¢––ŠJJ(¥¢ŠJ)h¢’Š)h¢’Š(¢’Š(¢ŠZ(¢––ŠJJ(¢Š(¢Š(¢Š(¥¢ŠJN¦Š)h¢Š(¢––ŠJ(¥¢ŠJ(¢’Š(¢ŠZ)i(¤¥¢–’ŠJ(¥¢“½%´´´QE%%%--””RÒÒÑE%”´RÒQIE´´RRQE-RR´QKKE”QKEé(¢–Š(¥¤¤¤¥¢–ŠZJ(¢ŠJZ(¤¢Š(¥¥¢’’ŠZ(¤¥¤¢’–Š)(¢––Š(¥¢ŠJ))h¥¢ŠJJ(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢–ŠZJ)(¢–Š)(¢ŠZ(¤¢Š(¢Š(¢Š(¢–Š(¢Š(¢Š)(¢–Š(¤¢’Š)h¥¢–’ŠJ(¢–Š)(¢–Š(¢ŠJ)hïIHh¥¢Š(¥¢ŠJ)h¢’–ŠZ(¤¤¢Š(¢–ŠZ(¤¢ŠZJ(¢Š(¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¤¤¢–Š(¢Š(¢Š(¢–Š)(¢Š(¢–Š)(¢ŠJZ)h¢Š(¢Š(¤¢Š(¢–Š))h¢’Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š)h¢’ŠJ(¥¢Š(¢“4fŠ(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢––Š)(¤¢ŠZ(¢Š))h¥¢u¤¤¥¢Š)h¢’Š(¢Š)h¥¤¤¤¢–Š(¥¢’’ŠZ(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ)i(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š)(¢–––Š)(¢Š(¢ŠJZ)i(¢Š(¢ŠJ(¢Š)h¢’Š)h¢’Š(¢Š(¢Š(¢Š)h¢ŠZ(¤¢’ŠJ(¥¢Š)h¢’Š(¢Š)h¢’Š)h¢’ŠZ))(¢Š)h¢Š(¢–Š)(¢ŠZ)i(¤¢Š(¢ŠZ(¤¢Š(¢ŠJ(¥¢–ŠZ(¢’ŠJ(¢ŠJ(¥¢Š)ih¤¤¢Š(¢–’ŠJZ(¢Š(¥¢Š(¢’Š)h¢’Š)h¢Š(¢Š(¢Š(¢’Š)ih¤¤¢Š(¢Š(¢Š(¤¥¢–’Š)ih¢’Š(¢ŠZ)(¢ŠJ(¢Š(¤¢ŠZZ(¤¥¢ŠJ)h¢ŠZ(¤¢Š(¢Š))h¥¤¢’Š)h¢’–Š)(¢Š)h¢’Š)h¢’Š(¢Š(¢Š(¥¥¢’Š(¤¢Š)(¢–ŠZ(¤¢Š)9äñHÏ'#ÒŽ}iih¢Š(¢ŠJ;ÑKE”QEQE´QEQKKE”RQE--””QE´QERQEQE-´”QE”QEQEQEQEQEQEQKE”QE”QKERÒÑIE´QIIEQKKE%%´QIEQEQEQERÑE%´QEQE”´RÒQEQE”QKEQIIERÒÒÒQIE´QEQKE%%QE--RQIE´QIE´´QIE´RRRQE-QE-´”RQE--QE%%QE-QEQEQERQFhh¢–Š)(¢–Š(¥¢’’Š(¢Š(¥¥¢ŠJ(¥¢’Š)i(¢–Š)(¤¢Š(¢––ŠJJ)h¢ŠZ))(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢’–Š)(¥¢ŠJ(¥¢Š(¢’Š)h¢’Š(¢ŠZ(¢–Š(¢Š(¤¤¢Š)sÏJhæ–ŠZ(¤¢Š(¢–Š)(¢Š)h¢Š(¢Š(¢ŠJ(¢Š(¥¢–’ŠJ(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ)h¢ŠZ))(¢Š(¢ŠZ(¢Š)(¢ŠZ(¤¢–Š(¢ŠJ(¥¢’Žh¥¢–ŠZJ(¢’Š)h¢Š)h¢Š))(¥¢Š(¢’Š)h¢’Š)h¢’–Š)(¢–Š)(¢Š(¥¢–’ŠJ(¥¢ŠJ(¢Š(¥¢–’ŠJ(¢Š)h¢’–ŠZ(¢’Š(¢Š))(¥¥¢Š)h¤¤¢Š(¢Š)h¢’–’ŠJZJ)9ö£ŸÒŠZ(¢Š(¢Š(¢Š)h¥¤¢’Š)ih¤¤¢––ŠJJ(¥¢–Š(¤¢“½QEQEQKEQEQIERÑKE”QE%´QIEQEQEQKE”QEQE-QKIšJJZZ(¤¥¤Ç4RQE´´QEQE”QKEQE´QIEQIEQE-RQERQE-QE”QERÒÑE%-RWÿÙÿØÿÀððÿÚ ?èë¢®ŠŠZ(¤¢Š(¢––ŠJJ(¢Š(¢–Š)(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ)i(¤¢Š(¢Š(¢Š(¥¢–’ŠJ(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJZ(¤¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢–Š))h¥¤¢’Š(¢ŠZ(¢Š)(¢Š(¥¢Š(¢Š(¤¥=(¢’Š(¢Š(¥¢Š(¢Š(¢–ŠJJ)h¢’Š)h¢Š(¤¥¢Š(¥¤¢’Š(¢Š)h¢Š(¢Š)(¢Š)h¢’–Š)(¢Š(¢ŠZZ(¢ŠJJ)h¢Š(¤¥¢ŠJ)ih¢’Š(¢’–Š)(¢Š(¢Š(¢–Š(¢ŠJ(¢Š)h¢’–ŠZJ)(¢Š(¥¢ŠJ(¢Š)ih¢’Š(¢Š(¢Š(¥¢’’Š)h¢’ŠZZ))(¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¤¢––Š)(¤¢ŠZ(¢–ŠJJ)ih¢Š))(¢Š(¥¢ŠJ(¢ŠZ(¤¥¢–’Š(¢’Š)h¢Š(¤¥¢ŠJ(¢ŠZZ(¤¢Š(¢Š(¢ŠJ(¥¢Š)h¢’ŠJ(¥¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¤¢Š(¢–Š)(¢Š(¢–Š)(¥¥¢’’ŠZ(¤¥¢–’Š(¢’Š)ih¢Š))(¢Š(¢Š(¢Š(¥¢Š(¢Š(¢–ŠJJ(¢ŠZ(¢–Š)(¢Š(¢ŠJ(¥¢Š(¢’Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢ŠZZ))(¢Š)h¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š)h¤¢Š)(¥¥¢Š(¢’Š(¢ŠZ))(¢Š(¥¢Š(¥¤¢Š(¤¢Š(¢–Š))h¢’ŠZ(¢Š))h¥¤¢’–ŠZ(¢’Š(¢ŠZ(¤¢’–Š)(¥¢Š)h¢Š(¤¢Š(¢Š(¢ŠJZ(¤¢Š(¥¢ŠJ(¥¢Š)h¢Š(¤¢’–Š(¢ŠJ(¥¢–’ŠJ(¥¢ŠJ(¢–ŠZJ(¢Š)h¢’Š)h¢’Š(¢Š(¤¥¢ŠJ)ih¤¢Š)(¢–Š(¢Š(¢’Š(¢–Š)(¢–Š)(¢Š(¥¢ŠJ(¥¢Š(¢’Š(¢ŠZ(¤¥¢–’ŠJZ(¤¢ŠZ)h¢’Š(¤¢–Š(¥¢ŠJ)(¢Š(¢–Š)(¥¢ŠJZ)i(¢Š(¢ŠJ(¢–Š(¢Š(¢’Š(¢––Š(¢’’Š)h¥¢Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢’Š)h¢Š(¤¢Š(¢–Š))h¥¤¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¥¥¢ŠJ(¥¢ŠJ(¥¢’’ŠZ(¤¢ŠZ(¤¢Š(¢ŠZ)i(¤¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š))h¢Š)i(¢–Š)(¤¥¢ŠJ)h¢’Š(¥¢ŠJ(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢Š(¢–ŠZJ)(¢Š(¥¢ŠJ(¥¢Š)h¢’ŠJ(¥¢ŠJ(¢Š)ih¢’ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¥¢ŠJ)(¢Š(¢–ŠZJ)(¢––Š)(¤¢ŠZ(¤¢ŠZZ(¤¢’–Š)(¥¥¢’’ŠZ(¤¥¢Š(¥¢Š(¢ŠJ)(¤¢ŠZ(¢–Š(¢ŠJ(¥¢Š(¢Š(¤¢ŠZZ)(¢Š(¥¤¢Š(¤¢ŠZ(¢–Š)(¤¢Š(¢Š(¥¢Š(¢Š(¢Š(¥¢’’ŠZZ(¢Š(¢’’Š(¢–Š)(¢Š(¢Š(¢Š(¢–Š))h¢’ŠZZ)(¢ŠJ(¢Š(¢Š(¥¢ŠJ(¥¢Š)h¢’Š)h¢Š)(¢ŠJ(¢ŠZ(¤¢Š(¢ŠZ(¤¢Š(¢Š(¢ŠZ(¢Š;RQEQKEQEQEQKEQIIEQKEQEQE-RQEQE”QKKE”QKE%%QE´QIEQE-RRQGãKKE”´QIE´QE´”RQEQKEQE´RRQKE”QERÑE´RQE-%QE%RÑIIÞŠZ(¢ŠZ(¤¢–Š(¢ŠJ(ÅÇ8¢ŠZ(¢Š(¢Š(¢’ŠJ´´QIEQEQEQE´QE-RQERRÑKIEQIKE””QKKEQE%QKE”RÑE´RQE”QERÑERÒQIKE-%”RQE-Rƒš;ÑÞ–Š(¢–Š)(¢–‘Š))h¢Š(¢Š(¢Š(¢ŠZ(¤¥¢–’ŠJ(¢Š(¢Š)h¢’ŠZ(¤¢Š(¢”ô¢Ž´ƒ¨üh¥¥¢Š(¤¤¤V  ŒàÒ#‰pÎ3Žiƒ(#<ÒÒÒÑKKIIšJZ(¦–ÚGæ‘›n8'4„àŽ3šp攎)h¥¢ŠJ(¢Š(¢Š(¢––Š)(¤¥¢ŠJ(¢ŠZZ))(¢–Š)(¢Š)h£4™¢Š(¤Íš(£ð¢–ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢ŠCÛŠ(¥¢Š(¥¢Š(¥¢Š)(¤¢Š(¨®&ŽÚ'šV çÔûR;ª!v8QúÒJës…ôq"^Œ2;QÈ~´£‘œäv§RÑE%QE´´QIIIE-QKE”w¢Š(¢–’ŠJZ(¤¢ŠZ)h¢’ŠZ(¤¢Š(¢Š(¢–Š)(¢ŠJ(¥¢Š(¢Š(¢–ƒÒ ¼µ†ò!À• ã¥2HÖE»ñM’%”ÙùNjH£HcÆ0«Ó½(œÀ§ÒÑEQERÑE%-RQKEQEQERQEQKE”QE”QKEQE´´QIE%QKE”QKE”QERÑERÒQERRÑE%QE´QIE-RQE´RÑE”RQE--””QERÑE%QEQEQKE”QE´´QIE%QEQEQKE”QEQKEQE%QEQERÑEQIEQEQE-´QIIEQKKE%QIEQE€ç¥æŠ(¢––Š))h¢’Š(¢ŠZ(¤¢–Š))h¢Š)i(¤¢ŠZ(¤¢Š(¢Š(¢Š(¥¢–’ŠJ(¢Š(¢ŠZZ)(¢Š(¢’’–ŠZ(¢’–’ŠNÔ QE-QKE”QE”RÒÑIEQKKE%%%RÑEQEQEQEQEQEQKE-QIE%QE´QIE´´RRQKEQE%”Q@ëE´QER}h¢––ŠO­'Z+ÿÙÿØÿÀððÿÚ ?èë£®ŠŠJ(¢Š)h¢Š(¤¢šÈóÍF𤹗qúô¤hÔ¶XU\ù»`ê;ÖH“ìWEÊåC-gûÄ‘•©_Ö¢!äoÜ ÃºçRd3HM®z•ΪòÆf|ÛW©ô¨þÎîÂIc@ànçô¨Eœ‡÷Žc¶yÍEöF »íÏ@(ŽÆæY?zV%øEOk¢\Í 3‘ûuÅK‘,’fáöéV×N€rÍýæ5¤4KUL ³zµ_eº¦r}MOk A¥^·-¡§Jµb$´ìȽ¥¥¢Š(¥¢Š(¢Š(¤¢Š(¢Š(¢šà•#¦JHŒ‘ƒëšI8BzŒsšÍ¾3m’(ÂÙÃI<Ö9\oµU,ã=3Y®`Ñ`ä¸ì*µýå”Z`X0tÚ¯ÞíÏâ*ì÷éhɘ° Õ%ÝÌ?`u…/ËøsX– ­qNÇcvÏÄ"YUX…V^Õl"I#Œà‡LœzÕÑ$‹4Q…|Æ…›ËlntüEhiœ.ý¬zç«öE°¬#f*9ãuti#Ëh²mò™Æ@'¦}kbrÍjqò1{VœÙxðä~"²£\LA*Çi•Íʤ†ó*ß.;Ö3ƒ‚d<ƒÁ¦ØÂwxÀf¸ÏJKq#I7/Î3E¬A7º}áÈ­úë+~Š(¢ŠJ(¥¢’’Š( Œ‚)eHÎ2:úRAÅTxmÌ®ÄVLöûæ,RI}ª/é »öÍ0C2¸}BŒ„i÷q(EPŸÝ8 {ÔBÎâ6 .= T±DîKL¯{Õ›+6™‹Üàäê~µbÚܹß6@jÏùÅj{Ê®ù(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(Ûž(`6Ç EHcŽõž’Á4†.CžÃ®+O’ o^ÎèI*;6+.ÊHd¹’-ÌË“¶¹ý^ÇɼKhX09 êÿ¯5­:A ÝQFüj®©lÍ8·Ã7T@0GãùÔZ|2Cr,N2ÞZœtnõVÞÒHˆy‘Âçj“êj;f‰Á•gåR{V줯·Ú²)pßÝëŸÏ¥jZ(Ü1ŒO­jÀ¡ˆà\Ôztò꼫bc•çç€Oô©­^KÉeŽa˜c8éÃRÚH÷M"̸HÎ=Ms¶7òW¦8Ågj1„œÆ8>˜â«Þ¨YJt+׎*œäÚË.vã­Rwòíd㊩+yV&qž8®Šºê訥¢ŠJJ)h¢’Š(¢ŠZ(¢–ŠJJ@ EUL…g­@à RÒÑE-RQEQEQKEQE%QEQEQôëEU˜9¸ÚeÛÀíXú°”ߊlùGlÖ}øÝc’»FÑPÔÆÿ¼1³ €¡Nõ^Î1l²8,%#`ÇðÔÑ,HåX‡l(#ÚªF6ê‚åƒOµÇžH=ÏáÒ¯Û²Åpf•‰,>]¬ÈîZWf9\ŠÒ˜«bIw’¤öâ‰. ù, ÉÓÞ_3,Ê>N„Õ®æhÙSÌ€n«ÿÖ¨mûÈØVlà …E ³{zTú]¼Öæc.׸ÆÓÇNOçWí"(d';gгm rØ;Û•ËÀL·wwb´{ó€8c\ÍÌÌÒÍ)pT7AXBZi7MäE{ìÓøb±ÝrX‘†Ï–TÈI,[]}wõÚQIE´QIE´QIERQEQEQE´QIE´QIIE´QEQEQE%RÑEQLw¼óÏJ†êám£œôZŽâo)æ=°odC|á¥$Ÿ™¢  VeÌ‹æßGÌEPšTXîSóëTí ×Ûr¶ÿº'•ÇÊMS€O4åÒÜ,Lw•# ÕK9®Ûp°žJÀ­BbUA”mɳëRßX&sÚÇ¢ƒ?šêÑO1pÇ ä „\Ëk¬ÛÇ'Wazñý)úk=¦¡R.™POH¢ÒI-µâuù$Êçû¤VÅël¶°0sî+j|ˆ›·šÕŸýS:µ‘mlÜ~äÄ²à•Æ1\íÄ7Q v¬gˆF˜ØU’½…C‹quäF»°¼z£n«-ÁŠ5,OJ«jˆó´H7sŸ¥t•ÚWME´QEQE%QE´QIIE--”QE%QE-RQEQE-RQEQKHìi•‰äŽÔèy¥¥¢¢yrBFÀ“ÔúU »ÜȰ[¿Ì~óŽÕV{ÏåBÃ'ï?¥FÈ&eO2LŽI›Eq)Wì$ýÓI¤ÒÁÉQÉþP^Ú ™$ d?<˜Á LÒÝéâtجUX‚xíþ—6bl ;T¶IÇoJ–8Š1Pä aF3Š[d0ÈcÝò¨ÀÍ:13&xŒÓÈTpp:qêiÓ® æ•ðg5Îë¨ ÔÒgS³ƒ•¬]UÚÏPÁš9ìkS²êGVòËd{Ö®™©›·xÃ/ʃ9­]+Qûd.8%¹æµ,o~Ô®SµG~sS]J¨†W?*ŒŸJƒQ‘r_€sŠŠõÔýëŠÈðÛ”’êàô œ·÷³Y^—Éž{‚ €¤àúö¬íO,ÜL@Æ8ÍtÕ×WIE-RQE-%RÑE%QE´QE”QE%´QIKE”RÑE%QKE”QE5€ÆE6DÈ$ 7b:Ó]AÆïM ´d«gÖ YŒy2Fû½E3Ì( umÕy1+JÇË\ò}MT+g™31Œg:š¯¶Ú%wf(¹É2j¯öŒ0ϳiXOñ{úÔëÖ±Ì"X™ þðõ¨bÖmDþXcéœw«+;Hç Jv U«ké'€¢ìqÚ§‚êIen2ˆ*N™>ýMYŒ ŘäúÔñ˜’sDƒ*N úR\Eæ€J%MøÅsºÍòÜ;Y4{Lg!ek¬²ÚýœdÈŸ9$VN±$sÁöq’éóäÖ]„ÆÖî&+§§¨¬M2í¬î‘öî ÁÕ•¦\}šå .@ë]ëǨE1Ì"Œ‚Àa«gR’+åHâ˜E¼d–ÙÔ ^ Ž7ï9še¼pnHhŸ'w÷ˆ¨ô{däHAŠ@p}ÇqMÓ-Õ@øØÀ}ýkfºZÙ¢ŠZ(¤¢Š(¢–Š)(¤¥¢Š(¢’Š(¢–Š(¢ŠJZ)i(¤¢Š(¢Š(¢Š(¢Š(£éARÜgJ:àUE’D(˱6Ö½, ‚Á2“ÎJÉÖ^"‚%ûìGÖc¡,èÝ@â°Yy ö¬-¼‘ÜV¥œàZFãšè4«´ŠÜ+);¸!zæº ”[uV݆⤒»­…îÝ´ñÉ•PÊø›Š¸$W$(+·» xe;¾qõÏJ_50ϼqÜ7¥·= g6 ›™®GÞuÆÒ9_qQÇ«$ƒ™v0#îâ [hnL³ŒnuÚr>é¬Sj¶îŒÍËp¹õ®~]9­.O™¤ñÇZÉ6?g¸Ë‘ÏOz‚æ;–!–7 ÇGCT®#ŸÌFàÒ¨Ý-É”mFŽŠè#Aigoüʪ¨=kaØíàˆ`yî§­m’-b†3ÎРc®qš×®’¶(¥¢ŠJJ)ih¤¢ŠZ(¤¤¢Š(¢Š(¢Š)h¢Š(¤¢ŠZ(¢Š)(¢Š(¢Š(¢ŠZ/cŠ;VUŬÖÓ4ч“yù¶ýá\Æ¡§\CpÓ gW=GjÁ½²ž9ÚT·š¨¬ÆCçFÑz‘Ö³Œl‡R„{U-•ðêTƒVžCGT¯Êþ•zÑX¾ÆÂŒd=]´ Ÿ-¾\ †¢)n!_'ÍÇ9ÇQN’êêÜ´FP©lv§µÍÌ9Œ‘¸u>Õ•¤}Ívê§j²\̹'õªës&òJ“ëZQH‘› Ì>ïZÙÓ®b‰ðÌÌÇóZ–s"6 ¿·|Õ YJNnf”ycåW®iomå“QóšoÜíÂ"õ¤»ŠF¼24ƒË µuÍ-¥¶ÛQ‰TîZ‹ìƒc “æë·¸j`·ÛPä•çÖ¤r'ˆ8FNO^çé"£C–>ݪ9À–4)ܽkRº:×¢–Š))h¥¤¢’–ŠZJ(¢Š(¢’–Š(¢ŠJ(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š)€¤ž€R;F‘ŽŒšFeD.Çj¹¼åbr¿ÞéY­Æ¬6@åñ*›j‘ƒíþó Ì»g&mï…8-»·¥aÏ)šIw’K¶OµcÍ#Lí¸ä»g?Ê©Ëu5»Ÿ+?6;Ôè]­ä 7*3Œv=©b™ uI9NB‘ëŽ*k=çk»ï,»ˆ=phùæ,íó|¼NUy2Xîã¥]ó8UFD`CuÅMî;2ëÆ*hÔ0*ÐÔ“˜b·ó&•Qýà{Ôn6î,¼t9§¼ ÌÊ6ô9ª× /æ·Ž2²"6]G\zÖ‚?ž#E"F\o Ö­nóÙ~|˜£Þ–5L¡t±‚9'“Æj9SÉ™fuáƒuZnR ƒ6`zŠ´ÀE—Ÿáã·½EpË%3Ô;sœÓg"(ŠÃçWëv´è¢–ŠZ(¤¤¢––Š(¢’Š(¤¢Š(¢–Š)(¢Š(¥¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š‚ñÄvr»p3õÅW¾ŒIe2“·åÈ?J‚õA´“qÀ œÕ%[˜"”œÐ çdF;Cá@è=+!“pRÄtãZûÍ-*)ÁoCüêæ&É\Œõªà”aòçÓÚ¨Þà ·“ä8fÝ’I¨¦v<ùzóPÜ`@žil¥“Ény‰°E]³„QÌà‚:b®Z—,ì68ã­^·¾†à<“*¤ˆº· ¦Çv’JÒJª†5é¼{P—I$+€¬€€sPH?´í!FQ£pØùOÖ¬ÛÜ­äȈ¼úw©â‘.ãRÊ«nµ£§Úˆ.A"€€ÆGZ¹¥Ú¬Ipdæ0ƒëV¬ òæÞ0rGÖ®NÁ2Ä.ãéÖ§¿˜F¤¶ÝǦ:Ô·NsÄÕ †g•‘@àu¬‹‚^b˜WúÖtÇ|Œ¸Z×®š¶ÇZ)ih¢Š)(¢Š(¢’ŠZ(¤¥¢ŠJ(¢Š(¢Š(¢–Š(¢Š(¢’Š(¢Š(¢–Š))C©V‚0AïHFAf‚7ÈÑÇ9ì;U[½> Ù\ž«ÏeÀã†É9¸Å3ÈòXÔûV\¶ n#]ç=…R’Í¢Rˆ›Îzã­SÖmŒ¶`|Æo” ‡Rµ6vjX~öVÂãø@¨5+"Øp<É[ŒöfÊ.¾Í#yLÎ:Ž ¡8XÕH©³Žÿר­®DÌ!Ýå0MžÇ]B ¼dÎ6ŸÎ³îcòîYIÁ­S¸O.r½ óõ«eÈŽsœ >aj[)Œnc-€ÜôÎjk)Š1Œœgž™­4*íì§ ušÒ·— 5ÔžŒ«Ö´ pAØüJ:Ó¼¹ 7>{šk‰e$Ò{šk $É›ÞDêåsŽ”Èâ;ŽJç)#·7O¥jWO[tRÒQERQE--””QE%KERÑEQIKE”QE´QERRÑE%QERQE-QEª÷€”Œ¼úV^¾ ÛÂOßqôÇ?­QÕÀh¢õÜk*Þ;$y¤ŒÒ0.{ɱk´ÿ¤”“†ô5›cö8ùƒn‹ÐÕmJÔËr­ §“Ö Ô ó.÷Dà À桽·2]f3÷ºT–öðؼaÈbÄåúš–(aµ@ìÎ9ü*h ŠÙ@?3pjì;Uƒ¹lAµÿÙÿØÿÀððÿÚ ?’)üË¢ò¾ùŽàðzVt,Ò]•·H,f£ƒ-pYØ'¨§‚0ˆ2nääš0óya—#Ÿ˜ÔÈUå sÍX ¢/1YP‚‚~•grù>j²£È=OÒ§,¾W˜AÇ#Ö¢‰ñz®­œ’ƒQ[Íþ˜¬¬yž´Ø%çz6 µ'Σ Ó½_›2G“€¾‚­Ë—Lð §C"¬;ýcO‚hÖËÈsû×8ÇÖª-¼—?9<ûT¼¹2lVb†gPÀ±>•E ŠGPri`a9“ US©Ôö‘‹É$Éez²óÍMnŸhgbX"õ#Ö£º¿û'xÜÇzÓ$½–Þs½Ï˜NC9íÒ¡’ñí¤ çç'' ¨â¹»»”Ôù[ v#À×jí²]JÁðY “–àU¨Dò1l3–à„ÙM5®c sžõ–Ïq˜^W9¦Iló#ñŒzŒŠDYlãIcy3žT¶GåT±%€Šh™óžTœÊ«|Ö~T±–¸' þ» àVÀ]Ã#Šè×eÕº¹U†zw­¾&‰Ià0ÍBcØÛ™ÁúÖt±…,Ï!;:TäP¡Ÿ‘ЇjÈIw þÉ Îd 3î9û¸ª,²Kg¾1J†8ÿvêsœ‚ORÇ*D¾YL“Üž”å"ù[s“Ôö§«È*w0*ÊL!9L¹ÇQÚ§Y|³òe‰E4ÌY°;»šcJî Ü’iŒîêBŒ†ëN CsÏf¤ˆ'IàT‘à8ØšC¾9ˆ!ôëšGŠØ·(#ÇaÎhd€žFßMµ¶ˆñ1°Àp;‰íÕŒ-óœ ŽKuu- `š!U’ÃŒæŸlÅÜ3ž”èpöù# 3X·V³Ãz&ˆ0un§¸ªÂi- ç’{Ч½á¹&AèO¨®ŠÞñ.Jœ19õ®ª Öh•Ôõä×EË,jÀõóV aöà“ŽÂ¤ÍIšc$Yó[OrqQÉ[ÄÎB°þ"qLtŒ0‘ˆ ¿ÄiÂH›…‘ öaIö«v;Vâ"ßï Aq “?Z~08æ¥PÈÁÏpsR c#ÜRRÑQO$ˆªÈÇÞ¨/$x¢ß3ïQ\Èñǹâ¹5‹Üç®yæ¸ë"Zlõç5ÌØ±y i×¶êAЕÀ>”ù ‡Œ¯žÏ‰ä q•VyŠêæBT3qœñU6M3#8ÍQÜÏ&àN3€kfÆÎKhr oÎzÖµ³@Ší‚wu­[ks)brkU›wú´ÜŠz“Ž=«MçÜsn‰RqÅ_irw(s“Чwr¨Tà¢wèøÕ+˵»'UûU+»¥VvC÷GSX–—²³$³ƒõ¬¸§vù É9ÇãY¶÷.#êÌN+¨ß™§n—h ¹#ûÍé]‚´½,v®ÔËï1ê+©i"Óì2ø¡îk”¸ž[É™€,ò±ÀÆp;W%ºmFìày[¦: åÃK{?Ë–i íœWW¥Ù}‚ÕaÜÎÙÉÝÛÚ»->×ìv©âÄ œž•ÕYÛ‹ku‹qlsëSGŽVnNþÄñK bâAëNEW>µVî óªÁô*†¡mæÝ$xÀ~T¼„IpªGÊÕe@·]ªK/aéV ñØþéXÈ p?»S4«mòXÿ|Õy&ŽIHH:泤¹I®[¡@ ×>õPβÎÇ ¯aÖ”¹Â9öUX€¥‡|T!‚¶Ý¹SéÚ€¼ìp:îa¸b¥1ˆÆJ0ã;ˆÏÿª¤d¯ú¶ûÇŸÿU1eî!ÛÜ‘À¨ã—h&AĿŽ)øèŒ{*l™b6b*B2ç¦)H‰‡ËŒÎšæL&2?:ÄÊ6ãŠi{`>ÓØQ<çù\©€MEäù­•8 p)¹]¸bA½éªÁAWH8 w¦«…áÁp@ïNfŒ¦@óO–dh#P1ÏiòJ­*.0sÅA$fhʺݽê»!•NTç{Ô‘OUìB¤Â9ÇŽw*ö‡pò$$0<µVt™¿å“d0=»ÖÓ•À Ýf 73+Y™@å±Xz¢´{þÑ+:œ©'XZ¤‹Žd‘º•ÏJÇÔàfIž„ž*¢OÈß0ÎA¬q•=j}ZÆHfGp:dã®{Š~§fÑÜ+ù³¡wy㎾N*„>d³¤qd¹8U(I®8FXôº;—xaŽ}Ò€>T~5µ|ZŽÝØWj?Ù»fM°’ ‹Ô(â«Ìnc¥1â1Î&ªÉÌiæùgo^*¼©XõcWO €qïWCÚ¬žqPÛFcQœÉ€NóÞ«ZnÞê︎†¡¶ 2·КŠúWŠ&x£Wp>é5[R” ›˜ ‚úB!7°RÞI$UnQÙrsȬ†‘·~ì²±ê"³Ì‘°•c×<¥Xº¦ãÉ=Tu§„t{BA?Ä£­?k¢e¢ÚOñÅ +yŽÙû¸â‘c*|Æn½×µ MŸ3sÞ¥&E]ÊÂhÏbyüêÙ2*!ܳFyÁ<þud³¨VùeSÎ)VàîPAî¹éO†ïŸz|¤uLÓ’¹mëÆ?‡4­ Î7þ“Ù:œoãÒ’KVnãÒ…·Pr·´:Ó?³ø0û¿Úh²ùsA÷iÛeÃNû=ÂŒùgŽâ—É™FvcÇ Ãt‡ ;Éö¨ÜG"³LÛ{…äûS+®em®=&˜Ä‚vÀÄŽ„j»nÏÉqü@rjNr±¶|SÐ ²9MÇY{Õˆ#@Ì’lÏ2÷©¢ŒKVB¹‚+:ö‚†Œ‘2Êݸªeé!Ð䯩m‘:}õ9úÔÐ_ý°¤E|›…ê’½ì+m.#Õ òÃys/Unõ¦“¦¡Ìì•z«UmMeYqª¸g©¬{Ëya¸Û#·¨ÏZÌ»†XçÚä½y©áýàùÐ)#€;Ô.\ dv¨Ýrù *W`žG©æšÃOJcº˜0§r’‡×µ*9ˆîF ÒÆíÊœUË;‡`LØŠÞÑõ”eÆ{ÚÓ¯  #Ÿ˜t¬í&ÐÀ¶6îÉ'ûÕ¢Û§ŠGÀ~7P3T´˜ /7 ÎÒkQÉvA·äN¥×‹^JÌkÁ9£YrÀÄr£‚sF™aŸœ2f{Þ“O¶KVåN雌žŠ(°µKDªwJÝI¤7 ²Ëu/+Æ=i‰2‰¥º›‘¦¬È­-Ôœ„ªÑø›ÊöÃÊ<4Gâ‘àÄgÐóQEâÉhÞ÷¤ûUµëkFsÈ“U¤ž;ÉÛœô“Lib»p°D¹ê5·gk JÜ×G¦ØÃkà4Œ>b{{VݤpDgêMZDT@ª¯¨`°«@`` jZF }h'^æo*"åÊŽÀw5›{ré½ÚRˆ8Àêj•ÔÌ›™¤Ú¾•ý¬#S$‘¸ÇЍ—ѧú²Í'sŽ«­ìIÈ-¸ú½N–à]yEX£ƒ½1éŽõ åÓÈÛŒT73»É±~B§·|Õ„µ*˜œK)ÆÀƉ3ä $…IöAÙ\°QÉ"’GMä+’¬A »ŠŠâXüÀ±J·’\`þµG4ˆ\$rSÉ$t§›8d’fÎ:RgÃ$>bNKzv§›(Ú2ñÌI=³Å5ÊLàu f䵓À< yw”àaHþ%<ÔË<²°(|¶x5*Êîw/ÈÜŽô}¢á~_‘±Üõ©Î§xж8ÉêjS}: ©>¦†žå¾U‚q´çÉ5[É~Aå©?tô¦¶£s!ØU»Ó|ˤ?¼—kvi¿¾Œþòb`@ ÓMíÒ}öçÓ‹,íÖ@{GÝÍ1Øxäp*&¹yp[©¥ pÅ‹H;!4©ö‡C¶M¸þáëJ¾{¡*Àc°§(xø|àõçõ©Il¯œ0=M=Dޝœ04›‹)F@Ç<<ÒC*¼fÙÔÒG ’3'Ì~ëƒU戀ÊqÏZ¬ÑÛ·me89¨ d¾õm¬)äo-ùVèÞÔ­æ«ùè}h;Ãaóõõ©ѰŒt"¢s ñïQ3gȧdc ‘îE4ôëM4Üäü€9ö¡A'åúSTdð3S¤jpÜõ8íW­#T™1$rqÚ¯Ú IU”“Ç&³u ¿%|¥'åP;õý×–¾J“µ2zsQ^\ùkå©á>ﱤÓe¢ÀÜäÓle‘¶+cæ`p{óKc#0Œ0êÙÁïZsºlv@8ìkVù¢hœÄ`m9ÁúUû²¦&(;pG­`ê.ö¢Üš'0þ÷?þªÃ»-ÀÝcuù«õŒÆb‘yúÔ§JŠr º©lgiíštzÚ0`\·q@Ó–|TÜV••‡ØÉ,3zã‘Zº~œl›Ìt Þ¤t­K+hI( øéW6Ü%¶Þ•®¨Ä¡´Œ0¤f“;Z#Ç*U©YÝÏáìh.ËÕOÔgÛ¡wÆJ°ç Ç×ëUÚá&`ÊJä–â¢i‘È •2sÆk6êì¼È‹÷ ãýÞ0?ZÁ»¹ó§‘µ˜Ÿ¥d\ÏæN9œ{Q œrÀ±;ƒùFGrsL­Ð™Ø2)+ó €ía#Š6VÚ¬1´cëN/˜¯ÃnÈ+†ÏLT²±0*;B“…î{Sî.$’ÒI ØB{T—<±¢3 ¤ë°Ç‡ùy,?ÏJEÃ(Bå˜p>´ÑîÂW%»f£-™Îär~\½ ‘-D,²gåÈ9Ð%[mÈ[Ì=°r)é<„ŸpqÔ IÖ²ãÎܯÜv§¤ÖÒýö!»ƒÒ¬¢ÂüFßÊ®@;b06zgf$‰ÉŒc€)Z'PJÈÊ:kgUÝæmQëŠt°º)bÄ/¾*6¶YTïUº2ñš¦Ö«:’UUFdÕV¶Yžºƒœf’61ü²–dÿhd !;ÙË÷ˆ~_’b[7r*IQqÀÎGqSÝA@QHÈàcŠ–âÀ(¬sÛSJ¶àÇ=*¼1¼o¸;sÐÔP£FÙ€jaô>aÈ<àV²Y a&bv°û£·½_ÂH¿xx#·j®Ñ¬dbG)ÝqÒ²e…avòär€óÇJÎxÄ.v;^ø¦ÈѸRÙg-ߥG;Âê¤å@{šlï(l‘ަ†%·M§  óWLqÍiª9š´è’@€@çv<7zÏ•¶ÐOJD p3ÅLѳ*°½øÎi¦ ?–Ø=ñMh[†(qN%QÈÙIî4âQíR>”âQP0séAc.×až¹¤˜ÑvHW×"¤óJ(ÚøóY2ZDû|Æ* »ùÕfïzvïP<ܱÚ0[Š‹OºŒL ð©ÈõÁ¦Z\ªÎ§²|S,îQfSÔ!Î+q¦ITÆì¤m#­o5ä1ƒ*42²‘´Žzs[ qèw’0Æü«[¶·Œ0Év<}+U;h"Ü ÜO«&!‚,üÁ‰­M;LÈ@-…>‚¶¼:†;FwÀ,BŽzàVÆŽ¥-w?Û¿z¿(ÊÖ…Ú1‹rœ0ýjÔêÆ<ƒÈíU%¼K\ùŽg¥c¾¦ö­ÝùSÍg½ù·p7wäià]´­‹µcê;5j¬Ÿkˆ´2…R2 ö5x?ÚŒ21ÁµÌŸ´=Ðrᬐ ƒß½`_¤âE!=BœÖ%Ú\y˹ˆa¸=Eh[@êËæŒa²Nj¿•·—8¹ïQˆŠ€_ëšÑ„/–ÎëŠTÁB2vçÒœ¸òÏ'o¥J¨]g(Èã¨ïV!‰¥‰Q¸ 3Ó¨«1Æd@cm6bÍÂ’9»Œ„.@ î2½3J§ÌߎU3ÉéV`}ÐÈÛcRIíš±óŽC„^xïUg –*˜QÀöªs"å¶® «" Ÿ— 5ÛµóÔ0È¥‰~`Ÿï ŠX׿èê*ÒHVM¿ÏÿÕVP®v:m­XB3±” ”‡«íO“÷ÄÅqÆ)Ïû¾76 1aFù¾~¿xTqÀ‡æ%ÆQLŽ [s w,ª|‡-žõ-ê«å|ÄžüS®—$ÆãŽõO<Yªý6Ò[ÜÜÛÆÐÊ–Oÿ ,Ï¥ÆÒxoJŸya¹$V?ĤÕ<œK#c‚ ÝúTÆVÀ’2¬Py©@±î”¨´£¹T·\²'éWÊ" 1UÈíPMÈÊ`©éYš‚#¹xZ6ôõª7h®Û†Fâ qÁ,T»k5Õ:ƒŒuªN¨`xî:ŠâH—’>oCV-b›z©(FšØˆ¥ùFc#šFDI–H˜²»}Ð:S®b‰gY ”È’7L}ÚtñÆ“©‰÷+’~•+‡Q”ÜA÷éI,r*å ߥ$ÑÈ(K €;3ò¥‰ôªxvlm$“UrzsS9(pÀžœuÅHà¦)>Õ#‚„SToQâ›a9QПJ—P ºhó•^‡½Iv†9Ù;/jçåB.œ ðÜV+‚%`¹àÖ)R'`¹È9Ô—hìbWc½öÃÑï1i¨’žV>Ø®Œ±K4V?;šŽx>Ôƒt`,Y9?xœTRÛýª,•UX”œ·z†h>Ñl#­Y¶@m#FPÄ~•~Ú›NH™4}1Wcd´D#æN˜¦ÜÜËI\3g%»j¯{{sj‰su-×ÕÝäÖê‘In¤Ö6­“ ‘[.?dÝ“,žfâKqÅeÞ–@ê~cÅJº-Ï–žSŒŸ,Àœf¶-ì. ª˜”ÄÍòÈŒ®85¥ŒþB†Íãl ðH 6ÓOX'%³˜¸àÖTÁ–Só³ ç¥g2”°còñÖ¯´J»mÙØ¸å¹£Œ“äð¾´òSœoìµ3.A` nP{Ôâ$€¼e}êo(çIä{ÔÑ.Ø›{îf8#Ò¯F#·²vyC»žG¥\@Ú’ÎQéU\“+÷OëY,XÈ÷jÍ,ÛÎ|Š–ÞcØ,y"¯é·>JÁXŸ¼¦¯XÏå¡VÃzƒIv˜RX|Œ£­.¡–Ie°ÈÀ¦ÞFœ®éXÒÞäƒÆyÖ¨G&omÕMe …=7V”RDä+š± C#yr(ÏëVa1HÛ\sïW–Ù ¦CŸVàV™Óª´FFÜ;·®›ÀòËœ÷'ŠcDS çmöªòY˜Ø—¸ QëPµ¾ÆËJô¦:® Á?_Æ ™ Ã8¨¤@°$úPXt—%}i„ƒ(;{57 ŒKœzž–ã¡íÅI®Ü¼2‚½¸ý)ñÛ²å¢pW¦*T)"lp ô"´md‚âÜÛΠ•ãUÈ)áò¥PHöéPï––%R¾†³¼ù­™£T¦Hæ©yÒÛ“¨ãŸÒ¥¶ù£b$·!…hi±‰l˜„V.ç!…\²@öŸq'EBë´e{§¥f\§–ìÜ|§¥Q >#ëþÏj‰£p@àôÿ]A¶TÀçÞ¡Û*ãÓëSE,œ«»û…¹>õrÞæ\)UR{©?7áVâžNEolóNó¼•õ&õŸ9ÊúJRë0G¨Å4o1‘åî_Q×°Lñ±nAü`sM–)Z<ò¾¢«Ï™JÔä|ÕË™äBÀlä¥2sæ:“ÔŽõJ-1¥ÔeÀ{ŽøÕ{m=翯O½ž•ZÞÀË| –Í_¹c§å^Ž*åáór±ð¼p*åÁ"x^Òœ#m¨1Ö”„ WøˆíH[+…ÎÐ~b;U”&(ÝâF‘d›«V"mâ• C"*‚ã5y‘UŒfª»Év‹+BË·#œqX×rK|âsx àV]ÓÉvD»ãŒzTÖÇ·ÎtÄŽ7 hhÖÐGÍ6ß8ž7ñ´{UÝ2ÞáI_aîzŠ·¼K 4, €GcZ“o0?–9S·~MÆòÆI•ä²7Ì ~ašä¤B²Eo—†÷®m“ld òžzsV’8DÌQx ±éVaHHÊ2àq¸ô«Q¤IŒ€ÇñS#uÏ(FNIíQ,‹ÝN:çµD²(=¯=)L»¸Ÿº;ÓZc Àz(ïHfi>P:ö¤Œxƒ‚Û¿!O ‘7s’[ò§Ç,3€y?¥2 dp‘‚Iýim#2\oL“KhŒó…>™«w¤9XŽ0:ýkgS)&“,¸äy9ïZ:†ÖÓ¤|r1×ë\„²«üÍ÷Œ¥sBTx¾kžó¢0§÷„†´î)qŽŠ;ÔŒêØeä(« "0.§;iYjIÙ+|ŽsZzn²‘ïòö'œUû R0¡%p>¦´”Åp»ãeoqÖµÂÛ^&øÊ6ˆu­°Î»—iÏzc@yÿ §6Ÿ 'oÖ«ÉhÊ{ëL0œà€AõZ…¬¤,U€+î»søÔMjÄ•b>ئ…òAÚ~¢ xÅ©û¬õäTL¢ß³iË&åÉ8#šD¸wg =iVaݵdm™Ú܆¦†Ý/[hp®¼”= H­Ë}à{zÔÊ»=kJ$’„Qª…êäjÑ `Toj¬ QµSëQM¦£FJŒIßžµ¶jÊJŒ8ç­T¸V´|§Þõ‹víû­ü@Ö]Â:0 ÃZ]Ü|éÁ¤Š9%\¢œŽ¤zö¡#‘Ó|cŸoZœ²wËc¸üêxXg*Ì ãî‘ÅK I¬§–¦*rfTÏAì2*ËÍuÉ\ d8«Yã+×ÂÊåÝK)þyÆ*²8ýäªÌèzqQr ´ ²°íÚ„žØ6ØY˜Ž£¤K‹XÔ3>#¤Y ŒŸ)Ë㯡¦,¤îÀäñÎ* ŒñW#5Çh‹èrEu+Gn2¡Uø$H¦ cæ?Œj1+* ¦ŒdzUë+¸¥Š$æ+Ó±[¶ÜFªó‚¦µmn"™VÉÇ" ÞðJê§h<Ž+S6›rëm=ºŽµšZ[)YTàŽGn´ø%óYÝ_p-ÈÎ!RC9n|}êHeÞ¡ ûÓ_ÌÉß!n£Ö£–[Äo.ÝÝè3ü©’Kt­²"Êoð¦e)‡xÌ„üŠ„ZË##¡žyÿ<ÔBÞGq½¹<àÿžjʬqyÙtÇ^*ì‘Goo•«#CdÉݸôÓµ‰ ?²¶?xÜzíѪHÑZXd¹È®Ia’ncBì2[Œm^R†Éa’Àwæ°¾É$›d‰áëïšžÎ'e˜'ßÅL¶s ù. Ÿž¬Cm ¶Üˆ_½ÇCR$Íáó§J¤èÊ܃ô"ªºäcúÕë{†\lïÜpjkY§ˆþí˜}*ݬóG³¥hÁ}4oûÇ 2Ku­K=Zî9BÌàÄInMhÚê3¬„JÀÆNhOX»ì}éÏÞ#йˆ¬d`’PˆŽ*tÖì¥s9SÓ'¥]_"åŽee>ôé!·¼º¸FœnÅI$1ܯÉ*°>õ‘0ûÙ8ûÜö¬éí݃ó÷°jŒ°”nNWø¹¨ÄÂ;X8ô¦Ãv-%ó‡ÚÜéÜSaºÏ¿†Çö«ÐÊ·1î\œk¢´ºŠö2"@Ψ5³©s’3òŸÐÒCæa–O¼§õ–’JÛã—ãlnìˆÝH~NÒ–hÒCóAÍ2öÚ <ÇUqÐæ™soÀ@qß5T™S,NÅé‘Þ²dií\¢Iµ¸ªòÛ1@ÁWÖ–Þròº€¨Ê°VôæG2›ÇF“V,ʸo¸\w©D T4ŠÇÐñS =ÂêUr:•'ÙddNùÇCÒ£·mñ ®FzU{2Û˜Á íÊç¥ElÌðíÎ23Ò¢xÏÌxV`3ÅWš"»ñ…ܽqPMQ&0¼fžF大¤°Ú[D­ËJ2qýjA$VñFË8ψVi Û–‰s·×<J—LQ4Ò9pcnxö§Ù(•äf8+RʰÀ¤Æ‰¼•sßéW^ÚròEW##UƒP†h”+cŒUx〈ÞÛÙ‰É<çž•FbºMÓ¨3túUhÌs®é2ö&™rërcUeàüUñ¤‰8¿•Au€¬Z5\tÅQ7÷P›öGèzV`½¸MøAТ/& ¿Ê½«©"ˆƒÅ[«_j%!7²’ÔŸZ%Ú¡˜¤õ« “ŠÇ+@ÎjêÍæZ¼r`â@Fyâ­‰7ÀV@ WÈïÅ+gw`@l*7hžI°*"cfbÙô F¯ÀF¦yJÀàdô‚1‚Bþ5t,’8Û6ÓíÅD]Z@ÎpŒJÔ{Õ˜3œ+qRÚ¸Žt\‚’‚Q¿Z»£Ê±êY ‰UŠÇ5gL-ÛDqó&PûVWŠ.Ye¯ ªþ'”›´°Z©âˆ¹Tô\Ó|9 æ¸B†6Œ‚3Îx­"IÀÆ×ˆÁÏÍÇj·¤Àë/ŸÆÉ#ù¹ÏÍÇjÞŽÖÞtŠ%@ç-Ö´„h €¡Cu÷­$‰YUB†ëŽõJ}&ݘ °#ÑsŠ¡s¤Ã;ÞTý3Tî4Èeläƒô¬IÐÁ0ˆd®O9Åsú¼¶S¯Ëµ¿­aßÇ%¤Ê•Sß=i!½S'”ÙaœÚ«Gq–ÚÙ9⣆ídb‡'µA%ŒžkmQ×#Û¾óÆj¹´q#`wâ¬[[Þ[üÈÇlõ©áŠâ 2ƒÅ[.!çœV弬åç{Œ+JÞG‘ÐAqŒZцGwgæÅ-Ô{- 8FCݰ*ÃKr:NåsV · GöëOñJ¤"aÇPO­[Z¥Üy„1z‚xb(>ÓèËoî áiVÒdS‚3ØdÓ›M¹Nà·až)ZÎàpNïlÕ{˜&\6q÷Yj¬ÑOäˆÏð•ïPJ“DDqÓêÕ•Ïœ<¹ÙT~b¶4@]Åå¸Û2pAî=kGO»[¨°xuàŠ†ÚP<…ÇŸe0FPÍÆÜqUm¥*À1ãâ(2¶0xà{Ô·@ÍÎ>TífŸ82ÛpcëXw—&k²»°ŠÛBûVÄÍ5ÆÝܵEcÍ+Kp=­K¥Hñ$‘J£iÙà ֬’ùBQŠL>FŒzÒy<«˜š6*ç†_Zºr­Ò9õÿëÖ¤ÊK/¹úà¼ëÈmù`:SKg€Tc$ýjŒQ–€ К«–WÆSò“Y:ÑËm„0sYÚ¬Ò³¤o…Ø8ÅPÔ¦‘¥D|)AǽGg»dQÑzšŠÚµ°PSIoº 0:Öêá#’ §ÖîäH„RlÀÚqÍk¾_•&ÞÔ*_ʲÌqÏ@ZÎUSp"…³“ƒž€j’€fò¢lŽ§Ú›3 Â‘ŒvÙÝ7íì¾”Ù]Kž1ƒŒ pÜŠÎUÊcÖžc‘#i»!òŽ‘3aŠ`Q,o|¸pqè1PÞ£F~Q»5 r#qªm1‡ @ÊûÕX†ö«r§*}ê¿Ï #d¡ÊËñ‚MD°ôž*MBãíZ€—Œ¸Ï| f«:ÍæLgÛ­]ð½¬ßh{¦Èˆ‚ûG5¿¥$ŒÍpTƤÛØóÖ¶4¥wvœ©E#zÙë]-iV•QTï,#º‰‘ˆ^êÀ}Ú¯ygì>\ŸðEW¼³ŽîŒ6Ÿá8é\ÚZù7(n#h™Iù€ù^¹K‹ mn›P ù€á«6-È2!^ pkIV& %GqSC€ˆëš·µ8ùIÅ=YIÂäb—#¢ñFìð<îeÁÇ= 3.Ü€}hùÎ1€}EZICGåÉÇ;†üw«p%·Lì|ÄÉŽ*ÓL²À#rzÕ €fKóé·ëT?#˜‹oæÈãZ¢Ñy8Øy{>”å*ˆUÙ‚ŽTŽÇü)ÑìX™$cµySéOVO)ÒCÓ¡G+ÈË2ld·­>Öi˵—Ën¬Àõ§ÛË9;-äÚG-ïKçΟ€q€ÍH÷×±¸g™Ž0G%åÔgtŽJžÄqNc1wË+ÁM /$…Ü–R)ç³ò­Ú™uVF~e?+ÞÔ“£[Î$…Žå9qI2½´ÞlD†\sý*@±0SÆo­^’ñ9Äyæ®4hDrEÓ£cšuÁaÛhuÿ–ô@r£œôëÒŸt<¡¹”`ç§Ò³-,⹸ûa8– žIõ¬˜l’I…Ë0ç,sëYñZ+Mö‚FOÌ«žõ¯å”?ÌÝÈ«ª-¥;›©ãšÐKtKòzæ‰%PpœtȧÏuŒ;»/égE!Ü;qQ« îÅRjµ»šWd 0>SPÂA’FeÀãå¬íZÛÍ @†a×µPÕmË΂4 Ÿ—Ú©j0y“§–'¸«V¶âØíE?(ù³Þ ^CáAG9ïOŠ?%ˆUÆÑϽXÁÉÆO8« "ùðsÆO8©ÕÓwÏÐ÷4ÈQb»ÂQQüÿ¥GcCb®ä`WúÿJŠÍ½1¨È`GåUõb$ N»y8¨µašE@2H犎÷÷r8@2½qV,ä3@’+ƒ Z²w’mÿ¹a‚ïVmXɶìÄÃSÝ0冪ç¥Û•Œd>ÔÎqÒ’X0îˆg5Va匄”ä0î+>_“›H<QTdù »Xu>Õ•«ÛùŽ$QƒÜÕy—2çç5^â=Ò†Æ=ëgÃç:R'9F+ú×U¢JeÓ"É$®PþÐé2´ºl%¾ð5£WªÝ-RQEGs wì”v"¢¹Ž9!+0ÊÓ'D’2%Z¨öÂ$ùxEžjņbýÎvã½T–×þï;}ê¡Ì"äšÊxü‡ÄÊFAÁª ¾KbE84ÐÁ¶² ÇÜc¥Fê>ò ¯Ó¥#÷e?•H›Xá‡>ô"+ZUøÕ¨ËyLƒiVÁ« …Ð`« `Ô® £ Á ;С¡70DŠzcµF@#%AH‘Hü©„våC¤0ÅEk$I3 S;€ã°¥Òg‚9Ýgpa´Ú2hRFYW–jÅÜâ2"!H9 ØVŽ©l—0þçiÎñ÷GÖ®j6ë<'Ë 9Ü:Tý¦( ÁþöA³R;ˆ£Â®=ø#ëT‘.<'_SÐÓ¼Ù·1|+Œnô4%ÃJL˜q¸Ö¼ÆR[v¦[FmAl+y§vAÆ*îÕÚ È7llœ¨*Üä•-Ä }Ç ;7ÁàñSÿÈ@FŽ2¤ç†ô©\ ÀŠàíÎzõ¥T1®øÔcqÆ¥¹BŒ`|¼f‰W”Ž3íN.Š»‡^Ø<ÕI¦Œ pv“Щ梒U B{­A}pð*ÉåñŽH¨¯'–%I<‘ƒÒN¦¡»šX¶¸ˆôaÖ£Žyœ–”e\×S žg¸Ý/+!Ó’ di‡™÷d#ð«6üÆ\š³?˜Í˜Ú8榗y9NƒŽhØÊç9$Š£‘] I£‡`rI­½F6îlp) H¹R»˜ôæšRAÁ˜úÒm(Y2‘Œ‚yÿõSäí\ÉhÝqO?þª{)·ÉQ†2_ÿU:XÑÃï]Ë0ÆGcO*‡˜™Yú?¡¥dVVF\‰‹Þ°ÑæÒ¯]WæŽO¼àÿõë*9eÓçxÇ*ÃiVdRÉc;ÅœÆÞµ¿ŠmÕÔd2àc½nÃ*ý˜¸Þ˜ûÕ´’#« T-…GW×…Ô÷ª \o(÷9æª`aƒ®á¸mâ©^¦"Â`ÈÅW»Œ&ãNÕ^íãn8ý*M Uˆ¼ ÙÞr¿ZÕðìáQíØõ;Ö¯h²@OC•­“ÅmV§zJ(¢Š)w.QȨîaûD8'GcLš!,Mq‘Á¨ÖI70Ÿ÷»U[[›ž!’Ñïÿ„ûÔO1[Û¸uãqè}踎9SË”[§µY¸‚;˜¶L ñÁëƒSM L…$U9ïèj›Zˆ—a,Ö²e²òò®Ìèj‹ÚìùX;…£nªwÐUi!aÊ`•¨&® Ôl6ÉËíP–„r þ!Ú£Ü ß9=ý*u¸Ã¼2õ…5z‚†hŸ’Ô1j(\ÂÅK gŠºè^TýÎà2AŒñÏ­Hñ8”1ˆŽ6*V‰ÄÛü¼ñÆÓÅ9neu à•Æ8õ§«‚\X`ñŒÜÓÕÁGå»úlwXü§‚yéÅGoxñ.7pqšŽ ¶DÁ$àãÖ™srÛüÈЗ^ ¯)ÓN@ñ‚¸ÛÁ¥–P\2÷â¬\*MOtsZ—‹Õ¤S[è§µh]*ÍrCAQ¤¿g¸"2yÏAUm¤6s!„œLÕx$û<ªˆÛž™«l¾r”ÚBàzŠÓ¸ˆ2mH<’QWfríÚy ç•NâXa®TîêGjdª-£æP7¯j­#L/Ì©Ï5ŒÎƒ2¡Èž–Â5V\‘Ô†íô­,Ñ9FX’­ÛéVã¶TUpKq“»·Ò¤%œí^(•¤˜¡Â¯AK#4…Šð™ ðª'ÓÚ ´-;3äCóåQ[“)g?*¯zXÜ;°$®zOµ‘n•˜¦ãòçÖnâbFJ’x¦ÎI#zÔ¦Yg}à88=j¢ï+–àpZ¿vt$ÆàÆ#Œ‚ ¥ ªg€{ÕMJ×íB·ÏÇj«©AæÌB6I8éUoíüÉNÓŸJšØÈ±,(€” ÏLzþµ=«Èè!…FWú`sSÂîñùq ì7 ¤|ÇÃ;(ìäqUÜ4N‰^>V#½Bᣓibð“Þ£™ l¾ÝÀ`㿽$Ÿ?ÌÀèØ¤“÷„OÞÅUFmto”ÑjÛGŠKc‘÷­[±*ùRH¼ ÷®ƒM½쓉W­lÚ\‰“k8íWv¬RQEQKE”QEZ>µ ¶áŽSå=Àª³Y#ñèZ‚K`[raO¥g_ÛHQ¶’­Øâ±õ;If ëŠÍ¾¶” ¯Ê}q\¼é"¾pA뎵ÏH®²ËÎ}:×;*J'^AüëCP’á!£,‹·çÿ\¹’UŠ=„ªãæÁïW丹4ŒÅ¸æ¦ÑõyÞMÃnGà7\}jM>ü™<©HÚüdŠ~™¨IŠn7wÅmXgRCŸ3,Cn‹ïN½dµ“ ˜d [–[wUP9ÅDŒ™$6GU2’HûÙ°ªÆ6w˃éÚž…“ ßèj޲‰wÀüªh`PÎ3œ ì9ÛÀÇ_Zb°$ •¦‚ކ– Š -·ƒž¾Ô¶%T9AºCÛ=Gz[L*1UËwëI9%]sÀ^AíL¿erËÆrµ2ð«’ázçµAq”@à‚˜ëU§8 ¡j ÁL6àQ±U.bd¸<i¥Lm¿9f˜TÆäç óUn.W|sÄÄ2øšF¸1H—1Êv¤7>T‰:7N1]¬ââ‘NNáï]MÂ][¬ªrqózè ™gˆH½Ç"¥©©ô”QKE”QEQEŽ¡Ô©8÷¦º «t=ý)C©RqY6%dÜÓ1>¤ W?}§¦,dny @ÅcÝXˆåÉsÏ!±PÈ€<[»zÕyb;@òÁ>¾µ ±ð—ÿרQcBJFb=È]T~B‡Ô Tœ&Ãô©¢™¢$#¤r½=%dRªÀ©ê;•eeR¤î‡¥_•"{_:Ø Ž ~µvòÚ'°K›e‡Þ¬ÞÁ´[ˆFzn™vñڨʂNÚioZ;5L*–8a´Ó®Ý-Jp àš­{4s#ynÊTLr9<þ5ZY’Wb¬Àò¨9ç5^IVFbŒ” £oo µfägך„†Ipçx\æ £~ðîš±jlœ Ž=öž•q.Lš{Ç av7Ìßìö«1ÊÒXEæ7ùµY³+2—@sœjºä/zî¨×;sW-ÎÙ¨Þ*ޔΓ¾Ð>é'&¬éå–I:‚y¡äi™v¥šâK©+¹UqÀç™îä 8§4ÅFÔ8d°Î*ÇÚš(Ö4*€œã$…Mç´j¨¬ógŒs„Ãn »TY¤‘öÆ7³±ª ÎácùÉ u§¶@¬½s£Úœ$1ËåÈ™ýÑÐâ•_c”a“ƒÓµ>1€XŒîjÍ©Ù;Ž[¦}*ŹÙf·4×*p¯#Ö •ÑŽTuUiè:1$~ý:ý´ù‡™“ñ`ÒÙ_5”€KÌ`rGZÞ¶–ˆüø!úžõÔ[ÏÌBh[r·¥oA$sÆ&ˆå_½KRT”QEQKEQE ëE’*È…Xf™,I2džÔÙ#Yc ¦öò!áw-fËe,YÚ»ÐtÇZ§%´‰Ñw¯lu¨ÿvĆڸöÁªì#cµÀOl`æ¡+d8Ûõê¬ÐGœªMpC{b«Ë „¢¶”C( ˜—×=iÖû@(Ä ïƒÖˆJà¡ùW3V58̰ù‹ó98¤¾O>5NX Ç^¯›‘yaÁ³m¡”a¤Ï#¨ÅEËýîØªp£"å¹nØíV%`¶ÇOcÇZYF»¹Í,«å¦áëL¢îaºÝ²E ›}‰ÿÐÑ„^MÄSõp¬? е¦ˆ–9㟣+ødTñ^Æ¢9%öí^OãL ¾a¶rp sëBáäHÃn$àì+T¡E;TôÆâkTÚy0¸TÀÆ gæ5¥äl”.ÈëPÄy+»ò¬ë4ËÝŒú§l™ã$TÙHÎ8ç¨ÆI«~lPŸ•W8Ã/REXóc;@'¡ëN.‹×Ðä r´Vè÷Çà U²áJ8QåGÍÂzUFyerц<Y24³HλîEf±–I R*ViƒíÆyïVÚs´± ò95c÷ùÁcŒt5 ÊSh<ƒÍC#2ùIç<Ô.Å©fžû%ÁÜA°©Ùc¸PYØ0T¬e“¸‚¢’Öëþ˜ÐFÝP~U ÖKŽŸLUit¨Øå¦* ,#c•85]ÔÏ!DÉ$zÎ{G¸¬(Q“ƒUݧr"PõæjTïi2ªÛHAÈÍ0é̉æ¼Á‘_kê3L[,#I¹7íÂŽA5dØB#”Ò3®rEhˤÛEg:¨gf_¼Ç'Ö®Ia ZÊŠ»‹­ÍcÙ¨¸¹–=ÃÌ]¬½+?H·G*iú £¦Gæ,Ê[÷ÙÜv%¼Êú$JÏ+ŸGcµZŽÙìgTbFáV#€ÙΤ¨Ëg$ Òó¤ž,Çòä‘Ó®(¹¸žé„Q«ßÞ,³\aSž”ÖÜ$*]AÇ^ùªÃrLÁ¤UÊœùô¨FRG øùNõ©UÑcIËuldT±ÍZ|¹Ì„nldt©XÖÜÜy8àÔlÌ_-·qóÒ£–ÓnÛÀ>{Toi…·(ƒëMFÈ?(é’1ŠƒNÆ;yëŒb¢Ãd«¼Ô›ÊUÊ;úš¶‘}¦ ò¨­Y'ˆãüª´FÇ#€j6Ûå ç 4ôÄC¥:…Ûr :ÙFÓAÈ84èF®{qQ~ðÈ9ãÚ¨¨‘¦Øƒœ öªH¦Ø9Å:i¬ vàv¢wxe)"ãØô²³Ã++ƒô“4sBTÍÛÚs*Í\°èOZ[‰VXA°#žõb ¨ÖÞ2íœ.ŽßZÜ´¿­âÞrHÃÛëZ°Ý!‰ žp#·Ö ºµGa*Ùäm¨/-"f2&<ñQ\[#6õç<äUi ûÌ °îsȬÉíNK Z¡5¹'wUYm_z…àÍTx\l׊¬Öî®»;äTöw³Ú¹,gósOÔe´—÷Àºt㨫6W²ZÈDù#Ö¶¡š9ãFÀ¯ê tpMÌBXX2NÕ·‰,bD9SÞŸRS¨¢Š(¢–Š)(¢Š(¢Š(¢Š¢Ë$QÉ>Y¾^Œ9ÇøVkDñÄò3síTÝ8ÞF$9¦Å31gêADý+:;¶Vys¹ "þ•R;‚ŒÒ üÊ=i÷73„ÚªGQÔSîõ{‰ Ž=© g¸¢ãQ•Ø¢aPŒ:T Rçî‰ù]†F±¥Ó™àœj·¹4YnŠlæ)ãw#rèIF^C‘šÒ¼i â®Ü—UrQRÚ!S•#€OJe‚?ÜñžÔ¶«ˆ‰=[¦{Qq(]N T:…¯ÊóF@)ÁìÔ7­4}G}Vª¬æ)ÚDlzz5f “¬¸! éèÕ@OåNÈîÉÊ㱫LY#,ŒNTžƒŠ½%ËGòØä®sW$¸1ÆJ£<Н å9$“ëTmÏÚfË’Åz«n|ùy$–5cnÖ}§åÁV‚#$“l®Ö­¢•yvœ¨è?!ÆèH<{ôâ’6 ‚A8>‚Œ£ÆÀHïQ¯ÝpBõ¨Ô’¨È iŠOÊëÐSd $‡iù½ê¬€M1ÚNï¥WeH2§«+²a†:š“ÌY# .;šÈ¯óvާùS6Å#cïP¢E4¸û€Ô1¢<…~îzTDI±äg¨=iøšÐ¯˜Ÿ/®zÓ±%±`ù}}ªx ˆœvWä`ôö­[P“…‹# ©SŒ{V„(Ž6’H<‚ TÔ,|µ- l.Ø<ä6jË6ˆåq´Ÿ^*›c|‡ zŽ´è®I™<¢r “ÁªÊNzÇsÒ¢G$ýÒ¸îzt äî>Ç¥G(CÔäúŠd¡ПjHfKIVC HÜáÔôúýiÖa™Y¤ œ2ž™õúÓ¬æû$ŠöÄý𵇠ASÈ"º!‚2¤FA°:0Gb)iph¤¢Š(¢Š(¢Š(¢Š(¢±Mó\i™†ãŽ~kòíæÒåG :wù«*òáæÓ\1ãñ¦Z¾èLê~C¸¬” f—•Sõ¬õ-±ð¤Ó¤v‘G–TÙ=»Ôj SÙ¨”; ‚µ8–GS"£"Xg±ey䨄¸ïƒõ­[kŠ<л9¬ÍqêÉ †dmËÏjÑ’ê ˆˆ†@ÝøëWxæŒùlÿ*±mÈØ§w#õ·C`Ê}úÓÖ*HaøSÕqÇocLHr בcà®àU½ê…Ò˜•”$0zV¡nöÓÈ„qÀšÆ½…à•—äOŽ=ñ %n1Ç(Šð‡”œcô§,%£Ý#žÂ‹hÂòvžÞj{8@·nã“·šžÒ ¬¤íÂõ sV.CÎ×ä ô«š„NÌI1ò“Ó­O{*–G í?ˆ¨EhÆì+mê:¥+Bªr­·¨èjº°( ü§®EJŠO̘ ëëV!fR ‘ŸçRÆHè@÷¨Û;ÁïíQ`ùÅÊäü5>am¿€¦¸;p¤©#½A"ÿ ’:TN¹Ê‚W4É#-†Vù”ÔmáÁµDxe<Š›vøZ'Áa ö¥]Y~Ñj` è0¬}¹ü*Ù´[ùnõ{Ó-cÅ”íaÛ±©4µØÌPÜg­:ÄÎÓ†àô§\\¼Å Tgqûµb{äda0Wøù–kµ(|ÀŽwvªvò#ƹÈìKåG¨»#…*ÅÙ¹©¹_n³FÛ'̇Û«³í™ý*"á[æR)ó[Åu7uÏ¡©e†+˜€ÜHê= I4ÜGŒäsïïIeoW§z×BÆ’GûG5½ªFG©95ª dRsN§RÑEQE-RQEQ\æ¯aä¬Q&Ñæ9èpýU¨Ú s¹ˆàóíXº·— £Ÿ¼HÊžxäT–;l-dо}MQ‚í ·x F@sŒž•ZÚå µx ÏsÍ>3or>cUÁÏáInÐÈàH äKoåJãÌb*imƒ\´Q¶éd‚ÏO­Yû›+E€¸]ÉŽŽõ©Í—šì‘¶dUÈÏz¤±É Ë\EVQŒ×Ö«.RL¢#Œgóªé”²+!ž=êýËI’ضÎÞµzØ’›„™=нnIBÁóê¬Es €0”çå*hî¢9&fYø|¾µ"\FÀ±‘ƒ6ì©$ùгvž˜ëRJÞd±M"îÚ@+ŽÔ÷;æŽI88aíQœÆÅ: äÜUI”ÛNðã(ËŽëÚ«Ê R´L2Î*;uq¶÷ƒTšb²p,ñO±]ÒN;°5aöÿñê*ýÐ\þíp=GJµ8;WÔUBÛ{ç5’Ç‚¨ëJª—®ZcȤ®)¬H_0¸¤†ñ'c1 çŽâŸêÎDeB¸î:5,Wk9ÙŒ?·z{#9 £;zŠG÷/;x"‘Ñ·ŽqÁ™)•ÉÚ}j2LD©Ï=7˜É<Óâ˸ÇÝ5=¨fbI\cMKâI$cæš\Å(s…\òjXsèî¨<Ÿj’2aœ3|«œf³õ‰Ryc²µ”3;|øíUuÉb–d·µ˜9rKãµTÖ$Ie[x$¼’øíLU!X—(W9èsUco-#m ýÓQ#yj¨¤¿u«/3HŠ$?½IïV¤¸YÐoÿYýãÞ¬<Ë4`±ýç­,\6 Ó`á¶“Ö’3S‚£¢óëV••z TàÐõêÝ¡m¬'šÕÓ‹X1'W¬É1{Tõj§¢Š(¢Š(¢Š(¢Š*…Ç“}§<á ª©d#®G¥AqwV® %~µÂG=³PàGáYWó5Í´fUCÃçÜ×%;®zó®víÚ@£Ð ³arì¢ÑŠ£ïméO·¸vQÛŽÌW¥Kopò(‰‚Œwœ¢+Ip²1}ßxžî*Q0ŽD»«©äƒÔT‘Ì#’=ŒÀާ4±Ï+Ý–ˆ P¶áŸÔSRIÚéž2$·O&™Ìn &$Py¨ÈF•¤Œ˜Ù ǦsI¦)wÄÅH=(ŽC¥£$zêʥŸÙýj욊܅À¢AÑ×­[kå¸ $‹ŽŒ)ðßC"º€¬0OãQ­ä‡l«+aùSåã·nV8ÚEYFfoÞFÑ–r úÔ€—јpä”Ì7#+ÀnsM#÷êÅqžâ¤· ·q¶ÜzŠt9(qŒñW&CÎ0+^ðfoîŒóZ0³wšÉ€S"ŒãœórqùW:¤,->äÖ0*» qš’g_³8ÚFîbz é-¼ðŸ1'¥!%¶ ÆÕæ°´É]îÐàx?•eÚ³׸éøVeŒ$㜂Jé£À-·1Žk¡ƒ`‘Áû¹çó­øq½Á隈†,J&º*'ŽFvhÓ'°¦2¹bȹ=…8oeܼ0à©¥š ëÃ/MqŒ2õ4Ã0mÊFu^µ\ B0Aûµ ˜¶TŽEaieaÕ&_˜åTz5QÓÊE*J™c•ß5Ÿ¦•Šöhæ\¹Ü£>¹­f³Bwƒ²CéÞ¯5˜#r’ ÏËWÞЙx>•nÀ•dÃE@…•)‚8æ¢BÃ*Wž•< åw¡qÔƒV­Œ`Jîõb0JîïÍX ÀQW#ˆJáP}jÊ'˜à(«ˆ›­Hb ­^D¸iÕ%:Š(¥¢ŠJ(¥¢Š(¢ªÌ‹oj–ªðµZþSkh]n8Ï¥AvþE¾àpÍj×X$ "·RZãïî¦,÷õ®[Q¹>nà g©-…æøÕØaãa»ÞŸ»À—2¸zÔöÓo .0Wï ×´†+¸åùÄ‘„ÛÆ¶­¬à–%.IüJ›qíšÖ†Ö#]ù!ùÈ]¼ÓŬpŽrß(byÙ,"¶™>Ï)%úäŠCg¼«ä?-Ðç4¦ÉuOº\u#Þ‹›sxê$EIzyˆ1‘ïDöâîEÜ¡$þúŒfªÞ[á‹ØÈUˆ;}rýE‹i’²’¤(ÈÏ_juù-e! G¨ÏlÕ(9¶Ú>S¿9üW5,Œm¼±ÀWê?аn¥?eÚ8 ß,ñ«¦9SŸ~•gæ#³ ¿Ahß;GÙÔ¯ãYzM»Gs22†1žÇò¦ÚFRfÈÎÓÎ)ÚtF9FvšÚc³ç@ÄGÕsÅkdÄ‚t vsÅkgÊU•r@8ÅJnçtn¸È«K¢u*99©Öî1‚cu+ßµ$['Ôç§"Q\Ç';‹œä NŠ$š6䜂"«H²Bì°v¬¹VKy3߂՜ÂHexûç‚k/V·geº‡ïôlzö5Vú7.·)÷³ÏÖªÞÆâD¸ˆdçšÐk“-²JF$eɵh=ÆøM»XŒŸöOJÐy¿v¬Õk™® XÐ+)°^•ÓÈŒmeaÉ ši7ÀR¬9`:T¶t.øy‰í#­ZÓtÛyò¦|¸9+Œ~µbÆÂ)83naÎé[iÆ (é[ñB®Õ\cŒšÖHÖ0ŒvÍ:ŸN¢Š(¢Š(¢Š(¢Š(¢ŠŽæ1-´ˆ{¥AšÊt=Ó5 ây–’©îµÇOo!»Ãn œgÚ¸y#o8©ÉÉÅrÂírCdÀ©ÚÙR]¹ É#¨§*màÓöùkŽF=+SEº€éãÌoŸÍo©'Ÿë]6‘<3iQFN#Ðç¯ë]›43i±.ï›M[–EYM*±?w8©'VYRI¤G 0ëRH˜#+``c­Jó40Q¸ŽƒÖ–9„vò>2Aàg4¢]98à ¤Iœ7˜7™ŠÆ˜4Óܳ;Vd€Í)—r:v§}š/1 pÆsÀïïWmtâ,¥¨ééžõf !¸‰1òŒýj'·Â‡CÓ¨^ÞõIâh› öúÕbóS• Î 2kå™dÂÍ– zzÒK´¸´2ln[u]ûLsÁ¸«œœÕ˜Ø%‡–¿4YÛþè§Lît¼4m>í>Vcdåõô¨Ò*^7kgÕ-£˜žEaÎ=«"âÑü–pÝ9ü)ë/›dr‘¯­VŒ—?*îÍS·VwLâ›koݽÇ+½1´ÕØ D‘œœnN†µ …QݲFáÓÞ¬HÃåË`£¦ãÞ¬Í 1ª+aG$x÷©æu*¡xAÔzÓ•\&ݩק´·yöFF"늒Þ—jòqCM$ä.S¡©ZîKK®P˜ñ†Ò¤-Æ~NþÕ+˜e±ät"¥¹67K¿Ì»ðsO¸³®ààéT\ys™ ù›²ÖA]“í8/ŽgìÛ1]ÙBqžÂ¦kYJåv2ã ã­\{;'vØÙ1ÁÇZ±%´¾[«³xUu ˌফ u†;¬¢5àŒI=»4^Š@š|Ö¯ä´À€‹ÈÁäS¥Ö308UçƒÍEk¨Í&cŽàGëIkªÝ°ò⸣ŽZ-õ‡RUb½˜Uèn®T9ãe?ìÿ…_·ÔnÕ€œÆÀ÷ þr+ÉÃ.Â>•}:äcð­h¤YP:Õäpë‘KN¥¢Š(¢Š(¢Š(¨å•!·sÇVêò(ßÉug-Ãm¨&ž5o)÷xlV]í¡YÕ£ÓÒ±uKÁ„p{‘YwÖ†9rŠpGoJ­s¶ñ,¦2ÀðÀ3T%´•da×ï{U)­dEF`N~ðª6Sí¼–8öFb¬ÿÀÈ«z¯ïAó)`ÇøqSh³¼s½¾{Våãöj\ÈÓq„T$ç­j\;0f!UTdûÓ_´ØÅ,)ËÓðª«0~S£ùÔe‘KD V [y‚…vžs銂pvò\TQn7ÆZ–g]í”a‘ó6*KÒÅØ¸+Ïj}ÓìH*8éQÈꪨ£o˜q†ÍC‰h «ú÷¨þvm ÏÍÞ ¶ŠG¾fm¢-Ä?ûmž1Vt˜_|Ã+圆_|Ôº|OºA#läwÎx©4dU[åwÍ:–!CžðÓ#•mǘíˆO÷º+"'X26"`qžõžŽ±£yû¶SûQæ•!‚"áNÔUT]o™RóÏ ®—!ç y=µ1æcqž~ïµ¥2$!D¸,ËžJ¿*¤CËmÏÒ’Êæc+ŒŒp)ú=¬W³Ê»°8©ÚlÈÅäùP*äÌ#Nú Ó½t¶ˆùj¡aW®™aŒìU U‰mýF+-Ù‰2žj‹“!ç4ÍäÈN~_AQ+“&sòú Oï2zz dͽøK| ²)’>ôfû¥ÎÿfšÍ¹rHÉ=*÷Ú òpHo”dVè¼¶6Û ÏÉ‚jˆZ È+Šåõ“bÊ\í‘\˜>^£°A8ˆ®n95&ˆ’Tü¢´5I¶X’œb¯ê±Î0IÅ^Ôf)e‘ÁcŠÎÒìîc)ÊÇcߨU-7O’íšO»}Xÿ*¥¦YIpí1Ê¢ž§½ní Ûq•Æ2k[aGÆ2À&µvmb§‘ïSY«ùXuù«ÚY!˜*Õ‰# ½ZUr’Š(¢Š(¢Š(¨Wí?Uû¹¬ë}£U”K÷óòæªA´^ÊïçåÍM"†#$sW.aY£ùÆH÷«F$^G"³o¦XabwÇV,è«“–Á5›8§$ò*À±³k™0ÀàuÆj•¾óæF Ðuçš¡kÀáB1ÔÖãÇ#[yL¬WîôíS”‘Æb:qVš7užŠm‚Dœ:Œ€F3K¹­Š’¸*sƒÞ”»[ùy_á>”’·‘2²”ÕJ ³r 71ºlÀeaÜTÓƒ •Ú7 «zÒ!`»¥ ¹l¾õ ó3àÈA%»TRÊ\äOj”äα³ ‡vÜŽE:ÒMî $Á*H§Ûɽ¼¦ àesQ]ÛG fâA´F= [{1üªW¹5<–ë| ¯©ª@O,S]Ûº±Ÿ‚Ïõ5ZãÍo0Á("N¥EVdhå00a/P¢«—ûc¥©…‚ ù±ü&±¥=ü,íQÎ;Ì•ÍľNÃÔûÖ¥’ÂÁ ÄyêÝI«–VLó,q™ê@É«vvŒd„ÜŽµbäl„Ç´åGÞëSj#ÊÊe%“#w¯55øÙB¤²çŸÆŸ¦mØí*Q¶sßW|?±I.Ü0mœ÷àUÐÈA;*.nÈàŽ9ª÷²‡¸,8=9éQ\¸iAÀ¨ð@>ý*®î¸8>õl4Ðà”`óøÐ¯ªF1úÐv‚1Ö”DI9+ƒøâ¦H8={T‹njGÅ;KÇ_½R°Ž(7m,IÆ3÷ªFÙyÛ’xÅd}ˆÍ¨É+&Ô 3ÜVPµi/F] r9¬Ô¶/zò•Æ:U륆uΠ…ÇZ½paÊ8\U¹ÄSª¬ƒ!jÈxR%H¸@:b­ùÖé¤Cå¥Zó"X‚F>QÚ£fÚ¥ŽG¦jªs‘ž™¨œíõù§ÚIºE jŸM“3¢Ž’OÒ¥²rÒ îI­ÙïZ=袊(¢Š(¥¢ŠŽHD¤ÅHèEW¸´K‰RMÌŽ½j)­’YòUסÏ‚X>G#žø¬ó|ÑLNþ‡=êŸÚŠ99ö9ïTïdYs¨#`æªOv&”(U y9ªó\ W¹¬Ø­¸Ý¼ƒȪjå]å!€Q FZLî‡5­mq â±R wRj ãr¶_3VS»åþ´â²6T¤úòi¥e™ˆ$ôïÍ0¬²gq8ëÏ4ÙZÅ”nUúƒWf”K§Å¸mdPÜb­Ìþm¤a€Þ Ãà¡bÊäódUWùDlà>öE@ß)œgûÙ³:¥Ä-q'ò©áEœeps֥߮0AþU$¶ð\[&Ðã5l7“$[=³WÝb’=ŽLÔYÛªÆÐ«F#;•AóÇj¡y¹îæ218n*È/<»ÎNì l:D2Œç Št7Áh¶ðœ39Ý‘NŽgŽÝ`‹†,wqM`ÉŸ0wÉÏJ…•åûœ“QÈrüŒÕw½@æ9`dçð§³/ãÔâËÜTŽ¡ xñ‡i’ü‹”šdŸ(ùFsRBÂ8AÔ(©à“dJgljž'òâVü7Îy™ä¶ùw `SâINÿ$íåcÃ3ÈwyM€xÏÕS#’È@úÒGHåš2|EBìYõ§ q´š•>àP¸©q€G"Ë·pùÊ(‡h|ddž”E·v3ÎjiW 2ÝEIp .eºæŸ0mÇ4–ĤˆÛG i,\Ç4mŒ€ÄKVÙ*9Ei¸dVð €{ÔãÔ´QEQE–Š+:êk„,É)QÑx…}¨]C+yS€•uySÀT+;/Ê­µ'ÐþWí/!ù[cc-Ç¡óÙ‰*ÛORz­{#;£6ÕŽÜf«^Hò:– Œ:aqš¯vï$ŠX*7¨ÍS½Y ãýzL)!ŒžÆ¡ts$Q Xaš&Û'ñ)ëÿê§,;#IUðǪԞW’©*7QÊV¼ qm¿;>3W¢¾Ýo…P¿ßŒšº—aàT ð}é²n3‘„ô5NÞh ‹®ÞÀÔp³ïÁQÈõcÌÄcyaà㹫Ê ![FëŽæ¦’E1*ÿô*2§–öÍ»–Vò X7+´ƒµKRû™Áfãµ-Ù—ç=ºsW¢*̼ƒ‘I$’5Î"Ùå Ã“ëR\1wGPiÒ9çJ޹¨W9BÀ±ü+tPêc-—<ŒqYò¨ —ê;Q·Ê|®òI”NUkiT/™óœÒ¢˜$P»þoá3 0ýÞ8þ*²ö¿¾Éh8庚¡Ä¹Ù€}j•tãªW±”ŸdŠì`Š«r»f(ãäS áwúPnÃ,sïPçæ ¸þ5›©Ù˜ãi  ­œ’;ûÒHŒ„pTjdÈèÙ\®j[ang,ë׎E*•Ú¡¹+Úž‡ nê;T(2–p»GÝâ—Á Å93媽Õü„+œv ª÷S9“j±Ç ¨.$f“b±ö¦·0~Cu©-ÉŒ pzÔe]Ç­I4 *ÆÇ¾ê¥ðäsš‘åñÞ³üÙ$œ6@9ª pòJ8ÇLUO9šPGUå¹gÌ7­[ûC:ç$zÕ¯9¤q©â;Wç9ìþ⟟=r‡êcV÷ýºð¶ûÊyÅX-ö˜·ÆØÇ¥UdVns‘Ù«:X”ÉÊœŽ¡ºU7ŒÎ99Š2•wôãîûÓdHž6Wl“Ð÷M6EGFäõ 2ŽHÌNÀsò’:m¬‘Onmå` çËb:R@éq’Íó.vUe… lŽH#œÕYb’Øp¤ƒŽàÕyâròœUxDŠdB¿{« e»:o\g#–ÈK„uÆ2"§ò#HÚ ×Ò¤ò‘ äe˜g9§˜Õbû¹cÞª^\¥±ò€ËßݪÓÎ!;@ùz¯=ÂÀB޵r&ÖÊ£,r±«©þ—eƒ–äU±‹«DuåŠÕ(aÌÛX7ý*œPæb ­ ÈwÅ]+½p€qÞ­¿»ÇËÞ¬ÝÊcŠ©s¨­·“û¦ –ùm²ä¿÷=*¼×ñÛm#%»­XƒZ—R‘-`‹Ê•ÏÎÙèZÒƒZ—SxímãHÿ}‰è£®*õ¶¬Ú“¬'–ýd'°ö«—VFûM™ÄŠ9_ïU««‚OµY²(å½ëVgµh$7¹Ü̿ޫVWkwáÃ/ ¾õnÆío!,>W^= X¶n#Ü8#††§«--Vd¢9WBšååòäåŸCX’ynÇÊ}*¬ØÊ9޽Uœä«Ä޵Vàœ©Æ¨ý*ͳ¨0vf @rjΞá',¹-°§Þ¬Ù8Y—9+€ 4pƤ±ýã`•&¯Zª²±%¶“ÎSV¡ °çvÒyÀÏ5–öJ öo•=yç5xÛ[´^T‘©ô=ÅNð@Èbd±Áî*šÃ4Ž_•£ä°èxþx®qí¥…ÌNp¾÷¶+­äŠM’¡'Úµmf;&â5¯dH,#QеmOÞãø©óOÊÀ¤`óÓ5 íÜbäçå*A!¹×H.÷ƒƒDòaŸ0v©u žO´†Ëy‹Þ¤»›%bbyÞ;Ó"òÁ$̽zÖ¡´ò³Itç€FGãQÛyJ¥ž`~éiÌŠ$Þ¼«{ñV!¹& °ç#=¸©•ÏÞ½ä©ïÚšèäœzñúÔW6Á²©žEG<Á-5c åfSÜd⫤EHóíÚ¡T*ß8b?½éOèÃ&åÎ{T‹æC‰í¥Êç'¥=KÂDI¹sÈïOí‰Wq‘Ò¬ A.yé±Ç‡ Ô¢ñ%oÞ®Ò;úÔ»U“vCÌ;UŸ!%·,¬xuNbI!È;î+;jÃ$°N»£<+ŽH5ˆ¨±ÎðÌ B~WA¬¸ÑRVŠ_ºO :Õ£‘y8ǵ>ÍæÆ-Ë»rŒk@Á樅È&ª4b2Ê9#¶k8Æ#.«ÉKnÝÀ~4¨IQµ©ÑÈÊGÊM’ÈTŒƒ\õç˜ó;2¶IÇOʲ.C+SœúV=ÒHò1*yõfÞڵģgÞ£áÝ9­ËÜÉ‚Ì6¯µlxoOk}÷K.Ö¦§ý‘V³€­±Ö·k^¨MÚßG4c ' g\Æ,õ®#YNÙõªr§Ù¯UY >µŸJÑã“Ú®wÏj(¢¿ÿÙÿØÿÀððÿÚ ?ÙI ¸!¶‚ëÁ´a¹´¼zƒ(à†ëZñ\[ÜrÊ7ô Ò>ŸnY˜îç¶x¡ôkRs†úgŠL¶É;Iö'Šô挫[~*MU¼Ñ‘pö¬#=ÔžµZëK‹ïBU9\ã5Z6h'‹ }Ò=ë2a,*mç8û„¡6øÃ2n˜R[0ó!t|pŒx&›c/“pà÷¯µ%”†)ÁBCzzÖ¬n—€Ã£ w®² ’æ"á”õ±ï]R¬ñ^Aª–‘ovŒ r…Èe}ªŽ¥£ÛÞFJ&ÉqÁQÖ©ê\qœ WÀ®uìYCòëÞ¹‰,Y7«|¥~õϾŸ·rçi_Ö–6·`÷íNŽÍ‚ï*Äž†Ÿ£*îe$v÷®†ÆdktŒüª¿.éŠÙ²•V! Á1ŒpXqZöÒ¨ŒG7Êã"¦u WcFËß9e °8VFÏRÙT¡¡èõn•g>D*1Á%IéP<ÞT„C ööä‰åd“÷Hþö2*TŽc.|¥ù‡-÷ið ©dÏ–=ÏÉùSã'* ùÅ$ŒöádùóÊ…''?áQ]¬ñI¿çßÐsQ],±³'wðóšÍ*®Ò0nþÕI8`ÒJÛ»äô¨ÑåÈ.í»½BÈ Î^GŒ«|ØïMhÐ<ŒîÊU¾`;ÓYrÌ6žTwÍ]µt`xëÔÖΙ"0p€€äóZvN­¸(lqÖ¬Uê³KEQKE””QKEQKE”QERÑE%%RÑEe̤¶b$ê¬9®Jl£™!,§?uº×=6cs$D©þëU»{¡4KÈs[pjk5Š”u†Ry­X¯–[ehØÆ ŸZŠi>c½s~••stÒ1óŸ\ÖuÅÁrC¯51)Œî†yUåb»IÈúÕi%$~aUÞ4’,²)ʱëQüž^9WSM0•(¸Èe©tû“ Ä‚f,¯ƒ“ùV–‘© y&åÕý2øDí„ínæµãnQÇç]sE Ìr)ïÉ­…–7WŸsidÒ™‹n9åU¿P¹µÓŒÆYdÉ5Rh¬Ì†F9õPjÒ¼X  ˜éVâÔ Gðâ§Âc!@튩3n–=‘*¨c’*«B·.£ÈE_PØý*O=€ò•G¨8«‰q‘ØŒñK6›m;ÈouÝÁ¢K8=ÅIõæ¢X—ætS´ð¿?5Wì¡þdP€ôê!_• è7sH G|4²+ŽF_ŠbZ ”«Í"IÛ-Å5`Em¥Ù_·ÍQI ìèM»~ï½2hîd/'ïL•&íÇaV•—rÆÛsê½êÔH’Ÿ˜ꬢ¤§æqŒŠ«:+^3– &QBÞ¾œU9.œîÆ[®YU ÉÃV®Œß$ªX“Ehi§å‘IÉÈ«9­,ÕÊZ(¤¢ŠZ(¢Š(¢Š(¢Š(¢–ŠJJ)h¢’Š)h¢¡› œðG|VN¬©6p>aßGQU®*ˆ…„¡‰PG|V*£#“‘ùVJ«#‘‘ùRÈLdo äö`qŠI”ò¾i²I´á†~´ÝÈp¾PCž[#ò¦†FùJm=Ššã“å)µ»OhˆeÞ¸'zf¥6ì1¸`ö'Š“ìä0Œž•ä1à3’={RÜZyJ®ØÁ¢{Q Ý Bð€£c¤p} )ˆÄ B‘Ö”£FÎB!†@ e¸$úÓbfÛ¸çÔÓPFI®h¹—ÉŒ¼lPƒÆ;ÓdwG*{b›+½» ¬@ëõ§Û'@× ”}æcÆêÒŽâÖî5óX¤ïàš¿Ð] ,ò,€u'Šº²¸Y‘Ðâ©¢¼•?s#G*v/éR%̈ R‘;éPÉEÜ‚B Ë"ð1PEpÀÈS9 Ò£(÷åzŸLRT–58ò»ŒàÆ¥º´F_:9“Û­>æÙJùªùOQÔUh'2Î̈ÅAÈ/Éôâ© ‚íµlzóùUQ9s„½Í[®NÇT$ääf®Ax°¦ÄeV?Þ\Õ¨.BªÁXõt¨ävûLÊYJîùzÕecw(ܤÏLf©´Žf¤ýÜf¬iÙÌÂâµ´<”“8à-héy*ùÁÆ8ü*åjUêZ(¤¢Š(¢–Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢«‰á€Åa]ÜL嘆 8ÈïYwHÇvúÕv•¹êk5ä ܃ŸZ¡#îcÁÍ(‰ä º6aÔÔå·–\…½9¥[y$ íÉìsD–Ò0# ƒûÙÓÅ„åö#Þ'¤[9·á°ŸVÅÊÊ€Üéódб >Qo<£ñ€C‚jh¢ÙŸ<©8À;³J¬‘îTŒsó äз‰o‰]{næ´ªFÈ#VôÝP•`rr9Ï A¤rz?!TZG$Ügè5­âu ¸«g®x¤ÂÈ6’U³Ö“jH¡K\Ó#Uر¸fXÏEç4 ÆRL¶ßNiÙ‹j‰ lzSZ%çnåç¢fÂH†¡gQ÷ Ç¡¥2lÛ».3ŒNIöýï›Ûõ¹ ÇCË+FQÙqÒ¦2HžZÈ@ìµ(¸–E ¿åÏJ[+LnpÌÃnY}jͳ¹qÉU+Vm f.7£¨©£† ) ²ÈN~ì~•f(-,¤ó.sòÅè*hâ·´“|¯œýÔôªÚµÖ-q0,ÝqTõk”ò¿ÑíÂcï7Z«©Ü*Gº€Áù³>ÙdãÍ@Äæ«+ vçr櫦VEfþ!šÑÓA¹?ÄFá]ˆ¸·sêkkK\@þæ­Ö\¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢©¤³8 >©®r;Û‡ ˜_] ÖÕbhaº· ¬‚QÓ¶j¨o)ÊíéÕ ëô¬¥v‚FFSÇ3úÖr9‰¶08š{0 ¬O}ÙÅYŽKW?ér§f *ÄonìÍ ›=)ínv††Fqé‘SM¦1Q5¤2c<‘RK`ày3H§ÔŠ®ò}²,ÜV{‡R¸ª'x'xÁ4qµÄdÈ2£ ê{{).#,Ëô464e˜sØT3@ÉŸ”•öê*´Ö²Äçä8ªÓZËýÓŠŒùÿ( Ï4Õ‚Wpà{R-¼¬¤ì?•E$†=»Ðí=ý)¯ ª›Š>”É`‘W%pÊHü* 9¨1Í8CpaŽUBZ» •Ó[­À\£Ò¯Akp!IÀÈ'Š»k?Ÿ†8Æ@À÷5±bÆkyäŠ0[p{Ö­³n·šX”ކ³¦|’F—ÈÀRÍXÍÌåF[ž„°ã•e¶<àd”)?Ž)u(­„P|Þf@ÁlR]D|¨ÎKLÓo" žRqŸNôI°…d¨ØIïMtÌ×Q"~æ1ßvÆdRÅŽ­kèw¦àçã­iiS"† y5}Y” Öʲ°ùqZ@« ©¥¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢–’ŠJZ)i*†Õ$›G â¸ðŸ»§Τýßʆ„‚¬èÝiáaËèE<'Ì:©ìiؘ 33/bEHÉ9\ÈÅ€èXT…e#2e‡lŠc†B¤çiÿ¾j)£ všŠEhÛæi¥Uh‹|Ÿ#sÅ:šÜãoÈy§C;AGËQ³O$ÒHñ·gpõ­g³¹RÒ¸ˆŽ9«‘Ko8f¬~Æ¥3`×øºb£–õPâ¥2K±a0Àw©Vö#€AÜ=jhµ{vÇšÏ5,z„ ĪsíJב¯;H§ŠyÕí#û=N8ê6©Ò3ZoÛ-æ(vçø‡"jvS©GBªßÞå½´™v2àQQùzzc%NOLæ¡[-%%Õ‰< çô¨Å¦œ¤ÊÄš|wÖFO%eö=*ê^X¦-Φ*Ìw‡£ŒŽÕ^`ÒEl¥•Ô÷ªîÍÜéj¹,ƒ…?ÅëPœÇ,©$0ô÷ªÉæ cÁÏ~kŸžŠc€Žp3X“DñÈRE ƒŒšG&7Aà±?LñBœ0îiÊßtg ¨æ‘RÒEˆÑ¾¼Ñ+¿/Þ^1õ¤™Àû½¸©4â‘’—*ÇÓÖ¬éÌ©&'&îµcNÁm³tÝÅiÛ¢Á1U# sùó] ´ko+ d“ŒúÖŰ1LþµhõÍZ>Õg9éE%%%RÑEQEQEQEQEQEQEP;Ô Æ6ý9®IÒHþô|{Šç3†N>”å-Œˆœö[ÊžŒÁ~ã¡Å9X…û„ý *¿<úf•'e?+H=FiÉ9S÷Ÿ™ ÇþÓsI#ïàóŸïI?Ÿ©¤ÄØÉÃàÓV8˜`œ7lSU#aƒÁíMØÿ>Ol8 FÇ~c¥"ÆÇ8Ò”DÉ`§ØQå³ì)Æ%Eùš‘ðÃwÅFåOð¨_â›å–äú) ~îi$ô¨DdßÒØ=1Fpz 6G 7 0 <žjxåÛÊÈxÀÉäóS,«¼Œ nÎ3õ®ra ¸Áã§ãÍS;€Ü8luª$·8ÈïšÓÓ’KG,ò>þçµ>Þâx&$¬×5-µÌðÌJÙ`#*Oj³{3¸îÇ+š³{+8 àd çVéŽÅ qüê±8PÕT¶Ï›§VÞ ÿË9%,i‰‡pî³ScÝéš¾é%»¡$80>£¥\¸I-Š“Ê¸Þ Z™^ߌ«ô­HU$PÌa‚ oé¥'´F ^õµfRkdr2Gz˜ñÒ®UŽ;QEQE%RÑEQEQE-RQKE”´QIU#s2‚¨~áX&Oµ¯î­Ô?|ÏáYe¾Ð„¤@sÎJ…åT'ÌBÝ7È5IÿvH‘^ëŽ To‘°á“ð⌇ 1Ïc³¦ym!Xw=°†›å3Ÿ•Yl Q!S‡GïŠiÝl•OûCÜ´m¶DaìEHH¿!ÛŠ•v:ü§T‹±×å<ŽÔÚI;Fz(GhÉ#h>¤R£˜ÉÆ?B]Žâ=O˜ÌîI<ýx¨Ù˜“M9íúw¦iŒi3Œ÷=…¯µ8¨Øºß1>‡‘HFxniäṦNÒ[£–) äNxdEbP•lw¥xdT*Wås×5–C~uà*²°¦]ÄÐN±·@ ç𨮢›Ë`@ œÔï+O7îW ÷4Å ÇåLýi¨Ê™úÕ”BžH••9¦”nã4ævQŸ1GëO9ÆwO ¨Îà*žwO‘68=zLQ¸ŸÞ`ûô¦*–<>>½ :i *üêÌß7ËD‘ºïýÚ$ÐúŸjÉ»¾–)É ¹¦Ç,‘IÆ3îj4¸xäéùÕÆ¶’kH.>FLeˆíVîìehRáJÉPI¥Yºµ‘¢ŽbAÉ`zRÁæ·ä>Ô$þµO+C!FÚ¤€8ëL‰äx[i î)!ÉœàçoëQŒ‚UŽED ræœÅH)Œdüµ* Œ®àGCÚ ®ïC§±§yˆ÷.;ÑäÊ©¸`ZšÊ –”• Û­YÓm®Zp72‚~µoO†àÉŒ°·ã*©ê;×QeEV9 uÅo !@<‘C«¤6Üu÷§úâ”ç¶-RÑEQEQEQERÒQIERÑKE”Ç8¡¹,±§­2Fe)¬ëÑ ˜ïÆ “Šç5Œ\°(Fáœô¬;È¢óÊm*[j¿Ù§‹'νÀɨÄj$@dCè3P›IâU`¥Ôú ÒÇ–rU@uùˆŒs’ƒk/QœR#–Œí#‚3Š–8¥ÝòÄÏžýªXmîgo–'“ß­K77Üg>¦žÐ\+ónHõVcû6ö.¶ùœ©éS}Šé:ÅŸpiÉkrÃ9?Ú§¦‘zÃ< >¦œºuÓp£ÞŸöiA•DÇ=jeÒ¦ƒ*,ã=œÔ«a$8idöª<›‚Ù°QéTï’Kˆí ¨íU.÷»þî zU¡v]«»vîG¥W[yÊ=B¶ò·Ê Ï¥HöÓædzóM’ÙÐÈ~´É-œ•9õ¨â/ˆKŸ- w§Û\€‹ydä¨=jK[,,NçaäŠØœ¡SKäœ|ÀóšÑ¾¶žd0(€‘È<нv À8€ˆã‘Ö Ž?Þ¿@wu¬Á—àõª dž´ÉÕdfù]X*­7äÜYŽ f9<6qR\< Ç“»"®¼öñZ4;rÌÞ*ä³C02ÌAÝM‹P’6òÀOSI©4XŽ7Ú¸ëŽh‹Q‘DàV” + —Ü8ê+bÂI¥]Í!­iÚÉ$‹¸¾ìö5chÁ½jðsš°1ŽN)©,NÇSŽ=)HÎq"“õ 2ŽãOô ý 8z~†”sЃô£ëE-9£µ%FÎà|©º¡iÜgd{±Q´ƒµ7v¨^w(Ê~Gôê*¤·²˜²@=*n˜ÆÜmaRÀÅ—æ9ã½Y²‘äˆ9úÔ¶î]Acž*Z±RÑE”QKE¬ñî^Oqèj½•Äw‰T‚Ý ÔVò¥ÌBD ç·½9¢I̹¥šÎßs®Z‰-¢•ƒ2óëUdq ·Že<æÖáÅ´ŽÀGÕ#3ÛÈÂfQØŽ*+t…ZY– Žçݽé¢(T4©o~[¿?JbÅ ‚ñÆ7I“Ååã.‘ä°þÓŽ:Ó"¿kPâ2wÿtŽ)±^ªõÏÝ5d^ƒ,«'u­í0m‘ÃF²Êçµ\ûj˜Uƒ(làŒÒµôÆýíÜ(ÍI&«gçÌÞØåPdæœ÷öè3¿{c¢óQµù*J@峚«ý¸I>]«0íÏ5ö¦N>• ÅÍÂ(P¡wu>•Fêòå]›Žyôªws+•*<Öm´ ò’¿795UY ã×^?2BXÒHÊÄês¿îòxÅ^…q ó2XŽýÅ]‰sÏË{Õ;ÈÌXÇ A9üj•Ì*T æ©OïU^2*ò#FhÏ,Œ{“ÅlÂé‡$lyTaÏ©éZˆÊºIG9!p~½ªµº»¸ •k r3ž=+%IÈÁªÆC4äõpçëUÉ&Bzš®Xï'Þ¥y D³u-ò*g%ãY^•+’È®2IJb\Ëj!÷†ED‡çæ¶l¥.§lÖö—3ƒÓŠÚÓ¥m •¢ÖÐä ÷¤9=+ò),®ÞPs­ÂúV§Û\yŠ~WíYWQÉo6xÚüRÅ{ºA°O¥Cë£oŒ°Ï\R%Û)Êz´·MŽ~mÝXT—1.ÔË|Ä`œÒÇ>À ”Ÿ^”û{펙ØÞý)aºù‚¸ùMXܸá€Ï@kL2ùyF5p·‚0j9VI†í#¹<¯u—I…]¬¼dž ChÇ¡b…ÛçôíQÌßg +ÆJŽ88ÍS¹Û7Êm¹ã­WœGn»Ìd ðA«öóI5¼rDw#«r Ok9‘UðHìªpjx&2"8ävI-¹Úòù›”`¯ZK‰,¤—|žf@å:Óf’ÙÛsî$uÛd\¹Œ•F<¨cí³åPœaª$ŒÌGv¡=ê[«¥·ŠE*DËÞÿ­O{v–ë$ ¹dÁ-ž=ÿZšîé-ÃÆú³œþ—oxoYØ–Îìè+?íFᑉ#¨¥Q[Ÿ5‘Ù=x­s w‰I½½jýÔþdPÄÞqWn&Þ¨ƒ¦2ÔÕ$ÀΩ?­Jºš¢°kt`zà`þu ¿D º%>àsVãx–ÔM/°;zÖ­ºÅ"î¢6Pøôõ­Ö(“Î[ â³'ˆ¤OHdÜ{{V Ü ŠÌ£|ròÒ±n¡e±º7ïT,!d¾Þ˜Æàuöª¶€ ‚ØSÓ½W³fÜ ‹Û½k?ïY¥Ï'¥^oÞ,“}8«§ç(é*Ráwüعüi#rY¶ñDNKc¥TŽ5I¦(1¸äŸZ„’È9&¡@©#ã€O&‘$¾`ä ÄBEK¿grã¶p}ñO…ü‚Xq€pj¾vEä÷üsP) Ù9$Ô@‚Ùl‘W„ɵUO$r*廀ÁWœö«°È´ ÎÀOº^c^Ç­Až8§HÆ3ƒýê|ЉWŠûŠ{ c8÷ªÌÆ2Ä&~\÷ª[Ü9ò¼ÂtÏzªÑÎùMçhéš¡’6.äGz¥-´±ÈZBH5^H]dgrNjÞ¢-†<°ßJϺ¹q³?J¡ur"+š¨—òIäB½zU>B¤ª6=ª¹¹r™DjÚÑ ‘`3ÈÇ3vzWK¡ÛI¯™+ß`…þï½¥@ñÛîr~nqZ¥Wi°(-Š:UK¨ž@Å ƒÀ=ê…ôNêÅ #{Õ[¸Ý‘¶“Ó±¬[{¿+ \«'óÞ±mnJ0Œ¾×SŽk2Þà¯Ë¿ 9­›c,K08ç"·- ’`¹úŠÔ€³à’>¢¨rÊ.#*qüYÆ}k!£i`3(\§Ž3Y̆HÌ댎 Î)Ig”¬!÷7@§­UHžy6Ä®Íßoj®¨ó1HÃßmWÔahà ù½¨ž·`…X8õâ›4O ÝVí-ä6KªY’¬Ý+RÒIÞÛ˸ÞÉ ãqÉ¥nexDSneqÆOJllÉ$2„Ã##¨Ì‹ Û[ ÎFá֩ɲ9@s·sÞ¬´dÈpŒ9ÀïV¶ D î}ªÀ’ÌŸ8 ;f™´8푊¦Ì®å”ãÐãUˆgÈ8ô8¡aa [¥I¤’ɵ@$÷4ø­žI1Ù©Í›*0y ü;­Z}¢üòªƒÔôÌ&ÀöªÎ¢Ö#6b ¸ªÄ›;gµ‘÷Dø)Š‹q·‰­¤mÑ“•5cÌTF‰T©ØÔÒ\¬v­© ö4ù' jñ©Î:Vî( ^Ölz»gsYùvçï{Ónï‰;!ˆKÈWb:S5-HJÁ"ˆ1ÏQL½½Gr;Ó#ºž+µFËG˜ŒSluY© Ñ«/vSm53dPW×*ü¶ÌÅÙ0ÄukVçO‚ï—\pE_žÊŒ3Žj¬°ØÀûFÇ%3Î+6ëO±· ‡ {©5Jk+8ˆ ©=Æiñª|¸ÑsëÍ"[£‚`‰{“Í*ħ&$U\u4þVÕVÝêò%HöÆ aÅ8‡ªƒç”ÇRßuñQùEFX1÷ U%¶p¥˜1Ç9 P¼,99úæLc?7ξ¹äS#¾hN×ï¯qL[Ÿ/åo›Þœ—+!ÀùN{ÔñjÍ&Áòz–;¸ä}£ƒïSÊ㊶W?ãSöýj¥ÎBŸ¥fj.Žˆ§Î*•ÙVT^œõ©£_ݪ‚0*ìò‘T¯֬nj⥌T¤¬|$ña‘"œÍr’ƪØò3ÎkH“vÑ’õÍR¶Š[eu Ëoãy{T–ñ¼°3FÛZ#‚ê;S­ãv„²6=êå½¹‹|€±ð}êhíÖ<Ãß#i©c€gåFza¸©^Ò_´dÎwŠI4ÉR@~ë·©È4>Ÿ"Iv±õ9Ƕ¾hš0έž 6Wò¤{kõŒ®dEìw|´ox##s(ìKqVmtÔŽ5glÉ·æ=i[ip¬hÒeÜòyã5v Õ¿ÌØÉ=ªÞ1•a}-ì‚ÝIŸAÒ–æO%B/VôíP=̺ÆYšGþäÖtw¤Ê™^fè©Çw˜G g“ÐTÊ d²7Q×­jE»+H‡ž ŽkB4f*νzƒN(€±r:qVîòS Èã½=ã‹c-xäqÞ²bís–ƒöÅrСº,Ò~ñ¥`G¹.ïËÁ"¦Ž-î£'~ž^éãµ"źN*R2„÷sRûž½*B?sž˜â ±°Ãp`N? Ž& yÈŽ=ê̶²<åüà‘ñÐsZóèí%Çœg ÈÖœÚhk†•¥ÂÔ\ÂÑÉó/¿5[U²–.cèsÚ«jV¢5Y"ù“¥CäÆb,Û°Àõõ¨ìí£h$–]Ç`o¨ô¤¶…<§‘Ü㱨ãHçjÔ WÔZYAD1 8\ é’A„Ø àbš¯1˜7™òwËrÒñß4øçf“—Šюâ-I#ÐV¤7ÖÊ¿y‰ïWc¹„¼Iö28uÊçñ«‘Ȳ.åΨ«*áÆFqKN¥¨å;PóÜU;·ò] ê* †òX2ñšlW+)ã§sOµ¼IÇËÛ®ia¹YGCDʤ¸ô_Qà‘'åP݈Èãë6GU”)9À¬)¥ !ü«*YvÉס«ú¤!Y%Ü»O­iéúÚ*yw†ÕÛ=Q6ùräÓ¯¥ˆÄH±¯ÔúœøP‡Æ2Ç8¦ÛXÛÚ9h=[½HCš‘%R éR 2äf¡¸ºc8gϦj+«440ˆéô¨g—ÌVŽ3ŒŒôªzj´NѾX:õ=Ídi±µ­Ô°J7evóÜöª(Ð\K ŒîïV!ÎÍÅpA!¾´È“€ÝÎxüiy’x¨åV%ˆ • Ò0cƒ€EEr„8•PTpy‰PNM64ãð95b)Z—˜£8çµnZ\¤:X–á¾PHúô­hnDV $Ç ð*ž ¦*²KC äg55Ä[`6V‡s?$ŸJ’hÿqökcËu>Õ›qi<`àéXóÙKnpì «2[G„üÒ Ól·$w¤Œí`[·z#;['š¼$‰\ëŽqÞ®ù±FÈÑýá×êØ–4e*yqS[\yû€n­lXÝ ˜²aýkBÚq2d.1Û51l„ãÒ¥yÕN6’}¹©Z@0 ­<6Ær2k?R•¤E+îj¥ë–UeŒŒw5”×ÒÅwµg«.+™ rc\6y5ŸÌ‘å¯9«P<²Ä^R7g¥:IEó\üÄþTçweÞÇ$ö¦HcÞIuÝýÑUV$–ôT…bNr}ª«ßZ[É’”×µ>+«{bÕóàšU»·€’@ó1Þ¦² ¾IW$gŽÜU½82Jv³7§j·e5*Xô­µåAÆ+¢BJ‚x­…$¨Í---5—pëŠdŠ`ñïMu 1Y÷‘ˆÚ7àío¡é\ö¯†`FGlÖ6¥Ž@Àž3@‘ÒA"ã#¿µAkrðM½y=¸¨ín)r½ø4·q´Š®…r:†«Wje€:•Á99«J^0ÊAÉšl\ÃÉ Àò§¡ô¨c@bݧ8ÚzŽ50AçÒ¬#*íݯ\ÕÈvÅ‚ðžÖ­Eû° EŒ÷©’t'#ð­Ô Qƒ/¹inãÈS‘R9sÉÕaÙ|¼òT÷3 žH>•U“î·øÕ€OŸ%÷ýˆªÍ”)·ÔR¤Ewœ{Ô¶öžKgyÇp{Ó¡ƒÊçqÇzŽâ1ïC`d`™¨5+o(ý­(G¥C{—‹…8+LYÄŒœ†ù‰µœ$W˜:wäãÖª xú¿ZuÒnPÀõÕ½jß•‘y­O©ÃÑצFj È™+sÑ…g®Ô_Þ)ô5QHUÃ)ã4æHåEŠa…^ACþy©â1¼B•%•Á©£hÙ|¹¾èéXú…‹[? ŒöÏ"³om~ÎÆX›(Oò+6öÜÛ±–#òÒ–ËShð LÎ:>zÔ–š›B¹|ÞÌMKk©4`|‡©©šfc¹º±ëM–g‘‹±;9¦I39,IÉæŸ›ó¸ñD.I9¥‚L“š”®F)ííR7np*FÇn1L\±‘£~AƒÉ¥qBRO˜€Ò¡o,”~sNKÉ#;77¾ié¨OmÞÃëNKÙc;I58Ô•ÆÇ^½êÚë 8òæLä`°š’̦6ž({Xà¶c÷»ã4ÉÑ,ÁR¡˜ò{ã4’ª[‚ O5”.à­Ï§­U2RªyôöªæMàÁþ•¹-ßd*’KÁoîÓ’xc¶dŽ%óeà·÷iÂXÒˆ€HýZ¹é`‘e*Ü‚~÷­c´/æ`þu†ðHf!»žµ¿¢FcD¿ˆ“]‡áPÙl ½É®ƒFˆËcÜÖ𠌊èF1Ô[@£––Š(Æh=)“ijÆÑ7Fè} AymÜ ðCèj¨æ&‰øÏ úVP2[M²q§âËO¶W9‡#¸î+Xä¶œ¤£Ÿ_QR´±ñ½K+cªÄ1)Q(Ý8aíV!¸@Ud!àý*üB,~à&§Q]²ZíͺÆ@GQ[¬Ì¦ËŽàñ´zS.íå™×vN 6xžGÆÑKä>fü©£NV½ŸaH-¬r}…,pª‡r= ⥷³HÝìÇŠ|6Ë 30=‰© ©Ô(¤ AE--Ct"¡þ#ý*ž¬3iŒãuVÔFëv*µ·“`ŽsÞ±­`Û†àsœÖt„\äu«H¨ŠÜ¶óZÚƒ#Ú©y ­  ¾GÍ€*¬W{·#¡{©ëY^„’Tv=k:;ž‰$chõ« ¼ƒqžÆ­¬vàDû3ü,8hGi.66ßféPÞ[Ÿ!‘•v@¨/í(º+¡b ½¶d— Êzb²ZѶ|ɵÇLVo’ÆÜYÞ@#¦ H°Pœ“ü^”Œ¸ù={ÒÁÙúÓÚ2ŠUž9¥ †Â’sNT!¾Sšh~B±ùº Iî žœR;²Óm@–#šH[¿ZHXŒæ¯4FH™Ç;—ƒVʉ¸ÈëVЇRýS’&FT#TÆË(\T6I‚Õ»‰öŠr@äúñV'ï18$÷©e“æò@ªO*ä‘óçÒ¢R2Hü逎HªRÈòËÀ>P#§zg̯Â|¾µXÉÓä¨.•ÌŽs‘»å­A29f çžWž'.Äwp*k6hbß$˜ç¡© f†?Ê㱩­¡Œor¿ZÖ²Ô–;˜ÐŒÇ(ûÙï[f¢±Ü, t9ïZ¶7È·  8>õµþEoÇÖµºÑE§¥h¨å…&\8Ï¡EW»³†î-² чQQ\ÛEr›\sÙ½*‰Ó'ˆîp§±’Þ™IòîASØŠÍmÆBO{RYXGlÛ•˜8ûÞ†®iºZÙ0mÍ¿¸Ï­ÙY-¯ ÝÁéW«J®u¤¢Š(¢Š(¢­Êþëpê‡#éÞ«ßÃçZ°î9¨nãó `:õªS»&ÇPpÈ®ws#£÷[šÈ ÊÈHèpjò>à>\3Òº\´`mù1éZèÙM¸ãéMš%a’ ¼±G‘·#°¨n-UБ´U\(ž½ý«ÓfAÎGéYÌ»Ië‘N7 )‹Öö‰ySÆzƒüéÂá†cå W»b%Bæ1ŒûUiܬÀªœŽõVV"L*“Ž,hðãÎ\nà“OH]IÞ˜jU‰”ËÖ£ NN6÷0Xg‘éQ‚ÇŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(£¯Z(¦´yhDƒ®)’DzR€6íëZ–»B•Ü­;hÀVôm¸¤X•Tô¤XÕN@ÇÒ–ŸN£¥ÅBé 7^fÝÈÇ${×=«Û/|ð¹G9ükPƒÉ¹ó€Êž¢…¸‹Ì7£w Ò™ÜqȤSžAéI ÊÈ>”ÿ12H™'ïj’IÕZUæúSÚT.¬àžj;—Û/ØÀ'<àTÚ‡—5š5’ƒë´SïvÉn¿fQ×nz·½g[„a²@AëŸz© uÃTLªr3ÎOZ‚t%ÈQœv5À³£ó§Ái26v…ç銚ÞÚXòXùŠ–$NpR)[ÌddUÉÛ€}*-¬wz ˆ«qÚŸko¤kçÇ9à÷§.ÄÃH })Ê0\OLT×l~Âp¡²ÃÚ¥›xÓI^8Ü*YË WîoäT‘(}=QÀõ©í­Uôw–D—Þ¥†ý™æH£9ãÞ¢ŽáÓ G™ÁoîÕx¥xݼ˜Îò1‘Ú¡ŽFGÄI–=ý*Hd¹‚ä c~Ä󚻦Ü]ÃyåÍ’’‡µZ±šæ;’ògžÕ¥ÿë­ì÷ö­\ñš(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šcòvž•^á|Óå°àÔR¨“÷l0 S¸¶tºrú‘X×úiƒýT›—= Ö]å‹FAGÈÏqUo­gʨäœóÏJ­um*ª§§z†æ D@)9¤··—N¶Wby÷±ü5/‘>bŽ[‰~ö?†¤ò¥²¶\·ÔÔW«þŽÂ6ËÍWÚIÌo–ÅBr?Õœš]?+,Kýªî—f>Ò­*1}ïz³§À ÃÍF®kJùvDHF(98«:œ[7C°rqV/c vŠ£ Ms'îw<ñY)ÜɈ¶€IŸå4Ì| vÍI ©j\‚ùÎ3ŒñO¶–;VÍÒoùqÈéK¤$ý¡sØ{Tp$«04ûÆãÐÜGe$fÔ̲r=)ÖæUµdhLŠäíÀè)îÌmnä¦~cÑiŒ× å[NJ&AeÇaÅ)iG— ¤¢žH©þÓª±!DyûÝêõ´ñÆBª¢&~÷sVá’$À ¼{Ôw’ÇÑvsþª3×ûÆ«C9?òÍOëR^ì6øqò³«ìû >^ßZ“QÚm°ÃƒÒ°·;"Œ²ñø×7åþ첃•5‹ƒ³pê ]‹T†Ù!†X˜á~õnXê–ÑÀ‘ÌJ°ïÖ´íõhÑR\†¯Z½õ¤Ã†ü _Y­ç\¬€ƒVÖh'L«äÏ‚Si~ÄüÀzwSÒ°D­§_’z‚r¥f,†Îèƒøâ¥IÞmÄm9è W=ĬF2I5‘§à½êȽXaýã#?@«Úµ† l­›$o&0ª½Ei}¯ìÖÃ{.ìpg8i%ûD’þð‚ô#É4­4’üǧ°¬·i%•¦gùOaQ‹pàF;ŸZHˆFVÂæ• ƒ¶VÂŽõÄ&X\:œƒR –ÊpÏcڟݲ†Ï=ª« ¬7á•Y°:b‘âGÁf/­G"Ú̓·½vÖWGEQEQEQIE´QIEQE-QEQEQIEQEQEPzPh¤Dr^µ0ˆ—×4ØãT\õ¨¯bi­ÙSï/Ì=ÍC©[5Í›FŸy~aîjèZkfüËÈÏCå¥Ã$wzç-Ên0ÊÛàæ±`ÛÌr¦­ýžßÍ %ÏQéV¦Ò!ócu”“ƒV$ÓÊŽHWòYHä1ÝŠ¯k,°sµ°>ö*Y¢qüXíS<ŠÇräsšuÍÌsØl÷Í:i’LŸÆ‚ËמµŽ>nµ„WûÝ}êD¶R¥”'QÍH–Êà¹ÎñȦ)ën® ó»­dJòÉrW%TMg»;K€qƒT¤i°8Å[‘EÄ^[É÷½ELëæ!Vn¾Õ,ƒÍŒ£¾ÔÛ[o²—>a# SÒ‹xüüçÑimâ‡;Éôn{B"K†÷ò}QWe€ÃÌÃz·éVå‡Êda¸q[µÔVí-QEQEQEQEQEQERQE-QEQE%QEQEQKEQEgjšwÚq4@ ”tõ•¬iKt¾| GQëYú–ž'd@ _zË·¸’ÙùGF‡ ÔÖlÊs´ðFk*;™m˜«giàŒÕ§Ô“Ê*‘Žzœô©_PVˆªG‚zóR½úyEQ:÷ªQˆï.v™°‹ÔQ[EÀîƒÈ¨íãK™0ίZÕ:L 0»ÄMl>o$!¡,¹­ÒáxÁˆœã­S6÷è0ìgÖ³šÆùÈΪkx €sÚ®iÚ`Œy·@4„ç•§¥è«Ý|îyÒ®Øikßq†sÎ*K£lyjGLb’ø ªÆ¤tÀ\”@@GLTð±"m ÜÍ8…ŒŠ/pj™&.¸Ç¡©…àšÜÇ"üÊr¤U—¿YìŒ2'ÎTŠ™îÖkc.ŠÕ®†µè¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š(¢ŠJ)k ÄÖìë‡~Àñ5®á§Ï¸î"°üEn̈ЩÏ|V<6W’Ã.Åm k>îH%eC…5“ÛÛJUOËÖ«$SÇ"áY=MWXçÚTú‘U Šâ9†U—×=ë¹²bÖ‘0Bó]͋ãiÚ3ï]µ³fã°ÍMš±š–‚3HzB21Qˆ†O9úÔÕrrsŸQÒ£òFNyªó[G'Þù[±ª“ÙG&CŒ;úÕimQÁÝòŸZ¥=®À\ä€:ŠÌ¸³Ø rTwJk]Ÿ7oQ[ÒÖÕ-QEQEQEQE”QEQE´QEQEQE%QEQEQKE”RÑE% ¨ãçPE5Ñ\a×4ŒŠß}r)U  TEAµhTTR@Õ´S¨C#9âªÞÚ¤áWËž* ›t”¨Ø89⦇ˆÀn*Ìcb… ŽÕ2.¸ŸN§QEQE5‘]J²äR2«Œ:æ‘•X`ŒÒÓaM¹^˜¦˜"1˜ö‚¾”†$+°®AíN§Ó©h¢Š(¢Š)(¢Š(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¤¢Š(¢Š(¥¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š(¢ŠJ(¥¢ŠÌÔud¶f‚?š@9>••ªëÚ—‚#ºLrsÒ¨jœváãC—éŸJÒ­Z¿Gz(¥¢Š(¢Š(£ð¢Š(¢Š(¢Š)(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢–Š(¢Š(¥¤¢’–Š)(¢–Š(¢Š(¢Š(¨å$/{ÔWì Zd¤éï\ýæ™$³—ˆ–-ÉÈ®b÷O’I™âËäæ°nìåfBNy¯ÿÙÿØÿÀððÿÚ ?èë¢®ŽŠ)(¢–ŠZ(¤¤¢Š(¢–Š(¢ŠJ(¥¢Š(¢’Š)h¥¤¢ŠZ)(¢–Š(¢Š(¢Š(¤¢ŠZ(¢’Š)h¤¤¤¢ŠZ)h¥¢Š)(¢–ŠJJ(¢’–ŠZJZ)h¢Š(¤¤¢Š(¥¥¢’’Š)h¥¢Š(¢Š(¢Š(¢Š)(¢–Š)(¢–Š(¢Š(¢’Š)h¢Š(¢Š)(¤¢ŠZZ(¢ŠJJ)ih¤¢Š(¢Š(¥¢Š(¢’’Š(¢–Š)(¢ŠZ(¢Š)(¥¥¢’Š)h¢ŠJ(¥¢ŠJ(¥ïEQEQE”QKIE%-´QE%QE%QKE”RÑE%RÑE´QIE%-´QE%RÑIIE-QKE%RÑEQEQEQE”QEQEQE-”QKIE´QIE%-QE”QERÑKIE%QE´´RQE”QKE-RRQKERÑIIE-RRÑKE%%´RQKKEQIE´”QKEQE%RÑIIE´RÑE%QIE´QIE--”QE%QEQEQKE-QIE´QERQE-RQE-RQE-QEQE%RÑIE´”RQE´RÒQERQE-RQEQE-´””QKIEQE´RÑE”QKE”QKEQIERQKKEQIE´”QEQE´RRQEQEQEQEQE´QIKE-%”QKEQEQIE´´RRQEQEQE--RQEQERÑEQIE´QIEQIEQE-RQE´RÒQIE´QIEQE´RÒQIEQE´RÑE%%´´QIEQIKEQKIE%-´QIEQIE´´QIE´QIIEQEQE´´RQE”QEQE--RQIE´´QIEQIKEQERÒQIERÑERÑE%QE´QE%”´QIE--””QEQEQKE”RRÑKIERÑE%RÑERÑE%%´´RRQKKE”RQE-RQE-RRÑEQIE-RQE--RQEÔ.“îi¨\O¹¡A“šu-QEQEQKE”´QERQEQKE”RÒÑEƒ­'zJZ(¢Š(¥¢ŠJZ(¤¢ŠZ)h¢ŠJ(¢Š(¢’Š(¢Š)h¢ŠJ( tçš;Rv¥¢Š(¢Š(¢Š(¢Š(¥¢–’ŠJ(¢–Š)(¥¢Š(¢’Š)h¢’Š)ih¢’Š(¢ŠZJ))h¥¢’’ŠZZ)(¢–’ŠJ(¢–Š)(¥¢ŠJ(¢Š(¥¢Š(¢’Š(¢ŠZ)i(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š)ih¢’Š(¢ŠZ))(¢–Š)(¢–Š(¢Š(¢’Š(¢ŠZ(¤¢Š)(¢Š(¥¢Š(¥¢ŠJ)h¢’Š)h¢’Š(¢ŠZ(¢Š)(¢––ŠJJ(¢ŠZZ(¤¢ŠZ(¤¢ŠZ))(¢Š(¢Š(¤¥¢–ŠZ(¤¢’–Š))(¢Š(¥¢Š(¢ŠZ(¤¥¢ŠJ)h¢’–Š)(¢Š)ih¤¤¢Š(¥¥ t¤¤¢Š(¥¢ŠJ(¢–Š(¢ŠJJ(¥¢Š(¥¢ŠJ)ih¤¤¢–ŠJJ(¢Š(¢–Š(¢Š(¢’Š(¢ŠZ(¢Š(¥¢Š(¢Š(¢–Š(¢ŠJ(¢Š(¢’Š)ih¢’Š(¢Š(¤¢Š(¢––ŠJ(¥¤¢’Š(¢’Š)h¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¥¥¢ŠJ(¥¢ŠJ(¢Š(¢’–ŠZ(¤¤¢Š(¢Š(¢“¥Å´QIÒ‚@£4QEQKEQEQE´QERQEQKE-%QE%-QE-%QE´QEQEQIIE´RÒQEQKE”RRÑKIE%ÊÅOz©î)…Ao”})ã§'5&8Áüéý&–Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š(¥¢’’Š(¤¢ŠZZZ(¢ŠJJ(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š)(¦2ñyÍRcž)Ü÷¢–Š(¢Š(¢Š(¢Š(¥¢Š(¢Š(¢–Š(¥¢ŠJ)(¢––ŠJJ(¢ŠZZ))(¢Š)h¢’Š(¢Š)h¥¢ŠJ))h¥¢’Š(¢Š)2)¥¢Š(¢Š(¥¢ŠJ(¢Š( ¢Š(¥¢Š(¢Š)h¢Š)i(¢–ŠJJ)ih¢Š(¤¢Š(¢–ŠJJ(¢Š(¢––ŠJ(¥¢ŠJJ(¢Š(íQC •C®F ‘dMêN"™†\¯"žXîÆÜûÔ„ûqëO'ŽŸ<E‘\ü§4èiiÔ´QEUÊÓ˜¼§ Àõª‰¨Äò´Jæ áOz®—±»•‡à÷¨aÔ¯ÌÅå£p‡¹ªöÚ©–üÛM”§î桃Q2Ý4À~é=ëDûVžj½ÛŠ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¥¥¢ŠJ)(¢––Š)(¤¢Š(¢–Š(¢ŠJ(¢–³´¦ûM²ÎÊS(öªZS-Þ=€p=꥓`ÈSŒ}jËK¼€ŽO^piòÈEQ e=Á#8g =æ¤A·µ*å^pzSÐ`ííOíRŠ}E4¸CÏ| ÕkÙÌq‘`úœT7”Oóß½THwN'g!»ZÈ‚"×"gfÊõµBó?˜Ìr*X¼‰gRûw¯@zÕëCo5Ày1æ/ÝÏZ³oäÉ.óã¦jçò­/¥\íÅ%RÑE%RÑERÑKERQE-RQERRÑKERQIE´QERRÑKE””QKE”RÑY©8MI ` ãA.R;E|‚1÷TÕA:¤ÇÝ#Þ«\4sÌ<°Cˆ²}‰9¬kùcšThIÞ'Øæ³®äI%wmýjÌz’$H“)  ôõ«öÚ¼f8„À«•õ«jž`ÁèÆ´Ò@v:¿ãZ‘MÜG*¿¶jòIœ#†ö¥Àä`SÊŒƒÚœ@Æ09¦˜ÔöÅDÖ±vàTf>ÕCP‡ìì·‘ íYš•¿Ù^[°FNT¯bû3 ˜Ž6ðA«Q^Bñ#™ 85~ßP‚XQžE‡&­Eu"±qÈ©VD¸Á¾•a%ŽO¸Á¾•*º¿Ý`~”êu:–Š)(¢–Š(¢Š(¥¢ŠJ(¥¢–’ŠJZ(¢Š)(¥¥¢Š(¢’ŠJZ(¢Š(¢–’Š(¢’ŠÇ·i Û<°TŒžõÍélò\(6m8ɬ[6i%`TmÇõ¨Äe[~B­E*…ÁAö>õ«´îéP´rNd‹*ÇsQD¯*JwmÁ¨ÑEu ¼Ôv‚To•™p{Ò‘VHH…—Ö˜‚HpÈJþ5¿e?ÚmÕÉùÇ õ®—LºûeŠHN\pÿZÞ±¸6ªùç¡©êÕOQΉ÷“iÍEt¹‚MÇ ´çjŽáA‰÷.Ó\ô+5´¦(FáÃpãé\ŪΒ˜¢»æÃeGòÓ2yéZ:\ò˲¨Œž‚´´›·Q‚a'Uû † ʨRZÒGG+gØVÄrÇ*å8ê+A|§>Ô´êZ(¢–Š)(¢–Š(¢Š)h¢Š(¤¢’–––’’ŠZZ))(¢–Š)(¥¢ŠJ(¥¢ŠJZ(¤¬x¡T Í'¸“\Ô6Ê„9“ƒü#­cE¡ ¿¯oZj¨{—0±¦yJò1E¯cL‡r@¯\Ы+K˜dòßéKl²™˜DûXJXÌŒ°M2Ky ˆ¼­’íœÉâu±FÂfÉ'#Ž´\Bñ§ÎÃ=iúeãÇ2ÂÈ\H26Ž•.‘tö¯åˤŸÝŠ“N¸hÊ(X7< Ó‘Œ Ç±Ô·CŠ×–S24~Tˆç¦EhÈþjêÇ‘ÇZ­¾æ+$^j~u›$×ð’³Beˆ{f©´·Hq$eÓ§­8‰/"Äcɹ©!_DV5SNŒIu ™¦ÙÄ#;‹lÎN=ê->&rìJÅžqÞ™i9bpœf™m:Ýß:D…cO˜ûš’Êáou)<•+ r}Í:Öu¹½(rO¹­<‚¶8è+D QE”QKEQERÑE%´QEQKE%%RÑE%RÑEQIEQKKEQIITç[xß1#Ïjͼ†ÚÝDjénÕNâ8bC*TàE7Ò4<(O¹ª0¢›‰^ºF>µV5S4ùOCNdò¦æ˜Ãì÷AÔôëMÇ“9`x–èù±‚pH=3‘Y°Xôæ’y7ª“ÖªÃ,¶ÄìÝÆOj¯äöá•sÆOlÔ1ÝKvÙïéZvÚ‚ÊË©WéÏC[:ÂNÉ !Y¥k©$åca†õ‰-Ë2´Qn&­i6¢yIÜíòçÐVÎh ¶yþñÎáZzE¿“nÎOÌçšÐ­J½EQEQE%RÑEQEQE-´”””RÑEQE-QE”´RÑE”QE”µÄÉ;JLŒÄžzšá%ä}ìÄ“Ï&¹ ®˜»19éW´{ÅJ®ß/5sK¼hTvàä~5kL»(Fn1úÖĨ¿2íýjýÈ\8#–éW§ ž­Uâ$NÜd…8ªjÌŽN9« œõÆ)£“üDôæœc lòN¥d5sÆêŒœH¡IÆM$*VDu$ “Þ’$Û +œõ´aˆÿzÃ#Ÿ¯¥nB·+éœ ‡ zžÕ«˜GºF/ zÕK¸¦É’lú÷íY:”$™fÚºsY×ðÎß<˜Úz ÒYZ·à'ó§i:sNìÏÂÖ—N±ÞrÝ+M@ ŒJè‘U"®í[*¨p)iihühÈïGJ(¢–Š(¢Š(¢Š)h¢’Š(¢ŠZ(¢Š(¢–’ŠJZ(¤¢–Š)(¢Š(¢–ŠZJâ¯`òãXÔäçç>õÁ\C±UG$u5ÇÞ@jyïU4LTñP d`AæªÀ¬’žõØpûwqòŒþUÒ²ù’('î€qøWLFù=—qÀ9ªrƒæFªÈþzsN-¼…ÃKà/÷iIó• ÛI0o%f=ûÔ©k-Çîâ|d‚}¨X$—ˆß«ô¨îodü…ª ýâ)Ú…ûÜbÜgä8=H¢òõæýÊçå Z¹ q4©æ±wpÒzqSÙ$2\ ™ŒŽÁFÒÝ8©í–7™D¬Y›Ò®¬a§LVÄPwúzV”q(À§+vî½æ¤Gçie-è4ål¤ßZ}>UÞé°Ë€3š¡&¢±ÌQãƒÀóUžð#éÀ=iú'ºÈ¾3Èâ¬E}Ò˜b$¸äñOK¸¤”Ä„î<Ž*Ã2§Þ⥒T…wHqR»ª_Š8#=E8À9€r8<(¥¥¢Š)h¢’Š(¢Š)h¢’ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š(¢¿ÿÙÿØÿÀððÿÚ ?èë£®ŽŠJJ)ih¢Š)(¢–’Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¢ŠJJ)h¢’–ŠZJ(¥¢ŠJ(¥¢Š(¤¢Š(¢–’Š)h¢Š(¢Š)(¢–Š)(¢–Š(¢ŠJ(¥¢Š(¢’ŠJZ)h¢Š(¢Š(¤¢’Š)ih¢’Š)h¢’ŠJZ)i(¢ŠJJ)ih¢ŠZ(¢Š)(¢–Š)(¢–Š(¢’Š)i(¢Š(¢Š)h¤¤¢––Š)(¢Š(¥¢Š(¤¤¢Š(¢Š(¢Š)i)h¥¤¢Š)(¢–ŠZ(¢’Š(¢ŠZ(¢Š)(¢–ŠJ(¥¤¢ŠZ(¢Š(¢ŠJ(¥¢ŠJJJ)iih¢Š(¤¢ŠZ))(¥¥¢’Š(¢ŠZJ(¢Š)h¢’Š(¢Š(¢–ŠJ(¥¤¢’–ŠZ(¢’Š)h¢’Š(¢Š_­QE”QKEQE%RÑIE´”QE”´RÑEQEQE”QKIE%-´QEQIE%RÑEQEQKEQE%RÑEQE””QE´´QE”QKE””RÒÑIE´QERRQKERÑE%QE´QE”QE%´QEQKEQEQIE´QE”QKIE´RRQKERÑE%RÑEQERQEQKEQE%”QKKE”QKIIŠJZZ(¢Š))h¥¤¢Š(¤¥¢–’ŠJ(¥¥¢’Š)i(¢–ŠJ(¥¤¢Š(¢–Š)(¤¥¢ŠJ)ih¢’Š)h¢’Š)h¢’Š(¢Š(¢–Š(¢ŠJ(¥¢’’ŠZ(¤¢ŠZZ))(¥¥¢ŠJ(¢Š(¢Š(¤¢ŠZ(¢–Š)(¢–Š(¢’’ŠZZ)(¢ŠJ)ih¢Š(¤¢Š(¤¢ŠZZ(¤¢ŠZ(¤¢’Š(¥¢–’ŠJ(¥¥¢’’’Š)iih¤¤¢Š(¥¢ŠJ(¥¥¢ŠJ)(¢–Š(¢Š)h¢’Š)h¢’ŠJZ)h¢Š(¢Š(¢Š(¢’Š(¢ŠZJ(¥¢ŠJ(¥¢’Š)h¢ŠJ(¢Š)h¤¢ŠZJ))h¥¤¢’–Š(¢ŠJ(¥¢–Š)(¢–’Š(¢ŠZ(¢Š(¢ŠJ)(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š)(¢––Š(¢ŠJ(¥¢’’ŠZ(¢Š)(¢–Š(¢Š)h¢’ŠJ(¢Š(¢Š(¢Š(¢Š)h¢ŠZ))(¥¥¢’’Š)h¥¤¢Š(¢–ŠJJ(¥¢–’Š)h¢Š(¤¢ŠZ))(¥¥¢’ŠJ))h¢ŠZ(¤¥¢Š))i)i)h¥¢Š)(¢Š(¢Š)h¢’ŠJ(¢Š(¢Š(¢–Š)(¢–Š))h¥¤¢’Š)h¢’–ŠZ(¢’Š)h¢’Š(¢’Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢ŠZ(¤¥¢Š(¥¤¢’Š(¥¢–Š(¢ŠJJ)h¢ŠZ(¢ŠJJ(¥¢–’ŠJZ)i(¢Š)(¢––ŠJJ)h¢Š(¢Š)(¢Š(¥¢ŠJZ(¤¢–Š)(¢––’Š)h¢ŠJJ)h¢Š(¤¢ŠZ(¢–“½%%--QE”QKKE%%QEQERÑIIE-´QIE-RQEQE-%”´RÑKE””QKEQE%QE-RQE´QE´QEQERQIEQEQKKE%%RÑERÒQIKE-%”QKEQE%-´”RQE-QKEQE%”RRÑKERQE-RRÑKIEQIERÑE%´QIKE-QIE%-´”RQEQE”QKEQKIߊ{RRÑE´QIKE”QKEQEQIEQE-RRRÑKIEQE-QE”´QIEQKKEQE%QE´QIEQIEQE-””RÑERÑEb–’Š(¢Š(¤¥¢–’Š)h¢’Š(¢Š(¢Š)(¢––ŠJJ)h¢’Š(¢ŠZ(¢Š(¢Š)h¤¤¢Š))h¥¤¢Š(¢ŠZ(¤¢Š(¥¢Š(¢’Š)h¢’Š)h¢’Š(¢Š(¤¥¥¥¤¤¢––ŠJJ)ih¢’ŠJ(¢Š)ih¤¤¢Š(¢–ŠZ(¤¤¢Š(¢ŠJ(¥¢ŠJ)iii(¢Š(¢ŠJZ(¤¢Š(¢Š)h¢’Š(¢Š(¢ŠZ)h¢ŠJ(¢Š(¢Š(¤¢Š(¢–Š)(¢––Š)(¢Š)(¢––ŠJJ(¢Š(¢Š(¢Š)h¢Š)))ih¢Š)(¢Š)h¢’Š)ih¢Š(¢ŠJ(¢Š)h¢’’ŠZ(¤¥¢ŠJ)ih¢’Š(¢ŠZ(¢ŠJJ(¥¢ŠJ(¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢Š)h¥¤¢’Š(¥¢–Š(¤¢’–ŠZ(¢’ŠJZ(¤¢ŠZ)h¢ŠJ)(¢–Š))h¥¢Š)(¤¢Š(¢Š(¢Š(¢Š)h¢’Š(¢ŠZ)i(¢Š)(¢–Š(¥¢ŠJ)(¢Š(¢Š)h¢’–ŠZJ(¢ŠJ(¥¢Š)h¢Š(¢Š(¢ŠJ(¢ŠJ(¢Š(¢Š(¢ŠZ(¤¢Š(¢ŠL€y¤È­ã­´RÑEQE-RQEQKE”QERÒÑE%QE%QKE”RÑE%RÑE´QIE%-RQE-´”RQE--&sÅ%%üÝ ¢ŠZ(¢Š(¢Š(¥¤Í”´QEQKE”QKE”QKE”´RÒQE”QKEQKE%RÒQIKE-%”QERÑE%RÑE%‡ž´hëE¨¢Š)ih¢’–’ŠJ(¢Š;ÑKEQEQEQE-RQERÒÑIIE´QE´”QE”QKE”´QIE´QIEQE”u¢ƒÛQÞ–ŠZ(¢ŠZJ(¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢’–ŠZJ(¢Š(¢’Š)h¢’Š(¢ŠZ(¤¢Š)i)i)i(¢––ŠJ(¢’š…±óõíMBÛ~~¹¤\àg­:KEQEQKE”QKE-%%%´QEQERÒÑIIE´QERQEQEQEQERÒÑE%QEQIEQEQE”RÑE%-QGj)>´gÖŠZ(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š)ih¤¤¢Š(¥¢Š(¢Š(¢Š))h¥¤¢’Š(¢ŠZ+ÿÙÿØÿÀððÿÚ ?èë£®ŽŠ(¢’Š)h¢’Š)h¢Š(¢’ŠJZ)h¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¤¢ŠZJ(¥¢ŠJ(¢Š(¢ŠZ(¢Š(¢Š(¤¢ŠZJ))h¥¢Š(¢ŠJ(¥¢ŠJ(¥¢’’ŠZ(¢–Š)(¢Š(¥¢ŠJ(¥¢Š(¢’ŠJ(¥¢Š(¢ŠZ(¤¢’Š)ih¢’Š)h¢Š(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š)h¢’ŠJ(¥¥¢’’ŠZZ(¤¢’Š(¢ŠZZ(¤¢ŠZ(¤¢’Š)ih¢Š))(¥¢Š)h¢’Š(¢ŠZ)(¢Š(¥¤¢’Š)ih¢Š(¢Š(¢ŠJ(¢ŠJZ)h¢Š(¢’Š)h¢Š(¢Š(¢’’ŠZ(¤¥¢–Š(¢ŠJJ)h¤¢––’’ŠZZ(¤¢ŠZ(¢Š)(¤¥¢–’ŠJZ)i(¤¢ŠZ(¢Š(¥¢ŠJ(¥¢’’ŠZZ(¢Š(¢Š(¢Š(¢Š)(¤¥¢–Š(¤¢ŠZ(¢Š)(¢–Š(¢’’ŠZZ(¢Š)(¤¢Š)h¥¤¢ŠZ(¤¢’–ŠZ(¢’ŠJZ(¤¢–Š(¥¢’’ŠZZ)(¢–Š(¤¢ŠZ))(¥¢Š)h¢’Š)h¢Š(¤¢’Š)h¢ŠZ))(¥¥¢ŠJ)(¢–Š(¢Š)h¢Š(¤¢Š(¢–ŠJJ(¢Š(¢Š(¥¥¢Š(¤¢ŠZ(¤¤¢–Š))h¥¤¢’Š)h¢ŠZ(¢Š(¢’Š(¤¢ŠZ(¢’ŠJZ)h¥¤¢’Š(¥¢–’Š)h¢’Š(¢ŠZ(¤¢ŠZ)(¢–Š(¤¢’Š(¢ŠZ(¢Š(¢Š(¢’–ŠZJ)(¢–Š(¥¤¢’–’Š)h¢’Š(¢ŠZZ(¢ŠJJ(¢ŠZ(¢–Š)(¤¢Š)h¥¢ŠJJ(¢Š(¢Š(¥¢ŠJ(¢Š)ih¢’ŠJ(¢Š(¥¢–’Š(¢’–ŠZJ))h¢Š)i(¤¢Š)h¥¤¢Š(¤¢ŠZ(¢Š(¢ŠJ(¥¥¢’Š)h¢ŠJ))h¥¢ŠJJ(¢Š(¢–Š(¥¢ŠJ)(¢–Š)(¢ŠZ(¤¢ŠZ)i(¤¥¢ŠJ)h¢’Š(¢ŠZZ))(¢–Š)(¥¥¢ŠJ(¢ŠJZJ))h¢ŠZZ)(¢ŠJ(¢ŠZ(¢–ŠJ(¥¤¢ŠZ(¤¢’–Š(¢Š)(RRÒÒÑIERQEQE´QERRÑE%´QERQIE´QIE´QE-QEQEQIEQE-QKEQE%QE´QEQE%QIE-RRÑE%´´RRQKE%RÑEQE%-QE”~4~4~4”QKKE%´´RQERQE--RQERQE--RQEQKE”RQE--””QE´QEQE”QKKE%%QE-RQE--””RÑIE--%%´QIE´QIKE-QIEQIE´QIE´´QIE´RRQKE”´RÒQERRÑKIEQIE%RÒÑEQEQKEQE%QIE´QE´QIEQEQKE”QEQE%RÒÑE%RÑERRQKKÞŠJJ(¢Š(¢ŠZ)i(¤¢Š(¢–ŠJJ)h¢Š)h¥¢ŠJJ)ih¤¤¢–Š(¥¢ŠJ(¢Š)h¤¢Š(ëEQKIE%-QE-RQE-%”´RÒQE-RQEQEQE´QIEQERQE-QKE”QEQEQIE´QERRÑKIERRsž”QKKKE%%%´QE´QIE-RQE-QKE”QERÑEQE””RÑEQE-””RÒÑE%RÑIIE-QKE%QIE-QEQE%-%-´””QE´QIE´QE-QE”RQEQEQE´´QIEQIKE-”RRÒQE--QEQE%”´RÒQEQKEQE%”´RÒQIKE-%”´RÒQIEQEQKE”RQEQKEQEQEf’Š)h¢Š(¢Š(¢Š)h¢’–ŠZJ(¢Š(¢’–ŠZJ(¥¢Š(¤¤¢Š(¢–Š)(¢Š)h¢Š(¢–Š)(¢Š(¢Š(¢’Ši8e¤' ¢‚~jZ_ÂÂŒsHFXQjZZ(¥¥¢ŠJ(¢Š)h¢Š(¢ŠJ(¥¢Š(¢’’ŠZ(¢Š(¥¢Š(¢’Š(¢’–ŠZJ(¥¢ŠJ)(¢–Š(¢Š(¢’ŠJ( u¢ŠZ(¢Š(¢Š)h¢Š(¢Š(¢Š)h¢Š))(¥¢Š)h¢’ŠJ(¥¥¢ŠJ(¢ŠJZ)h¢Š(¢’Š(¢Š(¤¥¢–’ŠJ(¥¥¢ŠJJJ(¢Š(¢Š(¢–ŠZJ(¥¥¢Š(¢Š(¢Š)(¢–Š)(¢Š))h¥¢Š)(¢Š)(¢––Š)(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ))(¢ŠJ(¥¢–Š)(¥¥¢ŠJ(¢ŠJ(¢Š)h¢ŠZ(¤¢Š(¢–ŠJ(¥¤¢ŠZ(¤¢Š(¤¥¢–Š(¢Š)(¤¢ŠZ(¤¥¢–’ŠJ(¥¥¢’’Š(¤¢ŠZ(¢ŠZ)h¢Š(¢Š))(¥¥¢Š(¤¤¢–Š))h¢’’Š)h¢ŠZZ(¢ŠJJ)ih¢’ŠJ(¢–ŠZ(¤¢ŠZJ(¥¢ŠJ)(¤¢Š(¢Š(¢Š)iih¢’Š)h¢’Š(¢Š(¤¢Š)h¥¢Š(¢ŠJ))h¥¢Š(¢ŠJ(¢Š)h¢’Š)h¤¤¢ŠZ)i(¢–ŠJ(¥¢ŠJJ(¢’Š)h¢ŠZ(¢–ŠJJ)OJ()J´QIEQE-QEQE´QEQEQERQE-%RÑE%RÑIIE-RRÑKIEQE- ëIÞ“½­RÑE´´RRQKKIHzR((íKKEQIIE---”QE%´QE-QE%RÒQIE´´QIE%QKE-QE””RÑE%-%”Q@¥¢Š)ih¢Š(¤¢ŠZCÚÒZ(¢–Š)(¢–Š))h¥¢ŠJJ)ih¢Š))(¥¢Š)h¢’Š)h¢Š(¤¢’Š)h¢Š(¢Š(¥¢ŠJNô‡ÚŠZ(¢––Š)(¤¢ŠZZ(¤¢’Š)h¢Š(¢–ŠJJ)h¢Š(¢Š(¢ŠJZ)i(¢–Š(¢ŠJ(¥¢ŠJÿÙÿØÿÀððÿÚ ?èë£®ŽŠJ(¢Š(¤¢Š(¢–ŠZJU¥Zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑIE´´QIE´QEQJ´«J½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦S(¢’Š)h¢’Š)h¢’ŠJ)Vœ´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢Š(¤¥¢–Š))(¥¢Š(¥ZU§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)”Ê(¤¢Š(¢Š(¥¢ŠJ(¢•iW½9iÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:(¥¢–’Š)h¢’ŠJ(¥¢•iVœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦TtQE”QE-RQKERÒ­*Ò¯zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGEt¥¥¥¢Š(¢’Š)h¢ŠU¥ZU§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™L¢ŠJ(¢Š(¢’Š)h¢Š)V•iËN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑKKE%QERQKEQJ´«NZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGKERÑE´QIEQE«J´å§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEG*2@êj<â€h3šZZ(¢Š))h¥¤¢Š)V•iËN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢’Š)h¢ŠZ(¤¢Š(¢ŠU¥ZrÓ©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™L¨è¢–Š(¢’Š)i(¢Š(¢•iVœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦S(¤¤¢––Š)(¢Š(¢Š)iV•iVN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊe2ŠJ(¥¤¢ŠZ(¢Š(¢ŠJU¥ZrÓ©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtRÑEQEQEQE´«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢Š(¢Š(¥¢’Š)h¢ŠJU¥Zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑEQERÑE%RÑE«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2™EP:RRQERÒÑEQE*Ò­*Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™L¨è¢–Š)(¢–ŠJJ)ih¢ŠU¥ZU§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™L¢Š(¤¤¤Å ^y&ŒRÓ¨¢ŠZ(¢•iV•iÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦TtQKEQEQEQE”«J´å§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™L¢Š(¢Š(¢Š)(¢–Š))V•iËN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢ŠZ(¢ŠJJ)ih¢’Š)iV•iVN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊe2Š)(¢–“˜¤Å--QKE”«J´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2™EQEQEQEQE«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢ŠZ(¤¢ŠZ(¢Š(¢Š)V•iW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠJZAÅ’–ŠZ)i(¢–ŠJ)Vœ½éW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊeQEQEQIE´QIJ´«N^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯ÿÙÿØÿÀððÿÚ ?èë¢®ŽŠ(¢ŠAEQKE”QKKE%RÑE%%´QIERÑEQIEQEQKEQERÑE%RÑE”QE”QKE”QKE”´RÒQIKE-RRQERÑEQEQE”´QIEQERÒÑERRQEQEQIG4QEQEQKKKF1IÒ’ŠZ(¤¢ŠZZ))(¢Š(¢Š(¢––ŠJ(¢Š)i(¤¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢––ŠJ(¥¤¢’Š(¢ŠZZ))(¢Š(¢Š(¤¢ÂŠ3E-QERÑE%-RQERÑEQIEQE´QIE´RÒQIEQEQEQE´QERRÑKIE%RÑE´RQE”QE%RÑEQE´QIEQEQEQE´QIE-RRÑE%RÑEQIEQEQERÑKIE%QKE-%”QEQEQEQE-´QIIEQKKE”QE”QE”(4´QE´QIEQERÑE%-RQKE”QEQE´QIEQH(¢–Š(¢Š(¢ŠZ(¢Š(¢ŠJ(¢Š(¥¢Š(¢’ŠZZ))(¥¢ŠJ(¢–ŠZ(¤¤¢Š´QE-”QE%QIE´RÑE%´QIE´´RRQKE”´QERQKKE%%QE--””QEQE--””QERÑKIE%-RQKE”´QIEQKE”QEQE´QIKE-%”´QIEQERÑE%RÑE%RÑE%RÒÑE%”´QERQEQEQEQKKE”RQEQEQKE”QE%RÑE´´RRQERÑE%-RQE-´QE%”QEQE´QIEQEQKE”QEQEQEQKEQE%QERÑEQIIKE-%-´”RQEQEQE´QIE´QIKE”RÒÑE%”´RÒQIERÑE%QEQKE”´QIEQKKE%%QERRÒÒÒQE-%”QERÒÑIIE-QERÑIIE´QIEQKKE%%QESJ“"¶â01ÐÒ&@û4˜ùÉ)ÔêZ))h¢’Š(¤¢ŠZ(¢ŠZ(¢Š)(¥¢Š(¢’Š(¢ŠZZ(¤¢’Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢ŠZ)h¢’’Š(¢ŠZ)h¢’’Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¥¢ŠJ(¢ŠZZLóH &y¥¥¥¢’’Š(¢Š(¢Š(¢Š)h¢’Š(¢–Š)(¢ŠZ)i(¢Š)(¢ŠZ)i(¤¢’Š)h¢ŠZZ))(¢Š)h¢’Š)h¢Š(¢–ŠJJ(¢Š(¢–Š)(¢Š(¢–Š(¢ŠJ(¢Š(¢–Š)(¢––ŠJJ(¢ŠZZ))(¢–Š)(¢Š(¢Š)h¢Š(¤¢Š(¥¢ŠJZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢––Š)(¤¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š)(¢ŠZ(¤¢–Š(¢ŠJZ(¤¢ŠZ(¤¢––ŠJJ(¢Š)h¥¤¢’–Š)(¢Š(¢Š(¢––Š)(¤¢ŠZZ)(¢ŠJ)ih¢’Š(¢’ŠJ(¥¥¢ŠJ)(RÑKE”” )ih¢’Š(¢Š(¢––ŠJJ)h¢’Š(¢Š(¢–Š)(¢ŠZ(¤¢Š(¢Š(¢ÒŠQEQEQEQEQEQKE”QKEQEQIEQERÑEQIE´´RRRQE-QKKE%%RÑKIEQIEQE-RQEQERÑE%RÑE%-RQKKE%%´QIKE-%”QEQEQIE´QEQE-´”RQEQE-RQKKE%QIE´QERQKE”´RÑEQIERQE-RQEQEQE´QIE--”QE%QEQE-RQEQEQEQEQE´QIEQEQEQERÑKIEQERQE´QIEQERÑEQIEQEQEQKE”QE%RÑE%RÑEQEQE-RQEQEQE´QIEQKKE%%RÑE%QEQEQEQEQE-RQERÑIIE-QE-RRQE-QEQEQEQEQEQEQEQEQEQEQEQEQERÑE%RÑEQIE´QIERÑKIEQIE%RÑEQEQKE”QEQKE””QKEQERÑKIEQIKE”QERÑEQERQEQKE”QKEQE%QE-RQEQKE”QE-RQKERÒRRQE´QE-RQEQEQKE””RÒÑIEQKE”QE”QKKE”QEQE%RÑEQEQEQEQEQEQEQEQERÑE%QEQEQEQEQEQEQEQE´QIEQE”QKE-RQEQEQEQE-RQERÑIE´”´QIE´QIEQEQEQE-RQEQE-RQEQEQEQERÑE%QEQE´QIEQEQKE”QEQE´QE´QIIEQEQEQEQERÑE%QEQE´QE´”RQEQEQEQEQERÑE%QKE-%”QEQE´QIEQE-RQEQEQEQEQEQEQEQEQEQE-RRÑE%´QIEQI@¢–Š(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢’Š)h¢ŠZ(¤¢Š(¢–Š)(¢ŠZ)i+ÿÙÿØÿÀððÿÚ ?èë£®ŽŠ)(¢–ŠJ(¢’Š(¢ŠZ(¤¢–Š(¢ŠJ(¢Š(¢ŠZ(¤¥¢–’ŠJZ(¤¢––Š)(¢–Š)(¤¢Š( ô£ëE5I'=©'žÝ©æKKEQKKE%QIE-RQEP:QEQEQKEQEQE-””RÑEQEQKE”QERÑIIE-RRÑE%QERQE-QEQEQE--%%%-QE”gž´u£4QKEQEQE-RQEQEQE´QIKE-RRQEQEQE-RQIE´QIE´QEQE-RQKKE”QEQIjLqE-QEQE´QERQE´”´”´QEQEQERÑEQIE%QEQIE´QIE´QEQEQKGRQEQEQE--”QE%QE--QEQE%%%´´QE-”QKE””RÑE%QEQERQEQKEQEQE-RQEQKEQE%QE´QERRÑKIEQIE´QEQEQE%RÒÑIIEQKE”QEQE%RÑEQEQERÑE%RÒÑE%”QE-QE”RÑE%RÑEQIE´QE-”QE%´´RRQE-RQKE”QE”QERÑE%RÑEQE-RQE-RQEQKE”QEQKE-QIE%RÑEQEQEQE%QEQE--””QE´RRQKE”QKEQE%RÑKE”QKE”QEQEQKEQE%RÒÑERRQERÑE%QEQEQKE”´RÒQIERÒQIKE”QKKKE%%QE--RQIEQE´QIE-RQEQKE”´RÑE”RQEQKE”´RÑE”RQE-QKE%%QIEQE-QEQERÑKIEQE””RÑE´QIEQE-RRÑE%QE-QKE%QIEQKKE%RÑE%RÒQIE%¢–Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢Š(¤ïIÞŠ(¥¥¢’ŠZ(¢Š))h¢’Š(¢ŠZ(¤¤Ï=(ïÒŽh4 ‚Š)h¥¥¢Š(¢ŠZ))(¢Š(¢Š(¢ŠZ)i(¤¢Š(¢Š(¢Š(¢Š(¢––ŠJJ)ih¢Š(¤¢’Š(¢Š(¢Š(¢Š(¢Š(¤¢Š(¢Š(¥¢Š(¢ŠZZ))(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢–Š(¢ŠJ(¢’Š)h¢Š)h¢Š)i(¢Š))h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢ŠJ(¢Š(¢ŠZ(¤¢Š)h¢’Š(¢Š(¢Š)h¢’Š(¢Š(¢––u¤i?ZZZJJJZ(¢–Š(¥¢’’Š(¢–Š)(¢–Š)(¢–Š))h¢’Š(¢Š(¥¥¢’’Š(¢–Š)(¢Š(¢–ŠZJ))h¢’Š)h¥¤¢’Š(¢ŠZ(¤¢Š)h¢’Š(¢Š(¢Š)h¢Š(¤¢Š(¢––ŠJJ)ih¢’’’ŠZ(¢Š(¢Š)h¢’Š)h¢Š(¢Š(¢ŠJ(¥¢’’Š(¢––Š)(¢Š(¥¢Š(¢’Š(¢Š(¢Š(¢Š(¢Š(¤£ð¢–Š(¢–Š)(¢Š)h¢’–Š)(¢Š(¢Š(¢––“¥%%--QEQIIA¥¢ŠJ(¥¢Š(¥¢Š(¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¥¢Š(¢’Š(¥¢–’ŠJ(¢Š4”QKEQIE´”R~4bKKE%%´´QIEQEQEQEQEQKE”RQE--RQE--””QERÑE%QE´QIEQERÒÑERRQE-RQEQERÑE%QIE´QEQEQKE”RÒÑIIE´QERQERÑEQIE´QIE´QERQE-RQE-””RÒÑE%QEQERQE-QEQEQEQERÑE%QEQEQERÑEQIEQEQE-RQKEQEQIEQE´QIE´QIEQEQERÑERÒQIKE”QEQE´QIEQERÑEQIEQEQEQEQE-RQE´QIIKE-´RRQEQEQEQEQEQEQEQEQE-RQEQEQE%RÑEQIÖŠ(¢Š(¢–Š(¥¢’’Š(¢–Š(¢ŠJ(¥¥¢ŠJZJ))h¢Š(¢Š(¥¢ŠJ(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š)h¢’Š)h¢’ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢ŠZZ))(¢Š(¢Š(¤¢ŠZ(¢Š(¥¢ŠJ(¥¢ŠJ)(¢Š(¥¢Š(¢Š(¤¢ŠZ(¢Š(¢Š)h¢’Š(¢’–ŠZJ(¢Š(¢Š(¢Š(¥¥¢’’Š(¢ŠZ(¤¢ŠZ(¢Š)(¢–ŠZJ)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢ŠZ(¤¢’Š)h¢Š(¤¢ŠZZ(¢Š)(¢ŠZJ))h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¥¢Š)h¢’Š)h¢’Š)h¢’ŠJ(ëKEQEQEQEQEQEQEQEQEQEQEQERQKKE%QERQE-QEQEQIE´´QIEQEQEQEQEQEQE%RÑEQEQERÑE%QEQEWÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢ŠZ(¢ŽÔRQEQKE”QEQE´QEQE”RÑE%RÑEQIERÑE%RÑE%QERQŠ(ÅQŠ(£bŠZ)h¢’ŠZ(¤¥¢–’’’Š(¢–Š(¢–ŠZJ)(¢Š(¢Š)h¢ŠZ))(¢Š(¥¢–’ŠJ(¢Š(¥¢Š(¢’Š(¢Š(¢Š(¢’Š)h¢Š(¢–Š)(¢Š(¢Š(¢Š(¢––ŠJJ(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢–Š(¢ŠJ(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š)h¥¤¢’Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢ŠZ(¤¢ŠZ)i(¤¢ŠZ(¤¥¢–’Š)h¢’Š)h¤¢Š)(¢–Š)(¥¢ŠJZ(¤¢––ŠJJ(¥¢ŠJ(¢ŠZZ)(¢ŠJ(¢Š)h¢Š)i(¤¥¢ŠJ(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢–Š))h¥¤¢’Š(¢Š)h¢’ŠZ(¤¢Š)h¢’Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢“4™ RÑEQEQEQERÑE%QE´QIE´QERQKE”QE-RRQE-QKE”QKKE%%QEQEQEQIE´QEQE”QKEQE´QIE´QIEQEQKE”QERÑE´RRQEQEQEQE-´”RRÑE%QE-RQÚÒŠ(¢Š)ih¤¤¤¢ŠZZ(¤¢ÐsA t£µ©h¢ƒÒƒÅQKE”RÒÒRRRÑERÑE%´QIE´QIERÑE%QEQE-´”RRÑE%QEQEQEQIE´QEQEQERÑE%´QERQE´QIE´QIEQEQKE”QE´QIEQEQEQE´QIE´QIEQEQE-RQEQEQE´RÑE%%QE-RQEQEQEQEQEQEQE´RÒQIEQEQEQEQE-QE”QKEQE%QEQE-QE”QKE”QEQEQEQEQKE”QEQE-RQEQEQEQIEQEQš(¢–Š)(¢–Š)(RÑEQEQKE”QE-RRQE-QEQKE”RÑE%QERÑE%QE-RRÑE%QE´QIE´QIEQE¢Š(¢Š(¢Š(¢–Š))h¢’Š(¢Š(¢–Š)(¢Š(¢Š(¢–Š)(¢Š(¥¢Š(¤¤¢––Š)(£QERQE-´RÒw¢’Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š)~´RÒQE-””QE´QIEQE´QIEQEQEQEQE-´QIIE´QIERQô¢–Š)(¢––Š)(¢Š(¢Š)h¢’–ŠZJ))h¢’Š(¢Š(¢Š(¢Š(¢Š(¥¥¢ŠJ(¢ŠJZ(¢Š)(¢Š(¢ŠZ(¤¥¢–’ŠJ)(¢–ŠZ(¤¢Š(¥¢ŠJ)Š)h¢ŠZ(¤¢ŠZ(¤¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)ih¢’ŠJ(¢Š(¢Š(¢––ŠJJ(¢Š)h¥¤¢’Š(¢ŠZ(¤¢Š(¢Š(¢–ŠZ(¤¤¢Š(¢Š(¥¢–’ŠJZ(¢Š(¢ŠJ(¢ŠZ(¤¥¢–’ŠJ(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢’Š)h¢ƒÒŠ){Ð3ÞKEQEQEQEQEQE´QIEQEQERÑKIE%QE´RRQKKE”QKE”QEQEQEQEQEQEQKE”QE-RQERÑE%QEQEQE€s@Íæ–Š)(¢–Š(¢Š(¥¢Š(¢’Š(¢Š(¢Š(¢’Š)h¢’Š)h¢Š(¢EQEQERÑE%QE´QIEQEQEQEQIÞƒõÅ´QEQE”QH3ÞžüÐ3Þ–Š(¥¢ŠJZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢––ŠJJ(¢Š(¢Š)(¢Š(¥¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢Š)(¢Ž†ŒàÑKKE”´QIEQE”QKEQ@ëE´QERQEQKE”RÒÑIIEQKE”QKE”QEQEQEQEQEQERQE-QEQEQEQEQEQEQKE”QE-RQEQEQEQEQEQE´QIEQEQEQE´QIEQEQEQEQEQEQEQEQEQE´QIEQKE”QEQEQEQEQEQEQKE”QE”QKEfŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(Í´QEQEQE%RÑEQEQEQEQEQEQEQEQEQEQIE­š ä`ÑŒõìhñ£bŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢ŠZJ))h¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(£µQEQEQEQERÑE%´´RRQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEŽÔƒš´QEQEQEQEQEQEQEQKE”QEQE´QIKE-%”QEQEQEWÿÙÿØÿÀððÿÚ ?èë£®ŽŠJJ(¢ŠZZ(¤¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢›$bEØj+˜âœ¹¦MÍGéT͚䕜ÿbɧB2ËrŒ3Û¨5™%”C,³ô¦,jƒ2x,*¤ \ªÉ(ØN ¯ÁÎדå?ÅRNZ@d°£Ž9«wÒ4Ò™á9@€G@*ÅÛ´®fŒü¸Æ=ª(ç'󴚯ÖOκš‰.;¸#Å"4×.¦ ‹Ÿ™¸Í]µ[‹…Ýß/¹cеš`2¡:e¨’¢Ä5Ï–@à ÇëI4W›ö4û1ÈØ0?:l°Ü³•iJàvU¡1»uç¾j‹FÐJ7¹sïÞ«2dùض)É(•ÌLÇSC$'çh¨ÑüÇ(IÇ\ Õ®²º(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢ŠB@8=i‚¶ ù©7 ã©£"—#Ö—#󥢊(¢œh'4´f£2ú ¬×x!â¡iˆä-D÷.§v/½V“P‘0PÉè{T-w"ÀóOK‚ï…CŒdäñRG|Ò¿ÉËŽrx§ÇrÎÙTù{äÓŒëý8©þ4Á c§ór‹·= C=ݹ16ÖîTf«ß_ÚË…'!³ÎÑš‚æî #òÖV<•NIaŒ„¹#¿kicŒ2ÆK“ÜñY“L‘‚±å‰îj©eT»ƒzšªÛ@Ï9=j«ð23¸÷©-õ“±‡pzÓ¡ºÙʱFx¥†ïoÝbŒ*fo62Ézp Jò™“rÆw õ©ÞC*T³Éõ«vNDLŽ 2óŸïVö‘rØ£(WOüzµ´éƒÛíe W­Y :súö«ì«$d?LgéVˆ„0ãMPxåv; ²Ž¾µ‰4/#Ž<ÍfɹùX2ŒðE"Be—%‰ÍD-ÒÜ 3×$æ˜!XaÁ<æ´ë£­z(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦»¹ZŽáš8·'cM™™rþ5Dî=Ëwª¶Ž|ÖÏ%ùÝP[1ÜÀÿ;©û¶œŸ¡©¼Ö‰ŠÈ¹Ç<Õ&ò™ 3CÚ”J‡ø¿)ëu q¼óØŠrÍ<>¢œY@ûžÒF£%Æ>´æu–\"°ÉÀÏZ®×Љ‚3íP›¨Ä¡IǽE,Ñ£°S“ŽÆ«\]À’¸F‘ØÔS\D®ÁH'Ú¡ûFíFpIéTVël§j–SÚª-ÆÉ ¹Ojåž\(1¢žªFýMG,óLUAUSü8ÆßÆ™$²È*ÐÕIo>Ptxùj”·.@S v©ÍrÄàÈ0=*5d;"r×­DÓdmR:‰§,6¡>ôÐZ2¼ƒ“ïQCgÒ¢G*Ëœ‘š¿òtkuÛêE]†éáR=êì7(>ò=è”Z\.ÿ³.?¼zYš Wp„ýà)ò˜dü =ñU™c ËÏ«ðmÈéUÇ1œg¥_Šp©—ÆOQŠ×³¹[xðpYŽXbµ-§ Þ½I±rª:ç½_™‰*ƒ®yÍ#]™IåQúÕ3Ó ¸Áö£ÎçÔrO¥E7žNÏ-¶“õžvvì`9íZUÒVÍ´QEQE”QEQEQEQEQEP»C%Ò‚X*¯Mج][sê2B¢g³úVeö^ùFH àzÊ«/§­:”Šáw c'…>)Ñ%ì M‘ÆHã'<ý*K»ˆJ‚HèOztò¡Cå°ÜG‘Ën¶Pvôªk3y„ÌÍ;Ua#o0ž­5¥…ðXÈÞƒ5Ï„$ltæšÒ¤‡;\Ò±FÂìçÐ÷¦³e€ r½©¬Å˜ ¼ŽÔªŽAo,HÀÆ)ñÃ+vÌxR1OH¤vhÜO PIk¨ÈIò”Ø` ,šV£#1(‹éóâšú}ë’HAŸö±Tïâ¼[sDÊsœ–Èý*å•ì)åI×;² S½´¼Hö2ŽùȬ護>Ù[ij¤!`pä¥Qî¼9#ð©¶›%÷})»m÷³Mò¼¦ë‘Ö® ÛnCá}iá­<9õÅO’ʨǣu?ýj°°ÈȆ­,:†Ç' ¥…•ÜáìØã°¶«—¸ëwùŠ7 õpÕÉëÁÇZ¾¦@’Dp}jø1( èìj'X×ûJœæ™'”¼‡ÁƒQ¸‰H;°EBn —oREDn#l†`V™ç!$cÚ¥·t˜ˆ3äc•éKï2ˆîGJXG™”Q}GJ¹È椥ˆÎþzV¥€Dº …•AÞ èqWí6¬øG%ç=3Wkb´(¢’Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š¥1òîØíÎþƒ×ŠÈ»ß¨ÒÙÄŠ ߀?¥PœÕZæX Lð]¾èì=þµBâH­£$&da…Èà{ýjÄ©n‡ ¹Ø|¹*½¬²]K·'‚ÞÕZÂ)nîBí8b7j†Â9n.å g$Ö×ÇÖ`§JßàqÚ–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢“GZ(¥¢Š(¢“ëGJ:Q‘»£<ã#4dg¥¢ŠJ(¦º–î1î*9¢20äß#4×BädñMGžT9ÞÅ5mb^J‡ÿxR‘OÝÏÖ¤UUûªÐT‰!%.}8*º RÓ©h¢ŠAÒŽÙ¢–Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢ŠJ(¢Š(¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢“vâ}hÀ'8½h÷¥¢Š(¢Š(¤¢ŠZ(¤¢Š(¢–Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š)h¢’Š(¤¢ŠZ(¢Š)(¢–Š)(¢Š(¥¢Š(¢Š(¤¢Š(¢–Š(¢Š(¢’Š(¢Š(¢Š(¥¢ŠJ3E-RQE-QEQEQERQE-QEQE%RÑE%QE´QIE´QIE´QEQEQE¥Ti.ù¤c˜ù˜p~”²Ä`z@ÙÈÁïOÏ84§ŠZŽi|µ;Fãè*‰¼¶*9¤(p¹©jj’’Š(¢ŠZ(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¤¢’–Š)(¢–Š)(¢Š(¥¢Š(¢’Š)h¢¢n,>`·Zc¶9Á>Þ´Æ’Š)h¢Š(¢Š(¥¢ŠJZJ))h¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢Šd T¼mÈAéš‚àüŸIVêz(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š(¢ŠZ(j ‰W¶+3RÜ“"Œí+š¥y••WøJæ§­:»EQEQEQEQEQFh¢Š(¢Š(¢ŠZ(¤¢Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢’¥Ã…~ʧ¨Ç˜Ò@8Cƒôª×Šv«Ÿáá¥KW*Í%RÑE%RÑEQEQEQEQEQEQEQEQE”QKEQEQERQEQEQE´QIžh¢Š(¢Š)CŠI(@ärJGû‡:u--QERQE-QEQEQERQE-QEQEQEQEQEQEQEQEQEQEQE%QEQEQA4׊(¢ŠJ(¢Š(¢ŠZ(¢Š)(¢–Š)(¢–Š(¢Š(¢’Š(¢Š(¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢ŠJ(¢Š)h¢’Š(¢ŠŠe ÆÎ¸<Ôs±X˜õ¦Jv¥ÿÙÿØÿÀððÿÚ ?¸TÅ*`‡'^*IFàD`t©¶yr|ÃÉT“¸0#™Í]ÓnìÞ.’úU›9Õíš3÷ÁÉ©‘c@%eÞTpqÒ­Á&»å€ãÒ§ð»›$ ‚úÕn“,Û@;·ÛÒ¢ž$¹mÁTƒü$ã4ÉáY›v;曉c)lYÝ@#ó¨ ’ŒûüÊ*?(+ù½ù\þñ‘B$œ°n*¥úyÒŒ(F=À85Vö14£)=N8¡™cE$|ÀTô>õeU|àaéI¹@ =™©ùŒK¨ôÚ>”åo:BÎcØR¦%r\[ŒSÝ%yH·FsVåÿ‰w–Çl{ÎÑÆjy[ìaX¡ø‹6nÞWóÿõRÉ3ºŒí ÷­!u>èPKõ)øÔ$3HO(>½é˜%Û9_ÆÆ7†y£–pѧO½ïLò‰mȼ´ŒŠìNTõúÓ¦„t à ã4³D:va•4–JcÝ’YqóÅ.‘!€K½²¤|ÈxühÓÊŽMç‚>é¥r$r‡¶9¤—¨ek˜¥t “ÀÅ=æUŒç$Žš´o-ŽàK§Ç­NnBÃ’ e㉠NŒÀ‚ßÞÔZZ¥å´„惔'·µ$-Ä ‚7ƒ•5‘I8Cޤã"«Mkqh"lKEC$[õyQÔŠ„1e=€ç¥@ H§°ëQ ºž1ŽkiUduîMe<€;ûšÉ’eYGV4ZÜÉ›”–SÆÜÓ­æxŸ ’Qš}´ïœAëÏJÜR¸î8<Ö±!ÇÖb ƒ“¸úÔÆÁÄÁˆÁæ màóUäX8'>õgL¾DQo6RFo—= jhúŒX6ò6Öþ{Õý:ö2<‰×'€zÖ$mÝ‘Îk`²ªî.ŽzÖƒ2ÉaïQ+ÛÝ.–@§ò5 rÛ^!é*©çØÔq¼7+òáOäjOÓÒ¥ôíéRñ¥´VD’K!o1€Ï@r¬òI‘#»¦+‹Èpì>n•=¡òÚRÄ’>QŒUý?N?eiËì¿"ÕÛ;"-Ì…‰b¼ l€¿ÊÀœž‚©Ì²±+´“ž•Re‘ŽÜsÒ¨ÞNÑ„ˆÀI Üì5%¼mn»ß«uPyÅ>0à·%»Z³ùoû¡É~yÇËžkZ%-hFA=jÐ@Mº•äÈ&‹ˆÌ‹å†(„ãƒ×Öª¼„°Üp‡îj±ùŽã ÒZ*¬!b'Ë\àZ"<7––8Ü¿ÃëKyªJƒåô I±Áßó^‚šm%Ýæ…r‹Ó§4Ö·“™bÝíTçD•YQw½:T&DmÞZðG`Ч2)ݰ};QÈZKP­Á1“øTgݽêw'J¦›÷ «Ôšµy,WztKóf>™9©¯;«;“¥L©q`3¥¶TKE˱ù@4ûp«rßìԙߠ‘êjÉË‚IU’:U‚7Ú§Ö£,C¤“éP,®ã'¶*#pO¥#—bXã ÁÉdw9b>^1éL‘ÙÈfíÅFÜʪ‰CPã3ÚA'­Bf F ïR;*Œ†]Ç ÍX2Ê–?¥Y2 A4Ž)$ô·Ü6Ï¢‰‘²Ó–Çàv¨*Å_=H¤óL<¢Ë nO¯µ&ö„¨L‡VïßÚ§YÛxŽExàŽõ§ó<Ë®%#†¯Et^Q€|ãå"³çF-;d#¥fKKæ„ð®øâ¨´enš#ÑŸŒVn»¥ý›0‚cn¦«ëÚGÙ\Â1á×9Új–»¦ýŸmÔCä8½vŸZ‹JH¦m»ˆ‘9Áþ*©§¤r1ïoZ‹NXåœ2ö­2Ø•?(ÿ8«ŒøÉÇÝéWYñ“ƒÅeÉ«Ì%# mÇ5BMB]Ä`vÅg>¥'˜AÀPqZbØÞ@² ?0ÎÓÒ´Í®¢Y#Ê’9 ÷­#köˆÃ¯Ë‘ž ³L…–貞ª:Al3²YØîg­"ÛØ’faýßZµc †8—•çëZZ#s*F¿»Ú9÷«šc:EAû½£ŸzÒëÐð+b´h¢ŠÏ··Ýt²;nl–#Âö¬-.Ó}Øi™·æÜÿÌW®{V†@J¨ùˆè©½HªÏ&ö;{ëYWW®\ éÆáÖ³ç›t¤ ¶kTýÂyn[ƒc`rÀçª;¢DË#7ÝÈã©÷ªÓ8HÙ¶@ÊûÖžƒ!ŸNY’Ûˆlœô­‹l¬ áBsZ6Ed¶V\àç#9ç5reèHèjž«Àt‘Pjàdt£­U¹·1€Qþ\üÊÜæ³ïì„1oŒŸ/ø•†j¥Õ°7);‰zÔ!|°Ê `sÞ³"eÚ öêŒCT.A=)ÈÜ"°*Ç8Z°à.ÕŒ¥NÃkvö«A•‚0sÜÕÁ kB±nzÕÁ¬Ê‘´“P Œ)\äÖD ·Žsš©ÑBzaÚYIlýꌅó—,ùª3´I¹rAëC pYgwÊ(1ï]ÊFIàR”Ü ¡½)ê˜]Ρ™¸/*»Õ‰$ÕˆÒ8ÙÂ.ÒÍ“ïWWh$µeB‚BŒSéÔ´ÄU\•'¹¨`[bã'$žõQ„QŽsšyPzÔ¬ŠãžW=i†5à ­‘T çÚ£0¨€}«7S²7£mŒrz}+.îÐ4L©Á5ŸykæBR2T“X°%ΟrlÚw…d#2hÒ·[«[³²nýª=5Zܼ#!fÈ=tò8DHà $žO½[Ô¦F„„<ƒ®zÕÛÙ¢1¯Îîk&ò_ÞyÑOÊV¹¹Ÿsž„W?;ïbTàž1Zºc;ÙF_¨?"Gô®—Cg}=KžŸ ü+£Ó™¤³Gc’F*ÕhUš†Wsi`ÝúU+«èA0ìgÁ9Çÿ®«OuL[I Á9ÅWòü§"C‘Œ†=ë6(|‹¢$Ë(R{Õ8“É•·|Àr3Þ£ ³ÉÀàW¤•wÈŽÐÜÍ$ŠM۰=*ÖÕ* Ç©ëV^ bU ÀÉ5aã]«Çu¨vŽIl‘èzU6Œ.æb2\óUZ0’yÏSL …Á\ޱQ€>S³ûÀS;gi Ó4 •ÚJ)Ç÷OZz±nQN:֞Ƿ p84àûÛ!¿üªÁ¸ Cɧô©ŒÀÙÏ)ŽÌ]B+þ,ŒUI¤lRýê­+%ùFñT¬R=¤¡ç©ÅLå"Û¹"¥r±m`œw46ÑøT‹'Ú$DºSÃyîÇTZäYÒܯތ¿QV„û×:—×’‰íŸhrBk¯î,¦@Çd£¥liZÌwÏåÝ*¬ª2Ž¿JÛÓu¨o˜Gvв(ʱ~•±¦êðßü³ª¬Š>SëA‰–F-üDä¨ñ2»3žYŽsþ}*&‰•ؓǜÓf„K‰œ±R=iñºu8È#Ö’HÃÄê32õªzSÉ$Åß'ŒdU4æy$1olžÙÅWÓ™äs3{V˜Œ¦ü ÞzZ1Æcv/'©«È›€£$õ5f9ª©l×~;–;P9vm&bîÆ=*Ê2±ÀeÞ:úÖ„n²A‡çV‘Õùdu§ÓéÔQEQEPÊéšFEn`Нsj—*”¼«ǵC$ Ô•R9ÔRF¤d¬9ÕaçeIå™IÞ9¬û¨Ü·žYŒqUfVcæ ÿJ±o"Jߺ#o÷ºTðH’¡ù}i”Iqæ«Üã½!´.|ÀÇ9ɤû4iqæA=ê˨ x>µiÐÊž¾µaÇËòš*”Vv¥+…Œ6Ss çüG3}ª(C‚=ÄrGô¬]nSö˜âV Í:Há'`8á—×Ó4Ù eBîÈÆÃíÎiÖãå0#j ' 4ž^ÖÛ…#¦õ¨îfh‘¾@®ÁÈö¨®ex£o”+c†”¶ÏåÈ‘±árÜÔ6l™Û7þŒûdUs€ŠN}ê­'’f—Ì@„´Ë«WšáŸxÚÕÝ›ÍpÎ_ {ÔñùViåF Îäy‡»Á`©Î-´ÈÌ8´û!v!›‚iö¬v¨bAn §ydU×>Œ*clÈä‰'³Ž*O#cŒöaQ;HN×*ã°SZIXmf 3ô…œ¬ÁÇji玾õ4x'>ÔÓÏŸj¯+?!‘ÒªÈ[$(çµ@å¹vâ°n„ŽøØzâ²nÃ’ÈÙ>Õ‘r²;óZzÛ»ò¿ËW´£¶7Ý |µ{JÝ>F[å­•;›#¦ ^Y•X–99íWV@¤–$JS6FÈÀ9õ4ï??,`}I¥2–ùS÷¦•P„HAìqïÚ‘v®rÞ‚`p~bkR1¶5Ý+ ‰vÄ£Ð+]ÔQè:S©Ô´´QIEï}h£>µOÆ]œ$ö¦—^~aÇ^zRo@Ì:ÖF£9žðylϽsóý£QNT šÀÕÛíÀÇÑFÜÔÐÆ‡³ˆvìÆ}êÅ’Å_i•Ž Â êþ¿…YµÁŸ&Ic…AÞ¢¼òätÆc#øTaOÔÕ=Fé. áBc¢¨Àüꦡp·,¸#²Ž*{Õî™_æÄdcò©´;e¸»‘úÔÚ<+4’Ú f‹›yÔÕÁƒn~lnú ½¨C²WQŽ:nÍZ¾!7,Ž< 8­S0³©ò¤;àžæ°äE>Am ãëXò£H‡ÊÝŒôjkv»W‹R ·=„Î×hn ù€OQSØHÿh&~X'Ö“dƹ­Ûßdó6•^¹'­lN@\®é±>í$Žâ«[K±Ô®YA¨a|:”äw«#‘šÙe£8­È÷*+³û†ü铟ÝTœ‚ê;µÏËËãócš,´ϵ:/ÞG"d „ûTWw)݉ÈÀ¥¼»Ql¬ÌOaEÕʬ˜“ØV$š´¡M ÷uA8Æ3éYM¨º¿^+N ĹàµiÂÆhQ›ÜÖ”Ld‰ðHÍ$“"H¨Ã­G$¡PŽ´Ç,Š„vªzŒnÏŠF@ùzŠ­{(2ÆÄzúU{èÛi‘ þ•ž¬¨¾]Ì`ŒõÖ™m~ "þ&¡µÔ’/9ëWÒctÀF©sÅ[óå†Ì"ã#®‰ íÁÚ¾¦–I„L!Š5<˜ ’ie¹ØD0ÆžçÉ¢[ƒ¸C¨÷ÇZžhÙ^@ŽøÈ^Ãÿ¯V-Û2Ë"«¸ö©íØÀÛÛÝyíVRˆœJ¥î9~jm³#F}zŠ·¥HŒžã‘VÑÕÓtlâ´D•£‡SЊ¶¬®¡•ƒC6ÕÜÝ)Ô´¤€2OÍ€3G¯J£=ÓI X" Tg{ôª×8ùcqÞéPK1Î3îk:[™`•¤–,¶Lœc¶>†³e¸š d^Œ? U'žXœ±Œ;Õm1ŒW’Mv¡Ú¸ÈÜj•™Š)'–踫îj¥¡Ž!3Ü‚K/ʤzÕÈ÷:áACØzªîó2Æ206(53Í(@J‘òè*гŽüÖ‘¤fáE\¼Ó¢²²[†˜ÈÎ@µföÎ+A1wvb0W[ÖD-ØTœ1~Z¡´¾–É’sÉa–¨­¯dŠ/݉[©Ç&›o\̤Êgç%TVöÓ_ÞœÊ3–nœTV¶ò^]îó ‹œ’kDìÛ±… ¯ënêØCDLàœw­‰âÙD\àœSäP ÈéówgŠdñ¬R+Ë'Œg4ÙbpÌœ‘Î9¦î Š_žŠGǹYãhƒ»Ñ[¥5§£F >ǵ ±;cƒ… ô§ZˆÖ/2LuàƒO€(Œ;׊œ{㎦´@ã;¶Œqžõe\79#;ü£8ôɦÝϘr{ñžÔ“¿î¹ã5RtÊ‚üë"æ?•\Aâ¨\Fxaߎµ9™ó•<ãï{T †BíÀàúÿúª,‚›ùÎi#y&ÀcóÞãΘŒòÞ=½MF…Ÿ<š|E6— óô9=*ŰM›•ŽórzUˆ6lÊŸ˜ç"™&Ù£¨`xÚi†R®¡ãm5ðÊUÀ9â±f°"à€‡ojÍ{F‘–³šÏr¿.sZ›Œjª2Ž+LÈѨP½ÇJÑ.È0Æ3Ž•±,ãç$ûŽ1PÉŸ–9ü:TRD%<Ÿ§J}¼%£38<`õÅ>ˆB„– ØÓãjl$°=E‰ ÉçK0XÁÎÖ=)môxšiçTyÚO4Ø4¨#v–YBÎ §…–»=Í2Yaå-ÆñëëI#Ç’°ÃÖ¦µ±pë,´öZ±c§²ºÉ+m'øjkK"Œ®í‚{Uß°¦ðûºõ­EÒ“pmÝy«ÂÉCnÍXHbC•P:Õ¨­ ‹•Až™ÅXH£Cò¨Í jITU'©ž±FŒYQTž¤ S‚($…žâœþ4êZZ)jkfm¸f9Èâ£xQ‰8 úŠa‰ç>ÔKlª®»‚œŒö5 ÔJž ¨æŒÇË»ŒÖ+ÍÚ” p‰Ž} r÷² /X¯8Î]H%¼rxÕ<.ït¯É€'ñ¢Ït—Q“’7ŸÆŸaºKÄ'͌֕گÙÙJnÝÐZên`·ka†AŒë[÷0Âð¦@ð÷¬ÆÒ·LL’˜tÁ8¬´˜ƒ³°;¤ñXòéq—'{/ 5vÖÔÀ™ׯ­>Ïìkæ&K0äã£ch-S1ä–ëÇZšB$RHeØÜ{ÕË’²Z—`T¡ÈúÔó0x7° ©ÈúÓ¶œ»dzÖ|€$šLç­V|ºFÎy¨š#1Îà¸íŠ€Aç“'ú¼:T>H‘¼ÍÛqíS p6¯ÍïW`ŽRžZ Ùïè*ÌjåBœ÷ô(M£‚yô«Ën¨£©Ç$U¡P0H÷Ù0«’sê?ªܑ¼RÙ9ý* †ØÞ6%¹ÈÈéUYÎ6år3íXÒJÛJã€^Õ˜ò’ Œ`j´0<ÿi"ÎÀÙëëDdìóͬHUþtl©² ÆTüÊÙR(uÀB§æSJÈ‘*¹‘‹9¹« @°±¤`Iüy©Ö4ƒËã-·'ñ¨Î ˜þÝ}*"A¹ œ)n¾•f‹T{8Î7t=i<±œ1áº]£qSü]*AcÁb¸ô©DY‹E?ËÌ|œc½cÏ}`yÏ|ÀóÚ¬Fû×ÜV„ #¢­Fá×#¨§Ô´ú(¢°çÔ.¥tù“8‰sïšÉ¸Ôeê0Ïb5›-쌬‡=09­®&òÀ% ɵB5;¤”lsó Ó~ÝpˆySZŠU~Ú-gO-›1“º­iú¡¹“Ëš5ÜÛ“šžÏQÈc•B1û Íh;lR@$özâe†=Ì '€¾µnG®HÜzb°Ò%Ôä ).rW ãù×5$s_êr$Q¨9䎀`ù2^ßÈ Ç$tµc·ò†X€*£€§×5z;ìHiœoþ_á÷úÕä¶KBß÷€è¿ýzI ˆó¼ÿ棖ä—>@mÇ«74Çœ³b-Ù=I9¦¨7<„Üâ–lfW|žÙÅ:8ùÙ³õÅZÝ„t#9­“'• c®+@¾ÈÔµ^Y_vÀêë‘T/î”G‡®ª·R³™Ûõ ŠÛFFå' ª …o™WµWh›±È^Õ,$ nù»b¬[Â$pŠ[i䊚Ã0Q§š²£hÅjFpsWPmã´úuCq*${ŠçµPÔn’%£ÜOÉótª·—+nÙ’ÜU™  Øì¹85têÒ‚!a“ƒX÷ ­(Âí=x©£1†°A= MnÈkA= Kn˸+Üž 4²d¡ Ó iGÉ1fL'¢šr’î`ç ¦^Mr!f?1àœ}j[·HÞ7,NòqŽÕ%â2IßÓ¨V¼‘ŽÆ¢9n§¨4Ãópxô5£1å[=èÁU8`ɤè>Sƒš_;8/ëŠVŸ~Ó&N8¥2î*_'·zÈÖmš’qò¹È5›©Âc¸V楸’ò!¹À x5nÆO9BJÄHFrhÓOÚAŽF!Âäu“yêUÉ·ƒV`‚H¤rî\1ÈôZ¿oo$2Ç+íV¡…ãc¹²*ÅZ©è¢Š¥‡”…Dƒ$–?.{Ö`Ñ€SûòIëòäU%Ó‚õ§?JŠ[Ia™çÉ>7Æ1U/4ˈU¤™ˆ/«\ØK2!§V­Õ~fÈzœtö«úbÇ š±;™¹cŽjíH­”ާ©ÅPÕ$–çý9Yl!–ÇZ­zóÞL P#%HïUo ·r•„x$©’;Ó⻂ÒÅD ˜d·©éH.íì¢û=¡Ëÿúžô¿j†Þ1·âÞôè^w;\©²©,Ò’ÌéUÇ™,„’§B«×vs÷sš•<¸¤çÜ:ãµH…°3º‰$Ù÷ <毤²$YXðñI«BF6®>MC#Ï4j#VNFg‘KäÏ&ƒøõÅ%p=øíWCøºã“а-¢É,ŸïÕ8…rr >ôׇv6±^)¯n¥~CƒéëMh—iÚqIUŽF{` S-ÐÅ7<ç¶)°.LuÍXíéW»tÅYM#0U.ÝsHÌ ‚¨Læc–/a\ÍõÃÜÜyŒ¨è=+êg¸ŸyÐT{KH_1ÓŠ„Ã#7™‚bzT~K–ÞsŽÕ (£/Áõ()7u• (˜ÏZRåƒUzzšpc!má@^˜špbù.ñïX÷““Ž™éT.$;øéž•Jy˜0r=+CN´mϹ+JÂ_ÜýÐG©+BÎCäò8þõKpF{RJ~~ؤ“†Ï¬h‰°m O"¨jÄ »@jÏÕÉP¡9Ï «µìD®K'(ME 5Ì~[±,¿tšŽÝšê0ŽrËÓ5¡k‰<©@ËUØF›$&¯Àc ›O"ÞõËœ$‹ÇÚ®h²­½Û«Ÿ‘׆úU.AÒ+•ÇéÅgý²k™d™Î؃«ž³Qj7­<…AýÚž5^æí¦bOƒÂ“×Þµ4]³+Ür2Ä*úV†ƒ6í9êÇ{IPÐOV5§Z•~Š(¢Š(¢Š;ÑøÑYú›Aq]ù—®áëTïn/ÌÁG¡ª·W>•G¡ª0À.îšRû@Χœç=½«.ټƖBFæiþ!ž?*Ï|Âí¸ ûÙ<~U%¥¢¬R Lmä±9lý*€B«†+÷‰=j¨lx'z’zÕûfKhQ‚ÍÉÇÞàU»{•µ¶R©‚ä®â>÷­Ã:Á›wägÖ¥@ÅøQït© ÚUp¿/v§ÃRW®M3ÎÝ~Qœ çžE]³vYü²¼gŒs¶­[¹”Ûž{ h ãœgÚ´ù«œÐOaÖ˜ÌÄi ZnÀ9"™å¢ó‚sïMØ«Î3šG^ASŠdßx2? lƒæ §äbÃùT»H§’OÓø˜ºœçj‚rw0%›ýšÍÔ¥‘]‘Ýœv_J¥zì¬ÊX··¥C¸„(bXñÒ²ÉØËò†Ïn•@¤`=qK ¦KuVë’8íVc¸ó-#‰ñÔôì*t—}²!㞢‘Leˆr8õ¨“cÈC1ÆMFÉ$qëQܰŽ& OOjYÈŠ&Q†?Ê–fò¢ rEsŽÌÌAîk‰,Aîk‰,Aõ­5¿Ð¶»¹íZ–n –Âøæµ-›6 Æ Z` Ç;¿Z™Ô®7“ó Ù=*Vp“šÍÕm‹ÀvõZ§¨ÁºhÝê*ž£ xU£9Çj£¦,†ñT)Îîxª¶JírÔÕ]9dk€¸"§½Ô„smFô<µYžýcmŠ™e<µX¹ÔV7Ú«ó)Á5Rk¹nÛÑxÍW’éå'hÀëUZæK–ùru«Q$óÚ²N:T±,ÓÀýN:U¨ÖiíØœç<è´¸ÌZtQ°äŸÌ×U¤ÆbÓ \…ç5¿§¡ŽÆ=vóVªÝX¢Š(¢Š(¢¢kdiD„¶åû¹nšPÜsùÒ·dþuƒxö/u óWd«¹Hê­Ðÿ*ÆÕ%†9Dˆw®å ÷éY7ÒB$u¹w&Þ¾ôéâ¹k¤R•€Lu YÏç$qù¾QÐÞª¿ž‚,ö=\U¤·?yuËíÞ‹ˆ_Í8 22I¢hXJp)$Ó&—0MÿÆŒx©!âÞKffeLȇñO_ÞÚ´<·” #{Õë/ªêw0äÖ¶™ ¿eÃpKsšÒ²Gà 5gf #=jà€®Aæ¬Êx<ÓûTØâ¤¢Š( ôæŠoCPcûTÅÏJ+Ãb•ÃÎÇÙøÐàì;NÚ†Xð¬ù'þY×V„BÓ-ƒýìÕ;‹rÌ$œ{Ô vCo©èk>8 ’©E Gbj¬q•YWv;SemŽ7¨ïÔº)'ù%]Í€ÍÎJk² fXö*B«6Ÿ™¹w(Ô« Ǹ©5W]¤?­2â݈%ºu§ÜY¿,Â3‘NšÝ†âÜŽ¹¬‰­ÊÈC(ç õ¬¹ ÚăÛÞ³¥„n#õj0D‘© ô<Š• Š5AŽGj™I6Žâ¥F©ÛÛûÕ24…;½J¬å;¾´ôC‚BµIbCÁ=9ã U½•`>Lk‰›ø±L›¶Ä”÷ÇZŠvXNÔõ5Ÿ˜òŸ6C´Þ© ~v;A9ªK§³ïÆyç½M 5‚˘‘ÎÞ3ÛÞœ˜¶GÌHÜqŸçR®-bÝ‚}j¤Z¥Õ´É&íØ?sb£´Õ.-gG(1ã‚*½¾«5­Â³`Æ)í]5®©Ò«#™Klþ!Jëm/á¼ExXaœg +§·»ŽuVR3€yxÊÏL²zTà÷RÑEQEÌí.ªOMý5¾ }i§Zæîlv9yeŽI§Ë)QŒ˜üñX’y7bÊÍ/R1Ž•‰y†S&åó%É b´-‘¢°H$9)ËUY%2DÏÝïŠägˆ?2w©C¡Q¸¹#Œ†â“ÏWÆò庻µ'œ’/Î͸Œu¥€y²Éåíªî¼â¯ifyvðª n«šr|Ö\ p´"Rª ñÔVÅ´OäÛ£ ”\1ST”QE-R€i®p´ŒØÜü¹ëíQ!ÊÆ}©Š~RzûP£päjX~x›pv¥Qº&Ȫ®v …;N2sïúVDÒ<@„F+‘ÁÏJÎ’F•RWw͓ޘZ¥Ö@Xð£l#2 óÑQIºBêàœðQK¾)¢1ïTcÔ?­#.mÖ4•RB~dãñÍ2O*âXÝDŸÝn?ZŒäFˆÃd‹• 9¤„ $‹‘”mÙŶ¡Û´ãkfŸ¢4ç*}HÎið\˜Ð ²ŸSÞÀDÁf^ôò •y€9ôèjtžÞA‡¶I{ J%†AóB¯N EäZwÚ¼?íŸë@þΓ! ’Üÿ|œŠ1dýQá>§¥9áÁC0òÈÁ^çó©eµ mæV…† ƒÏëRKo°Ž@caÐw¨rd+Žy%j˜aäSž¥j²Ñ‡ÔUM[!&ì€ÄЇQù{‡Þ$dãµA~ûFð>bEIlÆkaœƒ‚)a&[D “ƒÍH„Éjž•RñdHÿ) F1QL„Âä€0¹5ʰ‰Øõµ‘4r )PÝ=+:H$\1BèEeMo(<¦ä»¡N¶wfGÂ+Wó­½Óùœ´´ ÖÞI7ýà¸ú×WöË|ª™W{Ï9®‘ï­ÖTˆ°Þýk¢k˜„ª›†æç§Ç"É£¥L¬dTŠêã# §Ó©i V.«¨=¼’+D¯´m2l €} gjÿg,žXb8ÍP½½ò€ãŒóY¶–òM{’‡9ùŸjƼ;$’±fþè+2e‘d•™˜Œa[‰,r9i° ®1ïþsLã‘ñ(Æ)ð´r9óÜñPeUh”†ÁʑժF´;ˆ@\v8ëCZ0$¸‡Ö®éJÂÅKŒHij}ksH…`±Uà¹9cZÚt~U¢)ÆîwcÖ­ÕÚ³EQE´QQº†ãýME0¡¾§¥Fàwñ¦…ÛôFS‚~CÔ hBŸîš8à=©ŒYC…vQ׊oÌ2:ŒT2d©ÚsÐ÷¬ë1K2œySީͽrËœ÷½5$]ÄíÚ穵E‘¨,~RÝp*8™æ8ROá"´­£–H‡’¡‚ކ©‹UšF\`HµQ¢a|²2mÚÀ°éžj£BVõd+… 7*H¼–¾y¼¦V2o9è4°y“ê‹pÈÀ™ôÅ%°yuO=ƒ(Ý“[N¥cÄ/°· âº[§1(»†s]¤Ä¡cl9Í6ËÏbZi ã08÷¢ÊIdÈù À¢Ù¥|™8íVêÕOThšÓƒÈÍdjR9¢@y$Õ ÖVÆï}«g<çµl( çn=«b(ÊÈÄ ¨{V”jC’ST”QE-RQE ÔSe`‰“Í5Î0·¯JåÉ—¶5ï=4ŒËަ£¸–¹ÜxŒSexöýãùT>drˆ lu54ñÌ h¤¶:ž*›Ê“ª2ÃÖ¢rÌ„‘ßI‹l,G|UWÉ\žôè€d%€N ©íP¤sÞ¦´€­Á“øqW9=kW¶qнÐqÅU¹u$#mÉë;Q‘]„d½R¼‘‚6>^zÖuüî#’8"lFsÅP×c^sÆ*ŒÒ»cRXU«+q l¶í sÐUËDû%Œ—*2û2íW`O³Z¼Ø,Bä ¨,îRi.Zå¢mçîÿÍco»U’ïíl„·N7VBÉv‘5áŸi?Â;ÖÝuµÒÕÖ4¸ÉbÊü1'8®{R‰"¼#qurIèkõ.˜nݼu=ª­”,2ÈÛI'Ψ£žO°Ëù¹4Ô™ÚÉ—;¹4’¡t@Íù$úJ®ˆ]•IÀ<Ÿj®#ó ©<id1¬PÚG´<Œ ‚y^õ­`#TŽ ™ÁúV°EÄÜ9ëZÈ»P(9À­tWëEAšu-QE-QE”QP]là6ëŠÌÕe · n¾ÕJùÕ óÁëTàXŒŒÇìHûßáYhÑ»37@x¹ª1²1,x÷5,Œ™fQŒsN¸xÙÙÐÂóÔÒÜ2î™û¾ôà*áKØæ’&`B©cùÑ`@ ¤‘Í<œ}ü:ñRHø]¬ø©ÇFÀÚ¢yUsòŸ˜ôÇ/c’Ý©ŒêÜ‘–¨Ú@ŽþyÏ^j“ ÿ6@Ÿ^j“ïÜ ¤/Êôù€ô¨>ÔFyâ¢%s“ÅJú€XÖB>ðÆ*G»Ú¡±÷…I%ÐP xSbÔãÀǽ_"¬B9¢;ÈðÇCÖ¬CwŠv°#ÒŸÄl=©ñÎŒ:‚*Ò)˜r=E]‚† ‘íV¢Œ±Î2*d‹»p+FC\`zU¨ îÞ^4l»)5a¤ŽË…8áIÅN]¸õ JŹùWÔž+>k™%%ŽcCïT¤Ý%ëH^1ïyΚ‰#½Á¡ÍG!SÞÀžÆ¨-Ò¾^²¼ž‚²Íÿ•"ˆ€vÆzt¬Ù/þÎûc]ÍØž”‰u!•'”ïÕ"¯§#ùRÚêRÉpZr]21ÁÇAùÒÙêrÏq/œ2¦>w4Û´¸•ż¤ÿžõ¶ÓÉóy,ªz.j ­§r ³<-n×i]]cߢÛÊ’"d33ÛÞ°µâVeÇÍŸòk*ñ#F+ŽIäzg½EhÍ*²*Ux늬„Gïàž˜ïP§ÉÏÊXñïSFØ–8`§áQZçí.xÝÏåLµæê%##‘­ÐjK ¦1ìz̶֜ڴQ®gØž•uöÇ©FœvÉ÷íZ~ձ޼æ´i(¢Š(¢Š(¢ŠlŒH äŠ7Ìô¨çp±žpj¬€•=Áô‡>ã’yïÒ³&ËsŒóM `»GSŽ*» Ã8T8äšaÇ9W×=M8¢-Á'#·=iJ)<Ž‚¤ ¨ ûÂ:ÓÔ¬I…¼#­H Æ„/Þ5Fîþ(%w¶~^j¬×+Ã-ž¹ª³]$i–lâ²&Ô$ã$ ôEî›Ð{U¼wl/ä*ʬÒY)y6'íŽ*ql¥“ÁfÅN#•íÔ—E$ôcЬmn™¶ ‡ýÖíQ k†m‹‚ÙnµÙî¶®® ZžÌ½¼qdïÀéVžÂF‰wÒ¬Ídï';– K Iêí»âªý—eÀ‹r³žÆª­®Û•‡r»ÐñZ¶Z ‰›)]Üí^ükVÏIfò¦™•Û0?:Ò´Ó$ò¤‡ë·µhb+DÛ†“ñ«“]ÚiDBªÓ·VÃt«S^[iÌ!;¤leŽzSí®ã¸bˆŽ¤zŽ*ÞªÃ|æ4ŠDaýáÅX²Ô!½È\c¨#ŠŽuV¸(Ý·“íPêEdºE@7ó7µ2ók\¸ÜÌj¥ÜÓ0(¸ÛŒn›wq1ù2*•̲T`(ã5N"C€à6ÕÀ'Ö ¶¤Ãá±ÓÚ €nbÅKC$¬d~D=7sEÚÄ’½{f™z«‡1G_z¿cöi0cË•çõBŠÎYYи[ ÕsFŠÒVycâ^„7j.”obdqÀÛÚ´gcRÙ,þ£µ^‘`¶Ioj½»æØÝéW»Õ¾õ…yw4·>Jí1ÿ\î¥+5Ë¡Æ3ÔV5ôÅîY0 ŸâæLÍá¶'ÊHé“Ö¢‰ ¯±wmÆ3éLWÇ8ƪȈ,aØ/ƒî)£1(l ãó¤ÁˆÇ8üé yn“åÃ; ý1R{ÍN6ægöž \ê(Ê9-Ïà+Ošép3ô­¡žôRÑERÑE!öëHÙÇËÖƒœqÖ¡p߯جûÁ(Pe‘H츪—@3#ƒè1Q”‚gÜÖ\ï†àøõª9ëÏZ‹*íµŽŽ•v ÝSø=»S†ß,mӜՇ #]£hoÖ¥u ÀûÕ^âB°1Ú«NçÉ'aj Ø„cÀ¬9ä†WÝ#7ÐVdŒŽÙrß…fÊñ»eÉÏ «B4HãÛŽ…ºš±já@ÀàµXµU¸LzUžÊY¤g–A’rF*ävižàUwµ–Y Jç$òW‘$‚mƒpÀÎj ®’awØÔ@KûT¶EoèSLX¤Ÿ2‘Àcšè|?=ÇšRBÎŒ>é9Åt<³n)),cÍ%Η;_;BFÆbË»µ3PÐç—Pya#k¶~•^÷GšKöšÆâH5£iàfR…@= \ÓtÛ˜¤v»°*s–Ú®éöW3›©wôØAäT­iÉ;ÜúÁ§É¡Ú•’LÊïÉù›½,šE±!ÜÎyäÕc>Çclc“´pÞµö÷µ»ÝlBD‡ pøëYŸÚ kz¾NY°>õYxƒ*œ+ÄûWA-¤m¾u?+€ä{b¶¤·R^Eþ/›­eÞË$rSlG¡õ®~îY™·íÛ8õ<²3nÆœf³ÖbÓ ¤§-ƒšŽNàpV£„’w)Á•gcHäûÄô§L†nA;Ï¥-Â4¼¨ÉÆ*Þc:\+J͵>`}sÚ¬hzuÇÛ£š@è±üÀúçµK¢XMßœû‘T~uzðár[¥lêlUF3Z·‡ 9«Z™ ¨Æ}ªölÕ 2ÙÅc¤k ³$DÎNöÇ9äÖò*O*D%ÌØ?ZËwUy#»™¹úÕ[‰®K HíǦj—Ú%ÅÀ$c U?:fýÙûÄc*;V¤6æÖÕ-‹Ú$õç5fòßÈ_)[rÏ&­\Ãä®Àr9æ•9ž9?LRiéæ_BªpAÜ}À¦Ù.û¤ q·“WÍtY­ŠJ(¢Š(¢Š ëL–Tˆߥ1äXþõV‚wy¬‹ù¼Ì>NÜ÷íT.å ƒž=ûS†}âzsÒªÇr ÄûÔ1ƬËß>õ^õš4}­‡R5^ïä-·‚¦«Ü™+Ô”‹:\[¡@PÆ@aéïSÉ2]YÄè6´Gk¯9©å•g‚9`ÇÁÈÇ,OZ©"î·qUdSŒƒÖ³ÛNò›Ï¨5XÚîl b;àtªÆÓså?NÕ*Ø:|Å¥œUYb»e‘ç@ÂR—Ô&?­fÉo{&T$?ÍNjŒ–÷Q.%ƒñÚ³n-žÛl±¨#ºÓT4<9û›‡€ƒ€Aû¦´f€qÒ¥¶>d¼r}*XI!#ò­¨&dµQ0!Àéë]Wg´A?§­l¬ÂTK÷€äU9ïmç óÙÔwU »ÛkJ1MsÞ©\]A08$lìk@™d81ü¾±Zl¯;Fv ŒÕâbr0£¶k!í„lVÁY>nsƒßô®~æÜÃ+¢œmnç5‘4%…laºç4û–*û“2JX/]£­KfVÉ.§'p)ñò,98ôè¥HáR¬[yÜ õíL¾•UÊ¡9n¥ºÓnŸ²0pz–«¶Ût§2’OáWô‹S¡¤#Í+’=]Ó­ü—ÃÈA,?·Zõ~’Š)h¢’Š)“ƒéU5)cÇæ5ã…P§©ªÄ)? ÷8¬‰Q\þé[=Î+=Ð9ýÚŸzíãÓ˜†ÜsMrcãCrŽÑ£sc8¨eFt8äã95 ¨Yî3X–÷fÞí[§8e#µR‚àÁ>A#œ޵N Ÿ*PpN­Ø’ãtwœ0qŠ×²ŠÖâ)Ri3€¶;Ö­´vó¤‹+lŒvâ¤_"Õ~H¤“ž g5*Ïgf¹ŽÞIˆãwcOYíí”l…Û=ÅMö˜È88çŽEZûuƒ)?tõ9*ÇÚíXdwß”+1>ªµåÀ‡÷aÉ;N1PÏ7–vmfãøN1P•R7!ÜzmïTd|ȤÞ[ŒÈ5YãV]Ѿâ}zŠ|X\üßZ–ÍR2Êü sëO·•½9¨ÜŒ•/>½«>èǹ•eϵeãèqÖ þÏv (e8a‘íO¶´ÉHÈ<ý)!³9WVgéRMfrde,ß…Msm |‡d'ò«ñFxb2{Sb‰à ‘ê*£@á„‹ŸqÖ¡Ž5WIϽHð–++:¶>ðªFˆ² ޏâžñ‚VF`qéU’xÑØ„b êO5]' H÷5_íK¸€¤sRÉ$3eâBG+šVhå%£S9Z{”Ë»ÃÊ@ç–ïLšr>Hø òÕÅÏðF1ަºRWîç“[ìË·ëm™pëQ¿Î:c¨¨&}꤮㎵ϼ.WÖ¢EW¸‰‚3Øë£Õ­3k݆åˆÈôÀ©ìðó†Á'‘œãŠÁ•d €ÑI·Ž¸ªš‚âVœ€NV»?ÈsƒœU­û†TdƒúÔK&ä óÍ1\²|ƒ§Zš0 †8…jiêžZ¶yöëBÐ.Ô?Ò¤qô«ÑIˆS³ûØ«1± ‚3Ö’VÀ5¡.!­÷ÿ•2íÇ–OÞ5]› 1÷fdÅ"•ûت[Œr=*H¤èÇôÅ^·Ÿ{ão¦*Ô2‘ó7LtÅGw;yx‰Kw5«|ÏH‘ÕªBåŠIîh†f™íaü8éQÛ\Í8ÈžEeãhÅ6 d”dJêð§Èn[€»ÆjIQ–ó†þéÇ>õ$ªV<ËßÓŒÕ †€0x&²n~ù xôÍf\røJˆ™$0Ç^p*¼#€›Û„ñU¥y \ñÚ=}sJ‘•7zzFWº² (üØçžYL.“ïV— óuÓ(ÎpÝ5¥rßu½i Ìý ïU ’†t‹ ޤŽ>µ9ÉTÈÇRzTp4s’½MEssnǹ˜wãŒÓ%š%“专Ä%Ú9棒䈆ßqM–ät@zŠI.r1ô©mäûZê A–÷ÅInæà6åÎÁ–÷© “í ÄŽPf³ßÏfL…Ϩ;“#2äsǵf»¿œÌô«ö’ùù“æÇnVíßÍù a±ùÕëwó†pØëPÜY%ÐçÔg¥G-¶ÒYj)­pISœõÅW}¼ªêrGQê*$- ŠÃ’;{T1††EeçÔV¤6ádó÷”zÕèáÃùŠ7#ŽTV”pí}ê7#g+ïVP)OÝåF9Š!‚ñŽÇŠ‘BBñìj9ÎÜñƒŽ=êŽ1Î*)ÎÒ~•ŠÃç õ&³ŽwúÖcg$ZìÈp'Öº—U "±=3]3U$ô&¢‘dS™*‘É«\A2æ*€zj a‘~ø\CUô˘縛 ÅÆsOÒ%Dºvf(Å;L™<ÇbÃŽ*fh Ĭ„sŒûñÿê¤Ô¦îßËlô'ŠmÜ‘‡Øx%sùR ØïÎw@ª‘|’Sš‚#;œÕ¨÷0'NÕ³b’y- ^ùrqZvªþQ|sÚ« — S zÕ½• ˆ0ÁcøU$º~ï#©©‰l~1Þ¦ åån*`X)i¥E+c<Ÿº£¡5^Y2F[$ýÐ;š†WÉÚy' ©Pb0 ªã¨Z´¤ýdUÂò¬˜ÑD€mú~iA^6œ·N”ªFp§,}ªp(,?1Z0ÆÄÔ=ªÚ‰0çéTïä* «esXúÍÃ1R®Lgµfêr¹e*IJÍžWò±¡߿ҲÀwWlý檻£8_ïSÀ¬yå#ÏȤScB[$;LHÉ|¶@íV ªò_•ôdFWåGJ²w9 TÌUI ž:zÒ3l3HìUN9ö¬9®&¸”F–Îâ¨<’Ï @2Ýâ³Ý渔FªKt­Anl­dV M"á³ü>Õaì°:ûÇ1=½ªÊF-mÝ7 ïÖ³Y95E•·yª {÷§FX©A¥\í4ôÜSÍhiÊðvánœUÛ ÐåÏÿ*»b¦,ÇõúU{›UIX¯Ý<®=* áÙ#cîžW^{pŽÇ±æˆ«®Î¸¤r‘²–-ÊÃiíW•~^}@iAÛÁÎz⬀qÁ'=j6†69^GjŒ¢–݌ڣ*¥÷c‘V!•ƒú‚¬A)Wö«I‡Ó®O ©9ïšuÑåç½-ÁÉÊ{Õ`ì NÞ WÞØÄœ¼Tˆ7'mFÖñ»å׿íŽõ–¬~aϵFaWl°ä×Cµ‘ÈÇÈ{‹[oE1CÂÐÿž•®èÉ)S§·j†N=AÈž¨™ž>nSÀç¥FìÉÃŒ«tö¬­3e®­$xm»6É‘Àô¨´æHîœ6Yvᡨ4æD¹uäå~bjÔS ›–»"c·èGËçÞ£œ?ZIäYn²¼#t⯄Íæm΋ô©íá\ŽËš±BIsÆjÃr7/·ZØ”µ½© †L`0àŠÐ“1ÂTŒ©ã>•BFe¸o™F9ïšç¥f–ÎÏ&±äb›vLšU+"Í”lrOÞ9©""`U‰ =M>$]¬IÏz‘v¡"0^N›˜Ž>•2l@c ÊÜn£éS&1åĤ»pXòjÇ03×½j ØpÀjïÙT¨øÅ=cDä ŸRjx-!„îTËÿxš–8#•7©¤‘°3» Þ™y(ðñL¸|[ T'uu+ÁO¹íX7$Ÿ(Ç'ßÒ²gun.j DR®3@;EA2äãí¦DÆLñ×mJXïðªËô¤,wŒŒLÏïnƒ ¨®¯¢‰Š€Kö_J’k˜Óåä¿P)òÜF˜ÇM·œ\Æî04‘7Ÿ¸ÆA¥…„ÑÈ5Û-´-*ª†=Ç&™;yoJdíöxK€7zÇ™‘ãÞe-!= P‘•“yrXžý«>b¦=ûÉbyö«¶R©€nQ½N2G«6ξXÊüýZµuhWpù‡|RÍpH8£'¹"‰&X¤ ¨§×Š$c}¡T篲fYUðcÔõ©X©!Ã|¾”âW!Ã|§µXO+f%}è{Ò§ËÛ‰zž„v©—ËÙ‰àzA³…Q€:SJ+¶c­&ÀÍÀÆ?ZFÈþ- œ`PÜÞÜRÏÚ³9ÈÁþt›sþlÏjaا†¥0áOÞÿëTg ß{§éO+·iqóp¸êiâ|£)aŸn¦ŸæåJ–ö¨þV9$­Gœä~4ÀzŠP Œ P-ÅdñZ·#æc·úb¶¯‰KŽ~ï¥j]“’zcò¨`V Q¹aéQmi™RPriK²Ê¨ÍU½ˆÃqö˜vŒ¦&ö÷ª²a.R~ñª­„¸8 /ñŽÂó̸u8Ú®v¼·ÔÛÉGÚUe‘íLšRÓ–ÀÇ qÖ´c«—èã= K[†‚a.[ s€zÓ­g1J ò*Þèî ;r;Ol[²Í£h’ªÏƒÛsZï$W¶ë‚B±ÉöÅQ#)8BçëXRl û~uS€kðóÈ…6[‹¡v§P.Ÿ»¾H·mxÓ¬b{7aG5¬PaT=+©Šâ"Žøæ·Q>èÇZ)ôêk£5ÄžT{€'µ2GòÓ>µVP²ƒ†aÀÿ:ļ (` +79Ï›rU* yàÖeÔ¢8œ1Î8ïY’¾Èƒg=EgÊûc O=>µrÖ5¤FØb™'ûÙ9ÅKåþæ)P…%y÷©%LB’Œ¯5ÈfÚ§ ŶäuªþqšD@’v檤ßh¸XÀÆâj–©sê_eFÚbˆ žæ§ÔáF¿ûàõÆðóÖ¥°‚H¡™[ ¼ªy­’Xö¶qÓò§On­ œ–<+"ÙÇõª[ZEËÇ¿±Áªf(#?¼]ÃØâªmã?¼]Ôû‹È"·Ûl›3Áš’âæ‡mºmÏjK‹˜R-°®3ÇÒ«Án[¸9=ê¼Qä÷ïPEn½ûÔsMåÈÊN8ȦÉ!FeM2YLnÊ4¶× ÎËÞ–NxS ˜žƒŒÔÓ\¬J±ûÜ-Hól\–üI$â%Ë7áK ô3.ÆÊŸ~”«p’ ƒJ—1Ê:àö«2H±(‘¾e\dõ)ukŸ™WÒ¥gXðÍÊJÍšäK)o/o§5NYD’ WÒ©K8’BÁHì)¹Ü}})§ŸzoV©bŠRÇÓôWÏ=1RF²gž•fua¸*XËóTÑ–šÛ¼@Y:àü§ð­íY ÈŒsÍkj C©§ÚF<‡9Ë;š³¦D­§>ô„äÕ‹8Á³ã’Ùæ¢òÖBé6ÃnȬ¸£G”ùŸ(PwzšÏ‰#vbà` }j;{H¬•Ö0TÊrAþl«öxÌ'†c¸ñÊšGAo„¸ò}&|¬¨²¿Qš¦ÙCǪœ·w­X¶ò∲ƒ’Ùú㊿k"EhDyÜ_&¯B˘ØNsUa+WÎó’Ì= Rˆªýìäj”d"·9 “ô©´Èp¾vr>ê“ßÞµ¼=gµMÑî6'¸îkKF·ØpG/Âj¿[U¥ESeZ†ë<éëQÍ‚˜'Ф~Rìî1Ÿ–°¤Ú›·8#?.:Öd„ mÌ9éYz® ¶©“¨¬Ëͦ©5™{ó[¾µcHžÓáóNÒ¹LóMYÃ#\TrO¾—|´û.'g”¨en4ÀÂ9ƒÑ¨mdÜ#µYÚÌs[ß›¡Ù&{Tú¤Ý}¡£`’`†ÅZÔ’{k£9¶¹È8¢ÃWó%X矔6zS¬µÒ„—?(=ª[ Ag#ü¥¸Í[xÞ+’$«ê>áÍO$RG9Wÿß&§eu”«–öì}*­Å¤‡,¸U&‚C–ŒÕI¡~½ªôé$nAUîsQ-«¹ä`zÔIhîÜç¨mMÁN@Çy!I zc…9#UOì¸IË äüÕ±RrÃõæ«} ˦µÅµ‹6»þ"y¤ó­íÎÓà{“Í{k”ÂN{“QOäÞÆZØa׬gùÓ& r»¡à5á.W|<ãøOjÎHX€>qÚ©íl‘Üvª!$ p0A­ªö¦78fEüñZA€©8l Ôd RpؘÊP•~ÕH€¹¨Ûòµ\ÓâFß’IªÅ¬já‰9+Ú­ZF¬¥‰ÜE\$îŽ;ÔÄáàcùTùÃgMräsž¢†Â¶AÎyÅ ÞÝkiáýÊÇÇ$äô®“QƒíIQÈ“Ï9Åm^À.bG‰çœñIpßc´XâÆð6¨þf›©J4Ý0CM»úšn¡7Øì¶E÷ÈÂçÓ¹¨í•†à~PŸz¡£§›!‘ÁÛÌO¿Z­¦(rdl‘ÏãHîYøæCÈÇ¿NY Ó“Õ݉þ‚©»4“c«¿T |£ÒœV L{Žxæ¤Ø‚5-I⟆l"¼ŠcwÂ.!unV¦XÙ°Ÿpc½T»!ˆ»±5Zò0F„*)7©?Ò«]F¬Ë!P°úÖ¤h#c@…u0ƱCiª¡F=o…Úª08âO¥¢Š* ˜nã­ej“—jqTo¥+&üجǺG¸ÃPôÏZÅ#\eÿ„äŠÌY‘§Üüí<ÒÜÙý­A„ðÿ8•3Ù}¥öÅü_:­>K/9¶Fzò¢Ÿud(—©õ©Nv°ä¤l£œw§¶™:ÃÈB“ëX÷áÀ ¤|ÄsÍc\DF<µb1Î9Åd]DÊÁ¡\(ëZ»§kéå }ArqÛs‘î+kNñ_gj œ n ÃÜV½–· °ùWɵ€Á$piot[{˜þÑa.É r?úÔËý"ÚeûM„˜SÉQÏåéQ^é¾.,¤ÂõÇjµi<<™Ÿ¸7ÿ^‹k‰U 2¶þ½MîPÇ+vÀ"Ijw¦î}jX¤†1™v;f¤âAó®âLÒRY ªlÓX癊Ä#°4Ó"K.åM”¥J(r4ã–ϲšqRжG¥@×^`‚ v"«Ésæ1ê*œ8àcÕFþÌÎᕾµNêØ»†¨Éªw–¦G QUà´Ã†I—zõ y¨£”å\n†¢†¹_‘Ö´¥û5ÄË&p ¼f¯Êm§›Ì ÈãŽ3WåX%˜º¯'Ó½7(SÉ#!NAi›Æ"#€x4Ü« B:w¦5´W#Ëw…² µK‘YK™àæšÖ©8Ú„>µ6m1YN õ[<“å#¨¨á¡rŒT̡ϩ̡‰ö§2†ÏµE4«±qÉÎ)’0Xr:Ó$päuÍÿÙÿØÿÀððÿÚ ?è«¢®Š–Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š)(¢–Š(¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¢Š)(¢–Š*­ä‚8ò ëÆ©êçéUîä £5•{~¶¨Ü̸U¬k«Ä†'$ç…_j˺½HcrIÜxÅoWK[”QE-RQE-QE”QEQEQEQERÑEQERQE-QEQEQERQEQKEQEQIEËìL“Ò ¼¤GË_­e]ÊV!»ïñ‚}+âp¿|ÙÈÍf\M·ºûÖeÒÀcÔw¬™×Ïrõ™p¾{dò3]uwÕö¢Š(¢Š(¢’Š)h¢Š(¤Î(Í¥¢ŠJ(¢Š)h¢’Š)h¢Š(¤¢Š(¢Š(¥¢Š(¢Š)h¢’Š(¢Š(¢–Š))(¢£¸‘"ˆÈà ŠîD†‘Æx¨®$Xâ.Þ•Çê:„×S>P:W}x÷3ŒxÊ_Þ=ÄÄ(àb¬Û¬¯$0ã,á©m"–Iâ„ –«6©$’¤XÏ+«®Öºz(¢Š(¢Š)h¢Š(¤¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢Š(¢Š(¢Š(¢–Š)(¢–’ŠJ(¢–Š+3S/2¦£xRC’4ÒŠçq¤ò›¦á¥ ‡€>”=@"€£Žµ bž(¥¢Š(¢Š)h¢Š(¤¢ŠZ(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¥¢ŠJ(¢Š(¢’Š)h¢Š(¤¢Š(¢Š(¥¢Š(¢’Š)h¢Š(¢Š)(¢–Š)(¢Š(¥¢ŠJ(¥¢Š(¢Š)h¢’’Š)h¢Š(¢Š) Rž”QIE´QIEQEQKEQE%QEQEQERÑEQERQE-RQE-RQE-QEQERÑE%RÑE%QIE (¥¢Š(¢’Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š(¢ŠZ(¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¤¢ŠZ(¤<Ðh5SPiA*¬Øb§©jRH‚ ª³JžjµÛºÔ¡‰É˜ÚµÌR˜TîÃ}çÖ³¯q ˜·í?yÆjöœ©!Œ|ÄwjÞ®‚µè¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¢Š)(¢–Š)(¢Š(¥¢ŠJ(¥¢–Š)(¢Š(¥¢ŠJ(¢Š(¤¢ŠZ(¤£§4V]åÚI6ÅÒ.¸îk"þíe›ËPY"ëZϺ¸W} eSÓÖ°nfòݲÜsŠç®%)+ÌzJĸ›É‘²$×e]ÅutQEQEQEQEQERÑE%QE´QERQE-RQEQKEQERÑEQIEQE”QE}h¢Š†y<›yS¾•Ô¾E´Žüí⡸q ÏÚ±ôÛ«k{i¥–@7ÔÖ%Õ½½›<®f$õ™mq¥äp $ŠÆÔ§Žæíä›ié‘X·ÓGqtÒ)%IôÅbê2ÇqrάH®Þ»Êì袊(¢Š(£Ž(¢—Ž3ÁúfŽ3€A>”QE%QEQE-RQEQEQEQEQERÑEQIE´QEQE-RRQE-ϵ­]y¬, !Èìbëwff[ rÜæCè+/T¸óYm"ù²rçÒ²o¬gÜ#%@ÀÅb^YÍ¿ „Ó“yg36’SÂÍÁÿ€ÕQ‰¿zsáªkÀÙ˜çÚ»šïëµ¢Š(¢Š(¢«ÞÛ¼ñ¯•!ŽE9 =* È¥š@û\sPÜÅ# 1>Ƴî{Kû²àdßx å®$»Ó5æHY”†'?|W;-ÅÖ©bW,7gƒØÖ˜— 9 ®áÍtk|áI‘CW@.J…2(UcÁÍJ@#¡«€‚2¤ê*ÆsŒt=Å´QEQEQEQEQEQERÑEQIE´QIE´QERQEQ\æ©­Oí¹*«Ár9?Jæµmzt¡¶!x-Þ°u=jXæ1B6Á>µsÃÖ¥`k™÷’ž7v{ö›-ÚæUýì§9n®è¶û`óeSæ?,M[»È?*ü¨½KtNÕË]YÝ4îJ–ãË\ÚÏç>Ww=«š¹´¸i˜•ÈŠík»®ÆŠ(¢Š(¢Š(¢«›8žá¦–$tn‚¨Í¥ÛÏvn&ÜäŽôVM:® ò’Ùìz ”ªK³aR‘Á§jŸl¶ ß—ƒÒ–öÛí6åPŽ ŒJT]Š…Om‚Œc#®*hPG ì9§T´ú(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š(¢ŽÔQEQIE´QT.t‹K›4€çû£½PŸG³¸ºóäR[¸õªré–ÓN&u;½*ðT*Œ0^P0\Ó°ª÷, í+»Ú©ß8SÓwµWº`?‡5"åÉ?/ «Q¹Ø÷ôšã,Oé[5ÓVÕQÚŠ( $îiœõ ô늋í1¨ÌŽ öç5¹‰#-#¨ÿtç5š5R]”cß­`jZ£3\DY–2¥\Ö&£¬ïûD+¹SkGsY†©•ž0ÅkqÔÕ-èÛj*$bÆ'¿­RðÍÃ&¦±—mޤc=Ᶎîœ_4R;`@÷؆¤=9®ººz(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¡ˆPKt&‘ÝcFv8U'Ú‘˜"–n€dÔ+uŸ•ƒÜ Ë]~}¦6ç¨ïTXœ®Ã€q‘R‡WáO>†¯[ÞÛÜœDùoîãš· ÌSýÂsèiÇ…Éè*g;±8š‘ÎÕÜk*îñ7 Üé¬ûõf+ ÝëYwW`’±œŸ¥Q»ºòí\¨ýæMP¸¹Ùûç­Rº¹òíØ¯Þ=kx\Dfòƒãµufhüß(¸ßŒà×Aæ&ý›†ÿCR´úuW½¼KDËžOj¯y{œd¹Ëž‹PÝ\¥ºå›ŸJÇžîi!%›pç9b°®ïçœÌ6ÿtzVMÅܲ)%²=*¥½ÄlHbª”«1çmV‚`Ù9ÛëIyûÔ|çÃv¤º`ñ‘ÐûS/tG±õ¨´a¸¾0N›ƒ!«¾³A+¼ê „Õ7‡í£23Nb>_¥uÑDD‘F0ˆ0t¨jŒ] "Æ¡T` }--QKEQEQIEQEQEQEQEQEQEQEQQÏ–'8Þ1PÝÄ×ÒDÓÄfX¤Œ¾1Qˆ ‚8î `&‹w)õV4zDàñŒg®j­üæÖØJÈ;Ô—ñ.·aÛ7sRÏþƒy|IÜÖöŒÓHCM!Ͻd6£q)*Ó9ÝïYFþiY•¥o›µKû—‚HhIXŒg"¤Œƒ)'&ãåÆ3÷$¹˜`­(ÛÚ¶ |§œI-鎵·§Ü<‘Çu+Ç®{âµìæ-\;džµeïF$drM_“Q@¹ ýãVžñÎìïȺ‘®&.Ü©éšÁ¿¸k©Ë±ã ÷¬{ÉšâRç‘Ð b¢IÅ@¨ÿZ£T¾*¶.Ô°î~†ˆ“˸ç½$H#¸ ŒäU©ìCÚ´©!ÜÃ;qÅ[žÊ8Õ%g€ÅžâÍc “‚+W4µ‚ÜȲ«Hï‚HÆ=«sO6â1$FÜy=ö­KàŽ2èèÄž[?JÔ7vûÂy˸œb§7VÂMžznôÍY3ÿgš¹ôÍJ뜊”`ŽØõüƒÓš)h¢Š)„\± =h$*ä°Qêh$“€*#wn?岟¡ÍW{ëDë2’=j#s82ÀÔo]ÁA_] mV2#%}r*#ä©#×5<2Ç( 籫PÜC8 ~Šž9RU>ÆŸI‚}*Z}QEQEQEQKEQE%QE¨¬é3}e@z㡬=H\G;yTRyÇJ˼óVCå†U'œT†ÜÉn÷eǨ’Õž-²nË RÉ’"$ ¸Ž¦²gÒ¤”‘>›"±(+*m5ÊŽõÛ5º³¹ã<Ô_gh£fcßµ1mÌ1–cU~Öâ\¯Ýôªþ{n8éU ÙóŽ•Ñ¤˜„YG+é[Áü¸QH @ûµÐn ©àÒ«;3’Xý1Tæ”»c<{UY¹ÆF=©…Pr̵DB÷aQ½ØS"êÊ ÷ü 㱤•8ȵYâ2|Â~îicbd.‚AœŠD‘ct2 ätÅ w">ñœÉ'€*k‹øÝâ°Ïbr*IoTÊК‰"‘6ÎÀªÈÙõGt–í3ebÏþ*Œ¤ñÄÒ¶U ãÅW¬¥HåU˜íRx&¤ÓdS6ÙX/|ž¦¦°pϲCŽù5Ñ(Æü&?:êÄ¥ù1é[Ãä\—ùqM7PŽ 7ýòj3¨Z©Áƒë´Ó~Ó82~•BçZQ/•l›È<³pQ¼×à…¼»qæ°êN@NçXŠ7Ùó¹ôª7W÷ ²Oº{-d^ê·‰å¸sÑk:ïQ–åv? { XEºª•Ç8ÇZdf «¸lRGåmœÆæBÁ²¡½8M$• Ž‚œ%Œó·8íD×{P4a”7¦~\S¤½eÚcÈÐô¥’ð® eT÷zÇR‚L¡dï0ë[vµ¼ê¨Í¶LrHëZ–—ðO„ |ÀsWÀÜâEsŒ}ÜñZ#œ0n¥[÷¤¥¥¤¢Š(¢Š(¢Š(¢Š(¢Š(¥úÐyÑõ¨.°!-´|£'ŽÕVøl´dñÚ ºb-ŽG?…sZMÚKxÉs#˜¼÷®oJ¸ŽâéÒîFXöü¾üÖ™r—3ËîUBü¾üÕëû?9UUНӭZ¿´ D%W¿jÕ娕B!Ú?e¾˜bœ&üçšÉšÄÅ0]ÙÍe>åLvkNyU‹€¤3sZwr ’zæ´î]@!s“ëQF›µSPÌÿ/Zª »azÕ¤µB»˜ð:ŒÕ˜ìШv9óÍXKe8f9•sÉ[xÝö©R3º´>̶Ð4›“®˜Yö¸ûÕÏÌÂ[¨1´ç8ý+È’l(è}+Žù¶¯cQN«ÃޔɧJŽU;sÓšt 2ÄËÊ.JýjÔwÌ-¾Ï %;néVb»o³ùŒÊÕ‰íäšÆFžJ¢‘×|xãž5ã‘‚ºvóZß«?3”dù\Ø­¦ÔMÝŠÈ2¥N×QØŠÕ7¢æÌJ‡#Þ©3¶àc•‰‰ÍeµÄ…¾WoÄÕ<…ør}U¹o%F\ÈH^gHì¿1"«Lʈò–& Žé_†%OµD’+pr EÈãï4鮯ìå‡&–G •f9§K"©ÚXî«0KÛÆÙCÔž6aSœ¿¡©ãhÖ å½ HÌ+Ï¥(AÁǵ(_0p@¨®,¦¬§9çÒ–Ky¢!Á¤’ÞhÛzŸCW¬/–Õ%l‚~lö­M;TÌJŸ½žÆ´l¯ÄXŽf%O¯j×IVtÝ ‚C[qMñî…à ÔWYtLíMµ/å6<Á×Þž¹þ,RŒ‘Î3SRÒÒQEQEQEQE-SYC)SÐŒk¨teÆA9¤uŒ½ˆÁ¬ }$[^|Á´øW7–-¯YË ŸÂ°­ôÁorÒqÒ¯Êʉ€Â®Nê«´Æ®JÊ€`ö¬RåÖEXóÐ|Þµ…1µ}:Ö.¥pÉ T'½_wY$,¼ƒÅY¸mòõÍ[ƒÉÁÈ¥\+n8àThvÜqLS·æ§Ã_ÈTÈcQ÷‚ŽMOinúŒ¥YÝTu *kxZöB ²¨ì%ÔOgò‰£=ÐÉgû¿1Ú>˜9¤¼I-†ÂìÑú¦#S)+ò“úÕEU.Jðj²ªï,§žSçä®>¹¤aópF?:dõUµ´Žt,NÆêÚZG4[Ël"¬-ªJ›³´Žõ!Á–¤±<î©Ê·„Ä¿6Š¥.(JŸz­g-q™[õÛÓ5 „1Iq‰[uÛëPYÆ1~N¸õ¦¾k²  ÐTNWΑÕFÜàSošì œ ©p7Å"‘ŸJ‚A•`FsÒ ”FI@)Vç«€AÕMƒ¯ƒÍiÜ"n2ã ÕÉ•r\ŸzЙï€3ÅU’u”•9_LUv7Ьóã¥Oc$±6Ã’Õ-¬Ž‡üÝ Mi#¦Aü lF†h™ŽœVÄ혹 ÅjÅ–¿ïc5NêË=jÝ™O›­RºµÛóU?>[y‚ÆåEGk{%´Éµˆ¨µäLX…î+¢·ò®Ú;•bYoºÛic¸&³Æ+¢…’`%V'píVªj––Š)(¢–Š(¢Š(¢’Š(£ñÅJH⼄c„àãÖ³&‚+écœ!ÁÖ©I\’U¸SƒŠ©5·’Ûs‘ÔÕ‹o%öÈš«4[c9Í`ßÏ$²Ú8VÔ¬ò2ÿ8¬;Ù]ä*âµc å†QÁ9«ä+xäæ´xoI§Æ7™¦D»›ØWsëZV 3"òƒ[ºDiûÄû¬¼äÖÓ•v¸èÀÒ걫ØH;@"¥×aY4ɲ>dR~´íZ0ö‘–P®nâI,)Áþ÷µrr3°?ç'vX°* Y$ƒ)È=G­G2œƒQÀΧ$çëZÑL¡TJ‚~ïqW¢˜(]ÊHE^Žuw ’@€ Úzf¤|1M§ƒúT²mf\t5• %£\g©Á ‹’‹€{ÓR.J  Â3ŽW•ÿ]+Á*ÆOUêW¯ ¡uêi"… “œú{S`ˆ1äæ› JO½Kä(?t늘ÂaŠ˜ÂaŠ‚âÜ*§>Õ±ep¼ûTDJmZÊx[ÍÛ‚­Q1Ÿ35žbo7z¿n›FÍû‚óš³…8 ½êäjmpZÕ¶”€2+VÒfqòô­+it¬Ëùä[ùÙéY÷ò¸¹1†%G8ª²È.¶n%Gj†å|Âppj¬ƒqàóUeú­]ðôþT¦n ÷­Ÿ \ì•­ÙÍÊÖ®ƒ> ›ž«]t•¶)h¢’Š(¢ŠZ(¤¢Š(¢£ºb¶òÔŒT7ŒRÖFµËb5gx–ÎÁ¤ÁcÐ÷5‡cz¶®êdûÝ­fÛ],ƒ?$ð+HÆ&‡ÌÎ[ÐVœ‰á¯'©Å]x„±‡õô¬Ù´„ub\ó’zVDúRÇsÎsY³éÈÊÄü½êŽè”lÀöªŽ0==*»}À*DmÈÅ6&Ù Í$mµÅZWØÊã9¨­¥òÝ$\’;{Uè¥ØÁÀÍ-Ö§i,m>×þÕ l7($ƒš†&”‚ ]F ¤¨ü+F6TR@ü*ú0UÈüj&“kq’zàt¨¤”†;s»ÐTO! vòÝp)–ØDq´ç5¶H¯ÁëL¶ÀÜ­ÁëSœ0Âõ½ês†SÈõ©ŽazŠ®XÃ`qU™À'=j¹p ÏZnß0mlc±¦„ó @¤ `ãÖ¡ ɲ>ýMF oÚSQ†MûPàMhG»¥_!?Jº™Ø0j•í‹HþdmóúU.­ æ#sïUnm Ÿ1"ªÉ Š J˜> ÕY"t:àúÕibuáÆ¨¤´+ÄmÏÊjk²ö&熩lŽñ<WV$ù”m?0Îêì‘Ã``ôë]*0<`Óéôú(¢Š(¢Š)h¢’Š)7¡Fèi’F%Œ£tjGMèP÷®N}&ìß1|›³¿Ò¹;"è^3K÷7}þ¹©t»Ÿ·”ü›² ­£¨ÛØÄï@äŠÖ}JÞ΄H’+UcÞ ±5Vyœ¤yXúV%þ¥,îBePþµ‹¨jRÊÅcÈSúÔùÁÁÊQŽNE9zó‘R®àÓñÓî*ÂHÉáxj9sVQÙs\ô®ZáÛ¹5íºVc×5ŠìLÌÙïZÐÈ·G#pÃWP¬±ÆÍÁÒ–dÏu08Ý¥\ÆìU¤Æ1š•ÀÚPa»ÔÒ¯ ô© ä¡,m¿w­gKf¨ËWÜ*Ç™˜ð3‘VD¿ºucÌÌ@¢£O™Á ɨ—æ`wri‰Ëuæò¬ŒC|Àd©úÓÎWlá—œQ»°8eԡèRï¢@pj`áÀpy¦·œ2åM0ʾa•4Ãó†ZŠKc,8_îžõ–¦5,8SëQÉlcRÃUc_ßgæ« ùúT1&qWÓµv3ïÚ®'N´ñƒÔ=)àŒó’)ÀƒI"«®ç¦M…xúsÐf’@¯éÍe´lòí^Fo?9©Æ­ç€£æºX™¸Þ7é]t1·Vq“ŽÕÑÄIˆÁ52¯B>µ:®pGÖ¤#¡¥¥¥¢Š(¢Š(¢–Š)(¢¢¸ˆËÜŒuÅV¾€Ï ‚ãž{Ô71™c88ÇëYZFÌC -íXMj›ˆe½«)­c9ÊäÕ9`,û>[Œ ¬ÖÏ4â(“Ò«µ¹–PˆƒÓ¥Gg?œJI†`2¹ª–òï$0ÜG­V¶—~wŒ°éV;ˆÀÚ¤$–ä*C’y ”7CíÞ§Bzd:w©Ô’1œŒU 1Ë»Ã÷z’}jtÙ 1@B޹ªÓi­½Š ±ka$¸sÉÁ⥊ÅáƒzÔñY¼1•cÏZµ ]Á\ñR@T6×7 ý*VN7 õ©²@Åw­$¶ìÈ_ø=i%€•-ÔUPþ\»Xã=ê’¶ÉvžžÕQ_l›I§¸‚¼j{¸àúÓÏÞz攲¹Ëd7F4çebr0zNb¬Üƒž†“Êupb œ}Ó@GG2¼ºi27ÈAö4$01°3‘Ac“œ£Óµ8³gºœsŠˆÞFYyÇ™ö­à¬œà`TiÞ¥_œp) ‚r\TxfZ™ Æ=jdcŒTªxÀ£,x'ŒžyÇÒÇ8Î>”Ö‘|¼ýiVSÁíÞšÒ85Z7U™L­†õ¤·Ûç.ó‚ÿ­$DÁ\á›§½t&Ô<]l ¶ 3Æ+¡‰p€gŒT€c½< w§ŽôRÑEQEQEQES&A4m8 ÔŽÕÄi4.ŽÛAêi“(’&VlÖ³‰'•ç÷<Ö;˜Š\g<Ö{`b8Á>æ§µ·h‹;Œ685rÎÕíÑälj± 3žºælãËïÎ1õ5ÈÀ¿0>Ø®jÙ0Czеö…ŽjC&t©<ЯÙ/Ú˃væ´4ØÄ…G-Ž3WìÌÄwÇZ¿:L¯2 nSÜv­k¨¥ŽXŽíÑ®)î;V„É"InF--ÌFU ªßn´ë¨<ôVD¯|}êYâó”2š«-žè÷¡ØØÎÚ¡>˜LˆB¸ê•R[,Ä]xqü&«-Ó&c› _J¦· c—ŒUa9Œì—ŒTžpt,¹elþ”öœ:œ6Pv OóU“*À@j¬£{î\‘éU%›péUeÁlŠ–%ßaÕzƒRB»Ðœò¼Ô‘ ÉžëÍ,Œ¥Ëäq‘ŠtŽ îÎA1Nf÷})qlçµ#n/…ž”Ÿ9lÉ¡™ÓúŽÒ”—B7v84¤²{pjœ°1ržsUž&.vÕg‰·µ:+$*YHaR•*ƒ#¥*UG4¬à®G›»+H[#Šdrb¯Ãv÷¤FÜH<j6âAàÓÜr+zR·Þǵd]ÈÓH3qPáç’4@Iª±in"  9ÚÁŸ!vŸÂ»¤ûŠ;ãšëÓ;G<ý*JZuQERÑE%RÑE ëEËa6“Öªß0òöëÚ º#søTv𫔃֛im·?^ËI8!Ï^¤‘Õ›nG¥K<ŠNÜJ|Ž Ú3šçš?!žõÈ:y@.1\ã§–ãª7úA'¦qU\æª9>n+[MfTGCÈb1šÒÓ]âe‘!±Œö­-=™vº»§5£3è&'ŽXgŠÕ¹•|È„äñË ñZ3H¡ãÞÍlQ‘†Î9Kö˜bo”ço hó£ŒðsŽ@¥“R·DùÎÿZtº½ºÃó ®ON´>£ §ÍÞÕNþšÜw Ò³uKrÊw Õ+èVKrÀäö®z)ä´›rõõ¯™•cG3ÛˑϭkÆâåˆzŒô«ˆ|àwíWЉ°Ã¡íRÄ ÎjXu(<ŒŒ–/ÝIésDƒ§lâ–Q†éhaTÖûoþ:±o±cߌ¿¿j±Л¿Š”Fîf#žÔya‰fc»µ'–X“ŸAAù¾U\`õõ¡Æð(R;úÐÃvHïLŸzàHPj)î¨#×5á‡cUŽÈ8õ[\ ®0;à{ÓÉc黇g÷”Ò1Oï)¤s€9Ëc4 d æ“àuô©´ûU3'Ë’§9­/ô U3ŽõwL‰DÀ„ÉÇZÞ‹ ˃»Šé8äb¶×8äbŸKKEQEQEQEQE Å–ÞÇ8è*¼°å¼Æ9=ªæÞzÔ„ìLš¿•ÍH[jTÉ‘ØÇ­Sžà‘תòËžøÅbλגk›”dw¬9FნÔ&ßy9<ƒQlr3Q˜Áê:U¸€U  ߊž1µ@ S ÚSV®òáÔ9QÏcйö‡’uó@r g×lLÍ7ï@;OÍô¦Lñ`„˜Û°)·»yd˜ÏAèi“:8$¡ý*¹Tm¬}p*›*|ÕWUlæ‚%TŒS˜«òœJq€xÅP½·fù‚á‡QU'ŒžBáªÔ%¾`>j“LŠdrJ¦3ÍIiŽr­>ÅgvBÖ”ÈP.Xsš»,{ó’9«Ò¦À9ÅF$ ÜŽÕÉ»!†})Šù'w§÷ÑAp±Œä˜‘ÅÜE¨ˆIÈ玔“\GËÿ犲™FÒ©7–Q‚1Rî,£Š–JñŸösÒ¤»'lô§ì$µîUËu¨äGÍQ¾Uy¬ÍD±`¿ÃíTn³?†¨]“ÀtÕ >PªÌqU$%0jõ³4‘OJ³]A«Öĺ)?Jél B£ë4ËQã°I®ŠÊ@ã’*Õ^«4QEQ@ ÑEQEQEQE{QUoLë*l9B>aïT5&<³”+È÷ª—†Pà!ùvôªŽ¾kmÎ=k1”Ìûsõªl ­ŒñÞªg*£ëT²£Š¦NTR)êZ`ïšhïšr6Æ÷éKmpG­*1W°©M×(ùÆñ´ÔÍ {Ån›†ÓR™7]†èb®lŒ/ ÷ïZT^_A¯Z¹ådzuÍPtùöíxÅeºbM¸éYî˜r0=E9[iÆ=©Ñ° Š|l7€iÒ&W T“F$)ÒÆÊŽ)‘Ç#d+cocQG­÷{THŽÊp~í=d-—ejHåß Þ9QŠ’9wÄwWŠlKºP åpi° i°FASI†—§ðšÉÔã7qVÚG*ê·™’§qY×êÞfH8Ǥ°ºÂ‘‡\þ”ûið±üêkKyé[ÜDê’Œ;ö­Hî!t ‘‡¯JÑI£e1 *µÔ««Éõª·s)%äúÕk©A;­SeÝÃsúUB8Á9ªÌ[š¯öG˜ðrô¦­³ËÐðMD¶1R+¢±ÒáŠ.»™°q]F›¤E*eœàâº+>8¢ÆIÁ­ Œvì+P íW€é€(RÑEQEŠ(¢Š(¢Š(¢Š(¦ºêHúSub>”Ö\÷"«ÝÉ ØRj•ì‘@¸Rj½ËÇÀ<‘ÜÕ‰ów2Ǩ¬¸\‰1‘’r Q‰ˆsTXîhÕ?*Íc¹•WéTîeñüªÔiÇ•`ǹªÂ$mAÎ:â§AÏÒ¡‘@#ëQ0¦x5.­H‹¾E§&ˆ—t‹ŽqÉ¢5ß*ã·5hÂÛw†ã²ç½h4/°:¶}jëFûôVf*Ý*”ÙÏ_Oz©!!ù4˜*A4˜)´žüÓ@(Tš˜1#¦jmăSÊšX^0Ž®3¸KlñùR#ŒäeiÖì›$VÔp²‰ ¿ ÙTVä Š¸ÀlƒPÛ¼£t9Å4ïG9{úST´rdöëH¬Q‰ô¦¼‰6àã } *˸8Áöæ‘%Üb© 2BDªW`=Í@,dáÁ3ëU’ÂEu³9ëWZ"çv út©LEˆ8Õ“<Ö¢xðÜTN¸o¥D˃Aû‡Ž@¥<h=9­}iÐà Ø=«¦Ñ?ìèHQ¸¤VýŠnÚ*õhÕÏ¥QERÑE%QÐQEQEQEQAéU¯n²gi>ž•GR¼6±)ÉèjµíÏ’‡“\ÍÔòI)wl‚xÏJå®e’i·»žÕÏÜK$’îbH=«KLMÐçCÒ¯ØE½TîÆ*íšnElãŽÎH88'Ò²‰äk%¤8È=jî”ì°È§%Xç­Y±¬N§%Xæ­ØÉˆ œžjÉÁ<Š•°zw©ƒÒnÇÍqÚ–Ùˆ˜éKlH—ð«;€ùÜâAÐUÀá>v8pxÕh6Ó¼Ÿ›Ò¢}­’Sq>• íl–MÄúTL‰$g5·!@‡00* vÁ!›¼ôÝç82žO"¤FÀÏz’6ÀϽFÏûÜ’ïAL-‰2H9ôíQçl›ºÒÈß.ç%@é‘Ö‰r’ÄÛ#­+¶FIÇ×½B§9qP©ö¨Ç8«\yg'‘ŒÝ*ݽɋ'†0Ct«PO±y‡¡¡¥ÜÚª§ÐÒ4Áóò¨ÐÒ< º>†£,vü¿þº›#â fÜ09¨.:Ôr“šŠS”Åmé#|@Œ0^Euš:mÓaÈÃä×G§.Û¸ä­\«µfŠ(¢Š(¢ŠQEQEQEQE^ö>Œ8ªšŒ|aÀª÷‘yÑaªm2Ù3®óþÕAg¥[ÆÙw¹þõGoa (f]Æ¡»UK–HÀ Æà*¥ðD½eP d ¯p.J®6÷¿ÿÙÿØÿÀððÿÚ ?ÉIdœ¹=ú}k JÒ3ߥg¤31Ç^•£¥é eYîI¼…=ëGMÓ>uš|€9 ëW´Ý0«‰eãŠÛéœã×ùV˜àQÞ´×îœBë“È'Nd,Ç©ÍW• U†Zb ct€UeÿZ@ãæªÈ›´ `“S!ù¥ub08© ”ªÎà`f¥…ʬ¡Oµ­ ¬+·n:*ÖàÊpqÇNõ`°+ÇéR’0iŸ R u=ê1F:žõ‘ÈqïÞ³åGÒ&Ö@>ãuZÇÈv™„=k:g*ZE`WÓÒÜ^ÆÅ™@Sò94±Cq©Û<ŒWål.&„ŠkèɃÍ>ÞÁ÷q‡Œ žõ.¤È“nº”@Ïz–ÏNe“3üÊ:z¶Ð†pr^€ Ò{`ò«±o@]0†pç^€T˜ã8àcµH8¢Š)h¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢ŠZ)i(¢Š)(¢–Š))k=UcÌ8Û´ð+(0‘´©<{Ö`WfÜNUmü€GjX‘ƒgniQNjt…˜e˜¯¥^ŠÙÙrìSð«I 0ùŽÓíPÉa÷3öÍE6—RÁÙˆë¼ÔRØ®ÒÛ‰Ç<š©*bá U; ƸB']ÄtÅgN¥f±´sNs¼îÁË+1ôÉ>[Î[õ¨ä!ùèM?D #œŒ>>•³áæV³p\äÖžŽU­x õ­*Ô«Ýê)Ý¢ÌRSÈ5̾Dm)#jö5Î!Œ¹ *úÖp¹žòïËFÚ:€jÃ{«­VìCș瞵–gžþçËCµçéëWÒÑsprIéšÒ]*osëïW…„c3SOAXÔ•Ï'=*Òª[Ä©|½ÿƧUXQUÇ­*È®>\±ïíJ&Rp™cßÚ—Ì ÷~o§jnIœŽÃñÍ8sÖŠ(¥¢Š(¢ŠZ))(¥¥¢ŠJ(¢Š(¢ŠZ(¤¢Š)h¢’ŠZZ)(¢ŠJcFÔsëQÉoòËÏ­1¢Fê0}h¢ö'ëB[G õ¥X‘{gëN©\ qéI/(£Ÿ˜qL›ýSU …ÊïÎN•‰#CÓ¥f^'WzUmÛS*yÁÁöïYÎÛF_Z¤ä.Tuéš·£Œ[É‘‚\Öï‡Â‹½¼î­m$²ç¹cW«N®Öv³8†(Ž9fõ-žï'.0ONjH7lË f¤©êZJ))¤á€È¦“†Òg´êZZ(¢Š(¢Š(¥¢ŠJ)h¢’Š)h¢Š(¢Š)(¢–Š)(¤¢ŽÔ´QIFàô4c<£¨`C H¬}[hŽE^µ¨`FàU rînvö¬U 0':ŠÌVÃvÕý:æ £C‚~p+wC¸‰ÕãVߟ«¥Í# ûÜUúÕéWꎥÈS*X€qŽÕ›¬3ó*ž£·å8ÉÇÕ˜oµG´cjÙªZ"±¾F6©Ýš­¦)ûO€9­"qÍo“Œ“Úµ‰Àɬ-Fwo“Íqï\Õß›4Ä<¡FîsX—&Y$ÚÒ…ù»ÕÈÑa1F²8É=ªÑ†8&HRbü[°«TqºÄ%ÝòŒ±«Èɳ!²+^ˆÎW±­ÊùciÍ; .ê{6Õ,à ҖÀ'Ò£Pç,ÌH츨¡1/#§¢â™rK3aJÛ€àð§Hd(â•÷ãK†9Í$3ùH!¨Ž@ÃO©iôQKE-%”QEQE´QIE´QIERÑE%%RÑE%RÑEdêNÂ909è+žÕ¤lÉÎqY‹¶œâ™e ÈJ¹;A TmªM+2cAÎ*q+’Ù*?Y´·¶·šO(åÿˆ“ÒµììàµÜÉþ°œ“žÕ£mo´xÜO&®£‚pjìR««ÍZŽ@ÇšlÅTݨo•JäýãQ]´ñóUìW*Ü`ô¨4¸ÂI1Ï$ÔvH¤ 󺥽¸H#ùÿ‹åjöa »žäb¦º•c‰‰<‘ŠÈh²Ï+.T5ÍNÅ™¤nFzÄ”ä—#ŒŽµ&âj),ØÒAæÍ(Ž5$·¥62Y êqÅià íÛ'ÈEC]½«ˆÕd}GʉÆ?Ú†œcøV¢‘äY‚g9;›5RâyàD÷@ó¹³PK#¬â0~\Ž­SK9@›T9aÚ®\]ü±Í“ÍY–r›6€ÄŒœzSã—ÌꌧߥKâa÷O|ô§E/˜3´ƒNeäñî)Í ³‡änôæEfùRãŸÛœQE-QEQEQE--””QEQEQEQEQET3N±ƒŽHª÷+e‡$TSL#CŽk*Giw,sÅsÓHÒ8'Ç8+™zî9ÅX²) rä¸$ŸÆ­iÏ­¬Æ^ ƒ+õ«n–öÒoá˜>µ¤QüÄÄ™ÉcéŠ[ ÍÖl®¸px'ÓYÜî¶Ã.Éô«z{b2ÈÍ[Ò¥ÛÎI«6/ˆÔc+ä[„Áù ý)Ö‚ ‘nÜnèiÖ·içy-Á= ^5­W¨¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢–Š(¢ŠJJ(¥¢Š«u>h5KP¸òÓyïUî¦Ú  Í–BÿÅßV-Äí ûÞÕ™4¥Áù½ªHQbO2SÇ¥FˆwÌxQD(©óÈx¤d‘] 1(àÖ‘Ï› eÈE©ù’3µGjljU‹ýMKk‹gksR@˜ž•fÝq‚Póš¿iû¢r )ïW _dTòFÍ–S€EX¹ŠGâàc¥Kn}*Õ\«QEQIE´QIE´QERQEQKEQE´QIE´W ¸žÍB)\ ï\*ÀfB©Ô×&-üûu¤ZI,<ŒeJl–‚ yŽ9ô¨d±X¹‘éö÷‘B›cN ‚}ic¹Ž%*£‚0MIÔq¡UcÒYIz€Ø>WÛf uò÷¦Z2Çvvÿ5¿úÌ»†{Öý¯ü{eÜ=ëz ˆw0ÈþTKHÔä…[4ÑS[ò¢HKª°é¸Tz¬Ÿg´yùv䊫~ÿfŠIù¤dŠ­~Æd`>gã&ªxbVVpÄ•û´ß Ü®HrvV£ðôä3'æÍj]2ã w.Ϙ{ö­ Y–I£r=*ýû›jœŒt¤N?vÄ òNz ­ <²à¥‰éPƹY`ç9éQÎPµ”ªþµÑ@›Uýj;‚ mm­gLÏæ&zî@{â VxŒLUNX­íUÃ4[ QŒäZ×Óg’æò"&8»¥Î÷1±‘UqÐ ÅkØLóÇ— ¸éŠh&ºû?˜YרRÜ43^ }亜·µ,×-ùd9"®±¨ÜÁ@M_ÊÆ¼°P;šµ€À TQÜDò˜ÔÞF3LI£i © ûŒfš’FÌUsô#Š™˜(É©…4ò@ëH§#8â‘Inع¤=°=iiiih¢’Š)h¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢––¸ï·¾Ájcî­p­|ûDkýÑ\‘¾m¡@AR&Û˜IazS—Gó¥f$“Q><ÎO^´»,O¶1Š UIlþ½Ø.M9“lxòÆOÔïX·J–H𪸚«qq£99en=j)¢Œ ÁÜËÓ¢#TÏR½+2{©ïQ-m¶ä3•õ5k›À-mÝó7lÕY^æõ|‹@B凭liz*Z’fgŸ©çå·¦hég‰ev’r>b[Zúv™š‡‘‹LG,MMw¨Àdû4iö‰= Sï5+pÆÞ5ó¤ôR\^D ‰‘½»SÄ¢?/qäHî{ŠC~±ª õ u Ý,{r8Ç$S¾Ô‡ÞTô=é¿ÚBI@!’!Û‚I¦ý°<ŸÄ©üêuš3˜¨«©w àÇû¬¤Ñ9#ëNÞ¿Þ'˜‡øÇµ?zÿxP]w$Jg¨¥Èõ´´RÑEQEQEQE´´RRQKE”W¬»Àu*=ë[wÜ‚q±Û>àp+F4Ž$MÜ(è=jàTEø•x*Æ ·AH.Ѥ#hí@¹LLR-Ê—ÀD$|ÔÛ» 8UÅ6òè.BŽ¢’ÂrËýÜŒÑi)*Gµ-¤¥–´I"0ÙÉþ•mŽ# µZc„šY‚>FÛÆÚ™‘”í. ,€Š‘ÕVÇsýåpE)¥¹·’2Ç öªòn–S)c¸œzT.L’Üy=iÃr¶ý¼ÿ4ŠX¾9þš@¬ lséRD‘° ‘ÍM R1@ç­KnOÞ•Á‘7älb²Ñ™mÚl «‚MNë¾#)ÆÐrMdßLÏòDFÖ þµFâwŠ7‘1–S×ëTn¥t…Ùqó)ü³Zš±·ÓC¶7ÊwšÛÐ-Ͷš›†þf5«£ÂÐX qó·-õ«³²ùr+1]ËŒŠ¹rÊ uf+¸«3‘ä²–Û¸‘Y²Ée•n[yù¸ÉnX‘Ö©ÊbV(¢àòN:ýi‚ò)«F=ôüjœ’¬ŒP›G÷{T *¹Û"€£Ò­ÛÍ ˆ¶’½[µ’ÚY Cµ¸à±»„cRÈû@f‹+ïSÎë&HªY[Ë|cªäf¶cžª‰+0Þð@®ÄnÛߥN’±!XúM\†vmŠT¢úÖ¬G+£Û½YŽÿ\8$ÕŽÔ´´QKE”´QIEQE”´RÒQE-Ê\Ü$$ä’{ â'Q³’ƹyî6ëÍTžáæp£ŒŠ‚yØ„Š­q+;ã¦imãýï½!2qÖ–%ýé'‰ÏïÉ'Q$lÄäàRM ;êqS¬O ¬+÷ˆÁ>•ªSSÈLCž‹ØUYfÂóÃóòÕInÉh²q'ÍU¥˜ˆŒdðß6*¢ÂZÍ |ƽÔá4Ù£ûM¤g~B|ÏL’?6Ú<¶BãpÚ¶¬ÏîV298ö­½2möë2Ž~•«e&è‚÷\L¸Ø‚›²xÍAzò™v-éžÕÁ}ÄmïjÉq䃖# qɪW3Æ%ûýÍVšO˜ ?7sY÷Q¤1íHˆaÔ­R™Ø.N;‘U&È^û‘N$QÃqa05 Žx÷ 9§…H KCõ>õmæ¹d >ß,ôÛÔÕ¹&º‘®moº©«/$Φa´ôܱÚr“Ú¢fpª«¹=©ŒÌp#Ú›È,‚1ÇsR[\†9<sN†pÀÝxüjå‚ί#MѾéíŠÚ…\/Ï×£p2ÝjåIRÑE%QERbŠ)ih¢’Š(¢Š)kω.ÿ9$“^x¹ycœžk„Bd˜n9Ë ¿qóC Êš·qów(È5zxI”2s‘Vl`‘ܱ㤳…™‰Ç8⦴‰›'ô©ÞÙÒ/˜ ÇÈÅJm™Þ>åH`eQž«QZ&É$šF#´È—k³¶G×Ò›„g‘êÅŽ¢·ó›r ªËÏ\UË+Á|æ ª ëÏQÞ§²½[Ù26ù7Ö®°3ɺ5ÂÆ¡ =µÛcL,@.EX•LçÌEùcf¬ü¦ HéWDÖÁ¸Î0Ym†.ÙÆF±·Èp‹Øtõ ¬žL›åû€ã ÷¦BÆ6ÜçǪ ÉÕöƃ#vYª¾£v²*5weš«ÝÜÄh>\äšÅ:þÑP1°6ÓYñ¾Ö?º”·¤ÞØqZÖ@*Ø0ǹ­[Vò‘›fC{Ö¤$dã!ªÔAY™×#iê½*ö›å‘È+ƒÁjÍ7+>6óÔTò’©¸@Î OxÁc.OÝ ©njî=‡J£…¦f »3p=+&i®Xà±fíÚ²âc$ǂğʬÙÀ‚7¨vcßšÚ°¶DµfòÕÝF­;H ÎÅ,ǽU¸‚Eƒ°ò¤(Q‡V]ý´‰pÞcg 8¬û¸]ebíò°ãhèiéžÒ4ÚX(Ájšd¹¶Œ*¶Õ\n©£‰æS´Í J…ß8è?…2X¼‚†GÈì 6HÄ%K±Ç¥UŠ9g™žVœüÝ ¥ÑáiçiÕFØÏéšnË!”µzÚ‰üÈ•³Ôzq]’WœgØVÂäŽHü8§QEQKEQERÑE%QEQKEq jàœ’xÅp‘B±üÄå»{W#ºÇÉå³Çµk€F9㊻ÊŒ‘W ƒ$TÐñ&îxüjX>GÜ8ÅKÈźb›,†FÀLõ¦Ë#HämÇ©¤‘˱ùqïL¿¶uÓ’ä” éÞwe"Ø)Œ3É(Jmõ¬‚̈Æé$ííTtK6K§iƒ €;Õ]&Õ–á¼íÉòã½VÑí9¤3e ãÐ.ÊÂ29µÂ;Ä7yD}ÚØá ';1Ò˜¤º  5 Ç£ 5ôy ùÅKáU=ºšIEÃFe *{´8”çk2âVŠNÜãäŒÑ†wÉÛÒ¯i´v*]v³r>•½£Û›}>0à ܑZÚt&4 0O&®ÕÚ³KE”QERÑEQEQE-RQE-q~y[}Ø9'ŠàüÒ°äõ5ÇùÄA’95bÅYäˆ1$ž*{2K’qš±d¯$‰šÔdapÁºgмce¸!³ŒñWBbR¥KåÇæíE8ã“V„QÄh>cSªGæzžlF±¢0o¯µ[¸"8áD` k¿?Ò§˜„… læ«$›˜³wöª+&é ¶95YXn$÷9§™nD˜>†¤i£dâN©æD+ÿ8Ü@„—P8 @¹¶]Þ`ãZ<øPãŒt¬[Ýd¾#µ7Rk&÷U.<«`Qîk&÷TÝ„·Tw5 » ñ–9`2j¼œ•$üÝê(?Òs9ÝÖº&Â;80˜ÜÝOzéôm=- È“×Ö·ôË4µˆ'®h™•¦Ì½7` ­s8kÓ$Ç1 E,ªn|ÉØ d¬eŒlv,ÍÛŽ)³Ë˜r¬ÌÏÆLSf}ѬINÔ‹ª«OÔô¨ †L®$w5Q¸ Œ“N,„|ÌÚ>ŸJÑÝÆ 1ÇñO¥[Ü¡IÇr(YcPvJÀö/?þªˆÜ¡¼©ˆã€ëÍ0Ïd„qÜSfl±bØüTLX¶âN{qP ‚sÉ&™<Œ¬Ì ƒŽ>µò°,Ã#ñïQÏ#dàþ5Ÿ©—òU ¼þuZuiP¶ ~µRà<›Ww,k¤„`öA]ŠdF™ÇÝô®œghϦ)Ô´QE´QIE´QEQEQEQE-Ì ¶@!$6xÅqЍ±¹¥ŽØ‚*å¿ÙíNAùˆëW-š S‘÷±Và1[œ÷í@œ¼ù^sMóÃ͸sšO84¤ƒSË'î gÖ§–Ý,`r;ÔÒJ|°«Á뚃ËeϽCó0Þ\–>ÿ¥DA#qnO½"î-†8é ¶îNznXðzTMy ÝFï/?F÷QyD¹æ£{˜ü¢Ã Ö$³Ow(ä’zØVcÍ,ïõì+"K‰§“ ‘×¥5áhÓçýiŒŒ«È¦4L©’9¥·yw|®Px§BîŒ66*KY$F5Ð[j77Pù¸ë/¨ÿÜMjæ[Q ƒïIí[iªË%¸FÇîÞÕ2©yWr:g½WZY†Ð_¿Ö¢Ey$=jbþQÚ‘ŒŽ«V2c}«Xu_JŸ%ÕNGéJÑÝÈ¿+F1ÓŽ•d%ã/Éå`†¦ rWå €;Ód‹ÉPÓJ3éêi“!€ža»®Ñý)$VYzâ k’Ò·™IœwQ® É—‰[=j«M½‰1‚LÓÇ);”€yÀíL\À¨ëÚš¥Xî)ÓДbrHÎ})ò8xv19$dš{Ñ„bsÞ²u9¢’åaŒä+Œ5U–HÅò"rªãJi#{øãC®1]r Fƒ¯»CÇa]_@)ÔRQE”QERÑE%RÑEQIE´R× l²Ct®èO®5’9COzâ`¤û˜š{Í#1'9ì)ÅØ‘œÔ­#»zV¦• Í/AëZ6ì¾N1ëZ12Ò~µfç«|ŒãÒ¤¸ÆóÁ#š’p$ ‚j'1…ÚÆ<àžµ²cí#·­1ŠãàѵDG,YÏcȦa|£ósÚšBùg,YjÌšÒxÈ[äqȪO ˆÓW‘T$†TVT9 :RÛÇ ÛmŒ‘98 ÓâŠ7‡{œjHa¢_úÃÁ´m4ÿ³*¼à;¿ðõâ¯Af-Š4à;?T늹 ‡i˜_øjËYÛ‹…E…TJ|–‘5âF¨¡N9³NkHÈD@©Îž±£a=äÕ©´%GÎ=09«-¦ù@`€¥9Œvè6dÈÝIì)KÁgmˆÔ™Øà±ì)ÄÃmȚǒj+F_=Áo¾)šnÝò—o¾ ¦Y,åÞ«D_”g¯¥Y‹°=…Xó•W­ej7 K²ƒ¼§Zɼ˜K;¸ÏwpÅf]ËæJÍÉôÍS‚O™° cÐzÕxŸ,~RXö¨b|’@$úV´ŠŽÒ)WÙÆ}+F&ŒC1• Èc5~2žTŒêU±Þ©\ˆNp¾µŸ>8Ú{UÈä©íX%Â÷‹ÿZ¥n­-Ôj½YÀýk.Ð4—¨RÕè©XÕO\W ã}1]ÐàzN¢ŠJ(¢Š(¢ŠZ(¢Š)(¢–Š))h¥¢Šã`™ž.Hþ*áb˜˜pW‘Þ¹8¦Ýyé„™' 1Å"HÞhÀ¤÷KÀ­ØcV·PWŒu5±~d˜ß5¬‹º HÆ;Õ9Dî»sË Ø¥R¸IOÉŸ½Èª’¬„œU[[g’Ffã~5^Þ’Cž¨-ày·g5¦bòT#e¯µ[xþΡ_%½jÓ'’¸l–4øâÈ2¦Õ­:(‘ÎéWhìiÑÆ¬rëSÛYÙå¤HƒH½}ý+FÊÎÌÆóGö@xõ5nÚÚÙQ¤DÉQúÐ ÃÈÄžÇÖ«­¾_|®XäÒ™å ûänG¥ ‚òœç5É!–LFŠw'¥1P³™ªrNzSüð0èX¨ãæ=jfºe;йNƒyäý*Vœƒ¹K2ûÕV&sžA< sTX4î89'ëUiŽFy©m-¼´%Õƒ)ûÕrÎ×l%YJº½ëV­ ÛÜ+Þ¬1FÒ±ãjÏ”`¶k™$®Ð¦¦+åBfsÔ`\ÍÛÿ¦ÈÈwžÃû¾Õ‡#|í·«Æ‘¾s·æ,zV¾“hT¬ŽfƒÚ´ô»B®¨?&N{VŽŸk³æeåɦý¢I˜à®‘M™ÅÄ“»`¨À"‰™fiX௥eÝ\C|àáÁ ŽÕ—$ÑÇ!$g=¬ÙfŠ7;†sÐVt@G} ÅóàøÒèéZ&Qœ15–ƒûN6Aœ¶k¸ÉÀ$`ž¢»C×8Á®³$öÁ¢Š)h¢’Š(¢ŠZ(¢ŠZ(¤¢Š(¢Š)h®Ou´1›t`ÌO,+ŠcIä! Iå…sÉRçš±mf•€ê:ÔÛa²^õ$VømÀfµ¤E{%^Œß½nJˆúz*ðGCZÒ kP£·J¢»V@ÎÛFSY˜Ãî”…÷ª8Ä››éVQŒíò*x+nÀç*tU_››?2€¯ó0üºÔw€<ª‘Ÿ™‡>Õʆ"žOZ¹” Ùb9éZpYÛù{\–*¹9íWb¶‹oÍ’@ïTãY! UÀùºŠÌß,ÂI…ÉÉê–çHFÀÏjr¹@ò3xù»ý)GEwÜ~o^ôŠÎªIïëÞ¬Ãl¯ùùÏ$Z6zrD·\“óxv EòƒÏÏrÒØR6öô¨.åËáH(x€T7 íJŸN¤îíP«Ž­LPŸ/Ë@ƒ.Þõ. d ¡xãÞ§!c,yëÍ\1Ç \òGZœ¢G Ü}ë>á‹°%ŽßnÕ‘>ë©yc°sÇlV|Û§|vNÕ•cfõÿÕ£e½ê’ »ß&|´lœwªVI¸ÞÃäVÎ=kNK™co”¯Âäcеqw3¡|¤»Æ*Ü·œ¨ºf ˜¤2åÿˆ «pÉ\I–=qU§uŠ?–Lç­sÒÊg˜³ŒÖTŽ]ÍcI!–^zUí0Ú¬A†å–ö­¯ ¦od#¢¯åZÚfêLº¼C]Uªº[ªË'šã9oZê£'utŠ-¸Ô´´RÑE%QE´QEQEQE´QE-pñÈÒ®ÐrOZóÈ‘Œƒäšám’F˜}k£¼¸•‚Þ¶``‘! zÜ…¶Æ ŠšiöÄ’G‡B*ÔÓ”Š'L2EX’RªŒŸ2‘Š€B&‰S<ä¸>€ô  –\sü©¡‘¨î?J³:40Çóe±Š[ÈšÞ$!òØéN¸C óbˆ¾gÛ¢€eÄ rxZH¹>`žž|éPƒ Á8À5;™£ Éò·SüéäM"•.0{HÁ¢Â0Ï¥A*µº,m×­2@ШV«è§çaÊúž+GM†2¢W+êx«V‘®ÐÌ3ŽÔ^K…Øý±š~§/îÄk&Òý½©×²å6+`·oj†4'ôªPD‡S^•^$‡S޵c̓•$Õæ¹H²Å70àU“(L¿7cTä¸f½Ž?-•MRšäËt±”!@ϵU–r÷  u¨î–Ií¤Ûò¸9\ûQ4RIo#²ò{½$¨ÒBÄ©ŸÎ¢·‡È@2K–¹ªQ €¨$îÈ'5^8Ä8ç4j³œ—N"EãëLÕç.èøWëQê“–%“îâ±á»óÉŽ@A9¬Ø¥6×A¬Û{‘3²8ê)«¬‡hùTS6€ävÝ]Ž8Ãn ÅÇʤºq»Öº/ .ÛYH ]Î@5µáÎ-äÀRÎr­>þ9ƒDè!•Ü'¨õ§i|“–ŠEò¦SÌlyü+JÞèJJ:ùr)åIäûÕᎣš·V)h¢’Š(¢ŠZ(¢ŠZ(¤¢ŠZ(¤¢Š+i©n£{nrr}«Ÿm1-‚+Îzãµd „(<±ê)º’E ¶åRAã“QjqſʤçÔ÷¦j Pð8¦é¥n¬d CÖ?s¡ n´–L'± ðÓшÜBå€5$”W;CÇ5$nQ_Œ‘Ò¦DY’ÙïÔõ©B ";É.O$õýjvÐéó|ÌJáBÇœŠÉÂ$yã?1‰Â*gROuoicçlËÇ\Õû›Ëk]?Í –ÀsVn.a·´óJóÐÕ+K¿·±‘A#‚k&;†¾o0dq‚k>Íáóg­$Y#xR ÿ æµíã–Þí†ÿhóN“–Ú?Ф™†HìO5‘˜Ýƒvç88ô«ÚeÄ‹zb´kœ~.™<¿mòíò›šéƒC4†)¢9ˆæ!àv9­Ø§ŠîèÇ$'|}$½©4…^3¹ŒU»™ão4aAÂäUøKCg¡5n2Ä|ÀŒt5j¤§ÑEQE-QE-RQEQKE•šHW2¾ò[þ•“.U²Í¿š ÙVËÆ¢Ô¡7V¯åcåäUµMÝ«øÚF3P_Dn-ÎÎÇŠ‡O‡ìñÛ‚ysUìcòcXHÇsQZ …<{š°p.20C —!n0:5H&ã£P ‰.Aå©Ù’9~öKqøS²Ë'^OKò‚«Ô‚™ 91¯\„¦¸ÏÈ:çeQ×£iÖñ¦ãóO©TZìkŸm?1,ßÞªºêyvPÆ€žäúÔÚ¸‚ÇÌp|É&‘n°ÙyŽ w< ›K·Y+0;Û‘WçaT8/Z»ypÔ7±ÐõêåÌ | ŒÉ¨ŽçaÐUcF•Ôœ(>M@ŠÏ"“Àþu[X›ÉXÖ<€y&™«Kå¢"\Ôzœ¦0ª¹¥Ò/IŒ¡‘@–cShס#t.¡G%›úTšmØ\êXÕ+íQå‘•ˆòF{£}©És9Tb‘‘Þª]ê,¤!;AíN³bà´‡ G6îIçÔlŒžµbVF0yÖ+yÈ»p»:{Ó¥o9FÜ ½«“ýkd`ÎóëšÄ|ù§×5¥nÅ¡PÄôÁ«“·“Ú¯ÆsÏ¥S¿oº;ŽbAù{Õ[¶!/9­]2ÔØÇ Ãk\N>T=@ÇZé4û/ìÛUp\Ì6¨ô÷­ý:Ëì+`4Ò¦kvÖÕ-ã9våiØÚ-¬^®Ü±÷­;xã«’jeéü…Y©sN¢Š(¢’Š)h¢Š)h¢’Š(¤¢ŠZ(ª äcŸzÉvÌ„b¨1Ë‘ŠdŽ ŽIàƒPM0 IëQË(TÚ94Ås€1ïPÆ’›{Ô@9É#Š y¥ þ^BŽiʔ㰤•¾bA!Ç<Ž1I3ùíÚ’FÃgA¥$¤}ªÜÆãœzšÿ¦Bq€Í¼Z:]GÆ2sZf©϶1ªx^i5EiäH²v!à:eú]c'åSÒ¬¦Ø¢P ãX.±ª…' >µcz =„ã$ ö4ÄŸˆ¹Å1¶2G4 ùL¹ç>ÕfØrüªt]¾ý«Y’FÔv“òXºÔ®oJ1ù@¬mVG7Œ¬~\VYeiW,vg@0‘ÆX„ja$€!¥%‚ʱÈ GN浾Ʈª#^0:Ö·Ù@¥z`p*[u1ÝK<€8¨3ÃF{ ‡o•+GÞ’{¸âž5'%MBÓˆåQýÚ‰®UeQŸj©5¸’çåãw5Å™N;óPèÂý*ñëST´”QEQEQEQKERÑE%QEQXÏ>d7>µÎ} ¼êAã8úÖ8›|˃ÆqS¶ ˜ õïS2©“ÔuÍJTçŸJ²Êr6ãŒUÖ‰cˆ¼ÄmŒU–M‘—|cµS/+ «>šV ;UHòÌØT’a‘±’Ú|ª7ÆIý)ÒѶ:ŽjU¯7Ž>¥BX=Ë·‘5!§v'  TÑÚ†…æ–F'©ô⦆Å^ÚK‰]‰ ŸlT‰j¦•Øž3Q€¹ü꺅ܻsíÍFÈÆqR¢(Ç<š»onÏÎ6ûÕˆ¢-Ûh«I'–lw­àŒ)Ç$Ö­¬j¨HäãŠãofi&‘ÏRÄf¸›Ù[™Xõ,F~•ÈÞÈÏ3±îHªé'ã51–5¼D‚kbÃÎÄà£?Âæ·ô¹6iÞc`±8­í9ÙlC¶ Îj¼·Mö¹¤þ&`+6úç̹wgb³î® ™Û“T$,ÎÍÔ“YÌK1ÏzÍmÍ.}MlÝ$@ŒÉò¨öâ´Ë·øŸŠÕAëPÊpv“HP? n™·¯;qM?ÔÕ1ÚãYT|ÏßéÅ^пw¨F®;±š·¤·hø®èÕjÞíÅ”QEQEQERÑEQEQEQEQY*l yÖõËŒI.:çæ®L|î=O&¹°<Ép{œÔÖÈ¢S¸ý*p`f¬( Æy«q_=G!†V¬E.Ø¡+V#r±:v굜=Nj‡SžõŸ‚I'Ö¬yDˆÍõŸ³c©?Z•åH íÍ'šòH­žIϳÅ*Èûƒw§,­¸õ=¹ó¥ó[‘8ã¹â¬CŒ—nB ~5b¸ù‡ ~5,W&¤,2ªIäf¦³º÷ î¹ Èÿ –ÚäE8fÁ ë[’ê)öeš23t_Jè'Õ¡[e–%óÇ;}kbKô[pè»ØôQu¢¤¬öäºj¬zÿÏåËlC²{ö¨WËì’µjDÌÑ«2á˜dƒØÖÂÊÈÎ;Ö’Ê­‚2:u-´QIEQE-QEQEQEV]À3Fg-Æk$’éêHª —^:š`ù¤=ÈÅ@Ø(AäôúTg§¿J—ädPÄm È ”xÐ9Ct£(á7–šÑ’å‡Ý#žj7‰‹3.vž˜¦4d’Ë÷OJlgËLdîf'š_õp Éž´¿r5çÞª´l×8ê2EQe%мj¦Ó框Z¾%Þ>~ ô­/4Jp%‰«¡÷»­V¿ºÖ̤ ¿JKë¡eg±GïœÓo.VÖÛ|çšçŒ²HûÉÉcÅsÍ<’9brI¬&¸’G,O$Ó甥²@,w8§ÌÆ;d‡?xîaO¸‘£·HAäòÔÛ?øø\ôg8«ñ†KrÈ~qS̼Ÿ½Ò¡Æ_ëQãs{š•ÔÃùŽÁóñS6è(bsR¾èÔ(?(©÷@Ä|ädc½ZYDAd#Ž«ÂçñVt»Ç”´36烎¢´ômDÝo†WÝ"ò:Š¿¦^ó—¥hÖ§J¼zÑE%QIE´QEQERÑE%ŸæÏ|w¬v”"àƳ˅@( j£HI Ç5~W¾iâ0A ã'“J"ÊîÏó@+Ÿz™3ÐsÚ­Fìx« åQIy±†1šÍU繬ý¢%=Û^Ë——8)`njf27>j͸³ŸÀSc»RÂ6‚ç¥$M™G¡aJ‡2sK Ì‹Žæ¤»P³¿°²€$jYT4û\ùl§)Ðò¸§ÃÊQ˜v‚ƒ¸þTÅBXîqLÁW¹¢kVóT€TÆ$ô§µ±óFzTöÑìE*0ãšNÕØ£ƒëV#á6מjÖcWPNOQMÊ«ªž´ ¡€ïS„Ü1Œöüêxâ,@"§Ž2ädRÜ€;`Ó®€ €;b‹;VUô­o(òÜ£J ÓÉm0xœ£zŠ¢÷m01¶ <âº'Q[ØÌd4`n¿½ušV¢—ðx•Þ=}ë¤Óïò.¿:˜Uú½Vh¢ŠJ(¥¢Š(¢Š)h¢’Š(¬v¸…~V ñÒ¹É."Ý·‚+Íí¹¦‰W!”b0vþ”2Xä#M²L|¤ÕÈFÖàô«–ñ£  zÕ¨UY@­)qå†TœR™V(ËTœ­8ºÆ¹=ÍT¹œœþÅg]ÜGcÅR¸œ±Èõ¨¡f[ £®Î£Ö™m•”c“L¶È|¼*ØDQ1dŒ“]¬¬@Ã'>õ¬ˆ"€‘ÇçÞ±¯žvɘˆæ°/^wv “ÖUãL]ˆ'f9¬iFé€ÇÊ 5žäŒVsãpè*9ˆUP:T3œ¢ ¸oœ(«[ZõæžWsR²…€}*¼?}ûU|}j(>úŸz±¨ ²’9R>ã†&¤ºáÍ6ÎL¤ úQ|¯Iþíý©úX3]‚Ç*¹cíSék¾çwejm0o˜·÷).®~nVëì)×3m9õ=in§Øø÷¢ÞíËí lô5 w [ž•–s‘ÅY¸FÊÈFÑÍM4g*ý±V%B6x«I1ؤuÇZ%!T©Áõ©–RÛÖ£»ŸdLÃ#é—Se ëLº›ä,+ 3‚Ù5ž2Î çšÎÁ‘•ºÖχ‘žúâ|a6lÏ©Îk¢ð´-º{‚>Fß»áèÛtóãØ [ÞAo*Å!;˜db¶./ ·p²1Üz+Nk˜¡pŽNãÐTÊC@<ôÍL½CF}EJ ZZZ(¢ŠZ(¢Š)(¢–ŠZÿÙÿØÿÀððÿÚ ?èë£®ŠŠJZ(¤¢Š(¢ŠJ)iii(¤¥¢ŠJ(¢’Š)iih¤¤¢ŠZJ))h¢Š)i(¤¥¢–Š)(¥¢ŠJZ(¤¢––Š)(¢–ŠJJ)h¢Š(¢Š))h¥¤¢’Š(¢Š)h¢Š(¤¢Š(¢Š(¢ŠZ(¢Š)(¢–Š)(¢Š(¢–ŠZJ(¢ŠJZ(¤¢–Š)(¤¢ŠZZ(¢Š(¢Š)h¢Š))(¢Š(¢’ŠZZ)(=)h¤w¤RÑEQE--!ö¤9ê)9 ÐhÎh¢ŠZ(¤¥¢–ŠZ))(¢Š(¢Š(¢Š(¢–Š)(¥¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š)(¢Š(¢ŠBp2{Qõ¢€r3Ú€sô ô¥¢Š)h¢’Ž´”p(QE-RQE--RQE´QIE--”QKIE´QE””QE´´RRQKE%´´RQIKIE%--RQE´QIEQE-RQKEQE´RRQEQKE-RRQE-RQE-QE”QERÑKIEQE-%”´RÑE%QE%RÑE%QEQE´QIE-QE%RÒQE-QE”QE”QKEQE´´RRRQGzZ(¢Š(¢–Š)(¥¢Š(¢’–ŠZJ))h¥¤¤¤¢–Š)}F=è9ü=è9 h”g#ŠZ(¢–Š)(¤¢ŠZ(¢ŠZ(¤¤¥¥¢’’–ŠZ(¤¢ŠZ)i(¤¢“<Ž(=zQÞ–Š(¢Š(¥¢–’ŠJ(¢–ŠZJ(¥¢’Š(¤¢–Š)(¢Š)÷Å 8Îh?Z©¥©ih¢Š(¢–Š)(¢–Š)(¢–ŠZ(¢’ŠJ(¥¢ŠJ)(¢–Š)(¢Š(¥¥¢Š(¢’Š(¢Š(¢–Š(¢ŠJZ(¤¢Š(¢ŠJ(£àô¤#p ôe#8üúT6—w«¹RV€Î3QÚËt¢@³6À Œâ´­îîv²»nòÆyjõ­åÐÂÈÁ¶óÈëWmîfæÛÜ÷­X&Yã/~¢µb‘fŒ8üE_ĨRS©ÔQEQE´QE´QE%QEQEQKE”QKE”QEQEQE¨¢Š)(¢ŠZ(¤¢–Š©©OäÀ¸8ÞÁIúÕ{Ù!8,Áj·Ø€tÜØâ³”ÇL'n5ž»Pyî UùQyóšŠêT<{¶îµ Û Ž ‘PÝ0ÄŠ8ÆiÖ1©ˆ¸Nüd¢‹d_³£ó` Ó UòÇÍÓ4¦&GVrs¸ƒŒýhh6à89#ƒHb!²èyÎ*a$`y€¯¢eâLr¼5(‘x|tëM2Õâ98ldU€ìŒ2žøàÔÙ*Á“rœg=«VÝÝàF“\V”.d‰Y€Éô«‘±h”’3ê*Z}:ŠJ(¢Š)ih¢’ŠJ(¥¥¢’’ŠZ(¢Š(¥¢Š(¢’ŠJZ)h¢’Š)h¢’Š(¤¢Š(¢–ŠZ* »Tºc’¼ƒ¹j)àÆ‹x¨æ…fP¬HÁÏq§ÁRá‹©ýà9 õôªsØBªOïIÚyÝU¦³„…sòŸ›w´[f\>8Æv‘Ò©~C’ ·QœóÚ«¾^HÚÝ{óÚ§Q$#ç UŽwŒS”¼#iiþ!O]ñ§OzYZ0vÚ:Š$–0.Sû´"ÿíP ¨rÉ l8ôëUÒxrèùÁö¨RhelG¥Oo4H›Ëá[€:†úÕ›{ˆÕ>wt©¡ž5L3`v«VWˆ¶ÈB’熮ÙÞ@"Ú_ñ‘ÅYµ¹‹ËÚ[µwOòÚI –)ÛÛëZº~79_ƯÚcs¯UÚ³E”RRÑKERQEQE”´RÒQE-RQIKE-%QE%QKE”QKE”QERÑJ:ÑXÍ$–×H²:¬yÚƒŽõ)h¤1¹Âçh÷¬Öc…€¤ü¾ôûØV_-B.æN>ñÔ×Uþêò;R:)?tsPI!„]¼–0¨ÚÝX…^'µFaËA·ƒÉìhQt&”b>齪å]«4RRQKE”´QE´”†’н¨¢Š)h¥¤ïE%-´RÑEQEQIE%RÒÑIIE--””RÑEQE-RQIEQE--%”´”´QIE´RÑE%%´´QE'zCIKEQKE-QIEQEQKE”RQE´RÑE%%´QIEQEQKE”QKKE%%QEQEQE´´RRQKKE%%RÑKIEQERQE--R´ŒvŒóøSÂ.H?ZF`ƒ$QFA¥WV 9£r‘ÁëE-(¥¥¥¢ŠJ(¥¢ŠJ)(¢ŠZ(¤¢Š(¥¢ŠJ(¢Š(¢Š(¢ŠZJ))h¢Š(¢––ŠJJ)ih¢’ŠJ(¥¥¢ŠJ(¢Š)h¢Š4„nâóM 3L(lÒæ—œð)Ù$à 9ÏJZu:ŠJ(¥¤¢’Š)h¢’Š(¢Š(¢–Š)(¢Š(¥¢Š(¢Š(¤¢ŠZ(¤¢Š(¢–Š(¥¢ŠJ)(¢––Š)(¤¥¢–’ŠJZ)i(¢Š(¢Š)h¢’Š)h¢Š(¤¢ŠZ))(¥¢Š)h¤¤¢Š(¢Š(¢ŠZZ(¤¢’–ŠZ))))ih¢Š(¢Š(¥¢ŠJ)(¢Š(¥¢ŠJ(¥¢Š)h¤¢ŠZ(¤¢ŠZJ(¥¢Š(¢’ŠJ)(¢–Š(¢Š(¥¤¢’–Š(¥¢ŠJZ(¤¢ŠZ)h¢ŠJ(¢Š)h¢’Š)h¤¢ŠZ;ÑEQIE%QKE”RÑEQEQEQEQIE´QERQEQE-´”é(¥¢Š)h¢ŠZ(¤¢ŠZ(¢Š)(¤¢ŠZZ(¤¢’–Š)(¢Š)h¢’–Š(¢–Š(¢ŠJ(¥¢Š)(¢Š(¢Š(¢’Š)ih¤¢ŠZJ))h¥¢Š(¢Š(¢Š)(¢ŠJ)ih¢’ŠJ(¥¢ŠJ(¢Š(¢ŠZ(¢–ŠJ(¢’Š(¢Š(¥¢ŠJZ)h¢ŠJ))h¥¤¤Îy¤"ŒÒÒÑE´QERQIE´´QIE´QEQEQE%ÿÙÿØÿÀððÿÚ ?èë£®ŽŠJ(¥¢Š(¢ŠJ(¥¢Š)V•iVN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊeGEQE-QEQE%RÒ­*Ò¯zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)•RÑEQEQEQE«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2™EQE%RÒRRRÒÒÑE«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢ŠZ(¢Š)(¢–ŠJJ)iiV•iVN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊeGE´QEQEQEQE*Ò­*Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™L¦QIE´QEQIE´QIJ´«NZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)•QEQE-””QE´´«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2™EQEQERQE-QJ´«J´êu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦Tu´´QE5‰Ú»²yç¥!Ϥ¢¢–àF››+Û‘QÉ0A“•ì2*/3k| 4‡ÔôGíjŽ< SÔ±áEVû@ D{Kž¬{TRÈþIÜÀ¶z-UºšVµ`ò îù¶Õ{™\ÛÏÎ~mµ &Ëa)Ã;œ(ì=þµ ¶Ú|s·3K÷2~訦ˆ[Ù,‡™¤è}>Úp[$žæ.ÐJC0ÈÏÒéÖÁðÌ3ýÑZÒVÍQEQE”QKEQE%Rcž &1ÒŒzQ¼gÒoÈ Ò#êu-QEQEQEQEQEQE%QE´QERQE-UK‚]Šòy5¨¹¹˜ Dœ“Y×LÓLq‘uª\ÅñB7’9bz5gE<0Ü:ùaÉ\dõÝTãž(¥u *9>µshy9«„‰r£-ÉU—ÂÆ£5ÆAO—îüµRþGfMÜáBŒöª·Îìà1ô\ý*kV%0È,Åhh ˜028 0ìjæš [c=AúUÊÙ­*(¢Š(¢Š)(¢–Š(¢Š(¢Š(¤ B œšJQéE-QEQEQEQE”QKEQEQIE´QERQEgj³ kIpÁ\Œ:Ö6²Ëik(W¾ÞoþµfjÎ-í¥ À3àujÀÓÚå8$šçmùËžqÏ5‰fíæny®Ž0\n/’ý+i~{c#6æ$0>‚¶M¾òÙ9 šeÈÞê‰sÆñUçí(Fù›×¥Vš?´J6­Y¶ˆÁBÛÛ$“Øäæ¶ôÈ­¬qd3gœV½œB0sަ¬Uê±EQKE”RQE-RQE-RQE-QE”QKEQEQEQEQEQEQEQE%RÑE%u®Ä,XÆG#•ö®WÄrù³«/+÷á\þ½!’@ËÊžVÓ“¼ŸÇò¨Z(Á/Æî•NÑ)/Æî•µnÌcÀ À­kw?f`Hæµc|Û08äsL÷]”Q¼ \qQX’×{Uw²‘ÐTV,~ÐÛT³*ÊI#Œ„*¤ýÖ^µ¬ä1uB¹þ^µ  Àî ·ž„UªÒ«”QEQEQEQEQEQEQE%v¢“¢Å/lQKE€†èyQKE”QKEQKE””QKEQEQMc€O¥#6Ô'Ú ŸJʺM»‘¾dgÏ#5Í]ÄWr°ÌlÛ‡‹qVû™Íe^±Y€N8ÅeÎJÉ…1+&`V¥‘e¶˜çvÝÊÛO8«p¾ Ûžj[/‹vxsúÕÝbþR9 õ«z>ÌäEiVø­nÔ´´RQEQERÑEQIE´QEQEQEQERQEQGz3ÇJ(¢ŠZ(¢Š)(¢–Š(¢ŠJ(¢Š(£ëEfêdÆCB¨'ŠÃ×ÄÁ‰!Bö¬½Wá˜VlI êI¿ççØv¬hÖ90Û÷|Çue¢¤€>ðǽi[…ÜCŒƒ•?J¹fv°Èo”æ®[(9B3»Žj{Uûð­ Blb†ÑÎF1¼¹n~Ë a”?2ãï °²)èsý+J+¸¥`±’OÓ¥\I£s„9ÏéRTõ%QIEQEQERÑEQIEQE-QEQE%QE´QIE´QIEQEQKEQEQIAéEeëù0uÀ#ó¬O±; Ʋµü˜@¯çX:iÿK@8!Nêç-N%ãӚòoÞ€8s]Ç)ž[+ZÜ€êY°™ûÞ•¯m÷“' ëéSíaÁ.z7Ö¯ˆwÊÌ„³X“Ôæ­,aœ²ÏrzÔªª€¹8„÷«PÅÎ\.xPOzž8Ò dÜŸ»“SÕú³EQEQE%QE´QEQEQE%RÑE%RÑE'~´cš;ÑE´QERQEQKE”QEQE´u¢¨ë}¢Å€8eÆ+7_„O¦±Î á³ëíTµ˜D¶-Î ‘øÖ ¬"ÑiH]ÇšåâÊRÒpIÀÍsÐÄ-Ô´œd÷­HŸ|EFyw­›1•à{ûV”l=½=êèŒÞ ,i˜€¶©%ÀÚ?*ù@!Þ¤—ÆÑøsPËÂpÿgÝ1A»Û&¨Ý6Á€ôæ´k¦­º(¢Š(¢Š(¢Š(¢’Š(¢ŠZ(¢Š(¢ŠiÝæ)Œ|šÛüÕ ü˜ÃzC»xÇÝÅ:KERQE-QEQE%QE´QIEQEQKE^èîM›r2 $ÕI÷Çå4y]À±5Zð‡Q_—p,}+œñÙÆãÉ­¢YCf%l9ªñ.>SО{Ömº'™’L ð êjŒ»·m=8«õÑÖÅQERQE-QEQE%RÑEQERQE-RQEQKEQE%QEQE-RQEQKENýœ:"±AŒ’+_šT’4W(„g â³uidIÊ dÔ+Ã.H!Hä?ýu›&T,r9ªp‚Ò¡bõÍ>m¿gFãƒÈ=Å[¹*,£ ‚êž½jÅÁ_³Ær0¤‰A ““Ž)–`1\ ±ägÓÒ›mómãæ<óéSã9Õ}W1—, ì=*à!mÀ“úScŒ; Ç>•+¿$w9=4È£ ùÈà~µr¶*ýQEQEQEQEQEQEQEQEQEQEQE”QKEQEQEQEQE%UÐ êXñ¶°õÁºè<¬­Xf|ž˜ÅBо7Æÿ0 €:Ö_–ˇGÞµKËt!‘°ÀçƒV#mÌcžA#½hY°˜˜&æVš¹lÞoî¤=U±ME÷à✱…R™û§†Æ0iÂ=«·?tðzb¥F}¿zÚ¬FÒ­´þpÇï™ ‹ ‡ùnÒHΊHǧÿ×K1•GßPUxè?ýtJd€ vâ­Ö­^¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢’Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¨¥PÒ)>•KP%xÉ"«ÝIJ:±â©Þ2#ãUÞz屚ƾTIQ…Ï^µ™tdòÐGëPÅr¨8È ð ȨáœD \†wšlrª·ƒÐU‹sæ}â@Æ×½[³>qÃgaÀçü*ųy¼ŸºzU•*~QƒŠÑFVR€Œ ¸„2•DÑ5Áà_Jd–ívsÀÛÆÒ:ŠkÂÓœž£Ö®V[¢Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠŽS‚0:§}&Ï”O­W¹p¿(<šÌ¼A扇Þ°/¿×ï\–Ç5‘wþ¿rç= F"1“ËãvAõ¨ü·@®WåÉÇ¿­0#&×uùY·—tà/Ê7œgéVté ]*©Æ\ãØcš±`å¦ œ ŸÀUѱòO5µû¨YqÔþ¦´³2€08sRÆÅØñÚ¤RXôíRTõ%QEQEQEQERQE-QEQE%QE´QERQE-RQEQEQEQE-RQEC7߬­Dnº8ÏLUµÝ9õª7 „`9,1YwìSÜŸNµFtÚ¤g$ñÅfêo$qÆ«!ßJ¥vÏDÜv‚ ¡xΆ5 HõFŒ–.ü˜Æ2¼kSñ‘¥le2½Zš*¦Fà€kL£1É {Ö¹…ä}îÃŽ˜¡±·1tÀæ”0^IéO$a™ŽãëNóBIäT•b¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š(¢ŠZ(¢Š(¢ŠJ(¢Š(úPzqG®*´¾i?(¬[ï´ç|¼:{Vuј|îp@éU$a´ÛX»ŽµBY7©;ˆa÷€jœŽz{â²nn ”ÙXüß8泤•(ÊO=IéYÒN”+“Ÿ¼kkI D’äqÓŠßðò!I¦n£ +sFUò^SÔàUâ@äsZ¯ päö«Ìø&¢?9'Œýj¡ÄìÎJð1ŒÔHKäcÐÕŠÑ«tQEQEQE”QKE”QKEQEQEQEQEQIEQE-QE”QEQE´QIEÊwx½fj±°,Hù[Õ+å?1?u«>è„(Ùåò dL¡9-EgN»B‘Õú×4ĉ›ý’k³¼ýMb¶|ÓõÅuXòtôQÔ±9ô®M”ÛéÁcsä·¥tvNa²DQÁo½V÷qÐg×5açÈ îþõLdÏÊçÖ”‚‘­Ï\Tæ/*вHAë×­JPÇUÈ=~µ=hUª(¢Š(¢Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢›&6zš­¨ö97v¨opmwjÈ™‹3^êkœ•ÙÎ@àõ‹#3@àUK9]‹¸1¹Ö šÌupQ»Z†k@§s|¯ÔV­˜Q DÎGZ×Ó?{  ር+šp¦@¥€–=ý*xbÙcEÜØùš§‰ÈE\ñ’Ô—$®#(^E7W‡XáUy½3Q|?–GAV«^´(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢–Š;RQE-QE”QEQEPzQÒ¢ºÉ„ŒgqÁúU-\‘bÊ«¸¹ }‡Z­¨ÿÇ©@:œôª‘Ä®ÄtãïXÐÆ%-Ôq×¥gF‹(lþ3¶¸;†TóÎ*-ÌS9š‹q+óõjKÂy÷2?:³¥—ó¦U$_ëSéåƒJ‘À«„ˆÃ1$vÉõ­"ä)ïÏ5w"c’?„U¥%رç=ë2âC+—nwwª9v,A9ïZ5ÒÖÕQIE´QEQEQEQERQE-QEQEQEQE”QERÑE%QE´QEPzPzQÓš«s#Q2=}ë+S¹‘Á†0@ïŽÿQ¾•ß0 ÀïïPÉò£aüúÕ P¤H¥N:uª²«"*íⳤ»Ž)„.I$üÞÕCÎD™U³œóT¼õY•IúÖ•²€Ûù]EjÙ’3òº¼V¨òÙ°xnzTÎ[k~÷?ÃV¥fHXä¿U?ÃSÊH…М籪W,0³sÇL÷5”ì© 6û ÷¬ù ¤%¹ÍkWS[´QEQIE´QEQEQEQEQEQE%RÑEQERQEQEQE´QIE fƒÀÉ8¸¶.=óBßu Ü‚ R¿Ç˜W£­djŽQ¤±T/œ¨Y 4ón2’#’?•cyÓJÌ~\ö¬Á,²d9\ñŠÏ™¯¹æn3éTÝY®s‚2ERò™®Çx×R¨Š2QB×N°ý˜Ä«óP+¢TòYŒ>vOAÆ@þtíJ]¼ ) J/d m£€=;×?¬Í —ÉÎ@PT~kŸÔ¤uuˆœ®Ü¨üÖ&£#¬‚"s…­tõÙ×QEQEQEQEQEQEQIE´QEQEQE%RÑE%QE´QIE´Q@æ€2(µ—{{¾o-[lkÔú×5­jfkŸ&'"(ø8þ#X:®¢^ãÊŒá©Èç·îä!¼j­½äèãËãÞ¢‚òe`T“éNiMÉ çås) ²×2]8’FÊãs)éVL¦gÞÇ+ŽAõ¨dUÎÅ'] T2ઠ/] TR¶ÂõÚ*X¡Gž6#$sô¤·E3Ç»‘Œý)ð ó—#«ªw8ò:Ö¤,%wÛG5~&*“ÈÙË#oÞ dô¨¯w³S;È=…Gs¸Œ•Éc×ÐW)u1¼Ô™ÁùIÚ0?„W5q!¸¼fè Çå\ìÒ@±?(8?…vÕßWgERQE-QEQE%RÑE%RÑEQEQE”QEQE´QIEQE-RQAéA;Q›ÐL¸*ÞY;…?Ê›+ì‰ÛÐf°­‘Y~nù5Ä ÜI>æ¹(×~IîOó«ÐqåºàúÕ뉎ÇÖ’ÆFÖÔŒ€La‰{qZȱ$x “‘ÇN*ëÆ©Ï?Ê©”Û&¦yâ³Ê픇éžF*‘%ùùÁô«¨ÜŽ8Îáî‚2*ÄqŒ£ËnàûŒŠsü@ñüªÇ MhHÊ„^(éV¤!cØ:àQJÁ"“ KÆyRYC!ÞYÇcÍA+……ÈrÏŽü×+i-ÈGño-üdzšŽI0N8Ý‚p>è]Ûæo—ŽÝ cœŒpIjʺ´‘í7«üˆ¿Î¨Ïg$AežEÎv¢/§­S’ÒD‘%™ÆIùTzWK]•t´´QE´QIEQE”QKEQEQERQEQEQE´QERQE-QÇ~”œÑP\È£‚3´sYšÄ긋 dÕFUŒvª2ýðƒ'Îs»AY2äi~ê¶OZa/¡8ôeà~=êX1ϯAøÔÖÀÔñV]<¸ÄQñòØÖ­æaˆ[@vü 0ôjÒºýÚyQÎFˆ»àJ’ØÃ,;Õ<²8e4ø|©# ‹·˜zS$Á°þu^à«çø@éÎsPÎw@=j2à[íqS–E,½V”2ýUyö¨ÁÁ•[ œ&1œÕt$´ªùîíÆjbÆ@z’>\U{ݰBÓʧ¨þTÛ¥XÏ2œd *I‚ÄD²ƒŒ€m×M[T´QEQEQEQIEQEŠ QKEQEQERQE-QE”QKEQ@â¨O*—aüMÅs×mÄŒO,zzv¬;¹CÌù<ž*$Q€§§R}*ª Ø\q×5c,@9ÍLÛ KµÈ'¹¥‘Sg ùŠt¨žQ!ªqºEææ›b¹•sÈÎi,W÷ŠzÔÓÈ Ž ï>üU™î »\:ç'>õ<³îbP|ËRE»ueçš¿h‘¥§šÝYry«Ð¢%¾ãÜdÔgç}¬¥¨ªÛD÷Y ¿QUÀ͆R r­Ûï`·?…=Ty„á¶ãð§(“ó4‹ˆ“$mb~ns‘KX"Œ6ã¸gi1€e¨5xÞGÇÎåp¢Ô¤m#+òÌW…Gn’,fQ’¬›@ýêÖ•o$sÊà"£ð©ìb’)YÁÔà~…˜Ãåe’0ëÿ׬Üá½ù©Ê3ªÂï#g§­\HÞeKuo˜|ÈÙíÞ­$o(XCa“•oj[÷ëì}jWÜ¿èåÃ)ê} JÜþçvAÁ›:,ŠÃ0àëM¸@þZœ1^íM•CCi19$ü@Ucµ”xÏñc­:ÖvÚ\ž:¨ëR[ÆÑ©óž;T¶êѰË;U$”)Ú\úŽj`$˜´±õéÍM†³$w¥P€ FÜsëNBŠ@°Ç_­9vd ¤ù©ö£ˆ†N|³ó†ßš”íaœS ±ÃŸ1ÀOB›çGß8AêzS|èÓ‡o—ëÒ‘$³œ•…•›ëHÎe>OÞëŒÒm(ýÑçÓ5JúEf+‘ڨݰf#Ž*¥Ó†b8¬ñ(VÊðÀöïU7€Ù^1U<Àëš²Û¾Ö ð¹É5>OÚAtj~~ÓÇÝ“O›ä`sšYFÖL „~û'µ6¬Þ[ýÖý 6¯û§à7O­tíoo2;Qýæâº‰4ëv3I!D™°+¡k;hÍv*£±ÅGo­L»X ìE2@Uds“ÅE©6Í>M£½ýê+ÒRÉöðH•T •$ ±àW6Ã+ÇSX„n^99©!È< ¸Ò­éìÂL¢î“_jµfÛ[ e»TåS$:ƒ‘“žkCd9̨6°ÉÈÏÖ®m?¼Q‚9Í0Gf;†*%KRìÅpAÒ£Uƒs1ÁàUˆÈÛŒ` Ó´”2Œc§z½î^˜ô§Õš–«ÌfùÄڨܴûœAå©«UiŒ¤¸ˆ =ËUD¡‘K¿›æ?'ÔûV"ÆÑ\¨vß½¹úûVb#GpÛŽsÚ¨ÙjzƒÜ=¾èÈŽY‡QM·Ö/¼ÃîÛcXt¶«tÒö©ØÄkE°ïûÅ ç‘ØÕ†fóI•s'Pz~Ud±ó2à™:ñÅ#æ €Ü`(<Ô/½¥°ÄôPy¦0vÎxQ5°•D3D~ñUíR=©8ŠX–¨§=±`#’<ެ+>çH* ûhÚF?Z«6œÀ3 m£œŠ«5²çhçRÒÚè^Féœó`ð?­Aiosö¸Ú4~£-Ž1QYÃp.Ñ•XŒúv®ƒ¹ò³€sœVû#JD+€dã´ÊÎ|±€¿¥Fñ&ÒáÆ:ç­A-®$Á8Ç\ãõ¨^æ`¶áŠh„gw!Gñ‘Q}îbU=O"˜aEù˜• ¶VÉæL§#¸n¿…0Áa+ï”7a[9ü*'‚ÎGÝ(?@jXmì’AäC±›î“Þ¥‚;#!èUˆùsRÿ˜D)†"³/ídIY‘I®+6öIX¨Ï­P»…–Cj{FfÜëÔ/rj(m˜Ä{úÔpÛ¶ì°éÈ«n™_.L zÕ†O”#às×µXe;B6ÎzÔ3KFá»ocQJë¸ ÛÚ¢•Óp,2‘I 9tœc Ú’7qeäcµ$M,Ê Ï4ì…ùñÏ`;šwîèGAïO_˜uì*9õ'|ñ¸ŽÇµ6}Aä?6sÚ£šøÉØlzö¨šSr0ÁUˆÈ`*&“Îë…#¸“ÎáXt"¶gM±«c|Œ™ÃdÖ”Ñy„Ë» Ěі2Ä—lg’kBÑ•ía1°¯qŠèívý–=  €lÂG›@ Ž1ډǛ…ƒÅCª!’Æ@¼²žÞ• úïµ`9Új²ay''Û G·=úÖB˜ÝÞ„Ä7KÁàþU-›¬€0%]H'ßµKhËË! 8«FL`IŒóŸqZ¶öâKxÖfÜI®+B·Â‚CÎriJ)íÀö¡ ÷| p02h1#g*0=5$iާ#Ò®ÛBcAógÛ<)±y9ÏAL¹‘‘FÖPÍùÕ}VæKhDʬÝûÔWó¼1 Œ5Uàĸ=Oµc%ܥɔ™ûßJÎK—Ü|ܰ=j¤òr»rI*§·5VyI•\è A+·Ú8ì Gi .£tÆcÛßš[h\ßÍ´rOõ¤µ…þ×1QÎ꺮ûŠÊ‡zŒ.GJÑ/ ‘¼Ô&@02*þó¹¼Å;±ŽE<åv`Èû½j I¨ÛëQ1Û,e@Õì—£t–R[¿*ßz–êæçÌymž ɨ拙îšKs †ìzŠ«¥Í{=ó5á)îÈÂç=*-6ââ{¶{æÂ£æ>•Ÿq<Ó³^nòÂóØf¶Ä »>eG®º“¡‰K í‘Åi‹»f]€*•@AœuÈëU$»Œ IóyÈëP=Ê$ä÷8¨Äà C´òÅBoW "E;OB1QµÂ삞”¬Ûþi=;ç˜ö^‚›»ÍËÈ>€S]Q@o-p9ëÎi4\7–¦ #¢/;ô¤Áeè1פt Sz ÁqI,«å*ëÛ5$³Ç³td«¯Qš|²¡BÈpè¬k‡Ë–Üwg©éYs>_9äœÖtíódO5wOζË™V­YEçÂXýà:U«Hüè‹gšÎ¹\;wõª3¾µFpC±õ4Ûºí¹¦ÚŒÎ Slù˜c°­(Ðy€nޏéWâQ¼`ŽV¯ÆŸ6"±FUÜ7'=1ïY‡"GÔÖHv ýãW¬T± ~âñš±n…›?Â8«–ËœŸáÅo¦$Ì9#JݲRèÒ2gà¶z1À¥Góp¼{Ž•,ˆìA@€ÿww³BA ¥{nâ‰"e9B¤úfšW‘æ@üñÇJPFCK úqÒ”È/ÇN)É >YZ2ƒôÍYµ³óT¼oà/CôÍO ¶ð]JéÞ–E™[8`ëž)'Šâ&ݱ‚\b’Eš6ÎÒlô¨ÏÌÃh÷5ì €OzÎæGj•>ûŸ|ÔРÿ–’ÏãRF rì§z‚ñUc. ç=G¥GuÆ‚¤“Û¸¦Odž9<â©K`†rìä†íЧ- óKàRKPdÞNAì*9ç†Q†c„Ó^o³ÇÆC7µ$³}ž?—†j ‘É3œeJ¨ªÒ·^XÕEG™¸#&®[Û$g'¯j±+K± +KpzU†`Tl9ÿj¦,06ŸÆ§,8ÛùÔ3Ŷd@Xw¢‘Î]FïZ†HÑ›,£>µVêfv¦EApåFÕàT2]«À®–Bd"SŽ›±Ð×LÁçFHÔnè+|†–=°«Èð)Ð…%Ãc$ãÖ¥Y–Î$…0Ä ±÷©‹n‹€vòO½2yŽÙóT5+µ¸‘J »:Ч{:Í eãgj·³) ž85FC#8-žœUILŒÙcž8¦[·úÓYÀoaO²r©2¯/.}Z’Í—"½3jü{c]ª¹­ûc¼B4RÝ2GsZщ(>æšÃ-œ˜雒ÜJB¹™4ð _˜ñVU7DC¶Gò©@ù>cU&Ú8=ûÖþÐøã2+.óàôõض6ÐÎ@7p 6ÌE)Øï´ǽÂ9>VlcµFò˜Ý‘BIðß•DÓ´R´@$‘)ÎTffŽSè§Õf0æPM¹UüÁJÒ´Þ$ÜmJ¦ß¾¬ö«ÐnI‡hÇÞ"–K%—;ˆÝëŒT·J\)bß9èqŠtÚzL:áqTÌS`¢Äªè¼œu”Öwtò´c“Ž¢¨iXº˜Âí8SúÕÈØ¬™ ö«‘±Y2zS'Š;–!ð­Ú™"%ÃØVíL–(î3“†í[ÑÃåB±6¨äŸÎº˜m„ñÁ”Úƒ’G'½t Ž%Œc1ÈëP(e Êp1ëÖ²ç)˜Êį±ü«>\E#Gašcȯ†EØ·ÿ:¡4¡ðT»ª”ÒÁàn÷©!Du2«±}3ëV¬âíÞg9 žZg±õ«p"¼3u#jý}iЩÚð\IçššÎ"$XËÉ'žj[d"D䨫äV¨ˆËg¿J½°ãÓs“P.Ä(ÉTY.NÞ´Æ”!ùÆ8ïM>L„È£Þš&òÜ—z®¤O1'(LU-«u+Ýj¶Å¹r_)ÏoJ|–!ˆd™Ã¯Lô«hÊ@hgJ£Œô54šb)\3P¤¡å qRAmßÞª ùr·1„lÝëUÉfFþð>´±»ª~÷gw~ð–áFpqQÇpÉóžxÁ©¡¹Ûµd$Æÿqÿ¡­=?P*;‚Loþ®_èjý¥Þ6¤¿u¾ãöúVV·©ÞZj‚Aå¨.ÍQ×5KËMM’G–ª>^µŸ¬jWV·äDàÆùj¼·±k;aåH£’£“ÿÖª7W˪yk2tTrj´÷qê›|Ä—û£“ZpŽ$UvD ·>˜©ÒgH”+2®Ú³æ8N UÆ*@É*yrÌćéHÒ,©±ó»³šk:Ì›H9þñ¨ŒL„¤€3àOF5VŒàòzŠƒkFqŸ˜ L‘Ãy¹\¸Ç'û´­– BŒ]Éþø­|›ØqÂLÍïPÁafÓì™IŒ©éšf›¤³´(2ãä$ã§jfŸ¼’˜ÙGš>é« ‘)(Ä£ôÛœj³"Û£²7îä$‚3‘íS°‰Y‚¯Üv¤1€@mþÄc"$˜esž…H¦"*¶oÀÓgTŽ0ò±OV4·1E^l‡fOPxüh"Ž?1ÉP{Ö-õñ‘ŒqNL;1…ã5stÌLi11íÆ¬››£!òÒLÆWTæXà‚8¤,N=iæTŽ%GÉÀõéS4±¢ª¶IÇ­V¾}‘&ÒJ¿9¨îÛlh8njÖ+{s†æ«Ù!¸›Ë †õ5 ºeÙ»ïPZ!žB™«þT6¹\¬Ž};U­©nHÈsíW6¤ †4°ËæHT`íK—m£·µ:&.Û09¥bFCǽ#e$`x÷¤l+{WFÜ­vo†RLWHq‚OJ̹9”~S\® åæ$7 wVë“/‚hfÀû§ŽW-žÝ±ÅBÌ}*hdgQqÛŽ•£e#È¢4Q•>˜«öŽdPª8^MX‰2w+aOLUë Vgó÷Rxõ?ýj·kÏ›»hþt÷m£~8«“ÊBì@~¸©år­U»¼ŽÊå†ãÓ"¨Ý^ÇcåbôÈëUn®ÒÒ‚C»š¯<¯ö7Üq#G»=~˜ôªSJëi “ýd‰»=qéôªÓÈÉk $*IÇ=¸¬(µKØU—ÌÞ çVèZ\¨Áý*嫈ÆÃ8éTu5ä+"ãqÆðÇ=¸¦j:|ŒÊü‡ oÉÎ)—ö îsÙæ¥±Òá·G vŒæ’ÚÅ!S,¤`=ÍÖQÛ!‘È8éVA rGËØ3Hä>Iû½†1A!ŽH8íAFbVGÙò r)­$‡ltS ~cÏ`)Ò£ÉC19´²FÍAùǧz%Œ´`ƒÈª—6r‹+A‚ÃïëQ}ÝD¬ *ðJÔbTJIP?»YÖ—[\Ÿ%weûUx%xfVlü­•cU­å– Ã8?)ʱï]*Mè7mÜGLfº«{Ûkø¶8T”ŽC çÜWGÔ7I·€øäj "Ù÷‘ôæ »KHcgr8ùy¨îD¡mÜûU[•imQTîPYí]So̪—d¶e]¼ò3Y¶Ú]ÆõyUUe$óT!ÓæâG # 2ëT`°”0’M»Ct¢Õa+&ônµG}WܼƒúTWñpëÑ©Ð"O¦ˆåb¸såµ:=²XäcÃ,ÿ:|j³ië„îä>•%¥™´ß3Àp éO·¶0+LT²Ž3O··û2<»r§ŒÕrwJÏÓš€Î[¥BNé =*Ü €d'å žõ<#ÈO“Þ¬B»T±ì8ÍAqt¬X`œg9¨§œ9nçPO8f<~µÓÜ3¤ Tdã ®ÊñÚ;7`¼…ä éîX¥»0ÍeäãƒórH5ËJÅŽzu5€í½³ùÒÏs“`'(½¹æ›+FžךILe¶óÓîŠÐ³¶ÆK1%ÆH®‹LÓÖÚdË4€?»[vVk$7,ø&¦'Ó§Lb­–$§åé€*rI`$è¸ÚïҪxVè>éiYXdŽ:á¥`TcõÝ¡²£¯ãY2ß8«G¾,ò¬+6K¡æeÜ™û¤V{Ý0£.äÏÝ5 QeTQ±¢÷h”* .@—Ìm¸Ú H—®ˆb8hÏ8niíÕ dOCBݲ©B/¡«GÑ™T`Ž£ôÂÞb—oº8Ͻ&í˽¹Ƴo4æ–Q*¡»õJâȼÔýîÆ©Ïd^PÃŒö5¨§ÌGQaÇ=*;ñ™U—œ qÍC¨eWQž8öªNpI sôªÍžÃœUgÏ÷OJµgºLÝ›…©íËC˜{ð*ͶøcÞzž¥J$ß¼Ÿj²oݸŸj²Ý»<ô­!(¸ˆޏÅ^­Äypã®1WD‰:n`ã­\¿Éº 0ƒŸÄÕ¯¶ëä@xŒþf¥ÖIkÅ\ðª?™¬]FÒIuHU*ÁT{úÖTÖí%äAS!±Ç­f½³Ë¨C…ùNÕ#׸±Çldˆ‘ û­Zr”¤avòìiHããÚ’%dá2H$RF\í\’2)# ¬p»»Óظ`ñÅÁûËŽ•#,™‘|¿Ä1ÒžD™Þ±ü½Æ)’¡”mGµ6T8VÊ’d8ÝÐùS"@ p(/À=ñÍKkläÂ’ù {Ô&-ÞÌHSßnޤ’å‚¢ç©íV!Á²\°  =I©SÊ·Þá†ØÈýk3ÌûLò:9hÇLÖA“ϙٔŒö¬ÐþtŒU‰\ü¢™{:Å,`ïƒÉ¢òUDT@îh¼˜"¨P:ÔÑ\ Q,jñôû¼Æ¥Šá¥…Dˆ®:r*T›ÌDˆ¥}@æ4BH‚Ç÷º€*IbYbE;8§MɈù=qTÖ w… O¨I!¶À¤ûUD…Ë I«+ò!@¹n™ÇJŸ”]›~oR:UŒìB›~lV”ÅZo™¸)óµªJ’Ýç99©u î‰øE"2‹¦çË] c©¤Ipܲ ýæ¥óp~öÜ(½ê6;äŒr ÄûUeËÌ¥‡S¸ÕdËÌ2:søÕˆí¼Âw)Tõ=MiYéR\ɾu)|õ5¡m§[|ÊU}ûÕÅUE£v­ØÑbŒF‹µW ­EUT £ :RÓ©j¥ä¥bp SƒéYZÑD‘8¥P¾¸)«ÀÈÀ>•Ë6y_ÓÎIÆk˜ŽÍå|o@Hàž3\òØ<²¸=z¹ec¨[êP†Gò•¹=±ßëZ~¡o©DD­–9ùJ÷«ú}•ô‚ ò䓯+jg‡í ÅÀU=«÷[h+ ë€{UÙe€^ݵ1ÐõCý ¯0“©pr>SY“gŸä“-Îr+>CLB>H«…P¨Ý ªcŒw÷§’ "¨•"ãpfÐ {e.%¸\œ&*ô¡žk¤ËÑÓŸþµ[tROp€·ãµF9Þßy†qM ÓMæ7ÞaœPÉ.æàžiìŠïc¯J}ÜJ»A6:úS®#@G4Ш­œ úšÏ )ô樳Ï|f¥1±ƒÎOµJR%Lãšnô?0Üqê)‹±¹\œv"˜»XägZ‘&$|¿)©ÒrGË…#Ö¥Y~RW‚(™A_˜Á+AºiW ¹XuÇJ æAÆAê9_b䱦MV’B£$œž95¹óž•]€—tC ¯ò¿ÃïLRf ¹ ­ÁÛüéïUªÕŸ6Œ7hîqÐÖ«3z3G ,::ÕWÓVHÙ’O˜tÏz–ÂÎKH˜;dºƒ´T¶¶¯o`KvŠšÖÕ­á*[$€p*ÀY7…C{Š‘VBáLÔª²·€O­Äv©eù½©n#!P°½¨0¨HɪÖñI÷þûãT¢Vû 7û=j›¼Hßw“×mŒWv@EPt=êÜ­Íš¬YSð§¿½Z”¥Åªùy;¨‘–FUôàUHДezÕhвG5—"°“;½*›«n#泙ɀZì¥&(¸9ÛŸ©®–î?#G,‹‚ûé/TC¦eF`3ìjš"âVË=»Vu¤I5äQ¾ríÖ©ZD’ݤdä±Íj¢,I±º¸![x–$赿k^‚–ŸN¡Ž4Žp ô„àXÚùˆl…†öêkœÕu\¤-†cË ÅÔïŠå#n[©Ÿat<·I†æÇ k'>S£Œ’&²Öä˜ÝrÄõ5;DþZ¢¬_&§ÉTvMX‰H…NsZVÅ–æ/ÈxRy5­˜ìÈ•~Vû½Ïÿª´•öZã†û´Ã…Îц=óYò7c©÷ªRÞ£/ó/$8êj1—`£–ì=ê%Rò’x«+dÆ&YY”ŽLÖ¤:s,N¯’ì¸äp3ZQÙ£rì1’:Ux¢´Ò”©ei˜òÄtL‹k(iIåjªÂ 51® ž¬{RÛfrÓæ ;:ñô§ÛFò©¾tfEIn­"™›æSÅLÈs„ƒÓŽ”é ePê‡kt8¥š&pS†¤‰¾\“‚OÝâ›o¹ÝÉíÅ$îOjAHØÉ>ëÚ¤XZS´‚@þ!OXŒ˜RÔRù1LxêM?ìÆ-Å$éÜÓŒ=ŧ­5Uw1ç®Þµ m2tÿg­D˜.2=P¿¸¸YŒ”NƒÔÕK»‰wþìì·­Vºšmÿ' Ò‹™ ´R°=ò{ûQm+(çß&‹i‚®sõ«dm`ØÉ¸§åÙzp(²>†šv3n唚k`¾rJÓHRüôë[w‹æYɃœ€~˜­½\Ó2Ÿ7 œv­-TnÓÀ_ºH$Š©h†k˜Î@ÀÞ}ÇjÏÑ-üûøØ‘ˆÆü}8­TÒ!ónÄ„ýÁ¸zÕ=k¨5»IEZòR‰Æk7T¹x¡!OÞî*ôÌ‘ðy5ÏÝ\[´½áÔŠæ§–&•Ë»<ûÖ óDY‹š­Ù›i WŒ‡sØv©àHdY0ÎxÇ¥OC$aÓˆ©`Œ8ß# g©íbC‡•À\àŠžÞ4?<Ž0N1Vål‘—hé“Ú§»mÄl ™=ªk†aXÐsPª“&Ð?-TŽ’MŠ8<ñURf .EL 6Q¼ò©L&ìÈíWáX´ô3È6¸MØ'‘WG`­+Œ+ësÜ꫇ô5™.±quró厊k3û^k›¯”ü€pzϼ¹šK–i+ ôª;LYÁSéY÷RJ÷*TžÞµÑiè¶z]²ÈX4™ zÏøVôH-4ËTv`ÒØô¿Ê·ãO²ØÛÆìC2çéV[hˆäã¿ZtÛM§Å—¾ió`Û|®K-»Ÿ{  €q»½I¥†xžL!ðOzu€gˆ¶ð2+:ÿW™/ÖÑB*¥±Ë¥}«Ê“½µªªÆ¿)8媕ީ"Îð@ª¨&¥Ó$šä7˜ÊWûÝóEƒ½Îá#(¿z}›5À>azš³ ÁP`Hªi@Y#HðÁ›iÇ?OÖ¦bDUÁÜqšŽp­!Š\ÜTS 3yO¥E*+Kå¿jŽ;ŠP@Ã);sQGn#— a—¦i‘A²@@Á^™¨/µʨ öéL¹¼¹ÚqßÅâ£ü o —̓ÍÞ»ˆçµJ̇ÌÈ Š›qx‹äg•;ä’üçT$n¤Õ XîàU}Äçoñ* ’~^õ\1?wønáÞ4HS*våªÄîèI‘“Vndt$$`dÓ-ç’<Ç&›¬£œZl2°bH=jùmøUÆÞ5i›p :qùÕ¶;¸…g\nIÈ=j”¹Y*Œ¤¤§Qô«¾u¤@ÀŠÍ:|¬[ Ç¥\ÚŒÅæEl1n•.äc.ø9Â}ižj0¼ Lão®i©ó4°‡öéAÕ¬ !De[<…Q‘W¢ÖtØnÈǪ¢óVST±@•>€tªþdŠ\fUp.:©$ß›‚•_¸tªò¯cœ ?LÖl:$îŽCF CœgިäË(b¯Øx qš£‘#)duiZ9 œÃ|§eO_Ê›<[\yWjFÊzŠ)a¸òîבЎkC^YM½ŸŒìAZÞ!I —!pBõè+G^Y\[,JY°rS¶¼šŠÖhYyèxl…f%Äðˆí¦BëT’æT)o2ÝÀ<ûV¾žÞ]Œ®{3šÖÓ\C¥Êû¹Üß)úV•‹y:k6rrx5‡-¼¢bÌ“¸b°Þ'“ƒÉÍc´N$'Nkj͵š¨S¸óïZ0 ²¨7_zЈ Tž¦”8 ìg=é#?2à•bA¢3ó(ƒœÕiîâI[qËzâ›-ÌbB\䎜u¦K: NXRÛ]‹•}Ãi^†m8¸WÝœ¯CN·˜N„·=k*æP`FåfÍgÏK¶SÈ'5Ÿ$enÊžA9­8ÕUTmÀ¯D¨ÊñнÕ_™p1Tï ‰¹‰Éõ«\Åå#<Š­s1Ê· ½“«‰&ùT•zl6ÅH’Oø ŠlÅÌ“þµfx7±•FrzT’E¸™ëRÉâd­UdÚ~oÊ #š€Œj îX¯”£‘Þ¢’bW`íÞ¡šáˆò׌´èC]!wï|§ûÃÒ3®Âq"ô÷§F Ê`ÿ¬NžôØG—nÜóI3>ݼçšH#v|mïÍu²@\‘ŸEàšß•Ú(2çnÃïÜ•š(F On´¶Ñ¸¼2oܽ3Üçš~“nÉ}ç,¸ÚsÜ‘š~›GrÎ[ŽTæ­´±¦AaŸAZÒ]„å‰#²Žjó\D¹ù‰#°¨¥whÉXÀÇ©ÅA<ÓËdˆ9Á9?•E+Ë$DªcÛ<×=«Ýã £,ù“\¾¡?ʶrMsú•ÁU½MeE‘ƒBËzÕ\Ä|£õ¬è“/æ²£¹­­0µÍì—òemíÔ? ÙÑPËr÷òŒCl…‡×¹¥ye¾b(WQØ!‘ÞêN<Ñøœ £.í3u“ÍRK1ð\“úÖœ1,A¶BÄúîëVcPœˆùõÍYA±rS?Z¥wi5Õߎ8º`Žâ'¸”Ì»Qz`TSDóLf*ž1Vmáǵ3»ø9 Âä椌.G½>bþZòA-Ô Q3I… œ–=8¤•Ý6÷íV!•.‡‘p¡Ë ©ÇQþ5±§Þ&£Ù.•]ñò68#ükNÎæ;ôò'¾8$u§N¾B é#9©/Ô[G”Á]zœguIt<•]†½\ôÍ.«œ&ìñÓÏ<3I¨7Ÿvãô¬/&G¿,rH9?JÚíŽ&wÿµZJÅÊÅ3ãûÕ¤­æmDÁŒŽE8*ªávŽÛO4ÖTÛ„À ã”ÖU#äÀÁü¨ppõaÓŽÔ|áóúPèF95ÐI*í‰Â°ä†ôö¦›wx°„+’§µ5¡fŒím¬*§ör'Ìvc×=*¿Ø×9ËÞ«ý‘AÝ–>µ=¼IËù›®MMl>Dq>µ4Œ š`µf˜—éì)ÕÚbg¿%³4‡pÏÒ£¼s[:dâ™tÍìéQÜ’‹·Þª…,ØœÕl dâ mÉÅY‰”†W9*GÝ©¢`AVäç54l¬ ·&©Ü_¸m‘e§½W–éÁÂ|ª8âªËváʨƒŠb“w͸õ昻Ÿ?7½58-š”Y)y}²zR}Jd·Î}*Cl¥2NúSì,1‘Ø §ÚZ3v`00)ö–‡ævlqVq·#$ÌÍØTÃÊÄu˜·aS9žÕ°Q2yÁ^þ•´ÑF\–m¥?JÔdqbv”®vûR–[‡Jc‡8àã$w®~öþI§.FHsÆÞ3ïX7WÒK;yNV<áqÞ·mÖÚ +/=É­»7tŽ ¨yØ ÷9Åm[³*ĸÝ#õ4—"ùÁ.{vfkô³\0̇ ô©¥»[q±‡Îj•ͽ´ÃpL2ß&k2í-¦ù£Bª •ÈÏZ£r°K—UqÎEg´qOnñÅ–qÆ1ÍQ1¤ÑíŒPqÓQ¢¡TŒŒqŠÕXÖ×LŽÑÐn”l#ë×ô­Ü-Ž“ ›…L6üÉü+U•m¬b´`q´j•l(ç1ÒìtòËrÊJ_ìäò˸⪘æ2˜ãÉÛÔƒYɧÏ$Æ$tóƒT£±‘ä(1€{™ ØØó×=Ô.M>{8 87*Ǻ(Éé-¢ˆàM»ÔÔ†0í…•Ÿ~Z…ÑXá$fãÒ£(­Â14É×ËŽãÃ5ÊíHŽFÞõ ÒíXÈ<`¥2Ô{=‰ûÜb¤ÑÏ—©ÀO1P~¢Ÿ¤ü·ñ–éÈzðn9Æ mjë¾5!±ŽzÖ­úîE9Æ*˜Ç™·h‘Þ²zI°¨£½Pä9Bµ.Ú’1’©# oJØ)Ž™§.Ëḣcâ–)à¸'Q¶9|Sã’Þ}“…Û‡÷§ÄðÌ\mW©\@àwôûŒ'#O› 21ÇJ‰ÙžÜe|g­0îžËpÆå“Á™mà d1Sdó͹LÊã½DÂS)¶*2¿2Q‘#H`aÈ$Љ£K}¯<±ÇþÎy4ÖŽ;r­,ª§û óMeŽÜî’P ëN/æÂbäVu”—‘Ž”¬ë!,¨¨n óbÝÇ'j;¨ ‘y‘8“¹ÇZŽâñ†Œ†êˆ\óŒc¶*–3Î1Š«ŒóŒSB»~lÿ¥HƒûzTˆ1ϵP–$Ü1´óU$ˆ‡$w5NX~~;š³lUÖúý*xJ¯ *Ä$(Á¥’C¿ŒcÚ‘Ûçö¦³þÕ"¹TÁ8Ïj‘\ªc9•*±TÀ9ö¨®n>ÌŠ¨˜ßøè¨æ›Ê@ïŸÒ¡¸Ÿìꪟ|õö®ˆgö­·s$üŸ•³[ |ÉO 3ý+ž·Ñ§s‰FÈ÷`Üuâ±áÒærƒb“€}k&ßK”ÿ­ù’G¿5Ò@‹ HÎѺº[H¢··YˆË(Ú¹®‚HbŒ¶03U.rÒ >byÏJÊÔùÁ Jλù¦9Ï_j‘VI°½:úÔ‘C-ÓàŒ.;w©R)'l·»ŠBc’á „Š/šFô欅Š[´Š,,eä~˜ôæ¥P’Nª€ f÷¬é'kíD”'ÊN3œäV-åÓ^_¼™>X8^s…‘q;]^´™ÊÍiÅ´n‚W#öïZV~iµ‘Ž#Üb´­ÄŸf`]”×=©õHyÎ*¼³ËÌk!9î*¼’ÈrŠÇëDQRAàõõ¦DŸ»cž½sIü‡'Šq*GÝ”K; †sŒì#5ÎÜ>÷ÜíŒúÖ$­½‹9<úÖ<Ï“¹‰äÕÛYVd™Ã1Øz± ˆí>Nî•f'Ù‚ùËt©­/UŸjüŒ}{Ô¶×_6ÑÆxÁ©m®rÛGãššso»÷˜Wëš–o$¶ Þµ$†"ÛO LòÊÄB“ÈÇzaB#!HöÇziB"!¬¶lr òQc‚OqÖ¨»`“éÖn¦YÑ›¯µ)’UQÓ½, d—w«ÞX@\Æ­l ó ³´'Ì=i‚X˜° AL‘žO4Ñ"€yëQËd÷3«çÓZÕ¦”àcÚ¥ Ò¶˜ã Á'5¦X¡ H dçÚ´ )…<…ÏëO‰¤šUV+ÿtb­Yy×W² ¬g-ÏN?Ƭڙ'˜o*g5%Ëm8ö©¯ä°@x¥>éÂ>Þp* awª’z ê ïT$3U]r»‚žiZYx>µ2+Q½@¥Hò@Ö«y\!†(|Ûzb Ky®‡“ BJžD°Éqû¸Ø„ÏÍŠš T¶o$žI>µÚˆ§00 Éõ¨Ùcs퓚°dÄ{%qÍK,¤ Ž<ìΤ•Ù€3´S@U#9-ס£däŸJ„>§)+ àçv3Nà¯_|f—†ÏáG–ÎFÚ¾†Ÿög|>Ó…÷Å8Û¹Ãp=ñKR@bC?ɧF©Â¶àç§"žˆ§ål†¨naQäÜqÒ ¹·c&)7÷—* áDPñ¶ì‘V£ÃçîàLVÅ´ªm…Ûî%“ÊԎ@ óÛ,Y{vÅa]jN&T¶Üy9}úçç½Ë¶ßx§½bMw)”,!¸'ƒD:}ÍÆg|¡=Í,vSȦgsÎM*YÊÈepTž¾õ¨‘¤vñ)“’¼Uß%c·ˆù™~P*ëD¨ˆ7|äp)ݳhÎOZxÜ(''ŒS†í¡A Ò"9ÜyS»Žƒ4±…ˆ·ÌpÊw{ ÑH÷dð@ÍÀòsÈàÒIn‡ A±õ¢Hü½;ƒTK .LŠS<ŒÕ7Ó·H?x¥sÓ5Q¬IË©_LÕ]Hí™c À_P;fÙŒÅW¾%fÚ Sm—|ñÎzÓa]Ò¨ã÷ë­IzÒ²z¥:èæã'¡QKpŸUfÞRãó«“å sV#'bâ™=ªI!mûsÕqÖ™4îXg¨¦K³dg­,ǓʠêG,iadðƒ®:šthˆ¤ôP9Çz£s3I÷>T¦y5RiK· :dÕ)åfl¯)¶HÒ\ ê9–¨^UôïKd¥åëg$8㎵¤r[8¢O=¸«W*… ùsÜÕ«ô_´— `6‚:â§»LÌÛH€TzÔ–Ž<×n)ÏàqVt‰UZFbòòÃÓ>Ÿ*#g(cùšG6@ÛÏAŠd’ ™‹ç–è1Ú£i¯»=sÆ;SbÁ˜3.8¨adÜYÁeÛòŒÓ"` /–㌚F+!á7v žôÙ'Rp°ô'€i¯*“»‡¡éRÛ¸ |¨TÓ­X\9â#ëŒóV,ælb8Ð`j ßtnÁ8Îi'e,&$=Nr)$ °Pƒw|Rr¬~näb©²„vÉÈÉ⫵›'>ÔËqægRBÖ¥ÓíÄâG™ ,cõ©,aY¤•I ŠŽk¨­¤ÚÅW+Ÿ–’{ˆ­nOÝ\|Ê ä`ÒI:ZÍ‚B‘ÈíS¤ò8 pñžAŠŸírJ¢W;Ó¶1ô©„ï"‡l2ž„ gÞì~SÀÅTu2H]ÉܧŽÕY»obrJ\nÆï\y‰Yro^ÆžcV^#¸ïI…M±à0íN·”"l‡aÞ˜j}áÅ6(ÕäÖ~åzŠX Y¦ Œ¬ùçÚˆa¸d*Ç£J|ÒC Óå÷§Ýn…Y][ÁŽô·¤l¬§|žõ^LÐ HÙÆ?© ´«Ê ìà~ulÒ"¼ŠA –*r0Ã9Á= MWH=ÆOJ–-Ê0õçµ+áñ½ÿL ÌüúúS$ñ“Ï­2IH€¦rÈ8úPó³˜ó–AÁ=1CÊ|’½Ðu¬)®§ß‘)\¬‰'—~åðz É–âPûƒcµZu7ñ,èFð0ÀÕ–_¶'š¬7ô Õ—Oµ§š§œr OedÑ’ìÛŽ;v©lí ±%·u©­mŠ%·qÖ žÞF”¸9Ï­C, eÈçÚ –2ûU€¾M¸ï (ާ‚*\ypЊr>ìpTç¯jT}ÄpF^Ôå|‘Æ1Þ˜ÊÒnäñM*\°ÈçŠià õª2Ú²>ÒWðªÒ@Pà~•VK}§5´‘Àw9§Äë Ö¥‰Ö1³÷«‹—e È=jÊ‚Îr N¹,èjÜŒ$ž-ãæ$ð*ËJ³]Äd\žxµOæ‰.Qœdàô§»KGÕºûTí³ÊføÏåR°_,ìþ.¾Ôñˆãý*Rw±ÃmÂb¤m‘Ÿõ+…ÇóªªÄ 3e±Óµeùœ -õúÕ3%r 㚸ÈI €©ŒãÓfHÉÚÍœ žE%ƒp3B…À#©õ<Õ›Cî>ñûÙæ§·)œÉ=i’“¨7UúSoQá» ‚02§=½)—és·wô+neˆ¬;‘Uc>l¢"Bz‘PÆ|Éê)×Sù6² ퟻÜâ®KrmídE;0‡{œu«Na¶unãJæÈ¸ÕcÞAw€~óœ+ $úŒM& ´çç’=kRmB/7«B>pOjµa<±Ïk!1»ciìh¶•ÒDPça==*KyfDÜvÕ~[ø-n'gPÃŒ.@5z+¸!ŸlîêxÚ3ƒV’òf 30 Ò¥ófÉËÇ*ä2Œÿש‹‹{Ç/Ãr°ÝŸëS–òe$‚cdlb2 ï%³ü^”È^&% “Ÿ›Ò›ÆX®NwwôªRÓ/EÊ6è˜âAê=jÏ¦ß Õ²Œ~qP’Ú}Ø™I1±Ã_zÛ“dІV|Ù5ÐNb¹¶VF)ÝÍlHRhƒ©éƒÏ¥Tš'ÜJíTîëY×¾æe§½R¸‰÷@þï­ɰ+ü95´lŠŽB?bi»Ðª«¯Ž)á¾nƒ¿­5ºŒœ>õ ×Ýjœ·p’mØü;€ª¯uÌ 25U®cba#+Ó5Aôé^L(ÊvcU^ÊFlŽPôj¬öNÏž©ØÖ´BÚßËqn­Wm×ìðyk‚[«UÈTA–0sÞ"©$1ØúÒ ²¾Þ¦8BH ™dM›€Ã{Š˜J»w îý*A"•ÈëU_¤ý=ª¤Ÿ9 žµ]¾mÀÒžX?ÅKùíRÆ6sÖžBõ^=©Ç‘ùSÎ:Š¡)ùSõª²Ÿüj¬§æ?Ö«IsÚ ~EW“ äÒµI’»õÏô«ÑFâÑ]»Uè‘Ūê+B$)c‚ª2 9«¶0ÈÅBªçsŸZ·kfgbGsOóUrCuû¼ö©„ª7*€ùîóR Päw¨*I9-ÛÚ«îd;y-ÛÚ¡km<±ý*bžZ ª>o˜±¥» @ÏÌO|ÒÝ ‡j¨}âGZk9ÎTþÕD&ÝótÇSQ‰K݇ZE”Fçi}Ü÷Ž)öÓyLYOÎ?½ÐÅ: vÈÜúTòL$£t÷Í\»¾´,Ÿ(Æzæ¬Or%xÙ8ÈÇãQ±“ÌÓž»Ï¥V•gŠP& Å¥C ’)ôÁäÒ–å$J‘ÚŸo¼çvc#¶iðÄ.RMÝ6ã?Z¯¥iæÊ)Ë8y&8]½qOÓ,¥¼¡¤Ý,Ç aF›d¶vî…üÉ&n=…6[Hc»Ž]Ç)É¥P¼·Š;°A9^¸ª×F·nr½qYþ#Hàa°©ª£!=Á#óª¼e^ ÝóŽ=ëJŽ+x6ïÚ¹'Ó5£5Ò-µ²®ï-ycÛ5¥5ÀKx!@HE娘+„u|IŽ pÞŸW› µÁ*ã®C7͵“†Ær$Œn¢h%äòäRyqŽRHÇqI¹¦ŒÇ)8Å;O^Cœ²}Æõ{LfHL.réÊ7¨«– Ë–Ç,½µJÌYØ@jI_s°Rp½iîÁ‰Ã`µ‰=Ã=ëH§8_aX“LÍrμ(á}«"I]®YúÀö­(å/fZFü[ «É.lÉsŽ0 v«¢OôbXãŒf²Ñ`÷Ë>ò ™ª!Œ—yCœðúÕòb;¤“¢Š»ôþáÐ(ÎÎjÚÞG0…!W°5j;µœyj¤ªiÉŠppqÆjIóÇf¥Ÿ1Â[¯ c<ø$œäžµ–Òàõä÷¬·Ÿk{š¹c3å¹È<еi!-°ŸqV­$$í'¶EM$ˆÉæžîªþôùU½êD;ÇËÞž‡pÀ§¡qõ¥$úãç­¯Z¯s²–ÜTÿ:Šh••ŽvŸçQK°'%Hýj"ŤÚÞ•I°ä}*8P!,H&®«R7z °vy$z œ« š·æ:Ä˼ÝñVDó¤.›¸“¨±æH±2ûý@¥‘~ËlΙVT²¨µ´,™V8À©&Þܲå[Ž+ \Hónóìöâ²ãšFœ0s¸ÖtÏ2á²I­ÉiC8EÁúã5~ùKNè¹ÛËøŠµv Ë&Þ€œU`vÆûÏŒ~^<$nIùºT1aa9?14ÐêÈ\09ÍH›<½ÙǯҥR»7©äõbÏk£Ê9Üêp¿‰¦¡†Å¾f2IýÕéJ¦ #ÛßÐv§G}ö‰v¼+ñ× ¡.¼ç*ëÃ{ô±Ü‰œ«/ÊÞõúso/ ރ׵E5‰tD²Z†[#èw(5fÚÕ¢‹|„)<Õ<å#Üä+*Ì0yqåŽô¢hKœ´úÓeBü‚;Ó$BäqŽôA”-¸ðˆARI8©b¸ŸJv°<óîqRª†îsîj@ Ž¿™¦¸ßšë¹O4×]Èj°@:ŒJ„.:Ô!qÖ¬B }ÓŸcRÄ r}ªX×—ŸZ—J‘îÝÙlCòïµ¥w+Ô? õ«i7%˜¯Ê­òëSjò„µ1ÆAsÉ9ý*ƹ"GoäÆrýKÓÚ¤ÕäU‡ËO½Ý`ÄD*ò“–Qòÿ½Þ°c"%wGÝ5ù ò—þÔÐî®.#’"êX)òóݱZš4­t&Ø6±?ÄÕ£¤Ì×PJ‡`C³ý£Tb°ÔÆç(ÝyÉ÷ª‘i×øgØ@rxªØÞ….Êxæ¬]–‹Nn~bÀK9d²ã«–åŠZ.:±æ¦Ñ&Ì’@GßÐŽ ;O›ýdGøÆWð§XL]£|â®(Ý$ )`©áK3í…íN NöÉÀ4ä} JÌÅIÚëýj[Yü©HÅ£cµÔž>¿…Ik6ÙÈÇË~z{Óüµvaætœg5<вo÷™ëš™ÆðÍ»5Ÿ¨’4wÎ=«>éÞD ì*Ã<€"÷=ªÖ‘•º=ù+Ëc½jè0Ì»¹Q–­-&<¡¹_çKx¬­¿'!½;T’¤R"]Àƒýi2#¸úÕ+Éœ«Jäœpª—RÈÊÒ9'°«\ÊûZF$öV;|ÄŸSY‡’k-¹'M^±·m¾c§¶jݬ'ï \´€¸œUïb!•Ýœõh™ªÅ”18a‹ˆF ÏK©¹lòp ý*šÜHÍÉ'ØÕT¸v<“éW#,ñïÇ#±éS¨.…»Õ–MíUšGcƒ“Ï b¡•œ:ãÐb¡•˜ñרTCxsŒnœÔk¸œÔö’üÌŒr¾j[w唚–ÝòI«Ø“S*PôÆß—ƒÞ•~éÇ£îñÅI¦Å·dH2ÉúûÕ­"?Þ$J¹d¯øÕ50Ëó´gkQ·ómÝ ‚z€µsU¶i •vÜ·µXÔ`2Âë´œä{VciÅ´ì,DH]r}+ Ù3Y ¼k5ì‹Ùv ©#³m:ѰÜÄ硨Œ/fªêÀ6s‘QÞËk!ÁÎs[Ó ­B6–ëíÿUtöw"ëM8Ø\øìk †U¸±ãœzÖ%Ò¬öó"0bŒI úq\äáf†DB©ÏáXWfÕH;I5WI—mäCŠ©ªÖM‹„ç ‚Åñ0sŒ Ý€mFÉ!ÙþlÖŠ ©ŽC³’Ư¢áÞ$“T®XB³/cÏ5QÔ G=j«©ËÆzŸZv›qz|q¼Š²ó…n2=ªå¬ñ®šˆeO›än23Ú­Ã,k`Šdð~Vúö©¢ÉÚÌÝœsÒ™ lJäŸ<úRD„à°pëéU-ux!ºÚÇh$(8÷æaªÇox3´œ 6ÇSŽ;­Àc´šÓºàÆT Œw«š©f}øÎGAéVïË¿•F Dó•°wn{U KpÓ©ÁV,*­¬ÌR cO&!£`A'*q‘ïS«èr 9­KH#' Õ)u=×Y¦py䊧6 ^ãwUÎ1š©%öéÿÙÏ­_ÄÐaV*;š¿i-üØS*½Ïj»!ó£\Þ‘åfÏ\ŠŽYÚL“œÓFrzäS.%X‚ç,Hû¤R\ºÇ°Äã¦(–0£$œUatÎøïGᔎ @— ω>unÅ@’—m¯ó+}àE<éj&_)ÒpXžu§3÷«°.ÂH-éÞŸö«.Ý™$ŸjmÜËmTÌpµGs*Ÿ!åŽö¦\ʰ§ÊܓЭo$žz‚OÍÏáPBÎd IÉæ …ßÌÁÏ<þa¬ãi7êjSlŒÙȽKöe/žëVRªqîjpŠPpz˜"ãí¨$ó ¸Ø6ã ÝsP¸}øÀ#±2cŒzÓŒHAÈœñŒ2iZ5$fío™Wð¤Ø»O ~]§…Rƒòäg©'Š ÷sÓ×­&Ð>î:^Þ€v¤è=(<J¹£FwKqΨ>Õ­áØxšäç¨úUý3²IÛ9|ô«“ôæ¯^àgÔŠ·sÐZ§™|¦ÈÜó»¥b¤l òó»¥fbm›OF<æ›*ï†I)ŽÜŽxÃÄFì•?¨®#ç|!£²–¼ÎŽáÇBM^±—ËÓ¥´ÆæxÝÕêM[·cŸ-¾Ü‚+°¸û%Ñb¹BHaê+Ÿ³˜Ûϸ®F0Õ‡g/ÙîáÁ85bâÍ¡u¸·mÑ9ܬ½¥YžÕ£"hNèßGcéV&¶òÏ›1· úV•Á’ $Ûòç½OjÅÔç†m«6ìYN~V迆{ˆUAÕ±ŒT—‰4ÐÀÎ)×Q¼ÑXëYZ¬|² ƒÚ¨_(<ƒT5)^=*õ»”ðô³ýê†'¡õ­ \.ƒ$̹“¼ô=Í_Œ•ÐäŒÉ†W:ª_’Oó¬ \×=;°àäšë yÂ8œáÂãÒ·Ri&µH‰ä ×F²I4 vâ’vkxFå,³Ò"µ´c+¹HäÒÈn½"ÆÓ.ÀXçÐÓ’7˜ª ÁœcŸJp‰¥ù9†? ȺÓ.mIܬۭ:kSƒó @ÅfÜØMnÇ'rç9{J2E ¿>ä?ÃéïV´Ùd†T6cáô5oOgŠ]ÙF=*äÒÇ zú(îjÍÄ‘À¿.÷TzÔóH±¯lž˜ª²#Ýüg“U$ Wv>cÚ«ÈØÃT0ÀÁÔ•Ë“À½é#‰·ƒŒ¹éŽÔ‘DÁÁÆXúv«˜Ñ|Æ+Ï®*Y˜N}3Š‘ÛËQ¼óõª×p‹…YaaÔJ«q™Uã ã­V¸ŒL¡Å-­¹F!çb–Þ,Ì~”°E´îcÒŸ<­yËëRM#"gŒ·ARL쉞çôª2I+©Üå¿Ùª3ÈÀå‹{UGw*Nw{Síg+´“„n§ÛË´ ýÓÔTKÂç£v­»Iã¨É«X*Ävê*ÏF#µ*’:Ž´àqÚ”v¥$zqAaž”ê8¦dsÆ*2G`a¼¨êG ;ÁÁȽ=¢òNýÃ*sZ°äMôCƒ×îúÔ²þúÜ2!*{ŽÞµ$ƒÌ„:¦GsTeµ†æà4¥ˆîtÿõÕ6†)& áº}Ú¬ðÆòî}ǪÒãÉ m ®ÑÇ=êôg6áB¬qÏz¶‡÷!qò@¶› ®FFj´ •+¸df¢LUR1‚E ycce!ü¼}áP)–+…FSº3ÇEB­,sªºœ§OqS˜üÐÁY¹äƒÐ¸#i·ÍÓ$•ka”1Æ3ÏJd°Íå«Eü'*Ùô¤¸ŽtTh³•û¤šK…•U.£¡Íy–53)8~1Šq¸óãS0;‰ÃñNó„Ȧ@yëPÉÁ#Õ< é£a@{(ÙD»!Œz Ó/ £ÑEW»”Äãœu zÖ~£pÐʹ u ~Ròo*@ ÇÊqYáÝ™8ííX3È[‘Éýk)äw$95mXL1É÷«Q¨¸SíIõ« ÊQp“X¶óÝEª"r|Ü9jŒÓE©Æœ•ó6•‚*¥Œó.¤ˆA#~ÖF+wj#»å€'… Žõ®-a¥bÍ´·Ê ýêÓKxÓy$í-ò®j…U*ê˜ÇzŸj«pˆŽ®‰µTcƒÇ5 ʨÁ•på€ÌqÞ•A“ Ç­*‚Ç-À¦†*ó6ì#¨$áúS-ç1I"“ˆ¤ÆG÷y¦A+#:1ýÛ”6ó"ºäoùIíÅ\vWWß~•Ò¬ ¹ˆàš¤QqîJ8ªÂtŽö7#%¦*%™VíÚj=gP–¢xÜÌqšv³¨I–ðä{Su[çƒa‹¿Oj¯i¬M;G褓€ØèjŒz”—2"È ·bj´WípÊ® 7­Zº öF”/'pÁsìjÜû~ÂbI1·$†à±úÕ©À6¥#|mç­s…¦„ÿ¬ ü&±<Éc'0ükÍž6áÏ·5»jÍ%Œ2HåݾökZ ÏkŽÙfûÀ÷­ˆAx"‘-ÔU‰v±(ÜŒúc4ÅKfÏ>¸Å=Èo”Ÿ¥F¶ ò‹´ƒ÷·g¥D¶»¾â…*ybsÅ0[>UÆ:œÕmNäÁl)R믧aQê7U¼p oÜËPêW\)Àq÷ˆ¬Ë4–[„ Ibk>ÔI$ʱ’Xš£f%’P'5®Ö±ï28 !ãmh EfÜpXôZ¾-T¶öÆãÚ ‘ÙNŠqµEDìPáHSœmÆ%xÛE6)Ÿka®y‘–‘°y>¹¤,Ø=Oz´29ÉÈÔÊ<ëR®AàóÒ”œ®ŠÄñȧn'!‘Iô4ìƒÊ ’(jaqü1ûæ–äþéW¹;ØŠ/›ý`±>cJmá>LkÜíK»ãëÞ£·1™o×½$EYœ=j;Æ%#a€¢¢½bçlX+Û­ExX¶ÄÆ29«Qû"™æŒmažâµâHœ²:ñ…sÜVŽ"ka!8Áœê#™ÊÊÏ_JÈxÄs±Yõþígòæ8p~n¾”šŠ5;ؔ4‘·¦5g‰Ug±Ö“PGž4¹uã@ió[̯<ñ£»ª˜±šÞEi5n nªÙÏo0weöÍt–AŽWhã"º)•¤å\Ç€3Ôtæ·&RêFѳHÏjÎkKx\,aŽ[‘“ß—%¬0º¹q†éTÖ(ÛrûÝ>3åʩмqNü©•8tȧBÛ!à™¨'wY‚j¼®ÂN¹Ô.äIש©Ð¬Qy»rOCV£"<ÆRÌxÕaŠì 'ŠÊº†In Áô¬Éãi&'oÒ³g¤˜ñÁ«6°‹D’^ mëéV-£Ë$ƒŠõô«Ñ‹d‘øÉjº»0É=sP¬Žy'8¨ÒF8$ž)ÒIÓs.~´ç“XŠs¿sŠm´$Íæ>}G½6&]íÂg#Þ™Ÿ4»ð½ªâ±-…8>æ¬sÁäš°óƒÍ<Ã*T× œSʳ.î:àçâ¸?CHÏZa†›ŒÓYÂñž~´…ñÆy¤/Ž*31ÏZgšsëíLóx¥GÞqÀ÷¡_yÅ(}Ý:ÓŒbN[‚;Ò”òO"”§™Éê*¼×Ò´îé+€871MšöV•ŠÊáq·⣖öV‘ñ!ÚxÀ¨u+C¹]T’褌{T7¶ådR å‘Iüªµõ©e;€&§±¶+XgëRÚ[“qÆqV--ȈdqWbfP…zwf2ê#ÛÓ5f2ëåñN«/à«/û¤Õ¹-˜2°u*ÝTš²ð°pCcÚ²oÛìúÌRc)•pÖ³nˆ‡Vú®C}k:vêÈOÝ8éZòs)qÈ÷«BFß9—ªãZ¾ÍºFsÐŒlNLª÷ÆG5Ž 0PÀ㚢…þæBûzÔd$–9€j9W'#‘š°²)$‚;U©d”\|‡cÒ´¤–S€2µ‹ÀÏ}Â:íù7j± fb»·õªçÊL±*\>A¨q ñ¿=*µávãŒõÈëU.H!‹×#òª³àƒØõéXWIµú`zæ²§]­YW[•² üë[÷å‹XÎÙÏÍ>¾•³áëíêÖ3ž¿2ëéZÚøž6´•¾eå3Þµnå`Fxâ®]¨ ÙOj¹rÓ‘Ó¡ª§r•`ùõöªY*ÊÛ²VÉÙ¡YU&0ýÎ?•:"†U%7É"œ› ŠÌ¹Í&¡yjT:“·Æ1“Rj·v¯°ÃœcŠ5 ›”Æ~^àzÔ0܉¡’EƒíTãœ\î4Ó0=ri¦á{“S#A*ò§±©^V¤ÀaÊš~C \‚9¥È4„âžÔ„æ—°ç¸Ç~Ô¸ãÒ*,ÓÁ"ˆK Dß«~Ú4XæÆ}«°²M–у×Ò[ XP Tã#­ORÑEQEQEQEQEQHÝ)¯÷µ#}Ú„O´àš¬.¶’¹Î*>8'½$’qF;â‰&YºúŠGm$ž+>]_ì壉 ûžÆ²Û[6åÒÜ¿ÂOj¢ú£E•w}{VV£¨eŒpŒ̇޲oï·6ØÆ åe_ßvÇÁ<³{ÔÐ܆Äw0+æ¡ÆÉŽ}Ö©c•dÄrœ8èGz•£žG­#G“•ŸîÓ> žÔÀåj`Ü2[¥YÐÓíÊHÀC÷«KA¶3;ò§z½£Cç»1ï]¥têP; Þ=¨¥¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠG!Tç½5ÈU9ô¤s…9ïTä@.ô5›4!@J¡j§$jmÀ5VšVÛ´sÅT¹™¶mR#«O!+´k5ao9Œ§‘Ó˜"o0™=ª‡–w’ÇžÕœ-ä’v'’rj¥¼³ÍµA'8Ȫ jóÎ@óÔVÔIv7–­ÜA½Ã`í=Å]¸ƒ|›€ÀÆ2*8•¼Ä¨2~íG6LNØÇBi‘3Å! ©‰g …{Ò¶æàƒÜS›qq¸S‚äõåR¶3K±³œ‚:g½(‰=0i|¶'ž†œ±q’>”ôŒƒ×§"~•JëQXgò“–n¥Ü»¶ç&Ê›öŽXñW£ØãŽ ©R0ML¨֞р܀(x€ëCF&Î:~4݃Óñ¦ì¨&AœâªÌ¿7J­*üÕ™~İ@ªw KÚ©Ý·#…±º¹Xó€ÍÍ?Mµû]ÚGØžhÓm¾Óp«Û<×^mcÄ\°1`)vâ0ªŠ3ò8®´F*‚@P­MþsO§ÓRDwdR /QH¬­¤:ŠE`ÙÚrGQN$Ž”½;ýHã ˜“Î1Läòx¤×*3L˜‚)“08Y¢Yß 3UÖ1+a†EA嬂3W4h]€#±áøU.Y¶ýÑZzÍË•È_á8«PFÍyýÓŠ¹l`Ür ?/½";^§!l°#ŽE9 rãGTr¶¬:5 ÙÆ;Uk¢|¬vÍc¢–éMÎ å½*%.àr}*ÕœÑÅ!2Œ­‘’Ïϧµ>Ý•X´‡ØUÝöÓºUCRÛÖ§; Áõ©ØÛ†àSÁëÀ¦´ã=)¥ÃΠ7R»ŒŒV`O¤ É—顊äŠ@ÅzRÙO%½ÓÊQ—Tw«úuëZɸÊGÝ«v7OÆáéW¿´îf@ORy5z]bâEÄpˆÇ÷‰ÉüªÛjS8ù# ïšæ¸äùå±Ï'¡ªíuu¸oÈ=J…æŸ<ÊÇ=³VE„W°‡—g˜À¯ZÕÐ^[(#±'©­o Ì`¸Vb;u©,­c•ù¹>´YZGlì#hõ¤¶¶H Ø›}êõ]«]¨¢Š(¢Š(¢Š*›·VêO›Š‚fçUw#¾¦*“¸s}1P1ç<Ön«0ÀNŽk/T—$(jÎÔ%É :Õ(edV‘ú ý{UHd*Û }j¬R íÐ>´¶ïç!fìx¦DÞbäö4ØŸÍ]Þôò„¿§9©6œþAØ…{ÕV8äUl"µ,¤À íÅ]¶;Ò¯Û6øÁ«*ÛT©žØ«ûP¡É=±VÊ¡SÉíU/D’eÛœqНtA¼œ‘Æ*µÊ¼ƒuSµ“˸Úxj« ]¬¹SÅV·À˜)­Òñ„Ú™fôëŠØß…V0Y½=+\² ÉÇJ® G;®{U\ämÍVÁG9ã5ª±Áä­tÆ96t½S»-ìÎk,ªFy¨£9ïÍCng&®YEm<`Êq"ðE\A”7V®F°´_7 ½hhšñ¹Tü´Ý¤ð;t¤*@õô©CÇ# ÍDÊAæšÀ‚sÚîlô4€sMQ“JÓlp?QFpy¥/†ù‡*hv¼™ÍK' ÔÍ‘VP|Þ˜õ« ‚zãëV¯92Æ=¾*uMÜ‘ô©Us÷J#’Þ¼ç·ðÕ”{xp^\9'†§W†>²|þ‚®ÚÈò2‚[Ôš½c$“Ìì@éV­\Éón$v«˜«ýªÐ¢Š(¢Š(¢ƒÐÓY°´À¬ËÉJ…\–÷¬[éH`ª¹$ÖuÔ˜mª2M"çÊËpG½Fe¸4ÀH‘ƒUå‰]·> Çz­4aÛsò}ê cÙ~¾õ•¨H»|¤ãææ³ïö/sY÷Î{¹§él£ÍßÊY2®ýÜŠK¾î•×®d*œ(5—± Ò™-Ñ2m)'¶xa GÊÔIEb84MG$pj]-Š»§ðžiö$† ô5%9*G§°0â®í §ªîSŽÕªÏÆáéP¸f;r*& ÜfªÉk.àêŒH=DÖò¸&HíP½¼…·ÈíZ¶‹½98lr1ÍiZG¾2s†hÛ¡d$ðG­-ÇÌ«ßo|QtC¢ƒŽ§—]SÐu¬ûÈä©þèäÖ¨ÜF“2ymÐsš£sO´«t¬9 æ¡T\èÇœúûU2‰’*~hBTäS ³N´ÅŽqSG+äœçØÒ¡qÔð=jXÉàþuy|¼¤S·úš›wõ"‘»Q»žÕeœH o‚;{U¦e‘Lm‚OjŽ Q'¥61Kµ3“H‚8—jç=êÂ1q‘Ž;ç¥J¤·#{ÓÔ“ÈÇçNt9Ž™È¥hÎsŸÊ•“'­#Fv‚–Œ‡ƒ†FÀ`Ç"™æÈß!$c½3Ε¾MÄ o›#¹+A nÅ?$ÒùCi|W­/•…ÝÈ",*îäYú¹•ˆ2 wj­ÊÊóYѯ͵‡Ö£aÜÕ| ôúÕ™Ò8ãVh/òàž)ìáW•1'*AÚÖ¢ÞwqÍ1f úÕ˜‰c—={{SÔœæ¦C“ÏÖ™xæQÀô'˜!pÌ7 W—É!›æàSâ¼´4g¹©þÛ‘û“ùÔË{‘û³ùÖ“J*<„dd…ÍYr;¨¦@˽KïíŠcŽK)`}E2H÷&å$QT£‰Ãsœ÷ªˆ¬“’sުIJ$’~µ©h ¿Z–go8¥lp~cZÑH: â¶ín±äŠÓ‚Uo—¨©dqƒÔz´HÏz˜0O~”ìt¥¥Îh'³Mc€xÍãÞ«¸Ê–ÜO=*­À,›‹gÚ •r¹ÍWfPrTØš¡# líúÕF)ž@ôªó±òËBU®X˜ç,xUyØù,sÉé\òeÿia©&Ork2Z_rkQBEçxãräã|$o8ÅJ¨$B¹ûÔåPÈW¦iÁCÆTñž”›P¡‹ i0¥ ¤Â”ب ýæsšª¼°=jª}áœõ©o8ã"¤¹6áÜT—# ¸wL; €N~µX1äÕeväÕ»K¬NAàTðNÊpOZ±ÃgkséWò¬28úU¢Á‡¡ö«%†)`HãÞ‘c-œR'$SÄ XZ\ÀE9õ§‰Â£ñ¦pà“Ú£f<ƒšaaÏ9Í5À+ÀÅFà7AŠc¨#ŠÏºµ!šU<ÔL„óUäˆýìÕICH¸ I$f’HÔ¨òÆ}j9c F3ëJ°20VȨÄyj§æëVýУ'¦Ú‘™¶¨ÜÞ•"!vÂÄÕ™ôÏ0 fýóãžÅh¶–¯$Êp~•vM4IBHö¨Î•%¶Ö.wöª²érÛ•bA_ZôÙ-Ø1 ­9ãÜÛúÓ]K6sK"–lúÕËUr¸Njݪ¾Ý¨ö5jÜ601Ó½X6©&A>GCš³öTrw­ìsRý™_$€{U˜­78«–öñ»š³¢ñš¶±"•@÷­(¡Ž!„P*âD‘”S¸§Ó¨¢ŠŽI>C·éPÏ.Ô!zÔr¸UãœÕi™Ý0 ñÔ £q$’G€:@ªÓ;:`•LHBóÔzVnò=ES.T õ¨¤# †çÒ£˜ª7tíQÊFg¥gJbŽbѓި9U”1ïYï±$%&¦µÜüžzã4ø77'œÔÐnn´É®ŠLG@i’NË&MFó•—§^ñš9ØFvŒç?ZŽbÈä)ÇzŠåÞ9SÇZ¹lË$bfP\pƧ‰ƒ |eº5X„«  ž†¦ÑÀFëߥ‘‘Ô&}ªY]\Ç#Ò«5œE~I~n¸Å@Öñ•Ê?>˜¨ ¼E~Gäö5 Û·œã¸íQ¬-æƒZdp°˜^µ¤à‡È8'½\qóg8ÈëWaŽ&”û¹!FrNÜ}E'$íäÇJy?x b›"„žGÙhÎy¦„$8˜¦ìàøSBqŸåHZ@Øl@lF‘zßõ4¦UèS?ZF•zÏÖªù@Lî¤üÕ£ó0NÑÁì*-Ø$¯CÚ¢20ñócÖ›’[)2K`Õ«h<§Þ¬Ì\ƒýÚж‡É_19aÉô«Öцõ;²:úTòÉ,sÛ¼hX©#"­4ò$‘:.H«&VG”gjûj³[:Èá\vnçڮͨY\[H®Á[u»Ÿj±-å´°¸fñÐÖj€Äg¦r+ v–õ«1@ÎzÓšEŽ «A=)Ï*ª€ð§4W? ½lE+Ôõ¡j2€¯qÒ®@2€Ž¾•~!…æµ­”µ~òŒÔ•=IL’O(dô¨§˜B»ˆ¦K ˆd÷ªÍw¸§©K¨“Â`zÕg¼Ï Q<œç?…Wk®åª6˜õ&•¦]™Ï^)ávpqškJ6ýj©ù³’1ïUÏœ·õ]†ãÉâ£x•ƒ88ëPÈ‹´í8#½G"‚§o¥fˆžI†sŒóTnòyDDÏ&â¯)ô䊴¤!úU•!Ò³&®Ê÷ž©0-qƒÜÕ®€#«V´öqο7ËŽ3øV„–©"ÇýkB[ttËqU­¢6Öçv~nXUxÐÅÏ~MA~L@~&¤Žu‘”ïšzJ®Ø*1Þ¤I6 Œw¨/&òðÑ`ZŠæ@§)Ðw¨n¥w&1Ú™¡#0Y¶ªö>ŸZHî˜+œǵ6Æw !ÀZ&æ>©ñÄòýÅϽ ?Ê‹’i.-ÚÚ*¤Èß|Óî"B6©ÝÞ¤¸‹ÉˆmS»½Go,¨>U*§­2Ùå@v‚3M¶yUHÁÔβqƒžMHûÙIÏ8õ©yRA絟'˜XƒÏ=*ƒ—$瓞•'˜XçÖ­[O !_} OŽ ÓÞ¬[Èà€ý+R85¥ ŒŽ5¥ƒVU¶ôãÖ­ÇÇÝ$}* tâ­Á!ã#"´m%qò°ãÖ­Àì8#"¦‘‚¯'éV%”Gâp{T²8EëƒYW×&ßzÂÔn˜¤þµ—{ppFj» Âò{Ök]mèj‘¹ÛÐóS¬¤“†=ªa)Ú9äþ•/˜p=MH=î*¤°´D†¡ªS@bl7àjþ—#ˆLnr¹UË)Ê(yð ]±w0l~nj՛‰T(ùNå³Ò§¸uHrsÐTóº€SÍB’$ªTíPn d{T9ŒgÜT˜1™Ž0ißêÆÆ98ìißêÁRz{Õ‰Z·Wf9bjO!m•ËeÉU‰k ³š©\\++l\b¨ÎêÕŒ§;)%EhÎYä8ûøj–Êà¬g¦3ƒO³œªqŒâ´œ‰¶ä| zU©$žƒÚ­;‰1ž•Cd@úT{¸ÉéLÚÆx¦ˆö>v?JM dàŸÂ“s‚ÞØ¨Œ0¿Ì—ê=j'†&ù”õÏJ‰âŽåGz’…0&¼jHKÀAŸSRD¨£ £>¦¦Ôç‚}ªÂeNxü*tN•IÖÜ~˜« ÀãçÉõéSá³ïW ¸Tkpݪý½Ú¤Xs†íV¢BaºÔ7(Øù²G¥S¿»VÁß’:b«Ý\)ÇÍÈô¬{Ç2¶ÀO\ÖÔ†VÀ<æ²n\ÈÁA¥† { HÓjç©ô¤Ž=«žõ)?½Æêv6˜u§`§QÖ„@jz·¡§+zŸÌ'"ž$jxsQÉz‹ò²e#ݨùY~QC\¯ÝaÅVÔJÍj…ÝóІô«B,ãw"«_ð O5–ƒ1×5I>ðúÕ¯Öº,moËð­aò€Oµlš­,Í.*{T ßœ„Ä|ÌààÔw.»PÛ߯ZŽf\/ÍÒ™;(Ûó~ÈâtµyÈ+ÔzR,l°»‘ƒH’ÚG½k398ÉÍTêj‚œ¸=ktüÑ"1ꃭi¿(ªOðµ®ãpPOjT]„dsÓ¥®ÂòhŒm9#šÏÕYžp?„•Vü“.3À*Ž¢Ìe ’Ý5[Í$SÒ›jqãŒQc¸yö­Àà©ÁïVKg‘Ç­[8<ƒõ¦\Í˸CDÒFP¡“v9\v¤ã(Sx8åMf—U$g𪅽ê‘~ UÝ3˜Y3‡ß–Í_µ‡àðO&¯ÚÈvç­h‘óT£ zÅN0§ žØö"gÐ úSÐûc4ó¸ëÀ÷§˜ÚA¸žôæFq»µ7atþtÝ„tçëMÙ­3cF@ÏPy¤òÜœ}:Òyl éëNˆáòvþ&¥‡Ôí>ÄÔ‘tì}ª'™°P½ÍE$¡€ To.Ç Dsˆn&Ü)M½èiA\ æ«Is’R,j¬×²«ÍVyÇ!H4Õó/2Q×<žÔÉ£P_ø»škEËŽµZkÒOî†ÕõõªÒ\~^1Þ«Kt„t¦Çq4±›p÷íBÍ#œ1ȤIäí<Ôè„flqO@B’ǃR  dœU”;áÂÄLèðx©³º2äâ²L„±<¤X“Ïj dbyÏ~ÍC@KpêÕºîŒîû½êÜ|_7ݧ¥´`ÉÚ‘b~Wµ bPGnjÚüû‰ä1Vo$Ÿº*Ò Ýz ™IÉ㯭J[äuéš~ãŽG^•…ß”žjä‰ýôÚçø…XeøeÚǸïV8›—÷˦XPB„’F[ŠK‚"A’IÒ\)Kœõ5GÎtn Uógš§ç2šÛ°”=¸p2_­kYÈ íÉj×µp`Èz¦‘ÑTäî½:wEàòëK+§~€b¨¡€ÉåÎüãŽ2>•U EÊLÇ=°?J®¦-Ûdc¸t¡b·V ¤@Ž ÙAºcÓU†pcÔšheÉPsîi)íÞ«Ic#rŒ›Ofâ kb܆'¡ªòZVž†­Z[%žæ•„“Á«0Ä–û‰!å#‚;Uˆ!K`ÄÎ{Š™O“…^[Þž§*rp«×Þ¤RJžx^Ô‚LŒLÒ$sø Bùþ´Ç@Så9Óµ1ÐÊò;Šc +•äzU9íÛʯaP49êÀ}j‡=Hëyá†2ЏníëREc÷~•~Ò3³°äÖ…¬e,95mz·­ZN• p©W¯ò©_åS*1ZŽ7##š™Qˆ©âGÏ «–ðÙ=*ÄQrE6æ(`Ôz…ß»i——Zâ¹›ù·JÍ» ñƒ\µìÅåbOÎÞÍ™ ÍSÆj¯Zª¹'5¥|•î8éV×îç}s´gž)æ<ã'm8¦qž)Å3ŒñP\Z,§pqÅG,!›!ª)­Ã¶CS#Ó¤‘¿vÀçÖ’;G‘¶¡´Ä³w8SSGiojÿ¿pX©Þ(°b; • ŽLŽ ô:Ì$Œmhè*C.õ(è*S.ôàaE$-¸šjƤäMXÔ¶H²¡` ŒÜSÝrQÒžé‘òŽ•³ÆIíÒ£RËùÔjY[bkÔµXù™°rjÄ—+l3rji.ÛÔŸZX¦[–$žü©c\nfì)QÄıô«¨ªpPª:w5¡§rª¨éÜÕÔUÏPEcÁja¹Ú¯ZÈ‚ÜÇp/ÞïYAåÏŒu«BùMŸŸ¥KsRb(ÐÙÊÔåGƒµ+”U#­ ¹:la›˜÷¤PHáqéMx¢‘ÆüuäÓJDÁäÓLhò„w§$¡fCµHçÞ¤Xc\²œ ûÓÖ4@H ÍR¼Ô°Ž zâ«]ß³1D/­Vº½båz˜>%‘Õ?€§‡Äƒ[­HçïÇSK÷Ùœ’8êi[çgbH÷4¹™‰ ö§†;yÁ#Ö€NÞpHõ¥ÎWœzÓ0AŸP)½BŒŸAI÷~`¢švŒŸSMrçSLbôæ©_>WûÇ5Vá°ª·-· ëÍSÃP “UÆI5§b¥-xÃ3š½n6ۀÓWàmÔ0æ§RN1OÉ=*@IéNôõw4å75"'œjš$Bz€jXÕI늹ol>€÷§ihÜÇ:š½ .æ8½YuR6#.ðAÁ5-Ë[Ü[=¼ObÝiÓ˜n!’fBäz«D]%rN$Ï*OðûV5‘žÂø‰>WVùÓ<‘íYVk‚’žW–ê)“^E$FHÉÀ$}jíÖ©Ä^d\r;æ®\_$‘N••$Í/Þ‹,­!%¸—$!Ëp &r0)«ÓŠA’0)¢&'==.ÆëÓëK±½1RR6näñô§\zšp@AäñYRFCAàðj›© Aª+dõàÓ­âv”lÓ¢R\b1”b´® †tP2G&®ORÛÀrjíÌQË·oÞš†[æ#ކ¡ŽÜ–äÿúª(í¹æ´Xc=3W 1ïVÁ R$áÛiüM (s´þt© ”÷§†]Ì#ù‚õ➬…›hܵ8ÜqÎ)K9ùOÒîNÞǵ(v#oAšsª£À ;SäEB@ã#šWE@ñªW1MŠHÉèj”’6ÒŠHæ«K#Ú¤ŠÏÚÄ“œöª¸<œçµTÁÉÁÉ5°P }ëH UÁ÷­"¡W±¦Ë(@wcÒ’Y@8ãÒ™,AÍR’õËü«´zÕG¹rÜ UšåÚL(ÅMo9”0lZ–K‚7-K ¥ÔúŠ•†H=ªF>ÆžÃ'#¥A,BQÏQÜŠÓxÁíëP<{Í1-9sÅ5`ÁË)©nÉ«8ê:À©ˆ~U7þ”.àšUàõ4«Á©ÑÓø¿Õb7LsøÔèéŽM2Gq4©âkxåÌܾƒµMD’ƒ¿+üªì$ˆ¢+Îî*Æ¡¾òÕb·;H$°'ûÔ’êØEØs–ÏqT'[¤á¤VòqÒ°¥µš/¼@汤´–&ÎìzÔFI·Epù ©>´é æD™ó’»I§ÉçVÉ%0Þõä7$4Ф2@<ÒF ©÷Î) ¯Z3N4èŸ ðIg9Æ)èrqÇJ†æäÇ¿}ëQË9P1÷G4ûqޤ¡çÈ­¼œÕo5ƒg?Z¨'pù&µL(èXFO½^h”© ƒÀ­‰H,1ÐQb%,ÃæíMHÄh[Ò$b4ÝŽiñ1öøÓâBí€?th\àÆ–ââÞÐ}àÎ})ÒɸûÛš–Yb·ÎZ³./fžLçµP–æI9ÇaTeºy=*æ™o,ɸ¶Üs“W,`y±|cÖ­ÙDò&âØÀ=jä`F˜ä¶z ”| (äú ˜ ª š‘b¶àîô&¤ŠÍŒ|Þ†Ÿ\ãúS–_õ™Ô¢Lù¹ö'”~óН$î]Šê {Ô \>ÐÛ@ãš…£IÛj¶;Té‘Á.]‰ÏOJ–-68ßæ|柞ˆ~fÎj=ù­@_rc5mËŠ©{ â«Üç#НqžLŸoÊ«š®séš±h¬ÇE­Mn¤üýó©íÔýþ•i‰ãŠ•ŽzŠ”œõ£øzšCÒÒœfò1HzRHé¾céC2Ç‚y43„Ç­V3ÌNAÚ¹íP™Ÿ¨8•úôfÚ_0…‘GN5<2ù©«ɼá€æ¬Ç&ç)»Jîó«vþdŽR …zœñV!ó$%a‡qÏJkÝ\ŽˆŽ»Ži’]Ü!+±c#ƒ“šl—3#Ú¨GœÔ"I^B÷ »ÐBdf;¤mǶ*åŽç94IråppSd±ÉSe™ŠàS’óœ~µU§çŠª×àS¢œ8!‡ÍÛøÜ7|ݪH¤Ü0Ãæ§Ä®3ŸÒŸ°lŽjHÕƒdsU®Ã[#ŽÕ ùó9¨.óy¦Ál%?3;ÒE·$â›AŽI­ À*¤@á{Õ¢ãhXǽ\.6…QÀïSæ¯Ì8.|Àµ >f* ûÕL‚©—Wb$ò¡xäÔwWB%ò£$VIÉå‰$œÖy ÍÔ’k7k±ç$“ZZ^š÷‰eR‘F{Ö–¦³7™:•NÀ÷­?Nfo2eÂöÍiÊ©ò£ .xëV.ÆþZm/nµj`±¶ÄÚ8¦‚É— Ú£RÈK½LBTîïOD&Cű–úÔÑ¡i‹v2ÇÞ¥E&BNrM'˜vïn¼Q˜‚ÝÎFj3!ØI9<Õ}:Èù¦i `r?*M:Ì»´Ï«šK+RY¥|àUÍäáaœÕÏ0¶Ä€G­Zß«9ª*0zk8 £Òƒ³wgªÐÛ@ÈÉ4­·šbÅl¬y>‡¥1U3œÓT…æ¤'<`}<œözS‰¦¹"˜ÄÓXœSG=ù¤÷æsÞŸ¹|Í´úSÉP984âÊ'•¢IqÏ^A Æ¯ÇCAŒ?ÑbR:Qh1“Òœ-G÷ú•e&!=ja!ÆçS žõFâMÏ×5ZGËUYdËõ¨ÑŽþ)ªNi‘±È­;O˜mj·Ï Ó­^ƒ$sVŠíRüä*Îͪ[œÔå ®áÅfÃg=ÌÄí$±ª¶ös]Iò©%T†Ê[‰2rkbßM‚ÕD—å¾µ·ma‚‰n"ËcÖµ ³ŠÕCË&’K¶¹›ÊˆlŒqÅC=ì—“yj<¸ÇÙ.ZâMŠ6 àb©¸ç${Õs &㜰ïP˜•2~ñ§B„F$~¹ã4±!Tóe³Å,kµ77Rx§&îÆîÞÔ®%ÚÇ~3ÛÖ†WÚÇv3MÎшԻÇJfÞ‹–ìxéH!PzRË'•–HéÏ=*ÔÓy0ùŽH5<“GÆ1Ȫæe^ZBŠF>µTNî.TUüà¼–Ú DÜ…¸¨ÛŠFk–šFlçÐUI%gbsÏj¨ò´Ž{œñ[g­_ažµ FzÒH(Ç‘cMÎp)®áGÌx¦»„1À¨MÜ~àzÔfeïÒ£ó—¿J‘pÊÃÒœ¤r)UäŠl±£Œ×¶)¬ªý:ÒHŠÕXXÙžÕ·ù¾a‘íP‹b,¹ÕtL_j•á'µZóK•Èáx­ù¦F_»Àn)Ô""¯Ò®C;º„E×n)ÀUÀúRê?g6bÞv ]² ujøÛg iÛs;å@ê)÷ÂÝì– ŽæfÈÇQXs´Vì#ƒv=럘Çl‹8÷¬i]!aYÀõ¨áŒ–,Ç9¨ÑIÉ=é‘!ê{š½ùB繫ŽU˜ÇU;–ó'|}Ô< †cºFÇÝ^•^fß#c€¤âªä—¨sÍVf­ 6ò8*Í´l­¿:UÛXÙ[~*Ò˜ƒ’îÿºJœ4a‰c½½NNæô.L¤@§dÌ@(îe<©Uv #SVv #SSª„\þu °ÝÞ qݸÇzm´Éyv!‚˜$i%Úw8ü*û²Ä6Æv0ßSWE‹äˆ.ãÁ5icR±ãqàÓ¢˜•xùŽiÐ “–( É¥ˆ•ÊŒeyª.Ûˆ?tqš¢ììvç&©»`9½a¹yd=rOœÀ»qœšË`Ò?z½2ùx‹øˆ«.Ü/sÖ®L [ìOZŠÊ×so~éM·„“–éL¶€îÜÕ§’3VÎjá¦ç<þ4ÜúÒf³ïXµÁŒUk“™ª—$™H=*¸ëP޵«–²n”ä)\/½On¥rÇ¡àU›ddCWTN*qÀÎ*a÷zQ‘¿n2 9Í9H ÉÊŠ\.~í.=)e”ÛF&¯4öÁô 1õ÷v†0ÈpMUBû|Æù¥~75D¥Â™[™$à1éQ.ìne~I™æòÉÈô¢-?p-#ó׊lV¾y‘Nš·`ªrqM¸‰a!Täš&a;G4äR0E")$mЊÙ*-€“#¿Z£þ½EFð©sïÖ—ìF¾c6Åô§y«½¸Ý¥ûz·"²ì@º¾&sò/ÌIþUBÏl·›æåW“þFЉ®KÉ÷RµÔ=ÚÕv¦y`9ÅjA · €»S<v­8ã{¡¸^ßJrG c…BçÝéÏåĆ8T/mÝýéHHÔ¬jbhX•œ}Õµ K¼…Lí•1rtö¦,p½½*ÿŽjϹ«>ãšR29¤qAUy­’Aó7f ‘+ŽOÍØŠŠH•Ç=i©e’Æ‘`AÎI4‹œš•Û /aíÒžÇ#iéNc§Ѹt4Áx4ÞGzŽgعÏ4‡å“McµrMG Ì®Û"Mþ¬OJt$’b5Ϲ4èd’G®áïW5O!,xùó­AaM-&Ø,UÍ@EŽ_Ï*+2 ƒƒôC“YqO•EnŠk:÷ˆ÷tZØI!*î+Gr}ìö­-ÉÔžªÜÍ1•TcçJd=;URL²?AR±7·AN+±2O'¥<‰’y5ùºsQcw®j 7tëMºÌR€îaèhw  äzI×x*Hô¨a° Û˜íP­¾9"¢KlrFk^Ö{ó·Ú¶,-„qY¶’8­KHqùŒpOJH9õïB4Ûr:ðI¥\I& â¢xbikŒ“åZâŒÊòÌ@x¢xÐÈÒKÊŽ*A"´"8—ld´æ”4F(—‘OiG±NöÜÊÖû¿v©ÜB_O#¥U¹„¸<Ž•-‘·RÌ7è*Å­Ÿ–£ 1n‚¦¶µy-Z®ßf¶Ü=÷­¹d[ Ê9Æ{Ö¤’ kl®üj‰Ê©ÜA$äûV+3I`ÅŽOµf Ç’sU§˜I8UªÓÊ\uàUy¤$uàV<¬eãÖ¨9ÜÜV{þñÎ*ÔnaQ8=êdm€(ê*Äm°jcˆÆây¥IÂ.ây©Oʹ5^8ÚY 7ÔÔJ¬ï“Ò¡Df}Ç¥LÒR±’>ö)åö‚cÞ¤fÀ!MÎc•C}ÖàÓ¢¤€vÒòTü¬yô§¦ÚC¸` çzÆÚ5 ¨À=qYº´ÿh»‘”–DùWÚ³uéÄפ!ÊD¡W™­KæÝ§+…Z¯jx õ5B©mÈ9­³m·Œ3üÛzv«í¸["“‚V´H…TžJÕ‹tD‹æ'ò⟠"Å–'ò©!EHòIÍV¸œnòªó˓ҫÏ('Ö«‰¤,@µ0xÒLà £Š¯$¦C—8^Ã5Fâå¦o˜áGNj¬Ó™žéPÍ8pT(<š­,»†î÷ªòHp½*†‡\€DÀaL` µWòc·¤êÇîŠg–"BÇï•–±!c÷Jm¼Lç|™µ4KƒÏj±l Ç·< ÎãN”™~Eúf¥™ŒäF½»Óå&b{w¦[[%ª¹’Bd'¨¨¶-‘üé˜OØ!FÞcæBx©PüÊzÔûö§Âx§ O¿j’"7ÛúÓdU2.åÏzeÀ_4ïM~ðdf‘å=ªŽ˜“œá^ÔÆœô\ÕJ½1õ¨ZAÛ'Ö¢i¹õªÒÌ7°Ø<úT.ãccïT2?îÛz³¡så²Éc“ïUQÉ]»¹ÍS‰˜¦ÝÜæ´`Äp¨nHêjÜAR0œUذ#¹4Ó K6[…íšk)‘ùái¥LíR7÷ŒRà•zÓ¸Q´RlÚ3Ž}hÛŽ´cÖû B)¤SwmíÍ78¤Î X6î@ €g½Yh üjsxÛzcÁ¼8©?˜(8©Uà£Ò­G¤náwcÔUÏ&xài#MøêH«$Ž-꛽N*µÌ¢L®I-×Bé̤orÇÐvª— ÒºLûÕ0<8¨ºp}*,òhDFB„dšTPWcwæ•TÛREjIÚŠ}{Ô°Ún?6{žµ$6Ù9 (þu3áDoÊ¥‘¼±±ò©\ìTÔNF0 Çz¯!€O½@äȬÛÅ^»Aç·SU®À8Uk…9éZÚlkiiæHpÌ2k_KXí-ŒÒpHëZšz-µ¿šÜ*£ÈF•É OšÏ’Mò¼œÇ5MäÝ#;t'Š­%Ú $ ·LÔ/:ªœrjTuª€Iq7v?Ê 哹þ•\o–_QZ‘F"Œ(ÇZ·mPÉ«ˆ›ïV•d*®7zš¶‰)\*ã>µmCì®=sR(š1ò¡cì3SFÒÃ÷#%¾™©#f¢’~”×I˜n•žƒÉÄÎwÊ­ì1M—{Ò)·¹Q÷&£ŽRƒîžy¨ÖMƒ¡¤ÌŒx_˜šFg‘²î=)¥Û§&–o&Î2K¾èô©%Hm!,Ìfû£ÒŸ"Gn…¤;¤n•s3ÚMfÍ#tsTf”Çz†Ýó ŒäÓbÛžE2!½¹éR%ªµÃ>Í£< rBBvàQ¸óIÆjÈ8㊛â¬`/æ$޹ö¥'ŠqéïH0:Ò—žôÑòòi…Žy9cÚšXçž}© w¦œäÆšOoÆšOoÆ¢sÎãøS;æ£cZݸçñ­,½Íh“ÇZ#%°}h„(}űïD`Ý»ñ¥žæKŒ"°HÇMIw-Ê‚F½qÞŸqw$ëå®\w¨Õ_”ð;Õ\SÎj¾läƒÍ@Ny¨IÍ>9GN´åv^Ôår´âÌØ'4¬ÌØÍ)vjp>ô œrhõ&šÝ>´ÓÉÍ4òsMŠßí3ª9§Ann§H×·SÚŸâUAۜի÷‡bÅa—†Í^Õ$·$2ðǵZ¿x‚,Q·*0Õ“3™|£€+!Î㎀qŠËvÜÞÝ1LkY¨ݞâÂ傎séMh]˜(«Ð¶êT{š³^VFjÌQJÌç&¥_¼Qœš˜}à;u«#InlU·”ËȪ1ÇJ²ò*Bâ{›xXA¿'‚G8ªROsDB\äÕ9®'†åd“øâ³c½º'yï“Òª ë¦á¦v†©-õÓðÎHž*ÄwWƒ)"œ.&?ÆjQq1ž)L’§Ï–®hH‡vNhódO›&¢ò¹,I=ê2í#’Äšˆ»H嘓M}Ï UÍ5²Ì‘²Ä ½o’˜'zƒéV¢Ë\°ùYŠ2‹“ÔÓ¹ÎãÐv¥êsÚœ:ÒçŒûÒôæ—8攜h'ŽhúÓO'ƒŠN§ð¤êi­íøškqßškqQHëäóšÎ= FÌ>´ëxZæò8×¶Xš·¤Ûý®ð p«¸Ôö0´÷ (ÈQ“õ¯ÿÙÿØÿÀððÿÚ ?ʲI.®A8þ/¥eéP=ÍâîÉT寵TÒâ’æáIÎÁÉ÷®Šô"¥ª¦0­Èü+£ÔŠ›xG;ñ·îñ¶%QŒµJ’KƒýÑÞ¡ÿQžp}0(ÕVî`˜Vàõu?@O5Jâa¬i°bTrxTæ’$WfáG4D¾b±=5=¬{î†9+ßLÕ­6/6íW¨^Z§²Œ=Æ;-;QÔRÜ#çŽ;Tú¶¤¨E¼l 7•%ýò)£d· Ê¿¿òá1!ùÏAüë&öëbyj~cY·×{ÆÍYªì îHªHK¹5N6-ÀäÓ[çéL<Ëô5æqº¯LÁã œàt©e`ÀÚ§™·¨ Øb¡Ž6Uóûµ©UÝéLT*7‘Ò¤»q%²6ìRÌwF3ëKpÁ£ZŠØm‚áÇjj FäTqŒBæ´¼9hdŽåñü;úVç†lİ\ÊïȦ¶4 ]ö³¹ßÂÖcÛLAऌ­f^ÛÈ­‚9^ßg]ÛKœe8¢(ÙwvõªÊ…~ð#mD‘2gw­HJ˜UwdtÈê*Ú01…'p¥\à \æ¨ÜÞ9c_*¯Z¯,ìr‹ÀVk†$¢ñŠÏiaxÏÌO=i³#/ZO0¼lƒ“N‡zÛ„+ó;í÷§BŽÁbç‘‚Æn±"çfÀ­Çh¶6ñ  +·ÍÇ_ïWW<«£ØÀˆ¡¾`¤zú×C,«¦ZÀŠ™çúþµZÈ‹ÝIç—&0Û•sÐö•gÚH·š«O6Z0ß»õ5RÍ…ÍûK&H òJè1è+¢ÿ8­ŸåHN) ÅŠ(¥¢–Š)(¢–Š)+ ÆÉmR=§/Ô¯÷…dYZ%¤IuÆ[ý£Y¶–©jŠ‹Æ"¥½}ÒB£ÅǧºŒ›¤WéKxù’0;RO(‚ܱ# tõª÷“¡$‘œTWˆâ'<â°.ZK©rI'·µ`ÈÏ<¹ç5‹)iåÏ5¯déäÓ«˜Ö¥©Q‰9,¼Ö¤yA¸æ¥¶™mã¹ýñÄdÕ› –ÞÖêoâùGç“SÚȰ[Ï'ñgΫ´×%É#$“X"S%Öò{“XI!’çy=Í$ªZmýGN)²‚dÜNA¤™ ”·QR[¡’R1Æ)öÀ´¸íOµ¤Æ8©&Tï\äâ2%Çz|ѪeÇz†"w¾OÒ¡S’ÀTrX¯I»À"§|c¥Ylc¥U¸–ÕXŒæ¢‘1"¡™1‘K·e¦Ì}þMm‹´ mˆÔ×I¢ ‹K‹n,Äþ'ÿ­]~‚žV‘-–?™ÿëWK¤ ‹M„ã5‰ªÊÖw²˜lÆsXÚÿî.Ù•°â²ucö{†ÚÜK*—´ÏœøíUgý‚XzÔsÇûŽ1–ëXÉ#Å!à Öp,‡A¬°ï‘’0jÖÄ»¤,£®;Ô¸¡a÷…O´O0û¡µ-êøÎ89¦ÄJ8cÓ4ËpñɸôÍnhö¯sr.¦\Eú±Ž§ÖºOy&³.Õ©þu»£Ú3Ênå\á_Õeµó$B׊¿¬F%´óäsVõ4[în6šÍÓàšXÌ‘¨1äŒîÅdéö÷ ’ýØ'qT,ášDÞ‹òzÖ­¨¼hÀ”„™­›5¾Û¶b{w5§n·8Ĭ}sV€çœ÷&®ÀïŸSVÇøÒÒÒÑE´QIE´R×7 ã<£gÊÁvŠå¢Ô^IÎé‘Éê_µFÇqçh Zš[¸›çfÉL÷(ß19aÆ*¥äàŒÜžOµfÜ͹ðIç­P¹˜3mÍ!1ÛŒ†É¦®Èˆ9¦à“VìåŒ[’˜ еo"ù%—‚F*ͼŠa,;ŒU[¹GÚ–$?.Ïš™,„ŒZd’ýäЧæ/"ü ð*”÷8ùAªvñì³ýÑÅXŠ!¸ñ…5`*’qÐÔê€ç [ctqŒÔÓÓjeSR&ÔùƒÜÔ3®ô‚>ZŽàdu¨ç†¦Anª¡˜äÔi'ïf£Ž O\Ó ³LpGZiRd8Ò¤ÈqVUˆ.2”.SÝ©våôªw¬vÍE&:TãVȾ[mc‰vŠèáÔcƒGIýæÝ€ZÝÑæǓó²+d`ìÁŠ“‘žùâ°f%”LÍ»gb{Ö,û€;Ú:g¿jªòÉ#d¹>ž‚©¼®ç,ÄžÞ‚¨É<ŽÙ-Ï`*xJÎYŸ¨J”sÁ­NŒ³ cÔpj{c S  §BV98ÎiðmÎ ^Ó­Mõß̸>÷ûU©¤ÙµõÊÉ"o,¾kKN¶7—Ý1øñ­MCPdC¨m ŸöGJÖÕ55±Ä1(2cŒôQZW×ËhDHl~B«Ü\袵…AwéøUIï?´RYw½†öê¼·ôGo q¯µiŠÞ .Ü(õ­sCjbp¡U¢UbƒËA€€),[DÏ&›` ÙÇ““ü©-AéŸJž¬T´QEQKE”QKEÅÚ1¸É®ØãÒ¹f9­…ç«f¬µŽ=jÁ]¤ýsYRÈ^l“Þ¨;&k1ä/7^†‰œ¼™ÏPìKdž$®Ìü“€EkØÛ£µñ‘ëZÖ–¨È¬ŠØµ¶R™Ý×Þ¡(±ÜJ äsº«¾gMßw½@v£º“ҪܖpÙäì  ƒÞ¢¹;@ãêΚ巆ä/ÝÍdœƒÎ:S¬ÙŠÜ‘Ò„w7jAä±éDl|åçƒœÒÆÍç/§5aù| c©%ùŸªG;Ÿ¨RY™˜ñÐR’Ä÷¤^¹§¢áòGål‘NQÏ4”ÜÒ>„ÒžQ»]ÁG½@~ðªÎ¹eúÕ×®c·ÚòÔÖ‹Z™âM¼zK=c#‚‹Š§$%mÜH98#NX¶BêÝsž*¤ÑÕ³×5žSƒÅR+Yå2)";wéBpH¥„\VÞ™¥%Á +qÁëÖ·ôífÄ“¶`ýkvÇIY4‡ ×G )b8Ô*×EI K`^·#EŠ0‰€T¾û3ÿ¬Z@F3YÚ©¶ly‘«Ì:j–¡ä>7(2zÖ4³ˆÎÅ+ý« Í"@£+“Ç·Ò²Œ¤Hª8ÉàÖåºÉ-¸ÞFAÀ'Òº[#-Ř.FOîEmÛšÜ3u<}*Ê"¢à çVÕU*Œ °ªp)ih¥¢Š(¢Š(¢Š(¢Šäãçq-ÓÄÇ£gwÍí\¼q¬g9æ¥+ÌΤzSñ–ÉqéOÛ“Ëk1!&è†û¹ªI óö·@j„pÿ¤Ý¤¼*d`ƒ¾)'ÃHBjeÆMª:Ób–ea´IæÈTbœ“L„`ð*ÉVhYÉ匹<µJC˜‹¦ ”nI9Q‚?:HH;ƒò6Ý $ä)­ )ÊcŠ1´ŒäÕËFWÌh€gœÕÛFW@àÕk¦00Ç søUIÉúàÕK†17švšå¥‘\’6“KhÄ»9â–ÉË39ã5n0JƒÎJ£ŒŠGÊ©Jí “œö© í*sœö§°ÛŒœçµ06â}4Üîsì)¹ËöEAóÛ§]Ìüé-c3^Aþ6Î’Ý<˸Pu'5Ð\E‚g=»×MwV¶Ë…]Ù÷­ë…H!’Fká„“°Î@'¥s·ŽyÉÅbNÊÌyÈäâªÉüÌAšªÊ¼¶*«"ò@ªJ…·8Ï5 !b{ ÔFÌFG­+K¦ŽV K*‰ŽÕ²—òCÄç~ÓòŽÕ±ëFª¬IÚx­{]QžXÑ€Øxâ¯Ùk%Â$…B1Ç®Úê&Y6š·5š³3§SØ÷«—zzÊZHˆË èjyí–dêyÅgË1ÆWœVC[áØñ¹?†³š €V´ì™dµ”ƒ•­ë8öœü¿•kÛaLc©ªz’–Š)(¢–Š)(¢–Š(¢Šãï_ˉUF u5Â\6ÔU^ ï\•Ûì@ƒëTD…HlŸJ«š¨’•psÔÕèÉr¬Ç…lÕÀÙ}Fü>hû( Ò7%ºëLò•±åOjg’¨åÏSH-ó _º¡ri¾Qi>ƒ4ÑçÇn´ùÝZ•`õ©Ð @Ž5çÒ§Èp'¦*­ÄijSvK·8ôë«Xí+æ·${v¦ÜA¶U³¼õÝ«GHÇ—" Ž*“LPVXÆ7u>’'ê* NÜ™w/tHDѬ¾ UÍb×íV‚hS÷«ÔJ—Tµ0 ¢Sæt9¨t»imYçV_“ Y¶PKk—)¦ªYÛËo’Ì$`Tª c<Ÿzˆ Ø,:o rÇó¤±nÚ¸ÉíMIœ ‚¤a¹CgýÚ‘Á(@x ´XWVë·hüªiGTí÷Wò§°á—þùüª¼HÒɱ'<â©FŒï´ ãôª±#Há@éÖ´ùD ¼×ëW *Ž‚®T: ­vI}jŽ@jŽ@h· O­25ùi‘®ëR6òxïN<-8Œ ¡ç›ä$ ô¨7î“¥Wn”ìû¢ªÊÙvïI#ä•ëPÜ>X¡æº/ ÛGfãÎÜÒ(ù1Òº/Çom8º$Š?wƒÅtÚÄÅgÞdÁ Ž•º¼ŒÖòË“[*xÍ--QE-RQE-v¢Š(¢Šå­cYmV]¸cÁ'½qP§™n$æjæ"Ì„8cKpþU¹\|Äb’VòâÛŽM6vÙù©ÖnÏk–ƒŒÓíòÐdóÍKnw ô«ª†5ÜzÕmĤ“Á5eË\žôÔP¹,ügŒö¦Ä’ÌøÀ¦ÇŽYâ’â0[ 2„Óîcùº|Ç¡§N™oö»š9ÔB¢Bw޵¤§QE´QIE´QERQE-WxìÅ#$ùmü낉`€¦¸ë—bë'kUý2U6¿?7Jµcì ÇéVìcq yíZTÛÆ¥^ÀMœsž•w6ñÍ&<Æ;F1íH˜N8ü)Ürz–23ìrz³gÌÒ˜Ç ¸Á«è_Ì(8j9øq÷ïQ\œ)ã'Ò£œm8¸æ–BN8lpi.[,·ÍŽ)&9 Í5”q¹K‰ÐrÕ(à“Uï.VÕP~¹¨.¥ø'©5Ì¢¨É¬×»fÛž3Þ¨´ÌØÏz¤g$Œ÷«b\@\š˜>#,MO¿5sM§©K¹8ä }“ÜsóXZ}³…ÂŽµ}« r*Ãr*>÷¦­0à}j¬ó¸?àY¨dr²…ìj¬Á{‘íc˜Ù±ý}iÆ”gn­+À’.qƒëUKµ´xc÷_ƒøT%ŒkÉÉ¡f0§Íýþ*äL1»<ŽjaŽO§58#œVUÌ&3´œž¦ªH…Wñ¬û¨Š.Aæº ÈN™å·T?Ïšì<9&ý&5=P·ó?ã]N€û´¨TÿGõþµ­Zu£ERÑEQIE´QEQEÏ›H”£2ž•È}ž4‘I\ŒW=öt7.T~•g(¸U?7lU¡±>P~sÐ œm^cŒTŠ76rGz”.÷ ¯ÌFNjP¹lɦ©XÕÀ<i€¬Q°'¦M7*ˆFzdÓ¬šE™öG¼ÎsŽj]*Icy Â_räàSìdui1lŽ %ÆáB3ŒñÚ’û+¡šAž;R]#ØTnaž*%M¬qÆ9üj´HD›±‚1Š…ƒçŒb‰]ÃŒ ¶2ÙéKq#¬£»½íD®D˜êzŸj¥¨Gæ}»vª7ƒyÏz§x7œÖj*ÃÍT‚j¢-‚kFéJ[(ÇËÓéV§]‘;â­N»aP1U­Fç㨨aaІ—4·‘*6òç>õ%Ê gœ3’å•¡cP¨ÄŠ’Hâ£AûÅ Ôš$U_½Z'Ž}êÃep Ճ׭!—ž½©Ýõ¤<šÏºÉ»lóÒªÊs1Ïj©)ÍÁ'¶*èoÜŽp1г»äU½ß ôÅT»_2&ÁÎÞj †ä#Ҫݮ蛹¤‚LØóžXÖÌ@žüSàmС=ø§^Cæ<Œƒ0æŸ$^dYQü\ÒÍ™Ê?šÚðø)ö„'Œ®1ô®‹ÃþˆéÇ é[š.E±S€VÅkV%QEQE-QEQEQXÛ€SÈëÚ¹Daär{V—’94õPAÝêjʱm$|ÝrEN±ªHù‡z|Œ…AÇj}æã¨íN•Ô}ª. ØA?­U?Õzä–”(äãi¼UAËÝ\¿)µ=ÓœÛåÅ4#8fÜÎ)‰2’X „ÓUÙÆ;R ÁûÞÔ¡¥ÇñSJµKQ!•W­T¼ ªê:ÕKÝËÖ°ÔàçùÖpÈ>õ˜ŒCg½m -lªÜ’:V‚å¡÷¦2Ñ{Šj§”»PfI8‘ÄwÓæw8$Àƒ,çj’hÞT‘C&8'¹«wµ¹Eu ¸ã>µbâ3ÕuùqÅDå½äz¬‘„8tä #ÊvéS1ÜÛ˜štŸ3nyÇz–g1Ažè)äµHÌUsôª‘ϑʧ9õö¦‰2i‚^JúSàÌ–’ *­9IuÚ£’p,y’50wqVî¢k(æ\ïaØg¥^½…¬-±Ì„ïlô«wQ;uGåó–üksHT[%+Õù5»¡ª¦œ›qórkgLU[$Ç~jí_«TQEQERÑEQIEÌÿgÌòÇ}£$S]ÂrA#Ú›$Ì Õ›;¤ŽB>Rq\õ±i㑇ÊÇÚ²mäç¡àU›Â»ÁZ·¨2yªËÀ^>µfí—x#¢Šˆ4¯ÕP< àzT÷¬†*¶§~,¢H¶þó'Ò¡Ô®Äáƒj¾£x¶±,Xù…VÒ¬ŠßN¥‹ ÇžÞæ¢²µxÂ^L¥‹®äÏAïPØÚº„º™If\¯µhÈCç2ž‚§,Ê|ÌæVéV‰ÚL‡–nÔ·²åÏP)R/5”—õ•cóÃ'µ“8ÀZt Kã„4±›vªß0ó‰ÎªwÎ ìzU/˜ôOì³ îV¡;ª° nâ­g À©³ÜðOœ{b­höûå{Æ_öcÝë[ÃÖ€³Þ:ûGôïZ:=¾K\ºû-A«1k„PD$ŒŽ*¶µ!k•U*“ŒŠ¯ª9iÂà€¾Õ]sŒóTA8ÍUœS#¤îÀ§š­{1…Q—-Ȫó±Œ)¿5ZâC©ÏÓÒE’?9G8ü<0eÞ8§«+¨ Uiî¡\îÏÚ¡g#<Ô2J¤c9¬à¤É´d… ¹j‰S/ž{Öî•nZâîD|’+_B³3^,ØÝM×ÔÖ¶‘n^å\ ¢¾õ>¯žì¨å[ ûjmp,— ™ÎzûTÚ²¬“<†ý1SÁ}¹,ãäSÝÏ`*K=J+;B ¨è{Ô^Åkkó6ŽýêΨI¨Ã,¯ Wڸ늽¢ßɨÛI3ƨí~€ÿZ³¤ß6£lÓ=êý_«”´QIEQEQEQEAåo%G̽HíXÒÎâÞ5~eîJÏyD‘Q219iIÇRÝ*¤¨Yù”ŸRÕ^E,ܹÀêi˃2¬nª¸ê=ië·ÏO)®޾ôà@”l :Õ íN¥-¸#äBYØõ9ªÛ%„܈Isëžj¬–ÿk’ ÀC–&¯Êr<³ŠEbîVùnÇb *­O;³Œ~P0¤Ør„#½3Lò›ä!àqšhŒü¤+JJ—Àò}:51™ °#>žŠT°ÈëLrQ é“ùÔr±8ÉéL•^½kS|œÖmÓsŒÖeë`ü§šm„ãlŠý†W4[?Uî9¤³—åe=G5a ’ÇšÛGãÅO4íw‘¶Õ˜”ÌQ30âºTQo*Œ…]Œ¬¤kÑ@WIÑQGVãË&¥>ìlŒ•–k›Ö {ùq³<~…~YîŸ ½©ª„Œ“ÅRT8Îj_—9¥QÏjU\ñJr*ž¤¬È‡*Õ{µ'U[å$ŽCbìKCžTpÊzÔv¬NèýEVt*JóÖ¢*C`ÕwR­´Õ»;!$È ûïô=jõœ^tÑ!èÏýhYCæÊŠÇï6? ë ‚>Ù„k…PY¿]„CenV%Ø‹–>üWKqÚ[‹µ@ɬ¸ÅÁzýk–º¸ón‰'ô¬)çÝ1$Œg?…EpVéb·@K'/è£l]m”ó?-éQHÒÅl +òÕÒXÚGcj°GÐrO©®²ÎÕ,­R‡Ê½O©®ŠÒÞ;Kd†1òÔÔõ=KEQE´QERQE-V|Œ]Â'ùÖò™\$Ghöîk6Y7°XÎ0:Ô@&äBU°2V UM複ÀËÆ£UPàd7šš@®6¨Øà¢§ŸlŒBíFÆEI!Váp?*Œì†%9nä†gŽR$oâ ÔR²ÃÆ{i±…ÀÇcÞ A ÔQ¨$Ng(ÜjBà »?pùFH¡v¨ÝÐ ð:“OR¨ýуө4ðUð0?V‘·dER‘÷œóU÷}êå·Ÿ#–ŒTù‹‘Ú º‡Ì#µQ´·rY˜Jýj"l’AVÚÜY†+JÈDZ¼„l‡.~¸â´´­°Ü‰åû°©cõ=+JÀ¬rùÒ}ØcõíZv³óºòÙFFOZÙÓ5ˆ¯·©6^€ž¢´¬5Hï7 l*xõªz‘ÚÏÀ Ê ÷â²5Ìk9 Ê?+?SÀÔ[øñTn.¼£¶>MgÉ6ΩK>Î¥²›ÍX ’9©md „0š’Ö@èwzÓæHöãŽG4Ù@lŒqD 0 Ž*½¥«$ùïQÁÙ}óQ[ò\Z|ÐE,¾cwàR¼Q´››¡íJðÆï¸óSé![Q…xùA UýDšœ~¨¥€«š8|¤IÇÖ¶5yžŸ)Á$‚¿/lŽõÑj2ˆ¬åb ¯5¯¨IåÚIÁù†8®AœF‰ÏSšâ—ÎzƹGbó…CÏj»§D[W¶LÙ†#Ò¯i³k6é‚|¿™½¸«ºtLuxTB ŸcŠë§Jìtô”””QEQKE”QERÑEr w •›'õ®n\ æ¹D¹pÜÍjÀ¢(ƒ¡Ì’uïŠÐˆ# „Z»òP9gõíOŠÝ71‘Žî¥…,VᙌÏ\æ ’]¹ëOTŒ „SR,q…BG­<"]Ôó´cp½*B¸ ØÎ?•<í\qƒÖ£YW“Љ$PãœÓ×"«K6òp~EäÕi¥ ÇŸrj¼Òî'û¢³^òI¦*§ž÷ªM;;í^j¥ç³É´tíS#I Ásò°äԨΒmÎA23¤›sœŠ.®‚"ªá‹úTÀ‚Ûr3RlîyªÓÈ~ÇS‚çkã¯ã4VÛ1´“ƒøT’2Û¨o#?•C ¼¡TÏ5]#•d^7w¨"ŠXÕ]xÈëRºÞ»Ô¶8ÍO%ÃÌ©æ½F ©žâIJùŠw ¤»·‰ë€EW™NàÕ Â¶C }l·ÝO·'ž>ñ§Údãï¸Ù,IéSIúTç$àô§Æ;ž½éËÀ$Ó€â©ÏwN«ƒŒgІYU`:Ôαȧ5Ÿu$7ãnY‰ëOÓn^Úåf –'}iÚeÃÃp²…ùœ€?:ê5IR=2C8ûÉ·ûØâº½^T‡M˜Ê>òízö®‡RuO—ÌW{â¹{+9eñ`HOȽqï\¥•¤Ó2¼Xóü‹×õÎÙZM!úÂ~EôµÔi– a_½#rò¬k«Ótøôø6/Í#rîz“]šYÅ´rçï9êM]«•fŠ(¤¢Š(¢Š(¥¢Š(¢Š)kžÓôÒãÍ”àöÉØi¦Eß!Æz\í†àÎ3Z2„Œì‡NH«·(‘¸HYH’=jìʨûPŠa/`oN:Ó̉@ ¸û´ÖÜ€ ¹ÏZe¥?¼#=xýz••m¢Ì§÷¸Ïÿ×§°Ç—?7\T Ûðdšªíæ`'$ÔÛÈ ß½E+`2>^¿íTr¶Œ`ëïQÈp0½}êÛnཾ¹ª·,<£ŽÕZ凖ÁxÍfC‘:sÆES‹>höª0çÎ_j½~صÜ>SßéW‡ÊOj»!«tⳠ󜬎ÛÃgœÕT“÷Šùèiefç¡;ª[“$ñc¼çëEÓ3§ÏÆ:Uë|è6åÝ¥-ç8íSÂÛâ_›8íS†ÁÃP84áÁæœÊLÓÎÒ½)쓨WÿJE‚š¡WŒ Vééè=ixõÅ;I)%cÈÈæ•¹Ê¯Nô?p½Mg‹_´\lA–`Hü*Xm–i Æ™8Ȧ- žFTaʚѴÑ&û,17˜6ý1WãÐØZFÃý›“ì*üK-¼NGïC‚}†krøn·p9ì?J׿ŒÏnê1þïÒ´¯Í…†ÜóŒ{Ôzu‚Y¡8̯ËOjf›aŒXyË·ô¢ÊÑmbà|ÍÉ5r®UŠ(¢Š(¢Š(¢ŠZ(¤¢Š(¥¥¢’³°Ì|°Àã°®}U˜”œv”2xÝô¦ÆCnòùÇZŽ/›yŒtûÆ™0ÅNI¥eœeT…éõ«|Æ@Ūôâ”]’ܨ8éU¦}îI;‰ôª“Ê]Ù‰É&«JæF,N}©D‚1Çq’})Ë(ˆ½HäúS–Aõêk.[Ößû°vƒÔÕ).o”q×&©Ipw|¼ÔΦk` §ºù‘ “OqæÄš®–…_s0ÅD°à䚉 Ãdš±5¯šdÈôhCÇÏÜqÍY0\?\qTç´1.qU¥ä3U¥¶+ÐqU|·‘‚ã¥:))\f˜7±Æ: SãW¶‘$ÛÁà╉ £h\zSþdê½}*ÓÊÊåH푚‰™•°zSK2¶ü阌©"oê)~~¢§‹{ç½J¥˜có©±ÇëRc$zS¾÷~”ñÉÎhv ·SJH±<š 2O=©ú#B.WÍlJÌB Óðð]ÌpÇ¥]Ñ6‡Ë·Îz é¥tF¶©)\ÑÞ0,T‘÷…-RÑEQEQEQE-QEQEQYÃ1H`É®|‘ À GÊ2@¬¬ùràœ`dÕy.V8 i„RrO­V–ïæ(ÀU-“Žõ·Ê1®“ÍV¹“ɉ88É5VvƉŸz­;ˆÔ ô¨­˜È îÊûÔp’ÃqÕ8a€UTzœÔ³¨ 9 §Ä¿6x¯#Š|Cæì;äô§Æ9Í!oœ•ç¶{R4Ÿ9# Ú‘Ÿæ$ö¤ù±Éãû´›­&ãÜÔx.*úSK3à``{SrXãR‚ƒ´‘ýi¬£ÜR2qPÉ™ cÔqQ²`Õ&ö§D@Œ{Ô˜`¸sRUxÅ!Vdúv¤ Ž3Éô¦GüÆer88¤äu g‘Ö¡—pB3ŒÓ[ bšÀão­-¡ÝÃ#ÂXŒŽÇÖµô¢˜ËÆï#v¯X‘¦ag•”àŽ‚º-:V{a„ùÑðàÖôM¹ps¸u¶c}Àœ÷jŸO¤ b sš\QŠZ(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢ŠÀ»¹Ø…”î'ŽkºŸnJÄŠç.'Ú 9¬Á1'%‰$ð*õ'žÕL9<çšsÆò±ß’Ojs«»ÙÍ9‘ÝŽA«°¬PDsÉjÄJ‘ÆI5b0±Æ{š{ºˆ÷“ÇQNwwôÅ+¸Û¿¦:U1pòK…PG½W3¿cÞ Y™ßš´‡`ÉäžÕ:ü¼ž}ªuàsFw}ÿ^‚Ž[ïp3Úƒ“÷ºR…”`zQéMb=ãÖý¦·åU^ñÐázg­WiÊð*œ©À§%З‡ãß4ä˜7Þ§G8~µ) îã¥?’}ªN9ÁÍ01c×Öš“M IúSÝ 7È@õÉ¥eÜçi×&•—sœ)A 0YA¥oR)AÛÔŠó#€}iQL’ gÖ‘°œš³ó@®ÒÛçaµiÚÞµ›f[• Þ™«ð]µ·2EšÐ7\7š'(#¸µã½·™LžiT^µ¢—Pº™7£Òžš­¤· l\¹ÆqÞˆµ+YçH¡rå‰ä H¯íå˜G-Þ¯}*Ù«XÅ%”QEQEQE´QEQE”Q\œÑ?ÙãP =k†–6òÕpzf¹Ibbˆ=ªBÛÉ—äÒ£ŒÛ'“QLjߞµb{à mXÆæÿ9©d¸Ø¸UäúÔ“\ùk…^MS‰ä¸”.O¹¨c/+ã5 Nó63WfC•‰NBŽMO"“…Þ¬H¤áAàSáƒËU'ëNŽ=€Å9#Ø2ÜSØ`äŽ}éǃœsNèsÞšf @Å!“0iv€à‚~”Ó:ƒ‚?*i˜gäq1À8y¡[yÇoz„‡Ž)%¶I¢ëHñ+vRI~¡a×Ò™äl uÍF ØE:I1·ÐÌ€9§3…àu¨¶Ü\"Rª?ˆÕ»}6{ˆÚM¥{‘Ö¤ŠÎyã,ªP(ž†¢/,b]ß7z©£☙J¶j¤pÜÂK§09Ç^£×ð¨bŠâ+bC-Ï#Ú™71ÅýèÜò)°°[òä/zKi aöü¹èOzm³îT•ùIìqZVÚËÅuåH7£¶'¥j[kR-à‚eÜ®ØV'¥h[jl·+ƒ!Ï·Ág‚1Ú·;Ö·Ó½QEQEQEQERÑE%W6Ýž+‹Ýüb¹­ÝÅWŽÓs™epj4€33»@j$€gs€:Tw¥%Nr8¦K™! ðj9cód$ Om Û®î®z楊1Éêjhc/½N]A?Z²íT¥—TA™‰'ŸJŒcžõbÇ4ð‡oœõn´à§©¨¦JòE6DùNÞi’'ÉòÕ¼“ÁªÄ6zUR=*hUò Š|a²7 Ô‘ÈÍ]áp0}:ÔÿtgéV Ú3ŒS$uÆwïéMwê~´Çc­Q™ÁP±oZˆ ŸÜ‘PžOÊã’Ehé—î–žL0¬Žø½+¡Ñ¯ËÙGn‰™a·ð+gJ»g¶HV/™xËñ[Yù‘Åqåù¸ééÞ´ä[`TÜ÷ŽpzU÷û:¸Þ9ÅWÕ5¨­Ç —°QÔµè-U£€‰eíè*¦¡­Cjb!äíéY‹wqª`ÊÀ"@zÅ’öçU`% "Þ²ÍÌú‘Îy>ÕͱŠä¿p2î*¬öí™=;PÍnc—v{pE:+¨î–Þ)s˜²¸^­šÔÓobº‚('¼g ´ã9«¶WQܪG2¶ä@ªú2Ê[s"² ãÖµ.4kYÉ$2+Z3ipJÄò¼j¿ö ùÿ3“éUA+r ;2(ùsU£Ñ¶Î v*½3V´é§¼ "M6x+V´ùfûT° ’Xã8ù¸e«VR9•¢Eõê+XÖ]¤¢Š(¢Š(¥¢Š(¥¤¢’–Š+”g¨ÝŒõÛ\1`ƒžMr¬áÍɪ²Ü4ŒçÐ …¤,j»JÎx«VѲ¦ãÃ75b*¹?xÕ˜c!}ÍM€2HçÖŸŠ“{šM¿0/Èì)9n}… üÜûS”Œci's·ÐTÐxi€Ï1eÂ*X´ ²_J¶ñiÖqùa»í5}þÃm@ŠS±+ÁüêÓ H¢U Ž+:{ËHó»Âs'úÖ|ú•œ$d,¯1•ãóÇZ£>£m èÓî‘ÅbÜÜÉspó3rͺ°¯¯f¼˜ÈíÇ`;VÕÔ³Ê]›©ãÚ’8÷°.OZ‚5¾lÔqG¹·>MXYž6s1Ç"m uj—ÏegØv+Œ½ÅO纳”bŠã%ÜÁV=Å“Þ3€$¯¡¤Yä\’¾ôûK¿³]¬ÞX!z¯µO§Þ›+Ř(*:jšÆôÚ\¬¸èAô­‹Íeâ ,ev:Ÿuõ½>¸0èG# äŠØ¸ÕöÄH!†p;Q£ë&âçË”à7LúÓtmY¯.Ú'8ܹšN©ö»†¸$dV¼pÀºFóó9­…H·–TMýÈÖª¬{Îл»àsRÓéÔh¢Š(¢Š(¢ŠZ(¢Š(¢ŠâLNí–®£“\kFY²Õ<*|ÝMIç½K a9©÷‘ÍK¸Š›$RÆ äÿ*@ØÁêi7cžôǹP¼ç¦) ¹n›7ÎË`|ÆŸ×r“ïŽO\ºù‚3´wÇJ–%¹‘wÎ=i—RÈŽV]ä‘Ñx“2FÊ$bùã€)³È±sj×AF\)sõ«Ö6rN#ba'ïg¨©í`šå£m¢8‹}ìòk©ûªsä!#o-œ >[tÈÇQ[‚Þ%©>ôï*ÒóvÅø„Z[ƒ!ò“O˜"ËŠzVuÞ¾±HV$ÔÖU׈B9¦ìµfÜk!ùk¸¤U9|C3Äë ç£ §?ˆ'xð˜V=ÅVŸZ•£!Ö'­eM-ÄÌLŽpzšËšæi‰Ý! õ¬É¦šf%¤8î3Iå Ý}*#ŒsQ1Í ªNôÞ)¼T‹À攜‚>¡Ž@íF=i1êi eÊx£  ž)Æ0ÙÏ$ÒýiÄqÍ1ÃchÆ0E(l)b—qÁ\ðF)¶ äj1;B¶I©´©þͨ$™Æ23NÒåû=ú±;G<ÖÑÔ%‚ãÍ;›ŠÐ‹R’+á1bÊÇ ­4¿xî„™$1ÁÖ¬”2ɱˆRÇåç­mÛj‘Ï7–øV' ƒÖµ ¿IdØ z{ÕÎ:ö«õpQEQEQEQGÖŠZ(®YP“–ýk‡U$ä×,¨Iɧ„Z~ÑëOÚ)®¼àRÎ5½Wv €»z `WvÛïoj çj ÇÚ¶4­)cÄ÷ L„pjè4! A$ë—npGJÚÓ´Õ…wʹvõíWç–XŠ’«ŸájýÄð[DQ¶¨#jib†2§hÿf¹«û±q?˜€8ã½rwR,³–.k›»u’f qš®.=&H@Üf}ÇýŒUخŖ’!VóY›pÿf¦[“k¦,`ïfmãÚ˜º…ãã÷íò j›kÍÇžF8ãµU:Û–>i_¥1î!>¹5ZK™$s“îME%Ó¸¹>¼Ó"“ù' 1LIÈÏ^´Øå 0'­;aކ›ÐäR9áœriI8¥9#š^~”œÒ`Óˆ mÛŽM.(Æ:Rï ÷zÑ)sŒSȯ­/½8Ž3HËÀæHu¡•ó‚âŒüRínôÑõ+Þ‡µ'–{QåÉ#§½9ÏzUˆäsNš'Q¹úvžU”–lJ{#©,Õ>“º¿EmÛGLÖ†‰»Ô~í©ódtâ¯i}¢ô1 Br½u¹¼t®¸ãJé:QEQEQEQEQEr­&>µÃ—®T¾)†f,©cè)wpöÝîÇô«pé—?3¹MhÚhÓÜ|ÎÅ®[ésO÷˜¨5±kgoa(ÀÉfï[Ö–0iðáA—=ëbÚÒ(€P2:±ªZ†§ú¸\³w Õ WS‰d37r¦ªêȃlo“íXw2¼’gqÎÏ;Èù,øäsódJÙÆIÍD¤“×5nÏ$Ó\rvt=iwWîž´ŒHGÝïUÈ!zÔ,yªîNp)Ç“J£4ª0=éË'4¸&cR€qJ©B)Áiá*@œRã<3Š8œŠ¬ás€ÄäÒ`ŽÔÜBŠwî±ò¯N>´˜ãŒPvuE!%ù= Ozh;ŽjhËGʦXÿv©)È\ýjhÉ@H_ÄÑbä…glÿ§&Kä)cè)bÉlíÉÏj·öi$‘C €ž‚¬%´Žà0Ûš´¶Ìì©Ä0Z Ï,µ3E²Õ…JcHw+Y Ú„èýò@_Oz«^Í!æCù ¤°Iy**Ÿ¼*ßµŠ.ÓìèÊó’} tPˆt‹/%J¼ã“õ­èV-6ÓÊ\4ƒ®*å¬ï*þðŒû ·ct× w€z ±m9™rø¬UªžŠ(¢Š(¢Š(¢Š(®>Ö)nåd\3é\e¥œ—3”rzŸA\­µ»ÜÈTŽpMt¶övöå€àd±®š×O·³ˆ e‰­û{(mã/AɬGX{‚a¶ù¦áÞ±õ]u¤Ì‡j÷aYú†±“äÛ`yjÏ:dÚò±Þ³êâee’g Ž™¬÷¹¸™ ´Ì,ª¦:Ôq—œšŽ%ù~lýM:$ YØ|¢„PrÍÐR¢+ÍÐTr:îùzzŠcϵFÌÀéPK(*ãžõ7¥E,ƒ½j„œšn ¨9É©°½E8t©€éN ÆM8qÉ©Wæ—¯ʻڗpè)Í…ùTòzÒnÇN¦¸Ž´¨”±R@ {R($dŽ)þLÑ8—ÊfwŠ_-AR R-€{SÖÆxô§­¹?{ð© ™× ÓÖ=‡’8©[G$SJ†lHcƒHqÆs“H1Á9¬Â±Âïšµ¤As÷«Q*E·×581É„ýjo3Ìn:-L{d S¾-$ŽˆQ€*¥Æe”‚p:UK’d“æ8*Î ‚éÏ9UÜ®k_D@ï#Ÿ™åúÑÒcŠbÇZ•ÊM.èÀärMGrEÅÈdî9Ï¥íš|§sÉ­ EÉ-ØqZ:ld³?@¼ »f¤’Ýâ­VZ¤¢Š(¢ ½—Ë‹\·fî*®¡rÖðî]»÷ª©¼¸²1“ëPØ]‰ǵŽ0Õ…ø¹;UHôjm­ÈœãhR;æ®oLãpÏÖ®–QÕ€üjÁ u"³ì,RÈO¼Þ“T¬,–ÐÈÌA/ú §ef¶Þa'¯#Ú±/ïd¸•Ècåçj€{v®{WÔd¹¸tG"!Àõ¬}KP’iYá:`w¨£@«îk=F95EWhÏsJ¤íaÉ$ô§/+N_»K#m°SNfÂà­8¶Õæ¡iŒ¡•NÕ==ê2û†JˆÉ½H*)F?ÄÔnF0½jd*òj1*4Üg´ÍœÞ¤UÚ˜Ó€§ T!’GÊ)è¤óÚ¥‰ äŽ)û›æ㢊0 ¥* ÉééNò€»¹¥ÙéÅ3ÓŠO³í ÊIã¿ó¥’9§y;AlçµH<Ñ Æ¾iãvÕ\~4õ …^µ9g»·5!'f©É;0*)T¤ –$m¦0*ýsQVN¤àPjäcŸZ\`gÖ” sëS¢I–SRF¼ôçøMIç¥N0N +íçúÐä­GzÌ3® Ô¶§z¿8†imNõnÀ0Îj¶£:µÃû»»ÔsÈäã¦êŠyÎ{ŒKwÜ“w*åˆô«í!0ýåb=*uó‹“è2Ø­«H|»`YJ¹ê§µhYÅ‹mθsÎÓÚ¯ÚǶÍÃkB¶%ã­»tÙ€1ZQ.ÈÀÅ>¤§ÑEŽÛ#wÆv‚qHïåÆîy ¤Ó]¶#9ä(&°®îdšìÀ0;†z€Gÿª¹Ëë¹.mDŒ@+&@=‘wpÒÛï8Èl}5jÃOŠ[xå¸CæuÀ8ÅhXéP’iT—?0ÇjÝ­ŠlI_;Ï#rxÂH²î*ÁïV.âÈ&ÞQNïSN~òªkÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š(¢–Š(¤¢’–ŠZJ)(¤¢ŠZ(¢–Š(¢ŠJ(¢Š(¥¢ŠJ(¢ŠZ))(¥¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢ŠZ(¤¢–Š)(¢––Š(¢’’ŠZ(¢–ŠJ(¥¤¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š(¥¢Š(¢’ŠZ(¤¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š)(¢––Š(¢ŠJZ(¤¢––ŠJJ(¢ŠZZ(¤¢Š(¤¢ŠZ))(¥¢Š(¢Š(¢–Š))h¢’’Š)h¢Š(¢ŠZ(¤¢Š(¥¢ŠJZ(¤¢Š(¢Š)ih¢’ŠJ(¢Š(¥¢–’Š)h¤¢ŠZJ))h¥¤¢ŠZ))(¢Š(¢’Š(¢ŠZ)h¢’“¶MÉ£¥¢Š(¢Š(¢Š(¢Š(¢Š)h¥¢ŠJ(¢’Š)h¢Š(¤¢Š(¥¢Š(¢’–Š)(¢ŠCÅQE´´´RRRQE-R~”gž”~QE-QE-%”´QIE´QE´v¢’ŠZ(¤¢Š(¢Š(¢Š(¥¢–’Š(¢’Š(¢Š)h¢’ŠZ(¢Š(¥¢ŠJ(¥¢’’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¥¥¢’Š(¢–Š)(¢–Š)(¢Š))h¢’ŠZ(¢Š(¢–ŠZ(¢’ŠJ(¥¢ŠJZ(¢Š))(¢–Š)(¥¢ŠJZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¤¤¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¥¤¢Š(¤¢ŠZ(¤¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢Š(¢’Š(¢Š)?JduÅžôP¹œQÎ9¥¥¢ŠJZ(¢Š(¢–’ŠJ(¢Š)h¢’Š(¢Š(¢–Š(¢ŠJ(¢ŠJ(¥¢Š(¢Š(¢Š)(¢Š(¢Š)h¢Š)h¢’Š(¢Š(¢Š)h¢’Š(¥¢–’ŠJ(¢Š)h¢’Š(¢Š(¢–Š))h¢’ŠZ))(¢Š)h¢Š(¢Š(¢Š(¢Š(¤¢––ŠJJ(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZZ)))LûÑE-QKE”QERÑEQIE%QE´QEQEQEQEQEQEQEQEQERÑKE””QEQEQEQE´´QIE%RÑE´QIE%óÇnÈ@ p¿¥#0_¼@úÒ3ûÄ.zdõ¤yÆí¨ 8ÏNÔǘÚ¼ÓZAœ ­%óÆJùaÏ^8¨žé£÷ž¸Ü)¸J· ¢XÑþîîÄÕ„m诌ëÚ¦S¹ýªJZZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢–ŠZJ)(¢Š(¢–’ŠJZ(¢Š(¢Š)h¢Š(¢Š)(¢Š(¥¢ŠJ(¥¢Š)j¤’™‘UcûÜŒŽŸàj $,B(àÿ*}Ä9õ#¥Cr$C´r[£zT2nñïQ¸eàÆ¨½Ã¬YL’ü {’‚ïè‚¡i¶È˜öQš¹eip.„Ó|‘ !#Ï<žµ=¤‰CË„E]¨™çëRÚÇ0´¸T µ½iÕʵEQEQEQERQE-´ƒ­”´QEQEQERÑKIE%-RQEQEQE´RÒQEQE”´QILt¸4Œ‡4Œ»…WšØ*†EÞÀð ¨e·ܹ'·5Ä1‘’~´ûh e¤yôíKo—ó04±Dæ f¬TÕ-%QE´QIE´QEQEQEQE´QE´”RQE-RQE-RQEQEQEQE´RÒQERQE--%%%QERÑEQE´QIEQE-RQEQE%RÑE%RÑEQEQEQEQEQEQEQEQE”QKKERÑIIIE´QEQE”QKE”QKEQEQERQE--RRÒQE-”RÑE%RÑE%QEQE´QIEQKKE%%%RÒÑE%QEQEQEQEQEQEQEQEQEQEQERQE-QEQEQERQE-´RÑE%%RÑE%RÑE%%QE´QEQEQEQIE´QEQE”QKE”´RÒQIÒŽ”t¥¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢ŠZZ))(¥¢–Š)(¢ŠCÀ ÑGlÑÖŠ(¢Š(¥¢Š(¥¢–’ŠJ(¢Š(¢Š(¢Š(¢–Š)(¥¥¢’’’Š(¢ŠZ(¤¢Š(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢–’ŠJZ(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZZ))(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢’Š)h¢’Š)h¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¥¢’’ŠZ(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢––ŠJJ(¢’–ŠZ(¢’Š(¢ŠZ(¤¢ŠZ))(¥¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š)h¢’Š)h¢Š(¤¢––ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢–ŠJ)ii)(¥¥¤¤¤¥¢Š(¢Š(¤¢ŠZ(¢Š(¢–Š))(¢–Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢’ŠZZ)(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ)(¢–Š)(¢Š(¥¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¥¢ŠJ(¥¢–Š)(¢ŠJ(¢Š)h¢ŠZ(¤¢Š(¢Š(¢–Š)(¢Š(¢ŠZ(¤¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š)h¢Š(¤¢––ŠJ(¢Š(¤¢ŠZ(¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢––ŠJJ)ih¤¤¤¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢––Š)(¢Š(¢Š)h¢’Š)h¢Š)¡sЃG^•V{øâ¼†Ø³¶µTšþ8¯a¶üTt‹tç%»U³Á«‡ƒS÷¤¤¢Š(¥¢ŠJ(¢Š)h¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢Š(¢–Š)(¢–Š(¢–Š)(¢–Š)(¥¢ŠJ(¢ŠçïµELVï—'ïzW=}«ù ÇåýkóS ‘¶[¥Q†AöÛaÌNâOÖ¨YÈdÔí³ó1`I?Z§i){ø2rÄä×\yçÞ»éO&ŠJ)(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)ih¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢Š(¢Š(¢Š(¢ŠJ+ÿÙÿØÿÀððÿÚ ?èë¢®ŽŠ))(¢–ŠZ(¤¤¢ŠZ)h¥¤¢ñïE%RÒÒÑE%”´RÒQIKE-%”R AE---””RÑE´RRQKKE%%´´QIE´QEQE%%QEQE-´”QEQEQIEQEQKKEQE%RÑE%”RbŽ´RÒÑEQE-QE”RRÑKEQE”QKE%%´´RQEQERÑE%%´QERQIE´´´QIEQE-””RÑE´QE%%%---QE%RÑEQE%RÑIE´”RRÑE%´´QIEQE-RQEQKE%%QE--””RÑE´QEQEQIIE--””RÑE´QIE%-´”QKE%%´´QE”QKIE´QERQEQKE%%´´QIE%-´”QKEQEQERQIKE-%”QKKE%QIE--”QKEQE%%´´QIE´QEQIIIKE-´”QERÑE%%%´RÑKIEQE-RQEQE”QERÑE%-´”RQE--RQE-RQIKE-QEQEQIIE--QE%QIE-QE%%´´QIKE”RÑEQE-”QE%´QE-QEQIE´”QEQE´QIE´RQE”RÑE%-´”QE”´RÒQEQKE%%´QIE´QIKE-QIEQEQKE”QKERRRRÒÑEQERQE´RÒQE-QE%RÑE%%´´QIE%RÑE%RÒÑIIE-RQE--”QE%QE-QKE”QERÑERQE-%QFi(¢––Š)(¢–’’’–––Š)(¢–ŠJ(¥¤¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢ŠJZ(¤¢––ŠJ(¥¤¢’Š)h¢’Š(¥¢ŠJ)ih¤¢ŠZ(¢’Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢ŠJZ(¤¢–Š(¢Š(¢Š(¢Š(¢ŠJ(¥¥¢ŠJ)(¢––Š)(¢Š(¢Š)h¢Š(¤¢Š(¤¢ŠZZ(¢Š)(¢–Š)(¢Š(¢Š(¢’Š)h¢’Š)h¢ŠZ)(¢Š(¥¢ŠJ(¢’ŠZZ(¢ŠJJ)h¢Š(¢Š)(¢–Š(¢ŠJZ)h¢Š(¤¤¢––ŠJ(¥¤¢ŠZ(¤¢’Š(¢ŠZ(¤¢ŠZZ(¤¢’–ŠZ(¤¤¢Š(¥¢Š)h¢’Š(¢Š(¢–Š(¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢’Š(¢Š(¤¥¢–’ŠJ(¥¢ŠJ(¢–ŠZ(¢’Š(¢’Š(¥¢–Š(¤¢ŠZ(¤¢’Š)h¢’Š)ih¢Š(¢Š(¢’Š(¢Š)(¢Š)h¢ŠZ(¤¢ŠZ))(¢Š)ih¢’’ŠZZJJ(¢ŠZ(¢Š(¥¢ŠJ(¢ŠJ(¥¢Š)h¢’Š)h¢Š(¤¢Š(¢Š(¥¢Š(¤¤¢–Š(¥¢Š?(¤¢Š(¢Š(¥¢ŠJ)(¢Š(¥¥¢’’Š(¢Š(¢Š(¥¢ŠJ)h¢Š(¤¢ŠZZ(¤¢’Š)h¢’–ŠZJ(¢ŠJZ)h¢ŠJ(¢ŠJZ)h¢Š(¢’ŠJ(¢Š)ih¢Š))(¥¢ŠJ(¥¥¢ŠJ(¢Š(¢Š(¢Š)(¢Š(¥¥¢ŠJ(¢ŠJ(¢Š)h¢’Š(¢Š(¢––Š(¢Š(¢’Š(¢Š(¤¢Š(¢––Š)(¢Š)(¢Š(¥¢Š)h¤¤¢Š(¢Š)h¢ŠZ))(¥¥¢ŠJ(¢ŠJ(¥¢ŠJZ)i(¢–Š)(¢–Š(¢Š(¢Š)(¢–Š)(¢Š(¥¤¢’–Š)(¥¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š))h¢’Š)h¥¤¢ŠZ(¢Š)(¤¢ŠZ(¢–Š(¢’’ŠZZ))(¥¢Š)h¢Š))(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š)ih¢Š(¢ŠJJ)ih¤¤¢–Š))h¥¢ŠJJ(¢Š)i(¤¥¢–ŠZ(¢’ŠJZ)i(¤¥¢–Š(¢Š(¢’’ŠZ(¤¥¢ŠJ(¥¢–’Š(¢’–ŠZ(¤¤¢ŠZ)i(¤¢Š)h¥¤¢Š(¤¥¢–Š)(¢–’ŠJ(¢–ŠZJ(¢Š(¢Š(¢Š(¢Š(¢’Š(¥¢ŠJ(¢Š)h¢’Š(¢––Š)(¢Š)(¢–Š)(¤¥¥¥¤¤¢–Š))h¥¤¢Š(¤¢ŠZ(¢–Š(¢’’Š)h¥¤¢ŠZ(¤¢ŠZ))(¥¥¢’’Š(¢Š(¥¢ŠJ(¥¢Š)h¤¤¢ŠZ(¤¢ŠZ)i(¢Š(¥¢Š(¢’ŠJZ(¤¢–Š(¥¢’Š)i(¢–Š(¢Š(¢Š(¢Š)(¢–Š)(¤¢ŠZ(¤¢’Š)h¢ŠZZ))(¢Š)h¢Š(¢Š)(¢Š(¥¢ŠJZ)i(¤¢ŠZ(¤¢Š(¢––ŠJJ)ih¤¢ŠZJ(¢ŠJ(¢Š(¥¢–’Š)h¤¤¢Š(ïERÑE%QE´QIE´´RQE”RÑEQEQERÑIERQKKE”QKE”QKE%%´´QEQEQE%RÑIIEQKE”QKE”QEQKE-%”QKERÑE%RÑE%QEQIE´´RQE-%¨¢Š(¢’Š)h¢’–ŠZJ(¢Š(¢ŠZ))(¥¢Š)h¤¤¢Š(¥¢Š(¢’Š)ih=)))qÉ£œrh\ÒÑEQE-QERÑE%”QKE”QE-RQEQKE-QIEQIKEQEQIEQERÑE%QE´QIE´QIE´QERRÑE%QEQKERÑE%QE%RÑE´QIE´RQE-QIE%-RQKKE%%RÑE%QEQE-RQE-´”RRÑKE”QE%´QIE´QIE´QIEQE--RQIEQEQKKE%%QEQEQEQEQKEQE%QE´QEQE%RÑEQE´QIEQIE´QIE´QIE´QERQEQKEQE´RRWÿÙÿØÿÀððÿÚ ?èë£®ŽŠ(¢ŠJ(¥¢Š(¢Š)(¥Zr÷¥^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S)”QE””RÒÑIIEQKKJ´«J´êu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S)”QE”QKEQEQE«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGL¢–’ŠJ(¥¥¢’Š)i(¢–•iV•{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtQE´QE-QEQE«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2™EQIIE--QEQIIJ´å§-:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠ)h¤¢ŠZ(¢Š)(¢–ŠU¥ZUïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2™E%RÒQE-QEQE«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢’Š)h¢Š(¤¢ŠZZ(¢•iV•{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtRÑEQIE´´QE””«NZrÓ©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™L¦QE%RÑEQERQE«J´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑE-´QE%”QKKER­*Ò­:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠ)h¤¤¢–Š(¢Š(¢Š)V•iËN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢’Š)ih¢Š))(¢–ŠZ)V•iW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠ)h¢’Š)h¤¤¢–Š(¥¥ZU¥^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TtÊ)h¢Š(¤¤¢–Š(¥¢’ŠU§/zUïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢Š(¢Š(¥¢ŠJ(¥¢’’•iËN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S*:)(¢–Š(¢ŠJ(¥¥¢’’•iËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦S(¢Š(¤¢Š(¤¢ŠZZ(¢•iV•{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™L¦QIE´”QKE”RQE´«NZUïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢’Š)h¢’Š(¢ŠZ(¢ŠU¥^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2™E”QERÑE%”QE«N^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢ŠZAœ~4””´QEQE-RR­9iËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊe2Š)(¢Š)(¢–Š(¢ŠJ)Vœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢Š(¥¢ŠJZ)i(¤¢Š)iVœ½éVN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊeGE%RÑE%-QE”RÑJ´«Þœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦TtQEQEQIEQE-«J½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊeGE´QIE´QIE%QE*Ó–œ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦S(¢’Š)h¤¤¢–Š(¢ŠJ)Vœ´å§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑE-RQE-RQIE´R­*Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+ÿÙÿØÿÀððÿÚ ?è«¢®Š–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤ QKEQEQIE´QEQE”QKEQEQEQEQEQERQE-QEQEQEQEQEQERQE-RQE-RQE-QE-RQEQEQEQE”Q@8üh¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢Š(¢–Š(¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢’Š)h¢Š(¢Š(¢–Š))(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¥¢ŠJJ(¤ )h¢Š(£4QEQEQEQEQEQKE”QEQEQEQERÑE%QE´QIœQœu¢ŒÑ‘E£4RÑE&(¢Š(£ëA"Š(¢Š(¢Š(´€Ö“­Ò‘“Í.2y¥#4˜ÅÅ¥£úQG½hëKE™£"ŒÑFh¢Š(¢ŠZ(¤¢ŠZ(¢Š)(¢Ž”›¤ zLŠZZZ(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(éEQEQKE”QEQEŒvœÓY¶ÒŠfüša|šnêP}iTúÒƒNñKN¥¥¢Š)(¢ÖŽôRÑE%R çž È<ñ@Îy¥<šÍ RŠAE/^( š ÅÒÄœ abN!$ñOŽiã‘Í;µ´RÑE%QEQEQEQEdÛHÎ(Î*0Ä¥F°úSCšpcŽM87šP}iw ]ÂŒŠi“ô¦—¤-Q¼ƒvßZ‰¥‚uÝÏJao›o­P (2¦O52§ÓÕp)zRô¥¢–Š(¢Š(¥¢Š(¢Š(¤£Š(Å¢Š(¢Š)6æ›·'šLg­y¥ Í.:ѳ 8¤Û† !0¥ëN––Š)(¢Š(¢Š(éÍŒQQ™~n:TF\œ”Âù8…Ž>ñõÍ4“¼zç4™$uï@ÜGõ¥ˆþ´¼úÒí4»HæŒR◴¼ñL+ÏÒ¼ñHA<iði:ñHF0h<`ÐH8ÅJ01O^*ARv§QE´QEQEQEQIE´QERQE-QE”QE¥Š@(¢–ŠZ(¤&‚Ø£4Ÿxu¦ŒsIžôÝë¿o¯µ&õÝ·=}© íõ¥XÕsïBDª¡P(>ô»E;h”›©ýi7qMÏÍMÎI¤Í8ô¥ŒÒ…Å*®M(\sKN¥¥¢Š(¢Š(¢Š(¢ŠCA(¢–ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Šha¹†s·µ0H qœ•û“xË`ä¯ju>–Š(¢Š(¢Š(¢Š(¢Š) #Pi‡ñLÆÞ)1F(¤–âOJAÖ¥¤1O´´Rw£½袊Z(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢ŒŠ2=hÍ)àf‚@' ð3Q´¡[’»ONzÕio96¶ß/sÞ¢{€’m8 G\Ó$¹Uè Žäv¨î5(¢# ]1É¥2[Èã `°=Çj>Ùp²|ØáH?­;ûJÔÇ”•KÂãœÓÍÜw,ŠN8êæF•ÆXp}+>+áç¼î¿7Fì*œWCÍiXrx5z¶ëFŠ(¤¢ŠZ(¢Š(¢ŠCÒƒÀÍ¥1I9Í0dŽ{ÓAÍ)àf»FqBŒóBŒŒÐ=iاN£´b–Š(¢Š(¢Š(¤<Ò}½è4”¿Z-´4É8ÏJnôc€êbÍ }Ùþú¦†SÑ—ó§™ô§äÜH zqRcÓžô~¾”zsAaМSX×ï>ß­!eN>µ³"r[hîMW¸½sГQKp‰Îxõª3_àƒ .ã³Yw¡$lGqØž•Bm@d þ•™©\ÆDrŠ:Ž2k2îúmÁ$ˆ r2k>êþ@Á^×pŒ¤T~|lp¤1>”¡”œ ô©VDf ÇLÓÃ)!C})Ø4ò03NÁ¤ ¹À`O¦j3,DìóŸLÓC¦q½sõ¤•FÌ`úÔWކVu÷ëQÜ1•,0j”‘.rÒŽ2a\F`¾è@¬©åñèqH$!]¹é¸fš—ˆBzeO_­"ܺ! yéi^â`£ÍqBrMO.¥rè’y`BMK%üÅ~feêj¼ÓHÀms¯5Nk©Ÿ¼b=Iæ«Ks+µ™¾µ Êf9ÄŽøÇ­G!–vƒ»c§­G#K1Ëj-ç T‚û„Ó%S·ýÓM "ü»R›(É2Ç¥8Ûs™†=1JÖå›.¤7j™ òøŠ0[éš|vïœFŸ¥9-ß8Dæ¤`¯À'øzÔñÚ³¸Y03SÇkœ 0)©nŒän1p9éN°´›K”ì{Ó…´LÅKô9­JékfŠ(¢Š(¢Š(¢Š(¨%u ÈOÌ* ]w2†0ÎÞâ”t´ tõ t¥SÍ*žiTóRjAO¥Áô¥Á¥Á£Ô âŒ­%Ñ.R,qÁféY—:¡óŒ6ÛI]º¥5éó pHêÍÒ‘nˆCæH . IªVóÂ ãø…$wûcc.ÝÁ€\$—AÀxg8àæ™q¨‰ÂBÝÄgWGaéÚ´­ìP–h¤qØ•rTÇ#ŸLÓäùWåçnäT“[RHÇ‘š|¸6ªa›©ª³¤ò«e—€c­P¹Žâ~PîeáBŒqýj¤ñÜJróÆEÉæî•XªòÄŒUxcX¼Èû—$zT1$À³Ê§buÏsZÕÔVåQEQEQEQPOé^ëÁ÷Ä;¥IG%x>⣑2êÿÝã®[¦1ïD…ºt㊦ªí$Šp¿ÒªË<©Äi¼·¡¨$–E87UyÌb²‡û¥«.æYd¬ŒTÿwuQ™ägñ_lÒo¸‰~Gm½¶Ô‹5ì#÷R¾=·~”Õ’ê/¸íni¯nzY:Š?úôàuKÕ8yJ¹ÂÆ”}¾è¹ö¹;jÄi,#bùhOW<Ÿ¥>Ý'·R‹å®z».ïʤ…fJ©UÏVÆi‹ rnf˜±'Ž1MKhd ï)f'÷¤Kx›,ÎY‰àt©Þ DeS;ˆ÷«7XЦB¼xÍM4E–2…îj#Ñå QÆ\íÍUh[˜ã 1˶*¹È >÷–LxëÆ8ö¤1•—kÛ€1‘AFY•'NÔÂÛU“Ë`ñ¹Ü1ô¨Ü:©U‰”âlŸÿU1è!c`ñbß"¡•Áã#£Š6–@ˆ†FÏLqQEª9¤HÏ#1=9ÅGž„ïšWrzdâš–‰÷ÝÙ‰éÎ*TP‹…ÏãÍ[Š$…v #ÜóSÇÆ0£äæ™4 >73€?„PÜÙErÃÌg v)šŽkhæ ¾í£øsÁ©*ÍKKE”QKEQERÒ7"†äR7JM£=)»F0iªÍU¯CŠªñ…\F¹ÁùV¡+µNÞ¹íÚœ#CʽÆqBÀËǽ½HÈ—tÜ~”øáEÉQ´ÿ³Å>+H†H]§ýž)R;@úqJè{>Ù¥{oîî?ì–¥x†>\ý3Aˆ I'µ#ZBÊIoCü¨hŒ“èzSD¨ÃsíÊœtéP­ÌlwȲœr:T~r0Ëà‘íÈ¥P%B…Èç#Öž‚;´ò™ÈÊ€yÅ*„˜lf>¼u©#EEÂç©5b£ŠRsœæ¦Ž5EÚƒúóNéÒŸ´z v)sËgÚ“ËÏÞmÞÄp)6çïÃÒ”qÐøRª*}ÕUú Pèú )h¢Š)CHã*@ô¤= Óé¯JUå@4V´‘øÐ){bŽ”…é’i¬Ärp) À÷&/sÉ÷íH#æc–õ=¨ÙŽO'ßµ-?ëÍ--RQEQKEQEQEQEžÆ“§ZJ1š1Üô¥#ŠiAÖšPu¦í§(À§Nè)ih¢Š(¢ŠˆÄ¤–+†öïUº9feéçê#9,G>´VÈǽ2K.@S#èi­m>Õ"8ïVaR«Î¥A´:u>EQEQEQER qÍ´QHÌrؤg ÷³Ïµ!`¿þªcøÛòßÔLRÊ*÷Ç4Ò œò¡h`b€«ãžx4/œ®È\~n¿¥:³(`qýêPüá¸>ôå“æÛ Ø}ùÍ(p`ŸZy8§±Ø»ANc´dô¦¡,:`}i#feÜÃè)¨I\‘jZu:Š(¢Š(¢ŠZ(¢Š)¬2iÍf‚84˜=&=èÔÓ€ç“@£¡£½-QKEQE4ujbòòö©£ï±÷¥§ö§P½‹ßŒRKKKEQEQEQIE´QETp³²–~ <ØTpd,ç’Ç€þµ6=Å2ç’jJÓ©: EàP(#pÁæ•€aµ—#Þ‚20zSL`ðYˆôÍGä!?1bð–â›å(ääBx§¦'åÇ@)ÜíKE”QKEQEQEQE”QEQÞŠ(¢Š(¢–¥ÔT{ÓcPàÒ(Úô¥iÝé{ÒÑE%QE´QERQE-RQEQGáGáEQKE”(¢Š(¢–Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢ŠJ(¢Š)h¢Š(¤¢ŠŠZ(¢Š(¢Š(¢Š(¤¢Š(¢–Š(¢Š(¢’Š)h¢’Š)h¢Š(¤ÅŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢Š(¢Š(¢Š)h¢Š(¢Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢Š(ü(¥¢Š(¢Š(¢Š(¢Š(¢Š(¯ÿÙÿØÿÀððÿÚ ?è«¢®Š–Š(¢–Š)(¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¥¢ŠJ;ÑEQE´QEQE”QKE”QA'µ#ž‚æ€I ÒƒšZZ)(¢Š(¢Š(¢Š3š3FE-QKE”QE”QERÑEQERQEQEQEQE-QEQE%¢Š(£šNh¢–Š):ÑG^(ëÅ™ãIÒ“‘Þ›“ëH3šPx§gŽiÙ ·Ö“pÍ!4KœÒƒ@ëEHH¤Í:KEQEQEQERdzÑš)h¢Š(¤¢ŠZ(¤¢Š3FEfŒÑFhÍQš(¢Š3ŠCòŒ÷£¥8É Œ‘Š? -QEã½!8ëE&*3øRPNi Ï4Ps@æÍP}¨>ÔÞ”Üâ’“'!'Ù¤çµ.IéÅ.IéK“@àÐæ(Ç­>¤§QEQEQA¤ïGãGZZ(Æ:u¤ÀŒP3J(¢Š(¢E§ZÖŽ=iÖŠ;Rö¢Œâ:QÒ“§n´tíÁ¤¥¥¥£9Í ç>ÔcÓz69ÉéIœÞ=)3Î)sÛ94휚3Iº½¤/H^µ 8çšE#½ 4æ#niäŒg­8ãÐx¦ƒÅ ”´¼ÒüÔsF=E&=E£¸¢Œ M¢ŒRŽ‚œ)h¢Š(¢Š(¢Š(¢Š(éE”QKEQEP@=©0 ÑKEQA¤h¢–ŠJàQI¸v書u™¨¥”&Jä± ïPÏ(;A,Ǩä}¹ÆI$qL‹Œã½67.7ƒH¬O= J ;Ô¨3Öž¾ô¥1Ò”§¥)ZLô˜¤ÅIú “Ó´Öe_•ÙFzdâšÎªpÎ÷4OJBë´¶åÚ;æë‚ÁÐÕv”0 €ª3Te» †eÚ€àœš­,ý€QÛŠ®¾I}Ó¶ñØœœ~V ­¼â×ÈNH''éUâ–!2–~àâ¥c–/Ü{ mÌ‹,ŒñºcéŠI¥WrêÃt+Ž*96 ¸÷Ë­$Ñc “Ü’j™OŠZ‚nB±Â¦=:PZè+6à¸ëOJ œ.íÃè=)·qy”•Çò~”Â%æ}JgÈ iAÛT®õ8‘Jˆqص÷«’±ÇŒ÷ÅA-çÌ4çÚ®FÀ®Wvå+Û5q$ýÐ$o qŽÕm\y`Œv­:èëb’Š)h¢Š(¢Š)RÑE%RÑE%QE´QIEQEQKEÒÀÚ¹&«Þ\<»$÷=ª+™^%W¯sYò\Ë#„裭a\_\ܸRp£°¬©nf€' ¾”Ö,¨Ä•£¯5gTc?ZiÜ¡ŽETºÕ§ŠEDsƒøîüúS.5‹¥`«+Œpj Je`¡Ûv5N««™™Ÿ/ƒÃȪk<ó¹g%Îx$Õh¥šV%òF{Ö½ŸŸÞg?Âzæ´,d’ Å$àôSZŒñ©!úúÔ²n‘‹I""º¬{Ó¥•¦bÓJ¨ ¹¥y<ÂL³ÇãMbÅU£4»W¥1ÕˆY!c"‘Κñ¹ ñqJb)-™Ø€ô¨ãœ•PÌG8ô¦Ç1©,µ,1Lİ‹÷n1V¡Ó®ßçl»V#°¸#q©5'ñå¥eÛü\ÔŸeò0g•B÷9§y+úÙFÞø5 y$`;:úž„Uwhþës¨8ùºQe,=ûÔ"Ö?5eŽ1œÉÈ_£4<`OnqQˆG›½@<Ô‚,1ä7lð*T‹æ,{Þ¤HÀ$®Aõ­Jé«jŠ;ÑKEQEQIEQE-QE”QKEQE%QE¿…¥ÅP¾Õm¬å¶é&?ƒ$V~¡¬[XÉäÒJ{'j£wªAm0‡™$=@íQMzdÌaÓÎHäV}ަ׉FPœò9V{Ó0ÙÕO<ö¨¾p™LSÓj¨C•àw#Š€Œ žzsª„·ƒéNp‹Äa¶È>”æ 7*ƒŒw¬“§K$ŸwjŽsYÍm!lìÚ¹Îk=­\±m¸â´íañ€˜ø‰«1ùqŽù«‚¸§½XXž_ùiŒóŽÕf8$”rØpzb¬¬ Ë6ô¤û:nÏU­9mcÜU©{·ªw’hבƊ=r~€U©.eD؉"ŒzŸ <³Ê… ª1Þ™Ь Ô‚5 ª:ìÊœ÷LŠ`®È#×¹¦É “>aw#²ðƒëKquçgÌgfº(¤–q!%ÉfAPmÃb—=ý1T¶‡q±Kûš¬SÌo”ê{T±þå¹R×9©â³°ÊÞ¾•"7q‚­ëR³X”8ùˆÿõÔÄÇrTÉ•?ÄÀb¦&9¾ÿ¤SXá>WÉ#wzVpˆ|·äÝéY¯ÈÀÓ5£]jÒw ÑKEQEQEQEQEQHH’#:§ À}h,ò@¤.bi2ƒ4Ó"z`C6æÀóP¥ìFI76ÕJn³‚qzl“ Çc׌ŠIoc8!‡cÆErƒdCÅ'Ú‘¾à$Ÿ^‚šu8Ûˆ,Ü|Ý0Þ!ÈEù÷ºV6·5ÊËó[Ê+ÈŒãæ¬=jòèÊ LÂ=¼„àVN­spfP²6ÌtCЧmM:É äž¤òk>(ÞI $úõ5J(™åÜ2IëÜÖ¶ÅRß¼õÈã5i)wïõ«E>mÔÒmÆD¡Ý½Ûº1"³7¹âœ1Ã[ëMVl’N2;œÓKN{Žy¤ßŒãаƒ,¤(RzxúÔ‘ƒ#0OlÓ£Ø`žÙ©Á/+ $t:Gmï%"I;-N« +¸ÒuÀ¤k–q™P³Œ¯z’[É%|äQ„c4é.ZEU_·Ö–Û #aº½j)%¶Ú¢%þèëLy!Ú+}¥7¾ï+'±cD(ÎKð;3!Fl±R=3K .«ƒÐåøôíN’?4+Œ}þ)ÒF$ Á¾ï$TncbéQºÅÙIÖ˜ê:ÕyïR¼@8ùQOݨ¥¹X† ÃvP~íE%ÀŒrF{Jb_Äã%¿Ú¨ÅÒ0ç,}£(îO½XIšUÂþõH³3!UëR Y—b…ˆó'r½é0ûËòžëHº0üEkW[]-QEQEQERgÒ3*‚Y€Ç© °QËI½ÝuÏÖ£iã ••ãM2 W\úæªÉ9vX“ž½«2âùãf>ib}±éTfºdlï$ƒøU+QÙ™°G ÍQ¸Õs!rB‘è3TæÔFíÄ€j8ï<èüÐççîÔKvÒÆdÜpOnÔÔ¸2&ðÄŒöªW3I¾XŽêj¬ÒÉ °$ŽàÕifx 籪ÇP¹ó‹)-ê{T&öãÌ$bÞµÛn •‰oZÕ·2¼q<Û·IÈâ¯Ãæ8Í'. ÍhE¼…óIÆsV êdžHÆÒ[£T«õyGÍpw?Ë,­(Uã&Ÿl°ƒBÍÐŽ©l¢µ”bmÑ;teã5-¬P:‘&csÐŽ3J,ãPÎ×oîM;û>Þ5wk³œç=©Eœ1†c9¨Ö9n_÷I˜úoaŒÔ1ZÏ{!0Gû¾›Ø`… –åÏ–¸ŒÍHmL2Ïñ†8§Ë§ù7ÏqÏËÒ¤{E‰¾yGNx¨‘íwúX•½1ŠVÖ0ÒD‡Ó#ÏïC{SŽ7@¼{w¦0Èßð=úÓX §J†0ÆqËS“š‰e$"žsëéL\—ä¹èjÔ~tæ8äƒV!2ÂØŽNjX‹ÅØúÔ“J%%[¨¦¸v€’eXdÚ¤šeÛò¾AíTZñqˆ‹6O$œU8Á– œžqU|ð2'<â¦K…x÷p¹ê:í©ÄêÑç€1‚?»S U“Œ_j£wd÷™cÉÏëTîmšW.€œ÷ªWí+nPyïPGhë Ç®j%…ƒàŒTQÂCEjÁn|³€ªÝ9ëW µgSÑWøyëW¡¶fp?€õub‚Ò?AÑGZ½´v ´òdáQVÒX»r;¦®ÖõjQEQEQMf ÔÀf™$©ÞÝø Ó] œþTžbÿ¦¸1ÃséÐÓ~ÑfÉôª÷Ð e*\’½ETºÕm‚2ù~ctò*¼÷𪑳yô¬[V2ü"¨ôA“\ýΠŽä„Tèµq}1À 3ÐQö‘v…-÷;ãN1M2‰ÆØ²íŽIãÓ(qX‘šÎ0]1eòòX㓚¨b˜±]¼ýj£E1ÊëïWôûy`¶š'#÷ r;UËEhm¤°7ãŸJ¹j†+g‰^õecÈ@Ñ—@:¿LÔ‡]ÈY@êÝ*^>]É•©©Ú5“1GûÒs¸ JÌQþó9ÝŽ"¢†ù *–'Š6fy\à`qÇÒ¦¶xU™¤û*x’îr;㊊[±æ!ÛjŒ/Eæ’{½ÎËó£Ñi³\å™~b@zT"ò">y¥^ƒÔ ƒí üS:ûu xÝ#AÚŸ<Ù †2+t§ÿ®–IwË)ÒI»%Ç¥:n] W £ÓªÔ±Os³(ázuZ‘$ŸoÊà(î;RM¼±ò— гw¤š¤B^V|Ž 4Ù¢Ðï¶G95BNFÅQ‰6ÜpN5HØ0¦®Ç{‡Ë(þé8b)Ô¶Ý ûgÀTSh¡Êᇣ ~µ LJ˜ÝH®=m?E6ŒÄü¸{ñLþÎh•ÿÑÔ ä’Ý~•VM*æv6ê9ûÙÏÒ¡}>â%vò†`ÝiðÇ(„,¦cø¤ŠÞåˆ"&ôŠ#†v#(@>½ªÈ‚Xâ>\q³vµ^K;˜£&(£g;\Õµ·š(‰Ž4b?…©ÊÈ­•px±z¼â»¥€&¥DÆ@»¤iô¦°–Yv#ØúΠy%–\+$wíP4$˜+BºšÝ¢Š($(˽#ªK°QêMÇhõªÆgbÌ yyÇ“ÿÖª^Ì]Ùƒm䚪×rlrMAqpë‘–_©8ªWwÒä¦]sêN*­ÅÛÃs/ÔñT%›ÎÀPz’k>Y<Ò6ƒé’jœ’yòçê}jß2{upÓ+tnZŠè¼±*Œy€ô•Öéb ¸Þ8 UÓn· °dc’UV´›õ^Ž@ÖÁ†9z®£ƒ°ÂàãëPOj ¬ÊÜ1çq¨g·F ðOsÅC,9cÏ¢’Þ5…÷MÇû½*) ŒDÛ¥ðÎ*)bc;äŸJ­ ¬Â@T•_SÓ^8d1ÓôÅAN$ȵ)·T•’_ÞmýÙÅHaÈÂ_œ¨è¼ÔO±$Ë=†ÄT?è¿1’žÙ8ÇåP³|Û¢ç¶jXæš#dF5é³9ÅOÔÖ±q; “úÔñ\Éo|˜öö dÒW†]¾äSÉ‚»O® 8ëMŒU÷§}¼°*1»±¤:ÔÒ&ÐFþ Ž(:£ÈN[Úš‚âA¼ÈãØž*%üÃqš@;x¦¼”dÈÀzT˜(–O~E8ƒO!ãžE8¤ä?=îU\6ï‘sž:ŒqSAb\2¨=ºŒTŸmʤN*³K=é-åÆzpjœ·W7r òŒž3Užyî$r‰Ú¦ÄŒ‰Ã„ªäÿ:›ì? srO Ïó©¯È LOuäÓÈ‹åß'=yÁ?Z«/•Ú®ØïÛ5VSD…cøŠ¸ÒªrA\ôÏJ饹H—-¸g¦áÅn<ʃœþ"«¼¬X푇ò¬Ù¯¥2 Ágª’\¾üG'¾J¥2œç¨ç#éUf¹y×l›·ddç9ú ¯$ï2í|†Ï'¶)$Èo®pE2K†R1¸ ucNÊF3n)C/îäKÿ3u ] Ód†“øX¶ö¥"T*ñntÉëPùM½ŒE“à u÷ÍB#w‘–"'ñ£;¨Ø#ÍJDq«,¬Ï·©P9Ïn*b-Ë3îaýÐ:zT˜Ž<¬Í–_îŠkIÌ·² t÷4ÀÐûÁ'—ýÕÆi™…ó7íþêŽk2úúe‘ÖÝ–,qß&ª]\•p°Déç5RêïËb`žžµ$ÍâYádVï³5¾¯s„tØ­ü[j{mRU6ƒßmj¼³>Vå÷ îni4ב[¼†sŽ*óM#¶Ô‰Ÿ<ò8¨Æ˜Òep…ºªëHš4òÒ0‹waÍ5tÙ\’ͳ=©ßÙ‘©“ÂÊ?±ÔC>;À?NU99lvÆ)éo(w‘¶‹ŽI¬³ND}|½¸ÇãR¥´aÉ'È?‡×tÿ–h1î1š‚y Î!A´wÅE,ôE Œg sÏaÒªÈñ”“ÏeªÒ˜m=û P­‘†c´ýÚj±$p8Æ;R)ç=‡Çj’Y›!v·ÝùBŸ½õÅM5Ûª§Ë€¿åRËrHªSŽ€u¡2g]Ç’£“Q5³:rêÇSQ´Ó–ç¯hŽÕ<­ÈQ£Ž”%ªy&@êç¡VÈÇåBÛˆ²º±î Æ)cŽUB­"2“÷DŠ@¥IR§øE5c&©ôëB»@J˜ÀÔг4«GÁã9‹å)O ΡdhÕNq˜ÓÑ„ ,»OC÷åO\MòºªƒÑ XòÚ&#œìçô§y~S‰®0J_/É#fÆü1H³HY±æ^ý©ë<¬Í„ Ãß"¤;ÂäŽ}©­æ1o<*w÷ü* |Ç,eUFõ=jw¹c Gz}´+!`rÁOVæ¬iÖ"é› 6)䑊–ÊÓÏfämSÖ­´yM¨Åµ«>ž< °°vaÁ«óZf=±œê:Õ9­çq ö9¬‰tëÒFØ[9ÆsÏÿª³žÒëp+¦i$´¹•ËŸ-rÁ$Ó›F½·2¢çûÍCé—s6æ ¹ã©Ò3³æDm¸ãÒ¦¸¹i¥ýò0P8¿Z³,æi0á‚ãØÒ6ës½ˆÁ<©¨›6§ÌnTž¨‹}Ÿ÷Œ2¾†«Kuæ¦è¥ƒ» ô?¥U¸›zîŠAÁü…A<Å€daÁéVÁ% ’Á—%ú󚸆”¬‡*Ë’åsÎjÊùBRŽs¸»Ò«Í½™‚±#¨ÊÕ)ÕŒ¬äg ãNUo7)ЂIq#D›ä(•Jäšžgh“tŠ»ø`ZžW1.\ýFi±[]˱ŽzäõüªK]>öbŽÈª‡’[Št×2•&<)ç-Å[ŽÊ$qæ7«V¤\ó*ù¯×' «ÑØÆï~sèz ŸÐ ÀU±c¤i@¢¦F1û´éHë¹qÁïŒSf‰]1°69Ž)$‰2cV Î1P¬‹¶ðWqÝŒtªñOºH aÎà ð)±Ê‘³#œä*qê:Ö®u޹7¿ã‘Q´Ãdè*´·±ª’¹88$TOr€pIÅgÊÉ$Ü/Íž£­`Ü̲ÎDjzç>õ“<ªò>ô«±äðݺ˜¡Ï-ÊŒðx¦ äØÚ)7GÖ³;q–?Ò£vTœ÷'Mv?1'×¥&æŸte\·eAÇãNŒIrZ$Gfì:tãËPÁ½u«-bD\-°°ù5¤ÚDÂì‘ó5xéó,@BzŽA5—q¦›y7y²#ŸºAÎk*êÒ{)þgu~¹ƒY³Ãsm/ÌçqíÖ¬‘/Èg`«Æ[wS[Í.¾i*§¯8¤Ý)•L¤ªþUm ʤ@Oß+‘ôÎkJÙÄ`[ç%ögÓŒæ´!_1“ÉÜW?JwÙæ!œŽyùzÔ«¥ÜI¿Ì)£/ZzÙO ;™AÏqÖ˜,’Ó~™¤M BróªóØfšºT‡9•WðÍ=løåvöSÅ¢ 9’áØz(ÛŸÆ¥Küó±öQŒÑöI;n ¯lzS?²&W!.B§QÇ8úR}‚uc¶e Ø÷Å9S?!w'?¦ý’xÙÁ€Èà`9åëMò$Rû¢.øÀJ–ßr FFrN:ÕÝ71Â!hrI\V¬ÈH„{Xr~^µ5\«QEQYd©`Ì6s\™HÀò§2k äWmÁŠŸ­(•¢”¨øOSïO¼@°+ƒÆ æ”HÈ ##ÐÓ$u$7’„wŸzŽI°&% vj'tïÛÞœª­´BG›ŒÔŠ‚ˆKzóRª†Ë$PÁ­¾o5áêieí0ÆTÿriZßæ2/?Ây§[¨ží%ð>îjÆ›¸½I¦làqº¬YGç݉¥9 p ií]Ïtô­cÓ¨¢’Œ$àQŒToX¾lrH~>µ Dò¨¥€êj4ä`-޵4¶v $ä(µh>‡ç2´“•ûª:U—Ò|ÖVi Œtj’Ùãó&´ím¢´„G á{žäÕè ŽÞ0±î{š}KRR2‡R®¡”ö4ÙbŽtÙ*SƦÉL1"õQì-æ@pPú©¬×Ñí.£ß†‰È*j”še½Â%“žÆ¬ÃCH× ?3ZÖñ[B"…@Q×Ôš·1ÛÄ#‰p¿©§Ô•%QEQEQEfŒÑE”QKEºÊÐÏ+¯tldå>ÈVGŽwaÆU€È5ƒöc¹’F+Gz~Q D’egCÁ_¼}©vFѪ´Ÿ:ž6õ4ÑÑI|°ãަ‚{8w@3´{ÓŒ#|ªdî }ÑïN0ôÝ -Ü(éõ¨¾\‘$žç¥ !W“Üô¤T ò¨ä÷¨Þh]"Ì9ž´4Nªdäž´Ù#Fˆ€w&²Z{Ûw)¼¦9­g‰î`bªÅH9ª"æê 61ҮǮߌg=9«ðø‚õØøàqÍ][¹U‘O½J5MNQòÿïš”ëÚƒ•ò§^ñ¾ìJ*h[QrLó1“ÈSîþs‰eÚ1ÈÎ)º»—‰(Ç=…;q ᔑÎ3œÔYw) GaÍE—pBØôæ¢yr‚Xp2Áü*7o‡Óüª)7ïkdöÅ\‚ÅäùؘÔô©­+-i×Ì•ŒiŽu5vÛL–TÝ+_AV¢¶…9 »ÛšÕ¶Ómcn#»з²·ŒdG–õcSS‘´c¸éVŒ0 Æ0{Tæ(ÈÁ@G¥*£ œˆ±®ÔP£ØS•BŒ( =©{ÒÑEQE”QKGÒj(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢ŠÍO>kvf“ËP R9®z4žkI%’O-~SÜŸJÈU–HGp¨>ïøScbB±ÆÌW$ú})‘á!]¨¤•å±ü©‰NÐr¹$Ór7 «•$’O<Ð…x(¹SÉÏ<Ò) ‹‘Ö°î¯ç‘Ébôèk&{¹¤rrW°Åf\]LìH;yÀ¨•®2 ©v= j e$I÷¨•¦Ü:“šÓnD±<‡㨫k` ÄïžÂ­ˆË`œçÒŸµ«2¼xîËR$[k«ÇîV¤HS8dtǨ«Ik<Ïò©ÙˆÀ«0é·wNAXû3 qRÇas;‚¿*„ŒTãMwÀ¸œºŽÂ®Ç ?é7‡ «i¤d>mþ®E På ïŽkR X-Ô¢QŽøæ¯Å0€#@1ÆMH}H¥Ú¹ÉU?…<…'î®GµÍ/ëíE%RÑE%RÑEQEQEQEQIE´QIE´QIE´QEQEQEE$ ’F6Š­=œr€ 0G ½*) Y0Nv¨ÀQP¸;OÞ qîŠÏ¹Ägirþ誗 â3·qööªAH$&á“øÊ *ä a“ôÍg…•I ÏëNK%nŠ‹ÜàsSÛéwMÀ½ÍIŸ5Áù°‹Þ­Å§Á rçÜñZÖú-¬ Wï“ÅhÁ¦[CÕK·¹â­*"Ÿ•@«±ÁG÷qªÕ”Š4ûˆ¢”œÔ˜ç?Jqç­`z 8¢Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¤¢Š(¢–Š)(¢–Š(¢ŠJ(¤u6¶qÖ™,I*…uÈÏ­#¢ÈqœRœ` jSxb;FÕãå¥íè=©ØÇô¾ÀbŠ(¤¢Š(¢–Š(¢ŠJ(¥¢Š(¢’Š(¢ŠZ(íEQEQEQER´QKE”QEQE´QIE´QIEQE-QEQEQIE´QEQEQEQIE´QIEQEQKEQEQIE´QERQE-QEQEQIE´QEQE”QKE”QKE”QKE”QKEQE%RÑEQIE´QIÞŽôQE´QEQEQE%RÑEQEQE”QKEQEQEQEQEQEQEQE%QE´QEQEQE%QE´QIE´QEQE”QKEQEQIE´QEQEQEQERQE-RQEQG4QERÑE%RÑEQIE´QIE´QIE´QEQEQEQEQEQEQIEQE-QE”QKEQE¢Š(¢’Š)h¥¤¢’–Š(¢Š(¢ûÑŒõ¢Š(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢ŠJ(¢Š)h¢’Š(¢ŠZ(¢Š)(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢ŠÿÙÿØÿÀððÿÚ ?è«¢®ŠŠ(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’’Š)h¢Š(¢Š)½©;QJ)E´QERQEQKE”QKEQE%QEQE-RQEQERÑEQERQE-QEQE%RÑE%RÑEQIEHŠZ)h¢Š(¢Š(¢ŠJ(¢Š)h¢’Š(¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¢Š)(¢–Š)(¢–Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢’Š(¢ŠZ(¢Š)(¢Š(¢Š)h¢Š(¤¢Š(¢–Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¤¢ŠZ(¢Š(¢ŠLŠMËëùÒdzÑKKKEQEQERQE-QE”QERÑE%RÑEQEQE”QEQE´QEQEQE%RÑEQIE´QMf„µEq:[¡w?EÉeHSsœ{UioâFpã¸EPŸY…T húQU%ÔâWh*zŸJ±¬¨6 ¾¢¯Á*ÏÉ_ÔU¸Ýe@èÀ¯·Z}KÖŸERQE-RQE-RQEQKEQE%QEQEQKE”QEQE¸£bŠ:QLgƒŒýáQIpÔm¤ýìS@¬S´Ÿ¼)Ùª\ñëž”üŽ¹â–‚@c´ Ê2N&Gb?:MëŒîö4?x{sJxP ÏJ26žxªWw¦ªãv3Ywº£DYcÆ@ª77Æ<„ëXÓj· *Ä0#Œðkõ[••Y]‘žµ›&¥*È„1¬¥éÔX¢HTmù”õÿJW»’þB<ÂF2Aê?úÔ†åïXáÛçžENvž7`Ž=}éê‹À*6žøÇãR„SƒÜÒmhÕ¤…¶²žÝþ´!–×2Àø*{wúÒ){aæÄßtô­.X·œ)0ô5ÐZ_Çql$l)èÃÐÖ¼7I,*ìp{Ô¡”ôaùÔé4R}Ù“Û5*ÈÑÇçJp½HSNgTêê?´¤¨êÊ?BÀ04ß17ì 7h.¥¶î©iô½©h¢Š(¢Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¬É5 2yÏJæ_X˜J$C–‘ÐVjŒ$ “éO–þ=€Ž¹àÕ‘®4§k¡PG<ðjtÕ § j°'Ê Å6‘뚺oQ¢Úæ0¤c¯ùæ­5ʲÅv‘ÜÒ,ñõãÒ£KÈ£ DŠÄÏÕ¸q† qÓÒ£–ò ᘑݱÀ¨î/íØá™ŸÔžƒè*9®áÏ$“ާ ªÏ~€`縪‘Ô@aî=*¹½þ¯µ9̃ƒ»ÈùºÒË, …mØ›­+¼°I㦠@a–Y7n§9ÅA弎ÙüÇ­@#i ôïÍfj¶Î©ÁÜ»‹b¨\ªÂBpr3š¡uˆØ&3šŸK´ÄÑNÛ„`‘îúÕ>Ÿoû䑲ç§z³ao†AŒqZ›dóU]°rd~Uycv¸Hä|BsW®;K`})ß'šËæ‡~Æ–AÎÑÄÎè8w= ö¥}žk$d²“Á4É Æ›ò'ŒÔoˆ£<Æj7ÄHx4Ñ!+ƒJhŸaÊ‘Mû§¥)¹ßRœž†•l)ÎzÓžäºWœõ«bUÛ•`B÷ϵ_Žë(TnúU´œ?tTñÈ$PGLsZ–÷ *nJ½¢D-è)àç¥Ja• Ó†È ÒÒÒÑEQEQIEQEQKE”QERÑEQX¯qoËà9©®'ÌOÎÓÖ¹c$IËÓ¥Ce¨5ÝÿÙâˆ$e 9çñ©le{›“'ÊTçŒÔ–2››†Wæ'µMö˜<Ï%Þ2Êz…o­JÒÅ¿ÊwBTö8Sõ©ZXËùlWržJæ"¸ùXõÜœãÚ¥/\|¬}WœT»£#)÷™Â•S³Û×ëJ+´8NG¿ZP¹M …ö5³O™›w^€€ ¨º€wnÉ=0j?$ç9'§cRíÚ*‘îy¥*à ƒR3ùRÀ…9Ç­2P L-Ü#yÔI.Ý¥`|ä®)%#i±_REQ:d³ÓÊX·R¥Wû ’ÎùÏsüª¹²w!œçÞ¯*Ò0…ðÊ*Öôµ@°ëVw¥ºªä´ñ(–Tq"vÏ5"?"ÌÌQ×5"7™ Ê:“S:G22«”Ò¬HM*±I=;TÒ$RFÁ èzVuΙ%ÌŠÉp‘íãk¶qøU°7 Ü$[z‡nµFK&¸}É0@8;0è·±€Âa ÿf•ôK•ÁŽhåûÍ ¤Ü!f߃SC§^†ù²ÇÕ>-&ô0ù3RG§]ÈÎGz³åM@mÈî1‘R½¼¶ñ€SŽàŽ*f‰àLcŽãGpüaNÁÐT"ê\àƒåŽ1P‹‰3É;}*Ä7QA&2½CW,õF ĦÞÇ¥Y¶½ B¶@^Ç¥YŠU•IV±­[K´ºF?(!°zÕûyÖu,0zSðjÇåùÔØ¢ŠJ(¢’ŒÑKEQE%RÑA¢Š(¢ŠJ(®{Q¶;±¹ˆäÕÆÞ[`.ÞXýáé\Õݸão$õ¦iÖ÷¬á@1óuÅ-œSÂ&|²ã>”ZE4 S´°ïéYòi×%ȶs×Ö©µœÅð“üê«ÙÌ\ðy=jHkwÚr¡§¢I àäSâI!89±m)t” ÷õ­$@oÌUødx©ƒÜ.=Š09ÂyäSÃòŽçŒÕkÄšUTWÃ/\r­Q\ù’¾eêTði—ä)ÁÅ>Ú)V-³ÉæïzT#±+ï÷ô§DåaÛw½R¾ÕEåz¹çNêý û¿Äyªwwìd\㌞ÕZÖÊ{Â$™™bcß«T0ÛI9Ý!!OëQCm,;R@<â·‚¥¼" przûÖÎèá„[À 'äõ­bÉbG×'­G1Iaò㢎 G1_'##Ù°cÏ ŽÂ±î/$É1Æ¡Ý$dšË–âC÷QBŽýë6Yä?uFÐz÷¤³Ô&ŽäXì8¤¶¹–9Hù†}8¦Û\Ê“;¹ô5¥6©<*<ÇT?­_“U¹‰@óvŸÖ¯I©M¾ÓúÕ&ÖåVÂ!?ÄÜUVÕgÝ×y=Úª6©.ü˜žæ­Z]5Ø‘ä_,¯*kišè;Iò‘Üt«Ó•vq´J˜Jñü¥‘ûdóR,Û¹[ñÚ¤S*X?‹N[åI:íuô5ZK–G'vÖSÆ V’á£|ç‘R _{†<1qO:“´òÊ@àƒŒRÿh3H,¤ƯEª9 zÕèuë”Y}ÈÁüêäZ¼Ë€TIøsV¢½ŽVÚw!ô#ŠÐ¶Õà™ÿyº3ŽUØ5¦?6TögäŠÒRC)¸¤0 hÚhň¥ÇÒ“ ƒó.­ÎáUf¹ÉÙž®zþ½eÞêÃ&+6 ßÅ!è>•BçQ1Û0'»öÅžhù|J½ñÚ«Aª]BÙ•¼øÏ^9 7óÄ߼ĩëéV‘–D ‡#ßµmÃ2\B$Œå[§µiÇ"ÈÐäÒ–ŸN¥¢Šç/ng¶l… §î·ø×u,°ž÷ÍÜI,MÇCÜTÚ³«ƒ .~`4ß¶ÊÉÞ¹éŠ`»›#?8ô­åßÊ‚3¸öö«ˆùOÝêzЏ­ò®á·äÒʉ0%œñ‘Ö–EŽPwAêGZRN½=iRÍQ«| ¼JY¢Äï»÷`¸ñ“Oû:,lŶ¦G&Þ@ù›³«pÕ!ÞUYXÄ€à51’ÍÒÐd(¹÷§ôçosïOêq´w¤m¬IEã¹íMr’Š1ÜÓƒó*€=j©Ó¢3³˜ÉsÎ:UͲ™X´xcÏ<Pù æ’T=êÒ6Ü«ƒ/j³T•qŸ—Œb¬F å[’Gã±A’Nåcׯ4Ejb$RÝp:Ñ T•|·¡¤tè ëÍ!P8bëH@û¬*§-ª¹2CP<ªŽ}»Ô/#Q}•<Ó,ŒL€|£¨Ä*¤»gxéLòUK9S¾™q¦És#J&â™%›LåÃç=ª9,ŒÌ_~}¨D;2±>‚œšh,71>Ù¥M1eëWí£‚Õ6Gž¼®rI«–ÞMºáä@$æ®AåÀ¸AÓÓš‘œ¹,ÊOlp=è–G—b £ Vg–'Ž˜ÅR¼·Â—TV?Ä1U'Q‚Êsóg½U˜q‘ƒY’Ÿˆö‘ê8ªo»wÝÅSp徿­]°BÈdulƒÀfÙ7&æBMY¶L®â*ÙÊôÜŒ:O ©ÈÊÓÙvž8©Qß³•Ïl⤎âDáf*}3NIÙxcñ¢Y¤Œa¥bǶid¾™Tƒ!$úQ%슘ߓUÚêf8Y˜ÏZ©%ÔÏǘÛ}3ÅT{¹¤8ÞØô&¬Çrê»W8Ú9§¤ò€HúT‰<€`>•,2M#! @ራo”“#cŽ*Ì!¥É•ãµKo4Q4‰$£9Ï+Zº]Õ½²K³îÎJàUûˆa‘ä'ž¸©å¹ßòç©UÏí;R3½±êG`_AŒäã8éÖœ.#$ ðyÉéO[èY€Œä÷§ ¨ËB3šÏ0oÜ%^¦OÖ°Üe¼Ï—wCœf²š%ó03ïLKh!*Â2séQmŽ¥P{ŠŒªE‚Š õ© 1l¸ëØÑûÖ;¤ž¹ ,¤îpyþTÿ"_ùe€Hìjqo!ÿTGLœT¢#ÀqLu”º¡V$žQÿ»³­<Ç”4oƒ…+œš{" "PUÇAÚšX,L¯2 nW“Lm©nU¥Û¹z"òi®U *]¹ì¢«\[ùö»c•Ë}Ð3‘PI–ÙUdmåʾžõ‘ UW%½ªÅk.df·g [Ü#.]½³Q%¼¨ø,ÙíšÔùy‘Á?ÞÁö«à®ÏšObpjèd –cÏ\Ò»ªœ iAêy­,{¶Æ¯(<b3íEgöÅ`xXAû¥ø¥wÎGу÷Y©Ì_ø¡(LѼ„g©íQïÚ2Sÿ¦e”r„P)[2(€>g8ëC±˜×åQË’:Ò1ó~\•QË”é Æ81²žäôé>Aòº8nùéNv ÷XlòåÆ$—ëBZÝϻʋx>¼Î…¶º¶ÕÊŸïp(ònT„(Á[©O›¦Âõ#G&Öäì9Å/Øn•ÂYP¦žæE䣄Õc{¶*ż²¾L€äzT±¼­–98©by’sVÕ]÷¯|óüêd†FVe…俦HЕÆ­I¸Œr±ºô#yG^„bƒ#¡ÎàzPg”ãÌ‘ˆìŠ‘õ©JXvP¢•®çq‡rGaF霻§|5Bg—tŒ£¯5•À$³ VR»€ù¸æ¤µÄó,nÏÀÍMk²i•¸qšmíà*Z1»nÆkem¬¬¶y‘.òßŒÖŽÞØ¨dPOñb¬ »‰ö«r\G>apËÛêg•R-û²;T%ÁlàvÅeÉ<³æ]Å@µZ{_šîOjµåùKnû š6;FyéšR¬¿(Ï=)‘ùóLa‰†ï3 Û~•%¢\]ÍäÇŽ:³ ãéO¶Y®%1¦XŒâ®ÃaJíǹ<þ•­aTÈxã­hE§$`)lã©ÅN`‹1=Å\û¾èƒcÖ¬}žènj3enÛj)4Û]§eº)=éi_–ÏÒ˜öKþ²0N1Ôž*&Ò`—ýbqŽ ¤ÓSK³\â3ŸRiN›nFìzf‘ôK\d³ªýhm2ß%€¦µ¼1¦e ØU¥´µFÚ.5 Á6ËŽÀÓ °Ü 0 碵X’êD 碓Í1­Ia‡]§Ó½ÎV”Qýâ)‘s#ä&Å2ÚoölÎÄ€vɧ}Šl¨ýê_ìkê£?í1#ã¦I¼Ó’x¨'‚XЩ‰·gýb¶Aü*½æŸ4œÂßVÈüª ›)#^c8þð9¨}²BÇpòØgóªpHa¸‰ÎFÆÕ[W0ÜÆí´&¹ŽU ºE_§§z—[XQ3ž•¡wr“ml:¯¸âƒ#Hϸ:·µB÷,ê pƒøª'œ¾Ð@Ú8Í+HH Ú‹Õ$÷;ÔGÙú÷¤šàȧʣõ¨Â¨É$뚬qœîɪç®IÍF̓òÆ™Îxæ˜CòŒÓAlðœþt,21ùP“íBÁ3tBiÒ…‡óâ¤KK§859m.ãf*Ä.X=ÃþÈéZ¶:!Itsß`þµ§e¥!æ9>•s `Ó² *…@ŽÂ´†x£ž›8?J©}§GvÊŶ7sŒäU{«8îX3PɧBåYÆN:Ôhvä)Œ•a×=ê&Ó!ÈdÊ‘ëÞ›%¢#‚ƒ2úš†ïMUoÜåxù—=MGqb¡¿vHõ\õ¨L(í9ç¡=+6[p€ã®yɪOÐNrsÐÑ·9ŽÆ˜yàc#Ö™É錊r.à?t¼3Vƒ/1€Ãï ÔêÁ“…Ž¢¢&XÓ'„¹4Ÿi_§Ö•äU\³)³ÞÆ‹“ Ç¢ÒKrˆ¹.Ò«´’H|¸,{· Ïy§»”EO»pª$·yh}É>”8HÁfð<8ÇzŽI#·ÉeA$p)¬ñÀß8 ‚2HâŸǺ(\¤8íWìÌSNÒD¡b¤ŒÒ­[–O1Ty¬Ð5k½%Q“œv¤àäc õprȨͼ·—>µ\ØY–.`\õ¨M¥¶íæ!š$–,®W°ªz…å ¶0Ç´ƒ×ª÷—6Âàý*‹Ë¿ ¤ÇáXrJ[ ȒRà¨-4:½ÓùÓý*0àpi^a8¥Þ 1O¹À©¡ŽypîÓÓkNÆÂiÈÜ6-hZÙ¼„u@_η ‚8#€qÔÖœq¤J@4íÆ¤ü?AIœõ£­Š(¤¢Š(¢‚ëMdñïHTµ ÖâQÉätoñª—v΄}Öêû§Þ ¸´IPŽÔñªæÆJK®2?:ÅžÖx¬È@ìÀdƲ巖3‰ѱ‘H™Ç8çƒÅDЬ ì;ƒLE1JÖá£<œ˜=éþFåëî9ëNòwÎpr*Fܬ mŒ†ÝÁëVZF…••„n§pÁÔåÌL¤Œ¼õëV ‚TÂÊ£Ô«sWøÜÛ…Y±êÊØ5dÜùðí´÷*yªò4qm;ÃnéÎMg\²ÃµüÀû»ç&©ÎËVÞw¿4©p¬pc )©vÃǸSRé‡@ž-¹TzžÕeÊ+zhþÅ$|ó€Þ‚¦µ²ŠÜ~vÆj͆• SäŸ0'ñžŒjÅž2gïmþ/ïUÃÓ¦k`mÀqÓ¡Ž1ŒjA@Î9 RÒÑIEQE-QE”QKEg(éEWº¶ó“1’ºGj£©iâæ"ÑëʰãwµU¾³Gº$£î‘Æ}ªŠYÝ0ÎBcûÕ™|ã;vm<îàVlz}Û ýÌuÍ ¸àGò îMRv$ü¼z¤îÄü¼Ðw†VWä¤Y]][´$®²SÍ=ðe2:‚Øì*IÌÈàn=À©$}ò`3íR+§CÇàS‘—¿ö§#/Ó“FÇ ÈG@(fpªî{JÇy£“Û}žêNV0ƒý£SE¥_M÷a(vâžšmÔ¿òÏh=ÛŠY,&ÛÌŠàõéSI¡ÜG‚Xzâžú<ŠFXWmmż[3ÅkéöžE¾×?)ëVÚ ‘~˜Å1 `‡sçÆçU¦ÒØFÄÊÁ#ëPIdB’\gi†0É‚O¼ÕG„ÆH#Ö«¼@¯^G­DD°Ñm#©V§Ã4¶Ëº5Œã¨qš|rËåN?½QÉ{?Í™7^«·ŸÖ–]Rïi!£B+·ŸÖ–KùÂ’¥ŽØ¦YêäÈ"ºïÑÀÅ.Ÿ®ï•a»18(ÇçE–ª$qÀÏF­ïü»ÖßÓ‡zÒúœ÷´QIGJ)»9$ŸÒ 6»‰.ü“ϨŒ9$–ëíJª`T‘D!\NjHÐF¸ÒÓéih¢Š(¢Š(¢Š(¢’Š)h¢’Š(¢Š(¢‘Õ]pÃ"›,k*m‘r´×E”muÈ5MtãüSþ µŒžl|÷§@¹æ³D;pÓ úGögûCg·øtíÿ¬7û´ŸØ|¯ù¾”õ°–G“ëÅMƒ ÞÊòöx©£Ò"Qû×Ü}…J–¶ñýØÁúÕ¨´«(¹n?ísV#°¶‹¤`ýjQÀÀÀ­¢$kµP{ T誣¡~‚—“Þ—ŸZvOzE™£9¢ŠJF]ÊE#}ÜSJg¾*¼öža$Ò¢– Ù €~”ÄFF'ƒÚ ¶·šƒŽGTPÄñ¸ô(ºµŠê=’ƒìGQV/l¡½lœ6>WEIukÒíq†ì³†ƒ72=‡JÊN]9›*ˆÑc7 ÿ|Ö”ˆbXÃ3…«fÚ/"‹Ìi6޻֔I寍\¶:RT”ú(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢Š(¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢ŠZ(¢Š)Z(¥¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š)h¢Š(¢Š(¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢–Š(¢Š(¢Š(¢Š)(¢–Š)(¢–Š)(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢’Š)h¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢–Š(¢Š(¢’Š)h¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¥¢Š(¢Š(¤¢Š(¢–Š)(¢–Š(¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢“4E-QE”QEQEQEQKEQE%RÑEQIÞƒíE-RQE-QE”QKEQEQEQE”QERÑEQEQE”QERÑEQERQE-QEQE%QEQE-QE”QEQE´QEQE”QKE”QKEQEQERQE-RQE-RQE-QE”QKEQE%RÑE%RÑEQIE´QEQEQE%RÑE%RÑE%QE´QIEQEQERÑE%RÑEQEQEQEQIE´QIE´QEQEQEQERQEQEQE´QEQEQEQERQEQKE”QKEQE%RÑEQERQE-RQE-RQE-QEQEQEQEQE%RÑE%RÑE%RÑEQERQE-QE”QKEQEQERQE-RQE-RQE-QEQEQEQEQEQERQEQKEQE%QEéh¢’ŒÑKEQE%QE´QEQE”QF=èÅ´QIEQE-RQE-RQEQKEQEQIE´QEQEQEQERQEQAæ‚3ÖŠ(¢–Š)(¢Š(¢Š+ÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢Š)(¢–Š(¢Š(¢’Š(¢ŠZ(¢Š(¢ŠJ(¢Š(¢ŠZ(¢Š(¢Š(¢‘›b3tf™q(‚%nj¼{îrÒ¹ã©?Ê¡‹uÆZFàT0ܽÄí(6t'Ú´à`ЄŠ>©«Ð?™ØÓåéšÐW(ÏÜèG½M‚óúÔ« ‰Ho»íM`UKß>M2`cFÚAÝódúSe5# îç4)w8Å$mÜGQŠD*T0ù¥_­ªÒ¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š*•û’8ˆ8ûæ°¼C>éâ¶olzž•“­Í™c€g¹±Lcµ  –N¬öm«À¤SµL˜è¤Ð‡bïÀúÒÇò.ìrO¦¹ß›sÖ†&DÛœ“K!2&ÓÞ¡9 `ŒwhA±6’1éB ‰†éSÄÑŠcÇ^•n í ÈÙŒu«(¡gc  ¬oØÁp íÜyÇSK*C$+$lªÚ˻ӽ$rD2Xr3éÖ©Nïvégl¸Qþ±ýi¶°›¹R—ŸëÖ™©1 ÿXÞµ¥kc ªPrzšÝŠÖ8Ð ÍkCn‘(E¨.]NôbN:â³ïb9ݪ¡€P2O©¡Â@©¥`j6Èþêôô€aéÐ A—#§jmíºn~1Ò¤`"P[ð©DK–íU,äk¦y|оµ Óœ %§b}N­ ©Þ ãqäZ“­­¬6£¾óWuX ŽÜ}à2EUs¿É† MËçsc ªöð}¤Ç@™OßoAPEžR8Éó|Ùè+BÒÙm !ÉêÍýã]¥¬vˆ£ŽXúšØ¶-â úŸSSTÕ%fjhcš7PÈØ|uÝYz¼{L8 0Þªé²EqÀn¿ïR@3(bØæ³ãù”¢Œ¹n¦ªG†M©Ôžµ0}§n9ýêʺÆJó.y« Á~_âó­*ß­Z(¢’Š)h¢’Š(¢Š(¢–Š)(¢‚qŽô„ôÀÏÒ‚qÛ4´´RQEQERÑE%¥;RÌp S'•-âidÀU6Y‹±Â¯ëYóÝ (鑚æoõ)/|ª09¬Ûö¹|m(W#’åUQ|T*þ‚ã–ÁôÅ8óÚ”àôhˆØñ×8©­¢ ó¹ã®j{hÂ|îxõªÚ…°ºÚw2p?Ù¢ö5›iRzªÒ]ÅçmÁÁ=EN±%´vê‚íÏÓ­Xke³œ`¹ÉÕ7’¶¿gÈäòGµ2áÑ"{–9ó SŸaP\•òšéþc3Aö¨.6ˆÚw;Œ‡56—!7 >y¿Eí[=±‚ÐHÿë&äŸjÒÓ`ò­ƒ‘óÉÉ>Õr¯UºAÁ¢Š§ª2¥¼d©,cJ¡­0»ïÊ©j„-²Ô6?J«iˆÓ-Øä…bÚ0Ï$r+>Ðà‚yÛÒ¤]Ä–#“×¾*q¸±sõúTÃ$–ÿ"µ«¦­ª(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¢Š(¢Š_¥­CPrÌ8EÿÇsºõãM?§GÿÄÖ.šI<¥8Eê=ê”ø¬¥ëYè;ÔÑ¡8Þ8=½jÄpœ®õê8f(Hl‘Û4‘&YKqÀ©3æ’WqÇž‘áÉÆ[ hGs‚ Û‚x8©J:¢GÍêx©v²ªŽJY^8v³ >ì~ñÿ W‘ dfŒtÜzŸð¥yRSœTkº`ÓÊÛ_QßÍÍpÏ4ï‡Æ …FKJÏ,­óôÚ¢-ÄÐYGó¦K¹§@‚îê Tù¢RdjtH·7Q[¯Í ÄÖ¸ a@À®‹Ž€`[vÇŠ(¢ŠJ©¨1#ÊQÀù½eëR3'ÙÔ| osT57$y#îŽMW¶FÏ·@±ù¬0 ÕHP,^cpJ¤ :€PðsO©eePPðsR ° ëZUÒÖÍ%RÑGáIEQE-RQE-RQE-RQEQEQE´Q@ë@ëJ½k6c½·z¶+º%¥,{“ü뙺9”±î­HŠ­À4‘O®(ˆøT­r»?•iÊ¿¹[”O,)#¶Ò´åO=~eeã·mÎ\äÁ¨íŠ+‘&<j;vUoŸzIpóy¯ p´^?™tnq…íþzÓn3™»ž•ZUig·Î0X{æ¡qæIãæöæ˜ã|±±#häûRÜ>&AmQÔž­ÿÖ¨çu åñõê} †wQp1Ä~ž´iâk‰O8 ÒÐ"Àžlpp‹W´˜ð&—NÑøV•kV…QAéEk:ù‹\•RH+U}×m’pÀVf ûîYT’F8£äHå€ÉªŽåTS¸€r[*|Ä×Ú–8Ã+)eõÇJX! ûÂFéDqŽw’5§]]oÒÑE%QEQEQKE”QEQEQEQERÑEQGNqAã¶sG5›yòMµ…·çë\®®ž]ô¨:n$þ<ÿZçµ%Ùt꽌»òŸ›ƒTÃ0#U\ƒÅI˜3*=?Z¹e,ê8É1·U5vÎY‚²)Êg‘V$DGR0£ºåZ%ºÏ±Œ' È=}?ºé ÎŽŸs¨õ¨’ÌU$)þöjœd;Iæ…BQOs‘š­nß¿ø~è÷ïHà´e@3ŽŸJŽF;Yp0\TnÜmÇWéXÚÝÖë…T;pzÐ £9yw( ì;b³¯ç2N»qÏa[ÚlFÁå›–®«Jƒìú|Hz°Ý]-Œ^Uœhzã5f­ÔôQEx¤hk"{¤{É@Qò¶3ôãúW7¨Ý,·³øÏÓéX—“¬—ßÖ§U( r[îûf›L]mÓ Í÷sïH‘aœ±ájYÖ@¹UÊò¥¸5<±I¦6e^9RÜšHÝ]”à r3Ö¯×G[4”QEQE´QIEQEQKE”QKEQE%RÑE5˜(÷¨ç™aS’7c¿jl²,js×µWg. Žî›ºYS\™ž9[wMÀ?¡,Åd†õì*™CófPźŸZÈ™Iff}ź±=k2eË_q=MM\)Æìg4ˆ£ŒñHŠ0;ðhEO‘‚ç–jž/1";X.þXŸjž=ÉqËÿJrÆÞ¹w|ôõ5jŒ°&0Üäžžµe! d <’M Ì >â)Ús÷5Ä~nñÄh¤)þñ¦¶Ã!qÂ…!}ê´§~ ýjŒ¿;Ò©HrI?v°£O¶ê¸*ÏýU·ízЍ+8ü»Õ+8þÕª(7ó]‰ÀÛãQÐq]w€b’Š(¢ŠŽæO&Úyð!#늊òO"Òy{¢>¸¨®¤òm&“º§ÎYÄÒI!r oROJä V|3Œþy5Ï@…ÈfÎ Ín3¤Cr²™H¿¤&޽J™Ñúõ|Ê‘e•ƒJÃôª7M HbpÒ¾_$tª³LÑDŒŽ ¯—$Z­<¦(Ñ‘³#.âO½oW_]QIEQEQERÑE%RÑE%RÑEQIÒœºOÒƒþîj9 ª—ÎÑß½U¹icå'jç·5ÅÑZBp3Î9ÇÖ«]Hé(’é—ªO$p"aq"ç#©CQ™’$@æäwWí\±Æì£û¢³C\N¤"1Aè*ˆ73'ÉlÔ«­<[a;WïzTÐÙÝLèVÚ:šš+K‰Ú:ÕÑäœZ»“>K8XÐu9íVSNÏ„^üÓv#¹’U;€§¹¥ŽWý"â6òcQñ{Ó’8ÇïåBQ~TOZI¤/ ëzc“L¸ºi¢dVXc'î(äýi“Nd”0 û sTüÓ$¢"Ý ¤Òm›¸U¤,ÛsÀ¨^q4²Ù¶ÔM&ù›>÷|vlTzUºÅx±ÅœçÆŸ¥mïÒ¾Ô@x%.˜b¶¹2ÈÛUîõÍn¬‹#6ÆÎ;bºK;Ø/KùDå>ò°­Û[¸®ƒùe²§æSªÅME¥“ŠƒPͲ•N~|LÕ]T§L§øˆéš‚øfã³c5V5UV «Øc¨ùX‘¶(Æ QÀ?ãYêÆ$b4•D‡Í‘¥uÌcæ!J©)—{Ê995^"†PåAQëV®¬ •–Cýß ­këä+(E@Fh]Ù£¶ý | Œ ¹çÆ °?¼zVŸÛ W ¶nÙ«¿iˆ1ü¾¾ôàC}ÒÒ¥GWB”õ`Ãå þ4´êuQKE”QEQE´QIE´QKEQE!d¤eWR¬2¤`jB)d‚*²©1—;„yã×Ò©.™™ 9ójx=9éUÖÎ1"3|áU€”ôqcU*¨ÐUª€=¨Í;=;j:àSXàô4ŽÐ£t4Œ¡×dwË‚R03TµBën‰ yÿ¾j½öÿ%V4È'¯¥eÝL¯6Æ;]GÝÅs³¶g*ùVQχ;þø‡íUl¤UŠêîCœ±QŸîâ£‰ÂÆò±Îæ »L…À‰¤c’zÔ:|RÝÛïÊØQî{ÒYÂÌyåœð)lá?Äysœ{V­´1åbˆîld°è¾µ=¥“ÝÜã\÷œ•iÖ¶R]NÀ)E\îcW! ÎÓ–n¬k °°ŠÅ[afvêÇúVÝœvŠËå¹,{Ô•n¬QE%W½p±íûÄ}囬\*F±#nprËTµ E9e?0ªÉ,¬b‰Ý3ÓÐV,³ÌèÈ®J72c$t¬Ée”¡@I«ïhwUA•†Ý¾¹¨aÜÒ¢çoçPÛoy‘!Î1õ­ilAŒ¨ ]EÐT¶XÔŒ§Ëº‚Œ8¬èÁ—12Hܸ8ÅcBZpc~¤d`â³">p*~ñÈ5¥!#\ç"·m-Äp¦s+Z(B õÅJ*È©E-RQE-RQE-QEQE%RÑEQEQEQEQE­×!P–éQ\H±[³°Ê¨S'qLçøk&ä}¦áûà{ñ\¼ò}ªé°6†àVö›†5EªÇGåç”HíÂDà®N>P:8BFÀ®ªêúŒp¡ÜWÐt©¬›SU^vž=ªK%¿ÂóŒb¶Ž@ãšéºqØÖÖi)))(¢Œ€È c¹À¥àƒ“€:Õ d‰®Ž_æè¾Õ{<xòs'Ï‚ŠÇžhšåœ®ü¶8¦îã ƒŸ~j”’˜Ñp¹àUYÈŃÀ¥µXÄJ³¼|äœ{TÚo—ê|½ìœäž†§ÓÊG Ú€•þ#ëV]„’’à.Þ„½4ÂæWi\` w«M ˜³¿@p¬ø¡—Ȭ\q¹k2(f7–ç‘sT£‚eÃb=V´mfé3ìYq[zuï wìXbµ,î8òœ6{f´ò8«y¥¢–Š(¢Š(¢Š(¢Š(¢Š)(¢–Š)(¢¶6ðNïAÒ‚qA8>´´QERÑEQU¯%Ú¾ZÌÝ}…ekwˆ±}>f',GAYú­À!O™¿ˆúUX¡aê*ÊYâtŒH ¸É#¢ñ©ÒÕDêÁÈËJj:ÆÌGßæcÜÓÖ) ÆïSLY—Ž%Ú ã&œ‰ˆ¿ÌzäÕ˜­ñmæ€à“üDÔëÁ±€8úÔb[”A°(ŒLÒCyy!c#£4%ÍÊÆm î)WQ8ýú€=qN‹U`¬³ª€yÎ)c¿*¬&jHïtå^6èêzT±jûf 1 èãµ>=Cl»d!‘º0íVÁR89ïZQ\E/ÝnÙ«É*IÊ·j+ƒ‚©é"IŸ-ƒc¨ªÊà”`ؤes÷N=±Le#÷rm>˜¦È²¸øöÅ5eFþµwŠB¬œ>pqMK…8 ÷ºSÆ;â§GWûŽÓ­H¬­÷XZu-QEQEQEQEQEQE6I$.äˉ㷉¥•‚ª÷þ”ÙeHc29ֳشø|©ô•ÌÊÍu!”©UcßµbÌâB0¹$Ógœ¨X̯À>‹Ú’âC…H×÷Áö©'f%cA‰‚º*H4Û¸n±ê}i·±‹h.!so^)—ËäZÏ ‘Ðþ?‡áhtµf2Ø5³ @`ÒãÝÁŸó­=o¦D„`žkF´jå%QIIM”f'욎~mäÿpÿ*lÜÃ'Ò¨îd1¨øsüëŸvh¡Þ€~_ñ¬™£„2® áÆ£‚TW;ËŸvð=zÕ{YÄn Rw:­m8_”±Sž­Iæèª±!É5-’y×¢ ÄùœdÔ¶j&º(üÝÍZp‘EåÏSZ×M ´Ù› ëïZW QˆIÀõ÷ªãï0<{·œ„òåÀêxªˆXðFÜqÍgjörɈT’–¸ª—öÎÈ<°I–â©jîÑ©Ÿ\Ê´½’ÉÙJ¼‡µQ‚v„•?u¸9íT`¸x3}Ó×5ÐÁç¼hbíç8Íi@nA'##§ŸœÆz ŒvéC6EWĽqøT‹s0r^PýåëOÈî#ú­'šùæVozCu+ý霌õ£í2Ì„ûÓšY•ƒ’ûÓ^âr7ç,OzkÍ67 ±^´Ÿi™$ É9#Ö™ìÐMæFç'¨¦G{,2îF<õ/Û.Käàãš¼u›Òv„Æ{…«gSº$€ƒ¸©yP$2Ÿï`b¤]Vê+"žÍʤóÄFü:Ÿjp½„6ÉsµÐûæ®Ã«Ú± 108ìÝ?:³£nÇÞSz5L²ÄÿvT?Faom[îÜF˜\[·IPþ4ìŽÁOÐÒ›•þŽ=œRùÀôÚÃýáMwXм‡G-ôP#<ÏE4É.£… ÈÃèjª\Ë+Ôu>õ–u[«‰ Œl@xUê}Ígý¾yÜ”T©Ä¬¤/­Z‡Q–6_?3ÜEZŽíчš>SÞ¥l[#n3“Ú´ÉK6œŸJ¸H » (Íc‹¿í ä vÁ“ü^¤×5{ý¥rQ-ã8ÿíÞ÷íó²¯!À>µi?xÌÜíQAõ©b]ä»p‰Ç<­MÌ žxç§Ö›n¾|ÎÊI‘¿Ò›a½¹vSòtÞi¶q™ÁùOñšn¨»F~ú²¶{ãŸëN×b4Cûêw{óÿ×£YQ ÄOãÿ׫vNÎ0:(Ùùqý+cN”MaŽÃ¥jâKhß¶1STõ%%QIECtæ82:î ø«©ÌðYN¥‚œú¯}#Em¹{°©I/M§8¬ eg –ïÚ²ÞF“ž3éI,d3×*yý9¨fˆ†mƒ#ZXHc´qÔÔ–C7JGE§j»¢ ¡Ûî =;qW4„ >öè óIy"ÌÛ²£©÷¨u)…Ää+eG½C/7ÊÙQïNo2 G$¯väþ;‰ b“±,;·'ð« "RVÉê&” 6u?–jÀçúÔLÿ>ÏõªóÚÅ7úäùLÔ2D’¬Rš†HR_¾¸4¨¾JÆ Q“ÅQQŒ‚ª1ŠSÆNÜcаŒ‚4 ¯¸6âq“ƒÚ¥ «ª¡,:Ÿj“jˆ‘UNW®{Ó«)(‹°›jò)F×\¬k°uÚ9üi~òä(Ú:àr)é"+àß)ÏjD”+tÉéœÒ#ªœ SkBº1çàÓªHw"•'œ”¦Õ·( õ¡Èv4¼öQÖ™'îFÂûM1ÛÊãv D³ùòWkoÆ?ZlRµËy Q™º1ŸÆ’)ZäùHU˜ò3Kö˜‘7Què<{SÚE@!¹‹k'<Š{ºåÜFQÇŒŠADƒ Ïe85‰K~ìnÐâ£ò”œF2=¸£jŸ”gv~ïL~4= ÎqŠ@¤ {ô£ÊÜAÄtçœRùdŸ¾ÄzR™ä¹Ç½:)dˆ’±ã=sÞ§¶¸hdÏRjh&hT„Ç4’]NÀlU#¨ö¢[©ÜÇ ÅÜJã £qo©Ü)®c'<ð*¬y2ùOqˆ³Ó8VSw:ùoq„ô'¦µŠ;{=¥ÖmÎr@äš’Ú€0ìOjš ‘[ª ;Ðw«o óBL„¤xÈAÁ"®5ÔÐfÜ‘½3V^Öy`ß1"08QÅ\¶DŽÝDkµ{ŠÚÓ£Ž+(„iµJòj["¥º*.*¦¦74C3ʲl} CxZ>Fvàâª<òî\yl൅-ÄÌ@2s€Ö\“ÊØÙOLS=©dÞc-÷×­YþÎ8G.7úũŗ*Ûø?yiïaÂmÛ““ƒÛÖ­5­²H‘²í,@lq޾õ9‚`¸Û…$àÔb+iaf剪Ïiisl^†YµA%­¼ÐäÔR¡ŽG޲Hª÷p´¤hûc$TÑÈáUŠtÁWÏpÉ$AŸÒ©‰†àsÈî9ý*¸”ã9éŒTÉ"…tÚì®AÚGùÅM"«#+0c•\TÈTŒ¬s÷F*Û”¶r’2¤„eWû¿Z'”@Ä9ä|£½2y–UˆŽzË{Ëщ<Î;"¨µÍÊ‘&qèESk»„>aãÐÓ¢Ö$Þ Ã>¬¼þ½95ßó©^)bÔw7Î1êEj,í´nÜ2 ·» m]Û½jæA(Îy¥G’I¼µgQ‘§¥$’H#VeäúÒÄ’;ˆÃ0ö=*Y¬¥]Í2 ܃RÝis®÷tªœÒÝiÓ|Î¥¤»öªÙŽ)·I*£/PN P ²PXàŽÆ©F¦7´ƒV®o¬îÐD¬²I×Ò¶/ïìîmbL‡˜¸ã§þµ«{wk72ãýœÓãer2 íš´ÊÍjò2°Eí=«›I.‘w#­X’ݾÌÓB®:ŒSÄìSŽqÏ©5hŠ©QÎ9÷¦1Œà­1ŒŽæ$sªó4,K'•e›tSD/#íT,Þ†§´±hÛÍœåû(?(­m/H0Ÿ:ëNÈ: ÑÓôã^b ž€v«Œ7 Vœèdˆ 8Èâ¯H¦HÊŽ„UpÄ`néØVhvL!~ýÑTð–á{ eÔ~l*S;ÕmZ!5²Mâc8o§j¯ªF$eL§¨éÒ}CË<,¿Î¡ðôþUãBx?Z‡B›d wäVÉà×FF mšJJJ(¢£‚ÂÄú* ×ÚHÇÐ ŠåÂÛ¹n‡¨Ë#)]ŽFz+ž»¸pÊ#}¾¤ Ç»¸u#c=E4y‘†ÌŽ ¤f£Žæhƒ~õaŒõ¦Gq*ni {š•ß|Cr³pdiýj–IÄÐÊÄž<Ìâ¥y„Ñ€CеGm…¼¦ .OC’E?M·•åò™¶©'œõëdbŽ}zŠÕÉõ®›$VæqQ4ù†EDY;°^j¤¶¼ždq¢9êÛy5^KH‹—EÇ©˜ö±»oËnõ¨ßJ‰ŽõvëLk-½ƒzš¥y¢ÅwóÙ(èëTn´pr_kö`?Q»Ñ~Òwµÿ¼*!áø„Q}ã¹+ÍB|:V-¡÷ŒóÆáL:îvnÜ>œÕ?øFfWÝØ\ð V¼$•À¦ìUEÐ.CnR1Ÿâô«Ùš‚€ÄHàóO:F¢¿(E'·59ÓïFA‘ïV­,ï­‹8’&r aºUÛBÑ™ÂDXã"­ÙÚÝÛnc9>´O¯)Á’§û™Îuµ8ÚDH‡´mKpºœß.ÕEÿdÖdž¸yrJüÜ“šË}ôÈr'Þ³$ÑnšBIäûÑÿÍÀåd@G½;þ«ÜdÏ֠ݯ!‡Ó=kB-:ëj†ò×hÆIÎjeÑo˜ Ñ*žœ¸«+¥Ý0`S뺦7)ó‰˜v`MNº-Ü@2˜]‡;XštˈÀeÌ9Á5+Cwå`N±= ¾XPwù)æ;¡…D\õâ˜ö÷Ï!™OlR½–«%¹ž2­ÉZ$·¾’-Ší<â›,REÝ€ œdŠ‚[­ã]È£.'œ•Dö’F¨¥@Ë»Ðæ®Ã›êIï[––ÉiÈòI9,z±­H!H#ƒ¯$úš51ÍIET€‡Í<‡ëÚ³õ%¸¹ Æ$öª—€DÞw>¦ˆÁ-óµ‡5¢ïsªJ:àŒSm×qhœޏúV]Ò5½àgçk†ÔX­XjŠçcŽ}Fk)U¬õ@­ýìf¶Ï'=º×ZNyíÖºê;ŠJ(¢’ô¨.ù‰«gôª:Ç6ˆ¿Þq×éUu!˜@þóU)ñˆÀ(Ç=7b°np”ŸcY7*>UÈ'ëDÊÈÊ ®>R§9¨¦G”>99¨'W¶¶9ä`Ò2³#&xÉýF);vŽÔ%vƒÓЧ M$—›$bJ)ëVü9#=ðV9šµ¡LdŸ s´]u5¿EQEQEQEQEQEQK“FM.i(¤¢Š(¢Š>´žÔR/ŽÔÔX¯UtÓWƒ·®;ÒÁéÞ•ÑdBŒV¥e.Ò2éH„ýÓ÷—ùRFÄåüËúZD9ýáÁê}:޼QE5ÕdB¬V¦MsDñÈF?­2hÒxÚ91µ¿J®£ÊM„ä)àšÌZÕ6;}ÆÀÏ~õV-Ñ*«’v¶ 5N÷79p¥P}9¬FSu},ƒ\…í+.öCqw$£R6þvÆä\ÀûÉÁÒX\­Õªºõ_”·-¥¬¿OÞ§© ŸJAÖ«ÝŸ¸µŸ­Ü¢öɪz‘ýÚ­Teà ýkÆO5‘*òN)"…¤-õä)¦$eÁ\\Œ#H¸'8è 63¶L8ž´ØþWÜM‹™O’ÂÕmuRÈAŽe%qÔVŽ‹Ùõuãê)`ïxuªw9õ§+«¨e9§µ‚2Gò¥¥¥ ô¤a•>ƒПNjœ¤”-‘ŒÖ<ìe˳`ÈÅg˗ñÇ5Veû<Ť8G9Œ¥eÝ[›i ¿·*qšÍž·r_îžEVÞm.~Ñ|ŸÆ b’ÂõìnC«~íÌ(°»{iðNcsÒ·ºò9šë~÷#žõÐ3íÖŒQŠ*¥Ó¯šBÎ v¬­bPpªCÔqT5 ¼ŸåP…$‘Ž£Ö²63dZÍØÌ 4@¹Þüã¦}hŽÝÜüã éÍ,Và·$ÒËh›ò÷+qœm©äÓ­ÒOßÞ¤LÃ%B’EI&›ËûÛ´Foá‘H {„1¶ä0o©5-´ gz†' Á‡=zÔÖð‹k ·( žØæµ+¡­zJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢–Š)(¢Š(¥¢ŠJ(¥¢­0pz`P©òÜämV÷j•|ÇΘ{(ÀZGšDh™Š·ð¨ÀüêÂ´Ž£Îá»(ÇëRãzŠŽ2ÁŠ?QÐÿxT„+Ô·U-d…z–«j,6êÞ•Z?Þ…< ¸úV\@Ü2…ù¿•Rˆ[ƒS=ÚÇ!’x9ýjë_y36Ó¸6ã­Yk±‡0nEXic®üm~Ýjü×pGj†NCŽä µ-Ä) ™9WüqUBªRÀ?Äß² äfÞÍ8c÷Ø|Ç=…g™ÙSɶ^ùÜÝjÄJì€È»_¡÷­Kd•âV™vÉÑïW¢GdS"íâ'ÝB¥NÀÇ 7/ ©Ë 2*”€«cxÀ½B²€ÜG5“x…ex#šŽfœ¡ùŠ®=j¬Æ}¼± éš­)›¡b©<ÒÜc$EH8É«¶F[ÉVAT8ùrjÝ£ItûbùQ}Þ2h´ØŽÐ·%[vpt‰ ÏrP’¤ñÈ÷¥±‘cgL‚P¤úÕêèëbŠ(¢Š)(¢ŒQE-RQE-QE”QKE”QKE”QEQEQEQMq‘ŽýGÖ£œLóŽT^ÔÙWý¡ÈúÕ dfóe<¡Bÿu³È¬;ËââY ª¿Ý9äZ˺—rNïàCÞˆG 6W‘òœôƒL´a ,~]Ìyâ’ݼ¸Ž0 };ÒIoæ8ì##qu§Imæ\ÌÞXˆQÉ¥h7ˆÎÀ3й¤(Œ»KÆwÖ´:u¬P4{ +Œ¶ã“W㳂8ŒaK+rA9§Gqœ¨$öÉ'ë{{vÝynÅŽqNŠÚ(NcN}IÍ;qÀ©<ÖR@Ÿœ‚p 5ä pÙÅG-Â#ìlãô¦<È­´çð¨|¼üØätã­g<;ŽóØñ‘Áª¦,œžèqPN<ÇnÁþ¡y™å`8ÀU+­Ó;qíRZ‹væÃÉÁÇð㚟I¸Ž×r³Ó gûž•.2[©Œœ<€óýÓÚo>ðÇžG×4–Vé*L üüãÞ’ÖxdR~lùsV룭šZ(¢Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š(¢Š(¢’Š(¢Š(¢Š(¢Š(ëE—v6ÝÈ™ÚÕóøW9ªG³Q™sµde|þz˜¾tÎÐÎ?…Mh›¤äE €:ÔÚT&c4›ñµq€85.Ÿ‘%“y` œ)›ò«PÂQŽXn~n*ÂFA ‘–ëô©”phC‘‚zt«I€Ý(f¹4Ë›”·Œ’AnÀÓf™`RIæª=Ã,¬à©tïX‡T‘nZN ž«ŽÞÕ–5–ʲž¸©n‰†/5àÇ¡=«WÑ<1,ñò¬Ü‚zÒ¬ÝÆÑªÈ§! ûÕx®¤i´ˆñ€ÙªKw#¶tV,»Cg‘U¾ÐíºPIèÙéV" Öà‚K©ÃýjXã2ÚFùÁÃóÍH¨$¶VŸãɨ,g`8'·ZÏš¤lãBxYpT¹¤ŽàG&ç}{ÒÚÜù2î`xãë[Ÿ-ÉnOJÓ®ºº(¢–Š)(¢Š(¢Š)h¢Š(¤¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š­y]$# ~µªÛot¸ÆBŒ0ªwðå„ØÈ GÒ¡°™Áà°÷ÕTÑfe‰ˆV” {µA¦È’2pXñV$ùpOcÖ§º>SÄIþ.MM1Ù$yéžM>I–-»¹¿¥Y¹½K9!Wä677¦jYî– cFä?SéQ]¶ìüÛxª:Ô–ì±È¸çiÅTÕdˆª:¶rOJ§onÓåGLüƳôë'¼“oðçæ>ÕSO´k†á3–­ ¸Œ–²Fœ¶ß—ê+¢½‡Í²–!>_¨VÅÜfKWEûØÈü+Ët× ('åÉl×)ç”H ùIÏÖ¹ø73‰8çë[°‘æ-ÀáZÖ*%K–aµP‡-øV¸ß ìÃhCœúñHªY#ÁEŒòE@û^(v° äg’*) :¦Èpõ¥T…$Y© c­>Ým`d“æËm*FqžôøVÞÕÎNã‚éW+¡­ZJ(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢‘†ä+M™²âŽ»£eîzV~ÂÀÁ9ÏÖ¹æCÙþ.ãÞ²H1J1Û « ˜î^W8#Þ¬ÜOö™Ó8{Ô²ÉçÈAàâ™;+D2z/qUµ)VQä]¹#Ò«ê ÔP9ªâš‘íY~µ{Š2EýEG¿ÛbUV‡ëZÐyíÏÌz×A§Ù­œ;z³u­›ku·‹hëÞ¤«U(ëYs%µ¬Òm›ŽHÏC\æ¢- ¹—ËùK6XÞ±nüˆå`‡žqëShíʘò‘êG5'œÐؼAA…³íÏéR´¦;6Œ‡ã9õ¦LŠòã9 2sÒ –%}‹ g!cž‡¹üª)#YX,IŒ™©¯!YÚ9ÜrxÏj­)1ÊÈÌJ“Ö«I”vF$©è}ëRºúè袊(¢’Š)h¢’Š(¢ŠZ(¤¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢ŠZ(¢Š)(éÍ*•Úc{)ÚW§½bêq(’WÎÒ¸Æ;泯#}ÒËïN…”H§$1\½KfÈnPîÁòÿñê-Ù Æ{íýi¯š9ýòr=ê) I­åV?½-¸g½6X•íÝúÂr3Þ›`#3!L‡ØK®}ét5ŒÝ)L†K.}èÒÂr£i ’+@õ­ÃÞ´é3G‡4 gð®N6{›÷BN„¸Í-ã’IùÙ«”Œ´—/¸“µÉ­ÉŠ4,6gfãw­ ž6·u)—V61ÇzКE10+ó+gq⥴`Íò‘œüDòjÞ’âGEr€.{“É«s«ïPÁX¨E÷¢{3*•$gª°*ÄúPd*Ìy Ž•4¶ ¡ x=êåjÕÚ(¢’Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤£½´QEQEQE%QEQEQEQA¢«N¦I à`¨Æk/PŽIîš0B†Q·=ê•Ìm%ÁQÀeÍC_´ƒ»$’ < œ‘TìÑ~Þv Ü7tç“UíUEÖ3ØŒûÓÁ ‚xÁëK,‡rö9ûÔ®çröäô¬ç¹û.±m¸|­‘‘ïTí®…¦¯ ÷I ㎽ê½ÊÛj±ç£‚+q½¿:êÀœ~¼Ùnø^9¥ p<{Ó†ÛÞ°íí‚MtáÕÊ$;e¹u@À1¬ãØÓº¨ 1Å[¼m¸’<+cæý*kð“Â&ˆcÔç¦*[ÕY¢›T“Ï5¤AÕ†FNG½S‚2Jn ¤æªÁf<‚¸äV”ÄìNIÏç[ú“Ȱ@ pËÏ®{ÖÅëH†ã‚;ÔÕ§W)h¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢“‘Å4[qH'ŠZu--QE”QKE”QEQEQEQL1ÆvœŽqUnÑÊïPÆw)‘Pέ€ÀØrzUVTiÄ€œ?è²¥hÚõ¥ŒœIÈÇaëTÆnŒˆ~÷+õÎ rI’¤º;Žõª=¤³ç06Žã¹¦¸Fµy³ƒÇÓ½fkÈl§AÇ|uíT5x‘~ÎñŽsTuhÂIF1ÏZÞŠUû29=€úžÕÓ[\«iñJù'zrÇ·çÖ·ã”5ª9È$©©2Jç ž]æBàã8ïŠ|Œdã·JÏ+‹.02ànS“úVˆË{åF2üÀ{óšËXÌ·F4©äþ<Ô7Ò"4q¦—95¢ñ‰cHÔ)@AÛÞ¡¿‘<Õí8«6¿5ŒR‚ Xý{ÕØ³m¥áö¶ö׿éW! --Ü`…<Õ‰¾}¸?έjKæË>ïµMx¾dˆ:®*jÒ«t´QERQE-RQEQEQEc4€`æŒsE-QEQERÑE%QEQE-RQE)éëHI Ä 8ºp3ÇJÎ$ •U8ßA>¿þªçYU/U#?{†Éé“šÇ «v9_âÉ÷§@È')·åv;§¨§Y”7Ý—‰ù~Þ£ñ§Zìwh;²SéÞ«j†hš(øÛ‡P{ãÒ º´i|È—ø>`=‡¥CsmæïŒcä €}ªÝ©få¼§Ø3ÙsÇéŠÑÓH{(¤bXE.Ü“À^œ~•vŃÚÃ+J¶ÓžßçŠ/n7•-íÚ—V¾pæNN>lRjL$1EÉ–ð(ù1’ý:h’âìA À©&T¸¶.X|üj|¨“@\‘óôªRéÑK=5Ÿ% +‚8éƒT¥¶ ˜lc ¢ÏKµ¶n}Ä6B·Ë‚jÅ•…¬“´û˜mnüj[->ÚÚA7¹²F _€¥Aöæ­NÊA@F§5jR •ªàI“ ¬‡¾OÒª`6L,¯žš¯€Ã(CÔfœÐnWÌb>\ŠÂQ6äyŒG'—µän'¥dë–ð+.ЀzVf¤®—;YvñœV^¤.BŒ•6š¬ör–þ3À-’“k!?ÄF*k M£“ÜñSÁº5Þø,: ’  ßx~•,Y@¹5"î8fzT‰–öúTˆ÷ç¥8:d®FiÁ”¤jPW8È a^¾)Hà{Ñ€ÀŠ¡<Œâ6eÏQU&†Uä%}ETš9pFÂG­2 I\àÆž¦™´´²í_~õVÌÅw®Õ÷ïZ &NÅè:â­ü¡~Qò/Nõs€¼”Td>SŠfH)Å3$ /é§yûÄŸ­4î=I?ZC¸õ&”+½Š Ñ‚*E8ëÅS©,>\€òjK©)¡*sÓŽ‚q ‰‹DTç§°«ÉäÞÛr¼¯á5²‚ßU± ² `õSZcÈ¿´ ƒ;Fû&¨I”08lü³ØÄcŸ˜U‡ËÂŽ=EG±)%T þ5†ÈˆBÓÞ£pÌBâ®.P PIÇFéõ«ˆ*…›o~‚¬¨À ’;ö¨æ³K¶@y1>àz ˆÚ ’¸å£|ç ¨ÚÙnÁd'š•rÌÁ»ú{QÍ)Võ¢–9íQȲ#†Œnxš’U’&ß%~ñ#µHá¢`Ë–^¤ŽÕ^;û{i™OÍòà ã<Ô6×ñZK(ó8qÒ¡‚ò+ywýï{UУ† ’qÖ´<¥*>|)c޵wËR£ Ç_­V»™!\ª’ìy5F÷ʈ` Àçq=}ª¥áŽ<ð0?ˆž¾Õ¶äÞÀí 8 *hZÑä·²åþð¨wF-Á;Šå@õ¬Ý;©oK+1åǯµUÓRââåˆÜà|î*®–·Näå”r· @cÎsœ§Æµßk:~]§Æµ 8aæG†ê¼ÔwbU|$Š’8ùFzS.–X¤*¬«#Œ¨Í2ádØ+(r8¬ ›;«ošD(¬v† ÷«"k[‹uß"ìV;AÏZÇ–ÚêØeÆÀǃÔÔÚ|s½ÆàÌBãsg¥:ÌLg¸ñÔç¥Keçƒî8óZwh—»V|½uükBè­ã/ËÀñ«×AnÙ|Î{úÓ¢‰D(`©œðic„ | ¹ ö4ôˆy—c•àsÔäQå¾ß”duù¤‹p+ÔŠKŸ0ÛML7•`¿áVî<Ãk,q·ÎTà žãÌ6²¤gç ð+ž‚Îåçɯ«+;iL¡$VSܚ† ^`²êMtàUË`×H$Uˆ“qESÅteÀC±³·Œ¥E%¬Wvä0Ú¬qÓ¿­Bmöß<*œ¯â* -Vîß9‘úÕx,¦‚×lD–^ŸìЍ–SÃî÷1CÀôªém,0 ¶ÓÓÒ¯XK‚|¡Í÷¸ûÕ­¤ÏnÈØˆEpÃæãñZV#Œ$§ï1šYˆç9¦\²°nH`i³A9ÃU\)™YòOlzÕC\+7,T8iÓíSIoó•X'#wj·$Q½¹ó”7—ÈÝÐU‰bŽH3*ÙÈÍa]ݱ› |µ^^+ {†óHB€V<× %;NÐ:S=ì‚ÈK‘¼g&¤k¶û*¿žjYn˜[#€2Z–ÆòK¨°Ä¨B‚8íS[]Is®1"ü£TÖ×Fâ$`0ãŽ*Ìnë¼cž ©£vU‘và“Á©ÙQ—$Ô¡pÏêj¼ÊA,xô¨¥$œÖ©³K¸3€þµ\´›²ØPj¾çÝ“…SVíP¬lì9sÀ«0)XË·V< ž+æþ#‘V#¹ÇjsëRiONp)HãšR8¦¯^) úR°ãú{Ò?Ï­ qQ°ÀïøÔng޵‚*2Þ¼ýzTdþ4Â<³ŒòAëƒ@V÷Áô£kcœàÕ¦Lä|¡FAíÏZµ,[’gaÂÁíÏZžXÃ$¬yÆ? šÚ&&M޹Ú0jK Y$í‘W žþÔû;w+.×~µØ”â"HVêsÅ2èNH…‰ÚyëÅ6àLÄDÇŽ´n(D'îZ‚âÚ±“¹“ÿtR–DQK/'Ò•cÙwÝŽ3íJÖå!ŒŸãìhxA?{µ(g nÁÉõ¨ÔlŸb1`FãQ®c™£S¸Ò¥¶1•±b ùqÅ\°0º€X™?.*Õ™‰‘~l·Ãµ@ÔÔbùdhàw£DœIŸqÖ˜.y}EZŽU–=ãþ=*tpé¹EL¬r´ðAö÷¥=©ÀÔS¹QГéL™°)’¶Q™‰\ƒ¸ûÕYOqªÓ·“Io3«(Üx ô¢)\0ëÆ(†F,ïÆ+r#þ±¤n@Æ+Z¬%3†Qòã­iG‡Y|ӀݩÑF C±[cí=*h£°ŠÞ[v©c_³ÅÀ;OJˆ3Š›ñªCÍ’f¡‹vÆj 2»°Q“ý)¤$Qó†féŽÔâ‘G ôbùö#ëNeHÑAù™¹Ï¥+ÊÞK\Œp)󻵫\pDxQN¸vû?Ú;/¨Is G˜ ¥û¼n¾T,àä1Š‚Öû|LD1—C×½Z·™g|ÈŠýäãš³cr·!äE‰Çñ'«6s$Óod·µ:í[Í ¹1çVu-:Î¥NÓŽŸþºšé37˜1‚1ÿ׬«+g´ÕHåÕ”œÖ4P5µã)%\æ² …­îdSÈ+šÒŒºˆÇ,vg«¶†E£ŸœíÎ3WmËðýîýj®©d·‘r$è\Šf§f²••s“Á$T:•’ÌD‹Á=ýêž™§\%ÒLøUF89àÕm2Êe¸YŽ¡ëÚ Ò즎e”àÈÍj20‘U¹,¼ç𭉄»Y•Põ+É?…h;ðÄ9Î+?^¿‘aKX·ŠòøëíPk—òù)iD;A-Žj®·{(E¶„„d¶*}2FšÆ1 $¨ g¸¢ÊF¸µA($¯÷-¬=¼fLä dÒ!F¸øÁ¨…c!(äj8Š«n=m¦ÜÜ$›ËÁþŽh¹–8ˆ?(Ç4“ʳ6ÁžÔÈ%K¸YÞJ±g¹äTq²ÜBÌcÜCF{ö¦FRx²Éœ1jÓâ ‚ ÷«Ž†Á Ãå«mû”Ï<ô•.æ—{d“Yo¹¥ÜÙ&³[&MÍžjÍš•ˆŽy5fÔ=MY·Dõ«,~^{zÔ­ÓžÕ#p)Š ÛïéMàåMëüª¥ÐÚûßæÏz¯p6¹sÎî* ÀVË î¨äCc˜èrzÔŸº;TÚLr¦¸*8©´Øä”ãhâ¦Ó‘ØÊ â¯m!Š‘Sl •"§Æ ’HæjW@ÀŽâ‘0ª3.séUeqœÕyTä Ž(˜ÈŒzÔiÉ #c&OjÞØ2ÈIõv­¡‹O†«L(`y9v¥aB\’AÇ“RCå4dÌYˆ8 £­IÆOÞnb;ôÙÙÕ‰V1×ÔšŽâY‚4‰sž9&™4’m$íÔÕió$ÎFG TòbB°æ¢”fMç#=i#"XØcäf!‡½,mæBÈßrFù‡ûB„"H67ÜsÿUºd²MÝà®}k=‘ìݤNTš UìØ¸Bثֳ-»í*£ FzVmÿ{¾ERc?Z±n ŠÒ(!sS S9ã«t«Vó.ÈG뻥Y†SÁî·LúÔ’ËN£ʹÎinæAv1Ê®GÖ‰äO´¨8ÖƒÚɽC+6áp 2¶_”ü ç•î  l®ÂGÚzU™&€Ü‹tfÜã%OLÔÍ,&ãìêÇqÅ2išÓ%$Ôopö›‚¨;»51¦kpÀóV[jó¤àùqý1Ö¨iËû¶'ÓGûJD¸û«ZášhÕ£]é0α­6*!‰w¤Ã /85¢ÊÒ¢ì•ÆF;R7ÊJ*•(¼ÿ³H1J˜ÔäÐäŠzVm†^ICr§šÎ²cÉ»‘Ö¨Ù‚ÞanGZf¨ ÊYAŽ)º€ß)+òô¦j ^F*1Í&–¥|Ùü˜ ‘ÜÒXdrp‡Ó×Ö‹U™°¦­§.[¶}j|‡RKXÎðI%» jÁæ0Î0M5!ß '4Ô‡{óÐÔÁ €Nj`„§J”0N”08Á‘ÜzŒG½!SÈàЩû¶eãšESå³t€–[ ÒR@W§µF̲?Jʸ"š‘íàx4G•2 Bœ ëRFEºÉ±×÷„dÔ‰ \#œóOGXU‘‡lš…·|Ó7ÜõÍ7x©õ§yƒ¯&—xÇËœš]ü|½O­FT÷šaÉëŠiÉëŠB1ÖŒzþ”˜ÇZ¸²b8±ŒîÇ׊²’â(†;ãê1S¬˜Xý:TÄìBá°Gz˜’²žj^vnâˆò9ÞúššŒx%Õ îÕ$hQ~öÒ{šŠH‘íݕö>î)²@dò$œ¹ëI,*ÖÌÈá›*½¼D·R¤}ãT£j±‚½j¢¦#jc_YÉL?8aØÔð,:…”–á1/8CéSF±_Ù¼XùÇF÷¦iд¡nbIaúRØ@ÑÚàüÏ’_=)m"hí‚‘“š!Q"+°cØÔÉ0fDvϦêkãÍUfϦjDgWU…To?7È«1‡%R_Þ›ŒäTȈ +u8¦9äŒ ç ªjBê * 9è*¬{EæÜíàÖv±o5âÝĤM¹š¢Ö-e²¸[„V\dv5_U‚[;Ÿ´ Àe>†­[Êu :&vnq“NŽCyf›Û÷„àš9 ݪdâOZÉÔ,f|»“8%Nj…ݬª˜Ê÷"³ïm%8¸«z=ãyon o<àz µ¥Ý8‰íÔO'•sKºvˆÃ“»¿Ò´•ו2w5pnŽ9dõ«\¬l‡#̨!S ó“ïUí³…Qžy¨­óª¨Ï<Ñ|-Ø7 ÙëN¾ò˜’ûW?ÝëEç”GÎöZ‚ íÊQ€ÏaÍA ‘mòÕ€Ï#šŠ)#Ù婯xäR:°`°T‘õ¤e9·#ŠFRNò8«±BJKqéW"€,JűÇU¤ˆ,c'TmÁäü£®îõb àr}é½=ëYw*K#ç µQ72 ™ÁȨ‹‡óYMÀ~­*m‘”Ÿ•†OãZ&É3Áäþ"¯È»e(Êy¨V¯ØÕ‘µÉεB!ÚÄç!R?‰I§ ýåu4í¤Ó]p/ÓŸ”SY@ÁÞ3ì)G÷¿!Hè$ùY±ÁÅ‚¥°}qHP8Á4$J£>oëBÆ«‚dÅ(q÷½©¯¶3‚ý{Ò8p[¯JFÂÿ/#¡{Ràã®Gµ g9ë9„ë$N’vK¤ˆÈÀ+!8ˆdB¤Èx­Ú²b@Iàc®=ëVËÊIGž>n ü9­ _,>–8ü*žµ( ‹“æ7QPkÏä¼õÞsÅC«È#–ºïþU,qˆº!cü9úS¡‰â·.¨I9ÚOÒŸ4pn’hiv–Œù°Xš§=Ï/† š«=ÆKDÆri¶É ¹& …-ózRiÉ/ÚÁ‹8-Ϧ)4åqs”áOZ²%_ÞÔ9Zír 8ËÃñ5p\!Œ¢÷njž¥hf€:Jž1Ú©ßÚ´°ù‘‚Ø8ª×¶í$aãÉÅKap&…æÈôÅZÓnVH‘Knâ¬ÙN49jK¨CüÁpÝÔž¢ Ô`W65Ú{Œõ¨/¡ æD]­éQÆä£Ç7ï"ÇFíøÒÚÝ4±´$KӀݩ`ŸÍ‰âŸ˜àž ÒZZÅl\o ²7ÈÎ),-à„0‘‰Ø3œqIg q©Fo½ÐT˜ »]y<p¿K…‹Ê¿3pp~\{ÔÄ"b9'©^ÚÖ ¶ß4“’à ŠÞ{©““–ì ÔVñCgƒ·~IÜÞ•;K‚‘åXŒŒŸ–¥’âÚU+•nÃ?)©h%Ro~†«ì&}¸É# íïU¢ŒµÎÝ¥²?‡µCnŸÝÇnÕ~Œ²Ý*ò²Ë†ÎR¼VYsUaO2M çƒU¢S#í÷ Ï.HÎknæTµçT2˜äôïZ×2%´@_0zuéZW,1à¿Û­W䔓œž¸^&y2AÏ|f¢‰™Á`síEçÉm×·Cl)€}qKsò¢`¥fç1°#–8ª?yÇ$⨞01ËVÇuøT/åZoÔØZNrÙ?JPG£z h9è2sI‚qŽ´à¬ï°m yÁëO»>÷=qÞœ™öàךV‰Ó“ŸO–‘¢dçùRÊsïÚ£ÚsÈϱ <Λ‚M&@ HB“@îHù@Í'f$| f²Œ¥Û,O'ƒYåË›×ôªË7'½]µÿRí¸ž~Zµú–$ž¼U¸?Ôg<æ¡°ÜÝ£²±P[ï–`êÕZÛ{ÉÀ<±­uo‚‹ÉÖ\(s´qô\L¯»Q)TÞvî ÷k;!7qœž*†v:’x§ÛÈïrª•Tå‡cSÙÌëp§'`9#Ö§³™„Á³…¥DŒþtçq±÷¨ƒ8yXœçèjî»È= 9©m啟`$·QVl'šI<°Ä“Èö«VSHÌËÉ=ipÐî;Bù‡$T³î„œ(S'%})ó~ç 7òEKnRH‚¨Ï<’yrÍc¹´ÏrÄò*Ì “Û„ú“Úª‘$2¹Úaù‡µe¼2[ÜH»AØ~o¥gùo Íòî ~jRÅp¡÷ƒóƒýÞÕ”žN^26žHâš ­ƒ4d'$qM1!· PåOj[Còy¨XÇ"¤°Ü¨eMÅFA&¤´ùSÌ\ã§5OPû:)iÕ‰áKPòW- ,Äð€ãóª—Æ%åÁ,z-Egs œ$f^@뚆ÚhË|«±‡8ÔVÓ!9©©·’@˃(ÝžF(¹xHÿY–=F(¹xHÆüžâ™mp¦åQW¯Þ¦A0ó¶¢öëL·œЍÀÇZ·,,JW¯`{Õ¹#yb\7½Z–&t?0õ¨­ívÈñŸáQÍE¹W p[ø@棆 ¬ýì| sV[¶äƒógøjdFec´œœš••,8<špc´ å¾™§#y¥Pdg¦iCy*Î>òƒ­c<ó‰VpäIž¢²Þi¼ß7yÝž¢³^y–Q nO\U˜/eW]ìYIÁçÖ¦Šê@ãq-“Šž§Þ7wV›®zç9Á«¥v±ëס«…v’9üj7]à‚ÈÅ1× ñÔTn¹R1ÔVTÖå$ F÷ªÄQ±Ž:Õ"(ÞÝjÝ¡&"½?‹=¶DEOAÍXƒ>VÓÐÔ·®,âÚ¿.ðzQtDQÆài·D[©Pq‘TtH÷ݱ'{ýj-25{ŽNÐ**0ó1czß81*)$碊ؕ—ìëN{ Ö‘…cBI¦È€DSn=sU&ÀŒÆ=sU¦oÝìã­D‰…bÇ,z ®;‰äŸÒ«ì8ÏR);a£\ìRw‚¤euދ‚r;T±¬Ì ª`Ö¦‘@eË¿ëV®bAgÀcq;ýêÍÄh-¢tbr=é™PJÜFÖQÒ™•Jn-Ñ—µ2/”… Éþ!S´É æ¯Ë§EÀ.H&­ËhœŒdæ«»•a$*ÁW‚j¹sÛ«*/ÍC¼ÆD°© 8¨#Õ¡ENá!?6áÅBº¢ ¶ÊüÌ~bÝ*ÔcûYLrO9©¦–ÞBW;¢æKx¥Røås¹M:i`Ž@[¸0§2È Ä¡©òG"²å”Œ€iÌ®;‹.8‡",@Qß¿µ?ÎT„9b6õÉëíN3,qïÝŒuÏj†ÆóíÞkª*s×µEc;^ù¬‹÷Nãô¨ìæ7AܺqøTѪьœ…ÍMB­Ìpr54aJ˜ÁÎLÕ UNUùP8äU=R2®®AU úÕMEàøÀéÍUÓQÞg”/ËN{tªÖ»3JåPNOJ¯c’óÂ/sÒªÜùi*$àžHUåòÆø'ïc¦j¬¾Iº«ðÇzÕKX4”ß+ gnz g5¦màÒ¢-#ù—P; õ­?" 6"]·Ìãj‚ æšRØ%‰Ï1U!–YfÏ,zþ2Ë,„ã?áWàœä3R8`E^·œ«;èÕn œƒÐÔê•”‚CtbqVU Fê2C}Ö'aP”a×=9ªÓ hÀÜpx>ÕRd02qЊ­*Ln8<jƒûQÚ^3Ž”ŸÙ &LNd dŒÓF–®IF-Þ£ŠÏK¸¨ÙçµC¦Û•Þ~Tlý*(m¶Ü)oº‡?_w.åð@==ñV¤}ò™yè>•eÛ|…CH·púMà®ÐÃèh À5Á`òÛºP̪FâṪ)PvÜâ£U#…B)ФtB)¡H S5èÝ|¹Êþìü¤Òj°È6ÜùŠT†A¶le[ŠK@¢R£¾sQئF›aÔ~=ëUNcá„x “Þ®YpX.9ã­Z$08®:Ó°Š7)Ü;’iŒª9Nɦ0PçëD , _­Ki*Æ[tl÷©­¤òò­ãÚœòJU”/•žS¦¸«ƒˆ‰ã Æ$Ó9G„ö•Wìè œ…,çÜÔ9Y NU~|ž­LÊËaTü«‚3Õªx¶Â§ÏO-HÈc÷EjZ¤v±·ÚÓjç§Ò¯Å²Þ"n(ê«&§ÜoQAÆzîÏîv];ç°øëEäþ]†XµñïY–÷²´É Ü1ÿV¢³`¹v™Îb'îüª…µÓµÂ$ò7aÚ®®™açœîò*႞洅žŸm{æ|ò*üʤdW’ÎÊÞ÷ÎUgÚr£¯5SQ¹…U@ÏqÐU BàÝ^6 ð `UKÉÍÕ㼎1йkHH1íß8Ú*żeaÛåüÍß?v¬Â…bÛ°õô¥’h£!%s»¾ÞÞ”¯,Q°I ï·µ,Q6ÇäNÔèï­…÷ô楎úÛhD ¦iñÞÀ@T7­? ýáŒ÷¡÷†3ÞœÝy\{б0_‘˜ÝM"ÄÁIF Žêil•bô4ÒÎÏ×Ö¢- lg'Þ£%óŒçëQÊÌ0ïBE2Bý»õ"šûûwêjD‰ÙHFŠž(ZE;Þ¦H‹©ÚAÅBPÇ·kŠ ’¾Q]®:{ÐX•ØA )c1$qÖ–4”ä‚xëÍ"#žGnµfí‚@øׂPŒæ¤¹“ll÷ŠppFwsO¹rªp œ£Ôi ±lÏ?ÃTâºÍ ¸9íUa¹C.Õ@ àÕ¥r’°Q»½H¼ÆÀÍHƒœ¦¥‰6’\bÜxjÝR&,À3ü]X„,YÆ â=©$y „î< •ò3?ÞÉn‡µG+ÇæÎiHÙËJ{'_Æ£<¿"«<‡øWúÓD (ÚŠYÿAQo[yLnñ¨ÆXîû¿—zX‚ÛLÑÉ$c±8öúÑGm#+Ê›W’G?…SÕn† 6ó~ïМj-Z÷ûB];y#RqŸz­¨ÜýºM±¹úg­ZÑmVÖ’s»ž2z ¿¡Ç•³Ëq,Jò2yQWô¥†ÎÔ™%PÎzT®Ð´­" Ä äóøR<¶ò\4¨UŽ7“ÉúRù‘<†EBªÇƒêjhü¶ÜY2GN95bÕãq#:naÀã“S[²²± ýj†³bÇ÷è R>aéTõÍ9”‹„B>oj©«XœùÈ>R9ö¬ËExîQœŠÊ·VŽe#Ôb³í‘ã˜ëÅ[¿Òa#)Ú늵{ Å0fR|ÅÇç*v€2)t42à•ʨh¨àÎHàŸÖ¶b\©æÓµk@ždl‡ íÚµ#A"<ŠæÙ€»‘nXùoòrzb¹Íán$YyVàäç•φ q"ÎHWãéRØÙ¶,’Êò ž[Ò§±·E»Hê輟¿íSØ[ÇКG eWÖ´.e(’Ü"•f@jåË•2ÜD6dQVîd)³¯Êv–ñ¬í6S=ëM ùrqӊϲs%ÃHÃ'¿Tt÷ó%gaÎ:ûÖžç\¸Áúu«Û™FðAöjþæQ¼sY%žrÍÑ¿JΜ—˜±k:l´ÄŸâ¥´}Ê&1’9ö¥µM÷˜ã4ë4ßp£òkdãî’rxëL€FÒNO´NI˜¦\íó×'ô¦3¯Ý‚M0ºà'ZB rH'üóL#Ç֚à Òa•Ü3Årƒ˜‘@ …9'Ö¢´–Ky•IRzúRZK%³‘"’¤þT–Ï$ CŒ©>µfPYà ‘Á©æÜÒïÛŒŽ*i7oÜF28¤”NqߊoœPmç›æ•àƒjµtÞl>Q·9ïR^LecÁ7Ó®ä2Æ©Œ|Þµ’,%¨XÏ IíYéjä´›€T=æ¨ÇlÙ2niéZMæ› qÅ[†s#àñÓŠ·ÞcÕÅX™wïšÖ·‚Ùãój‘ܚЉ )¼€õ¨Ñc›'žx¦Gootž0p ÿ:jEêÇö"›1¼UÙ®ÓÀ sQ̗Ȇ(å^1Ó£š; …O—ºÖ£oäb7fgqæ1þ•‰oör¨ÌYÊïcîk#P„@D<îÛ’jµ¼“\ˆsŸÊªÃ É(TÕKhY¾QÒºn¾.ÌF6ç­öuŽ,L» kù adÉoCR&ÕTºc•ü)àÆ(2 ö9_ž ™ïž)rb“xmÄvõ‹3Ûɽ\±î=i<ãnÛÕ‰ö©RY¥€– l‚˜éþ5z+Ù®-Ù˜,¨ß+&9ãV’âI`fl2°Ã/¥RŽÜ ƒ6>SÀ#¥gÅ©n?.GªÇï—9p¹·-å$†vq‚ÂvÏq)w"›tÍl$8SÜTz|°y%QÃHÍÝ Sle‹È(¬ ±ûÂÔZKE±NY›·z¶>RJáO~jÂå QòçÞ§ @8õªWÖ–ò#;›Ô«yo «;»Ö«^[Ã"3°õª€³Æ‘€s×­RL ”'AU# L¡: ´Ó‹:ø¹Ôƒ·sV„¢}>ñ[™îñÛ5`¸¸Ón‡Wåã¶k:ÞåìåPIÇÍÇZ¡í€PsÜÕ. 2„Ú1ŒVµÅÖËO$…ß=MhÉ>Ý=æçcµF;Uû‰öXsó9Âý*„¼Ñ—TgþTáF• ª:U¡¥pRwt5~ÎßìÈYÔ4‡§5rÞ/³ÆY€27AVà‹ÈN@ÜÜT—r-­‰#kHãÿt÷©¯ vºxÚA’AÉ=ªK¶ö!WÜrk&à œñYQ·Í“ÍfFÇqÏï­$bœ ã½?o8ô¥ÚvŒíJ0vŒãð¦²+à>¦¨+’Ö‚ ®N(,F0Øü)œ§ºR99$”¤3#mÏ©ëJÊT‘€ö&†F\žÆ­N@ùû—ì1N»+„TÓÉ4·%r‹ }jÙÏOs(!ñϹ4·iö;²åe<Ÿrh¼ idCðß®j½“£Ç¬ù~j©fê$YqŽjµ›(0Ž«‚êÙʨd$ûÖ¢]۾Š…‡^kEna}ª6æ¬FD*F ämïVã,Ó Ü¢¬ Ý0Q³Ôm¦Ip̸ c_nMU¹Ô¥•vƦ$öäÕyïd”m@c_nµNK(î¤F—yìpy5Um–êTóËäõ9ªël—¡—$ôúÕŸ³Al¤B›ûsV嶆Òä¦ÙsÜv«AŸ%pàòqšPûÇïb=³Q ŒØ‚Ì?bËæcx,EF³£°Š/,ü9Á¤óVB>éõ£Ì0Höð:tVæHÝZ@YyùyÅIŸçE"—Eçå=)c³Ya}Ì /8xTç£(þtåµ{t ‡`Ü©QÇãO4*î=ÁÅâOœ²ž•DLÁŽTà)±5ÀcÊÕ}RÓí¦U‚ä—cMÔí~Õ$P¡“¹E¨Úý©£‰NßcYÒéÒÙ\Á4¤MÀ±ú£%Œ–3ÛË.»9éÁª†Íí.íäŒB~jܸÛ" R瑚ֽP¾\ˆŠ¦C’¹íZw-Õ@/Ôf«É¹Ô‚ÁÔUI·IÒÅê*s$x`0;UX¡X€x"ÜÜî8È Š ƒt1îlœg¡Ž‹º4ÉÁÉ•™Çu"«…צ*=1\\º+(÷ºb¢ÓU–Y‡ÏZŽ]2K›ÍȪêALk nnþ@¹cŽ:Tm`ó݂烊YɸŠÉR€qýãF¬».#³R?vlxÓuUÝt–‹ÿ,ÀÞ5£EmxH—,Þõm8cÚ¼$kÉõ5yq Uâ4}êN<÷åÃåÏ8äR®nÜŠ§ªæ]¥Éžj¾¦Æm…FSÓÞ«ê$ÊWo+éUí­$åÆÄõõªð[;¸Ú¾ýê-ŽXa}ëPûØ¡‚O·|‚z¥2¼‚0}iDDr®h‘Îx …'©8êqÅ4àœ“;HBç®@ê@¦6ÌçqP;ÔÆ+œî(éLm¼œFHßy³Û<Ô{VFê}‰æ˜\äøÕëHÓ1–Éfcµ}ªÖ•RËÌĨö6;)bKÒ¨ø?g‰Ko ÜŸZÄGˆÔ6à½IïPø„ƒÝ*´1¼ºBÅ,Êãž•B4i,ö'R3UUK ‰×¨ù/Ý)(Póš€+'ÌÇiSP xö³k¦·‘å´…ä-’Ïã]ÊóÙÀÏ»yR3øñ[Îæ[x!¶õ£æû»ÎðyªñÆ\ðçvqPÆ›Ï sœmÇÉÌø!€sš’íD6ŠKáƒ`¹§Ýb;pw|ù¥·žGÊÆá€ýþ• ½ìÒ+F_‚1»¾=*(.¤• 1à÷4ÕT]ÙàŸ”y4ŠŠ¹"CŽÊ3“B¢ŒÄŽÙŸ§ÉåùÖhG8‘sÊý=ª+­=žÜ\Ú!;d@rG¸ö¨nìähDöŠÃ'¹åk*ÚyíexÕÙ ùO>•› ÄÖìá$e'¯5™ou4:onzó]z”K…¥“k`g¾k¢þÕ„éQ“Üu®µ~Á»á»Ó´é!»’V_ŸhÇi& ɦb»ÊøRéÍÌ’¾7Æ*iòËeG<ãÚ¤½-Ào,ƒ¹^žÙ§Ü³E ‰Q܌⠖Iç¹KEµRîêk› a8Ú«O<³\æ3„AÅ OØŸCÜS#n$‘‰½¨TÈÇšs¡x³–}Þ95,‘–‹qÜlŽ´ùŒ[‰8ì1P=É´„Ȉ Î?:‰nÍœ[Õ`1×Dn¬%ÂÃŽµVÊånQÈŒ$‹ÕGqU­fY‘ÈP¬9 T6³¬±»(”ò£ÞªÍw —ï3Øò*¼—2 8b0xªÒÝH¯Á#ž)¨ë,ë#ŸŸ#ŸSÚ˜¯¾ád'-sH’+],­Û³õÅ\×§ÃHT:ïb3WµéãcÁÍ˽°1“VuÉ“1¤K´ËcŒÔ¶ˆ[MpUž3´žôëT?bQŒL®jX¾Æà²dg½RÅÎ~ð8ªA˜¶Zª’Aê8«ö¡‚6ñŽùÍ]HF.8«pµ·=Í6òím¶ü¤– %ÕÇGÊ~aÀ4Û™Ä$ `·j–YœuaRÂÂXÃgŽâ¥Œ‰áÇ4éB<³ÅV Ç^h—`a·¥W™Â¶<Åç½W•†q¼T0 ßN²ó*©ã’L²ËR1Ö¦WÀÈ Œu£¼vøeù˜Ž¦¶ìl"³—ær>ñéZ6¶©l¿/-޵C]‰¥²`‹–S“ô¬­y<ȉA’§&³u´óaÊŒàóTm¾HbPHxöÏ5›B¢d®ªp‚.HùE[$Òüîy qÞƒÉ0V'“ŒÐmÄ“$ŒœVוåF±)8A·ŠÚ–.%BÌGjÖ’-±…$áGjƒj³¨ç5M  *•žµYKciP3Îid€²7?3RÊñÌívçæcK#$¸\1îÍAB¨A:Œæ›öfPw†LŽ´Á \ït½#»œ*r?„w¦9‘¾T.ØtSd2>V<± ¤ŽIc4sÙ—û‹;ÉmeóFY:2ÿx-¥ÓÛɼ呸oz¡}¦Ç5ÙšÚóö&«ÝÙÅ5áxœäg±=ª­Í”rÝ–‰¾Fî}i%±h´ÙQ·-î3O–Ðǧ¾xdÆïz’âØÇ§7©½ë?L¹kKá,c?)j¦›vöwbX'Ç­SÒîžÖí™9ÈÆ+­R[TwÏ#Ì=ºŠì#Ž;‹5yA9Rç·Zê$–àÈÍU $q޵*…·,«´ô;{Õ T8=)‘DzbAùZ’!Ä(_ºÇ®)#ù£Û.sëK朒#ÇÊ_µ8ÌIÀâ<|„ö¥3óÂc‚j­å¼³¢.ÈÏÞ*3š­u“RÛc'’sP\Âóј,gïÞ‘tø¬å’hœ‚—ìqÚ<’Få zE´ŽÑ¢bÀàj­Í™#t`éTçµ8Ê`ûUií¾\Œj¯œ¯ R»9É5[»0ÈÚ¨¢·c(ÏÊZ½¨%¼¾RÏ2ÆT`¤ŽüUËņR‰,Šq‚:‘Þ­]¤R˜Ä¬Î>¢­gpWr"ü£8À« ûð¬™HÇu¬«îÀeÊ ãéM>O$ÄèráÏó¦æ çÊt9ê9⛘wd#)Ï^´ðCå–Û†É-ÆiûVLFn’[ŒÓ¶¬„(8ž{ÕkË7ºe* 1žÕ^êÞK†]¡¾^3Ž* «w ŽzSíáh#*ï–8"yöãŸ1³±fÍJvíÚ¿*Žþ´æ*T*ð£€}iÄŒ^ïZ‡€@ì0+£û©Îkœ…8ô¬‹‹écÔ’ÇʽGÖ¹¹®¥MDD£…ÎA÷¬Wº‘u(ëI¨F¢Ue]£fáÛ¥”J—!‘B«.à=辉RãrpÈÅEÂYba‚C ãØÔPÊ ð°ÆCùdq dZ—€¤•$‘ÔV–¡*ª’Cïj»y"¨ÁÉÍB£1ü òk<rþõªƒ®FG·­J»† t©€‘m®¨*Uón*ØõÅRÔ¯<„]ؘµÐýjÛ²€y„Mìz‚òìÆÞý{Ôú}äWp‡T³6Ýoð«–3[Ý*˜×ÊsüY9VôúU»Ia¹Ex€F=Ç­HT¤£#†ûãúÔ&Ëœ:cqùÇõ¨ŒxŸi\g¨ô¨f‹ ª28céPÉÆEè3†>ƒ­E·lˆ ãæÎjY[Δ)uÙÓ8Í[žàÜÊ#gM¿t’3V$—Ïm€ÇNµ–öÖ¶W!™ ÁU{š "¶¶»V•7(aòö<Õ$ŽÞÞð€øÀï[SKç*À÷=1í[÷7Kv<‹RCwn˜ö­™æEsŒ“ý*)aeˆ‚î§OÖª\[²[Ò0lò:~µБRä5\Bòȑی*ó½çURÖ[‰ãKpv§ñ7AUÒÝæ_u{š´-"·5ԥŒäŒô­Ób· -Ì»¶Ž ®-œp†’wÈ9=+>ÖóíM/ÊQ…ãŒf[Ý –“å@ÀÈíT-îDåø§­\tgà9œö«o‹@ g$çµZt@dçÖ£³I DPzɦ%œÒJ«½ŒŒõ¦ i$“¨ã§|TEž|Û矾àdT;ÚdÛ98WaȨ‹˜¢`a'žŠÄhd»»ª–w<ã°¬¥ŠK«¥AfsÐv¬¡—7J€Ìr}…kKv!›È^ª0IúVƒÜù2ùC¨9­'¸ÊbºþU4dH»Žý*d*ãséR¡»‰hÙüC'ltи9 BªŽ¬Õ+²ˆ@ Æx§³(îîkFWؤ’G¸­›éÌûƒm$ãŠÐº”ÃàØ5„ñ#kC$±lùW3j ³Xç?…aÄš£rXäÖž§{`Tr¿-lk–äÙ¤Š9Q·ð­-ZÖáÔt¬»òæ^vàƒŸ¥cÙ.u$ãkîúÖ}’ˆæV'¡É­6Ñ•T€Ýxèk^ù"ë,k…qžEh]F‹²Œçñ¨S*ùû­Ò©Û£¬»†7™ôªð+$™ã>õ`d`t'øàÕ÷c••½sjÛ)7× Öv¥n·Hb*"pû”Ôɼ‰eQŒG |ýEf]Â'E@»]Z›§Ûýù9WrÛ›‡Š“O‹ìÒ,GçrÃv*M>³m‡ ¸?7¶kJd"à‚s€?Wïa"÷çjÀUÛ˜ÏÚŽyÀƒh¹Þ®yê3I&”+œc$fšú~>|’1’)« $à+#z©5vð»í è݈;²~•A$.änÄeÍšÜÒIc9sNšÇí>Z4«¹SÆ)ÓYùì¹u{ãšK¦–;y6sò:ÒÎòÛÁ&Ñü$o^ig’H!¨ÇËõsö÷î·´³;Âʓ۽cÛßJÓÂ.&w‰['¶k*ÚþG¸g”²ŽMué,B ñà ù{WaÛÇoæE-GQÉ® IäÆÐ:Öþ­ ­kl„Ÿ•˜ä7¶+UÕã¿F··F<Þ±5J+Ôk{pwÁ= XÑlÚ8Ê¡±Œz4k"!•äL…Š~•jVÝÚEãùT: +*N3¥WÔ7”8c´œ}*@¸ˆ…${S4˜e1’e¹ùC6—KŠâEÏšÀfÁ¥ÓRâD$É€ŒšÕgH£òØï'¨<æµ^DŠ˜‘ÉäJÒwDˆ#ÌzæªÂ#‚C$Qrqºª[”µ”ÉaÎFzã5RÜ-¼¥ã_œñŸJÈœxáÎp*k&P~ÔÛþöìýk2@MËgïnüêΤÍžª¼3‘Óbì˜mFA`3Ú§¾s¢ª’ rj®“;%ÚÀÄírTóÒ Óe?hXÙŽÇëÏJ‡LŒÂ) Ãw­]BÐInÂèr žµ£{k˜‰÷`ädvþµ¡}nÆå¶JôªiŽàŒùDû‡Fͦm‘2‡ïn ¥e$&É*x9­²@ß<‘+þí^û$-—‘2]µpÚDNçLm늙±BÄÚ=jA0U c¶â9© ˜P±§8ÆH¨K(cæ°9ãÖ ,7~ñ‡=ɨÙlÈzñ[.VÝÒº+¸ÒKw2“øÖµÂ·pÝ5‘*êpH`•s6N"ÔDÍ‚Æ?ñ!5)è+ZUÞ»‡*Ý«£ºÏ‡r¶c#¥mNždg(yÅR6˜•Kª{޵”lOxªÑ„ÈmþtjWÐ[Ÿ"R@aÁþíXÕï-áQhüt< M¨Ü@¨-ݶçÓm$…ÈUmêÜ—ô¨tæ…¿rX>ÿ•[Ðÿ‘L³1¸(Hf=½Mt$†åsj³z’A¯~*[ ñF@PãéUb¹3!Fá‡?ÃYfá¥ù$ê8ê¿ýj£çy¤+}î€úVmü3­Á(äÉŒŒuªwk nàóW-®¤»´Wr¾b1 š½Œó©õÀÅZØÒ"ãû¼U¬3€w`³Oo^ò:iÂБ”‘ċЃJ-Ø ¤Œ})IÉ!‡sÞ Ë31m㌷z…g‘ ã×½Kc˜ÌßÂz½f’ýŸí²_ªž„U¨üŸ7!·õ¥b^èªg ª›òvÏáXWZVÙrŽªn ¥b\é%eÊ0òõü+N Vkrqümý+^Þ+¶ð21þU¯•bFŠ;oßD$m¼1ïéY×dÃnóEÚHäf²æ>\M"D¼”ã¦k6lCL‘Àà6:f©ØÞN'PÒnV<©íî*K™<åV9R{v¨ìî¤i•XäÒº(â’O™f}¿Ý­è`’PH˜”þîõ­”‰äÉ úÍE*¨“ý®3PM,¸ëøTNŠþõþLdœnÇE PÊ‘D…æ%¶ÿ=j)V8¼Äü½…Aoª#>#Ä·îúþ57ѱÄb8Ï`Éœþ57Q9ýÐ}ˆÎk Ê¶JšêÖT-Û&·ƒËÏnjÒl”2à³ÕÎê0{Ÿ”‚Åy+ÅbÝÆmçÂí'8©!”-»¶ï™¹=*Ý…àK)2Çy$Œ„ŒUË[¶–;‡!`wœ³öÝÒ¤Iœ7žròÆáÀ§,ŒJÙvÇ‘©ZM%ÓLÿsûõcj1M-ÛM!á»ö¬›èe’äÉ/CÜv©m¬ÿtÍ‚üsR[Ûº¨–Õ±·_ŽjH!xÔInÄíägŠ¿irnN&Ìr¯8ì}ë^Æð^ü³1ŠTàŽÍZ¶·írÇcŽ úûÒI¼¬p‰ëëT§ƒÍ¿;@V-Ú©¼îÉP' ïY—×J·RY[;»)ª7³…¸hˆù”õþíSºDæ22êO4ºuÊIß»(s’ñíKg*4r› äzÓ¬äŒÄìn9ìjÚjðy»$eŒ0Wåüjý®¯šc—b)þ¿(«¶úŒ,þSìö#½[òV@Z «pÊjã[‹ÞYŽW?)«-y–ÌÃo3Q¬eœ«;+{ôªÂÕ¤”«;$‡±éš€@Ò9ù¾oCPê‹X"‰|„p%î£%Œj³ ÎF~tÛ­Cìh«*‚Äp£¥cX]Ô ÝÜŸ $dž9éY6W%ï~ÑtÇg#$ð8¬Ë ¦šèÍtøŒ‚=í[öñy±aÈqób·m­ÌÑ4±*H§Ï[QDÏHŠ˜j’kˆ- ßtv¿§SRK-µ” ׇc…ïN’K{h·Ü° Ž•?‰'i ÛÄ1À$dšÊ¸ñ$Ŷ[Æ©éžMfÍâdòáŒmìO5©¦ßÅÛ:0éÆ ÕÒµÔlê«:Nö­; µ½OvÈ;UÉÑb0ª¤œU«¸bŽÖVÆÐ9-Äk»·LknÛ;^ S8ÝŽk^Ü|¯ûÝë"-RÙ¾WZ¤Ì|¥àŒóR¬KrÌ#Ôn©‚ ‹lç*´ÖrO"áFTúöªòZK4B‚Túö¨ÖI]@Qòœ:Õ™c·XÒÀZG¿çAósQ›O90Ò.r*eç&¨½{TMhfnñµ½{UQ§ÛÛÌ9|ヷ¶Ö«µ”6Óå%ó¸ùvö5[ìQÚÌXH$8ùqY³Oq¼î•מR’â|àÈÀШ÷w±æ3ÐUý6fšß¹Šž¾ÕjÊV’?œ³<ý*åœÍ,[‰ óRj)æÄáCòAR{ûT—ÀK…V ®GZ[åócu\õÈëYAIll µšªw`.ëYè§rí\b»(SÉ„yŒ3Þ»Ku[oÞ¿ÍÆ@ë]TamaÄŒ3ÞšB¸!Ì9ªÓ$7q•‡ ÈrëPʑܧîøe<ƒQ, ¿Þ†ªÁl ûQ>qÙºTÀ<Ò~aN:Œ6HýKqÄcæ G¯aO™%O¼^Õ…[*W*Þ•EpWi ÕVVpT‚A¤T‘£Ø È퓊T·¸‘D~W ',Sº„ØFÀ'Óo®9#¨ÏJËhdVêW‚¾”À î'ê)T×h9¾ï±©mÚÊ1àžÕ"Œ¼’3k7[¶•ïLFÌ\8ôªš´÷Œñ#0`*–§o#]³Ä ݌Ժ|qÚÄ`wO1¾c“ÖŸh©03¨cÉÍMf‰y À7R}j†©»É½n“ÔŽõZý!2ee Û+Þ©ê1FdܲŒžâ¶tK•{Q ¸bŒñ[Ùkcn¬7•À$㳤܉-Ì`‚qŒšKÙÅ­ü99VÀ<Ñ(³Ô 9Êœwýi.æÚŒ9<0Æk7ÄeþÞ€äÚGÔçõª$Ýöøòr¾PÛrk?_ÞuLpPm"®Ï§Äš*­ÓìT€ôjµ>œ‘èàÜÈ!@ä5Z¸Óâ]-|ç ·‘ZÅ’­Qe·Ÿrg ©Æ d5²«Á9)ž6œ`Ö`ûU ‰ Þ2Ü`Õ­M¤šAçînî§ŠŸR’iæ 99ã=jmI丗÷¹û Õ›0&8Á5bÇHiÈÀxɩ촮B+Q-ÒÌÛG ðkV;H­UärŒªFÐ21øÖ”Vén¬Ä©ü§Òš™+(û£ÜšŠ7k‹†D9QÇÞ&š¬ÓÊÈ2@àäæ¹íJÂX/<·@¨çä=¹¬MJÂ[[¿-Ô*Èr‡µa_iòÃx# (sò[Vp˺Át€w?_JÕ´‚H"ò®•ö·pãéÏ¥l[FñD#œpôõ;YÝYÂŽ4ˆåZIœƒšDfØâªáW{rqÔúU@¼»œ’Ìj¶ ÞÇ9±§Ú9WY7g¯+ÿë©maùH|önEIláx~}zU)µ‹†— Q@8áEWŸUžIqˆÂ¯ *´š”­. ãS5í›F Ͳù‹üCŒÔ†òÕã_:ÕKŽàã5#\Z:6¹z‘O³º³˜ypDaîpÔëk‹Ip‘Æa÷4ëYí¤"/Ư$YvMÄñdð«±DZSr[ÆáW<ÈP0'¨ 2 Wù27™`ª{:ƒ­A80JÞm‚¡ìÊ  œî´}GO­XŽC5âo%IcǦ)–L×¢ )g'ž‡Ò›dí5øVnNO=*{—hòÍ·å鎵=ìòÃ#nÛxÛÅKs,‘HsŒçµ2IYgp[ÅV{§IÜîÚO9ÍWk—I‰Î «6Ò´¶áÛÎ3[úeÃ\Ù¬ŽrÛˆ>õ³g)šÕ\œ“N‘Š ¨÷%ÜoxÕrOqK;´JBõî*´Ò±ÉÚc‚zɺ½y0ERå"¨\];6åUVtŠ«,ç~âÙ$zU;‰™ßÌ-’GùíK²•Ž{ƒNÛøXäu(2ÈUC15f%¹»uMÌsÆjhÒ{–À$ç½D4ņxÜ©|8 ŒzSâÓEµÜ[ÆòTŒãÓâ±÷)» Cd<ã½?VeHÒà¶Ð8#½Y×Jˆâ¹Ý´Tކ¥Õ™R5œ¶Ð85œºãÍû¨Ð–Ç˻ҳ·4ê!8麨 aî3S‘К7k¨Ìl€œƒÜãŠXä7¶ôÃŽ ÓѼøX²üÕ$x-žrxç¥fH˜Ý‘ÔÖd‘GSš³d$ëYÇ^=;Ô¶ªÏ(~ïSô©íP¼8ïô­+M5ífs´)á}Miiö/#’C€§ëWì¬ã[¥•Îôµ‘{3¶¡#FÄ`ü¼ÿ f]ÊÆöFC±ۃY—¹¼r‡îž«ío%üHÒ¬£†ªÑîãVTpÕqàk¨ÔÉÊ3º­ÙÚ„ÊWË7Sгii¹D*Ù,}*{{|¨ŒÕ¡þŽ­… º¿ãW‰[5x¤dy3ò¯j¶JÛ«#2™3À¨üí͵Ýrz`ç_í&FÚòmôÇAþŸy(Ρô¤˜ðT•tÚx4·/òe™w/M§ƒK3|¼žWÓ½WfˆåÄ­“’_$fª™bL*B¹/œf iQxHƒ}iÎK¼³‘Yã(Í>ßO’ð%"(‰àô°Ù=Èß) {qVÿ²í¢‹~âp2I<¾ú=¤6æA!%FI'­[m:Ú(K†9®k æþY$¾Ä×?=ä’?UAÀ5‹=äŽÃç* àµ¦ÜM$gç%ðjÍÄÅ W;”ðj͔Ҵyr§ƒV [Ê@7.]ºñœTÍ´Ž ÜÈÌß{¾ Lc†FÎbÇ’}ê­Îæç3eÓ×ôªÓÙo$rëëU®,üÃùeàfµ£™ÒtfžF*ퟖ·I8ÝÉäb­ÙˆÒádçž Óî"ŠIK›×µ2öÁØÜ·JŽêÌíµºóQGn·[ e½Ÿ˜xù‰8 K{Mþ¥‰«˜ E žH­ÂÛNxQdÀB#Œ‘Z¯¶+&C€j+RV¼ûŽê«¦º­žÙ ‚¹,MAdÀ[sÊçv{Óƒ’à©r~`zS…Á3™®ÞFìýÚrÊK–c {U7…A ñ1 žGó¬sܤ«qüë3cRóéõ«fy¢Iã9æµ~Ûug ,‘F«Ù³’~µ n¦¶EWE ëœæž&`åÈ©£Š;é¢%1*Ä—$ò×¢œ `™B¼ñV¡XÀh"ùL}×­OR¦4vúU¸î’èH¾6 (µ[ˆõš97‡pî†³î­æKôupUŸ·U¬y¤ºÕź¹?þºÏñµÆ®a@@ שëýk;YwºÕ¼…áÖ´b†ÒÅvÇn¬øäoZ²ÒØÙ † ewÀß$žµpËih¾T)8sÞ¥”.<Ô}¡—îâšå|Õ}¡‡@8¡Š7ï¬9â º³´•ƒT÷‡Ì0ócðÅ»¡ {ÔÑC¬>\,  y©‘!ŠÜGv88©ãH’!'qcÎ)÷ˆënê¼å±{Ãlê˜`W‘ŽzT·HÑÀÊ¿6W§zÇÒlþ×rîT„ žƒçYšU‹^Lä(ù,Ýÿ^³ôËCs#Éòœ{õëjUd1#;*ŠÒ¸‰¢(HŒUùQ‘ÂfQÎ¥žê­]ÐdŽG"§º½·‚Éü€wœ¸r*K»¨¡µc ÀÉëX ªÏ%Î ‰Y‰ïÉ5Ï%ܲψ×s±ïÎk+¹e¸ÛnlòMmn`Ä#b2Ç5®­ I¢ÇlÖ¶è€Û"'­1±Z& „gTr…¶æ&Ü­ØŠŽLBwóØŠV Ì¿?ÓŠ$!9(C㌎)dœ‘†Ç¥D%”8H@Ï#Èî'W ŒžGjjK(l#ázš&rÄ3¨ç–âGdã†;¾FþíY‚ÆYhRA=qTÎW!B×HYÈÄ ‡½]Ž$·Aa˜Ÿ¾jÌh°þÕXDXÇ–€ÿ´j;+Ö¢Df>b‘…>´ÄR[ÌSÐՒǦC7©«8#˜÷56Iàrkaá‘€=­Ùìc•¼Ì…ãjÕ–Õ—$/®*»ÇyvÀïŠÌ¸ŠÜHxÄç¥Q•a»qã¾iþlQI÷±ÇaÁÿëÔÿl†‘(8íßKö¨áœ7 `r).%.p§ ìyj‡Q½7R€„¬j:ÍEypn$Âð€t¦È£gu£ùãˆ8PyÓNäU*xô4¹É@1»‘Žõ–pÑž3ÈÇzcîudÒžÕ‘§w4ê$•ˆnª±#¾¹–PFlöô¬«{Éå— ÌÝø«Ó±]6æf…3ß=êó«®—qs Ú3±=Njìá¢Ó&žA‚NÐ;óQiH÷ãyØ¥ŽIïQé‘¡FØ…'½7NC%º<­µO¯zžîâ;C¶&.ßÞªK¹â¶m–ìXÿxv4û©ÒÙÉõô­+IÙ“ ÉìAíW´­EäÛg:åVÎ8ô5oL½ivÛÌ¡½ig´‹!°G8•%Õ…³Ê|õëRKi²mŒ ç¨=)“ÄÁÚNÆã޵VúÒhã ÊqpGpj½å´¡Gp Êß.Nqס¦Ù&øä2Ä€§=zKDß¹,~RjE~VVü³W!%£t ºIÀÍYAJ2àºi³„)${v¨/!uˤm…lgnECs :¡ 7Õóvàb£o'ËŒI)ÇÁ¦¹M„¦I*0qÒ£B³Ìá=CT#›—‘cÁçJ€¤åÙPŽ¡ûÒ=´ƒ’ÄPÝ©ÓéÒGšJ˜L74éìš%ó ‚‡¶y¡NÈä‰[}Óìy¨ã}±É8ÏÝüy¦#â)"èzŠK¨âŸNò^o/$©äzÊ®ÜIm64˜Ú ½AÏò5jé­åÓÖ6s€ÂõÍAmZ,k ÊýíãƒUíZ8!–4=wž CnÑÂéåqÎãÖ¥Ô¬ÖX²ÁeÍ]Õ,’[XäPÆFì£"¬j«,1•ÈyÂúU`¸:}ÄÈFcsþý†âÞY|¹zÕ4‚O°Oo#’ØÊéXhí¡Á!Ôõ=±XÊ͆ §ùV,LðÌ’ëâ?h†9ÂȪ¹ã¯ÔC‹ÈUĘ•‘ýúê#"â5pûdUäzÓŠî•NáÔ 7r†îëHW'å_˜u´¯)PdUè1ާÿ­N–íòf@Âí#½\0Ì‘ã8Á^ôˈ!¸µiH9uÁ$ÒÜÛÅq`nH&GP'¿zuÌMkæùŸïÖM­¡Óâk™þl cÚ²"µ6P™ß“Èü+.;seneo˜ãòª—Z¬òŲ3åçÓ©ôª“_M"RW#*œ×òJU•ÉÅmZiâXÒG?>ÑÉ­Ë+Î$ldšÝµ°Ê«· äÕ¹,Ô°‘˜ap Å]¸Ó¡ ³Èû¶1€*Ķ‘+,®IÁèxÙ¤ʨp£ŒÔ7·¤` Q€½*+‰C3ŒÀ „Ûne1éPhó˜®&P2ŽGNÆ¢Ó%(ò()5CZŽK¹°¿(ÈåºUh=Íã½QÕ£{›†ÏÊ3Ö±üæ·b°’¤pǹ¬¶ÆÅc;qÁ>µ˜Ó42ã@<û×KtÞ\ŒóœWIxV} %R¤¹\óšè¯JͦF ŽpJ÷ªþY[(â@ƒ¸×š¦Ñ°±Â)ÝÓÖ«´d[F aV¨_GÊ•Â?:£t„° vªWHIVä1ÁLŽÂEïž½jÁ•»‘9H>é½iD-m‰:1è)–Ë<3|ކl–fàÿõê-=¥¶¼ ј]¹-ßÿ¯QY‚ç+2yD“óV‰’=Þ[:d»šèæÔ±†YcºOV¹¹·Þbyt'ƒP¼±[ü¦=£ôë§m¨‡9}iª§‰òž¼Š¬¨äEù†qP…lÙŒ•ÍR¾Ú!{§åW‡éT®aÝÝ7!NX}jÌCÉ{—äX}jŒ´¸–Š0‚0¹öëP-êM(ó‰X¶“Ñj¼ZŒsÊLìUm<ð+Fx%ÈxÑœ©ê*寛ttq™†_âv}:|–A¸c ƒÖ£W,J˜¶ààö5T‰Sr¼eHë‘UŠJ¹…p{ÒãsÌNãŽOJ’$®I9>µ,J>Cמµ)bÒ‡]œdzU±)yÕþe)ÁÇ¥YW2J¦Þ8©Ä :n,Û»2šÓKXîc,ijv`y«Ë MO'ûÙ¬cM1§š±†QÕ”søÖ>³¥¼ æF¡ÐŠËÕtóùˆ»”u sT4ë÷‚UäÇÐJα¼x&\±ÙÐûV}…ÛE:†c´ñô­ögWÁL€rµlÌdG“89ÔVÄ›Ðò¹A¥"L–Q“Ü÷¦²¢.C(Ï¿zi‹Á'õ¥HævÚ§jnÎ Mmć`}±îΠ⥂à¶ö&¡šÙˆdo™MGud˹̽ȦOhFWï)ª–š ~r»»0 œzTV$fâ7rY7g –‘Î’ž@bqï[ø§®„•qò€ÖÉ!W¨V]ĦâéT1ÆàXSÉ}¨ÜvÚª‘$w}Ün€iò(™;©n”B^>wS®ÆZ1÷…2ÍÒ)>ï É&—L•!|£ É&–ÉÖ)ëP^ßì̻n‡©ÿëTÚŒBåÜ.åÝ»¯ÿª«Þj³–Û‘»85N²»˜Ë, r8S„ÛÍ1–HyêqUàh%”ÈðýE\”+¾é1ãWµ[˜¬²™% ž6§n;U™J¼ŒîFEŽ”tî¢ »W©ÀäÓ^îIQaáPrBô?ZFäÄg…œQ¶6‘éIµ|¼š£Ž5vEf*è²ñÖ¦’'•Eó ŽÞ•#ÆòŸ‘wRµ¸š/ÝåIþR5§˜Ÿ(eìÁ‡iæ&pT¹éQ]Ç0gè‹…Ú8ÈâªÝlGËJŒ tª·EUÉnN0§[Å ™Õ£p0A=Œ…‘í$`É' äRÙ?™Û¹ ®2õ§ÛƒÀÚHV8õj—K“ʺ^HB#Ôö©¬G>ùŒ{Õ‰ˆØ¬8+Å\ÔÝ|¸Èà¥Z¾qµ2Ô!‰Á8<•êµZ!PÛIüÄ A±\…Üæ‡U¸CD†'!‡5"5Å¿’†,CŠ•¼ŠPƒ÷…cO¢@XùR2;®@5—q¦Ãæ‘:¡Æ23ƒŸåY—d !ò÷"7åšuÄzÅ‚Fa›|1¨_”8õfáu{ŽH¦2Cà®QRܦ©hHe2€`JÖ·fÔ,RW‹c:à†ãw¦Qõm>)ŒA]—<ÿÖ­=¨Y#²mv^ARv¢TŠPÎå3ÐÖ\‰…R'Üû¹\úUˆÕ"|°'#4n¸ $ªAç+iû.†Ž)TƒËÈ4ò“) ±ºóÉÇZ²gk.Q²?Œ*غkŽe‰Ú'á¸À§3IjÑÊ#&6o§j¸²¤‹Œ0û¤V¤W1\Ç€ >éy&I“îäÐ×7¬Y%´ÞtCjç•®WX³[[’Ñ‹žEsÚ¥ªÁq¾?•sÛµlYJ“Ûª”cžëëZÖ-Í®ÐÈsü5©hé=¾7ßÒ³e/{©ˆ"Ç–ÉÖS,—wÞLxÚ‡’+;kÝ^ìî!ê+\Þ~vâ¶ŽØ?Ÿ23rjÔm‘íç.O>ÔóÓï©ÆjS€7 U꣓O8p`ËÜ U–*¹ä÷"¥ŽîÒ3n9ìHéO[˜Q•2sޏª—׈±6+üL?•fjzˆ`éüœå‡z¡¨^¬¾AÔúûU}%–åMë®ÈÐásÞ£ÑÑY?´%"…ÏzM0ÛdPpïO•šiHAËž>•Ž×s’¼—<ŸAMbל¼yúTÒÛ4p‡!F>•vâÍàµàQó ãŽÕf{fŠ'(ù«êÒy.H£yQþo—œVöÓ<ÌñÆÎÐf±&´ægHÙÕºb­éö3ÂwÊ…I8«6vRÇóÈ„g •wM‘³'$•eÁ$z㊷i"‹ y_J[e%·œ•ô4ºdlÒyÏ’„ƒÞ–Ê6Ýæ>pAàÒJ³*;ÔwѺ±©ž•Ün`BÈðqŽHnõ\Ím„(p;7zjÏ,B¹õ‘­jW°L‚ޤ/9úÕKíZòG’þZõÀæ¨j:ܧ’Û®9¨4Ë;›ëÕ½a¶#&âÇŒúÔz]ÅÝÚ]0Û |–éŸZM.ÊyîÒîN#,Mnj÷¯c`òÇ˱ ŸS]¯~Ö $d3·Ê¾ÇÖµµkÓcbdN\«ìkš·Õîã”´“4‘±ùÃrÒ¹xuK•ù’³ÆççRsšçíu9ÖB%´n~a]E¤èñ‚ï ¨5ÒiSƱÒrܨîtv2 Œ†lž {U=W˸FÛÎ8o­S× w¼y8á³ëÚªêÅ&RËÎ89¬k{‘ ¬¹e8LöÏ5 â(Há}«"ÄVŒÞ¨­…6wrKøbµ4Ñ´ë†#ç2Î}«KEE:l®y%öþ‚®NDPÊÜe±r1N¹R.0DhXŒäô§\a¬9©'5OH¿KÇ0‚ñLA)üKŠf‰*]–$’)°Jÿ♤N—ãGt“¯¨­$¥g ûô«"b¹òîÈ;¿‹¥ZÅÅ.9ÏzÈÕ#û}äV¶„c¾Þ³o"ûuúÛZp‡ßõ¬ËØ~Ýx¶öí„êÇ=«N_. xí!dc’;ÿ“Wõ¢H"³·æ(‡$wÿ&¯ßH‚4¶ˆ ‰ÔŽçFÞCp¾žµ^¤ ¤d7qØT1ÆÊr2ãÒ¦ŠY§R|ă“ƒW ’æéXóc G¥ZæÞ›HçŒVÕýÊÊðÅ#D‰ŒÖ°æ¼]¢GhÑx#ñ¬[‹ÙıESO{›‡±„†|1;˜ž¦Ÿ$ó›8ùl1äžõ,³Lm£ÆìsëWлÛ&ì‡"­‚ÏnûÄU¬³Ä›¾ö*…̼.O ªF62€'Ò©ùldÏ5fWĨp:“üF§yQ¨U]£¡?ÄjyÊE àßÎçÀ8oQ]>ñ%ÃûX¢·Co•‚œÞ™&èË6=ñÞªÝ#ÀÎîŠKŽGF¨.ˆ¶à7?F¿z„ -»©ÉËf²ÖGÞ9çÖ¨¬;³Ž¬&ªÙ#+qòàÕEÆÇe=Ž*ƒeƒtjÜÈ¥¶|ÿ'!½{Ë5zÎWH'Hù £ÿU^µ­¬È‡r ÍA —¹ác'žÇ5©-Ê9Î#8Ïcš‚Ø—‚unJ¨Ç×4ë,ƒ:mÃ0¯¡íVôŒù7q`îuzU½4³Oä’8«™TŠ3·§AøV­Ã­µ´L© *ôÎ!D c#jd.X rPM<ÌÎ3³¸U.V.ËÀýiyÃ)Ãøi΋v ÇŒ¯UÍ+¨¹ÁLdEWº€HËõà‘Ú©ÝZ¾BLIèHíU®-YVE=È«JAØþR·9­ !ŠÖH‰G‚1Îj쉲ÄpÛïP]šÌEr¥ÖE$ûñŠ«w*‹Šä)<ölÕ[׌Ù¦·.G±¬µÓ-Djîï´œ5˜,­Äk#»Ç«?ìʨÎN kǸ·‰ |ƒå¶H´û<ÞPÅT§­k·‘åÇå8%F0j+ØÓìþi^dãÖ¢Ô"Eµ̧JŠö5Xã™?Jºµd*Ùõ‹=³ ›•ä{Ö5Í«*MÇÊÔ{Ö–ƒû»ic=ÎMhèÏåÚËèH&´´“²Ñ£#å-ǹ­d(ÁyN} Zfóßc–ñ⬱±FoZ©ÚéŸcœ´%ƒ¿=@ö¨mté-g""ÊÏÆî„ ‚ÏOkI„á›ø©e°¸Œf[Ù9ÃK« àUûDá˜ä…''\ZË ¯›6IÉäÑÁ ­½ºfWêØÁ4ØÝ6¥µ¤g̼ý P¬‡m½º|Í÷Ž:ÔíF9 áÎNiò@ð*™0¤rsNxÞ%°tQÖ¡3É–_½åÆÜ{㊉.4˜ÝˆØb£3¼QM'Þù>¹¬+©­nEÄLr[æ£YúuôÖwK*1Ø„Vn›y5µÒ8bÊÇ AšÛÕ4ø$ÝvÅ‚õ}¾«OSÓãekÂ[iÁ|{ÖŽ¡aÍËp£ïUk;¸î¡höAÝ^¸úÕK{„Â:ì†!Âö µÂÜ2‘\éVV\±/Ý /Ò¬,„Ÿ4‡éVOùiŒp)Ïå(.%ù$zSœF>q&XòE*(,“Ö«K` ¶å<©5ZHøU'+ÕI¨< Ï÷kÿÙÿØÿÀððÿÚ ?{̉ÇJ Ò*ñÓÞ‘GZk†þà{T2L„ÔRLyÁàTÉ.PÁÏZ™_ óžµ*°Ú6óž´=zŸ¥5˜Ò3h$ œu¦œŽi˜ÁÍ*“÷@ž´£=ážÂ¤öëJA ƒJß&“o4˜4׎0riJä`€=Í8¯à{Õ‹,ˆeàtÍ\ÓÕ–ÒiÇÍY²m¤”q…ëT¤PÀ1 rrMPpæ'œ÷ªn!‰ïšdXfgaŒœëDc%‰àç›ÜKjžBbÎ~ñè=ªFÌcž¦¥lÆ3ÜÒ@Någäž‚–óe¹ö¢#—Ësè*Êa„ŒxãƒVcÚDŒÞœU”ÁWfôª·>YÀ\š«,ûNsU¥ŸaÂõª«y*¿/ÝE@.$WÎìJ€\8|“м%†@ÁQNqœ °7wâ§ «aG¿i¤"‚v¨œb“ 9Ú0(  ϸ™¥“9ù}*¬ÒŸ»éU&”ÈÞ€U›h3â>õK%“$qRÅW8©%¶àƒ2âô§•Xr.{úT,ã—¦ofÈÓK1÷¤.ONµ ¾sKéÏ4£'¥osŠsuâœÝ=)’8@Î߀¦3€7Â˜Ä ±ü*ª—™ñœ ‰Y½ª ÌíÇc€½8<  ð¼óUe%¥°¨îlUg%›§¡°ŒÍ<Ä(*õ5¿áà°C<Ò €+gFTrÉ!Âík>Yc€úÖ,’)b¬É$]Äb’dœáTã?xŠlQ¼½­$q¼¼@õ­8íR5’vÕå·XÐdž]X ÉíQ²®î ¨›nx&¢lÆh €ã<ûÑ…éžhÂþ4â0~è¥Æ;Rã©äõãó§1ê1Nn3H½i¨>jj µ$ùg ÙiÒX(þY-ŠrH±[ eŽrH©ÄË´L–ÎI0%¯Ù×$““Н*íAŸ®*›®ÕÉüª³®ÑÍILyÀô÷÷©"‚ï J|hTo8•ä¢!—lÈÇô¨®§Þ9cúTS¾Áó˜ÔVNÒ\Ï&›hKÌ«ž´ÛR^]µnöO™QI ýêÅã‚Â4'j~µ=ÛüÁœ ¬Ù%Ý&;U“sb©<›¤Å5Ssn9À¤-ÏJE\¶OJ·lœ3ãŒÕˆýîÙ©á_âíš[–%˜tâ’bI#¥,¤“Šeµ®y!ƒùÓa‡9féL†Næéš´î€Ž?ÕaŽ5eŽÕàçÚ£T ÷¨ÂîÎy¨ñß½**îÂò•*€N) Óûã½;6)àsô¦1ËbšÇ'Òyªò#HÆ¡e,Õ ©f©azç­9Ww§ªàâå‰=…!ç'ÒüÙ>•<¤HBõ¨Àùù¨7m“ß4縕bÚ 5nYJB$U‡ã@Ï=ëe!‰~m¼úbœ± äÔëMJ>”ýÀtÅ<0^‚˜îO°ô¦<…ºœ c9=ê á>µôÎßsL#¶qõ¦Èv`õ÷òZFùH=je|¨=ê]ÙÔ¥¸œi&›÷?"5ÉûÆž¸ ={SÆ}é¶Êþr¾¯ÍÐÔ–Jæå_haèÝ :ÑήWÞ¬]\mVn=NAÅY¾¹UCh7ž§‚µX»™ByjƒsUU0Áœýª*¤0gûÝ…TEùòß{°§–bÙb3ê)ÌÄœ¶3Š{1-“ŠÈ»×<®êÏœ1›‘ŸJ͸ÞóàóéWíàkhÃI·yÕ¨¡kuñ“Èö«qD`PX|Ç‘UïÁäŽj+ƒŽýj+’G~µQ»ãUu\·]™8«í "*’ b­ÕT þUhÆêMJ—*êÞõJ3¸Ô NH"˜"ÞçÍ0F ÜÇŠ`Nw7J­srY€(íQM9cÂŽ‚¢šc«Ðv§ÛFÅÃ7ô°« ûÇ¥†fçœö«fF}ªWR§oûT̬8éK»Ë]©ËÚ0¼±¥QÉ4‡åùWïw ü¼½èn½&;t=é1ønÜ}M €0¸Ï­ €>^¾´6âšxè=i¸{S@Í6Iv¦Gt÷4„ô ×µÛ@ÀÉôªžNÉs& 78§¼F ïÁn¸¦ˆ¼¿šEùºâœ‘†a–ì=FÌ_“ɤc¿–çÐV›|¯€zƬ· @‹ïOTã< «5ÌQˇ1ö¨TY>fÊ«& Ô¢éž ƒõ;]1…U@Ù늙®s€Üu¦dº1êM@HÎ@#Þ¢ÈÎ@4 î8ýiêrp=éAùºÓˆÇP=éJŸLþ4âçm’`1Ô-= Ã̘ c…¥0¬| AP,‚fcŒ±è*Þa$ŒžÃÚ£æ÷è*½Í¼’JOSPK ¼Šf šg]£4ÙÓ.ܞ•¢0®Xò{ S‰rÇ¡óƒÏ¥GæzÔ~o­OjÛÜì\õ${p*XJ³:…ŒË©¦]ªV•H¢@C9Üý‡¥V*¨ryj¬T)ËsíMóù'¯µ4IÍ"Èâ¬À¯S“ÜÔ±în¹Ï©©P³}jMÁFŸV©é×Öž_sI›éH:æuÉ œt?Z  š`!LÓx4œ6ã8Ú•º`~43`{UWmÏæ#OÖ’0<Íîp‘LOõ›Øü‹Ò„l3p¹8÷¦3™\¹8SMgó\·cÒ¤FpSŠ´åÁã5s56}jb}i­“ŒŠFät¤<Ñ+lÀúóCŸÜ\Ñ!>Eg8ÜÃ-ØUS’xëTÈ$ð+JÎXl<œÕÛx‚Eƒ÷&¯ÛÄ ½ó“VÆùOâzU€x8©†J§¨^ˆ#¼1«^\ì@‹ÁþuZöçË]‹Ö²ãRíüLÌzµI»` Ìj”hÒ60I<Ö¬â(Àsóˆ:©«±Â~b7zzUä„"íϧ¥:L2|¤^€R¿Ì8T`ÝsS¥Ú³ð8Zö9ùâ«ÝËæ¶qŠ‚ê]ïÓZÚW*€“ëPD¬í…5^$2sZ¶ðù…“ÔÕèb1&Ð~cÞ¯Ã6ާ­$íå–nëüT’¾ÒÇ©É[i$ö¬©$iœd“TY‹¶}MRg.N9«¶ßÆçó©b‹<š’‰95oœ€8ö©ÀÀö«màP8÷ çJ:~41Ç^”(Dý;ÓL¸ùSéHdþÅXð09ÝsS„` õc¨©¶&Ì©ÈÇSNö_-¨>ôÂX¯–ŒUOzaɰ*§ØTM¾Bš­ö`$ÜÄ75_ìª%Þß5X]±ðª¾À ”œ(@*Qòœ(›ÛnÜšQž=iFH¼c¹žô§uÏ¥) ¹¨™N1Œf£ ãÅFAÇLw¤Ç¯=±IŒRb†dþTëJxëBŒÒ(æ ˆû½hbGJF8µ ¹$äTaK·OçM&¢±§ãœNð VÚäŽ3îkLdŽ2k[œ{SŽƒëQ·Zaäâ ºo.Žçnj9ÎØÉÎ*)›dY¸ª8ÉÚOZ­ŽÄÕ\dàžµzÖ|c«PC…,xÀëW!‹ [§½G5’HI¯Ö™%º±È5–Êç óR[ÚGnC1Ë€Ô‘@±0-÷AO†Ýaa“óvpFI?‡j´¡v眊´ÇRiÄvÈ#éY}Ç4¬=ÇJ­-³ÏŒuZ‚HZ`£v¡’”¯-,vâÇiÝBÃå™Å ‰zsUfpIÊäÕwlç+šÛ9ÈÍ6ѤWàE%²±pà%°máÀ ¶Þcå8«æ9­NÛÜáEGµò>ojæSŽ­è)‡rñŽjdC&$}*HÓÌ Š’4ßÇŽõ ÚíŒàv©p®Ø€8QRpÄŒJiêÜ癎O9Å0Œ¦rqÅ4öâš{SXõ$ð)ŒÝM1›©ªsHOJ‚BMA!-K°]§šTÎ1J€ã6Ò£ëO9QO#ûxŒ²àT–°™äÀ©-á3HHͤFâ8ÇÍ·“K}„—ËQÈÑvvÈQG sTü²­¹²ÎJ¨=MUÙ´î<Ód—€ ¨ ÔÒ;ðF)’I¸#Š…¾ çoaQõ<ô¨¹cÏJq<€¼ŸJQíJ£ÓŠ~R4ÂòOSNbqɧ³TsëZîŒo »»V‹£ª…pËž@­9Ôù‚‘Xcœt4ÐÜ`óŠh<`þÉ‘f€Ç’>`WŠk…xŒg=r)²’=„sšŠ+0\nǵ6;lÅIü)±ÛàîaŸJ¼")݃÷‚ þuu ŽD ‡ ö5qaW@¿1‹I$I=I#‚i'-˜ŒÇ¡4’İ“ÁÏlÕ}¤I¸àš­Œ>ìŒÕpmƤÁØ2p HAÙÏÔœ…çŠTÎAïN@cÒœ¸o¤Þà ãÓ­<8Ù´.iÁ†ÒÍG;0F}M2bBmÆ3Øšd¤…Æ?:¦bwaUSU lÌ8 {u5X£9qéV‘D1ªä.;ëVlE^>_á:ŠéCIÇÊ2~´&sïA~Ê9¦•ØsüF›³ÜÓvcžæ—Ê;qós׊x…‚ägÔœS„LŒúšƒž”p1Í sHç’qLsƒœÓã$šŒ’Ì?þªg,ØÏÜ’ØíÖ˜ùsÎ8¦‘»8íLûÙ#éQy?\ŸZfÞzæ™´ÆsSŒ.8úÓ׃Oµ5ŽIn€SOROJiçŸJ–ÎùmçdA•#95bÊûì²°O»êjk[ÕAÅV’MÍ$¬rXð*¼’v‘ŽKä,Kg’j¼¤’@lrI5·½A+{ÔJ‘Ó·­3Ї#¿jszö¢‚O¥5 U'øzUû¿Zzä'MX‚Ù™†ãÓ*h ,rjx`'æ>•ªÊpAmÝ×Ú´zÛUö­·gÞ£ ®FEEƒœgšã5 ˶F^â£-¶Lw¨ËbLwÍ[Ë0ÁbjÂîn:Ôãq18$7JàãçëV-®üˆöärsSCså&2:ÕyÝÙÛ'=³U¦g’C#däÔw.zC·H4ÓŒwÍ'CF ëIýÈ £ï¸ÅH±6!GV©–"ß*0ڸɩ{°£¯½< œä}iày]ÇøÓñ³¸ÇäüÇ×Ò£rÜç½Fã$çœúÒåA‚z“Lû¼ ëMÎÕpbOsKª{Ÿz^ƒ“Aèp1ïIÐd CÓ¦U’a»ïŸz¤õçëP4€7'5jÕÇ–Åóøµ]µp"mß©«–îDŸçQ® Éà† '§_Æ¡MFÏŒ–ééQÆIü*6lži*›˜rÃ¥JŒž¦“G=MFÝ*6éLn”«òŒ´ƒH8rO4´µÑÔñM‘›÷cɤu…Ÿv9#šF—È5ÍÈDàdÕÓ€£¸Óíö¤±Š[¹DŽp òIao%Ôžc´@§ØÀó°‘ù‚®É) 䊵4H„ƒ“Z³**ç9â«vvà UBqógœð*«qóu>Õ*E#Ä΃<|µ46ÒIn]A9mM»´ÇSÒ©YÌÂP²¹é÷ET¶—áËyªÚˇÃ@è*ë>ó÷GñÍY’Bí÷G×9"¬;–ãLs‚ZÏÍëLcóQà’¿ŽiÑ—%iÈ09•Ÿñ¤vç©¥²p*Ž#Á<JŽ^¡¦Iœmõ¨ÐÊÀ'ãM[S!E¶ósÀ«[DJ"BÔúTÇ<¤9Ï¥JØP#C‘ÜÓXÐïM ôÒêx¦*ƒóuþí0~næ˜~æ†Îì±È¤|–¡²MFçZª6¤ @)ø 9è)àcšpæ¢$¸ ^”Çù”›iŽw(¢ÔL<Ö(8Qɦ¼:´Â7è*9Û/å©À£äíZ‚vËm)öÖþpËD?Zt0ïù˜áGëO‚ ÿ;ð½…M<ëyIò¯¥I,¤.ÅàT“IµvŽ3O€M#I&p¿­q«HYûsE”jXÈݪy¯$BŸ¥K-Ѫ/¥–ä‚B/Y ÞOºzŠ ß¹ú ó7?CZª +øUôPßu«Ê¡¾é§לçÚŸÉã8Í;“ߢ|œpzžâ£l¶Ñ€«ëëMl±Q÷WùÖmäÛ¤eå)ÅRº”3²ƒ•-Pº“tŒ½‡Ö¦ƒ*¬¡Ç\î5¯¡L±[ÌŽp:î5©¤J©jêü õ§Ï0ÆÍÞZõcߨTww|ƒnJâ=µ6âo9þ^P~µ©rGÝ_nµ ¡‘°NÕ¡vçéVmäsl#@.FsÖ¯[Ìíh±  #9ëVâv{p£GDYˆ•ç'#'žm–8ç'ŒœU?³¬Lq‚yêh,wt ^zÓI`Ø Lù³Ï*„yüjd>r3øÔÈU~|dÒn,7šabË1Î)„–€êq@‹Œ±äŸZQ$Œš_/9æ‡8&‘Æ<šqïMÙ@b@Ïj0ìãíI‚q»N ÆdzÓ•8ùF@ïNqòÆ‘“,77e¤dÁÉùš¯<òßÊ‘“hçõàô¦²lúúæšÉ·ŽõsÞ£<šcSIóÐ kŸ¥FNsùP8íH8É¡N ÊÈs×,iK®Ì.iYÁP«Ó<ÔR¾NÔêi­ÉÚ=)¯ó‹éQ±òb ˜Ônv&梑¶&3PÅšEAÁnOÒ£D28ñ¨!¥”NZ¯ÌV@UÎxQVÜùqÈUç>Ty#' EøeîsË{UF<ûÿ*¦änç“×edܧ,j z™\°ë…QùÔêäƒÙ@¨˜€¹9Ç¥FO=*6lMFîdLt…·8¦–Þ=l„ÇÍ‘‘íZAÞÈ㎕¨õÈü©Ç‘ÏôãÊúZwéïM$e¹æ“#'žiô=ê¯Øƒ±i‚~èªÿf K1Ç=*¿Ùƒœ·¯OZ²#DQÙGJ˜ UØ?ï‘S…P¡GåN /\±ÇN´/^N:RíúŸJl#¯jWX Ž´¬6‚ëPÈì£h;sLgd]¹Ú)Œä »±Uí y®ÀGÝŽI'ІÚžè}é$ñQ[BòÜ» rI«÷ˆØAÈ«—Q,LH9jxÂ0š‹9 w¨Kg1Š‹vã´b‡eQ¹Ú:Š€}§híAÀm¹Î=)þð gÛÚ„áÀÆG\P¿{‘Ÿj’B‚PD½G$Óæ!ŸqAº¾´ù[,LRüRt½4.yƒ õ¦¨ÉËð½ªMûFA!{Ô¡ö®A!GZ“x‚BÔ^Kç,xünläž•ìdõ&¡'sc¸ëQ˜ûÔdäý(ëÏáH}i ¤Æ)¦˜x£“•ÏNh=ô¡Ž{TOŸº£ŽôÀ à}M3Œ `B¨YÆø‡ §0Ø™# Þ•‡–¹#úTnâGÊô«1ÜÜUYÎx©,Ø)8ûÌjk^MMj6ŸsÖ¤º/÷ONqN¸f'iþuÃ3qýÚ©´gžsUûÕm¼à÷©OÝUÆŠ~xúT™Âãn¼gµ4’i¤“M$. ”võ¤úóíMÎ:Ÿ–·ËàsøVÁ|õÀÇN+kwiNv©ÀõªJrUxµ$T1$ã¯^´±‚2riÑõ§¯ÌrÜ wÞü)ÙÝHͰäÿ‘Mc¶šÇm„æêNI£…L÷<ÐvÉ÷©`C&Wà±àU˜Å‘ø ȵ•Zy³–Ï-éÚ¨¢ù²t#š¨£{UDcW¶€GNÕg/=ºU­£n)G=ø s@Æ\óýÚ{úR2óŸN*œôïQ±9Ïä*'<äôéR™<¸<É8 œ­¾é?Â*gr°nöàV|@ÊÅÏÞcYãæ%½k4ìX÷þU'–ÓÏ+ÖF RCšâ8GY –Ì÷)÷ˆéZzÂ!X¢â8WjÿŸ­ij—)$‹?ê¡]¨+Jþu,?»ÚQŠ/—'®sš¤Švç¾sU‘~\÷ëR–;ºHãÖ‚NêCÝ:Ô î'Sõ¦0À>‚£~„ž”û8Ubk‰~îvK ¦Gû´°Fó¥s¶å\ÓéFI$JPNIéO»¿i¤(àžæ¥¹»,JÅ€úÓîn˱`Á4ý!ä J•;…I¥É ˜áŽÒ§56šòa¸•Ûϵ^R3œžEXp}sÖ¬8zÒ¢íP@ ž†•FÀ7cJ£`݃žÔù\Œd¯j|Ϋ’:ŒQ)ÚAª”ÅÍʦì.ÐséUdßç*“ÆÐsP>ÿ<еkŒ¨'>â§ùKN~•7À&ª_Áç¸mø¥V½Í`wp8ÅW½ŒÈÀƒÀ©­íÖÚ ¶ÝïÑM b¿CéRÁ ÁÉù›¿¥>âAÿ=ÓŠ}Ä ý`äZtÑã—t¨PˆÙ¶FAõ=*a6ÈÎÚ¨Õ‚3N}é²¹‹0/éM•ðY˜‚})²1f û ¨I‘øëüª±;›üñUó¹¿ÏvHµUYpÇ’*ãÇ‹`_™¹lÕ·Œˆ ßzš‘¢)F{ÔjªªpGN}銀‚?Æ£–ÑœnV{Ó$·f]À€=ê9-Ù†AÅ,P¬ ó6ç=¨Ž/,|Ç-K"5ç¯ZQœdŽsÅ/j_çJ[Ó·ó œt¤cÅA,ÞZ~ù¨Ýö.;šŽY/=zÓmܱ™ÎqOzu¢O˜Ãt¥µ_5··AÒ ¹s4¬|‹ÆMCu'˜ø_J‚êMîFxSN ²-ÝÛŒTdasQµ3ëRZeo‘ÁÁ¤¶b—*ËÔ*KV)p}ã‘N˜n”¡èI©eðNpy©Êåù=94®l×µ)ÆqœRž¸Ï˜bÌO;@÷ïM9äž)§'wåHìŒJþÖ#ŒÓK)ëLi|Þå^Ê)·ñÐR3ã §9òÑ@ç¥6Š ÛŒT‘i¬ód>^xlc54v,ó}à<RÅbí. asÁvI ¶ˆÛÄßâ“rI!¶„ÛB3–|sùÕÖx­âò#Æ{½9@à£ã4`q‚§#§4päúÓÀîÇ=±O'çúbœ2O<ûS\’ÃéÍFççÞšÇçÅK4±v*ãðüêÍıv¨Ç•X,dŽH¨OÈG&”n*v—¾iÅ[*ü§¹¥ÁÆñÜš1Èb:Ó˜_˜Óœ §æ¡0òäm¸˜¤V†6l3Í ÁÔ¡8Ç<Ô9 ’˜'Þ¡àd©É¨8*sPNŒxäc½E*ƒµG*ÀëR[Ć’FéëN‚%2HF­>•˜ä~4‚a+‘cÞOÓ5)#Ë÷ J~í ~Uö§$_ГJ‡ÒmuojEf;ŸÁÿõSÔ“–Æy©ƒó{Õ‘•œN]HÝì{TÅ Gæg,:ûzTÅ6(òG_éP¬›@9ÎÛìM3pž}*0ÃË?N*8ðÙàûÓ“L\sH‘‚ä· :Ó@ÉÉ8¦*‚Ä“FôùˆÆ)r½@ü)À 9žÕ´²<™W`鵄'Ë#n·AZÂF•Šã¯ªìÎvêJ©w§pþUNî&óƒVíþKtA… 9©á$@Š£hQÉ«1“å¨^ëOäŒç"ž3Œç4îqœæšfÊçÜÓÜÙ^”Üd§ÿ×JªçÿY°àCODw·Î·½*¨_™Æà½‡­:4Ã0<Ó¢Œ ø9íN2à·9æ–VÇÊö¥˜€p­ƒéNíáOáQ6çiÇ¿JwɧΙ¸mïŽõ9ÈÉ=j郌úÔDçëšR¼mÎßqAz{ÐAÆÞ”Åý®ÙÕLþ†š«Ó<ÔwòÂ/#<â›1;vÆ™1;@½$Kµx?1¦ *8<šH×g#©« …\œZ™0£'Ö¥A…Éæ£c¹aíM''®!9âáãà`çži÷ û ÷æ‹K™n¬ aaŠHn`C•jHg3) 0v©rG!iAù†9Å;#cÚ¬@Ї{¡}jô³Ê‘#?mÃ8«¯3¬fXþ÷A¸p*ëË"FdŒe»dU+[ë™/Q&“x‘‚°#ÍU‚êyn–9X!²8VÚîi.–9ÜtéZÛàr5ki’qÑ€ Õ¼>ÇÉ Xõù³ŠÏRY€æ'B2YÀœÖã R©Ì1[ W ×kU”+ªõÀ¬­BBó° p¢³¯¤2LF8V}ë—ã¥Majè!Ü>Piöv̪]‡n3RZ@Éf' ªwYY½FzU{Œ‰j­s¸KWmTÃn[.bjxTÅcwzµ ˜à=·~µ!ˆíÎHï(íÎHÅ.÷9Å)Œð­¨ö õ©òʤ´Œzw©$•J€ÚŸ$Š@`ÿ:dhêû$ò20T–#'µ1S¸õ§'×Úœ¸ß–ÁÊœ¸Ý–ÇÖ›œ’íøSIË?…7?1nýª› €yëPÈÜõ梑°xëU‰tè:µDÍ»§âj;¸SM ™Ç8™Ã6OÒ™´1ù¾”Ë™<½ª: ÀLä`v^)'r¤(ì0)B—Ú !WšiÉÀô¦žÞ‚œròc¾(<µ'Þ~)pBçð¥)\ `ÌLýÜóIŽE"œR£4— ŽIÈãô§™8úTŠrüsÚžòÁO^à Î)ʬr“K£Ž£"“i\«i¤LÝ‘ŠfsÅ0·jk¶(4N:Õèí­ŠM(ý쀰°+E¬Å­”rÉIJ‚Ø=€ñ¦»3q¸“˜‘ÏáQ»³ð·ÌM1ÙŸ¡ãÐ]˜ ‹Ç|sHœ”;‘MË3”ëŠdíå£eÃ9úšdÇb79 Zl§buÈSL†V¶°P£“L…ÚfÁɦÂí1䢥f£»§ Õ+ŠìÇ·Ò¤r‰ÁíTÏq6Åàf©ïi_hàU5v•öŽ•{۫UžxU¦­ ä(ãÞ‚1ÛóJFÞ1ïJx¨ó*'nMDç­gÎí+ì¯UW%› Ö©ÊÌòNV3ÀëNíÞŸ«š‚V£ÁèiŒGËŠØe0{Óý"è(ãš~yF;Tdù’ý Y”€¤ÓŸNàqÖ–ÿu+Ÿ¼ËštCäb}iÐÝÞä©úµ'SAäý*0@ÚÝ·`Òt` EûËîjÜPb9¶.)üjÜPæ6*9þ¹Y€à|Ù© {pG/³,} àS¶,1 rvþ´óŠ!“·VQ°x8$Õy~_®*¬Ü늬9õ#ùT5Ƥ·1‹´i¿ÕäfŸlÑ­Â4£*$zŠ’ÕÒ;…i9ƒO¼¼77LíÂ_@*KËǺ¹iÝàôŸsxn.ÏÜΩ–àß)_”ö¥Yò¾ƒ¥MkfЫFŠ]›’Hâ­ÛÛð$u©mã9?Ê”yWCOPNJ°÷Í8Õ[ëšvÖq•D¡"±˜|ª zŠvÆa¨÷Öa`Œja;AdúÓ ÚGNôÅ–Ù†<Ò\ÿlÓCÛ•Ç™—=4<$meÏc@=i `õ?… <š%—ä(ßsÔÿõ©d“äØQëÜÒ»åBŽzÔz‚ª[D‹Î['_ Kx‘NrrqM½]°D‹ÏsŠ–Ù ?1¶‡nÄö©!T·³ÞJï~ÇÒ¥‰V l’7·jɸ›Ï˜“Ðö—<¾t¥úVdÒ™¦$ð ]¶‹Ê…ËÒ§†=Ì{ÕˆcÚ0Ìjlçî’=jbxùxÍKœýÞêhfÚ:摎­ p:Õy0F*äùÕ¸ô¤XÀ`i% š‚ö@«µ×Ö¢€SP]8 …üj±RÀ~Z‹¨¨1 Kn6^)Wå§ ÚsNÈÃÞŒäÓOÌÆ¥…ÊžOÉÓô8àô©#8àô¡ÈLŒÒœ q ­D¬ )èsL ÏÒ˜‡,=]†f,#$ec9«°H~è=5v1žUi·.Ï·ûÕÎ[M•˽ªC uUÆRàŸJÁpO¡ª¯€ Ç^µ UgàuÍ?ÉeÀ‘J³cÐSÚCµ†ãJÛ¸;[‚jËZE_3eÉÚLð" ÉË–àTÍ$cœ³‚CŽœš…°ÕéÔÔŒí^Õ®ä… XóØZŽH œŸr+Y‰)bO¥ ˜9 >nphUØ|Ý(OP3ëOPwòOj’0üƒÚžœg=éK‘òãäb‡·ò†“ŒzvRý›ì’°Èè V¹,meu=0ª×…¾É!SÓŠ¥cÉ4g?*ƪZ&ùPç…æªÙ¦é³ÀæµTïbÇŒ÷5 ¿;x¿J¾£q=½ê¼¤ëQPÈÀŸPçQ; äò ¿Èá‚ôÍ5¤ùõÇjG| qÚ£U,ÄŽ:”ÄKLQʼnö¨­àÌ…ÜeOJŽ(ùÜÃŽÕQá·Ö­ öëÒ§\ÅX\ÅNÜ c½)#ð¥b1׊kc< úÓXŽ1Lb;ð)»wœãjnÝÇž”Ò¹äôª÷~Xþ𨥗²õ óu ÔqT[qoœ’MW䟛­U9'æç5f1•*ÃŒS‡œ½1JG|óF(aÅ ¤=èš@¤Ó˜mì§cú~9ã  >fâ˜~´Æ<óO´?$ÇùHúÓ¢áû }¿ú¶=x$,ZñÉã ÿ*|L|ÖúT±.Ã¥8ÆÒ>}ÉüiáŽiâ6fÝW4ëcs;Œ*ö—fn¥u×ÎvÈúU!{ ˜“cØU#Ûñ£„r® ªb<ß*8á[æ«—W0ý¯ÍûÄò ¥¸¸CrÒXœÿ…I5ÄhgûŹ©Ü^“Ìà¾Ç5^Y˶âµV–ä±Ýá∬d6~n0g>Ôô³Z ±€GZ•,m–CÜTö÷Eåê71Ớ’˸WÎ{š– ÷6Öë×5d@Îc8=sV Ü1×®jÊÄ\ÇZ…FÃǽJØBA§± Àd0 àŸéLë8ÔÓGúÎ;riŒCÝ‚²pÃúÔe³»8+' ?­Fß0elmn´ÛxR8ö ã¯#­Dp£¯"ˆc  €=ªfe\ÍLÎ}jV` ΫNæÕy†I^ ™I,¸àP‹€¥¸ô$RÚwËžFh ޼f•âi".HxÆ(hÉ€¹8 qŒu¤hóüçœbšª0òóšháAÎ9Í4܉œ¤tHåSHåW¸3±ã4ȆA-Ò›Ët¢IC¹þQ÷©®á˜öP)(f,Ü ãëUf¼'å‡î©Æ}MBó1áxQÞ«½Ã7Ü隃,ä€õ¨ÎXúTX$œqÜûÔ°§véïJ£Šrð9©x)x£ Ò ãñ Ðiñ‘—n¸âž0«š“TŽæ¬×RLüª[kY.$Xãcú žÞÑç*÷ëF¡§5žÒÜ–ýGN{&ú‘š5´#<äS¼Ÿ³Ú£íù:Zd4p,…~Vh{vŠä|Ž*´Å–UaÃ0â l«ê*¹ÊH?ÚéZö‰müãÊîÁ¶´ø–ævû»Ê‘øVÅŒA ™#vÎ=—@pjöš›nFÁÿê«vk¶Q´V4í·P½˜ºÌb]±þ쑇ñµcÎÄ]]ÈÝÙ…gew¿Rxª',k=²NæëÚ™±¥`¨73v"4Œ:ž)c‰î"IÅt7“5–ŸifàHÿŸç[ú¼Ÿb²´±2(Ò·u9~Ͻ¯€«:ÒÝŒ¢R6ãîƒüë.Ú/¼Ž{ëTm ;·ŸÃØV‹®ÅÂ9$õ=]u ƒc“»©5qÔ*¹Ãu4ÕP¬>m¹ê~ñ¦ °Nß~¦˜1œg æ&XIÝŽI$P§tl±g§9ïJå*€cÞ˜Š¹b°Å5‚ŠO< j©ÈܽzTŸÝ~”ñÃqÊJg 1Èô¡ðHÇášY0X`cš€ÒO)YÁ@ÉÆ)—0””äqÎ1LšF^•¹b3’W±éQ³gÉ"£,O=H¦dËœdÔ|ò:f™ƒÈõ©S ¼ŸçRä()àǵRŒ“*ò}»Ui2òÍ@ᤔ ­:oÝÆ!ߥ| F0Gz% ‹‚;ÕÙ² Œœd“Uä9ù ªRäF§åÓåUÀïÖš8põ:#–àNÓÀÇ4§Ÿ¥!æ›×¥ŒS±Å8.+qǭ҆㕾`X …ùE.7dŽÔõRÿ0í[Ú›ÛÂÓK÷äè=«¨ðý‹A O ù¤éô®‹I´ûnÕkW³vç˜TÚ°¸€är:RCgštvòŒ dúâ›mašb[ȼmž(ŠÒ7´8ÈÆ9¬GN&΋Å`jzx„œÆ+Q± C ÆÚ±¡3› VL} ^ÐÙ›M™7G.ãŸB1ý*Þ’KX²¼¯Và;==MX·soéƒÍXö|ÞkTÇrè~Y9ެ=M•®gtû²9aXº‰IˆèçwæqUü¢cVŸÊªˆË obj¹ˆ”,zc4è]mŠ•ûù]´øŸÈ*WïåH§ÄþAGÎJ‘K$’ÝÝ<²6öPqì3D²Ku;K#aßÒšZK©ÚF%¶šØHÂ| ç¹ûµ¬‘íß>•°©µBŸï‰Ë`(ÎÜv¦J[8¶žÝª93œsjªoâÌb4©å‰ëUÅäp‚ÄXÕo¶$D¢ÆÞ¬jo“hdàmÈ>‡Òœv‘¸|£o_z•¶õoZ’ „Riz ŽsRÛÌ«òÊÿ1áx§Ã2©ÚíóiÒ P<ÿÍI4j«¼SRJŠ«º˜$ÀÞr1Ó#­Aæcç îç¥BÒawã“÷jK¸œõ¨rIžzÔ]O¿ZP÷$Ð1zQŒR†#>Ô0ù¸ëHß{­8“×J}{â”ÿJa”„ ׊kJvcSZC³ÅR|Æ…‰Ïª¿ O­U—娨-á8rz`f˜ŠpÙéÖ¡Š<+ïNYxx úÒÁR ØÇ¤oA÷zšµäñIÖ” r¨4Š:N™¨Ý¶óHM1iiv†àÇ?(\¹­=ÌÝJ©ü+ËšÖÒ­|ç*ò}ëzyÒÙG$Œ ®’êá, UQó…·<«nW©{T|ã–`Trp: ¢o.x/ Ú9bV3ËÆæùE\VÝ*sÞµ#mð†Œä‘ïW‘·F óÅAp¦H˜œÖÎ_njäøZBYý÷‘VÝp1ŒE–üy«L»B¦1¶:©+bê=êv®Ü‘ÛŠ¯!ÄêÈP?•V˜âáA\…ùUÝ'ÈIdŒ’D¿»`~µoE1}§Ê~VaåœÕ$Æ&hÈ8“(Õ§SnzÖ¾Ãhg®kN2¦Ü€ç&ªÜ˲&ôj•̘Fà (VâL#x^õy“m É'Ò²âRïŽÇ’k2,øì9&¯[ݤ³-¼p–$…ÜOn RYˆ—bìÕ«yÖiD(œ“ŒÕ[„’-QÕfV †â7‡Rd`w# †Dxõ6VÎU»Ö±¶žw*]Jp§§Ö´–Ò{‚WpeQœÀÿëÖµ–bw0 s€i… dB'ó¨™ Á œ~5RÙ8áxªóÊ-Ówñž{T?”»¿ˆñô¨%D¹þ&¤µÉLõÏ&›+“ÈëI)žÝM<|ÌHïN1'±§I=©ìBô=èlÁ¡ˆƒUœç£ëïP·=ÍBÇ<çÇÛ( ¤qךkaÆjðãôª³¹ÿV„ T.ßÂ*¼ÍÆÑM6|ãœô¦¨ÀÍ1FÁ“Îj]ÜûRæ”)T`‚x8S…=x÷íM‘Àj ÅÁ¦'ÌÄã;incíDKºC޵ÕÚdžž¯¸¨'ý£Ú»8âÓ4Ñ&ß™†O¹í]U¼qÙYæ#õ¬ñq,“¶ó–'jÉ’âI§-!ù‰ãÚ¨^G,Ç'<{UÌnÁÛ“Œ²T¶0¹8æ¦Ánƒ& hí)ê§¥Ki4–Ì@S³ºž•$.Мs´ö«€‰>µ¦™A=Å]H2zY7#ËÔYQyQ¹ çï“ÈÔ_`ÆÜî;ÖEʘ¯Ÿîjfí6y1Ÿ½÷‡áPê×@¨‰7šƒS¹_–‡¯Z͵‹Í™QË}+:Ý<ÉÑ„rßJ£nždêÝ'éRË/Úfi1þ¹Â¨ö?LU™Ï™äè$|ì?È«,Þl¬Ý7·è*½ÝÆÛ¦Ø1ÎjµÓí¹}¾µRî`.Ÿo­khVí$¢áŠ”_ç[´2\}¡°QZÖÐí‹Hglm’ |Û?3%Xœ TQ>û#.âpPp¦ÆÛ­|Àp{¨¥1«)þmêÚšQNb~w)çÐö¦²++!ù·)DZªKZÚTnl}ª‘ ƒ,1’0 ¨È`·$ŽI¥Ñ/cn˜n*—BÔacØÿJ~нF=‰«÷¤š‡ÚA9#Š·z]AîA8|„'$ ŽV¹¬c:Ó#€ÊÄ'U«ilѨË}_-)ß–ôh[´`däúT¢3Ž@Z™m˜ŽxÏ­H!$dŒSÕYO˵4jÑ‚ ýiêsÓVn¥s0 M‚+W»ˆ*ñ7+ŠÌÔ®#¼^®+;¤¸g”’zµsÌKÈY»Ö s$ÌÍRÇ(í–Ã1ùµMˆÜ·ûUˆXËw'hÆÐÛ›×LaCØzÕ¢†ÞÓí˜i8‰OaÜÕ†Sg·*ŒQù­·þZœÕ o$½Mg$Ï÷»Öæ…4vö3¦rèűì@®‹@¸K}&`HŒsý+H™"Ò[ŸsŸéL·â¶Á*S9Æ*¤1a’qÒš@#©¤ šqùWާ½)àcÖ”ü«õª—2ìR;µW™öäUi¤ÆEQ’ ·\Ô ~\žµVC„Ëu4Ô¸©¦”Å\Tàm êE8ð(c¢¹ÉüÉ Ü×7{8wÍfHçœu"©“Íg—ëZz&š.ÏÚ&È:ïÙÐôŹiŸˆð=kgH°(ž_õK÷WÖ¤Ö&ó®Äiª6ŒTzÕÏÚoJ®6(Ú¦j³ n¶/ÝQ€#E.æûÀuª¬ˆ¼÷ªí.Oz‚ÎCJý7®4¶“–Lâk?— ÿÙÿØÿÀððÿÚ ?†ïU’養5! ÛÍ&¥­ozšûVߺ(Áàš®ŠzšÅÆ=È5—ßÔç4­–§©©’A•¯sLm¨ŽIäšaù}É4Æ8>¤ÓádIb3íN„ª¸-Ò¤€…|š¹Û(Û#çåÈÀÏÍïWã’]®ünõ L3})“íó7­ÇTr·ï2HéÆ*7a¼“jŽV2¶ö-E)ó[yàt¨e>cn#£8ؼ{Tg¥0àtéQ<˜R£/ÆFÏØRÀ×sÐq“NŒgŸÂ–1ÁcR™Â®Ø¹ã“R—ÀÂrqS“SZÚàùŽÃ ƒV­l¹ß!èA=µ§ü´ldT³¼kn`Bys¼á•jå‘-|ˆðf”üøþVg(ù)†‘Ï'ÐUè­ÒÖ œ¶±%œpp¹9«+[ÃÆ0Nj“]7šY Ù‡jÊšñÌ¥—ï «>K–ó2£ ÐU݉,¬rÎzÖ¯‡!Û³ž®Ýjö‹<®r\ÖlV•QETW n™ãw÷j«…·BX‚Ç€¾µó,I“Œž6×=ÔCT‡ÏÜ0žÞŸ­s–SÂ5h„Ä…Ü Ÿ~±m'ŒêQ‡béõ®–]‚2dÆÌrk¨“hCæ¹­ÖÛŒ±Âú×=åŸ÷nXgæ=ª¶UÏšzsT2zTFàršaÍ0ʽ¹æ‘ƒ1bN)¤“×¥5‰4ÖÈ# :ZCÇzc1ê2W‚½i™¦dg4™õ£4…¹ rzQÖ“94é$ÝN”¬ÙqOwÊ…Q ã€Ô(íšHïO$Žƒ#8¥#¸Á¥òË1Á<ý.ÂN(ØOE¹†xìMHR)ñ’£µXŽMß6ÛŽML»œtÅNŽ“N‚>÷šY0G^:Ñ!pj»99c<zˆœŸJ…P±¼k—ç!M&Ò£æ) ’*H¡g]œà±©!…œc®MILÊ8ÍXkuEõÚ;Õ¡n#ÿ¥YÁ})e%ã U€@§ÜL̪§pÇaRM!!FJéKj̉ QËzš[<4а®1˦–׿‘DCޤš±¨ÎÑípÄœTÚ”Û6 $š’þmS5B2bÂî䑟ʳÁ ã<ôªjHm¹ä×Ijž]²/¶zW_c†Î4‡¥tvÉåÛ¢NjZž¤¢Š(¢Š§¨[Í*†ˆ€W·÷…PÕ-¥™wÃÊ9ØUKøžA¾.ÃÞ¹+øŒs·Ôãî•’c»9©ìk•½ŲA šÒ¶Õâ(¡œ³8ÈïéZ‹«IyqMœ¯§zÖ‹S7q¢IGëWhâÙ• Ò<µëV•S †¬€ƒƒßµeN€°Ÿîâ±%àsXó ¹¦Ç¦K~4ÅM¼šh$ÓZ\‚³HÎ: kÉÆFϸm4Ì“Q’Zœ‘–çæ })ÁIëÒœ‘NòŠò¸ÿ]¾Ÿ­_ù4Œ3€Ÿj÷ü©Jôæ¤X ±Éô4¾X=é 0{Ð\(®[4¥‚Ž4æ!GšBÌ9#ÿ­I“Ö›’9Å*¨Ny4 €=éÁ°9¥Ø%n:.0íô£h~AÅ1›ƒžyÅ4Ÿ|àÒ8ëœTˆYÎÖÂôëOL·>´ôËñÓëS,@£noSÒ¤òùù~cRyc±Éõ§ÇÜíæø©a‰Ás¿žqüªH¡·9Ýì*Sp¤q=1Ö¬yƒ ±{ U€ëŒÚ=qMws'•‘–jd’2¿•‘’Ôבƒlºî¨çó9'3UeyÉbEVÜNEEivñLY ÚF(µ¹’'%QŠKK§ŽBW¿;«¼‹$­ÉÎy¿¥X(ò9–BXòØ>§*îÞcåŽ Á¨íTM¨.Ü“ì;ÓlãóïS,sÎ=i-Mv¡IaíÞº…T sŠìQv _AÍtŠ0=…---QEQÖŠ*Þ™ou¼‘µ˜uªÚE½àvc·z£w¥Ár­ÆÖ=ꦌ–ŽÌìdìÇãTí<>–ìÍ,Ûû«YèËo¹šMÄð-Ý™D`½O¥v/ ïU¦ŸqlÑ àd Ägs/ç\îî ‡¿©¨Ù²s…éõ¨™É¨drIÅFNF3ëMšŒjh¢˃ìµ*(þ Iô©£Uæ+1à|¨´âKvÀòwóŒQ9Ü~©‡­5ºÓÕ˜D„µ('øWš?¼Òy3³ãk1=qÚ”G#ž'Ú”G+™úPÉ$\H6ÿ: ²˜cëC+¡ù†(òÛ‚NÐz L¬p)6“É8§9}iü©ù…80eÂqÉæœŒ x9P&UW‘ØR‚Ò®2j{8e É€èMOm ¹/€£Þ§¶‰›çÀÞ§’Ü)ÌΤá^µa­Âÿ­Žõ©Í¾ÌÞø£B/–…ƒ“ŠÒŠ8b…v!`Ã$‘WãŠ8â\) Žr*­è/÷€ù: ©vù9l töª÷-žp*¤*Á\çÔ÷ª1îWÝÈ>¦©¦U˵ü¡Ãqô¨îäÜ0HÉô¨¯_p<š[˜ABÜT–ƒqÿºZŸcó—qêjÕó¬3OÎ ãðéWo Açß0 Ê­Ý…fìÀà~TxZDÓ–Œ(_J³á[uÙ4äÙÛ·ûµ/‡!ýÌ“±É'­úß­š(¢Š(¢Š(¢ŠZ(¤ÀÎH¢ŠF/8üzR6 ØÛŽý(`6üØÛß5ÅJC6Õ8@+ÏØäàt®"GÉt¨ß“´o9ã­3ŽZš(ü¡½ø8è{Tv žO¥N©å.OZS!8Û÷ºc© ·@:š“Ë”áŒõ4í®ÃhãÔÓÂ; =M8ˆáàÜuõ¥S¶M8N£4‹9êŠÒç< Q¼çå\Té<è6ÄzõÀÉ©RIÚ‡ƒÖ¥G—S½Iä„]Î ±ä“Oh®H,ÇžiíUÉå<ÔS伤cû£¯µBPò[Ú 1œå¸á› ¤TlA8¢$€)‡,Þ1ÒŽHãµ$qH˜w ~èäšnqžu4¨78ÏÝ}êÄòJì« Ú*Wwrªœ˜3;³NiX%Š9ÀfÉûsZÚYQí£\ª’Äuæ²nZ=Çi'Nk>å“85QD„G¡ªÊ ÁÏXg犌¬bUg#+ØÓ>]û‰Â~ãÖ¥µ!§ÜxDTöûíäáT}j{f&BÇ€:TWóy·ycÑôëúRÝÊ$»Üz3 \R\Ê$ºò¬ÜþÑØEv‘ùJ#$×S§Åvh"PšèmcHíÔF0ÏJ±VjZ(¢Š(¢Š)OJJ* /-£b¦U,:ªòEU›R´…™Z`Ì?…y5ÞÛFJ™AaÙzÕY5XÉ)åûàUIu­Çm¼<úÉÅW“S òœúšj«¿3ÌÎ~˜QP^C¾âVlaGáQïfù¦¿á€+˜=8í\Æ+š+ÅMafá{´jXÔ"ù`jXD7¿qÆjvš^:TeŒÅG–™ÎÞjtO(ýêP›oéS¬~[ Þ•a®‹åýêG“åÀàSä“åÀàUBYÉëPòÇŠ„ej(I‹ ÇrMXHILÇ5hBv*ݤ »9nÕ=´åÎrÕ=¼;vœšKÙŠ8Taéšmä…_jéL»“kí^µ]„Š›ÉË¿@j¹ â~f¨2®IËÕ[sAõD‚1–”}3Í:Mß,(9|S˜–$·Z¿tžMªÄ0J¯ÍW®ÔEn±¯85vè¡TÂ9¬¢ûgÜGÔÖhÞƒøVhß}jÌ>\¢) y$Ž•r)@a°µr9FàŒ0)í$N]¢mÁÅô¤£hÉ8áhfGVhÎGAVR/³i¥Èùäæ­É ´Ó7óˆ«2Gö{öœæ±7ª\Æ]r¹úV\‰p¥×+šÌ‰Õ.¸Ê榈µíüLÃ(\/áš–"ouHr2›Àü3S@MÖ£a• 1ôÍu¤ø]=8º_OåEQEÉ¡Žu %AÎÚd±,©µÁ*9Å6DY‘éYkÍ ç9üÅaO $´0€±«“œûÖ\ÑDÙŠ0Ó!ÓÂË€C±'§j†ÞË2„Bžàt¨á´L)ÉõÇAY×Ç÷’Ágîlõæ¨ÞI‡x#mÃ?1õªó4sƒóÕS€0˜UQÉõ5Q›Ž1U]¹ÂcŠli+±`¥˜ð(Dv<´G· u­+;&!@ûç©ô­+—jާ«zV•¥“6 žõ¡q6±1ŒáÿÒ»H,à1©R0HèŸýz»p±AÅÃ9àŸJ ñâ!Êï.{õ”ëòò1¿µP‘p¼ÿDŠÎûcP’†¡ ¾S·Œw¨Tn•±À«ªŒ®xêíÀü*mÁAÕÍLHAÇæjœ)iKdž™ïP<˜ÜÙÉ5]¦-žµ[÷÷²“» *5\¿µF‹%ÃòÄ-^Xc‚ݶ`ÈG2éW<”Ž Œ÷cW H˜÷cT%ã$çõªRÑɪR¨Î'­&ÃO-ÑW=)¸õäÓ ôÏ&¤Ø¨0@ÏzwÝÓñ´sŠO?Ë(ëÚ”K´ZQ0U Tq¹'ß&˜¬Oõ¦#ägó«p±l\ÉCÀ©âc•”žTñSÄÿòÔžGJ—ÎûB“ÎIîjC'œ2s×¹©|Ï4sš¨Ê ¹' *¹P_'§J¬ÀoÉíRHêá› ©Ã…ˆ6rØ Tæ@‘nÆ[Û7!OÌÄû“ÅM ‰`Eg"¤·e’8Ô Ö·5!²Ðûª˜úäV¶¶ Û)?t ¥ªq=‚ãñ®khg‘ØîÚ êOJÁˆÏÌT«ÅU·¹# Þ®iðÍÌb<,‹” FqžõkM†x¯BÛeÉAòçnÂb¸M‡kà¯ÒºˆÃˆÇ˜Á›¹ÕǼ"‰3w bº(Ür{œRÓ©h¢Š­y6Ñå¡ùSíT5+’£ÈŒüÍ÷U¼ŸÊCÉêj Ù î|’k1ŠÅË‚¢ÄD2ÙæªÝjd/“p9cP\jmFRß}ÿ¥WŸP(¾\'i=Z²Ýð/%ºŸZÊ-÷»ä÷ïY¤“»’zûÔöškL¤È„õÅZ´ÓÞUY$Ë«vš{0W•nÆÛÌ"Œ°äŸjµ§Ú™·$úU›+5•AÆ95£-Ü)±A‘‡\v­)ïíìÉ·Q#‚G­]–ò+uÙ ïaÁúÕg™ÕæM œ„βÙä•ÃÌ1žBŠ£¹Ü†“늊IWÞü*pµÈÒ9fíÀ¨YË1cÐp)±o3’G¥F›ƒ±ëý*4ʱ¨.nC«–c×Ò£’LœO|TRɸàrj5‰™÷Jr»éMT$îjjG“¹Žj_´,`ÃÁêÍR ‚þísRyÊ>Dµó»ìŠIgfÀ?…$³³¤ñü¨/C¹Èü©€\š`a“ÎM X2’~è¤#o9äÒ·œòj7‘úbšY½ª&võ¦–ÜÝ»SAÉæ‘['špÚqÀrE;9ü;Sò¶*C9UÂŒzÓŒ˜Æ)Æ\ S[È/=3ëRBã§4Ž‚¥ fÃäý*dˆI'ÍŒMJ‡”äð95 ˆ˜/1¡ã=ê6O˜€~\àf¢tÜ/j·me‚< œ}êеE³!À Wñ­e aR0 ëVµ¹ É ÷ËéV5éZ[”…UNXúûTš´†I–%è5ŒË廕6G²I1;íêâ³b‘öõ~«áì\Ku<‡.¬ž‚¶ü6¢q=̇2ÛôàV®ƒ¶håœó |VÝmÖ­QQÏ'”¹êÇ ¨/.D Ç.GÄÞZàrÇôª6Ød™‡@McJØæaÎ ¬ùX¬M#}kK‰%1›å좱åžIX³Ÿ ¬‰'y±8ª³)— s×·Z‡ÎÜQl2žõ¡¦i­,€Ê¸AÈ^æ´t½5®'`ÂŽ€Öާ™%A€+NêîÚßýs”<ãµiÞÞ[Z¢Ú¢òêõÕÜpW•ª‘\b0ZY¾óûÕ»tˆÁf[ï=TI˜Gå[Œg«S£‰mÏ›pCÈÝuÍ*F–¿4„<¯÷TrsNDXÍóHÝ¿­=Ó÷EˆÁnç°¥týÉv“ÉcJëû²Ûž¤Ö|÷vñ!óôõªÏgl6==j…ÅÌq°TçΫ=IJ©çjžÕU¥w9險Ò;sŒÓíÿV>¦ÐqB“ü#ŸZqÜ»Žy´ì‘Ó­8’¯4Àï9ý)Ú1Ôšh!G©4Ä’O=2GjC’zçÞšI&´O­'‹Œ÷¤sžGJ ¥cšI9n”(Éæ‘W¹ )Ýò¯ãF9éK´çŒPQÝ‘Ÿz ‘Í&Òš%rMdrh#(ri#-•§ó¡IÈÇjXÉÞ1Úµì£{‰å’C°`+RÊ&™¥‘ÎÀ08­[8Œ»Ùø~5 ÚbÝüª1úÔWY‰#ŽŸçLž"Ò‚F7VfÛS³ˆp#·ò«²¢k±ãîãwãV[÷”ᩨõW1ÞãMÒ’ "›©+ ÓkæIÄŽÔÛíßj)ÜߥP}ÎìÌÙ.{ö=k9•Œ‡srÇœöª ¤¹Üܱè}kSÂêánØŽ §ó­ß «.Obãiõâµ¼8޶ónä8­™%Ž!™éšÖšâ(?Ö:çÓ<Ö”³Çw°Ï ¦¤ñÉ •IÚqH—1¼pÎ1À"L¦/0g†©ó]ùÌä ÛYÎZYŒŒN; ¦A’BìO°¦ÍIo**çä9¨ä·i­æ¼lÏÖ™,-,2*Ž6Ö;Z³ÊQNŽ+#ìnÒlÎ ÀÅfý™Êta´v÷§oL sFÇàSÁH£ØÍO*ŽiÙ6ã&«ƒóœ“’x¨Áäóɨûš~ÅØê¥~T„ >ðî æ€3Jä{R€)À S@Æ3H 4u¢NN?È¥Æî)ØÜqLòñÏZ_.åcš\㪃jCÇjkð);IëžÔßza¥‹!¾qÍ,x 7Q *ù5·§1˜ËÉðVΘÆA ädŠÚÓ˜­×“N»T’hK0TÉb}9ûu ;]ÛÓ4é¶}¢'v¼Ô6¬.onu C4I€Š;ûRY2Ý^ÜjS.QHòÓÔöÛ2%¸žúPX„¾”Ý<¸ÔÞy×sº 4¶.É©I4«—+“ƒ÷M-‘e¾y$ä•Éö4íU-„„…Ã$`u4ºŸÙVFm 6ÒA½&£ä†c· ´‘ZƒMy…›„˜ÇÏjJiͳ*LÈ3ÐS4ï1­Èó {Uï €,XýrjäŽÌ:œþ95u-ËqÉ©àM¤{@`y©ðD` /SêjNŠÞ¤ µ²:Rcz1éV¢]±úg©­c„v­ZE êj £0VÛ»®W¨ªÓI`ìÙ ëÔTRKjÍ´í?J$€ËH¹ 5íVxÉ‚e$ 5àY˜œ+'íWP™ Î3ž•ç\A¹DÎHÎzVa–Xr¥×ŒŒÔi†”÷÷…WyRWÜ䊅¥Hó´‚{‘Y¼ÉµBíƳÏÏ…õž~|(õ4÷ ÄK–ñN`£¿0ïOm£>cíR¤nªÌа§lQùS‚0¨jd‚Bã$*ã&¤XÜžxjE‰ÉãÄÀº,ylt¦K ÜòAÅ2W¯&’bªø<‘ÔÓd w¤r2zxä sLÍD.h;˜õÍ,i,sF1F§0 R‘´sÞƒÀ¤< C€8ëIIMÜ:v¥ Úœ­Î)G\tiKqÊ”z/Ê:ûÒuÍ4œô¡ð0Ûšôã9éÆ)“ŒôÎ(A¹€÷¤Œe…mX«¾[v‚ÕÛ={ÖÍ§î­Øæ³næ’â@ƒ ޽k:æW¹˜ ã8~5Fyâu@xbo%„?b[`J“•89®‘tè_OKPJmä0ãšÜ[8ÞÍ!®ÞAµSËû¢0ÚrFîÎ+3Ê6SÜrF}AªA>Ìûž3ê*­Ò‰¦rq€ ª×cÎw¤U{™‚‚ŠrÙíU˰©þ°rßìÔ¶>õW-³§ÞëQ¨wrÄ’M3,NMFK3dÔ¸Ú}©qJ¥PJñN8§Ž!|p¼šBØ ¶)¬Å¹¤äÓ0ZÐÒ„&ŸåœsFÑÛ­qHSjæœ éŽ{{Qš@x©N ·92´šg n=3S#ˆä|Ç¥Aå³¶GãQ„gqŠ„+;ñZ1ÙˆÖ#ž[¿¥_[O,FqÉ­´òœrh¸”›e)òÇàûšuÔÇÈ]œ".¹§ÜÈ|• ªóîj+U&S¼d¨ÜOò¨l×÷›˜}ÞEAh>rÍü<ŠÞ´˜Im‹Ó¡®šÊpöñHÅoÛJ$nƧxÒxö0ÈíìjÍÄÞBQÆGb{šXRxö°úæ¶–Mäå¿Ú¹…¥pÄå¿t®saf“q'jœÿJ~•fÍžDwV8*½kKH´Ì #,Ž­ÓoðœÕ½*ԈČ\«Ý«u,àRdUÄŽæ'“õ­±kõHcüG“Z¢Þ UÃ7ry5"FŽ[Ús`°éÅ="Úw63ÛŠ§ª;ŽÚ¿xƒŒUiguQe—¹UMOÌ`»UŠô$qT.¨y)ÈÛ<ëïUMªEm¾ë ’6ÇØ{ŸZ€À%iX.O :~>´Ñ­[À#HaF«c½I­cXâDÿéÃR²–8ÕO:VmÂÉ9)ƒíYº¬³«)  qƒYš”2ÞL x*­ÂæÞí¤?vŒœóVt+˜%wž<dz€Ã5gE¶¹‰Ý§]Ñ•à6kZ[¹>Èw\àäúbµÅñ2lŸÀçô­_µò”Hö5ω HÍüMÆ+‘ ±XŽ­ÅsŠv+9n*ÜJçŒsõ¦n&˜æÏçOi$dòÓÞ†‘ÈØ8<ÎFÅàT_tìLg¹¨útäÔ=:šr§8g¯½žh'Ó­<¶ÑŠ=»Òt¦îÉñFhÍ÷»S$ª²€FÜcÞ¤S…>ÜëR#1Ó Óf !‹q…=³ÿê­kѲXaWÝòŒLÖ¥ÇÊÑÄ<*=@`S€_ôZ¥{•wsU/IXQvæ¬ÛÕWËëŽj{pŠƒg\sV Ø«ÇÓL™IóÉσZ¶ú}¦žÑ’Íæç±êkJÚÆ "„¹éš½•>ï³MµùWû®yÅL- bÁò‡îã­=ìD§šHaÔÓš×y$¾Aª­aòI¹K`ÉÍT:B‰rÎ6õ\éÿ¼ùÛÖ§–Ò5L,y}Ð:Õ±i 6Âúc­Oöh£_¸µE-ÅÂ23»¤qOàr8«:u“]8‘¿Ô¦ ü«CN°’ì ùjyô«Ö6oq†Çî×­YÊÚÏp±|ņÕcÐJ—+g-ÒFw3a=1Sñj×§s7ËŸj¤îòË&9yx8þ¬÷w–F#ï7–¨;´’1ã-Æ=¤Û ¹…Uõ©±Ê ¸;}jD„¤2)ày¦¤°#Ž€v£smOè)C6^”û9¢†éÆ\3íÇažõcJ–(ï\eƒ¶Ð;dÔÚt‘­Ê¬ç!Ž÷­kâ²0D^"n w5±©2³*D8…‡+ØÖ•æÂÊ#ydt¨¢’I.Ý6Ç»r·væ«åßQxH@ä«wnMD =ãFÊ@W8>¼š¿vŠö’)è#5©~ì%SÙw û½w½³gœr3íL°“|E Î?•7N”¼-u\Slœ´LÕiòFc‘eBp>òŽþõcôô©víl»éOóÈW“Ö”8ÝŽx§nãÚªÜB.”¹j?Æ¢š!&dÞSj‘ÿרeBÿ8m¸Rø×?¦ ]˜ZbLǽröÊd»XŒ»ƒœ~µ‡hîV/3;ýkfilmÙ¦ŽÝd˜6>Q’N+¢žöÒÓüÌiÙÉé[/-µ°ÎÐI8$V”2¬Ñ,¨AVq]ÔåXd欩 ªÃ•#jã 1vn‡\~bÝ+Ý—cøSãÊሀ{Ó”cæ<ŒÓ£ÄÜŒÓça#³©8Ȳ`¹ þ²rä©ü*0œõ¦`ç­FAÏZvÒ~”¤g¥)l¢ªÄ›dèO\}{T öY‚NN+FÏt‘¢ÁØä޼ Û³ 6’ ¶Yq’­[\É´A-œAWçƒté*®â‡VÄž9•7p­Ió‘Âç¶==é×cýøàã"A¶Ù9ú)o-›®ªúzs"䌮VÒ˜4òq°u¨lH2H¥^Q€ÒªGLgéW¦´|ü ch­[¸²‘"Gì0YšÙ•ÇÉŽ@ÖeÝ¡ùv—8QYrZ?œŠ£™VsÚ·š  o=}©e‚âò墋qŠ&XÃ0éÇ5£w`×#d[Š£RzÞ­\B÷ •GØnœÕ¡£Ì.‰2æ6<ŠD‘eÉ”'šri“,˜, g¥jÛ@ Xõ­[[qo?ˆõ5¥"$ÇV5-MRPÊJ·B0i²"ËFÜ«‚ 6DY#({÷¬Û9žÚúK[ƒÑrŽ¢±´ÙÚÓQ’ÖèóŒ+úŽÕŸc+Cy$ðø>¾•¥ÔdŠÛíÛž„V—_z(¢¨ê0C<‘«'Íê;Vf­mΛ—Œ8ª¬2n\?¨¬BLê#CµxêkådŠ3òñòõ5r%YbŒàwõ«1<‰ó#r [R8(-íÈn*açäo·ŽsмÖç9y–Øn{æ­­‹¾Y’T0Ç=jزnCºÄ¤g$æ°®\O *›G­aÎÂFÊ®+vWl Àõ§"ù‘ýÜc¹¡Wrã¥* à Qqï1§ÏƒÔSdFÜTsަ›"±;G4Ý¡i*<`àÔ8!°iHf!PcÄà 9'T•üÎ9ݧ²lQ“×ô©=‹ŒòiU•cÛq v `Œ““Òœ1€Iö§8RÅÔå@Àö¥exFQÚd`–ëØÓTm9<šE½iQ¶ŒžIÍ8dÓÀ4±–7)íRG˜Ð¿¥IbMÔø »¼Ü!QÉ5-µÕàc¯SRCost¤Æ0=j9á’òß$ÿwÞ¢–ÝáýÛ›=E$îÏÞÍI 7SÝ gŽ;TÖ–w v) ŽjX-g›!Tí#š®a[}:á¥Æÿ< ö÷©vtYÑÈÞg)ú sF"Òœ¶<Ã)ó­M*9ôý(¶ši>@kSMéÚ:o@ÓJù }ù£§,¶Zta×2»ƒ[PïòAåˆç«Z Ï.Cã½i.Z0_#œvª²Ø¬²v +\Ue±_´ùÎs·îUÖЖFo»Ð ¹€8Z¸8éV€ÇŠ(¢Š(¢Š(£¥OR·2ijÆ?{È÷Ågë6fhÖâ!™a磸ªZ¿˜¢t<}}ÅKe*K•ã?Ο¦L’@ª'‘žâ¥²<@wô©êíXj;ŒˆÙ•qUu˜ˆÃsרýÖå\ûÖT…ܨPBŽI½aý¡Ñ†Æ* úÖQ™ÑÆÞ6ÕÄÆÈG˜Žz0èjÜWÍ$~\Ëæ#uÈèjÒ\y±ùr€ÊÞ½¨ˆFc1ÊÕ]¿Z¶S½Tl ;ãœTçÊtmàaGרm_ ¿(±TE›àäè}*¨µ¶l‚£¼K+h69=0)—ÑØAÕ“æ>‚£»ŽÒ°dúV\×)N–ü¼Z±å™"B±rOñËšábB±X÷5^-ç…Rî}jÕœªYAHäàOz˜3Âlæµãà‚ ?d‘ðÀÒí›É2Èõ9’O/{qÖžc—ËÞÊhKw(6îþõ ÉÏ­ ó f•€V^q޹ïI÷Ni>ëSÚ'Q¸r¦œÑ²Ý9£ nê 9StJÀqÞž‰¹7cŠz&äÝŽ)®›ã[4®»Ô ã&•×zè «+{ö;q +Œ®KUäÔ ¥©†Œ€I«Ÿmû48Æ95jÄ)·[¹Ζ^™è+COT[hîdO:YyôvÑÊY<Ç“¿¥hKðù‡á]yЫ€7 øs]7&G"¨Ïn¶Ñ Bv—ééúV­b¶±Å$D”'i‡¥ejVÂÑ× p­ùTör³ rƥЮX)ŽAäTšL䩌ô«&¶«J’Š(¢Š(¢Š(¢Š)°YsŽ™¤À'$õ¤ÀÈ$}3X^$¼hÜZ©áÔbø†ù Ûn׿¬rì£}Xê Å;FˆÁk-ìCÌʣךv‘·±{È×s²ž=y©4Øü›G¸ˆn,8¼Õ‹éÖqœ·§ZȺ½¹-™þlž8ëY·7SºUïÒ´´ùS %UºóÐÕ½9Ÿï£Û5nÁŒ@=ªüö¾h/ÚäÀMiÝi‚x‹'É63êáW§²Ç•8—ã½rÖß4£suõí\”®=똋ïóÅ]KÅ·“m¸.G÷ˆûÕÈnL2³®HàÞ®GqåÈ £w©eºÔ&8‘¼•î¬Ï{{?ÊcCü"§šâîSó±Eô0ÆwdÍ'¿5\ùQÃ2?¿5Q>n]½é—"yÈóHøPTs™e >9èE8’R` è"Øù$3‘ü"š-¶°ê[ÐSVÛc¤Õ§°t…¦ –ûÀÕkìEšTç¨Ïjµö6Ž/0©ÝÔ{U8m2iH$çØãL1È$ÔqD€ƒ+ó× ñ[IŒÉ¹Hî*ÓÅnì >PŒr:U¦ŽÝÈù²¸ïÚ¨<&ÞvDùÐò¥Q–†c:žAªoŽb‘üÊy•ĤAÞŒIQ‚êIèEWº‘¤` nÉàæ£fy\*Œ±8w5…æ"Äšé4M<ØÀÅÏÏ&=+®ÑìÍŠÆÇ.Ü‘é].—fl­DdüÇ“íZ5{­[ëÇZ§2[[Þ½äÎl Š£?Ùm/d½šAæ ªÌmíîæGŠŠ©k|f¾i7íBØ k>ËP3ê-&ò#f8SéU-nüë²ûˆV$jî¢ëöFÇ^ý>aVõçGÓŽÖ/z›Wuk rwŠŽÓåLð¤‚++M”@ÂBxj•ƒˆŽìôëW‡+r9®š6Y]T޵´Œ!ãÖŠu:Š(¢Š(¢Š(¢ŒàfŒàŒã·­À'®n+Fùæœ ÁVì¹é\ìVWéžl†WþîzV,VRÞÝç?.ìoJèa†+xÄQ.Ôìt ‹amP: Ù¨¡TP01YZ¤ 憖1ƒÐ ÿ<Ö>©l¦Qç(Çb£g_@¥ó"ñبª°\­°Œ=*(€…£¨à†2°€¸ëƒ[V×QMä(#åϵ›à›sÅiÇ&ør Žõ®Q¡d$1#5ôE†é\£Å±ŽjÍ­ä»’8É$aHõ©ínRØL’0©mîc‡rªüØàÓʳ,ŒÌ;[¥ ¹‡˜äŸcOmì<ÇÜG¥29ó´í^ƒ˜®ì8Õ³¸!N*•´*ïË‘Rà@C1ËR! ±É#½[±–$‰®®¡À®é qµÍËd©ùA«¶/q™ç9=…S½ÖL²0 Z†÷Uk—!FÔëP]jžs6Þ ª±¸ 2}9ªƒtœ²Õu%ù"™"°˜„ ÁìiÞ_=úzѰîàs<žPÉûÙíN‰Œ2)”½sÚ•ÆÉæ!<úö§OtØy­ÃõbþhVÙV¹Ü䓨TדÇöp±X䚂ąÕmò7|ãðªÚ!#W·8ÝócéÅVÒ ¬Dܟ»3×ë]±ä×Xy4R´V±r àÁ;¶ý1\®¹u¾îT8m¿LV«s™ÝG÷±T`›`r¨[Ͱ—‘U ›h,"´ô×{É$ˆT($úÕ±¦ÔDÑ1ùäý{V7«*Ÿ¸?LИ$ ¿,ÝU;«sk9‹væöª³ÃöyLa·5Oe1S¨Î>†®è—޲ˆÛ%àûµ¥Ü¸p‡•n>•x×Aô­zJ(£’¢ŠhÝžOƒ?ZAœÑ#¤jZF ­2Y#—cAMwXÎXã5ZYÚá ÂvdýïZ©-Ä—$?ºýîæ«¼Ï>?×֬ƥg¿½\… DœûÕ˜ÁT œšpëO§µ™<¦áîcýÓŸJͽ…çghÂ;7Côª3«\odGR8硪’‚Ÿ»—å g8ÇáY2Y r®ÓNµEÕ÷ä~tûYR.0¹Ec·rñÍMg5¶Øˆù;oZ’ÞæHJ¡R¶áÅVv…³$¤}+/Ì]ÅŸŸjΩl·>Ôèìã%n `^íÁj¹gin[í?ºˆrñ³omq4ØEu4—wl®9¸u¨o%Èå~aÇZŽâC#Úv}áPÙ’ò…B0Ý* l¼¡GzŠ× áAÅK«ÆCD㣚—RŒ¡º€)ú”eYXv›%ÄŽžƒ E¥fàž+>I]ÀSÒ£hAažãšT;Zˆñ¸gÖ­F£` v‘Rô8«žéR–pKsÞ½×'4íì¼Òå˜þ” Œ~bJPÊG<“M*#Œ±À-Hà ÉÉ=5øNO&>[± òÆü~•6• Ì«ÿ,ÁoΦÓ#+1•€ü롇TŠ[ˆàÎKŒçßÒº+]Z)§Ž÷œu÷­»}E%aîG_z¼5¥š®u5ÄÝHÏq $“æ0ÿ?­p Æw“óç\mË1•ÁÉù6îÂ$f4ØÃ;“ïInW(ÁÍuše±³Ú>go™©®ÏN²ûŠ6Ý!‰õ8⺫KQiiåÆ~|gñ¦ÅÎeù¤Ï?ZÆòÎDŸ<›¿È¬á J·-šr¨A“…,ÛåO>Í"g†ß“N|—NÇu[€k¢”ÔVºò3L•Êc÷{Óe“ËÚOÝÎ)¶ž†‚ÃqàJsžÝy ç8ª··f&òâs÷˜Õ CQòdòaâlôªwwž[ù1}îìk5inåó™™ sëT"óe—%É÷ª±¬!.KVµ´Hª6ðEjÚž}+FÂ{úUžÕsµOÚŠ(¨åŒ ­xÄ#¸¨g$mÁëM@$!\,Š;‘ȦÀë+í|8*HäRDÁÛka½3Q]Ú<¹ØçøN1L¾ÓÌëò;gÑË›?5~V9ô=+#(¹y„Os\¬,‘(•Ô1þ}kž…–4óHÜÝÖ™4²Jc’C»Ñ{ d’É!Vs¸ö…2IdfVlý*ì71SÏ@ªF±Wí®Hžr€½7 ½ʉL£’ÿNHí®~^HZ“P²‰TÜZ6BòqÚŸ{kC=¹äuÅ2i>ݦîëcê‡ÓÖ gûfž9ýìyà÷¿Ú¬€ÏïS<{V2XŒsYƒ9#&²‚¶qŒR$¡_9<æ€ÛM*±FäUÈåŠXÕ#U…tuÚÍZIREÀÆhØÙ䌊6úivûÓb@ VÏ4¨0pÔ±¤†éM¸l:`ôâ™!ù—£ü뎕§¤F†â@GkoA‰ Ã8+Íli¦F|¤sM¶Ó+陸-åŸC×4¶ºK[ÞJò ÇÎÃèG Ó­ôö†y¹%O¡«ÒÉ;*m,ŒïzÕ»§¸e\FDÉ#ùՉ̬ ò6¥r²H|×cÉÉÿZäݘÌI''¯­rò9óç'&®iþ]¬&îlnÏÈ*å‰KhþÒü¶~U«¶,–yÍ÷ÏJØÑn.n$y&À‰€Ø+oB»ši$k‡X ŠkWH¸w.Ó¸h­¿éGƒó~&­¬ñ62m;@ÝžÜÕµ‹ý5Ÿ(EA+m™ìÙ—z|»ù=Ÿ5BèùwoìÙmH+‘Èî+zÞd–%d9ÈäV¬R,ˆôçÚ«ÝG3¼{T2ƒ–ç“D^Xßh*”ŽŒÒ);}j½ýð%íà8•FKzU Vÿ*ÖÐ’²I銥}xNèbáÇVªqÞ,—##;x¬¨ƒ –[¥Êägި ȲOó щ¢yJ®7(ãq[¯ŠBa\sÇZÓâ“åPuãÒ­(=ÆÑíÞ®F¯ß僩«(­ßíNüj`1Üþ4ú(¢›"—Q´ò;†æ/5T)åI¦K˜ÏJ€¬ Ü1ýÚ£±£™H ãå5[aY…ɤ’[ƒîGßZ¶ZáâÊ•R”ù¬Ÿ/j‡ölvjÒÝK¾(ÏÈŸZÉD6óÝI¹î-PþΆÍY›!Oʵ,ägÛ±¨ëX²°’Báv®NÕ¬‰_|ŒÁp3ÂÓPHÍó ã¨4Á¹›ϵ"ïfÁà{Õû^Ó1Ü.è$àÚ´´ù~Ê¥nT˜dÈ«öNÖÀ‰Fè˜~U\ùqïHOÍœ©öôª­µÖ3–ÎTûT±K$}sj¤Ê¯lWÚCš¯( ˆ@ÚvàÕYpÊ„ ­·š’âÝnlâ!‰“‡´ùgµªáÓ‚=iÓ"Ïl$Qó¯Z§‡ËÈlp*°\¢5òÐì j›¯,:FJŽÕ§öI¶îEàv¡.äI 1‚µ%¥õÜ3Ç,Œ„íÚËN‚{˜¥D(åIÆ1L æž:±9öª®æâVb>gb[=ªc$„·Þ'æö«‘`ŒŽ kéc#>œV—+ô§²†œñëZ$w5oÅbÉa#êeˆŽ]Åš°OwÕŠÌÄ$›‰5’l™µæÁ$Ó^ÎHUa“s.O+Ö›u`ÐË.]£9Î)³Y˜Ý#$”ëWm"P»‚>ðä#Ú´--•!#ÁÇ8«¶Ñ@BCu5 :>µ¢:Z·Ûš(¢Š(¥¢Š‰öûÆPžÝjv/3º*gŒÔo´s#¹ªÏ<ÎKaàê=ª¤—r[Ìyß éŽßJ®Ó¼rðCGÔUU仹0ÇÊÅÉ™­Ï%ÕÉŠ3ò§&¨j’¼òìCò§&«À ó¿ÓÞ³cò„™ŸOz¥@ùã?Ö­XX‰\É!IÎz½¥iëq)iˆØJúŠ·§Y¬®^B09ÅWÕn³"! áj=båd¹ ¼¨õI÷L8Uà ,,ÚWóB1ç¿AQÙY¼îV9<ûSm-ZW °zÓï­ãBàyÍ>úÙc/ÈÈ4û¸CsŒU;i¼î„|’T¢>T…OÝb*”gË‘—±¦=¸K­«ÁÜM7ËĸZg–Ä­ d@I²(g¦i@,ÁjAjLA»0ÅJ`m»½j_ •Ï­:™YAϰ©-ác*ª®N{ ’Þ&Þª£ŸjÞµ·1çåvô®¢ÂÝá‹çùI­ëXLhr0M[÷«`­X¬kû 5º77·/P¹¬Kí2ÑnÞêòàÎB沯,­…ɸ¹`rk9âq{´ åZÇÎ=«:ÅüpBž]´|ôíTbU¼Xb]¶ÑœŸzé  @*Ç‚¿…u EE€«÷F+¡X•Q½H7ŒçžÜT™#©’:‘OÉö ö$éG_CQ41–-°õªòØÛÊÌÞXW?Ľj'·‰ÎJÞ´àŽ3õ©¢‰!M¨>¤ÓÑŠZu:ŒgÜÑœ(£ê3HÊägëF3ïMmÁ@@:óŸJNFR`ð÷§væKEQEQERÔ±·9 ôúÖ^²9-»Ú¨êXÁëšÂ{©b¸ í'£t¬ˆfhæHJwµf$¥f ¼zƒÚ¦Y3…lJçslÔM!1>7&˜òf7*~rj3ˆ”÷ÏsUxPsÍWáïš·`òµÔG~>lcÚ®érËöض¶8#Ú®iÒHnPòœæªÜ°¸Õ j£nìz‚ä‰õ6@8ß…ªó6¢PŠ·y¨5ÓÛD ÂŒâ¯Ýß¶u$À…\¸¾ûòB½Go³¤šIŸtŸÅÑk*I^W%Ï'šÎyžf$ñšNAb8ö¦‘ÈÎ)¸ù†i$aö…mÝè ‰f€ß½4HO˜ß§­‡V´%R;šÜ²X¤„ù¸\s“Þº-2'€ùŸ)í[ÖPÅ,#wÖ›qyÑmKqÉaÈ«+cwHÐnÇsڥʗ b'­j“ŒdãI­ €2ǧ­[u®sSÕnḖ(› ‘´Šæõbê+™!ûÿ)¬+íNxåh£%°=émt)öf Üí4û} {¼Ky)ËriaÑç»[¹O!kjÎÎHö¸ÏSë[v–pZFR ž§Ö¶-mbµŒ$*zš§©ëpÚŽ#¾oOJ§©ëPÙ†Ž67 íU5 VE*¬OJÁ}fíäÜ[>°$Öî^MÄàV#kS3䃊»c®:±W9ýªí†¼ËòËÍ^±Ösò¿ë]¼ës• t6ó-Ä"D<Û‰ÖHéëRT”ê(¢Š(¢Š(¢Š(¢Š(¢Š*´÷ÐCp—oҪϨAÜvìrïÿŽÔ/w\$åßô©."Y¢ÚÌF9S¯ ÂA8#¡·Q‰£ûÛqÐ×;yÙJ:ƒœú×-0ò®pãiýkŸ™vM´§×Ö¤X‘ìÛq l=)R%’ÓÍÆQku óT§ê98ªrŒ‚j¤ÃpjÕ„Å$G#8þU5œÞTÈäd žÆo.e&xžMû8ùƒŠuÆa¾óÁ ¼S›÷ë'£îü)5dòõgçPÀžÙ&¸‚=NYÊÈ©ö"“VO'P•;°Aü+23ò;;†1Íg•bO#¥g«e–ä™B77ƒÒœHÈêN)ìÀrsŠM»—s8ç»7 ä ]¹³ŠPÆAŽÈ?:PKcž<1qÇ8«öñH¨¡dfQÖ:Óµ.¨›d,ðzV”`Œ å“=+bÉ<»TJ¢óϧ¥t6l¢· zØ·8„¸ïQ\Ý$ИÓ!‰À\uªW·©q•wÆßZ¯wr²ÆÌOJÆÔ#’6Vd,cqŸ¥c^E$7ÈÈ[d€·øVTѼwPHÑ“²Aº·¯u­"êÛŠä.+£¿Ô᳌‹°È\VÕÕôV±î|†Æ@Ås—ž »¹FUýÚ“ÆÞµÎÞxŠêá F«>qXž ž`RŽ™¬õŽG889äžõ•†v%²KrI¬ÕWvËòIÉ&­ª¢€øà•&çÚ¬lU±Ú¢eÈ;søSH:Œ¨S¹xõ­Ÿ ÎH–"r:]…g-±1Î9·ü99’F9Úx¿[Õ¯EQEQEQEQEí8ëŠC’­Ž¸¤oº~•I4»0K0ß mÀ“Ò¨A¤Â$Üeæ »$ôôª‘iщóe¦Îsžž•nQ”<ôì*åÀ&Î1Ója˜Îµaj¹7ò{W3ª2å‡5©œ¿Ì=«ÿÙÿØÿÀððÿÚ ?Ådo9ÈÉÉÎMaH§ÍsÎ3Þ²äV3>sŒÕ4²^‰øGj›N‘¡»YÞ^•>›#Gsæ«]%ž«  $¤+öuvZ¤‚GU”ñ·Öº[[øgU ÀHݽkDúç>•{§½ZþT”QEQE´QEQE”QEQE´QERQE-QEQEQEQEQEQEQEQEQEQKEr§Kº(Ó “×5ÉÜi! Á7ß5ÎM§Nš{Õt¶¸@ŒûñT–Öà|¶üª¤vÓ+}ÃùUËm:V•I]ª§œÕÛ šåUM^³´Ì¬AšÛŽåžøÂŠ H£/êk Žð˨=¼`ÑF[Þ¶Rç}ÓB€QË{Õ³Ö­Ôô”QEQEQE-QEQEQEQEQE%RÑERÑKIE%QEQEQEQE´QIEQE--W´ØªB±Àê; ©dPC€Ä¨ƒÎ*½±Q;ƒÚ¨Íx·4q8SŒÝR–én§66£ªÀ`†? ¬ò¥Ä†Ý@ž}jº¤¶êcrÿ)ã=ë=|ûu0HÍò¿Z©Klbr?ZÐÓ#;M¤nîkSFˆ€ó~næ¯i¨v¼„»¹«µ§Wh¢Š(¢Š(¥¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢’Š)h¥¢ŠJ(¢Š(¢Š(¥¢ŠJ(¢Š)h®vµW æ1‘ñžÙ®r+‘ý‘pVB]HwvúV2ÜãM”‰ 0 ö©- »Eöû†#` ==êM%` ^\I† 1Û©,DX[©\푊ОÔÝM¡–W9éWnôóuv»’Gz±=£\\ì#“ØÕÄA»ÕøãX££W QÆ)iÔ´QEQKE”QERÑEQIE´QERQE-QEQEQEQE-RQE-QE”QEQEQEÏ_i›\5˜,­ Ï9è3Åa]icÊ+c‡W”;‚}3€?:ȸÓö®Ûo™Y÷7<ð1D6R£[¬b8›øÏ_z-´»¦U‰± c’Ă߇¥ØÜ²,[Dh9ÜzÖí¼~T âÛT šÜUÚ¡rN2{Ö²‚Š%ˆÎ1O¥¥¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢––²MäA~G îñXFõqÆ=+(Ý <cÒ§³½3«mmÛEX³ÔZub»iäj{[Ã2’­9«‘¸‘r­ä.à1W÷®ìS©ô´QEQKE”QEQEQEQEQE´QERQE-QEQEQERQE-QEQE´QERQEW' &d¶qœ âÔ—bÙô®UHvÝô­ tÛc9EàcÖ¤Ó˜%À@0c?J—Cp—%GFZ—Lm²²öe´Ï·ZÒ4””QEQEQEQEQEQEQE´QIEQEQKEQE%RÑEQEQEQEQERQKYÿgµ…VYåQ€ëXñ[ÙÚ¨¸•Ë `.+=b··I9pÖ}æ¦Ì<›U0ÃŽXŽMP¾ÕämÃp&¨Þj.ÄÅ ˜ã¥†=–ÑçëÁëP…+ cŸ\SvíŒ`çŽiÿi ã€),¾Ò’ð¸RÀáº}išk\Ep `m'•?Λcç¤À¯ö>•´$Œtü«¤Î}:sŠÚ=}¨ü( œ ÔpOÊ3FNàäS!•&z}Ü‘Í2)eܹÆqUµwF@'–U=MË¢F‹œ“óUïX²ª(ëÜÖuè_:##*¨9þf²®ãc4~kEã8éT.c-2\*(Á«ž]•¢—•ŒŒ«•¤¶¶6P±R2÷«¾]¥¬Y #!zaXÂ<“)ƒ”< <óPIkjÂBd2‘‡Œò óÍ1¡…Œ`Eæn9܇‘SGO±alÒ€{ñÀúÕ³adËjÓaÆþtöÔ,m]m¼Àã¦}êø9‚y㸫æA#Í­ÚªÜY,y Ä‘Ãç³tªwÑýžB‰#2ãçÏ@sU.âò_j±Çñýi·V‚+\‰òM6{§žÖ;ePØè€ri³ÎóA †ÇEÅjèóƒÈfTë¶t»„Kq2ù‰ÔŒ{V­„¡`»ëÔc¥cK ÝÏtÄ2•v%œž•ŽúÍÍç˜YLnÙfÏJÇm{‹Ï0Q˜’Mt2³Ú(2í*'©Åtsͤ@ÈáT ÜàVüÒ$†wÀ}qDWm'&-ª>óg¥Co}$òöfTîÄô¦AtòÉþ¤ªú“Ò¬ç úv5s ÕŒñEQÞŠ(¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢›Œ9R¤ŽAí@$¨$žÆ€rÁìih¢–Š)(¢šøÇ\S&ÍLgJl‰½q»ޱ ³€c~2Þýª±o'÷W 4/ÆOò¨OËû¹Æä~`jz!·Ý4#t?{ŽßýjÁÕ´3l{rZ¿îÿõ« RѼ’dˆ9ãµ&…s%µÀ„’з=±éF¨Mo(òОp‡éRè—²BþDœÅŒjèḎ` ŸCÅtÐÜE8>[sÜcVôr$ƒ(sìjBØ© Å:qéGlÑ@£õ¢²õÀ°¤W*B¾ð þðÅdë«s稬íV2ª³' üF Ò&W@OîÎvãðÍTÑÛÌ»?u³·úÔ[y—çî“Å_ž 4„c wcÖ¬_Ú1žRr±ÜEMwnLŽBäj[XÞo¼jî›e´Aö9¾ówfÎÙ-âÝæ7SHñ ¨€9ùŠŽ§Þ< ,iµ‰ÜÀu>ôé"/à÷ÅIn¥#Ž[ùT¶Ë¶©æŸ íˆß­6qa$½º f¢¹[a"KrËòtR3M™!²LF 4ÊfˈÎÂØ ê>”ëiͳ„;sò±þ!ô¢„À°SŒà60§<Û59˜ôô qKÛKEQEQEQEQEQIE´QIEQEQQNÙ!?…½*)eÛ2GØÔnø'¯5KV'AÒ£œŽµGRÀÚí”<ñÔU[ä'ÏËÖ«Ãw*J¶áé\ õSK™¡ù‰"#O¥V[‰#Ìyß=©Ï¦Û;‰Õžr@Ñ…”¯ç+I9*:DvVÏ(•¡ëƒëRN. »…íÐI½‚¹'îéZHÒDce‡ÌØf8qZH¤@°—Wês´¦æyäc6†!WȬéïn®.€d€˜ÍU–îâiH„Ž6Õ>t™Y í–3‡^•¥¦¸{ufR’®wE^²u’z8á†zU¼c'5luÎj~ýk'Äí,ˆËbHôÍSÔSr)À;}MT¿]ÁIPÁzóùRiëj"í»pÏùô¬Í&#¢£›5OLˆEv«‚85¬WÖ·ÊúÖ¹´¸Å(QE´QPÏ‘~WØ{œu•^êØL¹RÏSŽ£Ò¡ž0dõ8ÎG¥H£ä ØwÍN.xïS€=¨UÁ¥Å¥$­#8^´ÈäQž3ÒŒäPÄ(Ët¥$(ÜÇÖ‚vŒ·JHÙd@ÈCÞ‘pH`}(0È jv)Ø>”¸4c””QE&(¢–Š)(ïGz(¢Š(¤c´R1ÇJB{U¹ w # ¢ŽGOƳ.¦òï#wásɪSI¶å 8_Z–RÌ‚h“#(;1>µ¡ ÊZ·(ùIÛ¿Ž­W–Ù‰L[CöÎv0çÖ³î­<°Wån«œâ©Ëo°¨€ÝrsŠ­$ò%ËFI_(ôþø¬¹™­Ý”’zxU$h˜¡$÷…K+…ü¿»#|Ø«SÝWÎËòàÃúÒé×6¶¨Ò³î“ ¶sÁn¥Ù÷â³ç¼»·gº#Gz†mfìš$I팚¯&©4lÓFƒË'æ$VÎ2Íc ·,f[‹(¥AïJضKoª1¸f¦ðFTÄö¢á”ðäÖ‰H<ïƒUÕeß Ý·;ú ÕSË_µ¶Tã†Þªá¸l2ƒŒ‚)‹xÉpòèW‚ 6=Sˬ¿¼ã¨4‹~ÊIó}*ìn².åÎ= hÁ2OøÉ#ßµ[‰ÖDÜ„‘ü©Ôúu5S‡eéÍ2Y£ˆ2EO©æ‘™ï°_©¦4ñ þ†£7–Ý ç¶4Ï>"pRóV1üª_LUf¼A0„)g$ç¥S“Q‰.#€+3HÁx8ÅWk¸Öd³œ}*r2séVJdç*b¼îô£'°ÜÑ–<ǹ4dö­T½–- Éç$ãòª×q•·Ëש'•AtŽ!$Èyü1X[Dq؇9ÎCóX‘$Ý»‘‰0k-sà¹8çå|[7ŠÆhç-æb¥ŽâI0©+ îÞiÿ|3ÊøDwûÅëJ;³nvµÃ7Äw °šƒÀv›äxƒŸÆ¬‹¶ˆáæ }ñV#Õb#2©Rˆ Õ˜uˆbPPÿ{4z„$~óä>½©ÏªZ¨$39|ªií«Ù…”±ÿeM+_Û’n>“N¸¸ºß4©åFp>ãÔþtû‰n•äxŒI‘±[¯N¦i4— Ò4f4ã`=OM]«U=QESfVã€÷¨Ù_©çÐÓl?ZÍÔÄÅ’sÇÿXV>¬§\úŒVn¢—ùñYzeô–S¬gsA+Áõ£E»xÂDûб+×î°¦éwŽž\/¹ÃgÒºdbSs! FJç5·÷$qZÝAÈ8¬­Iü‡ÍQº¨ê+VUI?z„GŒµ—¨„ÿz¤!鎴ß7Ì€¬F@Æ}†+/Ì'™ÇgéTZBFÔÉôª6Í,•f!½?2&F8àÇZnvÆA8l¢Ÿ;™a‘IÂýÕÕ,Œõâ£l¼l ðx­"‹O‰%k)®£JƒÉÓ¡—.k¡Óã1ÙD„Bô«À'ùÔó0Ž2ÌíTÒ©¹†G½Rš(¦º€ƒ»%Aë×­eŸ.{ër«€Äï_ÀÕ$—P•)ê¹ö©¦´†NÅL­Z¹Òà•²¶TÔ³ØG#p {ŠÌ¹[Í>u)!1“Á=?ʹû^“ !‹)?+tØÕ ÞçNo”–SÓ ^ƒP2[‡x[rõ¨­ mi%„3ÂÛ‡Pµv N9acbÝÀª"™žâE` êÝ…cÍæÍ4—®F{ö¬É‹É3ÌÛˆÏíQÏvZÜ.ð6 ÏÒ4Ò,cc|§¨Í+gv$öéÅZþôÀÜ Ç¡«Ë Zàœû²4x07øS¡ZnÊ´‹ì‘¼=f~ëºý Fƒø]—èj¬š«‘å£nÍÎ*£ø}ÒL$¥ã÷íU›Fur]ËØšC¦ß[°òöH§óÚEüy;d޽)’é÷°ŸÝ`xëVM¸|î 7Uªxt‹¤Œ=Tv©cÓ§HòX=½ Y°±[dVa™yÏjÒÓ­¬äÈOÌsWìíÄ ’Xõæ¬ÄâHÕ¸Pqž•iX:gš°>e :œu-´QIGÒŠŽHRH™äô>†«Ïmвóè}jàY"*GÍŽ s·$År˜Ã¹“œÿz°mÅrÐI㞣Vç€) Ô’¾é_Ï<RX°–ErÙLй¥.ëÅŒ…CÍXÓ×uÀruxœçŸ¥lŒç$äzV– ç4×Tš?.@ ‘Ó½2xc¹„Å*†SúTsD“DzA•?¥g¼^EÈHÙ·¹?¡¬)md°ºFŒ·Êrî= e´gp dåN~£Ò­Ü1{pñ(pÝè?É­“!1,‘Æ®¬8ŠÒb +,jÊæ:z~µ.”­pZæuŠ©lm$‚êÞÏ~µ—} ¶š˜ËµZeÁ˜Hv"@Ú½}yüëWNœK¢‚x zzѲ˜KUUG`&­Î_Èv„®õùºU³œ|¸&¬6BåW'Þ³/„Ó´rGÙUyn«Y:´ pèbˆù£«cγuŒ²+Gó\ô¢7ŽhÌWlÄŽ‡ºšª²,Ëökâw/ àça2yWD†uÇò¬ˆâò¯."RÉžG½SX sKŒéNõJ8ŠÉ,yaŽ˜ïRÚÝOmIFzšÕN& è:c­9d •]€é޵~ÂÈÞÀæ2‘çpç­]±±k¼° ‡®sÉ«6–†ìòš8Ç žõjêå퀂Îi;qšÑ­£òí ö-Þ¯I!¶Œ¥¬;Û°=éÖ7—|·PˆØ“·¶ê’Þêv¸·òÎqÁ§Û\Ë*æ{s ŽOZ¿Œâ­ûÕ‘Š©yne¹R|ØÐ€™áªˆ•ŽöË`p„ðj ¢ùŒ¹vùÕŽ‡ÿ¯T®n¯Õ"H-ãÚIÝ»nxéQ³K ªE+žYŸLie‹dim•ÈË—TÄѲ[#J܆œa¿È¨5<Äý˰ÜH8éœS/“rˆ¹'²ò3Y-gq4¸”ª¼d.FãX‘À\°›åu8縬•¥?¼ùYN1šœè2“’áXôž?¥is1œŒôœ¥i³žKíÏAžÕkGQhHrÈJŒŽ¤u­ &°/gÏ! nãqjî•Z®6|ïØ÷­”S¿t„nÇ ?†µ£Ìžl¥w…U赤¨ÆMîF@ÂÐSêj’ŒQE-RQEQKERÒÖ&ƒm$7SÈa¯Ó Èô¬Y&ÄXü¸5™£ÄÑ™XǵXñÍl‡pkLñ*ð>jÐèàbÚŸNíEUL /%SþÀíÆõª«ûÆ’bIu{T<Ë‚ògŽ‚ ¿‰džÜð"ŒüÜ ñž;Ó¦…&ù\˜#žÙ¤š™¶œmÁ˜ÍQ͵Ì[X„vØZ±,]­o¼œàÙô5™e#[Þ¿…Ï9ì{VÐÈS¿ïgœýk}X<·½l§p îFj x7‚Çs|ÃøGÿ¯­68„E¶çäúScŒ!8ÉϯJ¤ƒy-Ùu!›i_îÖuõ ØÓdmþíR¸·Â´¤†¡âûE™+ï›׎”ûeK‹”Þñ:u¥DZçné#z­¥]˜± Іl€ÌËÀÉõ¤·eE&K%\ ’Fqž)-ž00öãr¸•ïõ­Õ™™Â…qÚ®Åqæ‚«€1ŽÕu% ¨ÛǦ’-÷‘NH<Ô.náVb|ÄGjŒÑ!-ó ý*“ê(-xÏœìø[ÜàÔqê0Íîìv®{Ôbò9"S÷™ŽÑž1ZˆÃo\íààç&¯ÄÛ¢ *âPøÔ35ÂÅ3G;õc?{ëHá”;*‡oáÇ2*3,a۲棷ˆçÌ|G$ª¥ñ×#üšHЫ¤Ž@¡‚OÝ'¯zmÊËùÈ)áð0sž?Az²GÊ[sëPÎ*\󷃚‚+y[–«æ´Œw±È_ÃÖ³­­ffdDA+3#…^ÜzÕ8 • Š%$îfèƒüjkH j©#2KŸõ¸z·mlкJÙýálïúе &6\–Yñg þ$6¥.ŒåÉ$µº ³ NdY]²Ã#µKmæoc’8ÁíV†àlg¯gžõ?=èÈȤÈŒŠPr;óëKš:ÒÑEQIEQEQY¶“ffaòFT=H¬­6à™à*1ânõBÊ\»‘ÂAêóÈXŸ”ç…h¶×PÊG ÕÖ!€ ý)á²¼‘šz¶G4 äSY•_ þ”ÆeY0¿|ö¦’°¼·¥8ŽU°2<އ½;9#š«q¹F…Ø ,Wø‡pjÜϱ²£¾;ÔN¦C±‰£c½dj£É¹–Ý9Ðuöþ•…®§“zÛ8.¡Çùü+#V;¦ ß mYº=ªK¿ƒw¶+rÊHî K„<í¾¢¶-'‰%SÉ^hºC*ÂQˆË†Èî1R?ðiª^‹rÙ¹ …ïê üj ï+È1œ ìàbj½ÚÅå¸\‘€=}ê´oe*ÆÎî'b^œ÷ªÂaqœòpFx51´, ³ÇÕë…¼,QHŒá¶“Ï&«]Ü<—°P±õ*OÍU瘴ÛFÕëƒ×¡¦Ü½Û« O)x9õíV´lʦL  íõïV´·i×ÌØ8Éõ«SêvJÑÍ!›#гsªÚZɲW!½—5,ú¬ VG ý+õíu/3ìhë"ò­ŒúVUÍÄ¥šÊ7<¸ }«:yb¼ÜlÕÕá¶ðiÚ~§qkbÍ4aÒ6çšµ§\Ëmi/ž™X›‘“SÙ]Ëmhßh‹+`zf· •fA,`yn2sZ¨áÑ]1µ†G­i£@É÷XfŸµra“NëÖ—40úÒóÒ®j80Çñ瑊‚ÉT F-ÍGlÔžht ÆìsG­,±K9È4¬¸Ý‚9¨Ìέ*£æÃîþî:Ƙ.¶0Ža±ÇRGzÓÅYVE ê}j0yléóã°5:JŽ¥‘ƒèjPê˹H¥ pØ<®;7çœFîø"”8$riU=iwg½:KKEQEQE-€D—%pTäî°ë\¥œòZÜëŽqþé®~ $‚\8ã5r¸î¡o,БÃS[Ö÷ÊÃÀþðÇÖµá&NØûÃó«\,Ó¼qò±óc¸âž“y’:FØÙê84ä“Ìb¨~éî8©BâV_œqÇ¥?†Û&ß›§üUñ–èj_z›µICr(¢²5«6vIÐaüø¬zÍ¥ :€B© ùÖn­jdQ*ãóTvÉ}Æò:NvœgªèXy$†F :n r WÒ‘egÙ— 3ŠÙ†1 Ie‘F÷­õ€•9­Œ/ÌèMU½³{¯¸êŒ8äŒt¨g…§ÀWتÙ$uj†hLÌ0áB¶Oz¦h›Íó ð‹…"–dÀ‚BÓ¥B8ȱÝÚwrÅøažù5ƒ(âRijq‚k"U_vIã>õsL³šÂÎptŽr‹øV¶Ÿm%•ƒ®7»ÀUë+ylìÝË£Ò°ïC´àÊåÜžG­sWàË{óÈX³~•…z¦K°‰$÷éŠÒ°–o^üÒÆ yœsœÒ 0zÓÁ÷©GJxéKÒ”ô¥¨ç„M!8ÈàúTw,ð¼dà8Æ})’IJÄPœYPk~#o—9Jç¢&ËQRã1Vÿ?JÆ6—£wpkBÒ'÷%@Ú­ût1–$ü½¿kÄ…7ÇüéñÈ<¶ IçŠr¶ØÉ#ÔâœjgêqUú"³åw(#ŒUy'1ÉÁùj˜ylC9lt¬Ö¼·KvóÑ·Iò–+ÀãƒYÑÏo³Жs´’½8â©‹ˆ£Œ™Q÷;rvôâ®YâDPv=ÉÀ"¬^jÿdTQòÝI8©îµnò÷g©éTîR;éRh(x1ƒY—) ä‹Îʼn(N×½lhæA –9V#mkuÀ"µ Ñ¥¢Š(¢Š(£QERÑEQEQE”QERÑEQTšådf†á0¤r1Y ©nvŠé–G#¬ö½Ë²LSQEo‰v6pAÚÞ óPÙF`»#’˜ ﵪySãø{aÎ*•ÅëÛL&ŽFXQ2‘ÆF:U›‹ß³+È­€ÂïOžå  "³` ǰ«ÚDÿh¶iw—ç=3Ris›ˆ˜a‹sž™ïSXJfˆ¹%¹«àUð1VÀ¥¥¢Š(=j¦£’-á~`G5™­ÛyyÀ|êyªZ”!ÐJ£æ­`OZÐd^p÷â­à²€OËÞ¡c´m òƒÆ{ÔS©#hcîóÖ™"ä`‚1úÕ•#“åÀEŽIëü«:åÄP3#°'!“T§.2T‘œ|§¯ÿª‰®x€òÔ¬¼W<öªéupÊv"Nvägüjžg@~1ŒÑ¶»‘UÆóx`F1W­ä¶¼`$ŠŒ:È_jµ Ãp~e,Ê0w µ œ-æ$ ¤ñÍY†ÂÒ&,¶È¬ÞݪÄv°Fr±(&¢¸´eI;È;‘@û£Ò©^é¬ÖÒ¿˜”ïAŽôª·VY…ŽíÅNTÂ¥µˆù*@S¹ŽO ÿ"®é¨„@99ãÜÕ›$+kýjÐéÇ8«XÀ©úRÑEQEQEQEQKEQE%RÑEQEQEƒw°mWWÆ:ƒ‘\µåűU%?¼§8¬«I l·Ì¾¢¦±˜ªÄ‘ü!»ÒYNÖò.y^¸4¶²´N2 j)Ú9of×s1 þŒšÔ$×3&̶3ƒô«†T’Y”¨-‚p~•sG‡ìðm¾à?áVtè¾åê[ÓU‹8–  $f´>jé«4™;±Þœf“¯¸¥Å.)$‘—½2eFÈŠ›"†B¦ “"ˆî¤œnïMcŒ"’ôæ“T*’ô¨.EÞâðJ¯ÈHÀSÞ’MÛX«oö#¥1„€¯»Ù‡O¥5Ñd÷§üçg¥gÍJÿ8;ºZ­$-)!³“À8¬•¹š%y›YNA÷ÍbÅ,Öï·yVCŸÇ5”’Ë ìÜAC‘ùÖ¦™h’BàîrHµ·¥D— ×%;¹AØÖ®›J ¤å³’µb÷3FÖêÅK¯ µ~gSû±ß¸«30q³={ŠKKi!P­)`GCNXÆÝ…#µ=cÂíÉéSÀIÜ#¡éN‰6 ^p)Pm¥KN§QEQEQERÑEQIE´QEQEQEQEV3jíæ=½Í¶ ›eM{pîÖ²[‚qóÎ’êff…âu8ýj¼—\jñ²4xÏQ‘U›O—`u– £±~Ÿ@ð¾bÍ?ÞéQI.ë¨ï"_3t{/b:ÔÖ±°!¶©o¹sÒ¤·_˜È¥_< n‡…À#)=ëB@VDç¦ _9WVÇ«9ÈÈ«çü*QÓ"¡¹>TRH½ÍV¾>]¼Ž03PݶÈÇù5Ÿr³B˜KódÕ}&ú9¡XÙÛÍwµŸu‘,CƒÜõ«-´ðzÖ‰ÇãW·Z¤ÿjtFVË»Aÿ"¢aŸ¯¸;NyÀÎEL°±—|„tÀ À§m$óÉÇjxS’Iɨõ ÚÈÉ̽8éPÞÈÐZ³¨Ë¯J†öF†ÕYk'k°w(ÆýÇñçú×%q;Ï33Gןë\ä²´ÒÜ|Ù5vÒäÚ8|ËŒ8õµgM½k'U<8õbÊí­e ”õÕ±„Ÿd©‚9«§gÙ4d#9Mo©I‚Ê„2š•WêEç$ç¹§€-:–Š(¢Š(¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¬åK}AîOUq³§=VO*ñ&#îÈ6uªëåÝ$¼ü®0}Edj: ´¶Cïù¾`zš§5…½²…³óš©.¼K´)ÁÉ-Ö©ÜF°lKWbHÜÙàš¥s4;_“»qÍS¢]«l»;±=MoÛÞý£LYÝ@3Ïõ;PŽ9m o¨%NqøTZÌPMf_z+ŽTç­3SH¤·-¼nþk*Þ_&a#GFÇzö¸6÷K.Ó”À8î+& Œ ä}Þ¸î+J]A#Î ½ás[òjpÇ”>õnŠ&µä¿ÌݹOðÓ-µˆ'ŸÉu19?.O’ÓW‚æaÓ·Lž %®¥ Ä¢<cÓ=êÛ\ÀipUæu\îeëÍZ.ªpYAy¨îcŠò2Ë €¡¨Cú…O™×#>œÕkÈ’ñ6¯%xÍgÚ;Fæ"ÃÌFàç˜ghóÊž†±1ÊSºž†«êêÉ:OË">pzƒþ34W),Y#OoÆ’\Çq±Œ2°5·er.áßÀqÃ/¡®²Úu¹eSÔr=룂Už! î9úÔõ-IEQE´QIEQEQKE”QERÑEQEQEQEgèŒí§ª¸ÆÂTÜU-Ùôô0T•úÕ}9ËÙ©#qõ«ç¦J»V+:þÜ:²ÊARx³58JáÔãš¡}Ú¯JÄ…Åœ‚Øå[vUÈâ¨ÙÉåm¦c€ðGÝ?ýz§e$L~Í#ma’¬zžkN6h™Áq"íì}jâYKm>ôo1aªÚÛ¼ä6õ#µZ·šP›§Qãå늊í¥ó̒DZHœ`RNîd.é´czT¥VH•r¼ƒŠ%„Ka ‘¡!IÎ(’0ö±²©*8¬ù"ÚÌŒ¥qÏ#™,,’mtd=¬é"*ä2‘Ž€ŠdQí`²qþ|±¸ÏJ!mÆzV~­nb˜º’ßÞÅCr¥dÊç>ÕZéJIN{b£³HT3È®Àr;Ö¥Œ©=°’Wo”òzѳhå·I‰#±ÏZè´ãæ(l• Ehi…œÁ 5~Äî\€@©^Eö{Ög9óY™Mcj¶ÒA|Ï& ‘‹©“ÃtKurHüêÜÞ]É Ày‡÷…:F[”¨ãþõJåg_ºB1õ¦i¶òÁ,’«$Šã wsZ:LWPd’FÇæçUÍ:)¡ xdo~•¨ƒœV¶{ã´QEQE´QEQE”QKEQEQEQEQERÖV€çÈ–þ•úVO†¦-i, ÿ,Ÿ¡¬íV’Ñ‘¾ò1ÏÒµ+Z´*+ˆ’HÎä-ôíPÝF qŽÝª;„WŒ†RßNÕÆê’0™àÆBž 9®OR9Š®â¾ç8®cQuI €Çž¦´|=©Ä ZÌbÇkŸ~qZú¨³F¶·¯ÝcüBµ4-F9b[YŽ&^Ÿâ¯Eª‰õEµ‚ß|y;ŸÐzý+@],—_gXKâ~Õun’[¯!agK•°ÎåÀÏ¥[Ta@Àb­p°ªºŒ[rÌrS’qÚ¨jÖ¾l&Lä¯|vªzŒd{ú•þU‘,»ž8ÜÀ#±ëX%}˜÷¬–`dÙéÈ¥ºš&F{ QtQ›äÇ#šmÖÆo“©Ôú=‚yNdÎIçéÿ×­Ä4R‰ä©ý*þ•f<–‚sZéGÄWÐVÒF‘ TP«è+QQQv¨ÚëUá£#þYœàÕkë!tõ(8«Ýڭƺô®zòõàžHߨXª-§ ŒAÓ×tD2lèÀJ½iˆ4¸%cq<ŸNÿʵT‹k%ŒŸ›ïVš~æÒ&Vá‡&®i啼ÖáÁèµnÙÙæ-¸”ÅOnÌ]ŽòÃÒ´ªÕX¤¢Š(¢Š(¢Š)h¢Š(¢Š)(¢–Š(¢Š(¢’Š)h¢¿ÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ)h¢’“ð¢ŠZZ(¢Š(¢Š)h¤¤¢–Š))h¢’Š)h¢’Š)h¢Š(¤¢–Š(¢Š(¢’Š)ih¢’Š(¢’–ŠZ(¤¤¢ŠZ(¤¢Š(¥¢Š)h¤¤¤¥¥¥¢’ŠJ(¢Š)h¢Š(¤¥¢–’Š(¢’Š)h¢Š(¢Š(¢Š(¢ŠZ(¤¢’Š)h¤¢––Š(¤¤¢Š(¥¥¢ŠJ)(¢Š(¥¢ŠJ(¥¢ŠJZ(¤¢ŠZ(¤¢ŠZ)h¢’’Š(¢ŠZ(¤¢––ŠJJ)ih¢’Š)h¢Š))(¥¢Š(¢’–Š(¢Š(¥¢Š)(¤¥¢ŠJ(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢Š))h¥¤¢Š(¢––ŠJJJ(iiih¢’Š)h¤¤¢ŠZ(¢ŠZ(¤¢ŠZJ)(¢––ŠJJ)h¢’Š(¢Š)h¥¤¢ŠZ))(¢Š(¢¢yÑ çQ4ê)†P äŽ*QÈc½<3Ò–ŠZ(¤¢ŠZ(¤¢ŠZ)i(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¤¥¢–Š))(¥¥¢Š(¢Š(¤¢’–ŠZJ)(¢Š(¢Š;zQ2IÀõ£ rz ̼»,nUç>¦³g»3)eÊF9ç«ðªRÜ4Šqò éïPÛ]ÿ¤¥´‰ `‚§ ~})¶÷$\G E·ñ!ÈQIäαOñ!ÈQZÁ”–Uê§­?lUÐy#Òœ=éyÇ4£Þ–ŠZ(¤¢ŠZ(¤¢Š(¥¥¢’’Š)h¢Š(¢Š)(¢Š)h¢Š(¢Š(¢ŠJ(¥¥¢’Š)i(¢Š)(¢Š(¢ŠieRaŸzkHˆáKOAHΪp[šeÒ³[¸9 :ã½E|²5›¤9$œuÇzŽíYíÝS$“Î=*„0Ì·+)¸3m ·U=èá¼×™Ç _º*­ºÈ¸;ÈÝ6‘Ò­Ãl±Hò*„26çÇ$š»mnbg“j¡vÜʽMZ‚/-™°«¹·´ë[dµWXÉ!ܹ$÷5,Q”¨$óœš|Q¬IµsÉÍMO§RÑEQEQKE%%´´QEQERÑE%%&(¥¥¢ŠJ(¥¢šû¶6Ü÷¦¶í§i8ãƒëIb™lgÔP¹ÇÌsJ¹Ç<Ó©h¥¢Š)ih¢’ŠJ(¥¢ŠJ(¢Š¡uk;Ü™#l©íYw–WxÒÆÙSƒT¦µ•® Šrjº™»¸`9­4 s÷€æ®¯Ý\õšvM.M””QE´´RRQEQKEQERÒQIKEQKE”QE%´´RRQERÒÑIIIGz)iih¤¢Š)(¢Š(¥¢ŠJ(¢Š(¤¢ŠZ(¢Š(¢Š)ih¢Š(¢Š)(¤¢Š(¢–Š(¥¢’’Š(¢–Š(¢ŠJ(¥¥¢ŠJ(¢ŠJ(¢Š(¢ŠZ(¢Š(¢Š(¢’Š(¢Š(¢ŠZ)i(¤¢Š(¢ŠZ(¤¢–Š(¢ŠJ(¢–Š)(¥¢ŠJZ)i(¢Š)(¢––ŠJJ)h¢ŠZ(¤¢Š(¤¢ŠZ(¢Š(¥¢’’Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢–Š(¢Š)h¢’Š(¢’Š)h¢’Š)h¢’–Š)(¥¥¢’’ŠZZ(¤¢ŠZ))(¢Š(¢Š(¢Š)(¢–––Š)(¢Š)(¢–Š)(¢Š(¢–ŠZJ(¥¢ŠJ(¢ŠJ(¥¥¢’’ŠZZ(¤¢ŠZ(¤¢Š(¤¢Š(¢––Š)(¢Š)(¢–Š)(¢–Š(¢ŠJ(¢Š(¢ŠZ(¤¢Š)h¢’Š(¢––Š)(¢Š(¥¢’Š(¤¢––ŠJJ)h¢’Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢–Š(¤¢Š(¢Š)(¢–Š(¢ŠJ(¢Š(¢ŠZ(¤¥¢ŠJ)h¢’–Š)(¢–Š(¢ŠJ)h¢’Š)h¢’–Š)(¢Š)h¢’Š(¢ŠZ(¤¢ŠZZ(¤¢ŠZ))(¢Š(¥¢ŠJ)h¢Š(¤¢ŠZ(¤¢Š(¢––Š)(¢Š(¢ŠJ(¢Š(¢Š(¢Š(¥¢Š(¢’Š(¢Š(¢Š(¢–ŠZJ(¢Š)h¢’Š(¢ŠZ))(¢Š(¢Š(¢–Š)(¢–Š))h¢Š)h¢’’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢’Š)h¢Š(¢Š(¢Š)h¤¤¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¥¢–’“¥%´QE-RQEQKE”´RÒQIEQE-RQE´RÒQERQE-QERÑIIEQKE”QE-RQKE”QKE”QKKE%%´´QIE%QEQEQEQEQE-RRÑKIEQEQERÑE%QEQEQEQEQERQE-QE”QERÒÑIIEQE-RQEQKE-%RÑE%”´QIEQKEQE%-´”RQE-RRÑKIE´RRQEQE´QIKE”RÑEQIE´QIKE”QKE”QE´QIEQEQKE”QEQEQE-QKE%%QE--””QERÑE%%RÑKE”QE´´RQEQE%QEQEQKE”QEQE-RRÑERÒQIE´QEQEQE´QIEQIE´QIEQERQE--RRÑERÒQIEQEQKE”QEQERÑE%QE-RQE--””QE´´RRQEQEQEQE”QKKKE%%RÑE”RRÒÑE%QEQEQEQE´QIEQEQE-´”RQE-RQEQERÑE%-RQEQKE-%”QEQE%--””´RÑE%QE--””RÑE%QKE-%”QEQKE”RÒÑIIE-RQE-QE”´QIE-QE”QKEQEQIKE-%”QKKE”RQE--””QEQEQEQKE-%”QE-RQE-RQERÑE%QE´QIKE-%”QEQEQEQKE”QERÑE%RÒÑIIEQEQEQE-RQEQEQEQE´QIEQE-´”RQEQEQEQEQE-QE”QEQE-RQEQEQEQERQE-QERÑE%RÑE%RÒÑIIE-RQE-RQEQKE%%´QEQKKE”QKE%RÒQIE´QIEQEQEQEQE-RQEQEQEQEQERÒÑIIE-RQEQEQEQEQERÑEQERQE´QEQE”QEQE-RQE-RQIE´QE-RQEQEQE´QIEQEQE”QKEQE%---%RÒQIE´QERQEWÿÙÿØÿÀððÿÚ ?èë£®ŠŠJZ)i(¤¢Š)h¥¤¢Š)V•iËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢––Š(¢’’ŠZ(¤¢Š(¥Zr÷§-:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠ(¢’Š(¢Š(¢Š(¢ŠU§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¥¢ŠJ(¢–Š)(¥¢Š)iW½*÷¥^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TtÊ(¤¢Š(¢–Š)(¥¢Š)iV•iW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠJ(¥¢Š(¢’Š)h¢’ŠU§-9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔu¯$nr>„Ô…A`Ǩ¤* )=EIÞN¢’Š(¤¢Š(¥¢•iW½9iÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨é”RÑEQIIEQKEQJ´«N^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S)”QIEQERQE-RQJ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦Tu´QEQEQE%RÑJ´«N^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S)”QIE%QE´QERQJ´å§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)•QE%RÑE%RÑER­*Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GE-RQE-QERÑIIJ½éËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:)h¢’Š)h¢Š)ëIE-R­9iËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊeGE´QIE%-RQERÑJ´«N^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TuQE--%%%--RQE-«J´å§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢Š)h¢’Š)h¢Š(¢ŠU¥Zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑERRÑKIE´QIE´«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2™E”QKE”QKE”QE*Ò¯zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¥¢Š(¢Š(¢Š(¢Š)iV•{Ò­:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GE´RÑE”QKE%RÒR­*Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GEQKKE%%RÑEQIJ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S)”RRQE-´QE%”QKE*Ò­9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÓ(¥¢Š)(¤¥¢–’Š)h¤¤¥ZrÓ—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•2Š(¢ŠJ(¥¢ŠJ)h¢’ŠU§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¥¥¢ŠJ(¥¢’’Š(¢–ŠU¥^ôå§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢Š)h¢Š(¢Š))h¥¤¥ZU§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ)h¢’Š)h¥¤¢Š(¢ŠU¥Zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¦QE%´QERQEQE-*Ó–•iÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦TtRQE-QE”´QIE´«N^ô«ÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¤¢’–Š)(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠNôQKEQEQERQEQKEQE%RÑEQIGz)h¢’Š(¢ŠZ(¤¢ŠZ)h¢’’Š(¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢’ŽôRÑEQEQEQEQERQE-RQE-QE”QKEQEQEQEQEQEQEQEQERQKKE%QER ­–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¤ ÑKEQEQEQEQEQEQEQE%RÑEQEQEQEQEQEQEQIE--”QKE”QEQE-RQIE´QEQEQEQEQEQEQEQEQEQEQEQE%RÑEQEQEQEQEQEQEQERQE-QE”QKEQEQIE´QEQEQEQEQEQEQEQEQEQEQEQEQIEQE-QEQE%RÑE%RÑEQEQEQE%RÑE%RÑE%RÑEQEQEQEQEQE”QERÑEQEQEQEQEQEQERÑE%QEQEQEQEQEQEQEQEQEQEQE”QKEQEQEQEQEQERQE-w¢Š(¢Š(¢Ž(£Š(¥¢ŠJJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢Œã4œgµÏáKEQEQEQEQEQEQEQEQIE´QERQE-QEQEQEQEQEQEQEQKE”QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE”QKE”QKEQEQEQEQEQERQE-QEQEQERQE-QEQEQEQEQEQEQEQEQIE´QEQEQE%RÑEQEQEQEQEQEQEQEQEQE%RÑEQEQE”QKEQEQEQEQE%RÑEQEQEQEQEQEQEQEQE”QKEQE%RÑEQEQEQEQEQE”QKEQE%RÑEQEQEQKE”QEQEQEQEQIE´QERQE-RQE-QEQEQEQEQKE””QKE”QKEQEQEQEQE´QIEQEQEQEQEQEQEQEQEQEQERQE-QEQEQEQEQEQEQEQEQERQE-QEQEQEQEQEQEQEQEQEQEQEQERQE-QEQEQEQEQEQEQEQEQEQEQEQIEQEQERÑEQEQEQEQEQEQEQEQEQE%RÑE%QE´QEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQE%RÑEQEQE”QERÑE%RÑEQEQEQEQEQEQEQEQEQEQERQE-QEQEQEQEQEQIEQE-RQE-QEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQE%RÑEQIE´QEQEQEQEQEQE%RÑEQEQEQEQEQEQEQEQEQEQERQE-QE”QKEQEQEQE”QKEQEQEQEQEQEQEQEQEQEQEQEQE”QKEQEQEQE(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¢Š(¢ŠZ(¢Š(¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š)Œ¤”ôóïÅ4‚JüÄm?÷ׄ® §Ó©i(¢Š(¥¢Š(¢Š(¤¢ŠZ(¤£¿\ûQÎyRß÷ÕH£ <Æ­Æ¥QTœ°ë“š 9=ù¥§RÑE”QERÑE%RÑEQIE´QIE´QEQEQEQIE--”QEQEQE”QKEQE%QEuëF3Á£ŽôŠ øô¦ª' vú‚(Î=Ju:–Š(¢Š)(¢–Š)(¢Š(¥¢Š(¢Š(¢Š(¢ŠJ QE-RQE-QEQE%RÑEQEQEQEQEQE”QEQE´QIEQE-QEQE%QE´QERQE-QEQEQEQEQEQIE´QEQEÿÙÿØÿÀððÿÚ ?è«¢®Š–Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š)(¢Š(¥¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢Š(¥¢Š(¢Š(¢Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢Š(¢Š)h¢Š(¢Š)(¢–Š(¢Š(¢Š(¤¢Š(¢Š(¥¢ŠJ(¥¢Š(¢Š(¢Š)(¢Š(¢Š)h¢Š(¤¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(£µQEQEQEQE´QIEQEQE%RÑE%QEQEQKEQEQIE´QERQE-RQE-RQE-QEQEQIE´QIE´QERQE-QEQE%RÑEQEQE”QKEQEQIE´QIE´QEQEQEQEQE”QKEQEQEQEQE%RÑEQIE´QEQE”QKE”QJzQE'z;ÑERÑEQERQE-RQE-QEQEQEQEQEQIE´QEQE”QKEQEQERQE-QEQE%QEQE-RQEQKE”QKEQE%RÑEQEQEQEQEQEQE%RÑE%RÑEQEQEQEQIE´QIE´RÑE%%QE´QEQEQE%RÑEQIE´QIEQEQKE”QEbŠ(¥¢Š(¢’Š)h¢Š(¤¢Š(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢“ьюh¢Š(¢Š(¥¢Š(¢’Š)h¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¢Š)(¢–Š(¢Š(¢’Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š)(¢–Š(¢ŠJ(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢Š(¤¢Š(¢–Š)(¢–Š)(¢Š(¥¢Š(¢Š(¤¢ŠZ(¢Š(¢ŠJ(¢Š)h¢Š(¢Š)(¢–Š(¢ŠJ(¢Š)h¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢’Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢ŠZ(¢Š(¢ŠJ(¢Š)h¢Š(¢Š)(¢–Š)(¢Š(¥¢Š(¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¤¢Š(¢–Š(¢ŠJ(¢Š(¢Š(ïE-QE”QKEQEQIE´QIEQEQKE”QKEQEQERQE-RQEQEQEQEQEQE´QIE´QEQE”QKEQEQIE´QERQE-QEQGz(¢Š(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢’Š)h¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š(¢Š(¢’Š(¢Š(¢Š(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢’Š(¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š)h¢Š(¢Š(¢ŠJ(¥¢ŠNŸ(•™.ø­ ¬]±ŒrM2ßæû(Æ=¾™5ˆ-{j´äøÓ,þkèF~•$’+]Û'pÍO<ª÷ìÜ`¼R³«\»Ž${ÑŬÃûÒp?*~žvéSŽï7Ê=zRÙ’šaÇ,dÈý(´‹ÍÝ3õs“þ&mö§7s¸îo|T–P O!Ï?>êãj² ãŽÂ›©jó"€ÆÒGjmõç‘ Esúµ·ïahÆUãÀ>àâ¹ûØHh™y¼{ãŠÄ¼„ý¢"£!׊ܵ X[ª¦Ü{Ö¶šV9Ú—.}óZ–RF‰ÆY@P>•aeÃää§=«InöLHS³ƒÚ¯}£c³m;ç5=hÕªJ;ÑERÑE%QE´QIE´QIEQEQEQEQEQEQEQEQHÇ O ¦ÌUbrßt l¬¢7' ªW(arJ„pTuÏ5‰w†ŽÝÛ*A×'½g\á„.xÚFÕõ¨.æ6r v3.C`{õþf¨M3YÞ¬ª ×­R’o²^ qÃÛ=k2m]~ØÌí¾bO8¨&Ô»wHʇlÔ ¨!»p«…fç5»kŸž²?/þµlé2¿8w(úñý+WMÁ$ýΔŽÁdrŸtŒzÓ.¥ýû¼dùA³Àîi'p$fSˆ÷cŠlI’às¼…ôÇ5¼^s˜×Ÿ4…úcšd1ù¤¢õnçÒ«Ü"¬‚7›*~¸5VùD7"Û;–•?P Uº";¡ù„' üê{…“4dîÀo§Jšÿ÷³µÜGk`6GlRÝ©iÚæ‚cSÆÆâÞM§‚­îqZ6Ì/tÉ•IY •aêqWa+u`áN×*sîqVkV¯RQE-QEQE%úÑÞŠ(¢Š(¢Š(¢Š(¥¢Š(¢’Š)h¢Š(¤¢Š(¢–Š)(¢£¸RÐ0N*¶ 3g"ýåÍCv3lùÇóª2ÚN ‘Èô®zi8Ú~r=JÇš\y+éQÝ+Ko È~fVɹ¨î•Ú;rç—Œ±9éóeÜdùÏÞN}ªœ<>n|Æ›ôÆ 54èüч2 dÔqéщͼuÍlF`fÛÁlíÚ¶íaY´¤}öÇÐv­ˆ#ò­óýæÁö¨¦“,Ê2ã8¬ûÙ·»Æ„ˆÎ ©]M½Ê/ÜÎHÍX¶S€Í‘¹Wÿ+OK•„²pÌ¡€=…_±„©Þç–P@ö¨X´‡Ûó8úcšÉr¦üÊÜåÉüg¦ôÈÜüÇò¦‡Ž1±Ø }pM"6g)ü28úšHÎùvtWaS¶L6¹Vb?àBµ-íM´˜g`yþ!Zðy.í¤·æ*ÕjÕÚJ(¢Š)h¢’Š(¢ŠZ(¢Š)(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¨&|2FØPç>³uIÈQùC’A>êì¥PFÜnçê*Pè]€çŒzV1Ä€³ÉÆ=+7hs¸ã“D¤’h祑NÞ¸$Š]ÆFÀü)@gûËŸz–Ñf ÉÞ€ßÜþU%ºüÇõ<ÁRÝW9Éϯßí‚Â8”’XäÏ­Y¼"+d@rIÏ ·C$À1f tª¶0y·q;SœU‰eÀPI銽¨^mr‘d¶ ýjÕåÎ HÃŒ=*£›‰ÿXWa¹[»0ä€z}k%˜)#ø\tQþ54‡ufûŠÜgÖ´4»S$Ë3’#ŒåO©íW4ërÒ,¯ò…ûµ-ôqåHÞÄc^J¿ªH`‰B0ó‚ _NõröO.5ÁÙ†·z±Z5n’Š(¢Š(¢–Š)(¢Š(¥¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š)h¢Œãž”ŽêˆY˜*Žæºªîb÷¬÷‘næq’1òûšç®îÒþíñŸ*0BSëYÜ­äïŽQA õ¨””ŽU¸Áõª(YcOJ©dpLÕ·)’Áø *Öo)ó*I´žÃV›—WêÅ~‡­_ûæ´´óÿ‹UÈÈ\óõ«ë0m6Î% ²&N}sÀ­0µ¥¼jC2¨Éïš¹XA9Fì*Õ´‹gc™_©ªxYm‘€åÛ¯µF_ Ny銥,ŒÒ±ä–ãª;ã’xÅ+,q ’|!=u4²ÛÇkÉrv»r#^OãK4ÚÆc‡<„h°g•åÊæßªgÖ¯hM$Ë xÿqœ¦jÞ’òKoB—5-È ÁØe@éK«â+••Àdð)oÊÅ7˜ãríbµêýQKEQEQERQEQEQE´QIEQEQKE”QEQEQECxÄv?£«ÆÍhì¿Â:~5[QBÖÌGlqT‚ù2Œî_›œZçÕLRüÀ¨Èæ±ÔySÀ¨8©ÈŸcþ³*qïOgýù ?Œ? qßÀ )ÖÊ®,­”ÝÀñW´È¢hd¹¹lǼáOBjåŒi䛉Ï˸ࡪé±Or'±îL°ÇñU]fÒÞK±,n©½2޹þ•WT³…îÂpù€êÝ´"Š.”sÎ ~´ûXÂÈ‘†”rßÞô©-—lŠ™”r}é÷4aTç¦î)oæx˸Çõ¢öF@ä©©l¡DÎ9#å•F³TŒ]H>f(ôwO·ò£ó¤3 ýÑQÛ@—l÷®íÍ…SÓ Ó¬ÒþIo®Á`\íñŠ‚ÊÙnK]܂ۘ•¦*yncˆŒaÀ «Wš­½ªyvê®Ã£…ZžçPŠÝBÄ¡˜qÚ«É+ÈØr>‹X×Ws]¾elú8™qs%ÃeÈ zv«ÕÕVý-RQEQERÑEQIE´QIEQEQEQEQEQKE”QKE×8F'ÐÔw$ iIè™><™3Ó­P˜+É v=+šº¶àœçX—66“Šo”†pTž}M1ZVS"©UïM¬ï¹€ TÖäIl›;  ¿h^k$òÓ+Aôzò[‹¸&GµG& „ÕfËÅ·nߘšÙÒ¤XlJ2±>üV¥Y•Û š‚Ý·¹|áž#ƒùVe£ï–VÎã;O¿ŸlÛÞ^ydàÕTBÓù €AûÝÔVÑ&EŒçíÇ4ÛtidòÓ®zûÕTÄwÄH|à¸'ÐõúT)ˆuów|’àŸåPE¶=E7çåqÆ}ë£?ÞíÖºédÙ È ¥‡å]²7tUÍf]·*…û½ ®JåÌ÷ÇBz×9;®A5;Æ œtÁãñ§É=*Y"œTLÍåžy¯ô¤V89?0 æ›9ùëZ5Ö×CIE´QIEQE-RQE-RQE袊(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠI[jéÅEw'“lïøS.ˉLñU_€üðÈ@úâ°¥`rO.„βä`"˜“‚ËŒÔP3yRªãw7Ôb¢¶•¬‘¢~ñœcèF*8$fµh•rÅþõXŒyiÄ'Þ®œÛÄ"Üv(ÉúÕ¢LIå–ùTsõ¨_÷j®¼}î ÏÝ2Èœgw#éTؘ™J÷¡²É¾iHçÖ¬hÿñþd °ùGZŸL'í,ç$Y¾%[Ý$ñ‚« äã½UñMoz&HIA#÷¬ý}­âÍ­ÎqÞ¶ ¹7:0™N\¦×½k=ɹðãH–(¾¹æµæ˜O£#9Ü€R@¥ÒAÞ 1ùšÌ²ƒÏ‚r‡÷ˆQõªùÖ³”?:mÀ§,ªñ9aÌxýx4‚E{gÜpñ£óæêö¬ÌpÊqLÛæÄ[#páþ#Qu®0* »ãÜ|b´k¯®Ž’Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š( {ÑÛš)h¢Š(¢Š(¢ŠJ(¢Š)ONh¢¢¸Îú‘ëTu`|¨ÎxÜr*® ÄôÉÈõª7™±*£­`ÜÓ,x'Y3ƒ% cаȈªà·W9éZkl-` …]ÈÝ!È;jøˆ[DpHvÏJlÎJIÜYŸ5¦ûDmœ—Œ7æMC¨9Œ§9%AÖ|1“ í\¯¹5^6´¬FQr3Üžÿ…EGsü# >½ë6;õ[°÷Ýìðݦä-ëÿ×ëUm ’Ê+»WmÑ:å õãÖ«ÛDö¶óÛ9%HÊVlN.£çÍG¢8]@¡áeG×­3G`·xúÓd퇶â7Š‚ñwåIÚ¾jŠåÞ”'j·&‰.c…sð¼äðš.c„{ð{ð 0\lj c¹èMiW]]%RÑE%QE´QIE´QIEQE-QE”QEQEQEQEQGN½(¨%å²F¥d^Ò|’=z ¡prŹ$~•Ÿ9yO—Ý+~ V+¬—w;qÚ²ŠÉ4ÁQAb{Õéc*3ŽëVö5YR,r£vÞi\¨,x»*µÜ¬¬k’xSíÛõª7Ó<î¡@8ùW·j¥y#Ï"…LÿÅ,ê--˜ÊË“ŸNæ¬K²²4¯˜Ì¹øF2SS˵´!È.\}ZódÕ"xÕ˜4™ÇsÇò¬»8Äš”{Wp/Ðw¬ë(Ãê ÀnRÇ5¹dQofyA÷Iíê+oMòÒþ{qÊPžÞ¢µìv¥ÌÐõP~R•_tF>ÅkOO`.0 «ò$l‡ÌÀÆMei§l¨­Ø•Îsߊåô±êQ†< :ç=ø¬,„¿UnÌF•K|¸Ô7•d«üeuàpÈ9&µ[ÐßÂR›"‡ŒqÅg‘‘T±œJÔ®Öºª(¢Š(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢ŽµŽAÎpª3B¬Ààî/ÂŽâ«If±cÀªÏ¸D1C’xçÓéYnþTJ¼³œåG9ÍP‘„h¤sÇ­1K1iºð¹ª¥žF3;cÀɨ vo1˜în=)1ˆeù³ýÐ*{t[Ì'+ógéS@¢2L‡%ïþµSÕÃÍm$ÁNÉ0=±MÖ7Ϻ}¥RRlS5MÒ)—iØøâ²íç· xà‘»h^œwªÓ‹k¨î™7 çoµR·˜Zܭîà[}­m[:\o¹Aòdà¾õ±m"\K-ÌkˆÁ$׫‹;Ip«„äóéšžêí E»(a¸õ>•röݵ+%Xœ€Ë¼d÷«p›Û`¨ÄnÀ¬Í>9-‹Á)ýäg!sœŠæÕ$µ‘㓉ô¬W¶•‘Ï̆µ˜-ÜbDe#Þ·]WS°Y£åÑv0÷µ"®¡f$NX ~5Y2ª¤•‡ÐÖ1F@§kg²Z6M¤ýÖÎ+R»*é©(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¦H ÆÐwg­V½QLYn 㢹 ò”á³ÉôªÄF>CïÞ°®Ù˜ù­eK•sÆr8¢F¿«8´— $pe;6v :ã=*+²ßeG.ùÏáL¼ùmíå ¹¤]Ì)/ !e<²†5&¡*e4Àgj†Vަñ¶Ž²¯ÞUP«š›§öx0sæF½G q\ó9¹\ÈíX…ÈÂþUbY_OEµØAeŽõbI$²g ‚ÀqëS¼kþ‚ Ç¿j¦8£ÜO œWIbh›!sŠÝ¶RŠ»‰8^•VñPÝ\·bƧð¬ÍbÝâîE jé¤ UƒýÒ9¤§QKEQE%RÑE%QEQE-R´w£½-RQE-QE”QEQEQE-S]£…K15 Ó[Ú)iX{w5’Ån¥œâ™ÂNG’¹T6÷Ñ^C …_1óƒLŠæ;˜œÄ‘Þ¡•˜‚™ï×Ò³&‘””wuôª2;r€t9¦¡Û4LÇ-’2jª¶ÙÕ›– Œš®÷ÙêH#š©]niíÞ™nJ¥Èà‚:w¦ÛäC08Æz Ê:ÚZ¨l»“ß5U®ÌûmÔ¶À~POz¦o|ò BNÓòæ­hö³Ç|%™v…ÎYÑáxï„’Œ`œ ·¤DñÝyŽ1Z·P­Í´ñ;ó <ñ[7·V—Q»üÒà€§ž+Jâ5¹´š2ܾf[i)&‘ËʯzÁ ovù±;óÅc‹†2ÌIl` ¶´‰ÄŠ¿†M-²»‰÷Çåšu¢—¾‰OðµiÊ|Äœ{éu6X¡Y'g«võ„i»$dô­:®Tô´QEQE”QKE”QEQE´QIE´QERQE-RQEQEh¨®\Åo#¯ ëUõš äC† Á÷' ì†I~ð\­S1±¥$’9Ükša,„4¬Xž¹5ˆë,˜21$ÕËXÖUêßZè4¸£¶²‰8n;ÿŸå[Vq¤6è‹ÀÆMWÜ«31¯Ê d¼¢§ã ü¹éYÆ_&fr9àTs;äŸr¶T„±<Ô6Ù&ÜUõ¨ •ŽY2r^µ¢Í5ÍÄÉ#3´‰€O8'­VÒ Ï4‘KH¸ö=ê¾Ï;Í“–7¥>ËEhîiáËdzÔ–ºC–šmêc„OÒ–×IeygÜ6Ç“õ­u KŽd OçúUåŽ;e^s#($ÿ?Ò´B%¾ÕÎX€sR¼`¯˜§íÚ¯KXÄèÙüÜcŠ´ñíQ"œŒóQd¹eîÝ e\±’I÷±Yó6öqêiy¿²`)–‹þœ„qQÙ/ú`CŠžvfsò…jî­rÓ\•q×5gP™¥”€>UàUªÞ­j(¢Š(¢Š(¢ŠJ(¢Š(¢Š(íEQEQE´QIEQE-RQEQÒ¡¼Ï•õqYúÉ"À(êÒ(?Ϊj„‹@£»ùT!YÛåÀ'¹æ²a†Y¤ 9#åÍQŠ)%p£ šž@þFÀük^åYtݨHÀ G¦:š¿>ád6œp?S?¾‹æÈóXo™cù¸ œ1¬§ýäY|€:H?±™%9œqR E±@ýã’IëÇôæ¥P¢Î0?‹¿ÓЧ¦ÙˆCH’ÄìÀê;Õ{;+, ‰ J¯gn!BÀŸœœ}+PF[T®p~˜äÖªCû(‚SÎOlrkHEû¯/$+œ·Ò£÷E$ƒ*¾Ø¨`;íÞQ÷w_QŠŽ¾ÜÉA8žkáW~ÔŒdž´©YöÄ09É=h706Ô÷îhd &òs•*µÜEef-œÈª×QìrwdúÑlýÄàn'?Ò¤Ó ÑߦIúâ¤Ó×¹jIÙ—“÷˜ð¾Õã0–á˜ôö¨î‹oÁêO"®WQ[´QEQIEQEQERÑEQERQE-RQEQEQE´QIEÙJ…O®ECw¸¶hÏ|0ü*;ˆÄ°•=ŽáøT’÷<’01Á¬­=ÌšÌÄ cŽ•FÉŒ—m’GÅK/Ü zÓ5~ù•#òøŒô&­\°T*0023ëYÄI+báþaè03\û™‰°Ã=diÖãw9àúUˆc´)AÀôþ¿åVí£yp¸'bÐgüsV`ŒÈ8ؘÀôÿõæ™Ì!æLü„wþí"²##ç-~Vý?":#«äLü¦›-쌥LK–r­GsªKp¥Z% À¨ ö5÷ïp¥6ì»xô4èÉc‘ƒÙ+éV-¢ZŸv,KJ±oÇolÁñJ‘„aLR r¸güiî"òšp¥yŠyÙ°Äø¿w‰1 9$ÿJ‚x‚À²g,äþ•Ì[`SÜóL³ÉxTôÞçôÿëÓ´™ Vû©¹ÓµI§ Èÿ…X·çNó<Éd—Å$’y9?Ê©†I#_,ç`äÿz ]T¯ESÐÜ4 ž§¸<ñV ˜ØÝ´¥wG·äu©á”ÚNìãä-:I/š‰ò¨ä‘ÔÒÝIÓ5ÄQ€u#ï.;´¨Ÿ.8$w¨®TG I4¡=xåj´öá#/,¸=N"«MÆžd’GÞ"²_QyåH-ò±–1ûÄUO·<’$qd.áów5]oZI•#ÎÜŽOzÙß àd¸óøÖŒ²¹uÜ–üjô²êN:öëRï- eygÉ©.KIº¨Ée8Ç¿5%ÆYc^¤¯éQ 6F»Ca ô\Ubû]£‡&?ìÕvr£Nõ4ª«À`3PÚøóP* ûzóW«®®ŠŠ(¢Š)h¢’Š)h¢’Š(¢Š:Ðh¥¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š)®»£tþð"™,~t2EœoR¹úŠl±ù±yˆ]‘ˆ9ëÛó"mð‘Ç#­-Õæð#‹NBç©ÿë ™ä’Uòã ±“ÿê©]ÞQ±@F=ÿýU`~IQÀ÷¬óƒ+wÀ÷ª$1ˆ<½8¶w»ô1ý©ä»tpô¨v¶óÕHÅ^®¶·é(¢–Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¢ŠZ¬rëÎÞ«ô¬`­ªHŒp„o_LÏ[EûsƒÂ¸}(‘‘œá¸QÎ:µ2F†I°û¸òß⦻£Ëòžª÷q£\Aæ)u`Ò{æ¡¿Ž$»¶ó˜: ®{çŸÒ™v‘%Ü;Ô²²‚GãRO2•QR€óŽ1ŒñEõÚ´q¤$yxËcƒM%åÀ(‰q“íKî,òßyÎïÎ’Bm4Å‹<§ÌoǧéI16Ö ñ1ÜÕ]ws·~zT Vy¾é|õ­T]¥ùWq=ªXĈäH¤€sW˜ŒÑJf€sϽ[ù•š&žÙ©BŒ©È À§H v~N9ñ!r£ùÔh ›Ëä!Àú3QÁyv€Dg‰4ØT™p>æüqO û¶ wãŽâ”Í‹&+´!÷=é_ô,ð2ÇëKÚ71µV3³æ'¦j²¹cQ3~è»p#Þ˜Ç*XôÍ4·9÷È­ ì+£¢Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢ »“b…^d`BûVn±säì‰ïHúTõÊ2Ƈ÷Œ1øSma@=@ùF}išUšiÈÎÐ=M7O·M…Bvô¨.äÍæ6 ä㯷ëTõIUõ ‚‘Ÿóš« k×PI !Ô*ôvÉ5­·™°c‡9ϵ2Ú„î ÍK6]Éb–2ëS^nšFf ÆÐ\Sî³+33”` !¡„ÈÄ3; îãŽØ«6v¦ÖÐLÀÃq…튱omökpÄåÜäæ I·ÈsôVx”Ëv0å±T’_6ìݰj{¿—qL^Þ£½YÕQRFòþM½½EO¨.Çbœm=*vaóð{ò Ea)ƒü§ ”Ë90HðFæ í ÿëÕÛÒ³ùƒ¤?t/ðÕ«œLq¹B;TAÑ$Ky#?Ê UPª²¬Bîù@j´H"bl`µ+cÌ# ^8ïQΑ½ü³téQ³0l•U˜†Æ8ªŒX”G/ϸt8?‘©¬§h¥ ¾Íù±c1IF=sZ•×WCEQEQE%QEQEQEQEQE-RQEQEQEPxT7 w¬íJ|¯,jä›±âj8Ñ]¶s·ø±PYÀ'” Så¿ïQÛF%ŒŠF~´û­ÎV5ásó›Tv—l(0™ùr§µ>ùŒc^rOÒ  Ϙû–³ÕZEFªão¾ U [d‹ü có¦W|ÑÆÛ•ùÛ×iÆiÂUýô¶øä y*ÝéÁ×B‡rWýŸZž‰3™#ÜTÖiþ–vÆ ™õãÖ¤·¾Î?Õ¡oΛ+‘¹C|Ûr=ª9¤,]IÉ*OÒ™#nÞ¥°O9öª² -çI-¡,6˜”ýk6a%µêÉl ‘ÓÞ¨Iç[Þƒ+ÆH©Ú€¬ ? ßiïZonÖÑn.%_ö[½hLà8*ü/·­aÝ!›]’¥TcÚ±îU¤ÕÂG‚ÊÁF;â²e úÇÈs´ö­ã»'£0ÅjKmÄX`cùÖ”ªX0Ozr®p¬=N8¨VÜ·U8î@¨ÖßwQùS0«;àµ/ÙJÁz£ìå°ù>ýªõtÕ·KEQE%QEQEQEQEQEQKEQE%QE§¥TrȨ½pÍ÷j½íÊÁ ù°ÏÂû{ÔW3,Qã8gáÆ«røEÝßëXÇÍ–\F¤‘úšÎÄ’KˆÁÿëÔè¾L\cïZ‹ØÙ8 ›Af=Í^Ø-­HRÀɵQ™Ú`HÞÇ𬩤f€õù”‚Ìy5Ÿ3³BsŸ™q“Þª^LÞZ®â§àð*µÃ±‰FNHÇ*†mƒ“’)º|L2ä™´–Q°rÄT÷ëIgRNJþu¥Ë,‡«„ǧ5¥hÁ Ç?¼1à`ôÉ«Öç ?÷Ù@Í5â »… ri‚ßz>J«*õ4Óts¬;ÕrÒE´¾Ux sÇ^µEãš<ÀT9íZ¨ÑÉ ã ž¿Ö¤VdV;ãa½Yy…Iæ:4jçtMó+œúS÷²2£üÈGÊ©k‹xÖò,‰”€XuäTZŒF–æ<‡È‡Ò¡ÔPÁ¸†§iz¹¶}ÈŵXãÏsùS¬ïŒÖÍòtÀ8þ0GSO´¼óàc· ¤=}ëE[,¬Fr+F)p¦5 ¬GQW•ÎÂ^)Ìá8?+¸ïOt‘쟟‘×Ó¿­:EcnÙû‡žGz³ZÕzŠ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢Šim½‰úTrK°ãc:Óöÿ 5y7² +>2y ’!\p‹ž‚ªÊGÞÊA<( §Æ«$ç©©àX¬‡Ì¹Œ“RD©l:eˆëQ\;f:Tl¿¸ ¼”br*ÁÝf‘®vå·}jµÁÝlˆ Ÿ-Ž*ï.m=âáÝ?ïT—F)4Ã;XÆ ½O»òä±1“Ê?:«¤@¶öò€Áœ° ŽÜU+V8›æ²wUtøVYs¸çæ­°»\’»[¥k寫1b661š¿nQdÏCSÌàíØs‘œöÿõÕÛÙ± ‡Ü“ü5fäùˆ¢>wrH©êýY¥¢Š(¢’Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢–ƒÓÒŒzÔË»;:gJϽ»Þ Ä~\à±éš©q8`6—<šXÕ›æ-Ò¤µ‰ß÷¬ýËÆjH#fËsÛŠ•”d úô«LŠäáߦ*b¡ŽxÏ­Q½bå“®ÐkXv–f¨ŒšÌÔ‰•Ù…@¤ÚB…äU'\(UàF½*¬£ ÇJ©«y†n"ÜS«¯¯j]E_Ê‚d%£uËùJ[ðáb•2Q”½Z²*öðcFÞ1Z;fŽ Ü«®µ]µÖ.êËùSü‹™$#|þsTÿbÕ^É!'èj’Kö]H¸è©­ Wr‚£ÜWCs›”›ó­™£Þ£olš«"ã-÷Z².b9'£+>hÎI5€^y訸Æë€)ƒó“Åcê9MÝ ôª’Ÿ1“= ª7R°}¹äŽÍn'‚î80¤à‘ßl‘N±q¸ŒÔpy’A0Œãææ´t¤x¬7¹Üf}ʤýÕ­+5û>¾OšIßr©þZëäiª_%åmØ=…Z±cËÂI*À2Õv[³eXnLú÷©ti¾y!' a—5~·+R’Š)h¢’Š(¢Š(¢–Š)(¢Š(£š(¢Š(¢Š(¥¢Š©$Ûܨ8Œgvz·ÿZ²nï¼ùZ$$Bܼ¨Muç;"ªõêÇü)Á7@«jzÀeX!Àþô†ž"2£ÂòƬ:v´†ñÐqWØQJNxZ ÀÏ¥Q•²F[9Ø8Ͻs÷Rs’q»;1ÄšÉÉnOçh»@d^Ç©'€y 2ýÖàûRO1 Üb£†_$˜\f2x?Ý&¡´¹1“¹1“Á?ÃQÚÎF ~A<JÈ‹À äÿŸ¥\ܱJˆ¸Ë$‘ëØþ•h°ŽM«€6p}ê9F ?P냎íToãÒQÒEê=G¨ê…0ûŽ8>㊖Âc“lüìFõ^•¥¡^™c6’œ¼k•oQZEÙž/&CûÈúûŠ[…ã# “Å©åΊËÃøÑp6JªG&˜J¸;JúÕv1ïS zúÔDªÈ0ؾµ—¨XÌú‹‚¡·ˆ4Ûðò}ªÈPk]#Ta€ÇçWÕBœÒÓéi²}ÎZŠë"½Ø÷¦M˜õæ³çr$ùHÉ^r21Ò°eôŒáÎFGa ûT¨ÊÛ$;‰5&ÝÒ°#£ùš»n“2¶v‘Ûñ«P€îÁºRJ¡Q׌+n\þU¡ëB6áëÍG}îÙDnžÔëerË‘ÆE7HÌw«.xéÚ“J.|ÏQƒN»a$k·*T“’=ªî©(š8ÊåZ2NqV¯›ÌTeɪ»™î²â²^GrA…g4„±ÝÎ5bFù’E&zúÖ›áLr ;dŒøÕ÷Â0#£-B«‡P§9q·òª3öÕTä³ £ðª†2/v'$œ¨©'´›a‘¾\zi׳´r|­ÇçÍR—tådàÓ_=*³~õµWaæ¶OjҮºJJ(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¥¢Š(¢¢™ŽÍŠ~wéì*­üÅ"ò$œè;š‚íÈÊSó¿è*1ñg#¾j”v«!Â1Ž­šaòFqþÖjhãŒgs¬{Ö•½¼vèB|Ìz±þ*· K í^}IïN©iôQEE)á±Ïo¥S»~%îÃíPNß+úô¬+»¶ûa^‘F0湫‹†7-ýÅàÖ³Ÿ9U^*­üæÿÉPÅÂ.ã½E{3^y#q"`{TÒ5ãEóp=«GL¶–ßMòäÈo; ± /І7šx5f^H·pw毫‘Fü+NÕ×r2Ã#£nË•ÈàãùQ~¦4Þ2Iã>•6²ž\bPrXã"Ÿ¨-QÁÉ-ŒÓâš'Ÿ :üÀRXÝ[=ÞÔ·ŽŽô–wI0 ÈèEI1Vz®3ÅX»håYÎy€éúT³l‘dÿdTÀáXg'§µcü™À|¤üÞÙ¬áŠ` ¶jo—jƇ¦*ú*7zc¸«ŠCl‰øÛ÷}ÅR¿”ZA#ä+F~R¼k>þO³Jî§  Of5Bò_³»È‡Ÿ*ŸzƒM¾’úiT B ĵUn¤¼¥”|ÄN:ÿœUx®ZîS3®23ý+GfÝzqùÔëäNƒ§XÎ×¥ÿÙÿØÿÀððÿÚ ?Û‰³ó{ô«V×d&pñZp˹‹ç<Ôà §´ÉY‘¹ÈšºpèÜäb«´xÐçoSXó@±†–&݃òã­gKZD9ÃPI‡]ÜК͜ïÉ'½gσóT4nï(JŒ3£3!8éëQ£4lÅOËÐÒ»4ªP …Ï,;àfœY¤È.âI>´íÌã Æyoz{G†à©,cÈy­( ‘ÜGt«ËF¤àu­r—p>ú+{Õ›¿™è3Ö®kÇu¼xàg9©µrLIƒŽO5ZYb’3Ù‡5“mrém$wœUyßÈ0Öz²$´¬ˆ2ô©eóaÞ)" äwéŒÆï ÚëÞ±aÔ.hÖærT°~5EoçžXÅÔÌË»=…TŽöIž1püg¨­™7]’d¯ Ç­hÎL±Ä©.]NÕãz¿)2yA–qK( $a|§„<æ’ëãFQòÙ¤¸ ΪpHÈÚNy¨ÏîÈÞÄàp¤p*š2<ÂH8+÷ÎáÐdqH#-–@9ç‚l”Æ8¦ˆ[’„sÎ)Bóàp¿8ÞZ6v¯¿4õÜåUº?ÙBÉ”$:í`*alGš¥ 6°'‘•pPáþõGoo¼~\GïœóIºEHÎK7~ÔA ÇÆŸÄsVž?5NGNàâ­Mh.!,£ ½ÁÅO-°š=Ëò°ã4‘¬Ñ‰ˆ˜Í2ÜÜÁÿ-Ž=Í6/>>²õ¨e+í’G\b¡‘e¸˜™³ô§«Í#nzU»KTµ,w7RÄt­{ (ì ,Ä%ˆè+BÖÝ-a$òÀd±ôª,Ò^\³.qÑ}ïX’<ºÛHÀ‚³¤½¤è9Ú‡µˆÅ²{•MÝTÓþÅ’«=ÒÆÍœ¯ZsZÀb %©nÙ¨?³¬lŸ4ûÔrª;ûR.abDóÍæ®2 tj`±³°ÌÒ¸p£*z¬5A¨ËöcE rÌ õUµ/íì‰$䲎@õªßÚý¼– \’ËÚ§³šÛ ²–ƒ8v#’iðMo¹£„f÷›ø‰4ÃóGÌ9<úš&‘áP*ƒÀÍ$Ò&p«µsÀÍ$’paQÍr±F¬Ñ+3S&cŒ3F¬Z™4é‚È TÐJ³/˜‘vV< –7†t•ÃsÐT±¸uÜ«Ó×µh@çåúÒŸi)Y$uƒíN¶‡POÅXgppW*>÷®÷ABÑóq€?Æ´ZY9MÉüXãÙU6‡P}é—D` #)³B†0àzg”72máŽs޵Ÿ5°$Æ‚IÜGÞªRÛåJ*ã¸5FXãxÜŸCÇ[ 9lcв~áL届°ß22ub++x ¸E»l19VtsÞ³máŠ9Ñn[ƒü#ëT-¢Ž9‘fo›wº-ÐÇØé[ækkdP#øº¥l´ÂI•Aoó»HÌ ŒîcÎ*¥„MqpÒùK7\U{H̳4¥²£–oJƒOÔmogx1¹¾öæèßJ“J»´º‘íZ5rÜî=ûRé·v×EíÀ î{Ô÷År?Ê9 òE:ûK11x$ùG%O$Sî¬veã~1§¨¦Û¯›´ Fy¨líLÌ¡pAäS-­ÌŽ9{úÓ.ïm­÷Cçn”ñŽÂ¬^ÝÚÚ#À³¸#ÒŸuu Ñ 7ÊÝ}X·Xä·i6í|síSÙG¶-0\HGÍžÕ<kæcæ#šXœØÇËyp­ÓŠH¤àôâ¡óYŸ/Êž:Õ6¸y%ÛeBóÆj±är"\€9✌Àô©""±tÄõÅ>9‚YvŸ\TWÒÊÊ!W8#,¥G©]\²­ÉÏSÿÖ¨o§˜ã‚2O­Gc…PcFy¨í!v·}¡–>ÈÈÍ%¼lб¢tk2aæjBÕ%[çYÒ£I}ä& ê+=”É|!Q’ ç5~êÚÖ{hìüÐÓ’TäŠÒº·µ’Î+A0iÁËm9Å_º‚ÞkX턤psŠÍ½³K$ÛÉæ<ŸëÛÐVuí´v›cÌŒÃçoOjÏ»¶KXÄVìX¿ßoéVílÊ!+·úÐ _Ãÿ¯V"±’ÊyúÀ…Y†Í­#ÿµ4Æå÷•FÜ[·µ!FÝžÔ­j²œ´›Qz’2iM¸”’_j/RzÐÖâBI8EëS «Ž?õcïÙÏøT ŒF£÷}ÈîjEáB/ÝqëÚ®°Ýæãç lñúÒJzæ>0çiöÍ5޲Œa5>ÒÊJù#'Òµ'{u’9¤%”zZÑx˜Ä$`HÉÏJr¸,œŽÍŠ|3˜óà0=59&Ù˜åãÞ‘‘Jƒ0#Ð⢞41‰`vàsQʃd A¥FV9\cen›û­Vòâ¹”y‘¼s  Ù¨ EpáŠ:JO~†š­ ÎøÕðÄzÔ8>_Ì›€$pj2A” ŒŽ*H˜¡wUòŽ=òjÝ„ßfÍf¶$PÊAçÞ» k¸¦^~W* Zì,õ.–>[ ÞºË{¨eSÎÖÀÝš†ãee/‚:Æ*µœq¸y›H9T茮<ÌÐŽ1\¥ÜF+™1o˜òk—¸M·›·aÌkš¸B—L7†àÖý¬÷R9‰cÎÅXœnµgqw#4Q¡%@ç¶+nÚâw,ª‡åëî1K¦^­ËÜ£¨ ‡+ƒÚ–ÆñnåB°É\Ý),®…Â\#.N85j7ë¹FHížµ%œâÕ·É>ýj[y…·8ÏãO·¼K’âXvm\¶Njåµü¬þt;B¦æÜjÄ70Ýnó"ÚüÙ¨.¦à¾Ð?³ïç2°LqЧy6âo=*®¥<–ZP@Nùz¤þtÛ©¥³Ò[Îd8Uôi—Ó½ž˜?x…QYÎ6íuμ°ÃÛ­dŸ3Ë7áÉ¿e±”B×?¼líÞ›b$’áA˜÷Å%¢¼“(ŒIíEˆy.`b{Ö®§ymfëVË$¨rå«OR¸´µ)vá¥C—cZ…Õµ³$)g^Y½)áƒ`K3Œð=©›‹;‹qÀ'K¸²‚ ',vò¿äQ՛б´Òá~àË¥O29À@<“Qjm#qå†òÁÇ\TW’²´FÍÞXã®;Ô7þŒ\·;WÞ³ôçd¸Øå`¯Ò©X»,› e[‚>•NÊFlÝ•`N t*FÞä}*Öv県÷«< ƒëV-ˆxvž©[šL‹=–~ôGõ¯bâ{@ÞN BÎc†ÉCÀÏj‚VÙ#+üËÛ=ª†e|°ìj\çØ¥(Б48ŽTŒÓŠ˜›|]ä5G!vŒ°@­žHèGøÔ[žßÍ9ä¯CPÜò¼À»NyÅ"nXò€|ÝrsúT0‡ }M2-û0}h ÞàO\t©P—ÍqòÆìt4åù{ †8È!¸ØG# êYnL±ˆ¶à¯Lw©$ŸÍf9ª ®ÏµÎ}zUH¡–y¼¸ÁÎy>•^8äš@<Ê¥+u}íþ×LÕÖ†ÞÚÒ—“ߦj×— j2åÛО3AànòÜ{ŸóÒ˜Xݲ@=OùéM,rsÒ Ùæ¤ù€ƒì A9RC2qŠŠ1ænxÏj©ec4W›]a^yn™c§Ê—›UcA»%¸jŠÎÎUœ¬Š'#'нäÄ\ àò¤v§Éjèì.•a•#ó©Ü«0œ{©•]`@Ãi9#µW ŽóÜ …F×ùIÉýjeŠ-¥ø.8 ñš¹o[ „†“8e'jãïÎ[ž3Xz•³›–À»Ec_B~ÐØ‚±ïa>y q×£¥1WƒËc·}kOF”¥Ä[NA]¸õ­=.B%M§#n1YºVëmmàã$´|÷ÿ8ª*ÐjÓ[€2KǃÐóÿÖ¬í04ZŒöädÊÐçúVéŒòmþU~HY[÷ ~´^"o÷¦mP:íú æ‘/ñìr)=¹Éǵ%©„y=§^¢y+°ŒŸÎv«±v}ꇈÈÖ{—÷˜è;Ž*/¶¶;†gLç°ªž#ÂÁkÆoJŽÒõ-,`€îÙvÊä ÿZ‚Å·³‚ ¡Ÿ–bËœn¤Šå ³†ßnX[péžjóêPZØù !g¢ªã$Uá¨Åk§™F$| 1Ò®5ì6–ž`T yQŒsX¡¾ß{½Ó™ ¬`Måææ4Ú²cÿM»ÜÊ?xy­WPR¥½ª(hÇÎqíZâZÈ[Æ Æ¿;c’jæ£z–Ó,1 ÊÔÏ#\,rI!;—îö§M<—;IIÊôb¦’V›îy^‚ –?6 ¹UÎFz†@d·ò ¹Èã½E*mü’HÈâ›m`±ï"®8Þý)Y„ÝÕGMÍÒ™¯—ó îÝ+V#•¶[œ¶IœôíB’W$sŒñÚ¦´ÈŸÛgøVž„غaü&2OéZ;î?‡m%ê zæ¬j±€sÔššõFGnù¤€ù¬bcÁ¨,[íR5³¶2¤Tv­öÑÆÊj5r’dg9ÇÖ«3<3r2xç®*Ì’m9Ÿ^´ÿš6Üv~õ$eà;üµhÛÐ÷§¡hrYFéÍI«‡ Ì=sš±aq0ɱYùùŽTûTö’£n…È ppßJ$… cQƒÔT—±ZŒm#¿jl’¶ÒX½"ª®ÝÙ=¸éT(¿;GU •ËøÅ 6NWñâ˜QNH }x¦$0üiq»€Ådqê8¤UW!Øw#Џ{“Ò¤xЍP±¡8`Åå•PQàv÷©¼¿,€¥ŽxíXۢׄŒ "°ÇqÞ³.Ù“[¿wVÈô¬¹7GâäpÏ»zé$(ø;{õº ªÞër`’qúõ§ye\S’$#h >˜§÷Æ0ǵW¹M€ß"©_Ãå1CUn£ÚÀcóU/ãŽìÇ­ˆãÆ1×Þ«^bìÄùQ÷þuÚ-ÛÂ’œ¢Uyôéf˜ÍÊ`ÇaÞ }:yd2¢’ƒ«cµ@ö2É+Jì<; †ïN¸£è]@ÀÏjŽ}>âfŒD…—nj;«‰V5$WltõÓbk‡"KœŠvšÐ³²M6¸cæ\àˆÔs´ÕËK4Ó i3æ\c =+9ôÙÝŒ³ðX唞ú³Êfc$½IÉçôª e+Êd”õ<ŠÒy%Ú]Š®jëȨ¸$aWþõ]w ¼Œ}j8nQÕ†ò§éL‚de9b·‘Jޤîç¦3Pºh(!á©·³˜R (!—¡¨ï'ò„#ƒ/CZŠp3П½MÚÚëM Þ¦·ÂæW`ÜsïÍkhÊ"q3vóêy­M5DQ´®p â›&æ!†@= -Ó³ü„dž‹‚Çæ¯ïLŠ7,Žf>õNÍ]nb”>Ì7$úf«Zá¶ŒóV.áóc ˜,½+WWµ6«$x,ôïWµ+>$|²ôÇqTÀÆG#?ÃX±9\¡Î:m=+27 lãÐÐâe#rüÛÿ×S§’„ÈFåéÿë©ÆÍ¬%RýÓþb,e {y«ºyQò `gš³k€ŒAžÝê»ÓÇSÒ«±\…#©ÁúÙöw'¥X)†cÇ^¸«ðžK‚Ñ€ =pjÔ»c”Ï¥Kw`ªzTå‡ÌÒ:ªÇÒ¤$a™Øj¬Çgïg¯CY¤HÊœ“œôªqˆÑ\Fœç=zTÑ¥¤Ü1ŽNzT/Ì—‚AéRD|°ï»ƒÁ#µCtìË#«| RòvžI1Úys3J]Áù@ÈÍeé÷!'Xß!elzT,åtGÈG8ÞªZIûÔGΧֶ27sà;æµw+¾Õ£~Ë.Ï,äž;Uf¿PåîcÆ}*¨Ô…•±Ê Ç¿¥@×ÂÖ ž^âxÍ;N½fVß ·©´Ë÷Œ€mP[n1RY^Œ_Tg+ãSžæF!Š ?*ƒŽõu¨Ís#¶v®~P dÍ,ò’ Qž­h–e¶Y_&VÀOó­8ÒT¶?Í+ŒF§ùÖ¢¤‚Í“+pÔXerIËí ç½Uù’C“–ƒïU†UŽ-ƒŸz­r¡•pàj)Ô2&nÕ˹So÷h´„Ä 0äÒ[!ŒŽ´–éå‚qɧÞÀ&‚ÁÊîB}Üb[xäÊ1먖H rÚÄV¾ pÀôõ©ã…†Ò§ŽÍÓ>•9\FmÈçnqþMl Z*åwàÝòkI£ÛŒ®zã=*)ç Fb^yÜ©ÊרÁD <6ö]Úå/™ƒ÷·rBùÓ)ö KŽÙG»‹#²ž §CjªÁšt'Û¥B«·k0'¸$ –[TŒ&×?6IÚHZ‘áT µ‰È9ÇJ­)8$œûšÃ¸;d'9穬©¾Y‰94FL±J¿.VR>qW¬¿Ò-åC·p”œf­Z>ÜŽ2¼SdG´ÜÅþUÈà¥:xZȱ/•QŸB)ò¡µ,Kª3Žõ™it×ZÊÈ­åÄ¡¸=1ŠÎ°¸7ºÉ»ËEŒöâ³ì. Ƨæn*Чï]RU‰eùº{×M°˜Ùد#­où 1ÿ*ã\î™G¡ý*…ÂG˹.«ÓŸÒªÊ–o˜ƒ4Ô”*o0l¡õªâä¤{¶ÀÙóÍB&dPM¾ÝÝ¥.Ï“žÀqI4’NàìäŽ1úR;<¯Ó“øb™r€ÄÑ ´’AéQKD¤7ÊKzTr¦CF‡ŒqX.åÙUJž8¬Ö;¶¢ä°ô…•‰Ú=qÜPó#“²!¨­ 2»‘„öêi2OOãÏ©ô«×*Ñ@‡òß½[œãpȪç†Þ¼gÚ²äâ<â²ÙNòF=ª®£y zˆ×ÿ¯EÔD¡qÑ-ÔgËiTãozv‰ªyëö{õ©÷O÷…jèZºÜD-çÿZ¼ýáZF¤.bÈ6ʼz–î"—O cÐb£Ô òõ¸|Sn¡òïYÁÆH5:&f@bW€Õ7Ù‹Üy€+»/ñŠ“È-)p9fªÄ³DÌY‹3uÇAYéð»1'v{tQ#’&brI<ûTÒD¸\ò@=ªI#)*y c©ÓÝBL¾hþ,T7¸¸ùcR›yWŒdr=*Ü1¤£‰ÍØ-½VHÔ„'SSÆ"&§ÔÒÊûæ8äséL‰3£?z˜¤ï$`õ©w…U‹¼Ôù(¢’ÝóSÅ6ƒœw¨Y@]¥Ã±çµG$j‘|ÌoJc HðX;žƒÒ¬Ú‚-YÁËž2JÔÓPǧ4ªzçÇJ¿h»,Œ€þñ¸Î:Pép@Á\7­$–÷¯~ŒOCHÑ\¶>e¿Š¡ò¥†eËn#©ª«[ÏmpŽO|µ“,3l<úã½fY3EâV’£,£Ÿj­§0·ñ ‰NÀ7¨æ©é®aÖ¥p`ãZOi1éV%šsÇr«N„Êsß&¡rÏÓŒ T ÌùÇ *&flóÅf}š_´aS¯5Ia˵W¯5M#7ïššëP™náµ¶|mÆâ?‹ëSÏ}?Úb‚ÝÎm?{ëRË}/Û#‚@ÝïWc½·{”6ò*37–A*âÞFoTÛ2®âŒwi.b7?èì£q øŠmòKºi%ËìRG8™¨,í,’JKl\Žx¦_y¹’I %Tž¼V^„»^Yöä Â~5¥~ìÉ62Ê0•CH5’`¹#åZÐ|åY†Ñ…ù‰ãò«7 çbn6…ù³Å[<Â$û¼“Zá^@žhÖPzÖòÌÒ ™qòƒ·=h˜Ì’b@@ëŠçuÉwjj#Èh‘TÛ¿õ¬mj}ú‚yYSj ƒžœÿZÈÕ''Q +± ÑÓæk»!3àÉ$u©c•îí–fº1 ޵2»\۬؇ÊqÔÕ£ œ ù@;(ûÕ46M; êÊðÖ¦†ÔÊû˜Œ|¸ëSn IÜN5nvó¤|n ~R>‚¬Ê|Ön ‘‚?•Gµ“†HU£ŠH'B˹àTÆðλ†Xt¥˜•&¯ëS\ƒû)o`ü*I—`Ø3~•sXÞnPFÓÅcÏYÝå8*xÅeº;¢Pã·©k2\¨gfr¼dŽ jZηYy‡Ž hÛÊ· ;±$qSù„¥Kè}ª×µ‚:–#î‘V<Ч#€E=‹/Ýã#’M6è>Á·RM6à0nFzšhE ÆW÷½WŠ$È׎Tw&¡DægäP[2]<‡ 寸úš‚Ø-ùlˆÔàZŠÜ ‹3g`8¥#`@E=9ëOx™HféNxØrp¹éHÒ¬EUÎÝ7t¥r•Sþ±»·ðŠW)Uêägž”Ù˜§ µzJʳ*¨ÆÕê+“hëLÈRʹ$t"¡8RȹÏlT`à”\“O¶€"™&Æñ±ž:sV-lÔ#M9g;"níÌ~÷ÿú©$$8¹gó¾ðèGÿZ‘Ø«yÄïc÷—é5(£ž×0r©5?*âÉ*ùÃ’`~4íCÊ–ÙB¨óœ ¡ £4—Q‘‘ÁéU|?š÷HFFÐpzU}=âáN1íVäÏlÔó«Dx¶xÇjžPÑ·@NjrSÊùÆìtõff‹ì¤H7~QVÈùòHéõ¦¼ ¦×'’Z«ö~0à¶p@ÏJƒÊ#ò{€iȲï;‘C“Çz~Ù‹œ¢‚Ç#¡éK¶MûJ€Iì?:ŠaåL»úŸZŽxšÞa»æãïM• RNâG¨\³Oz¤qÛ8éT%ß%“Ç8Î*”ä¸ñÛ¥h¬EЄ ¸jÜkæ‘°ÞçV‘wŒ# Št^j*¨EÝíRÄÒ¢¨TMÝ>µ$fDQ…P}iÊþl€Ê¨@¿”Ø£’,‚üç{ŠlhéòçŸCUuˆ ¶&du>`°f©nd´(¤É ýàÇaÐÔzœ--©òòÒœAÞ¬él_DˆÈ9ß©«ús†ðê™;Jœÿ¼qW,˜6˜?‡úСvžŸJ¢®T;’z{UurÈêx¨Vïì­½lR[ß}ÄÄdôÇ­6¿³1†j(æŽäË=ÈýÂî;Ø}i°H—/,÷@ù+—©è)±¼sù“\Ý.Iÿ ͱºšçT…²Wî¨à(ª×>¡pªÀV}Ì—:ˆsÀ{(«òÛK)ÚÊú“Ç^µfKydl0 ¹êx­É¹Ã=OJŠÞ&tß,À¹¥)ò¡‰ž=ï(Rz¥8”Š6d%¤{RÃu!¶¸ÇhŒ1ïKÌ†ÚæBw3áwôØçso<‡–bM^ùƒ7Æ—ãL·•íåI#?0=újH${yU×·oQV¢už$š2Tãúû×EnRîÚ)ár¬ƒÛÜÛ‹Å‘±oCZ‘ÒÙ—i Ä Ž„Vn½,‰FYÈCW•Ò¤a˜òG¥X‰ËÙÂäƒòõiebl û¿{üiÒ1ûðsŸJªòo”€TçqP3•9LëQŒ4¡K1g;[Œf©–N2Ä»ŸŸŽõP•–P2Inµ™âH‹YÁ0ãËr‡ñÿõSu˜‰±·˜pUŠ‘õü*-n3ökiÇUrãÈ«–³›»8fUËË ÷S¼Ö¸‚9%˜dýjc#Or¯;†MN¬JísRï-ùŒµ)mʶ0*)b ,ŠGVÍ:eC„‘Hê}ifU(»X)öЪeÈû¬3éÍIgæ‘ÀûÃ4ûtUÌF9§¬žd›pBÓâ—í!0BŠtryÓÁ ) Q´ÞY/wÖ¤ò!k¡æ‰ÇÍ:ÓÄQ¼þ^J0ç#½-ÉEFW“9íÞ£¾*”iÉàw¨îʬx/œš§{z¶ºcÇ;Ù8#¦sÍW¸½Km3Ɉ̽ª½åâÛéÍy,WµQðÚ1ûSä†Ûµ^j¾€€¥Óner¸‡¯Z¯ !6÷2n!Û„o§5—3á£-ò ïך©g4˜hÙ‰A×>µ „ÎËå±8¾µn@6ÌÝV8ÏOn*òSŒª!Ç×5;àE+žB&?£¤ÄÓÞ?†5.ÞùíU4èš[Ç¢ ±ªz\fY™ÿ…V´§˜Í(0Ú£oêíÄæy„ƒ(ÛÇz½4Í,ž` 1Å]@U1Ê6ó¦ci+ýÒ,Ôj6¶ÓÙ¿­=¢ +x}0qSÚÄLÏŒáW¯¡Î*{T%œŒü U‹y×Ë|áõ­«£q“/ß‚{Ö­´æxJ¸ù‡Oz†hÀps€>÷Ò¨ßÄ¡Áù†:àU;¸×wp;ÖEôv×î‚Þ]’)ÁWâ±æŠ †A à ƒYWCu"_dkJÚÕltàŠãç%zØ’Ýl´¸aW?9Éõ­g·¶@zÕžIRpNÝ Št±UBÄ1`0E:Dò6“Õ‡Zƒy…T›·{Ôo4¨ÁãvjO˜@ùªÉu¿_Š%û¾VÐ}ñššÞä?ˆ’5û¾IQìqš}½È}i£'ÇšÔXðvÜ}zVÊÄ:Èw±îx¤©Î[æ>µYâqæÇcÒ²¯­S탕>½*Ì ep•Y]¢‘Îà ŠÊó \.õO)‰½ÇÞ©ÜüíÇZFýáUÚÉéÔѰÈTmîì94› íùyô¥‘åŽÇÖ¥–ÚTRÅB‘ü'åÍ>HdPN1ŽÔ¶Áă8¿Z—OÆJŒª3ÇZ–ÏrHIjBê±³†Ç«gùTòHup95$ŒE•‡|Õî 1’zÖC¡i'9Íg:|uª×rÁѰÏ+|Øtv¦]IvÉmò³»|Û„v¨îš1 ZðdsÉ¡ØX¤Q¦×<çÜÖ¡Š;6(‘6ÈFK{šÑh¢´±H£]§­RhL.NÔ‚}ø¬¶ˆÂÄ u5žÑyLôÅ-ÙοÞR€RÔÈq€à2úäR‘²1ÆFü0õ¥µ…-à‘!2Ç?Ýô¤…P:Æ0_ælúv¤Š/&ÝãLNãQઠéœþPzT)ïZÈ2Ì{Z¥êÌO|Óº–>¹§[ògÇ æ¯i*^+Ìp*îš»­®:š]¿»pz…8>ô¬6Ã!þ ß­+“.Ë÷‡O­$ŒÆ×Ì`w²`V©.ä³0,JäŒÿJ}Áf¶ó1Ÿ—‘ïXpiRÝ] ¥tHÕ³ÁÉ>ج[{#,¾cº¢ŸsíYöm$Þs°Tàu­2Q¹Sq X³vö«q–ºv‘ò©bÌzcµZFk‡iIû£vZ­™ Ř¿3 åZo/›m J¿¼uÊ‘êx«ò¸’$G\ÈG¦0 «¾½j!÷d.ЋŽj?)·€ V^ZßÄP3p$*­¹kÀÍÆñ·óVÜù:ìe¸.?VÛ6N{Ž˜­Ù’R­rÝëíP•gõëÖªÉLç#ž¦¡d2dƒÖ¡”d2ñ•ì;ÖeÕ¹ùº§ æ¨\@vœrW°§.>Í!/µ_N:#U†8ߦ€Ù8' H*ilر(í…~¹§éw‚FÂHÓèE?Lrûá‘° È>†¤vÚûeù»Þ¯HËæù7CvÑ‚{ýjÓ°/²q’8'úÓrT9ebÝÚ¢‰~ü!Ë+Ý©‘Œ©ˆ±aœŒö¨cb¹B98ª±9RQ‡+ÐUxXí òGj{®9ÛŸ”ý*Ì¿-¶AÚOÊ~•<Ÿ,9g®)ª•C09 è*4-2(w^Bú b“ L°%y²e¹!ÎtXf$ïl¶>¦2 §Ÿ›=)žayƒ1<ð*/:Iîq$ž1šey§‰$ñвŸ+dqZŠ¥+×€Eh(ØC}2*?{»ùNj­Ô‚3hi éÍUœ‰`ƒPÊB.qõªråW§5^C°tíT§ÓfšE™‚ O™˜žÕé³ÈÞ{¨EL;{TOa)”O #Áf'µ3WÔž[t0òÙ°î&«©=Ìh‘ޣÕ5™#ÇÝ-ŒŽõ^öåÅ•¬ 0_÷ŒÃ­AupÂÊÖ'.Ì:±¨ïnX[ZÄ$olu«á™í#†8ù8áýz!o.étÇõ¥¼$Ê»{ ÕÍE‹]CÇÞãÐÕ›²|ýËØRG&ݸBÞj"þ[#ªvóQ³ìueR§ûÓÀó0ÊCc­ O0¬ŠÀõ$Ðyõ4²:²ÀäQ<ÊñûŠ&”<{GjgW ÙéÎj%ÆàsŽsQŒzTeFH/ƒíÍ4FŠïûsMTV$3céR[ˆÖ}Ùs€[¦jö›1Ýîˆ [±«VH‘ϸ} T÷…V p7Ó֯ꌱÛnÀÞNüjÕó*BHqµ+*¶;Ö$jË(p:šé#(cPýœ¶}9Ïõ­h mHØ’}:V¤8Cq°œŸNjÄ™m‘°zqÀ­yÜ„ ÃG\p+JVÀ ‚:ž”Ʋî!1÷jX‡SøãµF ´à¹ ù±P]F<–P3ƒÀ¨ï¡ÿE!GÝ<ZeÜy€ÇŠcåDT€ €}¨¸œ˜b(@ÜŠ·³HYc+Ñ”ùbŸhH'?Ãòæ¦Ó› sÙ¶æŸdxçžÕfe&2ÂŽÕråKBÊî„U‰”ewÚ;Up¡p¸ÎAük&XÄXT:£"y(zS?™pvš­ y”‡=*“÷€)â™dvÊãåQëŠÐŠÙ®a’wÊvP{VÒ,o#|¹è>”â%U³õ Tw"8£DûÒÿ”Ù¶"ª[¿ÒšdŠ8›ÉÎãÇ#§­V’hc·"ó1Ç#§­A,±¤‹©8ÕFúäÙºcæÜ§5JiM¿–z–Ч4ƃ,µfÞQ4"`ʽìjxhÄ»çÚ¬DÁ¢×Ú•Á ½1S㑱”½*RNÆ=©`"% •fÏJšÕÄd†aÛµI ùC¨fÏj†úFX ¹;‰ÂŽØ¨/ævˆÊìw€; †öF1ï',N¥³SšùìIl’)m•d Äå¹ N·ýݰ2Iè*´Ó–=Ī$ñšªfýô{ŽÕ< Õ;÷ÊI jÄÒ[\„šD!—úâ¯M=´ïòF)î{zâ¬Ë$:I"†Pp¡Y`%à€”B~PyJ¨³BKC dRß(=9íP¤±bŒ²pj–hTA+3’êpnµbX#²–reŒ€j–H“ìîKÈG‰æ@ |»°b†3ÝïXèÆ{Î9ç¥K¨NV1l¤ òÕ-äÄGä(àõ©/f; :õ§Z!K}¬NO8Å$ ¶,KÛÒ}ësýfðGóâ­(Þ¬@jÈS"1ô⥾Ĭ¸.~5²ÒÒ"˜ü¥Õ©+”°Iq´„ ?*­3Š ]Ýý†MdÙü×° üÜçØf³­[}ÚÏRj̸e}ßB=ªíÎXž•jàVÏN˜¬öŠ8c/ k¹A"¨Ò% ª2*¡D‹0*x£ÚÊ™ º2N;Q|ì ‚ úqIX2Êi ½0Gå:y‹ž¹«6Z¯Ù¢óD$@~÷¥Kk©ˆA*nŒÕÛgŽe&p21È5§¦4s¬¦N?Þ£fResOaÖšÃr²‘ŒÍ~ñ\€äúÒ?ίêªM•AœdŒŒVt¿*(8û¹ªoÀúf¬ÙÆŸg- ''¡­ 6(~ÈZ^íÐÿ \²HŸgÏ_ʦdC1P:7j’ER Íä†ê>”÷î%{çµFÈŒÉÑFÞ«y-sÏ û„Ïz€DfGxÿ…†Ïz6î9#<ûUWP±áƒ}ª_•à‚sF>C:{ÓÌ­äœáqÐþô瑼¬“ALræ=ÍVªÀ’Ýɨ|ÅIoZi…îå#ÆzRAg-ì£i]½NOAMŠÕî¥È Ö£¿²ŽâŒJ¦Pp§Ò¬ÞéÑ<‰*¼ËÓ5å’I¨egë3GÃvöÓ«ËœÄVn™-Û[Ë==k?KGIÀíÆF+U‚‚l€^¹­ˆ•l€;Ö‹DdÏ5´²o,ØÇ÷MEÎ'zŠ=>HVyK’Tä ñR˜VáÔÉœŽqÚ¤1,λó‘ÏáM¸”í!qµF8¨îg. ®6§Tw–Ú¼TBÈ5§ÚC½À=1Jºz;í^aóx=1Kö5[O<6\ö=)màAg#6ÒÛimíÓì;m$.~”èàÊF8ÈÏ?i$65…¹„¤Žx¬v)ïZÒ–3±/‚G=ÀÿÑ“å¶i\’NHçÚ´å!-ZFc¸Œõªú\ ¨÷ Àû«õ¨,bÂ4ïøTâ6™º·Jtš{³yÆEe'‘ÜRËfû¼ÒêAì:ŠÑÌžc8!½:Ô˨4à£ò©B ʵÜí*ƒŸ˜–«â<* –÷ÇpGx÷j[¯’‘ËüCéÍM¬?—moxQó¥?U}±CnéôâˆÕc‰%eĘ'žÙ¥†³·ŠB1;yþOŽ%¶Š3ŒJG9íJÀºáÆC)Ü={ÓùXd2?Zi‹Aüj¬»]˜¿ÝŸ`*”€Jí¸àõJ@‰c€;ÓÅ,8 öê{TÑÅ–ÿ+‘qÆrju$‡äb28㩨Nd 1®6°ªR)lHG^¨N„‘&8nÖ¦²W†á÷oÀþ5wF™í®Ó û·p?J»¤Jð\lÏÈãœúÕ©2:°Ï>Ù­G”dR3síšÐ. :‘Uddã¥SœfXל*´œÉöÍM#|ØÉ4Ò8ŒíÀT²¹ÞFp¥M¬ŒYIì¤qRA°ÛHÌ 8‘‘OM¦f'€E, *„ ÎHÈ>˜¦Z¼ð´qGüM“ŸLS`2ÆÉ÷$óéK6Ñ2€p^;ÔWì‰v«ŸòÜw¨®ÙEÐ\ü¤sõ¦3W6õÅUš@ÇåèV¡òÄ/CX³Êá¦s&ÕëYÒ3eØœ ñYò9]ÌNx¨l®æº™aF#=qÞg<ÓJ±FÄg¨ë‰n%G£¨ëum5PääƒÇ÷kdÙ¤*W;¶å¿Ù­f·X”+¾NÜý)Œ¦Ôà0þPó êx>†¢Ç0$cIu#”Þ9#Nº–FMÀ[·j[‰XÀZ^c ÀgšHÝWvPÆA4Fê7 ™cÞœ¯„|ž‹ïOYvBဠx_¡§ 10ƩϖB™åéYòÀ®y'ôªN3òçëWWÊ6êl`ckw5­û–°9°Bà£V“ymmòÈ>î6©³ÅÃ6Ï”J¥Žæ†}¤(™ª‘9ò'‹ ¾ÞÞ•–ºkî2±ùëïY«fáL­Â)ëïYËfêLÄ| à}jåÀó"‰JžP³q×&¬Î7C`”î8÷«Wth€m9ü蘪B‘Ž׫Q! ˆƒåTÚ¤˜®À‰Â¨À îP‘2`²‚HïHùc+‚@9é\‘ˆÈÇ|Ô02<„ਣ$»18І2K–=+qÝ•Æ>ÿÞüOjÖó\:ªó!ùÕ»Vžæ ÍŽO¡5Ñ—žaó|ûu'ñéLxÆ¥°mÊ€ooÃ,¥FÑyú’Eü¸ý9¨ÞA¨j"Û1D71Ä})Ó¿ö†©±îã${v§;ý¯P;NQ㊸äîÜ§Ž˜§ÎÌ®dSÂñŠ|¬UÌ€ä1TnÃÍÂBB‚XŸJ¥"´©0ˆm'úUY#2Ç(B øÔVÀÃm¬`>ÃÁ¥…¤Kt·@'#Öu…!P§J˜uœdœŒS¥ˆó“÷Á¢HÃddõRÏm/–Ø<…ÊàÔSÚL™ÇP2¸¨¦¶•‘Õy©’dš?;%]pX¿ÌSÄ&û²&ÝÀû U与TóAÃdò¦°B ž•°2üà`ýÒzS f_˜`†œ"•”·EP@îI« m4¡¥'ŠBã’MH"•Õ¤ÏÊŒzÔVÒnsã.x" ³›s˜hóÊÝé–²eŒ.q¸ü­V.Äü­ÛéëRêwÚñvŒÚ}p`¹0=*9öÒB—qÓ¦S½±ŽI ™e]Çګݬžb³ga’ $ûØc'~´}še´Y˜`1Âóõ Á"À²?«7Q³þj*·ûÞõ娒"¶lz­}jÉÂîàU"ÖUœ©’g'3Wt„†ÂØ\Ì“°É8û™«šdQX[ ^V}*Ó|áÞN§¯µ,¯¿|’rÎyö§HÛ•ËòIç=©’F ''!ºTF<Ƥ×¥FÑå©'¨ÎÈ‘Ëcùѹ’1N?)mª±°ëMòØ1€~´á ôŸ­(·{qC8\ n#Óµ6GÁÆÜúS]ùÀ^i¤D²Ä¿òÒF+»Ò•V#,j8yô§*E梾皭ªÚh^R7ð>aÚ¢Ö4÷³C);ÇMõAªÚ5¤m.wQÚ³´IÉÔw+×­SÑåÛ¨FXd“ÍSÑg&÷, zÖ½ÅÖ#‘Z<Äçp«÷7_¹’&‹19Þ ëÒ´..–ñ2|Œw‚}MG"–(Ü`ÇöÉ5ÈÉ$I'@zöɨäR’*¿@MBì‚w˸u÷úT Ø àŽwEBÌ@ç#4Ö‘¤6C–n=±H\»™òx¤,ÎåÛ©§Gܨ}r~”èÔU?Sô§F£zç æ¶-GÎò8å@þU¯§.ĸ¹¾€(ÏcZVCdRÎÃæ ÕFY!¶žU ¿pBð<š¡,’Eiq:½›a#²žS•Þ9¥Œ–Ø[ýšO)ÓK‚ 0POz~‡òÁ+òØ('Ó½?GR-Ýù Í·'Ú´@Ü=z検ådê¹æŸ( #!<š‚V;|Ý»F@õjoðù›vŒŒZ?„8ð=j5·šSç/Ejhìæ˜5Á ¡zÖž–ÒÉ™ŽÃQLÀ(8%±Æ:Ô8U A/Ó­Es…†wU.édv‡pf‚;{U½æ9]íäðåHê=ªÆ›p’³BØf©¦”Q,œ ¥Ž>•r.¦TMçLÕ‚­Äªœ)c¥H±ªÀ¡Î@%Iüjäq§Ø“Ì9*ãV‚ƒj†Cì*[-Ùd'r``ÕͶeˆ¶è€5kO,LˆÇ(½*›e²à?j©l#˜•p9^ê ŽJ˜Ô.Læ¶wŒ†ÏJϺwžA4„ï# Tn™¤•d|ïa†©·™$óD8¥fi?p¬Í#—î8õžÒ$cÐMj$FM6ØýÅ'5 Ég·ð­1÷6ÕËÚp¾õ^à™4û›p?•C6^DSòãëRmWóçŒ=jwŽ6ˆ#dñ†8Àõ©YT %ÎãØñL;d$¥Aàæ«³$ÙTŒü¾ø¨IY ­A#–˜`¯j…™„ã‚9ûTeÓÇåV.G|Ùâ­Ý&ÆG6áœU‰”+«»pÍ7’›Vì)YI?ÅØQÉ麣e,ý1š•Œ£f¡`L™ÇZ£s,c|Ï÷Pÿ>*¤Î ³·D8æ«K"£€¼T‘êP_DÖs« ±«QjqÞ@l®NÔeùÐÔÑê^ÂÖ“¡—å&ªYéòØ]gÁE¡ïÕK{),®<É€Ú*AëUlìÚÊVyq·nWÅVK¦¸¿Ã–Øà€ÓÖ«,Í=ÉÞNÖ?OÖ«%Ã\]ç!ãùVÊ’ä”áBª—ïÓ¥jD5É*~Pª¥»ôéZȦYػ“QÝFtvgs°n9ã½GyptbÎçž;ÔWH‘c–cŽj/znBv¨6nR=ê-›†Aæ ŠAÁwã§jR . 7ò¥$¨Úy-[R…‰qž[ŠÚ¿Å´i'/†aô­K¼B«ïËTܧŒýàj¼h ㊈ xœtÉ*ªÃÞ£ƒOm–±8ö¥lAÞ„r*'$Ï«),§"ªÈ ܪ«Ì¿7ûÕ®û¨~ðæšñ€è û£®jvRURyA´œÔ¦5YÏÝfÞEXÈfž3ZvS"DT°SžõzÞEXö“ŠËÔæf‘Ó –ÇsXš´±ý®FˆŒc’=k'R•Vizb³t@ßj2îÀDù¿Ò³´òÉ+Ê6®?:¡§GyAÆ?:Ûv¸sSË&ö$ñÇZ–Y71$Ó¡Cp°‚¤!vsì;V„â+t”(;HÙôã§i• >E,æ¤2ùáõn¾Ô¢ìØß2!#XƒÛÛó \ý–ì Ã#wk‡]ãó­b±Ü ™QEhíIHlæ³fù¦‡\ÍÛy—O·Žx¬–ó.[â¤Ø70'ãh§éR¬;_$òØ*¿Ëô©„;_æëš•—“Ô¶1WAªdý〵eßÉ…sÔñŠŒ;.pÜä÷íUD® H^ÕwXsÞ“i;¸ÎzT†762îÉâžcfPd8,¹¬ˆõ).5‰p"å~µ™ÓËv±©ùzf³!»i¯k÷y­;;všV|mUàœõ5¯§Ù5˳ýÄd÷5«glffsò¨ã5-Ã'˜±Ÿº¼)n^5•#nQ ²²  ùW½$’ ëIsqGQÍ$ó å}*Œ—«ó%]À1Ò¨ý±a>d‰»ÏZ¨nÖÆpjëÛZê6"R»<Åã¥jIgk§‹‚<³*qŽ‚¯Kkå—šWi‘GJæ&³–Öíbu''åÇq\ÄÖÒ[ÜØ¿)ëœ{imîÕ¼jÙÔ‹L‹no,Ÿ¦ãÇèkWQO#N€îÜÞYÎLœÐÖ®¢<›;·LšÃ³_Þïé°XÑ›?Ýæ±­F¹þëì­öÚ£»v‚+±Óì¶Z£¹ùŠäW[im¶,~b3Y·‘„œÛÛ¦OjžŒ-ÏÞÜsÔÖ]Ú›‚X“ÔÓcÊ0ñíØÓ1°sÆ;v4Õ~yô¦ni HÇ’xì3,ì]úžž”ÀÌä»r[¸­¹þf¹-lêÃuÀsÈe~•§¨ ÎIç °e˜Œ›@ϽXÓ·ºÊ €›@ϽMk¹–L·¨.\zà/ËYz‹78Š£||@Î: ÎÔn$·“lo°õéUnç{rlç¨^êg·%U¶itV󠜻ÛÕ²IïRégζ›q%üÅ'Ú¤ÓH–Ù²w7™ÜÔ·퉙”‹–Üx=ªK-¤Í#®B˜1àÓ¦2[;HÊ ¨çqâ±ïnRè YƒÀ ʺ”NÃ,zö²î§²…|)ü«ZÖÍ-,Уoi‘Ž9Æ8þu~kQigÝ™$ýãÿOçW¦µ[KXãS–'sSçpb*TƒŒUV`@UtÃJŠGñ Ò¹c¨:ã½tš¹ò`D ú÷­ÝE¼´AÑ=z„Ù,œvµe V;2;T9+“ØT‘‚‚ß+ÈÕëvt·dßòHœ²Þ•j"ÂMß#/ËíP4a¦‘ü9>õä«]äí9÷ª" ×AyÆ{ÒÌõtÉ ‘¶§½e2ÆêIoºÃ€ šé—Í×’x"Ÿ5–B ÀŽf–9qÐnôÒÞdñ»Ž¼cÚ¥pÈP@RO= NûRHXòÃÜÔ­´Ÿ”p€=ê)Ë=°'‡d`£ð¤™š[uÈùÌmI;oƒŒnòÎÑ\Î’§íëÁ!3œúâ°¬?ãíIw5…¥‚·%ˆûƒõ®¶ÆU’-¸a]~“:Km°®{WSc"Éa½*¼¨eáx ôª7 GËÃUYãój³+.U±ùÖ|ˆËò·M”Œ«VEû³pÇåÅPºfÎO@ÜVuã‚zn8­}:G›FTŒ…ØJ·óþµµe$³è^\D*ÆJŸçýkfÙ¤›H_,€«òþU4J…!k…Ü V§F‘˜ã{¡ÂÄJ7®)ê‘ùjó»Èj”àÏ¥0<;ËÇÓhªSŸ;H?9˜þXNç÷šbóó—9úU-2ÔÈñÄë••‚¶}:ÕM6×Ϲ†&,®}1š«¦Zy“Å•›èk§i<¨NäÚ`{ŠëfœÁjÅÓnÑ´_Jèå—Ê·bÃF?°üæ¸rGk™‰ ÷éXˆægϽ:Mª6×®)Ò1K&1Œw¦€>µÀÜÓr1ÇjÞ(^Èႎk£žÛíÈ8‘gÜb¶®!óbIÞQÏÒ¢Œ˜Éç†õª¶ÓÐIV<ûÔÈbP™àÐàþ=*)ðXžàÔr[ÁªwšZê±i¶Àé«©Líæ„1€ ÛµE-€¿w¾Ò¸še´šE ÌhËtëK¥Úi™pÌ£æèiÚm¯ÙÙãÉå…gjîoæ²ðHBô¦*…ýô{<—…Ø!_LzU »Ã-ÜÖònh]€ãµ-¦‚žgmÐ/*½Úe£y¢IÉÝr«Ý©lt\¸s”NU{Ö¼N$%‡RG éOš_:Vlp1žÃ¥O$žkœž[¯µ8@¯t£Ô–6¢{øÐŸ•NãN°¶Y/?u>jY¤k†l "±§ê7ypê8Ž6* w§]ܵÌDz©Àñ1RÍÓ8ö§ÛÛ<Œ„žæ¤†b§=©êU7Œõ«â¶Êö¬oŽT¸Æ3Q¶×’<Í»?LU8öMyn-»s`jºí’ê=¼751ŸÌcãŒf:üj'>`þö)ŽÍç/];RÊ[íKŒìc®IºcŒT¬Œ«¼’>nþ•jH^$¶GÍÑ…NÑ´KæF¿¥C'矺;Uy¿xûОƒµC'ÎÁ×jŠKhÁ/{%nZŽH‘˜4)¶FàŒu¨Ú$ ¾$›ï U«5TˆüÉósèzÖ®–«!Áù“æ9l”$@ô)Ö›$™»o,‚8ãûÕ òæý¼¯™8Àõ5¹ûSåCtªwLÌå”Î8¬Ù÷I1+Ž[U)É>á›&¡¦BÐ1×Ö­êzTq TêÙ©µ 9 …SŽ)ÚwÙ-íÞÈN¥ú’ÝêM5ìà´šÀÊ’Ç¿¤±6ÑÚ= sUH•Ù£iTB§<Ö¨#±…å_%AªbG;@"CÁœþY·Œ#¸ÁëK&ϳFªÁ74¬Å(€+*êðêa'l2|£×j‹ÝmS΋;c~ÓƒYæ÷캯˜„ùq¾1íÐÖÅÞ ×H¢Ýx`+SRÔšô„·_”ŸÖµ/o脇…ÍF XÕ ääçµCä X‚îÏ'Ú£‹d1»©¨ß.ØÎNH¨[,zf£9cÀɤaê=(a€3Ý©Çb o©-àc?­tÑHÒÁÅÀÀý9­àÌñ®Ñòã–ö¨euBp½ë6öHüðåPp3õÿ ¡s"VHó··çK•%T‘½”=iÑaÎÈέ98#?>ÒBÓpVÏp嘌þu-¸0é‹"ý÷a’=©#UŒl9,A'èj+›°Ë½]§“Ú¢½¼Y@xÓhSƒÏozŽæä>A\‘U,í-å»ÜcË[q5VÂÎ;‹£„Ë[yè*½¤rÎNÌž¹5«¹ Œ+6ZÙÝœ&6léZ[’Þ"Œq·ÓÒ©(S’»9éšçg1»e2sëX× ŽÙL†­I ž\Ò9¹Ï¯µKc7‘pÒ1ÈE$SŽ”ûü™ÉûªL_1~0IÞÃØÔ)æy»¾î[-ô¨ãy±÷›ær/–r Öý«ˆ¬ ‡L¨?lBvÚç\Q4 3æcòATcµ{É™®äž:ÕXíÔ…¦?(8â†6ölȤ™Hã<â,–zsKEÚfAnqšW’ÚÏÌŠ6o0Œn<â •Œi$jríü^•@’¡¢Œä“’ÕLœyÉ52¦`I´r}zÑŽÜ›E›wÝÝè;Õô÷ 6~ïSYó^=ìá!c°õª—¯}q¶6&58Fâ鮦 Œv‡ùճäJ3Îr=jg;ŠÃñœäzÔìw2ÆëR) žNáÜv§Ã€qóoïÔèñÈÆwvUrJu+Œ“ÿÖ§‰^%T,Bu`sNó0$.EÛ¥-‚Ž:ŠD”Ëí*Hàcµ"H<Ö`9"ª$˳žHç­P‚q›ÈÎïÖªA0ŠBÄgZ¼ó-Ó-öŒdd`µkKr·òâ7Ú¡Aµh<ÂêC±°àå¢F“Q ÎKÿZæïJó’õÍÂKý¹?xçéSê/¶SçëRÞ6Ù )àjkÇĆ5< ѱP–@“†@Û~µrÈ"Yå› €ãëWm€KMŰê¼VÀí0.¤†~}ë-c&P\dçÞ²i•¤¿:×W±=—ÛŠ¿žQùGl}+MËû£¯Oj‘71/!'=iÙ.Yœ“ž´àK1f9¥C•` `sšrÊØÞœ¤”8àLgÜÙ¨™²séQ³g5²Î?)rAŸ­lÜ]y0›xs´®\žÕ§=À 1çiáC1ÿEXÔò_Jc›( Cóoª²¶ûhaSÎêŠ7ªMÉýÌb1ŽÜÔög:Œ£æ$Œvçÿ­RÛnæÎ~U1V˜ )a´ÝjéÁ´tóÄ ŒpG5i°Ð0,6©íÖ©*%»+Y\à7¥fJ…2UÏ jˆQ‰´ä7sZ äÙZù…É#½mF`ÓìD®e©­=ÐÙÛ‡~«½Â9u,&²¯¯ÖO5"ÞA,•gÝ]‡ˆ8r cMÃ`ò2Nõ¬í¬äÉ< ¢vIÅ8¬Uvî}ê\Åo#©õ5*€ Dù€ê}MOEÊ>UëþÑ­=>Ñ¥™$+û´¼jý­»;¬„aT~u!`Ùº“ÅXyP[HXŒ³ ¦yÂã9%¸Ë~V''w5šþ]¥Ë·'=ÿJŽÉ¼»Y½j·”'šÒüç¡ë=áIf2<¤’ïTÚ$yY™òÄdc½*ñ „N2[®?§ŠÓɈÊÀrz·¥M¹Š2Ç¡=ë?WºdQe` °þU[T»x×ìq0Úܾ?•VÔn]Ñc<_i¶ì¥ÎÞ‹‘ïž*½œ óN•¬'k{U¹™Dª±pŽ]’Dó‚ÁÀT\~õnG_; Њz6ÈGOÖŸ ØÍ!篽:3´´˜çùÓNçbp@>´‡tœ­glã¦Îá20*+‡ »'QNÁsž@¨î¡ò­Òç£0/§ëËO&Ò+¢0ÒòúqÅ-Ý¿•OüL9Ë‹{dûEËà²åGÖ›¦Ü[Úæ{† ²e@ïšm”ðÚ©yÛ—PF—š Í•s~Ue©%·É\ 3vÏji’XrAîk6mÍ>ORÕB\´¹=ÍQ“-8'ømÙØÙXP þµ±§Ãæ#‚. ÷ÍkYG½0 Æ)—6¾LlOúÀü ôåŸÙã`ßë7ð3ÐTwV¢ ýýߨÀÌu K út¸P{|ÜûÓÌ*?à_>1½figeŸ@ >YfŒ)feÀ>€Ó¢ù’e$¯Ã<ÓNÅP…° sõ¤Â…Ú[ 8õ¡¶…!ŽΡób}»8ꑇÐOö¹©b‰VIdf‰>•­kæI¦`ÌMhAË>26æ5£ëUu9ÚèÀ~u –éàM—Òמµ^Á ±gM±„©=óÖ¡´BÐù³ ‹·å–áÌóF îQ€¿üUGss-ìðFU@Uÿâª9g{˨Õy ÀbX„Q Pÿ¤½AÕ¹¢ñBúÓBX°0¡‰ŽKócÔQ1äót§Ã– \‘Õ½*ý…šI"+¹Û‚ÍéWlíPº‡c´rEZ’D•B3Œ sZ·WPÅlñÀÃqP¼Õû‰£XY#o˜Ž1Ú¡Rw1$·­d®K1%Ÿ¹ªáI%©ƒ*…]ç©lÿ*F•¢¢u88sž¥‡ô¦¼…!xØwñ¦¢ "Üq€7;M‚=Йî¨àŽÆ’$Ì[ØáAýiï3H»“ŒgÖ­Éx×_º@w©Íɸ%Æ+;ì ß>æÈ\ïY²Zÿ¥8';q“Tšßý!†sŠº EùT(=ÍXp½{Ôü¢ãõ¨¤S+ªÆ`84*æUŒØâ€†YB¨ššáV5½Á5nýRHüáFê±w²• `åŽNúTL¹WÝÔŽµ"*Ël°¹Üª ©?J¸˜¸µ;±7.ãV‡ï­ü¢IÚ2¹®zô»Ýl…+ž¹,Ó`vqX;žão`+RÂîÒ±;o |Æ´ôë«h0È Aö5©cso¹Âòi¢Ùõ†Ÿ ãµD°+ÞÆx(Ížª4…MÚ1ås‘Vô§Qs&r6³1ÏJ¿¡2-ÓîÈÙ¹Žzu«ZC*»†à!$ÔWóùó¶ïUõ;Ÿµ]10=ê+éüùÏ¿S_€£©Ç\TL1´u8ô¦°þø¤ÆÕbz·È¸£î£íò oEb:±Àúwª’—58'Чq!`PqëU.¤-”fŸf€Jþ4¶ë’1ŽôëeÂçŠê\’Aœ÷®ÆrÏoî-ÐúWM.æUòÆr3š¡×x÷ W?ïµ¾øÿLJ÷—ÇüýjÒGœíAéžõ¹ocäP }Ü÷­X‘±ò€ªwwPZ³KuÊdª½¹»ÖmÄÐÁ$“\ƒ°f5ã;P¸ž Ës÷ȹçqðÝ*G¶Õ!†ª{Ñ,Vìv€ya‚*»ÝÇ÷ð®jm>%¶Q<ë·8#=—=j{(…²˜m$俤y–q+Ç uSŒŽÕˬ¯+#¸ªÓ—{+3QÊ2èrÄ*8â/4q Éb‘F^dUþ,TÐ`«8TlcûØâ´íš0KNpˆØÀþ"hÂTòœ($mõ§‰D’žÉМÓMÊÜÞ9Û¶>/LÓË4îOxcæÜÊ(À_Zh!$Þñ€‰Ñ}O½‚9‘†è=j/6ç=1ÿÖªsÈ× ÎÝ@?¥S™šv,Ýú sIåÇe›·lT­7— vÊ2O,;T­)TKtœg«,{Š.[¨4vî‰ !-ÕAÁõ*BcŒ8U9ê3M ±üÄ`:æ‘#˰À?4+*d‘€ß΢|™@ñQcÌœïÒ¢¼›nyj•â0nã·Z·$"ÙÔ.r:æ¬4by‹‰ u÷=ª¥ÀÄÌÇ?ïUæefê}MBdă XúTÉ“Kg¥BùœM:I³–bJ¹RÊÀÚ<Í´ãmI;hó6Õm"äÈÎØ/Ëž‚£Ò®2ÌMîåÏJf›q”}ãsãå¬ëÉ¥–Rò€¯’6ŠÎº’Ifgq†$ä(¬ë¦’I wx£Hf˜4qýÏÒ‘`uO6PV3úÓVD²‚ˆ{zÖµŒêו°á—ߦ3úV•„ Ýƨ§ ¬1éÇZÒ²”4êª ‡­Z’Š6e“&AÈ8«7 x ,„™FH"¬OŠ"U²däƒU |à dôBÁ-ÐfªEÈÉçµK‚ÎXœ(xö©q½‰?tMIÄ“÷@ïQƒ€£ ´Ìî!˜p¦g-“ô¨Ý)Y°TŽüÕIÁY€Û‚*œà‰qŠ·`ú槈m@j³Â{WEÆHùGò®®)ÞÂ.xòÆ?*è ,6÷Éý+:ï(têy'ØœW9b]îÇ÷‰Æ~µ‹g½îA^­Æµ<ÌBŸëþíl]ݰXìàÉ™¾R»Z3Üd¥¼Y2ÿtVw‰,¤’ÒeÄDî®=j·ˆìY¬ ò²ÂN@ëÍSñ“Éi’›„Dä¸5KÃl¦–3·nŠÎðü .ZIâb ztªºGƒ÷F*-ZîK©™XŠx_U»’æwÉ!TáGµA©]I<Ì €^Ñ 0éò;žYúšÊ.É¥~g•`ÉÉcZƒöäà€ªy?JÑÒ"?ÚAŠн¦FEã±^ŠqùÓæqãq=zŠòM’3XœmËíV'¥90›]òIléš’ÝÖßÊ7HК’XT;òX`{S%l2^œýãUgÈÁsò®p3Þ«Ìí#¥H*‹ó?¯e¤HظDŸÛµ 3AϨ©c„#yŒû¤?Þè+NÞÒ8•Ýd•‡ÝnÕz#„y…Ã;ôÀÙuòÚ?— wëM2†#Éhð™ŽNi €œÆSåëQg+†û§ HˆÎÓЭUäŒ7¯nÔZÁ#HdÆW•?"¡þ3×Ҟȶó—fç"§’$µœ@‡Ì8ÎáÞ¥dX%ò“æ gufêW(ðKŸœíÖ³/'Y"u ó¬ëÙÕàuV9 ‚)ú oœ³&QzóÀ÷« .KIäQ–ãëSè‹™ ºåêMh\j0´â;mŽS‚@èjýö§܈íUa#pjÝÍôO6È¶Þ °u ©uÕ œ/ÊŠ=köâKûôùUG­c]Í%ýàU/ʪ+bÁ-¬Ã‰X3¢ÇlúV¾›öKO;Î!¤\ŽÙô­{onŽa€¥:ñ˪¤{LmÔŽ Soæó#?QÔ mä›Â ÆÏZ¬H ²0[Ø÷5SÑ"»sPHEì=éòíY'æCÓ'°©$ØŽ±€¼¹=Í9¶+¬yá~ùõ4ÒF`€‘ˆÝ»vŒ~`qô¦Ê¢F @8¨åPä6)’(rŠLŒ…Šl6À “·;sè­).ŠXGÉPJçÐW¦¸ÛjªsŽW>ÄS-0±„ŸzH +ã÷JO=ñÒ™¥â0Òþ¬{ãŠuˆ2Hò¿,§BjÞˆ†i繓—LÕ(oigc–ε\­ŠÐ¨æeåTý* –ŽÝòŠÇŽ•Ì‘FOʤþµÍÍn&¹uGϒƹ)¡ónFÌI5Ï<>dø`òk\Âb³uEL `zŸð­ ¢ hUpέÀ«ÓÆE¶ÕpÜ u„rnyg%_hsÁ5gHŒÇæ\\7–€rxÏzžÁ|µ’i[hÇ"‘‰’à·;G þ5<žuÓ60¹;G¥Py<Ë’ÝxeʰQŽ­Á«“Ñ.F2jÜÄ4JÅAfPWzU!5xäUDâQÇJs’Ž\cq…L Ç)eÀr8©hÜ”ûÄS<Ÿ0Ï=Iè?ƬGjò¯˜rsÔöÿëš™ gÎpz“ÒœØS寙Çâ–m¨ÞT1ƒŽ Ç4²m_’8ûriŠwùôÇzŠ Žp¡zÞ™zð;c½!r¥²ÄcŒÒ™š=À9_¡Æi<Ò™]ØúTRêÛìM@ÿ½V)· &¢oÞˎƪÚÞ᱄\󞦣Óï!ƒPTù<ûÔvWqÅvC¯È ©¨ç¹ÞóÜF l\¨>¦›5Ç™,÷1‚¡FW>ôÙ® §A·jü¿k\[Ü*rû”€¡oMм¶W³í£iíÜ/-¸b­ÞïÓ¬–Ý_÷“ ¶=;U«µ{ e[ç•røþíZ½-cl°ÃH2äQe‘¦<áy.véE¼b˜Œ43éÚ–Ì{9ÿY'Bi¢#¦Ø‹œ4§lcÐw4‚cb·%‡›!*£ÐzÓZ?ìû!6G›'Ê¢ª V,wÉ“õT³,c$î~j£JÑļüÎ2E^Ó–I,Ë˜óø ·fŽöåº žjõš<–ÁZ(ë”+çž#”wüj}¥c}„ Îÿ³RËaçt_aTPj x9^äæªmº CòGrsUUnƒ0ŒƒÔÕ¥ÞÃ,rÊ*eÜÃ,y§\•É<ÓÉùI$O'*wqRòœâ˜Ì€ãÝé¬Áš™¸_ÿÙÿØÿÀððÿÚ ?²û‰ˆÏ§j…÷1ˆÏ§j²pIÉô¨ŸÉç=…FØÆOJaþ÷¥•Ýàå}(•Ý~`ÄÔÙÐnƒÚ˜w<›‹ÜÔlKɹÉbzæ“–}ÌI&‘È'*8^´ŽFr‘È$‘ØTOoÇyr§Ú£0¤Ÿ1$‰¡G`ÙÁ§©Ú»1Àèi{mê8qòõ”‚F3ŒRàý)pséKÔc9¥ñš_ÇŠŠê]ˆHëQNûFj+‡Ú†³årwrHª¬{æ©Èy'4ÃË…Î0{Ò7§¥1òxÏÝ©`Nâ…P£Židô=MšylSàŒÍ:D>mÇŸ¥>Ì’*xóô©ícó%Eõ<Ôš›(¹Çü ·5%áyUþŠ/ïÈ^à ¸Š0ÌǵDX*Zc0D¤R[Dó>æìsô§ÛÆ]ƒzT–Ñ4‡{Ví«/Ù˕׹­»\%±•”¦{šÙ·Úù„ -W»¿$+’2Ov©Ýj#¬…¾lñŽÕ^{Ö.¯ÑãéZ6Wo0;ñÓ‚:Ö¾™¨<ÊÂ@3ŽëZ6wm*¶àõ«kõÍiÄ>N¹Í]@qÖ‡R¸-À¥až•OT–(â œÈ: Ê×gŠ8¶™jÎÕdDåÇjæ§!Ø‘÷ríó·ä×9.]ÀMØÌ÷K!Ë=½éñÚHóˆˆ9nžÔè­$i„l§&·.&vÑÙÂ~XÀÜ}«nþïì–Ée Aó0­«»Ÿ²À–Ñÿ橤k´HFç~GÒ³6ãç<±æ¨cç’y¥xŒ¬ï×Ú“Ë2Ç­'–e8–{s`¸ƒß5$°yi÷G HöûŽõ+ãoJšLmÆ*y8^œÓT—*£ŒrqéëH­æ2¨¢0r£Íä¦à0 Æ=sãÜâ‘ùLžçÄ?»fîN>•9BÝKbš§)žä✩ù‰öiÀ(cøR€ŸÂ£“õÚW¾*7Á9éøS“ž”©Èþ´©J¸žÛˆïJÙ>´6MFÍÇNæ£cÇÆ8Bvydã…õªÒíþÏJ«)2?w¥1Ð*Ô´Ò¸ÆW‹q’Ç­ ^M&À:KU—ZÞ•Æ8¤“Ž*›éMQ“Í5cÏJ·e"ÛÁ=Àlá¥Y·)\sзnâ(Þ\sРË&w9ªà<®‚Xš¨å|&I'­hEf°ª;üÌßά‹o,Üšº-DGŸ˜ŒñèÊ)­ 5m k뱂ȧ׵\²ÓÄ»Œ•M29Þ[ÍÑ]¡€üÏçÅS[‚×[ã!p8ǧzg&ìºcÿ­Uî²wŒ’¸'éPLijdžOSUî‰l’rjXK£O¼})èK*®2jHòʃڦ/öo”‚Ò8ü…Z[ðI28Éö« ï¯sv §–'¥¿îFr{Ñ,ŸºïS¸|¹lœô¥pÈÉ9§ðÀðHhʤ[ ÇïéMʤEWÞ>ÔÒvÆTOÞúT9,6)5$®Àj<î_,w51`‹³û¸Çõ§çh ÝiùqÜTyýàÈÎM3p.8Î9¦nO\SnäU;ˆ<â’áÆíä i'p nûÕ »³ÈYù8ç=ErÇž:Ôp±v,zÕŒ¹'¥$“À©N@ÉéUnŸ ŽƒùÕy› ŽÕ^vÂ`qU@%sÔzT=G\dlÒ¶LŠCÎh<°dô<ÔñFw’zqO ÞžúQ)Ë“ØSšŠNMBÙ#©¦ýÞ”ÁÆi÷n#!^€?R©%`¨#™54Ì#`ì2k[ÃÚ{Cþ•'ñ Ø>§5¿á­9£v»”uQ°~kgA°0ƒ<Ÿy”mÛ–‹:ŸÄU+ò Ì­Œ æ ½`n%l`V^ÃqrûxÏãYÊ<É @)–V+Þ­É@‘’7c"¬ËE N23V^0€øªì2Àƒ€*·VßXòàþn"±Ê’µq‚} Xˆùr+êÄdG(n‚´EäY »_ʵRU C°p=+A/T†!ÇJͼÔȈ,ç©ßÒ¨^ê2^0\ǰïT}Š2ǰ«VÖqYD.oHåPvÿëÕÛK¬c7ç ÕbfÒÎ;4gæêÔ7sÍ~¦IŠÍOOï‡QºžñwÈ<»|ü«ëQÞÏ-ÈÉ =ê"^6†GJ¡ó+| J¤ VùÍBâyv•ã4$3JáJñše|b®È‚Î4*3!à}&®”ÝÐsB®îjÈýÚm=qÖžNƒJÇGz‡¨ êj>ÕäR0Þ†—n0iBãÕi ;ð>ñÀ¦ÎÀÔàS´²ª÷˜(ük¶ "„ èˆüwÊ¢uEþ ?]ž6F •a]ü¥€çƒ\•éÌ’ ç$×=xß<œä–5S㤚¬>TÏ¥@¿*S'Îd·Ì€úT„î,äò1R¸'‘Pœ4aT÷ÏÁQùÔ'GçNóYöÇåZwÌÿ* æ”’ä*óM¹­ã;Îdn‹I4m!ŽXö¤™ CMZ±Ž=>´Î7NÿtÕrÁEš ÈÌÇîÕ»$©æã2·Ja{™Þ JÅüúÕô·,âóQf ýÔ«‰wÞ1Úz f¥2Ï/‘ÄJ UmZQ=ÛEB&ªúƒ™g1F>DÁ5Œ’)žF'9­XÓô™%„LÍ’IÀ?ZžÓOfˆHǯj.î"¶‹wÛ (õÍmœ;‹ä*Š.žX‰, ³RâFS$­òƒ…Ýë%î$”o~ƒŒ{Vc\<‹½ø© ;‘¸ûÇE¹$¼x¥ƒ•ç©5n Qu/’€”$Ö…¥›]91‚ 5vÞØÜ0A’£šÎº¸“͉QŠŒt+.âf2"«=g\Nþz"¶:V¢±1©<ã¯+SÓ|TzñM‘Btê{SdP§©íLu p:šˆ(É?Äj688Ri„€p:u&˜AÚBž¥!¯JBϪlg¸Çš­µš\ûóU‚3Ì ]?"ÐzÕ“ò­Y?*ÕYØç×5‡µA)9ÇnµYrrAÇ<“PP:€t'€â®GnmÒÌÉ˽ÀÏÐWR܃ž„Jì£z]#ãÓ‡4d+í\•Üxié¸×=r˜2c³š¥•€[–ÿ ¨H ŒõªÌFÀæ’0Æ Gçê)pJqÆ)H>^E68d•Ê'S×…$q4„ªþ4Ø¢g$ Ð –±ìˆn”õoJ¹ò@›#åÏVô«Ÿ,)±OÌz·¥TlOx‘‡$ö¨#‰®î¶¦_M@ˆn®°£ u5~(ZÓ/˜ýè+J0Ö’ vnÕ}ƒ²†Çj}ÕétòäU真uª<‘ùnŠ{ð:RÏ|Î62©Çïnk’0n·g+Ûë\ÓD>Ø\ŽÕ}~uÝü#…¾õn1¹7tUÄ—qàt£”áÁÏ­G!Ä€ðj9ÏúThI-К`$“ƒÍ0¸<Ó€ÀÁ;‰ý)qŽ3Ï\ÒãßšUùN1Í*ðqJ½i%àg4’p:ÒIÓ^Aò}*>íC'ݨŸ‘N$žÕXŒgš¨~UäÒRÕÀÇ&“#Ò˜HÚp8«ïÀP{ž)ÈqOFùqRãø‰êiØïNÓ |¸Ç^iAÏjrž:R²\Cf`?Z|`I4qÿy€ýjH@{ˆã=Ü:Óר ˜˜Œ*0~ Ö§ˆÊ‹È¾]ª˜ß‘Z:Ùöß<*¸þbµn/a†ê8ä)ã§ZÙ¹Õ!‚õ-ØçqÁö­9åa?Äy?…V¹òÐI–äF+6þ8#7у֩^,q‰òyz„ofñƒúÖ–>üV<_1cïRI+!œ/&œÌY‚%=œ»l^•`ÜGenc^dnI©šQF4ûç©©Z_%6F2ƫܵÂÚ´ÛJ)ÀL÷¦Oévwôˈ¦XCAræ´í M*É ÓL>b{VÒ¤zE‚¨Áža—>•ª=6ÕP Èã,MLxÁÍQš}é#©ª²ÊHëÇZ¯d‚ææ[‰›÷ðßí—J·Y¤’îá¿sOö;OˆHò\Íþ­xôÍ[UóvÅm•Uî)u]sÌQ¨Ú£Â›©ê¬øŽãŠÎ†Ú{ÄBþµ—¤×[™A<õ5Ÿoi5Î_óŒûÖÅ–†ë´ÊÃgé[v~!U¥q‚9­‹]& ‡‚9z}:ÕTÈ©ó(çšµw¦Ú¤Hã“©ÍZ¸²·X‹* ¯zϺ±Y×xùdÏ‘si¨+òÉÚ³®-VL0ý«GN±{rä-•èkkKÓÚÙ¼Çr~\`Ö£@w$‘Ò²váßÏÞõÏù¶ÿò¬mŸ0ÿ¥JfÚ§Ž:v©A ÁTþìp;T€îlw¨äù°nG5€Tœô=*7RsÎi€ `úÓ0 éz`ž5"ƒÁÎMµE™~o”ñÓÞ«dñЍÄ|Ç÷¨ü¤ŒÓ3Áâ¢å#=º}ÙÏå5* }ªÁÇ—Ž¡iäå@© ÎDçt£;GÖœ{žjm"3>¦ŽFR2XýGJ¹£Çæj»ÝÆwŸ|r?Z¹¤Gæ_,„|‘’äûö§ë—?hÔ 8\Rë—bîüÈU⛬]}ªõvÖŠé®ñ+õm›òÇ;˜úÕèt‰e%þ#óžæ´Ni#YÞ+»'ÔÖyº" ¾KäÆÀôâ²ä¼¼6KdŒVd““åú‰dÆõ=ê ÛW©¨÷í\RyË"•ÏÞ§+àˆeØâ•X€±Æ3#žµ©c£2Ì%³ÆH>µ»¦èa$Y®*H5³c¤,n%—'ŽsSϼÕmâ8ò¡]åGéR(û~·œí×v¯j‘ÚõE?ÁÈõOSºa~èF@øÖn«tí"‘§Ú¨j oq E,§EÃ7çU¤bÇbŒ3Uy˜lQɪr\H¶_dQ…-—>õ%ÍÉ[e³„^XûÑqpâ¶_º½M$Ï(8!˜öÅVŠ™‚©ÎN9íQÇne8“ÇáZÖ»¬“ËB29%º Õ´Y`"8˜^¤ôÍhÛ†ƒ½ês©H á‰?Â: ²ú”ê…Z`䞪:TÏ|ê2ÉíÚ¬¼‘Ioû—îäÔÓM Ù*Æüõe’jy&íÀFÁî*çŽ9Ú9,£)š†Úâ%)2ê2™¨¢™"«®XtÍE{­,dÇù±Éô¦êZîÜÇGjŽÿVÚJ'æ*¤# %Ûì;ŸÇ¥fĈ9ÎæàAÞªÆÀÙù˜`})ÅLgi$ŠqS ’yÅ8‚Ž§Ò‘‰òÛpqŒÓ\Ÿ/×Í5‰òÏ|b¢Q“Èâ£QíLAê)dc_»ŸjPƒ§<Â1œS`”M|c¦i#pè1Iï@ØÅ8Í׊A’ÞÔƒ%ª9Àd ó¤1L˜*“’c Ë´’j»1ïUœŸ,ÅF2°Îx¨ÿŠ¡þ6d‚Ú—Òœ¿ÄßÂO¿jUû-9A>•çjƒøÒHp~”²ñƒVc¸VF%¥nr:ûU±qö[C c{rÄu«bqomä& 7'jüŽYX³¿ÌÃÒ´ Ð¤RHIgÁaWàÑÏîÞBK·-[nëË(âºeŽÚ0Ò6Õ^+bI%Î W'¨…K‚¨ÙVmÿqÛÛ*Xšå5ŸiÄG*NiÐÀd·2ûÑàó=ñDp€È~‚­YØæ[)@ÏÍ–ü héÖ9¹²“nW9?…hØÙÿ¤[ÉŽ­Û¹vDØ8À<Öæ©pb‘zãœV¥üÞ\,ÇjŽ<»9/¦?4¿7=—°ªz(ºd·ÒŸžL¶O§j¯¦æßOk™8gù‰5“3<Ž÷rICX›^yšnìI¬¯, ä“Iwº“`Ý+ò=©ÓƒmÀÝ+ò=¨¸Ì6Ò7éN´ÐnÂn9ÛŽME;~i_禙moÞVäœâ­Êc³U%vœvïWX¥¢ ¨ŒñÖ®;%¸c#óª2Ü<²äuì*”·NïÁÀª2Ü´òœ `Uwýìà{ ˆÍóËŠpÍóËŠ»›‚$´_à·´€ï‚U|sŒÕ¨à|ðÈõ¤ºiçe•ð—ôÇCÿפ¹–I¥óŸUì=¨¸y%1ÎÙŽâ–Þ+[äl²ÿžô¶ðEv„äî§½:b¹ŒœùäT‘€2ÍÈ·¿j’"£.ã!ëÚ¥hËáZn÷99=óÐSF÷Üää÷ö¦å˜?4dÀÇŽ¿57¬‡÷©¸ÌY3L9=)œŠo"¨ÝH]¶ÍU™·6ª“ɹ¶WaO&Ü/Ry5b5ò㹫1¦È‚úRžÇz_aAö¦N„¡$çÚ™ %)³)(ÙéTd*¼ùÕy:€1TäëŽÂ›ùǵ1G5Ôäà÷§”¦¥œyVðÃün¾cŸåRÈ¢8щ†ö5bT$h:ã,j›¸<šŽ ›M]³°w&â@pA =ñW¡±sž@v¶qùUû{'gu'Õ)È¡ ìã$¢ŸPé]@è=Çô¬]bàË:@€Ís¾ ºóî’Ú2J©úÖ³qç\Gmx<ÖÙ-¸ð3Ž{VR['ŽqÍdm,Û®+vØFÚW”Ÿxr¾õ·ÆúYGÎ ÛïÅlÄŠúvÄê:UûØÁæpÀw­‹ÒÖÆ”…*½ëJÙV x‹œµVíÜ ”ï]¨=ÍeÞ³Nó 92©~+>ä´¥Ó9ÞØX¸TŠÓÈ)º8Ô=]¼ ¶K&èÐqéVîö‹S\¢ǵeCyç"U@â²¢¿‚2Y` +5/!PO”@Uv¹.ÜG×§µAu~&“1ÄC5çœùHùè*Òµ‰®®¹~ˆ´èQ`‰înÌ>è§&!ˆÏ1ËvJ奸A<çioº¾ÕZéžDó¦á›î¯µVº/"‰f8-÷EVg*QÉì:ÕQ’p;ÕQótõÅ9ãtÎå#4æd©¥xŠ ‘Å9$0¸‘aþøþ´$F*}E:'xØ21}n>Ò§Ì?÷‡z±æùÃæ?¯­YùÃ,9ꮿ™m|õ¨”w#a³Q)*w£`Õ×a‘‘ycïWde "Œ|‹ßÞ¯3 ìAòŽ‡Þ’G¡@êÙ¤rm¾i‚¦#¿5Ó‚„‡k’ÜŸJ›<ÓûÓóÍ0¶xàsß½4ŸÃšc*9pØ ›”{Ó_-2N@ÈàUFVyqŽŸ¥V|–銪Ù/íRF0›‰4HxfiãAœ¹¾”øSÍ‘W±ëô§ÚÇæNƒ°äÓ/'ÜJêr¤íö\IºgaëŠK™s#‘ÜàS,­^öî8À; üßNôý>ÔÞÞE+0ÝôÏ5&›hnîâLe7e«§ÔØ"¢¯H?…tºó„†ׂ7á]ªê±Æª0wƒøSg¾eDC¢[𨮵r–É‚eÿ mΠDa! rÔÛ;RÙ¸rÊ 3KÓË–¹˜r#=Í2ÆÏ;§~[¬ Á¤pSr9¡¬ O™'Ë“ÈúÖ2¾O“!Xô­]5Å×x¡­-:UT‘—w9SZ6R¨D*Ã89¬<ŽË;€£¦;TóÏ+HÏ+€©d•÷ï‘ÆÑÐRØÅö©~ÒxQÀÖ¬évÂáþÔÇj„Ö§°ƒÍo=¸â¤d;u?¥OzŠ‹µß¯^j[•mvëÖ²Ìa$89R9ƒ:*Êpx=+"d ÍŽ†œ«o›Ï¸R¢C¹›p-Ó(Š+s&Fj­¸ûd¿k¹$Á-ƒÐžÂ™k›§k™ÿÔÂ7cÔö¨í‡Ú®%ÿUð=MC;¼ÒnXýÑè;Uiîf''…_j­3Is)ÛÔð£Ò¶´"8m3p»¥~I=«¤Òôhâ²ÅÀ̲rO¥néÚTqZ(ù؃“VæÓ¢‘[HÅXŸIŠU![ñÈ©æÓb‘x=±\ÍÔ§Ý4móGמ…k•¾µ’Âé£uÊžžõÍÝ[½ËDã+ØúÒchó"=9À¨AÇÌŸ•0¿2¨©c)'Ì>øê)à†äpÕ"•q‘Á=jÔ1ú`çuY‡îúwÍ[‹îúwÍ3æ•Îp{“íI–w9åzš@YØ÷“Un›{†üA?ÌùüV¸ùŸ=úU˜—~jX†È³SD6CžôỘšp ´³~ï›4…Éÿ"“µ³Q029Ç úSÜßJaÛéÍ8#ÝŒœu¥ ÏSA õ5JGuGƒíЍìFj“±Ã rü±ªÃ4£€ãIèÖ¤wû<'3L¿÷Êžj@ÞJc«²ÿß"¥Y<ˆÙG,ËÖ¨ÊÜõÈÅ@Ç#š¬rNHÍuzˆµ´VqûÇùˆô®¿ÃúxµµYfYy?ìŠêô{!kj¬ßëdš«©Ü¼(àÎ×®<ÝCbò`Õ-^p÷¾Zóå­%Œ-xcAÄqªoúú~U—j×Ò éa7Ÿ_jM>Ý®HÿV›s[2:¬26pI>Ø®žB©œà*È Ür&ÁÀ XžC$—²0Ê3Ç©äÿZçü/š×rÈ¡‘ð¸õ=­bøu¢ñÜGp?ŸøÕù´˜OÍQÀãvãC…¾h–Øà ¹.•£;Hb’=&0s,'±4è4H†–F“‰§E¥¢°i·µ_T ¸EÒ´‚*¦Ô@p TÚ Y:œ«ì‘»ŠÀÕ¥Xå*[$Ž9éY:Œ«##5š ð§½dî,y)=k;,çžA¦èqŒ£plµ˜¶Ù*ôØÕKk©Ç³pYcëXsÛMe))ð݈®nêÎk9vȤ ðÝ`\ZËi!Yã<Þ‘¸}ËÚ¢÷¦täUÆ\ ä/ Š¸Ë‘Ž¡x5}—pãžÔ*åXg“Å"þTŠ2‡ßŠjA¾óó0éH‘ mÄäÒ$HqäÔ®¹lcô§°çééOaÍ5ÎâéI!ÉS\ä€)Ž@< Ϧ?3’w`#Öš»ŽsÛŠj’Ù'§JlÌÜÀù†?*G'€ÃéI+€zæ«yfYSUöäñTÈÜÃÎiîÙ [¿§ŸÇŠBsøœT2i0IõôlguUÉcÆ)v4’*.KÖ´SOXãéÁP}È«Íg墳F>µ£öA£Áé[WºŠÃèÔ30àç§jݾÖÚÝJ™p=8­k½ImáPª˜céÅsŽîòü½IË`ö®a™ÞBIÉ'&¹âÎò=IËèô€¿aBœ“÷¾µÕ艦¡NK˜×K¤ª­’íï÷©5™|­:m½\CF½qäi’…ë Ú>†“XŸÉÓ¥þó.*?D#Òcn­#3ŸÏÐS|9‹Hˆÿ…œþxþ‚›¡Ååi‘îKŸÆ´«R¯ÑE Ö|¯”ò8ªºŽE¶å8ÅAw•‡ â¹ûÕîY°:s\¥ÏÍ#³×½s×@»»ß½:ÂiJ„ŽÜÈTÿâ§Ó¤r$F55ƒ±Ú-äqÞ¶ŠEý¦TÚøû½…nùpY¡»1!w°ö­m‘[ƒq"Ät¬KÍ÷÷É…åø°/ZMORR 𢱯êÙ¨Àö­ëU³µXWê~µÔiö«ef/ðò~µÐYÛ­­²Ä½‡5=X©héÒŠ+#XÓË7Ú-Á ü@w¬=sNmÆêÝH'ïY:­“7=@¨£3IoäJC‚8 ØÕ3<ïlby‹ïÚ«™¥–_½k2xšÒAŸõoÐÊ–3ƒ‘ú Ìž3ƒû­ÓÚ´dSÉwùh¿e\g{ Õ¢@ÊÞ#5;F}jBóëQ€=iAÍ riS®hïÖü]izž´Ðs¸÷'ÁßÜÓAïëPLÿ0SŒt ÔR7Í´â¢wË…8#=)È6îÂä»SÔíüTäGœÕyB¹<†È#ëÒ¡—9?W—O?CK zzTb¡< d­´ &ƒëéMÁûßÝ­/X3ÊnæS… >½ëoÃzn÷{©×å ©ë[>ÓÉ-s2ñÑ«zÛˆ"…`{~?‰BÜdžÕc^"4…WŒ±a–lB‡,[ô÷¬E†YÙaC¹‹VG“,åbS“¸þ1´û,R#027SSImömñ¹ûš™­…²´då±ÍkèQyzj–9Øý?¥tŒÇ¦+þ°îþŸÒ¶ô„)`„Ÿ¾wU/] ‰-Õ÷HX“íT|Uv…#·F á²ØíTµ¨Î&¨#`àS´X LÓ0ùW„5'‡­I•î]~UùR£Àw™˜p8SZç­oÖ¤¢Š(¢Œ`æ“4Ç5ZêÅ.#ºž¢³ï´¥›ç„ìsTnôñ/ÏÛ ô¬›ëfeòn ŸtúŠÄ¼¶v)ŽÙ׸¬›ÈYÆÉ~WOÖ Vrøÿ–qôµYY™°NUi37ÍÐSðC`ŒŸjw$àŽzñF2zqJXùG4dg Ö”œ CíÁ þ´i;PSOqL?v ÄBEó ûØëQ|Æþ ëQ…@ÿ7ëMšP,KÎxÍ#¿dçŠl’cNqL*¹Ê®9éQ¾ à`TRX``•#€3ž8¤ëQõjK¶_E‚Û›ÕoMµû]äQs†lŸÂ®i¶¿h¸Ž>ßy«®DTP¨0vQF±F±§ ¼WRˆ#@ `+žÖ.|ÛØÔœ,|þUËë·fâùP.ÕÏk>mâ¡?,}¨ÒÖW¿ŠFʇÜG¿zM]µ8XåCdçÚ—IG7Ñ–ãr“øU[¹6Í!œž5VíöÜHʼn%Ž3UãÉn*ü:ˆ‡BM™yÜâ´ÓQú QÄÄËÊ`uêkCû@C¤D#9Œ*£ilšt÷×ù¤n ‡&ªÉ¤ºirÞÎO˜Fà;óU$ÓdO’îbL„®ƒO“ÍÓíßÕò®—N“ÍÓ­ßÖ1ü«~Õ·ÚÂú þU=ORÑKEQÕI(^3Õ«'Äý0?àUŸ¬ñÀ¬ÝåÔñŸá5›áÓ·TÚHå RÐø¼e=Åkjhû>Øvîq[ZÃÜ­¶Ûd'ß#°­=JIR ±.íÝO¥cÆL¥bŒeÏ{Šçbæ‘bA—cÓ¸÷¬t_5•$“ÆkzD¬jýk¬¶„[Û¤j~µ½b(•ÆIRT”QEQEQEõ·Ú­Ù8 ØÕ]BÉo #hëUo­Ô'hă¡¬ ¤¶:ûW*[çˆ4¬p¬T ╈Š’)Xáx<`gÒ…ãð¤^!ç­#sA¨ç#ËÛL”¸¦J~\tªj9RsœUp?V¾{Ô„¹À%p)û˜pHÅ?'Œãž@S‘Øf˜ØäÔmŒQܾÒêi3ƒúÔh~b}oèv‚T™—çqúWSáë!ªÎÃçeâºmÛʶ0ùÝJÐ’EK;`+Ni’˹À«²J‘¡g8®BYßß2ü뇙ÑîÝþò—Ír.ê׬ǕÝRMy+J¥%(¿tmì)ís'œ7ÛÆÞ*gº“ÎVFÛÆÞ*+˜šY2€¹ÉÎI¨åFs‘óc©'­Cq¹'©«ž²óîüçŽùµhønÏífyc„gêÆ¯xzÑ¥¸ó¤å"ýªÜÕ¹Ó.Ü WA«ãû&ë?óÌŒ*ÚÔ°tÛŒ|”iY]2ØîÑ£‚4›\ÿÏ?ëK§ÿÇ…¿ýsZ·Žç¥\Œž‚¬bš$Vb#ÐÒWÈV•¸mÄ~l%qP_B.-™;ÔWq  e¬7²‘&*â¹£k47âÈqX‚ aŸÌL‚+RÖ{žxÃ~ð5¹a{pä%Ì}z0?ε­.e|$©z°!ˆLf 7°Æêº°B²™Dj÷©Ò–C*  zš}IRRâŠ(ÅRgšLóŠ3ͽhúÕYu+xÃa²ëÆ*¤º•¼@üÙ`qŠï!E'vH㑨êÌðÅ.àƒéÍcßj“Ë=¼p±Œ³©Íg]j2ˆ#·sŒý1Mv[;šÎ9ltªYÈÍyUÈ ”²0PAÀéJçæÐRã ÇÖ—¢þ´¹À¦.r?:oÿ®˜3ŸÖ¡¹Á8Á¯NµÄ—¡úTSxèÞµXüª8ì:Ô$â¡bWåVVŠ†È úÒI•aïRd ð98¤'·ãQ»vªÒ–šR£«¢‘ÈÊ‹ÕÈQøÑ eÛ`êìó®ÙUUUÝ¥wê¡"Žq]°PP8³u›–Š?-,GJÆñÑE£OQYZÝÁUFFZ¹È!–i8B[5ÍÅ’¸U\šÀ·†Idû§$ÖÔ2CoçLÙ=Jâ¶áÑc†Ïí7#µµ•yÒ7#®h™ f"5 ÃÔ Šõbf$Øy_JŽéPáQvn\°ô«> ÙHBíVÞ´|0Béò`y§ù ¹¡`X“ ¹üjMqÊiŽGsRø‰öiR`ýæ Rkm·M“ÍMo˜,`E]Ä ü*x›ìzd]Ì#Q¦Sök8À* b²µ]FDs>÷OJÀÔµK;jÈWüªx¨Ê%Ú­ŒÀ4šÂA$Æy0&¦ðýòBÒý¦S–ÆÚ›E¼ æ}¦C“Ò¶ÅÍ» ¬ª}Á­õ¼¶q•˜s[ <$e\IL`ƒ¸yúÔWKâw.O8õ¨¦XÁÈaš®ç'lkÉïTÎý®]¹\·Í¶>µr%pƒwëZð‡/™ÃcÖ¯G»`Ü9¨//a²LÈÃwe¨/¯à±\ÈFóÑEGsu²åØgÒ³YfH`ˆÊúŠÆoH×jà #+ëY§Y-8Û…Œv§Ï«6AŠäðÍ:ã\—vb}£Ó¥—U|þìã5zÆá®±þÚN=+OKºkèLŽU¶p:Õë+†º‹ÌYÁÅRÕ¤y^D’xè;Õ-fY.u´áÊ3«7z«¨ÊóÞÃf9Vefö¯_Ý-¼I™A =ú ³ªß$p¾•û£ß¥O¨Ý,P¿·ò®rZîdä±Âç¾y®iP´RLüå°¾õ€ŠÍ ÌýXñWìm’äˆä”äûö«ºu˜»s' Z»gj'JB[9¬äm¡€{U9¡šÖFFܸ$UI#šÖF_˜U«k‚í¹Ù˜úúUˆ.ßs;1ǬCpÎrÌjqrÊCn9ì*QtQë}*UŸc‡õ»¸còÔßÚW$ñRýºSÒ«²H²³]äô>•RBìÌnæ= T“s¹kƒ’zsU¥Hó¼{UgD$àUw ┢Ãoæ+O =éZ=‘‚¼“Ð{Ò˜ŠÆœ±8¶!„ÙÙòLnaêOZè’±³†%œ£…ÜF;÷­Èã{KhãYv2j¨ÈŠKÌ2#EU:¥Â‚Zà cÛåUÉuéV­u&d­–ÎG­hZêVóÂwÉÆ«p]Ã4`Hüý+\…â»0¯Ýoœ~5ÎkPµ½ëÄ:}åúÀÕã’+³ ôê?ºøØÈ8Š’L*½3Vî•*<\w¨ú.)½˜Ëg9˜ùºÒÏZBFLšB~SÓ4Œ~SëUž0ä9 c¾*ŽãŽ*»®æÞqP¿ÌÃkezqQ¿^EDýzäU…àí@éM'4ëþÑv±ú‘Ÿ¥O§ÂnnãˆucúU2:áP~5P`·‘B½7–QWõ#å_ˆã ŸÄ ½|v^ùkØæ’ä£8HÈÜÄu4ÙòAm©Œ±õ¡×y œ§Þ¬Y¶–É$xy¸ Üú г…,t™f?y?Oè?­[·‰-4ç‘×ç“üŠƒHÛ,Ëq±1Õ[DD{i§ŸhX¸ûÔJ©µy¥ÆŒ«}s¶&hÂ+c€ƒ¨]Ì-ªóÆÜÕ+»‹¹ð-¤}(g$£ô%»ÞÌK“€½j[hîBÏœm§[].©\G.|²F=EKa{™{r»a]£¢Ÿe{•åÊɑѴ ¹¥°¼º{À#O-s×'“Wte7W3ÞòJ/–¹õïVtÁö‰æ¼9%W`Ï­TÕ§k‹Èm#s­gêrÉs|–ÉÁfÆ=ÍS¾‘®oRÝx,pkMôÄû4Q/_$ûÖĺ2}šýÎXúœÖ¤ºjy1Æ¿Ã×ÜÕÈaHQUTeGZзµŽÝUFìrjÔP$@m8Å2êÔ\ó»i A¨iË|wnÚ@À5嘺çîœpk5´’˜eá‡Þ¿½cÉ£¼C#nõœúiŒ:÷VSÌÄ(1㌑Km¤Ïq’t=H¢:Y²~àõ5dhÎHÍÓß­‚nŽÞø`hížgÂ÷À¡ím-‡ï§w>„ÔsØXZƒæÝ;ŸîÓe´¶€bI‹{Uf‘e ‡ =j‹ºJ<»x0¾§½T.@Rò=MM§iE%OÈNUjþ‘¤²Ê·î­ZÓtâ’ ¦ä(ÈÎ÷7²±UùqíQIr×wr¹ vãښә摈èqøVuÓ+®8^sYW$4Ž1À=k2rÈçƒV¬H&#¯~*Í–Ñ.0 w«–€ cP:·z—UEûtŽÃ!F¾ÙcYêNíü%#ý?úôýE¯‹7L¬tÇá•T’qš¦ãæNN*8QÎ)Ž®>øùi®®1¸pi¬¬ÍÒ‚Ux=øæ~”ƒÁïMbcs»·OzCò·ÍÒ™÷I-PÈW’OOoZˆÁÉS€¤’¨cÜHþçj‡ÓÒ«1à/j’Lª?ˆÒÔÜn`hèqbêIØpŠGãÅlø~/.æK—û±¡Üñ[Z[$’fè£ëPj—õ(Ÿ+š«ª]õ&"ªßÎeÔñ‚«Ý挼 ÷«1[¼ñð§ ‚~•m!y88ÍI¨MQµÐariÚ•ÊKl d:p2M„êÖèeã­V±f{3ˆË®ãêjµ›;Zm÷e†}êVgµÛÒ<óïU¯—Á@p9ª·2`¨ œtª—¾ ¤úV”RÅýþŒÀL:ŽäV¬sCýE³‘>Ꭲ´üè—M&ÄÅQšÕîšÙÈ%d%[Ûžö7“!kåXý*Œ¶,9ÉVS»ðæ¶4dHí_ië 5oøoËK Œï,Õ±¢*¦Ÿ€ˆæªØ¬wzŒ—„Ž#µ3ÜÿœU;†çW’õˆH£r=ÍV²Xî59o2Ч¿­l+«‚QƒjߎT”nÃQ[ Êà”`E->–¡»…§€¢¹ŒŽrµ^þžÙ•ddeù²;Ô7Q4­´Žk=¡œ!ÍËSX¯ÀSºáð=k9Ö`¹2‘Ú­é²;ÚæWÝ´õö­=&vkó>í™äÕÛ Y­CHÙu¨o®Ù”¬d¨öªZ–¥$™ŽU}Gz¯yzç+Àõ¬«džæóqpYª…œ·SeÆÔÏÞoZ϶‚{‰²ãäõ5ÐÛÚÇ ÇÖº+KmÐm›Ö¶ííc‰@àŸjŠúõmÔ†lt¨ïïÖQ0ÌF¦^]ˆÑ”`œŠ­¥iÌù— ûÉ~f_OJ­¦ib8<ÙÛçq¹—Ò¢±±òáß)äòÃÚ±oÔù3ò“ƒ\ýèU¿•Sîæ±n@¬«÷sK$ÏosÆOZgŠhÆÜ‚ 9çx§Jãž ]¹œOv›Ac…Ýǽ]¸¸7HUI,W#×jYD×+…ÎYOéU.æ$¾8$ñJ¡<¹,GªSI×i–{‰ ±ÛM€±$võ¢Ü³pÄã­6s—P;%?0¦È~uÇ­M%Ç–ÃéÎE9¥Ú}»æœÒ@=;ÕyÂÆê±çË?0ÇaQÊ60QÈ<ÔS ŒsŽ´è׿Ï]ÜÓ:š‰¾ó}(tüv¥ŒfNiÐ.dÉ­ˆ?q¦ÇÉ #ýkpœ†™‹’>µ´ƒN…O ù$Ö)Ý-óó ¶>œæ±y{†''“Íd&Zë,sŒþUÑÅ ’ȽŸÆºKi; —è €?/þ½oÂ뤯ӎ+öMË€OûY®vá÷ó“œóXW,\pzšµ´˜ÃèíÇr"kwCƒÌÑä;pI$ØÓ!¥ž9ç™y!†aö‰ô¬[³åHòG?­e]°IH©V#§Ý¬¼¼ !½*dŒÙNäÅ"võ©Q •ÁÈ-Š"¯ß1‹G ‹·svþÖþcðò²® 0ü_Ô?w¢‚ƒ“Œ};Õ >å °º)üXŽå»ÿJÏÒîšÚÂïh;¤PìjžrÐiÓ…3ac¤Õ¹,ž 2AÈ$È]Æ­ÝiÍo¤Ûœ©Ì€uÉ«Ù4tr6Œ·ÔÕ½5NÂUÁ^㸫z¿–Ì2çæ\ò*Þ˜FÄ8+ÜUêØ=*ÿj§w~°ÈЪ“&?JÎÔuAo#Ûª3OLU;«Ñ´!~lu¬»éªƒXW³É *3é­eÝË$™QÜâ´#…¡¶HY¸À'¨Ð½½¼våþ@ œw&¯˜š(’x&¤‚]°ß{¨©l`¶vÚãçì=iöñÄÇk}áȨ¯äDuEÀãSÒ“TbxâL*(Üqêx¥%䫬i€£ùÓ·”EijZ…epˆˆÄ³zSUØ NMfkvæ×dŠÇs’O§5O[¶6iÊÇ{“Œš£«Äm•$Rw75=ŒwY™LŽ$ sƒÖ­[[ÜÉffóI°“ƒ×г Sµ¦òí¼¡'ò¬+F/rÛ‰ÜA=ë„–˜î''®{Ö «¹bìs“Ö®]y¯ c' Àþ•j໸f“î ÅZ¹,Ò.>AN‚`nm® ¹ ãÐzÓàœ˜'còîÇãR[Ì¦æ œü¹…As–l)äUY¹lU§å° X¶FX ¸ÅK+cS@€“éUÑY¤äp½ê0¹ÏðÔJyï¶–E r@¡— “Ò•—p%ºRHËÜð½})$ ýF)²yîqOBN8 Sz~5áO½-ªï,øØ ©­P»:±ÅOd›ÈøŽ+GZÂÇ– )µ§¯;E"B U­ iÚ2±¯EPëYöñˆîUXãdx?–k6Ù2瀫ý*”)²n…yükBVÙ§@Šâ.ƒëZ2mÓ-–6 àî; î+KA™.­_O¹äPŸJ¿¤H·V†ÎnOðWÌ.ºs[°ÜGÊ>«B[ySH–Ûnò£bn*ôпöt°…ÉU4Ý:Dti× Ê©þ#ëTt]*T•$¹R«Ê©þ#ëU4­:Ddy†Ñ xúÖ³¨‘ 8ÊžÕ½$k,eeOjÖeWRÐõ¨a¶’Uò3ÓÇãUmôõ¶rÑÉò“Óýjm J7ç©êçAVfjj ä'‡ŸÆ±5Åm…€”ëYšš´Äq“­R¹ÆcPܳŒý3Y®O Î üê›a§‰Égþuµr™Î=k Ôcܵk] ;V}Ë2:ìlsGZÈÚ9”£cý=k>v(à©Æ*¼cz™Ü—g%¿Õf‘ši vcº¢R\™䟘ÕËY2H™ÇLUë9ļ’=Ät«vòmùÝ2GJ¥­N—r[*ŒÙðªÚõÔw²[*dm,?…UÕg[™-ÕGN¢´­î­â¶(î ç5«io¡áv+F¸ßkðk*ûJ·pn,æ]ÙÝŒõë*ûL¶­e\ƒ»µ›uao!ó`‘wg$VqC$¦$Ë36ÁíÍe"<ÒˆÑw;@¬ô§›Ë^I8­§Ð7Â1.ÉóŠÞ> ÌÛeò­–ÑQ åö>+5íÃϸpZÄhwIž•”Ñn—wJ±“EM· €*m¿.DÁR2ˆ£$äÔnB¦ÐFØ ´ bÊÁˆTO~§Ò‘FQ·_j@2¬î¯ëMc—P2N:Só‚¿Zcœ¾Ò;ri²!‹T,qùÕi«š,Fk„ô‹·ãZZ &k´ôæ5¥¡Äd™HèœÒ_Iö›”ŒÛ˜Tw²5ÅÎ Ï͸óMºÍprf¡.>ß#É÷X•8õÇì\~‡ b¢Ý‰Ø¿FȦy¬mÕ )¦BbŽxâ“y1 œàqSèÖbâv||‘ýïséW4+µÜ3°ù#ê}O¥YѬÄóaû¸ÿSO¾Ÿìà6•“ëÅ2îSlûpP«õÛ©M¿Ê>R éV4Ý>­Ñ\—‘ËžŒ+GLÓ¡»Ðš0Ä»±bsÑ…\°±†çFhÁ$¹-œ÷ª¾ù¯@=Pdÿ*£á¥'SQœ”ŸÊªx}Ó»‘[†õøÛ1Æ<ý+¡kôKö¶fÛšÛ7H·fqš%ŽBvHªÄsÃ.|¹ˆ÷©RXäÎÆÓªJ}QEU-V2Öâ\Ñß…fëo¶YUrÑ~•KS‹t"@2Póô¬ëvVÕ-¾Qøvâ²tæY·ùG#·n*…¡©Çòö5·9Â3t~•Ñ]¯îY¿¸9úVÅÇì:ÖÜ›‘dSò»µÌ^9áÇòéXwlF¦ê±i kfœ µfÊØµ¤“1ãåó«Ðldnœb¬Aµ†ÓÇ5bÔ+:«p3S[€Ì«X÷˜ur™èwƲîa0êÍìÜ~5™,%56Œž?…,¥›TH$RW~”–Ö2ͪ¥¼ •Ýó}4–ösM©ˆäÎÌåªÝÖ™ ¹›ÈD |ÙÆ*{½2oµOöq¶%<œâ§¹Óåóå0±Ž3IáÛ}÷­+r±¯_öIá‹m×2O ùc1黩§ø~ßç’gP8?­I}«IʈpÌ8Ý¢ÿX•^dCÝ=©·ºœŠdT<š€1fÜGG©úÔ“R~_jyçjsr1QÈß” Ž™¨ÜqÀÉô¨ÜqÀɤ‰I]®ª œàsBƒ¸—µ pv¦†'ßu5pIÅC1X÷5¸ª·šÑÒ‰†f$)e >µ­¤±¶·¸˜áX®Ìû“ZúiZË'°À¨ Œùï+gN¾ÃНdÈ]³ËžJ‚Èrí‘“š†a ÿ|šùQîÆ º õÍGpWËØ˜õÅ2bmÙÈ…ZÜðý»ÃfÓ;®;€ô®—Ãví ƒJçýqÞ+{C ³ÞçýaÝT5ßÞêYÅËXS×ô¬ý}]VXc’3ëTuujZÆœð\Š´¡´­Wþ=®Hãû­Ò®ÛçHÕ¼Œÿ£Ü‘·ý–Å[·OÔZs íòÿ²qQh R÷ý‚Ê?ï£þ_ÑíKæì¹›ð¨4j½nÁ±úšf©±¯šh›;ÔìEC­:E溦£ÔÜ ×‘PåE´»;äoŸz†Úf‚Tœ?ÊØb? m´­«†ùN3ùVÕµÂL¿+©=qšé,n–áq¸ÆqšÙµ™f^'Ó57Ö­TôQE# õŒ)V`Š 0z+ {y4ýV9áˆÉSòŽÙ®~KVÒõd¸Š3$[O¶k¡{ HMogOJºÚ˜x\I‘;)pâ®Íª£Ú81¼r27*Ô·áíØ2fVc¿ÔbŠ1û¨Sn­c9mKRŠF#v€?ZÍlßê ˆ>HÀã[7j!³T_ï Væ ‚ÛNŽ4ìãùV¥ØÚ"ŽÌéT^A/1ÈX×wô¬Å“ËV˜ä€oéT·ˆÔÊÜÿJ­¬ÈæÎýyWAŸóøÔzá {iz¼¬ˆ ¨õfß[ÝQÔf¶á¸¶x’ee‡Öý½Å«Ä’£(,Ö¼S@чVpêk]¿ó.c·ð$ ñÍ`ë÷Ë-ÚÛÀÿ»À Aã­ck7ª×i Mò¼E2NCn–6P|ã*XwÅj%²ÙYÁµñóÞ…Ôd’¶´ ŽZ­éÚmšð³Jü•ÍZÓôš-ÖæväVl´xŠ nrÒH¨QBôŽõ˜£äU5àg½4œç'škgïM'ŒÔg' ÇœüÔÎø=i¼çšr¶ÔÀàç­; .)KmZ†~9Àõ ¼ Ô2ñüêG!}ª媣 ÒUËFÌ Œ2C‚åW­[t>^2UëFØïˆ&3µªÕúùz ÏâjŠ5àG?µjøTqµSYS°ª['+"m /?ÃYw)‹PžPqÜã­1Q¤b©àTiJÁGsŠìâQº)àF€ÀWu -½¬hxXÐgð×d G…AÏåYzDjÔnuä؇Ûüâ²4tûf§s¨·+¸¤dÖ^–¿h½¸¾n„íO¥K®Ä%µ(ÉC×Ò¦ñ[E™FZ3Ö¤Öc/Ê£•=jò^Kœ–aýOõ¨|0éòÎ9>¼ÿG¡a’ñÔçtœ~_ýzÁ‚Vb¡³’Çõæ¹Å³Ç8&°VV‘°ÇœŸç[\Ëš|ë}ê]°xÅké³Åš|ûS&Xì9⵬&Ž-<à rpM#0‘Ö[XÖ7<®Þ*5˜™V[XÖ6þ‡Ñ)$B·û5fÏSºyü¹ãSBîsZzv­s4Â9£VBq¼u®ÙjÍ.Éczdu­n1ÅlãÒ´ºŠ(¢¢[˜¥º85\][?™“þ¤óQyðȬs÷ aê÷ÿh$g÷Q÷þñ®oZÔ>Ó(H‡îÓõ¬-NðO(H±„­ÏÈ·ó~ñù9ô­mÃȶó~y=}+KGµA½‡ÎüóI«NHcë‚]¿•7^¸U–ºà—aMÕ'T’(ÏNµÛ$šUÔíÂ2 Õy>“wpãhxþP~µÀ ¥ÜÊïV6ßjðÔlrHüê9mþÕá¨d?zúTw}«C‰ÿŠ5Ž^E‡ËÜHcœV'™" yÁçÒʱìÜqKch÷׋XÉÝô©´ë'½ºX°pA9¥°³’öçaë]]Ž Š «™1‚ÕÖéúl6(0 ®¢ÊÆ;Eá~l`š·W*ÍsÉ÷sž0ã“î’OΩÀÍ+sÔãŽÔ­Èç·ACr9æ«°pØØÊ1‘“×ü*6W ÷Hî*2­»î‘éNbd|8êA摎öÀÇM!;Û·SPNL’È9nÝjNæëÖ¡˜î=zÔ3ŸÞg×¢Î5]zÓ´+ˆ6ç-¼þu¥b˱ž¿6ãZvdDÊO8æ—Rv†lž@¥ÔäyXHØäò‹–eõÉȬþcy„uç¥fÉ-Œf³™·±oZÒÓaY.¬Âƒœ™\ûv­-"ÜM{h tbì}‡"´t¸D—VÜr‘«C_ºò­D(G™)éíZÞ#¼ò­ 2cÓÐVŽ·såÛˆP‚òžžÕvÊmg=6¯5¡§[ [¡Ç!y«v°‹{há¢àÕV›É¸’ÖàþîOºßZ©,¾LÒ[N2’”ýj¼¯±ž GÊÝ gé2ý–=IO${ãpÈVv‰(´MQsþ©w/àÿ­Tô™>Ï §¤\øð¬Ã‚ÖÚç823ʲZÜÅeovOúÆaôÅe5±†ÎÚäõ„©üëX¨ŠÎ(r£ëWÜm´Šr¹­ -’Î~™«6VÅbÉÆSîÕ« B#,@}Þ*ͶY¤Ð1ýãd\Ô³J F§ïœšÐÓ4vfÝqÝVµ4¤ežë!z…õ«ún–ÌÂiòPzÔ»¾·³ˆ³0Èà Ø½¾‚ÎwÊ0i]]ÃkÀ+O«Þ<Ó±¯_JÅÓãmfþI¥È‰xúÖ]’¶§tóH–8ôÏO˜™Pâ0ûõÅG¯NLr$go¨Õ¹/ú;*&ý€}+[KXåÒ!@F @ÛÓ)´ˆ£R0рߕjÙˆåÓÒ0F k>]1 ™2›ÑOÞö¬y´©-îteãÝÔÕŸ&œÑ̹BËŸÒµí­a·¢M¥‡5½gg ²î‰6–šÕ¶¶ŽÜ‹‚G55X©¨¢ŠçÔ`Ï=Mqê>P3ÏS\êŒ(¨æ‘å.âq·§½ æéÖ†GÉ5WÞc¿œÝUÕ¼23ù€Žźó7ïž”ÄÎdb@ãœj’ÎO¢\åÉâ ‡÷’ù™û½ªrųҠcœµC&deTÉÿõÓ0O¹¨ÑKmu5± XüœqƒZ.Bž@Á­7 löÅR¼”¼»G@:Õk© ÊqÐ «w!’REZÞ¸r±ƒµy'Ò£‚ˆ@v¯SéQ[Û´ìHÎÅêksK1-Ü…HXáS?Sœÿ*ßÑ<´¼•ø  [zYŒ\JÜã@¤‰¡«ùŒ?wùG ìi-×ûS\3°Ìq}ÑèJ!_·j¦fXþèô­œŒÖþsøô­î*»hîb+'Ò »·Žâ#¿ª‚Aô¨nbYc$õQšåtù圶NûvÞ|r+‘Óäw–ë'>e»†÷ã"¹Ëc-à'†€çò«’—ÂkÆ^'#èwèjó„— q–‰¿#¸ÿYp%ð²‘÷ãþy­ 4AcìCŒíÀ«Ä‘ÙA3wÆ9ü*äQª[C!9܃'ð©bc!¡8»c¥Ok™ŠÛÆHÇ.ØíRA™‰{rÍW”`äã¹­tPªvãžõ}TúéY•P»œCºÆ…ÜáEêŠY¸°o/þçɃåQßÖ¹Fý¯îŒPð£½b^]5Üæ8¸QÞ´4ý6ÌuÝ!ç&´ô½*aYePÒrjõŽŸHEÜýjkûÈ­mÙ8!G½YÔ¯c´µ‘‹ ÛHP=jkÛ¨í s‘»zçoØ"»Ìe•g¾kš½HHÓ™d`§o­aÝÇ/6ölŸ…oØDm¬A d.â1]„FÏOÞÜa øVÕ¤bÖÏ µKVe¥¤WÖ©å·12†õãúV]¥¤¶ÛÜdÏ®MPŠÒ;»h ›!±¸Ò¾™yhI†f(:Ú‘ôÛëû™“¶;Pl®­#rËÛÚ›ý­we&.rËÀɃY»µ“‘ÀÉÏíIíØ òA8æµ4ûô¾hûµµ§ß¥ôlWªõ­[;´»™zŠ·Vªz(¢¹ñÉÎãÇ©ü+½êµÑÎ|PÎrqߨn9?AP!!IeÚÝ3P¡À'=3P©ùO4ùs!O.y u§¿ÉÇÞÍ>_–<¼H¨ŽÿtŸlTœÐÕW?.O5oN€4Jù~QïW¬¡ i<Ç(šÐ³ˆIe=E4»I¤ayöªåÏðœ`Ô Ä㪳ÈÛ¹¨™†?tõ5>2:ÿZÙ²¶òt7‘Óç?¼9ï[ö–~_‡åšTùÛ2zdv­Ë{aŒÎë†ÁoðªV-ö…ebpAßè}+:Ñ̪ÊIÁ¡ôªVn$B@Û–Åkh¨Í·NAyß ×% ¹ƒU7H#>ù®zLz‡”ÜÁ «Z jŸl³w!ÇåWü<‘í»±™r<ÃÁèqÇô«: ‚âÖUÜ<Öàôÿè§qdd°Â P+J{Uk*?”/ }¬D;z1ä‘O²¶Öû1†<’)Ö°ˆ¢ Üõ¦Ï{däôÚ(¹½ŠØáÏ9éI-ÒCÝOjÇ»¿—P–8bùccÈÅXÚ”ºŒË9TÏçYwÏy †.õ÷«±AoçOÆ:SVíìâÓ­¾Ór0E=ÍX‚Þ;(|ÙºZª÷WÚ¡+f¾TCŒÔfî÷T$Y¯—ñš®nï¿ãÙv§­*è2Ïó]NXâž4 ®ë©‹p)±æ¸\ÜHIô©ì´Hm¤;`~\ÔÖ$6² &`Î* ©l´˜àeys€ÖÏü{¸õEhjû‹ýñ´­^»Á·uèm¬‰Ym¥° ~ãlãëX¥Å½ÞŸ¸ð§ËãëŠÍ"º³à‘°ã¿¸Mt]‡§ô­~ÜV/‰Y<ˆ“vsøVŠ™<¸coÜKV7ˆL{#\ ç&§ÐŒ?f+•~¬1Ö­xyà6ecdçgF1}›÷cüU¥Zµ¡EW=Ó>ÕÈt¹î‚«Ý®NF ¯8ÏNsUî=;Ôq+Pà Ÿ\ö¦FåÏaL@CŒŒ€*+—~PU~½é³0'  6c–à`R³=[½FÇ T¶ì ÒÒ×þ%Rú4„g𱧦ty{î—¥lY&t¦Þ“mPs¶W^F3þ~•˜ÜHëéÅg‰$™­E >uÔ1·Ý,3ôÍ%¼>mÌH~ë0ÏÓ4ZÂ%»…BrkwÄ3,v <É€ô®‹Ä“ˆ´øàVÃH =+g_”-’À­†“Ò²m€·I£‘xP ÷5‡mˆ–To¾T¨÷¬Ër%Cþ°‚¢º-1<½:Ý6í!Á®¯JŒE¦Û¨RÀH5ÐØ ŽÊAŸÊ­UºžŠ:ÑÏnµÏëa£¿2 å”?í/#ôÍsZà1êM*ÿ‡ý¥ä~•‡ªù‘{€ê}Çoʵ¬cEófŒ|³°”îlé𢙦Nþj“Û#üsZ–‘"pD¼cUΪ‘j†ÕÏÈpú…µXãÕ £”íú‹ûB1~mXõƽicŸëZC¯_¡«¿ŽEs÷³Û¹>T;F>µËêw/y"¨ù"m ʰ/&k»· Ê£Ö¯išhÅÃýü`îÖ†‹¥y .e1ö«ºfŸäŸ=ù$qš›YµkË#ÀÕrÙîôÿ.?½½MK¬[µÕ—–½CY±êx)ܽëÍ5 7"ÈïY–¢òÃåEÈ©dÔõ&B‚¦@«jú“¦Å‹ktÎ*y5+ÖL°iÖ6·&æ;‹ÉXà’Í4;S2ùG¹«6nŸxû§.ú*ú ±}jë‰.˜´ìÁ˜ž€zT·6ì6<í™™ƒzjHmšêòqò´‡ŸeëúÓm,ÞæîùBIÿw¯ëE­«Mu„aKŸeÿë×AÓ8í]O°ô­Ü1ÚŠ(¨®›wœ>Ü©¨®„ŸfBv¸\©¨î7ùcl8¬+‰fºÓÕ˜ï‘HF;ÿ×®bâYîì·9.èwœzĸygµGo™Ñ²xíÒ¯èWK-¢GÆP•Çòý+O÷‚Kt…ÝÊâ¯h×"khОƒn>•Ï_«I{*§.db?3\õîæ¾›o-æ¶?3\ýæö½rŸy#ó5Ð%ãÛhÐÈy,{WBº“Úé067?–W@o 6QÉ( çéPX Šô³`Æü®jž–ªºƒû’¾sU´åU»rÿuÉ?­2]Fu×Vm±AéR>§:øƒÈvÄ^fÂ;ûBEÕü†8PÛkyY_” ×@¬®2„0­u!ÆF¥;ˆ +uQAE=Vš>ª¦¬©ÎÁH"E9ÛHÑ+u•@Ž9_ʆ‰[·åTî­Ì Ȭw9fß[‹qæn'sa‰ªw0ù_8l–<š£Iç5JHÄ‹óuíU¤ŒJ„7áU Š!.NWû),N« %'Š}½°PR"ª§¶)ðZ1c%I&ŸolÃähÉÎkZÖ$¾÷î{Ví¢À¥Œžc·Rµ­ .K‡oQÚ¬Uªž »œHÌK»` BB‚Ìp£œ×7ÐtÇ5Æýzçl GR:tÅ×µ!ƒéÅWšDÞK7¯#¯JŠF³íQHÓUF]ר'$·z¾fã#ÜÕbrÜgžy©îT<摎1ºÕë7ܱEüÇÉúÖ£eR?à‰I5«jÁ¶¡û±§5Ÿ7ïc¬òîîôÍRaæIކI8úUùåOïI!oµô«´ê xßêÓ„AúVö‹mö‹ç¾nQ>H‡ùö­­.ßλ’ñ¹UùcΪJàó•Xpx¦ë²xFr2H÷Ïš¬˜¸ áG¾x­(<‹H#a—Dçêzþ¹­}>ßìÖPDÃçDçêy5£i†ÚÇ*¸©êÍMEP;âƒÒƒÒ±ÒÚx®ÂÁÏÌs޵ö+ˆ/hÔÀÌwppk+ìÓG;+ ò™‰&¨ègÉÕŒþ&úþWBQºÐvWp? ÕMê’[çî±ð¨l¶¦­7A!Sø“U,6V»æa¿j½Q©Ç¿îï#ó­¹â4!Cùqí[Q5áÀ*œcÚµ§L»GŽþ•Jb·Ì€®T:çúÕ8‘¢·Ù*’lv=ª¬!¢‰\‚U[i?J¯wœdyWdŒÅÁ÷¨/!w‘¤•JJĸ>õ^æ&f26VN ûÔP¶¡JÑ1hËãZX¤Ô!…d‰ß·­,s_BªÃæBÕ»cÕ  áe‚§®k ±¿ŠêÔ YpAS×5³ov—6¹ ¶B±¬ûye†A0ÜùÈ5”/'T ³ œ÷ª+q* Q $ŠE¸½¶bcmèz†íLŠþúÕ‰Vóö=©‘Þ]@O;ÔÕ¨µ#(ÙyUnŒ*äz°¸_*ê,èGcVRýg]“¦7t4Ød,#=j´R+.AÈÉÅDެ2Fj ð${pŒpäž=Cy’ñ*’7äñõ¨®¹–5Rpù?‘©ãbªÓ¥Y…Øx©ãb¸«ÊÓ1;ŠéW,ãyذ}Š*͸iNAÚ£õ«ê1…É$w5¦Ð’qÔš¶g«bÒÀfˆ³ŸÂ³5V’2ñ€võª³Bá` «’0ONj…‘‚eX˜•“CòíY× ‰INwrQ™?xJs»¥FáäˆGŽsP€Ò*ÇŽsQÒ(LsWgÚ4sžb”f´îqý‚±¯ðH3ùV…Î?²/ðÉÍc¶cmÄw¬S•lšÅ`U²zf·´7Õ‘‘K§F"º/ •¯è?*Þ€ä"þU®s÷GåGZ^´¦¨”¹Œ™`[Ú³¤Žèç~æRØÕQ–c’ÀN)æ×sF3€¼àŠØó÷WœpµÉ\ž±«H»UFsWTì*Èà}¨f ŒíÑFM Ạ$þŒÁQ™º(É®öéïîÞwéÔjá5Ǿ»y›€Nz âïïþòI3…})-¢HºXÔ1¨föi–ñ‚Þƒ©«„î|àŒ Su9…Z-ì*½Â—e* ÉÇãLòši0ƒ'Ò¢xŒ®ŒŸJ…ľe+Ž‚˜êèÛ\#Ö¡•dWÃ1ëZ^RÚ›cîˆÈaøÖ¿…Ž£#ˆƒúV§†CéXŸÖº¼`` êút®—¥QEQEQEQKE”QERº@ÆHïHÃå#Ôbò¬Õ¸t¸k_ãÀ-èMb´óÚ\oá¥YK‘È«6ù·é~U±ü*Æ|©ÙWq©¬¢ónŠŸºMEy.ØŠv$1¦\Í„º[wéL¹— ³¶íÕBVÊ—ÇÞSΨɃ–ÇÞéT&ùƒ^•Hrº’($?…^Й—TŒÙÍ^ÑY…ú¨=sšé8®ÆºnÔQEQEP:ÑEckº²Û£Ù Ëº`ŸLÖ.½«%´rY ÌŒ˜'Ó5‘®j‰njŸëH'ë\ÈRG”ŸRk•ÇaÛ­sAI€9&®GµcÚƒ¸Ï¹©Wt«qà(z“c† 8Ï<Óö·Lpiá[8íQJY’~¡ó»Þ­ØÛM<ñ´iWʿҥ·†yfŒ@*Ù j}V;¶q$¶á ¨ W¡÷©5»kŸ3Î{`€pvtÏ­I¬Áq¼JÖøW½kxvÅ­àiåR²Kж<=bÖ–fI%”äçÒµ4;3mjduÄ’r~•¯Zµ£EQEQEQEQEQEQAöäPÃ#Ž¢‚;ÕvTg']û‘T®âIcÞ«O¹Î6“Uæ°H퇖>pÁÍAs¦$V`F2èÀš†âÉc·YOÒ¹ùÇ™";ž0AÌLw¸fôÅ`NKȺb¥GÚZI8*6ïJ§–fëŒ To¼Ç¯AV¡™¬­VSæÊX¦:ÕÈf6V¾iSæJsíV£›ì–âB>y©*™Ë“÷W“TÀiUœôÕQºUg=2`|÷ä~u«Ó5 ß"ÅôÍIbXjû~ñJ³£îþÕ¶ Ô°ÏÒ¬éާ_|×ZGA]©«ªÆ(¢Š(¢Š(=*;™ÖڕΨîf[kw™¸ *+™VÞ‘Î0+о¹7—"®K á¯n ÝÛËÔ±â¸ûÙ…å󺌳p)Æ ˆÿºŸAQ”Úާ­_–÷=jX” ótè*HÆÑ¹ªh—`É« œe»ô2Àš™GëQ­¼Šÿ+Ç¥YŽiceDl1RÆdˆ…Œà€+p^l# 21 È{×GÒ\Û!* ±©þu¸· 4 J嘌­[’ê8•|ÆØq÷EK=Ô6ëû× {(©ež(—ç`¾Õ _¤¯…V+Ü“Šªš¬RKµc;V']/‘Û §hïVã‘e]ÉœUäpë¹sƒV•ƒŒ®iÔêZ(¢Š(¢Š(¢Š(¢Š(¢Š:S&FÍŽTgŽõÌBHøû™2œu—N±ÛLÌp6‘úSodHlæw8H\S.äXíe,qÁËÆ¡°Ý@WÁ%‡8®gå-»Î1ùî9ì+%Ú7ŸÂ³í£ò×{u54y‘ËàîcÅ=fÎ*d˜œS›’€óŒä yì)çøEL¡Ž$ô©UNG^•J ä{ÓŒ‹‡æ ãñÅH®‘ÈyÜôõuŽO½“ëQË~ê1ÃÎiÓj£|­»ïQ-û(PÁ­B×3Jêò6r@ªÆæiä ÌI=ÍAö‰e‘K¶jôL_}êí»gµ]¸ÇãZv×,%†<B1Áé[V7o$¨‡•#·jÓµž@½A«DÖ[¤¢Š(¢Š(¢Š(¢Š(¢Š(¤a• ßÒŽ¼QÖ°õÛÕ‘þ̇*œ¾=k›ñ ²Ê-¢l¬|¾=k[½?‘ázãÖ³N3Œô¬PJûf²ÁaÇJtE¦S8†0]ýɧ!gF@p‹É÷4ôf‘AÂ/êi±!,8Zb®NÓÚ˜‹ó{U餎7pœ(\ý9­[’D]áNIš·$¨¡‚õ"²ÆK÷Hd±÷5ŸË15© °þÓUþY·ô­ °þÒ#Ö#ý+WíþšËþÁþuÑü×TZèº(¢Š(ªÚز²y‰äp¿Z¯v¶V;u/Ö«êBÎÑå'ž‚¸ÈÃ]\3ÈsÎX× –žV‘Ï$’ƸØÃO;K!ç95håØè½½iç,ÃÐU¬>¦ÉUØŸx޾•*ü«·={Ô£å]£©¥@ n#åóõ§ çqä tc¹ç¯/e&”Ès…ïJ\“…¦ŸÝåG.yfô¤8O•OÌy&áx‹U9OÎv¶}j»œ¿"«Hrß)È©!ny ½=éñ¬ã tøF>g¯XA%ô­µ‚(êIíÚµtë?µýç,I­++qq÷œ&99=jýªÈ÷j€£¤oó2ôÕ©eûNõpÑ¡#p«ö±Ÿ?r°tRFG®kN¯QEQEQEQEQEQEW) #–¸˜þìä¨þù®0 2ËÓ“Zä™¤ïŸÆ£–S;– Î0µFï½³ÓÓÚ¢y<Ö'¦:S·$h"NBüÒ7©§B'Ý^O֞΄N‹ÉúÒF̘®[·±¤SŒœu¦© Ž´¤ ‚B£w#'ÐÓŸ Ç<õ§É mçÖ«BwM“Ñj%äÕt9lÕ­&xáÕ˜ãä` õ«þ•!Ôƒ±À@ÏsW´9R+ÝÌpJœWGÜRäïº`êaºŠf!H,=k¢Šæ93‚ ö©ãbè¡B{Õ891R‚qœbJzR×5â‹–7 n*ƒ${ö®_ÅwE®Ù[*ƒ${×9â[‚Ó¥¸92~µ íŒ(““Xè0¸ïYñ.Ô2'EH¢¦AéNGðç%©x§Η éÇzUY%PHAúÓÂ<ƒ…ùE8Fò„-9Ž3!ÁcÂãµ8eÎ ”åÄq–<±éJˆ|¢Î§¡>´¨Œ³¯ Ó4äFXÉa÷©¾ZÃÐoznÕŒð¸¦aPñŒÑ*ïO˜Œàp)ÙçqäžžÔïs×µZÓmcv™–BHSžÃšÕÒ-måJË×9íZl¸Ä€ïþökjÒ8¢ Q•\ç>¦·"DB¢m_çZ±ªªíTÚ*ÅIN¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Šä¯#’ª~â}ߥpw(ñ° È+ºFBP:U™RFF*.ˆëPr™ÕQ#QJÄÔ¬ m©íïS²€Q{‘šIœ±Ž9§K¨À§JT`Pãln ã#-L“ågŠŽSµAâ¢Aµ‡NõLÔ b<úÔÚnš÷óä¶Èÿ½Z:&öÇbï寯­hiÚ˜¼µGë]–™œ¦@ù猚èí4èl˜º»}Xñ[ÖÖPÚr§äÕðCr¡«ƒr¤0ö5`0?uúS&•-áid "~´ÉæKhY €Ÿ­2i–šV8 ú×,wròÉÉfÜÃò®yšæáærK9ÝÿÖ®:Yæå¥~çÿÕV9-µyb>ojpäàƦÆI¬*”‹·50]‰šœ.Ä«;4‚A±¨,ã¾J…I2gÐÕ¿´M:…Ú8U“4“¢®Þ=ªÏ›$¨£ÒšBnURX÷Ïji ¸($úšiÛ¸$ŽôòÍ/Þ?*Ž3N,däž`f’Ç-ÐSLM8^”‡¥ eUi|ª8_SN‹–n‹ÓëK w7AÓëVty¯$9\.SŸzÓðüÑù×ΧÛ&®èó'™/˜~n1ÏjèqéÓù×Aß®}+cô4´QIEQEQEQEQEQEW'=òlŸ9þõp’Êì“$z×!4®À ?:ŠãR#)QÈrÿ/¥E.½©í=Ü-''vqôbÏa¹ŒÉîjÕ F¸Vn¼Õy÷5Û`zæ™q)2ÇCÍGq#6ÂÐìv'µC•‰5  I¦3¢m´„æ0´Üæ0¾õÑéhcªäýk¥Ð€RŽ‹]”„tÍJFó£¥3W–V¸xØ’ð)ºƒ¹™œ`ñSèØ…IË9ö«Ú ìð¤üÊNïjµ¥‘ö5\äƒU¼O ]7alaÅWñT€iê™™úzÕOI·O35sð|¨ûÇ¿¥s Ó©¬¸@SW-ãÀûŸz±~µnð2i—8ʧEî)³Hz/ALžBNÑ÷j4R–éH þtЧ¯­NÆ™ÝÒ¤•r[¥H7(Îìv§B¥‰Ù÷{|H_ tõ©#MÝ:zÓÊS;GSO)»åLíéÅ7p¼Q0 ØlãÚ£*AÁ‚˜PçÍHÊD@É(?wS5¼‹y#`§¦HÑ8@]Ú¨,rKª$HHÜF~•¤o>¦‘!  úUKTyueDÈSŒâ»`0ôÍvØÇÏj먢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¹¨Z Tgƒé\g6ëW¡Ó¢ñ#{ô¥i¦Ãn>`$SÐUØ,¢„À1÷¤Ôâó-‹ ¨23Wˆ½±“vÕŒgŒæ™¨Çº ùÀNÕÍØ>ív0v×=£¾u¤¹ZÂÒ¤Y×+ùW`8×Ö»l溎y¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+37/R5ÁÇNâ¸ï3LTq!^ 1"™ôÏ­Xe+¿}jvRˆ®z°ÊQ»Š|Že9QKÑ\w¨§X’-ÐÄsÈý*IW(§ÐSå1)ôªÆ¯$BFÚ¥†OµGnŠóF%m¨X}©–¨­qóòî»$Û±BýÞÞâ»ÈöyjSqǸ®Á6ì~î+7VLÉk!ìXÄð¬y~{IbTþ@Õ Q?}nçý Jf!mC88*@5&uà€PóøÔzsæíø8*(ñ“Ý$OË''ˆìdºX!–LÂrÉî’ï/ŒúeÊFi÷¬c¤Ü%±—a8<ûVYÓgŽ-øÏ<Ó*|¤Þõª ÁÈ=ê5UŒ`’ "y˜‰Œ‡¹ôúRî@q.ÇÒ”:tˆîz¹m¤\Ý`¹1©ûÄŽjí–qrÀÈýâE[µÓ%œƒ&PuÉ­ëK,×lKówcÞº;K(,Ð,IÎ9cÞ¶­íb¶P#_›±ïVjÅMIEQECy žÝ‘O9«ê´ö®ˆ~lƒPÝÆe€ªõ5Ìi–ŽºâÊÅ«˜ÑmkJ?º$ŸÃŠç´‹G]_~LŸËŠëk¯®žŠ(¢Š(¢Š(ôýhî1KE”QEQÏ|~ ÷ÇáG8ç…Q\‹D8û¦¸¾ëÛÇêH‚*à“OŒ.pzÔ‘èi%q3ùJ0ƒ§õ¥‘¼ÆØ: W}ìtÇ b Ùx¦É‚¸ô¦Ê.=*I¥ÄA†+þïh§K'ɰTv}§PŽ6ÿVMI§[ ­B8ÛýXl“ëíNÓíüûõS÷É®¸ mèvª¨U`WVP¸ªº‚††2z+óùU-^0öñÑ_ŸÊªß h“=JÏILp¤üû[¬»Y¼JÜÍ´ã¶j”2¯"ÎâPãó­²qô5ÑŸÒµûQœõàŒA£àâ±.4™Ü¤áCò+çÃÏ4„Ç0E'<ŠÈŸEiIÛ PNjæ¥[Ø ¨ó$îäUý;H·°\€$—»‘W,tØ,×*?v5|š¿š¹šJ)(¢Š(¢Š(£­h¨Õí®É#ÅWŠÍbº’àc/íPÅn±ÎòޝS÷«5QEQøÑƒëŸlQƒžNG¥QFè(Àì(À¢Š)h¢’Š)h¢¸•f†_/~px¯?å®sƒ\R±F*O©C– ç®}éàç æ¤ Ÿº9©v•Ž: šy\`‘ÍHiÜk¸d8'=®™QŽ´H¹oz–=.öaçØ¿íqÇ­XM&öHüâ…W#¯zÔ©¦ÝH¢]…WÐÕ‹E’èüšžÄ@#†Á5jÅGæäÖóH©wl fºf•#„<µqÖ·Õ3¶)ŠÑ]ÀÆ6§¡¦±ŠòÕŒDH¬1ëM`³ÂvÊFF=k ¸-æ 2·O~ÕÏ–Ûq—á•øÚ²w~ûspCV¥—™±¼×,Çߥniìï i\»ç¿AZvŒí]‰nõb­TôQEQEQEQEQEQEQEðsíH'‚}(È<3E-QEQEQEQE-RQEQ\UÆ™w ­Hƒ\5Îw æ!ùOZâæ²ºŠNÕ=jhœ\®Õ^§Ö„*HÂáGSïV#*HÀÀO½>7Y¦ƒ°v§DÊò€AØ)Ñ•–M¼í³¦Álì[jïÒ·´‹kYï—rv­}>Öùð ^Æ®_Ê"´vn2*ö«7“dÇ¡< · ŽÙ»Åa±Ù99.ÜŠæó·Éçï5c†ý¶­Y–XäòÕ È3ÀÎ m]‰ùH™r¤ ãŠÒ¸Þ¹ˆ‚ÊFTþ¦ÝÉ oÈTù‡¯jÄÓ¯æ¶_.96áQÒ³tûÙ"M€Œ†8®j±H×1¶GÕÍeíˆÁA,€ð1ÍM©+ý§8ÆTL°¸’ÒíVy‰”œÞ—G»{[²—m„©?5?M¹xçdœáÈÍn«+¨u9SÒº$e‘C¡È=­€À€Tç4´´QEQEQEQEQEQERÑGáIEQEQKE”QEQEQE-Uwš­åu"@ †#õªï,ÒË"A5 ¦ rJ°ÁŠÈ–ØžLlÈàqhS3£±çµUÇ–¥ö¥‚Ây匢žäSm´Û™_‹ž¤R[ÙLîÆTg­kÃj‘óã–­û[­cï÷a[ö©›¹ª rÉmœy²`šÏñ+åm  ƒ$˜'Ú©ëMŸ³Â§æwý)·ÖËöt* G㊂úÌ%²:ûf£º¶ l½AëïZ6óƒh%s€‹ó~³krÁgsÂ/ÏøVœl%=yü+—´bÒHä nÞO¹5Ç[Ò¼Ÿíú×1lCHì:nþµ´ZK˜U°6ýÁøVÜ%Ô !Q´ €çÒµäw¸dÀ Y÷ê^ ê§5™z¤Æ¸5Bô¿ºqZZ5Îø<¶è:VÞƒvdƒÉcÓîÖ®—qæ@ºŠÒ÷­W¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¢Š(¢Š(¢°ü52xº’ ŸÃŠç¼-*•–&$Ícè2«ÆÑžrs[ƒ ÐôÐî…AZà*ôP)r}irisIAéEekˆF~p øÖˆˆ ËŒ°üë/XPZ-ƒæ^j[É<ëkR¿ÆÁÿOþ½KªJ²ÚY˜Ç ÁÿOþ½IzÁâ·Ø8'púb«Ìãì’CÛ~qíTç›þ%ïn§‚ù?J¯4¿è{ò*„(©/'‚yŸA_çû§ƒT`Œ+`ð æ¯+OqXÚJH¨Ò© ûŠÞS¹AìGå]ÀQÒ¶G ZZ(¢Š¯z@…Xÿx*§©¶èdzåUïp£U)w*«¨ÉSœzŠÍ˜”d©QU%$maü'Ÿ¥2hœ·™!Ýž„v¨®c‘¤ß!Ýž„v¨¦ÙƒIóÞÔËB!’X‡\皎ЈžXÀÉ4Ëb#gÐæ­ÊâRpËÛÔUä-¾v~eÇÒ­©(åó‚*Åá2Y³/qϵ]Ô‰“Or‡¨çÚ§½ËÚ§Vå²É •9qÏÖ¹«˜9a×Þ°î`¡—獵єYÉËÆ*þ„¡¡g K¡ÁwG aÝœpEmd,lê@É­âʳÆÚ3çZÄ…Œ²ö§!Ü ã§«nUlc"”Œã­---QEQEQEQEQEQEQEQEQE-RQE-V&'“ww ¶PK‘ŸCÒ°4y|BêoÝù¤¦N+KsÌð†ùD¬+k¶kx2+cµ´QF3Á¢±u­Q"ž(†ÚrþÕƒ¯jh“ÅÁNç>•«jQÅq(AÚ~jŸ ª²Ÿ”€TÓƒ—¡>ì¨aЊ}²,Ð0`w!<RÙ·V…NKÆN1éK"xN~òd~uZÒØ®¨ûó—V^}ºU]>Ñ—T’9ËFG=ˆÆ* Kr/ä]óâ­ä©*Ǒ֭‘Ù_ªýáV9V õz¥¶>`’&èj{&¤¶ÏøT–çÌG…ºö¬ØRD$l_”“XñÇ$lÃh%N}Ž+=#e$’ Ô´–:†Ð¹YÎÐ;nïL·2Y_€Ë1ǵG=¥îÜ|²ôúÖìëk§ÈìîÖÔ.>ɦJÌ¡Lœ(´/§ú{±Âïû U=‹éÖÌÝLjOåW´ö-§[1ï*·lK[DǺ/ò©êz’Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢šî‘Œ»QÍ:— »ýªy&°K¡½EW†I¬&Q 7µl­Ô1ÜÅ0rœ=+b+¸¢½ŠMÇi8ltÁéZÉp‰q„œ†ÅlÈèy·ÁdtìkTr2h#pǯŒ¡”©èF)Ü úñY„m,‡’ ®}ã+#Fy*všË# G\@§jŒŒÇòæ”e£ŒÊ.ÌæŽJ¨'•jT_˜Ðõ©cOœèx8©Ã=;×1}¹%Xå!;qíšçî–æ8¤9H[hÓ5ƒpÌ·ðDü¬/·Ù®ÛŒ p1Åw|`c§`+¯ô#Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(bÄ` â‘ÙQKzÒ3’8¬K·kÉÊ+áSè+˜½™ïîˆÜBg¬K©îb¹!sO··I—…Š/½žÕ=ªJÌI \±=*[KtrıÇÔÖ¬QG‰¯µoCP X(V¬q¤J5 1OëO§QEŒŠèUÆå4ÖEt*Ã*zƒÞ‘”0Ãr=èDD\"=¡#Š Ѝ£ ª°ªÚ’^Ú²2å”eqÖªj¶QÞÚ:²åÔeqUµ+D¼¶eeù‡"²!^[ÇLÍaE ù{wˆ¬Ô…B9^Õ±§Neƒa2pAô­í.àÏm†ÈtàƒéZ¶2™aù¾òðEZÆ \«Ç5Ÿp¡'‘˜í^¤Ö=ìa.¦fùFwgëY÷i |£9ÍW|„ê™Ú[p8QÎW$nÞµ=ncÆò}…<\ÇŒe‹vÀ§ ×Mdëp!E¼/ŸÁR>î+?Y6Åx¤<”ÿ+7Y…P%Ê’<ÞvŸjÝÑæ2é°oÞmçé]&9ŸNƒs~ð'"·ôé¼ë8‹Ÿ`Í]«µfŠ(¢Š(¢Š(¢ÖŒÑŽih¢’Š(¢Š(¢Š(¥¢Š†æS¨O¼ç«^ÎaV?¾çІæBˆ~óW?qu9¸–NNÀŸJæn.î<ù\–ùNÒk k™ÌÒ?<3V`Œ±P£’9ÍMmfÀêG$ÔÐ'8ù4·w0Û©·„‡-þ³Ðš[ÛÈáCmÝž\öcKwv‘(‚}}3[uÔVåQEQEQEQMdGûÈê)n~xÕ¾¢šÑ£}ä¨k›/:Ù]˜)5¬IýŸaç[F¨å‚“TuYM•™–‹`ý*-#WŽâ8ᔑ)“QéÔwLÄHA;©ºf«Â,rH]¼ˆK’x;Õ­RÜO¶xw«Ñy¨ 8½Q‚܉£…ÏîØ“ƒYvv宣ŠSò9<{b©[þu‰ÏÊI¨bxíf’Ý—k#àn£ô¨Sm¬ÒÛ²á‘ÈÚ¢ˆ¬.ñ8Ã+uö¨µ»Wt‚NJ…+Æ“[·y!·›%“a­G«Û<±Ã&w.ÞÕ‡&í ø)€*? Ü8ÔÕÎÖR¦xzáþØÑ»q·WTz×\k£¤¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŒgŠ*;ˆŒ†2:£æ¡¹„Êbu꺣–/0ÆËÕMeÜ¢5ì¦1¹ËÜÖìhú„Æ/š0r@îk&â4k¹<¾cžµZYœ‘ã-Ôú §,îÆœÖªË3`ªŽ RÆ÷ÚŠYˆ95UWs¼·­VÛ¹Ž95×Ww]mQEQEQEQMi:œŸJŽKˆâᛟAÖ˜ò*u5VõRîÝ¡h÷g‘“Ҩꗶ툜ò 5ZóeÜ L瑚åa‰à™Ÿ¦Ã€? äÕ7fÎݧ¥sFðJÌÜ êtÉΚ²–ÜN@®·J‘î´€ÌÅÝ³×Øñ]=ƒ›9Xœ³/ :¢< lýqUl:º†ë`~¸¨mo†€Uµ‚¶÷¹uÂL¸ÏûU_] òÌ>IWï´* Wl7gxÂÊ:ûÖ–—,#Wo3vpO¥kiÿĶ%ù€ä‚yÅhX'úa›p ò}+˜žÞ[[‹™cʘ$H÷éú å§·’Î{‰#È”þµs²ÂösÏ2<™p1ß½uvSý¦Ò)OV7Ö» )ÅÍœSweÁú×Om/Ÿl’â5>?*›Žý*Jjº>v8luÁéMIRL˜Ý\JEtpJ08ëŠZu-QEQEQEQERÑEP:ÖTZ‹¾²mÃ~è1L{ÿÖ¬k}VIuÓl­ûœ”QîÿZ³aÔM[ìàâ1•Ǹ©® Z@Un<šuþË b±°ÞÝxõ§Ýíµ€…#qÖ$îÇ uc\ôŒÄŸRkW$‘ëKå°E¿ï58£/=Ú±•Wêk¨®ÚºŠ(¢—ëE`ÑŠZ1F=©*)$þ íU§¸çdx÷5 ²‘Âc>µ À9ç>µL•ä’}êW©9¢Ü¤—!'^iöJ’ÜîRŽ´ëeW”•ƹýhlÔÝ¡9®wZA©4`|»³X°Ù~è½2M^Яà·ÓÙ&m»ö­_j[é¥%|29â´ô;È£Ó‚»`©5gLRn&»|€çjdcÜþµcGšâîPTHß&G\òZ±§ 4³·õ‰),Ñ/¸mªþ%–)­£Œrû¸5[_hå·Dþ-ÃmXÐMÇØöÌ0«ÂÖ­øy® Ž&Q÷ ëVtfœÚ(à}Ú›R$Óî@n]߈©µ{tm6ì²îϸ5&¥ ɧÜ1¹wgÜU? 1û‘»}ÖÏÒ©ø^\XIœl9ü*¯‡äʼnG<¡ý)u;Ù'ÿGµ'“‚j=SP’ëýÐáIÁ#½%õÜ—¹·áIÁ"´íâX!HÔ´~µ³kÛ[$(0øÖœ1¬0¬j0üêJ–ŸEQEQEQEQEQE(âŒàgÒŒãšåõ-/–HÎdR­\uéû&¢³F~t!«™¹o²ß¬¨~e šÒ¿-4)2®Q€|ÖŽ®$‘`3 àýEhj˜Ê¬i¦_11Æ=kä×¶+I@‘}ªÔŽZÊ&S€ìHάLÇì±›J³3³Äz®’»*éiÄq4ÑA4Ùb¤nˆ ¦ÈÂ8ÙÛ ÖN¬™® N3’vý+#LÖ…ÅÇ”ýòGáYÚ~¨·˜Û¨ÉEu;ÙåvŒá98¬ñ¬]Í+²p™ÏëT“T¸•™”|€çõ­[[Ó=£‰kRßQ7{î;]G5£çfK0Hòp;𝿼ƒä‰¨÷³ýßΛ†y<±.Op½©¢7šAË’z…¦„i(|ŸAW‘b³·bxUbk]->щáTd“WÂ¥¥¹'€£$×2ë-õËÞeU •P{×+$r^Í%á!P¹z×9$R]L÷$€¥ˆÔÞ`/f·p8Ï=8â­xYÇÚå·‘Cn]Ã=ˆ«*eš»â¶õ §¢ñ[³¬1«ôíZ÷î#EaN+:ÎÍïo<û…Ê¿ÞoSTtÛ#{vnn÷1œ*ŸâoZ¥ejnî>Ñ2þé8A[c€1Ð ÝÆP ¯ÀÛ ¦L¥á‘VÔm5´±¦7:‘Í2áZH$Uþ!Šç…•üs40ÄÈ%?3çŒW3†¡Ín‘2,§æqÓ…¥ÚJ`HÊ«ž[¶+vÎÎ;HB–êÄú×Cea¤*€eú“ï[6Ö©Ç=I«j§¤¢Š(¢Š(¢Š(¢ŠZ(¨^uVÀ>¹¨%»HÛn>½…DóªMàŸ“ó¦5òŸ“ó¤7 sòþuNëPƒs{Vuö©U0xíÚ©Ýß ¼ý+"ãý"|*e¤8'Ò±eæà€2\óY2´OµW%5°Û-¬[ Â{Vüæ,VÞi1òuU±Ò¶f1Çj!wà/äkš»JØ9QÓÞ¹iÆ€<Á®nåzpr ñVî +Àp‘…=Ì›ÈÛÑTS\;1Êô]YÂŒ–Åwª ±À÷®±™GÞ8®ZÕ|ÒlíbÜw®wZÕLù´·,pqXš®¤dÿE€nfêE®”tEîæçøµAo·JEÞ›®¥Îû¢¢„&›o]×vô$Ÿi;a‘7Ÿ˜màæ«$Rý ……ÆóÊ•àæ£ÎeXUÏ#µ<0I£öBK+Ç¿bÞ cÔÐåþVü{ÔÐE"]=±Éàà~9«qÇpÊThÉ8éœ{ÔñCrq ÆèXã§Oz#”VRxÉ+JÞÞ;h‚F£=Ïs[––‘ÚD5Ç-ÜšÓ‚ äŽIïUµq$¶Æ$+›éÞªk¢Ym|¨—*Çæªú¨‘áØ çé\ýà•¦ Ügӊ殼Ã1Q‘Ž‚°.†]‹‘´v¢7ûí´È~lÿLRÚÌl5%SÓ¾‡­Ik/ØõŸûà [ú¬fF‡¼@äãëšèu˜ÞI! f/o®kkQBÏPcüj{,bP?¿Èü*Η·ÉùèÜTÖX0˜ñV*åX¢Š)rhÍ-%”QEQC2ªîc·ÞšÌ¨2çhÎ) ¼¶)zôö9©ÚÎáT¼¯Kާ­HÖÓºGHÆ?Kìâ¸n†W“»¡©tÈl¢¹Y Êåz†àTš|vÑÎϯ\ÕÍN8d†I‹oqóqRkÄÞd÷‘ÈçŒSõ4Œ¬¸6:`×?"—„¶0Iâ°XBqÉÙöe±o›iÇ>õF-6?263‰-Iä©ÅVK]KJ$ƒwn›ˆÅoj“,eö1åà~õ¡EÓÔg—95šä&ЧÃùVGoESÎ¥gqöð ÷þ•då¦YÐñïV‘ÚdÆä<Z°œ\,ªpËúÖš_FWæRuQÞ·T…£ùÔ‡ÃZ‹{';¿»GÚ˜aBsM7îÎ6 UýM7íD‘…Âû÷§ÚC&WþZ¶ò= Ia p‰Z#þ±÷‘õ§ÚB‘«„þ7']ÙÅvJ8_Ö–öÂ+âžhåZK«HîŠÇËS€B€Yj…Q€X”(¥¢Š(¢Š(¢Šl²,q—~‚£¸™`‰¤zlÒ£ÞÝ+®ešPîpGã\Ì—rÜN%sÔcð¬GºyeÞOS¬ “Q™äq‹PxûÄTÚm¤š”ÆY~[e=?¼E>Ê /eg~ À«Jòò NìdVÕåí¾ÎÑ Ҹ¹†Î6£Yz›s}=ìÈÁpp[ 9¬Ku5õ°P¿+7@k;Fó..¥»˜0P¿!oJÛYQ󃻕¶·P¿!·}+XL„œ6k[º XÎCg$u®^¼€±Ÿ—Ö±µ›­É„>µ‹$äÚFаbXþ±šf «$šÉ’á’(ö’­¸–5i§“PT3> ²óO¨\ —|*Áš}Fà}â¶ì´ÄAºQ“é[ÚnŒ¨7ÎGA[hEÝ'Zn«¬G`¦8ÆùqÀŸ«ë1؃Kº\`c §jz¤vCÊOšL`Ú°­ínµ;Çi™†dnœzVµ½Î§u,“1À¤'Ò±`†ëQ¹’I˜ª–>Õ¢ºE»/ú%ÓÆÝÃt5u4ÛYÆÛk—‰û‡8éWSO†EÛmpñ·pǃQ¶Ÿˆß4¾lÇ ª´öpÙðÒ $>‡5^[8íygó%>•šS€•=*¸y·$TK#¶]Àv¯ÿÙÿØÿÀððÿÚ ?“O¹rG$™ºìoöMA¤]}ŠùwçËÝ·±§i—&Öè 3±þCìku$Y|lz×R °ÊTŽ+   A¦Ê›¶œŸ”“MeÜ0i9é\ljcH®FTqœƒ\Ö½jðK¸ÊÝí\öµnb}Ì2qXŠJ°aۚʷ`“#ž€óY1|²#ôÁý+SD¸ß©ì’M‰"'Ûµt:UѸ¿9;QâßµoiW¦æð©;QâÉëŠëãU'1œâ¶ÀǶ€M¸;asÛi}j+–+ ÆÜciä$Î íÆ+•ŽY#»Ë…U Œ¹Ýÿ0Úþ¥s…npÆ*eVk¦ó2AçÊ”026GÞõ¢6CŸ\×E Šê¦2¤8®–Æu!R¤Ç«~ÞUuR¸ ŽÕ5]ÍXíHÐ}ºÑ@¬=oHyä{¸ØoÇ+ô¬½[M7.gŒÀsô™©iÍ4†â<ôúVtÅ€‰D-¶!‚£õ5Rá”Z¬{X…T38*ùoµGvµ¹¥Ý‹Esò®po'{M=¤lØQÙq֮سÉlÂŽÃ5¢¹žý«Dgãð«kœsKE-QEQE´QEQEQEQEQE-RQEuš¥ö€Á‡±®Râ6’C \g¨÷í\üñobáqžÞõ%Ô1´QE´³ füMnG{I tVoƵRâ8„jÉŸÇŠÓê>µ|TÇš¶?Lf¹? ‹T'~ï1CýÚÅÖ Ã)$îi0N{ ÆÔÕ!É;™È''‘ÿÖ¬ÉâÛ!á†kp†L ¼VMÂçgã½M¥Û‰¯‘’£p_ïÚ´tˆíäœ1%8_SW4¨`–åX–2F …÷Î+¥¾iôÛ '‡̈? lÞI%½·˜€ßÐö­›©$·€HŠ nèitíMuCcc(ùÁ -oò5;v7ñ)è(µ»[¸ƒÚÝ ž‚«kñ,qÅsô>•Ÿ®@#D”( xl:©«Æ#D•@Úx8ªÉ&TpBô¬pÓŽ{{V`‚GQV-üÈ•w0;ÓínÖUd¨ ‘íR[Nöò+g*$VÄ3%Ì+,\†ã¯Jë ™.!I¢9F»WC‰áÙc<²éSéÚ“éî@ác’§·Ò¤±¿k'#¢'•ô­‹]JÞè`>Æ#¡®†ÓQ¶¼c}®„õ­ËkØ.‡ÈÜúqýÙHcW²@úûÔ“ÆÅ6Dv±è[‘N•I]‰ÄpO š(ÄK·©<“E½ºÀ›rYÞcÞ "$#©=M¡‡~=)î™ù‡ )Ì£¨ŠPÄä`ZUmÝzŽ´ŠIúÒÓ©ÔQE-RQEQKEQEQEQEQEQEVgÛ#bÌÈvØæ²Îôä© ¢©‚ Ò³à’HçšÙ#-óü£··éUbÙasš­³x´ã›ìc˸Æsž§Ò´b‘lÔDG|ÕÄu·P€ZÊ×lÔ:^ >\£ =j¥®Û+D.8nÕKY¶ ›Ž§Ö¬ià}•SÚ°Ôv¬ÄèíÅZ1’¸ùHô4ò¬SÊ8"±æÓÞ Yã»a¸Ò…ßo ’3íMU{y‘}ÓÈÅhÛ^CulVáÂ>퀑»>º[Èï-•”H~Sï[¶×1ÝÛ‚Ì¡ØméVô‹I¬áh¥”H™Êà`€É«PFÑGµŸpíÇJ±oa]÷žÜb®M OE \céK<)qÄà2¸ÇÒ–h–xš7«ý«™.>Îç ù½ë’•<¹'ûÀ~µÎ8Û)ˆÿ À«wvÆEÞ úÓ%ˆ©çŽôÉ¡+ùVtQ3½1œçÖ¢\ŒH#¸¨2ž hÚê7l#Ÿ÷ÑÏÌ+VÇZžß qûØý{ŠÔ³Õe„„œoNÌ:ŠÜÖXáʞk †XçˆKÊšØÖXáùM->MuÉsÓ8¨Ý~pëÔuÞ¦²üÁ‡åJ¤€4åpÜ`çЊPÙìA§S©i(¢‘[vp1Žôw£94´QEQEQEQKE”QKEQEg½«G1dÉRrsÞ te9QšŒ©SžÔôG,’lS‘Õj(“3éQ®Õf$ÍgjrɃ#±Ø¼j½ë´€0s÷j½Ó(¿Ü©¬íöZܰÞzÔÕˆÌ3@ö“0ÉpzŸz”lž·•°Ç֫؆ä‚QÊžý뚸ín G ä{ŽÕƒ,oσ•5xØVbbE"N#Òœœœ1*=i2ªT€ œðzÒ²{JVRƒiçñÞ±om¤APíVe*}jkd¹‰KmWp?Z[mÂá~Õ.¼ús]R §nzŽ:WYÓŽ¼WKßi%“Ë‚i’ɲ<íž4ÙbçôÌë1È÷/ÙÈV‰â¹ýfÚc+\°¤ÄV©Æc0‡å?3ëV,nä%|ÍÒ!oj£óÁ9?J€d '-ïž”ëÛUeySå=Ç¥5ØíLxð¹zÓmÙeµRãå'òÅ:ECt"е¦ÝæH‰Ê9ÇãÚ¯hw¦¥…É7þéíW4›¢“,,~Wþ}«c¡®ŒÛ#“©¤¤¥¢ŠJ(¨®®Ú–CµAä÷¦O"Ãvè´Ù¤X³jeÌWQ„’:çŠmµÌS©1žr:S .rä{0«ù©rBÒ¥AÏÒŠ(¢Š)h¢Š(¢Š(¢ŠJ(¥¥¢šÈ¯éHT´‘ZÎki6LC+p¯ŽxçBáIl©è}*¬ŠÑç ô5d·DM´¨l¯꺳½À,ÀlŠ 4™‘€ÇN*j-ï·!,Žp=³M`LùÆri6þûw^jÕä¹îUéÏQSê6iyh ²ùÈ2¼óJuý¼sÀ aæ¨Ê‚qÅGÂx 1ÐóÐ×:$œXê8=zÔÊù;px 9ª°Èì})èÇ•nEV¹EdFVç΀ñz8?­/˜˜?Ä?l“ÁÉÆ+³=~•Ó7ZϽ»H"Yg-³8j¤² êÇî©ÇZiUX3Œ¨8zÔÈËwlce*\t=…M…š2ޏ 0A©ÆQ† XVq´W²ÚœœW-2yÍnz)Å`:e’ ð56£rÍ"§8À8“Û®qQHÌFsÓéIgjí{óȧL „Š|‹¼"žMNÐù3¬+×z¯¹¢ØÞD‹ÔºþÒÛ£}®%’Ñõ­ÃÔ×`zÿZéO_RRQEQAàU]E¶oRÁø8íïQσ dŒçQÎ7DF3ŸÒ¹·žæ'I¢ÂÉ*Áz¯á\ãLö÷'=88¬W‘ภ¤’¼zVŽ“¬d¬WfîAÇjг¾ñynNAíW-o@d Ø 8í[ ‚ ô"µÁ ô"´óïÞŠ)(¢Š(¢’Š(¢ŠZ(¢Š)(¢šêt÷¦º#4Œ¡¬‹èfóˆ< «⬛ËwÎþGfõ¬û˜™[,>žõ-‰+K–+“•$Tvק˘ ðqšde-ŽÆ–8^÷ÍwR’¤„"“Æ1V$·Kø·BûfN{ÔÆ¼Œ²ü’µPޱ˜¤  c{f±'†KYLs¡RO ØÖT¶òZJUÓ‚s¸w5uóÊ.z½E ®rBŒŽô¡\Žõ¤™RxþSµú0#½1Õd\ÐÓCŒc ;U¿3ívf2Hv_A®š ‘>ÿOÔu­Èå󭟘à¯zsZA*ªÈ»£AòƒÒ§ŠØ22zԱƸ€8éžÕ:”-·Ž£Ò¤àñÅIÁ=«_Üj×,Ãï`×-¬©1ÆÙ®wSÌwó}ìU€ÂP 0rj¢ÉœØÕu“'žÕ:HªHà·`*A(Ï©5 ˜~4–ϾWÝïZ»£Éoý ¦SƒŒ&znÿõU½2XEê—à‘„>õ¦Ä*–f =MtŒB‚ÌTÜÖÛA–!@¤IA˜Ø0õSšlr$«º7WªsMGIceaê)]Â+HüÍ+2¢îfGsJÌK1ÂŠŠ ãŸæ‰½(F2½;Ô+ åéëCˆç bvÜÐB¿@4|¯ÇP R¼Ó¢rf‡¸à“÷OÖ³µ5.ȇ˔wõRöÅ'RãäqÜw¬‚M¸wTRéŒÔV,´2´r€7pqØö¬˜äky\:b¶4Û°ÖBEù—¿==kJÓPx ãAééWí®Ìp§!OJ¼Ò ʃvœVÄr$±y¨r¤qíZ "Éøù”ämÈ­Œ=zRƒÆiÀñ’1KKKKEQE%RÑE%QEŽ©Ü=i®Šñ•aÅ#¨eÃtªÏ=Y}³Y“Y©cûÔSÛuR’ÝI9`> "³ÔûTl,ÊÌ8*xãÚŸlQO‚Ý#µM4I‚²5[}§Ì¯\TV«öBÏ“òG¥e¤Œ‡ õâ¨FÆ>A85n;“€¯ˆˆÈÉàJ¹gvð° ûWª’xÍZ¶¹(r…#*{U‹‹ÛˆfˆGmæA·2ÁÿJ×KÙ]ã d#æ àýkD]Mæ B9#Æ´Èœžj÷õìjßáÖ‘²¹8àg£éEUYwꌢàa#æwÏ\ÔK"µË eTe=* àܲùœªv«y©jZZ(¤¢Š(¢Š(¤(ãƒLxÃ>R)A ‘)1©>½8ª·ÊÈÿ»Bþ½?•A, ¡Â©5I¥3+Ä]sÀÜk çki É:ç¡cŠËy³ñ’3Ç5b;øva”„õ늻o¬Àcò§ŒùxàõÅYƒR„®ÉWäõ¥a/î¥![J†è@å¼™X)åF*)ü§Ï–ç ÅT)yõ­fÈ*ùü+>@s´œóN[ö²e¢ì{ŠÓÓµ‡–’.»Š¿eª˜vÇpA oJ¿ æ6 ïW«j)‹Dì3!€;úV¬rf2Ã.G8ý*Ë]K?” vÐsþ5›{£q&JªÈD9?Q¹KɤÀvòœÿ“SÚ{_ßI<ç¶*Öœ¨-¼™þi3– :U‹EO $¿3Ž Ô©oÑr*ÒÛ@€x©„/*ƒŠ¡©jË  7ÊXÖn¥«$P80[*\ŒcéT5LAXÓ¸,¥QÑãRwQ³›¸Éöªº ±}²Tàÿ«Éõ¨th‚Ûý¡“ï“Ôš]fG½ˆÆÆN¤·~õ6¥¨»ü¨B:³6)u —•€ˆˆñÔçšÆXò‹r¼rzšÅ-¾FvÆ}A¬ wHÒ3uãêkoO‰¼  dãææ­ˆüÈÃ…ÈÇjÐT.›¶äVŽ›/”ÏnT¢¨¤ûÖÆ‰# vÔ®ÃkGLr!12ãa⯖AÈÁ=ëK=óW2)XÊ0 ½ý©²Æ’ÆQÆVšè®›Xdçu yìeû¤Ûö+Ú¹JÂ[)Km/<0íX7ö’ZHX®èIê*[r~èã#¡ªˆØà7×µUˆà§ƒúV„žj W႞[£{V­ÂMmä¹Ù,`ãwñJÒ·¸Žx<¦Àu¯ñ{Tšv§¶Ž7Œ©TÆÕíŽ*ýŽ %Lƒ ¼ U»[Åu1•9¬ÛJðÚ½‘†ØJà™ô«‘¾‡eܧiÎ3ýjÄoû½®êX§iÎøÒZZ´ÎL`¢Ç´JNY¹ÏùúQ{dÎÑÂíÏRhŽ=’”PsÉ«õ-KIEQEQKE‡µPFzšB œœšB3MxRDÚÊ>µͤ7‘G±ô¨æ·Žhö:¨¬ùm¦¶ËEó¡ô®~óJ¹´%ãd}rJȹӥ·%£×Ú›‘Ì mò“øsU‘–E1·Êß•@Œ®»åj\lùdÜËžëLeØØ~WÖ˜ÃaÃýßZ$ˆ2àá‘»ÿ5Мî_Zk #ŽA¦é»¡ºh¼ÀC=~•¥áéÝnš Á Ç­^Ñfo=¡iÈȽ_I¡73F„™d[iu ÞIl¬|Ô Ö²OO$ üëÎ*¬¢c#²FÑá·c³T7*c˜NªWŸzŠ`Êþ`R£¸õ«U†ÞIY³ŒóéSÍ*¥³J_…É'ûµ,²¤fÂc$ŸJä.®e¾¹ÎÒQ› ¢¹š]Fï1ÆLeð«ë\´¯%õæDd©|*úÖÕ¼–ÞL!ÈÀQ×wzê"ò~ÍáU¡®Š?+Êrª`CU…í„“‡d 2Ÿ—‘,–&B]dfÏ;Ž+>I¬w“"¹=òxª·0$ÒÍs €GSLòmÝÏ–ª‘ŒÓ<¸Ë&qÅiµ¹-Ä3«C³/´ó¥hG`¬‘J¦-¿6ÞsøUŵUa$r)$s¤ÒåŠïK³ÆnnÕ‹%‡i ¸í27TöžSqÚXð _Bó#gÚ£îãïUˆw¶àÌ1ž1Ö§säž1Ö¬ª…G?SÍL8Éüj@8Ç?SI$k,lŒ¹V×$ŒÆãrž¹¤tY« ÊÝ«š¹Ó.¬Œ’¡÷Çjæµ &[`ÒGóÇŸN•ÏÝé³@¬èÛ€ïŽÔé”Ik¼Iþ/CTЂ1œßÐÔæ×ø½ eM,ÖêXŒgŸZO>X[*NGZŒÜMO#¿­tÚd©wb' Y[l§y…uVö¢u@­1ÜüuaÇô®ŽÉ’ke!”î~:·Cü«SØœñVº ³úÑE´QIEQEQERÑE%Rô¢Š¥ulœGóõ¨éÛܲ& î+6òÈ;«‚{Š®±É÷$lÐ0Çäk=ìäQµÛ :~•Qí\.×?0õ¤¢m¥Hô&ª2´m‚µQÕ¢b¦ÜB'rü¯ýáÍt;¢Œéò°î*½ªËnßlrY‰”u«/,’Ü-ò²oÛØãaZF™nƒäüÇ?…k¼„ZÄwn/Ž£¯µs1]:ÜïbÏŒ“ô­i–Ê»“Œ“ô¨¿såʲ”(~g$gpô¤¶ž€Å:®ÃÉî $2Fc).ݽNEsq¹ˆð¦\`tÅT´hÍÌ®"Æ_o銧jñ›‰Ybèøã¡¨¾Á¨4Û’Ýþö@?¥%Ý䥤…!²w öW’~ö8ÎðÀ¨-Åj\h³L„`9ŽÙ§É§\JW|Cy“‚*Ì–É·tk¸˜u¨naû“i¼e¾wô¢š?°2Æä'%»ì*9S쌑n‰ÉnÀv-ÜB ÉnÀoN@ô#~”·i$ ö˜m‘pØ¥ºŒÄž|,6²àãÒ­i$¹µ,c.%zb®iw ržV>`£qõ…Z°™g 0qõ…iE••#³& ò+.wfP¬˜ÁëZ¾eº±{&ܶü¯ë ðôÂ[O³óòƒí[Z ¾}ŠÂIÊäzèr ÆyëÖ¶8Î+WŽ”QE v©lœ¦Ž”-RQEQEQEQE-SñÒšÿLÓ_¥W‘YÏqïTf‰¥Hõ5¨dÈàÜÔ- Ÿ½ã¡¬»«rIˆ}W5Ÿqjäòƒê*-Ñ«móŒmèàâ¨ìPÛ|ÍþЪE»ÊŸB8¦\C½ ýÖ=ÔðhËÇÐí'Ðõ ‡Lím¬}*'y´[ƒòÄã ?ˆb®›åžb•v4\) Z7¢D†9x)À#¡«R,2F®ÍµIÚ×=ªT“œt<ÔÀ^£ÛÞ³´»E]BH¤·)ù”Ÿàj—IÊÇåïV!²{qF™ŠVAåbÚºAÀê3í[}=¾•­HÊJŒ9£â‚21ëYz—Ï È¥‚å[=‡o×?ek–Š)ÔgnAúEgjnÙ*Œà`ý;U Éa€[ù¨Ä1bÀ{ñš­jñµªE ,HÛîMA‰öxÑÔ²AÔœŠ]+©?*•(GqéMÒ3¬È[©^hÓ‹Qu' Fеm½¼jàÆDn·©>µºP/#*AõëZ»Gv­$—b8·R@þr}1CIµ{gÚ†pƒ$Ž; °½°Fáœcšxû ò3ëO QPÝ\Ç[' _­2I0¥‚±è 5äT!Y€bxµ޶²?™nc,Ä÷lóC…PÁ”ÈÉ÷¤;Fåaˆöòk.î+i3²˜Ên_c\î©b!˜ªó ®+Q³TrȪºâ[J aŽ{š4kmr7)Û½&‘:à à•³ÒµSSŠæi?›FÙˆœÿ*ÕƒSŠâi—"(Ó]Ž VŒWñÏ,Ь#UÆמ•§ž}ÏJÐ銹Ç?ýz­öØÝÞÿX£$wÛëTÿ´avxãËH½WÒ«ÈØº/ß^Õj®Uš(¢Š(¢Š(¢Š(¢Š(£¯2äbƒÒ€; @£¦(ÆFê{PJŒÂ*)þèÅBÑ—\}Üõª3ÙïŒj®OñwVkpÈ@· Oz¬c0ä <õR8¬y`xXŒÀH¬É"hØ€3þÉ)øu({ñ¸~TÏÝ·*ÝȦ퉸bTûŒŠ‚x$yxu œ/øXåh°2 g9Ð’4D îP{SÚa=í¶é%áZ.™Ï5µeqÆg…‹?C­H&ÏgÝÁ@*í¶ ’¯,oáaZI2:†#i=𮤍èü™ìjÖõÛ¸@ö© wv§’Îx¤ ²©Új<ÇqÊ·›òÊ„‘Þ±5«"Ò+¨ÀWÈŽÖæÞ÷`ilŒÖ[Àcº7qP6s¼±8 ÜûŽ1üª[:G\¢)#’ŰiòÚJèÕXƒÉ݃Z]Nb1Ý"€ß3`•öõ©¬çÛ\.¼‚zãëSÛÍ.ß*U;‡oëU#‚O´+Cº5$ü¥¹ëSªmpP;©§"`P;еk›{‰ •Ú0¿ÍÉÆ8J]Jd™¡,‘IÜüçØUS¨È’4lË’[©ª«¸œÉþ³?Þªܱ“y;2ÇŸÿUU’ó.[pvU{»éo#Úä§åɧ5Ì—Q2¶6½QÜÜ=ä ]UN܃÷ª œýi—YX#L9ÛŸ™Ž;ÔrîX’2®J“–'99Zcœp:Õ;„ ¡H#o-“ÅV¸Â€ªûÀž+J×rG÷7c½F®6íÇß­=‚1е§_Iý¡>G–®HÎ7qZú=èi¶$>TeŠ“÷†+KM½ß)B[÷Q³2ç¯J‚Îñšán2Í# {b³-n ] J’ÀœŒöÅQµ¹ß8›iy®º»:ê(¢Š(¢Š(¥¢Š(¢‚p 'w¤$I8©ô£Éè*¤×¾Y;w·¥gÜj¢7ÛnÏJ©5úÆØUÝô¨íïµY&àÈN­>Þí²´¼1&Æ`Rÿ)9¥†üìÝ:m`z´&§ǘ¥I<{Зˆ@,6“úÔk¬Ù ³2ñÔ÷ö©úØ·.WÞõº€’ ãµå™gå# ⤞î£çðlRË N¹8ö8ª“[àä}+÷Nhò@$v"³.¬ŠBý¨7Ø?+Sֳв·pÝ9ªXȨf‹Íêv?¯LÓCd6ÖõÞUŠœö§[_Kd|¹ÐÉf^¢µtípÀV+¡¹:ôú֥ެ¬WŽÁh”t  ¹QßÚ·K¬±nC½pEj±WL©7B)²~åCdc®sŒU ‘-¦zàâªË¾ßæÁôª÷ {lð,¾[}ýÀõªÿjûqò òåê5^IÚèyjÞ\¹ûƨIu,1ÄÂT—Êk©'æNÿZ¹$ B‰‡Ü~õK$­#s,€&Ÿ¥VKÙã¹…×q)ÄŽ#¡ªsܳ2:©óaûÇoUi.³: xñæ|½Et2«\Z™mLˆ6víœÖ®CŘùÜãŠÓbJf0IlŽ1õªš…¾öµ2L¢5|óž„ÔÑÈ€#žO¡­Û)ã™6oËÕ»§\Çr†2ÿ8þÖ½¤Ë2cÌ;U £Óªé@A`Ÿh=©’@’ TîtÈgç8úŒÕiìc—ÿ¯Tî-&‰KG eþé“y£ÏÍ ÷qŠÎ¹Ó%Œü„8ô¨¶È«ûÈÙW¦XdU7´¸ ’UÎ7‘UM´Š¤¼m·§Jm”RÅy¾˜z2Z·¢Ë<7;cbñ1Ã/¥\Ò¤š9¶gtgŒzUJÐK´öôíZzÊf"Ç•ìG5wQ)“¸ì{ÖÖòDí°—¨ö®u· í8däÃ}Ã$ER ¶d"E;îÖÆç¸Ó–weÜ8+ê3Wž[E¶‚§i_UÏbk‹PÁB™>A»°nIrR&+Ëœûæ¬NÑGò[tÏ5wL½H ”#D;gææ¥Ó–+ù‘ºAçéSY¾Äoœ‹Vô© &-Á'Ò®i2ù‘:í'éP\iYœòîc;T«É ùI8ëKöU;ÑŽäsïPAežb›*H; 3ìpLdö>BŠš¶0ÈYKÀ|„ñ]­vÔRQEQHÌK1 £½#º"vUQÔš ¹c´Vv£x ¹U)÷Á5‹«jAáÙ`¤ýâqŸ¥fêÀŶ,óßÖª"ɲÉ3ìW_”“TD/o’w r9&ªh£W•€Ü29æªË2ï,Í¿=T–P_$ïªÒJ ¶áéUÕ3#ÈÇðF²mbã< …k'¯OjO²ù¿7™žzSpe9fïHTÈÙ-I²Ääï”9éHˆ¨I-ÅXŒ[HÛ\7 í"¬Z½³1I”í# Z³n`g*ùéÁÒ%¶—lR0Ãdg·½¬–³b)r>‚•÷ÛÈ<·>ÕÑéï#Ú/œÛ¤MtúdÏ=š[tƒ©­Û)[ui[øªÅZ©éh óŒÔW)æ[2ûf ¾Î³‘¦j;”ó-ÙG¦k6ÖCæúæ­¤h'.™)éëXvò43§çZI"ÜEÓ9àŠè#¸Q´l»©­„–;ÛryY0‡–y®rî/&\ʰî¢ò¤À={V=õ¤¢c(t8©,dpåùºzS`2Ø?!Q•oZ¯7–p@*pHêÕnêâ}’)]§ŸÅõ«2ŹW ¸<í?{<Ô°XÝÃ"MoºAëõ§ZÛMÒKFŽl‘ÜN·¶¸†éd€«$‡$g†ÓiVòÃl<÷Ädaq·Û5³n¬±üì >ƒ­{uuOÞ2–'øW«rIJaˆù—¡!9ïRmÏz¡¨ù¦Îå`Ú¤FÅ»{ÄT+y3ñ’ As¸A/–$~8ï\„ŠêBH¥XsÍrw«"\Hu®bëy”,À‰}O¥\[c4À ½ÍW’1 ùzûÓf‹ÎC“ÓÖ‹;•²s´œ7Þ÷¦ÛÎmÉÁ#w_qM³œZ’ªxcÍo!™£pÌp~aZ®Ñ´HѰÝ×V³lxÕ‘†zóPóO—Ue^r;1¨¼ÂNÒ Þ¢ó $2ä/»]utTQE6YV%Üç€w¨î.#·Œ¼„{æ›$© eØ{Þ¨O);eu.Ã…AÓñ¬;˦•„’öát¬Ë›††lŸî¨éY—Rb&”gøˆþU™<››÷¯Ï|v¬éäïÿÖ¨<é&_‘pƒ€Ìj&™åç&¢yžP;zjï'‚ýª0Î ã-Ú£ÞËœ.jÕ¦›%úîÉOVàU»*kàHão\Õ›]6K¤ÜIý*fÑ^w–ãbƒÖ¤“Gx´²ã­=´³îwÚ3ëT69†5A£ü¸ ¤ñóòؤhÙv–%Aö¦²Áɤe(Cgm.m”©ùÕy÷«ñm¹FpÊ:ÕÔÛ<#æZ¹¤\:α9Âí9ÍihRºÜù'îíÉ­ *V˜‰ùq[_^•»Þµ(¢ŠZ(úÖdЈ®¨ùxÆ=1\Î¥oä_È|¼ô5‰{•xØèy©mpeÁ8 œU­ ±tÊ}*}(þü¯±§_À² àn®M­Z«¦ðߤÕ-Ã.à~•KËK„1ÈØ¬H¸“ã—ÃÜb³5[V¶UØ9 ÔuÅ:f;pG̽zSn (à|Ëѽª¦òÉŽf)«ÔqƒSéwj’ùR±Tu8?Ý5%•Ê£´r9Ee%O¥tz}ü2ÙÄ €¸P¤Zè­î"š$d0´´´UKåpc‘;pÕ•­@û£¸QÀZ¨êQ±d™FGFª«#FÈåGjε™­®R\gíT­åògFÇ­O¬<‰§™¡<¡ õ jëLÇM3EÎÂê:¿ª³-—;Hb=eÙ^ †ùˆVþîz×>³¤¬ O¦zÖ:L²óŒJ»{j.lœFß6Î=êÔ†‹|M–ÇLÔóB=ñ¶[+—¸ŽtÚ³ ÕŸ" ž?¥fÌŽq»ƒÒ­Z£Ç•áÃ|Ưé³ÐDF“,ÕrÁ¼¨KËy™5ÖY–6É¿¨k§L”‡8æº%$¢“×18úPÙÚqÖƒÀ'¥rúƒIr.€gÚ§¸â³.¢¹š9fcþË/y³Å"‰ëY­É’4!G¹íI ”–ö¡\¡‰>\¡TéB)ãrË µŽ5\12 “ÆMFŒLѨÆO×@«µ°)AÔœqZÉ.„(½IÀcZȃ-ómÚ;ô4Ø·;3JܸÜò)9v Ç9ÉÎE6;Ë9 ÍŽG®r+jºªÝ¬MNñMßÈIX†;šæµ«Ô’û¶åˆm$w5‡ª]«\‡!¹ª8tè\‚}”eáÓ1樰e8æ#54VžYcÌ‘¿ŠNƒðïS%¾Â˜ÿt,pl ŽX÷n‚¥‹O[Ë¿ô‰U^X“…>Ø«V:zÞ^~ý‹*òÙàTö¶kqsºfÜ«ø ÓžþÖÕ6vŒZÜŸQ´´MŠA€jÉ{º… 0AX×:…õã‘bCÓqX7Ú¥ÝÔ¤¡òŽ>•‘u¨\NçË>Zš¯ob–œœs†ÏZ¥ ÅŒ¤óüYª±@ŽI”ž‹5v++XàRÎsž9«Éoiºîc¸ôÁ«‹oo* dö¢àª¢&àOcžÕ^ãn ž8¨'# sŠÌ˜†^:*“ôëTd>3SÛIÞ’®c”|Ãû­ëVm¤M­£(ãŸöZ¬ÛÉFŠAò·þ:ÔÝ«m+"I¹[ 4öQ¸4™»*·– œI󇊒†G<ƒRArÊÿ7Px®’ÆàOçæN5Õé—BîÔ7ñ/ + ³œ\@?0áªÅZ©é²…d`ÝÉ•^6F7éïMB¬8=ê„êaçà×?{¶¹ò›;O ÖEÌFü¶éëV-ÈžÝà““‚¤{ÓÒÝnl^ÙÏÝʺzUëB.,ÞêSø×!:MgrQÔ£©àÔf¹K¨f³£‘J•<8#5ÌÜÇ5¬å$vúŽÍtsyöѺ¾_:þ½Y†]ʤ6[Ò®E dR'Ò¢»³ûa™yèÿãN(%VÉÑïJñùãž~µ¶ª!dOø þõDr9î*Üá­}1ÃØÄ3ÊŒ+«ÒçûFŸç,ºK)|ûHß98Á«,»†Ó÷}ªÕL~¸ªZ{KHܬ‡Gîàu°ï_•ˆ=ýê)aÜ¿+2žäw¬«¸Mœ‹•€ƒÛÞ¹íL42ìa÷NTƒÍc_ƒ › ãtƒüë"õJÎXwåqX·*D¹€~é¬[¤qp ?)ÐG:´1‰J«ÕìN9ükR9„å7a6®l¤ÂfÆÏ”z’ÐÅ“»ält©Bˆã™^0Å(ØíR¨’+ÇÈ9 Ž)š–´ä˜-æ<©5=vICAf6ç‚ÝMú¼ŽL6ªrÝH¬ó Å<¾¦²¤‰¡Uß÷ˆÈ^çÞ³ä‰áUÞ~lgóVm&Ù&pÄô_ZšçwÜÝ€íS@|ÎÙ>”û‹è£ ÈäšYn‘H÷¢k¤SÓ¥SÓÌ|«t<úw¨ã»þKt<úw¦Gs4¶<þµqmÝ|Û¹OOþ½Y{aßs"îëì?úõa  ÷ØééTnîüÖýÞ€OÕ ç29+À Ϲ¸>W…è F×J8Ù¸äãšgœÈõ4Ï´ÑwOþÐ&$×­;íM·TZy¼}¸T$÷Ï·Íìç§ä*=òH~ïåD‘2°]à’AÀ¥*U¶ç©È8œŠ•Ô$óg˜É‘ü-Ú—g#•È?nˆå7cñ©bµåcíW@Ê}zšQæTvº‚­ïSA 4¡d?+¨*}ÇZd‘5¼åx;ysL–3Å ^AÉ#ò%+ÁÇ"­éwg¹ûŽDdúzV†…wö{äR~I?v}½*ö‘uäÝ?uÎÃìk¢c×§µuG§\×@x÷iª }Æš¹'-MêzTWQï(F>_Z¥ªÛ™£W\nÖ«_Cæ…#-GÛr²uÜ67óª6 m¯”Ÿºãaöªµ¡0Ýn=å4û›Ho#+2îûÑZ—VñÝDñÊÓpþF®\AÄe%õ—”öLñ2´‘õVà×;>—=¬Œª…ãþ9ÅcI§M2ªïQ÷}ªÂH’ÆW=ùÏPjl‚§ ûŽ•?ÂÀŒúö¦O‘ ‘‚;Ó[ŸÃõ¦8=;Õ]c©=¹l†dÖ¯†¥ -Ľ ƒW4 1qq ~  Ÿóí]ªHºzšÝ'šÚc´Z§ö‡ãÎ`2cCš‰˜ð_BŠŒ±êä`s´S/`°þàÝ·ª:˜¾É‰ÂȽҪß[ °v6Öÿj³E¬Q+‹®1àžTûVe´K’ •à¯Fê¾â¨ÃEæEq€÷þ¢C´¡™?úv¡´ÿ,ãÌÌ¡¸SÜôÁdc yŸ¼ ~_cÞµÚR`Yd ˜ñ.3¸w5}¸µCÇû·˜zÕõ̰o`C§îÜⵟaó‰¾HTgžõSLÓV0n®¾Xg½W°±XAžnyç½FÏö›–›»?*©ì½ª”Ó}¦é§þp£ÐUWMpÒŸ»œ n©7ÙãÛæÆ)—¯åŒ >•ôžZ€¤=1Yh’M LüÍT³°^äÕD¤p½ÏZ֋˲@̘åºb¯C"Z€0Kzô«ñºÛSК¥ªÜù²(• ÆMV¾¸óœ`£ÔÕMBãÍaƒòÕy\ô$qUº=MTêÊ:î8©‚m XËÔpA"¦ ÇQVÒË8ÆN‘n=8«I³qCÇ"‚Q¸êW´÷>ß^õ“VÓ$]²‘ØŒÓ&R²8f·t;¦¹²1H奈á³Üv®£A¼{Ë’9i"8l÷« Ñ®ZæÌ+’dŒàçÒ´ý½«S «ôŽŸŸ¥2EB2ÿw¥5ÂãæéP<=÷|£šÍ¸´‹#p@ªrÛŽ\8¤pêÅ18éëRÍç±/âC>A)æ<œŠ‚;¹L3È=ë;ûBâ7$ºâ¡ªfòT`NK™þTö/Í„í”uSëî*Y`ƒS‰§·;'_¼‡¡5$‘C–&Ù z„’[çìEeH¥\†=ñYÒ++áºúV^¥lñΗQpèFìw¦+<¤ñä4d­V2)RxÆ6ë[ðÊ—v‘NyèØÿjºøeK«e•OÊÀ~º˜e[˜U<0éïBÚ…•˜Ã·» 1‘FÓƒš“ÊŠ(OUA$úRìW”\¼S¶¢¦Hµ‘©¯2ÈGÈP0bx"±5ˆB^#ç>•—©Æ`ý˜sïK£éÖ’ÚApc>nwŸCü«JÒÞÞXaŸËØÏáVí áŠa À6 Ù(½páÖ®m ð«x¬]Bv¸êí—…¬žÿJæukǹM«˜­×„SÕýëR¹y“r!Àµ–nvŒäç¿5’eÀã­e™€• JÓ\a¾f<Œv¤… ²ÔúÒÀ†i[<÷ÍkZZ½²4Ì@“ö«Ñ[›`ÎÌcƒWcƒìÊÎH Ž+"åŠqç$œç¥gHp~ñcžk2fÁá‰9æ£U}Ù*ÙÇéõ¦…lä©Í5Q³’¤œqH©‰ã2}ÐrhA‰·ÝÒ*ì™ Ž“W6±óðrÙê;SùdÛ 0rsŸÎ­$gìé!·&¦»c”Pp Š}ËÁG ©.\îqÅ6ƒæüç*)‰/ÍÉã¥F³ò{b¦lYg|`® H$>cw\¯j•d‹;ÏzY"K›|ùãcíNÚ²ÃË|ÊÇÚ”ªK_™zU Ÿy\Žžõ[dj¾ÓÈ"£²éHáqƒJNeVQÒšïчÝèjĹgã\å?‹¥NP¸WøqÍYdi6²Ž«NÓoÆè¸€ëþϵXÒ/ …ÙF×`{zÔšmÉ´¹Ák0öí]T3$ÈY s]\R¬ñïNžõÑÇ"țבK!9ïÒ’ä…ˆç¡?­$Äç½FáòŽAæ¢EWQÀü)ªŒc?Jy%b,21É© d€•ÎSœS›åŒ‘Ûš¨á]ð«‘݇V6 «0W@¤pA¬ë°%”dwÇQPª²1u|>püë66’ oa×ëY龌C:•˜Ü‚AÛ"òGcCVã¹MÇ"Q÷”ô#ØÔîÉ:g\u¡ªó°í˜uø–ªž Ç$z÷\ñ9?ú«j#‚1DmÔz ÕÓf0öå¹ÁSÒ´l\Çåí?+pG¥h€9${Ö÷ö­N21L‘ö®2¥&œPN+;TEŸu»Š@üy¬m[^ÏPb³uæO±¿…A«–H‰i¨áWÖ•d”Uël tÇ÷@©êz’¸Ûɦ”–2—sÀpp—2É+i 1àz\uÌ’Jw ǰ¨<¦±$’j»`äžj‹ù}s[Úm’ÛÙù¹_6NçÒ¶ììE½“*d~}ërÖÑmíCq¼úÖv¥<¥Ê=+.òiCœ¥fßÍ#1ÜU4xâùÞ5úPÆBÌ¡¾µ^7üåëL{É݉Àn1Ž#N圜aºQ½Ì…Ûý®¢¤L³&æ#K÷›¦N:TŠ ’(’+JAåiKnOÌ +î¤æ®ÊÅ,–~eÏ㓚¿!Ûd‘¼‚ªÝ7ïHï…òª²œ¹J«;fLZˆnÝ´œv4Â쌆ҔS ~U8Å•ç·J+“C;F|ÅËÈ’„ºçd;Çݩɒ]ÌPzZrÌYòÝ*E›{üÕf–7Ú7 ®{±§¬sCqíFèóÙ½*k‘Ë‘¸ŒÆOvô«Isör*îXÉÊç‘‘Šš !•eMáXñß‘Šž)ŹQ" HÀ÷ª—·irPÇ—&6žµ묒Ä#CƒAúñUo&K r!ë]nm%¥Ÿ—!Üù,k¬°·kK!ùœd×Mk ¶¶yeÉæ¤.Î9\ŸA-Ä“& í¦<Žà†\S¢'?Z’ÅÎà½>݉o­HØÚÙéŽjÛUèELßu¾•œ®ÁKœ ×9!dc‚GjÈfdcŽç¥K°ÏøˆV^ªyÔj·V¾t'§çŒóŠV·YíüÈŽuZA.H_œ@ïTÇÔuOi }GQM1ä)ž£µ  ?ˆíF;“ô4–äÅ"E!ùw•>Õ=”›n#ŠCòù›I÷íRÙ9Y¢ŽFí¢µFq]Q§ZÞ#ÖD`—#Þ“ðy ¨aƒÍTŽó¨îeM¹õäÕ ¡[IU†vÇÉÿ?Z¨ñ‰o0G!9«Q®Ô {t«¡H‚ž¢­ ÚŠ=)ÔúZåb· J¯o¼ç ®" p«•Ê$AŽ;¦¥´µþôŒÈ¨85žÑy½c.«Û±©­v‹¬ªÀÇfkÆNñ·ŒÔ÷n 1ÆjÅÅÓ ;¾R£²é¥w?u±¬ÅÌŽÏýÐMdäÈîÇ•PMS%˜cߊŒr¨º¨ž±’A-ýÚ@#,z 0b>nÞÕ§¢[‘îeoÝDíÞ®é°.׸•°‰ÂSWt¸WkÏ' 8QM¸‘®nwc*)¤2ÌHáGzlÒ™® »Ò ±!'j&8}Ç¥BÇ÷€ž™Å>ëj^>ÜbŸq9ÇQN¸ NÝÀãåP2FÔàB޹ö¦Êª²Ÿ2Æ;Pè ½ü¨‘@qºE6ŽK¤YN°ZŸJh¾ßss‡oø~µ&åµäqË÷àý{U»½æ·ÇºO˜†Sè9§©èÒB|û}ÏóTóÅh^é“@DÑfL1$·¥Xè0¼hŒe\1×vÆÖßPd¿0´r+çiàdw«6p]H·Û6à§Ÿòk ïééZýë^«É´»~ó=1Yw‹žÇÍ#ýœ}Ú¥pªec¼ý1Im—;NÓÆsM²CtÓå·‰ïM¶}“ô;OjÁðx5­ŒñØÕâ3ס¬é×hýÜ™*ÛB±çŠÅ¿´g´†aü$üßþªÍ»ƒq-€‘ü,hµ•Ñ’6]ý±Ö©Ú<¶Ó,lªçc­W¶iaÞ#(~>µ-Êá<Åÿ¾³ÓëN¿·`ž|`”'ïz{RÞÂByȤ¯¯¥A»tjÀä<Š¢OË}R$àxïM¸Rá±÷¸'úS\ç$uëMf<Ôr*ýœââÝ_ôaèkªÓn…åšIŸFÖ†º++…¹µIäŽ MVªjB °8ù‡zB‹æoÇÍŒn¤Ú7nÆÖ–––Š(®Vâ@¨±©È'šá¥~jx=k•™úF§ŽõvĪ1\‘·j½bT<úUË= ž:Ö}û™¦•cæ59&¨^7™4›~à=j…ó‘ÂýÐj%,4Cæ¨ íQ«mÊõ>oj‰_nä'!Ƶ@©åÈÍØúT`m~=D£dŸ)ËzÕ‡EQ Í–Ë7v©Q‚Gz•‚ü‹Œç’jÀ‘¥‰-¢s:T¬í",j>ULdgEFGjEuØ8À}i™G)»€QÇJ¬0ÁãæÓ4ÅûÊr*$ÆäûÕ%ã<·ÔaW#$u¥”³É‘ÐqšYË<™hCA9éŠ4ÄRdR:´…>X犑#i]Q9$ŠP)TNIâ˜$a:`àsLù”m<`àÓ 2 SÆ4Ô‘£‘%?ÂÀÒÇ!‚hå%6>†– ½ÂMýÖ ]¤W‰4Ê °˜…ãøI뽊eš$•9é]¢J²Æ’/̦;TéÆ@''œª  õ¥ ` KKKL–2ãrðÃõª·¶Þzo^døð¨n!óåqúÔ%I’÷éY¦7*A$úU3Æ ÁþU,ò¿QÐÖ†Ÿríû©ºŽýáVíesòH:t5Zò›y Øõªz­«dùp:zÕ[ûv9~8¨D’¬{ b½ê+1¥˜(Fv*:zU$Ê–$‚¬%äjÊ…UŽ7cåüjý–«MÔaUø-ŽÖ®ZêcÊ™p¾)²Ùì̶ìBžvŽ•þ•婸µ`Ñp;TWº~Àe·`PóPz0šƒr*€R¦$­gz¸+²VòÛ=›µ_Ñ'6ú€ŒŸ’_—þÚ­é’4žWðJJþ#¥k(Âàœ‘ùWH 3[€cëKE´QIEƱe‘ˆíÆMpDÙëÚ¸âNüõíWlm§¾“b»Eýâ:ŠÐÓ,æÔ&Ú’$ûì:Ö……´·’|¬R09aNÔàŠÐ›hñ‚?ìþ½&¯o”æ ô?AMÕ!ŽÖV‰1ØûYÒ3‚½ÏéY¬~ojËbwûSSpÇ íÜP¿Ú•8“53†%Kœ%¿à=©J“ŒŽ¼Š‘”å}M>)J'´àåF(¨ÂÓ$ƒ¸“À¤fùw¦»f5õ5>[gnãÞ›¼ã§nÃgðúQæ('s’wgnîM&î &9vÉè¸ÁZ2O'¥-ŸJ…]’pG\äS­e0],ª2T’)¶Ó47JÃ’¤ÒìÌœ“É×`Ò=IɆۿqôÎ)“ß{·@*7mÇ5§w$àU›Ï «;±*FNÿ®´´ýAàx·»¤ ŠqZZuó#FÉä â»NœcµvGàWQôÏãERÑE7ËRwc$Ô_g„È\¦O¡éM0Ç»q4»@ì)ꪔ:( ƒÒ•ÀuÃr)XŒÖuÌr‰³EëÇZÁ¾²+#;{VMݳ%NÕúSWv1#6³t¬â‡íÁìj‰CÈ|ãÐÒÃ#@ûcn3÷OJ}µÌ¶Ïû§;ºzSíîdð¬vúTŒVsŸõoéØûÔ’”¹;€1¿qØûÔ²”œä Œzã½DаlȯÏ=Z ⺌”û®­øM†7Žâ2Ãî°?†kO¯>õÔ‚Åoä‘ÞŠ)(¢ŠZ(®(³)êÕçù#ƒÞ¸ÍÄg×S¤ÇiÑ*¶ìŒ»z·zìôxãLc ‚¹cêÝë«ÓÑ#±ˆ&0W$ÖN¤€]>NrÅŸ=½?ϵsÚÊãP›qÉ,I?çð¬MLbîLœå‰&²$%Ÿ*8çñ¬¶å¸¬·ÉcŽ•bÎ ×%ÜnŒ‘ê}*[xÁ’2œTÖÑæFcÑE¶é?‰Ãü w£'-žNxö¥\œ÷=…)QmðwSHFÞjc t¨˜ž§n:uäSx¦õ5#x/óg¦;RwçšLüß1Ï¥&ñ¹°?:äÐn4äòÝGLP9ëJ¼CP’™+üF›ß§z‹8pH¥ž€äÑÔÒŽIyd®Oz]£½)@Z­é‚ëRv/ÎG°éZŸÚµ4 ±üä}*ö‡köEY Ì¥mɬãQXâÃC»i#¹­ËqSTKhÔ4a¶¹Íl¾¬£P¨:ïZãôëŒsZã{uÁâ´¸ô8¥¢ŠJ(¢Š)h¢“i\äŒúÑÏ]ía-½z¶zU)´»i“Ô­%Œ21;0O|Ó 9fr>¸¨—B´ÎKH}³Q *ß9%¿:›ì±ªáƒõ©[J·Xÿt¥Xzœæ¥60„ù~´Ž¯´`TríM«íQÍnÿ.ÑíRD¥cžkBÖ3¬y«P¡H”´ê–ŸERÑEríõ à0è@çÄÁNË,A€ÈÁ¿daŽÉ>#$çž:×[§˜aÓcxøS$“ù×EhbŽÉÕ…Ï?­s·ó5Ìå× “È'¯½rz…Áº¹i#5ÍßËçÜn8#5Ç}Á:/Z­´¶qÀ_alãµY„,1’§¦9þ÷*a޵2aƒõªa¶FïÕ™¸>Õí ·rj øBGÞ&™$¬“éÞšÌ@ÍFÎ@ɪåËy4Ìæ£ÜM:$óÅ9qÅ>4.Õaa¼œŒ÷ñ&¦XÂŒçšbß¼Û·û P3žp1B–-óŠRÃn\‚— TñÍ)U`N9éLÂE÷94ß•zu¦¨:ÓQL’8ïNŠ3#dŽ)a¤|‘Åtz%§’^vÈÅtÞ´û8y˜c#ô®‡Hµêò0ÆáX×ñ;ÇFýè—ëXz‚=ž¤ïÎzÇ5v­g~pûÔþ5ÖC(žåSèoλ8äYcIW•u ?ÅuJÁÑ\}Öä}1O§RÒÑE%QE´QIEQE-QEQE%QEQEsM¹d%qÔõèkŒÁJž{W2WH=±Z;Ãc*È„{có­5™ ÒåŠE#w@F;óZcžë žÕ$›î¸ÇN+ ›tÇö¬G}Ó’? yÚ 9À.Øõ4æãjŽÝqN'(íÖ¡•Ù‹Š;TlÇ·¹ü*' À¼ñšiû€æšÃ÷`çŠ¬Ì ÏZa5#¿JhãÖu¦óc½YO“$uµÆQÉ<xôiã°iÍ•'­€9§6sPá¥`Š3MDiŸj Ôj3lAœÖΟ¤’€¿Nµ»§hä€_§ZÙ±Ó0£pã­mG‰B¯aŠÞDh{qZÈ¡(íNéN§W?«X–Õá1g÷„nÅsÚ–žN·ÁòÈÙjĽ±-«E³£[é]@QÐpt=0VÞ0à bŠ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢¿ÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢Š(¢–ŠZJ)(¢–Š)(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢ŠZ(¤¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¥¢ŠJ(¢–Š)(¢Š(¢ŠZ(¢Š)(¢Š(¥¢Š)h¢’ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢–Š)(¥¢ŠJ(¢Š(¢Š(¢Š(¢–Š)(¥¥¢’’Š(¢–Š(¥¢’’Š(¢–Š(¥¢’’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢–§Z`擸lÚ0 `ç¿?•1CïbHÙ…sý)mä–{ SéÔê(¤¢Š(¢Š)h¢’–’ŠJZ(¤¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢Š(¢ŠZ(¤¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(<Žh¢tÅRÒÑE%QERÑKIE%-RQEQKE-%QE%QEQEQEQEQEQEQEQE´QIEQKE”QERÑE%”QKKE”QKE”QEQE%RÒÑEQIKE”QEQEQKE”QERÑE%-RQEQKE”RÑE%QEQEQKE”RRÑKIEQE-RRÑKERQERQE--””QEQEQEQEQEQEQEQE-RQEQEQEQEQKE”QEQERÑERÒQIE´QIE´QE””QEQE-QEQE%-´”QKE”´QIEQE-RQEQEQEQKE”QEQE´QERQE-QEQE%RÒÑIIERQE-QEQEQEQEQEQE-RQEQEQEQEQKE%%´QEQEQERÑKE””QEQEUVž9&Žæ)o™xÆìzÓK‚ÁyÂà¶Ñ~•:*7Œ7Ç­8{Êœ3Ü~Tú)i(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š(¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢––ŠJJ)h¢Š(¢–ŠJJÈ:«,âÙc‡˜úVlÚ¨Dù-Ðî5F]Gh*ˆK{З³Leevûæ‹MDÜÈêP/sÎh·½i¤edcõ­84@ŽÝF+EH**ð<Õ%-”QKEQEQEQERÑE%QEQEQEQKEQE%QEQE-RQKE”´QIIE´RÑKE%%%rÒN'žˆ”+8Ä„žž•ÉÜÈ£ƒÉûÜô®zy0‘OÞûÇ51™âž9ÐÚÛ†;Žô–÷-mu㕜{t4Ap`¹IIÊ©ý;ÖÄ2ëñ‡Ì)ô®¡_íáárž`ù[+sÚ-·ÂÞ^õùI*{hÚ(Uf•—«°ëO‰YcUw.ëjD mÌ:¶1š–KIE€’ÄëEÉÅ:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJZ)i(¢Š)(¢–Š(¢ŠJ(¥¢Š(¤¤¢––Š(¢ŠJZæ"ž;¸Rf¸ÈÅq¦QqÉßÜp s&Ež%”.†–fÄ,Aè8ÇlDOqÚ™#lŒ±çoj¹ Îî ®»Ïû&¶¼5rïC·)÷Áþïµjhs³ÃårT †þ•±¹C„È F@­¾õ©N¢Š(¢‘±zæƒïPI1„Þ^ÕëÎ Bdu<*èšavSÊ‚=4èîc’F2Åq’9¥Hý)Á%G$TÔ´´QEQEQEQEQEQEQKE”RÒÑIIE´QERQE-´QIIEQE-rQØ3!pøòï\dvͳ9û‡ó®Z;W 8žž´Ûù•m‚g.Ô˲«Uå2ôªE÷?ÃS7Û„C£g5{Âï ºu_ºÃž;UŸ ÊÆVEû¸?•tRÁ×ÌX¬’BƒŒ©õ®•4ŠÙ!—°8Ío”Ý*>öAÏÞ«=úÓ鿣ŽVÙ™‚¡Ý޽})’¿0ÛÎ>´ˆKHÛŸÖ–]Šžd­µcù²(aÆI#ý)HîNç5InQ‚Mˆ6)dd’\zUHnñ¦HÕ|´8É<ŸþµVŽT»#PcSǽ-»Ço$¥!ï“æbqž;ÂÜ g`#’EÝó9ãJe‰ØbF¾gµn9D ‡ þueX2î ÒÓ¨¤¢ŠZZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¥¢–’ŠJ(¥¢ŠJZ(¤¢ŠZ(¤h¥¥¢’’Š(®jàKo†?vO›­r¯º$ùãp9®}÷D9?"³îàrªÙ$Iª7P¸ H<Õ+¸ O óZV‘[Z™s° æGÕAí[š\QYZ.öÚì9eç©éŠÖ°·ŽÎØû]‡ß5±DÒ#†?—´°oOc[ Q›xËqÔñZjP¾ñ’Húb¬†ùI óá&œÁâžÏJ©y ÉnæPCŽßˆ ì-5¤ˆ§÷‡îàã¡Î*¨üËw_Š¥~%–ÊX|Ï•—*ŸÄ0zV\š„â†prG 0ü;Ö|×3›w‰Èƒü_µsÑÞMo•V!—€sÒ²ã­åfRÁ€ÎG³!½{y¨oPk[FÕ/®/1•s‘ÐV®qu3C7#u¹â´ô­B{©LS ƒÛ«¡‰\;g  ñïZVðµ­Ìn@o•È¥y<·äÜóVY¶öÎ}úÔÌÛ{õꆯ,H‰Ì›î¶:{f²õƒºD͉޸ÍPÔŒlR'`¯ŒƒßéXéÂK´ÚÁѹ89¬¸möÜáÔăŠË†ÏmßÎ7=kGÓÕ ³—‘ˆéÛŽ•¹§Zª ‘òd^3è+fÆØFØî~œvö­_¯Uº(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š)h¢’ŠZ(¤¢ŠZ(¢Š)(¢Š(¢Š)h¢Š+”Õì%i|ô`ìü°A®;W±8O¬…þðßJåõk Þll?]µ¡áÛ8–Ñ¥?3£ÓŠ×ðí’ÃjòH£/òkSC´Xm ¸njÝÎgpAÆÆR~ï­Í¥ZJK—ýÞ‚¬K¦ÛÈK*íÇeõ¨ltõ†C•tb¸8éU4û6K‰"q":¯cQYÚl–HÛrûŠmõ»@¨J s´0Ëúª-BÞ;|$s+3”gšŠò$ªÇ f=»Ô\ÝÙ1W‰‚Ÿán€û‚;ËÝ?*ñ?–{0ÈSÛ¢ŽêâÉv´m°óƒÎÓRO ¦¢­$êÉ3 F}ªxÞÒíä¸hä sϨô©A·¹g••¼æxü*ÞŸ¥ÁiT~ôýçïZ6úz$¨•¹gïW-죊.2¹fÎM\Š%‹;KõÉ«0@.'=I5b(–%ÂçžäÔ•%:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢–’ŠJ(¢ŠJZ)i(¢ŠZ(¤¢ŠZJ))h¢ŠZ(¤¢°c¿µ ©„¸Ã°þ}+œ¶šx§k Ãz Å‚x~Ò©%† íVí”A½ä zóÍY+öqµ›)ŒyÇ¥YÛå…²¼ñéW7-µ»; ÷ ¤ñWÕÖÂÀÊà ÄRx«EÖÒÐÊݾcõ5%ÕÆì´Ç Æýzç¤Õ/’g``ØV,º•ÉvýîvÅ,6ë<áW„B yÇaRiÖ¿l¹Q‚fonŸ§Ûýªà›bY½}«VDIP¤ˆOU5ÓKMG"†B0TÖ숒¡I2ž Ôik 81ƪ@ëQCkons *‡¦i‘A <ǪPÁçó©€ æ¤ïKKEQEQEQE Ž ç¥¥¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¥¢’’Š)h¢’ŠZ(¤¢ŠZ(¤¢±`¶šHÕžI^®um7ÝnŒb%êU°G½c­°i÷G냂*Év¶GL –«3Àe‘d’0:³sïÅX– °VdKjku–XŠLÊÈzÉ«Á®m|©¤^½MI´öÞT¤:mëÜÖz[üŽHve†_OJÁ6™0ŒJ>zzV?Ù €I ƒW4ùcG–ù%/΋ŠÔÐîa¶2Ú͈å-OñVŽ—bÇ®ÖEOD J¯R=iñIlÓL¢Êœã4èä„É´e@*zf¦«#È:°ä ´°F%’P§,2}8©Äq«´Š9#µdÜnsØúÕ« ¼;¸#š½¦Z=¤LnOLU«smÓ·'Ò¬UʱERÑEQEQEQEQEQEQE´QIEQEQE-´”RRÒRÒRÒRÑEQIE´RÒPx¤¢›´Ø8cÐÒ8r¼) §iÁ#­f]ÚÌ€LÈÎ@ª2[¼Ae…¹ÜžµVH’2GªŽôû{¨í†Édrïóå‡J-®¡·M’9²ÄšX§ŽØÌw“šY]¥f…” Émõ4í¾$L¥GÌy§ÈÅI\y«N‚þc ÄœÍNìß&ÄݸòsŒT®Ì¦íÇ“œb¬w=ñN§ÒÑIEQEQEQEQEQE´QIE´QIEQE-Rt¢Š(¢ŠZ(¢Š)(¢–Š)(¥¢Š(¢’Š(¢¢xPÆé‚Cu¦´`©àÓJ){¼Õ;h,–)nNÇÉ.ÿÃŽ1P¬ûYÙQ½Y†jâ· e*‡<–jIn"2¬1ÄÂß?¼Œ.ã€#VòÒ2¾ñÇ—)»ÊD!VÆàjìQ²c vÓ9*¡\~QøÔʤ¥§ÒÑEQEQEQEQEQEQEQEQE-RQE-QEQE´RRQE-RQE-RQKKE%%QESh¨@õ´`c¥04jèÈã(ÃvÅC¬2=)C)‘éL–Ü:*#4Ez=©¥RTŽ2)2 ô©P /Žç­(Èçêi@ã'ëN¥¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š)h¢’ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢–’ŠJZ(¤¢ŠZZ(¤¢“ñ¢Š(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤ u¢––Š)(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–’–ŠZJ(¢’Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’“Š(¢Š)h¢ŠZ(¤¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š)(¢–ŠZ(¤¢Š(¢Š(¢ŠZ)6Û°7ô˜ähÀ#­-QEQKE”QEQEQKE”RQE-QEQEQEQEQKE”QEQEQEQEQEQE”QERÑEQEQEQE%RÒÑIIÞŠZZ(¤¢¿ÿÙÿØÿÀððÿÚ ?èë¢®ŽŠ)(¢Š(¢Š(¢ŠZ(¤¥ZrÓ–N§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ™E””´RÑEQE%QE*Ó–œ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦S(¤¢ŠZJ(¥¢’’Š(¢––•iW½*÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑE-RQERRÑERÒR­*Ó–N§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊeGEQERQEQKEQJ´«N^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TuQE-RQE-QKE”«J´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢Š(¢Š))h¥¤¢’–ŠZ)V•{Ò­:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GE-QERÑIIE--RR­*Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠ)h¢’’’Š(¢Š(¥¥¢•iVœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦S(¤¤¢–Š)(¢Š(¢ŠJ(§-9iËN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑKKIIIKERÑE%-RR¯zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)”Ê))(¢Š)h¢’Š(¢ŠZZU¥^ô«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGÒ£¢Š(¥¢ŠJZ)i(¢Š(¥¥ZU¥Zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¢––ŠJJ(¢Š)h¥¤¥ZU§-:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GE-QERÑE%RÑE%*Ò­9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™L¦QIIE-QKE%QEQJ´å¥^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦Tu´QEQEQE%RÑJ´«N^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S*:(¥¢ŠJ(¥¢’’Š(¢––•iV•iÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦S(¢’Š)h¢’Š(¢’–Š))Vœ½éËN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑKE”QKE”´QIER­9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠ)h¢’Š(¢’Š(¢Š(¥Zr÷§-:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠJ(¥¢Š)h¢’Š(¢Š)V•{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠJ(¥¥¢’’ŠZ(¤¢ŠZZUïJ½éW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GE--RQIE´QE-””«NZr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑEQKE”RQE-RQJ´å§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)”Ê))(¥¢Š)h¤¤¢Š)(¢œéËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦TtRRÑKIE%QERÑE%*÷§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑIE´QERQERQE9iËN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TuQE--”QE%RÑE%*Ó—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™L¨è¤¢ŠZ(¤¢ŠZ)9Ï\RQKKE*Ò¯zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š)(¢–Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š):QE-RQE-QEQE%QE´QEQEQE%RÑEQIE´QIE´QIE´QIE´QEQE”QKE”QERÑE%w¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢Š(¢Š)(¢–Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š(¢Š(¢–Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢’Š)h¢Š(¢Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢’Š)h¢Š(¤¢Š(¢Š(ïKE”QERÑEQEQEQEQEQEQEQE})(¢–Š(¢ŠJ(¥¢Š(¢’Š(¢Š(¢–Š(¢Š(¢’Š)h¢Š(¢Š)(¢–Š)(¢–Š(¢Š(¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢Š(¢Š)(¢–Š)(¢–Š)(¢Š(¢Š)h¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š(¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š)(¢–Š(¢Š(¢’Š)h¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢’Š)h¢Š(¤¢Š(¢–Š)(¢–Š)(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¥¥¢’Š(¢Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¢Š(¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢–Š(¢Š(¢’Š)h¢’Š)h¢Š(¤¢Š(¢–Š(¢Š(¢’Š)h¢’Š(¢Š(¢Š(¥¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢Š(¢Š(¥¢Š(¢’Š)h¢’Š)h¢’Š(¢ŠZ(¢Š)(¢–Š(¢Š(¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¢Š)(¢–Š)(¢Š(¥¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢Š(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š)(¢–Š)(¢–Š(¢ŠJ(¥¢Š(¢Š(¤¢Š(¢–Š)(¢–Š(¢Š(¢’Š)h¢’Š(¢Š(¢–Š)(¢–Š(¢Š(¢Š(¢Š)(¢–Š)(¢Š(¥¢Š(¢’Š(ÆhÆh¢Š(¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢Š(¢Š)h¢Š(¢Š(¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¤¢Š(¢Š(¥¢Š(¢Š(¤¢Š(¢–Š)(¢–Š)(¢–Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¢Š)h¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š(¢ŽôQEQIEQE-QE”QERÑE%QEQE-QEQE%RÑE%RÑEQEQEQEQIE´QIEQE-QEQE%RÑEQIE´QIEQE-QE”QKEQEQIE´QEQEQEQIE´QIE´QIEQE-RQE-RQE-QEQE%RÑEQIE´QEQEQEQEQEQEQEQE”QKE”QERÑEQERQE-QE”QEQEQE-RQE-RQE-RQE-QEQEQIE´QIE´QIEÿÙÿØÿÀððÿÚ ?èë¢®Š’Š)h¢Š(¢Š)(¢–Š(¢Š(¢’Š)h¢Š(¤¢Š(¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š(¢ŠZ(¢Š(¢ŠJ(¢Š)h¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢Š(¢Š)(£µQKEQEQEQE”QEQE´QEQEQEQEQEQEQEQE”QKEQEQERQE-RQE-QEQEQERQE-QE”QKEQE%RÑEQERQE-QEQEQIE´QERQEQKEQEQEQEQE%RÑEQEQEQEQEQEQEQEQEQEQEQE”QKEQEQEQEQEQEQE”QKE”QKE”QERÑE%RÑE%QEQE-RQE-RQE-QEQEQEQEQEQEQEQEQEQEQEQEQEQEQIE´QERQE-QE”QKEQEQEQE”QKEQEQEQEQEQEQEQEQEQEQEQIE´QERQE-QE”QKE”QERÑEQEQEQE%RÑEQEQE”QKEQEQEQEQEQEQEQE%´´RRQE-QEQE%RÑEQEQEQEQERQE-QEQEQEQEQEQEQEQEQEQEQEQIE´QEQE”QKE”QERÑEQEQEQEQIE´QIE´QEQEQE%RÑE%RÑEQEQEQEQEQEQE%RÑEQERQE-QEQEQEQE”QKE”QERÑEQEQEQEQEQEQEQIEQEQKEQE%RÑEQERQEQKEQEQEQEQEQERQE-QEQEQERQE-QEQE%QE´QEQE”QKEQE%QEQE-RQE-QE”QKEQEQIE´QEQEQEQERQE-QEQE%QEQE-RQE-QEQE%RÑE%RÑEQEQEQEQIE´QEQEQEQEQEQEQEQEQE%RÑEQE}h¢Š(¢’Š(¢Š(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢¢Y‘¦x2w ä`~uÌ;ÃóoEä`~tÕ1œ¯¨â¥©)ÔQEQEQE”QKEQEQERQE-RQE-QEQE%RÑEQEQEQEQEQEQEQIE´QEQEQEQEQEQE%RÑEQEQEQEQEQEQE%QEQE-RQE-QEQEQERQE-RQEQKE”QKEQEQEQEQEQERQE-QE”QKEQEQEQE”QKE”QKEQEQIE´QEQEQEQEQEQEQERQE-QE”QKEQE%QE´QEQEQEQIE´QERQE-QEQE%RÑEQIE´QEQEQEQEQEQEQIE´QIE´QIE´QIE´QEQE”QKE”QKE”QKEQE%QE´QIE´QEQEQEQEQE”QKEQEQERRÑE%QEQKE”QERÑEQEQEQEQERQE-QE”QKEQEQIE´QERQE-QEQE%RÑKE””QERÑE%QE´QIE´QIE´QEQEQE%RÑE%RÑE%RÑEQERQEQERÑE%RÑE%RÑE%QEQE-RQE-QE”QKEQEQERQE-RQE-QEQEQIE´QIE´QEQEQEQERQEQKEQEQIEQEQERÑE%RÑEQEQE-RQE”QKE”QKE”QKEQE%RÑEQIEQEQKE”QEQE´QEQE”QKE”(Æih¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢Š(¢–Š(¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢Š(¤¢Š(¢Š(¢Š)h¢Š(¢Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¤¢Š(¢Š(¥¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢–Š(¢ŠJ(¢Š(¢ŠZ(¢Š)(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š(¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢Š(¤¢Š(¢–Š)(¢–Š)(¢–Š)(¢–Š(¢Š(¢’Š(¢ŠZ(¤¢ŠZ(¢Š)(¢Š(¥¢ŠÿÙÿØÿÀððÿÚ ?è«¢®Š–Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¢Š)(¢–Š)(¢Š(¥¢Š(¢’Š(¢ŠZ(¢Š)(¢–Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¤¢Š(¢–Š(¢Š(¢Š(¤¢ŠZ(¤¢Š(¢ƒAÏoƃEQEQE-QEQEQIE´QIEQE-RQE-QEQEQIE´QIE´QEQEQE%RÑE%QEÅÀ¢–Š(¢Š(¢’Š(¢Š(¢Š(¥¢Š(¢’Š)h¢Š(¢Š)(¢Š(¢Š(¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢’Š)h¢’Š(¢Š(¢Š( œR½ 94´´´QEQERQEQERÑE%QE´QIEQE-RQE-QEQEQEQE”QKE”QKEQEQIC|£?ʃIœð ó׊amü&}ØŽ”ÜîàîH¥ŒS€` çNÀÆ--QEQEQEQE%RÑEQIE´QIE´QEQEQEQIE´QEQEQE%RÑE%QE´QEQEÑE”QKEQE%RÑE%QE´QIEQEQKEQEQEQEQEQIE´QEQEQE%QE´QIE´QIEQE-QEQE%RÑEQIEQE-QE”QERÑE%RÑEQEQEQE%RÑEQEQEQE%RÑEQIEQE-RQEQKEQE%QE´QIEQEQERÑEQEQE”QKEQEQEQEQE%RÑE%QEQE-QEQEQEQEQE%QEQEQEQEQEQKEQEQERQE-RQE-QE”QKEQE%QE´QIEQE-QEQEQIE´QEQEQE%QEP(£œñŠ{cÞŽih¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢’Š(¢Š(¢–Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¢Š(¢Š(¢Š(¢ŒfŠ(¢–Š)(¢–Š(¢Š(¢’Š)h¢’Š(¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢Š:QEQEQE-QE”QKEQEQIEQE-QEQE%RÑEQEQEQE%RÑGÖ’Š)h¢’Š)h¢Š(¤¢Š(¢–Š(¢ŽÔ”QKE”QKEQEQEQE”QKEQEQH(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š)h¢Š(¤¢ŠZ(¤¢Š(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢’Š(¢ŠZ(¢Š)(¢Š(¥¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤ÅQEQEQERÑE%QEQEQKEQE%RÑE%QE´QIE´QIEQE-QE”QKEQE%QE´QIE´QIEQE-QEQEQEQEQE%RÑEQEQEQEQIE´QEQE”QKEQE%RÑEQIE´QIE´QERQE-QE”QÞ–Š(¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š(¥¢Š(¢Š(¤¢ŠZ(¢Š)(¢Š(¢Š)h¢’Š)h¢Š(¤¢ŠZ(¢Š)(¢Š(¢Š)h¢Š(¢Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢Š(¢Š)h¢Š(¢Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¢Š)(¢Š(¢Š)h¢Š(¢Š)(¢Š(¢Š)h¢Š(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š(¢Š(¢Š:ÑEQE´QEQEQE%RÑEQEQE”QKEQEQERQE-RQE-RQEQKE”QKE”QEQEQE-QE”QKEQE%RÑEQERQE-QEQEQERQE-RQEQKEQE%RÑE%RÑE%RÑEQIE´QIEQE-QEQEQIEQEQERÑEQERQEQKEQEQEQEQEQIE´QIEQEQKE”QKE”QKE”QKE”QERÑE%QEQE-QE”QKEQEQEQEQE%RÑEQIE´QERQEQEQE´QERQEQKEQEQEQE”QKEQE%QE´QERQE-QEQEQIE´QERQE-RQE-QEQEQERQE-QEQEQIE´QIE´QEQEQE%QE´QIE´QIEQEQKEQEQIE´QERQE-QE”QERÑEQEQEQE%RÑEQEQE”QERÑEQEQEQEQERQE-QE”QKEQE%QE´QEQEQEQEQE”QKEQE%RÑEQIE´QIE´QIE´QIE´QEQEQE%RÑEQIE´QERQE-RQEQKE”QKEQE%QE´QEQE”QERÑE%RÑEQEQEQE%RÑEQIE´QIEQE-QE”QEWÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¤¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š€cÇ¥6I$Üý;{Ò;RÌ~•]w;ÕSè+-#’âg ’ÍÕ½RHÞg'''©ô©Õv +J–Â.=Í\Di´uõ¥©)Ô´QIœsA!FæéA85JþqÚ¿xóXš½ÎÓ±HØÖf£>jœqÍe¾Á«Œ«åŽOÞ¬¦Âª‡O½g>ÕUžk6î&³¸Ú¹Ú~hÛÔUKˆšÞ}ªx8e5VdkiÕGò tr8û,[¹7Ÿ©­‹ö °ÆA„9úšÖ¾ $(¼,gëO`c1ƒžPþõM$fÒH'-`Úÿ9©eCo"ï(+þ÷zu×Íh2 ?•O©–}1IS…q϶*]C-b2~•V ¼™ÑÇÝݵǧ½dX]}–ú9ÝݵµeØÜù¡‰ù Áö«°(i.Pž È?…kØm–[¸‰Ê»c>•©g¶V ùY‰ÍC8*̬qùÕ{øÝ‘€,æ*´ ²·QD'ÌT]»_¥$ ΉÍÄt>”±2…ÛœwôªwöÏw„ˆ+2ÛIûݪ”ðIy3¬`RÍɪ3B÷r2¦7)-ƒßŠ}¤"Ò4‹ªb;¶?úôÙb¥aQcêÄõèš4¶"%þŽæ¬Ä‚KgSŸ˜`}G5rÅUì§ç_”ÆG5jÕ7Yʬ[î‘ê9«ÕÑV½QEQE´QERQE-RQEQKE*"Ùb{/MæÎý«´™Üý—…¥‹îgûÜÔ¶K¶ÜgïI© ]°~iõ=IEQEÉØGbx§½VÔ%ò­·g«½Cvå!ÔàV5Ë$òú–뎵ÎÍ™§òÔn,yÇ_¥c¸ógã!Ï5CXY’쌊"ƒÜUmV9c¼ ¡E TúU]F9VìîR«€€zâ§x„ª€õ`M+Ç¿¹ŠyM̼r¸­V€¥„õAÏãZÚ®Í:ÖAÃ/ñæ´¯­öÚÀàà¯Jrãa•Px§okˆ6:Ѫàý8¥.g„«•ŸÂ‘žÝál–\r{ŠXç{.kwºcŸmÔ$­=ƒÆydÇåT”‚$P9ôü« °ÀëšÇ|qïV4ç>{)u?ZÔðü».йJu5¥¢¹29ÀÀǽXº¼Õ•yãkGS…Äë2üÃn͵vö6ó<ÐrcéUmí•9%W$ƒŒ¡`ÄCp›I ™È8ÅUµcåN1ƒ=qK“Œ 9þj+ ~Ð ŸàɦZ/ïOVŸîÑ/Ï<¸ã¸ÍCr<ËÉBñócªó5Û¨þö1VÈò ¡9­Vg±Æx ?^µ§&#¶òÐð55kUÚ(¢–Š)(¢–Š)(¢Š(¢Š(¢Š(ý(¨g¸HÎÍÀ>:v¨ê„vä­ûÓØª·wi•Žó×ÃM2aUJ ä“Þ¢´F¹Ú»vÀ§'Õ6Ým¤®Ø×ó&¬qŽœ Ó;vsLEQEtæœA;A8Î*ä¥~f Î+#RÙ•œ±üÀœÿZϾ‘·e‡ Ú³´ÉÎÒ¶95CHuûI•ðžõSLuó Œ3W5kÛH­ÃÈ¢Vÿ–`‡Ö´µ‹ëàÔK!ŒÓÞ­ê—¶ÑE–_1ÿ‡Ž•™o1–&v!YOåX1¹tݲâc R̵pß,QÐo¶uyB¤6Äœ Üõ¥©I†Ž ~ï'ëL ɲG4‹¿Ý¨[u²B_™&NSû£µ1‰·Ø/"‚ËýÚ@Å.U±ž œz“Å2'xî7(ÎèÊ=XñMˆ´r¶Ñ÷Óaö5T¡„›º¾˜â¨O–êsœŽ*Œñ…pÀõ4ÛÆ>|hШË–a*€váAçñ¨î¤uT+BÅÚK%9 ²‚}…nسO¥©üØ85•Ø]V{wÀÜ6†õ¬Xn1{;§_qPd´±m±'½POÞ]Ä3ÎëTáW¦ÉÈTÀ^§=Emß!tam ÏZÔºRèv®Ô}jjÓ«”QEç™çgš)h¢Š)h¢’Š(¢ŠZ(£ëG“ÐQœr{Uh¢Rï!;·éYVö¢YÞV\´ŽXý*¼œ» ³¶ãV1ÚµmPÀUÜ`(¥¥¢Š(¢ŠŽRA>•ZæFV p0 E3Ä «x¿¹ ò9ö¬ÝEvÛÔüª•ðÛ#md¢KöwXÊ)8?7CYQ‡1°•IçšÏ@þQÀz§42É'ïß*£,çҫI—Ì•–íUeÌ™äâ­éå^]ǘã^O¯=*kWQ vû‘òG­Ojê’,„|±žžµ¯¶I°ò «!ÉÏe ‘Ëw77ÈŽw;žÀUè–I¦YfùPüÇ=ÀíJ餸a¿p~”žg™q-ÓcÄj{v¦‰7<— ÕŽéP\\"*‡n ÎR}M$ÓˆãUläœãý¯SDÒˆÕžzÒÅ•±·t`g=3íL¶µ{–fÛ¹n#8Í6Þ•Œ˜Ü©Î=j)‚Ï7˜ ç•NàùÓ³ô'œÕJã÷³4œdóW¬ˆ6(‹÷öœƒúþµÐi2£iK ë·Ö¶ìÝOXãûÛ8Îk$Ûj©2Ž +úJçõd6Ú€eî ŒŸjÂÔ¶ÕCÃ[v“y.Y˜/™~}M\¶¸6!,¼að{æ®Á1´7JƒïQofhð˜%×üÕhžæ,w‚?:‚ÚB÷àþu­"åN88®®î0a¯ ‚Mt¨ò”|ÀfST””Q@ëEM"€ àrh~4RÑERÑE%RÑE2V!zd‚öBà îïQ\¶#Æ3º™ É8íPéä³>:(Ûúše¡-»ÐüÍMWjÅ%QEQEW”;† À VuÉi]NN2z©1ØNöàU]FQ! äœU=^Akò6»ªÚ›„Pƒ89¬™edo3x)”úV+ÈCnÏ”d!³ž*´×rá,½”zÔrJó6HôµÊòœ ‘íZúm¢Ã ùì+æHÇ¿ ­ Uù|÷w±=ýªý¥º ÌÇj¨Þ}ÉéVàN»Ô§ä@j±=ÊËËŸ‘ƒÖ§šádƒ×…Ò¤?: ågùÓwùc(äÿ:DŠ|¢².$óo$víÁªW2n›¨àÕ¤ó&f'Œâµ-dXo9l+JÆQŸ½Ÿö­+YVJH?3àb‰­Ç%ypsQßÙ¢|Ë÷ó–ϽCylª7'ÞÏ4ÈØùñ/Cço϶9¨ôçc}nƒ‚% }ÁÛc{Œ9cïž(Ö G@þcíV?ÂÕk\UYâR7ù‡†=OªÄ1»*Oj%;øÝ°-fKËîx€+>Q¹Áî@jÒÝx•¹#îŠÙÑ,(ºdÿË1ZºU𢠆vûµ-ÄžZï¿ *Ö­t-­JÿËYA =­M¨Î°@Søäjš¯ÕºJ(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š NëHH YŽ&ªKt&«G$)ÇojÊy¦»‡fp3Фd–w$) ÛÚ¦‰v®{š½g•r[®EZ<´ÇsRUŠ’’Š(¢Š:Rº~”†«€†äg8&³ÀYN$÷IªªðÜŒô&³õÙÒ QŸõ’p‹è=j‡ˆdD$æIz ¡®J±ÅÉÌÐ{V-”eÔ¼ƒ êk Ý7‚_¥dÛ&å-'JÓ·Xœ‚!2;úÕèöDI±OúÕØÂc›Egj÷¦i¼ p‰Æz§}ròÊTÆQ¾ºyf¤ŒzV®ŽÒ% ³I«Út9H•‡I?Ê´tøNÈÃ1“žõ~_SÀLäz¶*ëà«ò„ïU–åX‘€8ïV Í'ý¬â±Š“&Rk'¥uÍkD?Ñ’<‹ó{v­x1å$XÝ çëÓ­6*˜äýj€¡Ú?™@{T·`$R4gtgÏojuÈ •9S޽ª¾1‹Ø:ç§ãU-†Ûè™{ÒkÙÄNƒ-èsW¦©Yi#vù±%Á9`8Uúš­i`ÒÉ€7Éœ“Ùjµžž]þo™ó—>•®vDüÁ¸=…jXB¢}åo½Û§>ðn¦¢,]Êö±õÅF܆QÎüê6åX@ŒT¬¡ù*„ñïYJ¬%ßýÓúÖr)oþéÀúÖÌ1´p*ûÀƵ¡VŠ%®yöïZQ¡DUÇ9çÚ¥l(è<ñÚŸyµ`DÖNŒ­ßÞy)@Ènâ£h»…qÂŽŸQU´ìi[©úâ °ê‚:(Ç×Û×#÷Ï÷T‘ŸlÓõþg/ÝÜT7÷†i÷›ƒù’tn3øÓ˜9y^ÜUwéädš¬ßññÁç½_‹î.yô®žÇ?d‹''eoÛçÈLÿv²“/ 8îw~µÈ«%½Msq1y7ŽìOëŠ×®ÒºzJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ( ð ¤v…úàR´T®IË(ÀÂ`jźϗ,Ã*áGéY³ƒ²I'ÇÖªE’{xˆÊK)ôŠ¡aË{ L L’ÀúET²A-Ò+—ï7áVîŸyXÓýZðÀt5{S¸Yb€ Žp>ñ«WÒ«²¤`ÀÇ©ª¬ì°’¸¨=XÖs’! dáO÷ª£çËP£Ž¯ùbÞØü+¹Ï­n}™,ôÿÝŽîsëZ­ZÚáFW-õ¬c©æPRÑ©ä“Íb DyÊ|½ê<â²…øóò÷(÷«¶Ï¿l‹ÂÈ1×5jÑ2ð®;œÕ›f@Aʰ…G4,ï0É Û°zzŠæãÜn#v~• ±*;8Éçjž"Dk–Ú ÄŽýU$91¦ç Ãf¦%SçÀ<ÔˆŠŽýÇV<OAÿÖþ´üm„+Àãh>Ütþ´âkÙíMMŠ •{àÔʘ )÷¨™€Bp@úÒeŒQÉòîvà{RD¦8¡m,îH^ø‘Bã±Î)Óp×îÈ> Iz©.ëÅÀF?2ޏéN¹E}Ó¯ÜsÈö隣§å [³|Ñãn{ ͈2“´g{ ¡8ÚÇæCút­‚[ì²@CÎ}«~2é£Ê$]ª!p îMlä.A"íQÁ=øª2(e\d ¨5Ïp#ç¦ÓšÃ ˆH#ª¥j×i]EQIEQEQGJ ÀÍÍ uc…u'Ði‹$rE'ÐiªèÇ àŸLÓ€4ð¦ƒHÌ©÷Ž*9gоã>ƒ­2Icï0úPa¹NiÑÈ’¦øÛpõå`ê œŠ)Ô´´QER©Å5¤Eá›…Õ~ñÅ4ä‚áQÊÇcŒàc*i’䣌㎠Ry•eÂsµsþ×zÀy•nWËÚÁ™¿Ú¬¦™Vç÷c*­–>ô€îî¨@L±fuãô©l팲<¾YP™bXuôý)ö°yŒÒ*$–ûÔ3­Åè+Ÿ*èÄÿ‘Pj×ksv¢6&(—jç¡õ?ÈT:…ÇÚ.ÆNÅQïV C°±ãÞ¬éŽ.@ö÷«6 ±í€J£®DææIT6íãµU×ÑŸP•×$ U5„vº’AÈÀÝÔ¹Æ$ëÏðŠf‹j_œa‡$ÿtRi6À±Ü0ËλSÇo$wêì3Žr?Jµ»Å~†vää~•e!xîò{u÷©å†F Äa‡%Ü2»°ÀÇËŠ|ñ>›€>íA{u l©Ú錞•ZöéËî.1ŽzTS¶öaÛö©-çmò’܃OŠ}öÛUâÜæ›á zæ¥ „•r¥¢1üF¥ˆÇóïaº.Øþ#R!C¸œŒT€Ì¼ ýÚšÝØ£nÎG¯,(®s€AA‘øUhwj'Ÿ_lV}³K¨” ’2MR´„ÉxÊ8ëW¯ßäHGŽXÊ*÷ˆ.A’`ó8€éVu«±Gn„dòØô*¥ã²LÇˆ÷íXänŽV=?\ñYEs®~ê¥kWe]EQKEQE%QGéEE$ ͹T{ŽõNæÉ]Œ‘¨Éê½Ï½WšÙY· â«;¼n+ÈUÇJÏ•¦ŠMŽ’K·¨ëJ©!•c#ÈGaÎ=)e|Ÿ'cÈsÚ¢Žàgs[€Àr²ÓÚš“`î0…#¨=jXgZD [åÝÒ¬Ù_Ç K l®î‚¤´»H÷Çž7¹© ÒîÂ.üu ñV[TMûR2øêTÔæùKaSpîA§¬ñ•ÜÖ§[ØZ=ù?Nõ ºŒ¦îÞ”ß; mÎ>•½ÜÍÃð¦ŒýÒE ‘‰ !cH·±!!,[¾iI ;S'×4Ç37ÊÛPáC’jÔÄE Tÿa:Ÿ­Fþt§c¿ì¯&¢Bî9ëÆjÅ–›¾Öe‡8êMmfaˆù‡§JSŸÊ·(1º@AúTzÝבla\ ý*-Rãʀļý+Ö@¼÷ŽÔ'¦s‘6vƒÕ±¡9+êOZµnYÎæÊ«gwò«öJ9ËpÇôýjí Ws“ÂóS]áðÄ‘íŠuá2ï(IçÒ‹¬É»i'µE§¶'Ë’õô£J*·˜‘µHM.žÁdf9È\êjÊÏ#{nê0½¾µm.¢gF Nwè>µ:Ïo›Ÿ_j|D3’O84·rÛ4*М±4· "ùG%cjE–àÇØœ°¬[õxî gŒ7áYw…–à'Lš®ØD’b €y5rÑŒqI1Pz;šµ)É“€)è]aŽ 2ìÅ¥ÀäšzH#…X’Òàu4àYcHÔ{¿ûÕeXíT*c ãvj±ؑ2ùDaKç¶jpÇjFÃaR}F)P‹d–wszš7}ÅÛæ;a}ý?\Óà +IgeñÀ÷ô¦F¸O2O™Û¯µb±g&Yæ~Xžõ”ù`Îç,ܱ¨YA·’2»²€`ôÀäÓQO’éýáϰ¢$Ý!{>Ù­Jìk£¢Š(¢ŠZ(¤¢Š(¢Š(¥ÉsFi’F’˜dý* ‹X®q¼s늎h#›ïŒZ¬lqþ­ÎÓÛ5žú7Î<·È=³TßM²­Å/ÙJ`,»Aì;û)£e"rãSþðŒK×°§ VÏ.¿P9§®˜êÙiTeäÓ…‘S’àaÍÄÿsž(›Ëž5àåAÇБXž œG:&AÝÚ«*…º@§cÉük=@YÆS&«( /  Vì˜F3’êx«vgʉä~€=É«VÀ¤E˜ü̓ëSs(Ìíl ÷Æj}žS¼lÃ~Öã=úÔ mgBFò ǽ:8$¶“ÌÉÎ@ëÒž-ä³o1HÜAü8 @öÙeÁ$sCC °t Ž~òކšb‚M®ªÊçï)èi6Dçr¬ÝG­Kb989Ôð)c‹ËºŽ2w }ñO]8} aß–’òSĹPGÖ²¯w=Ìœ–r3øÖ]Æçœž¤µY½”ŤLP'Üúþ%Ä¥Tm%BðKq)Uܤ€þµkO”JŠï•%°ÞÕwO•_c9ÚY°Ùþ·g"¶Òç‰Ï±«ÒDÀÆxÚÍZ7„–)Kl6zUÉcÛ*HX'æ5 Ô«4ÞZŒ$3Þ³5{Ô¹u‚/õ1s“üF³õ+µ¸uHÿÕÇÏ×4»…ww8ü*®áå®}j ÃËõ¥‡àç•“#ôÍY²ÀœƒÊº°ÇáV-@8ìÊjåtÕµ@éÍãš-RQEQEQEQEQEQER`÷¢ŠZ)h¢’Š( œh=+–ñG7ÈHãÊι1:ˆfù rþ#'íá˜vâ•§ÚšhÉÜçs“ýÜÓ<ÕaÝÁ<¹ö§™‚Ëfºåþ•=¤ò]ÞJ¬3n„@*[iÞâå· ÄŒ¨%¤ÒMpÌÜ¢6 ÏÔ'‘5i'ÉÊÈ)ôôª—W2Ǫ¼ç;–MØ?Ê©Ï<ê†RI) È>ž•Ôù‰sŽÕvO’{þ•KÉXd2(,rqŸz©$bι$÷>õVD#œŽõI’[«ƒo†%²Äö¨"†k¹ P¦à,ǵARÜ’ˆ¿ 9f­;8ÔÈ3Œ6z»oÈâg8vVGòÑúŽÕ*‘l§iñõ¥•"òØ’à‚xúÑ+€HSUP†$dÍSÂ6Iä¨T6M9¡ÞØ^XSÒç#î Éèá.r¼*Ô˜Ú«œÈ1Ö´ÔÛ¹#rÇæ_Z¼öþL<Ÿ™Su\­ÚÔ¤¢ŠZ(¤¢Š(¢Š(¥¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š)(¢¥öëEs>%]Ú„hT®CÄ#þ&*à(Æk™ÖÆuùj¤¡§Õ|¥,Cb`*¬Šd¾òÀâ1´~\ƒ6 ÉŽ#kgIƒÉ²>g}qZÚT; `—$^+[O‹ËŒ.0rH5•¬FZýä‚!Y𢼑ÁÈ8Ïä+7Qˆ½Û¸ç5±£$¿dçÓŠÙÑc›ì¬}«_LI>ÎsÓmtééÜÕ‡rèø0{úŠ™ˆÎTàtÁïëQ0eÚO =‡oÖ©¸B›;=»UfáÊ•Éì+&-A§ ˜GÈGlV_ÛV1ÉŽœLVp»29ÀãOãZr´Så-! _ëZrLöú:ÆŸ)i1ûÿZ¿,™kÁ,CVUµÁ´]ä“°ç­e[Üf’zÖ|7ÜïÜr kÇwÞÈWå,I`jýÅÔw~R(*Ç%óÞ­Ï:\lDÊàdƒÞŸÆän¬p*º©ÜœTw)OSOXf8ã?5sMÄyi8V*¿øð'ôrÀ„\·Fa '4^K¹¾@:`ŸQRë7~d…P`†>¢Rç{”NŸÅïW«~¶)?Zæh¢Š)h¢Š(¤¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(ª:²Ï,rm°zÖ6»l²LŽË)üë3U·Y$VÀË/Zʶ‹:µË© J©öÏù5n¼™²@Æ*̶Qö¹Ÿ8݃ŸçZqM“h|`` p+B ˜šC–*1Ç Wá¸BıÚ1Œ‘ÒªÍ >ùdö€Ãß5Æ’y’¸'#ß5F¹ÛŸAëV¬.?‡ÇB{Õí6ë!p8&®ÙO¸õ©Ã$ŽŽF좥ŒÛÍ$ÑIÉ,v wö§Fb”ÈËqǽDì#%”´ɪW%cbȼ¦:Ÿz­+*0*9SX×ÖR[j[¢Bбܤv³u µ¾Ê)18 ¤zμ±x/rƒ÷l2­ìk^uY¨<’ˆ÷åZ$ l•O9Ä{éZ¶Ãßkʱà³Ë m™éZËŠÙfšX˜ãž+:;Q+Ëãž)Ö»¡¾ˆ8ÃFø>ÔØ÷Gp¡øe84ÔÜ“mn«ÅmD —ŸàÁ?Y„ '1œ}jÄI¹·uþ´±0˜ÛqÚFâÜu5jÅCȃVÉô&­Ù(gÁª·&ûÙßpÏÎGü`Ä÷ò•¾_öA5X–è’7 äãØUêê+rŠ(¥¢Š(¢’Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤éAèh¨®£ßnï"¨ë+سJÀÕmIZg©CšË1=ç^¯ƒþ?ιåRd2ŸéXȹbßÞ¨ZuX–,å¶çqC̦!9=}hyTÆ©Àbzâ¬Fà.å_™GÖ¬@ûe_˜œÕˆ_hÈZ™\MH A'Š´²¬Ðg0$ä}*mâHsÀ EK Ç—¸Ü~cSÛ¾Ï,†P ?5Om)‚1““QÜ•`d@ Î6â5RþD–]Ñ€I8 wª·n²I˜Ç$ã´;g9Sµr:ÒÈÆxv‚¿"äS¤&höó¸|еÑÈHTRÚ¦è§AÉT~B»â•G°•AilÑM#¸àŽ>µ] hKÈÜqÇÖ¡òŒeä=OJ¯~8·¸êæL1þõT¹Kß8&«\¯1ÉО ­8W3Èî O©íWl¡Þó9TŸ|â­ÙÅæJŒ¢ãŸzpG)þ'rIö¥='ÈáHÜä–>Ã¥8L#g©%Øû⢱Í<|ß7«f£ÑÓ7˜à8÷5–£Ì,Ç©­ é«n’Š(?•Ph¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(=*+¦Ùk#{Ua¶i²ã¾UÔÎÛ÷8ªB‡ ËÀ¬ÀW ÷±YCbÈLÎ8È/çTy‘€# U,—“ß-i[~ê"GËŸåWâ(ðÙÃ3W‘LiƒÆGnÁ–O•€å_ÒÈ”ì`,Õrĉ2:9j[.¡G €j *]6ŒAÔ.ÙMË· HÅ"y'îTN®}j;5æ “ïH}{þTÛ}ï.bêçµ,QþþUŠQ"ž§9ǯò«ÄÔÉžbà?‡ÍúŠ’8×Αb}è0Njkb Ë´a P¾*Å‹)–à§» úâ§µe&R8Vl-E0û3’Äsó ûñU¯á6ÓHùùõ” Z(¤¢Š(¢Š(¥¢ŠJ(¥¢Š(¢’Š(¢Š(¢¢»ƒhî³õÌ› ½ÙÇòªz·6 íš Ämbº`ŽUÏzÊqSXÑNa·ûQ‡Â«tÈàÕh¥òP\ÖO›åVèj¼sy'(ç€}+B £¨DnàÀ^k£¨fá Û´ÐU¿´}±~ÐT(#n[†ÜAfÎÄ·@G¨Í\‚ÔAbó3÷A£5m Ú³¹'1íI)Ã;F¿hQpûço%~þЋøUIؼ̰ÿaEU×{+H!·Î$'Ì+×ȵdkÒ‘ ê:Öv¯/ÈzÖ|¬‘Ú+¹Â¨É÷¬œ¢Ûc…Ç5@•KpÍÂíæ¨ÚÇþ”É0’ÝËõš ·Kí˜ó c¹}9¦G]éJÑ‚Z*ËúÔÚJ46!XrIfµ%‚”µ‡RK~SøUÝIXJ„Œè}ªß>³6ä*€zwnù¥¸[‹O°o•vg#»¹ý)ÓyÖòÚyX ³ó=ÿLTšÆšú¼l„ pÕ½kL“Q·ŠXÈY‘z©59ïáGBŠ9SÞ¨iz\¶×BY™GU œÖ5¦Ÿ,FQœ€¬Û;`lÈÑÓ5¬¨ÑÈ™#8,IéÍ_Hž)•\Œíä·j¾±2Iµ±œuþT€8-„`ýæÇ¥&ù#o)à>:H„h\åsóc½$*Ìý9$@xªŠŒÌqÛéUUI9<{Ò3$VË1þ ¬µb-F·r…YGnõb0"Ìx*Gò¢Ò”¶åwùIêWÓ­šIVipyr¹þ]h´ÑÈüïlýFiŒCO$‡'§Ò¢˜î,ç£?¡˜–VcÎæà}+Nºªß¢Š( Ly Z)h¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢”ô¢Š¡¨‚$„ޤ•…axŠ=³ÛʼY:Úbhä^¬) +5ª)PxÚV¡XRâÎ<»HúR4K=ºÈäVKiñÄí±ˆ Ö{Ú*1•"¨A;r ;F·`î&B<ÆãÞŸ¦[–“lªFóNÒà;¶È»w5iß¶ß*2Øäþ+ØÖ¦ºp!‰Ê“ÿ\qZ±Ç”¤à‚sþïjšÊUtò˜ƒ"t®*æ‘p“Û¤LG›@}*ÕŒË4*‡Ó±©ä‘B°nU›™Õ!“cãŒ{Ô³H¢7ÁÉéôª®¹òÃr=ýk`KŸ°QÈõÅPt.vŠFq‘!#Œž¿ç5®„gq*1“Óü棑¾r½OcC(/¼ðŸ* ž˜ÉW çcåÜsè)²Ž³sµ›Â•XÛoßs¹¿ÙeXv™ä9cLÜ¢ «Ë1É>Õ¬»Íäiðó4¤1 Ù{gùþÛ´–&Ê?šI0N;/lÔw‹$ï ’}÷åñØ{Õä‰D±[Ä>H”&{g½Z’4’ú X[1¢2ùÉÍ[dßG _r% ‘íHùçCÜœ}EFpíhŽâ® íò)ÔˆŒì²Jÿ¨ÅEn…äóß ´´÷úÓ"c3a°:{TQ¹’VfxñíYèZI÷°Áf#§J¦›žbÌ9nžÂ¥—w•±×¿JšèºÚG «µ‹=øýz}Ñ"Þ8œa·ôš#gÀÈ^ÞµE†<Ž™ª‘9ôéDqÇi$Œ½Ô£/!ý«åâ³Þ‘¹{©€Ý+uQè*æc¶-m›‰±¾CØz »ˆ™UT}Ò}úÕË>Ï;*/ÍåníV­bòep«‚žÕOƒ#`e†O5”Ä´¸^¹'ŸZÏ$´›Wïb´««­ê(¢–Š(¢Š(¢’EQKE”QEŠ(¢Š(¢Š(¢Š(¢Š(ªú‡ú¸†q™?¡¬¯œ[AÎ?yý+?Z8†.z¿ôªç[tÈ¥d+~ì×A[ä u§¤· w ç¥jE9²±’ë>`Qœ{š¿æ›[9&' Ö±´íRîyü¹¥ßäŠÉµÕ¯.$ò¦P¤‰B¤k×ÔÕ(í‚¡dP¨‹×Ö§· ×H÷¢<SiñM%Îè¡Þ±÷oZ’Æ9ZS"G•^æ›3,v¥åÝ·qÎ1Oy<ÄÄËœvÅ>FÙˆ¸.X·Ò•!>\*üÔŠhöˆ#|Ž2GÖ™*€c²γçÖàW*¨ÄÆ{`UC©F²}̀ݻâ©N%“•Ü7*Ó·šÚîî#P7uõÕ®³ZÜijÇLŽqÔ{V¯›ñ ‘@u¨ ˆ‘¤“)fv`Ðf³ÉU·ŽYA21#ðÍSm«r8˵M!Ü ƒƒ€{â’c»÷€`p?JlÇ.%Æ8¤ºÉŽ4RSõ§j,!QŒytj-“Sÿ,óŠ·lCÁ ›@•t³ZÛ¸?(ŒõÇ?ʶ­Š¼1È>îÁŠ£9/¹½d##Ó5Ï\·Ÿs4ƒÒcÓ8¬i‰–y®]€üëNºªÞ¤¢Š(¢Š(£ëEŠ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢—­¥¥T¼´lzà§½`kc÷êO\cÿ¯Y:¨ýðÏ'T@;À%øÈa€xõªé¶ÕU%PÝ=ª4Gr¡W'Þœw#°xö’=r*I¶ò4OÆ##¸4éH‹FË‚h|˜Ö4e/(9?Z$,è°#€6òƒ“Ÿ\R¾é1¸QÜ´òɃüííÉ«/,v¶oþñò•P*g•-íž$?9AQǘc-Àã#Ó5œ+1Ÿ~ûØ´ËhÖBŒçåQ¸ý)­/› lõÎÁúUV•®îr1ó“´ÈUmís9ÇVÎ1ù æàÓ.¦¼xB£bzVt:uÄ×ML•m§ð¬Ë}2yn=¿tMtQ¬vvë•ÊŒóZ¤ HD×p!yÁ­c¶Þ`Hê"‡D[nvŽÙî ËJ±¯^FzzŠMÒlð£ò¥šAå¤*ß|ã=Ëw?JIJ#·Œàg©êǹ¤v´p' ;ÿZY„V^6áó9§_m…WhPG®&‹â‚Âè*{V³#²¿9þµ§¥ÊNŠäð±ß?Ö´,d-¤‡<SøÕtf{g|a¥8\}k.Æqƒ#müøÖ|{Œ¹a$Vu•ÐRQE-QE”襥¢Š(¢Š(¢ŠJ(¢Š(¢Š(¢–Š)(¢‚qÍ6F oÏ4ŒB®}ðjß‹“÷sšÁÖÕ’á±?.G·&²u@VáT±û¼ˆ®<ÅÜé»G(Wznqócô#?8Ï—½W–[§V3 ~gsÛèj;¦¸‘Ô©“È,\öÉìjƒpÒ. }â•XŽ(ÕÃĬX€^BÝy¡«"œõf-Ö•BÜ‹Ï9äÓü²òGñ‡8Ω fg+›N>|ëRyfv!dÚ?Ž•ÀŽ0€òTƒôÍ,¿¸ˆD‡ï)Sî¹¢SåÆ#^7.¸¦ ,EºŒûãŠuœ~DÑ»qÎ3ïŽ)öè!3{ƒõíQùþE¹q9÷û£=h[obdR 󟸔ß4Ee•#Í—9çÒ0ÁwÊO=j„C8êÃóÔÕT#Ö®H¡|îå±ééSÜ"Ä n'–>žÕ%ÂˆÔ 9$e©–ÐÄ„Ü4xfi«66É fæHðÌÑøÕ›;t…<ÖO™³ÎžFg9Î䞃5±â[Œœ”“Ðv¨?×ÉQ‚~¦šŒñi¸ Ç }*o4Úh§ä,{ôù$û>³øœ`cQ¨"ÒÑQš‚U1Xiäú?ù¦L¾]½¯¯–GëZUÒÖÍ-RQE-RQEQERÑE%QEQE-RQEQKEÉ9\T7ctx“ùTSŒ¦?£xNØ’zcµ`ê,fÄ®rOËíYWÄɉ ËtàÀˆê /@zâ„›ýÀÈäg¯ÿªœ²Ÿ)U€Ü:fšÁ¢¯ÌŽ~]à Rùo€W•ü¤À¥(þ]¼‡ä¸¥J̰ä°Ïò£`‘™`óÎ>”ß¹ ¸î.®ÆÒwž=Hÿ ‚4ò Çÿ¯PƘ,€€ñNeTO•¶Œ*ƒ3SD_Þ0fQ„…L¡åÎâ8æ›qÎö'pgе>í÷³œåGSض)gbÛŽr8çÔÖJ×·ÆÞ >fù›Û½d³™ç1 îk/Ì7×…MnÅŵàghü*ý²êÇ$Ú¿l 2óÀÉü…$ÅZF”}é’°’à‘ÊÖ£b$¸bä¤e•€‘›h8 £ ~TÑewÚì ;WdŽF $Œœ; IJÇQÕÎXû• ˬ6¢%å¥;˜û• ˪B¨åŽö4ÙJÇ‚Y¸U‚«¹y¤Hù'UG ¨Éêô«µÒVÍQEQEf‚qEQKE”QKE”QERÑE%RÑE%R?*Ô㊯zpÏÌqQ\ŸÝ{šæí.&ŸYòšFxË7Êz t®VÖI'Ô<·bÊsÁè+ž´y&¿h݉^kaò#`z©,;g®·2?ð’Àã¶pjñæ"±ÏáM²¯åžSæsÚ¥°ÜcÄpÑüÙõíŠ}™&(pPçó¥.wžU»Ã¥2y™¦*Ü‘šd²”ªœúñHªYä8 q€{ÿõªG,ç§#Ö£DbÍž2x÷¤pA*TqÔ{TžYsƒÈ4ð„u5ª$6lЀ‘ÁéÅ?PþÁæÅ€™#ƒÐâ‹ôo±ùˆF:} Rðõ¡ˆIq ùöáERÓ-¼»yf“«.­¦Ûy6²HãæaòŠ»$ª²!vÆóµó§–Ú»‰Æÿ•iŶG“Æó…¥Áû5Ám x9¥…OÙ.œ. ásýÜ6iÐ,ælteþuw>jåîLqïZ²>2&#f 8­ s$EП—ü*¡bá˜UT÷Ïÿ®²œ™|ÆÆ (~5žäÈ$`0F%“ï¹rÜ•L ¹¡8ûTîܘã8ëV4‡ËÌç’©Á¨÷ön#÷ÌGà*¡-<ÛÛ“+š¯Ì’©n<ÂOáZ5ÕVõ-RQEQKE”QEQE´QERQEQERÑE%h¦ËÂnV«ßÿǹqü'?CwcÑMfEgÉ•\±‘‰R„zVZÅktÌŽXÈIÐúVY·ŽÖáʶK’sVœ„‚xõÿõÑ#0‚{ùÿõéeb óëüé…Eà’IA œæ¥ÓÝch$–"2¤p2sššÉ• IÏÈE7n.N1Î1žžõWo$P%‡^žõUF.œ±Jy ‚1@ƒÇ5aÝ\ ó#À 8qS¼×p\8ãwLÓ¢`Ys¹ycÉÍMm,XÚÑ|®œ±<楊HÎP§u>µRåpŠˆIV#€:ñúU;œ"¬hÄÆäƒ×V|±£ŒG‡*¡]±Ä06;šYw1Ž(ÆFÐ}iÒåÝFÔÖMÌŸjñ¡ù"!{㚥u —TXã$Cjý{Ö|ò‰õM‰÷#ù@úVº0’Y" ¸H#ß½ZµrÏ%º®VM¡‡ÐÕËf.ï Œ«OáS¡Û<˃‚7`Uø_Ý¢ôÀ|­[‰ŠeÌ* Ç—p¡[æ*z/½QºÄ;òÛ@r:/ÿ^ªÜ²ÅpʇvW&›ø¥™À ‘…·¹¨í$x Æ5ùä]«ìzŠÕä„Js#ð=ªVD¸°Gl–ÜJã¶:[y-šÏÎ9g•@©$…­ÞÜJÙb¤‘é[5ÕVí%QE´QERQE-RQEQEQE´QIEQEQM“„=W¿`–­»#ÓÒ¢º!a$þNXÌø+§<œäý+e7JË1œœŸ¥fʦfVNvÆzšs|Éó˜€:RNA劃|sI0“žq‘íBɵ„¹<ƒ‘ïž?6)ÌÏHçš«3±M˜á[ûö§Ü9eÚ8PyúÓ…‚Y@#ñSÓ(±ÃŽe^*DùJCýê³rB²•§e¶–óÕ$R´ñÄTp jÄÎMTžzÓ¯nLÒùC5àÓ4\ÏæË°}ÅèFï•ö¸-À ‚¡¶·ó¦![œ€qØTv° %ëÆy©MòŒa@늱{:Ë9XW ZšêQ$§Ë@0*=ÞYid FK­Èþd„óUãýÙ/!ÂsJJÌé$gå ÷ªqµçG^È©Æea÷qŒÔ“µœ ¹.äåTš’òvµ…"¶vbNTNº™ "€’ÇîŒÔ¬®g 6Àê :DhÔ3IÁuÍHèÈ3œœŒ s)`Áx|Œœ÷§ÞŒ†àž{Ò•Ü„/©ªÓp@,Ý*” ïØXõªn§~ÑÉ©m`_&C('snÈö«¶0D-¤2‚Ä’Àƒè*Õ¬Q‹v2 œ“œûW14»®™ÆGϸW7#æbG÷s­.뜎2Ø£:²i×–U«²!|íƒË-_œ§LOvxv&Ûq(Œ1ÀÆ{—AŠÜH#W!F v4ý &ò&“`$ž íUõQ-Φ‘–`éUõ$ú€BãÅA~u©*Np+Fùã†Uµ ÷/ËV¯Ù#˜[†ûŠV¯EÀ„7L(KWV¹Õ"¶‹%QcÜþU¦¾~¢ ‡ý\`(ü:ÕmE>Õ©¬çËAË“QKn&¸m ˆÀ úÿ“UÞ/6bT¿uµFÐy÷ÆÝQ[r´öÑ¢ @É÷ô­«—··³Ž$çP2kbáâ†æ}ê¢;ÍÜžPVbww'¥SRIÎq“Ò•‹Ÿ™ŽE9·™ÎiÍ“óœÒuì@¦žœ SON¦O1†5ت[¶i²Kå"í‘ëM’_)2 dzәĪ’ªmÛµ9ÛÍ á@ßÔ sŸ3ºâ´×jȉžŸïqR1j¦xw×"žÄyÁÝJI7êö±¹c››±¨B'˦†ÍúmÉØ+IòäŒcüÇ#*¤D—Ü}ñQØÙy×N¬Ê©Kn8ïPØÚ+Ü»;±œŸzלZËo,!²À$åZ3µ´–’ƹ-Ãg5¥9‚[g‰yäSm\[yFÆO©æ›g1·–$Nc#𤶗ÈhÕx@:¥4Î#Wºp W,¿jÏ1£\q¸1e>™¨Úo*#7~p}+&Ñšâí¦‘¾PAsè3Yöì$¹HNÍÀ±üj…“‰.¼érSpÉükY"77sIgÕ¸þgó­D·{ÛÉä³B¨ùŸÌÖš@÷w=ºíG8É«X]ÄËB»9ädÕ¨ô«¨Íg‰vÛ&§K¢O0È€(9â©M/™'8==MfË/™'°?™ªRI¾@{çB¦rI±õ4*›<Ò¢„PÌ=ªBT Æ0Aöe Æ9òÀœT~g—÷‘ü ô¨÷?)5bŸtœ§4†MÌÕ^G/’zÕi¸$õ«–ἄCÐ Õ˜Cyj§ «1ƒ±Aì+@ ÷ mÁNÐjX—uÓƒ’Ê2I ƒq!lä~•œ ý¥4ÍŸ,¯ÊÀzñüª[(ÇÛæ‘¹B0-šm»•Ûx­XÐ(lwzÖý”)M°îÏ5«oHÈ^3ÍsZÞ«/ÛŒ0¶"‡åÇ«w5Ì뺔’_ãÝCòr;×9«êr6 ÑÄwÈ©­M!Œì.d9o(núŸÿU^ðøó.¥ºò¨ñ?þªÒÑ~y%¹oâ~|Õ™åñ!“%B±PG àÕ ‹™^’PH •àöU¸vÖdrp2G•«)fr£¢üÀûÔ“JÏ!ã„ç>õ+ÈZBz„¥Œo¼YåQØíRé‡þ& 0m¨¡‹^:Tšy"å¥Ý…U'ëHļXà°Þ}ª I´žÛŽ~µ ÈAè9ª·Zt—òÀ Ûl¼¿lš³Ž÷oIòÛŽ[=MNºI¸š!ýÂòÃûæ´dT·¶Æ6¨àéÞµïÚ;k?%PØPÓ½hݲÃn"^3Æ¥A)Cs¸mâ±æeu*¼–â³åÛ (wñLòÒÑ–8.Ô…îzsS]Ť‹ ¨:tÏJ–åV 6D …ÏÊÅŽ QsIà“U•9à“MµxþØþp2T¶ ß”n^AúÔ–/ÚöH21ÇÖ™©ÝK§l–l*\>â\rÃéR²¾æ-Üu§A$ñšƒRÜÖ«|±;ÏÓ·é΢¼ÉbN¿y¿ò* @a^¹Ë~<ÿ…6Ê£‡9ÝË‘M´‰L±ÄNryÅ:Êó ^§ë]5¼b(¨ç•ØYÀ¶ðª¤g8®’ÄHª?:©©Ü2Æê§Öv·vËŽ3…è}ê–©;*S…ïXñ)-“žyÅaF¤žsÍeF§=êÄrK$ `+ëÒ¬Fï,¹ Àc´M0#=êcyÃJÁUrvúÔPˆž}Ó°U\§¿>Y}Ò0A8õ¬B,´A'ùˆíY÷ˆ?×DügŸjÏ»R¤O ñŸ›ž•jÓPKè ÌàZ¶¾[Èš³pZ¶»[èLW<“ÁÍBÚ{Å2F¤0V=óÇZ­%™Žp äý*²²L¸<Íh4V’JáÓ.¤r§Š¾Éjò0‘pAƒW™mžF¸ õ^îâ8#i£j{žÆ«O*DÀÈ^{Õk‰–$2¢ÔV2=ż3nÃãéL¶‘¦šSŸ˜Sm¥·/!ä½6frí#unj)‹3n<–à ŠmÎź³t©£Z² šQóž¹· Ù2ªÜJ0{fµô‹Rˆ²¸Ã{ÖŒÒlŒŸâíZ÷s,0’Nô«óÈ#Œ“Æk ჸŒ6å${×-tâG »(?aNûå *(Wg>Zœ1ëì"1s±N7O ŠKü àu5S#HBÅN é±Ê¦BîÇé±J¥ˆ^£½7Qùm‡æ=h¾;`æ=i/¸€c9cYðüÒ Ž½*Œc-Š£Üü÷­e2yiÜEçhïïZA¤)_u;Gó­0ÎUPðƒœ >óŸ@)ÜþÔ€åºñWþá@1ò©Ï8ëRÂÅÆ>éÎ*HX©ã*jC±P¹”dôkA„In˜oº5u¶$9óTQºB‹å«1'ž)ÂILJb Ù9?¡œªù`°Ï>Ôë„lÝó'&¢Ôåˆâ% ”ëìjùcl"œìê=ê[r%³OqŠÑÓÈŸJ@{Œ ½mûë$¸ª·6Ë/˜FÙA¯|t¬ÝFÞ“~1"‘ÈëÅR»‚3pFM=× ¬­ò¿L{UK¨ö2º¶UǪ×1ùl¬†æ}è˜ÁÁ¨Ê€Qº†P{‚*+YaF{Œe‰*1Ûšµ¥I ¹k»¤o•Ù«ZsÇ ™1¹ß€jåÌŒ°ã?3ÿ*ÒÕ®^+Qœ<ƒ“íW5Z;,ê}ª¢8óD e±Ÿ­cÛ‚Ó”e±Ÿ­gB7Iå’sC¸l6 íã­:GÜC`®8ëK#’sŒ”Á‚W)šlj ¦ÿºi)+¿¡¬9#•n¤IKo çµf¼r,î¬NA5œÑȳº¹9¨¢‘‘Ø1ù_†9Rr~VëQF씜«v§EGpW¦F=)É$Ø™â /į¦ÒªÙÊÁï•KZºÒ(µ“ä;²o~õyäQjäF«FæL(u>õ]±g󨋰ìz¯©±3ª÷GOzŽñ³ _îö¨/˜™•ûµr1[EýãÍL€¤(ƒ©æ¬ 1Ĉ½zÕ½)b¸¸f,Ëàjö‹ w7$Èr­éQ¤Ób>^?Û8'…ºo•S'€? Û8ÐY¥ÑDÎá’}z çõ{¶#!Á$ãƒÐV>§ppn§zVD—žR‹óâ"±šrŠ6¸÷5–÷>Z€£“ëLšîC©Â“Ëi$¸s¯ž¸ïM–åÌJ£‚zûÔútcÊ$޼óRÙ¨ØIjŤdG’:Ô÷ $]‡¦8©¦ÆÃÓT“¯˜6žÂ«ZÚw?AüûT@AÜÝ;Tðm;]cŒééVXõQVIê'N:w4ghÇãFp>•¢‰‡_70ùAvÒ%ITL@Èùw½Z·‰VM²pqòŠ.dPOÍÄc*[©€cž<µ §ÜHfÏ ;U}í¦[™ßåU`úqPi—R}–æ}ÁWpAø ŠÆå¤Ò“€[Tª8ÞG.rj§%óÏÌs“UG/ŸZ»iÿüz×G£ŒX®?¼koOµ\zÓ%\J[ õ5ä_éO! ±ÏlÔwâgrS‘QL6”RÀ¯Ó¥fêíhÀ ©_–©^¦×PT¯ËUu ¯³i¯Ù×€}ÍT¹›e¶Þ…x©ÝÍåÛpTpjY»[,Ó³4yÊ&xÎzÕÏÙ¹Ÿ&59ŒgŒÕ­Ô‹ežrJŽPZÒ’O=K ùIÛ‘V/fDÌ£ ÷C±u'ž €`3Uà†T™&m¾X^¹ëíUàŠKwY›o—·±äÔQFðÈ%lm#×­5òXÃ6qQ0,þ…¹ ¿ Ý*W„F¼åÎ3Ç­ZkQŽK¹ÈìjÃ@}N3‘ëXW7;®±ÎÓ¥bÏ6éÃ7®+Y‹N¹8«×zT)\y› c­_¿Ò’ xî á¤ãÞ®^é© $¡þþ vŸm„0äawzŠ­§Ü ½pï·>ب¬.#7c>˜ÍHcG4rpKåqNØ9¸;ò1éN(­ +uÝ‘ô F±:*Œd€E"¨IcŒŠˆåUÇÍPÀ›Rsލ›t} Æjš:í`jÔìc A$ ÀǯJžF#žN*iI‘Ø`U¿ Ø4 %Ä€îq…ÍlxfÅ¢ŽK©LmÏ¥ixzÉ¡…æ”ò3éWu’‘NÌu>µ6±zv41€u>µ.¥rv²)ÆçXò’SÌe}ûÖ „ý÷éïYR7½gDus´@õì*¬Hf“ºÕ(PÏ7VM´uŒenØ©¼‡iñ”w«CµÇ?tcšÑÆÕŽzu«§€±ƒïÀëWO íÍ0‘æ0êqÔv¨ò2GSëQç“ÞšƒóÂûR"àœ(QNê¤õÇzw¸äÒöã“HCù¸ÏjL‡ŒÒ`÷ã5°ç1ÆXrô­–Øö±3€7ddvâµHSe° ¥v¹Šu9ËÎ=«6éO—:° œòG^8ªJ¤pG’Î@só~óô¨íU…¤Š}Kþ•VÔ¡ìIý*Ò‘ÈD#2(Ç4CóIƒéW \B®—OYGÆ·-€[tÅ,ßsQF ?ÑIô4—êxì@¨dì<ŒYN ¨ŒŒ…ƒïT[,¡HÎÞsYZü,ö$ $ }¸¬½J&ØYA9?•eê°9ˆì¹æ§ÓKÅ£[ÄÜ;|Äz‚Æ´b™¡Ñ-íÏ À÷ä~•£´:]´†À,=ªÃ”ÀEŒ(ázÔr:²„D `i¬À€ª¡G\ ¯;ªm2:ƒœ †B‚Ìê)ÖÃ7 ½?g´Šåɸá½)ocû5¤1¶íÙÏ×µ%Øû40λ4©|VÙ.•¾RØaþÕ {$q­Â8*ÄäZQvëÊ*ÑY·v’WUâQ•ÅgÏnêêBn_NµF{iqòòÇ"´gu{O˜6ä‹ô­ ©–ø|“XÇÓŠ½w ’Ù‹rVŸ›p÷üë.ÑKÎ1Ö³4ôß85·( ±'æÀÛšÓ™Hf'®~ZÒ`’~ñªö×QÈ÷*éûÄ)÷¨!š6Yïï)ÑâœýâœT ”NÓ—™€¡EÙ‚Ï!¨Q|¦ûÎsW4«u»¸vpZ$$þ9ãô­ Ño.¤ÆœãÔÕí"Ü\HÏ"åPqõ­ ûç·eŽ$*Ú´õ]Ií$ð¢ò}=*æ¡zÖïäÆùxö¬gifoßž¸®}ÞI_2‚OZÈgy_2g=iת¯nÁÜF wïN¹]ÑÌÆ–íwÀA`1éRØÁ 1P™°Xõ«VöñG¡ý !2;à“SÛÁ:BÊŠw¹ÆM «“’3– |.NO¨÷¦Ç€3Î)ÎNÐIÁÏéJäà6psJÄü§<Ô ¾0ò0?3Q®ä &1–<ÔI¹œŽ ÅIÈqÆ)ãæ\÷b¤®j;‰üµÚƒæÇZdò„á)“Ë´az⣶ÜìY‰bCQÁ¹‰c’G­Gæä’M^ÒÒ[Bf¶ì¶Ià ¿¥‰fŽÞBÙù¹ì3Wtï6XàY['°«w|¡Wq*ÅÚï”*àî8⥘n—I4‘†ÚN~öWŽÕU·`y ¯ªiÁê¸úS¡0X·Ê­Æ–Úå´ÌûUÜû‘D~í¤-€>_Æ›i'ÙdhÜ“ç9Új]øÚJÐÌÄÆÇƒŸ»RiW†'h%bW<Wäå0sÍn]2Øíù·kNäo‡hç'"¢\Œ8法NÖÈU&ª¨aÕx¦¶™Ø0p§ëLR‘3Ë"†Ê÷ç­0mŒ;Èqš®Ùc¼Œ¶Þ;TYžâ_1¹l`*«šRÍÇò‚Â6m¿Ý 3R¾ØñШ^iï„wÇÀ²58˜4rJmùqY×Ѳìr xªѲ²1Î6ñŠ[ŽâÙìÉÀ<¡÷©-]n-M©>ëO…ÅÍ©·Ï#•©ôËW’)b;wãxÏsSi–s±doQ½G©ïSX[™ ‘7/Ì¢˜e ó@ ƒG­BdÚƒÌÀ1z¤  ¸(ÆG ÒÝŸ(+& Ï=©‹8¸Z‚ ‘LY–åv(#ƒœÔ¶QGc‘Fdbv“éRÚ*YÇæcsœã=ª[XÖÒ-Øùš›påc.ÌwÞHíž”ÙØªn'æ$ÔwR2ì~`¹5SKF•¥”ç.BàýsU¬Ô¹väî8ªÖ »Ìrr©ZäIxØûˆ8ü:PÒ†™±Ð »ælâº-)->5;A#s ×U¢,p騤…?y±]&ž©’(!p2j†¤ë5Ú”äã‚;Ö>¯2Ü_‡Œ8ïYš“ù×»sŒzˆ&ÙSÍeÜ{Uu ”®ãÚ£ ¶Q¼Œ‘Ò©j‡§pbÇ€=ªµñ;C9§?ʵ´h´ÜêlG#ëÿÖ­ 6,Y ãv#Á¤LùŸ(öÀ¢<™Ô(ëÆÅ:<™xž>”⌮aFÀc´üê6…¾ÔÖ¡°I!AþtÆšf·œ´éãE€ÃÀà³c¹4ëõŽ E¶\;û±¥¾TŠØD‡ Ü~¦ ÆT©C Me€ò+3ƒŒçÞ¬éìÆÉ|ÃÊ’9ô®‡I˜¶–žkÀâ·¬e-b†CóiÒ±‘ÌH=óQÝÈnæòa«üê;‡óåòãè1“éHü‚ •ÁlTwDldFRvãv?:eÁ[…Æqɪ»D¾X\‘Ó°ÅTŠ1!B2«»œv^$ÞÈAÀ'šdûæç)³îv?ÅÎÙ·9ëžj ‹id€G»’§4Ùí¤’N»FTæ›qÉJûÖJ4¶÷ömd㡬Ô2A(b¸+ÆJÏGxdÜx¥µ¹œ^ù‘XöÍ:Öâu»!Ͻ-ÌËvZ<’iú›8“æLnEñs.JòyÀ¢ø¶ümÆy«uºAo,“°ÅOg E¯#mlqÇzžÊŠÝÙεLJ¬y ·¿µHYI Ýï{Ô¥`Ç¢Ö©]Kç~í~ôËõNWóNìß1õNvóBÆ?ŒóS [KY‚Ÿõj1ïš•G“˜?u@üêQ‹x$ ýÞ*ª†YVȇ'õ5Zº7cüUVÙ7ÆXõs[²ÍåÆÃD9î@­É. q8 '=ȵ,û#cü mý*´k(Œ9`ã‚N1TU\ r@ç©íU\ bBÿ´i€$yžWËàzŽôÏ•ÎvËà{w¦}Àes–nÞÕý±kt2d8c×ÐÒ]Û‘oÈ`I9ô¦^Ûæ$-rsOµ‹dÀÀè=éöñ”„¶1ž1R[Dzã‚1Š›+îsÉ踧åPfFäôZ—!q¼óÙjÖÏ@@nÕÓ 5 ËŸCÍV²PÓ3ôgñýªáÚ­O‘Œ/AZvRæÔ>0Æ5?SŒãõ­M&p–²`•ê@Î?ZѰ”‹gã€~¦Ê²äãØÒ<¹Q‰ÇSƒI»dÊÇ·jHÿyª •@N? Sl˜Í¬<ÌITRØzb™fÆ]FY˜åTg£³!p9 zÕ+É|Û‡“Ÿ¾HÏ^µJæ@óçïN*»I§?ãLU}) ƒ·;{T!ê>MÃzU¹®³#zU©'a´Ž1Š#bÞk¸ù^½È©l¥'ÍiU‚ð{ãµKjçox®=ø©$bmÀe†OµY¾U‚Ô©Àwù˜úz šéV( ñ¹¹cUÐùvä÷'ƒT£o.׎¬ɪÈB[¨õ5SQwòXD¤ÔJ†í”ù`‘è=* ¶vBP; ÈŠöh&Ybr@à£ôª]Ëo0t;»j§ÜK¼Ã*Õ¨/-¯†Æ_-Ï_CWšâÚóåÛå±õéWLÐÝq­èi±Á”£˜‘×<ôÕŒZ>0›ŽG\ðGZdh¶§.ãžET¹º‰0ïwÅUžhÃ2[ žhÀ[=ªÃùj3¼çš˜î å¨ÎæÍLw¨ûÍÖǹÒädlõnô¢-ï Ï8'ûÄÒ,bI#FFpO½It±Y!FÛ¹[®)÷¨–a¢8ÊžIëµKe)ÆS¹¬û·Åƒÿ¬aÊ©NÄ[]ý*ãµ YªÅ¤CÆy ïÏqýMMmó#^¡pMOmF‡î Áþucý}òFOÈÎ_¬!^¢·ú¼—aSFD·*”r)·5ÞR#°µ{S.p×d¤X# ×ÙònN)éY÷’½Ýâļ(è·­TžF¹¸uªK#ÜÞ*(T‚@ö­K…ûLë¿äHÔ­hÜbâà >DG>µ£8L ¨€R·)½@òbèOñGù—z¨ò“žæ‡åw–5à{šªn`7L…›¦áÐçµVib3æcü]V2Æf*-ê)Ó pªNÜu rh™ªŒà %@áGL´°ª***áAÉõ4è¶® /riÑPF®iì~fÈÇö<°=;S˜ÍÅF9oþ½GÔÓ&¢7‰HqµGÌGV5͹ŠE÷@çÜÔm)f*˜Àýkv@"mйÞ=ð1Z³9·UŽ5w_sþEiHþHUPÉ|Ò!Yg‘S’£,}j ŒÜ¼ûFJ.I÷¢$ó„ÅyÚ Ï½2Ö`.ÁÇúÎ ôô¨´{º€B>Y²§ñéQiSâí£#@sKs+¹áŸÎ¡½·(7®J’vŸ^jØJa‡Fèi°»œ«¢¡…˜{TvÌÙÅ=÷JTä…êì}øÅY(e*Ø"=Øf5`FÒcƒ©=*X?{.ヅ{Hϸ¶v¸>•oMO2_5úƒéIpÙÈ9íLÔ[Ì™±’ˆÅ6ñŒŒqüGùTRe Fr>Õ¨cµÁ6A¦J…!B¤ŒU–QÊò)eÏÌó¨í¥HîæBË“*;y% 빕V¿°IÛÌ·R¤óƒQßY¬ÎdHÏ8>•ÝšÈÁá\cštùº;*ý:Õe´|€ÌB–ÌÜqš•ÆÒÊÝÀçw7t§¿÷ª[I4¤²áäš«,︔õNGÜßtÔ$G‘ˆPÑš¾ØH™`UöÂFY›³«IVܡÓAL·” «d+ïÎ=9¤·” T«d)ÝÓÒ¨ßÎ÷·Y—8ÓµT»•®îŽO.ØJåÚêéFr]¿*³q 3,_­ü†*i£`OáSü¸©¦E2(êªr? šÉ·¼³ 2}ÏJšÏæY¦8Wõ< šÓ&—ÐO³a¤^Ï–£ÔS­ÂïòÓ(´èì-Þ@ES7ϼÛBH-ÆGj¨.\Ÿ*6ûØÕ_µ3ËäÆ}YÓmR)æ•ñÀ ŽÊ=>§kOcie•NïnzU>„K3p>oð¥Šaq$²³‘òOôØæóä–Wbr}OlRG'šÏ#Ÿp›<¬m$eM‰Ûÿ×DÒ1·‘€Ú™àvÿõÒO!û4„8™d…®Tc<äûU U-2÷ïTl™ÁÆ{Ö£õ$Uç<“W›­(Î@#>Ô `ŒŽ´à0qøÒ1ÉÀɤcœ“M={Ôw%»g‚W M”l‰BzS&ùalðÇ¥AFmÛIÍ@ƒj“÷sÞ¢A„>¤Vø9HÉ$à}«Aß;$¨$ûgн#—?Â0j Pëq.0$¸#?@*ù]‡dÄ~‚¬èºnÒJÇúS£‡Ë–6'ˆØ©ü*„ù7j;£•üªœùw8ôb¿•[¹dQÏÈ &´u‘¥¦ÚªAú`UÝ[ËIÏÊ¿.1U#Qæ+dž¬µdB3"‘îEfB‡ÌãššÒ¢Œ$¯©íZ6ª÷1¬c!bíÇSZ0™ ~Z“zÂQHÆÊ½[IVÑÕ1È_”z™mÛÊ•@’y c¦ ¸7a‡!~µ£Ÿ½ÎzS « p?¥GØäVQÆ{ö¥ F :a¿:¨ƒæuXË0äQUmÁ&@ŠX¯$xUh2w\²óøVqÕ¥û@ ÚG ªGR”Í‚p¤ã•OûBC8V8 qнÀr¹ïÎ}ê`@|ÇÖ¬+ ãŸZÏi”];6è»ê³H<æ-‚:sUŒƒÎbyúÕ´Ü61 »”ž8ϼU¹qœ³?áU¢Ž6óøÔ7 YÕzÍC;p;(¤¶8¦ÜÚ˜üÿýT|‘ÊxÊ®?:H¾H¥Ïa¶«YdÞ¬Œ3åØõ'¥CiŸ´†8è=ê Íq¿¸fäùp?<€ŸSš–|}§=9õ©g#a*xàΧéóc-’ªqô«$§JbBÀ²äƬ$r6œþZœ3ŒþT=Ó&œñä¯ÊGROpßa\ñå) Ž´Ù® Ùîïaj–—k"Å%냅_v5•»‹yoªv©ÿhõªÚu³Gn÷N ص¦‘£"|¡¤>cn=»UÑÉÀvýãdõ­ HÉýæÏzÊ»so˜ÎæÇzθ&aÀ9lVmÌžSyKŽZ®8ó`߯¹«$o‹iþ!š´ë¾-¾Ù¦YÂaWvùyÀ¦[ÄcRÍÁÍ6Ú/) =ÍLª‡©©‚xµ <ô§±Œ”æÆîJVÆxíLÞp)›ÍÄše™èE$ß:ã=)'ׄUyÙcŒ)üê HUÛPLÁem–>EÄ­ýÐçÏëWþ=¦ÿ²ƒóÿëU¼jòwgSìmE¬Ƈ$¹cZÚ]¨·†Ø!Ën,þÕ¥al H;dšznØ!À-ŸÄqU¡+.®å>éã܃Uíö˨¹©rÃó¤Ô>U!pY¹P; ~¾„J¨ ÃåQØúèÕÔ´¡Ë7aU ."ŽAƒå•#ßVtèòþñI%ÜŠ«û<„8Ëm8ö5zÚC–m»xÜsëZZdåZyTmÂnç¹&®ØÊUep1ß¹¨[ty\î£' ÆY×'œuæñ2‚9eÍJC>\ӜԯùÊ àžGzsFÞhqÞ’wàºß˵:ùÖ z8ôíKxÞYØ:UÒÚ1—v:€qÅR¶¼[)D¬›ˆ$`ÕZ¥´må3ëƒY+oo}+ÊŒÀä¸Íg$Q]H΄†<àU¡ŽæS"ç=p>µnîAèÏ3“ÜÔ÷,)¡ É5Ëã+ŽU+xÄ›ÎDj~fõªÑ!‘·OÌjSÌpíÂùÖ„¬ŒÃ À­ÌÊÌ6ð£jVÜÀŽÕJA—9àƒÍVnIÏãU›ïdsÍLñ±€Åœòãù-=—÷[:ËSäR!Ø9=[Þ›§ÇäÆÓ8ù¹*sëIh¾LfVò{úÒZ †"ì>c*;€LQ(É;8¦L7"Œd““L›%s“[6[-ôx¤i|°ÿ1cï[öá-ô¤3ù{þfoV5²Š–úLd¾ÐÃ<÷Ï5›s$1XBYX¬®À}±çò¢ÓíÛ“æ³ V]ÛG ” Üù„š‹Oºy­¦„ºÿú©–·%»ÀHÚÒúqM²¸imÌG…Ÿð«“%é ¼É€b¬JÁîÎáíùqS³º$ŠÄ¼¯só7Z̹æåÁÏÞ¬¹Æos÷«i€X㕆3 ¾¾õ§"ì$qŒ  =«VQ±C°ûÈZË œà¿jˆÃ?ojWùcñ»ùSû<Z·Ö™ÛÚ…ïB4Š)sŠF⑹8¤-†9ô¤-Ž &}jœã.Àò:Š­'Þ?U—–9çÚ·ã…° ¸Œîf9íž+j+)‚™ Ë78ïÅk­«-’o\(\žjÅœ…­ÆW§áÅhØJÇN‘”~ñ#ãò8«Ð;5›ñó„?ËŠ¯jUn!ÉÁoçŠÈÒ™SPƒqê{þŸ­fél«z$~¸¥¹ºHïUÜ.>àgúÔ·w±¾°¯ÑUÈúSæºGÕ2~á!Aü*[›U2‰ÌNÒ®_iÑ«¤¨r “Ò¬ÜÙ H¼ƒŽ´ÖÊF6¶w¿J¦Ù†(ÿ}þí@s.ÖÈfÎ>•Ä´ŠÀää ¦<ÅæVA#>ÔÃ.éU·|Þµm;ùŒzqÅk¦rӱݷ…´cVrec’ Avéò‚2sÜôª:œèYr¹#Ôôª—³)qò䎕™rÖÐyÂÚ9;X0ÈZΚsm7’’v°a÷jÍÁ‚4B®¤á¸ªÖw¶°DŒ¦NþžÂ ‚ê(˜ˆÁúúþµCku¾È×ÿJµy Þ wÁf=½êk¸Ç˜ôà’j{ˆÿxœÔšbùj çŒ|£Éõ¦€~Š)  B?ï‘JT’½iYNpN8¡Ü{`T*ªŸ>}Hü;Ôj ßÿ^˜ª-þ~´ý±”…¡|ï9õSÙ¤f6ÎðsOdV °çpæ’g£Œ~>ôÙ›æT¿6VÂöšUPUY¾ëe±þÍ(P d)¸ô  *7zn?#‘woolÍå,d†$p{ƬòKfaFH'úõ;8¼KxY¶*u¨îíÖhäŠGÛ#(HàT3Cº9c‘Ø,@mã¥Cu–c”•XÏÊ}*µ„°$«m 33º‚çØö¨m$ˆIQ®Iq—üj )¡¤1¯ñZ®]H¸Œ±ù1éSܺÄÄ2Ç÷jÄî±¾ÒFæ<}* mUîC r}ê·G›' úÔMn­8sü#5v]³O°ÄaWòïW§+5Òn»U\銻.Ù.†á”P:S%K+0hU`v¯\Vf¢¿é+µ}*…à>qÏ­e_\ˆ­\¹[ ƒYsͲØùMg]NÇj¦ŸfÓÌ’ª¤ä †ÎØË"±!GjŠÆ×|Šç€z ¾dG“ï•úsVw îßxŒ§5h8;˜rz}*$Ei”“«“ŸNÔЃÍËdÒ*7$ð¢¤c•;^XûSB àýãJsŽ{õªwS;L!EÁl.?þµ^i¤ò•pÍ€Gôþµ^ww›ÉN c5jXdXIÈ‹å'ùþµf0±Ê±‘Ëø÷ýjÌAU‰òsL–6óYX0·OzŠD!ÙH%³ÓÞ¢tÃ2à†ÍYd]‘mìFö=íVÇ3èì{U‡T*‡¢¾Õ!ÌL$Tc–^Üœ~µc>d‘ëd‘ÇSÇëQB3—ŒïÜý{UmbâCG9izt¨õäe`ç,í’j Rg1”n¬ùcPèðf_9¾ê‚*-:Éæ7ÝP:n™ ”ö¤¸/6¤T§L(_JI·KzAè$…¤ÔGFãÚ´d;e¹éúUÉi$ŸoÒ®ºíÉ>˜£ÍÛÝ·Î2?J ¸xð~”ï-W%›qâž99#špTL’ÜŠ†O–PóPÈ1(€y¨ÜbR;iUS´šk¸ny¦<€gšAò+;¥"ª[)Ú…©ˆx.ÀŒõÍ4”±¦ò’{Õ\C1œUwàç9ÅU“†ëœWNÎ$o)§$ŸAÅnË/™+ćl1u?N+rI<ÉAÛ}M"2¼Jç'$c$zT ¤‘*õ%xã­Eò¼a1Î8½Eµ£ùd1ËôÅW’7„í—å8Î=*¼ˆb8óŒ‘P]Çç 'Ç(ýÇ·Ò«É—ÇBÝV”–ÁãpéZV/¾Î6<qø×W£0m2Ä9®šÇ g¨æ–T,åq ôÅTÕ!ÝpUO.œöæ«ßGºR õùê… Îr§ZÅš6Fn3ŸçY/Y ÷'Š»ƒ´Ü gߊè>ÍeÑãr…NEmÈ<›xÝz€ªHܶìñíX×»bç9ïÚ²å‘9ç5 ÛZÝÂ<ÆòJ`¾O qCAksò|¢¿|vãŽ)$ŠÚx7·Ë·ïSBÞÛý™¡·UÄC*Þ¸¡¯ckc ( GÈnçyÛ²F ÇZÏÒ™ˆ¸~HÏôªV;ŠÌùãš©§–1Jùêjã‰ð0~f½NÀFñÇR=jÃb IÇâ™%À’ %?(VÁÿjšò‡¥cѹÿj›$ ÂÒ· ÅUÓr${¦™>èõcÆj;UÞàŒºüª=X÷¨¬2 ÎGÏ÷WØž¦­ÜÙÜÀîú·zŸ$,§ úš˜Ÿ-I^ äQæ¬{î&ùðûDšpu‹|Ò|À(â‚ë <®3…Rk¹Nm£`™ñè¿þº¯$ò}€6¬­œ{*´÷5Ÿ(•³ùTšdoRt„.=1Þ–É]#p î~1éŽõ%ŠD^§­>n¨‹Á=h‹nâ£$ŒóéÍ$Aw»ÒCƒœvš¡pæIO<Î;âªK&é³Û<ã½Uv-7¶r}êíÛ…;Ð`m >¿ZµvØmÀcå«/µ‰ U Î3É<Õ5ßÔš¨€»ûšžG!–0yïš–BA ?™É$ üj)þTÚ2p¼Ôr«ŸZŠsµ; ˆýÅÏSÎ BÜ€j´‡‚zèãáxf_|þ5¦t*ðX‚® ÿÔÜZQÔ~µ*mšñ‘_óš±d©qªF§åU/Ö¬YªÍ~Fpù~¸§¸Y¤¹Þ£×ò¢`®eÏš€Œ{Óe ÈÛ×÷Š1øÕ ÅÿáÜ@Ç­f˜Ü(>§¨ŸާµmãÛF‡£æ?©ýk¯´ˆZØÅ¾\1ôîZé¡E‚Bxpj¡ºÜ/…Îõ¬;«ñy~ ;Aõë%ïEÕè)Âî;Óî“0³… ðúÔ·0 ¦ERå }ji¡È ¸¥–@${vq”?Φ¾—k½›dì—ߊ}Ô˜v€çååj1$¡å€ä)ïšÍ‰¡Žãtɸ/ðõN#Ï™v8ÛF¥c¹-˜€P1AÍM«X,–¹ÚP9@sŠv©i1mø\n*;VnŸ û<ìø SëÍfZD|‰‰à·5BÚöYAèF9«VÑ%¥’6F9ïÉ#ñ« ·µWìÙëV"Aol‡¶ R™ÚvÀù‹žªÒ3Jp9,{Ui MÇRÇò«ÂÉf± ,ßyý³RM¡d™Ö¥ž&û:¢Œ‘ó7ÔÓ­ÔE G‘¹zŸRiÑáSºõúštaUµA#ïi÷ï{ÔNÆKð«ÔÔ%Œ·!…SÉ«:Œ'ìRBqáÉÅš±{[SÇÊÛÎ=êk耶òŽ0„†5F‚Ù˜n\ñ¨‘%¾Fá’­24YÛ#p#~5­<±ÛKP¦Í£Þâµoe‚ÚXá·B¥ÝŸqZWSE ËK·h9ª±ˆ6–R ‡Æ?¼ªF!hšiH#v?Þ5Z1Ì~¥¸ÀÞd²oÁÛþ·ò¨Ãd“~=;zS‹—-ØðiÊP:™8ÎÏN”øöù«¼u84øÂù€7~)× ¤»Àå?ïS®ð’eÓþõ8`ËÇãUã!-œtc€>ÿ¥@‡d Ù‰ô¨íƒÑ‰Ê©„inñ*5UU¤Ÿ Ê÷ªÈŒ÷_º:Õ»Üùz•X» ¯ÍOuÈã»S A|t¨á~|t¦B6‚øéM —/H9bÔÕ³ÔS¹Û‘ÉéøTS7w¨g“Žæ¢›ÄTMÛj»rüu®“ÛÉUÁÿ?…i€v±^HQšÖ\í,9àf›¿UÈCÓÔÓí¥ò®ÒP¹ØÝ=éÖ²å_¨U‹íªÉ.qÛê1Wµ”Q"̲¸qVõDPâEûÌONíÊéþ^>h¥\ƒÜdš¨Î«b«³Ã8 q’j à[ÃÆ& Ùú𻍶Øgc8ô­oÜyv‚~i›ƒ­]Ö¥Ùl"ṠéPÃyŠPžG$v¬{N˜èj…”#Îô« ¸ÊKp d/qŽõ¬´Ìd FàQõ­{*ŒýÚA2ý©×ƒP§35ìÉ•ÁT§5äH×2.w~5JBÙwpn½+1²]”+`äÕAòÅÜŒ³4ûÙm§ ÆO“U¬¯e·•ÆAóÚ­g{,/"±É×5¨±—•s·hQ#ÜúUÔˆ¼ÀñµTHÅ{“Ûõ«©2žTe±ëUowEUÈ玵^è’È犂䓷#=) €[í·qëÒ’8¼‘¸ã=~”E•ÏéRÝL!ŽEÏÍÁ'ùT·2ùQ2ÈÆ•>â@•Ï9ª¶ù1oÇ' ªÑ°7sPEŸ/qëRZÃåÄå‡Ï!ù:ñg–sóS M‘œýæl“K­³$ ª§tý)ú™*Š¡Nç4jÌË").æa ¶v{å+†Þ±ã‘š’Ö9-m §r¦9©-K[4gq½O ŽE ‚k›¦i$%€Ëðƒüj5†k¹Éw%º³˜°Éq1,Äã—>•¡œw;ŒJ#TÀ­(tô»Y &`ýãÞ´#³[…fA´)}ê ©( Hö99sÖ«]:E‘{d'/ߨ.$TŒEá²7N*…Ì&£ ™ã1*}³SFžIFÇ‚*h¢Y'yX ß 5¥cj.n%ºs¸«nƒŽµzÒßÍ–IØäç íTµ8öFãqb~ù=ùâ²µü©äPŎÆN{VuÊl¸ÚAnO½[¿Ýº:’M\×¹–-§“ŸåVuœù‰·¹4–ÿºV”óÀü»ÓtÇû:½Æ7mýÑbÞDm3 íõ¬Ý[U’ <ˆ#PÒ*¹ž™íQjº”3AüÒª³9>¼â ÔõÚÚ4ù› ÍW´É¾Ý¦«ƒ’zšÐÓñ{£ÆW“Þ¹«ö„^i‘2÷ëŸZdJ¯{:¾ùl2~µNÙ¯.–Rùl2~µVF–äH@O?fGannÔ¥Èm¬9ÇCYéiÚFÉà ŽqÐ⨭œbã+(lt"­’v*ÁíŽ:Ôùa¨ã=€÷«,HŒÆ};Ó^M‘œ ½û}i¬ØN™ÂþTÇl+:rk27iî7ç,z ¢®d”û §™gf[•<æ«íc&ç=y& ÃË皌ÅäËqzì „•}O­7g–eº|o'¾ýÍ0Gä´×DüìØATí­ÚyÜù`ç?Þõªöð™dÞy@sõõªÖÐy“ ùçýïZӔ8=?ÝvVß#8'÷E_8'Šˆ Àõj2@^8´Â@_Jbç?ãLÍF3š07g…éGª¼ÒåÂà0'†WËsŒt¨e˜È5]SlŒJ€§îÔÃ1UaT°2`ô<Ô‘€IÏ@*Xsž€f®kœµ° °œ~55ÐÁˆŽ3Vg\̓޷§VÏ ×Þº]BÕ#³c ±ýÁ­ë»uX)ùSŽ{æ¥cåÄp:*ÜÄZY3*ãbÇåSÊDì@èªlL÷2Ç«°6<ŠÃ ö‹‰³òí@üóÈÅeîK3gÃóëQ»åâÞrOsÓÖªÜJÏ"–%ˆãž•ZâRò©'8¨ÙVNJ7·?þª|1‰á?q¹§Ã#4&6+Ýég±†IVä©óV0€œŠÐ»³‚@.€"A®ã¥\¼´…ä7$ûâœ[Ú¤VñˆÔ.séN{¿³Ù$6±ù@.séN’q²Ån»^ ajW²òãm¼a›×5…ws ù‘ó5c_]º¨y=MK¤ÀVÛÍc‚Ä=ºÔ–þç{6 <öëRéñbÌp\ãšuÄÍ%úÛÄÅc#Øf<%Ø…1“N’S%甇äϽ6þå"µò>tŒ]Ç÷}s¤VKßHÅÜúzëIyqv© ó+’ìi4؆3ŒI,™ûª)–P.>0ò>G°¦ÙBQŒþñÎsíM a‘Ücq$.)ƒ÷níÀl¢š¿».ßÅ’Uˆã=s‚~µ*( Ï\õ©•@\žµGSv)j>g;¿j­vÄ„ŒIçÞª^³1Ž!Õ5pÏåÏŒD ‹¶B?‹$~ue§1IöXÈT#ø½GçVMÉŽ_³ÆF@oö±ÍG=ŸÚ¥´ Ë1$~¦šmMĶñÇó3d;Í6KO>â^H𨶷ŽÐ´®ãÍcì8¹iož­;¸ó‰ÆXp+Zb´ 1oÞÕ‡ ¸²¶šåäÉ”ìÕùÉþUŒ–ÿf²šå߉NÔõ~k.+²ÚÉ4ÌÍêÜÿ*±¹T Çhè?hÜ22qÐÓ· ŒñÆE2r›ºdؽ6R¡™zgw¦ÊÔܹÀ8½,j°GµÖ2åˆè£ÐSÐ,1ìçeùˆô=…=Š=Š~c÷ˆíì)dR…º|£4ÀÌ úSC0O7$çôÖ9ëMoZnxÆ{Òg™íQHÙMØàduÅ1ÎW"£cò‚*UwåHÏ'>½CÃâ¡àœâ‡`­1ˆÁ¨¤#qÙqøRç õ¥FW¹¯ël¢e[Ê@©ïHÞë· V.˜ W°ùÖÁËqóƒ°El¼ïw$0äíÜ ŠØóZâhÓœn\гr”À‚p2ö­=\(±“q=Aö«zŽ›ä÷*‡›”g\ï* o\ð+žX™Üà•d+W«¥’0Ê^vð~¸yÃpð)ÜcÀ'ß­h"™âS’‡šd,%a ¹þ!N±Ä³¬nv©þ*}‘Ë呴էè yèrZÙ‘Vh•S®¶OV›"€½þñúU=ž}Ï– òóžzYËÚ¯¼¥b"É9=1Ö©Fž}ÖÀÇÊþ³.ôñsvìù{¸zU ›?6æFS•ϧ¥PžÇϸcŸžÂ­»ˆXÂÀ»@ô"¦‘¼§# …vŒzб#í,zl\ ¥§£|óc–l «h§CÔœUkD%Lɨœ½Ãˆ*O>´Ñl^rd9Í1-‹NYÎFkF3‰I¸Z¹ýé*0vàUØÎXœcŒ ¬T4ŒqÂt™÷OcŸá«p¡Ož*R¤*¯F$â¤*vªÿT(Úýg¹qpª¯â9þtÈ’3x²ÌÁ09÷ÅFˆ†ïΕ¶ª úÕK‹yã“z)2Îß/¸íUd·”2áNùËî3U¥¶˜I…S¾cǸ©mneƒW¶¶0‰ö6~˜?έXÏ$Äž|·ÚßʬY]4zÌqc„Èon)o5 õ]B;kpDA°÷½I©/ï¦Ö5ííÓ÷@à_Rin/¤Õu·?t¤ƒôïSêäû;N6B¹lŸjv´ÀÞZÚ+‚ùö©5BúÞá‰yÅHYZy1ÅÁÏj…a æi1GÁÏjjGµŒ®ÅàZj¼…ÄÌrG÷»{R ¸”òGcÐRmÂN ¥ݘÍÏèÜÌA sÏe‰޼ñAËþ´Ó’i®i2NOáIÍ'5«ÏNõ£5£5ZRÍ“ž~• ±<ç§Ž}zqR¹9lPǧzlž*û»¿†šG˺£Ç»SH'¹ý)&—95ÐÄló"Üãå~»El "‰ AîprçœzVÀh£P¾Xi‚ýŒz‹’õ€äÔvžkêq*“Ÿ0ô&£³ó_Qà?8­ ©0k÷Ÿƒô­nèä[#rÝqZ:¤Ù"=zÕ{xÂ!‘ÇÉöJÆÜC¹b<€3ôãõ¨-bò!¿~‚£¾Ô[få¿þ°ªl]îKžI95L†iËž§&„RìTd¸À÷©m"i%Ú¹Î0p;šÒ"ÒèãëSNæ%Cœw'¥i^J`ˆ, /™“ƒ×¦*õ̆4€7œã¿¥WDal\6Ó·ƒUb‰Å³Ji Á¨#–ܾqÖ³ï5 1*€8;{Õ+­A˜Çj¨£—¿½S¹½,飾;Òê$C°ð¦^ÇbŒg4Û³ºM‹ÆO&‚`"ü cþt˜òöÀŠQòaGµEö°4Çœ«ïMóBÆÒ0Ï8™æí‹ÌÇ$àT¶næÔ<œ³9#=1R[³tfå˜ä}*H¼„'ïS0Da·=zSÜ"7ÜyëÒžáUÎÒ2J‡ÍYšLd,C%ýê=ë)~vˆù-QïYÛ ©õ¬›»³=ɘ(¼*Ž•JâãΘɌ(èµ=Ù’v—E<ÜÕû;ùm’)'c#3nDaÈÒ®ÛÞÍj`’fÞrJ¡ã?¥^µ½’Ü@óÌyãúT°Øí é•‹á¢õ,ÃçúÔÐX‘X±Uo+Ô³t©a°"ãP”rà0>­R趃O¸4eÄg'ò8ý!ew+M‚R3Ÿ¯ ~²ž]ü¸CϹ5:ÆL¬ò"4²«‹žxFódwDyeRXu(¹æ¥Xþy•Yä›ý€*†¯pÐì³R8ùØçïTõYš–jAUù›«U-Rv…ÒÔº77Ö›$†;Q$˜ùTnZ8C¾ qÀ4Ùʇsu#½ŒZÕwdåŽ%»·\ò2iÐ1ktÏrjc¸ÅHp<ãÓØS 0Ô30ÁÁÁ¢â¡à¥WE.‘ýjSž*±9=h”‘Î{⓵'4õ‰œ(=ºýjTŒ¸Çjž8‹àvÎ¥6­ÈÄ` )¶dWb0W!µdVb1¶¶”rä±ÚƒŒw>•e@,ÌßuGçV”(ÜÍÐøÔƒË13CÄ·óÖ®Àb%·ƒ’O½\ŒF¶ûàá‡Riù³á'éëPô‹µÉá¿É¨W]zw÷§JÅÀXþâ¾ÕböV–5>âšéüÀª£äSJ@]Ì„ªçÖ d{®‡zˆ®Ýì9-:ÝgQŠ»¤ÆªÒÊN ¥Z°@¡ÜŸ½Un›˜Ó;€5^ð3_Æ€îP~_z‚p^ñr+?UÕ…­Ù† YPbLô-Uµ[áosöxrÁlž…½ª®¥©,7~Dy`=3D¾L¸wÅA±o•pvîSRßl†I2* ù[!üïÎJ‚æC¸*ýæïP\9 ~ñ¦]ÈÏ2ÃýÐ3ïM‹H>™¦ÎìóœóL™KϲtAϵ$€´«<ùRH¥å¯!G"´`¶ÊáÇîÉ\}95r< u“pÊö«‰……dÜÞÕFÍÚæîgèXd‘õÅU€™n$9ÁcÖª[·4‡»º¶YÓÝ"*ÛNJÕÔ²g±c ïë¸)Î*ßÙKX(nsŠ¡o§F# 3ð‚?¼{U(mP"™#=z§œj±™N@=)×0½æ¬|•;qØSî#kÝH¬@àà.J|‘=橈ÁÀ v«WwäêvÖ‘c…Õ c©Èÿ ·uzdÔí­ãq²UÜSÇøU©¯¼ÍZ#?$lI,­ë…mÊ¥Ž}éB—lç Üúѽ–v±<ÒíÍ–Ý·~ÉþïqúP‚S(-¸)m®}GqNPþoÍ¥°ÞàsYH þ¦ÌÄìÎâO`*Šƒy~ÎÇåÎIô7šƒÈßw;‰ö©fÕnÛ`Û ŒxŠ{¬šËìùcQ€OQNe—Q¹sÒ%àgÚ­¦ÔTTÆà{Ô €@08õdp /n(ç§|ÒdçÞšCœâšIÏÒ‘³ßµU¸á•ÙA#¢æ«ËØ‘øUi¸ ·'“"ùG~”΃¦3PíÂýiJ˜Õe SÊU`8©Y j¬š.¦“%p½ªD’L|˜Ç½ªD–B~\`J}֠ϸö–L1Îj[›¶?Ë·pÁÇ~i÷7…‘†Ò¹«tdmT\ªÓØÁW¢ñS;eð: •]Û€#éWã’8¬H/#àaW#xã´uvÉö¨ŽDÁN gý*¼'mÀ{-ÓÚ¡ƒå›o_ð©á»‚\Ïj»eLÓnÀE“Ú­Z¡K»F) òëÆÞ9ôâ˜@à€7ðëL8¶á… "•*8B8÷¥ƒ @Àô§Eƒ“Ÿ”ýÚMɨÏò€Ü8H‘O•°=½éÛÕ&GaŽHã\¨„µöÉ{J÷÷®t!k¢¬K1nHúó\äq¾Ëͼ’ky¥ rÅŠ’¹ö­F—|A™‹‘“éš×i7D¬N±í‡Ú/·ó°þ³¡Ì—;‡AÏåYÖàËtdíÚ¦HJO%ÄØ!>sR¤{&i$?*óRÇÉšWä/5nê’LÖLp=‡Ö¡ÊL|îxúTJÅQßø¤<j»:ˆ4`á¾gÇ <Ò­L‚0s’Ñõ«7#ÉÓG<°¯5RÁH·ž@p =ñU­Áò]³÷ˆªÙ©0³gï0ºØ"Kh Qóô®ÖÖímB  ¹‰úWY I 1„ÆXþ™ö0³&%F23lÉéXK§¢ÎŠ%Cæ–Tç¥d­˜ª‡R_vßjzÒÙ™#õn›FjxÚ-q~òW3ôÇ5nµ œ±õéÍ@ç’sΤŸ(ÔSŒTGåe5;cû)‡rû*¶qýž\u/þ]cîZªÛÆ\œ…äÔv¨]°99\Ô6¨\€I8y4¾˜|çÒ¯4£2ÍÃÕtéáK y­hñ}ÜqøTP*³uåzÂ’ ÝyëN¤aT`œ–5e‚ˆ’4';NÀÒ4G>ô±DÇ ´¡ÆjxlUI]ŒGô©£¶ rlw« TfÉÁ÷«¶q,vÒHˆàsVmãXíÙ‰Î㊫# ’FpN?*¡sœT““Ч>J9ç-¤`C‰±»¨ã «º]¼bÔý  õätjÊ%ß¾ÆzóØVV±r#·m½\íSè+S¸¼ämJÉÔî £å˜àVU¢˜—ü´oÐUA þ6ªVÉ宺æ®^æ ’çÜf§ºÌVâ>»SÞ?à4š|¸ßüNqE¤gÊÈûÌim"ÄCÕ¿•XhÕ¢d`HsÓý‘ÅHÊ  €Çô©]A]­ß­UXÅÅÙEâ4]Ì—…Z¬‹æMŽŠµ>©O)›Ò¬j³¬h½ÍK¨DeTŒRYÀ¡b„`$`>§4ëx×|jq¶0}Nj[tPÉÀ ?SZ÷ =ŒŠ äík_R¿[6D@C1¯^õ¡r³Y:¯R@ªúTÜfâ1…ªèP .K3qÂý*&-ò3³r¼-WÕ tÔC&=§&«ëP˜4’¨%Gl`þ4×åü$Ò•·òÂáö§ÜÝ2Xy!pý ö¥¸…¨F£ȼÁ Ì72üÃ5‡0ç’=k.eéÜŠ¡&à ò·ÊaUÛ!@có9ý*¿*Ñ©9fnžÕ~þ/´9bÄ l ÷ÅX»O5‹’pXþ•=Ì~cn9Æêš8ö„å©‘ l pÝsS¢lÚ:cŸÂ‰OÞ8ÛžžÂ›3nÜÀmÉùG ¦Jr»±ª6¦¼òã?+1P}{±üªÌ÷© œ+¶3èSPiËö‹Å@p¥‰Ï°ëZSºÜ]·”¿ºB#½]¼tº¾Ä û¤Âdw5rR·W¹‰q úÓË"¸õÀ¦ÉIdI98¦´e•‡=E\rrqÚ‰Ù´ci98¢@m:ÓÓ*Š1‚ÌGU©mËF©É|’:­M 1„XÕ‹dŠæI䓿@ÿ(cè+FÅ-î丹“æA&q특j°ÍæO&Ò»¸ÉéXúŽšÓ_4‰³ž„t‹©Xï½’XÎmË`0è+"úÃ̼is˜ àö©ÊUDÃP‹ŠV8LêF±±n¤u¾g^lý1Y³±[¦#‚²§vKÂëÔ5N.¯nÑ'b½Ò§óî®Q2Īq“S¬÷W; ”dÕ÷7rr «»w­š¶ÿ(#©Í1T…,AïQà…9šfÒ«È<ÐF0  ȪC>i<˜äЬ3¸ÕUÎãI¹•‚ÇZF$tÅ4’ Æ;Ó¤É\ž”‡šc䊷bÖ²§Uûj®£.>ûpj}>Ì,±B2‚úqSéÖ¾eÜprA GÒ¬iöÛ®Dc8ÛÍiKYBîr ëJH㱺TÈÛ¸dw«ìÒ`œ`”û¶ŽD†px9¥ÕLo½ÒðŽŸI¨lÛ øàŒtªñ•pÌØØ8¬øˆubz˜ªqá³}ÑK!anÞZ’[¯ÒŸ!"Õ¶)äò}©òû1¯$õö¬¹ã{‰D*æ8ú¹'‚}>µžêò¿”$(ŸÅ“Áª­$7•ˆryêjàEK4ÜoBA)Ž•q”%‚çÞ…ƒÇN*ã§—hŠ’–\ƒN*œÊÌÇôÅUüÂÙç< ®7o'ò¦Kcî'‘ˆ\~ñqŒ5 jŽÂfnÞôiç9Èþ!ïSG (ÄdnüK(.0˜ÝùT¨¡[aq»ò¤iù±’Ç<Ó9Ç$÷¦1çÔñMrÄ|Üý(}Ý[ž;R>â9¦··î•kiÓn‘ >\ÿ*Ô°—1•cÈUåùÖ@ —‰²£×?äÕˆ¶Íƒ$Éf1ýàÝjÄad„ÿz#µG±©®VÈvàŸ­h_ÅVHUF9ä“Ú­Þ,qÚ9 (À ïT“%$ ¹a×>•Ï©'~Õæ±”ýòaÙ™P€6àø¸­+‰ä˜F¨0¥UTxâ´'‘æu`6ŠAVJIc±ÍK …½Á$1Ó>”øbH!—¹#ÔsK©6Р}çlgÚŸ®¡Bœ¼ƒì(ÕHBýç5ªŸ+M‘¾wá}V=ú¬:jÃ̾ÌÔ‡“§ 2Jz{Tzdf8©÷ïùtªöjV?Lõþ¿¥Cd»!Àu5^I>Õ{…ÉTéîj&o:王À÷5c5ÉÇEà}kQ6ÆŒ Æ?½ÜþµpPªx Ò®îQÙG²ìÁ¹¾’ê`N e¾†ª@L—/;©Èù€ª6Ã̹–âU$õ_nÕÐi1`ÉpØÁà}+ ðõ±O6åÈ®Õ>Õ»£Ã±$™ûÖ|—ŸÚsùH6"„Võ9¬Ûû³¨ßJa\„CêsT..~Ýw)ˆp¤*šÓŸçD…U[`'±­k·´DV Œ·¡ïZW %Û(!1ÍGuB‹ðÏÉôªšº[,q.C¸ËzU{Ø–±¯Œš |yŽFQWsN³p¦Wuõ§[>Ñ+¶0ŸZÇûÍìÄ¿+nböúâ²ÖÎêîFb¤¬gs°Ç·åYËg=ÄÛØ‘œ·¥iÜK6á6¢€:öÛþ5¡w4q[ˆÄh8ëÛãW®¦HáPtïY77ß €¤÷ÇJË–èìýØžõ›=ßÊ“H²»Có1$þ´Õ‘š>XäЮírIô­ Yy›Né8CÓŽõå[0©ß)Â{w«­i»;Ÿ”ûT ĨÅW8­B 8¬H|ŸJṡΡsóm¨XüÕš¢›<òpåL”­E f ˜pÞê)1ÇJ†eÇN´–í€sÅ1Oj‰r92¥= Š|,A©–&ä Œ?*z§àõ©A qŽ =d0¼MŸ—pÇçNY<¶ã4õsÆÀñšèb\J¬¼‡ç·5µa5âm«œ¿ÒµìÑÊñܵÒfX¡Vò\¯Ò§ñ £|††\­?Y“8ËI”ȶ¾yà‚H›VÝÏQ’*œxù¾™4ÕVæt$¸&3œô«V’*ÝŽrXe >•bقܦFXŒƒS0i&Èe8÷«Œ²\\oVRGÌ0jÑW–PÀŒƒš¯¨°2V%—ñ5SXp× 1r˜Bj®¢áçTR[oJÉ¿•d¡93“ü#Ò²nåód9;‚ÈVmÜ‚I c½é±HRÉål!;G°Ö‘¥¹fèݽE"¿—lYºqëI¤Ã•3‘’[å§×ùÑdŸ)”òIãÜÒXÆDfSË1ãëV,JOw$ÒdC?M`çyeÿS'×5=ŽÙ%i¤ÿT˜_Ç5rÐ*Ëq€0ÙÇõfËa–ãµ ‘ïSÙì&q‡UýëžÖ†|µ³‹m;K`Vžá™R8*EeX@¶°±'c7)ž¹¬+(–Þ&w%Œ î9æ²lâ[X‹7ÊÇ”«‘£"£¯%Ÿ#'¨ïWmb’1«÷™³‚zU¸#hÄnrrsR\$…º•^¾œÓïÔÎí']  Š[Å2±“®ÞõFá¿s³9$àÖtÌ|€ñõªR¹ò‚©â’÷UšÞÑ#P7Ã{U‹½bhl’b>ð늖÷Sx-– lTÛÜjQB@9~IǪ­mq~#I$n'Ú {i¯ ãqúU ¤ 1Œu¥8 )_N Q˜.ÑØâ®ÅnÉ;ƒÈ5n8J"» ÕԀƊ[œò =å ƒ´('4é$ÄQ&piÒIòF½­ 9l>´Á÷ƒšhûØqDØ@<÷¥›G4KÆ)‘ä‚Hã5tcÓš~é>õ û¶¶9ëLœcÖ£”Ÿ›Š„í9RFLTgn1ùTlyEBÒ€]Î#mFO$ûÔà ØêiïÁ;ŒÑœi€Àž•+¨xþ^H ­H@Ú~¹©ÈʃÜSƒÂpzjBr¿JBÙO¥urK¥´×ÝåŒý}u–×#æt翵t‰$v–RN9dûÖ‘$·:”×20ݳ=É®j 为–i,Ãó¬yžââid<°­]¯²«{“ÜûU¨QÕÈSŒOô«p£‚ÀéRíQ íÚÇ‚HäŠÓ-.×<7œæ´#UHUW ÎjYd[{w`£p\ô«—3‹+71¨ßŒ“Ž•=Ä¢ÚÙŠ»œVQœÇ—rÉÊÝ›úVKåÇ,ìw2®Ov=ë#Ì+²ž[î¨?Þ5’bg–;<‚îAúÿUQò‰‘mó–?|úwª ̶ýOÞsWîbIbØrQ@ ¿Ö¬Ëº …jhÕÓœã ô§]í¶²„ª€in†Õ£–ì­×¨Æ04zZ,ˆ˜—-žN)ðÄ馯ޠ ›Ì'<ñÅ>(™,"Fó?xM[³XÞìÂÌ9­é)·­ °ÉéV´áNѱÆkRVDˆ»•H5¿pbŠîD šÔ™’(÷¿ÝZÍ”G=Ø0•xÑv½¹5…v"¹½¦4N8îk2q÷e£*Q~^*wc 9=‰§Ë!‚0«‚}MHìѨUëOO”ûñµ†6ý*Ìq°µ˜KŒ0#o¸æ¦~Ìáù 3z¦`â䟔±ü3ҳżmI;£ÜqøÕ! e'îrEgg½¼{¹×m¤cvqÃÐ ª–Íw<—“®-¢¹ïè*¢Û¼÷^\®!ˆnÁïè*;}Bæîýœ¡PŠxQQG{qqw#†e ¤m_áqQÁ{=Í̧qUa—Ò¬½‚G*¼®›œ1Îjg²X™ZVU-Î3“ùTÍh© gl1çæœÜÆ^C¶%é¸õ ò…œíET@ªR>ëž:/žòo¼Êô^uL&%Ýü\â» †Å7ðXdJêtèŒ6ˆ~k.õ ßÇ 922¦=³“ú Ä»‰¦ÕÒrÎá[™Éý+2á š¤p“’ÏÏÐs]sù×RzÖïÒ’Š(¢Š(¢¨=Fi ûÀHT¼×3"ý‹Ä¥×•Ü\î¹?ιi±câf‘y]ÅÀë“üëžp,¼DÎ>éË~kU¤R¥åå ­ôÏ5EÓd­"”0qíUŠ”ËÆ+Vªê>eÌŒ Ç­G¿ón¤p0ã5¤/|ˆb0ŒÓ™¼©  7-‚f=éá„r˜r 7 cëOSµü°r“~†—Y·’+bc%ÕúƒÛŽÕ&·m$6äÇ—W<Œd¯Ò“V†HíÎÁ¼5'‡XÉk43)OñÕ'‡›a,S©ù_¡ýù¶L’¡XŽjÛé04›•ŠãÒ§}.ñ#/°©ÛLˆ¾àåjœ–‘ÚN7)df;IþYÓY%È +1ØÆ©µªÛK‡É¡4Ó&ÇÚØëÅE¼´ãÝã!OJlÊ]ЇÚG;}j9Fæá¶ãµG Üx8ÅG¼Á6í£ â¢Y 2ÇÊx SÌrCVf ö¨d\ò¶ûèÕùkˆ]q°Çµ5i€i£q÷LcoæjVHby©ÚÀýjVyš»dˆµiéÊãžjå #Ž´ÍVíl¬ds÷ˆÚ£ÜÒjׂÊÊGêì6¨÷4ÍFä[Z¹ÏÎÃëYºmŸØ­ÒCÌòÍþȬ›o°Â÷§q¹½³T,­…¤Jýeq’MByÎ?Z Ç'XšŽä8ö¨æFÜTSàFÜU5n#5_°ç\t8ïO]¤ÜÍ•04Ð l“‘Q€I$œŠŠìá1ïMº)óZ±•¶ÒžfãbˆÓ>§­k(ú<³·ˆÐ^õ®Ä[éO!áŽsYZ|êö8Èûíó}:Õ 2ÜÜꉾo æ³ô¨>Ñg¦~o æ»)EÇðð?*ínC +Æu’°D$qXö)çk;ü±RÇêxÖ±4˜þÑ­¼ÇISÓúÖVžžv«$§¤iŸÄÿõ«hó]zØ¢Š(¢Š(¢Š(®{R¶’K§›‚I+‘úW-ªÛÈ÷¯'Þ$•ÿX»ÉtÒ/$¢³"fòž ޽¹¬È‚o-ãpr§ö«zc¤ŒÐÊ2μ}jæžRVx\eÊñþõ\±d”´l2øâq0Úa”áÓ7 ?D“ï!ö4¦}¬«'ÞB?tºÏȸ`Ã5ÖÅ"\B².ašßB²¢TO ›7È0z㊭qw‰l'^¸â¢’x­K¸Ï\SWS¶t%z`Õí¤‰Š0 9ÁïMþУ$6¡¡Y5;6Æ‚CA)«X’ Zeý¶TsÔUM¤,‹†^Ç¿½cKDÛ$_™}{Öt‹°€Ãæ¨0+¡'‘޾”†ëœn÷ô¤1\Ô%>Mй5.á±FjRFÐ*ÚBM|rÑËíZ1ÀGwêñËì*âÅ»M.>òªZ]´Îc<8õªv×M+<0õªö×^kî=kVÀ’ÎÈô­!‰ÎG§½iر!¹ïYz”¢êüÈê|‹^= ¬½JãíZ‡šê|‹cŒzšÎ½›Î½ÞÀùPž¦˜u åyPäœqP6£<²;…9'§¹þ•~æOµËº©¶MÒSÜÿJ¿q'Ú¦X×þ=í—-õ©ü3û·œÿ œ}I«^‡Ì¼’r>âñõ5cÃq’YÈ祩ϙHy=jö·uûÄNµsS¸ùÖ4<Í7B]Éq1~Lì)|6Ÿ¹¸˜ýç“¥Ð×ýYWsZu±Z4QEQER†ƒÐÐzU)rvI=ûÅ1.æÚ>bzšÎØ$uÎEckV¦´º@BÌ2ÇÑ«7^µ)p—h1ànÇf¬ÍfÔÃv·>I@ þõgÊ^ ÖE?2¶Ef+¼,Š~e"¨«µ½Â6y~U««F#”Jhe :ßñ­=^ÜE(•0ðÌ2t½hjùRïL4rrõ«:6£Qfù0x&®hšœqF°ÌvŽÇÒ­éWȱ¬rb¬^Ket ‰W>¾•>¥5•ÞUe]Àu©od¶¸VAœu®~à„™‘±•GJç%ù%e$dtÇz•Œr2ädtÇzÔÒnr…\áñZš%ß•8@Nµ4»å烊ڹ…gp85Š$ÚÎ3Çñ\à‘£f\ü¹9Åc‰8þóR2 ɳ•4æ_JsšvßÞ)^rkRÚ!åÛÆ­ë;qövâEÁZÕ‚ä°êŠÁŽ×}Ì“‚X‘Šæ£·Ý<œsÇÖ±"·&i$Î lÖ¥£‹w–fùIâ¶tùFŸhòÎx'ŠÓµYÛœÅfO1»ÜHòá \ŽäÖEÅÁºÜÇ møõ&³&—Ï`,`çµM³y1,«²1ʯsZ:Fšò<Ãdc•SßÞ¯iÖLÄK ª®ÛsšÍsÚ©9Áª’Þ»Žâ¼ŽØ¨ŒóŠÀÜ3Î)±"¨ñžGçLP÷éQ¨y÷ÅKœ«céL'ƒQÁª7¼Ã´|Ū3»8i˜bêàž+Z[DÓt‰#f̳õ#Ò·'µ]/FxØækŒ}«fâÝtí!¢ë$¼Rxdì·™˜rOõ/…ÎÈ.Œ’F=êO–‘ÎzzÔÉ™e|î“;G»£w!{™Žs&p¹ª÷.^YH9bvçÞ¶të²Ú,g©ùã]•jm,–>çæ?lÙCö{dCéš³Vêz(¢Š(¢Š(¢Š¤ÈŒ¡¬¹£Û3+§5IÓ}j½Ü>}¬±œãÔÕk¨LÖSB9ܽAum,c9Þ±.":yx’Ù¶HGR;5c½¿Ú4Ópƒ@ÛdÝ«"hň¸Q‡„íqV´É–D’ FQ°9þéV4©•â’ÚQ˜Ü g±«Z|«QŸçXvè^CýÐg@¥ŸØ`þb«Î‹h–è.3Njmjæ5²ŠÝ9,2F­:-²B¼’¬”ÈÀó°Š…¤!BînÀVR1‘‚ŽO`+WûBK`‰4€²¯Ýò­uÕeµXÕ¤ÈEû u5¨5€"»…éU˜“Ó¡99ª$œNµT“‘éÖªÌ@,Bî8öªï’xªòó`gQýàZ›#•ÇzŸ )RŽ”‹Ò£´ˆÝ_ÅîŸlÔº|&æú(Àçp'隟OˆÍ}ŽÄZ:Ìž|®@Pÿxõ­M~o>ä…¬(?íµ¡¬?Ÿ.F󥳉ôù¹Ü©#ëš[5}9ƒ±ÜG×8¥¶ d2ÇîÃÅTµšê˜åœ†aTì£2ßÅûÌáÏÒ ´MשyÎã]A®¼õãé]zJ(¢Š(¢Š(¢Š(¨n„óøy5VúSÍ^ª9úT71»ÇUþU› 0=MW°Ä˜<žA¨­~p­e_©Óue_Ü\¡þcúÖ^¨­¦j24kû‹¥ ŽÙ¬Í@5…ô›F`¹^G½f¨h˜ý2+.0c §f¨Á˜ˆ+€1šÛEû^š£tÐŽEm²ý¦Á'C‡=¸­W_6Ù&_¿Ô}EhXL·–ÁÝx¿+ƒØÖ¥„É}l²2ãåp{õ~ÚHîá‘Î0ßZuå¬W6æBäæBΫcm\œŠKËH®-ÌDÎE`‹_"v·uÃ(ÊŸZæ©·àuù”õ¬QoäÊÑ0ÆÐ9«Ÿo™Uí¡Q•1«ÇU•#kXPd >•lßÈ ~eÀÍE<+À“ɪȭ’H$äš…ã^O©4³£3K!û¡qIv<Û˜èIûÿœÔWGͺCœ‚ÆAïþsI9ó.õ—ÿ?\¾ýâÄ]þPƒpsTùÖÍ…XÁaVop|¢Í…U…UÒÿy¬#òªú7Ϭ+ûîý* (Ôw_é]®§½ow¢Š(¢Š(¢Š(éER2‡R­ÈaƒHÀ2ÝÆ)0Ý鱯±"ª®Œ Ò$jƒ ½=hDTPàT:¢^Z´]À%O½UÕ,–úÍ£?xrµ[Pµv¥O,9È4‡¡äÿÖ®1\ƒ×ÿ¯ŠåÒR‡iíÇë]‹(žÒDÏ*Û¿:èt·ó´æA÷‘÷cë[Ö/æÙ?…ºTSN,õ ò#˜|ÃÐö5XÜýŽý°O•7§f¨<ï²Þ2çä—Ÿ¡¦jwÌŸ*¾Hl曩ê lí9Í6úô£ªîà6j@dÕ [¨@ó¢;vú­X).­l.¢ÎŒ˜Ù}EIµõRæ?¾8jY­Z Lã+ùÓ.ìšÚUrq‘ùÒMlÐLñ‘Í)9QƒÍFÍÀ÷¤'õ©cPGEJ±†N*@¹ZÅÔÙ¼Õ$|ª¸ã½dß“æ/.ÚÈÔKy‹ÇqRéhÂhÜ·ô©ô¤as“òúU­)ΉãÒ·ìÐ5Ã)VwïØ é,¡f¸‘6³¹bO¥lÚÆ64ο3¶ãšs¹'ßµ2Wç?•,ɬ}QfGó¡?+uö5‰ªÇ,S¢?#u>õ‘©¬‘HeNºÔ3go'ðZ\ãžyè*sŽ}j¬®6 Ë–ð{Ô2í¾õ^F]£Ö„#vÔu"j>:¡à¶ÑÚv6°_CÍ9Æ>O¸V´ü=Ieq´í/(RO¦øÖ÷‡!y4Ù¦I6³z £ükkBˆ¾&<É'ÛªG™u< ‘ÐörúÕBÞêaTåwm\ÿw'ÿ­U`Ì·Çë€}‡ùzñY&Ä’韔ñ«wèépVXŽÐrcV.•Ö`$Œðr­NÄžWqóãŸc“Rè\HÒ›{š—Jد#7ÞÀü+eX0ÈÍo+‡ǽjÈ¢––Š(£bŒQEQEQG4P* ¯í `²L¡³Ó5·¶Ð8W•wŒÍD÷0Dʯ"îbMWÔÑ¢EêI4–Jw*‘É¥°RdU#’EKf>u_S[ÅwF8®œ¦è‚çnZÚ+¹6瑼c;ƒ/©â©Oo$HX¸eîO^Xš5ÝEPfût†Ò;‡§¥fªFskù25QÇÛ¤0§*:š¢ç “϶+1ϯ>‚¨?ž}*•Ä™r$(ù½V•²ØJ©;å¦*ͬ[vŒ–É¢4äZHW‘õÍCvxǶOó¢__Zt¿*ŠÒÓ'ò4)]NÖ20ç¶tëƒmáö(v³ÈØ÷éZÖ34(pÌÌ?SK¢[¶1 ‘së€iÞ·Ý|Îr|µÏ©§hÐævcŸ¾¤ ÐÔ"idQýãëíZ´,Ë…Êc“ëíVï£i%_—ùÕl¤wEÆ@uÚTõõI ExXgk® ý=*öÇrH1Íi@F7úVݨu„nÆJÒ„ð©*Z}QH3»ž”€œœô¤Í)¥¥ïEQE«}¡Õ„]ÊYZÔ—aBÆbþ&C×Ú¨j8\ uNì;ÖCAmnTÌ 3À''­b˜aˆ«Lyb¸äõæ³|¨âtiOÌÌ1Ï5Ð^[Ç%¡ˆýÐ>_ËÒj©5‰º. çéŠÙ½fµØ‡¥`Cnѱ‘ÏœZæb…Й#l:G­aG OÎEJgóeˆºàJ%3OpO4ñ!’t.8'—ÀÆHo›éN»À’Fv°ÝôÍ:|yÐ’3†¿:ߎx¥û§ 0k©†xf?!Ì܊XÜ|£ ’¥©;P8¢ŠÍžÝcf ~…yj°È죿"³.-ÄlÇf³î#y/' —Ú³¥‰ç¾PŸ6¨ÉËx¡yt«‹k"yX`zŠÐ†ÊXÞ#È ŽjìVÒ#ÆqÞµF>îFìr+pÎÜÀV˜=yª÷7pF dðFMV»»·PaÿXäcjóІââ-¦?¾ÄcµS²¶º ç`‰XwëŠÎ°´¼F}±˜ƒõNÒÞá MŠÝÍeLÿ0zŠÄ‘¹?JÉ•þo ªaO˜ÏP*©ûÙÆ*“‚_ÆkS1÷GZu¬ íY³å¶2O­Fü…ß1P;ñWtæh°7ÝIVúcŠ»dÆKT¶~$,*»b۬ⅸ-ùÖ¶†„ZÉ3f·á[¾B,¤œŽf·áZú:´2½#n?J¾ãtgŽ•¡2ˆ©\÷rE ‡¹ªÎÓŸCéTdŒJ˜<‘À'µUu¾¤wô¤I¦WH™ñžœg4Eqp$Šê3ÀÈÎicšMè…€'¦GZ¶2$ì+DÌA>­œã>Ô´´´QGQEQES]‹±ºSefFGè})®‚D(Ý+™ž%ŸÄ) +4jê¤õé×õ®VxO%ºtFUbNsëú×=$BM}!PÍdsÓŒ×Ez»íŸoUÒj*ZÊ]¼`n»x ¶}½@¬XyàÿxιؑŒÄ㬈UŒ§Ñªim€\ >Ƨ–ÑT1´óô5,–áFà÷¨\uŸ+þ= @Ê<Õñüý BÃs®þ½øÖ¨‹ÏdO–Uã>¦¶Ä>}ºJŸ,ª0O©­P‚H–D8p1šbß<1½7Šh¿’Ý‚ÝGòÿ}i¿jxˆY“åõ«QOã18oçW`¸†àf){w«Í£1¸>Ô÷Eq‡\Šs¢8à"•‘\|ËšŽhàrÊ2Çô¨­ìá¶vd'ô¦CoD²ŽOz$¹†>§<ãŽÔ’ÞÃ}Üã#µq{œâ©É3IzÌ>UTÚ?¡-ËIu#©Ø¯âj¬“3Í#ŽjŤ`³LyÁ“V4È”†œŽzj[(úÈy5k$Õüæ­æ¹ ln¼1ô®±ü'¯S\”˜ÇƒÔÓ­ÑYÉ!FGãQ. sŠ~ù#*ÁÉùJÆïZ™AÆj‚/›} cΣõ¦Ášöº†‘GëM·C%ô Ôïúf¬Êâ Ûä«H~$Õ¹± õìiÿ=vÌÕ–ÄWwq§y°?Zé­¡ò-£ˆÁ®²Ö!¬Qqq]1ˆaHÇðŒT•->¡’Éd?ð­5»º3Áêµ ‘7U?…Wò^i“?*Äá²GµW[i&¹˜mXÛ=êI:1Ûªõhÿ*¹EQEQEQGJ:QUõ ‘ee,ÙåW õíUïî…•”³“÷W =ê Ëkg$Äò{Ög†ám×÷‰ÇãÔÖO†`}×2ýòÛO×½gè0¶&žAó3cŸZÚa¹XzŠÜ”n‰×ÕH­g‘‡¨Åf=¯“?¡5“%£Al:Œâ¨=¹Q€õ¥Gƒ3“ÓÚš%…Hó›#Ú›æÆ˜óN3Ö«´>fåq‚OúUY!¹X`“O¥Wh÷n‚NsíNIçÜL ··åD77ÉöçŠrM1cå6;U‰¤™í »+epxéVçšy-f¹pxéSÍ$nÀ¶íÝ}« £ºŽTò²«X›nc|¢C{VIIÒe1Ç¥oØÞÈËs¡ÜxÉ®N½‘ÄqL§qknÎåØ*H2H­ Ñ«•‘p…u"££¡8ükæ25GAÈt-ƲåB/{Í6åš w—ŒåGëIqº+v~2΂‰Hóý÷QZè‚8ÂŽ‚·QÂ÷ýkIG‚˜÷!ÁpO·5—–èpdÉôÓâ%êß•qîrÙC•Ç8ï\<‡-•IdåRÃ÷Iü)"â2}ió˵OÒžÍòâ¤gÀ8§ø~ßͺ{©8H½«CÃ,—tüGÝøÕíÓÉvßr%8¨,âk»£.2fœ}ºÔHn®•±––}߀çúÔVµÅØ“©’r߀çú×YÜ×dzþ•Ów¢Š(¢Š(¢Š(¢Š(¢Š(¢Š( à ž”p:ô ð3XÄæêñ C”ˆŽGvÇ_¹Ífëíw‰Ç¡êßýjÄÔæûUÔp¡ÊFÙã¹­‹+u¶¶HÔsÔŸ~õ¹cÛZ¤kÁêO¿z×¶‰aPzdÔõ=IHÁHÜÝškí KýÕù¿*G*³ô^kœ‘Eä“HÏ“åE®VOô¹¥a÷Á;kŸoô–‘¿Œ7Ëô¡ÍÂ(i .§¥2_=21,)$󣻊–ÞR» ŒŽK ’ 6ídçû¤†B6²þ5 ˜¡ÕI^ø­$$aÑ Ž*òtW Õiâš7ó#Ú«ÏmqïX›ò¨e‚d}ê‡Ö¦°•.e xòÇ úÕ­*UšBÍÇ–¼ƒëSظw,Ã9«z»ŠÃ’7NqïÁ%a·’CÓ8â§k¢~Xâf>½ª §&h›“8ãš§~ù¸‰¸m!ÀçÕ{—ýò·ñm;€úÓf…e°Úçï0ÇåMž1&š¡ÏÞø IÀ6«“É|Õ„-5²JÇ’9ý*Ân¹´Žw$ä|ÃߥL¡¥\’}©…7|¨¹?J…b.ÛQr~”Ácµ5ͯºW/!ùBŽõÌÏ÷BŽõilkð:“J¼¨AÓ½*Œá; ¯zà1ö¤”ÇÚ‰H$ZÓÓ@‡N¸ŒáYá,Zú[ˆtÛÄ$hK~| ×±>NpÇ“øð)|=i‹òBþÑ<Ôþ„´¦B0°‚ÿhõ©4 ûÎÈ6ƒ[’H ·Ý­÷F¥ÜàzÖ³0A“Ó½ U” ƒJŒ®»”†œ¤0ÜA¥¥¢Š(¢Š(¢Š(¢Š(¢Š*+³‹I=× ãl´”ú*+¦Ûnçý“\í¬~]èV àò=ÏZåí# zˆÇ©¬+Tìzç]AëŠëÒºÔ°YíuÇSZPİ®ÅéÖ¶-á[xÄiÀÕø£ EíRg×¥Iš}V•cÙ•‘¾ñRãʈ°DcòبeØ»¶(ÜÝiÊÞLô'¥80¶·ÝüMÐQ¸E¡=*š¨bFܳñYè…‰rÄäâ«*‚HÆOz±%¡’ÓÊV*ÝA÷«sXy¶"$%YySïSKkæ[y`Ãk2ÖöêÝͼçiÉÁakÞööͬ­·ž .sY°ÜÜÛ„¯<ÐÖ„wR¡ùÀe>ƒ£ôèpáYO Å]†æU6>ÕË ‰”g=þ•É¿\³Ê*èÀ‰9Ç5*ð 52€£5K[”RxÏ4Õå zHÀyÀ=3W¦Ÿ"g÷e€ô^*ÜÒad`>FoÐU©äÄNøù¸ú ÔÑ’K}dQûÇË‘ë[ú,Om¢£(˾d#Ö¶tØÞÛJœÄæ§»½h­Ù(8à‹WÖ$¶!!T F[w8¨u]QíÈH€Éæ6äÝFòíÚÓ=êÆ‹r×Ví+  ¸ížõkLœÜÛ™±€zU¿1„#5 dA MÃq«;×vÐFiÔêuQEQEQEQPÈŽc‘‹g¥A,R4£9}àãÚ¢’71H¥‹Ò¹÷ŠHî<ôùŠ2“Ÿâ×0#h®Ê3庖ÄÖ£Çp²¯%?Ú’ðG*;#jÞ›P\Fä‘pÙìkYîÄr¡èŒ0}ªàÃÃOB*ú²º‡R ž„U°A©)h¦KñþÕEqœ¿í d±‡}áK\(úÓ¢bL(Ç©¥E0)ù4üÓ©(¢›,‚(Ë·ALšA EÏaÅ6G cÛ¥T÷¸Šœ±'­P€y­æ?Ê€ç$õöªÑáØ¹á6WifaM•šâ`G'¢Šk³K'ç§µZ†ˆîêç©5v e„–êç©«D©ÏV©jz–£žÞ•Û*ïQ\ZÁr›%@}é’Ãã ûÓÑU6³–ÇB{ †=>4@¥‰ÇOaQ-¢ªã'ë\œ_4Œç¿ħޮF?™óøTŽß»sŸ¼Ø§“„úš˜ò0;µ0'®çJ¿+9=±I1±ØZ7–Ã˱±L‡”îo§zÕº´iöj2òüÏô­K«`òØÚ åŽ÷ÿv¶go*$‚5É8UÐNþLK k’@U­yŽÔ¨Ïj–¤ˆñK+ªíRÞlñYZ­¼RÇ,ò")…B†ï•CS‚9•æePcƒýãRm6š R>czž•iWì^)˜Æzzž•9eÑöÏ—ÇÔÔZ[¼÷ÎÌN@¨t—{‹é˜â5£Óݦº‘˜ðœ~•®zÖÍiRQEQEQEQE¹éF@žz8ïÓ½dI 5é0« ²ç=Z奖Ô ÈÌLúÖJ|æ/¸N>´—Ì‹"ÄØ9º‘Võ-žjCÊçëVovù©ª ŠÞêM6q’ð¿OjŠÎî]6UF%íÛô¦[ÜIc"£’ñ7Cé[qH“&øÛ ×A Ñ΂H›*k^)VT܇ ö§SéÔQEQETO=¹-¤BDZ¨ZâØ±‰¥Vo¦„±œéTnPC$Vñ–;ßv1ÂÖuÚ¥†Ö&-–-ÓUg%ŽËrOªôùk“Ëõ£k‰3ÕZ· {=êZš¤¢Š(¢Š(¢¸äûØQÀæ¸ëÇÖ¸¸†rE#”Œ r(º¨ëž)ê HнI§ÏŠIA=U öæ¤dÙ$€ôùsùÔÁ6Jÿï®:ر"ë]¸›ø AýÎkL?kÖg¸#ä‚5~¿ç5¯§´ê—7È–µ›ÉǶkeÈIÇãZgå5([B;Eè_ÌqèJÕ~Ó¨­ª žkAYl¢{Õ~èo5¾˜â¬ê2¼ŠñBªrÇÜTú½Ä’$Á´Çù½K¨Hò#¤X؃“ïU¼'Ï»Vê1PèD﹨"¶«vµ¨¢Š(¢Š(¢Š(¢Š1žzÈÁTf2¹1Qì9¬ËÝ,É({pˆ?ˆcFêÃÍ•^ ª;ŒVN·“=¤Ã¸#õªzôB ¬¤òØÕ}aSÚËÔgi§HªÑáÔ˜Ï9Å ›ãĈÅqÒ”¦ôé(z6:UT’}>_22^3Ú«Ç,úlÛЖҫ¬“YI•Ë'¥lÙ_Ãz€«ãªšÜ±Ôa½O•€~âµm/#¹N éVn¬R´d`“ÐPNÐIè9ª©|’oXÌíªI©Å0DAp¹_­V[Å8ïqXh’]»^HCré\ý’G$ï%ܬ¯¸ôíXöj#Ipø~ÞÜÖí´ÖêÊ¢çÌ-©í]”¶ã .¼Æ=ÖÅ»Â_7s7@jétÕšJ(¢Š(¢Š‚úö+|ÉÏeõª÷בØÂdr 쾦 º»KX÷±Éì+—… ‹y8 Ø®)îõ5ËF¥ ýãSiª$’æñÆV!=ÍX±Q‰î[¤cëSد?ÃÀ¨dùJã–pTÿŸ­D_Hç©lÓ¶[3Ÿ¼ÍÅoh´àí÷æ;Íu·ò4Åc÷å;Íohð}žÁ3÷¤;Ûñ©oäÚG8Å.©q庮~QÎ)ײì`AÉýª¾nn®s÷ö¢þ¡Ð‘žK›—?3í@}…G¥!/<íÎòòþ´û¨%GžxÇ.UBAÔÒßÛKÚ.#ëx€ïKuˆf•:»Ê Ò±¯yƒ•bzƒCÄz•ØåbúŠƒI/.€?+6ÔVÉë[µ­IEQEQEQEQEQYºìf[éÎÓ»ŠÊñ ~vž®„»ŠÏÖSͲ 9ÚÀñLÒ°`AÚUã>Ôí"EkxT‘µ—ŠvžêðFFZ¸öQ8ÚßwÚ­Ie  †\}*ÃÛFü0â²o´Éíçó­IéÔ*ƽÒ&·s5¡Î:Ö]ÖŸ5»™m¹ÁéV´½]e>EÑÛ/N{Õ+Y"ëäp «v¦²þæo•ÁÇ5vø9¶Âœnáˆô«š®óeˆÏÃVo÷|!À¾ôèYÊía‡SëSÔõ-QU5B+²Ã|­÷Pu&ªj:„vdüÒ7 ƒ®jµíêZGÏ.~êÕ k9e·j9fë^•¬ŒÇPÔ9oùgíT ¶vo¶^dŸá޳&o*ÒôBZ°g!-ãQÙy¬‹¢Ýt ÍZ¶ÉÐIîøcVÑ<­ÝÎMZùz:¯w95˜ÿ¼D“úUóì°ªDùÒF£ ùvv  X€ì¢»{ œ8èºØ0-ãÇe¬½VR~Eþþ úVF³&ù cûøü«7SmòÞÇåZ6QmQG~kZÂ! ¢/¨ÍhZ ŠÝTu<Ô’mòŸpÈš–p¿g“xÈ M>\y.[¦ ci¹k‹aÝ·JÿÈW?¤sul?½ºFþ•‘¦¯ˆtÈ.kpõâº>ù­“ëIEQEQEQEPzQL¸uŠÝÝΩéQÜH°ÛÉ#œ*ƒQÍ"Å;5“¦°ºŽæØ±— á¬M!þ×ͨ$£&@?Âk3NµA<;X3Ú«ƒ5†ØäÆcl€=*ZkHäÿ–-œ{TQ4¶¤#ŒÏæ+vÞt¸…dŒçÔWG©q‘AŠÚŠE–0ÈräT´þ”î•—«i)t<ؾIGqYÆ·+æÃòH¾•™©é¢oÞÔzVT:•儞MÀ,â±àÔîì¤ògRê8 Öt:Å«ùS‚@ã·¬.­îT˜Žu_Jè´Ë‹{˜Ë@ØoâZÛ²šãÝsÜzUª»Vh¢Š(ÍQEPÕõ°À2 ï÷³õGì0yȵOS½û@ Vû«PézkwÇ}Ãrª€T:f˜ÅÅåñ/1ä)þŠÂÀ–ûMÙÝ!äJ¸ë$ÓeOÈ8TÓ n§Âÿ« Tò '—¹ÓŠå¼À¨3–ùWñ®HæM¨>ó æ\ùÛun+Zé£X¼µÆØâØG½iß2Äi÷R0Ö´o™|²‹÷UükÑC]€} ™j3r¶k6Ðfèû ët×ó,ÐýEvZDžeŠúŠê¬[}ªšÌ»%®d ýì©â²n~}AÇ«â³åïë–Åm ÚŠ§œšèÂèkÐw«jlWO—äŒqU5‡)¦O€w2ã"«êM³O˜ú®+"7X!iÃrä?ZÀ‚O! Àã ût­dÂÂÞn>«vÜ–·‰Éašé­X½´lNI» - 7r*J–EQEQEQAéE“â(ä’•8MÇwÖ±|P²´ªÿ«ÜwVV¾²•bæÖ;‘ó¯ÍÙªIàIÇÌ>nÕ‰%½Î™r³E¹£cÊûV•w¥\¬‰¹¡cÈ’©qa8eËDsÅiêA&ªÑ7¸âµ­õky°˜Ÿý¡ÅiC} ˜”o~•p6@#zWs‘‘‚ê=*Ïö=ꞣ§Çy bNƨêšdw°±U (¥¨Ø%ÌlTãõ®~Ť³½FvÖÏi%úõ;XV>š^ÚíGPx5Ö 7JëՃø®‘NT{ÑKKEU{ëÈìm̯Éì=ê¶¡}…¹–NOE_z‚îé-!ó“Ú³4›7»œêWœ±9OoCYšM”—“J÷%‰ÌhzT4ûWºŸí×9ÿakl€FOJÜa¹Jžž‚µˆÈÇoJ: HªaF)`q\u†ì;•°®ÏhÜy8®FÄ´n<…^*Ä䜫›95,ÌXm?V©çbË·¿ñTz|!BL{¾? RÚÅŒJz–ÛM³‹hYS‘[d¦Üù Ð ØÒ.LÊnŠxük_N˜Æ¾Sv5 ãå|pCn'Ú£›‡gÆ9-Lq‡-ŒäšÛ'##Ó­tƒÈ9È­oqÞ©jû¾ÂÀ6ÜžµŸ®–:yE8Üjž¬OÙ6©Á$ Éhdá·t+ó*ŸqÏ5ˆbyî"¶e#,ª~™5–#i¦Š1ʃøfº–4@Ô€ RBª€2Mo¨ g¶9§ÝóÒŸùsÐÒŒ(¢Š(¢Š(¢Š3ŽhÎ9¢³õVÂÆ»¾\øÖV¶Ù¨#n Z£©cç€ üjÕ–Eœ[ˆ'oj½` ØÂ wµX´ZÄ>ïjš§©©~÷ 2(eVuR2«Œ8ëTµ]ö®#1éYº’ؘ”Ï¥S¿µÝòÀÝž*´_n¶@]ÀEÀÛUâ}BÒ%ÜFÕà/ZŠ9.á@_ â‡ÖŒ2ˆä@Ì})·LRl–5'¹Z¬¨ûA$ö¥¹ŠÖâ!qØÁÇ©©. ¶˜EwlŽ=iòà ˜î# ô­8óå®qÓµj'Ý:v«ËÓµ---94Éà Jçoœê:œvà~ì0\@y®bòOí]b8â0Á~ k êO·êQÂÈ5Ъ„EP0ª0+¦ UW…Q[¡B(P0b––Š(h®J<æEàùb¸h°¨ô®N e€š~ß:\/Ò¤HŒ’áGj•SÌ| ž0 #õRëš² y>ÛNß®jÂ"ÙÜ šrw3¯Þéÿê©e$;88-ŸÓÿÕObU·‚ÃùTÜ…-Œ«†}5e³†$pùýy«Ü}ìÖ•¯üzÅÜí±jsi ÿ`*у˜cÏuʡԔ5©$ãÕ}a7Y1Ý„ƒS\Ú»5™`I½»ï ¹éŒV.˜ä_Å#±ÈeQùb³lý°Hí“åF­v^fDÉSÀÇó§ëÍ5Ë$lBtãNÔnÌ“Còç¶à`ð#)Ü6šèmÝd·Ôî@­„`È¥NASêJuQEQESUœAc&[ À…>õKW¸öáØ*¶¥8‚ÎBz‘Åa[ÝÍu"Fùçqֹد&»š8Ï$àŠÅ†êK¹ê0tÑ.È•Q]d(c…×CÛ1N§Ó¨¢Š(¢‘ÑdM­Ò›$k(ÚÔ×@ãš®¶6âV ,zUdÓ­ÒGv@w,¡ÌÈM%ÀŽ$cR¹É¢çɉB׎ƒ=éÓyhªŽ:{T°ËædÓ¡û[;#hî)ÐËæqŽž•-X©j;“‹i¢“úT7‡ý c»ŒÔWGÒ˜JÆÐ"óne¸=vîy5‰á˜¼Û‰nOð£êy5™¡Ç¾WœòÚµ»] ­ƒE•ä¦I]~ð\­WÔ&ò,dq÷±õ¨o%1[ÈïA\¥ ýùg$m_θ»p|ÂO®^ØìOaZzR$Gøƒ|ßji cÉÁÎ ­-4.ôÏZ}ͱ†çç !äc®*[«V·»!ˆòÏ)ޏõ©&¡œ†?/Uúv¥ Þl}÷9_JDBÏ<îb¿_JK:)9‘V'·xíË2go§QW&¶’(7ºä/_jžH]"ÞÃ8àûUÛRÙôükF̆µB3éÍ]·`СJ«®Jc³ù‰¹>•OÄS´ï”gs ÕMnS—;˜f±ãœùŠ9ùU¤®~0èåTµdÅ'ÏŒ”úÔ{ÉÈ ™ ~4nÎì‚]©3•`AÜÝë[@’B²GÉ:zØðä³0xŽLIßÞµ4i$te?tw­jÛ­*(¢œ)8Î)¤àÏ”1ÀÍ5&ú6zŽ;¨d6 ã£Yãu7>†³õø$šÊ1%ă§Ò¨ø†ÚK‹XÆ\H?•R×`’{E ¶ún¥µ©ó§}ÎGÊ£ ¨ô] ÙŸ:v &>P:þ½&•¦›P$™ƒI—ØV­lV•QEQEQEQUîTîÈŸ©!ÈtÍT¼S÷€â™r´·a`j-:9ZPûÀEê3LµW/¸° :ձɯsZ€ƒÐƒWApsPjN¸nÂ3ùâ«jNM¹cÐF•C¨6Û ØÿsŠÏðÄ{tÓ!êîN*Ÿ…ãÙ¥nîîOåÇôªºlÓ•W$Ö½kVQT5IÑ9Ç$VVµ0!aÎqË £©H e #µsñ/ÊMcDŸ&qR£ù0)^jxŸÈ`¦ÌM•­DiƒËvï*Þµ±o-ÄNÁfNQzÓQö˜Â“‡\ïUJ: Œ¥v}”ö5Q‘¢r…J²G 56Á0nÕ« ©qG=ˆô­»y’ê ÀgŒ0­(gŒøÓ¢‰#Qp'$q¬@ª  óÅ9S…Ôwˆ&¶t#9¨5¼û)Ž™æ¢¼‹Î´tîFkœŸtLè\d×&Ìbf@pvâ¹×se\þýj~RDisäcÛ53ug‘?™Š²3¾_ë[šZ*iÐA?Zèô”TÓ¡(0JòknÅUm#Ú1‘É«Ur§£ÉéAàsÒŠ¯%Àß´tª²Ü&ÑÒ ’`â«ÊP6í̧ÔVuÃ"É¿qSê*¤¥U÷go¡an[™$a´wnµ¡ê}”Ë3€«Üõ5n;…ò<ÉX;Ó¡ºŠ|m$Èb¤¶ºŠås<ö#ø§Ža”<úš§©(¢Š(¢Š(¢Š)“1U89ëíQ͸(ØpsÏÒ™!!FÓÎJ̾ÕÖ4Û“Xú¦®=ˆ\Yº†¤v®j£ì·C´1ÁÅeÁs-Äâ4bŽ8ª0\É<ááXö®Š8Äq„äñÖºØcD¨9 sžõÐF/æk+Z™ç–=:^B ‘ØVVµ3ÜÍ›oË1Ì„vCS‘ç‘,¢ä±ËšÒ¶·K[t…8 üëJÖÙ--Ò袯A ÁF½qRÔÕ%G4¾XÀfý*™ü‘ެߥG,¢1Žæ°Þaqpá‰ù˜ô®yÜ\Üí'—pÒ² yóá,Õ•ËïáÈÀèk&9vb²¡™‹ãpw«);²l`Ú¬,­‚3Ú¬¤Œ@SƒÏQZpêùÑ«)ÛÉü«NÚú!•©ÇàkoñúV–F3Ú’Š(¢Š(¢Š(¤e ¼ÑEeÞh‹s>õm‚²/´4ºŸÌV۞³o4…¹—vp)¯¶œðF¼È9&¡–;]6kxÐeÓ’}é¥-즆5¯zÔ–d†Ý§sò*î­™î v¸º‹œVŒ³,04¬~U¬í6þQûÉÏËŸîÖvƒnÅúoõ³ôÏ¥SÒàl=̃生ʵzÖ­_¤¢ŠËÔn>Yˆä¯Êµ©\Yþµ{1Úç¿J£§Dó_!r¡ç·SJ…æ¿VªœÕm>3%ØoáSÍG&–ŠÇhÝž½ê tàíà gj°@ÇÖ«˜…»«/Ì è{TX‚OQÜÕ” £Ò¬*DXÁK}Ðj)7…,=©Äk¸ €Ý­[ Fë)àt­m6Èç|¿tt­ +níÚ¯à)$niª„à ¼^‚N¥¢Š+7]¶Y™”|ñ߇zÉñ ˜¸²iÔ~ò›>£½gk–ÂkC*Œ<\ƒíÞ±ÕƒÙ«c,ßËšÁŒù¶Êq“YHÂKenø«º ÂÅs5±û’¶èÿ¯ô­_\¬rÍlOÛÓúÕíp,äÊšÞœVýlV}áÌøÎ++RlÜ…Ïn•BìælTê†Ðß1çmS*#7Ì{T ß,OJο“r³pNéÿëÍf^IæÁöúw¬ëÇ,M5O•»¾éöíL£EvR3Ò‘s+2œ“‘Z nÈÌ åZHwɼ°ÝW£ùœ9?0Åk(œàWF‹µ@Î@­•T çKKE-QEQEQÒŠZÆž!>§s»±U•s×yÚ¥È~»ÂÈëY›}1n¡‚ÈRkr™^ÛON<×þ”ýbcsqk¦¯ÜoÇ¥.¡!žæÞÍ~ë½lÆ‹JŠ>U·UDh¨½Åjªì@£¢ŒRÒŽ´´Éßd2?¢šŠé¼»Y[Ñj9Ûe»ŸAXWÒ¨X¢-÷«œ½“ýTk’ÝkíùH×–«Z,GÎy2p¿!÷jÑÐíðÏ.8ÆÁW4¸¾ô®›0ŠL W'î“ÅZ}=UXÛ³)?Þ*ÃZÄH>‡¥swS‹‹²ãi>õÏÎâk†Âãi'Ö±du–s„ÀQ‚}éÏfIŒîÏSIördLò &Á™ç¥hCªÉe¶ã2(èÊzV•¾¨ö[mçC*vesŒU¿‘šOAY¸i§eº\{V_2ÜÇåÝÓÚ³€2Lw}ÐvãÚ¦½Áäà(ÅO{ÊaT×¼¦cš–6YR%ä…üª{fYZ¿6H϶*h]]¢ ßþ¸>èÎ:v®™NT}+ltJZZ(¢Š(¢Š(¨'ºXIP7°ì*µÍìp>v<`T3\¤|˜ç¦ ™žeŒ Œæ¡†òâ[•Œ  ŒšŽ+‰^P»@ªÑ7\º¡3õÅV‰|í~캅Iúà…AùšÏ÷P®~¸áUáO3ÄÒ3ò8öàT6±ïñDÌ~`™Ç·¢µv·;7!sŠÜ=k|õ­jJJ* @fÂ`;¯õªš˜N”t$úÕ{𠣎çι3ß„÷‘§ëÿë¬ Æ[Њ~d È e¼Ú½@Ån¶Í;KrçSÓÔÖäÅtý%É8ÚŸ©­YÙl´Öfà*þµ<óH†-îÝÍKs<©mæ[Æû©5$òºÃ¾ ÝÆ{VÓ³°{o.MÙ•ÏÞ\Ÿ!ÖKo.Måï½cÝLD,I3³ ¸– ÉË;t¬Ø.dŠnIcÛ=«: ‰#˜òYYx®Æ[œaÅhys>%Ë ¥GZ¾é)²yÉÃT–à$A¶îB™ –U…IL‚>P;š–#ˆÇËGu¨f ‡vå±×ÐTæ1<’:ú{T’VþU«§êC–XÉ199ãki7°Ço±ä&O¼Äö­+ ¨’…‰q÷jE*Ê;O5§«(mŸÂÛsW£H7•›tˆºª4‹¹]¶‘õx‘®¸<å݇k~"³.?µG˜2²p*Ͻ…í&kRw¨ùâ'Ó¸ªÐIgpÖ îPwÇŸJ©u[Lmó¹GÌ™ô¨®$ *ùmF±ª÷2ß ÈÔ~ó÷m‘Ž=¨XZKg”s•_ö‡ZAhšOîò£Ö,˜Œ½vœ…­HV;­9®y{ƒZÑCÎ’×*Ä ô´’$ŸOi”ž‡zÎSó¯`æ²ï¯8ɬÔûëεxé 2©É+œzջݑǵOÌFyèjÍáTˆ×j¦r#œ#‚vçŸcþr#¹UnG9ö¨4‹€% ÃÈ®¡F¯uñŒ"󑌊é|£œúRÓéh¢Š8zR$œÞ‚@=P¿¾Ø6@A'ƒYZ¦¦c_.ÜsY÷÷ÛFØH'½AdâH7°ËŒ†ª–Rƒ{ ¸8j†Ö@ñn<µY²pÓ¹#æ¯i’+M)•jÊ@ÒHGQT4;ƒ.¥9q‚êsŸPúõKÃó´š•Á`¸$çÔþ½TÑ¥2\˸`°Éüêä1lÖ‘Ë)aWmáòµÉ‰Þ¥üjÜQìÔe=ØýkDÖ™«©(¢³µ«¤ŠßË,Ý«'^¼Há—cȬýVé#E\òO5OE·ûEÜ×$d+©ªš ±žæ[§PäýãUôh<Ér?ˆâ›â ÝÜ:t-ü_>;f—_—í—iж~l¾;f³)¼½‚Æ#2b®[9Žä#žÅ@'©,.1:£ƒÐàg«“âER¹;xªŠ’jrÅ-Ï”á:æªÅj7²Ç5Áˆƒò§Z­öâEš]˜<-[©fbÀuéZ+áûL|ÌÅ€ëÒ®cÛc9ǯhͯÙöü…E_û4_eû>ߨüjá… N>SÅg5í¤/ï#…î+6]6X˜1"zwMìš#˜þeôªLâGŒåUï3YÀ g1œª§ÞÍS I#+~öj»,bäH¼ÆFF=: &UY²9FP8¦Êª²–tŒ а½iZÞ˜U\7ûG¥[°½’W¶· ‹‚?¼ÃеgtÒÉ@¨¸Ç®8¥ÔY..ÄùÁäz 7T’;‹èž'Èô#4ÛÆIoQã9Ç_cNÖ„rªËm» Äúc¥K®¥Eš2<Ûw¶:RêÆ7ŒJœcWìedýÖ>÷Íš¹g3 òÇ~sW-%+ò‡šÑÓ¥~8¶42ŒÒ¹#s­iil¤3“‚OC‹|Çlrò§üþ5T±ñCn;c—çSõÿ&«.Û]}‘¸IõükfáH¸†`2AǽlÜ![¸%8Êv­I£Žx ãëSgŒÕŒñš”t¦Êâ(^Và"“LšE†œRi²¸Š&sÆÐk–Õ¥ibGÎ7“\ާ!•Lòçå•sš›´‹îçŠ×i“KÒ#UâFLÿÀ»ŸÎ¶å¹]/F…c‘cêEjÉ2Xi±ª 1^Vðí®÷–ö\–'å&«xj×sË}6Kò“Uô+l™.äåØñš”͹Aá¸$qÈ5U§Â†PŒcQ4ØÎ2 6ÙZpXÇ é†QßZšÛU“z†Ž9XÑR[ßÈ%„sî9­4º¤þõ­µ»_(¼¸CŒ i‹³sáqO†dw&qî*H'ŽtÝ%}Å>9U܄⤩)õCVµ2BÓE*O÷…PÕ-wÄÓF‘OûBª_A¹<ØðzûŠÄp|ß“¢>§¥`Êň#‚‹€}É5”ÿ60>êøš’Îá ÔYÁ*‰êOÿ^¤³¸Kkó&HU„…êÆm:ÁxÒp±£ß5|ŸaK´Hº/ÌOÐS—†FfÿXæšìZ)¶<ÏœÿJFÿTÙln95Fú1€Xn9î20?:£®°M*\ñœU5V §Éîr쒘ĻHSßÈ´R!sÖ¹—‰Ây›N*d˜‹`són#󧬄D¸ûǤY¯¯¦¸2ìQ÷~R+gG5ÐF6ü¤V¶› iv¯AòÔºÖŸöÛpñ­îš»®éÆòÜKG÷}ÅM«Ù˜–Hø–?ºit}D\§ÙågŒ`ƒÞ£jBê1™Yã`{Ôšm蹌£q"pA­+HÕÚÏñÒ&ç®Ð~›«7ÄLWG›•Qº¨k¬WK“’Ê?Z˶µ]KQU,DPD™×ÿ¯Y–Ö‘êZ®2|˜8÷ÅSŠÙoµW9>T*¸úÔš«y÷%GúµÂ ÷£UµÞ•qpˆ(¿"âçhû£ µµoÛZ¢‹“[ð"ÚY\Ÿ­kÄ¢ÞØ( 3\Ť®®áóz×o#·¹{vmÁIëV.`‰ÃFGë•=jÔÑDÑ’AÉÇô«2ÄŒ¤ *ãÒ¥€LЪý«~GqøÕˆ>Ðð*ý¨1•–¬Ãç4J¦PßÞ ÅnÄ@ÇNJœ×G¨‰BíéÉSžkb0»OâƒèjLJv¥!I=1C #g‘Ži9àw®}­Dr’­¹R}Ià~•˽±Ii *ÈO©cŠÄh ;m?*…cøÓ- Þ³o^øΙ!Ä»‡9â›!Ãäsš}ÊÉä q€$%~¢–äHbX9==(¹bXTãw_¥@b˜ÇʾN>ö7T ’yhr1ô¨™$Ú§ Ž”Û„2ÑŒƒœSg]ùcxlë¿,SEM¥mN ÷©´ÀÝÿ¼ K`7[ŸQšŠéö¾òH *µËÙâ ¸c¿9ûõuáòí¡‡$?ñ{žµ£,[-b…¶«ÏÈ#ˆqŠ™‘„i}âjqˆÒ8þù©v0ˆ"ýãÀ«± ‘Á~1Ž+R(üÙP? Z¼‹½Æx(;zÖ.´­§jÑ_F¸Y>÷¹kZS§ê±Þªádsßô¬L}‡TŽéFQ†râ5ž Ñw.}*[ÈË®øÆ€=êÍÊoÔq€iöWË*LNÜaMZ²Ô‘G3˜á¿¥Oox«!íÖ˜ìד!’›ŽÕíUšG¿|ÂJgp_åP7s(“”;júÂŽ¾[(ÛŒ`V’ÛG*˜Š€¸Æ*Ø‚9aP@+™Ô!û,ÒÆ>èl×+¨ÁöK‡‹°9Î_EöiJŠÙ{Ci]ûU3»ó­FÒ;ÜÚ±ýãZ"—ÌùÚ£‚k}]]C!âº`Á—rAî+qOcÔVV¥§ºL/¬‡ïW–QüU‹¨éÏÈ¿³:œ²Žõ—wföó‹ËaÏñ/¨«¶©{#‰‡_CZuò_ùFxe=]´ºK˜ƒ/pÃÞ³õ’n.íl‹mOõ’@gëgí7¶Ö$á0d“èQÕOu©8EGúiÞˆ&¸  좤ðä`ZÍr嬄ƒþÈéRhqâÕ¦=dbÙöªÚ|bïT$±hÑ™ÀöÏGJ‡íZ¡f$¢OÔ*µ„f{Ü“”^ZÕÕdY9 lùÖ¾³/•`ç8,@hê2yv¬s‚Ä äî7C°ñ÷¸5Æ>ä ûñ\£–‰ÐûñRÜݲ„`r¹äÔæå”+ŸZž[­›tïWb¼Žå”I€X Ÿ_jº—K3 ÞÜÕØîVf\ñ‘š{ƒó4Sì!ù9Æ)Ê32})âG˜å+Ï­ß\4Œ3’£=zÓῺrUî$8힢–+ÉŸ!¥lz`•öK™ñ…%‰8 K!.Gqœ|Ç8â”Ìÿ9Þ_ž¤ô¦C4¯Ä·.GÐd»Ç2Ÿ¼á}šd2»$ƒ<±Aÿ|Õµu¶Œ™“ŽzÔ¦E·ŒW Äž½j]ë ãûõ¨Ðùûî%lª6EAy»§•²°TQŸ44ÎsŽÕ‡$™°©øÓV,ŒËÓ< jÆHNÝYŽ.Ý“‚•Çj²…·d|üŒU dÇQÅW ö[w*úçÖ«"›xœâ\­Aò#`8ÈÇãP_&.-áïÆj;¸¶ÝÛÄ>ðÇøÔWQ¼‚!ü#ŸçZŠèfãæùqNkUYZPG8Åh†]àŽp:Tðª´Ûú`U«Eq» ÍO†›#¢ŒÒ’|à v,{Šs7ïZ@ìIì¹Ë³†95GXŒ\Y¿$ìù'Ò¨k(n-æ'gÍ’sTµhüëFç%yÉ5#\i¼¼÷}(Ò%k+®dƒ€?Ù£L”ÜéªIùâ8ü*Y´l6ðXãÚ£eVŒŒpOÔ ;ÔÖÑW°«6Q€ÇÑj{t>ÜUø‡jÕ„|Æ®Ä0kı€Èàs%`xª²¬ }ñXž#‹ ½NÓ#LJ&h†$}ÜÔšrቚ/¾û‰ü*[HÊxuÚ/¾À“ùÓ<5vÀµ¬Žsœ€y¦xfõ·5´’¹PhÐ/E0ÈÜZèz~5Ògò5µšË¸³–Ö÷í–k¸?úÈýk&{)¬ï¾Ùf¹WâHë=í¤µº3[òŽFå¬ûéÁºÔg?òÍ<¥Ï«p@k>öpnµ+œýÄòÿ´Ü!T/fùõ úa|¥üx«Kr,´ p8’EÀϯz¸÷BÇ@·TÿY$aTÔÕÙ.×Gˆ'ÞtÀ¤ÐŠÃ×0ˆPO°¤ðèÁ-̤*¾Ý¤úRhûc†Id!C ªúÝË_DÞ@"(æosUµÉÍüL`Ï•†-êIªºÄæîksòD7îkÿÙÿØÿÀððÿÚ ?ݶ¸YSý¡Ú¶¬îRx¸ÆGU­ÛyREÀõ¬ß¾Ø!¾ébÄ}?ýu—â‰JÃ9ᘱ÷ÅgëòQçƒÉ—ÉÊ0ò¯O¯5¼’G„g³#·y#Ú ‚àV´Â8#IOÎJ׆Ø,q¤„–QÈ­H ýÚ«œ:V{Ç·PvQ£9ô&³$eôŒ£§ÕŒ­ã°в»@òjuÚ¸{Õ…ÀÖ¤úTªÃviàüÙö©6†ÀïïV"9\çùÔ¨rþu~öÇ<ŽjÚDÈ¥Û#=ªôTdçš–¬T´QEQEQE1U\³`R;*.]¶ZF`£,ØÏj:ŸŸ#„'ËSµqÞ¹}_TûL®ˆq«Žõƒ¨ê|¬ˆ~@p1Þ¥´¶‰Ÿ{)ÙÙ¥?Nµžù÷ zSì­âPdºpW J5 .¿ÑôÈJ àÈFúUÏí.OÙ´Èv¢ñ¿ ³öÇ›÷1|£Œöä°·´}ôžl§œÅ/Ø­¬ñ>¡//P¤ð)~Éͽ“ÌqÈRxN÷SY—ÛþÅg_ê¾p1B6CœmU+½D01Åò§µUShÚ<)Âcèyª‹~Q“h;P ^j°ÔJºœ/¥WÕ¤“Ì`†À‰ªÁ÷.ÀeNUWÞ_{uSW­tÈ®£æv€v ­;-.µW’t^>é8­ ]6€¬òá'«Úf $y𨉴Í63ûÈÉy­Dk(ÿÖ&G½PÔ5ך"¶ªÉë#p ÏÔü@ÒDzÌ2)êç¯áTµ h´{mU?Æ¥RÒí|éÕÆãœàó¸Öu…¹iÍÈ&1–Áçqª66í#ýªà1zÑšwiXÄ‚å‹ã­[¸º‘åžJM^Z¹5Ãù²WËI «<Ñ[ƒÜeAœŠ§<‰òÉ;×½UšQ”Î]j¯›5ÀrA$tÉÎ*Ò˹¹È隃2O–Á?Z»i"i²ùòeødÇ¡ê?AZtÑé®go•ß·éW¬åŽÄ™¤ù²1zÓÒÄí¹§„FCÜ־Гážxaºæ´´Á6Öi#ÚBj¶¼䵌ÿIúUo…{‹T'’ ?JƒX óÀ¤ñ‚ ³§[î"wèU*Ì\8ãTö0õ¬8=*»Îcwy:qTÞá‘ÝÛ£6Gò¨ Å üGŠ…U…»ÊÄfV}j±B¶­+}é}±Pl+n]º±ô¨¡q#´¿òÍxÞ¡÷±“¢Eî%ÿƒ §‰YDp‚Ò݇½>"÷,P)gý½=å—dcs8íZö¶¦W28öàWAgb-™É €­{{o)FöÜßʬUÊžŠ(¢Š(¢Š(¢›,±À›¤`¾žôɧŽÞ=Ò0_LÓ%•b]Îqé\ö­w5õص¶ÜBŽƒøs:µìú…භݵ{õ…¨ÝM{sö{|àuÅY³Ñ -!O8ò Œõ«6~•mwÈÊ''## Töº3¤™—Í<óÚ†´·ÿ¤È÷RÈ ¾Ô×µµŽ]³;ݸêà)ô¥kXM³HÓ°ì8QM¹Ô$·>D(UW,gßZmÆ«5·î-ÄP!Fɤ›Ph?uHÕG ÖL“É#yG=sÚ²%¸–g/#³±¬©.%™Ë;—$Ôö–3Ýœ FK*ÅžŸ%ÑûÂ4îO=­Œ—HEêsW¿°ÂÇû·éW¿°Rbq&j·ýŽ»~BéM‡E)6ùxÈȤCxä- Î;RE¤l»sý*s¥ÅpT4Š3ØTˤÇ;®ePǰ<ÔßÙñÌÊ ŸzH°ÓÙ®'}Ê«¬j_ì‹ =žâá·ª¨;I§.ÎɤžfÜ£œYÜ%Õè’EÛ ýØÀíÿ׬)®âðÈˈÇÜ\v¬y'[›³# F¼*Šº—§¬Š‰*g­XK–!¼F:'­YŽrÁD€*‹ëPÝ7Ú6Äl9•ÔžfÜläcµEu'™·kr¼äUFa";ƒ–'“ߪ³oÜÙùºäÕVmû¤ÎO½:;â?wŽ`äSÒè¨)´a†)éu·)ŒäTm$ލ§$œ£ëLgy0¹'=Fò<»QyÍv§·lWŒ`c§Jìÿ•akLͪ[Æ sºã3ë0D=_Ʊµ6gÕ"ˆuÅlLD6ÁWƒŒ ÚºamhwiÎDVáqY7('U·<3¤úZÆž!6ØIÆã‚}1Y×%Ú™ÆO&«\–Hü”}Ì‹ŒZ§~ØÝ o¹Pc"«]ä¶í£³4ËöhTìS—~Õ^ß|ø†%ùGÞnÕ ¹i±cåy«N† Ý ÜÏ÷Ÿ¹®£J‚Þp`!™¾ó÷&·laŠ8s ¦­àÕܳÍ4`ÑŠOÖŽ½9¢–Š)(¢‘˜…;zÓeb±’½i¬Ä.Ee^XÜêobSîÞ±ol/5)7îƒY—–—7¯œ¥Yµ´·ÓTÉ,ƒÍn¬ßÈUË+m.3$²/˜Ý\ÿ*µik ŠwÏSU/5w˜˜,™ÛøþUNÿZy‰ƒOV,ÜÇòª·š™›0Z),ܪŒÏeÙÓ qÈãø~µžåìâ 4ÿÄGnüÕGf·‹Ë4½ýªº[;©’S„S’ßÞ5UawÌ’ŸrO÷W³$‡Ž¹þõKm›ØóØzššÕH%77\vÖ¥¶ƒ·'¯Ò¬ý­9cßÒ§7h¤óó1ëéSý¥êOZ_¶[ÆÀý©òzà瀧 Èâ`VæE>Æ”]Æœ‰Øj•55¸Y¤Œqýì=êÈÕâÙRGQ‘Î'ëSý¼KÊ9ÉëQ\jñ@£ìÃ{ö'…š¬v¸k|Jý袡—RŽß»ÐV%ÍÄ·34’»HÇÓ ¬{«‰îæiefvcÛ ¬{«™®¤.åØÃ¥XӴ˛¥TÅy~•oMÒno 6Ež_¥XÓô»›¢¥‡—vïZÏá¨F&l÷5®þ…”3nõ­7ðü Þ¾{œÓn4˜ìì¤a1n0¹ZÿFŠÆÂI¹àÍ2ïKŽÒÊFÞO¦k݃Ø©¬":óXXá¹¥ M±—‘\M¸â°}›Ìþ%|íÛõÍ?n-„Äe–B þ6øÔ‰cR¹ÀPΤ†^ ¬èôr0q]‘~×ÑHÀ2 tú¤÷,ñJÃ*2+¢ÒïÆôr2:U)sqâ¨ã'ˆpGà3ýj¬™¸ñj¡éþC?Ö«’gñÓÒ kFöS½›²ð¢¯j#7ð¯ *ÝÔŸ9cÐp+8Ì ;¨ç ¬™.wdÏ¢ÕŸ$•úU+‰HÌq.éd qëTÉýÜKºIAÞ©Êäþî1™$­x´‚ºWÙƒì•ÈwoJß‹EÛ¤}˜>Ù\‡võ>•®š^4Ñ6Ùæb*ªE¨X§Bj’C¨é£”ì@ªÉíÛ÷‡8©¡Ô¯ ù¡$‘ïSAª^€’£?Z–-Bà·Í ãõª·Úž KlŒÂ=«ßê·Å˜yMÏñU{ÝNï$$L¹5¦´>Ã7+l5=¶¹›(•¸™[c{Ôöú¸{X³Ä™Á«ÑêX™#•p¡­u<Ì‘L¸À5r;ÜʱÈ1»¡«ý?ZÐ9Æ?Z·üª9çŽÝAã=w¨n.¡¶\ÈØ'¢ŽôÉfŽ—` è=jŒ·WS;,d@£Û$ÿ…fϨ\Ìì°‘ Q’j”—sHÄGˆ×ß½Uh‰rü×n@"¨´o$…Lžk· •UÒGbñìiV\;C`¦èóºŸOz‘eX˜Åe‡Ÿ£ÍÙ=…82ÆLvÃt¿Äý…U¼’;dò£ýá'çnî©^H‘þê3æsó7w?áUn¤XþE;Îy?Þ4 ®‹.£p"Œ"^ '”î¡ï'òÐtAIå;€×2NÈ)“]3DÑÛ-$ 1îE2KŸÝ´6£b?»‘L–ç1˜­øV8'Ö«‹g‘€\ÝênîÃ9ëïP}݇'šÆD}ª¥œö¤kgC´Xö¤6®‡;ªO±Æ˜yÜFƒ¨¦KHÔ &pª:ŒÔËh‹‰%}ª:ÒÙÂ5;± .äã®*KWS¾HT…9>âiêWB4aN¾õÓÇio ~ZF¸u1X[EDŒp:⺴…j {TŠ¡Sj€Nª±®Ô(©”Pª1éUõ ű·óH‰Â­UÔï×O¶óHÞÄá­V¾»[;0ŒäáV¹ýKP{¨ÔHè€tE5ÌjZŒ×Ê¢FEUè‹Ò°u+ù/eE좨3ó(ÂôQTô#§aT$prW¡è(|’™à¶óI“åì'Œæ›¼ù[3ß4ÕÈ ;u¤SF@ÇãZúdmÌŒŸ9ŸJÖÒÔÃ3)^{šÙÓTÃ!\a¸©íÀoÉ:œ¨ˆœûàU«?ùÍ89<“î@ÅOh¸Õç˜,J·9ù:n$ãZ·p2˜îÇñ«rŒŒuÜjò&ž©¹”Œ†½ª†¥ÓÊ)V*Ã!…R¼ìe)mè§è¶†K“vñìEŒSÔÕÁŒæöXÊ(ŒçSi™•®H„¶ûÖñæµ4ƒÞ‚#4¸aºSLhF6Šg•÷7ËOJ­}¤±l¸uR£ƒœUum.!+;¨e85äVòÄVWÇ5ÉVdÉxPÝGZãÄ_¾AØÒm zk™Ž/ô€TŒàìy®¾[D’$ eä줲Yb‹r€ÊAÍtíj²$d€qÍIs:ÛBd~q€©©/.RÎßÌq’8Uõ5%Äëoväô³âÝ<Ÿhe íY ¾æSq(äð=…P]Ó9šA–ì=1·=ÚÆ˜å2ÏØ fÙ%¾òŒm˹è3 ÷&48Ë7 ¨UZð¼6ǰÃÌßyý@ö¦ßùZ“凾óûjgúÒñÂp‡†õ5Zîö+@m­9 Ã7÷T»»ŠÙMµ§8ûÇÔÕ[«¨í”ÃoóçÔÑm [[=ýÈV—U?ÚX 6ÖÍw>ÀàX¢6ð5ÌØ.:J­Ÿ:o:|[…íTÙ¼ÉL’ò ûµT·›'™)ù{ Íﻜtõ‘3¹ö§¬±Ó"–=DFJÄ„¾Þ§µH·¡ Ø„¶1ŸJzÞ¢ä"–§J…µ[™¢ríÆqÍAöÛ‰ªrÌp_íÓÊåcv8Æ+BËA’`õÈ£­kØøzI€’õʯdkN×Dy@{É?º+fÚÊÚÓ&‚’9=ënÖÆÚÓ>DAIà·zÕ·µ‚Û>TaIžæ’úím" üG…©~,a«¿ÝËÛ±k'ï•Lk+°“¶?ºqYÉâ°–…û¨5‘°–Œ6=+Q¾šþãs (8+Q¿ŸR¸Æqb±¯ï&Ô'tEŸfXIIT™Ãg±¨ `wƒ´çµBЈ‰VqÔŠV,qŒÀ¨Øæ¡î#°éB(É$£“H9¡GJ]á_xëKœÒô9­=)亿rpƒ,ÃÓµkh~eÞ¢™$¢Œ±öíZúI’æìÎÕ_˜Ö´‘[Ú1Úv³rs[Cod䵘e‰­GŽ+f#8$åVþÑ´ó‹¼€¤gýãUR¶Y„ŽxNƒÔÕu¾€I½›…è=éÒëS(WŒ¸ T“kV“€¯ >@ù5+Y°2Øö©ÓW²8 '•ÇFn-jÉ€ æ"FTé¨Ú%à U„¼µ“î\Fsí¬¿râ3øâ§K˜îʦ¦0ù[?CSÊßCRdAüj…ÝùÁf<É{‘Ñj…Þ C,À’CÁaÑúõRæðƒåÛÍПJ¥uaáïÜîs‘Íf\XÅߨ9.üõªÚD¼Þ9ÜÜõ©ý„0,+bP L5KâHE¾è“‘õõ©…õœQ¬b,ªž>µ¡ìOjnÑx¸Íi¥ü-fnLqŽ›»Õ庌ÛùäQÐËyÞîáŽØÿ€zV÷/{pï!º?º+.Išægg8Q÷jݼrK³åÛõ=Í_´‚YŠ3 HW’Çø…[‚7r±Ô÷ª×’-Ó¼1ªÿ­°¨/fŽwx`Û²ÿ­ïŸJ¯s"ÊíXHýãzûV~¡|k©)Lw>ÿJÌ¿¼Dÿ$xÁ÷ª×{†ßКƒM±{ÙB"°Å)éQéºt·³*¢½ä¨ô뺔aN;¹­ qã†Ýlao˜ÎOsZ ’+x#±€å”®K0¥¬Gæç¬mîüÝZ±2ÍÒ²w³ãªý¥‰–ÜI ÆîUËk3$AØcw«–Öy„3w¨¦µIåÂ0ƒ©=ê9 }û!GSQK›ŠÇò¯z»£Íef¥¥Bn?½ŒŠÑѮ쬢&H‰Ÿ?| ¿¥MiiΙ›×­'Õ’6Šô­_“^ãr¡Ï@95uõUFù¶œöj)5øÿªüsQ¿‰åÜõ¨ß]å˜?b^ßË};Hÿ"žÏAXz…ü—× +ð?…sÐV5õûÞÌ]¸^€TH7 '8=Å@W’EB9A’p}*ö•Vå¯fbLjv!þu¡¥y6Ûîå¤E>Zú7­_ÓR+`÷NIuSåŠÏ2Ë,#·ÌÄ–>ýÿg<$…˜òI5Ÿ#´’3ç&œ"GÌIêsFƒš@±ã¯=j6`Ä€0jkž8¦3xâ˜[i)=k±X­ô«f(ãǹ5Úùvú=£2¸ñõ5׈âÓ ;q¸Õ3 ÅøÌîË<Yæ)µÍ˲ÅÔª¦9/2¶Ô«–úeŒkòÂú·&´mtÛAåÂ÷-Ö­Ách‹òÆݪÀµ·P~dZÛž(? ˜[Â:"«DÖs\4B%8ŽõR,î.ž>^" ­¦™ã ©Æi]5®!aÐàü£­'¥ù²F#|m‚6÷¤ó¬Kº…]ÊØ#ë!ndhY#>Ty;›¹ö¬xæ#dF™äŽþÕ”/£Ú‡júŠƒí¯ l@Ï^æ ûsÆ»c8\öêj¹½h†Õ=ú÷¨.nn/g]Ì\Ž⣚{›ù—qip¥A4÷·rÄt«vVÂCÞt#õ«V–Ëo k³Î>T÷«v¶â-rrqÀ©D²ÝmY÷q“´zš{\Kvª²Eù@©L²\( qŒ*ÅŒæ}˜ýÒ}æõ>•gJµûUÇÌ1 |±=ÍOaŸ.æºNõ.¥~0ÆØ_ºqSêÚžI‚…qRjÝc‰°:qY7b…^n§ý\C¿¹¬‰‡—iIËgËŒw÷5›?î¡Ý!å¾âþôišlš“—rD üÍýïj›HÒŸQs,§ާûÔí3NkÖËÄCõö­Rö=&Õ!·@¸U‡­lê×Ñ鉺# (Â=kSS½K·D…FöQí\ÔK%ÝβÎrçÒ¹Tßsq–mÌç$×9’îà—9,rÆ´†ÆÁá}jð²ØNîÖ´VÐ!98fH˜[¸$q®G¾jÔÑm·;˜*¢ü£Ö§•6@rB„Qz«j>Ó"Æòì„O­T³Qs2Ç$…c?­WµÿH”+¹Zžê[x1º™Àçó«W_g„ùpä ãµOpÐÄ6B¥˜v¬Æ‚YX»°nƲ˜±#ðíY¯;–b? ',K­4 x“LT@Nìµ šY³ÂñŠrÆ­–ÎqÚœ°«lçÚ¬¬B;6 Œ‡©H l Ô„·€ªòÎXº T-)+· ¨ZbW`ªÌp¥T|Äâ¢'µ@Ç w )9ÉÁ==èd~¾µzÊÝæ`#\ êçúUí:ÍîØ]±¬¥[³·iÈÚ¸AÔÔ××)g‚Û(ä¤Õ­Fñ-#6Ö¸x8ëššòåm£ò ÇËÛÞ²ì¢Ï#ÉÌçßÒ²laܲO*–HN\úŸJγŒ0iä’2I¦ZZË«ß;¹ÛŸ½½)Ú}”š½ãK&D ò}½)¶V²j·m,œBùÓ~æÆÑ°Eô®¤˜lmIÀH¢^•Ñ1ŠÒp8Çç\UåÌ—·O3–$è+‡½º’úí¦rIc€=q×—^ݳòK(ö­[ h ·i¶ªŒ»éZv±¤-#ªƒæjÓ´¶Ž “€£’}jn„Ò†Ú>è=ª ®|銎‚¢’ãÌ—Œí6Y¦ºlD~ÔÉ%–~ í¦I$³õ_jŸMÒ§º !$_NO5wJÒ%»Ä†Mˆjµ§i¯>$2QéF§s2}ŽÔ /2?v4Ý^æ³´ þ¶NîišÄPŸ²Ûþ±û“éTZOÞ¤‘Þ³KäÕ!cŠ’Þz_¥K[Û55¼[ÍO楴%eŸ­>B–?¥:FHQɪ“Ü3®W’RãZiË€Väœ(9ꦢ¨:‘S²©“æ9\Ô„|ÜÔ¥A~}ið —q'•'?>$Ï¥Kaùî XdXP;®I81P‰¼ŒçŠœªÄ»ˆÎMBdÚÜ©+×}§8ëQïÚÝ+±®òºÚ^{QÍŽpŒ\àb’V ;W$Ó\¨F-Á¬˜Ùw79éï\ê2'ÌyÏO~k)Wž¤ô« dó€d` ôÇZ¼šcNJûAè­Y[#/26íYÍ¿‘r¨€ËÁ5®Z‹k¡—hÚ{ÖN¯oå\ì\Gz¯k¥]\àì(ŸÞnCk¤ÝÜa¼½‘ÿyŽ*}.â\1]‹êj÷š¶iök%S'G“­^i…’}šÍA~'z½½mSɶP_øš›˜Ï821íQÁdĉ¥S#Ýi"´$ù²ì{V…µŸœ7J»ô\VžšfRó®Å=jõ½Ÿ˜7H»W \T—wIi‘ýç`?†¥¾¼ŽÊ/³[c~1ü4û«„·Ê‡ïtúVÒìÛüóJß™5:3H°§ï&‘‡>¦±çR]cCºF?•O©Fl4Ø,cæYÎdÿhú~usTˆÙXÛéÐÿ¬œæCýãVuÍ­œýùŽÖÎj,ìã€}ìe©ï[¶‹gg Ô}ÍkZ[­­²ÄƒŸzÄñ %ZÆÙN\ŽçÒ¹ïê>|¢ÖýÒ}â?ˆÖ¿æ·Ùá?"ýìw5COŽ8ã{¹ÎxQYÖj‰O)ã ª1¤q´òñéJòI4aœˆ–!ßÞ–G’DPÀ„=w©]ä•FàBgåAÞ¬ÚÛù~dŸ—ÐT‘Ä eÆ÷‘è*Xâó>órAíV¤d[TÒ¸}*f™6„ 1»·Z—ÍBÜjë׆Ý`…¶¨RY‡×Ö™-ì‘Û,16Ì)ÜÕ÷¸Š6ÚBœšËŒää“É&³Á$’rsÔšÍ\’Kd±êMXRŠ09=iêÀ ™XÊ—ÎÃòîëJ&+œ@¸ÛÒªË.ìàæ¢f,zæ¡’Bùç5ÇrËwÀ¤[§4Á·LÔ¥—\î÷§•d HëSl1í,:ÔÖëæÉ EÁÆzT°¯˜Ì}*hÌfÀ«aVT>78$PqŸj²‰µ$˜r¸ùˆÛê}j'.ø8Àô¨X»àãJD¨ c’J~ÕPI9>• UPIë]·È£ä‰Üý+¨›TDŽsïÅo=è_¹7Ö©=ÝÜ™¼®zb³eÔnŽg1sÀ©Éw;™öóÀ[‹©Æy€êIÀÅŠòòA´¼ K hŽââ@Fæ­Ò®ÅÇuÔÉ¿²ç¥hC ­‘ßs:ôÏ­Æ–öÜÍ"–ô¥HÚŒÂǺW=EMý«nîòÈz*Šx¾‰›l@ÈÞ¡¼ºµµQ=⯛ü+Æ¡¼»µ´{¨Çžz/R*+«»{oÞN ËÙI¬óqy©å·}žØôŒŠÎ’æïQù‹ '3TÌ·W§q>TG§E_´³UÚª¿ ä±ïW¬¬Wåù'#­]¶´UÇI=ëD £j€­páUp¥^`ª×÷>DXNeº==ꎧ{öxvFÀÌý1Ô ­yså&Å9þ‚²ö¤Jd‘¾n¤Ö+â0]ØîêI¬×Â)f?1ç4ý"ÓΘßÎ0«‘>žµwC±Á7÷obŸáµcKµ7“Œƒû¢‹5þÔÕžõÆa€íŒZ]=N§ª½ûÜÅòÄ­%Š›ûç¾qû¸ò‘UýRé ¶!ï…ökZ¼6Ö»clI/Øw«:¥É†¨pïÓé\¬ñ¬`–%˜äóë\ŒŠ$’O¯½sª§'æn:³¦Z%ØóîX­´_u¾jö™o ªn/'ÜŒ]Ó`ŽDóîŽ9HýjÔ.“^<»‚¸ŽÕ,N¯q$ì¿»ŸÄÔñ²´²LF#N• Ì·O4ŸE©K7;JÝOJ§,ÞtÆWàžÒ¡‘ÂJFyÎ? ‰úÔeˆl-C8%‚Èy's{ d˜Ï¿Z†B ÷<ÓRÔÓ'Š`äŸJ¹8 ûQžh<’¡¢vþ”» §‰ÒˆcL 9#µ(E^^´åS¯^µ±ac–Kæ8S)Üvõ­‹+(^Ñ<×ûç'µ­m"6˽±žr*¶£6ضü›ˆVj­úëdàÕ{Ô Ë8 piSe²lŽ2Xõ4Š% ©ÉïBíˆUçÖ¢;¥`@zã­0îs~´Ã¹Î=éWåáºö¤Ž*9_ßµG#âºTµl|òì9®µ4þ’B=…t‹k‘ó¶}…8Ámm$Š^IjÛYÛDÒÈ‹µyËsNxàFAÜÖ5Ö¥qs!ŠÜ¬QtÏLŠÁ½Õç¹Ån|˜ºqÆkëQšâCn#ŒzSmáßòÇ™fÏ.y«ÁKòÆ ŽO.yÅ2ŒŸ*Ìz±«O$Z=“9o6åø¹­1$z5‹6CÜÉÀÇZ¶Ò¦™kÆij©¦iÒj5Õéã<-WҴƾ•îo Ær¨ôí=®™®.³’r®…bEUP£ Ó#¥tK(U>N"¶U@FJ}>QÏ †"ì~‚¡»œ[@Ïž{}j;‰|¨·t'XÞfe2?Þ'’kœiKM½º“šÈ/ûÂíÜóIMª\„^-b?;|úTö¶ÇT¸¥´Gæ?ß4ø!7ó†#¡ëëV5»ƒºØÚÿ®— ü+W5Ë‚‘&Ÿhq4˜µ.­32%¹I88þ«¤zNšˆä¶Þ¸þ"ju0èÚb#Ûxÿx՜ǦÙ"uÚ8¦±ïnÚbd“ïö‡¥s×·ou)’O¾OÐV-ÕËÎûÛïíYòÇ%ÍÚÛô`p}½j¡ŒË:EÝycT¼¿´\¤g¢rõ¡#*ªZDé2«þÏ©«- ÿR€eÆýšº\ܯñÊ«ÝÈP}š2Dj£pÍCw7ü²S„QȽW»œŸÝ©Â£Ö«Œ¹ÏaU³“U²IÏjz¶’AnÔ¡°}éUñõ¦±\´’±íFFrzÒ¹Ü՛ʊ7Æ“yÚ@Ïz@å†cÜÔ‰ F¶rýý H±„#¯z™bTÇ{ûÓd™‹\g£bšÎwm^ cHC`sO|Ç ©$÷ô§Â¾cco>µ, ¿‚:÷­•œA…²¨ÛøÖ·Ú|¨DJ…§çìO-pTuª²Èf‘¤<÷S‘̲37QÐUgvv,y#¥0©,ÇøŽ $ûœ6’}ø4©òç9'"™ò¨Á9Ïjoʸ¢b È(¦3íQ’ Ï@)ÖvíwqÇ( ÍO¥ÙµäÀã(56jn$Ü~åtñÌ’ ÙÆ:ƒ]\W1H¥ÚGPk I‘—'ƒï\þ­©}¶_³ÄØ…ÌGñW9­êŸl—ìñ6!CóüU…ª_ýªo%#CÎ)4í=ï¦ ˆÇ ïQéÚd·¥¥ÚB½{Ün‚ µwP¸‹L·Û<×àéëW¯¦‡Lƒd82°ÀÇjµ{ÿZD­á2Èù3ùRÇ[@^@7É’~•Z Ç-æpÁ„qçÓÕx؈¤˜}âp¿J­âÝçþ&l/Ò 'ÌÁäã’j/½ßÞ É“œÔ¨È##“ÐÓ•[xQÖ¤UùŸJ«pá†:pj90®EW˜ìr)¹yXá¤P\ç°¡U¥!J°©Ê*ŒôÉ=ø©‚üËÇ©«*œ¨ÖœØM¹T¶ÒGµ)ùvú´þ1Û´ž„⨸ŒŽŒi¤…Ͻ!ÂŒ¼:TðC˜Fá‡854QåƒÖ¬EÈ=jbƒŒàw&¥8ÇARö€ç·LbÜþ‘C‘œT„6¯/ŽXv©ÀÚ>cŽH©1Éîj ö‰¨$<â¡óŠ«<…°‹Î㊋i5ç5]·K"F;×O¥Z-½ªñóšìtËEµµEæÆk¨²·KxÎ9§^‰i&3¸‚ÜÔWðG Œ„dÈË…Ö™y%³íÎâ0>µ™§h¸Ì×§ Ô/OγtÍg¾ùW¨Sýj†Ž¨ ·dœí©ïu˜m—È´c¨ÀÇAV/õ˜ Qof706ö©/uT„­—stT~“-ÜÂòüç<ªTZfŽóÈ·wÙ'ª¥3OÒÚYVêðî=U}+xtÀ¿ì8±[Ãv¥Áô£Š©s »”Áw$ ¥uªAm!Œ#ž: ­=üp³&72qX’]=ĆYIlghô®z[¹.¦2Í–ê‚±ÚæIß|™'øG¥^±°k¬Kt¤D>ì}½jiÚa›Þ/Ëü1ÕûK.%¸î­O'úF²ãä‚-ÇêOOÒ§}«[Xñò[ÆsÿÖÅJÙ›SÙü0 ãÜóü±YÞ!½7%Œ8oœúšÏñù¸•l 9Ã|çÔÖv»wö©’Æ‘‘¼ûÒ^\Gmi„-½PaÈþ#× íÚEinÛ‘‡sÖ‹»•H"²€ä(ùˆõ¨c‡iW”`uç°ªñA´¡—ŒòIô¨R ›N;’})aa{/Úf\[EÄiýìR¼¢æA;Œ[ÇÄkêiž{ùò DœF¾µÝËLîäœc @*­Äí333x\ôª÷´¬Ä·P;´T# Œýj7b# Ú ‘ˆŒ%GŒÇ’3ƒMŒüw¢½ Å,ó':bœÍüG¨éOfÇ'¨éPk‰79Ço­FÈÙ'­@#i_sp+BDJãŒsVbM€ƒÀÏZ¹aŠˆ”øl¶:Srª„çœSIPƒÏÄÒÇÁ9Îà>´ÁeÇ'Ú˜°³®98çqm›^\/=jÂÛïÃH@éëVE¸bý:T¬BŒBŽ•#`gTž0*5C+àýÑÖ˜¨]¹äS ·=*c´?CRð¼zv©x)…òè)…ø8âš[ƒU&“ðÏJ­# ÕRF5sB²û\ís'ú´áElxsOóK]É÷ +KA³óIº»ÑEt ]'Oé[¿ÈT7w0ÙÃæLÃŽ€Ô·pÙÂd—tµ ÝÄVÑ”Ž:Þ°.î®õ#ˆÎØó÷G¥sW·÷Z‹ ²>ʾ•‡uuqzØ µ=¥K¤éþlªøÌh~f?Äj}Mó¥Y˜~é$÷5>•c™¤p:“]è;WKÀ€Ç~¶øÀ ¥s©G),éì+2÷WŽ"c„îaÕ» ¥q¨*|‘Äu>•JIšå±æ¸ÈïÀ¬É®$¹nesÆy⩼­6ríTç-\/,xäš­! 2 ,ÇŒuÍWPdž+KOÒªKp>ld'øÖΙ¤,j’ÜrøÈ_JÒ²ÓÖ5Y%0+SŽücÓµkÉ8 ;zUòUAÏ ~•‚—‹W7;ñ%Ô„©î¨:~•έøŠ ›€ÀKs! ÿuGJÆûXŽ)¤ÈÎäÿº+&Ñ\ÊÇåõ_zdz5Ã.ÙÁ?β¬÷Ë;4`–cÇøÖ¥µŠÀ|ɾfê}«Fa,À3wÍhÁn°eääž¹¨$fÕ¯~Ï s#Ê)Š­ª^yJvÛÇÌŽ;-D7jwF0vÁúƨo®UåB1 |*ûU;û…–}°ü°§ÊƒÚª_ܬ’ìˆb4ùT …N>fçÚ«çZ­»ÍEs9<tàSÉëL–^}}ªÛœ`ÇÒ€rx!Üãhç½\K2|¶‘²zV•/Éê*Ú[œ¡s“Ô ’8¹ÛZti“´ôõ§Ç;qR8!$ŒûÓÎ1ò¯$þtóÛ´-¸väcæßš-ÇžÇ4,@œ‘ß5,qª!aÀ'½HŠš‘">”íÿ)ÉÈt§në“‘NÝïŸÂ™÷˜LÆãMÆãŠ˜ü‹ÁÁÅN@@q×)qQòÍ€:w¨¹sÓñ¨ÇÌx¨&*ã°ýj _tUy¥ =Gm§Üje\%ZÓ4™¯ˆ•ÆØê[=6kßÞ¿Ê™àz×Qcl¶–«þ5Õ[¶ð¬H8«¢‚%‚:µ=IRW=´ÚŒßi½%PýÄö®emå¾›í„àò‰íXi—rù÷9ÁåSÚ´r#Œãô«‰h&u__¥ZK`ìp«"KkH¶)zzÖ€šÖʰ£°M[óa¶Œ(è:Tä»’ð4q©Ž#Á?Äk:}BKåhâ8ûƪKt÷9DS¾{ÔOGŒsè UšD^0qÐTDª×\ ZTŠ!ó1ëéPC³NÅ÷›¿¥CI,ËðOj׳ÓâµÃ}ù:î=« ²Óa³žAüGµkÛYÇn3Î;Õ¼f®c5b±õ½V8¢{hi\m$vÿëÖ6»«G/kÝ4ƒi#µek:’G[CóK Ç«íåŽÈM 8<"žæ°ž VÙdpyáW×5•$2-²³g-ŠÝÒtõ°±i9ÆæcØWA¦éë§éo#cÎtË1ì=+jÆÍl,¶7‘–&²nnQ¸v¤ªr]«I^þaoBó¸ÖL²½ôßg„íA˵1îÖÖÒKKP>só¿­6KÑohÖ–àaÎÞ´ÉnÖÞÕ­mÀÁ?1õªK2{ÕsYù9ɤ‘—£N8 ‘øÐÌ1ŒsPˆØ¿ñëHªI¦¢1~jì1ˆ˜\¶9©ãM­Àæ­ÄOÊ9«‘îùC}jÊ»‘øÕµ¸¥,zÒîÆ >ïZUSÇŠP¤Œž)@'“NSŒãµ9N)ÊqšlŽp0~´ŽÇÖ‘˜Žô›2ÙcÆi6’Ùn™¤ÁÉ9ïS(Ù±‡.AÇÒ¥P#ØGÞ š”(]¸ûØÍFíÜþ•’NMFÙÎM1› ךcƒƒLrS,­£s·?¸Có_j~™`×÷˜~å>ôiöföpíÄJ:éበ‰cŒ`/ׯ‹k`Q]**ÇEO§RÑEDÈîp#Ç9íXá䕎ß5ž˜œ/Óڇŭ¿<É/J–_ô;\õ’o~”ù?ÑáøÞ þÈG=*›Wt„sÒ bHË{RB¾^3Ï ¦Û¡çÚ’)€yç¥8E-Ô¥‘v¨à–éR YîåÝíQüMÒœ –y Q´ ¹ofá›,Þ½«JÓOŽÛ Ii~Õr D‡ò¬ÿ*·Ö§=9¬}gV)¶¶;æa‚Wµckz·’ µ±-3ñ•íYz¶£å4¯éUôÆ.nø'§¯Ö«i:‡7Ÿ.yÁëPizAR'¹êyæ§ /õUP1olx¦¥ÿVUUŽ·Aêjh”]êCÁÐzšÄwäc>c}ò?•7ÄÚXÂAfÿXGè*=~õ€[8OïïÚ³‚ÎÜÁ bGæYòŒeÐ"ûÍþ±¿¥fµ¿‘ å¹vª£æ cŽÞõTœš¨rÇÖ‡n0¿xRRb‘”»ñÍ)¥*=}jh¢/†+×ëR*nÁtԱǒf«ABç Æ0ó«v’1š´«·#§nÈàt§g#?…;µ’e’êáåÚjp›»ŠÅšâK»©%ÛûµùS=1ëY¯3ÜNï”p•-¤O<¤äìêK w¹”±ÎÁÞ¤µ‰¦“'îŠÒH£Nþ&¶"‚(Æ8îM_XÑFçÔÓ”SÔP£N/† )g8u –8QÎM)8'Ö°¯uIïç6zpã8i+ ÷Ušúsg§ öi;VEÞ£-ÔÆÖÈtgzÃH‚Ì#Ì›ûDZ«Ú~‘ž’sÕcV¬´Èm~vIº–=©ú¥Ï• HÿÖ5Íá†|ÈݩڕÃEEûç¥Qk¤Ò,6ä=ËóÛ5E.GÓ‰bêNp:ŒÕCq™c“†ùÀëXÌÎó9̤“ô®tÊÒHÓ9˱¬+<Ï4‡21ãØR1%²yö÷¦’s“M$œ’jT_-2Çæ<â—G=éávŽi²È¶(sõ4Çãõ¦±í†imb2&ãÀ9ið¦ñŸ^Õ%¼{—=°x«±§»jÂ.qÛivÅAü<€hgëŽ@¥vàãš|l‰HFEI†ÜŒr)ñ.ìîãøÁ-ŽÀòiQyãÖœƒ'Ö”íç'Ú”íòsÚ—ßò¦ù›sÍ!|æ“v3Í5sÄri£ŽqɦŽ9îjEÁ#wÝô*€ß{îúTŠ7zRHʽùô4ÙW¿ài®UF*°3\È Œ稨cYn¥D9>• .dF;ö®‹O²K(¶¨Ë·ÞjêtËì¡ ¼ýæ­û Tµ‹|Ç«Uª¹Vh¢Š)híEU Rࢠx¾ôŸ{Ùk;Wº1 ·ïI÷½–ªjìQ ý÷ëì*H7Ê"èŠ2}ꥹšaD^[Þ«ÛCæ0øW­j"$kˆÔ(ô³I ìBJÑDXÆ`RÓéÔŽÈ‘—sµGSHì¨#¶ÔQ“HÄ*–s…9®~yn5«‘ E£¶ý뜞{rèC 1Û)ÁÇzÅšiõ[%£·Žõµgg ”A!Aœr{šÜ±±‚Æ0‘/ÍŽX÷­KKH­# óÜ÷4û«ˆ¬á2ÌÀ:zÓî®c´„Ë3ÀãÞ¤¸™-â2HÀë\Óê=Á˜!gc„Zåd¾{«³6 f8E®uïMÅÉr~P;Õ;²ÞiBÞd­÷Úª^³™Š³nýãéUo]Œ›IÝ)ûÇû´Í¡'ŽíPp½¸ïïP` éõ÷§'ÞÎß›·û"€y÷þT)çß·µ2¯Èvy-Gã©¥Ï;zšX`¹àSãŒIãÒ¤Š I'Š»{@ {U˜ÓéV£@JŽêp>D=*9åå™<Àªy¦ÀÛ‚ª.æî,_6Í…sWãc1eÜ̼J¹y(Å—s2ñWˆ•²2ÄqQd¬eN3×éQýÕ+À=qQýÔ#¡¦3c8Á4Í݆ ¦Ç&”gø¸8 tæ—×4æýÚåÎz÷§” ÇØÒŸ”Çv¨"»óXª0zn¤WÎ@!©¦¬»²Ú=MGó\N"·Ë3æ£HÞêãɃ.ÌpÆ¢ ×(²Ä÷ÑiÚtvI“óJG-ý+§ÓtȬ' 13Jß±±KDÉæB95p}*î=8«X¥ç½/j>´”iiih¢Š+%›|óÜÆv§ÐqüëG3\MpGíO ¬¶c$ÒÍêv¯Ó·ëZ6°ùQ~ñäš×²€AïXÕûx„Q›©©jz–›#¤Q³»mEêi²ºE’FÚ«ÔšFeD.ÇjŽõÏêw³jCmÛ­ù×9©_Í©K¬#dR·âG­bßÝË{,v± ¨çó­Ë;Hí ˜Öý•¤vpÐs˜Öµ¥ªZÂ95ORÖa²R¨CËíTuMn+5)MíÚªßêÚ.Õ!ä¬Û[+­^_´]¹Xz€k6ÚÎïW—íŽVréYñ[]j²y·LRÈ^™¨¯n!ØÛ¨~HóüêµíÄPÎÍ€¨6Çþ5Üñ[ÈL*ѵ>¾µB$Û Hü–ëYÀaY›ï’Mg(³9Éc“M³dð;SIÏÒ˜I-žÝªP1ÂöïNŽ*EÇ\QM"«00)Ñ¡lqN… …lqЏ¨« €z¶¨÷¤Û _|Ž´Jç ©Ö’g;Yc늫«1̹Ç#p–'~yªÐÀÌÄÉšÐB°ª¤jç½\V`úš¼¤D  ǹ¦3’ÇÚš\œ–8¦—-œœSAÉç§^i¹Í&sJ ¨8÷£‚) /š0G½sKæ Á4íÀëU¦rÃÔ.å»Ô9lj¼jÒÈ!…rÎh‚ n]cŒd±¨âŽIÝcOÌz×Qac—–FñËJêl¬ít‹c,ŒÇÌþþ•ÑYÚA¦B]ØŽXÕØfŽtßnõnÞæ¸üÈ:ƒÛ­[Šh§Mñ0e§Ô´ê)OJZÖP(¥¢Š(¬­:?1”g8;Ö°ô˜üÙ§qúÖmŠna“ÓšÕÇjÜ'Œ Ò kºÇHÜ*ŒÓ%‘bÝÉ ½qHv?*ÖK;êRÿ"!àvúÖ“I©LCü±©á{ëY+^Ès•Œ•A¯ãM@¼—|¨Ï5A¯5 ð)>XÚ¤ óT~Ø‹xÏ–)ò®:Y¯%ΞGE<*z5Åì‘ù“K"+t_Zt×N›äfEnŠ{Ó43íwiFPôhÚa»ŸÎ€ç&›¦iææ6`H½mëÓNm˜Rß*Öæµp¶Zq …-ò¨­mVqidv€3À®^þÕtˆNN]½»×'nŸh¸ŽQyc\Ü ö™ÆîUycMº—Ìr‹÷AÈ÷*9ß|ŒÝÏˇªôÍ0|ÌS'Åù˜~Tä¥} t© ž:t©R6vãîžµ bM£œU¤Â.*â‹H *ÎÝ{P8»Òò·~”èã 2ýOZr Q“Ôб€9êiÔ Ûð§lÒ1çqÇáMs“Í#u4ÓÉ=i8^sMÀ“MÈã'è)=9ëFjÛ0“iáE5ç¥E! zUxåhßä=†›Œÿ«Éö¨·0? -íZ¶7àìM‹‘’Ü ¹g¤]Ý®í=[Š·m§ÜÝ®vykž¦·¬4ˆ,Ýd9’E·´ý&"¯¸É*ŒØVÕ–›¦ÖûÎSV¯ ûE» <ýà=ÅK©Z}¶Í¢èÙÜ=ȧêÿiµtÏ#+ÂáþÒ<«È¸~5‹áï6;ùPd œ‚8È5•¢RêHÁÛÀÎEo:n\‘Ó5ц_»¹wzf·r=FiiÔ´QEQEU&=°³Ÿâ5¡Å²ÙœŽXÕM6=°îþõ^éíZ< çVúrN=ë"öøK)Aþ¡ñãX:†¡ö‰Ä)Ƽk*îóÌf^‘¯êj‹‰äFU;U¾ö?гØÍ"²©ÚŒ~oz¦ÞlŠÈ§jŸÖ´¬ìáÓl¼Ù@Èäç¹íZÖ–Pi¶^|àd œ÷=ªýµ¬66¾dƒóîk6æIõ ×”Õ•4“j®OaTœÉ{0ìza[övâÚÖ8GU7Öº{;qklŽ ŽO½mÛÄ c`rkœñážûÈä€sþõs%½3ߘTüñÿï\ïˆ.¼ëÏ%yX¿E.Û-5"÷× 3Ÿî¯aQ\e§G–l;Ÿlp)—llÿ['Ìæ¨6@Îk4žk7'9Ï5*BvíÇï2 #ô©cŒœ>oZ±'  ÖˆU†£–'&­ác‹“Þ®íÆz€‘‡¥DvúTj ·Ò¬¨È<ü£§Ö§QÆî¦QüGµäòyÆ(<·'éJNzŸ¥46Õ$ç'½7qQ“Þ™’=è*O× ‚Oáš=}ª·SÓÖ£É<Ÿ\T`œúÔr\Æœç$SU\‘Ö˜ó¢sȪ3;LKàâ¡o1†ý­·×Vgvù‚¾ Sa N¥¸ŒÕ6á#™L§w©4ùÕ'ÎNMtÚ ÒƒnÃI;ÈëÍuEñºFO-‚ áÏF®—L½P)ô5·Æ89­½GÖŽÙ­õ¬ËÛøayO9GÞÇCÞ³®u h·‹}¦SÜ ~µF{È"f…/üD ­„š9³÷ÆÝ5H*E$s¾OÔ(¯žõ£¤èÒËz Ü_º$³¥i2Íuþ—òÀÉú×PšuªÁäÆÏzéM¬'Ê]ƒµtfÖ$D#_,vÅgOá¨MÈûW9#Ú³&ðݳ̨'%k>_Û¼¡†qœ‘Z––‘ZEå à¤V´1,¬H>Uâµ!‰`‰cŒ` f¡{Œ!ä²q¶›sq´aä=x›<énß¹À¬™oîY…ûÅIü«ŸÕ5ŠÆÿ&~îköøÌvÆÇôÍAhÔ³tÛ"ƹ¦hñ oˆ° gÝ20×dÎÀ.8¸>É9QÖ(p öÇ5ÑyVÒÚ¨ÛAëŠÚÛ°*+Њ°£Ž¹=*\qÅH)@÷  QŒRÒÒÑE^úèZÁ¿»p=VÔn…¥»0#qáG§½AyqöxKà{V¸’îMÊ>@>c\ÌK†-Û©5‰ùÛU#šÑÜÑ á{U̺€ ýÞ«™`SÏAVÈ6ºy ÷Of5¨ÀÙid/úÆ{1«­þe÷OÆ³à€‚±ó1ûßZ˶·,ë1¸ýï¯Z¡GrÇŽIÉ5´ª1ÑTWBÇ¢ äÖ¿ËuÀQ\¦«rÚ¦ ±Â2Šv¦?Zäu{¶Ôõ‘ŒªüªsZÃê7«C(8P*íó.“§‹húDÃæ>Õnù“HÓ…¤gý"a™ÛÒ­_:ivÚ3ûéGÌk’BƒÉäÖ,øëžµ€£|sžµvv~â ³ÆsÓ¥^…v‚OLÔ’dùzš’B̼w©3:Ó—(EûØÉ¥P¨¡G^ôà6®ÑøÓu $ñNAê9&•ó©”A÷GµJQ¸Ô¸ 7w¨ÝÜœgЉ‹íQ³1ëÒ‘å€\•=)^p:t4Ö— Ò©²É:Ã;Tà‘Imm6¡:Ž ¨V9ogXâR¦Etº~•¢) —’}k­´°·³DXã”cw­tvz|Š»©«ŒÉîl"úÕ“ÓÒ­ž…TÕ/E¥™xÙL­÷{ÕmBäÚÛ—@ ÿª××ÞÈWlžÕ‘a¨ßÌÅCgvy=¬{-KPž]ŠAÉÎOjÍ´¾½Š‚¾Ì{V¤Ú´²V¸pÓg½ëf[¥‚Ü<ì wÅiËt–ð†™Ã69ÛYî_Pfó†Nß—=+âõn^BùbËž•™5ȸ/¸ó”úT¶Ö°ÇiGîžÅªºDM7!~ï»T$j ŽÝ÷5À—×ñÆÃI?\Tšgú^®ŠGîðI£µ!o5R?v8­è Š,yq…ÇÔª"à*…ÒºTP€©)ih¤éE¥-v¢Šçµ¹Äé xœ(þµÌjó½åâÃwíXZ‹µÕÒÂIÁúUø [8’¨Ÿ~µsÉj°ªýÑŒûÕµˆ[¨E riÑÅçJ˜à“O¶‹Ï¸NÁyúÓá_2U=—š’ý†ä\žê—W—Fƒ?*îãÞ~ø`”f—N_1 ÁïÂæŸ¥D hnü ÓìS÷fVïYzæ°Mµ«g<3åYºö²®¦ÚÙ² ³5X0û=¹ÎxcQiÑŦ[›ëó‘û¥=ê 9#ÓmÍõÂþðŒD§ùÓlÖ=6ØÝL?xGÈz˸î%yå9f==+&æâK™ÞiN]>².nâV•ÎXž=©`ˆáN~fçè(Š?»ëÖŸ@m=Ï&¦wF™R<œõÏJ•™YÂ)àõ©Ã+H:µiÓË P*i¦p*wqíMÁÛ‚>cH£åÆ94˜ùqKO&œ‹€}iȾ´çqÏ ¡ŽztŒj'ªcŒp*'r“øTNøROÐUW˜˜ÊÆ2Ìpµjó0Ž1¹ØáEC—”yq ÎçWM£X­œ{×÷­Ë]–f¶V©62ÇÞº>Õm-‘1óã“F§©¥œd)̇§µ3PÔ¢´R3™?•2öú;d ·ò®jâúâñðÒ³†þÅ`Ë©\\¸Ä¤AÆ+[ù®_jÊ[=‡Jf0,%wàðÞžÕ%Ä·[yECz1§Ü´ÒCågåcRÅkypEö<Õ$ûTD“h‰uÛ¿zUÈ4õ;Kîl7$ÓÐ1³3zäÔ±§MÄ·®M_C » TŒc´èÌyv ÷§+Fw3Ÿ»ÐUG–k€©×…w¨ËrÉ‚I8QP/›têŠ3έ+ kºItŒ1ôÒé:Zéê]Û|Ì6“è=+{N°[$$Ò7_j»€£W(¢Š(¢Š(¢Š+ÃÖæyžþ`x$&}{šÀðÕ¡‘žþQÔü™¬} ܰk¹‡$¹«ÎK ðM>W;°c‚ÄÔÒÅ›<RéêÌZS÷z-[Òb$4­Ðœ(©ìP\÷ª×ndšl ¶Þ}*û´·Sí8!¶Õ[¦/4„ŸºØü*½ÝûÉ·³G|òvúR_j öÆ !¶\3Ôw—¯$&+n"Q†zÇˎpÒʇ8=Í`[4qÜ $‚à÷5‰jÉ æY>m¼êin'–æ_2f'Ðvµ-ÍÄ·2o•‰' ì6æâK‰ ÊÙþèô–ñùÒ#(i¦öÉû£š-£.ÅÏAW\„˜™†°«G¤ã–«­ò©ã“ü©¶±í!7jHP†-ŽÜR[¦ r9íSÞì çÖžNæ ­I’ÄŠxR0 sü©àriàr¡Ï–¿/Þõ¡ÈAÇZGÂŒ-DpŠ7väÔLB¨ æ£fÚ9ªSJÒ1þíVvgoj¨ìÎüt­mKi+ɶåµÐèaCÔ½@ʯַ4m8ÆRâL†àV–±zövߺ]ÎÜ}+OT»kH2‹¹ß¥]ÔnZÚ/Ý®æ5ÌÉçÞJ·é\´í5Ô¸|’{W=/›u&×V–tàKó))ÿ%’œÿ¬©ŽÍN>ùëRÅ7žB¢ð¼Ð.^\"ž9g2Œ‚®D¤Ï$R‚A÷¥çÞ‘å :†ýÞ Çµ7#xÞvÓ |ãwÈ {·" Å{³ –ÎÂ[ùHqêÆ¤µ±’öC€Dc¹­[[í›p%ßö®†ÇK‚Èï_žLpǵmZXCj2¿3tÝVªíY¤¢Š(¢ƒIÞŠ)h¢Š*¾Å²±Æ0õ&«:­ŽŸ²5áhæ¡uÖ›p TŽf• \‚ܶ}+%Ü\,#<°öª*<Ù–!‘ÜÖŒŽ–¶å‰Â ï[RɱbB¬kǹ­ dKkrÌvª aÙA.¦ìùhí†rÝßÿ­Xu¤š“¼ÎJÁÏ?߬‹w½&Wbþu&´ñYY­œ(nN;Óõ÷ŽÒÕ, Ëc­;Z’;ku¶ˆ:šÀˆ|Ä×:½MsÉÔšY† å›ï t­+Œ£©«P'—žÊ:Õˆ“oÐ ¹ lÔÙ_Ï“j‡ØR;y€qÚ‘›Ím ãp|‘c8ã5gî Õhü©Š P‹¹»çˆ†Õ$õ4F6®hFòiPÙ4¨~l‘Mlïç¨SNwdõÇÂyç®8¨XnÈ'ð¨XàÔ,7qÞ¦ÓôÖ¼—ž"C–>¾Õ££iŸi™d)yúš»¥éþl«+ݯ?S]8 xáUF+¦fH£$áQku™cLŸ•EsÚ®¯™ÂÄ‚ñÍsº®¶ZB‘¨ w5…©jÇÍÛG­2ÎO4™B‚ò”úUKY ®[³=ª;i ¤¶f{T2[=ÅÃàgŒÔDÒÌKT K1,zUû{v‰@TÛžrG&§HŒ80=ÇZ°‘˜†6㊳¼F¯åÆXíïN2mÞUs‘¥ &½±Uìsu¨.T´jIéRhðËõܹ‰Í.“ \^ouÌj1[J«í@ÕÔGq&Ø€U®…UcQp)iÔQEQEQEQEQET¾—hÇËɬíVm¥cî‚Zª_Jíì¼ÓtÄ tüû§ÑE&òžéøßÐÿ³FŸ´Î>÷ò¬ëéŸX¾[8 C—aÞ©^ÊúÍòÙ@qÌŒ*•ÔªÞ‹hîc9vý«n£‚ó­ÈcKhV5DZÖDH" £åAÍrš½Á¹¼fõàW«\›Çž À®WUœÏpÍžøªh6òjª bˆË,Ë)]ÇvÒ¦C'4øA­Ö®\È#E …8$ý}*Ĭ8Î*ÜÒléÆu”D¯› ùØÔ–ÑœoaɧÛFvîaÉ©äþ\cš•¾n1ÐóS7ÍŽ•Ëî8^pO©¨§|œqõ¨¦mÝ8^ŸZl.YŒ$d0ÀÏlQ–-gžÔDå‹!èELÙ$±ôÎ}…=¹%'÷ç,}8¦Y@n¤t&‹ss2 èMpäPzé"Ž;X0£ >æºØãKK|`£œw®‰U-âéÀ‰«êr±HíÆÜäu5ƒ¬êrÈÂ8~QíÔÖ6«}+‘p™Ÿq+|ØLœ’ƱÒÖi[,Bç©5––rÊß6z“Zè–˲¹°FîËëVÐ¥²‘Üä`žËWWmºíˆ‚Ä`°íW Q `wë“Ö¥‰Ä+ò€î{š’7¯Ê1ëšs¾Öf$ŸJc»3ƒ!$ûu¦³’ãyÉ=…#ÚËv„á @FÔþ÷¹«‘iwi¼¡Ž<«Üаš|·*]Ô¢çëWí-Ŭ"1É=knÂÑlàØ¿{½jZÛ­´A¥«-QEQEQE”P)ŠZ+Ÿº’IäØœ»œjå®$–ê}‰Ë¹À¬9™æ—`ä±Å.§vê#Ó,¹`±½ÅYÔ¯$ÄzUÌØ Ì;zÓµ§;4ûL– aÚµ4Û°µXÇ.ܳæµt˰µT|òÌ}kJÂÑ,íÄjâ2ǹ5¯z-âòW™sì*¶·~ ˆÛ¡ýëŽG ¨uK±~Ròî9®]Ô—ü ×'"œîjæevãMl³;ŒþοAQ’OjšÓï™qòþ5<æÜGfØ`î#JŠn§mÇ(­J¹šCž@4å|‡=⯮Až˜þµqFÕõ8Å]*Ž:Rä*–ïüé Ú ÷¤<Ýë5Ù™ÝíTݘ¨çIÙŠƒž‚¬[)vÞx8ÇÖ¥KÝ=jh±ÏOZ–R¾[†áH§Í€Œ§ëO˜€Œ­èSòy`)sô­?MG<²uVÂçÒ¯h²Ä±I#õ ÅKs¨<ó€þç¡8ëK«<Ò´pCК[½A¤¤G ÜÖ\Ò¤#l|¹?•dÍ.ÒBçqîk6id/,i- šV2ÌÍéL‰$l³±Å2$‘ŽçcZqÄ Ÿ*¯SV„_/*¨äÕ‘ËÇ :ÔñÆ„”Ï9#­,Q|)ÛŸ^ôèâ,ÿ/ôã‹yšYHÇ¥[…EŒ¦y€•›ˆÔö«1 ´:L3TrÞÌ%Fb«µºJSŸíˆò>ЭÈíŠF¾”Ü«1è=+P0u:ÅtJÁÐ89 3[!ƒ(aÎE´QEQEQEQEQÞŠZ(®SÍt?»;¦~W’oIÌ­ÀúW6²É»Þ+kIÓVÊ?2Aºw䞸®‡HÓVÊ/1À3·$žÕ¯¦Ø-¬~cŒÈÜ’jÕÝÔvp4²ž{ÜÕ«Û¸ì 2È@8ùWÔÕ‹«„¶ˆÉ#œ Á³‰¯î%º›>Z.Iþ•ÎÙÂ÷Ï5äÙ*«žJŶîÞK™¾ê¯ZÏ»<»à˺pdÀÖmã‚Áp 1¾áÁåºjŒ—ž½þ• ÙõëSmýÀŽOȦ¦ |°rß-Y LaW«qV­âX•Tt^I÷«F«nµb>‚¤Ý½Á§ƒ¹†zÓó¹é³7OÎ’Fäcµ$Èö¨Ú Ò¼Œ¡xíÒ˜ÈBäL1åÙˆ¥Q³Ž‡5"áFúTŠ ©ª7·R±CÐõ>õRæQ#ì§sTî¥ód|Žõ4½ëÃÖÀ¡¹~{-kßÞ%œcXðªk_Q¿K<Æ™¾êÖíÒÚŽ†[°¬ ·½äe‡Ê{ö¹åKbñYó´ôô±‚ϩܫ>vzUí^hôûk7Z½­MŸb-!Ææäý*Ö«,vV‚Þä}G­khÖkræY?ÕÇÔ{Öž—l³#‘*ÌŽf ¦H›s+M>Õ¦p$òd ¼.qU'¾e™!‚?1ØüÄô¡5"…7¹<ç¥Eæ~ñcw1ëSyH’8ÜÎÏǰâ´n-ZßO‹éÒ®ÍnbµXŒî'éSGlÏÆSÔÓ Ó¥¹9<'ri"³yˆb0¾µt ªtb·hxUúÖ¢(DÚ£âŠuQEQEQEQEQEQFh¯ÿÙÿØÿÀððÿÚ ?£5õÄøóìݹG¥d\ßÏp1#’¡‹(ôªsêΣ{|ªÄ­-„bk†žRv , þ#QÀ›™¤~Êeºîv‘û)’Kæe@Âç­5˜â˜îíMvÜ™cŠiäsM<®MVbwqÒ£>ÕN}©¡KÖŒf€¤ƒŠ°’Ȫ¡¹ÛÀ©ƒ¶îÝ*ÒÈáW=©Ø;²:µù¾´óqÔÔ‡ >_óëO ÇZ“tëN(%¸¥PÉ¥áFM6’þá#‹¿SRZÛ=õÂÆƒ½-¼/{:ªðÍtz\vàŽ­Üšê-4¨m>næº ]>8ñ“Z*¡WhíW•B¨QÚ®(p(¥¢Š(¦´jÎŒ°éMhÕœ9aÒšQK#šu:KE”QEQEQEQKE”QKEQE%RÑEQ\e½œ’Î"—åUl¸Îx® (7JþU“ÏZã`·- YÚ9ÅK<ê¦E…ÆÐ3I#Œ8^Ô’È2Bð:TŒî8àTkɨךŠ|g‡ÀÇQHÞÆ’AÇsŽþæ›QŽMOÝ*D©ã\©¤f# 8ÇZ ç†'p¦ˆ¹­H™"¥@H§»ª1äŠyà·Ò¤$ Õv&æað;Ò@Ÿhœ 㹨ã_´ÜÇu­ý&Ýc‘U06ŽMtZMº¤£gu­í>Ž6 `rkkÚ¶kJ’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¢Šâ„ÄAå®A-“ï^}¼„ÇNz׿€ôÐ ¿Öš94Á–9§HÅcÚ8ÉäÓº.)Äí\~5',ry¦ç­7“‘K{ˆÏ'­*/<ýiѦqšA`àgž>™©‘HǦhhq'Mí)L7¨44xlõ"Œ`uÏjrŒ)ê0«ÎÇÌlõéCà/=i$85oI´i!kx'¡§X¼¶¢áz1Å]ÓlËÛyãøŽ+¤±·D8äú×Gan-àø\Öå¬>T@w5f¬ÔÔQEQERÑE%RÑEQEQE”QERÑEQEQEQEQEW«Ÿ”Myà× °ëRF)ÃÓú:Ô˜6:ÕyCV,[=i®ç­6U*O ¸`1íJˆ[¥:4/†©J|À `J~9õ(_›ØÔª½rzô§¨ëšz¯Ô¿uëJF8ð)¨9ÜzÓ@Í4õ^ç }wSæàw5¹sÕºWQ¤Ù kF囿aŽõÙé–ŸeÓቾðo©®¦ÂØ[ÙÇRM_Çè*ç°«=:QEQEQKE”QKE”QEQEQE-QEQEQERQEQKEQEq)*£LÔJóå W„ŠB¬daœN I4ð„– Gƒ‰:ö´Áù¨)ÎÔÙÄ{T{ÓÏÝÀ&Ü(§¨*=ȧÆž:÷©Âã#"•x«ÂÓJ¶rÝ) äô¦sÏJk°Ï^”Ö MvqÞ¥Ñm¾Û¨‡Çîa ŸOÖ´4 3uç0ýÔ'?jµ¢[››Ó1ºˆþµÕüÙê0:Šë=øºCëÚŠ(¢Š(¢Š(¢–Š)(¢Š(¥¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢Š(¢Š)(¢–Š(¢ŠàÑ a´ÇJóÕž9®&4%®,N½8ã&¦ WòÍX P`Ÿz‹i”Ç­7ߊ`äö©þèéíR”sSp¢¢–Cž1ÛŽsP f={Ó$õ¨Óq<ž3O¸º# ˜ñK$¤ä¦–iÏEcIk§ÝÝs+“ÔÕ‹=.êï•ÜÔ–šeÕÐî žs]nŸf–« z±õ5רÚ%ª@ƒ ù©®¢ÒÙ--Ötsõ«5b¦¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š(¢Š(¢Š(¢Š)(£µ-RQE-W 6 Ç@k…PJå0¨8ô¨Ý¼ÆríéMs½¸˜ç{ t5"¨ŒmâœÑO ¨Ë‚Ç'§¥0°'Í1ŸŸZc0kÿ¤bç˜îR)ÖðOxʱec'­Mkg5ÖÝŠBžõ-µ¤×%HR¶¬tÐù“r} oXh1GóJ2kbÓGŽ/™ù>õ±$J8­˜Ñ#P¨ 1ZH‹TS©iÔ”QEQEQEQKEQE%QEQEQKEQEQERQE-QE”QKEQEqéŽà¹Ú€qŠá6³6OW'±™²Ü(«µ0«Í/ òŽhšÀ`—8š{–éHÄgæçÚ³:«åÄ;úšP¥—…Øž¾´mg^bþµkHÒ–âBÒgböõ­ IûC™&Sµz ¹¥ék+$É¢šé"‚(T"(ö®ž#…B¢jߎ4@U'Z’ERQEQEQE´QIE´QIE´QERQE-QE”QERÑEQEQEQEQEW Ï¿œàW Í¸àœ åòpNFó 2Œ޴Ÿ3 F¤šifÆŠFÉ8Ú?:F,N0)OÝ6Šn˜eRóJIÇjSœu¦îÚri€í94Á•9§g#"ŸœŒô§ç#=)7gÞ›»>ô™üipsKƒíKƒÞŒ{RâŠ(¢Š(¥¢Š(¢Š:RÒQIERÑE%RÑE%QÚŠ(¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢’Š)hâŠ3E¤éF1Ó­ÝèÇãGÜÑÒŒRb“ÐG¤qJy”v P(QE´QERQE-´”RRÑE'çE´QERQEQKE”QKE”QKEQEQIEQEQERÑE!âƒÅŠ(=(=(Ò AÏÒŒâ—4½(ïIüTqºŠSA¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š)h¢Š(¤¢ŠS‚9¥8#Þ”ò9¤Ú½óI´w¤Ú;Òž8£ÛQíŽ)(¢ŒQŠ:ÑEQEQKEQEQERQEQEQEQEQEQEQEQERÑEQIEQE(¢–Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¤¢ŠZ(¢Š(¢Š(¥¤¢’Š(¥¢ŠJ(¢Š(¢Š1Í¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¥¢Š(¢Š(¤¢Š(¢–Š(¢Š(¢Š(¢Š+ÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¤¢ŠZ(¢Š(¢Š(¥¢ŠJ(¢Š)h¢“µQEQEQEQEQE”QKEQERÑKIE%”QKE-´QIIE--QE%%QEQERÑE%-RQKE”QE-RQEQEQEQERÑE%QE%RÒÑEQIE´QIEQE--RRRQKEQE%RÑKE”QERÑE%QEQEQEQEQEQKE”QEQEQE-RQE-%”´´QIE%RÑERÑE%QEQEQE%RÑEQEQKE”QEQEQEQERÑE%QEQE-””RÒÒÑIIEQERÒÑIERQERÑE%QE%RÑEQEQEQE´QIKE-%”QKE”RQKKE%QEQEQEQEQERÑE%-´”RRÑE%´QIKIE´RQEQEQEQKE”QEQE´QIE´QIEQE-RQE-RQEQERÑE%RÑEQEQEQE%QEQEQEQEQEQEQEQEQKE”QEQERÑE%QEQEQE´QIEQE-RRÑKIE´RRQEQEQEQEQKE”RÑE%QE´QIEQEQEQEQEQKE”QERÒÑIE´”RQE-RRÑE%RÑKIIIE-QE-RQEQEQEQEQEQE-RQE-RQEQKE”RQE-QEQEQEQEQEQEQERÒÑIEQE-%”QE”QKERÑEQIE´QIE´QIE´QIEQE´QIIE´´QIEQEQKERÑE%%%´QE-QE”QEQEQEQEQERÑE%QEQEQEQEQKE”QERÑE%-´”QEQE%QEQE´QIE-QEQEQIE%RÑEQEQEQE´QIEQE´RÒQIKE”QEQEQKE”QERÑE´RRQEQKE”QEQE--RQIEQEQEQE´QIEQEQKE”QEQEQEQE-%”´QEQEQE´QIE´´RQE”RÒÑIIEQKE”QÒŠ(¢Š(¢Š)h¢’Š(¢–Š)(¢ŠZ(¢Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š)h¢Š(¢Š)(¢ŠZ(¤¢Š(¢Š(¢Š)h¢Š(¤¢Š(¥¢Š(¢’Š(¢Š(¢––ŠJ(¥¤¢’Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¥¢–’ŠJ(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¥¤¢’Š)h¤¤¢–Š(¢Š(¥¢–Š)(¢Š(¢’Š)h¢’Š(¢ŠZ(¢ŠZJ)(¢Š(¥¢ŠJ(¢Š(¢’Š)h¢ŠZ(¤¢Š(¢ŠZ(¤¢Š(¥¢’’ŠZ(¢Š(¢Š(¢Š)h¥¤¢ŠZ(¤¢Š(¤¢’Š)h¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢Š(¢Š(¥¢Š(¢’Š)h¢’Š)ih¤¢ŠZJ)(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢–Š)(¢Š(¢ŠZZ)(¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š))h¢Š(¤¢Š(¢Š)h¢Š(¢Š)(¢–ŠJJZZZJ)(¢–Š)(¢–Š)(¢–Š(¥¢ŠJ)(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¥¥¢’’Š)h¥¤¢Š(¢Š)(¢––ŠJJ)h¢’Š(¢Š(¢Š(¢Š(¥¢ŠJ)h¢’–Š)(¥¢ŠJ(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š)Š)h¢Š(¢Š(¢ŠAÖŠ)h¢’Š)h¢Š(¢Š)(¢Š(¥¢Š)h¢’Š(¢ŽÔQEQEQERÑKIE%QEQE-QKE%%QGj(RÑE%QE´QIE%QÞŠ)h¢ŠZZ))(¥¢ŠJZ(¤¢–Š)(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢––ŠJJ)h¢’Šcʈȇ’ôÇ™c‘Œ–¦4ª²,xäÓþ•!é‘OëE%RÑE%QEQE-RQE-RQE--””RÑE%QEQERQE-QERÑE%QERÑERÒQIE´´RRSJ©Û‘½) © ‘–) ©`ÄdŠu:–ŠJ)(¢–ŠZ)i(¢Š))h¢’Š(¢–Š))h¥¢Š)(¤¢Š(¢–Š(¢ŠJ(¢Š(¢Š(¤¢ŠZZ(¤¢Š(¢Š(¢Š)h¢’Š(¢“œñGz1Í--RQEQEQE´´RRQKE”QEQEQE-QE”QKEQE%QEQEQEQE´QIE%´´RQE-RQEQERÑÞŠJ(¥¢ŠJJ(¥¢Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¥¢ŠJ(¢Š(¥¢–’ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¥¤¢Š(¢–ŠJJ)h¢’Š)h¢’Š(¢Š(¢Š(¢Š)h¢Š(¤¥¢ŠJ(¢Š(¢Š(¥¢ŠJZ(¤¢Š(¢Š(¥¢ŠJ)h¢’Š(¢Š(¢Š(¥¥¢’’Š)h¢’ŠZZ))(¢–Š)(¢Š)ih¤¢Š)(¢Š(¢ŠZ(¤¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¥¤¢’Š(¢Š(¢ŠZ(¤¢–Š)(¢Š(¢Š(¢Š(¤¢ŠZ(¢–Š)(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢¿ÿÙÿØÿÀððÿÚ ?èë£®ŽŠ)(¢Š)(¢–Š))h¥¤¥ZUïNZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)•”QEQE´´QIER­*÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¢––ŠJJ)h¤\ànw|RQKE«NZr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¥¥¢’’ŠZ(¤¢Š(¢Š)Vœ´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2™E%%´QEQERÑIE*Ó–•{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™L¦QIIE--QE%%´´QIJ´«N^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S*:)(¢––Š)(¢Š))h¢’•iËN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S*:(¥¢ŠJ(¢Š)h¢Š(¤¥ZU§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)”Ê(¤¢Š(¤¥¢ŠJ(¥¢–’•iW½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtRÑEQIKE”RÑE´«J´«N§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑKERÑEQERQE«J´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑEQKE-QIE´QIJ´«NZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)•”´”RRÒÑIIE--RQJ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S*:)(¢––Š)(¢Š(¢ŠJ)Vœ´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢Š(¢Š(¥¢ŠJ(¢Š)iV•iW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GEQEQE´QIEQJ´å§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)•RÑE%QEQIEQJ´å§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¢––Š)(¤¢ŠZ(¤¢•iËÞœ´êu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S)”QERQERQE-RQJ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S*:)(¢––Š)(¢Š)(¢–ŠU¥^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑEQE%RÑKE”QKJ´åïJ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨é”RÑE”QKE”RQE-«J´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢Š(¤¢Š(¢–Š))h¢’•iËNZu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)•”QKE”QKE”´RÒR­*÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)•”´QIEQE-´”QKJ´«J½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨é”QIE--””QKE-%”R­9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•2ŠZ(¢’Š)h¢’ŠJ(¥¥¥ZUïJ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:J(¥¥¢Š(¢Š(¢ŠAÖ’ŠrÓ–œ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:)ih¢’Š)h¢’ŠJZ(¤¥Zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¢––ŠJ(¥¤¢’Š(¢•iËN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯ÿÙÿØÿÀððÿÚ ?è«¢®Š–Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š(¢Š(¢–Š(¢Š(¢’Š)h¢Š(¤¢Š(¢–Š)RÑEQEQEQEQEQEQEQERQE-QEQE%RÑE%RÑEQIEQE-RQE-QE”QKEQE%RÑEQIEQE-QEQEQEQEQE%RÑEQIEQE-RQE-QE”QERÑEQERQE-RQE-RQE-QEQEQEQEQE%QE´QEQEQE%QEQEQEQEQE-RQEQEQE´QEQE”QKE”QKEQE%RÑEQIE´QIE´QIEQEQKEQEQERQE-RQE-RQEQKEQE%QE´QIE´QIEQEQKEQEQERQE-RQE-QE”QEQE´QIE´QERQE-RQE-QEQE%QE´QERQE-QEQEQEQE”QKE”QERÑEQERQE-RQE-RQE-RQEQEQEQE-QEQEQIEQE-QEQEQERQE-RQEQKEQEQEQEQE%QE´QIE´QERQEQERÑE%QE´QIEQE-RQEQEQEQE-RQEQKE”QKEQE%QE´QEQEQE%RÑE%RÑE%QE´QERQEQEQE´QERQEQERÑEQIEQE-RQEQKEQE%RÑE%QE´QIE´QERQE-RQEQEQEQE-RQE-QEQEQIEQEQKEQEQIE´QEQEQE%QEQE-RQEQKEQE%QEQEQKE”QKEQE%QEQE-RQE-RQE-QEQEQIE´QIE´QEQE”QKEQE%QEQEQKE”QEQE´QEQEQE%RÑEQIE´QIEQE-QEQE%RÑE%RÑE%RÑE%RÑE%QE´QERQE-QE”QKEQE%RÑEQERQE-QE”QERÑE%QE´QERQE-QEQEQERQE-RQE-QEQE%RÑE%RÑE%QE´QIEQߥéh¢’Š)h¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š)h¢Š(¤¢Š(¢Š(¥¢ŠJ(¥¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¢Š)h¢’Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢’Š(¢Š(¢–Š(¢Š(¢Š(¤¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢ŠZ(¢Š)(¢Š(¢Š(¢ŠZ(¢Š(¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢’Š(¢ŠZ(¢Š)(¢–Š)(¢–Š(¢Š(¢Š(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š)h¢’Š)h¢Š(¤¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¢Š)(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š)h¢Š(¤¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¥¢Š(¢’Š(¢ŠZ(¢Š(¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š)(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š(¢ŠJ(¢Š)h¢’Š(¢ŠZ(¢Š(¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢Š(¢Š)(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¢Š)(¢–Š(¢ŠJ(¢Š(¢ŠZ(¤¢ŠZ(¢Š(¢ŠJ(¢Š)h¢’Š(¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š)h¢’Š)h¢Š(¤¢ŠZ(¤¢Š(¢–Š(¢ŠJ(¥¢Š(¢Š(¢Š)(¢Š(¢Š)h¢Š(¢Š(¢Š(¢’Š(¢Š(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ(¢Š)(¢–Š)(¢–Š)(¢Š(¢Š)h¢’Š)h¢Š(¤¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š(¢ŠZ(¢Š)(¢–Š(¢ŠJ(¢Š)h¢Š(¢Š)(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š)h¢’Š)h¢’Š(¢Š(¢Š(¥¢Š(¢’Š(¢ŠZ(¤¢Š(¢–Š)(¢–Š(¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¥¢Š(¢Š(¤¢Š(¢Š(¥¢ŠJ(¥¢Š(¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢’Š)h¢’Š(¢Š(¢–Š)(¢Š(¢Š)h¢Š(¢Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¤¢Š;ÑÞŠ(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š(¢ŠÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢IE´QIE´QERQE-RQE-RQE-QEQE%QEQE-QEQEQIEQE-RQE-QEQEQEQEQE%RÑE%RÑEQERQE-QEQEQIEQEQKE”QKE”QKE”QKEQEQEQE”QKEQEQEQE”QKEQEQEQEQEQIE´QEQE”QERÑE%QEQE-RQE-RQE-QEQEQEQEQEQIEQE-QE”QERÑEQEQEQEQIE´QIE´QEQE”QERÑE%RÑE%RÑEQEQEQEQEQEQEQEQEQEQERQE-QE”QERÑE%RÑE%RÑE%RÑE%QøQEQKE”QKEQEQEQE”QKE”QERÑEQEQEQE%QEQE-QE”QERÑE%RÑE%QE´QEQEQEQEQEQE%R3`àæ‘œ)Á‘Ž4g8ÅÝ‚?ç¥:––Š(¢Š(¢Š(¢’Š)h¢Š(¢Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¥¢Š(¢Š(¢Š)(¢–Š)(¢–Š)(¢Š(£ÐRm_J0=(Æ:RãŠ:RÑE%RÑEQEQEQEQERQE-QE”QERÑE%QEQEQKEQEQEQE”QEQE´QÞŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¢Š)(¢–Š(¢ŠJ(¢Š)h¢Š(¤¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢’Š(¢Š(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢Š(¢–Š)(¢Š(¥¢ŠJ(¥¢Š(¢Š(¤¢Š^ôQEQE”QKE”QERÑEQEQE”QKEQE%RÑE%QE´QIEQEQKE”QKEQE%RÑEQEQEQE%QE´QIE´QIEQE-QEQEQIE´QEQE”QKEQEQIEQE-QEQEQEQE”QKEQEQERQE-QEQEQIE´QERQE-QEQEQEQE”QKE”QERÑEQEQE”QKEQEQERQEQKE”QEQE´QIE´QEQEQEQEQEQE%RÑEQEQE”QEQEQE-QEQE%RÑEQERQEQF9£9¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š)(¢Š(¢Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¤¢Š(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢–Š)(¢–Š)(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¢Š(¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¤¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¤¢ŠZ(¢Š)(¢–Š(¢Š(¢Š(¢Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š(¢Š(¢Š(¥¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š(¢ŠZ(¢Š)(¢–Š) ÌqÎ)’H‘(i8Žê€<Š1× ÓÁA¥ê3œúRÑEQEQEQEQIEQE-QEQEQERQEQKE”QKE”QKEQEQIE´QIEQE-QE¸ýߦê­x hÎÒÿ5CqÌðvî©?•ZõöéSqÓµ”RQE-QE”QKE”QKEQE%RÑE%RÑEQIE´QEQEQEQEQE”QERÑEQIEQEQKEQEQEQEQE%RÑEQIEQEQKEQEQEQEQEQIEQE-QEQEQERQE-RQE-QEQEQIEQE-RQEQEQE´QEQE”QEQEQE-QE”QEQE´QERQE-QE”QEQEQEQKE”QKEQEQIE´QIE´QEQE’Š(¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¤¢ŠZ(¤¢Š(¢Š(¥¢Š(¢’Š)h¢Š(¤¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢’Š)h¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¤¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¥¢Š(¢Š(¢Š)(¢–Š)(¢Š(¢Š)h¢Š(¤¢ŠZ(¤¢Š(¢Š(¥¢Š(¢’Š)h¢’Š)h¢’Š(¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¥¢Š(¢’Š)h¢Š(¤¢Š(¢Š(¥¢ŠJ(¢Š)h¢Š(¤¢ŠÿÙÿØÿÀððÿÚ ?è«¢®Š–Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢ÑEQKE”QKEQEQEQE”QKE”QEQE´QERQE-RQEQKEQEQIEQE-QEQEQIE´QIE´QERQE-QE”QEQE´QEQE”QEQEQE-RQEQKEQEQIE´QEQEQEQEQE”QKEQE%RÑEQIE´QEQEQEQIEQE-QE”QERÑEQEQEQEQERQEQERÑE%QE´QERQEQKEQEQEQEQE%RÑE%QE´QEQEQEQERQEQERÑE%QE´QEQEQE%QEQEQKE”QKEQE%QEfŽôRÑE%QE´QEQE”QKE”QKEQEQIEQE-QE”QERÑEQIEQE-QEQEQEQEQEèïEQIE´QERQEQEQE´QERQE-QEQEQIE´QERQEQEQE´QEQE”QEQEQEQERÑE%QE´QIE´QIE´QEQE”QEQEQE-RQE-QEQEQIEQE-RQE-QE”QEQEQE-RQE-QEQE%RÑEQIE´QIEQEQKEQEQIEQEQERÑEQERQE-QEQE%RÑE%QE´QERQE-QE”QERÑEQIEQE-RQE-QE”QKE”QERÑE%RÑEQIE´QERQE-QE”QERÑE%QEQEQKEQE%RÑEQIE´QIE´QERQEQEQEQE-RQE-QEQEQEQE”QKE”QEQEQE>”´QEQEQE% Z(¢Š)(¢Š(¥¢ƒEQEQE%RÑEQIEQE-QEQEQEQEQEQEQE”QEQE´QIE´QIEQE-QEQE%RÑEQEQEQEQIE´QEQEQE%RÑE%QEQE-QEQE%RÑE%RÑEQIE´QERQE-QEQE%RÑEQERQEQKE”QKEQEQEQE”QKEQEQIE´QIE´QERQEQKEQEQIE´QIEQE-RQE-QE”QKE”QKEQE%QEQE-RQEQERÑE%RÑEŠ(¢ŠJ(¢Š)h¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢’Š)h¢’Š)h¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢’Š(¢Š(¢Š(¥¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š)(¢–Š(¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¢Š(¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢Š(¢’Š)h¢’Š(¢Š(¢Š(¥¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¢Š)(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¤¢Š(¢–Š)(¢–Š)(¢–Š)(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¢Š)h¢’Š(¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¥¢Š(¢Š(¤¢Š(¢Š(¥¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š)(¢Š(¢Š(¢Š(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢’Š)h¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢–Š)(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š)h¢’Š)h¢’Š(¢­QKE”QERÑE%RÑE%QEQEQEQE´QERQEQEQEQE-RQEQKEQEQERQEQKE”QERÑEQIE´QERQEQERÑEQEQEQEQIEQEQKEQE%QEQEQEQEQEQEQE´QIEQEQKEQE%QEQEQEQEQEQEQEQE-RQE-RQEQKEQE%RÑE%QEQEsEQEQEQE-QEQEQERQEQKEQEQIE´QIEQEQEQEQEQERÑE%QEQEQKE”QERÑE%QE´QERQEQEQEQEQKEQEQIEQE-QE”QKEÿÙÿØÿÀððÿÚ ?èë¢®Š’Š(¢Š(¢–Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢¢œ (ï×5SQG’ ($õëP^!x°9Ç&©í"ãjFnG°¶º]mŒ”~ÀVP—S†ê§ ƒ®æpÇ^8?ΞÓ5³1ùÀëþy§´*;gæ7áÞ”…kaŽ Ö¡eV¶\u#õ¨\·P:â›’eCƒ·`SùS휋…l|¸ÚjKwÅÆqò‘ƒHåž,…Âò3R]JÏÊ6©âs#†Ñ€M,D¨ XñžËÿר¡&5ÈåÏž‹QÅû´àe›ŒúT»A È;G ž¾•fUÃÙ 2C§ëSÇNs´t>´ÔŒ¼ƒÍÎwú}*kxÒ€˜pGʧ¯ÿª¥Š/ß‘ ê8$ÇqÛЀöãš‘ÍïuQn)/NfqéþÀÌDÍ»æüj¨‘Ùerüð9¨3$ŒNI¦;a¡ÊI+×'µ2i7yJTí@r=Ojdï½»ïP.e—ÉÎY@R=zfâHà’#Ð÷¦€n&H‡ðõ«QÄ¿iv#÷kÁ&®ØZy,®?srO­Z±·âIdEÏ?3Ó³†á‰žÂ«ÈZkÉ][*X€OaþqUÊ™.³ò“Æ}*ýtÕ¹IE´QIEQEQEQEQEQEQE´QIE½h¢¡¸“j ucôïTµ9ü˜ÈzNÓ½V½—ËBÞ~Ó½U©xˆáБۜV3Kûøœ`´J¡gŸ ÖŸÉNx±ùTqc+¸ð‘MÃ0H¤—î\v¥?{åë'¥ Ü×~èæ¤”,mžöçš’LùêsÁÇáC·UvÄcœÞ£•‰ ü€äc½G#dHž1Þ¤·Pƒ2g{ò ö«úlkn£ÏVó¤åG «vH°&$ÈÜO'$`W ùÔ²?’‰rêT?jYÊ ; sPoc#–êÍòÖ²Ù丸vÁÝ#ðSéYÛÞi[ÕÛŠ{ŠŠsIcS\D"DA ,MM2ÌQò0>|úÕi„ETášEÏ ÍWÔ•`´ùGÎÎ}03Uõ ´F¸ú Ôo:âåÜ“!äjO šîáÜåöõ>æáÌK-ÌŒrÝ+^î@bCóIÖ¯êó¥¼+o |ÒŸ›•sR•a‰!Cç‘TuâÞO-Ї¸ïXò—ò[a Ž¿JΕŸÉm™ÈëJ×®¾º*(¢Š(¥¢Š(¢Š(¤¢Š(¢–Š(¢Š(¢Š(¢Š)(¢Š(ªwºåPƒøÖ«9}KËÏʇdßJ^ø è§J­$rl`£3Õy”È‚Ç$÷ö¨¥]Èv\šj†ù ±0¦¤@̲–*Y•p=@ÅHŠHX©'ÆH‰s”Á+ê=sùÕ{”˜Â¶P‚TúzÖ ¸_%g#J"u8$ìXÉ94û2…‘‰Ø<š}©O•‹m 4[:\,¦7-mªO­Jª· Í?!þu":„²ç K)ŠÝáóIË>Ö*;yaY³–'úѱ!’5“©Ÿ$k…Ü=G5-ÄH1猚’e Q»z{»HŠ1î•%ÜòMÇÛï¯jK‰Z@¨z/_¯jX†%$ •]Ãñ¥ÒÐ-Ô’mÜQ Aõ?áFž%‘ñ’‹òÔr¹ÜI$’AÁSoK=³ÎNHÇJ.‹4ã?{­WÕ¢IíšZ8Ðä°îG¢ÕIl¾fèÔIîÃŒTZ¬i, ¯”PsŸSU´«uÓ£2­iÞ|½±UôÖþÏK™TGlÕ}4 Úæ“©£ 4±¼g)^j߈"cu'‹î9ÍYÖc&ê^9üé±ÈâFÜ€çžãÔS¥lªœäsÜcšŽÒ]ŒÁ×9¥_®¢·(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š( u¢…ëšË¾øÉ‚GÞÛ·ë\›Ëæê/7PX‘\ø“ͼyqžI©Ü#Þ=Nõ©dÀ,Hþ©_c ÌXíì)£ÊòÝ•6FîzR#ÈfEa a»'¢ö¥aƒzîß‘icóªœç®*"7,rÀsšÔ¹bÇ1Ísw÷µÃ!%B|›}ãúVdò9¦NËŠÊžyšfAÒh04¸Ã}ç;Ïã]n‡Iw²ÿuL>N0äóYw×"÷]·†1˜â|}qɬ]Bè^ë±*ÝBÛF;ã­dÜÝ ½myŽ/òkc€D™ý+@ i1¸H:ý^Æ\ä‡Gj ±VÓϠªÎ¯"3rO>œT,”°n§’)á£ì-–a×}ªÝ£Áæ0ùfAƒ½V­š$•Ð7$8ëI/úÅä†>‹×|J¹œ“ýÐx¤—ÎŒ‚>ñöªz¬Ÿè’ü¼ÚŠ;Öf£;L­…!H Š=+>þg›pÇP­M§Y´vñ=Æ"ä(è?úõ¡§éfÒâìʹTÖ®ÙX˜Q&œåÔdJ™‰y˜Ž8¨.¥k‹©¿‹§¦C3™§rÝúPF3Î8À¨ö•9èqM ŒûñV«§­ºZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š*½äâ$ؤon>•›¬ßyy1‘æH0O÷EQÔ®Äiä¦7H0ÙJŸ4Œt 3Þ°càIÛøF{ÖR¨äuΩ£&\îÀ=±RÛ¾ó–ü1R[¾~÷QO2+í_,’:ŸZ´®²2 ˆåAÉõ«*ÂGTÙÈ5G*„o/,N7>O ¹Ê›Ë‰.Ià¡BIµ;ycšlV0Ü•i“2çç>ݪՎŸ ÆÇ‘2ùùªÅµ”Ríg_›©©5ke¦HËÁ+±¡5w[¸z\›x' ÷<ÔÚ¼âÓNvò§µsú%ÉŸ…<æt¸Ù¦ópp½ëI‰üÓ)Î}k¡WA)Ú g#ñÅj%ÌI#€…7!tÎ+Qn#S ÚT• cÖ•XˆcŒ}÷'ãLáŠÞ?¼äãüiªL‰ºòZ¥`±F€vŽxçÛõ­DVñ…‰A+¹H#Ó§ê*ëˆã`üÀýi™\toj«#å$ã Uäo‘øÁèk3X›É¶¶•±ƒ 8õÅg\1Š.HãÌ¿FâO%!¸n|sWín^úÜ8FÎæõç¥i ùom@û©üMßéWþÖ÷vüýæ¥Á]ØbYQ²2A$©ªÌqó’ 9^2ØÃc,?»S3«Å¸ 62Ãûµ+0d,:ŽIrº:Ø¢Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š( `’pZkm Kpª2~”‡' “Yw ÏrÌ¢²I湋ÙÌ·ÒH0 ð=…aÜKæ^9 Ü}*ISËØrÓïL¹_-‚ŽÃmGp»\ØsH»¤a•^z·¯ ¤µŒÍ0@ʹ8úúRÚ#K ‚óš—6ÁÛ²3ßÖ¯Ãï6|ÍÄý@ëWaB>pr}ñL“>kÃ!!$;Ãb™p®·/¹Xås*œuãªë1G ¨[̨¾·WBu2!YÍDºÊC8Š, ÁcP¦±\,Q)#<µM©Ä5C&å>cÇPjmUŽªb¬#æýÿJlaÝÇÌAûÄÓ¤ pÞy/Žõ-ÖÆ@ùÊåßêY°G;rOûU—«éò]E ¨±äðCQµsg¸w³cØâ³õ+RöÖêÇi _n!µªÛÄä°Á9Swǰ†bÙ– É[ˆ!rNFr*r6!%±–ÚML0°“»›i?J›9囚7;y#JvUQˆ^¼})ĨŒ:ñW+¥­šJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(ª·³"$äžXÖF¹xÉ‹hûòæ³õK’¤@ŸV5Xm?3sϱY(2wO~+>1ʹçš’s¹äoîüÃò§]dú)nyi3І4xY”ì¾}–›gúD-.Dkó³{E6Ò2³Æî0Š<ÂG¯j±¿tñÍü•QïZpJ^ö;’§ifUã¾*üRn¹Yðv’BÔzÔ†+3·!ˆ c®Z_I²Ýpø#óëI­ÈVßïc‰£Úg|Î>v>\`ú÷5…§[î±–s±·sYm¯Êd#.ÿwØWBÍ´ t'Þ¶®%hR5!‰p=Ål\¹øJ ¢§„qîsZZz¨³ÜG’sW-v‹|ãƒÉ¦ù˜V€ñP-ÐHäÆË‘ÿר„øG V.@¦*ífaýKª°»–€%Üö¨@w#–j$R°—FøôïRMŠÉ¥Ž@òâÝïO™V­"6ç[Ú˜Ž€Nä†=j+iã ØQ×kt5¼¨à@ï´÷5˃ ŒýüŒ‚xÅQÔ$f»Úäî{öÅS¾}×;_¨ÛÁôÅK2"8éQHЬ®ËéQÈX88ô¦¸o$äd}ð½+oXñÔŽ@4æÜªqÒ¤Uw‰”Ÿ˜ÉÀü*Ä1¼±'æ2~¬GIW?1oÊ®WM[4QE%RÑE%QE´QERQEQERÑE ëFqÍÇ&¨\œLsü]+™ÔúcüF°ïúA½>@D`§ã½J# o¸Ž sžõ9Q%¸ÁÔ%š@á–|*©ôH .¤+–ijžæBˆ 3vö©A£¶RŒ 5t…óa´–릮­*[§ÌT|äw5&çE! è YŽIb‰„vÊO@Oó©’GHʬC®?úõ›P»i=¦Ü«^’É+ƒž€ÓgCw¸w+Æ£··È‘¨»¯SPÅoöuTàù`‚>µPˆ@QÎÁƒøÔó Û«ŒƒÐ}xÿ ±©®ë(¤Ç9Ú??Â¥Ô0m£Ž£ñæ™Æ8Êȧ9bÓŠ©k}äA±Á9'öÏ5^Þëʈ#‚rO嚸W+ŒîåO¶8ýjV•RWFrw)>¿Z‘¤UwE眃S(+.$V„hc°v‘Fæ_›Þ­…ÙjŇÌGÍUå—Êen 8Ã:Vt× o&r<©ÕNYš)àÇ ÆG"ìtÚGÉó.ˆT.¾L¨ÊA1ŒŒÿ¨ÜyRR26ä4‡Ì+µ¸Ú}ª½þé$óaÏO¥W¾ dF…%ᓞîæ¢BZç…;¿: hóŸºidoô€duúÔž`ûJî·­=dÅÀ'œr*HÃÎÒ†˜1Àè=*õœ/zÒn¨Ý¸•½*í¬&ä¾öÇÍÎ?•]®‚µi(¢Š(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¥¢Šc6±û¢ ¸}±–è*)[jÏVéFÅqÁ­ajYz˼¥Wø4ŽÄÆìp<¼ZYX›G~þYíþ´³6mÎ?.*($ò˜9ýÑÀ¹¨,gû4’?\ÄÀ}j+9LVîÈ@üéöèmØǘSwqV¬A´üÅÌÌ›UG]ƬY©‚I†eeõ1Ê‘æ:¢žr[­+m—dÒ,kŒ’[œŽ*tq¼¬ŽO?¥+²,,WOùëK,ñ-³ºnÏ'üõ¤’XÒåžù罋{çqäý)b‰…ºË&K7Ì~†ž"a/÷›“CŸ—ËÁè⣼”}›È åv‘ÅEu 0ùg9OéQ0*~ã7?Âk8¨xÜçkpxÛU ‰¸ä)çñ¦F7F¹liϵF¤6ŽZ_?9=pjÚ?™ Ì0+¡´¶Q¼ºMl´…à\7Škd? };Ö|ìdŒ|€=»ÕI‰tS´ T3DZ$gæçjøóV<üÜQOòÛ£zšI7:9SØlJ­pZUg$á±Uî1ÿjšø~èÈ-îɦ,@p8PF}Í68º€Så\ gÒ²a•€¤däÓÓË€»œ4‡y­½/³iþlŸzLÈÇÒµôø¾Íe–<œ±5f´ªÝ-RQE-QE”QEQEQEQESdpŠRN* »müd–ÅEq'“oSН$¥˜"òIÀžõ“-ä×2ˆ—çÞõE§–âAç'·aHì¢M£•A“õªóÈ‚rå~µÒ)ä(À¨›ýT1¶ 9‘íIu˜­ …€Üß½?LR]‘ÃuÆóøÒ„ÃŒmÀƒßІ!‰3Œ€:zÔq.8ÎÖmÎÝ›ï¸ôC?mß5.aVÆ92t>Z±Twª[¿ò¢Â ñ«1â6*¿í äUíÍ]c¹•°#rª|sš¹¥[/—̧¦BŠ|Ò ²Y~\úRß\ ™·ÇÎÓ·=¨¹—Î}ÉÎ)ßq<¶ß”Q"4n ¯ÊidCkž­ÒšÊw€A(Xûâ«J0Øê…³øÔ 0þéjŠ"ÑÎéžëëíQZ±Žä©?)=»ûS-¤åIùI¥½—ìË$Ì£jûûÕ›é|–•°0 ÁÍKw7’²6FqϽT¼D«$,Ì>éêºj(¬’$D°àc½B—Ã*ñ¦Xp=ÇzÍÖ¯¥£FB`>µWV¼–ãË×hŒ­SÕ®¤ÑÆÎÕÖWi]U%QEQE-RQEQEQEQEQPÜ¢²;„T9%½ê–¥ʱÉ$¢5ˆ–b}êµìhU$‘¤dõïT¦¹ŽáâòßzXžÕ‹©Ý%Á‰bm褶qŠÌ¿&hÕ* æ–ñ/÷XœûU{9;ȉ8 Ý}* 9B]!<Þž@’fÃH-鎵$¬$¸cœäåµI#+Ü1€Ä“B1K$g ì“íK°¶’Tà»`NDal]x,x4ÈæhÙŸ€BpOÈ.žZD 0ÔPÜ4EÊŸ›òïRLZ8Òá ù[qƒÑsÔÕëÄkx¢½·*adÚÀŽžµvñZ%[˜HòÊàñÓ4ª’¨Ne ¿Øæ›SPóç/'Ðæ´Æ‘ŽdQÛ¾j_0I4`uzU©.<û¸P2žÜu©Þo6åW²©~Ìaç[?PoÝEºAÍScåÇ…I4äØðÄàîBƒè*A˜†GŒ¥<Æ¿»bÁPxíQ1`R,mX×$zÔ7S7îàû©ò£¹<ÔWR“"C±Ä:z–ÝHH\…–#ïUí:ØO ùU’GÞ«vP,ÑtÚ¹÷§Ü°VPzþ½;Wp#èa~‡üŠ]A†õSÑFC1d§¶àGÖ³nË,¬½$ƒTn‹,ŒL’)—€¥Øâ›& ˆò)#9ŒÔò+7T³o°Éq,ň zšŽêÕ–ÊIÉ*@EylE“ÊìxÆ)ú"Ä,Ãc{¡É«z~ºic qNqýãK§l+–OÖ²çšKÍ@——À§$szY±ËgòªLæâû$g8úWe]ÝvQE-RQEQEQEQEQKE”QTµ{Tº²u9ÌczàõÅfë¶ës`á³¾!½yëŽOéTµx{6R)ó wÅaÙJ»™+é\²6I_Ò¹Õ|œÝ«KÀ/R0jUÉoz‘2_޵>ÆEûòŒaÞ¬FŒùQ÷Ÿ¯°«1!| ,~cíR…IoÜ“jÖƒÆ?³¶.bŸ¥^eÿB\ |f x×{»|Á9o¡¬ÓÎìy Ö³ü¡¹˜óŽ´©&èdFæ'ŒåVc¸ÿ‰|°IŸ-ùŒÿJ²³ÿ¡<2gk}ÃIÄk,Rû¡ ô8§XÞA ôr±ÄA0[Ðâ–Êê¼V?pÇ·>õjæ$Ûç+eϨ­=NÒ5ˆÜ¦UÓð!ÓúÕëØSÏRC/ê TÔe\„%¸JÈ¿;6Þ–z}+6öMìØàíY÷ŽÑxn2¬C‹Áöªó1FC|Û“ùUyÝ—JF CQWö±ƒyÎ⋸ø¥“så³’qü©òÙby$Uø„GÜpP ~ÒiÐùq¬¡ò’F¿)ìqÿ×­Ûh¼°1Ã(â™t«Ë›J7ÓµPÖ9•˜›©jGçcèÕvßåùýÞ÷¬¹ŸtÄ·eÇãT&}Ò·®§¢í–É#Ù³RĤ/',DZ©cPŸCÅEs¹°–;rĦx©¥_;Mh˜í%Ëz’TX˜Üàç‘QGztj¾6C‚}ûU}©f…ѺGÆ¡*¶±»)è€~5¦Yy–Óݰ'¨=³ÍEgeºÂkÓŸ½±·z†ÖÐý‚K³ÌØQí]Mv5ÒÑE”QERÑEQIE´QIEQE-Trœ`òH^í€QÁÎ5ä`ø?•b‹(ío%‘He~@ÇA\­ÌÁu.ù#ØW;< Ä›A9Ò¯[BR/1ù‘úAëSEmå@²?H8ƒÖ¬Gmä@¾óÇ÷EIåÛyú3V,Ñrü|̼{ ŒÔöª»Xw ~T#Æ‘„vÊÇh=ñÿê«ã]4F햕˨öþª˜² %Fo™Éqô¨%Ý„’we9ÇlŸÖ©¼Mˆ›3î?ýj¤¨ÑY‰{¸-ú ©¢]›‹v·p HûÔÍ6äMg-¬€µ™8çv?•6ÊàOc$å1×5fÒ$æ6È@|Â;]*Õg»"CòGûÆÏj]2$Åœü±|ø>µnæåSáX8"®ê¹xÚªÊüqÛ¸«Ú†äh€7B*§é÷D¦Ì!©ªöÒBÚUã¼{YFÕcïQÇ$M¦Nì¸oº¤Ö\È×:VŸj„“#Œû u¬Ìa‚üL Þµ´Ì¶Ñ•Ü úV½Ã®9àÒ¬ÊAgÆÍÖ¬}ù6ïøVˆàjëU6" þòÑ€1Ú¡¸RC§MÀmü9¬Z2ÒËØ8RÐV}úÒ{àŠ¦0dŽ7rk`¾Oõ¬´8ô+¹dd@<Ìœ °›¦_.1‡$àTè Ê#NÒ¡a¬Õ°ùñ,dáAçÞ¦¸ ¢Ã:U›²©i¼gü#¥OtU!Ž!÷@ä Ð®Šµè¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š_Z(¨å“¦pGâo‡ÝH¨®1öMf0if‘˜ŒzvÅs3«Iq#6Ö#§™;g¦y«’_bœz±vá§1§ÝL ú šæA$ät E$³²ôúS#,K¸àŠldüïÑzf¡µ‰®îHÈÃ, è=jÝ«\XKpÃ'kWû£½Y··y,žv1_ÝAOdÉ׫y À9<ŸÖœU O¼ënx€O'õ?¥,¨¦ÅÑ~b°íW=¤;%ÌlŸx‘ô§3-Âê:±t¶"N?ºr+¡‡Ü—~Eæ´­™`•üÏ»"ýkBÝ–t“£€*)¢/rňP8\Õicß9ÉÚ:j³Ç¾s“ÚFšÉm¡ ì#Ì?…]ÔËc¼ FxÞ¦®_Ff·Ž(Æ#SóZu¤kl¨¨Aø¶?¥Ci¶, aGçÍEg¶,÷Öšñ‚Ï´œ%~•YÇÌÛN9ª±ÚKSŠ»fï-¤Nãæ#šêt©Zm: $9b0k¢´v’Ò'nX¯4锕gä9ÇáLÕ#Ͳ°ÿ–m“ùS/Ôù!ÿ¸Oòª/†XÛWÃç}ÓŒÁ¬FaÛ8?¥H»\Ã(Îâ­Yk‹ypσVì€3Düáò¨Œ¬úº©ÁVÈß牦k`“÷]¶ƒôÿõSL†}A‰ä?O¦A…ë†Rp*XÔ*®O ž*dÏQšÍÕ¦"T<¹Ââ¨jeÎ8¬ûù ŒüF·ë°®––Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(ëERÕï •‹Iå˜í_oz¡­Þ;xÔ–nú{Õ-^åíl‹"–f8íY¾ieIå’êz}+Ó Œ%šCÂóõ5“¥³²I4‡<}kL|ÄôË?LTê ’N $Ÿ¥J ¹$õ9jE-1hW…aÍIg ]Ëöuá$Ô–‘›‰ ]rjËŒ ùFFmÜÿ£ÅÆ>Ucð­;‚cB}ФUT–ä(!³õæÙàVkÈénPuvÉúU(,U5EHIÊZ«eÿh$€áK=MW²…E諦&!ò7r€v©d…ˆ‘¹ƒpaR˜§Ûð“´þùäî«‘òHã¥I¨\‰®'d8BÓ¯fóe›aÇA¢ÙpJ´ãhö§èË™@ÁeÚ÷iÚXxÆ 㣽X›ä·}£€?1Þµo×nŸ2 < Ÿ¦y«÷Ÿ-œ€vÆ~™ª¡–\³—oû¼Òò£eb&0@ìE4"VÀdv R–òb`Ü?Emn.wI")ÜÛ@c÷TRØØ›Ä2H¼»dýÑIkiö˜÷:òÝ ¬ëè™.-­ÙK;+>â#Ì6­åË–#ÓüŠ¥*„º‚û¨ä¿Òºjìk¤¢Š)(¢Š(¢Š(¢Š(¢Š(¢Š(ëE^æìÍ"N8= ejV†Yšh‰xÊžõBöÙžV’‡ã"¡“2ZȬHu °¿z¥pKX¼æ¦•Drƒ‘ò`}@53®ÙCdqŠU%nX•ÍùúêÅ£‘pÃ;‘#'éƒV-Ü™$ÈTþ´ÆtÀ›êi%p€8cÙzšI€?1ì½i_#ÉP„1aÎîz~”1;àEF[“ÜûPN$B°9çÞšÌ\Iˆö2ü»AÎsLv3³iiPsŸzao9²¨'wªÚ¬âä ç 0}ME¨ËåÜç­C7–g8oγìf–ïQI*‘.p:PXÜK-òÊ¥•c^€ñQXÜK%á‘Xª"㥾BndtlÈÊsŒÒ^‚.ÌŽ‡=i.Tý¡ðríÇ®3]%vUÒÒQEQEQEQEQEQEQE#´ð3ŠŽtVGù@$u¦ÈÇ8Õ+™[b¬@4òäw>õ…©Mö†Ž(T4Ã>ñéYw²yÏpÞ7ûÓd-Ð Åå/¸ÜñL½¶ŽÒÝ~ùËî${Œb™u[ˆt»¹#½#ƒ´…8îMR9ÔsTCíÖ¥°”;Ëèv_åZÞ˜4³Åž6‚×Vž09=1ê(¹ûæãÛÂóÒ ÕT¼ípïʼç¢ vœŽOÛ®û$eÇÍ»{gÓ&«ª3Ø$Š%ØŸJ£f²GP6IlÓ-ˤŒ õ5±& ¹ÆüjrM¼¹< T¼ 4£ãûÜÕ†eÇÐ33cëV€´àî8üjÍ²âØŸJÚÒ"T´mŸ®+NÆ!¾à1º’ìþçÞaQënÉAêÎ?•Gª°[aþÓÔ<ÝÊÌ 2§ÓšÇŠ#på~ó”ùqÚ³cŒÌç{µ,èÆÜš„ƒÆj[ÈXDwæG€}3Þ¤¹™HÍG²»È£!0=*+9ZU\¨àƒÞ™g)ÚB¹SÅ(EK¿9†>¦y©‚¤wÆAÐ.G¶y©•B]»Ëòûf¤ÜEÜà2ÍJì]¥À*2Ì(g 'ßÆÑ’ÔØ™b·,1¾FÈÈëS@ˉ||ò¶á‘×$dEg>w9kZÏÙ¡nª_=p?úõ¨dBŽ?½Î>ŸþºÈÔÿÔ£…ŽjMÚIÀŒecë#zûTú5¤—Oåò±/.ÞµcH¶yÎÓòļ½:îî1vTáØ*(ôé·÷1½û¼C[jè;Ón®ß1^l.=«£®ÂºJJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š:QÒ™#`d ÞÆ¡¹-{€$ô⣜•Œ¶ ãJÄÔ/ZÅJ ÌÍ•Ð÷®V[§¶fòÁó‰!Hí\ü—/lXF¤ÈIUÇj±g˧Fg`®2à¼j̱ÍŸ ¸`åÀ?x÷ç󫤑ÙÅç`HrÀw©“çfB2XbªX«u5W–ܽÍWûRY]„~d•@B; ŸN¹6w[ùåz šÂà[Ül~^+Fæ0-YúØÖ4ÓLg©#õ­=ITXìîNETŒùv2íKüV$nÉbñÿ ÷ÀÍe£²Xç ¢‘w‹yâÆ6ãúÑ"å1÷pyö8¦Ä®m®uÖ•NagøˆÏ¡5·îÄ­1\•Uÿ×Vìçó"ÚØœýk¡ÑnÖ{_,ñ,_y}G­mé· =¾ÐpéÔS/‰£ÉQœã±¨5ö>T?.åÎCPë û¸ÆÜŽi–ä,œ‚ERÒÛeâ9,æj¶œÛn”0ÁÝR\`,y e¿:±¨€Ld°Ë7ÔššðÔ:f”Ì¿ÂA9èÆ™ì¦T^#Û¸7ñ6i#ˆy+"Œ##ÔÒrnÜsÜ`TLÄßHHÇ$`T`æíóÐbšÃϘùrJŒúw¤… ÝèAòï$¥$ n.±Ówò©î¤X¢P€ÎÐ1Zz¬ÑÅoq»;@# ïWoäU‰RõZÄF—?¼POðæ§¾?7)¸¨ëœb—_pnÈU UGàhÕÛ3;@æ£ #‘ƒŽy¬âÃp'Ž1T†ïCŠÂ€>¡®drªxú M.½ÕÑ{Ôzdowªþ®ŽæMÍ厃ŒÖ¾­9žs ¢qøÖ¾¡')Œ•N)†"0TÀU?ΩI /ÎU~è5Yápw¸ ó¦|Ȥeß#w`3Ó‘ÑfŒZA´“è F®V)#P2ã–54‘„L*¼c2ýÐFj¼2dôSÍ=?w~¡Êì•ZÓ¤òuHÊœ«U9Ìwÿ)ùZ®nW3`n*qŠ×žD•f`72¶0{VœŒ²#7qU.cºiÀ\“Æ1éXì|«³&ìÎk0Ÿ*à¾ìßÞ/$JÀa{äþµfd¸¸Ž6c…Ï95bXä™Q˜á}*v Š‘ªõeϽ^“ˆ( Œc%I÷9«nUQ§Ž*¼` €¬~mç8þU—Ñv;ŽH¬ø ‹žO “N‹ëy8¿?ÿ]X°";é%o”G0üOÿ^¦³ÄWR»qå©ýMU¾¼#\9-°áV«]Ýašg9ÚpÖ«Ý]ya¦s§ñ¬ qO!%’DIïšËÚQd=A)úÖc††9˜ä«/ÉøÕ»$o°Ä3ªHö'’jhƒ5¼kžx^sSÄ­ödð‹íÜÖ®‰f°Ú— äá«o@° jÓ´¾Bœ~µ¯£ÙˆíKr¬ùÆ+R·+NŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢’GX‘ÎTWS­­»Êä:}j;‰D¼Œ@ÇJ¡o#My¸‚úzW7o+Üß—`Oð¬ki{¶c“éX7ï$ºÀq;/¾ƨ]¼ŸnÛ’ qëY׿ö‰ ü!è+ }þZ;·__aV¥geWrNGz¹1o•ß ›q8Æî0qLòZGÚOB~½)¾CJå@ç¡?Z“OÓŸ;å~½+nÓM“O¶>IgûÇÒµ-lÊ EË¿Þ&¬À¸ÜXôïLXb¶ Ì<ÇcùG×Ö„! ¿Îäôô¢á· ô9Î;U}No0‡å#æ ªú„»†WO\v¦«yjŽyHæª#ànFæ ´<ñQ åUFKä5F£°¾KT!~L(ë’i‘`89ÉçÔ[%Gz[@D†­Åó û²»˜ÿynZZ‡™¢9ò‚+1þók^ÞÈèÀùj9?ÞjÊñ&ÄKhãY˜œJÍñ2CÙâ…BžKÇaÞ³¼@âNI5~—O·I I ×µXWÛg rU8N¾ÕlœBˆç U§œ™v‘ócÛŽsõ¥¥¸ÚÌÊ;`sùÒ®d˜œG<ûTn<«®;ž T•DW¼t-Áª›Dw@Zt`I3/cò“ì*xÏ<Š>ëdu¦ˆy¯&O;¿:Á×&Wj6JÉó²u /ÊsóGÐVN¨ûÐ*œüàøT³G&ÎÓ›;ÛØdŸëS]m}­·VA¹½²MX»UvÖýJ¨'Ú™ †[Æ>ê¤T03<þZ ŽGlÆK-FG]8@Wû p+´ƈЪ1]@PŒSéô´”QKE”QEQEQEQF3ÅÏV}ë—“/÷•Íjó¼÷D¾Dc•íXšŒ=ÎÖÈQÈ¥Iio"Nî[+œýHàU"ÉÖèÊçäNN=ª}6Ù’F‘Ê3ŠÅÓ,dûT—7x߉¬H¡v¸w½¸þy¬kkv7 ò}òÜýsZ׎+K0fŽ%֮ܳº–H€ãÞ¯OˆÜÈÀ•Œ=U°»„Ê¡X">é Ž§¶jm%þ×u…;#}Î@àžÕ.—"ÝJ›A‡$ã¿j׸• ŒÈçŒàZܾ¹ŽÒ6Sžp«ëZ—S-¼[Üç'zÕRìòon†ÕZÁšæK‰ŒÂŸ”LÖL— ,†C‘…Ôí¡£ Ó,°ÑÓškcUéïJƒp‘Á4F ‡ð¡SµE ™’\/DbŸ‡ûAæŒ(ùbfZ[aæ%ÇËÈCΛl@ ­ÕÁ\ûÔv[C…q÷çÞ›i´0V'½h)ÝàñŠê!!íС+Ån¯1 ½Ådj1=åݹ#Ý»c°®sSW¼½ì*¨»˜öÍb_£\^y»p¨2qëÚ®#ohÁ.Ð*rɾ@@Ø1õ©îç€|`™p®[)i·g'iãÚ¬À§yonÕƒ.Üå³Àôªw'ÀöíUfqaËf£ @ùG,>Í“†òþó gÛ½çcêß˽s°ªÜj ò³Ç|V<@ItÈNw5dÛ‘-ãFNrÙü«FåÌk,‡°Àü X¸$fõ?•X¶‚M/†m\³Ü8À$ ·á»S-É•‡ sV<;nÄ™\sœ×Bå€È!Grk¦˜•RÛÂ/v=¾•½! gpQÝ©jJu-RQEQEQEQEQKFhúÖuúÿ«QÜaOÒ¹ÍivM#\uõ¬MUHš#žqÅ?Ì?`b¼nm¿Z•nZ=ÊpÎûN×4­Ëò™Ó½Goy‘%–>õ[K·h0L1Îݽª¾›p $c,O­K5»ÜùË¿j3/NõdXÉy%Æd H àç½L-é¥ÜÀ#IÚ¥²²†Ê.êrIîkVÆÆ¼¸W’rIïZ–±ZGåĸ~µûUx"1“ì{VWˆ&G–8 廨Ö~±(i’5 ùcŸcÚ”®ØUO$&ãTÜm‹iä“Uœ•HZ$QsŽ=ê Z@ˆ:“ŒTi™™w8¨dºHÉÞP’XúûRK'‘+F„³Fy>¸â‘åò˜ªÛzš›M˜µ´SÊ0îíÀ5oO•#·ŽI ìÃü5nÑÖ+diÁÝŠhQ´(à)Ü «"–#fFÜ·ëP"îa·¹5bÎgWJ9u±ŒÖ¾xâO²KÈq¾œÖŽ›rÍû‰=$¡•6·S…¨nÑã„«® £ÜTW Â0‚ÇúTjv®:ðp?­SÈ\Ï•U$(8矕Ì$±Ù·oך»îíLŒK3F/§zºŸº€“Ë ô¦àÌÀµTijàþuYW;™»U;™ü‹I®qå'Ï&˜ò´“ܯÝoܧÐòj9$hlä˜tùcéÖ±,¾Û•aÂ~ƒùÖ]ª³\…A–'{šË°Fk²AôsZ÷I‰üƒóˆÓsŸï_éW¯#ÛpЯα©$úžæ´.yͽ^ÓkL˜ãŒ§«áåN1Ž›Z´4qû¹<`ÕÉcVL6â=kJê40ûŠ/'š»2!/’ƒ“ÍKV*ZJ(¢Š)h¢’Š(¢ŠZ(¤¢ŠdͶ>‚«ß¿—g!êv梺m¶í늫8S-´dåƒdý bêfº·…NN™éY·afº† rÏ €‘²ƒ÷en3ì*¤ÌRÜCýÉŸÀUYØ­ºEýÇn?³o6¨Ç.k[OµitØ‘ÐÎZCëZVp°…íRIosSÂ$Ÿ623š¶-E¼ÜíÝŸLUŠ79Æïʰ.uÉînÂYü‘©ëëXwÚôÓÜm´ù#S€{šÄ¹ÖåžìGl»c^=ÍhÁ(K’IË>}sUâFv,ä³XçëM·BçsœdÕ£µ†ây|àýZtX'ø²sôiÐy@ŸãÔ˹Ø÷ nœ›¦Ý¸Àæ“NL˼ŽÖ]ż‡YxúFΑýÓÏõª÷P2ë2ÆßsÌ$ý U–"º¬ŠÜ®ìšÕhÁ<6~U_î€*챉vþv¯ Ç&®És’Àœð¾ÔH¬–ìxL¯ô¨ç‰â„ÿ `23Ò™4mxèMKV•9!“W´ØÕîÐ+nÚËåVì‘MÀ s´d‘EË0’@ Fê]MÁ”Ü!Ã~t^_$ð¼­nL›ˆç9…gD7“Žùüªœ`±?­X‹ $ã8lãéW-1"¹?0VÈ_¥Y¶Ã#óaŽS¼›ËžyÀÇz§vû㓞Ýê¥Ëb==;RDö/Ƥrê;ñS[?O’ € ô©£_6ÁШ;AlU X–Þa*}æ!ð{œÖu²ù3¤‹÷¸n{UdM¹xo~Ô­;á#÷ )ÿw4Y®Jçýfÿw4ži7sćô­<Èß·´%;%“?(mµ³¥§îÙ»n"~çÈhc8’A 5.³1û9µˆþò^°4íJBИ#ûÏÁúUªÑ«”QEQEQEQE­PÌK1Ú£½6I8ËÈÁPucMwHã/#mQÔÕ½y¦CÈÃïõ…u«½äžE´GËÓ$×â8ÀÚN±Yq’ë Ê“ý+%finY”ç5fÊ“Sy[î¡Úµ=œFKÍÇ àU‹(KÝ´‡ àVÍ©),ÝÔ Ÿ­mé2˜žäUTzµjéòÄùû©Í60]æ–@:}~”ØOž÷`¨ýIéIï Ó8à ¿[u¥IE袊'  œOA@ ŒŒóëB°ug¹ TÔRýh£9úSrÍœpzNOÒ©^«Iql~]½=óXš÷™%ä0–ÂlÉã9<ÖV¬K´ˆ¶#Ù’)‘ùP;:³HÃŒvJ26èÉwè=ªé¶õd3ôúRíØ²Ë”ÃSÞ˜ÒQŸ™— OëúÒÝG “×ðæ«É&B°'ƒšªÄÈÀ¯~*¡ýã¨ø­8¢ jzÓÖºËHVÇü!A#ÞºHc‰Ð8§Lû#-ŒààMÔÈK2Àt8TwÇe©8éÀÅeÅÉpNzf¹5ã ôô®sœñ“O#$91ÍÉÚI®pde8<Ö͸ú柷ƒœ” “ŸåN 9ÈÈ4à8Î2,¥Œ1+¬ÿ3nÕ$à¢ÆŒpXosõéRÜD>™j³hCZ³(9 î+cGñ+Ø|§8÷­M;þAŽÄ`ãÞ¡–6p \…O\U ¯2vV#;WœU;±$ÌŽƒŠDmŠFçœ|Ùô©âËÓ£RpØùþ•ae¤JzóR.Vå Êw={Tpü—aöîž¹ã5#dùÆx8¦É0Žx£““4˜$v¡H7qG.›&;R)Í£ó½O^Õ‡4R¥Ì‰qŸ1}óÆx¬™ã•'hçϘ½yÍfH’yÛ%Îåã÷­”m‘ÆÀÛÍh)(Š=«@ª¿LU=QÞ;(ðv´‡#éQ_îŠÕ3Æó‘Pß1ŽÝBÕ,mæiÖû¹+Û×<æ¥ùš}¸aóG¸qüY9©Ko´·ãA\}y¬ínFXáƒOÎEQÔ[jÇ~¦¨j¯#¿57”¶újÇÁ–bª÷Fy§ˆÖ ?处céRùb §—b8ö­›vÙnˆ¸ÉFü+fÒ_&È*XÂËÇlw­X_e¨TÁfˆþ ;cH²xQ¼sÿ׬ÝÀl‹'n#ÜÕ`]#Ž9#ëVå˜Z BîcòqÇã[RÝgEä O1¾áÇzšÔ’àZ¨…ùŒ~\3VkS­\¨Ú\±H†öõôª²]39ŠÙ|Ç[øEBó–cs¤ôß*BrÎ ôÍGö)Øåç¡4ϳÊÙc(,{J±–8oº(KC!"\€:ä*ÜÉüÞŸ,j0I÷5bÞÚ;uy?Þ54q$C Éõ4üš›4üÕRFXöƒòãæÇ­bxŠFT/Ì\ÖV´ämPAsÖ¢³¦e?xÅÇçYÚzy²”ÆX¨ÆjŠ™¤`~öÑŠ™ŽS`8ù°OÓŒU¦rTBb öU·ràG»¾ >aµSk•v§jªEô䬟ҋÔ±•;F0õ Œ´8 Ö©2~çcëU$OÝäýßJM-ÊÊÑÿ úUßÎÑÜ<'î0ÏÒ­h’°gˆò¾•=ÜdE!NÆ>½êÖ³î¤d8#O©Åû·t$Ѝ™ à÷ëšÁþð?bã¨?:ê'[u`*SäÄh@ûÀS˜yxx€Ô·ƒý-³Óhü8©õ„Ù©H pqù ~®1|ã?•> viy?. ­Z·¸1øsÓ/³úÕ¨ç1èªG®ÚŽg“1Þ(ÝÉëš«g ׿ —OŸ“ëPYÇ$³æ2IOZ¸¤@AÎGµ²¬U‘pÙÈÀíÇ5¢¬ƒŒ‚8ýjʦ#áËOÐf¨Êûù|1`N>•ZC±NÎ5ÙÅÅÒ9$yn$$w¨ì­Ä÷«#1[‰7þÔË8¼Ë¥‘‰v~µÖË-üÓ¶X0>•Ôk-ýÄÇ$db¢š5{¹¦9?0Åä1=åL\°$õȤ\‘Ÿz¡â öñr•VÆ# pCUì",‡¡­h¦!Žá‚ ’ßSZÚtY÷»T’Þ¤ž•©`àd0è9÷§Â pNqŠ»kiGdôjÝ ~F“Rq·–Î9öævA˜Œct­’=…7U}–¡sY³H ³{§ä)Â8-þ•da±7O÷U°€ÿVt˜‚Ëí È õ5KND·€ÝÜ8F‘¶äöÕVÑV8üéXçn}*­šâó¤o™Ïz³pßg‚GaÏnØÏJ–f0ÂÄŽ„zT×å@Ç©íYѯ™·ñ±‘þ•QFcs¸ÕD£HÎNêÙp Ó¥»•O\õ«]`1és]ÏŸ”·CZ‘§Iu/ÞZƒAVžýç“’£qcÝjg†ã3j ;Ÿº¤î>¦™ ¡{—™¹ÀëêMM¯^²2ÛDÃ'œ/Z›Ä—Ïæ}–6ã© Rk·m¿ìñ¶O\ lj®ì_Ì¢2ã­b+\Z&7βU®,þ`ßÍoiSIqmÉóË#g-è+kH•¤ Ò(iY³“è+cLº)a¹Û’MYžl7'Ðw«7w‡Ì ’§cSMuûÌg‘Ú«I €¼­ØgmS’O%žCP§éUšO$4‡·aUEÚµƒ\Þ0°ò£xÝþqLKÖ=ác.(×€ÞôÏ´©°y®ÉØÿ"/Ò«ÛÍ…ÚÚ%sÉïUXŒl`Aú޵Zb1–‰B.zÔqIæ4ŒOÝ^´Õ»;Ðu¡$Þ]³ÈïRjjé £ÀÏ>´íAY"Tbxüi5aBz Õ}3Ë û×vqQY”÷.p3L±Ú‹ ‘Í[fÉç {TÌÄž½?J˜œŸ@*2rÄŠŽy¦NjS€*^Š8è*CÀJ€œ78¢=yà{Ô'©ÏJ…âùwnHQÖ¢)•È8ÇAQ²|»ÆÜñøÔW(æÉ#‘L™XƤšŠåY¢BOZHÀLsÛ¥0¨`óLu 9¦ÍÆïHÝ*78õ¨öBÝ1ÚŒŠB¹‡QVÈÞÀK°FæÎ}*éØg9­ëv´·D_¿’Ì?Ó¶„ÛÂN[« Ñ·ˆÃ ¨Á=XSÑ—#*pTôëÍY³(X „Œ€ƒ·^jųq¹NIùx«²2. p1ÔVÌÓE.üqÚ´d’8ÈßÇEdÝ;^L v®{Zçïf}JívªNÔ¢Zǹ‘¯®F0«ÑsØw5SQ$g0CÀLpÆ«jyÞT`þâ•TtcÞ ¾o9£\þæ.{Ud?jÔ ¶Îèâ;¤#¹þ#ý*%ºŽüˆw7õªÀ‰o¡„}ȆöÇ·4j²3˜â\î‘‹ü©—²ÚIs¸åI|ÅÚ8º–9"®ZÛ¾q•< æ­ZZ™o¢‹1ÇÓÕ«[6ò8ý¿*¹® ž`²5%›°éZ^#‘$‚¶Æ¤³cÛWuݳG!ˆŒÍÓõ«ÚÅkgÅÁ#<Õ˜ìá´±Œ'Êì3󦬥´VÖȱðp:÷ªòG’ﵤn¬Fp+6éP3³•i¾: ¡pf ¹ïE«Ewj†h÷!,ï­>ͪyË”;°ON´øö\[§˜¼`ã󧏯/ûX¦`E´ ÚÇ©Å&aP`ž tÑýž,²îaÉaS]Àm\¶2X•%ÌFÝyo_J¡}0’ÐF¹2dî>œÕ ©Û"/úÌœŸÆ©\¸–Ý~ñ&«kP´ik]‘G ¤õ=ÍÔmÚÅ·dQÇ…õõ4Íi~Ï6F‰Àõ>µN.Sbt •÷ªI÷ ˜Î*ª}Ï-~¸÷§Ûq+{)Í-¿ qÔ)§[¥±ü+“ROp÷“€£98ºÿú©óÌ×2€9ÉÆM>yMÌØÎ2jÔ6ðÁG’NyqÑXŽâFBsî;ÔñÃ(Tþ$TwE8P{÷¨î ªŒp£õ¦ÜUà:­ *Fp @–ȪñÄzUãÜuã5hóŸ¥Zì{ÔL¤žØúTDûTdÔØÕ #8<Ò"©#¡æ‘UJdöëPN‚EAS·å°îj90§ǧ½A2y€Ÿ.¨‘%ÚŸ; dš‹hVÀç@¤¨äŽ´®™8Ç~)æ¢eÉÅ5ÁVÆ3H}(Î+¥[;´B|ì8>•¸-áiÌ›~÷#Ø{VúÁœ_·8©–,Èé÷S® éÍZ¶¶/,ˆp¨pǧ54wSÂŽy4³•ãn˜þµ%ËGX^_¦?>vDå8íQ*—C!n¼dž* $FgrsÁÜj=¬ñ´ŒÙ¹ªÒ|Òâ'q°ªmƒ'—䃒*«|ÒCÆ95Ÿq0 ,ªHdcý£ÞªË'ßq÷"ùT{ÕYå^A÷SåQïQè±Æ®ìÍóã§±¤Ó‘rÅ›’E7LU]˜ü̹ju”bïR™ÉÄq)ü‡¶q}¦æW?r$ÉþT¶qý¦êi[ý\c«lßéªÊ9*ÁAè£Ö´,dÅùuÁÊ2©n´-ý-Ø`åHö¨®O™3”f~N:œôë™nØÆÆ\ާÐTdº,‡~„ÕÛÇÝÌÄO {’k[Q‘ZÕLûý *¡áO|šÒ½``‰20£±ïXW“I<Ím¶GÎÞæ¹û‰gÚ„ùqðÍXw2¼Ò²®DQðÍï[:j³†4o•“[ZlêÞRÁpH­‹(üè"QÂ*õ£RžÖÍQ]ˆ“¿ãOÕÒÄ É‘òâ~ööŒ€¶$#å–kÝþZùy pÄŽëRIÞ5hÎÆá¿Æ›=êJè¥r­Á4¢(Z#0ŒH/ëR$K‚ q¿înçµ8E‘ùpÆ7`O­`\y?jd»všlá¹ùsX3nnXÉ(8cž3X“k‚.[ÌxÕm Žy?v?xWôÿ=êcÎÇË_œŒ~a¡Y ÆÞ•\Â-­X—Vy:ãš…“É·bX3±ê*‚ fÎ 1¤Ò­Dó4’³$J,ï_éUÔc¥@ƒ ¼¹Žß[>•hdGP)+oÁ ä …w;ºõ–I¤…²Œy> P‡(Oò¤Œå¹¨d಴Ð{zTMÆ@sÐu¨›#r†9Àæ‘ Þ¥¶‚9'ÖƒÀ4€€AÀ¦ gs&T÷íP眊¬Ä–È©2­€>÷z3ùÒê¡êanr®’È5­Ûï™q]5¨Ræ&ûËÍI¸fm«’1íW@HeVwœ©^™¥YFà³pAÊ×?©NodŠ!ó—Øç¹ë‹Ùží‘9f|(ö¬9o%{¿)Yœ=³[wÒyI`c –¹¬È¶ñERX}8þu¯ªH"U‰xÖd’ [&™Ø&bÝÍd–¶FgaæÍƒÐzþ5Ÿ!ÖEØ6nôF襾ž‘Éó3|Á} S›lVªËqTîÊÅl¨ýzâ¬iVæYnüì£ÙãùTöPùvÓÌÇæÚèMMc ŽÎYXüìý3×ô©"‰m,dŽ>e¹|`öZš¶Úd‘GóMtàmÇÝQS‚ "3™n_$tUÆÞäF£åã#×Ö¥‘~Éuä&N0ü*FEÁ‰@ùZš°’«mµÝðNyQklÒã„ív~Op4¶Ðn1¬y¶I…\¹TV†Ùalœ÷µ©¨Eë{4aàN{W.¢BÑÛ+l%IÏzËÔôãm¦•†Àù pMdê¶ÒÉQ]JïÉÇSYº•›[Zª)CqÔÔÞŸ|RÂÕù¿:¹áY÷Ç4-ÕNïήxzo2Ýã=TÖV¬$¹Ô[;žAÕ‘ª´—Z¼‹'Þ2lÐVF¡¾ëU!³’øÐVë@„1È­Y-c2`À­g<Î8íUæÔM”‹ sÔ-©X• ᚢmCì®±€ ÎÖ(µ{­HÄúÇÜqØVJÀ÷WÅåß'ØVT6í>£·¢ï,~•ª“¢Í4uÚFê½ʯ­,òœ¤'v?¼{U]*%—TžåÈ#€=M_¼‘]ä–LQŒJ›Q˜\\É4ƒ8Ú§½”I+Êÿux²¢ó5]A°¨„(ÿdU¼ÍJù7aS!Gû"©ÂQ¾ Ü 8™xžuüÎÇ÷§Ðvüj;îVë|êEp‚K¹ó|qÚ´·« ˆœp‡¦y®]‹9e…^ ¸ œí#úTè„Ü©¸ÛóãÒ¦·]·Ks7D±ëŽEIì¸ûDŸÂ2"Ê>i¤u;Øì;RÕ÷K#6F! ì(óU¾wa½ó»ÛÒ­éɸ‚9bT}3Zzc\ž eW>™ëW4¨±œßÄ1Šm׺Œ† A<žÀU{»’úœlP#pǰ¨å›v¢­¸.ÓÔúV~©t]®°1‘ê9¬ýVèËu8Þ;Hª…Á’i—;‚ôÅEá¶v¾”ãåTçó©|/¼ßJ@àGƒùÓü8Y§˜ãå jÜØ¤·itø:c­ißiÂ[ÑxØùGAԚўÄ=à»8 `TOÿ!Ã8'Ò©?SmààŒž•U†%“zƒ‚k:æÕ§¿PXùcæfô©ª2[5Åð\Ÿ/ï3Àuªnf¾-±[sØw¨âÖ¯•c·AnÇaþößZXu þÔ¶AŸícÖ™o©Ã%ÿ––ê!ìÏp*sj-®®bØ(ë“Jöëmwp»‹  çš—ÈÜ\ –ÆvûäÔS3,Xþï¯cQJÌ#À轪9]‚û{S-gU"äð¦ÛL¾j†'Ò›m(.=±Sܲ‰C3ÜŠ–á×ÍÝÆ@楜¨”°Ç½7(ã ä)¹VI•qr)v€p½}hÆëÞ€0p;ÐØÆ2O­ é’hoLæ˜ã§¡¦°¦0ïŠ`V•°¼}iYÛ )Kž8¨î )€0M6]ÊxÁÇZlÛÀc­B·*©;˜Â£Å”.rM1T™Fy"N!Á;¾™¢ú!Ãj-B/.sÍD€mÐPÞ ¿µu¯“9`q ®I=3]V—›yž\âL±>µÔØ“ ¼‘޵6Q½É¼‘}#¹éìj¼V‹<¦î@L²¹Ú°ìjíG7L?{)?ýj§ ÛI^3Œ9!yéZ‹E…áûoËóçoÍØdóQi< y‘óîÆO¥C¨;O$v0®ç?< ~‹U¯[Îuµ€n',øõª÷çH¶°ŒàsSéÞ]­·›Á!¶ãÔ⥱d´„ÌH,ŒzššÐ¥´Ï-’>µNe鱨2?ºŽÕJAóØT{{ÒªH på@7qÚ¬é¡åO0äù“ÇnÕfÅZB8$ÈÃ?J³b­&ÜççnM[•A¸x; õõ8©®0nÞ%bcǹÅI& ÃÆÈŠ4ëxäýü£÷iƒShÖ±ÈZêp<¨ø {š—J·F|¸!xU?Z³ms—òЪ퓌c“þ5~Îô‡1. #¹E•Ä p6‚E2‘o§ÜÊt˜Ú§´ß?ʰž@2ÿw5g»‘ ņ„ÛxùsœÖUª5ĈʿêˆÜGe5—iŸ:Hª’Ø$zu­KÉQe܃ lÿz´/¤ApZ1†lûóZR*Ê] 5æ4Ðdå]O5Ÿ¹¤‡<‚ Q dˆÁ™o<ÊgoÌi°¡i;sM pWªsSÜ.",zT’ŒD2pÌjY—Ÿ˜óQÙ¼§LƒŸ­6ØüÛ}6Ôœ²ö«GÔ÷©þµ7ÖŒdçÐRc9>”c©¨Ü’‡m1ÎTâ˜ç*qQ#Ò˜¤Šb’*Iç’28§É‚NN)_9ü*(ž(ŸÌw ÊzÓ!t·’ ( zln‘±œ°Þ¢”s4€†n€ÔRnr]úžÕ ÁŸ.ýOjªÒp2MCК¯Óp®¾AæÆ"Cû pXÿô®š]ÒÙù1ñn§W5ÒË™mÂ!÷If ²áŠ+Jµ¢†h¤óT1ð¦§Ó74mæU°µA01O3+`7«^ƒÕÁF±ç늂ç÷3LU°° É·º’;eO/Êd?Â¥a¤æYaù¤“ ¹íšÆIÌs´P.é$8g=«¡P„‚d ßÂzžÿʬ†%2ÜãÖ¬¨Š0]A¨u·,pÅÁeÀvÇ¥3WIrª‡ Ú£ÕŸ}Ê¢Ÿ¼8íZ–ê ‚Œ(`3íW­—ìñÛ¾Rߥ_‰|”…ˆÀÍE"”ŒÈ$ Ùã銭:O1XÝÓðªÓ®Å­†$ñO°h§ùpÇ¡õ­RTi·¸ÈõsMÙ$/0?,@àzZ‹EV{y ‡'q$Ÿ\Õ}^KYºœÞù¨´Å/k#1ä’A5m‰r@à’¿ér±à°ïÅ:\ˆÈ$UV¶ûl£Í ¢…,¿JŽsy*Èçr.7/°m¿7½W¾Œ¦”à–?1ª÷Iåèÿ(9f?…Cx›4¼(åŽMR·…í´Éd‰g`öïUbŒÛéÎàâI˜ìÕhâ6Úqí,ÌáR8"0Nšú¾ùšW?»8è5´aâ’F8pƒ4ÈP]˜ãyŠlƒ6p\ü¢§B–òù*@fÆqÔÔªDOå zã©©ˆßÊÉ뎵ñ(7Èõ¨îÉ\0ÿJŠð•€¦é{ZâV|p˜¤Ó@/#7÷qK§…g•ÛŽ*Wm¬xÈÍ=ÛkLÓݰO¥)ÀAŒsÞ•°c½ €8î)8¦®Hƒ$SV=¤ŒtïM ŒñøÓBã<~4¸ £¾ .¼ÒðTwÁ¤dL;@Í!PFNÍ4¨êpj)y]„†eè1ž)‚»r3L|Ûžj¤‘n רªì™ ŽõZHòAõÖܲB‘ĹÈ玼q]V­$0G´CæSœßZéu #c…:ŠŽÝäØR1¸–=8ÇÔÒiï7Ù¼˜†rìIcžæ’Í¥û:Ç=zÕ-Zãì¶ÎˆArx硬ÝRq4jA`{Ö~§8ŽE9$àV2¶±‘A’rØo`qüóYÄ4‘£tÀ¶ÙJÏÚÐZÃò2q¿wµhK?Ø`³†ÛtŸ9cèjëÊlmí£ƒWù‰ô«ÒÎ-ÞÖ°É&«D6¦Ù9ò†?TÑZ{²:žŸU…MÅï\í8o]·–aˆcå@Nϵnêì"6ð?wÏ·ùÅljLHÖN«'•l[9c…_cÞ±®Üªœœ_cÞ²oå(ŒÙçî­ZÐá?ØOŽLÎÇðû¦¶´ˆxu¶Œ´å‰üxþ•©¤ÄW@P9irÇñ8«*‹ yKǵ7g• Fp}iÛFbNz!ò„¥_–Î= ëLŒD%eçå$òïMA.¬>~„ûÔ(.7æb mcô¨,Vì¦mв–ùn Gd.S ’¬y?CZ3J¥±¸|ƒŸ®:VÍÝÊ4ŒÀ~¾•¡4ÊXá†`z®U J\ýðwÇ8¬Ò±ìœ±ûù$ôçMÖ?*bxÜ Ï½U…´Ød2 Èö<Ô+›8Pn ¨2=ª-Žmâ^C2*;Û¸áòíÙ½7£=ª;Ë•Œ%¾Iï¼ö¨îîQvÁœÛÞ‰<”žG'ŒGAü¨”¡†;‡|ž#ãÐRÊWË[†lîÙéQÂñJ ÀEGE -’ùXbäóƒÃ ŽcåO˜×ä‰:žÕ¬R| ùc^ íQÊÆ9Y—€ƒƒTm˜µÆçl’yj« fmÌzóš«nÙ›swç5z_Þ€ú÷«R4¸õnOÞ*D±£ïÇ<“ïNDXÑòG4¨¢8Û‘ÍG!Á£~¨ÛD©¼;b¥•j˜àŸjšUÙ´õü)ª2€ƒÎzƒMEÜ ÓUr ÔdŽ™÷æ˜qÓ5¥ÆÜ0ëJ:ôô¥uè{S—æ<ÂÓYAxÏJk #“ßQ2á[æ]àžsíQ²ü§¡ÇéQ²§‘»¡ÇéP Ë1‘ÀaÐõê,g$~2 œWA¸]NTw·z׈}ºð©'æbsÛ¯ ýªãiÉÉ'ê*ôÒ-¼Xû¡GAÞ¶o§–álÀû¢´®çðí^01X·Vm=©šåüŒÉ•Ï~+ m=ÞÌ\\¿’]ò ý+"{öË%Ëy{œž{ŠHeXÇʱ@¥ÖšfŠãal,0&ÅúPÒÇ9àã@£Þ³àêýî|¨¾ïÐtªKûë–—©Ò¨ÅºâòIÏÝ^µ¬#XîVMƒ.I#ßµhiA"½Ir¼œ{ö­4$wFÈ,>´·‘í)§9ÃD¡GåRêѱ¿žbÍ`—PV—¶y Yº¹7SEXgÜp=ñY“‡º‘"ŒeØô¬Û¸ÚîD†?¼[¥tº}·Ø¬¢·ÎJ¾ýk²±·û%œP“Æ}MuV‹kh¡î.ÚlþTä'æ>µVôÁjÒ>s!硸1A½ù5•ïeÇ “»>Õ‰»y );«,¶åùAóZ;­ªHÉ=Î}+NÎgŽÂ$L¦Ì{óÍ_ÊZ"!ÚäýjUT‚"Ò6ì|ß½M²+;f’r‡!}O½<„¶€¼‡,9÷5YXIÉÞNìÕŸù–|ç,1ÀU4#pÈnxíÍ;±&P¸ÂÄ¿­V³'Ê&FŸj‚Øþï…ù˜çò¨­Î#_˜œÔÒå³ç++þéÒ(í!Ø)d@#Ïi>QøVs´Pc8b}*‘͸ÍT˜›p6õ5rÞa=¶â˜t<àu«QºËí¸e늹‰`·uÅ?N})qµ‰ô£¡>ÔØ×3x êhŒ~ôè´ ýè'øjY_Ï‘9Çè*K‰>Ñ*rü©ò·Ÿ*ó4ŠqÉéMÂŽ99Å"# ;f˜XÕ9ÉéQ㜞”¬Nån€u͈e=+1 ¥A#çÌ-ÎÆ*6o¼[¨8¨˜ýìúÔl§%›Â8;ˆã?ҘÌânj±mN6žj.¨Œ`óPã1¨QБ]Œ|ؼáÅtRÛ§ £úVö2†\|¸âs,rI1vÄqH¢êxæžy$'d|{ý)'•æ’C•N•{}6§p†¹²Ö5íìÚ„€¹Û|*ŽŠ?Ʊ®ï%¿—,uAP,­´b$ùT{žõ_s?ÜPy„ÄHá:(«úlèl:o<ûÕ«TűÇ8>õvÑÙvŽ2y÷­‹ÖIW˜Íké–ë4¬„ŒÇjÔ±…dr¸ÆÞ´šÐBÐÆäMÎÇøGaN×ï?ÙbÆå‘ý=7WºšÀÊŒÈßÈV—m5Þ¤¬ 9cìk#F´–ëR“*#`Ž0k3E´–}@J23Þ¾ÕØTôvlv«1裚ê €f°5iä™íT {×)«]½ÓÈùÚª0«ë\ö©róo|਴iÛÊîÇj}ÃïÞ«Ù;}•Ëq÷MEg#2_$ç ô­«8Ü¢³Ž ð+K•iðf@=‡­mYÄÊ¢IN2=ª½Ôq † •íþ?…S¼–MJím­³åƒÀô÷5RyþàE|°ýf§Øª 99ëëëV¤Ž+uŠ FA9?έ2Ç–™g&™.Ø×‡C¡O5 ÑŠ0zÈ„¡{T74I¤¡kòém$>TjÎzÚ±§œA'îÔo= ¬©îE´€"eÎOj±q7Ú­ÒäËPcÔU‹™ÍÌbàõ“–ÇåV'—í³ùh8¥¡;PõfÒ¬†8H0ˆŠpvXŠ…ëÆM)R˶F cŽKz~X¡—tq+–4%Ž:±íCËxXÓó5•vÅÝFç5Ÿ9/ sœYמP d“ŒVŒP›[Epòr3éW–/³[o¼üàÕñ‘n¨~ñíH F§š`¦° îïAÈ;¨9 šz¹lõ§!* g¨Å9NÀ[ÔbšqÀ$õ¤ã§­7ŽiXã}zR·â”ñÒ†PF Ò0c­#EE(È99ÏŽ•Œg9¦8<õ¨¸VÎì |£ÓÞ˜H–ÇÕCݸö¨dW,àíÍDá»°úµ+ddŒ8k ´"ßK‚8ÿÖ0ö$s[ñJ¶ÚTVÑg{rßSÖ¶‘ÄV1[GÔ›ñ¬­mÈh¬£pI\¹ZÍÕÏ–c¶Wã.k3Vr$ŽÖ6ÉÆ\Ô2[±ò `ò“™TvöªÍ­°H˜3—¨¤…E¨ŠËНr¢$‚Ø}à7¿ûÆ£˜Â>¦¡œ*˜¡ÃÉ­Ý6R%çj äz“Òµt¸  ”ç9õ=+_O„³.~ìcŸ¯jv§z4û†œ ±Ëwj³©_gß´ˆqŒݽjKûß°ÝHè2æ0€ïU}.ÚI„ùy&ß=½*žk%̲ »º–céÍWÓ­žrâO™ˆËLÖÕ¼1Ûõ:×ImVp@Ñ–8ë[p¢[ŵ@u÷¨n.cxö#ƒ¸àŸJ©ÃåÄùÝÔÕ{»¤höÆÝzšÏ{O¶,—¸°?Þõ5ŒÖÍ3) „,HÍf=¹•¸ÂMX6‘Û¬iÄN¸ü{Ô·0CİŒFP~u4ñE豯ÉÇó©.¦‘óeÎþ.*MBú[ŸÜÄ q¯ £ø©on¥¸>Zª?„w¥Ó6*4ŒxGOjµ ˆ¡…äcûÖj±¥yqDÌNdn¢”|Ó:…Eè~ï5æk©‚®Øã¯Ýɦ°2O0Á Ÿ/=*8×.ÜÝ#Š‚(Á•ÎqŽzTQ ÜüvÇ=+R²–IKöA+:öÕÞVhö°@¬ÛëWy†•kK¶x¬•'É8kO·)k¶a× «v0´ '$ôàÁ¤*F`nõ4܃!SÀN£ßµîsèœsëQK:!ýë…9å{ÔrLŠ~vçÐu¨å™üì>•f'c0P=u_¥66BÆEàÿ{½62„ù€þÕHSçaÉû¹<šI˜¯ÌïOZI˜¨Ëuì Eo!vüÄÔp¹väf™—cÜŸÒ­ÏÀïš°ÀcÀ©Ød{TL;s…˜Ãƒõ®“O´{…Èg˜aóÙ‡8þu¿ilm6‚rdlúÒÝ@$lùŽØÓïí–S‘#oïƒNº„99Ýìj£Ä#™•G 2¡«*XÑ'u@p«À5FD_1Õ}8¬…)ïçÐtùiò§“mîlä.1òÓ¥TI¼åòxö¦2J»¾âŽqÓ…VóYw9û£µWd—,zuÅ2æVŠÛÏŒndnç–áS8òíŒéË+*W\j °5˜.šÚî)Pî‹cTÉ·¹YPü›HÀÕ/´´!Óî°â·æÜ:õgšØ‡"Ë;†dù›5©ËiÁå¾cš«!_š2à3€œÕGuùÐ8˼÷ªìëÊûÿ/åXZŒÎnš5%U8=k*òFóš0H ÆdßLÂá”ö­ 5ÜÚ—;˜…%O¦O¥]±fû;³n$)+ìI«öE…³É`¼PÙŽ/0ñ“Ï4ÆÊ¦òzži­ò®âzÖ<çs’zf³å9rk6s¹ÏÖ¯ihLDŸºåV¬T”$Ž3Wtõ>^[ 4ëãæmaÈuáÞÁ‡ qEáßµ…Gl»p¨à]‘MvœŽõs °r*ÁÏô È4» nP>´-)6² ÜÊA즩U˜{HAUåÏjxl§Ì2GJvr§<ž‚œƒž½)‡åíÖ™ÐóMèy žJž¦ž¢š¯.ù‡ËêDüuä{T/Àç§|TCæÀ 22Ìäo^y¦}á¼r3ÐÕ9m?yå.Lÿ©D‚Øc7LÔÍ/Ù‡(áÐÕ ‹"M#öªà2ÈÇ¡î*‘@É#ç­-ª»ñò©ÂŠ"\ǦqŠ[uÜ¡¿‡ JýåðEPôžõ{Iíë þ•{IO:ð `V–¢<褀˜žâ­ßêðv,˜~Ù«WŸ:Éù˜j]>Ú8 ¸XtÍI¢[G5îý¹X‰ÚLÓô‹ty¼Í¤úU½BA(ç¨có­]Ve†8_?7š¤jмD!=X¸þT³«äɰcëÍ6ÿÍU3Pž”˯1TÈ@àÕ{hüÂIŒasÚ©éð¬îÛÁû¤Ôq 2XöI§ÊäÝ8pEН}6ûé¿cV«ÝK¾îb!pÓ"µ?˜û¢Väzš“KÓ–éÚI‰h”ôìÆ¤°²Y™!Ê)ùE]xãmÚ;V­ìQ%™PЉӥ^»Hų ^•Î Fk™cQ¹ì®LÄ^IPps¦2ÎÍØ »jeHÄRdÒ­BÒlÙ#žÕn#&À²zU{¨¤º½ŒBgqíMx^âí@€¸%Ja‰å»B™U\jKë;;«ü ”;`1½X¾´´¹ÔÂG2‚ø=3S\ÚZÜêIGçC! aA€¬FGzÃo1 ÀV#+Þšw1Ø£xã½G³†Vãß5Þ7j{UW°;÷8vº¨M™ –V(}jgóåÁ*zb¬"¬H5Çó©€»Qqõ©€»P`SdÁ\àö¦Hw‘Á¦·ÍÛƒM…8äšH”g×ò¤‰Fp=y«.eÆ zœŒ0<©ˆ!óÁÌŸÁÆãQ\?ðqšŠwþŒÕʸÃ}Ú¨ 9ªŠÄ8ùºVŠ2Fsƒõ«ˆ8çØÕÔ(ÏÖž¿Ê÷¤n´Ü`÷âšE4Љ¤ÃŒJc¾ÐSÆü• ™gÇ µ‚\)8§½Dá‹„'¡àS^_¶]1”â×¢GûDìÌ~Dü)'Ú'yî/§òDºMÄÑ#L*{Üš°–ÆM*{§b©õÏ&¬›rúT’¨ùC*'Ó<š’eKx#Š1– /ãÞ£—Ä©ÉÇ_~ôÙ‚¤k\tQ[6)mn’u—²k£Ótô³´Yù2í-“[––‹inÖmɨÌm,ì’±YË—N’ŒänlU5…¥žEqœsÞ§Ób“¦wEièý@Ü$ Žýªö“²{î9öª÷…o.|´åS‚ÄðMPÔåKÛð‘„8ÜzU.ä[«àî¡äûÕ‹¸Ë~ð>å<àôU½V7*$W.Œ2A<Õ5ú¾7+eME”•rû¸À\ÖbI7ÊÅÉÊà ôªbIFX±$Ž5P*üøPycíéQ¢ÁqÛ$zÔj¡æäHõ©t²^9¤Ùµò¾õ³ –6³>ͨÒnJÓÒ·‹VÊíÉýNF[Jƒ»§ëNפ#K™@;‰Îa±§È犣`‡ìí“ó»–'è+Ôf¿Æd''éY6ÿ5ºâÉf©æ ÇeŸZ¹0‘Tc ¿‰«s(°UÕf{{SmŒ§¥#Á‰´)ÅC¨ÊÑÄ;qXˆZ&óyµ•4n²Ž¡‡›¼RG.rw ÜŸs\æ|àkZnnÉ€$ÁükZL›“åŒ9ÿ‰Ô‰XõŠRV¢uÛ#Þš ¯!Ê®9Å yÝ…ïŠ@BÜ*F*²/ƒïLÈ FìëÞ™Ç#8>¦š¸ã€pzS};Ò£½;n×ã¿zp]­õïNUÚßZ•>~TgoZ•첌ã­H£vYGNµZàõlPO×wJ‚nê¤tª@ËtãµVUÌ‹·’J¬©™TšÒNúàÕÅÈUõéWW…šÝ»ÓXtïMaÈúR7Ú’’¡™·``çùÔl>`HãsíM7\€ÀåzsÒ‘Wtÿ0åGŠ»®>aÊŠ†+Y%•,¢ûÌCHÞ”––r]Ζ©ÔòçÐTv¶s3…úã­njÆ;M5bQÀè=}k:Ö½»€çb´[¸íXÖ6­{µväûVu•³]ݯ8 2MoÍòÆÌF;wÅt÷çe¦À°0qè=krí¶À@ŸoAYÐ]$i¹|„E$ç¹Ï±´Ë¡n÷WRçb¡<ž§< ̱¹ñÜÜIª>\÷>•g¨ÜOºLq^¤žÕBÛP¸‘2áêÄöªv·ÓN†ÔßÝ÷­»K!©|nî d~5½§é G•p9AÈükjÖÁbÚÌC69^ÔéX!hPŒ•ÎéQê Ék ܹ*JŠîuíã`xãµB‘~UqÁª Û5³ŒaÚª¾VØ|ÆàòЬ@ººäªžã½2Ú!ux°· Ø&›mžèGÛ©°Pz.+¨UTPŠ0¸ ( £qU5Ä{22ëŒ{VGˆ'Ú‚ yeéYºÌ¸ËÏÞZ¦Ò¬áøýÚÁç¥c«áT÷Íg 6(~0‹še¡yt«iüîÍÏüâ­aŸN³‘ï$,Oýô@«)¹í,Ùïgõ©®-EÃJ&•U^=ªY­áå3L±¯Ò-²Mæ4’…޶öí.³*žý e,P™p®JƒÇ½g¤Qùƒæ,ñZ›Š9)Ëg{V‚6ù>÷¯+l¯^•–fó‡ Œ 7<`}ïjglwö¦ö"˜W޼öç·ziÿ54Ž?5D„«žj4¸aÉpyéSI$h±D,N2*y¢0¤òøiéŽjYã0®Ö<¿#ªY£òÆVæ iV/àÜÞõ\ºÇüpjqû¹õÍ>ÌNñðàýÌþµ,+ñ;©Ãƒ”øBMeáÇðÓ@Ú¸èÙ¦·#¡ïIÐc¡£’ &:•4„`eMW˜…ç9>‚¡îjçÒ¦8Êÿ»š™°6ý*Và¥8EÈlŸð£f>mßýj6cæÎ}©Œ«ÑWŒðqL`§­!°­{ëèíí‚BÁ˜Œ vâ·õMF;ka³«;)QŽÕ«z±CåÂÀ» ¿N+h3ªEˆÔ1'×­sn™½Q×oÌIõ¬&Œ6  dìçñ®‚Ô´ae‘ZßÓd{$”:|¤n_RknÉÚÚ7  ƒÈõ=Òç;W¦{šªäÞÞ«0;GëPÇÍÚ³ghçëR4Q[åD±“óqɦ¬]–î‹k9,W¨%ÄI E ‘“íRÛ˜­S»$Ž¿LÕ8Ãe+ä1 0ôã5bÓ˵VVÈ%²}¨–W•Z%PŽd>”—WÎ’@ƒldœËÓŒSg’IQâ_•ñUD“ Œqõã­c w#µšXˆ¶ÔãëW¬â ÄrÜý+{K´ l®ãænGµkÙ[„…XàÍfÚßÈÚܶëþ¤– ä Ï´ÔdþÚžoÜb©BÖùÛUžoÝ)b«×2>\¾´º•ã\|›†Ïj}õÁ”íÏÊ*±¹r8Ý‘Yg; ÅÀÅg|åN>ó*|8H·+nÚA&´Dl‹ul•ç5|¡P€©“Q„ÊÛ† çž¾Ÿ­Bª±Üã…#Þ¢@©;è¼þ5[PÔ z츤¼¾xÆ6úSo/ c¶*k¸åƱ¿\Ô0\G"‘Uúî¦A:J UÔU¼•Á# W«Þ)ò”ôùŠñU¯”´IŒõ#Š4è¶ÜŽÃéÞ–Î2¼œƒÒ–Ê2‹“œž*êœF¯?5YÎ"Ú}jÑ8Œ(4Ьü#¤ ì¤!"‘T•;IµÙ€a#0ëQyx‘˜c5’7‡'¾jw“Ìu9È<²yŒ§<ŠšGó7`1TîÙ€(0½}*­Ã»qË*«rÄ.Ð9þ”í2)7ùXGŒdô&Ÿ§Fùó6˜#ëO°Á/ƒ·`‚œíRw·ç¶j\Ç¿µ5ñÔzf˜ß_lÓ[Ò«2€_Ö¡ rZƒ:ÔäP1R°åCqS6\œ`TªÀ¡=ÿ¥H¬ íŸÂžÛš…Ø-ϵDÄ2ÍDÄ2ŠïRg’yT(„ü‘¨Œ´——¦iåtUXÉÚŠ QÜÞ—yY@H€9«–Qi9rªûŽjk8ÔÈ’0 \æ¬Ú¢‰¯ógi'ð­Ñ»Èe-ÐðEh¬‘ÌÅIKnõ_þµ]VW;IÊçj’8Ñf(Æ>QVía.‰ 1·ä÷«0F‚v8å´Æ_:å”C v¨7»¾ur; Ô%{§äéNšLnŒ·ëRÜM¹¤(ù†ÓÇ\|’n$2ÃÞ³õÅG[þg|o>‚³µK¯'mˆ;¤#27¡ª7÷"2-å±—>•5² W¯ÍƒQØAö›”SÊ–æ’Æ?:tÏ#5oTœÛióʽQ0>¤â·uiþ˦O*pUp?ŠÒÔ§û6Ÿ,‹ÁP®wÃÈójS“µ’}ø®_Eï‹°ãiÉúÖ‡™.ZVèPƒ[R°’P±žÀÂç>õná–k‘FpïWf>lûSžÜTÉnÁ”…SîîõúU«M>Q"I倫÷KñÏ­OmfáÕöíÂMƒ3+¾ì§¡¡Üå>ð£ïv4»ó$…Û…ïPópTeäÇ^˜ H÷²‘󼇑è*$cæf9oj£¨Úyç÷lSŽZ¯}ldl¡*¯}o½²À¨`¶òd ä3ÍE¾ÆŽ8ëL‚ „à`æ’;èå˜Â‰€rzýìR­ÒJÅp>÷=Í r’¹E^Ÿ6=jÓ»caóžH,Ÿ(GÌy TÎaÞêGò¦DD››ºñô¦DÛnã¥50AcÛ­:$% Ãûw©NÆ#<íÞœ«ò±õþT„)eÀ8¤Âî¹àP‹€r}ûPª1…9>†€?»ÏµW¹ŒIq#** Ð<ê;ÅA*‡AP£5q®Ï—ä¤{Bp¼Õ×»!FT Œշ¹ÊlUÆDyãPprßEÇ^ÔŒFÖÀæ‘’iKsõ¬›[weº—$œ~¦³¬íÞA%Ä™,Z¶¬þ[‚¡xD¿Š¶ô@ÔŠDki›D’*€*§‰¤TÓ e€fa€ˆi|Q"¦˜c.»‚¨¨üJÃû7ËÈ î* :ØCkJ0]Asýìô¬Hª,IÆGÍî{Vu¼{cXcàqŸzÓ4ÂGWnŸJ×±·hÓtc•êÌ8úV¥´L‰¹Èþ#JÒÃ;?ÝÈ4û›¯ÜŸ™Ì‡å'? uÄÿ¹ 1,x'Tñ¨àg·$ŠÏ.1בÉ5OÊ u¦;fHÔ9©bh”‚H¹ó}kîàÉy! ÊÈP dÜÎÍpÿ1¬™îÜ6ã=*Ý̤i˜p|Æ9ÏóýjÌÒÄ¿kgÌcŸÂ¬ÜK‹Îw“PèPù—M!#lK¿£Ñáó'iIÂÄ»ª-"]å?v5«PÜG,Ìá·0Ëô54s,’–Ý–åŽzJ±‰#–ÏáR&ÕP(ÉÅ=Uq€29Å9@ä/ u§ÊåHS÷WŒSår0Ýô§ÈÄ6LTcðxôÅFÏŽž”ÐFí½8¡› aC¶@ç½ Û[pô¤X†#)¼1ÝÞ›Á;ûâ”ÿYPzúÒŸâä õ4xð£ÔÓcÚÍû½©k†ÝíH˜$á³K”÷ Ž ùM àzÿZJ;R€N9Á¥È sŠP2 C×ö¦°ìi 78©;cúÒv©ôÛ05¸#ÍŸ¡©ô«M÷í. 9úSô»L]<¤g浌ž\HÅn™…½¬aŠØó<¨5Z¹”Éd°=ûV}›'úA—@Ü[<çµS¶+²bݹ-žý©Ë ÿZ¸ëÏ)ÊŽ&ÏÁ•qמ:S”0›l¸O›9ôéJѥ̎Á³"¶Ó´ôù#KÙdt`e/°àãô¯Ü»‚§ÓÐÇlen­Y7vÿmÕYÆ"uɬ}JAw©¼²µ@ ¹¬›Ò·Z‹M!;W„£J\`…8{b¦´ˆ4èw…9éV-¢e;€ïøUÀ€äžqšÞDÀåºã=O­l*FFÉÇJ‚éuÊH¬Í^A%ÂÂI8õªƒ‡œ(9TÀõ¨B„Ë·_ëU 7;0RûOÖ¡ˆ$p¹ÁªóI‰U”ç<Ó$“÷ÊÊA-Î)¬ù˜xnj¥í½¢]»¸Þä‚@éPß[ÛÅtù>aÈ$ƒ5^êÞîIÎöÎxíOÔmÍÅ”ˆúTº„ -…¼»vü*]FÜËi ±pEA m6dAó8Û»j¼cÈÓæU.vî¨U<>E^¯Þ Òxœd 9éPé¸ó±·p#j7ïyæ´Yy@ãøÏsWYycâ>µuUˆùÅQÜj6$ç ŠŒäç ŒSñºRG$òÓ2–’ïùiš$ڈĞ}1D…U'‘Û>NOJ….mÝö:8#œç?¥D“@Í´««zæ£I¢c‚M˜aÀc½6Eùð8ÙÏŽÆ«!*r;Õ ’¬v5 1R=ëA—å$p3žõhŒ¯×5i‡ìž´.7aiF3×µÐP¹äŽ>jUCùàyyc[ÑyDÅÐûÒL# ótu¦jPˆ–à 2ó`svàTPG½T6~c¸Õ[(LŒˆKÍœJ†Ö2Ŷri×e„±)áúîý]™.aRx¼îéK¨¹Yã\ê3¸RÁM*6Ò®œw©4µŠYƒ`‡Uç%Š£Ë»`9ÅV}Ëq(Î]˜ƒôª7……Ü«¸±g9?S¸'ÏuÜrO5-ßËd0À±9ÀúTÚŽØ´ÈT6çfÎn*[ì%œ(YŸ8©5'0i®#8p /×8þµoWÚéf(ÎÀ=XÕ$0X²Fpqüª½ºˆ‘K9U –aëX°„RØ…'k.PrÇŸz’ÛÌ%±s»†l*õ„SH¼Æ Ã?¹h’– G¸ƒÃJ´Êbð =N9~\Ú«mÚÌãæÀäU¹?pzãµE "3Ï!<:úêµ´QBe»¸ÆÜ`{š†$Ž%ĸÁæ Ÿ0±$ùLyJ̉ò$fÉ>Y?N•B6ù$'$ìÏÒ£ GÊG;x©áÉ^3R…G¼ŽvŒVtQù×ËdÈý€ôúÕh£ó§-!Â'Ìíý*¼q‰&/)"4åÚ´!¹Šÿ!Ųœõ8­n£Ô@-"à÷®Çqá ÒÁà÷ªæUki#?s%°:†ªžvëi#$˜ò\öª·™¾CÊ‚X}j=.5|ÄtàStèÕIˆç‘I`Š‘¼˜äÔsO2¦Õ—h<⢖iUJ‡À'8¨æ–ERªØïV~w‚)Jð@=ø«cR•À uïÅX ”G=t¤-Çð÷¤'h)3ØTWLQnG\zÔW UA<ÔW QA5Gc#(˹áqU@2²ív<U‚rqй:õN̈Ḗ=Øò±Þ5B²)Þ<íÚ‘êjœ'dq“íJA•FîI©¬‚Úo/Ì‘º{ šÍ–ÕXù{äoåSZ•¶ ¹Û½d8r;šŽêh„ÂÞ1ʘûÕ´‹ÐùsRCªG/nŸ—5,Q («1–umÜ8­ËrÓÀÂO”²àVœe¥„îಚ͋L³2J¡^§ÔÖ4zu¢K4›È(;ôÍfÇcl’K(<¯O­N‘Õ. Œ:]ØÁ Àõ¨ÙLÌHûÛx© …Œ$ÈvŒô«¶6nm„’ƒž [¶¶o!^C€;ÎÔ¤ÙdáO.äpzŠÏ¿“e›…#ælpzŠ¥)KL!å›tVÿnÑŒs1ócƒÜzUˆíÅö…‰ùÐdçÐT­¼ÑÆò|ȆséI[Ãb¶kϘAcîyæ£Szp³—e$Òb´£ûÛ‰ª——-4ë`"cƒTîçi§X×Aª·´· ƒ…\ ³,ëȉ ¤þ,É« .Í‘tÉëÿê« R±œ(?΢"X0Î3šn,]HÏ­4%HúÔi&òwdƒMWÞI99¦«î'99ª$yr²8êxâªcd…[׊©­µ»ž*ä9cæ•f,Œwôö«Qg uôö©U% XéRª¢>âÀ¿LSÐ"°lå©»ÕÛqR¬O4ÂêìX©V'zipì[cÒ‘2 ci#b &‘ 'éR3q’qǯZ‘ˆêzb¤cëÓÓŒ€ŠyÖÛÀƒMb )²ÀÇÖ›'`GÙ;8¤ŒžXvâ’>…‡Ò„îE$Ê6ŒŽôL¿)=i%zÓn&ûv¢àqGqMÔ.åó”$BÜzÔW—j»r¹òÁù}Å^Ó´ÀnÅô›ƒc*§¢ö¥jèš^Û…¼”6våŽz~•¥¥iÂ;µHí¸Pz-O$¥äš%Ü·¨¨.®Ù¦º‚,’S–Æ:TW Í41ð¬üŸQéAΞ=*‘¤d…Fj8£ic8æŽv1qŒà1~•eò±²¿VÀlu©Ü…_øÍSdØÄ…Æ1ŽÃš\«þíØ…î=h$6UÏH¤€“s`méŸÒ§Ó#ó.GÀØ þ•5Œ{äw 3\ÿ• ×eÜ„ìTöêy¬+ˆ¥S›*Cb=:Ö#E*jr†Rö öë]BD<”VÉÀÍu–ö‘5œ1œà þ5ÓG#\g«_Ê#U‰3æãøEUÕ®E¼Kyàr¿Â*¾¡8ˆ£?¼=ÇaY—«<7 "cAµ‡cÞ°® ¢`Ù €m#µdÊe‡?4x楶Ôh‘l˜¹P¢¬Av²DŠ„¬¤ô<7*ñ FÛ!éV »Åºgb¿Ý5342»0ì§½JÌÍ.ÌAèµÐ ¬a|ã9Å2XÀUB„ëÍ2XDÞ^U{뢈m`ÈR?xÝÍ2îð¤mk q½½}ª;›–T6ñ|«üdwª0»íl–ž•JÂF2‘wÈm¾ÕVÂFbÍ"çaÎ=ª5˜¶yÉÏGµHò³–'IɵJ]‰nù9 R€U†î_®;(ÿ*A'-ÔûR€T‚NO_¥0üÊ àg )§ àv´Â2?…9IØd$á@ûö§rÉ“´t>ôá›û)$o3œäc夗$õâ‘Îüž£µWۆÃ5ߘ«‚£ÛÉtU˜cÚ`r犲‘ˆ­rÀåÏ:Dzß$š… !Éê*58CïLS„>ôƒÁhÎsŠ=qU.~L÷5Z““U®ÁïKdKÍ2ïÚ–Ó-!8ÈÇåKk–|õéVŸ'híV\U{U—䨤 ÉôÜóíҚ͚¿å™>Qò®y&¬ù-3ŽŠ¹êjÇ”ÒÈ A=MMs"¹òÔ€†lrxè*Ϋx²bHDQµÈxû£Ú¥Ô.C·— †8äÔ6ñy÷xV;bÅUÒ­Zêô8X¾cïPi¶Æk¯1xXø©o&Žxä·(ÿ#å{T¿‚x$¶ æ¶~o@jΡy°<*7y&™§Â<Åùqåò}{U}Û}À—üÄú“Qéùq *wõ©nY˜H`À¥Ôäwy†Ð„aAëïO½vw`Üa…­DX‘§­Uc¼Ë±H „AèW$ÊjãyTÖâ8¶« Òç ŠÑÓã¶„,o‡Ÿ;p£îÕëE†0¨pdèp:SîrnF;»ž”jÙ"8 N|Ç< n ~O(«ýãQM*Go°3¹'o<~URâö°0FÒHÍ…Ë mÇ¥C=Ükmå!gf#“P^LaÓ¦—Ke?Åš‚bÑé­+.ß0•çøª †htòäm/À©hÈb‰çUÝ$¿"ý*¥‘hãfEÌ’ñ»Ò«YîHÈA—“½iØ€pg+sÒ´’3*®ß´2ƒrR´U|pe8%½* ÅfâFXn$U{Ì™™œä¶š­r3)ÜrOZʺx/%U”cù7ƒ÷Ôvªw%Ì«æ¯ÎŸ! ýð*¤Æ;©”È>eàŸïUËå{„·쀵nüÉt–ñ…ùcU«Ý÷„b›>U±6ùŽyÏjŠ8¶@vùŒyÏjHâÙpºÓ$™-•ˆëƒœÓ$•mÆ2¬G¡Ï5³áÇ¡¤³g¹‚I¤8Ãj[mÓ@Ò¿1Åû¥·2¿qǽHÊí´”Jw6ÓÐSŽI¥)\€€ažjM¹q…NI4ìdÆy&•FN:jÉô¢œà=©†5órIJ›° rrW°´Í¡dÜrGo­9äy[“´/þTI,“6IÀ^¥gi[“Àè``ÇÐÑŒp9õö£‡4( o­*¨éÎzñJ{ƒPÜ@%Ï¿¥C4[Ço©¨¥ˆH0:ÒÀB’ÌO'¶)aÛ!rI<·j!Ú‹…䞦žÌ>c’)ÌGÌsŠs‘ƒÎ)ɌˌýiÀ;/_­8„ô­I2¡Aòü¹=ªýôãíÞÙîþ\žÕjêpfháO¹òçéÖ `ÒÉY* =*’F×QÄXq¹¿ ¬‘™î|²Bñ’ÞÕ)$b8Ü•<îÇÚ®Ir°Û‹kv‘†—»Õ™&Ä ‡€z°þ*§u*ÛD&»“Ë Äiù¹ªrıAö‹§òƒdDˆ2[ÜÕYbXâ\9Bç ëõ­KtX-•KtlõÏZèm£ŠÆÀ.Gî×-ëë[Q„¶µÆxUϽUlȯ·©ÇOZÂbÓ– gqžk(æRH$ô÷©0•±ËOj»h” !vþUe2ªTp{šE`’çi*£å´Z:ÅrX©*ƒ ïE³*J[ŠmÌ„²–铸U]ZäÍ*zzvªÚ”æITÊ#i ØO³³D…nî ˆû.2MIkl± ¹˜ŒvKRF¼UTbØòOÝÚªj®›ï¬N <ôª· ÏÁl©éžÕjÝ#·‡ÈŒîò‡×5=¨UB‰óÅOo€˜Q’ƒìb[ŒÔÁ6nwùj\mÜÍÅ@Á^-ò!Ç'½A±^,v‚ ïP” díÏsÞ©Zi¨nYå• iÏj=rÓJžZzj+ Ó•×bûÕ™ß+`ª³cð©ç •Š0B“úTòH<õDàþÕNòè#¿–@~™5Rîà+¶Â7U[©Â–ØFáëY±Ç-ܬ7RÕEîd98Ç$Õ®d9?(å]iŒvâ(×d)Øu'ëVÞ}ª(Ûô¾õu§+@6Æ¿­Ie#J¸‘·îŸnôûg2#dã©-ÜÉO®*q"®TääôêU‘S†çž•"º”óéRȬ6Ñ·ˆ©e•ãåÇnÔù”ÛÆ;u¨IùãÖ fʧãQ÷M*ªpFãúR© §ÜiFxûÆŽãߟ­/B;çë@뎔«!ÝÆ}iÊü8Ï­9_'hŽ9Àõ=)Œ¿1Æ©×QÎx½A Ê}²(ÕHF`¤7|÷¨í¥ŒÝÅ+¤Ÿ~õ¼ˆn£Œ}Öãÿ¯K3,LæF<©$"2åÏF j„Ü\ô$L†|º‚1ž3ü©±M—Á”‘Ê mÇZÙhͼ*|Ð9sÙ«Fâ²A¸È|âÙp}êìÑ}ž%;¾|åÿa™Rè»!f ÀZ)‚];•,Bô^TM#-Æ0)±HªÂ5M›qû´øC( €‹’3Ò¥…€?wþÍ–÷QŽîä%TmŒséVâÒæ¼¿Šêì ¨(ƒ¯ÒŸ-Æ ·7'÷h ¢{Ö…ÙEM¼nsì*ζɨEi[®{UYÖ;pƒ‚íUâÝå®8ÍfZ1©QÔã5NÛ~Ô `žõ#¾×##'§ji%"R >‚¤iò2jE >r;qW"T<Æ8ùjÊ(Q¸Ž¢ Ÿ%“8¬›çýþ8ù9¬ËæÌÇýš’Ûäµ™÷4‡ÌsÏõqs§Àòò0UÂDV°ï;œøö5 “)„ €o'û«U®fCj CÀþêÕ{™ìê|ÍÈúRØçtÏÎ@üj} OúD§øT(ÿxóRèêLsHz…Í:Q¶)89AŸÖ¤» °ÉÁÊ ŸÎ¤¹À…¿ÙÅbjÍ,…aŠ·aX×Ï$…BäƒØVMô’HÊ©“žÂ§‰“LÓÔMóÜHr«žŸZµ.e™Féä …?ÃV–ÂÌ é›=)mk…iXs’)¶¦Y›’FGNæIU¥=Oz†[DyCK(É8Ú¼š…ípÒI’qÂòzÔ2Z‡”qÏaÔÓ®m­ö 7m9ëOš1SæÛïO•D0ƒ=ꪚBYÎ>aUÐ4¬B©aŽ@¨ZWà‚´& ‡ï[Ú®$F(¶dî·µ\Xü¨Âç‘úS#Lʲ*’ˆÐùªê U84‘®&  UÙ¤ åaWg•cåj¹4b*ycU‰ýßÍÉÝœU3÷9ä–éU?IëšO™†HäÒdœu£9ŠŒº€I ŸcÖšYpKùÓIP7Ò‚¥£dwõ¥vo »Òñ€ÙÈ©çQÁ Š{üÀ |¤S˜oã±A‘üå 0C §µÅÂc‚`ÕM­ö„Ç0Á©¯òÅÂöš’óæfž˜÷©/9ß1øÕX7K*„\1#Нi%P‹É5^ Ë Ojéncf#ÁË·ÌXsô¿ª¦Ûx£Ãov˳u㌠ÚÔļ†fË׎*œ—^LÍ2í˜F¹õ¬¤”¬…€_œ…¬èä*ý—Ì8Ôv,eÔåƒÎïÞ?l‚¬éQ™õ‡Ôs#vÀè*}4y—²F9U9v5¹Ç«¨àAÐVï§·J¡««Èqâ±|N@ŠØg{~—¯#ƒŸ›qâ™o.ÉÖŒܬzg½R±—l©   †cŒõ ¤¸p™ÀQÆ–eIe’Ç={TÆ%žäg-“ÁìjO,Kp ÉÉê*Ü ) *ö¡ˆŽÄ(^*ÕßÉò€Q—RññÇZÁ´’¿ÄqÇZÇ“3I´ î8ÅO(²¨¦w5zèJó,E6yh¸Å[¹ß$ÛJàªm˜(S·þYý=é’F²ˆÕNß—f{ûÑ$k+ S€xÿ‘£„¤IÀÎ ïWâsmhñB˜T$ç¹5f6òm¶F6…Ï'½@Û„x-÷ŽO?¥gÊ[nÒÝNãþVFb6nêrj8¯ Žb…“q7N´¶·ÀûLjdÜyn˜¢ÚêÜ.Ð^³n ’çQ•ä<)àöJê9./åiFëÚ©OÏxåñÇJœ·•T"\dÔ„ùqáA ½Fqš˜Ÿ.<.p´è UóYýÀ:ãÖ–BùŒ 9è==éaÊ®öQ¼ôžô ”Þ3ÓÔÓʇJîÍ< q´®ìŸÖ’âQl¾TJú¹^ƒÿ¯MšQòã_øˆè?úôÉ$XFÈÀ ÜŠ§;îpä±=ûÕXÙßæÜI'óªÑ3¶$äÖ›HTü sÒ´L…xUòåNã5cÓÖ¢˜n=*6ËlÒ–ÈÜAÈ™$n ä HÏñ•†ÛÍ5ÜÓ\=*’0FrqÇj‹’0FsÇÒ¢ëÇ\Ò a åIÇZQ7h ät§ y›Aêµ:òzf¦ûÀZ—;°=iGš ÷ÏZkmó`ŒwÍ4€$ ‚1Þ¡œrqÓ­G0äûÔr޾õ-” ™¦ ÐT¶¬Je”à‘À©-")–B=+ÿÙÿØÿÀððÿÚ ?È,ÒÛ¸?yHÇÒ¹üîBOQYEÌ“üJjɉ&°-´’0Iõ?”Ô¶Óòž¢­4+-¨!y ‚j¤Ð˜'~@ä…DÀÆûsÓ§½Wehe1ÂÕûu…€ŠèÎAOz»j`.Vu$žœÕûo ³ƒ“ƒÖ¥ž•f’Ô± 銜ÛG¶G·,zíúb¥xTDï 9⣑ÄVëðd8뚈Ëå*)?yw~tà EU'¾oÄñLY&vë(þñ ?”\-Ú3÷ “É ¢”xÓwÉpZYrF3×§¥Wfy‰w$ûgò¨ ¼¹‘òAè+FHÈ!yÇj»nc‰1È^qW¡hãŒèëSÚ§ŸºI0¨Z³h‚vg“:…©­—Ì%›…ê­LÀõ*Äv⥠…ÉŽ€cŠ“iÀã#°ÅQ¹!§@#æ Aö5Bå”̘n¥T™”Θ?…2ã+ªÛ–PF'=©n”¦«8ä$óíDãn©aÖ2MhÚ®TÎrqZVqîÙÁ%Ï8«Öê.wUâ«M…ÀïŠÖ(ÄÛWŒsмUcC´qÞ«d÷wJ¤v’ ]ÉÜU~¸ÊäT76íäÌð¨1˜Û žG Å›²ÈöàÙ*O#ŠŠ{v)!ˆ…NA=8¬¿ ¶o%^ÞXãñ›áBMÔËÛ`$~ Vo†ŸsJ½¶?ZׯréZ7VžF\réõ­)mü¼0éD ÏAšKf¸ã楀ã§Õøþî{V´_s5uª:ÔKxØñ°Öoˆ`Ú£àlUb$±þŠƒJq Ôl>æ_ÄU}UO»‰ùÙ—üÅE¦È#±¸‰¹Ø Sðͱ7²ÊýcQîj·…m÷^M+õ@SU|;ûDò«ÐWIÔ×Lk~ªXô&‘˜"–c€M‚‚Ç ä×"s>¢‘±Ü“ÜÞãuqñÿ¤j©¤×$°õù«˜3_¤m÷$‰¼Õzl^T ±( >£5cÄS}ä¯ÝT(úŒÔÚÔ¸ºòW¤`ZšÓG¸ž%3ÊUÈQVlôiæ†3<Œt\à`ÔöÚT³F†i/\gc\Ž+M¢åÀ}{Õ,vš+Å Õ~½ÿ¥K¬$vº;Gs*ýyÍsg(Øf¹1×ÌW+ÐÑÑe¼¶Ì@&}kOF™Wη|•qÏcZº<£dÖìA¼gµZ½Ó%lyjI<äº3S]é’»¶{÷EX»±v ª’ ê;U#nþL¬Ù"þ*¥ä0‰ÈᓽShÊf^8Í:(·SÈp}0jkyäŠÜeN6ã?Z–$ŽÈ8Û‚G½Gv©¿xbr9QÝ2¤uÛÍErFàsŸ—ššÒÜLyŒ¬2ïïI f~¨Dj3õ§ÃŸª‰Î).ä@T#oáM×(#›pà´cšÈZ+tÏ wHA1ĽCãÖ†+ õœU±¨m–8e]–Áp_Šõ|Øá”lˆ¶ ßZ¹ây±Ç&Q±»µiEgk•ƒá—Ù¨²ÿy1ÿ Çð»mÔåQÝó‹áÆÛ{:z¯þÌ+ª7GŒWMu™1šèæ]ñâ©ù[B [5Kìæ6Hä¾j¸‹k ÿj¯òŒVàŒU°0:U{ÈüÈ€ô5SR̄ñ7ÆcJ^Þ¼ep¹öó`rÊÜ»XV;ï‰ÉQ…uÁ¥ðõÂÿiOMÊü* Î>ß4}7®GáRh†»:t=ë¥=ksÖªêrˆtÛ‡ôBÖªj²y:eËÈ@úš­©H"Óî$=\Å f¾Ó£ïœýI$þ˜®oKßQ³XúªùøŸÿU`éèÍhª~dŒ³ýMIâe ©6Þ@Oæi|SƨH=PRx„Ô Ï'WOhÌÖ°;ýâŠO×ÕÁŸ&2ývŒþUÓE““×Ïj³M{4ð•mO#Û=•sZ¬ó_K^jœ±Kqvb‹'qȪ­ËsåF Ȫ­’ܘPÎEiAd–î_žN.zUø,Ön_øW5zU‡æ“–è£Ò£‡OŽô`œİ½èµÓÅómkg$^ôØtñvvîÁÝÈ÷ïEî-ŠyöR·ËÕsV/t©ôèüë)Y‘OÜÍ>îÂ}=|ë9”òǽ[±¸Y·l¬ÐýáVíe‹]·O3+,'$U»i#Õ­ÕÎD‘0¨.àxKÆÃ}«>êÝí¦*ÝU¸Ç¥Uš&‚Sž6°Á«NŸgnéÖ­Ã*ƒ‚­YŠAåîϧdiQ¼µÜØ©Œo2·”¥˜Š”«H­±sREh `L¡‚öj+dQ?!„T©l ¨“¢öµш¯UP€¬3Œôª÷/§²géQÉŽàû¥IÅsúKõ“øW'?ð!X:LžF¥,½—wó¬=)„W×2zd~µÕÚJfwf®²Îo>Ç£WKm'™zÔ7å‘­ÙwÎ2=±L¹ÊÜÀzäŸÂ™1"â"sŸÂ­£n@p~†¬ƒÅN§ŠV]˶‘Ð:=éAB~•·ˆ¡GPr{Ô_d„¦×PO­GöxÊm` s60›ù@à£þ`ö®gN…­|FbSŽWê+OŒÁ¯:¬Gàk«=k­nµÒ+3Äm·Ip?‰Ô~¹¬Ÿ>Í%—ûò(þ¿Ò³|@Át¹û̪YþPn.'|mE öÿ8ªÞQ¶êåùjƒìÿª«x|qsq ÏÌ?N+2éšûQÏS4ƒhÿg8!kýUù¼Éqøf³Ø›ÍV,ó¾LãØíp¨£ Uü+¶rxšê²A<+œ·É¬Ü]0Ä;X6;€8®fÚmúÍÍà DÈÙ÷ V»îÔn¦oõL§wàeç$ãªõ¬:æH9cš '½$CæÕ ä«ûCXã«ÜHR¹?5Cq0I™7˜Ó·™&aòÆ6 þñ¦¦tŒ¼( zja‹9^ )òFY¶¯—“K*åÊŽàf"üåTõ5<2ˆÎõr1ô©¡—ÊrÊ>b0*X¥ØÅ—ï·d¸Ž?1›2æ­çl{ٲ繫%¶&ò~cÞ®é1•‰¤Æ7æ´ôHvÄÒã—=jþ™ÈKõÜjñéÈÎ{V¡‚Èô«d~†¹ÙØéâÊîfêG¥sR“£k¡ÀÿG›ƒô5† ÒõŒ!ŸƒZÚœAáónõü«OYƒÌ„LƒqHôÅ_ÔáÝð7`sŠÈ¶O´G"žkÝ êê§jž¦³à_9YT3W,®¾Ëu$r®FÖ­ 6è[ÜKo'BFÓëW,'òäxŸ©n kƒt­r†´AV^¯/’åÏðÇYZÔ¾K‰OðÆj†§/“ûÏî¡ÇçXúnņ囂Êç¹ÎM`X¨û=Þ¥@\úçšÆ²@¶Ó°ã žüf·t7¦¨þ JšétY4¸Øv$ÞÒœ=„n=óW%gíÀ«s]ŽýŽY“h`[è)ãµJ~ÔîÜQEc4Q\ö²ŸeÕ’ìeCr?•s:Ðû²—jx`þuƒ©k« €x` ®I¿fPk¥F¸î Öörù¬Oɘ"„ÄšÀñ\à¤0œ1,+Ärü‘Eœ€Ùj«e#A¥]0ÿ¨l¤htR€àÌíÏáQ[3E¤yxǘXõ4ÍÜM¬NVÏãÒ£ðü]aœž!\þ=)º,]RYsÄC¶u«Ÿ&ÝbSóÌqøV¶½wå[ˆTüòž~•§ªÜyqÁùž±näkm4§yŸhÇR£¯ëXw,ÖÚiçç™ÊŒuÚ:þµvÍž~üÎWꢩ*ciõZÌÇ9¬¼r(ØsØ}hÅsMk§•sž:Óã$0#­\[‡…â`ð õ«qÜ<.¬ƒ¦¯ErÑ0e ©o®Ô±Ìà.Ðq÷Žjkû…¹òäePc§SO½•'d”€»:u5¾½¾ì’× Xzð*¼[|¨ ÉÝ)&¢·*!µ-üNŪlã|½ØäŸZw]òcŽM?¬ÝØœÑ …ZX”pÍŠXÔ¹ŽUIn²åƒµ“–rrvæ«Éu¹ÉÝÆx®£Hs&ž„ŒW[¡;>œ„ŒsÖº]5ËÙ¡#йZjªj–+hѾ9CïTõKÔ- YÃŽPûÕMJÉo­ŠtuåME¢\™í q4cj‹D¹3Ù›y—÷Ð-××)º]Á¹µòäÍåpj6·{Wc·(Ù ŽÕV[W´™Ø ÄÇ+ŽÕ [µ¼…ùåHªòÿ©fdn¼>:Uiw,.åƒøéPL‰¤(r:6*]RWS͇‚{Õ­UYÃpØqКŸKÔXÌr0'¯Ö¡½ ©m$T…o|T:‹%þ ± v“ëQ^2ÝÞ…Î"^¾ôËÛIÊÖ£1¸èjÛ'S+Z‚b*zŽîÑÓÌ6üÆB±hRÉop!l˜“z_ÜKot-ÛîHIüitiž?*Ù8®”7QŸé]¢°†yÍm2:r(t  cµ-´QE—â8 ÚqÚ2ÈsšÇñ<>n¼/Ì×Ú³5ø<Û5`2U†Oµ]¶‘!' ±Wô­'ˆ,pù¶€áWã• TŸþµsþ"‰Æ¡¸Ÿ¾Ñ\׉buÔKàÕÏëñºßn'!†TTÂ&µŠ$Î0Gõ4ôS,1ED\L«ºã_ºˆ1øsRøZ7innà×úÕŸ Fìבò±Çõþµ/‡#}³Èz;qUµ9eŸR‚8ATõ9å¹Ô·À;PU{ékàØà(¢ö#u­ZÚwÌŸÒŸ4_iÖlíecUÜ=úš$ˆ\kvöýR%ù‡ëTÐrÝ6ðA¬ZÉ#­Fß{u'zgCK·$Ô£ƒšzpA÷©Ô€UO+ž•:0áOJµò✥d-00Á§¡ 7LÓЬ «vÿÞcM½"8–ûÝ\Õ8`k‰Rg5^Zât…KÕh k‰Ò%êÕÛ[Ä ·HÇð€ w6 {dŒuf»"òaXÇ`3RTÕ%9¢ŠÁ¸ceâE˜«˜aÇáþ"°.äû‰aÄrœ~;}‹_YÎñïŠÞV Ôðku^0êx<Ö²²ã³u»¨ÒÑâ.X.+/^½,ÞÀ¹aÒ³õ‹¤KVHÜH®|FÒíQÃFv†õ®h+8P ¹¬­!M£iC´°©í<Ë‹ô¶CÛæ#Ò§±Yn¯c·CŸïéV,ZK‹Á Ÿ»Ô×NbU…”ØÍuï­»Æðã5ÑÈ€Bê:•üëŸhŽíêv²“ŒW0ÑLˆJ²“ŠÄ1K©Ã Öý©skå¶òk§´,mbf9bƒ&¶àÜaBÇ'-KRQE£ž”QÖ«ßÏm¼‹pãH ÕMFkxí]'a‚½*½ì°¤²0æ¨i@ÝÜý¨çdyÛž™«QòËüÉ5KÄ®dÕ‘ªÆæMS×\ɪ$iÕP3V–'±Òæikì!sêEL±=†™+È6±BqSk]:V“†(@ÏÒ¢±¾û.Ÿ ½¸Üänf=ª;=GìštP[Œ¹™©¶×‚ÞÆ("6Ü“õ¦Ø+=Ã]ÌÀªä/Ö¢³ ҵ̇'¹¦ZiyG;ET·ºòon/_–!‚Bxò¥à·¹¸¼<¹R#„œ!U­n¾Ï=ÍÙ?3.ÕöÏÿª¢P */EQê1TXríHSœöÅ!Ò´Õ?)^éÍùRÇÒ¤ à‘FqÚ§A¸ŽÔÅ]ÎsÍaO=éT³×9¨Ã³‹ü<“LÜIãšs3`z»iå§ï§çoAVm|´>l£8ä-\¶ØƒÍtä £4­<Í!±éU¤Í#9îyªRIçHÌz1éíZÞµ2]½É,cjÿ½Þ¶ü/j^éî˜|±«õï[·-4—,8Qµ~½ë£ÈÉõÅt Œ•;Vè œÍRÑE™¬FL°Ha'Þ±üCͼ¡F¹#­fk1’a| +Õ9¯ÚÞÑ!RƒšÎ“S’d…[îäæªK¨d„±™ÿëU½>'ù³gÌrI=¢0ˆ<Ÿ}‰8«5j¬QÆ9ãëHHPK0‚vŒ·JÊÖ/#òB§Î:–ì=«ÄÑ5¸Š3¼“’GjÊÖn£òjwdäŸJæW™ò}p=«—gi'è+›ówòp*ó\ùXXÁT ©«ŸhÙ…N ¾×>Tá@ã5_Íiâ"FùÊÔ 3H˜r0EW3£ùÈœַ…áWyî‰Ë”cÍnxRÜ>äòÊv/°­o @<¹.Þ'`ú è+¢­ÁÖ°õÝ©Gl½dgè9®vó÷šÊ[â”ôÖ<¬_TŽWÜß…nð;+¢à{bµÆ1ìDÈeR°¨%G[`펴ÇVt?ÃéYïisq ÉÂ/“YX^]IÎB/“Yïkqq ÎBŽõfÎÀZ¹•Žæ+Š¿§i¢ÎF•›s•éVlì…³ ËW1š¿Ö­ûÖN©yñ!û®3XZÅþíÐÆxWæ²õ¾ )èÜÕS1°ÐÉOõ— BcUÖsa a8–áˆú®Òµ–Œ¨Ÿëfè>µ—)û$+rî>:ŸjÌrm£X—p ûçµgHMº­ºrîrEtZUŒvVžtÃ÷›w1=…tšN•§Ú.ï1¸“ØVöŸf––þl£æqÏjçõ[ã}r̹ƒï\î¯|o®™Ôü€à ÁÕoÝÁØx«•ÂýÞZ©• …ôª¬»@_N´õ*p7ÏjpÚF ïÍH»NÜžE:Tò1ù}é]Ãg†éI*`«Ãt§”Ú¨ÙÁSšiÁ¦²í ÒÇ&Ö$àÿJr6 :'Á9¤’Là°â”e_$d ‘~Wù†E^´º±†Þ_6%ÎxÏ5¡ise¬‚XT¾}jõ´öilÅ㳎k:öí'}°F#{zÖ}ÔÉ,ŸºM‰éY×s¤Òb% €®r;⢣žÕ¯c)¼d·=ÝYû œV®›!ºš(¡u$ûÀ­{ Ì‘F¼ ÷Á®”ŽÃè+®#œc…t㡸!…Üvö÷¨.®£·…ܰ,½ª)®‹d½«&óSgÚ¤`v¬+ý]¥Âã²®õ-ÿ(ô¬YL÷²¬î`3YžöQ A›•’þ}ô‚(*+N-2 65Û‚ä|©Zk¤Å§Â%¼ ùPu­Ó!Óáó.$ñÂûÖEܾt§iàžcÎûäb:•‘u'›)Áàÿ*–(YâDQÉ8§G:…É8⥊tD“]é’ZE–r•F ÷æºxôÙ¬àIläÛ ºözè#²’Ò5ks‚+ëSÚjAÝ¢¹ŒÃ2Œzê*Ŷ¨’Žá 3 É¡úTð_#äJ<¹dƒÞ²´Æ7þ!’àˆ*ÊјÞëÓ]uT›¤±¹Õn.*£h®Œ×HkpRE”ÙæBò¹ÀQQÜN¶ð<®p«LšA LçŒUXïƒDdŸÎ)l¬cï7ZSœàu4÷É`£©©dA’;g8õ§º¨bHã?JêÓu6V œœãîxŒw.áL‘·'¯÷}ªHrT¡<šjún2 šsF$NμR•r:ŠB ŒŽ¢£F–=À©#€°sJÀ#­BÊK)q€y¦ãŸ›ŠŒ °Üp:ÓË}ÞÔ‡úRq“éN19îH§uSëO º3ëš³kpaÁ{±÷©mçh8`x>õfÖàÃ÷~õlnyq¨|#­mH‘*6 c­jgj?{B{ØÏÜrÛºŠÍžð1ÈrÛ¹5F{Å9 û³ÉNY$‘îÜUݰ{žT’Ig»t­;KÈô»% i©ÿر¿K³P±‘ºµjÛ]ŦÚTV¬»Ë¹nç/+dž ¬«ÛÉog2HßAéYwwr]Ì^B}…CïÔ÷ªè»œÁ¨"S$€ƺ->Ë”øÀ]§ë]—§´„`.Ãõ®†ÂÌ—Èáq[}ø®Œõö­jÀñ4Ê­ Ä€cþÍsž)•áTâM¥›ýÓÅaøŠAÆï€Xý1ŠŸÃVÆ+&™† §#éVü5j`²30ù¥9ü*΃na² GÌç5¯[§Jh¢±uIþÛp–±7îÓ™ô¬^àß\¥¬-û´æCý+'Q˜ÝL°'Ü_¿ïM¸’%„å×hÀÆj “ÇËŒ S%(e†8â©ß™n-MÑùaVÚ¢ªß,ÓZý¥þX•°¢ª_,²[ùìq YâGH˜¼Æ³÷²¡©ª;ÝcÀêjÍpL¤Ž„Õí7Jžç2m8Í]Ó´ÙgB1ï]•¤vpœV5ÓXZGcoƒ€z»VõµºZÅÐ95Ìj³}²ýŸp1OA\®­rnï]ó•ÕÎj“›‹¶|ü«ÓðªÑüÌY¸UëTד“ÐsUæ$ž‚Ÿ ~ÐÜ»"ûT‘ü¿9ûÄà{TŒ~ðòÌxÔâ¡ …Èãžô§  §0?÷A¨Ì¥ ;µD *GÝ'n:/ó©áBÈî9AþtõRT¹êz ˜)d/Ðî¡Ø†Êãßšk{u¨[¯;ÐdYT–8¤,`ÐHaH"\©ÎQ©6ç” £•6οґÆÓMuÇ‘¡ßVR×4äùrØÈ#IÊŽØá†)°¬ ù€íHœ6{ÓbÀlõ«ö:dšƒ.=OZÑÓt§Ô³H#Œ½ëBÃM7¤¼ŽÖ ðí²®VFÏ©Æ3[Ãv¢?–Fß¼zVŸö·–B±Ý޵EôÙ`º‚9™B´ª §_þµeI¥Éo{sºìyB‡ž¿¥PkäK,‹†| ½j bxÚ"߈£ã ýãQk3Bgû=ªâ(ûŽw­«ÏMäÀ»bÓ¹¬ìcšÎAx÷«:j¸àe› ¾ÄžjÆž†K…E¶~&­ii¾pÉlù×fª±¨Uá]Ìq¬*ºä@Šì1L¸¸ŽÖ#$­úšeÕÌvq&nêi—3ÇmyúW)©Ê×W§`Œû@Aü+ï\–§1¼¼Wœ…/´ ç½sš„¾}ê´­‚Äeº+¢´Ô-$e¶…úÞº[MFÒW[h_•õ½m}m+ba0*ö*õZ¬ÍgSq˜¢?¾oÒ²u½PYÅäÆs3~•«jBÖ?.3™¬>Âæñ ¢–oZËÓtÛ›¤. c’}j……ÅÂnÉPÇ$ÖÜM¼`]íŠÛ·Ò-¢xÞ{Ö¤Zl¿>\÷ª>$dŽÒhð9$óïYÞ'tŽÖXð2Ä*—ˆ]Þ(#ÇÌÙÅV°²Yn¡IFæØ$qüªž›b³ÞFŽ»°Ø}j +1%Ê«ó´ÕÒ± *ŽÕÔ¨Hc 0ªJßc@8U°5Í[p6ÖÍìÄW?¯jû¶·n:1‰¬êco‘ ç½bdãÿ×X’0ZÄÜIÀ=zÕ‘~­þ* UÁéÖ¬,xL­9ò\ŽG=©è rzö§Æ»›8¦•“`Ú7=qÀ¦á°àîïM*Ûp¼îïQÉn ÀuÆp…DÊLzÖ¬3,jî©?xÔ®BÇ·ÏzšF›HàÔ îÇ“À=ª dàU|À懅Ô¤/¥)‡@(hÝFp)Æ56Ë$M÷NOcFÑå«)ü)Y@Ee?QQHŸ>Ièy¦œ“üé‡%úÔ±àF镱ÍH‡äeÔéþ­—øXÔK3„’zúR,Eœ/¿ZjC¹Àµ·¦Úòø@~ð­¨Ý­á"6Âç­l£˜c!8Px"ªÞËzm·ËpR&áPpN9¨.î/>ÍæIpV6?*†?ýj¯y5È·-$ÅPµGSYI,ªÛ–F?SšÊó¤»{dr2k(O(|‰ŸsM#Žç©¦÷>½I¦§ÔòM‰£µpOá[·W¹ÜÀf1¸{ö­Ÿ [¬·¾cr#€÷=ëcÃІœÈÜì‡ã[÷24q‡z|¹®’îWŽå¶$?w »5»;•ŒàüÇ¥c¦Ÿv÷b{Æ_9.Ý? ÂO½’éf¾lF7\ôÿ ÈK+ƒp%»— ƒ×µe\ÅÈþNéBõ“¨•u3³B^E^¯Ô Í»…$.bÞê§—ÇoA°ynÖs•Žǹ«þ°yn„í‘t÷«º“¼ÞyUãšèoî>ËlòEú×A¨Ü‹KG—ø‰Âýkjòo"Ýœuè>µÍé6§QÔ¤{’XFrkÑ­£¨É-Á,“XZM±¾¼–y¹Øk©U Ga]Rª¢…QòŽtj¡T"ŒPÞ]%¬y'ç=V¿¼KHºüçµAwr°Gך望»Åi‰ØX’}«”v7wŠò’Tœ×>I¹»V“8Î ÞÓ"ËKpF<Ìöº-.%¸=el ­­:<,’“ƒ#qô‘®j­%Á‚…N¤w¬½wW/pa€à'ZËÖµV3 ?w‚k’Ýy¯½aX’{õ5ŠK3d÷<š¹mlÈãéSB™Z·+¹©ä™_oE­;ï¶; ßlv(p#n››ô©Õ•cn™jNؘ÷&ž"Lc¥1ïB¦ Ï>Õ…ICmëžê6qéƒÒ£`¨áˆâ¢´›°¡“ÐrE5òùùA_åL}Ì¥D¹g_¯ÔÔc“‘Áëõ¨Æs•"­BÅÑÿœþýz•Bç¡Z™>e_§5ƒnáÓqéQ8Û‘Ò«Ê6‚:sMVX¾>ïÀ}i€ðsD-á,üاÆxéžjH[§æ­ßÌ ^*jqŸ02`ŽàÕ HpèAäU‡ºHT4€;ùyùE[k "«±^3÷EXûRÄ2ÃsíÏAY÷SËy iIÀè;U»™nœ<„àpjÏ»¹’å²ÇÐ ÀQ×õ\Š­ŽiÿfÛm¬0e?(ôªcÈcvë&HúU–·òâ›ïI’>”ÙUV,ó’)Œ¡Sê9UUïšÚðØÃsvç >QôÿZÞðÀXmî®Ü€ íAÏõ­¿¤×;.­lÆÑÊ‚3ƒøVìrC0)»ÖFGà dUk˜mZP³Í#ó…øüª¥Ì03I&Ügù*¯4vÞn&‘œá'Š¥©]Dª--™cCÁÀ¬ýZî5 ilUŒ0©ê7(ÛõTƒ¸I á·¶ò¢û±õ>¦£·ÔMµ¯— £“êi"¼A±8Ú9Å1&“S¸Š&o’?Þ9ö¢ ¤ÕncIî£cѯ}:†ÿWÜÕcÈ ÝOŒ,²œ~þº½á´ýÅÄøâY‰_¥XÐÓm´’v‘Ë Ñ¹˜[[<Ägjð*ýíȵ´’î¯Z»w0‚Ýå茺ƒ<ò¶W-æK#Í)À+4—¬Ò9Âö¨Ø‰^O)vĘ}ýj<îrcHE?ΙîZ1…h5¹w2Øim¹°ÅH\úšè®¥];G ¶nÕÏ®+jîE²Ó›œ›Wò®?ŽXûšãOÌrNIæ¹ùسõjÚÛÍÜíÂŽžõ,—›…­X¶€°ÞxÔó’Çbw©dÉ;V§î-!AÉ=h ®riH# 95:BeÇ 3S$@}áÒ¦XÀÁnÔ’·%qøŠGl¶ÜvíI#rà «¾0¯jŠE܃wÊ¡•wÝÀQN‘”¥yCºiì¬È8éNpQÆW9â¡f]ªPlu;Æ{Ôe—h*6°ù†{Ô{€UÛò²ŸçRÀÆ9œåsòêy§+vÜr3òŠXÎÖ}Ç÷h›,Tþ5™l†l»æ«mûÀž•­BF 9¦"! ªqëN.B„)Í!ÚíDr´g¯?Ò‘XŽô©+'zs±~[ÛÚœXž´âùÁ4¯…9^FO43Å#ڢǘI#åéŸJXÆâI8è#6Xpx«Z›íŽ(†AŒcQ` iŒl~µcR|y`uªPÄÓ¹*2Ý@öïU£¦8^Z«E ÌI^[•l¥„k VÉtw¹Pè:VȰAVÑÜ’îÃr+al”"[Ç>rÀ0ô©ä·»ñÁ‚€ïsØÃô©šÚõuo†UùÙ»zcô©L7m¡ £ç&¡¼…໸bO*½¸ëUÞïÍž@ìO!OJ†é £,’¸žéUcK#Hí’O©¯—$…ÜòMU@’9‘ŽXš|“nýÜ(8ëNiCe#OÆœò«ˆ¹æ ·¸{{iR>$¸ùò¦ÚÝ=¼Çßœm¦A;Ç‘¨ùæ8ü+nÄ5µšB‡„\cß­mØÈöÖ© gî®1ïÖµí]¡€F?„sUµ­H4 hœÉ(½ªsTY-ÖÖ< ÞÕ±~­¶O™äªS¤¶ÖqÅ÷I?¥fJ²ÛÚ"WuR”Iojˆ8&™o¸ pXÞÎ}ñÍ6Ý™œ*³?×™nÛžsþ\ÕkëÙo¥.ÿ*çåQÛµE}-ô…œüBÊ«ß^Éxüð ð*@#ÔzÕ^¼Ue6+BI¼¨S<7õqäÚ€}ä Š)OÈB2Æ—Ã÷4à0Cô°/ñ·_ztKÕZX—qëQÞË “` 2 2åßv1€{Ón]Ãí»Óçp¬sÊ–FúQ#Teƒò“ŸÒšH9ã4ÂC+qNŒ0œ`qÏOZrnW#iý)럕6‘Q:ÄAPŒî¹9ëQ²¡B–a“º¢p›v¨%†Nj8؆R óÏ­E’8*@<Ô[ˆ 0À§I $m$Zò)$^Ôó€)$"‰FãCòª¬sè(~UAü*;³´xÖ r[ Æ{Ô w8÷©-mÅË–wùsŒRÚÁö‡%Û N8©m 9gl{T×VklfQýÐOjšîÑm°<Á“÷r{T—6ë ³ÍR–<Èb­ž@ïTä@6pÙéëU$@ œãÖ ‘I䑴ަ¡qóœäcÔÔ.¿9ê0hwdB»FOCHÄ…ÛŒ“Ó4×8M¸É¢ ñÈ]¸'ÐÒ ºëKÚÝpëSÂKa œ¯Þ>´åàƒ‘úÔŠ7q·§ëSPÎ)Ø\t§U©¨i$$ àóŠˆÌp:UuV‘‰Ç”H¤<ià‘L`<Ô'¦àiWåu'  ÓãÂÌ„ô ëVµY ÷Ÿ*€¹ùqôïSß¹šì° šýŒ·YsQÛ+M0‹(‰Ýõ"›´¬mP€·×¶û¥“gʪƒw×±¦£ÜDù¨…lé0½Ó2)Úª «§Fׇ@ kZ#·]±“Ô÷5»mo´{"P=OsZ°Ä¦ÔÉ©;Ôµ%r:ÐÏš@9ÍR¾µ–îh×vØBåýꆡe%åÄkœBç÷ª·víq* â0¼ûÕÈÐ$jƒî¨«±Æ"‹háTb¬ª¬q…PÕ58í`p˜g<ïYÚ¾©Öa÷çY7½¥’ÆÍ´°éúÖxSŒúö¬ìcšÎÇËš~Ï—håjP;´ÏÊ>ñ§È'<‘Î)ê˜#ŒŸJ‘#ÇÔ•ƒ!rIý*BÞ9'ô©ˆ;xš”(Ž%Œu=j@¡QTu=jE]¨ª:žµbîçëOÝ’އ¥5¹9n”ÆäóÒ„Û2€Žžôƒ ž™ a"sêj¡ÏSƒúÔ=Öª=Í1—'äÒw u¥‘Ÿ;e¾ïçK–'hêx§–gb«ÔñRÞÒá99ÉÏj”«A(Ç^3Smki¸ük¢ÓŒq!bÛUã Oùú×I¢áWf`ªÑ†'üýkL)Çh* 5jÒä]ÄeQòo!O¨­;‘w™¹ }Gÿ¯5nÞaRpµ=ORÑE- B),p)Õ»œúÒ3*Œ·JȺÔ^VeŒ•Eî;Ö%ö¨ò–X¸AÀ÷¬Ë«æbBtTC±ûe÷$ó]ϽTŠ­€¼¿Élæ8Ïz¬‘Çoþ“xràåV³®®þåå“…è ¬ÛÛ§¾ºyŸ¿AéŠÍ»¹kÉÞFû½…@[$ç*¹98ªÄ–!EJßèÀ7Þ‘»T˜ò€#—=ªp¾JƒÕÏj|1À•Á.ÜO6aÈ9<Š’4(¡Û©äTЩoœ7 üêH”‘¸RƤÙàS”n“äu4õ]ÏüéÈ»›šŸnìcîÖ¥Û»œaSRíÏ=‡z†å·(Áž•ç*?ºMG9È}Úm¢1ùØñÐ{S-‘ˆÜÝ;Smш,Ô¯ féœæ†ˆ±#¤h‹61Æi¯o´“€®)­SLX=8¦“´’:Ô™ØsרÎÎG8íN˜*=Ç÷’‚z}Ð*I@Ç“—“'è)Ó`"¬üÓ‹?Ãß4„+?ÃÞ‚G–nõVFCl6vóíPI†9#‚8ªòܰëÒ„‰‡ Œ7 úR*À=JHãeAäœý*t; ó3튔6уógÒ§S´(?6})%'6QÈsÛ¡”ç<`Uur¤†êÕ$€1èzT„!ç‚Þ´¼z\L=>NÝi;ñHGÒ…ºf­ê Rä°<‘Sß)YÏ9‘V/Yºç5^yä[tˆœ&00{EG,òy 8\ d÷• ÇãÒµ4}YV8àq„jšÚѵ„Ž8í¤ámSZÚ^¤†4ˆð?…l‹˜ é[kwnÜ Ej,Ñ0ûâ«MªÁ¾ZfFÇ^ÕRãX¶Š_-˜Þ½ª µc}‹ój§<óÎÙcòvAY·WsÝ7_ô_Z§5ij·û&›û›ûEË+Iÿ,£îiUa±O´Ý2´ŸòÎ<ôúÒ¢ç`_øR±n%–òS,Œ[9Ç ‰s<—s‘‰ô€¬K™ä»—{œŒð¾”»[‘Œ`t¨ðzSH<Ž‚nžiåÏAOD»Ï-ØSÕD)æ½ÚOµîf<àT‘FpÓIÀ*XÓIÀ)|Óq §½.æ™Æ:PÆgt«†4†Š:rjË Ž£Ó?Z²T$J£·4–éµA9Éý{Ñ cÛ4±&=³O•¹Ùü Éé?(áW¯½+¶ã°}ÑÖ’]Ž ò:RJQ)­e ŽE)]¨p:ñJS@x¥Û„À¹Î00i3Ò›œâ‡ÎÜw¡¾ïi[‘ÇZ¯"bÊvú’*R¬Héß5 ¡ vôïšHÐ.bI=Oô¦ª(àœóMTÆ?6ùŠªÇAÔŽ´\»Qy’èV4è8ÍVh ƒ•;TTÀÁþ´T=èvŠtw Ãuw©. Ï^”«0Ëg¨©#—t9”å|Ç‘ô4åmÑ‚>†¢v ÷÷ ýÚˆ<œäô¨œ‚IµW'*Oïˆö¨ Èäê¸$ ô§¨b8§¢³ÅH¹0¤†£i E!R×9£îšjŸ-²:Õ™§D‹™GçSË0•TtenYVe_P9ªn¬d9<öÉ5VL³6îHè)Qš,àp´+§G!‹·J·öÅ\œž*кÁ9'¥[ƒ'æ#ŠlW*®Ä ž´Ô˜n$M5'‰&§•.^Õ®y1§CêjÛ%ÇÙZãR/CêjÄžÓ‘W¹ïTT¤Ë±ã¹¬òÍ3åÜŸsYìÏ<Ÿ;úô§4›FØÆõj #…éëFpQ×­M@(rè?H‘do'¥LñægµC̸,8ý³M¼Ç ¦çÌ+ž‚¥•ŒÒy@æ¹þtÁx#½F± zæ¤ÊC†#'8§ePg·<ÓÆÔ_ÀÔ@•ÏNÖ£Ú $ކ£Ú $ކ‘‰6XztÅžE T‚yô¦Ï˜œÎì)l`€i$Ê8 ÐЊKuËz@sžiy<óÔÓ[;àaô¨žiÑã9äv§'#éO‹æô¥eFmÀ:Ò ÏJ¨'=(I$»#ç'ØP¶§8äÒiªô&“ËÌ Ë3aM(MÉ…$áiê›18·`~”¢pÓ2åÏ^œ×In4Ý*5†Rg\¹ëœs[p¦Ÿ§"ÄøieÓšÊÕ5¿(bSò ïïY¶¦÷òlO–%袲õ-@ß?—ÄKÐ ¬Ñ¼[L£“Ñj™—Æ3ÐUo,®Ýß(©Cnôf~ ÁàœŽ*eÁ g5bDÌ àŸ—Š•òaeÚ¦•I‰” ¬ªvä ÷¨U¸ŽüšxÄcêjݼJ¡ø9ÏJ±oä³as‘ÜԳ̠ 1ÿ©&bÄqŽ*YI$}1P%¶)Ô;òÛW¨Käí^´°¾"gl‘œS‘¶ÆXšTb±–<Ô>iÞXò[ ö¨ƒüÄ÷5Éóõ5uQãˆ8Á,¤¯çVÕ"Wþòüµd+¬A»²äTÄ«óîùû{TЧyo›ŸÂ¡TÚw“Í'œ¹á ÏsIæ.pâhóœcñ©•²œ/ÔÔŠr½8§©Êô⣑{/?ݘëÙsííMpH*? hGÀ=ONzRl;rzôÍ&ÖÚñR«á_i 8#©¥ 䌊±ŒàSL ß^)…¸àsõ¨ËqÀæ¡t‡Às’N? Ž<±ä=OÈþcÈ TfHÚ#aÆ:æšYLd`§¥0º¼]1´ãòK9gãi°þ*SónvöéÍó1vãæÀÇzžThãùxùy© §q“RºN=9ªéåð„b8¨T.cµCP(R±Ãv¨ÝÌg‡?xŠk§}EG+„à~tÈÎxS“L¨@ÉÀ§¯É’@ë@ã¥*åsÜRÉ"•Q´Šs8 SÞAÀéRy¸‹œHà†olÓ·íC³†#Ÿ¥<˵>O¼~ñ¦Ã)U¯Ì½";/N6ÿ:Hä*mçñ¨Â´ÒÝ–'ïôßšW$±'Þšî$.ÌM\U[q²Ä’2Œ±íWb/’5ÜÌ:ÕÔˆD6"å½j«‡{¢ÒÀ=ªÓ1sŽÙªî®ó³7Ò¥FB©Á©þ*tKÊÇõ§Â£ ÍI+£oñpiò1ãÐñRHßtzЊ@ ƒ/žM,jØFNqJ‰Œ2Œœâ®E ÷ÆjÌkÏ?YOøÔwí'o>µï‚qÐTs¾3Š­{ä]¤–oÒ¢‰7È9ÏéQF›ÜÞ¥»uP#îŽôë’ „îôû‚ …Nªvç­E£'­CÑy«³Ån¨I- {Tḛ̂ªgœm©ÕȉyÅ;“býá@\®_ZP»”Ö¡A‘ÏILg®ãŸÊ“bà¸>æ›å¨ãó¨9TmªWר¨z)mçó¨:#6óùЧhA9,àÒ…ùv‰I#­*¡7œ÷úTó<…Gˆî3øT®ÎH À“×Ò¤‘™¸C’•DÃ|„yd9Çjaœ¤ã©¦CòäɨdiÈC“ó>ª'Œ©èA=C$X `äôZpBƒì2=©9f F@Áf©66ÞýZ•”©½)CŽõ ¸“Þ˜zÔ'¯½(k*ñÝô£’6ö§`íã¥"#H ©àsND/ÀíKm(ÇaZ[Za2t=«GJ6ŠI™ ¸ô­=0Ûªë–-Ó™®#@£Ú¤¹s4ábP£¶*YÛ̘ÅV¸ÑXcª³¡Pr0zb«NŒ ä~cöá‚€¿ãL©ÛȨÔà–+OB’Üàt´ Ç ž:R Ç'µY·\òÊ~è«/§CÒ¬D¿‘©\àm{ÓœávŽ=M=e¨|È5B¾´ŽHU@;—õ¦:‡‰TGëFÏ)YüÇ©¦•òÁUêzšB¾X*½OSA„Hʧ‚ªpiL{Ûou¦=Äü"«¤D¸Ü>Pzõ!Ü ÓÔÔ)ÝÏcV2:óŸ¼}*bùG__J—p=jXˆTŒ ýMH˜TðH¸  ôKc;áŸä*©FgEVÚÌp¢¥ †.zãµ´ ü¬@ùi ë–S×\µ*¡vÅJ¨Y‡qVAؼuéSð‹ïÐTßt`u¦¹*‡ÔÓ$;©¦¹Ú¸=M-¨W'Ž;ÓíT7=)öà0¦Þ\ázŠmÜã8©—3sÚ£´-"d’X±ü)–ù‘s»=i°è3Öªk‹‡$ü€òj¶Ó4ÌOÜ“U¶´Ó’OËš½òáQx#ô«DŒ*޵l•ÀQH‘FŽ]ºõ¦„DmÇ“M¨wšŒjù¡7/µ5o#Þ×+Q‹Ø÷…eÈ«P¤~^®ÞÞ•/›b/S–5(’?/j/S’i2GÊxÍ8“Œ<ŸÂ€y4€äâœS•·•õêEmÌ=E<6â=…Tv*ûŒœ/jªX«–ß÷{Uvm²[îô¨L`°cŸZˆ®X9ïQË=êXËM øzŸ¥Kéd>ïSô©#Ì®øGZüÎOûX§–?¦iÙ%‰ü¨l ã´„ä¨=)2IQL’?œaŒt¦ºs¹H¦²`î Ûò¦;Œõô4` Û ëèh ÛIëH*1×®1´‚®) ã@«rªÁFUHÇ­Nì Š™ØmÈ8éQ2G.Û0Ås“Q:¢#¸'Ö¢uHÑŽÜ*±‘y rj Á†AÍA¹[–è9¨|÷˜¹c‚FyöéL23Ï•˜Ï¿qÇËŸð©ìãxãûCqŒõ©mÑãŒÌÜc€j{Thã37àTˆ²HÍ$¿)'Œž´ý®äÉ)Á>½éáYϘçìh˜À/ ØâšàãŒw¤Þ€T(;JýÑÓ5,@1Óµ>%É_J²>T½N>T«ui¤çç9Þ˜Oñ)¥±ó¯,›ºô ŽXóÐT.wuéSB|«s‘ƒÚ¦FòíÈ={TÈ|¸NzÕL4ÎpÞæ«miœUm#ž \‹0íØ¹ÀÆ*Ê,dØ«(vjjŒªÏ& dóMÇ@ëÍE4Â2õj$Øp:Š…äØp:Ò’k|)ÁcŸ¨¡‘¤‹Žæ†V’ýjØå§fyj¬mäþéÛœf©ý–Elàã=knÎ?&ÍCrOj´«¶µuWlJ½é­ŒòÀz°@'–À«ýìS*¤ðGb)­•´ÖÈôõ§ÆØeaêA§FØ`}ÎiÑŸ˜sM¸ˆ8ù@Ýɤš5oº=i&Œ? ­Ua±úèµ\ä7J¯Ñ‡åŠ· ö°Z0|ìygr9ma²eSºfûØõíVÒH!´ÂüÒ¶wP¤m¸Èç“Ñ}*²¡Îö8ÏAP"în§µLª¤­H}sO ÷¦4q¢³9Àži»[·½4¢…%ºµ\ÊUH“¦BãÚ£/´sÐô¨Ë•?zS"£œ¨8mnUcÆqíFõ Ütýê9'õéNܪGÖžYAú~”’ɱpýùíI'#h©²|É´sU \Sòã¥We%1ÓiªÎ¤©}ÖÅ1ãÜçqn05Ô¶ÓŒ“ÇÙ#-ƒÔ°Çc$ÃgæS†§ÜLH™èz°X˜‘} « ½±¸Ž*O°XŽ*L3cqéOªá}iÏ…ÀiÍŽ•-¼yÁnaSAFMK |dô§¾Õ\Œt§K…ç!j †ôÈ<úT2®õÈ<úTR)aÁ¦ÇmšCœvô¤Ž¼¿8íBB-ϵ=ùÉëÛöÏ^¾Ôãê hsÒ›úSi~êqÉþT•8ŸåC«õ¦äyïLÏùõ¦çšc@/˜Çè 7ÊS n‡¥3ËS&zVXaT U„SÐVOAS\H!Rìú犒êEX<Ž óëš}êÅåpH4ù1À úzÔe îcÀ¨ü²û˜Ž8MûÖ˜ÝëMn˜§Z³FÝ >Ô‡vˆã‘O·ÃîŒúR¶VPxÍ0ü²²g84ϺìžôöÀúÓØO`&Àz€=é¡A<€=é¡A<ŠcŒ€úkAÛñ¦°Uª32îƒÆšÒ ùRâ¤ó€Ä;Sã`[îŠtm»ŽÔ懊s ÃÅ8éʙ“$}î8íUd9?ÄqÅU‘w7?ÄqUòñ|ªyõÎJ‹s§àç­C¹“åGjr¹RvT#ž9'ÛÒœ€vçiöïN GLàŠÉÈÈEèG¯Ö1<…ï@bÜg Rå‚N í‚3OÁžÙ$Q°,qòžsíRF„ǧƄǸ§à0#·°§œà.iàdtÏjq 3·9o^Ô¬·;)têjXQyg=H©ayf<’*H£Q’Þµ9éÏݪrp9à-Lxj³•øàvªÌL…v¨N]ýªB¡åàö5#.Åùzö§°Ú¼u¦fü£Ö˜ŸŸº;šfÖcJÁH?þº$  äÒÉ…5Í–#€¦¢ù¾b: ‹$î"…Ëvï@É g­ øÌ$>jMß.〾ROAT¤‘¦›<õâ ggžµ[yy†:W§¼XFÑ÷¿úÕfk‘!~÷ÿZ¬Kr uÅ%«ý¡Cu5GÍÃgšdMçm$õ­'ßìñ¶ Uý;VŽÝíöx-·?€Å^ »÷Hylgòªn ŽàsŠ®à–#Ò¡q– vëD ‘’ì~í%¸XÎö8ÚiaÄd¹4ÐIrOsÅ7$ÊIîx¦—'ÔÓ‰'Šq$ñN'¹¨ iJ¯N3ïP”DÉQœ:ˆ¢!%FqÅ#)<š'¯zÇ'Ò£1«!VE<ÓJ]¥AÇ5@Wi^œÔñ@†ÝÇò©#‡Å¸ô©Ò, “‘éDÒ0˜Çð‘D®q…àô’1è´‘&Þ[þH€ŽN2;Ð€Ž½ªU^sÄÔˆ9ÏëR"óžµ:&Þ=êu\ œÔª»FÖ£‘™ˆqšdŒ\€#±lRÆhIêzT±e›©àSÑB&OSPI(iBç'¢­Bò”}–¢wß'è*TM§/Ú¥DÛËóŽÔõ\rÜûU{É"-Œc¥W»`¨: ‚éÂ&qô¨-K¼ »©qÉâž[éU¤PäÔ.bG=j'bGLÔyÁþe%OéP?˜æêßæa†Vµ´ô lÁÛ(9ÿëVÆšŠöì’7É×ÿ­Z–*­nUsTˆ߃´3YìvÀ;sÅRÆã •2¨NX~*ŒFM)vtu¡˜òÍ)cÐ j Ç¥1óEäÔs\ïô¨fœ×éQË0­Uˆ4·³ÎAü*{•bzj2÷ ñÍ^–E KÞ®K -‚x«Lÿ7&£ÔìÝ­ÔrM7Q´&Ç®Z£¿¶- ÛïQ …àÀ¦F˜AŽÂ’$ÂaUe·v¸byê c1'¥A$ Ó’zUµJªö` ¸v«8éŠIÒ6Bò7ʃ“M–4e,Çå^I¦K²îc…ZNew"íPp}ª ²îy÷¨mŒn—§ÿ^µì"ó&i\`/ÝÖ¶ô;=Ò=ÄÃ~èþµ­¥ÛeŒò Ò¨™Mö² oÜBIÏÓ§ëT¦˜_k û¿u8úŠ«$¿jÔ™³òFN+ÿÙÿØÿÀððÿÚ ?ÒÐÂÇ£BI 0KÄÖž‰²-HU’ZÚHXô¨yÀ “XúµÛj‹ º5ùA‡ªÝ¾¥~© æ5à{Ö^¡r×ר‘.c^?Æ·nš=3OwpT`}MnÝ´ZVžòD¸ `}Mk\2iö.è0Tøšä'ç}Ò1cŒæ¸ë™ÞgÞìIëšå/n^âBÌÙ¥Œ(C¿‚@9öÔ~´D¸w^µfÝr¯3õ<-OK·R8«(ÁwëÚ­Ä6€Gzž1·ŸQVSåõ¨¡,YŸ<ƒŠlY,I= 6,ä·½LrÄájVåŽ?œ±Å.B# ãô ¸ôÖŒíÎ8Mؼ¢5êO>ÕX±i^j»1i6Z›v>A“µ°qR±rH4üávHª &ž@î}ý)d-KøÒÍ Ž1 ~5cGˆiYiö‰€XŠ’ÍBÄWBm¬Õ@ù‰Éú÷®Œ°Ñã¼nük{)i§ªÿsUg“r¤ € ½ëyC¶T€§©¬ÉååG­K¦Ú£7Úˆ ¹;Aì:V¦…e»ý%V<éW´›Q·Îc†#½Z6è[{üÀ.Ò´æ·Y[t¬Yq€¾µ¡$Ø—¸¬Iõå…m-דþM_Òl–Þ<ÊŸ^´t‹µ€Ï0Ãc<ö«ºu¨‚6Q†¬ísUn·>æ²õíX\·‹ýXêk7[Ô„› NTÖ4i½öŠÄEÜüV4iæ>Z‡UeW†úTë€êd [P»ÕHÈèjtL…Œr çÈTª¹Â/@x*(á§j–mûÊGÉQϱïR¸måSøG&¥`I!N)± ©cœRFƒiÎF;{ÒF£iÎF)åÈn{Rç ÀÍ($)s·<'?JCØšw{ Œm‘æ¶r?»Í1±{¸.j3ˆqå>%o/'ØoÒœŠv{œÓ£§×šr¦r žøÒíÈÚ½éväaN ¨"Ó|L‡*95Úüä±ÈZ0³óŽjÌW^xòm# î$úzTñKæ+E nÃdŸ¥XŠ@éå»¶œ“ZÏ$H\ßÅè*{‡yUYØ–œô4îÒ*—o®j)æÂÆp¤ã5 ví3€8RqPÇ–@Bk]6"¿t=Åu6ʰ@ ®‚%B¥F¤Ï*æ\9<À eùÎx©ÿ@ïST”QEQEQEQEQEw¢Š(¢Š(¢¹o Ú›‹ß=‡ÉÍÿ5ÊøbÐÏvn|°ñÿ5ÎxrØÍ?Ú|©ÀúÖ¯ˆgxl£(Øbý=±Z~$¡²Ë8 ý¦+K] ´B§wOlW,I–L·s\‘%Ûžæ¹Vc,¼÷«q …CÉè*xÔF›»Õ¸ÐF»:06oa‘ÛëÞž‹ò†õûµ"®qïÒ­'î£2w=Ú¦_Ý¡nýL ¢ç¹éKtoÞ=sOMÑýÞ¦ž…“§SÖœí† Î2Ýé\üÁI=é[‚–=é¡ 3s’:SJùe‰ç)¸ÚNOÒ‘"V™þeOüxÐŒ±)•þ`¿­ Ë™?SV’ö໌/R¥VV{™‹ÇqUQšâbÇ÷@ªdãÐU‡•#z³$ÑÄî+>)§»¹ ]ߥVŠI%œmàgôªpM,÷§ÌUýNIb2œwíS^31òÐrÇŸz±x]ˆŽ1ÁëV4èÂØÄ@ó¥ ³zJšÜµœ!1ùcéR[î³·ò€Ì÷XUiK¦prIô§Á\@pª$Ô£NXgÖ¦‰¨lmP0£úÖ•°Ü®ÿq: ж‡3}ÕíV4ªV<„þñýjú–œáTÍZ¤árß½Nˆp¿‰«H¡WäÔÊiÔ´´QEQEQEQEQEQEQEQT4xÇLRçiaæ95GK·M?K@ço˽Éõªº|)c§¢“Œ.ãšÀÕïÚöàã„(ô®kYÔ íÉaÂzW?«ß}ªRùAâ©[¦d =~Z¡ù³Tmã˃W&æEEþúÕ‰X(è\e€§Å]c\üiÑ©f :-=±Ò¦a¹‚Ž‚¦a–ÇaRã,¥8ñ–=­;8ËzS³š«(i%ÜßÄjËÈ w9¨“-ÜäT³È<Å<’fŸ+1Pœá©ò82ªÏCL‡ÉÎFþ´Ù€1³ÆâsLwD±õ§DT* ÔÒ&ÔPǽ µUv–‰öËÐC½%—vtžM²qÁ­i¶D2"s¸õ«ÆIcEãqëV4ûc½{ž§Òµex­œ¬HA÷ä=«Fòk{bb¶@Î>ô§±«×SC)†aÕÏcT¢c3´îû"Ã7zÏŒ™#m^¤úÕ$V|É!Ú•%´±I²rrTtÛÚ®Y˜‘xrÒg$J¹k±W!²ÝñZ\ ñœf¶—h 3Z!—n¦‡î¸Í[µºö©¡û‚ŸRÔ”QEQEQEQEQEQEQEQEVˆu²Dx_½å\ç‰5,·Ù"?(ûøïXzö¡´}ž3ÇñW>ꦹæÉ5Ïœ³`u5¡°[[¯÷À«;DQƒü@Uà‚×ûÔôO"íË1ãñ§ªùqï<“R*ì'«T¶ÈR2OÞoZš)'©©¢R¨Iêiÿu@éžô½=iqÆßZlÃå+ŒÒJ¿+-$€àÖ›Ä4É î{ŸÂš‰ÈçQè{šBÂ(Ù»ã垬d™OñUP—•OSœÕ(Ø´À÷Îjù!p9$:²xãÒ­“ šb–Ùæñô¨$r"­PM!Xþ&¦iÖw2äÍvÍq"ŒàM2ÊÕ¦”Ó­t6`4б¡W'Ú´ìPË!XÛhUÜ[ÐV­ªï}ˆØ 'éPÜÇÂw9îÇ»ð¨n;sœ(<ûš†qÞ¼Èõ¬ë™dÔ®¢±<¸@àþ¦¢v{ù£µ‰vF£œuúÔ.Í}:ZÄ6 ^H­;QnD* */'3Ÿð­kkpä¢c`çMiÛÁåŸ)Wu÷­áe‡=…j[Ú*®dcÛ=*üp2ÜŸJ—€0*ÈFÀ©@Æ8¢––Š(¢Š(¢Š(¢ŠJ(¥£´QEQEQEQ\ 1fi$’My㱑‹±$““\,ŽÒ9‘É'$Ô¶0ù²y‡¤|“R[G¹·öJšÊ-Íæ᫘O¹Ï…O€òeŽ}ªÑäù»Sãæ^>êSÑ|çÇe§ ó_ÙjËtë‘ÛéS·Nµ;p:õªý_ÓƒŠ‡©ç§­¾‘,ø Ì iŸRpkA·ÓžL$l\ûšX—€>ö>‹ÏøUh$1[K°}ð>ƒ& ÌvòÉ`3QÝ)[Y%êTaV¢u;ñ’8 Q2„ã8àT:]„¶©$÷8G”ƒ[He’à„i ;â­iÖOo’Íò¼€c>•« ™T3ÞŸJÓ€\F¢Bú}+B?5Fì©£,NHÅ[™¾fùA«î<‘Š}MO¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢Š(¢Š(¢ŠJ(®BvìëÎÈí\# €ƒ½iG‚Õa+Ió9«¡|¨,à·-Z(¾L r2ÔÁˇv¨ô¦ “žç€)£%²:ô«ñÄ"ŒF½IÉ«±Eå¨Nç­\DØ¡{ž´ÉNæTQŒc'ð¦ÈÛœ(þ’6çp!Æyè4Òç󦌓Ҡ†6b=*(¤H}3QÃ(’R; l®#'¼Žxö¦3ã«Ò˜ÎެM8ª¼ Ž¿ÎžÁKî_º:Sœ)}ݱK$RK ‚ ï{ŠGÚ4È 0ý(–6tš¿qØÚnn09ÅMµmâàÔ¸[x³ßIgŸ[»†¡aˆäúcüiRYµGŠ‚¸èi‘Í&¦ñǰÃÉ÷­Xœmp9%€?‡ÿ®¤‚ÛºŽK0Ïùüj‘äºõ,ÜÔÃÊŠ’E,©Œ(õ«–KQIq ÈBÖ¬Û*F3 … ïT[R‚[µ‡.ÌNñšµå¸ ¹gàQ›èäœF㎇µiÄ…ÕNã´vµ­ÐΈw£ûµ£ùФ¥NÍ]UÛÆI«qN¥¥¢Š(¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š+‡µŒÍp¹Py®ó%ôÅÛ&ùú*äì^]¿ÆØçÚ¬HKKŽç•[î“Î*xæ2c…ùP{Ô°&>îœ(©`Q÷±ìµ6@9þÓëS’Nƒ¥MžõŽyâ¢U;»Óêj½ë¾Zœ9?NÕËávw~MWº“ °un KŸl’/PŸ-%¢>ÉrBÒY£ÝúœTh ÎìAp)Š7JÍ¥G-!b;Õ•¤*ÚƒçÏzœ¼á^µ8¾?…zÕÈròeœíQéSo.ÙvàqjŸqf%Îãð§Oký­F³cç?Zš ÕPª6ÐŽ}©ÂÌêQmS´ùX‚Þ=>³À#æsSÌ‹e¶€ ¼Þµ3F¶‘ýž«TvêòocòÿQY—2Ýj´(Ì=2sšºÁ L±ùØñ[Ivv[˜üîr3Zj«ol7™¹‹k§Éýªg“˜”üëÊÈÿh$ÿV2~µ•gdÂýäs”ýkz#†#^ÕÑXœ@0½«rÜõP0J–®TôQEQEQEQEQKE”QERÑEQEQEÇB¢¯ð ±÷í\$ccm†Xûö®J%òþQÚ¤¶¥’ON¤€wcR@ ;±«ƒ…T;[uPthtUOtqøÒ9ɲñC·°¦œ“Ði­Éè4Ãß=*¼ÖâVWbAïPKv ǽC,"F xõ«p”‚7ÏAÕ¹5j#QÊ\ã÷{T{š²›"Š]ÇmëU”§ûÊ?,Õa€=ÅW}ª(ÃO'–œF'Ö£|…áGSQ®]°¼(êkY#ÙäýÞþñïV6|„žƒŒzÕŒ»‰áxÅ^Ó òm˽!Ük ÐíM­¦æûÒäÖÆ™lmípßyÎM6ñb…?3¸ÇçUõh£@¸ošWöæ¡Ôo<» Ud'ÌÙIb@üë.<¼â8bǨG–˜"d’qV¯ØÅj9½+kV"Á#,7ñ‘ZwíåÛ*’7 T6ŠvåŸ-ߪ•€o¼Í“Ü ¯i»ïW£Žy­›P6nîkB6äu§Tõ-QEQEQEQEQEQEQEQEQEQ\x‰‚Rœ±õ5ª¤y®L!*BõÍY·]±.Fjx¹UˆS µ1m¼ž½êRÛzõïý*BÛi#h•Éô4Jóèiƒc®1ôŸéMbo<çÊšä9ïTînÌr__š«OpC€;j¬×;eP=y«·oŠ9Û»ñ5jìÆ6L}ßÖ­Ý õ5X£}ŸïHrOµV*DXþ&9?J¬Pù`w'?…Z´A šra#4ä¦Nûšh”ð ùÔˆKˆ£ìÒOŒ3Íz½nt®È 1ÓŠéz++S—÷ʃ¨1«›×¦ÍæÌò£ŸjÅÕ¥ÿHØ:J±)m‘˜ï#©ê*Í­¼zu¹šVÄ®¹ꢬ[–0™doÞÆj•n®7fEçñ¨¬ã×…¤%Ñ'>½©–è.® 1,¨ «;*€+B8¸ Šª*Ú¦8UTˆ¤jìcM¦¬F6­->EQEQEQERÑE%QEQE-RQEQKEÉà £‘\WR×1ü@U”0è9©‘I8ÍN«“Š$\¸Rqž´8;€i®>lP~Mý3Âû-;ªnþ÷ÝúSº¦ãü]* ‰<¸YÇUùA3숿áPÌû!.>•Fc).ç ŸÎªG>Yº §¹r]ªðDh§ þUh¨ÂJ¶T«éH²«Í±2Ø{°¤Ý¹Ê¨Î=)7nªóŽâ¬Í!¶µÀ_Þ0GûF‰ T#ô’£¦¯ÙÄd¹VnDC“êkOD·ûEð™‡Ë#ëZ:L[‘+#}jíÌék –Cœt¦·/®ã²·y¤#?¾¦´î®Ú#{ εS$’MrÌsú çí1%Ü—ƒå1§°¬‹\=Ä“Üô8§¨kɈ9Án}…,1Iª]üÛ¼²y=€ô§Dqƒ™äûUÜGPcØw­² ‚5¶…pOP&´ñH!Œc=@ïNòÇZ“ìã Æ=zS¼¡ž:*r£©?Z–4Ø¿xŸ­H‹´u&–KEQEQEQEQE´QIEQEQEQEQErѯ͸ýã\R›'©æ¹•9=ù«1gnGR*ÄY8©ÓšŠBÀþ?•Däîà󚉉Ý×½)Zç©§7Ⱦ§ùS›äýª¡×içüê,nR?‹†Ö¤P2r9§€0zw§€Ê:TS‡vÀàt¨¦Þ[⢔361ÅY´€D¸ôäûÓâ]ƒñ§Ä¢1ÔÔÂÞI.Vâ\œD¾ÝÚ¥{iË’AÌŸp{SÞÝÓd’_îjÖ´WŽÜy˜ ǵoé(m´õ2½Ï5³`†EÞãÖ¨Üqr]Ïʃ¿ÌÖV¡1ººiü‰ò¨¬û·7–'*¼(§HåÈU²Ø¡ùæu‰–cÀ¨Ày˜Fƒ%åWáÉ„&r}Gzé,í¾Éj±)õ'ÔÖÕ¼E¸AøÐÜ??z›"âà3}â)~÷'œŠ~x« ä —ÒŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢Š(¢Š(¤¢ŠZ(¢Š+‘‘žBÄ9f%‡n+–bÍ’: ¼§Ë‡qì1VÔùqäúU¡òÆO|THvæB>n ThvåÈæ˜§7zI êO'ëÚšíÛ¹æšíŸ©¨œ`èßx· ¨ßÚ:õ5ð1øš«=ÙdÄpVê ';vÆy¨&¸8ÛZ»oæyX|ÀIý*Êå«U¤-±O|~µv4ÊÄ nÜÜÔ°®^5ÆâÇ¥I‚è1œš·yð"1 ªFGáWµ¶Ä¶ñ£r‘àûU­Q¿{ ¯UZnòlÖ4bx;˜ýhûC1bV'½94¢fû  bN9oJX <£®Ò£´0É>WpÆïîÓm¼³”c=ý*{kW‰‹’ þ¥jiv nZf “÷ «¶6f-Ò =>•kùÖ?\äu¢ÂŠJ(¢Š(¢ŽÔQEQEQE´QIE´QERQE-RQEQKEÊÛ¯˜Ê3…ÏÍ\\ æ‡Zæb]äc§zžV±œëïRÊÀ¶ÑÑjYqÀíQ–8%NßʘX’åL'ŽM}IíLþ.yÏjhëêOjŽxÓbŸ½÷Ï¥2Tb¸úšŠtb˜ïu5]L00¨”¤dq¸ÔIåÆGš´íÎeLvn ÓqŽO?J·içùUëXICgåS’Õ¡¥Y4×OáCËUÝ>Õ¤—yè¦:„šc×å'×<ÔWêòã¹\m4˱²y‰í÷M!(R:/ãMYc)„À,ExȆ‹€Xþ5eíÒE>Q<5iÍcÉ›fV9ÃóWdµGÊ`yùªU%T 㠤ċ(ÕÀv(_LTG5(eŸÒ´m¡26Äþ!Éô©ç¸†Ò=‹÷±À¡wy›mäÄAlp­[¸¹†Ê ‹Àt÷ª*îÁC ³gjÀyZVËrÍž+%¥i<–¢ ]ÙÛŽp)"ä,xçØwÜzt«°'—ó7v­½># ¬ öö­kDòÕ[»Uƒ’i8%@Ç&®HéJ4õÈw<KKE%RÑE%QEQEQEQEQEQEQEQEQEQE̸ØTüÇ©®5†(ëÞ¹²06ÐqÎOQÇÓ½!<ÝM!87SUç—Ƀ#«*_ˈžæ¡–O*÷&¡°Q½¦sò¢óMµ¼¯Øb¢³~fþ)PÉ}x£•Ÿ ¤uÄãv–2ײŠÛ·ž/´­²ucÉ©hÉ-Ð…N>cíZVÎ’Î" sSKxż«UÚœŒâ¥¹Õ0|›%Ø‹‘‘ÔúÔ—7ä1ŠÙpÁj‚8öFYØãq¬õÝÁ9fcÞ¨¢<Ž,Ç®jueã¢àÔ¡vÊüt©‚í•óÔ RÙ¨’R®x HoG…'Ÿd‡åâ§ÓcI$Þ=+D*Žƒ¥t*ˆ  ÙUUŠ)Ô´QE)é“Å!!Af;GsAÀ=;ÔR\ƃå`ì{ «q¨AD¤Û°·q"¬ôÅ6Òån‘ŠŸ™S´ëŽ·Þ§æ )lîVêàò§ íNI‰r@½=n3!V`ã"œ²åŠàcÔT™ÏJ›#&r(¢ŠZ(¤¢Š(¢Š(¥¢Š(¢’Š)h¢’Š)h¢Š(®m0G#õ®=ÔmÊ×:ê6åzŠŒ 眃š†Î{ŠïdJŽKq1\ƒ´qÅ1âœàt¦~ûrI¬·òäu•#œƒXw[$pÊÛ³œƒYWX’@Täš³&c‚ߨBçêjK•1EMÃlÞ~¦Ÿp»(û…ÍOf Ã¯óõ«újD8É÷«–+ ã¹÷«ý0o }+T (ÅQMÎ 7vÐi5Jé¿}ŽëŒ×5¨Kºé¾µ‡{&éȨ¤^¼5Te$`UvRGãVímü¨r¥oéVf>Lýù>cøV½…·‘hÇø›æª×Œ¾jlþUÇJȆÍÌêXºÖt6ïæ«7ÝÏZΆÕüðÌ89«ìÍ ‰0T•%ÓÁ¥¹bNÅUÍ6ßif#?JžÆÒ¢ó*{(s"®9$géZ~XœF§„É#ÜóWµUŠ)ÝBrG½ZÔ6FËÒ[I¹žáú.G­G¤Ê–Ï-ÔœíQëI¦ºÃæÎüퟞpneb‹ƒ…éÅ[]Ü#ÞN埔ñÅXÛq24ò±TÇNœS`¶ŒÙ—Û*§­U‚Ú0c’A€Ï¾£<š‚2Èüdôö¨o˜5á$õ S/n5RÝT°S.ˆ—QöÏ~€o`+[NµÄ¾aè£Z6pá·ôb´êçj(¢‘†zÓ&'Ý yÎ2ýþÝÑ,bòò.é=ðÖ¾›i€;Íè{T—ެñÄÇ Ä“ôí^áwÇnü)$°íBq½"n’XU4š[‰˜BL{YóÞNÞJœc¯°¬ñ$·3)N¡b)sɡΠY¶`—Ìs½×¿\T°B"rÌw?ò­8ó³&·íòa÷­h¾àÏzuIO¢ŠJŠà¹ÏÚ3ÆÈœ1¨§ ÈUzž* Ü“H\cåÉÇsX Gs*¸Á'ÏjÊòŠNá»Ö¬A$”m>•§§Ø>iÆP¿Ê®ÚZŸ–I~SÔ ²H' ­&`ªYŽ ¸HPIéPN¾`U^ü“íY÷À]‚ž¼¹öVè Ê<M5ÆÅ<àuZU§ú9;GQPÈ/î³ÔP=ût5ÈÊÁ³øhv'õ§©Ú­ÛÉ»¾ò©¡j•Oµ ?\VϽ->–’Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠO­W%{1C áFÜ× s&D_zå.¤ „J†ÞÍäl>TI5VìÇ 1Žj(mÙ›æãÖͬaEÿõ ½xõ«Ð¨ÆÕüiwË.!'žªPf¸Þ JƒÐTŸ½Ÿǹ步¢Û§ïv$lsZiigiNù€=€æ®E`¶È Î{Tq ´{œ‚íÔTï}œ1Û’¢¦k¨­£É#w¥S%ï®Bí däú Èw“R¼$©Ú'Ú³K=õÆ@;Gz¾b),{qÎ:šÖH]-¤XÚ5R9Py"´R20BŠP5 ¦®3Þ«Çi±ÀoÖ¡Ž"\)<WTa@5´Š@…i( £J)Ô´QE2Sƒ‚G<Ó°Ø^OlÓYŽxê:RGF.çsž¾‚ ·²X¤i¤;åc“è*(­•Èÿ3ž~•.jÕOQHÝ@éTîçʽ* ‰>RCQîÉ €I¬Å”í#9'Š¢$8ëØÒÄAs¸ô*}9ÔÉ.óÀ*[FRϼö¥`¬6…Á^•,ž]Àò£Œ¿tŽ´÷)/îÕ0W¡§$#lî©­¬B._!K °ž´ðÕÅPŠÔà´´´QE-QE”QKE”QEQAéEr—ª±BòF I¸¥q7 ©tË>ìW+t¡#.œ¹`>•rÍ_É_´2çùTñ<Ϊ2ƬDËgP2Õ4;å*¨0ò}¨· <Éc›“íKéeXÓø?JÖ†áÎÁ‚ÝMtö¶‘Ú)ظ$rkr;FÖ »—ÊÜÝ‘ üsUõ+s×ËBGÔš†ö_-\ÿqZ´š[™^âAÀáßµsIn&ie‰ùEsé,·–nK(­È‘à· H ycZ‘†·€G å«J50¦y4›v®ìåzqNU o-òô⟃۩avwE+Ò¬Z;Ku8©àróFàVñŠÙÇ«ý¨¢Š ÀÍÛFqÍ1âx úÓ‰Å5y9§ÓéÔQEA!Û–ô¬»àbF±ãñªW_,dzc¸Ú2ÍŒU9¶Ãhª£2>9ªÒ•Ž£–jDƒƒó±ÚOÒ¢ü ÅNºšbœpÍRÃÆù3ÏJ¿§‰,ä÷ÂûÕ»B\û _5‰ÏæÅJ/ÜåÉnÅIö¦É'š<òT`uëJ5ûU@ç© ]–Ú9äÔ‘°uÊñíW!•eLŽ¢¬£‡â IƒOÆ)(¤¢Š(¢ŠZ(¢Š)(¢–Š+š¶ÅÂgrpq‘"gø‰ÀÍF|ȳêjÓF0 æ<;Ó‚—>Xä“È >ZòkJÚ×ÉùÜóŽ¥néZa·"iÏŽ¥kiÖ>Gï_ïÀ©&?'i«—m¶<‡ÛVnïb²® I'”¬X±çšçõfcbÄûÖEãîb™Ï­>Þ8ÖO1@ÛáG½Ckˆåó}Á…‡Ö¢¶$. ÓëS¢Ëpääíñ÷ªÕµ½Å웎vnµbf¸}Ç T®BÆO oúU»¨–∟›¾™«ƱªDzš[`¥‰ÏNÕ6™ {Ë9-”hx<ÕšÓ«”ŒÁFM5ÜF¥›¦)‚®M7&AÀÀ÷¦£™UHôŠÞ`ÈúÓÀãð1NRÑJqŽzPH’pSAÀ=;ÕY\2qX:•ÚÉpÅyÃþ5•{pVÁȤ;BÆíÔ?Zd(¤cÏÿ®‘ˆãf4רpÀqÓìq¸tb¡}®7Z|jADÏÝmÏøô«’ Ž>»|‡ëÒ¬¡Ä(£¢œ±¨C~ìçúU! 9ëÒª4˜ÆORi³É²ÑˆîÇN)Æ]–ã±ÇéJeÙn¾¤Õo´ÊÛ¤F!@E*ßJ¤²1p´ ÇBJž?†¥°¾˜ÜâgÜÀö«ZV«<—¢)ßr?§Óud¹ÊÙVéõ­l~B·éZæ’ŠJZ(¤¢Š(¢–Š)(¢°í¡û< OýÚãBùQ.O&¹­¾Lc=OJµ¥Cæ–ºqÔáEkhAÓírIùEhèö€ ûž+IˆÚYŽ Ûf ¥Øá@ëZl@›€+*K‰nä Às õ¬ n徜"pž}ïYO;ÝJx J{¬vïÀÈQÉõ¨oqK´rª9>µÎÈß§riú|A—tŸÅóí©ô[eÉ”töÔÚ\BKŽœWCÜH ÙqZ3Ü5˜É /dÅ\–o³)9vªbFwi6òzV\—2ÜHdÇ^†¨™ä–BÄrzU¸*g¹êk_NRçs7_jÑ´@±{žµ-[©ª·œ¯‘´îvPz{×ìÒÇ-Šæ´Œ8äð+RÛtq¤K ƒS]E“H°¤+ÔP}k~زƱªa@5GS»b̹ÄI×ý£Y:¾ ò»Æ!C‚ñÏÔ¯™“¤k×Þ›¥Ë¾9%è:-Aa1ò¤»ØŽÎSå;co½%ÌÅÎЧh9>õZærÇ€9úÕk›‚ÍŒp?Z·¥ ZIe•²8Eü+cÃqÈÞ|î~S„_´´5‘–Y\ðÜ |ÌdAÀÍ3PÝ\˜Øh»s<Çg+ÐRÅdÀ9ÇÞ=©Ö6~dÀnÈ_¼{S­m÷8ÈH«X =VÏÉu £½h|ªž€S$•†ù€â«Ü_A¸–ÇZŠ[˜ã r:UX˜Ár#~SYV72[Þ¤*AÞ@"¨ZÌÑ],@ƒ»ô«Çõ­óž=kWžô”QKŽ(TO'ï`rOÍT¦½_´‹e’pçÛ^[çy(2IÃUiäŽ,ÇùV5‹|É´1GÊIõïYWŽˆæ(Ç=éØAü#ùÔ9l…È[…ô„)ˆÁCÖ™Œå»­4¯;nj{SæÀÈõ¯£(¸¶šœÖ–™ûëw‰¹Í@àC,ªy –ü1š¡,e»‘O; ?…S‘>Ï3ŽÉÍbTßF$’Ëó{­Î¬Ù%ó¸ûÕn³‚I%ºšÚ°”D¡xÇ ŸÆ´4»±or6C~u{Ob” §ƒZBnÚ1¸ä×@¨¨À'?Z× ;{óE--QEQE´QIEQEcéëç^¬’ œÏ¥rú,~~¦Œã!2çØö¬-*1-àfU}k`¶=‡5Ó³…R瀢·©cÀ¹=N}Ò2!ãuq7²ï•‚úÿZå¯eß&ÕîMi[ ”QíÁ§Ö¦í‘1€;Tåü¸Àó¤Uw‘cN]ÿJŽ$¹bNYåPÁ \Ψ£©­7Þ†<{Ÿç]Á[ 4µ‡ÇÌnÍ‹[u‚>¸ùª3ó€ c5R42R95)f ޵ic@ª+j–‚(è9­‘b@ª=þ´¬p9 d e̪‘¸¾ÌMžEDp9`3Š¢ò,H 1Ç÷«ššq#½ki¼ÂxÆGëQÚ†7¢BGÌN.” Õ"r{’*4à~Þ¬}Í^2HÄíS¦Ië[í,Ò·ÊqƒÁ=ë`¼’®sÞ¤]Øç\Õ„Ý·œ}jU ŽH5ä²Fˆ#!wšÏÖ¯%#HØ)`wU-RåáUÿCjÇÏRä’GÌk7LŸÑI9''“ïŽ*Œ¸ºW”äšx¶Ä»‹pâjE²Srew'×Úž¶ÀÎdfàš—ºâBéÇ¥K§Ÿ<åAÀ^o¥I·˜ò•cŠ®ô$YèEP8*[2Æ1ÙIýkOÃî~Õ$c ?­_ÑÛ÷®£¦Úf§*ÂŽ{ã,¥&³±.Yø†\Óu2«)ž>jãÐ5Ôìm$“Yé ž/‘À/ô¬¤‰çád«‘[v~l“G"›a—¨Š2äJžÎ7–éS®É®Œõ?ZëÏö®ŒŽh¢Š(¢Š(¢Š(¢Š(¢Š(¨ííã~NKu5VÂÊ+5&>YðI¨mm£·B’Ç$Ô:À‚ÕñMA­Ý-vç ÜÔ:­À†Ø÷ˆ®oNŒÜ\´þ®3–ú×/fžc´‡î¥sÖiæ»ÊßuMjÉ!ç#p-À#;¹À,x+3Hp:“ÅhXÛ#Þÿë’}tºE€³€Hày¬2Iì+wM´[Xwó·&•Љ $‘C"4ÌïÈcÔÓ¶)rÍÏ5$q¿ÜÕ˜­ãC½G5,q*üÀsRÉíR³ª!‘Ê=˜*–nƒš§4¤7˜WùW=wvÏpÒ)>Ÿ…cÜÜ3LXÿUFJž”`zZª –97óªë´¿±þtè£)tñ€sïÅYÓ×ȾÞÃ…VñbÉ<«’ätSVC‚Ý5¥Øyöà7¥^Žà<›p¥<8<`ƒW¢•d;JjÂÈŒ`Š©QЊɰ±–ym`‹ü@u4û+)&$±eEj;+9go1ƒ"/ ë]™wœíÝ&ÐðÖ®›V3ÊØ$ãš×Ó¢KHËHÛK3[ÔänÉö«ÂxÎ>lç¦*Ø•3ÁÎhV 2)àŽ¢žê)ih¢Š(¢Š(¢Š(¥¢Š$hãòÀ2Jƒ;U®š;eˆ!’t\;Uq;,[Bî‘F+X2K¹Y¹Èú×?«I,Ò±”ò1éXº“I3ýIÆ)ÑÄ-ìÒ4‡sTnD6‹ ™ŽZ£“[,H>fäÖ†e.ÉŸ”Ö§‡íVMÓH¹FÊÑÑíÕÁ‘× –®1'°Ín18#ŸJÔbHéPãÌÚOÔ%œ}G·'žž•c=*ÀÚ¤c£œ……˜÷ª:´¢+#Î7¯¨>ËbsÔÖsI¶A1å`jçþô;}ÝÀÄWÌ¡›•'¤hŠ™W²“ƒúÓäd® ä+ùÓ6Hò¶E9d7œúT¿hKúŒT¦`T·­-»¾œsNÓ¤cx½ñÒ–ÁØÜÒ­8eÃgÛé[×ã"PG8 íZÒnFVƒNê dŒ÷§Ëa  Ÿ­9×1à1š¢!ó®cmÏҹȭæí¢^¤mÏÒ±’Ù§¹ephR"-·ïƒQ†û?™ŽN03>Nà9$`Ò •Yy äŠ}–óvI Ðw§Z7*Ãælò=©/¤MÀà)Èô柬̳^´‰ÓhŽôíN@÷yQØu¨õ‡Ž6‰HUÀSŠK¹ÝG’ÄÀSŽô]Jê<°v®5N 1&‹÷Å‹»øEOcfŒˆ2Ù<àv§ÚÙ©E NnÖ%†%DPª?3[Ñ Ž0£€=k^5GAëUïDR”/ÀCG­ejWK#ªƒ…CÔw5FúEyÑ?SQ¼î_hV®üÔT*—r/Éc¨ÈëQ=ÇʧJcËr…R4`ÏÈÍOÔ¢ *·®*D7q°lÕÉî„+“ÓõróQKHƒ2üÇ·½Y¹¼Kx²ÃÔ–ò‰àYTpÃ¥Kip·v±Î½t©`”O ʼn§ÔÔú(¢Š(¢Š*œLbÉÎ]ù$Ö ½Ë@XûÉYeE1<åØe`Þ›P†,“ÎãíŠÆ¸v’é$àäÖ\î^î0ONMjF­uqÇã>¬[Â÷×A#ëëè*xc{˪1þªˆ± E ÓÞº»xRÞ…þµ¿ k Kð-IO¦¸;Á¦Ë i4âp3Nv„ž€fœÇjî=¹¬ûÙŸEs­ÓÜOƒÀ ÁÔnZY08¢ <–Y21ô›žé aò¿Í7OO6ãÊ#¨ÍI6xNBîÀ-üe&UK=ù5%ÚwÈÀ,qQlçÚ©‘Ø}j¡ãK 0¬*[Ùwÿl:–Ŷ\ÇîkAÙQF8U?Jë%tH™ä8U\šè•#i€jžŸ©G~\"íÛÈ÷ªVœZ‡š¨»vŒŒ÷ªö·±ÞTÇëVR0§yûkU†Fœ‚¤zt0ݤ ôª·c—*yuæ°µXîÓË(?­dßüÍ2Ü”—Í$•Tv.’bxSÍ2ÊCÂÈ?‡ŠkH¥•å$ÙÇó§4ždÂY²ìš~åyw¿544·–رƽÔÔÍæ\Í‹ž…»Šï¸“…ؾ¦¥Úwá\·¸Å]·Q%-ôà µ ì oÏ®)×w⪣%Ž)×z‘#É€g±4·Ã#zšKB&ˆÜ¹É'@jKK±ùòíyOÝîŠuµ¸+ç9 çîƒÚ£½ŽH±q»ÍÁ#‚¥I#OnÂI$2Æ~ñ^6ÿõ©îÒBÛÝ·¡î¼cÚ¦Šö7Bb_›fì“Þ‰µHcFw¶3É¢[øã'ÌÀw5á® o9ã8‡©\5Ô¡Lt“3O '¦: —L”‡h¡Ö®øn都«}Ò7-[Ю ßlßÃÊÕóÖ·{Ö¯CIEQEQYEʳÌç#-Ÿö«’Fùä’Còªü{W>¤þñÛ ^*ŒED—.0òž3Ùjª‚¡¤¼ÿʪ(Àiï?O¥kéé°=ø­ßC凔Œnùsô­6#HzµZn»5®ÝCZ$óÁ§gŽH§d’@§gŠ@ÊNdúSVD-€Û ¤Ü§ŒÓfG=ÍVÕ.Mµ±ìZ ½œE{µfÇ–ÜäöïÚ¹l³³1ôÍsû‹±oj’Óå¹]›M\ÒÊÔGesøU­(ì¼W,í=jÕÃʧ|ñWµ×S$C?) U½U—(3ÁLâ«''=°@¬€~lÖ^yç¥ Áºˆ/$¾OÒ¥°]ú…¼cŸÞ ý5-ß_ïdÓõµf°t¹fúV߈K5‘Ø~U©­o6 ˆpXóô¬½Ý¢¸g†ð9¬]2—CyÂí'¯¡¬Í%Ü ¤ýy®Œ|Ø Œ{ê“(Ã1Øæº‡xÇjΘvò›‚ʹS/$¸à>•‡¨å¯ñÆp(Œ’CFæüW‡ïü+󂇦ÞiF÷ç·úµ=W?áWtë6¼&êOõHÜïÕ»+fºýû}Å?wÖ Ô5¨íõ5‡hhÇj]GU† QbÙ”^ŽÔ·šœ1jK2:jЊ13çaÅZ¶€\¶XR=jÜQ¬Ç<íëŠÊÖ¯[Á*)9aŽE%ï•‘[Ç $8ɨîž8gŠEPzž¦¶m¤ŠhWɨìF9­4e(6ò«èPª• Lº´ûDn¬ø 1ØÔrÛ¬€†&™4T ñX3›yšÎ7pÞµËOòLÉ‚n¸®t¾Ù9ᱜVÃ’¸Á9¦>Fhlži¶–÷zýÈÔƒõ«þ‰ÞüJ‚}êæ‰5Ù—UR3Zg­tu¸zÒQIERÑEÿÙÿØÿÀððÿÚ ?è«¡®ŠŽh¢ŠZ)h¢’Š(¢Š(¢Š(¥¢ŠJ  ÷¤ï@Í--QE%RÑEQIEQE-QE”QERÑE%QE´QIE´QEQE”QA¤4P)EQEQERÑE%QEQEQKEQEQERQEQKE”QERÑEQERQEQERÑEQEQE”QEQEQEQERÑE%QEQE-RQEQKE”QKE”QEQEQEœÑE-Qš(¢Š(¢–Š(¢Š(¢Š(¢–ŠJJ(¢Š(¢Š(¥¢Š(¢’Š)h¢’Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¤¢ŠZ(¤¢Š(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(£¥-RQE-QEQEQIE´QERQE-QEQEQEQEQEQEQEQE%QEQE-RQE-QEQE%QEQE-RQE-QEQEQIE´QIE´QEQEQEQEQEQEQEQE”QEQE´QERQE-QEQE%RÑEQEQEQEQIE´QIE´QEQEQE%RÑEQEQEQEQERQE-v¢Š(¢Š(¢’Š(¢ŠZ(¢Š(¢ŠJ(¢Š)h¢Š(¤¢ŠZ(¤¢Š(¢–Š(¢ŠJ(¥¢Š(¥¢ŠJ(¢Š(¢Š(¥¢’’ŠZ(¢Š)(¢Š(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š)h¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢–Š(¢ŠJ(¢Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š(¥¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š(¢Š(¢–Š)(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ)(¢–ŠZ(¤¢Š;ÒQE-RQE-RQEQEQEQE-RQE-RQE-RQEQKEQE%PFqE´QHsÛZ(¢Š)h¢’Š(¢Š(¢–Š(¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š(¢ŠJ(¢Š)h¢’Š(¢Š(¢–Š)(¢Š(£­QE´QEQERÑE%QE´QIEQEJ)Œ$óCnù;…4†2d7ÉŽE!?ÞùqÒ™ç´,D¸dj!uÚ–Ã0Ï^µœžw”xcÓš˜ñV.1E%QE!ÀëÆh¢Š(¢Š(¢ŠZ(¢Š(¢Š(¢’Š(¢Š(¢–Š)(¢Š(¥¢Š(¢Š(¢Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¦ÈR ÛHØÁÝÅ#tç¥g¾ç/§Ülb°§É”°%NAéYrç~ì•*r Og4Ò Ê®>ðêkKL¹šâÒ…Àà0êjí”òÍiàpÖ¬– Ôâ®dUŒÒ¼|ŽE!¾ëi9=JB]pƒþÍFîñ• ᘞ›i¥™HÃg¶)ýº`Ô¹àsOíÍQKEQEQIE´QEQE”QKE”QEŠZ(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢ŠJ(¢Š)íBsÏjG;TŸJ ÂÕ?27–C!áFNOJÉh<ù˜ÊIÅ“úUˆJçq%~µ0u`¦6ÂØÖ„[UvÇòVÓhùW€=)âÜY¾nõ(QÔóO Éæœv¨-Í.~)H능#‰îqÊvž¾õ™;›»Ð‘ð3‚jŒŒgº ã5|1œ95©ÿêúÕî1ýh¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠC‚@+î(##š1ž¬³i¿Pº“q´~XçŒÕ!³Êá¾\cƒU|µg•àû÷«:m¢ÚÄS9|äæ§µËC“–=jh#¦:“Wjj’™"«)Ü21Ò™.<¶ÈÏŠl€a׃Q[Û¬9$eOaPX[b,ÜÈç'Ú£µ„D…ˆùÛ©©óÖ¬ç6i98£ÐÒu§RÒÑE”QKEQEQEQE”QKEQE%RÑEQEQERÑIIE--””PH^½ý#H«Áäúb°Ξúá¦ۦѻ‘œÖ=Þ¯3MäÚ'C‚Äg?…g\j2yÞMºqœjÒ,®£ÍlzŽ•r8î&\ÌÄÔt«H²È£Í$g·JHÓ.v‚¡IOó©B® ã=)ÊÊ`zTÄ Ù^zœu±RŠV$cÁëJiM/~G‡ÞŠ ÇâŒãŒÒRuëH>cÏJ&”zŠU`À‘BÀãµ´½)h¢Š(¤¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¢Š)(¥¥¢Š(¤¤hh¬÷»c©CHLãéXgP–m^4F+%B§ó¬ÃxòjJŠp‡+_OÖ˜gû4±¶Æ#vÒ}3PY:Û^Fî Tûg½EjâÞåÔ“»úV›m<“ž8®…™z“¸˜æµØ®'>”ƒ'–ô‘C3a´€R “¸Œ—¯Zy§TsÄÒ¢…•“?/zFþ"1éÞ‘8ùŠãÓ½<Ÿ—üh?w­)éÖ˜îîžsÍFî@ùFk7:SòÆy=*9¤òác»”S%m‘±Ý‚i¨ÁFyÉíPÁ8ES“¹ûTQÊ‚ Ëv©@ãК¾3´zšµÏ^ô8QFsÅÏg't”}i8À8sIÉö´dþÒÛ1bÊ;bŒúž>”™õ©O±Fæ}W–ú$m£,GéQ™Ù²¾^A袛œƒÚz2ÔmcÇ—ÁèE7ÍS¸)‹Ý¸Ï­4Þ+o¢ŽIÍ#\)8ݰ(ç"”ùÚß'¿SP<¢nžýMDÒùŸt¿Î•÷ƒ‚qRÙå®P'ú }¾Z`'fµ±Ú¯ô¤P)à­4ýÿjNôŽÊÎxcŽhreʨõ4ŽÊ>ñ{ÓxÀ6Ǻ„ªø÷Çß>2pôâ”|òQQóg’Õ';Mž´àIn6íõ©6¨9{âÅ;r8>´QE-QE”QKE‡8ã{уGjZ(¢Š)(¢–Š(¢Š(¢³õ°>È…»H?­fx„fÉ:Ký PÖFmãøÇò®fÞå¿´üÎ?º3Y:snºDQɬ­:]÷Ê pzWež`Î0£¾rºŽ¼vá]éœ cÖ²®—ȽCK!Þ¨=EsšŒfÇPIaìw®;ƒÔV=â}’ñdøH9õÅjG:L\àž¾õÑE2L‹$g*ý+Z9VhÕÓ£ æ6D×iÇåQÞ±ŽÊfæqEË·‘‡]§’ïå¾SËäöí\¢»4ƒ$ã«W8²&I8Ï5a' ê¤0V)Î[I‹í¤psж’“Ðv9Å(tv#h'Ô®ãJ]]°qþñ]Ô¡Õ›ksõæ¬(£ôÅY…w°Tc튞%Þp£Ÿ¥NŠ{÷5­mÛÇ׿êMhC‰:óÜÔ~hgÚƒ;FsB\,’mîŒå©ÁÜ*ôéáŽÜô5(<ÓÁª×wK±ÆÇg˜@SUî§XÜ£8Œ· ûw¨g”FÁ‚nû¦ Ú‡1@lᙲ>¸¬Ä½·–ác)ÁÏÌíO®*šÝ@ól*HÄÇ#ò«Q V,2â´Ö߃†]¤vUÔ„  ƒè).¦6v2LqAµ#°·ƒp Ú–i>Ín_nBÅSÑoæ»·–{ŒÞv8" Ó®žæÝ¥•Büß.8ù{TuÌ—6¦i±‚Çn2½«MÜ"ê¥\$jÙ!E;¯Ó¯4E/ZÝùbfÎqQ<¬ Tܧ8ü½iŒîÉ|✎eNqÔwøäYWröàƒÔS‘ÃŒŒñÔu:”u¬-Jy®î¼¨]ÑUûw5©\Isx"†Vl.=kúY..DqHW qZ¿¥Í¾'‰‘ÖXްêÈ­]:àÍ GWY#ù[xÆOÖ´,¥ó"*UÕ“ƒ¸u«µj¬RÑEP(¥¢ŠJ+7\ miäÈ8ü gk€›DE<´€~Y5KV Öê ã,?•`[è—7Q+¨Ûžæ³ítÉæFØÁ<YÐé—¦c`Š1‚~•Ôiöíke ûÙZÝ·É·Ž6mÛÖÕ¼F xâ-¸ªàšRB#¢e“’GaTõ›q5°p>dç>Õ_R‹|A±ó/SíUšYPyq‡;‡¸Ï5§^InÞA8ÉÏ= S´¸’gþb´@ÑHùÄy#ßµpë-¤Á'Ë<~§+,–ò9;O”ˆ vàŒ+•ÙósÓ¸®gÌsÓ½"4“L¨¨0¼ƒVà¶¹˜ G•*Ì0O!/ Ò®¤NG1’ÙêǬ-¬™Á„³{œU…·“ É>õh(ŒvÚ=?ÏZЊ´ÍöÛç5r8ÖÝ7ÊvûS$™à«cÐqUî58æm¡[ˆjocíÁØ*#yMºîó %W}êK{ûyçŽR¤gjSK äRʰ¢• p¾µ4r3ÈèTÕÔ%˜©#§¥Z’GLV­tîòCˆBýß_JçõË’o>VVT =kW¹ÅÖå`Á0*}¹F»™íÄ­h¶1Imö™cË;£=ªÆ“iÀ³Ê˜vεkCFw*‘žÆµãŒF0½?•i¤a: tÑ chØ‚¬9¥–=êTTŒ})%‰fB‚¤`ƒéU`Š;x gj„$…g¢QpÛQ mÇÄ X;QS b­Å"È ©Ú¤ŠT•w#+ ‘$YQÿ¤§QEà(ó ˆØw'¨nÇûðûu9ÆáQ͵šÍ´|dSÕÖD „#‚:TªáãÜŒGSò2¤r8"°çÛÌmÜbÞù湩ÜÛ]¨RÉ5‰4†€òI­]>cqlàóÔVýŒ-²³`ûÖ½«™-ÕøúÕšž¥¢Š(¢Š(¢Š)j)mÒWBÙÚŸÃÚ žÑ'–6’¨>ïcQIÍ*;d…v¤€@*p€£€H:mj\\\UiÙŸrFÀ‚1·®}k:êi&fŠÆÜcÓg‰ç©ÿg±­6>Á^fÃ(ùÎ{zÖ­„þuš¼†QóSÞá_.¤““Œôµc^^‰ î'’=³n®¼Öݸžp÷j¤“4Ÿ.Bí"ª¸gBrƒÈYƒ²îÎö©ÕH®%“-ÑJžÝëCK·E–+™.I A«¶6ê²$îß1»y¹,e(0Ûp ­=EÚ åO½Œ/çW¯™£²•—†À¬corñ@Ã÷„ež°-m–öæ8ˆùˆË5d[Û%ÝÂ#/#–>µ» 1ÀŠˆ¸ 1]Lq¤H± ÀQ€+}cUERS©ÔŸN´RU Ð>ÔŽc8àúñYº‚3ÜV>Ì:1ªWjLÀm!zäw©>àm'`àc± ‰Œ dF23êiÈ¢2_;úÓíä*¥æ`7ïVmärY¥p tN˜©`vÆéÝXg¨ç¥X©º×#âK·–ûÊÉ…rž(¹y/VHT®_Ä—R=ØXª§`jæ¨É(¹“,Š}9«vÚ›[h–èéX/·<~•~ÚøÅ¤ÛÆ9‘—h?JŠT’5ýñù¤Üj‹‡åæ3.AjªÁ‡2ä3Vü4?{u‚q…ÀÍkøqvÃ0í$“žÕ¡¡®Øæë·#ûVíkÖQEQERÑIIE#¶Ô-‚ØÀêi  F$ €xô¦`P*ŒÂàùkóî]¿NõJÈ””lÎöuÚ? ©fv?È0Ä¿JÓK€\Æwç<ôæ¶à›ø’ÿ^µ«¹;XÕc9ÅX--TrD²-œ¯¡Å ëHT7_çJÑR»ˆÒ¢’Ý B±Ïƈ2•É9ªZª¬vÙÜA'9>ÕŸ¬‚ÛïÌs“ê*¦¥¶(3»=Me½ä׈Œ0©‚ q¸Æ®š›OIÆU·`gëUÅéRN›v3ŒÒ2Zê7…®Ç’Í€6ž´ÉEŽ©t ÊùLqÈ=x¨äŠÊþè™×Ëlö=ib·Ž©VòùKsTäŽ5ÔJÂv “šˆÆ±Þ²ÅŠxÍZ¾‘.âŒíË’{sVõåv‘9-Ûž*Åó,Ȫî¯j¹¥Z‹kUä“ç'ð­>‚Î%^2 ŸÊ´lá[{eAÔŒ±«µb§¥¢Š(¢Š(¤¢Š(¢”ô¢Šk峊küÇšP1è8íN})GLR32i’Ê!yûzÓdF™5ŸtÛ®a‘LÀÕ/ÓDñP8*k#P¸2JAèA¬“ûùYÇ,¬öRÀ·RÇ¥QÁbIêÕ~Ò=ÚPŒüÃÍ ’z Øš] w¨ã'½jE™4”ätɬHlCÜœÉßó¬˜í$wA*õeGd^L¨,¬7ر²[&ÈŒ™NèN+VÎÃìãÍ‘N_¯©kd¶Ü”ùŽ´o'e(ˆ·$ŸåRjz“Âßg·e/-éR_ß›ÊˆŽœÒE*3$ÜÈ“õ¢Þö&†ã²%t÷¥‚ê'håÀ FEãïB›1‘“Ö¥¾arÂ6ÂÆ{çƒÿ×§Ý7œB6ö5Q šË3ä…ÈôõªrÚÉmÔó» J«$Rx>Ôšz–Ö$%›"0Ù>§ÿ­ŠŸLÞ÷§{µ;Ô¶9kÇ [åjø¾€ÈWxÀ8«âþس0px5oíPn#J–9c“"7 ·Ò¥Šx§-å8m½p)ñÊ’çaÝ·ÚŸO§Òý(¢²õb+•6ªa˜¹‘—¿Z¿´z\.»e5}_e”qGó6rëR[ ˆÛ÷QÄÆNN{œÕË4mÁoQ¼ U›:60#'ÚgvnâŽácË3•|˜þ•6ós2 u›¦*EÎé…àŸ›¦)“2ý¶tƒ© —ó*“ŒñXÚ€"ò@:R«aÆÛm%¤„J 8¥³‰Us÷:aàýÔª²§ÌPñšØ•ò0ðº‰|ÈxéÞ´ÝRáwFãzuZI%‘-ŽÖ1ç¶)<ì¼à•ÝØ cK.Î~b8ÍM§ –ÑdpU¤`zŸóнin¦Ü[¼ƒÖ­[D 9בR‹($1úu¡´øF`=:Ò›HÏBEO,k±ÑüêÌq¬Q…Œm_n¦¦U¡Pmõ§S©i(¢³µËe„8‘õ÷›®Ø‹Û@ŠÊ%S•ÏqYúͼµ§lŠrµËAi#ÊbèõÊ¥œ…ʧ=+œ†ÅؘûŒ©­(m¤bUÉ€zÖ”Q°(0¤ZÆßw9A€{Ö½…º±Á'ï!æ´ôËd’FÉ8^¨y­ Qœœä/j~¹qö}9È\–ù@«:äÿgÓd`¹-òj~¯9‚ÅÈxÕCÃðM感¹Ç̾¦«è·’gÝÿx{ÔZU$gùF&°0;\ž+ƒ†$škÛ5܈åv·ÌßÝgNµ’êò=Šv+fCè*{g¹™xE?3TZ›’XÜ4’>6Ÿá9«×ÄžaÔ³”wâ­´1ÀåÎǽ*ÜÝÜi.¦ 2¡löÍ\ŠIžÀ4‘à(“Ž*ÂÉ,ÖŠYŽ2ÙíšÒÒ-…¥¾ÂrOÏœúÔšbóÔç­Mb½Mf^ou"ydlž˜ÍaêÐ4l§ø¹±õZ+‚22OSÚª#Ëö¤ù‹²¾F:RYB›üé #YƪÞkçrt=©5UòX:9ÞÝ…L†!Œ% Äñz{çúS‚6UË3ãL¼7v÷+" ÛNèpZ±•oàí ¹Nv< ¹g/Ú’RÊ`Nå[pÿ©Œ²?+f0V%^à ÓQ„P{ }-´QI¸¦K@$¨ãÒ¨¤ü*;ˆ<øÊ«”>¢«ÞZ}¥£⢹·óÓŠ·¨®_ÎX¯åB¹ ‘Ó¡®[sÃ;‚7O$W<Åq"uç©õ­e†’åœüë½õ~ºyó1%ÆcUõ«±ˆíãó$bK ¢ZŸH“a(À‚ä“ShsrŽ1æMK¥KµŠ°åÎRñ=Óy±Û¨ÈQ¼ÓÝéöñ—{nB:nôÛ ÄV ˆÍ¾jY%·’rã=éêË6Üçžõ©cwæÝÉœ¢¬j¼ÿxšŸOYPœ·óÅOg*ï‘8mëëŠÈ×÷E¨—‘r]1‘Ò¢ÕR¹S2¹.6îz§¨ù)y™w–”`ÔºhPŽänÁù}«ßahÐåsÁª%öîPr3Ö«jÒIq!(˜XÇ8ëMò+”_¸2O¥C(‘Õ™;Ôþ”ýµÓz¨aÎzš¿álùò«8g{ÃEËL…”‘ÍtÓ ËÃ䲪‡ùóÝk¢;ò¸ÇûY­Öó7®Ð6äîϧjœõ§S¨í@ëG^+1ÏÛg1“Æv€=ZÆšy/o>ήȹÛè:Öt’5ÝÏ”=½ZÒ`/8VÎ1ÇaǽhŸLñÒ³uÞk¥Œ¯Ì `U-Eži‘ý°[Nô¼HÒ<ûâ±­$[ÍA¤( ‡Î ë\쥻Œà?Ì RkÝ÷Ý óî ÷ÅW¼¾»Ô'.Ò‡ òª÷×óßͼ ‡<ª×—·’ïUÛ´ã [a(7Ü1;sŸ\qZšÉ2Êx‹ 3ëŠÖÒº—sÂóëU"ƒûOV&BJIaíÚ¦†¨ê,òÊAݨ‚·_´Žrìk¥Qµ@À­Áôè0+gùRÒÑKE”QKEQE%T](v‰CdŽ* ®a =È⢒ef}LJ6°ñÜîðVEÜŽóŸ2O •™qsûÒd~eô­M.h¯­þÐ|`ž•wM´C›'Ì{sW,aY#óI-žœÓµ3ÈŠŸÒªxŒ!x¹e ~[ZPL}A½*(£2©–\yc…÷ªPØ»Äg”ð3ÞªÁfÌžt‹û±ÓÞªjÍåÌÌ7IÑsÐt¨îîÝnæF*öAÒ›u33¬®rÍÐz•jÆHZß* ˜çµki÷[ìCí-·§´ýNñ™üä®y#µ:úì»yj~SÕªK[ Ï*ÍûÆmÏ¡©ôý= ˉÀgúÔ¶¶)oµ“©´7sG „WÆEejÜñFઆ#u7OH-îMÛgl óýâk6Öî;—œ!+íQžMU¶šk¦ŸaÛ*9ë[óÈ“i¦IT¢²ä‚zVô’%Æœ%”’E=+bVI¬wÈJ+€Nk“ÔÆw ‘–;=«œÔmDfî¾ækž¿‹Ê !“z“òj´»Rxž/ûÓo!1Í•Â4#oÖ¤¹ŒÇ4'oÈÑ £Þ­½¬Ö¨“Ë“Z<ô5ìR[òœ«`˜ý8çô«†ÚH^c•8%ŸéW/àŽKXÌK·޾Ãò©ïÕ"H® M äd}8•MyŽH×h9ʪé6²Å7šÄ«—é4ÛbxfYYˆc…ÇCÒ™§Z¤~T¢Bzü¸ï[ù$r¸­¬’9­\“ÔbŠ(¥¢Š(¢šê$FBHÈê;R2ïR¹+‘ŒŽ¢‘†T€pOCé\Üb÷ûQs+›sÁ#ŠÅ·[ŸµîyXØÃõ•¹û^ZL©nCúö¯ÿÙÿØÿÀððÿÚ ?èë¢®ŽŠ)(¢Š(¢ŠZ(¤¢ƒÒƒÒŠAÀ£  RÑE%袊)ih¢’–Š)(¢–ŠZJ)(¢ŠZ)i(¤¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢–Š)(¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢’Š)h¢Š(¤¢ŠZ(¢Š)(¢–Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š)(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š)h¢’Š(¢ŠZZ(¤¢’Š(¥¢ŠJ(¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š)h¢’Š)ih=(¤¤IE-QEQE%RÒÑE%-´”QKE%%QE-RRÑE%QE-RRÑE%RÑKIE%-´”RRÑE%QEQEQEQEQERÑEQIE´QIKE-%QE%RÒÑIIE-QKGáIIE-RQÞŠ(¢–Š)(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¢Š(¢Š(¢ŠZ(¤£4QEQKEQE%RÑEQIKE-%”QE-´”RQEQKEQEQIKE-%”QKKE%QIE´QERQEQERÑE%%RÒÑE%-´”RQEQEQE´´RQE”QEQEQKEQE%QEQEQEQEQEQEQKE”QEQEQE-RQEQERÒs‘‚1ô ç#‘ŽüRs‘Œc´QEQERÑE%RÑE%RÑE%QKE”QEQIE´QEQEQEQEQEQEQEQEQKE”QERÑKIE%QKE”RÑE%-RQERÒÑERRQEQKE-%”QE-QE”QEQEQEQEQEQEQEQEQKE”QERÑEQIEQE´QERQEQEQERQE--QE”QEQEQEQEQEQEQERÑE%QEQEQEQEQIE´´QIKEQKIE%RÑE%QEQEQERÒÑE%”QEQEQEQEQEQEQEQKE”QE´QE-””QEQERdÍR;lBÀæŠ 8téŠ:Ð=h¥¥¤¤¤¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢–Š)(¦L‹*Øœ PÃpÇ4Œ»—§µ8ÀÆvíKÇà)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’ŠJZ)i)h¢’ŠZ(¤¢Š(¢Š(¥¥¢’’“vìe½hÀëE-QERÑE%RÑE%-RQKE”RQE-QEQEQEQEQERÑE%´´RRQERÑE%QEQE-QKEQERRQEQKE””QKE-RQE-¢’Š)h¥¤¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZZ))(¢Š)h¢’Š(¢Š)h¢’ƒÓŽ´QH3z(¥¥¢Š(¢Š(¤¢ŠZ(¤¢’Š)h¢Š(¢–Š)(¢Š(¢Š(¢Š)h¢’ŠZ(¤¢Š(¢ŠZ(¤¢–Š)(¢Š)(¥¥¥¢ŠJJ(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJZ)i(¤¢Š(¢–Š))h¢’Š(¢Š(¢Š)h¢’–ŠZJ)(¢––ŠJJ)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¥¢ŠJ(¢–Š)(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¢Š))h¢’ŠZZ(¤¢’Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’ŠZ(¤¢Š(¢Š(¢Š(¥¢ŠJ)h¢’Š(¥¢ŠJ)h¢ŠZ(¢Š)(¢Šc>Ü [¦)íõ9 Ÿ¯áN‘ÓGjZ(¢Š(¥¢ŠJ(¥¢Š(¢’Š(¢Š)h¢’ŠZ(¤¢Š)h¢’Š(¢–Š)(¢ŠZ(¤¢Š(¥¢ŠJ(¢Š)ih¤¤¢ŠZ(¤¢––šÊ[£cÜRö¤#Ò—ÐÌÑE-QEQKE”QEQEQERÑE%-RQERÑE´RRQEQE´QIE´QIKE-%”QKEQEQIE´´QIE%QEQEQE”QKEQEQE´QIE-RRÑKIE%-QE”QKE-%QE%QE%RÑE´QIE´´RRQERÒÑIIEQEQEQEQEQE´QIKE”QEQEQEQEQEQEQE´QIE%RÑEQE-RQE´QIEQEQEQEQE”QKEQEQE-RQEQE”QKEQE´QERQEQEQKE”QE´QERQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQKE”QEQEQERÑE%QE%RÑEQEQEQKE”QE´QIE´RRQKEQEQEQEQEQE-””RÑEQERQE-QEQEQEQEQEQEQE”QKEQKE”QEQERPh¢Š)h¢Š(¢Š)(¢–Š)(¢@¢––Š)(¢ŠZ(¤¢ŠZJ(¤ïE%-QEQEQERQE-QEÑœ.î¸çÒœ ã=ñG×…:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢’Š)h¢Š(¢ŠZÿÙÿØÿÀððÿÚ ?èë¢®ŠŠZZ(¤¢’–ŠZJ)(¢Š)Vœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢–Š(¢ŠJ(¥¢ŠJ(¥¢•iVœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:)ih¢’ŠJ(¥¢ŠJ(¢ŠU§/zrÓ©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™L¨è¤¢’–ŠZJ(¥¢Š(¢’ŠU§-9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtRÑE%QE´QE-””«NZr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¥¢Š(¢’Š)ih¢’ŠJZU§/zUïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑE-RQKEQE%QE*Ó–œ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦TtRRÑE%QE-RQIEå§-9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÓ(¢’ŠZ(¢–Š)(¤¢Š)iVœ½éW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠJ(¥¥¢’Š(¤¢Š(¢ŠU§/zrÓ©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔt”QKKE”QEQEQJ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S*:)(¢––ŠJJ)h¢ŠZ)))Vœ´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠŽ£¨éh¢ŠZ(¤¢ŠZ(¢–ŠJJU§-9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtQKE”QKE”QKE”«NZrÓ©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtRÑE´QIEQIERÒ­9iVN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ™EQEQERQEQE*Ó–œ´êu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TuQE-RQEQKE”R­9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GE´RÒQIE¨¢Š)h¢’•iËN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦v¨é”QIE-RQEQEQKJ´å¥^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S*:(¢ŠJ(¢Š(¢ŠZ(¤¢•iËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:(¢Š(¢ŠZ(¤¢Š(¥¢•iW½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÓ(¢Š)h¢’Š(¤¢Š(¢ŠU§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑERRÑE%QEQE«N^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑEQE´´QIEQIE*Ó—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtQE´QIKE”RÒÑE«J½éW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GEQKE”´QIE-””S–œ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE~•GKERÑE%QEQER­9iËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢Š(¥¢ŠJ(¥¢ŠJ(¢ŠU§-9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtQEQEQEQEQJ´å§-:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GEQE”QKKKE”””S–œ´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠÿÙÿØÿÀððÿÚ ?èë¢®Š’Š)h¢’Š(¢Š(¢Š(¥¢Š(¢’Š)h£½QIE´QIEQEQKE”QEQEQE-QE”QEQEQE-RQEQEQEQEQKE”QEQEQEQKEQE%QEQEQEQEQEQEQEQE-RQEQKEQEQERQEQKEQE%RÑEQERQEQEQE´QIE´QEQEQEQERQEQERÑE%RÑEQEQEQE%QEQE-RQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQE´QEQEQEQIE´QEQE”QKEQEQIE´QERQEQKE”QEQEQEQKE”QKEQEQIE´QEQE”QERÑEQIEQE-RQE-RQEQKE”QKE”QEQEQEQKE”QKE”QERÑEQEQEQEQERQE-QEQE%RÑEQIE´QIEQEQEQE´QIEQEQERÑE%QE´QEQE”QKEQEQIEQE-QEQE%RÑEQIE´QIE´QIEQEQEQE´QIE´QIE´QIEQE-QEQE%RÑE%RÑEQIEQEQERÑE%QEQEQKEQEQIEQEQKEQE%QEQEQERÑEQIE´QEQE”QEQEQEQKEQEQIE´QIEQEQEQE´QIE´QIEQE-RQEQEQE´QERQE-QE”QEQEQE-RQE-RQEQEQEQEQERÑE%RÑE%RÑE%QEQEQERÑEQEQE”QKE”QEQEQEQEQEQEQEQE´QIE´QIE¨¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¥¢Š(¢’Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¥¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ( ñAâƒEQEQEQKEQE%RÑE%QEQEQKE”QEQEQEQEQEQE-RQEQERÑE%QEQEQKE”QERÑEQIE´QIEQE-RQEQKE”QEQEQEQEQEQEQEQE´QIE´QIEQEQEQEQEQKEQEQIE´QIEQE-QE”QKEQE%RÑE%QE´QIEQEQEQE´QIEQEQEQEQE-QE”QERÑE%QEQEQERÑE%QE´QIEQEQEQEQEQEQEQEQEQE´QIE´QIEQEQKE”QERÑE%RÑE%RÑE%QEQE-QE”QERÑE%QE´QIEQE-RQEQKEQEQEQEQE%RÑEQIEQE-RQEQERÑE%QEQEQKE”QEQEQEQEQEQEQEQEQE-QEQE%RÑE%RÑEQIEQE-QEQE%QEQEQKE”QEQEQEQKE”QEQE´QEQE”QEQE´QIE´QIEQEQERÑE%QEQEQEQEQEQEQEQEQEQEQE-QE”QEQEQE-RQEQKE”QERÑE%QEQE-QE”QEQEQEQKE”QKEQE%QE´QE (¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢Š(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢–Š)(¢–Š)(¢–Š)(¢–Š)(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢Š(¤¢Š(¢–Š(¢ŠJ(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¢Š)h¢Š(¤¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š)h¢’Š(¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢Š(£µQEQEQE-RQE-RQEQKEQEQIE´QIEQEQEQEQE-RQEQEQEQEQEQEQEQEQE´QEQE”QERÑE%RÑEQIE´QIEÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢Š(¢Š(¢’Š)h¢Š(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¤¢Š(¢–Š(¢Š(¢’Š)h¢Š(¤¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¤¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¥¢Š(¢’Š(¢Š(¢–Š(¢ŠJ(¢Š)h¢Š(¢Š(¢ŠJ(¢Š(¢Š(¢Š(¥¢Š(¢’Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢Š(¢’Š(¢Š(¢Š(¥¢Š(¢’Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¢Š)(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¤¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š(¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢ŠZ(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢Š(¢–Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¢Š)(¢–Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š)h¢Š(¢Š)(¢Š(¢Š(¢Š(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š(¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š(¢Š(¢Š(¤¢Š(¢–Š)(¢Š(¥¢Š(¢’Š)h¢Š(¢Š)(¢–Š)>´Q@¢Š(¢–Š)(¢Š(¢Š)h¢’Š)h¢’Š)h¢’Š(¢Š(¢–Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¢Š)h¢Š(¢Š(¢ŠJ(¥¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢Š(¤¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š)h¢Š(¤¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢’Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š)(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢–Š)(¢–Š)(¢–Š)(¢–Š)(¢–Š)(¢Š(¥¢ŠJ(¥¢Š(¢’Š)h¢’Š)h¢Š(¤¢Š(¢Š(¥¢Š(¢’Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢Š(¢’Š(¢Š(¢Š(¥¢Š(¢’Š)h¢Š(¢Š)(¢Š(¢Š(¢ŠZ(¢Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢–Š(¢Š(¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢Š(¢Š(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š(¢Š(¢’Š)h¢’Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢Š(¢Š(¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š(¢ŠJ( t QKE”QEQEQEQEQEQEQERÑE%QEQEQKE”QKEQE%QEQEQEQEQEQKE”QKE”QKE”QEQEQEQEQE´QIE´QIEQE-QEQE%QE´QERQEQERÑEQIE´QIE´QIEQE-RQEQEQE´QIEQEQERÑE%RÑE%RÑE%RÑEQIEQE-RQEQERÑE%RÑE%QE´QIEQEQKEQE%QEQE-QE”QERÑEQIE´QERQEQEQE´QEQE”QKE”QKEQE%QEQEQEQEQEQKE”QEQE´QIEQE-RQEQEQEQE-RQEQEQE´QIEQE-QE”QERÑEQIEQE-RQEQEQE´QEQE”QEQEQEQKE”QERÑE%RÑE%QEQE-RQE-RQEQKEQE%RÑE%QEQE-QE”QEQE´QERQEQEQEQEQEQEw¢Š(¢Š(¥¢Š(¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)h£½%QE´QEQE”QEQEQEQEQE´QERQE-QE”QERÑE%RÑE%RÑEQÞŠ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¢Š)h¢’Š)h¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢Š)(¢Š;ÑEQEQEQKE”QERÑE%RÑE%QE´QIE´QEQE”QEQEQE-QE”QEZ(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š)(¢–Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢’Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢–Š)(¢–Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š(¢Š(¢–Š)(¢–Š(¢Š(¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Ž´u ÒÑEQER´QKE”QKE”QEQEQE-QE”QKEQE%RÑEQERQEQEQEQEQERÑE%RÑE%RÑE%QEQEQEQEQE-RQE-QEQE%RÑE%RÑE%QEQEQKE”QKEQE%QEQE-QE”QEQEQEQERÑE%PN[™ÉÅ襢–Š)(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š)h¢’Š(ë@ö¢Š(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢–Š)(¢Š(£ð£§J:QEQEQEQE´QIEQEQKE”QKE”Q@¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢’Š;ÑEQEQEQEQEQKE”QERÑE%QEQE-RQEQERÑE%QEQEQKE”QKE”QERÑE%QEQEQEQEQEQERÑEQIE´QIE´QIEQE-RQEQEQEQEQEQEQEQEQE´QIEQE-RQEQEQE´QIE´QIEQEQERÑE%QEQE-QE”QEQEQEQEQE´QIEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQE-RQEQERÑE%QEQEQEQEQEQKE”QEQEQEQEQEQE-RQEQEQEPh¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢Š(¢’Š(¢ŠZ(¤¢Š(¢Š(£Ò襢Š(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢Š(¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢ŠZ(¢Š)(¢–Š)(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š3Ú“88 œQKEQKE”QEQE´QIEw¤ÎN(4´´RQEQEQEQE-RQE-RQEQEQEQEQERÑE%RÑE%SpCäýÚa %$ãm4‚$'µ:ŸN¢Š(¢Š(¢Š( ) Sɤ,ZZ}-%RÑE%QEQEQEQE´QIEQEQEQEQEQERÑEQIEQE-RQEQEQEQE=©¯’0?3Hrx˜öZhB?„}i#°¥©)ÔQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE´QIEQE-QE”QEQE´QERQEQKE”QEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQERÑE%QEQEQEQEQEQERÑEQIEQEQEQE´QIEQEQA8ëI4™ÁÅ´´QEQKE”QKEQEQERQEQEQEQEQEQEQEQEQE´QIEQE-RQEQEQEƒœR3F)ih¤¢Š(¢–Š(¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠÿÙÿØÿÀððÿÚ ?èwðj÷÷­éciFÒûWø€ï[î›Æ7a}»Ð€*áWoõ¢ ±®ÔM£òÍ*€£j®1ÚRS©h¢’Š)hhñY×nÍV]¬IÜOJæµ9žH‘Ypä–bzžx¬MEÙÑc÷I§Û²ÈÓHâ0>•k@´ÚZæLYÑíüµiœqúTvìehù‹–??ÖªY†»—1¯-!oÌÕ{0× òK–o¥>é¼É|•2}I«Êëìé‚‘Àõ¥Ô¤Ýrb"08×FÅSØó0Ú:Uo-æ#¥Oin#fã&¶´{ ™[¸­]>Ð@ ·qK&ö<"êO¯µ6û{–- Xˆ'žät—E›v\ÈÈÏz¨ŠH`¼|Õ„žLÖ0n=jÎYÁ‰O;w)üzV‚ùòy[À# ¹ïƒÒ´l€–M›°ÊA_zK”̧£o#Óš~³o‰^LŠ=;QªC›¦#ßj®è~Á,]÷‚?ŸøÕ]ÇûH;‰–joø”˜Q--™Ùx˜èÑóRèLË©(SÁŒ–úv§èÌËxËü; onjâ2 $P»võãÖµãx–I”¨@8þZ(у"¶ö5X³.Å<ƒÑ¿É—z²¡ä½³Š£.õ;[¿jE`ŠÄs¸ {S£E~øÈ>©C£qëÞ ÜûYPn'nNz …K2º¢îùŽ{TI¹Õ‚ŒóÉö (Dw¹üøýhÀTB¹î”ª…sŽEfêÉ¿QB¼üªªz‚ï¿} Q½M÷êGµE¬6úî@ïšf¡óÝÇòª2üù—±Ä¼…®[…kÅ$á烓Ç-¨é]ÏÈœÿ\~•fۉČ~TVÈ™µ©§þ4’:ŠÝ¼ÍI¦a…ÞIÍW´ùµeÇ«vù÷ùQE†]ß1±Åmkræ(mâ ªœÈG¯Aýk_U“1Çdæ>㊀&ÕÁù˜çÿ­Y–ÑyóÅî`1ïžJ¡k–tB3¹¸úw©õ{ѧX3&Ÿ–1éï[úÅèÓ´üÇ€ì6Æ==ëWW¼û“2ü¨==êõhb®âŠ(¢EQER6vü¼çQÎJŹz©îqšdĬ{Æ*•ÃùòªŒ`I9®zò_µ\1Žçÿ¯Y/ç͑ѱ ~îRÝ 'ð­ Ù¦\îÿhþurÙ¶éòîíŸÊªiR7· tÜ £áÙíLŠx1äýxÅTÑ‹H ð'ëšb¶>Òäå‚Ê©¹-,íÕ‹àUfËÍ1êZLV„QªCÏ"·-mDp Û¸Š×Šˆ…nË“QI#ÌTc“Ÿj&¸’á4P¹' ´’K$Ê@¾õ˲¤ª@^ÙéY÷lÌé†ßá'…ªw,Y‚>xíHœÊÉŒ¤þ£I+íÀª‘€YרI7Ür°Ú>•"åJIœ1p~˜5$#l¶pÛÁýjÄìë·¯ÞÏ×éZZûUÇ8Ü×éWuÄáG\~tñ£ØÜ‘ùU?”Ûí<œ{㊬H0zžqQÙ‚&g œ&×5>‚6\K.ÒNÌ~µ6Œ»ZGÇPjY9›±óuöô©îVè¡`»dÚÝô©deûAVn¹„†ÙWîŒt¿Z‰ØJ%n€ ô¿Z›ÍYñƒý*¤¬UqT¦.dvZRØ®iÖ²[C$¶¥ÿÒÜÞÞ‹Wí$¶¶Y·ü|ÜçÕEü*ݼ°D%µ, Àe©4É1¢ç—_»ýjœÀE".yeûµ^@Õå—¥E:¨MäùQÊ &â2ÙÇPªŒ°5ž¹›W‘û/ÍŸÒ©d¿wÇNj‚÷®þ‚­O”‚_,eð1õ©Û+íl U™7Ü'Þb™ .yk sØšlcìÖR³}óô¨Õ~ÍbäæqÒ¥Ó’Q`ïÉV‘H¯N Ô¤ƒMg!ˆ2?.Z–4Yo9æLóWíTyÎÝqŒJ¹£ ûK08Æ0}*Ö–ƒÌfˆÅQ×­e¸½M®6*ci=úÔ^%åÔ>÷ÊŠ/§ëPkÑ<÷£œª¯ [õÔVýQIEQEQQܶØú€¿VÔ¤òì&aÉ#oÓ'ëí´së…üê®à‰ˆ†A9Ýüë\,{eIÉoçYŠÃhDg“RKŸ²º) ¶BãØU™ÉM-ØŽ=©. ];h$ÏJƒLSö’Àü›^*?!R8ç¿¥3FVW•‡÷ß΢ıÊBŒ¼ÏßÓ® ¢‹(¹Ù´î‘¹öëUbYß–2K6ãíZ(vÝŒMojq‘r|¡‚íbDZ|¤*0<ã&™†\î °ÁATÙž=ÎYL€å1ØUfwŒ$=©¡Ú\³`{Š¥,Ïq#<‡,j¤Žò¹w<Ó ‘A'§5â‘ô¨wçæ’ê4*N95kOFžö0ÊX/$U=L—hJçÔ—Mþ”®T3VuÇÆ£´à\þf¥Õ ݽ~QøPbóÞßÅAî„9ûÅø¦D7ÄüLp*[u¼‹€óùV¶•BeŒ¨Ô§£`‹eÀ©¨§-˹éŒcÓÞ¨ßæ=FWfÈÀÿ?…S¹Ê^ÈIÈ8ü*)åò"ÜÄeå¨äo&݉êò…šíå <¼˜ÅCwq¼~kp±ð‹Ýɨç™#C3tN¼j;‰‘ÈN6ð«ë\ü(¾i·åðO©&²!’Vº–˳€O©ÍdY™ ᜗l}Mk^N?·by»Oõ­ ¹AÕÑGDÆ´§›v®¡z(ÇøÓ¦™ Ïj[3˜{úRÍ"îx ýïRsÞ‰nhs™$Ó†G`rdÀ>ÕbàýáÍFc‘ñß§M/‘Ú3’>`?ÏÖ–WòQe$v§LâWÎp:S”¬–°‡ä9RE ‰hÜe¥OÞùhÝŒý{VÚlÕRÙÈ­Zm¥$©G¯9­ N1 ‚D¼|ÔË.%™X’0‚ Ð¾üÀäýÐ?ZHÉY3Ï Qp—E³ƒ ý:þ”ÍOß;]£ð¦^÷LݳÇáW뢭Š(¢Š(¢Š(¢ŠdÄðOñÓš©©•û( @格Ǡ÷lÕx‡UãrãõrŠ 8+€+6%,YW¸5,ö±•`†ãŠdÇ̱÷˜‘•Õ¸ã™;y–Q°l:åXvžÛ-þlpå¦Ò&[‰®ò‹ƒØòZ›M“ʶVo½Ê ˜Éå –DÝ# ÕlJ–,òDâNût«T¶e1ƒ4ƒŠk¬’íÞ¡IùˆÏ¥V&žD3uo˜ŒÔ2«I">¸¡Àg&›uÌ›€ù6´Ë¼Om  n@€ªdްj¶GJÃ+e:*"¬åîEBC 6Žæ­Y¡ ]ÇÌÕÐèvæ8L®¸v­½2%˜aT™ó&ÃɬK©K“»—ÞsYS1’ë ×qÔ“ ¢CÀÂçÐÔó(ŠV†&ʆw¡©ÝDsy1œ¨`©I +L¸^†´p^it Žƒ;¿®3Wyy$‚Ì:þf xÉr7¯=³œUŒø2&sÈÎqU&2‘¼gëžjèšcn C†$:Soâ2I –QÈÜA¤¼tÑŒŒÎ+îOµj®ù"$m€8¬»—óïß#äBx€¬¹\Ϩ>á…FÆ=)Öñ™5(ö)®$émЛÔ!pªû©ÖÈ~Ö¬ ‡4XIöu¥n™fü¹þ”¶mæê†Gè 7åIdÞv¥$‡¶â?LÓ‰–ùäaœå‰üi–„ÉrÎ{óE–^áœ÷&¬j */,Çš}̬²XÓ®%+"¨þ#QêÌåãµs±Ëþ}©·¥·¤yËȦßi¤œ°­C[6Dò€f?È~Uz(Y­‚åa±o_J½d[QÄd>õf@×p£Žª;U«§—QD|¨*£·½Or^ð+•@àf“{Ä;yb)©pöêZà|¿3c’ifŒ îòMFëæË&cÁ=:{T ¦]­æe6ñÇ?J‰—ÌÁ/”Ûÿê©]MnRQE-QE”QQ\dªûª†®3XêZªê)õ&«ÆL[Ê Òg +6Ñšf„f\àµNØ´EŒ|ÈN? p dòæ ·¥?ɹ‹–9çÞ” óLS&Iõ¨cýÚ¨í?R$Ç'–§jâªe£”'D Å]Ø$*HÜ¥ºôÀ­¨!QÆïó lîé´Õ© beG˜/9ªÌìóe:3šÊy^kÂSî³üÇ–ëâ$U·€?‡“š×¾³ÛbFZ1“Z–ÿèË’£&ªTb°ˆàVP>´NvKÁ?JyaÔNFU\NË»ûn«ÌÀ®à~ðÀ®ŽæáÓ|dëò+fy[“ÆáòⳡBx$™ÉÏá\ÔQf@½\vï×5~üI*rsR«!¸[€2EY£{«ÝŽõúÔÑ2ùÓ“Ž•ÅH®{òA˜ç­[ó€·Ï;äù‰=Z¬™6ÃÆK?'4ØÐ›`U9Î{žÔ–ÐåK ¤ç¹íIcab0»Z¨Ç!@㊢ͻo\ñª¬Ù çþ5­´[Fái[ïϺ²m…¥cÈqI©¨ÆÛ@2 sPØ>4Ó&>Ꟛ«ÛX—ÆÞµ ú|½jŽÏ3ôÂ0úü¤Õ]9rÒ>pJ7ãÅUÓ“åó‚U¿)ú:ä»÷¶ï7|S´ñÁnø¨îwM¨çpS%--ßrFÛ¤¼ëŸÊ®˜£þÒ‘÷™X{ äâ§’5[‡`ÅHô«ˆ.•‰e8&´¤+„ ¼ŠXaZËåÅ£ÉÒÊ¥Î`kKšcF¼».â=© >Tsƒ# cÒªÆþM¬„d3°Á·z$h­›³3vô¤"CÌGnÆ ¸ô戒bÞd|ydÇ¥¤¹Þ˜Îz™ -Úd9ïWRÍ¥@ãl½YÅÓ# ¸ð;UêÛ­*(¢’Š(¢Š(¢ ”ï˜ è•“©Kç]ˆWþYÿ3Tnäó.„kÿ,ÿ$F>`I˜þ4í=#UÞ 1÷Í-šF‘†nöÅ#-¶C}î¬ùþX=p3×¥gH1¯NN#Ç\TZëíµ²Bç­;Zô{Tî®zѬɈ¡ýÑQÙ Ú;&xœýsÅCo“¦4}˜óõíQ@7i¡;0§XÛ h£'$ƒN·€BˆOñ >DQ¨="¢ENíì*þÂõfÿGG;š µV—Q=É9ª(k­ÃëP[äܳg[¶ëÖUÉÜIïIÌÄ ã9$ÑÌä)=s“]{3¿ÝÆÐ|×EdbŠ%”åBíP;æ·mÌk;ò6íëU¡]±D‡ wÆj‚&"‰Y@#Aûªx?Je…ï9ˆòñZÕÐV½QKE”QE/Z¯ íf°Üîx>•‹Ë+Ü3Ò9;qÚ³£ùI”œ³±fÆu[r$ÂüÄ€¿_þ½F÷(¶‚7Àù˜€¿ÅÏÿ^˜ó¢Û¬gäà ­Œoqç„9ôªðX½ÔâDL‘ëPCdg›Í Ÿ­:ö7ŠT$‚®Ù>ئꖒZKb~xíŠf¡nöÒF [œŠ´ûÀ`<{þ§üš²Žb;W*/0zŸó𳏯.FWzŒõ¬õâ/-—ø‹zšÇ$… ŒrMd³åI?Y°šC YYˆaÀ=+_A¼Üì•Ø«Œ ô­]åÌ›dbAU™XI…áMK²‰ræÂÔ—q<ˆÍ)ç8_¥UóQÔLI¨¬Àò.äYâp6Öz¼€ìVäž*@…fŒ~nHÏ&­Å 0<䑞jÜjâNsÓ8¥š$jÅŽt§\Z³[G+7sǵ-ŶbŽBÝóŠBèÍ´¡GåaÓ5É¥ J ˜Œ0kÁ§Æ ÅÛr1üjå¾ÕNšŒTûçš·  7©+õ¨¥ùCÆOËsíÞªËò3ÅŸ“p9þu]ø&<ü¡ÏóªZ†QdÏ@ɪ÷ ÇæëŽ~µà(¯Ûoýj¾ª¬ö2!#`Ü♩öPC¼½G©‚ö±^1É©,£Ùe·CóQj€ZÆ­Ðäšu²‚5?Z±7Í!SøqíSÈ7JTþ{TÎ7HAôâ³df—WD<„樹/¨m<…ª™/È=RkXf—wï_%=†iL1³ó°È¤Á†'?ÄMG¥+ă–ùsL´ Ùã–=j;58é‚Mo¯”DŒöÏ¥oAåG°Hzœ…XúVÜB8ö+œœp¾´¨®ù–e1F¡¶Žç4åŠC\\)Š$V;œšQÌÓŠ ($ïÉÊ…ÁþPIi’KaF{QÎòsó`sé\õÓ5¦¡+Ĭž[õÇéøÖLûío]‘v78÷¬ÉwÛÞ;"»µ××q]UQERÑEP*»åbeV ÎƸVKgU!X>ÝÆ³æV+nÛšâD.eË^çùUG·Tó ¿6Õà“Æj³BÌ-ó``}jSqåª'ñ¸éÇz·. m8a#pKœgj[ß#lq`¼š€Ëö” 'ÞV @ô5Ÿqt÷á<æÎÆQ–v¼ÙæCv¥•š&`GîñˆÛùÓndu 7*Ón$pÃ?tŒ-6R㯠œlŒs€j½ÂâVR;ÓÑZ+v“8)Æ*í¤m «\ÆÛýjõ¢ óú|Øæ®È Ä09ê+b÷j¨»˜ò?*ѹu¸dã5Ip’Ä6á÷`äz޵‹n˜»…q†.ӊ̆?ôÈÓ¡'ü*ÔÛQ7¶îþõ±~"µ…va ew÷¾+Fód1¸ásP»~ì2ã…•›<›£ ÊÂ/z§3e3ÈÏQµÌˆ¼ù5 íeîY·@G±­{ o3QÞíŠ ûÔ´ƒuáwþ1V'Jƒw¹Túê4>\7'-Ž”ûë•1m_›=Iª²±òË™ëïY,ä¦O#õC,Á{r1V¾f_/åèqÍn.d‹ÉOf8äV˜ýä~X§'=]«4QEQER6vœÔÙwyM±¶°‘÷l%N @rÙVÁÝX³Û–LÜç¥gM— ŽynsP#ü¯ êÚǨõPL‰¾øÆÖ=@÷ªÞvbd?|¾Õ$dæmÊuÇ©GÛ¬´Ë¿žÓáIþußÍn8ái`! ……,?41¡èÜÓâù£D=ÍH@ ÀtQÛÛŠ‘†úO<è*6_1åbâ0w5!•Ë*'–GȪ+x–=XÈœíNæ›>Vž²4оêg’=i«“bŒÌnƳش7·€‡Ò¨ò’Hìpz ¢ Fò»u'­i“sæ0àsøÕ93rºçVtå&ãÌn@þu´ƒt²È¤ªqœVÔywžec €Äw­XÉc,¶Ç»Ò3VÚ¸ŽÕZ¯rÂxÙ£`„àz“PÜ0–2êŠ>=ÍDÌwFB—uÀ{ Ô³<ѰRì a Š2^e oaÐzUËdòÁR>n¿Jݰ‹ÊB„|ÝOµjÚ§–„c ÔÔÕr§¢Š(¢ŠZ(¤¢Ud¬¢ix*+îÚtr(ÎAQÇÿ®³gŠE$4e†x" ,¬£z”9ÅgH7`2m#·z¥ Ý€À©¿¥I( ÷U°Àu楸·œ¢·J–aˆ£=–œ]]2ß,xùqÖ‘™$Œ3aWøqÔÒ3+G¹†Õwi±T°'$ß'ÁPéçŸ~*-£ ‘ŒÑ7– @X|‡ŠK¦0¹ÎÞ´—JžA§ÛFEƒãïH¿ÃúVµ•©]e<4¡ž´míÊhÅ ÈXÕhDå¼2k%å}G5•ØåMZ–QqáI$}ÚЖàD±BI*ü“ˆÊ‘Š’™Tà““Í_ÓìÜixçqÏz·i€¦N;œÔ3ƒœ³|¥ˆ\vJûÌf˰ØI£øVªÝ. °“€;-‚èÂôAŸÖ˜à4ÊapsM` À7N0)èØ €å‹b­Fà[2ó3Èâ¬+£•îÜU ]Ýv°ÏçYñ)([®ÖΩÆ>]ÞŠŒáă8ÝÆ0ÁÆqž0*27´ØP­º£GäiÈ›b FéíR*â-§ªô§6vóþsÍ §>ŸÏššÉ„ºƒœœ)àVt¬Zé‰'ô¬É½Ãdœ ! =ãÈÙ Ùô¤MÒLÌI8íNRÒ\1bN¤¼å‰vä‘»ñíN™K:(4²¡i@æ¯ØÄ`""¿69úž•jÚ2’öåúÕ«Xñ'”ÌF*ôìCmaÛ’Eh^ȱÅ”N ŸšB½M]ºuUŠÚ¦b@1¶5¸­6Ët­Ž?ʧ¹¹Ž fŽ@ýx­«Ë´¶´{ƒÀP1õc÷jŠƒ‰v«:z…¤Xêµô†Y^NçåQRAjÏcrs¸ØÖ…’˦ìsÈ}ȧ±«¶ÖêÖj¬yVܵ4—qF™'suÚ¿•XŸT·†<’B>àüªY¯¡Š<çsôÚ*j½Vh¢ŠZ(¤¢ŠQÖ€psè)s€O¥g#³y¤s!-œú×+$ŒagÇ.K~uÏHäÁœd¹?Ï5'íóÒ°Çj‰>X0 %Ï#ŠvÛ…RrÇ‘RaZEîÎ1ïK€ÒY™‡eè(4˜,I íR;H£¢ÈEEIæÑq»Sò¨­©Ç—‚Âü³Zš†"ŠF1éšÓ¾;j:-Ib‚X“–!G§?ýjÐÑí–K$yrÛ‰À«zt!­cg$– Œ|ï3€‘¹U¹#ŠÊŸíä YTzžqYò`NÒ66îeQïOUÄ™ELŽXš²·-œ¤œ*c|ÌMX3ʾP*€D¦æO»ü+ܞƫ ?&ÕïeáIÄkÝcU©‚Ý®e''ˆ×ëÞµ+¨­Ú(¢Š(¢Š)ryÇ\qH‰WïI÷Q×å„}®œ ðzÒ¹¦‰cnO”v'‚+¢¤Ÿ2àcó¦4‘¢LnrOÓš‰™a1–çéÍDÌ £Ò$‹ÄŽ›‡åÞ¢©09À$`ÿ:R\±À,*ybQ!‘ß pWMhµ’%Á‘ÜÎpzƒW¾È±ÎYØpF*f""Ëûô÷­R¢+`-A^'îûÕò6Dýý+ R¼šÇPhac·ãÔ×;«ÈöwíDíOrkR•­¯L( \gëV-¤i#ûAL3tžõ,WÍeûݪ#¸&öûǦ{U‹(U¥Fb6(ÊSëV´xâ[¥’wÂ'*=MYÒ£&óen|¢®Í8HÙö±ì8â¶nuHâ…ž4flàdqZwñÅ tžÇ‘uÚ€‰ä#o,¤Ýët¹Ô9eæËjÇš¯P;‘Vl­’Ì‚A9^*å¤ hrÊI**í¼KnÇ#µ;p£æcŠ{Œ(#ïŠ{ êÇô©¡MÁ¶Œ` ž÷«mžjhÓtl@è Uä¦W©ùWòªŸxezôZªÁŽqÔñRÁˆƒ®r}ÍI,j‹ÐƒÉ©#QLy«wæ1l9ËíR9?…XœIw4AOVÚ©=OáSJ ÍÄ`}ÜãðîjÔóÇemÆ0£ŒúVÅåäZ}˜`í\(íZѺ¹KKo“’ª˜Å²\HÃb“!÷-À¬x6,"y ”ˆ–ÚzÝë:‹™ˆe_÷üªÑrTrcx‰ºôô¤bQut2^¾{œ…gÌ¥®[>¤éT$]Ó·¦HªkÌ®6‘·ŒÕn®ÀEWÎ\Œt¥,Ý×>é¥ÜÃcoÝ4íÌ0HÆÞ†´¸p sŽ>jáížqÍ['Çœ-®žC*¨!' T–÷ Ë2€v'sŠ|ŽEå£."@då#ˆõ5X¶Ð r$~Õ\¸U FB-Io¾H‘¤?<£yö©è r_.}³O J¢·$ò}ªüKÌMœ*I·ÜUû% $2¹Â$›9úUËPÒW8PHªz·Ÿsf0—>ÂOåLÕEÅÝ¢ËD‰˜äáQÒ£Õ{‹U(œHNO÷@¬´¶¼V °MÁséYp[\\²D ¸.ïJΆÞ{’‘çjµoGj±¨~aÎïç[ñØ¢æ$ÃGaÜ÷­¸í•~EÁXÇQI)Àh€ 1 3ê*¥ëm-‚3U¯ÆA9­é+fŠ(¢Š(¢ŠGm¨[¸TWN#·f' ‚÷¦Ná!bN ¨oÚ¤¶î3ޏë\ãI—Úœ–ç?αÙòÅTgÔâ¢kEÜ£qÉ9Љ­³"¨±< ˆÛî*òMX–"‹63Ö¤žÝ£VÞpNæŸ4T«c-Ú–Â%‰Üù™Ïݯh1G’3¸ÜFJµ¤Æ‘Üß;Uo]ýžÌCòå}ñÞßì¶ò"lx>¤S5ÛÏ.ÛÉFÁ“ƒŽ¸¬}2Ýf‘"Œ±Ë±è£¿ãXšu¿Ÿ2 8^¬Ç°ïYºl ò(胖5¿pÿ?ÊÖ8ô8«÷§÷ÄFÇ8_|UÛ¬™ð áیԒÄ™wÉP0€cõ¤‘bG;ر| cõ¡Ö4œ’GlR"DÊÊ#ÆãÈÍI QH ˆù$½©ñDŽ8Nù5Ú/ØnX®Ñ¸gÜÅM*¢é—nT/ïñ¥>`©§ÊØÁÞ úvªºPÆd~Žî?*£¦…ÞÒH~VpXf‘îc:ªÂ@?J{Ü¡ÕÕ@ÆÖ?JQp‡R :¯J†e/«±ÿlUyÁ}QØ÷’ u/|ÇÕª« [–CÙª«.'*}qUÊþôƒëŠŠev“Êä¿ÜZc©gIÎvóÛ4…K¸\œçJ»)د·øxý*y[ñŒŽ0>•,§¾1øTšd{l䑹óÇÓfÂ=¶R3 ï<};U‹HöÙ±=_š­,f}±ânÇ ªLžiUìH'èS+æ•î“’}…iØ'›9ÿü+GL·77;ÝçØUû|éK±Àšd2yˆÈ¤m3¶Ãê3ÅCç G•ùÎÊ~¿ýj„KæŒ}Õwçñ«’höDLP㻚Ð&[«u ŠÜ. z÷&®±y¢ù!ÿ×T5fe³mŽØÃ‚Äu9â³u so[ü±+dÿ´Oª²i˶½kX¶qg9ÇzèôäÙc=Hï[v«²ÇCަ³ÚVi¥ ÈF ÄŠçn¥gž@Ä€X³Èd‘”ó–À­jêë~Š(¢Š(¢Š†éŠªœäg§­PÕ…Œð=MU½'äýW·]Í+à^?Zͱ¶ó…ÃÌiÀÿ?J§kô‡URÚ¸’löPvçÖ‹)N[º'˞ƒÒ@dfî«òÐÀÏ 1´îosMI{qˆ×…äŸzº›*8^õ9†×Í(oïw­#kmgn^n$<ïŸj¸ÐÃoçlzÖeõŒw·Gy6måIÎ+öØ]N&+*©_âRsY·v¿h˜JÈê1Žjå¼ X†Š:–8ÍXŽÕ㈺DRÇ:Û˜â,"^ôngÉÚŸNõ\¼„î §ŒÔ%›vóÎ)frJ†(‰úš'räå@¢V.ËžÕ*oÚ\(]ÃzäX ˜xëW"FX·ê‚UÄ‘ÃïÕ ê&Ž8y'o,{TR¨‘U?/'Ò¡Ú±ÀR#”ÆáÇz‰EXÉ+€ÃµFÊ#Mˆr  S>ôË“0ÒõÀã8Ä„zÒ¨pã8ÑY×,ˆ2¼ ¨ðªs¸þÜ%F¿¨»cXb8ô­G ˆÇßlŸò*ó䎡Ž~¿äUæÀÉ2ÕÆ »ŠŽ5 &eÜGqL)ûÒØþ*%Eó$%FAÎqC(Þãhܧ9¤*71dUßÈÇÊÃ^NIeHÅA GÊF*Øo.É a«rË²Ì ûÛF*̯²Û`늤çls†uàýyªND@8'‘TßåosÍh³˜ô…ÙÃJ6‚{äV›H-ô¦çùAöêkBY :H ÃÍÆ}©- Ä9èó¨,-s 9?*á\QÙÛ~ëy9?^jK‹—É·n6çëSßßîA®j6çsÖ¤¼»Þ¾TØÚ‚â<Æ¢a¸ “*¾œÕTP«w¯š¹_Z†$ÃæÀÊ8JÒŠ§Ê01÷ºm®‚ýÚ8 ¨Âò tVµÛ”„àaHäžÕ™ogáÛqìŠç¬¡3Þ[ÇÓ-¸ç°¬‹8üËÈW=>bk^ººÝ¢Š)h¢’Š*¥Óê åþêSÞ²ugŸ`9p6/¹ïT.˜´ÛAä|ª)ðb&ÏT“¿½-®-§¬3ŒgÞIƒÌrŠ©îwºç !_βÎa’I‘‰ þužG–ÌËÆd+ùÕð<˜0zg$÷­±›=LaA#9>¦µ›kL¦MWY?úÍ̼–=e}¤Ë(f”»)Îæè>•ž³“vâJÿõ§Ë<±€)þ,b¬M}t‹°áãl Ä*žK›€cržø¥r\øÇN´Ù¤’Så“íƒÇZIYämž˜Áô¦¾j.sÐâ£h|â#\¼SL^i N´ˆ!YÛ»´ëtgÆÍÅ{ŸZuºÆ³`&Hîjõc¹h$,…0AÆuÖ ‰;ÀੌðÀɦÜ_"JÑ>FÊH_ÍU`Ñ1â …™¿z([ S"bËænùXÒJË&à½éK3¬›¶p0“0pÄ*…•òO«ˆ‚¸+g¸VÎédÔŠ |U{;µ›Pxðp}Á¨õŠëc#xþ5ôeu4Æ~lTwWRSÏÍZƒ«0AÇÖ®î3Ž š¸1çÐÔŠ`ÿœÔ¨ ÃÓõ©s‚:T$Ÿ´pyëþ:­ÒàŒç¹¨|â5—vö÷žRŸÜ¦Ï\Žj…ÔíÎÀr‹ÔU ›†Šð&~Eíõ­¿ÕwÁçè1W&ÀŒ¼çéWfá@íœÕK’^p=ä{U{“—Àôª÷¾iÈ›m­Q¸Ù“ùqW®ð¶V±ŸàÉý*åáÄ/uÏò§³”µ†%ùL£$þ´ùäh,míÓ*eMÌ~§4û†1ÛÃn¿(eÉ4Å%@‰ÜWƒŒšªŠ/ÊNæ+שªÊ¼'ÊIlR6ÔÃrí-žíW]%\.Y0H?ß«nx+ËGŽ?Ú©oIš}é0­ì*Þ­sçZ‹x¾ô¤nÇaÖ¦ÔeÅä ûÇ$ÿ:ŽÉs8||Š¥Aþ_¥WÑ–Ÿ"©ÿ/Ò¢Óò‘ÀSн[µ©ERÑEŽ)3Áçi O ª¾G™)©áG¥PŠÛΜÊWn@Ú=9ªÑÅæJd<Ò›vDVŽã5¥"ÛÀbçrÈHôÍExëja¶’d-ʰPX†ôÍV¹Mñ\+…Éen=Ô Z)CuÞ $¯¾Ê½œZ[É<Í*ØŽÒ`þT·’n±„ÿµ†¦JÊSjŽ ÆEPf ¸P?Z¦[%z(ÏçWq¶Ðàgž•Ѭ*–hÛAÚ»³[a@¤ Ä.j uÛŒOZÎy£˜;ºƒ+pì=j›:H¥˜!ý*³"²üÛF¨õ¤ŽI#ŽdÇÌTcý¡HŽê’'F=µ(q¼Ò,sS[0€<ò(Úƒ-ƒÛµIQ¥ –Çzån¥’êâIÜŽa\Õܯs<“0#yïéŠç®^IæyX÷ô­>&ƒO‚ÍæqŠÓ· Œq¸ä¶ð}i V‰uÉ4]JÐéòȤ³œã¦x¢f1XHË–e}3EËì—’+/C~¥v@Oâj–Œ…¯Ñ¿»ü꞊…¯wú ÒÔ"󯃣åŒW/¢ó/~F ÚGëVî“Ì»%N6u¢Üü¤sßÔÑù1Üt_sŸZ´¿wÚ­¯Üö©ÇܨæRÇŽÜÕBAœ±àg Îf$ð2cꪲê¥S£à ξPúƒèX ̺A&¦ˆŠ×¼ÂQÔ Uû¿”²þ£sÁ+× (­“˱~”ÅU0¹<³éLL,HË1ÅZ”ï ¸_ÆžäÍ*3Ñ@§¶f¸PFyÀjX'‚ʤ/w­Ë ¹P;*°vÐâ®\ZO «€=)¶‘ÈÄI*áFME¦XË4‚YF#Ry¨¬-$b%”|£8ªº<Í*Í!Rîò=³Ò¢Òî ²LåKÈìHöô4Í6c/˜ÄeÉϦzUÀvÊìp6dÊŸ$˜yäøÓÚO¾Ùäp¾ôËmÉjìîMK`;)›vÜ£ñ5%š‘fø8ãhüjýnÖQM’@€zš‚æå`±ý*9æà¦¢‘‹¼@ªM,—( 1 ßf«Èí2¨É ß)ˆåOâÇŠª®Öìv3}Iõæ¡Vh ÚÇï)žQº”Hí‡9íLŽ/îÌî6GÕÏ 1LŽ&º”\Êß"w==Ù?xcbÎÃAô¦Ï=²¤‚Ò; o~ú Iç„#ˆIvn77Aô¤X±bPØŒ¥åÒZë¼0>ŸåÎàGÓ½Tœ×øˆúViLÊ«Ð1³Õ7\F¹ÆãŠÐ»•mmÑB–,DH©õ®šúd°±TÆâG–£ß½w2ÚÚà –TUp$`~r@ù~¥b+M!$9çŒ? Êý䀰ol œ!éÔ°­1n«e€ê¸"´ J ú9BùšY‘GgIïY÷®ÒÌŠ§ƒ€­Sºv’q·îÒ£ŠÀ\\M=ËaÿÕ×™¤r¼—7-ò‡? ïÅG ª34ó6ãòŠ›x›F@=…)ýö6ƒŽÀúSóæàÛ5  i³ªt8Í6ç?ÙÒªô$f™y“a"Ž„Õ] {i$ÍÌq8Eùߥ=QŽØ™¹Æ\úQM,¡º ¹ôö¥HËÉ´· É>õ*a£g…÷5¢‘“pvÅ¿ îjê&èò>T-òûÕêØ«ôÇ|6Õ5^âäÄÛna÷‰¨¥›aÚƒ'Ö«±%²çhõ5—+Èòîà¤ìí&_OÆH*¥N€¹TP@éÅJ¿9 Ú£l´aŠà»…QÜ ÔrÀdn ÒU=—5Â]c-Á‘º›xÿ/’œ*õªú½À*¶°q}Hþ#Pj—‚Á½qQ$N#ÜNßJ ‘°MÇ¥THÜ&þý©ð£NH”– Fjż2\±ÞKêX·‰§œ–°§ù)$ÆYŸ…NÜqV,í­Úsqu&ÕFùcÇ¥Mkm”Ï3r§åJuÚ,í‚wE–€ã¿½K«\Çt¨#'z ò:~¡4s…òÎJRZ¦NÀÜ)È5—™# áPg?Σ°ycž‘ýjBU’@3·3Þ®‰TÃ2¯ Ð÷«^`18O­Ux÷H†prÛ¥gÈpÄp9`Ýê›æ’ $§0Ýܶ=ºSe?¹ ÝŸscM“ýR¨êN~‚›´ŠBœ‘»õ$Ï prìSâBñŒps©­Á¸ºšùdèQ1Ûüj¯çO<òÉ”…öÇÿ^«|çš?à`vþJÝ™Œ#žeÿëU(I&5õ|~•Z%z¹¡#)fVÁ¥]fRX7 ñô«däÜ‚jhÀV@G½KÓ9©P…uÅSÔsöÓžÁj¾¡“|Ù튯rOÛI=ˆ£X2¡Æ0ý&ªáÜ`1þB™©0fÆ1šŽÊÜ«Ç98%Jô¨íaÚÉ)à°8¦Úŵ’SÁ"—V—l+Ÿ¿“øfBL P~÷&›¨HB…ïsUôˆÜÌT¶ÓZ‚Ê&wÜW' ¨´øYŽìÄñ[ñœ^%¶xDÉ>¬k~×ý-20©óï1­¨6¿³dmDÛŠÊÕäGÖ∮ò›CëúÕ-bE—]H€Üj.z󚥨J²ë©+…Ýÿ­iÝœA°œ–'’jmV`Í*IH:œòOøTúŒ»™~e‹‚Gñuœ~T^H¿3eÀô«:u·Ùle¾™rØ. Ôö}’Íî$> _j¯g%á¤Ã1öª6q¼¤F „?Z­k,ÞÁcZ†0!½1] ±*Û*(áÀ­wP"QýÒ*Lãšœ£s “!yôñ"õX–k‰DÚ*þ€[í7ðUÍ$’Ó6>L ib¥Ó8.~bzU9d!Þ2@.rÄýj³?ÎcÎ nM9­YðñɵHä5YþÉyI¡Uºîþ•`饊²¾õ©,Q¸²ärOAS~æÖ #‚MÒ°ÁsÓéìÐÁ ¤M–<3”ˆá•Âí#ŽAªñÊLgJä`¥F®vcëQ3(Ü¥ÎH+ž••iw2—bH9< p[$n>ýª9mü±9>ÔÅ^ ““šEzç­A xÂ…›ó©V_)0?…I?;ÌÙ ÑV±­ µ Ç–ã°Íe[°`œò öæ³àaçyù²EI ³BÌyn{Òì‘’ò3ßš!‰ÕãÝžMYÁ$ƒŒf¬`ô= ©úÕ…È1ž¤ L3¹©š˜pÈã¦qT'!®âp[}MT˜î¸$ç$àZ«'3žy'¥O< rJ7¿¥I$k.ß0J’H–R»ÇJ’ETX€$E>`ÄéÔRË…hÀ<ȨîâŠ]*—ÇTW •/Î8¨çHÝ|œqRCµ_ËŒ€°ëK(”8–Ulà ´,­$ÁŠ2I¸œûU¨íÌ«%Ê1G‰÷uýjÊCÃ\+m1¾MQEMOYk˜ÆÈ¢\õ" ‘—PÔë"4UÁ?Þ"«ü·—Ïv@«ŒŽäUÜ AÆéHÜR¢™ «šBÏz|k¼ª°ù›{ñR\Î&²¸Tû¨¡M^¼¿Z}ÀåT'ãVo.þÑa1NîÓ´å †FåóÉ©t8T¹py©´ÄPc÷æ­Êâ8Ë“€9-Wõ¼‹VmØ÷«7²ùP3g­É#²Óä;¤>‰NnXú/ó¨œÀòvõ×µV›q“~3åö= íP¾ìùƒøz}iñ!PYŽçn¤öö©ìáòÔÈí¾Y9'ÛÐT°G±rNçnXúÔ˜5cÈâ¦÷ª¯ç&ÈÈ?0Qjçµ[µÈÉCö¬kù…Ñ!@l S@ŒÊx ò¨#|ÄŒU4<œÔo ´ƒ¿z˜Û¦Õ•. µ?›—åÆyúÖ€òàÀù¤cÔÖÈh4ø¨¤I0.zŸZÓ&+H²£(à{Õ.e”¤¸ÜNZ°Ãy“•—®ìçŠÉ·ÏóõÝœVˆPÊï]JmhWx`f·†Ó,®OY•šöD‰ÈVlmŠã5'2]ȱ¶¶0+–¾f–í‘ ÍŽ+j(¡€ÛF2h ÁêqZ®¶ÐÏk’±F õ8­Fòb•ò9¦Ë°FФ“P‡ç¦Ð $T[ÏÐsÅ5ËGM P ¹§íxíšwà.œ÷©­ÌÏÐp*¥µÃÈdIÈf1oÊ«Ã3HdIL€qU¢•›z9åÁ Ö| |Íäg )'ëÅSˆa‰Ç ýj¬+†-ëÇë[J ugÉ!xöæ´•rÊ[“´cÚ´U~p[“Ž)Œ›\úMdÚH=©„mcùÓ‰&±ò§~Îë݈4ïùe´cïUîEÏ›ÉÈõ¨gÚ'2w ==ê)6‰ŒIãéVmÏ92ÙǵS¾|2¨n¤’*•ô¸uUn½©4Á¤nHÈQŸ\SmÌ2rp)¶a=w±­\I‚ZŒùÓœ’?»Wu:;oùk+Äw°«Z¤œVËŸ6CóéSÚ[m>8Ù¶³Œ½7Éò-£BØ,2Â'É8Èæ§gW0Ïݵ>_Ÿ4Áe†hÆíˆ6þ,ó™&Aœ(ý*8ãûLÑÆ8FËHè8üitëcyt‘çL€wœRXAç̨Õ–½ÅkU@¨ ÐWN±ª HÔ(^n…B€˜ª”Ìê°&±æ°õ»–ãµB ócÖ²µIZy#¶N¤ÕÜ`7k`gkç«a«KkÔšqPWoj‘ãV‹gA×4æPWoÒ‘ËاÞè %Ë4VîÑýà0´“HX§^‚ª4²I”ÞÙîz ÀžòâmÉæ9'‚3Y2ÜË.äÞyô¨â,‹òGó2„wª±—Œ|©Ï P&ôRœž¤ÓQ|ˇwaJñêzÒÃ’WU²6ŒvÍñ—r uàÕ—ýÜð£|À zUð6ÞÛÇ!Þ Æ=*êœ^DŽrsEä‚1½FYxQéïMÕîí;Ôî 6®;S/æQpN@áqÚ¡e q««3 ×­S(¢å l›æ«mOµFcpÅºŠ¹#ˆÕ“œŽkvæU†(arÜõ­;ª,q¶zóX¢Ä}²Y6nMÙOq\ó[bâFÛ•ÝkÛþùØ ‚x«ò[·Þ>Þ•nEXBî¤Ç>ƬȫÜ °]€f!‡dÔ[Fü‡’=©Fÿ›€zÓn˜É* F£~3R]Éæ«,c)Þ>å̰0‹†Åg—ò'BAVBg¦*‰a«C/Ì3éTÙ„rá 0GÒŸ‘[Ö”£ öë‘úÒ¥³ †ÊüƒœŸztvä\7(æ´OúÁŽp£¯ùã¾®góÈ£¾qM*œdmÜÓ/Ø"4ŠzàQÞ0D.;ñU4ÖfiœîÁϧ5VÉ™÷©9ÉÎj 6-½sžsV?6`?„uý*R¡æøGZ“hi 5,¸mÇ·çõ©% –=¸§IŒšÌÙ©¡Ag8óBÇ׊ÏÔìäšâ’Û2ÇÒª_[3ÍƤ¼š©}lòN› rjîÁ€Àdø¶*kH¥"@ˆ÷8©¬•bv Œ¨n=ñOæêàKån#ôu© ’òåXF à ã­J7ÜÜnížÔËåžKÑ1Ú‘åÊŽ>”š„R¥ãDï¿b‚ĵ%äN·LŽå¶®X㊗ å‰ ާ֢` xˆ³‚O½G »VôøÖ+q¸åä˱õ­í·³@Gï$ùÙ±ZÚ|i ²/F<œô§ËrªÅop2q÷GÔÔ×W©åŒy8è?’{•[`ÜG\vªV*仕²¨Çn{ÖPÓ_ÎÀNÁê{Ö]›Y/%#vNÁZ`ï]"Œy­•Zv8Í?Ç¥;éQËÎÕëÞ©ß±%U}ýj½Ñ9 ;rj¬‰™#r:0ZÉÚ¿h†F^7à…úÕí³3ÐRݾOÈ3œgµ6ýÕ¦>XÀ?…6î@e;F3Dd«ìcH ϧ¶ŠÞ–Ë2+dŸLS­Cy¥2²·>”ƒ?jX³‘¾{Ó’-úŸ®q'­*G¾÷Ê-·ïzÑ*,·X' 2OJŠêÝZá•[!$ŒTW•¶œªŽµ•¿›1“ Ü¥M‘ž}û°äQ¦Zo—Í'jo;çfL²“´±Wr²ÈÈLŠIToîsÍY3aØ®\€Oja3¦Ô Ï&¢Ë,¨R1ŒòÞ”Í$ŠBñëéK&иVÜáŽqÞ–ãÊUÚ‡s«ØïïN›b¨ ËsTngŽÈ xNY£L1<*¤’*rÇÒ<Ñ•åXcw¥*P9 1ŸJW‘F;ŒfªJ¼œ6óUäS““ÐÔ õÏZÑŒâò®Ätœó“º­¡>Zç±;ª ™Z<ÛPM)FOÍPÍ)VùOÍPÊí5˜íŽ}ª)™ÞÏ'uG)g‰u&Ÿb«ö8ñ§Y¯”ûÎj¾Z±ïS–M„㌚Ý“fp1šxK·¶3Nºm‹'ÖrÛw}inç±¢Ð3p àÓìÁt ÜdñïNµÉ]ç½ 2©ó»­5¦ ᙀ¦™•ÝqN33! ·ŒzÓ$Ë]³)ÎæÜ1ïLeÍÑÛÎO-²–žFÁé´U»cq#Œ<*­Z²Rfgœã>Ôö!îÓŒ7ÎÇúS.eóÆ~v=8¨æÍ3ÃÄ~•|¨Àð 9õ5 ºnpO8ïL7 ¹ÈÍXŠdM’b(—å:Ÿ©­Ëx&’%IuŒOÔÖ¤1ÈèŸ*ÂúÒÞ„ŠŠÀÜSueir,`(8zÓ5 #ÓÝW ®³b‰F[•dKåÿfC_œµF`ŸbŠ0¹mµ¢:×O[UDwV!ûUI-$ÜÒÅ3+õñôªí ƒt‘¹9Ç­1¤Ý -ÁÎÃU.®|Û]γ,LT7ï„;úTmò˜Üd¨nj¶ÓÅ/%dÔ1²?P*'¦r̓“ æ©7Í3à’Hª‡™™³ƒœÔ›ÌI2À8¼UµwŠXå3¨8¼õêÒ¹†E—«ÅK„!&ÛƒÕÖ´QŠè©È˜ž‡5sËŒlŸnÓ"RÓNXƒ¸‚qè;TI’âFûœ1Ï ¨p@™˜Ëî?AQZÍ™äg\ mǰªº}àK‡2Çö@Ð*‚Îä,’ X‘ŠÏÓ7Ê×R/˶^j•›;ùäp»vª–Œî’xvÎ=³Zð)8#¼}kvÊ3´?ÝTûÖ½º’›ÊÁ5_Î$vØIÉäÕ™ö•Y]¼³¹²Z£çîvÍqÞ²µ(Ø[DíÆ×;¥{$ìNÖ©^#,q3 c8ªöÎX2©EC ¬¹¦BÙVéÍ[Ž(æÉ,T)^ž˜«¢¿,Hаˆå‰*äeJ€zäñüªÜ$ùºž?¬DFÌwª7»÷9 Õ+œïÈ= T¸ÈmÀ÷©‘CÛ䎪?:üÐ䎠T§”ÉqRF» Üþ”õOæiÈ1ÇãS(ÏÌ:÷b;÷©ãBß?·SïÞ¦UÉÝÀÏz¥©>#n£qT¿¼zn ÿJ§zØÉõ"¬ÛH±Øn#%2Ã\ÿJ±‹Ÿ’å;‡ó«á,rG+XSH“»1, ç嬇a#s×¥dÈâCœŸ¥^Ò’_&R~é?'×½X´Ëž€å? ³fG¼ôÎV¶ålª"œÉZÖ¹—¬QŸ¼¡‰ÍiÜI´lCŽ*T!'$ýì“òÕv©ÎIëŸJ¤Çj·\Óôè„$ïÎÖÂzVŸ‡­C¸pr ž•Hƒ(fpAÝÀ­½+séZuGR}Ëä¯s“XzõÎ[ÈCò‚ úÖV«>Yb€j&ùÃ)û£³\³+Ðb©¾æBON•§ÖºáÖºÖ˜—á²£©ª=ÁóÉ \ö=j»K†bíH¨!_0`J©,>µBÒ¹#d„%¹õ5ZÞ:|¤þtéÛ0î>ôÛÖÛnPýå@#ÔÒ]·î¶c@ i$ÝÙÍPŠ0ó>zªš§ îw'øF?Z‘IâNăVœ /cƒVH(QÏCóRyÚ&ã´zŠ”I;Çû±º0Çh=1O3Æ1ʃÀ¨¢f’SB¿/ÌGJ€¼²Èc(QqÎ:T%¤w(FÑŠK¢IVÉTÚHõïQ\¬i¤’#Á#×½G:¢nØs…Á"«é÷;c|½Nõ^ÖàŹ†ÝÀ÷ô¨-¦(§ÎyúV‚m||™ÝŒóšÚÚÎÄHW1–'i<äÿJÕÖÖÁˆÊžqïY÷4Irœ²c?e±1Ã$é‚êFOÔñYÎÞ\ 2à‘Ô}j´qß[›i‡q…8ê{ dW)y· ì>Cê})©p—–æÌ?tÕ;5d¸1H¸pv‘ïTíÔ¤Û`ƒŠ«l¥eØFqZ‰ sn*øˆ¦âqÏ¥^òÂdŸZ]ãs ##æÇÖ0e”0ãæüè‚Ë‘‘P] ìÚH8úÔSŒíÀÎG2îeÀÏ­N‹²(Ó9=ÅL‰×Ž•6ߺ¿+ 0RIcÀö¦¸Ã„ç'ô¦°ù¶õÍ[AXÁ瓚ÑXÁç®jâ(Ú úVVª›ó°p¬çÞ²u YÎÞ€î¬ËõË:)«ˆ?t#í´ ýj¯îL~¬íÌeLùÖ Å¬–óÚYsGzÉ–Ž\c+žÕ‘$,’íÆFkWN,-Àpq“´UÛ|ˆqŸJ¿D*sŽ*ô.Zæ2À㘫v{ží œÈÏ`*ͦ^ày‡†3MdÌ…>l»‰è;Ôm™d‰r´?mµYÝ+»¯û5¦Š±¢¢•GõÓÆ‹ic £h÷­Ð€«À^)³J"Œ±<ö¦™ur–°—'œ|£ÔÔwˆ".ß{ ÌMÒÌ«Õß'Ëįyt¨YùãéXp£ÝÜ“ÏéYú½ËÆm­¡êq ýâOò¦jR”X-#êIõ'ŠP”—·µ¡9'Ôž+§èsí]ƒªÍè ®•Ž 5VÏ爃ò…%¯õ¬Í1|ëGg;UK)óþµJÈy–¬ÌplŠ–Üæ,Ž:³¦ÿDZ=óÈTödùìOÎÝê˜å€ªZ°E™b ËŒ’~¦«^í,`rFi¨v^È­üYS„ùWò#ŒoÈ?5R/ÝÜÉxRì&ãÆ µjâ ´ÌËÁüY¹‰ŒH¸ê3õ¨÷æ-‹@Ü1Þ¢YÑŒ(vjŸ0˜Ôí#Ò³ôÏ:äÍË|ÇaT¬#ží䛓Œž•VÍ%¸. l“Œš±«Å$c²È »‰»U½^Ù­tÂ|ÐdÜ78©õXZ /žF:Ô%¬¿e–i£l9áOSïUôË ZÙ§•xþ¿J‡N²“ìæYP‚Hâ´g*‹‰ôÎuÄs îaÓý¡Z {…”’2E_uVx¡ÇZ»2©‡°=8ëšµ .1šÁšFSÞXü®áXŽì—›‰èجvvKÞOzØlIû f´xŸAšÒ8û Ó#µÆ4‘¾g<ði³+sÀ§¨ß!l}Ún”¾8‰Ì…½*Ðn=*ú9 트Žzb¨ÞêäwVuçÎ]‡uª7Cqb;ÐÌËb$îš$$Z‡ÈP3K!"Ø8ë´*Çû\ÈäçvOJÍóÜ19ÍfÝXçžkJÊðÜ6Ðe«p\y¼Î*Üy¸P9­CÈ| ¹ŸŸÒ¯ÚÇ-Î!:ózUØK€øª@€C$d êy#¿¥?ËÃ,$1ÞéåFñàCÔw«‘6ø•Ç&·-dómcœqƒøV¤lrp1ÍcµÏÛ5 ˜ª‡ä_sÞ¹ÍRèÜêí9Š!å®?Zþ¹ûEì¡NQ1Å\ÓQZyŸ©C³8«¾„¦”TìÝVôH³æIþÑ«-^k‘s!;`vÞO÷«1m^Išy>ä,UûYÍPKbó}¥ød1ÿk5Óã Šëd‘ÔwR+¢pLnR U‡åÞ§Ê9÷ÅdY9."<^=Î9ª§lsGýá‘SÅðÖ…“(·ØN*·n@‹ÓmA'ÎÎ@ઠձçÉ$£¢•Uü9ªÓ6GFÚ? 7¼oü] C%»I$N —#úT2BÏ$d»¡©ˆ&4|À Õ’"Öð¨2ã¯Óš¾èZ8ÁŒgòªÌžmÈ*6Ç=³Åe" îŽÀ6Èb=3ÅQDógl‚‡qüia’?RdßÇõ«DðÂ?¼Òî}MKm /c¿9¤»òæØ …Ní¤àTwóÃ3BåL¬‡vÌü¸¦]˘©‘—’½ª¸ºk€Úð(ÈöªO©ÞIp2B¨ã`ªÍpóòø@©¤)sï™OLÕ©Ú+ÈUÐ0oâÏLÔól¸ˆ2äùéYB)£¸Fs“óëYˆ’¬áÓ''𪒬¡×})·p#H<ÏÝÈü`ô>ô\D­&mvìzRϳóÃ7j}Þë{X”1x%Z’ç0ÅG9Æ2)÷Ç'8ÇZ;ÏÓ=j´R²õcס¨"‘‡V={Ô¢æñ˜ ‚ð¥1õ5ZéÒ³ëŠ×—ýT¾¾SÒ´O1Iÿ\ØÖ‹qŸîgô¬ØÍÄy!r@ªp³„íœ ÕX]šuµ£y·jÜù‡lõ«0ç§Aš› GnµaÛGcÍNí…ÀúÔ ¾bäg*¹Q.þ™Å@@?JP>@½Hãð¥ly@OCô¥a”óŽ+>âÚ78eÀªRÀ›óÐ{U9mоOnÞÞ8Hò޽êT„!1×õ©_Ö´Ó| ÿyÛ!GZØšÊØ8gl…kR"Ö°¨c–$œ ¥0;Žæl¶j™`ìrX媿š‰0=ó–¯4’Ç­ª²NâÙ©umD½º[Z£D\ä·­&¥z^†Ü,NãM¶¶[h–ùfÍgEݱG’ÇœÕX¡#'$üÄÖŠíø<¹ÜO¿Oé]&Áb£ṗq?§ô­Í>%ŠÕ#-óƱ¯¯…•İ Üg—sg²ô¬MBìZËs `ùó>²/.ÖÞI-ד4¥Ï°®‡#8'Ô7$ Öþ{ùÔ_vO~µœCwÏPAÅTU sïž”ÙAáp:mÿI•’ì,c¿Êl÷4Ž ÜmOø ;b„凒zU&8àùØc'sZ”F©Ï&‰'†Ür~‚›6¡emó$µI¤–îÖK úQ}©¤‰˜!}úš©.ª÷1 iÓž¦«I~fˆ”W§=êKh¶&Hù›žjÞ›j!€¼q’MZ´ƒË‹æûíɨ瓈@pN:Õ BéšO)_äS‚q÷šª^\â4l*ñøÔrFc_› „uªrFÈlŒô5Y£a€I=hTa ÝŽ*¾µço•‰'Ú§Ÿ'Iž1Çj½äŸ²–\09éVÞ"mÉvä {HˆÄ(Ú2Ò¢Y^TBÀ ‹ÃzS­!W`Ô}X`dôÕ0ã ÷¤ÇÍÓƒÞ²µ¥‘å·w2HõíTu`ÞljEÎERÕ žj…8ÀϦ×í6ñÌ®<à€2޽)ßΉe7/áHöûÐH­—ÇJ°³yH±I•Áùš¦Y6 ²¸o˜ÔáÀۃɩaàG<“Nò¼²F:æ—Ë G9Ç41wØŒÐÄmÜGb3AaǸÅ÷ºœ1Hs©= 6çô»Ø£.ï”õ#JÍðSNgfB3À4ÔÂä­GíÞ˜ U¾%›g¢Š†ì–bµ Ñ,JÑi÷Øã‚Ÿ•%¸;›¸*9¥·qô5uØ,lÌ9­JBDÙ•=ªÄ¤"#%I¬Ë{ż&+¥î°à¯5F+pLsŽðèªPÎ.~I8$ð®Çj-C²¹fr0}ªÀ€@ŒCbxãµN!òQ¾l’jÄecW.I8"¤@¨Œ\“šz¨ÛÌzTÌÂÓHÙÝ$ãòTúŒ«e¢-»Ò\Äz)ú¬«k¤3—”*/Å"é󴄬dñ¸wõªšb0±•¤À\äf Ò‘ÆžLœsÆkaÁòÎ@äd{V±Ú±ø ÁV‘ÀL· ‘ƒXZ¦™ss«c}¸“ÐcšÊÔ4û›X‚2$+óú VMî=Ö®r8b>ojؼAokkÂ) _òkk1ˆ-` ÑHO˧éšÖÔ×ÊŠ, MÿÙÿØÿÀððÿÚ ?M¿¹Þ9ÜÈG ž£ÿ­Yi{qrÇÏ»Œ{UhofŸ>saÐÔZ”†âkk+tɈ’qêi¾âX 72ó€;ÓX½ÍÄP@…Šrq[ºU€±„–æY9r{{WU£éÂÂÜîæY9séí]d,à#9‘Žç>µxu«õmy5,Ÿi¸iÏú´Ê þ¿rW× }~Òd”RQ=¿É®vêSyzÍœ®v§µ&¬Y— ¡Û¸ŽÝè)÷ñˆãÜ/nï®9þU-⪠ù!Õø™n%IýY‡ElZ´\G áîu­+u2Êü!A^>ß”f ×fÚÂ0qý꯫M³äŽôË8#À™É;:g ¨t‹h„fòOàÎÒxæ“N·#ûKuPpM2) ìò$¡8' ªðÈÓÌòn$©$J¯´²<›‰ šŒIº—“nHÚ=óNY"!gÆq´{枯•Il~Z³+mpNOQéV®eUu'’=*Äò(`¤ðMfêNV)0§¦WéšË»b#`TôãéY×lDl1ØV]‚¹ûD‡l|Äú÷ªÙfóä8Š.I=ÏaUlÇïZâCˆ£™­iEÎùï¸çÐUËi<æy1œ|ÄÕËy<Òò894õ ).ØÁn9Jw69cNP$Ùü¨yn*£`à±¥‘ÁÜʸEã&–GÈ%Fqš“,® õP_óTŸ2È$ ,ÅIʾðäþ••9‘e8õç5›3:È~¼Ö|ÌË!ü楱„;–ÉòÓŸÆ¥³‹s–ɼþ5%¤YbÇ;W‘õ«ÃŽÙ銲ø=O¥X#æúúR·è9¡Î1ÛšSéÚ˜Û·¸Zkçyë…Å0îÝÐUîdÙ”Î]¾ñö¨.oÈXýãPÎûNÐrOSDHY98#Öˆ—åäàÒÆ¤¯'èà8.xŒŠzDv—#ÇÖœ‘åK÷éõ«!J(ÇSÛ­M‚€`ò}ºT mžOéHÃAëMaø F…#.ð cJozzR2望ɳœÒaTzŸLÑ€zš¯kk,íQûùˆúqU!µ‘ŠÆƒ2Èp=ª¥½£±'ÿ¥liz\zr–'Ì™¾óšêt­.-:3Èi›ï?ô­ý;OŽÂ«ó;}æ«õ~­ý*½õÀµµy3ó}Õ÷'¥TÔîÅŒ’gæ ª{“UïîE­«Éœ±á}ÍfB0¶ðõ,GÖ¹{8ÚK‹x‡%˜ ZÁ°ˆ½Ì1ã9<ã·z¹¨Â«U^sîkgXµH  À"µ5(c £õ©ôô jª~Qô«ÚJ…³@O”}*݈ÙxàUæΡÛ~3Þ°µa¶ñ8Î?:ÈÔ—$ÆXÿ:˜Kvɹç’G¿?Ö•îÑ-"µBÅW;¹ûÙ§It‚‚<íQϹ¥„í˜í] ‚JçÚ£µb’1ãNAî{S-Ÿk96ž=jˆÜÏnûFcsÛ#‘Voy<2" È¿9=3Ú§÷3Ç*¨ùG'ßµZhÔÒ7B>ï@*wv—™`Ã…íR´h«¾B ÏnÕFGYY™ÓxŽ{U*;;2n5PH­’˸vªšæÈ¢¶†$òãaæ0Í&¼©·‚ü¸Ù|Â3Ôš[ †#M‰·vsUàs ‰ùFé02º U‰ÌV¤ã™þ:*ØÅiŒrç?…Y¶•RÒI‹gZžÞEKV÷àTñHÔ¹çS­È¸Uãžy§[©aF{žiÐëòsV¡‚ß{ð©ßºŒ†?z¥n¤ æ –¤!™aøgëQIrY2Gášd‘£ÅrEJ[åJ¢ÈS‹p¨?JV9Â’j´rÆó”C½sݪ‘ZR‹†_QP¬ˆÒ¼¨ïV'޵7^1’{T¸'åîh`A<Ûµ2IéÛµAôª²@Ò>ñŒž VxL»¹êj‹{oúÔ»<¤ÁÎ@üê@¡!»SÀ ˜<7cOcœãŒÓÃ×8ã4ð@Ò‚NâÜCAb[w#Ҍ󻵳êOÒ‚sÓ9 œÑŒŽÔ(ç(ƒÓ4”z·±éK wocÒ‚¦­XÊ’êJ€gdE³øÕ­¤ºÇ;"-øæ§ÒŠIx{íŒ7ëZ§“]rk^™#ˆãiî¨$ý6GXãy;QKz k²Ç;}ÕŸ ®wí§UÔ˜+o;T÷'Œ×%¨jT¹Î6Á ½Ï½sWWÿÚWǧ=}ëWLBîÓÀùWëÞ´¼;lÌÍvã€6¨÷ïZz,+\0Àn—R*…ÎŽ1޵.»2©Tïé·ýRUTÒ§³Ìv¿1éÐÕ­5¼­=|ÏáèjÍ«µú çfs®€èÇé\½ìÆëRfÏËœ ç.e7:“¶~U­•U ¸ç=@§E]¿6I0*Â"ã'%»QÜ9ŠÝÈBŒ@Âõ-C¶ØŠãnOÝM+d!@0IQÞ®['Ù­T6YÈËc©®†Î4²°Ta™ åñÉ$ÖÔ¶öªƒ“Ž}ê¼ÑŒ :ŽÕ™} ¬M¹Hçž>•Bò6œ‚5Yà 15Aœ}zU5ˆfr (*²Fs9ù*¬÷Q_Ü+ÀŒúSn®ÓPœa>‚›<é}?Î;`S5%HÔ4k˜ÕÖ›¨" ÌcäTzmú¢ä ùÀ¨mã2Y. H6ûàb¢Yí†ÜãËQƬöèÆ_о¹µ‹÷¹ÔÕ´Í´gÌÈlsަ­©ò#Ãõô§C"ͬ;tN%8S´ZXÝdû¼CJæ8j_¼Ç§¥/Þn1üꎣ'Ì 'Œ‚Çðª—Îy@÷5RõÆÿ(ã4ÛHÃÜ®pqM¶MÓŽ~QIl¹œ÷E^Ë8ldØéÒ­£ŽÔ1;÷vɤbA>™4ßÐÓp@vçšM¤Œg¥'GÞPgÒ¼F{RuÀ#µ4{uÑ×?…9ô§)ßÃÇLS‡ÏÃ1Ó£æûÄqÒ€¯OJ;*AÈë@$ò}qƒG^ÚÇ4½yü(È'éGFæÁæ¥ÒãíI$ÚU<œ~jÞNY6‚,ΧÑãe½šB0¾X¶k¡­zËñæ-7ÊCóÊÁõë+ÄwFšbR7Lv~ë7ĘtæÏ)Ú±ëT,lžÚÝ™)Àükž¶¶vÙŒ»¶kÎѾHÀÉr2+z-–ðì$"Gß=«¬¶òí-¼¶!.þÕÒE²0Ä*'’÷?ÚšϕÊõ¬ Û¿íÒè6¢ Ö=ÅÀ¼»Þƒ¼gúÕ»é|4à‘´b¯^ÎcÑ“hÛ¸mw«—“lÓhÁaYzE¹Yd˜žpQkÝ0]Ï9àV5ºgcÕ«I ,¹–Æ­ÛiÀÛ+4˜^Yª­„WWz‰’u+'ïV4«+‹CÌ™JÅ Ï>µ6›k4·†IAÆxÏs[a•‹`r+¢V ¹T`¯"¶”‡hÁJå¶)$dŽ:ô¬M@ífRy§Y—GƒëëÒª\†ò¢Iâ¨K‘ˆ¤ŒñTåÝå:«±,ÒInÑW€9Udi.QGÊ3ÎzU5y/QxÆyÍo݈]¶" ž Öæ¡ä;£Œ ™º‚kfìE!TDázžÙ¨íð (1¦¡µ ›Ë€ k˜Æ1ƒQÁ„W-È¿(ÅW™ZYƒ±È ¿WeÞyÈ/ÇcPÈ ÈXôÆx¢Ñ¾Ðãq éE±]ÛCÄ~T@T Ô±–iœŒ÷<æ¥sNägœúÔ‘äÌA>â³®ây.IØX1íT®by''nA=ª”ñ;ÌIö«p©Š#¹@eRÍëJ± ˜Ó2ªKU˜ÆÈù* 5V9gwÉ‘·u¨I]ÎXç®*’V~Xç®*éuT\üÇ©«%€ž}jÁeQêqúÔ€yyÁvŒa¹©‚î¶ó±… j] Åæíùzb‘’Ùè:T*z¸è;Tc€Nx¦…À8cJh] à)»p§ž=©èyÀÆiÈrqÅ9=¸ó½ù¡N_ ßšRzP®»sÁ#½H×i<3Í?k3Á<ÔdÉȪòdÉȨ[9<ÖôˆIv[¯á]5œ kºå˜óéÅmÁ„÷dõ©…†;žÕ5Øáy2Þriò¶ÈÙóŒV5Ô†âo6Eâ>zåµ ·½¸ÜÜ„ájÀ¼¹{¹Ô•Î8@;ÕûkR±‰dÍÇËŸà­{=m­ÌÓ LFAÏ+Z–ÖbÞîzG ;VF£q&¡vmñoùÛûƲ5;Ù/® *çÉN¾¬k*úéï'h"%à‘ÔšÒ²¶Ì F8T¯¹­ 3M_$Kp !áw÷5~ÆÅV óqž‹ýiº†é@:T:¼›Ï’¸œ ‹S}ß»\N”È!°*1ÎÞª+” uþ¦ª*lP¦«M4ßmµ†¿#o>À’”_[GúÇ`ÇØRBomãO¼Nç>Õ½Ç=:×Y€2þu¿È{Šd„.\¾Ðz‚êEL¬û:ŽwX”È[t¬9ïw_öü“ž¹Ïò®aîüûß/ªM€§ß5„n|ë£>YÁ÷«8 ß9!@§€«Çq!BíO ª‡',N¤‰!fT%ö¤úâ§µH6NB C°“íS[¬B9J¯ÏŽ* a¾P¤“ž¢¡¶§ sÉ9¨íÆéBœâ«_Üüç’£¦*½åÇïXŽ;b«]ÏûÃŒñJ“ÿĽÃçp;¸¥Ž\Z:¶C°rL>ÈÁ¾öv}j°|L®§£u¨âEp}ªÇÍVSžqZ„¤mË ‘Þ´ $m‚Ã,;ö«å•¾b?*kîPʧÙö¦ßtYI¦¶@!N æ³´×2]2™Xsêj¦Ÿ!{–RØ©úš¥a!’WBßëã>µ40HX¤p>~Ø©#…Ë—Œš¥Ž'ÝÈÀãŸÂœøßôã´67c®8¥8Éö«¡Šiáx%†:t«æBšXLƒ¼céWŠÙãæª¨ä» Ç^*’9ÞËéÖª«JúS.e؃\žº)“¾Å¡bi—lwbilß…ôÏÖjÜøýiÖí€G§ëSàïÞ@©À!à ԠۺT‡qKn'¸íRÅ6–Ü}}*C¸¤ÔL€¶7}j»/Í÷ª&_›¯JÚ™Ùy®–æ6–D‘ÊQ[3!wW €P¸”Í#†fò“‚:äÖ ýÜ—•.ÞZ mÏSYW—M+.ãµx=M>ÃÞÆ¤—æaïÚ¤Ò¡Y5(÷/ÜËb:Sôø½Œ„üjÅü›mßËåÊà};Öž¯8['°.GvwR” Wß7r*ŽŸlEÔÚrêyÜ{ÖV‘h$G¸àùmó!ç5GL¶3q×kr§½^–ê/7Ë …û¾µ«u HcVÕzõz{ÈÕÌjÙp8½R»Ç Ês•ä{Ö%Ë0-#‚1ÐV]ÁeÝ#ƒÇJ¥§ÜÍs Á;ÉŒ­jï1ŒÄ¨>µ^ÑÞbl’*T¸í->êe8h‰_^‚¯ÛNÃT°¸@ y½\‚f¬ÒûÅ)Ç­or}½+¤ ON­mç9¨/J1líÚsYzêænqƒš¡«/î·{V2Ú4·vÓ ˆäÿJ³€½Í¼£Q³ùʲ€›¨%è¨jõìLí¹>Q‘·ÜÕËøÉ¸Ê}ÜŒVnÓ3eF<L(ì@äsÞ’1–ld÷Í€œgµK …]Py‡9ÏJ½lÐ$‘² 0 ç¥[€Ä®¥P"°µ|»ÿ›…<æ°ob1ß0a€N}«ê2·¤0ã5(„¶™,à†lœu©„ tƸ+æsíS‰Ó„À‚<ÊŽÚ1,ê•b3ǧ5¼bYÀ^Uˆ'ÛËhÃÊô$—PŒ›Çf\š}êµ;7Lâ–íOÚN(Žå•¡Ê—•&dx‰åsŽiRVW=T@ñÞ…N»²Ö X™n ÉÝ‘øÔ1ÂÉwˆÇñdb¶[ƒƒÉÏ9­&äž3ž•¢GAùÔ îÉæ¢ã‘Þ£Dçéîw0õ ®p æ A†ÝŒsQ(ÁÈëMž5ps¸t4KqŽw”’Çæ®jšÞØm(#$ú – pAE#8É540€¥AärM=ø~zãS߉0y'Ž)ÍÃ^”§œóÒ”œ÷¥=Ž}ª)†{ÔS 0ÏCQÊ>jÓ3ÈÖáQ,£ê¿ZÖ–êSd‘ª`²ä‘ü"´&žF·«‚TdúTÇKo$‚KŸ¨™l"K˜Pž2÷ f©[yip‹ÙAlûŠ“NÜòI+ãæäãÞ®hŠï4Ò¶1Ü9©ô ÇÌ㚊î9nÀþ^ì0ÍE©A)PÑ«ù;°yã5ü2aYCy@ò*;¦“Tº³V5\ŒwÁÅ&+5å͘ >øâ›¥L^ææÛ€±€¥W»ùuûe³.qP]ˆ ÙÈB¤â£œˆõÈÊôLgJÑ›dÁ•‡ÉoJžw;”ƒŒžGjšr.Ó=j¼PÇhÈøùcWe‚HÔvÇop³8ª9õ$ ŽÚ4‚C+Ž€{ñXvžtñ\É‚Æ6ž‡5™mçH’Jc+èsYÖ&iQ¥ä”‘X}k²RæÁZíã`ë»d÷®¬Ã#Œôª÷Œ¾PSÏ#põ¬írQöeN¸q¸~OVqä_›æäU[6]î …]¼ŒVf”È%}à ÓKN`÷ `1V å˜eWéWnbò”Lç/!%WØU©ÓfŽ]²@ôâ«mo/$c5@åò1UG “éšî<·@¼€FM4Ü•1ÑHÍ0϶TÇ@@§j1"#3»’§Õ X†÷êWrƒOÔ¢XÁfûÛr*¦ˆÙÑîS<‰aì@Ò Ó›þ$“¦~ìŸ0úþšÙÑ3’²ÃëV"…`BÈÌ?*tPùÌ«ÔT©……ëI)¬òæ@`Âqå5‘2ô`‹-­ ƒq~º²ƒ4²Æ§¨ øÖZ±’H”ó‚?ÎW2O{ùVÆÐ%.«†É þ•¦‹†Ü£æÎsúV’.*0Þ´!&UÎO#"œ™2®sÔfœ™.=i€¤§±ïÍFí }֣寯”’IÃË·AG,q¹F,{Q÷²2XÕV¸…jHÒ¶y`8ªí$Hp®dlõÇ’0ÛQ·¶zŠ´Vd’½êp6œK/z›§æ$R&8À ¸4©Ç@@iÉÁéŽ)ß}v„äs»Úœ~eÛ³yÝK˸ Þ79?0éŠ@qïIžÇ¥6N#¨})$î@ÉÙ9 @ê1[!v.Þ=vúÖìÑùv̹I­2…·pH•o´&GQíÓ¥s¶Ü±î°‰‰ À-ŽJ*K5-s*n*SëZ*³Ë*‡ÚcÁúâ®é@¾ðH«ò±ò› íÏJغbmÝBpx9éõ­Îae ׌ž•‘¥éÿd½ººše ƒÎzÎkKµû-ÅÕÌÒ.6žý9¬­2Ûì’Ý\ÈàîþDæ›h¿i½’õÎÕ91öqÖ©†7²Ý”HتêL×NNè*éR-Õà³nvþUsmc‡g"GoʸFÈ#‹þ&5›mtnn®"u,‰ÊƒØ*Œ3ùÓJ¤UéøñT¡”Ìó!¶ñOÒ­)<ííSip<~fN?•K§BbY3À'Z«t‹2C޽Em®£À¾`em¸õª.ÔF7eŠFÄX²´dçuTºÌÊ72˜‰Îê¯p ¡rAN¹ªRL¶÷â+ƒÄŸÅÛŸ‹}Ebœà9ûU8C~!˜žsVæYÞ}åTÄ• úŠ·z.šà´Š<¥ •=ÏžÒ– ª0¤zT$A<Z¨3»“P ç“ÛYÐBÓ\ãnoš¡·‡Î¹T9›,j+x÷Ü*àíÎM?Y¸Û(A£îæ¥Öç}Š~UáIúSµi¿{°pÆMUÐa-ªº ¢± žt I©º mE$†•¯v‹öiç!k:,dí\ºýò¾†°SïãÐÒÆ6Þ‘÷PeÅ\ÒÎËÃqÎÕaVôÓ²c)û«Ã ·qp¦1åÀòJõ­¨ÞGöp#mêܽ@«÷Ó¨ˆ9g"³Þ3s–€ª³7=ëk\¢Æ™ÜoÏJÎØnQ ˜n«†Ip3ê2?úÕ$Š‘(¶RšEŽã&Ÿ¶4À æ þu5ò¶u ûp»ºV®§ ˜£ù\«¸qÒ¯_Ä c;.k›ÑškmU# ‚ùF¨÷5Ìi²Km{°Œ[=>µÏérIÛ+ ošÛ·ó Ë4kœÁèjõ£M%Ć0Xm$нnev”  0j[LO†eÈÁÇj¹¥m½…­n%ÛŽ Y±)yŽU;”qT­Ÿìz‘µ-û©NFOCUm‘¨}Û÷R7Õ¹òïM¤‡*ÌH5SÄ©‹¨ñ•P¡~µ[Ä ‚øy`ªŽzU=t¿S*j·$쬮ÌbVïÒ¤Ó¦šHÕdbbRzô¬XK,‘¨”ƒ½[ûÂWëÏà7yŒ9ÉãÞœ Íêx4ÉÄ3Øü£5'1 ãºfœs^üsPÝ[¥ÙRàü9¦ÞB.X;tÇËšK˜Ä|b¬[C¥ÌóGó;/Ïè*åŠAi5ıaØ®=Y³Ži.$°Ò±5{¦¼” #_»ŠÅÕ.Úòl'ÝÅcê—ò`8-à6ö6èò±,Ãßüš[‘äÙÁ‘†ùªK²`µ…ðFhÒ+·Ý »Ÿz]9ñæ±èáõ4º{’1ì8«Vó,£'8«0J_q+×Þ¬C&ü’:Ô¥ÑÙŠ|Ä@)ebÅ9lsŠy+É^ñÚ¢šFnÞY»žÕîÈ,{šd²4x’zRÆL€ úŒR!, Ýê1Å"ã;wg¨£fÅÚv/û A]«´…QýÕ£`UÆÇj I!v³t žiYL ·ašVWrÃÒŒº®6“ëHL‹òºàûÐK`÷£$6Ö•IëBœ¯ýêrGZpeQƒ’ ;!x<æ‚BŒsšB8ïH@ÎÆ;Ö¥ã‘7Vƹ9Ž×`àÈ:ÑÕeÙÁÁsùÕHÆÀIêyü;~µÏ¨Ù’x'šÆQ´ñN·fXØŒƒ.O²ªñWì3'ÙGv̘­ùàºïú TV“€HW’ª>ñ÷©PÔ-Ó’¨>ñíš(ˮؗsPÛN>Ù4Wå\éU¡” ‰Vb=)–Mn¡¢GQŽ´ËC ƒ¿Ìi¶Â-†0Üšlˆm­J¯6) 6Ço®ÚF+s޹ªvóH’.Ù,Ø$¯o+$ˆ<°¡¶•„«†?3E]¿_ôŒŒãœc½X½_ߨçóÍMt¿½èiÈPG‡eEç8þº|{q‡mŠzâ¤M¡~vÚ¨d»·$Ç1ÿhõÿõT2Ü@ĤJp?ˆ÷¨d¸„’±ŒŸSUËÈ“8 ðGj‡|ŠÁó‚:ŒHèÁú{Uèek›1Ô’¬~cWRF¹·óNwš­#ùöþcgëOR@ ™ä‚…8À\œÐP iwz䎂”¶?xv¥Ï#=E8mn£$þ”õÃc޽éã q×5;K$Ò«I×øPv¨®®å¼¸ß/nGj‚{‡¹›{öèjSœ9ÀÉö¦fbÎOµ5Sq?ÝM$þŽ¡IÂ=3S³†8â9 BöÍY$ÉåD§ÈV?J—TuµÓW!˜lR:Ö¦³åÚif$-ò:ô«Z£-½††nchNömØÜñ¤ýkI•c’ãp˼xR}sÍdéR„3årμf¶&ËC¶@»zäÿÒ®\3y[dAþí[Ü&$Ç šš‹[ä€vsZpß;Øïe»ÉãéW’è›mä—€j¼‡.KrÝzV<Îe±å‰ÏÿZ³%bòß{9©‡!W!WŸÆ¦qåÚ’¡sÇÌ{ÔÒ –ùPàgñ¥°â-…ÃHŒw(>µEÇ’?zZDb3ëW4ÂL+û̲œ2ƒëQ¤RÍ#Êß,N1PÃi5Ö«,³7ÉŸäTP[I5ûË+d#ñYz”»üF‹r›Aǯ'úÕ r\ë¤GŸ‘Bœzã?Ö³µIs¬”¢¨JÖˆm óœšu²Ãæ=ÍOn™l¾õ$jV^pT/&´­ãhe'?.ÁóUè”Ç#äÖ¡‘ $ã#ž}OJ¯4{žYI(“êzT&Yä=Ž2uû€8 ‘“Û5 ñ áƒc'µ2TjÙSÔÕ Rõ­ÐÚG…EÉÈî3PêWÒEØÐ…2AÆj¾¡xñÆ-—PuúÖm2_CÔâ@k:Ì“uë†ÏéTlX›¤nx9ý*KžùÆrñ±ü3N´vctFrÈiÖR3 ²:°ý)±®Ü†m"›ï1q×?-îóT½šÛ‘Fv…È ~u®ã ´ ‚©"ÛBäÅSŽÊ8œÊä±ê¾õV;TŒŒI9Èu÷ªñÛ$gy9=€*ÉPã 9R«wr§56ÐÀgøj•é_1—ùj¥æÑ# `c媷|;vâ©Û+HÌ1ÇLÕ[u.Äc5ZÝÉâ­½«¶#^sVZÝ› ÍYhˆ^ƒ¹«ûâŠ$Š@Æ:u5y¥Ž8VséÓ­\i#X¢vã­J"ÞÒª/¡ãdù2 ì [ù[Ì€sÐÓâªd;×±Ú¥ðãÔSÜZ„ù³‘Ó&•Ï›üÖ„[c·V85ÎE“Änüui?Oþ½rO™uIe8ç-\Ï2j“Êzà·ëZù-å9fÇáßùUÛšHxå?J¿ZX@'¯Ò¯Hа•ÅoÍÇkµGãZÒªˆqŠ©/Ì¥%±œzf²n[9O,Fj„Íüû«¸%âfcíÍTbYUÚ-U›«ÜdÔs*6É k! Œ7¥,»q•…äYåX¨”g5$–±†à*©<€8íSMiL‡J’[d]’ ËÀ¬­:ÒH§¸ ¨©>¹¬ë;vIg2 ¸>ùªíNdÇÖ®[Z¬GÍc’§ïV ·XƒLNH< ³ %ó$*vÁ„€Àæ¬4 Óp9ÅLpÑ)ã ÔH,X²Œ~¢¡É?w¡ïQ¯ I'§J{äGéO`0sGzqàr0EC'—(ê–µ†9)#Ö™&É ‚E_jjãP}©/EP?±ã#ñ©{cœd~4ñÈǽ!"?›¾@Úi»¶ô;€Á¦† AëóbŸs&õÃqSÜÈpzb¦¸M·BlwÉn*8Ó6²r[Šb)jÙç'âp0~aÈÒÛ׿ü© cߊ¹µ^u‘¾æ…>˜©-ÕZñ$aò§Ó$ Ø‘‡ÊyDZ⧕´n‹÷IÈéZ·ˆÈa’%PUÎAãwzpQ£tå'vxª’-Ä$gò¬¹s5ÜŸÂóTgl`Æ¥ ÒÂѳü¸Ør=*ò¼·¯ 8*FÑÜU½Í=»#6PŒsPÁÙ­¥ÀŒƒUa‡ìÖ“œHùOך®‹{YA T,„³€áL‚ULÎÛF=é±Hãø˜â¦··ZR£s iéö+¼ÅFöéš¿ij±m£{wª¶ß=̈ϴòãêk:ÅD—W(Ò)’¸úôª6@<“ÛJr´++îF;pÄw ²Êç#æ#¿µ.å”ÈÎGÍŽõe‚ADL)]ØM[£²‰ Š<)MÄõ<ì–Ñ4J¸]¹ Utßs%¶ÅÓmR‰æ¼A|DùsíUãi.cB[LÖm óoï.ðB’cAëŽ? ¬öÃ\ÜL …f*ƒØ‘Yãæžy@Æ÷!û Ö¬#7[BäGÁöÍji1–º\„ŸJÒÓ™³·!GZµ.|³·¨­{íÂÙÊöçð«÷Y1^Ýjˆ/!f…^k3Ê]‡@95—¹Ÿ{öŸ$ü¸úsMQ¿q<ô¦»,8à iŒcn½.Á·i;ÓŠ½>ïzŠi[¦óÀf‰ä a8¢W4ÉéÐU{ë¡öS"ü¬[¨/.?Ñ·¨ÚźÔs³†S‚Z«EpæÛ’SP$Ì`ÆI"¡Žf0sž8Í]†FxÊŽ«ƒÀö«qÈÌŒƒ¨Á«Q¹(@êµ^k¸‘¾ã¹Il †[˜”ýÆ,:¶ìTRÜÆœí$÷9§ZÝùÒl)ÁàóKmpe}£ àðNh·œJÅzqžjÊFÎ?vˆr~ñf(]Æ#D ž¤~•e#f'¹K±±D딢ki¢lKäí¤’F!Ð zSpÞ^C.Ö?ˆ¦Êœºáâ)¸!:ŒLx÷ÆsÔúS=ÉïíLd%3Þ«F’ÜJ"Î8'ÐTQ$—ˆÉ g“è*8‘çFÙ O'ÚµnDi +…AÛÒµ5 SdPB›V<ôôÅh]º‘ ÀQÖªO(H$ U ä¤qTå‘Qy­+5ÞIbNm?QšÒÒ ósr†ÓøUí:=ë–þùM%Ý⤌¢=á:ã­3SÔ¼1ˆ‰pOzeÝà7F0™Û×j#Œ–òÛPy=x¨.#KyO‚a¸õâ£7²7ÜÁÿ88P²}àã$Z”Nd£•e†*O0!V*àgØÔ³,_$l¬ùäâ§»{cŒov?6ìãð©n»FâÝsšdIçMƒÑXçÚ©YB..y8UcÍT³Ì˜9à.M]i bx< Þža¿›žHÂÿ:ÖšA%‰ëÀªH»%•Â…IAÞ°â3pW&÷ éY‘‚«>0§9þ•aŒê¨Ãrýî;ûÒÚFÍ*¬l7¯Þã¡÷¢Ù ‘DmÊõö5m£Áo0“½H8«—0ó|ÒÛ™O=ªÄñY‚I»ÕkRÉs ¨mÄç¾QÒ7%êùP+1ϵUÓ‹,ä0ùv’Aö¦[ª…Þß ç{Õ8ðä»|£¶;UdÃÍǦ*Å‹ƒu:’B·NzcúV·‡¥îc9ÏÊüý+GG”™y0lýjKÉQz±§ëwL€@§¹j]Nf…O'­Tb±ÜgkV^6 ðNÓTNU£—´BÕD̤{ÿõªÚ‡‘%!cŽ<È}Iäʬ€\mTê† zzšŒáˆð˜~cÈVv¤Å\àãVð•uR; ­vJ¸Vuª·$bAãpë“U®0gð>TÎM>ÁÊ_Uf­_]M6*¤|ÁzÕ›«©âcrªGÍ·­X»¸–,,lÁO¥U[»ˆ˜Ÿ9Àn99ªËy:1ýó|ÜœÕqw2 †õ­$ibóq‚x>õni#ߌîëïVâbñï麬F 8»Õˆ†Nјuô©ã8ãš{…ÀÚÜž Jáp6žOÞžÁqòžOZ„ªp1þzÔB©íQ1À=«6裳+JϹ!‹O®*…ÃêzóŠé-ÂÆŽ„à'Íšé, Ãk*1ÛåàÖõ±ÀêÜl5RÙÄײlL+6sôëùÖmû^«#¨ y‡>Ÿýz£eþ“$˜ÀÜXûÕ‹¨Ã2„Ø­[ÕR7*2 ¾‚¦Ôð…x dy1ópW^7SivT©ÐÊmãC&)ê@O›¨zš€?Êrz }j¾ü©ÉËt—Ë ¬aOÌ?áV-­Üʱ(É þbÞ%ÀÁ5,ÅŽA*põÅZÔ® ÝäÚ¼*Ššîlå T‚ÁÌg{'?7Bj•´o"HñaÙ?½ÒªÀŽÑ³ÇÉSÔô©`D¶ˆÉ+2C¹˜{Öµ¬QXÛ‡‘–NY‡SZG¤ 7·$úÒ\\+#É<þ5KV¾YŽHóëUu µr<ýj5dŽ0äÈ«µTŸZ¯ÐÃe+ä™¶”E>„óQ,ÑGhì§2²íÚ›l§Í2S¸þ«YǾ`;.[§éUí»çû ñïSZ¨G’V4œœõâ´t¶K,²šAœ½c²Ñˆù˜gŽÓÌÄž€ ¡,’^ݳ°%˜ì=*™g»¹/É$à{Sæxƒ­« ¨wô5véàÌv8Ê Ë¿£w«s¼,Ém·åA’Þô¥H_Ëwø¢KyZÕÝH'Œâ’HœÀY~T©ïQ· pHª°Àç$T°sÔÓg?z›€ç¤™”o\àSæEaó â«\ZÅ%ªÅPÄvj‚æÞ6·EŒŽÖ=ƒU{˜#xc?(àŸqÍ6ÈÛ*y19w8ó¦Úy1å™±Ýzö¢Ô÷Ɍ䞵1#…?w89©8È_áÎjSŒ€~èàÕi¬’C‘#ôj)­Q›;ŽßJ‚[esÇiíSÆ»!¢ùqz§ÜÔª1…T"ÝϽNƒ±…£º‡ÎRS†SžõÄ~r’¿yIZŠx¼ÅÊýáT ‹…1sÆzU3o+89ª†ÞFp âµ-ãû=ºÇÁ=Ò…<ˆ8b:ûVŒH!…càÒAÛǹoQ@늓r>Q‘Þ¤.¤´dw§ï:TnA?tõÍE!s÷OZÎàk<Ú³ÊDZ5H[³È1ø©örî+vr¾kÀ©]¬O½k_°Ži¼¶È#n}sZeci6žÉPÀÁ"ˆ€Y²@ìcŸÖ ³o³Â®£–È_÷qQÀ|ˆî`@ìÓâÆÂÅ8ã?6=Â"ÛNF:ýi 0Œ¶ÞiªHŽÙO v™äRÉ0[kHWoøOÒ‰¦ÂAàªåך!Ýçí@7ÊçøE2É${±€\®ri-#w˜ª}MZ BK}ùBõ5¥3Ça•SæNålÕÙ¤[]ʇt˜äžÕTÊ.OJÉ9»Ï\€2XÔцŽŒ'œúV­¼M ¯’@ËrO¥hÇÇŸ_J9nÚ‡;šcE™‡ _—Çj/6pÁÃåÈíJˆ\«g<šµ(  ÏAÀ­ AJÛÃäáz ·z‰sÓ ª˜ÉvIcÅeFÁÏ<þAp0sÈ©àA,O!å6â´¬¢Ym¥—îM¸þµvÞ1$2>Ü1ô¬ˆbš¯Ö@yM߈¬…ŠH¡¾G¦Åfˆž;kµlž3øÕ 7\E/ÞÚwìQ¶*trW'JÙü©Dƒæ úU»iÞRÒ9ÈsÛ·¥MŒåŽCʬ[È[,yÜx`+¼e›¢Šµ‚X nb8§ÆH^¤þ•!ÉÆ8>´ü¶AèsÖ’H=ép~l‘Îz}i0yŽ{Š_Ä~áéœô⤶})Àt¦»1F2M5Ë8Ø:“MrHÚ;š_`A=ÇZvsœ“×½/n¾Ô…±Æ 0žÅñŠF2ŽqŠB>`;c4Ò0Àvþ´Öh{ú kŒ*‚@'¯Ò‘ð/¯Z·;eÆ8àw55ì‚i”&qŒzÓîKr€`Œö©VIˆLdâ5ã¥Ü7ÚLhFHŽ:PÓ“pQN7*B¤¨q´ÈçùUö‹0—™÷>‚®21ˆ—©õ5UpGÆB˨æ±@1ê¡ñøVZ»,>_3ô«V˜Ï# +>ÄúZút‰n—,¿+ɲ1ìhÙȰC$Ì9wùj—/#u.peÏ?4²¼çíY³L]Üž®ÕšÞܳM(V?wÚ¤¶x-ydÏOjš ¶_Þ?ÎJ°“¤±ó>•§ ÂOò¿xÙãš¿Ë,cËù¹«aO– SWÙ?pªÌ®jÓ/îÀbëT§®#0Ú™bxW?x«%ÎÄf®Xž+"áV[† HU&›E•ÞÇ~9¨íX}¥åw磵aö„^«œàT—n¶¿;>#~ƒ jß´aÝÉœCŠ¿tËn7ù\qìi™,¢©!8nüÕu)„ »wwªÎêWåÇ@¤Ô˜ ; ÆÍ£­0áî(Â1žæ™ÃLä}Àx¦Ûe®n ÀP?½Vô˜Ì’]2ã@ãÖ¬éê[í ÛŠ¹€ÁX`bµ&Th’Là UéT2=†+&g"6‘8+›‘ÎÆeã‚+Ü”%{ñWt¶ÿDf'¶´#þ!=‰ÏåZšcbI=3Yê±¶©öR›¢“÷Dç½fØêQÉ©ù&èæ2~¦³¬õåÔZÕ“) )ŸzMŠÚâaªFñ¨§Ó⵺™ €?ƒèi²ÙEo$ɼOªˆþÇ2–>yèj ìé—'_z€¯ÙЖ ×Þ–Âwš|1ëϨ³•¤˜yöíIe)’^~µnfD–aVç)*XÕ¹YTm$ÒŽXmqš:¸Ú;P~÷NqRnù@^^¥Ý€ rE= O“³dàä⛕ÐΕèAHù €2h`ÁpH ƒŒuÅ4tﺛÐt!©Âô Òœ™OåI’[“IÉnNi„ŒäóÞš~ñ=qÍ'r}*ó"[ÆøìC‚=@«sD¶èUTerP*i”D‡p85WLÿK%c´uo¨<Õm&¶LŽÄÉcŸj‡K‡Ït•Î$þTÍOT[©’ÊͲ»‘ÇL TºÞ¨“ºZZ¾QH,Ëß©5]Ig•m­X•S–+W³;H-ŸSÔTK>I ½wµA‰’Áœ‚ç>ôâù†Ý}Sy?Z'”µ½¤`œl.[— @xXòjDÂÀ ­©/æE! ?[Z›AiæKÒãÒ·ô ‚ÐI+ò6ìVî“hÐÛ!;˜äнpâ$O?Â=MZÕ%F¬H-Œ>µ-ü‚(ÁÏÎA°µ{‰maŽ H–F Ì==+˜»’X!Èv ±AX7²I X󵙆~†µ­b&`äxQZÚ%¨’軜× >µ§¦A™]ÛøF1Yþ(b°[¨$Ç4ße-íàe¿¨|LÅa€ “Ré忳c8É(¿QÙ@# ªÔ*ÛmÔ‘€J´Ýœ_ çùæ¦ÜaÉÆñ‘ô?\Ô„„@O†EK`Ÿ¹É&¶40Áœü ±$Ö–›„³ÜprM *5¼Ž§å\í&‡%Ó¥‘XlRÀnÔI*½“¸# ¤ˆ¿deÏ È÷&±bQä0ÎJôµ™”ö< pq}˜ð]J“ïŽ*Ô3ˆ!k_ùè›GÖ¬$Á#hÔþu—¤éì—mwt»"v©êÍU4›! ¯yv6¤YOVj¥¤ÙùÉ{r6ìÊ¢žæ£Ôd’k‰ ¸ÕVþgžâFcÃ7Oj‚òV–VfèÇòçYgÒãd©Å9Ä’Ø #$|ªòØÇžXd…Ignmã,Än=Híô©- ò±`[¾;}*Kh1œ‘žæž o_ñ©¡Id˜,hXõö©"Wwùìô¥Žü3&8ü)Íøf_CƒÒ”ðøÜ§éÚü=ˆ{Rãåè?Úâ8éÏ¥’¼qéK’WŽ=)s•úS>ódqžÿΣ?3äwÿ&˜ylÐ ÃgcMÉÚs˜ÒdLlž9íM>Æš~µ6µ)¶´&K³óæ¦ÖÛìÊÑ©ÉÆÃK¬IäFÁy8Áüi¶Oº$I‚ ¡FÛמ)!¸ŒéqF\ÆÈÛzóJ“¤šth7FTã¯5N$ƒO¡Œ3ÉëŠÏTH&(ç'¯Ö¨CpHcPÖó Ò÷cÈ^=:å[WWÃí•ÚeeL}ÿZµ®¤ÿ‰6OYHŸÿª˜2À•R[T{VR–¹cŒ(œ»ä'hÜqŒS§VŽÈ‚1#úŸº3Vî"kKÊí–\6{®*Õ›[Xþ_Èb~•±·¹Ô–à’ÂQ¸¯¡46p]êqÎXºÊ7°þéªX­!ŸQYÁÜo?ZÕi'øFp+vI’%Ž6Œ`V¤’$jÇÓµgO››¤ ¨éøõ®rúf½¿]Ù¸ükæV¹¿RxEâ«ê¶âöá 4nTP9ª·ƒíW¿ˆ6¸Vé~Ór­ÝXùÖ¥©ÈuîœVö‰´$£®­4cï+]Ýw©Ej)ïaõ¬ÏÊfÔ"·åˆdýO5›¯7 |±ŒšÐ8@±ŒchvªìÜ„íŠc0,±4çÛ¹!Àúv¢V áONÔHÀŒ±éÀ¢ÉkRE›höÉ­}&ŸN*ç’B¯ãZ:|O.ž‚NZK˜ÒLüÇ=j-N$¶Há ½N™|«D^çæsÎ:wâ©G¹s{cJ¬™C“Ôò1Pºî/’=Aõ¤pw1•äSXY³Êò*¾§.ä—nã׎´šŒ›ÑAp ÷ã­& û”d`q‘U£·7hû™J„ú®xª©\[G!%v¤Õu§·ŽCs‚hyd]Ëú¸ˆG®:šV ìÿV§h÷¡¤nJýÕ;@«°|ñ¯†9«0Ñ®95f/š5Àæ¿)*3Å;n²úRãH«–,±é¯2±$žÄÔÓ™aÒtl9$“î ^µašeSó’}뜒vŠàº›$±W2Ó²Î\I9"° å. VÎO8­ÆÀ=x?lºí;O^çZÌ6±SÛúÓH,Û˜ñÓ ±ã¦)¸9ÜÇ#Ò“9n>”ÜïojLîlv¦?@~iŽIàSž;Twl…ÝxaO¡¨çlFÅx…úÔwV&=1À«œfõÌ ÿ=O¥M©¥ÝH‹ÎäúSïÔ]Êè9Ãh·ŒZØ)uù#˜zš®‰å[†nŠ9_&ÙI袲 Yon²Ao5À,=3ý* H¤»ºEÁ>kô¨-#{«•HüŸjèïÂÅkJ?ˆ`}ox€$PB½ß }+c[+¼Q¯|ãè*;Sþœ¡9ù}¹ªzÔBÀC¸Õ}w]8€‡ŸÆ›¨+†Có2À£[ŠO´ œŠn«r€e€\(©Œ%-a$„™Aþ¥h%·Ù¬-ذK•!Çã×ô«â/"ÚvÊqéO•¼Ðò˜Ë{š.ä7`€|Ƕh™üÞAùGZ‰A2ŸTËp~öBÞ2×O¸«V®ET·Oô‰ Ë5,¥2ß<›€ ouEh—^w_nj+5æld¨%}¹©ìœž¯óÖž‰2/Ÿ¼òÀ??SWôÙc—qêwâ©…2\4åp_$Ö²nä3Ý4ÅpXç™tæ[†”ŒéøTÃoï2 `½dxÃqÈZjà£ñÏÙÁKpÜ‚FÖ‰ce‰N0X)e…°ª:µ]·UŽ%·ùgë]>œ;t·Pt ­o[mX–5y` ÕÆÌ@Éù»{V¨ââíÂe¾cÓ¶+&ýŒ÷ ©“óoÎDhÙùAǵC‡Ê#8ö¦’ä€Ý@§¾•’°4ŽcT;‰Á×éY©<»çšÎŠó*í9Ý“[“IæNïê{zt­4¢[‰[<~U©#‰%wÇSž?*cÝ“ŒŸCMcˆ·cŸzF?»É¦·©ùˆü©€l?xÓÚ9ûÆ›Ÿ»ž3HÝ=èëUõXÀÊç=óP^F¨1÷sÏ­V¾âƒw5~ɼù˜Aù>µ=¢þæâg~_¯z±l„A,ŒIù~•WY—mºÆ­ÃœþZöB" ïsUo¤" €ýê›ÃVÌ"yä\ á3Z¾³e‰®]qž#ϧsZ^µd·38åÊ=ªî  ’-ØÎO‚™âMÒ©#8àz-G­6nHíI§÷ÉŽùóRxi›q)@üù©´D#Îr8ÈZšåKL¤œæ¬êI›´|ãËPÕ5Úfå_¦Å£¹”BìÃÿvª]ÞyŽËÄŒnþíV¸¸ó¦sž7zTsEB˜ƒ8È=M ’TR¿¹ÈQ´õ4çó¨ þï8îjk•1yr—nU¿“RˆÚ˜æO—ä*ÿ:ù » Wø— (¶UMó0Æ>@=tqÃi5ÌŸxþì/¥iV¯+}æù>”Ô#Í·s’½éUDß„m¹ÈÉàÕt‘rBœ“õ¨£bìÏÔ¶ëU.ų’MUR]·w&¤Œ€YsÖŸq=Í>.ÏsMØX'z&@üjÀPf‰‰?œ`ÌœüÈ Õå`±—cŒ“éŠè`a·!ÇØÖº²Ç˜ü2Mf[ȼä!ƒ´ýx®z9•[Ì0Ÿ©¬”” 8àÔˆ ™¤”Œ/_sÚ“+Ë+ghçý£Ú–1ó´’T»”ŽNî:`ôª×òY‹c¶J‚y:±Ï¶*Üo/Ù#~©·Žy­8Þq§G!9M¼sÍ_H¶‰!û¸¬ÝMšRŽÇ#nµ™¨»LâF9ÈÀ"³¯ÜÊÞa9ÈàŠ‡L,.NÌÿ«;ñPéû¼æÆqåÄS,wo“Û³æÇ­YˆÝçn¸üÍLˆ´§–ÀüêUP…¤<·jª×o¿vxîÔF僇ÏOᨄí¼7éZmgL‚j». ©ƒ• 0ö«oÌ«@A§09 ã'¸¥9Î8Ϩ¥8ŒcßëH¸ÜH˜¿{pš½r1I!ùNHâ’N˜ÏJI9\zSX`}=i$­#ŽÔÅàï=øÕàç¹âš89=øª7Ræb™ Œã=êœî^]¤ƒÆ*¤Î^MI­ñ•"%ù9ôM_w*ÆãoÈ~ƒ­]w%ÌKÆÞ?Nj“Û-ÜÉæ© ¶ïÿê¦Chn&e,À zREkçËš9'§µl€‘GŒˆ+§c´àã^ž€VÛ2Ãc â²ãÝwy#°%W;sÒ¹xVMJþIÜ Èüxƒo}u$­¹À«ÙcÌoÓ–SüF¶Œ#O·0U=Ö« ´„llÕ}ê±f\‘ 9†¨+™]Ê’D€’ªjÛËãÀ’+&æöI.DŒHÇÌqҲ唴þ\< Ç+:IŒ—^T8ê}+^Á Š1+_önéQöùŒJCÛÕ«bÁ<П‘:z·p>VÈÈ* ±ª¦è÷J•'銗PLÆsÈÚOÒª«jÌH ý+!fÅ‹ï0þUæbÌпô¤TÉ}§¢Œdšl6âD,í´ƒhŠÉ¹‰ôÅ$@å«ÛÎ{ÜÓcs˜Ðà %‰ì*4vå“íI!O²ðJG¸ ޽y¨ÆÆPR<úÓSkmÏ ¸ zÕ‘Aò™õ5´,íð»[÷ sžõª-âÈ*HqŠÅ×u_1þÉeýaÄ}fëú¯œ~Éf5Ç˜Ãø¥eë:—žÿf„üƒïüF­éÖï ¥¼擇cè3QYÂåa…FXÌ})öp±Ä: ãOiQÍÊÇÕ$Ø~¸©¥xØÎ‰ü2~´÷‘_ÌTìäΉaY*ß6:PÐ$¿q¹ÇJ“œã_mQÇ ?/ù5=ùA§C$œu?Φ¼*m"HÎ@ëY–›Zc£÷o÷ÅeÛa¦¸ù[ï σ&ÇS÷…Z¹ì6nbP¦V“ƒÍZº„ÙZ6Ì/šyìžEX¸ì–ÅS‚Ì3UÔ—·mÇØüG5U¼-»¿J xNîý*½²+ܪ“ž{Ó-Qd¸@}zÔvªásØÖ´»MÈ ‚¨¸­9ˆ{¿“î¢àšÐ“æ¹%:(Å!'`9ùJi?»<“HÿêÏ­ `"M¼i7%ñÀ¡˜P8 ƒÀÀÉíHTœŒµ7 ަ‘¾lzÓY·c±¤c¸ZcŸ)äãœR9@ÁëÏŒ~PïTåQ¼>fn~€ÕIÜH’UqÎW†&´^GhžA€Òg§Sž)i$faÃ9Ç×Ò€Ï#½]ºUéó ö‡f! tw ä]X62ψÍnJWVÇä?….£&"†ûÇ“íPë÷X„[£rç.}ª ^b"XòÇ,i-PCeƒòîç?Ö—Lm´ÝÄ…2r[¾;T–q-½‚ö'š«u)ÆÏ ð|wª:ÛÍ4EŽuëU/'i&Läd ƨ]Þyz¬i*ªÅŸèS{Ÿ/PR™ ¤³ ªsåêgw3~U žéÏ g¸êišdGd· pAúu5• X¤¸nŒOä9­FšÒIø¥8ú`Vÿ‡]žÁݺ´§L ÚÑÙžÏyêÎßάß>Ûf#«|¢Ÿ®È#Óò,ÛGâ)Ú«ùv|g,p*® Z€pÜÖá²—/Ô’F…-ËÚ­ÊþR¤,Ø 2ÄU™R“Æ2iYc‡%yܧ ûàÓ.[o3½s†÷Ón ż'ñ œûóUæ}¶Å—N*™¢d `ƒUL›œp§5jeW³šQÉxÉϧдhtÙ¥\"z8ýkfUb–@rYIÓŠætx÷m#)a;}I3Î3ÅS’M “Ó¥kÛ÷vè@rp=@Å_ÒeÔ¡R8Ž=Å]Ò”K|¤ŽKUÛžePÛp_¸­mBU’å_fÅ,dôçµhÝ8k…Pá6Ž[¸ª—Jˆ#Tû½Á?­ej ø,ãîõÏZ¡v‰çCd¯CŸZ±vB¢G”O°­RQ¼Q€£ðwPG ãþ\UY§ºF ¶O ôÇZȵ q{l¶OCÓgº{µb3Îy¨&±Ûsqu3ƒ½ÊôÎ84ç³Û5ÅÌ­•i ôéœÓE˜WšâCîV–ëÖ†5Tá06à‹xOËÀëK9ð^Ýâ´4P?²â`>ñfýMnè#DÍúšÖÒ—nКn¨í½z»óª%•üè`t&ïéý*޹#b„tÛ»óãúSÓ÷Y@Ù ƒþñª‘,‘×#ëPÄvdgîŸÖ–üÔVb ©9>µ~ÖÏí¬ÒIÉîjä6ÞlAäÀ¿zkdsØœúV}ÉÝ#¹Éä/>˜ªSÎÎI989¦”RƒŽ?G±p;çµ3bàZ-ÑÒÚâß“‚yö"´ì<ßìÙíú…''=ˆ«ö›ÛOxzœŸj­kj–MHp$<“ßâ³’ØAèk6öâg•QI ËY÷sÌóª®p8¡$.Ö |òFH¿5~H¤þÏ(Xït-´÷Á«³Fßb([ædÎ+.ÍXθR6c·½fÛóÔà®Ò* &u8#i¨NörÌsÏó­%™Üœžz޼տËî|óQ—òãW$$Œ~4ÍûcSœ“Æ)¥¶¢œäž1PÍ"´dŽ úÔ3:´dƒ‚*)œ28­=6=–Ñ©ë·5±¥Ç²ÝUºíñ­;Ê@£¾3PÞ ^)'𫍍[î jµØÿKü)£G<ŽÝk:yqÛ­tújü;㌪þ|þ¿ÊºM ´—oŒœ¢ýtLB+V±—ÍG,€…Rq—;ªÜ»ØsÕ¾j©u&Y@=I©-ai˜Ë(p6ŒuÅYÓlÞáüù¸A‚8ëƒV,mÞGûD¼`†OT¹!Ÿæ(ƪê×&YäÉä÷<ÕMJãÌ•ùΗIBÒ3rƒ¨©´hÄŒ\œª}1wî“<ڬܠ@Wv<Àw/õ«éä+)oõ«¹ÿ?çS]¨ˆ2g!ùÛéYz´ÉµáÉ&"»¿*ËÔ¤ jrÈF*Í¿2”S÷HÏ×½a•eo2Æúàfº«8¼›8b=R5ò®Šü¸cû¨Õ;¬Kxvò¨¡I÷®wW”\êNTåS+Q”O|Ì£å^3M¸r¨Jr_å_sÚ«Í€ŸyÎÖ˜9 :¿´"ȵH³ªt΂ÛNXóªñ­É@†Ôî€TÎC1P:çî$‘ŸÎ±d;²ONx¥‰Ï™œu§ÁàKð1Å>ò„·§% ,eÿ õÅji‹˜î?ÜÅ_³¹›éU£l®Ž~ðG©k2ÉEIJFÍó¹G¸ëT-•¤Rß0ù—è*¼–k½ŽI0…Jp°ûeòI#ˆpœ¶fæñdåj¹¨†2 ä J±­'BÈù@•6¦Ož„žƒ•^ëqòÃg#·Vè°)žIƒøT«®zà¡©\´n|¡±Óý‘U¯fØÀBâ7³U[Ùv?˜Ÿ­Y²‘ä¶Wn`ØSôãbÒWhQßæ §ô«6ò3®ã,sü©\ …dÞ¤°ÉãK E@ûÁf\ž:gŠY È`IûRE8M§w8Ç¥$sù€F¸;¾n”‹.ñ°`ÿW¹Âºç¡ý* À éüª¸uô¤Š/78óïI{ñÎy÷¢8÷•ÉÇõ­xd¨GLb¶­æòÂ0éŒV¤RlöÅS’O6g‘†àb¨M/<“7 UIÌ•ä§5Ï@«sâ ˆ’®Ø?ðÿÖ¬+XÅβðJ±ýšÆ±Qq¬Oèoʺ ÉÌ0€ƒæsµ}«{X¼6ö¡câIÐ=«cR¹1C²?¾ü}VŽ#T<–¶½X)Ó´òH$ÖR'%zž¦™y”D ó†JÀÄ׬nüêlÌl½U‡ó­ hLõük Ôk'èñ­[õÝlØàƒš¦ ¼¡wc â¹ØÐË>Ðy â±âC,å}Gé·B¨¡N?¼ÇŠ–áZ-á{çÖ¥˜hÕx Æiñ³ïhc?7W“•^µ28%Ú¨@â¡rQ¶åY‹{ø$lƒîËýk2ÆO&ú2Ã<•?^YKÆ\ŠÚ™YAòÀ œÖ¬™_¸ ýôJäd⤒?µCÄe€ÃS<ôIHçªwh|´=X1ã—yT¹ ŽžÕFé~XÿZ;¶ó&FLì ÍS¹ƒÌ‘ yÙ°ø ÕK¨wÌ~èPOà*YÝn!Úr¥±·ñ¨­¥q4X9±Še¬Œ'ˆ˜ŒU‰Ù± ‘6òvûv«•¤.ÆIZ–RÃvñ†ÉÈüj,µÎò6€>lTV¹3o<5¶LŒØÀÅY’=òÍ€sïSÉù8àà`Ô“NUÛ¡Ó>@?Ä3É­Ù£=Ìùœ(=ùäÿJÓ²v] O.Al V9‘ï‹1ÎÐû±ýÞ+!îw1ä&²÷›¡»°sŠëmÐEH?…FÏÖ»KH„6pÄ?…®ªò¡Dþ裛›˜W¶ gë}䟺·çÇôªwù71GØ'ùþU‡ FN¯uq'ðŽk+C"-Jæâ_àÜ?Öf‰ˆï¯ndìHýkRܽÌí;v8EþíO “Q»yyÀÎÅþè«Py—“<¤žûG ¥FT˜ÆýH<Ôk¶'(ÿ{íCµºâªë Y-"òÞeéKu ?cˆõÒ§åKtæÙÇýùTŸ¥jHÃÌ9ÏËÏZÔÔ'̤sòö'J¿w(ÞGe8ªˆ6̧=1õ¬x*Û›n¤\/®jYÍ-µwO^‚¬Ï JÇb–<’OASMH A’$ý)-Üù7L†'§jŸNŸm¶×û€†'§n•=œÁmðÿtõª¬ËºYßnÔæ²Ý<뱯2?5›°Ëz¼àΧÔîØn០[´ëk“œ¶8§¨L ï–=¿ –ÛÌ[2ãÌa“SÛï‡JC!c.qSGº;ÝÕɪÒÈAã¦yÍdK/ÌQžA¬÷|°ôÍfÏ|lïvya£9בUZèÚ]* ýª¯tmîJ2‚„`çÐÓ…œ6Œ·ahÉÌJGRiæÚ;r³%O1Œu4ÿ³¥» wdSÞ‚Díóq“×­!>küÇïw£‰æ8ÝÞ¦XÒ˜§õy>”ÿùeøT}>˜5ò¨½ià,ç°©C,ƒ× ?» úT2`åˆÁÇÿyºãŠ…ÿ¼zâ£`pGCQ°ãj3ÀÀëYò8Žc&©\ uª¹Ä…¸úuªr0IKð+¥² íp¬>m gØŠè4G@ýì~†·4…WŠpzž?T?±ì-ë—wÃ`/ëPÂÏ tîÄ6Ρþʲ·!î c»îŠ~·(]]¹Ï¥Y µÏÈ9ÜMZ’.ÛcPX±<žjÃGˆÃ9g$õ¦ÄA—ÌÆ#^ÜÔZxëÎa„^=ÍGcƒ?š~èáE3ѵ÷»¯±LO™ ¹²ÞÔ±Êv<`í#9>Õd}™É9ÆOâHªÑô [;‚æ@¨âÉÛû§üiw*Eç7D“sŠ[B¨Ráº#ñõÅ-±Díü$Y„µýâ¯,]ºú ŒoÔ¯•I-½¹>‚™kÛÅ'-“ô­»¶˜ÏNkë„P€ôä ÑÔ$ ¡Aè0*ŽÜª“ÙÉÍd"PyÏ\ÎEʆèi—–)|èÈÁ>ñèÕ5݈½•LckíνOº²[¹_•€üꞨ¯¶%òÙjWoR­SÔU‡”… yJS†«_‡Ìk´¦Á€= ¬žX“nѼúšHÕʇÆ!iaV!®½[pQ´’3ÂãµXp|=zc󩘓‚Oµ3!T“÷¹Å40UÉëšh`½( Àõüir7nŒRänÈéŠpÎÁÆ}y§ò#éŸÆŸ“³¦j3žüŠˆçoàj3Óó¥pîéNÛÍ8}ÚkÃ>¤ÀóLq•ÏáL~W?…B[QÚ¢ÎÔTdãŸZ¥{åýþÝ5Và}à-Îj•Úd2Ësšè,Ùêe¸(Aµ¡’ÚŽKaLg#èkkHɸn~Rœ ƒ[`÷V±©;]À8úÓõö_Úħåb3­«¿·ˆZ|𠘮ŽÝ˜Ú}ê«Ä·1Ü8òÈÔD·ÌÌqµ° 2Òß±E€}:ö4–p<’ˆãÂíSIm I&ÄÀÚ1šÕµR¶ê™ ¨®ŽÀm´:2 §=ënÛBî®*¾¤IŒF‡›Øv¬Í~]åa_áo§jÏÕܹX×øzýj„AÈcñ¬«h÷ÊŠ99¨Z¡yG<ñZG÷qñØgñ®­@¶µÀä ýk| á­sú¬Þmý¼js±[ð8®cX¸3^F™ÉE?…ajs¯sÊ©«ð¡h­“’6}*E‰¦ñ€YR2z —Ë2˜—’ªœûTêQ£x‡Ì#n>ªÎèä²1O”øíV $–ª;N+:þéíå…U¸ëöjœ× o, œãÚ«KpÐM“îE\iÔÆ·‹Ñ†Ý£Ö§¹‘AI²Œm÷©&}² J1ŠX–Ýøf'ýé,âóÒ{S!9×4–±™m怬6*(Ô\[ i8?u¾¢£³â1nã¸'Üe²‰âòzzU› (­²ã–n2kgJ°ŽØ4Y¸ÍiXZ$·ñõôŠî¡O=ꎳ2Ip¢3œj®£"¼êäÍU‘±Âç$g5E˜¯=3UK`à}j¦­}sgq Bà ǾhÔ¯'³º‰P‚CÆ›{5¥ìh¸!TT²ß«HÍåä°ˆíN¸½Y'vdqˆ©%ºF‰^¤ieœ<ŠŠ¸R7/ãM’UgŽ00È÷¤iHˆ«d–lœ|«òã­_'so eWåúw«mÉ/¸¬éÝW9êMfHê ž„š¡#(±Í:<°àöïJ¤²ç4ªI1LåÏ5+!Á çš‘ŽAîi‡ b˜rÓœ`Òžœô—·=)èE&AïÇ­ƒôÅ«°ÚØôùj»/ ÀsUý>˜¦ œnÓ †Êñ‘Md ¨­Ûh†Åàrë[Ú\cWÁÈúVÅ”APg¿WPVšæ#’ÞcOù5_S-ÚcƒæÆ:÷þµègºFÆV°Ç* Hƒpô±PhäU1΃v:Ûñ¥‰J^I €lp ö¦Ù–K¯+¼Üÿ{?þªM/tZ‡”@à²çÛ­q)rPöÊÖ‚€¹üÍn¨X£fÇ“ZƒÆÇû£5•rÎFf¼Æuë\­Ü²I$²HÃ.GÙ¬ ‰$g‘‰féSØ©gR‡“Vô(|ËÀÇþYÇëÐU2Ón=UÙ>æBkvçýIq­YÉŠål7]ë,ì7›#ô®6ß7:ƒ±'úW/gºâùÜôäþ|WFvãåŒ~5´§W¶Åkƒò0ìx¨ òäÏùª (ҠݶLvªZÄ,¯£”*—UÅ(\« _Ëšn£ILd0¨´ù‹Ì-›åICÑ[µU‚O1ü†?+r½C†FòºÈ­(ÑŒÞc6d¿¿¥\°.—>ïÞ Î}êÕ–èä’\ò¼cfYÓͿ֢Üm§Y“ûÛ¸ýj5?e\r3“øÕ摸u`»“[æxþë ¯Üžžµ°ò(pxz¡6<ÀP‡aØúÁ¸Ü¤1†²fÇÚ20OO¡½–(ÕYþUm6îH†Òß*c´—/•,p¸Ç^þ×í‹o-¸ÝPwŸNâ’úÛí aËF1—?Ê£¾¶óå†XòPcæªs+EvØõÆz¥ 1ÎqÇjªÀ¤ì;f¯$9XË™zóÚ­,dˆØŽV­ª‘ˆäu«-!í;qøUÆ—h!Fx«.øVvª/ ”G9äUÌãœôªMþ}êDSü|qOU=TªëÆOgh-ÇJ³gŸj™9À'­E ;ð=JÆ_o½BÃ-·¾i\uÔ0àŠqŠ`8RU¦çåÇ÷i3Æ)v+6@ÈíI°'­&ÐZ¡™p䎭ÆsÒ£‘pÝ9wŒô¨&Îáž•ìrME»$ð*<àäô«ÙrÎxU©­Á9îÔÐAn˜« ðIëVAã&§9ïHɸsÚ‘“pçµ ¹ÔMgŠ£#ŒñQ” ã4õvùIß«SÖWXü´ãÕ©âB±ì^=M4 žO¦)€`çø½)€`ç94„‚=G ¤'pÇnô¥D«óŒîû Ôa~cœäò*%_˜ƒœžEM!FæçùŠ™" 702FÉ4àAÂàay¥$·²óA`Aݪm!aÀÀ"ª³ä{ÕvlƒéIhB̲WS­VpÌ2¸¢Ô¨”åqй ’£ñ=ªÊÆ@ྂ¬ nNÜsÞžÏ'½;rM?sIÐñ‚i3ÏcMxæ•FãÉùE*Ç“Å*Œš©-³4„ƒÆj´–ûœxÍWx ?^3SÅB¿(úšš4H—޾µ2F±95Bí¤iÐtW8ªS—ó”vj¥3¹@èjÇ™$¬Øàu©ÚYe8f<js,’œqMšèFÁIù»Ó^)±œS^àFÀg¦ŽO1ïR£ï\ž•*>õ zSŸxÛ·Ö†-½HèhbCƒÚ¢ÕåÿBÚ‹·sícô¦j¢ƒŽáPêRj6¼qùTš:l7Ë6@¢Î2–êG$°§ØÅåÛÇÇ$ŠÓÔähm’~óŒ~·¬ÏökHíáÀ2G¶+SQ”Áà ک­¥²ª‚Ó1ÜO¥dF¼\dÉž}«:´ö zb¡gfáWJ‰›…_J™› À¤ Þ¼úRaÎ~¢)çëOÛÓû½éàœåF;A463€iN:SAhó¨~^íV,ìdº?/ÜÏ-RÛÚ´çåû½ÍVÕíÖ[yÜŠp}C«Ù5œÐ¸9QÆj FÙ­ç…ú¯JŽM«–åQ¹½ÍW8RXpnúÔM…ËŠ3Y§|ÎXòìyÇj¤Ù•Ï15D«K!$u5«n¡SièÑWã&;c´cWéL¸v ìÕ¬G~G)"˜ª/#òäR¾´Üyëµ³òÓv‹„ ý«J%Ùn¥Z^" ¿åVá‘ÏåR²™î#vé·?•Nå®®‘Øœ*“ù ”îžà;tUÍPÕ.üä}ùAT®æòƒ€9sT¯'!ÄÆŸ¸c‚8àU‚r¼{qVs•ãšT瞸4Õéœ{R/LÓL\gšcëœSZ>xÅ*íSÙ½©Ãj‘ŒéNSØÓƒàô/zxnÞ”àÔ£œO­*N§=hÝé¿3`·ô¦[æn è1Hr~cÆhÀõçéIØóô£sšaÉÓH¦žGýÚg¯sÖ¤ 9âž«õ§…⛸¾^ãÅ3Òœ ç½;`AÍ;hQÍ0á›E3‚xû½éœÇJ~NÌ) O$íÆ@ôüåpÙ…%°£¾:Ó$^–Âúâ˜Ê~ROˆ‡9€}{Ò"s= û{ÓÀã Œt§€:S$’8ø-ŸjÝýìûSÑ8-LÞ²p„R>Lu¦î ÷kGIuñ±ïZúÁchÉç5£¦8'½;WÙ%¸„à»°?AN×|¹-V C;¶GÓ½¦Ç…«šÌtÌMÂX®˜cã³]0L~Õ±±(2j%Q²¢£XÕ@Í?ÌPŸ/ðÿ:Rà)#¨¥gϧPÜîÉc 3düýAçn<ö5vÞ2¤ñœœÔñ€ã¹ÍN‹€G©Í^QÂFÍ!$ŸAVb\ª§ñ±9>Ú±ÊݹüªA!E'Åwéš•\Ç7Éüx§îÙÿv¹›¶k‹²‹ü?¥b\1–\¢±nXË1 Ú·-­™Ô1éÐâ¶ímZTÜx· é“Å0ÆDžZž}j#ÔšŒÇûÃ4é—bœÛº‘Ö2ˆ×’=HëK*…j08WûÇŠ‡²€rqQàŽƒÔÔ»\.@V¡ºÔ­…ÎfëOÚár?ZbŒ’OÞª1œ–þ!Úšä÷ô§mÎ2O=©á3‚Iæ´œsÖ¼à‚½†vÐW°ÎÚ ©ÇjNäÒp4«€ÿ:r`dãó§ `ÿZ „$ ÐdT^H:ÓRmà•ÉÇZjM¸dŠjK¸¹¤l±çHÙcÏ“–9§€qò®©§¨ÀùW ÜÓÔqÓÖ¾ ¸* c¢çÞ‚ÀvȦ¿-ž3üª'ù›±>ÔÇå»R—ÙÛ&”¾Ïz7ìªóÌÁG8' ¨¥”í__JŠY­U*\ä’MW!‰ÍW!˜Õ¨Sn*x×n*tR¸8©#vŒˆ$ÔÈñeòMI (y4Kp YŽé ý)í?—‰f;¤'ô§4û1$§-šÍóÙä’ÇùÔ>a˜³Îj'›—sIw/‘Û÷Ÿ…¦ÜH"S·ï”Û‰hvýãÒªÚ–rêp¹¨ ,Û‡R¨`f}þÕ’îàÃ`˜Ž¦£òزŒw­¸~é'§OÒ®©Èϯyy^*IÄ£ï¾ÃÓõ©¶¤Q/,x?CR9ÀïÒŸ~µ¹foÞÊÙ'Ð ¹¨Â¶V`±ýôÌ @*ÅôbÚØy!ÏÐW3o‘æÌ}ë…gôkžŒ²Kœö®ž B¯¨º[{€ŠsÓ®’)BU‹–˜²ªd-9t5_Ì-1d4ŽN`{Ò98Τrqž:ÕûwÆ:T¦Þí—ol©0fl³qÓ&—i,“÷«U¤ÓLqÂŽsSé¶ò<‡²Žõ~ò3' *ÝüF0ÉÆH«7q˜Üc…3$sŒqPä…Î>µH¤+‚x4 •Á<Jàô¤ ƒ¸‘Hq#Ú“fIÔÉIFän&™1d=;S$b­Tf‘É#pÇåT嘫FF*œ²Ç#"µ´èlƒÈ6†ù‰>•³§Ú¼væ\ùŽ}+ZÎÝ’Ð4‹ŒòsPŒ'ŽOªd'޼UqÆO¿ucJ8Ï'šÎy§3dñÔS™ÁŒu§3 u¦oã§·Z„¿=*2˜6Œ“œSF=é£óš +žy=©J)<óéC"Ÿ~)T0\}M5TU"‘@ÝŒt¦KrL/8Í$“‡“åû½)¯0gãîÔ0 ÚøH ÚøºzTnÉóJœâ©Ü“æ=*¥É>fÓÒ¥‚e†q×v§Å Ž2{çè¤ }N)·Ë¼¡Ý])f_¥jÎëì8©¬aèï!Ú\޵%²cbü4ûhÄKu'š³Ѻ’r¼{T©*?(äpje‘ gå8«…7ÝPN*DUPXôQºž€(ÝÙFjKüëŸ0Œ*óøö«:-¿ÚoÌ®>Xùü{TÚ\>uÉ•z}j†³r³M>ËìZ©®] ‹Ép~HÇ–µWW¸M.>ê«QX[§Ø$ëAÀôç­S…P[~w¯ÕRE´ØýYivg;yC÷~‚¤39cÏËS˜¹$üµb)8ésZ³qpó ‘Ž=*ÅÕÜ“¨‰ADqSÏpÓ|‹ò¯JŠª€>µ!T×Ö£$ÀäÔnv+:Ôoò'µF䢒{Uv¸váFBÓ9è0*3œ "¹;°ã­Ìwa…*Jw|¬“Ó ÔËÉÎ*PZp~Tà88§òž1Q€~aíQ€rÃÚ£ï}*®À œàcš€¦ÐNj˜bØ–_u5<'#ýÚž#‘‘ÔU+¼ù¤š©qŸ0æ©Üä;mº4ÅSi!S#ØœÒ@¦FӚњHâ°¨â®Jê ƒŽ\‘Õ1ê+:y¥Ëp*”²31$ñTe‘‹õ÷«Zh%Xž`~C5=¶J±5bÛ%2jüû„Q“»Ç®*ÜÈém·O”¥Z˜2„ÿËJÒ³U‚Õ˜°-Þ¶4¾œî9Ïô­+ °Ù1 ã‘ïÚ¹igóŸËTÉvþµËÉ!w*,N:ç^_1¶÷³ŸÎµ™|›E䌥HÃäóÚ¤aÀ…f*áÁ\“Œ~4ÕS¼c$‘Hª|ÁŒóÅZd؃wßô«B('ïúU’»Tg­T0~[hëÖ }Á¾ö^µ^F`ÝqZ†I ÞÀ«jõ±’XLŒ¤ìQÍ^‡{Ä\Ž@ëO( ù·&{†”®[æÊƒØPW-ƒ‘žÂ•qÄJUÂ#)F…$ y`HÎw}jBÀ‘œ–ö4òAÇ­`óÞ€˜<÷£n(`SCm“Ö†Ömf©&vùW'Ú†8 šc*£”g­1£chÏZcíCÐfš[ÌíLfóqÀ¦nÜ}©®@$œS$#$ñMr$æ«Ë)•$†j…äóÀ=j“z¶Z„W*pEEƒƒQàà`â“|{†ìã½— ž”‚EÜ «©(f#àU¥3cA'w¤følîý)€Çé¬Hãi$ `gÖ’Ï­4“šhÎy9¦óÜæ¡¹˜ªp8¨§”€võÅC4¥GËTÕYÙ]¶Ç§z¬¹ {úÕuRÌ¥»óV#_1Ô(,sŽÕ2)‘€^995*.ò8àÔp6¶ Œ úÔM(Pp¼rÖ¢y‚©Ç ­69å“ýcǧåLYYþö=¸¦$Ìü¶=©â(‰fÜR*w–„Ƚ(‰cäûÓ>Éæ ’Êž™íIö}ãz !¶.Æx5=¤{p…·g‚EMl˜Âç>â¬[! ·9÷¦…1Í‚ ÏÅeÃST”ƒOrŒcZ‘±òqÑiíŒ/²Ôq¦Æ$œäô¨ã]¬yêi‘)VëÔÕñÌÕÃþ¤Z¶ÕÖuú`ýªÐÜá…Q¼°aSÚqjƒ»T‘ñZš,ˆ~u_S“çE/çPÞF;U]A¶°cŽ´hûˆcå,ó§ÙçËnÙ`JvŸ%‡«fºX›‘Å%˜dûgšéàli±ÁÅrÞº$;m4•ɨëÄ„~@V4®vÿ¾w~•+qüúLG1ɃùRêì$ÑíñÑ9F¶|Í2:«€Z’ÊYÚÂ{€OÔœŸÒªB€´Hz T0 ó"ŒôPåÍlÀY—yEu:pcr=…t6`ùJØëÒ²G'= bgÝ fgœÓò§8Ï<ƒNNp:ò 8céÞ“$Ÿ”€}éI9Âàw£=†)•2ű»©¢' ó3pǽBg-÷©eºí‹“ëéK5à#l|Ÿ_J%¹ÏÊœš„¾~PyïïU·dà{ûÔ; sH7áH1éÒiX„óv§†?7QJHZ†I³•\“Þ¢y3ò/$ÔNùàsUæfD;œpIè?úõXòä)Ëzš¬Ç.BœžçÒ¢÷¬#>f:Œ6$;~|tö¨ÃáÛiߎGµ9N\ÌÌÁó»¥ÎíäÞÔ Kî!½©‘‰ÎâO§JnÖvçœþ”ͬ͟Ç4¢5ÞPŒd|¦€¼x÷¤EùˆéïP\¦ñ&sÆ)² †ö¦Lƒu¥e’Þ)'ÞÁ*:¯#‚%ÚÝyÅJûíâ@­œóн¦Ê³muù²:š³`âBWYyÏ­[°IÆ0ËR³~óæïNcûßZy?¼9õ¦8ÎqL#妰â’$,rzzÑ’ryF¥ŽzÕ‡;bù~•<¼F©¥áªw…DÏ=MT¸=uª—MŒ(ëN²ùl;iöÎvÿ >ÙÉBðÕ·†)¡òe%³º¬lŽH„rNsš¢ŽXÂH=sM‰6òá\/O©¨‚7ˈqÐS@Göº¥màPÃ’9®–iRÆÁ—·+­­¨ï0ÅPPÛTú“ƒ\ö =˜“Xì Grj=B?6ØFÜ”qé€ KvwØ…'¤z|¢Ÿx7Ú…<æ^•$+ÎñÆÁòýO¢²LÈ[ø” ¿SÀ¨ì—t…ûàcêx­E]еu§• ¨ôÐ"„@aÅa¦í„àãò®aIòÉÁÚ±;3JŒ20nÜô¥Y^A õéJèwRo,q€3H\žÂ“~{ vÀÌÛÐtà›ˆP77aN ¸ãïJ ãŒR2Îq…ô ¨^Oj„Ëî?*íZŒ¼rdŒ (¨÷£ä€â•¥TRHéJÒ*)=èg ¹ÇJªÏ½Ç'µVfÞÞ•>öëÒ›$¢1µH2úöšîaOÏüª9$ ŸŸùUUO2$ëÔ»qPŒñ¯rZ ux”`ŽI=êHaU‹ËL31ùÜÿ*UWjò{µ* Dؽ{µI³ÜÝÇ”rÍN··{‰Ö(×=Í: v¸¸XÔe@æ´.Ö¶nÞ€t«7P% ØX3Àr*ÍÌil¡w=ë>`æ)9|ÀvN@vo=jœ¡•7÷ïUU—ºïÁ1$Ÿ>=©³€ÃrŸÆ™0Ï#¯­2^»³PJåøQÕ°EDÄ¿Oï`ÔLŰ¯5r1±qŒU”A«(6©¤˜í ?lÇîûRJz{U ù zUG˱?•SËU›hÙ"}æ5èõ5%šŸ*»ˆû£ÔÓí3n'µ]ºpo¹ÈqW5™Kj! ÈU†¬ê{±*# ¯¹ O¡ÿ9ªäªÜºbF O¥Dó™1ûµ!KÕ+9ÉÎOJŽú?*F\眥Ex63sü\T¶a^AžÄùTÚ4aîãÏf~U&”¡§_@Ùý+D×Oí[½+›¶)sp x|u'ƒŽk’µQw8†ÁÊ“–髲JE¬dÄ]»{ù…íK㎂–Mø_7nò8ã §>ì)“ˆü¨vÅ´e€,•#ü°¦pI¤â4“LŠÎ¶)"3MŠ<Íš·Õ€«çgÚ¡¹$’P¤T3œ“ì1QNr[銎(‰BHéÀúÔqǕɣ‰2¹Ç=*I¥XT¨åñ×ÒžòužòÆP*‚+O"¯$±É5YU¥pI5UCJã¿­t– ¶û¤cÑHZÝÓ,Ì“¿UR¶l Û•ý8§D †–NXdÕuc<ÒòÙ$š…ArÓ?Þ$Ÿð¨ŠlËS™el“êi¬§ËXæI}N)ùûÎùÍ,î¾w–|¥ O÷ˆšƒƒpPõjŸqM¾pe+º&¬iƒxy6àtZÒðÜ9NGåZ¹¢G•yXqÐUÚÛ5«X€ù“Ï!vìçש®oÃ0móîdáì\Ö& EšáþïÝ…¼Û‰$#†9Uga5ÓÊGS*"wÌÏêx©K÷WµJ\ƒÀÀ©wz`V}ë%“´zU;¦g|díöª—E™Ç<{Tq@XòNÑQG=j8â=ûšæd·EVß² –iR5 ŒžÀT“ʱ(\eAPªr%•°ç ô?Ï?Ê |‡ŸåUÞQýÞ@'Ö¢i6ä/z‚IBð½êÞJvX“Àõ¦(y"Äö¨vË3lU,ǰ­ýÒk iî%MŒTlÍoé6³i–—R¨G*f·ô«ytëI¦“FƪLö¯´L~ûsYrk†šc–vËUCö†–N¬i“.?v¥±ÊOzŠC™~PN:{TRfùOºj¨W–l¢´Œ’WœÓ#ŽI$ŸH梅$šaµ]ñÔŠ¶©8²•Ô´Ok¹«B9RÒF$ÆÉ‚U‡PjæÙRÉÜ…0v·½A<žs!ž•T•·°õÅT™¼ÉGãŸÊ­LÓ¼ ö7ùQ>eômšW…  ©È«r™^%òHÚ£ŸjÖTId;‚ðÀw¡Jº¤ócƒŠUe‘RFù»lì…ÔF: d¤UÚ›+)Þ•6@*£­J¸È­J¸ *Qƒ)öëRg÷„úSÇÞ& .XóÖ¡¶zÔ]K{ÔÑ€©ÇÝúH¸ ŽÃùÓÀxªrÛLÎ@ç'?…Wh]›žj¼»æ¯ZZ­¬Y8rµru¶¶2? Wе K· T ´¿2…“Óñ¥$¸XÇ~”æËáLè"E„gpåªi‘a‰bQóK"yh¨:Ž´’*mÜ‚«’Ú¦ -ä€_œ7>õMŸküó“ïTÝŽàdæ´í#ÚF c€Oã]f›‘§Â„a¶î?S]œb+XÐ qš—éVjZÀG1Ú‹HOÊY»f¹A+­²ÚC/9fëHËn¶ñŸ‘zâ•Sj6@ú¡éŸzT@Þ‘›b·eéMvÀoîŽ)¬øíÒ¡DÎâNŽN*03œœ198¨ÕsÉ<žMJ–ðœòOjI$X£>½©“H±FOz«;ÍÀù±ò/¥WPGï¥ëØT ¤~ö^XŽ*½ÅÃJAaóOJ†iKŸ›­W¸˜·é¶ñ‰%ˆ žI¤‰w8ÉÀ­6Þ=òÇŠßÓ ò¢2Ávl·šç…­Ý*Š#40©8?½~‚·¬ òa2Gþz7j”ùHL—7M3vç *G–þ{‹†ÇnŠ)Í,qÒJdqïÅeÞ8œíÎã+*bn3äÆÍ—9³¤Ýq) ù¹«ú=Üå› Ì˜¾jõ®‰q$o#á\®wÏz·“3Äîäa€=êÅ­¥îŸ¤(ƒ ¸±äŸj±oi¨i¶Ò•$“’}ªhm®¬­Yb »W9>µFôO IfB¬ñícÙˆ5—y$ï±å_“ks÷¹5ŸxÓ;§%žzàš‚áÖkTœD#–6€þ.*‡Ymã™cèpØïPÝ2P=zÓGÇ^µ$lN輟­*7AÙy¥S²óSDÊ£Ìkÿ¬—'ßš²ß%¶ó˱â˜I ~ñùŽ?J¬òe@s“íP<£7Z†UYeŽ>¹aŸÎ¡†1=äi×s þu ºyב¯Q¸:Øó;Œ¨àz­<ϸ;»o ?„T3Hwç98è;U{™ˆrAÉÆ1éUؽÍDAüMV#'žýjåepQrç½X´Vóªç9«Ö*ÆUÛÓ sZºÔóÄRÜÊ‚UG"µµÙæ‰ÖÙ%"- •µ£«Í$n!I>@£ v¬Ë9ï%Ù‘êIéY¶6’ß\‘ˆÏ$žÕFÆÖ[ɶo8îk¤¶·¶ÒíÀ$sÜ×R‰g£Û(l}{×@¢ÛMWozFÔwäBÌ}O©É®†È·ƒ>õ]µmÜEj¦±}p–€Ä»y*ùþŠ­ªjYår0~qUµ;ÉÞÏ(_›Ú³,ZöýÜ£&ØÆIn•eos}¼£¨XÇ;ºUH®oVG§\Ñ.ž`Œ´— ÅÈÂ!Îy¥¸²[xAyÕËž{ô³Ù¬0’f\ô‡z§82YÛŒý}3U-C##9ªs)’F@9«VQ˜áÃt^§ßµOn»böέ[§—=%¶³œíõ4òYúzÒA‚YÏ549i÷Kù÷ ž1ón®H…WÔäÐÇ"úœÐçƒëM#8šrxÓž1R¤`€§«Ò¤E@?Äy©FƪßÜïqp«Þ¡»œ3yk­V¼œ³ùkÐURYÃ? ô¥¶ˆùl[¿Ju¬DFÄõ5 ¥% €â­ÄÄèƒæè«‘4ȃšžô•’ Ì€±™5cYÌrÁFèבRêgd±F?€t¦?ñõÏãÍQl’FqTNNEK§Û§úò9èµµ Ù* ºqót­¤Ú* ˜õ5tšØêsZ9Í ÁFM5ä›jFm£5€2ß1ä÷ʃœ“Ö°êi²J¨ ’A'Ö(òOéMiãžMV$Þ—DùbB7ÔÕ|µÈ`8O>õ\n¸Î78ïSK"AÔ#¯4ù]Q ¡úŠ|ޱ®Õ#ŽÕœò7–ó2â3ò"“ßÖª»†B0­ÂƒT¤‘„-+ AU‘[†?ÅUùê{ÕUVKuj“ÓqÅ8TŠ=jæš"\K,¥W<õ«–5IJÈTоµzÃËUß#7°믙Ùb ZGà·ÞÿõROËí@IcÁc“I8.Á‚Ì~µ»¢Û x0¿­t´1DÒºxõ5¹£[ù0–ƵVÚêy%oõhÆ5ã½ejw-{y$„þíXªaY7³5ÕÓÈOȧjŠn¼®@#­VYv€G½F²˜Èãõg-qev‡HùOùúV•«5Æx ¤ûÕø ›N¹VÇŒÖ6ˆr÷vÊÛwGÛÔTô8Þä][+mßxîASFG¹ŠêpxÇ®j”‹$lT¹ÈëY¯½Y”·#޵™ tfRÇŽ Ko’7#já}óRBÑÎ~ïJšç·¤™Œv¢0rÍÚŸ))Låj’f+Oâj‘#Ù¡üjDR# ëS"â5^æ§EÚ„t'š” ±‘êsR…ÂcÖ˜ß4„öQL'æÏ÷i„å³éMyDQ“éÓëMw¹î)’8E'½6ÒI³Êç'ä_Oz wò‹õbx¤ßÈ-÷˜ž)m´òì$¸9l÷§ÛYe–qˆÁäôû{M̲L>^õ£›‹²Œ(ùUjG—{¹A…èHÒnfÚ0: ±¦•I”mù˜MZÐÝSP@×Sб¤0[°É`ieæ[‡þ,àþ@TWí¾úáÏ÷ÊþÛn¼]ØÅC8&˾Åü*…ÕT}ç`EòÇvl~¬¨Gð×_kIŒmº8Ô$jƒ ´úu$Ÿ*1ª÷Òˆ­YErû!&¹›»¯(2¦—žõÉÜNX“\íÌûCmù›Ò«„™¼²X—'“œ€ EµÉPNXõ#°¨Õ$%Al“רU·ÙkÄà ÷5aöÁÕàwaöÃEൖßé7%³û¤åôª?ë%ÝÕÉÌ×%Ïúµýi.fk©¾_•FžôÙ]®$àtÔÉdk¹ÂŽùQ<ŠòÌQ‹ïK;#͈ÇîÀZYÝe¹>RåG­>Þ&šâ8pC<€73RÛÀÓÝÇgpÛ5=¬{¨â ‚_ íW„ö<‘Ã;†* éþsV¥šÊñÁ,Œžœw«O=¬{¢‚2X1þ_­M¤Aö»§•ÉØ„þ5&‹göÛ—wÿW'Þ¤ÑíÌ­#ýÄ=+Röv2 hNУ.}½+GZ¼q8±€íEP\ÿJ·©Ü±›ì±|¨ƒ,¥Td v #qžµŒÈC`’:Í1á}éóÊ¢@cˆÓŽ­Üþ§¸Á—ÊTäá>ßõ©§Çœ#QÉ uÄbÖÒëç?¼ÚÅY1ý’ÊåY¿ÖϾ Xdû-Œñç–}j®7‘¤O$q©¸ŽïSÍ;HºÚóDŠgFÃ&›qäè²K5Ió¬Í#qËdœW>X³–n§“XÍ#–=O&®[ean:r÷‰â¬AòÄr1èjå¸Û ç4Š¿h»$ýÔŸzù³ŸEëB6äú'­€$cŽœU…ˆ=ªÊÇ=©ÎBŽ;SœàsN~4À8™úÔc§?SL×êj•ëîqè*´çqØ*­ÃnabkFÖ?. {(â®ÁÄÜ{UÈjzOo:WÈäœ{SœÉ&OP£8§1y:rÎ*hȆ$,3‘»¾Xy¦‘å¨Ïzµ¦._svñW4L Ðäd€qíëúU/i,G;iŽÆF•”ýçþURvó%‘ûÏüª¬íæK!Í-ª‰.ãP>X†óŠ·£ÇæßÄ1•ˆøÕ­17ݧF¦´ÍtÕ¹ÚŠJ*µãpçYûUÁÎ{V~¬ûP`×! 4¦@#XrOZæù›†Ìç½s±1—~9êkV8–5R>^ŸÎ¯¬a9íÈ­›@íÅf^Je¹X£&¨Ü9y¶©5Ÿs!–q­G/îÑaNëîj9>Qå¨ÿëÔSüª!Aׯ½5¾DòÔsüF‘°©´uþ#MvÙ‰>ñû榰ˆyé,‡l1Ì}HíSX ¬²«ˆ†'ÔúTúlj³ äâ8Î~¦§µ¸˜M,–Ã÷’¶÷EMkw$S<°drpOaSÚ\Ê’HðŒ¼Œp} k"HØmò¸8ã¹=*$‰šB«óHý©&¢Ži §ÌïÓêMnÙ[¾hbr0ÜîWÖºKX¤Ò¬Œ2ùÎCð­ûhÚÂÔDøçœÿ:mʺÈ÷(¤Ç'ßöÀÛý+?SÌÏy;%êOAÆ?¥QÔA)¹PJ¸ÃP“ ’6eeÚFáÖ¡Šá‘HÊFß½Å$s tv † ­{ É’’¹æ™dßÂ&Î7óõ&£²ÃÞGær'ñïU5©ÞHÉ8™‹?…E?Z˜ËS1ÇžK”t¤Ö%-OŸõ¤¶ éQÙ?‘§:©ýõÁËgøPTPÊ-ô·ÖLrÃû S"qo¦˜Áùå9o¥g¹\6:Ͻgœd‘Ò³Éb;UˆÁŽ;t,7“æ·ô« ò$C8'÷†­ 1¤)œ0 0ÿ–³ DârM qª’jô!R2G8®Ä¡b-ïVãc-ùTrÍŸ^µ„–úÔlrÔÙh9è)ŽøÚší…â«[Df™™¿éQA’RÇð¨-ã2J]»V±Ú‘GV“íŽ0XqŠÒ`©-Ó¸lRÕ ]|»WÿJ‰§J/ŒQp\,1ƒó;?LÔNX²'Rx?APÈÌ]¨çéWí\FÒIŸ•WwáVtù<‰^aüOçSØ·”ÒHz*šw,J»~ñÀüª²T¤Ê E,@ûÜ~µrÉ<µ}Ç ÍšÜСcÔÖ¶•ÅvîjÎAès[¡­h¢Š«|© pp Öˆ7좲µŒçŠætØd ³³d‘ÜÖ”Lª®HÚsY2¢»†ËcëV®îV8†w7Ê£Ö¥ž`±’3¹¸5Ôá!b9f¨Ù£en§‘ÒªÀÇï^ÕVÙÌ÷sÚ˜Ò#\4£…A…Ç­0¸ÞÏØpBÎ<Æ— (¨q“œœ¦£={Ôh2rrrjiwT €yÚ*WÜT'8þíNûŽØÀ*:âµ,mÌPy‡SW`‹É·.F3Þ¯E‚×{w©´xâñ®a#áG½\ðí¡žìÜ0ÂGÂýjÎ…lÒ\=ÃŽþõ[º”Ïpѧ(£M©Ü½ÝãEÌiò­K}9¹¸hÓî/ûÑvWìË Jw¯]¼Æ£Ôe‹ìQÚÇ.]Í· ¦j­l–èÿ2ži±¢–]Ávc%·eŽ;bªÃ ãhRNO\T ¨%±åªäûÕ9\¾Â£CHOûÇjþ€TG?»ÀÁQ’}ÏôXã -õj‡WU+mjŸ;„ qõ§j»[ì–Èw4q&S=¼rQš†B±ù‹ÕÁcÞªHÁC/ppMU•€ùAç5™.]ö'Í“ÐU|nm¢ªrò^~aŸj½%º•×î®O°«KûÉ— ájìGÍšW^€íZŸË&ø1è¨GÖ¦ZìÐN¨MÖO@0µbS°m⦙‚ƒ/ó©¥`¿(ÇΡèr}*G&¢Éêj6ÁŽæ˜FìÔg榲1|ȽPMX¶Ùµ‚õ^µbßfÖ ü=j+ˇo”—µCu37ü Ô7S;{U{xÚ[„#85^5-"žÕ{šUaž+Nn¯6„wîzUûXÚf–P>X—$ûž•nÙC$ŸÂ€ŒÕ¨¹IãÁÁ üè„í·¹Cü[Gäic!m§L}ìʜͷny;²"¥3×u’¥1×u\L)!«~ÅDJDœÉ­‹U»O^µ0Á-h)ÈéV†â”u¥¥¨®cßa÷‚Öv±jgƒÌ^Y©jP™aÞ¼²­s0F-âØ[8'wá\ÔcÉLgø‰jÅÄxŸ¼–Ø}àÇõ¨šMÄœsP™s–#åÔwæ,¦0ý±Ò£šN8<5Aq6x5]#gà ŒTAK ­D±³œ~5b+lE<²3 ¸ªÄpŽÄñÀÇj±"8GbpX´òí8ÆŽŠ½ÿšÌ›‘žŸAV,ÇÚ®#€>oooƵ/¤Tµ†Z¤Òå³Î*‘+ÏÍÒª»í̇'õ¨‰ÜOªìûG˜yæ–Ñ|¨¤¹ltÀÔøwH{Š’ÑL0´ÍÉl`~5jÆ?ÝŽdby©íS `u95nÎ?‘@I&®šrÙû‚¬‚ Åÿº*Ê‘æ3ÿv ÄSL1æšæBÏ™Þqüê&b\ãµD[$ãµ6R?,É4? u<š…ÙëÍTÊGF~´ëE!d#ø€§Z© &?ˆŠ™íÐò¸U§˜S;¤`¥+B¤åȤWhòr{“MgR¡bQÜÓY”¨H‡µv(þÇjˆ£÷²ò7ò­ ]m4è­£æIùò«²²ÛÙ$òïó9¥P@$0Á俍Œ€pG©ªŸÃŒñÔÒÚ+Os¸ýÅù¹«Ú=«\ÝaòGÉ÷5oL¦Ÿ{•y?Ò®Ê9$àú ÚbW$ðGaZr rqRƒ1Ò¬©r:TË‚(¥¥¦–$à0Ö©Ï;y›ÂüÜ{ÔKóí ·ú×rÆR 'Lí\|ͼ€8^˜õ5ÌLD÷:ïQÞaBÛ¡Ëã/íLœmÄ}ñ–5Ù¬J~leF‘¼åcA¼/Ö› M3£<àSL·…®ePÊ>µ¤¡,4ÙfxCM$»=€ÿZÑDŠÏL’WŒ<ÒI± þ:ŸÆ´T%žšÒôÛE؆w³Ÿ—éMp<ÖêMɵ|ÆûÌjðÉc¹¾•l)!º·-ô«j3µO˜ý*©3À<žµEq&O×¥EpüñÔô¨à Qòsº™b¬3÷2Å'ï´cݯÐ~U8LÆÃ֧٘ϽA˜oåQÆÊûÔÈÀY9ëSݾ#RNj–é¾@O¥>å¾J§ ÎJÕh°ÏƒÈªñÏÏ"·-FØÆ8åüªüxXƒtÏ}XÁíT5;–Œ€N^C€*˰oö˜àU™ìkJÞn£Ür"cïÍiéŵf?,\·Ö´tÛsö IákK ž9®Ǩ"¶ºÖc®Û™™ŽK61X“/údìç;›¬×íêÍÅh) £'®®±Æ»Ž8«êBŸJpÁÓ‰ „©ãiX¹5›?ú÷õ5Ê]çínêx¬›¶µÊOœD€ð~oβ¤*(ïÍc\|¨‡¦jP6LŠ: ãëK>rÔp>µ$?ëÔ'QÀúÖž´bÒÝW˜W{ô­=iÂË ¸ \{ÖŽ°ÁfŠ, ´ÃÌT–6Ò,8\+œÕX!r¸^¤f¡†Û…8=kE"†Ü(gß+s“Ú´mÕrwIÞ¯$Q@Î\u4é¦+ô}ÌŒ=*G»xâG&YN1éR5Ó*VÎ VG’fšYÐj¡ygie”ã-Öª pòIÕ,sGµQNv UíÉÿ>µq.©œˆÓj/¹êjÚέ\ð‰° Ï†ÚmBáÂË€‡ærzU+k9u ‡U“j©å@*œ²_Êÿ¼ÚŠ~f¨.aŠc¸iN|´AúÓ'·HädŽs#gj¨õ¨æ…cb©!‘˜…Uéæn i<ŒÈÝ£_O­HÖël†5#ÎÆdnÈ=>µ#@¶±4js&3#wÚ³å`̱F;ð}k1Îözþu˜ì]¨ÿëÓâ‹É`¨7LÃ%aSÆ2är}*Ä1ˆŸjüÎFIôÖ"âåR L ÷¾”ÖýìÁGÜ“M?¾¹£1'SïVL€É•áTb¥Ý—Gб¸ùFâ§…/Üüª=…M’·¯éÞ¥ÉÚXõÝj/´¼h;ÔËFi&2¹#o ç•ÄbÎX“ëœÔi#3–$þuzÚ+›æ[®#'«¦¯ZYÜÝ.ø“}{Õûk[‰“r(úõ<¶Æ ·S*„û±©àõêÍÅÙà/q:†^‘ŠšâÓɇtÓ Ã¢öRF./ò§µCk;*ÅÕ¸QUg!c?J’é͉¶¶` ÿXýÉô«—µ‘µ¶#,öséV.$kkO³[[ï7r}+>Ù>É:–æãè™ïT­?ÑfÜy›)==ꥨ²åŽgÁç²ûýj ›œ–D$‚rÄÿ÷¨.n –U$©99î}ê­ÝË32!8'“êhAöx„Œ7HßtSU|´ÜycÐR"yHòíÓÚ•‹Â­‚ZyG~œrŠqÌüªFß¼Ë'AS"ýŽ•ÎNjESo&2íÏÒ¦EûQè)ÒSå~èô²ÛßùS æ%¸ÈÓœšd)ÜÕëu‡Ê2Hÿ;(«¶É‘¾FýãW HÄA™¾fêàZºrä3véV[qÖ´äm qÉè*룎¦š£÷¦Ç„±ç®iªçwâj Gwã¥d\\*ÜK(Á…ªÌ®ÜsÒˆUça+œ û‹ëN†)n&áv/­,i$ª²Hp£ ªÓDÊÎêzž••q$fóŒVlé‡g½s“FY¶þ5Ÿ*óŠÎ™7­5¢/³Ë`~t…IÆß¼)0C«)åjÜò¹ïärç’zSÜ?Ú%óòèAö«·Ÿ1Ÿ#ž šªìf“pƒéUÜï|ö•]ØÈùíZ6öÍrbµŒí 7JÕnÆÍïgHà]½[²µ7w,áG.kCSÔ×NE·€ ØÆOðÖÖ¥ª®šÒÑW*¸'Òµ5MlJÁÇZÈ’ì^8{“Ó ¬Y®>Õ'™;dÖ\“­Ì›æbO¥\†e“^åE8ÝŽjÍ»£r €7µ)”azf£¹‘!u“+þ©?©¦M ‰„Ç–ÿ–kéïL¸BÞiåÿåšú{Ö\’°W%²ò³wÕžò'%ÎI¬Éfm¬3–c’i!ˆrî2Àd ïDq¼Ý@È_Z!„ ÈÃ,BÔ¸U¸ïHç÷jL Ç.GåSlg.Ãò«sl¶V¹o½ŒTï¶ e?{ÅX”¬Ò·\qQÚsçÈ>f?-6ÜýëIÀö¦Û†oÞ¿ÞnžÂ­GUËcqåN±^Hõcý*ÂF9ú·½4eË¿AÓ‚˜2Å›¦i£æÞݨ¥"(òzž”Ç;ž¦£ìL¦ Uw™A$ã ¨ÆæsŸj7´ƒ'йpûAU=¹©år2ZžGÁ u¨€iªžH¦aœ^¸¦. Ž´È´²v´­jD²ÇÍ!Á¦Çc‚Íh[$q@ù@©ãŒHèXŒcŽÃвÊÜo½Ô £1ûÝ©áœ8¦¹¸+…¬Þ®é’Þ>…P žàn•bN6ãa Ûå@õ¨’EaæF9`{ÕåxíU—< `RÇ'˜Äžju¥×Ú»uKþfXõíK)uã½2öl©¸Â’æN88©•/2†èy”™—#°ª!s*ç¥]m«ãŒzV½Ìˆ,†Ìd‚¯Lëöa··¥P”‘#g†êEs²ä¹Ï½cÊöÏå\Û3);«=‰æ<Îbrw ðýAãñÒ“ yϸAëI,mèùO':œgך9ù«BÌ„ƒùu*DYr*u„²gš™.ÚÑJ[‚$?yÍOËZ °) z“S¤ïl»aS¸õ5BáÞy‰“,Ý꤮ÒÊYÉ-Þ©JZy‹>IïíK¡JŽ P¡7Nôè¶ïÉè*Ûê ±`µ†¬5áÚ#ˆb¬=ç(†*œ“4ŒK6[¹5ZI ‡$òjœÓ$äÑ Lß¼Û•Þˆ“qÜsAN‚üì8ÏJ•åXK,c{œíq×â¦fXÉTç9ÁïŒñR³¬DªrÇ<þ5bÖ!|É~g$`š–„`Hã,ObÞ! ü±§ÝÛ´Æ5còŽH¥ž"å2{ò)g„ÈS'ŒäŠPc ¥DùF8©•Þ8¢wíð*YˆjôïK)çhéM ósßÔ\šj𤚧>e”–8TªÒ|òn<UdåÉà-X¶L+1çwJ–ãwsSB¹R{š‚æbefw¡¨§|¹#¡¨¦“.Hèjk@Â2ç«t© R«“ÔÔ°) ÏSS†P>väÔ}ã“éRUáX¶_6dAÆ['éOÓª lš| $•Pt<šYåÿ‰Ñˆÿ«òw/áKs!]Háòò? '® W¶ÁжpÅOÿUMó  T’þòsƒ×¬ª$Qü£æ=ÍjâµµXÃ°àš¼U!‡ ¿1¨ÄrKòäÏ&ªÅk5Óc!cÎIõ¨œòp™© (HÉ[¡ÈÚ£ ÷¬vØzköÃ}Üf¦´!ƒ‡]èÜŒv=)bÁÜdǵ,8e`à ô§º›~rZ3ÜE)1“•õ¤yxËqëGÚV%ܤŸ§ZxœF89©Àˆdsšl·Nñã„ÐriveÀÂçÐri$¸, p þµ\ž6¯Ê½ñÖ¢Þyß깓 ÓÖ‚v«ÆzÓsŽ”ÂÛxÒÛ¹¤Î)»öp;Ô–Öæ_šL…SùÓሸÜz šÚ ã{p Õ¹™û¼dU—*õUÇ* íÅ6ÎØ$…‰ÈçI8rì~QÒ›mVfcÀùEN\<¾¸ôíRî '<Š˜0gç ©€ÝÉàRýã“Ð —§ƒÇTÊœ­÷˜ðëN ÀTH7’Íþñ¨”n'wÔÔk–$žÝiÌ76Õëý)Ä;V”Çh¦Km˜²n9=TRMnWÜInª)²@›ƒç’:TË€£OéOŒJ¢-\¶ÖázþµX@ÅÀ=3UÖ,3Ó9©§œ@'\sOšQ ½iÓJ#ùW®+?{ÈOÖªg&ª«3·ã[vÏöxDÍÔeJЉÌ-¿¿+ùÕøËençŠMPyz†žsÀ©>ÜSõ yj ê¤Ζø½¶û¤çW•V=Uƒ¥„7u $jGÍýàqV-b*C¿-Ž=«cK´ ûé9cÓÚ´l ÙûÆåOj‘ÛsqÓ §]?Ú.¯NƒúÒÊÞl¡W 8֥坯cUV”PjGè1ÅCx7EŒ÷¨î9J©ö“::ü‡ƒXI~"–D‘FÙ²Öíc‘Ñ×r K$?è®#9þ!Z[)ÒeòNà?x®9«sBO“Ëÿxã^ÎBKÁ5É´. qšåÚÕ·BjHà ä&0ÜqÞ¤ˆùHÙöœ0ŽÅo»C6x< lœZŒ"“·‚OJ`œiŠ¡¸š{ÁQûðÍè;TPðO ©$„(6IíQ2"“üDÔeBóœÔeB_jG]ûB/ÍÓŠB¥±´sM(X€£“RGiLìKÕ*@€õíSÅj‹ 2¶O¥*βîþ ppàÀÎ1OŽE—…àg© €³>T’{Ó∱ôNäÔ±DN1Âúš–YUwnõ$Ž>âþtùcbr)Öñ^[,×4èÐã“’ÔèÐ…ëÉæ¥<‹Ôu§õ;niýHQõ¥ÁlŠ;S€.qü#µ;ÿ»JNÕã­!!AÅx¤9š>èšCòŽ:šÜ*–n§Š˜(ÉëLfÁæ•NAө 6zT‘ðrON•"sÞžœsUiX±àÕfˆ–$š¬Ñ’Ä·JHšNæäƒJgžM*ã8=jå×d§¡ÆGçN•ˆ…CÔ~t³I²-ý Π¶IuKØæ`B'Ê´øÒ]NýNûw¥·GÔ/T¶poKxT»=ª¬‘*ãËA­m< :€>U.B¨øªÔòÐ*œ4±p:µ"¿63PÂ<µ2ã'¢ŠŽ?Ý©“©?v¤ Häb¯E&å†>•e°÷¥ ïD±‰b =3C®ä þ™p¬’È®¿|Œå/`’—GSÉàö5Ï]ÂñJÈÃ©àŠžÉŒp4oÏ$ŠÐÒç1ØÍò¸%M^±•–Ñân˜5϶✃ ¬VÎ3ž‚²œ¹ì¨e;³[w\•a³rǨ¨dPÀŒ˜ö¨ÙCKåˆÕzûÓJ‡}´Æ@ò”èëPn1 yÉàž”Ãò™zô5 aüÀä÷¥€$²mv$чlgnsD*%sóc4õØŒU²zð;úR…PÅ[8ìEHˆªJ±àt÷«hD<6‚:švÆOŽžµe‹€w¨ Ë)ëV­í¢A—]ØëSà /.3V ·Dn}jIdãbü¼Säl  b¤‘°1ÓÒˆ‚¼{JÛºÍ,aZ=¥@`ÙÈëKÖAÀMXfÙÏñ•)!F{ô©NqÖˆ—*Uz±å¨‰K|£¹æ–%Ü6Žçš–Vå^{ šb£å^{ |§ÜUw`ÙzUflöZ›=…$l ¹$ú- À«dõéB°(Ù=MC&L€EDÙÞ3Ȩß%ñÚ¬/ȸdsRTzR €Uy¤g%O Q3»1ÚzT&F,px,ÁÚÙ]G-RH¬b -RH¬cMR[wyU0yäÕ_)‹àƒëUDNdPF{ÖŽ¢A¬`üÄn>Õ5À,UN3R\®öTw½kéð,àŽ¤aGµohÖ¾U°Üü/ûµµ¦[ùP‰ù›ô©Ý¶D¤÷5¡9ć‰n•nSµsLÉi>q‚ÅS•ËÜaû(â¡v-9VèLzqéVØŠ;S0À˜¥楰œ Tç=…6YB©B ȦÞ\ùhјÉÈëM¸˜¢” rEWrå¾~B·>Õ‡?˜\ 9ò+.MÞ`ÝØÓáMÛ;"çw¹«¶«¢ÈçlkÞçüš·idRxP ÿÙÿØÿÀððÿÚ ?•ßí,©ÎzûÕ4*‡“Hͼ*MNª$`áz~TÕQ$ 7ݦ¨LtÕ<›±°sšpFà1§"6öà­ÆHâ”*ç sÒž#PÛ—ƒJ‘Ö©j/™R$=‰8¬Næ8ÐçjãëXúÜÙ‘#SÑy¨Ka0:·”[ ÇSYÛ¶®SN€ ︌r}‡®i}¯PLä¢ Ÿ§j·¦Eö›Õ-÷e¾µ-ùýêÔÕ&½.ûí }ÁŽ)úÌ›®@îŒSÊŒð½ë< J¤ ‘E±-|‡E8úÕý Z<ál~UsFߌöSS^øäž ÖŽ«*J6¡ù†A~ý•דÈÅTÒb!䑹ØvïÞ¨hÑ<Žà¼.ꩦ!ÞìÜóŒV˜EûÃû ÝH‡ÊON9ÿõVªÇÜp}ª½ÒyP.O˜éYšÌ (ÏW3g?ªœb;d å‹çôª³n ò7,€cÜ“Xì ÂÆy`=ë5•™Â!å†*à…ã³Há8uõ®œZÉŒpÛœ2>¾õ½ä4V©<~}ë_K$í#Ë÷ŽI¬Y¼;+;ÊÒäõÕ¥oÃò7éW"ºI8a´úŠëV¿,â§ãÎEQL U°ø†“$›z@Ny®wKVy¹É®&ßw—¿ë\´ˆ÷û»ïT §ä/½M ´¥T‘ÓÞ¦|ª:ŠÓ‰ q€8cÜ×Oclm¡Œ;}âkvÖ@¼{Ô€c¾MXUÁë“SŽs“E:–Œàè)’°HºaN>´Ù\$LÞ€â²Ô‰\9ì+’C,…Ïñ®jY<ÉKz@@‘°¯>Ôݬ»]¸ZiB£qàUë‚@òïÉ®—DµöK#}ùMoé–þE°$|Ïɪ÷}°ØV&«³ûF]+'QÛö×ÛøÐ7qÏ*¸äñéPK±¨àæ¯h€ÿjÇþë*¹¤ _þɧ¡]1#î¶>¢­Fé.¡9 `3~"­FÂK©sÐüéí²Ìq—mÁiã³vv勱æi %®XŸ˜œ…§E+LÙÀÚ=*å…Ä×’ï8½ÅOk,—,I —«›v8û‡?‡z]j6ĸÿ–gpúw£S̵/Ýï¨$‹¬ÒýÄRØ>½Gó¬ I …™ùT€}k"ÝÖ¼×ä $T'×ešp $(4\ksK0(ÅTÆ›.±$³ŒBƒ[Z}Ѹ·rÇ,½kwJ¾76r4‡.ƒœÖ½×ŸhÎÇ%zÕK«Ëw&ÛÍb8'Ûš£u} ›`9L Þ‚«\]ÆçË;ãµQquºP˜ËaXóÅDR\¦¼—|n<ÔdLÜ#7Þ5­­¬[‚ÆF_Zµö¹btˆH5äíÕ´¼l±†Â“Žõé>k‡‘ÆA 3ïU{‰%2yÎ œ(ÏZ®’Í$¥üÆŽ5SP³•IT ,“cænBÍhµ£ )÷ÝŽKÈ3г%³€Wýcžw7AREg-ͪ@ñ #‡|}êEV–1Ç'ï8\QäÑbhÔgï0© ¨††6W¦ENÚpÚ`tÈæ¬}ˆ*FàzÔR£B7³sŽ•BîÊ[1惸*¬öï߸2úŽÔ[]I$?»ÏSW´—ÁûÀDdþï=}êÍ‹±?€ÕÌUúµMuܧ›ëAýh vë\ü.‹l°Ç÷—‚~µÄîQ ¢ýáÆk— ¢%U?ZÓ³…™ƒƒ÷çZÚEœ¯ p3ëZ:m«–ôÛW†‹¾¥±óã>Õ¬3š–––’Š*½ô¾\aGR dë÷>Tkþ I¬ýZs~X<žµI~XÏà~uؓڱà“BF÷S"gä)ü*k;w¾»Ž/àû§è*kHZîâ5þÖµFtWZ»U©áFÚè²íÅgG~¹8®Fáƒ\ÈÙÏÌEsw-›‰s“N/…8q¦+§Öš­òÔ–HÆVví?:ÖðüMçË3Bà~u£¢ÄÛÏ÷p) òfuA–Uüj9œÚ]I_yF ýi%sò*cpÈ­Œ³ï•‰¯øTv6Ÿj»&v!G-žõ­±¹¸&f8 QÒºHÑ#Œ,jŽ‚¶•U* Ú€È= ¡Ô¡èÆPÊTô<çoÓ|MñÎÓôÅÝ¡•xç†k˜½C±•{ÿ*K{;{xNyv]P(ùzš¦‘Ó­2êñl-Œqçt•gí?e³1!?¼ôô«fäÛY”RAz©¢ÛÉq3†k¤Ó´­>k¶bÊBžæ&Òk†rà€OZéØ"²G¼ƒMtSÑ#ˆ¹;F šß“j„vJކªÌEÅÏîÔ°SÅdܸ¸Û 3cŽfÎZyñ“Ž8 äcG€£¡ïWtÛ9|ÒóFUcõÍ[³·}å¤R¡F}jx­°çs3xð*üvìç÷’1*y÷«icó³59ùNx =jY6FÊìB HØC¸Ððgò¥Žâ ,{t¡eøWÐè l2Z{Æv¸Êž1C*ºínÖ‹ÁÀùF¥À pÀ p)h¢–Š+ÒKµÃEŒ‡ç>õÁY†y¼µfé\nŸ¾YJI®ºÄPªzWog·¶Ž!ü#Ÿ­uÖñù0¤~ƒš}MRQE½ù£8æŽ^••+™æ-èä äoî ÕÓÉÛvÓµs·Óî½ñNvTž1P1š¸bÁVPç«s[zXŽÊÀM'ßqZúr¥µ¨vå› ©£}ÅœqVínL©46‚@«1Mæ#¿@¬ø“ƒêI5Íì%˜žç?­as“ØRÔ”ú3ƒÏghéKE‡ X5»4Îï»þís^³o´ _œ|Õ… ÙÛ{rEnéMnÒQE“ÐR1U·AHÄOJŽY„p³7N†©ÞÞy6ÌHå^îãËŽ9aYÐFÉ‚¼ƒ·òþ•Ì*•Qß·ëšÁÚG^y§È$!Þw>œT©LŠ1÷ß©’"¯yºÔ²È¥Ö$9 ñëV®gYgHcåTõ«3J¯*ć!p[j€˜äÖÄ- äÈ0Í÷³ô­ÊG”F ÕePü§¬Sóˆ#‚OåY…Ì=†jX”–¼nƒÚ´l"Dl2æfnµ]µ‰U°Ë—'§µG.c0G÷¤ã#Ó½.µy¶'¶Œ ¶ˆì)5+€±<(>÷ÔqF,¯L€+2ÞÜõ U8">NïSSFÿ¬~qZàYZ$#™fù˜t*á™m­ÄC—’§ óq’kV2#€3 äÕÐvE¹ºÍT„‰î“÷¾•hâêç{|À.ìžÞ•RM¸Œÿþ”𒇦pIÎ¥7[EcyÚY³øSu% Q3‚N wË8XF"\Ç×Y-d¹•DC)ÁcP$ ;ýÐêM^!#N~eǧnõ³ žü`œV’F±.3ž1M2(U Áo¹RÇ\zS³‚1Ö—~ÐÇï0íQ´…QÂüÎ)¥ˆVÇ&²'¸‘î¤V‰€SÀ®r{[©.[10烊Ú‰'`c`3PMzÐD!êç·½(ù{${Ò»ù8ˆr@ª<Ílñ’IÝÐT>lÓ.Ñ’ÆAP¬’ÉÜçž‚®é,Ö—e‘‡åZ:Mã[Iå\>Qúô«º\æÞCÏ•~žÕµp$BÏï}§jö&µ®!ožhFùùTô­9ŒÉÜÄpµ2ç`-Á#‘ž©Á‚p={Ô€œp9£4 æ”n3Aö¯$ÒEnÎËÎp>•KS¹k['|Ìp¾Â«^Ü-‹â–Î&ÝûÛ@¤Òm¼‹Dw'{(È¥±„ÃîÎH=^«袊IWèEAz3o‘Ù¨îbú0ªwͼù'î틭;qûª þ5—ªK™Dc…4Ç'nìñœúVs– œý*‰Ët9=©ÌþG•?8Øÿ´É­ ¦1AlΫ¹Ï¹«×,¶‹#ª®IúÑÕdÀçw&ªÚ°ûLDrwçUí\˜ñÉ,?O;sÁÆÔÖŽ°û5 )ÆÔÕÍAöÝ`qòƒQ´ÊЏå¹ÍPiÂí#–ëUp ÷©ÐÈïaË7 ì*þŸ,¦#"räSè*í¤ŽÑxÔ+Î}W95FVÜävSÖªÈw6:íëRy¹ldŸZœJðéû½[¥ó v{½ø¨`4Þc å»õ?ýjŠÆ9.nÄóÿGd5À‘ùäU›¹Wi„]ºZÚ¥ÒÚÙlgojн˜l0®wâ±õǸŠÊ+*Žâ½kU7Xð• Çv++TiⵇÊùw1ÜGZ·¥Ç<ðÅqxI,»U}½MhiVÒ]Æ—W¬X•Úª}*þŸ —$÷Y,ʪUÚVʨQµ@Uµh€B€u¢Š03œ (¦¼aøÉ\ŽÔ…7>Võ…A9¹ý_Qx$0ÂÀ°o™»ÖF«©ù_èöíºOâoJÊÔµŒa€ò:ŸJ¡§Â÷2I+ùx?SšÍ´„²I+’vã>õNÒ"þdÎwc¡õ­P±‹%# IË=)¼-Zá \òõ#Ü*ÂbHðIäÔ lå¼° ;³õª|•1œç9ÍTäü½óÖ¶´ùL‘2–Œâº"äÜZÇæŒí5ÐiÓyÖÜœ•8« c ¡˜eºf¬LÑEvÛîƒÞ¦v@Êᛦi@鎢*Ì8éJqÆ< ÓðI<ãÞŽj…ôÁÎÅ?(àW5­^‹›€‰þ­8æ°µ[±4¡•^•>Ø®—Û·a[¹ü%QE‡,@úÔr‚à êN k‚à(îy¬ù˜4ìÀçµr·¯¾éÈ9ÁÁ®~ñ³;¶{â–Õ ²yŽuï—MƒÌs4¿ê¢äSRiñn:Aò'ëQÈ|ÉZR>÷«]L×7LÇïsU®¥3ÌÒõ-ŒG/4Ýà ½¢[¾î¹À§Ö¯i6ÁC\KÑz YwKw P~_äÓukFR8P>ŸäÓ/XÍ}!•FÜG¹†yÇÖª²|™#98úÔ%0 Ÿ\UÈ‘á¶cŸº hM®–ç¼*Ø­ˆ#0Y>m§UFÅó°ËV(ùn>väÖ`ùï7&Ÿ+á`g»1íR\L¿gHdõf§O(1,J3Üš[U;ƒ…ªæ•oW*v¯jµb„0bÐ)~ýË`Œ7Ý©w_?Ì>oº)ÛsrÙ8ÝM»‡(‘d8sÀ=½hÔ-1p àÛÖ‹«qµ#'!\B«ˆÆ>QZQP!\ª8«¨@ù@âRS©®ÅW dúzÑE/P;w>Ô{QÖ©Ï}µÌqŒíY×Ú˜1ÅzôªWw¡DÄÖV¦öW,íËÊ9ÏãX¶±}®cMó±Ý¸úw¬Ëx¾Õ3D‡’rZ¶íôØ-Нn ÷5½”0”Œ.W0õ5®–°Ãµãz–xIÎÈÀ=gêvl$fHÀ¦*õ³nfTÕI·  çÌõ«)•ÁÈjÏee=9«znÈÃEüdäÖׇåE 3sšÔÒ$UV‹ø4·ù+ ¨ä¶GåKâÄVè>ñbiu—(‘×q"¤†txÕÏR?ʦӯÒK}òpã“ïØT¶—Jðî¼8úÓ..ñô©j”ά áz`UKÛÉ^µEkhÌþuÇ$tZf•¥¬ÀÏ9ÎÞ‹MÓ´õ¦äŽ‹W«¡­ŽÔQE”S%Cb~lqU¯nVÒÞIåÈÀ ÌË,äüÄqYq©“äèÏœý+“Qæ¶;±$×:¹•ÿÞ$Õ›©q¤1ž™Í]»¸ÛGmàOÖ­ÝN#`ך`Œ}Àúš«ÿøÕh£ÜÀwéùÕ·  t#šÛ¸íÁÆåù¾½?­kʆƒ€WšŠUoçs6ÕŸp‚&~ìpµNU [Œ±¤pL#7zI‰Œô¤eqƒ‘SÊÀC–?0ükfþt]<î?8P1ïZ7R*Úp@ªHI$ç–ýs¨K¿³V*ïÇÞ'!Ú²•wË’*Ê*¤Û\î`rÃÒ¬F«˜c’9ÅJìX’=V§Ÿ• ä¨ã £|IÀ,~_AQ]HŠÑÌÜ.í  ŠùØ'ûªxu¨îX¥´”ݸ”” (©-ï'Wn‰À§Û»\Jô^Xž5“̬ù…]ž$‘ƒneaüB¬HŠä6v‘ÜR@Òg0<œsŠt>`yúqÍ:0ø!›51éRÓë?P‘V?³«‘sÓõª7·±FLŽí¤;Òª^\*†‹qTäŽÞ•XŲÑD‡qUެH¬9ÉeOONç™pNÌg N Ù2Þ¼=Fj+#%µÄr'ÞÜ2¾µ–ûy‘×–'ô­âk®À';yêk£Ç|c>´{Ô£ ƒHÊ`ÓZ~J¥&—Œ 8ªïežzS>ÏÈ®£kÖ¤ŽÂÞ–Hò¬BzÓÒÖ(ä œ0ªº´›Ø“Y¾$?4FþuC\8òsÒ“MbÁÈåj¶‘.$uÀÆsì* .NXuàÔ…Ây×ccêÔŒÛäÛœ6?àTHB+Èz?[vyޏ#ò«>¸-,±¿W”ý*Æ9w–6êyg8jÚ/‰vöÅinù±KOíN¢Š*ž¨T,Kü[Ž+Ä…v@¹ù‰5›­òâùªÉŽHù÷`~U¿$yÇÌ[˜0‘nþ qHHBe~ƒŠŽú‰›'wzšÎ)%+#Œ(9Çò­MÆI&Žg"À{ÖŽ—jí"JãÍX¸r<¹Í]Öä(` pCJ·©>ÆŒŽùþu|¹ã'nMfG–v8Éêjœ3–ÆM$¼ÒŒ¼è?0â…ËÊ™îj{’ €@äµ¥¬íÝ#’껨íùF99ªÖèwàãïdýeØ'úJî wôªj àžsùRZˆŒ·0ùw»ûÜšŸOµÄóJ>MÇŸ^jk!M,Ž8Ω¡™žL…ÇËVÇ%ãI6Bcä½K½vy8NÕOQï<»xFÕ’}i.Ⱥ1AÄiüé· ÎÉ C êí„>L{%W§Ö´,¢X÷ˆó°þµrÖ5Œ\…½[ÆjË·–ÀïSÔ3’TŒ€xaL‰÷ (ÈÅ1 zzŠ˜±èM=œ"3žŠ 4æmŠ[Ðf¹­JëÊKa^><×{t^à–?xs\ÝÝÎnX“€Â®­lX·ÉÆáH[(_8Çz²…óÒ¬i`Ir㓜Ÿ§££ÃçO ‡žçê:Uí2?2Hœö­Ít 7q–JÖ#=ñLùÐc$úÍV‘åAÜ„·µoL…f9o-8«6$S¸üŠyÅNÊà€x«O €Q€N5Xx˜ ¨ëÀÍG³Ýù#€‹—"¥°ƒ|Äa?Z}´{œŽ0£ëV `§=ø5¡ˆ×`=ûÕ¨ÀPFjµÍÀ9XߦT¯§½dkW…dòѸÝùQøî)út›Æßx|ÙúÔÚØ’lÇ.œƒê*m"çÍ„ÄÇçJtþeËù Æ>ûþÕ-èžòO³B¥b»ž‡ÚŸsæÜ1†!„y½k[±1´ NKe1õéXZÆžmÞÜg;Æ1ïXº­•$8þ1Æ­,+8íÜüÀ|ãëÒ¡(cŒFǑ֚ɶ ™æ®é±ù0„ éZºèœ(äÛëZZI(q×+ùUÚÞ­Z†âqïž‹Tu;ñd«ƒûÆþ­}v-TsóÕEË÷±’3šæ¥5Ùˆ“šÀ™Ì®ÍÜÔúbªùˆ:©­O/ï¤ÿf´´5Én*ã(pU†U†+yÔ:”~Œ1Z®«"•<†¬x÷$ÒEÛ?)®:EÙpñú1¹™­Ã§¹Å[˜ƒ<{ǜ榽—Ìž=ý5L}M}!’uÏð¨‡мp£Þ«Y°‹É8ÔÕc–pª9õfô¨´•÷8¬‹†Úˆ½T °®ZBV0; çÜ•·5{L£³27ÞîúWA¢À`ÒðËÊwÙÓbò,GÌüÔ“c1Í%ÙWqϰ¢àð2j(ây¤FÚO–±»FYŒŸ›#ܧºÕ˜¢D;‡^ÞÕz–5/¸“ÜšµÉ'Þ³)Ô®±Ô`û×=«H’jèr…@ZÃÔ^òF^Tô55¡ÛxNxæ°ÔãTç*sô§é¾Ýµyy­"{ êIǼx™­åÚ õnõ®Är<(?å™Ícëo™¡ÜlÓ™$2?ñGÒ³>ó–µwB´JnäÿUÝ÷>µoFµÔƒ Ÿv¯WCÒ¶j¥Ì›eùOݬ B싦(ØÇ‘yq‰ÎÓÒ¦Ýø'#Þ®iwrÌûÉã5jÆåå8-Suâµ0ät«¸O5ÀÒ‰ûc#ëYwâ¶0ÀÁ**”¨<ÓpÃŽ‚«Ü;HáTñŒçñ¬‹ÙÚvQž€ÿ:ͼ˜ÊT‘NÕ”ƒ‚‹´sM·;G^ª§õ¦@Dhì:¨#ó¢ÝD7ä&íäzú ’Ï›r¯Ÿ,6æÞ>Ÿ…Mj3ÖáwnosN¼›,94 5ÅÀã,xúzR…3N8Îx®¨ÂF+¤¶Éc ؉6F †ó0£»jž´Ãì¾P<»~•_Soô}ƒ¹É¬w_<`ÿðÍsÁ¡TÿðÍcaOv­à0 €cô®¼(„¸ý+£Àãý*¤ÇÍcݰ2Ç¥gܶ3R[óÀÈïVtÆùŠò=*k3ÎÑš˜¯\dUæLîÛÀ`EY+Ã{ŠÏÛ‰Ÿn+£¸®RåYn¤R;ô®~áJÎã½:ÑÖ;†Ü¸gÀÈ>‘?ÙïAÚ3'*]2o&輿֮œÖï§çTõ$Ýå8ê V7ˆ¡Üa}ì¥fk1†8ëP’V1¿æ9ôëY •=Aâ³×ääõ«–˵ûÄüÆ·ôHÂÁ+÷-´Ÿ×úÖ¾–¸…Û¹j”u­¸zU¬‹æ?ì æ5ÓVO`¿Ê°uƒAý€¨‹~rê}ê†Fy5GŒóVtç2ÂIh8 ýêÞððw¤q”)õ·£î{}ì¹\a}êøæŽ?ÜÊW¸ÿdw«7R›Š£u9\ KtÍnŸ#¹ÔDži*OÊy'ÐVJn%;ŽüÌ}³ÍeÆžt¤±ùs’iâe¹ –>üØU¤¹Pºû=ÄC®ײŠ.#¼ŸÊ•r3Ã{ ’ò@‘‹x° u‚¬j÷qCl¶–Øõ°©u+”Šo<°ì2Õ§}0‚ÖG>˜¡s(ŠséYe÷¹+ÔŠäÝËÈÇÖ¹Ù_{¶;ÔöùP žz·fÆ&½êÕ£"­JYm˜õ8ý+râGi|ç ô­I…¦î§S$cޕܯÊ9cRÍ7—ò™ÏAO•ö ½MAp»m™Þ5Ÿ©G娳¹Ë³~\UKÕ l]¾ñjǸbŠ…z»areŒy€ýk'?¾Œâ`?Zè±Î»,`cÒºAÀÕJó*F:XÚ’å88ÍgÞ)W8ïN¶fVÎî:ŽÔëhçÏQÔRÚ’’…sÛŒUW~Ìä€ k‚ ÕðAÆ9¬w£2tÏåµFI/d(1ά öVº“óSÇ™/b®rOÒ™¦FgÔàSÐ6ò~”Ý= ·ñ¯`w~U¢Ò?°®š{¸­Çïèµ½,ÉùÏ=…A,‰&ÈÊÌrf_ÞÇsÄ«g"©]]$ÑÀ!³‘Udb£ Cu¬rpø<üÕ•’z¹h?tDZrsþ~•Ñh¨RɘÿŒßÓúVÞ˜¤ZäÿSмÇj’; Õ’p –Í™å‘~ÕÇ\9’âGcœ“\ÕËy“»1ÎM! #‘ÆGCÍÄóH#Œri±DÓɵÖ´aˆ[Û$}‘pEup¢YX¢œw5ÒF«mlªz æ¨_H|Ç;YG±5‹¥žM±îÃ(ëYzÇ™!UÈb¤e+l« Àj’îÓȰ w° æŸqoåYÃ’j¼sylJàHüd dG#FĩÞ+-Æä¯ÞéRÃnÙ  pXûS£‰±ÜòI¥HÚG9&­]ɵ6¯$u¹®ÝÉNHå…lj³…Ë^½ê¥¼Eãfæ +&ÒÕ¦ÝGÝ`?:ε¶2G» M( ¢ýâÜÔÓmŽQ÷³ÍM6#@ûÙ©Ãy¶ÜŒnùkY%i _€ØFö÷­ þmˆ,>÷Êj96¨Cü(vïÚ³ï1äFàðŒceôoò S» Ƭ˸†úÔj™XrKt•F<å g¾*¤@y ŠY›Ì`¤}ÞqíRLþc€vö©%o1Âã…§Ç‚ <ã€*í¡<á@QVí°clöPO¸É?…lù‚8¸ÀxXòxãŠûÓ`þZ0ùLÑïaÍAþ аK^|[FŸÞqüª¦ªØWÔåYS®nm"{ÎÜßçñ¬huõªÿÓ\·áYСûuºŽÒk|ÿJë« íU¯×6ì{ÿJÏÕV~âªê ˜Kwª6bF›Ë-…*Yâj”VÍæ!b6ŸJ­ ,d\8ŽMjª…ÀS[h¨Q’ïZJ¡@Ç8ïX×¶ûµ4’2AçvkœÕ¡kù8aËV&£kŒ§µrTvxÆùƒŠ4ùÕÙ¡d®8ÇaRY0·.c‡Õ²Ÿ8~ð²õ9ííQ]LòL HX§ÓÚ¢¸•ä˜lƒ×Ú§›a‘JJ2 . >óÊ2«E)8 Ó®6RœcŠ©«#i #$UK®¥ÁãŒþUVìàï_ƧÑd‘ìd\c¡®ƒC‘ÍŠF룃[ZTŒöHp@àÖ€ïZ »‘”u Š´Ãr‘ê1Y¢9Ù]y,pG¥r†Îd™‘£9Üp@¬k(™ƒ.r{UÛh|°Y‡ÌÕ»¥X h÷¸ùÛ‘íZÖ‚ÜÃæ4Ù7Èç Ât¹¨oŒ·S2Æ?wAêj;¯2w;~êÕW·–â}®úµNÚÍç¿A(/8ªÅlÓ\€øzUæZŒw\VÝÜ^u´±¨0À­KˆÃÀèlV|VʨÈã÷˜à×4Ð-¸de« ¡HƒnÕ ) „å‡Ê‚«ù¾^_¿AP<¼·zmÉnw) ç®j;ü÷ó çš·{“)Ü>ñ©m–9;äd ±¤–÷!ÞLô©´ó²Þ\ñ¦;šB=…R™òKUglœ‘NRFžùîÇ[lÐ0Çæi ­vé ón⣅Œ‚pü)PA÷N/é!;H½U!bñÊñÔ}iùFÍŸ›£>Z±æ#£>Xm§“J¨"„³Ÿ™ŽXÓÄb(<±äŸjF"ŒÕŽMIÜ‹•ÆãÖ®Zn>XÛ·yëVm¿€cZŸhÈ=koËRÀõÀÂÖ–Á¸1çŠ\Sû})ÕV÷øFzœÖ6·þ±zœÖv§÷מ¼Ó-¢Þþn߯—K¶Üë1^=iÖ0e¼Ò3Wkb¯ÔWÆ{Š¥¨H§÷-ÜUk¶¡î+7…|ç|˜ z•oè0F0äV®›U9ŸïPß³°dS„R»ª¶­pûÞ4lF¬ãPj36YásÍ!UBÛIíœUPd LÕFU2mÏ )æ]8<¨ÀÅFW̸XÇÝéùÓó.BvéZÀ‡JëÕv¢¯Lé]BN?J\‘KœQF;vô£­p­C!Ž ôê…ÔÀ‚ä;*ž³Ugcq¨ªŒªÓ–þ>n{zþµÏÝ{‡uÎ×ù†{V-É1e+v¦¹1g* }óÏéü©#f¶x.ñ•Y9>§©‘¥‹6í Àå`š–õËÊ#^«šôÅï6¯ÝØ}j}jbÓ…SÁPsPÜD€£!ÇÖ\г%P0j6H#k{Sô¦cÒ§rC±Sòãš¿$™v*x"´ÝùbZšI6[[¸>>•zêMºe“!ç§Z·;´·e<àŠlI¹Ê±çΠ±„I;)8%N>£šŠÒ=ÒÇ’ £x2y‡’yJa=ϘybúÔÂá§Ýß8¤¹ÏÚ£ So‹Œ“ÛŠeé&nzbˆSxÛ½Ú5%…¿œÀ±Úƒõ5%”&B —¸«$˜a‘°Qk±kM>g*…ÈÎkE‰·³v\N׉öwÇÿ^±ô€Mú/~ƳtÌ›À;òk@Œbº|v­Îؤ¹×Ëbçɿ՚̽ºŠÙ ÒœöÖ°®î"ŒyÒx#—u:D¾dØŠn™©µó:¶û¤w©´ÍM¯™¢1ìUèGSOÓõ¼,»6…è}kX—ð­¬|˜>•¦~î=ªÇÌÀŒœf±îß|ˆ®,Ü¡9Ý"‚:š‹[‘ Œy›åPøâó`O˜ÔãǪð¦«é^dÖëq/ ‡?ÅYöhï Îÿ*ƒïU-Uä„LÜÀdˆ0 ‰¹EJ¨#¾_´¥2Š‘%ØóHùF@« vòI¶ úš¹6¯3¶Èp f¬Ë©HÌV1€*¼‹'š™bwšÎ“{Ê¥É;ŽMQpæE,s“šH\£ÓÖ¥ É‘F©s÷˜V²S$ãŽü¹¥ÒcioâÇi?‡4šj/ÿ·ŸÊµOZêZèZ)))®Û5ìÞM¹|Tw/åÄÍUYßFÎÁÐ{Ö Ì³–G'Êlì¥dÏ,¾Xv8Fi08ÏnôÌîV`rGQíLÎAaÎ*i$ ƒËî»±VL@/R*Æ3ÔŠ}„,‹’1óÑÑlÚ9·•ÀLóõ«ze»FÛˆÆZ¹[´i(¢›7ÜÇoj¥ªçìá{¯}þ«3Ò¨N¢åJ$d*\ŠÂ»2<‚ Çؾùæ²o7¼*!#à{Ò© p ç5SÓ¨ªc õ§Z]üL¤µ\Ñ¿ãÿh8Ê>*·¤ñyõCš|ùÉû¯ùfvcצjÅÅ›]ž‘òÈ©î-  ŸòÌì¦^_*!“U/ãXJD«‚£š«}G±è9¨ÕŠÛ‚øÉ;öªÃ+'©ªã*€µ=XHÑœÀÜ®jxŠ´ˆG‚~µb&"✄¼Ñ‡ØO¿ù›lgÜÔL?s#rp‡ùUWÀ·™È$,l?J‚P>Ï+ÿ*ä­¥Û¨ÆXü ã€®>7ÄË“€rñÉ›¼ž•¾‘"幆À=ëRÑmî˜ÿìQøÖ•¬`[Ügø€QøV_ö[™cÞvŽ ¢mJÈ7| Õ/²²ÌNõ»'™åªFŸp`±­]¤‰ cZ7˜ˆ¡zµ^RÑÜd ÚŠ3Žõ “d¯~ud9*tdf‰œ…õÿ µÑ™áó0倫1ÉK8u«¹Î=;WD¤xR8­‘‚0:cŠ)i(¢Šd¿sKUÀˆU¯¾àN\4åˆëíX÷ ÒGÎAäc¥gιµvÜN 7vUX£$Yìp2=;Öqö¥¶âð·ý38ÇáV4ã²õû *ÆœvÝ;wòÏó«VøF—Ð`ŸÊµô§ò£»c÷TúV­‹lYÉû£š¨Uî.8Æþö¬–I/¯zs!ãØVc+]ÝôûÆ*‰'ÙœG4Ë”ÿH)ü)ÅGp¿½Ú:/¢‡æB[¢·<ç¥2.9ÁÏåOrw‡èׯ~jXœ¥ÔröGS\š)rØ0üy©œ´ÎV2Ó5ji3~òvWÏÓšŸ7;úi²†INÑ‚ "«J•¶ðzõ¨aέ-¢ˆá$›5{I\O sÀ«zrùp³52Iå¶×ÉSÊšÓŽå !ek}ÓéWÒo,í“y£½_ž&ÿe—|éT|@¡¾Ï # ¬¼~©k)–…óÁZn˜–îxËmÏÒáµ ²·Ûn~œÿZ~Š»mÝÛÇ­\È=9úVÀ`ßtç• ê9ªW`»¢†ÛšÄÕG›2vÎsY—à»®8õ®VòOô×xøÃ+›±;íÅs³8[²ËØà×cdÛì¡oTÛéÇu„ ; ®ÆÔî¶½TRÌyEæ›|ß¼Š>y$Ón.‰R¨ãÒ¬"f,ÎF*E!¡ƒ.ŠY丅•ˆo•k˜mÜI<,¤áÀm ÓDG^ŸhyfÞÖ1'2dƒÒ¬Íkö+HVNdc–éW$„Û[ ~XýáNv-Æjã¯l÷ªÒÊY‡Žj sŒœsI¼DÅ%îqÞ›¼Få8<ñMå¶ÆúÔgq `$9Ç ¥mîB¨ÜíÉ®(}ÎB¨Énj¡,ìÊx ãŽÆªáËäà{®F“n9Åm¢•œ+³… pG9* ºdF õ 3N§RÑE ËmAŽõ›¬¶j:¶GëTïÏ1ÔñM»"+a{åãNÕvC`-‘@2aGçK|;A¨ð¢¨ÄJ)‰Á%8n; æÙ6hÜŽ¢°]^6dpr½EIi—y€/âjÆ›ÊÒHªs€«õ=jÖ™¼˜ã;jk¦+ˆ¿yÎÑøš·}7—ñœoàX¼˜Å®7Hߥ ¢N”{*]Ôùjo¢ŸJ~—#óÛ¸ùj³¿ïŠ܊˺|Ü>Þ…² gÝ7ïˆn=ji `)ÉlÆ?,¨psùU‹ek«ÆŒ)ýàbO¾2*hžá×oß“ïŽ(–_½'·Ê¡šL³63ž£ô¨¥r\žçŠž!媂9#Ÿ­jY)O,GækJÔyh£$œÇÎhݨko˜Šµ8 N*¬Ä€‘çý¥ü±XÚ™eGž .µ›¨6!9ã"›J¬(@E?7½:ÊBV+T`OÍïšu«œ$ @UëøÕÁ …%O®kmmÔ(JœuÍiˆÆRAõªÅnÆyÁ#5…;¾!Žv’3Yr¶.Hcž¢¹WF{†P9.q\û©i™@ä±®uÑÁuc]ž–6é°Œç Ö»]?Ùpz.+°Ó³ö‡p´éɸ 3P8—p`6ñItpåúcŠd·k 4c—(#Ö ŸVXmÞ!Ì€`­C6 ‘DÉÆìc4–ÛöWÇrj¥¬ó(¬Tg$Ô³ÈTqÞŸ<^bìSÒ§º‹Ïr³;É=*K„óS!‹0ïUÜÆælH; Í>X<Ÿœv@í“óJoÌÛŽYœ”vøí$p¬foáô´øíYÈ=IíVT%·¿z㯥h¨‡Nˆ®à×2Ž¿ÝtyVq`àÊãò§Cöt*ˆlägššÊ[ ÑĨ^¡±žj[gµ ˆ/×>õ`u­d$þ%­Ò†Ü ` (e­R @õ˜ü0îjìQ“ç¯ñUëT>X÷«öˈÆz‘œ"6}1VMÊÄŒÚGãS4ë0ã¥Q• ©=Ö³­ÑIBÀž>*”*·0ã5<Ó¢&Ø Ã’GJ½=؆ –૲òÕniÄh!‡"«Ê¥öyƒøÿ½Yø‘Áp ã®j‘Þà¹Ëúæ¬Z£yÊ@FO½]Ñás~‡¢.NMZÓboµ©ì¤óVfæ'çœ~•·¨1û»O8=+Nèÿ£>ÓÎ;V|o*NsÏcÞ¹•’xæ{{k<É(%›ñ«žk¤Ys‚O´^öx-Õˆ'‘Ïjº÷Rà ÄȪÉ4sL |„ç¥Sµ‘f¼FvùSæ9îj½»‰n1á>lÓ¥)¾#žø«šƒÆì‚&RHùŠž¹æ¬Þ%éóS0ÍpŠHX¢änÕF5gP¶"@H?Ëõª‘£´À1Äh3S\H]Tt' ô«Z„ï:Æ„•ô_JžöV™QsŽÀRªù1ù„r8AïL·mÕ¦uËc¯¿­6Ö20çAïJ™\àc?©«ð ‘†=pF\ˆáw¤uªÓ®%89Ulþu‰yÅÓó¶?­cÝÿ¯<ð Z»P¶}ëZúÄB>¿º1øÖž¤›,¢CÔ ­Øê@ê1øÖL-µÔL~5Ÿ mÒ¦f-"§8#Jß|¥x9Î?*™Ÿs8éQF[í;‰éÆ? e³¶ç=21M·ÏÚ³íV)&Oõ¾µµkddýäÄ…ì+Nrß4‡Š•ö"€G¶*ÍÞÈàÁ±Rϵ#ü1øU,m“ŽFÜ×0ë‰:c5‰ ›Ó¬ÛèØ^Âã«)SõíP&áHêʯôŒŽã5²' §«¶rWµÔ½Ò¦–’1;™@õ®…æ f®OÌFP½²û^œ¨ü¸6{€MdÝZ›60ÀoÞw|λµÙÆï5bÖ4󺪡T³¦Âžy$ªP=jÅœkæz *ÄÙÙ+DÛBŒóÒ®ÞdA;ÆÛB¨<Õ‹œùR2œTäM¤nùUÞ1ùqúÖ-ÌÓ¢åA|qŽ+:æ/ô4vîßÒ›€çiaÏáTpòxªrÜôe¤’O•I<`ýjÊeÂG¹‰è«)æ>?J ”òŒI QíWSEº”5‚¯5itÉäûí´R¬.¹à€ ¨ãµxä+ÝÎ"[4o…làâ3„!S#3z š’íÂE„*Ò±Á>”ë’,(FëíI r(ØW;—樬¢—”TÉu¨í#“•Û»uI }Ïæ¯ñ|˜ô­[-±ðñâAÆEh[áF6·LŠœ`sнµHÆÐsVƒÈ¨ç€L š©{d·F"0¤T6Ë6ÀU[ÆLP°Û“þ~µ«:I}å†QU3ôÖv¤Áî¶nTiáÂ0Š'P nvÇ­K«n1:`®d|gè*HäH—ËŒ©Ëœw¨üÅIrÈ1Û¯ž(æÌаëÅ3Îe%”:ÔÁ°ÆEò@ëô«PÆ®̈õþ•8¦¸;‚–å*,’ž8Í,,1§¿&’úÉm" §wcõ¤¹¶ ;‰¤Wf*ÌNê*µ¤ÄO9 +~•´¿¾Lž3ƒVÏ;×G…LçÚµ°8ÀÆ{ÒRô¥ö¦O ‚‘‰à`ëUïîÖÕäsËëQ]̰@ÎǨ U ‰îà ñÓ§ó®k÷gælçð¬FØÍžri΂x•‡Íß¿sSK¶¤‰XäG^õ+â(ÙC¿ÕyQ÷mFÁfصQ•žEP~fm¢ªmw‘QO,EhyLƒl$¯¶ã²xUüÖ‰›h!sÍkÇjСÞPœg­C>U#' œûU[ÉËq–;zñÒ«Ý8“bÇÎ:Ó#Ø6ã‚ÛCsD0™™‰›h'ž;ÒÅ”«v-š|j#•„/ô« µ£ß±‚ôÏCSDT6Úmà 2± ï^£ÔU j2·JåóP>EQÕÔ¤û‰ÎñšyDމ;¶êšlG¦AèíæøTÓœqŽç9¨òH¤Îü£•8æ©¡Û*œãf)ž€ãÚ¨&ŠŠ»+†9#­uªÉk¹Ë­èƒ”1Ë`fœ95/ÖÒ³ï˜Ër‰œ$|·Ö¹­rïÏ»XÔþî?çXZÅÉ–uŒ•*f(['­gnlg¯ ªAÈ#š±s ß®FkNòÖ5´ûR¸bÌ3ŽÙæ´®­•müõ`ryùeYÎ9 õª Åd éÒ¨«í8ê)É,`‘'28 Y *ôJÛüÅ#Œ—c÷{UØnÃïRÌF7ÔøÄNUR`IþÐÓ¡[w`qŸîŸZtk0^{ŠGV*n·ÝûÝéXR%ƒôªš©\“‘ÙùS•ñd»ÁÎ2 õœ 'ËuärŠIÿý®¼ƒÃTd„zš¥Œ¢ûÕB7(© ¥i»~} h[*…ûF0¬?,Uè€ÍìÃ5N\˜Îßâ<~u˜ääã¦súÖsI¸z«jÒ.œ Ð*Ω3\ÝœsÎÜU‹Ùk”äžkZD`³Ž2>b2G¿z݆/²ééûíŒsZÑGåZ$xÁ=).1·žU]QT= §ð¨/€[±¨Ì€\3‡8?J¦“´;‡8?J®²9ÛÔžhƒåG&x÷©l`’wtö©öË…’Fíœ d9;Ž0sQÛ†,ä¨4ÈA%›“Q¸Äx¸Òm (ŒŒ€sFÐ$ Œ€sW·•ˆ.y=1ÚµÞcº©8$pEh4ž\J¤á±Á›™&¿X”|»NMa÷7¾Zò0y¬¾g»ÙÕqÍ]‰¶J Aûµæ­E3Ep-£È‰qïSÇ!Žqp‰ÏãS\ɲÒG^¡p+Júø•Ë"õ+Š»u)2:õ+Š¥mûTpƒƒqúÖ™lÓßE?*|ÏïYVnÒ0NØþcZg'€+¥‘˜7—í[nÄ«ÁíT§ÊL¥ŽK£ë\椯ÀÜÛ˜ŽMb߃ÃqÉ=Å122†ÇõÍ·'§½Co“(­_ž£5Ö©b”×B2GÌ1ð¤wò¡w? ¨®åZK/uJeÃùPI' ¬˜òÑïc†nMqÌÛ‰f?xæ¹gbìÌOSNÈÆO*;zУ¹ž´èÕ‹ ûU©þÁ‰ N~•µy[è˧Ä1Ç­k\Æ`ÒÖ7?3rj ’€9÷¬“Œv¬¡–àU¸cŽ8G›´äî­Í=m-l×í,›ß’;ÖÕ¢Û[Û#ÇœdÄä=¹@ËéUîb·˜ù–ÌŠËPÌÈCBÀ¨• ‘…våOz®ƒ|Xwå D ²ÍÊž=êkDVw˜óóaµjhФŒ÷dØÏµ^ÓcW->3óa~•³xÁÜÀÖ=Ê´£™ISô5—p SH¤r ýiZBcTûÈÝ? ošÆ1T'4†BÊ}ÜÓ˜â5#ø R=ñÅ!åâ”ÿ«ôÛR81ià§U­yá)áøÙG(¡<ÿ:Ñš-ºPÛÕ@#éU˜8åG{úÖ'òûµO~Ô¶ö‹$ëu!Ï͹TV¾‘f’ywNrOÌ£Þµ4ëu>\Ìy=*ì¬Èço_j½}pªà© ³¯µZ¸™Uòݨ§9+ß>ª¦¢åÙ qŽÝj ³¤ò1U˜ 3€:©CÈÞ8ãƒUU‡wÖ£óØFê 30 ”‘Ìæ6æpÒ¤ŒQ•9ÝÀö«Vv®‰™NO\V†žñ®éO=qW-m5ËžzÓf`’¬äq÷qU®ß˸[ŒwÆ*ÛlË/¯j{;†ãÎ{~”÷•š$Þrsž)ÆBÑ®î{â™aeÜ3ÓÞ¢Š&Ü«Œò´Èã>i8Æz{ÓQ˜^\IŽœ~•]$e¾¸Ì21øTÌ·S¾9Î)÷²‘Û& ±±ØjƧp¬vQň,Gnø©¯æÄ)n‡;ˆ$Šu¦"Yfo½#â¤ÒÙl¬¦º‘rÒ>Ð)öZÚ¼ÍË1À§K,¬Ó·žÝj ›é¦8%Nx¡žîI í¦\ í£œÕ[Æ2:Äàsš¯tÞaRNO½Bù!\pÊÜ~'?ãP+Úãª0ÅBŽAVî§ŠÓÈ##ñ®¾ –â!"tïõ®ŽhÃÆšËæDÉê).aóàx¿¿D±y±ýk6[v·‘Qw0=®bëO’ÚqRäô°n,)ª“šµi ðò¢ $cµjé:kD|û…äAÚ´tûó&weô¢öL°=y>Õ_Äî¹çîŽ@¨5©³2Æ;E1P"+Œö¬ôPˆ¬zš¦ª#@OSMwLó‡ã¡¤. ë»ÚÙ÷¨`RÓ qòá麋t,Þa_—ÓÖ‹xÙ˜9ééëR¾õLâ'ð\ñO—rÅÏñŸnjI Xǹëè*[96ñ†Bç‘õ­=ôÅmå:eW'púÕÝ2䥸B8\óKxªPJIãëMׄ,©:˜ñõ¦êâ"‹(ûÆ I|IŽ‹f³`Áš8F=jŒ2*†‰HE‘;#`:.G•$±ç;¨¥˜bGAýê·"”³pq¥tq˜´‰Qˆ Çé[–Â@{'ôª vÆ#5Í7 ŸzÁo»W-¿Ô&;'ëšßÓ,‡/_zÚ³8´ Óå¨ofПyŽ gj2~ø,cºûÕ+×ýàTêzÓ®\E /ñ• SÞɶÞ8ÁÌ…@¦¸|G¾F*¾ª>ɧF£±Á¥ÖcZd¼`í?Zn¨­„@uû¦³ü?#K}†9UZ¥á¶ß¨|Ç!TãëUt/vÙåTqõ®”žõÕg&º Õ;زCƒÖ²5‹bJ¿t‚OÖ³õyÞ½1š†Ðùφl÷½ê¾œ‚â]®ÛTΣ²Q,„1ÀÅYså˜È@Bñй;ZUýz²çËhÈb«>CË"çpûéy¬‰‰Ë!àïéê9¬ÇÎ÷~„·éK.Y ÇÖ†îIQÉcqõô¤ÈÁ@çÖ‘OšÀøÓ²v  ìpxíS…Q–cƒS… ŽI84¬ûa2+‚Ã…t©Ý–;C  éS;,vûÃ|ý×p-Ûp$äІG_±+É`Aú TR8û!gqȢ݇—ÿ¼$#h=>ÎEDˆ°Î‚¾Ø§ZÈ4'’þT·ˆdš¿wo ïOÖÕ^æ#ùYǧùâ—X¦gB:Sm¡Wv Çîð¥&h’Ë*ÉÀØp}9¥²·Vi7p@àûÒfÞ[©lóІHÜÈÌÿ~¹ÆL¤õ;ºÔòKæÚÌHSýJÒ»½èätrÁýjåÅÏ›§žÌÌþuZèb×v9,EdMú2¶:±¬ùbÌ ÷^DVÊ=5¾@¶Òãq€Mk°Ù #€9ª€©i&?qOŽ6¼òMü {ÖhÃLòöŠ,\LÓ¿;N±«Ú4BââK©>mœcV´ÈÄÎ× Î8_j«â’ßc‹7œÓ<[»ìÐwyÏåPø›wÙ¢ÇÝÜsG†íLvÆf¹â Y”„Ï"òzS´ScOJÚ­ÚÖ¨§£*½OZýíö©äñZ‚íKÅT­Ô#à7 ¬‹\BÄ1ûÙ>µFå±àžÕ1åN1ÍO#b"A##Ÿ“5 ra`øÝ¸€k-˜´dógƒYìIO›®iöhAŒçëVtñ‰üÂ>àÎ=êÍ’í“~9¬™HÇn*ä×óó+Øm«]IŸ˜‚; PH¹·m˜Ï¥<ªêv b %^£æQ{fÛ1¼vªP³Î=A¬•Êž `ŠÄädŽÔ®ÐQÚ‘¹S[$S\’¸ÆÕÇ4Ó’¾‚šr?M‘²" 0rÞ•©áÙ®‚Ü£.Xö­M Ù¥ØFåQœÖŽ2k£êkkð¨n¥X¢;†XògëW1Åhñ™\v÷ªZœé w;sJ¢býO8®h‚9=ë‚z÷ôš„&'ãîNlçäëÏ~I¥cû,J~Eíë’M>1Š'sò­%ü‡Ë‚yúTwwRN {¾RÕÄí*ìÏÕ=VT¶²HÁûÏÍCxâ 4EêÍÍCvâ hÔ[š±¡ÖˆÆ\þ5¯áÏù†Æ79­=þ<ú“Vo-#½„E'@sW/¬ã¾·JpÍOwl—Q~Ç5,h±F±¯ÝQ€*h£XbXÔaT`{Ô¨‚5½§S©i²Tîè*;€¦#¿œSefMS¹E,¬O±/Ôn „îSÁ¬Ë¥ƒ/U¥ŠMéÈäÄÓ!œºm+È&›ÛÐ)ŒÓ92#Œªõ ‚ÒÆI Ê£ –fÇ~*Ä[sÀzÂØ³*¹áÁnÚ °Vèœу÷ßi< kÁ˜¤îWæ#µ4Æ&Ù[¿Â£‰Þ]Ù>[pAþN±ì.÷g1±Ãüô¥µCk1$Ÿ-¸"’x6Ï‘Â?'ØÕmbÌÃu½~ãóUu+_.më÷[š¯#eO\Åf7R*‰EI,ÈÅ¢ÁÐ0Ï­h6™,îßþ5y´æ™ÃÀFÆPØúÕ¸a[h°£æ<“[vVi§Ûa.ycZ–ÖégT1êj9n[æ „ÔÕkëéö°JÆj ›©v£ïQev±qóÆ‘ó’Àîn¤Öd’dÓÜÓV#4Àµ¯z[[>áw|«ŒŸp(µƒÌ™Ià –Vùò‚Í‘ÅY”Ÿ0ª;ÍVd-¸*’x¨Â–¶BFO>§¥@cfGvÎÔã>õ–Y]Ž@^3ïQœì]ßÂ?JªÄè*«± ÐU›a˜Kg;›$úVækBO"GË¥li‰›LâjmàX‚ ųPëi$—<µEªíˆ"–<â™*(±’PgžÿäU'‰v 1ÉQ“ïUYÐã©ÿÙÿØÿÀððÿÚ ?è² Šè‰ ¹®ˆôªLm(ù]íUØÄÅ·ŸÝŸ”«wÅ@ÞL»¼Â 7ðšj¼6¢8#jî nà‰¯#Œ¤q §Ìp)¿hŽ2±Æ€/`xé™Væ6Ÿh‹#ú‡õ#΀«8 ƒûݨ4æu¦@¡GMÜjÛJŠ ç ôÛÍI%ÔH7oÜMœÔ2(9ÏLW1«ê’\Ëä¤LNˆ¬=Vì\¦'Œ¯BÃ¥cj7†áÄk!_â"©O)(É eÍfËI:•åNoz£"¬—*¥>^2þõ³mtn¢FÔy™þJعÚTÇ9~îÞ•¯;R±¨ã~j[Ùì®±ÃoTžP ìm\~µ^æP¥ÈPvôüéÚyûHÛ´Ú7±è3Î+J8ŒÀÔ+2)wìŠFvŠ»m Ú£ @Þç¦=*¥úF%–8Ô’:7aY·³ÚIJEf“27ô¬û¹`Œ´qåœucÒ­jsZØÛ´*3"*—ÆqÀ­—•£¶Ô/̪»8È­9exá„ Q¼*ï<à‘Xï’öþ\ÂToÞŒgš«;-£ÄZಸ¿{µM¿Ñ¥€}£z"î#xZÓMBÊèªÅd’ª}c1ܶÙby;ˆ¦›ÛIˆ)æÏ<Õý8àI®ÜA'9âµôß/ìÄF»FìòsZ6%|ŒÛƒÜÕâ~SÆqVúqšŸ±8ÎJã’úIu0Ì£hbØν۽ûyŠ6¨'J²I¨ítùB±éW¤¬˜Ã1àœ õAÔªe€;‰8?¥@ê,ã œZäÔ%Ùæ$ð žµ¦ZãV˜y*VÝ02~îEh1ŸP—¦ØT޽*+»;iX¯33ù„áÍO}g¶ñXdyÛ· ïO»µ†X’Óƒ 98ížj¦ºc‚ÒÚÝ8ô#µgëΑZÚÀ€‹Á¥Q×$X ·8Ú0 hé¬ol#žB]¶eíjØ?Û´øn.ÛHn{ŠÓ´o¶YÅ;rJá±íRÆDñ7”~áç‘JÛn­Ùa ÈSØŠREÄ YGeô"²øØÝË Çæ,€wéÒ©Y»À|¶*щD™Ï#ÔU+i³4lC(8Ç^+¢™¡W`AnpOjÚ€³B¬Ã–ÉÁ÷æµãݱKg'ž{T•%:Š(¢Š(¢Š„ÚÄn–ãoÎ3Qù1ù¾nѻ֘"A'™·šb#¸üáN½2|$NY†ý§m6R6$üØ8ÍPk¨U"ÊáÐ ‹éêk2÷PŒó/ ¾žµJêò!ƒÝFª÷w£V2Åpr{U#pdrÓëU Ϙŀ籨|G$ÿf‡Ÿ“äz­x†YOˆ!H"Ÿ¯Í,v‰·1’Õ•¨N¶ì3º·'=­E¤³Ï§ïŽFûDoÉϦi´Ö ¦ã2±Éì)ó/ö„-q,ª C £‚Où5fviý®DÌ]WjÄù—ç¸,`Þ©¬ };Ë "ã#ØUKK)o¥’gÌvû²1Umí$¾šY\”€1ZºdvéòÁ;²{ÔÒ´'”›ŽSÞ¬“ 1ùqä繪ºµÇ•¶ ¸ÇJ˸¼žXÏëY×3eö‚x.•y%–—rÒ¡Ê·Ëï]›I›"ÏÀ u­K¤‹MΰrM: ×Rd+FŽ1#7ðûVXÓÌ×D•há<Èî:{UU²O» ‘¼Z´Ì6Ï宨6(Î1ï[¡áZƹ 1þêúÖ¹1å6®J aY·–†O>ýNÑÇ¡èÕSQ…'´žá-·öªw "žu#'Œÿ³Yzu¼É?ž¹UÁÇZÀ·‚Oõ»NÃÆqYH?{· F3]6˜í$ ̽$!*étrZÄ¥rƺ 8“j >cK©Ý‹K) {ššúsojÏ‘’0õ§ÞL`˜u<\®žÚc å±ù×=[ F 'ëÿê¬KqûÄ||ÄÏùü+z[i5o]ŠÄ/Ï5pií}åBƼ.{Õ¿±›ÃŽ•~[…µˆ!SéÅjÏ*YÛ„AŒ /¡,‹oU>Õ—w}l—6Ò#o˜Ê vÀ#Eå‹Ïµ¸f;üÎIã Œtôª²òŸOZ¿ùLã/QŠ®Öó\,Ïs÷‰= ¨…”-9‘¢ù-“Á4Ák ›Ì( 5s ôÅ[ô‡jŸòã ¢Š)h¢Š(¤¢Š(¢«Þº¤hÎxÝ“LU bA¼LxùÁü1UuTºn¬OµÛ]\•l«Ÿâ…)‚à“#“» Çw·¸fÜv¿r*Ö›ipîòÊTDàŽ{óV46yI™Ù|–ÈÁïSé–26db<£œ{Ô^!ó>Ä‘º…Pr»i¾ i…¼pÈ /Þ]´Í{Í6ë £_Ã’g‘HFPÅ?ü>s̬« ž¡YÚP@“ •_RŠK)|œŒKó;sNÔÓË`@HôæŸ~ Rª®¹RÛϹan„œôëygºÛgdjœûŠKy.';Q$õ¯¡2Ñnýöòsôª‘2R»²åºçÒ™ÞJŽ[5Ÿ}#\_¨eÉ ƒŽô¶°{~„óùS"d½ERMh5ËJ¯ DB8«W—óÊnTU»‹É[r„!:Š{ÎÏp’'I¨¤¼¸¹U‰Æ;›ÅL’êY”Dãn8=jtaªÌÜó‘RÃuÉÝÁ#Þ¤Šã7NA…fÜJ/¬g‰‡…÷‘ýáÒ”1“IQˆxÛ{ü@Ó$c>žâ9èÛsPjö*±h]ƒml,†sV´)ì¶1«•ÚjÞ’áíŠ1£Û[c„8µj@úUü¾Ã°ÉkÉ{w„'d|uï\Þ«tnîp‡÷qb¹ýRâ[‹¬Fp‘õ§Øiò¬Ñ’1½¾Uþ´–pÍ$¡HÁ~ô´ë($ó0GQµG÷k¡žòP¢ŽGzÙºRÝ]IWˆ Þµî" u$úc½ek÷lÐÇ6\üÌGE¨o.„€|ÃÉ¢Õkù÷ D#y%¾êÖ ºy—q+ßƲÔ4³(ô8õúVlJd¹<rOÐWx£åÛ×ä×Jçu®‹Œ Œàw¨š=Ó©Ú6ŽzTk¤r¹UÆ8ö¨™ ¸ W…éSA¡«dz”ŒñMd;@V*&]«‘Š@002)ý€çêiz ZJ(¥¢Š(¢’Š)h¢±õ‹˜÷˜³÷Pçñ®{Y»K‹ «ŒŸzÆÕ®Ri< ~U­dév|™\pO¬éoÍÜÖrC°´€sÒº;²)rrd ÝÐ’ÎmÇ![ VÞÅm$ÝÑ[?JÄ×/ Üù,W ûwªz¼Ë=ÌkÁQ€ãÍTÔåYçXÛà~µ¡Ô6žPHËò’}ÇÿªµÒâ òÃo òzf´Vhã‡``ÄpsÇn•Bym¯³<§8ãµa”º•Œ„ôÇÓ+-æŽâfy_Ó˜æKTPƒÎC{S§F·‚DuÉÜO¨¨çWµHcJî;˜úŠe¥ãÙγ&3ÎsP$…fgîà5EÁŠmþ^$ýzÕ¡}ö™@„åH¡®™˜,3g9§ý³{íýf~ðô«1¤Ò8üíÆ}*xD²ÊRÎÄäúTЉdu$eÛÞ¤µˆ¢…l³nÉ&¤r59ËH9 zT˜ƹ9cÔãÞ­• y?ت‘s ÏRAªé1r2x?¥d[ÙÉ™e …taǯj±³]¾î^3·ñ8§ÀŸ¸˜œ²cëI£·•¬¡rPMXÑÉs•ç9ü)úFä¼$ù{[vìÿJêcž ’͸í1Ík%Ô%e”7ÊI­…ž"®á¾Uëšçtkq=ÅÄ®~@~Që“XV©*Ï,‡…<{äÖ6n²,òÈxÝÇ¿5´óUrÀmU•£c 2•À¡k+6û ‘wI -R28nqV™™¥ PãÔjbKI‚§Þ™w¦Exfu>¢£›MŽnK¸oQQËaÄÌî==*…µ²jÒ(Sò ò¸Æ PÓàVÔœG—Ó#ª–0 ¾qƒòôÈ­Áœr{ñ[u«KEQEQKEQEQEQE”QXÆpù”p 8ïõ®,Ü·®Hk—ûÿ3rAÍXÓ‘\0P6œëZZE¨»YGËØŠ¿¦À'3÷}jweZ9v€Ø/¥\/ö4– ÕpÀco¥Z'ìèðÈ+SŒ,àncÓ>™ÿëVVæYCîÜAÈʳdbŽY~f"‹»dþǰ&R}I­9ü¸,¡—h,Àž;úš»r±Åi»rägéëY–ö²˜Æ2œ¶k.ÙFô•ðª$½ù¬Ø#?+¶6îËZ’kid; ïÒ¥»¸{Û’c;bAŒÔ· ×3³!ýÚ }9ªM‚>^§¨ª ØÀ¶LcÚªÎSƒÄ˜?J»kdÑê"07ÏçSÇlEáHWyë‘Øw«ö/Z8×yƺ h<ˆZᑼÔ%°Ýø­Ûh¡´‰¤ÚÁÆq¿©ãµlG[Dò•Ì‹ž¿N•›ctÓ¶Ò6–rqé\ëLd“ž'ðæ±ÃHý†Iâ®8o´#“ÆhÉÞ£1Àð§ýàµZé ¬ypØ>™æ¤$‚3݆éNÉGòùÎsZÏ´¸0\Í<°†!¾UÇñ3RÇŽI†Àpo¯éIÉW”4@a¶¨Çáý+G÷·em¶˜°ööëÅOk¶jLk’ò0ïVcqþŽ2‹Œ» »o¦ hÄQ1ÚNw¹­$±X‚Çú¶äžÿZ¼–b$DpIïŸZ±>K/;ßqïVv„ÆNõ0_/§'ÖªCªŸíi,Œcº@ª6ڪɫIdcÛÎU‰Æj¥¶¢$Ô¥´)Œ©=êýÐg…‘$1¿÷“·Ö´œ¤Aõªó‚T€JŸQÚ³4Åa,Ñ30mýæ3œqTm[tÓ+ Àߎ¸ª–§sH§ œe±×Š×‰vD©¸±©«Ê6¨¸§Ë4*³ã|Tå7 M ’0Š*¼Ï(™b0‹Ú™lÒð2OAQꛑ#’}« G½íVõ èkÆUŽ1…AÞ¥Ô G¶k–(ÀAÞ©ØÂ×L²¶v1ŽOéY¶ˆ÷³*…8sÀöªVª×R)ìǧµiC©waNÒz׆-¢»B7»žùãZqüS¦3ÇËY×x€òðPö¬®P2ʳIò|ci§h(Óݘœõ§£ÂÞx“$.2M]Ñãfa;ddÓ¹¹3eA ¡¶Ÿñ¨uK÷žR¨pŠØ¦êM4›TáAÅGºÃŸ•AVÃ:Í*S°xú÷¬ül'~´®ã‚[æ@ ?çüóR!ä18ØsRÆ@!˜ýÎj+ý³Æ& äÏlóWäˆ\B÷$`±=»ÕÉ#EçµÛ…öª‘ÂL’–PÇ=…Q•Ÿ#Ÿ˜çªLO›!êwb¤kï³Æ¬Ñ–,§${UÝ>P1xSÈöæ­Û\*¸6“‘íZÖ,¶J Á\ó[Ð0x†pTu­xØ4*Ü€Fy¥<ÊFÞ£¥Q&;d hË®ìt®{TÓ®mîMÔaŸi •ìz×?«i·V÷lƒt¸!²?‡…¨i÷]‹¸w9Sž;WCàYgLÜ×AyáV}Ñ–Q•së[ZXpSrò\Õ{%Œ#‡å ðÇéPÙÛ¨ºžT°<òÎ*;hB0=3õ­ »Vih¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¢Š*¤’”ybÈÎ2ƒ+™º‰`ã#•éX—º™âÏP*íݶ…z®74lÎvà*ÜP³c¥,†9šTôƒÖ§šu¸ÌÒ)Ý߸ÅLò‰‡˜Tä qÞos9cÀtÇ¥ZÓîíÖ_1”†U銱iq±b¤;ŠÅÖg7³(ÜU¸•ª]µüዹàVV¥9¼˜~Px~Áã[±ÄìO§Eêö”JB|˜]äè¸èµ{N;aýÜlÍÑ}ªòŸ˜yõíWÖH¥B%cç(ŸZ¸¯.þðcùÖ]ò4³8”`zzžõ•v2žOjͺ³ÃnàUûÖßLÞ*y¥o2Ûè‘îœWá‘`ÒãÊõ²‚ÌV' ïXÊw±çïÖ²ÁÜH=OJ±’vÈýJæ× ÝÆ¥+÷›½S«1b?vÍ>Ò<¸s¶ >cO¶dbÌ1êjwY „ÈE‚}jÄSG$ëí‘*­ïV#EŒ#PpMOhAg‹#Ìâ«ÝDc¹•3Ü}j½Âæ`:õÍBÐïgC›œúdSô¹vÜI¼~ì¡,~£í9šêÃä wU»[kFÎâÙ8SÔŠè!ÄvÙcž8õô­ˆq7'Ð~•¢£€s·#¦9©”0A–Ú1Ðj` œ tšˆ¢ÆÈIb¹îi€*1þ´ÌÆ 9÷¤tgXÎìmÎqǸ%Q·A¥ ­¿§Äˆ’0FîM"€8ÈçéQËÀïŽõ-KN¢Š(¢Š(¢Š(¥¢Š(¢Š(¤¢ŠZ(ª—q7˜³¢#¨Mbë6’}¡nã\ƒ€q×¥fêvÏç‹„\ŽÅG*aÎãÆÐG½eÜ’cÛ5Ÿp 9ÿõ©#8'È¢P@'äRÀÀ1àsQßL‹ Ï´)e Z»¨L Ë.¤=Z¼•L"DP7 Á†)nï"Tݜ㰬Ë;I.®–4y&³-mÞæít<Ÿ¥u)j°[ˆÓn\þµ×[Û¥¼ €1®š(V•Ç9¬Wº ¼hMä®zc5Ê\JÆâL7äW;<çí þ.+Fò8¦·ûX>ÝÅEkÞÁÕ˜¼„eŠå”V¥ÜQ\[ ˜Æ[hb´Ø®`þÍ]çj±wÖ¢iT骤ræ– äH¬ÑÍg©Éç¥-Óýö_”ŸZ’RY¾ƒŠ’BXŸöGyâR<€¹bН*bÈqˆÇûæ®F¸µåq¨'Þž$»}ÕãõªOs¾Fl¸Ú¼U7¸ äíc³.“2JnVõÇÒŸ)?g‹p䕽‡Ò•Ûä=q×üý)Ò]25ÑP‘ c™«V1â ¹GÌJ;{Õ‹UÛïÁÜ6Z6$pÆ×(#wUí>så«Jü&R9UË9L­÷xô«ê‘ȪX³‘Æ*iud'Ù¿ºJ÷°!Á9j† òêY¤yU=CS,§{Éd—ÊØ°§±ËYžæG}›UX…4륙nF—i%½³È«R‡ ò6œ“ý*i|Á Un>f5ycõ©WîŒ~µ(Æ---QEQE´QERQE-QEQE69Â%Æ\â Žåe±J0 nÁ¨Öu{Q>8+»³¢I.œá‰f>ÕËy¤$ô<±ükŸ(óJÌzg$ÓÜ*É•çSIU|ŽÔÂÁ[#µS¾ŒÜF‘©ÃHÛ‡SS¤op"‰HCµAì:榼ëKÕÎÑôïZvvQZD©€ûÕÑÙYEeÄûçï7zÛµµŽÒ=¨2qɧÝ7ÈÑ]Ôí§t°ÂѧúÙ…žôËéÄq:gæaŠçÚ HªÞ:Þ¹„šU@2ìxQÞ¹ñ< /.{zÖ¡ mc¶P7Úû5ÒZZ%¥±‘½“i€­ØàK{R$û̸5m$ÓDbÁÚxõ€æo)Ðb,sÒ±KÊð²;7gŠÛ„ªÚ‚3…;yô?þªna߃€qÏ¿4Ä[°xãš~Ï5¶0É< ö55º‰fDprHK R\@ ¨ŽZ>qØŽõ£¨,M`c‰‰xÏÍžâ¯_*3G,A¨˜ÉÉnÆ±Õ 2ª.XœïYA «÷˜à{Sµ 56Q)ûè@ëZÚ­¸µÓ­!ÏΟ.}}kOR`²‚1÷—åª5º7> J6ŸóùU;yDr.yYxªÐ°c´¸£½±’Iaòœ?’B”ojÑHÉ;F ·Ú­˜ÉqŒÂj+Õ}»¨ùØ’*=D!}±Æ_™È=±QÞ„µUNѼóÒ·ìÚ3i …vÇ·…>•¯fc6‘yJV=£hö­H<¿³§–6ÇŽµ$Å-†\ô'šYHÊó†PäoÎyéúÔùàØëRS袊(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¨x‚Õº„ ³®™,4”…ÎX QïU.ml7êh¨eXöGÁ=MaIp<²ˆ0OSXòN<²«ÜÕY˜„ã“Uþf /$Õa–l/SV-¢ÿIƒ#˜çêýu³¥CFõ1œþ?þºÙ°ˆ ÄÿVŸÎ¯ŽÕ¼:Öe¶öi%Î$è3\ŒÒ»ÊîÌIÎô®vy]¤‘ØçãÚ²$YÒu—Änú d/%¼‰0áÀÜ=³QÄd‚d|üý Úcö‹å2Ç‚k¢šáfÓ…Â ’1þ5·4¢[!0zÕkD¾è†a\ê]H’îCžžµŒ—%%ù~îy£û»¤e#cš×ŠKmU X¦ÇOZÓGƒPŒª¨Gôõ¨Ìx½L c“QGfÃVHñ€O¸vÅuLpM:è`¬2ÀŒ n¨)HÁÜ@éMÔG*Ý…Gn»î—¦ØòÇêɨô8|ÍEN>XT±úô¦iï½Þy©?I©’1ïVÍjÀÛmWÕØòj”¶“A&ýÊK„µZxnvŠ̤F@ëU¤‰Ää#Þüµ® ZÀ€61‚¯JÝP¶ñG<.ñ­s¶Õs€£5™cy%ÝüR¶Ý®ŸnõRÊáîåó›nÓÓÿ×Umg{™|Ó·iÈéÿë­•¾-Èq׊ÐÜsÀúÕÑ÷Û¨§ÒÒÑE´QEQEQEQEQEQEgÍ7Ú&ÚŸuOõÊê—¦öìàþíNW=¨Þ}¦à…?(àSN*¥UšpÞÈ2ß•f¶ß½nl|«Vá ó–Ǭ[.Ì—mÒÉÉÀéí[6ÕVwmóËÉ t•©¦à!f;¥~N; œu­J¹P½»Yvާœf¨Ë¥X–i$A<å°*¬š}¶K8ÆzÖ|ê¦áÕ@ÂáG9è+Ÿ½+ö¹B` à`æ±nÝEË„ÆÕàb¬[¶3î“n+BÆø’]cªþu~ÖLé3»*¾ÜD‡¯ËúÖ1_±۠#­)u!*ÙÆsNW+‚§i­>9 22åO­hÛH%‹yÆîŒEtúLëuoç¾xù\÷>•Ñió-ÌiûýÔw9bÁ𩍨JÒ¼¨€¢ž?­V¼´‘™ÝG£ÓIf™ÈÆvçþ4žFÝq#2Rh¨ÊevgíCïD*suÿdT:×úØÇû5]þT=y=«5}z ¼T?jHÒ9K‰rzóµnÙÉ(Îác9'¡Å\‰ñ‚ìjOàj‘sq¶_7ävÈÏr:þ”¯."}ÛbÜïZFR%Ãa7f®ëo(cw†N=ëKW™Óìèåv8«š¬Œh˜rj-ÔKåÍ)*ÖÎÊ d“Þ—GŒ<*ìòÝÂs×4šd[‘%rvYW¶rkw½iÖQERÑEQEQE”QERÑE%Vbªªç®+‰I®L¹§eBy’‘z´ià…Øü«Ú¤L(Þݺ ic4ªÎ:ó¯ÒÆIyõ2H;ûV @ÀÇÖØEäÚ¦F 5ÑÚ§—àrE2W1Ã#’ªOä*K™|‹i¥À&5$géNšO*“ºj£Í#¦öôÎsS]ÍpKJųÈ…bIs$Ùg5ê«*` ¬€Ÿ­AwÐŒa޵ Üa^20A%ºŸ²Üc¡ä}*Í‘#O¾AüJúƒSØäØÜ§r Ô(Ø}gæ³ùàTR d8þœzÒý“f¦´ºHäáv~qW´½C쓾ø«ÚuðýºŠÒYQÏ Éé[ö—ñÜ>ÀÝ~ïøVÌi3m“N'ë1¶,o'“{e°Tö­{;™—fÿºO9«wcu³§÷°?3Z¶³¤QüDÀšµ“fàDÑ6Ó°gè=«YÊP”àv˜-d)òŽ•ŸêÕ_åÂçñ¨&û›_‚:T3p¸n¥·”Qó£>´ÈfÂà2â™ ¸] ‘GÙb0¨ îCרÔr&ӑȨ¥LƒjæäS³Žù¨Ï¥@Üt¥–u ² XÀcŽôø€qŽõ~Ê9‘*` Ö¶´kGšdÀ\m?lé–î2]zt5tž‹Þ¶òr9nù­2{¢¡»äóã äÖv³j iAóFrETÔ`<åꇚ¤Ä¹v_•AÊúœšÄÛº\ŒcwoZÊÚ]÷€}=k:êØG ÈëŸd^Õ¤þUªÁœ7Ê2}sÍZeŽÜFÀ …ûÕ»§X|‰1´‘ß=êK‚-îÑHlg¿z–fX¦GVÌc Š©­J#AeÈãÓŒU]J_1›i'¸'Ðpj¶¡(,ß1^3ùqSi3:M‚€€nyüëBÒíDÑÛpNÑÊŽz»g9 (+rRx–HùVäqÚ´Q•”9¥\GY:r¤dSéiÔQE-QEQEQEQEQEQXí½É,Ùµp¬Y‰Éë\{36rqš¯*¶ýÊ2©@f…ä ÖÅ´ Û2‚[ƒúWM¦iÑ­  –|7?¥tV6H¶ãÎ\“ƒŠ•ÑvíÈíWŒr‚%Á«F(ÎT Å9€#`v§ÉË–xGµ9ÐH…Hã4½8—Ë3 1K°*•µQÈ<(Êñ\µñ)1\r§šçïIY•â’Üä8byªñr¤PCÈ9£>Tœ‚A ŒsЊBpÄ•ݸP®§(F~†™*ÁtÓ&@aU=„²u"‘F2G.S‘×­¦KX—*Wœv÷®ªÚá”2 Î:¯ÿZºHeÿF‰Šå òGj•:(ÀìjXîaßµrþ#R$©£#= ¢f*£Œ‚y¨õ7t‰@F?1¨ï™– 8Ú{ÖU¬n×#F Ÿn¢±-bó'‘ 5—où¿Ù^k;Pº2Oä«eºÿz«\\n•7p­Uæ¸/r©žÕ¤Fkt8V òŒ„Ö“dįµ~rTjódƧ wŽ9§^ðçæQŽ:Ô0drÇ$&Þ8¨g•·uÆ+ñÝyeŽ#9ϵUÓ§òÈH¾bGj©a+-ÉÜ!ÏÿZ»;wÝ y]¤Œàö®® ‘¡eÚYs·¸®™[r©#*Z’–’Š)h¢’Š)h¢Š(¤¢ŠZ(¢ŠZ(¤¬œ€¹<\)é\iéO²‡Í›î•hhöfæ@qц~•§¤Ú™ˆ8ã<Ö™ô«ªÇ€b·øÀ©)1ƒœRt¦O)†?0`ª‘Ÿ¥Gu8·¥ ¾´ÉæDÒu¡²¹k–—#…ÛŠ¡¢ßIz÷C¥Y>‡5[Kºk¯;qÎÒ1íÅ6ù°'ÿAYšÑî_÷¿¥gjä ‰?Þ¨ãQäƒÓ5MÉšª‹òæd’4„úÒsÍ<0mns@94g#ªM»k‘ŒŠhVbqߊhFc…ïÅjZ¯—i ž0£5×Ù/‘c 1ÁTï]DʶO/4’…9)óê*½ÔQÈ7C†'9 PΊÀÆOp( eKg#¯qLi|Ë6ŠC¸€I=ǵ!pöåXçëÚªE†•Êð2[>õJÀ1 aA$}j™]çtW1q“w*Žq!Æ>µƒpAº“nN[ŒV¿5ËcŸ˜ô­M,3[0S…-òçµjé嘞OËžÕ«e¸Ú/=O~ÕbxÄǯAùÒÉóO4H¡^ESžÑ£–Wˆ|Ä“ßÚ›odd»,¼.7|S"µo9Ê`t5¼! Ãq¸î{×Fñâq8àãkf·Y17›žØ5`FGåR‚1žÔüŒdRÒÑEQE´QIE´QEQEQEd™›2|«Ú¸eCÕ¸È,|‚Ý*ýˆÅ¾ïïœÿOé]>€4àØÁw&º=!6X‚ ž´ªåQUuA›":üÃ¥eø…Â黼¨kM‹,gï0¦i¤+Ȥaˆªøi•&¹S÷ö‚>ƒƒý*¾‚Ê Éü@LÔ¿5gêNd¸‘û—-Š¥¨Ò¹>µ*°¡$r8ø#ÊíRÛÇ”ôÅ/’J’çÒ¦û Œ¹U8ëÅLÖlWp^)¦:…Í1,&pv&j1c#}ÁMKvÎ뀼j查¸s$ë€;µg`P™%^•n£8ùOjׂ_8±íÔ Ð¼ÂAè:S#‘T8b)À8ª‘\Åš96‚¬v=ñUãSz6”ði·_uxêNM7RÊ@¤¨Ë7&’û+<|Íɪ°&Þå˜ýÜ}+>Õ„V×[¿‡>©ÂÞ]´äõ5€Ð”ðªÛ˜YPÆÍpea…S¹½ë2(ÉŸÌa…ž*KKß*ê8—…fÁ9ÇZšÞùU£€ Ç Ó­Kò‰RÀ'†­$Œí`@^£Õu $dc…ê*é„íÏPZÏ’âO=6Q È„¿>”Å‘£’¼üý+¡K˜ä¹’ÜÞD#ê+ IÒK™aß zr+efWšHÇÞ¿RÔ”ú(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š(¬›¦,„÷®!ÏqÖ¹G=+NÙ (ãŒ×aa•ec²]=²yVÑ'¢Óªz’Š(¨/£2Û£%y—â^K5eØjޝIkÀû¦©Û¿—sƒî·È~•¦N-õ(dä'aö²´Ù|›Øð·ÈßCÒ§» ŽjMQ6ÝL `+`{÷©µ$Äò.;ƒS[¬mn2£åÖ¾‘'OËÆ>^¦´tõŒÙå—§zG›î¢|£ÓÚ¡¼Ô”HÅÇ#×#5ÍØB«Ê==i/žŒIÚvŽG~ôjBRÄ€Œé#¼d”í)÷2·n§#&´¤˜EnXî9=êä’ˆòNG5«cH‹ØÇÒªÛN#Ûñ0ǪfÙµz–ý*W·VÁRÊã¿­Kqc©¹2²zúýjYmRA¹AU·¶×R>X˜:b²äD–7å"pH=ªƒ3¨t'å¢dV‚S“¶F$¯µ+ª›i$ÏúÖ;¾ž”:¡Û³7"³cQö©»FNW‹FA€™ûµ^dqÑ3÷jht$êY[;¶±â­[è0²¤ù!³§¥MÉ2ƒsŒÕ³9F†=Œ3=ªv›ÍÙf܆ VMåT¦Ò:ã½d_ÄЫK“½"¨ÞFQY²I^ïµR¼O,3ŒñW4FÅϘ^âF!Á=ùÅihL}å唿LžžŸÒ®é*¦.íò9ù‰=+w½iÖ…QIEQE-QEQEQEQEvväw®!±ß¡"¹>¬¾„ŠÙ?Ò»AÛÖ‘€1éE””PzP~éúT¨$´•O¡"£¹Pð8>œV9 a#‚ÉÀþuÈ08÷Ì1*sýßñ«×l<Ÿ5z2óùZú×ÍåÜ¡ÿY$Ÿ­kjÀ³/FÔV(Ù‡FJ¸å-´ïÝ}ÙãÒ¬±Xlò§†Š©1WW?a\>ùýká÷Hi¸ùºñ‚¿22C ؤˆØµî1[ĸºõn€V­ÄÌð[Æ¿ë]G-Ð ÒšMÑCÞ0ëWR(­Fö廳uü+J(aÓ×{’îx.ÝzgŠº‘Çj7·.z±¤µÈIÆFy¢ÂV˜—Á õ¢ÒC Èæ¢¸¹Âõ n÷÷¬ëÖvi“<œïTîY‹:÷&¢R¾XÓ¶;š‰YD@ŒgîsQ@}>´®Å’VE27 ¦–Ó1«HP4®p ÒÛ €¹w8Õ°dŽ$F*ýìv­Vi-àŽ2ÊýãéZ´Q"¼jØ,ijœÕ!]ŰB æ«nÁmßÃÞ•#V,­!Ç ÿtô«–ñ.ÂYGïÍšš(Ã)ʃ¿­aMºs;@ØtmÇ•gA¾ÎFH­ŸÂ³†û2û_ð®–Úa< ês3õ­ä`èr9Åm) ¡×%---RQE-QEQEQIE´QY”eÚ¾»pk‰ 3*¯rrê¡æEØ Ø>ž•ÛöÇ¥u'Œ JJJ(¢Ž½i †OCÁ Œ‚zθmÉ\ H3Šäïá0]È„`Es—‘yW,¸àœÒýí=LîsîjyT¶›mÏ$0 ô$U‰=¿<°Àfàµ#¡À­I1QÎ1Å]¾]’©ëT¸i¹ã¯jÀ'.kŒ¿½JÖ.I;êX×÷€OZš%ýàÀæ’ÙL×LÌ¿*.Áô­) Ýï˜ëò"W´õk‰÷°ùPqõª^!»)q*ødQx–ð‹˜àWáS-ïT:íÞË”‰[…\Ðæó¬KÐãëZË`Xñób¯i¾È1§Ý$ÎAý*–¦ûng›'Þ«_¾Ù¤Ç­G:©9Ø ?NÕ ¤{äÈԓõíQÚ®æç¢On„ª#¸U¥SÍXÎÔpK °¿.×v£M>Iƒ0 `ç–æíd}Ê0sŽióήêÖÎ ’Äü…­SµrÍ,.pÅV·rí"ÐU‘0H£Þq€I?JÖ‰ño 7P¼ÕèÜyƒÀÛYéy—2¾/Çqž*£œVã[ùZcÆO! 'ÓŠÓx¼»&NáI5@:C°æ3ƒXbE1«ž«ÅfSsÔqU♞çÊuó€G¡¦C6û€Œ 6@zdî˜#›8ÅKö¡$—ëì#|Ú؈ïi‚väd{ Uå`âD±¨ªº(ÚèÅW9ùIíÍA§Æc¹@À31$drG`›dL¨ÉÉÉ×Ež3Æ=«f´úÑE´QIE´QEQEQEQIE–p 1ç’ qHTž•ÊÆ9J·§’–‰ÇÞfÇç]ˆZ-5Œ‚ÌGç[ÚYe²OrjÄ’ÇåÜ-[¸¿·€|ò?ž*y®¡‹ïH3éQ5åºw瀨%Ö¬âRA,G`*5;hÁ!²EBÚƒ2‘1ô'ŠÏŸ_•Ñ–4À ŒÕ)u¢ÊÁãÖ¡7Û•E<—êOµP[¹‹à¾ÐÝZª¥Ü¬àÚSVP$e²á޵©nc¶»¸c€p:šÑ„¬ ¹ŸqÇnµ ¶é\1Áß#µUº‘®.NóóH?!Uçc4Çqå»Rs‚:ãÒ‰0öÑÈüñCsäâ•Bˆæ™nQO·ZÞãŒÌ‹½Gµ:TÁ(ÿ–й_¥:ÛË´gc >Ø©¬ŠÛܨ˜Ù¿L€žjklC6?„àÕO²G}¨,Œ¸òð~ ¯ ¬z†¥¹¸ ó}@5Z+d»¿Fàçñ­˜,NÄ(<Œcߊ¿{*¬ÐÜ®ç¯våÔDxžª…q+ÎÐü üæ²$í Üg'ëYŒ?|OùÍ7 $ŸÄäô©ôòHäïÎsŽ*{?‘ÑØd–$ ½3f#Ÿ”¸Ç5»xÿè͸….1Žâµ.[÷'µ˜ú]ÎIqQ²H’,[züýj²[LÓ¬ „ÈÇîú{Ô k+L!çoÒ´-àH#ÀÆz³zšé¬ôè,á^…‡.Þµ¿mg¬ eyf¨du(ZMÌxƒY—2‰’l·|(ü*œî$¤Ëuè*•ýëÅlQv©uÀ¨Zæí£„Æ &Gn¸ª×7L‘”.ïJ†Ø½ü¶ðÙ °Ä;RÚîÔ§·¶ÆÈPn|w©m÷_Í DmEp;Öè*ð«À®–8Ö(Äh0ª0mª„@«ÀQI*,Ñ:7!†)·1$ðICÖ›: "taÛŠÊWòßòœ…ræFI0ìwAö5†\«í$ðp*ýœB(ÜösžkgE€Ao#I€’œ€{úÖž›•³ôsš‚}ƒË á¢þ?þªÏ¿t ›¬mÈN˃ÿêªW¬Š«ƒòp>´ØòòÆNp[ŸaÚ ³P×1–áAÉöªAºe-К’Ñ·ÌîrÅœ€G¥ii’ .Ù˜.ÇéZ2¸bÃs3aVå$ò·<ÕËœÆ] Ê·85<¤®Tô<Ö]ÔF}–û±æw7LV,°µÔ‘Û†±Ët™4FइÌO'µV†Î=4$ß;p`;ÔqZ­Ž@}òœèzŠT²R7!ÈÈô¨cAwt–q¾ÞgëŸj–ÂßíSù(vƼ³ŽsíN´‡í;Q~fluö®–$Tˆ"ôQŠèãEŽ0ˆ0£Ò·UB QÀ}iÔêZ(¢–Š(¢Š(¢Š(¢Š(¢Š(¢’Š+!×tÅ× ùã\…”¾]ÚÌprGÖ¹»7òî7œ•hßeÛ$c¸5­.¶ö¤¤–ØÇ çµi¾«ä¯ â®E:L¹CÏ¥_²¿ŠôÊàr¤Õ»[¨î—÷yuSHë %¦ o¾Ã$ÕÊÐ=*Ý Ò›)ÄmHçjY78ûI‘0 ³ï\½Ö ù‘@ë»ëXScí»”qž}êóJ0zÀ0•©%Àx#$oÔzV„’‡‰;‚ØaP\ Ï;yÖ³ïþia…WTnõÍR½äŽ%S•ýj¥méc’p¾þ桌³ÌÄ9c€ Eæ”Gäð*Ìv¯kq&vó´ζ Óå°_8M¿g%@ê;Ö”Vmh<Íá¶öÇçSÎÃË>ðãéšžý‡ÙÄÃï3éššìþëÌž™¬Ë‡L*‚ù@õïX³2ª8û¸ýk2B P0qÒ¨_9 Š8\…Ê äy˜ùT¨™'d#¶=éÚuÒÁqo—ºf'q³Zz|¨¾Dq¨,êKÚ®ÙMI*>vR[«¥ÀîkSœ{ÖÖŠ(¢Š(¢Š(¢–Š(¢Š(¢Š(¢Š(¢ŠÊDö0ýý+Ž…A“a ïé\Õºf@„€¬Mo)@¬D:qƒŠÓ½ÓçUœH¡Æ8­ «9Ä8^„u¨à••L®»]Wj®*¥¤íhÍ)\J«µGÖ«ÛÌmƒ¾0ápDʼnO!$ôöúUg–I¤ó&±'þµWi¤ž@Ò¾Iè*{xäŠÉ¥+²GmåOP=+rÎÐÛiFFdc¼újÖ¶„Áa¿¼c¸ƒUå˜!i:íRú±5,Àê:.ûMÞ©Ë.ÞWŸ— îi4½9·ýªçƒœªçV´}#‘us×9QSiziR.'ûÙȯÁ?JÝ#8öéZ§ð¥ u¢šÇ¾µÌ{óL˜€6ÖÚ¿ÒY@) ŸJåÇúK ¹#5€³´·B¹«ÊÊÒ°qާþº¾Ò09B«qëÇÿ®®4€>â¤sŠC'”²]8ËÚzUŒ¤ ®¤æFm g¦úÕ]¤*²Nyrp-ŒÍM̃æP„ÐÑìÙ.UæÿX=«šm·— iÌ£#ñ«²0XË1ÀîkVíÕ!bÇŒ¿;ªÄI8¬»›–‘R4$ü£×Þ¹û›¹.V8T ð¿Ö²..p±&qéQD‹‘¤Áb ì?‹%²¤Œ€`0OÒˆQbݸOO§z¥¨Ì°yj2 üéû–¹_º£Ǿi³J" •ܽì;šM*H¡Õ<ÙHØËOcVt™VÇVû’*”56˜é Ü…ðÕvêAqÓ¨5µ××­€=ÅQERÑEQIE´QEQE”QKE™+F ö?–+Œ,½½+˜Þ ‚:ŠºÒíU e™xº9îO“ È€óî+viO”„¼¢ªN$Y‚R>½«úIUÕ²“ëšÌ¼…•«$Ó­`y.“c ÷T:›F°i/I—åA‘õ©4»"nD²Œ… [¹Š‡;‰9ú “P¼hÄ–Àîù³ô-íÉMðƒ¸gò¨,ã7#÷Qvõ5•Ún²Ã÷qöõ5Ÿž|¿ÜN‚µ86ŽÕÑp­Œ1ÐT7ŒÉÚÛI?z«j24v§cf8ȨnÝ–”ᘊ”±‚Ç8“Þ¦Ü#…Fɓޤ 0\œÎjµåÁ‰ÿÙ8¬ÍRåãp<²ñôªZ„Å#,½H®bcó`Ÿþ·5ÍA»†õýk ÄîïœÖû–Â2wù7Òµï0Û÷ü¿˜Ö¥É8±Á ÍÀf¸))ÄqaŠúŸz4Û!5Ù3œGÎTô&‹]׿8H¹"¦Fݨ,‹Ê²”'<õ£o!“T󔂬¬‡ž=jä.Zûzãk)BGµ2òS;˜P€ƒï¶j¶¥v×2#!Q~óg5ìí<…€Eàš¯ùæ”ò…Uª° ,«Ñ@ T,Ž:1ïëQ9Üœ í\÷ÃóÏ;AöíMÎæBÇ£ð«:¶ž.ã‹ HÈÜ1Ö¶oíVO)ð6FÀcGzѽµI|¶`6¡Q\Ýêm¼xðB§Ýÿv³ïA7L£*¨r¿NÕv?ÒOʪr1é]F‹<“؆“ ´à{VÕ¬†XA$68âµìåi` H'88«õ5MKE”QKEQEQIEQE-QE–ÜGœõ«‹íÒ¹uæ´>U‰IàWP»b°ˆÈ3„\œûWCòÇj…À Ï™£;œ¸†>‚°Ý£f,Íߘ¬·d.ÌÇý9凌’+`>açùÕƒ©NÁmí29~õ!¼–@!·8rƈâòbw.Xð›«j…-Äp´…³êÇø½i‹—9bOsOÒ†-WœÇ>õ¡¡®!^pÙ9«šX!ƒ‚sWXÖµY±Ö¯Š«<‚K´¨v=qY·S‰5Óª¦[o®*”Ò‡»D;FêmÄ¿>×8ã T7W$͆`xàÕÄäËËvè*9΂W=}j¬¼É¼Œ®x9ëPÉ‚û+ž*ôøáÌ “Á÷¤[†4—Ìp÷ïH¶©¬Øà~5b8gXrñ)èW ïSÇep-·K•à®; óR¥¬Â ºƒÐ¥UÖ&–(¼Äm¢q‚µVÕ^h4gh¸Q=ª¾¤ÒB¡”àJ0@©ícòm’-ø,73zT‘&ØE»Œ±î)ñânê2O¥Væ`c‹žxëïU#F¸&48Ry?ãP"´¤ª’Ô·­¬V¡ á‡× f®ê- ­µ˜‹:’Hï3V/]-á¶T dhc/˜T(ù‹g®i–«On²<ûÒC°ÍbÏçVä•™Õ†vr ÿZÕšV,²(%Á^Õ~W' >î1ŠÎ½¶`yNZM¹Üz‘UeˆÈ­)Î@?1ïUgrI ~8Í/‡‰FHܤí÷ÍXÒD<çwQïRé£jznêÅm«Î:ŠÐÍ^Í-QEQE-QEQEQEQEF8Ë2«”ðk’¶ˆ<¨¬>Rvšç­bÌŠ¡<Ôw·a”Œ>^þµwR½È6èFØÉúú~•nöï#ÊR0½ýkêᤔDŸ1?(ÅcK#©É5•4Œ_jòkgO…mlãÙv1?ʶ,ãŽÖÎ0Ççq–5«n‘Û["“ó7$ÿJ·‚1„ ñëVíP;ÄŽÆAǽY…²û¤‚ÔÚH]ˆ>ÙéPÙ“o+ÄÜcøÔ6äÅ#¡ãi$U‰'Ú¸ÁÍ_šónÞ•n[ŒGJ¬$žQØ+<Ë·tÀó‚©´›wÈ>ñBêáí k~fo-sëŽk:ystIo,ôª7240™ó‚í±sMÓç{›i2ÿ:œ öïE›¼öφ%ÐänôZ;Olĸr*Ùf6è’±mã##ŠsK'”©)-œž‚žÒ0P“žkY~à=ÈÕÆÛÑ[ûÀ7é[êrª}Gô¬}nÝŒ@[aܘô=k^·p€(ݰî_Ʋ5x[` 7m;—Û4ýåÖFÛª­ƒP1g>Ü`+sïQ±føÀÀ5GR¸šjÆœMpNO ¨o¦ÚzÆ£KÕ½ª¾¡p-lÑ|òuúU™ ¶$“ò;&#ýj­Ä­-™cÂOëýj¼îÒÛYdô%ZÕpÆKTãh`¬GÒ´lãq™Â†ÚO¾8­ eÝ,;ºdƒÿ|Ö³$qÂÉ “’k£hÓ`Ü>TMl2¨P[zúþ[§[ÂDxØ ïšÎ½¸fd1¸\œÖ}Ôò;£B¸èNM-”iy䂎]¿GQúS¬›Ë”ÆHÞß6}z}«¦1ùÛæ'Ñk¥P eqó’;Öˆ~u¡€?Æ––Š(¢Š(¥¢ŠJ(¥¢Š(¢Š(¢Š+8í]Š1'µr°Å–j–ç5ƒy)€O5Ÿ¨G‰\™2Äpƒ¨¦^D«+|ùo˥E‘†îOj‰ òOšø r1é‘Ö Ú"ùØ Äb¡)°îÇÌx­x£W ²«¾!}+JÚ!9A"<›GV„1ù¬£>À§Á:ÈÒ[2mtûªjͥؕ¤³‘6J­û¼ö5=µÈ‘žÝ—lŠxö¦Ê¥oX‘¸2ãéEÊ2ê/Ÿ›rO¡À¢de¼sÔŒÒn #ÆÜ‚¿Ö¢I3$±·?(ç5¶ZD~@£PÒHŠ£b}ÑŸjfÖšDP&½¹4Ü4¬ÝR3“íYÚ´<¤ ¤±?Z¡|­q QÄÕ$ýsT/¢k•†8ø :ÒÓl#ÓíT6GŸ­kÛÚG¥Ø¯˜–_¼Ç°ÇJÔ†Ú=>ÍSî9cJcYEµ²VB7z ŸþµUžåÓ tl²±FoJŠhã–Ê&Fä1½*Õ¼ñ¿îÕ‹à+[M¼Št©fh† Å^³¹IF¹%F ¨µ ¹ ä þ5¶·äA?E©ó õ¨jS {[y™HÏÈ ÎÕGak9K|„øª:“ˆmmæ=_ƒTõ¶‹4dƒ‚=;Öu×úD¸%;Š¡yþ‘¿¯ñUhã2é–ˆ&voåMÚZÆÙ1ümüéI³´\}ÒMkíòÌrÊã*G¿©j<§‰ÙI@2¿§ò™†T -iH"¸¶°,² ¼Ì’Eó+UŠH˜#r·jÎÕV;hãTŒ„8^GNü*8;[ÿ5VðˆÝHF ‹XÒÇöˈT£¹%½Å@Ú% 2‹Ÿ›ÅV1ý¢T\”À溻c˜W …çZëÊŽ8šÕSÀã----QEQEQEQEQEQYº•ȱÓÉO–VÂ.}}kòxì4œ²fT\òk*öt²ÓʨÛ+|ª+˜ŽFówY³ÁÏS\Ú³³ç’Äõ®~9$iAä±­ûxÙî`ó#VwŽ{bµmainâVPÎÀ³gÚµí¢/p €\‚[ÛŠÔWòåHòpä÷5±op°]Çn*ãæb9cëý+J)–+„„p¬:ûÕ;„Ûçõ*GÊ;ñY·á¡ÕÞ|r®>_QT.Á‹S3tÃt«,2Á³’GCÜzU¡0yÜÇ×½XóUØdüDZªÖà‰ÌS HFåcÓéPÛ+EpÐNw+nqL„æhå3|Êhfw(8EU=ºgІâwvP~U ÓÓÍ]Àä^ÕwMFò·ïv«j|¼çƒëTµxäxHF;·czeØm¬rÛ³ôÐbç8ç¦*¶Š'œìidR€:üÓ4ù6o ’¿np)¶ ³ÌÂ3·JÚ‚FÚ›"º3“Ò¯ÄÓîýê¢!èÉ«±´¹ýàP§ &¬Tõ%%QEQE-QEQEQEWÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¢Š(¢Š(¢–Š)(¤ç<~4j)h¢Š(¢–Š(¢Š)h¤¤¢Š(¢Š(¢’Š)h¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š)h¢’Š(¢Š)h¢’ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZZ))(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¢Š(¤¢Š(¢–Š(¥¢ŠJ(¢Š(¢Š)h¢’Š)h¢’ŠZ(¤¥¢Š(¢’Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢–Š))h¢’’Š)h¢ŠZ(¤¥¢ŠJ)h¢’Š(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ))(¥¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¥¢ŠJ(¥¢ŠJ(¢ŠJZ)i(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¤¢––ŠJ(¢Š(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢Š)h¢’Š(¢–ŠJJZZ)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¤¢’––Š)(¢–Š))h¢Š(¤¢Š)(¢–Š)(¢–Š(¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š))h¥¤¢Š(¢Š(¢ŠJ(¥¢Š(¢Š)sIE%-QKE”QEQEQEQEQEQEQE”QKEQKEi:ÑEQEQEQEQEQE´QIEQKE”QEQKE”QKE-%”QEQE%QE´QERQE-QEQEQEQEQEQIE´QEQEQKEQKIE%QERÑE%QIE´QIE´QEQE”QERÑEQEQEQEQEQEQEQE-RQEQEQEQE´RÑE%%QEQE-RQEQE%QEQE-QEVöúV˜à·j†êî UV‡8¨nnáµflo8™q©¼Å–ÌÉ–n¨¹?ŸáYSjÍ![?3k¶íÊ™'·_³徒S‹måXõEæ´tÁ7Ù¸Þ]GÅjÚ ~Î<ýÛÿÚÆJѶó<æîÝþÖ3Vêj–Š(¢Š(¢Š(¢Š(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢’Š)h¢’ŠZZ)(¢Š(¢Š(¤¢ŠZ?ZJæ¯ìo/5@²>áŽÃ…‚¹íFÂæûSTwܪ™Èè>•…{eq{©m•òн‡é[U™±´òó’NkcMµû’Á’HÍjéöÂÎÐCœàÕÞµf¬RQE-RQE-QEQEQEQEQEQE´QIE-RQEQEQE%RÑE%RÑEQEQE”QKE˜²ÍgƒëF9šZ(¤¢ŠZ(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢–Š(¢ŠJ(¢Š)h¤¤¢Š(¥¢ŠL|Ù¢ŠZ(¢Š)(¢Š(¥¢ŠLrNzÑE-QE”QKEQEQIE´QIE´QEQKE”QEQEQERQE-QEQEQERQEš(¢Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Ž):QE-QEJË $d‘I» ZLüÛzÔ”´´QE%QE´QEQEQEQIE´QIE´QEQEQEQEQEQEQEQEQEQE´QIEQE˜Ïz(¢Š)h¢’Š)h¢’Š)h¢Š(¢Š(¢Š(¢Š(¤üh¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¤¢Š(¢–Š)(¢–Š(¢Š(¢Š(¢Š3ERQE-QEQEQEQEQEQE-t¤éEQEQEQERÑE%QEQE”QKEé(¢–Š)(¢–Š(¢Š(¢“cš1KE-RQEQEQEQEQEQIE--”QEQEQERÑE%QKE-%”QE”QEQE´QEQE-%”´QE-RQEQEQEQEQE”QKEQKE”QEQEQEQERÑE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQE-RQE-RQEQEQEQEQEQIE´QEQEQEQIE´QE-RQERQE-´QIEQEQEQEQEQKE”QEQEQEQEQHsƒŽ´Qô¥øÏµŽÞôQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-%-%-%QERÑEQIEQEQEQEQEQEQEQKE”QE”QKKE”QEQEQEPzQE Ïzhüih¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š+ÿÙÿØÿÀððÿÚ ?èë¢®Š‘÷òF}Ŷ(ç~4¼ãÞ–Š(¥¢ŠJ)(¤¢ŠrÓ–œ´êu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¨À棨éh¢Š(¢Š(¢Š(¢’Š)ËNZr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢Š(¢Š(¢–Š)(¢Š)Vœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢Š(¥¢ŠJ(¥¥¢ŠJ))iVœ´«ÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊeGE%RÑEQIEQER­9iËN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑEQKEQKIE%RÑJ´«Þœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQÔu--QEQE%RÑE%-*Ó—½*÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢Š)ih¤¤¢Š(¢–Š(¥ZrÒ­:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GE-QE%%´´QIE´´«J½éW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GEQKKE%RÒQE-””«NZr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢Š(¢Š)h¢’Š(¢Š)Vœ´å§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑIEQEQEQERÒ­9iVN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊeGE%RÑE%QEQER­9{Ó–N§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢Š(¢Š(¢Š(¢Š)?:3“ŽhïNZr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠZ(¤¢ŠZ):J(é׌š(¡zœ´å§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:eRQEQE!(¢(wÇz1F)ÔRÒ­9iW½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GE-RQEQEQE´R­*÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGKE”QKE™¢ŠZ(¤¢Šr÷§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQÔt´QERQEQKE”QNQÖœéÉÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢Š(¢Š)h¢Š(¢ŠJJ)ËÞœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¤¢ŠZ(¢Š(¥¢Š(¢’ŠU§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢–Š)(¢Š(¢Š(¢Š)Vœ´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑEQKE”QEQER­9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GEQKE”QERÑE%«N^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑEQEQEQEQE*Ó—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢£9#Þ£¨éh¢’Š)h¢Š(¢Š(¥¢•iW½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtRÑE%QEQEQE«N^ôå§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2™QÑEQKE%%QE´QIJ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TuQEQEQEQER¯zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠZ(¢Š)(¢–Š)(¢Š)Vœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙÿØÿÀððÿÚ ?è«¢®ŠŠ(¥¢Š(¢’Š(¢Š(¢–Š)(¢–Š)(¢–Š)(¢Š(¢Š)h¢’Š)h¢’Š)h¢Š(¢Š(¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢Š(¢’Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¥¢Š(¢Š(¢Š)(¢Š(¥¢Š(¢’Š)h¢’Š(¢Š(¢–Š)(¢–Š)(¢Š(¢Š)h¢Š(¢Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢’Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š);QEQERÑEQIEQEQKEQE%QEQE-QEQEQEQE”QERÑEQERQEQEQEQEQERÑEQIE´QH QEQEQEQEQEQKE”QERÑE%RÑEQIEQE-RQEQERÑEQIE´QIEQEQERÑEQIEQE-RQEQKE”QEQE´QEQE”QERÑE%RÑE%RÑE%QE´QIEQE-QE”QKE”QKE”QKEQE%RÑE%RÑEQERQE-RQE-QE”QKE”QKEQEQIEQEQKE”QEQEQEQERÑEQEQE”QERÑEQEQEQE%RÑEQIEQEQKEQE%QE´QEQE”QERÑE%QE´QERQE-RQE-RQEQKEQEQERQEQERÑEQIEQE-QE”QKE”QEQE´QIE´QIE´QIE´QEQEQEQIEQE-RQEQERÑEQIEQE-RQEQEQEQEQEQEQE-RQEQKEQE%RÑE%RÑE%RÑE%RÑEQERQEQKEQE%RÑEQIE´QIEzJ-RQE-QE”QEQE´QEQEQEQIE´QIE´QERQEQERÑEQERQEQKEQE%QEQEQKE”QERÑE%RÑE%RÑE%RÑEQIE´QIE´QIEQE-QEQEQERQE-RQE-RQEQKE”QERÑE%RÑEQEQEQE%QE´QEQE”QEQEQEQKE”QKEQEQEQEQEQERQE-QEQEQEQEQE%RÑEQIEw¢Š(¢–Š)(¢–Š)(¢Š(¢Š)h¢’Š)h¢Š(¢Š(¢Š(¢’Š(¢Š(¢–Š(¢ŠJ(¢Š(¢ŠZ(¢Š)(¢–Š(¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢’Š(¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š)(¢–Š(¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(”QKEQE%RÑEQIEQE-RQE-RQEQEQE´QIEQE-RQE-RQE-QE”QKE”QKE”QKEQEQEQE”QERÑEQERQEQERÑEQERQEQEQEQE-RQE-RQE-QEQE%QEQE-RQE-QEQE%RÑE%RÑEQERQEQEQE´QERQE-RQE-QE”QEQEQEQKE”QERÑE%RÑE%RÑEQERQEQEQEQE-RQE-RQE-QE”QKEQEQIEQE-R}(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¢Š)h¢’Š)h¢Š(¤¢Š(¢–Š)(¢–Š)(¢–Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢–Š)(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¢Š(¢ŠJ(¥¢ŠJ(¥¢ŠEA ¤c´´RQEQERÑEQEQE”QKEQEQIE´QEQE”QKE”QKEQE%RÑE%RÑEQIEQEQERÑEQERQE-RQEQKEQE%QE´QEQE”QERÑE%QEQE-QE”QKE”QEQEQE-QEQE%QE´QIEQE-QE”QKEé(¢–Š(¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š)(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢ÖŠ)h¢’Š)h¢’Š)h¢Š(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢ŠZ(¢Š(¢Š(¢’Š)h¢Š(¢Š)(¢–Š(¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š)h¢“4QEQEQEQEQEQEQEQE´QIEQEQEQEQE-RQEQ_ÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¥¢ŠJ(¥¢Š(¢’Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š;QEQE-RQEQERÑE%QE´QIE´QIEQEQEQEQEQERÑEQERQE-QE”QKE”QEQEQEQEQEQEQEQEQE-RQEQEQEQEQERÑEQIEQE-RQEQERÑE%RÑEQEQEQE%QEQE-QEQE%RÑE%RÑE%QEQEQERÑEQERQEQEQEQEQKE”QERÑE%RÑE%RÑEQIE´QIEQEQKEQE%QEQE-RQE-QEQE%QEQEQEQEQE-RQE-RQE-RQEQERÑE%RÑEQEQE”QEQEQEQEv¢Š)h¢Š(¢Š)(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¢Š)(¢Š(¥¢Š(¢Š(¢Š)(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢–Š(¢Š(¢Š(¢Š)(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š)h¢’Š)h¢Š(¤¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š)(¢Š(ëERÑE%RÑEQIEQE-RQEQEQE´QIEQEQERÑEQERQEQKE”QKEQEQIEQE-RQEQKE”QEQE´QIEQE-RQEQEQEQEQKE”QERÑE%RÑEQIEQEQEQE´QIE´QERQEQEQEQEQEQE´QIEQEQEQE´QIE´QERQEQEQEQE˜¢ŠZ(¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤ ÑEQEQE-QE”QEQEQEQKE”QEQE´QIE´QIE´QERQEQEQEQEQEQEQEQKE”QEQEQEQEQEQE-RQEQEQEQEQERÑE%RÑEQIEQE-RQEQEQEQEQEQE´QERQEQKEQEQIE´QIEQE-RQE-RQE-RQEQERÑE%QEQEQEQEQEQEQE´QIE´QERQE-RQEQEQE´QIEQEQKE”QERÑE%QEQEQKE”QKE”QEQEQEQKEQEQIE´QERQEQEQEQEQEQEQEQEQE´QIEQEQERÑE%RÑE%QEQEQKE”QEQEQEQERÑE%QE´QIEQE-QE”QKE”QEQE´QIEQEQEQEQEQKE”QKEQEQERQEQERÑE%QEQEQKE”QERÑE%RÑEQIEQE-QE”QEQE´QIEQEQKE”QERÑE%QEQEQKE”QEQEQEQEQEQEQEQEQEQKE”QEQEQEQEQE´QIEQE-QEQEQIEQE-RQE-RQEQKEQE%RÑE%QEQEQEQE´QERQEQERÑE%RÑE%QEQEQEQEQEQEQEQEQKE”QEQE´QH(QEQE´QIEQEQEQEQEQEQEQE-RQEQERÑE%QEQEQKEQEQIEQEQEQEQEQEQEQEQEQEQEQERÑEQIE¨¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(éEQE´QIEQE-RQE-RQEQERÑE%QEQE-RQE-RQEQEQEQEQEQEQEQEQEQEQKEQE%QEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-QEQE%QEQEQEQEQEQEQEQE-QE”QEQEQEQKE”QEQEQEQEQEQEQKEQEQIE´QIEQEQEQEQE-R ÿÙÿØÿÀððÿÚ ?èë¢®Š’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢Š(¢’Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(£ëEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQKE”QEQE´QEQE”QEQEQEQEQEQEQEQEQEQEQEQEQKE”QKE”QEQE´QIEQEQERÑE%RÑE%QEQEQGò¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢ŒÒQE-J(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š( QE´QE~´”QEQEQEQEQEQEQEQEQEQERÑE%RÑE%RÑE%QEQEQEQEŒÛP±äi“IäÂÏŒí^ž´Ù\FŒç¢ÒÓéÔ´QEQE”QKE”QEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQC}ÆíÅ2p ÝIý)’€apÝ0M->ŸEQE”QERÑE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE/cÞ‘*À ’§Š%X¸¢–Š(¢Š(¤¢Š(¢Š(¢Š( ÑEQE´QIEQEQEQE´QIEQEQERÑE%QEQEQEQEQEQEQEQEQKE”QEQEQE-RQEQKE”QERÑEQIEQEQEQEQEQEQEQEQEQEQEQKE”QEQE´QIEQEQEQEQEQKEQE%QEQEQEQEQEQEQEQEQE¥ŒUs*Ó%‘!¤€«Þ’GX£.ç ?ZZ}-QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEV¸2_-yT9cïXºµ×›7‡+/ŽíYº„þd‚$9DëîjÍmV•QERÑE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ@ëAéET‘w'ž%çèEajVÞMáläNIǽe^AåÜ9ò¥\­ÚÕ¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¢Š(¢ŠZ(¤¢Š))(¥¥¢Š(¢Š(¢Š(¢Š(¢Š(h¨çF`›G*ßÒ©êvï<1yc,ŸÒ«_DÓ,eYI©jåY¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŽôQEQKE”QKE”QEQEQEQEQEQEQE¨œPx¦³… GAÓÜÕ{«"—c€j)æòagôàSªÅKEQEQEQKE”QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQõ`zQQPÞ†6¯³–5G[åÓ_o%HoÀU]MK&ÀÉSœTõz­RQE-QE”QKE”QKE”QEQEQE-QE”QEQEQEQKE”QEQEQEQEQEQEQJ=ûÒ=ƒF§¡â’–ŠZ(¤¢Š9Ï=)sÏJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h^´ô”QERÑEQIEQE-RQE-RQEQEQEQEQEQE´QIEQEQEQEQEQERÑE%QE£¯”» ³±Æ}h9ÁÛ÷±ÇÖ’–ŠZ(¤¢Š(¢Š(¥¢Š(¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠŠiJ GËg“T/uòàÁl౪·7{NȰOv©jýZ¥¢Š(¢’Š)h¢’Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)“>ÀòÍÒ©êW>LAýdŸÊ«ßMå EûÏP‘¹Ð’zŠÉS™•˜†@eÉnZ®Šµé(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢“§4}:ÐzUiX} ä㩬]Mƒê%yÂ(@SþsY·æ^ÆpëPÊ<àÛŸw Û¬6–8 ;µNéÏ·AÚ¯×U[Ô´QIE´QIEQEQEQEQEQEQEQEQEQEQEQEQEQEQKE”QKEQE'^(¥ECæyd<üØZ¡a½íÕËãÚ¹ª¶hyæ#«áj)ÆùfÉè_Ç™ª~òö}ÝFý*…øßu/¯Uºè«bŠ(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢’CµIïÐT7ryVìÝ@}*9ßd$÷< e¿ W<µ[GmÉ ô#>üTZ{nFç<óPŒ4’Jxƒõ?•fÌÞuÄ×î–ÛøŽŸ ª2óK1û¤ãò«UÐÖ½QEQEQEQKEQE%QEQEQEQEQEQEQEQEQEQEQEQEQEQE2t/ Š>ñ_­W¿ˆÍe2½·rýEEt…í]G]¹ZÚbVfJõÅdi—E-o8m¹_¯Jϰ¸Ûmpz0åsIÑc‰rÝI÷&«ÜÆqÉÔÿúª Û¶D¼ã“õ5vºŠÜ¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥úúP½E*òjŒCJG “ÿ¡W(Ÿ+ÌWî±?–êçãÈ2àðÇúÒÂÉÁ'Š"ù â4±¹þõ\®®·¨¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(bðŠ‚òO*ÒWôLTwOå[;z ϼ¿”á±\°$ŒƒXœ‚=jIÝœ’ØäâŸq"ÁËc­:yFóй]mt4´QIEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQP^¶È1ÝØVn½/—d±÷vÇåTuy6ZªôÜjº’2È=«IȲFx_ZT·ûC!>Jöþñ«vvã2KŸ%?ñãVm¬ÌªÒË÷@*õtµ·EQEQEQKE”QEQEQEQEQE´QIEQEQEQEQEQEQEQEQEQIIU5Ì+ëX^"lÍg€µ—­6fŠ?JB yŽ¿Â¸Z£fFr:U!Ìf#· VV0–Ûe9®’8V +'ë[F1¦ÏAÍÿÙÿØÿÀððÿÚ ?è]w1[ÓÂ%ç ¼óÞ·äÌÁÎéQHNâ­Æ;š¥z\¹FÈ =ªµÆâÅ[€;ÓBo†@T êG4È!i,çÚ2€ ƒÔŽh­€à` úUXñæÇ+ËBsé“×õ¬‚AœLÇ©¬Ïùl¿ˆEM™bwä»e@츫‘Bf³2Ž]ò£ý¼Õ¤Ìµós–lþT–M¹_¸Â‘ôéý*Ö„C¤ÀŒýÒ>?¥XÒÎèŸ?x[†EÛãÌc•.¨ñªÅçHÙ\zSïJ@|ìr>• Àsò!9#¿Zκ…ˈЌŸOJ¥sn ˜ÚšòÅmn•€ÇOžkx­ÌQ™ö€Hè*IÞ%ŒÇ\à Ñ&ôQuÂŽƒó¨œº(Œºà q×Ö£bÛv¨Î>R_?샊AÇï2qÐqBÇÍž:VV¬Î][klÆ2k;Q,îÓ´ñÇ5Ÿ¨–.›¦[H²™Ûr€:tÍ%Œ.ÊréE„Rdb@íRÞàJA$o-ó ’ëï󑸷5%ÏÞç#qnil‰LY'äÜ? -ç1î'äÏåKlü²g8\ÔÒðZœÿ7òi[‘ŒÕ7™ÙÆÒB¯@*»JÅÆ ÐTV.x^8«ÑdÛ§Qž¤Õ¥'ÊNÙõ«+ˆ 9Ü)aןåÅ)`=§¡€üMS¿Ýçg5Øc&SÅCp —Ž*y v¨ˆ£'¯éSHcBŠ‘ŠÂjXÜIåíÉÿ?J’2ËÛ9I•h÷~uY¬¡6Ìœ‘U^Þ5pÁ¶óš¬m£IÆqV‹6á¼wÆELï’3Ó=jf|òy*Ì!f_-ÆJ‘øñVíU."òd\J¬¬§ØñV`XçÊa¶E#£–ÒÕ¯Œ³bM€˜ç‡ãQÍol·ù·À œþ•°@o7LwmÀÁ¢Q3;¦Ñåäí^ب¥ó¤‘û‡¢ûv¨ßÌ‘È#åÏÊ*ÁI¤rHÂô5e`žg%¾U'š°±M+ÙîOA“QA9´žpŸÞùyí“QC?Ù¤”'÷¾ZxP­ö™b:žÕ:gwÛå;Êó¸ô‚¦)û\‡vSÒ‰|É Y‚ÁëÚ–án.-–è…Xr¼|½©fY¥…g8È<ý)Žd2HŠ0¥ÝïP1•ÚD^nr;š…‹“ 3Yz†0xÎý½sëTo”R€ä}ìuªwA¶)ñªp_Ê1ÎñþÐÍAÔ€Žr=ÅCÓÉ$zWaœ\ UÊ?qV¢“í 7¥YŽO={S©… rXòI00Æ6†9’jPȃnyš[˜–é0nSëKq¹\`/{Ò΋8é·Þ«ÚÚù4›³‘´UáƒÊ°9ãÔ0Ãå¹9ÎF*f¼ÌíÁ}iãhV/œGëOùv9~ã› [挀rqíT¢Œ4¡¹ü*œIºM¿áZa”Œ»o«»”ž9Çs*O=ª´­–㊊CÈqÆ*'njÎÍþY<n«wlã*r¹*qÚ³î´Ìǃü…S”’äÕII,IíV4Öfˆ°#hl\㚚͉„°Æ7`~U=«sÆâ*®¬Î ·Š­}»z`ü¸ª—Û¼ÅÁÂÓ´× ²;““ ¬GÊÌimýÖnõ¼-–U%ddeÀ ôæºìb¹‹zJѺáCQÍm%²J¡ÑÊ0ÅW‘Ì™œ) v¹À5y¢æá¤!l1õÅS¸–æGrÏó~ua¤bÁŠü­÷ÙíW 1mÌœI÷qü9⬒ǒ¹Þ0=¨¸fI" G~äÓo¤’9!‚"Wj®3Ý&’êGI¢Š.ÄTvjÉ©Ê\à¸?/ãFŒ¯±0ΤãךM-^=BesË(8¥Ô­¼é`”Ÿ–2r=êÆ¹ldhg'åŒG½KªA½£›¢  ý{V…kÖ…%RÇ ½ê)äE#³m 0½2gX£wc€_zÎÚ¯qæ•ã¶k•†œ¹{÷®~B ¥ñù÷©¡V"Wlo ŸÆ¯X#y3ËÀ!OæF*墑o+ûb˜2òzN‡ÐwªÐ¡žå"^<ÎÿΠ·C5ÊÆ8Ï$Ô×|¹ƒ ªzsëW¯ŒkÂáЭ\¼hÄ2ƒŸ•°«ýhBE®òçÛü✲lÒ•U¾iI ì¹Çô¥ß¶ÅWw2~‹P6Ñ|ãB€zЬB u7!ðwÊ"F,rOAIqå‡ ´äŒäRLcó6í9#9¦ÊÈ\(^qùÕ9­c}¥n$·G JŒúçQIn®À$ö¦Åd!”,þ‚ýT‘Úy2Ë?„óB[ˆ›<öi²Û¹$ŽàóLxXäŽùæ˜ñ’Iê\ù!O©÷©1Px­HÍ ß­J0ЖÇÍÆ¿z“¢-˜cç½?åh‰ôÆ?:Šá¿tê ŒçµG;~éÕyÝŽ G9ýÛ/©žeÄÊ£¹ù›ÐU'—U;u>ÕHÊ ¾Çæ5=€l1õîj[MÝjkmÝh˜~ðâ'ßâ•ùz½.3ýÚ¹7õÛýjܼ}?­g].ÙÁ<­Q˜m”vST¥“ØÔÚlXV,Ù ÄŠšÅ0§qãqÅMfGÌx,j[Ët¼µ;Nï—4ë˜Y6'7\@³8Uëš«%„ŒÆI‘OAPIdñ.Aù–¢{FŒ°5¥9UTc’b{UÈf“nÈ܃ܚµ®*602MHϬçrä°ɧ«ƒ,r;m§#Üð)á³*9m¤cßµY‰1ˆÛþY…´íÓ,±IÝáGà*ôJ ÚØùp«L¹ &Ip¬?•VÔ ՘ç ÃôáUºYðšBÒÉ"Ì¢%@Ø,:ãÞ%̲-Úùjöò»­À*°in¤…ˆÁïÞ—SœÏh[sø[é<È7ç¥[­šÑ¢Š*® ø#Ž*ÈñÅ`Š q½‰#Øt¬íf]°Ç8ÜsQpž05‘Áì+0à¤ña¿¦òO>üV´gÊÑ27zÔG¦/ûU.É!#’í޳Иn¢‘z‡â©FLW1¸ê §LK;ç„ÞO|sKròLîÇ€_9¢viY‰=[4)ÚñÂÅðÔ°1wŠØ ÞZm\Šš"Ò:@;e6Hü¸–3‚ËžçO¸‡Êˆ#crœñNš0ªªq‘Tu;ƒj»•AfásØU+Ù¿ Äqš§y1ƒ2ÇÖ–Æåç€6À$Τ²œÉBòx9éRÚLÒD¬ž†FIc³vNYˆ€éK,‹jÅrYŽ c€)/ÞE·bœ³½éT´©dûG’K2°ïëT¬$vÆI ޵VÆGbQ‰"§ëßšŸ’:÷©ÎHõ< "z‚ß®I e:çOˆîZ\#3Ž’>´™ Ì[²’>´„€XžÀãëXÑÆf|žýOãY¡LŽ}ÍfªñÍlAÈÀïŠÐ6(v­(—j~ÔAæÇ˜¥Fðݽ(G˜éS0YœTÒP±õ8© ›¯]Äs‚ó)ôõªçË—*Ø`j²]Áˆ#¯ãS@D6ŒŽàÔЀ‘‚£#¸©¢Qvô÷¨¯.$¶ÚÑ.YÉù›µGq+ÛÑ®Y‰äö¨g•¡#bõïKmxòɲb™ÏÊÊ0sDWM)Û)ÇRÅs¼ír3Ú§PAaÜ€3KŒJ@<±>”å½ :±«S#)·8>õ¡u‘8œ¦výïóïVæ£a.ܨëE³±¹bFÆðû¾Ÿ¥%Ó-ã³`+ àÔ–s°¸ràsó€i³bxÁ$ü¬xZíÅÊî<ç * ¦ó­“€*0ÌmV-¸2HAöÁ¥…žK­Te¥˜±?JtE¤´‚Ýz»'éOº,…!–´j;¡t·ÇnyéI~ÍùGÒ¯×I[4”P:Õÿøù\wÖ¹ÿ’oc¼±ÌÖ6¶OÚT›iŒB@øÇÊ¿­fä¬LGPTí8ê*ÌÈZÕQG%F8­ëèÿÐ!ˆ |‹Àfµï6è€vS v,c§½f ÜÆFèƒïTBçt§ àz…¾bd;±ùAéžõòÐç>PzT`wpËRÉ3d…æä±íWbÑ E Ç%jµŽ H” õcDñ¿†Œ~u-ÜoTÈiŸû¥jWU[ôu¢Š¥t<Ëà~5ÎkOç_e~ê(AXš£y·e‡ÝQQ@ž|¡Nv“¸P:T:M¸¹½X|ŸxP:St¸×+ž‹Í[šBÎUOʼ1 ÍjßJÓ;$êÓ† tæ´.diX…û‰Ä}j8\n˜Ç½gDÃ.2àzÕ(œšäÎU9ÛéQ³æL³d/@;fü>ãü?¥9B(v·ÌMhF#†%”ƒ·²zäö«ªÑÆ?Zi2JË#.qŽÝê7ifuð3Æ)Œdv¿ÝVrZw+î*©ÞÓ³ ëÚ«Œ™»U[¨lÇÎð.ç<`ã5 ñÀ¸vrßwñD¸,€“K öÐþìFO|ÒÅ4,yÀïK±GòpŸJžO“¯)©å;@ã¨ùMK'ê85ZÝÙ†ñõª±1AŒpÇõ¨#b¹â­¾Õ žF*Ë€ªÄôÚ1S¸ÚŸji ¯µDÇ#Ú£nzS— «ÆXð=0ª8Ë1OAµU@ËÔÙ²°û¤?.h—+ÓÆ—4MŸ,Ž„ ¥¥cÎÕ,Ù1Ä?¡b˜}:àUgpìį¶: ›saž•­óä w¦±ùàv¤lg==qTïnÞj­è9ƒ´.Ú­v eôÛYØieýç#°Z U¤|¶N:T„nòß0=hƯ’Äìr‡#=…^]ën#v%“‘žÂ®ËV$•¨F°#æÀëÍDÌA'#Љ˜ç9έ+¤9E9 нv„lÎyÿ ¹r¸À=é©ÂŸAQ(Àö_çQ¯Ýç §Œo]¼í©##x+ÎÐM=N #øFj)<·Œl™Î3·ŒGÎâéUms’grƒßÖ«@Æ&¨ÎT…ö8ªðæ=à î\/µOqÀƒ‘°d­K<QUþèÈþU$Ñl!{Å6]Œà’IÛùS)F`I$ÓT-˜u'Ô“s2‘ʯçH’ã¡éX1Þ‰îD")vï“Ò–K(E%¸Í,³ù|(ÉïQ&ªÈÊd…6·R& Qòñ®ľdeÜ£®Å"²‡‹% ÜWÐÓø$<} É•&FC ÈêG¥L§1É(îÚàZrh^n ݵ”ûŠTR`.yù°Ãð§Ç ›äPeã èEZ¶µ˜™Œ²v=0EY†Ýÿz:•ê}ˆ©­•“«ò’Üžj½§4EÈ;T¼yfíV­ Ú;Òȹv%@É>Ô\Ä2Ò9`«¹‰ëŪì,Ķy¨-3¼±Œ8è£üj¦–¬ey#ãÍ'Óÿ¯U¬Tî2!ǘ>cVá;7©‘W´ù„1ËÙQþÍZ´—ˉѹ*Ä¥7-!ãИïQ3ÉtùÎù•GLw4Ö-3’Nì==h •*Þfâ“ì¬ã`)þ6n)<‚Ãn0¤ýâi’¬jBHL§ÛÐ eÚÛÚ.]Ó¾2p™pa€lrdltb£žDx1‚2gŠ£<ÑÍ ¤hF ÕY¦Y¢Qr#ÚP‰£.HwÉTÇãWlìí£–&¸bf‘w¬c¦*Õ½¬Èžg22î iï<Í‘*Ynî%`!N3Š’I¥“ˆðf£ he•Œ»~UR8éýj !·ˆÏpÆs’¨¤p=?­GòC –Cæ7 ÐXwNwáO–=©¶¨÷Lò¤må˜`R@¦mòœc[ŒVuÍè‚6ÌíŒcÒ¨Kv"Ÿ‚ÎØÀqT¥ºF\–=cÝO<’ùÊ͆þÖlòË$ž`,C f\I3K½rAíZÚ{ÈöŠíVtÆkNÐÈmC˜€=:u­[}ÆØ1LœÔ’)xÜç$ʇRÊÇ<ŸÒ‡F=ÍRdib‚Ì3ÇlõªÛZI0,ÃÉQ“q,zúQs!w‘b\ñÛ½G¨]o–HâN1Ž;⣽¸.ò* €)öi°«/?0Ïz·¤CÖêÊNà~pz±arB޽GÞç½=· ¼uÈ<ÒC™v©Ûò’ÙéJ#ˆ–;x~aLGÝ¿#ñQÛ;äã–ãŠdJ?ûGYAf•,’;Fw0 8¡ÍHìÅFâ0:SG{6Ó–Qš¡<ÒÈÅ,úU9¡w’RAËcE%¢¼­òqÇÍj5¶¸°F¸eÙÎçƒLËeœÃ‡½ <Û÷¹~Äd¥$W“/ÆæèHäõ©©u)%¸É}*H˜Ái–>c9%ëJپ˦©fó$”“Š¿-ì½ß%@¦˜X[™&3ÉU9 PMhégæÜ|£9Ú§!úõ¶ì°+ËÆNH¤ªB”Lw=i’î  )Ž< dõ¦Ë»`ªÒ¨\EÄb1÷ü¦ªKJ%ËU&ˆL€Êô¨ôû&ŠiR¥€Âëži¶6ž[9“ÔUz,­¶gÆsòŠ¸ÎØl“…=@ÅXgb9œzTû‰^{i\çéšc/òÍ5”ãõ§òTqŠvILJqå g1$…ïLã$Ÿº9¦g’ÇîŠÊ¹”I$…¾ñª¾÷9ëÚ¨ÈþcŸ\ñZÀùp©<¶ǽhçd9ÏÍ€±ïWËŒä`nõ›q3;„@UAʰõª/# €€9Sêj›HÅÕFGqZY#c8çŒûU쑵› Á5{C}3K’wž¹= (ÇÎÇœô“øXúÓ9ܤÔúgšŒd0`p;šAÔ7ADÂImdhÎÞÝ©ò¬jïN¨¢esnÏnõ“exA0ÎÙG$ö¬ë{“–ŽBpÝÍgÚÜrcœóJfšÊ_.F-ç“Æ)|ÙmäòÝ‹!éÏjw,å¹,Óé[0òÓ8Ú3Á‰«¾6tÛß5r¦NÖ­VgÝ—q•oZÐ#FÖÄ1²Êþ£oÌ CϨ¦Úíó@ö® ÿ>õž¢IZ4œŒûTvk½Þ4 Xò3NI…­ŠìˆcØÔðܬÌ-,H¤™ ïRÃp“7”À"/-ž‡² $ ¹‰`Gp:U;¹D·Lëò«’ËŽê*Ãù“1nËqõ§Ø.ePN1ÈúqV|{, Ê“—>‹éøÔ—N/-™Ý)ô‡ãK3}¡ÖÊ™Ïôª×,d}­¤àúVmì¦YÎpFìyU+™ ÊIÆ;¥WYüílò1úÔ +ÉÚséQ«ŒzLSnnà ۸R\N#S1Ï›q8N¹¦i×i, üàð´Ý>9˜ù³À¤±›ÎÜ1–Ï4¬Svq’1ØžMI!(XnÀÆ;ôù8f•E’YIùqÇÖ¢þò“Æ?Zb7PMÌc²c™ÈŸ4]–¤ôf?ÏšmÉÙ©¹<Õh“|‰^rkFðîb£€xý*ìçtÅ:•jc¾R§¥SKÞ€äúÕxÆû‘ƒ€¢¡/pqÀQWÇÝl«h}ÑLûBî øÈ¨Ì£'òÅGæ@¸§O˜ã$.Böý)Óƒ ÿê§M•]ÀqL¶Ô"ܨq ×±¤¶¿Pʇ÷dΈo;ííTuK!ÆTÆÂI!{UKûP’—B IÇ­R¼µ &õ9_ju£G<~Dê»e÷ëfIÇ(”e ©-ÊL›d௠šÓ´Wóà ŠzöÅ\´F3*¢5'$úU»ec&æ*ƒš6”fèAù2>ë*–&‹ìò¹àç÷_ì“Éü*HÌfÝÛ£¦[!K€”´@î$þœ²%ÖèÝs;‰?‡ˆ‘%f³„æ¤Hæ6´)È úûU˜-å–ÑØ(2C+^⬤ %«p AÜõ¦ËÛ-»(ù9÷5ì)lÐìå øP]Ä"–"4Ëi:ŒýÉ QMÒ'ú›FßvL¡úæ“I˜Gy$GîÉZxÉúWM€ÄqÒ¶ÈÍW™$Jí^ÏZʾ¸Ì2ìNõ5Bê_6R«À¦…„ÆP»øÏ©ª„Bb(P~2;Ô å´e €[½2;u„Ôœ7'5\[ˆrƒ8<œÔ>HŒ;ÓUWp¥ˆúÒAÚ&QÙ›’Þ:U=¬K³G?v: ×¹¶GžÚ(•¥4HóÅsM»XÓ‰½©š¥Â™Þ1¸ŽqQÞÌ «x'ÞÔâ|¨åb@oSô©Aû-œ­õÏÓŠy>M³‘ÇÖ¨JþZn‘~P›˜ŸZÉ‘‚Œ²àɪÁ' \ŸzÅ[†—ç ïf ÿAY«+IÎòqÿÖª )wÜN1üªÐ´™]c‘‰aè?úõ`ÛH$ 䓟›=ª!ÃcœʬYÛ%´ŽìHÊõ©ìáXœæ¦´‰`,O~”^³n€Ê6ýM6í™´TmÛ–o3ýß–’Ø3ÉØãŠHÉ'8É8∻ œzÒjA¦Bd#tõÇ‹àÓ°p¼ëM¼PJŽ©4øLy•þùã‚›i_¾÷LRZÄT<±â–ùr‹‚@Å-ÊåAqKr¹äd `Ól"ò¢$‚Xž·zKH¶!ÎrOSE´[#=rOSN½“Ë€(Ææ;inœ,JÞcŠ[—!GÞcU¡óâLg#[•Àr3ž=ª÷+aÈÝOŽõË’ìLdí+íR%Ë%ÎPœ>”䜹!ÊN1QjVonÞbñ°È#¨¨ï­^:È܃éQ^Û<$8ù‘ºmÓF¡oŽ4Û{†B¨à'-çaµ•'5|ÚG­±H%p3Ðf­IC+\J²ð¬R0 ‚Ei@ >B€*úœV…Ï˲ƒ@¨¾øÇô«¶Ã}½Ã0F¡]gŸ YÀý?J§fˆÉµKIƒ×Òª®Ì›€Ë0©­ÞÞåd;$ù°Ý«CNŽÖÖÝ®üÏ•†J·aØUÛ4‚ÚÜϸò2A Bó3˸ÊÀŠ; Ì{§iwŸè=3Yæå¼Ì—?Aõ¥‰žrÌç0¡ÜXÿ*kxå¹O3~æ1œžät41Ë"<ò’+žæ£Uß-¹=ÛðRØnº„÷,1UmFo##¾jù˜¼n ·@§­t ¨ùÖ³lB¯÷@>‡½lÁ,RñjfÐOáÞ¨›|.NxçŽõ_É8äûS£„%›vÞ@ì Z´±îÎw2r£°lTööªK³Ì¿wØÔnX«cï9Á¬éwÃø±š¥*“>óR¦Bb] {õ§ÄËÇgÝvþ=iÈûe%~êŽbî,Q˜{ô§µßÌ ýiÏq†Î ¤W í#¨^´–ò*HÒÊœQïD.Fw^¼`{ÒJÊá“  ´×5$ó,êS¢†Úvô'¾iòÈ%\„Î+>ý„ѹ$" ­R¼a*9áP`z«tDˆI¯O­PµQö…r1³îçÖ©Û¯ïƒÓ¥U¶OÞ‚8+ÐÖ‚>#»‘†;˜ÿJº‡äb͘înõmJí;›'$Ôp^ ®RÝPmbJ¿~)±] gXFÒI ޛǙ(„”Œæ’e,çÔç›"åÉ=óƒHã.O¯ÔëµBªŒ?3R䪣Gõ&GFŽ=é {ÙSñ¦ˆüÆ øÓ@ÜØô本Ïó✄üþ|S—@¥’EŽÜî|œÔnDxB>lšÖµo;IeÎ^6ù«VIôr?Ž&Á>Ý«J&Ó€'æSóTFÚØHà2œàwªæ u>cc*zT>TJCž¢¬³+O>aœqØvýi÷ ¯,`sœäÓæ*ò!ûÔð7“9`OåV,›Ê‹ 9Ç׊šÔì‹jÙ==é±34®HhÁÛéÍGf…¦“!“pÆ*;E&G ¤gŒT“â¶ÚɹˆÏ?έj K PÒ°ü¬_4Vöf,ìáPÂyŽ&’RßÄ8³mcbãˉžBØùºTmcbÃbe‹rMMy.`òq‰  íÍhj·cìF×”°/µ\Ô®?Ѽ€˜HÕUC<ð…8på¿!ŠÍ³G–î%C‡ œý*…š4—Q„ê\^dF8ôü*älŠäVám®®qÒ¦Ž@¶æCØsZËré†q…ýkCÎXù£åýi–/æZFí÷Žw}sFCéпñ1%¾yþTiä8›ûÀ“MpÞqÏ ŠÎ¸‰¾ØÜtlTäFûKqÈÖ #Ç,Ý)Ó©†ÑU±¸·&¬ÝÂm´ô€Ï’GZ–å 6¨‡‹dÖܬó>9HºZ¸´ŽT|±ôµ‘<…ˆ'Ý´¶Þd’b1ó0w£S Þò…Œeß>”ø7»íŒe›>•&¦ËÛdÁòNKyZ—R" ¶±¨&#ó7÷‰§j "úFq»ûÄÒé†áÝÈ>T'¯f&¥$yžGÁòá“ýãNÓ•q4‡øcÂýM\˜‘XÃÏùö©1˜£V,j~6 ôäšqä±éJÝ ¯JisýáP’g]Ãætýj ™†áË ·¦–\€­Œe~µjİ·¸N:еi»ì³^*üVh›9@ztâ´aÒüüƒ'ð)éžqWRÀMŸŸ¨ëQÙ©xà3²ö±T 0|ë)ÙñU¡\ \%[êxm`iˆùX€ œ÷«–R-•³\2ó!9ç'5fÝ…­¹“ëÚÖ’ÜË34’¬ûQhd¹’Yd`Œ8\sE©yäràΤ‘Ë rKàp8¦ßEç^Jå°8SnS͸“w,0*q”@‘¢(ÞÀ1ú{]%šA* ŸyϦiÏp–þTQ.X}ãP1ÌÇ9ù›púšÍ¸s$ìÇ?33~&³æbòzœšKVUÔÊÛJ±¡²®©Ïñ+müêÆŽê/dÈùjÈÿXuõ§DŒó,j –õ©"Rò„^Iª×’íÙpyËü©ºœí <6í­—aßÚ¡Ôf*«d¤\Š·b›mÎy?‡&µ´A1¹þu§§ XF*fPX„û⧺…$!ÏÞÁÏ8⟕@>ö”Çœ(ÂóßÖ¹Ìù)]Ü šÆÍ0É㬈DVl‘€ BI=ÍnGjin°¨¢%©Åk˜V+ |™ÏáU,ÛÍhTó·çç â³¬_Ϻ· 2#Ë}*£y·1dp‚§¿É9 }*α™nî7céRê;zÌ–Î÷ç~~ltjÊ6Ñ´®!ù±Þ³„ÎCuÏÍŠž(áŒPAúÕ›xâó GÖ¬ÁHöj¥õŸÚ/exäöçš«}n³^»Äãc©wn%ºwVI©­ KxÊ&O«â4è#X£( í9þñ©aˆGÀ0?H0žÝ©üÏnÔî1úR’@ó¤È玜RgöâŸ/g­;?ºÙÇ4á÷BçšF\î$tbühdÎâGˆ¤ ¸dŒqUÎÁmœú †daó¡êØ?‡«|¥OÞ8Í6ƒ^G“¹c#z!Œ=ä*NQHÅ,(ò1œªô«š¡ 7cœ‘íVõvJnÆ 8ö«ÚBŽ~lãÚ«FËs‘)!Ý àô8õ^ØäCèwPÛ’!=ŽMjM‘*y$cªõÁ+ÛÜñJµ3LŽ{Sm縊GêU‡~6RÙ_ÜÂ\d²·éN¶»–2Êy ÓÚ¦³R-‚r ɧ@1c#øýzÒÆ1dÇ8õ4ybå†$*áW=û~•FnÐ bJ®}鋸Aƒ» À©í–8¢bã_^sWôùa†i Î Ï5nÎH£€³äl8Á¥„ò¼ Œ1ëN·u½¹š~6ãÿ?Ju¹[‰$›Œv¨Ë¤–FùEÏcYÎâ9çr76p¹íTKÞV<±8ÔÖ›“’ùsUd$ÉÏQÎj´„™3Þ’ÉD—áð&:· Ç¿R …I«Z"nºw?Â*äaC ÀQÅ]¶xmæi³°`9&®BÑÁ#ÊÇ Àž¹[Æ•”Û¬i$/y$Î Üűõ¬wqö§‘†wg®Ø¹0HBð§å¹¡I'Ø&leTå3[:\ŽlYˆà–¬G cÓ¯Cr²ä0 Øç=*Ôs,Šs€qÞ³¬ yÓ"¸ž¾œÖ—çµÜÉlÄ3–ãk#MóZy’GÌyíVî\Áe+ç%c<ûÖåËm6bÎ]’#–'©­K†0XÈI$ªu¬=6i?´fùJ•"¹:v[ÐY¸ ®+ÂfûAÜ{ÅjÍ÷#ŽÙ­+–,ªHíòçÖ¯ÎÙã·é–Ÿ\ÿ…@£Œ‘ùõÿõT@dŽj¼Ò*ü«‚zäTR°^­G#à`Ôv§lŽ[81ŒÑOzŽÚÎ[û¼CL„à¶yàTw7Í•À\Œ(ê)³ÌÛò¸#Šl²Ã¦3Ò®ƒßœ`j|œçÛ5?LúŠkddg‘LbAöþ´Âv‘Ž• \0^ùÔª È^AÍHzõ s»#øüø£cùÒcŒc£R2#[WÓÊ¡µ\ÐÓŠ©€`œsDh¸^ª ùi‘([îçîÒF¸ Gݦ>”å¤È9¤—çÜ$9f9ý)²|êÁù-YVò¼r+C/©ô<Õdxä *j”É0ç•5³%¼nâEàýãÇ^+V[tfóÄxö­…I8ãu:$SŽJãçúÔq"³áœ®>Î’5 Ø,F*fG·á\tÛŽµ<‘I:ž6‘×5##FG†ã˘ÔÃ’N~ë(ïQ^¦a^£øXjŽì‘P)êDRFBà¾ÑÖŸÓÂUpdÚ:㹩!ýÄÑ€¼±~ÄdšiŠ«SÊŸçLŒ-ÅÌìˆÛ”ò§¿½GÙe”¨'iåMYˆ ¶0ÜZ6Ðù¶²2·«±FÜ”ì=;ÕiL¨ªNÍêOÖ²%ÚnQ;wO½g¶ Ê(?(9'Þ‰—˺|ð¿ÏŠŽñ<«™éš‚å6Lãµ6Ç#R8è©ý*ׇ÷j6>îûô«:&áw)t§õ©ƒ)a÷ŽÞ«O/˜ vÉÀ¨'°ÈéLŠ6L3tëŠ,íEÌʤŽGSíIil.%¾ïó­Uv(@é]Tq$0ˆ£QGºEHÂ(Š‚å]`€§–=3íXš¬nª»HÀ’zgÚ³upƒjN}j ?þ>²rQx÷¦h[EÙ9å€À÷ïQèûDÇ–Æ­]D“ZËŸq—šÙ¿$±_î˜É5§vªö’†é³5›k¬3€ä Å=kµHVnÀ'¯'¥cÛ$k.sϹíVܱ‘^Q€FyíØUÙ„‹*<ß.õÜþJ´áƒ«IŽFà>µRêo(¨UËî;~½ê´óyeDc'qÁ¨%”¦6.Iª÷Aö+H¨¦v¨æ¡¸ 3mÞW;V¢œTœn+ÒqÛ@à’Í´úš|Ñ­¼O’Iõ§J‚ŸØU (LÇ{¯È9-ýê£mHwºñ×ëU-Ñœneã·½jàŽ1–8È÷«Ê8 ûUÅ€1”³`FIùÓNYðy$¥7œvëPË#4ÄNp¯zk±óà÷éHÌ| /½NŒL9'Ÿ_åR†&““œéRbÎsÍ;*T.ONsÒ•(' ÎzS‰R Æ)É-î|ÀýjH£;£-À0?Ztió.zÅRÕ¤h¥·;¸çùÕEŒrCÏš©|æ9¢çН}nâU?$œ†¸¨naľbòGcPÏ$9gZÐGó-¡ÆyEÝïWZ]Öñ*žª3WBaŒÁUÍNùHà ncÉÜ⥙<¤²+ó;‚YO¡8ÿ?J’DòÚÓhË0‡ãWç@ÈUxaÊýkjökfTu“ëZ71ƒ ÛÃ(Êš¬v»ç €I÷ÅfÜ“)+Áú*ŸîÚv2q<{š”(iŠä>R?¥ObK¯/på•ì1Ú¥H÷ÎW pE2HM¼S8 ’„ß'¥$öÇO·¹•X6å+žüšIaû$:ÛÆ3ëRZ¶XŒ`1ŽõgL}ÎÜmÊŒc¡Ç5“d‘Œd U …'zŸ3‘õx ÌÀ¼r>¹¬k­É!u9ýj÷ž"—x*’vûG—!êTüªYñ3+û Ô–±ÝHî§œzœÖ†‹ŽPà #ëWtØDl0:¦ßÖ .0Ë÷J |V4»æ+"VÝ–•O§•hƒwQŠÙððGFrPmÕ­£…hÙÇnZÎ'°­w}‘»ŸáRjûˆÍè ª’U¶äȹBw–mägåà ½‘¥›=sR[B!Íi’x´tÛhí¡™ƒ8ɰæ¯ÙC¼"S&\uö§ÝÊÖB>é\g?¥OªÎM“×1¸°éÏaR곃än­ëUíñ RX>Ò=‡5FÐ,PyÊ¥˜H‡°äÕk`!*X¿#Ú¤¸mó!Q’ª2¦¤ÔæÝG°V1¸zdæ–òA%ÂìÚ£>ÕJå…º¼Ì(~U÷¬÷o%Z^÷ªŽLQ—=Aâ²à•î.7c·'¯Òª@Ï,àK‚O`9ª°;M(À9<“Z‚tPC°i¾µ .4 Ò?Þ®ùꃲƄLQŒpN8Ç4À?x«G_¥~p½ºš\à^@¥è9n@£8SÜò +m1RÜÒF¥•¶õ# H£r6:°ùk<|Ä£¯ÍëUGÌHÀÎyê¸åˆ jìêJã¹?z²3ämÇ*œbÀíÍ8“Û‘Ž´»²¤úr1KTžâm8—)´«Ž‚¤¶›ÍᇠSá“ÌÆUmb?>×Ì%p};Õ}Q<Øwàåzæ«êhd„8ÎA¦in$Ó˜?ÎQñ´÷¦Y>lŽF⯦›g&ëÄdƒŒ¾¨q÷6Üb¥p»y©†v—5!fh£+Ô9úÕiK4PºðÁÎXôÎxþµaK2ÂËÉÏÒ­«e\sÇCô­uß"œluÈè~•,ÈË'£9ꬕÂÇÒ±f}È€O`{gšÍ•‹©Éçð¢Whã]͆ ÐSgwWsüÀcåíMÊ–ä`Sw¸·hùtÄçJFº—ì†ó¦íÄžxíLk‰M°‰¹ÉcRÛÌ¢ÞmØ+ŽJб¸Xí¡‘ƒ}Â8~Þ`#~æ8¦æÌ@G¦©4K,…ß5è=yª•ÙÜð:  ™œŒcéMòóq“‘ÓéÅ!tgŒž€ ±ƒ ºc’ëô¶ ¥”gøÆ:úã¥"ÇÞ㊤SÊ’dQ…RáÖ°.¡ÜÏ*>+⠳ʃ 5%™÷;á_î{~•gC˜[ߘàJ6þ#¥YÑå\˜ðý*ûÝÓ¡­ëÆ nÛŽ¡>Ƶn1åz g²ÿ¥"Jr?ÞçŠçV=ºŒqÊxW úñXèƒûAN€ü¹ïW#³q·Ý5·fƒ{¿"ž+NØg ” T˜ˆ"ÆPÀ·cT/_ìÌ–ÙÊ!ܾ*¥ÓùL!êªsõ© P–éóu%ËcššÜìᱜ¹lp3SF¾]¼kÓ9ÅG %‘þr¤g8ôõªQ~õç—k”ÆàØê}ê¬_9–Vf2 gj`Ék&ÐK¼ÃýœUK²^ÖM –y†û8ª·`ÉjÀ™¤ý)º}£CûÇlI ¨þÞ‹Kv‰7¹ùß°ô¢ÞŠ"žf*®ÐèÒ0ÎãÏCžµ\((\òOžœÔ;FÒÇ«UÔœ­¤yÿYв²âó÷ŽFjÊɈ”JjLæB„ä×éÛyRs‘Å"±ÜTó‘V¹Q•ìܟƧ\«_án?ÏãR‚Uƒv U®!fžWQò±Ü?*´ÒºŒ+Ãñ¨äŒ™€Â–â§ÈØH `*Ga圌{ŽôöaåžØéô¦»~çp † zRgldŒ|ÀRò?Š©Çs$W÷*´7Er¬8ÛUâã¹ÏMµ¦ìœä¶H?J»#¸’NNjÛ•Ë/|皆Ò›ËPâçêj¾qƒqoΠڨTqž•r`ÑÁNXüUÛ¨šÞÞt1Ë)íVîA·H݆rrA§»ˆváXç…Mç(0„#Øü*]áU8$ñSFÁ•£ ¼æ¯Ç&ø^7R¥FF}*Ò·™+ b«p‚25’°Æx Í'Ê£,A–%ÊUa™]vž3Š»iFÙ#`Zyi8Î*ÜÆadeäúR+#ƒ"ª(ùŽ=ꌰyw+ȦrqïTe„,Žð«N„° 1l*i"Eð>|øw©$Bœ›­$%wàýÒJ,YLÛ_”-ƒôíKhÀÈ3ýãRÍ’àØÿëU»×ÿJY€ A>ÄÔ×ý!ýÕ"«¹ýó8—?í Æ˜“pìGß$~5™)>k‘ÈbjpéÎd¶)–VïuykÀ,Ýð),ài¯òI­7Á8Îêk¥º‘mªªYˆúVÔã(üà*üÕ›92Ú–ãrô5ÌHLê§?2œgñâ± 2´drA~u©åÍu„žØêk|ü ûéY3ͺmÛ²Tþ•Ì^Nd¸/»$¸”´û³’éVX¾ÈFì‰[,Ý:ö«ÎÎ#¶9Y[,ÇѺ ºw~â>»Ï&¤œ‰ÕF-÷î­Þ4]¨ 8õ$þTûÏ’P YOpÀªFw;.ìúf²<ÆP±ÇË2äŸJÍ2cäN¤dš…feq¸‚GÍ3Ì üÄÔÝøûÄñU¾ÊòL•‰Ç­B wdRNÎ*3'<.N*gÛ%ÁPUPp¹ô§ýéH$ïO¿<ëKnd’æ3'œm=…,%Þt/b)a,ò©|ƒŠº‡t„€:{Õ˜Îé0¥XC¹ˆì)vîM;nWœqUo K)ëÀª×D¥³‘ì*µã2Û’=…-Ÿïì6óiÖß½µ#ø€§C™-ýÀª( ²¬`rN UŒ%9æ«Æ Êëcašf*0#Ú ­FšfuX‚ ºÈd™ä „iJ™˜EïË”Øãk‰Ö%ncÓ‘)šáT (`I«šÍ«‘ŒñúÖ×Ð2Ügpý*þ® À|ÿZE9e\ä¤}1ÍAÍ2FpI*ÜžØéLŒæP„ä†ÏéE»nö•Ú8Ú¦½W”3+ખÚ8Ÿp®Ù!¹àS—¹Fßè*ˆ]J"8,ß‘ª«–¿R£œŸÏ,nŠdf8eå—×£mÿ•dÚ iWБùw¬ûTÌ‹õý*kÙÄvwÆNï|q[×÷!lndíX› }O©y0K9ÜpsÅgiPŸ±¬Ï’Î+Ÿ±·Í°™òUFMeZB~Ïæ¾HÅ]'vÀ Tàw¿Z¼íæ:.2C)ÀïW ™02Cǯj]A¼»lË5M¬“ ¤hÇ-#–?_òiú¡1ÀŠO.ܚ¸R^Mäe£ õ¬IAËîo¼£i‘(l>O,£§Z@²K`vBœçøju´AÝr¤¬iÀ÷©!Œ3Œç®1ïWñ÷xç¦1V±òŒ¥X#åÆ+4ƒ –2>ñïTGÌ<}ãÞªcr²zš’0-â’eÚ›G~iÉû¨ÝÀÆÕÀúÒ¯É0ÃK¦’gefÎviÖ'÷Ì¥³…ÝŸzu›#.ìí«Ç”óý8«]céœçôâ¬çåþ*«~«%œ‚90a½ª½â‡µmŽ‚3ŽÕ^ñCÛ­’j¶‘;™ÌmÓiëÞ¡Ó%o7f{‹L—ØOlVŠ¢¥ÁÆç,qÚ­åÝPæ«*6ÌNÞzžÙ —QÊŽ>½EXµS²`ÙÐ~µ< vÈ3•=~½©pÞbª\Ô`²Nª€€5–I€\€5bé·Æ¤äûb´õWó-cl€‡bztéWïÎ䌕ʫ ûÕiuÄ‘î*OÜ+ü$rA¬›…-w*T“òc ÀÍgJ O"ç œŒzSá‘–2îÀ8ÀïSY\ÈåþR;šÚy :òÄÖœI"ÏPªsïžiÄ {ˆ?¼#FϾy¥#ɸ‹ÙG4HY ˜œp9ö'5ØlnU°d›k)õ jIßË´•Hä!¿ï£M…åÜ€ÙÛTôÛt¸ºÜ€Ù+U´è–I×<ílÒ\|÷Rz S5V2êS±=P=ª=C/{)>¸±ð< ßôý{QnOú¤=,8· ¼ùC9ŠžñÌ®"|¡ Õ5Éó¤òñÇÒKjdER¥Tðr{SΞYWpÚ§ƒ“Úö J–èÜ0©V“‰F\±>柟“pn›nÏ®{S£µ0ÊÓž6Ìšš&óbéß§c ¹µ€JUÛfYàR@Ï"«O ‘Ìk÷SŠÆÕ&^J«‡äZÍ¿˜Oq±~ìcˆó¼³ßž})4ÈËß*7~qì(ÓãÍÖÆã?…G­«Mj–éŒÌàö^¿áWü@KÚGl‡sÙGÿ_kW>dÀ:ÈÃ8ô©$l¤AŒ F1ìqP8 ¤I·øQ}Àÿëf£§~óùRÃóM¹Ôž=ý?Jvš¾mØ‘ÔíëÛô§Y.éÌŽ8ÏÍH#îòÆ™¯7,q+qI>õ¬ÞdŠ‹Ò>Iª®#*EQòãžõLù{C¾ÉŒT'f2ø ÜE 0Æ1›ž¼Sâž6S cù²ic• j1Ži9ûÙÇ4Üž¹Ç4Üž¹ïQ< òoû¥»TMg-÷O¥FbË–éP^‘”„ŸÝýæJ†àà¤yù$T7ùW?-&™·ÍwŒü€IdT9uå@¢È€åÓ•5vVýÌ®q¤ý 8«R6#‘‰Óß&¬Èv£’zvüMQ·dyü”S—ʯ#õªÐy|”Só¤ÿ/Ö ‹æ%'*~¸âªÀ|›Õ‚EW‡1Ý`ðA"ªÀLw8èy­ÍÅþr7r}x­s'ÏÔ’éZ,ÆOœrIÅY·]°9b7—É&¯ÚíKHÌ™&®@Zbæ–%/;yØT~tÛhâYç;JÀÓ`‰¦içq^)ï¶Ž>w;H€ÓÌ¢km3™\€G\O2 m¢ƒ9à·°|ÌXÜ•ü«=½Áp2:d~UF&->ìu<ŸÒ¬*yK#²ã<­iÃØãžg@:!ºæ¯Ç¶ŽG`98^zÓn8Ir áäÕKÖR†W‘w¨ÊªýúõZé‘—ÌgNÊ)…ØÅ*¿ÞŒ¨=?ZŠIàu”á¢Pª¥G4…à0à¦i4¾^fn -YðÒe§•º¨QSè*JK!ë»ûÔ)ºUÎ MrÔÆír¼© 7Ö“U€£ס84l›úÔVZòÃyúö¦YìUê Å.ÕXŽx%‰ÍYdE²ù‡ï [Û3*­°ù~nNj-ÇûäК e`~ùÀ險eaÕŽ;U·o2ÙÛ 8ú×™ÍÆŽî½Pž>†´f&m8°íÏåLŽB;q8Ïj‚ÒïìÖ30p6g±ÇZŠ Ì6O€Kvö5¼kÇmÇœãßީ؈á•%‘Ï%WßÔÕ{=‘8•”±9 {Òþ{È1¹IŸAÁ§Û´‹w$ÊA'iî½émˬï(Æãœjt¹ó2@Ê¡À>•.£17?èíN»“3 ã„)ÀyŒ3 (þözÓàr–*L(6 ÷=jXs*–a”*ëM¶lo.ß,GùdQ¦È#ûDŽ~H[? RY8EšF?*>µ^RÛ[wÞ''ëT¥bäîûÍËg×5UË3`˜žk2ñ¤läå×î€sU. ·#zôªÓïa¬ÙÚ4Eæ— Î½;š³klщ%Är=j{h {är7c¥ÜÇß1³ÑV’YÒ.dRÙè«I$ëÞ‰è,2¤èd^OzDu•K¦@R£¬£zô銣1-q(=7Ui2fp½U[;ÍY±d€›Š’ÙŸqŸ›ó©­$c®?I76R¡¾|~µ+ók! 7ÏÖžrm‰<üب´åÿ‰œ±Àõ Å?IUþÕ‹ `î {â§/—8Á qøT:†ÇÕ<”æ ɪw¥ ñTNxÉNè·Eç<š×ˆfÑœS >¹9«Ñ®,Ùñ÷Ç×'5}F-ŽÇŠš˜äJ·O­[²!íX¢OçSÛaíý~|R¼‚,¤_4Æ=)ó\ù*a·ù¥~úÓ¤œ òaåÛƒíJб6ç¥*3Ï’ £1•D“É Àö¢/*ܰaºFêsPc‹–ÇnµE#ÄWSs±HÇ5U¤KØ€>´ùß|Qm| n,{Ô·÷^t0 8 71õ4ëéüÄáTdŸSMH÷maûÒzÀª©æR H} @‘Á”çÞ›0&7d–Ý#cjI÷„ëžw1ÇÙƒ…äuj³b”ä ?Ÿ¶´¤„c%ëWJZqëÍ-èýÁ÷aÅI¬¡6$¯]â—RBÖœxU\¥·S–‡ÌŠÇ*y"³")ÕXü½êyX,Ä‚¸çŠÓ¹¸F.Š¥˜¸eúb¯I0c€¤’Û¸ô4:+rWåQ÷O­Vš5.Í´lQÂã½A*.æp>U‹w-¾2yq¸~ôý.à´6î~úSïŽiú|Û­å$´ØÄ¯Üa1Ïýj„òųn#îqQ –X‘ˆýiñ…Ãç}*H‚sœ‘ÇZ’0Фç5Òn¼Å?(±÷ïL‰݉c8O¸Onj8Qšàȧå?.is—uÈʶÞ=ª9 ]IÉV+íÅG!%Ÿ$Šp*(•F]‡O¯9­_É´2ì: ¼­åÀˆ«–#¥G›ËÆA;˜{öª±%ÌLIïp?‰»Ux‡”Æ>HûÇÝ»Tr3lÀ'$¶{TAOÚ6àg$¶{Tj?zØãjo˜ÅµæÎ3žŸJ‹ÎŠ}›Z\ã9þU˜‘«lŸ=ª{Ie{FóbÃ#òï¥Oo+µY"ãÎ:ñÅO ŒÖ[]0ÊrHëYÓ•‘Éf$ÆzgŸ.×'q$©éÒ¨ÊUÎI$¥O¦ÊÍ€¡Üp~•5ˆó3ü!Þ¦²í¹¸©Ö\JUËc 3€MJÖñHÂM­œa†x&ŸäÆäHÎ0@50RÊéJÀ8èÀ úS˜ ¤àR¾eŒ gÄgÜqúÔ(’Æ`yûÜÌΟ†³|ÿµÄæ¨éÿò€’F_l•[N;oâf$|Çðâ«Ø·HKçô«Ñ"Ü^.Ä<“ŽÀÔðD/o•#^%¿šÅÕÖÔ\qÉ«¶SËä -ó~4žn`¼IÏéHÒfQ¨ š’Ë‹&u$Ÿ®*þ›]!æÉ#Ü•rÒ=ºq~ü‘LWòÝöŒ¶zŸâbj”lË3ŸâŒ¥W‘ÆV6ûª>_§j†Wuú”±‡tx ñZX#y@òó»¶)aG—3žÕ;-$…b­¡é $P²1Á&®O];i¹89ª¶2ùR¤DçËøŠ­¡ÝùW"È“ùÔ:MÎÙ|œç5 è`ûâ·§‰fô âµeŒHŒ§<Žª3*,hàü¹ ŸâéȬ è Žtl€B·÷›×õ¬›Ô†8•Õ¸~”©.G• Œõlu¦EpNØ£P1ÉÇZHç'€`sÅXòwüÀ‚Qžõ¢–^zïVVSÔÈ5qm¼Å,0ÞÕ^P¡AládÁÇ~k!$œÁëYªt»°EO0Ha ƒÎ­kÔ†×OPÌØ ç¡v Eï1à{Tlä.ÕAíÜÖa‘ˆ À=1Ôš¢ÎXAÖœ¸‚¹p3ÏsVÝ…¥°³½Fp¼j̯öx"0ê3ÿ¨â„¶Èóßsÿ…Eejg‘W=Ë7¿µGine`o™½ý¨$¾¥npxF,ðÿ“W!!µhg 3Ú¬ÄwjyÚ±–`i ;Ýä<*–¯&ªDwË,§€ ¯T¤ùd.?co"F,…ÇãQ…-8è ž#;Xò¼þ\b¬Úá2„ýÞHý*Ä ÊOÝæ©›Y#™›ËSß^ÕNX7vÀÚ9ªI#6~è=~µ£¦ª«9è6ªŠÑÐÂÇ$¯è˜‡5J¯U¤|ÆïÙœ·“3î {5™3nÉìXÖ„%œkŽ6×AnZDcW5²˜M=û5?ë÷“ÔŸÒ¨éªEè|g'ØôVÅJÜÆq×ëVfl*‚x#šÔ¼qå 'Àæ¯\7Ê ô þu]L{‰ «c桬¡ärÊUñÊ·z <¢Ìq†ô=ê9º·-Ó§J«,O)i-Ðàt^HžR¿.Iê*Èe¶P,G +BÚHô´&Uýóu®@ñØ&™j<Ó:•)‚}hžèß@è#;Áð¢iþÕnT/ çðª0*Ç{n…Ž>¸¬ý-=R ã‚Ü}qT´Ä ¨¦áÔV®Ò¹Áë]>Ò™ rjÝ×5NáC»¨PH9Ö¹ýMUîePŸu‰ÆzÖEð ,‹ºÙ›FWH >†«Bɵ† :ûÔÃȨRY-e8ÉSÛÖ’Öò{)²¤•Ïݤ·¼–Ö_˜’¦¬H¡”ß$Ó7²zÉ÷§ß"úoÍÑ“×8P;Sï.icå€ÂOº™¥•F2@À%¼1ù±À좴´Í<[/ÚîÎ :/ÿ^®ÙY‹qö‰›/Ž=ª)¿y9îs€+6ùüÛÖnzœU¦]ž*KwmòÇŽ=ªî—)Ž)™ÐÁ8|t«V2†Fq„çñ¨â;æ;qsËz/aQZ“$ûb;šSó7¢úSm²òìS–s–>‚‡a’:å1íŒÿZŽãÜMé’˜ö¨åýÜ’¦?ÙÅ@áa¶c…Üyl†Õw°Ï Ñ…ŽÝC3ØÔ• Ê¶súTLCA”l“úTNs*y5Ÿ;ÈÊ<6³ÖªLÌÇ)€rš­31#fÈÉ­ p<€ûI#¡#ëVà€>>lðqVb‡~9ìj̰˜ãˆç§jh qÄÁ²zZžX¼´CŸoËš~U?{öæ¡\„^åºƘ8U÷5Zöö5;>PÌ=i&n.ãWÚ¡CúÓ!Bd¸@pš™ ~84n"võâ¥G­Üô¡Qçšó…ÎïÊ’${˨aÎ;ÐRF­sscîŽMN-Ñ9÷â¤wÞJ‘ýÅ-“ëÅ<°I¤TáA ûñPˆ·Z…ÉÈöíU ìò£'qȪÏ{@@ç$š·lÓÔž±§òþ•®²©Ðç4ýG¤î•¿Ñ?•DƒÂrä¶öoZ€'Ël¶ qýêPÂg*X•^xçüštr¦a#’ŠrqÎ3ÇçNFóÉ Ä¢žÝ©ÌHcaSžÙ§Éä›¶…mTÁcîsK ‰§h” `ŸJIHS–À;½»S/æ[5òâ;¤` onÔËÙ¾È '.pI¨‚¶ö‘É%‡åYžIZY³7J¢…ÞRò’zÕœaÙq Žõ«mKŽT­hÀ™Þ:ÇãUïð!U׿Þ«jÏkvê<Ä;·J¯©:Dc¨Þœ“W-åó G=qÍnYMö‹Xßø±ÍjA –%b; ÕY]c†À7Ö±/Ý$¾r§ïY—EíÈ>üR"}ÈÃs’j$‡{,Jß7Ì!šbù‚)ä)j@<ÅÃu«nÍVÛ¸`õ¦,šFÁl¥N%€ÌAÜÔþ`ˆ—à±à{S`…œ€daþÈ«6‹µD䕸ÿtTö˵D¸GÿÇENÇiQ“ަ¦¸™£ fÛÔåRK+ U qÖ©M¸;>pwqùÖL¤™K>oëYÌIœÜÓæ™ãçl{›9έZœ1g·$쉘ã§$Õ‰rsHXÉãÜÔö‹„Q´Þ´ô˜°«ò€z“WôôÚ«ò€z“U‰ýü¯ü(Ûõ5™3n»š_áHúÕ tòKÛ9^•~Ï%ÃÉò€}k>å™ÜŸN•Já‹6{Ž*["ÒÇ ÜT௶H©mAunpØ+Ǹ©-É’6Áùˆ+Š‚+9 ÊFs¸ÿZ-ßyܘÏÞ÷¦$ ’8=jåüžL¤€ßÄ*Í똣Ž0pê*{·ò•"sU¬‰K°RBÃiîxùj f+?Ê䦢ˆ•°ä®ÚÓi‘rW…8ôÅhE´Êª9\…ü1WbÍ 9ÇáPº¬“œŒþ•ŠU“æÀ)š„—òs€W5,cßÞ<“íH ž¹ëž†Œ¶ ?ô«vÀ-ÄL:<_×5§¦¨Šò3Œyü¿5~ÍDw@â@EBìb’W\ã~åúšÏˆ¸šE _©ªNH’F^ï…«qòÔEžHýzÖÌ64ï }â þ=kI`Ûgå½´~cš­8óÇÙbSÉÍP—7%l`FÚ2çúÕY?Ò¶‰HE ¹máR2­)ìâx’àz÷Çz¹4È#Î?¥Ar|ˆ¶ÃòpXµCSo²Â-픢¹ùØIª·Ì`a€mSÔúšdòLªOlÖ›a§Ï“$ÈyǸ¦ÙYÊ£| óÎ GxÇÍ#ŽÃŽÕCTb׬à vªZ‰-tsϵ9K4†2p£åæ™i.qØRBWv2ØaTGRÛ›®}+vÞÙ#µhËnsÆ~œÖ´PªC´·=M!@ªÒà1¢šÖéoqò»#¦i *ˆÒ`1ÏqÚœs‰uaœ “$E*DFJîôü©Ù+ªà f°Rû2)\*Ž=úó\Ùºß(`Æ;õæ±Îù¡üë`0[¨˜¼qÀõ§dvjp¾8'oÔV…§ËzŽGçDƒl­Ò©Ý.â@9ÃU.T$¯Ž€šªò †9lwÍr‰÷†y¸¦Zæk„È%æ´rðÀÈ­¹b”ùa‚Ÿ»‘Z®…  ž8¦O¨Ê1óÕ;èÝcF ’¤ÕkÅpªÄ`tÍBËÔfªÇçµAfAíÍ;®ðC18>¬Gº[çp Åð:šÉrÏŒä—ÿ?L²‡G 2zqZQÜ™-f@†9"BsŽ*à›u´˜RŽ‹ÜqUÑÂ:€0~½k1cÊà `úõ5HF<¿UëY—6¾tÙ–'€*›Ûù¯À$ç¥T0ùŽ02sV#Hàˆ Â`òIïV‘ ÂãÖ¬¢,J bžooâÇ^柽|Æ`7À\:x`·ÞÇOaYš„ÂK†äíŒñõïúÖ}ä¾dØÏ Ò¨]ÊÎOÝéSi‘·.ÝÉRØ£m27F©¬Ðùe›øºS,®5I (îF¯jeÃ%é~RǯcÚ£²…ÑV9ð=êíÊŸ?p9.6çëV.”›€äÉòþube-põ“бz» ãqôÿëT·éå²'Nßçò©.Ó"2qVÈÚcP (ÍiN<©cEÎcAÍ^›å˜(꣯áUqûµ`±'?•e6B¨ÇÌI9ü«9²އ®¿1¡nN+¢µÃ[DÇ“³³ !<ñƒMVHU™ð¿1¨D°ÙDòH@%Ûêܚ̎Ö"ï€rØüê“M+Ìgz'­b¾¡4·†à´³ì’]Lð´ýE·" 8`7Sk—*ÆÕ†õ›ëNÕ®G™ÆA(2EOe9š,7ßN iifêÛ ÷’´,'ûDwQU.ԤNEaêãËÔ%qœŠÇÔ²/_ø©è˜Kqòï_oÿWJm°Žx8ÊÒÛ7veåjh÷ãåúÖÕ·šã9*JŽ}MjE½³É\΂@FF\ÏZY_dOƒ9Î{RÈáchØsõëOŒíˆ„óÅMÛn»¢8ëô©år†¹ËÈ>ͨHŠ2…·pk—¾€[êÄ£1–Êûƒ\ôðˆo^4!l¯ÐÖ¬š­”QÅ)Ý"€¼V©Ô­m"Hœn`ìuâ´›P¶·TC÷€äгEwš ­Î;ŠŽX⹈φSÛ¸¦ÍsEçDÀƒT4£¿Y”ñòGMðÐþSŽBT^¸—=–¶ÏB[¥to·aó ï[m·9{Õ)$³±À†0Gûư5 ¥º•Šœ[Â\¬›»q#þª1…÷4ˆZ8ãgw+üª5O&(™†é$S•ôçŠj¯—yåÝrE; Ö' FO­O *IóµHÉõÍM …B©X2Ä]ð6£dzœV„ŠËg,Ž6í…ÁÁêÈ«R¶r13ÅW‡$Dñ|ßøéÒ²-Øþì7pX~Xþ•B&ÆÐ}2?*«$‚Ó¸ ±¨ÖAeÆ@Ë}*0â¿?…Q³ÈèÄ P23U~×#²³àqš®.]˜3€;úVˆ%¡ß€ ŽÒ¯à´;ðÂúUÂ3óòñÆ(H‚uIåÜ]ŽæX¶Ñ`ž(çrK·ÎËØÔ±ipº$®2Ç–´Ë¹`‚EE"8Ô}{~•ZþhRä$xHÔ øÔWRÆ.J+*ê6†õû’û”þ5—:®Î:†È5šÊc¹$uÎA­tQ,ñ³gnàGÐV„ͽˆ¾v«>•~Û÷—±³ýÕÁNÔûÏžbG¸AøT—ïç_ï^¥ ¿‡éÛ̾GAúUۖèqÖ´õYL€u+ýjíûí”(êETE&ëcädZÈ…¯68'‚qT!Bn™dçŒâ´ƒ?vº(èÙÚ rOjÙLƒ ¡,¦iÈLJ ï\åýÙ»ºfíÆz-aÞ\5ÌÍŽ™ÀèT–õÛ÷©–êÇç…àšmº¶Òàp8ÍW›MÝÉý*´£÷™÷ª²ñ&O­]ÓÔžLòìk¡Ð-›Ëœ—cøVî’- çïTW@“•9Åd^þòv#’N+2ìo”ýyª·¶ßzòÅö/û¦’HÂÚ‰K»íô¥xöÀŒ3¹ˆr èSwUQǶ1Z¶í$R#¹þcÚ´!fŽ@Çû´n2.öÁ!ÊŸ¥C<¦u1ƒ•#Ú£’O0+’2 Cô«¹9Lgh¥c9”4l Ø*å´¾j•=ªµÕ¼m4r0%¢éî;U-FÚ!4r“L÷ªµä1ùÉ+ ”ⳑó´¾kl.~E_›ZÌ].)î ‡gBÇäA“ŠÏdrÎ_q`Ì~UÖ½´VÈ!E*ªxÃw>µbXâ+k*ƒ‡ïéŸZ³ºFÞ^Ìz ñTtGZ»¯Ê=¦øyÕ5K•à|¼ C`·÷k‘Ï V¤åçbŠÐy«š„“]±DbúU«Æ’|¢}Þø¨¶ì9+ò§E÷¬à¾K’ɹS >µH)²W;z)õ¤¼d³rÇ‘ž‚“í¬#òíßÒNêûÞ?¥9Õ„ &âTœô5lÇ"Ú‚ÌW9Ç­Z)"ÛùÄ e”}˜¯f\~u«8XôÓ# ›AõÍ_¸ –eðFÚ©ÊÑq‚·ÐcçXqƒ‘úíÜ*ÊPUÀï´æ«ËäùM œ´‹ìIæ“t>CÆ[,ê>ƒ?þªF1yM9fðª¦ÉÈÛ†Ò ´TG9È;@¨²¡Í÷†hÈ Zà‘0GÖ´æU[-¹€Æ>µ¡0_³í –ÌPl9)Ö÷om°ä'm,W-‚†+"T’äÑ=²3XåD×nŽBý8¬½¾l²Œ“D‘ù‘DÝH.)³.åFëÆ?.)&\àŽOJÒ¼¨£vu0*ÜNb$#8L ´ŒcEr?‡¤u!ó,›˜Sñ‘n$%©ê hÇñ+¬Ü^&yÉ­T2ÝÁÃK~_þºµ~›ŽËÍVˆî–)w’[åvÇg!7q8l–;zvª–›•mÙ-‘W%;U€è£÷5± ŽÞAü(¡G¹?ýjѼp>{ ©ëT£Âù’¶0+šï»VœosøSãW[C’ÈÙ'Óüâ®!dÓ>Qæ>âGQV†èôÑsg5\`Yî6³)üë>A†lœàÕÍ-‡’bî¬OêkÃs¶xU9­ÍMö?º*+ÀV\d䞬­A wL§<7›z¦+‚9àÑqÉc È’¾Mi[G šm¼ŽŽ=H5£q=¤7`Hô/PÀ€Ä`Uyfbû0UXô¨BϳŸ"Á9ÝÒŸ-¾È|ÀĶîGµ>X6ǹIÉ&¤³“ïFݹϭZÑ.Wˆ sŸQSi³FCÆÎõÔŠ‚FfùB’Õ¡ c3|¸9¨ïd¹ã°-µ‰­ƒBí=›žõ‰g«MfÌaÁûÃ5“m«InËä1ï[ºdâþÑŸ!X¿Î?º}«sMq©X1ÈLÉ—ÇP¥lY8½´8É8õ¬m·öëu ÜkHãY$’Ʋt’F¯)9Û‚ ®•‰Œ>:ž•»4žJI´òzVÔ®#G Þ¡ <‘¨?.+7 -Äh>à?Ÿ5K"[€Ýÿ9¦) #ÈWw' ì:S`_6V“fþOéØS`O1Ùöç9#Ûµ:åA· >dBÅ\»Rö~üP8½1ëV®ø#rG ÜJw3’ÅQ©·Œ× òÂØ(çšeÁiY¤$ˆÕ‚jŒ¦c’Kío`*·—¶5”ç—Áö¨Šm‰\œäüÕÏ]I$ºœœç €+*Vy.˜OAYnÎ÷…GáZWÒ.ÛpŠÇh Ùp:VôªV ŠHPdqô­ ¹1M[È–XT‘ŽÇÖ¬« §…I}}jpÁåŒ3O|1Œ˜ý*I†â=æoÆŸ(ç–±gSöö“Àª‘ê+&@EÙºN¼Vcô²ý2@ü*å®ÑnXrŠNÐOùïOD|r£…úT æ1\ ¾Wl!6üòH«ô£"ˆí&½y@úW\*‘ã23€>ƒ“@b·\ HØÏ·QúÓ ÊêJ’õ‡þTË|­öÉÞëRßeTÀ¤(«Zàtùƒ¥pª:ÔÚª°V;¸a€*ÕŠÆ£ò®͵F/@ÏãTíUŒ±ãÔU¹ÈÄ þóŸÊµ5f?cfïç`þU{Qbmr:ù‡?•UkF]ܜֵ$±‡¶R{v¥M|Ýç,ÄbºÛhl­ƒ¿w%½MÿÙÿØÿÀððÿÚ ?Ó°ùAÆÐ7TšSã8Ú9çµ^°?)ÉÀQÍ:G*í/P\(¼Q,¸fŸ¨g ¾ã<„)èïHŒÊ1Á^ôG=Ê1¹{ѱr1*¶¨¾]Í¼ÉÆÇ@pj-SêpM'çîu(]N* jÊB£÷G_ζõÛ;1àÓ»p°–'Ž+%˜½É#æÈ8>•ÊÊwJÇ®îžÕ)%ØÿxÕ½3ÈGaóùV·†Æ^füþU£¢’FúT—ŽTƪpzÕÍUÈò‘NZ±zø1¨ÏCUí-bä.#+6;T„´pÄò=*œVËç’y§—Þ嘕Aó†GÜÄò«÷ª)$‘Âÿ:‰ÝL,îKÆ>¸¨Ý—Ë.ß6ÓLr¡7¿?5Z–»µYp»A<Ž+vKq{c 킼ûV¬°}ªÝf²míE¶£ûÙ76>E®tÂ-®ˆfË•‰åy-¹²ÝhÅ…Sš¹j0‡¸â­Û€# ôÒpPn.qÖ£l7,8ÏJaÃ`°Èô¨ï!- x_ÞmôbX]­ö¯!>r¾€ÔòFÞ@QÑ9ü+*ï¨þè¶ÕÁf¬´Ü÷™Rv/SYÑk¢A;Z³©ÀÓ[1xž*{ØËÀ[ÔñRÞÆd€žù§iò‹M)£›*ÎIOÇŠ³e:Úhï À‡v;úTÖÓ }#Ê›*äµbo$iÐÈJ–P: š–qn4¨eÊ—P:j{…„YÅ6AlåPÅq‘†Uç?{Ò«Å­ïN “œñÉ¥DÝ×êiÏ(9 ½)^NNÑJ\gÒŽIZNKƒýêNKg³SO·oÖšÜÿ]!<Êg;‡iƒ¶E==éÉÇçNQ‚)’AÏi%õèi$ç5~&¬z”ø%ÆÇHÇèßdMƒ†52Eç,(r;ØÕËXèÁ ÈUù˜šµ^sB‡;æ>õ"á䔨%€â¬B~Ñ=ËÆ *2¿Ÿ¥Kï^VQÊž? §©Ú¼Ð2©ÆHúç?Ê«jv¥×#€HROÞ9üª ëb@ÁÀÊŒû槸‘¯&DvçoQN½™õ)ü˜ãÞ!–>´·5ôåýL|“ëU‘üËÖ/ Ì‘·OŒŽ8¬ù›3OJ·¤®-™ˆ¹ÇÓÿךÝðä{tör0^CƒíÿëÍkèɲÀ`³OºÿX1ü+Í;QlL1ü+Í>ìâ_uQÖš‡êÙÎì㊂\-¤d—y5œ[ÆG%…Fãä(?‹šÎeJæ¨Ê2‚5ïQ\ì*U"PqïK±‘B"UCŠuæ×!£TÚ¼zÖ’aŒ|¼WE ¿Øƒ:í!?ýU®¬ÂÜ;x®~òXÅð”š3°×#y({¢ùÎ8ýkœ»5Ñpy¬œª±èAþu£n1oPhB0ƒÜSBí`§’OJdk‰Õ;îØÇï•}MNÇw™Æˆ_µ”‡ù]ÈLûw«ê«*ðXí'Ú©²Æ›¢…B¢qÓ©¬›Ÿ,JÐÀ¡cå繬évyŒ±¨¼}j6O”'?^”¾X —<ñÏ¥?f=r+7[߈ʢ)QTõŒý·ËS•EEQÕro6…@ Š’Èìæ·SÂ|Ë“Kj ֒„9PiöùšÕã œ­Ki¢n `}ê’Ò7U Ú:Ô¶Ñ•]Ý…LeC“ߎÕ8ù‘yõàÔÙʃ×Ú¢rÙ(¨0\±#PòÛŽ*H±äO#ž@Ïü š<‰¤sÊóùô©cÀ†W'•â¨åÝþVÊíà{ÕÎïÃeqÀ÷ªyg~¹\t«Á~\{UÀ¿-ZÁ LÆy :`ùpyÅ4psMuÉýir ÐË“úÒ)ãƒëMSÆ:SAíN`^”öÃOÒœ~a“ô«Š§|KŒî~h‚3%ÄIŒî~G°æ’Ú=ó"ž›‰5<Ò˜¯cP~GSsZrµòF‡ èF}jÝĆÚìD8 ¼T¶‹†“»jÖŠ¸Y[§;³¦ƒå±õ5Uõ Yf’ådúz‘ÅT¾Ô-¦3@¤«ÄçäU[«è%Y!S‡G8÷Ǻjão`ñ`ýCñ¤Ñ|ñ»,8úM;KPUÔtxÆ?*±XælžK=«'hV'=È?enÎ2H?]KȬtæyNB“·ý¬Öņ£žÌÃ-aG÷³ÍiÁž•½°Nõ¨¬ ×Ñ¥ÕÐÀ$² ôíM°YïñwuÐå•GqE¢Ér<ûŒó«íV£V ª»Rº9""~T_’¥ubJžŠ8D®£ªŒU"g¸QƒµxaéÍWD³äýÑÁö¤˜FѺÇ‚AûÔº‰€¡Kpv õ4_´~Y•OëRÃ3Ïd¬§æ7ÔV‚O%ÖŠ®„î+j¸%k58$`×?}o4wd$9¼z×5u‘Ï´©ùŽE`\A"\l òs[áDª\ïU•¬DK ¨sæäzV«–-¡¾uš¬NΘ皊6%—ç½E;”“R®c„—#sp=«MsobûÎe~Ú¯©´`Ü;Š¡6V”Àr}Ï5'p@äÖl¹‚½ºšƒS”dö©o¯ÿªŸ#"9Fâ·Ôf—P‘†ž’ò2 Öl÷bvO=P7Ž V|·^{¯œ£€aÖ¨Ir&•|À8du­;XÁ@ÅN'­^Vݨ$7sW¡UF2A«N†6?#vÍX’#7ÈÃ¥Nñù|uSÍ@ä* ð6òj Ïj7`gÒ ŠíŠ´Ÿ^õw*IP6ý{Ôi:¾åQŽ*hÓzHˆ©aMñ›ŒœR@Û'ºf”‚£ øf”‚«†ü*,`‚9¨€w¨ñÍ6“òŸÒœŒ@ÇbiTñŠÓ´@ò‹†ÿWÚžþ¦´t+mÏöÆáPmŒ:½¤Áó†àtQQÝÚ€ìúÕMZO3X>‘áGóªwÏ»T$ôO•jÝ ù_œåë_Eè­ÏW­]8£ýX×35¬ßÛ1˜É%ÌŠ}$ÿZæ¯m¥þÖº]‡qs úNZçd·“ûFèÆ\¾~¦·´õÌqãË,¿\ÖÆ‰JKœfQïÍli)ò£ž1‘Y·n"Ì wØðk"á•UèVc¡ëYS° ëÑ„†¦zßù&G"(œ†O^õsNÓ–øDÒ1ÆÄ2ú‘ÍZ²°[± ’cŒœ§©í[.ÔùF01]‰U#F·°!F8àUy\.×ÏËÞ³/hŽ@ØR9ü*•Ëí*àñ·šŽÌƒ3»$zÕ]-Õfšg<*îç¦OJ‚Á‚™¤c€¿©íJ¸(ûŽ'ÞÉçŠ` mggá@HîIÉÌ!µ•Ÿü8ïO°€p~pO½]ÐäÛ°0*Í“ïV´§ÿFhˆÂ­G!aÉÖmä»çb¨ÍP¹}ó1' ¥Š?;#h;=j[ O´°þè%N{ÔÖyß9årr)“¾ 9b1ÈTRJÆRqÎp?ϵGæ´n'›8õ-ê³FDyܼ“íZZ¼NÊV0v9#Ó­\ÔQØ€½*¦Í¼Óîg­e«o…ÉÀ÷ªå9ÇåYwÓ´{v8XeíüCVæbÖFp°ËÐzbªÝÊÒZlnR^*´vÌÛ ÊT?@}*·lÇæ®ÝüíPÇlK/›Á~GÒ­¥Óh&*ñ.7`tan&)J²ÍYYØ“„SɫꂬÇnsŸjº>éIªç;p硪¯åH%2ðË÷W=*åºHd9a÷Fj唑˜å‡AU¬sqro#æüAb¦âãh_»ó ¨,š\mû¼Ÿ¥hÃÐퟭ\·È Í\‡ qÓÿ­O2f2¤|ýHÒ0ïN2nŒ¯Cž´ÁÓ­0{oøRœÿµ@çÕ¨ Á¹¤ûÙ9¦òÀ’y£–“Í7´Ò)¤qLÎ[LI¦Ï5½B(U;(ÔÚÛ­¼Â9  b·¢ŒFŠ£ ©\/ú\Àã\þ°€jsô…oÐV.§/fÇÓ¬.ùmÈù£ƒíV´¶e–ÜŒ²€GÒ­é-"4@|ÉÞq‰žë?¼W'ÜñúÕB™te+³'¡ÉâŸwE’a˸ ùÑò"Hóó ýzÓ e…#'˜Ç?Ζ?ÜF#(1øõ¬­\c+chi8÷¬ ì#‘ÍÒ°u ª³Œ·JÓÑŽlÎq»w?®‡Ã…NžøûÞaÝùVöŽGØGL†9«Õ¨NOj½Xsê(ú§ØÑsã>ø®j÷PW¿{TOÝ®@>¼V÷ë%ä ùãÞ®dHª‹ò³°síQ2…‰~Rìà{RóvÆ£môò†k…‰~TAÈô45ÕÈ$C’qØzT°Ân'`ÇD¹4²±+ˆ‡ÉœŸïRNçaXð#Î}Î)³Hq„ùSÓÖ •Ö(%› p£®j¹ÀßÇAïP·<€GTºPw²ón‡‘Ë‘ŒVÆÝ5žáNæbÄ+ONnŸ™W“’¢—Sàòœ{Ö5ÀÆqÆsŒV\ã é‘Å]I[åùŒþ½ ÀŽÇ÷ °pF Ø…µ;Áùü+5F#ÓŸjÃN#ÏnþÕ’¼.@íQ¤v¡Ûí;|CT¶ÂÕ%"çK´°?Z’n²69Ú¡Õâ•ï Ñ©òøUÛLÕã’KÖ„8 JQÚìÈ«”튯me,¬¥×dDä’:Õx-™LƒbuÉïQAj唸ڙÏ=ëJmÇ»Ï86î0yÅ[õJxÁ=>½ê¤ˆ3Ûüj¼ˆ Ç­Olbµ†Fá¤qµG¡=jÍ«Ego)4Î kì{ÔÐíà“hËÉÀö©c‹ýªtk¶ö»ÓÔm‹ž¾õÎr:ç¥CϯáQsúÒ†)éÇjr³!)ÊÅM>Pz•ÇÒ 9Ë.µ:AÎHëH¼ÈR¯ ¼)GEc­œçúTo€Ýsý)€Õ±ãv;TR #µDêH®‡<ð2k­žø®€NµBæ&bPܸÁúW9«ÆßÚ%÷ràü«R¾ØÌÞš-­öõû¥ Ÿ¨4ípÔ^Œ¤SôpVéˆû¬*sûË•ˆÿÎÿ^ÕªO¨$Ȉr;“Ò¯¯ïn¼²s嘎ìjœ’!Aƒƒ°{Vd®ÂwAÏ%>•M˜™ŠÔâ³¼D(UKg,8ü+;Z‰ ™•Ï9²õ¤h› yÈ5«¤r²8à2¡–­køk<ç‚? ×ÑF#—ž¤UÛõL jÝñnùúÕ냈\žÕÌY¸ñ 0 ÌÕÉ[!¸Ö_Ÿâ<ûW9fŸhÖ%ÉÈ n2˜®UÀÊ¢“Ç·pÆm¯€þ88«MµÖò2ª1J’ªm䑸ÍX±œ®´bé©‚¿†j{I ê²Aü¤cð¦¦^æl}Ä'§òªÈ¦[‰öŸ–6njÁ”ÌÙùPœRÛ²¤’nEòö‚>£ÿ×Rés$&1¦ÀWŽàñüêK k(uÀ#ŽôðdX¶î9e{ •¦–8š2ÇçP~€Š‘¥tˆÆÍÔНp»ð±‚@M¸þuŸ"e /ÿ®©ºeV®k`Á€}«ZñTØ«++FìnÀTTås´“ÓÖ³Ê0Î ?PÆcÆpIÍRž %»ˆ¨'å–ï-Ì{TýÀ1éïLxK•`1ù{Õõ’mžpÞ00{¼³AlÃëV–h•¶ïù‡ZîfݶNÝ1U®¦mØsœt¨g”–ÃúS£‘¤K9#$cÚ•š5,䌑jXز©,Hô§<`³ `Ò²ì ä.  ±³š®òˆrP ¯MÕ “Ë” ¢2l‡Þp3ÞiòLØ œŒ f¯ü÷š\³¾GÓÅ\;®,Và¯ëPƒ¸ ½3ÏÖ©«î@EW*1Ò—ÁÎx4à:`äb”ž¹*®õ r{sS"ùˆW¿ðóR¢—R;Ôd4DHojfÖ„¨' LÇ–Wõ¦0PYAÏË뚀ÉñÛ4Âvõæ‘ÆÉÏjkƒÆN{R8í[‹Q€NOS]nõ&¯}öXž.2ÜõÎ .¥x-ÐÆ$óסª:›Fæên%”’>•Ÿ¢BEÈþóß…SÑ Û)•¾ódÖŒËæBBŒÕ›åÄ 9÷«7k½¨À¦L<»“ ê]¸ªó;Ũ´€üê¸ß.*¼ÌÑßÈËÃíÚ?QO?Nó ýä‡õ"¦žÓô€å³,¬ Ǹ©§D²ÓÔg.矩©q³ ¬Šü9¨cqWÀ#éÍGCC`Ô’"È¢BÍ÷²qÜt«."ó¾lîù³ÐƒÅMM2ß&`‹ÁrúÓ ËHéM™œ‚ a{(O½:âW}À¦Ñ÷UGó¥•Ýø=¨gRž^ßàj†U)åíþ“QÈ»vc¢Žj¬—íåTp$@ü½Fn÷Û:ƒ‡L¨=iu¾\á×õ˜FXH9=Áªï9뚣Îõp~¹«.²˜Æq#‚{Tî²\’8>•aÖM€ÉïW-â1@Þ`ùØúÕ¸#1[¶à7–õ«0Æc€ç–$ÒŸ¸xúޏ óÀޤu¥?s¦1Þ¨ÜFGAÏçÅT˜8ìjœÙŽÕz7Ù¤T|ÎÛN}*úÌ#ÐþΣçvÁúUï3f–°ó1ÁúR@Ÿ»2œíQŸÊ¢‚,Äe<*Œ’}©ÇˆÌ‡€£9¨£•‰ äp*vÈÁê*~˜=EXƒœ|sV°9Ÿ\Të¸qšRû›s¥8¹c¹‡œX·&š$5x`Xš8o˜t¨ˆ=Oñ*#žýÏ=Mn6õRzé¥/îRÍÍm»ºCT'Þâ)œáŸ í\ö©½Þ9åÀi3=«Q Ï’ê,3̤ü¥ß5ºù‹sŸº?äqQÛ¯™ù<œÒù“:ôŽ<©÷Uˆ&1[Läcp>ý*ÂJcµ™ÇDߥaøfݦÔLì>XÁçÜÕ Û™µ9‡Ë'>õKÃ04—O;k¢ºÃ1$ŽTŠÙÔö¾íØù“¶o°Cg¸8ªö.Èr»3ŸB8ªº,†›r»úqUôÇ1ù¡†@ƒYwÑOv„0Ø~Õ•v’Þßdc¯à+6ê).ï8è mD'.ü9ÅlF‘ØØÇófiç¾;Ö¨UµµEçq“NÃ:€ŽôÇÞñ)Û…õ¦°vEb6¨ïPépÙçsöGJ«oÚ5$åA,çØvªÖéæßï<¨É'éÚ²ués*F8AëÒ«ëræu~êô«êÒŸ=øWœV›Úà çrçéÚ¥œm†'^C®ìT³å#ŒŽr:U‹Yr3òô«ú]À(Tò Uí>PÈAþè¦L¦)P~MÛ‡¶j+ˆÚÂídåÝ•5¨Ö—Jùàô4ö\“9ܽN•fH@e˜œ¬€“žÇaã Ûó뚤à™vžA×Ú³NL»OCÀ÷ª™6æ²ÞÖx® F»òzJ¥öi£œ”Mù?ŸµTû<É1Ø»²{V’éðùi4‘$ò„â´×OˆD“ôÉúU¨¢3éæ1ÕÏ5>™h¶6b1÷ŽKÕÒ­…ˆ@>nKUûu´³£I5Ë’ryÖm쥘19ÕK™ìž™§Y\$‘°õ5&—r¦IcuP€M>ÆpÞdd»½M 1Àü.ç'ð­ÚÚÃo)Ú…¥c·=€©íàŠ'8\»MC#»'Ê1éYŽÃPe'ˆ¾EöZ͸‘ãþT²?—n\±!FÓRÎå,ƒï;s·¯ãýjK‡ÙjqÁ¦Ùňgå¤j¹¥Ú¬LòžAaV¬mÄV†G;òk#V‰®.÷D¥€à‘Ú±uHÚ{²ñ‚Ê:žÕ“¨Dfº. •^µ¥k‡ÓÔc.1éS•ßf½Î:Tî»­Tõâ›1"È:ÍGm/ÙÙ%æ›o'Èǧz–Y÷Êb'1¶ š¿¨Ïæ/–~æw)úqV¯¤.»LäSìÜKfQ×w–ÅOµYÓ%[­0$‰»Ë% ô«R-Í‚—ÆTŸJ­<¼¶Ü§îçµfÜÛ˜e}Œ] ùsÚ¨Ï E#–ã4Öâ¶iv…eéë;Glf £­8ÌÑÀdÇÌÅc-åÔ’–21''$ñYk¸’BÍ#ääž+1n¦i–>µfÚè½Âî<ž¹©­îK\.ãÉëïVmç-py5ræDXÈÄ*ÕÃ"+$F*ÄΨ sŒSOϵêF1Lb]”ç©ãÂI ç>”àr€ôÆiç˜Á<™§ó³'é@OÝ’ÄBiDº$ž}éB~ï$Ôd(ÎïÿX¨xæëPœÍ$eTw©ôFUG§â•6…=¸ÍO`Væ&ܸÁ<šµ§í¹ˆåqŒóV,ñ<\Ž•,»€OÊz÷çµK>c gä=1ëO—ä`3òžŸZŒä ô¨N@ô¨Î@¦1㚉› æ£còó[$@ë]& ãò²ÎZ£¨Ê,Hrü–Çn+ ^xüÔHŽç¾;VF°ÈdD‹¨ëM!†òÉÏÔfªAóBÏ—»ô¨cCæºÈŒÿ*–ÇZ³c†"´´B!Û>?J½¥!BÞõ5̦;vu‚xúw«÷×&6uî8Nõnæc€ÎãX÷wánj¥¥s÷w£í%@,kâè †AÉÇJ|2!œ‡§A ò™Àä~4èœy{€ïZ¶MæFŒô­í5üØDƒèkZÍ÷ǿ֢œmw~¸n•“©®Ûɤôj;R·0êMWpÓíÉà¶HöÅA/q,V¿Þ`Ä{b™M<±ÀznÜkEʪªƒÐÌR4HˆÊ?*Ø”¨ÝE.¼[| Af,Å‚[¯’ R¥›qöÍf Å‹4Cio˜š˜ÆŠ"ç<¨úŠ.â4àœ¯µ Ã€¼g"¡~F Ál}j¤HH|õŸÎªÇ1¸?Â)·4‘+ à <}*ÃDóY‚Ö@N|þ½X’6–Ø0`1úÔ–IŸ ÷‡Oz~Šæ)çUbw¨Ú=ÿýTí)ÌbxÁ'w*)“–Uݸäç"›tË’r).)äç¹ r „ŠÉGCM…¼Õ‘rw¦Æ|ÈÝqŠÎšÃiÌ]¬{öªRÙ…aûÁ~ÕNKP¯÷€­\D³¬ÉªN}*ÊAÜ,©ªN{Õ„†4¹óS•j·2»§æ”ÙÎæ zõ¨Ý³ò¯¯ ŒI =j ˆ†l/^y¨Š—!}ù¦,@>µ±q7“̘ãÚ·/nü‹m©ÌØãÚµ.n<¸J¯Í&*µ¬;ãf=åØÿ*α²ûPiý^rî{Õ[K_ôÍZåöFŠ£aäç½2þf_—­s·À­óÈFÒß0ükœ»]4„m7 ÖÊ”˜ñ»¥X°p]Œ‡ü}jk'ùÙF©íæe#†­Û/’9Ñi‡Ë¶$r+jÌìƒ"¢¾•m yäÃ(è=ꎨ*òÈC/¥TÔ…RAî½RÑo¾Õw¶EÀHÇ­WðýÀ›QýçúÌ|TÀšìîlVÈÀfqrk~àA<²¹Ý[ùQ£;`gîj§—öÄ{àž3X>CÞ˲8€'$Æk(ÛµÛTúšr3‚I‚cPÍIæH»-¤!„ Ž:ÓÌŽH‰È>XÇÖRĨåÛÙ¨UI|­çQ¨ýè Ԝԓ¶æ œ ~¸Í^ÄŽÁ‚õ8ÍZ™•غŒ?\f«G#[âFPU— Q‰Í¬¢`2a…UŒ›ywã!úûT—C÷¤\rÇÓ5gPé$/ÌücØžÕ-ØÌåG'©>ý꣕µäƒü&ª±[³€rxZ…ˆ‚lrzV0&rí);°0fnóK3œô¬ÐÆ]Ìù5~ÁX+¡cŒŽ}*åšœ2³õnÔaXpig\rqOZY€9ãÓÖ*ŒdœúT‘`[åâŸÃèð­’1ÅM#µ,ÒnPSÓëRJå”úS3„àsßÒøN:ÓKáqT.w‹“°¤qïT®…Á+¤qU'VóÎ>é«0®2>ç_jš%ÀN8Jž0v©#îÕ±0ÛŽzömgù1ƒùU/sL'Ì8íšc±ÎætÆc’Ì8éH§pÉ=OÕ;¹'’iÏZ27+cqǯ¹Õ‡qÇáNgqŽÕ§ª*?›ó»}ã[°ØÇl&ù¤aó5iÇlˆ‡ÌOSMD6°È ñŸ”jCai:«`ò f¢ m-äP{ü½éŠ6Aæuw8ü;Õ`¾Nž_¬³6Üûw¨¶ùVc»Èv“íS*ùvŠ¾Ù«ÐGåé‘§¶jÔi²ÍÑk>@ípî䲨à ǹgk¦.K¬Ù‹ܱÜéU/í6Tè÷µV¹kǪ=ªµÊùÖaU8úT:V~þrËòÔ\õ#ŠŠÇ$g«`Šß·]¶ñªº9®šÑvÙÄ€T|Õ½}ÑÍfø€±¶DPp7æMck¬YPq»uek,J ½3ºªxq<ÍIÜ}ÔV#ñéúS|/™©I/ðÇÇÔž?­3ÑA÷Qp?Çé[·Œ£Éô­=r]¯cМVŽªá^$ž¸¤ˆ¾öfaJ¥nî%ÜÌ6ã¥V…˜9bÜŒT`*–chÛ‘L,·´RU,OAÅ"9i ÅXôöZK2YöÀ™c÷Oû4Ø<É¥+䚘†h]ùzf´J¸µ–7M»}jîÖ2°Æ£ncÀ_¼£+ëU³TqP3O” *9[ËçÝŸ™±Üâ™#•'-¼±ÜÇÔÓ¶äg=óYsMæ/–ÍœŠ§,»ÔFÇꬒoP¬qPHËùW{‘œv¡r#(ÜØüª!åjšÖv."ÆÕn Šš XºÅÑ[®jX%bÁ«†1¼ýx«l˜o¡â­Á9õ8¤oLàÓž:Fäc½Gq&‰Ü:ã½6âO»}áÖ™;òz㚎Ü̪?„tìj(ŽK; ÔqK p*C€6Ïbiü´}içmëP›¹)½¨ÌûÚ;c½DÓícÓŠµØë‘ž¡º ²Ÿ9‡q’ ZQ’¤dnçÖŸ1*v–Éô#ŠtãcÝ–ô=(—†Û»$ö¨È9Ç5ペR’S [ÖŸ,î'Ö‡+Éõ­–`T€yÍt²6S yÍl±ã޵‘“ޤy隆xKŒXpzf™$dõÉgñ¨fÝŒ1ìHÅgjAâòžÅ½²jèdhžÇ©3$qªŒô©¤–[{t€°'nOµ$²sçÍ•º¯=©ṉ̃'‘n9þ9(šFe Ü`ÇÖ–âéåŒëœ1=ñDÓQŸÄúÒåZV'î!çÜT1H†r[ýZžݨâ‘L¤·Ý ”ï%¶­ÀúS]ŒŒ\°ž3Hß; Ò³ÛNfò ç®zUSbÍ'QŒõÏJ®m É“ŒzÒÜX;·îŽôéìÛh# ïDÖ„€GoÖ‹{e·&âvo”a4AÀ|éIÈ D1ˆIšC“ŒNûnIù0½óJn÷ž˜_zwÚwïS7$õéSYƒ銔¶~•RèÈ—o"ðXîSНu½.ÓøËUçÞ— éõ Œ E3ÍC#ÈMÜÔNC2ŽÙ­¶PAí]+€U«e€Ú:‰d$|äg8"¢Yr§yºšb¹+–Ç¡¨î6¬Qç’Ö¨êì;rpX9ÇÒªj @x,çi['æaǰ¬àòO;l³È ¨¬òÊÛŽIç5:mtò—¤õëUnm–Èeaùb´óá¯U5ðºk@¾<¡&zúñX¦‹Y /$;׊ÉHš-P«Œ ,3õÑhñNƒc1'šŒÚ¼S.>éçõ¤[vŽU?¯­9Gk^ÕsœÀÁ­(@ ä t©±Ï=*â¦_Ú*ÆÜ¹¦)–s™<õ"®ÙÅ.Ÿqæ¤â@†F\ÿ²(³ŸÌŽBüynËŸaTÚàHìãÙ=OÿZ°.®âáå^’Œõ=¿*ɸ•f™›ûä€*ÈZßÊ ‘ÓÛšž8Õí|µ`ÀñRª·Urh™˜[‡L‚¯éS_JM²IåW9©oœ˜ÕÓ¨ÿJH-™@Ì„csÍEkòÙʘCòã58l£ïœ梇÷Œ#ǦOJKt3í:f–3 ½Ç­=Ô)%FNüsP° çõ]¶ô<dœb1ÀaǵIžBg•IЕ¬{»¹ ΑîEVÁÇz£qrþiXÉUVçÞ¨ÍpÞaUÈU<š¬³Hòàn'²úÕu’G“hÜÄžžµ M$’c–ô«ëgslò.ÀG›xÙÜÆ…¦B€ôÜqW>Ï:)2.ÜôɤåˆÉ{àæ£’yÆ=¹¦,D·==ªàV(ä.01W±Œ;d)àb­í|=úQŽO ÃÜSˆäýÒ=Å)ö4¤®3•¹=($cŒîh;pzb¡dŠ}Èç*ßxƒÒ¡)»‘Û*~÷=*D”21àõ56mg§3Íç´ŒÀGAW4¸¬tÝò´åÝ—Ž‚¬éÐÚØ˹Ÿ½6îðJAU™ïUﯾÐà !LÔ7—~kd (ýj­µÆùX6*üÃßµS·›.À•Wõªð͹ŸåZ·;Tnà®I«ˆä(ù¸+Ö­+ž:Ós¸za9ÜʸÚ?>j<ädº+ohëï]FÐMnc5ZâT·eÉ7ðžæ©^ÜGfêX€}ÓÞ«ÜL–ì2G œZ­n¦giæoõgîÒ±¡饹œŸÝœ`zÖlY¸\J~éÀ$%ñ+ sŒŸJ’Ó—#(_€Üݸ§[ïò˜€>sÔÔ–ì‹1?yAéZd‘‰^<òËOCW¬Ý|Ç@y8ÅUÔcée 3À#Þ©ëHüJ¤@ =ꦥ[Ï1H9ÆE9Q\´²ä`|”‹¹ygÈÀù(@Ûä—!¸ÙS[UbÕbÉK#z3ÔÖãröš¦fØzf®JÞWlŸJ°íåžÕU–Sƒ$¬Y±ØÎûYK9ƒ,îY½ªfo.Ñãã{’XÔ`•ÂäƒÐVfXœqø Ï‹ö>˜l§;ÈÃn @ì*óBÈÛñµ‰ Ú®yF6ÏLœ)QC«HÀ‘Ùjͼ*öóNà²BƧŠ5kw•úÒ˜µ˜Ê0*ÈW| †ŠŽ2˜c9éLUÙ;ã=½)!_.à•ùAíIÙ1ã¯js|¬Ä.6°üj—l͵q†êjd8 C(pÈ0à“Å4+®ã(Ã$Ò*¸a†k>8⺙–Q°÷*q‘PÅw2°—)Žã¸¨£‰.$`ß/®)n®`ÓÀ†Î0²½)+RÝ\ÛØ&Ò0%æ”òE:âx,ÀŽÙüýú¢iXÉ&ç8,sš¢^y˜É!f÷cU¼É¤bòno©­K(Z¾w \d Ö¤&8þf [žµvÖ"‘üÄy©CªŸ™±»¹ïR œ¶7w5!!Ò:l­…f`08Å6FÂ’Àm8¤‘°@2+9¤gÉiª ìêrã¯Õ"å†w~-œ3MûÀ˜Œq“Æ~•5­¼Òþð/È;ž3ô©`†WËãä«‹“ÁÀìjI9Ç¡§º`ž¥}ê½â<‘ Œä¼*½Ê3F¾Yçøª ”gE N±²E>[¾Õ4ì:T¶HÒyo&Äs·°éRXÚ(mŒûTrçéÅA}vgnðõÅErwpßÝÎde‹;ÂÕ˜ 6ÊíÎGLö©Ÿ³'ïÞ¥R|…b~ð5sWÕ–Á|¸€’cü=–µõhX&sù/ÿ^®êz¨´Ä1 óž1éJfØ×aK¢ä°ãæ5Nr²Æ Ö<йÝÓ,j)ÊH™˜ áSSÙ!6ò¾Gï$$鎟ҧÓmY´·pTy²ÿ»RØÛ·önxùÛw5,I¶¤`Ÿ~MXµ…Ñá$nl`gššÕmÚ2TŒ Ô>IWbp ÀžþÕV¯»7Ü©ô¦GDÌÇïF2*Ì‘Üív]²n;QÅR»š;¶YBÉ“¸j«q*\r¿ñV[2Z£òð«S)–ÅeçB€*Ä«æ[,œ€¤?Z…v¹g5nÅ6‚AÈA÷½jŲíƒÀi x§M‰þ]Øç“D›e'€j£7Ìî9$íŠÅ¹“2ÈTIzVdí™oVb1K;˜‚Á&7;c½>þAl‘ÚD›ePß¾M-ô«H"@@,Õa—̃vâ¡€ÍNa/lŽäª¸\×o­Xh‰ˆ4„®üqíJHXYH¶c9-S;¢éÏCj—(;—§»(´1¦F\¢ã©¤.¦?”I¥DÉGˆ+•f?Jr íd 4Ç?& 犫<¡Fт٪òȃOlÊYGÊàëN#í,àa@ŸzR ÅÏÝÀàÔ31*™2¯çPÝJÇË'ïÇê9ä%׎@Æj¸†$™ÊäŒ H’5‘ÈÎã€×½FØŽIíU.´Ç¹¹.ލó»¢â¢¸ÓÍÎðê%ÝÅA5Ÿ>íÁTõ&¨ßN–î`‚C!_½&;ûU+ÙR'0ÀåÀà¿¿µS¿bc ¿XÖŽžÄi‹,î»É,õ5zÌìÓ•åuÞX°SÖ¯Ú1[yyój ÌÛ™¹n0;TºFÜ[–<ãµBŤ|“œö«³,`/'>õr`eL.sŸz³ .€Æ †ÀƒÌ>Uè£Ö¢‚Ä4Áäè¿Â=iÚ(wíÑEh¼Š‹ŒàVŒ³,i€éWE; U$gcó žqšÎ‘ÚW?0ÉçIØ»ph^PípX†!ÚÃu)!;¹ÅEvûm¶4€~‚™;ìµ(§iðÉÛe¾ÀysʨGí Œ`†8Õ(á•å‚MSŽ ^`™È5¦P,b!‚Açy×hò Î*ë (AŽ8¨õ @Y¯§m¬§åà¿·ÒjC5ìçknC_ÿ­Iyl¾×)Ä›¾PˆÕ Ò=¨2eNÜTÈòF< 0çª)ܺßxŽ¢¯·O·ôÚ¿Ê·&ù4{0½Âÿè5³?0ÓùQå¨elÁºúTQB‹4n Þ9‡z‰# *88 ’M?,T6wmõ«ŒÎSzÂE#mY%¶îvðx®fKÅ[¶Œ®Õ ÃŒW,÷*.Yq…ÝŒŽÕÎ5Ò‹¢˜Àϵ`\Űä¨è=kRÂGdòÉ%Gݵ§hîé·°è*á>TJ¸ù8­BM½œqó°Ë ¾ÄÅFÌy¨ÆBØN9>ÕIä‘bb<ñ×Ú«;:¡ àUi7,#‚îsǧ¥f¸u+€KçõíTJ°•‚ÍŸÊ–èm¼™ÿÙãò©5P?´g=ëïŠ/ÿãþSÛv*Ý×î­‚©ùŽŸÂ´5aä["«eTcéÿê«Úž"‰OÌØ•F7nHƒr'=*¤[äuŒ7A×ҫǺF iÐÿÇ¿–>Süù5{v,V$ù[¿¿&®3bÔ"œÔzÔAs"ûõ¬Ý¿½ÉÉæ¨c2Œô©·¿(àÔš·jD²lè§€=êÕ¹óƒÐð)ríÍ…ïéQK óJm ÔO2Êp*]ùÀù•zÔa‹9#ªŠb¶æ8íPÌžzŠIKH¤)8n¢’Bd~nÕ—ub‡¸Œ–À@yª76«idêÍÀª7«e~Y›S|‹“´tß7'jäíí@—{ì\úqZfm—>H8úw­VÀ+>æþµ|ˆác–$Աȳ&ø‰ÆH4äq*§zr¸u ½)2IáÆ[¥óÃ}ê ÛÀnµœ3³g»ÍE' ÅóǽFç‹çÚ¨ÊH}À€bjœ†È ÚªHØ`Aªh¢we,xê*hãfe,xê*xщji£Gó –Xĉ‚1Š|ˆy¤†ÜDs¸–=©"‡Ëç?684GNIäŠxS¸ p=éqó’ œtô`’HëéUoݯõ¤…qåFØãÐsLÔ¥7ºÁ@ò£;@€æ¡ºÞêØÇã•¡/ú¦Ú8PEA1Îìt^*)ÉùŠöâ­«¡[)çpÏé[“I2Â3ÎáŸÈõëjvĨ;¯òS§c¼’áRF~”²nŠÒY€#hàû÷¤˜˜ídpàÕ +ãulT««Ïn@5JE¦²jᑟÀUXoZ{h¶Œžk#Uµkk²qòIó)þu•¨Û´œ•ù²µ v‚l…nA­MgžÉ×9uùséŽEh馶}¿ëMiéE¦¶ÊýìŽjä—*÷¯ ¸.Ÿ.ӚОè>¡$Aþd~œÕÉ.ÝË·+òÿHNHNËÍA<¾QÐw¨¦px4J¨!ãþtØDrJxÚƒŸÆ‘DO'Bæª[;ÜA晙ʓèsT^å“`Ë;mõäÕ(‘î6c>•zå¿x¯OSZ¼›®ÖóP©«š‹™.ö/;0£ÜÐߺ_›h^®ç¹ô¥lS…QÌŒ{µ96ÇòôAÔúšË¸ÕI¸Š;q€ǯ_åU.5ÓÆ‘pªÀõªÒßy—1¢p¹Á5¦ByÌ<  çÚ§q™•AÈùA51(Ò>´|ºÝ­:&X®²>éÇ_ZXˆKƒŽœu©¤%°D_\ŒÕË·y~ãÆ;ŒÕ›–gÎ×Pî3UáWßæa~oŸŒÕ ta6òóqÞª@Œ²Æ:àU[—(äòç$úTs9G<`u¨äbŽqÐÕkèÍÌ1ºŒ Ûˆîi—ˆg7nÇ­2ê#*¦BN=j¨„ZI®rUQÙ]øb8QUö i77ÞÇ¢rÒ¾ýÄóÛùS´»¯µ4’«†Xì¢ØFù£ ôÍ[%œe9y;{ ³æ­²´‡¥PšâYfËßÀzU9gy¤ÜIÝÛÐU6™å“¹oAZ:É·òâ¾Ð_"®_Ìbhãþ-£~jÝôþ[ª ð£ug÷—Là‹pÈÂ*ŽârØÂîçH+Ïr\Œ jÒ’I  :Uù$wL ¿#3ô8âÚ¡³ µ,g€¤åéÈFç-Þ¤#c*žã53ŒŠ{Š•†/¨©–#?*/½L¶îF~T_zx‰±’@“l©—ye$ô4Í2Ì%œ÷ ÔÆXf›cl"´–S×alš2~ÌùàmβÉýÛV[ÄO¦?^…sglqœ(8ü+¢‰ØX±Ø?*胳áZ.‚Ëg*äåÓÛöŽKEÎç\qQßì{9g$c"¹ÝᣟÉã Œöa\îŸ1Wòû1,3ØÖ™)ó ¹ùkOS…fbv È RkOQ·W!v ñÉüëGQ…e„#6¤Ð`û%›3¶DŒX·n*߇ákkR_”v-žÃ>¶µùV%³YÖ¹»¼i£êò—Èþ×úVLE®ïd27ÈÏ‘ü#üŠÏƒ73¼Ã#s³í[#O›ÐU©3°äóV¤ô5KR>]ª¡è@'£»ýݨ\‚8'JŽìùvÀgjO ¿î.~ë†çÜTþ'쓜€Æ íRhlMœ‡!v9ÆjÿF*Ø8ç#½G Û;§9 ëMq‰˜d AzÇìs¤„’ŠX|çúÔr6a™Xœ¢“úÔr?îf ~èþµkÍÆ‘ˆÚ{“Nh\#;Œñ“PÚP·/εD¬ABzàÓrëŠË½‚W¹'–ÞíTI‰å·töª—QI$ÄàÝ*íµ’Z…’cºcÑ»W ´KP¯.SÈ_îÕ¸-VØošB2¥g>YÝ• 3*€É3¤³ž:U<ŒUI,M\‚Ù,ÓÍ“2OÕS Zгd™y».:U˜¡[Q½²ÒŽƒÒ¢·¶–y]Ý·>ÝÇ=ê+{in%vc¹öî$÷¨à·yÝØžƒ'5yš TØ n#š¸þM²ùj>c×Ú­1Š1 äõª×7!¦XúÕYç1Ë‚â]¹Œ“Sé¶®P¼§—å¥YÓm®ù'–5=…»l,ýO5:¨iYÛžqõ©ãEy™ØçœT¨¡¤,O|UmJó1"ûÇô¨u+ÍÑù޵ýÎWÊ©ëZwŽÚ@n@E÷Ï¡'“§Îq¼*'¸«wÎb±‘q‚ÛTUð n1Áü«ž|léÍaÈ2¡{Õõù`„r0€ñô®ŽUòmm£DJß›äŽ1Ó)‹…íÏCׯ5X¾_— õëÍCñžAÅdÚZ[§¹˜•$˜s“Y¶öð5ÃM$†Ç–zÖu­´?h3E“É*IÕÄq˜ÈYXÛž žtlŠ(…•ÀQݽ ±"ƒyE~Wn=ëmã_–TèG¨ÅtRB<“(Té^9­wˆ4F0‚*¼‰yiªûNÑØÕ¢…L1F¡>m§Ö«I`ǹ$Tn¸ùFX+.xö±QȳçM®ÀrSÔÔ˜cBÜNjÂLÆÀ|Äæ™xKD±°ëœþtý?* ‹ðŽF?*» ¢Åksæ+ôÏsVt„Xìåp§½]_õ‘ç9$“MuÙ,a±““Ö’@E øóùTü÷;dèA=*|VNURNj;$»q ʾAú犹IjŒÛ°=}«~("°‰Ü‘Ëu5­qÚG’@ëTn½Øv$|ÊÀzkì—ÕŒ¤•Ã}+"BN©æ¯œzU›½ÅÔ Ë>0*Ϋ™®•"ÁgÆÔú‚™n'%€§¾--‚ÇË·ÜÕ›‚4½1bŒ4¼döõ©®H²±Gþ²N3P EF ÛžÍgÛªŠÊX ŒΪB…O3H9݉˜ª!ÈZy +yFÈÿ€â•”—yUãh4’´l¤"aû7µ#ËŠ6&=}hgGjàôÍ7 ‹»`õ©(›¶Z~v®í z©<ÞVݘ,y&ªÏ>Í»H'©5ÒíÆÞOSU­g¹’éLe¸9 †Ök‡¹VŒžN:T6²NדßíTÌÏ2ªpAì)c‘že§oaNËÊéý*Ô ¶í¼ƒÁâ§”¼úÔÒ)9­?ï ª©ô¦m̃ÜSò€xÍYµ¶H˜±å‡zÛÓ,¡ƒs“— jÙ[GÝÞ¢¹pdfÚ¹Àç­E¨Î3±Ú:(ÏZŠöPT»g€*¬›Ì X®HÅgE(l¾KäTã“!œX ·œËs¹Éw¬˜\¼è9o˚̷“}ÔiÔ–®ŽRYŠ¢œûVÜ›ÎR4 “Ô Ø`íÄjAö©`FèÞa1‘‡W9 ÕÛuÂï´MÁŽpjÍ¡™$ܘØr éO˜&HÉçÒ¦»X+óÞ”ùÄ|Œg5] cXÆp+)Õ~Ñ~QÔQ*¿h]£åŸj²¨ìL‰´gŽ{Õ¸a+Ü+¢)e»ý*Ìq8G”2¨`qïL%‚1œ¶BÓ"ØíR0[s`t¨ÕmB©Êç'ëQ\.ësŒŸŸš¯2n³ üüÔ¨kU#ûõfÎ/&Iæ¶ô«o²Ù o¾ü“Z¶PýžÝSøˆË†ÿ¢(ìrk?Ä/ûÈtLŸÖ¨k-ûÄAü#š"ò†l†Ï PXD³ÏlN•ù{S,ÐO"†9t©å"B®0}kGRagf¶ñoêjåó}ž†3ŒõªaUð]°½€êßýjÇŠÌZCØVtP‚ŤüFΓ7ÙÏ ´ãž¦¥P’¹„ñòœsR®ÏO”ãšÆa5µÈ, ÈNƲØIo7Î6¸<㸬Ü<ˆ‘ë[‰)’8¤EÀaÔzÕ÷•¤ ʸëW^F Æ)Ûò6•íÓÞš®OÊúzš˜£­J« Æò/Sý*ÚG(ÿX@QVU¼ b£a´ç¥DNÒB‘QÁ Rˆ€?1äþ”à@cÏ_¥(1íšk)#+§Šm ¨?­+´Žj–¡7“^K7z¯væ% 2X÷ª÷.cG$ÕK[=Œóåcó÷±QZÚs4ÜF9ç½Gok¿tÓ”v5äíráW+quÜÆâ@î/µÄq …^jTqf…˜)/÷~µ al…Ž ˜àÕ.ñn„ã2*K)g¸¸ÞÏ”_ÀSm^Y§ NUGNÔ–­$²–'å¹ä˜¦e ô­d´k{™W.\ô5¢–æÑVåó„•›>ÂX`“Ñj±½¸±ëŸº:Tj˜G9íM}¢hËÇ•Q‚u§ òâ=ñnE!E=\ÝNŒñ’€`ŠšQn[gÈ1ÐŒU»;ekç ìùsƒôbÖö‰0BñÒ¨Ç`QžèƱ*¸òÇ÷½MRk.ök†UUðˆ{ûÕE³]K9pß*úûÕàÏE[–аfx %;¹»Tï+GTnîÆžŽ²D²t#¯=*Ä2¤¤¹Á}ªtudYàÊÊÞg ‡–5R§š€¬@±Œç©ÏZΜÄC ç¾zÕ)Jc9ïïJ„Èl¯§­C½¤]¬J…õ¨Ë–S¼íP;Q–ŒíMÀŸ”±Å:Ò&–6 ›‰û¥Ž)ö±´ˆ@\–=IéG•——2€¸à´–xy@ùÐmç€@ÍL–ø.Ê‚¸#éV˪G¹ˆ Sü«]¤H­ÃÈ@EŸµ_wX¡.Çå¥`ÙÞÉys#®"E8ÿgœW$÷o}w4θLgðé\ïÚîâip€àVŤ)°HŒHí[-š‘ç¬8_jÔÒí‚§œ¯’#á|qžÄÓ.ä7bÌ»xÔÒNÂyŽÀ[o÷¦:Iæ¡ûĪê’5Äj£,ÇzT(¬Óªõ$óíQÉoh.g“æŒNh¬Ï$·-JáW¥/—f$-$¹cƨõ?ôFáT÷½ŽÛS*·›ò¾)/í Û—S½GBj=–Ó89c!P ôªÖkÖ,p ¨,òöJGÞ$¥Yy#Š"ó0M§ñ«¢$fIX&Ò>¦§EDÌ…ÁëQ Ï´& *œ`uúÔSÝQc€eAéÞ£šäȪ±@< zJű³nì€1È8¨#‘·cn õ¨RF%”.ô§ ÛT¾Xg‘S¦B«È (ê*eùpòø§$‹Í8UÎÍMB'? Ï¥B!/LžC*1lœG ¡·sÔô¨œÜòOjc.õhñ·*A á£è iOï“8È"ªã±L¡ß)û¬{T8K4ÊüÒŸâ=ª-²|¼¹ïTà·–îfÀÆã’j´0És+ c'$ÕxayÙ²03Ö´bT…<¨vÜŽI«ˆJc@£ÔŽsWyi寸֩tº…š3’:JÚ’Hµ+]ð°þóíZR4wnŒäwªÑÊpNß_²®íÞ ÊŒ•þ{ŠÎ¹…â™—¶x4¶¤ù )!;¿3Vô¼ùÊ>~sV¬I€‡?5,±>`cš}ͬŠVuc“Áõù pVEc“×4ÂÎÓmßœ¼@⫳K5ÑRûL°éPæIg*HÿxÓÕX–W#Ÿ»Žõ4´ŒñJG˜y@=*Hãg,’cyèqNÚ±ÊB€‡4é•`‘@ϵ+…†FTzLvÊŒ’Ùî““ ÅŒ³¾ï÷‡AQ¼‡bD,rG­8Ã#r̈=GZq±‘—|Ø;)´r¹fUôÔi©`òò=*ºÚ0ÝæÈÏ#¦*$µ î1N„bYcà õ©ôäcqV.W’1“Lnv9#„w}ê0xȦøªÓ[¤²d·ÆzcB$~Z˜bó­Jò¤*<´ rÇ·>µa¤H@X“æ5;ºF ¢ð£³F¤ˆv¤@óÉ#ŸÂ¨ ÕCµPyÅQª§A­ë ‹! ÝN:ÖÐc¹y üihåQ¤¦ÜšzJf. áGÝ57Ú–ðÊ0©Ÿ“ðïRý \ïܸÇJl93qÈ+Ö›¦©ûI?ÂGQM²ÍaÛÒ—Žè•ŽPÂ3‡ÁèjÔòCyòG8+ùÎz±#%ÉýÜ€ªœžôõŽ%SŒ:ûÓR;höATqÏSMT…› ª}ÍW‹t“ù¤Ì}…gÛ´“^} –óÇaU-Ìpf$€y>Õ,ˆU×XrI©ïb1J»NCŒ†'¿½Iu$£îÓDDîÙuû ÿZˆZ´GÌ•³ jŸëLÉw?>8 Á$èÌa“Љme¸…çå„<äS¼ÒÄe ·¥1;I<sÅ>8™É#$wÈýiëb[$Žæ”ìEv~ƒÐâ—ç~ž€Ò HC=k3ZŠI#HÓG'žjž®®Èª¸ÙÔsÍSÕCºª¯Ýê)|>Îöe_s*¶ÅM ¼lD›¤Do”ÅM£Hïh7åÕN¦Ô¦KU2"|À9Ï4íRHá;㌌/Lçš]BD„nE# ÇÖ¨èžlÚ‹Í,„Æ«†Ïr}*®‹™oÚYŸ(ªsžçµVÒ Éw$²7È£ï[±‡” Èc=ëq!{Æã+%‡/Zâ#s÷—lxê{Óf‘·yø üMéP_\~Åf#ï•éÿ먮¥6Öß.>û HÃEÄO0 ò:Ôj¯°Ž8üÕ%‡SëLÃ$A=Àw¨Ø£ؤÕ}*upÁPû¯¥1YX0 qÜSÊn(Xº¹ÏéHÊÒd[oÝç…4«8ç$¯AšcÂ’/ïÑF;Í;bH™”/tæ—bÈ3 p) h>USò‘«ÍW•p §åûÛEE")` óÅHªy°{Z–`Ä{$*0r~€ŠNq¾BN»Óä,0Ò‘ÏOaJû——êz{ k³ä œc–^´‹à2dc’½h X௢¨ªª‡.ü.îÙ©$Š5Û6éc$ýÜÓÚ$ùcS¹ÛŽ{VL“´šºB¼ETßk.YÛÄCý\D®=}k9¥&ûËFƒ«R¾eD@G,ÄÔåó"–jŸ~d@£rƪjS1µVV ²7ÌÃÚ¡½ý˜m ‡?3 †úB ]„ç’*Œ0<ÍÆO¦TŠ"ížU"„ÈÜô®soQ Ó§r*¿ ²$›c8-òp;w«ðHâRøÆÒ§D‡Ý,.jôVE=ØFŸ—5rŒð¢•p£€Tw=jxY#FË*”qš–"©$€TcëUma†“Ëb œ~ÕF! LÊŒÀ³süê¤kyHÜrjTR³I8Gõ©<–ŽP’$‰½€èª?­Iå´rlsò”ÜÞÔô•˜’V!Ç=H¢ ‡%Ší Ð穦Ã3ÄñšXãfŒ–}«œ‚j͵³Ëùd؃MX†’ Ò>ÐA4É%Üùc€Ê==ê­ÍÇ˜ä¹ÆÑµWÐzÕyæ21ìGzTñn1Ç¿®Üâ¶-›xD Œ' ÷5¥LQ‰Ñ‘ïN•ŽÒñíLÔ 媌ØS.›P;U)‰Ž2Û¾cÀö¬Kѯæ=+.rPc¹©ãHî-ùOÞÈ­‹{x.¬¢.?‹"´Ò®-2qŽsO†Ò+{"òÓ¯ãV"²Š _³[‰’sך’;TŠßÉ‹äQÞ žÞ)£ûÄt>†³o#‡æŒì;ú§r‘Ë÷ˆî}h¶€[Æ%ùK‘×4–yHŒ‹ò¤zÑi–ƒË_•»ûÔÒÈñDB ÈÜ*ú{Õ›»¶¶´tŒæg8_aëR\Ü`dŒæF8Ò™ ,@l»žyª6b8¶‡l»œžzÕ{P± ~fä“SdÄÏ¡æ´ZHÊ…o-sÓksWYÐ ­µ}Á¨xP[n ΫF¨£;9cùÔGÝÁ'ó¦Ï+™JçËQòî^OJ«}<’]:®"Bq•êj½Ô²=Àq‘FVÝXðNW8ïŽhVX±þ³zœŽ?(a ¶ì“QÆe:F¿{æ,MB«7Ú`˜±¨•%ó]@À';©î„S ÷èidS!¤Þ:çÖ‰!9mÔƒ|Œ¥¿¹À§Hd™ÔÈzGÀ§I¾GùøÂñJ®7@9<ƒN´ @nzu¬ƒÌé“(Gݤ6iÒ€’+$JãcîzTB8üã&Xœš®c_3q·z€Ä»Ë‚ÕSPŽVVXCÍÏÒ¡ºÊ²Æ ,ߥEt¯´ˆÁÉoÒ–ÊÓìö%Ù7D©­-V 7–àƒ¸ð•%µ°‚еà ÈZŠYÐ/ÊñÅA$ÊÊ¡ô¨šU ‚kVÝKJK±Ø™õ©ìbFyw@A‰íV,ã™åªŽ½:f'hÆX}ÑRÌÍ!\˜}ÕªG.ì¸ûà©ÒNì c-ž§¿éVfE*ÛÈ!‰õÏ_Ö¦•Fx ߟ­Fø‘Ë~G}Çz­å‰?x å$ê*È” b31†R:±§zuÄÄÛOýùP`9þT·m'vv ø E`›š‚ÕY¤UP ±Ç=*;U%‚¯,ݪH²&11%O kJȸ»û<»Êc*­Èϵ^µ,'1>J•¥6æ-×g`8ÍC}fϪºÆÊ ‘ŽØ¨.-Kê ‡Ìs銵÷FÓÉ´÷#òÛæ*9'øªþï)0GÝš­ö¦–Sàcž*„·r]JPsǵS7/q+/TPèYœ…'îƒQÉnb|„ÿt{R4>Z†¼OÚž’È0p»Hû§‚}êäwr¡ µ7Ì£ 'u »XnÚ½j9®Y†Ð|µï½UoµIeÌq~ìgŸïU{›é$ýÜchÏãM)"¡vÉÃÛÿ¯UÒ r)Û RÜö¨Ä.ÛÕNFNi-¢’;öãRBÐËn$ŽL0õ§ïÊzýáU¥¸ @¯Þ¡–`Èm㸧Ä$ Ã%¹Á©-¥ŠÙºäžpiðÉ*rO<ÒKq˃æÍ$×¾iu 0ÆqúR=È”” 52eŒ”Ónâò÷=0E6á Æpx¦yB²©Âõ8¨ËK>× @)¤É)·€)YÆÒÃï`*1.ùylgŠdØÙ^¹§*ïs)9E9ïíVíÊÏpÌ & Ïj³ïÝ99AØ÷4’1vP£ž).Ë*ìzÒ’f/ Ú0•DìQ°­R*åj·N¤T{оã¾*­ëïŒ)ïõ¨ïº…o®*+—%@=3š ±4ŽW,ߥRX™Øfý*ªÄÌàIýt%ˆ?/ËÛÉ,søÖ¼¯ÒˆC³®NsîkMß'ÊÙå…êOó¬‹y!¸?g„IŽ7·_©¶¬–ó"3on¿…R}]!•„H±jÕ·œ^[G:(ùÎ0{V„25ä1É$8ö­œÜGª‚$éžÔøÕHV ªÇ'¹ö§ZÄòFÈ,HçswjX¤ˆ¨8E'>µà4j íB0®+>w íCÐ}*”Î<À p¿tSáMîÎ}ÓVô¨KÈònÚTpjÖŸâÏ»œu¨äi Àe³Ž½ªY¤Ü n«O‘œÍÆAÆ2)°¬Å‡­"Û•Y÷9ëBÀV@Ç,Ãó« pÿVžç©©î°ÙÌIÐdüÎjYÉpSî/aÜÔq–îÌFsýÓLÅg–Û½›²š`D¶%¶’O¡¥sæ¶ù~P>êÓ&—í$¸00¢›#‰›tƒ– ~n0p úSì¢óW2òTáTúT–±™-÷º ö¦C"G&&â@ÛCcµAlñÅtcœ'™åîÇ__Ò¡·eYŠÈ1#6Ð~´èï™$p>sìj[FÛ|ë,ƒÌˆàœýàzSíˆL€e8Í>LüÛy#¹öâ¡»—r¼•'“õ¨ndù™Ôò§5 ¤÷jœ¥Gkgq{åÈ@3 Ç=…%µ¬·-Œ¿º''Þ¬O,q'Ü.Ægmi^Þ[ÛÁ´'˜7þ*åÝÌPÅŒoäã©eÀ+”™[½Ahñ^~ì°AÞ®~õGGt nÀ#æVE˯qüéÁŽüªÃŒSY%VHÊÜôì¿§nÔË-ºÃTrÕv3@¹IÕ7}ðÝ E&™5¬ëÕr2TžME-ŒÇþ¿®r§½B¡ÔÑT€XtéTWze‡dU4/qî)óÝG=ª†Ï.@Xè3ýjü·kwmKÇ”ß0'®*ô·Bâ(ds,œûÒÛê1\(?|I›ÜSnع‘¸‰sªÞZåÚ§*ʪXÇæÁ÷¤žgw\lÑycƒÊˆEåÿu²3ïSiíäùg ,™PƦ³>VÁÐ8<Ó¥ ï%Ý^‚¬Ëd®û÷ñ•è*wµVpü³Ž:TÎÁTulÕMFÂDeg ­U½´`ÊÌp1NP°ÆØî¤­@‰¶T•5_)zu©,â#1ù˜ôÏlqþ5«¤Zª[—™¾î{žkB°y­Ë7CHNŽ:TRHv`ED϶FaÖ˜áŠ37Rj»†*\õ&£lã'¹æª^ȰÆXÏ»€*¼òˆ£Ü¤´›º ‚yDI¸¿aXþ\—WwßnXú Í(óÊ}OSYÛy¹õä×C3p-ÃïsÅlÜÜ´ÓbÔR}zÖ´³¼Ò…·Ê®q×­J°Ý6¨~÷=jÂX^°ýó*§ñdõ:Z\œXþ.jXÆŠ®ù—'¥O*G)UÀ#+“ÀíRFÁ"“.A#žª(˜dw*àtªÁ4ilò;`~P=1PÇ*¤ ìÁ›=)$GA!öüÞÇüš­tLÒ†”áÀùÏ¿ù5^àù²åø`9úÔ[Ï›ˆÎ Ž÷¦[JâeHÎ Ö›k+yë¾ÕyÜ’pvª™to!gʰTO½!õ­’ä¶s„^¬i’ÎP6‚zÞ ¸½h#;Jî'‚{ÔS\× @cПçT^yL6îê;V$·SÎØ‡9ÎG¥eI<³6ŸqR-¼M'™Îà*KkXX— äT°[¡ËãšYžEP0õSÖ§¸i¢E<+uCŒâ¦•¤@§îœñVnp`IêÝ+F!æ[‡~ótæ®F7ÂÁÏSM–.Tc895Rþ0Wíæ«]¨ £ÛQ«´r1pÇîâ³–fGlÃ*šÊêåp'Š?2F$`sêqJ¶Ï4ŒÅO$àb…¶iX±S“Ò§•b+žliíµ¡Vo¸Ç'úV«G ¾Önj ©DèbXØï<·J¡©\­Ñ(±·'§{0¸!BžO_jY?tˆ¡r½qõªs§’Û1‘UeAÈãk'S²šy¡†Þ6+´nÅ©—VO,PÚÆÅqÉížôË»)ç–8­ÔìÇ$Uý+HþÏ̲¸wµiXéCL_´JwH£€=jõ–ž4èÌ’6犑æ,ÁÈ98'׊Ζv’]Çœ“T䙞BzçÖ’W—bF°  ä ”O3¬ˆFØÏAÖ¥I'”†1…5uÙ‘TF>b>î:VìŽðD¢!ó¾žõªìñ 9"ª¹$»œ‘ØVMÄÅ!nyµgÍ)`C6yéP¾é¤ØC‘±Bž{Õ]­q(v¾AŽŠ*¸wÛŸ½ÁÇðг(1¤qBÙ*6mεî_ËŽ ~@Ù°v÷­+†*ˆ‘¾pÅE³bˆ¿}ë=×Ëì9?Z¦ã ´tiå'h;W¯¹§ç~p§jŽýéÿ{$ (k>â+“»b÷â©K˜Ää­S‘7±çÔ(¢)U…^YzjáF\úÒ ¾…^õÿÙÿØÿÀððÿÚ ?¥~UÎÅÜ7\ ÈÈ#!@#?€ªÙ ¤ €8Éü)T ‚y¤ÆÁ  3K,CÈdÀËM,‰˜ÙF2ÜÒKò™F2ÜÕ3nYW •©íP‹cUžûrr«ëH±lÉ+òúzÒÆI:-ŠN8Û­<áXqÎ2:SQ‘Î8§œnÎ2ØàSÄ2ÈÙp=ù¥îß61õ¥É#|Ü ±a¶¯z™jàš°«´JŽ›*p£×ÞœŒvýÑNÉ…à dPyó(-…'?ZlPùó ¶ëžôÈáó¥¶ëWHŠ"Á 'Ö¬¸D%S@欶Ôb€;Ô3¸côÌí“ôÎ]Áõ«m]¸ëÞ­.#@1×­Y"⢑·1è* s{TÙlþC9OáÇ5rø;ÔyË`t¤P¸%z‚…ªôì(\u;S‘iÎÊ€dbœÅF7S.Xy¨ü¤ñM˜9BŸž)²L :Šƒh˨9gnݪ,H,Æ¢ 9«Õ·˜<VN‹žõ`ÉÈ_z–GP@Ãt£ÌRƒŒ6qš<Á´9©dbfgÛž€S- ÇSÀ¦‘ºE©8­”AJ˜ÎÑŠì-âÛÇØ èâM‘¢÷£bXÁàdš¯rBÜÄ árøý*)&xÁ-Q®$¸öª"E›Q–@2¹ª¨ÂK§q÷G1n0@uå%@**Ë9#)äûS­2I4°sœô§¿NZ¤»@rÙâŸ7Ü6j¬ŒNüŒcÚ°®Ëû†Ü˹ÜYƒ PÄ,  ýæ&•æÙh©ûÍ“CʉOV¬ ˆähÛb†Ïb³fWØÛFyÍP[Ë8ïùU7¸Ú•I%‹¬Òà)òÜÕW›hRà·4±Ê¦fy€!hò圜‘DrfFw'dSã”'nI\œÓ•¾Rqü99§£ä?‡&¤å†ïº˜§œ“Á§c “Á¡bPç®iU3šUŒÝ}hª° „Í‚ƒ€8Z7„ pµ‘çbØãcÖ˜\ÈríëQï21#¦?Zµ ”¸ìsVb‡p ×5j(IQŒõ©Ö%^8'Ö¤ªp}êAN)Xm¸â‚à ÒB)žã§µ:5Ûóž‹´n¥/òc“ëHÎJæ†|®ÑÖ¢àl“ɨ\ÿ¨\ó´u¦Ë„^}i¥rÁ¿Zi0QøÔÀ£°ÅJ0Gn*EÀéÚ©Ü—fÈçÚ«Í’N9öªó[ƒN(¾PLò¼©§`yaOQȧm=Wš[TaܰëKæORia\¿©4I ‰!, æ†FW9­6Ò¬ÚÆC`󞂜©Ñ{“J©È_SZD¦åCðd}jîŸmB ØÀl¨«–H ânèGÖ´Â)và èç™`øÅlË Ú³ÞàÏ91ôÀ°.¯êåŒ]µ“=ÃÜLÞ_NŠjÄ1´I–?1íW-mZ¿ÖxëVmá1(ÉË™TujЊÛ󌞵mcP0FOZV¯4\K³çµ,Çj§#ò¨äÜ6´|ûŠ«xîëÛå°8ÅApY¼g8¨ ¬ðÜâ²eåC¿ï¬Ù$wR©5¦÷Rçª ¹3Ÿ‘)xެ×[ƒœÓaºç4Öã5‰(Æ€*7ˆ? 8ªãO]Ç2r{ „ZòAj‡ì€óriÆÞ4bNìôü)|¥V9Ï¥/”ž¾”1*rö äs´ÐxÁ O‰In£¹§FNzšt`Œ“ÖƒD—eÈ¥1.w‘À¥òW;J‘*TÇLT‰\œ` •# Î1Ž)àávޤÓóÆÕêM;èëHåS%zZd›S¡â™!*vö˜Ô±×©´{Ò)çžÔ™çšF ©Üx¤l9¤lcšnAã #4€äŽÔƒ“ô¤Eã-ÈíBŽägšc“ëI4»IPw1àb›$§pQÉ< R;ÁGRp*vŒ¦9%ˆééV3ÅŠ—aÇñHù㩦·#nxêi§Ó[%€ªÌÛ[œ’sQÆs½›¸8¨bù‹ÏAQ'ÌIo³W*O<Ô.@8?…9ræ“ùPFG­&3L'HÏãL?wŒÓOÝâ—a‚zzPb:й-žiøOÒü$cš^ÜÐØ=À¤nš™sº4UyÆi·£P£« ŠeÎäGÞ#5 »ÚîsåàçÔç¥2#e‘¹ØÀãÞ™#+#|ÛOëZ«\ïÜd ¿µ×™q#ŒZºŠg;°ÈéQœàf c¼ã8ÍF~vÀïC\ßdJL“NiÄl5q“A—cEîjTm­·ñÅ9iïŠr78ÅDÀ’7 ÔL #w¯Jˆ‚HÝÓ5 ²Þ¢‘ÎN;TnýqÚ§‹+e 3eä¥Nƒe¤Yl³ŠNËh²~g¨î’>;ŠŠfe^*)˜ªñÞ¢¶N[­2 ‡À'šl†À'š´eDËzTåÕÉæ¥.«œk8Å+3¤äòj¡‰Ù‰Á ÕS-ŒÕëx]$`‘вˆÈ¤ž3ÅYD*§#­\9Ž9º£)ã÷aÎÞUIÅ;ýZ;wU5SGG6ŽÄ|ÎÅÙ¾œTˆÍß$Ÿz¯hŒÑG\šÛ±ÊµUÎrI®ŸFˆE§'9,K~uÐééåÙÆ¾¹51lUÍØ598 °ÇŸJGp£#“C0×Ú¢ž]±ð>fªz…ÙŠØà|Îp>êµÜû!à|ÍÅD€9'¨¬ËhÄó¢cïER…D²¨Ç'­K:œSÉà »«ÂFÆS’FÕB3ò²žHÀªŒ¥ŸhqrkE%Š÷MfH…›½hsµFG@)‡Œ{RgxϵQã¦*CÓ§ôíÅ7vi¾Ô‡¥ƒ¨£‚0:ÑÆ){fŽqŸÂŒç$ñ@\õýiBç$ñH@ïúÐÀb‘€ÅG2E’S… €¥6egPòðÞ›2–PòcïU¥}Ì\ íUä`Xc…]ÎXqòŠÐ­µ€ s$§8TV‹D¶ºz©lÍ)ÉQÕE_dY*g29Éöݱ眚®lyîj»R˜›G,qŠj•,qŠ@@å¸ÅM¸vSó;ûT£1€Äd‘ïR“æ#‚2 46ã’8ÏJ`bÇ8Ï=)€äçê›,‚VP0Iªì9Á5Y•·²ã­\0ª¹ÎåúUˆTªNp*ÔjHô¨®xû¨îæÚ;TSüí´v©-£çwëO9ÏJ| Îj£ñ+ã®j¹áÛëUÎw·Ö­ÛÎѨàU¨¦1§AV¢“bŒV£1Ôã ®qïNi ’>”æ¼€vÅM(VÝ»¡‘éDœ–ÝüCšGã P¢t´„rêb¡!KX‡Ìüî©BªÄ° Éj¿ íŒÔw®‚Î?.ÝõÅk@„F öàxëRàÇZ“·ZÏlÓW“ÔÒME&¶ÿw½gß°‘ü¿î*¥×ÎÛ?»Ò™ f| õ¨4¸I½-ü(1QXÇ›–c÷Tb,¡ vè:S¯®™þêô·3åATW{3ø$òdåŽïŸžEf’~cœn©£_2uN¡iÖë¾åG\N·§ñYìr¸9¥nWœÜ€)…HúS }©¸9âž‹³9ëOEÚ0zšr®ÑƒÞ—pÏçߥ)=±JN: Br¥$SIùK¢š~é=ÅD§~”rÇ×ÚšŸ1œ/R¥5bû½O½Wº“ÍRG¥Cq!—Pܱc8Í:Þ$–ÇQM,ªÀîê8¦;*¿PsÐSª¶sÍE!,å€ä …É23ȨŸ™ ¡‰S…œR‚ŽM®ZäM¸äòM+‘mîy&•ŽÅÇzn \Óvæ˜s·5&òPr*2»ÉQҘ˻*:RÇ Àq=©R!&…ŒEÓ©¡Ø¢à}ãßÚ‡;«u49Ú0:žô°®{šX—=éÑ®{ÑräDN1´Qrä&)·˜ö¬ØþaŒòMRNxïTãå@õ«öþZ¥ÂŸzµA…-­Zh'Z•/-ö çŒã½KÔ!¯cRGscØŽ„U;ˉÞ@KñÛÕÄÒ>KqÐb ºžFn¼Qg;±ò£ŠV8šdR³pyÅl,‹¶5“ß?[W(z¶¯¡ºTR†’V Ô,T-¹ä!zÔ92M…õÅkƾ\j£ ×_oÁD6Œ]1¬Q*Ž sNÈ©2)ôQÍ¥A6 I觯×ÿ­Y:«+̱ç•SüÿúÕBýƒJ?tS V3ú늋I…Þé˜ð‘ŽqÜÓ,#g™ØýÕà}i%!gúc&«Þå. ?l“P]%Ú~µäê7/?Òª!Ú¬=EVLª6;Šu´aå9ÎsV4Ëq,®Ï÷cRƦÓáìç¢sMY7Èò’y yLÒ¼KsŸÐT2Hd•Üý2i`T»zž•¥³ŠS*—eç5¡ÙÒ0»Ô¶Þõˆ¾i(zÿw½U‘SÎ&6ãÚ«²0•<{S„HPwg<š–›0zûš–˜uëÖ‘e+צir±”ïë@”ˆÊÔEËýÑÔÔ>fæÿdu5 |·(à{Ð¥y P¸4ÐsócÔÒXAH:æ‚ $c­#r=M#r=M5Ž;ò?Jiãð¦“Kàƒ€{#?)zrô9¤c¹Ï9Å1Îç9è)ŒrÜSÜäõÐ76zÓq’{Ôªv§¥J¤%1×'‚šË“úÓwÂ’+X‘·Ȧ¤¤°Š#äEQ ¹œÉÈÍV –pj¨\îù¨™^>ׯµFC'^™¨ˆeãß­81VÁ9åliÊÇ ‘Wã ÉÕX!^¦¬:€ƒoSW÷ª¸ 3å§ÞžÒ?7ð¯ö û֚͗íú“M·¿AüNÀ~f‹Lý¡÷˜:Ù"»F¯zéO^{Rt¤¢ƒ€9¦Ë" äóéMw :óéPsî Dy…x, &Ÿ 6ˆ`¾ìš|dÙÇåŽ[q5Ì]Üíwõ¬ë© Ó»3ŒÕ)ØË3sÖ™'Ê;ô¨%PŸZ†AˆéЖ27ñ6T}j壬-ÿ#Y·e‹Jvþ'Èýj Kc–n¾ÕB38‰.G5R20FKkþØÛO¾6ÊÉ’qØæ«ß@ —r7Êù'Øæ«^CäÊ gåc“íVìØ¤l¬w'O­OhÌ‘²“•fÙ™c`Ä:R¢ÈÒ‰Xž:f•C™ŒO¶iT>ÿ1‰ö©Ô†î9?tTé†RI9=J¸#$œÓx8ûÔd Œg駨ô ('ùПaFßJð }{Ы0qõ /|ÐzPs×ÖƒQ°È Ü ¡»SJñžÔÕ)ç“LÇ晌w§/ÌÛdžÔ¡w¸Eä‘K·/µy8£rýÜ÷Áã¥(ãÐàÒåAý 6Yã ´¾0?:kÊ€àœqǽ2IT6 Ç{Ó ¸ó Ç­6w± Æ=i!—q9àŠŸp`6ÔÄ—_–¥-¸ U[¸âTàš­qÎH85ZxðÄŽZ–!æÁ†^)éóÅ‚3Šzñr3ÚªÍfËÌcå>• …†JŠ¡<ínÍ6*©äŽI©*÷5"pw¬ ›½1HFáÅ5ÆNjhW}äû§ù Õ½"36¥û,òoK}ôgû¤šÖ<šë­t'­'úSY¶ šBvŠŒå›v:tª3I0qÐvª²1y7zT€gñW ûðG5:®â íQdf'~½RžÂY¤/œóéUåµg,ÌØç½Ws–!FOsYd`=Mg9Øx¦HØŒ>xŒ~ ûO@ßÒ¡‘±îÛ©Ñ®ëx”œo?Ò¦äÚE§Î~§¥Kôdñ©-4®À|«À5{A¶ +ÌGʼ µ¤Ûüí&8 Ê•Wo™! §Û“Yò¢”ód!Töîj¤¨…wÈF):Nb‰‚'sLˆ¬Áü¸ÈEã&™ Ø„ÆjprÁIùTqZ—ï ù@íR˜ã< >èÇéKÐm¥?wŽ‹Ï.{PÈ"€?ñR²¬qoþ*d J1fÎ}ª8(ÅŽsL„¬IÎiܨ+ŒZRvä^´¤ã zÒ7=yãŠF9>¼SI¤^޹æò©xÏÒ”p¤uâšqÔñL= 5èsDNU‡'@ûQ›¯±>ÕvªÉ—FjËn<Ô#,ûÕv!Žç°qô¨'$A¨[“–Á©"¤%AÏ"•>f%{ŒSeò>•4w!2 t$Sí$*HçÚHV–]ç œšŽI7têj)$ÝÓ©©l¥u—a9BNiÖÎêûO"lÌiä*Ћ±œÚ¦P ‘Ó52๧M²Ý@c‚ÇõÅ6B<“L…<žMKŒ¢À¿{©o@8èÊ” Œž¦œ…Y6“V,L^qÇ^v{ç“ZZ ˆ^ü[HZ½¤üò3‚^5Ðפ#ŒÓ%]Ñà}i®2˜üj<úpsT É+Þª“Û½?pjðcÚ§ Vˆ%p84ÇFæÈÎjæÐ¬¾c)$æ«Ü®âp 5H°^G½`;`œÄV3¶3Žù¨Á$Q œeÛñ¦ŒH‘Ç×ø›ñ¤\?—aÖ­±$a~ñ«j „*™†*Ú©…O"¸·ŒãhË׈`%œî È}ëB<-âè£,kžÔtWp¹Ë÷Ý(UÎÑX—­º@£8jØ,‚€ <æ­AˆlÕxóš±"¶UO4øÁÝ‚7`ôõ÷¢ 2£#µöÈÎ)ã>ØúRcåÎ=¨#œqMq½v“šFù×i4„î\R1°}©`mšAÀÙŠpéƒ@åpiG+ƒM$€1H£q8€dœSL¼lÁ÷¤2 lçÞ¸ÆÚ†Ic»ŒT?$v¨]úвc¹4í¤[c¹4»H·ÔÔ‰Ôäbœ‘m\÷§,{V¢’Ô3g~7sQ¼lçæ£h2zÓâ@…RiÑ ó§F ŠŒÛ*ÈYžsLòB±#j?(,„ŽA¡­—n ¥h2x4¦ÔñN·Š%ÜU‰`1šHÕ“Ò–4EÎ&¯B¨©¾AÂŽqÔÕ˜J~¬D‹å—nÕö—¼ÔF3‚p=…g´†k“Æx¬Ã#MtN8ÍlLjà’fä»mZp‘<³p*Êá"$õj±l˜Û 2Œ/¿j»aL †tйd„š®Dæ@I"º )žXÉ•J°oεíÝ2àæŸV*ZFPNG«ÏmæÉò°¨¥„7#ƒüéT7CS *ƒqÎ5" Ú©ÜKÖ5ñ®{Q¹S#ÅyÁþuyq’ÈœsɪûÔ’ ncÚ©Ä<ÇÚXÕhG˜Ø&§ò~Ï$|ìKVîmÎ$b3¿œÕ™­¼jHê3šUu@· {Q ¢"?6Ò±¢96ßÄFNƒË‹ |çœÖ¬X´´Î?xß1&¯®-à˜Œ“Xb#$§æîIã¥`Ì’˜u$çµd*obI⢚î(ÉU-ÇåQKpˆHRr?*d·„€zU”%£Ž^ò.xëéV0Ž7=]jeÈU=ÙsO$‘úbœI+×ÚœrV`mr9æÆÑøó@à üy E¶MÙÂÑåâBIâ’x¦žùéMÁý)1ŒÔsHV< sÜS&r‰ŒÓ%}‰Æ A¸ž£ŒäúÔ*7Lþ5 ÙüèŽ6Q»„S–÷¢8·É–áäûÑ[¤Ëpƒ“ïS<¡Ÿ `©PÏœ`©A¿=éI„©$ò !(I=èY2´÷r±³÷‘C¶··HûP··J;© ˜Ï;ª²NÛŠúÕd‹õ¨Š¸PH4×r­·'ÖšîÊÛr}iMÄ’.àö4­3²á"‘¦vRQV4òJJÇ¡+ëÅ-±ÌnÇ׊}¹Ê;Îîõ³ß*@ø*¨U½ø­yBÅ&ìmÛWâyNqYö‘E™n·!~µR(ã*ò(*¬q¦Ç‘ELÇ÷j:…\þ5@àT, =+^ÙB@„ ¢ºÝ.Ùb´Œ•ùŠƒ]-œ"8ã’© Í[>Ã9ü©(¢—uÅ#2 ËœzBÁA,p*•ſܢrkóSv%"9ÉíYw¬ÙX¹ÉíYº„ÆÝB–ýó›ý‘Y7y‹†9s÷½«.éŒ\–ê}ª=/yq“òœïÞ`Y#i×#4ûëÎs[S9v‘Î@DZ­‹›†¹–8˜ÈÎ;Ö¤Ò™äHÈôÍ@@óq‰0:¨Qð£ýÅ—iú*¸ ·D7ÝW?Τ½ºTL)Î:ÕZþ7m‰’æ§¾ºFùdV-ôƺ¬~Y½½+2òO&³§?%½«>òS ^JÞ79öªvVæ{˜ãü§“ôª¶pîîõ>â«YÀfRCòŽOÒ¶ftiˆAµT­[‡î1ÚªP+NVV› ÂMc’NsŽØ¦ç4Üóž)2zâ“ {⌊QÁܼŸJwBrsÀ dE1ˆ<õby¦6 Ïñg‘Mn}ɨåÈZŠ^NÚŠO›J… .ÕÅ(P$¬pE6V8"›!ê*»± `Ž:Ô-’8íQ6ONÕ, mÉã5$wÒŸAž*Iò˜)Ò‘éK!ýÙJÉ—c?x­jîz­h®jK›»v”®Ñ•8-S\\BdÛ€Jõ54óÀeÚùzÓá‚Þ]þYɧó¡#‰ó°äœP‘Dá¶žƒ5bÒ]cUùpi#@[`4‘GÎÕMs®FBª¯ÍþÑ<•ãr6.¨äzÔ¬ŒFÜá@çÞ›e}ìtô˜0áG8éõ¤ c!9è*KˆZ&H•xŸö‡ZtÖŒ“¤J¿|……9íȹU‡#°k¯ Åt^ÞœRc4cwSw¦ 'Å@×q,näçgNŠŒÄðµNâå¥ù#å˜à »¾–öa}XàYwR\ɱ9=©m¬Ö¾S¹ý}+BÓNŠÊ>ãæåVíì’Ú?2^[ùW)wp×7R¸.ü}:W+<­<îÝÙ±ú×7q!žw?Þl ê4ûxí´õ”£ŸÆº=2ãÒwcŒVýŒiŸ’¹Ç"ó8ÇP9>”ÛDó.†8 dŸJXtùÿ¾Ww_5ˆ\ùÁïUgaö§*¹!û÷ªò0ó˜¯84âc —Á rìzj˜$`ll^KzÔS‚Ã{ÖEú<÷ *®>@ÔuªÁ§W€€¥z¦k…umÁ¡ÇÙ¢Üp%qÓû¢‘ÿqî<ÆþT?îPì?Jm€yïAÆ’i¶*ÓÝ… É¤²Ý5ÐRz Õ×ù]Ð#šµ'Èî€ðæ¬?ÊÅAû¤S<ÂÀ„Lúšfæpv'ÔÓ73…àw 9bAðí@f$åGáÚÄ玞”¬@Ë{{Ò±Æ[½+d÷¨”§‚j0I=逧½/µ)0÷jÎ8zµ;¤«°Ê“»>•£zÑÙßG1]ÈNï¥^œ¥µÊÉ·*J°¬² t<Ó†T¸ˆICVãq*^õ åÀ·‹#ï7ÝSW¾û° xÿtz{Õ}Fëì°Œ}÷àUt&X‚Ú£—jÅŠWš-¬ÛS’çÔÖtr4Ñ•'äêj[DIdþé«ú$QoyÉ_ºjÞš‰ó8aÀ¥¿“e».pHëSkw;"òGSËTš¤Û#òÇS\ÝŒ*ú’…‚±&¹ˆ‘MÀ2Ms𢛟—µÐ¬Ê±0'wð­¨.lÌ=mäý{V¼R…·ò‡QÍ Ymär0Xãð©­ÃÁ¦Ë)^dãŸJ–=ÑZ4„rõ¥$p=j½•«]ÎqÓ½CkžR{VVµ}›µ´åSîMUÖnÃÞ­¬_,Q¸õ5KS»ßx¶É÷ASœ UçwsK€»T}îæ§` ß¡ªº´{'…ÁÊÛøŠƒTd‘09B›~„U}EvÏŽT­;MŽE-zü S¶iú|o{ÆùWSßšu„mµËq• ³ >tÞ[¼Æ¦¶€ÜNÊ9o­O^t¸'ɨuI)D îzfªë ‡oš¢Ô$KäÆ;e©l}™ÙÉëšK ~ÊìÆ–ÐlÌÇ>”­Éç¥5ŽîJBsBŒäö¡FFz df—i¤)Šcr8îi­ÈúšiþfœTl<7L~´Œ0œƒóPW ÐóQ[À‘–n¤­6(•‘Ö™*¡ˆëT,ågÎpÕRć=Õ;iq#g¡4í«#qØÒ€ñÚ—hvϽ8Fñ)b4य़Z~Ó“ëW,w5´jÇiÞqïRFwCŽjHŽè‘Xâ´Ë$q•N~é&­¬J}É«ÀP¨1ïOu“Ê#?Áš|ªÊ»Iè3O˜0]§°¤´ýåÎÅ8XÐr=jÖŸvpp‘ üMXÓS̸r8XÆ3ïWZ4d(ã+[rÛE4~[ŒÖ“À’&ÇäS-áû;2†Ê™íPZ[ý„ºîÌG•¦C¶, ÊvJy>Ñw>TüëSº7—¥‡Ý@@ö¬[ùÍÍÑþêSÙC›b$Ž*î‘f&²›pËqWtëo2щêzS­¬ B«Ÿ®8©´g1Mq ‹´¢çN*]8ùm$n*3YzõÉÉMdk7&YÛšÌÕg-#c­5¾Ëo´‘óHÇoû´Ë8qn$nØþTÛHv@$#æv5¥^c†aò¯ëZÚe°˜™d_‘ZÒ±ƒqóp:So%Þ|´9Q×Ê™ªÝy„CÜ‹éLÔ'ßû¸ÎTv© QojYºã&¯ÙD¶:kHç ³$Õ¸ZÙ³7ÞÆOô®bÚ#yªÍ3tŒ™Oá\Å´Mwy<ädG™Z¹ëhš{Éî:ùyjÕù3+ÝM^!J³“œV U˜j 6”Ãò¿ív¨>n}DØ+ót÷§#ÀåOáðÛ€ü«ÐZr¶ïp½*[3‚íSéí†sRÙœ=ë&ã|×o&î¼gÚ²îæºw'’qšÌŸt—.ùêjô¶ÄG˜¹9Å[ŽLX¬xÆã“VÑñj±ãæ•A=°¤P_œp(@O$qO,¨Ï­<¸c>´ö`)¤û晟|Ó3øÐ£œžÔ(Ï-Ú…é·s¬ aAEÔ«HéIs*űHä |nc¦2)QÕâlS‘•âaëXÆ6K–ç"³J•˜¯½ee˜¯§J{€ œæœr¤v©pÊÃI­EDf;ÁØ?ÃÖ¬€»Û~p?ž*ƳnéSÀª’ÆÀä(àŽôäÌVì;Šz(ß»©À ™”œ· ëS¢U©9ô^®W?69>ôº:çÏ#ùV…Ôî©ÈþUsC‚CÔ—­õ´zÖ7rœ·uªòÉY$þ(”ðj)v<ÔÉŒì´Ïñ8çúþ•ȃˆ³Ý…s`áI=MX–áÔE¨%˜rÞ•ª.¥Ž8-ls½‡,;VŸ%œ ‘Ú¬4b73dù{Oõ«7q›Y|Æl³FÿZžu09fnYFk›¹uy2d“éÖ¹éOqŸï7‰"™î£Þ)€¶ÑôŒÏó­"Ÿ½Keè€k@.é胚f¥~–Vçiä”zš¹}•°HOÝ}jÅõâZ[áA…¨4æóÊWï&óøâ³¬²ÒïÛŸ—'ñªv¤³³ãýjíû°•Û“Ø~5µ«1þÉ–F<œ?ÒÔX‹ ðúõÎi27‘¨È ±eÚ1îMsúd¥-/Ü.K¨Qô$Ö&•![+Æ—8«–h|¦<Ý3RÛ#yLNNê³7–ÙÉÍV¾”‰¶‹U®ä"]£µVº”‰JŽÕ5«óÑ¿K>VóüU4$ì ЬÂ|²AïSÀæ2sÐÔÑ6Ü©ïTZÙüû œûUF·Ù9ü*Ÿ”wóÇ9ü*Æàªx —8QžÝ*\àg¿jpY ýÂ{ÓÂHWåR{Ôd ¦™Ÿ›ƒïÚ£?{ûÓ9ÝŒsO8DvcÀçëOj=†iq± ÜÓmäi[kïDd;qÉ¢.pzš¡«3•‚U=D“p ª:‹pv=¤‹ªoÎáš–ÙÂ@»ºÕ›y6Àž´ÛµY?xŸxTw çNÕ Â‚D‹ÔTñeã]È Ú)à–Še±Ç8«qDT.OOÇš–8ˆ$È0 JžLƒ©éR  y6†@B"Žõ.Ö à¸ ½HU‘I#9 S?îÎùß'/eãN”ù$4­—è)Ò7•˶[°ô¦Çj×J]‰PÇwãS[i²^)–L¨r6ÿZ|-p†GÊ’߯zuŒ¨ÈñÅýöRjÖ–ê±40u$©j±bUaòãêIÕÁˆ× r{V‹È¶Ð`6æíWYÄqc98¦¾¼™<…?ʪ;c;1Á(ßÊ«JÐå$à•?ʨB‘Á™¸ÛÚ°"TÈ2Ÿ–±¢T/ûÃÖ´’4NTr@ÇÒº»;H PÊâ£Úº( Ž0vðj­ÜŠVLô#±õ[,ïÝz-g_Ê$•†xè* kO.BråŽ=ª8lD0Á+}ç9Jd6¢4ŠCÔÓ5Ÿ³Dò¡‹d~¹­ äF?…F©çÐS±ƒžÔ¸ÁÍDí¹±P¹Üبœîlv§ÚÇç\œ–1ÐÔÖQ nIo¹éRÚǾR[¢ ‚{÷ŽüyD“†Þ¦M~ñß~ì-x>õ—¬—˜B6/¥“y#œœâ’@<òG~iÒæ’=)— ˜¶Žæ™3f-£¹¦JÙhïRØÆ’H¦°A¸î8©-s»Š£¨¢´à§$qU/•Zs´çµS¾PÓåj'R¨ œ:ûÔLOcüéŒAž•-‰Þd,2 N‹å¾ïèI`ÄÖœ1e~p?…\Š< ¸À5r(ÂÒv©%‘^@½ÿ.)í"´£h8g<Ÿ¥8º´€(ûÍÅ=Ýmž5|°^§Õ©×ˆ$‰ghýhžQ Ľp3M@²¾ùòp~è¨í‚Íp|²ƒ’£¿µ2ÝD“˜ rV´Ø€Jmt®Ž)Y1`Uéü«i$b ”ÛÓùVF‘ŠÒ’¸üëFŽEiI ùgihà9 à·õ­g\>à:ŽkJòÌQÑW§Œ‚Xt5 ϘŒmÕ—­gÝL™—9ªwbuqšÎ˜aLCø¸ŽêKùcø¸•·÷Á;f¶¤ùS®0+°¼AhGr6­t·"·÷<~•B@e“hçŠçZâà'Qž+3<áO­M4ž[Q»QVµ Á¹ò£–?‘­Mw6dØakŸñ dŠ' »ˆ÷¬}O÷f8Ôž$VN¬DecSRiv„L“‘‘±vÔÚ}±YRb20 þUbÂßlë)à[^~ù‘Âò?Ùûi{¸å#1SZ¢ç|êØã¥to›8\ÒIïun\ãëMxÎçR0 gë6o%¤eH8õªšÍ“ HˆÀ ÅUÕíI¶L â¡hŒ±²²ü¿ÄMV1´ˆÁ‡Ëß5ŒÈŒùi‘[¬mòä“LŽS…ÉÍ68Bœ ›ÌHåŽ6ú~u*º¤¨ßŠ‘YVTFïÀ©n>Lè*[¿“tûƒ´J¬ ùˆéÐUD9ËUtÏÌj)ؤx€zã½$ŒR<@=qÞ›+œµq\àã>µFŽ3Q$`€OBjËLö¯AÅJÒ Ø¸©ZA¼ô§ÄË&®:ҡ߃éOS»ŸJ²¼£ò÷8«H§Él/süªuBH“$À;àóY’8ó=ºÖt’#ü'š¼$E ÷[*Î(Ýß *ÁªîïÒ¤·¶P¹jç­:(F'jƒÖ8pÂÕ›¦XÖ0Ÿ*ªžOz}싈R1µQ6Ÿzu܃tjœ*Œ}hnRWåŒg´ã·zq€‹œzÓ‰ùÔÊŽ”ÐK?™'?7ݨ $ÞýIéPd¼›ˆÉô«6»Žp¸Ï5¥¦ÄûŽã5~Ê6Nvô«€m÷ë[Ñ¦Ä íÍj*€¡OZ ÐŽÕˆ  t¦¨3@lÓռĿ”ãž• Öð³Ïµ½Q»±´y™&Ç=*½Å¤.çsícÒ˜–ƒ…pýj¬n&Q s€G·9ªðÙ…”Ž Óçd°ä ÏçF«v$“r±ÔñK8/…?* Utæüœ2Õ›ºI¾> £26åíK!ç`G½, ZSÉ_»õ¥€æV‘ŽH®sPVºÔœâlU œÜ_1?ÄÕr¦â÷êk¢°ˆì•F>µÐévæEÏ¿¯µoYC¹r:(æ#Œ®Ñƒš‚îU»«ƒœý*)äUu 0A§ãÍ™\r¸çëVãÍÅÂÊ9L Õ˜ÿ}.ÿá#šuÈ…GaÝÛ¶jñ!z¿QÇ¥K¼÷°H©w òzŠ[hšVÜ>ç¥YÓìä¹}È>¤ô©ì­ZfÞ¸úÕÓœn;ZïhêSÌœ8È8­#wÈ…=B¨á¿sVÓÊAµ\rryÉ5:ìA€Àþ4ŽË޹¨î¥P n=)“:ã¡~T>Ã4ø†ÈKz Ó‡Ë >ƒ5‘¦“rΞø®u¯þÒd’b>N?*Çûh”³Èqйk)šÜJ‡÷YÚ3éÞ­[K+ÙU¿v¬Tg¶jÄ2;[y€üƒ R;@¾üšÎ•¸ÆsÍQ•¸Àäæˆ‹$2HßÇѩцH™VéNŒ‰‰ïÒ¢˜ùbEîÁ4Ó”ÞRA¦Œ®êË… —Í!7PD„ܳãåQPÄŸ¿gÇ +zÅ€·FI®—I`¶+´g­nضë­TÔ.–) _+I“øV>©8[–N î<Ömì£ÍÙÆìÕ˜#*›TüÄdûV„e!Ø8Éö«–ªV0 óÊ¥ CónäUŸ"&…”6çîENcSÁËVn8çŸcXÀ3ÔúÍÀ?¥2O™X)’r¬¦¿!‡­VX™²pÍWÍÛŠ„!<‘À§°ä“ÐR¿-ŸN)[©5¿Äd^ý)Ú8?h2ªqŸZ~•ÅÆóÎÐqõ§éYó™ÉíZ “‘‘ÉÅJå™›Œõ8©›s3g¦sWáT‚5n²KÓØw«èÖÐ?ü´˜a}‡z¸Û[g<£¯µ`Ë Æ£tä)#`±éYbÞ[¹‘<±éY~D×s ˆ”õ«¦H¬–(ç§­9Ù!dPsŽ*Geˆ¢¯Ó<ŠY¢Œ—ãµ>8Úyãz¹íÚŸm5 =zûV´Qˆcؽºšëm [X–$É÷®Š„1,kü=M2PŽê¥¨¬k.æôïU®Â+eªeså£|Þ¨«‰¥ sôíU•Ä’*£tÔÛNîÜ>•{Ëfctw«A I’8÷$Bä‡ùU¹8´ƒ’ÿ*žC‹y„ÿ*ãîad´f ðÜþ&¸™Ñ–6>ÿÖ¹;µd·r¾µ¿¤«Â:¤ýí¬ß©Åtv±ã£×aoȚܶB<>¾¡SÁÜR7éÆʈ•Ž#&¨Ä7ʪÝ3SLA!W…ÇÖ¬Ý2mN~µbb7…*½ÈÝ(QÂ(äÿz–XÁ*ýÕ'ûƇOŸ ªná `ž¾õMÈ\…$Õv Ôâµ÷ t ³gZßšo°Â# åü§Ôã5­$¢Ý …Æ­s¶ò5æ²e?t1c\ÔOçê&CÐk3j ý…nþVÂg}ãÚ¶mÖi_lyÃ[Òµ¡ó¶ ?7SV•BP6ûç­i 2FFÐG'9Í]P#;:dsX–ó-ÂyФqƒÍsðËç)uô5 ‚UÞ¹ÔŸtdã¾”ìpz{šwj‹Ì Áp@o֣ܜÔÍàž;Ó$#ŽÂ™!ÎqÚ˜ýñUÎqÁÉ'P“‘Éô¨²Hã­Y|(U';FH©ßjí\ç¥Nä3÷E$L cñ¤¾jDnin™aÛh³KpV8˜€=è¸eŽ&8Ö1-<Ùñö¬âKÉÅeœÍ.E]±ÜNœZž×ýh¢ŠµkÌ„Š+V(€àäå@÷"®$!8$œ€=Í[RNrx,ÑÈåÕ4ðË+Æó´`{TÒÅ$Ž‹»€1ô¨¤ŸÍsiýÚ™‡=軹}–õh0Hî{Ónn".{úúÖ-Þ%Ô¥ÁùP€µ‘(ÝpG¥d?ÍtG]¼ ê,í¨–@C·Lö®§F°·©ÞÝþétËAK#˜ô«U«Çù5~¡¸Ц>bzÖn¦«5ÂB£.HÚ©Þ(–dŒ ±ëô§yq"€ª:S½½­¸Q*·b:“R „Š”åCÔóR[FH.ÜÓâø8ýÓô©ŸjÆÄð0jF#dqŠÍš䉑”lÎN+˜c}Ù.îÕ‡4q¹*Ãå&¬7•†Œí­Kˈ"Ó ¼'#ËãÛš½s$i`b¦À*À.d~нcB¿1sü5›Ën‚ž]~F3š^L·N¹©“' ¨æuØýÃÒ§’EX•¿†¥‘•Wwj e†[¨Ðÿ ~u@´r\*ú°ª›£{…_qZ›³[ãêsÏáZÄÆ[H>ñoTµ¼hŸxŠ££XÞs–5Ÿ¥Y4²é¸òÕOLµ.B‘ËšÜÀ@}ÊéY>Î#á1ìkp(‹ >éÅC!b S÷*¥Ó´Bp*½Ã–Çjʉ–Œh£Ó®k"2#ŒF£¥gÆB @8¦_Ê"bS¹‡Í&?JK·F±ƒ—êÔÛ©H#-Õª;2dWœüª«øGoó#JF€×½2¹Laz-#’Wñ¦¾Jýi¯’¿Zd+ó–<éõ¦§ÞÜ{t¦Ç÷²{t©$.?ˆõ&•€Ôšs1ÜÒFÞ^ç'8+Ë“ÐqB¶Ì±ôâ«4¯=®ÖåƒqP—i Úzƒš¦„ØÓ¬` Çw´¶ñm$ž;ÒÚ«÷¸ïW­àHÎP`ùÕˆÑAùxÍXŠ0¿v®·î¶Æ£/’I«DùecAóŒ“ý*rvmD`3Q‰6_œ 0j;«|Ç1L32¿ÍÖ” áTzõ6òÞµ—jŽHÍVµÓ$?<…‰#ÐRÛØñ°Øò~”[X”‘[ï1æ¶R`Ê¢ôÍtÞ)A¿…­ØçR¼ð:Tw¦a@{µVÔ¯$Xm€÷oJ‚ë7±Ã×¹§$bX°cÑiÑF–%å’E‘ñ… rE9m‹;8gÆšjÆç9É÷ªì¢g2³Ÿ~•_1Ë’iÀeT'Þ¦µ.'D›Ä=ªX yªŠN;Ó§}‘ãø›Š·©ÏäÚ‘üRqRÝËå[‘ÜñUÕI8Ü=H¬(Ô»¸uɬ´Î3ß&’u  Žsj[Ðãçð] ±€,h‰<Âr~Qóð¦YÂ%'q¯,¥%ª 3“òŽþ¾Ôë‡TýÜcúU«Í¿“í  X¸Û˜Ux85‹©]¼ŽÖÌjB’?‹Ö³u €×+g(¸—Zμ¹Ýp±)ùGZ¯gÜê+7@²n'Ð †Ò'žô6 ÙüCkKxøCùVåÔ¡Ì`s¸c?Zм—{ÆÎÕÅhÝHÐp U›DÄdûšÑÐáýÓJGÂÕÍ2?ݳš–vÚ=MZÔå1Ƙê[55äžZ¯ÔÔ ˜Ë"àð ª*û D¸*@&« Lc‘ÔÖ`Prx5š(Rr*’€ç=ë=‹³a?Ö3mëUwp©÷Ù¶ƒõª§{°A÷˜ã5~uH Kx¿„dýjåÈX¡X#ãg_­Zœ,q¬1ðùÓ €ƒ“Q“…}MFz vëH‹Ï=4Õ\§4мý)^0ãž¹ü©Y7u¥dÝPݧ—dç«Tw#¶-ÔçÒùv¥Rj¥‘Ý»wÝÆj nrNµ^לç§ZÓ¶‡©#'­Æƒž2qœUÄNXûUÏ•‰2NÏj”|͵zœ úT€†m£Œõ§.¦0qózzÔðsy±HÚqóžÞµ4Gý ŽÝÍtïÑW>µ ÈÞ;¨ÂŽ3ëPΗ,ÀaGëM ¼–¸¦,BA¸AÆÚh„0Üyæ®ÛÄæÏ'¥né–ë yÎpXaséZ¶Q×ÌsË*) »€0#?|{Õ+Ù#i¾Q²2~u÷õª×.¦@á;ýhùàùWÝ FKmȇ‡èÔÝïS9Ï¥"¬{“vàyÜi¸ìí$e·+s¸õ¦‚u-¹O9§Äá×åZu¬¹BÀcžiÖï¹IŠ–#¹Û#ïZz`,]˜rÜÕÛ/›,F;f¡•÷JÊÝW¥PÕgß+¡ê‡Š©}6\©þŠ 3c,NÚ©[²©sŒ±á}ª´ùä“ùQ>D¬ äª„Ë–-.Üçj…_jŽå‹ÉŒýÕ»„H#Só±§ÂÛTB‡—5$'D½[šƒP˜C·GETúœ»‰2.*Kù6+7p1XºT&âýKtPNk&Â/:瞃©¬»(¼ÙË78´#”¢ÔÍ•'Ôw«¶êÂÚQ?)>Õz%)nþ_RqøU ˜tï³HêC©êA¤eùÇך¿lᢠŽq[š4 ÛyxÁSÖµt烪Ó.ÏΧ?w?Ê¡ÖtÊ3÷sQj'tƒýœÿ*#@Jõ<š¯ W©ç5K·“ÍdŽÙAyÇcT<Ä…U {TÌ‹Õ'$qOHÓ~ð0G#Štj7o$S‘@mÀt¦2–#IëL`XŒucLe,ÀzÓLdnç!i¦=»ŽxZiB7Ó.d1ï°Îi³1vޤg4Ù_`zÔÍ(K_<ôaƒõ©]‚[y§£T²0K0ô5^鄚x+ÈꨮXÉh¸éœÔ7M¾Ñ}3š¯¦ŒÍ÷sÁ¨,ÇÏøŠÈ|Ì}«`Œrì@ú ¸73yh2ÌE[Uf`‰Ôš•Õmöˆ×.§õ©¥U€ªÄ¹aÐ{Ô² ‰” ç 5*F¶ÑJò|ÇüjäI•¬²Kó¶=É©ÔGmlìܱó¨cWòA%ŽXúšÎÚ=ÄçqËSU0Û7zóRB¥™Hä/ õ«‘4Ž9Ï SZÄX®AéQêZ”6˜Œ|ÏŽ«®£»$HwcÒ¤Ô/ÒݕɑM-Õ¾ø¸õFi…Ì[“ñVY<ô ªÒ°`9ä•êŒþ4Û×US¦\»&ž œ{Sg,¶Q!ãqÍ6刴‰{±Í:ÍD–»^”@Ûm>ô°¨klwÁ©ôëWYÜOÝ4¶ð˜”’0OCKo‰ #“ZQ ZL’àqŽÆ´mbXâ’c“ cµ^…8d“«ãŠh;­âlwä~5ɹbp>ïQøÔNåŠ8è:Ó¢C1`ÍÐd –Î&»¬Äì\RZÄn²s´t¤–p¤Æƒp1øTwrª1…6ÔW2€Æ%Š’i’ÂÌHx8'ŸZ²g]:ÙrÄt5bI…•¸'®ÚåšþèáK;ž~•ƒ™.î ,ư”KyqÆI&º[?ìé‚Äó’GzݰÒÙGÌ:œVå‰Eç8«qƹ$óZVv‘‡fa‘Ó¥]·‚0ÌHÍ:p,UÏLÓï„piîŠU7 ÷§]íŽÕлºUsÀ Æ=ø¬ˆíï"%+øñYé Î0£{Õ‰ÅlÍœ²¯ë[7ŽÖúd‡9`€V…˘m$9ä.*BJ•ê@Q\É ! ÔšÄ »îM,Íæ°U?"p?Ú5-ÔÞvÈcÿVƒý£R]Kæâ$û«Î˜Øß³=9'Ò›[œ'zHâÜá_‰E¼?68cï]-¼Iie‚FäÖÔq¬Øì5‡s–(xÉW7q•" d÷ü…c\G½cõÅ[µ"ÞÝ‚Ž‡K ¬2¯PZ–6Xae¿Xˆyk¹?ÃíOÊMÍÔýßjp&5Ë}ãÒ˜v3pGyŒ…þë¹æ£‰w”fçsš¸ûJnnt¦·dØ`Ü"ŒêkUöù[‰ùUVßÌ=úŠÈ¸S,¾i<7\öÅgÌ»ßÌ=úŠxÆsŒ(,@ÜFiѨ§VYÛkȃh!ES·!Aª©¶ÔTÆôÏo—QæÀÇ¥Y’û϶ÚÊ<ÂØô©šë΀>cÇ•›0–{¶@9S·ò¬É7Í9P:V|›¦¸ ”Ù ¾© kÊÇ…Z ‰ŒPNýAô@¦Î|É]˜s’ ?¥$§ÌvÜ9ç?Ò›)ÞÌH俬j±‚xÛÇåS_!1À»ʦÔ‘o–‹o+ ÜñM¶V)·¹àQj n2kKî¹Æ8õ«.¥\‡ŒqS°*äÈíSÆÎжñ´˜Z¾7¥ƒ¬ƒhnBúÕÕ´`ÿ/z‡idjîûÃÒ³bFtùNy"¨G:Œ)?O KxÛ†ÏÒ´­+I$~d=¯Û¼vvÌÿÇÚ¡ˆªËç9Îæ/j Ž>Óö‰pYعªjBKæ¿%˜šÉÔdšþpªÐpR»šKɰ#<TnÞKɶ.zñZúfž-cNn®k_GÓŠÉF6üÌ¥ki¶""¼c“Z8äVò¢©Ü£­E@§"–ž>”áÞ³.gi%H  öë\¶§u4÷f9 §\þ¡q$·%!Aâ¬[‰K˜•µYÒ„‚trÇËI=ªÖžeÞ‰Ú(¾}ñˆ“’H?…K­^‰¡ÄsÎM?T¸ß‰9ɨ¾è_@0k(’¸•žN8qSEG‘¸Ï@jäP,Q _ŒƒVb‰!̪ž|áqò6I?J]:ÜÏp¹Vç?Ju”FIFF7sš³¨:¥³.r_ŒV–±"EhÊKñWuÛÏ-ÅUMÄLVR¶â€zb¨£n*Ò¥H‚JW¯9úsÆá“ÓšR¡ee:Ó¤mÌsµqøÔî`sÑqPÏ&â9èµ%°•ÏD©ëZ<"vË}ØÁQõ=j柚2~ꌩ¦¶w¡sÀ8 AÜgŽ7'j±P¿J\³JŠÇŒôõ§È8 8#µKv¡!U+4éÔ,@cÉ`ˆ¾ÿžk>Fb‘ƾ¹üj«œ„AX’Ü ‰Dqç ×JY¼×ØÒ©¼ÂY6/E«Åž˜©÷qçüæ¤$yïQÅ•IeéÁ¦ÅÂK'§ó¤åY$=ª¥‚ùš‚±ç’j½˜/xR 5ZÌnºך’(üÉT88.OáOEÌ£ränÍI’ã#ø³Wn`2âBÛ±‚G¥X¹Mÿ99ÇZšáwüää qVlbÔ°ãkJ·/8% *󊱧ÂLŠä/5bšI¥”ãk`AVâ]×rÍ6ù ° yÏ,˜cŸj¦÷«xY¢>QïYúø¼—£oÖ©^Þ}©öÄ>QÇÖ­…ò¢U?1ûä~ÕcÊû%´hF]¾vϽXòþϧVàý* C7ÉžG,}MV»bÃal°å©ª÷D)8ÇÞ¢A…P¼«(éQOÀ\r|¿JŠ~0?¼*{H‘&iÚN*µ¤À²^l<|¤þµgMZr¾Äþµp½ó]0¬#å$Ö¼qˆúÒÔ”ú(¢ »ù›ÛÔzÖF» ÆèžŒ=k7Vcp=*;´:|§€GjΊi<ùOª¤2¹O˜|§¸§q›[ælç>Ô×"6Á9=i‚6'­G‚À±ùFN*8@2ç*9¨áÁ“sœŠV^HB“#ò«ÉšŒÙ ¶¨÷rgŠ}ʈ|‡ „ƒZ›md¶ òªä¹:ˆ$ˆ'Ϋ޲–À9 ;ûÕJEwœ„Võƒ>ÈøÔõ⫌G‡=A¢&ö9©xÃ1ûÍóÆ›#ãsSñ¸ž¦£`¡ 5cïPŸZ±h¸EÇrkoDLEOËZºbâ>;Svî¹4FŠo¥~¡[“Da|÷n M³“ PÎ^àµÀP/¾y¨æ-&eÇÊ)qåÛ­WuºÛÛ½DêAB½EÿÙÿØÿÀððÿÚ ?ÒL™›Ö¢¶%®‚(Ý×5bMÀQêsOrYœ‘…ãoÒ–ðþýË /Gµ%–F$`•$çØo?{Ìjäó‹Í{¬\õ«3J·:qcÔU‰Úê0X¢¶Vc1Ê(ä¨<~5žXмàŸƒ€%?JzÂÇ ÉäÔ‹õ¯‚ÓÛFEÆ=ê¶®¤ÍC²øÕmQ OzŒWAc¶´H‡85Õi¶ÂÒÊ8ÆsŒŸÆº 8|‹xã†MOVjjZ(¤¢Š¥6LÎiîÕ)«n¡ÍbÝDP—泦M§põ¦à,›‰!ñýj™!fßœ+žj· ûú©~W9a対½êu’3&eýÜ@wïR¬‰»sˆ={ÓäYÛ'¦jYõhóþŒlc>”éµ(ùò8ëU¥}ç~s'nجÙeiÌ$³Õ•·’I«å§‚?4añÎ+VÁÞñbòØäúâ´lÙ®1. cšK§#húU]fCö’=1UµGĸ ÅE!8Â¥šLapOSíCi‰4¶ó³s8÷«£IŽYm®¹ŒG¿j°4ôya•1ŒÕòzv§éè*î; (¢Š(¢Š)²¶ÔÍAvû!Ͻ2vÛj¢VǵTuû@|pvç5X¯šöȨŒ‚wº†9ʯ½d4Â,pÇ?*Öt“#Î2sò­B®sÇ®ATÉiŸ,ÙïÏAT‹4îY›?^‚¥.q½G‘Ú¥ ²ã½Jˆ¡†HÅ¥s†‘cOSþJçSŠqËéž•NMeö«ÇŽ\{ҩɨ_•ÞrÄwª²_ãóV­²ù÷b4±ïW´ÈÕì`ñcq«Öy÷!˜|ˆ3V4÷ÿGlôGe«Ú$þVŸ$„ ¡›o·Å[ÓdÙfíü!Ž*ƒ;>ö ì[w ¬W-,ŒßÄÌN}+"MÒLÌx,j¼ò‹‘ #ä‹1éšYŸÌ™cîĽfYÂGÑ1ƒ[6 ÞZ6x îúæ·|?¬^gð²ÿãÕ±¤#Cÿ I9ÁÇñT5øùqß5Vìþüz…Fã°o9üj+t,û3ŒóQÀ»›3Í>6!6FaÕªõ³l‹Ë‰rÙåªä-±6F2Ýê)TïRpýj6V3!<Å1óW=Mh ù@ö­èÿÕ¯°­EQô¥§RÑEQEQQÊà Unä¶dqP\0è*²‘ÝÎG­g‡g‘œœ ª1sÁ8£”pAà)Ï5sÿ FÖïY$™Hé¶œBð§ @éC¢ˆ×sm(‰võ õïVE¿Ëœì>õmmþQÆ)²G(@¸àž¥h&Fƒéޔà ù;J”FÈ¿#•A!«E-^Ýå¨$0ãéWD  ÂŒ‘MiUÚéè*;©¾ÐНAŽÃ­Gpþja銧˜QöÙô•µà’?³Äh$äU¤#‹÷ ŸV5¥ïÙ híÃ;ªô7FJB™¨þÓæ€Œ0YzÔ/p÷µ÷nnâ£iÞfÚ~ów§"Fädbàun´õŽ(Ñä‘ p:µ9Q™NïS@ùå †PÃŽÝê8Ù^p_(}ïjdeZPH#=éC*Çå™1»¸ô©Ìªy&@»'Ò¥Þ«SY‡BLóO õÏr+9´ÀIfp±ŽG½g¶š¡šYå#Þœl p~P>cžÕ®Ü|£Ôþ•‰]¸à•«f¡VDPõ­ÍŠê0$c>½kcMP"™Gj’¸ŠÅ•Ë’Z³Öo+MHFF\¹5HIåYG#œ“YÓN.ÛœÈ'¦j‹·š@Œò8&¨ÊÞiYÆÞõ«¤Údlè?lèº~ò&|m…Ï9õ­*Ï#Ír1ŽžõøÖMîçßš£q‚sýiÖcÍÄ­÷G)Úd^x2 "dF¿Nôë$3bgU?(ª»}(=IÏçÍ`ÎÚfÝ÷‹œþu‡8&âBzî55¹ÍÊç¶jÖ°ê1ä@üªÖ“´Þ(n~SS™ •£+†ê>•§3s$%6F Vƒ·ïZ26œñPIû¢{»¾r*…ÄFÝɇ#œ/QUfSósôíR[N“³Nܽjæ›z“y‰4Ÿ)彪͕Ê˼;ð@ëS¼bEœ(ô«ò[Çs… (éŽõeáYÀÅDªÆC¹AeàqÚ«Ek—mÈ7:v¨Rß,APLR&-À€ZìvÓJ4P?­8}ž&>6­1¤†0áŽ:Õ[™ãdgW8ù^yP(0Æ«}x¦H“º &epqZeŽËÚý¢b¡T€9æ™4S<×ÀUÈYD­Ô“§J¨Î[7SÈþU]ÜðÍNr6ÇæU0N8Ǭ«¡ò áv& ÀäŒp*p˘̠£$úûTR5À6ÒI*=*ÄžsüÀ„'8ª“¹•»í' {TÉ“ºETËeqíëR[ÇàdÂe¸5$ á» 7u¤Y|”‘ÈÉbv=ÿúõrÚqkòä„luçÿ¯V¡“ÉŽSŒ–?)ÅPÖÖÒÔIËUR¬1®I9ÝõàÕ=J6H"Uîrk>Ò"Tg €qÛš§o•*—Î …S†?&UŽ•ÑZ²¬¥ ¹vÉ í“]‹*‹‡ŒÊ :ä-méŽ<ÇBùb íU5fd±Ydù~uÀôªÚ¢JºrO1Ú|Àú TþbÚ$²ØÚŸnÅá‰AÎþj ?2Í c’Üþ™ó$EÎKsøU«°JMã5¯«¨ŠÅT7üëBüµPñåUe-DËëÄV7šð¼RFpÊÃñ¬á+C$n<ûŠPbÑÞãªHüÒEÌ÷Wn¿td þ”ËçieºeþþœU/ Èå®#þüj»´ÆOȟƤðÄŒð̇î)ü«vââ+hL²ª+rêæ;H|éOËÚµç-ãß!Àª–Ú½½ÑeŒ6áÛÖ©Ûëv×9úÕxu;{Œì'"®ÆÅÆâ0*ü.e]Åv­Z· ãéM¸•bN¼ž• åÒC27ž•ó—É5By DÒ`)*û“Ò±®æm…ñ·/¹5q#mÝŒ‚´aAiþã[¶‘-¢ŒtUÅjAŽŒvªMÿ2ã  ~\×)u¶MìÕÏ]ö™=*.'ˆQš’ÃäÔ-Øvp >Ç弈ÿ´éRê¬be8)ÁúV¾¼Œ±ÇrcùOÐô­-UHEz¯éY2ÊËò©ÚzçÖ°ÞV Áîk)¥lzwÍEÁó2sP¬‡vTûÔi)VÎ}ënÎF’1AÃ’Ç5¿¤Ë)¶v_¸Ir[é[:|ŽmÉÁÛך‹Œasïž•}Ú`7Ü1Á «LÎ9ÛÁïUnbù˜yˆÒgÓ•vë ¹”oFQÜcŠ¡pÁ÷ƒ*[škM›F–E(W„`óÒ¢iÁµi%R†<ˆÀsÞ£i·ÀÎ˰¯æ¥¤‰`¶1¼ŸÎ¬«=ͬV`–ÀÍX ÓÅ“ГQß½œ‚§éUõ¸L7î2|¿…VÕ#ò¦M½âœY%zdÇ¿&›Ë‚±Ž `£ó4±œ*w$ sÛì ¨ØAìj{Ý3Ê-±þBxÝëO¹°òó±¾^Ù¨ZFcf³:§—ÜU',§qNü¸YBnòÆ}pjí›2[È¢6o)AÈìjÝ»m†Ü˜ûÔSÆ&…]äf' ã˱ç@¤fc÷TŒSn”ɱb}+#X¸’ÅŽ#)ãÖ¨jnÑ]*'DUéô¬ýFSÚ¢ôP ­‹'ûj%Ä)à1ôõ­1%¹ežÜíaÃjѰ 9Y¡8=ÕLeš49ÏÎÀS¦ªéÌc”R+¯3m„Žœâ».‚[î8s¥u->ÈàqTÖSs<{Ž˜â²#¸7·ˆ®p®ÜUçûMÊ«xª:¥ÇÙõ8aÉ 2š«ªH Õ<½Ä€àÕKù:‚Cœò tæíÖº‘"Çn²1 tÂ&öéŒþ•”¯ûælõ%«Žf/+1þ"Iüë˜vÝ37©54GtÑŽÙ« É{ö,?X±®¢»V®x¤B:©Çå[º“¬‘ÉÏÝ<~µ±xC£Æ{ ÄÔb&&‹èAö®rê6Xü¬r9 X—Q²¦Â:tjŸFÓÑa3N2wV´»XE»OpG …§Ó­‘`3M×ù]C.èG,· *ÞQL¼‘æ‘ À½K·›‚‡#Ö­i®Âè(ôÁÖ§²,%ÆÏÆt¡‘{Ÿ¦*κŠÑBî?•Kª*´iŸïUxGúPUäI¬Í-IÔ“’j–œ ½@9šžä裮î=«C[“k"zœãÓÞ®jOª85 2¬CÞs“YR4bÀ>nã¸Ö|Œ‚%#ýfy4èdÊÊ#Q»"¬i³È<ß-TŸ/$JšÂSûÀ˜Î2jr¾f#o+[ìëuåÊJpp£ó­ͲL®ßA\½í¤“k²BGÞ|þšæ5 gmbâ29.[ðÆk¼¶gÕ%B;äÖŽž>ÀÅIÌRÈÕ&ïì2ðÍP¼Óðy£Ò¨]iÒ0i¾ÕNæÅœ©ÁܵZßM“Î *‰ßj4ù|ÝÒ)UñPAbâPÌUï[‰líÁÍhÜ00s´~~Õ¡6þ3Î4{ÄòÁS¼¸éëU­±&§0c·z‚ýzŒ6Maj25ΰdŒ¾Ðtª:„¦çT’@>óð?JϼvŸWAÝ€>•Öü…’Oº—’'³H¥<…€®‘ž6·Tò&ªÛIJ‰F-bÁhgY¦EùàV\v¾p’E.qR[ŵ˓е¤Ú”¸iŸîÄ8úÔúu¾ÉŒ­÷R™s+Æá€|ƒÓ±¦jJ—^aÜx¢’òWYÃóéS0Šu_— FNGj¾V ´R( ¼–î*ÑXæPvà“žõ ¬¿(]¸<åY7’)íÀSÈÇåY×’v®5?’ªîöîŽõ_w”ªçï°ý*ÞR«¼Õ5°SnÈHÜì\ý ­-7céÒFq½ˆcþé8þ•~ËkY:1ӟ£ U™†cüêù%'9Sž½ª¯Ü‘Žr¾ý©ò#nó¾EP@ü9©¤…‰óü€?*–HÎï0ÍOV…[?{æÎ}k[LŠ3b³1ûùlƒZH†Ø9o½Þ¡¹™|Í¿| è:“YÚâÍq±2ñÇÀÇRjõÂÉ?–¼ªqN‡äË1?xöü)öLmà•Ò"znO¥>ÕŒ1;,dú·¥E$¥£]¹Ü[žõNîs&Ò3’qÍT¹”¸r}i‚g8¨çåÎj»¶;ÓNäÁÀÝÚš£Ë)ÆOjE‘ëVtâ^Ô7ð³¿Jè´ ßÙ»Fs·é[ZFæ°‰ËІQjBR?xp¿€þµNþDXË’ ^*½Û,zˆ|e‰¦ËÆw)Ý9 ÿ ªWv‹›âù¢c?»Unm–7óî= 4'›2&>@sþ4ÛHMÅÜIŒ®ìš-bón£ZOʺÌzqŽ>•¾0W¹ù|ðAdkJT«ƒÃ?ÏÔS»<¨À»¬Dð Ò²B™¦ç·ëYáL²„¬ëÕûv«ª•NÖü)’Äo58í| ìüºÓ%Oµê)”ÿ]th¢4£ÍuÑF‘F¨€®‰"… Å.OÖœFzŒÒ‘ž¼Ó&ÿQ'ÿ*†ì(³— `!Ç Gs³È01´þu˜²2Ùϵsž{+ŽwV9˜‡ëžØ«7¸ò°â´¢‡ÌDºò¶1W Áf 3Œb©\F‹tf1‚²¯€K×}ƒðk>ì,wløè~Z°Ò ±Ì éÀ¥žà’® ät¢{ŒaÁÆáO°œÈì§å#·­]Ð.<ÙáY3Š·¤\yÌñN•bR1å¡°N*ýÑÊ0BFps޵v}» qã§5 £´1í¶ŽÒ«‹Yd·‘C”^AõªþK¼HUw½ !–x²^F#£óî¬Ô´ð¤œRgƒ&XÉSÀ°”“cnl̹q+ç`S“ÓëY×%9ÛŒÓ3±œ^E&K¿Â8¨\±aƒ÷EN›®-CF<¹£=?§ãZЧÚô¨ä·'„à€:óŠÕˆ}£OGˆ,}G­2VVU•Ò¤††¨Üº¶Ù#{èjÁk¯^Œ=êH^ …0ÎsÒ´t÷µ¼€Ú·úÝúUÛ7‚æñí¦¤ 7˻ި-î ²´n¦@ ¿íTqLaFB7p­>(#ýñ˜çÒ¥¶³Š%í‚» ÄJ’ TA™ˆóQÏ).bF €1üF«]Ýos _»[ëUîn7·•É<{ÒÝj½Ìl’*n€_j‚å É´¶p(y31á3øšu¤Yî_îG’~§¥-´YF™º'O­A9ØÚrIæª> äqÍVr Ç@Z´˜ˆQv‘{{êg™l-âHÇîÀçñÍt2H-"T£­RF¤Ï§ä+ :wÌ—æ]ÿ‘íY¨ÊuPÏÈϠȬ…HëÅo]AÖÌ›F1‘ŠÖž$–&M£jµ¢à³‘ØYz$8™¤# ÂÕ2,39±SK AÁù‰…_½»H#`çéô«—7 ›§Ò«3oˆ¡9ù³X­3\F"-œ6k1äóã“ÐÒ ;²ÄóëI ºfL¶Ó‘ŸZHÓdìËÎ U¶E‚é®_™ˆÇך4í°^‹‡Ææ8ÇÖ‹±] _¹À­Ž£5ÓuçÚ¶Aã4”RÔWgÏž:U]M¶Ù8Æ* æ"Ùýê”FÑþñŠƒØúÖPÂÃ2±Qè}k.8‘¹v#Ò¬ 4ó f0™´á`‰Ÿ1ˆø犻æ¬(ÌÍòUÖ7›÷˜àçÖ3†™÷‘ÁéšÊ}Ó>ãœv¦çtŽcn6â¢l–;†1Ò s¸t©mÐBZ|òF­Z°o²†œ}ö]ª*Õ‘û2¼¿ÄËLŠe†è63æ0Síš~uåjßxJÁ[=²iö7$^Çw˜q­ið8WPPFnýÑòŒT3M‚Ëþ½cê—Ä»ÀWv=ë>úäå£ô¨Di%ª kœJ‚H!m*í¶eóìȨe‚&°ŒÃœÔ |¢pI gëYOò“ÿ]f8 Ç8©ì@Œ©S•dÏ>¹­]ü‚ç?#&yõ­=-Œ*Ù?)Py¢UA&õÈ.HÈõª×ALÌÊ1¹çPܪùŒ@á©-ìÀ"O7çÇðŠ³¦iªÍæ,ûd_ASØXÞ`“ )ÛY&U'!›94­•|¨ç ¹çè3Kåì¹žäæœÒŒá·HxÕ#ݵ–mÛ¦|¨ÿgÞ$ÁmÞO½#eGµT¶Œn€ÆBwéYVù·PÇŒïl6}3YÖQ™®KžjYò“²±Ë6O­I}‚í¢fÜÙùO­>ñ W,™ÉìiÐ!’ÎxÇÞ Wñâ¯éð™ô+¨e÷¸Á«–qt‰‘~öâ?#š­åùÛ`+†ÀȬ˜â/2ÄÿÌ+:(·LˆÃŸÂ®jE3ËvüsZ:½Ø—ÇÆ{R¹aØTR… ò@ª÷("½U#æù•C2í»U#“ŠºŒ +¸qÆ1[öwUd.¿ ­h%ó‚À`c¥ Dr{Ô–öëoU倿Ÿ"$Àì*¬Ä™HRî¿…aê’ï¹}„|ØÎ>•™&e`¸ÁëQ@Û¦`I^{÷¨,˜D^v\íQQZédôäBcyXòÌp*ż% ’æCÌ@ö©¡Œ´+n8úUcò± ؃ºªƒ²^OCjº² ö=kFÒæ;¨‹§ððEtV7‰{ tþ´ŠÙµ¸[˜·¯n MVjZ‚ð퀷½RÕÛmžO­V¿m°ïšÏ*åx8'šç78Ü:žk£vÚORy¦Îd9ˆƒŒŒš'iFb|…ã9¤˜È?vÀí«1{„ Å,‹€¥IÛŠYœbœ»áÇQ­7†niœ1æ™#‡‘¾Rvð1Ú˜í¹±Ž)’1vÀçU›k0„Hü°ä{Vî“¥öÜJ2Õ¯§iÂ-²¿^¢­3*`·zй¼ŠØç$öô«³\G Ž}ªŸ–ÓÝÃä=ë%-ÞûT.ÿêÉ>Þ•žµÕñvû‚­:#G#¯so‘H¡f\…_ž$hÙBÄ`UA YFôÊâ°Oš)7 rXõ0ž[8£(y,K ¼¶ xqù犳x°4 ¨ÃÁa´zšåc0­äXù†1ïUÆdš2ç?0 ~5™Ïr›Vγâb× Ç±ùÛçî‰9ö©§}ó-Áòjy[3 #55»åϘ,sõ¡¤Èÿ¿Àó>áþ•rÂA¿÷˜Ãò§úSîŸdXè_нªÏäÛm}øú ³}(Hp>óUBJŽ>ñMsòîéÔŸZÈ—=;šq&8vã,?­NÁ¡‡h¯õ©X4qmÇJ™yµŒ©ÍhZúw”q”9«a­wZÌÔñ±’«YZX—hê«Yú†Øãã¨Zg‡'&i#ìÃ5?†'o>H‰ùXfŸ LÞc¦zó[Ý뤭ÊÇñ ØyûÍ\ÿ‰ïì¶C÷yjÅ×î‚í…O=j.m"’C—©¬Ä™•ÉíÞ©¬Ì¨®ÞêüR¥Ï ˜Éoj¸ŒnNN1–>Õi[ÏÉ$iêBgÀÏÊ¢œ3ndš@ˆ)ÛSÉ/#àŽj7!JýáÐUB2/\ÕP7`¤ñM¹Èò3è;Ñy Z»£pH—Z[¨¾Îä ÖŒ“$py¬xÆG½t³Þ%¦œ’窣ß¹=ÂÛÚ'£¨5Ãnó_8QÈ®nk™%”ÊÙ$õ¬)®^I7g>•v×-±-É®G—OBˆ~MnéèVÑ20[š”ŒUÌ`óS‘Ž´’1¸^¸8¨ožÒe_¾PL¸à‘G\qYq–QµÔ¼×%ó#aÔ€ sgz±;⧨¸‹nU7p? ±)š3Ñ2jÄ*¦U=8©$|¯‚Alcð«—7%‘$•òjyò¢@8ݶ¢…w]ÙwÒ ´Q&£™sŽKQ[áïI“8Ï4·qîT“8glsôÍKªÀJEpOÍ#¥;Q‹1Ç1êüt·m¶EóHãz{Ôbõ"ÓÞ(òe‘pAéZa»XìÙ#ÿXÜQZ”‹fÆO°9ªújææ4#9a»è9¨tðLéçŸÃš’í†LtV «z¬CíûŠãUF1¶LtTqü¶R!ÿž˜ªË0K[ž¾nAUÒ]ºi„õßšr‘FwÁÂ~ÔØÇ“¸oRëIùPùÇ¿ëD€ÆÝ3­$Rîcr3I›ÓièNiæÝ# £;>e=ñÚ´ ¢ˆü™³ò È{ãµ_0_)ú¨È¢oã.IÁ¥½}Í.òN¤ºbKî=ÅC#!ù¶‚2µMÆd xdUvËéÆEY?½`Š9aϵh¬_h™c ÷—ç?Ý«ªžs…¨æ¤uŽ(Ý‚ñŽM[ž8líÙ‘8#“V%ÛÄÌ«Ž:ÖMçúEœìAÝÎkžºo>]ÜsšÅ¹>m¼Žy¬ýñ~³Å7í·RŒ{5„ؼQê uNË—n€W[<É&Fì3]²ÈÝ®6æWÔ5Q’ela\DÒ5ýûÎöü…r2»^ß0Ïþ•¡xqàì@X¸BñmSœ*ÕÄeÓ z Q£ÊÍlðóÃàÿ»Idîmš!œîÁúRY;ý˜ÇÜÒ´ãU¼Õ9,{Šœ!I•O'¬Ùù€üÄiðFä1è£pkG€I¨<ˆÆì{ôcM„IvXÿÝRÞZ}¥xr­Wõ-,]¹‘éVïlé‹7ÕJYY‹y«òÆvíßãX—“Ë$¢9_ _Mµy4²9Fè‡TöÖ†@%ŸÜ„ôô­=3HÞkž‡µ£§é€*Ë/$òOu+"„ˆ€•K¬_¼`·![š~§vÐ$ RY\™Ð«Œ:þ´ýQ7jÑKþ±GZv—x×*VO¼;ÕÁ­<‡¡«ÇžµBLÅ,ªß:9ÏÒ¹;åÝM;¶sé\ýà\H¹Ü Î)˜*IÜøp=¨À*îy‚ ÔóSä‹FÀËcxÏcWB4Ù.îÏcWˆ±uÆNsÍ:dS#à‡Õ›+v·Œ\ÈY9íšžÚ†?9ðC RÝ+½¶äb¤ÔÕŸLEd0ÂþëðÏdª0xª1“ÜF%ûÃéX˜äaëƒÆß0ùªÄ,‘Ìôeâ®i“Goz!• ûf­iÒ¤7JÏÀÆ >ì råsÀ«ÚÌ&w+e$lW5DÂYNUÍ@[ CGJÇ-ÇÍÐ Ê$íö§Nw,»C©àZ±q’–öéPÍõj³uÒuèFM:Ý ¸Â£dSSéÐ"¹–a•C•_ï“SØÂªÛå>êú“Å=˜¬åä»BŽž¢¥žw]Ažt ÁvíqøÔ’Ìÿl%€-ŒmþU ’n,ª2ÍÖ ’A#‘ŽI䚊GÞÄc$Ô26gRayïM”–™v.xÂS[-2„ËZpÇå§=OS]¥·Ùã¶]¹cêkbD)ŒäžI¦_mÒ«k{¿³Ûos“Pjyû!ÛëÍQŒ,8ÜHn¥bÄ¡ qœ’:~5›†‰ÁïTôÛŽëeÎ(Ò­™nÃàÓs÷€ Cô1 ýLÀo}øÝiF//·í’+DŽqÛÔ(‹[Ç{Y÷d4»óÁã>•Êjr nÝóÁ8ÍsÚƒù— Ã¥6ß1]FpÜðví¥üÇiüiÚ[4w±ðH$δ^+ª=kyºÕ;´U%Ç$cµÏëÐ*^,Á~øäzÖF­[…—52#þ–̤Dž€cŠ¥l7\3UTU{q™Ù‡ÝQŒÔÒÜ©Ÿõƒ$ ½wB‘ƒÌ«»­Ï]¨:¸ÝÅ,d#I2IaôÿëÕ”™NŸ/–%IoÃÿ¯S¬ƒì±FÜå~aNW,Š–ÎqH'ómãGùœ6H²#EnX7?J‹PŒyI*©&3ÛÓ½G¯Y¨Ž9£_ºyÇj‹X¶%•WîõªêU¿y”)_qXªˆôŠÉrN8Ç4¦O3LLƒ˜Ê†út«²\}£FŒwÂÁöÅ]y¼í20~ôm‚)ÒíØÅ½?:¨ø Iì*£²‹5k‹¯9—ˆ¸ÿç5¡£[ý¦ôÏ*ü‘({€_Òá3Ü›‰Ê«RΖ߀¯ÈÇ|qSÝìŽþÝÊ•Xß$~4åRê'+€’? E!îQÉv;AîTIw^¤å€,Å—>ÕY7K)8$äUVçÈ…ö€ ùT¥C/’¯†íPßLaG a‰þ•‡Í„K+n*äŒúñSxqŒ!$¡;~µ&€¾di$‡$+9®˜œŠÝª×Rvç Î=k3S™vÀçµJí‰}¹éÎ*¡ùv€6‚ŸÖ²Øùq·äΨ°#‚¸T–Ä,Ó'P ÛŸJ³§:Ç$Ê3×+ô©ìÜ#HPj›¯Ú/äq–TP¡'š¦ß¿¼–L=j©Ì·27Þ ³(’8ªpõLÂH  ‡Ç>¼TÌ8° YK‘_,ˆ¸';…ghç.½ÉÈ¬àŒ“n^ ëZ–væFÜùTŒçêkGN³yÉ–\¬qóõ5¡cjÒ2L„N~µmÝ\ªƒšµy œ$+÷U‰ßÌÛè”YƒæMžœ*—ARäž„®?Z~”¤IèHþU_P´Š€aÚ³õÉš[¼ÈãCW”¼üuQf“‰W ¦r>¼StßmY”©ä}x¥Ó¾Ò$¦F+AÈT,xâº+— lå¸ãlÌØ…‰êER•¢`üÜšç.ã©ùºÖ-Ê!޵–M™Ýó@úUxæx™YNH5]&hŽáÁ"®ÛN'V8Ã)ÁÒiwë} 'D8a[¶7‚ò"Æ^¢£½¹BG;¿¥W×ÔhOñ+JƒWPaBzî¨bQöyÙ‡2sôªvQ*é“ÈÃæ‘öŒú•¬Köýç~)îI ÈÜýÓøÓ§;'…¤nWä4éH£9çid.deS·>ƒ“QÊeiZ48ôÀëLÈÒ0SR«IíšÐÓaHÎT¹÷éW,ãX‡ÌA'Ö§´]C¡VÁU¦]ÊTô"³§íßÍP7cƹBÂKG2P61õ¬+ÛFÌƒîæ•v6ew{T1”ÊíÊ‚yµÈÇëŠo•æËÜVf¤ìò„QÏJbag\ž!ˆŸ÷ˆÿõÕ8À‘Áò£8Øb«Çƒ6ûˆqY:àiÇšŸw“ǹÀ¨µRg“Ì_ºsŸÄâ ÕCOó¯CÈüx­-4†Í"çpå«SÃʨ¢0ð2ÜV–Œ‹A¼Urd2ùhÙ*9ö«¬£~Å;ˆãå‹äX³“ŒŸj– baŽ{dŸîÔ±C˜Ò<ð9&’`„#qÐÓu„n¹ô?…6ì!ØËȦÅ#·™œ‡ÈËcüö¨`™ÊÌÍÃ1±ýJŽc³pIûÔôÉ.ÝÉÏ­_€¢Ù<ƒ ¨ {š·UµgèOsR£ïÀÏ8©-/„îŠNIë{‘+š[„ÀêGýjmFšÆeaü9…>î15««w"¨Ô0ð¤u5ËÀ~[¹¬‡à ²­SK6FÙ àŽsÆk~ËȶžiU²¯µWøÍl[ùpÉ#©61R9y‚!PGñVf2ÜBê‘•x'‚ji Ë*®ßLÕxþi„‘Ý{Ö«<¦GÉ®ãšËÚL­#tNµdgsu|¨ƪ«ímÍÆr?:ª«îþõWX”ùvÙÈ3ødÔðEæÏ·úUˆãß2EþÖkA•xp¸IGä@­ˆqm¨ÀŽuçýáZ1â‚G ýE6IZg!/ñzšŠêåîÜÆ!SßÞ4ɦiÎq=}MpwmݨëMheSæ÷CíÔÒyN}»“Þ£¼(!3ÝϹÅQÔ& û´ÏRçÜž•Rú]ƒbŒ´·,VÖÝVÇè3RßÌË¤ÙÆúÌúcŠ}ì…tëu—Áý*5|2†Îßj¥m1 çíU-¥>bŒñVÖUrà8<ó[±Ý¤Ñº±ÁåzóÒµÒádV^øÅS™V(ÎõÏ8ÅdÍoåpÜñT$‡`ÆÜäÕ›XÓïcæ[T(y_˜qîÖ…”Jq0ý*ÎjÿzµY¯ K‹¸q…eÿ>õÌ^Êc½»‡ b8ëîB·sÅÓv?žH2G`2?*}Å™R}ð7øS§µ÷ºþ•¤Ì×W!r@ü1LÑÜß#8™¥9šà¿¦kB÷8Û»6ìýjö°çrD§û¿>*Ýùù–0pCT¶5ocÒ¬M¶ Ú>ær=êiŠ8öŒc<{Ôr±(îêv÷ª’ù¦&–T%H5^Mæ6vЇåîîÉÍUŒªÉ# ãšW# ¼ÒGºGšf@§D ‰ça÷”ùÒÆ eoâbØm‹ly¹-W,IH ÅÃKU«–,'^ôú'%NíÇ&ªHæIvO'Ö«Hæ99Í?~´xà}¿Î("c ô£ÍÊ3-DÇiÚNF욦[ ¾Iª¥Îü¹ýÞì ·Jè´¨Dv»ÈzÚ±d‘ɧ4q»e”Óš±%¬3I¾TÜØÅJðÆí¹×5ŸwÃ>ðOLq\Ö­mö{·Ú¸CÐ ÃÔíÌS– …>”ÛYK¿wÛƒïPY6Û…`3’Š†ÈŸ=N9$ô« 1…®Ÿºàƒõ­$¹{uàOКÑ5¡ž5ûÁ¸¦Ý@ÆX§Eô-ŠMRÕÄ‘]¢mVÁlv4ÛûvÞ— ¸…:\̺Œ†Êã®;Õr¦àá—’ÙúÔLì7c4²âÜc¿ðŸj~£ ³ýÙ뜩öæ{¶]˜æ™l­µå#æÛŸzŽÈmY%ÇÌAU'Þ›f +6>l`SäÝygoÎ@w«_i-ƒ „W½XY÷ ‡€]€Nõd1XÎáò¨­§*Ý‹‘úV“0HInеœÍçƒ#p1\œò‰Ü±àv®zi<çÝê*IAû ,ßx7øÕ«“¿I¶gûèp>œÕ‹ƒ»M„·ÞSô¬ÝVóì„ù÷@þu,¦ 6çyéŠÎ’S*¯ÞcVÄ_d#saІ'¿¥iϰ‘˜ >ÿçŠÓ•~ÈȤüÅsV¡å7?Ê@5zƶÆîi2$VíbÛžïØ*…–ª÷ªEå¾åÏ¿QU´ÍRK\Fq²MÝ=@ÍWÓõŸQ)ÆÇô­¼`×AšµÏZ;L^$‹Çl}9®gZ]º€—yüëT\]¬9©Y„wL»¾bÀçÓ#“ÌEÉËeÙ·õýzIe>v7eœƒŸLñTt(þÎŽÍ÷ÈRhÎ-VW#ç+íI¥·‘·ñà¥[Sæ\(‘ðKÿÖ©`Ì÷éæ·WKd»S!ã~jÇ +gæÇjÒwH®7ÏŽ™ïWK*JAçÆrH=è)’Ë»i# Ý6GÝŒð¥W¸8bÞœVuØRÀb©Üœ‘ô§Æ @6ÆÒ}iè ‘ª¶5;I§®]U@Âɨnµd'Ö™q¨y12GÀ隊âôCUã=ë,j~lÃ,G½e5É•ò[&³ Ñ’NMkÚ^@јÏÞÆsW ¸ˆÀb#æëš½Äf/øªK{vœ å\ðz¹§ioq‰dLñVl¬ „Hã嫒ʰ¡ã§«s}šˆÀÎhOr–Ãn3Šˆ^¡•ñ¼àTk1MqE6ï8ZŠJ9fXÈwJ°T7 3W嵊oõ‹‘VžüÃ"˜!…]HE ÛŠ‰,mb•]"Q èi©m n  ÝTî3ÌG<)?QÿÖ5‰ª×÷9.ŠË¾¯%ÛÈã>ÕbYQ¡n~Sòý8©/o|Û}»þ^˜JuÕ×™ ãTVJ ¿$…éKáø„’ÊÍóñÊ™ À©'Œ»ù‡QÀõ©õkg–c)*ŽO I!ýÐ:S‚F|ÅÉÈÀ«=öÅIãMÈŠsÔT1-ç@ ¼nÿΙkòJ— 8 Ù¦ÛmICÑH&­^å­d ÀgûVÞ´Åô·(ÀG>Þ•¥©’Ö´õ#òªjŸ ÏAƹ¤Là•…ÀÆjY–U·øš· iœ.x}95i—Î!Gn*‚èîú›ÜÞ0òc9AžÝª[M’ýî/p"ˆçëéN´ÒÊ^½ÅÑPåEKpÿh™¤ò8ÿëPjý²ñåƒÀú Žò_´Ý4Š8è? ]Qœè­åÀv­]»?‡vpÀ`=*ÅÛ3h™CŒ0²ôxÈÔ-Øöcüª†„›uKf>¤~•SFB·Ð±÷øíu}ë±ï]¬íOæžö'óâ¹ÏnâAÐ'5®0ûDj=9¦Þs ãåÆ~•Bé‹ã©…R¸bìuÀOïºÒîWùŽFúUi×S7,¯ÅXÒFë ¦~J±ÅiÙ5ØÈ£rÆ;’M_ÐöÏ$¯"É‚8þñ5wLÄÍ#:Êx£?élƒ‘Ž¥¹Õdˆr…>”«ó^H½v÷¢äù*¨©¿h¥Õˆ€G.í«“EñòŠ*Œ‘PËó²(ϧ¯Nfóœç¥V”ï`;ç5,!Š‘Â힤ñV-´NX…Ø êO=º’‡<­bk…cQgýãXÚžÕ`€p?ZÈÕHOvÖJÏ"¨¯Z͌º 2ÐÍtŒs²02}O¥lèÖ&îíY³åÇË_jÛÒ­ ÷ ä‹×Þ·Y¶@+¤¹˜CÀ ÝšO)8à ¡tÏ3˜ú"ýïs\ÍýËO)Q©üëúá¥¢ð¾´Æ@#ï©Ue%\08e9ÍVS±ƒgr*S4¯µCHÍ]þк—`2¶qWEôî@ÜrLn?tÛ†]‘ZÚ¹·"Eýôc ûйöüÁó¬QœÔVÙKÆ?Ödƒõæ¢Ó‰þÔN0& FzsÍ2Ì{*Ê8“$P•ØÏ}٬ˈÌRÉ þ* θ%tô&¦ÓÈó&Œàþ¦´ü7"¯ÚU›í?δ4'QÊN9Ê­8É#98È­ Ð,jõÏ!†rqš£+&Üpüÿ:çer_ ‡3åðÞ•½¥Mi¹Ó¥„~Z©kn ‘Y˜íU­ û4êÍ‚b=ªh¼—Vb2†¶T†P{k¡V»š×RCvëY×D™ã”g¿Ò¹T´— ?%\? ÁÔrò¬§•lŠŽṙ#»ŸÖª>d#Ž•\‚ûr8Î*¦‡Ÿ°Î rÎ1ôïV4Ùvi³ÃÞF};ÔÚ{íÓäûÌ+R2ÐBòã2Hp«öR” Í1ÂW­XÛÀÎ9y”£"; »’I©°tø¢†é‰|ÓÇú"$Ž2ïËšc6æiÜ?µZâV™ÚåóóðƒÒ¡•˳LÃïtÀË]#§±¨„%Û¨T@…mÇ’©àDh†æÆNš½j±˜wÚÌv¦jÔ*¦,ŒŸ–²5}2{‹”Tù€ZÍÔôÉÚì"ŒŒg5›©iÓIp€*•žœ^èFàä0Z£ifó]¤9-ƒíT쬚K¥ˆŽsÍu‘D° Ž1€ç]¬Gm•Àó®²(R¼¸Æ1ÔÔm.àAìk"úì¸d?Âj…ÕÆr= TÉù˜ó“Íb±%‰÷¬w$³z^ £ùRJšU\}Üþ¢®iñ‰®‘½\±A$Á}ª#)>¤ƒôÍWfÛ1ôÜED퉸ÿõÖ… VuTcò¦^eÊ€~M§9¦êÄÊȪ~@h¿%ÊŒü Uv—ÍAƒÂñøÕ&JªùGËUüÀ œSü±ö°ǽ*D ÒÆyéŠrE™ü³ÏJmã»Kå*… A⛨4†ïË(ŒŽ”Û¦sr«Œ*Ò¯S*#¡¶ê o (û‡9?^+HË\ǵ·pFi(üæ˜(ÝЖ+X–éîUcÀ§GoÌóäð*^œÕšš«L¿½fæ¹ýV-·’màVMúbáȪávÈH9 úV[&Ö'5šé†&•NTn´”Ε%³~ô·§bÂ_.å[ÓŠ±c&ÉÔÕvr ÆFj %b~¿­G7“ïSØeä-éÁ5§ ûD“Ÿº‘óWô`ÞcÊ~ê­@$-÷z»3ÄÖibîqÕ‰þuœç|ŒsýjÝ´;`øÉýkkNµ §ùÒðHõ±el#´ÜüTrÉ™VûÖuÌù“iûªÙÅR¸›2=§YŒÎîÀ5sED[‰%‘FßnjΔŠ%yxP1R\Hä@ãëOÔï3&å<¯ëO¾¸²"«Á˜ZGlFœcך‹N´2ÆóÈq`Œ}95•¹t39ùùsYwóÇ=”È R3ì+6êE–Ùð>`LÕ ·Ymß°niºe©EYÛ×>µ¬%BÊ{œ(¤´‡n×<ƒÂÖÛÊ‘.Æ?63ô®‰nÒÞ%Í×é[^zÅ”~ñªö«<× <ˆc~Ɡ}j;(&–w¹ B¿uV÷¦ZÇ$’´Ò®Ø‡E=éÊJ\Îr²´öªÞaŠêvÀTp>SÛ<Ô;Ú9å8Ÿá§NÂB§r¬ªÔùn>Ðñ» 9Œ¨>ôù%º·BT€j͸ @>íjØa`c:ûÕë\,A@Æ?ZK¨RX q÷>lý*=ZÙ'´go½$Tz„ $ˆåjŒ,ÁäpHüp8®mæ9ëXhÄý³Nî]Ñ_ëV®I #r°Zœä?ÂjÍžZ Î0Xî"µtuShLƒ ÇqO·Ë 1;C#miåcò"£è3U._t—Sòªƒð¨'lùòA Xš45ÚÆIÆwαôÍÒÝ¢gÙ¬­5š[…LñœÖëß¶0X0?—j×ÿ—«Ej/½T‚iÏp‘³Ÿ/–nsQÝ^¦ù˜E†vç?•Gqt»Ÿ ó3wªÑ–i†<Æý{ÕKRÍ:c€Î3ùÔĽÂãø˜V™à×XšÞ€(iii’FdƨjÃ>?«wnKµ«˜ÿwÁŸzÃÒWøMe\(ÁÇjƒq8uëUœrGÊÜÕI1XØÇ&áHŒR@ËIl[µ2ácêýv©ä…§uõnAô«2@guÚ1žµ`¢ÚY²¯\c>õ¯2Ǧi/0.ã’=MiJ#±ÓÞ59fÕkt ;®7*ƒÞ± S–+÷€ùG½eÀ„³0ê:UÔlD ç€×¹o1;[æPïŠØŠCöbAÀªS€&!¹@‡8Ää7Lç8ÄÄ·LÕˆ•Ú/”ä³O§5§i½†T‚Y‰cèh[6™^¤Õc–—h9?ËÞ³°ÒϰNzÕY¶ŽNjY¥ŽÚÐFÇ-"œ}H­y¦ŽÇK[`ròFZÓ–T¶±ó²b¹ý5 šœÞ`%5ÎÙ®ë·ÐŽk ÉK]J;Mm)EHËàªçоUQ˜‚«ÐUðUU è¹Å6Ó3Ü™X‚3¹‰è=M¦«]jk•*¿9-ÓéRX£Oyæ9àu5¢Ï•$g`ïë[’Kæ)ØOïzÖ£¾ñòýÜöïTî¤,¡ö”â²uGÞö(*väk?P| p£Ž)ÞS°‰”ò†úf¡J¢Q“´7Ðg–ãË#Ð~Tðc ŸCZ:d ¶ÌçÐÕ»7É#9"¤™<È$Oï)¥]¼Ì³¸ûÈGéVnS}´Éê§ùVt.ÍöÀÿëW"”äc5͆=:sRó$<ås»ü?ZÒXÍÄÎOb[ü+D'œì} jæDQ”$÷‡j´nb† lX/ÞdÌ‘ R¤:Š£¨¹M>íûmÚ?Tîß7/Î1õ&©Ý¾Û ÜôÆ?ZÂÓ¦0ë÷Ü…_Ʊì¤0¶åá‰ÂÖU„†3‘÷˜âº˜—9›ŸjÝ…¾Ï”äÈ_9­¨ˆ†!!å‹…Ù »ÉsYÓ0wv?Ä*„ͽٻš[m¥¢ˆ :åË~†¬ØåxbæV.[Ú¬YvŠ0>e9Í^V œu«¢‚`ãù‡VÌn`uµ->”Œ‚¹Æi“!–'AÕ…2eß(ïYêÌŽèy#¨þUÊJLr: ž+bRGSëNPdSû§‘Lê…?ŒÉ·¯z…ƒlÈëÆ*GçPàŠ¹lûí‘¢9Ç5ÐiD›hcGaò6ksO;¬ÑãP[I¨˜¬Nóò¥eÞHìÅ\CP»‘‹ÃcD?,·PN1øSmF.#î±"›k‘$yèiË&Ç”ƒ“}8©Rr²HÊÙÏ(*eŸk¾§J†HùXcbÓIË7÷j!–u…´²}ª –e@ríÖ§¸À q™œ~^õ¥|âÂ/±ÛÓJáéW®Ûìp‹x¹‘Ç>Ô–ðˆÛÊݹ¾ô§ù Lµ_-¹+óJ¤ÓíÂ>Ö;˜|Îj†¤Æ}bÚb8È'隃S“íÔHÃlhÃwÒ ¾s6«0«e¨p‹{;@'¦j±¾—ìýõ÷¨§·2y]*ÙAˆãÀjsÝxÀÇZ›Ê*cšzGIÉ@@ RÁnNI'`8¤†"9!sÚ­ I$~U²±î…c%±¥i*üŠ„šŽõUlÛ#…Á5SXXÒÄîìÁ¾µ_P–Üö`EApÅå^Hè>•u;I"Ä ½¥f\ͼ©hÆ8¥¶lO€NlTº\ì—ˆàžEI§ÊVà ðx«Ý=«¥Ê¨'°5¶HžÀsYq†Ç ±5ÅŽI>¤×0Ü»c¦­O€ÇʤóëŠÔ¶”$BEùT°É>•§ í@ÃÇ&šXî+¼á¸Æc¹s´ñÒ˜í÷²xªÚ¤m&ŽGñHáÏÒ›z§û/ñHáÚ£¿Rt½Ùü+7E¶W½2I÷#}jŽ‘5ÎùNÇÖ©ip9wû¨8úÖó¹ò–Pv±É"¯Ý±(ùˆ­ ¦;/ÍBäPFw.sïT1Àdš ÀcæiÖKºìÉÕYp[ÑSÌ¿Ý#Õ)KÝŸB*ë›|º |â~ul¹]çE*¸~GQÔTJ³GQÁøÜH28Å(ëRqŸ¥:¨Ýà]eO$s\ζª5)˜sXZ¢…¼%{Šhr²y8ÅP U·U0JœÓXÈTm’{Òª¼„&€!Ú£$ÕèTA?ã]=¤a±l€ª‘î'Þºtû-±ÏW5œŽY77 Ü“ï\¹vrYŽXœŸ®kžg2O$óV$FfaQ"±#­XxŸ#$*"©« v…‘ ònP>T·½>Ú/1‰QÏEëxÃ’T{R2‹KrÊW{XÕ÷é–M$láÎ ŸáÕu”X[4ŠCLÜgÒ „ìVfbg“¯tUf ´ŒÄÜ9ëÝEU·læWmÓ9ïÚ¬A$m˜£P òRMkØyf3HªîÝܚжÙå”A†UÎ}MfÌçl}àŒ×?þºÄ<³·÷€#ñ¬¹I+{F±ØÄžiÜáƒm©F“æe`Çü)P,KòA®[Ì'–IˆÈÆjõ½À¸¹–v\ŒaU¨fÍ$¤`tAS¾BdŸJµÊ Àçò«t:Õ…Æ>÷lšÓB[™±’I«ŠFÜ“€Q¸š;‰<¼íUî;×;¨]%åÑEr¨§®x5{:\LcÝ€;æ›"<kìs޹ãúU[»wµ—Ê“–9ö5Væö9ùëOF):äñ¤RÚ»,è{w´ëW)2ý*ËIˆL™ü«z{œYÇüÍ*û Øšl[ªK©ÏÒ¨ÇÓR+šèyõ5€z‘ïV[lEA Éý«m„p4a‡Ü˜µ[R"ª„dzl ˜ÝÊ€8¥†=öÒJÀ*®qDhr¸5ëº)"= |µNA¸ItÙòÕyexÛ²ŒS´ëU¶‚[<úTºeºB¿¼8ç'>”í>ÝbQ¿ŽièU¥`Ç*‰%|ýÕ<~UC³sòŽŸ•11žÁª`nž1ЍFãÒ¤´ËºÀ=GÍZeoÀ6š»¤G²ã؃RC(’YCŒÝë/W„I3€6ºóŸj¡¨Â›j¬ epô÷¬¨`28^5 ì§§½ZŠ¶Ì’HYJÙ¶²‡LUžá÷1èj[ÚEb¢IXéQÝJÓBU0Ž¨jÞFQ>HÉÆSP^Þ<é±>T'õ¦ˆƒ[Æ0A/´};Õx­L‘DÁgðÍA¶ô=KøR]͸²¢çæäúž€R_ÏæÌËþ.ÝÏJ[Ù7¾Èׯw«0Fª«ýö­› H­bE—YqéZ6–ñÛÄ¢Aó°ÍU•¼é‹mc8½ïY7óý¦ë!@HÎØÔwõ5Bò_>n •¡jyŒ~ñêÕ¼0žsmÈ䊞£K¶2:ÔÂK{uJ€zÔÖ¢Ïilª¨ÏaÔÕå’pŽ}:Öz:¤ï#‚œœ23Åb£Æ/$wS°¹;O¦x¬ÈÙEÃ;´ž+.õüíEã<)ù@¬Ë–ó¯\tRNPžO6ñ€àv­‹FÚ¸¶NæÇjÔ±mŠv¡lüÙ£fv®–úUÈ£ÏÌËôÉ­kKr[Ì•>™­"%·:àvÍEx”QMçÕ=fm±41›Ï&ªêryq2'Ë“ÉªŠŠÓF u` õ‹n‚[¸£=À'Û5•nî£_VŸÆ­_ž/Ljþ»ÍÒ°èráW5ŸõÊGCÅDs½ñóc>µE3æ¡ÿkV<ùÈO®*á;<ÙHåWzcŸë[ªÚ\\7ðDZ ëýk_¥´³?ð¦ùüj”A¶´|µÏŒ•ÏjÄõ>ù©r „1,ïZ{·ÎwàrÄV˜mÒÇpîEN«æ)åVf´aO:Sò«)ÆZUߌaH$U4rË»åÁ¸5”$%¢p3…¸ª;Îô>اÎ’W'œ^i[{+’Jd󟫜•éñ…H#—<š>X,ãÜ>y9&†Ä6êï?$Ó3ŽqT×$áEU–!je?f„³s#tysanIÿ]"ôö«ƒ6°ül)‘D3åsšKh|˜ „år Fcˆ±Îî´–R-‹/ËžÝÍI¥Ï² ¿)n1ÜÓ¬¥Û Ü2 ýjÔ.¥FÐOµjØÊ†ÝUA,;V…»©ŒGjl‹&V@2W¨õüR3G0\”ûÃÕj˜Ý™dÇ#ïjƒHAˆ©]ß:0éÅgÜ!vg„€òÔUI”³3D@PyÉæ±¤ù\ž•M§yŽ’#àzUVæ?9$/œ" W` ç,¥Y‚ØHShç¸>•<«2øÔ÷,"MÈ2ÇåAéïW5´dgæs¶1éïVnöÁeûÇ„^%A*/8GÇûÇ­QÓ‘^ò"AÚ¯ÇÖªÙ {”b ÚyúÕ›†1‡rÑ¡üûVΡ)‹|Éÿ,c?™éZ7o°<‹ÿ,ÓNÚgfÆtÔÖ%³]JÍŒ*ð>µ—i\HÎN:t(vrÀcœõ©¯ 0Hc¸çÖ¦¹ŒÆûFHûhâI#çÆyíN±XÖP̹lwíNµs‚HçéXšk½Þ³,ìÙ†0IôÇjÌ´wžþY˜åWæ#·Z̳‘濚V9EŠ„Ÿ?Xgî©,M@ß¼½fOº 梽ԗî‚EuÈbQ0bk«±ƒÈAŒ6bk¤µÊP˜çj˜g85{æ¬õ¬ÛœËy"î!Pò5Ëë2™µ)†~U8¬ VC%ìŠÊ´‘Êd œÇj¯jÅncÚ»ŽáÓ·5 ¡ÅÂaKгƒ$C>½? Óñß>d:ÕíodJ1WŸ,:Ÿ˜0*ËÚ¬§æÜ*ŠuF'pâ®^çìì^øã§5Ðë‡fžQ@ˆkgU%,Ѝ$Ц è=MsœˆÖ°¹*ͺŽT /zÝÓ#Wg~Q×Þ¶¬ÑX¾xÍ·$©Ê‘Òz^Å€ŒüŒÑN¹-nHåaQmªœäŽ1úÕ/,B¨IÎ0ü3U±å…=HçA3ËzѲòüÙéš-îçPh¶gw_¯Ò›Íqtb Å$Ì¢@Š~XúU}F@'1©ÊÅòŒU{é›jŸ•8-´l²‡8ÚË‘õ8«Z}±ŠušEÊÀ÷«6Væ9÷HȤ×÷Žà£Óž?J&ÌŸé’0,à”ƒ<~”éAlÎÇ–<¥2bòª&ì+r}ª]¥¦ì+r}ª'g—bîÀ?¥Y†4PƵjé¶±„V?ÃÐzûÕû8b“ÎÞÔ®YgR€a‡Ì?­K!h¯“ËYGÌ=êFÊ\.ÞƒŸj©}-ÌDŽQOÌ=j–§qs Šc}ȇÞªÞË4l6r£­B·?m™bUqÄ:VzÈú•ÂÅ…—’:U?1¯¥ÇÃcœT³ˆ¤ ÀêÍêhÔ#ŠÙ㶈gj‚íýãI|±Û²[§P2O½I22¹Æý*Ky$„,Ý8üÅK¼{ ñÒ‡i&ò¥?(œc׊/%–-˜ã±Ç½%Ô’J› ÏûXñqóßøjî‘n à|äð¸*Ö›XÇÌO_Jl’nör¥ÈúúÔ7—aí&à¡“õÌû­œ/MØÍ(û?Êy0úŽ´ý3i·uç0úŽ´û ¾C*õжˆØŸàÇó¦K·ËvþáΚøòÙ³¸üóJC4R®í¬Ùš„ä8Ü›;‰úÔc˜X†n¦²ÖÛìPÌTäÈÇâ³ü¯"'çóª# N‚ç­-……íâvl¿¼až*ŵI­¡c™÷ý*kKAÁ~v;Ú¶âpÓÊÇN~•ÐYÜy·3 sœ“úVͼ»åc¦*aš¹’9ô«§5•+˜Þf$摜{Ww»Ï•óœÈy®jëw#Ar*ݲ‹{s4Ü63ôö­m*$±´kë†#ä•£§D––¦ê~ éŸJŒÈnƒŒ)§¨Bòñ¯Ég@6ޏª—7_mbYqºj3ÌѨÏ.1ì;ÔéæÝB‹Õqì3ÍCj¥î¢QÝýjÝÛ|Ž à b¶5És˜ò\}kSVàÇž˜ªÞQ`¾wJÈòÉõ¬Á#?­Zƒ#èJßÒÆÈMlÙŒ)ÇsQÎ\!c€ qëÍE©ú„^gú´Ç´Ë°í7p«Q—ËNÌ0ćڪI&ZæG6Lö]Ü9›‚2Óm•­­ä¸õÂÓ4ðllæ½õŽ6ÇL³ÒÞ[§ÿXÜ-D»¤]Üã>ÝêŒ1‹„‹©vÇøÕ(Q§¹E<î95£9>^À9®ƒSm¶Ë )‚kjôí…cQÐT T6óÎ ïYo È$çïTYÁ#'8è=é²–,ª¼cœÒª3ʪ£y¥U- P:sRÅ$¥¶í]¾£ƒZ°O*~ìF¸¨â¯Ã+¨Ú#w§? o=})&`Ò+JÝGjG9`\ãޫݯ•c+&ò@âªÞB>Ã+®ó€1š‚î?ôWa¸â³|;„’âvüj‡ÜA,×ÐTôV<³?LŸåW£W¹¸#w»OJm¬2jW¥s×’Þƒ4Ø#{û¶ôÏ?J¼U ™—žõ·<Álˆ •S´ç®kZH’8•T€\Ô3‘+ª<}â;zþ•Bð-ÅÄqÆÜ/ÞÇcÞª]mšUT<¸¤šC¡Øy~éëRÜÌ-tÖXÎ ƒ ôïR\È ³`[M £Oç‚3øóÿêª~XþÈgæ.Ü~UW`:nìüÙ9üé-¾\'$6E&›&ÉB’pÀÇ–-‡ÚÇ®GéQÜÉäÀåÝŸ§j.¥ÆBvÉ4·2ùq½ªºD²½´¯;|Ìw.j f‰Ì‡“÷sPÙ;4O¿¯QV–9%Š6uùÁÁÕe!i!GaÊœb¬$Lñ«È4Ëp~ÞìpXg-èÀ–eޤÍÕ×9#ÛŠKV?mb9ejõ’°G‘þôº¶t¨ÊÀò¿Þ‘·V•ŠmBÍ÷˜ÔÎHN:š³pÄD@ûÇRÊ~BZ£fVi¦ŽH‰LÃÓ 3Ï ñ3|ÛÇV]‰Ši%ŠT$îÍ%ô—%„^‹Uµ[‰'¹òÛåŽ>EWÔçyn Gˆ×¢ŠXÀTpzŽõU1µ…W@K|›ÈG÷C~ƒkF]Ú´èè5gIÔPúü©÷„¼ÞPû¼fªJg½qü%±ùSµ ·L½¨w |µF£nGZ…ä .BŽ>µ8 "Õ˜Š”ààŽ¢º 9C€yšÙ´+åðyj —,U”| á·j«¨;K28\*œP]³I"0Ô ˆ õyAöªwq„¶d<»œçÚ«\.ÈYHË1ÍMtÂM‘÷@cøÑ«ÎAŒUcøŠMN@Dp¨ÀP ¢É ºg$aSŸÿª¤ðì;¯$”¸˜í/ß¼„tPO3í%˜ñÚ¥Õg&W$ð8-ü§q$ü¢«Å“&í¹Ø:µYöˆ^BÛwlÇT·S$…¶ä)§cL×Ç©«ÐÏwŽÄðµm$D•†82œpc+š¼% „<%Tóœô«!°¸d#=ê Uå@OÊ*”.³]Gæ1Ø™ÍWÖK…Ü~AšžQ¾ 2?*Õ•DÖ’*€C!zñWde»…åNbÚE%ªê¯¬ÚîTu>”·Gwl×1G úTq|Á[¦9¬åË8"¨¦HÇçE™ýãËŒíLîNjÖ–Þ[ÜNYcÂ}IÅYÓcO69T~t¸;˜·ßÌÔÍ»®y5 Ÿ|îëM ¥UsßMˆä€OáMŒçš°½}½mÙðt|óZð`ûÑ*–=}êk…Þ«œù{±Ÿz|£p¢ç­EpþZ  ¹‹vª• EUÜÄš«{0M  ±&‡É™X˜€~&¨O#K2; ªùü*œîd™XŒdåRY¼ßE«áÌìº#¯ËÖ¯èÇ÷3×#ùS.XÈnj§©Æñ±Y>SŒƒUïÑ•Š·z•6Á!É·ëÅZ°hín8Úr¿SŠžÌ¬2‚HÁþu‘oÌaûÁÈ'ô¤»ƒryäbMÙÜJ[ˆr¿ÅœŠ’yˆ€(ÿXØžµfþãu’¢ÿ®aëRÜË›eA÷Û‹¬{ry5R8qã#'’jˆ*`žOZ|Mµ¶ÁéV,%1Íå“ò¸ãëS[HVB¤ðGÐ 'œ§Z£¬HeºÝœáj–¤þdàõùjÌI ’¼‘Š×ÒÂ=„LWn3íZV!^Ò3Œ¸ÍDªVY6¶p*Ε¼»™¶6Hn¹éŽ*£¾É¤ ÷ëLšÙ®WËi¾P¹#Å·{ì£Ü¨»ˆ#µF!k°U¥ÀUɪð•³ÄVï½FpMVÞ¶ÇË÷œTŷȇp©ã"Kv%BìëV!^ÍÜ®cåúš<X}Þ”›Ï”±!癄ư¯R 5_ryKÔƒE¥¾QŒ(«:Uˆ!ƒÆ~u5…¨ –õ©nˆØ§áÅMªH6¤H0©Ðý8©o˜±¨àSR(€&S¹¤ ?•AVÈÙ›çÞÙ zÔQE 0.3¸ô¥–ça*˵˜îv¦_Þ:HêWfó¹xíL»¹hخݡºTQÈ­7•÷UÇÞ ²›Í¸ò3´IÑ¿ºjI„³yDíßÐûÓ'µºLþbŽp:ÒÝY]ÆÌüÝ9§Oms„Ü”Üy²—E ‡SëPÞÝý¦í¥© nSëŒTwuÁ`8çÚ¤·HßyPQØm©,#IËÆÇpT{‘RYªÊÊÌ8¤¶’F2¾Zz-ìÚ7˜Ü žTe€õ¢ F¤2ü»ëNÓ0#l0 M¢ òîõi»øâ¥ÒTyr·d\­CZ-Ìy1ük;–É?Z Ä¾Iÿ<ÓÕU¥]ß{#¥CJ¾¹, ‹õ¯ÿÙÿØÿÀððÿÚ ?ƒTK‹«ö2‚ }Õ=…fê5Åó´¹Îq·ûµ^üË=Ñ2džÃÐU.Â?3ÎnU·>µ&›j¥Ì¯òª)Æ}jm>ÕUŒ¯ÀU8Ï­jÙE’·Ä‘j×ÒmËs'Êòe@õ©§Û‰[†l€}ª)¤-zUNaGÖ³n¥-¨6ëT.eÍéøN?µqn³  í•Ål^Ú%ÝŒLF%*0ÀóÒ´î¡[‹T,>r85Me"v^€äç®+e`ÏP3šÇÈ#8jÔè.Jd0ìk~x–ý"L{ƒtÖËÆ.‘:§Þô5Tƒ#þð0eâOsëX×(Z]²‚~I=ÈïY“©2âQó/ ïéR+¨ŸËŒpÙÅKfÙº $6zu©-[3ª(á…;g &ýÄ.Çÿ®¯.0’ ޝ—óÍZbÌ26ÓÑÎT”aýâi`•ЩhʰÀb}1N‰Ø²ãxÔRH±ïr¤ãPOqäHÒ2cwüj ¦òX³½*;•ÿHÈä²Õ¦7Ý‚9Ýÿ*mð s‘üJ*ìr€Š¹€éZ¶÷j¶Ñ©Æð1нÀ*ñ‘Yúž›㬪¸<Õ RÉ/\JªÇZ©h—N²`èau€~¼Ô0@ÊÏÆÐßžy¨á„¦äb6Š|‘ù#%Ý¥K<g^¿Â7–h„ çÓššÅ† ½±«z;þï` ÐûU=ŽÒ¸'µ‰¨_I%ÌÑ€Ác`ÖªÝNï4‘®@SúÕ;‰žIdQ•PxúÖ¢i¬–1Â’ì~²°êÝëRÞ×Ê·D'çþ"?Š´"·òáHòAxŽýë@ (è:{ÔàqŠŸ»RÒý(¢Š)h¢’Š)h¢’Š)h¢Š(¢Š+>+&ÃK3+Hß1úb¹˜¬sM,±™ªçœV,VƒËi@]»Y£S¨ùwªj[µO³"e@rNà}¿úôù˜9ô©Úa Š:óò€¿\VÅävºDr¯$ Túã­\¸¹X4å‘:•~µ@<×ÏÞþ5Î(f}ç9-ÉúÖ$JÒI¼òKsøÖ«°D-è+¦Ô‚ß<`ÏzÝ»a9Î0¸šËåD¨Æù×7"˜Ñr21šÃ• (»e·ùñ¸œzq[öŒaÓv»üg@â¶`";0ŒFì~UZ~eqדýî+.ðy—.y<õâ¨Ü‚ó1Ž)#Û¥°w!ÀØÜ[Ì\OØÈ…ˆS̆Þ- )8Ï¥8]´á8•ŽwR›£` ;´è™Örç.r€ôÇÿª¬iòJ.ðFö“wtǯåSÙ´‹7Ì7Á¨õ/ŸiC«¸€zŠ]uVW£ÇËâ¡4š²dÛÁU ¡”ÅòòÐŒý{R4FâX_˜À¹úö§ód‹ŽLb•@K™÷}ÐC&cÿ×Í8¢Ãwq¿îðcÁìivùWn韖‘e]œâ8Ô³Ÿj!”2;¹Äq‚XÒ$Ÿ#Èÿr0K ç¦Õçšå¥ UIÀ_åX2_Ë%ÁpO'ü«ßÉ-Áe'“…µÍq $À¬…2Ùý+j9Ä)œK³œþ•µ¦X–98m¿5]‰Y8##†õÅiZÆcލ\>»íWbRˆŸ˜˜JçæOµÞºªŸ™‰8ë€k*)<û—m„ÅŠŽ½k66óî\ì$d’?êaTc {ô®®8Ç×µmúvúÒÑEQKE”QKEQEQIEQE-Uq¿©ë\µÊùHžHÅa\%ÛwQœSºÁû ƒøSœfÞN7Nqˆ£> ÔO´Z¢þ­ÊQO0’ÆÉÿTÇõ梞PöqÄOÕ-š‰a›yùY¶þUF·Il.¥˜uld{ ÿZ·¥B­a,Œ>ñþTÖžB¦&_œýÒ:ã­Sº¼ša±Á,:â«ÜÝI!ØÃžƒéHU§´.ÖVÀÏz’ÓiÂP¸(ÛA?ÅšzÆd²YÁS¨¥’LH²'1Œ Jt³¤‡Cº1Ç¥:Yœ§LS.îPWdéKs´ª:‘Èô·*¬½vŠI†ö2œòš‚A½‰& a½‰5<.åÿ„~‡¯§L‚=Ò •מ•¥e òo¼Ö¡| É‘±yžßEþºmÒ“µ?áMÿY!.xUâ‘QŽ1ŸaøSU]™Z<ä}À>”Kø*[¢#—95oRòü¨¦Py8ϵOzFÄ|sœf¨Ü3IºÃ,JíT$Ñî68Ý#?@j”ã:LÛ—85Ìs ü„–^ãµsÃ(ß/Þý+ž…þO¼9Íji·Ï$¡er|ÊÝÎ;V–ŸxZt.9B Ÿ\V®w¾A¿ª§zè5 ”µ´7;~`0˜ìMtú…Ìv¶¦ã1á1Ø‘[×Ó¤í.9<®+ M¹†ÙüÛž<ÁÁ‰¬*h­{ŽÌ=ÏzÌÓ¥ŽÝwOÀ~‡Üšèã™j‡‘}«}X.ÖŒ‚=+e]X r85->IE´QIE´QIEQE-QEQEC2o î^¥¿¥ejVáÓÎ\Éý*ô;”®Ü÷-UId¶㣠§û²%fKuVÚp§Ú³efXT0ÁûSÌJô_œp2EWÁqÇ^ÕrÝ~ÏnÇ»L×IhNÓáŽP@nXúf·íÕ-,ãøsU®PîÛÜ|¼zVÚ”à•$dzV5Ò•”Œ€FW#Ò¤‘¼«T!³€H>¤ÕÙ¦òôȺ¿›»4¡,bP:/Jˆmµ‚?0ÏÛ®;ÿ…6K{hÚ`KKÀ¶9¤‰D0)q–~@¤#æù=‡µU¹\1óØ{UiÀVÁàÕ•ŒÉdÐX!Ú+LYµÎ’²…AÀõ š»ö?NWÛóyB®®Üt*G5/c×µg ;r)À6ÕDaóçæ?ÃÏjµmæ2Çd|çj³òªŠ~ÿñzS· @œ2}N)òɺ0Š£‚ÏêqŠ|¯”Ú#<ŸSR±ÂÄ@ÇÒ®1ÄvÒÚvïVXáb`1òv©-¾hßvÏJ±§5¬‹&Kt©mägj£¨EöHòƒ12”#ÐçƒT5[sg –‰Ô©ö9â©êy µNca¡ª-¤¢(šÜA)}k4éë´Ê’”=ë;ì £ÌS’:©ïQà +(`¥[¸÷¦E,€€CzQ h² â¥ÔnÙíc€œÔ{Ò­ÝÝÉ-¼19Ê!É÷«7wðE}ÕëXð¨iwL¡àëL¶Š §âG*üm½ª´ “p_€3ÍtÃ%²C.­ RQØð}«¢†?"$†7ÜT|¥ZÞ H±£ï!x'¸­QœØ'⬎ƒ?¥XqøS&vŒ «¸’? F=03ý)ã­VMNÝ¥0»€ùÇ¢PùžYq¿8Æj5¹…¤òîî˜Í\þ½ Müª\QE´QIEQE-QEVWš0߻ܛ»uÖ²/d¹0›¢ÝÎ98¬û™&XÙ6–LóŽµ aãIƒF™Ôʸ>dHÁÃ"äQY÷'ÌE9È^9íIn7Jæi¶)æOZm‚ï”â®\•1|Ýë[WP?`Vž¢ÿºðqЦ©#:(?JÅùË®N}+$î/ÏANX8?r'VúúÕ˜^&Wå#u|ûw«0°xÈ~Dl)컦]çvò§oct…Žì7éJý¡2rð*+†Ã<ƒºŠ†öo6áæÇ Î*ÉwLÎ?*¹˜qÉïì+wO›ËÓã\` oaZö²bÍ769ÕRDÌÆ?ã'#Ñ«åV9ÜÇ‘’N=+ä*LÅ;ö¥‰ƒ[Ù$ý*{\7“þyÈüšžÔî´i?ºÀS%v[XÛnl)ó¶,¢!p7u§Lø·B2Ýjy÷ n1µHùÑ»gþÎcj•{ŽZ¹pÍö1Œm@ü¹©-HË`w©4¦0^éö$@¤¿e´t'íZšÅÕŽ­.¡™lÊx8$W;ý¥%½â£’Ѫ௾MrË|ðÝù(WÞ°ù£ºØÜ¢»ïZWBèe•>l˜V̯[Çqò7œ½1È­YŠG Ë…>hãÚ°—?Ä Áö5”pˆÏ ¬¢KŸ˜ãš±£·t!tÜ»*öiÒÁ~3¸qV´èVYOËØ®…$F•aŽ5޹8­¨ŒBQ*¡<“ZèɼFŠ~¹«£#°ÏµZÇ©Ågêúˆ´ˆ ?3>•OP¿cnb:UKûÑj„w#Šå!Qp]ä}¤w5ÍAžf–áö“ГӚç­á»J͵7ã]™ªù^]¥Ó©nÒ˜ì+z×S;i7€êx‚·mu¹ ¸dÁ‚+i][• QZ@†G¨5|6zc¢KEQIE´QER)PÁCsŒàÔq˜ÔˆU†ìn+íMòÁÆqYòÂmî˜ãÈÀÿsš¥£ZÞ·…ÎGõ¬MBÙ ºbîØäTö ²–CËsì*æ pYIw7\ä~kK‰ ´iä=ɦO:È:ôÀª7÷fêMØÀ€*­åɹ“8À¦W ùP} \ò?‹*>µXîq¸cñ¦Á,N$êH,>†–$`¬ ôÍ:(ÝUÁnIç0oÞ®FWn>„r*D =0HúÔˆãÌÉéŒþ5 Ãr7û@ÌPÎ2¤ú †~I÷«6¨Í!œ¶A@}1×õ­Ý Ž×;ÆÖŒF>•¯¦©lÏŸ•*­Erª·™ĵC\‰#Ô Le×qOVRì•Ü;SmW6Ó–¡9¦Ø)6JÀyeäóš,u”Àãkæ›p„A‚rwíÍ6u?f ßßÚE$Àù ïâ¤óC)‰øÆö#‘VÍÉòÚ 8à=sV 䡉øÆúŽ”Ôv„·©éQAq%®í¼<{Ób•áàu&­^Z»20kcQ8°vld`þ9«÷ñêXã"¹Ó¯§ž8Y²r r#N¼¸´p–Éë\¿ö}ÜÓ– 9Îj]XµœpÚ¹Õ2ç=9Xî+“šêHå†á\—QÛÐv®~k—Ic˜6H«W “Y;r¹üknøÅ¦´ˆw0}kVèÇuf]H‚öþC>ÒÀuªŒ–ÐÛ;l݃Ȫ®·ò[€i¥¾â‡,Z¥òÂIŒäùÕBV,”<ŠŽTfE”(^ø©’£8R\ZdŠK+Žø«+¤†'õ«YX!Ê6O§Z°áØ/NµÞŒªžã}j©ù²£ŽxÅU<åGÑ)'‘I'8'¿Zl‡8'½In¡ìÐôa’§ñ­8$šDl0³!%O¯?ýzײ Úlg£¯OΛzÛn‡BZ>?:­¯1ù sÁZ«¬’.‡L•ŠÎ:dej+to±¼Ê~PÀIn˜µ2Ž™ÁõFr7t,p? –22ç£1Øâ¤Œ+ž„ŸÂ¢¸vHÃ0¿Úâ›|¸|°Án½%àÃ~Rx>ôŒ„]î:Á>ž•.T3œgÚ¢`DãqÈ|¥ž4Œd‡å‡ãW ’Ip’v¸ÉCV™Õcä†åªÄ$( 8íZ6EV5QýÜU»|ÀúW+âIµjG–6¹H“joå)XØ~¢¹½u’ãP-9^ U·ˆ›è‘9;©ô«c5ìLŒc=qRØÀ^ú/)€u`Ç=ñ[ZÔqÝ\[ÇŒpØ­­TC,ÐÆùÈ8­MTE=ÄQƒ»{Õõž*ÞX/ûÕa®!³H£—åR8nÕi®-ìV(\í\|¬j¾©ªÙ¶ì‚hœe¥6îöÚ"‘Ëó$ƒ$Žj;ËûX™!—æG$sŠç¥š7 cMƒ8U<ñXw¦¢iaÊØ ê=kâX¦‰Þ!³ãÖ·`HÖÑNÎqɪ@/•4À¿!ã$VÌ£ÏbÓ% Nõ¬2N3Žõ§áÅšK¬£b4Îãï[¾28Ÿ–0ÀœúÖ®†dy¿‚4 œ÷&º€w ‚z‘[`þ5µ×½-QEQEQYr!IDr È®:xLs˜ÜtÎáW OQUü’“,„î»U#ˆâBIê=j¡†A bIÍY¶O.l±$·SW´¡åê ¿’Ù\Ó¾[Àà Š#¹p;±?PºP—2ýãT®T-ËëK€®3Ñy¨ñ†úÔXÃdÐ1‚ÙÇ\F¶Nc^ب•ü‘©ä1Ï·jÍGòÕTOÎÆ©ÆûA×ïÆž§Ëˆ…À%Jþ=¿J¹k(·Âà#(~½¿JµžL'æt ý{TPÛ¿Øç˜•N?*]6kk«FaºhÉ÷¤´…šÖ{v ´‰‘šÃÐNÉ®`~œuõ‘§ü­,OÔ0ÇÔÉÒNÕ’'ìÃÞºFÔ!Ãdj߾фÅ[${Vð"Xö7PI>°羒¡Ê!_ö¬w½– ƒµÊ÷ãYy$7$dž)ú­Ð½D‹b†vOSSêwÂôľZ‚¼“ëOÔ.ÖëfQ’}jÆ”¡/TŽ|ØÎO§z½¢[Œá9\Õ½%U&8çzŸÆ¶UOÊ {Öß°­SÐ eÄ^j:ŽE# Šk ІæÝ¤]¦S°Žƒõ¨§Råc @bsŠŽti~@Åwg¥s¶ökÅ[ ®sXý‰ITÆFÖõƒ¬ØbeTa·;Ó…”Ð"I.?/jÈX%R |œöªQÃ"2˜Á<Ž•°æ`Å›+(ÁÛéWI¹aµó’=[}é.â0sȪ·ªP¬è¸Ãì)e-ã7ûÓ¤p’G2®¾OÒ·âq,k"ô*+­F"ºôak£Îàt<Ó©ÔRÑE%QERö IýÓ¬GçX:ÕŒ«)xîÜöìk'S´q&èÏÊOåO‰ÛÍÙçbxŸ¦4¾aX äþ5%“9%b€bÝ+SÕÁ-ojǾyñAYš†¢»ZÞvï˹þ#ì+6ûP^a‡;w|î{Ÿj»¥N×r¡ç®ç½XÑw]ß+s„_˜Õ(››ÝB¯5<Û|ÓŒnæª÷` ‡;·|Ùª÷`yçAïH[1œçvF D~íDyZR¾½ÇÍA3A´eltÚ3ŠrTr}©êT#ýE8l_(dðíZ³‘#žÜ’@WέZ:¬ÐŸFõ§ß}øùé–«ž!ÞÂ8ùT’j}m²ÑÎjÁ6»’¥d«m*}‚Ör°V {ðjÌq ¢sŸ¼ù?ÿëVŽ¢\Ø´¨ØË>€ñü«V({S <’N>†ª[ÌìÊÄã¢Ð~•eu³PûCd¿ôª6—8½36HÇŠgözÛê’\)ÂÈAZ–þÐA¨™ÔadÀzfql¶×2 +ÃëR<¤‰Ì\3«ø÷¦G;<²´'k?L{ñBHÏ,ž_ñ-íŒFÅWh;dŸCZÚt_Ù‰€?t½ý Z¼±¬TàeSúÖ:éÿfI»!zsÓŠÃkC ÞOLãò¬±jbmùÏ¥bþ]À+±F+CK¸ònƒ…f‘W4éŒs'?+µ¬ÝO¥t‡Ž‡¯JÛ>ÔÕÜ .F3ǰ¤Ï8¤ïŒÕ]FGŽÝÝHË}sQÜeFõ#*§ŠŠàìBà¯È1ƒXâÖêòæe PŸ/AôªÒ[¹Ä·AY ªxâ©}–âæàIqµ£•^óþ?gÏMíÏãQÝÿÇÜ£ýªzfGRÚ¹üi#S!údþ”‘.ñ‘ښĒHÎqL|±8íL|ä‘ÚœT-’3òI©äDKXÀ,rI©ä@–ñ€¸'’M#áFârçñô¨É <…昧iÒ¤»9*Þ€qVu †7n»FM|åÕðqÅC(Ùåœe‚äÕG`|ÁrÕZEØŽƒ54ïŠXÕ2í©­m6ì=¥Õ»l‚€pO§cr$·š#…;~O~*º§“ÁÎØlÖ’cÛv!¿J¦±öÄ£,~oÖ¬^óe¿…±ô«ºª“eöÉOã±ÿõb­j+þ‰î¿)ªñáew ÌêJ­§ö˜Óv 8æ«Xíó‘s÷˜gò©ïYÙVÚ,͂ފ3Zú‹I"%•²îfÁcÙW=ëNó|mâ‹}æô¬­]$¶Ó‘™ñ.üŒsÐV&«ÛÚ f;Éü+'SG¶´\·ÎjtDIn.°0 FW‡~qÈcQÆêcßœr ­˜fK˜Ä©÷rG#Кì!•.!Y£ÎÖéŸÄWE«2 ¡ÏZ‘ØGbqšYdHP³‘Ó¥9ÝcMÌzvª¶òÅ}nÆD 1á»ÔVÓ­Ò3mÂ)ƒÞ¡†Tº…‰\!;0{Õ9®—I¶Š¶•ÅéÍAq7Ø¢H`ت'¥C,ËcEÕEÈúS‹ŒK6åh߈ëT/#”Hg‘ƒÆøÎ* ”?4å•£|flÃÈ1©Ü»r§Ò¨Ä æÁ Œ¨êj¤y|ăw ÊÔäh#c—'$ÃÒ™5³ÂÑÀqç?QÝj+˜L,‘ûÆ ûÕ»[4›Jya2HÅXpGÿZµtë`t×Êþö9XƒÝ[ü:V•­°6*DÈç¾kZÉÚKxÝßsc>µ¯%““Ž{Ö‚e’qÍX§S©(¢Š(ªw9\±ûÅGá\¾¤Y&mÿ뇡¬+ö)!RyàŸjv*®^£ÜÕP6òj®6÷¥o’ |Ä€¾?úÔñÂîN*QÂ:“T&ˆÁ­Á: ûŽÙ臕ªDêvœ”sõF<½J7^9 þU~eÅÃ"wÇò§j1ˆïdUëÁúü¢~¡.Ø/\B±KDpyyOO¡Ò”¦Í*W«LÀ‘ôÿëS¶lÒ¢u³OùúP™Â+ýå$T1©‘ÂgÔ1/™&3Ôf¦¹c•T=*[¹70PxQŠ–å÷asÐT%AŽN9ÀaîZ„ †'ëP¨ù[=ù¥˜—(çî=»ÒÌåÈq·Â–W.qÜb”îš@ ÈeÇ©Fe”¹•_œÊ’}³n0Ço¯çWl¬ÄWHìHVãµ]µ¶Í…² ÇÖ¤ RÈÁžEX¼íqš0:ŸN*X™©’£ ëKr” îsǾ)Ú¼KP¢‚w9$çýI¤h£;˜ñïUm€iâ^àœçéYúZo¾:»­QÓ×uÚÆF99«ñ3?Ë·95¿ ,6Žò »s¸úÖº0ŠÙšO—É®\¦²ŠhÈòãr gžz~•Ìj×uR®6! õÏjó´öÑʸڤŒStõ#Oˆóƒ»ÍE,¶°¹¬Gài±B~Å ˜ûèMnéÙk±ƒÅu:;—ÓaätqÝe U+Én¤ÕÒÞBãæsÐ ­x.fÔD «Œ™aíP\ ‰u%Š<¬{rZ´b†+hˆ\퓞™­ kx­b؇å’OsW"Š;x¶¯AÉÍ`ÎóÍ™Û.NÕËO;Mxò»dãÓ+ž™ÍÅÁ‘› ·Ã¥Möyllš'mÂCǾkGìÓY¯–í½‘ùæ¯ýí¢“¹æÅC§^˜ÙP  ûÖm¥Ã[Ý 9\*•¤ÏÛ€ ©"œÉm%é.<Ö‘ íÎ@"¶l’ÜÌÓ2•†ìžG£fg(]Ê–ç‘Åiéó‹¡4Ñå1ÀOöº½jÊÞl¨~Wlãß§ô«v² ¦\í~pGz²Ñ %‚PÅ|¼££f¦ÆJžF*R¹u$‘Ú¦4êu%QEFE\°v¹ëÇJå˜$÷ì×¶=Ùr;Ö[Íó¶9úÓ¥D%æòÃ*ýÜ{ }ÜHwÜÇbÎj’â5ÃNƒ)Ñj4o6Uvã¸Çj«ß*žùÎ*´D´ ‘ŠGڸʙI©b _»æsôÍKlºoæ>~ØÀc°•;U?ñ3—ãò¤ÔŽoäúÒĪtÆ^¸ÜZž ²ç>[1ÇãV#èçýŒŸÖ’Øù— àaQ U;6ýøp:!?T´8¶:)¦® dž¿ãQg'9äÿF~ÿ=éà òžÓN^xéÁ¥Sž:phl¨ó=èiYHQ!èx¥d!|Ï„3³P£êx?Ê–,|ìN>\¯zt;A‘³Œp)Û–9‘WîìØsWRå"¸EL„òö6îŸZ´— “F«÷vm"§Ufƒ;Óï Ö´‰#dŒ²Ç’â´mÑàáÓïS.Ãa …$¶>½j¶¸ù vgpü¹¨50G”W¼‘UØ„¿ŠcÊ9º1T-Y"Ö ”’cfãÛ#õª–ìR…ÏFà}qTH¤a =*“^f‰â(P¿^*Mêo´­¨ ±ä—ïÖ¯iwO,‹¨ÎïsÖ­éWHþAÆÔÎîüõ®›•­Z¦’ŠJ(¢–Š+)·ˆðFrMq’PA8n¹®^fa•={UëpŸ`B>è\ÿo[Æ’h1# ›±ôë[q*I¥F¢®Æ«mòÝèË‘ÅdK …—Ñ—"³eˆÄËŽ…sHibA÷9ü(‹æ5ù¢?šáÚ–á¿Ów ~”ëò¢ûz†]¿¥¹köÇ\NÆË TŽKàþ&¦R"Ñfmê§ó©ò"ÒåC×xZEbàŒ}jš2;b©¡#§¥ Û‡+ŒãéHÀšG9¦d–ÈžÔÌœäSIâ¤mÆ$dÖ§Ãyõæ§Á0g®Jl›ð™3Æ£•Yžj9 \õëKVœ3œ¸§ÀËçeúúÓáeÞK©¬Ûm€çkŸ×úÖî‚ùÓ‚Ÿ)Êÿ_ëZÚSƒd9ØÅjgË‚0EK}Ì¡“ ã­KuqŒŠÏdQä+dØ!ƒ±¬0%„H ùn‡ Ï²‚…–-ùʶÛš§¨Û-ÕÃ7'«>•ô_jß’X–ê*+ØEÄ®ØÉå‡åYGN¸kˆcE`Œ7\gœÕHtû™®cDS‚Wæ³ÍS‹N¸{È‚ƒ´wÜWK¬¡þÈ™Tä…ý u:ÒgH™:à/èEt:¸'M•W¨Æ=ù¬2¢H£IW{u5ÏÆ¯uu– ¼ýãè+)šxÕÝSqÎOµul5ú°¸Ýؚн’½Ä'FìqVî.-Þõ•6ônÆ«\Ivx™šg~Þ•RB۲ĴÎzJ¯#„ÉRÍ#vÇ­]"Ê[ˆY&V8èNHü*ížž÷Ad{•`¿ÃžE\²³iãI^e~:w'Ûb²€$‹‚ŽHSÓüóVN  ·;¶+EPÿLשD>GŸ”óšFY¯12`®G â³ÅÍñk™2~ÕTZÍxLî@ô¨µKG¶ÓÎì9ÞÑïRɧxw?ÌêFÔÅKqhm r̬0£Ö™ ÚNoáШä“RiOöö™Ðª²’~¹§iL· ;©PàîŠéZÛ­~ô”QEQE˜Nc ÜÈÇ$ž™é\[dýî]'Þ¹só›—cÍZLF <ýÜqý+ZÝ”Z àÃÐzV¤L>Ìç‘LŸ•·EíeÅ7RSä[ vïolô¤¾_ÝÄÎ9cP¨&è2ñµð*Œ<ÜCU8?׃ÜÒq†¼!XÒ ÀT·EeÔ›oqƒOœ«ßäe¹¦Ä‚ERN%/lšŽY„‚@¤àÈ[ÄšŽYC£€z6ìRÇ.UÜýÕF‡*ÍØSå¨2/ÉQDŸû(4H}½éHØަ®ÜzšB»qïG˜ÈÅG,¾ Ò«ºK× mõÍ*3$»G\ZYZgØsåáúv©/˜5Ó*#ÂlSï˜5Ã9 òlR1_p…C³Qg sOÓC,28R›€kcË*[É #¸ëì+WDYÙŸ³5^úzVÓ`#ãŒÖ‹}ÓôÍPy1 À± ç­so ‘ŽÌ@çõŽò ŒãÖ²…ú¶¢m—H(Þ¨¥Ðk“ ŒûÕî÷]<>½ liG÷[ï“úWE¢`Zm'÷„þ•¹¥ñm´ýâj¾³vcE„mo{Su›ƒ¡L/ÏÁíQêS²BW#æëô¬=BÝÚâNpÝý«H^âõ +zVLÖí5Üq‘ò0Û½;ÊÎÕ|äíâ´d³x#\~iÇ\túÕdzhíBärÆ*EžŒ–8ÁIà•g…ƒ òœ{þµTòäYíß'|‡ÇJêìâhcUeÛ!~ƒÒ¶„Dè±±2Éã·zÚX¼§ESó–Éúw¬/ÆË¨íY:ÌFE™†Uðøõ¬­^7ŽûŒ~qW´étÁ´î™È}0qZsoÓ£UæF[†M^²m֩˶{sT¶È³µ»3É.åBÛ½ê´ÅšåQ[,(lõ9¨$Ïž¨ $8‰÷­ËwŒ¡ Hw"ž ñ“[0°}Ûp…X†QëZ‘6áØ8`*ýKRRQEQEV|AUZâa“»¡ìÞµÈö0ÒÈ¡ˆàCë\ì[c #ÄqŠpÄqÌ3óØJ’& ¯9'w^µI€¬ üÄäU„BmË722ó[F:K—åÙ2sÚµ DX>~ñQU-È’xM`[’²’xÀ"±àù$=5KQº0€G8>õľ^àŽõ^âmƒ#ƒëUô÷i‚*± AçéɤµÌ„ ‘Á$ÓmœqÓ’i.58ã |˜å‰åzI®•@†!ò¦‰nÕwÂÉ«©rÓBA•;@vÉ«ÚXÕ\|¤€u« +H 0Êäa½*ÄŒ3™W1¡´²ó˜¸Ê©àSŸi.2§aeVº+´¯OÃ¥OFXÚëdÿ"¦Ž3$fàŒ2ÿ‘XzUã­Ü‘Jsæ1cŸïV]¼ç2±á‰<ÖU´Œ.7=Ny­©6¡Î>^ «R œqÁ«’.ÖÈõ>žêÆL;í5¯áÙi£Éí=+GE"r8Î*á “Ål¼ˆªY­'pªIéYèƒwaYâ¹è¢Àרᔑæ°çh8®^ÑOö™$à£ü¹¬KeÿK$ñ·-Ÿ¥`Ù©û{³$ý{W_h¥ìcÜ0Äd{W_§F_Lpܲûêì×u’7$Vn§’Hæ%N8¬íNA.óŽQ¿o3kOJ¢>Ñ5ÌqC’ÊØÜLRiÆIdVK0\})¶FI] C$ zVéXm¡Hå`XrîEl[H˜ÛœóŒõ­BVö±ÜçœT¢¹¶¸ÔãPƒ÷*O§>ÕRÊay¨yާ÷CÙªµ¬Ââóq_õc *iuXÇÚ·onŠƒ¯ÕÐý‚I XÄæ·MœX9RKÄç½Y·„B›F ÎIÇZž8„Kµ@ýêTEEÚ?J’ŸKEQEQEPe"wR;~uÈN†+©#oá$~\Jç'Së ŸÆ¡;ÃÆ¤žUätÛš,”›¸ù¤OÊhŒnáSÑœ=+RG '§Òº‹É„QQ“ÀúVą̊ÖiÊÉ*?yŸÃšå›å‘×ѳÅ`¿Ë#{ÖN®.]N[«ëUnбÈÅS»ÏTJM­çpFðÐ †9f£&(8êãD/Bzµ_ž¦«ÉÉëZVR¿Ù£ÜrNžÕno*<ž»7•Ïj©…Ï^°Øb5dàãó©â ²p²ŽÝªÍ•ê¥Øÿ©q‚=»šÖì-ÈY>ãpkòÝ-ü@ð­‚¿\U-RÙmuwDåX÷ªWð,Ää2äVÂ6ØVLn7 ÷aO— K´4›ºâ­ƒåF’mËîéëSEÞg¶pQòâ´¬íTÊ÷v.‘÷\÷«¶Ð+;\[6+D’J£d‘»‡N≦¸ˆ¦äÞÅI2a~]ÙúÔ¨ƒ/ÁøÏáV"·g;Hgð©Ò/–LŒÎ?*Á‚Ýå‹/ï$!\ÐW=kk€˜ù•kÚ3àŒ³2ƒô®„º¦sÑxý+¬ic_?uü+¡gXƒ³Ð~“4ß7šTùlpµÎÎ|Åy›*„•9/JA IÛV4À"2³2óéš½á×ÂK’ÀÕ­°’"ã–ÍfkÒ;ÞöPê÷ŽnÎÅʨÀªú•Ë›¢À0¨ôÍ8Êë:Lb6@ÆI§h«€8fŽDnq’Š].”‰w¼l‡wőާžÒÖÀÉÈ2íÆOZM\Z¡-Èã+ŽœRê mâV'%qÞ¡’üåD¤ázV|iÁðݵIHË:)˜âŒ¿ßà€>µ në4L3•mÀ –T#%Îhé³]_DåÛj¡Â•àç¾~+¥Óî%¿…¤c媜)^¹÷­Û)eº‰™Î?)Ôˆ8@ƒ0ïŽjúä $ú‘W `’ßZ}--QEQERär<Ÿ¦MsZ¨gÔƒ¨¤þU‰©†{¶#š‰7«Û¡$Ã#ëQX±KËo›…aŸje¡)u{5X³¬Î§xøäÖµæé ¸õÇ£r Å,ªpªxü8¬Ù¤ =ñô®}ŸvIïÚ±LƒŸZË¿‘ãŽ"¬2ù桹fS|Ýê¥Éd GV¢#öè'Àô¥Oô”ÆrØâŸóӯ͎•¤”Æ Ÿ{“éO´»ÿHXÙFÌ`cµ>Þ|ȨÆ8ö§[O™v1ƒŠ×¶RÑ"ž[<}*Ô8UêsW"•©Í:éRXÈeå ±L›žéL—¯NA¥¹¶Y.ìî[±ÇÐ?_º¶a%¥Ô¤ÄO>ÀëW§·Äð\Hܘò?ÏãS<„”<ââ«Ï>ò£ª¼ò— céO’9U€Û¤ûÕ6àCv¤œG ØÇК±c(ŽuÂ8ÚO½<åd1»dlXýjì¤Çs$1`Bõ«o”ãäM>iÖÖ%yrp£ÔÕÉ&ŽÎÐ<Ç;†Ð=êÄ’%¼¤9ÝÀ¨--'ÜãçûÄƪiÖ îùrdQ»±?äÕ{+P—Ü|ÀdçÖ¤¼rO–§æf.¡!i+‚Å•yô§Ý1iJ3–Rà%Ü—–±¶<¬¸þç5ÄQÜBÞ<â-Œè­ƒš†tKygˆö‘\U8.f…šxà,›BŸ­PÒ¤’’D„ÛøÕ; wU$c³®îç’à‚YHçŠká8•ŠÈÙaéŽÕ ÈÛŠ¹mÇ$Õ½áø,L¯÷œç&¶´;o³Xn$‘·1•­£Äa±øÜÄ–#ÒªK3ÜÏ+2€¬Ž+RœÜß;í(÷â³/dk‹¦%@ì=éðÚÃjKd–aס€‰pIÈ@§lXAä÷ÅXÓm¡{§˜Œù*îþuo@‚7žYˆÎΚµ£BŒòM·88ZÒŽ4ˆ6Å “œõ·I!.Np+MPŠ'&O§QEQEQKEV÷$¬Kò™OÌß…aj»SdQšãægöì+/P*»Q>ôß37·j„e®|¢pIlŸåT _2ì&pNpjœ#uÈ\àäÓ䦞Û[ælàŸ®*ýÄÞ^Œ#Ï. Û8«“ÈcÓ6µ—ps…G …ÈÏ­cc=ýë!†xÎ8Ï>µŸ-³›q¹~éã·zŠHXÅÏcPK1)=Ž3L‚'ŽdsŠljR7uëÒ£Ed™x9ëQÅÜ×#8Ïzb£Kž¹÷ïMDi{ÿ:[‰¹%†6qŠ[týácÛŠ}¢ûˆÆ8­Ø2f¶D°Áãµh[+½ä)%·úÖ²—º‰PG&¬^¡I¤ÁÈq¾çŠŸX·0]7C¼nÞŸ©ÛùS°$–r$x”• M¾¸´*‡)j˜÷Å-ýǜх<"b•È:çÛ¥V8æ«v§[€íäIÎîHÅYÓãóçX 'p-ǵX±Q,ÞQç#5“çQ)Ýå».½Ï¨©RàÉ*,„¹BT7r;~µ,s4’ª¹ÜÊp ïéRÝÚ Äm9ÎΊ½3Zw–M4p´í÷:*ôÍ^¹¶2¬FC÷z ™-cX© :áZŠÍká•Àä†5:@‹µ°AÇ<Õ[Óä\Û¶HBÃ'=9ªãìÚ´™ýÛ0Î~µVë^BÇî1¤[x¬^wY35ÆXnô«+ z|sÈsJK±=:T© vqÌÀå¤;U·uŠ“wϸð+8œb@•ˆÆüüÄ’1Rý‘c‘n0®®2Aõ«ÆÏ¶bR¦¥hÏ• š’ÎEdEƼ•ÿ [k‡†&ŒüÈ>lÙô§[ÍåFÑŸ™š@† $TÃ9àÞõ f. |Ìx¢@Ñb]Ÿ33Ú’îW 8Ï ½9õ¢êY§p­Ác…P1Í%Ì’NÀtÝÂWl 0[…o¾Üµoé–¦ÖÐ+}æäÖ½”f· ß½OVªzZ(¢Š(¢Š(¢Š(ª2¿ší"Ÿ•jýk–»˜ÎË *b5üa]JeÄ— ?*HÔ5ÄYä0Xr÷&å“D{°å2ÉÈ“Å,Jøsœ3 þ%£ý–ÿp9+¸ÄSí\[^ç9 7ò¨U+ýåùÿsýi¶hÆpPdÆwÀÑh¬eÜ9(w~FµÖEÜ¿uQJ³Æ{žG½o£‰p={RÓéj–¬ÙÆBO·5™¯á­CÂ:¡« кzÕO$\".â'à8ýEg¬žd[9'@÷åUK™bÛ¸ô;~¸¨-`3Êî3ò§×ŒÕKH Ìâ!÷™r¿€ª¶Ð‰¶¤T³4ÖÆÝ<ä‘@!ÁíÒ®²µ¢Ç³+àÀ»VÈ{uEqüYíV-…bAó8ö¦ÛÎ!ó¥ûÞ`Ú„öíD¬K$œ6ñ…ö¨®¯ »áxÍC,ÏÃ8çíQM3/Ìý†G¥Ì.®ÒI2X–¯hÖ¢IVâ\–8éV4¸„“ Ÿ%±Ån[fµi(¢–Š(¢Š(¢Š(¢Š+9Pµ„ݱ)oÖ¹”MÚ ·ñ óú ÄTÝ£³“­±ûDR$:‹N!o!‘¾êž*ŠÀâåýÐH¨5=¢f‚’E¸~íX ¼-$Œ0ü³Kª·ÆÇMÃ𬨵&»ŸeÂ)FÆ=:U5¾72™«0=*€»ûDŒ®£*†eKi˜DO#’{UyBÃ! éÔÔR …ð¿™©í¹VÎõcøúTŸññj@>Ñ^EW[9 aþè=ê³ót¥@°@~€Ö€àî8¥Y{'žœ{UÄù[yä ~µ5 ƒªEâµõ›ˆÙcŠ÷W’>•©©Ì…V8º“¥$Qâ$BÃk‚HúVZ¡ 9ÝÎ+9c#®FqOiD€*®HLgÒ¤2ùBöÆ}*O01Ú£œb§”%Ì~Rñ‚1çW%)z#·ˆFæ­Ë¶ïlQŒ`½WÙ±Ž0L»“Þ©Jž\¬åªJž\¬3÷[šXX ÕÏnâ*Æ’û5Ï|ΦÓ_mè£] • ÕÐÀBnŒ€¸çŽõ³ ”À=©ã­OÐf¤ª·äù §îìù«3Ysä2v+óU-Lþé”ô+ÍSSåAÎ[°ö¬¢|¸³’½*ƒ«gš’É@»Ž8ÿÀTÚ"…¿fcòÅ?ÈTšJµ»·ü³OçTö$×3Ã+¶âsUç\\˳Øüy¨dežáÊŒäþu<ÏæÌ‘AÆ8P(“uÍÚCàöŸÆ‘·Or±B1ÀRú<±Â»‹mùþµ3Û¿Ž5Ë•7¹§Ëoæ]¬`ó}k_N´Ð qóÖº¤H cò­ˆ#òã‘ÆjÝIRRÑE%QE´QEQEDk)”`’:ç ô[˜ÇðHÿŸÂ±â!ô™“ûše»/š¨[åfÈÏ­A¦…kØãcò³w¨tì5ÒÆOÊÆ¨k§É…8ÀÀúµ¶¦ É#…ÆßÆ Ösà è8JʳÙâIPgõ¬ûr‰&çèÇÖ¨[››¦Z–ê&uVêøqO `ž‡­I2—ü©Ö*#ví¯÷×µ:Ûå@wa¾ñþ”°â(FÍÖ ¼•Ô”$óÍE;°$ry¨%vŽçšnŸ#‰IÉÙÛëE«0<’TS­÷“ᮀG• ί?<ƒZMëN¹¿…Ðíù aõ8§Îƒ÷n£“$}x§L¡v²ðJSÕW‚Ü1õÀ9éêj§­ÏŽXñ¶Njb'µ\§þé©ÈšÙb™z7J †ŽiJ•ÁROf$âœÊe‚{’»v²ƒîqJËæC5ÁR sM‡rÞÄTg϶)tÂɩ۰Éb:ѧnKØð3ž°­L6îÕÑÉ×-ØÖÛ¦‘NS¹søT±¶ôSëOS•ÍRÔ’TuȬbMÒ²¯PEgj/¹ÊŠ…â lŽPk:P<õªr ų½U.’%O,0=ÿ*uœËœ8,Ó E ô¯ëNµ‘#ów ™Õ#µTÓçŽÖ+¢ÅNÕIïSéŽZ^¨]q´’Á–{œíÜ1‚jÖfèÆy2²ü¸ìOZ»¥iæ7NÀ³¯Êè YÓ¬ÌDÎÄËòãµh¤#™üǹ­†4bà|ǹ«‰+æ=ÍKš’ŸIE´QIE´QIEQE-Vj"½ÇM£ú×-hø±¿SÈuSŸÄÖ «m³»OïiŽ ÚÛKŒÄŸÀñP€Ð­´Ã†ÜHü FªaX$èCf¡ÕbZŠEœe:ý2j}UEî«…nî¥;Têü8sõâ±Z C#Œòk Æû±Žõ•µ‰Æ;Õ´"ÞÙL‰¹2 ²¤E ™(1ÏáVªD Œ®qUìI–êV*ìcùœ Ž×/4§Oó⣵ýä’`*óS\Ïj£e/ÀÁô§NðùŒ¤n>”LbÜTŽ;[f‚²1°²±N2¹§ÛY22½+dÛK,FUrÙ$VŠióO8A¤òqÒ´E“Ë(!Iü©ÏhÛSy›Nš}혅"Ê%#ïŸJuÕ°‰P+‰1Ö™"±VT@ñsúUPr«ÁÕ®Á.¬5ûÑ †>Ñ@ÙY F>ë «dÆæ ,\î½1÷XsP[±šµ# Ãð!U£›eäk'ÈTÇz§læØË¬„;ÕXÅv ðTÖÁÃ.{ëó#¿÷—=A¨q'™µX(oƪ ›ÍÚ®[ñ5¿h;Aª7Œ…P“’1X÷ì<â±’Àž­gݜ˵I$ž¦›{Ð $€£#Þ«ÜÞ•É œöª÷o*AÍF’Ÿ)L°` B)``±n)“¿ý)b#Ê'nrت·ÖЪ2ð7d*d¡”º)‚r;{TWNUqÓ<*¿áéKÙùmÇ”vbº a>ž‡‘³äü«cJ—Ͳ^Ø~@Vµ]«t”QEQE´QIEQEQKE™’dPË#€ÃÔgŠä-4ñÆ:Hà2úó\å¦ZeEû² XÔ{v­-vÝaX6ð™ {UíV!ÇŽt¬mFb¤È:¯ k"i ã¨Íe\HGÏЀjoÖrhÀ'Œ¯SIÒÌBÈ£žâ™é3Ë‚Ýê[ð“!XOÉŸ»ÝMIzEÄ$„ìcRÝítÛù{TPùQ#aÜ|«P['–®à°àTVècŽ@Ǻ ¦`•ØásUÌnOCU™±ÈïZÚM²¤±Dç8lâ´t«u7$‡åÝœVŽ“ ™âWìsWî&’k§U“b'Z³ªÜÉ%ó¬rlEùxïVµ ‡7,¨ûqšTO³9%]v)¯½Và°;d/½@<ÈT™ Ä=èC†9ê*0FîzTJß5Md._æ,…rO§§éZšhîäÉܬ™9íZ:>RirrAÍK{of—Œ¿Ê¯AlWV¸¸è¼>•n1<½=ª)-£g Ñ–ãnqU氈̧ÊbÁcùÔ2ZFe TàŽ´¶²y^doÊS¦ÓçË,R“°r„Ô¶²•‘øQÊóOB$s³å=FjXdûD¿»ãŒö§£ùŽJt*¿Úìí¯¼™d&àû}Ú®&³³»ušM×Xôû¿J€KkotË$€ÏŒãÒšØy]Àn0kGó'v†Èæ³·ÌÄt9¤Y–;y0ÌÅ‹Øôþ•v Ö5‘T3ÌÌÝOéV¡‘#Óö€ e¹üj…ÅÇ“@ù™#5E “5ýãÁ==êpGÊ>b½)šsŸ:Œ†có±A=knÇ÷>E¼l¬q½ˆê3ZV_ºòbŒ«¬Tô®” zÖ§ó­/çEQE´QEQEQEQEV}šo¹w<ˆøæ¹ÍÜ=ijŸ»ãëXÚ,;¦yDà}i×ÒŒ"ÿxüŸ¬Ü$‚=„äŸ@iú¤ÊÈNsœŠÅº qÇG޵’èd†BÝÅdH ‘;vCYÑ)3Žß5UI“éUPùf)]®d•Ž6Äÿ*š7o5Üœ¿:µ¶÷sÑFïΫ,=Ú±<†Î}*$v’ulòj‘¤¸OJµw;Ú¤õ<õ$òœáx÷²JÛÎ8úUÍ6L»“ž¸5gNÊ1sõ5wM%2ç·&®ãÌ,Wøúj$>dŒzy’1êGE±4o¹"8`}êÝÄa´¨$GÜ"rŒ=3ÍZ¸u„r+nØ4ˆC Oz¤¿1ª‹Ï&™C3¯ Ã,Oä*xfšfŒá˜a½êxfxC2HÁ©ôùÚDxßïDq¸w­½ é®-Ý|Ñ67ù­]*äÜ[¶ñ†FÁ«Û{Ué_b— éV¤;‘éÍUš$t ¯Áþ!Á¬Û›deW I§<*À6ñÏ$ô¦Ås ‚N éIi}ojÅIm­éÚ‹{˜ m¬N+ ãLž}QåUc>wüµšmBIÔ>Cù³–MJK˜ÆXÕ¬F3’p§åü 9‹ÿ©WŒäô¡!ûR¤Q¸¹O5vÎ&Ô#K1„EÜ\ާš·k^F°´.KZÍÖ¼¿6FRB¢_­PºdIäxÙ”*áHîzUÍ©$¬ŒT*…SïU4h¦k°blc©«¾IüíëÂ÷cÚ§ÑV?÷x Õ˜ö®ÅwÜrk¦þ~µÐö÷õ¢Š(¢ŠZ(¤¢ŠZ(¢Š)(¢–Š*¥’˜íIe‰æ±ôÀ`ÑK.³œ“þ}«>ÀyZ^G5NêMìËÔƒÅcÜ?™!ÁëYw/æ1“šÊ–áá¹aŒgž;Õs;E)ÇãU<Ì;ÐÓÞKtså¦É'ðãõ§1‰\ì\“ŸÃÖ˜ùW‚* `Å´…,àTmî[krÀ$ˆù°ä°’¹vr)-cÚ7°¦[¦È÷7856aiŽÀYº È\íšP±W EkycöK/›¦*ä+E$jû]øö«Öè l3ñšsJ¶÷ jéºAäœL¹U·˜Bë– œô›:¤yL2Àu«Vÿ<Âyܤ“ÙMOg.mf¶|e'>‡TÖ²fÚHeH'è{U-;yL“’A^õŸv¯9&¨Æ~A늴Ãäb[ “éR•9è)üíëÅYÓˆ²æ85Ðxr2¶.çïšÚÑP¥‘-üLy«XÏZÓ!OZ¼@'š£.ø¥#hå²èk"å%†}»ÜĨ gÊ96ìêr$Öë9 É# TsØ‹†€äãpÙmVfÈõ¤ºòà´òù,:ÖŸª‹{[,d^€Z]CÊ‚×Êï1PKˆ­¶¾d‘žÜV^6 \|äæ³Ší@¤|Çš’6ÜÊù‘FÐ*Ô}ŽIñ÷ä@¨ëV£™mžbÜà±µ‡Ž( oþµÛ;»TnQcµ%ÏÎí=»U ½‘Zç.ÍœµoÆ;sp[ý`ûµÐè–¿g³Vn ƒ$V¾‰j`³äî“’=+r´+BŠ(¢Š)h¢’Š)h¢Š(¢Š(¢Š¢î±Ú*ƒœæ¹–¸Ù`)ãq&±m¶‹œŠÊ¾vFڼˡ6PàqÜš¥>Tñõ5D!˜õ;” „)sבüª¾Íǯ"r¥B‘ÇûÑ(Æjtœ NjT–4Umß QŸsŽ• u\6~\‘O*àç Š« Û<íû’jŠ9Ù“ª½@“\§fr¥jüxÑ‚9Sz–¼Ñ¯qùÔ‘ýâ€öª6”gNESˆü ÙUE?*ö ²ªdW‰G2OµK ™NÀq¸óô©`S)Ú:1æ¬ Ëx …é8¹oªÙÛíT£w½kŨ[BÉn8‚}êk›˜íÐ37p¾õvöú+HUØŒ·Üjææ;xÃ1ûÝ)‰Š(¢Š(¢ŠZ(¢Š(¢Š(¢Š(¬·ù(ÉÛø äT`Ž Çå\òð c½T™Re:GT•@^£­6P²/EfAt±Ü’GËœíT¢˜,¼ôΪ1ÊÜðZ³p7D팂£ò©¦Fl}*yW(N:ôªóBâÈ1àÒ¡’6û>OJ†XÛÈç¥V´]·(âóQÁÄ€ú ‚±÷zU»x¡YEÅãb4$íþ÷µYµŽ/8IvØJ÷ojžÑc3y·'œ{ûUˆµ¶«Fb(ùc1þ5)½ûJ4jF¿u;c×ëVVô\Æcj/E«R»}™‚¶|¿Ÿéš{’a;Nvüø©\⎋ÍMor C:œ©aúŒm¼Á.bt üéI¶æ2:dΑ#ÜËxËcùÓ$ŒEq"z1‹²vSÓ$Ô¥”F»!4à@Q·° ÓÁAN `Õ}†qäÄœžÿݦÇo%Ëyp¡f?¥6;wö"’}kg`1Î8P3]dÐ+Y˜.UÉÅtrGºÛk€H\sÚ³ ¶És‰w/äW7ÄÞÅ*FG–rHïX«40]£ª‘³‚Gz±*ƒ4h‹µ3’Hîjû"Éw"”ˆ¶âXw5q‘^áWNâM2ð0“yl)_T@.w«’ aH¨5$ýöðÙãŠ`‘Sc7 ·½U€*O ÕhØ9èiœ<»ú¨ÜÃÜÿúêSæDï¿;ñ¼sRᑟ=GQõ¬{Xûl,`•VÇÐu56ƒüLYÓø2¤Jn’Œu?19 ƒé]_9ç°®×BzÑE%QERÑEQIE´QEQE™t¬‹ÈÉ'šåfB¨8Ï?•aJ¥ןʲ™Ú6$Ž ÎÓU´yÈü S%“9ïYóÛ´L VÈíUeˆ£r8<ÕIb*üŽ _´É¶òx$U˜r`ÁÉÏ5n,´<ç¥fÇ;—ÜX‘ÓÙª‚VßÉÊúU•™ù9ô­(¢„1eÈÎ*ÚG$Ö®¬QqÎ:;$šìÉtê-¢ysS[ZFó¼—N(Ç ýóN‚Î6™žáÀŠ1ÇûF¨ÜoxLl0~î=*ŒØŽá¼³ÁrËŒj¼Ÿ=¼É݆j¾‘"л€Ñã ݹª–à Ø(xê½® !ˆÌg€kH~òFàsÞ¦'{œþ½HN÷>´ø¢iØÂp3óž¹ö«zm›]ɳ "œÕ»Spûq…CÉ­TŒ|»TWH‚)å îEm¢Ã%v¨îj•ÍÙ|Å*3‚Þµ‹©jþph-òªN ÷5—©ùŠÐÃÆx-Pª¨’( >KcœVZs±Aù²HÕä¨+žA&‹™nvYp>dÀç<·“ÈÙvQ•ãµM-ÔÌ~lp2>•-ÆÙmc|á—V®BͧG.ã½NÕ›²Y«‚AU[YQ¥y]IX”•pqLÒ­ÐÉ%ÄÀ”‰IÛJ‹N‰7¼²‚D`¸§‰6Ç,íÇšG¥Wy™ÌÓ7&CÏ·åQ<¥Œ²°åÏOjM·Ë+9­?lŒz½¢’LšÖ­šÒ¢Š(¢Š(¢–Š(¢Š(¢Š(¢Š)(¢²¥gógʆpx¤QȨ~VÎ3M™cþaÉV9±QΨªÛŽHcÇlTR"ªä­Ú³’ýšPª1ÝúÕ5¹%ÂòôªÑÜî“˃À¨b·uvBF@?­D‘H=ºTQDA?[·Îö™¸‰vG­X„—?qGëV£fCÂLº¹?e@z’HôÉåÌ*=ø¨n¥&5ªÛFgŸ±ŽwŠó%5ºùÒ‚OJÞIÙ^TëZ‘8·»VwpÍkE(Šì7bj;*öiþð$‘ì3Uü‚³É èXœþ5\[lšY œÕÑÕ‰#š8Ýó ÃdÔï(²µBŠ HsõÿÆ//&˜Å]UŠbÜ®85FY|À­´ÆIå{UIf.¡')‡VCÀÎÚ«à1ªÇàjGâ4#ï0`b3S°Û·pxüjv]±+waQÎáÁ8RÛ1Mf28àd` i>d€cž=¥¤Ø¥±èzJÖx­öŒnŒt ãúV›Fdp:UWŠF½Ž)òÕ|ÆRj½ËÉidŒüÒ‘Ug2![pä/VÅSÕn]™í—åUb*›&ålœ(ïUe÷ àzÔúdëmr»äe O½héyw{K¬0jö›(Žã†cë]Péë[½;ðk_ß)#™ÆáÔôÅKRS¨¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢ŠZ(¤¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¤¢Š(¢Š(¢Š)h¢šìUrO¥t®_^V]]™‡£mr#W]YÙº0k—×CM™þ늟ÃLVöxÆv4yüAÿëÕ¯ ¹7Œí(â?ýuoÃND“ÅÎÜ]tµ»KEQEQEQEQEQEQEQEQEQEQEQEQEQEQERQEQKE”QERÑEQPÝ[Ct'Œ0=ECsiÚl¸Œ8=EEqm ÒâXÃc¡¤µµ‚ÕJÀrORh´³·³B–ñ…¯94[ÛÅl›!M£¾9©êj–ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¥¢Š(¥¤¢’Š(¢Š(¢Š)(¢–Š(¢Š(¢Š(¤¢ŠZ(¢Š) 3ëE´QIE´QEQEQEQEQEƒ8æœs@¥¢Š(¢Š(¢Š(¥¢ŠJZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢’Š(¢ŠZ)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š)(¢‘3ƒ»ð P)ÔQEQE-RQE”QEQEQE-QEQE%Qš(¥¢Š(¢ŠZ))(¥¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢’–ŠZJ(¢Š(¢Š(¢Š)(¢–Š(¢Š(¥¢ŠJJ(¥¢Š(¢Š(¤4(¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¤¢ŠZ(¤¢Ö‚qґبƆ8äP9£9´´QE”QKEQKE””QKEQE´QIEQEQEQKE””QKEQEQERQEQÞ–Š(¢Š(¢’Š)h¥¢ŠJLb€1@¥¢Š(¥¢ŠNÔQEQEQEQE%RÑE%RÑEQE´RÒQERQIE´QIE´QIE´QEQE”QKEQEQEQEQEQIE´QEQEQEQE´QIIEQEQKEQEQIE´QEQEQEQEQEQE%RÑEQEQEQEQEQEQEQIEQE-QE-%”QE-´QIEQEQEQIE´QEQEQE#g·ZµÚ­Š(¢––Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š))h¢’’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¤¢’–ŠZCÅâœQ@¢–Š(¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š)(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢ŠCA ó@vÅ-QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERÑKIE%QEQERQE-QE-RQE”QKEQE%RÑE%RÑEQERQE-QEQEQIE´QIE´QEQKE”QEQERÑERÒQIEQEQEQGÖ¹ûMJöMt[ÈqfvöÅQŽîWÔ|†g$qTb¼•õ/³¶6òzWAÞ¯UóE””QKEQEQEQEQEQEQEQEQEQEQEQEQKERÑIERQEQEQEQEQE7ËMûö.ïïbŽ:€éš0ܦqN¢Š(¢Š(¢Š)(¢–Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¢Š)(¢–Š)(¢ŠZ(¤¢–Š)(¢–Š))h¢’Š(¤¢ŠZ(¤¢ŠZ(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢ŠZ(¤¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š;ÑEQEQKE”QE-QE-%”QEQEQIE´QEQEQEQEQEQE´QIE´QIEQEQEQEQEQEQEQE´RÑE”QE”´RÒQIEQEQEQEQEQEQEQEQEQERÑE%袊(£µQE-RQE-RQEQEQEQKEQE%QEQEQEQEQEQE”QKEQKE”QEQEQEQEQIE´QEQEQEQE--”QKIE%RÑE%QE´QIEQEQEQEQE´QIEQEQKE”QEQEQEQERÑKIE%QERÑEQIE-RQE-QKE%%´QIEQEQEQEQERQE-QE”QKE”QKEQEQEQEQEQEQEQKE”RÑE%RÑE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQE´QIE´QIEQEQEQEQKE”QEQEQEQEQEQEQEQEQEQEQEQEQEQE´´QIE%QKE”QE´QIE´WÿÙÿØÿÀððÿÚ ?èë¢®ŽŠ)(¢Š(¢Š)h¢’’Š)ËN^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑKEQE%QE%RÑGzUïN^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠŽ£¨éh¢Š(¢–Š)(¢Š)(¢œ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TuQE-RRÑE%QER¯zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¤Íf–––Š)(¤¥¢ŠJU§-9iÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:(¢’Š)h¢ŠZ(¤¢Š(¥ZrÓ—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GEQEQEQE´QIJ´å§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¢Š(¢Š(¢ŠZ(¢ŠU¥ZrÓ©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔt”QERÑEQE´RÒR­*Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GEQEQEQEQE«NZr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢Š(¢ŠZ(¤¢Š)h¥¤¥ZU§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¢–Š)(¢Š(¢–Š))Vœ´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑE-´”RQEQERÑJ´«N^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TuQE´QERQEQE*Ó—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtQE´QIEQEQE-*Ó–•{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtRÑE%QKE”QKE”«N^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑE-RQE-RQEQE*Ó–œ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦TtRQEQKKE%QE´”«J´å§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¦QE%´QEQE”QE«NZr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¥¥¢ŠJ(¢ŠJ(¢Š(¢•iËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¦TtRQE-RRÑEQEQJ´åïJ´êu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S)”QIEQIE´QIEQJ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦Tu´´QIE%RÑEQE-*Ò¯zUïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Še2£¢Š(¤¥¢–Š(¤¢’Š(¥¥Zr÷¥^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦S*:)(¢––ŠJJ)ih¤¤¢––•iW½*÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¦QE%´QIEQE-QKJ´«J½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨é”QIE´QIEQE-QJ´åïJ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:(¢Š(¢–Š(¥¢ŠJ)(¥ZrÓ—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GEQEQEQE´QIJ´å§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¢Š(¢Š)h¢’–ŠZJU¥Zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙÿØÿÀððÿÚ ?è«¢®ŠŠ(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢Š(¢’Š)h¢’Š)h¢’Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢ŠJ(¢Š)h¢’Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢Š(¢Š)(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š(¢ŠJ(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠQEQERÑEQIEQEQKE”QEQEQEQEQEQߦ=èïÒŠ(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¥¢ŠJ(¥¢Š(¢’Š)h¢’Š)h¢Š(¤¢Š(£½QKE”QEQEQEQERÑE%QEQE-QEQE%RÑE%QEQE-RQE-RQEQERÑE%QEQEQKE”QEQE´QIE´QIEQEQEQEQGZZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š(¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢–Š(¢Š(¢’Š)h¢’Š)h¢Š(¢Š)(¢Š(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š(¢ŠZ(¢Š(¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢Š(¢Š(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¢Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ç<ô¤Ï=(¢–ŠZ(¤¢Š(¢–Š)(¢–Š(¢ŠJ(¢Š)h¢’Š(¢ŠZ(¢Š)(¢Š(¢Š)h¢’Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢ŠZ(¢Š)(¢–Š)(¢–Š(¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢Š(¥¢Š(¢Š(¢Š)(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š)(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š(¢Š(¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢Š(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¢Š)(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢ƒEQEQE´QIEQEQEQEQEQERÑE%RÑE%QEQEQKE”QERÑE%QEQEQEQECA¢”QEQEQEQEQE´QIEQEQGz¨¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¢Š(¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(£½袊(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢’Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿ÿÙÿØÿÀððÿÚ ?è«¢®Š–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(£ð¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š(¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š(¢Š(¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢ŠsȤ\ää R ç‘Å---%R‚1HIÍ'zZZZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š(¢ŠJ(¥¢Š(¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢Š(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¢Š)h¢Š(¤¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢Š(¢’Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š( ô ô¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š( ô¢€¤QKEQEQEQEQKE”QEQE´QIE´QIEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQE´QIEQEQEQEQEQEQEQEQERÑE%QEQGj(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(íEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQERÑE%QEQEQEQEQE-RQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQERÑE%QE´QIE´QIEQE-RQEQEQEQEQEQEQEQEQEQEQEQE´QIEQEQEQE´QIE´QIEQEw¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(úÒÑE%QEQEQKEÓÃŽi§v᎔œæ–KEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯ÿÙÿØÿÀððÿÚ ?èë¢®Š’Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢Š(¢’Š(¢ŠZ(¤¢Š(¢Š(¢“©úQëAâ“ÃÓ4ƒ­R»}×(ùçúW7ªJf¼Î9åX—Òy— Ž çúQ‰ØóµÁ4ËF1|ÿÝqš,ÛË Ç z5–ìñrì>olÖ¦¯|Aû<$o#Ÿ¡«ºÑ†3–À«Õ«Wé(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢›+ˆ¶qU5„6¬s‚8¨/$Û’O^*ºîYÇÞã>ÚÀw%ù'ËšÈûÌKu<ÓpÌ®ƒ’Àþ¼ŠXÔºº/W:X`ʽù¨nAleÆg—ä\õ©®ŠÃh`Ï?ʽÎ*[¦ÛüœÍ/Ê3Ú´«£­ŠZ(¢Š(¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š( §8÷¦œXœÉoJËcœÕYåÞÛPp:{šÀÕ/VâQX§Lw÷¬}BäJûP|‰ÓÞš‚~\m©oÀ5P¶Ó#K‰·!F>R}Oʦ´¶¸•HŽÐÕ'Ôÿõªk{yÞ'tùxÀÏ©ëO¶²Ut¸šC+…IíZ6rBËuw(rmÉéWílÄ/ö‹‡À|¾Â®V½^¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(=(¤bK7 Ó&‘b‰ÝŽGçI+ªFÎÝV’c'Êåôõ®~ÿP’å¶Œ„wúÖ=ÝëÌJôAÐSÌGBG§aT¹fõÇ_j¨>f¦²î‘ –?§CMq@d¹íÚŸ FiÑ$ŸÊ¯… 8Òºu¶D#N<¾s[¾R¤j«Ñ:{Õ&“̸˜…6¯ÔÖ¡t'º˜  Ú1ÜÖUåÏ™4м"ñÇ­^®Ž¶h¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ô抂úQ;Ë?aYšõÒÇj±)¤=PÕ®@#,çµ@€rÜ€2ßáXˆFnÚÍ@ANfÆ~l ëJHUÀ8QHNÕÀà –Ö<+/ÏØ¶tKPˆnýf0ÿ­=.Ø"_ýct‚¤¸q Çè>µsRŸìö2¹88ÀúÕ›ÉD®äãÒ©Æ»#,wí\ÀÈ䟼rkd.OV95~» éh¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢‘ÜFž¦ »¹[xØõ5óÐæ³f&[§#£åË]HÓÝ;ʹùÜÍrOQÓ;",üÇýªi1 ²À]Žæö©äÄp$Cï–4Ù3æGsƒQ¨/,h£8¨Ô3ʈãS/ú8fÜÒHýr1ŸLV¬3›l³<®2C dÖ”rý‘XYÏPÝ*ÝåWR `Žà}k>òâk­ÅË0ϰªW3K:Ù#?…Æ 1É\’¿ìãŠdQcæç$LqMŽ"só’^®²·è¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŒöÍ&@8Î  œw¨æ¸0E˜öªWº·“ËNZªÜ^›hëUîçhãÿ¬¸ozÇÔ¯†[†n‚³5 ¦ þÑè*(”Týâ?Ž*œ ±Áê@ÈúÕhkç©ÇëRmÙ’Änaž:šy\dœniå6å˜òiðcÌ ›'q«Z~Õ¸F+œ’*ÕŽUb3ž)·Lá·ú‚¢“S’I'óXŠn ò!ãwJ^X„Ps–cÓ­!GšÜ$}AÜÍõ4icEN0FMº¢0æfl1´·.‰Š,XîaÜúRÎê# –Á5rºjÚ£½QEQEQEQEQEQERÑE%QEQEQEQE„àíH͵Y½i Ú ôæ”r¡HeqšQÈwæŠZ)qž(Á €pqÁ£´È»s’W€ôS÷”m>ø¨ü¼s…ïTƒžY_’á\õܘ»•Û–V5Ì»'‘QP.éeidåÛÒ¨³4®]ÎsúUÍ$…Û“ØTíÀÎy?tÔª6óߊ™©*Ž3–÷©Ò3+_Æ­G™ÀI$~\<œòð¥qf--U÷nmûŽ=*ì–ëm 1ä†ý)·gtbC‚±á±ëPj®%+"±>ïÒ Ô˜R@ PÈï¼£1TÀ<µJY,±TüÕ{¹šYÏA f_/<p>µI÷0Ø¥T`\„©r›9…j¶®×%q…«1‘nÛ™rW-6T’p „%G@=êI¾Ó{µ§|FYGÝÔÓå\àÌØŒrÀvr·ëVŠ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(£à÷¤u…B) ‡z­(?f•O$.ïʲdì®c<‘ûÁøuý*‹ öÒ)ê¿8þµ*É‚sŽþµfÍ¥co›hå‡_oÒ¦Žã­ómŸZaºÕ´‘%F üê°ºÙö¡›deÏjŠöo&ÝÜv¨î¤ò gg†fg‘ùÏÝËÉ#;;¹ëÒ°%rä³ç¥œ éÞ¢SÍB G!;Ö5ËJzOzrFÒJ± %¥:8ši6 úÕË{Qn¹o½­mÚiËfŠî»ä<é[6ÖBÝGË’ií•Ë7V?¥$åÕËHFö?6=)$,­—?1ëŽÔÆ8vcÀϵRüîÝþ}ª«œoN”ÀÁ"#ç<Ó2#Ž?ïL.#D=ÈÍ*ዳs ǯ¥Y…|Ï2GŒ‘Üž«0¨;ÆFF½I’ä.9Iedß'–Ãˉ³‘Ô…©Cî%_äR9Õ5kÕú(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢z(¨ÆPñUÿG¼±²N¹éUOî®nQ¢ùNèEܦªÂ‚)gŒurg¿µC´ªX ¥H£%z Žx«vªÍ*@ÀÜüzö«‚dvÓ/l`SUõù¶Ç=å›ðªú´˜T‹±äÔRìCmÏ&²n•SËL`ã$Ö}àU( rFj6€ùã8Å@FyJ®FêŸOEØò‘ó3Ÿ¥nhñypÃ-¸ÖΓ s+ZœI ‘zg M’y摦N$÷E5¤šFiG86F 3Ôõ¨äŽB7ºð>ö9Ûõ¦º9RØ8MB¤W–lô8ëøÕ4S"È¿ÆFW=ýj¢)ueþ"r¾â›“$¿yúóQƒ¾=ÄüÛˆ#ëÍ0Ñ‚Ì1N¸,†[òþ#W¤er‚Ê9ÿyêó°È3€À¦¬ÂRI  ±ôé‚Cq#³.˹=‡¥E¸Ì ?oj¿]lQEQE-RQEQEQEQEQEQEQEQKA œïGEÉ8íF(ô ý(ô ý !ãÖ†ÀƒAâ™0 0þAª—è%³wÁó)¨.Ô5»°þ»PÊOÉ'¨Á¬ë²ËäÎßQúŒÖª\å rxTãæRG G?ãZ°,ÔaÝpƯFD‘–3 ­{˜”“ÐòG§jÊÖ-$é#°bØÿëU NÝ–%‘›%[ô¤˜©’-Ý6ƒúUö ÷Ò«¦Ñ0Dû¬Ù_o_åXñ¨m@GÝgÊûsÏò¬Ø”5îÔás‘Šk0ÈcÜÝûã¯õ¨fdûLÞOÜ/Ôú †f_>_+¡lf beòÓ–#8è3D{æƒ-ŒgØfž›¤Ú½py§j¯åÙ:ÆC"0¢ŽãëSêŠÐì}ìÄFtýz–øm€ª±bÄ!Ç¥i×GZôQE-RQEQEQEQEQEQEQEQBÙ¦«†Ï`)ƒ“ØvªsÎ’¾ÜŸ-OQüF°u @\Iå©"$\‘V/Ó6òδ]"…²~•©Àù{c×áBì?t ~•ÒáJ•íŒUq'“ÓóH¿(ÏJ͈¶¶òÛæ™ÐqëTþÚ±C´üÒ¯þU+Îå\ä»xÇøÖ|ÒÍpÌðy;xªrË$¥·ýÞ¼R+€d‘H~U& Ž]…äN¿ujä*]‡^•TO–ùôj(ÁfÂŒ’xÅ20ÌÄ/$ÔÖv²!rp>]¸ïZznžãÌ-Àô«öv¬–$ ™öyvï FÅÞ¦™áYÂF›Õ1±qÐ÷©$hÖmª»•zV«Z¯QEQEQEQEQEQEQEQEQE})“` ãrŸåU.È'9ÆøþZ‚ä…IOMËÅU›>îïÜ×<ÁX©ïXΪA8Àõ¨JæO&#—oüwÞ™oÜ\,1d±ê})–ð4óˆÓ8îjÙP»a^ˆ+Jïj¸µ‹î@6­_¹+¿ÊSòF1N/nÊØ ÙT>ÕvÙž]1–AÄ€¤g¹Œš·y,J¸Áqµ@¦²æØ…çß^hËÚ:·"Œç¹T2¦è èËúÓ2cœÈŠH`ÿ£ÃÙÜùˆ2¬>`{ýj¤S5¬å”e[ªÑrÂXQÓ•A§j“ÇsIÝÇCÔõ¨Ô'ŒIÝííU”á9Î f޵˜cV,†é™±Â®?Íkøv<Ü<¬8DÇãZÚxw”Ž€*ÛP3ÉÏ¥m\¹68;K{kNf"&úséTÎÃnÛâsÜšç .òB¦sÇzÇÈi73¹üè¸6ú÷¦³—j ïÞ˜ì[;A˜Ìª¦ÿ–£–8¦ÆÄ«œRFHS^ñb™f¯ɵrí±twýjÖæ@Î"LÈë…r>àõ«6[ãÞª¿;þW"Œ$`s“ž¼{ÖŒQ PÓuÉ88úÕÄO. \ž¦ óÃ#·'õôª+ H]‰ÆIõôªÂÆyÆIÅ^®‚µ¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*™êSÖq vÒ†<´d/çTÈûA”ëŒÕ[†ÚH~ecÖ°îr¯å¡ù€ZËœF™É8â­ÛĶñª <±îMtvVÑÙ@±ÆœíùzÛ¶…-£TEç1ïšCggIXnêJ†]2)ey£•¿^ãò¨d±I¤IKÿ:|JÉVÃ:V­£xmã‰þfQ´?*±•‰Œ:ŠIHL³}Â0EV½o³’ùÊH+ŒÔ7ÊbÝUƨ%ttEW ýˆþU—xñMa>YW##ùV}ÙIQB‚¯ôëMµ2sœ°ª°¤«~5^FUª)#òæ#?)íPÍϪ c)!ô5=¡Ûæ9d÷­}"U†ÑцWʵZºkˆí6tb~_zšã+ î[ƒWuLÅ`I9f ¥Y¿ù- Ï$àš¬£×Ÿ› +5ÎIäô²ã^ ïJXª8oíÍ1˜…uë‘Ö˜Çäq×¥GæL«åÚ),yy[ övÝåXU,Ðïë$­ÓéW!gXÑm“ûÌÕaŽÁûÂXðX×ü殿îðd%ÏÊÅTuãÿ¯V„å²ý Sf>|aÕN@Ãx¨¯\Ý ‘c*c¯Ë’f ÁHŒnÏô„¹Î¢† ׋`ŒçÖ™a®B609«µ½ZtQEQEQEQEQEQEQEQEP:ÑÜP:ÕI&#¾9$…?`]]ý™e Ã3ãY7&uQóE6ÊØœM(#œ€zŸsRhÚ{1SärƒúÔše‘¸›ï@«ŒûW8Ë­Y®/˃!à-_’]«òòç ¦[±t]ãG" ±¸ióFÉ1ózŠÖmëóü¬j\»î9ÅXëÐÔr0ç'8áj´ò¤Îc’>E¨¥FÞaçŒTnÂVa§—s0¸‘¾Ui9ÅPšA+9Ú?*B¡ˆcÕ’«I!t¨^=¤7µCp¾e´l>övýi’Fd…ûÙÅ1âóH俥1á£F*Œâ¥’£Y¨?ýz–HŒ% `f™+™Q`Œ–}ß1ôë‹—»·K`YÝ_.Þƒµ,“5ÌIK0?1ôÖâLF1´ò}j»q&€¤äÔ$íŽpM6|ne^„äý)’.dÚ½ù5Ò^ýjhþHâ‹¡eË7µlBR`·ÏÌ˹ˆëZ‰ˆÖ({ã-Or­Ž¤õ5=šoV©9ÿv¥·RœäÓ_2l!ùcà·©ª—w+5Ò¤Gå‚Þ¦«O0’`©Â§÷¦”+g‘þ5›X˜Zå`Ààçr·kF–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥g>‚ÜúVdãÌ’4=7:äÈ󮢌œ†p+f[¸Ôò U—Ùˆ‰Xí;:w«-äóËåZ+lS³î*ü—ÌåmÔí_”qGï×`=’òžoŽCqÁ¦•¸Œ®þ <”Æá£pIÈ«“Ú°‰¥‚\œgš±,Ë/Ÿþº­éD-6@'#’k>ËWk}ßh®N>µJÛR1oó‡|b5ËËÂuÔWº£ÜD{S°5Ö¢e?w Ú›láæ¦EEe'›p;¦Z?›/¥O9‘W/>XÊã¥ZºáqM‰L¢0?‰j]61B~ìlK[üÅFþy¦]Ϻ&Xøç¤Ö/|èÌq€|MÕ.wÄUG|L·ÍµƒÉŒÊÃ'ñàT6r-®•3™¤À¦Û:ÛéïÆdcHÅl¤ðÀüÃÜÔ.ž\ ž«~5ŠR$9?Zv";ýæ$ŒÔ¢Â‘I'Vɧċ £?VÍ><´1ç þ5jÛ,Ïpà ąžõbKJÜ$ XOúÉáhÏN9©ífÛÅÀ<"í@}ºÔɶ9¥ÏA… ° £Ûêj…ŸË±ärO×µT¶UN8 “õíCÊ©É<ç&–YÕ9ç­,“ÜjýtU¯EQEQEQEQEQEQEQE”QM™Äp»“Œ Uïäòlenø#ó¨®ßʵ‘½F*Œ̹@F0wsŽ+ŸÓ£óõÔpG̾+"Æ?:ðÆÑœûÔÞg“3¤n<ëV­îÆé–E` ¯qÏZ± ¦Öá‘Áœš’yB»wž>êæ§s–ª±¸>k~8«³«@ª¬ súS Û¶{sÖ¤·e·ÒÙÉã­=†À’{wª1Ny$ æg&BÄsɬ É–íšu»o-¹$qíIXí4‘|ãˆâxæ@ìæ¬ÙFësãp«6QºÜ©еtv¿ûÊ:ÑÖŽàà}ôÏãWu/’\zŠ‹Ì1Äc|ŽÙöªÑÜ´vb(ƒ4²H_=ºT1ÌËn©îû³R„qÅæ¶ã»ð9nK(íâ…®[Ì9$¨èjËÛ$)Lww U® ³‚xŽ3ÀšÒ‰'Þß,h~èª^`yCµð*Ê‚î›AcÔ–èjfÝ,ªTn¤·BjB Ž6©ÏRi@V™¤l8qíš|¦Gž_b\B})Р.ÓH7*.õ4vÉeÈ1ŸjsK+n;pd{jqy¨Ì>”é ,$3*ü¿tu5$þb[aÝWpû‹ÔSç,°aÈç°ëU%”¬Ic&ª<Œ#Ž$à ž*³»lH×€*µìÞAR Ç«Ü¸ˆƒŒæ ü¦ÍoW_]QEQEQEQEQEQEQEQEá;G@£žk+]g Šp­gê¬Áã+M²ˆí30ÚX|£ÐRèv FæAµ¤ANÒíÌQ\|ÒtÕ<‘¬ƒæê:5]»´Šè'Þ^Œ*Íź\/Î0áªrÛy3¤«'Ê äĽ±6w Ë&à½eÜZ›k…!òþU$ù1¬JpMªÊ|˜í#?(PÎ}ÿÏó©u;Ýe¾µZ5Øÿ1$3`V> žOSY[Jç&–3ÁqÆ2¿•" ÔFvÕnÖmã’k_H™]¶–=+WN‘\íÇ4Û¥"T‘È8j~³›ˆ¥qò‘ƒíK©Fþj¹àcQ„LO ì}?©§•¤2gäéPX°¬nyz/Yçe…AUæïVµ[‡»‘"AµP–$sšŸP•îFƒ ½ê¥¨Y®D+óc–5Fδ]—o-š«g›8QÈ^M_ݾY[øQq‘WåG¸||ª0»jܸa+àaxâçÉ žÁÛñ¨K7ÙV0xsL%¼…AØäý{RWì†Dcð©P˜‚Ë!ÊAé‘R+Ô;Ì U®pî'27¨íU§3 ¸'t‡×Ò«ÌûŽ3ÏV5VY ‘ƒÁ¨$|cÁ¨°F* O inSë?!QßàÛBËÔ¹þB¡Ô`ˆ¯]ƺJì+¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢˜ñ$›wäã·j‚kHîMÍ· ⢒åug±ÚŸùqÐ œ@;b¥ü¸èQPÝÌ_½öÇZ£«}›ìÿ¿l|˜ûÕZÿÉòÿz>á¨b æI‘ò‘×Ú±2æWÈ'#©ô¬¬¶çïŸZF9‰H<(ÃJ†NcR½1Ö¢›înZ€¹ øè{¬XàUK)ö¯åÈ }ÜàÕÝ._&ò.~RüÕí.m“¦O~tóbdÏ8È®P·ûM³ ûÕ­«È¼èJ¼9Ÿ5À@ÌB‰Æ;×7$¦2NÐqŠÅ’O,“€qY÷7’H6œ†+Û¦)’Ü» ;öÓd™vó¸Ò­iˆR4zFاýš·¥®#“Ëûңݫ6 û§ÙÖCúV@Àœ÷š´g&Ö?¸¼ÈÞõnT K÷Wï5FYX­ÑGâjˆt‘Ø©ÀP9÷\2»1SÀ¦Í ^z(O”zšK‡)ÆÕTÂû“M™øðáEdý¹ ¬¥ø³Ò³Öè +ÿIn@‚)÷)‡-‘Œä |Ƀ»#iÒ'$“Å2õ Y(þ$€?þµ2àn³\ðQŽ%È/n¾ªÆºJì«£¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ÖÖŠ«1Ý+ž `cXŒžeܧ9ÇÚ²¯<î}8F0NæíUÑÈ'œb¡E' ž¼R>!òÁÿV>÷Ö™*ÂŒ|£ùÓd]ª£µA2b]„à0ȪÓG¶LŒ*¤ÑâL¦HDQ C¯Å"?–È}"p;5kõ ×h§ 68 êAä^k›”™.îA!й tú~•Ç]|÷×'<lW5?Ïu?=±Kh“;~A÷³ü©ÐÄf`p6wÍ>(üÆ(ëZÈ©m‰T€¸=+Z=¨›!Ú°ƒ=ëF0¨¡cÀ'ŠI‰` €ä¿.ô—²«/Ù-àͺILÔÛ§‚ÞÇ.ÿÒ…ŽÜˆÔc<}((‘Zb02HÁö ª%¸¼ž†«Ýï ÿ¼}ñU® K$P©è>cr²H‘¯§&¹ùSË äŽ1Xò.Ì稬©–йfæX„náÐûU‹v/Æ=ªÅ»kjÈÚЈÜTÃ6SpcÚzVíuµ¿EQEQEQEQE´QIEQE-RQEQERŽ¿…óŽ¸âŽ T ¾!ú¦K ç",’õd–þU‘‘;ùŸÂNEI׿9× æ/Ýf8ü)\mPàpzScýãÄ* Réê·1$œ ,il€šU÷y5 ÞZiç`ÀZ©©®.œ/E8ªjJä/j+˜È„å@bı÷þ½D±~þ1ü$ŒÖ“7œv¡ù k©öŸ’3û¥à·¯µt¼æÂ}ÑÁ5}b$½*²ÀN+#V²VÔT¡YCOjϾ´ |›H Ê3Sº‘’5 »qlòjVˆF­üª1õ<Óü°«° ÅIrFÀpê*{õÛãUÚ–Fj[¥ÄXP©ЇjíSÀب]„ Ø€=±Q6d  ñô¤›)m„þÇçEÓ²?€mëEÁ+n6öù:¤øÞ[s÷ªo,9+ŒU>å‡n•Vîì…,~ð¨ncÊW=ECsfäžÕ:L¬Fî 2(dǽ68Ù[8Æ)>Û›´†À8&]F$ä àÑö¨Ä›OJéë´®–Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢ŠZ©9 wÿ]V«ˆõYVe÷Ëx@êâœHXDL~aÐÓP,…»œ9 Ódp-–&û˜€¬ð¨#¶j;–öÝANsM²âê5ŒTs6nelñЊ«vÆK¹XœóƒU.‰yä9ÎOø“÷4Œ[jr=êÕº™¢iI`#û¾ýªå¬ æ†cœ/Oz±ÓíÁí[L<¿t«`Õûr {zTLá®NÜ3(Æî©ÜK¾ùŠa™8Üzþ½W‘÷ݼ‘ÆOjg”e›ç'æãŠ‚;sqrÜýÇj!2ÌC> ïOucˆ_& 54âaoÔÜ0XØðêiI>\­ŒðqíFsk;à·åö¡ú4Œ@9‘+°“ƒœüë%˜†àõ³‰!œìbÅ,¤a[³ t§€{µ!b°Hçª)#ñ¡ŽÈäcÔ/×m‘HÝÂÖ:©Øpúõ›´àVhƒïÍwUè5ÚQEQEQEQEQEQEQEQEQEQAé@ëCªÍÞ™3‰ØuŠl¶2j¬Qp#îuÏJÄHÙ¯D“±wûãÒ³R<Üï•·6áMvÜ@ë†Æj¬²op0¨$}σÐ’‘ܹ\"ŒWtÛE‘ÚwFÕ›·LÙU jp’K!#äÞØÏÖªB"{—8ùMW‰Q¤vì Á÷©c_:<¹;ÈÜý+BÎ5šf$>Ýû¿•]ÄÏüXÏ`Cm$ºŽ1ÜR‰ÙHa*F1ƒ€(à!;—¥F0bß»Nàu5Whf-.cŒ•MWÛ’Z@U;GSOWS*0Rg9Ï5¼ê.REŒ…@À äž*X$puR h”·•×'=©o´)ÎXÞô·9dQœž”“.<¸†0£“úÓ.Î|˜Wc\úÓnNæHóò¢óQ¼€G  €9¦Ë0ò¤a[šd’)×±¬©c;öƒŒò7w¬¶C»==êƒ)ÎáR,bH<¹€þO4;['·cOÆèÀaô¦L Á"&H*y=é²åº®qަ™(7 œÖ³QFäÎ}ê’.YGçTãOqÖ»Zïk¯¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠŽi»‘ÀVöé!†^~~j™–8sóöY¨ 3“úf°¼Æ3“Ö²¼ÆëÏZ`R×>Zps’GEÿëÒZ@g»XÔí²Ì{RZÅçÜþæ§½‘a¶ØOjÒÕ®¢·±û<nÎÜ/lUÝFå"¶DÀž˜Œˆ£cÑOSYiª#pÇó5E"p¨NpÇ¡©ÎáF–fÁ8éZJì–ÆÚÝ#¶ÂØá}…_Wa†3—s‚Ç § )Û“òg$T‰"¦c$ƒA#¿ä`oBœQà1óƒQŠb !i²vàíöÇzb ,^\œs·Úœ§`8àõ8§+‘ûÀ£nF÷8¥ÜTÛ€…4á¤?Æ0¸íQùm$m3‡áqL*̦F9Üp¨$Ý€™òª²Kº]Û°#?…@ï—-’üj¬#¾Ðų÷—ð¨mÝYÂäŸï¡‰•›h?QëRİÞYÜ=¾•bâ4“0ÚÔñ¤kI)túSKiÔ‹i·9SÅFM¼±þâMø­0˜dBb“v;T ómNÃ9Y¾|& €à-B-ö8äps“Q¶° Ž F±í`Aºjí+¥¢Š(¢ŠZ(¤¢Š(¢Š(¢Š( ô4t r(0ͳKqAÀêÂŽ=EQGÒŒôzûQý*!q ]Ùç8ÁõªCUµØNHaÆÒ;Õo·Á´œÜŠÜKt„ä5•5ÇÚ/ÏzU›Ï¹V=)ï9g-ÏM•+ÛÆ¿¼—s)íJðÆ£|›Ž{%Dä‹äÇžI9-P=ÈòÄPÅäEž¹Éo­Bó‚»"O-~昱IpJùÞÍC¬·²Rp'Ò¢‚ÞK·à õ« £b è€€}ëJá#û:Ä) ¼sWçT0„ykòýiaϤ.:þËf+gæ‚?Bx¦ÄvÛ†éךd$ìiBqÍ:ËrD× 2¬øæ–×rÅæ·;›Ò¹ÚFòNâI¾ÔùWA+]‰`;ú s09ÝÉ¿µ¶Â£p,¹8ô¥$-’¦AaÎAéøÒ¿ʹËÓÒetìª?úô¤•бÜNiX‘¦Ü Ömô¥"rGßqŸÇšÆ¸ˆØŸâoçÍeÌûc>¬EQ‰¶ËÁýâòWˆ‘'2óPÆHl¼¼Òß»HCžUpûRݹb§°è).ݘ©ì8ÅGnsD@(îØ'Ú™é€U˜ãëM·ÂH˜3VŒ€+—$a›üš¸à,q‚Ø«l’OBk2âa$ÿ!` ãÿÕTf“|¸S€:§$›¥ã€Zëë¹®ªŠ(¢Š(¢Š(¢Š(¢Š(¢ŠP;ÐJîv …ö²òæ°õmI’E·¶~eȬ­Jý‘Ö(q÷G ÒÍ:¢¶@šƒO¹¸¹ºXÃgj;+‰n'ۜ։!$ô®†GDY»V¼¯åDXõÅV´¹óä>œÖ}ðžvñÒªÛ݉$aœÔ;BK*Ÿ#Þ²'P—3œo5*…¸/MÆžd¤mêqLFɽÈÇ\Sì|µY|øƒä¨aÀ­˜lÚæÙX¾Ðã…­D·3B m¡ÇÂÛÙXþí{š£‹ù®¯Äqž¾µV;Fga!ùTñPÏ?–žTŽN椚äC ÛÛepÇ{zÑ,â8Ä0p3ÍM”KeŸµH©bÏ!èJv  É%È¥ŸXòØ<Ƨ¾-ôt¾l‚}Îj[ÄX´ôRqÎi¯¿É ¤"(žæ£>i¶Ž5ÄqÇÎHäÓ[Íh‘Fuõ§I’IË éSMŽI%ÙCoj’T¦îYÍùSwÝ!@v÷æ‚Í.é¹s·¿4[s>1Å7q1J„‘¼ŒnõšM¬Ðä#=‡z‹y04GøÛôª7ÑoY#^NìÚιMÛœüÙ…Q Ï5š‡ý)]¶æA´z¬¿ñð±—`\nleÆ*ÅäY;” ‘Èõ©n'!FOj|ÉÐÒÛ@Æo9Ôá1´u¥·ˆ™DŒ:N†<¸‘‡N”ýE±B9b@ØÑxߺ Ó^7É×µQPlŸ”|ÄöªÁU“ ž={TU—pÏκúîk©¢Š)h¢’Š(¢Š(¢Š(¢ÖPÜÜyd"}ãY:¾¥å"/½Þ³õ+ï/÷qõ¬”ÜìI,Ms™,Y˜’I¬,—fbrXæ§…|’ÅX‚;ÔöÌðñ±WÅX¶/Ïw« 4²[ìuÃÔUùµ)¥³ò¤ûÞ§½\žúI-Äm÷»Õhö—FÁNÕFÝÞ2Y j¤4ye„ Ävæ«\[‰na…:MiÚðŒWLˆ#E@~è5´U 9Ú1PÏŒlĬÃê9þµŸ©mÚ"^¥ZB=øª·Ü|‹÷¶—ª)™4e†˜ûâ²=ïÞcïŠÏX÷:çîã'ëV|ÞxLªð OÇvð›‚ð*d—ØÈŒZê@¤mŠ>[ÜԨͩN›þ[h:SOR׳ß,Qþ´ü¹ðP³ø«AL·ª$å¸þ!Šœ|×?ÝSÅ5d/ÿx·ó¨Ì¥Ø™ÍGÓ4ÂåØîêJk8UoöóP<¡!Ãc“øÔO&ؾ‡ \B$⪭qµHQ×½Wið¥G9¨ÐqÐäů˞râ–%ù3ÜQx™ÑŠùêGJa†2ÈØÃg½3ÊRÊqÍW™‰vœUä?9ì:dT.rÇÓ¥Ifÿ9Lä•Ï­KhpLd縩mU'=ÅÑ €Ÿ-I4^F\G³ø&›v…‚㢮MCo nvmŒv¨#Lç F{{ÔH…³Ž ®š»Jéh¢Š(¢Š(¢Š(¢Š( u¡ØGvã ìëklîÇTwR‹x‰Á5–d^LäÔz×%,†YÉÍsrÉæ;6zÔx8Q´ñMT-Ž)#ByÅ\r°ZÉûÂsW÷à@eâ'ô«åâŠÑ/ÎyÝQÛ*œýîçÐUH‰“‚yõöª±ãžµ2„E*àzÔÁU€3RíQ“P[ÄàaÆTüÄ})Ф€lpBç&Ÿ¾6·sS'…Tüì ϵZƒ?o…cåÜdŸj±>ØŠ¿x®jÉgN6î­§wAŒnu­fNÙªÒ1ó#~ÄÍeßÈÂhæÝÁ£aøÕ ¶+"¶s¹6bˆØ¯Ú …_ñªÐ6Ø®ƒœ€§ÿ­PÄÀC0#8éDy†$/ó8*ia>Lh†ó žiñâ5DlýjyWÙSÀµ5²ý›Q6Ìw);qëžõ%°ònÚÊ磊YZêu8ŽiðI7Û'òÓ匚XÞO:l/ÊœP_ãŽj "y¾ÙÉ U.j6}ñH;ª»¹x\zP;o…‡¡ª7^Nq?øíTšQ š­4¡dÔ–÷jñ†#jX.PØäT°Îr:Š™Žï—:Ô„î8< ~rpx^â?Þ‡@H"¡ž?Þ‚£ŒT3¦+éEœL¬‡qƒKk ¸ŽÝéÖèCdŠÆp3’LóRÉ’vޭߨóOpI#¹þUì9N„*üÛ;ö¦ „ü+ÿÙÿØÿÀððÿÚ ?·aoåÂò•åÏ&©ÛDDF\pÍ€imb+KŒ<¹#ÿ£àH )5bârÖÛAä>•4ó·OÍÐK`Q“Ÿ—ð*ŽÔíe$ä•ÇãM·Â°÷R„4ÑÜ­_ÓÙ'¹éÍ[ÓÆ<ÈFɤ—æiÔŸ–Mƒ>„õý¥¹pZésòJcRŸè?ZYœ=GÝvAøõ?¥•k27;øšŽâE}-¢LowVôäÓ.ZÇÊ^¸<þtû¢Ë˜gÜÔjàÚ¼L>e;”ŸsLÞ «#GCY±Çap‰ûÂØªC‚³ù‰8ížj´Q¨a _™\TÓª3@h÷môÅM0WfÜ…¶lT²v´Ë” ›÷ïmÜéU5 JÞ`}Î[§§¥U½Ä¼6æ'šm¨Ž'¸º“åP6?ëSèñÇo÷²œ.<°=jm9Ö ®d=~M¾â«Áx'†K‚ ª¶÷¨c»óá{†*¶ûÔqÜù°™ÈùAÀf"ÓÇíÆî1ëN%îHßÇÛ=©Ii¶³éíRÛ ”†ÎG¥ZÒÀ„;X8ÃJ±b¾\y8;‡5“âX÷Û[Ϊx$§â4Y ¶ž4 òøb©x†?:eNIÁúöªvzaŠêÜÝ®ÆvŠ¥k`bº€])Úø;jµ–œ ¹„Ü© Œâº;†Äbüƒ +wT}”ÇÈpt­AÿÑÀP9àjŽ_ô{HbèH,ÏãUuö=:ÒÛ£`³â«ß³Ú[Û½M:U! ŒH$ŸçQ^[ù+kpY71þ¥6ò!“A·&‰ ‚¡3… .;šb`ÈŠ¹ê½FƒtŠŠ{àTÁD Òa>õ± ¿Øâyä yh~¤úÿ:ÒX–Ú)$~6­AÜ’F_Œ}3YöHfuBJåŽ=ª¶Èd`»hi ®ý¸+…w¦M+JÊû+…w¦K!rhàô¦»aŽ[”SøÓCmˆã–?(4ÜþèÉo—òªV¬'Xã µíLÔvÌg íª¿(úf£·<*çҞϸ; v¨îÝéÎû÷:(D!Tc³w§»î,Ê6¦@ïÅQžfJ¶1ïUe‘ƒš­$„6wUÙw¶Ÿ$¸(¥¹ïW'óO•ÃeJ«0Ï|â¬Üoû¾ìŒ.áDyÑÄ~b:ŠŽ7óã†5_˜ŽqéHç,qÎ>jºŠ‰ì©…úÕ•bFÌ)÷ÿ9©À3qÛ MÏ–NÔ²’¹÷8¨Ô´nB.LŠ@Ϲ¨Ô²É…^]xüy©Wç÷.ï)y=‹UëT󦔕a^§¡z·óZVÀ>XÆ}M2h٤ݸ8öª·vÌó±,3´{â«\[—•‰`8ëïO(¶ðlÆ\ûÿœÔòùV6Â(ˆ$¨2ïžO.Ö!xéϹ¤ö‚U‰$à ¥y;6ì1%åTî¦$’[Ò¡ŒfXÓ¨nI^ÃÌŠFW©ÍCl›¥\Œ¯SR}¡Y¥HpjÅ_û^‹*ƒž§"®ý£ÄCH5c*Áàv­åÏåN¤|àúw5o䤀gpéMšH‚ì‘ßLt¨nîíöùR»GðÈÿ Žææ,yr 8튨 Ç7òpjɉY®G›³÷Aæ³¢Wiÿt§žžÕOZ³YGqæJæGÇóý)úÁûŒ»ó!s$¸î{Rjî-ía¶Vù³¹þµBÂÒ$Éäoj …„Æ3Ó5U7cAœšÜÓ”%­¶ãÔš×°‰GÙ‡årxüMjÙÆªmÃÿš’Ô•¡9S“ÏAF—.Ûƒ‡ä õè:‘M°—ѱùv’=¸¨î²öÑáI\ž)×{ÞÊÈIþ”ëíoÛòäÑo8šHÄ‹ûÅàv§ZN'™VUĘÀ'ÒŸo(šEW>1Ï¥,«‰LlNÈùãÓ¯õ¨o¸»x‹$'íŒúÔ7<\8rH‹ §.f2?ÜÏØG4ÂóP3Ëþ¬ÝãQ´«q|n$åü£Ú‰]·•Àè>”˩东ÈÇҙq+O1b:ð£ÚŸonYÄ’©åE_Òtæ.“Τc•wN²*Ë, çªûT·`ùxþ‚ßJ¹«îû.ÕÉqíÿë«ùò@wp-ôíQ©É»;›8U>K«s¹÷`ùþ•YÂ8ÉqÚšØ]‹òd‘ß=ª¼ŒGðç×5 Ÿ™@è3ÅW¹ ò¨?)ù³éëúÔròÝ»ÓÖ£chþ¹5ZÑâ@ÞAR•RO¯Zm›¤EÌ{OÈUsïÞ’ÕÕö`‚¸ëOáV(òÇkíŠpÀF ;XžzbÐ"ó‘šÎ/9ÜIÍRòÆüw$ÕAq÷‰«³¡M1ÁÁÌ{9õ5\¸töÎå 3ê:Õ›E“àú޵6– ùoD§i'mÌGš“Nÿ\¼*ÝË•Ÿh*˜ÜÕEŠ^ùapʘQõ©nÙ…Û&>m  l¯€ÿ70=Jk’¡È<À¼c±éLf$;±ŒV-”F˜ÐÓBÇg2/‚ÏãWm@[WU6H?•E3Ö2@9A÷JöfŒÆØrã>㊭u##©ÆK¨¢u%À9Õ³̪AÆÅC0f™TŽ˜¦Ü|²lAÈ/øÔwHVãËPr¨®ý§ÊQÈ¥¸‘là ‹¾YhNÑé–khiW–=³Wgd²¶ ƒ#¯-éT­2²™d;ˆeÂÇ~çç±ÅP‡%É'%¸­(Ç”pÄ‚Hã§5»hŸf«ŒŠ×·Q "w”­l²Iæ;daGÓ[KŽK†šG%Kp£Šh±ŒÊdvÏ<Ú«ÚJ’ÜÊb‡Ûþ5žñµÜ¦p=±Ö¢²t2ÈÑþ5Ë^Ì÷WrÈä’Xíö+š¼î.䕉$±ÅswR´×Lí’w+kO†+ÄÈ*±àúq[m¬Wž[¶B¦¾8­›cº /E=kZA™öíRˆ¶+GPSö‚¥T¤h1Ž«·kûÖÈP`{Ud9u$cð¬ˆß-ŒõÈϵg#äþ8ϵY9–G—ï×5¸€Ëad 鞢µ†d¶PW Øš£p’‹¼F™Æ5•r$Šø^W5gK½/FÐ8 æ­ºIz©%S;M9á›ǵI"ïß1êHéLsˆ‚/ßfÆ~•I˜À_¼Æ©»ÔÓ“ýdhG3õ5-¾<ø¸á~¦¦·+ç¦~êŒþ5$’BªÝ€5¤÷r;$qÆwöÕÓpîUQNïAQ²”ÌA‰g9lâ›4RF~ÌÌKHrÛ¿ÏJIИKÍÏ&œß'–äîÚîx¨§"&󼪟—8äñQψÙXáHúŒ„MÙ,r[Ûÿ­U‘ 4h9;‹ŸJ…T³*“þÑ5™­ÎU6Ç£ä$wÏ'õ¨59›‹;W÷`Žùæ«êr¶Œ£äRi¨-4¹gœ09ÞG íN±Ao§I4™°;Ò–ÉE¾žÒÊH9ܱ -„Ê3À>*Xʽ¸•ryè}*ÄxhDƒ8'½ ‰üô u¡¥‘aYÌ©ùÞ‘Ö51?Z0é33` _^M1#ó-ærØ)Œ/­5P5¼ŒN6cÖ¬Ùò²ÉÀè©¬ÎØæ”>lf¤µ%"izØé3#ŒÛWqo~Ãõ¥¸c<»±¸¨ÜO¿oçK12HJŒìϽIdžhŸ£ü?úõwG·Y­îZOùhJ~Ÿýz³§B$·˜°åÉJl.c·ÞÚWð^ ÚÕž6êT§>‚¢†Sd=JàÒ8.èÄaSNj+‚exÙ¸XÀ}2i“n–EcÑx#6.2À• Í"¶ËÔ2‚P7ÍDlêîéœS$VkÙ_5KÍÓŠŠä•¿½ø¨do´,SƒÊ¬ŸÅŸQRLßkŠ)€ù•|¶_âÈî*IH¹Xæ^~P«0ZãfÐ9Ç©«V:k–Wu(«È¹«¶M¸3®Ð:RN €ìëÇb§Ô‰Ž æTã€*[ÂQœ`U[›¯²Fn³dÏÞ$Vs^Él|òNÈÏ<T^ñ­Á˜“µxÞªxz) ”“ƒûÇ|Œôô§x~ÞSdóÆq+9+ž1K£Ã!²2¯HÄÖMÅ“yó…uäX³[0–A¬§çº-1Ú'—‚¹>õ$®­4œôBØÕmBQ%ÔÃqû¤}* ©7Í(ɨíaÜʧ$Te²Ë:ù•OÌ;‹Oƒ|‰¼d/${ö©Úf$Fˆ0,N1Z’]1Ä1 ÀêÄà)«ï1?»Eõ=©§+^ g®~÷½R–«¸Ó½T˜’ƒåRo*¥7rG8íU¼×cÝÿÖ¨Œ°ÇëéLA„ FOÌZ®ªv)#=qU‚ðžÙ©R]·?xWlm|ùÒ6b åˆô«––ûäE'ÝN¢8Én?{5³[Ùî“*¤ÌIäÖ’¬6¡› qÎzšª¬Ò+NH&@B}3Yžd’«Ý¿&aˆý€ª[ÝÑço½(Âû 4ˆO(/åš­;+®yM ~Yªó¸ó\gBØ·yÇ\ öïOUÙk%Ç2a·z~<¸n»ÇËT¡hödmÁsŸj¯nŸhCF0_Ÿj‚&ÃŒ ·5›«Ü©à}öÇéúUMFcå¤+Æ~cÓôªšŒÄ¬pŒÆ´Õ|¨âˆù#ç׿ëZD["ÈùP ZÑÆÂ©ÇÊ¡¯ªI$v„7òªÚƒ¼pìtþUVþFH¶ƒŽŸÊ›¥\)·•%ö¤Ól'O³Ì÷ÙFÖ4YÌ­k*1Ë·LÖ¢&ÛXayòÍVÀŤ0Ž eØÕ’1mKîZ“x|À b>ïÒ˜bùŠ $}ߥ09PYrYASDZ\‘ûÖçØzV¤†ÊÍ÷)2³gqíZìm­HÁÞy¦^'•oNe,7r:ŸÖ«êð‹{X7s4‡çnç¿ó¨5(Ö¡ï#˜þ§õ© &)¹ÜÃÕæÑänLŽ1øR(;óÕÈ )ßµ¿ˆŒÂÆ~Ó±ÿG—þ‘ƒß4É?×ÌGHñÏåU®óö™È9Ø@ÏÓŠ«uÌòœðë8•§'€6¨þ­ihvêîXü£åS鎵¡¥D#;?‡ØSd»’YH„ã?Þª×Ú¼“NRÝ‚D¼ëU®µ&’bF;úÓ”KrNj¢ ›ÙŽ9'5©˜®öcŠÊñ+ª%½´Kµ9r=ja•"†]«÷ϽVÖH ‚\{ÖÖŸ ‚Â<LŸ©ë]>ŸnÖÖPFÜ2 Ïש®†Ò/"Ú(úmP bx‚#».£ È9®w_¶’ Çla$åNzÖµ °ÎåFù“÷¦,m’§š4 ÷µi#ûÊÜÓ´+Ɖ$ŒäŒæµ¤?Ýg<©ïïW/â*‚oºÒ˜·yL?Bç,*W‚6×qÁ°ùƒ)nÛdaò‘Kü2Âpä~uþâÈж8ä’y©%"ŽA;¶àrry©%"+UV#9íÖ¥XÁUÚ2 }sQK²†Œ|†<–ÏzŽhÆÒË÷vdšKX„–¡ó€AëSiÖk5—v g­Igh$´WÎ2:šF“?1û£œåYʼn9<þqTK|Àöô©íbÚ¥ä?<œýmé¢8D’’e—“ì+[O·ÆÎd~OÒ¡¸› ³oÞb¹ô©ÝÜ«¹K°ÐfªÏ:1‡$ž”¯ *Æ0®h”³"±QQ.ýif.Fò6,c}*"¤È êü¦‘–™wunµY´Ê?½EåǪzJŒÔ÷Sù* r9{cš’æo-T0*ªÆ¯ Ë…ùy_ËùÔ)h^XÜ—•ô¨Ö0bg¸îµ>oõ6 ¸]ÀýÐ8¬ÙOÚoبƒúVc“s¨³(ù‡>Ã¥o,k·ÌbYˆ ØŠ!1Éf#p³aFö床§ª#I¼în$ÀþUKQFe“æËF*úÎOZ«¤ g‘ðH}jµŠ‚ű•ÈÅW±_âÇ~+t1;úœ”ӴЖŸpç €=8­$ÊÍêò¨âBªŸ1 ¹GøÓ!P¥ì)aÿצB0W'Õ:1’aœúŠ¿o7Ú.QÀŽ,œÕØ%ó§Ž.sQßHÀþ*ž¯t.nAêÐa}ꞣ?8 |ˆ0¾ôõ$D‰fvùEManŒÇ/#áV§Œy9wn¥JãlªOb3ïRÝ©‚ñI=;úÓ®?ss»ñ5Sç”Ðá¦lçÐu¬Ø"’îu‰ ¬XŸAÖ¨AÝL"Î\Õ‹¢!`ˆ}îÒµ5IE¤vãï(ÝôÿëÖŽ£'‘ ZB9aƒíU„g@­b„÷ã½eù¾j}ëˆúõe$ …U$Õ…p¸ ¹5‡¬üúÍœDchD?A{™µkH™pÄ?AsûÝjÒ6…ýk§8\ç€+®bY‰ÚŠé]€–8UBk„“æhQ¢Û»’ üÕgÏÙ‘ãÛ…É9ïYW7Ë)ÏvànïUí•"šIâ·|¼€zÿ…T´qòO  žÔ•äŠ  ö«W o&HݼÕʰÅj_ù*¯Ñ9id|t>•zìF¢tl°,ŽôÜ:¢•89ïëþMfÆÍÖCÎGùýj”nb*W®i·£åÎ Üîš’ÿiÃJ»fŸx2p¤Í‘Aìèñ¹ó#äúcÒ¢˜˜áCê>aQÎÅ#S-Ž¢¤³¹ Vܧ, $í«ºè|Y”!H-~íZÒ®–Uû0\arM Ÿ½HÈaU¬á/uxåH?J†Ö"Óª÷H5bâF„3»Ž1Úµoî šI³–# }*õÜæÙ’0=ªŽÓäÂûq#6üÿwµc2m¶·||îÅþƒ¥g²íŠþ6;ÍK0Ê1™{{v©.›1ª –fÞÍšuÃüˆƒ»ncN\±iˆÚ€|¹ëÀ©¡‰ŠµË ˆ ìÏRqRćcLÃhzÇÖ·ÌЪô§­eêLÒº*ô…eê%äeUì)tý˦ȧï¥:ͱa"œä0éô©mX‹&V'ïóš³ä[Fñˆæ“.üþ_­Y’u1,#æuÜü÷5;C ìX——ßêjÔ%$ŒyrÛבW Û$k±Ãã®Jµ$@Uƒ×Ú¢•䧃隭sÁàeGJ¯2dv$•h± Tàâªà U_—œU`mpj¿ºb©Äã=@ÅjAnVÉØ Rs‚zãÖ‚DVш ɨÔ./«g=ª‘æ8GLç5Y±¶%†•IŠF,~dûÃÚ´,ÌOÌ¿x{R£÷7OjuÆÒŸUSøsK~‹€(„ŸÎ–õrUiÐç͉_’¬ËúTÚ[n»_ªþ\Tºsn™7v [–ʯÊW ×׊~®ä„bŒ¾íߊ]Lä+m# Ó,~{‡b~ìj??ÿU7ñ†¸–CÑP/æúÔš*nyd=¸§Éóß #…lŸÊ™zÅõs¿¢éÅ2å·j[¢‚?N*4uÛÇ;qT•—s‚*¨!†=MJ )f n iiðÅå´®6í¸'§½hYÆ|ӂű\æ¼|½dH:Œ1íÿꬭa¼½a$ xö5“¨Ÿ+Y‰”qòbºk¦_,¡a¹±Æy®“U‘>Ìñoßny­ë÷_%£ 7£­c\Þ"ÜùJ ãžÄ×4ó*ÊQFON}kåB eºsÚ¨Ú^¼w)¹›…CorÑÜ£ üª;[–K”9#æýk¤¼ƒr‘¸”zœWEvòÞ)òØQò§©Ål\3Ü!d` ”zÔ Ãìãv Èô¬Ñ·ÊMØ'?0ô5LmØ€òsÍHê° ’y©];+ƒ×"¤e ̬Š@„¹Úß)\ÇZä•”ŒŽ´ì•?)"–Õc†òÐnn}jm2X­­d1Æ<Ìã55”‘ÃnÞZÄã4øaòÍ#n‘½{U›Koìè^æcºgéžÕ5¼"Î&•ù‘©Œ ©·{!Á8äÿõªœË%Áù¤!dn¸äÕy¦?¼l+j<³Èv‚# 3éþEA#ù³álj¡N€þ•·›9ã >T¤ —tà*|§žÀÓ-#†áS¾{Š«¾O ×Þ¤wÉ‚Wb­]’_2ÒIˆ*оZ)ïž3úU¹$ nò„ÆÕV¢ŽæW“iµ^Æxb–g•C¸íô¨mfŠ3+È8ã5V;Ÿ´; @„àŒ£5T\ ™°sÈuªë7šÇ Nx`?•o<çï,DŽ:³É ó©ǵL§e¼Ò‘ʦd褶¯oŒä–'ߊÏÑ þÕ‹ÁŸ~*†ŽÇíê8ÚÄŠmä— ª%ƒnÆ=©·R\>¢Ab9Æ¥6âIÛP)ÈÇ•³*G.FH`üjÔ* 1#?0Àõ«p…’3ó+BBA È,¹'Ð÷­‹ÂcÛÏÍO±Ç5¥rJ˜À)šªÀ´§p<{Žõ”à¼,Bò:QÞ¨0&=è5aÜ4‘úãž3»Šµs4lñ`p½ÅX¸u,¤€çò¨Že%xRøþêƒU·4Í‚~ðè æ  erÍÐIö­™¥ dm÷Å=7™|ØA£×è÷y¾dyôö«âhŒd|äg©{"ÝÙÂâN }^¼aqh@63UôÓóÎAÂÿZ­á³ƒp‡ƒ…¨4Cµ&R1ƒšuÒþõŽîÞüT:ºí¾ã“È÷à ‹Q]·2俢Œ|͸ýj„*‘ýí§?Uå]¾¤ÒŸ((K·#¿úÕj61Ç‘Ž•b61œž˜ªZ’\ÉhÛ¿„®=y¥ÕmÒäY2°ÉCÓ©æ“P·Yäµd#;{u­;tUz®épC7^EkÚC¶iÂî¸`Å›¯ÍÜV”(‹•Fde-¸ó\ã·œüüÛ˃ì@År»3ü[‹óïŠåç‘–@‰XœV©ÒÒçOªÄLS{÷O¯éZ­¥%Æöؘ‰¶ïe5¨úloh.PøÜÊzV­œ‰*‡loéÍihí ³¼œ.jþžÉ"–o¼ÜSæˆ,ˆPm°}õš¬Ð¼k´3`ã¿ë›uY£dœÔs¸l¸Ï]¸P¿”4¾h7Ëü8ª—Ž<ß04¤‰ÈÂúÓrCÀ#h˜”uøJH" Ý’ƒ°õ«:}¢JŸ;έX´€:åÆTsŠsHn¤Ú£)Ë1è}ªV˜êWm¤g,Ç¡ýz˜ogmwzÓ§>a=p¤ Ôúþ”ÝB_:CŒáNýÏéL»q#3´pî;Ô,L’Æ0ÊŠ£ƒÖ©ÈæyÐa–4UP;àtªîÞmÈìŠ÷¤*‹ØÈP½sNò“ȘŒàæ—bˆ\‚p£ó4ë€>È„ü€ ÄÔž•-Ø g~@ârzT·@ dwÔÖ„íÜœb±Ž~n9&²NH#êÍ´ ™ŽJð¤TÑDÑÄHéSEFw䎕fpH»‰F\©cǽ^$c]D¼ÈF[zµ.—AçKtÀíDÚûG“U4%UinXp‹µ~µSEP‚k’:(U«®D.ÌÌHíþEK*(\erG=O" ŒMæ6E[·ˆ Õ1 1©ôÈCÝ…À;pN~•5„A®1×n ©.\½ÆÈù8äúUJa5ã$mÆ0OaRÞJå•F0j'’0aY%Ødb£Çj¦Áq’O-Ÿ c°íP¹…]ö³gZw!È}Ü Œä¾ÑŽ>µÞ|v Nû¥ÑOÎÍ‘þíH¡T”³6Oûµ*¨Ý³<“ÏÒ¥UØ(áNE]·O-—jä)f ·€y§+mbc×ýšS'•º3‚A+ŸUÍ/™³(q‘òš‚Ï*×9ãvÀ>Ÿþºn|¨î®œàœõïýiºgîášw?}ð*YNã#!⛬#Ã.8dÿ?ÌSu?™£|uJ®ÿ3/]Áz{Öcœ¾G¬ò~~:âžè¥ÝÎÓÏÓ­B›í¥sÎÖù‡·zµî·g<íl¥2Ýw´’œ’ªg±«V‘‰#šb (¡F}MOn£’^¥@=*{wÃ2÷#5gN¹ÿYêAqŸ^õ5œ£kÇÓ‚EfÉg›e 6q’k"KDm²à=O½f½ª²``Š˜Ã$‘6d*‡€?½O•dû9gr‘·z¤—x€–b¨xw§$FuÇòyg z-ãy"*JlbÖˆUÚ¸_—¶*u•Ê(v÷c5lÞ¹†5”â@üj²×$ÆÍºš}žSÙdÜ=ñUÖ0Úl’ÊJ׊ƒ`:qÿ ô¦¾|ÈOP\{cšŠ–êÜžT¸${S º„™æ¬ Øà) <ŠÚ|©Bµ[±iÄ6>Õ;A摚4Œ¹'Ê¿ð¨Y£·¶2o+»ýDÌBXýÌ|¹ã5^'Y‹\«íÇOJÏW;\îÚ…jš·˜æ}ø' ¤%Û,í¸ž RmsóHrIça,zžÕ+¦Ûb02Ý*äËåÙmÀË*ÌÊ#€/sU¥˜=ÐbN#û£Þ©ü˰ïœFp¢ª|ËÍÈNj&·ó.@¹.Ý1Å#[™g*ໃÚ#tÁÀûÄšR£ç•›¯úéHPÓ1Â? €­+Eoz9*0TzÓa»¸ÃqÏ¥6+Œ©pÜ}EH#`\&rvŒu§®ÅO/(<àc­9pf0¹íNÚhÔpå›)Lª¼cHø’p8ÀnÔ‘qÇ §òâ­inRåÀçrcñ©ìI %¦®c‘@ç –oCØT'1È r@Ë~ÔÆ\¼|Çßµe^JÍ©Eÿ–n¢©\ÊZåt!j”ó¸_lÒµIÙ8\à}ê˃i \ü£&­H a[­,x7dõV_–¥´P÷m‘•#å4ëPvÏLdU”È>é¦#û4Q÷X~U{o‘~Æ œÇª‘ùsX÷2ìA÷¬Ùä;ν²¶:g TË7úÌüža?Ž*e“0*çÝ=é÷¬qI ô«Ī-íÐrãçÍI©Êp¢ýà7f«ÆU= éY-»ÌÉî+5ƒy¹=ÅHŒOE+€=N*ý©- è@_SŠ».Œ«) BI´g'=Ⱦ•r)a´µa»qsV–H­àlsè=ê;6ãÍ*0OR}j¶› ÷"iWå'#'Ö ³ŽI£’EËI*ZíŒàç<÷¨àÌém´ ÏZ&óaÀÎ*Ó¯!xúÓ'Èáʯ QLæF  À©ªÂ# HO”U¨æÛl±ʧÊ1V–@!•_”R|™a´79SéL;pÊ3uSÓÂ2cž¹ô¤P|¶V'{qH€µ¬ˆs…ÁwÇ-lÉÓiéëM‹â$äñ¦iäØ 7€>¸éM± ÝDÇœœgßbáÆJÈ æµµŒIå¨ù”ƒ‘Wîe"]ª9R9¬MJðÏ*[Äv£'’kPºk‰#‰3±ŒZǽ¹7,kÂ/¦Óƒ:ÜvîÀÏCSi±™2äü»°3Þ¦°F‘CÇ@=«A×÷…{ qWeAç•Gi—2œv¨nœ$cœÔR³ž9çÚ¡¸“ÇjƒßÀ¤#Xñ¼vªfê%œ–ÅUMÌK…þ!ÔÕÃ&ÀÍœü¿.Þ¸õ«žnÄry;~SíV‹íûñòý;Öf©,™Žß‘@ØÇSš¡¨I )"2 ãKPwóV#˜‘&æTNTc>Ô‘¦æ ƒ*Í.æP£åïWäÄA|É6çï±ý*Ô…c*ö¯ñ³#,d|(ûÆ’Æq=˺ýÔÉ^:äñúSm$Lòs…å}Éâ›jáäg#p=êÜm±ÎßCÎ¥‰Ê;íêGëš’&!˜/RiøÄ›rYÆ=©e_nK Gµ,˜C´sÏ>µ—¦Åö­FâéÎQ‘ŽþŸ¥A§[™nn,,=ê c0šfÛœV”Œ>Æv1_¯bâEm:0FÙ#;Ï^*ÅëZF1µÔ„ǯ°ðwž=è´o(ù‡ ŽÍååùÎ=*Îá-¶Tõ«réq¥™#ì^¸u–Çzp;U7c¸Ž¼b¹ÉX–?•aÈĹ* ±®OF<úžÕf#±žÄî}jÌ,jqŒ ­4©fDÜ “Ž=ZnÖ–UBrǃAÍL³ÎHäÒÜ€w a•†ÓíE•a‚ƒíÞ’uÆà†<Ô|.[8q·éO¶}®‹œ 9§Û>¦×£P, ‚†Ç׊ÐÔ—¢¹IׯníH™ò dŸ³‡Ú88Ú­16QÈTaäÆqÚ§söhœŒmÇAXR“{¿i'$ æ ™É’OaA!iÎÐIÎ+fQ¶M€òH$U¹­ÎÎù« »n¶÷ ÍM+aH^Ç‘Wø F£óWF Fr8/aüÍMr̲FÕÆt§ÌHrÀ˜àSmÛæ𣞽MU³•Tî— »HÁïP[8\™p ¯J‡s8RÊsøÕ8ʉ²§ æ+gèj´,èGÝóýjħl†B›€ëÏJÕv>l— q’žÕ K2ªoõ5ÍGºæWeOÞ;É=3×ô®y§“å33éXÑ!ž\(cº‰!Ä1‘˜ÔîkÊK|ÛÆFè”1Ç95°¨±˜À§£féÿÚãÜTq¶o¤Ç¹üEGfáñÔóøÕ;žFÅ?1SùÕ9†[h<•?V›–Àë·õ¬P‚9SƒšÉ+‡ úóYl›_ ÔV½Ÿ6Qg'(ÙüëNÜ¢¦r~^kJõ œýÞh–?´3.âœ)¢UóÊùƒv8Ô:ùÌ¥ÆHàTЪB¯± ]ƒ©54EbY …Ï@¸©Q„hå@ÏAY“È×—+G*¹ÿ7sý+:Fk™Ö$çnïTšæ}‘ýÔþu£g‘hAÿY»9«/•i·rÄæ­Â<»` |À欮‚FTùÓ£;eW#*ëNŒ•”1–]Ã|’ÌOÓùÑŽé$±9éK*7žI8©,Ö( ÇÈØY²>ñ«ÖǦÈúˆ‹±Äjå³¢ÛŒp#çëQ(ë¸gÃíYk†•A\Œõ¬ôù¦Œ õ©•¶‘+†ÈÅ\‹Rfù•÷)_Z²˜L;tŠtbÈÀ\úSÕš9 ð6²ûŠs3Ek$N~é~•Z5Ý/=Îï²Pnr{uü«1ç'Ó&¦C¸.3Üb¬GʃïÅXŒeA÷¦ÄÁnTŸ—+…÷©-˜Çr0 ü£ÖŸœ–þ.ÔéÀà(aÎ0yÔ—Qƒ÷^yÏ5%Ädãj‘õéQ.%\(Ãx?Z‚ór£†ÁÀüj(FáÇ ŠYPÊÆV¦‘ôæ¯I™X\•C޼U¶ÌŒ&<Ž? T÷€¹R2@ëWoå_²Œ Ñ û¢§º}Ÿ™HÎ=ª…­œo'Úâ<žQY– 1ûFO•¸îµP¶³CûÿàêE[-»©ý}©ŠL'“Ÿzj Ë»¹?þªtßëc ’Î:·)+uRK:óžÕaÎ.W'#½4É»ÝW§ÿ®‰î^FàŽŸþº%˜±ùºzt¦gIœ&1’*“ðÁóòš¨àŒðzTHIXŽ7)ÅMìòIãð©ãˆ¬[ñÀ|Ô‘¿—<‘·!›ƒøUËK³o<±1do”žÇ=¼æ&xØ}âJŸzÏÓm…±žTÌÒ”wªvVâÎÓÏ~ùÛ§5^Òomæ°ý쇌UÈò¿¼à»7OZµcaÁ‘›ŸqVäPßÄI&’Ü ïcœgÐTv@|Ò1ÉóéLµ^ ·P:ÕU2wÁ¨ªñ·›491yŒr* †gÈwµ‘G++‚zÔO3·žõ #ˆÇo¹¨w2,…àþ51NËÆiÖÁQ¦ |y>õfÀ,)vçî,xϹ©í6ÅÃÍE ÜÄ8¬äb̸èGEX–tÆiçç¶FB”–üZ¾Ç̱€ÆC4gs~5qŽûh¶JœšYX¢œœï=Hê?Ï5£˜À]ùÝÎ}Açùæ¢Ô @¶rzúçŸñ¨€cHð^@:öäçõª±Fò…Š>^L3Uã¤%ûÍ‚~˜©$*±íBp_Sêj{“(H ¸=ÏrjyÊ " ¨¸_Z|Ñmܵ=Ä+ áså  –xÃò3•¥,Ó‰øuïÜÕ‹IÞò-å:½ŽMMo3\BñÈe{ûUxðÇ/×ü+>Ûk;oëåÞª[ãsëRFÅ$Ëò’uþ•jÚO&b%ŠoÌÕ<RR®2’túÓ–6Ãe{”õ"¬$3q·'iÊÉ\Ô«„#©ÛÐúRÄ[áFÞ€ð?úôÐÂ+'Ú1•Ç^ÿ^¶ËVÀê¸Å$@a3Æ{þBÆÍÜg¡ü*¤cn3ÜSº‘¿ ý*Ç*©pý_%GµO÷ÊÜîù€¨¤œn£“QÍûçÂóI¨äcaOQÖ†F¤g§%MG$„HØg©ZcÂøTëRfa–#ŸŒç¿­N²Í¡„ ÌœO@zÔ»åKo'hËSAA“µ·qŠG@Ð+Úû¾P(‘A[8mß-Rn5 ±ô™ûEû`« ddËtÌÇ„íS³í„» vv§Í+y ž;éO–OÝä÷8–R…>õ_Ì•£1ŽúT;äeòÁh%#U(„Ì=M89X”m åd3sNV ™õÍ$ ãqäÆ>”ÙÁ8ûÍÊ™&pw5ZíŽËðdˆÇ¶y5¬ µ¸~ ¹¯°<ÔW µ™º³‹íTt¨Ì—€©ÁPN{‚F*žš…®FÓŒ)úU]9 O•=úVÜqÅ¿,¥‘{úÖ´1B» Æ‹…þµ¦‰,䊠 úÖ>§~d¹d·#>¼Öeõْ舰 VuÝÞû²±ãž+bß,'îŸÊ®Û.âG÷qW­Æxô«H«æzÉ«èŠ8R2XÕ¥U]Àœ¤ÔJAaŸºN0=*†õ’ßtŸÒªÉ<ƒŸÊ•\¸Ž!•P›Ÿß?vœÎZ4„d*&[ßž)ÎÅÑc ‰ÏåNû¨¬œ²võÐEtä¯QëI´ ƒ$E:%ãåF]ÄUÝ=A›ní±²noj³f2øÎÅ5”Ê? Ëòç ÇÜ^eÃFxÊ‚¹íŽ)—1ùÒ2¥F)Š­Ðÿ~ê?ºj­¾ûi¿&äJ¯o›y”·T8?J|ƒt.WøX©úv§Ü¨hL‹ü.U…:áTżÛHŒv’sÞ’"J“Î(BvJyÝþ·‚Á@ÊõaSFì¬eþ- q×*1V.>ñ⣟«'Ý`qê $ ,ŠË€®8>ŸZI r£ ãŠ$ÈÞ\eiò߀2W‚‡¶)ïÿµl®>vëZÒ*¤M+Ÿ˜Œþc}×leª±çÊmî‚Q@êk»4æH6’@«Vk10ìÉS‡0pQ†Ú]¹´8dj î·VyM('p·"9Vqòp3ùÒoçÝz};ÑP]ØdA%”±¨‘Aî¤S­dUGfô¦¦æ`|»”UÜÊÓo q¹TûÓÀn\· p(bÌDòíàš¯.÷a+p»‹y‡Ð‘NÁUVŒïõã¥õ¥ØÌ½ý*`w[÷ÏAS3³Ï9^Líº}骣÷x$gpQïš®©½!ÆàUG©¨U7©\O„´ÍsŸÄqRÆ<É®”œŒ7â0)ñáÞç¶7è)¨ùØøÀp ÷íP«åÀÇ'ßµE|ùÇÞ5$#}ì½vFÿUý.1%ìÏÿ,ã~5oOMÓÊÇî)–l ؉û¡NÞDˆõ4$qåð´]0KÞzlâ“È»rÕQvù¥ßÐçü*¸ÆægÁõ¦.èíÕvà±Ï኎Fd¶XÊàäŸÂ£™ŠÛ,epyÍ>Øh œî'Õ=¨HtÄiFL¤ìöÇbE` æLâ6JšŽ7ýꕨãpd¤¹R’mq²G±ÇJ³}ˆíþÉOê*[¨Ì'fÉ_Ï¥5>dî¹Qô)¶ù–;r¼²¹P=‡#ùÒÀw¬ :бtäFÆHæ®k!bDB c¸€{TúŒÁcTR2y8¨UN8à(Ï=ë%T¿9­gªî<ýÕ§D7 œãÐzÕ¸ÐÝ8Ýǧ½ZUÌl«ØæšIfb8ëTØ’[‡QU %›ºÑáwŽ<•.œݪËÑóïRØçm~㊒X”88ª§ß<ÕËËtWß°\«{“ÍX¹‰’>R j1!YX‚NH‘¢|äsUá|¹±‚G4ë•þóh:•ïVîí¾Î|Í£Ë^ù«Ãä¶î‰Ó"’îF øšœíó„û«ÀÛé› Žœ¥cMw$7^¡[ñ¬w¢›ÔÍf´¥$Á?Z¨È¢ùØgcTŽÀóP„ rÇœÔ1¨YËv<Ö´-ûµ^@Îy=8­(ÎÜ“Éô«èß(8É5JyÙ®”(#nÔÛëïU¥”µÒ¨v•LUw˜µÐ#1V.äXc’`y?*{óÉ©.cGqÁ8 þ4û†Xјq“UìØùÊÕî*;V>`eXxÀüj&å—v«¿/šŸÝ<ÖÎŒv$ÉýÞµ§§±ÔvëLºùnáoU+ùU}tm¾·#þy•ýj Tâò2;§õ¡Á`W¡ê±S Ø8oZˆ øñ¤™¶¶ùTþf›v~`ª¿(<{šeÁËúÐù cæ »\«¤pDO!7cÓ<Ò܆EŠ2yUÏÒ¢ #=ð§ñ5³$Yë¼ùÓ-X£õÜOtÁ¤HÔe”“ô­ RO6uL`ž;qVïXË7–¼ìÍ66]Ø LTvL¥Š ÏJm©Vù{äþT²Yö¨* úÔWÁûdxjôõ¨îÂý±‘8àRIò‚½ùÏ×Ï»•ã­4uÛÔ)B°b£ˆÔ9ïS0pYAÛ€¼÷5+näç9¤,B°@=ê³>C…æ5\¹ØBãštq‰WæÎÜjå… ¸Rd%cÚ[w½ZµµóP–%F8>ôÅ”a c¹³Ãc­B.WÈ{W¤ 6·¨¨…Ê´F2á¾÷¨¦ÈWaPbÃð¨K¨]¡rŇÌ;T{×€X¶Iö§ÞH­m4g*Û=êõÅürÙÍå[gèyþuf{Ä–ÚT?{o6ãlP•l³8?Σ¼ E9gg'ëL¹ÂG噘f¹ÆÞo$/È È÷íX£&àïåAéYIŸ<–äÕv¯ Ã‘¿;GT°a†éíSi‹B¼ÌW žÃ56Ÿ¶8æà–eÂçÓ½Kd4”`–=>•udò¢G÷û¾ÕeËEi^1íVCEßÁ5VI–WÀ~Uÿæ6qò õ¨^Pùb΂£´¸iïŠrP•e¹ gh»™nv­ËuûÜçÓ~N½y'éWa±¼šŽl¦1ÁRHÿ‰‰ŽPsʱÁô¨)( à®y§ßF_Ö’äü‘üÅ¿¥E«äÇ “Ë1¨µ2BÆÇø‰¦³:ln-ŒA޵]Yâ\ã,Ã'ØTJZ1Ó$þ‚žÃq@¤à©v@3üêB :õ )]X1f1èÀÒ\—åñRLÞ=Ozdƒl„ÿõÏçUÏÉ.ïáÜ3UÐì˜7`Àš}·3ÎÇ©béZzIW¹º•Ž˜„?RMhiÌ •Ûï {Œš‰”Û\/#6séžþµ ñýƒRLcËsŸ¦x#úÔLŸd¾U£Ö¤u'Bvçü)š ¨Ì'ý8¨îŽÛÙWéŠæÂä6æ%$0 4ëq¸äM+çdŒFN>½)× Ø•ÈÇÌ3Å$Äùn}ñŠ‹ï… œ‚xõæ«@­3ÆŠ2s÷EEn¦YcžzTò3F‡…QüëFêFÞmã8¨¿®jìîÌÆ=:(¨Å¼»‹>ÕÀà“UOX¼À'j¿Ø¤™p¤ô9¥ŽÔî2´èæ¶·F$i¤ÇcÀ¡¢‚ù_{úžÕQ·ì ÆÁ¬âIbyÇ< äîbsŒTrIÞÊä–<㊴ÎÖÊij zU¢ÃïÈIf=MR»MàÍ•÷øª×;¤C€~ð«Î3—S€O"¤æ+%!@.û±éíOeòí@ÀË6jFù rZ Q–`XšFIóQ(ÉÀëš½/úƽjä¿ëzÕ‰0[ŽÃš¥,2,í± ÜÜU]ìRsP4n…jìˆÂ)mÒIË· «PÆ‘ eÛ—>•b(ö².rÍËšŠþB\.p£½r\ à‚™vÿ?^FçìÖq ‡îÇuM2_ô{@XŒÈ>P„TSŸ"Ôn?3Ž=©ºJ”f“<Í<Üàõb’Ä ÙëÚµâù­ýÑÅh[¯É3ÿw¥^‰w+Ÿá4ÙT4nOËëLd¬{í¦ ÷Ú)öYVBWæ #{`T¶$Ç8ã–o¥IhvÈ@þ1ƒLƒ0_äÜTåQi¬mõhÓøw?B8¨ôö1j>Qû¤‘ùÔ¶ãɼhÜ9"­Ù ·Õ$¶?êùÇ×­Xµ_&þHOÜÿ&–éw<`t\þtÝdo’ ˜(€â›©Œ¼xåTE/$Œ¿*§5r2IeUqQ¤ƒ|®Ã 3MY ÛÀðW¯`iÅa xÁ\cH’Š­ÁÜ3R¸1—•'5%Ò´m(<©9ýM:ue,:‚sPo î:äÕÛx=3š¤ÏŒúR {˜ùR9$÷séV¼´Œ3ŽIÍIp EL•I«wɵ-v䀂O½Y¹M¦Üä• ?ZIT‹¹O® C©ڤ·#Œ~B ¼Á¿‘—¡ÅOÄE‰ÁfëW­c `ÒžØÕr g»3÷¨Èè€ýÞXÕŒ°’j¤Üü ð´È&=rýª,ÛÉN„ä'ûTZŸ%7ãä->ÙZFÞ~ç9úÕ‹ g™ŒïŸ,dýjŤ-!37 ƒÍ5°à/$œÔ8•¶HQPÈþcmÉÀ¡ãT\#Áõ¨¥@£ …lTR‚Tá¨%\MÎ1¸qM/æÞÆÔw¤ÝæczàôÍ`O+\Mcª²;M"qž•U¤idN2=*xÙÊ~à ÍJ¿,Û=0Õ2ñ6À;b¥7G‘ÚŸ*ü€úS¥(>•¼eeiYr¯×µE bBäpýê8Wk—ìµ:ÝLs³§Φ<'ãNÝŒ`õïéK»¡ûÑœSãÇ#×½>.r1×½>,csÖ™, 3¡“ à};ÒKJÊÏÐtÝé¯vRõBõÖ[œã÷qŒ*úÕ—Ï’>UàZ¥;y³n#å^«¶Š"±aÿ-]4öýélç]‰,È÷„ç>ÕoxàôÇ#ÖæB½ˆÆ)áð…G~?K½ÉdX¯ÌÊÜzúT·1´V‰!3ƒŠtêc·F#ƒOˆF“У†M¾d€sÀØœ€Ì{àRÊ¿¿‘‡ü³UlÓYHºy0Ôºgé³§+¾ãv1½:Ö©„KpÎz¼yϾ+@ÆVsÕ—9¦³‹–VFíÉTçæWéUn˜¾¡ª0w2Àƒ“ǦzU ~öæã®*–I¸ðy¥‡2Ú·;IQ$O6ž“mû¤¡?Jµ°Íh’…Éèib”!)!%20»Imq·÷PŸ”Ÿá4Oÿ,eäv4é çÛ‚A8÷§ÞX˜‚ËŽp=ûÓ®­c~8#5\áí¶žíÀÕ2ÅàTÏ wU‰/) V#ËÙ†`>SÀ¨¨ói #`ÉÚ=³Z 4š|r6`|Ü8=3YÛ³pÀ÷5Atä^*|ˆÖ$ãøÖ”ÍåEv ŸÆ¡”ƒ Nšî­䟘Õtt G›éDñ·îÙåÚ\w«wQ6Ø]t` €v÷«71°1¶r?*šÕ”Ä äîÜÀþ5wO‘Nžq’Y«6Î>ÇõBÕZ1÷?ÚéX€ã»Yc¨ÿhšÀ2wìPjxQdLŒgòÔT‘/™°å°)_i;Y›#ðÇÒ‰cMÁYŽG_jYsŒž8>ÕÍÄI‚îdÃ~•—#$.JœÖtdŒ2V®[#üÓJrò=…Xˆ1s,‡,Ý=…X‰IbïÉjÈçÓ+‘Ϧ?Z‘ùþ•  ¨ò³É9ü*&ù@=y5|™÷¢9 n¹ç r9<žÀS”äúöÅN'—å&¦Tßì©©UCÎ¥$nÆsޏ à>Þ zRdúQ3ˆ±*ô¤¶Ç¸ôÛEÃaôâ³mc77eeæ$zU;dóç ݧ&ªZ¡šcŸºœÖ›Lù{¶³éÚ´UT1þ÷ô«ÆA³Ë[­,¿êØç!j >^G8"¢8¤ò©õ3æ4J2Þ?_Ö[-¡ùBoØÕ½L’ñ¨èª[ó¦ÊqlîûÈõI˜‹t¦ü‘ëUŽJD£¦þEYe|¨N<Â2 µ,~]ܹÁb?…LÈïæ˜$e`@Æ8ÖŸËÄÁ±ŒpïÅH³º6qíõ§1Hʼ0ß•C|èϧ”îõ ãU‡B9#ççîò2{U(ùbONESOâÏJ~žÇ{Æ~é…jh Í·~TŒŒÖ–Ûãx[ê)/bÊôÆx>õSTƒË—m9çÞªê˜äÈã5+Kæ[G'ñý §øÕÉî…Åœ >òŽ~½*Üó ­â#Ó€²4gp,¤Ž1Þ¨ðídnôïTŒ|´dã'éKlTY$mÈ´V¦œêúj[·8}¢´mIf‘ž¹â™2Ÿô£îÒ³náe–àG–ý«:â&V•”`£Ô¨éw †NëZM§`m¥*“(ùÄUô‘/­ LvÊ£ŒÔ[ˆb²®\pÙî;É!’FIF[8>õ™‚’aß„q¼FIó$sÛÒ®ZÍ»ÌL‰œdñŒt«pK¹6±;”ʦGcVA€xÀíêjè” !^!ç²y«E€°Rƒ†ãõ¦H›>Ì_ó™<{>>bÇj¡2mâ$ЖÊ@,•%³ù3#€HV©-›Ë•$Dí‰dRKe1ÛëR^²ý¢prÄœ§·ë†d£©ÎTŠÄÓÆÁ39Y–‹µe,G Qµ\$„àœV.¥û(…¤ågoµYºaj±>yg•5Ë­·–ÍË0éN ²ÁÈp¯Öíx’T?+~†Ž5uèj K“ÛóùT,2ÌOn*#ón'žÔøT£e†:zÓ£_æéNŒÜ¥Bììù$ž9ö5³nÉ=¹úÓŽzñа%Àõ÷©·ã‘É©Càæ–ä¬Ø’N1ô¢áL¶ÿ/RÔ—|÷¨¾Åi€Í7''øGJ[ìÖØÆSž}1H··àaäçš4øZëPWs•CózvŸ\Þ«Hr ò})lc3܇sòW¤ù£‘ 'ƒRMÑÓüÜZ•úíÆHqøÔ×`ÊÓHÜ!Bÿ/çVïI¹7ð„ Õ5ßïãžaÎn=ªKÕ唓»§­?D·Id•Ÿæ`Š“L…_Ì.sÇ_Jƒs±º‘}H*+œ›ÖI>ñRJŽnn][ïv÷4ûWóCC'%2½XÒßí*ðHlRpzœñSX¸¸‰ãpÅÅCîŽB2B TDeà”®JÆ0=¹ª†6x]¹!x›–ù6˜ç“éUbbÇh“U£%›n=êÄ%RW•*>cÚ´¬$®ó1åTä^´,ßÈWñÁÉ÷íL•–_-÷}ẪÜ1‘Ñ™·úUk‚^@IëÍ9P¹ã¸QßÜÔÄß'ȵ$1Ÿ—=z…§…Ê1.¥ûsÐw«f$[W“ÍS78è;Õ–E»>ðd~”Ër³ðB°æ5ö#KŒª> ¢Á¶FdÆUN)Ð1k‰{£u«‹BaÉ)ÁÔ[‘=ĪÃ*俢lBÝ8FÏà8ª É<¶ÿëÒª/ú5È ÆÖÁúSîþYúŒSµ%Ü‘ŒŒñî:Òޮˤz Óá .ª‘ÜŒäR.U$|ю縡p®0ØíÞ–ÕÔÃ$G’V¬é×!­&µrê•bÊq%³Àx#îÓòà Q˜äMxä-˜ä€iŒ€å =¦ÂF»†é3‘éL@ Òd‘éI ¬¤å›“B!˜®; þ<6ÿkyJŒ`nTS¬eͬðÊ•|þ”ZÈ ¤Ñ÷J¾SíŸýHñÊj`¹cÆpzSÔsŸzzŽôà7±,rëJƒs–'¥* ÌXöª’' êMWr~µŽOÖœ¸ y“ȧ/óéJœu8«Ýã8U~ýóV!€çV˜òx :ÉŸ}ÕéOâ-€}*„›§¹Ûêp=«>PÓÜíçÛÚ¶­íÒ†ÐÇ~õ­ €qß¿­jE Ã@ÇZz.éaŒq–$ý*(ÐK"›ÄÃéÿê²> •¼Ý>ŸäQ#í·uõn*Æœ›VõjÓÐ#) êE^ÒSd }MFùiÎ9ØÅ¿#T®þk×ÁûŽN~†«MÍË7e'ùÒîÙ8–57þƒQ,Í ßŸÁ'zõr´WÐpzÓÈ’&Ü™F@ÏZ›í &ÌùÜŽjV™#ŠHÊä¿5\.çÎAÃdcÓŠ >K1z0éT€)3:ÿüªÏ–‚Ù®æþu£\ñR4ÁH“‚rEK%ç–ʱ“³vâ H÷OËœŸj±3F/sÇ\ÕË׃Ëóî@ÍX¹hÂïXÁlc UY”<¡N8‡3J»åTt+*f•Ȫʹæ 4JúÔ…ƒÄ  ã§½HÇtcSº„¹À!»u5VT`üŽ=꬈D€‘Å:ÑB¼»s‡I?-¸ Ò*ÿþøRሠեÂ99éoóŠÕ$ç=*Pv©ÏZERÀ¨$ÒÆ |½ ¥Œdc¡4ÃW!»à·­0Â8ç¦4`ƒƒœS~Ï"¿ÏÊö4ß%Õ¾nGcMòÙ[úÕ­UW°ô«vªŽÃÒ¬m€:  ß/ÊNHéÏZXö(ip¤äŽG½ µA“ž)ûÙÑ»n”æv’&8$œŞ6ô¥ÉP\pHاÓ4ÐJò¼úñMû½XmNôùã1ƨ½p=Å-ìf5@8Üâ3EâP:g¬Yój6÷cŸÎµ´¦ÿ‰r”ãæç5£fÑÎ=êƒf$Ÿ ~5˜Þ[‚Ø&@GâNj”jÌÒ÷.H¥Çü)ŒZ®Ê@›ÕjROURD,9@¹zÑ ¼—åÈíšHàyãܸ$zÒœ¡ØT3è: w–èû†pœã¥;c ¨Ü@Áö©Ê´ÃuÎ@­+È=$,Ÿ{x UÛ¨Šià7$U‘Іú ÆV+»p+-2ñ©ÝŠ¢F¿{®I#ŽûÛG?Z·+¶4þè¨pj¥ÈÉ?Þ99þUE1cøšˆcnI«XHòåÝŸz×H¡´ŒÍ" ʻמ¤ÖHíc22€Ár½Cn¸¹Ü~óOåÏëT´€Æûyä·'ØcŸÖªéª~Ò[»Ô—LOaŠ~ºØ™¾oẫbCÍWg |d‚k8! Œœš¦䚑Ք…Rµ¦"t*„€0m_é…éÆj)œòå`=Nj)äçd£¼{‘ÅG4ƒvÙ>¢žWÌXäUåxíô²'œ"™Sî ýñÞ–E/¶@¸+Æ=jDlGÙRãiÃÍO ˜·Ê4€«á9éSDØ…c'‚Ãiô§•h¥<ž¦œ°)â˜åØr}éÞX1´rrØÉ5‘Î}Ö\¡÷¬¬bÊÝ€ÚÀozÎ#ýßM=Æü(ç#4´•êhp1Ö˜W,F{昻W8# L\g×…«%Œdti£QÈè*Ã'Èz”rã•RI¨ß÷G檱5/$Ž‚¹Û‹™e”±r9à Ç–yLî#Ò±fº•¤á°=«SDšI¤0JÅ Œö5¡¤ÈÓ?”ù GÖ´t¹Z\«’p3ZÅaÂ÷jF+Uî*ä‡j^¦›ò¢]ܽǥ6?ÝÆ¡þ¼SFp÷ÅW]H£S[oâj!}¾D‰W N1Q-æù~RqVãRÒ¢c6.*Ke/sã6j[u2\"Ô÷™ö)åT/âjÖªCÞù üSëÅMûËÃvÂþu$lb†HàµfLVÛ)Ä€ü¹úÔѱ†áóIŸº°^&„ùƒsu zúÔhâ,)`&$£mWw̬@ê»j»¶çr£ƒL€ìÊ‘ó}Ð)ú{í“aoºIdø`ÏôùofŒü¦B¤V­ÀR¸€¢W ¤úsS[|—“DF 8ni÷’’‰ü¿ýtízR’[ÇØ’ÆVR¯ }ˆ&¢ =ëп•emÌBAÜU"™Œ0þ*XÎÔ’g?êÎùüjÍ´{-¥¹sƒ¿^õ4 ²Ý® ù³„¨®WÊf~˜^qÛ5Zá ÇÏÖ ‘L“è1ýjYäº3ÇËïc5nþèÞM^B Ú?ÚêjÅÜÿiUzmÿ?I(ä¶I?( t«šdFÜÈò+e¾PØè*ÕŠy*Ìà’ÝÀ¦O&ùDcø«:þS5Ñ_SÅP»Ë9_^•š«ÏïËøT;X»~oœ’´ÐËB¼á‰#éS35~æÜƒï[ÍÐûDcä }ý+Gq˜yëÂã Ô(eˆ6²ÀúƒÖª^§;v²ÀúƒÖ »C$@ã ½Oµ:67w7–ȸ zzlNnv–s"ªÇƒŠj7œ7–*Ê8ª‹ÐÅ¡“ÀÈ+Þ«›ÂAF:ò ÷¨MÑ$+cržÕpn. p:֢ʳa·†$ ¨ëWì˜%Î2+5óäÃûŲՙ;À:ç-T&9òã¹¥êÞàšŒòàšFäp}FPcî¡Ç×q§ª‚ËÇÝN?ï£J£ ux©·’ªã~*ÄŽàvŽ=êfmÍü5ñYÝcF+òáÛúTWåf•#BAÛóŸzŠólÒ*!ÀÆ ÷¬ù4¸â…Šni9=*Œ¶ DŒ³j”–‘’ ³U­&Ùml帓‡~«šlÚÎY߇o•jÝŒ"ÚÎI†~L€î”ôÈÍ 3÷ÁèM;¦wÙ¬ëËÉ<¢"ÆmõÛTæ¹!ØÌ6’}*ÍÈÎÀ2Ü~›ý®&)—NqïŽ)–(ßhFÛ–PHËa($dùVÌgÊ•]ylóžqZ±‚`ñ“»¿µhFLRå?t  [9ÞéSY&u(Ëç&BÜúÔ–ˆ>Ø¥²âsSÈ¡nX{±?…Or_¸SžKš@é€íɤ!¥’@>ûËôäJ¯.éç”ó³n_§#úT™drz–ÝøsCð0 }C! ‚3÷~•|¤u4:î¸R¹Â.ãïÚ¤ ZïtyýÚï?Êž€‹²ËÒ1“K# nW'`EžýêÕÃý£PG$D±€Äž§<æ^«ðŠ€žôûågdAŸ7Ö—\ŽY¢ITdF7dzMZ'‘ÀÎÏåUÖA¶2î˜ìk%$/?)ïèk=$û«Û×Þ¥DXÏ;¤>§½^·Q?—jȇs~ÿ¥]…DÌ‘ò'&£Õ2Ö7,£øqøƒF¬¬ÑO'¯Ê> â™©©1Jþ¼ÀÔ:3¬¶Ð±9Û‘ô5WIpe‰›‚j¾–À¼lǧô«Ó>°l“¤}kWP¸+Úùg,2µ£{!à—ÈÈúÔev4cÑ0rÌv:`îÂOëTgJQŠt|#…ÉåS[•H’ý>•4ELù©‰!Œ`ÑóÁô–÷’Aº0A„õ1ïM‚嘉3útË$Qï ¸‘þnê­áY†UÆ?ž*ÔèðªÈNàü«7[’kmm‰ŽsŽõ›«ï‚@a?ºrYxéYÚ›<»>áäTÔ”nÂOÅŽj¼{nÆAÛ"Ž1Þ¡‹mÊîk¯ê;ÖŒoó&àWøwUؘ S ¨èXUظ‘s•ãʱgêG5K4Ÿy‡5Œd·qB¨ÚI`¥* ÚÄŽ3Šr¨Á£$–ÁÉn>”€üÝr[¥ '®yµufi-UX Ô3²G³å1±Ã)þ{Õ{ˆ Ä͵õCëUç…Ys˜Û§ø sÈ_O¾+ŽPà©è±FûK–R9S‚=Ed£5´ì§Žy³‰uØXG ÔqÞ´bq=·ÊI*{ÖŒn%€<ƒžj Û´ø™±¹Î÷Å!oô(Xõ~1Í´yêÕ,#x`:­Kl…ѱ÷IüéЂÈOcÅC.Lg¶r*¼„ãÓ# ‡å'×"£°ÄÏ1?<„…Yâ fý÷È‹|CnÍüoS¢\“É‘íR*L±ùˆ$j•S“Ôf ¸•¢pWï“Æ{TSÉåËò}ìñžÕ Òo—–þULyž`i*yÍUÃîÜ㎹ªø}à¸÷Í^µ-º†ë““W-Ü,µ â!R<Â.ïÝÏð y”@¥ŠþðŽþO/å)leÈãØV\1ý®à ŽÈ}EQ>Ór ßt¿¸ªP'ŸpQÀ9q[kr$rʸåEôÀ­eºÌê;mU­5ŸqfQÎ0¢…á–9' ¨GÌÌr[ ¨€ÂÄäž‚¥Û¿l`òÝ}…J¨&d„¼A>Â¥Uó4òM9Èf GËz”û¶ “nÔÇÈ=J[‚¬ÛöáHÂAJLbÏŸ§½ð8"’ Éüh•£ûÑœÑα·LG¾* vËÆàà¨Ü=Ȩ¡c¹_¡QÅ0¸71‰a$ã½²Ëtžx%_&–-²\'Fæž‘¤É4GÌfêj·Gc3Ëó jž[Gv‹œö¥¸‘!$¨Fßâ4jS-ͺË,Dmãp¤½uš#©ÏLŽÔÔÎ…cY1µ²3Æj H>×B%UØÄŒÔVð›„C³¦jVQbã¤w«²Æ¶Á̼0¥{žõjE†¾ã½sZ½¤–×E¶­Îêçu+W‚ᎠÈ5ƒ¨[43gu­½&Auf?yb¢¶´¡öÛ)Uÿå¢ROuVŇúe›“É‘xúŠt¼†,ƒk{£dWÍhåQþVÿd犫fWÌ1?ÝcƧ•„ c'œÖŽ£²Ú`iå\¾"ã‰@#©¨ÄŠØ=÷ã¥gy¡ñ‘À5LÉ»±§ÄIÛ†¦AR?Õ«7ùæA‚„~ Õ‹f0Cr£îÒ$È)éÏ|ûÔ¯:Ï•Xñ9ïŸzÊ%ÈUêxúÔ3[%öá, 7gŠˆÚ‹ýêð||­Ó‘Ô~5Û‹°û£ ã¡õª°Ú hÄÉ&sÁÆ UK³Æ³+†ÜØ#Ó]aòPH­œžG¦*ÙŒQv®ÄÇv5»H±ùæ»Zb³JáPV¤vòÇL(TVÌv“ÇT* úÖœpH±ÕVqaÛÔÝ;sXûLާ»Vh]çqNUO,Œ’=¹§"üÅ•F2„gåâœïNîC`~¥R|Ó»NÓµ8æ’ÝÍS¼RØ@ဪó‚HuíUæîóùT Ìì«NF}{TA‹• ŸJŒvÚ¼ŠÐ†"ªëWaˆ…ÃuíVâB«ƒÖª¾ù¦}Êwj»n–FÊäCÒ¡bÒ¹$dJb+ ¢òÇ“íM@Í•^§­19Q×½\±Fgf$l¿÷\²F}ÌHÂqV­[Œ/eðcTÜNïlT²äª¼Nx©%UòÕ{ç&¥!z7Ê3N„aŠ/Vù>!—*:¿éø¹p ÛNÔ›m󢜈ÕUGêh½l]?9U¤Œ Ø„]©ƒ“êsRÃÞ+]ˆ#ëêjTˆ\†!p¡j8X0Ô/ NÞ™ª)ƒµ—)8'Mq÷†1´šc©&”‡·4F¸’&•ÇãJœKʌ՟–A¹x||Àw­Rš1‡#殲 ¯Ò#2Œò6E2)™"1·)"ãžÔŪÛ£-0ªl?( êXÇ;pÊzÔj¨qŒf4J’ NîÄÕ‹øQ$$;0l ÍKu«åXOsÒ…%‰¢_ï ’Ön¡x.P“Ÿ¼)ÐÅÄ&9S‘êzÓm­–Ò7Žˆ÷gµ> scX\y[ƒ`ÿ}=©öðý–=¨v§¥G€o™S ŽÝ? ŸÖ³&U“W”Gó#¿8ýMPu©H¨2¬rqëRC‘s2/#’3Ï5- csÙ;g½D€Lþ\…–áIàž¿Oj‘í É!‘oŸ•_LS ÷Yn9¡¤Q˜ÛžOÍÏ®*©|ÄÊwØ>¸ªîÀÄÉœÿ³¦v·„2) юǹª»šÞ5d=;{Ô´(œàAÍÍ«—Y Ï$‡ÿ¯E­åÍ«—YKûÀô#üh‚æ{rIrAê*å¸lž˜ šÙWÌ,Ý ã­Kn¸fÈÇΞ÷ü©ò€ °éÞ ÆéQ©Üd<ýÞ1P‚HrråQ íÜSH 2FÞ¢špzŽ1ùÒséK y *¦ OÖù@*Œ3T_/ “ÍJ£ÙË*P>]Àäž HžµZæFVòc@ z¹æ ™˜- ŽÕ ÌAòÕq‘Úš«±@'»c­4 €mÇ»R·ãÞ¬Ç(ޏà·_ïU”—ˇf8?­N²‡gbriðJ%n€>î)Ñ8—'n1÷iñ¸~HéÒ§— )è­O†Q,Äd£ç±Iåí—ÑŽ)@gÌ’.4Œ²JLò æ‘Õ¤&FÝSÄÂ8“ûÅsøUÐâÞÍxiçØU’þU¸AÃ:sô¨# J  GÓšÌ|Æd'J4ÞpFr¹¨.® X aóÿ|¯jl’ë&yöǨÏñg“V­—!H; RF;Õ›aþÖÆÚ±pkmüé‹•ˆýâi‘¹šDC÷‰ëMÌÒïži.Ü#"³pØcùÓ¯‘¢šwù úÓ®”ÇsvùI SÝ•§PjÞªY1ŒS_åXg#Š`q £{ŸÖ«Át°¼o‚};Ó"c‘N=>ìì€2ýÀA8ô­ d•±'ÜÞ7cû§ÿ¯Š³©1X‡)»œzv¦C·í`®0Wåª:cD5cŒ;j¶žê.¤b/^F Kv ¼n½T’áÒ´u Ö÷PÊ9Û’û>•nì.¢tÿ˜¨fPÌåaÇÖ³¯”%ÃHŸêÛ5JìæfQòA¬ÝEü‡ Œ„\ëÞ¢½q àtP Žéö7Ðt¨áPÆr]‰v'¡Å201 ä‚Íž”ˆÎ 5J\)&œ\/çK¼/çD³QÁÎh–`!:ç4²Kû°ÖŸî;‡r±6¢ˆÛ?ËŒ 9éëJB ‘ô§ªN´Ác>Þ#÷Í-Œ,Y1Ê&ЧÞm5ñȰ/gg¸•û‡oåÚ±f•ŒÒ tjÊ’VóYqÐÖͬ…ÓrðS~u¢¤¿Î‡ ˜þµ||Ùuà©Á©­ÕbWlwmü;Õ­9VÞ—»6ÌuÚ;ÔöH°ÀI{§4ٔȆ2Øqš.³<;Sådh¹>|gv>J¥k~eýË‘·vUåŠÏKæ¸mäaµNUP:bª%ã\¢Æç…9þUn_3‘žƒ#’¤›±žÈÅ2E|õàU›vó# Àü«sLv¸·h¤Pc ªZÖgí²HLúU=žS6Ö?»ráÍaäNÆ6â78¬¤&9²‡vÖÀÒ¬36òÃ+œ±«Eœ;2¹Æà;Õd³†bƒðG½9-«–o›Çô«KI™ÉùóûÏÃS ¦»gæ9Ü}êÁ ÊÅ,>µžW}¦å#1¾>ÿþª¨à< ÊGÊØ?4Ù²cÛŸQœÔd¨‰`cº'îŒ ~unm®‘¸?ƤVõãEs ¼ŠùýâíÇlðkZãdÂ&à Ä›V6·òÚÍîCu{žõÏÝÝ}žòkY(¬@5…sx!¹–ÒeáN¯ÿÙÿØÿÀððÿÚ ?Ù@ @û`ŸOK4Y]A`™÷­ kó•€èj9f˜¶ !sš†ïP¸™öœ"ðB)ÍE=äÒ>: ŒUÚO6M©:“ÕøU6s+áP¨}ÍWfiI ¤(þuf8KÌmïVb²”ÆÄÂ5ä’p*uµp¡™@:“ŠŽYcù|6y$ÕYäLƒõViTœ­°ù÷ >?vƒsW4k¸¹[‡R"Nžæ­iVlÓ ‡ Z­¬_y§Èˆåï°îiÚæ¡æŸ³BqŸ™‡ñJ]VïîPâ0y>´i²Ë$EeBQ~ì§ùT6SI,&RU~ä‡ùSm$wD£÷Z®¢<9PNÓŒU”EûS3(o”ã2*‰˜Tâ–%ݸœöô©,£ ýæ' íO¶L©=sI1R»p ìMvÈÈT¨ÏAíO¸e*TNV1¨¸#ò¤ŠCVÊzf„sËŠŠ`àüÇAªwË !ŸÝÅVºVÜ }x§Ç ;¬Œv:þõ-®žÒ¸–S±@áOz}½žçó$ùxȬ"I,Æ´¡„§sìOô«ÑÆTc5ÖÈÆKa‰½VÕ<¨~bØvûªëP^˜ã<Ÿ¿†Œ¹gôÀª’yb?0É“éP>Å]å³íPLO’îÍì¡EPœŸ%›æwöªW'÷9'çgãò¤Žíâ )‘‡¤³Õ&· ˆ7}iöÚ„‘A'4Áœ+;ãžTv«®ÒBŽò†$œ íS]±hд›˜õ¡XCª¤c“ì*¤mRäÕx 208àsVX)Y$8ê­!F’Ï.XýÕZ¿åÇ‘òÇ ª)'•·,0ÇzkÜÍ"ºÛœÆ=i­,έåcm#Æ…xOS–ëPÏdžÇŒÔrÆ„àqÁîi’ÇŒ"(yR uãÖ¡¹Œ¨€F§*UF3×5ÈIP¸E=€§È0rX†$ªCXî*I“óð8¨ÔȧsQ*œ=ÍF í+ÁïR8†#ŸLT¥Ž®9ÍJXíÀ<Žâ«ÌÈÉî;UwR$sÜv¨y#ש¬k©Õ Ž&ÈÏÌj„òª’±œ÷>õBy”©Ðu5ÐÌ7»¤pƒ“ZŒ"oi1£­i”gMìÄñÂÓQÊv1Žät¨à>T‹#G˜Ç#½2²EvC·¦jO'Éa‰8=\ûÕé-~Ì˶MÀôrz¶Ðymr{Æ£‘î§“ËRN8ª—ÝÝÉåîÚ£‚Àª³IqrûKmA×qQ´NÃhôÏsP i@Š¥”œCQ%³4@ã?\‘öE…\ÆF+~yÌ6 ¤{V3†_JךR†TÀC‚*”±AxüޤŽ•‹tÑÝM¸´ œ Ëœ¬ò;Š–UÌxF:áúRÚÌÙ¿ú€2þíKo)æ6æ1ÐRƸHÂðIéSÄq¸‚Cmà“S¯Ï|qÍ=†!ÏÞ$÷«°·H8Ü2sÞ¦Œù17I¨¤py.3Q\J­Îð[*9¤dµX·@mÁ<–^jý¤*lA8&DÉúõjÔZ„”øª7z„6°ÇЙ’vƒÚ³®u-­`Žx|Ç€`j•ÍüVÐD’ǽ€Î3K§êmzû~îÓž(µÖê6-Š1ÏZêMsb˜UÉ Ñ*Î2;R][˜­cÈÊÝù©µ-3ìöq•%ä Ðô§ê]²œ`Ôq³¨F|*®v®1ŠÏ ${YÆÐ>èÆ?¤D*Ò¤:PØb_{sÇãMb['q4Æ,yÉ<ÔÖó7—.̽\±’Þ]£æÎ*í¬®-Ÿhù³ŠO,ìmü³?ÕFe;†çcÒšˆJ€Ü’*pe€âQøÕät³@²®ï0ж®¶ÁUÓ;ê½Ð¼›‚íÍf^Kö™Y˜µ~P+>æ_6Bìq´pX`×A 1 '"®ˆÞø+¡!A'ô«ž[]|à MmÍòŽ2§Ì„2ªŒ S¥_›PbŒ¼„¹<*Šr´PÛ´’“#· ƒµ(xℳüìÜcÒ›$˜Üvà0ãÚª¼‡æÈÛžžÕ»|Üc?¥bj7lÄÇ|½ ›w99D÷­%º³«H䲓µWûßZ~ŸlÒD×3ît-…P~ÿÖ¤²·-.Hc…OZš<³³ÈBªpxvÕ7Ë$Ó²¢Gò(cÞ­@73Í+ÔÉîö¸ŽßÝÏ\T7º³E1ŠËlž­× ΢VO*Øõ5¾Ò«1Häoº`‘Te‘¤`fÆÇ¦ÑƒUdrÍûÜ)#°Å3vé§$v뚊,¼Ê±)séëQÅ——l`š²-Â'q#wÍj}€$\’%aÉ'íWͪ¢p~sÔÔw/åG† [g¢»³Æ¶–)Ò™râ$Û€IQYë8—(¦?­fùûØ`Û¨ |Ç^:ñô¦]k/ir`XXÕTœã°©nu‡·¸òQ>UE\çØS®us ÃFåÿ€Š[I,uY r+,À§?z›Új?+&çÑ Û_ä$ëW¡Xm£òâ]‰»æaRƱD¡lLá˜T¨"UmLà°©Ñ•ìåXŽT+søV„,I¸Ž• àSVÐïÓeHùùN B©'”»ò¤Ž‡½cùOåüÀ©=f˜œGóñQùk&}€¶xmÝ)€}<Ð2ÙûÙéQäZ"¯ÌO­^‚å%23šß±Õa–Yð$œœæ¶-¯¡–%}ìw©%dOœŽA«…¬w6ň¨Ê‘éSÞAÐ’@%FAªOùHÜx®nx¼³´‚7+x¼¶Æ0M:×+nXŽ|Ú»h›4á69ó*¹lž]ŠIßqŠ̾YŽN; ŽÝ Ü ß¸±ÉÇaL·\ʼäç&™,ë-ãÆ9ò”©5Ö[§Œr!ëÉVIÜvˆS ðYAËð*BOîsÅR1’ØÁËô«°Æ°@‘¨Ë}k¡‚8ìì’`ª‹¹±Ô“[q„·¶TÈ £Ÿ­@Ò‰$;8=ן3yc±ª2OæÈvjPŠïåºàSR4ù|ÎO\R¢(+¸åºâ¢»#ÊpW Ôwg†q‘ÀÍGrx#×µf½¼P„Üýr{U7…"<)f÷íU^ˆð2ÔøP³däÓá\¶zÓâæµ ŒH꼬qÌÖ†Ÿj$wdC$zš¹géA|ˆãíïN™ƒM* }ÂAÇN)÷²!žâ5 r§)×L¬ÓÆ9“;cãþY¦ßÇ¥QÉòÉìŠ?Z¨Ä„'û¿-Kn…íÓiÚ qŠØ²ŽI´øv‘ªàj@­%¤d«·üš©pË”‰ù`çêkúu,±B…c^äòÇÞ²/fS Ž%!¾zÒDåyió€} 2ÚVˆ–>aÐÓ`‘£ Qâ85FÊÁ·½åÄÅæVÁ•p3«\ÊåŸv E PÜÊå‰8oc[@ä°@ºõµ¡ÄÛ„1èMli‘‘ó‘֢¹ŸuÒÂ7a­>òàÉwä€Ä}ìrin&/9Aã°¨5š;=ØÌ€zöªº´ š1É—o9ôªúœf;pO/Ž•“¥Ìÿk2œlç=jȱ‘„ÏqƒY–2¿™ Çn*O'—ª„PY2Î,íkȱÃh¢5“/ ±J“Ä*±­º¤`erÎ:œqYº{²j4x'ÌŸNõbH¼‡Îà}3T4Æo·F=[é]ªBˆ\¬XääWikg Jÿ*¸s’OJë ¶ ÙlÒö;Ó£ Ÿ¯CÛ­abÞW¡¢2a±Í<È›w±·QÞ¥yP®ýܞõHΠnÝËvªÓË‘ËT䚬î\ï8 œäÔäüÄ€¡¬é¯7BïÏsÀª²Ü‚sÿ ªÒ\~îï¥6ÖâY%ØHÃtµ6 œÈAÀ½©¶ó39^Þ•¾31å^8nõ¿Ÿ.è¾T;q‘éë[1y’{Ñ E‘AÉ*S&–=+jN7n,¬ ŸZÀˆåÁË2íÞ¡‹‚|Çå¯Oæ+1!á²U¾µ–X•*G$jx$T³V',3éÉ­»€šDMœ 0Ïâk^ÞaýŸ锯j¨G@Æ2N:Ö ®ùF1Ó¯­c2ù’ý^jäy1ˆÙ0Z¸Ø¨Sh^µl´¸ªH7ŒyÝ€\»P0-Æ<œ`·§ ðÈPñ¸ö©ìdù%ˆ7̇9úóZš,ìl&…[ ûÇޯ铱d8Í,K‰ÑrÇ©©­£>cÈ‹–ïîjHS Ì«ózÖ>³$Ѻ;’ÙÎ@þXºÄ³ •¤;|v5•ªK"̬Çvzû«¢±Äí*d‚1޵N+¥EbËžj¬7‹e˜sžÕnââ ZÄFÙWFàÕ»«˜õ4CòÉ8"¬ÝË£fƒ£§Jn‡¦w¸•wP{÷¦iV˜Lé¼*¼ãñ¨ô» ‹$¬¹8! nZ‰V6ŒdJÞÒŒÑ.@Y6ä7a[v&Ec†§JÅ”¨;W»Ôûé ‘<[€Nì)nؼl„í ¨CÈ#v³õ˜©Ó"P¥S’ÊJd “ÜÔ¬ìÅMþ†Ÿ*î"4¦4².ï‘SwÕÈ   }M"i“6 ]Ã?1¤{7ÞïɨåX†ù‚ü UI#H󵹯*´ˆ!NO ©"\Êd8\3Z:u¸4ÎʇQIÇ^õzÊ;ÊÄ)' ¨ï$XÙ 6æàf«ë3(¼ –Ú¸ñPjr¯Ú¾FÝÆJÍÖeò„HX&sTu6yh9!sŸz©©0Bª¼°_Hµ3Jn%ªôúÓt»VšC3…éõ¤ÓmÚF3È+i $‚XrpzV¼sAr¤°å¹éž+N9DC$dޏíLQæÜÈB’@ôªæòF ÌG@VT3\»m'÷HÕÆï¼?…:~5,ñ¤m–8eq{}jIQTçvª³eC¹Ë€¹ªFçl°Æ@ªØ+¹ÏÍíYsHó6H좪Jí/§ ªÒ»IÁÎ=6+)X|ÄF„õ=i±[99ؤÓc¶r0ÇbûÕØmã‹•$·÷ZŽNFsê}*ÌQ* ƒÏ­lÛÆÜ‚r¬EtViH$²¼úVÕ²ÞÝóBIåÁ»ïrqޤúS–q¾ó—äíQÔ“Î)D‚8Cc9'Ö “tseÀQž:þ5‰¨Á-½Îù@pÜvô Ü É¾‰à›.?ÖÜv5CUfŽÄˆÉHI…UšVjÄ„ü®IZ†i˜X"©ÎÂx§[\$öã†UØß‡ß5&Š:žš²$†;‘šÐ½2º¶D,ާŠÑÔ–IÎŽ"áTw9Í]¾äO0á°zÕYå[dx"bìã–ô¬÷›È‰­âmÞf?J§$†8ͼ<î<šµg‚Ôä|òsŠÛÒí×O}ë—”‚EkY[›{2ù˜æ¦·ee8ìy9«¶N¬„Ç‘š±nÊPã±æ³ud–à¼q™>U =ëY¶yoHc2~?½ÿêÅfjp;Ü3Æ›‡Ç®+öÞTr|¦öÅaÜÛÊ’`ÄÃ=±X—vÓ+cÊ#>Õ¡áý=ß28!pp+CDÓ^}îÀ€à{ÖŽ‹`ﳂ½iÛePÅ¿k«d*Å´D)‹ÌØêÝÅZ‚3»ö°5q1°2œÛ½iÄéo¦W óáO8=jê:à npBžÕPJ×3lÆØÓœ È’êK¹6–$¥fµËܾ‚¥Œ–cœ¢òƦµÝ&Q~â}ãS[–`T}ÅëOíRåÇzs^”ˆò¤¾´­s°œc½1æ,0Ó žÝ* ®å›‡”±¨¤¹’^NqNER7;dÀSí㇆™ƒÉsO…cg;±ÏJ«–(¥‰ã'Sæ+)f‰Y™¸ç t¸±Œ-úT]BœôÍWKW20`çîÔ nÞ`/×=*¶§k$ó¤œÀÇ4—öòI*IÀL`So!i'GÇ`U»x>UQϽ_´¶vUTùQG5vÞØ |ª½MLþZ'•U>¾Õ,âÞ/1°5ê}*I|¨ƒ¶Aúš…žYxF«p`ãëYíu<¥„gÊW<ˆø?‰ªmq4›•ŒÃÒ” Hð;þdÑ´ÛÜõõ4c‚ õïPÊR3Ëdäÿú©­µN&‘°:œUg(£$ ç#i„*rqŸJa ¼ð)¨ÂF$®qÞš »g) Î*HÊ6ñ¸p¼ |Ex-Œ/ä*ÊÙ=†+I$'rçæ'¿§öUãÝó“Îxâ¯%È*UN½BÓ“*$J0S7Ï-Ä0DzL+úf« Æ’ê(£ãkà¹õµ¨Ú­Ý«# ù”ûâ´¯ =W•?…fºo_)ÆHÎßzåÊ•b¬=¾µ‚T©ÚÃ9Ígé ‰.aÇ=@ªÐ ‰ŽW·Â—û§¥n¼‹-ˆ›ÑxõÑ^ʳèðÏØɺn^:Éc£îã?Egi%‘ðÛ_jþ›£X¤›î$ŠÉµÒ›¦Ú¡S;|Ä7Ê>œU™;F@ö§;ð£ { »+tçÔÁûµ,3ƒØTý×>àS òU˜g‚‘]cŽIK¹æˆ%E‚Y‰;3ͺ¬/&x§Á47K¹@m¼{T¶óAz›ÑCmãµ:&†é7( Ž5“4n ª»{Š­sxÖÒ,Vè¡6ääT3NÐ8Ž5P»j“d¥¶’ÃÓ½g´ÀÜò‡vU7æà)\Þ¤’/(ㆠ6Ÿo­>úÙ rŠÁƒ o­:r‘“íQB»•Ò"DŽynÀU;HåŒ0ý÷<žÀU[xZlÅÁ'$Õ‡Hí- c~=Ím½¼6:nл€ ¹òqšÕx£µ³ ##u1öí'GFæ5#;0séUfN>^ò§•DÛ±TärO8¤¹Š86ˆ€mÃ$Ñ S¾ÏèY*u±ã#F3R‹XÓ’ÅEE,–ª9,Øô¨&¸ÓÐ}çvSÛ½E$ö‹üEˆ=©a̹ žˆyâ‹B.ƒ8'¢x¢Ý„¡³×°>”ÅêP1ÛŸ”S™·DŽÛIŠj?"±ÆzRIyy ªzSníåK2Î@Un<Ó.â‘ms!À¥,?2„* ÇSÅAl ®P€­G.¤©À’8ŒÝ–¥vò†AùÍÞXÈ?1ªù ÁrAý)‘6Ì?ˆ<lm´ÆI^ýª„0i$p«ÔÓ jÁžFzâ˜cgvÀ2M¬=0A&™,ˆÂ>1šj0xØ!ÀÇZ‚Ùd »€q»5*ÁÁέE °|ç¦kV䈤•ê‡= \¾Qÿ¹a9SïV®Ç—6b ü¤R•v&H¢Èp@Ôç­"ÛÌÍæÃã€Ý÷¦­»îÝ›§v­A) RLï^0ÇïV­­Ù†Ž|´‰òáZÒ†à¬EeÉqÆÓM&UœíÚzV|ÞAÆN'åNQ“‚;U),™n–è¬Ãc/÷Î9þU]ìÙŠÎ>]çf?¼@ªïkȘptõ§£bÚd ÊŠjÎËfð»æ•7Ïaeäu÷gð«Öcm¤d ïùÿ>­tzJôÈHçpßùó[–h#³G¦i²œ°>”Û†;ÃZlóÒ‘2¾VíÍA-Äo ²¬:sÁ¨ä™¶µ¾½iŠ G2 6ŽŸJl Ƹ‚¼r>”ØÁ0Ü&8µféãÔeƒ<2òzàŠ¡ ´ƒP’ ÛDŠIúŽ•OH,.¦„ æ¶%%O?1Æ=ëfèùnwä¨޵§;mc‘–#¡}ÃïòqÈö¬ËÑˉ>ö9tõÇáT¤ùeà Š$erñÄùØ byǵ-ˤŒñ[¹pŠw±ç4LÉ.ô‰òª>sI$W«’¬x¦é’,ÑŽÌH¦éÎ#¹Uìx«²"²•n„Vü±¬‘º7*Ek:†B§¥V-†e•z n“4Áex§@8á‡éš£$Y£”cÑ©7DªJ‡þP;A·txFpŽ£vid#°ïMWFbDX íëP¬£Ì$H‡ðÔ+'$‡ŽÔÉæ0yQn.NNFAÅ:yÚòÓìñ³4¬Ùäd0¥žVº¶Ç’äþtÈöÉb§{U(C7ï#ÎÓ‚¦ª@â>bgo{)v3ù°ô©ÏCpŽóÂÔÄ ÈøsÐ{S­7ÈûpBüžÕwH$Œî§vß”â­iá™Ë8ù±òÔ÷Yòy ò8«š¾áfwA#ŒTúŽï³|ÄOLUh¾TêHLV å‘·¹Â²íßa{šŠåÁa»â#nÆA=)ÎÁ˜gœUhË;y›v€qšE;˜¾Ý£Ö…$¶à1éY×÷2Í3ƒ©°:Õ+¹ä’GŒ¤nã­Q¼å‘¢AÉ<ÓÒÝ ·ù²ˆÏÒ„„ÅÝM9"0ÂÎOj–#–òÈ ¸dT±òÛ1Ž:T±žvôⶤ1Å0G]Ço [- S(vØ>SëšÔ™£ŠR…w3¶¤Yd™6äž6ö°ÞL¤¼˜ÜÇø{DW_˜öì*gàãœuÅhÝ[¤Š 8ÆqVç‰\d˜Ž¸¨ZÔ9ý䤣¬ÿì¥v?h¸ØzàÅT:z;fYqô4ø¡ŽÌ®[ø›;jÄ0ZÚ$’,Þ`ÆfÎßZž8¡·GmûÆ8ÉíÞ©Ü!<§Ýlãòæ¹û€Yä+О1Xw’ät'"®Û0k8ŠŸáô®›O*Úe±SòùcÐ[‘öHb‹üªÔÄ3"òÙùEg^ÜïüÇ?(ªWSÌ‹Éì*(b0,¬¥Û€3Ȫb7ƒ9ÜíÐȪû _;œ¹ïéR_$Íe‹RË6T¼1Wïc”ØbÍœLYKà°ÅZ¼YE§ú6D› wªV³4Ç#¯ïËçÛük2Îåí®Rf_Þu|óÍQ´˜Á:9S¸çujK&ð$?$xÊSZ·“H‘”ÆA@ˆÖĹa!T(*z…ßÛ-ÊH3ÛÞ¡–íKu’7+0ÿ½ÍC4úxßl€RéñJ²ÎÓ÷¥ÑíeŒÜ<§hÆ#¨£M‚HÖc'ëïK*ìmàcpǽW¹CotYF0Üb¢”y;€þ.*äLÍ·æ·m&i­‘òx5«†H•ºöª×ƒ€y$qÅekªÆFw ŠÏÕ—äFþ.i¢vò€†f Žj¤we<¨Üâ¹Ú«²0Är)ò²²Å±B—ä:v55óÁ2B!EVq¹ÙF0©o Rì(¾f zñM[˜à%8^ cÒ™m¨GjHEÇ«b™ôpü«ïŠ|‰ Æ&^ýÍ1DSÎ œóÉ¢âöo9æ«8ýÜjFÇ®y¨rQHùWœzÔJ>t¢Ö‚‘ù+ÒºHB‘‚½+f0néPÜ>æTÆ®OÒ¨kïÛ0¼±'ôªšŒÊ@·Z¨wÏSÞ±T…ä?f.6ñÍE!ÁÿXX–'Ò§"ùêX–'Ò¦*ïõlÔ2»´ž^*9$lmÏËô¦É#chéýjäÞ\x Œ³UK‡Û!P9ÇÌj¥Ã…˜„õ-KæI-©.rPŽiÛÚHw7%»Ùá yÁ¥„7ž­×-ID€õ¢<‰3×=«yIYžb9þc[še¹p rrGÞ$`V¢“™+`±È÷¥CŠC°By¦@a0’@›W¤…£`K°ÇÖ¬YcýÙÎxÍlK*ÜÛ Î}ztÅhJâXNÎ2zÔFY0b ŽàÖ5껨Cmþ AÅf݆qÛ#¸5¶“nW˜f«5¼›ISÇñ ®ÐÈ;¾J{œ²¢õ#mL’Ð|ÄcŠ]†Y<µiLñÚCdn±Ú£êkY.ÆÎqæLIÚ£·&´VQmo xß&0ªË «'Ÿ*áOÔf©Ío4Ryó®Õnž£5VHdüÙF=©ó^ÚÛ&C?t—Ö¶ëµ¢W uïN–öÞó('Ö¤WͺÝFÿ#yíš²I‹{™Bö©Ø˜à«eH–'e>aˆý3ØÔPHñ7šÐ+ znìi‘±C¹£LÓÕáÀs´GÓsSÅß89T¦8Éÿ ‘"k¦>aÚqŠ«æÍaw‰>h9ÅQŠâm2÷d¹hù ûUX§{‚²òƒ$jv™¬G}<°0ØÙùþ!W4^;éf…ÀFcòQSiz”w¦T8Fê*y£(1ŒŒò=ª »}®3ÈÏ>Â’â0Üs“úS¬Ø«¼xãwÕ6;x€Ê“‘Ri²¶ g ö1M”nù—­2UÜKüžÂh. üªÄ ÍMk 6³3ð \ÔÖÑ–¶¿ ³kgµÃ3Ž¥Ž §,ÜŽ”äE,Ü »¹å”œí_îÔ·µÄäç:->yŒÓp£ ¥Â¾Á•ɦ¨ ËŒdScØ`t©™ŠÀ¨2sÅ_šWKHíÔc<ñWe‘Ä)Œw¨Êt qõâª0 áŽ*»†ö¦´’>Ø¡@¹èó4Õ3Néo …ÏaüÍ44×!OzT˜û6ç9wÚ~nÀúUèU, …xÆèÊyÛŠ“\Èt#îâ—Sʲ‘÷qUöŸ5O$óÇ(|ÐFHšS÷Ÿì÷©’¨õÚ [·èÓ(6MZ„o Ç$ŠŒ¶âØ*ˆ\ÕR»Û‚AÀ&ª”óöÓáEŒ;Ï_Z¹ooòÈ\+„Z·)6á¸ð´ë\ ‚qœŸn*},.[*3€wn*kF@54﵌ ½¨ÏåÂêÖ#ƒV/%Ù(8cT% .ýŘþ•ƒ ùKä³5dJ¿!9$µsåYääÿ:Î(]ðA5CËgr·odB‚Õä/½O³ËG Uˆ­Š©,9*5c3ˆä`¬¹ÚM0#„v‡LÓ_kœ0Sã‚S"†P¼}à{SÖ2@ÔSÒ&gÁàzÕø”ùgŸ•OOZ™‰ítΦbÛ¯n‚¬¬¨Vºpò#þµe-íà ÷î]˜dB?J™a‚؆º%›'j#8‘·Ç U`­æ6TîÉÈM@#mÌ»~l“Š|ˆ‘É‘‡Í»Œ ³m‘òºâB~bÞ•fÞ! ²á‰ù³RÜí\‚’ d¯j½¨¨ G“#êW·jì`œFÄ("¢VLnŒ»0 àšÎÌdƒ|޹ª@®ìÆ=óNFCüMÔÒ£Æÿ¼Ô#"±ÏZ ¨\6çy©•‚§ƒÛ­Jcå9¥´B‘²Èl‘ø ÖÓÅlÊà 'ò~ÑJA´ðT’hº c8Æ\ã Óo¼¶)óp¡³×šmÉ”/àþu$pE ‘¨÷Ç&¬Åo*#P뎵:Ec ª8ôª²FLÌ%]ÙéJÊžûC P¶NTvÅQ’&2¶õ$öôÅ ‰ãùˆ"3Ã-'‘$#yȈðÂDñóŸö¤‘×1ŸB)²Å$‘‹ ôÚGZI"f@É‘íN,dA¯¨¨÷´¨ Ÿ_QMÜÌcoõ5—}£¨™®``PÆ?z­¨ii¿i…¾C‚WÐÕ+Í5cq |§œ{Ö„šÜ3 ËzdštPÈÖÙ ü£œ•:Âæ Øè)D޳ÆNI^Ò‹Iä†öÉ8;OÒ‹YYo#9àðjÕßE_VÆ?ZÖÖ‚ìˆÎìb¯j@¶êŒd,‘ç Ý+0Œ#GüG¡ªL¹FŒuÎsK,y 6à£×ŠšÒT€Ã£׊– 0r9ñëP¡‰™]†Täb«ÆñyÁ™FÂJâ¡GS&[¡=)J3?–ƒÁö©VÝç“ËŒ`×Ú¤¼Ï´tþ•kË' óxÖ¢ÛGgÃýØÕï% ‹áz‚i’»¹^­Y·— #˜÷ggËš¥q2ÈÛGQީܾr@^ƒÖª;Ãt^ƒÖ«³†êztP©¼Œƒ÷³JV/3þõ.бîõûƘ—bYr6úTksæ:©ÆßJbÜy´ôªR€·20V”ئj³ü“;SYLÍ SœX&bÁOzt2³¾¢µ`@ÊLŸÆ®ÁùAÆH«q&çöXÚI%˜bÛ@éd³I$Ùg/´PÛ74’]›éOÝ/ÚE H~:ÔÑÍ2]Ç2…bç¥J’Ê—"P`ÓeÝ,†E(ãÖ’òG¸¹3*”|t¦Ü3K1‘ASR´ÇËÞ¿|ðE]–ð˜÷F1+ü¤wжó’Ÿ/ÞcƒQǘHf|¤tÍDÖkæ|¬Û³·Š‹ìÀ¶mÇåæ•bEwó1]«H-`…äÉ½× (ÂŒþcnqŽ$“ FTnsšd×)°Ç  ŒäšIgùvÅÜt4“L©n%º%9÷>Õ-ħìÂ[­ÉÇ# &Ÿ4»`ó&ÊŒ~u–5žRDoÇIÎGÒ±þÔ&”ü‘Ð{VX¹»*톦›BK»`Î×=G±­]3XEAå¶»!ê=hXjK´G08‘|C`óÜ:¯MÄpjeñ„“Ÿz¨þ"84&¹g$Ín\dô5 »eQ"0xÏ Š¸0VVPW­^ V A²2…‘ô¢æXã‡æ;AôëDòF‰Ï¨axÝÝGçkw÷ª6òÛÊÎ1ŒºÝýê´ŒÁA†‰ˆQ@®3Izع0u#µ$çÀhR: 'ûÒ9ÆB‘aóŽÆ†8Üäõ€ޤ‚“Ú³ßh(èNà9=ª‹`2ºqÖ¦Þ"»¹$}Ü ²Ó K,Œ[¶Xó7îĶ8ö¤WUG,p:–õ¨¼Õ±<äŸjŒÈ&õÎjÇ›þ‘1Ú¹è‹Ú¢‰w)¸”íUõþ/AQÆ£ašCÛ=ê#ûø¥lìæ_ëUÉó¹Û“ÅW$²—éÏjÆàù4ƒæÇ¿¥mh÷€XÏ$ƒ9=óÒµtë‘ö'‘þòqõô¥BÎÀ¨¼×—÷Žp äTaÚAæ7ªÉ•…˜c% ©²ŒÇ•$UvRÉë·"±³ÛŽìõü*†âNsÎqTwÙÏ=+E#ymwÀÁ ÇNõu¥†Bàt5t!xœ`t5BÙ]®6’wrG¥SY¦UÛ» ÉÅS·RÓ…ÛÆy4ûåäÈ2ùã±éN¼Q»zžæúS®ÔnÜ>ësš±¦Û³9vëíKm$±àzÓ­ÐÎzV´D´¸( ǹ«ö;VÏÊñîjݹß<8÷¨åËb(ÏÌ úTR•„1ö9£pe-{Ÿ ½S 3𲑖™b'ßZ²¨Æ_/8ã'Þ ¸&Xƒ|ÊýlQp¦ÚXŒƒvþâTÞ ÔÈgwË2æ_7‘Û¨£ºa8r›œHI^Ä Š+†) ÞKè*ù)2 Žxϧµn»EsÏIàÖ£•D"ª:ì ÊF{â².£ÜêFAçBpcË©ä’ä«3ÐŽÔ–—`”#£ %¼Í´•ûýÁïQ_¹¶ò¥m€î½M¨º]Úep€‚IzVæÜFï·Ç­WÒ´Ãç2öîÇ8¥ ÌÀ©cϵE¦iÛA‘È ±çÚ¡»º‚9O–¸Aòä÷ªww œB»bÉPO¥V¹ž#Æ$kx×ÌfL21È5•" ä‚5ÙFǰcßéW,#H-¥¸t㢓ßéVícÛ¼­ÇlžôÖrÄl$ÉœQnuÇš„°¸¨Ã²°tÁtì}*Ú´ºžö%G—…ôÍA{qöDÈß )隯u?zäü¿.¦jXH‘$l ànÃÂY9HrõԌ͋!ÀÈê*Í›+4±'xã±­] XæŽXX.ìïé×=ëCJ‘$…ã 8§È™ÜB¤t©®b.²ª¼1ÒŸ:Y÷Qääqò{V,§1qòœdÖd¤¯Î#Š—ÊYãË  î½[·€\DC¼•šä·=]»Õí>Ù¢]òŒà…êݬ$.ø ã…ïVíb1!-Ã0â´£Äq–àÍ=ŸaÈê1Oy6tëRÁ™.OCÉ©ôÛcs8 Êõ?J–Â<ƒwN¦¤¸Ú‰µ…SÎ;Õ«ôŽÚƒ­ƒïV.•"UrªqÅ+»sácŒp½ªµÍÄ’€_åHÇÊ€p*™†XáT`Óÿ×PØ:Ñ9ù×î·g»ÓþSûèÇÈéö«Ä'´ §÷Š>SëíL*$'™9Ïnÿ­e<{÷e'ò¬Ùc§håsùS£ÂAUÁ#ó© í¶ˆÀíüêG\E' ¯Êið![¤e?ÂC µ£†[åe8N~µcKR· Aãk—×5¯ +•89Íhœ®@=:Ömí¹ž9¡^0çßÒ±5|Ó*.0søV]ü>`‘GLB¯@þQXyц¨m4Û3*!Brjž@(c)ƒÐ÷©\«îJ ão­=ðà‚¥Ùõª·LÆÑ­„QÈq×éL¸”Éd-*…9'Ú£¸s-ªÛ²…ÙѱYj— 6Á…º×Þ³6H%Æ p g¬n&Á^tÅjÁ:Z—–PXU0=ëJÒu³y%‘ ;©íÍhÛʶ…šE%Û…â­y"+'*ÄÒI"¡ÆÑ)5<ŒÏåñ€çš”¨pDK…^2{Ôû¹®ÄsÞ¤Û¼üƒqÏzt˜Œ|ÃŽÃÞ¥˜$@‚¿(ÆÑïRI„aÀû´ù#ýìL;œ‘Ž‚¥¸RâÞL€$ÐzÓå@³ÆÙ`ž{Uy‚À€½3X·’‰.ÝOV]Ä»®YâªI}»Žþi]ðÎ;Tuª',Íó5D³ cC–'&¤óÑ×1ëïOfyU‡]ÆœK¸Ç©©cC–=zT‹Å$õéR*l_zB¡—vxÏÖ£1ççì DcÝó“ÍAjƒ¸5¢³ìÈ£Á%Iæ´<Ðl¢\r*pÈàœ3š¡3e\ôÅQ”ü…ºcšlW 2ùlq…>´Eq¼l`ãŠ"¸óo»TrFÀyR e?ʆ-·Ë‘AsJrÃËq‘Q­œÉŸ˜ã=)ž\P¾FIâ™åÇårÅ{Uè-ݱ,Ø9 ÷«°ÚÈb7w$$Cœ­éVÒÝÖ3<ä*À=éyÄäcž‚¨í3?LsÿêªA|çǾ@«g÷pS±›½o…[;ŽII­¢ÞÙx,9¨‹¾Äí<ȹ”ÈÛ#Éx5s!gÂäA-'î¡ÔjL¹‰ºTk™Fƪ:%ÆQà:EM Ý~e9¦Ñ®~]„üÈzUÄp·­.Üv‘ìiÂA¥$¬Ÿ#eJåÞH]r­ò7ãÍ>XŠœ(/#Øw§\Z°Be•úS§·` /!r@¢K»«0SùS´ùU-æîYÀÇáKfáaaÔ³ã¬d'ærž»zâ¤y%v`dtù¶õ§–v',W×ÍÈ%BÙ·@ãQ©_´!`e-ó ž>´ÕÀIBFy§LèwnË –éÓÎVx¶ÌEI;0e6üœãÖ£Ørw0t#ô+P˜[,C‡\dœ`­Db?3ÊwÏj#Y"R7ù¨ÃŽ)¨²D¸ ½|¦šªé3¹Hô©!òc|›|·ŒÔöWÖç2Zàÿ­Mm<0ŸžïNžKi—Lù|üÜU‰¯l®,™ÙÝÀ,—6Ó Å~éïÅ@ZK›À¶åV8׆#ùUS»RÔ6ÛHa^ÿJ®7^Þ$…Ž1Á©¤O'†mîG\b§»̄߾VÎ*iÀ·;e4Ò\ìArxéUŒÒ/ï ÛÎMBedÜ69§–3 ”) ·ëžjÌþmä^z¡ êi„—ù c¬½r;Ÿ"&Œ¬Çp©ÚϾ8~Õ“©Û̱£(ûÝhÑ´–;n'=: µ¡èæoô‰ËØU#KÈóå?…kµ¾ÀY@©>ž‘@8íÍhKhX¨ uÁÖv­‚¤š©´†#4ÇV•ÆNGi^-ºdç8¡â"NsŠ 8œ:†9ÏÒ’Ù¼n¡‹6séDoåÚ”a“œæ›t‹-¬¨8b¤Ê«J¢H@ùˆ$Ui”c÷û¢¯éö‚ÑÄ×"žæ®ÙÛ cæK÷ˆùE0´¼¿@jK»‘ó4‡sžGjK™ÀRIËž8¨„ÌÉ=ë3Î<ã©ïT<âxM(ýÒ—wÍùÓÔùi¼v§çËxü+Ø4ZÂìÈÞÆ3PYMI|nb¿Ab5³üVÕÑ1¹^¤ÇŸ¡ÍjjŠa—gVhÁúsZZ‚ùríêÅA§ YÈ;pÊ>R3N[–•@+‚ƒ G§ šA†]¬Zj)Y $dsùqPB¥$$‘ÏåÅCòØî#'ò⤉– ?/8Íhéð¬ÙyËŸ“œf®YÄfNÇŽk'PÖ~ÅtÖöЩ1ü¥ÛùV~£ª¥•ÓÛÛ@„§ÊY¹Ígj²ÙÜ´0Fάj];Q:˜‘\*²€N}ø¤´¼}JGÞTmÁÉã§ÙÝ›âå°"´F¬Çp!†0£9­ÚÙÆíá×¢ æ¯!YÆw; H÷l*ÙTŒrÇZŠ5o-’L¬p `ñ»¸¨Ô-„ƒ ÛƒBB%BÅÊsÅ6ÞÎ+„.òùâ’+håRìåNx¢K`pSkíÇôù´¸øhÜH½ÎGô²ØÇÁFw5þå‚#‡#ºŒ~u"ÑÖ8Ì }åDZ¦ÿ¨;blà}áJ…sºf,Hê¥@Ì—±<Œ XÀ,Z\“Û23ÈX‚b5—¾ä°Så mLõ¨Âî›oÈ>êÔðJma…ö­+;¨áB’ezÕÛyÑ«ü£Ö‚ÐK Œ)nç–™q=•äk—Ç' Lški˜ ù±ÍV{™±ìAÏ—&¥)}°`çŽõœ÷òýÚá:â¬Evsµ‡ãWmuvá_ó«vúŽx=h’xÖEÜ çœÔòÝÁæ!t#;ªg¸ˆ8Ü£×4ß4Ÿ™@ ŸáÔrÌ\1P6z kÈX1Pö¦98U#¨µŸpÍò¡Ç!jœÌr¸íOPAfld¸©!Œ‚Y±’1ŠtQäßyª¥„6D¾Ñ+Žz3L·¶ŽÄ™6‰žž˜æ›Ú7˜3VÚs•Ý‚rsŠ–âý†â8<€*Iï <þB¢æä¹ ;U=Ò\XíôT'8ÎO)æBëZ½ek+çNÀ"œí=êݵºB<ÙÚ¼ãÖ›4›ÔŸŸpØÀ—wFROÌIîAIq9ñœúÒH›"à ÈÝqÑúõ äÞF;ça—ô_JŠî1j€ï”òÇÒG·þU=ÍUòöà¹À5X&Ãóð:ÓróŠà(ϵ)l㢷À0èâ£6¡&«Àäõ:Û4S,ÈrT‚=jhíÌR‰T䃚™•åI˜)ó>RÜU™I’y6æGE!ŸŽæ§uyV*|ÆäúSÜ;¨|ŽP14\G&D„ÿ±=égF߸žÁG**ù}¥€Mš(ІVsm ‘Æ)²")¥¶–ÇÔT‚]ޏ!W9©cºh™B¨Øëô©vGNê•þ Ê;‰È%X½íTî¬ã¸V-…˜ä‚Þª—VqÎŒÇN ã­SÐí^ §–eÛ”T÷ïPé1LòH0JáG¯z‡H„À&iF ŠÖ2²dÇ„x>• gtvòqeá½=k@ÊÊIL(#¯¥Ršî.“\“ógu5Qî"ÄžuÁ?6üc©ª¯<{XI)ÎâqëHÓÃå)à³6V’ñqˆâ8õ&«=à<"zÔêPó³Ê>€ç5vW]ÁLMèZ» MÀ>•iOî¶CX㨭ÂýœDS N[Ž¢®&ÑB9ÎZ”É2|ª«Ó“R4Ó(*±®yõãŠy’P»Bþx¤\ùÊ$ê~ðRۋвOÞ«Áÿ!_¿ozw 2Ø<ŠY”ªØ‰¥•p¤œdçŠHòIbàœ~ª¤)µ ³™rr1U°¿gê|Ìò)™hÙ¸ÁÙýj£Vaß*«»ÉËÁ^NFG­*n»zšXÃyª¹©/læ!ã ´NIÏpkVïMŸm»& #Œö"´®,å&Q„äT‘|»ð1Œdâ˜]HŠ1È$⛼ª°`õÅ5P¼£rÝ UòËÎ>c–ɪþYiÜI<Ò,´ïO˜ ª­M ÁTo2/œ.Õ>ýÍK؈å>laM* îw0(ëQ}öbìÚ)‡æ,\â‚Tœ(ÞG|S«¶r}qQ¾€UÍ<#¨ÜB/±ëVc·h”Hv/¢ž¦§Xš åÒ–(Þl³£éÖ¥¶´’è$$`ú}ê– wKÈûW4;@¤¦rs–?Ò¡¸–Ú1Æwm9-ëPÍ,1¶Øù*y4Ç¹ÞøEç¹=ª¬·Y>U˦«¼þcåG>´ÉH;;œgq5ß6ÑÕ½j)²HîqQ¦_‹Ó§Ö‘7Ê£ÿ×I³ ÍNeeUD ÂÌkHݺ(DTÂŽXŠÑ7,£j…I¦4—11ç¦@â£i/nd-oÏŒTl÷S9hÓp>”ó ® Ë"+ôÆi$‚cƒ4Š®Üž” „1ÀfûÜÒyl»¢æ Ï?r¦Š7íÉ›<Ÿ»R"¹Cíã$çÒ¤ßkr¸l/?J°$k!L8 “Ú¬f!µ¿ŒŸZ‰Î¬¥‘:p8ªrÇåÌÐÜHÃmÈ\ŒzÕV\JRRQsÁ­K*P2ÈCœàž3Í_¶²ˆÀ\‡b@cÜgÒ­Ãj†UðíОõ^î&TlÜàœU;ëy# ƒ»œ1«]Äè0ôC2¹—,‡˜Äíb[k?@U¸É ìÁ]Ø tõýj AÛ»pÇ8šRB¤«oÏZ­%pÛòO8¨´÷FâzÔ‘[¬8–V‡Ojе±ŽÁ ÕÓÀ|£=*彪Y¯3ØàS¸ÄyÆrM:ãUŽPàrXÓ¤¾IžäÐrØÀ IªÓI½Ïn9cPÈÅ›8Æy&˜îw,dƒøUvv2©Œgiü*!óAQ) YvdŽ¹íš›a‡– P3žÀÔ» ¤mé‚sL1€Êñž¿•UtýèV|?•VuÌ»Iæ¤UÙ± rO°©àiD Élö©¡ zŽM'À°2?rÇI$¢7?òÕ¿ˆ·AHòˆŸ¦ãMy¥u9; Çz†{éæ]¤ìAÆ¡žîW\gjú ‰cóßÖ«*rx÷5]P“Ïz³TBB…ÇsVb¦vŽæ¬Å…N‚£JÍ+|° ôëëKAó3ŒD½¯­,qiΑ_åi ‚r1ÛK‘P¨ÏíLË`²§ÈÅHÑ4qìX±íÖ´ÚÑ A¹í÷ªñƒË$Ó¥›d$ wmÈíR]^,<¨×c3÷Àõüi÷] HÆÒÇÔAð͵±’ÞµB(QòŠñÇ©ªÉ“ï6ÓŒî4#l@«`§ïGåSE!…¤jÁXüÑøŠ’7(€*goª9’+«sor¦0ã*ý³õ¥>UÌÚéLDŒÆý¿:%ÄLÃËlf654jÑÃJwìã'­D¥`·YÀ“ËÀRyÜ1V"€ÛF9ç4ù¡ÀÜ :cµMsnïF"1Êí8Å>hp  ØŠBÌÈWïÓÖ¢fgˆÇÌ@>ôÇ%ÔÇ÷š¨O#Å”ÆÐ ãÞ²î3Pñ‚x÷ÅP”ìHÆ3ùÕ½< ³—û¦´´”A™eþé«Ö ¾X.¸-Þ’æfl»áƒ×5§vì (Ù?+µíÃcmðhŒ«nÎ8 úöªÐJ¯¹˜ƒ·±õÒÆ-ÌûœôQÍX3Ah™gÉì*¤Ž×.©¼>µ‹ww%ôÁÛ!k&æåî¤ Ù:-<î°À…¦eÀÈÀô¡w1ØSÙœ‚$ùsR3¸Sæ| ûÓÙ˜/ï>QLIã BsØ“B\¢£„_bhYÔ#‰¥‰ŸhùН÷TsNŠiUOð­9%e° ÞHÏ4Õýä„€I´ÕùŸrä‘RÀ ›\÷5fÇå]Ï©>•fÔm”³tªñ‘)%ŽÔÉfö•NÜ ägíEË7ôT·Viü‹—>þÔŽÍ3‚29Ú«ýj"â\*““…Z€+M( sÇÒ§[w<çkFßK–LÁëB`¥kU\´¯òç§­NtÄ·ÃÜHJçîŽõ)±X°elŽÃÖ™tIB‹ò¢&âSš­ªJL~B¨EE^äÕ}JS°Æ«€½‡\ÓDæbM»ŽÐÄýjµ›h076“õ¨šçìѤ[KÉ%¬ÂK?9¿Ö ;½iØN¥›‚1$_xúÖ…¤É%‡ŸÑ—ïzŠìÖÀŽ7Ȫz³ºý•pgÈ÷9ªº“2˜1Žr)Æl o/xgÚÃ=éö÷#Ê]щäÂ)ðL .Sz³`Ðñy[¼µ;’½é·0˜$o%]Pó‚y¤ž&‰Û`!}(÷ ²1XñêµWYýÜß¼F?ˆ¦EqŸ’\8'ƒÜS„NùRnè:Šš8äò‹[ϽsÐu*#ù{¢“pôô¦¬€®ÄsDZÜÌJ¤’QÜŽ)Ryj»j~Áæm]Ä‘’Ê*xâ >ÄÞ\ò̼céR¢&ÕÝž¥…C寙–„ûÌXóP˜ÔJCÂY‹y¨Š(“  }ïZ¶‘åAãpiÇnJnãÀ•u"Ê’{Vs¿! ëY7æÈB¦­P•¼ÇÀNýiûöR  çÞšcÚ쬠| çßüšM˜,0б¬ÌÂ9Såêæ‘m’à1ŠhÎÞ¨:ÓVÝgRÑʧE4.\£CïÍB"Š;*¼ŒÔb5ÉV`„R:G"„šäùjs´.ÐjhÒÙ€[‹–òÁÎÀ0 J‚Ú%˜”î㊒yÕ¤D‰ÆÐ7*Ƨ|ŽÑCnãË ¹ˆ©/®Ô²$L6(ÜHý)ŠeÉ˃ük=™yrInÕMˆ'$åJR ¸€äãùRm Alm$zÒUÁnTSÔɼŽAQ¼€¾ìtè*6“çÞ;tÆÌÍ–Ë·ä£Ò‚f Avè3ÐRíyX 1èOAR}šM ¥»:U¥Óg 0èéVVÂB ŒéOò¹ŽÚž=*áÈY>Z•4ù[ïS#¶TŸ1¸û¨ ÓÔ"¾fn)ÓÇ ¢… –nµ“–’1íY²\³®r>µEçgʯ¦jD…ŠmeÂËÜv:ÛÉä”e"=Ùb‹TÂ0íe*¡²Ä÷§ÙE’n$;œªÿtVžb¨¿j~òNTtUí6ÍbO5¹géô©å›`ÂÎ{T×ÚŠÛ~î SúT—7‹Ùú}*2¶âoNqéYSÜO#4ž`óœÕFi¥bΕôíQ«y¬ r07{ÕV—Γ{Ùê}j©—{îqŸ_z‚V39KÕÏs8Uw8P*â}ª2Ìpô©U;IÆd9Ú\V¬ilˆ¤n™Àôµ#U†È¢ã.AÇãV.cûD ™ÁÎSð«—°‹í=—8`w!úqVnâûU™\üÀåj‚ùöøR,qXé6må²°îÈzëY阌‚@çjÚú9‰OÌ;Ô²Õ¢xvÜÄv<‘Zº„O%ç{Š|–«3C…# Ñq¥¥Ä¡¢`±°Ê°éô¢{žL£m 2 D#ì ~UsøUA ³“ÁŽ`‡­B±g ±|á¥Yæ!rOcNŠ}Œä&Iî{P“c?.X÷=ªE“26qÆÚµmpêÁ¢=x+V!˜†ÊçŒThŠ¥‡?1Á?ZHÑU™ 8s´šXsójy%d…v¯ÎÜ(δ&¸x­&gG±õ«2ÊÉ €2ì0=ª¾ÌÈX¶;Þ±ÝwܨŒ–Ç\õA—tãaȧ²„¤1''°â’áBC¸|ÌÍŽOaÅ6uýÊ‘’Îzæ¢1ùL²7 >Uô­KhNµk‰¾þ8ö¦¸åã­ ˆ>GËŸ—E9 9Å=ÅrSxùj’)ÚÝ6¶ oÎOj’9LJ›å Ö§b’0Py#;…XÚÞL#WÌœØá½ªFò.%Ú¬7Œq×Ú¡– xæYHÚã¦Z†òÖÂÚí&e ç;Tõ"¢ž H.¤`ÿtzÔ1ÖSåÉ$c®ÓŒf¨‹˜RRm¤’4þãtª‹ˆ•Ïìrô« p¡7lÏàu«‘ê‘ìËÀœðHjÊ_¦Ñº1îqJgˆr€3’*F»´b"ŒŸ–žg·'äUúSbíìXðÀSeX£*ÚÏÈ`1I D ‚Þ”ÔÛ÷ºëïE¹@Ÿ—ËÎsÞˆŠŒ?M½}éÌæY7/!G~:YæMè0xÏ#d%GAÅ4*@0zäâ©2 [¤å±Uvˆ'ÚrGSJì>QàRHêØòÎzÐî§i_»žôû”ފÕS»šµªDf¶…Ô|ˆwõ©µüÈã`2ªjºðAI“Ÿök/>^6ðþµC;1Ž¥ÝvFRD#ý¡S­ÅñI€;Š“Îº+•*G½1§ºŒâ@œ÷^I®áö ÷Ë08*¹ö¦‡ HÉ¿ÐsMB ˲ý:и<±©b·n|ÛvÎØHt1ÐVíí÷«n`=ªXáòÛw]ýkRÆÓì¸õ“å>ÕzÖßìÿWëP_jpYFÙ`ò MCU·°Œ’Áäì‚™}¨Ãg%··e‹%æ«|p™ qõ®~}[P¹$)Ø­ÐV$ºíÁ!ÀzUë;5³C$ºVêAÉj#Ø ÈùúœÓ6.çmÎz÷«PÂwy„ç ðjÍ¥¾âÎØ8tÕ›HË7n•f8—Œõ5­ib¬ *õ,kJ UÛ¸ü©Þ’{¤v¯Ìþ‚¥½ÔᲄEÏ&8ö÷§]ßGmHÈgéôª±™c# ²Œÿõ«9¥’å¦c¹»ŸjÊŽWyšV?Z·A ÿ®ù}…2½¡þø—ƒíŠYH’Ù¿æ~”Ò@³@úwþU_…l“Óªàí1=êxHŒK;¨ù‡˜?Ïå[|ko· $1sZÖ‘­´#¯Í÷†i#3¨Ÿæ‰×$zU[»Æ–M³üÈëÐvª×7&G1ÍʲŒ{SÜûHϸ«ì pŒ€~lwÕpîgUaÜî÷¨æ¶óUÖ2r§8Ïþº‚êËÏI,s$©=F*›c*?–~á'éX+ªM Ã8àgëXqݼOÈÉ¿jÇKÖŠLsœf­C«ÛÌq8!J™o#³19=êt»Šfýã‘êjÿîAƒ÷„ÿ61V(HAߟâ'59Š#'œÿ5"£ÚÛG¦G54pÏ QƒÜsR¤RÇÔ ôå`XÀó‘V-ÑC†g\眊žPÀ’<æ’A‘ nàç·j';–@:‡ùI`µ+:ù*Y€ãæ¤g]ªXñŽ‚ƒp£;ñݪ955F9õ=ª7¿\£ãšExÛ÷(dþ.ت–9¦óf—rw˜¨ÕÒG-+䦚…2F0ˆr­0º±òÐr3Þ˜[vUrz{ÕˆNët9#“[l’XBód|ÞÕ§W¶O9Ô›3c ,¤V=Ül.'aÓ;Z˹„’:RÄX+!äœ~4ÈI”'¨’"v”õ9¥UIØÜàÚ§H¡, ÈçuJ‘€˜<³š‘m£Æ_,Glt«ñXY*þð—`2@è*Üv–Èc¹‡§jI£P GóçÓnÖÕ¹ÜI'ô¤¸TM¢#ŸjcîÚÈ’#©ÏJ¯%ÓàÄ’€GRJ†K†  p?Ú¥RK+d™œGæüMÑ«1ã‹Ìb™p;žæ³Þ$2–°3Þ­• ˜ÛC1éNuTMǃҕ•U7qŸJŽØy— ª³*“½‰À&›lnnA*LK÷Û°§éÖþ|¹!¶­SÅ}Œ[y9vèµZ·68…þñÁ‘ºíV ‰d+eOV>”ÙeyÈŠÂ zÒß_€¶´p° ÆáÞ’òìÌ<¨›j§Ö£a JâOõ¬×(½É>¾õAöŽå:2e”à)ðÁlSáÉRÞÔƒnâÒp)ŒÃåÉ…5ßúS`ŒÝÌ]—(SÐûU­.ÅïnC¸&% ±=µO¦ÙµÌÂWSå¯?ZµxꑘÕrî0ô­mUâŠØÄ€c°­+÷E„Ƹ,Ü}+=æ!ü¶Llîkœ™É“i+ g&PéV–Bʲ)ÊíË.zæ¶RRá%VÊlù×Ðô&µÖMØu;“nô5$Q,ºeþñ«v±¤¶ò'psSÅÉ GÇÍT_C¶e™ƒ–ÇZ¥&‰mŒ%÷ìÆjœºD z’Û±Š‰|7ñNÙ=1<7¼ì g£]Œ¹ÉíS[éIjÍöwwù•êhôe·,`vqÝ[¥XMå¼¶fìA«X(œœcµK´"rNWµK Ûµ"É“ÓÜSPï\ž@ìE"|Ã8Í)À'#uµ·.#ßµ!Ú¥²8ª1»!nýSû–VØNxöªße,KÙŸJw¥BŒ³÷ˆàSÛOè£%™¾ù)M˜8^}ÍKäD„oÀAü'¹õ«ÒÖPÈ@‰1òžçÖ¬-¼1H¥Ïʽ¨vBK°2Qý)—'œÉÊ&@ wÕ¦3&ò ¦p@ïLóO mîR}é†íŽØ­"(ÝI÷¦µËÛÌÒ v¹Ææ$°õö©0 Òó4Šd’}~•#â+$`YŽi áMì£v¬âp8qôª,ÝHëÛo¡· ý3ÝiþqE\1/Ž¢Ÿæ )ËzÒGæ±ÊE!`’(®œX¤Ø‰Ž=àÛXVàSŠSÊîn¼ç™@FṺ٦I•R»²O\lQ+åß„`w4Øb GásŒzÓaˆ.ü¹$‘bSµ:€?ZUÛ$¢0v(ü»Ð»^M½‚j0¯rØ9$t_þ½%½¬×³@G<·÷E6 w¼”Bçæ55ÎÈañ޽@ôïZzœ‘ØÚ%¾0ùñéÿ׫ú„‹kl¶± 7Ò  H¥]ÉÀ䂲y‘6–8…g|΀n$ˆb•‹ìPL°À%­”óo*»TuwàO·´šE'WûÍÆ)Å"EØ{wúRÉŠÞ`y½}…9ÒR«ÈO©¦™Ôƒ*ƒ²õ5ýçh(íPï/Æ2£°§¤J¼ ]NFI«VÚt³üÍû˜G$žµb “æ“äEçš’GòãÍÂŽ^ «R\}ž‰&;Gð¨äÕ™fòc¯€:ÞªC­#IñlšÍ_9äi³êjŠù®Í $Ô‘ùj奅‰îþ”ø¼µ%ž#ŸïúS¢ ³ÆwzÒ†Úêàž»zúêÌ,VDa„‚ÄU˜ÎÙÿ 늚B„nXŒzÖ„Ue— ÇŒumŠr 1P¤’#’ß8 Ôõªi4±Mæ?ï7Þ=MWG‘-ó àôéå,ñ‚‡p>ý OqtÎbqò˜Îå'ס¤–}íŽ6ÃÞ­ÎÁ¶àzÕäw•ƒÚ_J´„¹ÜGsU&¼Hrˆ›åÏ~‚¨]j1Cº8ãó%'=Sšñtq®é3¥ä0Ì€“ÉÇjŽÙ Ì “ש#;X~ðg¹ô©Ÿ"BNÓ‘Œ{TÓ“r‡#{T’’’ÅNGJ™ÊQ×åàŠ\[á^9íà­õZä‰8Ç5^r%$ÙÅBr‹“ÎÑÒª2•<ûUgV¥¶L,£nÑ‘ŸçWô¨¢VûEÎPdWtø’0gŸ£€i’H÷.BqàßÞ¢½¼–þbí‰xUýê›™/%!#^€Gù—§Sš¯„ˆò3ëÍBJÇÛ>´•x¶Ž?vçoŒ!QéO™F8¡`/+K (½s´qSÛXyç\oUÆh2ÍS[Ùî6`pz"õ5gqD@‰RÕ~i‡—ÙãSÉn¦­Ë'‘V%_^µQœ´ÍåÙëXÒ3O;m˳p©¬¦-<ço$ð XQ¤A¤Á~¤V¼Ki¥Á™±$øÎ$Vš‹}>/Ÿ &9¨Yå¸Vwo.5twªSÜÏy¼²å^ôª²Í-ÄlîÛc¤†%ˆW!BåÛÖ£²´7RyH>P2æ™kln[`û‹Ö§a ¶H\·aW¶ÛX«0¥' µkm½ 'œž• ÅÃNV$ÊnëP]^ItË Y@z⢚áîbˆ­>+PN韼 ±k¦+ò¹p£ø¸§‚É Ý!$íÀ¥YíNèb‘ ¸= =ͱ…­ã)¹»Žhf¢hP®IíQ£’Æ$9`ÛNzb³C3ÊV΃š¤²oÆ~lTp°Œ`©]­·èj{VUAÇC‚O·5=»@pp ,‘3Ά6T/ó(>ßãN–{Õ1íA½ôú~4­}¬ÆHÜ£Ö£ûS$£!÷n*:ÿ“PµÓ³\ôÅ5#óJ¬GQžõ-½«ÜH¬A+ן֥‚Õ¦u,÷çùÔ³2¦è‡;NOµ:ôˆ÷Û!ÎÆÉ‹¶QºçkT–«äÂï/ÞnqZ:R}ŽÎg›‡cœ~zÅ~Ëjåþù$‘øUx€‘ó1%ÜñŽÞ•BÒ/´ÌZRK»¾Æª[Gç>d圜 °ì±!ELš¾æT(|Üð}*Û˜ Bª£ÌªWÓ\È@‡æˆcrŽÿª¨jW3 ±01¼ƒTï'šAµîûí¬µ–-B8Ál;dZÆÉÚ(-óŠÈŽ)b¾ °y®Š<+f5ùÇ=ªê I”=jê Hv žÞõ$$m‰:‚+JÅ€‹,$2ã¥h["Âò“Q¸!}Û€=ûSg_,ÛÊqçÔRKò4nqßÒ–O*i¢”‚%BFïï t²Cu42°"P0[³ Whî%I1µñŒúÒ¬‡Ì½rŽ?¼½ .ÙŠà”(ê;0¡dËÛü8uþF¸ ð€ìr¸§nÛpR0Lr ÇqÍ;v%`£*FqMWù¸ô¦Ã8oÚû-‚)#,YÃ8¡ä,Ù$¨Éùj îÚSó1?„T2Ü3òÄÙiÜôG ü$Ôhò1û­Q+; Å)!zÊPáT ‘€nvÓ·°Ê8ô¢% Ž$<÷<K d¸,¯·<ç¡¢$;òà‘ïV™ãhHR@­K‰-¤´U/P½jüÍ Û…NÝ…F¨åÎ>^ªWšŠ$h·¬é…(WŸÎ˜‘±ŒºÈ81Í4 ‚OÍÓü*¬ˆÛ•9%ÿÎ*VórI¡áÚØ’UPݨžÈÂê$¸ŒnäRKiå¸W•FF~”è£H“;(©¬íãòƒ6$$pz(©má@››æ$OJ]Û¶„Œ8P:Tžfü$g½)ûüÌ,)’8éO·C'Í#<–öfÂ!mg'ÚÜ i=ª[d[)d½EçÍ6<€qÁ=MR¸ÕçŠÛ„õ5R]Fi›.Ô¦ù2FÞlÓdž‚ªH% æ\M¹ˆàf “x%¦“sM.!.àÝ_zŠIO”"\í^@³‚1’Ò™ír¸@0Üi`“åÛòŽÇ¹¥‚f®8ì­-½£Êâ[˜g tÅ[Ó´©%q5ÀàœÒ­YX1q$ÓȩçÂK—à0LóWoe6›˜H\‚鑚žæO³© ç¦Zªì2¿,ç «¦Ã <À»±ÈSÚ£±…6™%Øä{S€ß#6 ž­:áʤ’3Û°êÃü)&|#1lãµ£í¶–ln|ð=)4ù >YÀÝ n¥®"²yW—ÍW,B#ÊÄ–9Ç¥UgùU¤bYŽqP~BÇ%¹ªWײÅ4qF%sš§u;¤ˆŠÊç5RêgIQ#+œÔ–¢âeŽP¥‡ÝoJ[iÄòp3žm:Îû\ ýjQ“ µ0W5jq°ÆàaFjÄß»e޵rÄöÑK »‚ߥ5$D†a“ gü4‹"ªFñ¾EM¼ Æà ÛÍZ e›oJ±ç!rH¦„”…eår8Zc¬2¸FP7O»Q…eŒ±m9‰6€&,¸cŽ:š‘öìK‚ãæ$q×5! —#æôëO.$mèIã«È¥gó™¤MÜ«÷iXù„ºç§8)ÎHÈ@'ןʠSp‘>üþUfDÚ+žÔ›bfF–9=–8íÜì˜Ë§¡Š!s‰D“ëÅOåÉŽ\·v5lÙI)‰ËîîMXû,ˆÃËbÄ÷4ÂòEð®ãüb£•f·-¾ÝwŒ1ÃÃb½iUÌà .ÖƒŠAp?{):`qH®&;àJ#H•³° gÖ¥„[FÀ”FsßÖ¥ÉBHNØüi‹&U¶¸7LTI)òÏ”wtÅF®|¿“=j^Td0,íI'Ê7ާ) $ƒlgswc<Ôs®Èö뻨¤f]±|ĽWΫ¼'çLO:.ÆÎ¥TÊ«µ²àÔèÉm”™¸´ ¸K A$@É$‡hZ¼’‹Ku( »ð? k»0?h%GB€ðjÕܳäÜ>2>èâ©Ïrò3g°¨‘È+Ëj²1ÇÊrÍÐT(OE<žžÔô¶ÃošB@»ÔÑÛ(%çn1ÓÞ¥ŽÜ.^f9íQ™à€ v¨×tŽ%ëL\ÈÁc³kfJw8èA[šv”,ß3úzV¥‚¿/RÜܤ ócqèµbúú;8°q¸ôZšêí-“ìµEA¸pòpŸy€þµŒ®ß̘áOÌØý+8frÆNǽY‰xHÙ°ì½ðŠ¿k˜£ˆ¾$hóü"®D€…Œ>\®N;UMJXà£È7³vëŒUd¬,±3©ryÇZ§©•Ò2ÃvMebRÏŸóôªˆÌˆ»X‚[¨áTãsE28¼ûÆŒ6?—üj{H>Óvb ò¦?­Ik¸—<)æ¯Éc®wcšÙ—K·‘pFæÆ2kF[]NF[ÉíY¥ÿg¹™\1Ý1ÐVÖšl¸pÇ<ÖL–arÁ·dô«ÎÙ€\ä¶~ƒ½-×üz$jĒűè)×cýPdà“ŠÿÙÿØÿÀððÿÚ ?eŒ\&WR$“§°¬ëh¶Ç¹‡ÎßÊ™kÈòGÎÜš²ë§qòSÈ25VéÔõÏÍŠ­3þèª'Zy3 ~^ôšbi\ŽvøÓ¬T)’CÛS¬”/˜þ¼UØmÇšO\ç§Ò¥H·1÷ÍJ©–&§Àu(¿|€Õ(ÁErwTUð‹ÔU—¸†ÊͦsµG=ÍkAq Žž÷Æ8Áî}*úÏ›Lø€õ5ÌÜßÜß“ùFäOzæn/§ºwåY${W=5ì÷Mº®ß¥nÙ[¤$”Aå*}ãëZ:m¿–e˜§î£ŒásŠÒ°‡ÉY%eÂ*œëRFÞj´ÄüÍÀ¦o;39Ë1 AKæc±ííQœ4¬u5UÛ|ŒGj¬Í½Üö( ½°@Æ“æÜONF\—û ¹oR²HÇ¥lé1C ‹4²“ëZÚ|qDC¹"Lc¬ý+kŒuÈ­GQÍ%´RÑUoX” qšÀצ2L#ÏÊ+#VròÇݨ«o îà‘ÆO_óŠ[uŠÒÊq(ÁtùAõÿ"ŸÇok ~†@>µâÏÉè:ûV[1gç­g3sRGÇåjå­§˜˜á5jÚܹ¸Û‹¡l€aGzµqz#ŒEl6 ŸZ±-ÈBB0£©ªùŽÞ"N\îþuCQ¿s%›-ƒTµ Ò±DIù¶ñRØy—G4߯)Ö¥ä%—£? ’ΊïüC5s#o#¿4Hà€=ù¤‘Æ1ïMvÎGv8 bÎ}âp*ÅÛhëJP7™ýÕÀüjeƒ+#ò¦ãSK~ËS4¢À.ÃZ0Ý [!Þ?J»â `ª9`jlBß/ßóf­[ŒF UôŒ¬óŒsÞ­<^U·š21V¤O*ùÆiÐ'—ø•A•I§Ç˜î®z× ûâ–Í?sq?tU;«vÔfS#b4_»Û5RîF½t.pˆ£SUn‰»p\íE=êKk(Œ¡"PØêM-…¹¸TŒd¬{RÙZ ¥«U»ùR }œÚOåZZä‹on–±€nâSн«Ê°Ä SÜwÅgi$°ù¯Ê`ŒV%»Rìr0F+*,¬äñÚ®(ÝÏV/ϵX £>2wòjp¿è»»“RÁeù€m­*Å…™•Y†ØsŠžÊØ¼eÀ©§³$¿y€óK+£“¾´é sÆ)¯{$Ž\ššd[+)ÉoÊœšªÃÁËzÔ‘^C3ÉíW­uˆ.!&­Á¨Å;“Sã¡ÐqØdU³ÀÏj£p ®¨¼k™Ô¦¼+ß°¬[°d¼Å%ËoœœçiG½7R›Î¼w^UHU‡øÓ/¤Ü3T¢‹ägàSlíLÄó´%¥¹“%Ž §ÜHˆ†þÉ­ ù¡Š1mϼ »w$h¾LÃÔþ…stæeŽ>p¾õ‰4ì쪵“,ìî{Õm_2ßÇoü³EOÄÔW¿½ºŽì¡A}™¯ã„tP®ŒF°¤p€ˆñ­‹½°•>ê _Ƶ®ˆ¬`pª†êHúU;š©±ËñB|³‚yÁ8è>YÕ4èÙA561oûn þu©$~^™ÿ²†5¢é¶Î5îîáLc‘!#ýX85XÁÃÿ;Oô¨r!¿„TVŒ_ÃO½:ÍŒÅ"aòÇÍ:ÙŒ¥U‡Ê‡5lž>nþUråÉBXa{U‰[åÉ¥UÀ•ŽOËœb²Ð gÁéœb¨(ó%Çl×/u;M;¿¡À²®ei¦cèpdÜJÒÎÍ×­Éh>US€ª ¦–X*ô(«Ûn;G`U«xUbXºŽ¤ÔÑ Xöu2 XÂözßæqåãåªÕ¤fGÌc„RI«ñ–?/ERI§®ܱÀÚ¾õç0TËp¯½1ÏœûP{-Nû­í‚.Ó3úÿžÕ~cö4[Gƒ4¼¿µ\˜ýšÍ`G彪¶ÆwTšLdŒGqß5B c,Š’>#åJ§·˜ê²·º*þa¶ˆìÓ­n¬–ºu·î—æ#§\šÕß ¤8@c·ZÄÔeuÓåšR ÈB¦zŸZç¯YÞÞ[™ŽZN=O­bß3}‘æsóI…_¥Ok(Tö@j £OaPcUQ×­D¹FŒså‚ß5uS)*Oݪò)"8צÐM]v®}kN·ò!$™«ZÒ/*3ËsP]Û4¿•¥§<ÏïIöÍ6y6ÜoNHNMQÕ¦_íÑ`¶ÌïUu GÚ‹EÔ®3P‘°o¼~cTL[YPýãËUC̱ûdÕ˜Ó ºC€¼âµí­Dv¾l§hUéZp©ö8V|Ò+&P`è{ÖEÜ‹ånQ÷›ó¬Ë¹‡rŽXþu µš½ÔRžIbqíL²µ0r«ŽO4ݤ² êi6’BŽMh¸X-V ~fáˆì+bॖ™ä¡l£i#®+Fá–ÚÇÊ\oqƒQ[†pï=j¦žÒÙ¯¥]Äü±/÷½ê 5[kss å¸@{Ód‘c$ç.yÇòÁ,çænqü…7 +I)Ëh¶ŒÂ|×]׌óü¥B,Á}»î%ÿ€SÔý”+ºWÿ°*@ÊCo\íMF12”ˆD™/Ú±v¯«,Kþ¦òk>ášúïdê¡ÿfÎÍ}{µ?Õ@2kD¹‘q#ü(·‰î.F`?Z}´F{”NÄÖœQòÉ=MoEn°ÌPpy5³"7)@"¥­Qè=*ð ‚ ÍÀ¦M2[ǽÍ6IÜÜU;™Ë|Êpzb¹ÝBôÏ)u8íX·×eØ”=x¦YEbXÄþtíZè¾fê>´ý&8Þ\ÉËv«“ÈQ0ÌÝ+kP˜ÃoµÌü V•Üž\XAó7vª˜å#äûÖƒæ*òäç½f8>`ÝäæUݱœñøóRÛú)fln'Çš|Qe$ýìŒQup‚„ḩ¯®Óìi8aÖ¥»~Î#ÎFk*âîÑS©s4~Z¡ÛYWSFcT#8æ¯ér«[=á(-ii›E¤—L0ª¤'åWì ý™§a…Á—LˆElíŒ|céKf‹žÎx/!?—ëTX¬÷wv&¥ûÄv©Jw9ª’ÎqNÆNÞô±Œ¶(ŒdŸ¥G.KãÜsM3(ˆæ‘A3=j܄Ƙÿη®Y­­Ûë%Î~½ë^ba„ârjµÊæØ€pÝAôö¬û˜ŠÛp~n ÿ:§suÁªºheV·,0µ›¹8?3ðµž7¶~f)ŽâiÖ8 ƒƒéMg7—) ¶(ƃÿ¯MÜ×SªÄ1 /µIš#´“Ÿ6A÷A«ÑZCi¾k“æHŸujÒ[Çi&;Ùz-#,“IÎ~÷°ªl’\Ü8©ÇaUÙ$šbOÎ)% #‘åÝxoJsª¤2 åˆâ•ÀŽƒŠ©gØlö!S4 —cY©þoå¡ËÈ2æ¨'ú5¿”œ»òæ®Z© 9#äqSZ¯æ½¥µùIq÷¿†¤†F\}MXµ¸tu99ÍX‚vV~jY¥ÄjÑucÁ­mBñÒÖ)m¿Œõö«÷—‘#Eü\Ô#tî#™±´g÷ªˆ¯ÉŽá´jHÕXJo2²œ2 àTB=Òíç =ë5¢>v9ãµg˜³(…[n탨È­m()ŸhÆð¹­+¥ð¸Ü9ð‹¸žW֯݊#+Ÿ™zf­ÜŠ3#TU@KÍÕ¸üùþUƒ¼³3¿Þcú÷¬Ù%V4ɤl(^Iãð© ­å¢!ûÇšÉòª/ñuªœlBípU¿F8!¸ª·ªÄ‚³àÓ'ºœ.FÒFMV´°’îác‚Fj­µ„—3ªçŽõм!¤|F©ùÖõͶÇK8ÏîÑ~µ¹,;X[§Ü Í=ÄÙýÏ›ð5 Éò¡ÿÏ:Šs²0ŸÝ¦)Æ ÍÏZÏÝÒʂǠäm¡˜SÔáM e$“…¿3ÅI x“=Âÿ:–ÄÄžÃúÔÒpC¿\p¿ÝëVì•e–S–*¯÷Gz½6CòGOjY@6û§Ü*6›»#=©ó„6€äfªXC‰÷–ùQxÅSÒ!ãÍ~UZ­§G‰w±ázTû÷Í)ûÛ#4äÍ5ÔŒ7yh¸ö9©$Ä3žvŠLþécæ5Ž>ÍJ¿¼¨Üƒ  =b_çÌŒ`mQÖ³/2YÕ¬ë¼ï@ *}: ±´®Ag`”ëhöÅæ> 1ÀÔûdÄ{›ï1ü«R8€…”œ9cíéZÑ"ÇjT¶ÒN\ûzVŒK² Ç9ozŽî@ˆêŸyÛ÷ÀÅg]¾]Ö1ÌŽŽ*ÃeŠGÕÞ®[°Ĩ8×Eah¶Öè¡~b$ÖÍ­ºÁ ¨^q“š‚èâhÂç-ÏåYºËm¼@œ’2jž¢Ø¹ESÎ*3¹ŸËLe¹'Ò«Á¾F&îIô¨b,ÄF§¯SEÁLIÉû¹ô­?R‘Q<´Á8Æ. ábò{Ô32 éÜŠÊPYð;u¬Ô¤«ÈBð: ýjäGüIZ¹ÙGZ†5f@=xüé-âiYûäÌÑ4Œ«ý㊸챨†âºæHm6œp¯rU Æ:Q]ò\$ƒ£9ü»Ö  i5Û±›ø{ÖU®Zõô$çéV¥ zpÙÅ\¾H–3,c œU›´EBè>bi¶ÑÛóÐSôHšÓÂŒ}sNÓ#ùÌ€Å%Ñ!@ldœ/Ò™­I"²G& '‚=)š¤¹#nüÕKÙÖÚÖIY†W!~¹¬¹dÄÌO+ÀªJ±ÆXžœ ŽÙ‹™]»?Ö¬C %¹~K±Ú=ªxão²¤Ï÷™åY—î[ä-PºrHÏJ¥vçŠf™{-½Ê–$© 5.›xö·Hç•Í&™vÐ\nEt°¡XÌÌ’óøWO €Îÿ4³sôТˆ»»ò}ª)NzzÖEû–ö¬ÛÇËÊ”Œ`÷ªÛTÿ 5‰!Œó“õí@ËLdf„$²/½=T¬aœå¥lýtþ•¨°ù‰#œÉ+îú(éZQÇäÛ«7ßsŸÀt©Î[¨Æ9§Á‹»²ç•QŒS£âvbr b£º?ÝÃt¤¾Û”o»ýi.HB"CíÞˆFÂ0w~”ëQ€±ãw?Jt<§ûÇò§Û€þyÆž¿JžÓl©xÛv«¶à}±ÅI׊gÇ Åª iT¯® ¬‡”†ß\f¨4Ÿ¾ãéT¶$Øn¦0Yn¨ðóƒVmáóeܼ(c…öÏ5-•¿Ú.³œ n~‚Ÿg špÙùAçÚ§•‘§Â7ÈIªKùSí!|®>ðíR^H¢B¨~P9Å6Ê;¤ò}Ä'`õ÷§è¶yî_õh~AêitËC#‹™:º*ÝÅÂ@ä<€+jææ;X¼ÉN8Ö´æ™-Ð4‡8F9$id‘”0\€}2xý+œódšâYXÔgÓÒ±wÉ,²HFzR*„\ Ë¿JµˆWå囩5j%òÀ©ëQϵeØ9#ƒT/¤S6Åçjì€Íµ}jKeG\rWúÔšu¹™¦P2B?:~“ÌÉ ští„ñ¸àÓfùW¦7$Uxë×ò©!Ã2cëWt˜·ÝEÇ 2jÖž™85`¨pUºÛš5ž#ãæéZr"ËVïÒ©Fþ\ê¤`&C~5ÎA'ÙoHqÂ’¬¥bÂþEË(8«!RU!¦±Ey¹#p£¯ãWÖ8wåU‰6“W-â[863ŸÎ¬D‚Þ=¹æ©Ý±{½”cñ5ÏêóyÚÇ"1´ ÆÔåó/˜B ¢²µd’êúÖÕ~ãÇóÅQhšâê uÿ–Œ3ùÕ&î/ ƒ³6MkÞ4À 0£ð®ƒV omI¨8ø­ÍClQ$xù@#ô¬’‘]¬–ì •åMcŽá¸+ÊšÌeŽæ6Œ˜r*l9#+œæ¢K6Fù¾ï­C¡Gäf·Ä¥¢EEÏk£³ÛÆ‘¡?.3[¾ah”*ö¨ Ry¬;¼‰9ûÝë&èâAž´÷#µFOJˆ8¡Wtê?„6MOc›{õ]üÔöQù—Hf§ÈâY ô ‘úâ­ÝLfsAÚ?*ÌÒù¤¯÷)Q˜¢ØýÚ˜÷§B ‚«Ôš‚mÒdæ2TÿOåU¥g’\tHüȪÒy1Ÿ¹Å>ÖEó• e±Ö®ØL«(rvš·jê yÅ9Ìo-xvN;Ó­Ío$F'é`S&p€œûÔ1i6/’³àE’ìÆ½Š­S„+\2¯BpµRÝYr'#õd£æ9àõ'h$⯪X6õ’CZ¿ÙöþOYå彇¥]pm òG2¾ S LKD¤y$Õg( êMTØ^M¤ûš¶f‚xl*¯êEtqÜÚÛÛ"«¦xô­¡4B>`FF+)Vkéþ×p¦8¿å”g‚ïXW“Ky7Ú& ‘ŸõHxÀë"æIneó¤WþY¡ì=jâ+ùxáW<(ïOµ‰Ì8ÎÑžw÷©mâr€g§E§¹û4M)æCÂJ³q:Y[»“™ÛåQýÊšædµ·cœÊÜ(ôªpa¹#'9cXi–9XÊwÇŒòkBÍy’LcwJÞðôc÷Ò÷ ô­­0±Êç«Q>•pb>´ÍJ!ÉŒó‚Só¦^Ä«9x¿‰©"‰bÆ[  ZVV‰h¹/É@§5zÞƒ'=@棼qä0S‰ª:ÕâÛâD`r*¦©tª Fß2°Î* dÀ$à6àîjôËsgÎв3l—Ù…V½‘f·Žà™Žýê-{¹9Æ~\St‘¾ë,Nž)4ÍÍ!$l*k9Hbøùú žÝÏÌàsÐT ‘•Ý÷¥bÍíP=¼°²´ƒæ—-ùUy"x˜n}‹nŸ¯¸Üß•Y9Êä1¥³'i'M^B¨ÌÊ †RHúV¬,‘‡t+¡'êh!XÃ8*MT]°Î’`²î!@÷¬‹7X5åeÜ¡Ïß½fÛÚ³r¹¢Ð$Jó8Èp¹©4ù’êQ•‰~P{š–Çd*ó·ð úÒ«;?›!!ÿ»èj–I¦iœŸ0öô5HÒÊd<±< {(EÜù.üíid_-Fþ]¹Ú:ÒÈ»Ÿ¾{R$iåÇ$ä!…M\¶·!Š{× °d&y>•nQR9.yÙü©Nf™²¡†0*½Ô†êùÝŒ0©ã ¼û–fùr8‚<ÉŒŽpI㊖Ö$y¡rH ~éðMå.ò2p@¨n˜ù9n®ß(¬û·,„¹Ë1ÏÒ¨Þ9d%ÌM%¼{ð$ùcA—÷¤´]ó/ú¸Æ[Þ’Î%r^O¸ƒŸsV­˜•3c ¾‚µô§1Fó‘Ãj/°­KdˆÊÝ|£Ú‘ÍpôÿB¢Ú'¼¼{¶û‘tÿhÒÁOtgoº>´é&ß¹ í`xæ‹íI¤f‹f§zmÍöâS žžµZP²llàî(Ã=qYS#+ƒÉëY³‘! ÞëJ‹óI¾¡‡ûŸlG4G¡“ýáÿÖ©m†èe¿Þ_¨ëSZ¦ ©«š¦­¶¦¶‘ù6ü(ŸSWZù-“ˈ~5.“}çÎwòOz›E¾3]7˜r_½M¦]ùҒܓ޶GLšÞ-µKÃ5¦NÕ,}+6ØpÒž®årDv”ýé¹ükŸ#s—?ÄÅãRˆÎ oáëõïNò±É _(ŽOANV Ê~îsõíS¤‚;|g¥N®,ÊŠ‰ç­E#¿Zd`ð;õ©’/Ü¡Ï9ô­;k}¶‘ÉŸ›x?¥]†°FÝ󚣬_*(Ù÷Ïñªzåò»¨NHOX»î}ì`S4Û…ò"süG ‹N•vÅßvr)ºs©žrEjš#žñœVău¬‡&#ñ­7·|ޱœTP1#æVm’£#2ÃîÕ+`¥Ÿ¼ @¼ÅÑò´Ÿ˜ª§>D@ +9ǸíPÞ\C³EK ãxã'§^8©ìcC7Î8äŒzÔ–j ù‡bhŒIq;Lÿ")Úêjk[g»™î§;#RÜf¥·®$k‰¾UÜjšy"¶S„Ý&8MY¼»´°R"|ØãÔ{Ô·WVöŠUt˜ãÚ«¡Þ§{|ÎrÇÐzVTmæ†2™ŽXÕˆ‘K9É',hw$mEùW…Ç”°Ú½˜Ò—\ ‰ÓaÁ?0æ«È¤­Ö«Ê§8=j[8Ì©.îü§ßwM´yâvlˆÉæ®iöÍ%¹fá3ùÔÞg8ù`Ø@;{Ôé) Áw‡À·½XI7)zî#éÍLTGAÀþuzæAin°'ËŸ­YšU¶cê=j¤d¹ó#'¦XjÇœ¬×,êNÉü+2R$¤\àŒÓ–ü°#á‰çéO’ÄJbÈn­š|°Æ"_/¨ëšHÛ8ÏlµE Ÿ`j8ã­Kh™Œƒ$žÿçÞµôh‘-ešQÎì þÖ´tèÂ[<’›4²IÕ‡Ý^ƒÞ©ÜÊdw|aAÀªÓHdvaô]ÉUKtåÉÜÇÒ¡ ÏåÛG×;˜úSÙ ‡$Ód‰"påÇëVç·Ke@ËËŽ¾õ<±,*¹\³S.æYQQ†ÖÇÕåÈQXØÏ•6æa Qž@ÆcÍdňVž´|ª­°qûäR©läJ–0ôRN=MGÁoáä †7™î)R&¹“.zòßJžÆÉïîï»ÕµX³³k¹·?ÜêÇúUõU@FWO1ʼn8úÖâFˆxV(ÊHÞXùœœŸîŽÕ‡o«s …rÙ$šÌ‚)i<±“’I¨§Ši%ó%-?•C{it_͸$Ö¡º¶œ¿™3=©¾j¢¬h<ÆÏÌÙªžj€#Qžz𝿏¿+‰–Eʶ3É¥bШ ýiÅŠÈ6ç5cda‹¹ÚòkB IZK†Ú'vÿëUÈc†)¦< £Ö€ûŒÓw_ƒvdY±…6ìR} ²0ÎìTr¸Uddô5RgÛ€8>õ­·u¢Ò3Ÿ4óº´´‹l ˜ŒîïWtè6 r3šMC· ƒÅ;\ #F/È= ž+ç¥WÓâ[‹‰Œœ„#SGn§™ää.ÜTlkpò³vÀ«×6‘M (7P}ëVóOŠkw 62>¢®ÝZ$±Qó‘øUm'ç0AëTtÝæ±å *ƒJGc늱pÃÎMÍøQ«L>ÐaŒnü©/äCž:Ó-@33Ÿ»E¢GºæIßîD:ÔzZfG™¾ê ŒÌYÉ’j…ÅÁ–f|ç?ãTçœÉ;7©â•Fç_öºÑl†ITz–Øy’¨=5;¾ç8ÍmMˆ t8 íZ²b0ƒŠŠpœ ¨½MApwä(Â(Çâj¾b@QÅsÚã9¾p㢨㉬ ù–N  }+TÞ/Š7l ÛžÓ i:œùXßîµµ5HínSþYà8ö5­-¡W·¸Oàᇷj·6&Ø«÷X‚Õ=ð²F¿sp/RÝ(”ª»ÔÔ/"´CËl(lVtó+@¨‡ ª“Ê JŠxSM>Ñ.ØÐ$ Ù|ucO°µûuÎBl·VÉÇr)ÖVÆâPåvÄOSW&`\qý+WSœCœ sôô«×ÓyHqÆqíT¤”çÌõ8¹é§i_w¯V4“³ÉžíD¨aµrÃç”Ôz ÚØ»0ýåÈØý’rjfSmdPÞÌü…O±øÕfc°¯@qúUiíÛëÍ0†(ïÒšˆÒ”AÕE™ÑV­$Q„QÛšëmmÖÞ‰09ú×Eb(‚/ÒžHäªîÆïjy;FzÓ}ì }:Õ(]·ÈQpXô^µ^"Û›=©Ør8ǽXd’XJÊË·OZ•”¼ed#õZX $0`sÇOzƺ²¶çYC°9ÂÖlÖÖñÊá±Ï©±”,÷ Ø@zTvþLKy(ÜÌÛ!_LTpypÛ5ÃŒ»’#Ö‘I“,ÎycüªZEgÇ~Xÿ*ˆnt.F=}éñ¯œRCÈd' *HSä.z ©w0Só| ®ŸçPJù“s| ñÏ¥Bí—Ë­hÛ¨X˜ÏÖº{4XícP8Ækv ب/bY–¨â©êp¬¨ÛÆJ‚EW¾‰]°äŠ«§N!•ãqø` ££Ý-¬Í‹€ø9ü*¦7‘!‰Æ7r hMrˆ„«H­k›ø£Œìl±~k”T!O$UM0ìŠW#læ³t© K'L±9ª–,c·v=É¥-Ã9<°5ByKÈÍœ“š¥4››<šœ!]:L}âŒOåZÖÑù•€Ã™ª—s$É ¿ÝÀ‚y•#*[¦0ˆ;¨ÜÞù5Ÿ(òÄh8 eS“l{û«“VÆË[sžXú×IŽÂÄnÀX×$úšÚ]¥®N6¢äûÕ¸’y7Kò¯òÍ\^Iu;»äÛÚ°fºyæf|Œÿ*’ƒÌÈ£4ý>’éL‡÷kóRXD†`ò}ÅäÑ+Ì“tEùPôëÙ ËIp>T,~âxÆ]óùTR™@É8J©÷¤Uõâªãt˜üê[E 9#‹ZzBKã!äF¹SZ:D{®]Ï![5¾¼ŠÖ)p})@=Å. B×ð’ Šp S’îÎÏq2sÔUžæÚß'v|UYîÝÁUP÷H¬‹íZ[€c÷qŸN¦³nuŸ*¿"zôØÔ¤nýݪOrzš‰AKYdn]©ŸR™†[I‡,¨÷ïHU¤h£íü?Næ« –âHa?Ý j÷Ç_O§z³0c…8ÕýAV)a´€ ý?J¹zK ÑG4’gˆ”uØÒÜŒ"[ÇШw4³Œ:Ms·3=Þ¤ÈOÊ_hÕŽI¸¾ögÅdîiï‚vfº½»Fßaü«¶UÚá~•Õ…ÆùéYµúD²Ûd‰vn*ÂÖo‘|ÛláwgúVN©x©æ@ ?Z­a(¼Ó˳âHSüKT­H¹ÓüÖp%±“ü@Õ[GRØ’#Ž}*Äh%S.ðÈ=jTŒÈžil§AZœ!uÞNV®H¬vÈ÷ž¬Þ2Ç V‘‚ÞsR\±Gnƒ’2iŒ7: ä±ÇÐUŒÏ2F¼–8ªˆ†iÄ}I8ü*ô¿, ½FÜWC~<­9Ð ¨L~•³v6ÙºöÛÒ³×\í-sJ¼.=+ /+еn¸O1ø÷­]:?-<×;3Î}}«FÉ k¹ø¨ä™ [$ô“ܤŒÛ›$ô¢Y•‹e¹4[.žçô¥ÒNˆ?ç¶HÄ÷þUÁ¤º?íp GzLׄ'W )¦\fK’V#š¹GW¯SëZðÁŠp¹8%˜ý*ôQÇl™ óc$𥠒!–V!}¬]2HÇoÒ²¾ò³7.äâ–lŒ{®? †ë,ÊÇ©\TWY,¤÷’J&Ä—»÷Ï­Y–üÜn`åûÇÞ¬Izf$ÍÄ}=M-Ë›z€ä ¸ã©Ü0$—PÛ°ª— ¤òcÐJzÿǪƸùó¿ó«ÊQlc‰ û„‡èx«€¨³DQÃ.FÃÊ«ü àtªÓ·šê¬p‘ŽÕ^sæ?û(1H@9îp£ÔžMF>fûÄà}j0üÇ«U›o•ñ€Ç[zJýžÍçaçåÝ«_O_&Ù¤n )ew†ü©³ÞÍ¿÷nAö¤–æMß#UMJi-í ¡‘™¸Áè*-IÝ,ÂI›‚TWìÉeæ+;1ë\ôNîü‚ÌOJæ÷³¶I9ÍsâG‘É$“ž•µ§@ffYAÂûñÿë­=.Ïí.|Ì„Aœž•§¦Û òÏ÷S½[ºeÊF:(©5 C²ÆʃŸ}&÷UÏ À©mÒöÆÕú ÐÑ T†KÉÃþ諚\*µËŠ‚2f™¤ïròý+>6{»×—.Û¾‚©ÆÍsrÒõ$çü)ãýd óëV"ÿ]&î@5O̯žƒ­T[Zí.²ì9úÑke]Es´¨FçÞ’ÞÒ3qûHÚÕªÌ0OjÝ‘ñ>ÜV«6GJåµhžmU™8Qü«Ô•¦Ô†zJæ/Ñ¥Ô¹ÆßéU„Á`VS+·ÕqНåË ®pT¿ÍUÅWX¦·²^,wõµ¢a4u/÷˳ŠÛÓJE£Ç¼åÕ‹øÖΟˆôÈIûÀgš¶[lgqG9cíUæ”K¬sójŠYIR‰Zu˜k3_·µZÐÔ –vRÒcjŸJUóK0çøj{é|«gçæa´}MhkW ƒ©oš@sS”Efàœ³p*¼ û²ò|¡FÕúw¬»K|ÂfmQò¯¸ª6ðþì»ð«òŠ­{y°Ÿ›Uô¨®®ÉSÏOºµÍÎöÀàzÖfóÜꙓ;@%óÓOMó./rA£qúU==äží‰jŒÖÚ’®q‚e'Ç9­;rñ6Ñɘu÷­8wFÛ¾ =p—8~€sRäê9ÀP9§©òîÆþ‚ŸrÅâ Œt«•Á’ÔI@j[ÉI„2)ã5 sy IéšÉÁ¿Žv©äÖ|, Údå@æŸp“p£h%â;låW…þtû” 1+ÐqUNÝ£ ÈíÎ¥Qî8,Ä稯,¸É&¬´*× ó}çÆéWM–Ù¿˰/ «‚Ð OËœô¦É²>erHïè?Ía/ÝU#×µ-É) Ñ0h9%rÇÔžj¹S€§®2ßSÍ@Ëü=ºš]¾dêOGÐuþ”øã\ ýÁÏà:ÒÄ‚IòßqEYóT…B0¯À­qy ‘%» ±·Ê j˜Þ5„ð­ÐÕs2Z+|ÆAž=ª‚\Eg#î>bƒÁª_hŽÙ›wÌâ”ηVê­…ßÔ¬]Þ›Ë4hBçò=Ôßj·XÆî …4ň¯=ê”SK6# äöªqiŒòð@^äúUÝÉ!"ÀíZ—’Ckh ·ÁÀíZ7Oþ\@q×D ÍÇ9ïïXq£O EûÎp+&$iæu'­Ýb+QñŸ—üksXak¦¥¬}[ jÕÔÊÁf–ññ»åü))*Ã8ÉçéTôØr§' œ±öªö1þïÐu'éHƒ†Ã`¹¦#Ÿ íÁö¤CÃàýãLe$ ǽH¡œyað Ó×.6†àTêvÆÃÌä9­4p–ìžfæQÀ&®‚"¡²@ªË$ÎÐIÖY·"ç ·&¨[ÏÎ>ð4ó 'd¥[=1Ú¤òwM²R­‘€Gj’]†Ç¨òÑ1 ¸š'ªR1ƒ“K"¨Mª8Z\(bs÷F~µD.Ù?tf©áw7<¨§éÀ˜ÚC՜֟‡×Ë;ŽIâ¯é+û‡”õ&¨Í+]ÈqÎ U_Ʋnî%¾¹8$üÅPVuÄÒ^Üã°*ûí Ây¯5­>Ü}œ}Ø¢ ß_JÒ›Ááõ®FöIíÁvþ•ÌÜ4¯; |ÙÆ?•s“Uã>‚ª\Í%ýë>0«ÀÏ@*¬²=ÝË7ð­HøH‚o¶Þ¦™–1•XŸáZšgHí '°¨ÀsŽõT{g5\Å8±¶Þ~µn Á'¦jÔlïš©ç*\ªg÷ŒAǵC ÀŽår俣†p“¢“É9«— òod!@çZWñI:É,l0jÕÔo"³©À?Zl1>n¿z§m…WcŒŸÎ¡‚&Pšap½i“FÁzâ›)Â6Þ´ÖÈG=Æ*™ÎÖªdŒjÕ§ëï“ú×A¤®Í-O÷·7ë[6I²ÅG¨ÍW…Dq»"åŽßoz£j«»¤`»1ÙíïUmÑbVe@\·Ê})dT8³±bh¸Q G.ìY. R1P2¸?ŸZ Nì£æ\7çG"Øêi%‡”e;pÀ“ê*ˆöÜ6ÞœÔS&ÆGS·¹4Lê 3 Z­páŽã‘õïU§p[=O­Ki ¥úŒÖ…•¤vÐË®1÷ïWm­’¾Ñ?P>Pi†mùeêÄb &i7(Ææâ£™dÜ£’x¤Œb"]‰f=}AQ.K3Ê¢B<œ¹%8š020[¹©Æé¢]ÇË„q“ý*_šTŽØú}j;‰A Þ¡ÔgYdUE+(AþuüÞ|ƒƒjƒKoØ8á¤Q“ýÑš!O.Õ€8g³{RÆž]¶V±¦Ë17WyïPÊî °tÍC+8Ë x¦e`ƒýccó4Èãi%XÓæg8Å28šYDkÉn¾Õ¡+{F w>µÕXY¥” €øå½k¡µ¶KhUr&žFê²FáƒÞ¦Æx5N[¯.]±/Êõ®vçRò.Ø[(§ŽsëXÓ_ùw,‘ pM Îfg¿éL’Ù™Öw)ëéHÖå™evÜd=»U™FØ€:b¶oAaå§  -iÜ(ŽØÐ`UEYá-ïX0#O3¢ñ徕‘´Îã¢)ËqŽmÊÙ>™¢D‡îÛŸ­±ÊŸ­&XåcRM$–5%š—ËvùQúôÿ)ü¤VÀ`zU¶´xíS :вmÝ!@ǑڹëçwÕ¶§\¨R+"éÙõóò…ÅdÌÆMEBtºR6Æ#þÞºvuŽÝaÎS fºeX•?‡×ùÔlí‘·¨N¤ÕÇHö6GäVµÝ­²BåÆ3éÒ´g‚-‹ Uif†òãRùÉÁÅe\\[[Åä@¥ÉÏ8èqYóÜC^LCsqíIcgi[¨©<;oºg™¿p´ý¹å#0*ç¹­î{Ö­6GFî:PÝÌmí%˜uUÀ¦\¿•nî:Š¡3{dó\ªDÌÛNs’?­sÉ‘Î}y«D28Çaé]“l¢Ð—ù?-miðâÛ È'jK·Â¬c‚ÔÍvãb$ ܰä{Tz¬À"Ä&«˜ãà¹å³×Ú±„Ÿºhcë!ù¯µfoù ¼A>õ$Vÿ:îã$¾ÕnËOÝuÌ6ç-QVílñq™ß'j` äVµüI£H‹† šÐ¹A%ÔrœÕKÉ™  œ3)CS»3ZÂÊpì"©ÞÜy–ñ•?1³tÝ=ãf¸“ïãä$Öu‹#_ïj›!2·ßìMi`œÙµ_”: ó›ÐzÕÙ"íÓ¥8gG,zŸJˆo”rÇ’}*>O 95壯{š¤íyïTäbF3Þ˜à–AŒäŠH¼Ñ®3–õ¦À¥î#QÏÌ3Z2H±.N3ØWY4ÉoIÖºu‰{d•V.À—ê}«*"t®¤ÉœÕ8ÈL¹19¦f—cw-øT%ćåÏÒ¡É‘ÈÇS–ª—Ó¢€ýâT¼‘L…êØª·.7„³ PÚ›+CúUT5áÆj¤ ñê3ʺ)>HáÉ$ é] þ`··BÇiÁÁö­»³åEç 󊀩gþ!×Ú±ä$ǽe¹,rÝúRɤgªüïõ5-Äm¢·SÓço÷KpàA*yûíøÔ– ¹¥”s°~£áØÉn òNÅϵ\Ña7˜ŽXájÄ¥H Ÿÿ]h]²d'>Þõváƒ)Rj¬L°³7÷É®zÖQm0u^•k ‚]ßÝàRËy—'åÎX’HÖ[¤ÉùXäÔÉr¤Ÿ”ÕÅ@¥tvñ£U\mÀ­˜"€1Ц“Ÿ¶4GîÈJ¯ÔV+ß7Ûn`nCnEö#ÿÕY†ó7·ûXüª MÙµÆâ n#¿CNO6æÞ7]ÝAÇҩا›~Xʱ4Y{€ÄàÁ5 ’XQá˜qµ½AªwWwðKe) G ýK «qu,1Im''8Úš@1¦~ñ…Ub¾LyûØ-ùÔ-þ­ø…J÷áù*8Çj·nï‰ ,£ø{zUˆQ™¾cœzv¦¸嘎ÄÒ^.ìÌ: .°,İéíP ­ò’½ÅCÅ÷*Œ·¯µE¥÷mæ¤UÚ vVÁü*£q¸wÕG=}y¦£Ÿ9d'ò5Žót‚1™7d{TÖ{„ë´e²M[ÝÙ·9ç'µn¥‘qºWÝ#ý+Ymóƒ#eÏéQÜ\R¨9<U¯®UPÅÎNCs2…Ø€x¨Aòc$rÄ…NõOy†2ÍW.cL÷nµq(“TE=VC¾ëÐ@k#~ûð½ºÖ¥µ™mGÎ#ån+FÆÔ¾¢®GÊÆ¯Ù[ƒy懚ћ3H¸è¹?Ò­j3©Wuy«Wryò¨þ¨Ëd³/Eéõ¬æ9faØàU9bGn•ÒÒyjrÍÉ>”‘ÆóL"NXþ”Øãiæ9-úUôbŒ è£'ë]L%­¨E'¹ük~8ÖBÿtT¶qœtªâ<¹‘œUwp€±:T fgÜ"r·ZȆ‡pD/ƒß—33çËlj™"826sÓëWà²p<â7s€sWbµaûÃÉèNuXò:Vœ³‹ 0Ò6æì;“We”ZÛîsóÀ÷¬éòŽ’)Á\°úšå¥fó7ƒƒ×?ZçäÜfêr3õ«–ñˆÊªõ|ïŠ×ÒâXîwcˆúŸ~•«a¬å”`/Õk•"à©=yST58 æFïóƳõš+ÆVã<ƒSÛ 8Áõ½ZÒ¥žû³¸wQÞ­iÒËãæ^⦃æ.ÿÄ[ò­]5„¢k‚˜ïϰ+FЇW”ýæcŸjq ±ç„äšeÔñý çcGséLžU䟕çUw—¨†¬U‘¥•À·djËWy”sÔƒB-$›Ë/"p­XF †{Á’HÎ}*Ūy0Ér#óNzP¿hš?9ÁÀ}).ç·7r’¸?2žÔŒ· ¹•ˆç•ô£Èù?(ÃrEÜmµ˜»qÔ~ö®3ÉïV~Ù,rJŠß+7$juºt, ü¤óQÉ"ì!Aôõ÷& žpêvdýC4¥Æ'4¼Á‘ŽÖ<éR¼&ÆÞ9ËâG íRÔèÏ*EØrÇÛ½:$3J‰ÙFMI,ƒpE8UOsx Fv¢qÇzšk¬ˆp«Ç$*¬ÂLg²ÖŽ•ºùç“ÑsVìc <ÓÏe¨nØ™Ò1ÙwóøU/HMÌ17ÿOéUu§&â$–üøþ”ØÀ.ŸZÍ…réŸZ¥e“>´°F;Ž•rÜe}x«påÜ(íÒ­B öàÖÔÊRÔä¨Á­)AäõïT l+SXeöGrqYŒÛqïÒ“Î1H¬qž”ä™ã™d<0¡&)&OqŠž@Ì aSL¥¶mÀ.95#©`»G$R¨HFÜä–É4Ü, ´ŽKdš.Þ¤œš‰0Êü(?™íUÚVû€ð*ªã{H~è¦Gºæà'8êÆ’Ò¾»T Jç,})-c{«£îõÍi6sžÓ-mø<ŠÝ8‚.½* ¢æ á'éUµ‹Ú/–p_æüZ‚öB`P§æ<Ÿ¥BªV݃Ÿ½È'ÓµcȲ%¾%êã šÎ:C‡9-È©e“ì°,H7Hz_zÑžEÒ¬RÙ>iŸœzzÕÉÝl-R#Ì==ª¹G–|3äõ«!Ì—3~ñ·7ò¬×Ýq/ÌjYfÆ ·aÕ½*YgÀ[®qÔú’II(Fêh‰6±ï‚}ÍO§Á‡gÇ`sSYEÌzc«Q©Ž•·g•3ÍiÛ¯—ZR7¦Ÿ,k^*iD¯–ëœ Ô[€"bØ«Z+r&<œ ¼³…Œ–ã°¨Zæ7‘#S“““U^a#¢/^õÎÕ&¥› Ûó.?Z.Ø×o+ýhqÓ½YUGÞ<æ¶´ØRÎÑq‚òrMhÙD¶ÖêÞ~I¢âM[µA­O°ÆAíQêRìA¨b&h t`ÛAõêµ”Ÿk¶[v?0m€ûw¨mdûDKuÝ´nôJs)àqjƒR}׌ʯ{• ûœ€xT@g2“Ñ‚3銎Iî馑±¹R~”Çf¸¸y\ðWŠšT6Ð^¿Äjí嘳°Šhù¨¤Öf£Õ£´U3¯”g4Ëaûå1öæ’Ø/˜ ô§udlrß\Õ¹Á1©CŒš±p¤¢m89Íe[ÈãçbU8õªP¸Y†ãÀ=ªœN»˜ä Ú†e™~BH$u«û„¨6ŒÕðDŠ6ÕÓ÷8í["Ýv®sŸzÒÿ–jçTGçŽ2rT|ÀVf°çÏH™²P|ÀU Qˆ‘cÏ*)ˆæ!|}ù75$LmmìæÁËÈÌßLãúRFE¼Vï¼wÆ‹²Vf+×5¤ËöÉ yÚH"£¾oô—+ÜÐÓGm +ë’£œÿZ!tŽÙÖL0sµHê1N…Õ-ʶãòš’Þc-› çaÀ=Å\·¼2isE ;¶|¹ô«1Üùº|ˆÿx/¦Å…Ue‘¸ÐÕK_‘Õ¢†ÕZØ`bûÍÀö«H¾Z~ñ¾­ë[6¡m­ÿ~ÿ1<·­iö(¿xØlàšqAëš¹å®w}î8æ§ÙÉç9¨/Ê€ù`s‚k3\e¶²Û…iX+}1Tµwòm€@HÜše²ªDe‘À¬ËB‘Á4¬>r»TŸ\óTmöÇlòub0*6`ÄI),©ÑG­FÒ|¤¸Q—2¾çç =êkhZ8÷ÈsÎ=+OO´kXüéTon€ö­ ;o³¦ù'±ª×—?fI®AÜàdLÕ‹³Ì÷(A|¶8éž*¥ÅÑ·’i—–ÛšÉÓ…åÍÏœ\ªg$µQµûCËç g9j¥iö‡“Í$Žs“Wµ˜dºµùT#?{¦EYÔŒ—‘)( ‰ÆqŒŠŸR]D¥W÷‹Æj ÞtÞ³† OOëMÒmœ¾& <ŠM.‰ÁÀëZŽC8ÏOeùä1ä §Í!w"”°¨?Æw‡éR΂+Ku?z\Êßô©.Ê·:3‚æŸT%œUzš“Kxâ’Ie Û?‰è*KDgwì­)•Ÿ' íRÉy,å™›åìµ#]I&Xž; ’7 ¹sÝëBÔ¬vù•³¼uÇJ·Õ‹çäµ2u>P ô»Óo×m®ä=àSnXASÀqB@gÁò¨¡b!F`çpü)±±«?QȨUK3ò’MT‰YÙºrjº)lÄf«Od.YC®[úTRZ}¢@ üݾ• ¶¿ha‘ÍIœ°œ¨Ç©?ʤ‡L1s‚=ûÔ‘Xlè1Pê ßgF~výj­ìeU‚œ³ÅV½B¶œ’ˆ¶—·Ý$úŠÎJ‡¡9¬å‚T<‚FkM‡Ê·oR¸kØÛ!‡\€úÖÅœ„úhõM„|¸äÖ˶û| O¥i3`TXåä—9Þr?•s·N^âYVlƒíÒ±. yärs–â¬:fªàà(#ëŠÐ¼‰Ž™nH ƒð«×HMœYÚ£«•b›iëëíT6‘”œp=꘤`:ûÓc¶ ‹‡Ë=*K[&?>Brà ê)ööæJrYx•,À$<œ³ôÇaR݆rd»ƒÐT—bŒ(æFííRÚ!g2°Â…oD´bæêA…肬iVäfgÏ )¾[d¬®X)â«ÜC2ÎÑÌå‚·éƒPÈ’ %$•?¡«.ßîÖ¾œû­U[9N hÚ±hn£­Cz7Gw-œ~ŸâQ`d>J¥¬¸eŽ>à“QJì;cõ¬IM½«8S…M Û ‚¯iQÇö€ò}ØÆà* ÑGÖ’i*ÝIà(õ©¯®š2§<àëRÝNw.Þ†«É¸ò™ ‚Až?‹Ö©4`º©ˆÈw­Td‚ùeÁ\œU¸_-b)·øH­kk»MÂ0FkBí6ù{;Ӷ¤ÎsŠ6X£†ù°H9#N l®Ï\ò(‡Ê#9”ÍRê"qc$ä‘éQ_ÍÝ‘à{Š©‚íµG.p îkÌó*/W8Ï ¬Ût2Ì®æçéO¹9Ÿhè€Tú¤¢[í©÷#P€û ~¡/›vJ}ÕE3iÉÉî2=ê²ç¦~£Þ¢B~îzš°¨8Ý€Ö´ìà Ë¿_Zѵˆ ô©VÚHéÓŠÙŽ»|²AéÅheHÛ·#•YXy;[‘œþÖ)¹&ÔÆÇ€Ãò¬ã?î6·@Aϰ¥–Exƒ!8𦽒6µŒÇÂÉó¥IrãÉ@½šŠ2‚gXwTSƒŠdd3 TWÚŠÚ˜ÁûÇæÍ6òùmö(ûÙÜ›st¶ì‹Ðž†®Dþ~I?0þ¯ÙÊn÷o?0j·ùàç¨*;…HÕ²¼ÿ:¯¨C*Á—æÏõÜhˆÄŽsQ®Å‹%~rߥTˆ"Ã’2åÕa`ãæô«·Eã­lY°TP# ¸É5¥nFÀ¡µuå‰lçXÚ•ëù“¡l);xô—}vÁ¦\àT ¼Iˆˆ±Ö³c‘e`™êj”R,²*“[ ìæX7òÿJÚ’I$jϼ8ü«UÙ¤W„¶p¼S>äë8U#ñâ Uò®Ä$áQ€'õ¨î7[5”}œã;·g?Ê«™ÇÙÀÝ»$Ôvè•G]ÜÒºy—â,ä(çè?úæ§6Æ}`[‚Y#·Ðñ©©Ïq 'åÅej¼×«“‘ŠÌ¿æ™ç§ZÙ³ ‚8äl2¹­?+:m¤qõ­[<‰3`ãóâ­ÜGæFéíZ„t»v«wq "=Ïj¡Èû±Ç5‹ÍåÉØâ³býÔ»[±«m#Ðcœp}«E®$†)-Hù‡ }ªãLÉ@xaÀ5« hà\¶ãÞµÎÞ†.#9<šÃ¼]S®Nj”¶Ò[O2FAùÔ Á2zUsÁ:úk§³P°´äsÑ*Þ°Aœ—ÜmZÜ´-žáúž  ÈesÎÜ(÷íPÚYN[n{ÿúª>´Žsǘb)ï6àpµA4F$ùˆÎr0jC\‘r*Å’-§#ç”’IôÎ+sD„ cvÜË9$“é“ZºdA`ó2KóV+F­ÑZk€Tî¸4ŒÒ{ⳚâçævA\”Ò5Í×ÍÑX¨Ås²³\\ôniÒ7– ÷jkerƒÖ˜I_”.}}êA·@€;~1ޤUë[)ïÇ;c€ã'×z Y¯æÂEÅ?É[`6å‡ò5'ÙRÍ•—3Øô§ù hÁ€ ŽœÑ!ÄâUëŽOô¦ÍpñÞ¤ùY¹úÓe™£¹i—¿øUTWv «ÃœUá’fW!¹ãÞ©ÇÍ.u98«ööæ"YػҷôÝ0Zþöc¹ÏAéZö6+n»äåéUŽ<ÙTcïþµ‰rA½Ÿn1æž¹5•0Ýs6Ücyéõ§ #WïûÇ>¾•5¬6¶ñç—ýëŸåúTÓ <Ÿ¾´d“-ß°ª…·¾OzªÄ³óMáœÎ{{¿Ê…qž‡“ô¥UòÝ:š}¶dváýªÞ—šà±8E<±«:|fI‹Ÿº:Õ¾œõѮЀƒ‘ë[XG9ªÒºù¡„šÁ¿¸W¼`1´ È»œ†ÇÝ¢|¸òJî>ÕG¼ë½©¨™ ‘œ¨Ïµ2Có*º?Z’Böº?Z{°Uûµd&؆Fâ{VŒpl·fÕÅ‹lc#æ"¨ßJ–òAÈ'Ò²õVÞvXÆc&¨^ȰÊU"ª$²J7£çiüª¢Ë#|êü©ªË3·Î­È5¯auç¦Ù8v=ëI¿1yr$^0{ŠØ°ºǵŽv=è¹€brjJÕ|ÖeùrÕÜy#¦§†ÝåžíÅ+fVˆ–‘qôÅ.7”õqT'‡kAàÖdñ‘ëÅgÍO\TFÝî6 ‘Ôâšmd¹pI㨦ý™æq´Z“Æ#¶¼(À?Öµu8„:jDœr8­+äò­WÅV`K 9HûÖ+rËœã8¬¶Ë°ïI.ò :~ñð Ù=iæ9$’4ÁóíÙ§ÞYR3÷œô­PˆtQŠê¢‰a‰"Oº€-o¢EQÑF-<ô¥¦»L޵áo!‚1ã5Æï%‚œÅT·² 8i~làùÖ-Ž•æ£“61È=+.ÓNŒÛðÀôõ©ÖŒl=*âiÛ…–bý:Õµ²ŠæIóJ©4²ÉrÉõ@:Ö²în'–æE„²GíÐVtóO$îœ ôíR[ŸÝ–ŸæS÷FzÔÖ/Q—ºÁ"g­Olè‘–¸ùÿº3S:,Ê»~R `U»È£»UhP6Ô÷1%ƒt¨ž)Ù·­S¶’X®|•–õõªöîñÏ娵Z‘Øf5R\Ž j^NéÀ™6ýãéÞ¯\Jë FÍŽIôª‘FúüÕ€ªàžüÖ:­Œñœšs6RýM#M)cÐ l’dÜ~”Ö!Tž€S)µ$©² z|ŠŸ­]¼‹ÉݧÊU>ç'5rò?.‚T-If?ÑU¿¼r~•¥¤BLI1Ë’OÓ8þ•wNŒ%„mާq¥‘¼¯‘'¯°¨.®þϺ([ïõö¨®.L;£ŒõªØU_˜úœzÖS g$ç¯Ö³ä’I«žT± ×ä5»£Ç¶ výïþ«b©%¡b9aÍPˆÊ:ðOãÚ²acç/¦æNQ‰·J3õüÎj Â€zã5Ò¢â \ ÙEÀ¸¬MmÂ^u®gÄMM‡bùV°B_0õùV5›7žT9\“ƒXêìààVJÊêNÓŽke `%èWƒŠ»m1ÈlàŽâ¯YÎ[æÏ"´ÃÁ¹ØüÜ}Em|ËRÒ1ŽÓµk 7À 7Þ§ÆÜnéØT6ÔiƒÑM>6Ânn;Q²+‹Ëdgò¨ ~|åS“¸ ˆ šVŸš¦’xí‘UâzV®¯áÓ£XáPXŽqÖ¦šò+5U@ =j¤³yŸ;1 éX×wfvÞÌqéY—7Fc»'ØT­òÅÏÌ~~JWSFÞëK"ì;õ§+ùב`pªXš»¦0¸Õ"n¡±Ï¯j·bD·Áº…Z¸zÖõjRQE4Çùcv¦‘Æ^)Œ®{U]1I¸àš‚Ì8àÕ{éiŽ5û½Z¨kWÌÀÁ¨~fªZÙ$GªpZ²5M]Ô›{|–xëYWzƒmha³wâ³nõÌP€7cq«–«3Ç]ÌTmÍImms>ÒŸ¶EM•* *Ð`R=òã(8ÛÖ¶¤­íDóÝÀ ëþ5©,f ¯€Ê01Q[ o”€n½UÓ-äfˈ7ƒßÖ ±…Î%—î¨Ü)ÓLç8áUCúö§jWRÊŽUB¢KúçŒRßÎÌŒ@ £‚Þµqóg’+#<ç=k0žäÒŒ3ýÑJÊ” Št™_s}ÑúÕ½2×Μ4œ"óVôû}òï`/4’¹¹Ÿbÿ«N>¦y3j7»b‰~U¥žC{u„» ¶ì „{½l]È–:nÎ G½hÝH¶¶x¸QT]˜ƒêÝë›fi õnõ†Ìdcêiï,YU,ÛBäöÅ_kF6ÌárÌ2IôqíÉ›$St¹OÙvH'?Z›J¹òôóR7õíSXË‹O/¸¯j„FþrŒwÛU"þتìZ¯·Ú—A­Qœ{âºUû£=…lŒàf°¤U8a3L úÕXa2K·®9©R<ìÃíVãµc37¥Y[v󉡿¢SŽ›©²\…_*UpAo_Z%ŸŽ!…Æ?ÆŸòãéÀ5bÅ<¨¼À0êjkeò£ ކ¡šVysÐÕk©¥»Ÿo,Iâ žG¹›hçŸÊ’@ÊøÈ!1ó{ûTrÄc›nF±¿ÔšŒÅ²P8 8¬”¢¨É\IëšÚš1on»TÎzäsZr§—¦?…R†/³ÈÛyc‹0³èxýk9Ë$„ÔÒ•ó¯cÅ[óT̲0x5?˜<ÕCV£J¹ElÚ\,ñäu«J D‹šŽöÜ\Û4L3ž”ÍJßíVo=ª;èųFF}+×L¸µ¹gäÎ+–Ož ‰*@¬,e‚Rp@«‘)iòÜïSÁyÆzš± y›$uëZ¶Cµ=x­)d[O^*ó¶È6Šg’ÂAă ThBX8ä ¬Ñ2ż8cTQ{gŒþuIWòs_ÿÙÿØÿÀððÿÚ ?Ù_Ÿ“ÐUËd/´BÖ¬ »i#Ó¤r”Š–òVE1"•SÇ#­:áÊ€€px¨e]­éÉ5‘¨.&QÐç5›{Ä‹ê)Ãàò ÕG8aß5ZL‡ÔTöê]Û«9ÿ?ηü:›lCÕÜÖÆŠ›,·âjuÎâêUæ«ëlZéWº ‡UbÒ…îµY7È·r1Øâªiì>ß™Ê+ôâ ´oô´2}Ñš”8˜’™Ø¹U¹nÌŽÊt§÷«(™˜¸Mn‹´¿V=Í_Ó"ŒÁ湘õ5nÍÄ«æžbBsƒŸj•¬áb[n±§›xÛ-Žj&À”Á±Y·G{´tSÞ©ÊwXì G/ß$sÆ+>ïýs¹Jç™ ©­˜-ªÓµ§Ê©¤ÄW²šÓ´p¶•ìµPI¶& ò’3šÄ‘™UÈsÎ}k2F`Á»ÒZƒÊÙVR­ŸZ4ÖòîÆ[*êT_OÖ›`ågå‰ I:¼À¹ËXóŽ:Õ»‹i¥_9£òÕÀÇZµ<"™ l8÷¦#~àÜ5 É‹6^Üf£ó6Û•íš-ˆkµ¹æ$‰54 Ó JM7÷—¡O@¤Õ˜NÛ‰c<(ùÁ­;Wò¯.#<*þñO·z¿ìžUì¿:ÕrÆâUŒ`IÀíƒYáÞúèF¸%°;T÷µÔû É8¢bB?å™àÕ{™<Pðj ‰Jœ’¦¦w[ # <©úU¦¹mL¥»¸ò„FJ˜Îoˆ‰°[ø*¬$èc6GÖ©,fÞåw Ã~µÆ`¸är¼Õ˜egÔ$ü…x¡§ÝùšËîådÈõ«vW>f Ù?+ ­Vq»ƒyl-V5M.&&t!1÷K}a“(ùHàš¯4G´xl†‘-¬Ð°(Äí9 +9í¤ˆæ6È^Aô«)0‘QXgpýjë_¯-xe qëVן±u8ïPÛ*ÞYsÑ£ÓÈ‚ÚîLÿË-¡~´Û2!‚æLÿ1MØc=q×õª8þýj’®I+&ùO+SD?{•ê*hFdùzVÕ‚¸ü u5¿«Þc'µlG"§ ¦×¤qè}i¿5ìÊä[ƒêi ‡ F#^†£›oÚ¯½cjMéÆp¼dÖ]áStqÎ*FÆ%[$ ­( ÜEA( ÝzUÛL}’<ð1“]&“µ4˜IáB’kzÇ azmÍU¹¸-!P=« S»ûEÓ°¬kû£-ÃÝ? „–—iRB”ŸïUubÌ$/CïQFÅœcÓ5j〨¡@êjíä‚Fƒdœu5jåÄj¨ƒMLŠIƒZ¶ÊN„ƒž+F‹XˆïR•y~à"­ƒéPȸ›>ÃùÖV§ú`#ºŠ¡x™ŸŽê*)IWPzu¬Ë¬¬œö¬ûŸ–O¥>Ó æB:gŒûÕý]«5°#“•«š[¯F;f‹‚ì¦5„•îiu8å‘<¨­ŽÕêØ§_$’'—|zÔ–ÅeV˜¯O­C¤Y˜¯CÜ!Oöj‡M´òg*‘ŽŸZ±5Ái–pÌs’{U뻳5Ò[Z°g*I' «w>lâXG5 M¶B’È`Ö²wæxÜ);°@¬ýÅddlg8¦Bv]K¸`,lF>´Û7û5ìŒãQ‡çMµo³ÝJÄq´Š–ñ‚Eæ/ñ¦Áô<Õ½JC "eˆ'jÅü…!óûêAh˸C.Ãç?ݦi ‘åÄ2ÎûStÑ•*ƒ%ºÓ•Iv^ÁˆÉ5AÔùŒ¼ü¬G5JE"VðqÍ4ef‰—8GPXôÁ¥´*ö 2B¬‹¹¥-©òï"ppð~•jñwHŒ§:{V–´VK¥1c¦Þ;ÕýOkÌ9㟒€8t9Åd10aÁVÍf+´Sî¬ iÝ8dœ×ò®‹Z¸"Ñ: É­½RB-”tÍ6ÞbYQ——¯½WÒ̓ˑ~YT¯â*-=¼ÂC/Êã­V‰vI;áùWëšÌ+åM0nªJ¨5žWÊšQÜ£ð©7~éÈà³ñKæ~é½Y©|ÏÝ1îÆ˜\_=°qQnäŸÂ¡ Îi4(do›q*»o“ ”Œî8vü¨|λªhŸ!bÁÒ´tõ2<Ž¿»€{ÕÛ@'%ˆù{U¢p¤ŽÞ•¡pâ(†0£­Lû!b0+=ÛtíƒÈP+“•÷ÎÇ<×=+î¸&’tc#³0äʉcfäŒqD‘–“¯j³,9Á ZÏ1´Ðà‰¾û& ÿõëNI>ϦD‡ïªð¨móÊHPp­d"¦GÈç¥eªpdZ[tJ†é‘ŠX@ ¾ßãN‹è NHb@IþT\I¼“ž‚›q&â~•j~Íþ-£ùWEggZ§ñÖä~ÉŽ åO‘¼µ$Œäâ¬]Êmí‹÷è*Yäòb-Þ«£»HK¤síXË,“\nq’Ì9ö¬õv–}ÍüL?*}Ôd€E.³kå¸qÊ7 Óu(6Ẇª›ŠHýÐy5™ Áó€&¨C'—(nƒ<Ö’ü‹’ÄŽ¼šëSd0î.JõÉ5Ñ&Øâ »Œf¡r$9Î¥f]L·.XÒ©Ï •‰åô¨­¶ócÆ[ ÞªXûJ¼\¹8÷^ШŸròÇŽh¹ I›pØ`iº–ÂH Œ‘ô&›}„™o=M6å£H˜Ú@ýj¶Gùâ&'ÜÔW,Œ7G÷zïM‘<ç¶·S€¨ ü8©Ö%­¼mò¬@·û5(í’CŸ•PV!·ŽÊ)IËû ×X#Ólæ’>¡Kgߢ#K+iG!I^ÁfÀn½3Ísa·rFâKV;˜³NM+À 4à3pGåô§ý™Xi‚“Ωxiv“ƒR|³'Σåa÷XTò3ª=HeáXtqS9` H9ïQ\¢µºÌªwt$vÇ̬¡¸Aó0ÃqÅ2â%kTš1œŽi.d,±îçfsùTw72Kq³#Î=ª‰ÞHÑ ÎÂx«V‰¶Þ0ÿ{¨ö­í*Â5pÄ—Ù­:/*Î%aóuZ`EÔ»G\zšÄÔ€„ûz¬«ü}¶LtÍ)?•@Ýô5 Ö˜T²¾?€ùаb:- !¥+>È„n~o¼? ¸$Ùoä¿_¼ \ßåÀcn½E]·„qŒþµ¹§öE!6ûúÖ¥¦<•Àǽs8'‘MÕ9´#žOjKÐLwÏAAI¦ß…8ÈÍs, I nZÀ`RFÏŸïcI3°þ5=¦$’9áÇÛ<Õ‹]®êí÷÷¤wk¹ü¨Æ¿²Ô“I&«{¶%Äcì¢$¯u„»^)×l…Ä#î¯T®­"ăj¢€}ÍCxëæ,``/‚Ã|м¢£-˨ô¨ËHÍžl‰bÙo¥>Öµ]Åð±%¾éÖ‘}¢å¶r~•y›>\ð t—2´|/Ë»¡Çn•»+•(ÆGZCå”þÞõTÏ nw÷ëÞ 2¦Òóz}i¯J‡…eã'#S8V^ù=)îÄÂÄ®«š†é´ær¸+ŸçS^fK&m¼ŠÏF';¹Îw{W2 ëX99"§·>m¨RØ1’§Þ¶ìä7z\h\ƒ *Ãù~•±k!¹±A»>”†Æäî‘Þ›pŒ¼@}Ҧ̭´”ì:T *¥G|©½k29J2•á”å[Ò³ÒB¤>`jy³2yƒq‚1V®¤k¤Yúò;b¬\1¸A(;±Á¨§EhÚ8ΩúâªÉƒF‡ ÔýGaƼ)äÕ‹Dد),zÿ²+oB‹Ê¶–r>ùàÿ²+SJ‹Ë·yO;¿•$óÔ}ÃçÞ¢Ôµ$’aLìhÎ õÍ2úñZ)# uª»GÞ"°ÑŽx¬e|sF:³r[šS“É?z•˜ç$õ©­ t’ÎÐ f´tÐo,î-›æ(<ȿ´4ðדDß6Á”¤¶oõ•¾Æ£±˜ysÚ¹ù%FeÏf?Ò™i( , rX¯±¢a¼ [ç늧̾*¨”¼+Q±Þ»a$jÜ€q]"P}Q¸ox¸ýkœÕãHµ'ÀàŒÖ>¤«é#¸£p/ÇnµOvZªgšiRð8^c¸ÓÕY£ t'æ©#RS ÷sÍA©#=¸ î©/Ñš! xbz¥á;ŒV•¨+µnéE–Ë~é­kE¸Ü~í2kƒ—ÈÇNj†£¨>âAGÕ[ÛÆçW]Ó±Èc ~˜›®%#v¥g×˜Ž´Ù±bÞ3¹³Éõj$]»-ã;˜žqݨ`­¼|“×n’Ò´½ )<Ô¶tÒÈ{|€ÿ?éZþ‡/=ÁsäZÔÐâÈ–sÓ «.±ð{óZ—n-NÜ79íZ,'¸¨Ì$rHP:ZÎ[I# +¡9èj ·dS#ÓÞˆ¿xûÇÝþu&—–a3}ÅÎ þ#O±{ù‡îÔýx=ëYÔ:2°ùHÅ]q¸#ƒÅgJ<»­ž¼þÉ^ÀmnÞ&ìx>ƹËÈÌMqȧBB\~ã¦OÖ¦ÒçXnYîH2~½ªm>Qέ÷~µj |ÇoL(­½=CK4‡‘ÂíŠÖ¶QºF?ÞÛUî!òÜÉ;OÞÅeê– ÆX×1±ä ¡¨Y˜¤2"ü§“ŠjH3#qЊ¥¥Á?7QTÒS8=zŠdãkH ‚ íL˜mb£ø†x÷Á¦Íò1½Z´b`Ú)[š$Ï%‘OÍéë’Mké’-vޱöõ¨ï£>XqòŽãÒ«kö»gB¡ûÃÐÕ}bßj P|§¨¦B¨-ÝÉÀ}k6$_!Ø1ëTcA䳊…˜(9à(ïP1àÔ s‘Ú¬# XalŸ³îzÖ½¤£LhY°|À7ƒØœÖ­´‚Á¢ÈÿYÙ¦²íº|»NF*•Âyw²¢œms‚>µJeÛw"ƒ€¬EDɰ0=S¿ëPÚNO#šˆåIÉéZ?›?÷€®¯M“Ͱ‚CÕ–º;Fßi÷+U¯¾YÑÁÆGëXÞ Âß©õA»ëÿêÅeë -Ò°ôæš;1ã·§Þ¤2••€W Án+fÎåQŠ;pØçÞ¬ ¸dôÍjI,wpÉû»¹®³¡d6z ­qh$ËÇ”=ñÞ±u¼Ð®Ì}嬻ëErÒDõÅVf «¹H'Ž{{~k*L°ùô¬é2FT–.~ÖÉÕ?δ<<ì5A÷YOó«Ú#“vÉü%ó«“ÇæC"úŽ+kRƒí3!ë·#ê+Nö?:ÖDïÔVlM¾5Áû¤qøW'ËCŠç3Æ3Æy© ýåâÆ0êîúv«Z\çQHÊï@ï§j³¦Cç^…#*«óSï¿xÁ8àûSõi|ë®vü¼vÅ?S“̸`cƒý(vù˜÷#ò]Û,Ä÷=j9b{ç­2|”õám1ÍBÌ"£5nòï3ù´õ"­j÷M%Ç’ýßgR¸f˜B åN)-íâ0dÊzzŠ4ý&Kµß!( ÷ïIe¦½Àÿ(ÏçN¹!XòÁ {“ŠR ‹c1­3P …Q÷«(¦+tP9êÒ…~ϥ‹÷5~!äÙDƒ¯ZY"V‰w €)Úª 8·º1Š[øÈPzŠ«ƒg—€¿*ÅŽSä˜rÿ•e¬Ÿ»h@ù~÷åNVù²Ý ¨ÁËr2 DO4`µ–<÷ãñ©ÞV†Å­”ü»‹qß5bIŒ6m œ “QCÈ‹(üj¼K”g |µ^ùY€Ïj³ol¹ºŒöÏjÛÒôµÂÏ*Žœ)­]>Áp²¸çµYIÀ ÔÖ¡Xa‰º*ãš¾V8ã'/zŠ0£&)FÂz{ÖdSˆ‰û4àÆOÞ©¤¡7äIéR,ªxo”ûô5n;Ë{ˆÊKÁ<zTë<3.Ù8'­Pžº lnWÏ_[}šáÔ·¨"±níÄ32ñ·¨4±Æ²Äq#0}*deH8”å1ëƒS" R?Ö©#œ&!žë³ ñI{°ÈxÞ§ÛD÷oåç×ÒŸo]>ÌqëS´)ADà±8­I¬âŠkX mÁ‰8Õ¥%¬qÉ q‚I8õ«]zö­˜2b Ü~•£;@ôâªjLÛ#Œ?5døŠwQ p­É÷¬íjfTXÔðzÔ!38±Tž€â²ÑÈÔйPC·¦j嬿1ÉÎ:f­ÛLT|Çó¢å„°²²àãòj.¥À¨Ý”\H&BéÒ’=ºHܙ٩c"Îxäq’#=³R&ÛiQ˜g¥YeŠå#èk[Ê·Õ ´Œt"¯†öØÁ*¸VåzÀƒÛšÆòÝ!Þ¤: †õŸå²&PîQ}©öÎ<ç¿‹çwE”<²ÛÉÔüëüYÓ$Ïõ<Š}ÃËónQü©õ)nmÈ–>b<ÅK{$Ðè2ÅRf7(J»OÕ‡<í88Ú*Éžf›pTô«6wÐE7.:ûŠÚÑïÅÄIk0Ì }À­M6ì\D!“ïùŠŠî%†UxÎÌŒ;ÕZÕ-§V‹åÜ9P=ÍUÔmÖN7v§ÁW#|£‘QYÛ¢KæJß(ä e´ ’àE6CûÌ/L桹ÞƒåÎEArAÒ’Û›†UQ’k¦áð0:Ó^vu6¦}j½NIF­…O­Es~ì›àzÓ#B^úÕ“2`u'§Ö©Ä™|u5$·Z<À½h=ûC ˆ c§¹«¯xcMƒ‚8« (dR>ö+ZÞáÝ;9^EhE*¼`ÿöùŠNwËÔ4õFXجKb³ï¬Àµ2!ƒ“PZ,Ò/b„7çT,mÍ̲¨è¨KþuNÎ=äQ÷@É©‚(HþQÈÞ›#ˆDãQ!‰òŸZKÊÉ˪úÕ½1»L±Â©>õcJÜÓ©f'𻸿º ¸œÖÀëÍWÔW÷!½¬o¦BIøVf¶¹Ej«Éèk {V@Ïj‘”‡Vìx©”ð?ΧU zR M³¤ŽsþEMfê8ÉÎHÇÖ¦‰spˆOR1QÜîyÙx0¸õã?ÖQ™ïN—òqíMÔË/M˜OÊ­YIºÕH# zØÐåÙ¡Áˆ?ZÓÓ$O £$qP]#Û̳#¤Gn9¬íVÒK)Tc±”úŠ©¨Å%´¢D'ku֚ķ`ã ê¤S<¥Ä_yzÞªÇ3C"·8ÿ&¯FâdYW•ašéƒ‹»eš" ºäZÝÈš‘9 ½*†òKœwk”‘‰f sŽ>µÏJß;p 1Œ–°‹¥ÃqƒRÃ$¶[.“¹ };Ô»Ú¸úý*ÔìÈŽ£ ~U§¬H¯öiññäóõ­ M0ÉÜ­524¤ü‘ä‘ýê«oM ÎXyqqýê¯ 4‘4Û¾UíQïD™wAž•Iß?>sžžÕNG–= >гJ eDj>v=XÖ†ŽŽnŠUbŒ’íW´µc'˜0±¡;É¢åüÉG—ƒµ{w¨µ9Öâì˜yP0­G2Ëuû¿º;Šl²ÈÈàT2r:‘íQÈ{ã­UŸr/^N l™ ž´ÉE<õ¬9ñæ„àž*„Ÿ|‘Y²ÞžzÔÖòùÀ¬Ÿ}O Oă ÷4‡  tŒÈ~Rr£“þ±$¨FÐ8Ÿzß’Uè;u¨‰°«´v«[Ã%åÈHÆ3úUXbk©¶¯¤BÌQ[,¿¦8©-íñtbŒ–dôìG,‘;"œ²Ó’Ícc=Ë䃞M]ƒLŽûeóð8>§¥Y†Åc>å»ð*Y°­’úRÝÊa¸ÃñþqOžA»xÀéŠY&Ãm<‚qÅ6âôÈÛñL–çÌ%;0*-¿ebÈ0 …U¬ eR«"…&£Pm2Up­G¶)Ùd º}ª™ 4¥·cš¨Ê³9l⦀…‘·à/E>µIhã»BÆÕÝ8¤sÇ)«²~QøÖär‰IÚÑÞ´ÕÃtzÔW¿ñêÞ½«?Ä5˜ö5OWµªQòœW:ŸxVu«;мmŒ¯ñŸJ¹ «c(>÷µ\@Fª± ç íg^[:JH©-¶ªÜÀÈçŽp¡u¤ÙêJ†8][$c5 ÆÀò*¾ÖßœWE6Ø¡U9Üü€; Ô¹E‚òß;òuU­Û!2~fè> 0QÀ# =êm6ãìâi±‚S õ©leò£’@9+…¥Ó¢0ÂÒÊ@,3“Ú­èP­´mqpêø\úu«\BÚYXo~yíO¿O:׆AëRëãͰF 6‡í_çµV ÆïéUÞr‚ $àXfwgçsàYFgy0 f8§¶Ý¼ÉWhì½ëWKÓdg\.Ð:/sZVN[͘cÑ}jiˆxëéVõLÆ5€0O¥OtŸ ì?*­,1ˆÕFÐÙèkx#UP¤ÏJΚ@ ô§8ØøØ[Á=1Þ¥RE!KŒÓÞ¥XöH03Ó¥XYå[Ks*€Œ}+IeEÚÀ4çŒISÐÓ®íÖî¹Ï¥Â'‹hª&ÚA6à×<úl«9Húž€V;X8œ…8îMYHÔÂcSßy«R+hßNx`Ëûì{ւŸb1D3žXÖz¾àŽ㟭s¤“†ÇoçXmsŽ•,§ä†BÜ(OÒ¦›˜¡“µ Ѽ"÷Øm_sPÉ ’àˆº1©Q’Ù–6ûd³~5ktv!i ÍéíV·GhV5Ã9ŸzŒBÑéÿ1ÃGÔÓæ¢ÐT1ùš_0} ,Ñô¤á‹î¦­±¹¶R#)#5VÞÄÜZ e8ɨa´2Û¬›¶2œf¥¸••b\<1kRº& {tpÍŒ; šúà˜á…X# i­"Œ°ªM"‚Zª²2óS$È2wl9À¤ÛûÁ¸îÛé@_œµVîCyïœâ’v(ž‡­6á™PÅg­ïA"ò éUVã¦ñÞªÔ¿jR»]Aÿj¥óÁ]¬§yÁÐ+€E?ÊLå~n‡µ(DrŒýiË kÊóÜæ´U ÃïXËdò‘Ka:—ŽÝŽAc´ÒZÊ ,$ç=*9å È9É8P*;ùÿz gƒ…›u(ó(=xÅO¡”Îz~5~Öì2™ǽ[·¸^¢‘üÒÌ8U=_ýš.EÉ’UÀTsÌ¿ìúRL&,ÃhÚzµ B„!ãÒ¡û_Øàu„ƒèjŒÎmâ*‡'Þ©ÆY":a$o»ééY>T‘۬θGb1íÚ³Ln‰˜pÄÓö |„Ùò³çÜóO·f–Þ2>Rß9§À‹,°¡.rjÝÓˆá0â¶u‰…¥¢Ã ¿ô­=Faol±®î? £q82:Ž;ð+ {†v Ê=+"k‡‘Õ&¯Û‡{u2 ¯Îº $}9 À¬˜üÅlÚÆÍf›ÆT/žqæ©ZÉùMØ_ùè þ5@nÿ{"‘~BIçk`ŸÀÔ*Æ&Q¸¨1Àò¦˜ˆKƒ*žä“ÍDŠLäÏÕ2‡“>¹©\…‰Õ'qR{Uö&ê8@‘Ž„ñŠºGÚ1¸ð~íN#àŽ?­%üª„ÛCÆÐ6òEVòPc’_-cŽUŸ·=(bKx¦RCÓž”J#X£”`¾?*‡qÀNsúÕ“ŒžõS,H±¡Á‚w }N±àœ±52¨ã“‘T.¤F)œr~Vª¼®1ÈÜçƒéUåcr ϳncdǘUI”ŽÙ¢©\.:r=©å} \çjáP­\…±…¦¦?0ÆãÁ«öö»Ü,Ÿ.ãjä6û˜oÏzŽæò4$lc‚j-GPHÐÛ[žÁ>õõòF¾L'êjµ´O;â?•;·­Q°³’ò`ª\äµQ²³{©s‚õ5 ÀB‹ _)5»9[VÒßÛïÚ“m¬K_xõ5XŒHÍÉ=zÖG-pÇðZÍùžbO=±RƘKGjÒ² æ Á^Ư[…ÉÛµK¹Iç£VݑЯgU‡ed#³ ͉š!ÀùöñõÍsJï€ù×§Ö°ƒ´2Ì:~ur2aÙ²Þ„vïZ–Væã³e²0ûýhÚBe!Ù²sÀöïQB{2gnÆùOâj³ÔȧSðàDTPåfpݯWd;c ³nܰKr€îfTzšÓ˜âÉaòŠ€ yÇ™•Ú€•õ¬´¶ón›Î&2‰¸®:TÖ ó·›òíÛëR>×Râ6\T²¬rª+€}»Så $xo¸W«FžYÁràd©™~L¼±`9Z£œ÷ÇJŽdšæ~¤aGÖp·ÊŽríKp²Þ\ÎéS$0Ùå˜nl…ýYX-´Íï(J*©ÿtëSˆ`ÓÕ™†çjÀRÅtÆåŒ‡xÔYjÎÚy؈Øc ¤µÔZKÂd # ;Q2bêÜ\¿Ð kÛãS†!‚|ÂßP9þ”æóΪΛK•9\ñíJK°9SÛÒ¢ÜÌ:äzT@’84¸ÚrÎ0¸Úš–#å¶òÿp¡zÔñŸ-‹³coLSXq$©Èÿ¯K7–÷RIJ~¹Å$¡åÞ2HÇzM”ªã’I¦ªntç4*\vëI¸)È î%µ=@R1ƒ¸œÓ”<`ÔL™%9#®)’H ’{Ó$•FH¬»ØöÉ¿ª05Jé6¾áÊž†©Ü.Ÿá4–SÂåOzKy9yOó„oºjÁ·A'È:úT¦åÏ¥H`ýçËÈ4ÂøÛvŽ) cj7%{S·ãzŠÜ[Ì.ÊEkéöì$2:€qÅkYÂCaÚ¬ä*è3ZSìŠÜÌÃî>µvB©˜G qU,­ÑŽYsŽy¬m2À\Í™@ù¿Z˰µK¹Æ@çõ«Žé àÀV¼×ö ²<ô¤òCh˜\ôªÌáÏ'ßoº=«2Y¿vÓÈs$‡íT¤—äi\å› ¦Y©yŒŒ1Ž‚¦Ña-rfqÓ þ´ý6"e20éS6ã‘€W8«„Ô0Úsõ©ÏËtàŒdRí.>Z™Ð´D޹â¤`Y2:Õ9ÉvSvÀTdâ±n 2_•ÎÁԚ˚2ì®p:Ÿzškø·€üügŽ•£%ʘæ¯[Ê[RÔ~³üŽïްE7PÀžVQ…wàR^àK#/ÝcÀ¨˜VU…¿ÞQP¸!#9õUPºáPýiò!,¡F1ŸZ•¡mÀ)Ç®jV…³€})|±ón|ùT±@¼î| ’(xùš‘ÃŒ¨-Ðô÷Œ €žÃ½=†F9ªó¸IB‚:rjc…éÖ ’@´zu¬û’ÐÂç¦qƒU&%ûÕ) DosL·H†9ÊÒFâEòßøic"Hö7QQù ØeÀ<ƒL14Rm#Á¨%_-°Ã±«Íö|ž•Øù9<0èjÈsöqžt5F6ie$Ÿ˜UPï|“ÍWŒîrIç5Ö¢1àð½ë¬³‰ÈùøNõÓ[£cæ8£uyßËB|±×=ê ’kùÌ1ä©Á5 ¢[©Lqœ êjW‘ M«ÉéN–êZ°Ò7 iÒMœF4ûý W/–yv?•ey†YêÌk?Ì2H\ÒO ÏÍØûT¯´H s¥HØ –ä ~žÂQ$¿ÂN5«¢®è^vèí…«úp>Iÿ⥙wH„žŸJ[àæ2Ç>–àfu Ž˜¦K8"s޵^êÿ.°ÁÐu#Ö¡–ï.±DsŽ´“íY›¨JMD¬S#63åQvÂ9Cd üéÖŠŠY•-ަьjŽv€Äõ5&›°F[$õ«9ükIÐ:ØÁïWCƒ>µå;õqó,§LÖp3XŒçzÈvý3YpÆlµ!»•“Š–öR塌ão,¥?]¾ÞÆÖ"0¼¹¥Õ®ƒb ãïl*Í&{ g>•JÀn 8\ÇÚ«XŒÊ û¹æ¬ªû†67«]àŒ|èA‰øÈíZ-õR ?zªröwÃ+g†N+&F1»[I‚§8#ÛšÏv(íò Ón]|¥ò†ÕSƒõ¦^H b0T'ZŽíÕ¡O/€½iÁ|¸‹ ‰g÷Í,E`µ8½”ø :2–öäõwæ–2¦vþN=x¥·GpÓ·TîE8ŽF•ºH²—B¥ASÓÛŠh™¤R¬ r="ÌdHÎM(€ê>A×4äWR <ÓÑJØù;Ðê¹b‹òžõ#…Ë^ 9€ÎTR·#Ž;šiöÀ“œÒ¢2pìžÔß3“Èß3ƒÐ¦ó‚ H@bw‚j“*cpœš®òmaÞ¢ÔBý™Jœð)·ª¢5(sòŒÔwÁBŒÕrgP£ ·ÿ®ªÃ“(gžj¼'÷€õ¡3¦Å2À>‚­Jࢗ9ÂãéV%Û"#9튯w7î“Ë8Q¢¸~ïNi“¿Èò:S,bïŒY& œ Õ‘}¼Ý¸Ûç[°È©-~u!¿„UÛw^KsÈÀÅY·e{׊±(Î{W@ÒFˆX°Â×P÷¶ñÃ$›†·­o›˜’6mÃåª$ùŒÒ¿å\ÕÌÍq;Îý[·µaÜHg•¥n‡¥5ÎÑ€9¥BÃQúT, ÀfÙ ™,:-lZ[yVÀÊ¥Ÿ ëZ¶ð˜íÁeˆÈärä‘pÊ¼ŠžÖSm“J¸etþ•,L`G‘×t©<Îì^PAþþµuy-ÌÌòç¯Ê•™qu$ò_•jŪ,~l‹—>¾•«¢éñ­¿Ÿ2†w ÕtŽI . Î*‘Ý£$äWb£ £Øf»¿(çºÐ0¨¨›y#½g].û†pËÜôRuÝ#6:wªvЛ†—!"b[ÜÖ^›`o%ØÍ„Œåýù¬û+Sq. ÀBrkEßbœ1…½q(¶¶*£ŒakLâNÞƒ…]¥v“f훹Þ±^êBûwlÇsY¯;î ÷xÏ% }MQ‘°ÍÏÔÕ)«riÊY¼Ì~yNö«ù:sJØó. îŒÕ€|«!ûòñøSá@Άª/OZ¨£±çKP¸)œgÿ¯L¶.j9ß`ªö—l «ž Ê–ÚrRx'šX¦# {ÕÕu¹rH ž*­Â°™²rJ©>|æî O§#¤|qRÚ¡ØÌ*KT;Kv¥¸ÜÖ§ € äÃÓ½,¤´xé´õ¦YJá©ïIlí¼(=é¶ÎrzTúœ{Ÿz.yÝŠ–ùs))ÐüÔëµÄ凯5 †VrP¸ÁúÔv™ñœÔ–ÇŒt=kBFÄÍòð?Z²í‰ ÛÀ«gº}+>ê¿pù•»UY£ù²9«Kã‘ÐÔ°„µMÒýöè=©è+—êièÃ}ãRC$eAO¼I)/R8©buÏMlº‰®V&áA%ªô£Í¸}ê¹.d˜GØ}êy*Óì#3z°Ò•è¸?DÜÈ@àc­%º‡¸ägoÌMYÒmMÍÙ'¢|ÄÔÚm¿p[øR­<‰,y­›‰â±œîféÅiÍ,VØ/ɪ÷3yÑœ)ïíÞ²õKïµ òÆŽ P¿»3 0)°F¬<ùXž? ŽÆÝXyÒŸ˜·ËH¯›'Þ4טÉ/“v*ä‘VŒï#ù0çËEÉ"¬™YÏ—B 䊎ܤdf³3ëU-Cpdfä±5Z܈å.Ç“ÀÍVÔl–dQÔ«|Øïš¯}n²:ã’æÇ|Ô7,Œ¸ìy«^JFä b´)ØQŒЏ±*H­pö­°p€ú Ò Ÿj¯#–Ï¥fÜJdgåÏAU&ràåO†!â¿ÇÎ*ͨ¶F+ÿ-9Á©­ «ãw4²¸ 7‚2p1Þ™¨8òG˜çۦ Ã†©ïùÙ˜rŠçžL±'®x¬iælúÓf W rÄ lüGñîj[¥ÀHWPX½9)åP*ÅÙÎÔêUYAUÀ8ùÕ`„çóªû88ª“Æ—1S–ÆIô§L‹2§'ÓeU™@S–ÅPʯ´Çz¨#pØôªØ`OµYò–UÜøÔÛ<Åç®@§ù{À8ëÇãSÛÆaŒíù@ýjkt) ãƒøÔÐÆU û¸¦ˆˆ[¥'”ÎN) W`9=j”¼WcŽš« l“g*Ç!8ûµxídÈõÏ?Ý«L.:™Ð2g®zŠD·Áf$*“œŸóïHàî$(ìi"¶!É' šŠæu@ÍÝ›|uýj9¤ ûÒÉ0N{ô¢ <ØÜñ• ãÚˆŽôb:©¢#¹ú¡;´³36IÜAöªÒ1’MǽU‘˹>¦¬[á±ão­KzUˆp‹–®–¤ì+I^IÎkDrÒ9¦+ÉÞ>êþµp3ô5`3ëSY¡Ug~Ính‘ˆ­Ÿ†‘³øv­]-<¸ n œÒNVHäfû á~µ¤Vâ)ˆÂ>Ÿ¨ï14NääÂÔ$` …bŠÌQ¹„j0>èª*76ÜqRªyÝF;V´+rû6í«°Gç1вБ®Â÷5¬‰´$*€ª2sÞ¯Hc8u®;S»i.‚ƒÀmÃõÄ\ÎÍrèŒ}k“¹¸f»Të[»Ø>ÆõÏ5 ù¡OÖ´•™ƒëš´I)èxÖÄJ&•sZ1¨’B}1S»¹àUÛ‰6Å·» U‰ÀûÍQ 'hïÖ Ž-Ì‹Ÿz,ƒ¿ZŸÐUÑÔUŒãŠ«©M¶5ŒrïȬÍzà$ ûïó¨j³…cþ&æ  DqK»!ÇÔȈÏ8äSa!_'·"’Wo00Ÿ¥,®Y³×¯±fÍgÞ˵eÛÆÇõ¨äm±¾:‚*9jŸÖ³"‘’l†ã=ª´nÂLçŒÕD‘³×µ —…chÆñÎGqWÙ÷B¨PÇqWIFªÊ7œÕ ‹Ò~X€xª“\s„¥W–|p€ajKK–šM’œŽiöó™+ñ’ Ižcm~9Ë©¦3¾n}é’Ë!ç¦y¨ÞWÝÆ1š´“ù¶É¸|ÉÔãï ±æ‰!LŒê}ªÉpÐ Æ õ5žo$=Æz{U1pCûtü* ¹ùÀíœUù]7u%BdëVeuÝÁÈ œTò° ŒðS›3B>dþU^OÞ&{­@ÿ4`á¦Ø;-²ñKiƦ’ÔyŒÄíÇ4ö„nÉã½= Ãg§zR€éúÒàp1OÚ8ö®y!W­]WPAÖ­ ƒ­G³s*|§ëLŠ/5ð:ŠHcóc¦jÔ„Ç?Ä8¿1ûˆ`>q€+^R ·øŽEr6Á´á-øÕED6q lîñî?ýuRôyVê¹í»ñ¨”Vv|tªv¡_{»ã¥W· Á™Ÿ« â$c­lYÚ–)p¦o⥉*1ùÓîd7µM©6Ë)Nsò‘ÏÒzÛm_Üb¹1jÏ©a•R½qÉ5Þà3ƒ‘\¼P3^—ÆqÍkË”%c’ügùþ•¥2yQ¤™ÎþžÕ¥"ùJݹ«öŠ1’ ki*2 !…hØ.cÁ8aÞžÛwõbEX}†^71)Ú\à’EH‹Ž{ššöüÇ©íRF˜ä÷§T´ñÖ²f7P>_È£ð®WV™¥ÔçÏD;á\þ¡1’úPz/ÉVñåYƇï1§¸òôØQŽK18©$,"SÔœÔC«zçQEUAAp˜@äÔƒ€æ¤_¿Þ¨}šK¥›É!”»D6RݤžAÜûµ[Ks†/›îûVR¦Ù`FÓ‚+8.Ù ¸#ÏÀ wd`àŠÒGûđϧj¾Œ6(?ë #š½þíF>b0k9à1\ØäçiªMI ·5XÆVR§½JÈ!ÚØçš¯–A©HØéSÅO*q»©©cE’E=»Ô±¢É('îžµ`Gò6&<¢¦€3Ãj•£fB@åN{V,ð˜ætädç›"m‘—ô¬·B²Æ2kH&c„‘ü 5[eÈCŒñƒWŠð‡ÛšxHã î “J.3ÎGåIˆÔªüÕK‰E¼ž\`nîj \BÛsÖ¡‘ÄOµ5b)EĨaÛÖ¦Gób>£µXWóa'½":ºîžÇÞ‘NW#¯­4`ŒŽÕ´XƇ\çR–ÆìSËc8§Ø¡h޼OãZZj³·½ýëCIˆ²—<i×$É*F8ª]Ro>ò;uo•“ïRÞÉæÝGœ…"’ðpƒ<Ã󿙬¡T„g oOÖ£ÔÁ ¸#õ¨U7–¦1Tí!3ÇAUí¢2n®À"Pß…t6¼6ˆ’Fp+bÙ @ÝjŽ¥x±ÈmŽ2ÉœÖn¹x«!µ89Lš£ª\…“ì纃I¦D¾sNßÄHZ‹D‰þ|œ–È™¥F¡¼Æþ.•K\g†h“nà>µ[^Ìw*ˆw·**¶°Ls"¯)·Š·§\´Ê¤p@Á56™tÌWiÁf¬X\Æ=1ZQ‚Ï­Ëe!I`?Æ´â.M:¦©)hÈž‚‚@=eCöswrów|¯Ò¹ÖͨN÷!°Ï‘ŠÄg7’´ýߌU›¼™—Ÿ/õ¥ÕB‰Qce1ùþ´j o]§÷xàÔ n‚SœìÅA ~e´ògý^çPÃè%lò˜ª×ì3ão5ü¡8è*;Ÿ¸HíÖ©Ø_yS# ÏÌA¤Ó¯šÚá8$cÖ¢°½6Ò¡QžØ©&Aq1y#–9<ô=é÷\ÎÒ4aKóÅ,¨'œ±@¡Žxª×ÙdW\¸“НrKëŒnÝLŸ!U—·5T9q½›žPgw$û„1a»<ÕÔ¦´;G(¿:°ˆeƒ r 6}ªÊ!–"@û½MféM¶L¶ö#ƒUôÕßr%vÆ9ÍCd»¦óôæ–ì‰#Ê‘µ{ûԺ̞|k·8ûúš“Qo25Û÷W½GbybyÝQh‡l­žwt¨ô³‚sÞ®àžsŒVû €K`¸­b3Œž•ÇÜJ÷ÚÏÈIÝ.Õúþ¶k‹•ŸPÕÈ\’òcð®Q¤{ÝWå$üØünÝUê ÅhÆÆ%m¼r+M ;U;å7$‰éþ­xí;üç=…V»&f!\Ó¢òq]ªGz·¥DR`„lR3“V´øÊH£kH.\×BŠ@>õ® *€iiÝij ©HŒ¤C{¿ ŽÕFúðyMy$à{Uk©ò†8ùfàUaÅ&Ì‚íb{ ¸aœ¡`v¬k&uT›äM=dO—?»0= 9a@ì¹ýßÞ§,bXI˜§hlôtçØö¨£r¡Çi¢GÚºÀ £w"£s…f E$мàæ¡À8<•—smäË’§¡ªÓE³•ÎÓÒªKߘ MetÊûdË g-¤Å_ I”ûIŒmóG¥[¸µ* R 2ƒVnmJÊAVQW&ƒ‚TåJƒŠÌh3_½Ž•žba•Áª-(dÆpjì’ k0OÞp3NÃô«NÞM¸ÉÉ~¸«lÂÞÙsÁjKIþÑ×m¥Waÿw¨þtËæÆ7EØ>”Èdóc8 m§^LðDÉ’¸pÊ9ÊŒÓîdxQ£Î|€=qÍIq#B¥AÀÀü)mî„‘¬¬GÊÛ}é"›r«“ш¤Žu1«ž âŸ”•?1l}xþ½h qÃgZp8Žs­5@ H\0ì)a‰Ç#µ5A JŽE:òæ(v6ÓÓïNº©ôàRÝN‰´ÛІÖS2Ùv¨à}ëЌ՗É=*@Ñ—ÄD’:‚iw!l&r:ŒÓšE.uï[+;.îäÕ¨-üÙQ\íC×éV ƒ|€1À4³°llû£…6¡2Ë X¿Õ Ú¾õ5ä¡ÝUȼRB›£|§­_Óm‹@®W(y"­ÙC˜U»´Û¬mU B†íUõYªÆ‹µÔ7î ª„›lÀ³0waiºQa#†Ý…4šy8ö«%¶ŽHãŠØy‡ÑiBã'Ø×%,-¥êà§%Nå¹Èúf¨9*wê®ci°Õ /8$ãë[Ê·Pù±à⢎."ßs¸Vš·åïÔS¢!tÛY›î©íO·-Ç(Vf?*žÂ $#Ì“›¦iðåÚIX¹ zc5-¾[|„Îp=©a䳑Ë1W“•ê+j{b´# ¨Ç^”Ù\"œ1¨®î16)—ˆÐá°Øª¶ïºC3,/ÔÖM„¤È× Ø®Ñ‘Ôš¡k!f2±ár?ŠhæE‘™0§¾j…Ä3(i2·ÞªWJ HË…'ƒS¦"Ór1–]ß\Ö™‰m´ üÒÍï‘WÙ $c‚ËÍ@X'ÍŒ`V@l05–ubê‘K•i²Aö¨.â‘6–ÝÈ5Vî9îaבL¶•›÷gæÏcM…Ù¾N½©‘–f® gD¸sŽ£¿z²¶`Ëû©9àŠ´l÷J<¶Áàš–ævŠÍ¢@W`»¹éÖ¬]NRÓÈA·`'©äÕ‰æ)hci@2}k> ·ÞY˜7¨5Ÿ ø}ÌsëUmæù²ÜÔº› ˜Àä¦*[öóÓÌÀ6qNÔÌ‚LÎER²Èœã²š­oŸ0ã°ªÖ¹óµXÔƒàqÀT×ij+gŠšøÊGcЧ ž[îížj´o´óÓ<Õh\+ŒôÏ5©qˆíÁ²ÇéŽ*äÃl\õ“ùUù¾H=G&«AtYÿÚç•Cù'qPÃ6âiÚœ'ËÞ\´ûØÈÀö2:ö梳l,Š dTp#×ËrDn3ÏZ­¼¤¤‚AÍC¸«ç5b$u®®d‚†B\õÿ Ö¹ŒÀÞYr_½kÌžSlÝóÔò¬ÛœRˆÙÙA«;(ÅLíµDs‚­y¤ò­– fÎ1¸ÖœåıÄsŒj+’FØ·dõcYÚ–èÜB['cTo‰V1äòÔDe\/Ê‹ÐûÕ­2ͦŒ0ùPt5=” $@ãÖšcM n‹¦«Þù±ÜH®Ç ÐÔW&E™Ã1Uom~Ó4rª¸ü*À3̬Üàcðªs¯Ÿ(cÏ©m­£°‰œ³ÇiíW­bŠÒÍ¥bI'oѪå¼imn\œäàzŠè´ó¤`䞘ª³y—W œ– UiwÜÎ;œVbŽ4^ˆ6þ5·< P¤goãZ²Æ±¤jÇãD²ù tŒ*9îþ‚F韜zS&ŸìÊ"OšFçª xåÈËJ‚åZÝHÙ‘—sûTS†Œç.F[Ú™l¸YŽ8Ý=éšrâÖ囦àT{Ól×Ò–õȪÂI¥…˜á¢f#ò9ª&iå‡oX÷=ê§›,‘í꛺U‰ØýÌf0 ãÐ՛˂ñ¬KÌháV.æ.¢1÷T ‰ÁÜPpxª™·¿P/ÍŠÈ{¶º r jßj‰® ؘå§Ò ’s6ôlaAÅ@‘\mPjÜ¥R"1òã ŸZ³&"qÚ«Ø•fu–¨m€ù€î9¨­¶Ê*Ä»&œÃ{ššM’*/# †?íTÓ‘@ª©±mØÉ*ÝênAöj­ö›§¹WhB†ÉuòíRÜ+Àl—äT×9+€~ðª6¤¬€8ª°å\qƒÒªÛ’ sZ1€IÈùr7nõn<ù‡þ•r?™°Ý;ÕY£û-ÔmŸÝçï¢tò.'å$`ú ‰£Ü(?qŸu`b¹`§*3úÒÜÚ˜®s•ýi³[yW ʆÇõ­Ôùî•Ürß5^'̾óÇuhr÷››’MXòËH 7u«ðZ–¸PÇ5v( M‚p*b%ž¸5¡pÑZÛŠ7uç½[”¬ dw5—}pÈ€Ç9ÏNõÎÞLÒeÇ21éíX·Ro%‡.ݪõƒ‡±íú×C¤È‡L€©/#Þ¶lœ5œdq•ýj H86A`¸¬ýz6Xc˜6â_ ŽÜUY ¢Hw7ÍŠFÉPÀçùVI$޽«?wT;:Á¿JÒÓ#ûašx;_ô«öH.–HÏNô¨ÑVÒåÔ®|Åá©éåé·r£ >j|§Òœ…,®$W\–èjÄlB9AÎOj¹á cѯñÕee"~ò¯94ËXËNò·Þ­A¥Àf»’æNÀcêy¨ì¢ó.$™ût§\1dð¤pE3Z%oA?t ÅG©[œŸºEF€½¸ Ìݺb› [´ÀÊNönÞ”F„Ù$Ô+•bŠ6ŒŒûœU¥X…àgŸ­S`T•Z‘cb®3ƒõë@FÁ9Áõ¤ ÝI¨î˜€Y׌(f"MÌ'¡3a‹0ê8®bÙ‹³°<ÉüN+2,äpÁüë&"HŽ€:µgpá†{tÍK¤:úŠtr• ÅIp§†ë9ù”๧|œ¹©ÒC»?9Æ>µ"9Žný? •ÇoÂ’;¨¼“+¨~´‰,~Yvb‘%ËÞàf«^Íö¨V`¿/~Ó™>>SL»s*+ÿ ¨¬³ö†û¸üé–§7º‘úÔv‡?ºãõ«>j‰qÀɧïÁ#¥|çÕih™ß)õQO¾Œ”YÞCƒô«í¾èc~ò¡©µXwF²¯ÞSƒô¨<ÕKyW¹¬È®¼»i¢ç稥ÁHV«±!Œ?Žk ³>M”Q†dúâ¶`! wŠƒPVdPƒ$U r7™áHÆpqǽRÕ¥1ªrE ÞÈFŒ‡^{úþçÙk¦,áÜuç¹ïøS˜,–0AqúS#8¾|åŸ5Pª%º–ûÌõ*¬?7$µ9˜èU‰úÕuF˜Çr~µ ƒ(Ø8#Ÿ­A8ÿFÜzcSJÄôÎ8¨äB#»ñXú]¬†+Ñ·ø3ìsUôëwh.Ón>Pr}Žj­•»5½ÐÛ×'Ò› ,…ræ¡HJã òjºÄÁ”Æif¹1ŠxÉÍ:Iv ÷5.ÿ)BR-ÌsÛ¼d íÍ=fI t n5 •$”ãqªf €ÿÕ[Ëcª˜˜¡^Õ}cAf‘.Áó ·± º¨þsW6©·T£¥6Þˆ&Ñ»#¯ãIb=  äÓ"ËÚùMU»ù 'î±<~5^a³œu5ãglf¥³%­O?:ôü8© ù 8û¦„î‡9É0 ÏJx'5 9QëU&ÈÃPHƒß«ÈiïUàm¯€HŠ ZŠ&*ÅNpiÀ›>ô–Lûп$¹÷«·9’%*IÀüªÌÿ¼AÉ8©åïÞº8‘#Lýç`2krÑ#ø¤p zܶHâAŽY»Ô…¶ŒìÜý±Z/(‰7÷ÈzVš@€»Ÿ°¨ÀÉ//a¾‚ªGU§œr«œÒ XÁYx€ÿõ¨Ý²—ûÝ?:–ÌäãÒ¬èlfR{Tºce˜gµA:ráqƒ†ý1ý*ާŠþU_­T¿@—rߟkÌÌTç(YÐý­¶td9üêm þù±ýʳ7ˇ¯­kß¶wùZÒºèÏÆx¬ë{IeuvªœóX6:dÓÊ®øESœšÉ´°–IŒv¨9«²ºï(IÆ#Š×¼oh‰#zðqÁ"´® É’8"«C0{¨á‘³. •'Š£§È&½%$É‚ÄÅU³It¨ç, µ%×îæ…cO¾pN=j]Pm¼¶HSø${ÓïA[ˆU¥%`Ø&/_z‰Ùdl ÀϽ2F_™[’”%7ÆzqÒ¡Û˜Œˆz auâ ¸;­¶íùTÿúê) xB°áME!& üª:§y©=»¡EPÜŸÄb’çPx7E „’G¸Å2æõ¡&8”zþU W"áv¸Ø?„áúÔ1γ.ÉÕê¤vªë(–LyuÍS½µs9Ú0Ǩ5Zæóˆ üꨛòñŸÖ™o«€½iÆC†#Ö›d0n­^7ŽÄa¶/çšžã÷JÄŒ6ÑǽM6"G=öŠÏ†Y‘üÅ$ãµUŽGVÜÖªÄï»~x«×síET'‘œU™åÀP:žjÜÒm 3ïô¦NßmŒºœ8l¸¦Ê~л‡ Õ…2R.#‚:Š–ÎL¹·ãÍIn›Q†@ÂÇš’Ý6FF@Â~u\ܸ1?ÜííP 1.ÖáECæ•—Ën­"!OñœÔʹ;O9éS¢äàò C=–Ù†T¯©é’ÛmqÆ3ÜTR[(ÀÜSÞ<·UGZVŒu#§zqŒ`“Ú¬Cndù7yk´ÇøjxàßX"íqíO[rí‚ÛF>õlĹ]¸R+NÂ'¬²dGŒóÞµ-ƒ‡n¥/ŸõcÛq­)%óXSÛq«ŽûÛ¿GtØA埯Ҫëˆm–ÝNZNOÒ ÔdòâXAùŸ¯Ò«ÈI’ÀŒÌlÈШî*“nwŒJW  OÌ£ŸÇšeÁ!bV<¢œþ<Ôs’©ç*[N\š·¢ ÝV´±™³íPN Ý?§OQc%üÍž7b¨ß±{¹ éRià 1ê0¸ü«CÃJ3rǶÐ?Z¿¡‰ØõÈ©®.<”ÊüÄÕSQû:Œo'©©ïï*Fy¥‚í';0Cc‘OÓuo3]®M:Êò;‘åŽiθF=T óÚ¦»ˆyœŸj–dÄlO"¹{YZO‰;ÈÏû#ŠåôùÇöêÌIï9>ÇŠç´ù‹kfB~@J×Epºlì!‰ö­ëÁ#Ü'—‡òÈb}«jãsJ¥vþ¨7.Î1ðßZ¤úIdbs“ü‡ëU‚†¹‘Üa~´„’¡prI'ÜuªŒÇhUž¾üÕWb8¥¹b-·]ÙÝêÃgì ç¨qúŒÔï‘hÌzî¬{Ø<Ö2ÂÛ†Õ ¨–Fó#|Œp g\¢¹.ŸAPÚ¬‹“Þ¢XpEC†c­]+Û£g÷ªHÛíšµ @ŸßA]Àxº8â¡™Êd`mQƒøÔ2¶ÒF8¢‘Š£·Z†dûL}HÓ%_98ûÀŒdª&Œxt¨á€¦sÚ›[r; dQö©/cÊ+/$RΙPGÒŸp¹@G^•œ1#¾8 F~i¶œob26â›iÆâyàT÷ɲ’,ª’3íÅMvQ^,…ïìjKµUã$ÔU9³qrëÃj­(óP8ûÃï ¯(ó@q÷‡ *[y]#eŠtr0BJ|NÂ?¥Im39`OÌœÔÈÌ'•©"rAÁåje ›X|ÝñÅH’‚ûJóíÞ¤YA|ÏZ|Œ?”îgëíéK)6©Éni·2*E€r[œVÐV˱ÛÙEjÚ+\ÊŒv€V­º´Î7´t¬dœÕ°‘ªÍŸ—ô­ˆƒž€V|î^ëw¥s7÷&æù¥åÎÓµ`Þ\¯ çÀ©&¤“©pMYR<È$CÁn}ªÊñ$N¾¼Ó±#z5R™ó#’r2jœ¯ûÂIïSÛy§ëøw­]:&‚É®›‚ {gšÑ²ŒÃkæžÁü3P•‰'œ2­dÉ‚Ä÷ÿëæ³¥Ã6{äÓìÛ1õ­m6ònçý+CGSäÈÃŒž´Û×fýÞГíU5Gy&ØTeOZ¯~ZYv2;ÒYÛ°¼i$ÿ–|õ©ô+7Kç•øò—ýjm"ÕÒáå~ª0*ÍÔc‘OVSÊ´u)¼¸eNïUË×Û þ%¬[=8ÄÓJØ%spڔǚͶòƒ?rsZ^xY÷&Bž¾ø«âûmÁxÁ£\UÑu‰ \íã"¥œ1ò}9«·Q«À È~±Õ™”õfÞf‘Â÷«VÒ™Á§å‘ʰ9ÎÖ§ ÊØ ÔªJœM¿‚D‰÷/ Iy ‘¦JðÔÛÈž8ËÁ¨mw4àtùsùTvùi? þTË|ù‡=Í$“!U/r)B¬Tt4Žçy^ƦŠRQ‰ç†"Êv6FAã"ÉòòjÆFÏ¡¤v;¸èinWòªÑݲÊüÈx"¢IÈ|Tö¨Rr ÷OZšVÏú–Z|H±HXÿ«n¦¤Ž1±?u¨<¿™G©%M€•ü(‘6 Žý*HÙw9R06ýi°)Ë9⣷r椙åI£€}©Î»¤WP} HÊLÊê:ðjÄŠZ5#¤ÿ:–U%Aúÿ:eÊž+ ·3õÑhɈžB95Ñiˈ‰=Í,Ͷ?sNÖ'ò­vËõúRê3yvå{µQBÅÈÊ­sk÷ËzVòŽéã>SŸqŸÎ­¨?d‘»¿Î­óä;zQÊs»êTa½ˆõ UB7¸§rçÁ´p + Õ¿qaôBÚÔ[˵QÐ` ¯;¬Lì:`õ¬X+’=8¬‡#yÇz³o—nFûÇk¢°ˆ[éÛ3‡{ ÚµO*Ð(á€ÜjÒI˜(vR5˜Ãe›Ü:¨gÕI†Ø Ì-ëSà yà (Íhi÷‰,îÎEéÞ­ÚÝ#³³ax;Öbjpê´Av²‚SÜt5Ÿ6§¢åUv²ýßpj›_Ç|åW‚‡®Ãbw”™©í,ÖWo0€ ð3Ö§‚Ø9;Ž=ûÔfAà…Wúg½R›6÷¦ €qÏ¥S”ùF0¸½K ÍÕdùY°*Ýë[€Œƒc¶«6· ”a3˜å(BäçÖ©J¾UÃÅýÌŠªãËÓ²œZG*¶’î3øTàùvqÌ€ø©¸ŽÍóÕ†kKH›æA"³Ùs’ ”ñ& äfŸ¾'P òx5$2ŒŒ“šXc>hÝšf©3yÅAÚÍ2þVóHXÓïeo5°q†4ø.¤¸·X¤9XÛÓÒæI­’)Q =.hR'9U4"¤9Þ_“ýÚhQ ÿü¿JX²§ºñPÜD¤³ÆAr=é’¢’YGqQH‹’TäzSáV(Ü{Њvž:sK;Hüjß½ùŽ?<’i™ùý)¹ùù5^ê2¼ŽõÉ·‘Þ 6œ­^ˆ²Ä»—z°þ|Õˆòª•YB@Áù!s&†®)匘 À© y˜b-”t-Ž ÐSoAœv44{Gª½Ú8~B×+p2J®nÝ‘È5=¥Ð±Žp*ky¼Æ#5¼¡ÉÅÿÙÿØÿÀððÿÚ ?¹È·òM@ u 7uÁ©O°ëÍaù­ÂA“ór+1]£0ç&³D­[¸ÄÖ…ÇW©æ]öå€ä÷©eâ,9Ïzδt¤³aWœÕX/“ÀVÙ>rÇ€ iHH`6Œ¤w«OÁà ¶ÜŒ ÷¢ì0³Ú8øEä@¦;Q8"ÕNHŒÐ¨^¨Õ]ѤŒê*¬¨]FÞÕ5Œ$)Ú¦¤·‹b†~§Û U›ýjÄ3G%´Ä92nSéSÇ"5´‡q2åOLUˆdíßïÝW!fá†êE< |‡ï*eÎúÓ•^Vا€ÏÒ› /<Â00Ìp~”È içTn<Õ›åŽ/$’vÄFï÷}kWW‚5xK@ £²úÖž£ˆòDXýÚƒí 3´‘¶FN3éYMæJ̇åÉÅeI)i /@x©7!™¶Æ0ãœôÍI½L‡j 0ä7­K½K«ÃœúÓX–e>`Ëü¼”"´ÒÆ¡Æ\íÀ)Zy‘Crxú ¯swoÑÛBêÅT¼ŒÙwù'ó«0ÈfóPA'ó£OwUwe¤$ ÿªM!y¤vݑϥUYØ·ñg“éQ\F“‰<µ Ò.ozaýáØŸOÆ£Þ‚©Œš§5¤Ë!FóG_JiD«ˆ›!zã4ÖŽdÆ#%‡~Õ¡k«KÝFB8íZÖzìl¡.ÆFáZ6ºÂ¶xÊkhd¡hÈlýÒ~•¬¸+¹wr iŽW*s‘Á§ ànëßÒÎ=èç³KE”QKEQE%RÑEQ\ÝÅÃ-Æ×èA®2iœrzµËÍ1óOµU½‹ë¸¨ncä0àâ¡NŽþ•bÙƒF‘‚0¹8ö©¡mʩ铊–Ü›s¹ãð¬ëÓ°˜BŒqÞ©Îvü€cÍU»;Æš&ÝdœüÙÆj@ù3÷ºT«&ècÏSÅ[”Æ!g˜íUsSÈWÊfà cÞ§”¨Œ³ñŽžõZÖå„c+»‘ïPÃ"îÛÐTJ¯”èiuò¢T–õ¥»>Z¯4ËÃ墨ïPijÙvè§õ¦Z)äúšm–FO©¬¡Ú\ 9æ¯w—ä#§½h(f”mÕÅtBÓýó ÿ Oæ$¥WýñàîÕ“"ÂÔæCúU‹iìRA’SÞ¯é}®Y#”g1óžüÕ­6apî’rvóšÀY^ÃTxBß/¥`\Äö—ï)wË‘ÅaÎk|Ñ8*¤åIéZʦ ÓÈûcNW=Ö…½“Zæf(‹÷=^´ ´+O)Ú£ õ¬Ë±spDP’·W=9¥ƒNäó•€w8¦-ŒÒIòe"<–âqMš!4¥P*híUb… ³f¤X>HÔöµNaP02iš‘Ýóò£c˳˜Ç`¼b¢¼9@;)ªÀ´ëŽÇ“íUáºúUk`LƒÒ­êqÉ%Ò¾QŠžö7iÆ9©ocfœwëQ¼‚Þ5†#Êœ“ïQ³y`*ušŒ0‰B'\ÖÄ <‹{”$y`†Öµa8†…ÏÈ ~U­ \S/UN‰ƒžsëÚ¡ûä“ÜÔ`ïÎ{æ¦G’ÝD±.õèEKk,ÖMçÂ7gƒR@òÚ‘,c ðiÚ°Ôb]ØFaPsÍ[¿ÿ‰¬h\,@AúœU›Ä„k¿ €0iŽ"‰ZD0 <I$ÐDÉn’8×'‚h–Xã+ˬcúš§<¯$‹…’?AQMws"w$|ç^• ·Èv’U=>m.)–3°¬qÇv¦Me±¬Ž¤íÜÒMgŠ®Ë½­[HÀ…#î2ýßLSYNÅE'Ë ð;R0Â*©!Î*u)þ³®LT±a½º®¥ˆËuLcmëlã€;ÓZ!#£Æî1ÐôÖˆ>LHOª9eH ¨}Éüi³'ÚB©ë€rJFA<Ð3ךsMo2Eº<¨!úÓ®.`•c0UOçK5ÄL(1š¯,q1a [·Ÿ”ç‘ÿÖ¨dh["s¸ü§<ÿúª6h˜‘ cæ#Û9ç²wGRñàÜóŠÐÓïäµÉ•7"žLU›+¹-ÆãrÁô­x9¼'!ŽN=kb "–-ðÈ};VœN’&øÎTõÇ­IRSé¬J°äÔ3;FêC§¨¦HÅqNî Nyéõ§ÿZZJ(¢Š(¢¹K&hçØÃä5ÃÚ²íoºk‘°ø?tQv7ò°È¥¸ çøXdS§Ü‘ч¤†6â@NpAöF¤ ãЊXÐýáÔ |²Çnª$Áf§;$K†ÁÏ4®ë"¦´¸ŽfËô{5%´¨í—äMo*?'•Ç5Y¦†BË'“Å@Ò#’Œš¬í“»…5$ÃÖ 6Ó¡Uþ1R@ˆ¼¦)Ó»-¬’/Þ#ùœSæ,°³I\Q1ć$ŒV@]ÍÏ9ëYàozÏ Y½ë_Ïû‰eù÷Íhùÿg´ÇsÅh ü‹`½Ï^Êå›z9ˆÈ¨-æ-¹'­Co)bÊ:ÖÊÂè™p02¸­o³lAº^£;qZ¢Š¿P8ª×S$,×±ÑEW¹‘b^bØèj‚âU‹†—>‚«Cy í´xÈêjgI\psǽCë)GJ$ f˜¹QÈþíK‚CFÎ\Ž£Ò¤ç ’ä~•¥ gòð2ØÆ©“t… òÄc« íÇ'ÅJê ü’ Š|ñíPOË'Né”ÉjjäÆì o"ª®íŽFAÇ#Ö íc“éOŽáUYqÐcÚ­Z_,Q²ºäºjh/4eaÖ…º´Cþ àõm¹©âÕì‘€6Ýz¶ÜÔ±êVªÀ°3ÉÆi\Cq¹b`»yÎ1Нrmî]Ä,G#ŒTSù7 Dlب%7=õXÆÐœnìjDzóØÓdŽS‘ÆAb:óRI¾@‘¹Rq’iî’yA‰ÈV÷¦Ÿ— € CŽ0j¸ô¬¥˜ÁîiÅrÀô8äÓÊäŽÜPX°Ur .öp¨ät4»Ù€V䎆¢+¸ãsϦ€Å€,Cv¦äãqÎx‘ÊÈLˆwÜõ¡ã“œSÖ”Äãæ`zóÍhi’3Vf`1·qé[º%ËËæ£»6ÜmÜ{V®—3J²bÛqŒö«õ©W©(¢Š(¥¢Š(¢¸ó!'å='úW[šãËdqSE™ûäÒ¥Ž=ຌb–8ó—èÆìùåøÔ±¤±àž*hÔ bzš‡Î‰äl¨ëŽ;úÔeԱȕxËœ÷«‘¿? õÍK°=éÐ 2h@ /&¬Y^ÍÁò:b¬@fyŽ'b}ªÄÊdÚ‘»=*ÿÚg}â8$, úsWaK‰b“9lrjìfIÀ‰Ëw8«6W§6‹xÏÌQKip!wŽhˆÝGB)ö³„ÌrG½OcÚ¬fØ©'Œœb¢!œ€6äñíLabã'¥gjé=¾.-¤Ýá×®ÓPßÂð¢\Báãèà ªÚ„r@«4$<}:ŠŠÃTIY`¸ÌeˆúóPÚÜG3¤Ê3÷¨ínRw>QJÕxä^R?¿ëéWÚHÎ0ìÕq tí‘ëQO»j—*€0(Å,T7@.UIÆìâ› à‡É8ã=)®¬8lóÜô¤ue6MYÓ•–Ft»<­jhq¸‘ä÷XÆO\Õý*6RîÈ}}kF¶+B’Š)h¢Š(¢Š+ŒŽ2ÎTü ʸ5R[žÕÅ‚A¹«ðá ‚Wææ­ÃòW’µrcœjµÆËå¹í'¨ÿëT>z2l8È'Ò›ç«.ӌ篥1­”®»©­#­1¡ Àüé&¸6°ˆÔþð÷ö¡å1 Q÷©d›É@£ïSmÙîÑ'ëI3esÇ󤉚`ÀýjH­È—|¤ãÚD8i0JXâÂÇmù 9ã ýi·\¾AúS.†_ƒ‘M÷1y¤e„ýÚoïJ‡ÊyëU¤šI_$þ¡yÏZåw=p*[wŠ1æ8fláE>&Uù›%»T£sg'Š»­#cwÊ-íVBÄr½H«L㟖«j €$xä‘QÝ?eïUï% |µZÞÊæôæ4-ô¢ÏNžõ¿v§´ÛM:{Á•ŒÖí®€"U-Ëã?JÛ·Ð X'­›}EƒŽ{Ö¥µœp ÛTÈ{Öŵ¸@!sŽÕ« ´f¬”vö©³RôázV^©a,·\[»Ü£½fjö/)Iá_>ðë?Qµ’Ih{uµ^;›Ë˜âô¬Vo˜¬€ƒŸ½Ž•œÎ *ã:˜˜‰ÊX`‘ßÒŸ–X9ùsÁ#¹íOˆÆN~è<w¦O ²0•¡Q'bƒKs D†0±ƒKÕÅjð´w®X¹ÉÍqú¼En `@bNj¯™·å^™ªÁöª9Mi\ÌaUù˜f´4«cw3Ä'iæ¯é¶ÍtòD'nsUäŒÇ#ê BhÚ9[ª’ gÏG+§pq]®”t»PÇ‘ÍwZheÓm•þðŒgò®ê̱À ç`«Uf¥¢Š)h¢’Š)h¢Š(®"æS-Ñ$ í\²˜žž•ÆI+5Á펕fi7BŽz•ÛøÔÒ>Q[®F*Ä­”V둊‚ØŸ4G“óTQd¸_SQAÌ=Mia œ¡ëW6¢O*E\!@û¤U+‡"ÀÇÕiXù{‡~*¬Ä„ nª@0;äð*œŒuªêw­l*ì‘WŸо#Ë6}QQÆXŠ„å\–ã=³Q†çò¨ÎCr PÛ²Ãå)AÜ[œb•Hf'#ІâM‘?ŸZ"™+ “І܏Ûe Wq'ÓÒ­ÆbÞ¢02G­Z€Hˆ°ïP¸ÜÙï]F˜µ¬R*Œ…òÉ®Nd’Æ7EþVížÇ¶FPW«ˆ¡(U€è1SØRÒÑKEQE%QE´tæŠÉñ ŸŸ§ù‘.^3»ð=k'Ä–Msb4ËÆr~••â #qe˜oŒä\Ìq«ªuG9®L&vðAõ>µÍ‰ Á¹5¯áø‰ÔŽ6Dr*Ýð²{+vò¿¨­ÏFVêFíåÿZ³¡™ï<Ș¤ ¸=ªÖ¡¡ ‹õ™,lAÕ=抳_¬ÊFÂAe­¥P¨ª:(¶•Bª¨è£µÀAN¥¢Š(¤¢ŠZ(¢Š(¢ŠâÒO“\.e?ZãH˜š¾Ð£A³'* ý*Ó"²3ô«f5hÈG5V¾LËnÇLv¦G–û³œS¸ô«²Ä¢Ãs7ÌäLö«’B¿bß¿æ]¹_j·,@Y–-ÈÇDÆŒ qÔTö+(\çÚªVsI ™Áaü¨Š!ŒÿJ#ˆ!Î3Ks3G +€Xýê%¬|q“Ö’w)Íg´ŽÍ÷‹UK3¹ª…Ù›'5n$ÄÎýO\Ôè!'­YP#Œ’yª×4¬4Ôf’eU/,ŠŠ8Å*DY·«qÒ­yNdݽ7Þ­yO¿zÈ3ŒV¾‚.LÞZÊDkËŽÕ¥¡›·¸Ú&ÄKó8ìkCGóÚM‚Så¯$v®ˆqß5Ðþµ³ERÑE%QEQE-QÚŠ>µN}2Òe Ç´žr¼ÕK6Òå¼{pr ðj¼ö6ó&׌Nrµ%µœªD+‚ÝI<š–ÖÒ E"Âç©Ï&¤†Þ(ˆ—n}jVEf FH©4gËó”ò °b2E;êZ(¢Š(¢Š)h¢Š(¢Š+ޏ˜ IPë„•Ç™•5ÈÊãÌTöÓï9^È>õ42äåx<çߊ–7`¯§4ÐÌêåqÚ›¸²±•}Bw}Ò;ÕÄŸ›îã½]L/^„wªóÅ‚ »¥A"«éž•È®6žG¥AnžÙ¤HÐ5$q*7š†ú&7@F ªi·q±¸ ¼îÀ¦^DÆäªçOŠÝcùd#yïKyM‚~oZXÐDpNXŽ´«kmþ<à&âÞ´ãµ"ÝœpkkÊ¢Á¤YÉ?AÒº Ç·Mó?ŠG$ÖÞ‚¿ñ/Wþ'95~êå-ÕIÁf` gÖ´ä”FªO%›}Ü&Þ>ñÅMïŽÔü÷§QEQEQEQEQE-RQEQERÑEQEQE¨¢Š(¢¸™ ‘ä'ZàZ6f'µq¯³ŸJ³nÞ ß=*h±s÷O"OöIÓ<€rqOŒƒ"zjH˜3 íÔÔ*Ò6þ>ñ¡™wݳPL»›>¦¥·EF'•õ5,ºã¦jX1f‘™û ı-Øð)X’I=àTríŒáEFÇsqQ1Üx©2#Á'4ýÁHÍH)©.7ŒaRnR¥‡,EH]Jöä}Z‹IªÛwdš‚P»vF*6ÁI⣗nÒ¤ô4z‹}‚xÁŒF~sëÅoi7ë%¤pF yxÞO~+cOÔKXÒ<*Ç÷Éi÷_jSV «‚1Û&­]ÁwwÕVv,ÿïU;‚ZLzÔöɵ=jHFÍMÛŒÓäÌ|çr s®çÉ<i%MÒ'ridò_z¨ãi£mÁF­‘÷ `ôØb±Ï‘Kr@ëŒÒDvßNjБmôù¥Û‡ ª“V£‘ ²•öüäaM[,6NØÃœ€k1#ûLÂY›*£¦:Õ ¾kï“LU,JÞdžœZY™BF¯Séš\чàBªïÌgWS`¾ €?‡«¶·] `1éŠë!]‘*àÛb¤§ÑEQE-RQEQEQE´QERQEQKEQEQEQEQEq×Ñ»Ê ‚B®Ò+…¹ ìupk’» ò;-@±·u"¢}9¨Dg¸«Ð‚Óyêâ>µj"a·Îy§­[Œ˜ ë÷M0(œù@!¾è¦æøä7AL æøç5+¶Â ç÷;ÖœçiÍBîëlÎsó Øˆ‰õ¨ecäsLþÏnecÉ< b7•ãÞ¢Þa‡#ï]:Ræ]Ç ÏéKjçs–è§YÉó;1è )ºi&HÔåTÒý¡ÕAÈ©Vá¥`½@=*f—"®d•!”‰ÎE?ÍÔªXóïcAËó­-¾Ùnb A&NqN·Û-ì@‘’ù®Ô ¾ƒÊ»\`ý:WZx#ÒŠ)(¢Š(¢Š(¢Š(¢Š(£ëEQEQE-QEQEQEQEQEQ\ž2Û‡ñ}ÚáðIÏ÷ºW*A>½)êØHÈ'àAµžÌn‘*ö­V æe@ÀíU óruéR-ÅÓH¤9WTÇáW.u ƒrdÚUqô«’Þܙà 0v(ÇáUX1•‰'w©õ¬æÜÒ1ÎXœýMQÚã';Éë]Í¢•´„ä(®úÑJZD¤|ÁFs]¼¬)ë´f¥©iô´QIEQEQERÑE%RÑKE”QEQEQEQEQ\܈ÒFqŒ·Æ:O÷«–<Åÿz¨ g*ü Õ_³ø"©­³ 9f¶mãF3À¡qŒðjÀ˜/Zž#åÜydtRƒëRG!Šb‡º”úzIåK´ŽÅ‹s< ó"È6ýAÁª ³‚‡—ßÅV¤Ê[w, ™äO_ZtÀ‰œtÁ4ér&eÏ4ÆËD¨¹9}ÄÖ™’cTôÀX¢ '­I|Ìq…eÁ>™ Õ»D*\ç—}NjÕªì,O®* âÜÍ?‡Ò¢•2H }zŠT N{t¬É¤3É4`0U™Ì®ã<Ò©LæFqÚ–Ö>\’8¤Dg8É4ªÆÙ<žÞÔŒ£,sóc­!]Ääþ4¼ǽYЬ#¹2ÜN»€a³>Õ­áÝ>)üÛ™“x 6~§¡Y$ˆóʹ;¾C]ÎÑ»î­tkœ ØÝßµ¶ã>ÔRÒÑEQEQERÑE%QE´QERP3ßRÑEQEQEQEq³]0„6pOzàÞS°`ó\t’ƒÖ¯[‘—pù°2O­O3ŸSŽõ<,ÌÙ>•zÒDvVÚÈ2¥^·EhÞU8( ¾‘©Ÿv ÑÜe”äã‘Ú£’[ŽAúŠ$¸†}êy­ÄÑ´`²¯SWÍœ3@$²`%_½“V¦µIaÝjBÈ9¨—>q ޤ÷¬Çk3·ST>fÜ9MW¾¹û5¹(>v`šäXb$ ±a²£yH8ù‹ñRÆ–5Îò홟y ½¸Âž…¤ Ôò)÷ ¡+(#×®*YBêã®jI†ÀÀŸCX³J° «½g´‚5cüMYnárj[†1‚àŽ)H$š%#%©bÝup±.V2v³voO²{ë”BI‡µZÓí^òå‘È-ô®¶ÖÝ-mÖ¸QÈ÷®ÂÞí Xb\*ô÷®ª(––(ÆTµ%>–Š)(¢–Š)(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢’Š(¢Š(¢¹ql„ ¬CØö® B ü¤ô5Éy!¾éú¹$ Ç‘ŒœTÐÄG' ëг;F[µZ™FSÀÆ*åËؤdcëV®[l(ÆE6Þ6gP_qU­`wu`¤{Ô6ñ9}ÁH©c>\³²©f?žÖ_"IˆR .?– <——óCHñ…ζ|ÙÉ¥q´‘µŠüÜu¦LìÈÁ#šÅמEšÝ\’§Fè°šcÆEP¹f[»pÇÃùÖËí[‡CÂŒ0Û×8«ÒmK—Bpªw }*ûK†^j'Ui~~ ïšcòAÃõ>ôÆ ï“’±u;viTÇÊŒƒš¡s㕳nâ>f¥Vòð«Ÿ1øQQ¤,츜b£Kv–A˜‘Ÿ¥o^iÉ‹äÆÛr˹ÏoZìÅšC¦¬ƒŒŸç]SÙ¤VIm´noç[± ÎB¨ø«£àçµ]ã±ÏjuQEQE-RQEQERÑEQIE´QEQE”QKE”QKEÄý¦Q0$ðk€óÌÅyŒVå¾–fÈÊšÒ· +nPkVÝ€BIéWu1X*z¸·*a*!V ñš²'"6dƒÞž—´j$P ©Áô5$WÒb’*¨xÎÃŽRGt|’®(vœt5Fñe àÊ¿Ä1ÁªP ¡0r†AÜÅT‡í>n⻇| ªóÌß>~Qü5+Ä…‰’R ÿu©5-¹ß»zU[ëï#ÉѾCU®-Reáÿ‹å=êµÅªÊ îä OºH<ÕÃ2íÜ;úT«ïÌ£×õô©Dm».9q€j4¶–7\°ù»œSa³˜H78#æ=HæˆmdœŒ{Ön³"ÛÆH,ùùGðš†ðÈ+‚H<Z«¨@b݇­_Ò4¿"4–ošg\œöµ¤é"Yf9•†Oµjéš`åÁ‘†Iô­f$BŒ»”ö­pÐ V–qÒ—qúv£éKEQEQEQEQEQE-RQEQKEQE%RÑE%RÑEQ\e´%œÉ !W¿½pQFwjââC’ÇÖ¶£ # ÈIàŒÒ„*ǽ“vH"µá# Ë‘ÅZ,[2²„ÈàµfV25G‘€¢¦cŸœ€¼qCÆÙGú¡œ7¦j)"“lxæ>ÇÒ£’9BTSc‘Ë/ï˜yc ;MŠy.&`¨:gŠHæ“r¨r®)ªB–ÃÆ£fP€·ÌriŒÃ·=iÛ߯»Tõ÷¤>Æ>_JbÈÿÂ8Í<—ó 6Iﲬ)ȨNä9'Ú§F²ŒåqœúU+ÙP,„•^š†fƒ³£þmÌÇoE¢ÛI7-ö›® =+ONÒwbâë;(ŸÝ«vznç ü+ýÚØ÷î‚ÊH VÂsœg¡¨}3N¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢–Š)(¢–Š(¢Šæ<Ø·ãÃ0ÎIï\Q’0vF2GsÞ¹=ñƒ±â:Ö„'|A3´¯5r&ÝLí"¯ÄÛ¢ ÓmH­¾E,O'ªw:–'ŠPw0,N:S¢fêïà (YÕ˜À(®ç=2[¨­W÷£–è´Ã,q/ï3ÐS ©à U­î¾Ó9Ž4Üzâ ‰šyŠÆ›ˆçLg”ª.ìsŠ´c›åcóJ•c ¿å'‘èjaì ðzÓ‰hÀ;öep_‘G\ö©ÕY…àc½cM$×s£… gh¾9¥¶‰ç•'1ù‘§È {w¨ãWšD›fäS…º„û‹ÛåÑŸóí[Æ”(-ÞŠJ(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š)h¢’Š(¢ŠZ(¢Š(¢ŠàcfYÆCýkÏQˆÁ¸h؉‡5Óõ†pÁ° ÅlBòTçã½mDíÎ3RÈÆÕd¨íOfrc$¼TŒ3.;uÅ Ÿ1Á!‰àÔnŸ1ÆsÖ˜éódU}BÈê0ådÛ$6ÓÞ%ŸÛ`b²’?›o®i%´ûT«bDíT´Ý>ê üâL{N öª¶–ÓÀþfJs‚}j ;i`båŠó‚k\:ÈÈÚzžþµv6@¥†F~þµuYvîœ÷ïTuõŽ p\õ^ò÷ÁN7qõª·—¡A yaOÐ.ax–=¿¼Éaõ=kG’6±‰S®8­m&HÚÎ0£žÕµWê颊)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¢Š+jÓåW9#Ô×!÷`\dp&âæµ œ‡QéÒ®E)=EhC7Ì9Æ)ÒÝØ*rM:[€¯¶2zŸéK%ÈW ¤i~ÒPŽì;QçÚ—íO½N˜}¹ õ<`9SSVæ#3JêK1r|½Øâ•г–r|°N1AMÍ—?'lUK륌çU®î± ÷ª^ÜíbEsÓK%í¨å˜à ÏE’îá>óœ Ìd¼ºX“ï5uºf—€ e+´ŸJí¬¬ã³…9!všì--#´ETë·m^ù·õjÅOÞ–Š)h¢’Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š)(¢–Š(¢ŠJ(¢Š)h¢¹‹ß0®ü\MÖÿâèMr·Yž•žÑYX䟕­3y[ríÔðŸJ‰ä)o¹º·¢ÓÝÌø'§#ëQÛ³zóÔTVÄ´»‰çµj,DÂÓÌþT`õõ5¢ ÿGk™NÄÜF}Mi Üùò£ùÓ#ºËmF {P$å›jœúT)s—Ú§&¤–åÑv3åúíªI&uP¬ùnÀT“\2®ÂÙcÐ Ê»H@*9&©Ê¬ädñިȬädü½ëKúiVr÷3]‡ôÑ ¹çaòü"·48@ŸiaØasØWBkk­ki(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¯ÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢“½RÑEQEQEQEQEQEQKEQE%QEQEQEQEQEQEQE-RQEQEQEQIŽhÅ´QEQEQE ëE´´QIEQEQKE”QERÒÑIIE´QIEQEQE´QIEQEQEQEQEQEQEQE´QERQEQEQEQE-QE”RÒÑE%QE%QE%RÑEQEQEQEQEQEQEQEQERÑE%QEQEQEQE´QIEQE-QKE”RQEQE”QKEQEQEQEQEQEQE”QKEQEQEQEQEQIE--”RÑE%-´RRQKE%RÑE%´´RRQEQEQEQEQEQEQEQE%RÑEQEQEQEQE-RQEQEQERÑE%QE-RQE-RQEQEQEQEQEQEQERQE-QEQEQIE´QEQKE”QKE”QE-RQKE”´QIEQE-´”RQEQEQEQEQEQERÑKIE%QEQEQEQEQEQEQEQEQERÑE%QEQEQEQEt¢ŠZ(¤¢Š(¢–ŠJJ)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢–Š)(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š)Ð}j9Ž9Æ 6N>ôìç'õ§g½-QEQEQEQEQEQEQEQEQEQKE”QEQEQEQEQE´´RRQEQEQEQE„ÔR2†ÆáœP@?…Ò”:QKEQEQE´QIERQE-QKE”QEQEQEQEQEQEQEQERÑE%QEQEQEQEQEQEQIE´QEQEŸëE-QEQEQEQERÑE%QE´QIE´´RQE-%”QERÒÑIIEQE‡88ëŸÒŠ(QKEQE%QE´QEQEQEQEQEQEQEQEQEQE-RQEQERÑE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE´QIEQEQEQEQEQEQERQE-QEQEQEQEQEQEQEQEQEQEQEQE-RQE-RQEQEQEQEQEQEQERQš(¢ŠZ(¤¢Š(¢—½QKE”QEQEQEQEQEQE-RQEQEQEQEQE-RQEQEQEQEQE 4QKEQEQEQERÑE%RÑE%QE%RÑEQEQEQEQE-RQEQEQEQIE´QIE´QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERQEQKEQEQIEQE-RQE-QE”QERÑEQEQEQEQEQEQEQEQEQEQEQEQEQIF(¢Š(¢Š(¢Š(¥¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¢Š)h¢MRÑEQEQERÑE%QEQEQEQEQEQEQEQERQE-QE-RQEQEQÚŠ(¢Š)(¢Š(¥¢ŠJ(¥¢Š(¢Š(¤¢ŠZZ(¤¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(úÑERÑEQEQEQEQEQEQEQIE´QEQEQEQEQEQEQEQEQEQE-RQEQEQE%RÑEQIEQE-RQEQKEQEQEQEQEQEQEQEQERQE-QE-RQE-RQEQE%QEQGáKEQEQEQE”QEQE´QEQE”QKE”QKEQEQEQEQEQEQEQE%RÑEQEQEQE%Qx&ŒŒàO¥gÖŠ(¥¢ŠJ(¥¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š)(¢–Š)(¢–Š)(¢”ô¢Šhà{šj /NI¤QÏzZu-QKEQEQEQE”QKE”QKEQEQERQEQKE”QKEQEQEQEQEQIE´QEQE”QKE”QKE”QERÑEQEQEQEQEQE”QKE”QERÑEQEQE”QKE”QEQEQE-RQEQERÑEQIßÖƒíG4´QEQEQEQEQE”QERÑE%QE´QIE´QIE´QEQE”QKE”QKEQE Îh¢Š(¥¢Š(¢“QKE”QKE”QKE”QKE”QEQEQEQERÑE%RÑEQEQEÖmƒ8'0('àg¯8§QE%QEQEQERÑKE””QKEQERÑE%QIE´QIE´QEQEQE%RÑEQEQE”QKEQE%WÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¢–Š)(¢–Š))h¥¤¥ZUïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TuQE--”QKIE%-´”«J´åïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÒQE--QKE%%´QE«J½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊe2ŠJJ(¢ŠZ(¤¢Š(¢ŠZU§/zUïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠeGQÑEQE´´QIE%QE*Ó—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔtQE´QIERÑE%QJ´å§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES)•QE%-´”RQEQKE*Ò­9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÓ(¢’ŠZ(¤¢Š(¢–Š)(¥Zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¢Š(¥¢ŠJ(¢Š(¢•iËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:(¢Š(¢Š(¢Š(¢ŠZ)V•{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠ(¢’Š(¢Š(¢Š(¢ŠU§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¥¢ŠJ)(¢–Š(¢Š(¢•iËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:J(¥¢Š(¢Š(¢Š(¢ŠU§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¦RQIERÑKE”QEQJ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦Tu´QIEQEQEQE*Ó–œ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨é”QIE-RQE´QIER­9iËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQÒÑEQEQEQEQJ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¦TuQEQEQEQER­9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)”ÊŽŠJ(¢Š(¢Š(¢Š(¢ŠU§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢ŠJ(¥¢Š(¢Š(¢Š)Vœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢Š(¢Š(¢Š(¢Š(¢ŠU§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢Š(¢Š(¢Š(¢Š(¢•iËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:(¢Š(¢Š(¢Š(¢Š(¥ZrÓ—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GERQE-QEQE%S–œ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢Š(¢Š(¢’Š)h¢Š(¥Zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:ŽŠ(¢Š(¢Š(¢Š(¢Š)Vœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¢Š(¢Š(¢Š(¢Š(¢ŠU§-9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔt”QERÑEQEQE«N^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šè:úÔuQEQE´QEQE«N^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠŽ£¨éh¢’Š(¢ŠZ(¢Š)(¢œ´åïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯ÿÙÿØÿÀððÿÚ ?èë¢®Š’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢ŠZ(¤¢ŠZ(¤¢ŠZ(¢Š)(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(ïEQEQEQEQEQEQE´QIEQEQEQEQEQEQEQEQERÑE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERÑE%QEQE-QE”QEQEQEQEQEQEQEQEQE-RQEQERÑE%QEQEQEQEQEQERÑE%QEQE-RQEQEQE´QIEQEQERÑE%QE´QIEQEQEQEQEQERÑEQIEQEQEQEQEQEQEQEQEQEQE-RQEQEQE´QERQEQEQEQEQEQEQEQEQEQEQEQEQEQKE”QEQEQEQERÑE%QEQEQERÑE%QE´QIEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQE-RQEÉÅ 98£4RÑEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERÑE%QEQEQEQEQEQEQEQEQEQEQEQEQE´QERQEQEQEQEQEQEQEQEQEQEQKE”QKE”QEQEQEQKE”QERÑE%QEQEQEQEQE-RQEQERÑE%QEQE-RQEQEQEQEQEQEQEQEQEQEQERÑEQIEQEQEQE´QIEQEƒEQEQEQEQEQEQEQFh4QEQE-RQEQKE”QERÑE%QEQEQEQEQEQEQEQEM'zNôRÒÑEQEQKE”QEQEQEQEQEQEQEQEQEQKE”QEQEQE-RQEQKE”QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERÑE% ëE´QEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQE´QIEQEQEQEQEQEQEQEQEQEQEQGj;QEQEQEQEQEQEQEQEQEQEQE´QIEQEQEQEQEQEQEQEQG|ÑÞŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŽÔQEQEQEQKE”QERÑE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE(¢@¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)1E´QERQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERÑE%~4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERÑE%QEQEQEQEQEQ_ÿÙÿØÿÀððÿÚ ?è«¢®ŠŠ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(=( R (¥¢–Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEt qE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQERÑE%QE´QIEQEQEQE€œž)99µ'GPZ‘GÎ:“S•Ž>,Î@Ç¥ià píÎý«J8Ò,¤±¨ZIžåF JOJ‚C,×ʤyJÄŸJ€ù’Þ…?»Rj`]îbI ÔÕø"KmO.ÙžON•rÖ ÃÎr:Ô“I´%AnêrŒUOÌTŽjy¤Ã`j½Ñ ªvì`܃éëYš›Db6H%Hýj•ñ!#kÒ‡a»?Fõï-Ÿ?ÇÀ÷æ © ž"o/|˜éÓÓÞ®-›Å›1ÛÈî=êØ¶1¦÷#8ãÚš0eW?{v3׊HÀûJÈÄù›°{ñD` €ùù‰ÆjG`¨Ç<{šºòƒŒÉÁõ©Ù†69ëU¯TÇD8úÖvª¦!?ÝþUOPù6'`*¸l#ztªCý[ÙªßÀ@¬«×bÇø› ðãéTî[–n»°1íÅT¸oÞäó–ÅO`„™£'’›‡áRÚ)>j±¸T¶Êvºÿ³‘SÈæ(wda¥>F1Çœ‚Hü©ò1TÏRj’Ë!mûÎEVùÝ¸Ô í¿vMjBÛŽñŒ‘¹r+B#’Hî8È«±yõ¼y€îÀV8Çj^<ÝÛº7Ô¿òÐçÖ«mÅÌŒO¡¨ •Ž~† ÆÙIÎk ®ººZ(¤¢Š(¢Š(¨oe0Áòýæ8KX¹6öd/ß~UÔçòm°:ž*”qpNI'ù×0±$’sX;KIÉ4â0>ñ4¶´ñ<{"ž²¨Sž1R,€-eónËûÕV;¤&ª±/!ÏJºÐî?(õj•‡'åµ*Æüb§²E2šMÌʧ¥iéGç+Í’Ë÷Ehé"Éæ?-ÛÚ§¹@lç5vþuBª¸g·aVîå B®7ÕVùçPìHsò ¢™p¥ÛýaÂäÕUçÉËVfY•ƒ‰h `ŒÕë¨nÉ— Á~ïAõ«SE(`ÂAÓ4é”ÀñÓ®)îþL€äW“Šs1G‚qL˜ftßÉ(Aªº’“uî-ÏåP^ß®ã’R£`e¹Ž2r¢Mß•Cjžv¡L~Pû‡áÚ¢¶_2ú4'…m§¹ÎdàúVž¢Ç2qÛʯ]· 3Ç¥2>YJ—hÆ*½¸óvŒ ¼b¢„olŽ>´Ç]©’~dàÿ1D£Ëcó£?Ò‰>@I<­Aq#HÈOaTï&3H¬MU¸Ë"’zTjò;TJ§yF îÇjÌ6ܺ·ºïÍR˜m™è¯5VEÙ+È5=‘áŸÔmÎ}jKcÃÎF*HíO»\ÑëOvM,ÃäQ2‚¯ ŸåU“!ŽT'´íOîSw¡lvž UèxEÏ¥9ó:díçëÞ‰?Ö÷A¤n$l}j2Iq»=1Q1,àž§¥1²\õ·]moÑEQEQE(ªš€ù“ý‘X~#cæÆ½€¬½låÕOnj4l}:VBšÌSI+” ÍÉô4ŒHäÒIÀɪ“L¸G&¢v¨™…$k—rM*.æwïK|ŸZºêY•¥ÊÄ£åµxBU•æVu5xC°©RùŒÎ¾L%}Æð«BG.¾DJ…ûî95gs’<¨Ê>ñëLÒÚÞIKnÇß>ôÉUmâiY·ŸâcQ˲Þ##6}XÖu¼¦ð‰",p~QT -pêèXœðV·c;,ŠOµ^ãÊ„Æd8þÕ–õaµ0£•ˆÁì+B[¯.-Né ëéI¼—'#wÍLG>dlÇß55[÷ˆÌr¹æ¥m¯)$~ì®ÝÔû’Ü4‘ ŠçŽ”ù¶É3HãF5ä~¡[ û*­±1ͼà6GÐÕk|¤¨Ý9ãéRÌ3ž¤–Ç_Z½r ’¼“»oZ·1.ßð*T#yÉÆ>cN·`²1cŒ|Æ,OëTe»¿1ÜEgÏ)–F<Ì[Ê©Jå¤8Ï&«Ü\bl(æÍV–lH08sPÉ.$ã ÓíØJ„Z–)"¤„‡Ri&Ž78dŠlÊ„ŒŒšlФü•r®B€Ζ1‡à´dRÆ6·¦>×/bF*9 °`:Å6L1aÚ¡Š …zƒQÇ ¤TqÆw*ê¡Uq°t>Õn0}Ð8>Õe8Ú 5ò\às÷1H˺B1ÎBⓛߥ;b«*©$ çëNØ¡”+´~T»T2…?wƒZõÓVÕQEQEQEW¼™ bx|‡Õk+Y½Ú«ƒšÇïÅft¤|K*†.à 9É2†û¹§Ä¢I€»šmõ¼qJ˜PcaSêVim"Äã*Õ-õºA"2N…U$S °â–ÕUd4ÉaRÛ(V¨©¦iT†'v8p;U«“4N®~uŽÕ4ÆHä Õ{ãµJ]Z0|ÛFµZ–hä³ó“’œ±$ˆð n T¾´{Í9â‹Ç­W¹³’÷Nd„|Ńb »µ{«-‘õÎj®‚ÔÂGÌ\å‡ò¬ûT1B` óo;›úU;d1 ¡äÕá U;/Í·©>õlA#(\*Æâ£’*Ï”äs…TÀëI ˆ¨p:ŒS[ù;‘‘À#Ö¥‡Ë ¸ŒóÒ¤™|ÉcÜ>UnwúÑ:=ÌÐïå…ŒZ%GžXË”t”²îHÎì;ÒÎç@§h!°Ì(•O@ãÒ•€IsòõÅJê©p¨zŸêjB¡&ÙéÍAps.;U¸|ÈGEŠ­;åØŽ¥g¬Íçq·5DH|Ìž•THCôJBÎ ;üìIäzvªÏó)%¾f=*ù‡-óg8«6%’wR6ïRqô©íY’GSÀ`OëS[®ËŒdUÈ×z;ÀóVc@ñ»žp YEÌlǰª²Èê'RzUf‘†{šªÎÃîúÑn²lËzóDA¶óØóKí£>¹5ḃp8Uù¾¹«B\4“ŸÎ¦Š"Ê[ Z”€!{…ý*ID¾­·ô©d]±ïõ8¨”’I°Á¦!$“Ÿ¡¦)Ïj”.Ù0§õ‡ÜûR°ÈÞ¼Å/ûCéNr*G[wV(CëýkEWíZ\Èܘ:ŸcZ~ѧ8nLDRÆ¡â*0~u>Ôí8 ­ÞÔë+–{4]ûÿgûiËÛ(Ý´ƒ‚h@ÜÊ»Æ{玔ZÁ¸Ÿùçæ Ÿ^)¶ñÿ sÏ­3R”[Û–R78 aOÕm % "ìǨë÷Fvð^«iÑ»„bxN@þñªÚd/+«ç">@õ5„lørx^ƒÞ´™JF8äûV¬ñˆ  ?R}ªôÈ0@äòjœõ*6Š¥ömÝJ¹ªñnf-ÔŠd¯²Q;|ÇË zmÌŒ“ùïó“tæ™;²Ld'%“Š«+Ÿ(Ë'n¸î{UY 0™¿êj î÷·SY‘I²R1žsŠÏGÛ!Èêj’>Œu4ë»oŸ=ºNž",?8oN•4ž]Ä`„ÏZ–2Y·>\ÿJ•2I'Ž*Q6좰Ïp)âbÊPzÒù¹AÅ4§ÌëMÛóI·œÓà ñó½iÊAáyù{S9ùZ¹dˆ-Ž0Ì:ûf´ôõAhÀÌ:š½h[qŒ÷¨®ˈǞù„ýEW¼o.3ûªw“õÑØ†1ü<Óyb=ýq’Ò¢Qå„Ý×Áõ¦}ÌÏ)ñ.TØÀôì9§Æ¡”î8ã=;SÐ ¤žæµ«¤­Š(¢Š(¥¢ŠJ(¥ã= #íØC}Ò1HÀ*Ý Pš-“^Crr÷ÖÞMÓF½"°®àÙ9 Þ˜2[ÊÉ«…%¶wÅB–ÙV- ¶å#\|qZº&ÙLð·ÓÖŽ–VE–3üKQÀLR€Çî’¦ªÛ;Z^|Üm%O¸¨`copsÀÎ? j´‘ÊÎá¯ñëR dIšBíz0>´àì®_8ü*häX”E À V­®ã·må\ Õb„‰R—î“éLD1JÊÄm|äLUXÿÑîe@CFû€#¸ÇY1 Ò' Ž øÁ"'®=jÕ’ÑÀ[óVm‡Ü8Ç5­o’t‰W ¯z©¯{¤ˆˆªº°g¹T†*å J¡àƒïV´ÀRªß)Z³b¾ðGbáÌl ÛŽ«:”…0Û·íS]¹Bç<`;Ópª°áe*8€üêŽú8ª—’bRçFœ ¯})k‚íÑWv »|ÊXò⨠ÍÅ«/ñ(Ü1T„æh ÷Õo8Éõ*«a¤Ÿ›+Øêj¹¤~ùéÞ«íÌߌþ5¢›eD-“ÇåW#Û")nxüªâaÕséPÎB©Š>ýMC)N*pUàzÕ[s›”#äÔŸßQPÄxEZšmЍ£,§gÚª g§‘ð6ŽHÈ\ì›$¡ §óÈþ!H¤…iöÓÈ·€\üÞôûyäY‘A*¹ù©ðJÂUQÂ÷«3 ñ4ŒÜ¼BûÍOqóÄÒ±ùž@ªžÀu©n>hÚFå™þïµ ¦G;ŽBŽ)ˆW;Žp?Jly‘ÎyŸ#å$8À#,­º78Àyìwä%qûÍÎ)ªË°G =¸¨¢`Ѫð0À’{qL•ÂÐu>•,–Å‘¶É’yç¥\ŸKßa—{c<Õ‰¬wÆLReºÔQçbÙ<çÚ³ÑÊ»·6pjš¡Ê¨9aÆ=éã&†‹ÖŠâA!\d`û.ŠJûÙ{SáÛòlÁÁÍIfQ™ c¡\çûvRÃhéÚŸy…XpÁ©5… L8°M;P]©Ðâ¢rƒѱøU'a†=CtöªìËèyGPlÚNs÷±U/tìj­ÑÌ2äÖ~šÅn9î§ÍS³!d;ºUm×!ºb¬ `&%…þî:úÔ¢®HcOZ˜C‡'<qS©U žÅL„(ÀxúT©ÀZç‰ާò¨'ÿXÃÞ«ÍÔŠ†Òó#æÎK Š ß9ϵ2==ù¢Eyü³ËqøRíwf Õ©J»’©þUa 3UÀ>õ6Ð\ª8úÔ¸ÆNÕèî =¢%”޽)cL²‘ô«|¼±ƒŒw5hòqÔF*sóg`S$ÁãéM@cÈ<çëH€¯½ À¢œs+äº)\î@Þ‘‰ÿ€ŠåWÕŽ*Ø®š¶¨¢Š(¢­€ =Z ¸‘Ƚ½dj7nÍå'ºšÏ¼Øì^†£[pIêÀu©Áff|…fñUâµ27L¯z›dJ¡íö"¯¼C  RŒ9!‡qâŠ(€uÍVH~ÔìÎÇËSü=OÿZªXX‹éYåcåFÜÔÿõªµ¨º‘¤þíO ;Õ™]`*¨,xôâ´.çOEXâOŸ;qÞ­Ü̶h è* –OµeÎTƒŒýy¬I.e’ã2†ìk.K‰`[{TÖ¸HÜžw±É«ºpTµrONãŒíö«v€-©ôlóOµP¡ó‘´íç¥\ÒW÷oæ6¼ôéV,÷m»?)â aþ‘1ïY·*VþcŒÙ ïTdnݽø©‹e[Œ³ Ê*âÈ R eÛ «A¿vF94Ò»põ"¡ï+ ài¤98]ÔH¦f U†2ÙëSB‰ÌP#9Îx©# ŒTcè¹&hü± nf§ê2ý¦!g`Ý©nßÍ ƒîŽXÕyŸ3ÛµgK&éö8¬K²ßkÙüXÿõV]Ã1¸)Þ¦…WfýášÔ°k7æÁÇ5¡l‹å ¤ûÓgi=‰–y=‡­Axf+ä!/# uÀõ5ϘÃË\±n>”å ¢`ܵj# ’En{Þ§Ë· àþôÛ´,ªÇ‚ŸÀÔÌbHž±·_cPjH%=Ôþ•ä¨ N>î{ÖY]Ø'oJ£´1 ]™Šb¬¾S‚Õ"![YÂ8Iò}EHªE»…`½{Q˜°’e G…IjóGo799éR@ÒGKgµ+(t9c—ÝÓµ-Ö%Ffqù÷ç©.pÊ[çvêKw%A p¸ë÷©¶r³.ìg Œg9¤¶ve,;R¯Ê›œáSS¦Øá.ìw¼}je#%Ž 4¨˜Ë3ÓÖ •œÝiÉ÷†¢gÝ•nr6œJ«$»ÉBzŽpj»É¸õª³q®j³cŠ€Q]`ÚG4Û’Û¨æ›qƒÇQUDlÙl`ŸÆ«l, Æ0*RA=8¨ŒI!T¼*i»m ÷‡9¦l€Ã‘ÏÖ¦‡Ìkv•€˜ ©q‰¤aË*DÏ—½†2x© RÌädðjHT»`w©!RNz³°¬,N|Õ’› f$qŸçS”ÙªÒ B*¬‡««ÈzžôXÞÅɉ¢'ÇlÔš}ÜQÊcxò_Õ%ÌJÆ2Ÿ3qº7îçn¥TšI@K—Æp¤Ó\í•Çe™”HGõª(»dÝŽõªq®Ù =MhÛ«æàõ«vä€_û¼Æ­Åœ=z ½j¥P®y?)­;(„g“Å^¶cÇ­hÖåiQEQE2eg‰‚ýáÎ=j ØžkfDûã=j;„g‹åûÀ橼çóz3íŠçî.<ë±9ù[ŒLVD³æèHx#ƒVgtÊ9@ïW¡‘˜Iu ƒ%Gzµ¶Çš3½E2 |³!s¹ÇÒ¡…܆œÈwIÀÇlä3–Ã=-Úâ#œœ>¾´º†äT ňAŽzqK{”+–'Šsœªî-³3TΠѦö' vÎ*VbĈñÉ¢Ĭ8Û´>µ´ª²H§JáME‹™·@j]–ȘÎö%ªó´qàX–¨§ÊEv-N,$bUúÔ…„Ñ…‰v…oZy!ãiiâ)m§åçåüi Iub¤ì8^~Uô×Y'‡$·¥:"VÝJ¨$˜ã¥[³ÌvJñ ?) qÐÕ˜ËpQAã“éHC/Œ¢}ãêh Éåf(úŸRh »!Æzšt„ rNåLþµ>fò‘Îw,|ð§;щ?*óTevfr¼r¬§vrì>POOJÏvf%‡Õ{ÐLk·$°=}i—#1¡N¤ri“Œ¨ÛPÆNÖˆœ†f¢SÁ\ðG'sÔTʃi•[&ægË€;SËËjhq<Ôê¤2†?x–ÅKà®óÉùˆ©v©æ¥Y˜’‘1Ö§YÛ”ˆŽµ(•Ê•®+¤+fŠZ(¢Šl®cMÃŽÕZþá­ „Oz†êc {—­T—l£z€²ç럺uŸç óÎ3Y.²üÀùíDOååÿ‡¡–·&f*F¤¶œÆHÏÊx4øÔ ŽÜüÄgÐu«1€6A×çÐu«(rV>§¯Ò¢¼;ž@ôýjµé2N˸ž€Õk’^ãnãŒV®dXà*;ð+gPºHtÿ-9b¡EißN±Ù”^¤PþŒ›¸fqŠË -œcøÙ³TÄ¿ÆNiGï"ž ôöÅ(d.Íü}=ˆ§}èÙ›«wúSÔ™0 RsëWULÐDK)lö5go™a@Êžj,’# HþŽUåÌHIÇÝ8úúT8ó )Éàâœzù¢ö©ÉsþŒƒ¿ÃéRÍû•û£°ëQ´Áã|ª:T-q弑>pª8NUš6ȇ”5»ŒœcŽ({2Ù”“·Ó4»¡Æxô¬»ýÂ8€$c»Þ³ï cš¥u•DÛÀ5 »¸B’“5,Ápçå¦DÇnñB†GŒ¨•†1éš\SA  ‘×5yðŠìqÓVHÚ›Ó¥Y?(f•ZrÈıä UæÜçŽ0* g)v“™0C/©¦[7•p%a”Æ6úÓ`b³y‡;qŒz×I]…tTQEQQܨlŒÿJ©ªŒØ¶Ww?•W¿¶ôÂxÀ«vËû¿5Ï,£ŸjÝÓ­—ì¯4½×¯§³g‹V‘ÇQœÕHÛpÜAbí¼ãÒ²"s$åØ,ûÒ³ab÷¹$·5=ë‚È3žjÖ©0wE­O¨JÑGAKh<ò$e!S…ÍXÒm>ÒÒ)Ú¼(«tUH¤€T{ÇÚdÈÈ$€=ê³àÞÌŠ8,@¦«ç7/îx§)*U ÆÖè}êh™Ñ–%v¶0}êh™•–6ÈÁÆ)Q\è‘àÒ¤bâ¿ÃÈþŸ­žUËÉÈúÒBÛC³cqnMKk"¢Èï€Åù4ûw6q’ÕNõÊJÌ$ £|ÅgwÈ8U[£¶F`AªÖ÷AÎÉ= W†}Çk¦*¥ pÔËÏŸå2¸õïM¹Ë|¹÷ÛŒ·ûS`Pp­‚¯µ65…ꛌ…=–1þ”²v½¨Bû¸ÂúzÒ‰séSÌ»Wx?)\œö©æPŠ[¶ÑRÌ6©oZÏC¹›ÐöªJrO¡ªˆIcž„Õ™Õ‹§5ÙSÊ Ü{(ÙSI’ ôb£ˆ©E‘ÌtÍ5H1†_½œb‘pÈzç«ð ³ŽÔ®Ð*í©Ù6sÌ+´ µoÖÎvŒL¼&P\ÿ¨¯XÊwôÜqQÝ#õ¤ÜWiåq·ÖšIàýÒ01I’=¥>#¸úb¤·B_ÒŸ:ÕÆP-·g.1Z2*‹-Û¾p@Å\ußvrÄãFóï6z³/9•³ü U Ž\“Ú¡ˆ fP8â¡BÅ·€:S;²x«¢®Æº*(¢Š(¥i¶FW(8ÚséY½%‘{Ò¹+Ž.$ÀàW;qþ¹¸Àɤ+æžœµF«½‚\šŽ4ß ö«²öG^û?*ß/³I–>æ>+jFŃ î1U,ÐSqÎLⱬDà¿>ÙÅfXª‰71ä~•+D®áIÜ~•8‰%”*O,yèKå£É´ãšžÕ÷GƒÁ¶4™·÷RkNÁÁˆâ©¡ÇÚŸø£”â²Ä·OüQÌØ¬äàÈýÖSS]`Æ“ÕËäýÜWXù1É«7*—7UïD‡~ÙãscŸ¥G02IĎÚԕY᪕ÔÑÇþÕõ÷ªs:*€Ï€*¼Ž‹ÁHB;J}œ{vœåcmÃý¢imÓnÒ>ìGƒýãD ŒÑž=ÍO*ÌO$š–ºÄðNjxØOsšc9#”Æbxô5|ð{Q¸çׂùúñFzûšµV*¤àcõ«pxcŒŽ*Ì@c“Ž8§´™´Xýáߥi³UÈ.9j‘¤Ý@99æªÏóeNr99ª3‚FÐyœÕI†xî:ÒÇPwƒ-õ§ÃŒîè:4>Õ·]MnQEQEÆhª7%Ó¨¶+šÕG"÷¹¬=EÝ8ÇZjÝ–þùªñ .¼j(F¼jäDIöÍnÙìšÙÙÊ«ŒúV¼d‰íYÌ«)ny$àW?>ØäùsŒžOJÅœˆä%3׿J’5w&¿ãš’’C„;K~¢¤·G“…;súÕ¶a^sÆ8­iØ0@Áئ2;V‹¹µ;ƒ•üª£eVR<Æš‚Ú Å"Ȥy»'½E?º`ãŽiY÷DÐì`zž”¯){v·ÚÁHžœR´†H¼’3N+„ÆpAù;SÊbà†ù7qNuÄ#'‘Ò°µ˱,4B0œÿì*HÈhÂ…É?ÅéR…Eùü£®*@ |ŠxœzÓ€6ƒÇZŒÉ³qÎJŽ*3!@Äu¨ÚMªMgid-¼ç§Ò©f$çžj¨bI óZNË"ÆGÕw~zR²2ü@n«ŒU¤\w51Ã(B2¥ºTêCCÈ$ÔÀ‚‚šÍ™8Lž}Ojc¶æ'¿j›,OEÇ+?¯5/ Þ¼dÓJõ=riç #2½‡­I®Øû¹§´šØ®ž¶è¢Š(¢ƒÓŠk ã´½qPÜF%Møù—¨¬íVØ\Cæªþò?¼:œU+ûq,^b™zŠ®˜ãf#ƒŒö¬d?*’{ã5œ§å\úÐ$);+"?Εf"B„‘íïNI›ÌÚI è)÷Q£Æ~o›¶)÷0+)lóÛ\À¬¡¦BwGŒíÙÔÒZ£'î…ïKn¤&G  ~s’OÞ4õO0ç9$õ4åRÌ bNzšœœ¾x'*¥i#‚ÙÈw' :Vr€\}â#©Œ’xèj¨Æìäç´í¤‘¬Ð9äð «Ð;4 ­üXÕØYž ¯Ôž*Q6ÜA<ÏÍAvËyè;TW©‰£Löª lvùqïU@ÚçŒZ…×ézÓdå î«ÎŸ0÷q—æJ xãm&á¼`à Á« yœqÒ®.ÜŒã§J²0zÔ$ºcäJªÌĺãåT’w.8(¶O6p„dcsS¬a\=1Í>Ò?2R8bì(…Ðà8Ç«W¡DN™(ãª{°L¹éÐ ­&ð¨wî*£†T\×9ªîUÏ®E>Ý!|yÍ:»ñÎ :$¥ñÍF¸Þîzaj%æFlã…¨—ýc7½IÊ!|î?Ý©~ê‘À9ô©s´0ÇÌ•0 PsçL'¦ç¶j{X÷6ò8fÎ-Ͻ‡Ê*kX÷6ãÚ¦•W;€'¥O;*®ì€[Ššb9äñWën´h¢Š(¢Ž Å!U,€Hõ£œà*¡Š[™\Ó<‘Þ±¾Å=íܦPÑG¿“ëô¬ï²Iu<&QIàúÓÛ÷KµqÜ^µÊ @bc•½i“³©@8¨]ØmzU ²¯þMR‘ŽTÐDé!û¥z{Õ‹Y>Ï2ÈÝéïV-ÛÉpäðGëP-Á{‡©]ʧ×ÿÕOiËÍŽ§¨=2:ÿ:sJZ^y=@«AX#«·ÉMYÚ&Y òò b¬ Ź×ñ·z€Ò´æÛæPvmïJØ-œcŠÊÕUÚÝ9=>o¥eê!š4ô#šÎ¾ Bú¬Äg…<ÕÏÌp QRè¡€?1À÷ªŠÎŠwUÄŠ+½†×acŽ_œð‹:Æócµo`TÆxU*ÎÌ)øGËïVíyQÅU¼ŽI%YÜTtª÷(ï.ìäÒ äœñÒ«”‘ò›Q×5Wc¤cÖ¢ ìpG¢1½W ½Í]-‚qòÕ±Œã=E¹>nA¡¨C.ãÐ⢠'9ª©‹¬·Üéô¨Rôý£sr§Š….ÇžsÐñWœ6ÆnªÃ"¬º¶Ö="¬º¶Ò}zT–‘›pó8;Ÿ ×°«€ÛFò8åêkeò#.GÌÔ’±q´Ù?Jĕ\Œý~”Éßx ­G8%A<ž”ècÜ à §FŸ&îHÕoÝ㹨¼Â">¸À¨Ëb3øÒÛ„Øer iócÖ–ÙcÊü¢öõ¶á™;zÔm#ÎÝXþ”×rK9êÇòÖbAcÕåIÜÀ·äÓc!›æíMSž}*Òæ-¯'ʬ:*ä`Ń'ÊtþUi3øÈæ‰[1“òåÊAíDÌ2xË´ƒÚ‰1ö%jWCZÔt£QÒŽ”QQÏ:@¼Œ±èµRþú;ù¤= »»KTç—=U‚âê[½¤ª¨+ÔÖm¦©ysvßt*Å}ª•¥ýÅÄÌv€Š2jYGÚ;IRܷ܇ô§J ÜÃoQ2‚x8#ÐÕ{¨¿xp e¶ãÒ ¸ˆnÂŽ;U ÆÛH§…löª’±TGUoÊ } GZö2£pˆg­O?jFˆÅK?iVê¨+M²ñHÞ1Å_išKy#FerVŒŒÐ@ cš#Vf‰§Ç7ï$%p6Ô‰?31bªI&\c*•9þ*¢ò'bª…}ê›°v#‚6ãžlþRH®„ä#v5Q­ÎÍ‘¸uþéìj³Bv•RzÕ%¬D\¾0(9§A#Ànoá§Ã©!ºÿv®¬iaˆ$ýjê‘ 29ÜMZ¢ .pIªÎêßtŸ”÷ªŽàýÒx5]È,BžôHI]Ç#vh–CC篭V¸"I0{ †R¹8T2|äj‚>.Npy¨Pç8<Ô  ¹çPÀáðz®cbÕ\DÛëz%.(Ùº'nõÑ$*ˆ[¢þCµQ]‚¯¢Ôº@ªÌËzÔ²†‘@,(äúÔ²&9ÆZ†EÛÜ©}ª dax篽Bëµþ~õ4®±[üMÁúU‰åX­B¼x?Jšypay'Фw•å˜ Îº$`à³øU!—Ù©æ­\$iHÓdûãçWgDûFÈñ±{ÿ*³*¯…?*õúÕK—-•_J«;@¨emÇ–Hþb2·­,L¨ÛÈÎ(‰•ãÐTW’]IŒ¥2îñî¤9éQÏr÷€1š³g!-ž26ÔÖÈD “žx< |°I®‚ºÊÞ¢Š(¢ÖªÜô¢ÃªÆ?™¬ wþ?ÿàùšÇÖ8ºÿ€ ŽÃ Îy’FÀÿ vR)&Æé¥;TTšpH­¿å¬œ ²бl¾sŸJ¿ ŠÚÃæýàäœtö«qÛ­ºo-óg9 (’Q!a°|Ø÷¨Ò¸»2—_-Få êi©’vrFAïY›‡‚òpñ¬]Oi•yÇÈO½eÞ…3[¶ƒËˆ1fÁcV£„¥¾ìrOÌjÂDVÞµ2‚±?ʤ… B8W'ô©#R©À1§\oXp:ŠžìÊ-ö³˜È©.KˆNHéÚ¹æi7³ $œVi,’k—SÔ«3“÷O#’)é+näw"œ²¶ïOz³%Áe[.¼†îAâ§yHAƒóŽwÅM$„!üýgÆò£¦ùK<óTÒI.ù þUQ$8ÞäúU„,€åËüTˆÅFX“ódT±±A–9$ñWŒždØÈc“íVÌ›àN3ý*Ë>è׊«"ü§æ_J¬ÜÍWn3ƒPF|¼à1LŒ“ ôô¦FyíWb^ãœã¥OŽzt©ãQ€@ªxÆ]@8ùp}óVc_Þ=0°ƒçÇN9«™Œ’6j· TQ çåúTϵFìuª¯ó°¢óT¤ÙOe櫸ÜÀúsPÈL’;àUgc$Ÿ¥Wr]±RÄ¢9c‘‡š–˰àþµ,+²UsÐ Œ³·®M9ˆå½Ni[ϯ5I[’3…檩Á'3Ь§=zÒÊ<¸”0ÎîM+‚ˆ23»šWùPg½$1•TŸ˜ýãíIeœç¯ÒˆãËßúU·•ƒQÐc½X20pqÒ¦ÜÙÛŽ+rººÞ¢Š(£ëÒŠ­v?~Œ9àƒùÖ¼Ú£q醬­]A•¨ÅGî‘@RÛd#¯VÎVƒÊ`»ö¹ ŠÖSFÆàñS»¥Ä ! 1çÖ´¯¯#º³E…þWå‡p*íÜë=ºˆÛïr}ª;XÄLårØ Á¨tÑÉ$ƒæÛ€A>£5ž ¶K…ã“T¾Æñ¤ ß:ƒÚ«›×NøûÇrƒPý—tìHëÈ«l$ET\` ió,±ª ÁP2A§H ÆÐ2iX!O0ä€T—lf?1X ƒRmB›ÈèE$£ËBÁ‰Vj[6!‰VÚ–p$‚:VTð  sYFëYb1PˆÞ6ùzQMTdoñ¦…e48È;Jòiœm9ÛÖ‡õÕvœô/š‰€'= w¨™A>æ•‘Ä›#\8ÂïÜѵ÷¨Qƒš]­¼5£U:àÏ5r?•ƒœt«iÂmÎqQg.z’3Çjp%çž*%Ç™~iÌHµ8EÌj¤N£×5iÂ…DŒœ\Õ† …Pv•ê=h·|¼Ê~V½O¥L»§Rá\ôu©tùF% ÛXt÷§C‡•Ÿƒ€üy­ M²Êòñæ®A‰œàö¦Ý)E§îž}ª¶«D€ô8j†ù6Àà aMªÒ@Ýyd<çð¨^0¼¶ÏŽrÑsïŠ‹Ë IwOZ¯}»* #)œÔûÖEžc¡½ÜA=Fk™’]ÅÈ9íY$²¾KÏœIdž:UŸ<•<§Ò¦óI®æ¥qÓ-D7HIŽd ¸uÇÚÊIŽ@#­:9TåÏzCdÎýÿ*Þ“ìÀH[p tß³&ýÜ/J´J….G~¸1+´±G1Û´šH†;õúRD0ëßF0çO·¸¶³s-ÀÄ|£Ú*Οqkg'›rFON3SZÍolÅç “ÐTRKo=ÎûbV7à¸Á¨n¥¶žó̶ÈúŒcšŽg†[ ððíÞ´©œ†Å_ …ê¤ ¶[oËX¬ì×’60wàZÅv&êB¿Íe&áÏûuyˆAÚý*ÞîNyÚ?*³œOjl+çÌè;ÒA¸œc ïI~tÙVü­±›wLäp9«ßgÄ ÃŒäqÖ®¶ ÁÏ<Ô2 HÙu^>˜þ•Na‡mÀr01U¤1ÏN•)U(8Á¦ !vŽÔÔ]£µ+ ‚Ý9Å# äûÒžO®*;¦ ÆX’rqI;ÈXä‚qM™›r’yŠeÛrØ “IfvÎŽvóE©Ä™cµR5 ²Ÿ¼Í»õâ« %ˆîÇ?­WE%Ø¥³]mvõÔQEQE(ïšM¡V`Ð@*AèG5œ±¨y”6I#ó®M¢Pò€~U?Ö° c|„}Õj°"IÐx(95¥¼7v¦IþS þÕv8cžÛ|¼àš®ÀF ï$nÀ&³°ÆÆ'æÂ“éTWå”lõÆj[Uh¯&‰ÊÀ2ÖΘ©ás÷€e­KÑË"7qššë_Ìzöö§êä,#'“Ú—Q`‘sÖ F"ÖIVbíò*Œ=¦e$¹ Nj¼JE®òÍÜTSM ˆ2È1¸õõü©—7Êb%G zÿú©“Í‹ˆÇ#¿½Qž¤?;,m×µJH‘ÈÞʧ­T–$s– Žh A$l”Æ SQÉ”U*F;ÓdaÝÕqÚªÆA2)RG#ª5`S.0Hæ£ ’F ­`í|ãü¿Â®[£º‚Ì:ýjÔ(]@ŸqDeÁ;#ƒƒN¸„ e#;yôtÑ•$ᦻ(í¹x¨åoŸ7-2CÎßQTfˆ—eÀ UÞ2IÎ*¼‘ïÈëNŽ-‹¸ m´àóšzű7ÆÛÁæžj†lV’¸m‡¶1WV]ÁO§ó«bLŸJÌÆÌÝ]Ëγ€+ûÆûÌÆ¨œõf©ä|¡#«š•Ûäã«TŒxã«V®Ÿn©#‚+sHµUŒ–εtëp±äjw™¦XѲñ¬½>I"™fDb^&*ÀÓ‹Ç2º©Ë' *œƒaÙéY3³Ò¨J6¶ßJ›Ë‘ Î B W_CQU—=êRe\ñ’OÔp*N €>îI§ñœ”žR̤9*£Þô¢!26òBŽ„zÒˆƒ©-òã¥G-²7NG\u=©ª¢aëÀ"šÄ„t'½Uvcçž:¬ì«çšˆ ¬5Ó×g]%QA8ž”ŒÁT±ÎÉÅ!!AcÐsPµÒº¬OLÖlúÔHŠ6f铯*œÚœj¥QNj¼ ¸|×ÉjÇ‹-‘ݺÿ:Í‹,ûC4鈊ÀëŽç¶iòÎþO”Ê:ïÔéfcŒ / ïE¼åÌŒÎBŽÕgJ°L^FÈŒpcV4ëPìds½©òî1Jñl#Øô­ÊßÃ*Ž ØÃØô«˜+tŽ_•©³¶nœž"#>çµTÕd w'?,p•Î{“U¯Ü4²z*b–Çþ=HqÆâ?I´¶}ÝçmI` iÀ8ïÅV–€¶>á­Ršæîã}j¬Ð˜Ã0ê eJ7\2ÈÛIn~•žÀ<„9ÆMQl!Ž3QÄÙWt…ÒC‚´Ô mÊÇ‘M@Ñ`ܤô«mj‚MÃqLtϦò_9$c8ÏJ˜Dgš’;ˆã“ñ‘Ô•,S¬M÷ñéRÇ*ÆØÍKs •PƒüûžÕ5Ü«3.xüêK‡²ãž*9Ô‰•”m ¸R$ðTmÀ"A늎@ÝœF¥7åRyÆyÞœqéL‰wn$ù†1Þ‘Fål€z EñŽzU„8T÷ÉZzœ(Ï~E8ïU®€QG5Ã=H¨fà¨M .F¥/Ýd,1Í;£®k¢‹çÒºÛPÞ<`¹âº€®=®zÎuµÖî"bH”\×3i8´Õî¢ÝòÈÅAëÎk Îao¨\BNC¢®Ls+wíRNwLÝûSåæSÞ¢eÜÙô¨Šïlž”ݹlÔ™Ãî£T™Úåþ.)ߒ&>YNK’i#c³gUIö¢6cÞ«œÓ$phñ†cM5›)Œ1éïM`ezU¾Ã#¾Çe zâ¡û+3íbïQ}™¶±WK]ttQEeHõ×]èÊ:•"‘†äaê1TÂíb[µs’BRVÜ:XïV`}iëñ°:·½O ŽÔóæcsÞ¥Š×bù²pƒõ¨gÚA‘s†ä¥R¹quiê*È Û—šžÅH…¥`wÊÛnh°ùv"V<Çy­m6#¢–;òhŠ\F¹ÚÆ™¨9KÈÑX¨a–#­6í¶Î¨>QŒÔWi¾`‹Ï×µgß¶6ClQœzöÍT½=ç~½ªVÌpªç¹³Wpmí%|t$ŽÄŠ´AŠE8 ~µr…Ú@ã-Çzª˜÷³‡lŽõ…P’ùæ²Þ+i¸•‘\t%°k/d2 ;#¦MgùqIìƒÆhû *îëœS¾Ê@È”2}sŠQláÃåV*ÇËmHê*WýÚ„:Ô¯„]£œ Ë-™ £Ï×¥QÜ •=éT÷fM§µJ®rb Œ§Òœ‡ÛÐv¥ D›GJ³æ5=A©Ì†GŒ1V7—uÏj2‡0võp®àóšU`¬ùç4Ý€ª6çž”s€J6ö¥dùUÆ0£õ©$ŒWùE:Ewᨤ„7–ìqÆ~µDÆ'¶qMxòÊÆ› UWn1õ¤—j㑎”É2qÏ+BÖä‹`ƒï'VµéŠ„ò£i¥Î`œcŽk*kb5Y6ŒÆØ!½cÜ@WQ}¿pA¬·„­û>Rr*ã|Ò0ÏEïS±Ëœƒ½LO'ž¨¤`±Äp>”Æ Eõ<})í=Í6 »X䓚ln0y$暌`óÍD—L&# à Ti1qŠbLw•ìN*iî#Š_/“Ç_J–Y–96âžó*8íÖ¬FÁ£ó“žy©ÖEh÷©äóÍK½voÖµtÕ·ES]¼ Ü}sÒª]^y?,@;w$ð* ®|¾#­D ;¶ï¼Ý~•B-朴„gŽÕV%—÷‡–94éÉhðÈéS߸x¼´pÉ¿ ê1RÝ6ä©ÈÏJdÑ+‚I#n8õ¨f¶†e,x+·Ö£’¤\žÅLd~érŽØ« œÆ½vš¹aRŒåEM´bxÇ"¤ ’xÇJz¨fÎpjÔ1aw0ÆyÍ_‚ ‘îaŽù«qŵwΡ€ûW‚Æ«Ê@}«Ž„šŠR™¨ÙÇîy'åâ¢fºÿwŠ˜e~”§…Î9SÏÜÉÔâ>^{Ô‰“NåV§ÄŠFrA!©ñ¨ÆyÈäRà‡ùŽâ)1‰>c»„Üœ‘Qä7wŠ‹ƒ€}*"GãƒUî¤ØŠÞQÜ>ø¨î |TM”µ 2EDß,#ó¨ÛˆÁüéŠÊH ’ …"•$`(R1Þ’æ@/¤RmÔ“8°ÁÎi’7ïÙqÎjÍ‹¿”è§åãîš–o-ÂœŽµ4%¼³ƒÀë]vUÒQE ÉTNƒ85™«ªÄ‰0àÁªzˆ‹ èN ©|@VÈ>´XÛ;‘ƒF² ·ÿZ‹Xˆwv¶G½FêR÷ ÿ-ïÊ ¼Co©|‡ÆáQ\¯“{Çqš{ èH#¨ÅOn i#¼Nª:7ÿ^´Í2Œ0êz}³«À¬˜éƒê*ö,sZFÑHoPjÕ£¬.ÓÈ#¸¨'Œnuß³$H§Þ³µ(QeoÛ»'õªw±¨fŠççZe´›î:ŒHJþUJÁÄ×ee ‡|UK6\“ø»ÓÂ*FPçqow«#ŽAþ°¿îÀ«;PEåÿx¦² ¢•C®H>ôä…%·¸ø–2J§Š‹$+ðëÒ©Š4Õ2zƒÚ©ïnPO|Н½`€M ÈpÊËÁåzщ8] uQ@u =…d‰Xä6íÇüŠÏ“†=GçTC’ÄsœÕËr&‡ËÈ-jžILüÈzÔÑbDºÐ°·œH…Œ™ëŠP„ÉšxHëŒóN  ÓŠq¼ÇN)%“¶•éŸá¡Ÿ•Ò3`îQÈ«pÞ}¢­zµz;ï´[”(:Þ­¥Éš0ªï’~f<š«ÉÜHäžMW‚}MC‚3ÜŽ¿Jˆƒ“è)˜;½…Yûãdü쪙ùqSƒ¹—L2UÛ®Xþb§¶;g9bR¦vyɦËÌx'‘QÍÌ„çëQÈIjˆ¨òsP²€Ÿ½Q²€€š£rY¦P{p*¤Å¤uSÔp*¬™yUÃmˆ<£÷ÙBŸoJ¶Ðá6óÍZx‡—³¹B$1H7&Ч¿z¦¨ÈÃ#NsUJ0ÈÆZu³J$+ËiÒ©-»i]I;±œÕ«-À–sËéÍX²F™ZBÅÎI¬ZFÒ«FˆNNk ®¶º (¢‘•\à ­6HÒP¨`F}iU±¸ŽGµ/^:ûSÿX _¯J«}”– bFk#^$·˜tÉ«e^Ò‘]£mã¡þZ«kröÒ‰¡ê¾µ ´t=E9ŽÚaÚ~qýáÞ®3ÛíG(zƒø–¬³Ú  üÊ;Š.ãK›`êØÇLÿ*]R$¾³Iã`t÷¥¾‰. YQútZÒ0dŒwÁéYšu©–î5ö'5JÂß}ƒØš0ž|®€„Lþµn!\ÜK’v>ÈÏÓ­XŒ'™,ƒ±ÂÓYÂ|ܓЅ¥Û‡nµJRw>õU|îh‘väûÒÊs(rr1Šþô1éŒT)§ ¹¨˜6TñšaÌã¥6ÝLOœ‚ìp@ô¤ˆÞ›Ò›òŽË²ÊþV@Ë1éSí>Rà|ÌjbqÔÓI ‘à ¨Âœ+2:SBr*š2Cäuõ5$yqO†â§_”•ÈÆ3VPà•àŒTÊHùsœTmœ{ÔoÓÞ˜Ý*#€œmÎ*&årOËÒ˜Ù+Ïݨ^×7w¨š,ÌlÔF?Þç¶jÈ9u,y7½X w)=@Á÷©·|Ã=@æ¡™TFÌÍž* @Áfà†@ª )–“Är;ÏLŽ´Aµ~¶ëFŠ(¢Š(¢ŠŠíw[·ªüÕKWˆI§?ªaª¶ že›z¯5 {eýÙ8leMeZ,WÀï±ÈÊ?ôªVÂ9‰‰ŽÖþD{¡˜ÆÙÚüdS¡ó-.$‚B@“†ÛÚ–"öÓ4 È=1Þœ¸ŽF.0˜È^õOnë ²W1•Ü©ØÔ°°‰œ>J•à{ÒB  ð`\ÒZŽ?<¡T€}sI+‘ºcß4|±¦ÈÓ–?(>‡©¤‘Ò(|˜ãÁc…°îi$$~Z. è=»ÔS¨{Y[ ü¾œT2 {90?.*)TVb9ŠÏ’ê8ÆÐ›ÏsÚ©½Â"à.ãÜÕgœ"à.}j!~¥¿Ôžâ™ö°N|®´Árü³©É^\†åA©©†NîTT­‚ 9íUÙI—ÎOBEDQ•²Àäò FQ”üÀã¤,AUbQ[îœu¤9CŠ~í7•Æã´†–Þ0´LUˆïÙ¿úô°I¸”$íÞ–)7exúÓ¤]¬sœö÷¥`<ݳNÆNi©Ÿ±ÊÓ;˜ã•¦ î&¢óäŽXÎâFìLY\L€±äÓWó‘IêqZw‘*Þ˜Zм‹aGú ½uݯ늈rxë“P¯Qޏ¨W¨Ç\U’£Ö­(%FzŽ*Ȩ5 ÛŒíëU`TªàTv &7AZmІŠmìq´õ¤µ‰÷žƒ"œá¸»Fr7ÿvŒänô¤ ¹›ùy¥ ¸¶1òúÒ«ncíUµ&>w’ЪNOùö¨/›÷¥À5Zí²ÅÆÑš¯–*Ç’Æ>µ JNrÝ©‘&H9ËVòrFܼ“[‘#>r>P¹9­uRU(Ö…nV•QEQEɤػpK7J¥©Í²()-%W½—lÁ;ªœˆad ãgõ¬CBèàô¬™‰Õ‡j|‡ÎD™NÖS‡4®· êJºðõ$Œ&T™r¤pE;xy?vÌÛøÔó>PãOó€zâ¯Bÿh¶ÉPÄzk‹c•ÜGµ\3BI\š£p¤0†Sµ ûÇø}ªœ£çÊÛTž¾•V@wyr.zúT,±#ùc%ldzš‚+ùc0ݪ<*¶Õûƒõ«qaóœãš)†Î}êt'Íœö¦Ê1 ·QÈ1qÆ™ Â7ªA šËd–õ¨"Bg‰sŸ˜UxP›ˆ×¯5»©ÝɌζub¡â^‡9ÇçZº”t9ªÈ:ù⩨ï‘UЖ¬F@V>üÕ˜ÈÝÎjhþáúÕk±ÀNÙÅT¼ä…5^뒖ܶÝОôø°¶ùÇ-úÓãÂ@)«ÁdçÎF§—’jO §8X9™Èà÷5¹MÄŽ£W)–õ©nmÍÁóC(} ÷©'‡Í!Ôàãó§MrwýiöV†3ºL ñíRZÛùl ˜ŸmC—À«{‹Hb ]IÉÇ@*ä%¤˜Æ :Î:VáËÊPe—#šÓ­úÔ¢Š(¢Š(¢¢¹fq´š¨jûÖuÆÑÁª·û„a‡J‰Á©v2sY3FÁU\e³T&ŒíÁì)¨¤&ÄÆæ\sL‰O „e…5ýÄêië!t#?‡žµr [˜«QJ[*FÞ@"žß¾]ªÁYzUÙvÜű îæ¬HDÈa¹i³Ï²×æÈsîj«µMPrä(^õÌá,À$†è1Þ ‰[fé2¡Šª[FÆ#,¤€¼g¿5^cù>\Ui.|¶vJ®í–;ˆ÷ ±Á${Ô Ò±ÚzTM½²Jcnn*¶%ËêqPˆ 9#¾*O#©­;©ÂvóϽjéÛc‹a;pr}ëBÓ RqН8Yd*yªsíy žy5Zm®äT jÊÁAÁéQ¬hv:TjŠìg:‚-ŒŽ~ž• Èl¾ð©2AÜÝ1L)æ.Âxlž G³yÛž4Ò›Ûnzò)#ÓÌ2¬Ï.BüÀcÒ¥K&E™Ÿ;yøí2 r9©'‘§˜¹8¤¸•§œ»vàRJí$»jyቴücŸzwAš–>3ïÚ§‹†>ýªhøÏ~ø¨.é’IªÓ€ò'š¯0Ì€b™q †’Æ}i“È"æÀô¦Í(Ž1’=…Ee)"Lä» ýi¶¯òH%ˆÈö¦ÀÙF%˜~UÚá£ÉõÊÉì:zeÀ;Õ;Ö­yÞM²;ã(0=Ïj°%)¹#åZ™¥òâõ³~Ñ3Ì®ÎÙÏ>€U, vcœþ•LÈí&âI>žÕÑéxû;–çÞºm±32Xþ5½¥€mIÚ¿ÿÙÿØÿÀððÿÚ ?[¥(,['ø…Sœ“/»œ|–PAœœ÷¢%lù„ýZEÈËrxÐP¹ä’Nx¦îÖš63Æ)¡Cž1U‹§%LÔ,pûw•9NsV l³îœf¦’Á{¯2rX¸¨®3¡°j9IȧœgëLWp É<B…È Bt8S´õ•a[¨=ªulpiIK…ÁÈ É¥âe=F)H®>î) ³ª €O^ø¥û9ùF0¤õ¥òOàzš$»†Ðl@ç¾ô²]Eo„A’=:ÒKr‹Ö–ÒàÉ6äŒý)lî ’SúS­¦ÞøÅZÇšN9ãŠ{þùŽÜ})ÄyŽHçš³ 6qÊ¥\¶p— ëÉXñô8«0’» nÛQ·n~óãŸ|Õp6È7™:Ÿ|óQ*íqžKëN‘¹99;ÅLdÃ$ƒ¨$8õô©7a•”ÿ½XZœ&BV+!Î+'QŒÇ|ìÊÇ8¬ËÈÌwŽÃÇ5§¦±;¡‘ùÕ»"d éŒÈúU«VÞ×îãjÖâm%Aç4ñ#X¨'4íåTp½j+³²ÂF‰Bä¹â¥ºoø–1†™Ï©nØý…Œi€,k™†_˜ ãOã\üoÎ;V Re¶æ¶´©f<-ÈÁéZVVàPqÏJÓ³ów)Òµccç?wÒµí$k@ìOÊ{zšÑÌ Ç·§½W´e×åw,}k9¡xd2$màÏúÕ/(Ã(•ùÜÛ±Säý¡°Þ:{欇ó/]°˜8¦sS£n¸oöðqJ0’IÇå“îš³K4g÷sãô©Ð2Á9ÂÉҫʾQDÆý¬+2ê?&AÆíb?J¥:ˆäP:näŠÓ|Äó›ó§ˆÄ·8æÎGãÅ=Ó:â¡L¬À÷dÁ¶r4w‘£“… S­$+tˆçî¾1U5½5nœÜDÙ˜a އÿ¯RkÖ1Ü9žÌá‚:Su›¸c4\Ê´²¨O?tãëUf@¸ú~´ÙT>Ÿ­ › Ы½°1Œ`Ðyã¦0}é’Œ(`G¦Ê»T0#ƒŒSd\ÃŒUiÖfp§“øÔ+y¬ØïP0mìqN¶>Np9§AËÏÿ^Ÿ Û©d%ûÀgø©í¹ç­9¢ @Ž8( SFʼn~QϽ1òŽj+¿f Ï'=)´6Üži„‚ÛFúõ=ºaØvæÿ šËz¿áRÄ¿¼aØRj×b8Ûk·9ôºœå"¬G_JMFf ±Ö5ž! ‹åÎßz¨ˆ÷ªùybß{üj§•¸ –=kZÒÝmП¿+ e»{V•¬K œ òÔÖ´B%8b:ÔÅ’9Ðþ”³:G ò>é%`¯ûž; ˜‘ ·|‡ƒžÕ/š°&ÅRò0ÃÚ¦2ˆ†ÄRÍÞ‘šAÉåð´ÇiŠ,Û pj7óB,¤` VPªò'éRÈ…hù”àäý9© ‚«È8#úÔWvÂëÊ â]¦‹¨ëËâ]¼ý)—­ÆÁüX£Nµ0ƒÍÔÓlm<½È ȢÒßb²Ö¤¢3#±òÉϽ*"$,ìvÚ£m±G¹ÊM Ñ4qB¿JrïšKmÀÀéJ̆.qÚªC¢CþkÆÌ¹ÏÞþ”ë} —Ξè§'æéøS­ôÈà“Í’,ß5uTb0‰8Ô×7h¤¬J‰}£š|÷ § ‹¾*_")" ã®I«Ÿe¶šØK„.2žõkÉ…á+{ÔläÊÑà@à θÉ;EÛŒ7j§3éØÓ&¨ ˜a× ‰,d:Fj)H˜H¼V£u¸æ^FkjÚT¿¶Ì±ƒŽšÒ…Öê,ºr:äÕYb1HQ›|oȱ¬­B×ì“”Þ]$öªp}ž]¹Ü¯Èö¡CWL–_óŠ‚%Hw¯"™¸‘^>¢–P]¼À6¸¶=©ó–y¼ô]Ž ŽäQ.ã?šƒ ¸&–ICWå<êjÛÝ$¹a„ÉùÇ©«/:¸$|¼ò=êœø^Ù'¥R¹c$ñUfá€õ¦ÄÊ»½¸@Áwg¯J!`?J}ÏT×8qëO»ÂáHœÓ®0 Nj%$¯'æÜÜãµWS¹O<óŽÙ¨Ü šN$zRqœãÛëIÀéÞœ>\ÎiÀãœç=©ÃåÍ$€2œ7?Ê’L0àäÿ*kàò5Œ¸ZhNs@^sV#A$ƒþÙM̦B~\þJ›N·k¹|ùþ.•-”&v2Ÿ»ÛëR¨GSŽÕ;ÈiL ã¡õ«3(DUpUœ}ÓëV$0÷›R+Ÿ©sKm'‘xpÅAëMŒs‘œ)ódà• W’O-ú<¬¬@r{T—JdppoZŒ9ùÉù]Ýj³¹"B~Wàzjí±›£"íãÛš˜°‘.9íL\°•ÏúÁÎi±©Èsüu›¬Ï$P~ä…Üv6;U=Fg‰1cƒŠ§¨Ìñ§îñ†<ÒܾÙ6¯ÖpÀK…è*IÛ÷˜^jcŽFù”Ÿn)©û‡FnW4Gû¹·+œTò Í&ÒØ*û`Såæ}¤ãø}†1NqºFêG§µ#–^ÜcÞ‘Æ ÜcÞ‘¸Î{tªÆgw!G éPùŒÍòŽ•ò[ŽÔörøì=)ÌÄØS‹’)ÐICóg¦iÐåŽÃózfŸOÊFjÂŒgZ‘œ ŒñOg‘ž:Ó·Œþ4« gÛÉÏãNWËãß"•_=³Ue3\0P‚q´Uvóe!ppN6Š„’#ž”åK{FREþè>´õH­[÷‡{áâ•DP“½ýjšÊîK‰öȪ°ªä‘ÆÚšÎå甉*òjkYÚF;ð# Ö§dŸlKµ©¤%g¸>RíAÔúЛ9*0£½XÂ}Õ”·$jÒ$eÂÂnäÍO&UIÂŽI©‹DTIQصt½¿•µwÂZ´ÏÐH±P‹K'”sYï î,ïÁ<(çM¢åŽsÑ})à…Ëmf+ü#Òœåû‘ü#¸§#l;ŠíNg*w,CæÛœR=ÞÙ ¤>îpE9î ³@w ã=*ÆH¤Ìg$úf«†2Å+2äsŒàT9i"f(sŸÒžêâÏö¤’?3iå³ÇÒ‡Mý9Î? LrVÞÝvŽ•$qÕ'o8ŸQRßO¶µ@bb;Ó®äÄD Á8ɦ"å×{©úÕKEÄèÉ÷ºÔ6Ê¡”üÔÌ™.ÚO­¼·ÎTdÆO\Ð…žä‘ÎÀicV–ä;íúT±#Ý_—‘þè#>œRĦ{†y€:Ó5&G‹€ã8=:š†4$’2‘rè9 ÓU~Gd<0Î)T.ÅõèqÞœ¡J‚OÏíÞœ m÷¨.mwGÞ5Ô $ѹ š‚xQæFbÇÍš‹û<« Ð&pxÎj'²ÚÂV‘vçj6µ ÁÙ†;â Ú¾`åRüG†xR)ªw±@ŒIrr@'ó¥Š6$±çh?ýjXÐä“Û­9#HïB Ünô¨¼‚iîêPpN*Gu)ÐñNvR¹ÇJnÌáqÍ3fxïMÙÆ Ž‹Ð/4„Žè4Þ21éŠ1œ4¸ã S±Ç¢a½Í1‡çQ°Á÷¤ŒÙ†4 $äpM*O½Ks)H‚/ÊÏßÐSæ“d{F7Jtϵ¼Ýê”6òÜI°uÏÌMVŠ &“hÉç“PEÊø\ÖˆŽ8`ؤO,O-ÿÖ«Æ8£„F¤žN~ñ«e#Ž1#þµ2çžsR$f4ÉÆO"¤T(Ÿ^”°™Ü0yÅ6ÝÌd–78¦ÂÆ2wu§’ò>PŠ;T…žgÃ˱GlSÉ.ã|›GÒ”G&0ÎØêÔàR&& Ò6>óS²¨O– rZ•Ë`d²œE9s·%ÛÐTS8å>”,f?Þ “øšjÃåbS!R}9¤XÌx}äÇiᘓÅòÈ[8É÷«BRËäÓËÚ¶qϽOæ0«³hÚsHc 6®ï½ƒÁ¦²*l‚FA»ïx¤ )X¤ gïc½9ƒ¬Q dRÌ+éSM¸CJñ¡i0Yz⟠>\1+*–nHëMG)++( ¹îjŒr¦hÜn•úÕe¤Œ­ÈòB6xÊ·¯µ[«Ùæ2·÷½ªÄ¤5¶=9SQ•ÁÚØŽõM[÷ŠTílÇz®‰ ô]“M†ù™~LtÇøÕûhü‰.>o×å#¦?ƬžP—œ»´–˜>öääTvE|Æä‚)°òdÜy9ÔbÑ…U§Þbj´lÏÔSµ>ñ¨ƒO”aàš_¿€ «àà†¦_Þ ‡¡§¡ÞÊÃÒŒ³;ŠÉÀlu‘ã–RîZ5À8ê ŽûŸ”pE46:ªÿ2¶„Ô?2¶AÚ© à7CÉÍFŠ €ÃóLP n)Ë–>€‘øT€–'dâž2Ù¦žª1ÏA‘NíF9éÏ4à˜BsÒ äg€GçPxÉàö¨G`zZüÛŽ1Æ:ÔCvíO<†8ÇjL ˜çüipýt˜iÙ$cø})ÙÈÇAJNr: a@ÃóžM4¨#®y¤ ŠvЊ9<žiÛB¨úóNÀ\RL°¶<À2:Ö’Q¼|ÃÓ­6AÌ>aU$¼l2À»8$u5YîŽ Ä6©ëަ {“ÊÆ6©ýj©Yfp¨I è*¸Y&pŠ ¹5I%p©–r*Ø…ZÚÞ8Y·”à±?jÐB‘³nÙÜÖˆ-HŒs´sN£\’ÿ1ïœÔhñ.InO¾iˆÈ¹9äóR)°e?(è¥S ÓtÔªbošCÇj˜û;2Ò¦AH Ì£ô©P'bHô¡‘Us»§ f‰¢T@G'¯ZIQUCÆšÒÆÄ -Þ yQ€R g½DΧålzÓ1àôM¼Üí秸¤âpØ yÎ?ÙÅ!ýè88ÍRÈpÆ7gúU”Ù(P@sý*¬Ë²Páy§Û°ÜÎéÝRÚ²†wqôûr£%¾µË”nÊǧ¢ÔO1(Gð±Î=ª7“)èþ”Æv^ ÀÖšQãgaÁ8Ô…Lq‰uàSÒE–=ËÆÞ§‡Yxãbž]r¿2CøTr·ò¨ä<þU¤‘Ÿƒ‚:T¤ßééP–}Þ†•Šä1ÎqøÓ¶ÉÎiÊ[NI«ddãÛ&¬qÍOè⣹‡ÌS°à·ZŽx·.Tàž´É£,¼T#O2csíÓ½F¶;ŽY°=»Ôki“–l Ïoh z•àŸÆ¥3Ãn§ËBAàã‚ií4Vëò/ãMµÔc¹ŸÊ1lÈÈ=M%½ê\ÊQ“nzf›mv·P®1ÏÖ®²»£1ê:Õ‰cÊn@ƒˆ«§Ë¹B­*#°Üp>ƒ­F‘Èyböi©’@úT€Ê“9ìEJªr²ŽÄSÀ‘NUóíNI›pF}úT‹pûðUwcœô§‰]Ž6ŒÒä0*ÅIýj'Øà«Nzw¨ß ¸8Îh;š2½”ðÞÝÅ&YâÚOzûRÍð½éÀ.Bà…SÇ¥LŒ›UH!#'qõ5*²áAûªM8J­9w­X7©%©ìf%G¸ÅJnUàÀ;K>´ÆÄd)É=qíTgA A-ŒâªÌ½qKŒÈêÝ%jM= ‘¤ŠS´J>V©,£‰ÖHœã}V­¤ÚrppO÷‡Z¤Èöw dílp9ªa ¼Å»“O¸„k‹V%—ªÍMshžOÚ­$ýäEI= ‰í˜>zÖ¥† -ø$zýjæ™’7úÍŽ0vžõnÂ68%ö•ê)@FšCÉ}ÜZ]‘Mq3d™7äcø»S–4y\ÿãÀïM`DgfÔ ýj,0ƒ ƒ*8Ú Dò!ùÕÆ)Nã(ó_`ø{cŠy‘¦»?hmª'onÔàÍ,ÄÈØrqïÅ$xŽ6B9Qµ3Ýi-Ûd þ±@Tϱ6" ŸŸÚª\>é_p ~5Ví÷Ë!`*´ïºF8èqQƒœ(Î;æ£b½é€“þïzR>l9اcæÃŸÊŽ~cÚ«\;͈·aÝæ¡žI% 8AÒ¢™šPœ(§Û¥±’Å,?.ìr ,Go½9Žî‡Ÿjî=zPÇ9¨Jí ÎqÏZŒä*’qÍFÙ“LIÁrò;MIFã´óÞ› ± ybw²€ 銱™ùd'¦*ÄoŸ•ø5&î«“‘NÝŸ—œÒçe‹9À¨ÎÏ3*g ‡%˜«rJ¥Xu$° ¬|¤6rK)Àü*rAFÏ$Ž•T«e@9äõª€ìá‰9ëU•¶°Üج‹`s(äv?JÓ"Ýâ g²ÿÉ«äDÊÈGnµ «»÷{XçæF ƒžõNxX·–‘¶O(À`š­,o»j«ƒŠ•^9£Û2²²ð ZG·º¶ÅÂ2Ì£h8©É†æÜ³©Ž•a™7DÀ6“Ûÿ×U!G` $.á‚O¯j‚4cþ©°Št‘:± …hÀŽù¥’ brãUŽù¤’9crÀò¸ߊ“…t d#µ\Œ„’)oR€HÃøM\BeeBXv4KÃnRrßñ§^FC$düãœ:K•ÚÅ“£w¦‘òõ$ýáõ=j«)ƒ–¾½êéÉis€s†§½+ïfWÎt¯ÿª•²Ä7ñÕÑFs×,jŸ§×$ÕcéÓ¹5fgt¦î%ñÚ›¸—Çjr?ͳ=Z…nƒ=èV9“fI8¥Û¸ž)vî'Š•T( rE<(ïNÀïHFÞOZiëÒõéU®[÷ª§§zŠR ª¢r<Áš„K!`1»94Öò•ɨäÓO–¬Hi©)O›hÏ`„SFv>nÙô¦¬Œà9íRÅ{0 ¿)¿¥H·2¼®îÝ©ëpãï}Òjßž§*C´ëVDÊw)62 Xó䃎¢‹„DPLnãúÑ:¬‘í µ$讄+Œµg¶™6r»=óUÂLü¥N{æª5““Á¦‡MØwÜLŠ=3RGbªwM*lÔ‘Yª6dp+B8w ÐÜ«klXŠ|Æ*ЇpÊK‘éO‰Â¾Ù¾eö§BÁ,¤”õø›kí’*À`»‚‘?ºjؘ.B‘:ì5cÍ€/¡£tnTòß=©ŒÑH…V?.L¸ôÅ5Š2kf‘ÛsÑúÕIIÞw„b«Jp䑊xddÁ²vþ,w«Q¼RÛm ˆqÙ€ïVUÒHº ÊN´É­[á|ã§½6çJ/›láñÉCQϧ’‚H˜69(iÖÐ2BNAÏJ~§¸ ç §¡¥IgfÊŽúô©.)PÀ”nã¨5kS•bxËåâ#/Pjk× ë»,¤cŽÆ¡I‚–1‡%‡~õBÞåciDhìϳAV ÕwˆÕŽïºOQNȇax²¤rÀw÷«•µhÌЇ,sS!G” dûÓŒ;Ã2‘ór)^Ý'Iyädâ‰!YQʰÇ4B†ÕygbO©Ö±-’ÕByÉôɼ·@H*܃DŠŽƒŒÜRHªê8Æ([AA.1B[däe… n È9¦ËfîÈ¢‰-KtnžÔ’[Ðâ¢DŽ&Û$…œt㊈*£aØ“Q„T8c“íI6àpC=ךIsèØö¤|žÇÕfÞ-ª#q Žø«D²@«ÈuçJž8àð¤ŠÝ¢\çØT‘Û´k’x=3R$%W¯Ò«ÝY]¢„jêðžEEqer‘ù P{†âÖáWx€íUíÖc:VOïÅWeó¨dõÍC Éæq•ën,> ÀtÇzÓm`»Àà0­ùðÊ3ŽöpÈL1R)²N#ÜB,¸É÷æ›,þP$/$b§P·6é*·Î£‚+L¯´ôœ²Æ¸v>•{ä¹³+ê½EBµ²»Å[ŠÍv/i°•ˆ[`œñQNk¶3ž•ñ0I¤dJŽXÈF8É=‡¥RTÊî=ÎꦑœÕu俢’¿#¯µE$_7ÇóqM”˜#ÊŒ»S$&%àe6Bc^[ùUO1Ê–'w×±¨7¶ ÎáïÚ¡Þq‘ÉþUxJÿf'«‘ÓÞ­™ÉÇñçV™ÛÊÛÜÕQv’7䚬*Éæ«‚ ÷ëK«‡XÐíCý°iñÈ0Áí^ö§G(*À)Âñšš3!´„§¸j‘¾ÏONië»ÉŒŽ˜©íL‹*ù ô?άZ3#ƒ(]„w© fFýçÝÁªÓ,!‘KtÕy–?Õ:çÐð*V)?հͬ°e;O<ò(‰%ˆm#ŽÙéDhñü¤dTwÈñM–< Ší^)yï“‘QÝŠO¨¦Új Xî h‰êzŠ[KãXæ%£=ý)-nöº¤§(JÔS…•ì=k@ «;Uü€2­Ö¶ü¨g©¨Ý·ü mÏÓƒñ­>Ýž…Rñ7P:Š’ÕÞ0È«¾'<ü4ûvd@ÝT“2`pr;5GzQˆ!XëQÝ•n@ô“D¤²‚ ìEF¤°šªmåÜÀ ÷ 0I’3€jäŒà»b5U ëв€"…qëVРÐTr],XrxÈ8¦ÉpB€I•šÙ.ÎÜÖ{î23íZ¶³K%?'­;ye’Ð Ÿ“ùV”Ní#¨‹p.Ñàš0[)"˜gûTmˆ7†£i¾Ð®YzUìåímö5]-VFÛ¿i@¶Ë!Æí¤UôÉSÍÓ¡«»+u_0AùÕݪ‘Ÿ­Y˜¨P»óÔUˆÃ\ºªæ ™œ€ nÅ<ÅcŒdU¥Óc–”–ódS’ Mö4xKóæ8íÞ¢KvŽ5îÄ|ÃÓ޳ͫA mÿ-nuþ¦ÜÃmûäe©Èw®å?y‚óùЄ²ó0\j‰LƒÔÒ(Jäü¿. ¤¶Y’díÊᨀ02vR9¥#EC‚>\ކ­ZÁ"0È‘ÁŽõb£EBι^;ÓȉHGoÞAô©[)ò]¿|Ç ƒÓëJÞF|³÷óÖ£”[nچﷵQ»ŠÔH6`ØÛØÕ[˜áÞ6ŸoZ0ÌüÒ}iª²¹UÃIŽ™¤ ì@Ã1ö,UÕ¾PxÛéSI$­ G;AþJ’GvkÚ¢(cRÊs‚zª‘²èwlnžµ+) ¿0Ÿ0)”Qœ°8ô5<ë±ÄJ9fÎ= K"•F½7g>™§ÈÊ£#£ó«—SÇ †N6צjÍÄË¿ÃÒ¢‘™É!sÉþ•›,Ò\N\¯Ì[œwª-#Ï.ìuj¸‹„PyãŸjè­ãÙnˆüñ–­ˆÓdJaÍd1bB眒O­s„±Ú:â¬rKai@ÇÖœ)@ů¯ÒÇ4SY•{¶8Þ‘ˆDÞÇŽƒëA!TÜâ›s8ŒÆû¸p#ži·SxÎà7 2âb’)ÏQÅ6åŒPŒÒt4“¿—´c—èi'}‘‚ŸÅÒ«Z^8™Rr ê}j {–…î¹õ¨a¸má\çÒªO<¢íÉvqû¼Ui'=ŽqƒÚ«4Ì&`N{TÓñÅ;®c˜ã¨©eRcŽG•¹ÍJë¹Ød-ï—Êz©¢<ÑÆWÐÓ Ç›Ó#Ò¶!*¤ìÀÚ:V¬Qˆ\ •£UÎ08¦½¼j|åƒ÷±ÔTs[ƧÍ\2¼QL’Cæ =qÚ˜±ÿ!'\÷Õ‡sü„8êqP¬Yîr*m‹bLryý©ì‚&ÄÏJyQùêhÚ0ÈQp0OZ·k4!‘‘qÁ?•Y†Hâš|c=Y—wÍD–2ÈXi0=ǧۨ{FbFæz!uŒJ­Ã!-¤³”EèÜI-lSíä ªßy ?¥25HÝ„€—e½Cl©Éç©ge ß\Ôp*ÆÏæX€O·­>) ùÂ΄u©"–Ð 0»Ÿ<(êÔøä€*»÷GZ Ò± "ÄûÄäÔSÞJÎÁ"XÉ9"£’娰E㹨å˜ÿ sUä™ÜçÛÜÔRHXÇþ´øHÉe$®:Ô–®±‚Ü‘Št±¡=Gõ¤c˜Ë¨9ÊŒþ4ˆY×ÌçzŒþ=)SæÚÀ\ùÑtû®c¢ùÓµ¹w_TácQùŸò)º¤›®ü¡À@?ZtaÀž¹¦Y£ª’zÑj§xÂäÔÒ9?(LŽù­;Û–+å#€5vâl®À0;Öb•HÃHvª).O~zVLaR0Îpª¤¹?^•Av¢ÇWŸzȸ¹–ìå~XÁÀÕ=Ä—'+ò àjÏšâIÎSåN®inX¼O $ =êÖœÅÙ£w3VlX¾åfÉô¥¦eÿ–q ZŽêFf#¢GòQÜHÌÄ bªêr&ô$Н{&R4þéÍUÔ%ÂÄ?»Zˆ‚}&¤l`ùVˆˆI¤Ã4‡Ï5¤SÌÓ£•QY›XŒ€7w÷Ⳃ“Ó‰ª*¤°ÆMjOd’6 øÏz¿-¢;­€N{Õ·µŒ·`Ýju!„F@ ¼ê*À"ˆFÀ^‡ÛµX¤q„l)‰ @†E<ôÅ5aHuþ”‰+eqQÞ+™o§îúІóœØá—{T7¼ÃŽ¥Ekqûà§£ } Go.d Â)°I—Ús‚*æw`a‡qS66܆•! ©Ã{U¨gB~ñzŸ_z¹ÅyY‰WïÑ…YŒÅsH}ìTrÄcù”eqÁA¨'´xI* P88éPËlÑ’Fvö¦¦Qr¬Y=¸ TQ³Çón%G)¨ì¼–${ué'à†‚Gˆ¾ÎjÄ×F#ч­K,Ì~Sþõ=%‰ÀF“p^€Œ“REu ÆGÈEã#'éR%Äl‡-ÊŽè†X^&ÛŸ•vàö¢ ¸d‰² *¥~ž”GsˆÙÉãJIà;PÆÇkuã€{mÍ™E†Kf;OP¯µ6kgFàbQ¹>€Ñ#îÀ~u;K/pj;›“!A:þõIVeî)’Ï¿o˜ÿºÄw¥š"ÑÆË&N$÷,©˜`+0,AF=ÍI2îŽ29RúÕPëlFòúzÕ\­³øÓÖ«’ `XàúU[‹ó'ú³ÒªÏvdl¡Ç5Z[’ç*{ÔHÌù9äšdE9ç4‘–<“ZV*D%˜`7ݵv+Ïûµj5Û ÆzTñ3y¼’üªÍ‹Óæ8ù¢˜7ò«lMžOXåÍ6e+|ò (+øTZ´Lº´’ºÊ¥OáPê”Ô^ªT±nÊdÛê2*æŽê×{íâ­iÎ¥ÈîEWºi#™˜ ®5VÕüèîÆJawU}HËÎãîqYzœ›lÊÁy1õ¨ß>ÛR™åŸ€ª—Ï‹m¹åéYêâ$Pœ“ÔÕ â5GZ¨®#Tf­Ù¯–B0\ç½Y´]€¶0[œzÕ«UØ w<ÔWY2ÊŒv‡Á¨§9y»ˆ5Ý]O9ª÷±1µŠ\g?Ò¡ž61£u&ªÞF̊ÓZ%GJ6X~&´™.ˆ¦NÆäVƒ‰$Ò5ÏÊj=>ÚC*™P®îCenæd!]Üze¤NePëŒôÏzÒ¸Uç+€qW/C‡+…«W= mû¼SYƒ¡Ûb°ÀoCëMYƒ¡Û Æô4ÐûÔÆçº5@ñ«)?¦;Ó–'Ž6]áý9Q‘Xo {SÝC¢ 3æºßÞ²bh“~|Åû­ýáJø–5Ý‘"÷ö  È”¨9ãpëM^»È["Ћ»@n3÷idµýظ·èÿyiÐݤd—8cҥӯͳûyÛøRÞ[g2Æ !ô¦(8 ÃŽÏaš«¬ÃåÈØT0‚éÓ5“ª’é×uˆJ«¨’åøà>•Vô™%?¨!µ‘¾XþaÞ¢ŽÝˆÂò?•28ݽW½hÛÙ"‚Ò1-ü+œïïW!·Q™‰/»åãõj(T)$ÙÀö­ ÊBàUÜ& N=½êÑ ±˜Øþt–jª¥ÆFóÈ¥Ò“ËB䯜j,c) `$Šuº‰l¸ÉZ·o]éh$pϾjÌh·i¸dà€j´„Àê£!»V4Þe•ÀU$0äV\Ìös3ž¢­A/Ÿ¨ÉbŒ=k^Îíoí£K…]ÌÅø­+yÖî(ÜÄ«íXב‰bœ(tÖ-Òy‘…?.;ÖUÄ~b`àc¥Co§`ÒH6Ÿá›oc— ì ÿt m½ŸÎÛ#ÐT×k²r$ N¸$!yaµð;t©´fÙ^hƒHïÈ+À‚òG–wéOhPDEË w”¬W ò’J‹Ë ËòšËÜÀãå4–ÌPØóì)ö³ÁVéž}©öÒ•BïÍ+o&L`»Ï|Ò³<“E&6Œü¾æ‚ÎÒÇ&1éïRNÒ2m jK¶“y¨ØãióN¸gÜ[?ƒ"*Ù-ŒÓ< bÙ *U¹lRy`ÄïŠHÓvÌ‘ЊTF}€d‘œc½(F `dãZ›hòÑ?‰zýsÅHBíEVÎÜgØæ¥ejƒŸñ¡\uí ûÓQ‚+ d·ß½5NÕ+Ž ÅJ‚6 caÇnâ•‚1ɨбG# µª9" ûd%IûèÕÅ»B̲®~ãZ‚hŒY lpGzXÄ…ˆއ=}hµ»‘ ðO§z[uw8_½Þž¤º‹†CëÀÇ­DÏ$Jc\â˜È9ïÎ:OÞí+…*AÏ׊ŒÚÍrãÌVÝž”Ùm. w2êyÈ=8â˜ÐMýüŽÆ¤ŠàÇ.7(ëõïRAwäÄ»Õ]= KÇ• .yÏj›q“…n¼Œw«üï”ò0:Ô¹ó>P@ïÅFP*0#þß5 D^~j$~ã¡¡ÎB?~lt$ZKžB0ÁwN}ØRNÊW« šlÇåó0C )ü*9_îÌ2@¦3a‘Çš³:» ÚÙSÔkNñXk™òsÎjíÊ³Æ ’F3ÍVŽEY•ÊõãízÖu´Ë ±^HÇÐÕ;yRôဩѕP¨X>;޵me-Š/ÊáÈ8ïÞ§2"Úí^«@ªdÆOp߆k>Õ<ù`SÙ?J«j¦Y¢ÝÑ[-O¸î_@Á«š’q—å)Œžìrî£OZy.ÁB®Xu§¬òJªrÀsíR ÀÚ3ëQlÛ+±$ÛÚ 1+°ÜÿlT^[+¹Éù¸Å9 ¡Xå» X¡ÀA’[?(¥Ž26ª±$ö© pW$˜Ô’Èc;I üÆœòlYsަHI!/·\Ô+rìHD =9¨Öfb@PœTãr…\ ->l²™ÀŒӦ È\éLˆb"w8<ûTP¡6Ìc]î§‘éQ Í¹*¹`yö¦6åÈÈ?6Ý÷¨s±wdn< ¨³°n ~”à>Ñû©NÙ•q×vþÓO&FÙsÌoýñVâo·)F;gÞ´ÛÀ/š¸lã#£õꮦ²+†päà‘ÞªêÕÕœmnŸZ–Æe‘LDä§L÷£¢]­Í±‚FÝ$~½Å^Ó.âØ#™}in,Ã’Ñ­I£‡o2ö¦]iªì^?¼kíLç$a»Ö7ÚX¹=>jÏóù¹íW"+#‰sµÆZ±Ù¤gà –0$}ÄáXbžÖÃz.zôö©Ðy±¦qž•'ÙÇš«Ÿ¥JáRuæÀä|ê‘](O›g?J|¡b¸Âò3JëæE*“ß0„ñD«æ[KÎwlÒJ [6>òœŠFâ(¦''iê 6Qö¨áœ¶NÍ£ê)$_<$Ùä¦?MxC¯”2¡ø9¨dƒÌ!¶GÐæ¢’-Ø Ã“RÁ;4`6;m㨫Ö×/=°F K¶8<ñVã˜ÏFÆ[úTˆä1€By›Ž}権Må%<ÀÄ@9ª«„“Ëaò†$ý*WV„D00ćªÔÑ´ 0†,²/aØTò+Cå’¹E†Žßè†V?tnǪһ“aç?U€=Å+ŸôMíÛ‘K)ÊõùgÖ ˜†±²¨¥ùˆí`:kÁãvNGÖšàüÑ;F[#ëHGð9бƒyŒò0~•¥§N¬Ï À ¥]´”>cnHTnº1’àö=ê ˜”j Œ—Á\v=ê Q~ÔÈ£“ÊÒ©l0d‚ çT¤1•Ù"(M6$d‘†ü;ÓlYRÌr0߇zKF ã×dcr:†8þ‚î¤ÁwÒ¯î·`‘ÛëM¸ˆZ]G6ßÝgŠšð…¹ŽEÉR‡v=:gõ¤Ö]Ví$æVŒç†›¨'V\ÊC~4ý:Qåwáã8Áî*΋tmöIHßÊ7«:mˆO¾œ})Z1 ÛÁ‰ûªin Kf(î_±þíIÔð ÆwnôïSe»/ÎYò¤w½J£Ì¸sÔ–ãéE»µH‡©úѦ¶íBhÉ«éúRX¶ë™£cÏ8ëPùŸf™•Є+ÒªH^Êá’D!g\î¶™£‘~V榑[åãiôúÕ©#f‰Ìx+Áú}jĈYiÈàý)ˆtd䎅MVAµ /ÏmÄc5@ƒle8+œñëQdex’Ù ïÞ£HåIH–l…˜©"8x”帩6ÜHªXí@yUþµgmäÐ.ç+?w=ê}·2¢îržõ!QK–f`Hàâqo¼‚RîÌn)gŠ8¡Uß¹8ÈÀÙ&æÇªq,„¶*´x ß6 >1²<»½™:~5¡iû¸wJìW dëWmÎÈ·;v"—•pñwt#£õêeß ¨ð²¸qÁÏ =1RÑJC~´É‚¬å°q»nG\òjäF;–“a ¿i#±ç¥S¸O.røùKm$zÓ‹ÁÈ §ŒŠMÅ]de §‚Gõ¡[ ¬Ã ñDƒf%ˆüßs¬>a_´ÛìÅJÄžtG¯WPŠ Û0yÜyŽ„U A¢º·WPwøïTµð«9õªšVžmäy§Æìâ?qQé¶þKy²Ïܦi¶ÂݼÇ#'¥O!Û)_A,=³SÜD‹ŒÈ îüêy¾äj_5LKtðK¶æÒ¤¹¶Hß’ìXR`GFܓɮ٨nQ€Mké ¶Ü° GQíZ* ãóTÈ4ã®é>ƒƒXò°–îàâ“#ùVs÷Y)û M‚ prjWFŠèd•Áàö¥ Çp3ÐIæÈ¤ä¨8Çjk\L?%3ÀíLy¤ [ªç§éŒ­@7aëZ`ÐJ@äg®i4@ÁÍI¨”û+#cæèz±¬2‹"Œ±éëRêE>ÎUÞ¬ëFelmÂý5ÏFXÄÀ¶ áqìMc£œ·Ý8úTò‚ †Æz‡ZWÊ2“GB)[1°ç®E\ºÿ`NN0s[z–_M‰ù8 r:ô­[ïšÕXŒðj rªGïp}k)v¼…AûÃ8>µž»X²ç¯4|ì‘4'–#·6Ö#Ë2’@ö©¾c³Ë9$GÒ—x‘7Æ6ȧOzdÎ’"´kµ‡ §¹¦LÊË”#ïZHÉVf‡%;—ºl2:xsµ”îÓõbîÝn¢ØNU"¶u+%¿€ á—”5£}h·q‘œ0ä«c&÷òœá×÷…cir“)¸eÈ#ÔVv)w1? §ZvY°v <úÑ+¢K&Gõ¡ÝRF <Ô€±uq" è5r Æ%»†E”D9P9iykpŒ è:Šjð’[!Û8UÄÅà?6C¾p:Š„HL\·äŠF]—²¾cl‚jŠTX挣æ6ƒÚ£‘BJ»[*G~ÔA”´¯’»¸µ6d%ÍÌ ” ÂúÔ–VÁ³4ƒ+ž­<€•å{Œb¦`-î3ßçn1ŸQR ”íù£î)T%PžNà=éѲ1dŒà¹=*²œ…8î=©·“ˆÔ–c÷#38˜¢ZåÜýãžÔ9o±ac’Ìzý(‰—à†Š¥T¦2d§VÊG\RmÿX±œ>A»Õ˜ÌŽhâa¼ÊFÿëÔð®èS³œôÙT‰ìP`¯©ª÷Ñ”U$Ú;‚ê2²´qȵàeUÊ6>Rj)”y Œ«ãŒÓ%_‘v’¬* S昞BJ¹;¿ }¦%ž#!ʱ$þûp$‘ rgò©dVyÚøb=*c–a¸aQÀcŽØ©y“dŽãð«ÒÎÂòjðZ×¹»ŽÞÕäBªü uÎ*ýÅÂÃlî§%G©Z H|É6³rÍÏ$Ö*©mæ±ROÌyäÖRùŒç'ñ¦#Ĭ2® =zÓc.ažw×þ4Ô$•¹ ˌԧÌ!•°ußúÓ¶HÁ£C¸ Š]ŽÁ‘O¹§Û´ÂÊ‘î ÈÅ_±ž{{FDŒ^Ajݼ²ClP(Âó\ýÍÔ÷Rfäp¥b]]Ïu)wnsíY72Ï#1=«GïçŸ-ËÅ‘õš“NŒNó®pÆ<ÀÔ– 晹çnEi¾^Ú6óï žãç¶Œ‰†÷©®0Ñ&ß¼½jĆŒnÎÇãýÓWì.AåK“ƒŸá>•rÒmÐí“î·ØÔL¾\¬«Õy¬ÙWÊ™ÂõSÆ*‹*fÇU4Öí,LymÀ?Öœ„ü¯Ÿ½•^´øòYFãúÔóF_÷ñ}ð0ÊGÞ­+ëT’/µÃò¶0ÊŠ­ÝÛ©O>?”ã‘PoÚûÔ•“ïVP‘¡º’­Ü{Usäp{Š—jOl]¸*;¶ÉŹd\õ_F«L‰4$ Ç¨ÃRÙÊe„pëÇZÒÒ.„Öâ7oÞ£´žqWtéüØ@výâðV žÚH®~Ñ îçv==j•îŸ=¥é¼µ†íøÃëTî,å¶¹kˆp늊m³¨š1ûÎŒ•Ÿ9[² Ãó¹}êœÿ¿*ÉÞ«0~êÙ·cÌ9ÊûóŠÒ°híté·7ïpSÓ®*ý£$N7eØJFPŠ9!3Çñ­"ªa² ž;š…Ô!Êöçñ¨ÀÙåI/óƒõ§¬b+f%þuocOHÄpìd䜃SHÆWؤ*wžK©<¨$Úc;{*Ê÷R&ÚPîQëMw”?#Œc$u5 ò\-*‘¸c‘ŠŽV”6enä~´y_!òÈù‡Æ…Šf&ÉaÆ)lÊæ’'$|…DÏáOIåxDrd" à~iâWxv>B ¤#xl7ΤŸ×Ьɸ£|èýU\lºŸ™:ŠPÅ÷2–ÁÑ»ÔðÌÌY£n!€ô54RIQœô¤ O²:¯÷iÓ¥ÃväîÓ¥ÅÁÜ2JŽE"1”:(ʸ,¥½i¶á®RHgr—Ri±ƒqÆ;‚êMV·Ø²|‘Œ S,™#¸U“$c–Œ©6t.D²ä©ÎGáZâ5x&¸å ;‡·`ò$“¡<Š€ì–4WIò°ôóYîVçË‚1‰%ÆïöFj£íŸd+Õ¹o¥E _( §†#ƒØp*¤Á *0Û ãÐtªÓ*¼h9Ýœ°êNTé h]ƒE† rÇz¹xZtq®j»´–¦Ø.X?Ò³ÖG²žÞAÈ óQTĦÒâ&?w5Ym­2ín$;¸î ]“z©á%ùÔç¨jµ'7>Zœ+Ö¥k%´¯$(H=8¬‹Ø]‘{óß—uDÌÊ3Ï4Í4y7Ï’# Cœv4iàGsŒÅSq }§X.ebHSÁükq!>k€À2÷…i}ˆ™% ÃÈ÷ì¬L„6äE¡Ýi$l¼‡Àë2‡Lž78|KnTéÎ?ˆ7›ËO¿ØÃ{ ¦ÁžrÇ–èª8/3äS7f‰Ð²IÓ´ÔùÄÊJ¸ã´‘’¬aeÎîEY‹Ûld8>£ÚµíÏÚ´ÕQ wˆá‡qZq>ÉpÛ™ª)Ô7’Aä1 ~¼Öuê.Șu C7ÔT¯q/bA4ûfT’0GßN¿M¥²-Ò,ƒ‰“RéÅÁø’¡œ<3É´íÝÐúU[¯2Òõü¶ÛÏÊÕRs%½Ë”8$ðjÍŒ¯$dÈÀüØ_S[ä·7Ÿ(bÊ ùjéw <Èù$ñšËƤݮãõªrZªk2 ávçñ5[ìáu@áqšBÈS$ñÞ«ÈȲmRNWjuI6Ž˜§FÈò1ÎG«t¥…Õäbqõn”°¸f-éÝ©WtÌVF û zU¨ÝîKùò‘p@ã:3JÎ8pxÕ Û‘ÒDž£ßJwx.x³ÁÈ#¾*£³Ár²§\öïVæâ×1Ÿ›¨úÖÍÒOMWˆáÎ~£¨­K•¶jÑýî«ýEWŠFt!z“‚=ýk&ÚWÉ@y'ZÏ‚Fû¹ç¡øå1#ÛŠjÒL’ YX«ä«gŸÆ¬,Šèå[H=)÷rç;• ¶ao;Æà‚¨`>TŽÌŒ1I¬ß7ÍÁè8¨Ø˜Ü~aÏ=S3åÈH<õ§6Y–æ6Á<0«.ŒÛo!|ùX ‚'¸q‚5I°ÇÈÇjª’˜”b<ü5Y$1ä©ú†ÝVGÀç<Š–Ö™Éœn…MbBH‘S¤‚D0¡9'ôïVíîD±8ó’Nõ_.\òÌw-C,j0²`«ÇÔÕV_.E «üØÿdÕb¾\Š’}ÖæŸ§‘g<¶’¾@æ"{©­6eµ’KyŽF3?Ý5zÆ_%ž=W>•&<§n0CäQU[t •þ=ÄzÕpLr0»³ŠV8½}É3õ¥ùü`â9'Ðic nöçä~ô\[Œ2)žÿçš’ö&·¿UP¤® ç½IÕ]‰hJÿ JXŸËX‹s±ŒdûQg"Ç,,ã*¬U½¥´,Ñçø[ñ§Ì¸Ý´J±ªZ”s¹¸'hÏéR_ۀܞ mÿ …`¸YPÅåA˜ñÍAiit³«À¡ÎŽGkmr’‡ ïS‘,dË#,„öZ´âh¤73:ÌǬѷ›#-éQȄȌÄÕ oL|‡ ãÒ¢hs:È<âŽ)Býß0’?ÙÅ…’ÞU´¥°»ŠGQ%¹0C–ü)DÈì#s€åImt"Á;m$[Ü$®°ÈÀd`5#YÙ e`r€òxÏó¦ÜEäÜ4RnWs'‚=$ÉåÌÈù>îzRDâÝ™€+ŽsøTö7FÏzù3•Ç ÿ…Ki9·R…ŽÊŠdЇçq yÈˈD²ù™Â·$M’iwäíÎH±•2”òþF< r¾õ4%œÄaÊ1ùGñ/¿Ò¥ˆ«Èchò§8ÇQJ£1–#|nrqÔS^ÙÖ4/™ ÄŽ«MxYaóoBwduœ<8ÈÏØfª“¾,un'Ó5]°ñŒ}ìâáÕN ŽõgN”’&Æ2C ±c"»¢œ`‚1QJ‚ñü,¹ÅA¨Û [˜ùdT°ýžá—ø[š–U³Ve—Þ´­dHtÅ!F]p=êô.±Ø© ¯Z©o 1º™Þ\äc ö¬ûhíã–3²4ÙÉ p=ª¥¼pÅ"”f2g$ö« ¾eÄ…›Ä8È÷«5äÌìDlÀj•Ç™;—?+5#»•ÏÌ4Õ‘ƒì‰BÇ÷×¥"ÈAÄxòÇ̸¨ì®gvgÊtÅ;OV¼žF-òŸÏŠ[@g‘ÎxЬ·O1*cܼw5VyÖìǼàÄ wªóL·%2yL¯û|5”‘·=IÏõ§Ú?™¦½¹9fÇÐjKsæX´ªå©½mî$<°@? X£ß§]>O˜ˆÿw½¬'ãP?*%Möñnà…Øj½Ê³ÚÂ[øò桹RðÂǪ ´]'™öYÀ$¨Á>ý¿­X¹O2;K”;v·³*y×x‚xÆìŒô§€àî“ب¥œ霜n"£•Ù”îSÏñc¥ #` z|¡ª%a´néÐ5FŒ0¹ã°55Øc“œ©5«ªmkk{œŒr}ªõø R޹ñLó1VϯjÎË")êŒÅ[>½ª˜;Q[ª9?,.aëÁ,}¨Œâ39Áf4ˆtcÇ+’Æ«—,­ÔyÁÇ¥V Iç ߥA0а«÷ù®«ØƒÍt7Ð}ªdU#u­»˜EÄŠ:‚*¾÷Û±³”b2+4¼ªD Iò˜Š£ºPD|ü‡ò˜s—AõíJÊ<ùúîiHËàœúzp¶Î:³S¤Må?x¿øé©•2™$uö¨œº uðÃÔUvfÄÛrþaê;Ô91¸r2àj$·ŠàHð2äŽG¥:{8n|É­Š‚JúqI5¼Sn–õÅ8îtŒÈ¸hÎÒi%w¸†*üÐü¥¿½N•ŒÉ0c4 ¸ÀU<àŽ•]p}ÅBK/¡K‚X'Ëß-ÍIndÜÌ£ ÉàÓà/’F¨4¾j¦5*îN ôÿ8©Þâ4†?&3ŽNIþíM,ʰ¨EØìO­>ËjZÆ„ò29ïVô‰ãûPÈpy^{Õ‹­c8+Ph¤hÉÎü‘šÉ¸­'hCÓ=1Ö³¦‰­æ1‡‘Cq20wRÃòÝ£(ÁÝDmʰãœT·$ Ü2¶¾jþ±‰!G#çFÀüj÷ƒb«Åp¤e‰‚ç#¡¨ »Q˜. m™ îÔ1\õRÄvô©ã+*zÿúªÔ6ÑN ‡r*‘ׯÿª¬GJ„Ç•Pjºy[Ú9$?,ÇPjœfo*g%–v%GuÇZ7ˆ7–ÌIY #Ôv§?–ˆLŠ:0튎Y#YØÛ¬‘©9èEG#¯˜|¤e­IlaÚÑÄ<¶ÛÈõ÷«V—æ2ˆ¾SìäZ³o4E ¨ØØæ … Pe•œäûÖjƱ¹UË!n¾õAFp¼‚ÄæžÍäÌ_u²~†¤†civ²ˆß0ö•ŰYToÚ<¯ZŽX äÜT¨0»ÄÞ`Aƒž©QQx—x^0x4ð¨¨[vîØ4õü²ÏG$ûQövX‰a‡'>”y%cËðÝM,ƒd ¨,@R«ºRˆXñÇ­÷w#j“ŒQ2‡# 'ñ©ïÕf*êÛ”.XýMIt‹)VS• ϵ Ád ¹3ž¼ÔP[ÊÒ4HÁ—9Æj8`c!@Ù\ç1̨Ù'@ :õÈ p‡s €¨Šdãlë’yný¨a¸ÅXӔ鵲 8€ÝÁÍ:b ‡Œ’À…ü*Ýûä(l†ÇÐU‹¶ cn<œUl4™PhŽÑÞª¬RN•}ª2BŽsP,o $ƒ´r@õ©^b¶§É~ÞÃüóVî®<‹6XΧOq1ŽÜˆ¸lsÅAnYGî×/Ô·SŠÉ¶óˆ~n¬Ýk>ØH缎¦§H¬à€£‚:Õ’eÝXc¡;QHëI8]¡”fb1Ó“1ƒÌçïDYG–˜zâ–(š;pqód±>‡U„´hm€Ë.XŸCŽ*qnb·˜†é‹DÎØËE‚­fÝß1êËÍgÜd¶ãü@UÇQ-š¡•⺠ãb!˜Áv"¶gA-’Œe¶‚*+|<)·IÁnùÅgÚ`Œ $€{ƒŠ©Z`ü™nj=Ë,ޏÚý½TwÌørp=꫸•Û±ô§[1.XÊàûU­*Cæ1ReÁÏj±§±ÜqÎx5%ÉØ@^¬N*ƲD!ÌÀñëŽ*mK…PzÓ † ‚GNqøUP¬¬«´œã–ÇÔUKr ÏLSP8l.xà®9üª4GIpàá—¿åLTuí眦®ãæº0Á8#¦)Q]̲# Jr#6öBFî1éR 2|̤’ÀT—lY†æ^¬)^ –ìÝHþ/z~Ÿ¹bv=ÎEYЗe½ÃŸBWò«X1ÚLÍÔŒÕkÄI É8ãiÝ¿•SÓÔÚ,Wn~ò•#ê8ªÖ‰öe1æE Š’4"rªyãùÕxã-+*à`7øÕxÁ.ävËR[LÞzu>oQùš±¤ÌN¡ó¶\†¼±¥ÈMèŒý×S‘Nò„n@8HÛrOòiÓB¶÷R8XŸ*)fA σ‘K6÷ . `p$ÌòyrÕÁ¢]îѰäqLÔݘÌk¸ÇSéQÜÊZìÄw0²y—F4Ü56C:gw<àÜ cµÈË3± €pi§Ï;‰$ã­O‡ÒK&ÒË€ sVYfÊ»/u©ÙL%ŒŽw°éLF!UTŽIïLIY¢dU}¬|SRFd!UŠ ÷§æ’ɹYrÙ=ùéSÛ±v2!*É–Ï÷¹éSÀKÃ+·šYÙXÿr¦ßH“K•Üþ¤zÔwL%mú┆ ´Æ×<Šv^4ÚbVP:ç‘Nbñ©]£ÎOjHCm;°\œŽ{T–ƒte_iv žÞ•$súƒíN±É,OÌÇ"¯éiåÚüÇæ'ô«VjR äõ¨&v’YUOFÚ=«6þVšâTVÈ ³Ïõª7nfwU=ð1éI¤Â`åºdTv2½´ÄG€J…ù»â’ÑÌ£»š’IKHÃiRØç Ô—sµÅà àdæ–âVžR6í'Ó½,H« *Û\ óÞmC&ýÛ]TŸ›¡§ÅDIkž{ÓMýˆn«Ú« ©ˆÜÌ­÷”t¨áÝŽ2Ês*9Žð…U—¶zdƒÍt•íŠf<Éå"­ÊZˆ©áOÌ=«bí¦¶·¶(NcûÀV•Éx¡ˆ¡û£‘U•DvæL,þžµ”Á£´2Wsð@ª¹-ƒ`üÍN0åʪdb›/ï£d'ÊG­6HÅNvpi–{•q—Î@=ÀàÓ´ÞiEŸïê;Óô½Ù*>ösS\¶äfÏʇjãÔ‘VuóòýQË\w9©nßÎûµ~´“DzPÍÊ·¨/-|–WÈdqÕ}}*«s*G'ޘĔÎNøùû¢ó¦âO™Cê)ži+¸ýøÿ•HÏÿ-Õrq–­\ ò}¡W'0ö«[²žr­?ËD„‡l!;¸ôô©8Ö ¬øBC:ã°§ºÆ"ÚÍòä7|»”–ÿdRFÀ/•@hÉöE @RŠ06e÷E6VøÂƒ„ÖªÝgìâ^‘“„Ö«\äB$nàSå.GUQ“UP•.W‚5Y ˆüimcó&W'ýH sWôHKŸ<ýØ?W4ˆƒHg?òÌC“$³ ð? ª÷²nç#¦ãP]6ùf=¦#–U!LmeÇ¡4–ϸ w)µ—n>´¶®[`fÆÖQRK˘ۜî,O¯5Õ³[ÝFpAÉ`}jYáhnQ€ÁäçÖˆ†ËW/‚àçõ⟠G™+Iþ¿p þTèÕÀç™?:aIˆþ'ä~U\ nï9.ã#ð«\\±bKŸÊŸ$¢(Ç”¼õúÓ¦mÊýŸ¦¾Å>Y„$,@àñÅ,ÌÐÚ—„‚z{f§¸co§-È üŽ{‚j[§1Y‡  ê3Io"2Šž¿ìÕeZÆPcØþP}ئFOµ!ÞÙy ½¿½Jȯ#¸Ê”z”tg‘°GAHvíG@ÙQÉn§ÿ­SHʱÅ$hÁ““»«õªYQ¢à¨äõ3+Â`(ô5£:J¨n¡}[”8cUXTÇùG˜Ä°9õ5™˜¡$æ³Ýìj’ƒ8è䓚‘ Ë$g"09#‚jd 5³ÇޤpÆ¥e…йÓÞš…æ”Êg¦2Ü™î<í£< :S`&Y ¸<~T¯™%gqÏÖ’àyÓ;ˆãv=i%]ò;ÿuúÓs°æ?7¢Uù€…p[ŠSæ5ûÕ:[1‘$˜üª>íhE§”o6c€£ïVã´ØÞcž‚’G-…ÆæuéíKq6åòÀÜî½=©frÃbüÌÃ¥"“°«.à˼ëÞª–u€ÂÃzºï\Þ ,|Ÿ,ÊFõö *‡$ñ‘‚¹ïÚ¢±’HëÛ=ê0»7g¿jKe,îÍòíàvZGvØW€Ô¶)÷ÝŽÞ“r)pΤœg?5FÒ(ÞŒà«x9ù±MÞ£rdNZtcÌKˆ[ïŸð©íHžÒòÆõ`àT°-¥Äd唆Ô$ÀôëŸ~*Œ{#·_ÇŠ¨ óޣВžC/MÀƒZ:~ß±J„òAvÔ/ÙO|ƒQÅóÅü‘»“ôªñs[ò@nMEÌLóVÝ»P{â­F»â‘AT Ûûâ§PLN¹wëQ­mÆ:­pêö'B ¹!¡‰:m8¨‰hP rÄ}ªœáUÈÀlj¤¡PÆîA©,HóåAŒ\~…høyÁ–âÑøúêöŒãF;ò*8Når=+1[xfädÕ%ƒ‘ïš´©4qËÓš±c\¥Ì(ÀJcù®jk43Å:!Lžø©¡Ú'8%[ó⦊ìK=²Ï“‚PŸLššŸ6xR\çîcÞœê²?®CzT“Äb‘ân0r¦Ÿ*fFõâ’6Ûqn¡p}é–2o¡vàmÚm›ˆî”·®ÜÔ2£9 ÁO»ô=*ÊlšhË}ÆÀúuª“å&uÎv6ó©•ј0;„«†O§z¾ŽŽà/)21}Àÿ:¼¥Mª~YdPmv!E—9\iνGµ6m=Ñ9¦F¯ xà…Ü\zqPÛFðÆì*¨ÌãÛÈQá‰ÏUU9=³yÐ ŽGéZZ{}¾È Þ¼gÔUÛFvª\ ô4L±Ç#t5<Ý)÷E#„äš§  ‡;˜šÈ…Ó,JÇÉf'©b³Ð@Í•RIïN[„ò6DãhéøÓñ6¦(€m£¯ãJ×E­ö À>ƒ¯Ö”cz1çbóøÓÂ*cïv¯4Šûc®3´S“÷‘º«¬jO$žõ$-æÃ"yÉ 1ÉÝÞŸy²©99¦nT‰PÜ(Ãg dÓb’(ÂGö€0ÙÊŒšlOíA!àõ§’u[rí»€ &¯\^,v,Í»–$w«S܈í²Aå€Éô¨bs¸¸S»'ŽžõFÞfiÙ•IbHU‚bÎHRXð>•+@¸Êä•õÉ©®Óì¾H^rHõÉ©.@€ÅŽª2E²¥º°O¿ÓØöý)·dGd’áú}{~”—Ge²¶ß½Qªù›„»‚8ª°m,|ðæ.¬ªöûIÄÙ+üU1‚!`ÚuiOejö†KB¢1÷€«ÒÛÂð‡ƒGaPÕº‰ñ‚FøöFÆ_³Þ¤ÍÐ++~Š©i'‘q½‡JŸÃšdlvçûÇ󪑖'‘÷?‰ªÑ.8ûÇŸÄÕ›udRçÉÝZÚx0ÀómV!«J×1Û8Ú3œÔq†’7uÉÿ>õV"eGÆýî{ÕxÛÌŒžç9§fE]¡yëN.Å Š6…èZs9Ùætô¤™Œ–ûˆ+'ã½6þO:ÙedÙ.HèþôËÖó!IÚ㯽!kEÁÄ‘rÃ×Ö‰T\ijV@%€¶TúRL‹q§£+2.«L³oô€ä«~¤ƒK“Ë–I2¬L üª=9öd' ‚lA™YP|Ì…síQ@¬ë" ä¦3íQB’\1ɧ۠Iw–ùTŸNj}0¤7K,…¶§?/^ò©´í°Íæ98Qž*É‘˜d†$Ï5T±k‚럙Ë-WV-q¼w|ŠÐ™C8gpýq[÷e|ã!×’=q[7 ;Ær;}*¹uÌNGF*ÿUgT4NG!ˆoóøU?1UãvÒ\ 2JÈ@Þ~4ÍIc{¹d…°²©æ£¾Dk—hÛØ~tçSäá@ób¥XÚ ŸÈMoŸPjÁ mÁ\,‘`z–rëÊv³`döêæ¡<‘iãaÚÎÏ ïSÞÈélœ3`¥5—0F£À©÷ÍW”encèêQ±Þ£— kÎŒ˜Ï½6Ó RpÀgóâ—EnBØp€~gÿ­K¦ Êx*ÿÙÿØÿÀððÿÚ ?§¥¬¢ì&p~n+"É$m!€_½UlRQ!V=úVüeQÉeÎ[ƒŠÖ³Ú–\îcƒŠÕ´ù1¸}’£_™‰ÆMNò a·}ªVs)pryÍ6S!YÀ1º­2WŽØq¹1òëL‘ÒŠ­!i‡,Ëî\S]î£9i õUëzGi×;¤ç¨Z6…(À–Ü ¶áÖ¡cØA, í;‡ZŒ0B!ƒužn!,#xV¾ßk Kl8 ½EMöËyG‡¦E8Höàá §QÍ$wrÚgjï¨É¡n^Ýq‚è¥[¶~ªØÔË©É/ßM£°=*AzÒ™h’!#B»¨ïQËÎá‘Õ[ºŠd¬­•p¥FÀ¤‹p:⫺˜¦Xߌv¨›ä—i=ªS&ÐBW×5m.xVC·¦sš°²…*à÷¨îвÄrÏÿðùdXXŸ4€Ý⢻c,G!ùÿ€Š[F 1@6†Lþ~´í ñq$$3þ:~”ß<‘ÁP@§\ƒ¦@2¬0Eµ¸·ºó”e%^WÓÝB! ûÇ) äzBPE$9bØÂŽqøTM䥤’A6ærR>íG!mY¢“vâ0=*‚HÆóÏSïT’#"dç#$Õe‹ÍPOnMKió2$O§µY†Ü[¢Ìä '‚{Žø«@ ïÆO~õò’Û`ôëPÜJd¨\g€;Š‚w2Hs“ÇÒ¥¶‹ ž¸8ÿÑÒm0ûˆÉ Í_ÓíÀ;¯5[YÕÒÍ<¸Hi›ô©5­a-#1BA™¸Ï¥7UÕÙ<¨°eoÒ³ôØ$–oµÞBŽ÷¬vv—í%‰Ö²íÙ·ùó’N8ZÕ·G2`ª§úVž™M#Êÿ,_Ä¥hØF_t’ ©ü^ôÈnYØÚà€6î&¤‚íé (Ú <Ó ¹Y&coŒc€ìoµ·.Ù]Ù'ØVÒ5Ψï!ÝóäþŠÎפŒù8c]´Aåa÷Oʇ¶+WOƒxy›ø9U5­g(ò0ÉYñê0Ø_?žï@ÕCP`e=:Ò#‚¯òœ°#ŽÕ›æ—YNß™¸ì*‡›¹$ã%¨Dg!~u?w’Njä’,Œ.]OÝêNjÜŒ þúžù§2È«…~§njŠE•U\Žvàö¨Ü:•Èç¿jL¶³²? 9ÝþàÌ»Ÿk9I8=CqK–¾ mn¾´¤)W•†XÝ©õ©B¡ŠI¤”Ôô¥Lo!æFâ1éIïžNääz·½-¼^t2K.KÃ2Þ¦ˆ#Bï'$ä}i|’0x*↲i*®QJÖ 2‘Ð6)þ\y8i­ AÉP3‘Å0Åî8¡cUb®Äç¨=ªhmbY 21é‚cÚ¥ŠQÛ‚9ö4ŒÜJnÛÁÅC$;KípC†#½DÑŸ˜…)Á"‘aÊ98<«ÞÔ–â!#Å.ã’ 7§µ$2>yåMI䌑!Ê1Vª³‘1à¨Á©Äœù‡>•‘cl‰ù R¸Ûo”pCãå9ëUf+ÚÄ«Á©ck}¾bp‹Œ µYù~xó$¨ «ÑFMXG¶ùøfTPôÛ¹-ñýÒxªßÚŠ“‡†Ûf85WûH$¡£„Jyg‘Ï Ú./çäåE‹4×’ŒŸJ ”Mƒ ¿*ŒXܤʭ .ãQ¥ÂË´Ç€ÝÅY(¶ñ»28zb´]#ÓíÌG q(¿Ù•~Aœ^Rá¥r ¥q†YÜrʧøEApì^9æ$¸û«ýÑQNÄ2Ë!Ëtö¨bSæylϯj‚Ò2Ó±o½‚yõíP[!óXŸ½ƒÿÖ¨¯n%†Å™œš¹qxöÚrÇ.ùÉô«7 š¤g zÖu¥ƒ :žCØö¬4üß1Îç<óÚ±ã¼ã#œ¹ïZ‘F%$·Ì‰Éªý·œåÜŠ2ÜqWìíüÂde%WšW¸k}>BªA“€{b­ê’5®œÊªA—ø»b¦Ô¤k}=•/ЊÌðÀ"õË´õõ¬ÿ üº€w8\}ê—‡x¸vbpGí"÷—sp|³ÌŸð¨¬bg–âqÈVþ$ÿ…3O|—v ç“[‰°«É2AçµlZû<&\6ìŸáíZ–̾Cûø;«ŸÔ,žIÚERIìbÞ[3HX.rk*òÔ´›ñÖ¯iV×6öÞP?)98ê*î™çÃXí'žzUÍ9e†î?J²‘í Ìxþñ¨Ý‰ÞKdg©¦3dyêiÑ!’RB2M:Ê>cÎÔ$ÒÚDe”ƒÂŽkÎúæÊ%wŒ˜XåXŒóU-®®-£G*Lyù[R «‹hÕʹàûÖÅ•âê(ÇÉ´m§:ƒ4ä2?™€­i~׺\ ÉVB§bòäätæ¬F‘¼[U~g  f§UF‹ ¼°§¡HÀg)Ï&§…¡€4ÇÏ5$f8@Þ9JŠ, V ™ÞÄõæªA+•fV bÄž¼Ô;l-¸’ )fq…l)¦½Ä®WÚ„ƘÓ;î pjn#eÇïwxŒ oî¶`ù¡ýO“÷a@ÆÎsR+Feg$)À_­Z†XZg‘›aÛŽõb9#iÉÚHÇÖVL£b0rOv?áSÛl’/‘‡$Ÿ¼Çü*XJ²†"žž¦‰¶|¤ žsÛÞ«ê"5(cÇÍÔv ½ ùg“×Ú¢œHD„´Ax( VŽi2C³Uá”d …d–ÞNÐ8"Æ%Xã|Àœ¼T&3>ÄÝ’z‰¢3²&âqO‚Õm☇ ò¯ùþuqmËO¸S yfpzb¬­ºZiò¢¶^L´*”!ˆzÕKdFRàõ^FL•<"–CÊñéZšdvÈÍ6ð ŒUû$… zT2¢|íïW'¿Š(‹¸1ÀÏZžk¤Ž=ÌGµRˆÊ]›É"C÷KçÒI^VvŒ‰“–è+%]Ù™¶|Ç8Ï¥2^Né™ÝAäöú c0iCÎÌÊ8þBš3“æÓùTÈàÎÒI…–ÓëïWm ý¢Yd ¥€ë·Ò¬ÛæK+qÆWÚ£•’8“’Fjé8£QԌ梽uDUœS­íÌ I+mÝÑ}jM?M3¨–vÚ¢úÔ–Vñ$ÇôZ}üñÚZ`g€ZÐÕ'‡OÓÊG…/€ëVõ ã´´Ú˜¸Û½f¦­ùŠæ=О9íïYPê°Î 7‘î€úÿgŨÅ11\¦èÏB{U‹È!³µ2¸õ©u XìàóaŒ”椾- /Âc"³tÈ–@ßtŒ¸þñÇŸ¤ÊCȧî0Ë/©ÇGG“ #*y?^ÕµöudË.yØ8Ík}ˆ@D„²çgLŠÔû(„‡ÉÂ¥äË…Ø}{R¶Ò˜p¡÷íC+‡ÀSÜÔ1&rŸ2sÊý*ŒƒÊb”)VÀÈW”Á¦GX™° n };ÔJžk„-Àæ¢DY[inÍX@aW’Ç¥cTHÀËHÜý*ýªmEE,J§g?ÚPÅ,jÐc¡* 9–]Ñ΀À@ê8¨mÙd9”y\cŽ•*[ÃhY­ÎÒÝG¨íR"´lÀØ,y™OJ‘bKfYÁcÈ©¤KH\ª†<ãš’lÚË&æEÞÙv¥söw`J‚Oe¼¢Û?ÚÜ{b¤.E™&w'ÓµHÌE¸p£Ø÷¨°ò…¼µÉ<޵IQî¶®árÜŽµ[c\ lN¿Z™b‹AïpqøÕ¸­!d*®D«ÆàjÊ[ÄÈB6Öfîb–NgâúÓ *óMòãÉ\õëLò•ÚQ+ÿ«=iˆŠ¡U¢å²ASÔP–ñª"´'{‚ASœ¥UPPî# J{á#UeËž€u§Ë²㌮ç=‡¥9Ùc¸ËzSXçjãÌ<ûgŠ‚é7KÂãÌ9úgŠŠx÷I°/ß§ÆýÞÖm¼x%°A˜]ÌgkÀ÷ýið”ØU;:Šàõ”·Š·äR :êo5ð mÄcéN¼œÌxËdñô§ÝKæprr*vs>Ëh†iºCîzSå”I pF0±®çor>i<ÅHacš¹"Wò÷|Š9½Oaj/gòÝþU`;Ô¶–âêVVl¢•#Å N«Ÿ,³Ö¥»¶‚Þe@Û8ãoZ’h¢Š]¡‚;PÏ ùY·.:÷¨dšD]…ò½z‰äuKqØÔR(TEÉ,æ™".5Éf~zÒJb/V<ÒÄÜçµvã֣й#®1ŠŠ*Ç¥[ˆ™#¿¦¡êXrkbÐ ç½Ur ‘‡<`÷¬Y2FñƒÞ³Ã$|Ý1G÷c`}G›v«+ ô8 †P;çªá oBT®óþ|l"/¾2A]ÔäÄLêɑ֜@àÆü˜ã+ Loà ©ÁFê?*a–HS{r@Æ:ÓEÜÖãy帽éy"‘’N? šRX˜‘¾gãáëBymÐÂ~i8È諎ŸZµ#4ÙŽ3÷±“è´É–(“aVs·¦j½úAl¢ °NFZ†ôGì±ÙÈþµ<ªWÀÁÅQ[©ÁOÞ}ÕÀÒª­ÌÛ,p§$¾YåW#¿J•u‹8U ;Ž*O¶²‚0õ¦D¬ìÒtç¡ëÿꪩÊí#w5YcgríÜÔÌR(Š–Çû#½^gHadÝŒTw«ŒÈ‘”çÐSPJ ’8Éÿ{¥-´7 ÆXb$öÝÒ–¥R]’}iXÎÊZP#qëMºk—$ÎmPH½©³™If“ Ž”ÂP6Ndr2~µU¼°ùÁbEWÂîÈùõ§ÜØO`MIövyòÔã#&¤ò7«Çz’i¾ç@Íž? `µžàƒå^­ž*3o4ÊYpw4–°År“÷לûÕ»x`‚Vr<ÄÝVmaŠw$üËßÞ•‰ŸdJ`Ê¢”µÉŽC“³ úS$-;¬‡$*`ñæ$A—aGn3VÖXO• ?4¬vã5`IÙcæ#$¥aY]´·À±öëøÖ­Ã5ÐÜyu¬›[‚לõ¯ll_›ñ[0@ï¦nNv±8­Hâf±Ø'ŠÇ}=ÅÊ "-ÉëŠÆk2·²±“ÍeB.Lpþ•~(ÎèÔùQôcßÖ®Åoç1hÔùH>ñ«‰™ó ;¡5=¼b;Y\™’?• “hÌF<Ãɤxü»Rq÷Ú¤€ýž,¸0­Oe2Õ®gùf‘vG¯¡©mØ-Œ²q,‹…Zi‰äß,ýôªë×%¥9g'éQ$rLÆCËùRÎÇÌ_”¾Ð2¿éoœ ¸"–鉓 ghçÛwÛr¦LIPOðÒi·*—ÈfÁRHÉ?v“N¹å|Ò`FOjtŒ „(ùAØ£ÔÓnH{×ò€Ù¼„Ç|šl§}ÑØ0»°1Þ®!løÈnØ4„²>>@8+VÕ˜ä7j¬|³Bpøö5Bt‰ TÎ$Àüj«2£D8qÀúÔ›š[AÝ×'×½X•ÚçJÜ]0Ù5<¬g²Ü>ðù‰¨üâd<€Þ¨Ç9{˜W¶à„ÿ³š©ÞeÄy褹æEsŽ ^ÕGïP(…=>µfü~ðm㨨þðêrà{Ö~r2 á:Z¨Ç œò±Üª UN{šžßUò#¬*êGZ–=CËM¡q×Þ‘È…Ü_<Ô!Ztis¸¾y¦m2#6r[½68„«Ôú m½ ™x$gM†ØJ¹îiZ(“ËH}=)%ŽS!î=)²,1}üSwK4ê#]©Œri±¬×â5Âãœb’%–i~Q…Æ9¡ÄÁß îv ©!‰à•KÒHv¢Ô‘FÑH7ó#ü T›çŽ=í"‚½º¶e¹·ƒ{N)Ú¦qS´’Ãã(qЉö±Üò™ÿèµBrŽrÒ™en}…T•‘¾bæIåOŽ<ÆK“Žãž)ðBZç‡Ú\ûsÒŸ _¹Ïñ“@"Dww;}Z–8„ðI$²a¹üGÿ­O‘$lûPX²"+lç¡Å?–Hãݲ"¥Æ88©%U ژȤ¸û‰ i´Ìy'°Óï÷iíi°XžÀQrAT†% ærÙíŠ|¤E _›wnôË©_âÎG­6åÄVÆ0¼îëUK‹t–EC +Ÿ\UX]mÖYʘ‰ý¬TÞJJàd2§ßÏ¢Ëožƒ;X:ÈT’(¼à °,Ö@Y!‹ÏPHÏ?•lèzœRy±ÈÁ?ˆg¥møRl°ÌÁ;—5¯¢jÉÇ#mç+Z3F’3æ7}µræÕ'3Íná*äÖé#à0sß4䈔mRyçš“ìr,+®Ô'žyÅ?ìî#…Ï­`º@¬B®rEU½e–â;hØì;ˆj½ÁYfHP’sНq ù<ÈÎäÏÎÝë:òR̪ëó'˜Õ©K2®Òp ­X×wÞÆ[ëÞºKX…µ’nP&ç>øæ·#E†Ø>êäÖbLÛX(|î=Âú~5̵Ëìu\|ãæ>Ù¬¹b¬ƒo½ô«1YÀÊ’Js“¸kNÏL·X#¸¸!‰ù“ִm¬ Š5šNHÁ4Ï1°fm£.B-S2>ÿ<…œ”QÚªn`ÂFÆX¢®ÆQ´ðy?Zèm#Dœ‚2~µ±lQƒÔdÕfa@õ‘ºZÎ%ØæF9j«áas'Zu¼»cÚÃæ<ðsO²ºòíZ9 ãæ–À·(Àn Ó´g÷A t?ýz§¡(ï‘@8ø]-ÎÖxÎX`‘øT¬]âYÛ€AZ¹;=ŲK¤)R½êÌŤ„8ê¨ÔpÃæÏ¯cTä ÷õíUì÷OZWT‚>‚‰"Oá Ó’DÈ?•5EP’)çŒc4è‘£D ä àŒt´øÕ—b†8•l¤¶UAʱå‰ôa•íáê1ÛÞ˜¿hoŸr†Ûœáý©Ÿ¸ ž…i Ns.ìŸåM)<ªIEQÝØòiÄêYÔ³u5C4Ã,0=MH 9ÞBõ qSCb— @ô8©â´Uå c¥= 2¦y\°Õ¡äˆ$H²MÍß‘Sæ1 …rß…%¬¨c õ8þu›q‹vÞW!N)–s¯‘»nO4ÙT´H*Çž:M¸ÜéãkN Sf‚/CŒþ¨B:n9;qš’7T’2ü¸ÍHŒEïcÓ¥a°(3ž¦›¨1ª"üíÎM2ô‚‹¯'’j´¦AŒå²ÀŽæ¨ƒ)bP n¸9 ª™r¢!‚„cõ`iðý„Ú²ðãæ>õµ›mýœmÝp¬73V‘²„Ø´,¿.2MsiþUÞ쓱Á>˜®R r·ê àÊçmmŒw9ä]M´[ä|Îrk°°ƒÉƒ‘ó¹É®žÖ/.0Rrj+»Ä‡÷jÁ¦nEA«_­¬^R0iŸ°êC¨^,)å¡Gã•[tº„ûã’ `Ç<°L ¸zûÖLSIà¯Þ©HYïÄo %~b¢¯A ÞkX‘ÁK=jÔ­Æ¦ÅØ„±Ö¬]; á9'¥]Ö.Xm…‚ 5kQœŒF‡5KfÔi…ü¼u¬I#(›öí ~_zÊ’?,n#¯ÆVHPàÃ+ ‹dÚld(ÜcëJÚP²Z)Ç,¿Ê³‘É·g*>YHÿ?­`‚La™w.ùüë&6ÊFÍÈó0:¾ó¢U”¬c½sœb¶eÕ#ˆ„OOåZO|‘®T‚«ÇFIÃ_¤KÔ ·µQï‘‚0O·­UY·Ý…^Ú²Ã䕇ÞFíS²¶šE?¼…¹Ç¥JË›w‘~ümƒô¤Ãá•ÂNàjç;‘8F?xeùwFø'¨¤P<ÆÞYŽ2NA=©6ga#²3‚NA¦[¶d ±V'¿CO’) +VnlîF!T2x=G­M=¼…Ézã½,dPKqÏ­6ÏoÊ a€O­¸û¤|Ì)²“µ[¼o´ûŠ’àð„ðc}­ïšt§î1à©Æ)$.ã-¸žÝê™ @2Á™F:Žg+ÿw4˜û4ƒ{+1ÏzD"Êsæl¦yïšjŸ³;A%i¾^0OšØÜ<MhÉx÷¹•¶çnxŒ‡z‚æFÆGµ*»Y ’3Í*“ì‘dŽ Ó•¶®9ëŠÚ]»#1’ËT¯w$øÛ—¸c$qOyÚ_º»21štq·—¼8Ë/&¥Š7H ž`ù—“R*8Žñó/zbΑÀ" —ÆÜ¨éøÔBú8ìL ß9 *ÿZŒÝF-|y#Q†ò ”FãûWúÕH$h-¥Hñ‡`£#‘êj´24V̫ћô©WÌ,Y0Fpr:Õ˜„Ìw Ü3Ž{՘Ąä`ƒëNT`]å Ï`{Tè¢?1å+’Aæ¤L g‚IÎ¥E5›ÉólBGÉÅS½»uº/™U0¼wªwW;¦-Í…ÀÏêZ„¢é±8 úVD×r¬˜ðsŽ••5óÇ8^~S’+¬‚A%¼r7ñ('ñ®ÖÑ%|` cŸ¥uÊÃÈÝ6‚k)K! ü¬$éÖ¹teŠf}­…pÃ:×=‹î*p¬ÅkMp>Å,ѰŒ=+¤–ñ Œ·̱’¾+r{–’Ï%P+›Ò ¸šûí2ƒÐ·>õÈÛ,ÒÌÓÈNpNMs6i;ÊóÌI8çÚµRÀ¦Ó#gƒéR†g;v—9â§Œ´’P·Ì+X"F TUà“]rC º³G “ù×F8U™P.Iü*©dºÛ2çË'Ù¦TŒ±u6ÿ Sºd¹™D{Q·¥Vœ­ÌêcÉÀÁ¥·1Z[¾æàŒ"§×ð«3݈-dBåTŒ*ާåRÜÝm™wc¨UJÈ´Ô ÛBY¹nzœÖT …Œ!äôõ¬ènda žkG÷^kàawtüy§1O5¸ÂîäRñ¹½ éYúLâMYþéÈÍI¥L§T- ùrj].`oÝ›sƒ[{XbaÔŸ˜8­w·Gö•?ëzqÚµ y‹Ç˜~aP35´ÛHÎîk2A%µÁR3š ûíç*W4þ˜c åäü>Ÿ­J«¹flanÿw=?Z/Ë#ƒ¡÷©Ü‘±ƒšÕ•™mÒB½#9ëZ3*+ü#ñ¨£móªl#o**¹2]¢ªm#”Žj´$½ÀÀÚ@ã4}ó™ ÃüF‰]˜ÈØh‰;š†umÌx)ÇÍ2I¢ñ·8oʪÍ0’påPM.ø×#ŠyäÈ.ì1†ô©¤\$‘×#µK*ôà³²ò 5´m4lTiöñ£[=ÄlWn-:$SnÓ©àc ÒG9CûÅ¥O4È.ÌL<ÈþE?1SȦÅs°Ÿ2<¨ëŠÄRüˆÌÙê¥~í<ÜÅ()vô+÷iLÉ *˜n”1|c-Ã0(SëéMa361…4Ø&DÀ?2üé~Ë„Ãȧ•ÛÒ—ìøL3íŠxEI2pSn?ýTóDç2í#§O¥+F¨[¡qH­$€"Bði°K4È#F]ª1ô¤ŽI%@£GZi#†F+#¯ËóŽÄÔ78¤bŽÀmçКŠá–'rô¨U¶µÌ÷“ù}Cõ½´m _2f\/ ÿëÔ?mŠÖ7a†•‡ËíYúeö•ÓË0ù²øïíPéVÚ&YAòÕ²äwöªú]¾ŸÏ•v­“ï]%Ó¢Û•ôÀ ?JÞÔ®Ñ-ü¼ò0Ò¶ï®aÚg¦oJ«lím½V,þÜVm¥ËÁ¹NÒ\b¨ÚJÑVU+ÕªÓyg!TÛž;ÖƒVZ䵂Y€`̓óuëüª¥½¼QO’ÜA9úÔðGÝ$浉>XQ†£µn—,‚0Cc¿¥jîÜ¡sL>[QØo' Õ_Ü7ÚRR±ÈcÓP,¬áøbÜ•’Ýb\4’qè*ˆÇb°)Ì’¶ íÅG${m’9w<þÔ¾o˃åùFVð˜îó•Aõ§­É1 .OE¨ÛjÉ›‚ÅÈàÀ¨ds»ÜÎGËŒTClr6K‘Á©¨ðB­’Îç,(ImbC,ìç-BÉ!EÉ$æ¥0¤‘‘ОA©ž^ÙºƒR¼Q˜¸=EFdiq!Tä w" šW™Ä²  ‚‡ÿ¯PÈí#q€Gò¦ÈÊŸ,c"@ üÍ6ISÊ„edPHüM#ÉÝÇÑ€&ž7.BcæûÙ«£(*¤|ÿ{5,jT:´¥Â1S€<¿–Y8ùÓv€¤bá7c'p¦ÊÒl Œù‘Ù‚Ç9§6¸Ê îÎÑOY¶J¹@pÙ S„›dh'=*9Hù•xf8PECq‡Ý.p«Ž•øpÉ‚7ž=©QBË䓃žw¤µDYÌ pKpøïIn Hbn{UMRÑç2ùjB®1Uõ[BòJbÎÅÀ Ô-‹³”ÎÑŒVd:MÃͶUÚƒ¸ç5)” Ú=;ÕôùL?ݽiY[¤&]»Ví¦ËK4‚Ì­ÞÕµnÞÙaˆ|ǸíL0eRÉærÜô¨ØË?˜Ñ™vòÜ÷¨ò‰ ïÛɧn»:7. c˶98íJ³"y±œ|ÌÝÉô£ÌýÛÉŽ_sPù«åˆs.G>£ƒT¼ü¡(¤yÙ?­U2\(#ÍÍHŠa°Ê f>¤TÆäÂîĹcî)ñ³23 F¹ü¸¨bx÷´’Œ0‹õ梴h„,ËF}}ê;s³´½Ç£# 4G%œœ`v)Àd”<³žÞÔæÜÎÌ\ÿ*«-¸•[iÉ' žŸJ­$Ã9$äg½@Ñ«)ÁÉ'åÍ,QùU.Û¶‘Øf›°G`¹làÔ{hŒ985­o9c0Ø ÖµtÙà¹B¸Ž5ÏéZ¶2»Á2•¨ÍR…Ä7,Ì ˜R9úÕ4˜[ÎÌÊd8Ç>¹ª«/“!, ¸É«AÑíà Ëé“SÅt’r¾wNjt¹XÏ-ò·QN` mê¤HïRÞ9‹v ˜d;ÓÈÜÍâ7ÒFì¡VB¬‹È`:qMŠåÑ|¹¶ºÆ>Bµ69™«`ìi¦Ä]c-Õ†$eïþqQZùÑÄdS»ËÄŒ½Æzãð¦[‰-êr…:E™˜0';})ÓC<®¬’†ÜIÛÜQ4.ìdÎîp{R)?qŸp¼Q6B”fÇF K>pÉÓ¸÷YDeø=jw‚a‘ÀéÞ¥xÜG¿?…A#ÊʹËDîj•̳:Æ®›#¿­T¸’FÙ¹v¢võ¥‰•çV‰[`ÇŸh¥®ECµGB85%°&o1Tã’I´ÿ'˜Ç¦–S€ÿ+;’I ¹¢1¾&$dã­¢X‰ÉÎ3šïBÇ·z—âsƒüGµNÃ| ‚9þ#Rû°Gô„«y‡9,x"£2!ó å‹pG¨¦îO˜÷-Á§4ŒB±\º¹À?Jt²9HäÀ.¬qëÒ#1 Ê95¨ò¾öJ©\ ÕT å²UJ:Š®˜~yÛƒíS*%Óy%W8'šº#F´2Q `žzU¢ìÒ|üª“Éö¨­÷•ù†1T-‹%`~`BŸÎªBXC!Bš™H0(CÉÎâ;UÏ5Ò4Le—÷Œ*Á‘«•ù1ß1ì@Uzu5 ×%£Ä GßMG$ûÔFœ(ê=iÛC¨A~bMNŠ“@¨ŠTFw1=óR¨YQWîªu&”…U ÌíÆ*P‘Ç‹†w|¥Hjªƒ ÌÔÉŠD®#S’0=MQ½d‹zF`–ð3ȤË#ü§ ³„Š"Î7HíǵEù–ãÊ‘6«ïQCyæÍå²íVàzd7&Y n¼*Yab©?êù¥š=“*1á9¤š-²¨ÏÝ銔+‡Áà`ä~4’3,ƒ<¸¤v+/ÍÂòZÑEF\$Qü±[VðƒfÎFÓ¯CìîAÿX½Pkr·$¦~ñ<ôÁæ³ç´G(,3Óf©Ëm‚ÄI$j¹Æ2‡úâ«*®î~hð?÷ñT›_s¡3®U»f¦ìæhŠì»£=9§˜Y–XˆˆÜ†°¬/vj2Ç ,å÷<¡¬;;Ÿ.íÒL°$)ç®"²l.À¼hä$‚Üþ¶Ë‰d–dzŠÑ•qq<¶Í”<‘êÏõ«®6É,‘r§¨¨Ù÷ô8ž*±,ç:œT8i9¥†$¤fÊûš»kjZI £ïV U »vàVd·Ó<†%KäÇJÎkÙ‰1#_9jÍ’òg- œ·ò«º}±‚Ø[tŽÀ‚ ^Ó­ö[1³+¸*sZ14vȳ#´· )˜GÉÆsž• ܽÑF{çÒ ¹†i.vÍN`Ž#…ö”ùÕé- ¶òßi^ Ïb9«ÒC Œ[ëíÍW‘ŠK„æ&”œëT¢]—PNäy2JØ#úÕH—eÔ27ú·cƒUµè˜*à|¥Ë>•'ˆae`@;Kn·J5˜œ0ÇMÙª6Ešqæ/Ë,ÞõhXÊ ¯Ë%½ê³•;Ý~XÁ?Z¼&Y5lãcÞ¬M0™Õ£8÷©Ú_9ÕãSV¤È Êß3sì*9Øœr{æ™9É$稫0û +gLvý;~VÁü+V͉+û9¨šFºŒî |U).¥Ç­»÷ª’\HÀÂêiÝ)žyÉÇjl¨ðÚG¸d“ž;SeS1ädÒ¸Æ9 ÉÇjQä㨠Í*Iˆ—Ây 2Y¾bIäJ%E™¤É$±ÈÚ„‘³uäð)€«’ÌmÇ>ôЃ;ä*>iiPìH iÒHÓ7–9\e~÷Ö¤’æ[¬C»*£*?½OyžäìÃÓÞ–#<£' 5=¿Ú¬ÆÖ@wtPsRÂf·\ö¦8x·_›äõª÷ ð–,àžÕÁ£bO¯$Ó7$Žñï,§ £éÚ¢ID$EË î{v¨’_1ž<“†ÈôXÁ*­³††§Œ4誰^1èjdUÝ€@ãªêê²iOµpÀ•üEªyriÊPaÁ(Pj¡ÁJ›šÉÐ_Чî·³ôgmÝcŠ£¢¿ú@CѸ®ŠtùŠŽ È×¶®†Ö#îœm#>†¶&Èl?:0ÙãTbàîúž3"¨;°;‰>†¥BÊ àäõJ}>îšâUÉçÜÕ+›(§»yí·.ãùš§-¤opÓCÀ$“žþµe[hY£.Ò§ø©à˜+ò…d=ê]ÞQó  Ôþnà…#’jÊÊ®¨cˆ`äþ5:È»T¢qÔÔ%›ld;ˆªÌ¢0‰”ä­Wqæ!ñ³’)€‰æX#TÙ’Y±Ub_µ\, nIcUâ_´Î"UFI"¬AŒ}ì+ÿÿ÷4Ëù$ ŹÁmŸÅÍGvådUcÁì)¾H·œ½¸ Ç©c÷j8`òn7@˜ŽIþþ½2DR“·R{P©ä¤¸<¶{t©E¼2ó–büªEœg’r*9UK+.Âwlüf«>Ó'ï]Jçvß­Wm¥€‘_J«…½³MÇŒv¨Úز¡pyíPÅo,]T¶NAªÓFË&å óS´*ñ‰Ÿr©þÔíäó°ÿfäã'æ€F?­;ìÞL{ŽàcúÒýŸËRrp{Tˆ## óŒU¸V//ƒócmX@‚=ÀüÔås*³8è{f¤Žfž6}¿![¶M=di˜”ñõ¤@dß|¹åO¥2óƒB˜\ýÓéMAæ#"qŽ”ltE(¹ÏLý(Ž6 ©»x'žzæ…Œ…®IèiªŒK VBÍÁÇJŠŸsÁ†Œ³p)‘FÙ0òãƒNx<Ð20ÙÁaÜSÛÌ ÁHèið@ãžqÞ‚cÍÓŽµ>—ö{E•ÏÎÿqTw©l<«x݈Ë*6‘ØHပ€ÀãQI;0žMß¾“ÐÏçLy[°?¼r8ôøÒ qü ÏÔÓ ®àç(ƒ#ÜÓ£Ùû¨8÷5 "5;X’ ž€Vx¤ç%A=ª#æGœrFi—²yLÑ¡á‡SÔúÕ‹‡ƒu±ó§Ö¥‚~é>áç'õ©£!cRøPØÝïW`*±)| b7ZµÔ¶8-ïUoõ,þî0Ƚ­C©j›€Ž Qüê+ûðj  ~µI$ºsJüÄ}3T y,|Æá·gëTÁim¬0Äô¦ZÝH·o+¸`ûžÕ R¸”lb3úšŠ)XIÃpy­InX"@ÉùÇ¥hMzÒÚÚÃ#çù­ nŒ©oci×4ãn±Êê „Å6âÑmîdU"¢™-°†g 0ö§+ù”sÊgÔTÖÓù±¼X%Ì™õjh%󔻪Ò4R»iþ÷ K$ç%7CpÔI‚IÏ'šqº¬™({Æ«¢P’䡺ƒQ¢B²gn8¨ö«s$lèÙ¨„`œ²0SÐÔA>`J‘ýÓRÍÎ<ÃØ÷«±Ÿô]Šzz¯­[Sû«÷ÏcQF$ÞYp1Ø/¥A–72! ´çPÄdOœíC?å,ìÌ9Æ)X·,ìÜñK´Ü¹É$°ºTÞNÕ¸1œõ«f [‚Œ¨ëžµdÇå `0@ÇÖ£UV}Ò¹8 P(Y¤šLáN bÒHݸÍ‘²ohðÀó“ŸÒ£D…;FU³ÎM5'Pûyúõ§©\(^:U„Øw  t©†Ì6X\e»f€Ê# -Û4n]@¦Èƒä•ÇÒ™"“†’WJG¹ëOÀó£ ¸æ¥m¾|xR«Œ;ÓŽ<Õà…Æ( È!IÚ@öéB6Ø‚BTãÔt¥WÄcp!I罩 £Pw2‚qM1$‘¸%AÏÒÆ¬·’¢£ˆp…]ã=¹â¡·WP¬’æ«Ùê1î"8Q@'ަ¢µ½É À=êÄÑ©»R€e‡$U‹èQµEñ¿ˆíÖ¥¹‰MÿÈ8<œS fùø¹Æ=úgôªÎ¬í¿…ŽC€=LÔK8q²ãô¦¾çlg8“f¯sUå@oqKàgùÔ ¹»ù>îî)·Ç& Ž[;£9§_þ½[šÍüg?z3Áé×ÿ¯SËàKgt}Nµ£”ò~b3×Ò™¨,Âr@?•%Úì’3œ;U ‰¹W9UãëT&&y”uUãNoßL£Uâ´/% ŒÇn*åôa@@V8qҬݰXÔzŒc&A%O+-¸9óYÍIV½‹*»0Ëî@9ÜqV슭ÆìøîjÕ‡Ë)* üƒÞ´ÎLò~RzóZ7MæÜÏ´’…#ŸÆ¯\2IŠýÒOõ¨¡*Æ ~a¼Ž~•ƒ)¸ˆ8Ülÿß5“*änÀoåM`IòÁ‘¼ü´’—w1ä„ì=)»É³v?•9”#à7N@Å5—d ‘»ä SYvH23èi\»»€'¨4â&ÕVLS¶4‡9›ÆÓÐ0§¦c•7¹ùC zå]w nÍ$…‚ §'$ ¿^´Ù–·’/ÖšìÂ!ƒžÜT‘î`±îÚÅ7gëV­‘·‹laìŸ~jÄ)–òËm!ɨHo7æ™™WƒQJ ¹ýìÌñÇòŒ~µdÍ—²Ž8§ü…€T!{“ÎiYRI$eP}âÇ9§0W|" w=iª<¸ˆPr=}(…b„–òƒ+B‹,qª¤ÅOÊÏÎ:þ®D¬‡åf䊉܉ t>•*Æbr9ÎjxáQ9îÍN‘†(QÎid`Œç8"Ÿ.LúŒ~4®@|úñN˜~ïv~`;R]FD[óóJ.„ÞO>ÔŠÊê <©÷¨’A"ÏÔæ˜Ž$P椅òX.ÏfÙ÷¬Š˜`ƒÇzšÜŽ4Ï1¼–rÃn3ùQ ŠÚ¼‚§æýFd"ä‚ Ýô4à³2’¥9'µ+¬í@Èc½©Ì²ùd+›A&›,³D[‰A ÃéI`ÃeÌFeV ýúS-paž'ûΧý+AŽ_>l.@üŠÆÒ£˜É.ÅÎæÏÖ²t”—2äþ5¼feræ0Àü­íZŸndy£ Ï¥iý«o˜Ì¹ ýj!2«¦ÈÝ‘SÐ n•&ŒªDõì)¢ç+%Ö¥b†@c m²?½Þ¦¸ò^mÑAn;¶yù<³.åÆÕÉúÔ7QP$P2 ‚£¹á‹ràtÁè1ÅEr§ïœ1L›Éh Ži3¸eYGÝÆ*[†…­àIeË0Ê•çqÍ>wˆ¤QÈÛ˜‚ùÅGgk+Ž>G_AU,Šdã§Î¨- ³9#!~aL¼ ráP2:‚rÝÍ%Ù7l`©@NOzK’n\”*+,‰%U‡fÕBK5g>çP›p©¬÷-"… Àëï]&›†#¨Žì+¤Ñ-M¼âTØ|¹ì+L¶ò-üÉç=3ØTK¾ÕÎyaúÖQY¬&*à :㸬ãæYÌCEHpŽ®˜Ø[8¥‰Äs+®6ÓùÓám³)À jyc_FæÏ©5ªŸ n#yÎAíZ[¡1ŒàN)¬± cŸÝ¤TÓ'†7³a'®ySþÙcŽ ÅÈz³DH gsHzÿ*–ÒÜEjH!¤˜änÔøbòà#‚ïΕ Áã!ÆïïTS¸x ‘¸ƒ“ŸjŠfV‹Ï9¨ÙÂ¥X–fOJ¯,+´xbYŸ?JŠH–8£ç%Ÿ$ú YcS,/À£ýÚ”¿h·w;•É\³Oÿ¤DÎs¸`ј£ ÌYWq £½H º†iX„FÕëN ¤¾pOÝŠ¿4Er¹=Ç,°Y¡‘ttÊdÿ¥ó#¶BTLšˆTóY†\çŽÞ•ïXŒ¬Aix¨2 f9f9.ë·GÀb™Ï÷pqL æÝÌØÈ?1TÉ4þðç54X ¼dmÅ^€lHßpî1V£ùU[4åÆööæ„ÇšÝðhLonø5#à’qíÇj–m¬­ß<`Säà †«¬f"Tœå=½«<Áå¹å¹J¨b1ðy=A§+÷xÇÞ”øehÛrñ¼=)ñHQ‡aÞ•”´Ä*’¹É^Ôé#óf`¡¶’; V{üšiŠxÁ Œ7Ý知E%­Õ°)‘±¹á»zTm ðþï‚ f+å€ ðÑ3ãdÊ |Ø#Ò‡`%P0Hþté6¨sn£Hõ&§¸xÒ)Ì„`ŸrjIÙòÚÕÀæ ÆFÜííTE«ý™X¹ýãméU¾ÌþRÄ—nžÕ$;²cûʳô© BÅ£ûÊ¥¿*t)½JõÛš2Ñ"(ûÌw RÄŒÑ"/rw S•¢U^ù5#«ˆö¹ Ǧ;RÎ’,h®UŸc°¢PÀ(r zJ#D!î §8Õ-¼*md»nXð=ºÓâ‰M«\0àsùTvòÇqB|¥<äµN t1³ç uôªÑ÷oZ\†z¤0þàÏ×­M%©6¸_ŸëÔT’BL#oÍõíUÜó†0ûßJÍœ!q†ªRçqÁè¤MåŽø5$M Œ9Á©#gÙžHô‘‚]¤%²¿rˆ <­+¹~æh‡qÊäätúTÒÁüºàw=*Ôöv÷_9ùWøˆ8榚Ú)~bpç]—n “¹› “÷«2_ÝÂr|ÃŒzóÅR˜ùi§;ÏÐ÷Ž€ª›ÿ0)ÌÌL‘!bMø>§ýhv9‘7|±ãMŒ3!PHÜy÷¨­w»lG+æm¾æýØ8 y÷©˜‰•r>m š»s˜l›h*Ûö{õbà˜í°¿+ÅG‰Ts““¸Õ(¦T*®I9!VŠeUÉ<Ô¶ûŹ 2 ¨9«öo8°0Ç°Ä PÕrݤû”(8Í$–©#lÙ¶69'±ØRK€¬6FÄ’{UÅ’4À8Ú‡“H兀ž•4ÒÛ¶%m‰ò‚zžI¢/ò…À©°Tæ" ‘Ò­s/ F2A©ðcÉëQ]\cÁdô Un®šÞ?-e˜à…¨.n i´> 늒቉Fyš]Vv–ã`naëF¥!xÒ>€ š€9B‘c=¹üë7%H¸† ŠB ªcÚ˜Üò)ñÆgÝ\67nôÅ=¦Ê¯ÊÜԾYˆ:™‰lgþUtB! ž~\®òoʆ_0Æi !CHîăCò6w“ ã€1ùÐÑíMÎùÉQ hŠü¾dxèßx}i—átÂù‘ã£uZlÅâuã|cµ"y.Øz?£ TkYHX÷£ö ý)PÃ! Vô4òíÃ&OÖ«ÜpQvüÈ?:¯p0@Ç(?:j¨±;¹ ƒòŽùæ¤Ç—c³„p£Ž¼Ô¤4vÑ39ÆÞ W +»8 sN³Ur'c´/{ÒÛ*¶%nâ„ÍIÙ‚E>0¦&cå€J}iÈ0Å +&É jW„|ÊO½gÙ)kûŒŸœtúÕ+%&òàÿ^ #ð«w’< ˜Î㊞æ@ŽO¸rJaû0+tê<’›··ò¢­D‰s*ƒncÎæõô§E þt€yEs“ëYï¯[Á#¥ª FAUdÖ#¶’T³«‘Œôª’jÑBϾNO¡ÜÉ ´£å<ž*ʽÜöèÓ ¨ý3VÃO,jÒŽ*I›i"c û¾¸æ¥˜G&Ÿ$XñÛ}y§I°ÚÆÖLzÔ7בE˜¸mà ZŽþò!‘o0dëÒ™yr‘Ź{ŒV*}¢îà8Þ@$võý+ &”p¬pHíYŠ$šUÜ~Vêk}VL¨“8ùÔñÿë«ê$% ¼çø½ªò;KœŽæýª¨žÈÇæFÈ'ÐÔ3ÆÑ»†UºÒÊR¼äí;,г2¶K„9=©]VWáy¤rNÂã;8zÒÊÒHP8g_ò)ϹÙws޵8$a|· ¹Z¬F-ÑNÀ7\úÔª!TØÄ)ÇP|‚qŠ%E WÈ'H l!³žf݃o¨Ç4mÄ£ìk*ç0^¬ˆx~ gÌ ¨êx~µ£óäí sÅj¡fS´ŒxúV‚d¨ÁéNÞ9 ž´ð£x‚G4àîsÍI ÆXÆ_/V­Z2Z2Ùzš„•ÎZ¬ ¸À9«ŠW8« Œ`Z^´µÅó“Ȫ¢Ô4¤‘·Óˆo'¥E=¢œ0m§<Õ[)çF Iç?ΫÍ`„†S‚O&«34LIÁûàgŠÏn¤÷ñÇZ§"˜àwÆ@ëR2“Ë.@pGJsñ|“gØŽ”óóGò=" ó!Oq@äÍÇJLeO™µ8m‘‘µ†v÷§ìGXâÛ±—8=iûöÆFÒ£‚*;Ô8Ù'•ÏZ‚úÜ— ?*ò3Ö ½‡{„àG­dk’\[CkLª˜ßÇ|U]JêI,¡³Tûøîj¦©s,¶ÐÚÆ‡ ÷ˆõ£JÓÌsÅ,ɸg;j r—´‹¸zzT:e©Žá^Aºº’mÆ6ŽÕÑÉ5¿—±e<®6Õ¾òGåíWíÓÐÔÌäBê~^sœqTVSu¶LíÉÝÓŠª² ŸÝ²W<ûV$þeåä‰íô• inT|ªp1Y¾k‚ƒî©à Ô´Ó¼ $yW‘Ó¦*ôapï"óÆ«ÐÚ…Áf?¥Xdû8ü'8¦9E¸ü¥)I+žvštDK´î!Iä u¸8%ˆRy–TçÒ—ÈZI€H'žµ,vh‹4Î¥°¹žçO[XãI$*XãŒÑ%äÊìRNM6ÉC™)U$8ê}(³]Ûò»C“Þ”’ìOjt‘y7’ä.LÿõètÊêÿ1Æ3éDGlgäí?QwÞßÍ);1ܶ)'‰c‰Ž<Æ'å>™¦ÝÙ¬9ǘł†=©.m„q7Ãæ=³N–6v€[=©÷!’4To¸M>|¦Ü7ݨncW°¾øÅEvʃ‚ÇçãéQ\*¶?¼üzX¹Qþ× *[|’=a…Km½äT©ûÅm§‘ÅYˆùÈØ?7J•‘N#Н¼ÑÍæ(À=ÇzHmfI<ÕCqÇz#‚D¿cÅiF@õ=sZq E¿|ÕÅ\cÖ†b~Q÷½}*9älùQ}óü^”ÙîÐàúÒ‚sïR¨Ú''šzñ€M•€Œ“ô¦Ü°HžüSf!c9ïÒ Œ)ˆ'PO#ª‚*<+e†IaЬ4A#©¨^ÒXÆøX²g;AéUeÓ&Œ -زuÛž•^K#ùãl¯]µ s¡,’c× yª©p7”d Ô 8¤£=êÚ Ì‹ØzV„(…‘!ƒÒ®FŠÑƒ!ÏåJ°²8 ŒSBÛ4Rá·ôа”oP}i$J‰#U-ÃÛÞ¢”)‘¨ ¶CcµG"¡uÜ ûÕÙJ’þé ¦ ?irs½þéµ7ìawc‡n„TQÚË2Lç®:Ô&ÎHƒyœqÖ£û;Ç»sçžµgly\g{qš‘©\ïaŒÔˆzíûÌ9¤ŒEjÌ65ØÆzS£’XŸä s#_Æ„’(" (36M7ìóË ²;í' ÇjŽ; î-^æIn>ª4³’Kv•Ûi&¥ŽBâG'iÐÌÛƒ¶O Óâ”äïJJyŒPIÇãK.Àîb?N(”(Üôͳ,F2øgPi»' áT¿¨=© Ìc1–¯sOX˜ÄÈ’d’îÕ:Z°µhã“ø·îõ#µL°²Áµ[%[vï\v¦¼›Â¹xàLTÍæºMƒ–l‘úT.þc£àüÇšUhÄr’Í»$øñVc–²˜áòWÓœñS¬‘‹VÆwQˆÔ1gy À÷ïš§*CyŠ|Ùß°õªÑD1ÏÊhßó²ìR@`u¦HÄÜ2…\ð«ŒÓKœ¨œNt&M§–Àaø‘•ÅÀSó!…? ³ôÉRKT¼f%"$cçÔz­ó\1ÚJ€A+ÓšQ»iå$lâ–È´Ö#ºÇßpïQÄ[3#pÀôê4̶‚FíÛÖ¬DÇœ±e9ž•bÙT"!ËCéV`Q´/,v~TÈ™þçñgŒ¾Ô±<‚ãQDLÀü@ã&v»1ÏsS+앉ÏsR+íb3×¶jäl¥«Gj؆DhÔ+@äV„lWgú“ëO¦Ž³Ö¡„<Åø<`ûTh6É!n¼b†•ýîií4kÕúSŒª:š†W ÈcŸáªÜL®çøEA+îêI=©±ÑJç½@Xò©Pq“QîÁà`°™ã^·'#qÖ­FNGÒ©êÚrßEº?–tåXwöªº¾–—°“Ù2r¤wªš¦ž.¡-Ë*ò¸ïXvZ½Í‹´3&â8çµsÖº•Ξí)ܹ5‹m©MfÍŠr8­»W Í–r¾Þµ§bÆà¾Ù /ÊŸOZÔ³>r¶¶îGµ+>'ÏÀÛ­9Ÿ2™øÆj #™xJRMƒc©|©š1±‹®¥8Ç!i$v¤&0¥G9 ïC2yEÌX€sëAe1í\’ǤI>d>hQýj¦eIв;úÕlºHÊF ¥68Ú9\(ΣØñ³J0ÅGOçQ”t/'ß=1RÄû’49Ë‘Ÿº+FÝËÃ9?3y«Ð¶äŽ<õóD@*+Þ« ©=½ª¥©¢–ùÕ†F{U{‘˜†¥ ÌŒ>ñ8ëWšx©àã®jȈÉÏQÞ¡`ÖìB’¾ò·J© –ÍÎÒÊÃÐÕvlãì'‘RRʧ+Ü¢­ ´jùE cÈ«ƒ2©@PF;Ñ竌Äþc‘ª-älØØÌÝ}Æ3M@‰p7‘³Í0ɼƪ¸²Þøªò\yžB*€ªI>ø5Ì\ĪÛ×ó§6w#–RI#µOƒû²΄’}*Aœ#/Þ\ÓY[j¾FCó´cš¯*± &A*ÿ1žj\m“•¹4âÃí$ð~S@ÝìN3Á¢7ÍÙ,xÝÖ©Odn.åS£œúóLžÓ͸™GEç?6[a,²vœÕ¨‘bôQó7½*m‰e‰NFѸûžiP¬j装ïL.b‡X¾í¢JÑÃ…R\£è)²Dª£æ'—5‰$s¿(§ž) SHÇÌ%GQAŽG'yÛÞœŠ60A1<àÔ±  Ø|ÄóƒR"Œ¶9SÔŸZrLcÂÉn¡—Ò¬ArѨM™aÈe©£™mÙ“×"¯E(tLV¬‰dÞ˜«ÑÈFAžT7!PüSˆ‘UT}Úªº(ÂÀ¨I Û@'¿ª¾×m ôa˜€3Ži˜ÇBHô5Y¹$+ÛÖ¡•rÍÃ~üÕ›v 8êjJ³RÖv¯¥¦¡ôgtúÖf¯¤&¡u'­gêšb^Æ]ÙGCëY:q»Ó¦ÜFêŒpj¶ŽóMœ,¨êðÝ«*Ñn¬d *C[9/*éÉ>½«AHBËó,‰œžÕ ¤1Û'!×9÷©mË$kÁ*¯Y³¥ºÆØ#i ÞÕjÝÙ! Ä·ƒPùeå2co·¯½TxÙå3ÛÛ¾õ!ÞÒcÔä?8ßïr¥F¼Ê.¾ðÍ0¹¥cÃ?Ò™Œ°\†ã üê$]ð:T¼¸ÏÖ¦Ž1[yÝÅ_¶Œ@|ö)Á9ãžÕjŸ4‘žƒ4ÅR¡T`¨‘Yʬ„ä(ÉI‘@€µ$DáÑÉn=ªÝ„ûWÊ”®sŸJ³k.Ës€OçÜÕù(3“éVnUŒs#á¶(p¼*k…ýÔù ȨÖFHÑBn$ zUhf‘ Š#àrP÷e¨c‘Ò$“wûš0²!#û™ TrH¿ghÔ㟗pè)’°ò3‚>î{PªÊ»3‡Ú9¨#BŒá°j$Rç®iÊÛJ9è ­\…¼½¬~êçp¸«6Ò­ž1B‘ç ¼£°÷ªìËæúÆNXT[¾qýÜæš˜f^ÛAÍAÜùéµNjÎXŸîŠ–Q²ì:ûTÂVuò‘°í÷š¦Þ]Lhpz– **Œå¿Ú¨0Š À?0ê•¡üé`²;çjãÕÝ5&’I×pAŸZµb‹Èî>ï@j+— ɱ´ûTW×Ituùw¥zt¨înfIW€Çh¶?+v¯AO±!•ËgoaRZÈK}ÚIKÄÛ×éN´/¹ ôü(rÑ1aœÞÕnÚEš Ê9Zv3-Í®õ¯UÛYhw/,8§¤€ 9Á<óRÇ2¯Ë!Ãu©@>Vê9¡ä_º9Ï¥Λv¨-šG•q´sšxS€G¿µW2b‡=}ªàd=é¨ô;Øô§ ïcÚš )ùycFп:8G¨Ù° c“d‹ØtúQ´.kŽÔõž^ñn÷T©{qÑ¢V÷"ÜËР>ô¾tÄü°õ4ãwpÄí…W©4¾|¤ð€}j)$2©YUqÛ½W¸•îT¤ÁH㸨&s:•}1P eÙ#g÷º «"î”äg½WÚêʧ¾´ðZMÊÌÈû¸â¦ Ò†VfPSÃ3‚‘JRÛc‚ÍHIŽ5gbfžÄ›ƒÅ'”è­‡ÈÁSL’Ý’9J¾pjkDDnAÏÑØYÎ ‘Še©qƒ#.¦Áòn#—#™²vl¾Óß-ÚÃ9%‡®Xô Å';˜}MJÎûU—HH'Ò¢—zÆ®˜+! “Ûü⣔6ÕaÊI×Úœ$DÙ}ßz2#<÷}é3»ÜÒ˜C„h‹nÇÉÏZC4¢3 bÀe9ì3Mó¤²$—ôÄŠ§ûµfVxDLBíùÐÿv¬G –!c•4× áüÅ,A8íQH’JÍ]Í‘´zñÖ˜ñ³–óX·‘óÜêƒèGµ2d{w°eQצ*9U¢aƒ¸ùSÂC÷xÏåNB‰‰ùpéOR÷„ü¦¤C‰7 ìûø¦g¿qMÎqÎ޴Ъ©6ìŠ$J¾Då°:(È‚ˆ$fà–⡺¹X[=²#Ò¡¸˜# Á5ÍÇ–øìÍÍHJd2„‚~”ªTH¹®A8©¯˜¤ýÒÙ5;Žo0ÅóÔ|½+Iü¸'ówn2)>Ý2*û”†S&Kn?—SËk›‚1µzŸ¥fŹ¸ç ¹ÉúV|Q‰î2NÔÎMO&Åvƒ…_δ¥)7•Ð/çWåe]Û0^ 5~hö“Ônìj8˜ÉÒÝWø»E;¢Úz‘XMuw§^²È̊矧µe ›­:í¾gE~¸î+%§¸±¹ebUÒµmo-®O|pºÖ•µå¼Ù>c+ÎæëZ÷pËÑÈlw=j¤¯z¼g0§?^¦®y£oÊqïHWkôÜ¡Õv±ã4˜ÊïJ£ƒƒƒKSÆvžæ•Ç]§ÖäŠ#ø©|Ös±\½FòÇjà{žôò€ »œžùÅ=âE»½ž´âˆ£$àžôÀÌN n¥F¤³í-œô¦+Ûw»¥?i+޽<©1á°€´âÞp1QÈ:üÁqØúÔ3G%Âe€:ZŽHžP7`z¯¹áp ÁïÚ©–x Äàõ>•_-*犱²9dhŽpFëWmÒ ‰ž&àÚ¿Z³Žwd?Ä>Z…c‘fòÃ}åç>Õ‚D¸òCçrdçÚ¢°”ƪԶã°`7Ž™éRÙ.Éž2™ïÒŸn6³©7­®çÃùWð¦]å§ÚÁ¾P;ñI?Í)Î~_COÇÇ CjpPÑJ¾¬$>œðZU\Æê=w~t˜ÊsÎÒT“ÛIÔù!ŽÒTûUYòCÄŠHÏÎ0IàóP£õ'ƒP« Ç#føô&§Ï™|·è:f´"Œ¹xÙø#xÇjг·7-,.ücxçùV´>jÉ7ÝØ”(`ÚÜ+JŠÂ1R§kòŒ{‚*8Ð#l#¾î{ÓdP°¦[~Ò¥•BÛ£æv˜{f¥‘@HQFIniKl‘”€è½Å#®¬µ4Ÿ-Š‘Ç¥E}j/mü™Üœ£ú{R]@o!òœr£*})·p}ª#ŒíÅ{ÛL<ÔÊzY+fÐÊ ©e››C7 ‘Ú·âá1‘[î¯@1‘[ ªíÅ<08Ÿ ðÙ–#Ø q=‰?JP3Ë|Ãßµ* Ĺù‡N{R¨Ï'‘Ò”ÚWåïŠx+´€§ ß)À‚0â—äÜ ÷»R©‹x-&}7v¥7rÄûVd8ä}iîèqϬÀôþTÖÉÈ([>ýª' À¦ÂIµn`SnsHñ±°=O ¤1_-ð?¼{Š’¡Ž{Ôr¢ã!²}ûÕ{„Qʱ'ß½C2 |§ó¨ÒU%ISsǵG áY\«eHÜ£È{+ŽÞ´Â¥Œ‘’à}ÅFЙ%žÜ•ÞàOr ¨ü¢Ï,Yù‡?SMtÆãÃާV¸µhÓ|‘mÏFf«ÏnQ7²cÜRòŒò¼ƒU”ð äUpr?J&d¨ è9¥^¶A4¸$¢íÈôÒ®Â<Øw?$/4F‘Èçv¤†(Œ-‘Þ¤ÇÎiîwpF"m_ïTw‡p?.Ô\ø½ê+“xÂçåÆ7;°=;U@Œÿ»@]È<OJ¯±¤4›­*ºDŠ›¸Œqëš™dŽØÇ"1Æ:“R¬‘ƸfÈA€}M4¢N¥T}×E,H³«Æä©ô¤¬ñätS“Y·0<2¾ÔÈo˜;½ÿ­Rš…Ø„ëó#_ëYÓÀð3a~^¡ªõ…É{Ulï’>8V¬ZÝ`wJ¼qÝjí¥Ñ{@Ù S.Qå `ÍJóý©c’Cå´ 6\qSI(˜‰_*Ñ•}ir’Gæ¸Áǰ©D‘|é8lp=*E‘H1Ãv¥“>T‡r³¹Ç¸©œ²ÊÁÕ¤þ bžøû3À³sN/ˆ’EROBzq™RÚ9ÕI8Ã)ïNiBÄ’*óŽEFä˜þqP¼¨[x8Ïj¤BÛäÔ©( ˆ1ŒƒWmî’Ä1Œ†5fÕp² ÇPji"YWê8#µ\šÙ.Pq¸pEO$+*œwéUã'i  dt=±Y°³áT1ƒÛR6!X cêHæA¹[9ôêx'@0;½z’)S“íL$ÄÆCÆ:Ôd…Í'åÅ3 $¡ O}åîõ¡¤uǘ þïZ 2‘¼p)K2åÌx_\àÓ™™ræ,!ïœV,¤1O”ÒY³ÑiŠ«+—àvZ@Ø—?AHÜ6ŸLTn>}©ÈíLaóayô¨Ý;6wzŠHÈûà ÷¨Ý8cƒÖ<ªNèÏ ‘H²LˆrwÄÝA 4Š˜ÎPúÓÃÈrE=driÁÆFGà@-´ãÔ†Ÿ¹QÉ\»%iÃį<ò´Ø Ë'Ýû¤úœU[G1Y>ê¶Üúñüª½¡)¹\`×åN™ŒWI'Pçn?ŸëRÏ#Å©G?Pçi÷Çõ©dvKô“¨â¬;FŒ. )Å_½™ ¬–û0Y0œƒÍY»•M»ÄW’>Z¡õM¯÷UÇó®~eÆñòï²-ÕMãåÝŠ–61ÌÑãïQý?J¹dæ;§€r²éúU‹6Û#ÁŸ½)êv&Â>uÁÅ[…„jcqûÄÁ[•~F2šVQÉ9Çoj†ò3†È>Õ Ê§?…6?Ý@q)êjÛɶ¼JNûTjDVêË÷ÉÃSgŒl*qêM2h×`\Ri“"í Ÿz [üŒ€±©Ú2–_#lb:àÔ¯Ûl) GßÇZYcg‰£˜2žAíÚžÑ?Ù™_æ ?Ëõ§É=»+Œîÿ­Y&Ií",‹åI¸&ïQÖ³ͶŒ¶68!3ê1YŠd¶Œ¶Ý‡p_¯¥ ’][ÃrçS‚£½ZA%ÌÜ*Œ©ÁQÞ®ª¼ñÇ8Ä R‰æ¿‚ Äg¡¤EŒLÅ”º§ÌW=ý)±ìY˜d!éRJä€ P$|pGÝny¼Å lI.\}ÑVe}à$r3þÍ)ŒªHò*¯@:W£Šáäo¸¥‚ƒŸjY"1Å31ÆÀH¢f\6šÒ‚;Ö{JpzÓÄFXî‚+NÖ .¬UІÚvcéZ0F×É"žœUK«™ãUHò 1 íP\ÞÜÆ‚(É1TS¢ˆÔãQepf‹l‡/žr)¶—Hö±%ÏÞȤ¶›zN[¿opTx úUÍáUvuÕk~ÐõòÌä¦Ý¬9ç½H]¤ÊÃ/<÷§.JíÁ^yïFï7€ËÚ‚ÞxÛ†Þo‚)Ø%0Ç¥?£ Ì8õ§`•JG@ÜçÅ5âWÇÍŽÔŒ¡ºœSJUe<“ŒS6F®†cŒSv*²·9Å5¶°!ˆ'ÔTlÁÜA=8¦¶|ÄUŸ´ÀÀ£]†¨Üy𑵋']¹ªsùÑ7 •늞2d ¤uÍKþbd ¬*XåÞœ ôã&ß”®3߯!Q‚¸÷ÇZsHT}ÚzáÞà•u'ñÿ¯I‹$—Äô•7ƒïœÓ#pâïwñ€àþ?ýzSó[ÀÇœwúS¤ËZÚ¹ç?•I&|»w=ªi3,G*Þ§½Y¸cq§—†Óê}*iÏ›e¸`2Ÿ—Þ£G,’¤l(ÿk½U·Ä–Ò(I#…Lûj¼D=¹\|îüT[GŸ8 ‚qØâ¢XvÝGƒÂœz☱•¹V}êSµã,73.M]b¯•w3©ÝÓô«-†„¸°¤;Ö.y ü'µCp¯'†íè*9ƒ,k“ݽ)Τ¿†`*…ÁÞU~á9üG ¼á'4Ó,°^2BQš)¸/rÆxýipY¼NFEIÞî0ÀMYš$ŽÜ %äeÚÀEO4j°mqa†‚ -‘¤e éŸJ@Z,~q ·(OLŽÔŸ ·TÛr¿…PÔÃÈaFê:·j¡|^fOaÉJótÌ‹Žäг¦ÿ£@#RK?=>íYÓ¦6p˜âÎçç8ûµjÍÍ´>Z‚sßÒ§A’ÌrXñBùo” É9,xæ‘J0Û´õÉ4¢=Ç 2´¹ù¹íRˆ#(†à<Ç–ÏAŽÕ"ÃmJ õj|o»ÍWä`)#éRÃpv\ÆàÃiõ^1ùSâ—1LŽ2`Õ`›2¸ïÅc2$™â²Y6eOLäT¶[ÊG̼qøšÔÑ%xä|ËÁÇâkGJwŠ9?‰s)óD³Ÿ1H9*N*ÍâCr|ôpI¡8©î˜¬ =TÕ2?rÇŒø¬üª¹ –ãÕA€qާŒv©Ãci!zâ­#pRBõÅXV9 R8VÏÍЀ*f›î¶~lrIæŽrqÒá› àÖ0;’£xbH8nÀäžçµhÆÐ2¼iöéÏSHêTãé“M•J¶ÒÞ4Œ8Ï^ô›bGŽñü©»aŽO›çíëIò#sóABª‚ÍÓÚ•£*`‚ÏÐúR”à Á'Ÿ¥*¢ä†äŽ´‘¢ne~Xi ­Î:ÔI+åMEh®6€y5*†ù@©D€® ÏJ²$C×ÁÁéSVM¤s_ÿÙÿØÿÀððÿÚ ?ÕÓ¡ÄbGà“À©ô+@ª³Èv–c±}kCJ·Ù<‡æ=]ï[}ëJ‘ÛbîèzT“ýšÀ|ÍÂOzŠâS ^¬z{U+‚vnÎ=kš¼,Ü“Œžµ‰u¸²äõ¤„GûÆ/ó¨ÀÈì9§ÚÇÙÛæò)ö±ÆªÌÇæÍ6fŠ7{‚`|€ŒÓî$Š&i—#åšt²$Ldü5¾ëmaæGò¼¸AÅM®¬VÖ ,+Jâ®¶± @U_ Æ|‰äÁA?J«áøñò‚~UÍWÐýŽWeˆµ†ÔUÜx9Éi¤U ¬påªëH?Z$òÔKw4ëà ",*ų—4\˜Â¨Œw¤eÖÓüæ©>$\ä~•RO˜žW¥Klýî0Þ¯épâ'»< ¯½]°lmpz…I!¾Þ¹Ú*´·-åJAåš«K7î˜âj…˜£tdÕt`Y@ì9¨‘÷>=ªWo. ÍË‘+Và‹}=wÿ¬nBz и"`§—<¥El§Ì,O$g5 Œ[’~b2O¥Gj›IÏ\SÕ<Æm£åQÇÖŸ_iš@«…HÏ¿­9Îg…QN‡q‰¢ | àÓ­¤v‚KfÛòƒN‰Ù¢x˜Œ¦qUÃ÷½y¬¢Ùa¿¦îk;?8ÖŸ(bFî{zv«Œ¤†%Žãœ}jÖÍÏj3É¥·™RI##,½*õŒÂš"2ãµZµ!‘1’;Tâá[…z²×¨Á•SÛ59¹S¸A÷ª²‹—Á'(•fÌ—RìsUf!‰ùåG‡-—ì)Æ(mãW, ç¥<ÇJ?=$aå$*£©¨âI.œáŦF¯;p¸PzÓØ07’ô¤’ëÑN1šlÈÇæ»T>aòÔ縪{\¹òÔŒõªÛsR<Õ˜öÛ‚Õ§§<ÈO¿Ö¯Ùvýê±¹"‚ÜÕ{ŒŽ¸¹5 ¼²D2y4‘ò;‹ó~=ª¼ ävà"çñíP@—sü+‘V`‹b†<±éžÂ·l-–(ƒKöÏaZÖÐùqƒÕO¥KÉ«d{úTÄU+™Á“jä…éŠçu[ñ5ÁT9Dàc¹¬kûÑ$ÛPåWŠd¼¬0‡hîÝ*½¤s È!G%jŽÖ'™Ã6BŽséRàHì¥ÆÜnÈþ*¶Š%‘”¾ Üw«¢Ge$ó¨‚Ã!DÎrÆ¡òà—d$ŒÔÔ{b”¤}:òk;Å òhSœ2={S|JYÚÖ!¶. µˆÃÌmà§^Õ£aÚiñÀ£.9cïÞ­DRÓK[t_Þ{žµr-¶Úz@ƒ:ÿ:²ŠÊø Ñg¼ JÚ–Ù0К.¤Žðæq…cW’hDh£ÌqǵI©IWæqÅTo161SòŒ©¬]’q€úõ—²\Œš»´Çf>`¹­ÙÐÚèù•ækbeòtÀÂŒþ5[~Ý  ãùÖnŽÎIÅ"FZeFè[ŸÃœT¶1ï¼@ÃŒ’AïŽjK%&ásØ–ü©Óºà÷ÉÉõ=ªI¥ódÝËrOsRÊûÜcÖžÒüÙT%HŸJ³-ÃùP” HéV$‘·ˆH XÉÔŒ1ç¯SÞ¥°f *‘‡n~¦hÄ+®0XæšàÅ ‘zõ¨.‡“:MàðG½G8ò¦YPõàÓfŒ$‹ŽÔ}jëq ¡†MCwFR Ö‹&^O*¸cD‘<ó¿ï(ÂÔÚc«Kóu L–ÜÛÜÉse‰_çR]BÖwr]ÆÙ;¸_nôù£6ó¼êyÍ:y &@ùyËÛ‘!0Û™ÁùÇÕYoNÄBp9ª“^ÈѤe°?•V–ñŠªç[]+®AÜAäJK{…#vàpyÍ,7uÁ«¢éäP#P‡ø^7ò:‰DgøˆïVMÛ0 Ûêj7“Ë|˃֫4…’ß1è=}j.Ö$·>•f&Ì^b¨ õ¯ÙdÀfU ž¹«–ßêËŸZr¹‘›.1ô«8”ÈWˆÀÀÇcR« 7‘ÂãQNÉKî$  V[“3IE!O¹ª$„±9À RÆ2ËÉ ·õ¨cee®ý€§5º÷ˆ¥_>ž•ÓtãÚ¶»T7NÑÛ³/ Ä(5GY˜Ã§¶Î °@~¼Õ]JC™ÇW`¿U!"%?…qŸ~õÎåUŽyïX€ª¶OAúÓ’y§&-»â¬Eu4©ä¨Ø¤ÅXŽâYWËh¨£*«"©äÀæ‘$òÖ@®iB¨ëž«ÎhËŽÛr(?úõ"4~Fä@¦­H­– ¨ÝÒ¢ò¼ÅòøÈçŸ_ZH“ÍÌ`àŽyõõ¢%™Á51É?Åœÿ:žî3qÆN~lýEIp†$:ó“ïRoX¡ódªKyVÚØÜÈ7‘¯÷š¤ŠAb2O =êÜeóer¿"ŸàªÒ»ï3ÍóJÉòƒü5™Üd”æFíšžÕ~gî¹ÀúŠ»¢A‘&á•' õgKˆ²»8àž)—3fDaÅ6Ú àd‘ŒRÙ‘™@ÈÅ:סû椙Ñaùyf`]»¸‰ìN]ØVndF¶]¼³ ËÔe6ñŒÃùV=á0FÀŒÕ•vÞT7Ö#Èìû³ŸjÍ21l泞F-œñVm7– >éàÔÖûËdt5=¸}Ùìk¢ˆƒcØb·#Uhw÷² y[‡\U)U…Öí¤RsTdVd©ÂƒUH”’8¯ÄÞUËFÊã+õÅ]³—ì×2CŸ•×åú*Ô2yrÉx#åüE*ïH‚ ç©« çGlc‰rx&¦ýâö1Îy¨Õ‚»FÃ-ž•Q[a’9æô5]NÐÊã‘K(>`=ªódÌã5œÉíW+©­Ú‚ûåDÿ{5“â&Ä/«YÚÙýÜKþѨ#ŒHYXã?P8¬X>Cw¬È£Ôô5#FáAˆòcÍL±ÉÑòGJRLƒ2Xåïmnäñš|ÖW <ß( =Iâ–[Iˆß³h=Í Äð¸#?:+fm6@ ÜûÓ£€­·™n}êKxÄ’n#å¬ië5û ªÔúlBFw#ŠuÏÞ ß-K«•3…R §j3`cŽ;T~K–R¯¹W±íUc¶‘Èe}ʇò¨Ro˜6U(¸?4¥yb@ÍC|á¦}§'šŠíƒÊÀØÍXQäÛÔúÖͬ¢×JR9eà}kJ7òl°ªaHzþ5Ï2ÇשükÕ‹‘ïš<–ft'€2柬’» ePeÏ¥:f‘˜ÿ õ§û6* €“ÍHÞk¦Å_‘y©ˆ‘—h_•jDf—q»Š¹ºKuÌ]„.p;б¹¢T1ÇéM‹ øcùÔv`Ë3cÖ™mûÉ?²  ÜiòŽ;V¤CjŒU9åÛ3íþºæïdúm2@üëy]É·¦qM¸Q É“÷×ðæ¤Õ ò#gýb‚iú„~L³Á…$F@89Ü>‡­WG+3ŽJ\¬@w¦µ!Á/ÉJÔÒ€‘ ~±ò*õ€ß'’œÖ¸’4§pèI5«¤†R\sœšÊÕ˶zYc‘Žõž9⨨'¥mHÃp;UØ”*Ïz1±zqZ¶lË'©è+J͈ˆ†‹p¢¯Z“å`ä’xÝVU´±.ßë$—S+mb]ï$zbI– BÎ~g8£´‘¥eÏ)ÀªJĤ¹åzUH¤%•ÁéŠÕŽTlr·Q]5¥Ì2ÈY}ëv ‘ÀìÌ*¥ÞVú7\n+†¬Í[Q6u(Uìh ¸ù—št¸*ËŒ±¨g#qózÓ%)ãš¹]kÕMEþxcõ$ŸÊ°|I!ó ‹°ÖF¸äMzH3´cÝë8nmç5S‘ÀïIç<‚®æ>¦¤·¼’Ñò ÷§AxÖÏÀÉ©#™îKG€£z´ Ô%ԜڶÕgu^‚éïóÂ÷¤’ŽØÆ ¿¶jY¬d†ÅâQ¸Ù§Ím"Y´K“œqJÉ…Q¸cÔT*æÊÏÊ~$vË Œ7Ù ò¿ˆ·4(UÚÏ•Ïz®]­ #w­EÀ¿SÎ)Q¤eØ/=OaVläšUh•BƒË±þ©­ä‘ЮQÉoj„0’\ãå/Ÿëý+0¿™1áfÝõ¬ðÛå,¸÷«Ã&Ý´’Bö›GÜ Z ÆHw5 T»¼ð=j¡„ƦIÜžVòJÎ0XñR”@@?3Ÿöz¹$qÚÙŒâVäý{Õ‰ µÛùÈæ™nÅQ¼ÓòžEE§±9˜ü­ÊÓl›/CÈ¥™ùܧ€”ºœ¢W ŸuW?ï¼åz(§ZŒ&ÿZ³¡Ãò™Xtâ§Òãù žõ,Îc…Û¸éW¯¥û5”®:…À«7RyV¬Ã¨F8Ë`¼ÜƒXöæFP>üœƒøÖU¼%™@囟֭?•:>G(psÚ´îä‚êÒMˇ‰¶{UˆŠ{fÈù“Š¨ÍˆÕ{¨â°Ù¾@=d³p v©ãŒ€vŸœ'JÓµ‰‚‡ç œVŒB§™¨ç†˜ÆöÃŽ¦Ÿ<0ÜÆ7¶$M,ÐÇpƒqà ¦4’[å\‚zÕ1¤ÈíûµÊç­T]1‰GëVãÓ0<ø®ǣyhRXp*Úi¾Zƒ#dzRÉy ?, ^çµÞÛÀÁÞ½Kv¢[¸¢†?™z“X™õ[¡ç§jÁ¸–mBà9Îpc\<·³…'89À­˜£òí¶.@ªÂG• cjüÇj8ð6Ž‹‚jyßý]ø>œ“ZŸ+LŠ~ŒïÇæjä‡Ê³ŽNìi'‰ü³&C67éDöò2™÷‡f³éI,NPÊæÆiUüäpùVEÉíøQ#‰¢¿ÈT(Ç©¡›Ì‰·|¬1Ç­]­úÖª·Ñ»–>vuâ Y$D¸Aœ2Ön³lÒªLŸÃÁ¨"%•°H*~é¬Tcg9¡¬Å PžF)Ø 8üsC ŠiúÓpÊx8÷ˆZ6È8÷#4g*pjÕ´ÎÊ|Þ܃ë[š]ì“.ÉÉmŠH?Þ­{—™”ò£ ӮܲŽ}ª¶ã,¾c|ÅGåQæI¸òE$®N ™ø¢™Œ’¨Ææc€*9´ª:³b¤¸ »>öæ¯jQ¥†˜V<‡…cš±~«k`V1‚ä)¨cU»¹Êï#ëYˆŠsÝsùóT•pM¢§ËUã©$šÔŒ‹{XP•˜’}û*ÐSåCã$ƒQKœ¢°ÜTî?áT®¥gš5?1SŸ¯ ª³È^d\d¯¥$’îi`3ÏcšŠy‹I*C¯¯¨8¨¥”³H¼ägÆ‚»V'¹j²ñ ¶V<”ÞÇëV]Q¤ò'êiÈFchþtØ™$%m9ïLˆ«åX`zT±Æð†y{ZOb$Q†Fo•jí¼RÛQ†¸ܪqR9j‡V¹Ør~óýjùÃb!Î9j[|±Í9GV 0¤´V.oN”Éð—ë ‡½WÕu}2¯f ¨/¿wq*¯ñàÔX @<•úU8”@ôäÕhTz(ά¾Gd$kR!æHï ƒŠÐ̇Öœ¥wîdžõ,ÈH²Oñ{Ô‘•–\“Þ›u¨Eo•nHçw¬GÈdh¸ÔR—Š«ü·—Qµ;{Õ(u+‹Û¥U8^ÀUh¯¦ºŸ…¥½š(Ÿ` [«j5 âF(€þ2i/%ÕŸâªp\ÂŒÍeÊŸçY«4jIEç¨ ‘Kâ´,ÐÈ—“/j½§F¤„”s)ëíWlP6úÉÍO:T@>P1WµTTŽ(—î*U«äP‰•j¼oÃ#†+ø Öm¥Ç–æ7$+2ƒìªVÓím®~RF}†i÷¸2§–>êî$zv«zÖÖ•K€‹ÉÇjŸTÆñå¸9"®VíjÐzzTW ¾Ú@:àšdãtéYñ\´˜B™ž•ʤìÄ©8¬œÈÅHÈæ¤uܹé#ýÖáK$y5r§±éïUÿ„“R[—’FAÈÝéWlÒldA>•v̲ÂÇÔ:Ç® g9Å$sù`*‚YŽhIö€MOMŸ6Q󺽖µ´Û ›Œo#å_îŠÐ³´Ø|éGÎz{ møÍ°ÿ|S|EΞ„õóGõ¦k_ñæ¾¾`ÇåLQ˜×zVR`ÆçT“˜Áüè–]à,k¹W®Owtg†8âXÇ$õ-Ìí4j#'z@ •g?6rMVBc‘· ƒš®­åº¹<ƒš¯{:C È89ù}ê9ä4ÉëQÌás'Cšn™“Ù4Ò±gvÀö«–Vï6šóÈÛ™Û­ÚÄòX™²Ìx«1ä†|°ÈÇãIk‰X‚ãx(€+’7|ÀTÒÊaBI ÀaqÞ´î.šÖ2•Ý@ ŽäÕɧ0¦ p0*(á"2Îçqç#½UŠÌ˜ZiXînN*í³w'-É« œzš¿d&|¾µnÜm\(¨÷“çû¢±/ÍxÌ{f²®›Í¹$öÍ$ äÿi1ü©Út~d’ñœ¦>”¶Qïi¸ÎT tNB•uå X‚B‰µààÕˆœª…aÓƒQÝÝ‹X c‚zSnîü›r3‚OÍÀ†µcܤ·3«ƒ¸?qYR$“̬w÷¬ùç™NxzÙŽôëC)å±ÇÖ·£‚-*ÇÏ#÷˜ÀÏ©­uŠ=>ÓÌ?{·Ö¹‰LÒJÌÄç$⹉Y䑉<’N+Ÿ‘¤•Øç¹â­iñ1¸üÇåúb¥·BU½M>Ý )Ïzè­#Ê+–çÑivŠê²³r?†·¬ UÉä YAÎã´j¹%ÎvôÍjÇ,zUVPK>àÖ#¨.F~†²\ ä~UbÌÇ!Ë”ý+WE+qÖò–­7lÐÉœ“ëSÇ"Ê (#§cx·‘3ªí+Ö¯[\-Ì{Ô`ŠvB‚ÌpÉ5;ºG;œ"ŽsR»*#3pª9ªV£Ïfpµ‘©\‰äDî'9÷¥2žÌE2Î#(Üè,Æ–Ö"é“÷9¤ËDÌ‘€rƒð¨šF…Þ8¹VZ…œ£¼Hr 6@ y{¸-þä œÖ£{ã9­gëìE¼1¤x’}éurÚX¶òwݨÕxŠ4DÛÏ?Z½fE•Œ1š@£sVâ¹û-”vãç}ƒBjÚÎ ·H—Çåš[hŒ$Èã*OsÒ›g·o6NTûô¦ÚÅös¹ý{Ó°“°*v$ÔΦEß´*nêMLÀ¸ÝŽ3ÅHÇÍ*¸ïV|ß=ã‚Bý*mþk$mò¯ó©À*§v2¤ãéWþt„–2Ó¿UžV,ŸáIX,l竟¥rîs¹Ïv9¬'có7©5bÕ6Ädn­Óé[4";7¸p7?LúV–›ŽÔÈÝ[šŽFÄ„tVôª— <÷î“Ú ”âGô5“¨?Ú®„`ãkb¨^?Ú' ;¡vÞ|Àz·§@<¦•²>™éÅ^ÒàýÛܾDqýÒzqW4øÿvf<?-WÕošb±•zýjcPk’¨8Uè* Rñ¦eA÷G5”“f^™ÁúVJ¾dçñ¬åy¿Î´íT+ª)䌱ö«‰…ùW©äÕ˜È uêkb×iD+×"¶t¹TH›ˆ`ŠØ²uÈö欌¥I¥pÐË£ [”£ÄÊxâ³hËç¥r®Œ®Tõÿ8®~Udr¯< G3u^ŸZ»¦2D’HÇ «¹1êj݉$ŽÇ8§ißrV-‘»ÛÿZ¹áµ?f™Éáœ(ü­ZÑTý‘˜Ÿ¼üSu&Ü‹l¿~f O°©5©L¾UŠ}ùØgéOÔ_Íx­«°'éN»†o.5·#jð@¨õ{ÌQ-˜ùa‚õÎj=NÚfHÖØaÁªˆf20>¦±Í¥Â66R}k/ì“Ã)®[Úí¤$ûV¾™¥`‰§¢Ö¥ŽžKÏp)o×?x“SkÏZ¢’–ùµ?WuXo=Gnìà&~oåYÚvùçU“רUKÍ(·Zžâ"øçåšÑÖ"bîÚª¸úÕÍE -€Vùì¿ÞcéX¥U¤Ø‡Žæ²Ê£È8^æžÒ‘ˆÐmAÔžõbk®<˜†Ø€ÛÇZš[“´Æƒj­G¼¨ýØùØõ=ýU[,H95ÜÌðOzz „ª)Ýón‘½jô1Ç îÛóHÞµn$HZ0£!XÔMþ“pܨç'Ú˜àÝNNß”e¿Q°ûD¹ÇʼҨÍÂp dŸ¥Anö„eºoɨ­ðoP¿MÄši2\\¸_–<à{Õ—Y.®ŠG™ÂÔû^âr…Î*ð‰R€n8ýk`[¤Vf »ˆSùÖ”ß`\à~µVLìWÀaÁ¬™·Fð¾!ÇÓ5Eò ãø±Š¹#|¤ž?ýU±vûm™)ãð«ó¶!cÓ+T$ËeËÈ×Ç­aHVÇ­]Eg +¡¶@ÚZÑS¥l¢ƒfƒ®UiN/PMdI‘2¨rjƒÿ­ ^k-  |íÎw`Š«äƒpÇœ†ÁªIé˜óÁÁ«:ÒÛÚ-²ðJçwP»Y%ª|¸^E\¾ºXmVÆ¥ddÁ'¬ŒÆxÍfcÌä÷©-âŽ9Rö´øãD“9 íJ‘ªMÆš± @ncƒ½QÕ.LP}–/•œ`Ÿî©ªÚ„Ûbû:œ3u?ÝZ%i%1ÅÊ¢„/üë.ÒÎ[™Œq}Ū…µ´·‘Ý«¥PÔçÒ·$…-¬ü˜ßæ+U‘a·§85 uùUWrN;ÖTŒˆãh^¾æ¨9Î.õ>ôÉC„yÜüÇåOaDÐ4vOu!Ë»Aìhš–Í3»¬&Djá°˜äõnÑo´ÂmÁÞ«)Ž(l&9µ !;y\UG&êCŒ¦«±3?z‰‚™c ¨$’?ŠšêîÙ&®Û'îâcÁÇOº->ÜŽCÁÇJÚ´ˆFS§p‘œçŸJ’þo*0~aÚŸs&ÈÏ𪱩iÈn#Ç"±¡Î¾;ÎØñÍfÄžeÑÞpiÒóµ7ge3P}Ò${²©÷Oû=ª;æÝ"&ì„éM‡Ÿ dw&¡¶ÃOFi–ÄcR2)f–K‰M¼t}æ«÷Í}7ÙmÇʼ«sI-̆³ÆjC@Q˜Œ(àRKZÈ»ñ… G‰ e,F¥bÉpoïËLx ŽØŸ5Ãß]³d”öŸ<­utÌNP)ãÚ¡yp­³…\Ö 2|¤(à0¨•ÿwòކ¤¾BT:¸&¥¼C€ÃŒ.3RÜ©<¯P1Yñƒ´®ÒÄñ𤀕 ®sÆjª‚“ZqºíC !‚ít¸`ø;p*ÑpHfþîiÛ¨†O½Xµ?*³µf¬ÛµI)ªÑBÜ’>b >Õ¥å™HÜÃç#qö«Å|ÆwÞ#ŸjmÄj°2'b žôº¬ ‹$g8`ÄZKø•-™TçSl8ŽBA“ú O ›Ÿ—}&H…òxÝQD~YTä–'ך̴“ä•In€{U+W7N¤ÿJt€ò¹¤”gù÷¤”da½jÄ`×q[6¬vèÝ î­;T œ÷4 ©óQÀ;N»H‹0,xQR´¸S³'“Ú©ÌIBs¸àcÖ¹û§yXÊÄ“!ãðô¬{‚Îwœ’çµ]ˆ,P€£ y­»y"³±LÌç»ÕŽHí­— dzÔx3ãœÖj^™nŽOäÕ¹ó'#±©$1GŒ·SéZ”}–ÐÏÞ|t«®ÊåbŒ ucQ¹óÜ"±úš©pæúaJ|ˆÛh÷5ZRnåUEÄHÄsO‘¨RØŠškiB,eÈ Ú¥’Ø#-ÁíM0¤)¼Œ‘ØšFµŽÎ# ’8Ò4)msÔŽ†¡¶BǶp£[LC4!àgaÞ¡±BîÌGSRKÁ1ßFFQ¸À½3ó{Ò^Ê òð5!xØÿêªâ О9<þ‹ä9ëÖ§µ”?ÈÀä+_L˜H¾Y"´,¤ 6 Tîp§®Nqàž*yÕžõH0Ý´ýk ‰îrqYªWÌmÜ tÑ‘rÅ~é\­3U‡eólû…Zf¡m·¡QLï9_¾v§Ò™f„Ø2íò/µ6Ùx%GÎÜ-]‚%6ƒóI­Û+/³C´7ÎÜ“Z–öþDxæ<“XúÝÉHX©ÆFÑõï\þ·s™¤ØNÊbë7vòóŽ‚™¥@±X+c÷’+ þºt*¶›º»£ŠK8•m‰êï ©,,¡“o5Mãe 6óPl+M¼Õá±­Ù¤< f¯ü†Ü³žäÕ°PÄÌÜ ÕPˆ¶®x5S`òÎÑÎp*³åð:œ ¶aràŸÂ¤™cTP_'"¤xãT^~lšÐˆ•O, ƒVm Ûäã;¹«vû‚”ƒÍ8@Püòž‚®%“ÆT< Èe-Ø7ÌÿAN•O”ýCc=ô$Ú?'x§ÜÆ~ÎÇ?5ElLQ¼ŒóYÖRÉj(Ê÷RÕžÝF>ïSP–h<Ò9*çŸlÕ3¾”ªçš«óB\ŽpÄSbvýbgëÉ¥…]¦TåÁ==Í,!ÚP‡æô«© ŽÌßð[ðÙJʆáøSÚµã·s´Êzu/)åG»§Ó½. Ø‡ìñ¥Ç8ô¢ìþìÄŸ.G?J¯ò „mþµŒÄ4ÁÔ…U#hôõ¬âwJ$téQÍ+K'É“ØQK+ÜÌB‚OL ‰Ýî%!rIôíNŽRLÔ°ZI‹rz –wGõ5=¸*îX ×ÓÑ‘åߌ‘É­D ¸n¸¥Y…Ö« µ³›ìè€ $ýI¨ЂQÑ´ÓZV²°q=ég¼qw ò ØS*¾çŠY'+p’0ÀZ†Ip[Ðö¢pÆ4Í—ìEô¢P|²ò±ý*(¤XÕ¹Î98õíU m¡}§!AéëP¤« L?OZkÀÚIÏ5O,î1Ôš©“#Œu4L9ù‰'¦*Ô©"(?ÄÄdž˜«R+.3ÜþuEõìçv'.?„T)~¶7,ùÉPw¨ù-'É9ÇVÔR,Ð,©Ñ—#ÚºH¥YíÖUû®¹´Ì…\pf©"†—nì18é\ú(v œ37¥eíÎ &–GDh 8Á?Ý¦Ü¶í¨»ŽÕÁoJmÃn .[éRZ"î,æSŒU&%iƒn©<ŸN@\6~ïn·GjÓZÄÔ¢óeØåó0}º×%©Æò@9_3üëœÔ78*^‹i‚àã„lm-¤Û 7@­ŒRÚNFOEljt¥EÃ å² ,û|÷1‘Ùé ‰\Ü•úT9ƒÊs+ü }ßSQƒÇ2?ËéïM6÷¶Òš©çª'“*”,l÷%ùŸ98ì)È…ç[98íZ”ÆÆ“ê}*öï!Siu« ù ¸#Št1†ròdµZÓ#ó§id$•è*{%2HdrIX`Åxê:Vœ¨Í­\‘Y“©PH¹ÎãÓùÖ$‹åù¨qó8¬çC/÷ºUeî™–U"ÛÛÔú~^Ë1™H‰‰vÇ~xªñBfϘ©÷«öñ$h¸]£°­k HÀYq´™EhÚÀªLc¸©]Â#9=8«·`’V mõbi(ÙÉéU¥Y€³²ð VÝè–Ve$—] Y·>c¶ÒIaŒb˜ÂèséÅUméB9ë‘U¤Ü"ÚG4°ºÄİçiÖW m.öZ[K„‹N*ÔN²ä`ÖÕ„©x¾{&pjÔ¶qp<Ò£péŠ '˜;ñаcÍæçŒ0©J}ùàðj¥ÒæåŠŸású¶ß·³FÙR£$zÖ> ÛYäT€î`[î¦â9©¡o:TyÉÛùsSÄÞl‹#tAÇÖªê7¿˜NÕ' ¢™¨M'‘½ÎÕ' ¿Ö£¾•ÖíÆN©,£#Ṁ$Œ“þ ’€Ñ™¤ ;Äþ&¤Ž5i-÷‰Í8 Œ£9m£ŸO_Ò«D¸‘ûǽCâ@Z••f¸ (è+Kl<ÍtpŠ>Tõ«»cÿYqÑGÖ².4‡¼§ƒ#üÀ ÖdšT—ò½ÌXŠ7ù”õ›.˜÷s<Ëû´s¸fµí•-¬ãƒvJ.ÜÖÜ,––Á»,‰·>õ¯,±¡9Ú˜Íf½Þoâ‰GÎI#ùÖ Ü¥¤h0Ä’ d´ÿéIûÃ&­áÔy—'qöði„rÙÉ4ñ¸þéy`yüj[yQ1òOÇZ·i*Ûº’‡=3бlë Tæ§a޽i¥á—p ŽjèŸptÁ¬©$ ؆?Ö¹Òù‘ˆ?y¿­b»eùä¢ÐË4‹Ê§Oʤ†$Ý3U8D™˜ƒ¹W  /*vdqíH‚ \€8ö§*€AÛЧ5¡%ä?ýj­-¹9v (ªòÄyláEGö†ó;N7 £ñ¦‰›zÇoÆï”­k ñ ¢¶bƒì;‹nœ€ ÷æ¶|¥Ó4Òù‘q»Ó=kLD¶EÛ ;¨=©cc± òŒ÷ª˜Æ¥ÁÈ«%AnÕjß0ôï[ÈuÆ+GM £}jRÛzV„ŽSý*ã¼Õ) ¹|¸íX·Á„¡‰8ÚÖ³.ó2ÝüêvÚ­å ËN*Ì‚=ëkî“b;qS¶Íâ(†N9#µJ‹Ç'Ö¯ÛÆ!Ü÷5n$؃֢¸À*Æz𣬾Ñ ŒòZªj-ŠÖ 2±„l³ŒGAYÁÉŒ°ëéU7}À1’:ûSõXòÃ×ÞªÝ8fÛ%G÷ª×/“…'Æj9~UÆpÇš€Œü£©ã_` üÄâ´¢A*£Ó&ºÛ+³Z$@a€Éú÷®’Þ! *€rM$í±2OR¨õ'1Ûýìn sM¼b‘uêj’Ÿ>FÚNVÇ¥`€×2°\àr[•íq÷W$š–%dº½«CN€\?€uvÎ1*ûU R=ÌVéÂ’Xý*ž¯{”x\’séU5%ß:Æʤ“W *ĉœF©ŒzÓeœº$`íT­ÎX*…õ§ÛÇò\Ý®Ø[¬p5Ôãjºz³kŽ#4¼zf…_´¹ Ìc­Ѷ£;4Ÿpuÿ XÝÈY¾æji[iؤ(QWnå¡YžM˜@@Ugc(‘˜¨2OJÎyë|¨=*¡v›tŒFÔ¥H×»KŒ€­Ïè+ÚB÷.=H5‡i1{É$€0 tzz†I%s¹ˆÍtz ðK+ÌÏ·ò®ƒJ‰^'‘¹,õfEVM¸Õ¥<1ÉÝ¢®I4{véTK<(ÈÃåúÖ,’=²QÀo­g3´(Èy Víۉȋ½ë[†á;Ç–á–\'85©mÜ»g,z÷«Ñ&ÅfnY°@½êä”,ÌOÍƒŠ³!ÖRsžâ¦.0|¬3øÔå†ôÀüëQ,³œg"³¤2;lçâ³Ûs‡8Ï«¦ÙÅj¢Y̽êþv¬'gaýjõ„IÈ>ïJšà›‰Ôc Ky+_Þ …'¥-̆îä()©d4à µ-ÜB8†Wª€K<{ sÐT–Q ÃŸ›9>ÕD‡É´mÇçgÉ«ZZ­¹à“Jä3c=*yÜHì ðµ4‡qÚJŽP$>^í»zš£z«+Ã(3š«rŸ àš|Jb#2?'Ú¬ÚGö4änšA¸ŸîŠžû:cøÛ’})¯,Š o}EV¸»º¸—äÎ2½ª §2û¾^بÃÊÒßÃóz©çO<Áä;Š|ËïUÃÍ+åÛ%zThv39?18P*»I±˜ädªWwÛ¸÷¦¯èV~}Ñ•þd‹‘îjæmæÊg~U:}jäóGO,§ƒ$šè.fŽÞ–R6 çü+^yRžG#h¬;MJêþüícä"ã¿­s#RºÔoHŒ|§ˆ×Ұ⾞þñ•GÊ8Qýka£D0IíjÜ[%ªìÆæùúÖ”°­¬#nîýi")L畯µ-”±Y[I+ýÞÞæ‹yÖÝúv÷ªeÁ¹Éf<ééX³N×ÈË9éü«&IL³ä –< ›kE‰$P\ýÕì=þµ0ŒÛò¯ï@{TÁ ¿2s!Js1HÇAÖ¥2KxñÄ ÛÞ¥.÷,±•h*Ä€-mD‰en¨O§½i¢­¼@xªSn9‘ò2zXW’;ÈÏ!!‰àÚ²®Ë¿Rx_#Ék%¼<;EZ¸Œ½¡³ˆbB êsSÜ#=³[ÅÃþuVÓNt_2ä°ÃëYï`ÖPfEäõªbû?0äõ­9Hµãæ%¿:ÛÐT®œÿ–­¤©K ÜäUƒWߦjÛt¬­^g†Ü€z`â¹ÝfBŠT‘ŠÇÕ\¢‘ž†²-,ÃbI¡ýk.:;ž§5™¹,²Xq[›¼¸‘öüŒzžÂµÊ4QÆÅNÆ=MkتYx=éúÊ+•Š^8b)ðÝX¥ÈŠPsÐ6=iRæÕgÉÆz±5¼-l+¿Ïò«W¶6ÆhYU±Á«6И¡5ÌèéP[n3ëžõ—sæ$ÂÝ@-·µP¹,²y##µIj€Lê\ÇAÚ¬i0«\º–ËÀ©tø‡šÁŽ[ÒŸ1“í06°ûÞžõ&¤e»[YJ’ì¿ÚvãäÆséL†Uvñà~u^Îà3írx*+i·¬Nè*Á+Œ‚0kY]<œ‚9«á—ÊÈïP1yœãŒ{V|Åæ9 |½\UYKH±ø{TçÍ#rã' Å_¸[‚†T#æþgг0—ip@~•Ê$À8Àîj„÷"â5 ×Vi„ÉÀîG!^IíQÎj8#hí器ážç°¦"´PK+1þE5y“ <ƒüF¨6ù’}Üð=jˆÂòp3À  .0È+±ŸO¥>y.e@ÐíO†Ýî$Q÷Cöö«È‹oEè:û×KQéög}ÍnF‰in‡¨ªèoB ÚZ°¯¤—P™aRH'€+&ñžöo$A=*Õ¥”6)òàÔšØÓ´ø4èàHÖ?Ê´¬¬¢³Œ` ÄrM$òy­å' rÌjBarD ÷îw4Û©ØŒ}Õ9f¨g¶ÆcQÀ÷ª†é<´ˆf(Æ÷ªW»˜ª§Ü^*XbKhÚy~ðîjΟo •¬—“ °éŸåSÙó\ȹaÓ5 —•¼éO®û¾•EžK‰ ħ,ÙÀôª¯Í3eêsÅYV2Ìzƒ¶´´´Žä¸n[;WùÿZ»d©m)ûÙ S]ÝÎs…Î)³Ï$͸ƒ?¤’V‘²HPHd¹Â¨Gj –Vq"çåZ«€²«³nç¥HCI!—n=*Ä…Úo<.ßJ™Ëù†lc½6è4ÂXfÁüG­’É<0NÍû·8üÆi5i)ü§"¥°È±‹$—VŽ»û>0Ä1W4òM¤`ž€Tæ­ÈvÆMNü-cÊ~Õzðu~jæ®Ò¯Þ!ȬiÒ.**ÐŽÖÕ ÌF격ih…å!¤©Õmí“s‘šC} €cžž”¨Äøãrô¤7‘¿íXzò}Ù#JÆÔðX:Œ Ö>¬pVD³£¹Ó#’Sóô®‹J„Ýii$­Ë ݰC=ŠI'V©P¿qœˆ”ŸÒ³¶ìÔ&þ/(úU06ÞJIÎÁÅIÂgˆÄ½ŽHõ©´û˜…ìB4Á ‚~µ5”Ñý¥½jK·KxúüÌjÆ·åÛÆ»I.Ìr*MQ–W,Ç¥Gn‘DzFÉÀÏðš­§G\î»ÑÁëPÙF°••—paÀ÷©YÕ_g—†ÁÀef@æ1U…ndÙÏ ¦4ªŽ<äçÚ©Iq²rsŽ ÕI' !÷Dï9]¬ËGn®^]ÜÈ lV0ÃAVn'–Aå’0äÔÌ,Pü£å^竪Ámí·Â^¬j3ŒæiÊZKI7÷úP’É6›p•Îï¦)-„¹ä¿k’o˜eQA õª¶å…å]ÛGÊ*½¾Ðìî7 šòÝ—`A€­ihá¦ÔV®;Uí0.Ft` šâ@‰‘ËUÍ^tŠNXÿ XÔeCÁËÀ¨-W̸Þ>ìcþó¿çÞ©hp4—Fá‡Ë#?ÞcU´¨‹ÎÓ‘ò¨ÂÓî<òH=»U›ù²Ý2AíÚ§º~qïLvà‚¸Ï5ÛûÅ!{€pM1víË JxMÊ6’sJÐEØHEûÄÒ´JÀû£Ö¡šO65ˆž‡-{vf-¿„6[ß^êàËBGÊO½;pN@ÉÚ¾õ¶G'#h÷¨ÔôÇ=€§íˆóÈäã½h"……"Î6‚N:æ®(Û¯M£šIHD'ºTR,P‘ÖFéíPܸŽ",z{Tq¦OÓ©ôªÖɹ²x½An¹9<Råd]ÉùŠ»rVH<Ä/е6Ë÷GÒ*¬Éåp })mŠÜéòÚ8åqåþ4°âæÅà'æ_»QØm˜LŒí^ôš,ÂÕžÚY8Ý´{Ni4É!¡wÏ<žyüŠs늻{r¬›#9õ"¬ÜÌ íJ¡˜n&›ø¥ãð¬XIŽid,üVd{£’W,õ|—ÓJZDeLóôõª7Pݹ-"•\òk>ê+·|°*¤ÕømVÍc·™1Ÿ¦MR)#PwŒÓ,r¢¸Í& ‹.ž"NY˜bŸr¢KQ™˜b¤ºA5²Æ£æfâµmGöv—¿ÞEé]7öfŒŠßyPqõ­ E–š€õT’Å5ÙúÍ…l®n\æGÀSUUµšb~g¦Za›rŒmÇO­G¥!y·¨á?™ÅG¦®é7§uâIù€|Þµµyo ñ»K€íÓð­;ˆ£• “J†F  çŒþuq2ÃdmÕv‘&EUšQ°Œ ¤)!bn>n[¹ô£L“ý4ÃIúRYH äžN*9íËÝ ­µ[¨ôª÷–»¯‰_•Xòj‚âØ5Þz)5 ¡7Eߤ@òIëKd¦pÒDj@$÷âk™s#õ,ì0{g…¦^Éæ9º¨ï¹ÛùSÓ)jÃÏÈ>•=¼f-&g`G™„QúÔÑ¡‹LŸã¨úSäÁÏUþ¦©'ÊÀú­T#ΦI<ˆ$˜Œäà Õ±˜YXKrFw6hÛʶ¶O3âªI,“Hª£ç?tÕ<óê*‰Ë€vªK%õÀEëíØV‚¢ÛÛ„^õ>õÐD‰a§ª¯9'Þ¶T-¥ª¨è>æ«îÜL§8pVj³I#ÎÙÿ`U@Û¥l‹rpÅ‹Ðçšš%‹{‰21?­ZU„   V”rÙ³y@a@ëëWUíØ˜ÇÔÖN³æYǽËžµ“«Å%“nŒåCYº˜k@]9Zf™ª}º9¢¹ÀÂásKg© »Kˆ.1˜F¤´¿vÓG(±…5^ YO™öíAîMfÆnÌ2ØÀõFÙÉåˆÀ«še«*¤’©}ƒ<÷jÔÑàÄ‚i#ßåô_CZzdX>k ìþufVÝ(g9\œ­:öf–rdo”‚ô=©n¤i%; :QåˆB íϰÒ%¿”Cm$аù°„ƒåV’(âO.1Á šÕ‚­àXÑp†-ô«ðÅ1*(àò}ê ¤2žGáYZ…ÛÏ98*Ú¨^\4’“ŒvÉÙ™‚ÉÀÇåU®&iɪ×3°ið)4ÍÀ$­Y(KIçn2B~UjÔm¶’SÔœR33BÙ?2cŸÆ£yKwÜNäÆúf™$…álžTÓb…¶¡ F:·cëRAi,¿»€òÍÚ¤†p#^¦§X·9w¯O­ZKd2ù²ã`ã9©Ä(d.ØçŒÓ.%Ü@^ ¨µ ¯2E,yëÛô¨¯fª”qQ•ÆÑùšÍ}ÑýÕ T%ä÷EErÌË 9 =êK©šX`¶Œ*ò÷ªK©o&Þ.Š9úÕ»hÕ7]ºûVΛfš|!äæW'Ò´ì­’ÎÄeÏSL¹ÈûzF=?Š«êw-4¢%â1ÏÄj+ÉL’ˆÇ?Zj–‘€UàSaW™•UNIi@ ¥âÛf±’ï’j}¼»Uˆ—n}ª¶´Åm–!Õ5™kfGñuúVM´e™êÇôªÑÑß­oªä€¼¸Ímùd¸`ÔÖ¹O›Ž·È8ÉÁ¨C”)=N ¨Õ·ÊŸ½Ö›)ÍËdœ /åPj-›çP~éÙUï[uã ñš³9^•{M¶R»ÈܧŒz{ÕË8\ãp?¥5‡ÌL™Àè)Ò'ï¿{£îŠsæ'AÒœŒEË€s¼ç°5$­¹Mà3ù>„Sãd‚¥ðIëíU¶íÜ™n#Ò°Ù6JÉÁÃc"²æÁ<+ã>Ýjk¹† Žjî¡r³ÈÂ!´nÈ?ŸøÕ«ÉÖWýØÆZ¯½ÕÕ$“Ц¬âUQ’IÅWFq Uäš—TŒK`ñ1‡éZ:ž €þòÕ½@³ò›ï ÄÓ´ÇóAžk&ÆÉå”Á&³l,ܸ n=¤kó/‘ǽk^ZÅkÀÉÆ>½ëNæÞ8#ˆÝÅ"Må’ËÐ bªCxð;:qƒU¢»h˜•88Û+”ÚKcëVJ‹hä)´³cëVvyÐÆûpI«YHAPãŸzÕo*ÌUmçÖ¯¾9¨$vÝœÖuÝÃ4‘F­´fªÏ12"hº]›.Tàw¤Ö`ò^6Qòš‹SË(ËÈ#šd-ºâ2zmé튣h — ?Ù?•Vµåü*H—ËŠhœä)ÝŸj¶¯åYIny·çëÇô«$ùV­ v9¨Ñ› XpÃïÚª+6‘ÃtX1óÐô«j¾RQòâºHbò-Äh£a^£Þ·<¸‚òã­TØ ®d;@éšÉx•¥U2ª:gÞ¨Üào8¥j…^£;ˆúUk†UÛäg{ ‚f V0xÎiã,ÀóЬçæÉüUà“Ò¤ÓÓ†‡,p¿JØðý¨½Ü‹Ë)>•©£Û퉧p2ßw>”³Ì t$)éëO½½V“b©`§û‹ÏµW8ãŠdp±É¾zã°¨`´vmÏ÷ØóŽÂ£ŠÜ“–9b*œ|ƒ p}qWÔy µ0sв–0¸ªßصזAÚ©ês܈ˆàÕ^òÈÜy~‚¦µ°†Ýƒ¯-Œ Õ»=. g÷ˆ ±oe,rqŠžH•ÇLçSÏl²Žö©d…\p0kæëf¯²œÃyü+›»Ÿf§CŒcub\O³RHW¨ûß•Zqñ9;Ž*9i]‰ÉÝQL rs“V /´°Àä¨ÔV¶œdË"v€=@­K6qq€ zWc…\r98¥¹”Hñ¹$ûÒÎ䪮:rMaë³–xí£nz±_â¬mVb|»xÏ=XŽõ‘©ÎĤžz¶*½µôÖÃË^Ùª«+®5Ydp@`Mn[:º½ÆA5~ÊØËzÖ„Iò õ>µ4Q äd—Ú­ÚÛà DZ«0B.HÈ隊HwH|Â~cÖ£–Û|§ÍbA¦<ä;ÎsV¬Q0LÓ#½\M¶Öͳ Û#½XP „ìã¶jœ¯¹‹û¾µ‘pí$…‹“Ž™¬Ë–i±'Ú£D&bÞûj8£Ü~}ǵ2‹°Ü |ÏdCl’~+mï!>LQÆËä÷ÇOÖµÍÂЍTGÏåK#†dcÏ¥ÏæÈŽyãŠ$—Ìu5V¸AçëÚªI•š9SÅW~&ÛùwLNÕä®8¢éžâíÂŽ?Ô—;æˆ1ÿ>”Ûj eO‹ìÊJ©=sVíÂ4ÊòÞ˜ïV 6±®@扤P¹sU¯.P’Pš¯s:œ•f¡ÌjÈ;OÞ#Ö¡ÊVR  ½© …dÆG¯½Fd|¶þ„æ«<’;¶îyäUfvv9éVYvÚ'ƒšÑV-(mň?Njìê©e´ò 1C …þµXI`a@ýM@dû¨>èÈI#SÈû´šhÿL‹w+šK >Ð7ž3I6#¨ä– ¿Î‹¥HnŸŸ+E¬r²¯\検´kå©å€çÒ¯_3[°·SËcæ=ªÝÓ´N!SÉÇÍéQNH±)ÉûîÞäÕ-Clm(wmݳÜÕ[ЪëòdŸz$”¹‹ò¨Â¯©õ¨¦•§d… ƒj¯¯½G,rÂ4^Š‘D»äê¼*Õ¨!Kx ³rã„OF«1ưB]þÿEžõr1´nv=»šla‹* ÜÏéÞ‘AʪòÍVáˆD¸ã=Ï­mÚÛ­´!p7­ëZPİ ã“RTÕ%Š Ç½!ãñ P{Š´´´ƒ¨¢±ÜGtQyw‘þ}ë“¿ˆVä(ë&kœ¸„®¥6ÁÖLÕØcÞ›;Õ‹KmÊ$a‰ÍZµƒåYîŒÑ#$Ëp¤qøQ{pÓJ$cÁ_¥6îVi©Ð³¾b…©,d–`bS€½ê['y†ÀH Þ¤”¬eT€Í’yíRßKn"]”òO­:êTF €Ì)¡Ê)/3›¬‘á€cÝÿýT$Œ¨7‚zÖ±+E|¾Sˆ£ê+'SÇx<¶;TdVV£3Çuû²p¢¬é:­ÄÌ`'$ †<Õ7T¹$ÆäµgOÔfpW=+W0\¥^-,¸¾î{UÝÍ'Ï¿wµr«´ôëM¸}ÈON´Ùœ„ti±ù’6õRGj†8fžMê‡Èá–V$Š“ÊEÆì=ióF±*† 1ëD¨±*ôÝP°.Ê«×=jªƒ,¨ çœ~]–U^¢¬"ƶí*p>µ¯B,%‡®ÀB~µ¤‹´dàíùqî*+e@îOÝ ƒš©§$)4­7ú°„sëš‚ÉbFw“…Å9Ú?/Ë„pO4ÛÙ `c·+´Û©ca²!ÆiŸÂ2y~•TxÀ$¥Võ–äyŦGÔÔÚvÕvvê«ÅKg…bǨ¨Tkµ.x½0ºµæXñŸÖ˜Ìä†<ŸZD×i 9ÈôÅOåI{rÎÒÄð{jœF×—f9'‚zSåá݉çâ‹Å&wfÁ$0).W21lp8© ‰bŒÊÀnÆFjí´V–æyq¿f­AvÐ_ˆâ«4©ŒŒ»Œýg ARÀp`* }ÊJ‚Xݪ['2¿_º¾Â´ôhNÖ¸½÷ØUÝ:?ÌÝ[VÉÇlÖ‹6Þ£5m›¿h*²})ªÉ»n¡—8Í)ïC!=ð(eÏ~)b–5*=½éPm§SéÔŽÛ¾2E2iq<‡øFE2GÆ[Óš¡ 4…É ¾íÄ}kÚÜÝNÍ!;œ’OãY¶ð¤,ÝHɧI2ªùïd‚MGqtª†ÕWH'=³Lšå@û:AÁ¤“çQAôª·,\(9ÊŒUk’X ñŠ’&H¢fÆNÝÇéÚ¬Úȶör11ù‰þUb'X-±‚{Ô û˜gp9@33î9樇%É=êͼ®í±“*?JÖÒ¥’k…CcAÏû5§a#M ¹P*ž·i‘©EØÓ|Ci ˆÊ( ÝqéQë6Ñ›GÌÔË+$²A·æ–aÀöª0ÛxÆßšIz ­ ·‘ 3#Õµsk–vÎG+ïRC/ÙËÀƒòûÔ‘Êm‹n9ÈéO·ŒL¥Ÿ#'8«úe²^)’@G=*å”BuÞãœñŠžyÖÝ@Û’z(«º…ìv#U˜pµbòé-(8éT² ÊO''Ú¹©e21w<“Ÿ¥`Í1vÜ{ö©ì׆ø@>P}+SI¶òâ’öQ…U;­:os' kÈ"³,z•?ži<ß.Á‰²þ¤Ó¼À–Ÿï/ó5›š`Ý qU®‹¯U§Üex Š#)l.y½).¤Fù1É=ª&ýÜO埛dT'Àâ/¾GqQœ™W©«±F"…Ðb·­âAc¢(jÆ‚8Ö?AŠsýÚYyŒÐÿtÓz/ÝcÆÁëšaÈLíRƒ•àþTõ}ËOµ<6FAíJ½>öhC€Nâh^I¥§ðiÕˉ5[Qp–ŽI¨/ÛvÉÇM§1 (qXopÑ¯ÈØíYrNÈ>SÚ•"ª3ríóTm¨ïó;üÒ2B“Ëhu2ªyÒ£HÚyUüÎ*#3Êw5%Ú„‰#Ïʤ:¹ªF!¶Š%û±¤þýjµ©.Ët ¡Ÿ~j2IÎ8Åf~ŸÖ³ªÝˆ& Ää¹®‹@„­“9ë!þ\Vî“[]竚¯u0’ä×{/ðÕVqs¨„nØ0îj¥ôÞ}æØþm¼TÍ›hÕßç”üŠ*yãûšK/Ípß"ARÎ²É Ì¿tJ¬ÈNK6æ=I¬bK³3’zV^K±fäžÕrÞPKF£„Àü+wE›)$@}Ê×ÓdÌlŸÝªó6餓©PŠÊÔ'3ÝÈäç +:úVšåÛ®8–;]äI8ܽBŠšÆÄ>ÙfÓ®Õ©¬ìÕÈ–@})ײƒ–£¼cgW½·…J§¡cQ¹P…ÑM)æA&î›@_­C g!“Žß­Gƒlźàb›ÛŽ>aUšL0=Å@φÏqK¼®âÍžzR+žK7ZErzœûU›†Œ;©çüÔRHÑ’H+éP¼¥C7LÖt7L%S'ÝcU┇ú¯˜`[¡«‹Ùw.N9m#Úû‡8äU¥M¤2òEjFˆ’3ó¿D—ŒüÍÎjüac~3S!ó dv,jäCÏ$B Áv5¢©JT0ØNBŸQU¥?0 ÷ºf–'†ç&§²‹smnOò©­Ð“†æ®úûVÏ·lVþT‡¥¥Ä$åO^Õ%˜:7< !”õÏ‹ßS#°L©¯­5G\p;zíà H²¨Aæ§§ÖœBüÜŸZQÈè1íÞ¤SÆAéNS‘Ûë•€Ë7j§«Ê"²(¸Ì‡ðªú„-öÖl Éx‡9µaAšñcw\ãµeÛr¨ç>ÕiœHhû€ ü).fósþÇʴˉL™ÿdàSíi™†`{U/dB[™ÂŒ(5cOÙ I3uÇËOcž/ónmØ«VBûgŠCû×rüþ•b×Ê»€£ýö99ªï Å,jB˜Ù€ªØKÄjÜ#°þ5NKŠáûŒß•Yc…Õ7rO´RäÛÚË{U"-Î{v««9ŽÙÑHP™æ«X"y€§UóÐö5KFˆÉzs”äŸÆªiI¾ãx(2OãSß²ÃÇËósøU¯1ómרÚÙý*mlŸ2ì?­W`ÿ^=ëAlʳUr [´+ånÆÞÙ­­¬vrÊæ}«[N";Vr:ÕDÚÁAXãÁ›§zË\;f¬ÙyŒ¯4¹Ê=­½8fžs…=ô­]1Y!’IxSÓ5~×)PŒõõ¬õQ»(0$“ì*¢ÿ¦\Ðg¯µƒÎ82qê#Hï*qy8õÇOÖ†5ÁÃa?ŽG/‚ÿxŒŸ­U9çŒóU‡Îü÷ªw×A¢ç&›#…RZŽI6¡­g}¬È<©ùSѽ*<¶NGjƒÍ'ås‘QM+¼ó‘Qºa‚ Z100}áƒÁu0õàõö­RC`AÙ¥!V*0U‡ZÓr¬@ ?Z³¦×ã<àqÅ#´†,?ËžxïMbû98¦àÆ€¦ISL]ÐÆ¼©wîyæš dniöÃ…f#'5sL\"3’*ÍšáW'’*ÏÒ´ºô«tQGjc}ìЬá¼Ýªvæ¡o¿ÁÅ"–/ZHÙÔ”ÆêD,Þ¼Ò¸òµ"ƒ#á”`:z囿S€ÁëÇò§ªìbA w4åI"³og8ÁùP¿íÁÕ®„÷_)ùc_zÉ¿¸NH?*Œ(÷©4ÔÙæL~ù_çÍ0ÁžoãÙøóNÓ…–C÷3+ãýjœ±ì•Ôÿ Æ=j¤‘í•ÇpvÓœ*@±7ç'ö‘Rƒø›ïJ{:ˆÖ qÍGäÜFF ÷Îi"¶¹]¦?®sI¨Sç®jwŸ1fe毯¥^žøËj«:‘,G$zç¥\šè´\bTéLðìOe5NáüÇçC0ª×°ÍÈdŠ’Æ!o'™p@öÅhè±¥±Ãšq¸è*æ›Ûü­ÃH7žT ú ŸV„J¢N»A©5ƒ®þ¸ŸžcÆcRyéÚ°#&Ib“Èãð¬„ËÈŽýªÍÕŠ8—ÏP=1W¯eh­c· yqW/&ò­Ö0OZŠ5Y>Eéÿ€æ¡ÓàJŠ@‘Iÿw5Œ"FQÛpÏçV/ù;PòÇ…ik—mÖ¸ÏJ¹ªË¶|gƒPÀV(Ç$?&³­HŠÍ¤.ÕK|Gl\rwsQF‡a x üê¼hÌ€2jЕbniØ Û·‚1ÛµB¾sŸj0² f\MÛ.ôÜÒ3ÇÖ›+–¨¥rìIjÚ5·@GÌàäÖt–ìé¾¹HÆ»TÞ&#rœ¯¯¥Ux÷æ:ÕùQLJ¤ ¢ Õ¹€ò× *ƒñ«RcªŠ-·ùYE8æˆwùgh¥‹vÞlän#Êϰ=keAlC»ã5²Ì#gJ6…9?ÃéL™ÃDWiäôô¦JÀÇÐéQ”Ý Ãd~™¨V=ò 6@äûgŠˆGºAƒÒ­[¨X±×±§Æ©o·©S·šÑ¶P±qÉ-Y©¨ ô ô¨˜óÖ«NNy5™ÈÏj@Nî D ó©9¦Œï$R†9ä7ÍIÜÁŽ;Ó•ÈÎA;jµýêÅEäŸCTµ]Mc‹ËˆÇ¯5SQ¾…‚zÖ-ª=ýÞâÇb·ÊñV®''à Ç·ÍÅÆã÷GjÞ‰Ö?´¸áTÿ,æ¶lfXmo% Æ@‘­[YBZÏ&?‹²t½@Ü_Ü<¼©_{ŠÍ°¹Vžáä‰\'±¬í>ä;Ü3s¸ajã3‚ÌT‘Œj·’ǃM`ÿ3c"­XIºÔ’rªÇJØÑeÿC7î!­M.Oô"_¢g­3(îd—" ,†fšN@=*<1¥aõ§¡iDŽà)´}*DwL“aÈ©¹I€Ã¦£YIºÞØ;@ª¬wlÚˆ™¸çh°ª°\³_‰vÛW™7.®Šx °€QüëfH¼Øð;Š«µlai3¹ñ€+,ÛG¤@󻔌"Õ#iÐ<¬C?j¬¹-ºCó·-ì+äy¼œ³uö¬©¤rÏÉ<â¯Z X”õÜ+¢Ñ­„v¢B9p mé°XŽJƒQÜÈÚ¿z²µ9Ä’½rj†¡(y1éP;bEê$míþíD$òí=¤1¾ª0æ;dûí–©D[g|}ݹjœZ:Ë&>î̱©…¹W/M¹5[r,h 1 ŸJ¨¡K& ˆªÃh+דŠÊÔ"m‘žª Ô7‘#=€éUnGÜ#œPXHRë`ÉVRTVŽV\ºA™nH” äÈ©¥»HåòÂn+÷ªI&T}¸Î>õJóFf:u«%ÔFySíéS—  òžido,"†÷­-府`Uõrü=8ö­0ÛúzS|Ç :“Á¦Ÿ3fÑŽçƒCoÛŸJO)ön'kCIäH©¸¶Ö>†›å:®ìàú `’æÊ9ç³ ƒIÕݬŒÑ¹lõÝÈ¡'¸‚F(w{˜j«ææ2¤w^søUèõÅTÿIˆ©õ^õeuE ûä ûT_ÚÒÎÀZ[Ùø¦6·$²io•Yé‡Sy\!ù{–«"{‰8lÛü*OµÝJ6‹e‹=[Ö¤óç`BÔúÓ¤äe¨¤y—+¹‡®;ÔlÒr2E0MpF?€÷5 ÜÜí+œ¡õ¦ §Û·øMfjeåe‰GÌÇ™¨‘‚x¬ëâÒ8P1ž+GJ€C Ú¸çÔâ§±‡j»í¢·>ø©ìáÙ 1 ¤gßÉw®“9,Á˜þ@P¬Ë¦ºõ.ÅÛë€?Æ“s 5‡÷²çëŠÌЭ«Ü0ƒ´f©ÙÂëLßw8ªV²Be~2kr,ù$¯Pw¡«°å’œí<Š¿n2 Ž€óR€¤ŠpŽ0GlUùš$)~´÷Ó.ܹü =¬¥þ©’„—hØ ‚eº”MŒtg ‚e HF:dS–2yCò¦œ"m¥”þìrM8!Æáƒ“Tà„Mpó>vFD×+ƒåŽ˜ïUb‰d•¥¢®]?—GÈbÖu/Gåb·nÌQr†%ÆØâê ,Çâsü¨»A-@9Âçò¤¸ è 4:¤$E“õ¨n «yi©çëPÎÊ­å¯ÝŸjevÚ[ÑP<³®6ŒÕ-†8õ¨öº©,:ž* "Ûv`BÄ“Qê‚*Θ‚âôàü¨=€Ü1S®·¤IÊ?zWŠHo“ò8ùM3Q㺠OÈÿv,nAÉvíMŽŠ]¤|Ì3š#‰cp dšr*ÅfÎCgëVR%†ÄÈsŸ0žjUEŠÔ1ë¸ÕtS<0ÌàçÛ›-q6‚ÌMPHši0,sSãµ>D(esÉ´!ž+6ЧšÌr@õ«É,vqù(»ØòqëQ¸šCç\|€6* ãs4bâàlMÄ*T7†yTK(Ú¡¸Zk6ß—¹éT‡$(' ª€dàsš¹ˆ"ô$dýkz(†Ÿb7päe³ü«e#–Üýò2ESf+ã-ó È’CåxfË Î–BàðOJÊžs€¿xWyJ޵P¹HÔÈÕqv¾Tƒæi¹ûB•a†9¤a猼*[xÄçþiЧ•Ý…:Ý< Kv ӭ•Aµ»g½2YŠvŽMºÈÁ‚{ÕHî$‚L’qœPG3G&y85^)Z9õ85ÿÙÿØÿÀððÿÚ ?èbP+cMµ^:ÖݪâÝxëU¯ yb½+'_“ý( ?6ÑYúÃâm™íQ(O³¶ÖÉ 2EQ‰­ƒ|ÊÀ:«©µcžCS™€Œã£/ÿUKæâÒAÙ˜T…ñjãÔŠe¸Ý8Sëš‹OQ%ìJzõ¨¬Kw<Œæ¬ß¶-ùà–­¯°¨½ËqZz»bØäŒUktó$·šÉ°‡Í˜¤íæ³ìa2H ÉÇ5uCdïŽt ŒcyÈË#AÅlà”/ê¤b©NëÄLr dûç.¥Éò‰ÊŽ¾Æ±n¥ÉòûS­”,K)|)Í>ÜlggùXž>”ëa¶%· ž+lÚÓS·T9Ë)CÖ«ÇjÐjP¢äeoÀÕx­Z B%^äÀÖûÉåäpH9ÍhÜÎblwàÖ„Ò˜ÿÖ¤,²§Ìªdå5;ÜEuláÔyÀ|†¤i£žð85_Ëq$nÌ<¬äëT¾Ï hæb<²ÙãÔU%÷,»²™<{ÒÇœÛCg4ÈBËv<öÂ;Ôq¨{ŸÞœcøÔw3n‰˜ «åäNÕ5ü£vÕTFœÔ—Î>èáv€+æVûC(à)+šÉ•Îü=ë&F;ðãVm›te §Ž*x‚džŠš&þ.Œ)·ˆ²ºá¿yïM¸Uw?1ëE‰sóSa_&6i0zR'îÔ—úQؤ±ü*Iw“’iÒ0;9É¥–EfE<’8ªÑ¹I88äT(åY·t¨£b¬ÁºTк0ØËÁZ’6VÊ×¥KR#¯J†H›“øTmÍ“Q2a¹JŸbËo‰¯AýÚ—¡ù‡Z‘ðbù‡^”Ù[b§œŽE5ˆU<ŠiepzÕkyY.rW<©¨¢vYGp;S r%ä ¾\ <¡‘ß>Õe›mäÎjbùm¼U.­ÈcµwgÚ ž" Ç Ô3Có|¼‚)¶¹$(â’ÙJ1c‘EªòÇŽÕØ§EÅvvuº«nbQY×Y’õè¹ÍVC6¥)=‡©9’ùý¸§ª¢Á±FXœ±¦ÆUmöõ,rÔFQ`Ø9$äÔlsL~ï˜GùýieŒ¦›o!èò6~˜ãõÍ,ÈVÂoâsšžÌ®öÇý*mn¼ãï(ÍI¤ŒÜä}à(¼ 4ÐGœ ß6*Þ¤ZöêÚ5ã ³{›™¡AÆ5 ÂKµyÛË~?äT–ñ‹{ác>R€ÿˆÿõT‘ ŠãËA¯50t »w$Uùg-K •;A«RH‹qx¬ä_ÝùŒ7o<çë\±»ÞyÝX ÒýI4¤ƒ §LgÔ…ÆÅSȨ•U=,°³ê–ÓŽT®}ëA—U·›°]¿—q–þ)M˜©üŸ6YF6Ÿá«RÚ ‹‰×H9_z±%¸šIF0s•5£¢±ÚXt⨛ybV}¥”qUL–Û•T’ÀªƒƒÐ¯5$ ͨ†ÓâÜU—ô5V@no ˆœ¨%àzU{5óõ(Tœ¨9'èj eóo‘OÝ^´û¢Y•~]¨I šò} ªŸzûæ—…â±§K+óëYÓ Üy¬ÙTnu© ÀŸ5,_u»b¤‡£gµP¹ý¡Êÿ{òª“7ï[Þ¨fsç6ßïT÷äý™I#·¯5=ßú¡Æ?ÔÔ·™òA#äÓ¢oô4b}¾”ˆÑÔŸ¥ ·z‰G˜Ø' ØÓÜi€n8õ˜ggÞ {°¯…\KxæHÌ‘€¡‡Ý¹¥ºc 2( »°íƒRLþl~bcžÕÒÇ÷Gq]F”Ùˆ æº;#û±YÓ·S~b?3\íò•¾[®êý^Jäšxv¸QŽ3øÓP1B€rGF R sRy4¥ø‘søõ?Ö¶¯mGö S˜”5iÝÀ”QC ŽÔb÷ƒÉCYú>VõðzÆÕOL.\Ž SR£âpqÇ:TöÓ²]q'ò©à—dÄ‘žhØêà| |ßZ—K2I«NØùqóÔ–侕±ÇñS®ÎÅ—éïQëÖGãµG¨’ŒqUÙ‰(˜Ú  çëY’ÞñŒV|„îTÆ1MpFâOjŒƒ“Žj2>cгÞÑz Ïã[XÜFÇîF…¿ZÖ<Š[î¢Óewi¯)¤»žV»fåÉÚ†’y$3°N2p -Ä­ˆ£!d8$šv¡rÐÆ–q Ã1=éo. ¶ñýî 4„»(˜6qÜgš‹÷’EöݛߚgÌcó{(¨mP›éns„U<}yªö ›¹¦è ‚Ì~þI{j9_÷!ÿ–‚£fÌnýÚ£‘±7¨¬bZY‰‘íT†ç~3TæsЏ¡£‡å9³V”2FúÕ˜T¬Xé“Îj‡ÙÛíLXmNâ}j Œ¬ä°À^~µ]b"f'¢šž`nâ>J’1îNjY¸|¾qÆ*iÏJ|ÄqRGXLO€Bt÷§¤cË(Ã/ëODP…a‚Šl0„˜ïéž 6(ö¿ÍøScŒçð©]¾Eà¦Oz{¶pph‘Ê…ùqÅDXe#†äëLÞ6{œýj=Ã<ä ‘q;àeÛ듚z5ñ‚Äby'T>da99&¢Ü ó‘ŠbH=1RÞ;âlm,¼ûÔ·¬Ä#cŽG­KtIØØÆGJ o57;Þô¦Â|Ì#Jjä)ïÞ©^‡‰†ßºMW¸3€>SÞ©Ï×ö=êÆ*Ì|©©¬Ùe;ã àZµbÁ‰Gã#ƒ[Ö÷[_Ëelã<Žki—­ ¥6’Q[6W%¡J}ÍÄ1 “Ë·N*}Jæ/z 0à÷¤½š›ÂeAnYÈ‘Û Ôÿ…Q³÷©$‡jg?Z«j˜‘ds×eŸÎLgnî1íZòÉö¸6—}hHÞ|[G¸ÇµC+çqó}«&41 Àpx>ÕAËYp0AëJK0<å˜äþDʼn;¹$ʈ˜³zjÌ*±þ&?5mééÄì¤ofùiÚ’§æn´Û”f\¨Ï¨ªúͼ’*Œ÷…C¨Â͉dÕQ˜ÈV^Œp1øõëÉvÝО+"Oœç¡4¸ù[qǵÀ9?ʬy‡ ¶9¿:Žèfªzòj)ÇÉ´wæ™/ú³­CdLP;3ÓÞ›nÆ8Éè 6ÙŒhÄñšu¬þdޤçŒ÷ûy7—ïš’<ÝàýàjÖåÈR1ߥH.»ðØ"›$£åCŽ Šk¶B©Æ5ÛyU8Çjdñ„R:/ðšl‹µsÐv¦:2œŽ1L°2›†x¹eË{’(³2 ˧UúQm¿Ìf’ã4²Û—˜¨\ÇáHñn”¨ƃ/±WãüjëÁç¬jÜíŒ?VeO<&NvÆ8«RGæ„Ïð ¥1 1•Ú1Ú£1a´TmÒ¦4I3yR‡#Z6,¿ºpr犌Æ$;rÝ*¥”3žx ·ŒÆçœâ£·d•ÒËnŽªÛo¬e-–DtFÞ}«t&ØC(ä)Í`ë¿éIoËd~u‰}9y’ÎX?:ɼ¸/q)É'·¢·UŠ4~júõ®†;41D$R5É>õ¶–êQ*¯ëIdä䎔Z†’FÜyü¨„y’sŽUšs5ë[ÃÎ0¤×ò¬Û×kIííùÉ ‘úÕØÜ^´1t$Š´Ê±L tÛËŠžîÜZ\*.ÉRÏÙå 9ùj%r¬Ísž•N+‰"´lAÏJ¬—Fä¡=zUؘ:pyï]”ëug€À¶"µà\[‘œ±"¨DBÿ,¿ÇÌí0ÊÑ0æ#´þ°±²B¤r¤ÒË‘¼“ÁÏó¦È~ñíLs×Þ¥·\0ÏñOåÿ×­ (m¸ ÇïŽO¯µhiÿ,»ObP^)J+nö35œñ‚PãëŠÓºO2ÚEJœ}qYèåQ?îîÊ«²tà‘ù×>§c¼cгfˆ¦u_º8?Öµ´B.âÜôÁ­-4¯—pˆÉ¨`%aã­fBÅT㓌~µB"@`:Öf² ]¤ö^ï&1ŸJ«{£>‚³l£g¸ £;F:‚Ù `gZ&Lž«7d4à¨!8ÇÒ¥œæ^8ªÄ§çqœb¦÷8lqüªU»ç¥J¿êùéMxÉ·1džÀÓaÚ˜$Òyy‡jc¥W±üÖ-•UáÏô¦[DûßvUW‚j+hÛsq´¦®ígƒ$_•O÷€ÿ"§Ú^2[AÀ¢¦Áx™›åqQEH cå}ñM ¡P0AÊûÒF»×n1ƒjyQ¾ÏaËHSìžjYc+l™o0¦?ÙÅ:dqAþû1R=ªKK}€¨âˆ#Û‘øÓí¡Ø1Þ§(ƒº±À÷©*€Å²sŠ••@äóRªˆ»q—ÛøT‹6ff8`OÒ¥ ¿›þÖ)$LäƒíŠnÍÙÁïŒS0}ª»E†ry$±íQ”à vêj#‰¦El°;sÀ¤UTl°8ÏOZL*ž=«RÎ0´o÷ý¼+WFºKm& „qŸâ¥¦Ü,Ѽ-€ØëXzUŸÚ5‰§l”‰¾Sê{~•“¥ZIäûË`cÖ³4ëC6£$¬2°+¡`ví5Ò·Ëÿ*ß ÚÕWS¸þϰ’UÆóÀöÍTÕ'[ :GF8úÕ]Ju³±’Aäà{VnŽ]P\ŽKÿ­aiÏ$N· ÷Ʋ¬$e"|äžµ¶t›”Rp t ¸¹¢G%C¥m+‰e2*îSÀ¨.Q¢“ÍP1‘’;U NÅí›ÎPIϪõ«BÞjò£¸íDM›†‘NŠ‚Ò墺óQ±Ð;Ô6× ÛÃ}E6tY$è¬8>⛨m’éæ…6÷pÒŒ¦æHªOÊO?J¯‡‘Aèy5^!ºE·4øŸuÆî€qþbÒ\Þ© U«i?Ò‡¦E]èrMu ꋹˆ·¸(ÎGJÍ¢•¢#$¦+“ž6·¹hÈç†C\üè`¸*G¸üEMl¡Rr:?̳bÞ\,¼oLõëV-O—ç¦áЉXxôüê¢}ßÃóªªxªúŒk²&WœÔ·ÑXCñòdæ¨Æª©¿"©[ÉvX†ïU`d,BpGz©jèÎTpGJ«<«ö…Ü7 ëPÊËæüÃ+ži²²™W?w<Õ‹Æ/|§¶sÞ¥¹!S䥹ù0 AælEPÇw\T{ö¨¦Ú€g­Y¼ØT©ùNw/½Oy‘ )ûÃÞ¥FÝAÆ~õG,¤ÉƒÐqþ*‰Ü–ç ¨ bÙ=ªhd.«ü!z×5*>Bö üêT}̽‚Џ€Íµƒ9ô«I›‚ˆy 9«ˆ<ݪ܅,iÜ£*2=éªv±# È |®HéL„ÄÌwÅTÕ(¬¤å™Ž£e ‚BrÄð*DŽ@Žœì>”©æ}¢çk2µ*yžKGÎî¥V ýÐÄNðØÛ’)ÈäW8˜ÏÝþ#Î{T‹ó 7A§‚ ÔõJí9`åê½ÀÉà–ÅU¹^@ëWš¶¸'·µXžÙôûѱùìj̰5×ÈÜÔúz¶'bI­}%Kø‰&´täTµ,I&3ydß6x¨õ !ÜK€Ò]9ŠU;¾nÕ›â(\élîw0qÀôªõ¬ßÙÿh™bÃØU v ?³ŒŒA;‡£ÑNÛ2Vu™JïéҩٰǸqZPȰÊÑ`€9?ji—BÚïÊ9Ø[Ÿl÷­æ3‡½[!XnU‡9­Ù#Y¢hÎZŒ«$eN °ÅgòÝ“' v†ôö5ÉÉE+.z63\ü‘˜äeô8ŸÎ؃ ŽH¥v.±ƒÆÕ¡Ø¸\ö§D»FàrØíKíïK…昃»zÒB0àŸïQ!÷«˜\Ç µÐ¦Ö‰ƒ±p `úÖÊ…*CÀcš©;³ßÇû¼ ½O¦k#R‘®5(ØFPmžàYפÍzŸ!Q´síOnCÆ2œ®=3Í#0T–>7Jr¿@hvº÷|ÿ:‰È%S\ùÕhÈ2"cï0óªñ‘æªã¸³¼Jì³(Å!‘éúúTzóîœ/Pâ³4ýÆ|籪Ù2{U PL¿…6ã>iÏ<ÓeÎóK.w‘W64–q†Ž¿¥Y*ZÈ«;KÀ¤ö¨§‰‚î4É…Ü)²!°f!QÎxùªDÄ`sÅ9JFsÔSew~”6Ôi?:ït©á‹ìoïsNE •oQštKÝ­Æ-GÊI<ûcÿ¯W¢m–l‹ÁbN ЈlTpXž v®Öm›Ò #‚¶àpj"20N= ,£fÀ"5±êi.FÇU|ƒæÇ|ÓnÖU!!p6–cœÿ Á¦n±ü)¡±†$þ­1¿wÉè{Ó̸ÜJuèM8ËÊp{Ó£FRÌPŒŒŒÔ+ÌËŒþµ$*ÀaŒôªw…#ÀËTW ©óO¥CráG,OJ¾‘»ƒ4ƒÐUô·’à5Ôí€~î{Õä…æc4¤Ý)cf„yx3ðjͬïn¢ßhÃ9Áüjky H"Ærx§^CçÚySÍÔ&A SÊ“š58Ì›{æ¢bkO)òÐ æ«\L’ië QëëQ\:Ëj"<¨ÇZI!’;xÖ4P™ÉµAyg5½´?(ØI$޵^êÚH` 0y4‚R‹ ìÌã59ŒC!L‡È¦£˜ü¦+ÜU ÉBýïNÕ²·ij…A%ø8=Ö!ÎO¥$°ng pãš‹P²,ÒJª>uŠŽî×qva†j²v¾AÖ.Ò«g®+,©ƒØâ“q@ŸâüéPɃüX¢<‡AïR 3Ž¡2@÷"¦hÄw.½“ùã3¨IŸ=¹•H…X×— ¥jiò“F\…?Jе|¦ÑÉ8¢àídܤ±8,= &£„xÖD;º=1Iw…t¼ž­QÚÍþÉ8'ûµ”íó¾F85ží†c×)n¹…và»ëÅ>ÑCßGÇç?€¥µ®ÓŽ™jËÖ—í‘чJ«©fiØž ñUu/ßJ}Aª–0ù[Ý»qPÚ¦ÀÌ{qPÚ&ÝÍIû‰$.ÀœQå´›ˆ'”åòÙ·œÕdüǺ3ÓéRŒžGJ™~lã¥$¬ù‹ò€9÷“6åãŽi—h ¼`sU$ºf‰éUÞRÌ=1Š­#–lž†­`#$ü˜Îjqƒ*gîÔã×=1W ¤¸eûé.F{âžOï%Áå_#ó©Tñ&9!Î?:±ˆÚ¢¸+¹ˆÜ?„žÕjÜÆö{$Êã8aØúU¨ÛkûóïDJdòãÉÚr\û Š$iS< –÷jÒHcž™§²‘4ŠpAnG¶*@¤NÀàóÓÚ¤Uýë÷sÍOv@òÀè[ŸÊµõ§ [{±Èú ÐÔdq‘з4Ël}©¶ž å…WÑœµü›O2Ãñ¨tÖÍÃmw!~ó:«0/&V­(°×[yq*÷)?A]ŒFª{*¥æ¸•ÆiÆ}ÇÎ^] /å•Hؤ ûÖ5ÍÀ{©”qNåw–úTw Ū»bx¤b¹r§ àŸ ¥dí9ÝÉü)Ù1…w k¶ÆpSÁ˜ú ÏÃLØíPÉwºå}ÒqŠcM™U{SDÀHƒ±{Ëm˜(çhFJ|¼(çsa1ñÀëU’B/‚6FGõ1!OTÚ6 h‘˜0F#h=)ÁIàd…ƒ ÇŠ³nªÎ8j‘0XÞ¤ˆ óõ­QóÐ.GãSÝ»Ð.:±Œ’AQ…Ìb&àÏÕ(FìiI]­œV6¡‡ Ä"·ÞêÒ1a›äSŒŽõev˜Æã´ônÒ‚Šß2 û`TÿckÅ ÉSÇÓ¥û1¹P¨~ïz¯sö{8÷Lÿ8 ;ŠlöÖÖ1æW>b°ÈìE2X`´Œ˜jhåS(xÆC Üz®eU˜2g ééQ4ª²e:B93Ç(%AQ¿=ëÒ…—7M» ç¶(óÒAÇÒ9v®#<ï'ìÑ>é iÓï$¨ì¹â’l´M*¶óÇû4€ÐÉÈ•ÁÊûzÓsdïaÊJjuF9ÜÝGµMyñ`àçWõíÂH°p¸,>¦®jĆӓK§©2Jç¦vçýiþi¸Ê0ƒüþTº,xJÝ>í$—FeAòëP^jMq$Џ 3QÜßy¬ê¿t´ÈÁ6²HFpÞ`ú÷¨í¡‘ôù¥ÇÊæî84È"f³yÈS»ëг&wêj ùeVoÝçPù…˜)?(=)×°†$áväþ_ýjžòÜ[°ù±¹?•Os…³ê¹ªvú±¸Ja¶ð=qKi©´àFË–ÛǾ)-¯Œãaí­ ‰<¥Œ‘ÉHö«Ú”¿fX™6‘íW/%0¬\üÌ0Gµ6Y7[~ñv‚3ßšK©¼Ë"“(#Þ›<›íʸàyïHêX‰\híT.#¢Ë 8 ´ vª³£°0 g’Ù3r •^©©4X–MDY=M;L^ï/ü#"¦ºfXe㎠hê“´V“ 8È5vþVŽ qÁ=*ªD®ŠªÉÏsX ›° ž~µŒŽyç5!b}ì±ã¤í^Iã*ÇŒÓ.YbL×­=À‰pzô§>#Lõ„bc#'ñ±ÛYûI¯rk+ÈËܵUòXÞ¢žÇš…co´*žÆ›åŸ´¨=ªåÄþBªƒ–?ʬK/–g&¬<¥W<÷úSÐ,ì³mù”c4õR$ÆYEH€JwãæQŠmÎÃÔŒ^)“íØûãÊ£º*mûÊjÝš J8b}êxJb>ö@?On‚Bˆ½IÛVÙA£É_êiå6ÌèIù1Rì"vSÆÓR<„n À‘±Jò’JôÞÜR9Û¼x¦Ï!˜ªsõ¦Ü© €(¸RxÆjΜ?ÐÕ›«3ùšßÐT.™Ë33~fµt‹=Xç5‰â×RÖéüX,kÅÌ<ûtï³&²¼VÃ0¨ëƒšv’{ †;âᾕNÒ=®õ<§_¥Ciž×rŸ™E^P­lÌçå^Ìzšz 0¶ò6©èMH‰˜ŽãÀìjFwåï Ãziï#™“ŽwcÐS˱rWŒõúPY˜†è¤`š„¾óÇ&>[qéÒ¥‘ŒÑ‡e “¾¾õrþà] vNvíúU«¹¾ÐÈÆ8¦©hí>ôŽßÒ˜³5¶Ž#zg,—ô¦‰ßL :¹ªÀâ"Šrdž¤à¨9-ÅPBXí–8«× 娲/?^k¢Ô!ú#Eñ<Öåä~NšR>:U07ʱm9ÎìûVQ´³*x%‰ö 3Ê{ŸÂ›¨™n`%8ëÙ"­^¼—¬d'™Q~™9«Wl÷GwbÁGÓ½6 $´œ:~ð©ü©°F¶wJéûÀ„L†5¶¸V…ëVÌmqz$$lb¯[PÕ±ôÇ5pÆ×wÛØü p)ÓH#œy€lAœû⋉ÖGlÀ2F:{ãƒI<©Ùß‚ª8ª¶wÏ|óÌWÄ6¨õnõSíox%”ñc Ÿ^õ\]5ÒÉ!áV-Fû…`0—DRÚŠ¿ð„9©4µÍØoE4ûœ´—äÅ[Õ7Ik+?Ý6šžÿ-ŒÝ T{ˆV9À5“´çÒ³cšV+9MØþµbuX \çz«(‡g?yA¬{ÛÐÒòrpj•ÅÈg>ÕFæä3ŸaL‚u•¶àn¤ŠPç¨ápòÀ' ò1«cëOU©î*pä>†©^¦f\pëU®Œ UiÀÞô§ØÎmáw p žüÔ–³t-°2ñ{óRZÊaBÛw€:ØMªo‹…˜ív¦I‰oIŒ|²(ô¨¦kÓåýÙ>ïÖµ¬3“À–)ãŽ*Ý–áp¡peIÖ®X½T}ä~•yZiŸiV\d²Ì³Oq.0À†ÅY.²K+ã œšd‰™i8šãýàÜùœb¡xǘœãµ#`–È8ëô¦1 H=0IÏJŸLÇ“&@ãò½áþlǘvþB¶4øò<ñ¼ÕÚ-ÂÀü¹ÝôíT|Sn’wþ,O·j¥â q)…¿ˆu§hÑùS˦Пzg‡ãÄÓ¡N6sîsÅ4xicÛòí4ߺžEXÁB?•W¼S Ì‘…{ûT7CË™ÕWŠTi<½ÛJ¦Î:ñ×ñ÷¹­]FÉlì£X†00Þõ~îÙmmSüB•L€N㊣nòFÁ£8j¯ UÁ\u9­[b-¢1vSòÖ±©H÷ *á#<“ü«ŸÕõ¸ºôT5‰ª_´—# +_EËE3±å˜s[æÜõ-ZÚ&L2¹êZ(w½fùB¦AÏ| ÿZ§x†MFG;B‚sŸn­U¸R×nçENd“ËfÄx>”—¦ãlG„®(žèÍû¾€(;º± À¨¬¹ sQ@eãæ¦>Dî™Ï&™:“pÉÔM”q·¨Í< ‰üÆ9^qõ© ’oc•ÏZsD˱àóK!ÿDYÆæþ†¦ºþ%ÑMŒon?#RÜ'ú$oŽ¿¥Mxþ]¢£õl!þ¿¥hjR4¸¡=]T¥\½o&Íc=[ ~• Ò‘ÑÏÈHÝíY“LfBvHü*”’âS?.*dðùr,jYí„$/P oÂ$,w^µ2¶ÌB7,X#éÍO²ƒ2¹bÚÃéÒ§G 4‹Ô'?‡]7̨Àô ÕAÙîÝ>n€º©HÏrãæÀÀ©ü“I;¼y'†´í­ œÝ1 Ñò@ô5z o²¢ÌØ%{{SçJ Ø~Wlœûv¥Õ§Çj¨~Yqü;Sµ ‚SÍœÔ.^ ¡ÝA-cšÏ$Ùê*Àený“š¨so{œ|€ñô楟äpPádS‘ïëV5°È¯ :|Ô·¸Œîˆ²/1·ÆW9ýjŽÓå‚W¯z§´ìÉïQ]3 "øÉÀðâ(o²î<ç…:rVصcÍmæq‚j“ÂX‚Eg<%Ž@ëÍ>Ö Hì)ñ PIÓíâ –nµ^ê6ÎH;O`j)”õÆ$ªØ$Œ –Æ=<ŽpILT–ÊVv8ç¿¥Io˜·Ô2Áþ’ÞŒÜT-ïxèj@$>ý*²,é RD‘Ÿ›Þ¦1$‘ÆÀëR–U‰Ôá×­hƧËÉ$m§ëÚ¤ÛÇ'¥Në•·‹«·Ìx©ÄešÆçsŸð« …ž –$¨Öz“ݳˆÂI媞àTÏa=ÕÓ^Jëï6ÝéæÎk‹¦ºs· ·¥ºä¸·€S( ê3Í##I}– ¦P¤Ôf†V{Ø!|U«ÙvJ"„€å@'Ò´5k…Ž_*fѻڮêp‘ŸŸÍjñbëdjJŽ~¤ó\ÝêbpŠ Ç_rkž¿FûBª‚Nrk¥Ó‘­ì¢Þ6îæº"¶°wÊ$ëžÕÒiÑ4ˆ½7ŠeÂìr„àc;½Hâ³µ50ÌcÏwzž•Jÿ(åN¹¦ ¡”ƒ×>§µRVFz¤2žô8è™ÈùÒ°è ðžrH©¡‘CïF~§¥Z¶tIŒŽ'ëÚ¬Àê&i‘Œþ|TRdÆìl9"¡ug'I8¨YÏ:Ó¿ÖYÉ?4D7áßúÕ¨ŸíSܽ»‡ÿïüêÄn%°)œ4-‘ô«N‚wVoºï¥hͽ•]Î#Úèqÿ׫’§Ú\á@ýqUfƒüã'c]ÀÐχ8ëY·¦ÃpjWthÉÇQòŸaW<Åx~e'#ƒì:Uá£É‘PÊI—È^$ŸƒþÈÆi»Í’Þ?¿:óþÈëM9ÜЧÞcò¢Þ!$Ñ‚NæÇ­&mæ]¢¶p¼ã×–poAä/j³<Ѷ`S“ÐûUûëøXX†I ·su~áFI })²@`~\‘ƒëëPê6ënboáçð5Ü",öÇäj;‰2eØ?Š¥|Ïû¦?3:>€‘U®˜îBy,)×J#ªö¥KªÆb[tçIéNÔư©é·4¬ÈÌ8\` ®\98QÆ*-ÁÏ^*•ôóÇ’˜çëÚ†i£NŸ¯jd¥¦‘"SÃqøÕ9r²´XÚSƒïUå ­JñõªîLrˆÚEEtÍå–õ8üù¨æf*Xóÿ׿™#¤õÏõæ`í! zç4ëB_ ëÅIjÅÀZ%“Ë‹x9)¶®ìçœqI#\ƒœš‰eRÝÅF¤8ÝPîwµj2RT'õ©èܸ'·­H™WŽOjЂ6–Qè9síéV,-šêëË'å_šCíV¬ k‹¿Â9'Ú¦‚@ÓÏ9_‘>ÕvÎe[Ë›½¿,`„'§ ý*Ý´«ö‰®1ò¨ùsÒ ºÌBdÁ*w>õRîòI‚¸lI«\]<˜)ÎJšô0íPN=¹«ú”qÄma½€öïW/Qc0”?Þ"¨™7$nç?ŸœÒ3y’8Ë1ÏçÅRgfÞí÷¤Ó-ÍÍÓO %€Oñ5ZÑlÔæâPLiÀÏñŸK´óå3J2£Zì¡Ô©àùWBè #jØe ›:g§µe´þ~æ”p·êk–¼¸óÝŒŸÀvýMa]Oæ»þŒÔŠÄC¾C‡ßòç°¦("1¾öï—Ú£Qˆ·¿\ñ@‚@2£ õ¡"|n^Fy¡cläw¦\¨¤†Sòþu+ òØg ǽLTmôäU™Po-Ÿáù½ñƒVo#Úþh<6sø*{”ÚÞ`î9üê$ÄSî<€~•VÕÖ+µcžèjµ¹\Êx?CR¹(¨¬Ün;¾™À­%b±ÂŒÿ.ï›ØvþU}[ “ÆyúQxpè¹ãi5_]Ú³Æ«È ×ñ5_V HNFÌÔHN蔜,q>ù¦ÂÙ@@\ûçÿ×Dm÷àG~µ $Éyæ7/ŒãëÅ2È4·FC“'_ÏŠKa¾ãwñt«ÛD;Ž>F?Ê´7H¼cëV˜­«Èã®ÖÇÖ©Gò#†oα`}³,Œs† :ˉñ0vþöM\½\Nv b~¦¶5ÃæØgdjI>çZZ¡ÞWº¨9¨®ÔI²}åÛœÕ Ãç[DTa‘©ª·9’È ¢á·ÇlAÊ•#ñâ¦ÔœMedßÐT—¬%·¶#Ÿ— ¤+±9…SÆÑÒªíÀÆ+œ½¹’;·PÄ9úV|óºLv±zVdÓºJ@lQïdV£‘¦š6‘~eõô©šc3+8Ã*c52Êe”9Öµm¶¤òÅ¿/"îúœÖŽ˜ZæÝNd‘°ëZZvý÷Nµ–0ˆóµP;óTF("':Üæ©Èí´ÆiA>X›&à*X£o-nH_™Š’Â,í÷ b˜ï»QËr‹(þŸ¥L“y—¬Òœ¨ˆ¢~˜ý*Q1’ñŒœ ŒùÕh‘§¼âo›éPÚÆnoÒ&è_æ¨àC=àCз5¸‘¬hGÊ;õÕECŽ1…^•»$hGÊ* »´·ß?0à{š©¨Emk#ƒ–.=j½åâAnì=f[ HU[–'é\ºŽ0ÝI-X#ú“š´Ì¬© œ“š²4d†<Õ…`a ÜñCÀ3¾îù< iœyŒ3ÇZCŒà9$ˆÑŠÿ|ŸJ¼cÙûY¤ÊUÍ€[)aÌ‘Kq'ïDqÿf«p¯*EÊÆ˜â£Ô'Ö4<*àÔCWw5I>n ª±’ÄŒóVQU˜±ä(þu³i+½¾`X/õ­H¹ùËT8šrGÑEg_H.¯X¨ùz/ҨݿŸtqô¥¸\ô$ ÐT’¡‚qó8íRȤGÏñqøSí`{±à©ÛWô¸´’¶CÒ­XD¹i äS&q#•þó=jŽ¥8šVP~ótüj¥ô¢BT­Òˆ¢i®>o•#´à†å^s‚iÁC ¨Ç=jÁp[*8ˆÇ¯­Z¸¹USîEÄcßÖ¬M6ü÷S…¨ÐmP½[“ŸZªÛŒ|Ý~µ_©õÎiñÆ"Åzä­Mâ2mã ©a‡ro"¤YGÞ­®•¡óc®­À1…^¤b£ò€›0-@m`2ó ýqQ˜£?qÈ¥_˜¦ÑÕHúÓ÷®¡åHÞš r1×i¥0¤»eØp>•jÂ1µ•ŸçaƒެZ¦‚ß1ì*üÂ1󧯧µfÜDâ}˜Ã©ÏÖ³çüÜžõ ³F “½Øg5$.Ö¡zïf$L`îc“O’=±åßvZ¹x†-=!îÎ?…X»]¶¢2:¾êbâK}¤àôÍSˆ‡¶*NWŒ†—¾t¤s°æ£ÛÕMG'ÜȨ®ØdºsLsµ[pj9Õ¿Ò±dŸi÷5Q¤Áã­g n;Ô¶îÎHÎI$.Ç<õ©m†A=xª…OŸ´œó“UöŸ3i=éO˜3R Â0ÆwÇãO^œu©az}ãWW`ìpÈG…Y8bðÊzzÔ䃖o¼§Š©æ~÷<šª÷™é“Yëþ°¶q“WíT°8ÆOCS(-ì}jäCpÏLðM[vó&,~Xâ] úÔ×äð‘ Œ{ÔÓÈgá`{Ô›cÁväwíMؘÆ1‘HsŒTºr˜â”Ò~B¶ü:¦;)²1ûÂAüjh ¥›‚1ó“ŸÀV‰Ÿþ¦°5—ßyŸâÍbkfò3žsRKuñêÜŸ¦(3!>_rriþr³ùJ2ÙÎ+VÊѤš-²¯N*ètÛÍ´2ÜE¶T÷í[v–±ˆc’Dí3X1ÉÆpX0|~_Ä’ÆðÇs `縪úëÆÑ,\wÒ±¬® ÷9nyÀ®~ß!•‰o&ù1é[Ÿë2ýpqмð[ÓŠ¼>aŸJU G°ñŒâŸÜ`óR#n9Á4‘}üžj8Î_'ŸZ‰dÉ©2Ìž½êݵ°•”9àÿ*³ !ðI½V%†#À±©^Hþζð}Ñó>¦¥‘ÐF!‹ êjŒXlåóÚ©…mêïg¨ªø`ão\Õ×SåÀù€È­™‡ú D ÀúÖŒ }˜§BA¨-¾b à¼b³ôñ—ÞÜm;Æ*¥˜$î?ÃÍ-¶~Üìz8œÔšlŸñ4.ÜSýÜóN±oôÒ[WEÒI#å?ñáIªDò\nC†©/‘ž]Éà "ÞÒ™&Æ0¹é¶+#Üy“®B .}hµGiwJ>è⦜íY»ò*ö«Å¬[‡Fþ*Íÿ.}j¼AR1ÈÜ? sXð•HòNAaøqYѨG©§2lB»þñéO•6FT6wãÚ*CƒÖ«ÝŸôip¦j¼‡÷m¥W˜æ1ØW<™‡$Õ=zVjæ8üMK&@W©$þè†XøÑ,à/\Ô̈®I9b?*yP¤“Ë*²qÉäúT ps•QÇ=é¦Oîð:fšd8ÏASÀÞsxaéRD|ÖÒŸó['µDñ’ä¤Ó>bG$CŸ­hÚFF윸íÅOíÏÍÏò«&Õ<æ­È?u¿‚™Ë/ãOaòãh<Š”®P7ðƒÍ:àrÀ¸ €>”· ‰ÈÀt¢|ùäcµY²âÉNíÄ“ë[ºPÛ£)S“µ‹|Ö½Zz)&¹ëûyn®Öf_Ý ßJæf†I¦óHù=À¸å¸°ùFj-µjÛܨ …M Zý³S àí@\Ó´sq¨ppŸ1®®á•afcÆ0+©Ô%H¬Ý˜: WGxë»3p³$ #–lËëÈ®fVY\³T^EaHË#–cýQ·±{E˜Œ¦Ü­@mZÖç‘•#"¡KV¶¸bz Ò8V;GÞçÒ¦$+¼Sd+ØÑ!r6²„R»g`ƒÒ‡n21ƒKl…Ø’s×#Ò‹TÜۺ㨢Ý2K•dB0ûû·~&¶ŽÝpêw~&˜RÇ9¨G68;¸ôUIdÛNxô¨PŸ7#±ÏáRÜë‰ñ»8õíW.‹N°ùoó6xïÖ¬LL¾YFå©ðÊòÉåÈ 4û¤’í •GÊÝ)Ö’»\Üci<ÒßqnòÁÆ>µkZ!¬•æMëSj'u°Q÷· }j)X?=º{Ö0ˆÜò: Π1íO“c[ˆäd~†¦”!²ßã ÿK(Sm¹}j½ãƒ £¯õ5ZC˜ñꢫMÌ$z¨¬'‰¹žxª,‡šÎ¤c5jÞ!ÊŽ*h£ óÚ¤¶‹aw¦È¥wWo…H$ùR²79Gj£‚pŒ‡ƒÖ Á 8Ì…aÅ\³Cóƒ–#ð«ãnブ©à]›‰š|²eŽÀ:sŠI$ÜÇÕÒ'hµ]²LB¤äg®{Ó£UIäT°‚±.xÍY‹çY ºé•ö«V[Y.måþ8‰R¼9«6d2MŸÄ›—ê(Bf„>ÜOù—ÔcŠý¡‰Ðaǯ¥+âe‘x#Ö¦;“N £id¢ªDȱ«¾Õç×ÔUhÖ'®Ø\dûÔÉ%µ«‘…GÝš¿奤®c Ê0G|U´¸·¶g*€Žjæk§Â©¾µŸ©_=ü˜PV4è=jõÛ]1Ú0‹L1"ƒÉ\“ý*¢¾É#5k’ãÛš—–þ”Ff¬ÈÍ áxT*wc"çmšä.síPÈ6ãœûTR.1ŽMU»“j"¡ùˆù…C!Wo_J†v€½}*óTHm,0Æ­å‚,j1ÀÉ«|… 8÷¤%pçøˆãÜŠk0%¿½ÛÜÓwn=rÇ¥& â^9 =É£qÃdÞô½Áê Hæ[œ’$AŸ¨«1ä´}Ĭ©‚=ÅN„< ¼ãŸÂ›gRGÊH?Z†6zd|¤ƒõ¨Ñ¿| ô$ž`g°äнL¢·U#Ú®\®TÀPHc”ÉŽ ÁªHÍ †lpN TRÑ9“§L‚H<ؾVãѪIÔà6®å<ô4Žä]$ŸÅ» Žô¨íö¸ÜrÛÆ@ïK–»VQ“»µ^˜ éž7·_|q]ìö)ùLŽOãŠÙ¹Œ8@ß.ãúÕ6O"a|уÓÍb4- Ç”Ã*AYm Ç7–A*;PÆ@ÅvîÇÊ: d¦Bq´útéL¾pF{bœ¤ˆ‰Ù~àR)"#…$½5Aýß¼ic]ŠÌqóŽ«OE)7v·û4ä]‘õᨠ˜\ž0x¥I?vÌxÁ§#á?…0£Çƒ¸dçÚ¤› Lœ–\œö#­I.$dî9¬©UØ–n¤ÕF'ŸZÏtfÉ=Ík!(îYÀ«K”UÝË0éWy\nêE!ÚƒyìÀŠnåFVn0ÀÓTª:“ê)íÌìÈ OÐ’Ræ@Ø?1<~4ùyÒÎ §ÆDÂ1ÐF}ªXžH×¢í"¤ˆ‰Xvơ䫰þÇáU³÷™yÙÈü*,à–ÂsRLí,Ê‹Â`üy­å{›¤QÂp[ß½[‘Ú[„QÂŽ´÷·Y”¦1žõoìBU1ôjÇÙ„ƒaY’KfhÜf'<5Q¸¶–Í™YwDÝ1U¥‰í‰˜ØñYZ•ýÅ…ÐŽ)0„oSõ¬ûB{)ÂÂù_¼¾Ù¬Ë«é­.–(ÊyZÛ™l|É‚¬…C3/zÛ{a6›æÌª²m XMm´íCÈni\²«×9Õ[¦+.3Ï~õ^fÄdv¦*+;C÷Y°Ëì*²Gæ3[ÿËG`GåP"îsûÍÍDäˆun•ªèGÍÒ£|¬n§“Ò°n˜ù¬¬é‰ÞÀu¬¹GÌØëRÚËæG± óõíRÀûÓi<çKhýýi. kà¹U_N!Ó îĬÃo×<ÑâYÄZvbFpWÚ¢ñ À†Çå`$, Õ; nk.%L˜ÀsYpëo2ª´`Ë·nóT­µvUY>|c5¢\†  ýæÙ$/ RØ©§;ïp£€zÓO˜ŽªîX/lv5£|3¥C (Ø' R‚1´1{šr6ñäör0=éñ¶ÿÝt GçMb£poán”r¸É €¹ Øâ –o ‹|§¥4¿– ÁéíLi|°Tž T圖$/5·–NI THÅy' UÝÒ$_ï!ÇáV%$ªqV pÀ7U8§ƒ¿–þ‰”±æ˜À±ÍL‡Ì¹CžsÓÚ¤çN}iéóL9íŠ#s¯áǵ*Hb`~¿•*Hc9JI0¥Š·ÈÀ·çÁ¦Ê0Ç*Ã¥$Ÿ)8<74ë\É0' Ö–­5ÈcÑFãW´àd—qè^­ÌÐb´é¬ªëµ†A¦IKITúö¦º+©VäŠåµûg¸Ë<þUÆjÖí åü³; åukvIÔÿpí?κ(e aýäºcp±i1y‡–A] L±Ù!cÕED [sžI’Òn‰Ô±%¹ÍPg „ŸCC*áfr¤¨é#(×P3¹\€2:õ¤Œ©¹‰‹mÏzGSæÊçvF{÷¤‘ΗxÉ/“žç­Œdaß<{Ö£ [–eÖeÒ.@ÅdÝ)Y‰›f¥N}æÅ-¿ ÉÅGnAË ·rQby €=jÄÛDeÏ8éWæÚ©»ŒŠ¨®ûwu¶*I]Þ½ª.Jç¦iÛ•Ý{/#ñ¤$(fŒR"³”øÙd·2©'i➬ÀçiéQ¹ švš®Ió[Þ¢$‡>ôÐI­;v®TòµnÚSܽV®ÙÍ·•<­_³y‡s¾¸«ë¬Ü‰~fsØt«cS˜>ü¾ÕŸ¬Ù=ÜèK¸¡ÀSÐÕmN'¾µ7†L•m»j¾¥n×°}§~J6Ó¬-ÑAÎeÇåTáQûÕZ޵mÝŒg;~¸©<ÖÁéõ©<ÖÇj–e8¥‚0EY¹‹0A0<:ô«W ˜â“#æÉ|¿Ý€Ø8<Ô.É´àúÔ-€Si·L]$ |àe¸ô©e&evÇÌf÷§LK£7FQóV[™þ¦©r즩1iOµUŽïÊ,%”À¨’m¹Wäf™Á ÝÏj×½o%™˜à‘‘Z·£Êb[«@­¡å±'©éL¶”<[”ð#Ò«!áÈÏJ:dtïV¢$8Æ7J’5;Æ>óp*HÁ דҦp»sŸ˜pE=ÔlÝžAÁüy§HŠ>•î(þ›ª©ÏJƒç=*Æš¿¹-êkAAöWS[J³–õ5n´ªí%hª¤$•” ‚6µaxŠ×;.TpFëYzͶìJ†¦@žuª,§£„ü1P¢yº|m+r²ÛíQ"ù¶hd<«`/µHÄydôV9ü*«}‰ý* ÀèM»O~dÿZK„ (BpcúÓfdû½*D`è³Ç÷«P¸‘w·$qŸzµ oPÍÔqõ¬ûèQÝXð'ëU¦‰Y³Ò©ÝB®Cj„D»˜†|ôÏNj5‰QA$î3PÅE†r7gšŠtß$Ê~´’(hvŽ î:A¹8䃚¨û‚¼yªí£`Ôm£`ÒÌ»m$ÈÁ~@4H6ÂÙã=©³ñ R3MÓÎï6>Ì8úÓmyÞˆýj;p^)#=úS™2ç¨4¤|ØèE0dê*ì#dAO O5ÔÇÈ_”ò:ûTR’ F{ÖtÚŒ‘¼NæeØ}ª¹ºx‹m9,5UîÜoÃ’ÉÌѲ‘ó{R[±u#½%©. ž}ê6²‘¤;˜`šCnKòzÓ¾ÌÆJ·ªïwŸ¼¢­j%ГÕEY¾,¢£°YËœ„•> ÔvªÁdîºä}juu§£®A«31¸]Ì~SŠu»Ÿ5rOéöŽ|Ñ“’+YTì!º·5oDYºÖ®ò#,j9 Žƒæªîx\T,Ý=*Λÿ§ýó]‚1§êæ¶4¯øòSîjÍhÕº( u¨îwdc?J­¨ {AECv­\LÖ}¯ÎÈŒßt’qõ®q³¢3p¹ ßji°„‡jY£U!±ƒŽ´Ä“ΈŒüËÅ1[|eCa¦©Þ6çjÌò'Ú~Rp1îqV.äF¹>XظQCŠ’âe7-³§ ³ ßp$œdƒOŽPªá†wwÍM ˱²>õLG(ù ÁéªIÏcK°uSÖŒÏÞíŠEŒG_jhƒMšËþM£iò«D…•8õé â±çºhå%GÌâ¨4Å$ÏsYÏ1ST®– ¥C"óŸZ†EèÝZ°ýÒ²õcÏÿZ§´R2äÔöA¾—éïVÖ9ð%6òlõQVŭʨ˜ÂÛ=@éW>Í>ß3Ëm´ÛÉ#M ’[Twn€Õ±ÅGpÈ rÀqLµ˜¹ ¯2)7 tØ›vWû£ùÔöŒ.1ÀÉ_Ó­:s½A>«N¶„‰9=kXœÀxÇLñVämÐ`ô~•vVÌDzqP2‘`vRyúÕw_ݦ?ºV«Æ›£^£¼¶¤áÐäjÕðÝÚ¼OjNGÒ´4K¥’7€Ÿ™ jÖÝjRQE 2Œ=A¦N» z©¦È¹‡±¬‹Ä­ Ò¹8æw'ƹøW–|ãf@U‰‚sJêUø8¬6¶}y§ÈZGŽ02å½X,e1ÇŒ…êj}ÆSãÞ±wiäuþ”oß+J§8æ“vç.;sUu»k‚yÇ׊Žóæ*À`šŠ÷§¥eÃp:wª%Cd/NõšÊXÍKn¤HÊÃ)É© 3ÇiÖC÷¬h/óœäcŠRÿ>sœÕ–9'œ‚1JÀIÙ˜‘ø“AL/~) Á¶p>èÁªŒvªÌÞ:UéÙ¤ˆ3ª8ú µ;ãŽ? ³3ãÛŠ†Ì•‰ïÒ¡·;d?JЉ×H7LKç¿¥)ÆòM5S%²sššÚBÑ2»«(JtG1OÝ#•H„qžCT°^ Àg½>9ù>Õ$SàŠšk™e1Ÿn´÷•”ezÓ¥‘•rŸZÍ“¤‚Mìyäõ\\Ë– }Ç­TóåV,I#=)º˜ ðÍ<¹K&Al ´ø²ÑlTË6Óà,Ñ8TÉãmjézjÛF.®ÈÜFN{WK¦iqÚ²NHyçµoéºtv°«Íƒ!çžÕ§­\A¨hU'Þ=r1Tµmfâ÷¶Œ(DûÞüU]GU–;ö·P/S튣}|<|úŠÈºˆ¶yõŸs|:òOZn˜¬$•˜zm `_#­6Ì0nïÒ¯A# €ÇéS!É©£fÞOáZ*¿(Îì.?˜c9ÜBô©Ôo_÷©£sÛ¹#n=ª" Rx¨È%±ëÅbéÅ¡ñ ä`³°Å.†Æ=v?rÃô¨ôf)¬ýíÕֵ؞µÔJAÖŠeÈ`‘ÏðŠ‚òQ”²ËQ]H"¶‘Ï`@¬ûHŠ[B¹ù¥Ïé\ïÑÁ=eMÿ­c˜ŠGÿ|n5cnî !÷qžô÷Œè(_â=)±¾Ï1€ib/ÍB1:ÒÆÅ¦0p)9¢T2®O +¨…€Ï½T¾å#?(ÅC8.þ«ÜåÜúUXÔ¨Éã®j5Ô›"á29ÝÁ ö¦ºàqÉ'·¥7fÂ2O§¥@Ã…â˜xàSÇ­8‰õ$þ´ àGïÍ;î„÷4Ö]Ëò÷Ö@ÌH8錀’GNõ((Ë=1À©nv•*í­FWkn^ǵD@VÜ=j&\6G­œäpM9—æô›pHîh@E¬Þã4‹þ¡Ï¨Ä?»úÕ4~™=ê¸oçP‡çŠÒ·lJ ä®jôCz`Ÿ˜Š½qžqPýŒnÝ#€ç¢ò\a·Ò òpA-Æj[èc¦Å+Å>ò5fB r)o“÷ŠÒ¤ÒT\_.W(¹üÅjxv$¦V_»Ò´´8CK¸®@}+KT»†Þ ÃîVÅÕÄpÆL€ÇËZw·Á2(až¹Ï³´—R;:Ãq ôµr·Öù¿™¼Åes’súW;5»}ªbÎ?$ç×µ[–VGÀÎ 1œƒŽÆ“qõ©mðÄqŽrjHFâ?Z–Ï?L¡ 8Îh“h8 Þœvƒ€{Ö‚òëŸcV­×.{j͸ùÆ{sMe*ò° É>Ç<ŠŠHÊHädgš‰Ð«¹ê³Z£ÝÀãä–)úŠu”Jo `vÈ’}E-¤Jnâ`pêÜûÖÁÉÆOå]V{Öÿj(¢¨ê»äÛGÖNMcëîòyv‘u~Mgê¤É²Ý?‹“N˜„™ªûU}U¼«˜ã*¤JƒéPê¶tQÐ €žuÂýÒÕ eºCœì ÔP÷ s÷H5DÄÊÜ)u ?P®..ü×F•wcÓ8¡Ktð €:’ø…š0z7ù?¥Y×˹@ 8üêmQvL€}ÖU{ÖU‰ïÉúU)˜Óê¤ì5#ñªpw#þ<ÔnIj¡|·Ò¡Ÿ1B]N 8£“1Ǹ§¥#e#Ü;š‚;–-²@{Ôi.Ng4‰.NÖÍO0È$t#Œàž•,ƒ<Ô+¸8â£\ŠŒexüjYF\±àô©©5#u&ˆÇÊIïÒ‘9R{š|¤š|ŽAÇãNn ÿ<ÓeÆH4 ü¸n©‡…jNÂFOìn$#â«y'qUs p*òŽ1ÆqÔU¨È@§ÅYˆðO¨¤oÞÌÍ!Ân-Fß2V.p½Íœ–8PixæÊ!ÆÅ'w­9Z9s¶6ƒÍI”›rŒ|£­ZÓ¥M?L–r#ÏsÚ·ô¢–Ú{¶>ï-ïZ¶.–¶M!ÛÔV5ÍÓê7ÂVB㇫^KuzJn2ŠÆ¾º{»âɼD{{ÖŽÆ¡y‰°ŠSu4HB¡AÁõ¤•°ãåíõ¤‘—#—µ#ã< H®¨åŸº¹•X*°SÈæ…m ¨=*5l?'A¨‡Øæ•xn{s[q¹Ò?ÝV«ð>ÌHßuZ¯DØ!T—iÞ@\~´ûéTI œ‚?*.äÜÞ pDÛûŒUh˜¤Êþ•LV`þù­œIaÐ×Um(žtÆ+~D¬½(w¡f4³J°F],’,hYŽ+-f'RYIÇ; çcºi5”•϶ãÔV2\ÔñêqøU»ˆÞ[–ÆsüªmV"e‘Ÿ—ÆÂ¥Ô.Ìß{š‚9UD“‡ÉTÆ>§5NÞP‚iC|ÛBõª°>Õ‘Ãs€ }jIc·XÇ,~f4ñ‹hR0s);˜TÒ*ÛÆ ¹äŠ$-$jÌõþéÍ>âY.b˜oÚ1‘Ú4:!#v>•ZTß<zUi1ç½A*f<þHÂC gÊ¡òðª”Ã⡾Béµy+×Þ£¹RWŽqDãr9ÅRÀb d’j¸ŒuÍWÀâ´pG¸«xàf­ŒÇéȨÙyõÇ9ëNLàg²Ó‡O_AJ¸4åQåà`·SOØàrG$T›^:Ô2u>£úóP¿ÊN{Uy>ùÍIJŒò ãëOL•Áç< ‘>aÏáKË †ùqJÜŽ:ÐA=:ÐpÅ~˜4÷†:b‘‡¡ª·å—`?w¿ô¨nIà• Ë0 •&ŸHË¿‡_j’Ñ6.æà§ÒŸh»cÜçž¾•#í3Fó-Ãr=GJ¿ âÆì„—„ƒ¾8«‘Ýv\î=*YÀr«ö©¨î®<¬UcAÑ@æ™s2Ÿ˜(AئIJÄ"\°q=9¨£Û3Ö1–8ÜMDŒ'aLÞ«Þg#hÆNj+Ž¿(¦L0p½©-£Ü¯ºˆ“!·RF™ÎïZ’viÿÙS–"_8Ë>{u­|ǘ'Ö®ì-=cI~ut&PáV?ΗïÉ!!›>ŸäT.þmÄŒ:3gŽ*>d̓Ál}(VK¶;C*}>šûkP7AÜÔÖq,·0ùC~tùKYÌ@òßï-hK$šeØÛÌ¥\yÎ|c÷OúUk¦’àõ>Zô÷ª7÷2]1ˆ×‘Un§’vÚ¿psNh—+ #*¾`÷XqüTû4!·c MÔn&p‘ùW9QëEåÄ®«o‘OÝ´—Wê#Ý„N«Y6Û¤=³Î«Û¶&CêqQ[¶&SëÅYZV=K5Nª^Lw-Öž½Æ þ/Ò›+F×+ 0ew Oó©>Ioc0Êòÿ™ ½äp¯!˜ù×^ *p+´( ½Æ+¬èŽâ––Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š+‰‰$i0ryÍp(¿|×rÜÖ›§Ê¬¸ÑŒ+@ìjÄT¨ v4¤âÜÆ£€À“ýêWâßbŒzúÑ))oµF9Îj¤±‡ffè{UW\’ÕD«Ï­ `Èá•Æ†§­«+äƒÍXŽÕ— œc¦jíµª¾In8ÅZµµY2IêÜU»[T ³ â¨éo&­»>ÀÓtKF—V‰¿óô?ZF´wÕÏD$šëÎ3]‰ë]IëIIIEQEQEQEQE´QERQEQEQEQEQERÑE%RÑE%QEQEs[’2«ÁòkŒ ¨@À=k—.±•qëPM|‘¶/´ôþÿרÚåW‰`AQ› ¥AÉöíR\ÎÁ/*Ãpöéå?*¯N¹§]Iªy\fŸ(Ti—÷hÙ w4èScH¿*ŸsÚlÈEùS“î{RµÊ]4®ŸxœnqJÓ Ë•ûÄñì)Í2˼¯RzRùͰNBç•{F¤/nvŽ2=*ׇã o=ëœ'A[ƒe´—mÖS…úV– ŽÔÜ9ù¥þU³ôôÎkk¶kSÜQEQEQEQEQEQEQEQEQEQEQE-QE”QERÑE%QEQEs3 9#©j޵ÅJœ±Ï¹I‘›rɪbÑšAæ|©ïP a»…¨¼ƒæü.*ÐB9 qJ˜ì^?J”§šÝz ©y6ãå' :Ô¿;AU瓟,v§ØiHù_z}° °ÊõÅKj<µÞFTsQIw$æLaW°þíG$ììÝ—°¨d¥Æ°®“APÚ4*ÜZìteÛ¤[)ÁŸÖº­0ĶÜü5£Œ`ݪïJµEQEQEQEQEQEQEQEQEQEQEQEQEQE´QIEQEQXk36Nà{W" ±fΜ×2¬»˜žµ€™0ã‘Ðg­@ù/ó{ Ô.s&&˜óCŸ,Ó4$yÚ8oZw˜‡äõÙù—»1íLh K»³µ·-.¾(–걡8ÿ[«œŒârUbЦ£ý˜ŽY€ )ŒrÍŠ®‰º,cæc]f”[¬=|¡ÁõÝ[ Ž$ˆõ`Ò»H’?î ¤þz¥©(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¥¢Šæ.$*v*î8é\TŽGÊN:W&ùÎÕëéRìýÙ`N@ç=ªB˜Œ·#š‘£Û8þŠÄ”fÈõük9ÆXã®k8îb}{Vº?ÙãV<9]£=‰ëWÕü¨Õ‡Þ#úVŠ¿–ŠsŒŒj ¨UÂŒà/'Þ¢–0Ê q޾õ‘«ýj¬…Jì^J¶2fˆ/_3£L@½C`WE§eY˜í‘›¶+¶‹å`É?{5ÕB¢ì\îûÄÖ¥KSQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEcÇh–°™È¸Ï#…ã\è²[+1s;6A’àñ¬Cj¶v¢i?<öNÚïí²*ä1àV|SùÎÊñTcŸÎfP2 éPGdO:B2IQëQ-¾ÇóeIùj4¶òÏšüŒð*d’æ@ ¨äv€ì: ŠifP£T‚e}ê‡ùR«† áTÔªû‘†z)ª@ü‡ýàj(¡=œÖ …°êO@Ãù×_i G‰–M¾h)èk¼@  ÷ÀþUØ¢*üÁ±œqW)ôúJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢²uòóéñK,§“B+ÄdÜiöóCÊÈ„V>¾[8š>W¾>•¤«$¬äà Ï=ý«OÊJ\œî{ûVE–är瀣½Xk”. ö9Í=¦W*=K$ªìžGr‚8ýáž)³ çƒÍ6D 0ïQAËF'†”à{ b!Kn~ô‡¥"Dzן¼çôªòŶƒ©ïPºíN:Õw]±Œuõ­½>çÉ´´šb nJœÿ ®¶ÆõcÓme˜‚`“úWMgs¶ÒÞI0UÆr‡µm«@Àä•¥@9È#"¯ƒäZZ(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¬“!‰®L\…¹‘pbŒF´@𦰞VD Õ=*ŒÄ˺@¡ªs“)g #€*”¿½°{Uà“i` ÛÍUH˜‚pN:Ô 2nì*ÔûB$Gø†G\ žllU'–þSÉ€ª¿Ä{Tl®ÒžsÓ>Þ• Ïš–F”±û´Çq×úÒ“ŠG\‚ U‘äò„[ÈU<­5§‘ H áPü¾Ù¨Úi^8à.@FÀöÍvV RÎ%<áG5ÛÙ.ÛHœíP3]}¸Ûo“’sSÔÕ%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQX—/ºVe?.ãŒW!3î•黊ç'c» ñTÚgmÈëP™[v3UÌ„¶*h]Œ‡å@ÏÖ¥‰‰b1…Æ~´èY„Œù@ÍW+ó—|Ç€=ª¹rÏ߀(Û–.ÜÀ¥mÛèæbM)Î{üÄÒ³`zóU;‡äãòlâ«ÌÜûn¨b"{ Â–íV,-–êéKœ o˜RÙB“Ü¡s€:í­ÀX€\èk´U ¡WÚºåP8*JZZ(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+ õ‘by®6f_-vr1Ò¹›–T/&¤ÓôÍËçN -÷EhiÚC2y³);º ·c¦–ŒI*œ·J[±¸š!ƒ/ÊFðçš/ÒÚÙ'ˆs>åÆAÞ‹¥‚Ý%ÍÈÁöïY³\„¯QúVT’ñ‘YÒK‘‘ô¨"f’ß9À\~<ÔjKEœð1QÒĤéQ²ð7ç ÃŽ2úÔ’c…ÎO¥Zðåzfq˜âãñ­Ÿ [4“Irßq8ýªÑðå±ižv"ð>µÕôéùWK]ò¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠÌ´·InÃ1Ï•Ñ} sÚ-œrÝïa¸D:{ÖF›j’\o˜'ozŸQ¿ɶ2­)íž•£ªêKj…"eiÛ· «ZŽ ¶é²6S+qJÄ(J³ZBrX÷=ëœo !bdc’}k@\3’wžIªL²Kò¯ÝXÕP! p£©ªÞ[HØ(êjP¡#p»w4âLùÔ›B¯Uå?:íõŸœb«3fQ[¾Vr¹å]Íu~]ºP?ÞvþuÒø}Jé Ÿâc[U«ZTQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-VS»ÚYÞ¼| Ëùc5ÏÚÎöºuóFxªO§jÇŠf¶ÓîÙ>ðPÊ~µÌF^Y7KϽsÊÏ#n$–'$Ö ló>âÄ’ZÕb„ p99«ÛLq€Äp=jþ@ 9ªR΄1ªÒ>«ñjTpNÕêF 9'jõ=j@@KuS´f£n2MWrIí]‡\6œŠ `¸ç½uú S¥Dg5Ôȩ̀M‹fÇ5«ZvŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+&åå]Ìœ’§ÜW&f–<”9Ý•#Ûμ²Fœs‘ƒô¬Ølö7ʸç<ñUc·ÚãŒ犭HÂàç4éØyèžû›ëK+bESÛ“JÄ«míƒYˆ§‚£,rçTÔ<OOΩª1o”|ÄàUˆU-˜‚û§ÆN;TÊ‚s&2qÚ§@änÌMS”îbAœÕv$œzUGb̓]'†à1Ú;³ ÈĨÏjë|9 熑¾û£ÐWS ÀÑiÀ¹áŽ@­_93ÉàV§š¸$œc½_óSÒ {øÕö§&«I¨D®NNj&º]áA­!Þ¡ºf­)  ŽüÔàåA§`Òã4cÚ’Š(¢Š(¢Š(¢Š(íEQEQEQEQEQEQEQEQEQEQE`_HbQƒ@+Œ™Š/¡é\½ÃÔsŒÖp¼•f› Õu¸Hy6®¢×3SŽy úQ@Ï~¾”P)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š+Ôr΄œŒšàîI,9Ï5Ç\åœsIh¿?BGp;ÒÀ9ädzQ úÑ3ŽIÆ#‘´“Ç §; ¤ú”‡ä¶,x<~£4²2OZyp–=sTЖ—w§59lž•Ur\“Ò¤·‚K©ÄqŒ–<û ±ce%ìêˆ23ó–ÎÒKÉ ùˆ×aek¬1¢®ší­¡[xR5Ú0MvD°Ä¨«Œ «5-IEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÌ\(ÄžsÒ¸yí'¾zW%(^Npj½·Ë'î™ >”ØÆâ¨ï[Ì—ÉAÉÇçMœ—"õ4Éòî#Z|±“¡`00I=Î)Î>P2= I*ä*“À¨Ú/™bFæô¤Žšd†1ó7zbÂÓL° å»Jé4­5l—$HÉ5ÙiÖ1ØÂÎ>cï]E…ŒvQmQÉ$Ö…Z«4QEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQEQEQEr®$cf f¸v—Þ¹¾1ß4ÆÕòÍ÷¾€ÒòW–ïô¥)ä®z‘Q†ÝºLŽôÍÙø¦îÊ—À¨ã”’䎠ri¡þöyôÍ1d 15­áë?2G¼“•蕽á›.^îAœð•¯áëC‡»“’Ü%oóŠè mšZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¹K‰V|¸ë\4¬# '-\“ºÇ÷~õ6v2ÀHÏïPr>´ŽÛ£ã'x"‰2ñp8`9¨ü±±cè'Þ“gzRùvôÍF#i8Sï9¯4ëH ÷PÂ:³~˜¢ ÷1D:5tºU¼ö–ë(Ùšìí!0@‘àmº‹Hš2hTÕ5QEQEQEQEQEQEQEQEQEQEQEQEQERÑE%QEQEQEW+3ÈJŒ±ÕD1œçÚ¨mí‚Ã%Æ~™¤±ßÛßzE~4¶a~ßn»º¸~5ؽ´N‹'ʼ+·eS€GÖ²©ÆG Ò¥à )}»QǦQEQEQEQEQEQEQEQEQEQEQE`g sEQEQEQEQEQEQEQEqSÝHÄŒô⸠%bpOŠâe™ØàžIa»{ ’NiÐg'ÜS­™·ÏQT¶•›?Ý$ŠŠ71N²/UlŠŠ#å],ŸÝl×og”øÈyaÈÏÌ)èË!pȺ?ÃåØo½+"»2&ן¼í¸ÓúWS¦Fc³BÃæs¸zÑ`Û~^*Ö9â­})Y”0ÉqãÞ—>´tëKEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWÿÙÿØÿÀððÿÚ ?èë¢®ŠŠ(¤¢ŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¢Š)h¢Š(¤¢Š(¢–Š(¢Š(¢Š(¢Š)(¢–Š)(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢Š(¢Š(¤¢Žô´QIE´QEQE”QKEQEQIEQEQERÑEQEQEQEQEQEQEQERQE-QEQEQIEQEQERÑEQEQE”QKE”QKE”QKE”QERÑE%QEQE-QE”QKE”QEQEQEQKEQE%RÑEQIE´QEQEQEQIE´QERQE-QEQEQEQEQEQIEQEQKE”QEQEQEQEQE´QIE´QIEQEQERÑE%RÑEQIE´QERQE-RQE-RQEQERÑE%QE´QIEQEQEQEQEQEQEQEQEQEQEQERÑE%QEQE-RQEQEQEQEQERÑE%QEt¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š;QEQE-RQEQEQEQEQES#’ òy¤Ï=){Ž)ô´´QEQEQEQEQEQE´QERQE-RQEQEQEQE-RQE-RQEQEQEQEQEQEHç9¢ÓúÑEQEQEQEQEQEQEQEQEQEQEQEQEQEQKE”QEQEQEQKE”QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERÑE%QE¨¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š)(¢–Š)(¢Š(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢–Š)(¢–Š)(¢–Š)(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š(¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢Š(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š)h¢’Š)h¢’Š)h¢’Š)h¢Š(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š)h¢Š(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š)(¢Š(£·4QEQEQEQKE”QEQEQE-QE”QERÑEQIEQEQERÑE%QEQEQERÑE%QEQEQEQE´QIEQEQEQEQEQEQEQE-RQEQERÑE%QEQEQEQEQEQKE”QEQEQEQKE”QEQEQEQEQEQEQEQE´QIEQEQKE”QKE”QEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQEQEQKE”QEQEQE-RQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQKEQE%QEQE-RQE-RQEQERÑEQERQEQEQEQEQKE”QEQEQE-RQEQEQEQEQEQEQE-RQEQERÑE%QEQE-RQEQEQEQEQEQEQEQEQEQEQKE”QEQE´QIEQE-RQEQEQEQE-RQEQKE”QEQEQEQERÑE%QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEQEQE´QIE´QIEQEQERÑE%QE´QIE´QIEQEQEQEQEQEQEQEQEQEQEQEQEQEQERÑE%QEQEQERÑE%QEQEQERÑE%WÿÙÿØÿÀððÿÚ ?èë¢®Š’Š)h¢Š(¤¢ŠZ(¢Š)Vœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÊŽ£¤¢ŠZ(¢Š)(¢––ŠJJ)ËNZr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE2£¨è¢Š(¢Š(¢Š(¢ŠJ(§-9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*:Ž£¢Š(¢Š(¢–Š(¢ŠJ(§-9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*:Ž£¥¢Š(¢Š(¢Š(¢Š(¢•iËN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¨ê:Ž–Š)(¢Š(¥¢Š(¢Š(¥Zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGKE”QERÑE%RÑE*÷§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQÔtQEQKEQEQIEå§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEVC9—æÚ#ºµD7dçíQ Ù9ªZZZ(¢Š(¢Š(¢Š(¢œ½éËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQÔu-RQE-RQEQES–œ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQÒÑE%QEQEQES—½9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*:Ž£¢Š(¢Š(¢Š(¢Š(¢Šr÷§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQÔtQEQEQEQEQN^ôåïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¨ê:ŽŠ(¢Š(¢ŠZ(¤¢Š(¢œ½éËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQL¨ê:J(¢Š(¢Š(¢–Š)(¢œ½éËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQÔuQERÑEQEQE«Þœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQÑEQEQKE”QES—½9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*:Ž£¢Žý(ïEQE´QERQE9{Ó—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢£¨ê:(¢Š(¢Š)h¢’Š)h¢•{Ó—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢£¨ê:(¢Š(¢Š)h¢’ŠZ"+&ösÇEŠj®$“íH952žµ"ž´õïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠŽ£¨è¢Š(¢Š(¢Š(¢Š(¢œ½éËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQÔuQEQEQEQES—½9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*:Ž£¢Š(¢ŠZ(¢Š)(¢–Š)W½9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*:Ž£¥¢ŠJ(¢Š(¢Š(¢Š(§/zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:Ž’Š(¢Š(¢Š(¥¢ŠJ(§/zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETuGKE”QEQEQEQN^ôåïN^ôêu:Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¨ê:ŽŠ(¢Š(¢ŠZ(¤¢Š(¢œ½éËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQÔuQEQEQEQES—½9{Ó—½:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*:Ž£¢Š(¢Š(¢Š(¢Š(¢ŠrÓ—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢£¨ê:(¢Š(¢Š(¢Š(¢Š(§/zr÷§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWÿÙÿØÿÀððÿÚ ?èë¢®Š’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢Š(¢’Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢—ÒŒJ\J0}(Áô4`úQƒéKƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥4`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”ú}>Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯ÿÙÿØÿÀððÿÚ ?è«¢®ŠŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ƒA¢@ QEQE-RQEQEQEQE-RQEQEQEQEQEQEQEQEQE¸>”¸>”¸>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>ŸO¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+ÿÙÿØÿÀððÿÚ ?è«¢®ŠŠ(¢Š(¢ŠB7.Ò3MuW]­È¤ ót¨K^í+ÍdÜÁæê"p»rsÒ¨Mû™}ÜdÕt9ˆ‚ĉzâ²Óîýìøª zàãa©Ø‚"›žx'Ú´¶¦Û{œ0öjþÕýÔ 7SKp¡Y% xýEM£Ç298?ÃéOº@ ȇ5îp pz­QI BN‡ªÕi¹†žå¶²ƒ0y«¿ÈtS¼óR¶ï!”;ÖdÓù 98àVcËå”öâ¨<…ÅTŽæWs– ŽõÍ#¹ÉÆ;Ô),ŒÆ®Ä¥Â–csœÕ¨Ô±‰Èç5e$Oñ8G!O>´ñ8V!OãNó‚“¶³®§`ÞMRžR9ÆMSžSsKmpÊB7Íü¡bh·˜®¹FãqíO‚V_”ò§¹«- .=ÔÎá›®@â¤/¹½…J¤qޤR+ Ýqœ ÔŠÀïOaæ`õÛÖ¦ÞO!{T–ç9ÅCžãîöõXu ;t=}ø©Êâ1ë“øU’˜…NyïíS¶5õôà‚§#§§9Å=xç5GP¸0¡1ŸŸîéþqT/&Û’‡àUÉŠd¯^•›oÆ£t‘Ì É5VÒ¯î’.XžOÒªÙÃ-õÊ©$É­…„Á/#m#Úµo) 0pTlÖ§”b˜9}9©§Æ#*GÉÖª]ÉÒ•}*…Ü™Gû¿J§;œ—ƺ{ÖLy\¶NsßÒ³ò>ï9ïÞ³•Ëvç5y‘8ä ж¬Á2ÇÅ[íÉãŒTë4HÊB«g©ëŠ’9#F( õ&žŽŠGƒÖ¡åf;AhØ’§=ª1 YxFänÔÁW#ªžsM˜ÛsÐ?½MLÅ$€J3¸ ñÇ"Í´f‘ŽâTf¬CŸö?-Yˆ{t©×ˆyíÒŸ ±ŒŒpsøRŃ2À?¥:,TvÆiÒs"¸ qõ§Ê?z¬F6>´²¬RFw§¸xýiIÊ€;ãùÒçvÐ;Ó°C'€ÙëëNU!‰cµ*‚¬Xž7Ss† :n<Ôa€`Øã=iÁǵ,îûWq'ž‚…,îáWqn™è)¨Y™” äþTy°¨ò¢bXq8Í#_ƨ[°r®­Én•¢yp¸ä³go“ ©,MY–P:óI+]ÙÁ=1Óÿ×D‡j“е$µyïU ›Ü*.çAªÅ„…]Íß5!›2iÌÎd%œÈ8ž•"çΆ˜É÷GqR!>|Q8,wäé]uµ¿EQEQEQMó?{å…=3º¢óÔܘœ’˜%V‹âª\ºÊãÚœzÖN©"ÝM˜Ã²ÇÁw¬ûö• ÁxÅF¶ìçæÝMÁÏÞ?áT¢ÓÙ™Z_ÝÄOâj¬vLî ™D>½êÔî!¶%OÊ Ík^Ì-ô¶NÐÁ>Õ¥y(†ÈíéÀQíQC½Ósd"ýÐ*¢Í,{؃n²H›ÜaGAJF'ñð=ÆsOeب„eòpiì6…dæ”Îf# ¼OܲJnaW…”ì†ÊÝQ#wPUzëM¹*`2º®ÑÀç4ÙʘK²èk<”’=r;ÖxÚ9¼U1üé¾rçæÂCÞ“Íø”ž`úR™†äŠVt+ÁÎ)K©^j e9¦FîãøEDÎÅ‚.AõôbÎ:i nv Æ­#ÆÐɆbzÒhÛ–?J²};Šš>ä ‘=@掅Æz¦i­ü`ž«šã<ã4ûd.ÊßÝ©lÕ¤tb2%º—pHÈ«²*"1cµTu=´ç‰#‰‰8u=ªì¨©,p1Ö©ZºKP–ž{Ve»$ˆ@9óT +" tçšsä$ž§'õ¥9 ý‰?ÖŒáO©5¥2Çg '’À­³*ÙH§©u+ùR^Ê«lËßwOGAö‡n0‘Œÿ¼MTÓy’?DªÚrŒÈÝ•jîó3 Œ'ð«>aŽF#;‚œU‚ûý…@·u ƒç×ëP,»˜dtõ¨wï~F~µ4b%fb‡!F¤£‚ÃŒŠ‘ )c´ƒëCÀ–×)xÙ— 3ÑÍHØÌ·¸óŒ.OF§álå-—lqéšÛ®ž¶è¢Š(¢Š(¢Š)é銥'îîÏ~µ]¾YÕ±ÿ×§… y5lD‰œ(Álš˜"¯E<Ô(‡Q÷N1U5q‘Ý<­Aw:óƒÈ¨$a3F™ù>ñ5•<¿hx¡-ˆÁÜO¦jŒ² ¥Ž2p£šœ±ÞT©È<{Õõ“b`x'm[W<¡íÒ›pY#SŽC‘ô¦j,Ñ[£È`w~ÛÒc‰[Í2θr7pj­žé€FÆ[œõ°2§’yæ›2³Bñ©Ú¥¼FhŒ$ÿªì;SîÃ4e û«>b«lŸ›n@ý+2LÏ$Up±õæª<â Œ’{{T!P d“Ò¡}—–ã9=)Ðçç$œ“ÒSéJœn4¡¤k§1¾ÜŽôèšA;`)Ñ3ù­´HùiÌ™ffp~cž”’’e/¹‹3gæ>”ŽI¶I$Š»Œa¥Xh >µ`qòŠlŒÈÞªþ<Ò9ÂHO÷@¦¹Â±ï€*k€¹éÖ­iÃn3õ«6_(ÒëÌ’Ã?}Æ1Sx€ÒO?ëcºÑǃÌ*¾šÀÛ.o$}k>Àƒ©dsãb¬àd/j°@$/jœòÀUKèd˜Ðd¯AUnáiqŒ°è*½Ôm) :Ñc:0ù݇ëU0C,d|îÀN¶O&“Í1Vp:Šl¬UÛqŠd¬C튧¹Ó8ä€j°fCô  ÊMi"~íYyÀïWD"°=z¶±ü€öÅY†4 «/Ê®Z¹k L0ë”WÈZ·m0ÆU[Z»ZTQEQEQEÇBÜ~9¨'€ÊÀƒ’j)".@éÞžG^ýªr==:Ôž´ÉOËë’* ·Ûå˜~5íòªÿxÕ+¨»yé÷JüËïXº¥§Ùd#|®9•™oöyD©ÐÔÛƒ0†F ŸCO‚A3¬9«T‘¿šÞ[œ62 FL£0¶JƒØ¦Ló•û<„˜ÁÉlSdiXy2d(=j#$bäF²e±ò6qõ¦)íA#s•c­1>Ð7 |§¥X‘@!0~éÉ=ÿ»p P1…;r~µjeÇAŽsX—Lû‘ò˜ÈÎ3ÍbN[*OÝ+Œâ²å'‚zÀ¢Ú•I9@;ô¢Ú@Iߦh‰K®îGõ©aA»ç'­IvÇÖŸã¥WxÑ.ºrÝ ¨v*JÄ®I¨¶ªHÄŒ“SBŒv»•WR*³6ì}ÞH€–Î:T²¹V*=>cRHÛXéÍ9ÉV"£¸‘V5RNqž*9œ OlÓ%pç«vw ,g¤€—¨#ÔUÛ’Hø\‘ê*夋"dpA_Zf¬|Û¸-Âåd¯½ÌžuÌ0/1Æ2E3Ro6â8€Ê¨éNB£nããÛŸÿUEnWÏÐ{sM€‡ŽzSÎ{qîjVqǹ§‘éúÓ|ç<ç5>càƒÁ¦ó½Ï½$3;F'ò¤C¹Ù¹àä‘y.ÞšŒ rÙ8V=j0›É'£ÔMü“Ó­Wû<›²‚qøT^KÀàÔK ãŒÖ„Q» òâô«‰ÉÀ?(ãw¥[Dv\gåõô«+¨R“‘žõ5z;eŽ5hçÀ#;çÖ­ˆDi•—¨éW+^¯ÑEQEQEQE´QP\1kG(¿0=?£.ûh׿FéUï6¥×ªµD·-:´oÜõ¬éµ»¢x”drqT¥½3®Íƒ8êEE.ó"ºÿ Ò©ïqrŽ;7òªªÌ.‘½©%`ºŠ¹8P™qZ7²©¿Ÿ»åüëV®$m.N'"²l_íZ©|eA, dØ“6¡¸ €IíTlÉ–ô8ŠÙrC|ØÈá—Ú·$'8aÛ µ¬Ç'æêFUF€G0Mü`0öª l"›Ë/òãw=ª¡€$›Ià ƒU/gcªJ£¹÷ª·S£*Gz¯q)Îùs€zj†ÜŒ!ô¦€AV ´úP3@ÚjblãéRcqäSІê)è2„ó’GåO[‡péOLylzÕcó1áj€òHõ5 ä‘UæU1†ß—y1j…S»,ÍŒTL€ª’Ùf8©Ó÷W* ã†¦LÅ:€qô52f9ÔŠÒ ¸î nÛÔÖŠ®ü±ã©«€nËwÇZ„—=ýý*ºŒ öÎ* 0)O žÙ4#ÉàRŸº)6üÏéŠP¿3zsHKSó"ãâ¢\|ê9ÝÅ1:ºöcŠs. zm¤eÁ`G'iÌÈ#“Ò¡šõ!“aRî:â¡–ícl`¹éPÉt¨ØÆ[¥Y±O–‰Ž} Odþa&&À=½ê{G2dÆzö÷§Àï¶(QŒc­Ií³3•F0E>Å]˜€cšÒ®†µ¨¢Š(¢Š(¢Š(¢Š(¢¡Ì9#î1çýšÍÔ‰·$õrŸöj¥ÙòÈü×Ú¢s¶FQ‘¸§›:ys²œ€ÀqTd_.b¿ˆ¦²æPê…ÕÎ Å,Pæs2ÆdŽ1ó€qztQ7Í Z4ãŠtê¿fžu¼yöíW.£Qi5¾™öÏ5ÌAme˜Y0=«Gy|’àÆÒc ı’üë;KL¹ÏBy­Ùʤ¬}[·¬©;:(µ®v¬„õ ©9çsdœVuÁù·6I"©Ì~mÇ95œÄ¸?1è?¤Äüª ÜOUG'*£ïžÔä“np‡#‚­86Þ£ž„586rzÕ¤ ¤`JcŒv©â ;ä¦8"¦gn˜â˜œ3/5HÇbËÍ38Å5rGÒ€:âŒqÅRvÄJòÁ¶5VAµr0NyZO”duÏ5=ª—”98Ç­K³J¥&¤„”ÖµæFΜֵn‰èr>¼Ö‚ÿ«9éQ71ØñP¹ÚSô¨œíaFÏÔ@9?•&0„Ô‘íuMÄíç¦Æ¢dñš•yUÏL|ÔȈó~p1º£·`gºÇøS!#ÍôÜqS\¶éC’ê±xá¤Ãu>í†íã°¬M£kÜ0ûìO^•‘´2â<{VnЩ½»œóÚ®éä C©ùr3Ú¬Ù²«ƒòäf¬Ú²+òæ´¶àºùìæ´Bcxòç,äÕå\Së’M_­êÓ¢Š(¢Š(¢Š(¢Š(£ëEW¼ÂWoLzÖ6£9šF^6`+>îRîF2´Þ'‡æ;Y[h#µ U½µþF ´ü?Z@¿j€18e8£—r6Æ;]‡oâZo:ÙÌLÅK®8è¡vxÄN7Žƒ½K*‡Ž3žÅ[¸e–Þ.0G©©çØ<ŠÎÒãhžêÖA°+‡U :&W–ùUp>‚ªX#xßå Ù´$Ìòaqµ7UùY®gÀÆÈÆ7 ¹!3ÊN~UïU]„“1(8õUÛ̕اE÷ªì|É玂³§™WQSÕbN}Ïz£$©èn«óîj£L‰t²/4Šÿhš[’1¡œË,“c x¤Þdg“)©¼ÝÀ§:w˜Xlèüéûò=(—Pœ¾{R§/š™°ŽÿÎ¥ ‘ï×ëO< Ô /7œÈÁ½3Ö£)—Íd98ã4Ï-7ù˜!½=jXAYC÷É'øò’?{®)PmmßŃÅ^¶P°îþèëZ6±ì·Ï]«ŒþµzÄ;»¨;¸ëT߯qš¬Ü°§ÏQåNl9çåN|ïQ&vÜsõíQÅ»Ë=†9úö¦(ýÙ÷BtÞ1MùA!:nâ“ 1Ç÷©ù³•ˆ;ɧ7!³YÍlûð±’€ðAìzU&…÷}ÂW=S0Àm$Ú¬…1…ˆœ0äŸJ‘ÁŒ,_Ä98íR°òÈ£M_/)…\È”‚Úà @Ç!£É›æTœîšÉ˜y2uîšì—*Oú<½Gðo‘6ÕIÿ|š‘a“‘å?ýòjE¶¸ç0Kÿ|QÄÝ?ýòi|™J'îß$ÿtñõ§­¤ãËo&Lç¦ÃúÓÖ Cå?ýòj¶®¥&&å‰iÅV’Êé®e& 9nCЬö×y’üžÓV£·p‰/–r½\ŠÊU‚9Ì-½åžÓš¸–Α¤†2HþV•oÖ­QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ_ÿÙÿØÿÀððÿÚ ?ÒºS F”ü¬ûX~«7Ñ´‹³¶T¾Ò½;V•ÌeÌrJr Š˜ªnòÆÍŸÂÍ,É“ËB›ÜQÔð3D‹6ÀALaEFcòâ%UW$ãž;UYB±Âvá2NnÀÔ2űN>\æš ÎçÉXé€*4I/g>HØã LHÚî_“ aRH„–$*ÄÝMYšsÂ¥€[½O$^Zì‘AV f‘cHÙÕ@Lv¦F‘Ã,†5Q©±ª$±F›w‰Y0NÕëíQj ge#8_Ò£½&R¸û£­¸Œ²~lu'ÿ­L·”BÄ'Ù{Ó`”DHÚ~‚ží%ÁŽ5?0ÎãØU©]BhãÈFXŽƒÿ¯V½äª¹ÀQóJK‡*Fr#ïëLÔåW) '1Ä1õ5ü¡Ê¢}Ôà{ÒªHÊíªW9ªþT‚0Ŷ¹¨¼¶Už´¶äo)ÊÿÆCïV4ýï!‚/”°ÃƒÐûÔöD»Ðàw¥ ¦N„à‚z”S.‘cžâ.AÎAíÒ£@’húÓbx~}qPFB8ÝÛš†2#pQÍ$ÎÂÛ>iåÀ™ÏøU¹ähô ËÝJzzVnX¦žªÍ;çè(Ð0‚5öòÇÒ¡ŽhÖo‚äîÞ€¨–uòżxÎö?Ò‘Ž Á'ã¡‘Ï” “Áà Ši3ž)ÀŽ(‘¾DP\“S͉-aXËâQæ7¹*yÈxcÙ“œúXò?Ò!!×Hþõ-²˜Á¹LO¨ÇøÕYU*ˆ'Ôþ5Q†VPœçéÅ9ÐMTrŸ+ïT“"][£Ä»^!µÿÚ©f q Ê‹´ÆozSpYs“†ü{Óv *Hc†ùÓC÷äb+e•#¯¥,òa1*1Ï¥¹fü¨ïN ªcŒnàT±’#H÷ »²¢¥Œ¶ þ.)HÙ36FXdj²Èmçr®°$ý1S0ò¤|äþUVùÚCäF¤`[zU}Záæ?f‰ ¨`çO_Q•¤o%W$Ò€Ðm‹æ'$Ÿá¦‚«`¸‹çÏ,†”¶ªU>`y>Ô²Œí d¨Èô¦O’´aÔH}©%C‘#&W4…#/kÁ/´Ð’B¢[S‚_ íLÚñªÉoÇ<Šs<’ÄÈŒŒG^ƒÖ¥y&¹+4Œzž€w©åšÇ’i‘–‚Kø¨­C`ÙlÏŠŽÜ2–– ×ÚžíŠAçmbrxç•,Ï[H¾qÜHã¥I+ÂaeW;³Óë,·-Éþõ-„q»Äp~j[8ÐðqøÓ×1‡í銳û)wm¸`pL¹€98äqЧ,¬s³| ZË‘ÞYKª1íÖ¨H^i„q§Š±sp˜Jä"ÄúŸJ±©O¶U·ÙÄQª®*[ûŒÌa €€}i‚¼„ïÉàwô¨âÿFU‘‰ß“€´Ô"Ý–ô¥RÄHÛø‰éQïvWb§æ=IéLÜÅX‘Áîiv™œ¹R#AÛ5"BÓ˜ŒF˜ž±3†•º I˜ÑóGó~t·R™RÀæ"X~4\Iæ´(?å™4ß/7_ ù˜žoΘ¶­$å‘B¢™‰éMKf’VeùTu49%NÓò¡ëPË󺧨eËd¯@qšBvÚJ£ï3~ŸäSÖcŸ4 d»†?AN•°xGRàÕ*_%<²¹%qÔV”z|¦Ö6ŠUfÚ 'µh‹&1)I ­5¶­Ñˆñæ'þ#PK‘w$, ùˆvçøŽ*O.g‰†ÝëÅ6BRÁ¤ô&,¾^†ñ/Rà~­-ÃíÒJ¼X)¤‡>tˆÆqÿŽš­¦ø™[äÿ?JƒLãQ‹'×ÿA¦Î6É:`s’?šMF! íÄ`p[#ñæ™{[™cQÔñO'ÉŠN7ÜIfX-m¡oÙ½‰ü±V'qqF8`»ãM>\¬¼¸úUx܈e ýåÁ]XˆdÇzX"Œ)`ÎìvRÚKVŒ›·M+p£µKm*GjÒ?¥ ÌB0À sQÅF]²¬§·5b8ãf¤‘zÊ@þu; ʱmÈyÕ9AÄîR3K0 ´¡Ú9Één‘chÙNÄ#‚=;Ñp»HàÚ‡U ìá€ÚO¨§¾&ÜPaÕ6·¾9?¥9ˆ—s(ù€çÜUgÜù®ÃkáZŽï|—Fga‡àéLŸsOæ>n§3îó»1Öš]Õ>BséŽÔ…œ/Ƚj@w[¦åeW  «û·Ù'™*ºžªÙlÛ.áÁ⡈Qq´07¾"ªÁ†„Ê¡qŸ07á‚*Hhˆ|Ç 4ômÙT' N1Þ¦€ïRˆ~é#Žõ,Gzàtéõ§ÁlT7Q½†qOµ±![v@‘8§Am„$ð¨‰mågŽW€iRÞÖ]â!‚½ /»`)îBâÏ\S%ÄP7‚9Å6O."¾ óQ‰byI$œ|ËÇEs ²’Ç8ù‡QÑ»Ç8éž•!¸@ØŽ¿®*qw M˜-‡™Ü…©EÄhߺˆnîqPù^c½ÌÄc QTžÛÏ•îî?‹¢ŠªÐyŽ×㞧Ί±|îÜç=éo¡Ž 42¬ÎÙ÷Æ)obX ‘¼œàúT-;ýœ¤À1 ò•ãŒV|—í|·@\ ñÅQ’ã}¶Ö_˜ô©#i!ÓÚW%ØôÉè§}çs¹äû öâ´#FƒJÜÇ,àcÚ¨Ír¶ƒ‚ɬ£ γËá±Þ¥Óßp¹VÏÖ¥‚b!ž6$eÁoz’9³©ž¯š°€™T2È~aéIù“»!¥$+¾eG+MwÈáþPßoéIqÙäÄ€}i³¡¾:7CM·W‚eeù‹|›}ªm9ä¶¹IîÞpWÚ¦°g‚t+–ßÁnî<,¸ù€Ü‡Þ¶õKtº³u8óoO\ŽkNþžÝ¸ùÔn_ Ϛ¡³Ã¨>½k¤2(=™psê+)Ûzƒ×#‘ô¤ådŽAÿ=vš-Ë»‚\p$ÁúRY°Žê= N($¾‘]‡q튵p‹&¯0•†ÐØ?Lf§u ¨Ê]¸Šc~þwr0ŸéU'Üܼ‡ ásè*¼çNòzp)²ºà"¨½{Ô20bW¿Z‰›q¼ÔÈZ"¢ŸâÛÏÿª­Ç$–¨T\Ž»rjÒ»Û áW#°æ¢”ÃÜnªÈX¸Ëuå‹~õ$yÜ dy}úŸJ³±”þë¡8ê}*Ô*N?»<I O- ÆÞi.ÀYÌhN¦\ŒMå©éOBÈò¿ÕbÄ:K;pŒÒ§´Zlóò“ùñLžbÛ¶)8ÕbîãÌfòâ*¸TóK½¾D /b(~c…P€_«RÝ"l·H°Có5*â7$Ód`‘G lr}ª™¼¸#…›æ#ŸqQÏ.È–2yÇéQ¬F•j1ê{Ôöïtʈ6#òXÔPÂÓ¶Ú‡½O4Lj‘wa¹Ç­\ºžÞ7[h¶Öùˆõ«Ku†%ݵ¹Ç­%ÕÊEÔǘàëN¿¾H „eéÞ–îí#Œ(#qZ®an’Eò©?1ÏÿHku’• ùˆêj§ïŒJðð½ÈëD,Û³–b;“ŸÂ™rÙbÌ}ù¦ÆX±'$ûÕ•8ÀrÎ1W£>Y]©’1VÑvðØÅ&öŽ6e`ìÝ@è)ZGŠ6e!Ù¸ t;2Fq†-ÀÅKùQ~ª2*Ì{míi±¹GÞ§†Ý¥“ªŠ¨38ÜÇçcǵ`I#ܾù.ǯ¥b»½Ãîc—cÖ”#õ+Ñ@§¤,Ý:tõŸéÐTÍÈdo•qǯ£'ÛÇ+|‰…ÛøV„­•\áWµaÞ¨ŽY™‰ù*d\ª¤’±?uVTà#»g•LÝI$V€û=…Ñ!2!`»RqWCi3mL˜ÎÑš‰K*´“}çÈǦzU’Fg–bK>síéTœïi92v©¡ YP ÕûKHäµÜÞ„ÕØ-Ñ }ãQ‡1³Ç·øK£ŽV€Ë\¨]Çê:ScǾ¾”òX²2£nÔQüêIå*ÊSåÊáT:Y¤d §ËÆSmÊF¢C÷˜n–Ëx¼öPdeܹúÓmBÁ˜Ã’23PLÒà c öª› åɸ?{*¯–n® ³m©°meM®dFÎA=EZÓn£Q'› ŽÚa3epˆÍ¾6!XCœ*š²>Íç\*˜ëV‹Í`£µ,›7¼7ñ3t¢êH<ÆHñ‘ÎÔ“¼eЧn¥¨gL€¬NÖÉãƒPOsíXضÖÉ㊎[„V]‡;Nx¦Hd¸\1Ëš¯sq-Êmf òMW¸™î?JPžT»…Ï\…ALÇåS–éQC?Zˆ,eãh«þb‹sä€Äq·ÔUÓ eHàŠiÜr‘í,TcÛ=¨›,ÛkÎ}O¤”}ªAéóz{U{ÛTB•à?0þ*†îÝ$@6à å‡ñTw0#€ò½}êCÃ"(Ú1|óQ]ŸßQ·jõ¨nïŸi!2¬*8Á.jƺ[”„.c´‡ÛµO¦,¥1ò(Ë53 JNr7éÞª33ö\°iYOBOåOP­!eFŠcÐÍM [ä2 ÄH –=,IºF—Dç5,Ó"Y†?¼Ï ŽçµhÞÜÆºLlß9“;qWo&E±Mß1»Š‰U•Ður«“ïšÌHÈu^¬@Éõ9ª‡x®O¿zyÊɽ¸‡Ìr‡9ãÎþíÉS÷¸¦²ƒ†P7Ãíû;†P›vE T@U€ÜNx§!Ýä„R>~EZ³!ç¶„ù?‡zµlCMÕÚ äŠkóÊXü„€>£ÿÕPNë-ôÌ~ãIòûú~•0–îRÇågãð¢ào”©;€f?^ؤù˜úPÄœ/Þ'òå #1=9Ý‚jO%†L—ÇLqô­¬|°ZGû ~•z+_,vËz”ÉãŽ@L'dËócÔžÔ˸måVkgÙ:€Á?¼M6xb~`l:‘ëDÇÉ–$ã "»;Ôw*mnቈ ºÈÀ„Ó$EÜQd}àHsN”írHØŸ4žTå_c=©ìáeÝ…2äùR0ë¸Æ©ßü—*ƒÀöç5JôâfQÞ¤~ÍÁÌ’rO©«‹>ÉJ}û„<ûñý*éÿAµÚ£ç•sŸ|ÔvÑoHéò}ÍVÓ­MÄÄç ‹É÷ªö0yÎògå OgEY"LýÞy§™ÄI, ¸äfçlŽHWî°æ˜@óË÷>HÓúÔYó]W‚PlO§zfï5€ë·äU©ìŽÇcгt†{YS€ËÈï‘SÝ©‰!‘OPsíL,J2[#9ªG ƒ©ã5Q¸ zšLRJ´E!|àuÏ…·àp}…;sA<ÅP£,&¬®ø"ÿX«´|Àõ©ÀhcûÄCHË”BØØlŠŒ€;´Óq†FcòçD¥cdvÊ–;¶ŽÀT²*Ã,.q—ù¶ŽÂ¤`!•¹'œPË++M.TåWÛÔÔòÃ;À÷sp«†Töõ©¤Ž_)®$º¾Ô°ò»ä;ì…Ó-¤Y•Ûnî¦[¾ØÄŒps¢£Ožä08RNw5^#æß^˜£Ö ‡2]’Ë×++B¶á·Ÿ­Xœ,· ¼ýjiRÀZŽE)u\uêI©/# l²"c¯RjK¨ñd_ÄúÓÈd†8@Üìrw‚ 0ZÅmÈfÜ~å9Ï• pã$àœö¨Óç¸`Wwê*˜[¦\åwu*²©’v%z{S‚œm.©àÖ¬Gip¥OB:ÔÈ¿/-´ŽÔ óLO¶xõ±2y‹· §/“ß#—nÊ)†çÍb‰*@Ï<Ó./ÍÈhÒ±€'5×FpcX¾V÷¦ªIHÆ9wF5SÊ– Ìc”nèÝEA±ã |¶ô=iÐ#Ù‚¥ù'<õ¥·ˆ¼¾[ ¥ùoUémãÜûž\š•Ÿg(P8ÀÿëÔ— ˆP"ŽzY§±€Ô9pÀóHª¥šLòO<Ô ZCÜóÎ*xŠÇr|ø`NXqZho’܃È',=ºUÛ‚àCƒ’3’)ò1ùÆyQÆ?ЬÜÊŤ¼cÄjyœ³:÷8ÅG"¤l²K÷|¨;š­"Åip³ÊIdÁUÍBÁ-gó]‰`8ZljÏ$“¸Éãðôªñ™..êa’N~• å•®$ä“ùRÝÈ<ƒøsNÕ™^æI#?+c#Þ“Pa糩áJ'O2BÙãh5^Eó&Éà`u¨˜nœ¹ã‘DìÒ\•CÂŽ=¸©õ L÷…"û‘®Õе%ó´÷,±ýÔGà)ÖÇÊ´†o™ÏùÿõbÂ6iƒ“…-­MzÁR>ĸ´|@Qm!÷à};ÕÍd¨‚?]ÜT b5SÕ‡zÄ…^¤ÖXžM2BZY`“÷2>ñ¾[I3,|±?/¹§ݦ;9%¾Ozµq»bm`[p=ñ[¨òí¡pA|…p{‘×õ­=CÇ/' ôëQæ6>`~]½ª‰håq"Œn8ÛÚª ’¸ rÜbšª¦á!'q•¯èaW¿[bûŠ–R}p)`ŒIv"fÜFr}x©eFл¨Ü®<ñгrd%². ¸ 6޹©§.í‹ °¨â,+rÛŠÿéY°¶Ù6¿ÂjŒ-µŠ¿È4D6í ƒ‡ÿyj[\£&ުܚ–Û*TŠy4Ââ<œñŸûê¢yNòWûß™¨Ì¿1ÁïH]c?ËûØõ«&acv"3÷€æ¬BnW?)ëFå$ù2¬®ßÄçE‡gò¥Ë&f8Ú('q;;°À'ŒSœƒÊ–@8ã`ëõ4:ÏòeeSŽ6Ž´Œ“*ùnÊéŠUûZap’w¶qKÛ¶•Ixà“Ò• œ{sL‘¤¯åª;¼Ñ+È¢Žýi]ÙLe£PXô© ·|ÉžxíS¨ŽB|ÅÊg¨ªET`w¨Å.ø#V—ƒÂäâžd´p¯6ð“Å<¼*Vo¡¦É#³¹9e¨^Líp칆*•ܬer¼nãÒ£|ù<¥' Ë5Ckn÷’ùkœ¼}*+h^æM£!GSS-ÄHL0’»1·ï¾náE­¨ ©ä’æ®›ˆ•|‹q‚½xêiP,I7ÊIàÉ?…>2%ÅÐØ9* É'éN‰VÕijñÇõ Ê¨3Ò˜úi|üào˜nb{M1îÖ!»¥ϱ5 fÞß3“É=g‚óJdc½Øõôªc|Ò–™éVx…“×–5y™m`NY¹j¸Ì „!ïËUvä–#— …zýj‹œ¶OÞ'#ØU'<ç©'8§F2í+59ÅKmfi]ˆDª[ti\áRÀU!’àáwð¾õjÖ8íôé®äT¬J{ÕˆQ!±’y82.õAž‡?»BYÉôª°ù“Ú,;± 9‘ÉôíUãó&µXÉÄqe˜ÿJp̪Áx$>žµ ƒ"œqÐ …G˜¹ô4ýÊn¢‚1Âýjå£y—öÐD>HÛqÇëVíŸ}ä1 ùPäâ–û>|$u çþµgÄdù–þÁÎ>¸©5¢wÂ÷[Êš»Œ©·“Ž¥gZÄÓÜ$c–#“è*¥¬FY¨É#JŸËX‘Øl4Ù,N@cá¿õ¨cKeG8>YÅBçq 3‚Å«*âs UÉ*Ÿó¬Ë‰‹ª¦xRMËáÁ<þB’ÎD‰—ÌüÃò¥³tBóinWË»†@¸ à=jõì"ÛWµš5Är8\ÿ…[ž?'T†EG8$zÓeo>ô¨ÈÇëÚªê­IäA…‡õÅV»”Í|ó'H¿\S^Mì’ ÈÇcŒøjµÃù³ (Ýøô?­A;ïŸrœ‡ãR!Ù1ê¹AõÍXŒ³iO| ý­X_ÝÙ™O—£„)píÊĸüM7ODi Ò}Èð9õ&’Â5/æ¸áH>¦žÍ K–C)c·~: ¸ïj“üàË»å/Ž•ašÜI‡]Ù-ŽŸJ{AlÑðªT£­MöK9!Ü mÄ H-íÚ=ËÐwj¥û4v2•ÜpÃúU;ÐÑÙJAfà éUî÷GlÄpx¬E¾™X2}k!näV ¤Ž}k1o$ &®Cq4ì ±ÆìÔæâi‚n<)©þÑ$¥3ZîÄBˆ˜ÜíËÒ–m¶ñD˜çæcW¤“¢ æ;쨾z†_ïƒÀ¡n’Í•gŒ:Ÿã:[”YW ÿM;4`pú{X=ÝÓgnõ:šiU,ÜñÚ¬ÉpÚ:±#“êkRöÊ+=9·6OsWî­’ÞȆ5!N0£ä_jΚG¸0†ùQFÅ¢ÿõêœÒ5ËF„ÆT“GåÚ\’pOÒ¬ÜEöm8Æ3º\=µKr†"ƒ;¤Á5 °Tçj¨æ³ÔáçU%8FǪ{8UCNFÿA[z%²C—R|¥ý{ ÖÒàXai›å-ÜúT3¿›>á÷HÚ=ù¬íFàÞ^oQòcjûÕÙ¾ÓvHû€µ=¸ÅÃvU~µoC_8ÿdíÏÖ­iXËô?ÎrAˆ€~a‚=êÖ°ÈÖ¸Wýâá€þðÍO©Öç ‡8ªÀŠåŽN{V¨sXäÞ.p ó×ÿ¯Jr;ÒW Œv« 7A·Ã~uµ)óôÁ?¼B¬>¸­i›e€rë‚>µšæ9A Hä’}j¾•RÙÝ[œy¯’ î;~µ„I%”ÐÿËBIæ ¶VòŒl 2“×¹¬¨Ô…(ØÊñƒY©[)ÅJ¡žÑվꌩõ5v(žm6Mü,y)þÑïWm.œåø䨨àmòBœPfb*4²$ž4r4ýô„úôÎ;ç™QŽ?œýz d±4`2¹`yÀíIqo$[Y\²Ÿ›µC$`îSÏ, qìd/ÛjÅàŠÝƒ’îÿʱlÑ¥¹åj†â)®,d„¸;‹Ò›”®TCpŒpëŒ7û^”HWÊ”‡ƒQ "©;Wón5±•Iã1œÔ ™PÓÓ­MÜàzñW MDGûµ”F½J¹ÛUÀáN)Uæ%ˆ®‰ˆâ¡NYˆ*§ÔðA¨ƒJ\°Â·¯NiÉE/#ñ1Á?JU„ 2ÊØ«g­*dzç”þ'½6I73˳åÝžõ² $gU;KaAïQ;ïrB’ `SD×à|©Ò¤0+,ù<|±ôæ¤hvþòcž>U´Dm,p@9#©Íyk·]¿6:š#®7vÙŠ*–P-¸µÉ$Æ»S½G9_0ìNŸhŽÄÊP‚ÜqZM¬ŒþyB7c œb®é°8o5”Ýé÷{^Hã-À>cP:SµùU¤Šrï{v¤Ö$£‹9ÇÌj(AщÛcŸ­T°ƒí2,’6Øa±¨¬áódY\íŠ1ŸÆ–I^gù QÝݵÔÛ”aTc'½Eqrg“pûŠÍ0`‡Ë##Û·çUÆÜ)cNOÓµB›p¥»äšYdóäv§šê[­°r#^Š:TÒÜIrV%û£øEKiPß§ñ©´øÃ^íeèøT¶HáÁ…5 RKtV Ÿ­Cgpmo#s÷U°ŠÎq Òçîä¯çRÞ°Imòz±ÏÓ½hkò {L’Iÿ€Õ½Y€š u$Ó2¤ÏSÛÐVS-ÙXecéYçär§®zS¥R˱xuóéšs!u* ŒÓÙ7Œª?J2V[|1µ½Æ8«PÊîœ!èb)1vŠOÊAÝùS¤Ò_59£úÔ—v³[N×PÈCÓëùÓç‚KyštåsÔT$+°xþF•9õI‘f™]¡”àŒpj¡‰e™p1æu*mIÖ5'b›}½JžÞ`—^X?ºØbǵMo02û½¥qLvL[*l?YO#¹<¿,þ84i #ɸeJì?>+©]È{Y}”óW#»¹²Ic:)óÌÕ”¸™Ã#ÚÊ£±Øj5ŽPÇÊF˯%Æ1QEg8-åÄà¸äºãÔµ•KmFùú’:R²ÈðÃFü8ó8àŒÔÒ¬òÛÛÛ˜% y‡iäfžë,‘à ‰ÀÏÎqDÊʲ’Ø@àP\ÛÌžb­¼²ß.‘€sPϪ»œ‚0¦Ÿ™e‘NÆCœ}ÓÅH>×<áÌFÇŒ”5 ûD“nò2ºjY€¹ 3H@ Š€Û\ƒsÛÈÍ+ 8SŠ‹È˜ ‘¡v27ÞÚjÕ¼ oo™›©;y­;H¬íËÝœõ>YÝøUÛ[tµ‡åV,z¼Ó\Ìî˜óPØ,{ Šyne–2#cŒ`åÏjŽW™äRUTžOj*‹˜I=OMV)0T&ÎF`2Çiåª$P§ìÒ1?tõ¨„3O?ïêIÇÒ¢ŽÊîþóuÂIg’TŽ=ª8m..®wÜ+"QŠ”D±•ÄnÛNâqÍL¶¦ e´­´–-°óR¬IR°;lÝ<Ôx‘åãî ?Æ¡6÷Î ÛL7wÚ~Z¢™æËÃ&}§ŠzÄÛ¹ÜUÙ9j>Ç0r|™°¿ìi>Í&I1IÇû&¢1I<¡6:F9,F)‘X\\NªðJ‘ŽrÊE2+9¦˜o‰ÑGr¦­îòcÚC¾:mS[H~Ån" 4å{„<Ö o³Âcw+þɪO¬òLbbÇ€¸ü+æÞòæâYÞÚ]ÍÀáY3Áq=Ä’´2åˆmGA´óš#‰ÖÛa ¾BKt«1[Mä%ófmÎv*ÊA"Y¬")79ÜÇiâ´+¢­Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿ÿÙÿØÿÀððÿÚ ?Õ#¦8@Iã=`‘íRƒ‹…ãcùSʈÓý…ü [tòíÔŸº8?ð.jÌ‹åÀ»¾èΣž9yhJ# ƒýj¬«4„DŒU#ŸÖ u•Td'\SøYÇÝ\ß‚®KÙiXœŸAÔþu<«„dnÉ9ö¨c »nÞX¹ïŠ¡s9¦ãÀÇZ«n%‹©ö§BÕqÁ#œô«V¶ÞmºìÌ[ûÙþUb(CÂ6 ¼šŽIdHö´€67qTäiBy~`¸ª²oÿVgÚ–5o1#i7*Œ²Z’$Êžc‡D\²úŸJ‘ÄÛ™·*ŽžôÕœ´€"©ËNiÛ´Œòü«I,½y晋K¦{TÈq0îÝÔžõjÛ‹ÀŠ|ÅpwgÓbõås¸0梙v‡Oîž+>î?.GûǶj…Ä{]“®ÓÇãO„mY$l›îÿŸ­Z´‰cµ’IvеjÂ[³;|űŠ`¶ K;–$ô·þa$®EFЬ`Ä÷úSÊæ-äÆ[HËÚ yÀèY º0Ž})Œ¼|ÑÉ߸4ÒZÕ•‡ÍÇPi‡0ï,Ÿ¥88AÁ¯jrJ#\.c<ö§0¿04™GàŽ} Ës‚0Þý(XàŒ%ezo–Y›o>ô ¹Ç¯QH0O?•¯LN8ã8ïRcüŒjRr¦N3œ0ªŒ7¾ì0ªì_7©-†²2à©$(m΄ÿ?Lm9b–Fˆ$…öïÅ)q’ 8ÏJ]À’;Tr*”-"•ƒŠlÁ|½Ò)Ú› P™aøSq#^"Aü Óõ i$A؃¢/Cõ¨·<¹Ú¹ÆÑR fÀ‘þõXM>FRF9݃S­›”ÈÁüiFÄŒÿ³ŠO,"wî¸ýi<½‘ž Ÿjt%w†.À“Æ*{!Ä\îfüÌpKlÉßÔàòi6±ˆíûÁŸZjgÈ.¼HHÇó¤\ˆ¼?…Gq+6ÖÁU÷'ü*½íä·‡l§ª½ÝÌ’É»8)Ì·I”’@¦–0,#»Žr…M:¶[…<œN¬pq=jxï¼»5T‹$ŽML.¶Ûs‘ÍcËp^íGÝɬ–‘ÀÜ9'¥f4ŒfðZ¯ì1ÚFí‘Ün'éV®¿we/;å‰ïÅY»-ãˆ}ælµN¬Ü$Dî±Ö§ŽBºrÅ û›+ëSad© ŽÞ´ØÒG;ÐèH*xëL·Iäc*`:õRq׊Ž•˜º|¥M+©Qç|ìCGR ,Ð8-óì#©Jt°°o4 ÙléNvòÄay,Ç91Å-ã,Vöâ3’å·dtÆåÇ §ñdœýi¥ÀB¸õüj²É” þ½@$ÊíÅIml’píZNB–rv…c¶y«Öçj1~T b¢ ˆà“Ž• RT“Œc󨜮 ç ÔbUF'oƒŠDž4}ÛxzÒ$¨’8R LÌ’coqÇJ±#Ç1&÷Õ3²»4Ùcò08棜‡?!šdÄ7*Fæ…*ò>oÒ‘„UÈù¹úR@ž)†ÞÚW‘Û Žõ¥g'ô^iÙŽIËÎ0 =LRÊ\q…§##È\Þ—sDNÀÉÅ)wÈwqF挠IȘ`“šn ¸ó3È÷¤Ãà Í ~}ic&ÄçœÒ —*0}éëÃ8\`?©ªªp_oLT p\º:ÓF]˜üª>´Ì+G#“ò»Q‘˜dsü=)Èè#ŽYÏ<Zž'‰aIeã÷«ʱ+°äŒ lƒzlc¸““íUæ;”£ä䚯1Ü6g¯4Ø‚ãž9sô¢Ôñ“Çß4°®y¾õ>O9UU$$ûU¢Óƨ©(!É« ҦЭ€§4‚åšBÁ³ÀÅ<ݼŒîÎì#RùìÛÝ›'i)¥ØÅ³€IíÞ©ùŒÐ@–Ï]\²‡Ë–äŠYW&ÿÝ’TýEMh'÷Žx°«Ë¾âåßvà®®éî™ÏCè*r¥X*=ù­CyQ0m£?CVȨGËPÓ.åáòYp}ê¤J÷ž0C©f}j¼{äRéèÎ)`c v.p¬Ú˽$‘†\àÉŸLâ¬[¾øÙˆê~cM¹#pòÈ ÔœÕ=UÔÎ#‰÷¢ û“š¥©:´Ácl¢ õ¥*ª‘·ÏçQ¢´ã#hÍ €FGËÆjgòš'`åƒ%ÿJÛ‘mM¼›\ƲÅÇn1ü«NE… `nñ»wéU͇iÜoÞ÷Œ¾m¼€î üßí ÍS$2ß2ÿõ;ìp]X(<E[“ËußPEYpŒ»õõ¨‚ž1óú3P( @wzõ Ñ~õ620É'ÊÞ´è •d“*ÚXÊ•ensN^X`àæœ¥‚# )ÀªAû´í®çn@Ï?JxY$b žqNØìH¥rÎUv¨ÈÇéò‘”lQÆ8ïNr]€dŒPP¯ß<ãjkFcÁsÏojB…y'š™2Ià bæŽOðŽ†—y—–ãB‚rÞ”ß,F˃ËSv„`3Ö¤?tøO¡Ž<ÙÍ‘ÉÁ˜#c“<Îj8ÿãÜcÐùòj¼`›N‚ P|‘ž8&rÞ^B¢ÌT ò!$*(ý*@NDlBª΢-™ƒàŽ3Þ«Èÿ½ßŒÜuªîß½-ëÐP\˜Ç’Ê:ùŽGè*dså „Œù‡:“±DD#æj¦¥Þä«?ÈGÕæiÊ–È Ôd–•nZ2Qx=O­>KŒ¡HÓ¯ZsÏ•ƒ÷©Q<°Ò9Ë)½…Mk–ž{Œ…eÉ©-ã ™º)¥@²Dã©f2}*ÒžÒTë!s"cÍL MjÀ}ðK¦iˆ@‰cÚX±88ª¨ëöu‹nì’Aö¨C¨„)ÁÎ}©ñmòÓfr͸ÿ…[‡`·ŒÅ’å·¹þð«QáaC%º¹õö¨£”’Lãsd/éTìæò╲0Í÷=ñUmeÛžÅËïQ¬[°ˆ)>Ý*»©V$&Ò}jB¼·z± ©*¥Üp¢®é B­ RÒôQÚ­Y3(ËžÚ£*»Ë;ùeˆ%‰ãéQ¼kæ1gØIÉÉãéMuPìY±É$f¤ŠBèÒÄ£{|ªÎ±©­˜ù/q@ïòÎp¾µ$$ˆŒ±à4œmÏAL›ÌÆ:cæÛýj¥ÓI¿!ÀÆVåž9>S…#´ÑÃ<àþU]U™ÆOC×Ò YŸÖ42J”qÙ²qÅY{Y[Ë1ð:6xÀ«m#4{z¿J² QŸ—ô­…{[hU"<îúqüëOt0¦ÉÛúÔE|ÜÊÇûµM¡k…)Wcü#Ò«üä 6±=©ˆ›p¬¿»óÐÔpÂWj°ù3ò¶zlQ• 8!{z%•ÚWæ ÃQrÇj¸tc†4“±p>e=j9Ÿ;IP­ëŽÿ^£¸•–ûñ×Þ›3p§nzh,>î6zb»÷W½099ÅHÜ8oQVƒ!±ŒŠ”0+ÁäÓ±åA繥ϒQ•¾´â|¶ƒÖ“œ—åÕ{Ò)9ó]óH;‰Üü©\¬¥v÷êiîDî3Á4ã‰Bž´é"XðA9÷§On‘µŽìRÍÆA sFé>Ë0Ù<š¬ì릗ignO~*)K `±#4èS€çüémc $©Úúw¢ ²!ëÀ¨”nÇ1•ÿf«¨,Cc&"w/µB ¶û™ OÿXÑ·@²þ40Üc8À$‹¹”ŸN*1:˜Ì{H*xSVä˜ axSòàSEÆ`Ø•8¦F“¯ÍKƒžH昢a’`÷¦7 9õ§ÄžVã1ÁQœw©-¡ Yå8(¹¹© ‡‹·Ì½½Nà„HÞ|–?…iÞ¯‘g©3e˜ûã֮ݺ[ÔdÔCåĹäMgÂÅÍÏc»ñâªDvþ çñâ•T´hrHÿåNX×{ÇÊlÇòÏò¥ ¿:©ÊmÇøÔ°ˆ $#…&¯Ú»EkºVGLìoá5nc·ÊèËÐö¨ãFœv8ⳑ$p@íÅQUò–6ÈÉb~•)RÒ©,yªâZ™%G‘Îr«+ù;pE2BV2©ÆF­>F0ö,(#ŸZYË‹ òäV×O>çÎÁòãúÖ,Ó<òæNJÊ–VšBdàt­hÜÛæÜàsž®ƒìø²ÁFsëWãþå¹Ç5/”ÁRséëQù.T7$Ô^S• ÔÓ¿‹hî ëV"FL‹jwµb%*AtÅ:y€•&EÈÀ=ªYnQ§V`wŒ‚íŠ{N†UnsŒ2ŠcºJ‚0¬ˆOÎù•$³ÃqpF¬ŠH2HO=:Q,±ÏF™UÎ]s‹¨Ëm}+[¾T£5‘¡-­Ô†&Ê“´gÒ²!Ôd‚éÂ|ÊNo‹©„q3Æ7aëZ9òwFÉè:7­j¹[Êù8#ƒN–êÞ$ÿH”î䎵)¹€FȨxä:Šyž%Œù퇽ê£köx(<¸ôëVvŒ˜ö¨ŸUµ ·fìzU›sÜk,Iå·ñDzâ–5·»A5¸ØßÅôö§ªÃ: ¡ãÕ dÈPJ÷µF¥£Ü ¹ïڛʂ d*r£ ¬H=)èûFIÁ§«à|À朩V=G¥I‚T‚øià |¤ö¤ùr½½qJ6’¹ãqJ6åHàw¥|Î2G½*fîÃf”d99ôõBÞR3Œ£­EM3Á ;GZbFdxÁn8£®$äüÃK ﺛ®]NÃøæ’̲©êG€‘eç„qøRìX¦.pÿ,ƒê:Ó‚¸èÿ+zF cteFF*¹YŒÇÈ÷ )e|rcŠnD“ FÛluc×m#H«~ì&[ý£éNùL˜CòÉ÷4¤¸ÌŠHÀ÷ïP°uΪ“…ɨ:Åæ ÇåÍ$ ÜÜçˆøu$sSé‘ËÀ\à/CïSiÈnn<ÆèëSΫ‰¢òI÷«Ú¬Ä‘Œ*‚Xžù5gPˆGaÐMT]ò)uoÝœ•>µ‘ »üŶ¡äÏ”’p­Ò In$‹ áÃ)Ï^*ʶS ”pWÜSĘ›d„ýA©dXa[–ÿdRܹ‰"a²O™‡÷EcRˆß+r}‡j`]ÊøàŽ{cŠª¿0~y½@§*Ù<Z‘Ù|¥v;@å}±Z¥—ì‘»2Ÿ…h¹ n®Nõ]dØJû˜pã¾*¨š2ÂI70ã ŽøÿëÕq"’$l°ì=è{d–VÚ…sÕˆïQ<i P¬EF`9Âì½9-D»ò@¡m d|1SÂôÍ l±.óËgëRÂãvé Vì=EMdQX™ÉGzƒÜ}*[B£>i!Æp=¨XU‹3—ÆxlÓ–`ÒJd Î×õ¥® JÍßÒÐ %TêÆ©»Ä•‰ª¬è¤íúÓd0²î¡cÓµ‰—åʱìzQ”#ƒ‚kt•kìøvN9ÍU†ÉZ`]°™ÏÕXl—íßîç?ZÔ¹¾ŽÉ7”eÌj;v­o#´C%ÇȾ«Bk”µ Jä°ùGµsð,ú®¢¨ç%ÎæÏaY0$Ú•è\’NOÐVD .¥zT䎭ì+¤†ÖÁvÛù* tÈë[–±iÓ¶’ÆqžÍ[vÐØÊDF0Žœz%µ†cÁd Çu¦]XCow)eI2AýT’ÚG Ê"±E`H"¤1J¡Hb@ã$Ò¼3Eµ‹gSJñÈ›Iç<z÷) 2 ÇqJ²‹k[á¢9lw1m(~lw¨Ê",o•'•=ª1!WGʱåOj@¢6V*‡ÒÐúƒØ ‘Š©õéŠW!sÜzP¬²D¸0Å9Ye…p`;Š~C #Ž1OHš=²¡‰ü}éÚ[5IÉPÍÈé« Ú¨ ¦ç ŽGÍ»?\Ó"$r9Ÿ|šHþR¬}³ùÒÎÀ,‡¨e{Ô—Ì#IGQ ô·l9÷ˆ4€¹*ÈÀŒò}Ž*ªïwi¶2Ç?\T]¤SÆÀH¤)²”ìAÓäÓ¢Ql$'iiEݧF¢uÈ-/Ê¢›pB¬(>ê.ò}Ïù4ÍEÕ!µ·^DHYûF£Ôœ(‚è‰ÏÖ¦´0+c Ì_ðÿ8­]Ü HÜ®ì\ý+CMƒe¬yûÝZ|ÑÚ5?3ü£ð§kn‰ˆžC…—U ÚóËš¯±cL”Ž?½êk.fWHá˜áïxÕ)J¶Õ_õq®>µ$¤¾éH‚Š}Ëy©%ÁÀU!TS®õi›¸)%Ù‘“ó⡹hÙ“|¨Ýõ¨§(Òcø¸Ýõ¦Ò\4jÛ}ê8Q§º1'šŠÚyÚ5ùsÞ™¨\+†•úÖ…üÿaÓ¢ŒÒÆ:UÛéþËf€ Ò(Æ*®<³DæA˜a½ëY¶,ÈÅÇSÃzU->v1fN¹ëZBª\±õ9°X¹ØÖ¦¶7nã`0ßíTªÉ4 …Î:м¯Ô …¦3޵mLsF¤/@2*7U-»¿¯j¯sÀ¥Ãd“Ó5 è±.ìç=¨VÊ‚HUî?»D2áWq)c7p½jKÆ zÁ©µ‡l&xÃNÔ™°éÚ›ÜÊaB…R{‘QÚ å|ÀUU@SNh·ù˜2”Öuc!OÞ=3Yúê½ÉŽ" ©8j¡{v$œÇ ©Æj͵Ú2ìeÙ!ù;ŠšÞTòŠ•Û)ùÅO ŠcÆ6»p¨ïR²¤bF ½÷|¤ž†‰8C0äÝòœô¤”,J[–}ÜJiŽGL)mã=ªI&n0sP2<®sƒš°òÊ|KµqëZÂþâ;dTD$¨GcZFêe„*¢î#h5uYP ±®3êÝjŒ’1¹bŒÇ5ZIKOó·ÊŠúÔ€–‘—u9wK‘ÅÆWqü(ù¤‰Ò1ÑriJÇ€ûP;S&FDòÂ¥F1I"0Ä[·Œ |Ãd§n8ÀG½>íw-´cø JKg*'ÿ×QFÅI†UÀ4ÛÆ$¹F÷¢Ô2$“ ª1Ap$3]>wdí=qþY¼ã!{‡Éoá>•T üÖiùÏQVÛtx P3DŠËŽ0§µ:Ee#”ö¥,±íi:cŒ c×4åaS"n\qŽ)èáó"¦y#t W@z)ëVî'F‰|¼2Ц­O2ìYÊç ªæW C§Ò¨4îÀ‚q“ÈAçvgo54Q…PÒ19ä(j{xÐ.ù\û*ŽjxcEMòÿ³J.⑨ëS%ó Çûz“R­Ùå#G½+ÈOÊÀ°^éÚ†¹20WÝ…î©MÁ‘€lñÜv¤u…‡•18ÇÊÌjÎËy€†y>G&¦òâ˜yr±SŽÔ_fŽÚBÊ‘y ê*şئm¤oL¼*¬¶ÿd•™GÌ?QR-È8W·Îîr½ÿ^§PÐ$– “Ýzš™/#eÚðœãœREÌnŸ4q…Æ=é&¹°˜ùŠ^óI,«s(ÊÆ½…Hb,Ãò´mÚXnËù3éVZt?0^) ðU'vÖ ‘ÜâªËqj ¢à„ÂçûÇ^YàÈTÁÇ5‹2Ç+/ Üf†Imî^0SwB;PP“ ιR})¢0'”Æ~þBŸN)ÏŽòãÉoõ€àŽÞÔ­—q2ÆOϸ®(G|*º†ÁëH%vE b;Ò (Þ¹À¤-½œO vßt•üÁyãÐQu””+e†=*MUŠÜbX•ô§ß±ªžqÓbXÚh•8T#^ÄwŒlçˆe“+ëMˆ”ÈXnÔFJ¾òO=:6(ûÉú Ø…š`³·t÷ÅZËˉŸ v÷«¶%jÉ|áGoZàîè ô¡ÜŸJ’Ý 3áTpµ§¦˜Òº‚€pªý™UˆÍ)j ™"•v"çïcÕ;û¸¦„GC!¾øÍS¾ž9cT0Ùû¦µÂÅ,€ ïè?É«ºJˆôùærby>˜«–#²’Fãq<Ÿ@)˜_9‚þg#oj¢È>Ô¤’ÛðF;qU µ õ<‚)f*…¯ÌxÎy¦Ü”V` –½ñP\¨k‚èÙTéMòVUyšVüÜ•“½v•€ûÝzS%“{JÃ'×¥=Òd‰›Ì„޽êybº‚Ë7 ¹8ü*IRx¡$È$ˆŽ£­dMnѰç8äŒVl”+Î{⩼EHç>Õr2Fb'åœúT®æEØ>ìu#¾ôÇð¥Yˆ™ Œs¿•þY©mã7¬ }þŸN楷C4¢3ê}ª@ÆYBGòÆ­Žjä(n®GòĬW§qV!S<˜NI**³ml#9þ"{Ô7ÐÇÃ,gj©Ü·zŠæ(Öb#áTãÖžWtÁA ùWMN7M"®@Ž%ùcìO­L7HØ' ùVš †Ü3…P=j£ºy…ÔžZ®Î…‡$p65vé ,OîÔþ´GºP_—'åSIn™3òäü£Ú¦•ÂrÄ ¥hK2Ä'2± £û‚®µqmš6ˆ`~÷(†)ÈÊî'šŠÞÍ •ã)+ '9S†úTpÛ´E£Øå9?tÔnÒFX«‡ ÅWk9žÝ‹A/™Ð|¦¡ki O»·Êx¢ `ãïõ¦[i³å¼Nò[iù½©°YH>VÀöžjx¡ +J гinðM$ƒ*ƒa«ñ4Nò¬N0£i§(xãvT;Ù¸âŸÚm­dÛÉæ3’Cþ{R§»ámå‰)¨„NŤ‘[>€uªd¹’F–X%$ó†«'fgx¤'9û¦¥\©rfÆ2:qWR ¼–o)ñé´ô«kˆÉØÛ›Ú¡òßÌr±œùA}k=­.¼çÛm. q”8ª-ÇšÄC ¸ùM,pHn¸è¿{=ªkk;Ÿ´nh¤W©CúT¶öóy¬Ï«ÁÚy¢D‘¤'c:qQÉms$å„`w(i í)a ƒÓNXX.ò qÈâ­[Ù˵¥xŸzŒŒ©Éæ¬CnáK´m¸zŽMEp“LJ¸’HZI๕ R O i&ŠYTÆøŠj(în|ˆ¬æ‰@»)ç×éH·7f1o Œñ€1æ4dAqpëäÇi,`tr„dTw6wˆ±$C¨oZdš]íê"9Ù9;ºÓe°¹º®J äç­\¶†;4Ù28,Tóô«ö‘Gb!¶‘˜pÎPóô«pF–Š8\‘ü[O5kpë†ðVüàFZ9GÑ Xw(ÿ÷ɪ7Œèåa±™ÀîPóT.µK¥r¶ú}ÃüMªW× øŠÒR}†¥³žiÜ4°¼c`¡æ¤Óînn'Íż‘¤PŒÔ¶sÍ;“42F1ÆTŠœÂw¸·×µI%“™‹—gרÿëSÚݼÂÙ,=ûU+ëF*ÓB¬³?Þ f¨j6°Ëoæ¿ÞÚ„Õ+»"ªÒBæH~l)5 Œ×J¥n-åÊã$F~z§w¨H’ÖcޏŒóUâûJÞfþCÍZh}bO;HÆ? •ì']³E…ºí(r*V´‘JËo¸œýÓÅK4ÝK&[8«÷6¥Ü–ã)ÆyÍ[š ɸ#x‘¹¼\ÆÌ…y=‡^ò ›T ÖòIQÈRqÇO­Cq‡P%¢wo)4²‰òÑÀêëK4Y°Ž ñßʖX¥’Ü…€ã‚§5ð0¶•DLùϹ ³™-äO³Êàç§’EDÖò wO%ÎGM§­UÒ¬eµów!g·jn›§Ü[‰DãÍÿdð)¶sAŠQ€j³åH°¬mBž• ·œ@‘%±臥H"˜Bˆb—ý“ZuÑVÅQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ_ÿÙÿØÿÀððÿÚ ?·©ÛÜÝB"…•W?>N7Q¨A=Ìb8äUS÷8ÝVo¡šåFÁF~j¯i¦Gh|ÉI î>êÿõê¬61Ûå¼Ç¯aPAd–Ù;·?÷AWÅ»2îcÇP*âZ;&òÙš¶-Ø®âÙïRC· 8=*k}ª}J– ã85#¢óƬÍ[[r€OCRȈW3ëM„:µ·/`j+3$Nv¾áØe¾øØá÷CR´¸:ô«2]•¼Q‘éRµÆ>øûT3OçDÛ2­èj­íк¶eñƒUîgÄq•cÇ5_sˆR!ÆñÖ©ùä,# HNjÎcXGúš°Y ŒF¿xŽAõ§ÜÊ–¶¿gOõÀû.eX`ò“ï´È±½7Y˜~æ ÓÔIs#æg#ÐÿJŽÁwÜ Ç$ƒšràÉq,ƒæW!,T—$ îænXJÊ´éÈyO,Y€¦v’zžk<短Q'œš’ÍH2¸\‘ò¯óþµ©£Š™•w7ÜZÑÓ£‚iï”~ɧ[pe`Côùª9&—™êd³yAœ˜ðjO4îmU9o|Ôžmó1`!çêE?C%²Ý¶ZµrûßÊy[4šÍÇr°ŽLGú MNc,á¬dÑ‚¹É%G8ö¤‘=’çbšY£«·÷iò©‘@a„õ«7 Í+ FæjiÔɯEµIùS*1ÔTpýöF6ñÖ›6cŽ´.Í –cÉîji–*ÁA™ÏSO”Ecln‘ª%3…f]¡[Y··Ò^Æ…€PŒxêÝÙ¹HøáM-°v uj] ]K$d"–üx&îË0ÎÕàS®™OZ“U™žs“Áè>•&¡)iaUî` •‡õ5J_š$p85Raº0GCX·ÁóÜöªrƒ¾©8lþ”[3GÝS Ï™œv¥ˆüzU›…g‰½qŠ’l²ç¿J•òÑî5@·ð¨ÁQÖ«³s€9¡b1ÀäU´âž1¸T +"±^zf¤Ú+mÁ­§&{ç¶eÚ±µžkZOº=sŠaÇAÜtÅBF~QÔŽ*23ÀÓÕÙ çÚ¥Iž4 œŸJ‘dd\Í0ù™Þx¨ÿx{ ¨ðàîaÁ5#¼`˜‚{f§’X¯Ìr}êgtÀŽj5Þ¹`ÙZ…w¨$6TœŠˆnƒ‘šR¨ß6ó»Ðšs„l?˜wûšsl#;¾o­¶äðyëMØNÒÜƒÉæ€§ æ›Lƒ$ ?Ù¨q“%‚x>• eŸ–À²ä]ܶ8oQLÔ–ù‘ùaŒPjÜý­”òs€jK5e’VpWËÛüW4Ø÷Iÿ,“ñÿõU­! ¥qÊ€6PV=ÙûòsúÕkÐÂ2ÄðÒdÔW€„ÝÙž†èF2GWãÖªjchíÁ^I;˜V™‰áÓb(yo™…i2lÓaíÍej¬òCJ篥f]»ÈŠ$Ö³®™ž5SOðãI“¢®2kGÃ.±­Ë7€jö„ËS1áP š¹Ü3KíÚ –æùær’\ûÔVøšéånœ¹÷©Ù‹®qµ;縫÷n× .Èñß¾*åÁ2¨la1LN"ß&Hèµ$Ù+Ñ)±œ[—“8踨Òr’†<†ííU ¿0]«õ1íUá¼ònê:b–ø©hÛw_Ò—Y.&GFʑǵ&«2Ë"9qK冶‰×øOçQy¬c•zƒó ¡Ýi‚›,w%ꇃøTš<Ëã¾~ôGߊ—Mqć dãëšI ó$fu@2í‹LåÇOëM¹$ÈùíQ\àØL3Ž}‰ÿëÒ€L˜½Š?M §¿ª8Qi ‘¹;qÁª¥áf8`š¦]ƒÇCJ»æ>Aã5"ì*r © 9§mÿG2ÈvÅÌÓÖ"ð™\í{Ô¾Yh÷·Ê‡½S1¬Òü§nHüET1«¾ã'­V1‚üÞ-ÂBâ?^þ”<‹ÚiEŒí?m‚7eÉzÖÈ+¿.Oµ ÙcÒœ ”g$ià£DÒd`š~WË-ÅE”(KÊOÒ ýÛDKÈÇ娾B‡ûäñOe`Ì~=*GF ¾käc¥9”€<Ʀ1\þéC98¨äÛ“ä¦åHÇÆv›†9¢3ÎÜ|Ç 409BOcDD³&œëHK€[ùTҤלúv§È±EN7…KºÕ?­TO2PB‚ O2@FZ«ªÊְƨÅ[v~µ¦ ¼h rIÍA¨“ ‚I«¤¶[Œ“´ ý?É©e·óm>Ô!Øv©f‡|hÏÝ85(|ZÉ“îqžõjŒ:LŠOßãéÅXG1éå;³œRÌ»l0øÏñÍi·E;Çq´ûäƒIv iy<ò6þuUÛÁȬ£ÓjÌì*{eó-Pçidw­[(DöHXííÜ5«oh…¾^:Ô3À’+ È8ÏsPËj›Þ1ÚïQIn¤²…Çõªv ,K4`c{uª14ˆ%…N7ÍŽõJ7p%áIæ´a€¢ÉvþU¥edD€%Ûž; ¿kk¶àïnþÔð0BœŒõ©ÊÄlN:žjm˜ úÓ.@òÐðÔËçT_"6Ê7?CLº`¨"Cݪ´›w|îÇ YS&Çenw¬ÙYlñN·Ž9ܪ¼zU>Ô]Ɇ ±A%JšÎÜ\8ßœÖ­È ¨Hø@3WïQR5Š#ƒïW®”,a#á@ëPÛD>ÒŸº?Z§¥¤bùZCƒUtø×í@¹à:F³Ç𢹗|Ìä5òv+Ó5Vè•…Ô½…¨Iuм#éÍBÌv2â5’éŸf& eôàÕb;Sà.Â޸胷8<‘N#jîÁ©/¦ÞñÄNcíw©ï'Ü#‡?ºüjÍĹÙ?»EãëQBŒÀ“Æy5jÄñÜÔQ©*IéUïÇïØuàT?ëOÒ«\ÞWN#ܹbJöú×B‘oRÎÄ­o¬e†Xñ@ØÄƒØv§Fb;³Øv¥O,ç<ÒHËÚ¸ÜyÝéI2¢Æ0®})$UUÚ˜Ý×>”Ù  °¦J\"±PÚ4Ù3µr¿HΑ(PÀÓ3I¸÷ö‘#M Œš¯+¡!cÆîæªNɸ±žæ«ÊÀ#ë×"ˆ¡ó-–4è-žVù÷3S¢…¤9$±ô«ñDS“ŒôÅkÚ[y<¶3Œb´-á1ò@5‘â¨ËZC(øÏÔõ«/űfÞÞPÕ'ê?úÕ›âhÿq Š9ŠšÈ“iã…uÚÃéUmµ´jÇ (ùÅ6Ø–ŽÇ5%Á ¨\l+òQ|LdF>èQ°Óo CåŽFʰ«¿NÃsÁ?‘­A7†ðÜá ~ ÕæA.‹ƒÏË»ñX±U :â°ÃcÒ±—¨Ç^•eÊ"ùg9_™±W¤”Gn ]‡sùUç˜$+ääÓ£&h‘œ÷þUz×VhåH‘ÕXqVâ>}º¾$ ª¹ ÷‹V2‚&À%±YJ°}âØ«*R!µØ³äò;Ö´RÃkn±¹c)ùY³Z‰$pÂ’d#ƒC8_\c;¨ž`¬[~ùéD²äq޵ZÚdóˆs’@"«Û24Ì“œ­CV“ç<ç"¯8‚P7àÖŒÑY\d#pÇAVäŠÚR ‘éJÍǵH ŽÔù¥¶‚Ù’F1Ov‚(cÀÍB®*OÊjÌŠ`à¡?(8ȪI `Tž¡ÄÁ‰Ï94É"0J¯œó‘Lhü©g#­@ÊÛ˜°ÆyUÁ26F7sUX!$`¯rTÈGaŠPI €F*ªG’oNôÅNAÆj5LqšX¡Ž:’y¥Ž·¯zX ;ópi“D¬ß>ŠIUIÉàÑ&ÐØ<ŽPÐÀïœð1Šd»’&lö’¶ØÙ»UXåY¦Ã ç'ôªèË$‡<ñš¯‰$çÓ5ѶÅû§qoà·äظû÷ÿ=+mð¼ݞõ.ÕU2(Ø~U.áÎ:Òì9q‘ÍDb #ocÉ N¸·6ìŠæHFXRÍ”ÊÞO,(‘ÉC•Á=E$ò3BAÏQI3“ ª®è§ Aϧ5JGPøíÍUv¶ƒÍKo ŒqVl­fùAëSÛ@dlt¢ªQõ5¹kAÀëZh¡@·zZu8ô¬íy<ËH“Ý(þF²|N°‰q“ç ÀÖn¾¡í"R:Ëý YµµŠ8“Š]:ÖÙ-ãŽFÜì3J’ÒÞ‰#vËùT3DèÅ/ªÚ³õ^+ƒò£îœÕèØJU¸Âj[YK0…×jÖpîÿcqò>` ié.~ÈýðÇ¢;^䟺Cvõ¬Ü /Î8ýçëTT½ÊñóTîÊ£_zÑž8ÞõSÝÔUé#F¹EëëYÚíÙ†5·VŸ¼=ª¾½?‘Vª@ä–[Y¸òbŽFpr)ºAÛyíÉ ­c 4÷±QÚ8ò<ÂyÆ*Ô&F”F£øriÖÞtÓùh;dÒÛ´&ÑÓ­=$ ì¬;}i<̳‡ˆZ<ÂÅ•³Ërç1¹á×úSm”Ic  ú`Ó-ä`އx© t~È1õ§¼›¶‘ü#Z|ŽYÏb£bÅ Œß37"šèÞ^÷ãssMpÁ7·ºÕ IÉb:¯½E’-ëUÛ#ïv5»ÚÝ>^â›ö’§‘òúR} †éÅKÂQ·î“’=ø©Q(eksÎ¥ŠumèÃ&³îœ¼ì$/ªÎÛ¦!yU¦mÒžý©ð3`I¦<‚)r­Î9$ÓAðÙã½g^êHŸ,îr}jÝðT;Xõæ©]^lŒì9cVt‹wxÜsךµ£Z<ª¬G|óV´ËfxÕ˜{Ö¨N®Š8Ö00=3[:iiôê:ÒQToÜ5ä€NüŠÃ×ϖ7°÷íY:¼àÜD‹ÿ,ÆïΡùäï žF d d'ps»¶JÍ3MÁÎ})ášX^7%¶A51•¦·(ù%XÇéS™LãæGÎjx¤/z6)éÚ®éÒj€¨ùvúU­5‹Þ¹^m#í{Æ„Ÿ½†oÀS']Aí÷nA'ð¤ o^,õnôÜÿ¤O#8úÕI2³ºž ’?Æ©·Ë#¯¡§Ø—Ç@+SÇsL?„€kGE;£„m¾dNC ·µSuÛ©Ê‹Èê}ª°oåP8¤‰„®sÿÖ«ú{ý¦øJ9Û“W-ϹÛ¬]bÙ®uªq’>•›­D'Ö6„Ö~©Ÿ©ã™É0€±»Rº"Æ 6=…=Ô*‚Ç%„>fg|z 특¥Y‰\>1’Töá”Ì@ü¢­˜‹™ò@hý›,»Ÿ!z*瑸®æÈ±OÀÆ8À0:TƒíE--QJ8æ€qÉí@ïY[žáŸ<ä·ôËÙƒ%ÛÈyù™±ü«ÛçšG=7Sî„bU!Inž¼sD‹¼V –éøQ"E]d“PBL’D6Hl±…Cb²MwDØ;²Hì3QXù’]F±ž3–#Ò¯ÎÁ›iÁU;›=ñZºœ¾l†3÷Q˜°úV…ã‰aûªX棲Œ¢¬$·3©91£vô©ÖY­¤œ¢“ùUˆ¹cp~ဧïsÍtÃäÆ@ü)ÙÍ9è:~TÂÛÈ : ¨í¹ŽÑÒª»cÒˆ Yã È'úU)öjåsÒ¬iÎVí7t$Ñ{)Ÿ¥IªÇ¶þM¼äf~€\°×5žð¬ ™âªÄŠêj« uïHŹS«Sp#ȵQàI¦— ´v=(-´/½<¿Þ¡»O4)^TuZŽáwíÇ v¦N»€#‘éPÚ)Wi9ùEG*YñÐTQ¬ÎxTíw2ƧœQ©içD ãúÔ@™åU^™®” 23ž? VÛ ˆÉ#·JÛeÌÄûVýÓÝÞ,+™Tw÷¬›¹ÞâáQI že]\<÷Kœ)íë]=šìµDè@®·MP–1ÇÈ WKh6Û"ô TÕf¦¢–Š(¢ŠJ+7QÔ„ìðüÓ¿Ê1Ðf²u]XA¾ÚÌÍÆ}3Y×úˆ„4ŒÊÜ}* mŒ[ çñ¬‘¾ÝLyÿXcTFøG—ýâ58ˆ#|Ã0«šB…_sŒm#¯zi@®AÐô«y @•RN:Z+¨ÚÛ!FK‘€Àb®¥å¼_,k–•‡ÖÙ3(ÜÃéYIqóãr9Æ)ñ+Z• óE€·»M³ÇÐûQ´Á•S”û¿JV #0#ãð4Ý™µiq÷)üE!\Û™gÅ,`4È?ÚÍÇ(Ç lÑnØO¡5Ž]™Îä#³Jf›9Ü ,²ef¨ªJØe䍑Бƒ‚@¯ŒvÅ Àœ¸ù½hf ÉcA`[‘óu¦Jƒ`¨õõ¦ÈÓ¯€ªNµN)È0~µlKAPÆä°t®èŽp«“øÕ’»¢9À53&øùà:Ï!,Ù€æAòj¨€ŸïUUÄ N>aÅjj÷@)/žýëCS¸äE;²y5P¸aAÖ¢Ñtö‘Œî c£ôíL’rnr£¹ïF•§¼™¸qÉéšÞHözWE ^Lv­ÈãÙƒÒ¤©êJ(¢Š(ªº•×Ùm™—ï…>•GV¼6vŒÈ>sš«¨Ý{vd?cXZDYšâLœd û×1cM3JùbO¬+̲™\’sÅh« 'sƒ¶3Š»¸<ŽHùPâ­†Üìq÷j]·SêŠA98¡­/nó"ÄYM#ÚÜÜ“"®TÔ‘Û”Íq‚TeTJ³šlã{›­¥eÔö© ±û$fâs—_º¾ôÄ‘¢&W¼líö9ªÐÜ=«4øýëgi=ïPÃ1¶Ì›~r>_¥M˺üÄ/¸:ê÷-÷¤ÇÐTË©LßÅŠž7/àt­+K—¹ã”dí85zŒÑ2¸ÉÚj¹"0œþU‰1ü€cŸÊ²¦"1´ `ÒB ,d1ËËü)Ö™ä(ùYcíN²C+Ô|½MG20‰ã9Î>•^h™nO©ÈªòF|ò*ì8òSÓmu6*οÜô®‚Üo6 ‹Píñœ ÀýjŸˆ›Ç8'òªºÈ&ÔcûüÕFQ*€kŸ#8ö¬Œdj°NT…<³*°ÄÚ%ªg9R¹êi ¢•XàÁ>Ý¿Z’Ô°™C ÏåÇëO‡æ²u=ÜçëQ© ‚ ðjª¶#×óªÊÛHÇjj]Ü (š–Ünf“*Œ– q#ãå o0±<ÕFÎr}8ªÃsOÙCr)@b24Ç¡æ§lì*{ŒŠ™¾áSøTÍ…*­o×Ü;T'?Gœu©ÎWjƒÀ¥,Tž?­HÌTÚªÏle—x8¡’î[¶*¼±bÞÕ²-¾Ó:#Ûº¨å™”ŒûVÔV-sQþé©–9ÁP€ž*Ä0Þ#(C*`s…85¸VTH%F*†(F9äÔ¶1\DŽ‚Vrâ¤cš%†MÄÄ‘’Àu¦]ØÜ­ÁÙ þÐBsQÜÚγ|±ÈÞ¤)9©-7¦culºqZ:<“ÇÙç†U ÷X¡Å_ÓžPžTÑH6ýÒTÕ†@À« ƒZÀ&£qjÔ‘ P£ŒŠ¨Ð²Ê@V#±Ås×ÇpÊHÊ!"±æ³•%*"v¡ M!ŽA·j7¯J‹ì—y¶›þø5·¸íŸ÷Á§ÁúÅd`$ëÅ[°µ”ïŽKyUdåfÖ ºF `Ž•"8d;xÆkVHÌvL"0BGå[óZˆôr!_›ËÎ+bâžþZüÛ2ãTâeÿZ3ŸOç\ò­»œŽ¢±áïžE[¶ HñŽ“ŸÆ¶4IK,C‰*Æ´ô¶PdL|ääU{ænPœU}RVi g$ŠþBÏ·99¦Æ¯u ¬gäC´´E%½¼—¶¬Ñݯÿz’¤¸€˜‡Ê¼ lo™CdJŒŸJd$½ÚÊÌ­‚M6Ý:“‘"œU©È’ãg<ûš¹ªH³Z«°näz·SV/Ü=¹ÀۃϽWåJ­žò>‡­fZNmîãžsôcMðwwë˜ luê>SštÑîÚËÖŸ"n ëß­ n^6áœâ…ˆ´.IïOŽ"cùsšŒFù C zŠnÖèAãÖ“k}Óž*Y[|?)ÈéøÓäméÇ ÓåmÉÇJŠ<~8Å1?^”Ä÷¤½`aÐEÎv†¦Ýƒ´¹Çò¦ÚŒ†ôëøÒ[‚2=ò)m³ƒìF*Ä‹ŒîƒúSÝvžGN´³.Nj!7!OZ`Œ@ïQ¢n`qO»wŠ=Àw `ûRÌÅ<ŽÔ\»ªðHíM²¸óÒHŸ“ŒI†DtcŸJl2y‘º7&Ÿ§Ú…`;O\ýiÖÐåÀÁšu”GÌ­9aXüÀúæ®ËûÇ©ù‡ãZÃŒÿ{¨§+üØÍ8|‰×­8±ã¿ZÈÝõƒ*9³ýŸœÒ³Ù7<ZR"ÃÔ¡©‚‡xë’¦”F0ãœÔ¶ƒl'ûÌÜÔiÄ`æêk~#˜“#WcbKÙD_©Ašé­Îët-ÜVnÞK‡ê3\Åì~V¡4`pùÖʼ•:oçS[’·[øÁçÞ¬ioåÞ«w!¿•M§¶ËÇ¡ST瑘¼Àô†*­Ë3³Hr â ¹fr[=G§a†Ò$ÝÉük§Ó¡ö0Ä;&Oã[¶‘mcAØdÕ%ùõ†‘Ö6á6ºdEÈÏ?ʳT‡ÕY”pjIçO¶½³ 6ÑåûúѪ8[§…¾ò—èi/Ü žã­7Ë3A+ó ª‘Àd·–@9R:"/¸0`\–\‚péÅk[²ßFÂFâàVŒL·Hw˜ b¹{"õT¹‹ I>•x€±ˆ2Iƒ>›r£qBq×¹o•¶„)ÁXö0Æ*ú;ˆ£ÿb=„ZHÌ>êì Õ%…®.LK÷Šçš­³Ý\4I÷¶æ©­»\LÈ£æ “ô¨pœ€>`pqQíQ‘ü@àÔ'ûÙÅ;,$ÆåèGµ81 —ù—¸ö©U‚È }Ú”î–VÙ¶g ïSrðH-Ûnz ±Ë@â9Î+1®.*Ä8;ªƒM(ʰÉèr*›M(Èn½9©àužÜ2 ¸©¬°îU÷©¬°îQZtj¡Žáó†ˆÕAçï”ÔP;šYUºšW\‚¥,Š6œž”‘U/Œc¥$A@-ïÅ,!Tgò¤‘‹g“I!ÜN $‡q5Nîv*q޵^iTtëïU.e+½EX‹äÆNEI"™-ÑÇ$Š–áL+r)ºd FÕ3HŠDkò-FׂæF‘„V9lóÏJT9Î{ñJ‡p9¬˜£ó-£ÏðñUs ±þ*¨¹Fî*x‚›yÙØ*&Ö&¦‰7A)$*!5"€öògióÇ;Ig(r­AG&à™;N~µ ¸)ÎÆ5ÐÄêêèOÕi³+Ûü àèí4\ôÍgNu O$V¨§ûRf©¬›õÿO‘ëRD ´H¯ÜŠKX÷ÏÀŒûâ‹uÝ"¦qk?XÈÓYbU@SŽüóPê_-±Ø6 ãëëPêY[V1ŒcšÐ‚ô )ÁËUÿb·?´Bh‘Ü—(z×7j4ä”Y@üil u%ß«sPhöîf30횇N‰Œ# ÏןʺYˆ(ª^#m·ŠÝ(æ©ë‡eÈs÷¶ZäÚ#ç`J|lEˆ!ºÈ8ü*db-Kt¥”’T†b0=h‹|LNÒˆâˆ÷Fs‚ 5"Ýlb`YƒU1³#Œ*h¯Â’®8¢I"™ŽYIv§Kqosn²<Õl`zb–Iaž0úqTàR5HË1ÈRVÓþ׌³`…!«ةþÓÉ;NÞ=ë;Q›ì±@ÉcÎ? £~ÿe˜ ÁmÄqíY·MöwÛœœþx¢Y#.Hul®›³ÈëB뻦(“ q¤PÙgµ?•ùCcÌ[þ~wzTs)oŸ<Ó&RÙnþ• ÆV>”Øò˜_ΛcÂŽ Nç1ç«g3p žNjW<\Ò·%»þ½# ÷íA' ¦»íqǶc¸ ¶Ò;ŠUÚpSJ1€(Çwª·6Ï$ (ûÕ^XÙŸuëU'‰šAßš˜Üˆ6À1µFÖžÓ1ŒSž} F: ¿h¹ø¤b¯ÚÜ–Ó¯ òª‡ }HÅ]Šà5…Öó©\V_†® ÜG\Å -U¼:Vâf³‘rŒ gÒ©xuÅÃ=¤‹•ÆàkZ5*ò 8Úøü¹§•dšTmsVpQÝGjÉ»F©cÞ©Ü7–vÍR¹m FµRúáŒk8LdPÜNÂ1 œ'Sõª÷2§’½ _Ñ-¤Š3+ OÚ§³ã…\Œè*Å„†=^¶ìK©I€C ~U·¢±D˜¹À 6¶tÆeI7ðqL1¡r Îj¤»çŽNIÅA&Ó>sÏZŠiRUI#ùeßÇ劆ic}²CòȇjŠIP•xø=IurÆc‘q¹y¾õrõ¢Ó×$zûÕ›¨ÑâÚã‡"³l튺ۆ,ÉÇ ª°;I°bÀ¾@ôªvÑ;€Fx®€.Ä é]\Qˆc; ßqàv®oÄçý.5ÏT®cÅòUõA\ÿˆo#\õQZ–Š#Y~£‘Kj@U xà­Mn@ AŠ‘e‘¦H0 àŒUˆ§’K¡,Ãä⥊WyÕÜ|£ƒL–2’±o˜È5ZâŠgÊç<{Õy¢+#眊T!I| 0ÛKnÂ7-Žå§BBã¯Ày‹$d‚„Ó¼À%Ib$õ¥g 2Ëéüë?YŒN"{ä­A«9Šá{ƒ‘ïUuDY Hƒ‚*µ‚±WܸLc'ëU­U¶¶W“PÚ«9\5^âGk†—=ðÒ ™É”¸>Õ ŽL„ƒÔÕ´s%²“Ô|µcvè”÷éVwïˆ7zRàsŠ@l÷ÓűOdb{¯Õ'[Ž{T‹†RqÍ`òy#?…&úõ£y5ÝÍíL+¸ÓO-Í'›å#È¿yxZF-Y‡QHϱ»Ž•”í1—w@ɦBû÷g±¨"ŸÌV'ך¯p…î™TïP¸Ý.¥@Ã|»G#5¹m†ÖFcÀUøÐ¤IÎ1ŠÒv@I>§¹ÓR{ŒÍå†Ã7û\V¤ºR6œŠnaðÇÅÅhM§+ت 6äûÑaii¦¶õ}òɤÓÖÏM”Ȳn|cÛ-´æÜ­–ù0;™hYØ¥šnûÒg%h˜;ÖUÝØÕÎÙöÍFs!ج6÷5 7Ÿº4`Tu"£'ÍÊ©GZÅÔôuý¡"3Ûƒ«h ñå–Ï­cê:PŽ_´!ù“WclSü±U²G© ž@ïŒÑsó"í'vÑü³Dä¥oZ&r¤<н žl)'÷†Mu6’‹›8å#!×'ùVô &¶F<åyªS“î¨NTʹíB?³ßId¸?cÝ¡ŽéãJŸÞmzz³mè*D$JGNj¦£;P?Qœ´Êlf«ê*¨?Z«‘8R¼2ö_"P ðG¥W\Lªz`U+¹Ú03ŸSUç¨sõ¨îd(6Æ›k!‘Le²W‘M‹)Ry1‘'•¡ao7¢òhÁùíÍ3»ýÚ’bV5“÷ãNá {œ"J•s"“œ.âj`2Œô\š”|Ä ô¦pXpOJŒ’T±îx¨ÏÝ>¹¦1€yÍ1ùêi­×i4Ë_l`t!i’üÍ·éPNwɳÐÕûC啌.AëSÂÛP*Õ±ÛŽ*úä#ä|ƒæüêÊîU#AVFBŸALÍ%\•اEq!ÂŽ†–4óAßòÞ«ê:‘µ‡ì¶h|ÓÔŽÕ$ú™³µ–‰ûÆêô]_›x>Ën¿9êÔËt{{4ÞÙvúóT‘Z8”3Ì2sPa£ˆn9-ɪÙ.3þ}* œù™ïTn óI<Õ5„A»ªϽIkd.ç üj[Xƒ¦ó€Óåb]§øTþ5+d`¡éŒ~Upü¬íŒU‹é³qoññZ÷×mõ¬MÁÊ—ÇçZ7¼…^7SoþY“¼`Z‡YŒý©¤’üÊ¡ÔbÌÄ÷ºTöÿgƒæûïËV¦“gö;0§ï¿ÌÕ~ÂßìöÁO Üš³øqW1ÏJ±Ç~•“râQ$„†#Ü çõ[Ù<ϳ@Å|²w0÷5‘¨]ɼEû¿z¡³¸{YNâJ7\Õ[ ×´›9%IäTWM§,pzÖÄщíÞ>Ò)Çâ+¤¸Œ]ZHƒ¤‰ÇÔŠÙ™<ûWAükÇåT­[2¦áž6Ÿ®+˜‡pgøJÃ`n(Ø|µxg9ü*6ò=iŒ?žµ5‰)æF[(WÚµ´;–‰d…¾à9_ökGJ˜¢4L~QÒ’C²y'Û»(ZŽí¼»ç¸Æüa@úsLœ„ºiÈÎ:P¥gœ9ç¶(ˆ¥Ê;Œ‰3“žœRÆÉ21œÕ+Åg=ETºQ¸·z©t‹Ç­gÄJMÁÇ5R3‰=‰ª‘“¿Ö›z‰+õ*ê~lô¤¹TsœÃ­,è¯È'p¦ZÛ¼24„Ú8Å2Š9n¼S`ˆÆäõâ¤@[äÎ{ôæž¼ñŸri㓌ûÑ+g¦x¤ŒnV' ¤‹çVÏjrýÃßp>Ôá÷[ýª‘xý£Q;ªåqœŸÊ°PF3Í!`8ëÍFͺë 5ÍíÅ@Ngö,ζá¤aóž€úÓ¤"=Ϙô¦Ë¶2XýãÒ¬iRoRÌ>bx§Ú6TœTöM•$ŠÐIC™_äŒ|À¦­Å³Ÿ4üŠ9÷5iB±sÂõ¦’+$„*¾0˜ä qBÉ!RIÚ¬~î)±´K1ÀsÀ¦¼)ç v Ý2)Œ€Èu ƒ~üsUïdRv‘ƒëQܸ.1ïPÝH£ƒP´I!;ù9 þ1$óÉ­5 Y–úTó°òUó⧸`!XÕpK3E1WmÔMÅùJàŠXbóÕ•NäTÑF%RU©#,$’FÉÐV-§tšI˜ A54‘¤lnÆi²K™ Ë5$wB{Ëa!É2š|wK˜ƒrwåWÈæ·ÏéZ§§µ`ø‡SžÖt†…+»5Ïø‹RžÚe‚#µJî&±uíF[I–øg4ËHĬ 3ŒþU™´€¹™†jœLÒ/˜y,2j½¼²Ü–v^¹ý*8÷JX°àšd[¤$‘Ôñ]<@ª ô^µÙØíÓ?ƒ5Ó§É'²Š¡ÿHp>ê¶ãüÿ­s;Òd+÷U·çýk —÷îºsK‚cËž¾j(Žæ©=?:.îqKo!\mÆrEY±“ɺ"AŒëŽ*{71Üã±úRešoúh~_OJFÝ,Rz¹zR¶^"Ùþ*—Ë*›ØŽ*ÊÂÑÃæ9õ2Æc‹y8¬ÖmìsÉ"³óž½Hª rĸ¦Õá×øi ‡^Ô‚09ª—2`.K¯1ܼ “QJr8“Nˆ¡ [°ü)ÂM‘…4¾fÈÀ5,i)ù‡µE Î óQÄ~g^ óS…1 Ï~Oô©|´Áèy©ì_­"H•SÎ8¥WRœR‡R:Ôe±ž â¢çw^¼Ôg®3OXÈ¹ßØP©‰7”ÕLHXô¦_¡uB;S.lb¡»˜b¯ià""óÔô5¿ Xµàmö­‰woTŽHõ÷«@ d cšµµNX|SüÄh•Hä;ÌWTŒÒŸæ+ R9ÍG3í\ó/zI_jm•¤‘ö.1Y7nιcÛµR˜–9¬ÙÙœŠmŒ¥VwsžA§ÛI¶)¹ù©`”¤2;sÏß1uã‚ù¦-Á$Ó4Ô˜’»º[v˱PäèÆ®B €A#r“W£@ÁÀ`MO·1ù¬ùr@ =jo)M¨”¶]›…)@`å1¡Â¬Žs `@©"„EåÊç. S¡ˆ!Iïg"¯‡ cøÖúJ­‘ˆµ®²)@Äö®sÄ™î·à ¼s\¾¾â÷Ìì8JçµÄk‹€ÿÝâŸn-ÂFÙeC’>µJV,',D»"žBâ¦<Éc¶à[ØTÖp›˜í•0:µKmŸ:D«ÇV­Tr¨Ñ¼ŸÊ·%¹1Û´-þ±Òµm”o¾¼¥Wƒé»ùÿõ«Ø n¤]ÛC«©™LêN7ED–òK:¡à!ãM²±šæíS!ãMµ´’[•ÇE9«wALÈß9ÏÐV޲±-ÒìáØj»¨ª ”/Þ=*¯Ó(bÒÀªû~ÐK·ÅU‡ýi'§¥%É[Œ“¸ð3RNÃÊ yàf3þì€OµcÏrRUTä™Ö³¥›ËuUì9¬ù%)(•ia· tÏ~*ÀhÞ,çð÷©Õ‘Ó9ü*4Ÿs×/¼yâŸw‘Ú®«fÆòÿ7°«Dbبoœ¾\ûU¼³•æÝóR îSª9÷¨À²1ƒQ¨ùŽj;É#]ÜòÇ&Ÿtè Áäži×np'­R#§ÊsÍUÞ ñÍQgp*(áòìAϽ0¶¬©³ÍV†2î£<)ÎjÓ'éQ*’EtVÊM²î;FÑøV¢/î†N+Q˜€Ïj™¡DO2I0ŸÂ¾¦¦0¤qn’O”tõ+F©Kü£§Öš²/– üÙç$Sp±£=ùÑ6Ži¾pf»·¥*ÝHzÏoJQp碞=ª+â†ÂY]7H£ÇŠuÓ#ÙI+®e#ߊ.ÈkI†\qYzs;<Ç>P¼k?N†SJr=ꎜ’´m#p§ VÔ";¹ýìI­¨Z-*ÍXàÏ(“ZèÑéðƒÁ‘ûš$•ÝË)Š¡uw$Ò3aT®.^G$Í"†3B£ÄäúSm#ynâO.NO ¦ÚFò\"â&­oŽÙ?xë?ŠØIâÓ­d êdÏcÉÆi¬ÑZ@Û˜o?­UGb­)¤#§µd¤’;4¬ HyÅg«É!i%‰çéR0Æì1œ‚*a Žã¨9* 3g§J¥vápcQ·œ_Z¯pà¨ü=ª½Ô>e•Ÿ}lda4_2‘Èô5Væ ;>AûU[ˆ·6õäÒ£¼‘½Æ1ô5“’AÏJjŸ,dŽjKI<Øþn ¶ ú Óà1 <`žjHÌu$Š%;GÊ ëI ó VÀÉ4ÆBAÇz1 ÐЊñÐÓ£P‡Ž†›2–N(L %—ˆ¢§'æ=}…›©¤0{Ó7üꣀZ`?6;STÀvÍZ}Šö^žõ1ÆXŽÂ¥`>b;qUdí![•늬Ùó@=*«äI†éWË"¨îµ9¶qSð=*ägt(q‚çSï,ƒ¶?Z³œ¨ãùdÚ‹€íC6qC8UW?}r|Ò¨xÇ5ByIrf\L|ÂxH˜öÎi±.}*8½{j{[;Áp3o8\rLf®Ea{ædÚÎ8ï«ñÚ]ïɶ˜À i G0?ú;†ãhÚjرœÀãì³qÕŸ±Ëå7ú<¹íò·Rù*]Û´óO[K“-o7mØjqo1@LRqÛi©–Ós‡™Ù”•vô«PéÎì¯8”€8]‡Š™,™ÈiCà2!*c*¾ã­,p»Éµ­eTꇞié/Ì2ÿtÓ˜¢õlxÇkEÌ+_²ÊÜcˆÏmŒa@òýÕiífËÒ¸ÆÓT®4ûò1·æ«Mg!CåtôaQŤA<–M§¢«$7!ÞPñ„8¨9ÀU0ºãÑ gjV×’ÝÙ+*ô*¤ÕÛ+é'$Á3ÀÂT¯-/$™•)¦Õ˱hžl\Œ ÔÐYH-ÕšÒà²ðACÍO«ù µ¼¹¶š”4Â}Énãå dS­á½ŽãrZ̧iPJŒÒÁÒLJÛȹÉSK“–ógÆG#&¬Ç£ÌÍ1Ëv“S®›&ÒòœŸ@2ju£$¢îÏ9#šÖhI1Âç¾JU‚HÉÛŸ}¦šèî§(rWÒžÐÎès™+ýÃNh¤t'Ê|‘ýÓYP]ˆØ¬2±zV\¶w»-æ$q,Ödö×dA)ÿ€ŠîÐÇ´üöòÍ6;[Õû$ÿ÷ìñúRGov>Ï6?Ü4]Û]º.ÛyO©sK=•ã"âÖoÝš&´¹(¸·—>Èj?²ÝCjmfffÉÄf£W‘ÀZNrr@ŒÓ~Íu*¢ÚcžNÕ†µ¸(Œ°ËûÜo+Z™ìnÂ)[y™‚ÃË9+Ú\ma“‚FÑUæ´¼Ü6ÛÌà¢{Àãm¬çþÙšd–·A†Ø%?ðV r-e_—‘°òjgµºvZN8ç÷f¥x.ä[KÓû†˜Ö—=Ý~CL67„cì³ß³Qµ¥ÇüûËÏû¢7^hÿF—» 5tû°À›Y±Ÿùæi«ero.?Ü5?Ù®pÑåËŸô§›;§ý|“ÿ<Í=­®HâÞ^Ø45œÅÕ¼‰xø 4Ø]nì³ñÿLÍFÖW>`?g—þø4ß"s!ÚqއË84ÓgxXæÒãÛ÷MþÃiu¼ÿ£Oÿ~ÍXŽ+›L2ãýÃO[;ݸû4ÿ÷ìÔËou·ÞoûàÒIÃ1D½0>CKöK²Ç6³ôÇú³HÖ÷$Ÿôiºqò úUÃN\Á/'û†«¶™x\Ÿ²Oÿ~ÍS:uÛ1&ÖnØ4ç³¹ËKY‚Žû4>ðp,çÇýs5'ö}È]¢Úl×3]uwUØÑEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙÿØÿÀððÿÚ ?P,±1ln>••v[i-U/ Ù–õ¬€¦Fsš¤&¨¹€h!yUpYT€ØìkKK¶in‘Ê3$oƒ´wíš¿§[ï‘\©(rzìaP Q¶».ßNÕ×aŒTW7ÐY²¬ÌFê­soi*E3_¥A5Ô0H©#`·JŸ‚#¨5g¨Æ1jnÃùÑEQEQEQEQEQEQEQEQEQE´QIEQEQEQEQEQEQEQE`j’G<ÕÆÝÄwx®Zö"XsT¦U…IÀ«È¡=3U]x=éºÅ5<0$Éö÷­ \¨/ ÎIßZ~œ,d知uI4.v£©9 ¥t"XØ€I=³[áÑŽƒš«u§‹¹VF!Yz ­saÌ«,‹—^•^{4žA#}áÐU¨#hã¤.}ú ²£hÆsõ©ÐfÝéÇJ’N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¹Û·Jyû½+ŠÛyÉé\¬ò7™ÉàVn¦åghÁ÷5Zé˜Týj¥ë&߯¥±ûZ¦q澕wEr×Hù|Á÷±Wtg&vŒuqÕ»¤B–ÓI>c·!ý½+ Ó"H$xË %Æíýx=«oOˆ@Ï6ù:çÚµkF®ÑEQEQEQEQEQEQÚŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+œ¹8˜ó\Cÿ¬®Fs‰«?P‰žã^•Â.zÕk¥&\õ­ Ûfá¦`p ]…í4{§°>•¹áÛ]ªÓ0êZÜ·¶XF XÈÄŸjÚŽŽGqÕúšØŽ ŒÌ %»ÔÕ%>Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š:ÑEQEQEQE-W1.ؓ޸vÃ1ÏJäw9'Öª]ÌOÉÎ[LÃI*GýöSN^DŒõvWOd",’<œÇ­vð¢GC Ë]l(‘Ä‘Fp±ü¼{Uª’¤¢Š(¢Š(£¥QEQEQEQEQE´QIEQEQEQEQEQEQEQE-RQEQEQEÍFsÎ#“í\dq % ”rk•¹'î/Z­hߨEù }æ¬éÐR6DýÜoŸÀTÚ|îýdB#çë]b*!!.yú×U€: WH(À§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQKE”QEQE´Q\Œ²³ÈQ¸+Žk…2²£•=kiO”ûÞ»¢[ÅŸ ˆâ¹-]~•%„, É’ÕÓéÑÇ”L PdÒAx—zE‚ ;=}jUI8HpÞ´ô‘d—„ žµ¥STÔ”QEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-RQEQEQEQEqW*D^Zç$ó\|¾µÄìb»GzÛÐÒeµÝ‡ ç&» 8Óá,~PµÕijéeò6V£–;Ë ÖøP‹Ÿ0¾Õ:²É?ÉÑW–ʦVY&ýÙû£ïõ¢ϽMSRQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE´QERQEQEQEÇ^ペàä8Åq²:Ö§†¥Y­&µsž¼{é<98ŸOx å?[Ú©=ƒBImœûÖ­¬V°ùqrµ‘ -i"Ôâ¬S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ\HÒÌrzŸÒ¼ð±gç¥p›ËIŽÕ¥¡KäêÁIÀpw¶•Ö¨#C(ù±Öº`NvÄ€9#ƒS`úSð})Ø>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”˜'µ>”`úRàúQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>”`úQƒéF¥>ŸO¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+ÿÙÿØÿÀððÿÚ ?è«¢®ŠŠ(¢Š(¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š)(¢–Š(¢ŠJ(¥¢Š(¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢’Š)h¢’Š(¢Š(¢–Š)(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢ŠLQŠ1KE”QERÑE%QEQE-RQE-RQEQEQEQEQEQEQEQKE”QEQEQE-RQEQEQEQEQKE”QERÑE%QEQE-RQEQEQEQE-QE”QERÑE%QE´QIEQE-RQEQFsÅRÑE'z(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢ŠZ(¤¢Š(¢Š(¢Š)h¢’Š)h¢’Š)h¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢Š(¢’Š(¢Š(¢–Š)(¢Š(¢Š)h¢’Š(¢ŠZ(¢Š)(¢–Š(¢ŠJ(¥¢ŠJ(¥¢Š(¢’Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢ŠZ(¤¢Š(¢Š(¢Š(¢Š(¢Š(¥¢ŠJ(¥¢ŠJ(¢Š)h¢’Š(¢Š(¢Š(¢Š)h¢’Š(¢Š(¢–Š(¢ŠJ(¢Š(¢Š(¢–Š(¢ŠJ(¥¢ŠJ(¢Š(¢Š(¢Š(¥¢ŠJ(¢Š(¢Š(¢–Š)(¢—Ò—Ò—ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô¤Áô£ÒŒJ4`úQƒéKƒéF¥>”`уéF¥>”`úQƒéIø0}(Áô¥Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0hÁô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŸO§ÑEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙÿØÿÀððÿÚ ?èë¢®Š’Š)h¢’Š)h¢Š(¤¢Šr÷§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQÔtQEQERÑEQIEåïN^ôåïN§S¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠŽ£¨è¢ŠZ(¤¢Š(¢–Š)(¢œ½éËÞœ§­:N¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)•GIEQEQEQ@¢Š(§/zrw§/zu:EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQES*:Ž’Š)h¢’Š(¢ŠZ(¤¢ŠrÓ—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢£¨ê:(¢Š(¢Š)h¢’Š(¢Šr÷§/zr÷§S©ÔQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQãQEQEQEQKE«Þœ½éËÞN§QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGQÒÑE%QE´QIE´QJ½éËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQQÔuQKEQE%QEQE9{Ó—½9{Ó©Ôê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢™QÔt”QERÑEQERQE9iËÞœ½éÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQLÁ¦`úS0}(Áô£ÒŒJ0hÁô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£ÒŒJ0}(Áô£Ò•iV•iÔêuQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙþ¬— ôxmúxBðCðD‚h{E‚p}[!xå€:Aperio Image Library v11.2.1 46000x32914 [42673,5576 2220x2967] (240x240) JPEG/RGB Q=30;Aperio Image Library v10.0.51 46920x33014 [0,100 46000x32914] (256x256) JPEG/RGB Q=30|AppMag = 20|StripeWidth = 2040|ScanScope ID = CPAPERIOCS|Filename = CMU-1|Date = 12/29/09|Time = 09:59:15|User = b414003d-95c6-48b0-9369-8010ed517ba7|Parmset = USM Filter|MPP = 0.4990|Left = 25.691574|Top = 23.449873|LineCameraSkew = -0.000424|LineAreaXOffset = 0.019265|LineAreaYOffset = -0.000313|Focus Offset = 0.000000|ImageID = 1004486|OriginalWidth = 46920|Originalheight = 33014|Filtered = 5|OriginalWidth = 46000|OriginalHeight = 32914tm ï;ßs€ˆ>‘ã™z¢L«„´ˆ½øÆå—C-ƒ¿“Òœë¥Ë®®·‰À_ÉÛ 5w]Ó™€£²`» Ä›ÌDÕyï1Pî•wÖ¸à¶é—òòì/ÿRZˆ‰ñÑ7Å…ñº-Å.Ω֪ßGèÖƒ8Ü4’cwóiˆý½™Ø2;ÕŠ¨àðýøò z Y Ù „e Ç  KT ¸z ׃ ÅŒ ;• » x¦  te …·  *Z ›c ±l Ju ·} •‰ îí ãP =Ÿ ”wT'^gŠoñwg©ÒUuÍÔœ0eÕmÁv M‡–Õ89ûŸZýÔVrrzƒkŒ8• ¶;ã4áYµfœod) Ђð7¡¾¥—Ò8  p ^–?’  àãÛÖ0|Yl(\<­ Ь©5¸`½E‰@A þá[ú'#[5/iHFôM,5<  { Ì1ÃibXü9^Mpñv”À^>c£OÓUsâõˆß€«I‰aS7:m& îv€½]çaRXJq  ™mÞ YdõbZNWaãS° ëxgv1keƒfx_Ï[k4ÎìJBIN¢cÃf_]zY-q+ ÎÍÑ 2-U+v%Û%Ô ç’ÿØÿÛC (B+(%%(Q:=0B`Ued_U][jx™jqs[]…µ†ž£«­«g€¼Éº¦Ç™¨«¤ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÙÿØÿÀ>ÿÚ ?õÈã EQÐW¬Ã pD±F¸Eè3Ò½j8Ö$ƒ :Ju>E(¥£­'ZJLc84QI´ž¼Òc=y¢œ.0(££ÚŠ0)(¤4QJ)GJQõ¢ƒÒŠ(”QEtíGÒŠ? \sE©(£ß¥-QÅ´fŠSIE7QERŠ;ÑF(¢“Š(¥¢Š? ^ÔP:ÑE”Qõ¥íE(4QƒœÐOj(äQÇ­””QKEQE ¢ŠR8¢Š?•h¤£µR (¥¥Jp¢—­OJ(¤9¢KEQEŠ)?Z(¥QEQÖŠ(¢ŠCEš;uâŠ(¢Š\ÑGµQEQEu¢ŠAíE´QGëEQEQEQŠ(£µR~4¥&)($“ÐRh< ¡£­Š3GjJ)y£4RR ÞÔ}¨¸õ£QƒëKƒKHx¤ïIÒ”sJ:ÑÖu u¢–‚)sEáEQERQGj(  (£ŒQE%¨¢—­§éGŠ3IE%Š(4QEQEQEQEQÒŠZ;Ñ@¥¢ƒúÑEQIGQERQEQEPh¢Š( Òz(íKJ)E¾ô½è w¢Šâ“ÞŠ3JzsEsëEèê(£µ'J({QEŽ(¢–ŠJCÓŠ)½Rô£½RÑEQGn´P(íE:QE(¢Š(¢Š)h¢Š(¢Š(¢Š:ÑE( RµÿÙÿØÿÀ>ÿÚ ?ÐÔ|s%…ÐÒ~η­{mªx‹8ùÉê3ô«¶¾.»³‰ì.JÜMyÿ’PË!@V#'',3ž09­Ø¼SqmÿùÕg–ê3ä“rÅ )#>¤g=‡\×má;[»?Û[ÞÌ&‘Âã+ž8úWoá?µÂ9j/$H‡uÉÆ­u¾[…Ñ-ÖêA$€ dgÒµÏZ×=kJ–‘Kš(£QEE¥§QF8£¶héÅÁ”bŒbŠ(ïEw¥ÅRQGµ-JJ;ÑŠ  (¤¥¢—½%~4´RRQEQEQEQÞŽôQKKEu¢Ž)(£´Rñ@äQES&F‘0ŒJ‚êš-±¾ÉVôÁ¨¦¤ÛXCzTÍ5¬l䣪òYŽçØU BöóJµ–æO&h"ÚGÊ•é…?•T½º¸Óí¤¸.H£Ùˆ ž˜æ¥‚aqÈ™ÃAÇJ¹cv/mRq u  dÖ­[Oö˜PŒ¡€#pìjQÒ¬T´QEQEQÒŠ(ϵQÞŠ£¥-QE ¸æƒE&1KÚŠZNôPhR Z)i(¢—½Qž:Ph£ÖŠ>”ŸZ(£­ ? ´QERQEQKÞŠ)=¨¢E´QïIÍR÷¢Š:QEERQH(Ú¸{oÌ|Sk¨jRYRUŒH‘Óß½y¦“àVÚA«îlVòˆÁç œ òÅpÚo„õuëq©2OjŠd"%ÂÙO<€q]º€0@+ÒUU*¨UQ€À»€P QŒ“J94PE¢“$œRg xâ€piÔìÒÒgÚ“'Òõ¥ëKÖŠ(=(£½¥ïÅu4”bŒsšZ(éIE´QÞΊ %~4QIERæŠ(è;QKGj(¤¢’Š(íEQEQERŠ:QGz(¢–Š;sGµfŒÑIIA8Ò€N Çj¥cK¨¢Ý²Î XvçÿÕ\]ߊmƬbº,mñ,sÀáJÇË‚ ç ŽÜœW5q®Â/ÊNO“‰X˜¤cŽyô?rœ°Em @/s$¡be`ùÈçp8œr:z⸠éìÖÖ! wÑI+›g?\îqƒœr:Wy5 ‚!w‘É#e?®àG玕¯á­Zî6+y+ynزàá¸û®:‚çžœ×Oào]ÙMöMNé¬áš;Ãäp®3Aü>õ»á-jæÚO³ßÜ1‚`Z#3ÃdpuÀƒ]tR¬«•Ëó¯H‚á.rgÛϽvÑJ²®W?—õ§Ô´ú;ÑEö¢Šh¢Š)h¥”bŠ1ïEQÖŠZ;ÑH:ÑÐÑKšZ(£­wíKŠ(£QG½fŒÑE'9¢Š(¢ÎŠ)sE‡­R‘EcµQEQ@˜¢Š^”QEP3EŒQEQGåE†Š(¯ÿÙÿØÿÀ>ÿÚ ?õá^¹Ó­zçò¤ÎzQE(éEÑ»µ(4´½¸¤¤##Êýh4™âŠ)ÔãÒ–ƒÅ!Š(¬WÅN‘¸]](* m¼íúã¥súß´] ÌW™eÚN؆ৰcÐf±µoiZ9)<ûÜHŒd/±=ªž“ã;MN*HM±8+¸“Áé“€CÆj–•ãû[ûä´º·KC á„áÀúœ?:­¦øÂÚöémç…mÙÆAówõ8~ugSñ%­ºyÃÌÃÊ©*}oÇ:^›kÚÊ—¯2’žKn^3Ô~?:›UñU…•¼m‹tò©)åËÇ©ÿÖ°ö¡oœÀ'wlí`±ù}?‡ŒõÏZá Ö¥Üj¯i˼ ¬i;xÚ0Oû×+öB;Pkd’]àa€Eîÿ¡ëO&7—í>X¸ò¤’ÃŒ{ö'œõïM2[¬'Q6òCzÒ6 ÀŒ``údÏ<ѾíÆŠé¹Cž1ød¾¦ž—qJêМ¸dƒõ¨y°×¦UH”Ÿ)FU±úzœzÔ-4ƒ}á,,ÊqV#ôÿëÖÍž«kaokkst#'ïXŒppðù† ¯G²×,´}?O´¿»¥1(šE`|¶À?8ê#“ÇÓ5ÙÛj¶Úm¥½åÊ<°%u`v6ù‡P9êx­o´C…o5J¿Ý äדVÓ¡û?™{'l'ÌûýGçZ2jQwÝB¿h8‹ç9öõ©3W*ÅERz(¥¢Š(¥£¢Š(¢Š2QÖƒÖŠ£¥¢“4QKÚŠ9£ñ¢Š(£E;ÑE/QIÒŠ)h¢Š(£ó¢Š3ÍQÞŠ(¢Š:qEQEQFh¢ŽôQÞŽ¾´P£¶( Òv¢GJoJf¥%´RŠ(£bŠQJ/j(ÅZ@=iã­ ¹¥ŒÒžzBr1A9â”ÒóEzRôâŠZ(¢’ŠOj(¢Ž”QÞŠ(¢Š(¢’Š(¢Š^´QEŽ”QE%QEQ\Çu=GF¶¶Ô4ùâO-Èš9†U”ã“Ó§·­qßuO@ŽÃPÓ'AµÙ&…×p‘HãØúzŠæ˜òyr¢J•\î'ºúc?•RƒÄ7> Ób¶ŸOÙu+ä,d•*$÷Æ?•iXëVðn¶º›kƒò¼*ã¦GÓ¿­hxkÅÖv«.•ªÝ®`‘‚.̤h ¸g¦çž@äÕýÄV°ùš}õÀIábÛò¢ÂäztçšØIE ¬A»(¦ŽxÖH]d{WF’$Š2‘Eak^/Óôk˜m|·S°T‰I>‡Ó¨®[ÄŸ´Ýþ=5c’êùÈÌH=‰Ï½sÚçtýú=<+Ü^H@ò£3Øœñëô®fm7WÖ'´ÔQ¤– ¯À!Éì=sÿ²šá´m3OÕµK»mY¥y’Ý®d s#uÀ=ÿ/á5ËéÚ}†§um©y’M>t‡ûäóëÿÖ5™¡é÷—× ©ÉŠÂÞih « ¸Ç ·’OBk+CÒçÔ.åÕ®b)§[—-³ø²¬(ö%NO¡<Öv¦ÜÞ]>§qKÉ Æì© {¼ŸL×F¶ò2…¶Ú°QÆx‘ß±§ØË$pºÅ|’Ox‘ßøãëZö¶’]4VÑŽ%l’OLu'×õm"’óLKÉ¢\õV\ì$O|ô­ žóD}AG»eÛŒ…?Þút<æ®4RÝiFõV&9HÈSëÿëÍQ»µ¶·I%“)¦æ>‚}=Ee]„‚5óÕ–1ûа秷áT.DqF À¬c÷¿3``dg==ªI-JiÑ-¾ÝÃ7Œ§SŒŽããµ_òéöË SÞ‚qµ›q Ó·oJ¶ÐeÂW# ck6ã´:cŽÝ½+£X#Ô?ysg)¤®Oç]í¼pk…¥¼ÓbâÀ]빇¯>•ÖEZ™2ÜYF®˜zäûóQÝø~Îuf†%†lîWN6·¨ô?JÏÔ¼¤ÏºãO‡ìwŠwÄñ±_±Ÿ…Q¾ð†›03YÂ-®TïÐûéøSàÕ¢HÖ;Òa•2­¼u#‚~ù«ö>!Š+UWÍ•ÜCl¢OºHêÀŽ0zÕË]b4· ¨ÿ¢ÏË ~„ޤ˜=jürÇ4bH¤WFèÊr kÃq Ì+4¤±¿Ýt`AúZ1ËѬ‘H®Ê²œƒøÓIN ÑE-¢Š:QE-Z)Š\ÑÍw QKEw¥¢ŒÒ:(¥¢ŠO¥b—4QIE½¨¢ŽÔQA¢ŠLš( (£ÞŠ(QE-QEiZ(¢Š(Íw¥QÚ“84QÜPh¢ŽÕÿÙÿØÿÀ>ÿÚ ?õÌú×­æ½rƒÍæR©ìh^âŒö¥¥¥íE-)2¤Í¤Í„÷¤'4RJ:fKKE¢—µ½Eh¤QE'z(¥¢ƒÖñE–ŠJJ(¢Š(¢”QE%QEQE/j(¤£µsºà·Ô&—O¼‰$‡ó Çÿ¯Ö¼ûÅ·ñjÝÎy˜# #“qù¨88ç¦=ú×#â ¨¯µ.ê5hTŽIÀb ã޹ô÷ëUm¼$«¥%¨i"ˆŒjËec,­¹î­Qc–àÄÊdÚ:ò=ÉàãëÖ¯A$6zT²£2]Úm‰î2@Ééî{ãëÖ®ÂñZéÒLŒÂæÜ,rN#!¤ 1ŸÔ÷ÅjêFM&Îáeo4”J®Ü¨žýxäÖεkqáÝîÚâán%ŸnÇEØ (ÉÏ?{åþõ¥ªC6‹¦\Á<Ây$ÚU•vª2{õùEbøBöãVÒÒúá¼H:b1ž¸#õ¬ÏZK¨érê×Dy3‡IC2¹'#Ô‚ÅføN)5-µ;õs†Y$ddž=qŒãÞ·§¸Q­½½»F»¶/˜Än'=±þr8«÷÷°ßÏ †—n°AÂ4{‚G˜X¸à1ôÅ_ººKÉ"´±„Cr„V˜‘¼°à…ÇAŒ~UC^ŽcIÔ4¨n2ñÛ²œÇÜv'ŸâS¨—e¥Àtµµ(ÏUœüÛ³îj‡ˆR-VÚëM¶œ2ÃlÉ¿9Ï;³îj 뇰²žFÌvùwSÈ €F{üÄúÒøNÆûS¾±°’á£0[óPê¹g<ǾzÓ¼;ky{sgg,ì­ ¾ã"˜Gî2{×t¤*3……zè"4Æsý+Ñ3µyÎô¦5Ü(ÅI ã#ƒÍU“VµŠBŽÌ­·* [@ÈëPµôû°leAR7W7tÉy¨»êMmj ƒºO@p2zൠ›ÿ\j+gdpZÌ Ú§Çòãï§³»Õæ]rým­8-j7nîƒÓ½X¸³ÑuH-HñµUÌlqÐm8&®jV~ñ!Ðn-EÄF‹#FÄÛN ~"­^[ø[ÓDZDðy±pвlÛN üiÚ}„ðiÆr튥¶¨$àgÛÓ.áÛÍ?A7rݽ¼ëIûÙÀçdŸOsRéš=ÍŽn$¸heT/û²r@õÿ ,¼B<óìy$ åHØàŽnÿýwi5ŠH!k‹üË4ë†hÂíÁ!‡¨=sýWMñDRÅKwûÉeTò¥@¸çp{w®„Wo]ERÑKš(ÍJ:âŠ(¢—4QíI“E-.(¢“Š){ÑE&9¢Š(£½QKEQE'QF(£fŠ(ö¢Š(¢—¥fÆŠQERw¢ŠZ(ïIŽ(£¥-pi)¦€¤éÖ@QŽh¢–—ëKô¢ƒIIÞ’ŠR8 Ž)qA£ÒP8¥J_j(ÍèÅ£ %§Ò—¯J)?1E/z(¤ïõ¤¢ÆŠ(âŠ(éEw¢Š:w¢ŠJ(£QGJ(< ÐÇhÍñX׺Á„2¢¹c¸|£%{ýkŒ×¼föªðZÁ1•–Eùâ­Ê¯Óž}zW5«x•íÑ¢·‚f‘ƒ¯î×qSÈO_^•NÂÂòiÒgŽHÕeVýèÃ:ä óô¬_xs\º¿¶¼¹¶’⺎FkŽ”rÙïÏПË;GѵYî ¹¸…áXçG&c†eœŽàóô&º\q^›]¶ 2X–XÙÇ5Ä qÄÀ|êW8éšdÑ,Ñ27ñ3é^eâç}*ùW 'RXmÎ㫌çœvZò-OH»Óo.¤,K0 "íÀ'8\g?úõ¯8Ô¬§Ó¯%rØC0Ô§8œöô«ºíÎ…%Ų/›3l²o09`]ÍÆçô´kÐjii:Ó]-ì°^Ÿ7lò?*~®·é¦‰cÁšàlwn tËqŒóúTzu·•|'’þ[‹q÷•»Ç®zV^þÑó®.K5Q,x+Ó~;ò? £¤§úw=ý°QÌz¯MøìsÏåZ¾$¶»Ôí#‚ä·xÈEœÆÁû¤ãŸéÒ·¼\—Z¶T»D&90q€+œsŒ÷ÛÒµ¼M Íø"ºXŠ~í%(ýÞ‡9üvÒéóXhZm®œd3˜”LNye\ííÀ­*]7Jð劗œZ9Y¿vAI$²®!ÐVŽšö:nkfŒó c²Oä1$’Àtú Ó– wO;ÍÅ0 ›¢,¸õÆ}ª–©cmo ݵߜ·Š­ x7ª©ÉÈ=Frz~5¡kQµÉ¸óÐ x·*©ç öÎOOÆ£UU# Æy_¼ãÜz~5œ%¼A#…Žâw!ËÉŸï8õïTÆÔ†0©Ç”?3ç×·o^õ™-Äz.¢º‹¤þNBLT6B±À8Ï@@ÏÐñOÑ/-ôím.nåš;õnÀ²1ã8<Œùnu †¨..T‡ý[TáÁé?#]=´/Ó8d’ †~\jô {[?WóWÉ6s¡ÞAù~§ïÏà+¯†ÞkMCÌ3m*Á@P¤*†·ªãj¤fl’GÔ6éŒ{ÖOŒ¬õéá?fš²;°°VÉí†?ýzÎñ-¶­,DA$?gbÂÀ§<þ½`*\éûÖ{CŒ’‚gdÿ²G†+Íî¬.ôÙêºYŒHr†bÑí9þ¼¦+‡¸²¹±‘Σ§í”ÊY6óü%x#Û®ë$ÐîQ§ÐãH&ÿVàùËPÿ±þ•GYÒõÝh¥ŸIýÄØ1Mù¨Ùäa‡CZÎÕlu½â'“HÌRœÇ,Oæ¡Ät?Zê­//®­­ç¸wK+±<ó†ê íøWY-Ʊ »,ÒÇfcc0/Èä6O'¨®­æÔîÒó;SÁóAn{6O'µ6ëM…®€b æ¥vs‘œ};{tªw:,6º•²%ÊH¡Ñ¥RŒ»søýEVŸIŠèfWPêÒ„m9Ïù"»eäs^̤‚+ÒÁÈr)Ýéh¢Š(QE¼Š(sE/´QKÅ.(£ŠLÑH1G½¾ÔbŠ)qëEt¢ŠCE”QøÑE´QÖ“Û­~4¾´Qô¤=sEizŠ(¤ÅPh¢ŒÑE.=h¢“¨¢Z9Rý(¯ÿÙÿØÿÀ>ÿÚ ?õêõßzõÊ(ì(÷¢Œö4½¨£¥%”½M¥ÅR 4S³ÍŠ(4œÑÔ‘IÔÐh ôô£PzRQ@<Òýh¥Í(£4w¢õ Ñ@âŠ(8£QšJ(¢Š9¥íE)( }hïE/ãKÛ¥‡Öƒšl­Òo5cóœæ³âÑ4èo>Ùª¬û‹oÉ<š«›gÇÚç;½êz¿Vh¢ŠBHR@ɧ­5Ù–6eBì!AÆãéHÄ„%Wq…Î3í^u®› ÿ‹=RØÍ5¨i£!Àùþ\cAf|ç¿$p>½)./ÔgD‘¤•ƒ_•JàŒð8ÇN;S½û"=¡I#χ(‡•>¼zgqO¿¼6ÊmHGw›æ*§ ·ß¡íÓŠîcæ%ç<kØb9…;†ÑÏ­z:«Sœð9õ§ÓéÔQÖŠ(¥š)GZ3íE}(£èhÏRÒö¢ŒÑE©? (ïG½RŽzÑE'ò¢­¨£éKÖŠAšN”RûæƒEqš(£ÖŠ3AëÖŠj(¢ŒfŠ(è(¢Œw¢z;ÑEÒŠ;⎴QÒErhëIÖ“µfõ¢€`ãŠ0h££¢–Š(ëKŠ(ïGJ)OzQHhÅRw£ëKš(¤Îh¢ŒÑGJJ(§gŠ_¥”v¢ŽØ£ÞŠ:RQGQEsE¢Š);ÑE.3KŠ( p(£Ž´sŠ)(ö¢Š1E%%SÕ.~Ça,ìØU3ŒžÃ8ã5‹â«æÒô›Ã! *¬Ç<.pqž+3ćNÒ'»f;cÚÒǰÎ2x¬; GNš!w0··¸‘@p:ñÀúúý sZ/‰ô›í4^Ý‹}>yË(½p1ŽO^yükH×´ëÝ=onsH»JÏ:õçŸÆ¹ K}fÆå´KèKZý©/#hdÈó6ò3À_ιûØõK9²®UæÓÖíomæ÷y1ŸaÏ=FऋRµ”i·JÒY­ÒÝÃ,nÉŒ|ûNyê0;úõ«özeÍ´ºœr•M>ð*Æ…=÷7òüOÖ©ÙYOjuì°¼Úˆ6€N Ë~~'¯Ze­œÐA%`–7{Q×-ü¿[F+Ñcc¦ØÞ-”PÄ›§dÜJàpyÏ<ñßÒº¥{»k#J†ú; k+t’Iß«.Wä¹ cžx­üÝA6Ÿ§Aw”°«<ÏüKÆ3È=rqÞ³t­*5¥¹yŒ­,¬ZRs¸’O@ü r7[¡=õÁÌ-pÁ^?ãö<È÷®iÑî[»‚JŽ?ˆž#ò5cTš%Òu—Goœ9éŒáüªDŠ+Í7U”¢¢B¢x¹ÎÓ’}HþB¦"9´ÝJv@©'9Ç\/×Ê©xSÅ:^©gRÝ$7ªãä'¿$qÏ­K¡j:5ÜKms¨-œêwÀ'º“ñ#ƒõ§hº®“{ pKz¶ó •³nÓèì“ÈìmÛ;Z7Þ9GQß>”ɬ]íŒð„vu$…ävÀë×ò4Éü;u&“ý§d‘K,èÍ*FoLäm^¹ý G6;ißoµXä’Tc" s@õþUCÆò¸*8%³¹Ÿ™&”—VR^ÞݳË2ÿk޼ú{UÓc¸¶{–F‰å³¹s¯jX|ÅLÆ92!à~Yüê“é÷ŸdûJÚ±†" OggäOõUí.VÛÏíåFAóãlíü³Ç½ •­•Ú+†QÉc‘Žy9õ>ô6½©DA·¼}Ê0~Tñäûži­¬_D·ºbÀaŽÕÇÔŽçÞ¹ýw\¾¶Û­ä"waæ³Ã±‹¡ÈÆ{ŠSâ­m"’D6Ï0^W‚2åIÆqÍG/ˆµdÞ?³¼ØÚò<1–*xÁã8æ¨_\£y$þê9[lì bóõÏzƼ˜Ï¨´“â!pêg*ÄŸ¼rIïžõ—w1–ø´¤D· Å[ Üä÷Ïzô}%DzlÌI7.C§Ýoqõëø×¸øn'‡@´G–)Ṅ‹î°ìGÆ×5ëZ,m“¼‘Èvçtgå>„}G5zµ*õ¢Š(¥èh¥ëFh¢ŽÔPE'z)sJzþQš;QGjQENh¤íÍÔR㊜QE-¹¢Š(¤4(Ï )sïFqEñGÖŠ 褢Š3Š ¢Ž””RƒKíE%Q×­sEÑÚŠZ1_ÿÙÿØÿÀ>ÿÚ ?õà1^º8¯]h£ð¤¤ÏÍŽôÜå°( œæ—4Í---â‚i ¢ŒQE–Š;QE” (¢Š)h¤ ÑE%¤æŒÑIKÅ´”RRþTRö¤¢KE/4QIIEI¥ôQš;QIÖŠ( {š(¤ªšŠ]ÉnÓnæl>ãü8=8õÅeøŠÛS»Ò$‹J™#œžw€w.G<ÕCY‚úãOhôù%'ÀŒ9ü+Ìõ$Õ<5©3ÝF×ÞGš'l6ç‘ý+Çïìo4$zŒù1¬ëN0[k6z=ëÍníî´G’;øw¬Q¬ËN-†9è;qï[š{5ÝŸÛ˜<“Ê2Ÿ.ÅX)®ÝÝk~ I%ÐU!‚o4œ q‘œs×çÿÕ[°^,ºJùQ˽¾èažqÏ\šµqö™®­E´p±¸Œ™¤nAPâqïŒÔ—‘_5ÅœÐÃ1ʰ_ºI÷ {àT·)vg¶xbˆù‹ûænC8?‰ß¹Ëj±i¦8æ*ƒo”œço ãõ¦x¦fšM;ÉRŽˆ K³ÉC’vú ƒùÔzû4‘±òÔ«ªf1´Æœ“·ÐqúÕ‰åK 3$Ò´‘Ä|’sìÌ}¸Éúõ¬û™–;LšXbÙ¹æÃ»;›Ø|¹<÷ëUneHí¾iZHcÛ¹åÁ#9Ü~œdýkÆÂù|;u ³'•p± .ðzúc?­V¾žïM[HªÖwm 9QŸ•dsé€F?©j¯wi ¶åU­®Z"ävUpG>˜Ítš‡‚t»í*(#Š;k˜c ̃×?By<çžµéº×ƒ4­oLÏÃ:&Ø®a\2¹£=vÚ¯…4íWOÖ Ñ1ÄK†C×>ã5ÍYxrçÃ7éÌ­4üK*9)+P0;gšói<'¨øfFŸ{ʲ²K±ŽB§#±ã¿¥qÉáË¿»K¾I|Ó‰dF%$aÇ# é[6÷žýË6L{‰ “Ï·áŸzK{››A·â´iCLŒQ…íëߎ´è&žÊLÁ3ÇjÒåª<äß­[·º{K“"¨P͵Õ[*ãÈ$’9­?]¸Ñ59$UF¶y K2GÎå,ĆÇ#={Ö¦«>—|îLådHßr°ë¸r¿=j½Í¥œW =¬¬¥òJ‚Ë’{tÆ>ŸU¾²Ð¢ºóôÛÇs’¡Ú3ósµ¸Æ;|¿W¹³Òa¸3XܺùÝU]“9çiã§n?­§§Ï!³l²Jkù¥”àààtÎ{*•Æ É£<¨Ûd72:«2ãä÷æžÃLFû:i¸šDm®gv޼`Œäýk!´›[ «6º‘ÒöyÂ)ecû²yVÏðò¬&=.î×í%๚@<¼1V‹v`ÝŽ§N••äC§Ý[†x®ep6ÄóTﻄt“£{sÓŠ|~%³‡»‰bàoÚàí?\â _Ï ž^¥o*>Wx;OçŠhñd‘6ÛèV3FÙÁþU¯o:¦Ÿö–”ÈŒ¾`fãå<Šë-$û>˜ne¹k„`eÜ|§?*Þ·“ʲóä˜Ê¤ž>SȤӵ(õ2DLeX0<{úóš]7SS‹Î„,ò¬CN³½KØüÈÀØy6r*å]«¢Š^”RŠ8¢ŽôfŠ(¢‚(ÍQ×4P}hïš(üh¢ŒûQE(£4RfŒý(¥¢ŠAE¦j) %z(Ï4™íKžh¥ÅŠ_åE˜ô£½ct ô¢’Š:ŒÒç4RÐ(¤Î(éE!¤Íéq“ÒŠ(üéh£µQŠCEŠãE‡­/z;ÒŠJ9Å>”QÍQIEQE/j(¤¢Š\÷¢Š1Š(¢—Qß𤢎‚—¥sEQŠ(éIE¥R (¥Çz(¤4QEâ-£·¨"ºø¼á¤êº¸BÍÒAŽ™õþbºfŠ7R®GZìM¼ ®¦ÈåÁQóSë]!†"× rÃO½r^#ðX½¼‹PÓî'·–4t)àÃOè+…ñoÃż¹MGIy!‘•áFàäc"¹/ø,^\¥öŸ4°ÈˆèÑ£`ÃúÖ<°\ÚAâCqÍò¬‡ý³ŽW'&—s¦€º…±Äî`TL\çl{v¬Ó§±D°“,Arì6‰€àçŽíÚ¥…mîî#–x'VdâY”ºžH`¾Ç¯ãrÁ,ªyšáT¸ÿIXä«*=¸Ïÿ^ͤv…Âù2´sD«.gFecÈ`§Ügÿ¯¶šRnˆÜ¦É$û‘¹ÃîŸÇ´gðúÇ{mÙ‘ä¹\ÅnêA`VN??ʯˤ(¹‚;¢í$ã÷p°# ¬œ~uB÷L¸7Q[¶ßôyÁC‹ŒÉç <{ Ãñ&—¨ZÝÃi6Æ6ÅXÎá•!SssÑOÕ¯X^Åu»ío³•!çbB®O=⥗O7vÂM¬V3‡!ñÏõëÒ«Ç¥\^é¨Gøar²É³Îr#P®›5ÞžoR2ñÄå\«€zŽÝúš—Ãs¥Ì–m.æÉ gi¥u~Ô`Òn¤Óç¹]åŠÈ •Æ:uíÞº/ ÞCa+ÙIp¬áŠº÷XGô­­OMÒîDM{ek.ÖÂyÑnô®«\Ó4Y<‡½±²vg \C¹wv½ªXirùMwijä¶Íáš‚]v×[>ØäDù8ܯô=? Îÿ„ÒÆëíšy ÔQ˜ùãôàã@zÕ?øI­'76\GÿÚ ?õêõÑŽ•릊1Í¢ÆEQGÖŒQEQÔqIÚŠÖ—QIGC@¥Rv£ñ£ôQEPh¢“QKžÔQЏ¢“µ%´QE.h£ñ¤¢Š(¥íKE'zJ)(¢Š_z)sIEh¢’Š1EÉaI—k®@é϶?­EqmÔ~\ ‘ìÄvÇo­2Xc6H2=‰ʳu[eŽÁ_rưÎÍÏËŽO?Ö¹¿éÐ`[r‘y–Ü0wzðy¬mvÃ\B"‘ˆ¤Ý#Ý‘Ž}k¹—H¹¶ºòcYe’Eýú“É18ØÕÃ\O£[êoZeiã+xÒ2ª•ÚÌxAêrwéQß< m¾Fº.ÁA]¬OòÕ·an–úc›7óÒÞF1°;ƒŽ¤nžãðÅtš…šÇ§És¦Ê· jYâXÜ8uÆ_,9'“ùVíͺŧ¼ö2 ’ܳFƒ[‘ÉÿëS•ã¸ß4ˆBùj~`3Ía[˜ï^[Ù-¤òÒ$ÎüçÓЊ̀¥ÓItð8EE-Ïò8¨äQ`uŒš¯}DG>R.pÎOPxéÇåPÞGµ£ûЏUÀ#9î·GR¶ŽîÁÞëË_³Å•wR>Qž Ï`óÛñ«ÞM¾³¢…ÔZ(ä³…Ls°*JŒáXç‚0yýy©Þ(5=+Æ5{hÁI[ •àžÄ`óúóVôMb["¶ÓÉ=Ô-€ˆvŒ‘ëÆWßúV§…üMqaplogžò $’Ï#Œœò§×úUý Z–Ò_²\Ë5Ì,@WrÐã¹î§ÖºÌäW ŽEuÔÙ#IP¤Š®§‚dd°Å º²ÖLQYIu¦ÜJ¥àÉåNHãñÆ+Œ»ðÝŶ¦cKW¸±š@Êñߨ9#é[°[É ~W˜ c€1“­v–:Uű´ûX{`¥UYIp?ÞÈþUÔZØËoÙÄàÂËc뚥} V÷PH #bRFâ݇ó?…bx›M¶´½ÒäòÙ£–à%Ã6\¸ÏŸÅ¿k+Z³Š »JI(IXüŹàÌÖV£g1µ’î%³˜ÐɜΠ#·±¹=FÆçE†kAqqe.àðI¬Fvä`ƒ\õý¤Úm¼–ë<Ö’ƒºðHèr>¤`ŠçÃßÛ:YUåu9ù|³Ç~ÕÍIu~%k™$Ì’§nÌûàVÜ_,q$™’DÈãf}êÍî¨ñé~eü¢îÙW- \°nŠúօLju ìÞÜ‹¨d¤‹¹•ú ­þ5~mjñ쮦¨æ7]Å[ ÁïXw1kšÝ¾¡kû{7ó $¸1ÐŽ‡§56:¬óÇ©[Æ‘ûD«æmCÓ'Žj¯Øõ)ç‡RU£³>tˆ$Ú$‡ÔñÀ¯Nѵ?íM:+–‹Ê–G ì`H?ʽ“ÃÚÒkš<¢/)Ø”’,ŒÆÀAôéú×§hÚ¢êºlWB36Uã'” àçò­ÅjUú(¢ŠZ(£§ZZ)sG¢“¯ZJ(ǽP(£µ%Rö¢Š?\ÑE%w¢Š(¢—9¥ëE&húÑFi(Íõ¢ŒÑš\ƒE£Š(´1KÛŠ;ÑH:ÑE.{QE¸¢i?(íGOŠCÏ4†Š_j^ÔQš3E£ëEQG)(£½¨ /zJ>´Š(Å¥QEQŠ("Ž”QÔRQIšZ)zw¤£­ΗµzŒRÊŒœíÖŒœÑE/4´×’4*ÕK«“Ç®¿1’2N{Ò dà{šqàRò( t¤¢Š(ÍQEQEQE#dƒŒg¶iÈ ÷õ ò1^c¨\7Æòé‚# ¼¡wÈ«¶1$¤|Ý{Ÿ~œWx„ù%Ó Sh’”]Ç”Üàrõ㼿VEñM:%6ÑÉ´n#)½ÀçŸ^?•jÍo>™MaqHÎwD©´?<;`þêÕÅ…þˆ?qsæ´²”ò–-¬NIÈ^Ãàç·^צ´»ÒS÷C#•òÖ<rN@ì1Ž M§¾ÆD<«Ùa>d[³´†>ùÉééWmn ~Ô¦˜æöHÈšÕ]Xsøî5n ’4[Édÿ·OÞÂ:«Ï&«Y¥ÇöÜò;“götEŒÿsdà÷é\Îs=Æ£,×)‹p G¡mÄt=ðEsÚÝÍåä×Qí€(Êÿkq÷Æ?*wˆ,®'Ó‘mŽBJ¥âs·x ÖÇfüqšÕÖ´û˜¬¢KVÌ,ê²ÀÌÌלƒéžµ©¬YN-¡Kc˜‹¯™ 8'ækcœƒõžmìµ[ö–»¼µgË6ìð¼t'ß9§hÑØÚj’&©3ÙÛ+y`ȬÇvs·ºO¸§i‹km|é}+[@b™c»9Û‘Óñ®îÞH¥ 0¸¯X³žÞâÖ9-\<8‘è+¾‚H¥…^ >R*Jš¤¥ÅRQE5ãYdT76°ÝÆ#¨!°}j9 Žá6J¡”àÓ$µ‚XL2F®‡³ ÔWe•Õ›Z\[¤Ð°#lŸ7ó¨ç±¶¸µki¡Yba¯ó:æõ 6æ$* #…Y˱!ÕBõ³:ñ^u©xföÄKnðÁqok ’¤è¡zƒÐ° cb¸þ"ôç±úâ¢ÙÛ=ä’fÜ6æ\¾W§<“Œvê<›o³@n˜îUq?xŽœôäôý7´Ûê3IdR@ÐGæy²7)D{¼æoÇAÐôüëvâé`µiö³`d êÇÐ{Öíæ£–ž÷’+AŠ2ÄúzÖ¹¼ŽÚÑ®X…Ú:Ÿj,nZê5£òþvP7ÈÈ£M¾þдûG•å‚ì n ÈõÅw&îßÎ1ùyfn gгVóV=¨¥æŠ(õ£ÞŠ: Ð=¨£µŠ 'bQE)9¥P)(¢— QGj( u¢ŠZ>´P(¢Š)Í4óIJ)@¢Š\ÒŽ(¢ŒóEŽ”P(íEç­QE-ÿÙÿØÿÀ>ÿÚ ?õêõߥzïSEé@¢ŽüQEÑÍ”è¥Å.(¢’ŒQŠ(æ–Š:RQGZ1Æh£ôQGNô(¢Š3Å.x¢’“Rç4(=(£”´QIE´Pi) «YA*r2:8=Fh dtéKE{QERÑE%QEQš(¤$É BÊvF=i 3ž+‚ñ³XÝiΈÊnª™Á;°î½GìEyWŒ/t¹2»n/!µ+d± HëÈ#òü1\Š'Ó¥T#l×18hS’psõüúTš{Åykͤ²)Ã)!AvãõïU­õz Ï&é$&öÁÉ Ž06œæ™á»S)}ÎãäÞÜç Ž00sÿë©n´—¹tˆe\«;¦íܽú`°ÇZ׳ÒVãÃKm*Ã3²6Ì‚9#¯Br;Ö„:hŸDw‚EŠF]Šg#2>„ñRé¶¿Ùp[ÈŒó0fyZG$—#ût?fi‘>‹– Šó´~cÌÒ@•²«øcñªV>• ­Ú{HÒþñ¸†0¤u$šòd”º˜ˆßž Ï ƒÐƒý*¢Ü™®Ä“»¹<±žn|Ûò»±êqÁÏ_Ƴ¥d³I¨Ý™f»…”’7…ñŒ÷¨¼Ë ç—R½t™fºbrXoÆÐqß{Ô8°šg¾ºe‘e¹.H·h8ïëú×gáɃÛL)PùR:Ð*ôO\¬–71‡Rl©0xÊ»? L¯k2†,™t ð?•m éëj–Š) QÍPh¢™$QÍÇ*GR¬p{Ts[Ãq ‘MºJ¥HûÊzŠd°Ç+˺ÊÒ*J£?2\æ¼»Ä^ ×ìïœi6©y§¢ƒ¼ºÇ6Òy#ïcÔó^®xw]´½)¦ZGwb¡Nó Ž]¤üÉ‘÷°;žk£oiÒH%‘ž]ª|¤“c'©ùpOâk¢o†zC¼²¤E§åˆœdñ‚xé“[§ÀÚk1vi$‘HxŒž§ŒøšÌ¹Ñn4»vÜ)@ѬGüúÖç‡uM ÚKtT[7Cøò¥òFzãŸÃ5™s¢Þép4(mŠ÷G•-Ïý9©t]JïM¿H/nZ[YÃ*¬Ž?tGNN1ŸLšŸÃõÖ•{®£}æÚNŒ†9¤_Ý88¶1žxÏz—BÕn,.â·½»ó-åB»$qû¶ŽN1žxÏz¿w-Ö—~÷»Œq9ù­P†óo@õÀôþu©}{¡êÍzÃìðÏ&ß±+‡9S‚ w$(í~µ~êêçJ¿7Mû¨¥m¿eV æ9¹ãÒº08Î9Åv‹£pÁÇ8®”g#¾)iGZ(¥÷¥íEš3ïE­”~8¤¤ŽhÆhÅ/9ö¢Š(¢ŠQšZ(ü(¢j(£œÑEJ?'SÖ’’—¥.p)sE’Š8éKíÒŠQÅ/J()(£cÞŠ(éÞŠN†ƒE­ÞŠ:(£“E™ bŒŠ^½è'ÞŠ;ÒQGµ-;Qß­­¢ƒ×¥%¿…Rb—·Z) % É&ô Z)héÖŠB1EQJ)xüh£½š1Fy£­ÇJJJNsÒŠ)@¢–Š) QFh¢‘™Te˜êM5äH—tލ¾¬qHΨ2ìz“Іiã6Ò4S&BœÙÇÕJúú&Òîdµ¼„:ÄÅ>pqÇLÿ*­us±™à¸Œ0CµƒgÙ®uu’YÖkã#.Ž3·Žç Ï5æiâÛ·–e¿Ö$ŸÅ yjPOAÔúsÁ®"?NÒÊ·š“LCc‰¶)P9#ÔúzT÷W÷¨ˆó N=ºšè5ý[U¶³Ž´U³¹UU A*˜ä:u5³«ßßÃn‘­°ó’ÐcÛ½b.Åyî%Ú¶íÖÔ^äk’Óâ)|f› gpëáwÛ¹#Ô€zŽÆ¹ÛH¶]´²`[NÁmÈ-žHú×ÐÕ«=9ôëÆ07›±³ò~VãÇ‚>ø›·%µ…ÓÝY ¤–ùû;pÄê:~µªúD6w2Oj2²C‘ $á±×ß·ëVEÊÊì””ìN9ùHÈ9 ž¼ŠÁ¾éZ¡Žâ ."»•B(,L¼ü¤dƒšÚÐÚÁ#ñ4Vúeäï$G(7b(@?{§Sùñô¯.ñœ·Zî½¶™u9–3¹y(€#žOô®Šú2Ž¡þf˜-ŒsƒÏµ?X·k{¤y”²Í€ÍŽýxkS€Ã24 ²Ë€ÍŽýxoÆMBI.n’66§l Œtþ¿S]7ƒ`›Xº“VÔ-cU³l¤aÛôç¦sêxÅmxf9u+‡Ô/mÓÃm«‘Ûü÷õÿÚ ?õêõÚõÞ”RIE´QIE(¢Š( óIE©zQÒŒqŠ?J(£ÑA Žh¢—¥(¢“ŠJ % (¢ŽœQÖŠ)h¥¤÷¢’Š(¥¢—µ%qéE”QGQEQEg4wï$ì›G8BÇòàvÿçÚß\–îúHÊF±;c8ãNµ”aÔäžé”¢n8™ºN8±üê³Zê÷hI–aÎ@8ü*“é~)ÔÑVæú+hœa—hbàóª­c®Þ¨]Ç 0Ã.#ò®wZðˆ§q%¶¬—¨¸+åî9ç“»·¸®gÄ @:gÔú×S> šzYÄÆ%Œ|›{S\í¨½Òm¬m%¼ŽV°˜B×7Ä00G®ÜgÞ¹ Nö]7PÒY/`2i’,s©ÆåÈë×é\ÕÝ̶ZnÛØY¬$ÜËœn^zãõúUÍFþÚî𥭳;Ã'–dhfï϶:ÿ/ˆ5m;VÕÄvV$ýšãÉ7v‰d ä{Éöõ§jº¥–¡©ùvÖ¬Lù&p¸äý@ÇZš{w6±H¯¸'ÔUmSL—û6ÚûÌßG•#?çñ¦êR}Ž Û“ë´ŒÔH§(¸@@ qŸÃ¡ªdy¦ ul¢£;c9> V#Ì0¢=ƒî*“‡8Ï?­bø–;·½€¢Z\éøŽKˆ¥«,ŠO̬:09ëžiÚô“FÖ Eky§¼qIuÈU£™K|ÊážëLÖ…ÀšÛj[\ØŽKˆ¤r®’)<«„ zÕ"+kÙ^öÂæ3o(+3ÚÌêF ãÓ#òÅeéP[ÝÈ÷Vw1›yr%;v³2ãü2*Ž—µÓ½ÍÄf 2%`»YHÆQ]ö‘'™b¤F¨ƒ…Ûßtü+Ö¼=sö­¬h£béÀþUèZDÞ~Ÿ mP=|sZuv—ÞŠ)1EsE£Š(¢ŠZ†é&’ÖD…‚ÊÊB±Ô7±Ï-”ÑÛ:Ç3!ì2žõ ÊK%´‰ „‘”…b2¬Á¶š4¾iî'—™e‘òXä’}²Oè+˜Ð>iÚE»ùÓOqq)Y]¹c’OæOè+Eðuž•šiææI¹cœŸÌš“ÄÐA‚N±¢²¸P@å²qøõ5_âŸio¡ÇsIÆáFÌùãïÞ¢ñ…¤iK2"«£09lñŠaY—ÁÈ–{㔤í(Ê7|ÄddqœT¬÷Pü4…m<èîRŒðQÇ 7lŒóùÔŒn#ðLioæ$Ë¡à«yí‘Þ­\ê6šuäVGä» bý€È>§­[¾ÕtýößJµ†;Y&Tmà€[=Øõ«Zž“u „1¤*©ÝÐuÆrkOíIT;ˆê23ŸO­n‹È™b`ì½@#9ëŒzãŸÄV¯Ú#bBÄp@#9ôÅJ¤‘Þ§V¡†pyäb¤0wõ´áéKEbŒÑEö¤¢‚2)q‘A£t¢ŠJZ)h¢ŒÒQÞ–—ÖŠ“ÓyÍ%-(4¹¢–z(¢ŠÒŒÑE-çgœRE¼ÑERR{QA¢ŠJCͦ—µ””RÒŠ))(¥¥ü¨¤ëIÒŠZZ(èi:(¢Š){R´””´QE)Ò÷¢Ž†ŽôRR(¢Š(£QG|ÑEæŠ(¢Š(¢Š(¢Š)3ÅRö¢ŠiP˵†A9ïMtY#(à2°Á½#(u*à õ½2(b·R"‰#äíP2}iÛÛÚ#!Ž'slP ŸSŠlpÑi““µ@Rêæ{ˆ1¥ÍnòóÉ|aš¯svòFñéó[Ép;€¨&¸i#+e,/(ì\~¸ë;{»ÛK¹f+4±ÌŸÚ%}ä`ÿZ¼Û]jçVfdŒÅuæÈ²aÌ»ÎT8góÅyÒÁs©®¢ØUò®D޲|¢âMç 8ï[Ø42Ũ]¨Žèå„Q¹Ø;ÆNF?È­¦Ò¥´–×\½ÙìŒÎ–‘±…ãj㜌¿Ë®ºl–òÛê÷»Rñ‹2ÛÆvÆ«ü+ŽsÁÿõVºy‰§¾ô8 œuÅt‹¨<%rg€ì3c©ô­µó¢Ðfóc;\{‘Xˆò(ÝÇ—‚w~?þªálYÚUhÏî†[qúã?¨®RͤWCû¡–Éü³ú×7}$ÚlZýåìÒC$ŠÊ aÐzdÕ+™¦³¶½½¹»–Hä0ÏÌbÐ}MR¸–K{ËË›¹^90Ï&!èÖ¤Òt´2Iö}GÉ&U¯ÈÄ!©ëœöÏsHÑ Èd·¾ÙËüL¹R@$"ç'¯SÓPØÀÜf®Ö]£ÚŠ(íEw¢ŠQEQKHOéE%b?‹ôˆo粚WŠK|ï.¼qèsX2xÓE‚úæÎyÚ-A2^02¬—ñ6—ÔöÒÎbx/¼q­rÚ׌m¯nâÍ5¸™R4„nËâ=°0Oá\ŠÃÖÔQÓn!v‘ƒ“†AÐòsù÷õ­‹‰ÛC¹WšyOÍL`ÏNÙõõ­[Yd:TÊÒË!ày‹Œò÷§if½ ¾pžF< `g'òªÞgÔ|L··S–’½§”´ /^ŸA£æ÷ZsI™#Œ®q´;úô«Ã<ÿlÓØ*îB äîù³“éÇÐVåô¬’ÿjhhRDq#÷‡q’O§äi^G¨3›ý-…‘[Ë|ÿ6’}? +¡®Æº: ÅQA£¥½8¢“ÞÔÞr=(ïKKKE(¢ŠJJ0h¢ŠSEvÅ.h£­QIE½¨¥£¨ÅP3EŽôQEf¥t£œQE(¯ÿÙÿØÿÀ>ÿÚ ?õêõÌó^¹E/ZZqÍ&Ö“ëEQKÖ¥RæŠ)(£4QIÒŠ)x¢@éKE &h&{Ð=é)i~”Q@¢ŠJ(¢Š(¢ŠZ(¤¢Žh¢Š(£­Ph¢ŒæŠ(¢Š(¢ÑEQQIo»„™!¹ *†âÒ+¥).ò§ª«•ÏäEE-¼s‚²n*z€Ä*å¼Fm´(íÒÂÙ#žä˜¢ù¾îA¨ÎwsŽÝz×+â+M3Ã}¶ÎÙ£žeòÖ'å<±äÈÅsúä6:$BâÚ “J Ckdã¹ç8î1Ö›¢ý¶HÖݲòˆË.FÔ¼““ë×ñçt¯u‹ð‚5?g$¨àFvž¤“ž§ûåhËu¨\í* „¸á€ç$ó×úôK§F°mvw8g9Ÿ•rWÖ×'OÛ§ÆÄï <ªõíϧåYþ#‚kØ"ž)Q@ÀÜ£<Èñ‚0:ÿ“Å7X·žú4‘…"lÎŽ îN„ßüž)šÅ¼×©ˆÂ8â}Ó£¡Ó¡ïþzU 'WoøHôëMaãÓ"oŽ –.Ø@ÆNð!Þ­øcX-â7LÔ¥ŠÆØ\™’%‹¾Q1Ô ~>´ý W'^°Óõ9"±ˆÌdŠ%‹¶0 c9ëë^½^Õ^¥A8>Ôv ð:f«Ú^Çv¤ªHŒ¬T¬‹ƒp}áYÚn·k©³F‰4+º§M­ò6Ö#¨#8äÖ©Xj¶÷û•X¤Vu1Ì»[åm¤ŽÄgZ³šÑ«´”QN(¢Š(¬ÍcR6I ´1K%Ýã­Â©*ËÊ:ŸaYšÖ¦ÖQÃmRIyzÆ+p¨J†ÇÞcü*:Ÿ§ª¥ÿÙV+x’G¹»&8©*Xö­xÞµ¤^Eâ¡Õ #X–P<¸ÕGRxïÆ¼#Ä}õ¾¿<:œ+>F%Q±GR~µäZÖxšíÄZœ"t(#²5QÏÔŸ­]ð­Ômü=ìWBê ¨¨›3ùâ§ðÅìmì©%Â\‹ˆBª"í\)ã5cÃ70é÷’Ç%Ò\ý¢ QvŒ)Ç5Ø[,Ñ]^ÒyWÈHÊÆGêXœþÐyׯykGy$d@FDaT;|Û˜çð­àóÛËu {Ê]:2#Aë’søSeKÇñiïܵÛm‚?µA½†Bùƒ$}3Q}²ÔÈ#0—#!|Á“øUªœTÀÑJ)h£­zÑ@¤üè¦Ð8¢—¡¤¢Ž”QIÞ–Š(éE(¤¢Š(¤¢ŠZ(£QÒ’Ž”~4´QHh¢–Š(Í-é;ÒQKÒ—¥””QE´v¢’–ƒE'z)h¢’Š(¢Š(¢Š(¢Š>”QERQEr^'…Û[¶›í2 N<°Ä“ÜÿNÕç¿gž{Ÿ²Ç2ˆí£Y™ñ’H9=Gç\wŒÞY§ò’`Ý…îä’;rkOèÓZl‚ò9Î:ü g¶0[?¬à‡Ã©s&&¹bî’N÷pZÓðu¼Qh‰4qÌç{+rAéǶ#ëZÓcÊbw`sòç5ÑÝ {v>¼VÔàŽsÇ<VÕÄw%Z%`nè}½¿Jó¯Þ ¯ã[}·0NTƒ’GúúW!®\‰nÓÉb£œ‚QÅWx£2m'i=0Øüë"k8L 3íg8R$ÇæÏ’Ö#& ífàøüÍC, sa=¤à:ÈH¶zâ”>-•Ë U²±»|Î#õž”»<û m.ÌVQ›–î1ž¸öªà»MF;‹ËÈÂÈ»LLÌO*0Aœôäæ¬Úø1®ã¿Ôo™-¢¿eÉËù‹ƒ•ÈàuéÎ~”'…>Öoo¯ŠEEû6NX:àädp>œÖ¦›©¦ž‘£ý¥âæ5g#.Ürr/lýk ÒO"Â5¹ ³òosU<«_Ýkz´º¦©ŽwŒ[[I $pOÈ3À䜟pi|ªÞÜ_ê7:Ö§û™Q-­^EÊ`sµsÆr?/\Ó<){>¡¨ÍªßÇ™¤E··iPÎÑž3Çå]´³Co–yR(׫»âk³žâXZ{‰R”ežF £êMu2Íf‘cz³œøÔVú…Ó·¹ŠB?ºÀÔz¶Ÿ¨1[KÈfeêÁÿõÔV÷ö—d‹{ˆå#®ÖÍXŽ:Uº±KøÑEs¾ ×µÞw¶±7n…pJ¦ ìÝϵqž!ñˆ´ïfŽÚ;د“”P(?íÿöþUÌk:Æ·¤=ÜÑÁä`¯•–Sh?íw>Õå:¦§'ˆµXá»iÊcçAw7˜Íy¥©Ï®êÀ_¬|ÈQyÜÜ~•æú†¡&¹ª¬wŽêÑ“æÀŠs¹¸ý+¥{;T›Ox ¹·ÿW$ç!›vu?oA Ékn·6’Go5¾6´Ç;˜6ÀïŒÿõ«z=K{ešÉ£‚xqµ¦9ÉÏ<}3øÖƧâ 7Cµ2IqÊÌJ)嘟oOóšÖÔµ» ¸[yå‹.~fbÃ=1ÿë­ GY°Ñá34Ð Y‰LòÌO=)žŠòÞ¨0i®Y¤Ž °‹8A‘ê9¥ðÏÚ4˜£¿Ô¤ß=¼ñ[©¶•3\“ùfý¦Â»ÔX4óï–8T‚B~"®LO Þ~Å’FÂ>~çû==0*Y¢µlæóÊK»—6LCû˜ÆGÏáSËÊSrQn'|©Ï(?»ÓéV<8‘^j÷3ªì  ¹ÎY‹ÔvÀÇJÛðG}©ßê †5„,J¥·|Ç%‰Èƒ·sZ>Ýêwj¥,FœòrIþ_uC­wUÔÒÑE¹ö)(£ëE-¢’Š(¢Š(£ÿÚ ?õêõÎÕë½è¢’ŠQŠZ):QE”Rô¢ŠJ(¥ïEQE­4QŠJ(¢Š(¢Š(¢Š(¥ö¢ŠJ(¢Š;Qš(¢Š(¢Š(¢Š(éEQE9¢Š3EQEÑE%W¯ÊÓx‰bùX¹ù³žsŽÝ»úþ>mãµ> 1¦Òþ@^¹<|Ý;tÏç\_Š”O¬]»¼ ½rxùºvéüë¢Ñ.ž]¡¤vvˆ÷ý? ëü#9¹ðüSùb4y$1®sµw{àq]‡å3é˳b»¹EÎp»Ž~•=ìÆxlàôÿjGMÒ]’@’Éò¡ÏÍøSµ›ß±Ø±W #p¼óøW%¨_‹H&1©–hA""s‚yñ¯&¹¸6öò8ËÍ"';OP#\ÅÁ·Ü$±’yÉS×õþ•Âj7zýÇ’/>пh”Œ†5^qŒà€0s’kž¹mRgoÈgm aFq×Ü×?s&«#Û‹¡*äV0£8ëƒîkºÐ´5ÓaŸS{·–)hÁ‘äÚ{€ üÙ»ý/ÂcM‚m]/âhd@ÖÂ_2fWÀÜ»rÅvZ‡ŸOŽ}AoU£·—”«`dlÏ!±Ï§¥/‰µ+ø,b¸eW_õª€€˜ëÎ1ï€sõ" ñ½we§Ý2"T,Ë‘ÔÁõÀ£U[+K [¹ØÜÜNÒ[ä¾ÒÏ'ÔcŠ«-»½òQ€žc1Êäýà¿çô¬õÒä ^êþB:ÆÊ†FîMÄ Áúª¿ØY¼9u¨˜•‚›ÙþeÉ0cx~Þ€Õ,®XÌ’o‰<¼ä~$r=Ï­gh— ‘j6÷%®måó"RŸ;8'©SŽŸãYú<û5 {‚óDûâRŸ1éÁ=H8éSëK¬êZŒr¤"Æß1— ªç‚<ŸJ~µq­j÷ᦸžt‰óûâFÕ'‚ž*M]õNù¦’T‰¹óI\ð@Ï›¡Owy|ñM4Ö²Û‚RpÅNá×#œƒMðõÕãjœ\Íi4 ”˜1pääsiºÍÜ·ì òÛI;% A$uÈç ×oázêk9Ê ¢ˆ2”YWûÀAç‘ôé^¥àO´ÖW!òÝeTé¸È<ò=ë»ð—‹W_imfU[˜T6W…‘¼ä{Šë+²®ž²Þ[÷ûînf$n À=Aõú~5ÐÙé0ÙªÁko6ðçÍÞŲqÐ~&·¬ü>–Ól·µ†+{`|÷•ËüÁz}2G?Ž+nÓFKiAop@?xÒ>þ@è=²zV·~eåþ£s*CihàL`aG-ÓéëX—²Äg½¿º”GŽvmNN½=ɹš?6îúæQHY!n:u8>žµ£ð²áïmu{÷y\]†Oî„×| 6|îî.oÝþŠŠ?ƶþ³Üiׯ$Ž.nÉMý”*ñ®ðu¯@®Ò—QE)¥õ¤>ؤç¶)öÅ-QJ(¢ŽÔQG=(¢ŒqJ(¥Åw¤ö£éEÉ¢ŠZ;ÑIŠ*¾¡f·önÌW$0`:Aʪê6_Ú2[nÙ»63‚j ˵Û4%¶çt æ¹ãáùìoÅÊÄ/cœ 'œ;?Ÿ5Ì·‡ol¯ã¸ë{ ‚Q‚¶¦Hçü÷¬C£ÜÚݬ⺌R út­û[;de¹Ž"²öe†3ž}ó]5¥¼a'Š&G1„ù†Ï#×&¶íà…6Ëe ^F3žjÕZ?J)q@¢ŠZJm6Š1éKÞ€sE%RÑE&(£ð¢Ž´QÅ¥¢ŽÔ”QJ84QÖ’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š;QEPsÚŠ:QEQEQEQEcQES$}‘3g ¨/gû5”ÓÿÏ4-úTwy6ÒIýÅ&¹]näÙ%º*ÜdóÎ>ŸÒ¼ÛYuÔgy  “%©cø€Îqz©[ÉXv¬«Ïâ9éZú·cXç1í@6íê+áö§u.Žmï >T:`qŒ‘Ç¥kxFöæM3ʺ1”ˆŒ¸c8ü(žæ9w¼²*"p¹â£œ`žÿJÊÔoµ«H‘æó¼ÆÀŽwÜTsÓ5‚¾#Õ¬´µ¶}a%‚ ’!&EBp3޾€òEW“ÄZ€Ò!†}PIö\"º–ܱžppO$ɪg[¼‹J.u!/ÙÎÄ]c< ã‚pHÏP Eyw¬Ë•yuqäd4AA1•Çzÿ†jµåõΪ¶ÚT÷S‹hù‰@%6ãªóÞ¢»º›T0isÏ:ÀœÆ |›qÆÚK·:/Ùí$&dÞ¶1¯sïÏjŠòyôñ ¤’#\0U{ÔwsI¦ù²1• ”^ÿZÜŽÏVÕìáM.àm·(X…tãñëZú}†³¬éÂ2b-„»gBÄ,œ}3Þµ-,õ]VÆ8ôùÀ·YvÎ…ŽÙ\qþsW$·ŠÚзšØnòñ‚GõÖ¥¸µKHcVU¶¹µ¼²-þ Õ‰íÒÚ(ÁU‚{a¸FF ÔdsœÉa(ç=Çù5WLÛœ’Þpù³Ôòj8ç-—$‘(ç=HªPܤwÏ8ó4H“¦zäzÕXîR Ã2ïTPWÏ=È=ê¼w Ù”o ®ž}G­_ðÓZ/-ã¶AɩѻþÑü=hÇm@Ím&åQÃt?‡jÖðƒÛŸ ·A <•^‡§ÿZ½*½Š½&«j6–×ö[ÞB’Àëó+ŒƒŽGꪚ­¥­ö™qo{K¡Ü®28äÀ€j¶¡mowa4Q¤²üÊã#ŽGê+ˆ›Â0h ZížK­§É2ÊIŽ Ïoä;zy½ßƒàŽoí]BY$»aûŸ6R|±ƒ‚}9íØ âî|-l·_Ú—lò]m>Q’B|±ƒ‚ÏëdhmÕîH2ÔÊ}XHï‚Wõªˆì,€ŸŠ#9=ÜHö%søÓ#f[aç»j—>­ŽHö8ÏãW4û›µ½¼f‰#HŠÇŒ`¹Ø¥ÙÔ‘Ç¥_±ºžßRºš8ãF‰D,K÷Ûbïf=z’? ³g=Äw×2Ñ<¼EÆ>ñÚ»Ù¿GáY7¾.·´žçJ[Ynf¶ØÊ±± rXã²’*›x’9n´¯³Kw=¦ÖXãmªN>foP wúU7ñ0Os¦ˆ$¸ž×")ã–>Àž•ÌëóÉu{mj€}žÊÆ>6¾9€‚?JâuËéooc@r„É„à+3Àìxý+“Ö¿†5ÿQd;¶9Ç?Ê»†N¡k¤}®{±M!t„r–ãÛœúÏÃ'P°ðí¼—2ªÅ"™#‰G@øažyõÿcŒsè4Ûë-'º*K™#‰GÝVäëøãµwÝ븮¾–Š\óE(¤¢’Š(¢Š_ð¥ö ôⓜqÖƒÓÞŠ^ôQGj3FxÍâŒâ€1F(éA;FqšF;!IöTgû Í(9æ€sÍRQFx¢Š9íE”¹¢œ(Î(¢ƒÆŠ)z ÿÙÿØÿÀ>ÿÚ ?õêõÊõÊ( ÑKÞ—Š))(¢Š(¢Š(4QÐÒÑE%J…¦Š%QEQEQEQEQGz(¢Š(¢Š(¢ŒZ(¢Š(QEQEQE¢Š0~´QLq”!ºÍ2XÖX^7]ÊêTPi²"É# «®;U“Pó’âÖ7a"ŒîœqÐãó5å:‡Úàyg‰[Ml[ççØe:൴ÄÏ4JND$ÿõ¸üêÜ×e,â6èáÄ­•=ý¿_ΪH.ƒdšzÈ·?iq$g«ŒØŽGãP}¼ ÐY«¬Þ{ŒÿãzŽGã[ l,­ÌÓ6ö_™±Ò»È4(t=9ïnÝ®e‹2_ºOŸOo¥u±i‘é–q;>rLñþ¥r’\¥Þ¯w;ŒÉ ‰$.FAÇ¡ôü¼»SÔWQñ “\€%’áPƒ’ßéƒúWžêZ”7:á72Ép“·¯äk’ÔåþÖÒáÔüèVr¬ź@Šr0@pFzÕ™y‹:å–%‘ cËìðc‚3Þ©^u§C|²D²2²³&\(9\c=ûU­b€(]1­Çs•Aà±cÇ<š©QÅ€–LÖózä| ðI'Žj¬QE– mçõ| ðI=9éS.­g¬Í 3³p›1Ê’O9ôâöëx¢v…$V·` c¡Ï¯§ó©ZÅ JÙ‚mÇ ÿ‡f)óW6Â%q¹Nìã#®;SÖW¹o>x¶ÎzޏíR¤uûéáØœõ}«cBÙ«ö8‹¯›&òH'ƒÍkø~â]9þż~|‰*N>Væ´ôIÁ¾É2yϸ䃃ÍA«ZM¬:™/_íÒnŽ\r;ŸLv¨5EºÖ$ßqzÏ=»|’7R:c>œt5_S‚}YÃKxÆ{wÊ9뎄gÓÚ–þy´ø{XVW‹º=Jä‡Ç¯CDÓIeIhÀ3×!±ëÐþtë‰ä±…¥‚1#Gå÷ÆNìzô5­xn´èþǽfuÜ7¦6ôíQêwkwk [oóœg ˜Úx¨õ+¯µZĶ¥¼ç—5×ø+Â×Z=¸ºÕZ7¿‘pvtAé‘×µz‡Ãß\øzØÞjn­2`¢tŒuǹé]Ç‚ü3q£Zý£QdkÙ ¢Ozêû×k]M2R‚&2mØNãzŽàư;M·Ë Ko8÷¦JPDÆM»@ÉÜp+}R=a縶œÍ2Fû«ïõ¯8ŸV‡\¹»ºK§–¬M«Ž‡ëÅqÒj1j³Op— ,Q1XÎ0¾ÿZ/¥šHg”*‘*a@m tþg5WQ¸žx®.UdˆUT¤Çó9¨oe–X§˜Úë…‚OçYšÿ‰¢ðÔÐ?ؼæeË!ÀT IÀä“Uõ/ÛønêÚq§‰f•@œŒ(± rIÍUÔõøó?úÕézOФÓlì£Ô|˜¬¢byŽÁ³žã<õ?üB{Htû]Q!‚Ê8Ö(RH `19àtÏèº7ŒÖ8uŠDE„ÈëÐçÓѸÇ ¿È~T…¸r£r‚c3ü‡åI…ÞhȾ?È´½ih¥éIEéGQŸZ âŠ1F9¢ƒÓÚŠ(ÍñE¥…½¨&ŠCÒ’Š.=(£´~RÐ(¢Ž¼ÑEhëÖ›ÔÒv£š(¢ŠZ(¤¢Š(¢Š(¢Ž´RÐzQIEQíEQEQEQEQEQEQEQEQFh¢Š(¢Š)RâŠ(#4QF=袊(¤4QQÊÉå¾öPçqÀ¨gžâÉ2F|Åœ(é“Ú£–HÒ7/"¨’Í€?À¸Y$€ÜÃ:•L£*©±#';qšó½nÞiô+X^$ª¡¡ d)‘äŸ$ ¼gÇjðÉ.‘5úÜ«€­XÐ…ÞÎ76H¸éN´·ó ð’F:úÕ†ìI§^y9UX€¹Ãðôý7E´V6w>W $mèGáG‹µµÑîŒl±³3  ëÁ<FO·±ñ#YHt§°ŠëËo½1 è6’ûqWüm©¬:d–ÑÜymŒÈcÃ:¤ãûW9.™nÚ17/š]®ä—ìÇpàÊp1ǯ#ßÅÉcnt´O&:˜^Ë/ÙÜÀ9VÀíë‚?ÌÏanÚrŠ%™Ê/O!ƒ `äß?HÓo¢µk‹•Xe•÷ÜçŒq!*É©8ç5rÏNÔÖ{{² ¥mıOߎÒ¼däòFN;Õ« Ô·k› É#î$•ýðì䍯O®2qLÖ-&¹ÓîaX#”ùQ¤?7®AP=yÍQÔàû]ŒÐ¤I#"ü©¸Þ¤å@üsÚ«jP›») X’M«ò¡cózäãžÕÉ›²iöé#À„ ,¯ÓœZç ÆÞÒsÎvå†^8ÇNúõ€eû=¤(þWÎB³+Ç÷Çõ¦]O ×Mb¾lqGßJŒär1Ž1ëL¸’ .M°Y:F¸ÙÜ`ó‘ŒqZeÄËrÖ«æ"$czÆ¸ÙÆF9Çõ­­¸¬n%0Ä0ËÝ@Æy«ÚQ”MFó 1çpþèÍ_Ó ªñq!†?¼?º3Rß4¿jVˆägæÇz~¢Ò›ÀclŒòGz}ù݃ÈÏ8ïYïS’÷d¶¥!˜7_¥f™/Zäy‘2 %ƒVg›|×8–‘‚X=_²iu]v×M’BÏ;äüÃ;@$ŸÈÓÑ-ç×|Oe§´…ÞYC1'øGÌOä _Óc—Vñ¥“¹g’MÄ“ü#’Jõ 0ë_Av¯a¥¢ŠÌÖõÓíKLÆÊC¬?k1é6‡ÎTh¤F­Ü*ÌÖõ°¶&@­) ½yÕ®©}©êÄâÒʈA€em¤¨òÉîGåæºmüúÞªòÜ­–ŸVÞ ;8ÀëžOsúp¶7—Z®ªòJ-ml!ˆ…†3m8Àô½Ïé¡s¬­åãØ+•µ†,¼£€[Œôôé—šÂêÓÒ]¶p(̃€Í‘×éO¹Õ>Û|Ö*ûm¡QºAÀ-‘ü«–ñ³yâÛ¤ŽÚÌEm `…‰8 Û¶~¦±àß¡­ýRÂ-?@Ñ®’ûl÷Ë<‘g©ó_Ì?Zú´VF—söà’Ê’NÑ“€Ä¹ÚÔ`~¥°Þ(º†Á[Xÿ¬%Ï÷‹dŽA¼ E°¼ñF¡ž·²SæJìp!A÷‰É÷ãðÝ*ÞóÄ·°ÙcȳS½Ë€ûÙÏ×ùWªømîQgµ‘1oyV¸#h‰>AîIÇ^‡µ{o†§º/slðì´…¼«2¬6ˆ“ääœuï^¯¡Éqûè=¶ñ7—mƒÀ~Qîzuï[Ùâ·ë^–Š;ÑEQEQEv¢—ëKÚŠ(Ž8¤¢›KŽh¥Çi3E­RûRÑüTèïE/j1E{Ñ@4½h£4˜ëEÒþ•ÿÙÿØÿÀ>ÿÚ ?õêõÊõÊ(¢Š(¢Š(ÅQKKE%!¢Š(¢Š(¢Š(¢Š(¢Š(¢ŽôQERdd€y£Œ‘žGQG#<Ž¢—¢Š(¢Š(¢Š(¢Š(¢Š(£­RnÁæ“8Æ{ÑÒ––Š(¢Š(¨.ç¶²NÝ#ŽN*¦«{ýŸ¦ÏvWw”»±œgñíUïîE”·$dF»±œW?ý§ý¯¼±Ê ”uÏ®^w}­MâV²‰g>M쨅"ç9ÏR1Çó\}Þ§&¶m#YO•w"®ØÇQÎsŸaýji\Û+Y ªò0$Ùþ`rjm~íôÛaá¸Äh× ¥·ã#Ìš›X¹k8WDMŠó0ÉnpÇô>ÕnÅ~Ëb)Á-¸çùV§†Ñ´­ÚIð˜\òNüêþˆ§OÑàip>mÇŸÀþµ‹pö×ÂKèäIíÌ…L‹ `LØúg×é\Æ©oÛÝkbEº´k‚¦U1QÓ•ìNF3øö¬+èà¹3ê¢E¸·i¶ù‰ b;`ŽÇ¦?ýUKUÔ"´½µ¶µ3Í-àâ2‡f€l°<|¤‘Æ8ÁÇJ©®ÜØnµ{«—{´âŒ»[ ó‘ò’Gã*¶¯ukç[}’iÝ®—"3*°Ý–8$ŒŽØ5fIã·_1Ì`ò€C×^œþU#¼Š;¼î„® ¸]ªXv=pO­V[¸ã¹å¢Ú!¦\)aØúgÖ¤“ÙÍq/•åIýÀ–]¸ÏŽqZ²ÚH¶FíŒÞx¼Åb®Üg†#’?i¼ - Ó4F bó`•ÛŒðHë^u©ÝÙÌñMc#*°[²|±³1Ñï\Eôöó2Ih´2ˆaaÂ'æ#߸ëë‹yY$´Fa¹VJñbpÄ{â§‘£x#ºžqѲù’ÃÀr;9÷‘<´¹’M²# òGÀb;{Š–GC\Ë(IQ†ù#à1½ÅmGqgcbg‘E#‚Çv7‡ÜUÖž;k$œÄ†&pdÃíg pÇz·,émd—Z™³ ß´¹ÇwªÚþ úVus[fÛˆÉì[¡÷ëšt×_d„ÊÐynØ#yåCr).®Í™™ òål¸ò»¿ýuGHñX›O…nâˆÈç'!lôÁϨ4ó¬Fmãßj‰‘É=HõéN]aÖ?2ÝT‘ó×ëÒµ<'q¦XkÓêW0Ë$òD0`§#éÐVŸÃëý#GÖ.õ;Á+ÎÑl„*ƒŽFqéÐ~µwÁ—f«\ê #\2Õáû&%ž/3iÎÐ:“ôÅy§uئ„)&ˆK·ÎÎI®/ÅÚ¬F±‡Á@©5çwÓZÛÌumŒ7¢ŠzƒÐãé^eu<Î×â6]à|Š{†¸ Ë‹xemH#1Gȇ±èqT¬í®b¹$¨é,OæyŸ1 I$ÛTVÍ ÁòYe2¡pÜ@'%€íŠ«iksÖc•e£nßó $;v«G¨[YßCöÛyÐI ÎFTöúzU»»+í>+‘ ÅÜ2 tûÊ{}*Ô¶÷¶V÷9\ÝÃ*žàöúVµÅÔVÒ-±’DvÏ¢ŒÓ%‘""eXŒv¥šT‰ÄËÈ¬ÃØ g‰44† 4`\ÁmœîÎ$ÛÓè3Z,Òí-%·ÒcžÞÞ?´9?òÓnHö8©üO¤Ù¡‹L@<è!O9³ü{¦kGáþ£f,äÑ'ŠÝRë+öŸ,r:g=GòÈ­¯k&ÞO Ío)v»ðF »ŽFàzåÖµ|©Y}•´†ÅÂík€³°äg=EzG‡¬þǤĸ·Í†brWq#¯lõO iͦèVöò9‘Ô7ÎIän$uíÍz‡fl´¨af.ÊÌsÈÉÇZÔ­zÐ¥ïE ÷¢@¢Š(¢Š)h¥4†Š:ÒÑÎhühRæŠ)J(¥QA£>ÔRQÚŠQëEw4QIì)~”QH(¥¥¢›M£4t£éEQEQEQEPh¢ŒÑEQEQEQEQEQE˜ÝŽqŒÑœàgÍÎqŒÒÑEQEQEQEŠ(ÍRqE´QIÈsÞŠÍRõ¢ŠÊñ4b__ÆÎQÀà…Ç?¥aøÖ6—Áú’+”SÞÀò¿éY^(ÍðÕú(¦½‡P½ÿJç<²5¨•Ña@á gŒq·ôþuç¿Qd¸·7Rà]c1·9;vþ€×#à´ÞÐÝRÑ• mÜ‘Ó4²Ý\Mâ[‰fˆýš¹é+î`ª;à$ýEWÔu&¹ñî©{ I«Ÿ&3ÒVRB¯®ROáëUoÝjP+ÇnÙ…IYI}x'ð­Mä艨¸Œ[®NTqŒ ㌞yÅuþ0vƒTXãKeQ+,ˆC 8Úà<øÅt¾%G¡Ç¨•D·E0‘Hdc¡<}+•ƒMÒ'Ó[%¾¡pŤ€‘ÎwcýÒW¯;žÂÃû,KlCy;xó޹ãÛ+Zâå±°þËW¶ ÐÝÌÌÏq×?–F1Z±Ãy øe¹XTG—µ£a÷²O\þ½>·n ¹Hà{K¢ú{BŒÇ±£a÷‰Ï\ŸÏ§j¹<7(±µ½Á{*†=­{>¹?çŠÒM¸Ê†d#0Æz_JŠ!FŠ;ƒ÷V§øŠ;ë‹‹µ¾Ž$H~q#*»É´¸À,sõ÷íW|Y%Þ£5˜Šò(Ò|rF“c ,süªoý²òâÐCwqÅÌ®@v|1ÏÿZ±RÆêܳÝJ1‹ËG<ÿ5ÍÛÁ%½Â=ÔŠX`<ñ»‘XÛÉo2Éu"(c黑V/Òhí¯nnåçrÛ±÷Tý>¦¥Ô˜º¹¹qæNå‹zj[õ‘cº¸¹y“1bßݱµ )%–+ 60ÒT[ Oò¬ä‚In’ÚÑs#€¡³“ÿÖ¬© –I–ÒÅs#¨PùÀ¯N•ïš]¼–šU­´²UÏñÍ}/¤Ã-¾‘iî^HáUf9Ë:ó^ó§E$u¼2±wŽ5VcÜÖ®UʳEQŠ(£4QE9£ùQE¼v¢ŠJ)GZ(¥ëJh¤ëIE.)G½ŸZ(¥£8¢F( P(£¥¨¢š(¢¿ÿÙÿØÿÀ>ÿÚ ?õêõÊõÓF(íIE½¨¢’Š)h¢’Š(¢Š(¢Š(¢ŽsEQEQEQEQEQEQÎh¢ŽôQEQEQEQF;Š(£µRvæg½v¥¢ŽÔQU5TŠ].æÈÙ4mÆr1Åeø–Kdðýê]º¬sBÑà¶2HƽQÖš싨î–&ã9ãÞ¸Ÿ‹ØtËÛ{ˆM±¶œÃäf0Hÿ¯^Uᄾ¶ÑµBµ¼°L"ˆŒƒŒ‘}«€ðÒßC£ÞÂѵ¼Ìb‹npk¤Ò¬ÐêSï\‹]»7s–a’Çðþ~ÕÓx/ÃöçÄZŒ³©”iì©þC; —úÿµnøcG‡ûjöIUœY8H·ó–#%¾¿ãX~-ÖšïVB€ÆWg™&\cžÇùíY¿üG.¥ªÇáû"†8ˆyIl>ƒÔ`ÿœVu¹/u(´KB…P‡—/†nzÜsþqQÞÅ ½•´×s}–< %–2UIÁÎBýâ};þu©Ã%ÊÛ}¢U¶´±D×"<€IÎß¾NzrOçYú¤M"ÛÉq(¶µ²U3N289Î>ñ$ô¨ô­fÞûísÃu$±,‡cN¢!  ëµA_ēޒ×PwrCp^Ø9XÌ«°H)!@ç2þyïKg~·6·oìð*†UؤíœWó÷­òâÞ åµ!eO(ü¤ŽOúYÙoܶñ£×ëWÎ…p·i7Úî . *·Êþä~•¦úeÜ—(æîá£,þV÷ÅiI¦ÜÉv’«‚‹É@ß+{‘[Öþ%·Ñ,戜:¨ p þ…tö^+·ðîŸ=ºßí Œ`ÞƒÄú5œ‘ĸ Š:f¹Tñ,ßj™g»ye ZD qÏ<ÿ:âÄwy)¸»w“q2p¼óÍrGÄ3µÔ«-Ó<‰‘@8N}j=WU–è¼60ªOÒ$—Jž»Iõâ¡Ôµ7º%`‰VXöüíŒ=p*‹RÔ¤¹Ü–ѪÍ\»ýÒ§®åZ©£e„,òÅn„:AÆìdŸÀõ5¡•$óÁyó¬)Æ@É?‡zÐKi¦…I%ìHq2N}»ÖÑ{kIcŠL*¾ä@3Œ…'ÐVôOker"› º¯\d.p09â¶í­'I€¬TvÈ\àqéXÞ%i`Ñä¹Dt\‡ ¸¯=éXZü’&ž×Gš\ •Éè=¯Êñi¯p';Âä®OoJÀx//4íèîPC‚F9=sé×ùVë ST”ú(¢Š){QE%¿J(¢Š(&Š(íšZ( þRûQE¨Å™íÍ(¥÷£4QíEv¢ŠZ)´”uQE´QH(ÍPy¢Š1Eƒ®(¢–Š(¢Š­-b’Š(¢Š(¢Š(¢Š(¢€r3EQEæŠ(¢Š3EQEQGj(¢Š(âŠ)(¢Š(¬Ÿ¨ûšÄþë$Ü×!ñ“E†f—cA!d«W=ã8‘ôÈåi ´/¹@êN*–—/Û¡‘ã$Ý‚7©÷ÎMcøcœ¼_º°FÝÞLu>ù犡¡­crÛ[=ßÉ÷ïÅEc©M©}´u¶Š$fº#aÁùW×¾¾”hº¼ÚmÛ0´TYdºÀS!áT¦}})4ÍFK;ÍARÙŪ*È×ÈqÑG|tÏ­rÿðñ4×·„¾eèÙæãŒ@7>»}³Ë.×&Ô/5 ‘¯¿unÅ2à·r8 ŸR¾ÕÎcGý·=ýÍôÊ÷ߺ„ìË ÷ÀìïÄ­mÿfG$êó;2¨)´±(A<’§©üê9-–&Ùö摊»¶žI©Çµ9íÖ7ÇÛÔ¤vž}SøUk*ÎãM·y"†'¶¹fvT9úàgÎ*鶆ÿÂöRÍI-µÜ¢gT$Á8õgÎ*ÂÛEyáûY¦H£’ÚâO1Õäc®=@Æ3ŠšÝí/l¾Õ1­Ó±2±˜óósÎ?#N‚+;øþÔŽÀÜ»¤¶ãžH?K ZÞD.²ý¡™‹‘´“ƒósÎ+yôÕ–KHf1ÜÔŽI¬ã8Éäž9¬f—OVkhæ)µ—z²ÇäDÎHçp@ ÆÚÇklée¦­ÄÅÎà[w—2O§OÇ4ÑÅ ¥½’Í.óœÛ3ëéÒ™öu‚K[šRçv[!3×>?Z•ì·g5ƒ,P€ÈA*§ÔŸóƒR=¦û³m%¡ )‚B“éœÿžjW³vm^Ьqa“…>Ùü?]…åĶ2´D„û¡9üJ±93½¤e^Ì 'ðíV&+u4–²4lÁzŸËµ[ðÅÌ}šáBœF©éW¼;opGÙäEÀ8EOJ· [Üò$ENSÒº£§[iK«ÎßgÉ—< ícÓì4 |EpDÍ·lP‰7)~½1Íu ki¤ZK¬ÊD‡i |©nŸÒ¼ö{éu%¹Ö#†&oVn=ÁíÆ+Ío5)µ[©.õ%$/¼òè8ô®{éu^çRXã}ûÔƒŒztôª±§™|Ö×wIqöÕÏ— yÎz1?þºª«¾å¢žàLnú¸×9ô$ÕU@÷-Ìë?ÚGú¸×9ÏBMl[ø{ʱŽÒäIy Û]¶Fp?^õ§Žc¶Hn§ˆ ÅKAçÛ¯zÒƒFòìÒÞã}ÌJ3†`<à~µ¹o©YZË‘•…䉵bûÅ:dqÒ·m5++,[yÎ/fM>Zàñ‘íé[V×ö–Œ-ÌÍö¹WhAÎÅÇLý*鵇í?kemÁ6+6U'8ðIþCÞ¦–ÚA2«mhgJ®sÏŸä=êYa¦…nÐÍ€Bç8™?ÈW;âmEn k ;ÅŠdÚåŽvŒ2}:ŠÁ×oå•¥ÆÖ“Ó‚{þu‰®Ý‹˜Í•¥ÀI “Ó¯ÿ®«Câ'Ч° 3Ü<É#J‘åvLöÇ_Æ®&±§ÛxJóGh¤û|“G+Håp:(>À†ÿT©«YEáû1’Oµ´©#8L«z(>ÀƒøÖqÿ‰¼Ó©’Ûc8u<|¸Áçé\ó.è°[x>•ŽøÔc‚d/ÒÁÁþïJ±£Ç ƒ§—JŒ^_Üê+nï´±eÛ¸`sžGoJèôXÅ¿ÃË£§!¸Ô®õ´$),ShpúƒÓÒµ´„[oÌÚr}¦úæùmË$²ãwO¨íé^­á:]3A·ŠávÜÈ ³å·|íÉçÛøW®øWL—Iðí­½Êíºeó.2Û¿xÜž}º~é~°“NÑ`†q‹†dß6ï¹<ûtü+_µlV•#"¾( ò3HT0ÃG^i ƒÔN¥¥ QE袊(¢Š(¢Š;Òçš^†Š)(£§z(£µRö¥4RsIE(÷¥ëÖŠ(<ÑH(éE/j3E'z ÿÙÿØÿÀ>ÿÚ ?õêõÊõÊ(¢Š( ÑE¢ŠLâŠ;RÑEQEbÖŠ(9ô¢Š9¢Š(¢ŒÑEQEQEQEQEQÒŠ):Š(¥¢ŠJ(¢Š((¢Ž”QIEíE“â0ÃKw <ä×%ñ$þÅI•†Õb¥Häqü«ŸñЏÒĪÕ ޹ýjÁð?‡Ý[‹yÞy$6óÏù÷®kÀ3ÉgáiR[q <²Ë&q°2=sÇê+Á’KmáÆYàÈe’IOM½3ü‡çV¤BÈ«þ²Má;‘ÛðÁÍEö†‡K’5l†eˆðÄvúm$Ó¼Óƒ"¦7¹”FG$c¡öÛ“RF ]ÍÆdJ˜.;g·ù÷¨ÒX.tùÈ<ªÃfÁ† ´ýÞÿþ¿Æ˜²Eqi)SÈmÚ9Û´ôª3Þ^Å©b±2Y„§'«à¨=†0zvªs™­}8KlÊ®’îrr€öÇÕRS-¹_&ÀIlT)œõf99P{ còª²ÞYj–0O,5œÆ9™ïޤ ä€AÁ냎ÔľÓgйWšÎgŽgSË:ãž@#ƒè}©‰{§ÜÁ™[Y™&e#$äu#ž@#ƒèjYî­l.Ù§BÛãXÓ"óÀíéVod¶Ó®ä¶(X©xÌi´sǦ?Z±u-½ÃÁç‚ÛK¦ÅÀÚ==+•¸– ™VÔnÚ,á HðI«ã¿Œž•ÍÏ,7Ú•ôêÖâ`Ñ$`¤õVÇÐqÍ`Ë$3³j7³«[‰CD©€W#Øú ·o ‚(%ßPêä|ÜœçÛ­>4‰FÈd-PÊÇïsÎ}ºÔÑ$J¾\R@+½Ï9ýj–‰Ù¥º¡+ì’OÌæªéŠ yãdÚ›²r~f5SLQnÓÆcÛìò~f?ç`M|×òÔ—‘Ÿ¯®iæ{“w!p¢8Ç_­IçÜ›©7…cΡŠÎ®%º‚#,ò¹?J‚(&y¡Œ¼Ž:ɨ#·Ž9äšËÊã <šÙÓu‘n“ì]—Q*«Â¬7ÆNH#9íß¿§kÏO¹ò×Ⱥ!>&Œžw¸é×ëbÓTòl®<Ãr +,m‰c'G_ω©x‚[‹Å³‘§”ýï˜aAÆsÅs·Z¬ÓÍögšyUŽò…ÝŽN=Í`M¨È÷?dy&•Xï;°v2NsÞ³|á}­½Œ¥ßn<¤y½sõªâU¹ÔZÙ‚˜±Š:Ÿ­Cæ¥Þ¦ö±¡Û-GSëš×6×ÒÉö]2Ø[Å"’úUÂÆð þ#ôïÛ½kŧ^Üæ;8¼ˆbýÜ—“ ÿañ§ÿ^´ÖÊövòlaò"÷s ÝAÜ×Ai•†ó$0‰Ëv5¥l‚%ˉ$ 0¹<·jÔ|¥ù„´`dòj¼gJÐKÉŠÇràyÄ6ã“ÕWÛµ*>—¢F÷Bܸ 6ÆÝת¯·oñ¤GÓt…{‡*.]­»“ÔnÕNç_–îÖwŒ¤€„fÿ{oéY÷:ÝÅÔR0)(!xÀ'ûØü…SŸXšæX‰T¤Œ}qYRi6÷bY'wg_oNsíÈDYÂæId.Í*lqøÕ#e†Ye.Í*lt¬»M1,f•m5 ±#zœeqßòÍU*€l†q¹ãŸÆ©Çq³,_0#vzŠÑq/Ùš æV`UIïŸlsSIJ»£&Gc…õ$Õ”°òÕ‹³p§×5éžm4ivÐEg Ìq‚ÑDTœ‚Üž§'Ôš÷0é¶q[}—ÍHCŒ©l‚Ü{“Ÿ©¯VоÀ,-¡·ë*F¢ÎGñîOæk¡­ºÖ¥(¢z(£š( QE.1E˜4QKE¨¢Š(h¢¥RûÑE´P:QÞŠ;ÑEZ(¥ÅéE'qEsŠ:ÑFqIšNþô”P}(¢–Š(¢Š(¢Š(¢Š(¢—­RQš(£4¹¢ŠJ(¢Š1EQEQEQEcÞŠ(¢Š(¢Š(¢Š(¢Š(¢ŽôQER´QG¹ IÀÉ®{\Ömd±SfërCò«Û޹=«Ïüaâ3TÒ’=6í.ü¹‰uAЀ@<öçñ®KÄöŸ¨iê,.Rçd™`ŽžÜþ5Š·“i^ ŸP¿ˆE9Ú Ùç8QŸ|ιØå“Lð$×w@$²¶æ@}ø÷Ú¿c ŸNðl—W@$®w2)ïÐ ûá:«§joý‹} D†8¼ÉCgçÉ\ñî¹v¨u2öÞ×D½EA›o2Dby¸Œl¯Ò£Õl/"‡J»ŒGù#lþó$gé•àzU8îßO×m­ ü“Ç,¿i#DdPP8À Ž=qY²Éý™¨[Ág{$±K´Œè¢ó8 Ò¨}µµÜ’Æð©‘´{Ô `Ò¬ëZ½¼P]ÛÜ4–í ù›Ñ~ú) HàrKøÔ—š‹­”–³±… GØ nŒÙã9`?’óR0ÙÉ Ã¸2¾Åûè9ã9`*Ä—í4Ñj6Ò´šl¶ÛÒÔ@ Èôµ¡%à¸ÔöÌ´štІŽÜ@ œŒà:Ž˜µtÝù÷m{lÍ&Ÿ,;ã€B œŒñî3Œ{Ô_n´½Ò¢½û6P¡7@HÆA\ÿQ¨ÚöÖçN‚ðÛ‚6#eãiõöÅ'Úíîl"º0 Ôœ`ƒþzW;ö&‚bò:+¢+Tˆ,qÎJãðô¬-Ì2àá-Ö<$`÷+ŒÃÒ±ÔÁ)i™.ØàXÀHîWýjx $©W±-Ú IåÇÆéÿÖ¤Ú^E.£ >}‰Ç©Ø2:Æ—1‹…>Ôý*ôVïî«ÈÊ2ËÆ œÂЮ_ir¼°ïSy&5%°\ŽXw¬ûË«øo{2Ѱä'~5Ÿs-ÊN±Åe#æbj…Ì×1αÃo¹ùœž”¶V¶ÖÚÚÜÇ 7 GÎãϰ©´ÈuTxHyæ!¿Nä)úu¼i« £mÓÍ„ ÙäqÀü…V¼‰õ›÷Õ­bŠWMÈ—vU 8è8íQ[TºmNÜ$(å‘\–vU ô /¢mJéµ+fX£•2+’ÎÁBý¨ÝY]®¤·m¾áCâ(#Olž€zÖ\Öó-ÒÌs(„GSþqmp—«pKLb8u>çÒº‹m9´ù xìâY®}¥ÿçš–ÁêXôæº[M1´ù¢w¶Ey[÷ì?åš–ž¬z}Mt6ú{XKýž1$­ûöþâ’îǧãWãžïUIçmma“ˈH¤dw8÷ÇèOlV‹Ïy¬CqvA´°·$Hãƒè=N>ÄûUã=Χ×kH_djèö§¥cë:Ú\yšVŸ9Ð|Ó¨áGäàÁÔõUœ6ŸfþQ_½"tîx±u-In7éöR˜JýéW è0;ž®~A y®âkƒ1?ï8ÏO©¬v1®òÁå2צ=>µ–ÞRofJe#o¨¦=>µvÞa/,Ò+K3L­»o ô«PDŠÄ³–FxîÇ jÞã,ÎÁ¥•ùÎì{ ³ö½^v·Ó%•æ„n‘"Ç®9Éu­;oêÚÖñ¦E,­úÀ¤Àä€*ôZEþª]4ÿ1Þ\!‘ÉRj–QYÆ~ߪX[H¸ MçNO÷YW§¿ÍSÜh6ºc u}kM£#t“<¥‡;YW¼Ó®ôÛ{ÞjZ­„,„n†,Í#î²®8üj—ü%–Öìé¥hpÙ‚O™r„ù¯‘‚9òÁç§oz‹PñÆž“Lš‡‡™Ÿ2íï›#'üòž™â©ÝøÎÍ%•4+$bwÜ'úÖÈÁ ÿ<ÇÒ¡ê:7oý¡6£mx÷J‰q ò’0ÎNrr0OÓ­Yð¾¹ ¸´QšúÛQûR¢Ý@Áw#09ž¼õãÒ¬ø{\Ñ›ì©{%å½é¹TYâ eI.{óÖ½ŸL¼ŠöÂ)#»Žè…äNnüvúW´é7öúŽŸÖ÷‘Ýü 4©ÆN;ŽÇÚ½cO¼†öÎ9a¹K´ntî~¾•pb®Õš_j(£­R}(¢­Rÿ*(£>”QEQKÞŠ(¢Š½Qô¥¢–ŽÔRQÞŠ^ÔfŠ:ÑÔu¢Š8äÑIïGZ(úQø×ÿÙÿØÿÀ>ÿÚ ?õÑ^¹^¹Kß4QEQÏ­QEQE¢Š3ÍQÍRcš(£ÑyùTò äädƒÐãŠÌ³–æûO•íä¶ŠâÞä}¢4ÉÚ§‘Žr3§ýPȰËsj¿é<¸÷¸ N2[ Q¨oIw+."Γ€K}@?I¨y‚ .-Ó÷Î<¸÷0 N2[ðÍe*]Gsæ"I$ólJÜ+à •ôë8,ârê%y¦*&ôlc‘íYê“,¥Ç˜óJTJç€ØÇ#Ú¥„i¿išx¶™Wýf2H&•>Ä&’Hðd^È4øþÇæÉ${Lƒïã¨4—PIªª vdØsƒÆ})—> BJsÏüi—15ú(‰Ší$óÆkQ¢ŽÞÝe¸a#”Ç–9þñôöêóÅ ¥¢Íp¢g‘ÔWÆÓÓqïôêÛǵ¸’e»¡Â†ÆÓÓ'ü*”Vë3<,J6E*2ÿ0Á9íU´ùŨš]ñeád^ì =1UíaY]š1¾&EÇ,7 íYÖvqiMùٙZ;V+–#1÷ì?:§klš~‹,Ò¥ä)mòç< ÍøpÔúU;KdÓty]ÉRd)nq’xù›ùΧðÔECNÑ2©ù•å#sß…?Ãñ8—Î1eïB2@ç§njM6Ýæ˜ŽÀw†Œ°Ý«Aµ3s¯Û"••͹Nyéùw­iukÍž9X‡Þ¼1<ç1ÈïZRj¶;™~Ѭ§ïo^yÎ:zV]þ»u¨³ZéÎ6GŒÉŒ. Çöõ¬CZºÔ ¶¶”£þ!Âàñü½k.ÿW¹¿?gµ‘J!0áqÓùTOiÎ@ÜGaùþ“s«O##G´´÷S}È”u'ßÚ¤Ó¬§¿Äf8¡‰KKq/܈zš’-vÓKifÒài.ðBß]aB9XùÆ}IÏò«Öþ$Òô•ô+y'¿9UÔnÀGr>qŸRsüªÌ:õ†%}&'šðåEíÈ ²žþüרÝÜ\Ý.¥yY‹I&Hž¤þœW%u¬_K¾!u&$‘¤¡Û¹Ž2N:ôÇßêwRÈcK™ 4…äe$ORJ ±•;õ+úUtŒŸ½¸ž˜¦Å»·¦:V¤:k¡˜(n‡9Èú ,œã8PFG9ÍYM9ÉV뜊ÒM.Â+9nnÔ4‘®á%G$“þ¥™h–í,ÿ4ª8OøVœ:Uš[´³€Ò¨ $NMzëHì´¶[|×pÌ,ß($’;”Ó[T²[謌ãí>üI#°â¯Õú·EP:ÑE-QÎ(¢Š:ÑE-¢ŒÑEEbÆŠ9¥úQGøRQ@¢Šç¹ÏZ(hÍ´QH%’Š(¢ŒŠ(¤Ï4QF{QE¢Š3Ed(¥Ï½Š@FzÑžh£4QH¤È£4n÷¤Ü=@Ŧ™Pi¦@y8¦–A¤.ö~”cŒý) ‘Û?JU,ÝF>´¨ÌÜ@÷§)'·ò)ô´QEŠ(æŠ)sÅQš( QEŠ((¢“Š(¢Š(gTBÌBªŒ’{ l²¤1<²º¤h¥™˜à:“MwHѤ‘‚¢Œ³€­r—×mwr—R|«Ê ㎼ŸË'éõ¯×üHþ!×#½š-°[©B§ŽHÜ}zgð¯1Õµ·Öµhî䌬0©òbSŒŽHÉü³URIc‰$¶RÏ9>RŽ­A#°Î:ŸBhÒí¯ –ëd?qŸ(²Á•›Ðtêzc4ënC@-9šlìì°`O㎧Ó5i¦’ÒÒçi¸Ø­#&BŒñÇø÷æº}H› è´ùW2:®]xqóëÍoݱ¶ºŽÎAûÆ,¼1ŠÊ·³† 8þ̉Ì*¼ÊNsÓ¿?ýj¡=åÔ6qA·ËžRKò£ëüé“e´äód2ŒâGE¤ô\þ¤šŽ\›52¹|ðì£æolÔr¯ú™p<; ›Ú­Aå2‡Œ^»¦©©£·Ì€*õÚ½*xÄxÜ€*õÚµ ÆC™¤“åAÀþ&¢•]ŸqlöTR†Þ\¿àóÍeAwx–mq0KG—{G$Èüc> céšVÔîmtWÒR}–²K¾p£>kñžà`T&öâßIm?ÎÙo$›å ϘÜ`QÅR½”¶cdçÅžLåŽzu¬{¹Ç1¯çÖ™`‰ªâ"û2p~è8àœõ4Ûp#}Á7ÈÈà{Ô6Š"“z¡b¹##€}O­kYÜ[ªâduœ‰|Î?*еšÝbÛ,Mæ‘&þ?*Õ²–Ùb+Þ ‹™ÂC0%‰© ŠââuHQ™G%‰þµ¥VHÿn>c"ù…VAó`à(õ䃟jܱKŸídÍ4J¨`‘ÀQëÉ>Õ³ižŒæè™eC•ÔŽ^H5èÞÝ&‡Óžg9QÙT| Ë?zÏ€FðÒ^Í÷︢¨ùTûç?z„„¢%Ô¿zá‹:*Žý3øÕê¥ëšMìºd÷Vq³+ÉÜQÛ…ãëÏðªž/ÔIñ>—qugõ2À7‘¾îGÔÏðªž%Ô?²õ­2êm>yíd2Ä7ls÷r>¿Î¹y´››|ø‚ÛTdÔL˜Ö˜ÕG'“º{Œû×#q¥Þ\kŸð’Ù꥾FhR”E'’ qƒ×§zçgÒîf×?á µÔLw»›tKJ¨'“ŽïýkÓ,e–k(¥vÈë’1¦}ñŠõm6y®tøg¸Ë’EÜTŽ@íŸ|c5èVrÉ5¤rÊ›×;{Û>ø«Þ¬ÔÔ½(¢EQEQE/z(=(Å-f’Š)h QE/ŒQIGÖŠ:š(¤ïIE)¥¢ŒšJÿÙÿØÿÀ>ÿÚ ?õÜñ^¹^¹G&Š(ïEsž”QIE…€ëM,½! R <}iªFOZMã< ¨ïKæ/®iw­4Ì€…9Éý)†t)êJi‘AÇzx Œƒšz°asšp ŠFp ž¸¤y‚z⑘ŸJcKò’€þUJveü©¦N2¢«À$šá݉1ö¥V·Yg¹’F%£<.zTQyY‰%;U¡‚?:¶¶ê¤NÕ0‰E9Ù#RÎÁTu'µ:ib‚&–gTY˜àK#¤Q—‘‚ªŒ’z j\@ãäš6ÿuÁ¨cÔ¬eÇ—{nùé¶U?Ö£[ËWÆË˜[=6È )š Zs_Z¢–yÕ8;Ž1J×0 %¤UàçŠÆÕüa£èŒ‚æg}ýâ]á~µ­|@ÐtGTšgœ°Î`Pà}Nk#Uñ~‘¤²¬Ò´„ÿÏ!¸­Oe¯Ã;9į¨Ùéï¤yÚ´ö37›ò±b˜“ =N sŽ€“Ò¢¾³´rÃ=¹–Î}·î*¥Ž\tÎ ç'¥E}ghlÞ í̶³™pÄ”Î=pO8èjÞþswZÏi%š0…‰†Ee±=È+޼P%½¸†î&µžÔÚ+E$ÆÊË…b}ŠãÚ•e¼¸[¨ÞÞkfµV€“« +ßqíYÉ#&¯qm®#R‰aãÊá›8úgÛéYŠìš”ëŽGò”ª¢á“+óþYªJÛ5)Ö3¸ŒTL2daŽ,ÔÐù6œ²¼ŒA}ÙÈ?Ž}ÿJ’5ŽØÇf$gm¥óœƒøçÔþ•*yp´3¶ÒÙÎAüÒ‹M=,f{…F-"ãin9íߌgÞ¡‚ØZ³H"%Ücøç·åøÔP[ fi3¹Æ0[ÎúÕÚ¾¤eágQ’¡¾îý­G$1Kx_eQ’¡ºf£’(¤».0²¨äéšdÖ\ONY„M¸/bN:Ômh’̆MÍå¶@ìzToh’ÍHùm;ÅG|ñÝ^Ÿ2ë÷6Jì‘ç,݉Ç^Ü{ÒÜ2\NÅç;UÜ-М±ìxþT—'¸fyÇ—j¹ûYÇó«6µŠäG6ÀÌ¿Ü8«V­‚À“l”Åf&›y"Om5É[CÂíÃ9É$öÎ=j’Z\:Ínónx\XŒä’{tõªIiq"Í’âߢ‘‚ØÎI'ÞŸucZ-”aâ·N~SË~4—ÈÐ d §<Z‹‹ThÙ7G úM0l·bŒÚ0¥7ä…jã¥7ä…jÅgÜHÅä* È.8=ºwÿ­çÄòŒqÇÖ«4¥Ûå‚ã­c}©LVå°'Ôû~e´í'îâ'ø‰ýkîžE1[“·<»ÌÔÖ°,p—}è¬W擜qè)ñÁåǹƒ(q•$rÿJ’ o.-̬€T‘ó?¸ô­ˆô_ô´\ÆñFÏ›$“ÏNLäûVö[%“M:˜ù9äæ´ÿ²vY´³†näæ«Af× ˆP˜ÉÏqœuúñøÕ[kVñî\çžã¥U´´iäÄc(9î:WL²ÚG¡H¦$@…‡Ý Úy8à×N·V±h‘À«rdØÎ1·Ûiäú×L“ÛE¢²Ç ‹‚û Ž™í·½eM Ð}¦F‹Ê–èçø2Ã~F©[ÛM³<‘|Òl·W#”ÉÀ¥¼±Ë4’E†%º¹ê ‘Èü¯YÐ%´›B´ku¶Xü¸üÁ†!NÜþ8Ïã^íáÙ¬çÐ,ÛOGKUˈ:àíRW?Ž3ø×¬h²ÛK£Û5š:Û„Ùqƒ…ã?Ž3Uu_[ió5¸Œ;Œ†ó EÇ9ÁãšË×¼ko£Ýý-Œ²€wbн9èr9ª:·‰ Ón>Î!.àÅÉUý9Ïiz–™¬ø°Î–ñ¼ˆ…ÂHQݼãÛ9çûµÎè>#±Ö¼`Ò-œ-*#;ÜÇ!DÀÛ“ŒàñëýÚÅÑõ«[ÄŽéo:!fªñ·'øõô®æ£ž%–'чC^‡ms ݺ\[È$‰ùW^‡µvpÍÄK,Ná§Ô´ú^ôQAëE¹¢Š(¢ŠZ)’MEŽ»m\ž§Óô¨å¸Š–EC+lLŸ¼Ýp?#MycŒ v ]¶®{ŸOÒ¨ÙÍ©Mrïsl"€ð‹»æ^¿{òz§a5ýÄ­%Í¿“b¼¿_ÓóªÖ’^K#<ðˆÐ•Iä}Oδjý\¢”t¢Š?*:PNqŸj3ŽÝ; LžxÍätÇÖ€xôúÒŽ{QG”OQŠNÜÑÎ=(¥ü(¤ïIEôQGãE”QMw2OÓÞ›$‹åŽ3À÷¤f 2{ô¡ŒàóëM@Úr}M"®qÖ–HVAÏ^Æ–H–EÁÇCC aƒH°…ïH‘ï“@@=éÊFp3ê)Ê{ úÒ€j¡³’>”Ç€3n¥5£ÉÎh¨è:õ @£ yj:Q$A´“JI-ÄŠ‰Àì(hƒŒqé@–Þå™cR£;KQý¶Æ M¹¹…$EÜP¸SQ›»X¤0µÄJê2T¸ ú•´qŽT“w U_Ωßx“Mµ·Gy¦L„epS>ä•ZëZ²‚ësïá8+Ÿr+¹šöâ6iõ'r!„Ùïøæ¼ËTÕ5Z)Þ»#sn¡b™#¯ãšáïîõMF)ưäÿÏ(,cÓ‘Éýk¿ºQmÄw?!˜)sI•@dgœq޹LJdV÷&ñ¥P?Õ³p:Ž™íõ¬CncŠ ƒxò~ôË2Ü£ÔgúÕËDÕ%VTk{ˆqa,„{N*Õµ £e¿š+ˆ±Ÿ•Ê‘ÏB ­8 ìˆË{,S§_•Š‘ÏLUõKG‘¡Š4·–a(hÖI „pÌ åÈô÷¨/ Üñ¢¥—ÌÊ+¹Âñ÷ˆþ#íïQ_ýâDI/™¹Žp¼u#øˆþµgXŽü鑤-ԹϚñn÷ùqžÙ«z˜º6"[-ăïn‘7ýðAÆyÇj±© “eGÏ ûÛ“wýòAÆrqQi—z¤) Zt–pc-p÷^f[É<ý*=:ööÞdKKfÓ“5À¹,XãÐä⣱º¼†dŽÞÙ¬cÆLâà±cŽÀäâ´‡µMMl®tÏ1v̬Gçõ­ë‰ÚÅ•ÚYÝiñ] Ïï7cõ8Æ ÕÇ:•­ÚÚÏcÂóûÍÅIúœb¶‹ôÑwîèQ@bç[¿ðµ´íƒÍÒËÑ¢EVÁüëI¾!èñBUœIÐÆŠƒùÔö¾ ´• Í$P¦~WfÀ>ÜýEXÐ~ Xêžs^yVQƒ˜™äûÃÓžüò*ΑâûMAd{–¨ÈYúLzÖ„7–·•}{:ÍxÑâ0Ű,ÿUpwþ ×¼Cr·z½Ý²•dHÌÛsÛ‘øW'{á]SZ¸[NâT±¡fÇ·<¹íkRd´ûtvŸ7cONA€/zäu»—-¥A¦hȈ–q9ãŽÃÐ~×;¬\»LúlÈeLG–$öãú~Ñh?ÙºŽÂ¾DJœõcŽ[ñ$šôßÛËiák YmÕ¡‰Wc‘¹¸Éb;I8<Ší|3o%¯‡l­¤¶ks J›åxúrqXf6ŸZ¼Hî$t[÷ØÈ@«… Û ç×ñ®ñ†­ãØ¢¹‘~Ñæf`8ED!qíÇãø×/pËâ[¨£žE3‡&lpŠ«…Ç·ç5 ™ËÜZ\¬‚+|»o0`œ oôþ#@kI¹»µŽæÚa.-åÛn¯êþ¸bÖ³´¹®­ÒâÞa& —eº¿¨ÝõùˆZÓDxÎÑ! Ø?( äs‘îO~•%µÂÈ"[‚“ÊÁö¨ ‚;²= =úSìíçY<¿´–F…cÙçÖ ¹½D°IôøEí²>GÙÙTÈb™Àeϸö­[ÕŒéË5’-ì¾äh!EÁ ³<2géБZe ŠOfŸk…_r4,ªCm‚¹þYF/[ß½Œ1£³Þ‡Ãä~èªsîHÅfÛëßµ¤;½Ð|9oõePž}É_óÒ©A«Czöpª»µÐl>~áU$ƒîH¬mLKs­ÝÛÙ#’XPº2Ñ&௸ûqÀ&¨j×zÍÌvÍ-$I½]pbMÁ[>¤qÀÍQ¿ßs«\ÅjÐÆòF…Ã. I¸+g×p*ÆŸ%Ž`»¾a‘6A#¶Ôw#߯¢a%“4s^7”$]Èç Ê:=ý½j[)lËE5ÛÌ‹²'c†p:d{ÿZ²°Ïozó½ä’@àâßgŒŽ¤th.L¯s,‘08ƒ` Àçü*VG†å¥{‰$óˆvŒ)Æ9ÿ hÓÐ_Iw°2Æ ƒÓ¶ò¦6¶éîcoŒñŽ0•4ظ{ˆò7 , ãØÿ*§q¦Å¨^'Ú&hℇt=¿èj‘±Žîíò´q£pz}R{$»¹Ï‘’8Èf¡÷©à³¶±½ž[t¥9i9nzòxêÄVðY^ÌÐ ÛÛ™`·=yaåÛ‚ÜõäñK{¦«10“ ’epß1ǧùô¥½²PãÊ&)$ »ù©nìÔ7îÉŽG9v óS‰oV3.e*Nç óQ…¯´¸m¤Ç9ÀÏ4À#7{ZO›i'qÎp;ÔWw'æÛÔqŸz‚îs–ÇïïP]M÷±Æ;ÖjP`X:NkÖtkë'ÂöPC(•á¶÷Al‘œNõèš]͵†kN£?v$:Jäõ˜µíkRšÌ´´v_2W¸8Àß§çšõ¿ˆu½^ky¿Ñ-ft3¯ÞÇ·øW¬Ûkz¾£-¼„ZÚHÊV°8éíþ{2è’Çg§[¬p3”yî’áAä±þé=…cß] þÁ¥@‘[»˜ÞUmÒÜ(<–nÊOaÇ­fÝN4†[-6ŽrŒêÙ’e’ÍèOj£Ã ü‘C<“:Ãqó.r6úõí^à G¶·¾–8§i¤Hcg°Î௻Ÿß¢[ÃzñÇ;Hëå†r1ëÁ­ö½¶[ųiUgq¹P÷çùJéR³PO{„[™ºFO,?Îxö5¶×ÖÉx–o2¬î»•R*YdXci¢ŒžEO4«-+ð¨2jY$X£iî¨Éªöº•î>Ïs…ºÜŸóŠ«g¬i×ì«kyŒÃ!Cr~ƒ½W¶Ô¬¯6‹{„rà ×éëVûb®ÕªZ(£ÚŠ)Cc ŒÒVÆTŒŽ†ŒŒŒãšZwCGz(ϵ.h£QE”QKERQGÐRŠ)xéIE%ÿÙÿØÿÀ>ÿÚ ?õ½ÞÕë{¹Æ zÙ<ÐIÀ<ÒRÛAæ€ÀœRÓ©hý) rqA¨ËDNI)ïQ„œ–©êi™N¤ƒŽæš·äÙÜR)«rM‘Àu"‘eÜåPdw5>jÀ©(íE£¥TrÍ ºY@õ5ÝíµŒF[©Ò%?1Æ~•÷0ZÆdžU@ÏÌkïǤnâà̱¶×1 ÛO¾?Ï5Ì^|Kðý®æI$Š»F¹üñùÖÏŽ4heiQk2.@ÿ<~uVïĺ…êÚ"$Ž~i%˜a€à€ ã¨ÏZËÔü{©_Gè6©KËÍqÔ¸Pp2yëToüUv$奘sޏàsÏZÄ¿²‚ö1 åb’L’\'˜Ã°þ÷á\UõŒ—(õ|´šMÆBÁC‘×á¿ æolÚæ1ØÙ’û‚‡#®=GÒ¯[ÜXÅŽ5G#÷ƒj‘ß§ùëVíšÎ(ƒËXÔ‚gÆ®¦}»zÕ»skPQH&^„wÀéŸóš§y¯$~SYÃ%Ú3m"Ø /û¡¼ÕÈH~Ì­:·eºð :þ5æ¦Uaû:´èNа(¼;Ö¬÷7f2¬fNˆÜc¹,Zvú¼ÐÛÅkBbIV%p:–nàpx«ö¶·š„‘B$bCʱÛÜŸoj±7‡¥Þ5³#bÄ›T‘ÀvÇZÝÚDÛ‰¡ŠR¤ykaW#Uê?ƵÃ0Fsý¼±ÈPªˆIȪŒ~6^[ϬÉ~ñôi!@Ÿ|ðkã–ÖüT_¸8Þ`UPOO›w^1Åg?‡¢³x÷kR]¸8ÞÑ(žŸ6zÖ¤º%êDZ6‚G…ÆÒZÒ¼ð¸- ¼¶–AÊDW }·×ëW.¼'ªý™š ˜$qÊÆWûn5“ÛÚ¨†{{a0vX9SÆNqÏjÌÕ5˜´uþÎ}>ÅnQW{‚²²° ±Î0rp=…QÔµˆ´±ö7µµYÕFæ9VÀà·=xúRG¦Ï¨¦ôŠ$ýÒÅ}FAcàýsÄЋµKh-Û €ÆõPW·ðÞ¯¯Ä.6Ûà ci`SP¨nücr±0¹•%FÜYXícÛ€Gó­™¾ XIm—©L—I•Êå_БÌÖ„¿ t÷† —“,èwHäd9öãõ¦ÞéJ4$‘:í-åà0é×µdêž¼Ðd0Kh'µqƒ(‹ ŽœžÕVûF¸ÒI‚Ke–ÙÆ ‚>éÉíT¬ï­<cæ­œÂÓ~cmâ0OR1œwÎM&ƒ¯Aàëv¹K9Ì1I¹Wž ä|šf•«[øVÐ̶³°È¹Sž1=òk§OXK¼lä8e ×j¿4G·+Jàùm×P¾1ÒÞ êÒ8;jÄZ½Œé•˜õÁÊ0Ç8ô«–~7ðýâ)[ï-‰ÁY#a´çœ`~ubÛÅ=Ò‚—{I8!цӜrqùÔ­{h#2}ª=ƒ’ÊàÕù5ý8šVÔíJ(Ée”0ý*ÛêÚtq4†úßbŒ’$ùTwzµ¥¸‘¤œí›Æ?_ ª×þ'Ó­4—½IÕØ‘Ær¬ÎGŸ¦MCw­ÙÛX•”3¶4<3?aƒÏ¿Ò¹¡i%Ö©bä€zd‘WØ…°?àAxö5ÀèšuÅ߉4û›’<¹ï^Vvÿ–®ˆX€}DZ®GM°šmjÊiXyrݼŽÇþZ²¡'۱DZ®–äí·•‹mÚ¤çÓŠô›÷XÜI¼ H™‹«€y®Îé¼»YŸqP±±Ü;qÖ¹«Y’)z”«ýØ c“ß#ü÷ò-:x"¾æÒ8#wy2wH6œsšóÛ9¢†ös,L‰ lí ë Ú{æ±õ JßFÕ¾×,L'ˆÎèƒw¶®x<’yª³ÝÇ£ê°_]@ó%Ò†@3ònÚ½©85^kØôN;»ˆ^U¸C;*Œü»¶¯Ó¹5oX²‡X°…b½–Î9»KA`ÃÓ¯9õü+OY·±ÔaDŠg±‡ òÜÄIݸt¯9õ?J¿¬[Új,i3ÙÅò´“ÄN[pè^r=~•jºÅ•›¼Öé!X¢¸q¾%<ü¤öÎ3Ó¿±¨­¯ÓN¹²‹ísY¡u†)åýäJ{)?Â'§cQÃ}Ÿqg¸–Õ]ÄQM 2F>é=²=}xïQ:Û}þžmD+<Œv®ýÙ;[a^‡»v:ÓßN·‹ìº•´¶â<§÷i»x,¶èq»òüjF²…ZÖúÖH^t‡äMÛ²v…znÿ<Öv±c7Ï9˜B—êb• Ÿr¶Hí¸c?‡zÍÔí•/^v˜D·€¤¨Äå÷ËÙÏáÞ¨ê6¨·o#L"[Õ)"~|«e‡¸ÆƲôŶ¼šØÜOöŸ³…ŠmÉT.ÌG\üÞ³¬ÞæKv’o´y GEÆJ®öb:ñÓþïT4õ†âH Ó (â(¸Ë*îf#ñþZšt¯#Ë=ÕÈÛu1ñ6pœ·ò«¶‡ÏšY®&ne>Dg8QÎÏ·ò«Ö›¥’In&¸”ù(„s€3íVÀUÃ"ˆÇ#}HÊ»ÌHÈcœôûT¥As2äz~UKU‹&ÝåŸÉ‰%VÚT7˜AÈ\{Õkèö½¼Žâ4IÂø9õZú0ÞGF©"¶Ò3¿ b¬j¼žhòÖy.—ù@?Ëëš³y;É,䯓Ër¬„ò€zãÐ u«R³¼ÙEšIÕ”ŒpþCŠ­=Ô6ÒˆšmîÇå=Ͻ½ê¬ÒÃo7”%ÞÄü­Üoj¯,ÐÃ/•æïf<çÿ­Sm…|Ù[€‰–ç¦;gëSyq§šç…EË`ãÓ?Z—liæ1áUrßþºÈ{˜îcób>ÙÏ#Ö²&&MÈ>CÒ²¥ž9“tcå=3éYú¤Í Q³òxïôVùšdvÚ ’#ð;Õ Ff‚Ùà2#¯ê;„{6†×i¶åH“çßùb£¹ŠK)#„&Ö€'¨~ù÷? Šxd²hbTÛä€Òw;ûçÞªÛ4“;K$YÉ+Õ¿ç¿5 #–frˆNXƒÉü;ÔVÆiX»¹Hó’GýZ–KX‡—c'–võÇ®)÷2ÛGòÚ¦{–o_ÊŸu5´?%ªîîKzÔ*€&WÛUÑKýÑ–ª±”áFçíŽÔGÊIlm{ŒãÞž#u8,0~ñâ¦I `ºàýãŒí­ e«K©@FøÕ–4#¦@'þ?1ZÚ$mf«DAu‘)ìpOýô+OCì©&«)u ‘)ìpOýô?:ì%Óá—Â<.¦íc+rÆLï²yÏ^;`zWpútW“bö(Š\æN$Rù=ú熥v/`“xHKo'úRFR|¾CÜ÷ëœ~­um¢iP›— 2Û–Þ·v8 y9Ï5ÑÝ D‚[»¸•ÖØŽ(NÖ}¼nÀ'®+fg·Òô¸žæt° ©G±ß=k+­{Är,G7ÙÉ–K³„uíU_›=ÿ‚°¡MkÄ‘„‰¯^Ùät—Ÿ,r êGÍ‘×ðè+Uפá­Ì™™î²©"ú 6{þÙé^ÒmKýœžq༬df÷9àì´hvP¬¿Ùiç°Ã¼ìdcîsÀ?A]F›áÍ.Ò1 ±Q+™¤;Øûœ÷úU/èörY¥ÄRIgwj‚æL'?xŽã®G¦{â©ø·E³k8f·•쮬À6ó 4žoB8 ç¨ÏµTñ6•o-šKÏgul‚â!“ ÏàƒžÔšf£Å¥¬¾ ·Oíu!gDʾ?Œc¦@Î1šJÔíoì,/|CmÔíßËŽX¾a#yBôànÁéI¦ßCueis­ÀŸo„ìY#ƒŸï tÈÁéSxˆ\É«iÖѽîèçÙ¦ÜÄŽü*߉–íï¬!ŠF6·’y3§e烑ùUunöÎÙŒ-åÊ£¢ã¡ÏéE¯… vâ5 ¦BWîÊU)È Ã}i4ï \Ág7z”òr¹òÜ¡ESªG8ãÖµ-¼ q%©míô›•æÝ2¾ïut÷5~ßÂ’=¯”–Ñi³º\È­ŸqúÕKí,»€ó×Þ™ueöH`ŠîÞhQÐÚxÙCœuÈwõïL¸·X"Š+ˆ¤Œ2‚†Te}r¿­jÃa-´ Ãk– !€¹Ç füy­;OÖì¦Í¦”Á±8Ùù‡˜d~µ¥gi©ÛMþ`Cca¶ÞHô GnÛOy¥eòc‡ååÚ¸ûrò­3AÔµÙ•¡†Ðˆ³æÍjØžØÚ1îqWl´«Û»™WÊŠÜ„Îù Päú}Ñ®)Í£_7G40ã¡L’OJqø®¼ÆXµ[3ÛË,ÄöçÆ;R?„u‡˜Ë õ½§p³õãÓµM!FYoç9&<‚?Oò«Ö_¦Œ³]ë“îå¾Ì»àÄŸåVí|2n7¼ùs–òÃøOò«+¥Ä¶Æ,Ò‚s™_wáô­‡ð}£ifÅ®®çPÛ‘®%.G·ÓükGþÛ°}Ü\Ê¡·)šBä{}*±jpÍoökäFØ’cݹ}›¨4ëM/]³k5‹T‰­áb²Ã,{·'l7tZ­¹¶Xï£hc8’9;—¶®jô–°LwI 1ÊŒÖΕau'™5¤-!þ?,nüñWf°´·Éo?÷Š þu0 ´ª ``Ôv¥¢š@e!†Aê #*º•u ¤`‚2¤e ¥XÁ¡¬{ßÅ<ªðH°(ëåþb¹ cáõµõÈ–Êál“¼ ÙÓ¶1ŠçµÃu0’Öalំ1XxGÄ‘ßù¶šÅ ¶ÞOÙÚ"£on@'?çÚ¹Ù¾ø‰nK[jV Ç÷L¬¼väÍaMàyn·Ad`Üs!^;`Ö®Üè:ó¤ÖFxÎ\Ï+´mת£óÍO7Ãg6sA-‹\BÙ—Ï™Ú'›Bøç?JšãÁš©kY­ä´3Äx&•Œn=6…ñÍ,>Õ׸¼‰ˆ\2+ ú²“QÇðÓXWÜÝY¿ªFíϾJæ’/j!„—Û6:ª3sø•Í\´ðÜk[‹¨â2G÷v îîÄgÜV¦ðîÞ-DÝj¬²¼GäUÆ?ˆ‘’=¸éèqZoƒaŽ÷í7ådt?*'!†;“ÉúqÒ—YCj±NE´•e ¤á—ò'ô§x•H¼³ºóPi÷ , (íµÐcØ“ôºê5Í­Îð‘ÙN’EØsµÔ~ŸÂ´î˜ 9\vH=WQ«J"Ñï%`¶îø?)Ånjåé×0qz r&öêXâV`Ó Âü§ðyÇ`Ù?x决|·°Ø£‘× BäŽF{õ¯4³Ö/ö+5bb–u"…8-‚:sÁÍ!°ºÔoo(ÔµªD"y*woçé´ûb·ü]cq«êº£Gï4áƘÉ(Á·ŽØÚ}«gÄ6“j:û$Cu—”¨»rvwtíÐÕ™æFkÆYcýÇÈHÁ¶::`Ó/í™®5;2¶Ú¥F £cî°ä r>¢–òioæ áp0UN:íYúX‹Q´0\´OwlBÏû–Á`x8=sëY¶Ðß[©Y"ûdëÐDÅYÔðp}AëüªŒÞ@§Ì‹ípàL¢6!œ¸?^ $ÖçB²ò-lÞâÖæø„@î‹~b^AàŒÕ±izWØ£¶iìç¿y‰t%† *zã€F3Sˆÿ²¬Ò+fšÖ{Ñæ˜”æ"ÝIS×tÆi²¥ÅÌÚ‘´°yRÌyQyàî™±’ûºÁL [›wžmHéÖOŠù*g|ÍŒ³î~î:d’iuge$Éf<¤óß+c,ùèîâ³oôç°æÄˆdEá;U ’2Äñœ õ¬«û±(žË÷R"Ñ6 –lœg>ŸãBòÈÙâ{<#ªÑ*—$e²qž)¿i¹šõôö†z²“ 3îÝภ6{}i‚Yæ¼{Mx²Ÿ-÷åÁÏo­0O<×Odaí‹)òиlÇÓx<óíõ§4sØÙÿg® ²^8%%œŒžzíÎNö¤’)­,þÂ.Õî›$I1Ç9ê<ã¦}¨h§µ³ûÝ+Ý‘$¸úíϧûUY pižSt¨fnÅ$*’F €ÊÐå7:`³3K£Æ ™•âùw:à–g,ö‚æŽWÄX9ÚHÎvñÛúT²Úý¢7Vwò‹.æ?+Ÿ»ÇùÅI%·Ÿ#HþYa¹¾é#9Ç›y —g¶P²•Œ…=±Y÷h¥Ù­ÀW+·qÇcƒéT®£RÌЮFÝÄgo¯áP•K›#yŒXÚräÇ©¨\­Å©¤Æ8å°O¿ãQ8K‹_,¼ž_CÎ ÷ük6úð[CäÂ9Ûœd ÿëV|ó¬c˶{(¬ë«…‰|¸ð¿ÃžÊ+1eó.VbŒUlCÎ9çÜãš ÷&K¸äE!ba寠?™¬™nŒ÷ÑHŠvFÃË_@3W. “æ’\³½ORjÍÃíPd9w›¿SÞ´._j3–q¸÷ïÞ©™Km$+ÀbF°ý:{U`Í&ƒÇ©‡i@ÂƒŽ ÇüÿJríÞvŸ”àÓB±Ço^¦ ‘Xã·Lõ4ï"U®ò¼sÁàQº1ˆ$~”°,±ÃÄcè*I-Þ2¥ °vç°Èõ©_˜g y©^ –!›’­oé– u¥G¡i$ÃÉv±rÈC£ýœ…ºëí^³ûçiå»T嫲¨ÿg ]U†’.4ahY™ÃÉr’›\€÷s€kKÖ7·WÔÛI%¬¥üÅ’6ÙNsž„㟵løWBÔÞî(ÒI,îc,Þb‘å²zßÖµ¼;¦Þ½Â@öîö³),Èòrzú×qŠAsœ»=¹ù±‚Ì­ÔvÎý=+Ьìc²¿‡Mœ$Šö¤†uwWê®~ž•ØÛÚ¥½ÔvRípÐg,>ó+u×~ž•Ëø¥§´ñM«ù8Š”«0œ6NÕÁ_^õÏx¦þçNñe£Çn"H£lK–"]ø^@3X>!¾¸±ñ%³-¹Ž4C‰I‘ž‹ÈÁ+®Ò5hõ(Ù)48)çâºÝXMZÔ¿–ñK ":ãœgκm/R]FÜ·–ñȇŒ¸ÁÆ­døç²ÔtûÈç&3 KˆJ‚¬„ŽN} àúŸsYšô“iÚÝ•âͺÞSäÜDÊ …'åcøœ¯Ö³õ‰%²Õ-.\Á)ò§Œ€F àŸÇƱ¼InÚ}ÔÆÞgá¥(ƒ¨+ó'<™ŽýH®GÆ=Ι¨Ë-ŒÍR©tD$uuã¿8ÈÏR s¾&Óî,.å{I™#u.ªœuaׯ8È÷«š¯ÚEµšÆæÞÛYòp¸=ŒôgŠÐеiµ ;=(Y8´³Ú³\™ Ü äŒ mÎ1Ž}ªî‘©µÕ¥µ‡ÙØ[Z…YnLð;LôÇ5©z.¬bòà¿•mf\ÄåsåŒ.áÎ{óÖ·.ôíR-,õYE„˘ß9’€©Sù֭͵üèöúƒ­¤«˜ÜòñÛwp:åm¼E¯bÖÓ\¬sùrÈÑ‹ ÜüØ=;øW-k®xŽZ[Iq5òC/’äÆU>fä±ÇaОÝ:×?o¬kqk6Ð<²]¤ryN|²©É䓎ù®º Ùj²›LMpäå3!@ƒ®\~¹®ÊO Úênnu).f‘¾êùžXŒz¸ýr}k¦—A·¿>ùæ•ÏÝö˜ýiöþµ·a¶öýã Êyò™=1íE§„m¬çGRÔš4`ÞCÜæ2AÏ#ÒÛøz+yU’úù‘Ho)¦Êy­ºÞ­j){ÑEsE¢Š):ÑEQGCJ b“Râ–Š:Qø×ÿÙÿØÿÀ>ÿÚ ?õêõÊõʆåÊ"ñœœ};ÿJ†æC.wgÓ¿ô¦JÛ@㩪ŸÚÖ’²Ü*7q‚qúVlž$Ñìåòn/R9z‘µŽ?*“ë:u´ž\×*Ô¤ãò­DUü¨el «à_þ·Z§7Œí¶Mö{[‡)÷]£Â‘œd÷N¿J­'ˆáÙ'“Í·î³&Œã'¿á×éUßÄU·ÜíÐnÆO¥f¿Ä'B±&š^W (ÜAf=±Ž*›ø¹ª-“4€£?xúcT y¬K#·–Nq"ƒ§sÖ© OÆòO4‘ÚÜ[ÆÇ!%Œ6Üÿt“ŒÕQ}â™%‘ÖÚH#';d@År;q“×ôªWº¥ªHýÄÍlëÏ—&ä0AúUKÿ x—WumNúY-ä\–Gà÷@È?LÔš·©‘öëÙ^J60>ƒœþtؼ:Ö°Ù[H ç »’}ÁÉÿ>µ[þ{ËUXílîœJ_kü¯$óÖ _ Ol«½¼í$/†?UëŠÍÔßR…Ö >[éÉÃ"°\óþ~•smv—BÖÇO¸¾»'kĽc¯^¿Ê³n¡ºŽaoge5íÁ;Z0xQëWô›Á A-äié½#Ü^H?•u%‡Äk[8¬‘íàGÊÓ,yAרÎ*ÛÒ혫±éÖ‘>D H¾lcÓ5±káÍÎ_6+÷€gËã1œã ­t}:Þ–¨[ùlc¦3Ò¬²,ƒ¡‡¡¡$QÌ¡eEppÃ#5mãI@Y\œ0È¢ŸN¥ÍQŠ(£µRcÞŠ)zQE&h¢—µQÚŠ): (¥Ç4QIŠ(£QFSXddu)’+”ûËÈ÷ö¦¸$ezÖ°µ;ˆîoZ ñ"€U-’{{é\'‰ï!ԵDz[Xá Ê‹–ÜÇàÿ*åõÉâ¾ÔšÒd2[¬`2¨Ën'{éV!µ’8^Û.–ˆ»cV`?OnÕ£iev–7:lÆhôèã1C礮õ8ã®j¹oi:ÚÍc!•,Ñ qù˜n1õ=ºý+-!ß?’ñcN@ zuöÿ àí`xošÞH¼²…m IùÂñÆsÎqøö®JÞÝ¢½hd‹aB® …$å‚ñÆsƒœ~=…Y7p\Ïnò#,’â>3Á>½k.½mªëz{KÃ=⤠ѿ Âî|Ü€júë×Ú­™tx¦ºUˆ•n@'åÜ^@9ª·:||òKlŒw93×~uõÏÏJçoíï®m%šxmZÒ9XIs*¾×Î1ó¨óÇ\Öô7—òËq¯Ù£‘•î% ‡ùÔùã4¬°¥¶$šx–uUEž ï`Ž<ãÜç­#,+‹Ib$˜Už"ïõíîsÖ•–%†Éä³ß8 «4E¯osëSÁ éjno 4lÍ(QÃç¦}8Å>¯$Kv¸¹så–ièÙéôíRÁÛ¤ =Ã…Œ€=>ª½Æ™ö‰%aw)3ʬ݆ÑÑ?¯éPOeö‰¤Û<¥¦‘XóŽEþµÖ~tŽVâRe‘XóŽEô÷¨šé ¢©3\&쨇ø§·Ö«4Á4ù³¦vžª§¿··Ö iÕZ4™&\àõU=ý¿úôÝJâH¡Á]°·¹¨¯çhâĹcéÚ£¿ãˆ$I–8éÛÞ¹s"MrÛX¤’ÇØèâOåXL 6yÉ>¾˜ýkššäm¤žrIïéÌÕ¸íwÝG‘AoSÁïRÛÛ‰.R0àèOz}­ªÉv‘‡pàžôÍ@®1+H§åߌôëþ4ëÅÛ0A#:ô,zT·à¬ëšÒ)à°\þU¥búdnÖòXÈÒ–ÌI<Å1ÑŸ¯ä1Z–W:lSÉnúqmïû¡4Ì= c¯½iY\éñÈöÏ`Å™³Ë)P˜è[­_þÃÓà…®n5T{Ž¿g³¶gôã'ß üªüÞÑíáóîµÅ{ަ KVuÎ:8É÷è*äÚ™fæçV?_&ÖܰÎ:q“ïÒª%„È«æA?îã é·•–ÇaëY©¥LW‘.ÔŠ‘óëôÅR].]¡Œ2í@ >`=/J¿áè­¯¼CšÖKw¥ÙÏV@£9'°'ß’GÒºXÚjž!L¸Ó’ê #ä|ÊqÏŸ^Iµá{[[ýn=:k¹‰Ã;ä 8Éì üÉÓè–Ri:„Ïo¤é9ql¸! ÛÇBz3·æÕÖAç‡íõKˆ£¶²º¶œÌ¶`$µÀã‚z3¾>­]$M¢Ã¨ÏP[O ¦An!àÀãvl}Mv°ì0¡B¡P@¯@Óîb»Óíî P±ÉeQÑxéøt®¾Îhî,âš vö¨îí…Ì@1ÈŒ9ÉVÿ9CM¿²[ØUK˜äÃÅ"õFÿ,¡¤»¶[˜Ôn(èÁ‘ÇU?çÆ¸«Ífús£ujËg-Ó%¬¼)Ž1ÀsŸïrzt® Äwú‡Ùµ ,æû<—/¼±·–ÉÆÿ¼A<Ž˜®GUº½»ò/dµBó²Bêv2 èÇëÉéÓ©eýŸ¨Ï A(—c¬± îàà@ÿ<ìèw—Οv’0Yâ–1Ä«´ýú ÔÒ¿¸³œv *Hƒ‰üú ÖÔtåÔì%±½×ŒŽ8Îßç[×¶K©i÷°¦ävÁÇåšÕ»³[û)¢lfD+ÓØãùÖójZ +s²˜1±'+· ±$}à7àr9¬}0¾±áˆâ½UK¨O•1$åY çבõ™c¿RУK ©qòå'9R§çx'ñ¬C¨ÞèÚv¢-þËxûa€KÈì}ÁÜ}+óWºÓ´ûç §{•ŠÞݤÉUÉáT†àx#¯¥e\êWZ}ÛGäÜ8HaßÊ®~v =éŽµÒøAåÔ4X縹ŽöäÛ¾Â.N7g󎟉®£Â· ¡Ar÷iF,QÙHln=sßüäÖï‡&kÝ"+‰&ÌLnT†ÆO\÷ÿ95¬º\’ÑC9lîÙžù‘ééV—G·…̰CJ\±m™Ï5mtèb%âË-·=êê+¼Gà*ú‡y8çж¡±óø wKKERæŠ(¢ŠJ(£·Z(¤¢ŠPqKîh£Ú¥EuíF})Ò’’‡ŒÒ0$tÍ!äT1ÛÂŒ[`ɨÊÝX¹…Käf£[xÎÅ$÷"‘íпËÀÃŽáP˧Dónä”TþŒûÓÑL¯ËŒqŽáV8Ͻ]Ú¹Î}qV0:àfàãØÐT íÒŒ~”º „g5£¹;@=Îi…Y\ ôÅ*îÏ͌۽=|ÌüÅpnôá»?61ŽÔìc8¡@èÏ ¥‚—ŒÒÑIÚŠ(QE)¢ŠLzÑE.9¢ŠLzQE)QIô¢Š1EtïE¿J(¤íÍQš( g4QIE½è¢ƒE¨¢².`[]Q¦ ‘p¿“ NkÖí#Ókyob1Wìò¢nèÄ63»þ_•K¹âЬíÁÒÆ—ÇÈX9#Â@È-ÊÁ¥YE;iò^iˆè)“" cŒq´õ©?ZuÀ‡J´ŠS`÷:j:#H_" vÇHäwÏÖµÊÛH$Ô-"Šk—· ïá€Ë8Î}=+T 9D·°E%Ô*Àà’­·æq»žÙ95§þ ’{h£’åáQ H`>`ÇúzVnÍÇÛf–)ÑbfšñÛ!=#ãîÀ ÏÒ¬o/úöeh IOŸ=ë¶f”ž`sŽƒuªe¥Ìëyq2ÉK1óeºc™d$}̃ ÀGÅe¢Òw[[ ™ëk$ƒ9PùW<¶Oèj—ˆ•!Ñ3m¸•ïY”Œlqµ3×'…SñaÒ”ÛD'‘îʰŽTcî®zäþ†«]Çwll#Žyd”Àà$``dvéúñëUobšØ´v ·ò¿8 €c§nFyìŠê)àÝš¤Ìòãvqµ;týj×™°4!ÁaÁ“ý?¤iÈVÁŸðÿ ™¤Ø *ÃpàŒ÷ÿðªÆÊ;ícÌb21Üç5V[hì¬ÒØe ÇñuªÏmš[&Sa95JTG$Ñ ² œdçùšÏ‘JòF6·LžÃ¹ªN¢ òF6·'°ïýk¾Ô®o¥xb\<‚ÝÈÎ+îöYË"ü¨{÷5Ïßj3\;¢á#õîÔ¶g†ÖÞò9Ú‘ŽK›gi-ÝÔ6°Fd–V ˆ:’z ŠÎÒK»¸mb|’6ÔAë]}çÃÉía¸¹±½Žy"‰”·ñŒ–ê¸Ï½wZ—à ¬ínn¬5n^Ö(ÚDÝÎþw¨Ç¡µÚÞü;{Xg¹°¼IžÑ™ çpÎáùŠ­â+(tý6ÅtüGq6÷Vþ .N~™Rñ•®Ÿ¥Xǧ€“LZEoâ*QyÏà:ƒÄVpYi¶Qéà$Òîe=ðUyýçYvñËb²µ¼²<ž{µÈc&zèРdÚÂ’YÅ2ØÍ"Úå®®W†2ÏÞþ ß=zVU¬Jö‰ ³–Aj \Ü©Ã4™Ï^Ã@'Ðý*Ýô63ߨÊ&àÑpƒÊ}G9ÉÎÒ¦œ"ÚK¨YÈ¥‹àŸ-û§=r9¾j{Œ%”—ÖRûŒcîyR\Žsß±ÒæyÞW¿¹š[¢ÁÏžNyNk;í÷3ÊÒ^JòNß34¼“žAÏãY‘ßÜÌì×’¼—îc&I ò?và»]RçP³Aq„‚MÎxN¤®{‚Åwÿ N§&©wª[ ¸Á.öÇîÆI+îñ®×À+y%ýÖ£‰“ ïoà9à€* "ôjÿïî'‘ÚØ;ªà * = n§õBÇQ·Ôþ$êw—ò¸¶f’4à:/AnÌ£õ8íš©§ß¦¡ã½FæîG6ÌΉ€2¹=ŠÔãÐסḛ́ÚË·ï6T‘ÈÁ®ûÀì––—zu¼Ë9‰’E!·/Ì œÇ»? l¶¶¸³‚A/–UÔƒ•ù€'³¬õIuÍGdRI ª©>Yi”v$žƒÚe¬]x‡VxcÁd€B…Ze?ÄO`}=)lõõAÑDÛ(ÈB›L€÷'·ÓÒµõ+¯-ÂÉðq¶uí=/¬6·Y•…ŠñŽÄwéZzš]Ú„h„OÝ,GØ®/^¼GWæKCÅ´{Ò6#IÀÏPp~¸®FúÆ};PŽ{ ¦{F@“Ëx°$ŒgqÓ¿njú4û¥–ÞIžÔ# Iå· ¹ÇÐã§~ÝN™y §†àd{ˆá‰K>w±\»Ž¼×Wì:o‡Öà'Š˜ìWûÞ§ƒšèaºŠËFIy£‰$|ÌW×ߎjK„7j~Ês1ÜÒ.0xûô(ŠÞöÚI-®þràpNÎ?à#ñ©Ew ½»çvð8'Jæt)ÄÚå­Ñ‘%yLVí(VÙ‚GCžqÓ±À®#Âú¤1ø—PЯƒ™|æKs8NAàã§cùW) jq&¹y¤Ýù‚S)H  Ôä¸8éë]¥µ²ZÂ"Œ'ާ5è–¶ÑYÀ "’B€2IþµÚAvñ¢P¨ ÀÉÍNKRRJ(¢Š(¢Š)h¢“4´Rÿ:J(¢Š3íGZ1G¥.y¢Ž™ QG>´g­sÖ“ë_ÿÙÿØÿÀ>ÿÚ ?õêõÊõÊ(¢“”QJ(¢Š(¤¢Š\QEdÑE&9¢Š=¨¢Žh¢ŒÑE-QE”QGµRuÍQE´QEPRdô¢Š QÖŠ(þtQHsÆ)r1øÑÍ.ih¤ïECXU«)ë=¹ëúW9ãHÔi‘Ýq¾ &{r ?ü³Y#E)>xœÏnäþ•“¦É-•íó8g†á#xÐø €=ÆÏÖ¹ß ^ɦM©ß,7 ° ù˜»)ÔƒäkC¸{)¯ò^HgÉ IfSÐz‘³õªš_—¾úrF³´@qaùž••¢[Û¯‰Îž£l¶Ö{ŠÃ—#Бþx¬ý*;í÷±Q‰m­B‰¸MÁü‰®ê^T~dj6çz²Œ6~´Ïèϧė–›ZûÈåŒ`îÉÏ^¼qÖ™¯éiÝ[í1Þ# ÁÈõ?ŸÛy̯ ºáF8ÛÐþœñô¦è7-¨Ïocæ ©ÙN<¼Ç§]…˜œñìƒØ Ó¸šþá¡kƒå¥ª‰dPêÈd È$ÔœqÖµo®õ ’I¸Åbžib˜ÖG)ùFHÉ8à`ÖÜ÷“˜ärÁ-Ì#z² ½889 u'kœÕ¼Ëë›lX…6“ÃOnbÊuüÀ1ù‰à=kžÔ’Kµ´o±kY yž ä€C€ÌöÂúÖø’í툳Ö²4Yž& Ä€C€#qäöâ¦g‡PA }Î¥äy`}ãÏz Ymõš ©eð÷FpÓ$VJ+K#1è£,GnßÌŠÁ^iÝ߀£.@éØ~¤WOà»uþÔ¸½?/’†4™ÜFnÓÒºÏD"Ôå¾ÊÆcŒÆ—0T‰˜ã?P éßžÕÖø*KùoI Q<´™Û ŒÇçÔ ôûKt«O=§2ã%›®àOÔW¯XéÚ‹_5ÛJ‘BLŒC€2xî+Óm¬!ÒíZé§.±ÆK7PÀ Ÿ­y7Úg×5[ÉÓ"ÒÎ2±‚~è?u«79öϦ+ÆRæMgP¼½ÈŽÎɉXô¨¾¤óødö¯+ŠîM_Q½»m­šˆÓ?uG©<þ«žu¦‹qfc2ºÌn$“ûø €Kþ~Õ%µÄ«á¹ôä„™>Ðne“þz(¸%ÿ:–ÒYS@šÉb- §‘ÿ¾>P zã-ùÔ—š‘LŠý-᥸@ p›™Ã6=~àçÖ‰uº\wBÚh )ò®æ“sã¹ûƒ'Ö>¢#Ó#»ñ9ŠŒ)^,á›ÏÝúÖE”«w©[[ˆ Ị̀˖ÉüMfi‰öÝNÚnón‘AXŒò1øÖ^šEÞ§oòïp6(äŒò?Zô˜­&Ó4ã§è–žT÷R§œ$ÍûÎ"V†Ue•Ëà¨Çä“Q\,’~äF n¬‹`¯`w®WÚlšF«¦]¨˜Çw"â^x+ÁÿЫ“ðm´Wš©¤Ý(ymîÞ6.NIñü«ðÕ¼wzEþpÉË£ãiÇçùVƒõÛ[}dè2Hc¾‚àÛ,l‡tŠÃЀõöõ¬ÿ ^G%ÄšM½Ùµ¾·¹I ¦àêgiþéðG{Öw†õ$º}&+"öÞ)âuÎðä{ˆ÷«ĺŽvÚ^—©<7"Ekt\mÇ¡R^zð¬«Ësš¨Ò,µÅ%Y!ˆ@ç‘ÏéTîæÕ´ @i–w¤°•^(Æ0á#úý1WüEku¦é˨Þ™Š"ÜIoà -ÆéëÛ–ÇŠ¼9z—ÚèuiWhâûÊÛÆÇà`;Vˆôk”š X°.6¬¯Þ¼ln8ãò®«HÔSÓ£ºF £ |Øã>Ù®ãM½Kû4™7ð’2GŒñÎk¬²ºK»e•pèN1’*ðæ­UŠ\sEQEQGJZ(¤¢ŠZ(¤¢ŽÔ (¥ÍÔRRñéE/ozJ(ÒÑÚ’’ŽœQEö¢Š:QEÖŠ(¢Š(¢ŽôQAéEw¢ŠJ( sE´QEQEQEŠ(ÍP(¢QE)¢Š1EƒéE( õ¢Š9¢Š(¢’Š+?ZôU„mÝ!à7Cþr+—ñíïÙôˆmÓo›q.0È#æ+ÅW>M„P®ÝóH†ó‘\æ™m%µÕð:ƒ\O4‰²#÷*rß.3í\Fo=¼W˜½2ÝNñALÀAÎÔö®_I·žÙ.A½3\ÌÑÆ‘±É8> aOäkF8bþÐg„`*[x(íë÷çVl¡‚oHÖDý–Ö‘ä+÷Â/8òXñî=ªÅ¬PË®HÖ¹ò Œ3>ß¾sß$ŸÌTðÈÕBwmìzŒÿ‘V4¹Eï†Ö9ŠËº£}å>œŽ;gx>(»ÐÕ%Ä©¼Ç†ê§¨ý>•^Ò ŽafèFq»ŽÝN0?*¡¢Ùµ…ôæÉ‰Ìl…‚ùAÇ u8ÅTÒ¬þÅs1´$‚Œ™Æý¹Ç8sg À‚F` ´Þt{€lã¯Û?ΠM 2»¨hdóbV@û±íèFEž"‘˜ ù‘PÄþLÿ:§ÕÍýÌ÷iØ$S1ŒyŠà’$ÈõôôÇ¡©•¯`šwÔlã–Êâ2‘5dˆ“#±Î1ÀÀ†žŸnŠæw¾·ì¦Œ¬@cÌWäúôôÞ¨®·©Xjwê Ö¯wH.Ôa´`÷ù5ZýíµõÔ~\fßíÃlê¡J¡@¿ÌÃ5zÝåµå£qÜ’3Çõ÷¬ÿ·¢ÅspF"W*™êqÖ³ÚíDsÉŒF êqT â§—¤jÄ/¾+W-s6ÖÛó¶yäôŠOší#àž§ëX2bgid ž§ëZÞÒ×XÕÎMÞLq›™Èþ%_º¹÷'ô­¯hC\Ôå¶›p·‚ºŸoVT/âHü«Kº0Õ¯žÚpÞD1µÌØþ ½>äþ”“(T–/0¤~nV%:©àý*³–[v„HÊžnDC…öüzÒ¾VÝ¢C.Dc€=?­uŸÛWºµŠh††(£S<›°îoösŽsÓÐ’vÖÚö¥¯i1ønXÚ h~Ñ(l<Š9ÚOðŽ2z‘èNupj÷ÚΞº$‘´0ģϓvÔs·ÛßÓÐô¬«äQGqpñÛ[ï&P`²ã žÏ?ZÅÔìÕíÛÅihîM½²pÌ ap¹È\c“ÏÖ²u Cj¢êéãµ¶g& tà°åì1ÜóQ¼:´úTÚÔEM´ ­÷rzß‚W¿o­[‚×Qÿ„zMz(ÚÛ¡V/Г€f+V£†ÿûõˆ¢_³Â„Ýzô8¬É¥S¥Ê¥@–å@Ú8CÍôÈ‘ô®~I£þͺùq%Øo`¡ƒÿ}übO,gM¸ÊbK•/` ‚OæäkÒ>·Ú¼nÒÆ¾xË(ÚX€r9öϵ{÷^´y!UsæFdEÚÌ¡ˆŽjô‡Ä\ø6ÖGUÎô.«´° Fr9íPxïY‹Ãž–ÞÏ‹íG0ÂaºaŸ?ìŽþ¸¦øÿ\·ðŸ…å†Ìl½ÔŠ ’¸i3ì1øâ£ñε‡|=$Ÿ-íðh¡°Ý0ÏŸaú⼟NÓÛG¯ÊÒ/ã#'¨íÚ¼cCÓ¡º¹‚+ÂËH<Ü ’3Ïq^a£iqÍäÃs‘È ¼d‘ž{׫x4ÝLþÇRŠêåçy¦Hð~€W´xtM ´7—-+ÊÆ<‘ÉÀìp¹¯RðTv‡¦F;©Ì¯#$ŽO>¸ñ®Æ»:êh¢Šäî šoˆ¡’Å#Ýö§*I)Œ€[éôÅq¢ÊóGñ1¹œÅ!ýû79ŒtôŸÈW7öYôísí(ÿ똌åAŸlšâm|?+x²ïÄe#žx/d[jÌó) Û!¸ús\^¥¨Ï£üD›S0$»dóHÌF~‡ô®6ògÓ|u.¦Ð$¥Âp<ÄaÁ·_Ò·Ž6³¢F+§š}9ÝYæÆùcáŒlG;×ÏCŸ~:=cE_øj=^ÊëΚÙY•ÜaäL±ˆþ5Æ=ÿ: KL Уԭ.L²[!Üaq¤Žw/J»¦ø¼I XÞBÆ „ýÕÚÀ¡þðõ¯^œúÕüCCbš^®¯Ùå­êüêW ,>ù¨ô_)µ];SFC·jÝJž……uöv°Y[¤¨« ^‚½ έmã†ß˜1òÏùõ®ÒÚíáH¡ºåÇ5c#v3ÍY©»â—9¢ŠZ(¢Š(¢Š(¢Š(¢Š(Ï8ÇãG|bާ¥´QG^Ô½(£ ¢Š¢¿ÿÙÿØÿÀ>ÿÚ ?õêõÊõÊ;ÑEQEPQEQEQERc½RÑE%RÑEQGz(¢Š)1Ç4QGJ(£ÞŠ(¢ŠZ(¢Š(íE袎´QERw¢Š(¢±5ØÈ¹I91ãÛ®kξ#Z¹Õí¦‹yf‡œŽž=:Wã+wmF c –‹¸à“ßéX÷Ég¥êwÉ–÷ «4ËÉÂíPÇ=†ñX·Ëmo«ßJˆtb9f„gn6¨sžÃx÷æ³®’ÚßS½™P!‘DrËlmPÇ=†áÍj]‘ou,váV%@®àeº}Ð}8É÷5kÄú€Óµ+½3IHá¶TXg™TÆÜy`ö^ç¹$æ¥×¯~Éqc§ªEªÅ4 eº}À{çÜšV‰š¦K!¾BúŠSbº^… œ’¹72 ›ÉÃcå#qqÖž-NÒb¶greH|¼ŽÄsÓÔT I62Âe#¸PÇ Æ{ô㹡åYüd±C"Àn•] Ud#¦3Æì`àõ44¡üN"Ä^z†RF9íŒñŸnõ_O»šâÂE¼„Aq4Ò£ÀÜ툟\ þ<³ .h/ ^\Ï*K ®V0¬F õÀíž•-¾¢ÇOx®á\Ï,«$L2 dúà~•KW¿s}§ÛÛ7ïVäy‘…$lÚK1㑃ù‘XšµûÉi r 1K’€»0X“Ç#ÌV^§|í{k:ƒŸ2$ÁbOŒ1W®¢[Ç[wX«*íÏ#œ‘Ó¨>ÇÒ´Û_\AlÌÛµ:ÉcŒdŸcž•yŒrÄ}åJ¨^„s“Û¨?_JÌgº7v†éŠª áóm„üŽ9´àôÜ*´²Þu¼ °×dàÌËuµÛ³uq>ë[(‘®d‘W$‚H ƒÔòÒ¨èZuÆ­<·Ó¶´U3³¨É9' £Ôò¥X¾k­9ÿ³­mwâe¤'ÉÕ·à—¯@z¿¨‹*á,¡²Ýom(O›¤Óc-¸÷¸÷ z¹ö:e´·µÝ 2…ºK/V,{€Ü}WM¹Ò!Õ¤ŸUûRþf;çiHÏ¢‚@àÿõª cG‹Tž}b«j7ï™ØŒãøA qÓùU[OIƒS–]N1©ßLÄ4ÎÀ*tPHTÚèÇM°‚H-’]Ò7,[9)û©ßŽãµ3^ñ gë£éI ¨›|äË’ïÉ/ð§9úãÒw[OìA¦ØBÐÛ,»¥ýæY›¨ù…{×7-Ã-´‘Œ™%EU,rHoÝG•ÌHΖìNz¡T“œÇÎÎî–Îy̪I9$ñé^£ðêæqá«[K›#‡hKȹ• ±È\ç¡kÛ¾\¼^°²¹a}$;¤]Ò¡v9 p2:׬|=šXü-ekq”Û£Üã2)rr^ã­p)Õˆ§ý¿â‹«Ô}ö¶ÃÉ€öÚ:ŸÅ³øb«Æ¾lë 8¯ùÅgF»£ÿYÃ'¡¨¢Mñýþdàt>õ¹à-6Üë«nÓàˆüÔV8fÚÃ8õíÇ?‡Zì>iöo­½jÖž7Çqe“óŠí~™ñü'9õÀh,çÑ'q ðÌeòÜa™p8úsøU¿N‚Úm*Vò¦ŠC!†‡÷?QX7z0¶ÔÞßìÓKwñÇoÊüü€qÓãËx—B¿‹Ä—ÑYéÒ\Û™r¿f‚îù°@èzñ\滣ÞÇ®]Gmd÷æC´AȹÁ§Òµãñ¶“¤éJ·Iq Û*À­"æÈ£ «ÎxïÅw:WŠôý?Ñ‹ˆ.áKÒÛ3 IU@dõŽp+¬±ñ-•Ž‹ž+ˆVÙæ€ ’(”sØñÚ£ÕEÖ¥o‰ôinaš Û5$†úŸÿ];V–ãRÓ`ñ&…4»áBL8Á•äꃃŒý=Z–ÙuF‡U{·þÍe[qn3½fÉlz8ê1éÅ©!Œ‘j tß`uˆw,¹'íÁÇåéS^[ÛêÖrÛH ŽQ‚Á†åô#ЃʖêÖÛR2o_–ëiÞ$]Ê£¦=8ïÛ¥>æÚ ðû׋ŒáÆàB=0qßµA`.–ο;¥ìX1ϺàÔûnSG„ê“ ÓdµÁ鿯sþï5*‰ÓL‹ûBPN³vß»ÏÓš|¶ÓCµ HÙËþñ˜pà }?<û›3f‚4‘Õñ! •ôü²}:š§=®Ì˜‘deb ‘Œôü²9¨‘cxîb¶º’9£Sq’cÊÀìpß_§+i, Ïm;Ã8FQ"ä” ö8qϯÓ·’&So3G(R¡Ç%2€ð;0çü)$‹í¶÷¾r2¦ô•€ÁÚÊ0¾õN¹«®¿k¾K¹§G@dh× ƒ =êg>„ým:‹ÔºyQ”W*1ÁQ€=Ã*þµÍxŠÈ\KpÃ$W ĉ8Œ‘óØqëÙGS\æ¥eçH ’…|oÈÈ yôï×°ëŸÕ,üö!ŠH®þòÌåÈ ~ƒ×°é‚áMÅÓFK»M¹Ìc\ôÿ(ãè*´“‡–æEË»K¹Š *±è=þQÇÐS ÊÒÜ43™w9A€ô÷ÈýT•%¹‘ÖP±Lmã’^¨Ê$¸v‡oÝõ?þ¡U%Y'w‘·}Oÿªªj3(¶•3µB…Ú~ª^H<™@½SÔ iFpã×Ò³ìl§ÔXXÛ¯•¸¢ÜLßr,2Iúÿ/ʶ•§K©KöxÇ—:,÷ ÷ BÀe¿åYzU„Ú”¦—ËFtYço» “øÿ*ï-糺е{k2§KÓaÄIÆfp›PŸ«.}Ïã^‘g%¦©¤k¶öN?°ô¸G“€âQÈØûMÞäzô+i-oô}^ R?²tøñ ƒ3„Ú„ûesîMoØøsûÅc–ð5¤ ¸¢Ç†lr9éŸoË5ÒYx?ûÄ­L˧Ú4±í.G 1Ï8=>¾õ¿iáßì‹Açßo³·ü°˜-ŽFNyÁ®.{{B;R+TD’VT6ùXð{Ç®;g‘šóÙmnõO?[ŠÚ4ŠYJD¤6ùd'×qëƒÓ<Œ×=½Î¢³jÐÛ¢Ç$…QNwJ瀫ë“׳]žÓíü+$Ojójžd³¡Ìúü£¡¦Þ3Ïs]¬ÿ t»o´2ٽƢSÌšâ3™Cã'hè@?ÃÆG½t²øNƒÂí –Í5ñ_2[ˆÎdßÔíŒwç·¶×6¬ö3(g sÇê3Ïl{t5äw¶“YÎö’áE|Ï^yíŠókËiídk9v³»'##8Ï<öÅCwdl6 ®ØÂÿ œÄŸÊ£¸xÚ­’«µïÏoÌÓ.áóF¹ þ.zÌþUê‡O:lÚ:,ŒŠmÞçBWŽžçôë^Øš_ö-ï‡âŽBŠöÒ[´Œ«$tãï7é^¸,6“nPçRA?Ìþ•ÆÇðïÄ“C§ˆ­ç…†ã:¶ûYç?@Êÿ…Yâ+k¨¬`ž'Úá[¡ÿk<þ@×#ÃíjÖX¬BÁ4L7”áûçœý®ÃKð•­ºý¶âIæêÞXŸ@:ãñ®×Høa¦YÛ ¾¸–æ~®PìCì\~5Öé¾±´EÔÒO/W+ò©ö®?·oáµ±ñ}¾£g 0ÙÇ`ð•Qƒ¼º‘úùV§†WNñ”Z”Ãbº{@Q“z‘úVàÐ~Çâ¨ïíbŠ+E²hv¨Á]OòÐ×I[”QE(¢¡º²·½ˆÇqqØž«îj£ªèÖÕ«[_À²©âCêcUoôÛMNÜÁwu=u> ö5Îj:TÑ–ickŒîP:@GùÅy‡‰<©éS›«If¹XÎREϘ€t$Ž2+„×|1c'Úm¥’,ågzÐçÖªMªÌ¶w ®ËÆŠP¦ãå<õlŸ^Æ´ì¼fn¬åI#HoeŽHÙaòŒ6îÍ^¶ñ9¸³•V+ÇI¬@ ü¼ É5ϯ‚µ‡ðý¼·"ÚHc@ëaš]§ ¸ôÎsê3êjkßM‰o3ÇÖÖp†\}âOA»9&‰ü3”r)@¯ÿÙÿØÿÀ>ÿÚ ?õêõÊõÊ:ÑEQEQEQEQG4QA¢ŠNœŠ1EºÑE(¢Š(¢­QEQE'ñQE袎ôQEQõ¢Š(¢Š(¢Š(íEv¢Š(¢’Š+Ph®¼× ü¥ˆ §m*eæÝ²pUÇü¯å[b#ªhía0|rº+v9\~jHî6ÛÉ­ÎA%}sƒÇâ?ZÇ´w6×ö7r–‘™d2 Á/¸©Çýô?_Nh[3´–—/—,®]xËdƒÌ‘ÌÎ(¯%½F$̨„gû¹‡¿8?J®ÐÛG)œ1 Á#LAù¾§¡÷“oÍ8$3…EÇ`¹¾§¡úTаHLÊ0 Ø€‘׃ž+_O>Fž÷Ènc *Î ÝÃnÀéÓô­CåZ5Ò†˜Ç³s÷·qÓÿ­\†°Ø¾¸Cd×÷BɹY³`»{e¤QÀí\¾¤YLñ½»^Ìð‰w£±1 g`l³Ó°®oP;f™Ù¯'0¬¥ÕŽc@]”Ù.¶*«ù1HËnàHÒvSœ°LéœúÖ}ÃG˜Àrä±Sž@ ýªòùQJšBXƒœÿ@)$pˆIè3úT.B+ÃúTnB)ôþ•Ï›5Y¤U by5‹4ûã*xç$õÏÞÝn„¡à’N=k°º·MÁv:}¼/6£­ÉÓ¬k–eûÁ}±ÀüëÐ5 8¼;ðÿOÑmaiu=yãžurÌŸx/¶Ñÿ}WiwgƒàË "Ö’ÿXxåœ"åŠýà=±ÀüéÚ5•üñkܶ·‰"”C³üÛˆãh ä}=éþ±¾¸‡]†à%­½¸†o" y>o- dßõ6‡i{:jÐΩmo•0†" gçb8Úη½vWú¶•ªµî‚·‘¥Éˆƒæ|ª è=O~+»Õ5Í^‹SðÜz„Iwå>oÊ¡»OSŸJë/õ]/XKý ;Ä[‘Rå@ ê~•^ÆÆ$‚Ê}Bá#‹I„¡‹ }üà`ñœsÎ?ZE•«Ãau©Ü%¼z ! JÀøõ›°9ã8çœ~5ôûH+9¯fHSJˆ)ŒbÜßÏ\}+^Ã[Ó5YLV‰páw™àgÐé~%Ñõ¹Ú 2ù.dTÞÊ€ð¹ÆzVņ·¦ê’4v7i;*î!3À®'^¶²ñ~¿ýž°Íc¨[ÆeqP&çkÃôü+ñŽ™ã_I¦Ãk5†©FX÷íc»kˆ ƒÍqšîŸ§x«]6‘E-ž¡fE ´ ¹Ã±ÁÎy«Ká4Ò4cö¤¶’öy–5˜)>P'¶ztÇñ©Á ¡xm…âZ=ýÌéN·’ ÏïÆ8<~M'E?iŽÝï&•Qfw”3ž3ôíU¯/nnïZÕn¦òã‚'BpvJ38éŽ=ÏZ§©j÷W·†Ö+ÙÚ(­á–2À*p9 ÇLqîzóQ^ê7WoÌ…#†)>IGP8錭uþÕ›YÑ⺕U&¤ª½¸¯@ðžº|E Å}",säÇ2/@ã®?Jët TëLWn%ådQÐ0ëZ•µZTQEQGj(¢Š+3Vñ–’¥e%ä [h裎§·QXZÿ‹tý2HLÓ…-å¡áÞ=ºýk/Vñž’ ÈKÊvÅì=Ïjáï>#Þ´» µV˜‚Ò(Ú£wÏëé\ß®d%ZÞœå]FÕ‡_ë\|¿dfÛöxÜ9 8QÛ½tZWÙ£§¸¯6ÒØÜÇxäÇ1bœ©ÁþB¸­27¹†éçÊ™$;à îBAôÏòÖøgP¸Ó¼Q»"òdYä# ¼à¯òwö÷®¿ÀW¶ž0H݇•,ö‚xRÜmëÔîþµÕøJâîÛÄé€c’óÛ¢îÈÛ×¾ïækÑ5¿Zè¶^\¬†8Óph×w§øÿ?¥zv³­ÚèÖurX RTªç$vÏ@~µÞjºµ¶“f÷7%‚($\Òøo\ƒÄRÞÛÊ&BÌ‹ ltniÚ>­±h. %ã$…“iPÜã¿~)Ú^¥«h.mÛÌŒ’… 78ïZÕ¡Wh¥¢Š3KÞŠJ8¢—­QÚE(£¥ÚJ(¢Š(£Q@¢Š(¢ŒsEQE¢Š8¢ŠN”QKEQEQGŠ(4QHqŠ(£ð¢Š1E½QÚŠ(¢Š(¢“4QA¢Š:ö¢Š Sdo.&r Ú¤ñíQ\Ì-íe˜©q3íNqÍ2i<˜$—imŠ[©À®oQº…-á„ä5ÝÆÔ7 $qØÄžÕåú•ÄéÿdŽV½½yC¿ œß~Ojá¯æ…¬ÖÙPutÌ üÜ'¨ô²jôí§F†ÞÑçk‰AhâL±b ÜOaÁ>¸ªw35Œˆ-­ša3«K&dÜTžHÈr{c§J‚âf²’1 (‘Á’4_Ÿq–#€'×¥^Û´«·plçž2?ÏãLÔ™bS"&Ö¹ˆ§'8ù³œý1ùÓu¨¥Ñ½Ä{9ç6–?:PWÏŠ"ÝÙ¶Ã ¤çè*żf(-mÃå ß!pÎÛ€?€Bsô•,ùQÛÀ+g8y›?È.sî+'MJecQ%;¢`H9Á$¼ç¯×­ei²O£+­•ºË™¶H$àä_nõbÓé*ÂÎ$>f$„äåx;‡¿ÿ^µ Ñ%鼋-Òã×'ðÖ.©nš™Ô­C<[@=2Ü2+£Эñ¼„—iqíœ ŸÀS®¥XbiR0òb=G°àŠÎծŭÛÍhžeË+gå £¡¦ ?ɪšÇ‘pò[&ùʶp¡N~u‹—š¬Pj2Ç5”NÀD_qtÎ+ŽÁÆyÏ×"d¼¶·Ô.–XnvÊy›‹FÛŽ;ã'\¹8àžÕÕÙxSÃ’xNæþñZY¥Îæ?ßóHã/žÇÒº oh²x~k«•2K*~úYX¡óA䌎2Ù¬ÔÓ-›KÁÓ±còË0¢ÆìíôϬXt]>]e·K™d`ÎþuÆØbŒ6”3t+94»I4Àð¬ò³d°–m±¢€ÇŒŸÂ¨kqYhvWQXÜÈ“VWÄÀ1g8\–É'®:â«jöZ~£Ýǧ\ÉçyI4“X,û!ì ïÉ'“ޏªºµ–‡¦ÝGe;¬¾ZHòyDnÜûT)ì3»’j \¦¥âË[—ËÜAhÐÈîÇsÌ÷ùO~ß…\ð=êjž2µº—/q£Bîíó1°}þSß·áV¼)s¡âˆn[-Òê><àú+ µó5^i÷¡îc-m<²ŒðpFxî¬9ç­z'‡µøIüÂêOÞö÷€rz©v:=Øñ„Þ;‰7HCA9až.êGç\&‘¥6‡®Ü[_Fŧ8æ ø$¶=F6ZòëOÝYk÷–æÕ€wòÒLvÎqŽàŒ`÷õ®ÃCžË]»ŠKfÄŒ%Ç^IǸ#=ënÏÂZDÖ÷·–×sÏæíɇr0£cœý nØèze®™w{qguqr¥§€hÀ`6ÛFsô­‹]O·±¸½žÚêâáY§€d°cŒsŸ¡®š õ)a¹»ca6¶êBƒÂîôäk«Ñô»­E†[«ÜØNI6Mó”QÑw‚}AÕÐéú|ÚΕ¹¹ÿC›“j~rŠ »Äk¢²³ƒOµK[h–(£û¨ +«µµŠÎÙ-à]± ÀÐÛÁ´ J` Ÿ¾*j’Š(¢—µù¢­QØQE.h¢Rñ_ÿÙÿØÿÀ>ÿÚ ?õìó^¹^¹EQEQEQEPy¢Š1ÏJ(¢Š)=;ÑE(¢€;ÑE-Qš(£ÖŠ(¢ŠOÆŠ(ôQFMQß­Rô¢ŠJ(£¡¢Š\{ÑE%RQE-Ts:Ç ³Œ€9¾Õ^þâ+K §œPåOñ{~=*¹’ Y%nUS•þ÷µs÷cç€0#äf—ñÆÔ€þUç:”[M” v1…¥ºÛÀ€ÛôàøŠä/#;íbo”˜šIñÀä ±Nä[Ì0w<±³1?Þ8Æ? §=¼óG r³Ou“Hì2L§ôô&«K 0LÇ#®"y]Ød™€?¥Ckz·¶1Ü[†’'ÜÁ8>â±®%kÃm$q´–Ì&1ŽÃ~•—q3]µ´±ÆÒ[2®JqÆpOéVoáKS.¡,ðDÑF‹’vpxÉÚ+ Õm~̳ÜÇ ´èÏl‘Ž«Q‚rB®=Mlêy -ÂÄÍ2…PrB1Üü£Ìj:œ·QXÚÚ[Éozë/˜r^Ý9Þ1ÇCŽ9 Ö5þ ÆÂÎÖÖÕ­ï.\Ø’ðÆ3Ãr8㓚ɾÔÚYÚÚÀð]\˜ÊrZÎî8éÇ©ÍuŒžlˆ Ží¹ õ‚OÔ“ùV–‡y*¼wSD²ÜÞÜJïÜ,¬xõ$àôOZÐÑne'š1$÷SHíÜ ‡†éêsLSZµžEUfÂŒç`ãçÚ¢h’ÃUºh†Ó,Œ‘®wyk•ûŸð¦ˆ’ÏQ¸dL®Êƒ9¹P>§ü*ˆûTþ$‚È©>Nâè¼™Îßa×ßÚŸc—Þ'µÓæ.-D9-€|ÁÎ=‡Ÿj[Xå¹ñ 6NZs¹ÉsaŒ~uJòInulZÕ¤¶˜:<°’ 6Â˃Û:çùUy7ÞjÑÙIfd¶‘^3, FרYpÝH¾ž•ÆK­J;7µg·ut2ÄÄmm…—¶H§YC‰ìZ÷Pó-ż²K+áåÇV÷;Uyïz¡¥ÙÚY¶£¨y–±ÛË4Ò¾®gžzœç©Þ³ôë8cñ«^ßy–éo$’ÈØV¸py>ç9ïQ^Æ'I#ØËçd•À <ôô¬ÛÔù‹´¯šI#Éà~^ê10tÚWÍÉ##=¿ ¡saæ AÎ}¨ÏkݵF?—¨ÏlƒvÕ ËN±ˆ6‹|«ür*–þê(Î?+ùSôÄ@¿2Ï2îoî¢óÅŠþTÝ*0tKí£;ç÷QGOűùV–ƒaw©ÙϪ۶n¥•4û~À®ÜÉÿŽ÷ç¡®‡ÃEæ­§M¬[È~Ù5Âiöã dÙûÁÓ“¿û&¶ô JÆ]VÿJšd²‡°)³÷ŸO—¿û5«£ë~œ4Ûj³‡y®"YN$†5’@‡=2ÄVÖ•®iš:é6_a[´i§¹„LvÉk,‹ç‚B‡ãÿ­Zšn«a¦:ÇìËr “OáâduCèHPÕÙ·Øõ­"e²–6Isó/@ý~aëœdk¾–;x~â=>hLw èõù€ïœdk°u´Ö4™’ÎXŠLÌuçß={×/"²éΆ'Ó­<Ûß™HÈ ‚z·#¡Ç8®öÕnšÓL*о“§ùš ¥rOÞn™íÍr× †·° Æú}¦ûÎF2 ÷==«ZÔmíî.žòþákQV¢(œ«2ùy †ù¿àb²u+ø­^å¯u+¨ÖâÉc‚Óɉʳ/—’o›þ++S¾‚ÚK†¼¿¸EšÙR+a“Î*Ì»9£ ÿÀ…oxcÃQ¾Ÿy,YEj€ 1bâV#æ.AàOËÎ8èEuð}Ô2é·’C „hÂÌÌWæ20<IùyÅoøwÓÆö7OvÛ (¦1çÊÄ|ÅÈ<sòóŠÚñ/‡Ä lc»²Ú¹’)6oÃqŽ2=+sž%§—yöIlݤŽM›þn1ÆG¥jøÃç][b—?g–Õ‹Æû7a¸ÇäÔVBc¦3UX¢½uc ÌíîpOäEU²ŠwÐ%Ñuˆ£†ùÑþÌ›Áó@ù¾SßþDTV«+im¦êKwn¬bMÀïÇkã'ëÓ­s×Ó¨g³¶iE¸~s¼â5Îêw*ìmŒ¿g€«ƒ¼â'ëZ ƒLÛl!WhÿÖƒÔ6F}ŽjI@²>JƬSnz†ã#ð9«° FŒSn{7ö9¨dŸEöt• 0X%Ãò2~xãñ©-»½†Þ$uyNÕ@ =p;òp?u»ý¢ò£GC#`(Ë=p;óÇç^™ðêêñ¼3•ma5Ôðù¥îs8öãܚحÊÔ¢Š(¥¢Š1FsE'J^†ŠQŽ´”Rýih¤Å)?JJZ(¢Š(¢Š(¢Š(¢Š(¢ŠB@“ŒR3*!f8P2I¤bK€:š•ùS‘MŽXæ]ѸuÎ2 ":H»‘ƒQGz}:—½QÖŠ(Æ(¢ŒQE¨¢“ð¢Š\óE™õ¢Š3ÚŠ)qE„ÑEQGãE”QEQž2O„€ $:“A IÀµRL]’sû˜ùöcXwAu·v-›VÝÈ!elgžy}+2`º‘bNm ;¹+œgñÌÜE-æ¥i$›Š K0Ï 0vŸÏúWž>©¬¤—LI2ù‡' §éŸé\‚‰¯õ5kŒ“æo<ô8ü3ý*ëÆ³[Å:ç.¸$Œ Žÿþª¿ul—ZUž¡Î÷ຜä ¤¸?Óµ[šºÓíoaÃ4Ñýå8(ØÃ;àÖ…¯·›·X&[G¹r…ßå;~U”dœ~“á­Vîn]ã’;9n y>X÷Ðz “lVf¨Â’NY$KY. ¦÷â=Ätƒ$×Ipó}­ƒ²íˆnp9'®éšè‰»—[»{À¿èh ä¶ Ú3ëòçñô­Â×j—/s·ýCçà}x¬»Wßo$þAófUó¥“ÀêNI¬+ÍVDÒnŠÛ1º¹Ú·7಩äF=ú“øV=Þ¢ë§NËûDûVyŸ€<„ü'ëZvè±Ú™wnwRÌ~UëüóúÕ­:Ýtí\4…î.bdUÉTY'“Ó“»õ«V6ëa¦y®Å¦š"€n?»$óõ9ýk?Q/þÏq ŽØSˆS9ȾŸŸz‚yžQ-Îû™¤8‰v€¶ñç ®1óu<ôëÞ¡šI%I&±>\¯Äc,1ç9ïßõïP‡û4 „'I?19÷ÿ"“ìVêí!RøUÉÃç>ùþtèßì°« î®OÌ@ŸÇ5Íë×öÁà±¼œ}šæPX†$E$l8À9Àcj÷°*[Ù]N~Ïu&ç9$C"8ÏÊN@QùÖ6­yýžÎêcä\È›vDr#tÀ9ÀC“VVo;3^ÄÒ0aÓkr?« 6të7šF7ªò0ÀãaîϹ8ü Dšd1ÙÙ¼ÎÍy9°Vä}IÇáM7;ïŪ)ÄjØžÿç½@Óï¼[uVùfb{ÔfàÉv-ÕOÈ¡™‰êk:þô³ÌþX œ±<Q½ºÏšØväó}Z¡}wÄÀ ]‡h ýïóÍ:ìáÒ È—S’3Ç@ü¿ëRÙÁu"[èp$Ô¤ˆû|ܯåŸçE¤-oo£Bq& ñ± pràó®óÀ¶ð]ièÉ“¢<óìÄîsï´ Së^£ðÞÎ ­5YA6ö(öñxwf%ßë´ Ùõ¯CðM¼3éѲdÃj­ d¼ÌrÍõÆÑùúÖVŸ Mw¯jp­ö9(ÝÛÕä‘¶gÔîSï¸ÖM¯†&Ôõ½R9‚–±•â‰Ý±½^I[fqÔïSï¸Öe®%ö¯~&U&ÑÚ8ÝŽ7«I#lϯ̧þ]¥ªÅkos¥X‚­oIyp‘°¦2ÄìsÀÿ èµmZ->ÆãAÒY-¡i/®3²Ú£¸æ»™$H£ieuD@Y™ŽÔšôYeŽžY]R4™˜à(É®ÎI(ÚI" Ë3=kœƒÇZmÔÂ(á Ä@{c9è3ô®M~#iS?— S‡hD±™T(bO®zsô®~?éó¿—sh„ˆd] ç·¯NkÇW¯§êN¤]Cv%¶á¶ócëòŒw®gÇ7󮛦j÷[’ê+ÅšÕ ÁòÔeñÓ©Ú=ë ÆW’¥ŽŸ©L1s ÚË' 6>¿(ÅlE¦®­ªÆ9-V Eï+0˜ª¿î¯~:]"-_Yu"-"†U¸uäN.åUôÚ½ýýøÛMMGSdaZ¤R,är%ò~ƒ¿¿åA´Ôlãû ¨!³³’D„³i£ÜJ}©Ô‘ØuÓð妭f‚ÆáVRI;˜;Λ—ôUR©#°ÜÑ-õ T“/•kjî‘!šTÜv}R®Gçµ]lTwÖö‰ndØŸÞ=SÔµ[=&=ìž\dãv*½åõ½„B[—؇Œ×ŸøŸVšúÏVºä6€Ä°––ÁØ)úוøÇ[—V²ÕîâyVÈK ÛyŠ~c‚)ì¾µçþ'Õ¥¾²Õ.bw¡ãoæ8!€=‡ ~µ¢ÚÉzú”ŒÍµ½“0ÀÆþ:íŸÏÓÛúxÔÆ³pò4öv.à(ÆóŽOLŸÇÓÛC¶7˪LÌÐÛÛY³Þôíü똶CyøL8TcÇBNsíÅr‘e3.vá€Sôÿ"¹XC&ù‹ÚÀ)ú‘P\ê"âWDÔàþ•Ïæd Tmuç3(êJ©ç]Áv“@¯±Ê¯vÜTSÅ> ›‹[»yíФðH¯ŒòÁ²éI÷V÷Ín…&†UxØw`r;ž}áÍDjºW•p˜º· ÒÇï +6?ëê }#¡jkºCÛÝF Äa¼M¸RŠÍl·_Q^÷£Þ¦­§4S óáÛÒcHUY±í–ëW.ôÔ¹¶+t9G<íõ¤Ôü1m£‹å’6Œ“…‰(O_ÀúRßèÞiâÕ]ã(sî$©= Ímòec+Fr²FÇy=‰àǯ½r’x\y’òyí$¸ƒ$±%}½7p<zûšçßÂzœ’­ÌòÛ¼ñ0d–<‰3Àñ×­o/A‘Ž:W¢©%AaƒŽFzWd 0}=)J† KKLHcFÜ‘ªŸP1éþò¤ È})¨9¤¥¥¢Š(¢Š Å´QÞ’ŠQÖŠ(ÏRö£š+ÿÙÿØÿÀ>ÿÚ ?õÞ+×+×(ïÖŽôw¥QEQEsEQEQIE0(£µRŠ(£½QÅQE†Š(íE´QKE袖Š)(¢Ž(¢ƒEt¢ŠNôQUçV¸c ’©œŽþÕ•¨,ºœçN‰š8ÿ¤J½óü#úÿ‘T®Õïd6ˆY"Çï\wÿf¡Õ.cÓô¹µp«ê{ ‡ÄWPh¾˜Fª¿'—äðE¬ÜG¦èÒí|»#_Rx¸o Ý\_^^Ïs.øCD%1´å”ž›° 2½y_†æ’ïR{»–4k°Wh\’ õÆHú×áùeº¿–êvß(¡+´.Iúõ#ë]îä·¹¶PÊðJÒ6P0¹ýJÙAo5–©¥[‰cžÎîIäþðW=;ç…jEöy­µ >ñÍkrò¸Ý÷€*3øç…V?i}[ÊŽ5û‘†-œ’ç Ç¦ÜþuŸ¨Ã5Þ¬¶ñDÞvLrKmÏO@§5Nþ®µ1qªÁ)\œä–ÛžžOëVüø.d¹hïÆÈ™'aGœ}òqϵ£j±j:¥ôÚŠHmæ@&Hû `s¾Çü Ö–Ÿ}ýíëÞ«˜f]²¢w\m^8ûäãžcE¡ÙéúÄPYÊëe“Gj7—\oRçÝŽì~Õ“«hÚn›«Å³?öj[bÔ†ó€`\û±Î?ýUy¤ØiÚŒ1ÀÍöí‚Û€ÛÔ¨`Xû“œVÕÅÔQ,-q9URG$çh¹ã§ãPÞÞ}®s½„Myrìc8;WùñøÓ.®¼ùTHÂ7»–O}«õöüj .VXäŒàΜ à¹çƒ×ü*ã¼Od°îUH¾ðU-·8õ=zŸOjºÍZÁP‘õŒàzõêk˜Öu»töö° d’L~o$Æq‚=NÜzóXú¦©r×.‘À²Hm^EDÉþYÆ1Øá@õæ±õ=R´IP %û+ʨ¹aC¸õ;@ükê¨lnlf¶O›° ;> å‡!7:)Á»ÖmÂ\Ae5Œ³nP|Ü*€Ò³íÝ–íË"õ»ÖmÌwYOe$›ÀýèUQºVm¥²Ývîd@Þµ~9o¦²€Í4+tcùQaâ4€sŽxõõ« -ÜÖÖí4ÑŸ', `gñëëWÞMm M$BçËû« 'sçMfC)U+æ…ˆ¹ÿ?@ÌÈR¾h1·5e.B‘æó;sXšƒù—ñÄ8 –lúã?áXÚ“ƒ(ŒqŽOׇ«É—1×ëŠÙЭþݪ¤²© c¥,¬sŸ('±éøgÖºo Úý·Uk©Ñ¶iºH•È8 ò‚{ÇÔgÖ·ôަ׫m±ÓF#€ôØž? ×§htZn1G°º‡cøÈ¯bðÆ“ [[E–Ì‚IG«7ŸjôÍO‹LÒ`‚8ö¡¤í‘ÍpÞ.GÑõ¡Å˽¥ô±Ü¶†S™8=rûæ¼÷ÆpÉ kž\÷²=®£qÓÇrùrgŽù F?Ý®3ÅÚN¬±ÍtæÚöhî ¥'ñÚGýóW¬äÖò*rÊ÷,Þde“.7f@…@=‰j¹£6»%Ô7ZUÇš’ÜÊ—le“,f@û*ìKU˪›ˆgÓ¥’M"ÍæFYrÃv\Ç@3Ûq«zž©¨ZO$76ˆ“±,Gl8ÀÈé’;Túö¹¨i÷3[]i61Ç $".\P㌃‘ÓµM©êwvsK ú}¬hÀª¿1¡‡NÕGFŠÝõˆ/#†¤(É^wn!¾½fxn+i5ËKÈà‚7™——Ûˆo¯AúU=gÕ!»HbŽIäŽwgûô¡¨Ü.¹ªN.g_ìÍ4<ŸeCÍÛ ù‹ÿ²`ø'¸­ýNú={Y.nézR¼ÆÑMãF9-þÈa€\g¡¥¨\&±¨Ê'˜?OV—ìÈyº(9-þÈ#ïzçQ¯•a,ˆÖ²,¥™Ñö–Ê¿®[¯®:W%Åúiz|îi"ÊY™_i`PåÈ÷rý½Ž•Îù—‚ÂÊWFµI¹™[åX÷‹uõÅvI‰‚Ewl­;‹xÜT¯á÷‰˜®öÎæ/„†öÅ 0ÞAÈÜP¯~Ÿ{ vâºÈ^*Åsj¦(³’y*Wúæ¶4Ý:/O‚ÊÌF±‡s– tÉ®IÒàÑôë{( 2ÁÄùf 02kcO°‹M±†Ò"̰Ʊ‡nX€02k'^ñ³»M6ÅѮΠ¤‚ÂÆF@äöíX)ñ[XÝǤérÆoXƒ;•,¶ëŒŒ€ Ü{ íY:ïˆ~Ëtšu‹£]™X‚Âê3ŒœžÃ­`?Ьô½V;‹‰¦º“Ë*ÑÇ#31þû(%T’7pk—Ævz.­ÄÓ\_L"+$i+fãçuª€2òFâN bÉâ{]/QI¦–k©{^8ܳýæQ•PEëÉÏ5NßêPOw¬\%¾Ÿ9!ŽßÌœŒq…ê£qÇ=:Öt#Ôõ«+›½vù-´±'ž°Çmæ\c Uã9qÇ=ùªkº†©m5Ö¯s¶œÎX’ó‘žq…ê}j†§©Å:ÈncKcr£Ë¶†5iOMÎÜ—ë“ÐvɬmkWµºÒKT·ó×÷PBŠÎ ôÞíË1ç-Û¶k3UÔ`¸‰Öh:þî”PznsÕºäô³Yjøµ¹µ¶•Fø•g)Úƒ9Ú9ù˜?#XWŸÙìf´µ™OŸ­Ã…!TgvÁÏÌrŸcX×z †Ê{;iW2Æ«;…;WœíòsŽ}s××íqp Á0¶ã*8ÉúñXrLe”&Þ‡«[†žqS·?‡§5%¥¬P¡e$ÆÇ¡ä·§N§Ú¬[[.@@Ä1ÀIô«¶–ˆ‹òUÎê[Ó¥zoƒ¾¥¼‘júºƒ7¿Pž™÷¯^ð/Ã4°xu}d$“;~«Gõ5éžðYÉ©ªkŒnŽ¢?¯©®¿KÑ×M¾ÔîVBßn¸„mžJí´4»íRåd/öûŸ;øFÕüÁü1]^›¥®Ÿu¨N®[í—nðü có´…jUú^ôQGz(¥ïEQEQEPh¢Œ½è¢Žô£­/Z(˜÷¢AEQIZJ(¢Š(¢–Š(¢Š(¢Š(¢Š(¢ŠQÛµR~4QKEQE¢Š9¢ŠCEQEQKEQE&(¢ç8Å!8 I4„ó€)ZSíKGj(¨ç}3ÃcûÕ]JàÚØK"¾ÇÆÔ8Îð8ïP^JaµvVÚÄaN3‚zQb$Û’Ç©cÔšu•¢Ùۈó·Wvêç¹4ëx¼A=Y›«S\¯5#g¬‚@¥.>UdÜ€ã#¿88ö®â°ö“YL&ä„FMÊÌyù#ò®SÆZ™´kYCcœ„V]À=;óü«'Â×,º|‰q",û¼×…T)E9Û•tp=ý«”ѯ$6R$ÏÈe2´H¡JäpJŽcv>¾ÕÏéOö7I»Ì€ ç¡*8QŒà{ûUí6o8ÛjHYc˜ê%OÊ3ëÈýXÒ[ÊÔ¬u¥gÝHÑÌŠÜ• ¢îõÉäýM§á5 -YY„W.É*©ä†>¼óùTž[¿%õѾÈeI&SÕFQ{uùSV|2“É~ë~ÈmôÅœÜ\g¶ß-G¹ùSíRèá®YoJ´õ”Ï8>£bïòçó§´¬nã·œÚÜÝBP\YÈÈüÏçSiˆ-t[³âÒ{›VQ>>d _N¸Ï½Ok‡E¹Ü}–k‹bà|ÉÆ2??d:uÅœ±©•¤¶k8U <—Ë–8õ%úÿ…RÖôû«HtñÌöcPOW%ÙŽ=ËŸò*¦©cqj–»%/lmaÚ ä¶X±Ç¹cS¬–SG£û©n¤y&pEæÛõÇ_N*å¼–èqê O©ê2É™€$E9`¿\ví‘Ú­@ÖɦE|©ß^¼„Ì9òã$®;{ŽÕÌx‡Zd±%•¡gÜ$E*<·$œƒƒIïêEsú®¬¶Âö¶Ÿ2íhÑ”l~Ç8ä{Žç5ªêŸa–'µµËŒШØÝAÎ:ëêkic´I¯ØÝËs!óV6;Fç€ØûÇ=ÿµ›q:Cç]±¹yåc(F8l 7©Ï|õ¬ù¥ŽÙe»&âIäo0# ¶Ôç<ûæºOÛÙZý«Ä·¤ äB™Éܼž?;óô®§ÂVÖZ|^-ÔZ&ŠÜ-"<–sÐýxúšè|;ogf·>%»hÙ"_&Ý:’ÓüÿSXqêãT¹»ž-Ò»«;;gnïáý1ô®sûXê—wwD´²K¹ÙŽq¸ýÑúcéX©ªhÏu:fGpÎÌsÇîŽ~Ÿ•7M‰¡³Ü¯nç“è*+41Ú‡›sŒ¹Ï'ÐS,Åhnfq™ êOjÊžDaxÜ™ •ëÒ±îÈ’Y‚\ñXšó¥uL—9ÿëWW¢Úµ¬³é;‰’þî(dãçHÓ °;€˜¯BÑmZÞit5sæj7ÐÁ4¤}øâC¼`ÙzcÞ»&ØÛË.–—½¼Ž9$Çߎ4ù€ö0ÓéÕìèÕÎx»CÕ¡‡ËÞò.ØM®2ÞÀãÉøãí®À"H„$e#'øeÏlã®ÅZ'öűˆFÝ6ÆzmaÈç¶zW áØ¯î"»³³¾KrÊ-®æ<£‘‘=Ô=Áǯ}áØo®¢½°±Ô#¶kp·QüŽW"2{© {ä{סÇ}=½ÍµêCæ/Ùæ ò»/ O÷IçÜ{Ö†”fÓô«­Q—θŠpÖò¡Ý‘Ÿ™ìÇÔU‹'—NÐï´MRS=Ô7 Ör¡ßòçç`Þ„cQVlZk-&ãJÔeó®b˜$S»#?1ÐçO:œêÒÎ W:¤2Ê79o—ðùT÷ëŠt:¥¿™¦ÚZZHÚ•Œ3J¡7H[äO‘O|çôÔ`ó­mmíݯìà’E 1¹Ë|¿ú ŸÆ£³žëM‚÷F›OD½¼³ró©Ën`@QNzz}(Ònî´˜ïô;65¾¿³2åN_s ãg§¥7N¹¸ÓÒïIžÁîîًΧ-¹‡ >ƒ==+SRÒïµ½r"¡µ$=AÂF„dzg zóÓ5¯©èÚ‰|E²@ÐX1¸@p±!û£¶rǯ=3Zwúe浬En‘46¤‚fPp±¯aÛ9~µ¡w>±á}RtÙÖ&4MÑÉ?<…^rçêy­«™õ¿è©¼]ÂBʱGèä¸çæ œåÏÔæ´nfÕ|9¥ªÃ„ë Fóz…^rÇëZ ­LÚLRÝZ˜.®c +À'Œ®3¨«òxŠeÑ!’îÑ¡½»Œ4vÈä6 ƒ“ÆWÇ®E^:¼ŸÙ‘½Í»Es:nHU°Ø žãÇÖ¸]OTHàk+iD µ¦)#Žîç%‰Ç’{cÔyÖ­«µm>ÙÄ˜Ç ÝÜä³p '¶=¸­KQÀÖVòT)”¤dŒîÇ%‰ì >˜öÅ±Ôæ‚_+I¹I7ʉ $’¶zqŸË'êz×?§jQJ±hÓ43Jv¢CyeoÃùdýkËPš)zTÞT’œ*E y%oÃùdýkª›I졹ñÖ©<‡‘h²Vã$¸Läý¼×m6‘lš|75kˆ"yÿqd²|¯ÆK8LóôZ’Ù•sÇ'€@†¼÷ÅÚ†y«gJÓÎÑ?կ͙Tœ‡9<1é\'е +­E³támlŸps*“Ç'€F0=+.9d’"@åNBº§×ˆ›ånÈ^p:zljd¸S—ÈNBŽ÷ÅOkaÓ¸/ ç'¯°©àµUæB70üþ•zÖÅ#•†÷äõöÕxÃpëšçÚæìôôÇå2ƒðÏáë]ßÂÿ Ç­êò^ÜǾÊÅp¤tiIàgØg?Që]€t(µmQîå]ö–K…ÇC!íŸaœýE{Àí^Úz¨àRÑEçŠ(¥íE (¢Š(¢Š(¢Š(¢Š(íKERÑGz1š(”t y¢¿ÿÙÿØÿÀ>ÿÚ ?õÑɯ\¯\£µQùÑE¥RŠ(¢Š(¢Š(¢Š(¢Š);QE袖Š(QEQš(¤=(¢Š( QE-QE”QERÑE6Š)ʳ(;zgµFðE+£ÈŠåW#8>¿ZcFŽÊÌ¡ŠôÏjwj’Ÿ\gˆ,¢Ôõ ×!„v¤´Jì€sìz~ùòoìÕ5«£q¿É³,ТýÐûö±ocúœÖ¼ÿÄš†©+O¿Ë´ËD£ mØ$û>=k4Éa¥êßÙvöíö‹ÔY/%S’…ʧð ~"³Ì:^¡—n÷W±,·Ž¼˜‹ýÔ?ŸåMa²ÓïWNŠ'77‘‰.y([¢Ÿ #ó­=:²±†ÔÂ,@ÎpO5jÚÌÚØÚ[3dC2¹ÎB“ÏåVáµû=­­¾î"™X÷ÈÿJ}´›luHŠm)(8霶þ¾¸'Ÿ­D${}Ä‘²²ox€ÏÞîëМgëÍWi$·ÒuÅ*P³ÄýüÝ×¹Å"ÚËq4“ÞFws€}”~µ.¡§ÍuäO&!gKŒá[p>Šàj{Û9nSIˆ˜Ä7ŒáUNþŠ?ZÕÖûNE‘62ŒñÁç®k\]Ûx“ÃJʱ< Û¼c«` 2ûcõÈ­¹ƒ]Ðmƒ¨]S€0ÃÛúñ\® fÑ´{kM>6›ìè«o’΋Œ—8ô÷®bî[‹[+xí£iRUŠrZ5À#åÆI'õƒ;ÍgaoºRUŽ"I-àcޤ“ø×95Ãê*eœËqm-³NêP"ß=z/âHíY\½Ú…Y¥gžÙíÚGR¡# zýÑøœv¬¹¦kIJÊÒ\[¼ +)Pˆ¾zôñö¨îæo2+X“tHcŠß{xÎN}€üñéU®Ÿ|ÑÛÄ¿ (‘–ë¸g'ôüê © N–ñ¯îÃF‘×w99úε|C2<[éû¬0·„€¹;~f=9''>õµâk¨î Ùé¡þÁi[hH£su$äçÞµ|A2Ê’ÛX6°BËoÛó1÷''>õRæEµ´‰b¶4’"˜Søzqøcôª’$(¢(^d y+ü߆?J«réH#€G¾@¾Rÿ·áý*9ZAq9“+Hö {š†fq4ŸŽ5qÆOsQLÒyÓùcEÂã¹õ¬›]¨ö·²kÄ;qü¹ÏåYzkƺ¥­ÄÀ˜¾Õaà ýcéî¿Ú–÷‚b7qäc? 5é:f“%ºiº³œ¶^Vœo,r?à,?*õÍ/EšÏû]~§|Ò)ù¶ï,r?à,?*ôý?L’Ûû;Ts’wHàóåŽGàÃò®Á\:+©Ê°È>Õèë$jéʰj냨e9d¯©M=¾›<ÖÞP–4, ¿tc©5[UžæÛK¹žÐDfŽ2Ëç'Iü3éPjÍ„Ó[ˆüÄBÃÌ8^:æ¼êçN˜_‹ôGWÕ,£žê-»0ä‚[àñÓ×5äú¶›uöõ½Š7WÕlâ»»Œ.Í®NKÎ=I®ïOœ^}²$u:•´WíÛ‡$qëÇORkwAÓôx<8–·R4bi ‚I$á\žŠÝ»§Ô×KáÍ3Aÿ„Fù bg.$–@69ì­ü<äí>§­mèº~“‡bµº•“ÌrÁä“î±ì·9àúšu¾ˆt½xj—æUAãïËŒœãêGåQiÞ} ÄK«ê’[$hžRåçàüÀr?*mžŠt½lêWÆ]‚%ÇÞ“çõ 4&¸º’ýü¸·.ؘ“æ$dr3Û=úñÆG5ª¾’{™µa€J»bg'ÍŽ">eÏðäõ<œq‘ZD2ÜI||¸üÅÛ1ýâFG+žÙ=ù¬ýJ¶‚a£Ø[<öл3¨ó2v¼ç<{šÍÔCZ,©¡évrÏg¼’Ä7äì;yÎx8$g&¨ß†¶†a¤XÛ<Öл3 ß“´íç>¸Ïs\}´^$×e·5â±]¢Ý2رêª=:ŸÌ×mеùåþÐkã!]«j›ƒuà¹ê¨=:ŸÌ×)k‰5¹œßµÚœamÓ!¾¬zªûu?­iÜÇyf¿`€ù×Ò(I ¶V NÕHèK0Žƒ?íV¤–Ú±:}»,úŒŠ±ÌÈÙX¶Õ‰HèK0Žƒ?íVœÐÞÛ±ÀD×®¡$!¾X;V0GBKOaŸzÄÕ¢·±¿÷mTš%,÷Rÿ C¾ÅÀüzóŠÉ×ãµÓî¿áµ‘®š<>«q’÷Rçåˆwظzã<ŠÇÕã‚Öôhvî×>X©Íå®eþ‡p£ôÏ5 ×qXZ+²ÃØ‚[AÞÁÉÉlô\~=¾£(ß[YÛ<ä£GËh"Ëää¶sŽýsúŠrêö6ÆFò¤{-á‹æ!‰å³ÐcñþµŠ÷0#y’£]\œìMÅÈ÷$õúV!¸F;Ø5ÄìNÕå±øšÃ{¸›ç*÷7-©’Ûxë“LŠÊ{ã%ÅãȼìlwôÇÓGg5ÉinY×i㜎1D:|×…ç»wíaŽIcf=Ÿèð[´ŽåŒJ]ÛëŽMY¶Óæ™þÏik$òÏ8T»®*ì,qµ³Êýã‰K3}k·ðçÃf¼“íž Ü± vÊpÇ=wÈú W£xSáCNßmñ !;Tlþñ>•ÚèÌò­w;p6[©Áÿé^‰gci§Z¥­•¼vð ùR5 õ ++]:Õ-l­ã·8Ô+½´´¶±¶K{HPaQUSÔÔqEQE-QEQEQE-RQEQKEÚ–ŠZ(¥àQü¨¤üè4œf’’–Š(¢Š3E (£éEQE÷¢ŠJ(¤Îh¢—­R(¥ÍQE (¢Š(4QHh¢Ž”QFh¢ŽzQEŠ(éEsš(¦° äèpi² ’6BXÊœô4Œ¡”©$dc àÕF¶¼Gß ÞÙ”dcð¬I´b+•žËX-‚FË•Üü?³dÓõ˜Im¨“ÏÜ™w ~ Žé×L«Çðñ«ÓW™1=ìhBã÷)ŒŸSœÿ*˜A|ë‰nQN?åš÷ükñÅäZCiöèÁ ü’Jýö•'Ó/ŸNpŸ–ÛEN±·Â5Ó¼×?Þ“i\noL¹8éÀ®GƯo¥›+Hð†ášY¤n¯´¨?VÎ=©º\°ßêRÛùfhqL²¡Ï@ÊÇ¿Nþ¢«él·w×w–Æ'š13$¨I•ˆÎqŒûSt÷K«Ë«›r,~\S,Šr0)=ñŽþƪž/Jv0Žå‘§DP9?÷ÑÀúÖ`–aâ$òÜGpS˜ÿå˜#’?àG¨¬²nBQü¹ŠýÏà·¥Tž ¥”œ³ä gð‰«¤ßÚ×Ëaj²„b¥D’úؼ™HÙf@=PFqô#í>PcY±`Y+†g¯¡þU†cò`ûD…üå¦>`Jžqê?ÃÒ›áøŒ6âg,fPÑ…Ç àóø…sž)‚ &† â21uQÂÉ’À÷sõ•G^¶Š'[icó$0¸}¯ I`{Ž9úJ¥­AH–òDdpȇÚñaI$N9úŠçÞRL—±™ù‚+8#æõü}« ¦É{•.îsaÛ=çÿ¯íYM&YîW{1ýÜjìqׯùô§ZE=Ö e“ ê$d.vªGa~œ¯ëRYE5õûHÅC$r8.vª¤iòý9_Öi·wÍ+ãr,ޥޢ.éÊΙ=ÚÛEs©|’´2y0¢òU‚ã>¹ ϧ©'¸ñÏ{•wGòã^¥X ¹õáyôãµ2K±Sßü²H²yQªóµU‚ã>¹ séÅZŠÞXg畜É)eÝöèjA±M+NìÅä,÷{íÐÔé‘K+Ììí$…€þèèèk3Z—bîÉäÛÔþUªËµ7dä‚1éïYÚ¼þ\EòycÐÿœSìb[Ûä³$³¬K xÿž’™?ðßLŠ—Ã–ÂïPåKHè ‹£ÈBdÿÀKRxzÜ]]ù vAxìò¤Ÿø oνŠÒæÂxͤ.Žb-­ì ãò"½ÿO¾Òïa’ÎÚD•-_ìì¬8Ü;yë€E{-ÝÜoo‹"ÀþK)Ä8çÐW@ÀÀéZ@``UÞ•‡â¹é±Z|›«˜á¸ õdüÃñƱ5ÏxÊv]2 B‘yw ƒÄL~oÌ bkIJ7Øa¶Áò®n#ŠsùfO?ž0}‰©µ{5ÕôŸô9'd®Poò*MzÅuí >*î;Y$ïc×ùTš­¨Õ´°läPN ºuÇ =«2× YÜC©Î’#ÀìŒtÎzâ°ì<RÆæ=Zí]î1ÎNG5™káM¶“G¨\ ŽàBƒŒzæ¬6Ô¡†Ñ]^(SìÀ.1ë“׎œUæ±—X‚ÞÊ7VŠÝ0]“~\ë“ÔúqVͫߟ8)¸®ãñîi·­ršt×ú\÷3"€,Á•ß L óžÃ9éPÞ%âé÷7¶sw2#·[€ñ»ä铜öÏJ†ïí)c4׺d·¨!nVnƒÓ¾{ ÄÑtýCS-¿>W&ââÙ¶ÅÏÜ3c‚ãîú“ŒbøsHÔõ'pú–-†LóZ6Øb9¤Xá›;y:.Ÿ}¨3¾ýÀÉšks¶$9å#Ç»=Ié­{¨ÙiöÒé~… ÀŒ³´' ެÍëÁ÷üqGT±²µŸGð¼Q›¯,™e‡„VgõàúŸÇÕ»¾µ¶·—MÐãC0B]âábQÔ–õëïø×;.¦šSIL­{€Ì£!&#ŸhÕ¶Vwî+˜›UMµµtmFºŒ„— ÇÚ5m£ÕûŠÁ›RM-d†V¼„Σ!%# O²)Ú=K?q\mÍÓÙyè“=Ã$™û§ž3ì3ø·¶kÏîo^ÜM 3’÷ žüÿ!ŸÅq7ÍkæÃ Ù–á’Lô8<~õcYeæ»,AÄIç7Rp8¸Åfˆä˜¶OÈ¿Æ~•š±MpìXþê?ã=øí[:SÙ^%úÆP Ä*W’NF}ÿZ×ÑÖkµ¼Ž2¥F"s“ÆkgHŠ[+‘v±”Ú1#œž3VoYƒÇ'›s;ìD^¥‰è>¤Õ‰cšââh#ó®®$؈½Kþ5fàHÒEIæÜÎûQv'ükÕ|5áë}MŽ1¦žlrÌzŒúW¸ø[ÃV¾Ò"¶® æy±Ë±ëϧ¥z¦¡ÛèztpFªf#2ËŽ]»þ³ÇzÛ­J>” /ãEQE-QEQE袊(¢Š(¢Š)h¢Š(£½.(£¯Ö’ŒÑœõ¥è(¥ÍÿÙÿØÿÀ>ÿÚ ?õÞõë•딼bŠ)(¢ŒÑEŠ)EQEQEŠ)1E§¥RQE-PzÑE Ï99㎔ƒ<䎼q@Ï9ü)ih¤&Š(¢Š3EQE-RQEQAü¨¢ŽôQIE´Q\¿´Û[»k[¹ãWkW$èW†9ÿ¾p_¬­ä¶Ó¯¤E/Œ¸n…HÜô\là’++ɆF=Æïý”Vn‰=´³O¨$að#LJáˆ×Ò°tëbn¯ž%Ar¨Ó’¿6Ñœ¹éYú=Õ¹O´i‰^qÎ_J©q¡%ÚÞâyKÃÿÔ+§ð-ª ^ye9KKe¹>b§hüœþ*+·øif‘j×W२ºpx;Š£òvüTW[à;U‹P¸–\µ€\8=w;GäÍø]Eµ¼ÑêÚ-Ü›UgydØ:ÈqDzˆÇàk³´‚âs@¼”Žé¦Æ:†t8ÈöQü u0Ã4z®‘røU¥rÁe8ü†ÁøWY]µtõ^ÿìÂÎI.ÈÄ<Æ' ÛÎj†µog6šï~íäNέŒl;¿•SSŠÚK&{¶) $LXciÏô®WAƒP¶ŽGÓ®#–heÅ”ÌWÍ€àö$ ƒŒõÊxnÓP´‚I4«¤–h¥Í„Ĩ—á$`†ÆzÀÑmï-¡gÓçY%„”žÒC´IŽØ2CZ©Ëâ ZÇO»û °…k„ž2»}È89àÖƒê÷>%ºm;K¹ «Ý,¹Yã`ÃäÛÇ dõ«gR“\œÙØ\ Fˆ+N²³#)_Lw=k^"š}ƒµÁŽ(ážA‘Աô÷­è<½7Ospb†8gp¤u,}=ë^=–Vlf)D 3ôêMbj¯6­ k˜äƒMA¸ÄÙ 0= ŽÞÉî7c æõùgÖ`a:Ko¦F»äC•ié¼vÏdëÈÎ: MU¥Õ"o=™AvÝõì¿LúTCM½Õ,"·¶U³²PJ„ªÜ‘ÕéTÿ²uOiZÚ¢iÚj!T%Wov#«¯­BtûÝRÊ( U³³\•IR:“úU{á zDöZ lÇz<ÈÝ6!þ&'‚~êŒý)Ú‚Ak Ï§øt,v¤íºÔ s#ä ˆ‰‰àŸº£?@Ëí‘irÙè¡c·'mÅæyvé±Oñ1<ÑFkε]RÚÜ;I“ÌHAsÿ=ä9ß&O¹!}:õÆ<·^Õ­,ä:~/š.ǹ‰¤9ß&~¤…ô>˜ó½kV·¶&ÃIH±­p?嫜ï“?RBúuôÆM†ž×’-ÄÇ÷ýÐzýzV•‘™„²}ÅéïXúnšÓÊ·ÆèMu1@ˆ»ÙpxâºáT]ÌŠ¸<]4pª ÅqÐŜ̌NçáxïèåRoòÓ;Üí\uÉì¯J“w–›Žw7 ޹=€®ß ý§©@¦þOõjÀ!{þÑx ÂG€êz„*uò« ›tì£Ü÷ü»Woá/ :3¨_D¦úaò‚3ä¯`=Ïʺºí+§¥¢Š>”QF(¢Žh¢—ñ¢ŠQEQEPNh ÑE-RQE-.=裥% SíE(úRQ@<Ñ@æ›E'_ÆŠ(ëEv¢Š(¢”t¢Š(¢Š(¢Š)(¢€h¢—­QEw¢ŠPO½Px¢ŠAíE½¹¢ŠLö¢Š?(¢Š(8õ¢Š3Çô œ ÑIEQE-W7ãc9Ñž+hLÒ¼RAß Óõ®â£\=¼K,®w!@Çþ=\Úv³‚(!óX¬®Ô€õ¬/ þûO#‚BåԬ͇`¹=€8ÇÒ¹¯Äo’ÚÚoJ²ÌÀ<Š„²¦OlžÂ±ô4ûT0F±;D÷l™†÷T$…ÉíƒÓØTpøZ5ûjÜĶÒI<¬¯o;>C¥¾aŒ‘œŽG_ZŠãFWšŠÜ¤p³Í3·™Ÿ;†ÒÃ#:ç=êÑŬ·¢áie`ÐJÏ÷† Œtë×½lµÀ7[ ̱ƬBô]ÙõÏä) ‘‡™3 ÓuÂôPUׯԟÈzÓâvÄ’ºn¸^‹ê?R!ëLÓ¤[ý*îi.É<)èUŠ)?^OãRéöóxbööK» ‰Ÿ’@å‰ôûÇôý2fðõÕÛÌ Ôþ QIü2qïR;Ü23FÑ Y‘®L¨X˜Ç@ÈÁ#×Þ­Ø^Kwy¨]²*m¹î̪Y¼¥à 8sÚ¬Ú]Ksu{q±S*×>b–o,pTG8ÏZä®.R-Vòíí§…‹˜q!Î𥘾ÜvnyÉõÎÜÌ‘jwS¼ÀÆF„§ql%ˆÇ`qžä{Ö³$z…Ôïð’æ2$;‰±-Œvæ©[ÚË2Æ&ŒŠ3¬XÀ@N>øþf¨,2H¨$_Ý.©Œmãßõ5U!‘Ñˈö–TÆ6‚qƒïúš}¤ÑÝ\í ¬ÅU¤©.ì6ˆÕGs—8ë›zpKÉðí»ª«É挳°Â¢¢÷9qøóŒg2ÙUeàð= ó4ÛË…Dgc×õVîà(,ǯãPÝÜRÌp?sÓcíNÒ1Ý!ç¹ Ä$=Û3çæ8ãµsÙêÌÇç qÛší4$º‚æêr¬Í©Ç´®81ãÈ×á´¼µžæbŒÍ«BQ”¨x~F»Í +›i®e*XêI‚þ8#ò5¿â ëkYô™¤Ú‘Äd §’FÀúíñ5Õø¯Q·³½ðÍÝÄ„$q´Ûòp°>¤øšßñ ì·š%ÄϵQMªy8 p>¸ñ5Ôé—ñêze½ì\,ÈÝ=Çàr+³Òu(µm&ÛP‡…ž0ØÎvžãð9…tº}âj]Ç÷e@Øô=Çàx¬ÿ\o‚ßNŽÙîZúaS‘qf>جÏ\™m-ôÈ-dºmBuˆ˜ùCcÛªôáà·°ŽÝîò`™A‘S¸³Àb¯^é^8›æ†åˆî#$2gùcÅh_é^È· ÏoxŠV;˜ŽG¡þðöÿÚ ?õÞõë•ë”âŠ(QFh¢ŒæŠ(üh¢–Š(&Š):w¢Š3ÍQŠ(¢Š)h¢Š(¤¢Š;õ¢Š3E æŠ(úQE¢ŠCEQEJ(£¾h¢‚h¢ŽœÑE%VV¶vµ¹Ÿ›Ó¥q?¦1Üi*‹ó‡vÏ ùÏá\Ï‹¥)q§0w$ú–±cŠì¬âæ;r¢G0Ó÷7g«qÉö®q¤¸¸•‘¢¶[hfv·ò7’MÙ9-’}†k =ÄÒxàÅ+´&Ù&sß$ý)‘k÷·W°Ä_Í´m’„+À=ÎS›X‹R[Öåe…™rT€wŽ€÷8¨ªªÃ¨­æ7,±BJáØ÷8¨«1ª­­Ú(8ä°|uïÑGà)ÚsDº§ Ž ­ºy^¹2•<÷Î>ÀS¬YJ¾‰˜XËúù„{ç Ï ëDÚ«#~ô®àyÈ\•ü2Ù¤Ñ̳Ɩ鹺™ZE vŒFqé–'Â0<±¤HŒÆy8# íá=2Äâ©k÷ë¤è·w¨:1 œ;ö_ň§ÝHš.{u´»™¶–bpï‚B~,AúQy*èÚEÝÒ®çó07‡|d/âÄWwww#3FæfŽ Ò¹<a«è >‡5É^]\M!He(€ÈíØ‘£Ðúç.în$vus!‘Øô$ghöèjöos¨Çsm%ÓÚ%½˜“Ï#“#}?ÚSŽÜúUý*ÎMH]E-çØã¶²3yÌ:¹¦‰ztäö«Vòê u ÝXíí<Ï8õ.GOüx}9¢ÒÂ=ò W–7û8ßK“$L6ÕÎÜ.Äð2Øì*Ä6£G¹ŠÚIãßo‰œñ¶Ô (8?p³v8ì*[{EÒna¶’XËAó£I’ñ° B¨<ýÒǰËcµU›sß}¥îwˆã áAíЖÀþðô¬ë²ZèNóʡ؜x–[ï «>æ»ûAœ8!HD(+…–[ï{UR@ä&AÙ–aô“©HåÏNµ•¬H6îé×6™¡êšˆ¸þζ·Âã÷’gw¯ÿ­ŠØÑA£Ž=Ïüµücd—úÞZºfÞfSS??OaŸÂ“Jñ ¼~µTŽéPB±“ƒž?ˆÁüiš_Š-­ühhã¼XÖˆœçã¾FãE†½^¶Äˆ—!89éœ{ðÎÓ¼CzÚâÀ¿-¹›a'þZ·ý:þ¦â½Hx–;eùm䏨ùÿ–¯À?N¿Ÿé•¦ø‚øë‹€°4ÛXŸùhÜôëù×y^§]ÝaxšÑ.ላÉUâuÅ´r…’À î9®kÆ0ß[E›¹D°ÈŒ-#˜(˜– 7¸»V/ˆ­#»Š/ô™â‘H$Ú%Ë7wÇ5gK+ åcùç }æ˜ÜŠ–s¦éQM"¥ª´H dÊ w$äãñíL ¦èöI©È©j«ö¹×o2€qÜ““|ö¤‘ôý*Ê9oœ-º/Ú$P2d„P;’rýUç¾!Ö$ñ ü²»’FpW•†1©ïŒ’Ov>Üð)×dñü²;‡’fpTåbEÎÈT÷ÆI'»nx?jͯßÈKw`÷,§+®vD§¾2I=Éö«vÑ4J€Œ$j8þï·×5lÛÙj±^R¨èˆµOclšÝì¶Ë7Øím×Ì»¼=!O©ãqéøûV—‡ô…ñ¥,o/Ù,-WÌ»º'ýZúxÉÿ=1Vt»­ÞË—ì¶–ë¾æèô}Ó´ßìíE†ksr¯+^¨ÌÆðç°Áé׊Ô:¦‡eblt9àiÃÊ÷€9›ïaŽ{ x­É-ïüSr¨NÕB Gýͺ‚rGÌØíßéV÷Wñö³n–öæ+;iUÎIò¢ƒ’qó6:éVÍÎ¥ã J‚´.¬NO—“™±ÐJaŒ"óŽøŸ^+Ô0@…wÈŠ€*QO§QøQEQEPH&‚@'gi¹ëI»œ~\ÒnÇåF}(=(Î{S¹ê){õ¥¡H#¡¹ Ž„rG4€ät#·4¤QKE-t£¥ŠJ(¢Š)GŠ(ëŠ=è£4¼Ñ@Í))(¢Š;ÑE/ÒŠ);( t¢ŠQEQEQH(¢ƒE}(¢–Š(¢ŠµQŠ( ÑE¦(¢’Š)(¢Š)(¢–Š)(¢ŒóGz(<ÑEQ\þ³t_V$( Æ@0¼œŸ^3ŠóßÞÉÿ PˆÜ-¬&A'A–ÇõùAükñ5Óÿm$A x‹‡æÇúñúÕXbXÁDVm¿)<䜤òN?+-J]4£Ê¨J¿¹ÀÏ<žŸf¥±YÌ1£H¨J±÷Ç>ý+2ÆyZî_´…Rò¼6‘ ±q—úŸäg¼“ËsåÜlÛ½¢·E#…Î7{’Á}ªƒÉ,—]ÆÀ¥š8HáAûßR:{m­[†‚ ñ¨‰A(+Æ1íÈ?­ éc¶¸¹¶Ah¶ü`cÌ*€=å?ðWnäH®&v"¬'Þì7ÿ5 'cðøc·²ƒÓ§‘íV-ÈÒ¢ÓÖ7Ü—Oæ·—œùjxõ'#Øæ§„9l’7ÊÎÞclÎv)à}O#Ú¹ßt¨¡Ü¡ÚL*ƒ¤°_ÇŸÃÞ¨xÙXi¶ñ<ˆ²4ŒÞPl„bÁqnÙª.W|1³(‘œ€ä),\`ŸÃÞ°£Œê6Ïk§ÂÇí3ù{Ç]€¸Ÿp„ιء—P­l`fiåÙ‘Ü`Œ“ï´X‰º„-mc &y¶=0FI÷Ú@üë§[[u‚EŒöy9¸/´„ÈéGÐfº{­:Õ!a;ÚÒVŠgn Š¥Pè0ú ×C5•¸Š_+æ6ò´r1à¸R=2}ak—±ÀÍsyå3Æì–å4ÆIÁã-ØÇ#]»Ú‹-ÛBîŒËnÈ »Åêp}@w8ñËÖ.–0&»1;£2@È »FqÉÁî@ó€?¶±ZØEÉ4€.TÌåŠÇNÝ3ǵf¥ºCiaäppó%@ãíÓòÅR†Ö;k8ãY$p ÊÙ öéü«Qsæü|¯ÜúñXº"BÝ›­a껄…€á¾÷ã[^××KÔ䨧ÚcXÉÉÀ “õÚGÔ×Aᾋ©µÀbž|käÀ~¸ü mø_ÄGM¿i˪yã wúâº}#Ã:6´·2}²çí.rbè°Ão©¹ç'ë]ç†ü9¢ë‘ÜNº…Ó^Kó4MÂÀC ¾àc“È'ë]މ¢izªÏp·—-q!£n$Ž=ýÏ<Õd–÷Ã:½ÎÀËir(yRX{gsÓš­%Ýï…µ­Vó­®U÷®8mêpA힇<j7žçB½ŸKcæÁ8mËŽàpAíØ~uÎÎZ]qЯÙÊNá]TúuäÝ+½˜Í­¤–a|›Ôu•A':ŒØq\ÅÓ´ºÊ½®ß#atB°Ÿn½¥k%µýÇúvžƒÎ‚qw*3¼2žýOçšÔ´²¿º˜ßéq¯À¼‚ÞÏÃ&´!µ¼¸?mÓÐy°Oö¨¡Qà¹ü뺋Äq^è—7–À¤éøã8;Ë.So¨'W§'Ša½ðõåí Ùs£°K».So¨$ŒWrºìwZ-ÅÕ°ÄéèÐó¹Šåqê #Êhwºž¡-͕¸Õ-ȸ1±Ú\¬ªûI÷ÛÛ‘\7…¯µ}FþòÆñ$:¥°&68i%GÚIõÛÛ‘\Ÿ‡ïµ+ë‹›K¤í |Ncc‚ÅdVÚ~¸ÀíÈ®‹WÔ| A”Ã̼Ûgk¸`«6@v#>†»-bÿÊðe¼3 ÷¡l­K l, €GPF0} tº¥îÏ Ã˜Ã}Ø[kv#I ŽØÆ¥bÅ466PË fD[ZGË‹tnqêîüývúW>·ZéÖ¾`b—Ì-­"ˆeÅ´mÛÕänïŸJÉIbµ³…ä Ëuˆ-£–!íêÎÜþ^•“ñg‡LÓª}¾íαò¶ÐŽR }ÈÉ=ñž˜¬‰÷×K²¢hݲ+mûƒõ>¤g¦c|DàÒ~Ï"©½ºe3„å`Œ}ÈÁúŒ“ßéŠåt;6†#jƒæ9é“ü+ùsùW ¤ZÁ<ó7¹ì?­rº“lŒ ïsê{ëWvò®YÁXcá\¼Iëø“VšFòçÜ6ƤcÜŸþ¹«­+ysï#B±îOÿ\ÖÝ̱¥šxwÃr¶ÙXI{u|òŸbz/aÆO§sÒ_ê°YéQxcñG!¯n£L4íÇLô^߇ç³{{½„^ðü¬˜5ÝÄkóJÞÙè+ZÏMµ²;ˆ1ÜÌ€3Æ»ÜèW²°årÏ”ìg‰|É0GS-¬ay7NL>oÊ^1½Î0 ÝYÚEci´ àçÜû×µéšu¶•§Ãeh¡b…BV÷>¤÷5éÖ6piöQZ[.Ø¢P£ÔûŸzž¬šž—¥-”QJ(¢ŽÔQ@¢ŠB2{RŸJB( RÓ©hbŠ(¢Š)EP(¢ŒÑE'ÖŠ(¢Š)sE;QE'ãI_ÿÙÿØÿÀ>ÿÚ ?õìW®W®QÚŠ);QE QÚŠ(¢ŠSÖŠ(ÅP(¢“<ÑEÖŠ(QKE†Š){QE'z(£ÚŠ)zQE&(¢—µQÔÑE'ÖŠ(íEQEQE~tQEV«(‡B©NŸŸÿZ¼ÛÆ×MrhÕƒ„‹p~S…ÕHà;änƒ“ŒtÏ£;Û¹gy³½IÜÜp¢²T»AÆYÚ\—SËqÀ=ì-Öê+­»å–…‘ŸÄ•û{Õû½6|û…ŒÈ–4à~e€çÔ^m\éðE4.‹æÎˆ][øQ8™`?!T­¯âÔþ@®EµÃYyXÉvQ“lp*”n'†öþVùÒvÓ–flgm¤ôªQJ³ÇwxäïIÞÀDK7SlÒ ÑçS–æþýL1Ï&Ø£“!c‰T÷;Ž;“NÐÄÚÞ®×ÚŽØ-ÀÙ>BDŠäŽäÓôe›UÔÞúÿE÷bFÈXÑ@ÀǹãÔÖŠïàŸZ…¤,`‹{ªû*ävèÍõ#ÔÖw‹µ kÝwÍÏn…¼¥#E^;rþ#Ö³üO{ư²f7\cåUãÁâ=jÏ…ínm ìŸ+Ë$YÆÅUŠ3êäŸÀúÕÏÚ½Œ¶zœÑÂ<¥’w„œaUDh9õr#ëVü3o-¡µ¾–8—bÉ+ÄN6ª€Š¿‹ëZZ\×’ØÜ\]­¼«.çFµV ´ðN\dczÕ» ›ë‹;Ë››xfYÔÈ ²€6ã¹ÇÖ­ØÏy5Ì÷1C(˜VH\qÜŒŒcë\v£y Z´Ñ=£¤lëæe²™çoª¨QƒÓŽç•Ô.cŠý¡kVDb¾`É+ž¹Çª®ÑƒÓŽçš¼¹Ž=Eâ{fD%KòJ†ëœz…Ú1ÛŽæ3t鸜äݹكÑ+ú{Õigq!æáŽÜŠz~•Îë–SÍ˸집úUmbØKæœ(ž¼öãõªÚ„‹ðÒªêvþ`“GÊqŸ\qXr´ÑíoáQÈyëü³õ¬†wŒ…ì+Id·}‡î®xïÏùÍu:]Þ³ª\Áy4¶· ¤IáãœpyÁì{We¤Þë6VÐÜÛÞNm'Uýí´›Yœ8ëƒØö®ÓJ½Õ­í¢¹†êWµT‰!|21<©Ç\ÔïíBVk»‰™ÐJ°™$rÍ’9 ž™û"ëÄ7· ÓK3Ì‚3,„³sØgÔ~TéµË©‰šY×Ì™’yÇê?*×O±Í`f·@n |Ë#ÌŒƒòõ#éÍi¤Óé_lÉ þý720x?/R0qžœÖ’-´Öæ ,MûÔÜ7 <—©8ô®‡F1Zè¶`3‰š5Q ™Ç^å]_‡Íµž‰då2F«¹F6:gx•t:?•m¥Z…g²(ÈtÓëÅTðõŠÏfÓ!Wû&¡4tÂo%yú0•C i?iµK¨™d6wòÀGO9*{ö`?*¯¡YyÖæUÃ}–òHqÓ í?‘§ñ ¯öoŠmõÚHEÔ–±I2%ƒìÀãŸAV§ ïÓuû;5˜Üêú‘kæ&È£sƒ»à*$““’>Ì—âK(ä7:®ökC"lŠ';Nüs€ˆ $œœãèÉ7Xk–ö«/Ÿ‘‚ßzmí;±Ï ¹$““œ}8¯^¦¯¬µ¥”Í5¼‡uÃ’^âSÎ}z@õ¯;ñV§¯¬›;Ú{;g$ÜÈI{™HœŸÃt áüC~šÆ°m,åilíœî‰-<§ï1?†é€*ü ]›v¢®õ<çëK ˆn0 `{õÍ\…DP0=ê½Â\N¬‘ˆÃ$ (8È8à ñ»üj <¡•BI0ìqÐg¿øÕk‘<¡‚ ’ì}xÏø×EáX|» n<¸žþîb¥Ð‹‚FîB}jè¼–MP¤º…üáC¢‚Aמ ö÷«ú4Nöl8ä¾¼˜ Ë÷TAç¿<í]晥Û[bL´ò(ÇšýKt'üþëº'…´Ý=¢¸Tó¦‰,Œ:Ÿâlz“Ÿé^¦hVve% æÉ…ÿsùÖŸ¿Œt­j(¢ŠNF;ÑGZZ(£éE.(¢Ž†Š(¢Š;ÑE-QEQEÑEQEP(¢ŽÔ´QIE¾”¹¢Ê’’’Š=éEbŠ(¢Š?Z(¢Š)y¢Š;ÑEQIÞŠ(¢Š3E¹¢Š(¢’Š)h¢Š(¤ôQG½P(¢—ò¢ŠJ(£õ¢Š=袒Š)h¢™4‹ M#gj š†òê+9®¦8Ž.ß@*+™ÒÖÚK‰5, 梖K‰Ÿx!ä>fÕ=tþcñ¯!·¹¹Ö5«†(ÂYÜ͈ەÜx×¼öÚâ}KUŸ*DŽÆOò7¿P+Þ¹šå4»Ù.%–ö1v–±Çó²'[€qïž”í:ßtÐis½Õä×iö•`vÛG.U>óŽzúSla?e–-2áîg’í~жéX¢qÔœøúWG>SŒ«ã1ÿ>ßç¡oç,s—·1ÜËSJ޹>„ñ׿qZVæ@’—„¤î„lcœ¼úÇ{úVv’]­çþ\†æRC°%†ö}¸íþ5‹é$ k,Ad[‰fgɆ`­íž©õ¬›y‘áh$Œ,‹;´¥Ÿ%Èf ÞÜgz‡V½»‚h#GioI+Œ1öà!Å”R j_\Mk± ÛÛÛ™%|žb˜ Gª—R=HíW¯§¸·02![x g‘†™.Бê =H®RÚÝïµXåºPÌÖ­ _¼#‚r‹€¹÷cÓŠäàŒÍ¨G,ª¥¾ÎeÚy ƒ“Ÿïp}Ø×9 F}A%™Ao³™õ È''ø¸QŸrkª†$ÓæBˆ]ú¡'ïrê{×Qm´zLÒ5°¸{­©»ÉÒ"Ì~c‘Õ”~=뢊8›+µ¸™®0‹ ¿HÉcóvù÷ªvf-Nº¹¸lvòùvÅò3&å®6 ûŠD³h<1¤ÜÝ]/Ÿ ´¬–»³²6“rÉõÆÁÏlS µh´=:{‹‘çEnû-÷d*ܯ\lÍK&ËkÉ. Ï$·Fù'²® µrc§ë—»p±]<î'–YäIüõe,0!†=»×?3 ÓNDÒK<ˆÄŸõ¬£‡ÃÝéK%Ü‚9¢`ÛR·cÿ­P»‹©6Ê»jÈCvàÃü)–åöJ«! Û¶* È„“6ÜPý Apå< •=z¯uy’½;ç.í¼«¨ÀsûÅü7z~XüsXwys) ËÏ×üÿZæõ+_.áJœ†\þ>ŸçÞ­hÒ‹§n1"• »nÓÏ#ÜU½èZI.ìá× ´©õsÃ÷"Ô̤‘¼`Ø*}E^‡P:}©¼gˆ†eÎA~ƒ§Ôóè*ä¦Ò?µ. ‹”ô/ÓóäþÖ”W¿c·c¢å—±sÇøþ½V2Y|-§ÎÐ,z…¬KpªFNò2ñŸf©úûW¶ÙhÎþÓekt‹QµˆNªG;ˆËÆ}˜§ëí^§šòxrÂcÇ}o”);ˆË¡ö`H?ýjÅ—X·ð¡¶»Še»µ¼Ë,ÿx¨A!°x\d~kmnÓÁOk{ Â^ÙÞüÉß"XóÍcK«Ûx_ì÷QÌ·v×\¬[¿xˆA!°zc€j_ ZO¦ê" $ƒV¶®S%ˆ#èO乫^¶ºÒµu‚äo‡Yµ[”%pc|³à¡?’Õ [Üiú‡•8ߥÜ)#%ˆ#ñýt¾$Ž^V<ŒúœÿŸÒ¬Ü<©ÿÚ ?õÑ^¹^¹K×¥RqEQEQIÞŠ)( QE-Rt4QERw¢ŠuRQEFsÞ“9ïFsÞŽô´Ph¢EfŠ(QF8¢Š:QEQEQGz(¤¢ŠÏÕ¥¡ò7Û”•Ï^AÅr9Ô-æ´RÈS4fHÆzd§ë×ð®Ä÷pËn,‚þjOįô¬«2|Ýøçªœ ã®yãçŠä¼?$BðÏŸ7,ÊT €2sÏ~yö®ExÌæe\IËÎ99çŒãŸjtvðéväÚ(–yqŽç$ç뺭^˜t+H¥±&YÞ~z€Tä®áúÔ÷F-"Ú7´ýÓ–y°}9ë¸~µfVßdŒ)sŽ|–òç:%›ïÙ9‡Ï¤œ•'§çRÜ\nÒí¤Ý¶O(LàzH?ËóªJ‚ß,˜‰šÌ…9cÏçXZVšF¥ ·/¶Ô1™ØöŒe?Lþu‘§X4w©5Ä€[‚Ò¹=eº×;ãRÝ4H-ç¸1ýµ„¦8ÆæÚqôÆ2O¨éÞ)Ô"A‚ ç×ûSÁçnà6¨väŸPSLñ=ô1èñ[ÜOå›·óÞ(×$gôns× wªsÜ[ø~}e²Òƨ[}¥4 H!2ÉåÅ–*wêX’3ô5º`]&=+F–Wšúæ±SÉŸÇ-Àÿéu{(4tÑô$“^ÍoÎO¡Ç¾I oÝÛE¥¦—¢¼5äF&*§’0 ù$W5HÇ–Óª#ÉmÕvÀÜ@éžã¦qŽGµ?]U&K¤XÝ­â,„…ÞTr8ûÀF2A銗UÚ|Ë”Tf…6+’ò½½À8Áô®5»´ó„‘h•ÖXW!ÎìvÆIñú× ssoæ‰#.bWF¿Æs»Û$ƹ››_5dŒ¹‰XIþ2ïÃ'ùÕk5ÙG4–G@¬Ä劃€µVܶä Ð'ïƒýj aºÚ92»  OR ñùõ«R*3¾ä}yÅK*#1ddœgלTÒ*±Êö$ã?¥sÚ˜462FxÉ8ÿ<Ö5únGNÞ•‰¨ÆÎØÆ}½*²êÌ 78Êö÷Ç~ÕMvä‚Hõ™NH$ƒüB¢û]´WÖ‹rIo‹$‰.1#dgÛŽ§žjhîíུx‘ä†Y$Ž\aØ‘Ço­Oå¼wömÉ$:Ë$r`lŒð;qÞ½kQø…agcz|‹¨^Ê£€Øϯ§'§jö]O↟ga:c®¥}2)$’\ú÷êzv¯WÔ<}ckiV·÷r(ï… }}9?…yÕµ•η¯ Òô]<í››„ä^ƒ žv¯¯Åy¾™>³â4Ñ,/ñî}¢â8þEägnyÚ¾¼t¯>·±ŸX×gx·M1ÍÍÂGò/8Â÷Ú¾¼gêÚtí?‰WL„M×c²©g  ÿ° ú޽kÙtÉÏŠÆž¶þRh–~[²6P»íÙŽÿp¯~§Ôìg7!6+ÄÒí‚9S•ÜØÛƒþè?3UÖ´½3R¸’e–ö[h‰*_pŒà±U_\($öÍTÖµÝ'GÖ.f’;J{x‰*ÒoXŽ7Uìp “Û5©«iúmýIJ,×’Á;KnT8Îúð2{f¸‹{›­SÎñ£lÂÂÍwgùVêà€¡·¿DÇs\5•ÝÖ¯Ljµ{g:}’ÉpÍ !n® {p‹ÇdÇs\…½Õ΢“kº» Ey‰~ÌÇ(öáWèžæ¹[e¸Ô5F¾¸&I¥bÌØþ&ã?@:õ«‹‰î5Iïg&I¦bÌØîÝþƒ?çÉÚ¬ú†¤×·É4ŒY›ÄÝý€+¦˜GkdU\F‘©%88ë[Óyvö{U‚*w\u®Š_.ÚÈ…`Š€Ç±ÇZ¯cb†òÚ(Ý¥P£|Êãï=ÎERXÒbTc U™¹¹ýERHÒ bæ@ª73r=Iýkº‡J³²’ÊãhÏ’cÓlK÷G°ÃtMvÏ¡Ziñè/\Ä.o;mŒcÛ†À«WTt‹[#¦HãOšç°XÇAíÁÆS[Z‘µ[‰œ:És)•Õ›;IííÀé]¯ƒ¬e¶[Û‰Ñã’æc##6väôöÀÇÓøvÑíÖæYU–Iå22³gn{{}+ZºZÚ¢Š){QE¹¢Š(¢Š(¢Š(ëEôQKEQEQEQEw£š=(¥¥¢IŠ):š(¢–ŠQÅôRg”(¢ŒñE}h¢ŒQEQF(¢ŽÔQJ(¢Š(£½Rt¢Š1ÅRÑE!¢Š>”QFy¢Š;QE¨¢—ëERŠ(¢Š):ÑEQIÚŠ(ïEÊjS^ŸMköuò,‰ {#1Ïl~£Ö¼“Ç7ÐøÍã‚ L²/VÊ…;Ž{c¯½yçŠç½‹Å8 _-@”8ï• sôÇ_zK‰ÖÆH·K´¾Q@ÆàøfÀ÷ŸóŠ¡óé7 —˜N ‘¹_ Øþxî? ®Kés®æù<¢\d> `~GO“VÔ>Ë XD™¥\³‚ Н®I­ZñÜ*°6c¹Ý bHòFÅØÎs1SkWq*Äp—ÆŠñ“‚„¡Ú‡ç þu¡'˜šdw Ùy‡ 8ÕoTI£ðmž¡)ßqxÿ4ƒ²Œ…€uãéVu5<1my!ß=Ó|ÒOáúu®gÄd×é$pÎû$ˆBPçb.ì³z´0ú×;{a5Ì+Êê$‡a ª™ÉaÛCƱo¬eº„F²¸W„! ª™É#¶6‚?ãKÄ:¬f6’â9ÇÙÁÂØÁÀôûÄû}+Á©øƒS#ó'ûAò°>sN?ï¢}…aµ¾¡®êqÙæIÿr­ÇÍŒûé°5èÖ1A¨¢~[u¶q(è9,Þ¹ïø ô]ÎkÓ})ù-H²Óâ¯ ÌøëžùÅwšE¤pÞ5ä‡åƒýÎ0:pY›sïV-"7Q®ò^bKÉ&Kã={n8,aþ» tᦠ$ò¸%‚ŒáryãžœþlµŒjú´Q$Ì €¼ÎÙ,8\õì?:ÅšîâËM¹7!¶I›Ë›o)âËëÉ#ÔšÆkÙ¡¶ž9¥Qe̱ͷ&8ƒ@_ø>äÖI»–IÖYZÅ+*KŒ”8ÀQßæ'êk›’Îæ]ÚÚÚógÊ™fAùŽé÷…bÍkq&—o7;FÀDˆ»rÌpO¼+.[;‰4›x ºÚ6%EÛ~c€:u©`·Ý|fW$ ÷ÅÁ¾ðº±Á@¿\Sâƒ}ÛH Á@¸úTv·V¸ŒGµblœæ™ ¾amXÛÞ™¦F™6mXÛúÕÈL×j¿tc%» §s–u^Éôªw1nUzw'Ò³„¤@ó–Îáøb¨ËlÔ ç¡5›5š¨HÆDa= ¨ç†tRS…Q·w_ÄUR#YÙ\ü c5K÷QÝ4rœ wZÔ½Õ®$¶³Ó4ÉD1!!W—?ĽóŸþ¾õψn¦³±ÒtÉ|ˆb#Š0þ ãw¯9­ËÍvæâ -+J—ɉHÚ¿x÷õ9­_†Ågq¨]7œ¦X–gŽ"ØÉùˆ=ÑŸ­oü)òln5+ÉLèÒ ‚h¡.W'æ `ô;Fpy?Z×øivR_Ý¿œ¾lkSGldüÄpz¼ûýjíž±©jvw·s5âìO5þQ!2ç,0¹Ï®ËE£jÚ”öW×s›å3áVBé s–zœúà_´Ö"Òõùí/nekµØ†GùD„råyÉàr­]×o,ô!t;kˆ×í÷9Üò³uVn¹8bsÛ§ZÐñF«c¤èñh[BMÌköû¬å¥f'*Í×-†'=ºu«ºíõž™§&`Ñþùí—å¤-œ†=rpÄç±÷®O]Ö¥ñ¤là¸Æ§€–ДIÇÜàœöÆxŸÄ2x†üiö“ãEÓÀŽÚ%D˜ÜGry>¹ {Y—Ä:‘²·ŸEŽÞ!À“®yú ’Â1ñ+¸æF辿ýj‚Æ!±©?}¸þ–Æ?*HÔŸ¾Þ©L¢Ù‹¡•ÜéØò1N¾'rùŠæ^ÙÍ-üʰÊdPrËês[þÓUà[ë„}¬Ñ»¾QÎqœc®hèö1<_o¼‰Ú–!Œü§-’¹ÇL«Úeœo¼¹ŒK$\gåäò3é€k¶Ó­šî鯮z¶ ¯§¦=€<{“ÅzO‡téuRMsR',‘eÇÝ#¶<{–ï]¾g&¡&«xN[T}—öñîOz×U ¸»×a K j‹ØžæºÐF¡GaŒÒÓéÔ¢Š(¢Š1ϵSC«9U#+Ôwÿ<jÈŒì†å+Üqü4:—*Ü9#¸ÿ8§tâN£½PzÑE袖Š(íÖŽôQEQEQEQE›²Øñ¢‚rih¢Š3E¾”Q@Á4¸¯ÿÙÿØÿÀ>ÿÚ ?õß ¯\¯\£¿ÖŠ(ÇQ@¢Š(¢ŽÔQ@¢ŠZ(¢Š(9¢Š8¢ŠA“ÞŠ(çÒŠ)qE˜÷¢Š\QEfŠ) QøQEQJ(¢õ¢Š(¢Ž´QF(¢šÌdôî})“J°§˜ü ûÇû£ÔûS]Äk¹¸QÔú{×-ï¨ê··Jíå´‚Þ(Þ0¥v¤ç«lxãåÝ×ö÷‹.¼‰ µY6ãiÛŸp[éŠà/çþ×ñÉŠB¸“n6’¹÷°~˜§êš}µÅô­ÂÁp’ŒÜþ;Ûò©üMalºÅž¨Š ãÈ8 ï?_1¿*±®ÙÀÚ®œŒqL¤ƒ€A >cõÞß•J-¢6æ}ƒp—Ç“¸È÷ÆER]5‡æÔ7nu±Y9 zöj¨±Œhò^Ӭǜ…#õçòíOL(Z„wSÎ6"­FòÜx×H` ›Â°û¡ç?›‘RÇæOáK}5¹cs¶?u<ƒù±Ïø™î#Ñ.>ǹå•xØá#ãqüêk#XI—H˜Z³É+²¸XÐ`ÀgZÏÕÖa¥J-™ßÈTA€.”š7Ù›UvÒáSc§ÛyVpwLÄïsïŒ~ð­-2æÕõÇ:5²›=6ÌÛØÆ^f't‡=Ï<úb­é’Û¾¬çK~Éej`³ šV'sŸsëW­í“E†îk‹––îê@‘ÊxÚ¹ÆÕœpN¼Ÿ¤ñÛ§‡tJI®[éØAü-AÁpNNO_¥ˆí×DÓ¯¤–᤺ÄQKÓbƒŒ(9Æ@=:õúY·¾K[ûËXеêÁ >‘oÝ…úü»ÔzT¶÷ãÃ_[E “W–Ú ñÄ%÷a1êÜ}r=)ñ^om¢ŒÉ©4îÇH‹†ÂcÔŸÄVFµ³Ó.Y’bÒDìMî ã8>™®vîa§L’G(c w¸cÁÎÏuØ´é•ã“-*ï`ǃְ ’v¸t,¦Õ#XâÆ7nç#±éÅgE$¦VŒ°6ê#éÀäv=8ªp¼ÆWF ÛªwÎGnÔŽ²YYH7:}Þ¤¶}zw=»b‘Õím*eÐðsÉϯNçùR¸kkG»OËÏ'>¿‰¤¸Yc„ùx0„`À9ÁïÎh¹I"R®ó€v°a’9ç¿zK…xãÂmÞpVÜ2G<÷ª÷H ±’5-'==*µÂ)„º_žž•^áCB]/ÏåYSÅöˆÄ1Ç$DaYùsëŽß¯J¥2 âÇÆ@™Ûï\vªÆ'ˆF‘¼x33rÇžqU,ãf»‘dùÓûÇ¡#Þ¨E2Èd泡¶ 4¡ÆåÄ{â˜Ûm®xp긌`uä~\TI ¶¹I¢Ãm9Çôª«"Ú]¤Ñ|ʧ'Ž=ÅvdÓmd”ª’Ü©6Æ7r{Žzz“Ôô/†2iP^5Ž©*¬“±ÄÍ…~7|݈éÇrk½ø~ú|ö-BEYe!R&lãw>£‘Ç­všÔº£¥ËCo5Å»oX“h€áœö 9çë]î¿/‡,&ŽìÛ[\^Û±‘!oÞ†sü!G<ýk²ÕßF´u¹h`–æ½c]½@à±ìçšò rðë‰xÁòK³áFÕgn¤ÛžË“ŽƒÅ|A¨ÿlêŽÐÜ™BmRí÷ˆ· öQœW’k·¿Û:‘äü¹Ú6‚ÍÔø3Ù{UÍ/M Ø ¤ÏcêÏj“O°ÚˆÆìö>õsMÓÄj·ϯ½_>lkq4Ÿ$HqœõQÔ“õ«„IM+ü±¯ö©?ZºÁãŽi\íE8Î{Ôþ5 •íÅîÊš-ÊÅFN>Ü–'Ð U{ky¦½Df£g]Á¾ê‚p öçqª±Cs-â¡hÞ"ëßurp3ù–?…w7NùXwÝ,µT€O¹$uíéÒºM[í-½¼¬Ë ðÚ*íTBv†oV9IãÓ¥oj>{,0Ê̾h­Õvª©8ú“‘×·§Jëm•`´CåˆÀ\à×­iÑ[éš$oä,ÅrªÄàc=N9â½ Ñ"±Óùb47¤œ {ÖlzܬóK$h–±•ùð{çó=+™Óü-ɼ»¹¶Xtø5¨$ÛºúžÒ°¬¼^÷ sq4 œ,Š$ž¹üûVÈé]À9®¦”QEQM–HᤑÕK1ÀɦŠÞšy(ÐeÎZd²Ç m$®¨Š2ÌÇ Ì %Æ³çÆ©äyCó¸žéŽœÖd0Es­ÿhÄÛ”Â_‘ǰïõªqÄ“jlŒåL`çüþ5uE¹g,<² *ޤ÷$þUuVU½’V`"ØTw=I?§ëVB¸¹w,{@UÏrjÇj³SRäQEQEQE¢Š(¢Š(¢ŠZ(¢–ŠJ(¥¤¢“ñ£ð¢—&”ý( QœR´””}h¢ŽôQGJ( ÑEQEQÒŠ)h¢“¡¢ŠJ(¥ÍRðh¢’Š(¢Š\ÑœÑIßQH(¢—õ¢Š(¢ŒQEbŠ(¢ŠJ(¤¢ŠFÆÃ»qÎj9ü¿!Ä»|²¤6î˜÷¦Ë³Êo3!³ÓÈÜ\ÅÌæ3olÛ]ÈÚBÈïŽßË¥x¾¼âûl1póIåa‚‰…wÇÿy–µ(·Åäqœå 0ÁT;ãóŠšâàÜJob$Ȳ©<<ô#åãÞ¬x–é¥Öç¿VoߪJ à¨1”ç¸ùF*Æ·t[S’ñK”,¼àaLdí>ãøÕÅ’Óbòòª'Ý!é°ö?‘ZÓ7Vw> Ó¡·c6¡ºìôòÛ¼²@ü릴²CÓÓO€äBóNØù·žyúiò[C>£ “Œ´crnlì ß68íó5 À¶¾Ôí$¹~6¬À3å‚ù`8ë±Iç¦O­2aÞ¡m$ÍÑD«–`-“}ªzúÔV—6ÖWj:€Ùs©Î0ç¹,|z(QšOÔ¢{û¿j‘6¡/•löüøÀ^=('õÍAa{ ÝÜëWê[ùv@¶üØÀ^=.Mex•bx#’à;[Ç(‘œH‘ÐÜ‘X—¾Tðy“ $·Ž]ï0'æÀÝŽ¸9R+6ðÅ, ,ÞcA¢F7ØÎ:àä=H¬•,I"‘å·$ìù~gÈÙ>ý‡åTGk#ÙÏ׊uÛÈöæ5ˆÈ’2¨ŽGLÒ^¼ncVV #s‘Ó5Ôi:rØéfæb°BÒ .g=ôÚ¹Éõý>•Ðhú?üJ ýÉ[{p²]Ü·ñü Ô“×?Aô­7L ¦ý²à¬žrÉs9?{½úçô­ÈmÅåÜRmXáy$mË0åSž¸üMnØAµ¯E8DKi'R–í÷FpÎy$œç÷5±i z¦©ÁU!yAH›ï2Œá˜õ'œãó­ëÈ̶’B„uÚ+Ðu[S{¥\YÆÛhš5öÈ®²þsa5º¦T(?U&·ŠßN6²üêÿxþz×-¨éÖ^ð»iS!œ\Ò°à`sÇä+îÊ×IЄªeYN\ŽñùTöò±mÏ*•ÿhàÖŽ…¨ÜM)šãP‰íØ|¾cm9ôÛ¦~µsL¼–W2Mv7û ·] 9é[½¨¢¹_êrCâJHm®Ëîò”’Ò£$vÉö®OÄË%ÿ‰t½*fqe*HÒÁä‘´góâ¹ÍyÞ}NÓ¥.-fW/°¸ÀÏâkR Sɰn0÷6€«Œýüñ5f=zK ýPÓY“8ó1÷_èÀƒùÕ¥ÕÚ×I¼yÀ–îÀ"çf:7ÐŒΡ²ÔP8j¨\ öþU‰iâMK^Û"BrÎ|ç?gZëWš¸ˆ±†-ŒrûV³Ó´ù.g˜áÚ¬Ùõ d×Sq­ÙiÚ3_Kqº†qÎî@ýI­¹õKK5®¤˜¢õíüéýÂÛÌöòí™öaW8'sgéÔŠžÞöG†)¥·xü〸9N3ógéRGu!Hd’ Í8S‚rÙÆ:cñ­ûFpqÜúUÇ ‚W¹ªË6Ñ’;ŸJ¥¦'Ö.4õ„!7I펽úýj•¾ª—ÍÞš±Öª¬ÎXrO8Ç^ý~µZAfÔî,–2 ¤¾G$öÇ_ƯÕú·EQEQEQEQJ:ÑE—¿ŠÛ³Á4™¤´RâŠ>”•ÿÙÿØÿÀ>ÿÚ ?õÞõë•ë”fŠ(úÑEÑE{QEQGz(¥(¢çEžôQEQÆh¢Ž†Š(4QGJ(¤(Àõ$ÓQ5!F%¿r"¨@@èI?™Í/Ju-QGh¢Ž(¢E”QKEqE”QT5—u°(³Ì!Y‡P¤àŸÖ¹ÏÜ˃äC?‘ö™)B†#óö¬oÍ"i>Lrù^|‹¸êœ??ʹ»m>8¡ y$&ÎæêI§k–Àev%P/sÂŒzý+ƒÒ´8$¹]OR’Ò|æ¸st؉D¹ /‡ð®GOÒaóPÔ^!§4¯;–À*ÌJ ÎãÐÕËÛõ‚ÓFÊcAž[€=É8KUÔåÔd% 1ÅëvßÀîI#­A¨ßË|çt%;–5í¿€=É4’ZÇq¦^Ú‘‚ÿ6ñÝw bqŒÖ†›¹Ðu›%Œù™$¤qåîëОâj핼?Øú•¢#Üd#ªnëÐñÆ›så[ œeþf©lpáÒ™w>û{{¢7JK¹ã;°Àþîqþ4—R“o Á¤;˜Œd¶8¿ÝÎ+›ðƒhÅpà˜#ó¨gØ£ÜĦGv‰Z‚]¶ŠÓÆ<ÆcÓÔŠŠM–§K³ž¤T¯'‘ndœc$bŸ$žDœž:Š{ÉäÂYØñ×5Èî Ã`¤Ÿ8&¢Ú—a¾ìŸ0&£Ú—a¹Wù5ÄQZ@¬ÄË´ñÀIÇô¦KvЩb¤0Áôõ<JŽX£·ˆ « O~+>q$‘3ª«¼ç5Je/ePÃoóš¥:—˜(a·€{Õ9£š}=Õ!1̫ǗÆ?ýz…Ñå²eH¶Ê; Õyc’kXâ)0l쪄JaXä1 ÛFz•Ÿë× S0]®SÎÝŽ}ÿ?•Qkv/í¶óÜþzúV¥ˆ¸ØÖH>^7dŸ˜py?©þµ§jgòͤpãw¸ëÏó­kO?Ë6ˆÞ3ÏQןækV&µ²‰”DK½ð9sØ~}«B&¶µŒ‚AX—sq÷Û°üëB6·µˆƒ±ÍÇ.{ †êâI^@aPC÷˜òzvÿUCwpò;€Jù˜ýãÔþÔÎîà€0Ì~ñê ½á{Q«^Ç47 4.|¨ÐG ríÏ~¿˜«±þÜÖ­m¡™åŽf B¦  å=ø4ý Ük¼pÎòE+m¦ ¨å=ø5Ó]jVº¬ÂÎÖ?ô{{Dª>fÉ>Ã#ú×M®k:ÌðhZd;HnVÞ(Q@Þsó1öçù“[Ú¦©g©I“e[xîÄ€|ØûÄû è-#Œ\4ªÁpÄ’Xúçüö®ŸD·¶‚úkô!Ól²Í+¬O=½=¾•¿¦Å72]*,vv¡¶ÊÙ&Bz±5jÎé.ƒÈ¬>ùUì+wCÖ-õ˜¥¹Š@WÍtE<|ªzþ#§¥ê0êQ<ñ¸+æ2¨ö­PÔ®DÒ‚]êªFPnÈç?•q¾7Õ>ßyiÓ›ˆ"Ô˜Æå Ëg§ ü s~'¿7W(ÖR™¢HÙIA¹CÉÏåúÖˆu$Ó4e»‘ü¤‘¼Aû¬N?‘Ís—¦ài6whÛ#q$coð¸nFÍaßK,z]µÒ·–º1ƒ÷_w?¡ÍoxrÜæ >Ö×+>I$…ã¯Gð%¤Ðxz;‰u/EÞ%Bùù*3î?Îk´ð¼°èÉ,—¯v.1"—ÏÊ0~•­]%mÓJ ÛÕW~Î9ÆzS k¸Èª¢B6ïÇ8ô¦•‹€7‘ŒãœzVºLõ•g¡2E"ä>ÁÏnÃé\‰¥´ðôbý“íww#cÅ(Ü$þœqéí\î½44lØ.'˜mhä;ý=+–³m`ø‚Xbò­ô«¡Ó “+ól^ßJæåÚ´î–ζš<Æ+›… þ¬”•G\{ŠÁ+té ­¾•7—q2†æ2W,ôö­{˜íÖÊÙQ#–%¸3:H£ uÏSVa{Y´8XšÒ ³3DêlcÿxóÓõ«qitÛg¶[h® ¦6\nÆ0©æºthõ+O.XäŒáw©R»O‘Ï5è Ðj–­±È2˜¬Œ¸=q’9ü+®ÌwФG êTŒL‘Ípž8×Þþo o•mî­ÕÉL«XåU±À¾•ÁxÏ_k-B ¸”ÚÝÚ«BUÀ$åU°G@=}+Œñf³å_Máwy7VêÛЕlr¡°GAý+KÂÖ¿eñOtÒý²}<‘½÷yƒzåpxÓƒZ^ ´’ cíWÏ'ÛnìCáÛ%†ñ’}?„ÓÖ—†­šWϺgû]Ŧâ䑸dŸNÀ} vÕÛ×UA¢Š(¢Š(¢Ž´´RÒQ@¢Š æŠ)3ÍRýi{QA¤¤ëÍ%QE%QEQEQERö¢Š­QëEv¢ŠRÑE!4QEQE(¤¢ŠQÖŠ(ÅQŸ¥Ph¢ŽÔQMfT]ÌÁ@êI¦K4p!’Y4YŽ5äHÔ³°UÉÀ¦ „*Ì7a{âª&«Ë2¬›"Î[Ë8ÀÏJo¢h䨙%¶`µÏÜK-ô6òbcˆ8P:gñÈçð¯/ñ«y®ÜOt&f³ÞRØgjªôÎ=ò2OÓÚ¸M^úëV’{)kbÅ çjªôÏã‘’~”—ë ºF˜ÙY ²’ØBq›ÅÒÀ|áè!˜Ìv«Ž„ þ ’? wŠ/øE4Xâ“Í8R3Œ)ñÉ"¢ˆ™mg.þlŸ» ’9ûÌ?eé¾lú5ØšRóù¶ÉàÎæQŸn¾üz ©§y³iWiKÏæ@‰ÐÎX ûü½*-^ýí-¦+nÒ;|ñ.@ûeªÞ©q5œw!"fà+'MêO¶æÿ8«Z„òÚ¤Û"f'§L®@ûdÖ½¬%¸]­ûË,L‰Ÿõ¬Ë UúåG•“¨j?fŽ"Z,iýòÁð?5zVeþ¡öX”«~ö×÷‘§÷Ùƒà~`UÏ A¦™)w˜4¤–Ü€O¸$qëW¼("Óíà2NC]ï[‰ $lB™úä©÷Çz·áµŠÊÖ óׄÒNU óï’§zÒrRå’Ö ÷aEÆâyÏ=q“Ó5nØÎÚÓ[XÄ~Û¼vñŒ¤ä±Éàœ2xöb#+jRCinãWŽÆ SÉnO󌞙5emâ…b²QVÔ¨ùwã?•^–Ò/bÒa@SN ®2­)ÙˆôÎ{v«­m w1éñ òì‚Â«Ž ãql}j¾°ƒP³¹€±ò1 Îåwõ~&³u»“©­è”k‰oä`l’09à þ5iŽ ·j¤²´ûÇP6\ð9㬯IsÛ$«'‘ ™ã@áˆ9Tç¹`1Øš¯¬,V—°Ç#HaµpZH”0,Bÿ¼XÈš‡VÛÝÂ’ Vì €“øÖ’¤rÚï!O8\†ÎG¶k@G³ó>\ç 3îGãWöFmw‚3»åç9sùÔ%ᘼ-ó–R<æ¡&ƒÄß1`rIÎj2b”f=kn t†«#™DZÚ†ÝaˆçØ|Ì„UIÄ1ÃÆ¡¾Ñ'ÉœðNOà W™#ŽÞ5Η®A9?…A0Ž8£dùÏòàuàœš¥%Ì Gu¯Ú\…rÇ1è=ý*Œ—….9CqÔôôFk—M—)™C£OAJì¬ï[HÒ'¹’$ŸfÜŠ ÉÀˆÀõÇÓ=n•©i·WÒCßÜÚ¶‚Wq8ǧN=zúg£±¾þÆÓî.ä‰òk}Ñœd®âqŠÓ𦂖ZZÈ~g(DeŽIï9÷cŸÀâ·~øU#ÓdÕ.#ýäèRßw'aáŸêÇ?‡Ö´üáä†ÄßÊ™y¬¹;Vú±ÏáZ¤¸htøfüóÁ©|oxLöžÓp²2´²¢à…$ÇÔ¾)º-=¶…gòÈêÒHª08R@üpj½®¡ …­Ì—N-íàŒ»·=3ƒÓ¿NzÍð^¸EÔße³µ¶2»`ô݆´šn› ÄPÿh$¦ÖÛ2G—v“ÿŽûVä›é޶ yPîŠûÅg Ççú×M?ˆ&ðÅ©]GÉ@±Ÿ³Ù¢pÊ¡Çp»>´ú ¾Û³…÷6ʸ8aÇ ܵnmbFŠžÕÓi—ñêšeµü@ª\D²zŒŽ•¹cv—ö0]ÆIãí‘Ò Õu[m"ÎK»¢Áw«“ñ·÷©ajóº³íQ’h¼»ŽÎݦ1 3…5‰«Lš­­üi'Ù$ƒx-•1{œŽ·Jà<ú°Óo…¬©bù’È[…RÀé“ÇïÚ¸ÿG.¦,n„-šÇæJäà*’8úŸóŠç4†ò@†ñÉ@Ò‡rœ=9ÿhõëOѯ-Ÿû>±˜¯Ãƒ*¨>ÃÐ ~tý2xYm#QËÅbdݧÓûÖ&–º¬^"ÒãËΉ!®ŽLn¯¸pN)ǾqÏ“á›J=nà„: ñ+àm‘>q»qÆyôô¬} ßS‹Z¶Ž(sc¥f#î²ÃvãŒàŠôí_^‡K:}³¾gÔ%X£e\œÝzr?:ô}_Wq²‰FéogX‘¶’ª cø+½Ôu5±kHG2]ʱ©Û•Q‘’:áüo­´Þ-Ž×OÍ5´EKmùcfe\`°Æ2p9¯>ñþªnÿÚ ?õßjõÊõÊ(¢ŒàÑEQF>”QIÒŠ)h¢—QIš(£­QE”QKE¿•Rgš(¢Š(#½QEQEQERQE/j(¦”ƒž£¥0†Q)eöúSLj\9aÓÚ¡¾.ÊR;Œ {œVo‰®>ÉáÛɃ³`ÇûD/õªZÔ¾FpóhǹÇõ¬·}–o%$Ü9ê 1üã^o©¹Œiö±²@k ʼ…ä'Ó É®6>1cnŒ£AH¼í]…ÜŸNqÍM1DHUÈ¢mËÔœœœŸ~sPx‚ò×ìÖ:}¢4pZœ¦I-“““Ø’I?A­Ü[¬6vVÈR+vÊõ'''ñ$óH¶è÷jÀÝ à /OÖ¯ZÚ†ñ0$I‰çRpªËsîqW ·W×¾P±yL0ÎŒ‚9÷8¬oY¶µx–I›™ 'Þ8ü†Aü½ERÕ5[at3°Œ¡ãLnäñôƒùzŠ«¨êvÉqL[ý)ÕY8ü†AÿõŠåîšÚêôjÊ»Ì[¢¸@TcýÒIú×9u$3Ý%ôr.ТV' `£hÇû§?aÜ43]-üR.ТV,xV 6ûäþµÒi–×VšHeÞÕÒÙÈÎ0J†aë»qǰô®ƒKK‹[h¦g…Mž›7Ù €wVaýíÅà=+bÂ+‹kXؼjm¬$ÄŒàî*¥‡÷²Iü*Îm‰¥j·Ïy1…b±×'êîÇ©è=Iè<+§Úxg@“Æ:ÍÛÝ\ÍU½‰ÀÕØ‘Ééœz“© ÙÛø{Fj·os<‘.úÕ˜‘ϿԗyçNµ“U»qæ}ŽK‡P3¹‹a?<œz¥hϦÙÏ­ê2bîçOžñԌᙶÇù†8þÕ»½…ŒÚ­ëâæ[)nqüLØOç€*kMó´q¨ ÑÆ$uÎï\çÜ“ÃÚ¨xxM¨M¶–5µ·9?6pNâ}رü½ª®†d½“lQ„X!Äóœ’}É'òö®K\ycÕ¥¹·-4«2À~b!P¨¹'?AëΠïö¹nmËË(WibnJ¦B©tÉcŸ üro]…ì—–’@¬e‰¹*¹ ¤Ó$œý>kd¾´’Õ›ÉbÀ”\<SÉ ]Û=»f,2ƒ‚x¬I][5»$eG ðáQØÜCsoˆHÁÛOÌê1ÍEk¸lôöëXzÆ¡}§ê—qx"º«"%;A9ãœ6zzµZÓUU‹L‰ü©¢KIžEÀ”m mõéõç2Òâ®äÎÑo ±‚)’[AsÀžz©or©:©öx­ÌQ»';±´< sÏO­O2Çý»¦Gev±ÜKvì—ˆðHЖS‚9cì+GyÔàÓl´ÛˆÄÿ%´Æâ0€F8Ç89CŒ2y«e…Ü–Ö7(&*Kç  @RqŽÇ*qÇsÍjê«7ˆ|tÑÇ­ž›na3Z@À¶={ }j÷ˆ¼IâF±…-¬#Ä’n€zã­\Õ‘õß=¼EÒÞÊ=®åƒqž¸é­.•fž Ôn/ôûF·kKѯp9ºMŒN9åÉç®}©özRê—¦öÀlî¶JÓÆå68 žç÷„Ÿ¯°§Ùéé©]›»5(m®vJÒŒ›„ØÃ“ß—'ñö®ËMÒÍ…ÕÔ¢âGIʰ€Ú§$wç­uZn™ýŸ,î%f6í§ =ÈúœŸÆº+±É3‰]„­»iÆ÷ÇÔóWç†;ˆZ£Y#q†VUé#Ic1È¡•º‚2 ZtY£¨e=Aúu:Š(¢Š(¥¢ŠJ(¥Å””QÚŠ(Å(¢Žô´RM%u¢Š(¢’Š(¢ŠZ(£µRÑE&:ÑE­RQE(æŠ)h¢’Š)@¢ŠB(¢ŒÑE%RâŠ(¢Š RQEQKESQaä'' w¬ËöZ[ÈÛi÷'…PrOòüë/_tûÄíµ]Ææ=GSü« )fQ)–Ý¢+´aŽíʬ·ðÇÒ¼öY¦³{©^ÚX`¹·–H<Ïâ€Gã¾ñÓ¥qòM-¡¹‘íÞ¦†G„?ñ@Vã¾ü…ZfŽT¶¹@JI´meçp<ñߥMz¶s¤khÒ[N#ÊI'ÌB;çoëî*K‘m%Æ›ªZ«<ì;] ;Ôò1ß8ýh…ă—,ä~À~ø ÇöµÛ?LÏ+þ×$ûvP=ªX|åÔnKŸžBîsþ×$ûv…qþ!oµ8áHÃIæ2‡#;Fåsø¢Ÿø ak ^Þ…Hs!Ägb”m¿ª©ÿ€Ö>¬‚òícÙÈV#;£mýU*çÞÕ-nb²LÑ$¡XpXˆÆ1ìŸáX3 m‘Lˆ¬8êHO䵉<"ÖÙȈû~¤„þK]íÜŸbµ{‘ ³Â¯¸$C%Àlc®9ý{æ»{¨–ÖE¹kyf·b8b^X`ÛŒçㇾk°ºE¶´42K !’(Ç$#ŸÐûÕ«¯&êXl|ŒÚZ1bEåðÞ:÷ÏÒµõ¨µMF [–Ó4äó~ÏÓí_`ó‘õçÚ¯ßIýìZ_“ºÊÅ|ß!™J”c®GÖ±žUº±™‚›Û©&”³mM¢FP‹è£qßó\æ£1½Ò]‰k›ûµI§f8P›ØÐv È~¸÷¬KÉ æ˜äsypY™ŽÝäQØ)OóšÑÒ®„¾¾¾„¥xü휰@ÉÆ}ëkMš;†º…Ý’*\y­ ˜®KÛx83cñ­+’ÛÀ×w6`$ÛÚ/4¯,7cP8ük:m9-å_9Óí2¢D% þ°p§ÛqÎ=1X‹§­¥á·™‡Ú'TDuçy#åSí’Ð ÏKmtÑHËç̪ªãøÉ퓚ç-Q6í~òÇ)Ž7¸ñ½$mÙÇp ûŠÈ·‹P6æù¤IJÆåÉé½\îÏ©IQYvÂøÛÖu“lm¸ž›ÕÎïÄ?˜§XÙyÖæéÛËYy„/c d~yüè´µó­þÐÇb¹Ìxì„ Ï4¶–Þlhc±_˜Àãpqùæ¬35åÛ®Tå á0p1÷jI¯/œ¤Ê6˹‚ŒàzTŒæîíŠNYrÁpp=*{©þÅܤbF²޾•=ÅÁ²D¹µ»n G^j{‰¤kp‰½¡9 GZƒí ©^Çnïõ§áØâk‹cy $osN±ŽJO'è¤Û5¡¡¬~e¿Ú¡HÕçHÙS©\Éú/?ZÙð6޷𓸆ò/ô·/.Ièdàã«øfºO†:Sjþ%»ñâ,Eœýù3ü€?kxLþÑ×®uۨǜ…›'®çÿ?Zëu¹JY†I™‚`u?çük­ø‹5¶„¶p‚Í} ‡©Ï?®1ø×IãKÉ Ò´@–»qSŸóŠÌ´‘V9—ËfBv`rˆÁ#ð_×Þ¸]:å-tÛèáŒË|…ÏI$eðücê=k—°-ì.ãŠ#$!¼{Hì0Ì?Ÿ½>Y38‡/š©Ÿ¼Çú:¹4­Ž›h¶¨ƒ`ºXA9’FÊ®p3ÓùÕ¹$1ÚØÛ­º¨Ø'XûîÜ.çO»[Bê vHZ bià©à’ z’Q]Dñ_kS[Ø]ˆL^Ùæs‚¯ò³QêX-nOÞ¥46“¬F›f‘Ž ·=ɯIö]"È–ŸÊHט “þ5»äiÞÑYDÆÚÞ%9sË­i˜ìôM0!‚Ôå»ÿú넵ÓõëëtÕœ¼1 „Öñ’pê¶ŽÿʼÎX5=*Ê jÊE»ÍæÃ½ƒñÔ3àsž½«…h5+HuKhä´¾l@°~:†lsøW}o}DÛKÄ&`yÆOAޏé<‹yƒm8$¾1Û#¦¡mt‹kÙü±5ËÊÖÖÄœ„ã%ýðqïUà··Òb¼™cß;Ê`·$ä/-ŽŸÄ1ïVµK$–îÜÃ!ŽKyÞ@Á#;@>¹ÏçU­g¸´²ûdrºJvÐG#¦áïÉæÈd–D»YdWÝŽGLÌþuÐÙ[ÎÚ\iè‘]yÞdŸi}á›ÍËö8,3ÏmýzU´36‹Κb.É#µÆX9ß–Ó<ý t®âfm.)¬6$ìêîf;·üù`}3ÏÓuoévÍÚfi ›‰ŒƒÐƒ¿µnXÂcóän²Ê_ØJÖµˆÇæ± ™$-Àü?¥_j§¥¢Š(¢Š(¢Š(¢Š(¢ŠQE”QKÒŠ(íER×ÿÙÿØÿÀ>ÿÚ ?õÌ×®W®RúÑE%Rõ¢Š;QE%Rö¢Š;QEÍQü袌QEŠ)MRw¢Š(¢ŒÑEQIÚŠ(¢Š(¢–Š(4QIEQESÕû6w¢€Œã5ÎxÚ7m H³Á²DÌÿ@8äñÒ±üJ¬týë,I´ç7zëô¬R«!Á/Ë“×'ŽŸËüŒù“Å%ã±S$͹²2XñÀúž8ô®Hžè±ä;•[ŒäñÀüx©áimîRÎVMÁÕq­œdþô5»h—úV±c¢ÊÑ™(¦Ž2JH“ì>¸­[U¼Óõ;]*R…Ò(¤DÀý܇‚síÇ×¹£‘¡H\oSØu÷?Ê™)·K›Èà—ÍDÔÌ­’à:û±ý)]¡ܬ/æ*ÆÃÌ%€u÷'ô®^áâ¶¹’îB2ÁW8ä°Ü3ÿb°¦dµ–[‰œ(ì7 þµ“)Kw–áÈÉr23úÖ•çêw–R…8—]ÜÈ8-Ÿûç@kɤ¾»¶pžPK‚Äïú }dY™/ní¤Ûå*¹,¤“¼dùcA^‰Íä"B(P,À^@ëÇçí^‰`L¾#¶–òQµ•º³—pIÈP݆F2vö®ÚÔ—Ö¢’åÂCk,]€¯;AíÓǯµBnUõG¹„€⛎“žØöÀª6º§Ú¼ow¨ØcË:ÿ¡@-Ïl)on>•NÚü\x¢êúÔ-•–2Ý0e¾˜R*̶†ÏZðôæÞf·q’ª€@WÇ ñî{š¥kýŸ©èWÒ=ÁŠImÁŠ@¼€ Ðu{žæªÀ,µ éüóK1Èc§LtãÜÕ©Ñ­´©ZÊ,í|¨T«±ÝŽÆOLwèm[G$ž—ËbÞ\ŒÏ ±…)#äã€0äò6ž¹ÅXXèr•;¼²Ìñ0Ú€vç6œû½*®™i+hV2O1¹™JË‚Iî~€žO< ¡¤ÛI6›óJÓIÀ²2íÜ{±ú ó×€{Õ]2ÞI4è.ÞC4‰° q¸÷oçïÒ¹}VæÞÎTÒm.žÙ"äd@Ç÷¯À,IäìçÛ5“¨ÞÇoMµË[Ç#F€œÊçcÜìÁöÍdßÝEoZeµÃ[¤p»”PNesÔžç`ü3W"žîHcXb Û†ŽVŸe#éSÅ5Ì"Edxr’6=J·· ,q‚QÎàGÒªXO¼xìíJ!r%˜áFìr{ä{qUlž6ºxí`(¤‘$§ së‘ùU{7ŒÜÈ–ÐBÄI!À±ÏÔV¯–§åqóŽ˜ü+DÃÎÙW £¸ÇáWÌYùd zU…®Ôw¡ûÏ»ÿ·Ûü©#ˆã#%‰Æ?Ƭ"Ãò£²¢c,ÙÆ?Æ«Kt¨¤£€‰ÆHÇëT¤»TË|"p1úÕi.U2Q¾Uàb¹½CZ3\Ir˜ÑF Q–cÏåÒ°u \Ë;¨”¢Žàd“ÏøV þ±æNê%Ø«Ç%5=ÉRóz¬‰¿§©íùVY¹,q÷=C®î+)¯7«én>µº¯<»qó¸À_N¿çéZèÓA>¹gJÛC43áï8ééLÔZ[éï,âXÝÖ0Ñ€IÉà“Ç_çL¾i/'¹µŒ!ePcìO^§üõ¨õ–òK«h•ÕŒp <õ'üó]%Ž“ö/ Ù\(cv–Ó²+Ä í”ãêk~ 4Ó<=¥L ‡ŠæPƒ‚@U$ze8úšÖ†ÌXhz|ªI¹0Îà1È®>ÙA©®ÇÂöÍk£Eæcs¹½@Ïé]ïÃk&±ðÂܾí.dfcŒ¨àóé]w‚-Z×ÃñÌøá·³ã 4kPÏ%Ü;Ú€zrzþ‚³¾#ÛêzµŠÀŽ"XÈI cÎ}ð?*§ã[{Û›ûEX Cµòpõ?¨Ð¶Ф_-‘‚ÌN8Qü«!…‘ÑtË}5ÀÌYFæ¶Ð@ú©ÀôÅPQiý—c ‹³(ÈXrÎ[þ`à})“«.¯ ®ßœÆ\íUS×ñ#ÿ¯W®té—ÆXbZ!’DjˆG8÷ÁôÉïÞäöާŸ¥Fòƒg x/"©*å?w'铸ŠÂÕ/´-&Âe{E±“û°Çé–Ç£ ÆÔ.ÜémŒƒ}âFX`U ýØcôÉǸ¨î4†‡B½º‚’òú3ö‰Yñ„zþ½tòi×€%¼´‚9®uˆ½ºi+ gØ:óëÓ~k ìü!-Í´I-Åôx»¸gÁ€qŒûvëɪpçŠä–ò9þµ`Å4Ûž;œ´`2: ßÒíâMF\DÑb*sü¸ {ç«gojS©£Š+!þâ7Ê@÷9ñ­]Ba±£Ž5Úÿì©8 {žãZË=ÕÅí÷Ú¡‚(àPc ÄîBJ¡ä`týúuÞîo/5›»¨íãŽÖ0U’ ¤g`€G¿=1i^âæçTžê8 _•P’ œªcŒ=ùô«r # ™( KÓp~_ʬ,1é‘Ú,©hQÃàaŒªÇg=¶àztülc²X(‡î” c"Ÿ—þùþ”–V6özcÚÀ à $c¹Ï'ñ$þ5•¦™{aþËAl¬ZCÆO¯V5 ¥µŒv71Æìñl)XðIõïM¿‰åÒîaÜ#kÈäG9ÉÚA~¿Ž v§çYi3.èà:¼žr†Êm!rLçêw~j[àÒæBÉÛ “ÍüÛq…úuŸáRa!Òàµ@ä— Ž£ùÊ‘SÂöd(DÎÏ5À$ «»bñï€qè(Œ„Ðí,"R$;¤˜í£|g‚¹ÏÅõÞ9­mÔ†ÞàK1rXãÛùS/.%‚¶É¾i2ÉÑ×ùU{™Þ˜@»ä|…2ÿö8õÆ*™¤†äÒ?Ý2ú×7{©Í4Ú@Ï<Ïò  ËŸïzooΰ®ïæšHm¡-,­…Qž\úÿ‡µ`^êRÍ,V–û¦™ÆAåÏ÷¥\].ëHÐ%°ºÔ _bï;²xÆ0Á óÏLUÙ4{>[kh-¾Ù~#2K°ÃdñŒpÇ$uÉ銲t››oVÂîø!’M£~'Žœ1É}±Tn#}>êinŸlŠ˜”‰:ןק®(KnÚeü3®åR²í|àúzþ?ýz¥$M¾’IœØVL?ŒzÿçZ6Ø{·™Ù™¢ÉúO늹Ýs$¬K#šÓ·ù®VbÅ?AÍعa"\$FWt¤üÞ}ÏJjZœù‹:ǸæYQè¹éM­“"̱ïoÞÈ~÷°æ»yWm’2ò=sÆÐ1Ó×̚ݽ‘¾È’(t"(ã€mÆ={ýI­‹ÆahqóF#DÏoº?Çë] à{=&4?½p°ƒïÀ'ù× ø‘_Dð]ž‹løž.Ñ_°é¸ÿ?κÝh>—á›}.ݱ4Û-Õ½:n5Y®I°X<ÍÎ ã“Àçõýk˜ºÖäoǧý ¼‘É$JHä³àD}+çTcáųï‘]ã6óŸø©tØ#2—U'n géÔÿ?Æ®øM·žéåhŒo†„1à0Çó&­xNÆ•œÆÌbÁŒ1èp0Oó¦Ã ⋉O1‹o-›Ü•#ôÏå[–6’\x÷V•É1-ÜŒ|ÇaþY­;[w—Å—ò±&5¶3{§üj¡’{dakk­ŒOp$þDÖ=ø~¾¶Y#‘­.ö†ô ‚CïY·ëö¿ÝÂŽŒ`¸ÛŸLOèi—÷²d¨ox! ã̇ü3Ȭj·èZmƒ[a-á ‘þô¿(Ï`yãØsYºÍü²iVžND¡‰ÛïIòŸlóZW¶|ÖÐ 3fQžW;z~UÓø£ÃóxŽïJÒã¸Hc³ˆµÈo¼€…ô'ŠÜñ‰&»q§Ø$ÉvÈZ|ýå/çÒ©\B³%ÅÔF¶ê‘+ήO~?¯5«¬Zž—}¨[^Ãk”c¶· çå ÷†OV#hãÓ¬íLE}§Þ^Áw¼z~È"Ã}пxg¹#•QQ5þ¡å¼ÆÌ®ÍÎ;žžõÇé¶×ž+ñv±Èï-Ãnšgôþ&ü»~ÉXEsâ]}má‘Ùæ;¦™½;šß¸· PÜÝ•U¶»wàÓ=±ú×§xƒDWÑlí.µ f³‚V†0|íªO`§ó¯CÕôµ}2ÞÞâôm¡ÆBù»TžÀ~µÎÞ[µÅòdʪg¡þxÿ"¼Žà´ÑÆÀá‘0¿Lšó+¢ÓÇ)ÚÈ€/Ó5µi|:¢fvv‹z—nã3øWª(ü:ŽÒöK‰^{_=FÎHù€Ï ô=kÒ<ïGÓÍ+Ël% #rOÞÆ}«Ï®6^É­Ú[%l„‚K1ñuÅrÖú‚Ec}§ÃnDR»òÎ~ Æ¹Èn‘l¯¬ L<'Ë“¾â@=~ ×¢øbú[ÿYÏq—1Œy‰Œ`שè7Òj:-¥ÔÑ¥’%gB1‚Gojïô‹·½Ò­®%Ë‘ãRËŒ`âµóZvŠ( ÑEQ@÷¢Š(¢Š(¢ŠÅ袌ÒçœÑE%“@ÏjÅÿÙÿØÿÀ>ÿÚ ?õÑÖ½r½rŒQE%QEQE¨¢—µQEp QŸÂŠ)(¢—š(£?Qô¢Š;QEQ@àÑE%QœQE-RQEQEQÇ~”„…’’h$’pdjAgœùÀG9î~€Wâ—¶¾ºwY•Ýʉe²A%þƒ×Ûë›× 7S±`¾Z*ŒŸRßAëUKÁrJ\C#E›¹ù¾^së–ãÒ°¡¸‚þK‹i"‚8--Ò鋦íÎvd“ÆI-Æzv•ñ]Ë5¼‰Cm \霱ÛÉ=É&©ë”ú|P‹8 ÷¸UF?qÞ§©ÝÈÚli-´5ÍÁ¿–~¼ c¯­Wº‘¬9-¡2Ï;¡ÜCË?°Æ+Ôn¤¹Ô®m‘!µŽÕºeüÐqôÚ§ñ¬››‡šæxQ8àH¥^Ùo0~J̸žI®ç…QR8)AèKo’þtírxãµO$§Ÿ$±¦ÖîÌËÁÿ€äÒë2FÆ"+çHê>¥—ûçš~­*G b"žkÈ‹ƒêY¦MYÓ&S-ìòL˜Góqj¹ËßYüªM,¼óݰxÎÒgÈ@Q\Ù÷`ß…:À™d¹q$)2¹rBªØÏýõŸÂ¶cÃyÖò ±™œç~n¿ð2>«ÅlÀ ^n™pDÒÍu\Û·íÑŸøºñZ‚…ìe>dp†s»ví¸cÏü Uª†þ3xÖ¤–KŸ'zŸ”¡˜“Ðc* u'>‡%‘^y­ÉÍÜ÷^LE ®Ç°ÀÚ£¹ü Q’eid¶7\£(p¹' ÀÚ uãÚŸ5ÕÙ}:;O8Ë:£.HYœŸEãóšt×W÷ú\6bH–dEq–yÿ³þ–sÜ]ÞéñÙ[ !¬j™  <‡éþzC ÚäVJ£ÉHÞc£nëõý m][Új~<·Ó£›{xØË1Á_”|ØÈãŸÔÔ¸K{ïCiC ³I/~^¿¯ò5_H¹mBÚÎòâ"2ù¾V7ºX¯OÖ¨xføjzÅ´óÆ@!§òUw–!KïÎ?Z© ^‹ûûiåB¹S/”£vNÜãóÇëYÚôÈ"™Ya{w¸ #9#ˈnA–*@_j†öêØè™"{Y.÷³9#d+¼9®æ úûTW·m¹Œ¬mn÷;Ÿ#d#xr?Ú €>µÍéM4{‚)XÑùr>çC’9öÚç\ö˜dMÁXÕØí–Cœsí€+MipQˆÕ0Û,§'¯¶m¤ˆ^H7bX0$^êHÈÏá[`l‘íÜ…– yŠ9*HÈÏçZà#Àä !ÀuT‘ž:§u­»M3áS¯©ôýj…íÂ[Äd‘¸^©ÞÜÇm K!á_Jç5maâ‹Yf\ùyûŠsŒú“éÐ}k QÔ¸yÜÂ;}I¬SUhcàH9LýÑÛêOè+;@Ša~—ÊÌó–Ûæv;€8ìO¨õªÚ,3­âÞÆû® í·P>gfÈ€ÇSê*ŽƒËv/„›î¶@1óHÍ;;úŠô»[vÑa‹OÓå,D,² Òç–lãÓ¯¥vRMy¤Ë‰£Ý#·`“H·í3–f#¸éì3Þ»×Zt±iZeÇ“ GSƒq)?369Æ:{zóíXÁ%ìBÆ[iY 2‚Äy’mÌxÛÔ×+¬=³ÝÛÅjw@é$ŽÅw2>Ð[ï—oZåµF·’òޞݑårPn9w*3Ôñ·­hCŽÐK#ÒIì=ß…Lˆc´9Ÿ'>Ýÿ¯Ħ+A#òIì=jΗlfKK˯•P´©àN Î?™§Ã5œW€:¼hN^ Î?,P´–q\ÜqŒ¼hxž Î+¾Ó`:•º¹"‰Y»Žý ³ù×eá;DÖùþ•Ôh«¾§\Ej‘§Ôà–&²´-BMV÷Z“-aDŒ îgÛ–ÏÓ ~uKÂzœºÔ¾ ºem„†w;íç>À`cëU¼=¨IªÍ¬M„ë E`æ}¼çô†úªÅw˜`øþUµñ%‹QÑî•ÊÆækG8ày‹·?Ïò­#¥þ—p„s%³ú1qþ~•A¥Š‚ ²¬H\±9á\©¹ÓtË2ÆM. AÜ<™Ï̠篰MÅ…„ú}ƒéðÊ¢Úg|çæçò§5ОÆâ/4mÕDñ‹¸ }ð¥u¥êÏ¢]~÷d–ÉO ýÔW•ëo¥t7×K.—p<À¯¢ÍýÕ 2û€{}+ÚEws©<ò ®†Íß)Üs’?½Ó°ìô›Iµ ä“θ•”D_å99ÉÞéƒõ‘m¥Z!–úYI<Œ<²ß)ÉÎHõéƒ[^76Ñ\éWLÓ}•‡—>A „p¼t c>¹ÏÓ»ðÁš YtùÜÈÖ¯µdìTŽôÀÀ®£@ó¡‚[)˜ÈmÛ 'b§ AŠèÅmÖµ¢ŠCEvuy58 ´Ad|· ó99ûŠ¿N¤úÕ“©É¨Å ºÅ¢®ùgo™˜çîíÇSôªSEõâcŠÔ.é&o™˜çîôê}ÅhóWªí/ãEQERçéE%ÅPMRp¼FqFh¢Š R}h¢Š(¢Š)GJ(£4QEQØQE'4QEQE½¨¢ƒÏ4QIE¦Š(÷4QIEQEQKÚŠ)3Î;Òdn¹£#8îh¥¢ º*yižNÖ^±×± H *³#€뚥¨$—( Œ Ãz ÅÔe‹ÎÂD‰Æãž @ϧןx²æÕïcÓtÙRx¶:@ÙÜù¾žÞ•ÈxŠâ .ã±²u–2šÁ¾ñ€O§ùíL˜¥½µËH¤‹[c,€™ˆ9Ú äâ‘-­àŽþÒBU,ìD×"5ù¦ulìÜA<¨ C 1Þ@ùÛkj$›Ë^ee9Û’ ëúÖmö¦%²K¹­ŒN`bNG°ð*©¥K³MœÃ¢ÜLw³–î$þ øvvc_IRÁydoòãõ®ÏÄ%…Ö·Mþœ`þ¾•=Ƨoaskb˜’ñ±*Ù ,[éÛô«_i‡I¹Óô»O.KåŒZÉ*6@ÜìÄlœgÛgχM¸²Ó­Ê=ØE·iç$’=³Ç኿u“$ШÞì»N=6œŒ]ÿÊ—W·m#S»²´9¸òʳÑFêL‡ðÅ;R…¬/n­­°f(C0ì¥rF=Isøb©Üêé¾rFdžG6¶ñ®Ai¹8ÀdçЧ£]G ØO©œ<í¾ÊÝœ™œã“ø{ÕM:â=ÊKÒÌìÖªK¶\c «0A'‘éå¸0º’daÑGâ)m¢X‹ÆÖÑÌÍ»¡c#`«øÞ¤…7#@’†‰¿rÊIvà€?\Û=äR æ\Ìêò1\V<Çp?c3]Çs’<ˉ™^F+†9Ãc¸βósý7Ï++HHà=ÜçZqÛC’¼JCÏó1ÉùOÓúÖŠÁM#Åó|Äóóc?ýjúCM#Æy¾f$õ8ÆJÅñ  a°c#¹ÛÐ~u­¸Xã‚÷c¹ÇAY:Û*Å커ç\áõyžy›Ë‰Ÿn3¿Ê¸\öõésXM ß™.n$ò¡-…#“3d /ÐËë\ëÄÚ£½Ôò /…aËNÙ…öõÿïü1¤%† í[† Wkcæ# Û"£ÜŸJìd[uÛ¹› žÀ¯5è:DfÝ`‘Á-rHAè u?_ð¯Mð6™ý™mg{9&}L‹ýÈÀã?^å]×…,~Ámos)&[ì•_î Ÿ¥.²RYˆÛ†…@-êµgüF’ÝAE‰lB+Iýå“<~ÌÕ?´W7„+% P_Ô>xüÀüé,”5ùóÜ£¯rI$ÈäȈC•ÎrÌÇ#ï½3ÃЙu³#¶]#Ãë’IÈü¿Z¯¢~Û¨B ‰ ¹˜`˜ƒ´®Zе¦¸¾ñ"&VW·320ùüÿô*›JÔüÛÝn4R$hŒ£€7‘òùÿ:Êð“K§èwWó¥uö˜¢aƒ!~Sôþ•KÃ7’x{Á׺Œ‘ü·÷bâˆÆÑòð/ÐÕ?O&‹á‹»ùPí½¹ûDQ‚£ òŸËô­5K}¾|IW7rù“l=ÛôúÕ îãÕâûBAw—%æòSŒNXûqõª­q£š8#†æî}òˆ—Ž{·éõ«:dIöכ˒I"FF~XôÆ;Vï‚íâM^ææ+ æ’ÎÝÂLÒs#gvö'ŸÊµü5 &£4éi,¯m (•¤åÛ8Û·¶j{­CÎEO)â`¤²°èpFõ«ÚŸ‰ÛPh {m(ÝåIy P(8êrpqW/5¶»d‰íÝ£FiNH$ß­TŽ(Ñc D ¹ƒ¶r{§þ5ÏØY[Å5œQZ=¼>g:Êû„‘µ?Ýøô¬{+(b’Ö(íÚw™f6w·ð¯Ð`Oºk+»ÉÊ3"/+ž¤±ÛúQxg\oß뚘†IaRÞ¬YŠ’{`ü궃ªïZ¿ò¤’%`¾_«8ç¶0:°úÕê–XaèA%†r{`žýúqZx¿Zñ ¿ž,-­ôøœré¼ÈþŠOsŽ*êx“T×#3}†,bqËÅÛÑIã#®qÅRßPŽâå#?gF*dSF;zU—J—W7ZÓBVÞ È„ÀQŒz“ïM[©4ú«Gˆ£b ©à€1êÆš¶‘[C,‘©Üåfç| }8ñ4š‚¦D±Èëwq+uÁ °}WåÏÔšmäh–H#}§Vº3Hsœvà üꇋ繵ŠÇìÈDŒP n9ôÈÏ·JO¼ö­¤ˆ#*â(ƒ<1bO×'=ºRx–Ií›N!¶0À ã$Ÿ¯?¥nx> šl÷0Žæåä‹qÉdàÏ|Oâ+м2¡´ù.Q Çq)xÁêWøã?uº ƒdóª•Iå.™êW€ãŒþ5Њح: QïE´QF(¢Š(¢Š(¢ŠhÎ>lgÚŠ)Š( QF)zÑ_ÿÙÿØÿÀ>ÿÚ ?õÊõÊõÊ(¢Š( QE-Qš(¢Š(¢Š(¢ÖŠ(¢Š:ÑEQIE´QGãEh¢—½RQEQEQEPFF(ê* ‡òÔ*}çè¸ëÐZÌÕ®>Én"·æi¾TŒ[$/^ØÜ9ªwò˜" 2I ï’^ÝEb´x¹(À…\©+Áç9ÇâߥyÊ[mÕäŠto*"arƒæÈ8÷ËwþUÇ$jR$Ê|¸ÿtvŒ›9ýZ¨5ôm¨Àȃí’6ìrX(lø‘Ï ¨EÔ?Úë²*ŨOó89,íË錰çÚ¢YášÇ*¥ô¿3’Àg#é’+Ÿ×õ&ŸY[;7ùƒ’¼•?tä ?ZÉÖnÚm[ìöl21lÁØ~éçéƒõ¬ÝNì˪ {b.U¢Ûƒ´ýÓýÖ‡‰n+H¤Ì«C ¸™(¤vѹò£S€ã Ñ GýÒ)À=Æ85nìÉj–’G·kù†lB}p:³t­iœèF$I‚Ø„ãõÁ©®ƒ[%´©ƒ½^LÀ/®)¾»¹¼ÒL÷;ZâN€\ôôì}?:«£\]\éÒ±Ún'ÐmÈã 9ôªèóÜÜéÒ1ÛçÎ'  c ?@k{[žÛHÓg÷²@žlÅy €í’FÒ»}›BЭôk\K<1ù÷/÷Ѝã§mÌÃé]'ˆZ 'JM·IbŒË;c$.1Óݘ`Uk­B 9Ë’ÒÛÌXò3r ö˜óëY³^%•˜OÍ:È<)€IU›ØvçÔ ¥-Ôvv¸†höØÚ‰8ÜïÊ–úfüj’Ù*6ƒs:*]^4o3ž¡tÄo—÷¢×JŽÆ ÜÜâ9®B]\;}àŠL§>ØZ!±ŽÎ}iÀI®Í3·Þ ¹”ƒù~µ´$ón®%|ƒ"<ª¬y* þ҉ơy®êÓ!ây G<Œ2¨?P¿çŠU—íSêúŒÈFôg‰¨åT¨¶ñ7– A¤3&ÓºJ°Ž™úÕ[KHþü‘ïi/¢ì†d|tõÊŒýzT6öÑ‹X¡’0åîÐsÑY‘±Ó× gëX¾!·¸´ÑP[JÓ?6í¬Í¹wt< †à}*/Z\XYD¶ò7(1ÛY›*¡àn Àú ‹\·žÊÍ2d‡vÒNWwNƒpne‰÷´ÆÖC8ûFöþûvöàçð¬ï<»LÖÑ:™‡œYñ·QíÿÖªbRÆSm©—÷Å›³7QZpHÖÚÙ—% ³?v$ÿ*ÒŠá~ÅghS˜ÙݤîÅòâ´#•Eµµ¹^P»3z’kŽñAk†X÷r0qÈéþ}«’×ÜË \ 69Ç5Êxˆ™ð›ˆ[8çüšf—¨Si¼´ËŒo‚#ã¿Îj¬…c²Ž(’I#Œ  221Î;ðERµ¼)œqC’F…°È»ãèEu7 †yå·þÐ4qìºuG"žAç?7ôºkF#säPÜ´pùwL8GLd}îyÒ˨Äó´_Ú>yŽ=—/Ñã(‡Ó#¯ÕÆK<š¥Ï“QˆÝùe\9<ýÐ?ÏS\ÔóÿhJ#‚Ò"ä’‹ç'ð?ÏZ楕µIÄPEÂ_%•q枃û žµ¥cg*Ú™TàH¤+cã¯ÐÇáÜš¹oo €È§ÁúÿŸð­+KiØÈ§`88ÆxëôÀþUfÚâÞ;(–(Žâ1¼#œAõ©aš´b‹Æâ>r9zTðÍ ZF±FÌIùwó‘Þµü?¤I6“qmv«Ü6â‘6N©=rOZµ¦éÒÏi-´Áci[wÊz`tÏrI5†Ÿ$ÖOm8XÚF ò·§l÷9"»ù/°Åå©v‰v 8çêW—v©áËhíƒË,1ùQmÊî äãŒ× Oq 餤’4òãÆFNb=ªÛ3O*3îù¢ðOóã?•qÞ º‘ïuÍÀ”:Å‚åvR:wãqü3\γâòóR³ºÔî#e2ܪ&7 W×€Zf-2«yfC…_ 7lôä=~µ· Ôsê0D &,qùre#r>^£¨b­mÅr’ÞD¡y*&ÇÊ£Ç_F>ÿZdK47WsÃ+Ç*Ìýá’H=ª-1õ KívKK©mg†q+F!¾fʶxªúq»¶½Ö$¶žH%Š5£ a“sPÝ-ΪÇÎT–ç~ï,`@¤uàõäŸ\í«h—¾"{m>y+«ÆwxáGiôýã’Ü󒹫J.õ¡”α\]fH‡Él‡Ð÷ŽI眑ZrZh^žÖÖ2VÖHâ—!\“Ͼk¨Ö.tïø>ëM³SþnÐÅÁ.võ÷äóïšÜÔf³Ñ¼5qej‡BbŽ1ÉcדÏãY—ÝGd.–›fÁ#²ŽücŸLäW§oï,¨â;[XÐ`¶ È\9ôÁMs–‹åÕ™¿! ·E-‚Ü Ê^1ÏÓÞ¨k¦ë[Žâ;P">RÛòƒÆ[ÔñùµjW›Ä£”@‘ˆ¿rŒp`€2{žŸëRÎfÖ.ŸË@ Gû¤' #=û~k¥ðmð¿ð­‹”xäŠ1 ‰ Ã+'Êr;tÎ=ëÐô±y¢ÛJÒ#/£ uÚ-ȺÒ-äÁVTÀŒGùVè­ ½GZ(¢Š(¢Š(¢Š(¢Š(¢ƒHERô¢Š(¢Š(¤h¢Š(¢Š)(¢—­QÒŠ(íEbŠ(è(¢’Š):( QEQG~h¢’Š)h¢ŽÔQIEQE/z(¤ïEQE8  QU®È²?þºŠÃ×HŽæ Ôí’ž‡qãÈ+;R!fŠPpÑŒsÐää~ª*ˆh¦vŠ%dáäÏ¿8‰ç5ΥŅæ¥5¤ 3ܶ'º'ŒË{žsÞ±ÒkK›Ùmmâ24ÇÏž8?1}O>õF]ˆÑÉÇnYcP pHüxÍdÏw#Ì’Û·Ùí-ÒÕFHà}Ö|“³J’B|›x–$ 2Gèx®&õÒMRxíÚ;v„2I3I†RÄ0Ç9B.[8õù@§OJSÑ¢ºýãG!áå&Æ'ÿt*)>õ­¦¬Ö–±ˆá‡}¥»\LŠ ¡<þèUR{dSu-1%ŠÅkx Ó*Œ¹CПþÑ\B²ë:}´¸-oç8ã#ÿÔ:èµhÿÆš•)Ú[«Ü·@ÛFqôãõ­­F1wâ.ÅÈ&ÚópqÏùúÖ}„²Ý=ÝÉŒ:êT`ã!r=‹'ëX"g¾Ô/¶Åµo.äH!ú°ú§þú¬”•®înÛË*·7°ÅŽ~ðú§ó¨-/$Õì–e-lç³þ©¹ÉØþ•ZÚíµ ÒS#Z•v?Ô·Ì Çû,.j.ZþT}æÜ‰7cý[Ù?ãõªZÜ–ÞX²³Š+õˆ,QBÏ“&ͬÇ#¾2ß…I­Ém&£%­œ) º$1DÏˈö³އ›ð§jÒB÷Oom ^ÇX£ˆ¿,ic‘ßo³b ˜Ò­¼ÑLÌXG+e²zç#Ö³cSžòù3G9rBHrI=sǨ5N5Ù§™S$¥²ÎIÏ\þ5)Þc¡ãÒ•·ùq¹ ðxô§á#cƒÇAÚ°5Ûw`Ûp~VÆp}ëV´7Χ?)÷¬]fÈÝḐnU±ž}ë[¶²HÑ™£6—UÎÿÀÖ#JöÄ`ì`°Ýù×?,òÙ” »Kqú‚;6˜¨\–?»e½ÉèçLŽÙ¥q¹‰Éûƒ©ÿQÇc$î ;6Oúµ#'ëØ é4ëUI7¦Ì¯Êì£Ó¢­nÙ@#!—nWåb£Ó¢Šé,­–6 A_•ŠNŠ+Vr‘†lcoaß¡>Øœ#á˜.6öÕ~b±°G98ÆÞßJÏ›ËdU‰;…ˆùaW%GSø‘üꌛY Lìr£¯çTdÚÈhRP„.ÑÊŽ§ñ®›ÂvWwJ’(-`ó$2d¹‘³ùOÐ ßðv‘q¬LÑ0x­ì“Í‘›–ÞAÀüqŸÀ ×ð¾>¥9•ã·µA#³}âíÐ~™üw–å,€Bíùp: ôý5 X$`…bh Űd¤c=½úšï­5‰Ø.¢Âm*ƒüæ±JHcÙ£·Ì,0:Qþçon×Zrý Æ%çÃ…œaq‘ê0yúuæ¸Ö·{›57 ‚HZ\0,>\dzŒ|³,Ü\;y[bòÈ'îð¿7Óš»uz¶Ú¶¥xù¶šKe´Hó’¤,`±?ÝÀ$üU‹‹•ƒP¾ºr`•à*g%p©–Ϧ5…Χ{¡êèûm)'•OV,ª#ï“õ½¡è·Öƒ³ˆ¥¸œ¬YUb\{/9õÖµtÍ&{«TW“JVfUŒ{ Ÿ¨«ZŒb+é°3ö„ÈÏ#¯çý*¢Xê·›P}Pc8l`þÒ“]Uµ½¹A7Qü¼g Ž?éI ì»XbY‰emØ#²“ÜŽŸcÛiq§Çc2l¸º&D—Ì©ÀTÈêW§ýõY±XlRÒU qq—Wß‚0¹ÇOΣÓÚíuHøSþ¹sÛ×ëôª~þØOˆ­ bñ<ÏàHîO¡µCÂUMwËÀ€œ]&ñ÷Gp;ŸLT÷Ò î’8Ž(Ü6àäõãßúšÑñeÄzιo§ÚE,v ÂEà–cÎã“ÀçžM_ñ ƒUÖ ²·I"µ³ æ˜%‰ì=ø‰ª‘ÇævÏ)|Þ‡?ʲ´ë3v÷qŸÜ-„?i'hyÏ·ùõ¥goö‡¹Œþål£“´‡<þ…â=NA*é–Ó:]^³HÞJî(ƒ<žxŸOjÏÔ/fhÒb³ê’™Y!!$gÐdñôöª·n¦Hc•„ú”†B± •Qœdö<}+vÞÓ ‚”yÖñðTçwY}IÈR}s]E”§HKhaÚ/##GÎò+GÓïU'®r+¢µ“û9 †=¿hŒ|…9 FU“êúäU ,î.uT¹û\‚RBÑGÿ-œ‘·Ÿl“ïTŠ6§ªOrnæ)lŽ|¸Ž ÎHƶK{ŸÎªÚûS’àÜËåÀ˜ãàÈäŒsíÉ÷56·>Ÿo,6¯qwoo'îcûî£õ t­jÙ¯4}-"¶iõ{IA…ÌÁBäê@éëW5xÞm2ÏÊ·iï`¶yI÷œ.ÜŒz:VOƒ­n}ªæå§k½û‘•|­´ð0LqŠ£ðü?ö‡ÚoÜ5Ú²&â28È8>Ã튥ഓÏûMÔ3\†U-Ôp0pzp:V¯€„±®¢!hÁ1KɳÐäÐ×{á™Ṳ̂±S+È>¸'=95Õø|·‘0,J™ÜóŽÄç¾Nk°÷­Ê×¥¢Š(¢Š(¢Š(¢Š(¢ŒÑEæŠ(£¥J)OáEJJ+ÿÙÿØÿÀ>ÿÚ ?õÚõÊõÊ8÷¢ŠQEQEQA¢Š(¢“©¢ŠQE”QERýh¢Š(¢Š(Ç­RQEQEQEQEQES&1¬fI>ì9>˜ªÚ€¶Kf¹º\Çk™³é´š‚ïÉH ó’eϦkž¶(bÛQϸÎ×§á^QazðEÉs3ÜNØ@r©´|£Øôü+‚²ºh¢Žv*)¦™¾^¡6”{Ÿ…gx€¨°ó$¸šÐ¾Åó#*ÄÛ±cô¨õ†ó-#žIf¶óBa”`†;sÇ¡lûqIª0{håye·2í”`†8ÏæÙ®qVgµœ¥Æð¾t«O4ŸºC@;zVFØÕ¦·”¥ÆåYV2¾a<‚°š«i ¬ÙË Ly„ô ÷À“+¯ˆ‚Ã8ƒæsü#'õÎ* •†²(Ë~ï–ô?­C a¬lŽ2q,{ ŸÖ¥û3‹ë ²*°æ#Î;ôÅX7Û,Ô8S·t€“Æ3бä·Û-T8né<ž1š¹ácvë{ö£¿;Éa$X9*Aê8úu«Ø·v¢à\9i2ÁáÚwG~ŸN*Mv-Ÿ¸ûFó–|°xÀ9 ú×G8¶*Ñà¼R[2•è`rñŠèžãO¶y– ÒÀö¥GÊ«½Inê>QŸÃ½mÉ5œ&Qç…¬Øè£pÉàwè?ýu®-´ë>ÞY¼»Mì‘rÅrT?ÝÁüi–qµ­”ðßC,ò&™ö†HÎ_i;@ÿw“õö¦B µ¤ñ]Ã$Ò%ˆ•Ò?½†;Bì½~µ¥ÅËj±„„Íquh»C¶pÌ}”øõÍG¢Í{?Š’Q ¸¼¾Ór7¶[ˆϰ^ƒ¿Þ¢Ó¥º—Äjâ#=ÍÝŽ~c$e°ÐUÙE2çæh QüX9üøýjKÅŠÇ\Yd!šÖX~@ÌO>Ê?¦¹Ûj‹#Í‘|£Œ€Ã'ò­EkÑ^ޙ䌗›£*xU8?ˆ5MFñ뼑Iæjcû±¸ü£ô?•T…ê÷M$‘¿™ø3÷Gó®[Å÷+n%‚ÖÝãifù¤Œm1e¹cîqƒÏ|VG‰.Ds^%½³ÄïpC2¦»ŸCÆûج¿\yoqï¼ü²¦!œ}?ZdבGo ÌœÝÈsË=p}Ïÿª‰nSÈŒ!’su n¿31'ž}ÍH÷(°Æ¼ßipÝyb{ÔÉ‘šMÅöœ üƒ*SÜçÌÜ\)Ç? Æ1RùD3û‹`ã¦ÑéU®aB­ýÇéŸZ©q€Ñ8ù[•Ï­Wž5ÃDãån‚°¿±ßÌ$Þ #þ‘FGãÿÖ¬s¦¶óþ{+Žké¿›"öWŠ’ 65tC&ÅcÌhÞ~½qO‚Å<ÄRÛC¸£ïT°X tRûA?qˆý}+b8p–›D};àõ­XâÆJ®w¾ZÓŽ,rªO»ß«iK‡!qÐÓÜÿŸZ¦ˆÒ$—@# '§¹ÿ>µT+HpÄÎ=>µOì¢Úò(e-*λC+üÀär=«´FÞåc—2+®2­Ïÿ^«4FÞåc“2+¯Þ Ïè¾Û4RÙ[>Ò¤œ(.}Nzýk¾ð:K}kw¤YIä4Œ²ÜNÌp>¤óžÜ×aáP×6×}¬žYfM*Ž@Ï©ÿÞ˜¥²ÇŒgŒú(×[ª=¾‰­œ µ¥Ê»ääFÍÏÒº+ׇMŽ x×ò½k3<ŒÎYA¾õ£§YÀ&€k<°ÛM¼àí)µÔdM]³µ…LCRÚ<ÇŽ 7ÅvªûgÒF‹kjU«Ô£!‰"B¢(UQÐÐWpˆ±¢¢(UQ€@+U”É$›GÊ›±œg$ÿ*óŸˆwrI ÒB¼A2EæuÚJœùWã[¹>Ë#Ä1åʱïþîAÏò¨áòmî!/,BVÁØä’8'Ðõ¬½Ð隤—WVâWD’G9É\“Ó õ#Z§¥ZgÞÛµÅÄ>k€ÊîÙ9# dúƒÖ•!šÊif8'Ë$ôIõjµe¤Þxbêîô*$ŽX@í&v¯rnô©ìô»âêèWr|¦gû«ßŒ|Ýj¶ o^Îuµº·,@˜·m9äàõ<*•õåÜ^„œÛ]‡Ç“×ã¹àŒþ¸­}usB)þÏrùü¼sÉÇsÁ¬»ùnôm´²Ë{s#Ýö€qÊH9¬É$¹±ð̲yî/]¢Æ3³äuÎ=6¶Í™î,ü9+³4óݳG3Ž»~VǦ´-l#Óá‚åÂKpøw›Ë¯Ðv«¾HðäV:€XnL¡%óqœÀ”뀫‚%Ðbµ¼ÙÆ@®eÆI9ÉO 5g ‘ÃòèÄ“Îæe$ùþu;y›+yLÖÊ·ÎY¾f–GBTú~•6׌Ú[ÊÀËn«vä·-+²’¦˜»˜4ãåó_iô=ð?j½Ì÷Q¼·ë˜ÒâäÅ3/Bß{‘5ó\Fït¹EšàÇ)Ï\~DÔ‚–âI 'Ìlùc§ =9ó­û{v¿¼š[0VYK?‡xôåWó5³&êâYmÁ9".ß0Uü9ó®BÛXÔôûÍ^}UY­¥’͉¢.CýzŠçô­böËVÔ¥Ô–Cl4–Œq…~ЏíþsXn©}i©É©+µº¼²Z±è§¢®;qÿ×®ËÁ×P7…m C, #p”s޹ãñâ½GÃSÇ'‡lÙTª¬Cï8®óAž94;fUdQ8l~|q[6—–×öÉsg ÷ç5¡+ mgXœ ˜ò§î±?åSœ<aæ8Ø1Ø‘ÅNpð˵±#€ƒÐ㊨ֲÇ~n[%Â&w#žj `•/ ýX`GðäþØæ x].ÌÇ–ùHÇl_lUÍ&O¶j3Êša´”Œ“©?ŸµO}Bùš<[JñĘþ#RAºöñÞ+³ÈñÃã½oE µ¢¦ýìò\ñÃ0f=zŸo~zKham* ?1d–Iź0ZEvž¹À\ôùp3žw!Š#§Ám¼;¼¢%ÈûÊ\;Ÿ ÿg{wÒ ÖŽCÂÓÈãó«^ ½ž=†Rƒh!€¡˜‚Fzà‘Sj×"E!ÉÝl#|q€[ΰô›Ý÷6Þ#*élÖ—"Úwó>B¡U¥PÒn…¦­kâ‚®¶óXÜ>b‚C³ÝBãðª:eÇ—oâ2®!–ÊlEƒ¸¨“äüÔ ~>›o=¶˜'šC÷2K4›ùòË–l}U[Ÿ÷j„VÓ/—q+lº½iž3æ0ïÙúª¾Hö^ ycH敊Otò¼ûþcííú+ aV4ù ¾²ŠæIåÊAy\þdSô²·¶p‹p<ˆçŽWL[$˜É?ð-¿ˆ§éÌ—vИ1$É+&0NNS'ñÇåX:Ã\¶ ÑÁfn™·y‹'úœ Ýž 1ŸZ¥znŽ£:Eh×31•d?ºÁlÙàqŒÕ[³?ÛeH­ŒìÌ|Á!ýÞ3“ŸqÚª\¥Ä6â3p™ åô·N1Іág†ÔÜ( läzLcÉ„ÑÛò—8ÛÐÓôÅXŽá%Ô|°¹-–9ãhÎ9÷þC8•'Õ6Æ ù„¶ãjçúgô©–D—P(Š>|¶#›w þá#ÐÔw°œ”õè{S.¢9û§¯CÚª-¸$³&X¡zU%¶Ý’P’aUE¾rÅI öU­¤–ö <­©Ëy<ýßÓ“PY®à“ÉÂÆw0'¯=>œsUü—{¸dò𱜶O^z}=iDÙÔ%Œí‹%È'’GÌþ¾vnåMÙ+wŸ˜‘Çó?…/›©œí%<“ÓùškÅ<¶¯)ßpÁ‚ž¤u¨™ –ìçtÄ0_jѽ»9Ý) Ú¦ÒPË®kyBƒòyðÿ螀ÒÀ]oYLÑL±ÿlg 4;}±ÔÁ çå2ÇŽ=½z‡mR;ydH£¹Á’IüI5éÿ ìŒzuÍØ‡bÌûU‡ÀÉ'ß’*ï<jÆkÁ+`ѱ“ŸÌš’æ}¯,»yUÚòOoçTµýT%åíØPLqx¹Èfc†{|ߘªú½øK‹›€ ìÉœ‚Iä?βÆ[¹ì¡Üý <„udPß$ÿãµÎø{N—Q¼²³lyt²I޾La‰úôÂÑ줽¹´€à ›#㯖€“ôÉþU&¶Þß‹'€Ìn'E Ó|Ùúa úzÑÕ⟎æ¶HLÂk”P½0@Î~˜F9ôúÕíJ$¿ñKÛŒ¢YÐé‚9Ïä¤ÕK{iZÝýí‹ð ~B=àqÅY¸¶ñVª_^ÞêIq&¦<›`Æ6Œaxãñ©žÛÄ:F¥{wu¨,Æüí×qÂ7°è*ÍÖæÎáãÚùš Nr‚1ÔýA5›,¨ÚÏáæš;{—Ôšd7R9cÓO5Ff}B´Wš8.ý¤EcÁUŒu=¹É§êšUµÍͽÔèç쪂l O±çŸâ=:8’ Ùáfû$Iod!.¦ÐÄûœ{ —\²Ž$Šîh‹TX£VRl.ìrqì*f™®a‹Ì*K “œ`}G½6MBëV±°ŽCyÒ@ŒB¡c¼ ôè0¾;ŠF¾ŸR³³Y ™#'qà~÷©æ™R_1$ÂQ{>¸öÎ?¹¨ê0ÙÌnâMá¬>Í1ÆL›}³ŽjÕõäV²5Ò.àm<”'ÊG%ñíœVuå´ZލÙKû´xx‘1¸nÈÌÓDZµk{‰xp;ƒ…ÅCg5™d#»Ñu[[ÈÖ$XÁGS† ã€> µšÛÇ"€,ÑXHNÆ0OÓúƒZm§Û ê0EºJ$âà°EžÜ«¡\{ƒëWÍ“f}#骓 ·Y¢ ÑЯãšk±yZydˆÎǨéøæ¯g’K¹on$Û,À²€1‘ÈééÆ1X—“;]Kw<…d”nP29=8Å ¥ì®G92)È=:_ÐUû\\x?QÜŒ[íhá»'Ýþ;¿AV­Ú<1|ÌŸµ«g²ýÐOëü©’]-å¾+\\m@Gñc‘Ÿp­ÿ|šÐƒP¸²»³šÝ¿×Þ|«âû¸É ÿ|ŸJÑŽöKK›W‰¿ãâç¤Lsêß'Ò¸/èr>¡h–³Ü”Ô¯šK°NB±À€3†ÏáT5]5N½§,NcÕ/žkÅ<ª±+ò¨ð3žõ­éÏý«d–óÏäê5ÚžBœ•qÏ>ý*\iÞû Z]Û¼ÛVIŒP“„ùŽWåtÆ:u®¿Ä„–>DWy©“!hP‡åxt®ƒ[Õ$µðd‹äÜAæ Ý!hP‡åxÀéô«~º_‹.4ø÷*x‹ÀìùF`ü½{øjÃø[©Ü&µ>Ÿ%ý¼°nˆ3’¹\p¾ø?¬ï‡—·êóØ4¬ÖÏø÷7Ë‘»øÈW¦ó^©^‹KEQEh¢’Š*­Þ—c}smssl’ÍjûásÕ·ä?*©w¥X_ÝZÝ][$³Y¹xºÆÇ¸ü‡åU®të;Ë‹{‹‹t’[V- ž¨O§éVóVêÍQE;Ð8¢ŠQEÿÙÿØÿÀ>ÿÚ ?õÚõÊõÊ;ÑEQGN”QJOQIÛÖŠ(éE{QEø¢Š?Z(¤íE£ô¢Š9¢Š;óEQE"Š(ïE”QERö¢ŠJ(¢Š(¢ŠÎÔQf;cb$èÅHÿàã?çóªpÜK'ã•›q™ãû§ŒóÚ¨,®âìŽÄ1•ÓîžOüöª«+²Ä‘؆2:t<žRKRVwPeº2Íówì=úΪ%œ‰bVP^s$œ÷ì?OÖª¥¤‰BV\´ÆI9ïÛù~µÕ¥¾S 6±ÈÎ"Hp²¨\²ýpÅ$wÒÞ‘@ŽÌ*Hp²(\²ýp:h½’è4qBŒÎj9º’¿\δü-¥}†dfmΪÝóc Ž™î*Ö…§5²È˸ÊU@äœ8<‘Ò¬èÖ jŽT±”ª€3Ï8£¥o\‚¥‹[²üå ÀOóšÒ¾‘ (b̧ÜB¢Fq‰$P ª ëÈ<ûzš½w!‰£1eÚÊx•]›‰`}>Þõvê.uvS ¡U‡$ \~º gLŸQñEµÛÆmÕQ†YÔÅ` lcØÖ¾£§Ë{¯Arêb UUd°O×8DZ¬)õI›Æv¶°F©hWËjíÛ·†=0F>µ—s¬Í?í!¶EKN Œ*íÚ†=0xªj’Éãxa@¶ä“Û€F>˜­(ï-®õ]fÐ+²*‚qò“/<{ü¸üMXY­§â™[8·Â¦W+ºs’0sòÃ5"Moöÿ‘äaW#*L§$ûä~´Ãa·kx€ËŒ XÎÁýZÈŠÁ'71ÂÂ=¶áH‡!ß ã¥QK%”ÜGùd@ù\*AÇJæük,2áfQ#³¤›w €rIî9ÇãTL°Ïõ¯ZÒ±ðÝ’€ 'N™#ÿ¯Yú KDØH;˜°õ'ÅøÎÚ=)RÌ:¸yló¼±sÇN˜×3âx’ÁRÜ0mìÒïÀëý)±Ÿ²ÛË;}ò¡†'ô£OΕ¤ßjØÛs4kmjªq±B€[ëÇùÍJtý>ëPÆ'‘6ê§î¨P ý+7X½“D±‡T+æ42/ýåÈûèþ•UåŸÃ–:Ä‹™cœ ÿXœ#ñfý* ¥—@µµÔ¤]Î’‚~úð ÿÇéOñOˆ ´Õmì|Å›+§>Xf ¹úüÇè+WâF½:­ŒâKxÌÒº`ì @P"~•sÆšÚA©ZÙÄ;ódtçfâçò'è)ñ[3.쳨ΛnpO×’yíšåí´™¯®ÚrÒI eî`§xFl3ý2ßLÖZ\·w-9gx“i¹” 0F8cëÓ'éšÖ¶’ÞícF;LVÁÛ™0:ýp?Zî,%°×Ä1^,–vo ZiI#ó®Ð ýp3êz×Ug-¦°±Çp¯mm$fÞÁ]ŽéW¿×Œú÷ª ‹k³o· o¸×£ŸÂ¹ F…âG°dÌznóõ߯w÷#ŸÀV*Òµ¶²)˜ìC×®þ3“žäJŠã1Éʸi#^½n;¾‡çUõ`mf‚+¨ÊÉynŠ¡¾ì@ÈKƒž„mÇÓ5ªM¼ÐÅsWº…wtŒ˃èx˜íµÚ#×–Û'‚ Ÿ ÍW¿–O·IjªL‘7‘ UÁs‚ŠHõ ‘Ÿ^{Õ{¹\ÞÉnªKÆÞLF7œR}Âäf©Ëpm¥[s Ý´Ecä¡`zž2øv«ºÍôqà8IîÍ·’å£,­€Ç#Ž˜ÀôíÒ­ê÷i•;&ºk(Ë! àéÐþ]ªŽ›=ÅÆn× -Ìq›Ë#)DZ=>µ‡r²ÜZY»ƒº2Ó`&e8öÉc\$—6ö¬ãçŠÔ´§°"VSl‘ùÖˆmËpX)Ï<©Çáý*͵é³Òï´æÇúBÇósò°e?Ó…X‚ëìºm݃c÷¢3Ÿî°*Oòý*´ö‰s rIÜ,Ëž‘IúÄ~&´ÚIô:ÂʰÛ$̪ʎ@?B¬@úš¿öy'ÓVq l7U•X€~„1‰¬]Umô¿éÚ‰ó —,$1oÈܱm½¸M£è~´º‘M[ѵXÚF’à$òG¿9;rÍ·øs·ýÓMÔ=#XÒïÕ¤y'Û+Ç»<í%›ol…Çàk{Åmy¥ÜÁ0Å _?l`—ÎIïÈ5è^%º°m.ò+Ñ/Ù£ ³0Nv@Hêr93]ˆg´“N¹Žéd0&¤ ;÷c 3Üä}+†Cút:cEÌ7{• ´óWŽ»±ëÏÖ¼ÿÃÚUÜ#·þÎx£{9‚Èm8¡±ëÍz21xÕŠ•'ªžÕëàäg¥z@9Æ=ªJZZCÖŠ(éÀQGS‚(ç'Š;Òãš(¤>ôQJyâŠ(¢Š1ERŠ '4”RãQFph¢’Š(ïÍRÑE(¢’Š(ÅR (¢Š(¢ŠSEbŠ);ÑE.;ÑE%QEQEQEQEQEbHdP†Ú&g-02äíŸëøú×›,“Øxº=*ÒW¹’{àó…9ÄAƒäŸ__¡õ®0K-§ˆbÓm¤y¤–ì<Ø9Ä`îÉ>¾¿OzƒU‘’Þþæ^Cm·dkÔ±#ùdÿ:n¥km#kš¥´.âÇbÇ+#œúã-I{ u[ècgû!UDèC1úã&¹í~ÎÜê¯{å»LcòáE»ØôȬ=jW–õbmåvC·ÜÚúqYz¤¶¥%Ø·²ìŠ5o¸1€GÓŠ«¥´é«¾Ï Fâå¿<Õ I#[4Š-ÆIE-ÆFy?U´xÖÑ"ˆ±Š#µKwõ53YÇyqÀ%Âȯ÷¹útñ«KmÅÄS}ñæeþðê~™Æ?°-Öiã›ïà•õÏáÓKJ‚=SSiðªÑˆ0@ å•Àú𩦯º…ÿ›Ñ"¶È×iÛÎH|~'5RÁúðÊ›C©ØƒòÄ×Y´°°Þ›ŒL‚(œó‘ÙG_ʺxཷ¾fku&S*F»P°nwÑFAü«}#¹†è±ˆ(†‘P¤†ç#°ò¥ºFk„…%L|)çœÖ¨ê–óÂIef„‘¶ì³a·Ôþ5KQ†S¯YÛÆIM Ú§ 89©«wWq^\˜lÙ'd'tˆrƒ´Œ÷ ž¿ ꢷµ{Õ»™ml Í"±f•0B`ì#>¹oÃÕ‡q¥Å/ˆmîcb8Ó1ôÚAer Qõå€éØÕ½u”2Ù$I¾YRInÆ@úò@ü)d· Œ)+íŒ\â©Ohâ"ÅÄQȪS´Œsîp¦«ËnÞYbûÕAãçÜàåK»±g ˆ²1t äd(ãžÇФ×W0¤ˆ¯ó€¾VB€xçÖ¨µÉ–O)OœcÊÈP Ç>µÙ[é.¡ @h-ögÌù@fù›P3í[VºLÚ¥Ô1¢ª˜cß~£8Žxx ûV´:\ºÔ*ªÄ€ÝÀRÿ1=»Ž}«¸šâ0-ãMòòÄ<ð3ž‚½z÷RÓôcÒm`óî$Ck»9ÉÀ,OAšôk›ÛM.4°‚?6wGn®N$ôË[]Ýj>,ÔyAb«ùd‘‡8ö_þ¿ÓÏKSƺ‘¼¸†cn¢»ò30 vúçŸlײ\j+¿ûLÑÈ-ÔE÷~Vb0vúõöÍ7R»žæKM6ч˜dGœ„±ÜÇ·*¤¦i.$¹¼:n—Æ;®~o%™‹9úªà{ ÒÜI=ÓYiðã!•¤^â"If?UµuõŠåDk$(¥1Œ¯®?@+ ñ£[^Kl°FÞÝLc òz‘žãåQÅlø”ÅrðˆÐ“sb™¤¢"†\&å=F:ŽTñ¢#—O¹´ÌÓª†_—#Óz •˜]Ngi1 eí’*AøV…Ôðkº…Χ C{[®½Am ºÿè#?ìÕù$‹U¼žþ(þv†%eê7mË/ò…;6÷–ÿf–]²Ÿž„1ùä‘Rƒ¥kºWöMõÙ[é·\E3ºÊ̸ôÆCò)Î4ýbÃû6êà‹©34rÑ+ÌPZÄ©c=É\°SXüª_|úÕ]Kû7†5-fXËÝ:4Èp±®@'ÔžÿJ¯¥éÿgÐïu9›—Cg8T}Ïz…¦ib“wÌ®FìƒýOçXÚt¨Ü\é÷K'™0Uˆ7 $Üõ?fØB÷·W*á¥UXÁá·ç?ȟΨÝj–¶“§‘VIan3Ž„’}1T%¿Ž1;6KV‡iãÍ.Oè?:£5ôP«Dì<Ù-Ì{IƘXšqÔíM³Þ­¶”ç ŸíôªÈUÙåsº&RìËΩj®¥XÉ;Е23p½KV¦—0ºµºËnQ¸e9ë“?]§‚æmOÚխÒ"‰]Xž„ôÿ€­u^¯ôMJ Ûî"° äô'ÿeƦŸky{¬ë^dÅì¢k/-7ï<½ê‚_JÈÑôûk¹ujæiCØÛ0Ž¡‡™å” l þgñÉÓ¬m®®5m^Ydßi ´Øêß³`aéŸÌÕM&ß[ž[K[ÙE¶*´Íþ’Pã<7 nä ûæ¶ì-µO°ZY]݈tù-üÉѦRB<Ž{ôã¹­ mKìöÖ·w+„¼«ç…8Ï^œãžƒ¦½K½z5w4¸¢Š(¢“œô¢ŠZ(¢Š(¢ŠCü¨ ÒŠ(¢ŠZ)A÷¤¯ÿÙÿØÿÀ>ÿÚ ?õÚõÊõÊSEMQE}h¢ŒÑEQG4QGÖŠ)(¢Š( QE/áEu¢ŠJ(¢Š)z”QIEQEQEQEQEdhÉãÙäˆ ’F|ÍÇ…;CgóþuNI£Has/&i ã–E`I?L¨üj¼ðÁáû5fg“U»y¤SÕÑÄÿß#ž95Z b‡H¶35ýÃÊàŽYU³“ÿŽþuÌx‹kQA’˜”¸D3ò’O§5Ïx‡x× ,®÷ —G Ì2 ϦMcëa¿µŒk+¼é–ÂŽˆ?†MU³¼{·kKœ+å’;¾‘ª–÷âCän ©>­ƒŸëPA9Ì`66“êpsýiés4Iej¹–ÝãßÏÞFÎN=)ÑÜÉÒÛÁÃÀñî窜äÿŸjU¹’Ÿ"óÂÉ»ÝHë[úU„Z}°?qVR1¸’¡‰cÓ¶[¶4«¬ [¹œD‘]yEw僖ϲէ¦ÚEcÎä"G9B¹'`99ã¶M_¸kJçvX€ª§ïzÔÕ½P-Û_\'™$Š–ë}òØgÜ1«€ê\Éæ<Ьm÷‰íø‚jUšc9,ûr¹Ç9ǸâŸm©Z5ë_ÓÉcW É`R\3O·¿¶{†¼ÃJé”V Él˜—¡Y½‹<0Ì ’*/Ê¥ˆm£éœR êjž‰lÖÚ®¡mtbP¨" Ê®ïŸ`úg×Õ=ÝàÔo­§1ªŒê£åRÙm£èN?k/NŸW»Õ¶ f ²ÚWlªøR3Øœþ5—6±¨ë\0±¸ŠÈù–à‰°‡èNOᚇM—U¾Ô¿¶&2-™[ò6È­…?Br Ö»Þ0Öl`ò²ònžN6(8üsA¸iµè›Ê̱»K´å¿Õ.í§êOZ•§2êñ‘ïQšLŸõc ÄÔ‘Ëy&¥å²P«çç–”¶A“E¤w·qC‡e˜•Sí ܼűô¤¶[«ˆãÊÛl(™›–”œcðÁ§_[}²×åEÞÉЂsØþx¥»Ar‰"D¦„3'?78$ÿ½ƒüé× \*² XƒçžqŸÇÄ›;Í yL!,JÅT¹ºvžoäY[£¹Q˜à' ^™êàUÒøGDŽÆËíŒ$\r˜ãgN:g¿ã]&+­®Ž£¹¹‚ÎÚK‹™RbRÏ#œ*Üšl’$Q´’8DQ–f8Sd‘"¤‘ÕFY˜àRæN¢Š(¢Š? (¢Š(<ÐG­â€01ERãŠ\úÑ@4”žô”P(¢¡¢Š(¢Ž”QGQAçš(£QER (¢Š(¢ŠZ(¤úQEQKEQE%QEQEQES&sE€Éè©íUµ ‡´°–h“Ì‘F?¼Ç€?2*¹š Y$DÞàaÕ~x¬9¥aYY²$cŽ9çé>•ç'Wž{{Æ(ÂywCy!ÇËó( žß.TcÒ¸ñ¨É47$©YdÝËžß0³ôÈôªÎ±’¯Ì±ìSíøP3ôZ†D°$±ÚÛíêrþf?ú.*8œ4b6‹ !xë÷·ãñ?…szè:ÕÜ¥Ó÷Í"ªd䃀XôdcÒ²/¯ÌúµåÓºHè©““Ðg°Àã•›uyæj73³®T3ºªw={qééT-àšêkMGbÅÂáG$³dg¥QŽ '{kà«X(êXäg§5V8$šK{Í¢4Á`£©'"­išk J[¶ÎèİÍþÑÝ•¡©£±Ùu%Àݺ ñOÏÞbç`ý I™[·¸Ìa¢˜gï1s°~•ÖÜ)&P±œ,ŸaÓüÿ>Ý>¥Ž·AmXÃÑW`rE9ÉïŽqì={oÞ«¸˜ v1$ä3ξ¾Üþ^½š3º ©2"ûBŒïÇÕSOy¥¾±Õ®—eŸÛâEW¯'n âªZ<²ÝZj7[cxˆ¨«Œœ¸€â$BÞæHKBÛ•ÇA< þU5ýœZV±y¥ù‘³IæÁ(m‚ Äà#ŽÃ­MsmŸ¨\Xy‰–O2'nÀÇŸÈT QPý¥È.Îß*(ÏO~P[Ûµ‚]ØêrºÉs,Œ6F‹žêOÌyî:†Ú²}¦Ók›éY^y¾UQž‡ñ5…mwœÖ÷¯d’BþOL$a‡ sœ}j߆ÚêÎÖ{ Û„1K#‡h†@ùŽqÐsœsÞ¬h_i¶µ’Òîdewpæ>ƒæ8‡AÎqõ«¢\$ñçkçœ}}ñúU8È–õà·}Ã3l—î¿^2H^ãµ@…d¹h¢Y‰lIÓŽ½}À§~énã´màC™4¸Âå}þ_ÔU»»;kk3I’IhÚ{ÙW!w7 /mß.8õêiíá†æÇOvuŠÞ3-Ôƒ nn@_—õ—âî¥æÝâY-ØÜØðêŠr£·L÷ê+VßMqq‘ 3ˆ{ãR61€¹zŽ•™©,·/4ñÉ™IŸÊìÈŠFÑÛduíS<–³\­³’ä ‘@NUIàäÿJcÎ" ’m’s‡Œ*r¨NÉþB‘æWÄ“pÈyUÎÏøU OFŽ[M°JÓ&Ñ”^z™9ëïQÝÚ2´r¡I÷KmEô²}}é—6„4n„BøÚ[o*=»gÞ±l¡¼ÑÝmX 8ÜI.GeÉè9É=MRµŠä¶'À…‰ÚXŸ˜ŽÃžƒž{š©kÁ8Ÿ"N ÏÌG§°õïN—ý)bE oò„Çlg?žGåL™¾Í ¢…„•Ú~™Ïç‘ùRÌÂÞ%P°ü» çüûVeЖßuÚ’T€]úì\§_Æ©\Œ4à’02ßÝqTn úã$®fþèÀãùÕý:ÖZ-M“ý@ÊÖås¿ vîxüê{eMRH®•v!*a#;Žì(çΤ·Rh®Âf/$ƒ xîÂîxüë¢ðê6³!VUC bpœ¬x žý¿kgšDÞ'ÔÞÙ°ÁÍÃ/* cëœÈšÓð팾 ½xŠ™ÙyÂ^ƒò&º¯4¥³´ùxãm¹ßÀúf½Êð?ýOeû< ‚ë08Æv“]½½Áû0Ú0ò¢ln_¾à} ¬K™î´ø{1g,¥âŸ•ÙGO\=p7sÜ˧Ø£Çdn÷ܼQ®ÒY]‘z}85ÈM4ÓZZ£­›\ãUÁ%\ªôú>µ]:ëWÔå‹Ìž_&Þ÷?*æMU´UÒíµ›©Ó̸e†ÚfcòãðVªöèºlZÔ«¾yPEÇrp1ù],Ð)–ÖYUDˆâÀn pHüHþ^•Ôê0!—K–èl’š@øÈ9n 9ãé]ä ÒXI0Û$\¾ìd'üÏô¬k]E¯Þ×Ç&óÕd –HêAß¹y!•Hû^š¸žC…ä6GQØW&ð8\Üãtˆá‰èàs»#òÙxIemÙšH³ó4;~QŒŒ=¯·á[VÌúY¢TMÒ@¹Ú\ä@êx_Óð­í69_Ãð¤‰UC< »Ž@$§úWHŠfZ0åW8MØ9úb·ôÛ麛Ÿ2’#Gâ=Å_wº•ÇӚݱ³:ÂýŽøÕâÞȇîd«gèF>œÕŸÈòGÌ!ÜÌÊ;ãùÿ:é¾ \Ë%œ(²Û–2H:düª}³Ÿç[ž/šFµEÚH‡%›dð?aiv°jšÕΙ¨)XÌ …VÉ—Ó 1ï“ÜU é6zÞ©q ®$µfxlpૌ{“T´M>ÛTÔ§·¾G j»sÃcŒ~qs]ÜQ¤Q,Q D@¨èí^”ªB¨€jíÕB¨U0íN¥¥¤’4š6ŽDWFeaG¡ŒªêU€e#iUÔ«(e#iÔ´´QEQEQERóJh£ð¤úÑGµ-”f¿ÿÙÿØÿÀ>ÿÚ ?õÞÕë•ë”v¢Š(¢­QÖŠ(úÑEQIEQEQEQE´QIEQE¢Š;QEŠ(¢Š(¢Š(¢Š*½ë´vþb‘ò:’q‘Xþ)»{ í¨À yâvSücxÈýsøVv¹rÖzwÚ•€Ë2Ÿâ‡×ð¬›vYä”%`Úe¡8$ôÏ?Zó½&o…ÝÛ[4¶öî¯2`ìw° ŽÃ'?Zä4äk±spa2C‘9Úì°Ÿ­1K:HÎp0̼àÀSôÖš{+Éf$(J^²?çÐ{T–Ylî$”>wã~Ï ×!wÝÄÒ½Û,pÁ3H#@IdQßëŒ~u†ñÜL ÝH¢}Â5–@1úãÉ<ª^àªGn ’Ê?\bŸ¦_IvÐ[Í‚è¢È)UÄ ïøþ5-¥Ô— CäÝV൲£ŒýãRZÝ<í•qµX&9_Ó­u–‹;¤g?¼‹Î>¤‘Çå‘þMtZ~œš…í½´…ƒÉmö§=7> O òknÒÍnî¡…ÉÜÐ †ç~«ôÆEMæG-Ìp‰we!‰_”œd•öÏ?Ö§KÝ>ûTŠÊ ííqpÞ`dÌe€ÜÅ`OË“ýiéygu¬WAÌÓ6ðË”%FâWÐÆOõ¨m\C8•°äsŽª=½=¾•™á•]JÞþkÙJÉŒ‚Ê ÿzs€08ª:ö×rÝJD‡@OLg§¶^óQ'ÄXßìŒÉå­© þ÷*wvõøý)Þ+f¹ñìæ(äh£¤‚<ÓŽ{c±ëÇOj5öûF³wow±‘¶AaÆOob?*¼%•`S‚²"…tŸü3SY_ßGm²F>Ñ+ |¸À8IëœÀš±kut¶é# óâ‰c^;p6“ëÇæhóÔ,»¶…Žv©À$wúþ4‘]}¬ÞÆByq.F2ˆÌ˜¼gæçŽô‰qöŸµ! R1Çð«0R@ëÆyüjI6ª¢©%ÆÖ—-¹ãöã5zâÕ û'”ÒyÈݱ›¸!OAÁ=3Vå…b0góSa¸%É žSÓ¦jŒzlp=”pÝ_¼¡§?úm¼ðoòäSÝ3Ð{õ§87Kò’)Îá׃õ®CT‚8õh§ºs#BYƒŸ•!\ñÁêsý+ ö4Žògfvˆ–ÜxXÆxã¹ÿëqX÷q¢^C4ì\Å“¸ð±ŒñÇsÿÖâ–{i73’Ìä»Ð ðë€êh¸‰Ù —%›,Ät<øÖ–x™rK|ÌGAèà*…ÌBúöÚÆ) CtOœ=0ªÃ?ª7H&ž+urÑÍ“ ÿ€†ΨÝ(žâ+erÑMŸ4}`?Zím´èím¼I±Frƒç“‘éÈüëyl…µƒGØûÂìCÎ'>ÜõÕ¨ó4Vs6pÀlÀnäãúV£êv:.­q#"¢…Wãqb¸ÙEhI{=®—3°ó÷U¸É;z{X×÷fÒÎöå# má$}Gõ'5ËG$¥u ¿%Ylm¶óÈ œ {ç<ú çÒi ß\ù@­œFyù³ÛñÏåT¼1¥Om$S^HÓKpé4»¹ù‚çð'ò$ð̈́˪Ù}¨™žk”ž`Ç®ÕÉúÏ&ƒc4w¶¿ic+Í2Ë0oP¹ü1Ít%–âF‘ÆT3;dtPÏå]WTÕ.e•UâŠI&}ä`äøcò­¸æûuìÏ ;ÈÙŸ–?*ÏŠ$Ye ƒÎ•—xYº(Ï ùW=s J²[Gk‰åU*ÌÌs´èOéX·QïY HÁžyJÉb8çØ/ò­ O1%ŽÈ€œg½?ýoxmî º†ÂÚEhm‘˜ØÊüÄœû—<{ óZú!š ¢²ŠÝI$9'ŸrÇòZâîݵi|•Ìé°¶GMÜ)‰$Ï¡ôæ–¿4ø¢âþ ÷!£ÝrP¶•ÁnQØô f¦®ÐG¯Mwkk€S,Ë…¸R£¡nä})Ü[y’óº$,»ú´„Iü6Ýmì$¼¿uf{x‹#\šK—‹zðóÍ$I “ÜÞ2±xP²´Ã—™†I?€?žk7Tšk[b$s:¼nà(,Ê,yëœ=ÈÎzUkÛ™tÛ&³ƒÊ¹,c•ØF ¿;‰ÉëÐþc5 äòØÙ›x<»‚Y$b~rO?CùÕ ¬<²HKÝ7só1Œu8jÖÒmåѾ\^ÄZ]Eð€¯8g#•õ8j½§Ç6—ày.cÝ%ó^~f#‘ëÁ«¡c¹NݱÆË €@bGþ<cik ¾½c¸o±YIö­§ 81Së÷”|ŠËÓ„pë6ˆÎÚZ?Ú6œ€à;O¼ükÄÆÃAtÚL²¸ ²ñŸl“XןcðÛZªæY®|ÉŽ:€  ?‰søÖMÕÁ´ðë[ªæY§ß)öå«~uçn"³–( ÒĪ\y³“‚zô“ÛÒ¹ÆÙ,^c Rߺ'=³×ÓŸå\Ü›-Õ"ó]1»÷dûg¯§'ô®ïHw‡Jò”0 lÅL‡æÈù€#¿$ǽ1Y™\²²!åŒcñÁüq] #˰HÙ\lÊžGñ×ñÅuUÌkñO6 ¦äŒ)lœŸÔ~D×gðÿTµ‹K¿µ¾¼Á1Š"çs=XqìMu> Ô ]>êÞîç›ã‹ibŠ3“ù°ü«>êÊÞk¨fgw•’<1TUl^przVoˆ…´­iÚ$•ƒ…r±¢°ýâI'§J§®%¼²ZþúGpJ©„U8$ïàçµQð‰»ñÞ§ªxá´-× ò¼„eŽ>˜ëëšÝøsc$ú¶£«ñÃ…‰P7È\òÇë¿_ðU¤“ëWú™ª¬*¡¾V~¬qôÛù×|+Ðë¶¥¢Š(¢Š(¢Š(¢Š(¢Š)G4RŠJ(éKÞŠ(¢ÂŽÔ‚’’ŒñEw¢Š(¢’Š)I¢ŠJ(¢Š(éEQEQERñŠ(£QIEQE-RQEQEQEQEgk JC8 &[èø‘\OÄ«¢lllöù÷Ÿá©öÉ•s6˜µ­¥˜}¾lÀ·°Ìþ•gû©õUÆ .ÂA ¹‰öÜ ®n{‹m6 WKµ–_³=Â4%N<Ò˜žãr“éXÍ$ê6³‹w¸Vˆ©Ç™ò($žã š²T¬-]árOnGùü NŠÖÚ<–æUfºDÞÍŸ”p;Ž¿@}EYEh4Æ€ÈΩ¼ž wïø欙¢Ôžò⣚vaæ!9 lãךÈÒähuºš$ŽiÏúÅÎT=p¿­fi¬Ñ^ ‰£Hå”ýõ'€ãè)ÚEœóê÷W“ä¾öòä<î C{öþF™i×ZµÅÜÌLŒìRN»Ë–*m¬O¨Ïs!&BͱúîÜr?L×C|Ó µ y(ÿ Ùk†ŽmMá`©–‘ЫÔc>¼øÒyŠ6¢Ñ0 –+'‚¬QxϯQIÝÂcÊŒÞÀç?¡ëT´{ àÕt­D`YD;…9ÚCÏçŒöâªiÖ3E©i·ÊTZF¬°s´†ÏóëôªQÝBŽ ré÷\ó"äx÷,û¦’Ææôˆ¢˜l¸"EDVæeÉ*ÄŽÙ,û¦‹+ˆ£Ó#ŠP㪊Üʹ;Xþ;‡àj–¥s¬Éã-&£°ŽØIw.ÀQºü¾ÄìíëVµ ­R_hᘠ(tô’ñ‚€NÏbvvõ©/®uGñ>š£å±ŠÈIvûAVàü¾ÄííëWí´Û[-nãSQ$——aT¢’˃œ ôéôÍGvvzÌš„Q´·—ÿGƒ.AÆO8éš-áµ³Õf¿K¹ñ˜£%’ q“Ç@}ªÉ¿‚Õ^YãgFU<°X—lð=€ÿ=ªÆ‰¨[[Á}wwl~Í%àòJ î‘ò P?Ï}&ö!»žxO÷CÉeÜíœêÇ5 ’W%äX‚n('¡5ržîâK»ˆ­Ä+"…ˆ1 e°yõ8'Ò­ÂÓO;ÜNˆ•ÀXÁ'7<úÓþÏ%ÃÍe‚¼íÆ}~¿Ó4Û½ûXÔ.-­‰ŠÕ[sÏ'Ë»ŒŸ¯_Ã>ôË6ëQ»–IŽÝX3Jünî~½Z§©­ÃoWBÞI°¡¥Ì«×©Qú€0;ÇÕ¦Úò m@ÛCtdÊÆe#=XÇ` Ʋµ9@Ô\[ßy pfV2¯^¤Ç€8 X·Eù 2ØXpd>ÀzžÂ§Ñ¢¶·,ñ†µu1+†˜E^ÄŽÙ¥XÒ¢‡íS»F <µ á¤#ÐÄç§â/0…êÃiûÝÎ{ûcð¨í Zý°Ço™eqåœ2sÎy9}6Ûe¿ÚJC—‘ÆÂ>}¼œýNGé\·ŠV1¬Z«5‹fqÓ÷ÏÓúV¸TêP£!ݘá xúâ±µ‡Q2ÙŠз÷Ò³õ¹Ô5E…eß.Æó0@è›@Àé’ÿʪß4÷ºŽ ›¤Ú|Â0 Àõ-üª½ïy¨mó7>Öó1Àáp8»¿•mÚZZè /5ÝÔÁmíâc€z@Éö8­{;[=.º›|×3Ü*ÚÚEËÉ…ÇL íúâ´máµÓ'}Ó\\Nµ´|³`cÓœ ýke‹œE €3w ÏÍÐc>œâ’æéâÎÕÃI$Ší" æAÀÁôl~\\²*Ú[8gw ]rý=‡8ü+{GÒ-4}1-­jY¤ÎYØõb{Ÿzõ/ è~‹¡G›/Î…Þä`³1¶y滽F²Òt„Š×*Y¦,Äõl÷5šÒ3E‹ÅÉ-óÙ'·ûf¼Ú[«»«[]+Ì2«JnX–ùÏQ¹o—'Ø×óÜ\[ÚéÛÌ€¹™‰o˜Ž~f=¸çñª"òÖòæK iVM¥e¸ÚP>e ú}{Õ©oôûk4ë Šf¹p¤)á” Ïn¿z°÷¶P[Iek }¬²Î@Âô /ÓƒZûcFl•EPÎIëùfŸáçt×3³D†0œä°ÉðÔýBÒIq)1¦À°‘ׯ$~«(¤K,c(C3´zÖÎ.«¨Ã€ªÐ²ÈdF$åøV¥¢‘}wÈ`Så\<Œé•À”CÜŒ}zWc]Åu”½±EQEQEQEfŠ(¢Š(¢Š(ÇRŠ( PkÿÙÿØÿÀ>ÿÚ ?õÊõÊõÊ^Ù¢Š:ÑEQEQŠ(¤¢Š(¢Š(¢Š(¢Š(¢”¥Ph¢’Š)h¢’Š(¢Š(¢Š(¢Š)“J°Âò¹Â¢’j¾¡{a=äì8P¹ÉÆp:}j»¨¬­%¹™‚¤HXóè:VHg¿¹-#yQ…ÜØ?uGÿ^¼ÒÝî|iâ).¯\ZÙÛD]ðÕ ä žäòâa3øŸZ’âåþÏmoæýÕ~¼š­bi¬lŒ‘»Øñ¸û“Ÿ©ª.Úæ®°GlÂÔÞ^ý¹ üÎyêÌIÿhûbµœ«jB5…°ÃlÝŽî¬}Ø“õ>ÔÝBà,SH1œãò‡O¥Z×.üë¹Ù6‘þ°íøWƒîý3Vu[2yJàãç;xô_çҸϴBl#žêO/ì3(“fvïàcטŽ} sÞlKeÓ¾Ãi*†Ú8ÝÆG®?X‹4BÎ)§p†ÖEVÛ÷wpú$~º­6Ûm­½¢œ…C¸ãïž«Óßñ­Ý"Ø]{9òãf-õŒyNžûWñ­6;È´_ùg$‘÷Ï%\Æ®Ë'› M´ìœ(8àíãô?ßÛCÝËi_ÍHU°9)‘ǰ<ûѨ\}© ĊͰuˆJä~ ΩÝ]ÿcis×S¨Üè¿(VþŽøÔ³]Á¢ÙÞÚ–÷ŒÙšò‰ uç$ ¥:{¸´›K¸7 Ûß¼‰2«þwÉéX¶6¦ÏǘԤ¸ŽÞ6µU@b§þ3Þ©?û7ÅZÄwª^æÞÒ3dE@b½¸ÜOÔžõN;O°ø›V[¬¼ñ[ÆÖ‹°…T©éÆOæ{×C壼#k4±¨SŽ7Æ>™þUuâf²±·^{­‚6 ….­Ñ}vŽÇÛéWÌlmm ˆ4³ìÄq¸ƒè;j•“9v†;p§õö?ΤšÉ¢º°†á[^´k3ìÚŒqÏ=^üâŸ-¹ŽæÒ)”$7ED·j±ãסþuVi&˜BSÈKRås·–ø¿^¼ôèzÖ]ÅäÚ”Y¤VööB- ¦ e€.? ¡ëYÒÝÍ,VÂ8 µó¶&“–·æ~œt¬ÿj«¦jVÍt–pË#–Rx€Ù#çœUÏ^&‘ªé¶ÑÝ}ŽÞI™Ì’“ €®I$‘œt«åêiz…ºÜ‹Hd±’CÐ…lž#8¥ðtw×Z-Σ«§“};²Èã5A ¸ç ÇïG†çPðþ§«j“´7²†û ”äœàsžƒg½3ÃKu}¡^êZ›oeÜ’c Éç8Ëó­h£ž+-´r[“¸nÎPž¸=µU´kÝ>Ùío´¸®´é[+¿;¢v”nÇÛÿ¯Q[ý²Î&¶¼Ó⸱v%w}èØÿu½}«7YÔdÓÖÞÒ#4÷*„‘’¹öíÖ »‘´ƒœbk‰‘c;NJ³íÈôRWÛ“QÜ9Ó<‹;XüÙ¥UO”ä©b¿ qíW Ÿfˆ+&cŒ}ày$óúd ½æ>Ò+PŸ¹€¬ïHíÉçÐgUÝæÊÚ;}¿º„}õêìy<ûgÄ^¿ö–¥wqo –Á£`.Ûªÿºlzb¹yÚï.&‚'‡(GÚðý+›ý*êâXch B>Ðz¯ÓÚµü/§ÛÅjoâV_5²­',IêOåùâ¯è–6éj÷Àº˜à¶ã÷‰õÀä­\Ò,àKf»MÈe‘''ïëÐz‘[—=¤77ÚæqØPœÆ>§×·_a¯1“KóîE®.‰¹¹€ch›ryÏãJ}úzÏp-¿|°…MÍþ¨€>§×¨Îjׇ-"³°_´K½‘8!ON„úòyüjoZi0Ç%Χ8&'}¥N’ŸSëíšwƒ­l!·i¯¦cFl8ásëïíšžÑ|¹§ž6‘#@x’MÅûsíôçÞ­x|­¶£«\Ú´ðÚÚÄåcžmÞnxùûmx>µgF ÍFh ÑAn¬BM.ï3·ÍíôëëX:Ö¤lmµ¼\Üݸ‰V.¿LþU<¢ßLû5œrÏ}¨2 g:müöšÈ¹[iþEªI5åó¨þF§Òt‹m%e‚ î‰çåU £éŸÄÓ/ì-ôµKH² ¯æHO\ þ5徜Ú,†•÷ÈO T}03øÖ…¿حŒxÜ$BGû%óŠÜŽÞC¤iLŠ ‘4{”ðHi3Ó9÷ö­˜á“û3OØxÌ{”ñÁlãôëïíW,Èk‰$”»KŸîžF? V®„ñ[êZ…Õ󢨉§lçiäãÓ`Uý1’˹î™@ØÒ·÷zü¿† g¤ŽVyNH(ÁØ6–÷ñô®>Ò[²j·Ym²BDÒƒ€cgV`öÝ\µ¼²‹]Jà–!â"IÀ([?›0{f­i9Wg mÚ?ˆ“×ÿ­o´±5Þ¢±—KXÖ$ˆdfpxõ?'OzÑðcHæñT´vè#HÇñ30<{ü£ó©¯K$]Œ¹Yy< ƒÛéÛñ«šØ¸¶µ³ñ6ב£½"RxßÀÁ·~5oY3[Ai®á˜¥Ö$9Æä cw0ùÓ.%qѶñø ö~UpÅ /cyd8—=ŸAì8üªüpÂck¸Ö6’L }È{*ìðÛ\ù6¸9 Áaßïp?!QKsdVÒ)!’7ݹˆc‘ÓkG#ôÏh@[xžó¹°ÜB9ÿ!ZþÕeºitû†f–Ìr‘˯N}Ç\×¢ø3ÅSk‚}>ìí¹…wG0\y‰Ó$zƒ®~µÙøg^—TÚ\q4k¹$Æ7¯LãÔèuõÑQÞŠ(¢Š(¢Š(¢Š(¢ŒQKKíEQ@éIÚŠ3E6’ŠSÒŠ(æŠ(¢Š(¢Š(¢Š(¢ŠJ(¢Š(¢Š(¢—§€GWŽÒPÀ$Œ0@<¢õÛøã§Ó½h­¤ÚFs½+«Ž$ØÜÄ€nsŸAŽæ¯­´šv™9uHç˜ážc\d ÷õü;Öˆ.„ð)y‘ä”6"PKíä/ÐçšÈÔæA ˲È\ùjý¸Ú>œœþ5›¨Ê"†æHä’MäF îÇÝN¹¬q–ûF‘›Û¤±4Ž\Œ™v<õÁÛøš¥/üyÜiécD²DìûÏ%Ô±>ø;瘟'ü{ÜX%ŠRHܾìd¸,Ç܃·þú®½BÁ* 8uNËqŸç[i—*‘î {NÓ÷ßpÏâ~†µ¦Å”ÁS!‘6œ¼Üd~¦¬ÅÕ sŽÄc9üÅiivÊé£Å"ª´W,Ëœa—a!¿QW,mÃ.—¨)˜Œ÷ Sø™¨[Iu§µ¬{RC,d7ºº¸üöóXtffž1óĈêäžX??P¼šÆ²ˆÏç" ,¨á½ ¸~~¡j¢¾§'‹®dŠéêv&ÔÜdVS–q‚þÕ¡$—ŸðšÞOutÂÎI jê…·£©Ë'\mÇÓéW ÝÿÂQu%Äåm]üµ`¥·«K/¦1Óü+\B:PÌaÇ‚Oòþµ$Šu‹{kvå “våXœã9ÆSEn¿ÚpApË 'h!‰þF—l·¶Ó¤ñ†@6©LdÇOB?•[œ_ëZmüWÑ,‚ DÊq¾„pyíSÌ—š¥Üwq¬‚=¾I‹£`qœzïÚªé6"Â(­.pégɱꠀ€ý5WÂÚ|V·Ëk©Ç6ÞK¸Ý›=Ó`o÷y?ˆ5[Ãöimt¶×ȬlaiÑÉÏR»sî9?•2üéú¤ö1]ØAs²â3”Â’ôù±Áêµi\ÝézÅÝŒW¶÷6òÈÑ#\Æs·V+Áêµ]»“NÕ.,â¼²†ârŠÓ¡ÊaIüqÇ|ûU¨Äo"«¬ »*í_› cpwg*“AÕä+uç-‡ÚÕ¦uƒƒ´ŒqÁÝœtþP4IquOæ QpFj6àqŒq× ã¥X”$N¸,Pô Ž;cšv³ ž­Ì«ç·;™|ÍŸ!mçù v¢¶¶zœ !/É]û~SÓÿ*¬¨n/#Û –Ê8 áOSžyÀçÞ Ó _ë±ÛÛZ[Æ îI†">í’H'qíPØ–ºÕV(m¡A»r:áñgœœuª½×ÙÖDGËXžvŠÌÔæTÔod2¸`dcÊFò`··*vɘ'9\ñ\……ܺ…è·#‰]Ó`bA0ǦxÏr+ Þê[»Ÿ(õŒÈvC‚}xÏ¥c[]Kw?•õ…&ì‚3ŒëÅwvˆ¶Vè!MâÞ<Ã8VqГè;}zëtY­,å33&›’Ùˆä”gçb{Ýúq‘]šð@þfÃ"ØÄ^ïÏÌO íøw¦O¾FŽ;ä¸%€è:ôúŸÓ¿—ªÝ½ÐŽÐ¿™u¨ËæÜ2Žg8üÏOnõ©\µÇ•e»}ÅôždätQœãõéíZ’˜-aœŸ›ÈŠ;sóô­öO‡l5E–c'Û ‚Ý|ÂØ-ôî=qé[ý¢Yß $/ö“åBª>ap[éÔûâ˜ìN•¸¢¤ŽB¾Š{~ »¹/àíÞJGy}*ÂÅNIHÛ¶z*+¹Ùü3Ÿ)c¹»FÅN~T=½:Wµ–­¨ÙApí·uHe¶½ÌÀΣ¸,X玃gai«ê:|ÂÍ"ò£…æ%^yr72Žà±cž: ˳³¶Ôï,¢rm–D…å%^i70Á;á]Œ©»P™_>R¾ úã¯õo]€Iã{„¹bm’u&:€2¨«:¬>oŠåYÎmÒQ¹ý€Éþ¢«^Þ hmd‘Ò1$ê>sÄõǰ¿J°×—ZÙÝÉ""Íw®q½ˆì=ô«Ow,PÚ\HÊ¢[ºÇÉôö?¥[òPÉ4rÜ­}z¤ˆ•|˜;ùAûv½¨Ä·÷—¹>Z¯•/PÊèkÎÒîâUyÉYï'RP66•R9öâ¹Xç•ÃÉ…–y*¦ë\•µÄÓ´³ü²ÌAØ¡Æ9üª7›ËËr‰E¾DÝ—à<àtýi¥ös$ªª©¹—9mÄt¦gÚ1$ª¨±îuÎX9¤xÇÚ#Kk‡‰îQX„vÔ`zƒÏµ Ÿ½U†FC2«««Žô<@Ì#†b†uV!S8\p â·<5áyü_å´²Ém¤ÂHgv<ì;)ÁÀëߟìð_‚¥ñnË›¶’ßKˆYÖœŽÊ{ò7<3áä,óÀB´ÉŸ)Œàõç¼ßYÔm4Ëer‹-ÄD+L™ùÓ€GLàõí^á¸téìcÔìKÊæ9 ÉÛß·9ÏÒ½_Â:^Œ–1êÚ_ïVí2’³díî:psÔzŠô Úi†Ê=KN>j]&䔜’¿—=}Åm èëj–Š(¢Š1EQEQEQEQE´QFqEÿÙÿØÿÀ>ÿÚ ?õÊõÊõÊ(¢Žh¢—½QÅRQE/j(£ÞŠ)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)² t ¡ô¨.àK‹wF8ʱþìj9âY¢e8Î8>‡±ª‚åâµ›Œ˜ò éšç¶n­t[ü&d¶c d«›¾™É>ÕuàÓnÊ®d‡!p2Tž™úu'Ú²m`7.Ò³8;ÈOAúÅy÷‡t¤Ö5 «ËÆ–äÄëˆÇÞØ’?E$úסi‰ª_Ü]ݳÎcq„ebOSí‚jK¹„R–uià“ÏNߘoR2G­v6ím ç$ €1Ó‚£Û5zðºjàÜŒÛAÎHÂçÓªý+6nïu›¦cåØÀ<¨áÀùŸ‚Íøòiñ‰ïoçyG—gùQ@79êßPN>¿COˆMu{3J6[B<¸¡cÔþgþ£Xú†£tº…÷œ‘Çk[¢¸n@#ŽŸBɬ»Ëë‘{xgXÖèæ<Ž:téŸòk>æòqwvÒª,!7G)äÃéI¥‹‘s¡f™b\É+Ÿ¾Äp{u&¢·™×sKµ~fc÷ØŽÝsL·y‹n ”*Œ³uv#€>™ë[¿eó5oYðÌ« 'e³1úœÿ­ ­–igº‘ÉšIRSÀ@Û˜·Ô‘lUÉ-ÖY%¸w&Y$XTƒ’Oԑ¯¼æKˆ€È =Ïÿ[K©^O>µl`3o‚À z}r§êi×·SK¬B`ù<˜T8Cü¿:× …$yŠ2sƒž‡è{Tše·Ùo‰v>]ÔC-»æÝœ7#¡ê?RéöÂÚé·²æ1“»œç ô=GãL±µž ›©]I%f…GWü:RKi,:Ü’ÈÊ`i¡r¥|£ŽÝ üýéím$z³I#Hí6§}:V¡mó’2 Û’Çô4¶óíÕŒ¨†(P0$gs+¤žzK ¸Ô<ÅSj?ÞeŸ‡ùÍEd5Óï¸æ û” årGØŽqõ¨íVøÙ܇œ3I·÷Kƒòóü±ÓÒ£?f€.æHmÑÌVAì2=?™ÅZÑmìôï>]Q–Þ! ‰C¯-Î8àõ"¦Ó`¶²Yd¾e…mæÏ8¨íüÍUÒ-›hTÕãÔd“2ÿ¬£Sòí9 1íÉ5gIÓ&0Ä-õhµ_0yÙцùvc9 6ûuo¥M¦Y>ÄXµ8õÿ½ûà2ÆÜg {u5 Øjqk¯sö¤k ˆ Én:V' tdzsÖ²¯m5X¯g”\¡±¸Fóm”¡•‰Ü£ ûÄdc=ë>âÓRŽþy…µ”ñöàŒ+«•Þ#Nk^IQÝnˆÌaHÇ9ÛÏåçRj·V÷z”7æbíQX–Så`ýpsúÔ·óÁqé…hH;9üŽi–ÓAg—¡†í…ä‘ë‘è1ßÒ¥Ðe´Ñ4é5XYL²Àb—Îy$tcúvöºUƒßÂA’HŒhrKu䑨1øWžjÏÕÄ÷ââILŠZ%Ù…T øòOã\UâBæK¥™ä2)dx ñä×-uLd¸Y¤s"–A·€ á¿MtžÒ¢]>c‹÷וÞì2Oéùt5«£ißkŠ­¡ =ˈ?U$rǃӎ†´tË´Evñƒ,äªìHåŽ=±ùt5»,Éå‚BÑ®ÝÒ¯aÓ¿§>â´õ[øc¶–×O‘¾Ä’t8ûKŒ ÿº0N:sî*î¡} ÛÉ ›±µ·Ú¯*yî1ÿŽŒŽœZ·§éë$ w0"B¤!þèõúÖÇ„|%Ö‡>³x…®f‰Öߟõc‘»ëŸÐV†ü8“érj—hMÄѲÄs÷Mß\þ•ÁV»ÄwuÈ\’?Ùqþæ²µËX¶JA¨­â>"Ø£, #åÇAÇNõGV†#©•Šõn‘È` ÿtÆ:téÞ‘n¡›T·ÓY†|¶œ çSõ&®h!5_ÙY\*ˆmàiÄ#ŒýK úÕ(¥þµmi2ª¤0´Â!È ž?V•dšEô–÷l‚êîÞé˜J>eؤƒÓ¨Ç×4–M¡°·¾–6¹¾´¼i<Ðr†%,NÀzäKVÒ¤ÞȦâêÚáÛÍ®ÅÜàÔÖ+#´*øÿH%ÛSèOãTî­î.åÓs‡Õ&k©Ž9 [ðÀcÿªÓÅ=ĺzÉÖþFžSŽÄà~€ŸøPÕ4¤Ö/¬rÀÅo3ü€u&6Á¸%O§åWî4¸u«Û0§÷6÷2*Dƒ¯î؆† SžŸ•\¹Ó¢Õní?º‚w ö‚=0Jš¶îÓ͵Û#o#ûÃÓëÇåYw÷F÷Tx¡Mé,žvÞ~qžAóŒj¥ypnïÌQ&å‘üÒ§øÆyòÇÒ¥FÖØ"¿é2G†Ï È{¯Ó>Æ´CÅ#[ÙDÿc·²F}Jk|1fçjîïžx ŸCV„ŠóCiýš D-},89?¹ÇÞ<ð8ö©^H¢¹K…ÊbœçÛÛ<þu<¿g°Õ­u˜Q †F+ƒ“œ.3ÆySV%Yê6ú”jÑ#’±€{ã§¶yüM-Ìkv¯r¨âI#1'ãü*]bÆß[2kÚe»ž¶x‰áf ŒãÐqŸlÓµ+5F—Qò$3DÐ2ÂÈ?J­g+Y1fG’W3T¸“Àöü}k7ÃwRh pï \ÜÜ£ÉnÄ*$h.ìxxàúÕ Y4t™ž&žy± ÄHUDA‚ÌOsúkÁR©ŒŠ§å=CÛ»}sÖ³õ+kk ÈÌ$ÏLDÃµà Œ6qê ©oogs2Å%Éàƒ†Ï‘ƒÓÔÐå! ±ŽòÜ㌃Ó#Ž6çÿ×Oºš%ŠXí ’ó™—=Wp<Ž8ÛŸ\CO¸xÂH¶ûØ´¦QþÎìô8ã¹úWâ]Jw¿–È“ B^&ÈõµÎêWG2ÛB©( w¡~žµÍë7 ¬¶Ñ*Ê¡Nô#¨ïõ¬Öc$ÖÖòÅ,k±3Ó“»ßüŠÏu´Âéª «Ÿ~jœpº··d‰‚«œõ'uÛÇ. «m$~TL¡W–ùG¨§K5àH¥"¾Ñ׎œþ"¤–Ù$½Û®È€2xéÏåUn¯îg·’5´‘`B®ƒ¹>”Ô¸ie ,,«)éŸáÜË)Úð2 CýÜó“^½à?-<'d¾JÛ³ùçv¿Ïµ{ÇåI|)dë@[ §ïq»ô¯`ðœ‰'‡-!XASµAÎ@8Ítë¡­šâµÿ‡6úÇŠ Ö–uX÷£\Ûº’$Úy9÷ {W¯|6·Öœgêj–½zö‘ª#“=ÇÍŸB8ü÷5«Í Õ †]å ‹pAþ·-÷öÇ?ç9zŒ±\@±6⤠`¿òÓŸº?!š¡¨IÄ+î*Jd/ñó÷GåÍhÙ'ÄfòæéJ¢+{u<"c$ãÔœŸÂ­ÄÞF²/n&F ˆá:*`’qêNMXˆ5ƒyq:¶ü$0¯E@3ÓÔœšè˜.3¸–ïØçŸæ¿•ZbÌIÁv2ÞŠsƒÇnß‘«,KtËù?ìœ~¿*·q}¦UŒÙÛŸP@þ§5]†#­^ÅnÊ~êÆ ©ÏàN ·ªÇjwQBW ªnÄ?†JN$•ݸ“•<àɧir¥Ä±È#*çB!*'êE;O•g‘!'éçj’1“îqùPÌ[t½ò1õéU®¯ìMvÀ«O&c Û“ÀüñPOr÷)%Áá¦Ý…íÉãõ¤•Ä*K; ØÈä*[™­àhÖïÌ) af•Ae·‚? }qëR\M%EÎò‘&Ù$²‡Ç?§òªp¼²ÞC}¡¢h“j©àî9çê? Ž;‹›]bÆæØÆÐ6âErN܆ÇáøÔk5ĬðìhG—‚‡‡Võü? uüJÓ´JÍhÿ;dŒ=Gô«ºœqE«Ì°'Úl<`‚»ÁÈ£å9ÅZ½P"ý¢Íðì™w=G¥sAº›ÅëgˆA*É$«"…eçt{rSü¹ö¬ .ú_¦µ‡X¢I3«…ÊœîLdazaϵ`ÛiRø¥5‚]#…ƒÉ"¸SÈF~ïôü«±•¡í{i<ãÐ~ô®¡„2iF)[ÊÚ ÞQ'vÒFzÓ5Ó0F°1ÈvmMñ‘޽ë6;Á«@eìáÙ<˜î“×ð${W5<·ZÆ•‚ÕÒß{/åà1àüŸ¡#Ú°e–}_NGX`,ÃÍÙÄzüþõüvœËÉ!ŽGNX–{?0iº=•³Æ±,·%Ÿ{=†éïI5Ì:n™gnê±—%f`¹,ûˆØqT,ôصY'ºÀ‰¾H-±Æ2ÿ¬ûõíP¾—} Ô†XŠ™HŠÞØ®3È=?,žœõæ¢k Èn¤2& §Ë‚ÜŒgŸOæzWE*F†7Ëm [Žyä}wüêÝó®ž^ÂÂoßÕ%œ¼s–Ð>¸úÕ›¹žû+)G±RIAêsÈ€ñþsLÚl$å|·8ÏéߥTº„F‘À$b¥LÌXƒŒœgüç¥Wº‰QÜ9Ù´ÊÅŽpIëSËlºÝŤƒe—±¤CqƒòûqÎ}k¤±¶ŸÅ%ò2 ]*a™™‰ù0NÁÀè9'ÔÖÅ´Rx‡I¼Œ¯ÙôÔ€F%,sòà£ðäŸZlV°Ú@‘Û‚°¢ù1cœ“÷›ß銥ö{ž[a²ÙìVde·3e—=þRy£ ®,á´ž–_²Z3’Fd|÷ã]ÄèGó¬ÛÍ6ÓD³–ÖÚ1²º¤Š²d6ÝØüòOãYóé¶š=¤Z§”ò°GU|ƒŒãóÉ?Xñ ½äÖwö÷‰o#ì‚)1ÄhÍùŒþ•«â«kµYáûRFG—inøÿUõüù'ð­[ÝyrÆ·)–ð6?ÕÆ½>J’Úì­"ŠÕr#Ùvå @úôüx¨¼Á¥éñ-œD ‘£ƒkd¸*PcבϮ7zéÖ-ª:‡ ’ü^Ÿ «vƒ4ḉqæã<ôõçùÕ­¶´¹Ô¤™JÙÀPÜìÊîç!s÷ðN=Éô56‘ÛÚÍ{$ªE´ELûr¹îûÞžäÔ{Ìð×l6ñ°S¸öêÄúŸÿWz©¦ÜSbŸ.ËI¶~Cž0¸,Íýæ9ž*µ…Çö€^×M¹ z‚Äú“Uõ]ZÖÒÔÝÜŠû‘Û†ä¸{e¸úûU­g\Eµ[Ù­ÚÞÙ¦óí™Î²Ã,P>n=IÏj±©jñ¥²ÝÍ †ÜÊ%Ÿ†9o¼aÏýj˜H’XZÏg Å¡0‰ŽJ†ë×?LÕ\¦Z¶dè5Ø¢"bLLHpÃÜŒçéš›R,, m2Ù×ûY#"6$ùlNíßR3Ÿ¦h½ &ÒB¹C¼dôà÷5‰âªÀ\I 7J6×RsÓƒœgñ—­•ÛäWˆ™×p;Ysžœ™üEbj~"Óô‹i|ò_ÉÌjrØ8P:Ž8ƒ.«o¡I£ýÌ æˆÁËrqצV$Ú½´¥fOÜÂÛÄ`å¹Âãé€+6ÿŶòYIöHó(„M呆*O<úâ‰u˜E¤‹lƒpÌÙŒ3ëëMŸ]€Yȶ냳ÌÛŒ\䓘™n3"ÝH ¼A‡ÓjÊi|¶YU7¬Ï˜twÿ=«#v%ØYd“0œýÀGóÚ«´vöw6öáØÍ*(.“ϯ֢1Åo41%äQ–¯>´ÿ.+yáˆ;y’"å€ëϯ֦ܘœ°XÐÉò¶y~Û¸úñZ‘ÙBËKðÙå»fžòªG1*LœòæÏ­DÁ×OÂÜÄîÌOÄh8'ùïLÚM pŽìÇû£§ÿZ i ¶+²â7rÄÙW§ÿª½7Àþµ³Ñìµ)<Énæ· FÏ–œ(í‘·þùîžÒÇÂú\’³Kpmƒ~¨ ´zƒþ+Öü!¤­Ž§É+´³›pw¹û¡°Øƒ ü+«®’·éF(¢€ RÑE¥QøQEQEQEQEQFE 1ERŒw¢¿ÿÙÿØÿÀ>ÿÚ ?õÊõÊõÊ\ÑE%QEQEŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*½ñ—ìrP¼Œ6¨üVW‰–êMê (š[‰ÔDŠ?Ú8$ú ªÚÎúDñ[FdšQå¨ç>ÕBXÞÊ! BãËeFFxÀØöô®WU‚_ ؘn"ó‡Ù¤Ž–FùŽ"àý¼ž:€}ë Pô[6ŠXüÁä:E só£î‘íØUKI&™.]¦ieX¹VôÝ×òÏé\®‹5ö±­q5Ì—WQZçcœ»€-ŸaŸÒ¹Ýk½NJinæâ8yF98Ü9üjºK½KÈÕŒH?w®lœç©íWe?Ú·e`0}™L¸<&2ì Ï©ö«ò¨\²ÂÛÇÙÔ¾ Œá@öÉü~”ÝGPO¶ ]†BûsùÅ-Ö ,l Ã/ƒ·Bóž½2juÍâÚYù!†O;qØwüÀâ¹uqªêSÿÕA+"7£)8#¾pGµsžt÷÷r´¹d†B¡±Ügù{V–kÛ©L£+…C{Œóü©ÖÉmåÇÛXÂÿ)n2Ýxõ¢Ý!1¢I‚c<ãž¿:ˆ¢,˜&3Æ}zÓáòÿá$ÞX팒¹þ9r@ö ùgÞ¤ ¬;“òÇ’ƒûîFOàòÍ(Um]Ü’Dy(?¼ädþ,×Sm‰d”° VcŒ ýrÃð5±fåÎ3 ˜ÚVÆ̧ ýw0úZˆ™Z²ê§#ñÜß•[Þd¾«`“É=Žä~tòÉuâ‰-Òo/w;œcS0ÿ€€hšW¸ñ ,›23¹†0U{þ@K\G"“¶Lî§Ïç4iVûõ(æ¶‘„w(wɵˆ\ÿ¼>Ÿ|¯–kv;.æÝÈI6’~¢‘¤ i *•(9 oèséCIVšlJ•ƒ9Yy ŸQ‚¤ÛéJdHíìa*SËV @ådä‚}G ƒéO˜¯™ÀÊ„qéŒ~§ŸÆ§Õ IõIbE+D¾HNz(‘<ûæ¥Ô!Yõ #PDIòÂóÐcò=§gd,,£¶„ÉåÆ ©ltÜOLöϧL †+?²Ú[Ú¨—ËÆ°»€bÜŒç‚Üv£Š×ìÖÐ[ ¢®ÀÇ ž™ìO§µ2[+‰õ˜oa½•c†#¶ÙýÔŒy¦7s×Ó§J¿ö FçP†æŒCmÓ8ŽF= ãùêzŽ*ɲ¼ŸQŠê+†AÆ„ÝÈÝAÿ{žµ_O¼¿Ô&¸6qÛAAgFÈ=1Üj¥§M¨Ý\Ëycmog …g”#`“ÀRrGÓš«a5ííÌò]YìL¼›IÎxÁíô­…_+÷Šá[+ßß5©,ñÙÌn-nDRì(’gsgŸ½’zûúVœ’¥´†h&¾ÝªùÉÏ=sëïQì™ )ºkt“æ@y'vì=øª6¯}c$²ê:¬–v÷t˜¹ 9 ÑG¹ÅP·k»9¥{íAí¡Ÿæ†3ó9…ì=ø¦\[Ç)är…`Ãw8#¡ïžõJâDy&¸Är9ueÉåyê¹ïžýª Ý嘄wÞ¥sÕ}Æ}ûÓ‹¬[ƒn’W÷çžqŸLz c]-Ÿ˜Ïqyp1y9ãqç# ç=ª7¹[Màù³ÝÌ1‘×7z`ŽïLxɸ\]Üì$öÎ>Ÿ…S}:î[ôÄ ²NAä!bOq× úUG±¹{Å"%1 "áI$ûãéøU‰åòbT„GçLß¼cƒå¯UúúÍo_Ï›`¶PÅÔï¥-;¬`^©ƒÑ~Ÿ¥l^L–6Ëgq›ûÉ ™ŽÂ:§Óüš±o,rZKd@QÙ7ûË×ó?ÖµtíRÎmóÃw;mVÝÞ5\bDå³îOOÇð«Ö7¶³iZ$ø·Xá.aדŸ©þµ ÅeU;Ù ÓïžÇγ'Æ¡g Æ]+KAT!|Æ=Y‰èÇH wÍR” Ø"”ÄÃO°@T¼ú¶z1ÇSš†eKÙbF-Û|kŒ@À8õíù~¾ º¦£m KR^% µFÕ¶3Á<Ëðk^¥ýôhÈ‚ÞÜ—q€00=Oò¨¢óâBbv*Æ2rPuíœv÷ªsÁ0ñ ŒH#™JK,mÎÀNà¾1ǽSš9_[³‚tØêVYœíç |cóªþ#k¹-na±Móä HÞ}3Š¿âÙînêU/*¶; ÍÈÞÞ8úUßKq2ϲ”0 †HÈÜ.*[;?³ÚYé°±&(ÄC#ìOçü«8ZM{q¥è¶D«Cƒq휗cø1ý*Ùd¸—OÒmI bÇ·RÌJ¿tñ‚¶èC,?»AïÀÇךÖñuÄI-¾m†K@ ‰F:€w­O´d+"Aêx¢|š¶W8eìÍyür?:’þ ŸÙ^·e’då–PA$ÿÀ‰ñÖ¤º‰Øhð°–EvGg?ð"kWm¾!6ò">q $”ƒ™‹£=±éU|EƒÅ nI§Z¬ 4’s)cžØÏAÓš­«ƒˆZŠö,+$’s)cíJê@H!7 7GmÛ@9#ð®ý#Š>Þã|66äEƒÔ*òG¾2?ë‚Ç&í†èía;1ÏAÉø®~êo"ÞIo0³s‚Ëžqùb¼{PyMÌòÜ!å@ήî÷ãòð5æ·ÒH&žYÔ¡xÃ8aþ¯<ãò¼ûR™Õ®gº·…§ÞÇåxÏ<ã†ëŸjƼ)¸†/4";²¬„g¨àðA¬’CÍç›ՀæùYO=G^4éšé­e¾†Òš ddúŒô§Éç½¼—qÛÆd‰Bàp@à7Ôg¥M$nme¹ŽÞ7xÀGÔg¥C~»æT–SƒŽ1‡¨>Üuö¨.ròmwÙ™Œ*zŽT`œ¤2ªºzÓOî Ø‹‚È«/‚äçïÓó¤|ÃÕbG“‚ÙÏJeÔ­oÇF #òÀç8­Í#F’ïO2^"Û($C’Œdö=OÊ´-lZ[6’ïm¸ 6ÇŽBñŒúzÕû=:K›G–ø­ºàl¸^1ŸOZÉÕü?k¤XÏEYw'h =9Ï?íÚª_ivö6¬¨K« áÔç*8܃×Ö³õ=" >Ô¬yta¼:žHè;ræk¾ð?Š,o4í;Gk„kÕ´ å¦[j¯1ì}»W±x#Å7V:nŠ×H÷ÂÉ\F‡vÕPÌzïŽÕê>ñ%Ý–Ÿ¤‹”{Áf¯±Nâ>cØûv®Â» êih¢–Š(¢Š9¢Š3ÚŠ(4QE¨¢Š(¢ŠNERŠ(¢Š(¢Ši¢Š\ÑE%QÞŠ){QE%QŠ(¢Š(¢Š(¢Š(¢Š(¢ŠZ(¤¢Š:QEQEQE¨‘ö…Î#á}òG?^+„ñèV¿‡Ì‘J¥¹*ŸíG?^1ô>•Ëø¬¹MìH²«îIýxüª…Œ{u“%cxö±#8®sXþ²~'º¸]ÑÛ=¹‰ÚAŒŸÔËð刵ñÕÂnŽÝâòذÁÉ Oò5OLÓ"ÓmJÄK4§÷’œÿ)?\Q¦i±éšiX “1(òœ Ãa'ßÓÿ×RXXGabV"ÇÍ;]Îa´“ï\牄wZº:¹G´||«‘´óƒí\ïˆgÕ‹åµ¼„ £€‡œV&´«6£¼6Ž6žqT-ÚMWL·¹‰~ÎLë;'\•Ü ôªÉ%ÞŸ±'t«3']ÅK(=>µV{Ëyy Ê&dë’¥€?Ο­˜tÿ³C2LÏ3žJnÇA“Èã?­;TD²6ðÌ’•†Ï-7{dþ4íL¥‘·†T”¼®yi»²}³Z ¶6Zœo4„Ü<~DKœðIôϵ["ÖÎè™´í“ëÀ$ÌgÚ­0µµ»ÜîZwO*1×€2H×ÚºXDR¯wRsÈÀûèÖðHâÒ/!,34èCc ª« ø"µö$zuÌlGï%v2U#þ‘R* 4ÎÄa÷}Àü~ð?UŠÕ¥´¸Ô®.¶‘W)É;€üypÄÿµUÖöóßO6Y`e^s¸Ç–Ÿz ª˜BBÈJ"‚>fÇOÉOà­%¼Œ°ÙÇ1uÕÖŒ‚d€»Iíœ~'½$2ŽÚ9K*2²Ä¨F^BÁ>ý~ŸZ’`¯,h9ª¹õ`¤õªÍÒÇqâ¡b¥"‚(¥oái=¼þÔÛI#f+o}½A ¤”ãߌ©Á¥1ÆÖø¡d»¶Þ¾ŸZ·¨KH Yî ²63‘ŒŽÿ_¥Z»òšÅj–RîqÛ}ýU«¤Êʈ̀à’>a×ñÇôéX3‰ôëØ&XáóhÜ®Dú8ä~+:Æê)bó ‰UŠä8ëÐútü)R9%P^Cÿ–’8ÁÀë×®),t{ÍZušövµFoÞÜÌ6½ÈÏR)¶šeΣ*Ëu+[©?¼žO”:ã=j®í¥”ǧÙOŒÿÇÅÀÚžJ©9üHÙ©nîô8›ì>°–æç8kËœ…Æye_êG³K5Þ–¯ö=ÊI¦Î Ôà…ÇvQýqôÍ[YE–⬲\íÁp2##>¹ô銙o¡ðÜ.–óÅ.¬ñ•’loò2鸟N˜§ûdZ,L˺‘Œ‡—ïùägÔŸN˜Y¥ÁK©œ«|¬äóÓw¾9 zþ¹ÐI$m³}3›‰˜ý‰_'æÎ<ÂOPHÈüèÅ#ƒU¼•¼é›ý_'æé¼úã’¯ëwOHšu%‰ †MÝI#'>üÖÿ†-,޼ežc"£¡…¦à¼ŒsÕ¹Çáô­ÚÛûU¤–RáXym'€'?ísþx¢ñÌ·ì6Øv„ÎÉ=‡ùõ5‰d[ÿÏ·ÑŸ-aC1ƒ¹`3ú}MC­8¼ñ4±ƒ”;%8ÁAÜǰý?Ϲ¼»å-´Ë›± ‚C±@YàRzáF}:sPKq©\Y\[Zé׈.Ì®ÐÃû¹_…TSýЃ8úsPË=ì–ÓÃŒ÷An Œc #ð¡Tú« uÞB©~}ñÛõý,¤Œ-Ä+,‰?h÷'q@ øÈùü¨*q’EŽ/8†n»Šà‘øgñÍ\’ .þØIên1ÀOå]eΟk‹â)ݬ«Üª§ûƒ§­tsY!Õ†³+02mq0@QÁ?÷È®vêkûbãPŒ©-ÉE\.rsÓ­s÷–ÚÛjwz¬ctb"ø\¹‰9Åc]Á«BçQEÌkeî<çsE»»MÞêP}–锯àsɉý*}"{­;׺­ä?f¹žeøg$œ‘ø‘ùTºl×6zÆ£w‘s,F$ÝÃ19Î??*´Ìâá7 ´XÁîa“ŸÓ?Vº’á5ˆ. —’Ï Œ;ä™[éÀ'ñ¨.LãT†fRïmò¡È;œd†þDÕ¢|‹ÈVf†v㌞}Ïë] ª>®X…ŠI[O²’iÀ'<“ϹúÖÔ*Öz­°òKW’LðNzž}ë–±Òfo´Ãwºe¸¿y‘ƒdH  Þ›};ãŠæ4ûgÕeš6/ º¿wÈo¿’X3vGçŽ+Oµkó,R3Ê./]òïå‹oLåÅu——JÖ>PR ¹õÀ$ëéúWk­ë¸Ñc°Š3¼N“6;*ëÎú‘ë]F©ªãN[TR¡‘„î¯ zóúW#âË•·Ð «Æ¦@#ÆUÏ<Ãμ×Wxâ²E†AÌJ¸áß'ûäãð5Àën±iê±H0cUbÆl“ËŠäžÚ7Òc¶H^éĨŠ`Æ¥y {åYþLM¦Ç§q*±\࢑È¿ô¬È ‰´äˆ#NLŠÅs‚€ƒùÅ1îoÙg—ïã™ÆP{‹¦óÒòŒ3+䙀úÿ>”’K7ïQÏ.@Üó¨)f–v2¤»ò¥ä}õ®è¶3jZ¼i} [W'Ù çû¢¬i¶rßjqÃt‘—…ÎvœséOÓ-$Ô5t[¤ŒÉnÍ’§$žÕØùL‡;· ,c{ãôìýz÷v¿èÂG%ÂÆ.¸S’¸ôã±­«»ôq+y«2üÆ>¿/%qéø×1âY$›Ã¶÷Ig(¬ñò8nÇ=²sïŠÉÔšI4¸|´ÞÊ RzO>Ù9¬}hÉ&‘ Š=ìQž‡<{ó]G€|<ú|3êWÖ‚Ë¡A¤xÝ©-ϸ•ê¿<%ý‰§¶¥{…â©Á^bLgo®yçÜJôxm´›¾¼…Vúä)?(ÌiŒ…ýy÷Ò»í«­¥¢Š_z(¤É¢ŠSEƒ¥QÍRö¢Š(¢Š(¢Š(¢Š(¢Š(¯ÿÙÿØÿÀ>ÿÚ ?õÊõÊõÊ^ÔQIEQE-RQE¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š?=¨¢Š(¢ŠdÓGo Í+„YaP^ÞÛéÖrÝÝJ±CîwcÀÕÔVÒ\ÜH#Š1–cØUTÕ­d¶I‘‰ó CÁbqXéã-*})/íÜ¿š\C `<Œ£$cœ{}EgGâM>}=.árþnág†r£$b©O+ÝïFDN!<.FúŠäu«½yäÕÅ©0ÛÎÃ#‘ànûž¿¨¬ ¹î5búˆ€”†]¦' *àdnõëúŠd,¾H’âS»$}ãÉÈR?:~Ÿ¸ƒ)‘®æMîJŒ»`’@ì2Ë÷½qRÙçfíæa;îbGÞl; °ÇÖªê“Éo§La\Ì£åõ<þ}üê-jAk¦H°ß6ªž¿x7עΣÕdû=‹ˆGïr6¨?ïgëÑZãöê౞Ö!oæJØ;ò?jäEÜÓ†ÃU‡Ì‘À;ó\ÒÜM(a$(bÞìÜMM¢º¶š0‰Åb©»“óv“ÁçëRéH$Ó”"P›¹9n¯ÏÖ¤Ó@{Ê hp»¹?7aß‚?:[››«;uÝ-À#9ù³Ôwàô¤žæâÖØ.Óäd‘’\Žü&¸žÞØYæg#8?þº†i ^ÚLm¸;|Ç8Õ{dô>€Ó±wm#[3cy îëÓØSµÛÈmó3cq î×ùW_lùBÊcëÛó5Ñ)gFG%V2÷nß™­µ%”« ¹íùš³ì¹@ÚCŒ68+úŸÊŸ§\}–ùífD0Æd°VQ’ gèIϰ§YMå]4ª˜:¼M‚¯ÉsøçðªzžŸy6ž‰a(PÜ,Ðoáw Œg¯Ì¤Ž• i“Í¥Çic:½Â^ -÷2Žî¿2ñÒ { åÓ£·³•Zx®„ࣦzüÀúUÀŒ±²üã#$ñ€°¦ÝY:I|ŠåÈó ãh O=ØQK=³+]ª‚ò#Ÿ<ÿ‡åT5M-o/¡ÔcsÄ`«6)9*ÞÙÉŸ­6þõG]X1Šh†$n“'$Øg'B}pËÈc¿‘u5cÑ‚ðC‚rA¹ÏOñ¦ê:~¯êvBçi,›Ë¬ÃÕHÇ ŸëWîb±Ô­­bÔôõ»+— åÀRÃŽTñƒϾ [º¶±Ô¡·P²rÊX°ÚXqÊôû Õ¸¢†Ü,6öï1‚¿<…ŽqÐd篭\aen˜´³0[Æ ¶ù2Cœ Üàzç׊·‹höæ(m;ß'$g<à}jIEnecÖmÁAõý;V]ï’·%–žnfqûéd—ÌHÔñÛøñíY×f5¸‰m,|ù~öG“zƧŽÜåRIóàFÙrz7ãÒ ÔšY¼›hÉ,lp1’è»ç¾}©—æI|¨abò!àc$c°ÇoçJD¦/1É»æI·8í×è>•<ÖŧÚ%• ±ˆ†îãib@£©ÏðÇLœSæ´½š4’­¿h›ˆã€:Ÿaôæ¢`‘Üv‘FÓå/쾋“Ï¿áUã†ïO³óä#™gƒåiHà'î $äúúñP¤0Çt,í|çÇ2ÍÊÒÀŸº “øúñLX‘Ss°R-´mÁ'®2z *-ôKyO*®I³•Pƒ3·Þ9'€1ž¼qI‘nëæÈ˜¨Ú1†cÔç=? © ÜW—³,PÜf×ftÇD8Ó­VÔ.¢¸¾ÜÝJö˱$hÇ– c'‚* »”¸¼"¸v·RFŒlsÁш×LÄq‡Ÿ°{¹ÿ?¯E“LmÂ;-í–kõýê†þý'ŸB +³{Ó¼>D,·kûÅ ƒûÖïÏ¡?¬Å- ð‚y±;‚pNw}Oôê:W ¤ÖšÖÍNçn¡)bC†,:3ÁäpëÔW+ ´¶º¦ÛéÀ½“$‚rŸV¯°Ï^¢•¡„Éæ”i$#jŒQžýût¤–#a¦}¶KÉ`’æäÆ"ˆacs»žäŠl¨öVj{¹"{‰ÊùQŒAœóÜôéKfYáÈÂ9ç¦OùúUMN—Q¿³’Q²Ñ]ÉÉà*ÏüÇ>¦«i62_^ÛM(ÛlŽÇ“Ð(ÜÇõýi/®æVòÛ ®=› ç[Wןۚ¤×ÌRÖÝ£†%ÆÜ«åAúpÞõ¯qwý«$бX"dŠ1Ó!²úu¬µ;mÆ·:{¬’ý¢ÙÂã·_ÇN÷Vµð¯Žn´Û´’h.bH¦;¿€¨ÆßLgôª7𽝇ü]6ŸrHîcXä;º)QŒzu«šîŠºÆŸ¹»x£Œ…ÁÛFã¯8úš“\Ò©§ÛÀo|«{Mò4{9ÀÉÏSSkZXÔl`ˆÝ˜¡¶ÜæCÀQÙŽ:öúšÖ³ -È`[b®ØËHägùÔÚ!ŠûÄͲ!f ëÉÁüóSél—z¾á¸Âˆ|’Ö ùΘÎ#Ôž`wÊ@Œ±ôÏ#ó¥6îù´ÿ\ÜC3Ï;²Á#ç Ãr^„zqM¸»û&¯4ÑÊÓJì!f<‚w ¯éš‹vú‚™I¯–î @Ùo%ãªÛÅnªg¶8Ç¿&«é6ÿk…îÝVáËÁ-Û–I­#&í8…'÷Å]½Æóâ»®Én·ÎVW'øÙùñÆk§šV‹ÃÏc¾L;Pvþ|T[qc(•ŒòúSl`K@e•ü°ð¬¬P“qÜ çÓ'ùvZD¶ëæHÛF®Å@ùsÈúd×%¬jgT³X?Õ»•bFxÿõóŠãõ;Ë—ÔíÝ>ë; ‘ž3þ¹«ë«†¿·dû¥ˆÉãüšŽÁ–îúùÞ2¥—×!‡Óð¦Y8¸º»wM¥Waç¨õý)-\Oqtî›p6zò)dæxåPŸ»‹ é‚y¦ýšMèñ¢îDùp= æ›ä>åtUÊ'ËÇLÍD'¾–'"2‡Æ\c×µGæÝÊ®|µi7uaŒ_Ò™æÜÈ®vûŽIÀõ§ÜL³[µËe [P”\³’pþ9ëRÈë,FáþO+ v™Žp§Èêñ‡Êùx_rÜðt:#n·…ÌFÝÿ«c¸ƒž3ïëõ5µ¥ÊªÐJÑyDÄvÆNâÁ®ŽñƒÌä1³úžHÏÔû6¡Eº!¦ÛÁŒü„sÔg⑆ÃK*Ü€Hú~_¥NÖí$‹%Õ©xäù•Z@ “É=øzTÏ ‘Õ®-÷£üÊ¥ÀêO¯ùéV!ŽÅ({ŒŒìF2? ²ÛÍ'ÙíÌ$}ôgRqê`6ô<â¦U0Êæ(LXûÊXg Œg§¥0ܬ«òJì_”Xc'PÀãŒñìxíUæ½K¡û‹‰yv½¼Và»NCƒŽ3Ǩ< –ñ'ÿQ3´²aáŽXÊCƒŽ3ǨèzSeis½÷#j§ÝÚ3ÐãëÓó÷¡¨-ì×*÷.DŽ<¸mñ³Ê\ç Np=y÷§yÔӇϘÿ$pão–3œ0:çPÌâElÑXÛ¡7•>därØ—ÇsôäÛ‚ö8b¹Ó4«VKt'Q½*wÎ@%‚ú/¾;w–´‰nl¬-ŠÙ[)7—E~yˆ`aÁÀïíß<ê—½åúÛ;EÂ"¶ýdƒj3÷àáÈöÅQ¸Ô¦Ôgžõ`qoP¶‰²òªXuàüì=±UeÔ&¾’âð@þLi[xÏÏ Ú¥‡±ùˆö­+->Ì]±Òí%¶K¢’¼oÙŽ7gŽçVÚÏOÔ|C ·‡­%·Šá¢žDoà9Ž ô>½jе²»ÖbƒG·’•£žEoáÐ|±Ôuã?ýj䢵–?C|…¦iá•å’B Æ €Š qœ’ ÷®.Ê3iâ˜õ`þ|Ò$²Jò…`§!Whn,Iü3\ŤF×Äé¨ ÌòG+Êò`…ä $“øfº‰r‡!!RX¯Nƒ¿Lçùš·©ÚýªþH§]¶Út&GÙÐ|£ ž™ÝüÍZÔmÖæñã™JÁcvÙЗ>¹þf‘X2²¦Wwq’©üɨôùR{9L‘‰¡DÛ9+í¹ºŸcM±užÑÕw u*QHéøŸëLxOÕˆX÷ž„ƒOçVš Ôìm­Â¢®Ë}ç•gr“ùçó«&&‚úÒ@UbÝØ°9þγ5Ïì{­VÚöìýžñ¢²³}áœàc‘œ÷ã4x¶}WÕ­.îÇ“x±ˆ¤Rs»8#AÈÎ{ñšgˆN¨j–÷7?»ºT²“÷°r ägùÖͼ†Yd€4r#¨£Ðð1üªö4Ó_ÜZFö÷×(ê) TÞ8ë€jí«É5ÜÖêÐÍo2q’åN³˜Ä·W-“åÆYAý1ùT:$ÿ`¸ÖuBÃ}µ£¼*‡¦ÜÒ¢Ó¥ûº¦ OÍ Ñ¯§LcùU[]¢æbp¤ÈÄ÷!C`zõ¬=íK™˜Æ’IpÌyÜË|{OëXú@o±ÞÌP;ÌÌ{² oæjGV‚À4¡ ²IóÈ\psê#ñ«ÓÄt_ Ä×S]\^—‘æÙ·å9Àä}I«’¡Ò4Þa\Mu¹Õ¹ ŽñÏçQ[ ©ä¸¹ºRÒ4å¡’5ÆØñ”{Œûg½HóÞjbM^â&i¥—ÌŠx< Tmï€pO°?YL—7Èú„Ñ–‘äÞ“D1±G*üqŸl×?ã\M£yrAÀ\(`NÕÈF?Þ®ÄX–ÅÚTŽI$¹ùÀùWå‘è cùV‰—Oc*#»\|݇¨üÏå\´— ÛER"ŠŠWî:¡9ÏÐV<“™“deB©Qò°N¹úVOœUŠpÊ›B©å`½sôªßc76ah¢l“ƒŸpGÐÔg3[Œ‚ˆs?<Š…âßióe‚HñüjqæK ²:,EX¥yÁQR|í »(wGÓëNiólòI¶-£ #ú})sr‚+yLW ±%™j0=Hîxãñ£mÍÀÛ ””mI$Q…`z‘øSngAöfÛ!Ú²Jƒ ÀòHïVN¯«ˆoR(Z;UBÈAË2€w“Ôñùâ¬-æ Éq0²[ì,0y`'žäÿ:ž=CRš …·…ã¶ÚHþó($g¹?ν?Âú$mem¾dÅŽY¤nX“õãð¯uð¾‹áëM>ö@Òç«HFXŸÆ½ÃÚD‰mc{6.çÉÉ.yb×­jÒ¢Š)sEQEü袃Et¢Š^ÔQEQŠ(£QA¢Š­Rc½R÷£WÿÙÿØÿÀ>ÿÚ ?õÊõÊõÊ(¢Š(¢Š)h¢’Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢›$~dOà:•üÅA}möÍ>â×vß:&w¦A¨®¡ûM¤ÐÛæÆÉŸLŒW)-Š\nŠ`Ù‡°' <ýúÕáÐé÷v·q7™m–;Oeo›ëÆOá^W”5ŽÔd½¿ÍÇ¢·Íõã'ð©®ì¢¾±’Ó,©&Stgk)ûäãõ÷®‚âÚÎ[µŒ§—!hÔ¡ÚêF>èvŸÏëz{{ilÚÙ6„rQJ¬¤`ªœÏéÖjŸj»…2±[\’Ab@8€ä »mg¶¡ ;ìÒ I$$´v Èf uò6bRÙPÇÉàz‚±|O«›`–‘HMØô#¯èkÄz‘·D²…ÀÙå†ÁÉ#hçô¬­røÂÒ&ÆÒ€àç#k ‡µ¬§—÷ê ó«X©pöñY[÷«ó†ÎBŠËIÚ´ûÕƒuÚ+JÑíþÆ $´¯ Y>_l®kFØÚ¥‚4LÍ;˶PW§|Õø´Cf•¤Û&GN82âY´MÅUv¶;‚99õɦÏ,‚ð”ÜB‡„r~¹4ÙÅÑ+’ÚqéŽSUåŠíf>[œÍU’;„˜„a·€9¨'YˆVNÁ¥»¸O±ËhUóœŒöíÉý>µ%ÄÈm6¢sž.OéNžU6쪤*žsÿÖ­lvÑ'”mÔ.ݸ¡çò89ÁèO¯5§¥ˆÖɳaʆ1“œíŽÒzô'ך¿§—Ávì9ŠsCÔþ5°\9)e*¼óîOnÕ¡uÙâ©êñëfòŠÅ¼m“jïôÏ&c›n!´]ƒ9`½288àtè=)tÓ Š¬vñÉÀÀ$uÀ'޽:S¬Vh#µˆ ž8$uÀÏ;zUƒŽùÉþ#’öÿ>õlÛÛÁ¦¥ë8‡c‡dÛþÉô9ç¯&¬ †É.™·á†öÜËoþµ8¸‘—û{–8\þ¤þU ÝÜ7—0¬Cí+–f*™ì:oËð¨®.bº¸#hœ’I žÃ¡-ùR¬­ 1Uu`¸ÂŒmëÛ¿^µÚ¤Ó®âŽU¹Hö/ä1Ó©ë×ßóíg;´i S'Ê#Æ1øÕVpLWnÐÄ´‡ €zŸ¯>ÿÕ–°ÞËfß1<á0vþyçëP\±cö„b¾d­åÓ3úþµ[[æC¨@íÝß?ÙöýÒ€c>Ç$ÄÔ¡!ÅäNÈÓÝ?“Ž›qŒýyýkž×<)¡¯A«\jI¨°È2Y¿ÙNIªú¿… ÔuxµKVa! "”ÌÿìÉÉ=û÷ªÚ§†â½ÕãÔ¦Ô#[ "d—ÿdwÉ5Lºžë[¹h’‚ö‘¼3JÃ9-ŽPö&Ÿay,Þ&•íbŠHmbc(v gÚK`àvÀÏlÔ–WrMâ Z¢·ŒïRÀ™pIǶµZ¼½{-:âhã±…Œp̹l*B ¦’aµÅźÇ?Úm­¿Q2™…ÁRGx©&œEkq4H“™íجŸ5Km ìA#Š–R¶“YXHËö™C²àv ŸÕWñö«:†›—›¥´Ñ­Ë4¦&Çb£~}ó±G×Ú¬]ÙG`–wš‹;y†3í»?ŽÕü}ªK½CG…Ø0õÎNOÔÿ:Ïñ,ͦGm5¯ÙotùLrE×z6[?íèCð£¯ÉºzÃ$g¹³£¦~ò¶NïÏùÓeRº\r/ÞÜc vî?"9•£ðMì|ÉÍk*v;Çä@•IóGákK”d”Á"ú î‘Ås^4Yö±Â±¾ÔæMàcžƒ¹æ±|Mƒª8¶D¢ò@»€Æ€>†°üLK^„€ ƒír(-ŒpIþF¹Xä2ÜÂñ¼BIʳ.2ù²GûX¬häß::²“ TŽç${â³#´ŠêÈðYHê9ä{âµ-,[Rdh%TT‘GËýÑ×ú ¹ ±º ,r#uÈ—?þ¡SÃhoñ"HG¸è¿Oʵá¶k2¿39™üK’qúÕ…Óíä‹`b\˜qÔg8ýjÑÒ-f·òƒàùÆ23œ~µÎjÐXÂ?{>Ë%ù”Ó3Ï>•›y vÑ I.Ûuà öéøÖ]ÔqÙ ù¦Ùl6¶nESîQ°C6è&¸F(G ›—éÁÉ©´(äŸÄšM»Ëº)nã%HÈ ¸ŸˆëSi +ëzd-.褹BTô¼ûu¯uLgã5ôHé^Ü:RÑEQEQEw¢ŠZ(£4QEQE~4QAöÜ…÷úzŠÈ×®ž?³Ú¬­ Ü>ÖuûØÇ žõA£Š(™ ;ͱñÀ^2yëϯÌÖai!´6Ò€ÄüˆØí'«3“Ï‚‹yÅ´ÆÕ  §“;OrÌO?•v0;ËAÈ|Çèz~U¾DÓYeX0^pçk{‚8ÏÒ·™-¦UƒÐ1ÃU•.û#ò²%èÀgžxÍ:?´_ÛÃgö]ÉuẨ¸«sÁ#¦y뎔/ŸwV¦ ¥ÀâU]Ø<ðHü*PùG$+–hÓÜwÏåÇ=iÖÉwæH%i)L²Ûù€‚äa†9Ýž½8ç­,ÜE)–)Ö9 ˜Üxaß9ëíR¼f ¸Ïn½Ï¥[š lR?-vq÷½}?Ïô«RÇ%¨`ù×ÓüÿJ­c¨%ݤ7QäÇ6ãÏPxÆ}pëU†°­ogx‘³$ÆC2 žAùsÇcš¬54hm®•¤»Ìx=C'éŸÖ§`ª9“8ÇC‘ƒÈ8=:S^Ð[‰<ëÈ„¡²¤7!°z(kqÿ2lª‘œ©Ï àôløfÇ `ð2©ÉªWø³ÐÚiÙïu²ÏåŒà/¥ÇRXýj½àû6Œ šVk«Ð¯.Á6ð }rOÖ«hž!û}õÓÙZ°¶IÒì¸ÀÔ§š—@ñUÁñÒi–J¶²\AÌë G<§>Ÿ£xŽiµ™^ÆÏm³Ï2»®/8ì:þU«43^ÊòB" #à—s¹@à|¾øÍ_×´+ŸjOy§µ¦Ë§ åæùãUùAÛï·>¼ãoYÑî5Ë֞ͭö\0^O™ü£å÷Æb’Ýã¶óÚ3¹¢a[‡SŒÀóQX\Aáïí;«6K†´d´µiAË>0ÅT}še¤Ñhé=±›v[{rã9`0HèyªÌÂ(£, ©?ÄGaXQB|›o1d[a–ÿ–¬:íôŸoË28KGo½] Q…Ü9‘‡\{Ÿ…3G±’(¾ÈdßäʼnŒo9$þ$“ŸjÚðÆ›5ÃOl$Pm`håã¶ŸæÄœûVžƒg$¾m¸q›hŒr`6õ9ϵ]%$šÝI-ÌLàŸË¥Oy5µö·¥FåLPX´Ò/ð‡*Íùd-Is$7z­Š1SV¦W^ÁŠ“þÈx‚îêÂY¯\•—˵ã"*w>;ägü+šÔ/.¬D—ò÷GåZ’2!Rgö9È×éX…ÕÅ¡–éòÓÈž]±<ùJAÜþǨÿõT¿D[Ë*Ÿ1A'nqÉüÆ*_‡ µÜ–Ïl—0á‹!äc“ÇÒàGމ­Þ5"XÀ$¯QŒ“]PùHW©†`UŠñ»§þËÈ÷úV¦‘e%„r™ÿB¿S²ñæço\z.H£Úµ4ËF³ŽA!ȶ¼Ê1oÎ:þqM»·´–ý.”¸FxÕð#Ý“éòŒRëðÙϪþþc âåÕÆŒT±b;qÇÖ¬Ek6 ­4¦)ÖfTlrŠÅK}8©îs:I3/ï *ŒAÈpz~¦v õ«K‹Ù Í=£NVto»S“×ÜRkK©ÛMu"í¹´dˆ²œ‰Tôúòi¡L VÄ€ tg럦(µŽ8<#ª1•^5ºXáÇGIúc‘Eº¤>¿bêÈ—c=™ÀŸ§q\gÖšÅdÞÆÏ$hÇ™¶® qÚÁGKU‘‰‘]äVm£ú äõ²ŽmFÌŠï »6ôÏý•Ñ"·³‹˜ß`Èb“îJXŽO®ãÛõ¡©ÌÚÙ#Ûæ(}Êßv]Ç;¸L~9z»¯—må•Ü÷+•˼}Æ? +—»a¦Ü¥þp`˜H·9Ï\}ë* ‡Òuk]E–¶¸YBçïFGãƒÏ½f$¥ÞÁ~ƒ&Þa.Òßx‚2?}ëÜ4›©ot{;©$³@Žê:)* ôV™q5Ö—iqqŠiaG’1ÑX¨$W·ØO%Îm<шå–%wAü$€H«uj¬QEQEQEQEQEQEQEQEQM}ØÊòGbp =¨9íO¢Š:ö¢ŠÿÙÿØÿÀ>ÿÚ ?õÊõÊõÊ?(¢Š(¢ŠZ(¤¢Š(¢ŒúQEQEQEQE/j(¤¢Š(¢Š(¬½or¬. #$cß·õ®âŒs,Æí·Ì(TtÝÁëÁ®GÇË2Ág,nØÞW¦zƒüê¨b.øm±àà’GÞ8üksG©Ecç4~|6ûŸ³¯ßr?à_ÈV~Jê ff)æÇæÁ%”|ÌGãü©“ÈÅ3nÂF\eÿ/ʬ̱ÚE9‰ó SJÑóÈ@p­žüm?ðV$ m¥1G#²{(8?—äkŒÕuWÖ"!ìÜR3ò0##Ö¹}KR}LL"æÖL2€IØsÈæ¹ûëæÔ¢ M»à® ùNyFF–bXMÏr +ÏIÚHãaV,Ó•úUgi#HÄJÛš\’>•z9å·²™¯¤?¼As¹8ÿ ¼·Ák?Úß&E(¥Îq“Æ*âÌðÛKö—?8Ø»Žp3Ú¯C Pir M²? ?ºGøU¸a·‡G˜lÄÒ(ÇÝ#ü*ÄqC™ ÛûÙ8QèáP>ž†Ö%ÉysŒñì*±Ck ¾U\ã°ôÙ¯Ùã·È«œvöVe»M=d¸š(¤O˜«` ÀÉíÿר$Šámæ–4‘9*Øã¯ùëPºN¶ªòɺòU°3“Ug{W6ö°D“\4âP6c‡÷çµE#Ú¿‘mK,Í VxÀ1ÃsßéP;ÛHa·Š5–Fp¬ñ€6cï}kFÓJ•îd´¸µ¬Ê€ªÈDŠGGQèsž•r B·RÙÜÛ!· Nê=óéVá¶o´Ëkq›rPɇ§QÔ~>•ÔÛZ5­¼P©P %Áqëð®Š=>k8!ò匕 X–™YHàt8ãéÇÖ¶ÖÎKXâòäLÑùAŽeÇ®8«¤âB€ò§$õÈíþxíN±´qOÃ[î9‰$“¸ŽíÆ}Ju­»yfT™¢ÉÊ7'¹»qÏÒ‚pXrßê÷õþ¿Tš9ì˜òfÂ%àýyÈà f«È¸,§$Ë“™Áú÷ì:Ôèþ{,.Ø N~èägô­{K¥¼¸´±šL 䑉ùQáŸsÇ¡ââx-$b7«<„žyÇãÅQ³ ¢Ú² X¸:k.Úõíáûy- <¡yùã§ÿª…½ÓCØØDc‹î”äÇÒ§¡•Ù¹ Ó>Ÿçüõ©mäVt–I‰)Ì»†H_¯éü¸ÍK«2HóV>FáÎ?Ï›ªj1ézlÚ„ŽY"+‹ªH¿½Ušú:ÊãPi¼À…xEÎÅ$)ïבý*­Åô:}”×ÒIæ*ÈUÎÅ$üÅ]yo<£'=pAÇÒ´^C< 1„(,ù$àaˆôÅ_,f…ƒ/Èÿ(%³Ï$}*¬vÒj“Þì'ÛÐduçÛÖh.Xo’ÖÔ$°S(¢·8ã# Ü:óíë,3´±Þ%½°W‡jùö«ã`ëÏ·®n½5ŲF¶%c0F €õ ¢³o‰µ­9˜Üy{rsåž àŸ™¯zξ?fPÖî’“>͹çaà8=Wüæ­i0Cggq*©PáXŒð>lò⟦mŠ Oˈë`ÆN©4åX¡Ô hÛ‚!Ÿ|8ϵ­ÇÙ´ó6ÁÍ÷w}ïþµoiп‡ü)=ëF–—wĈˬÇAôsõ#Ž•­c Ò4 n|µ¶¹»'i?ÿ­In¤ÛaaUÃu$àä‘ïÅ3H¯t¶qciöÑ–F1g–gòX¨àöǵ&œ¦ãOgû,ig B>bXK0îN:j‚â[rðG½›p;Pã,ª?Ǫ÷X¬vÒ@$™V2UeEÈàtˆ'ßéÌsKh±Á$Aå „ªdªŽ:t šŽ ï*úk9b“uÔ-()Úåº ±¡]´ iužf¡k%ÏœØÉË€ÿ1RiWukqù—p=Á”3Žr{õª]?ɺ•¤2+Êðý8úqþEAáË[+ínââiUmÖÙH]ØWÀ}8éý C£[Û]j“Îî"ãw €8úq\]Ü`÷wŽï#<žpÚHe<(ìŠåRXEÍÛ;HÅÄ ƒ‚ÂŽÀc¥räyªnnwœIqŽŠ;ŠÛð}¤P@žH;dPîÈ<œ‘‘ø~u¥á‹QÝ®T¸"(~lîË`‘xÇ~õ«á»qñ²Ÿ.?›ïsÔg°éùÖåá÷ ƒ0˜qßo·n1ŠÙñ,²hú„– $‘µêÞ¨ÛÎð¼;¸"µ5Çm6å H­r.@ÇñÇNÜtªî]m£šF-#;ïη ñüë-ã™´ËK»’ò]É<þvü3Iò¦ßÃ’:¡²camqpYîZYL¡¾bç ÚŠ¹·°ŠÚÞg¹™Ø.grv)a—^؇z»`.šÎÓNŽS<Ó’1+’±G»–“×¢à{{Õ»Qp-mì¢Í,§‘#’#LòÏù oz³½^Þ0T®NÓŒsþuõBât}ÆÙ£e\±+Æž=À#¯¨õªsȯ¤Z@ÈT%üaç󎾢¼ë\¿7zÅä—öÁ ³e2¸=¿k“¼¸ÞLn¡]¹¡ÿ&¹+»‘q©Nn¡]¸ Ž8?þºM ÍþÛ¶ŠBeH™ÝòNÉÿw?­r´W°‰ÍX—ܧæ$޶3N´•ãÔ Y‘ rÎH?1ãƒøf»»Yâûlc%~ÎÊd :2p~™ï]o‡cÙâ +œí†Ü‰¤Ü>èUËc>€šêôTƳk6vÇ >GL/ }¬ÍÛIcu¨Â²F·:•ËâA–ÆîŸžZªb²ŸO›[lKwª]™rûI¾¤þ½j¬qÙKa.ª¾dKs¨ÜXe±œãóÏëUõÍ@ØOÃj³Ü\Sr䳯¸$ޤ“Ïû5]5(´Û1ä[,÷·,Ènd ýž5’:±'Ÿöj´—ñXÀ‚(k«Ên$9òœRIçÚ¸h®î#IÝÝ$ºXزgp$ú 欄WZ½œS³4r]¢>áÀ°…spyw¤r±hå»Hä,¹Ü @¯ Ñ£ ‚ ;¥}27l »€ÎÐ{}+߃(;A¥>KEQEQEQKE”QEQE(¢Š(¢Š(¢Ž´QEQEQEQEQEQEQEQEQEQEQEQEQEUHoTˆ”Ã6îH“Üâ¹oD×6qÛ3C±ŸÌ!˜UQ–* äý3ÔÖ‰b3Û$¢Ú[yÜÀ0Uä•ÏøšÇûD+s¼Œ®ÅSŽvã$~Ÿ­pÚbZË7‘r²}§ÌÙÃɧëí\Æž–òIåN®gß±ýí§’?OÖ±ü_¨Ü[Yà •eë2òÆGqœþTßÞÏœ6ðgk(ýêž>£9ü©¾"ºš+x ‡ 0½:~‡ö[ëíV ”–¹ÚWÎÑÐýJÆò¯,’‹÷b^gÀ\p:¡éY~MÕ¢@±|‹'3Öéëý*k[ûF›ìÓylÊ{c¡÷Í,7VìM”CtÛX©íŽ„sÞÕ»1³æ›i*{c¦>µröÚBy£)]Ùîü“ËòzúÞÝ–¤!üOÉ8üGä*Ýä00Vl”Œ(9þ&äœ~TÑ,1ÏåÍ TwJÄã¿õ¨âh–uŠg ˆ»¥$ã¿õ¦DÑ¤Š’¸ ªF'ê®­î¡©Ã%‰+kó@ ÷Žxú“€ÔÓ5(no5ÞÏåµ÷˜ Ôç©éùšPŠâëPíŽÛhþ~Sž>½¿3P§‡/¦žâi.[˜ü°ï—:÷°öɪ˥]<×RI!dž?,2®ð°qø¬?:¬4˧žâG”²M@Bî·n‰Î·í´ä`Û€ê¼:n÷^´æ„¼`yÊe |ÁŒSëÛ?JÈÓ4;ˆ®æ§zÓJ¿r0~Uô¬[='ÊŸÏÔ/¼Éq„Q÷sŽzb³-´Ó†kÛ½ò…_áÎ=±[l£4[Ÿ <ÔÜÉÇ#ß5¿r±Â¯5¢µËÅŽö3À@ùÆ96yË®µÈH·Ën íºŒ¢?Ä1Ü6*‚ÅûÕ\`ã®Fyý*È@³Ø½µ²›•…¿vÁrpA<út?—µg Y¬ÚA¸¶€àŒóþ{{PUdn¹ÛÔtíéš–º³…s¾=ÊFò¼²Žqèö©![‹hT6åܤn+ÉR0:züª­Ý¤ nñKhz2HÎF1Ïõ§^XF˜<[GÁÀÈ9ÁÉÏÿ®–êÎ! †DgPwoëž1ƒžiÐÆ‰™~Z„ÈÀä1ùU‹{1ê|½±î`8ýG5<6Ë FxãÙ„Ï@©·F9`AÎõçÜ~¾µ$³EÄìêÁ!Y‹æï‘í×=zÓä’>%,¬)ùï‘úúÕxn$vxæ·û8Žf¨Á¼a±ïÍR7hŠ-ä„Û*ÊÍEÈula±ø7_ת ¥Qäeù®_KƒLºkM"9õ.ÒIÕÌa+0l‘ÊáO¥sÚtZlâ×LÚõ.7,“+• ÁKd’9)®–ÍvÛ¤‘Ä £ ´:qǵii«(³KØ”5ŵÔKó!Ä( z9üH­K³­Äjh'pÊq=±Ï㊒í–iyb  ôç¿9©u˸oïYØ¢$³¿¸d`÷$柪ÜÅurÏ3T‹vq÷·1듚Œm#;~`ãkÈú…VŠY.4I$‹3G:„r9T¿¶6z‚'yô›ghó*J¹…¿áïMµFÑXÒ’òÚ À§âZµ‘­.ì`i{ßÞÜРfÚƒêqøV"f·º´6—¹æÏM€¶ù~B Ôe’ >i¢|2Âì¤úàø| þ5‡¨NVÑZ3‡PÎô?*®?ñÌÿÀ«RœÇddC‡Ug {ð£ÿdÏã^~óù‘Ø´²m»x‰‘îPà²þ£iú“X3Ë¥‹‡ÅÄæTS•W—õ[êMsé*H–r+:H³*)Ê«ä¯ê?RkcÃQ„ÔÝ™·›9àäqùtgIÇ©+ÎTÇ.äŒò9Æ;öÀ«:H…uvi˜4q|ÎNO=qŽý±[Z¤Ì@³Éå¬Î#ç ¯'ò\Ÿµ Ó6Ú[ɶCu ‰Kg)åã @§ñ'ÚµÄò›$º—b\¾ÁœåvvÁOâOµOs{Ûlôû{w··H7Àƒ7''xÛß®ï~t|c›JÒí,žÚÂ<ØA†˜FHÿ€ž½wg½[ñ-â¬ú~›ojÐZG™°ÁdŒ‘øwþ÷½r^/™“S‰b™„‹?g†ŒŸÏ8®;TcèB&| x ÷5Êj®b»QÈu>P=Aî:åg>uÌ0Û%ÛºˆÄkówÚ½P€ÜK©ÛÅ`¯EùcçôÇ¿¿ãYÛå’þÞ+0Íxî¢ ƒæœcÞ½ŸIðç—ᘬ¥i쮥U7Ã>éIÎHóÏ·…{æ™ážŠÆyn-.¤Qö‰à¸-+ä0óŽÜ~ìú~„SAŠÎYg·¸u|±NZBz‘¼óùVõ¼ moîÙ…]ÌXàz“É­ûx#µ¶ŽÞ-Þ\Jw1cêO'ñ­ˆbH!HcÎÈÔ*îbÇÜòjJ’Ÿ@9íŠ(¢Š(¢Š^ÔQIE´QERQEQERô¢ŠAE¦Š+ÿÙÿØÿÀ>ÿÚ ?õÊõÊõÊ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+.üyz¤R´aÁˆ¨¡ çú×âÇkÙÞ½¢ÜÅ5©„#Œ†emØúò¿Jæ5âm#¹q­ï&xÊD nÉŠÁ×'a«îÝ*mE9Áâ¨X[Ý$’Í-Ç™±–'#‚=µP·ŽåZIe˜º8 dç#±ç öª–ñÜ)‘䔲8 n9ã×éVì¾Égnnáu›3* ûŒ€@ü*í²ÚØB×qÌ·L¨¥AÁàÔõ[·öQ”‘f>j¨*= êÅhˆ$º‰ïÚ?Ý©Äg¶}qíW^Ò[»y5Y""|F„·sj¶Öïs ê„F­ˆÏbÞ¿…dÝY£2ÈêÒ&NàŸ—JÊšÙd`ÎËȽœVt¶êìÃ1ið8üâµ¼? —ó£±o*`Ês»cdƒúdþ­ ZË©ßÁ¡Ÿ å·Í±²Aü—'ð­  /®âRÅ( ±¹ÚsÏéÍl†F‚Ã`>fëøvúûÕ¶š e6êx’UX‚ýܳc${vö>õe¥†I<‘ür(@:rØÉÙãëM·»µ›W–Ö+…˜@Â&‘\¹?)?CòŸ]µgí6x¤Ù$ßh†6Xåd)$lb}¸S늕nm^6Ë'0‰¦V)ÈÚIöáO®*tc3Jžxàsþ¥U‚õ­^k…L¼{’HÛŸ—…9¿Ä}*îŒI‚å“rȇŸ—îœúõªF:´Ÿ,Ÿîžª~‡8úV?èmyc‘¾Ï.G(NZ6Ç÷Nqõêo/æâ& ’%ò9SÉCB>¢‘YÚ=Û÷«ŸíÉÇN¹äíô¦yÓ¶–Ìghp™r¼ŒÏ x#Ÿ,o®ö1†UQ¼`“Ž‡Þº Ho"²Ü|µdEù¸$ã¡÷­:HîØŸ2¨º“ކ¯]XÍ<¶Á\`1F8ÇùëVµo]ZË5Η²U ;Äï´/ÿ[¿5.¡¤OÉ5†É Ñ»`óÖ³w4’í+ÊtÇ=ÏŽµÊ˳ܪ"yr¬›¤îŽƒ§$óïXRE$³(A²E}ΟtlÇóªÇR›ûalÞÌ%›!i.n~æs…Täô9ÎqQ­Á:´¸·Ùo8i%šç&5Á;ÆOCÉ nÇj„\;j&Ö{R°JIfŸ;‚v*Ô÷ëœT¦mF÷VŠÆ6ö(s,¯€f=vÇ#8údU•–ÿUÕ­tËô[F|¼Žù§ïF@úqV·š†¥„@Ám»/# yð3ùU§a½D#-¿€ßÄÇÀp*îW´·²|Âãwï;݈ëŽùGáÍU¼!u+X­tÞvïœçs:úáVb†GO.2Ò¢’^CÖWõúzWSgaqp‚ w{˜ËÍpÝn§#–úv‚·ím&tò vž5bòÌÝg”õ?NÃÚ²-¢Ô4M*Úmjt’æi¼±Ü†bH_çôJĸÒ5/hÖºž´ñËròy`¸¡bH_çô•-•æ‹¥ÛÞê®’\³ùc¹RÙ ? «Wwkc¦‹Ï&k™GËåD2ìÇåÏ5b³ðôwå%¹¸Hª2ÅØèÎ*6hít%½),óL‡r¨Ëa´~YÍC+5ö•5ºfÝç„…Þ»&G<ç`óøUXeÔ®4ù­$O+̇åYYDœù<ŒŸÒ µ ­>[v_(ÉÆ$t ž½yý),t¡m1VM!‡l·,‡n{•¦Oõ§ZiòÛê·ˆç*ðwzÑ7IP:xç¨&‹K·ÔfˆG)Wˆýªí“Ô¨§¥iJC*|Á¸ùÎK{ô«º¤és °±Ì¬Ë¿iûÁ·g>½? ÕÍFEž/²Z*!*ï*z†Îæo~•˜<Ä-–DAÓ< ~:ÉyÃ]Å$èÍo ‰œn~~µšÓnºæVh#PQ:nü?Æ–0ìIv“å9ý?Ï7ìîY¨ FÁ†Ð›aíŒ)ýn·­¦i$eb L60#vG¶01KÜq\Gö–UØí€Ä‚Äœ¨¹9ã\t­ 2.þÖ[à7[3²¡Èg Ä…QüG'ƒßŠ·g(ŽêÞK°¡¡-…l†l’@§'ÇÒ³µ…2èW1–ÁhI-ÓƒþI®kR€­‹ÄìCm-’1ÁéùÖ­þΖ7$¬I#žŸyãÛ$vQ,ªIó0yñùW6aE·O.àg“»}q\½´*-”Çsœ’KרWAáw‰§¹º~éÝÔã‚ßÊ­ØIœîË„Î=xàš¿¦É¹–BS x$¦º OM±ÔÒÆ;Ôié “iåQÝNÜgÐê.ì ]?Hkû)&†ÍÒEæm?4„€ÃÐ…8ä]%Ý»Yé†òÕåHí)ý¤nrFáèpàji¢Žê÷ûBà'ž ˆÜpp=³Ê¨ß]¶µ¨Ë¨]”¹>YcînŸ•T¹œê·²_\”Y˜Ÿ,Žˆ?º?Ïjàu뿵ê3H¤y»v…ÈCÆsëí\Õë™'sdÛÐt÷Ís—Žg¸‘Ž7ãÝ=ó]7ÂíÖTŸXžÍÊ¿— ìP0O\äG=—Þ½3ᇭ㱗]ž8Úæf)BcAO±$ôÝ|4Ñ [Yu™â®$mž DìIÈú ôzôºïh¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š;QEQERö¢ŠAEœîÎxô¤ç4RÒÑEQEQEQEQEQEQEQEQEQEQEQEf^–á™eÿWÂ/Lõ«‚ñ7Úu=RW‚ÿÚ¶ñà.Ù1Ï=„œÿúë•ÖÖâúõÚ+¼,l)¸|sÏáÖª¶ØÉ`vÎT˜äŸÄõª½ÓE¤Úé–# â §( .À³w#=ýÅG1O·±´Ï'{Xã¹þb¸ý~$}qU–d‹Éµu×'<Œ~µÈëqÄúÁÂH°œ3ì_ÝŽr{ñú×9ªÇê„í‘a Ú¿'©ïÇëT!¾•¤6l€Àû­½—#¿z¢·²°¬ Â¬|¼Èÿ ª—r?ú;(1)ù1ØdUÙlãŽÉQ˜¢ÌAQÁ8Ïÿ®®OfÒ?1Š °Ê¹ÉÆýufkU[tÞÛD˜`3ž3ÿ뫯,âÖÍlŽd‰×´™e þ5~æös¥X[ÝÇ2E"Ž’eÃøb®Oq0±´‹;#Š&Àèÿ0 þ†±äÖR-шËGµúdèkµ1äLxlàãv?¥e>¤±îP„¡¾3ƒŠéôUŠ .6·Œ¤S‚ÊÇ’~ç$WQ¡í¶ÒƒÂ…"º µñ–ˆŒw=Û‘Ö·ô°éÊcB©>J·S#¿©äUZ5Så²¶ÒØà—wà?JŠhã¶KWˆ ¹F!z±*ðUïÏAQʋ۰BCíc·©8ÝøATì´ˆl5ç·FQtÛ¤$á±ÁQì[?LúU[M8ZêSí·?é#xˆd‘&\ø/ÓÐJ¯k`-¯æÛ ýÿÎ$áðÀï‚Ý>¾•¦£aóûÛÕ”óÏPüJž¨÷£%® ±K vnÈôä~U4$[ºc1’9bnpzŒÄ~TèT„CÆÆhÝ!—ý¡ÆG'K¦ù±ZÅ<…X$’ÞæGŒë‘‘ó63ÜJu€‘mâ–)v¬,ðO ‡N£pÈÈäàûPäÛ¨yycÀcñõêip³ CÀÚXaW#Ó<ŒóÏsNaÄ¡ÁˆàmÜ0«Œ~}O½<åGóóóâü9§Ã9‘bI¸kXÙ]ÔgÌŒŒñÔd€}1N†]ëKÖÞ2€Îô?’3JÉ‚Q[8PUã‘ü±øR5©SÚE:¾ØÍà•]ÃÿAÁÏp>´ÍoªØ‹|R¡à•ž1õõjXò §ŒôÁã¯8õ©-<¹`I”º:¬±6An˜n:ó^”ûm’FŽÌ7+$g‚Ý0Üuç•1äW$3É9=IÇóÇõ¦O4s¡i…ÞåÛf#ùãõÏjl²$¦H‹Ÿ—s8ÉcÿÖþµVh¯=Äq¡Jœlõ<ú(çœùgwh›Í— ¸Tõ;³Ÿüt~UNI™Ú2$“ ¸”õ;³Ÿº(‚é´ùæ’M†(›çÏݩ羕¹¢ê¤ÞÏ#¼O /²N»¹ÁÇo¥jé·Íaq4ŽèÑDÛdÆv¯sϵmÏuÖÄÅ8eoîGç]•íý¤¶.`»Vv0`sïßµt7vòZ±ŠpÁÏ; þ5›©XÇ©X*-Ô¶WÑ|Ð\Æ2TúüKꦱ¯­,µ=%!–æ[BµµÜk’§ÓŽ«ê§ÿ¯Y—ö°j:z§Ú$³½‹˜.c*}ýWÔ‚¸ò|»·ä(ÜP’¹òAô¬kvœ,–÷Œ~Õ´ ÊNÖǰy9ÇCßñª4»+¦ÿHÚ9RvœpN<Ó£‘G#Éž£8ïÏâW²ólÅÄÈî<Ñå+•sžqœ€=*+`öÂiÛ2,ägzûôö©|–2¬i“$ŒFHÆÅÎ:ž1R[é^n§HY®.$ –\y1–댞{bŸºùIies’F<´-Û߯áŠÜ@°¨Š1´½z$Kš-¬*#T Æsÿ×®¹@¢Ô"¯ YÚúC,V©(ÉO]ÀîwW?ñ­¤Ó--çV!î¨^¤¨8Ó;±Ÿ­dx¸[ÉemêH3oP:’®îµCÎ’8Œr‚ªƒÀÀíü‡Ð×uØlžâ4&+™R(Є 1Çר×&×÷pÚ™ãBÑÜL±Æ ð¡F8ú‘ô5Ùnlõ»ëÅ¿ž[i6 ¶fùÀˆÿ?]Õ æ‹©ÞÝE¨M-£H4&OÊ CþMY¾k+Qºº[ée¶wH¼’ß/˜nÇÐÕûƒûÖDˬkºiœ‘€poOóËõ%‚MBKxV†Ú15ýÄŒI“€B*öä…úž}ä¾òå¿{xK˜­ÐIw3±Ëñª?~5Nêþ;H§–R‘¦r@“þ{}k7T¿Q,ñ¡Ž$g8D'ê=¹Ç¹ªZ•ê+Ì£ ‡l(É?_é\Óø’IÑnãWhÒ8ÂõÇÍ»#ÛúÖcß››5”†hÉŽ(±Ô(ÿžõ”ú‰žØM‚Ñ’±Æ¨^AÍoY]­õ¼±± <¸9ÿ{ùÕ­,­ÍÅ‚o.âåQ³ß.ÿЪæœââK®Â;‰Õ[ÿÚ ?õÊõÊõÊ3EQEQEQEQEQEQEQEQEQEQEQTµ k½ ®åêO#ùÒ¹¿C¾„g„¤Žåf5Ã3rã‚*Æñk–f(É2ÉòIèùVyŒÜ´O–;ªÈûÜ zzûgÌÆ[Ykiм¦Ø4q4Y]Á†Ð§\Û8éXñ“©˜&ØÒADdÈÎî==}³ŠäééÁè:ƒT’9µ ®#`¦E"> ü¤|á¿OZŠý’KÙ%C„iUHN ð@ ÷Τ6êØd¶á‘žã#ñûßÊ¥¹³ŽÚÖ÷È æn Àú€ê~ ïþTû‹Hà¶»0ƒæÔ_Ç;¿•B’* %ËeÈ÷ ÆßœŸÆ¨[ʱZY)gšYU½QA]©ïÈ$½T ˜%µ˜id6:ª‚0¾ü‚rï† Í+>Ô Nx'Ûëš•–[Kq;]K&!ÝÃ@~»?LÂKhcs#v}Ü>_®A?LCïQŒ;U‰Èn{ýúՠݶ¡îöÇ"ˆâ‘Ë ¨öÉ8>:sW;†½O“j8 ±áÀ$~¹çò¦¸-ñtNÐ9;óêj¦£hßíöm±£XØÅ´†%Ž8¼~µZþß|öÙ¶²cÞIcŽ=ø&š|þ]Àã =ûçÞv æŸÒlY>îÔàrÜäžÀägÚŸr>Ód—+µ_îí^^r}Žk2þ+”¸ŠúÙ‹ICÆúÅ8ÎÞàç{ÖkZOº;ËbZK~S÷ÆJ÷G½dÏgp²ÁjY¤·]ÿX¸+ïÈ"­@Ð^Ä“D3 €•È`O#ŸÇ·¯¥iYÍÈ#1Å&^5êqÁ=yÏo_LÖµ¬ÐΠ¬e#|ºÈ`Ç3לÔ66Z½ÒÄgXQË\È"' @È< ±£&›§E©"½ÔQÛHAP<Á¸€H=)úRiößGž8íä9QóˆÛ¦Üvµ"•dˆ<0nyÍm[Î’Û«Åó+s†ÏàAÇ^kZ)VHC§ óÏøÔWQ³D˜u9S‘UuYfı¶ämÃ9ÿ>Þ•^î&%H“‡*ÙT0]¬ª~F\1vžåURõnC‰†ÒÀ¨C€Äõéù{T)t³Z20H+´õ?‡ùbÞî(/|Û…‘P.ydàûú¯è·ðXkãPD6£4Lp}ñÐ~«:uÜVº–ìI±Œœ}}ZmZÒaæBìè:‘æ9­‹¿iò¿m1• V6÷Ç=zŠÐ›X³‘¼È%2 àþÏj:¼×3Þ^­›Ék§Æé @ÓI°çÙÀ®'Ä~"}WSžajæÊÊ"‚3œÉ!FçóÀürºÞµ%íåÄÂÙÍ­¤O1àæG*r2hÛ»”.ß&í¡Sv{ž£×=îMA¤yžD‡Ì(%*ǼÊ ê¤uÏB;çÒ™¥‡òœïÚ$ÂÄ›ú¨'¨õÏCëš•åƒì ÁŠf`HÎîç'¶Ob[½: 4%•¬ï]ã!wäå»nn3é늖K›´&Iò¦ÖéÙ7G|žÙ=é_+)æêWÞÀqŽ»GçÏåI?›oiglNíSP™®'Uá“„Û?7à)%2Aom9Ô/e3LzìŸ?€®7Æ;n#‚ÅóB¹9ã±ì}ë˜Ö-ÕH¶WGj¡nFxç·ÿZ¹½r ¶Êêß¼[žxìk®í’[ Y¶í?NùþµOtsÛ„!âQ>J“Œ¥S²D«Æ‚PH'?OóÖºÛHÓUð´°Çq"ŠýÎGÒ´bãIywM¯µàŒää}0 j„úA"v]¯„?Ä:ôüEuúÊIc!Õžèªê?‹ü>¤W®xT·›B†Ý$W“RÂ¢Ž¬½[ŽÜ>¤W£ë7°É¥Ç ¸g½ÂªŽã«~ƒSYŒà£7#ŽSpßÏùç*5»¿Ì’2å©,¬~JIôü«ŒU vå]†Tu$†Ã~C5çz©h%\n—c•nG¹®n옊ªÆÃ/µˆÚ!T°0*£>x#<}:~TèK €9f€¿‡uÚ¡²¶¹1Æð# —‘eèHêuÆ)–°M±%8—u~„÷Çu˜©<¶Ku†Úäd äŽù< „­¥‹c*JÈt *çs×s£úâ“ìnÖßzÈÈu9 z’@¢I>n å‰$àO_¡¯\UžI/cK¾e³Œ<ÛŸqŒтý*©#»Ý¢ÜŒÉjåËdàsü˜­Aov.­–da*0$°y þ¹ÿ=)é'ùä‘eI™ ’y÷9ëìxÇjŸk’L3¸‘Irƒ‘“úœõúÕ§ƒlËùhÈsè§’~½?*Ò½Ó’ÞòÞNof†D™†6$³z†ÉÏ§Ò®ÝØ¤70£IÍÔÑ2È?†6$±‡‘œúTi!x¢Œýнb8ü‡êj¤w¤ÛÛYÈK¤QÅz(#‘Ø:÷>تñÝþêÞÕþuŠ"Ž€Çå‘øÕˆ¤VU#?{98<œþuvÆýßÈ”—`dùX`sìN·izíäÊKÎCg† çêsøÓ ¯—€HÀÎsù~\T+>ØBolF»™‰ûØÁQø|¿•F%Ù]Ìk’IëŽ@ü8¦FáTy®£qÎͧÜÿ“I“Mm¾kˆâ‰›>QN@$dôþ´‘¼’ÀY’8˜çË+È5+26á· ¹-“Éé‘§?…]\Ö?%–(Né |3ä¨*W·þl}ÕÊ"(¹|¶ d€F>œþŸ§Î&7I^L6Ó4JƒåÈ_æ3ŸÊªA"ý¦ò8¢1Åo$‹°> © r3žŸÝª°È ·)[u+¿Àu*ºp¥‰'2w89üOéO˜ýŠfd|M|ÃpY íÛÁÏN =øâ&-'%^7͇+·sø“×Ò˜@†VDRN È?áïZ-2Ú]K£*FØ*0pÈ÷xȰO,AYUG8?áïBI¼wç®j|7NìsÉÁ=3þGZtrïù=AíŸò)eJ‰ næ^;PY0Y73»æ^($¨`”°#;¹U{h¬ËPÒŒüí$…ٳܓÔýj –Å€diÆNòò—,÷ê~¦¡´‰lð¥L }âò'?^§ëSMvÏ Ä29^aƒùƧ¹Õ.&±ŽÚ8 O3Œõê=}êY¯¥–Ù!TR@%p °Ç=zÆ›k4sÚ­ÄL 2†ˆŽ2§œýrTýk·Ú4ÛÛ°FíªmÀÿžxÜÍõ$©úÖK¹ŸO»¹tS?¹Œ–üK)úÓnf¸·¸ÒÌQ—€;yŒOF cëùSí.æÓqä—·…XïÆK1 Áqþñò¥·¸–Át©¼¢ÐF¤†ÆK1 Bãýâ*ô…-aO5 U*Jƒ‚1Ôþ¾µvQ—e»·y#I"g00ÄÀg¯åvQiÚai2ȸÝÀÁ8öíõ¨Ê¼Mæ”–ˆãnXÄàýyæ©Ë%Å­ÍÅåÄ) ’X·’ª¡L9õm¤^yªŒÓ[Ï5Üñ$Nöå(yypÔí?^k¿06½w3K*• ÕxÀô>¿Ö¹¶ï¨ÌþlŠ6±—€:þÖ¹Çò_S”ù®«É—ZË´‰EÌq*n••ÝÔr2@çÖ©B€]$j¹rÊìYzóÆj§”|õDÆýÊÌYxnNwÚKÆ|9euƒHAÙÊW9ã·ó®¢$‰¼!c¨Æ±™Rù’E^C©@A8íòŸÌ×Kn¨þ±¾EBëtUÔrÎO·ó«Ü oîgS™à¸}ÑÈAlçþ£Ó9­»R.ïî5äÞÇ{+y}È–-ù?‹(ÏL“Zöíö‹¹¯w¤Çu!ò€û±ˆ÷dþ$~f¡c=ö›gq§\@¥Wß>@hXr ÿ{¾µ‰ M{¥YÿÚ ?õÊõÊõÊ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)¯„®7cŒÔw "[ÈЀd J‚3Í2Rë4`€k&êÜÚܽÁs›ƒ†m¼ È==ðÉáõ½4h·×ŸšÛµ2YàB7éïŒdÿúùBÉtËɯ·¶ëâG!z{ã¬íHÃ,¡š5dœÐŸÐ²u#ñÞ"æÝT«¶Cs€Oé¨ß¥Žå@Üa«çœü±øWöé D¥ºÇ7 £‚O¯Ò¹ºmœD2Ü•Èçü+œ[‡ÙÄAž£ÓŸð­=8£\Ú[Êà3‘½Iž2EhiK×Övó>Ý시:â¯iá$»¶‚VÆóó‚q‘×bId¸±¹xÄÎeHNHùI*‡ÔpA«3JÒGu%°å¤HNHùrBž9jY$y ¸xFXÈ‘œž™!OåÍg$rù––I’  3sËž¿Ö³‚H^ Eˆ¼{F[–zzÿZ¡¶C,¢2Èe°y8Ÿçšê-m…¥˜K°É9#Aþêyoé]Fѧéf̤ä1%vª)þܶKýH®„/Øì<Œ¹<‘€ª„w-÷¿Z’DSÙ$hÕND`d· ÁëêzÔR.ë#çNÐF¤·NYùùWi<€IcÁÍE"æÛ÷“4(+ r[ÑpzœŸZrº@ G¢gåÏ|¸Ïóª’êÆÓdv6±F¹ÊÔ᳤œtïÚ«É©µ¶ØìíãEÎPž§®Üœ~4æ¶UýÓ¨Ëþ§ÔgóÏÿ^¥pÓɆáÒYî ·9bHÈÝßç§ëR-ŠÙ¥dšlù§»dò3ÜsPÙ[%­¼vМD ìXŸ®šÍ¶‚?!ÖQ“wUEL³®qîséT ‰±8³|¹urÄýs®jÎíÑ!Æ#Qä§©wõô«:„ï{¦Û_öÃ[(2~f Éõ㊚úcucæÂ"Ñg©ÀÎOò£¬C 3.qÕ²x?Zh‚W¶‚'€/Ú|@'t› Ÿ|ŒsJ"v‚ž¾ï—ÜÀ þ_­,’6ö-…ÁùŽN8«W×±ý¦D;ÆÇyàà>½HÎ*{«´óÝ~U(X±ÉÁàüúÑ $|üÁ;` ~Ë«MÑHòþí Ë‚ãh\c9À¤¹¶ !Øs´®<Œøb¡´¶^«€°Ëdðð3ùú÷¤Ð´·½ÖaŒ•*±™9Â…N…‡ÔŽþ¾”Ý.Å®uXʱ™î Ó#ê*ÈZwS±“€ÍÎ;çÞ£ûl‘ØK-Æ_Í„ Rüààóî2?*ío”’N o‹n7óŽ>㊫vZáÚÎÎå`–/-æ,¹9à÷ÇÖ–îDXE¬,7#–}ãï ÁÇ#ùóKpê[Á(Žs²I·¼HÎ=E^á²S2¿Q·9ü8ôï@¢¹óDbâör™ïœãŒtïÍ3ǘOy1iLð}±ÐVÆ¡¬Û\\G¶+¹..‚7ˆ#8 Îs»h?áQ>©ª‰åYÒ¤¹›j$€/–‡³¶wmŸ_LÔ/¨ê‹,‹"E<—a¾_-glçh9­;xŠ©igˆ¹$±D(_á,zsü_J¸"c!¸‰7åœ*”õåf=#†>ÕqJ¦diã¹` ¯¯ð’qÎGéS€È6ätÈä}*ò;Gû—*Ðë’8Î9çúÕµbŸ»bÀa’=pA¬éµ)e¾u´× iÜ„ԷӰɪ}qw|ºno4÷9E2gå‹-Á-Ž8ª²^Íqx,, –iòªdþòzçéÚº[{8t«)%qæ:!yŽ[5ÞXéVžÒfºyÒÅK4¤|Í’å]Uµ¾‹§K;1ãžG#–Àɬ*‚Òx¢eŽÚßÉfÎFÆ}º~yŽ‘ ž$Š;GŠ [) Ëd´€ÙìIǨú× ¦8ž‰-^(-í ˜œ‚»HØ’:zÕÈèæÈ,‘4|èH ~U6™ÿg_4ªÒCiso×ý’àùcð©ôô±]¼V÷0ã#û¥òý*+Xµ×®&7ƒ÷qB¨rÀ`b3’ 'ŸjÒ†MüI‹[¶XØÅä|¸\)gÁ9 ’yôz4Ô]a Æ#&8ÁVÂàÄ’ 'Ÿj[©¥ŽÚWwó@ÜÛ† z~3\\Ãq%ÄþråÝœ|ÍžÙôâ³¥yî"™ç˜J¹g,99÷ôÅpKu=íœò†H•²²ä©÷5†“K5¼® F¤`1ŠÁI%™% ¢®1¼ŽF}ë9­ãhG¾AvÀŒF㌠c <þuIãR HþÐÃ…?xôÇ@yüêÊF 7?Úp§©è1éž:ô+ ¾‹omn¹Dqñ· …ü#ðë]]ÍÆ‰kÌ“O±¢…²¨~œʺ»;K‰4{h-Þò…hãà&r«øp*¹öagÍœ÷pWQ£ˆí;#RÅÏ é“Ô×e…®ˆ“é³^À5½Z†Tùh¤‹ôÏ<’+£éÑÏc%Ü#UÔchã%NÄ!GÓëÔŠƒD´û&•m¦Î¤K ¿—¸vt?CþMqú%”cÍÐïóÑÀè×ÇÎ>‡ þMsºM²,m¤]å%ŽUoGNß¡¬ŸC¯"n‘˜€ÄäŒuìzÀU N$[[_4v-†,Ààö=Gà*†­ˆm ‚ÎäüÌCÐ~}Gà+‹³/j±ÄʈB9å¹<úcšç­÷FD!W*^•bÚæ0 #]ÊO?Ê‹åY$E †„½q¼óíœf’÷æ#iäýqÓÖ™©.Pa¹S¼qÓ×Ú»ìôx¾Ì†<â‘’y<ÐÝsÚ·´i>Ç`¢)8ß?”vÆNÐÝs[z1[+X‚°W!,q“Á= Ý×=«=-—Yñ,?jò„6˜žè¹P éž3–`=Æjï„t…×|_×&óçV9ÆÐvý~b?Z~¦G­x®9g(ñY‘,ÁŽ@*8úüÄ~µê ``W¶Šõš(¢Š(¢Š(¢ŠQEQE¨¢Š(¢Š(¢Š(¢Š(¥éE”QKE”QGZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢³5E2J‘ Ù*p9Ãg·§nþ•ÆxÚooa²C(ÝÚ;d'ø~¿.F{zç:dwéYwãý{v+ èÄzýk:àO¾ ¡b±ÂpR+¡…áp§ ñÃÜ`þ¿MØãÝ£‘ €+ 2TŒpËÛŽ/Ã]R'fFQ€Ÿ)ß÷HÇÞ¸æ©iW‚þÓ’ çÜ©AÐg·óãÿ×Yúck6èR_*yˬ1ÅbOLvïǧçT´÷Õal¾\³n¤qž‡?§ÿ[ñ­@¬¥‰\I!ä†ÜIç {tëéÎzU™ÓìÏ2Çn¢îvÝ# |ÒHÜY@•xùrI⦕<‡”G36\ùža'’W°àóÇæ‚ÒÅ~y„ÏR}‡ëúÕK˙ʉ[©Èˆ¼NO ÝÿZ¨Éu4¥D†K‰ˆvw äп­$ÞJ@Å‚ Äàr ŸÓ¯iuDµÓÒâÚ7Á#Gàù³ùŽ}stõ^½Ÿ¨­½œSÁîŠ?Ý£u2Hæ?EÜ߉{>"„ÀYIMÛùþ1•Ðqõ©lg‡ÈÓâÙ…¬3 ‰LŸòÛ,Šp;( wëÞ¤µ–?+OBÂÞ9Î_þZdªäÊ>´á.ùÝØœ7$²FGå‘Q­ë¯ˆ§šVm’’ôFL}7)Jb]8×%–V`$;@?­Êãé Œ¦Óòž.sÐŒçñçŸ^j?&8õ=¼áŒDÛ±µ—q$óŽ­ƒÏ#4ÑǨãœ;°Ù'·$óíT5›KûÛo6ÎâHf†S ÇðGaú犓RƒP¿·k˜â+pó)R@”–8ÎGa‘õÏûèonàóáfdÍ ÁâBOÈì8üø«v&Y­ “ñ>mÀ¨'è9ê:}(ÓO*êæp^aÉ@Þƒž£õ"–Å_ʹ¸>bTlzö÷`„ÎK¨,Þ£œŸÒ,q-m¥ùwD¯3žK’OéùRÉEííå<4JÒ±îI?Ž?*€›2¤f•Ë+ ¸““øÿ<z°lô³sÆÒÃs+—IäpŠNsÓ¯¶'ƒ×š˜YéáRXŒ‘O#YY‚‚IÏN¿†;KgSm5Ô“­”;±çÝ0]ÞŸ.AØž}*]7ÃËöY¯nµÓ£-†žîP…ý0¼=˜óéKc£…‚[»‹Áf¬ÜÍq&ÒÞŸ/byô¥–Y,Z#y,CÍlC¦‘‹¹\Èá@ù3Ñù×}àÍëMÑ”êqD·’Èe` ™è¹ö~uÕxkN¹³ÒÔêÆ.¤s#s=ð~u‰o®!H¬màÞ·!„² ¹éíɪž=Ö¦³²M2ÞÿnVYd=1ÈÇ©éè9ªþ,Ôå¶,!‡wÚ•„’Â&9õ=?: $XˆŽvA4éÎ~û(Æp ?1\?˜¶HítbÝyËìÈÑ©Œ(Ç{öç—2 0írcÝsó6Î]£^HÁÀãߟÏFçcLÚ³§OÄŸý ŸÄÕíyÖâö±S:¬Aü¢xf8ãý¬Ÿ\’*Ö®ë-Ô&ГPŒ8CÛŽ8ÿk'ñ¦]Dnt¨nî›!PÄúŽùÇçVuX…σt½uϽB±Op¬C"‚qŸp@÷÷©¯×ÏðÕ†¬ª&º]±Í:±@õ÷Î9ªwGd,Üa®qÆýj惼cÌ¥Ôf'$p`ZÄÞéûÈú\##Ða‡ô¸Ye’òÙ‚"ÆÌv‘œƒýì¥d¼¯q Úª…Ž1ëëúVBÈó#íURÍ‚=}k?Zjû<Æ^x€…äð@ãÐcw~j¶e·º?dØZT5c“Çz fªÈ £öm¤Ê£Ë ÉãN3^Ÿ¦ „Vò"´…€Üt9ÆxÏþ¿oá©nmn­.aæ(ßp8Es·¡'¡<çÒ»] ç‚ky£F“iûŠÁCqÜœ„ÖÙ‰®µ ÷‘ckÄšä¶]†ìž:âªÌ~ÅâûcR2 ]-ÄQ¶Y‹Ÿº€vP{ôÆqÚªH>ÅâKNøÉ´,Ñ+ı €=úu­õ"åå‘Knv9Û÷S$’IõçÿëT‰‹ós¨‘'Ú®ee~äD±,XôÎÜ{“éRÆ>Öf¾!üù€Û÷#$’I>¸ãùô®?ÄÚ±PdP¼dKF±Žk Z¿1ܘ¡X« àƒê=yÍbëûo *«, UÔ }GãšçXNï ‡ŒˆTžÜç¿9¬‚­æ»+ä2,Ç¿ëšÎÚÞlŒ® ”>X'¡ïúБïŽPÉæHcgøø¦:‰ò»ÛN‹Žj„ßo&á½±´ûñÍt«®Ga ™Z4Ú±§Vô«é¨-­†ä,åƒøj¶š¢YéaÕ‹”R»øAXÞÔ¾3Xä¢7僇?6©>ý«cá^©³Æ/jÑvì¬FN!³žÃ‚?³ðÛPÇŠä·xJ˜3 äCuì00~µí 0¯r¯c¢Š(¢Š(¢Š(£4QEQEQE.p(¢­QŸCE”QKëEu¢Š(¢ÆŠ+ÿÙþ>ôIú0D‚0ƒ[!ăå€R;Aperio Image Library v11.2.1 2220x2967 -> 574x768 - ;Aperio Image Library v10.0.51 46920x33014 [0,100 46000x32914] (256x256) JPEG/RGB Q=30|AppMag = 20|StripeWidth = 2040|ScanScope ID = CPAPERIOCS|Filename = CMU-1|Date = 12/29/09|Time = 09:59:15|User = b414003d-95c6-48b0-9369-8010ed517ba7|Parmset = USM Filter|MPP = 0.4990|Left = 25.691574|Top = 23.449873|LineCameraSkew = -0.000424|LineAreaXOffset = 0.019265|LineAreaYOffset = -0.000313|Focus Offset = 0.000000|ImageID = 1004486|OriginalWidth = 46920|Originalheight = 33014|Filtered = 5|OriginalWidth = 46000|OriginalHeight = 32914™€â‚y‡gJ𤲝…¹Eà ÍgØå±ð*ýV Ï$‡8“R$gx&ŠÖœ°«Â$ÓÑáñPÿ Kä.üA|T(hO{lŽ1¢޶»ÊKà>õm ë’1FÄYhlI—îã C % Ó À Æ \ ¡ © y , y Á ÷ ‘ñ°C’y­4Kº A™€¬'Å]-ó/~§~´¤ÒÿØÿÛC    #%$""!&+7/&)4)!"0A149;>>>%.DIC;ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÙ€ P8$ ?À€þ€¯Ð. „?áP(Œ0þ?!0¸l€@/ÈÔü…‚`OˆèŒFd`õûÈ$ò9;þ*BÙ,l‰@åRZ„nu$›ÃeQªtv'¢/úd4U¡ÑI€A¿®U˜ŒH?hRJ|ö/O?aë ªÑ¬ñ÷ûï³ÚeÔðô4QkÚ\p¼D2îÿ€ñ±K-nÏÛ©4€ Y¨Ã@ãYÉì&S‹Úu²«¼|¢~¾áX, ’ŸÆ-8iunˆ€@éøþ‘Bâ X«î™\œÕ1*dÞsØPl:*­K(§Ú7WÕ†lþö]ðtø]¾\,jÉøÂ€ {ð ¢GH~ž(r*¬°꘴-Èê:–/) ˆ%Kyþê%gü,íÛ®¹ I:⢋r´³5«sæ°¹hÊ7(øÄŒâ§4J²–Ÿ¯);…5([¨ß¯ Êð¿ÉM‚ø…€l*Œ"ª ªì?ªÒ0¨Ëòµ0¼kŸ0hÂ,©HéDªë-Ëœ6«JIú×­É€¡Lró,1H²œ!Èâ*¦.©Úþõ-í¬è£!ÑBH°Æ* Nº§ñr3̪–­°â¦ÁAð*¦/Jj°‹>sŠþª¹ÓTd†"ñšÐÙÒ‰ÊÂ’ªJf³4à#D}¿ÑJ¾®*m‹8„¶±”£-BþEÑKLK-j{>ZqbVþ¸(öÚ%«â PHjËk(±Ò‰(´s†ç¢²Z÷0 ×ÊM¨ˆsnâ-)6º«ÖZä†<’„¨ˆY¤5A#.¤!()Ú:ÛÐoí*·øÕ9LÜjJC$?•ØœZŠŒ¥"Íš¿ZGÈÔA¬0}¹(W\°„Ër¨bH4V9á\e*!­|Žø´KDÃCÈëÚTó"èP¨‰Öj;ˆ’¢ ÇS+ësjÙ¤MÚú›­-*å{,k¼dó!»-LÝ©Êæƒã޼Y³ N¡þìÉ/ަî$+“ JXLjßkXʲ ¦DÝ ·*ͦÙ˵¸;9PÐèAú×t¢ñ3>\Ø~,ês¾•Èd°™è‰²¹DiU£*§ê<à ,óº‚ò®óÜã~%r=qß yô'áø-ZÝ.ˆ®pÔåq¢ƒ/»Xãl(Ò«¹"¤Ø{ŸGùó#R¯æ±"™î½Ëj¦§:Z*j Ýëž×d½u¤ZAu[T~º¹Ø‹#,1cŠ¥c#¤§VSöp5–¤ÃS$‰9h$N,•,#°W*<1YdÊ, .će,î µTÂ`É<¢wE…T«C/Yá6P–Á˜õìQ º#„euµ2±›º|HŠœˆG2(WE„&Lè™.*Of¦MÉØ’ë äl)ÈnÂ"Ã\ÑcæWçétP¬püV’/c”qZM¥`È¡’—Ø¥‡è÷ZsVL–Ç ìÑx?GÐù<atéHcã1Åp£©SJGäûsØÔÖµöE’ q,,…ß[ iÀ1Æ|ÃÜ}€1õeàí…,™A©šÒa¯ntÕìµ[ky,Åo‚ÉsåóA¬óÒai:÷¡2L>ÉôxÍùŽû%ƒÉ× BlêÆ¼pŠC¥(Œï ;âÆíÑ;ë61HŒ9"À)‚sÄ(¢ÆÃÄüšŠï é|hÍ’)«*`D®bn×OÒK¢TS%|½m.ÉÉöƒâJR ô¤ÐØ"1ÄVð$³*D(¹d˜Cäì³°ðƒöU‰±/ƒc&¦ñD´HÇ·!δ¢…žqëæËéâ>Æœ3„ªnDþ$"éíЋ䨬Îè0¦|7Oâ*å&hÏúá²\oÖFÂêΜc«F³^ZEHÁ¥òìbŠ$ƒò•5Öí<$„$Ës*ZhS9í&Øæ’.(bX§ä§¯@ªI*rо.«-WÃÌdìh é¦ƒåì=2KÈa i@^¢*µÀdÊ‚u…лèT,ô´Ç”î¤>R%lï…«æêAëÄ}JˆC €”&¿ª‚Ù¢P·Ä‘:#v;bÐâÎ.pæ-fpFÊ,@‚‡ï¼n¥v<¬WÌÆT AЖ,pnãBÆíëvÛ(t<¨Uæ#¦3ë¶'o¦Œ¤õAU(%§´Ä¦ä4é <¤²«§záB‚«ªh!„£ê@YE"P;lm¸dm¾6b„#ªæŽ¾€-tÛÁô&(ð“[9ˆRÄ|®PÍCè‘dнlõG:ãLš¨ ():N&j’MâÌĤE G0±„æ§Hu‡ìüpRDˆÀ\Qp…¤iòzCïŠn±zÏOj8%#‚zæPV Dh¬¨™Ã•0‚Héˆ>ªgDVèIçSø§æ–~‚±W£WÉL->;Cj9p<üϼ@ˆI ʽ º»ÇÖAq/ì,~ã†Jtó´!Q•4M†x§PLŽi¢c+æq•Â{ýLΛkƃEÜêâT8KdK¢ÆâÊ9d€@ÿƒÀáP(` ü‚Aßà8ú¿a08,nA¡0Çôþ„€¤ñèàBÿ¤/Ø(û€¤³¬ ù˜B¢€ DH‡?Ÿ’Œ(’€_ðÈ þÿˆAc‘º ŸÓàÐJõ^KD—U╈ä"…2ƒÍ¦àú#c’ʦ;å6‘O~È_Ï஀ßtŠƒõýŽƒÚfÀÜÓÿ€@ мÓ"}ן˜ù„Òš»Áåö{hÖý²Zò5)8!±SïqûnOa@«ÔïT[vß5gì¡z\. ™ÐKïÛùÜ52—l0p0X>xÉrš £Œ¸¤Ÿ‰zÈ2j»ì½¶ 34«èÒZá#Àô'éözŸ‡ÁîߢÎûn€€+À|øõŸJ+T‚¹("ú0q 8¤ ;º0g»n|€ ²È± «ËŽŸH:h€ ”2óÊ( ”lÔ¬•$ËŽ¢0M{«5 꺔%È¢ ,s„C'"h£ð­ºÈ“í%$(‚®ô°JFóÉ :™L1ú¥ÏŒÒï$¨¢t% cΩ«ëœàÝ¢i '6éœv¢9 ЦÔ*êÑü0`{4z&GÃ\­0òÛ ¨ˆ„‚"Œ-e,³îJ¤¢«¯]M>¶oÒe,Î m ´(vÛðÖY’Z–‰*vb›j êÒ뀉‚ÎÂ(ë?ZBb2‰Ëê¸ ™4*J0ƒH3‚†Žß2ÚRà7‰U4)‘?5ÈËo!)×r_(jÌ–RyáåÍ*i+͈¹{ü·OIr¡.!Kƒ·aq• iúB¥ „<"€; }#]iB`*P}0S#c8Ê%Ûœ¶N*B¤&L€’*Q“\Â5mÔ’ºâ ætÂ,Y˜B¨[/.%ë«)µQPƒpȵ+$<­9Ð}M Ë3þ¬ÖÀââ,‹øÏ'+º,L5tƒipéãâJ™ì˜ôòŸ\mNJQxË(µ?ÛÞ©Q"‹Í>«"¿@KßIOD» ÈžW:¤×&Ðk˜®ï×LÊ…E ÒÄ4}6Ü#‰ÒÔG | «R”w¨ÑÂ×Jè ÙçݧK$¨šT"Œª°ƒÀK®€ôéßM_Ô¿:²lBí'&D¼§å lH9ñLœÛ¤sÆm´/ˆ”â»r¨ŸR˶4ïe*¢ˆ™˜û:'&e’%†p–{R‹œ³$æäP¹R+¯ñ…:K”ò< ÎURÁ£–”p% @‚hx€?Y‡ü–b? J 0(89³â’ÀQÅr-’ÕœV .§t)µ†oÕ‹"€úbгKI®%å±9C"D¶MQQ$2'æø­Ü9d+­í'–b¨Íݳ˜T¤yŸâ¸§Î3ô ̱±VàÛVeéB,˜£ "¤ ˆšh4u˜d—4ëm«1“Z©˜K˃*Wø„S£¿‚¥ P’ÉtÞ™A*Ñ$®`’Èø Éb9â¦Rã*”VÑ%…8‰vÎì8wRd©•gf±ÑáS#@ Ø56v{™ìM9::2XšÃÑ ]:É*t•Ö2rØœ•‰eŸ£ú— ¬•&¡‡(õ'ÒZa(& ? ̇ ‚¼r‹%ÞœuÕË64Èyu¯óÔ¥Ôùr'BG$Üò™D¤a”Ö€f 9Ø Çl˜È3j’K$S"dÊäb©4(L~–¶ìhg± ($’=J“P3G5z4µ˜aIÉŽ%dÐÑ“0LÚºÅH(”êÓøb€àÌpŽ{%J¥Ž2¸fïN±¸ÂFpÝü†‚0ˆ•¤ŽZ isK°É(8øSÉy“PpÈ,cQ"H)4§‡az>äúÌ3”™êÐÖG£±šʱÖâv%ÍÓ;[ )²œ¼PA:1k±PœÂ7ugE!%­k$ûÔjF6 Ú"M‰[ù·nÌ´ ¼"%$I!}KÉ<¢CˆSØá zϵ-šâV’—j[‘%Ô¦<[¡¼ ¦%|‡6%:[!Ðfø­‹¹| "b„ Ì¢³,f«¨þlX£›i`ªd‘„(xÞ˜£¿LŠ­}¸—”ÉIL£¢söWáÙ-!ò‰fh¤²Y' lîÅ$ufȵ#& œLÃøªÇš©C<Žá/ó,ò^ªGMAC"­šÒ‚6³Yóa— >6øè™ùu•Pþ"ý8IÑ®=¯!¿‡FN˜þ=$æ[¨ˆ`f ›—'Ú<¤‚r€—™02o"­ø,ÍMóí/' ÚºJ²-%Di0¤ÔàÊ!A#P*eD—…$‘00IÅU•Ã+’I6„• ˜òJ?ÓY°ÁÄ’lɉ;äi΀¬åƒÊ]MoIöˆON Dò W­4¶Uó)7/0çXH `Ÿj};w –ª½dB1mÑní…ÊÊ- ’NNÙUõYÒ˜qCDÕÀ1YÃ)ãý»Õ‘…-ØBÙŽäŽpLWiY* wcy¤ö½M×Öº53]+ CëzJ‘ÞPI‰ Á;P ÂPQn…°¦¨®g™«ÖDmÈÃhkÛÍÂ8›£É’«î6“OöXKK;™ÌRò†_EÒfb)à'«ÕuöJ)UÓºgcÈÖ@{Ï7c錔ó6VËøƒÀ×B¸$Uå“*ËÔiÜAÉê]2ÙÅ_ˆJ¢Ž)a½%¨u‹ÕêaÓ²m„.DЉ‚RvH½Øœ#?›ô^P2š•žðßÒMK"æ¸Ð¢žQ/ðÙþîÍ¢‚nE…ÊÅÕMí£/Êø"ÃéN*Iî_æ0Z…Ö,Ã3ÓÓÚHŽ%×?˜F€ê`ƒzÞžè¸õë¢:ûðÈŒ˜‘mA¯º è´ ´Š­ý§V4q”Ý¿ô ¦îLypR;&ƒýJU·@7ζâ2q*9äªD½ª&R?Hw¦k43³°‰¦’ ßì§P,)²Iàoî@yˆÛÄÊ%Aü|â°S†üÍeÈaPŸ¯2u%NÊÄž*GàxÇz*XŽŽzEbh –îÌ6b¨[Ãô‡#†,ãL-eâxÈ2!ƒPHdžnÌr&p|lªê)  ¯W$¼á(V‚:ª¤öíÄj£XÈLŠŠ÷GèLN¢[ïr©IºeâŒ]é†+޶$æ8?hDyn®tƒÒ<ÂYhôf/v×é®ã‰zÇ鮕INƇ°'" ˜e`žkê fVæƒú,G‚é‚.—å¤\鶃È]#°Bg€}©ÐA¤ú©#Zx°z²£ÆniŸ)B¥,Æ¥Þ]éP%%n+M£fH"bbÓ…^¹ðD—ì^BDŒÆ$KdÈ4/´T#Š´Eb·Ú7jż)i4BC0öê†6å†Èfefƒ¬85®"¹Eš®)Û°BqL`*E|áæD§? i˜¤pD-¦Ë"†¹((°ˆ±Èk¤˜_õ튅©6€oSʼOÏ|)£þã1(A«|…d@C0G*·æyÃ…1ø*.òÜË*uƒº;+HhJd‡¥ÐqELNð×鵦,SäÄp'È(‰âø%ˆUe`!ƒ2ï2*:´êS¶­"x?ç ΘÃÐÊp‡ðçBn†BbY«æÉ&¥ê7 ÌŠ9p _%&|'5d49ló(äA!þÑ¥É Ôp(‰ ¬RfÄ(Ãp4i\çìž_q—b¨™Í•.†²ë»X!ˆækm×Î6MCi«$Ì<—æpȉò)²QÎ_0¯r“]. qâBšÀDÂÓHÅPüBºå¦M.RŽ”éØYN¾ƒL% ô–©¬ÀÃ'l[ÒfDS:ÝE‹7®[íö¾ã€7¦¦ÆœbC.S³v0QT|E±òxW ä‚ç„ÏÉÀe¼£‚o ªÆd )oþuMµ©TgI®³¤5ûs§Êt¹Ø%ÿ`ÍjcPÈF; ’×¥´þ3'!¸Ü¢ó &ª}ÅcyM ûòáq^,z»Kå<(öž\¥¿¯8‰f&,¡C­Wn´cŠâ"É;ʇ.‹Rè¼,®Š? òéAè³Ö  kÛÖ¹1„ë¹-‚ ‹ÀD$˜Ä‹`¨»-KôÁ)ÛŠü@#Žâ:Pjð®¡Èƒn˜8(4&íÀÊ”{£©`—>ÊÓžÎCpCj½#qè r‹¬”Ê`ªãµnb§8òû"-òô¬³¢ÌKtÌ¿°¢R…DMÛi.KòìäÞ(`"À§HtÀ§±Dñ9É”›C ®¬Ã6±l‹C°ÏÍ28Ó¤­K#”z Š` ‘”}F( ÄÔ!茓@4ŒKISßJë¼~ÊÓJ¢¥³êOUÏÈËñIS鮯Ž;žöY/ \¼²/+O*¥³\àË!­ L–ʯÜ#>¥SJE#Éc!±’< ÿÂOÁü’¹kRâå.H;ΔÃñT†<)j}~XsE`€2X}¤¨’š€¸;D—ÎÎ,?ºJ¤Ø~Ñ ð2„É¿ƒ6ö r›¼Š£ñ;§y@ð|²D­ÇéVf”$ÔFu|E*Iœ³³&qLhIL×7•Í ¤VQk&Ûäu–µé‘þ}DK -BÅjúdÙ:]™óFiY¥I¯hLêt¼ÐêÚë$ #Z~Ÿ5n½pÎóSXÒnÞ‚mÐÝiìmÑ;h¢Es)©À¡eøp¿!Ýxű<ŠABÕ~ÔøÿAømT÷¹V!n%É’Y¨ü!d! °Wb™'2o{1Õ±XV%|ÔÊRΉ0) ´‰©7¬—¾%ó rù‰þßÀN¼0ÁF—÷]I:êiHdôŸw˜¬LR§v­âÎ…T¾ïCVêR¿dlÕšÛ_»i' éÀ©–€FŒB~Äñ²“˜ñ^º—Uë5!6výšCžj‰ ?xÜHa²V)¡O¸§ óhƒ¨ù‘µÀp•ä-Tð—“4 p͵(H&QŸ”+R$e‘’@1}(8‰ÂÔ(¶HAqf¤ÙÄCKMƒŠ=L= • lâýWìÙ~¹ä,y (6ìTå¯äZæÈ±•AoIÖ¯5ì÷Ê)Ñ¥~Ö¿ÚåqQ²""xcHX©€¥¬ƒ èÈq¡+Î5Å.Ã`wI<~ 5ô#ˆ¸s]’29k½l›gv]‘±«‹m­§¬kÈc1`¤}:ÆúFËÈ!â*¨81[ãøaì ©À×öâL…3ÁÀXrŠZÔal|–Ã&õ¦%Ãñz¡%RWˆâI‰E‚NìŽtsC¨$"‰ ^†|ôšBó[jj€ åeàhGÜ!iÂ0GÇF³©ð)‹U{0 cVM[2†¬’ [O¶ECa.¤”³êƒWtÎj0a²«Õa m,PN„¬ž’„ݘÓbxÅd~˜ò›+Ðð —ô¶Lì\Ù®Éu`Lµ*g,¤Þ`мÒÍÆÂ¢t=1QÊÕ5fLõ†€0®h{B”NM¤i–ÝF®yÒp¢HJØ¿hEfꂪÍʪòC$jñÑ¡CN‘J4HÖÐ8}LÈ¢€+•¬"+ˆ´"¥„ªðPsþĽݡç:’“  Dî).+íú{ ë6‹-qÕ£G"˜1WŽ'…Ë9„»"%µ*}Ç)hšEKD¥s%ã’¼ö©æÀ½¤z{:,9†I•ž}\¼Y/Xï±ÂþEGá ´°Æw§û??.ŽØKå&°¢ì›FJÙKu# ëÓ÷K8eHeƒM{g(¹'L˜rÕ¦ySOÅY$ÍÌ­<²B–Mïþ GÊÂXÍrm·wq(Ô-ÍuÁ¼rlô×P2Uߨ$ë  ™“ŽTõÚÞò$y?+=ÅݲýJÈq{Y$ïG ûü‡ÎK[wÌû±×Së hÔ>žŸrWnL~š<ÇÕbâz9€Xæ&& ‡’ÀYë#^uwÆ“\©ê‰Å26 œ%âU*ÃËríÚ;ÑêÈS›ià/%‹V€6 yKÑu`O4‰¾}4nzGF¦jË)‹¶ŠK…ê4²H¡±÷9` €€€ P8$ÀÀp'ìˆC¡`h þˆÁÀ˜|NG!àXòˆE€‰ [(ŒÉæP$|ÁäÓ)€u‘LåÀ&10ÅŸôx,¾‰Kè09U2A'§LãQª´z *’?ßqzlò U¡Cë6š%’!kª[­’›”Ä$NêÐëD kyKjwé-5Îîp+í"Í‹­Yî±¼€áËàïüW#”·ãó ÿIwÂÑipp&¥Á¡y̵ÿ›SétXÜ™ç0ÍÌ9Ai6’xæ—-m•íàr,ÎSgœÛæs™žwggšnÃ÷«Å¤ö+œc·¥ÒżöÖÞ*‰ÐdZ@ G@í¥icLË#Š‹hâ¡(™üé>( Ì£"¢Å2ˆJ”6È:nÙöÓŽ*6¼ÐªŽø(‰ð}´§óøî8 ò€o2÷¹àH~¶-:1)mrù=¬´v†ÄJ» ½³«SDÌ2êó@¡ÊkâêJRk=-ËŒªÿ 1q´Ì! ëX„ËHÔTñ£kBT㬮êøÙÉ šP¸<óBxê¹r²W.Ìß@¯m 1ÐK<ËÊ’ÍÇJ¨3%?²“íDJ”ÅG².úÜæ°”£žÚ/tc5'€”Â俨ãäÁHCJÕº±Îí¨Ê{“ 5ñöÑäŒÒ!v 8ÐèÒªêµÐÃjÞº¦ùMó,íAsl T¶¨JBóÖgí?Öðs>6í4ZÛUîÔÚ=¨Å³k·óC]V­Ï2;ó-« ÛžîAsÓ ¢€Í0 ¨Ÿ ÔäÜÁ*£nÄ#öÃû6ân%úÖAà êÄ¿Œeš“9Ô®k ¨šL¿¿Ì£üîL·þ ÏËLm%H¹íDV¬8Ë|è²ÛŒ•M-*u8ºTZŠ™Q™µ2¸é(#~Š:WÒy›+h²˜•I›!/ç2ÓòÆ!¿³g¨|EL5“74ÕVs*P»¡ºîÚ ‘”쨖ûµ,”~@è›–ç##jfß§m”JÑSmùDûMðŒ³g0 ký͹7¹ûlÌàJM“xå»Q¢ŸÑІ± Sr䨶 ÈÌŠMgÌŵµgln­ûúü ö\Öw(Dë*«™Í™Ä¨võ¬¨8îä-g¢×1‹Á”“@n›nÓ£v¨ŠR«ìiçTjO?¸ BøÝ5¯Ë ¤)ÂÄÖR‡öm )ð9%å‚¶@Šœú)gdÉ‘7F}Mã·7•(*ãVRŸiN ("5 ¿™Â‰y N Av ×‹¹Mpʸƀó[Ë4nðÅ 8RZKáqsK” $äøÞl>]H¶BÆ–’áKdj&yX a¤EwÖ7ÇЖ+?Z…$´€¤)(‚¯õÉÄXS O:$!ëšÒ ªW‘[3ˆœQGÑ~o¡ ’ã«ÉÒ$P¢}Ó"zȹ¿•<ëÐ#,Yì CÆÈþkÊɈ|fl£žã2»P €95œ§ÐvY{×2ŽhôÀÃüvÝrŒ¼¢#CH}Y*­<è,šD>ý ä3mMIŬ‹É2 båEe¤9,tæ‚Õ®‰âºRVk TƒJ üÕGé miÝ„q'DéÊÑ"‚]UE¼ƒž(uSc†+ïBrEÒ^ †Oq$«˜sJ›# BqîE}Ã!±2)Þ~ArBÚÛSZ!FsPäÊ„$$KJ†œÞO“ qQò…RÐXÁB5ˆ E98ruÈ*?&T"&òÿBÛm3zz’ÕÎ rª+j¥ÕЉì`VŠ Bµ75DÞsSÒ) ¬6ëÊš´›AÁ™j¸ÙË{t¦ž%5ST’$a£)lUï½hæ¨Ïë`p¬åB¨ŸcIÒ^î€ó­Ú/.–ÜŸW%Uú G¤JÚšÂF˜šÀp?‡å_(£ôZwžJ !rA!2˜s@!G‹æªÓ”°ŽÍ9Žvl„’ItWm¬7¨@¤¸“'JÅ•K9o+2& "4`Qkn€ÜxÎbüf¢©Þ>´Ó&J€A 6ä‘ÖÿM"À6)NàÆ&˜Ö®¬õºÏ¡@P¸?ÞŸO“@™Æ2¨fѹv+kíÌCEÛÒÝnÀü›;rÀ!>Cå"C{*•×»'©JÕL§zjh…hU²–{™mhÍÎVÇH¶…[”Î7®Õo¬$ßS"™D(¤ž!= œŸ®¯ŽzC{Ö«méý^hþAÚÛíªÎ°ÍVºWTŒrðe_=ÒÕW>LQGêâ“i"×\COi‚Uòyj9gòsÖFHX@‹'EijÍbÙÁk‘—jyŽQ¶]'ÉlKWÎÔ•J³ö×"´?;Ñ£©¸‡|ô€âXßÒ{$`R+nÀ®—Q@7^n´uLöÕù"Óœ²ìîÊEEÔµ4þå×ý/T3EI"Ý\ý¹´Ó–Ÿxõ´ýÖEvëëxeÉS`¼Y´#šT?IÙQj|*мâ óJ1·š’uJ!Ô^Rª>êM\2b<ä×Néû¸Q,MoÑK\ß=GRŠH3€4ÒS,ÃmAo-£¢¨±SaGÄZ<ã¤G|v$ƪFà @@ Áî>@(÷ƒàÁôMÇøúuùþOË×dÂH;ë¦`ëÒÛɦ Îu,ó.’žëà9+CöRÛ»¸¶u ¡Ê;ä-Ï»ûkÎrŠƒÈ›¯ÜbÛ³Ì+`䀠?GÉMˆÝ$"•Z°9shä[ܾr$Þ=…‘ÐJó1Ìsn —/“â]úêÍæuUÆeó!KR°ºs¦‘g*Ö·xfvz¦g(¤#m÷b åY™°F2CW5òm£@ #cÜËVråïÚ^ jO‘D0‰ì*jš¸TÎZVñΑ«0û^·Mä1ÁÜwº}YÚâ+n1òÄ:`€€€ P8$ ÀŸðx$ ‡Bàà(ú?!Ðè  }űh|2MÅñh”š;$“C£ä*—ͤðxŒ™Í@,HÍg  \~Í¥³º¥0…`O¸¬î(–M¡ L®­%³ÔäöH}ª©«Ke´Ødt}Wn‹e\€ãçì­ý+¾€@@€0þ}¼pZHÍŠb¨oøþ¯ `AÇûíÏXv€€'ìjQ²?dr«$~ÿ~aßÛ·ð ±?7Ïü»þÉe¦B@v@=½à€h Í{‚_ï§Œè¤îëœk2?_  éûG_À€=l[wïâN¸üN7ÇòÅ7¨³èŸÈIúßÊ`¡žèyôþ/­ÚM7ÏB~}ŸÌ³ ²`ËCïˆÃ€-’¸’< $F²#­rP¦#ªŠÃÀsv£, B↳Ilb¦$Ž"Æ«€ñþ‘«­„’‡¨‹#È×Èïú…¸‘T–¸$«ƒ2•<‰Ìbþ!ë_EˆZf¶« 4„ŸˆZX„Ä0$H¡À±bʲGo*Û2Ÿéú<ŠË Ñþ¬Ii+É=- ¶<{|ÂÐ1Ì•QÒK…¥òR´Aà+ á!îXü0°ò<²N56 ×öôG…˸Ýú«LcˆØv·¥¦#ö:¾° +ÓQű6¸£lMSjPD¨$e |]¹–D©‘ÄvÛIàz)áÓ1¢DžIT%jQ2ÁTaKÑQéá%¬ÛÐ"ÌníÛ­&©y ¤ÔÃ2D„Ùg` D«¾µ2¿Š¹þ‚Å7v4bŒJ€q …¬cÞPÕê”?«W¢‡LÖ“ºä]kU€—¸ÈAÊ Û]‘‰w-UÎÁº@^¬j”¶ A ±[]$H£$‡# 'ð1òHü^™IhŽäMÅ2„ºS,b‡LŽ€bȃݹs‘1ö5“„fÅÒ”…b²<´äðÃ+nxm@ÇÊßË|™À†TF ã07Aä=GÐõJ>š¦ÈŒ(!cÈ|Ñä>GèA K62Vú^bKPåÜpå £ÅiFm>(5\I ¡µM¨%§cT™€!,”ÄћЂÇð 'óP7L~"€´ç'•7)€1QFžÕ\JIw´^L¬ƒ%í¿u¼¸w_Äu¬¢SÞl)mÈ•¿8Vé¥Xïí_Ø £”AHê\dâsRA½5…(£)ÂãñÄ5Ñ!ˆ¨UTg‹ƒÐ…Ä@–¶ÈPœŠ’01I ,é XàtHz@Ö(ˆ>Ò”/E„(¹(©¯é W„eWùªbgª„5g$Ã0·‘mR)Yç£E^™LÚS?ç(TŸ P#n¡÷™¥ŒIbtqJÆG*î­‹lHKÍNZ‹‰óaPº{k]9—Œ¦9Ö•dH¨Fl]ÈZò.5„ºeDœªOµ3ÉÖf`¼±M¤Â7±éF¹Ùbb× ø)n'%4Ž–¨Ï(È4œlå:çÈî¾I‘P'Ri2œ†NS¡jd3%E¼1HÇ!˜E/‰ý‡<õ¢ªÏ(·|§†ç7W @¼Ñî}Êqå0p”qÔZÉI#D…*²þ@P9 tÆ ç9ǰø†0¢@?'‰ê7h=Y¡ó,¦ZÑï æ¼Å  úZ8øÐÂ!å@’I\}"Ž€Â<œiQ¹›êœt2ìÐy­RVˆt<æGøø8GޝÂÀ™\»N,ÙɈ%%œé†‰a@ÓíQ¾>Ä”¬ W€QÊQ6ØŠv$>‹Èþ“½ÛÙã¡­ØDDüÖ!ôVr’‘¾uª¶À¯â“¦Jb©@®&³'h“ »NŒu‹¨…7ŒQZ‡%K¦JâIUPüU¶½þ?zÓ Éʦ“ùÖ"U)ktXI,òŒXÔ9«3ÖµfuŒD"´ˆC8 A™Ò¢„–r=X†, rJœm#äÒï$’°Å-•ÆNVËì˜W¥Œó¶8‹¬ªæÞAÏÍX†Ï|°n9®P0*§;+€ÙiC ; @϶@±»¬À%Eòw‹—28Þ/¡L@8üŽUtDOzõŒU9$‹aOPiwò=‡ˆü›¦û/5D?J9d{&Ïà›þîM£$˜£–|Þ¡…>åLÀÒ•O O0TË>ÅŸBGø $fS0Ã$`É,Ý'ãàÞÑôƒnËϪÌÀ€ƒvM}³¶JQ…ý÷œL«îœ¾¨&ÙŸŸ,(!ås3—ÿS%€b¨y™ååa©©P+ù';X ›$0¤•]—š‹Ê„ZSERkÖjD[G!4Í£09fº=ª6ù¤fKi#ZÎNžV‰ä„Hrá º'é ]W¨:a©´M*r^C2ºå(ÔkK:êLôÕFà’ü0 îAÂqžUíb‹H¶…PæÒkCòä MçÞz (ã©>°%¢,ExJh]N …ìÌ< bH‹âÙnâÝÇ^Ú„׊¾àÈ:Õ‡bϤ¢¼¢xꢺØb.Xëèäã'¬@Ë„^f0ãkÂ[”«tn.v±BÝ Æ )‚´¿ëôçbPˆÉ »nrˆ.(~Pĵ„d&<å̼[Q"PB”!ŒæäLZB&h¾ç”‘ë„!§FtÈ–½¦,R-H”âPËÀììaî*&L+ ºD§gÂØÃª~V¢l3 A!ð­ô¥,ŒÃ¨xLfî„FZòLmö#¢ž#X½Æ¸)€%d2RB¾üBÀ#äp& \-…òêâÎBÚ? „Šàib81½åŒ*â4Éâ(áús‘Ê='¨qDÜ@Fô':mh~&´9$¬Öçš6&Ô3‡2Ѷ5€±ŠymÆ÷I?!­,ž‚(ECÐ1cAïÚ"±È×MІ’0v«2´(€'¼é% ¿„€¥âh? ‹Äò3cW*ÐKøv±>9HÀ‰Äè‚4B `„/†¶h†3¤â±nâ«Åè^м"+„MôW¢¸>†:úÂhCÊP(p:­løSŽEÔF4P*N×D®çšéåâËcT±""€Xƒ˜0rîFbzÙ¢P¨V’(^×­ØQD¢©l6ãK Ù)ó(2æ${Ž8”hη…ÈŽ):/s.Š,±F3âŽ8Éð–*d@…ŒF„T‰¼Ìì öÊÐÇÂ~²*dDžBàÙ«þ`OÊãW<Ë.ÂZ& :*#2m€<‰3Mÿ7"X¢'>” @ã„z“b+‚FF„>d‡”¨ñ*-Š07Q ¨ÄÝH-Љ.V´( 8åy;e–3)#DìÛeÌóЯˆ8éMŽ„ð9B»çlØèJ>åÒ>)&QL€±†ÔÉþ>2ª‡…9Çô!D†S LR#–G Flònɨ gªÙä<Õë–OÑÀüQ¦ 'NY×]Θmã|µM¿&£šD®VM¨Y¨2è‘* r£i2#ªøR(h“(€?dŠ €0úƒ?ø4†CbQ8|.'‡Cßñ˜ ŒÄàúE‡G`Òh”VHýŒKe1i¤’IŽLç3)¤Vw ŸJ1À jsC”IgSM /“Åb²É þ@˜M!³z>»JžÌëpjÍ2Äd€X3îW3 Í*öÀ¸ ‘Çíñ)Ä>‘S½Ô¨1Xl²I~¿ÀT7ôšE€Ÿ¯ù6.KHÃß·é›ú#Eˆh#t,\2ITÑBÀoü”¡ÿ0Ïr ˜ý“˜Q©³\Ì2ã#i¡rgô+#À¦€d¼öF_¯·î73€@€.€ Ѐ¯§ÃÙøù}?¤à.-÷&†e!|¬Ög/<Ð`!{è…Å$­‚Äå#Ìs(« @ÜÛ²Çô‡±¨0 PgÑøÛ‹²~8‰Â:'ûÒø«,ú–Œ4Jr´ƒ @ ðø¥Ë{ž!­ü­‡ùö®&«:,û4oÂö³)ir?l윉0é:.Ó¥Pjʘ¢©d…¯¢žÞ¥ÐL7¤è“N ˜Ë¨kêÇM© Ô×€Èñö¡²skV­.ÚRì¥ #W¤À"ãGoŒvÈ¡SÙú˨cs5‰CfPgÛâÞ´Ì[&Ž#ÎÒ‡?>RÊȤ€S¸+ʱ)I 4j°T‚@1t‹²í5gãã(1ëõå%nR6;h*í« ‹)*îºJ2¨ÛXűm‹dÛ·,«#\2ŒÚXû9ÍCX¢ÐÇý|Û4o´‡¤@B¤Ó5’¡ N,#ÞOÜnì²—;dCpƒ2‡¤Ud_Ìõ©iÞès ¤¥Š‹lQ5r¨¢4¶ÒÈ¿QJó5gÃcd#×6³È«K‡ebŠ’1V´ J¹"Ç+âý”°«â7us?ªM24´d Ãà‡»ÉÝ"èèã©ìªVœÙm’ð6Lã’’×õƒRÖí¥À€üzN«©©U(N¯T¡ó눀h(C §ùò“C+|Eɵj„  : ô.¬¬ [ŠC¦2@í‚ €iæ~ž‡Èzž‡à|§ÍX墨T4¬& ²“¯,¯æ4¨á†çµp‰c&‘èÛ%S‚$Ñ%‡Ùòl™ÑÈÖwÁ4Û S¤J"iÈá÷„™%+ZJãq«Ê[,!”Ö!~€³*Þ©ð„2çø¹¬m Å6ŒŸéÉ®àÉ+ä6ÆE )µn¢Í{„5ï8…•’²ä ¹>gú.¦¤»ÊÙ-L¼±&sæÅ͹¬'iìߣ@AKº§Bpé(øJïÚ0U¦.7“yVÇÕ V]ˆÙ\ Ñ1IÝô•ehJ(û$š%ã^éŠÉ«7ÊHüŸÓV ”ñðŽùju|háªòmJ +ó EŽqw5,‘¦R€{M’é!FL«™³0¡ˆ! &°Í•epNª O%å^ô¡Ì¨üokP…˜ïȱØS€”Ô?ßHhü~QPuM\J;j)‚€ÈÕ‹(epÂ¥ðH݉ À ƒƒ{ÈZ D`€@iwfxz‚Jê—‚ŸbæR(Ƈät[Í5SCÌ|ñë9@àcìðà®0ä,6 ÀXü`1 €ê€2æ¼|‘îG°ó¥€(z!qòŒ‡àúGÇQM¤vjÌb®+'8ê™F˜bHIÚ1µÞ¼É / —;ǨÅU}^‘1CIFyØt¤Qá%WÅÝòUd>›Qì!õfþŒµ8)ž”5ú™Ö±Ek­R±r†e›ÛjtÅ Æ’Ë~GÐÛéq˜}qò?+x-ìKøx€ ù#´uÁÞ;†àãd ßìÊ*ÅY¿Ñz$Àbt‡b dÆÈs<{T4”3HP¡Ë´|sl1½°‚­g ó¨3¦IjÒ“ÏûhÈk±§™é$Œ•Áû;3)©¹´N”–>KU°Xb ¨fãK HÁ’¥h’ ù;ü "@Ð`„€pTx–@-—Ê1s-aÌWY ìD±”ņ:F.>C ÊQ¡’Z’Hõ'5S}`d Q2H«I°M#9®Ÿ‹‚wF0¿Qj¢L~MUƒ°Gn(’˜ØÎê‹©²a4œÙ¯&vfäm³Jà)£Šþ#ò9ª&¥Le?Ê+éq§JE£W<×UºÒ'¨ÍPéŒkþ#ÀûŸ'€Ò“ŠØ(iß-#Â6ù01À:K0çÅ €=Ã84 °9é#™ævË„×ÔD L&ÁOR6® Ã%_”¡O)æmôï†Ø€F± Û³nž-‹L$f6ݶ¥åTO{wl¹Âep_Iž·­WïÒŠü•ày_EšôŒŽ,žÅZÔƒWi_#je((}Ï¢73щŽÜ,“3j* Q4Cb#öòlÀ2un¨~ž•<¼Ž¬rU&g4mþµÔÄ–¢¸=ùç?ˆ"iyê•ó-&)_¯è×Àó¤;ðöCð{~;Õ€[÷öfeÑþ¶ƒt#x\6ÈÜèâôyÑìA¥ÄÝ``ÅpºÏD$<¢FHÄhÓ¤³ì¥p˜^Ñ»õƒ‡Öz+¯ö÷R‚¨ª‡<è)4ÕhkCŒ’4·j¬™¯:ék22VÀ™OŸlÔÃÞ—«ì•«/覃ðqŽÁÆ>pØcèr‹ð=ÀY”’Ð}xÔÏnô>©2¶pÈib*?j•H’Rß…j'sØd\„W®™­ŸƒTŽjræöì9Š»n‚O;C–šòŽ1ĆF`•ÁïWÝäÈ£õ(dìY¢x'çÂpdV‡£%)$œ@"@< R@2Aò .o$9C¢.î`hfÖFD<€ÎhºmC²=CŽ@ öF&ÝãþwCž1£ÒB(N!†N  ¥ˆ¸6Œ¤wåB¦€§ÂîÉ"Š#<žl¦c®…I&2€odϧbÚÜPv(Mœ(¥“ÅÝf®[ã´]$ Û"ÜaèZ_£"6i¬‘ëlEÔäüÍ|ƒÏP¥0ˤ @‚ôc ,ˆj5öåJX¢ÝÌ QmÞ6«ŠYDì2àÞKC62h¢lƒÖÿãªï‡´ÝЖ1IÜ“¢îªCšBnŠÌ5„>CdË®f]H”=F¸çÈøbV2d"ÃÇ.œi=cÖ!M/b8`äðPƒ˜“Ë ¤J¨5‚رèjóíðÈeìÄÎÉc‚åpÃø(€!îAúê} u @1@’‰Ê(Niïã)âËILn2¿ƒ‚¹áøuà`%‚Lr¹%¨µ š; QÂF!îtÆþ[Æö6åŒÍÝÄvÁãÓ)Fm«à°Ge"ÄxÁF®‚Â^MOÎßè8¦dÐèaì2!òLéÄvuGüm£Í-ü¡ÒáòÁ–!âÁvÁòmv.6oܳH¬¡f÷- òÚ¨…¥ŠÒÀþ茎Zðä¥P!MriŠª.ÄüY«8Å ]ÍÎ% €j@'¢4ÛG5®zxhXiIj’K„¥L*å¢#mµ/’‡³u7ePJ@ àaô ( . ‚ (ª¡ÍNDcaã–n t9醞‚ .âAÃ6WDÖFãò]16Gg,+ îE)¢„áü"„x‡àí8lè£Î.Èăü6nš2ã¸*Ér‚ëã¦×ÑòL­øÐ ö¨ŒúB–ó«Êøñ ®ì×süxhÅDDÅäiôDªâBƒ¦"ÂF㸣”74ê!j¢!ŠÖ³/ô¬(k²HGgL:#lõþ«`¬€/€žiÅCE¾ÊÃäºã&ù£¾—pè:d ÐÆ–-²8LLMÄp°¢Š.“q ¥©- z jôÅ•…¨uJ$^Gè=ˆäÊ$L´E²|bLdʦ)é(PÊ*:Êò’ÃAÆÁÊÔat!¾aÔ`R$R“CE(å% 7ãÀ:«ì)K4mã¬}i(Ÿœ`ö7 Paª6"^þñA†ƒ)odFô_e>[ŸA›‘6­^r#â8Ã-3ê§*GèGÈâ,hé7†ƒ¤§ ¦à:`€ ãÒ¾:D„¦º(­Ê2 l•TgmDž%Ôš¥8Vãè~rf1”f8)þH‘§E¨¼£g"2ZìkbÃ,Œ"‰àÛ#ð*Qâ¿ÿ1-=®€JÖ¼¢Jㆹ ”ò3p¼„ïž“HJX„#6ø$tDUhÞVðò×Ä £a]íþæcGg2ŽÀdÓEå:è”Ýk‰(y$¢$c¶q7s‹ô:ÇŠ̺Ÿ ×1.yÅ”Ã"ž‰PäâéÊÐFÊÈí28¥4é(‰“,äLhjÔˆÐÑ«8Lj8ªì0]’Ž=‰X9 ÇLÜD(7—CÊ æ ::ÄD4h¶Qëö8§²üíÄÌV€ŽJ‰Âò4¦t\èj;B- üW|i–”jBÈ.1oä“òÐAò¡àD3*É`„Dy`â°×ÂSNøSHX„DÍzf5iL Cd†$ Ú R¥Š£¸äé)N”€M­þD‚Kd|é«2ñc2ãÆü I„¢þ&ßc.Gå Q–ŸjW¦ûòž.är*ª¥P× vYcÞ&ôwè–i@áô!¾Aðá˜áÜap Ì5p¢ŽÂ’Æ¢¨eñCÃ<8•6Æ%„Ê1He6œaÇÊXõ=J dxTo¶4ט ÂΑLÒgãœ2ÉØ\#öT$PF¼eì#ç¼l'ähÇy™?b€þ„BaP¸L†@€ À#ì"„ä@Ð-êúÀ 0 ø?@@Wø ’ËŸ¯çøþÿ¦€({ö4å@0 øû¾ßð( ™€€`YùýÕ¡ógäÀ“Á§J½«ÏOÙµž/‚Á'3™€ü²Ù@µi }d~Î*2é(£&~JäÏëØPü¶N¶цÉÍàUi4Úo„É€ tÞyX—Éê@7ð |ë_/÷èKMhÀ´°k4søûQ':ÊËõû£±?¥@7ø]ÒžP`U6;ÔƒNf¸§BH²M{³ ¬–³Û´z½ÞúŒÛ³®Òåò¨Sb)à Æé«^Iáô«©oBJßËÂt:ú¬$‡ùö›§Í"‚ªª @Z¨)§ëÜŸàB¦çÒÈ~:ˆzÀœ)±ô’-h$Ú¬ƒ4)²|Í$À"Zœ0 *ÙÃN£²ª%é2Ö‚7ë ¬‡&íjÎÁ')ú‚«¾©ÊQ+B)ßKDÚII<Œ ( "š}¹Ó;. Br«¦²ª(Ë*¢ŸÐ¿´‡áòÈQí¥~´3ó4’%i~€ôÙø})Î’FÑÀkCHù*‡âñI>Naì’žêóæs98'Ð ŽÐ¥êDA`FíB‰{ ¬§i‚ªç))k|~)B”9§ú–ÀªTÕ€–­ÚF”ÔÒÞÖKh}žB/bK#$‡éì¤ð¥:€Ë%Ö”>¬rGŸÇÊf˜W”[éF‹@›ÆùÌ{Æ9dxE¡Ô} ±öº5¨$¼âȉm §NÚ²ž=êÚܵ é|–×1Éš¶¤òí*N+âÊ« ––Î7lhÏ¥ô¬ôÚKÌ$lÒ%Ž;›j0/\°á=Oj¶¬dxÒ®½‰z ¦Â—îˆìĆàX|a € " 8žGµèœ;2Ì(Ö, € ²fPã´ª”šî®ÀV1Wꋲ³M½"°ÌÏÉ?¿=‹#Ž «/{L…&ì5”ûBÚ–HÓ¦€"–''ʃ ª){0•6kBßÍLr a§Ê‹ûÉÛé«Zð)²r¢€œ9üz²w‹zš¥ tä” sûž™¥Lr®ÖhïE³Æó¶·Ä©ÒSúÜŸÙûxŸrr\¥ªgè ¥‡ã0ƒ( íç©)‚Ø¡Ž¡p¬iü&b\“–³“i¤<·´ŽÖV:­ð˜BüoÇòŠ‚ œ·dÓÐfkàÃ3’‚äËò¢u$¼¤.C©‹i41À‘e~¼@®cÄœ´dàÒÏi0†F‘‹–µ²½›X'†@´CÄjœyâ*¥ã|ÊA6äáN¢¢²òù4(qü%õônRS#Jä¬è”âÚvYq“5©„ý,¬o³5+p ;ãC a? ˆÈ$â¾@QϦAx’§à¯K±¤;$äȸüÿIá>/Çôé/bÞa‰*Kea­±u€•¡r5²€~›ú> É"S‡Ø«–rš!1.F/¥³[/á{²(&½=™£P©Öé©(#Ð=ÉR9R„Åd™%zžä=í`«"¢à=×H~‹ÑÃÂ#ΑÓT g&Tž?Q쿇Ø÷.à €Ä7hø£\².`úJt}ft“ 4S!å kNƒ¨¹Ko.$¹øÜKÕ‡¦L›=BŠRKbG-hQü#rHRP¢€BÊõ±”ñíMCH&NòèH®u¯b…CÉi‡,F™€:T=$®%~]&LÖSJðË<´+š™×cbIb,zE°­Å*ü§Ízp?Tmª ÙÍ`ù)  Ö£ÙâAˆ%D$•%œÝ~©´Ü–âZKÇÓþ¤Ð‘M˜¥8J¶ZÒY/Øë\Cs“pàW¾³~Ô 4ríÝ/ó[Mìi:ÄÓØ:`]ŒYKиCÁPê€>´â4 ²ŒLf0QtIoÒã ï¡‰N$¼´fJì&AíÓ"uŸö&ëXš¼ KÀQB£‘¦ÓšbqßVD±3.9 €ÇÂ9 ¶Þõ£ˆ1‰Lp|‡¤8L’Àø*2ÀAŠ‹P„,mlÊSÃNJFvXHi­™»fÞJY(fëK¾õV¢ÇòñD%°àÚ»òWYRâ3qH8DQÛ“Ë&n61È:GÀê¢èyá‚:‡ÉD‚åE %ÒÎZP© !T­ŒT *Ø$Æ’U$YHI¶ÑÄðÙÅW8S+:ª4©f.ÎI­9-±úúd +¸ˆrHên“–ràtÎ(/ÔáÉ#sË1 ©h]óÑÎÆÛZ<6^§aîA@à¨!°=_S¬j…€iE_œ8Zõ䦧" ¿pñ0+¦tÁçK yéÈ»ÏUáT*Y |=0šØ¦pz6DÎiúÄØb·¬˜EhE– À¹‰ñK>ÎéÀ83åOŒ“5S}(¥Âö?‘p–¬™“¥) ž•Ýtøé—í$ªŠ¹ 0pÒÝ“]êz³;?;€XáìN€NƒÝུ~Õ>~*Q.é:#¬ñ‰¹MçQ=šsBÝO;XF¸RQ!døœ*{Ø> åLWà²UK±¸ç«'¼ÒØüÀ'2ö?çyŠ$¤”2®K¬ºðL’ÂsHu¬ù“9Ûx­Òâ ]¦»ÔËŠg²¢èË.,gä’•Ÿ™Ò?ðB&¿*xeïºv$Xõ „2¥(5„œp,t‹Ã.d(J&dô:i $‡ÔÂBŠõ"`9”"©pîLT?…LD,*NÒÝ…ìY'ªÉiØ·Ê`KËè)ÇzwˬQe> ¦d¼â„²¤`(âî´£sˆ¬W#Ç‚Àf`%DzAòXG`ÅœUBÖdbÐ0Œ¶XETËc¸q¨¬’†è&ç\‹XCÐ0É–=BÖ1"h)®Ïå(9£ ; ^ÁéV&ü3&.\Íd ü9äv 7ÈD&ƒÇdº,Ò+cáôжfð)cáÎ@¡¢Aèn-\ !Ì(Xc¶.N”k¨ú—ˆd[èØÐ"&丢.ÜÝ :'%Ž=g~v¦:gGA¥°Båò"5g©E°jÊ÷%”ü.«€ˆ0/xkq =î@!#²¦Š4-ʘ¦‚üÂv1–0 € À|ÀN@4ñàC"p€)4$ÐÊ(Kv/9é |®Ú?š‚§¸•C4>ãêõCF<\< v,ã>¢Rn¢Ø¼§È~ËV&…lM£Ž ƒ06Çpý„¼c&L¤ÈšÂZÕjÊ4âF…ŒˆKÆTSB¢ÅÂtÐâØÕ%(}CÈvƒ²*å#ü”CÂ-clïHˆ£„4zDà'‰dj‡Íî}AôCi`p”cÅô/ègJf‰¢FP"ÞƒÂêáþuÄ"z¦°*¼ºé ‰*P'b9à«.¦(x^‡üçB— Ebfˆ¡qƒäÆ)à'ƒÓDT6„Î3a :É XbÚõB¤¶ëfM+P’CÐ:䆋kV-î%ð—‡#l˜cªG-P¸ÌIÆBShXÇLz"L{‹Žú”ÇB˜t'¼*Bؤë:02ÉÅ|($\è/²3b¨o bÍÆ¤7ˆ¦Ur&sBìk„ÌHâi#JέÍÖÆ+($dÚf®ï±€¼$&Žmü*$6:¢º¯Ñâ €(0*ä:âgÌXBVæìì%„¶v¡ì,î¼Bª-E?ÂT5áöR$ô/§,-©$(B®@c 4¢`TGiu ¡ðòí2ôbþCDÈ„èHscª7àÓPnJÇ,4ã'ƒH7ÏúFcw6â?Jô1À 7Æ/0¡ønKZáæXAçaä ¡ÀÁþlD nIZ)Aì*Ô:aìžAîM¡íKÑœìD"Eo¨ƒVµozÒ¢ð3b Žn2ü¦T.‘\"º4® àðB¢¢ä‚±GÚÎrç-æ¬ÜCº³Î!äZÂzxb½ b>%LÜÇ|dª€‚ÞtfþCdj࣠d'Áò 4 ( ~@)A ¬ÜH¾‚Ò~¬T&¯Ðy$­†¾,²:'ÏÌTèþ7bN%C(CÆ40‡B2Gp1Ä2Kæ~ŠÅ*–.ãd††I@"D”Oµ¨2*G`+¦.Xï $ãB[¨~ïB™îê­hÞ‡ÃÎÞAî+#f,ƒ\Žìì9ì.1‡Þ>CÃ2S†`‘aòM§£té^CAê$~€”~ùo¾¼…äƒ%:ëxÀñø<à‹¾)#€EÀ+ 3 Mð? p¨qú¢ì­ |â €#AI2 „~2°"kV4`4`ÈE,J×LncZ¨&b–a 0H—Цä"ðAÊÁʹaÎÀ¡âaÌÁà´À!´áÔ@Ø`¡¿¤Ú'˜Â¨r=ŠH¥þ—" ´1“P 3ÍÈkÂ’" C¬¦|)H†ügQf’ÈEsJ4ç³¢Ü3ÒÏ#†lû«J98¶cD:"¦ZLÿ‰Ú=èJgdVSªJž`@t R`8Áök?²v ãœ;*dkb¢ÿ‡¨–¤Œj(άìÔt¯ýM±S$ê*¼É4’Ir[®ñ‘†û£"ÝkË(k0z‚Æ&¤9èÜjM*‰«>'ìUY\YCW0¤ZF"Ð:¾K2þd´FdC¶D „p# %Óô_Å|§E!ÂF£ì£Æ"€'D‚ÇNð$nöáÜ&Áà8öÂ'’°cô`5 %ˆ«ˆ‚1\¦f´dŽFN+™‚š[hÖ{ä**@5Èõ–²ŠdÃ5ÏÐf%@'Ã(=£–F£à¦ZÜ‚¾uBZññE Ï!üŒ&b‚(¬å¬£¤Aeè%Ëx]NX"Æúé&{Ô;il³ãÿÃÐÏãíš *ã‚ 6Ç%$4M¤Þ~”Ôõ¬¼&÷E"Žž¨R¹Z%²Ö8dˆ…ÖwÐxv¨*)„ÿ©ÃJƒ©M¬P?‡r­öVpkÐcÃf‡"L6Áø­!ñ£À Jö(,€se Nƒ:_Š]+Pob Àó@(s®lpÑÆB˜dÃsb¬ÁaèDbÏ EŽ$èdQ: êà#~Ãv°aÔRÐy€v`à,À"8õœ%["(„  €ÁãI3’‚Ž:;!æ Xsê5 ³D;3“Ñ›,;¨0F"CaÂKÇ©³Gyº·ò¹l=/‚V†ÁnV†6¯¡Ð7!¸áúb!Þá^¡¢¡ÊáÔú0›£L~ËG^íî.Œx´\„ªÝCª5 ºrK¶gΛVGq;ë¸ÌTÜE†^e%ÖÇê–r9hà%²ïÂh €€ 8þ¯×ûô€Ÿà00øú¿ŸïèL€@ÀWûéôÿ~F€€@ ‚€OP@t‚C ÷³Ì ~GÀ d)ÿƒCèT8u €ªJ<ÿK_àh$,*Thà £_©@håµ€@õ‡Èÿub1[,F4ý¦Dj1;eÚXŽSßÇÞ.C´Á«ðÉd |ZŸk[þ_h‚WìjÄón¬U`P0 ç¡÷©EÙý+©`–Góößl`Ø0<ÑÐå «íúöÅàO°èÕ€A¯¼ôNƒ¥×Á @ÜQßÏꔆÙáÞÀOçÔO$/·ðÈ|¢GÚ×€mÒÊ}ªgêÉ€«ÓØ»*hzÞ¤à38lÛP‚"KS ߨoâ,ƒ¨³.‡ø õ£Šø ¸7ÀZu¦gJ( ¿ rç"Oct­¥çêÍéò‡3(|P°­j"Ä}` }B ®@ “PCê©=‡â$~5© ®'ÂNzŸç¨| Iîh|€~SÔ¡ B.”Ÿ‡ì¼}& zWª ”Ÿ 0²®Ӝޫê>„ºJšEèLÄØ€H[Hþ%*:<~¥àB\Š3ñjÔ¡é“è¸.  :¦¸·ï`ÎÄ« H‡¢­Ôˆ©O µÅ(R†ñ€M|-n¸ª ª*—:¢V€@¬¡* ]J•ÝwÞqâ|ŸàyÖyÚÒ‡R¥_BWŽà˜. ƒáˆyªHªˆ©3j5¤ö€ (ªoaú|ªOªÊ…D·sGp7«|¨å=ˆ¥Â±68ŽT§Ž*p€¡Êv†ñÒf€eÙ¼—†ñæm ¶v™`Øfáhpw5p,¢£Ô¨òÒ¬$+r†½h<8µ ØŠìÉÝHs“­> ʤ†d§ôJÖ¦ ÜÉ)8 ­½¨ýºW˜ê®jj1¤(&Ǿä ÷Í Š GÍ EKÊHö€ æƒâ(àØ z/íÒ¬2àô‡CZ‹VÒÝÚŠŒÁïH‹9d#6; (q(s€n¢6¯¨èüZÐä,߆ð̓G·©k|JRŠ1$þ[|ö¿‰CÕØï*¬ —D 4¢^‡ã:µ»€ ¸¢5ˆŠŸ¥â©êHž:WJ®Ë üâZg(jùâ—b\~‰înå½ó|?À9€NÃðt§Ò=Çøû£ð{€!è € P¥  Á›qgÁ©ƒbEÎ1#+,©"•I p­P¬·ò°> :ˆ&½45‚¦ñ[y+#p(•ó? ¡ÑKb%d‰š4$¿ñ½,†,~¡ô‹Þ‚+!¤µÆ‘B°“¸åãØs$pÀqô+/ìBDF‡ÉeÅ(Á²6ÿ– )„X×ÁÂáH@ðA‡±dG±Æ¢hLàì:c¼ $G¡ý`~#€À å1¢PYHü8w¢ @P 25]‚{À2Ø úÁ•ܰÓ:Ø&¼€@y€RØqëˆÀYzG¦4òÃÊß1Q’­3œÄJ=ÒiEI_0æ8BŠ”ïC }¡†"{RŸSëñ~)õÔ“Y ç10/Ôº§ñRV‹VƒÞÄFùRåa;!!ïB˜Ma+ñ‘1T¾X¤¡M3n¬‹ÅŒH[fš­e¬£P`IH]Å>âü׈Qƒ„>bµ¦ Vcc5'ÝÃ6©fÚ?XgpÇxNãÔv8™¨ÆÜm ¡Î7D ðÜoŽÁØ7Xb†f¥ »æ®ÝÒédMŽÓ‚j4«´±ò2×X™a ¨&#š–J Q " H†µr@YÕ2Y´÷“À‰Mé d¤(±)–½ ËYëE&Üý U hÿ@ @& B(ãÌõ¨çüåQÙ¢)Uø§‘ⓜ ZvhH±Áö‚Y-JE —¢`q‹J=1çâCb4 Zíl¨¥ÊECnGذúb$9–DÌJOYø5¥Á¿ÒòJÀ ¼eÕe ‚J6$°¼f§ YI.æÂ•‘üc"Æ€ÚƒôW Aþ+ ÎÃ8jšÌ¨ ®H7´´À„`el(úe®D¶fÑa¦`4Ö%@öJk” )x‰¡’ò2HN1£1 Ãa#J{H \ö‰±ãôÀSͼzcH@·‘"YÑEË7äd—“´?ǘ ‚ÀŠ€€ïud´Ö¬‚¬ò›É¹É„Àƒ¤â•s€9¨í˜¡òq—MäS$~·€ Zä™óáÆ°·£î·#]ÛêŽÉÄ¿!QónP€˜Èg«bC/FÄÝ‘÷© Ž™,†!ÒŽƒ±ûzq¤KLÔr6¦Q&L%xõñç½HH€…âJü{f€"(4ì`È÷£Üo¶àR€x#©£ÕC1ñÚòÿáôH§lÃ2hò¬ê0Lƒn å-ìðæ.¢Æ9o>é$T"g¨:b†L‹4Š‚R6(D#iH>… "¢ÍÂ$,.£2.âÔ—€ ‡„~ÂÂ@¢^î¬@Ä øD%À„²!ÖaÞÀ B`$bÖ°b©bÔUÄ UÏzŽ¢:ãª<ÆÜ3íä‘i¼/Iø ãf\%ü—M^*!ì.&Þ!$0KåÔ< P*D0_‰þb…Þ,Fâ¥B¥‡Tmm ^ aÉôÙqñ!1$ÙÖV­ŒÂPø]ª`CJãØÛª\&ÿ¤$Ÿ$bƒJ(.¦¨ ˜+ô`"RuC=¦Ì-+˜0e2C ðI¯n!HUf´4£ê>b,¹‘4úL¾ÇéÄ]IŠ;‰Ä%b¾:ãÊÐVèÙá¾ aàÁÌ0Á\ÄA†lVLW1^õ¤†…Ò ã6%‚F$dÔt§þÏä¤2#]æÊ]˘ü$Jƒ#æxjä2BøÇO>Cä",‚ªú  $ƒœ(Î1â¢"Gü1Ä$‡‹ˆ,†ýB‡V9Åt!è8à*`†‹fýå’*­§Êü ä^!ô!|¤Î¸GâFÐæÆ(‚$ôã¦6è,¤„Ÿ~O†³8Vå6.¶î,;„’c"ãJS+4î’r%ox"/2#pŠúLè+ïˆAJ7"\êÔJÄ O2ë¸4d:%Ãjc+˜)Gš#ª*ã×Åt/ *1 &5à9¦@À }ŠJ!ôEú+‚ô"G+¾§J˜òJƒf)¤¢‘€ <¨2%ˆð3äô¬.;„P"kœ7BY,BY9"4}DW9‚à(ÄÒ!þät_ÒrWÀD :b —B`_ÀÁÚ!âà Rà(dt+"Ä]¤0íž_ª0DiàÕEáM¤b,et0`…ø¯´3C´=CôAD&CB]ÅøŽ7"¤ F>¡üJÒ€‘¦*J¨ b¥F‹ðÚn¦¡Ô¡Ðì`&Sæë¤↡fBÕÔnŸGþ/`+ .åð“¢ýáîI&©kù(ä,²e !„ Á‚²µ!þÄ$Ò¼FÌ0Vã²øØAš¡ä®¡Â‚¡V…æaÒ!ìë£ê<²™ðd ”%Â-Áö¢áöª’ÓAjÔGòÝæ.[åýFµ**eüåhM&!TêHÔn«öØ‘Š+à€.T¡î%'Vnâü.Ðz3¬t¨Í¦oC€Qbqr?¤òÂj ,`&îˆ Y#CX!£Ü7ëôx‰X#î.H@§¨*…6´£ü:b×-*Z2¤Ò4/C††Èœ.Å|‡n!Of“‹;>Ó"a<«-â=$¶¥iHLIÚ#ã8J±^=È !ªuV³.` W³ª³%$KX"V!Ír()¸#K ¸PxdÔè`0%`0Eæý¢,^ƒž-âd@%ÄA¡ôsNÁòt¢*¢b•*OÜ!ò!¸"Á°Ò C:À2%‰ž` „¯T "MÓL0@BÊƢ‚˜!ðí2¸ƒ|NBX"*ba B-5ƒ îX%€* Ó­\#öð°@V€ ‘õH-íº# ¶‘¤ºH…üåÎ"¤¤F8&JD´CXa·8a÷ÕG„›H”D`ãJÚ¨h,EøŸ/DDÚ!ôit¦ áÈ*@CS*4¯eàŸ»E7BeD™@`rº°’P!ñ@”e¡Æ*@T`aÐ*@!Ef_†¡Ôßv¡öà÷ÀTPíª7À7€äwEWå@! ÿzhºT B_Ö¼T b$0 @_v¡ü×ááùv¯Ø\7¹{`à`>äþÆ•!Ö(ÜÁæBÄó>†B^".¸<êåb`8+:7ÁßTí»‚â@¢0$``*AÞ!ÞÁœ¡²¦áÊAæÌæà÷ */ ($aÝ4áèìø×J$¡òŠ.‰HÜUÐ"áòà€'vNãaöAð¡Êaî,@( *Á݈AøLWd¾tÌ¡ÎAÒáÜ0ºPªpà‚Üãz—ã XäD2‘¦"~(aêD.Ð` O!îà<à.`‚à"ÌV… ò(¯Ô7Èî¹òÞ<‚,`¡ÆÀ šó|ùdž%gƒ:ÄŽ:Ãè¾BF\"*àˆš}Â^‰¤ìJ¤EB‘¢î7‡®=cê„ò@ =$ÎÏ"8?‰ª*rÜcò3¢Gfˆpt«¶-BH7p$,&bKðd,£tO| ‚9Ƽ7@äüO@$ÔáêNü;&T™z¢âýáÜÀ @à.j.EId‚L#ƒ²'îÔ<’&ØÁ쫚ÕDRÈâ "8m'aêâNáØ• "D¶¾™ààD‹†`)'M 7Ó,!ì÷ÍžÙ ’Áú ¢&æáâíAâOÉ>”¦¢¡ø_Áö#ZÂ`Dˆ$ˆÅs.(Œd ¸åª €. ‹ ˜(!Õj;|+ÔncƒdB*âÄ-aò_ÆfMv_ªuu%üÿå«®€®Aýzaú¦*Aæ¢óP+)Ô˜ª. 3æLaAî>¡â¢à$GXö-÷PÕÍž8“Fµ d@&9H׊ƒW¸4¢ÖðFd?¸"­…ýNbEìÚ¡Þü*(*%”k4[%²WÂHTsaê=à#¬V9†.€•Kµ:H—˜Äu`‘¥Û·q†/{a؉®ŽÔuEüeüê` zªª*X!x£ÝަœMºmº™à5ðï‹Äý¤ ‚ˆaÕ?y€{t^ü׈ JrAà_rtPºJÆAêÆAìÛ  a€2¢¤¥ÀѨ*Zä:èÔP&dÖÄJ-ªaÒTnåôÝÁø‘¡ÉrWÌêFÄI61@ã„¡€‘¡ãÖÚ qDJ¡iÖF9 ,ŠÕÆ8¢‚ÖŠ.Mºtœ—Ea‚îb¦ä׫bÆ2«cêañI£Øê d¯+Q¦.(„#6Qü>¥ Å|æhaÀb¥Î+È6@"¢DGðÆ8JŽ¢à Û z¥u+â(ž›jr*zC€ æ¥ü@á–áìaê}Aò!ÖA|ôAÆAš@%–€&"áßÑ¡ò €@ øü€ïÇÛõúþÂ@@7ø ÿÏçÔEþýˆÅ`ô¿¤ð ~F =€áÒ\VD„^¯`"Y%‘€Ÿï©kð= éüÇÁGÍLƒ ð`ø€ŸÀà |ŸÏÀ0€ßÏééB¾À°à€€1` &Lù‡?Ÿw,ô ‚ °;ê~)2@Ýþ|W€`Þhê@OWàìþ@O°€ úó­$)û…¦ƒd°ðlƒLø€)àPÛ€@ÉìøwÝ‚@0@8 ß¡CáÐ÷ºžà`H%öòÃð ö½ |ò/yèVü €çáÔ|ŸGaò`( ‹-ÌS }žÇÑûë ˜ §˜€€x~*!èzª8 Çùòˆ­€;’1G€` ŸGÀ2ç`Ìëj°€‰üxMIÔÑ»ÀèÌÑÞÑ‚€€AÔH ê a0,‚Gáîm€¹Ành 8$äžnH"À¡î'À~Çè |,|žçà¿@ ­ø6Ÿáòx›‡âf‘ƒêñÎÁNcR{ ó/'™÷ €§°==€„Vï@šêz´°¶¾Ò±è¨I¼„›©8Ђ¡ Ѳg ® "dž}Û‡Hwœó5Š C 8ÀƒHs.§Qä~ p¥ô5:sÈà mФô<­ƒŸŠêx-3‰ØÒbçê»$)6IêºPËœ‘Øà¨++jQÕnÀål÷Àw♡핀 ³•_Çm¯d‚€ºp98"[†`vàÛÀ ¼« ý|{ƒ€Ëœ.—ºN9K°Œ^qº€#'à&  @]xÛ€  Ø¡ ìØG™ò׿’¼jâ€Â½¡.ÊNhšàN9¼ŸÆÑ‚~9òø#@"ÝËç¡õœ3O`.Øèø ¸šÑîjVŸX*Ÿ§«¼x-Nê sBgB¼»1öÃÀPÝ),üç´*{®Üqî±(M³¦ 9 À >ÙXû€|aà‰Çú€, €ÀÉÇàò.CÙ/ÑúX‹q~ãÌ{Žáî>Ǩ÷ -DÐ4@éu±ø(þdx¯ø$À‘„mË€C~>‡xö£Èz p‹\0À 8áü>G¨B °ª`$]W˜øø üÈü'zÁØ;ÇØò0m ñò4Ɖì0ÃÜð,8$#”b aæ€@ kåx8áøbŒ@û,dMåœÂIü.4„,±³lBˆQƒ“$n%“¢ ¨)@t ²FJ $…x”òÀ`€)š%`2  @ä8¹¹,?#Yáv…ü~™áðÌiB¥}ü¾±þX@#cé  ° )Q’¨ÔüX_åDš0 =Ja5 „£ ‹Ê󎘦hú9 f"ËòmF>‡‰°,ç<’šrŽã‰ò–Ãàz€Øà<'8€£\=MÐø(à,£=Aü=Øú£/¬è+4&>ŽãˆŒ{,·äOl±^eä}œ’THDfpÁrR¥þ &g/Bê.‘ó„Á€“®DU°ãÔ}¡æª,à ¿HŠô\A%º Þð>™C#üX ì(ÖµGz²ÀbW' ý€šž‹ê4¥°8TÆ>H÷¦õ+RÂfG¨õ´£É’0&\ddžƒ× qæ?R+wEœz²!E@s—ô»ËÖ6+€ÜdnS Ê8%FŒhÏŸ5@=Ö;ì€à €•ÿ z`t@.x î"áÜ[Yób€˜€‘â°J‰0#Sj§ˆX¤DOâY"Õ˜áú¡œr“°|hè€_ eî5¯B>\KÈÀÌ8|k6AKqG¥„"¦ÈoŒYd¨À ·ìÅŠ™êp{×7¢>ÇÀöv‘¬Ê‘  GJˆ³1J€´2áÇÔDñ ¢GîÀ|aäŸ ¹HžA‡±rÛç4Ò¯ô[ HûÈ6¥ßÓ¬à00 €(}QÒ?[GÉâµÉ Ç/22JQ5à»Ë¶=mpvŽ‘è9Ǩ XÀ„( h dn ;p¨e„v4Çß)„LèÎÕþf‹Ê¸:è|Óô`†ŠI %Nw€:À ( hHSÈ™K.E$’™¢„XOºHVc ŽÁ’Íû àW…Vã„O²{bi‰®¼Ì‘¦2‡‘ò&b잎9±ôWÌB­kqJGòófÈ}toÄ÷  uÈí(9²Åy$^X&\BCÿŸÓ¸JÐébS„Ol’qïH("d¾‘¢= é¤-RÝü{)š j¡ñ0P©éôˆ.¹Ûðt)S÷4%4¶ªÜ):t®!ç*˜ˆbXåQrRæÇ‘ð`P‘O#¥†‘Y-@+Ñ,-jÝÀßS‚H@"†à'§îŸ)qÂ41"¼y –"š$ªä/£ì>£Fœ Ú!ç%(0%£ ìN|é¤Cø¼c4;Áì!9ãídò0#çÉž4)Œ"è.!þÙŒ¶ïÌà7"â9"ôã\l0C  p–)ƒ™Žü â65't¢ÂÁeZ#Žül 4ít–@ 4èD!ê| , ~Èxÿ¢ÆRàE*?` Ã~xåZ"*ìI‡Â­« Џœ ,ÇcêHgä³p€/g ƒ ‡Ô4bL78!FÉ®AˆŠ çɰÊUÂïcB4 pãc /îjä®Jæ¢Ç"4”éô@æü\ʬ4ä:2ÉÚç ‚Xñƒ¨áÚáâ+ð–â-Ü¥’%©®.‚%JæìDáÒשÞŠèB`½ÂÄjpøËŠôâxì¶c@   i¤¤ê²$ìèŒø¢‚ÂÃ#˜9Ú!â0,†Ø©®Ç°à,!!àáîÈ4/!üEŽ•HD¹¢:qÂÌ æL$ làA$Ü5åf4'þO.~)aôÃ!òbž~ä/¢Ë iñâ‘iÔ)‡$£ÚyeüàÒXRd6bÆœð: Ø•C~,)¸,é$£"|BNöƒâ&1c‘DF`CNœž¤é¨ï\BcFoâ":–ÅÌ8¿d*?#,ŒØaúç¡þE°8’i¦šO6tèRà¡èÎ!ݨ@ 2KÀ@`.@X¬AÌ¢P4ʇ $ê%.É-P2}iì:‚†Çð¸Û#>+âQ ZÁH8À&@‚à"ÅÐ0$:3D4c>(âä""J’ëÆB†áÖÀ†@Þ`&ˆ.0"ö¢F!n$Â4ìábF3Cê9«‚>Â"¨¢ú4q$-4ä:9)®ì²°"é%I®("”éï ;ã4‚˜VÑXR'œBozHgÖ`Bþ4Ï3CòBnš¨i² £l|°97é¬#aðq̸£~w@•E*!ô..Aüƒø\Åÿ7ò®wCr,ž¢ˆ š6ÂN1Ó~/¢!F"ŽÙBR$âœ,‚ 7Å窆^k‚ìgÊEÃè, >¤^/3Ú+ìàòGt1OÈ: ßÈ2²Ú") ÎDq‡Ê† Ê|ªCB„,b’}ræ%3Ú9Sn ÄV(â04` €58àB5á¼üIÚx"J(Âö/À 2Ú{ô¹øw“;Ʀ` õ+^9„†9Aè3ì„â!ùB#¸:‹|çIƒHËõOõJçÖ)B }Kô%¢íKâŒEbFN­°¢…f9€`Ô#ä[LûCåþðêlvFà Cž‚>ñÂ<ž,§èV©Fõ*z#P|ƒæ(}§Ê9¢"^bÈ+Ʀ3âS?õŒè‘µU‡Áô>j¸rèÂ$i‰`BàBçÊCG.æëv¿"(."cI¢/ ƒÛåø%cì:6ùNtEI³# ‚ z!Ð8àoXŒ)àBt#vÓªDË•î1hŠ?-zöôr)ÃÚà ,…De%]!àìâè1C6ò%3j,ÏÌ,.lÉ#eåN"”!H>UïÇÒæ9¢Â Ë‚"v(öŽ.£`­ÐbÙˆ\L„‰-`¯-âH#¥–žä-ƒšëؼ¿kp$.ñjƒš%0?q´ñzœîPꢅÐü6 (D$Q(žÑ,BŒ¸)b>¥ÿj(b1Ò\¼ÐHN®bÒ^ñ‰!-âÈBbÖñã%Œ(>ƒrú À¸"ïË\ê" çHÀ ‡È8$Ä"öƧ^rðA@5„@¡Îa袴±†*ÇÖ¥Í2wOâÚðÔÆ!„^µÂˆ¹²hïšN¶l@€@Và.å"'¯9)ÁCž,%Ñ7š4ƒŠá‚áÜ€º Áü+Bå Žö}Îx(b—%"@É®çÉ"Ïô,ÂÖ]ÆÀ |´´$ð|­·«%éé#úIb)C˜$ì6tð¼ón Z(bÔ_ƒF"0šbT(Ïxœ>U¢ú9ÂX9‘´#ƒZ¶Œ(-è øX4L#4!¢4#‡t(¯D™ èübê9  Kp_ïvçhd:ÃN#N!3Í%è.#"XPòìU¢HË‚6ç.!‚’œü"†§N4ö}Aƒ>3ö5±Ä"#`'ÊŒyiÚ"h./d\$ÃípiF8i@9è%(d‡N$YjÈb)ƒ0`B8sÃRPó„ƒNTDhá€X äê2«Ž1Ü0c4-倛Є$ô.9¢,`Bò‰ÙTμ)ØÂÄ(•°ê9)T/Â#ª%$2#0Ã[‚¢!‰.2è|„dœˆr‰ã\6ËÃ’Ñ„YBè m¢eƒVЬìRÂ"£s6×4Â8,RÞ)çïgô)Cž(Ð|Ûùo JÛLÇØ§¢ÉsÞ$åBCî"ä¤@©&qÌ|§,Nt•@1‚„QöUí°#00€Ž€`BÚç¤eä1…iT%VÝcùj"9C Fâ*÷@q›$`"ˆ"£>9‘X™è@œAêò~ðø’êéj}v”kØ"¡É®cHb¨ïnƒe£Ÿ\dgDÅÿ¸l!GàO$2L·IÖ gfü}¢™O©X,‘žO"¿ ¤âAòAÿ¢6$ºª7âH•Ib•J(IÔ’4[bb7½Ã~öL€`t P@,)¸·iè%¤:%’7)À$Ê,B’‹aæ a„¡ö¤èá®u¸ŽÐ b9£Nc.9[êÊbŽ5´ßO£=Ï$å†5¬¬è6æyxQ•‚þ=ŽÆ$™€‘`CZS"„0ë qT!ë‚9¢Ì£Ò)DUOd¢T}cœ>Ú~’` Ñ€:‚;ÕZ/Bú4(|Œ/o4B[(y,"¢Tyt/«\ ¨bT·Wóy",šcH5°Â ðøóì®î3Ѧ·U²,IÚ¶"šž¹…K¼wÌ N>Bkø#×Ï "SVí†U—YÊ4‹š+Ç$…n#øã\>,cd+Í+Êzñótñ´Ä-º¶"í‚‚4â„+ê%µâE‡Hä .[¡†)³#B9BËN*F9œS‚þ-”Õ¹9+…å±ì¶% Þ bxk\`ú€çDo‰1 B"°›Qcs¡œü$éh€Hž¤è"ĺ‰éé£"P9"b‚ã±åþ9)ƒ‚”ðcE´çSDÀÃr=‘ )ÇèµÍ†#)SA$VEÅUöÎ"ÂÄ)ã>3]‡B Òƒ@ã¥ؾÚ%’§·xÂ/©¸ñûREGÞØª{¬q´1«‚ÝÍ‹‚Y€ ¨Ú“AŠäà– M |éíR¢3ÅÀ•ÈH€I´ã¨,"ãÞ§Ê!ðʦªN(áæ®Š(L™Ž(P*à+¦vYpbŒFêp,ăМ¤z£¤C¢¤÷Ef|)ãORBŒ‘C )…Z-èÓ¡…Ì}u9ÒšÙ#AbX-P˜Âþ-b¾Êâ9å\)\ü4cà6*H=bêÍócÇ|aÎ!¢Â[BZè2Þ%‡àBfVÍ0e.3ä2ëϱâŒ2ÎñCïÜ$ãÚ›>?VÚC‹‚#âˆrãf!Ä61Ü™r®EM¾äHAÃ4"ÊÚ)£J"kž/7©õÜO"¼½ˆ@]˜Æ2pzŠP@0eDkô]Aà —Ûíðú@`@CP ?àãùý À@wø þ/÷È03 Ša{ñôbјKýþC@/à„?@!GãÙ‚u0Áò¹C䑟À˜D`¿!¯Úü–NÇßÓçëì~H¯«3îT~¿ $< V~Áßöýø~ÅAð-iþû€7ø' ü=ò/w˜ öõdX¸Kâû‚€ @~¥æ|=gÖÐ@HÃ^ .ºô}½Ÿ—ð¨V®€GóßAmÀk<©õ¾}?ÕŽ–]ö|E† ñ[·Ÿ `øˆ‚@o—ÄòÀÂ\Ÿ¯WÅWf1NQø}°gÙú¨:@Žx‘¯/ú2‹!€2؇Â|§Ê Úì‰òÈhú´‰€Jáü¿€H;~#ì ˆ£éš­À±¾1ô7'Ü7€1ÄÂÊÇ R"}@§áúy&€ ô{€pàkО¨‰ü{ K®‹'Ú‹£çÚ#)äšÈqä»à+Lƒ­ééòŒÇÀC@ã!É"ªßŸ ò{žÀ;–è$ B*‘¢È¢p‚¼‡ìE-jñú‡Å Rí }g³¤Ì-‡Šä} ƒ€jÂðŸR.(·Ç»¾Ö¤èüž.~€'©ó+gÐÉ (#ëÙÜ~Ÿ“ 8‹¬Tòy°‡’~¡« <~~Vó>»ÛÇÔ6ï§ hrŸJÒëÚ³³úL§‡Â,«ÀZô£),Ї&§Ð xªÉ(ûŠé€@P"¹ðùŨ« y€GØ€jòª=gtXy€îéüÙ¡§áóç1sk¼@yžÓð{#iÂhKvˆ"èÇñõà([ !êyG¡èvÉÚÁ¶`Rú²éqþŽ~žðÂb€PÛ®œ,ìZ"zG‘è{@H *{¾ Ʋ+r‡bú~çó§²[×cÃŽ÷³ðÉô{Ìp‚iÆöv }~«´ËÿWºÛÝ1$g³icà,¿ž’¨ì% FŽ|m„X¡R+ÂK À "… øÇ#Œ0ÓL¢Ö :8“¶™úyÍ3¢ÒìmÐDIøTñÞµž<ˆ(À²puëG†œ) êö¤Ñø8G  €Aи1êù>@Gó¹æz¾ßÀþ)Å€@üŠG€Ð @àGà_@(XrŽC¡ÓÔ Ž?ßà üŠÑ@oð( Œ¾À'ËÍ|v°‚o°hüàp3ü%}G”¸¬f'E@ 'óþ£`k«Þìø‘„(Á@ ú€çÀ úýRí4À&â ?_Çûíô~¿/€Ûõó¡Ò‚3 À.d iO÷ëî™°åžÏ§»éø¢JÀwG÷:âò2×ó수@ ‹ÀÄô}€ŸðNgºÿ}>¯WŬ ]éÏp@ }}]d±à ù¶¿‹[⤀2‰©Ҥж ” 27gÈ|ŸiCê¬M¡ü䫲Œ“`ô— ’ø(­šŒÇÍ ü}D1ËÒ,°ÐìçC°ÛB±8ˆ´±4@ ý'ñø¿6¯Øȼ@)øûŸŒ`g¹ösžÇáʀࠂ'áú/À`$Š‚@´€‡è§>2¼V¼ŸðØ€ eÆÂiÚ~€°©â|€g’&¢€s,KÐ瀀€y€òyF€)â§¡ò¡!N{:ÈSö~@S:űnxê K¤€Iôz~‰€Gm¤§ø ¼Ô²:`E0Ÿ<ú¨Lz:üÔ‘^ÏVm H΃^¤ª1úØBnx}3'Üi=WH ]€ZÂ}ZK´J{°ÇÅNÏ:ÑÃ#€ ÑKÕí;¯@9î|ž˜X€ §,  ê±Aâ{`KJî®éC!á°Pqê{1‘à §Áö{¦GÀçðÑ(áúä"@ô’7h†™`Lß;®'¡ÿ-4ð£4|ŸÀJÎïÉÚ}'›–“Ÿ€Cº{í7©ñæ—„a„Π2¤•Ö ÊÄNOã–~³êŽ}Ð "ÓpL€P&n.fçÃó 6ÇÛA†@@€àUÔ£€ *Žô7©Þw'“ ß®¬Xì|ÐÂ+§áí ì{@ÑU ë%f‰ •¬ÀPu¨ «Æ†,ÉŠ ËÙÓ ’©mx{ 1ðì—ªÖ#0²çE¹¡þÓÀÇÛm965"…©k¢‡Ô`Ò­gÙò/.Áú˜^Èÿg=t=±D](è§€@‹ÆèòYDPþÀu"ž$Ãô}*Ãj>‘Å(`£GA ‰¯s`%i°‹WXüÀ ƒð, ð „•6p t#ɤôX3À.Y@'ó4M /Eœ“¦E‰"ÌHK1ì¬(Î}Èáõ% l£ŸbŽEIË>¥¬³êc‹Y¦ 0„&AöJM0ô4ƒØÕHb¹ç"­™‘”¦ þQ/ #a!Y†h§ÓDiÌq+, €w0ùÇ’«Ç ¥³ƒ"šÌ_9§Q®¬µåÌa B¥ Â#ÊÊjšÆ"k¢† FU!Ì,Ž?BÆœ‘FϤ4’¾?@RÕšm]'£Fpˉ2ÃìxAäçš06wú: ¨80‚¾Àƒ  $BÅ#@[d>ç,Ž–Xsç™V ,½s¬?™ÈûÙÿ¿AìŸÉ_4 :‡¸á0Ü+ãœ?¹ÅMQ r!³ÚYˆ˜õ1#Ôá›6I”@|Šx:DZ­CÝ{Ç·–˜ÂàyN;¦@…`<Ù‘KZäT}€²PÐQî%ŠG·cô}‡Âuø@â™<æaÇ|§EþïBŠõÁ£ÑázG @Qe¢6;ˆò!T1¥%“Š`$©T€,§ŒJÎɪ{¬$u.€¸-êVç4aŒ¡¯4à‰—“€IËLPÀ`ÑÞ1¨ ÔÃøšÓèý æ.#là’¡ÓºNŒ5Ô»}¢‹HÒ€%׌¼=‰QaùHÅн8SŠF1H‰Õ"ɤú‹Ãá(Œf ”wDý©¥Nå:‘ÜI ÊR##ÚsXíª1¡ -JQîèH‘Ÿ8¦€å‘\BJé‰PB™ãr/là4Aþz‘A­dÃèx›õ‚?!y`/#ñŒâ²?] WÎláx"#bS3£ÐÇÄdpH÷ÃÀÛIŒ(þTç4Š˜’Æu-$è„þ$²ð¡jRL‹ñÃC‡Úaa+Á®S¡÷Îyk1D ¦Ë lGÃ|ó¥þ>qà•Ç^Œ©†(®0%HÉ[’+ìMýwwèb A(…¸È$pÁI(‡ƒœU]±qB%¥B¡—AîŠ%=Æ> À6BXG©™ð&ÓòB—©‹2drJøãInyn ÍH„ áñä©«ö|騢újý«ÊuEDº¿ ÌX˜Í,#ìÙAØŒn/ CØñÍ&Œzøüð#(s‰‰v= Â}ÚÚgD>çV(£`&">šf~Ãî*Cæ;"J‹ƒZiHD9d^Ó£>jâøã‰Šä¦hGrlƒÊÔÀ"PAä!‹H_‚dÙ@!€€!àŠ2DBT-+F°J=ŤsÀS@!ðFHœj®CB¦6BCìêE„(âÄ8c"GþAOøp$^¢/'†NÃ)cH4:™ÌÚ,1¤FsÀÃÉà"ìY‚P6…ª.¬$w0îŒà:c¤"Æ”)‡²7çð¸ïgÔ6"HÂ|ÀÃJupæ?"æD¤Tƒ†>ëŒ)†„Pã”aîïIC´„…˜AJëEh"°¼XCBI„n(„D‘éÒ,‚ˆFcš3à (ãžÄ"€^Cò¤l#æ$„®9­îã.t$/EN®nîÎ¥¦rA@{a¸;jl¦ÂîJBL+ ÀJt9æÁÁè¤Zä:8::`J>%eÒVGþ¡ôí\€0À†/ÊO¨Ø1N4ÝBð~„V/BærPüaÜ`áŒf(.øà¹¦À0£Êþ„®8h\((]#âD¢„‘C†#N.¢46‚ÔD)2:I‚.Èïª"CÜ„‚N(‚ð¡ ê3$Ô/N„„:..dȯãHÄP\æ`0Â&b6Jc*:Å”6ë0Žî?HŽSB#¨ÜEg¨BÃÀYG,cAð¢¾Ig,Z¡ú­æõàLà$Š&2(í$ÚK-rÃËïÁð{ FG<2¢œY…bYNF4ÉúHç8˜3Ž¿ÉX€x`"§äNbhrø2ÍaÔäŒ>|åÒm@ @‚áìàeFµÆ”¨‚M.&ÐÁöœã G$Dª %’ä T((¡èOâ¥(/.B` `êCnáð%³©÷Bg8èC*Ò÷ȱ¢b Bè-)`{*ìG&%áú‚F(-e¤)âNë¢Q) >4ÓÞ"xaÖ#¡ß6Äç@f#ìO£ha @Ç®÷¤Â,+À2™ÁÒ`FÆ %)ÔâÜE°j§‡Ãáì,ªB $5Aì¡ü¡à(…F *'à4.!Îu!ÚË#šRo(f0JX¡æƒfw Y b$Mbð1"4ÄJŽ-¦$ B8$4…„ãLsІçŽj I € =æ¸a#Š0§†V«C*´b@‡r¯+út(HŸ!òY€&V0Nάr $P ¦W‡$Œ&•‡ "¢ÊÁ(JGèd”!•l.hÚ¥ì¢ë 2’Ød –<šçÕD²!K‚$£,2¦dMS46 `(‡$7cÀŒN™ {´¢B‚*u…êD¢.~Ëœk€w&€c@$)Ì&w"ÁÚÁì/^cÚñÒÎtþÁÜ‹‚.â`"âXôž¡lÍÂ,ÄELgd:FÑ}@RD¢2#¨3Â@ŒX€6F¬‡Œ=Î.4$×*Äähâ–:H8¨aî„AÔ` ™‚À3œmT´1ÂJÃåb.#žŠçlÓãô9e8èH›…Ò"¤:× FÌF $bBŠ¢˜3"z}Bü9ã¦>¢>Å–1FŒ4¢,Ãä*R¥béûlã4áæ4§(VdtBbcqH¯&VNÎâ4L>72–õNç>²ô.ÆÈ$®ú´2|{Â&õH‹È\’Âaâ%Ô>¬LÜÂR|áâ@Áêéþ€Eãòo„Œ0äh].ÝE%<¥EÈr4Rƒ‚Ž>'2xdX ‚bÖWJìAÄúãbYŠì'ã:Hä E¹dd¥êsCxæ®#Ä(9LšUcK@Æ4€@k†ÌEâô;g´}Kwfb^'çB)‰>>íÀÒþ/#Ü“aðâöEŠ‚@1hD4´†bŠê~RŒçP@še©X~ä+xã¤.fìk£î0:ÐÄ{ ¤&çƒ|-,ªp‚$ãtž±xING‡¨ê0ë²(À$éæ48c@Ë$SâzAö¤À„P'›Š7Â@Œ7d ¸"Ó›IÄY‡,§®ŒåO[j|o‚¡'8§Þ¦¬..4X¶"§Ðu£~G#6Õa½áè7ä¼`&õàtI™ <ãÀ»wrTáâ*B v*en£j2+šv%3è8*D”?"Ž$–/§‘n\ƒ÷„÷[8ñH=×â0â8a«â)Äâbê.«(¡ã@æ©p#gI7£j#&ì2¦Ža£B”"I¾'DŠäDhèMdŽ&BBlâ)s¶7£=-³]ümbà úH²aßÁÒ@F¼¯Û»É™;a³Z¾"ãb"¨H¡û'"3ÒYò(HÅEÇÔ Väþ?BøJã‘?`0 `.À@"æ¤6.d;&lI÷Ë–#Ž¡ä€áˆ2ÄÜÁòíH’"ÄNÄúºk2"´^HèÎICN¼Å– ' pƒ(þ¿ÊêjŽÇh€{À6'áƒzcEôÙ]=LkðbŸòßVtBVGhX÷mãIÒàïM´ô"‚æÂf¸@ÄB 7øÿpp(ôÿ¾ßð;ô?÷ø4x€OW›ùòõ}½ÀÀ@8aÀ€éðþ~¾_À0(s;~°0ƒ€à'´Yî ‚À 3ìÿ}߯çóþ\~Àºsùìü®(Hôü>ßOéØŸ¯h,Ñø­€@Ò(|€mòü~_€ À ô|?A/·óÜþ}AÀÀèýÑétÏ—íN~Æ@P h˜ç`þö­»^ CÍøª†B@4&ýx¿Ÿ€©xDC~>ž¯ûsøh?_‰3çh€w˜‡õ¢ÓÂÞ @C惣z€À—€¶Ø ýž-yÚ~¤èqð«gËJ{hYò•€§»$}çè­ R €ðáê|Éö}€gÜ*È€ üƒŸ€J2Gùü¿1 )ö#'Áôz î¸GÙìD2Š< qöŸà1̖# L¤z/GÀÛªÈ ô *X„>JÊ)'€K„„|Á)ƒ$– b'É🠸 € Aø™ S$¬`z´G»ÕéꇚXÁÀyõ€§ê¤è-'ãgÁ‡ôDÇ` ~3‰ú1n¬Å#1ˉQgÄÜÑ Zˆ¡® @*`ÈGéôu€gºB«žïyÙ§¢c ,JÏÀ4>Çiœ;)¢à²“aÞØgÀIË„œ¸Õɘº>à\&x€G‰èЀtj¢Ã,ë ŠUgøƒ:v4§“"Iï{€4ì¡l'ŒÙö ë&¤Â Ñ@ ô~ŸèK ÃàÇ5ñjêÅ€‹ôz¶­¶25œ1hlØybçéêà`»j ¬ßǶP{+”¼5VlŸ ,Û ­â`¬ d,Ñéü¢çÓ4}±€nJ乨Äz™Ÿ@%’|ž‰òtŸ *î©- '¹èi‡ê€þ@ŸÀ þÿAàPÐ þŒ"/ð,8 Ð(ÿï×à%øé†‰Áa‘<2u>_0@rQ}¿Ï×óü©‡àúx±B.†84 AXz¿gØÅc¯÷Ü2zü¿QÊP žÓ·ûäþ²Áp( ýÀ7ø ñƒ¶ñÇãíðû}=¥ 80 ÿ|Pí·Ôûg¯Á€§è'yÊÞò»5òØ‚¢À˜³î-C„?8P +r}P_0ûXFCb@-n¢}ß/°LíëŸz¿± Éù…óÉ@@p?G–þ}C° /•ûû€é@€FÚê!)P Cá¾jâŸGÊ|‡Éú±®@ ‹!úzÇáì¢Èø Ÿ‡¸ ¬èêÎý/àL4±­ˆæÇ-€ˆ`w±èCŒiø½ˆ3§ë:Î~ŸNsî‚!+ê:Ç€€SŠ’'ªtÙŸ !ÝGÁò 'Ø%Ò¨–1Òhù‚ ;Ö~‡}P£ç¨yàúâ€ Ž¹Ÿ§ëSyøÑ@"QGîÂzÇøê` ¾²àö}€‘4žË)ü|€ÌýF¢ ®Á`ZÒÎ Dò#GQú{ê‘¡)äBùô;­óB~à( ó)öyÄçIäŒÇøB€ò±ù.¬1riò€'ØŸIô°0mÂ0À$ê+ôŽ`Aú‘Æç¼€á§ÙûQ`Ø$Ì*ãIG -A/çÑüãà¼Nñëî|'¯š ÇÕ (1<ƒ’iÞûçÃ’žøÐòÀð‡¥ù榶'ó?<Ÿî°€@Ið‡€3{@)ðàQöWRAþÏÌвž C,a'ˆ|žpÏ®Û4У€à`0 V¬N¸±‡Þ zœ’!Æ´¨¾ˆ.vb“´úð‚'ÉìsUT†Ý=’Bˆ…¨pë…1ú&ž˜~§ªXzÞ`3Š“]¸ì³ôB(Oø0S*5‡èC‰K¶È ©§Q¦0¢ôì:X(fÀ(ÞàHÇÐô ƒ“ bß‘ ¤H†c iHÓ!!Å)¢p~ˆAÖ(xu0>€ 5 dŽèƒŠ ÿ@ˆè›0_š¹NCè¡:à1 ê€H~«`]QÅ+°¶b0CN)õ(FЃEYвVCÙþ½þ[ ™f‰¼Š äNE˜>mQY:1ø<ÔHõ(äu ÑöJr ;°s¢übÿj (À?Ò›IéBê´$D^98Ê¡îôK -ª?4š øÿ(]!‘sŠJ€ #Èûe$î Ôkc- ©úÑå(ãü{¬„$>’­äš",¢šOÓC0— Q“YmÌ—,¨<|ˆm(1ýY–l‡ÉZ@}¨bPH2"9œ¬"þZ‘—zµ´Ó…‡ì€Bï郞=ÐÑŠ8f…çÊ£ú=¥Dž<†U!ÒÿGY—$ƒñ¦—¶®ÅÉhfy 20eG¡rP`"tÙˆ !Àf¬B@~†ê”‹3|ÐÇ ÿ¦†B5ZJK`Ìá¼t†xH§nê+"Z}]ñç#‰Ùwª´ÛOè¦}žè[É@ ‡ñ´ûµ*„þØQ)ãÔyqê= CjFXµ !Xϸ >ãÕñ¬·ÅÈ„Ë.‰Ý<bâ£N1e3Ì)ý€5æeÝDY;ÒvQÎHšKìŽñú=Gzã)CÄ»R–4¼@Dr‰D¡) v[Çay­´ >‡Âµ0à,¼3°N\D(Gˆ¾ Ê™P„1°8¿c?D .@¨@‰–‡ÀA³dù.äî”k)޵|;Y ¤@(ð {;qAþdÀ ñãÈÏÜF¨`Qª,ÃÄø1ü=’AñfÃä{áQð=Óà N@8y€<Ré}–ÃØ{´ù/\:ŽI}`G:¯¹`ˆ‰à–¦*FŸa¼|Åû—ž qbRÍRÝc¶ÐU‘¸É&ñ:³aæ€ÀCO,2|}u¢J-µ=¯6›Ð:ô³?ÐSNâ£ÃVë 6¤˜ˆÂ°ar£Z£¶ŽM$‘ƒæÁÈihE0±xÖZ ŽD9Q—÷´”PÔ¯0oŒ¡—„`Ή 5$©ô”IGaM" â1ÞCÇ•l\¿Òâ Èyfxàù¶â’ ÊñÀ!qMCX)<„‡ÊCE–E¿3¬£’ù7ª@‘5vßIØ9ÉYS,Î1¸‰ÄGíŽDeŽƒ~ù4ãÇ8db 3 ˆÏ`ÆÌ¹—Z)vd>”È6ÜOH‰¸8ÄT“¨b>‡ŒÄDš*µŸ’…pßéa8Ä çÇãœä¾ ‰6?ð ó˜JËC Œ(2‹Û2œáðâÇÅgH†à*²æeÎɇIôÖ’„òšKD¶Ý1 ÃO´ †1§Ä´¿ ÏÛ:iÅ)¤.zÇžz~e4x’ÆcmL9&>ÙÛ0nØQ”hþcýšlÊJ©+„Tw HÁ !чPêd˜—Ç–ß1k°«À§ÀëÃÚ¢€´T,>ð¡–,l´Áü;‡¸ŸoD!#°>˜Ö zfs‹ìh3À‚ªñêÿNÀÃS?”…ÜÆœ™aöcʤ€h(:JÅd@ÁÞÊÇCœ)äh㨠H²"ªúDæˆ(( ` Q¤8/Ò%¢ØDgÐP¡úÃ¥J(àI°~äîÂP9bQâeEaê3C°-#¤¦H¦¥”@ aÊeÂrB8) .!Ã$T¡æ¡ÒÖ&ÄÏ@`(ÄlÁâÊ+v$JÁô_Å$4ã¸8d2U°/¼¢gj`â¼(çúFâÊf”¦¼)Aøeh"d·`> ¿ì(Ø '%x>8H¦(%ü#BÐ(ËÊDìJFÜ(B±²!fBVH‡UAþP ®Ø_aò©ˆBGÔ/âN#¢?@_à& ÕáÞYC¢uHâÆÀ Q¦’Díj@cè9l@Dé1Ʀ•Ü7LAÃ’W&èaøÁÖ€¥¯šb­@aö¡Ö!(4'­+"P}¢!‚x4  †.¾äF`‘ú"Ô@8 à6 ¢À"ì*4Ñð(Ê>„7ÄlbâhÁâà:áŒG~*ïd$âj‹bÞ 9hº_(ˆC£˜"# Ц ‚Nhçl#1h:âåî îMf.~8!i.Ä ]Œl/fØ>æ.Ec‡BzuCÊBâ(£îßåŽNP*ÞÂ01BP:ƒâ8B®"â¬f‚AÊf|gŽíú1B"Dâ.é©Üihèž»(¶¨"._¥l$%®($´ÿCú@ÅTPÉtcR`¦`줘-"îa€vÇ¢(Ʀ‚Õþ"‚NN¬ãà#I*â*¦C¨+ªDAÉ>7ÔBÂ.<‚2Ìâ8jo—ã)¨ä(ã$uF,©£Š9h~{NÎänE„BTâmÈv!aìqaòz"šÂR~c&ÚmȬ!¼W#ÄŠaîoBÆç‹bð‰ÒJK²bM´:ˆþŠbZRž@¢ö††Â„ýAì9)B ¥PUf@çnú_ãîØó¢]±ØzAì?¬0|"’:+–“Ö7‚,Pd¢4"èt? Aüc3°‰~öTXŠd÷F,¥Š)@"#â4çl@èf¶7àå$I¢|!‚*å*DhæüEZ:%pæAÑ`.ú@fÐ8ervÁøÁ…Q$Ê ÂÂûbùH bL¥X($LvÂP.ÆkÇÆ­@%”#’oX~ ÛAøÃæ.ÅÎSüAäjè?R=d/£aö./҉ʌ0>N†‚;„˜§ªD,ÂViÈÿ8RC!ä"Ê]‚@Äò‚#¨>pÆÌç´Uý% bcaðZ¡ø¤˜Óþ(Ubu¥êã$-) ""ÀNâÎ%dJ›„ž1xóÆj ,fgúp3¤²ðþ]Ê郄˜£ “€šÇú–!øJ¥ä%âàçà<…þý%ÎmDN3UÔ1ª,M¦~.†Û©Â4Uh0.ÅÚC…~.s¨#ô¶¡ànO–¨¦ ú!œh. qâ'“uBzVB& ‚!bzöÃéD´Y ¦„×TÁôþÀ¢àl €@AÎKH2$âÌ'‚|ÂÊ„1\Uê–áè <„Ät•Rä$â”§§ŽTee(uÄ,)…/îš>bÌÛ‚Fd $íä`âI†,ƒh.êãê%2l0b6”é"Š'Ž9Æ R0Ë'l`ñF"å$%bPTb A¥Ø/ô:T‚ Qʬ?Jó…BBäC¢0vQ¨¦EÆ9RÖ*1ªj!"ƒT!ü5tJ=’‚²ÂcÚ8È~K¬h<£„=§*‚‡%‰">ä#êkY¦F4äè!âL<ã?*J¯â-¤; ¢(âXnâºOpŒþ<#÷èä+Àae2£êNâ {CÈTD0h¤ aÎæ#BÊ/väþà Œ…bÂçlNKè|. "öCGXHgÐaBVÒì4% óDn߉àZDn™Š¦êÏ%cA_cà]¾âäD:|q:Ä8T‘ çbwQb0JÂØ1qŒ’5®Ø:â"®ð‚âx³8I \cî9l€ŽC8YNîä@wåè"4˜Öé\B yã&9*DD¥B ¬§çô!./ëÿTBàºÅ~¤òC¬ˆÿ°w„J@‹²Rk@$ÉÐH#<¿/ž] AþoJäKíLŦ2¦þàû³¢~™}¢?Ià`•Ø!áàG£/Ä.x@7¬R’T¬Ø _É@ƒV/çTdD¢¡ H+ÒpD#æÐðŒ‚é†l¹mJ0ËbC0bî2À@‚ãqÑ‚æ=”n#å|”hBQ¹‰)UfìÁâÆƒ4 < ÀBkT–"*0eFQƒŒÀL6t$2"Xc´¥ˆþNÑZQ†Àô„Ö"/ú,ì³fh"ÅvÒl6GŽf+þâIïñi!ÁúXãb"ŠBH@ÁÔ¡è4뺃E z¢4‘æ ò*"b Föj$giCê!dHm  8 @à €&† +Ç2!âN“GÐÖd˜˜¥×Z”Aâ@B¯1nh‚þ8· Uå)"Ì]–hŠgÔV[Þâávwlé©é‰NPxñë‚b‚Š£ÖËÐ>!yÚï£Ù:¨Cô¹ÆŒŠ#)bI²U²CãxA‚ƒÃ¢|` 9j™ef%‚aâ;d4~À<㛥R€JÐ ’bø@h€P´Æ¸é7¢Ò0à3CcBE%cŒI î"]¥A§T9Â1((7#8p%'‘3.æ’tÔ‡æ$/’Þ%d (Bz7Åôð‚…¸ƒ1¦ÆÉ„n®é*D2D%Z$ºD"HŽnΕC AÛ<Å”4Ù×6‚B˜ïZ#âw£ï~¢Áœƒ|^,9 .]ä¾Y2çIbPAéOBO¢VŠbÒ?¸™‰ÌÀEÚi ¾ô¹†À ªdb'o’Áàáòcî(‡´_ä 3± [f`aèBìSX cdÖÛWÖ`†®3áÞ }fö‚†[ääì4å<¤0V4ý`4”\‚D,žÂ£Ä2L4/çZH(â"0¦~ZBãn"çu½2, ¡¢à`óÆ>âæýãÆl‚÷´O-|¬í~A‚æ>Øí’A±†2Äù gì”&§^¦®¤åEŽØBB†~c 0áì(¡ëB@BRg¯Ô1ŽÎ"ÕLMè¦D"{*Ή¤ C£Œ`â>À%ZPöD†Ó‘db,:C¤!-øÞ³±ÃFäè\tBNƒÊÞb‚vÆÜá'ö¡È2áÅäÄr)ÀCF$xðy‰È6^­Ë@Boúäé­$(¦E…£Ô'T#þ>ñ†Aü`šp DAÚЃ-›»²žðÃ00ÄßC2@<” Üþ ` $CÚÝP)†1)IÝf.>¨¦!Âü%ŽgÑ)«ÿrÜ»%§áj¢)®{‡èî¬é£œa#¨8iRc,CHþä jb‹XSEdþåV%‰6FãØ!RQ±F/¦^4 D-¹e¾D< ™ò]¢Š(Åe)‚ j„PÛÇ"ø.]hCD›"£Nxã V«²<3££ŠŸR   ÿÀ@Ëðú àûOð‚b‘wãýý€À0#ú ¾ßçôÄ„  ùú÷€Ÿ@'ãò*ø|€_·Üû._À@;ýôü>àÇÛè ý}ƒ GÅ…îý‡€b/°ö)€`PQø}*@W|Ÿ¯g˜ '#øGí úþë À@ïj|D£ ˆÈ9ú¡^óÀ %‹u`e ô³ogèí?ö¶`p ‚§  úõx€€0ýÿh}@ ªH÷Vúæ3e‰F¯ʆÂr> ‡ËúOxÞ ¨ò¾ù›8H ‰çÙú@Iø©Iæ'²0û¡gÙòÈ 䄞 +îȲt“€ C»ŸÇÑò«N“€  ;:ÿ6ëcÖ~,ÇòHž:à@Ô% 쓵¬Ñì|È[B»+À8 €ˆ —ž§›(xiÞî%Äj X"™öxħzÆÀ/Àx 0/ <Ÿ­œÒz@Ç›Ð'€3~ P̧¡æ|Ÿ@CˆË †3@P©ö{Î £ #Ö|²çãÞŽYú娑ë ŸêÓ–û¢É+ý €à0E ¶à"¹€ E¢.áþ&,æÉ¢(R¸ µ °¶- ñø"ìÓn‹Ø(œz·À™¤ŠYþ§Ìóc0ŸǸ+0z'û<¹`#«0ZÍSàðÐà"&M»ï‡KèÊÏŸNÉô}èIá/‚`‡¡Ó™þ¦ÃÕ]c9kRyƒâ™ù…«¸²õø ŸZŒt`À•ji*u"ûB€€€ @ÿÁŸð° ?ßÏÈö AÀ±8 „Ѹ°ù>@ á8<7'Â.Ç“è û¿#oð4.(¿ŸOgÛñîý|‚Ÿ€ +ÑŽy±Â`P`4û ƒðP,öz¼žO·œ<·Øù'ßà@0 þŒ‚@ÕÚ ˆàX0ð|¿€OÀú%½Åá  ö)?¢à0.4?_³|ú¿ï@Ðýç_ÀmDâ39^€@  ô¾fuú¨;àH^ `øׂŸPnœ+Œ|À€pÝH ñìH,ø|¿í‰åG9Ѐ | &ú¤>¶q üèÀJÚz2ŽÊ1ËC\ÔŸGÙú{²H¢íÚ`@èH‘ŸÙò{Áùü¯g‰ø}‡éöˆ¹#{¸ÉúÙŸêêŸËK|¡çàz€‡³4|. K~gÒ(ÍAÓç¨@ ¼G°s:£À‡½3~¨ ˜žî\V|€D`ÂÀÀ.çà|À+ŒýAÌsb«l }ÊÈ*€Ç4Àx¶s¬Ø5@!+$ǹê'àÇ'ÊÞB>Å1äÔž€HtQü¢³(*äÆ ”ð{°ñð{»ÎËÆÝ€@,€…€oIüŸÀøåŸHXÀ™ìäÆÓaþ|€ëAò‘Ÿ‘±øzR‘ðMxžëŒL6nyõ1`S5^GÉówÅ`MT~K‘÷=••dÖø / 8´Â»8О¬u¦Ñ€->ÏoözÚoAð€ÇÐ.ÖX0À-…祎£€ öÆ1ê!?Ãé¼òÓŸàìÆÌNK˜€À6;äXÀkšµçØ c£:bŸùõI Y;‡Ú~¸òâÑ.ù%üz¯—»·äŽ4€ïK¤}ã§Ã”„fGñè…ÀËñ”N p y§Æþ|ÙMRq< Ék²>M2.í@ ‡“þzž.™ðéàcTG‰Ð|žQþ§è§šyFà%³•eÚqOK:¯-í tЫ«½JÌ qÜÊØÛ9 ›1¶ $}€Ñ¶¡zåVMž±qp{(/¡üÙgŠz¢ÇÏÀÐñG¡ðwJ@šzÀhRàF‘Â=¹ D‹µBAH)É"P>™¢þ`ˆÅQI¨Èùóc¬°˜N@HvVfÖYkÈôœrØ?é¾S(|ˆG¨Ä`p?”š›ˆ€ž£²_È!1*¼‰3@`€,Œ‹Cp V*`‹°sDËjO!ìô‚™¥b™Àh Ä>&*óz‹ØK=5$àà—sšgH{1JàŒ¬‘þtØ9t;Éåf‘µêDBfRÇø@:p䈳\ Q@C¦,ä›g0÷ïÙ]¥ã8$Ód:ir€£ŽeС)èÝ)zŠã ­X+,ˆœ¶zVÎÀFË…öqðFËá-¦ÐŽ€xr@97!cèí€aíOHíB ž!Ô4ÑY q1$Øyˆ˜ä@*ò€FvwÀ²×‘=: øaî·J1™ d퀒ðl!"鑜å‚ÙHx@&7€ä<ðù~‰J0°ÔÚ3=7¬}—±‘ö 8ôY¨4ÇEâ¶bÎk3‡ N—8&tÙù T€€§júÍɈCüy¾Áü=@kœ ‘Ü£G{#*h6$¤C@uàÆ1Áþ=Ž1HU³|€â Ó£9k.äÐ bŽcà!'Œ AøÞ‘É‹„ö…6t6„+,Ä2@Ž4Ÿ5O&'yiŠášëw›Ð"À‰ `yÂöa(r€-%-Ì¢p³KÂõŽ%µ2#z±GPøýƒØøMxˆ-¨À!;#p=‘€lˆP×ÒÊ?©¦g¤™ž¦ Û]UèØÓ¦Tîš1éJàRÔm.ª€1 E])ÂÜ*ÛžƒÔƒ€üY€m`yåäž °3LÉû¸?¥²2“q¯òÔ"8mL{•æl’0þW„ÙÄËЇ¼ZYsþíÄhíèt {¶§ŸÁ{=+Î3•êk‡àï@ŽÔ>Í9†“øq%'"iØÚ—¹-Ôð(]G€öƒÌ|8âYÝÑð($ðÀÊí´ÃÖìà*2… ;bë~¤åº€eÆ‚¤ 0bè¢:­ãýëÃâBãñË>Kâ;†¦ÖGcÕ'°  Ó°v#ìm-8…`ƒU‚„9@VÈÂFMi™Ž„¸€Ö›OVɨv<}Ž¡öB`!8AÚ=‘AEf:‘2)™NÎ!%!ä2AAQ §ñö‡ºf#Üœp AÕÁ¬EŹe¦C¿‹Ø f(qЬJb–9x'$I;4dägÈ¡=WE°ü{ôŠÀÞ%¨Å0tðž Hd $“¢ÌMX 92ÔÆÓ¶Ÿˆ$ d‡4תóÏfá FëÝC•ÂkˆÉm4&tº–™e±^'µ&­Ÿª`ÑG¬Ï‹t–· PNQv zU`°’2‘šÃbq%ðÑ*¡þHÛŒÖÄDÓ+vCPÓ= ‡Ð~ÛJ2’rá,è|º±Rz?è¢×"–Í¢ìZlåöe … âÍÌè™)xú/U탗³’•€Rª¬Ù4}êoËÂg8,Ï»AôvZÙC¬ÐãÁp Gí~ISñ©8Áè=“ÐûG/Ú›¨íáïÛP@MèÆü4¤6¦>š@Vÿ<,ÊwŽùw+OA‘ŽözYUÛÃÁ6áì†ÀjçîÒÚ/bG2é¡.pæ!BÛi‘¹80@„˜ ÝeZ!01 È™œ?ÜðÛjøÅ¢@°Í»6t‘JÛª+DŽìº˜@rtóµ Å…cšÕ’0àW„¸$ê(òB$oFN/H´­ã’`âÔëðß,0cÔg¤VlЏáeâ1c¶aìN%Šã¤FÏÚ|+xõfI›" ÝD¤Ià ÞYaØÃÀ(¬DP¾&\vƒf/Bx0 ²OIÄÒåp.#\,éü^ÎLdì -ª¾!çiÁúÖó §FI@þ%n®è®ÓŽÀSÆy,äö_E4ÎŒç@ ÆÈˆàU€€ÁòÚVå^?OI®Ô jâ©0ŠÚ{¢2hÃäïaä å>%ú@ ÜøAê,¤D̦hN(¾ Í` •aæaògæÈü(Å”1¤2¬¥j ¥–‚@!¥Ò¡ê–rh¡þb'@Vã+¯0~Áì?C\Pƒ0îªU£€Ž"‚n1¬QJ² ʸ0ìÁÊA쉸ˆ«vÓÆŠ &T®oí&Ñè­®îÜ/c3*D.Ââc Êȶ6ZÌ£ áø@œn `HÍ^I ¨$€BßGÒ2<Þ!òÁ–¡Þ 4ðà¥0‰‘d7êZ‡$„!"ø’‰¢} †ù¤â1c\"CF`C21ÂÖ'EV- ©žDnÏ|ô4èfe€Ž ì<1…^#dâûbOän1BÖ/~,ã|€‚ÞNȪCãê!%x£#^/ƒ>=Kd=…š"b7¥šQ¦HLâ!  Q@ñø½æª³/€ ¥hpƒLêã; "î¬#@5­¢0'Ù¢î9‚ÒIÃÔAñ „ÈÀfŽ€ ãh(¥š-òªG#`ûÈâÀúxE„6¥švŠ:6= !ô? 8#b6‰¸d"ïfT$ìÊ>M´€!ëhòBóHê7#\–Ï|.þ!'h.Å’ML)Ê æÀ(/.Ž!Ô!â|ê%ÈŒ\#Bj}ê(æzD‚çKéO8‹vƒ¶ãðƒðâ"%`ã’u˜-â"e”"Æœ€ëä­áîåp«Ðeú¡àÃè‚ì¢rþå΢E;ƒd„2kˆ$bã Ž ‡äk#–4sxŸIT$B}„;ÊÔŽÆ+FÌGBô"'Ž'2øòC@4C@WD&‹N°¸ VÚDV!nRY$ŒÀ.0,Àâ«%¦~†üA&zõ#(ÏN\ô¹'žÃT‚2‚,‚  `E3 FĈ§Â7"i*¼Cè|tt+l¢ÓC´c.°dbNh#äl’Ç‚"§   3ã6Ls#€Lãä ‚-Ä /")ƒ°<n ËÞ.!èÊè¡1®df¼`é Pjdäý¡Ú1¡â£ðš€@ /à}—âEeZZ²dZçtèg®f$ri³ÎIÁÞUáîtgèpêDhî\ãv7µ[ ^÷%&BÚ\"$$dò:v†cG‡ð9þî -¼LFëoˆ°þ~„˜'ƒ^#§’6‰0-ŠŠ(bâeúZâäLÓN¦Hñ*×øNFÈb% åe’=0D£~LBˆd#þôãÖ¦B'DÎ<ˆâ¤c\qHÂXæŠ4 !"qYãú;ɳ[™%IC°„$€7új©wÈq]#²;*:¬$4î îáîqsxLö"c°O„ìkÂ4bÆ+ƒÅõ™gb£F¦±Ò;h¸NÅŽý¶d·ëêBf˜¯aÿS@…Eg”5^ç0Öï¦P\å6ãìmLR„3ã|ã&HLª !òên´kÎêZã: è6E”Œ%v_è]:€…Z..³¨v<'Ô8Ëf1vvf",(#dA©Uä&!*Lär|0”ðáî5ãÅ/…ú1NZ0ƒBg-vø9¸Že‡-ü(¤È->jdn‚x49.$„(Ú­…Ž9°-&*Ž#Bò À4Èu©Ê°­äÄÁÞĶЂ×@c\}Åp[£2/O8`1ðè;Çtr$0÷ÃØ×Hâ0˜.ÉøŒ$Î"h™¢öYcì3Ô”Y"ähÏÚ˜Ï(‡FË™F‡#ð8ê(ƒD(³«f/Š@/0#é¡sx""¦Êî>FfF@þã¼!y”‡XóÉ®‹"!ãÁnÌ$Lé["9†d/dz2†z;p”4)Æ\˜Äy%<l쀑fƒñ|CÐ8éÜ.„eưl‹hñ#Ž[%äC”=.Äs‰²:ØÏ 25Š !ÜOC‡DòIã:¬¬€‰¬ †‚£.긳D-*y$ó0ñ´¢CäŸúQ±¿ ¼Îˆ NDì¬9¬´qå[“ƒF´êVf„®–h5Ô4cÔŸé¼H ÖçâÐ0òŸL†è-ÅpQx)ô£#b€ÓÊ%„ÇBRЉ fxsb¬Äcˆâ¶‚º'±Ì$®ù–½ÓZ– AÄ…gbÑ»F*/†&^‚¶NB AÄúHÌXåúÖ‘€hµêxXàG«ê;Æ,ˆè4Cš”Å讀›ä¼4æPXé06†z:ŒÌ¢Ú Â,8c¨p¥…[¨Å–l@‹f²UÄŠ"€âÂ&âP!ß?¤ØöIþ„HeF>X¡â'„f*°9;Ú4ÂÈ-ÂËO7¸6"Nd*’¢Þâ߬‡­ãrO$rk#@,ÅôxpÄðÊÞYh ;hbð¸:îá)<­‹ÅÄŠ²MˆËÜÝ'[ò€±@H¢ 0áÜ|q"ÞI«¦$ã8BnL‹–AŽ!Ú@B$47ú8°9D˃W««¯¶b†*1Â)pDÊê¦Ä>C:4¦d? hŠ"7®`/hg†™e“ò¯¨šÇhä›&…ÂŒ$…È „4U²În‡í+¦f3ú5<Ð wøøü?ßÏð@ ` åø>ÀÀP3ä~>ϧÃýê„@@ €ù‰>߯÷ëà}ϰ ìþˆ¿ÀÀðzýÀ 0X5üõŸà úý‚`@h>‚a/hCáú¿© 4Êp‚h/§àÇ€ 'à€^ï°+ùø €ÞtJp ‚ºAl”ð+þÒ½€aO§ôî€ Á‚ÀÀ'«áòû|½À Hî0œ?Ÿ§Ëõü ‚À|óùóO~¼p[cäÿ{E€pô¤¿@º©À, >Þ{7¯4¬Bÿ¾ø ŸÀ€@ý¿?€ü'‹Ôô}¾àï¾\Dm0 ~ŸG²~€èéö~ ôçÓ@S,Ûëþ½çãîÍÁgûîæ )ôŸhæ‰#@¤GÑòzÚp|€ë*ºó€­¸ íƒÜÒ>çÒª»¨‹»JŸ.h…@d0|ª‹ÙüÄçâ¬ö€ r"v%‡|¬$pÀ,aü}·‡âz³½Ê²|â¢'ê9®gÉä"‡»l| H{ŸàqöžŽYðÖ©O'EBµáóEsRÕ(9잟Gø‚Ô@9ôHL,ª¨°–ÎåCˆ”‹GàL¡A¹îz&à:ˆå¯)|Q@úˆ©§Ý{€@¨‚ hz°æ}êqÞ¡i¡B ª£(@ˆƒ€jE+& ;›B)öõ” -’±ö|Gáç('ø"Aî!êŠÙ7ëy»³@ vž 9㸨ÎͧL˜¬µók®‚°ëTà:üÔ"m!üyßQïž×ÂÜ…€Òœ~)ÖÁùl‡ðT'ü&|±é—žg‰ò=°ÑôæÁHHñ4AêPá礧Â7e,  \ë¢Óªº™-Çð Ã#'ø¢¦èÉðyœ§™æqmÒ|Éf¶€‘ªÓ € @ü€ï×ô  h8 †€À/Ð &ÀàhX ý}>Ïw#ø:UÊB ËµÞù>ßOWÛÞtû|€‡à `7Ëü |=ƒ(<€A¯€h$ú€d J5…ò>Àû]°þA¬‘ºtû”Zˆ F€ßð·ö´V@ˆCêõH€À ãùøý¾ïôh³íþ~@À`ø }ÜѰ÷¦ÐÜ!:XŽÕøû~àÀOø$Wºƒ?étà Ÿh#ñó'}_àgÐ pÒÑ_±È¤€W ðö½à˜Ü/yaÑd  ($ >¯GãÝⓌ€Çì ìH}5hj~#Gùô…'ð`H&²Œ£Ä0è’Ÿ)!öy±£&®àt z£GØìíZ#‘Ä,².KX )L²y&çùÞ°l@²ê,&¸‘Â$`` Æmüxgñê|­Ã"†@Hä ÛKX 8~Ÿ0™òÐ êÌÙðž®Ü Qúgð~¬¨Lpø¬)àá쀇ÊÔ}6àh‚ Hy'±è}`Z)'ˆn¼ ä°i@ PÇéî§MÌ ÊÑ™úÓ­1Áä~· LõiGºÐ|€MëH }@R‚zçÙê‘p€"2ègð 1ùÄÛiC~íŸÌAþ€uý_­‡ÌÃ:Ÿ×˜ ë"l*ÜBGñôâ à)ía'Ç€¤)@Iò­` Ÿ@€}C ¬¬", ¢µ ó„Ÿ*#Ì­H8Nžë¹ðø€çáø³Q’׬çÑò B:ížà$l€`Z”ïH4¦Éð}›™‰ˆ;Ó°«Y æ}€gÚŠ€ t€ lËÐ9 —ºÈ² N„¦À.( «'Ø‘®ø†}g»„­R:çaìž“©ì'þ €@X<„(IÜÑ–Äç:Tf&|5q“Vˆ²K ­î[p‰J;³,z­gÅ8 H%yž§·zF°cp~èGÛÐ@x±žç¹ñO gx~ z·€_Ÿg“œyŸ‡¢²€``Ü¡2j p jÔYü#ÜË·îD@J5Kìw­VZ˜Yzce aüǸoÜxޱÞ.Ô¼­ÕfxÑ/ ÀÖ‘¦˜œHZ³a%༑"àFߺsoå»´~ÔŽó!dX¿2Ä>r O.Ns,oÁƒ,2RSóŽxÖJaż©Ä I n@$†©fGI¥Q Ë£4QøgqÍ¡2Ò¡ RdH{¶s„ö ÅZ“ÁîÆÇˆSŒm š‚Õ±˜2˜’PõKw:E@–ÂóVé”ZÄp»¨Ó'+ØZ¿”í£x*eGÑ©•*¡)Ãd̰÷)ox}€|h‹ §:ñæ¯òÞ¯Ô"þV3€AâÜžsB0£øÜ  àZ¥ŸÂ,VK…€¶övY–.jôzЙ@¡‡ð 3|”¨ÊíJ%,IÚItI‹ƒ~. #ð$–Xì\­^ÕzŒ\ƒRÉx°ˆ#Ćå³#ŽFŽ”óŽð;GF€Óz–Þ+aìnúT‹p·¦.ŸŠÃ]ãð`†’X÷iþ¢‡$hÀ)>а}€â…SÇðò0jì~€rR¤×D†µvrM+›ÔbLŒé€å~=À`Nì‰4Ä'1@}‚Ä!öÆÔÈòÇ£Ðeá÷#eœË1`×ÐZ?'@ e¤>§‰b`îJÃ$ÎÉ ªüy´*;ˆ±Ruï•òÁZ PèL¢AÞJǕ׺àÐRF‰Y KËHŽ ;Ç älÊ#‚4Ȱæ”qèe“ü™D ´è¥Çàó%#ÜyAìýj° $ƒÍÞ`ýT¸ YîM?¨xnÎÀ?%xÓ”s¤´‘Â|¯&ç±ðE€l‡Àxª±è=Ç{Ëò0zÕ0€D~Pô È^cÐ}êüSŸWãåù*“òÚój,2+=“¹ÏSˆüÐ.bˆµ‘ zdE!ìH¨ÄN™“/Hè»ÊáæGnàôãÈ{ê’U™×_ ¨AÀ‡Hq½7„X§â ‹©u" ‹"É@ˆ@X\uÇÛŽ˜ ¤ ÐR) Ôøwã—ESј,椷üe=O€W}??Tê)¶"8À @()Aè%V] dâ6áâi@.` AØ¡àÁîÁð)d:„æò¥¸„î„ÀȆ6¤Ú¡Üƒ#̳êB!+XXE 5ÄpjB„­EþN$°:ívpC¨O`Íšg¥ÈŠ£®ôC#û!ø,9Aô¥Æv? b~!æBE&¼n Bª7%áêµÁî Ä€Á¡øl`báî)«¦–d~}Áò½¦&® Å`¹&˜_E„œdälb6Láúl^Aì?î#…fºãŒXfâ $dä!æ Šp>C§¬¬À)-š¢¬*bo -…~È6>&–2þL8L!ô0B8I£r3ÏdB˶áâÅÌ@«¶(#ÞJ!äY&Ôd$dBÀ€!FÆSÃ*J ’ëáÒ»ÁØÊüŽ#`"** Ž$0AÔ2¡Ü7.n@#¶®‚pVgviLúÁþK2C$Â0bz!‡h2ÆB£"Ä­Ì2cD4¢ !$€9Aþ—†”"#0bCwæ6³…8AòÜAÎB` (ð½]9CBÏàËã ØÄ,¢©‰OòçD"İðºðêûd,LÅU„]‡Ñ¦ó‚ò—"ž"&rÃÏ</ð>†î! òó>‹\"†B„‚8E F¡ä3*˜LtepŸ#¤NbÞODêKêÆà€ÀAüÍÄ êöÌþqàÂ:.(­4÷ª,'G®eLAæÅR+k: jÖ1K Œ=#F%DOƒN]ƒV,å¤? €Lh«ó‰«GC2!D ‚Ì6!C<7-Ì7¥¸VƒWaøCZ[B-éuo¬%#2SŽÖ"#„„¾'äÂ:C¦§Åú£(°V–¡øjÍ¢nüBÃøB!Bþ¥ƒ†4ôbgœ!%°Ù¦†:C†4Ðzw„2)D$”Pkç¼=bÃ#ZI/œNí¢û‚Žºáâ$ò"$šâ"Œ9ixO†D9ç"ÑJÆ \ &F>1b:DJm K¥Ú<)jLƘPÀJeªTc£1§(ïÀ jH=ê/æ¢`b`NäHSƒŽ[…ª8S¨ùkZ¨T‹ö ÁêÅÞ¡%<`Ó*Nä2_ò®tF¶§¨iDêûb”ú2TL2ÈëC"à“I¤,†¤·‡Ô2²[!íD`n§g¨)Õгb¤6”Ïp£"~‚Â3D ]aö3%%b‡& Š"Ö)xGÔ-&쥲ÓW®¡ð¡þ€¦p M)AÞœ$N¥Ú()‚B’7€9aÒö¡òáâ'@nú„ªLŽ×"áh® ’Þ7N9t65b4®ã&$´€.Dji.f2L4:D¤FiFcx7bÐ/c¼Q…82ƒŽ¢£i†N)ˆàö-£VDÉ<)ê¬cét1\:zÄ,:Rò!â8Z£.bcx—Éü(áÿq¬«à«h†áâ-!Þb@)o¢¢B˜@µB}I7T*H Å eÀL6 ×é5ÃäÄdã4A#ÌN‚ÀëÃì,åàÎ)w£.-zV÷\ éªD—l:bÈ-èòæ@?‚˜,M’·òÐ!Cˆ5cànÈ*%Ú%°çÄ:e–sd P„–"$þ¼êH‚d‰«£-‘‰r‹†é„ D-ƒ5Ysü­±è9v@$ s3¢vA&àr† {ê2DC—y¢:D‚À…`  ëöp¡êG8‡Ñ@€BLþ¤ô`A'6« °pi|OˆKÂâü`2À‡ TÞ†Úìæ¢~@¹¢ô)£2)“î5¤Mú'ÁܧaØA3¸Gíb,½§x)¤p(#.2V]‚bƒsÖ7aê÷ʃxöDO€cÀLæ6$­F˜d$ ›Rn3,rQ¾¥&?Oà—…²§Æá[g `f(,#Ö׃NDägJ¦†C$–Ft'>¼ã˜ƒx;bÅ!&Î4ðcÃèçÅ ÞDHó";r  ÌZ¦Bó°x’J-àJ4¥eªi @;aèÝ#v†àp"¤º×¤H=€aô“,¦–B|n#*,$æ4ª¬å\ ¸À%cž æàÀt°=Aø~?€Ü ð÷{ßï`/oi~½À@Íva[@ 88z¿O_<–ÓòÝ€@3Dʽàä}€øâ;'ڤʪ,»‚“²Çû®·«Œ€*¢€î~@Í;B% b¢Ê¹ýk3Ž“¯Éø}Ÿ@0 8{°IÑöz1Ç’Ì @|r¥ŸK›~%êrnÌ«1£d;²~=Áì”  )§qü|‹¾Á (ྀthÁ,‘úxGÛ+ŸºNÒGëv£«9è}Ÿç¬ð³`S,ú±ÇÜl|ªqü®¨`(€GÞžg½¦2çqâyç™Ú¾`*w4ó’$@9ü|žn Ù.ŸgÛô¨¥‹QîçÈ{ÇQôg¹Ú§Œ˜¸*Gð‚`H `NÜ Ø ×ÊB PžiÑói´ Iú£2(&y |²‘ýr|Øë"×t™ò}ÌÉ%¦-«µ5€ÀemBA*`+#j€Ç¡ô‹ºÉš2¦¤§ÁáCåGÂ^Ê‹8’p8»¶ ŽŸîxž÷ð|°IÛYE€GËH~Á˜@ t²~§˜]“ÄÐ}ÇÃ’{¯™ë‚|E@Zf©5åt}QX ë ôŸ%8«X“G±çPFØ¢§Ñâšî!,/©öϤsp €Çö§ê#òGq鎞 0à`Jv~¤È´®Ëº È‚¹±Ç‘Çáæ”ã Zß+€›… ¥  JÝ3*:€}èáêy9ÓŽ~.²ÊôªË©€>+«)#Û¤ìÙóìQÁØïG„Û,…c6Gáðmž  € P8ÿ‚B@$¯0ðþ}‚ `+ì €_€GÓ­ø&¥0EÌìx¿Ÿ/×ðþüO@€¤‡‚ Ñ„D/}.3‰Ðû ‚`Ù$¿¬/ð+ôûO€`0 øýe Pd< ½ Ôfö„=߯À@ø‘€IãõôÊhзëüþ¾°Ï¹üHƒ¬  3øü½ß/÷Ð÷ß1€éüŸ®@h]­þ¼@€p ûî Ô0x>ó®˜ú>ÀàFT‘~Eßï°™ÿpŸ>ç¯ùØ ñ+¼?° ø Ö>OÈD¤@Iú{0oè ±é)ú“Gëî,‹Ãlºh2ä}€Í"LŸÎ˦~ @+0”¥‡û¥,À<¨ËÎ~iúÖÎC€Å(`X ¶€|MYòÛGÊÐ}¨€ ¼@ ¶gÙò{£ÊÒIð„¬¡üÎ!²4qØÝ ÇÌzÍ! À'‡²‚¸¸ DDzž  ö{§à1ò{K kb@òÈ@*( ƒ«Yö|(háþ%m:tÇØ¤`HŸg|öxF 8G€9ðyS¡ð{ԙΕ€ úòÑì¸þ€Ï;I­gqìž§¡üw5|º€ dŒžçÒï¹î}Ÿ¨äc&ÇÈwTš÷nG €r îyW„\þ¹®;.³(éø}žSÑê}8·+H ;~Á÷4Ô¾€ J ŽÓíÑþ â8FàЂà`ZGÚFËo³ ~1õìȧ 1á5/+2Þ6 `í‚38ðžKáéÍP=W2 [š«’⃠GÀŸÇ‰Ü|g‰ìŽÇQX}ŸLྞ`ìzŸ­úÅgÑø·ÁgüX€‹Ø0Çz y¯Àʬ«d2géúé'L˦}ÀD”€³¤Á·Ç» 6ÈÂÌ¡³èx ;6aøroGýúÂpŽ( ž?ØoîG¹ë”°ÀGÚ ¨}gûKж ̰‡È ŸL¿ JçÅ(|žkØÐ«jºR1Öºà@æ‹ÌõJ ¹ù× ÜádJQ3Õ„¬Q‚*ÈøŽƒ“Và³\?ǘøÐ}‘ÒˆÛùäpÅ ×RðK‡6ÃìÔ8Aôe(êHcœxf(p¯(€qè<Ƹî<Œ4ƒ’BˆY7Çmä"´¥#À´ìd (ƒìx°.9 À” ÁÜì7D =LAæeO!º5d醀±þYÀƒðzaøcxi*Lû` ÐpzI €BÄÇÛ·r&üœbf@ %q ÂÙTô¡G`,Ò)u°<¨eãô€P A¨”$ä·9Ô2‡H+5³ÕÔ*Ñ쀤@Õ¹Rd *$ø€I>QHÔ3~jÌqåQDœÒ6Е–Šö5„•Çbî=G™ ³òžYBÁ‘Y\DîS6fdÚ&#ÔE)¨ 2-UàH@0 6C¬z‘Û2BR,£Ü,”‹1R˜õã‰Â&p‹abBª´Ü 9‰W œCƒÝËAðîNikŸê•ŸaøX1Ž8êEGÍåtØLç‹'¤aìNÒ£p´34¢C îÈÕt=Œ^°•&GOÑ^0Òm¼QúiH3 Žó|“ XÀÀ8P @é†Z@8ÓàÈ £ÜÈž¦Üì'r;lœŽ~Š˜h÷"CÈÕæŽÞ)b!ˆùBÈ;.ÀÀ` M° p ‡èôãÐxŽÁàZ[¼„e”~Äø;Ø0óÀ@:7vîGɳ¥¦àƒÞKõ\d %â’¢ˆ¯Pµóá–¦+s§0Ó¶PÏ*W-ú…°©g ˆÁ>Éi2o€ÅúKtÌ9 Ó€ÒÎHpó`êI‘±ìØÞU \€²œs¥ÇØê3%]EÅ`†ºóUE€·s‡Ðñ1óußàˆ‰¨lçs¦€;%vmêÆË :ätx¬pɈ¤e²{æv F”%Vè*2¢Ö IViV(¢R & À*!昃fëNO¤<Ð6#§E‚6:d¾:)V/¤@é Ki®‡K.0¤~%$¦£lê¢ÄäT@& À\`¸#²@&'Ã5ÅAe¸B…n„t1Ht¦ä”÷†ÀfD@­ ªôòéZàDÞpâÜ=DÊW%¤@$cH$z¦°‚pAÒ=@Å Iê€&6ÁÜ<¡Ü„§>$$Š/£f·ä0-ÂØ@X`*€*@"bÁžaÎàÍv/JG¤È'B‚mÊÎílLƒl"ép¦¢ö?Ú"&BB„(âeT;஄0äÞx¤(2"4ld|G°8ÅzyL.&DCÏ`:dXÉpÀ‚‹0¬ã„ë'^c²ZGDÉ('ðº¤"?tæÜ¤`y  …$¤32‰&9¢/ÜjAê—I)ÜC+²;búä2(™‚ÀÉaï‹.,%¢#=`pBŠO…ÜAÅ shBŠ0Kã|JC"@ÃphBTDE<ÐbE… !ä;:$¬JLpÿâB=Ò¦sDz¼%¸å”lèFnÀ ;pF±…HÄ)ÜÅdžKhÁôåÃlž0yéâmå”:zqÇîºBÎË‚Ê42Õ¢"å>,‘Z1ÆŒAbvÍ‚‹Lƒjqƒu8ÀŠÜôìÆéiVI£ § Mƒ~F®~NRJ‚âË'ÕIÅ8OBÊ9)dxéV,IV^³À8bL"ØL¢úuäö½ò(›#,ú&iâÇ%ÒjØ£ Mâ !GÄÞidà(£®  d‡§ b"6¡ê¡ú`ªà| FÈ'¢ÃãÆGÂ|B‰¶ bAþ HAî@PÒáÊÁpaâÀ2ã8Ç8g!Jç ‘5Ú%ƒÿƒòRâN1gÚË%¸I$IÎ! ঃ’fCP348Î@'Ç "‚Uk~;"ÎuãB‰(؃…<\HÂËR‚ C"TmÉIŠQE IBÐ,C88‰+ÂämæBFb:èKäÂŽ§60l*€IEœ"wú-1C)¾$‘,d+Ü@¤èSÂÖFþ7øÕ¦vpЫêb›+06ì€bÖ‡r£¢‚Q¦…ù(!ør J–(‚QDL-$øk…¡ w©†BF%º(¬Þ©Ì@{t;h 6ÔDC p1Jú;ä,2áü_£^vƒØUK>5ƒ4,/>ÊÁ6åàãn•pp"ä'¯’8Äv.ê`OKN[¡æF*À,Á¶žÖÁôA¤!dL èJCÈ6i(â!ü˜8ÆäC’|(£›2ÂR‚¢C"¢B@`(¥Ôt¡Ð,#d(„`õˆÆdö@‹P¯oDDk5ÃådˆxJLÁâàŽtr(›æþH¥º:h.9£Ú>ùÝ(:+¢‚-#\ šåjBˆ@ëºHþ(ÝB$¢z/wˆ¦ Ιà!aä‹.˜Ç^=„D=‚2¤Â!ƒ®O)(9 (U¥¢Oî/™!èÔî¦,+KiWDH*0Ї´Qtïgp¤\lÅ©aý( Ö³dé…ìQc€'Ä *Z$wÂÌ®¢ŠK`¦ä.èmåz0þ£È%PL¬ö¤ +ª`6Ã!ÐW¡Ú:wü5Ãj(z_nª/cnæ$,¥:5&~<ä‘zBB%n/¥„ÑFÌ_j`SǨm—‚Ö•d>›^Z7w$~vD(¯åAad`sù.„¤ØJíŠØÍƒu€Jâ‚à%:2²é²i«Õ6)E¯b(q̃„d#¬!£ìÔˆ¤3"Ä4¼ä,Jü[#2¯¨ 7†Þ4¢z;aóšÁûI‘k|2yX4Kt5û6A'aä¶&ú,ÃðŠDj(/Î'Cõyä¡ÅŠìaŽ%¡Þá¶8ƾlÜ/b~:vbLˆê(þðÒ#ó8žÂ'äx€w`’BêêÄ(± xä”HÆPe”DCŒF<ÌNwOEz,eÄ5‚ðKbéÅ™€;Dþ¢,#‡ˆÁ¢¼GÌ*;»-»'î?Å‚\Gžl%Ê@c!%ÒÁ÷"4}bÂð[c’G¢Ù$È0ÅAI`,@¼& VZ : 4@è²ì®¤òâx{Wˆ"G!©"Ç ½²(sÀPÂúA¨.<Š’Êbkîu]‡ÂbŽC.£#œQKl*R!¦Žî:Dùa‚€å¸5zJÚJÑ$}z¢:"v'd@ñ|Wƒzø”˜r!øå£¢ñ˜Ò(®[ Z ÄÏï&¤lg$êD@ŽÅ (¢60È.$ƒo"Ãü4Z0G¤F¦¢ò)¾r3£Qä2 ð5ƒ+¯€ÿýZU¦F›ÔÈù׈,–fPâzº…/e¤Gg‚†pî‹ ‚Š8 é^€à 0€ÓB.Rc2+Ío™k$‘½ö(è;qÊ3,wnãmD«1¡ «aìô .åzã Ð#qî AÀPwôÁÀ~Äbà@ ýòþÂÀ8Ø Áà P ø?߯ÙÊþ ”ƒƒ’€„&æ{=çÓüÿÀ€7íä@aÐ|ð‰îus}š¸mº€ÁÀcÔ* ?À¯Ð8û‹Ñ€ `( F}?o òêý¿€à0 }O° àÿDŸà9þü}å_±XHO‡Ø öü¤â)oÇäT ÐHb@0lÇ@qGî[-H‚Á'óñã{fux€ ÎZã``=3|Û± ‰Ó@ŸïðCßwwÕ@`<xôžïgËýîú…Ý-œÝ#ÿ¹1Ыª,~1γÅË™ü΀'»V|# .ˆŸÈz@C´¥`*äÏŸOQü"çª5‡ÁþÑàHH±ö¹€Ç뀟ª9ö€l‹´¶‹¢<}€ê´¸¹ö‹|9Ï ‰úw‡¡à|ž€( [;@>-Þ•‡ÑóªG‹¶ŸÀm­5GØ­€‡ÐX€çéîChø¥±ö}Ê.„Ü®d({>Ü”t¿¨íƳXeÈX€ÇðÏž§éèz'©óA×ËVŒååï n³¯õ(|eWñõ—Ç‹¡ÿPî›i­à6$n¾̨,ðœÌÖ~¼©æ˜-È€ëh5L8µ€KM±­”.‹N[|!ktdÄ£_#;P €!Jƒ Ë0§,¸ç?‡‰wWÀ€aäZ‡€ô }¼&^>‘˜ƒ•€ P8$Aßïø ?€oøŒ9úƒ@ààp$~€A/çËð÷t?ƒD°ðܘ# :Þ/pñúÿ?€ IÄö‚AÐPÜ<xD g:ÅÎÌ\¸ž@À5æœÃ€X{ýúa€pnü|€Ÿ å‘ú¡€Xœêa±X_Ñ@ L?d/Çå–¸NÀÀô^÷a~?ä  ´íûŒ@ .BûŸ¸Láúü{¿oÀ0ŸÏwøõ ` @ @$¿@ `÷Vü½¾_ ê €pKê¾êasp ø_`Cõðôˆ=¹€  س?€ï÷ÛÖiÝc@¸‡Ðäà|»à3̾Ÿ€@£àpùAäçì Ì€‡ÓŠŸôƒ®'øà)ÿ ‘xÛ9͘}''Ð ½Ÿh›¯¹ èrÂ{"gÚ>}Ÿ¹ú|Ÿ 눰¨H }H\z§Ø ŸÇÒöë¹°œz¶gœHxÉ@!ð‚ ò~‚¯1Þ²žÎˆ}Ÿì\ž9Ëñ‡ÙôiŸ'ñÆqži–y˜g!îŸç«ù€QXç$ˆ'à|.)5 Ù? †€Ð-ˆ +Ó.3‡€gâ0ȹËB€`3^¦È¢HÕÌ+ºÓM¡ J¾Ÿ,“j~§'ôvlÐ ~@pW,rÁ›+š€t¬¬-¬‡X Â…¬Òñþ~I)÷9¹Œ½Þ}³(’(€3œLŠ1öýÅ«,. VgØ‹¡Ø/ ™òƒ Âj{ 1ôy¸§“ŠŸÀC<YA잎Ã8n-ÓYï ùŸîrs'´ùÔWY°r!€í‹d8 4pÀ€§Ì°y­²¶Ï:–p[ ˜@h{Ÿ@iþyÇ©èt‡ð) ÑqΊˆ $‰ˆêã3åøÉ[vÛü€ì‹æ~7ì‚0&‡ž•W ­G±þ=às¾yç+Ið´W1çÀ&õ¬Gìp†nçáêæŸGª&š@\žYÉ4:{¬‰4ФhŠ…à.‰îàbuJ< î´±÷°Û.þÀÔË8{=±ð{§Åä“¿»»ÉB€RLÏ9³Ü½€/Ÿèžëêx'–]\[)¨½žó™ô€K‰Ñ%ˆè€T˜=^‰Âã¸{€Ú<‰¶U@!k>‡ ßè)WÂAaÌ P|ÝÂ3˜C‹€BÌ<u ^3†£Ìsà65 ” áÞ€MZ+ˆ ú&!ì@x1 < <@8ƒ˜Yñ–.I’p#É!˜ÃwË~ˆ€~€‚=›Ë`J ö#àXaqh6Cìï¨T@C i 0ËeX˜S` ”`ŒEä¿€°N)!1-\­eZf‰ÚAÉdÕ‡LaNéŒCù•àMãið†î€ÇˆÞéã]2@¬à ™ ò É Œ‰ @„º`qK¡ 5òüˆÔ‰M98G`>à±6ecù+7èk‹+É@$øm’”€4Æö<ØrdœÀ  ÛÊô;Èdг€B5nˆ™‚Äg ÝcìËÐ5¬‹@@ .ˆõÁ#FjÒŒ"@¬ $ÓטõkÄ`D =–Á‹Ð Àš@Ë\Š>H¬ÞPåDdM©ã2„ð "¶eãØ} ±Ô?Æ×#¨l·:šb„EÆ1ÂC*È|†'ƒþ_¯n^æÑ]Qª‹a[pŠèëBLr‰—KèL€qô—‰ ˨4çS±ú?‡™¤L âI‡¬w…í$ ¼žˆ0#¨‰ŽÓdpL º™È€!ìXSáTEx›Õ…8EË(ùucè{²ä¨ŽÁ»/|ÁF#ÚGÀàŒC2B¨>d-±ú@™Í$ðzÐE EÜô;ÃÑB;§ˆ8óO—k° €k¦!„\ýµ<kP‡z<ÈI®=¦D~½ÃjaIûCÚô6  Hî±5[%~‘žPÀD–pcäz/qåU'jÁ`1ˆ|(¦Kýw0/DŠ%”û'Qò]mô‰x o <¯¸ÔB?§3†Q *„€wHˆLýU  w“±ÞdÍQŒ3¬èYzÝiPú5’x‰„wY@[L x!1æpM’0Ia{›SöŸNé<+9cÕ%‘"…°ò€@‹€¤ö€(ç^G¨÷FÔu²ÚsŒ 5奥ÀXOaô,UÙÃ%|¹Ý2†8#ÚÜàSr¤Nm@FVªÑUÈï$#ݰ¨ :G‰š `)W€öÆóÞ'К4106Ó± ’àC(ü<<€òcè „À> ÂH!CÀzcæMß¡b@À2Ò¹0* Á( h}ŽÐÀ䃸f ÁÖ;À(ãÈ岨¤1e, (¿Áê<0ô2à(°…q¬=2üšhs™K 97,D‚ÍBj>,,%Æ[Ëõ±rØTCù³"Cìw‘aû'D”æ•çö®ˆ™;3GŒ¯“Â!Y‰Ádˆ€~ƒX¤1ÞKZ÷©@™ÀÊ6ÜB_Ä6Z>w„&0'ÒŸK³¦` ¹Ö(Ÿ¡  Œ†ÓNÉ¿Ïà&„”læÑ`5EôЭ²®b|?æQ])~@£&ú£ÙÓLêÀie(\£r™eXOìÄ4ô_§L8À:#@M”ߘçE÷-G`¯ù€BƒØ{?Öò„ô9\ Ñ¢j’µ'o€&¥•±ÐC‹Ö¬l£Ìl‘î;p(Æcøb kÌ:Ç€êªFȶJÅÜwã)Ø9i”ï³YÚv A8Å•I§è«•Ñ:8*%bX °N9/þ!-&”`VÙm[4ëPðšKô0µˆL(̤ef5'¢/bvë…>g.®lX6Ì5DV9¢KvL êŽ ,E0cŒs LAɰÄ\iOú  +þ†· >€ à8 à>Jÿòj@9k®"‚È'e°ŒAú@À-ª@b!Æ,ÁÄG°Ãü1„L à#Çú ô ô '.ø`'8P¯ø5ÐIÀ×ÀŒ2$b9Bâ 懞5I˜-F°vË®GE0ë`ÃNÔ"Ú+Ã0‚p.æ EÂ1gÚäWAè6E ÀK:yCÚc¢lbLIT2¢3I~ââŒÀ¡òÎø±ÁøO 1ã– 2àÃÃìL'èf¨à1‚Ò³‚è/ã¢@t MO²Iƒ.ï„"0€8ªF ã« ÎÒB|ÃèDË”#æ´` ¹@*£ÁÖºáâ3‡TRÈÐăí^3£ö`%æK#–ShòþàþíèK>š‚(Yiž`^ë”&R¶€:Šv¯,PÖAÞâ5¦j$Cn,Î!° mZ„$.èFh#Sb¦6«°`€3À+çàað`– l <Ùd …Â"0¥^,F,‘hÀH. ,!Õ¡ü­ÆŠáØ€­Öc|šcÆ'C°ÀàÀ ô£…€”‡ö!‚Ò/£nÑ¢r¯R8¤²1’âÐdAiÔ6£˜;©ÚCº:Ff¥ Q*Þ'G÷dăbÔ¬Å)†‚€jÌ"j âÄOƒ~"d@AäÂ/aü¶¥f3J¨2“- ‚âbrm$1ã°'(é Ö-¤\©¢.©È= ‚”†X9fä²-CB"c¢6Åþ@e¶,þcGö4jÌ“ƒˆºð›ÆV-¼.HÌ`"Ö5I~2BÄ:ð¦C¼€ ‰Hëg ã@'L‚h ™Cjæ€T)ž‘ ¤xDâú1Ϧ:Ũ2„)å‚o.øIŒ°VhÄ´ÂJXEœ#Êì3Áø“H‡,!âZ+¤= ¥¬àሡöÊÁ–áòÖJ8)H%ÌSd²G¢ÊŒg~6´n+ï´[V9ÄW$Þ"À0L:-e^@BÌÄH, g"YJ!Êœíâäª.Þ;bÄ‚“âŽã»nE¤.E¢,þf°{Ñu;âà‚ƒäûDú2$†AÒ_ؤĒŲE>§è8Gï2b ./и+‚ú`FE`"à4 Àx ´!ôîrA¥4ªî,BöÑ£È5Áü´úã"i¯TƒäD d°;¥¨–cÎDƒF7ê¨: Þ>cê`$X+LW*î½äYs₃ 4ŽÌ0ƒ¬EBFÞ€UÀ ‚rßæ`®ëJ6e¨fãr2Ѝ;cjC8ú&ÀO'¼pJ æ5tàT"24áä-ƒÐ3Q„!D u”dSd\­Å¬>BB›!ð9@ƒk°UËþ½£š@„ZD¤+†/eæ9‘ DH®%ü"‚F1' BìãBTJß1"(+‡J~'”Ì640-I>¯-¢xí*† uæ5¡ò?ÇJcbI„p^ã‚$ 7„[%cšPcŒ²å 4Tøô…¥ .$'!ð#ÁòAÎèh‰šETBâE,Õ²?mGb9‚À C.'#(“m#¦Í€Ó6±Aî!ÂØ€@jÀ8K¤3ª7O €(&ÄàÀJ€0€(áÖDêŠÞApØ ,Aè–B¼Zd¤] H5nDB—NÆò0U‚'k\/·lúè,I,Ãu˜Vc ›Ï´!ËEÇ”"e–E`¶LÖ*J¼;R“ŠÔ6´ÞÐbÞ" .Â0;È\À$d«ä"Íf¶úâå¶õdÂ~"Юã¼BW¼Vmèù‚À$n ”d=®¡8@ eË’ETðTƒún,ㆌÃ^L.°[ ~»ƒéd°$¤ cEµhW$41<6e2ރܮñ3"ÌVg"ErUéÚ8Xw „&Ô•Ü/£Ðô¦PpEt#!òß«Yi¤³ B D 6Z‚ÏbN¡göLFò3D† 2„^ãÜ€Íø2KKB渣ˆ£Áœ!þA´A®áèc à=Cì5æ'CA+‰D>"8böse_Øê<À83µblÆ¥(ò ¼Â%]d#d ã/5º9Ï $æ}­D1¦w9š”‘4•ã(%Ìe©8~`;úMnhâ.7"þŒ#¢WJ¤5Õ£(„ší&£Ê"jžŒC2f¨;$°¾t——(‚6à$`\`.`^€xÔáä;ˆêH›Ã$Ÿ£ä€Ê>‚¸÷gèA ± ^CØ^„Ðô©ÖÑÇþMî- (ŠIÀ`aÞÓ"xM£ CúZ"jEb‚S"¼!ð©JÐësÂã‡ökÜwÀ‚©ˆ:ÍJÄdøOi8DviªîÎn–½¤ O(EŒ€ÛÁüÉ©êwæ&Áà>æÔ6ÿId¼$ œ1ŒIg ~d@R‹°]ò-¸U¬ØŒ ªLEèu`&„ZyîÌ1j3@\À +ˆÑ´~¬ÔýHˆ2"ØNej# ï?ÃC-ùnG Km Læfyq Iå\4øŒD^#ó‹`µæqtºrZƒÕZèŒÂÊv8TP¾½¡Ñ`aÒ¦¸š$•yað²(I#¨@h5±åÐ"Ø"Ž 2%¤Š#‡@¾dÔ-† ”À` 4uMgc2•ƒŠ @&[`0@Er &AÔ&ÌaÛsÁÒÀ@"-w”À€ËL!d9ˆ>ŒþÃbUê&0‡ì_ >O±Þ3„@0'×MD°Z€XF®Öè„#ät¬ÅîÊbt”ƒ¾ŒÈˆý…’+ÃdºãÈ™DÄg.L"Œ´3If‹ó@Žè\Iåæ4à]…—"ŒC¼/î6ëƒ"o/ V`¨ë>'èßú&f¨6‡áðs‹¯’V€ O¡ÝLÂfÁ§¼?Â+€n~.-|ÃÃnZ•n'ÌwŠvû"iü8ƒ6$\<Â|=æâ4±îáð”ÅÐð«/GÂw³tšE‰¶"ƒè;é8œc¢Ðæ[~ªŠ ›ØnâŽUáêiC²>î—°ª7cÐâ“K9Q,£÷¢J$Ѝæ¦^í8PÉ8˜r^¡ö+ÐÄƨ¡´ßC½¯Aô&Ç6k;0«Ãæ5À"8€*ÚÚ¼æèC˜4Zˆ.cäm#3—Än Z“F”ã„¢@9=l69‰ÊÑ h)V"B µO‘å¥ê2*ZreÐc©¼úöÉÌO˜'{ôÿ7NUÜÉ¡øôöô…H^ŠÌH"ü6"0ÓoD B"` * š (àTßBI`rNçEDx€–|h)qP®28šD‡”MDu BvÆ UňŒ £Â2­úYÁä-nöT€uÅT,0¾O|¬HƒM㬙¤‘oHÁä¬<‚!#^BèÐAæ-c]%ä¸$f¤`+Œ!dÐSc2³¡øû@Z€"ä%JöªJ7úÐC4ÂÌ+cBfª¨S&nÃ:ô6©¦\ï &›bc$æÈ C#ÿ #jîho&æ+n 28莂÷­bÓŠw¢dFwŽi%@ ô…ˆ¼0~‡²Ëm9c¬åcx^N²+ÂtîÃ/`=Z'ª¾bÁÖE*"q4@ƒŒßS í{ÁjAõ¿CYA<²'oú&‘-.GªjfáÕOÀ";µD»ã¢4Aîˆ!²ÍZ,(O:˜*@W2FAJk`,©ÈIOòÈaÊ@4 €8`’À"ÊÞ/ª¨­C@NƒDÀ& > 6 . áúA^Á” wC¼ ;B€Cü_¯ðþ~¿@óýö¿€Çûô¿£1hdd €@ ÿãOwëÝöŒ'€ú °þ÷|Å_10(@Ñ H !%‚¯çÅñ=_€7ä`ýhOÀ]ôü¿+à@ ÁºÈÀI ÷u>Ÿ .° ?_2åPûª) e¾Ÿ°¾/·óÉìøx½žÏÐ0, ƒ€Z˜%üŽ‚ŸÏdzéöù}F°29¨.l }€g±êÍò^?_T—ë×~ø|Kè@ ðÔv1ÐñõzÄ€AàpDÞ>$χ¼O®ÿ™?6Y+æð ’*¨š(É’Þ1'ñö°çÐ µžàIòy‡¹ôv§x@ °ï&°#Æ‘ŸÀ H†$ àßÉêŸê0~€j6}Ÿ‡ÂT'ªö›Gàx'A‚e¥Ñ¼|€ÍÑæ«¡ëÚ2Œ¥íˆ+€(B¢ !ömŸ  ÂÕ&à!ü îÇÑæz‡ÚÐï#À*L~HҰŠaø~A+\®—;Çú>ÀÄ©*€{«ú°° 0EC Ü¢è²\*À"«#iEÓ¬áP¨Ê2Ò~Õcð¢ÀÞ£ÀYò~-ê{S€ :eK¢'Ð.~Ÿ`pƒ`€ `H\ Kf‚ÖÀ x¿‡¢|ÜRL§7­áú'àY@6¦€pŠžgùæz€g¼Ô°ó¨@9ö{Fç±ø`&'yðy:‡Š£ `$™‰ n}PIÜ«ÊÀ|ŸÀlpuŸÇ™Ø‘€çûT1À{`­v¸à°gÑðzXçª^߀ JÞ"‰ã¨~Î ¡ø¡¢‘+¼$’FuΊҘ© î{Q§³½ª€`²†z*Dz2 € Nr§©êy_*5ÿ ¶€Žjç±Ô^úrT¼TñÚ¹ +)ðÆTqüÞ,GÐ}Qô“c£°‹qôž­¡þ¶`T®„€'¢z}SçÅ ºìR'2·WBœ-HBØ€à ó‚÷GÆu…€Àc |°ø*\Õ!( }É –Óšqñ.Ÿí¡úxçÑàè!À@¼ÏmN}G©ütGð%æàh{/‘IènG†þ „@À8+ö€€   €Ÿ/° ùøþ  x4}Áo×ËØór¾ÑЖ$ »ϰý÷èf4 Cb@À”"ùw? ÉÜÊZ9Þ€€ØMà‚`-ò¢ÑÐ ´þ}¿îø›ê'·[o@•¶+µà:þ7rÂEÀÖ·Ëôý€b )ûì ø}‚ GпÀðGè8ý n8Ö÷|g`ŒôX‘¿_€Xkøü²`03õû.ÐÀ`§èþ~¼h8¨T ‚ïóÒ"  ƒ" E—}?°7Û½÷Ñ}>Á 0_\šÉfâ Pàè!à"'¹þ~1àSN-è"LX Þ.GòΉŸ§Ø Ã-àAüMò8ŸÁë*A.ÇáòÍh¥Ùø÷ŸHþ¢C(ëTj7€( ‚p@ ¢@lp ³Ä} )ôž€!ç*ž‡ñðE@$&`€K³r}@{D,Œ$d}Ÿ Ò䟟€"2}£(ô´2hùÈÂÇiÜOç™8h@QâymhëGˠУ îž§€l> ÀàÕh !€»´qχAã çˈþ‘Û|¹5@è§²="¨,òÜÈ€(à~2øˆžÀ$2í1]ŠÐ­èÍÛ2&·OzÆ‚0"‡ól” ÉðõÀèêÊÖŸà]y<- c @ê§™ê{ôâÙï#…``… (v à‚ ð ŒáúÖŸ'Éâ{ŸGº&Ê# õ,Ÿ’¼î¢À0 |È9ø’`™Ÿï‘ëMø Ì–^zÉié‚ËÀL†{Ÿ§ª8|®€AðxÈ“´õ|¬|žä€Àiò¶E|}¬qÍÈ 38ŸÀ‹t@Aø()ò|3Ùí´0‚*5L4 ÝCûZÊ` LÂà9ñë‡ÌÆ«Tâi€ ámÒ<ÜBw 5¦€©êy;} î5)G“Ô{WÇÖž0uâÜ¿€]œy'®öfǀˈ¡Â`ì֣РF]'±ðžàeàPwjœf@ÇûÒòµÍ,ÜŸ’€}Ô " Í”âyà0"àz4=Û@ú"@!q$xK‡Á¼?¦Ü¢>Ò]‡¡¦èQø€Sa €&ì‡àú£¥,Ža耙´àD¼Æ¤=†Èó,d „­r]* «h†%Ä\‘ï$…^0 ßãcç@{1ê9‡è  xðDGXô€Côž€%Ìq‡ðZ 8 p:À¸%Ýaø9€ïÂÔt5Ð,‡¸>p…Ìž¤Ø>PÚKŵ Bâcù0€Z§Â"¹€š"Î`È  kh#†·$7Ìü 7Ž|‡ƒ}Lñ|#21÷,´@Ë–j•dñy¿€Si‹*‹åÀ‚*:gÀzëµ!"ÆÜ_ ¢l"]̾bøÚLñ¸{%Á¡²R‰â=“ò —'Z?݉- Ñö³’kùN¦ž¶ö™0fL°¸ÒNT˜'i@àZ[Z,'ë8€TêÁYð‘…Œ”.CÇè÷4ãáÙ uÀ9@‘ÅðÐÐÒH¡ôH9ä”^ñ(À(|Dâc]ÛpGð«"ÐBÛÊ¢%Ùó¢c6ç€ n8Í“$„7ë{=( €âÿùn¬vŸ3´bßI”J3`¹´Xp"á>gÄõ€GL(ïãñ,bÞC¦yg%ñP¢Ã}8‹h(€ üœxbi…À}¹ÔdCx9s0“ gü€æ:<Àý`XÚp3Pn0 X ‚à@ˆô4 "G¬ 9Û*ðÑæ8‡Aù!d6çÏô^HlyŽò$<Ì}( €H@(&2㔡Ò:ß1Q%Üà‘òÆÏŸ1¢†‚«SØúGÐøyày«P?@P E‰Ú”"Ú\< œ2 µ²pZVݤˆˆw* d»Í0`}bVÏ–) AÍÙÏœÁöÞXó„Mð‰œ'Z—ˆ#.,ò° ÀH‘ƒÕ×Çè×TMR`ú¥Aú>(õÉsa©Ó4à#^QV$<$ …Ž9@8¥Ðë’2ìê3žnÒ!óGޏICôs·áÕ;ˆº o^là ]ñü¢4f¨¦1ö ®ƒðþºÒÑD‰dÆLI‘-0,e• Å!Ö¼‡ à]&zfnx4¡ô:“@t)aÎ;À` 4|¾o€@÷†Øž­R]öq!D&G´GGµŒ!È™!|2"i ØqÎ@ÐM€Ü& ;ŠÍ'ˆ°½2¦>€`ŒÀ„ ‚p$>pâÀx Ñf:Gh  Lzøõß“é7 (‰§Rÿ—ÑÌ¡~ ¤‹É] °Rm“N#F؇Àî„,‹(uZVBæžAgåÜñÓ„ýhØÂ# p#dhÝ¡4 bÙÉk›Š†o;ûÑѾ"e­1*o¹kIð¨Æ BÔ»&¯/x~€ÓiÊœ%Ï`ÞshˉçÏ$-c¡ñô”À{g ì"ßÙÉýOÀ5ë°ûÉ÷%¨ÍK"(hÇðôAÈž46f—Š.†Q¸ X„ù‡¯å›Ÿ9 bÌ.H¨{÷â"@ éyÂÁì=étÜAóÂB,{8G|âmA€æëKáe9gÑW¸Yèyj ?àÏSc§›/™ìž>EÝ‚¤dŽÀ9Pî3¥ P©ð]‘‰¸“yÀD ¿Êp²CÆ-ED"$4D:Ôƒn@„˜ „<¤jÔ ¢x` `Hà Aü°ÌÄ …ˆ‡cr‘‡ÚON÷¤Ø±cŒ"Eœ:ãFpúÏü ¤øÚÄZêæÚ1¡àfn®Tãî?Ä!öâV:`*Aþ` a@"ÆàE§œvN¤SÃL(zAàV vÄŽ("Vy'’HH†w4AòY6p‰â"G´€ Áè+$-^ªB$±j ð~DjCîêDP"*IAîuø)\€ , ðé°ìÁö‚q'€ @ļ0Ê‚å–j‡°‰®îd‚‹ÂÔž ¬‡Áô#|\Â"˜Ĩ#dâ:7Ed¤j/¤ áÚòP¸‘ˆ7€Ehs†LAèLLä¤b“Š‚ ¦ cÔô®TLíǼf,d#â '¯\ÖªVl&G„e Áè‰Çtæ¸iP€ƒ˜#CNÓ…B¢è€ N)Î Ó eê'¦þ%aðÂã¶ aê<þ#0Áب; (ª+H+(K& ò‰(²ˆ!B'¥°žC¢¨¶^r $CT#^îä¤Aü`”Š€” "áè,â€/‚Ú#έ«˜â˜@Ò .!ÄÁâàÁØ `" ’Çd,ƒ0ˆ|¼¤ì=ƒÞ4òʦâ¾$Ê"¸Bh6{dlÀ .d!ÈEAÒ?e®j¢ Ãx}%0s$ÄiH¸¡O"–„Šv1R–Â,€Åd|ÂÔi6…BMD€,€"3¤]í8#âÐ$ÚD#’ ÈÆ]7d .:øÂ c0i„Ð ¦¤Ø9¦zÃ4¦„#Œ’"$Iü&rb~µ!mNøƒˆ$ìlFIB-bÊ,‡ZL‡SD4zâjø(0Á£t(Ds&ëJÒ@ãŠsè.s ®"Ô€†µ<ÁþŠ-AlTnÆiPÂFO|0j‚Lƒt=# LÂè¶|"§à|Aþc‰fJÁìæôÆÃ´å6.€<ä¡~@A˜Aʡβ@¯&B6¥Ä¦¤‘âÔ(…Ž=$ì¦kª2—B g'à|r=‚Ld™9ƒ÷Aä‘Ï„8òîäD€ ß@¹AøáÊAÜi4bÜz4{CøA…ŽV¢!ÂØ‘“˜mÅŠ#BÆsÀ®`ž 2”:@À"AêbZFîÍÀ &à…ô&.R`<cœÒL!ücŠc!þà. HC¯2â+b„ïÌ(YŒNÃvY24¨3®p" Ó 0öaæ òÃŒAí*‚êàM”Ægtx(c~‹‚"-§åbébè‚ ¢{^@^¢ ÁÞ‰ÂÐo#ü2"‚OŽümsHP²9"z,é.-„p|-NÜ/€ ÍNÃrK&øí²,„Ø4døW‹Ê8G8Aîf> #2æ2E¢‰[kÜmò^ìm6£®8Áðj¢3ÅõAD†D %Æìáîï"†ÊáÔfö¢€C .Ø'²{còã(µ`kƒ:iŠšùïŒÛ!ð3¡íNÁöF¨¹m©hUЀRÂ:odà|ÑYÊÅC£|< °³¥B›¤ê|Æ:d"5¯Œj #Àbèè¼hä2V¡ô@×W'à´<$Üi¡¼EB'©½(ÒŽ!ð82€ e|L£C;¥x·bg pŠø'òÁö@˜ f `FaÞ¯Ö.”bRÁþê¢À,@ 0†ÄÁò¡îÁ\n ʼ "‡ºM‚"O‚WƒˆNn¼C2B6”dAäe‰|I‰Šƒ&r`$$ìÁê@að@hfO´e†Xc¥4.CîÀ{Ã:YtH›#2Ë‚cî±Âbè(bá B!¤aFží„8> ÃZL‡<©c¡-{5*Vƒh—çÚ3ÀgÖ´!âÀuÈâ•r¨"R;DÊ<Àg­.7ÖÙFr©ˆpg1΂ÂfFê|ƒNÂ28$Øy(¼€Lí0cøÜãþÆjAæ¡Ô:޶C"; X`#n5 ¢„¤V%œ}¤ê‡ÌŠL‡€Õ°F¥eà¾D#(FUøÅH¼:¤#&¡§’8ËDâïÊø‚öÁbn"ÌÄ@M¼KJô¯aSÑøH¼c£B¢G„Á®}¡Ìáà!®x,vSj3}ô Ö ¢/†:OâsЀHR<~NFAøWÊÓa¬6^%V8cƒxSÅN aÜ3TpÆn"ÀqÐå…Ö†B,'¯hT ,aú:Àþ""‚1Â@Z¯ÞM¢€PäÂEdn¾„È¢äH,ƒ|URL¦/Ÿ”W„&oQâà4d6à&n JBWæn1ȸ°‡ädÏ[i Õ`'ÄX–ÅÒg#F-j‘”05£€W`AüR4xjGÌ:fy‚îâ/Çä0gÇ °8 j .ÁèBeJ@,o¤ïÔ¡âw@iAöµ2ÊÃú(c@éÏJ§á%4¨'ùi€(71ZJ7Õ´dâ„`{FÝ6à:d˜.È2KCŠ=ól{SÄoám,1®(7T"$¢áí‡aòiÎè2$X" ƒiÜÔûª |sîÜ¥ò(¸fàh§¾C•”€ ÓA$¸àAÑQZ‚ì˜hL2tÙ&`WÁâz’& ‚6ûQçdzã68¹<.ùc Aç¬-j%’„o*è.$Э1’\„¨ µ´ yä­"Ö'†”’äaK&­";&ÁøØ($VIà>ˆZ'ǨèvÚ"!K, æJHoꡤOƒ¥&e&g¢’ËZZ- Àœ€d €>Aßm#x‹Ê÷p`*K@€3-€8ˆÖÚ!È¡æAb!àÀ.!æ5#Š ©”èâ"„¾..B'|¢ˆ2Çds)%³d¸ÊÔxó/hƒr€–7Ãr?ƒŠ›ûbzæAªÃþg„‹ƒ„€"¯3Äq* U Ã -¤ Â/|4#ôB*˜§ZdÂâXª Õù(gÄâ„"âIŠ2LhqGÌ("xC5hƒ‚@Ï |Ä67j‚(;¸EcâWƒ„F h›…,Är M .7ÄŽg¶ÌF¦Ã~G1ª£CžhX*D€G„¯‘6´ä¶37¥N2¥(åîÄ^(j-4,ƒÀ"€{C,./»ã|="ãÌáúKƒ3?àrI,fÈ„â„CbåéÎOo°š".h£$BPofL=Ç>`f&“·Zs‰.›‰¸èØâp®ú¡ØÒ¡ä¡Õa `Z">1£øBg3Jjÿ¢Êƒn=1»¢MI¸‡ÅÅh±ôÁÔ,àBL`2óç¬$ÙCµe” 'pª&þ¼nòÊ@$D&èe4ëHG>"‡>’J#®só,ºàˆþ‘d´uÆ @l`"ÙAÝ7ãùôú~à0HH‡?߀«ùú=^à'³à¿‚à ýx‚!0ðCø¿À`Ðâý}½¯gøî’Å@O×ÐúýC 'Ìøû¬÷;Øçx?Áu0(!ûCßï–ëáú€€{µî÷E¼ß'`€_²«Ãø9€ Lx ¾ß áô$†`àMèû}S€ (þ~ÏpXP2"E»°~8V.æJÉÎò†0  û€@”‡Ûø ü¿4PH…ÄQ_@;øý|F‚ @(Tx?Ïg«ï8ÏŸ¯Çï<7€@!îÊÁì}¼ÇúV­CR¡€èaæÖž Ä}¤ÀèèŸðä Md*èË\Äï8ð€ 3Å$À¶?ü{êÙô¦€ x!ñ« ý`Iù$ NpªŸJÑòàD¨`!ò~!§Ú†@|¾‡ñþ*çªTz£+³î€ZœKGšòz'nŠŸÃ0©¤¨ Çñü3Á`Z¢Óë4‡€Ê$F¢ SªzžÊ’·ŸKl€à‹{(ûRJtº|誇ðư쀉b˜†X|+'ºðLc”¤†ýC‡Áþ†É@(Íà\lt§Áäu†!Ü|§ˆ0à:ÌI@H  H",‘ÓrµŽc*€`p}ÌÔb£çàhÀ1’yŸ"[J!0>é¤Þàp}¾„¢»Z¥«³ž©Ñb¢}ágóÚ~Ò{aPŸ‡£ª|žS‚pJ(€Çå ÆM2Qö{¦ÀØE@î›§öôŸ``&øÅˆjò¬€ª¢}@s¯1‘ìç±òŒ+`%ûšH¦€À@Ê€ d8 €'ÅêN¹ôzAg¨ h>›†Íèñø{×gÜZø‘<ŠÕ!Žà q,ÆKGò+ŠÈo2| 8ñ/¹üx0Jí }À¯Ž»%Gùö(y\fÓ1‡ÑþüBY×%@6Â|žç• ¸Ì°3<ÒN k}3­×Ѫüã)ïÇ¥^~GЭ2<™zP/¼’×jõ‡éN ,~7Ñþ=G˜ýoÀ ™òâGºhTÂò ÇÒ›À @c7G Œ}T°Mcœ!å ¿”y‡¹æ%Dì¯=qüM›YLí,uÌ>G™á!@—† V’Ë™z¥X”³Ú£L#³#-Í3BP”GºJ&X›8â~Žhýèð—ôÌ™G*ƒÄ ?€h Ad±UQ¶þH€ @þ„Ba þ~? Ïð`€h0?@ € íö|º_¡R(hdD„owä Á`'óä$þ{apøŒ2,½œoГÅʲ}³VÏ $,{„€ Wð2?‡ü ÿ~ÙßÀ0ú1àÇëùúûA@p8(ý|?O·½®N}>ßàWãü‚@`0 ù5~½Þ±g¼0 Ç€íàiæ*K!À±GµÙõˆ|À¯‹2Ò~v/Üýýv~¼ D äo÷»ä÷{ëÞÏ (`Ÿ¯œV( Ù1pìq~±w¼…ðš€cà#äóçd@|“éøÑ, K,~Œú¬çà €è°Å0 ô¼½@@ÌŸ‡²hâ$ Û³Á¯X  ò±gòòŸªà€€8È0õg±ó?Йþ{ Àd,jô° HÑ‚"}®MÌß®(z܈"¯S*zžîÙì}€ ` L»~" 3ªêqhËPȉàx!É!ÿ1¯-  û6'Áò¨ß RÓ"€g‘îª'€q ‡ôÇ ÇÃ?€¬”`9ýIç 3ð8 ²+ñòzŸ‡ÙèØŒxUž'øu€xD}ž@ì}èÁüê€;(‡ÊzŸiËŽÂ8/h¢€SŽÿ@çÊî¢@jÚy'ùé(ÖP$X ê{6Q¸M Ã>Ÿiä‚!ï0"À˜gÉæÇiꇠ gáð'‰öºÅGÊì‚`:tÒ'`EÎéæŸÇ”Âà–Pw¡çœÐ‚X-€Àzž€` t‚`ðp®§)ú‘A8Ï€SVœ.0g®–{€Žùõ42ìQòPL[ì³Å) ¼¢. (²€uÄyf§Ùô~¶Ö:%¯­ è{8`c^Ÿ‹ú­˜¾ÐëñbâœGÐ|ŸG¢,y¢¶2´kkCý¤¯ j!€;Ór~/$}£âVcZ"JÞ<Lyâr-÷ÿ€x,F}Zàv¾L‡®ób´P»Úâ ;Œ1èž« l·ð}äGé蹋Kxú€,wÒ¶|ˆ²yâ¤ÝíN€ËÃr´:ÓŒnoS°¸ ±môœn¸€:aIJaÚ]‡‘]DPñöcK«("D‡± pS@ëzã±I1âÊ–ÐÉ´wÑî<È9p Ä*¥:EŸIm†DYb<ÀX '*\…>G@ÿÁ 0Œ@ˆò¦Ä5’Àƒ]À_ ( ’ŠX ÃX|Ì:Ũܽ&G˜¥©c›$Ш€åY…ÙdžùÏÙî'«8DH#h-g”ƒä¢Õ"©"¨,ræy Ð DÀ4†g¦¤L<¨X~¤S†? ãGEDÞĤð ç0°­reŒqm$æð¾€%@O$óEÉ€ß#Öd ùтź š#ȪÇú"ÒLÊ­æ„Ú*j>ðAú¨ ™{bæ¾ —"á óG7âH„LU0Ḭ̓ÀAPYc«D—E?\rhd°YOÓöW㘨€(G ÷ÇÙ2½k‘€ýh„­Ìá‘HªÊ)9¨Àæ)“cÖ¸&u‰&‰x j X› CX‰º¢$DƒK´.ŠÅ,ñÌÑÜñÇsä+”p@’èà ~@Ñücš{!£Ð~¾<)×Eíe¥™!þ!gräö€cþjGÈë{㹫‘ú€` %Ú ‚Çøò£ÉE]¹$'§ í¤F'%NÙ$ÒÍSÁ0 @ðE)ÃÈXŸÀt][Ð g¬Eg@ãéX,è&FVa¹$.’Õæ?@9QD`ÇÑ”Gh¡f:ª]™E¸8ñÝN­À:àriÜSyUɧ¡` AaÖš‡I©ãÁòœ¶Ÿù%?Í}ù-Dš9r8%l¸žt&‹ÃÅDðN*™ô–?‡ª,ëÀ³Îr2¼¨Yl/Œˆ±tЙÓCô,¸òÅQò$©’ƒãõh#ñè±Þù}OàD¾>^ù$€ >&P=Pš1À ¬“~רÜ|'†YcKzâUyk&€ ½€p¢i4x耹‡pþh™pk˲1²¡.€‡`Nž#1ª) '¤Ê¡ˆ'2#ù€è;GÐùòÌßÁbÏ—¤©Ž@´4Ðe:sØþ$È6I¼sÓœ@Ks ,‚6Àþ`ƒâ®“¸Çˆðÿ ¯d¸¼,Y |`–ƒA‘êˆx’è?GˆñƒÉ˜óHÀ\CÜnÈlEÔ醰؊©ÔTÍŒ=2 !"W›ž€tySCàsà*Ø3 @h ÜR@‰Ê1|ƒê-0°&$€¬aÌõBÔ{Œát;‡Œ4ù–\‹“Ñ!ú”Ë¡:žÝ¡¡cð塘æuT8%°ýÕ!m.å­l#vÁ"PÑrPfU™iÚ‹Úá×ÎÕå%buL¢#1¼Xµ‘*n›D³¢&0Éè,°z\!ôe AcG´H ªÆ‹0ƒã#]€(À<›È‡Ä…‘ù'Rë8ð59¢zÀQ×=õ.©G`Ôéäí.®cHd;°$h]ñ³²y?ie¯#&€$yGZ,N¥ä²ïâD¥È’ ,è€;ìæH)<4ƒý[񿀬—?訶ô#ö‰Zÿeˆ»ð˜üYŠ\›€„–}iž¾õÈ9®uóç‹j¢ëÌáçRã>ÏjŽrLÉ srb²ù(¿"I`"Ç‘x #Üx6dqíÉ ŽgîDån€yxPªD“åØÛ ~²¹æ€‰9càGãàß!4zI ìÇURøáè .S 22ÁÊnAÎ1 @#þ&£È[°,¡ìigjº#,Æ ¼eøY…¢5àÉî¦AôA#&1c*=bìõ#¬î¡bÐèCE.BÄ"âNN/èC#Ê;ãÔXâLO=d"ÉB[füƒ- zÃÞ>À-©fƒÀ$‘&@§ncZr$b©D¢24G´ˆ¥D"xÀeNÂfÃ*ìЦáð/„,'¢ð$áò=m [†¶YÅ0S -À "ïè¬âÖécdc´1©þ>Çþ?à.ƒb1"x‘#FììY‚(-`Ÿb2=&ä7‚ÄHà@ SDL+Æ„F¸x¡ì"$ì¡°äü¤úDb¼ÃH….îº$Lj#–‚o’yD Ã>"†È+…¢¯v`ªZ`+@2/ÁØÁäM(¢†¶hââ‚åæ-ã ¢;Aà1¨"LbMGÀ{êüÁÐ;áБ( @&¡ìÂhú¢r;1nBÚYªxó„XpŠ0I¶+ËpNÄL'Œßö$Æ‚,ãZ Ê¸×ò4 o" N}±6"âÜ#Pä# ¢t0e4¡Ð€2 0À– $fä,£Ž"ê¨1&G @6€N`XÁògAÎaÌraÚ€*Š " V Â¶=H9, ì+ÁüTUlú3 #HNãÂbÁýÆp.äOææÎ)&/‡è!ã˜S¬P8#¸ê"r2¡+ f·ªônÌ5¥VZæ< Ü.ð+c,=êÎ,QT'Þ.£réK˜3Ã&‘Þ+§èHïN\PX!…1b@Å.µ‚Îe.;C¦;d’F 7áæE%à1dÐ¥B A H§ÈxãÞ0#ÊŽcø&ä2_&4,²k"Îð„ì[O(ѧÆ|CŽj.ƒåòK­#à\Fö=,¶"ÉvôäР2f³âèm q#‚F`ýâBS¢â,¥:E‚ÜxâØC|XÅ”|…ʰÂE,dH<¥.õdZ" ~’bjÊ)îjƒE'z1‚M¾4J>ìÄì `: $¿%ÈG$Zí'ÈXçÈ2‡Ž’Â4ê*G"æKÃöÊånVMDâö4R@ê6À0!äˆAæT&P,’F,Z.Dâ<~„f¡âä¼FD`/Ââ:à*èŒæ`©Ô1ìâ}&¶“þ¬žÆÆP¤äZ#2¨m…´Tbêpã5ÊòI‚ 0Aê0ÊãªsÀ£<²ú-qÒ:¤”=p:• hEñ€¤ â*\¢¶.É,£§ ò¯‚övƒž;l¶š(>#ê+£ª-Ô7*"mÊ})qæº"M1ÄN‘p| ¾áöAât#Ö:ƒ>""~ä,ãfc£bëƒþÏÉ‚­DDxâOÂ(Kz`Sª¸ªB.p‚r‚Í"wRY#^$ÂÚ^òVÕ*ÄÞ7F¨P§¸6bÆ1¡æ8ifϤŽ1Pã,æ|-£†Çc*â¸W5H^ð2ÇÒïÆ¾côw¦4¦“¾H‹'T’°¹Õ@7­<_ƒ&ÐÀE‰Š$H®8å°\Ë‚Vg(Ñy?*n  VAܦrÈ‚-3Œ##~0"J1£Ä2ÎcÄ2¦¿(xêHÚd¸„D^.$,_"Ðeþ##b†¢,âÃÀ1âÚ,§É[¢Ë7B4p;SŠ‚Áï,è’ ”€Z ( $º•c*æCÊ*Và€L`8À2«È` ábá !Ä`à Ï£xSBº›îÔxµŒ0"¨ªR#$V"2º/ ¨V-ü# š: á¡ê-j/¢ÎÒ&æt#€iP&â2QUH8pã7 :·¥ q^'C>v¢ØP§zG(+-0H4$f<ì'ù*碇§È¶Ff¨¢ä!ÂFz&°Ñ¢È¹ä"E.y ò- "IE Þ0à Àk' Ç®yLhAkp" 'i¢ŽÃÔ0s ίråËæ¨'„ôÆ…â~‡`˜ëÄ&2¤{c´9¤2Фf2"0$$¬âäZ#é#Ò SIr,,-&ÐÓÂ$\uW“ ¢"-DÁC£ÉRF…Cà5Hd¢F ·( ÐŽ"c¨>5÷ì}†P2°v7ÂÅ:¦ÐN#AI*+ÄaaÂë Cf­ÂènBp t$Ã6 úJäöÅX„FШæÁî@1 ÁéDáîT#êgªæ7Ú'Ži|©Æ6-’/të¢Ne 6.Í"FÄì"ê/ @4º¡ç0ñë‘$fI°XxÐN`}5®Åc§B€aê" € Ÿ¤~"I¾Df|Ü!âfAæ$æib-+cîà½,|.ñ"†`Öq.âòDe b5h=ã$$ÏzŠf Kèª., ‘¦9;Ì|2RÚ¡Ôb+e.éfRª(À„2Áô°ÒG•) `¢˜Š"`ìÜ?mü2¯Œ.C|"Gb‚×Ê‚bڬǎ{ÀD¬$PCìÐBÂD«pv‚ç‚c² `ÔF4'Ü¡¢F‡‰éu|,²øYÁõ7ê^ *¨¦yK Áð•'ŽieX6Áñ7ªVÆ'ŽóäRŸe&â.cBè.ÄÑm–5%XŽ—Î.žªÜI‡Žrôƒ"ê?5ÒPµHp…À¥:æù¾:g¿BÙ À\ ;Ò'šã‡Dn-ƒ@sü•ƒ?xÈkk;PòDÁàÍfÎqSi[AøÇ$ âÙ?b.>éˆrA À PiQŽ~Šn¨Aª"NešÑ¡Ö ,à> `(«Û!ÄF<ô£ @X@,@0Aâ`6áÚÈzbT   ,‰ÇN¥NŠ9Í6j ¦é¸TWênBÖ—Â,‡Œ¨iîD£˜<’Ð23XcŽ7–µ‚9Öê&¢aà;áä'qú q ø‡¢.C6¥Gp+ÇÀ†ø·'C²¯0EâÊ;#2¬äN'.¢~‚jŽåaän!õkŸ§ÉMH:ñÅ6A¥t"Öd({ðZ;`".5 5`¤j%k¸FLE›ê°ÙC¨jÎbâ2BÆ5(û g”H.7‚ ¸.£Ä#}'dH)¼9éê<-·ÑÁ‚¢rPBQe&AVÒ# h@­EN\L¦&{aè‡Ç¾r¼$â!X"Ë=7cþYƒÎ²ðF)ü¸"išŠÆy6 +‡pPuü-4H2þ>f:¤b¶2o‰b÷,(`àBæ¬ÂØ+JŒ‚g‹„$ÎÌ 2à^®ÌP«žNÈ@6ÏÜ©£È]áîÎwv2&)?NãýÖV eÇGö–õZA$i*G Phà`‰5Å’8"M2§ø܆’FæºN)¾"2\F$©¼êEÊyo=ÍWÛ€ 0¹úcF}XB1ÿ”½0Lbϱ‚ð2’&+È‹GÓ‰¢»¨äZObLL£ ä-½:F<7¬¥cIxŒv#_aÄF¦dâ¦t LAGhŠ¢HUŒhKê7¹§MâÒSÜ,TVg(¦cø;ü›à#¸… èL™e’¨®‚}É"7ƒZâ&- *[ÚRqÍQÃèBcŽ'gþœÔj=u’`ÊpåkzY"PÊÖZn·¹JAä2¦kö•=U Z2Dd.!¥;ˆ=Cd­Æ4% þ:$bMdá•>f"§ŽX¡þ)f zŽã" †?ž!F©mmƒm-À‡Úö…@x q¹ä@À’ÀhÀFÁëìÅÀâùqÐ"a€Z@"à2»šáj FzýÆè|….p€û?@pÇè%üþï€pöóžÀ 0üÿpõô}DoÐ æo÷ãø ý{¾Às$ ÿ@×ì ¥Nßϰÿ~‚À`WÅeõ=€"ï—Ìíôÿ,ÀJ˜ ö?  ü§Td·P8 åàGì–pŠ=^Ïg»áô ƒ¨€˜v+Aœ@À°œûçÀOçàV†?é ð þÕ/ïÐ0úø¨¾@O¨¨fiŸ¯·¸ î÷™À@®@^înÀ;z > '»Öb –ç½9óšQvw„9ø‚ dEï®zÏÀoÊè }€§ð‡¬ð™Úˆ/ªªv,É©øöŸÇ™Þ~Ÿ‡‘ú›.Ï:™7‡±ô|OÒšª<Ê R¸¿Í“8×€`3þ~©ëˆ­ÁìÚL&g؞ǡî~é(~¨jš®É( ™-1ð» 3Ù*°ºœ³Éî{6§£þŸ€ €0"çyøzÉöÀˆë‰æÐžmPžÅ‡Áö€\äDZÜÂÊ8¬¡Š”êÒ2È‘ö}Ìg°²ðä³àv !â, “‚z€-±þò«)»^|ŸçÑöó¬}" )ô‹¢à´-B¨ÙÇü·'‚ÄŸG¹ô'TÄb'§ùélHÏjÀ@«º¥áñ±¢.×]Ó;x§­Cp}9׃zˆOªq耶Ø7§°uß#Çào/ˆŸÎ)×vžáêÏ×éCx¶ÍЍµ‡¹û:åÈ„ •&®úè{-§ËϲxX‘¦Ï,{ž‡ñòz²¨c5‘³€(¡ÈlêBJX›`0Š€ ì?G´Ñ§)9ôz^ ½¤Ëyù}ŸsC¬¢ŒÐ “ÁjµÜN9üz*­5¢¦°Jà|®mø˜ß æVšyîÔ3È{^·–‹CxRKEL¾cGùÓgÙðÉàz>z4ÎX|ŸGÑøÖêlâ+Ø¥-«ž–µ ‹P/‹Ø 9ÈCj‡ãp¹§—Qè§²Ô­CîÉÛ+Ç­‡¯’£˜‚@øm.€þƒ€àOÈ6Cá±0ÿ ÐH,Þ káôö=Ü€É,@5$ '“ä ýA@€hCä÷z¿Á!X (/àøܳs3—îG3ð*vÀàãÕóð‘þüž¯Ð$âp}Îg€`(o~¿À `]^ï°éèù?ŸOð8ú¿Ÿ¯ëP ~`Ààò/` ( ¾ß2gËîvþ€_À,ø zÙ€ÏÇóý÷³èA[«><Àà‡³âhùzd@(/8øÄ¿"À° ÿµÙrZwØÍBg±oXgp—A'w€ÀO+´³ÇÊ.ÖŸ‡éâ}'@¾€l£¸2‡ÐŸN°¶ 9þ|l° +ð †,« Ò,3gû[àýÈÜÛçñóm;,Î Ô'Yö´E¨Ðåpœ€®C|Ÿ'Ñõà3Jƒë!øzÇÁæ~¸ .ÈBÔ~¬ $JäKáþ¾L´TÕ´úŸŽ Ђ  À¬ y·§Ñî/ôŠø (@d(Œ«ñ üý"À!ÿE€'‰ÔÁž28 ÚEMôgÕVSŽ[d~!”`þ­l ¶@1ô|áîz@9äøÇ𞇈{`4dBÃQÓ2Ì'ò>y`yžYîyÑ )õ£(+I °\ŸE‡ÝòÏà#:‚Àà È[÷ GÝ®~ÇÐ|3T¢»W|‚¸³-p xíÞ)X±çâÈÍ`B÷5(C D-™ñnŸ =?»ŒK,úÕr´F|žÍ9êÀ™ø‚‡ùæwŸG]òÑ K$ŒÅ@-Q ÇÑýN@KÒ{¯8“~~šÑþ‹Ÿm#©²,mÝF½Ê °E‡™ôzìö# 9íN90‚OG©éE"Ùu }_§Ý,Ÿód®à Äà ö{«gì8«ËíúÐT@<$s4F€bL£ AÌ M›NÐ ‚`X i‡tŽt³K:àÉ9|€€9ö~ǧÛ\º±*žUÁì²ÂkdùO¸­êòwÀ`©'’€zl½~êX ßg‡¤{”dº¸®#Ê=ÉØùƒÔÒ „šy€x#àBPv«øÃÜ~/ՒՇ«f¦=2£ê>‡@óã¨{g Å–Ðà|Çž@ˆ)Ä;‰¨‰ÃXfDˆj& ˆA€°½@˜ ƒÔAî=Çpƒ€~€š J`Px%^o|YCäVôÀÈ2``ð<@ ìYŽqœ/G0æL Ãz Ìý¨€bnb‹¹a»ZóGø2$ ÏSõ‰ÙxYýÁ—´*wÞ}š eð ŒMàÍ®g•éÚF¶c‡ÁŽ+ÅØ{à&øcÄrÁä;( LXÅaúclÓ!5§¾¼¨ÒrœÃdw Ð'Ä{ÈÕ¸C€}¸¥<Éà @ê4ÄÄož  ¬À¸¸žZÙ‹A¨è¼¶pÍ@÷Jˆx€d²  p«:eÃ"ÐY û§Ãñådñ N ÀL#‰éàÎEºrŒî[¸Ðü|®¼ˆ=X*B 辦ZÌE€R»1J±ãe´Ià6†ì†%zÀ‰ÂÈ#Í"MP GAï/”ô¤ É4ôÐÄY§¤\ š /s*¦Aú=/òŸ ö¹ÇØlµ}ú=€<‰y <†`=ÛÍKCÔtÁzyŒ"ÖÀ$Ž =Ýë† ä‡CXlDvqa"ä ƒŸðc¹W\à}@=úA0`€°ñ+«+" ‰ "zp``‚°.€øAØ-GPÍãœtÐ"‡` ¨UG²Ó<@ÌÐy `ÐŽõ’¾Rëq6`bQî>‹±ˆµÈLÂÚ¤ùº-…¬Zå’’­¹E¸Æ«cyJÏú!FˆÖÏqð˜øõ™K`ø©2ØOñv ¤¢Ë>РöŤKSHoaàHÄ{&ç¤NMµk¡ôØÌ ŠÐkÍ`€­êæX\kRÍ448 )?\stxhþïÀ`rûXbò.]âë"±Ñg…¯©HùJlÙS‡L9ñ×>çkg‡èØ v„ñb`L¥9²¥bo¶©à"¤,ÎÜ WÎK <×E\Ç !F¬9g͵ycü*÷¤Í¡x ›fO¶lcÉK&«M'šCÞNܹÈH\#Þm‡‡“zãôŽOs”vØ’yFQ‚\Ëuìû7ŴΛ̾‹Ë¤ l”IbÔl` gšCö>úà…Ò`è@¡Áà i²R`º t`*!üf/"ƒÌѨ"Í`eÜ®<2ã:y¤Â¥7àU#¦BBã`6K²Wx>Fº¡öÁÚXdr#BÈKCÀ/C´ñ Ul#"áîN…ŠÀ+âü Ëo&áÔXÅdS¤èa¥„G¤ê"êo‹¨ëâ*d'`‹|/x3@Æ–Aæ&j¢#Ž,"öÕã8$én,ävA NŠR#r2Â@CäBLƒ¸h>±Áî磎ؤ1'*X"¨ lðíæ€Uãâ2$ž'Œ|‹bâÊàÅ8€M& ”Váä,‘H?G>Á%†e¥°¼Fdú8&–çÒë¥&Äd夯¨&+âLeÊJ[¢¸;É3£(iödÃAkW «r1)ä3b46ŒH £V$ºf„ÌjÚPb·ãD–aú¢Aú&¡úƒã]Žè/$7C2eä‘Ðn'DúH&È$Žà"[¡Þ&ÊöÔç 1l(_ÇžAê4%>X!ú&´Aâ«Ç2 MÇvd\ÁØ' LÚ†dL‡h"R€”øNh„À$ˆÍh(!È " @àŠ@4aæê|m0²N1̯@àl 0à> ö€ apáš!ÈáöàL8,ì-cdœÆ¬/€ä°²eôZdÊ?ìœ2!òs%pJ tu°ÒâØ/Nœ4¬H0¨KCâ>ª,ã¾èåVX#ª°RÁâ ÉÚ—ÂvD'T-bp0‹\9 \kdbÎB‚çãB.€ (R+4 "³ Ä´”CD»®`XdŽ0ifC± ¹ .Z0$\QÂô¡J";ÞàðŽ9bè|j0"¯C[ÃêeÅ>™DÜ?PÄŽ/áüÎ"à ¯µÌ3‹Ú°MмBc.-Br‘DíJhd!ø[¢ô'›¥œ6À,.„¤;ɤÞ,G£Ìw%ŠAìXc@NK"¬Ä§À".¥  j%V4€hl^{`€€RŒµÑ>v~~<ÂÆêåaDEüN!ù £8M„Ê7Ìl! ¢KºV$ ÿ#ÊW VÀeFÎ7g6BƒJ0Š¢µG=Ãyêœ+¤6-B1?kLt„¬6‡ ¤ôPæ(f$äÜC4Ö%ˆÁèÔ':¤TN"ʆî|¢Aî/äË¥d:`v!îáØÆB=¢Ô‚§Œ¨"hƒ¬‘zž< HlæÒ 2`$7ÁÜJÒ:–ì4\4‚â=åV2\+…Üd&(,ƒê«ôºqô÷Ã|³ƒzfqs:ãf$iѬfÀ´R$zÂÒœÇDB$G@22 C6?L(;L/¬ (ä .nåR’¡è·Bº.À0"RêEŒ¥.¤BŒáOb$ÀMo©À (Ü@Ãø1óÌPLY"Ö_ (ª 4Áþà aÜJ ",à%("ˆV)cøL8wì®#U#°r±Ú#¯6êôðBNäv æq=1C°+…~7Bð7ì^6lš€>sŠ$TH¬¡ÊÞ6D–‚3Ãz„%RãÞ¥VÔG_()Î@MŠJô„Z™ÄN6 ›bÈ0‚~Ò.`ãDƒáèÈ‹F€g4·#5êÀžC`¼@p`NÞF«þF²hˆ¥ºŤ‡2|DÂpDÅ †± —õÂr2’œÌn_¯pì,AÈíÆ%àŒ€:CØsi÷>Cô@)R €Nàp ß`>ÔÆa‚X` ,:dZlï ƒ&s#tšE„5ãV>•¢Ä?EßK,|@‡ž7d:A¢rÍ#BA¬¾Ñ„µ|ÆR½¬„2LD1«º:uv&áæ{gÔ6ÃNX#R#ØHâ+FkÄ‘C4Õî¥[Å’å¦b½­^0€2Ë£¨-o¹ÈXd# Uå@!â.Ò6VŒ^‚ ¾Dd¿‰òÝk4å£60.à$ÅéÚKä:öm¦äˆ6„Ê@¦ŽsÌ8l¦ $EbòŒ †X«ô2I•nå9 &®ŒCÒlm‚# î¬j§r¬$Ìc¨%¬ÇÀ b!ò‚üáá&!æWà"ŽHˆ‚SP€³G]Ê¢ñÂ2bJGA¤tÄ‹¸/Éf+r#nNdæ¹Âpe¥p.D@6#L-ƒ8MÃÀkbDdX~32ãê1Ä@v~l2¬lédF5-£iB0ÿfn®Q¥RêÅÀƒ":Cëô³Eº( Åd`¶îsôT1Bbz$çÈ[Ov]C´ä œbt#¤úpáôŠÂO¥j",J%jä{aæHêãÞEJŒkEòSã ='›¦R5ƒÒG` *ö,„Nt$RBvê •áfHJ@DÄr¤Tö¡Sª€§>Ö#T7øÖ#âQEį˜^¤­£B43£ELl3Ôzd%,”å"žë8.¢Uã°Â„©–Äf¿$£z1Âe£dÁƒ¨:f&ăÚl¹f+…ûÈéžt‚ÂjbM™*4$ç:,7¥ ÎàéÜK:vb´c¾?äØnQ 9f°:åDh*À·B~/Ä2ÌôdÔÚ+óˆI`ÁÀAȵ”À6ÉK”¿fí£t0&úKB - 8jôBúX*br®=6«»Ìãáû Âé$EÀnF¶#(uK»cZzD,rvEXüñº^,1¬€(2ìdzHIJ¹DØ–b颸äB1‰”ji 6ƒKœv¸K2(WGx+\yðSñ.".â3¤À2„âK"Â5E[Òüs&RJ'¨¤Š¬f£<.ƒMƒ¬¡Þ1är»£¿´¶Ä@ô¯p°!äDpaSãä1"nÇÆÒJ,"?J 7AØ-¼€BÐ,¦,dÌlc‡U &*{h¼+à, " &ä5BÖl‡XÒ3-@fÌ0be~E·è<;0 “9ÏC¨&¥ `a%¦ªÇ“C¸:% [¹^ÈÁýf „jA«>VA&ñà!eÑ¡DŒéS€Ð1£›"x3ÂYsnw†Œ2QÒ Ç»µøø€Á` 4û}€ßoWàüÿŸï×è ü¾@ gëÑÖïxº¯0°$Ÿpkô-j<¢` Ôît_ÓùÕy<@ð ƒ>¥ €X(¾€ çëÝêz¸Ÿ‚`€rH…oWÀ ý€¨àP<…ú|AƒA$pº€â¡bîf/ÇàX è1 ÙGD·ûæt¿òà7óà v­àÐõøþ‰€ô@@ °ü}Ÿ‘€ þ£Ð@Góéé®z>€`§ð ©v£ëê`P„Qìü†€:Ï®³î.éhkø ¥€O€6Ò@|¿ö+®—†>€À@6 ø ` €¨š|á®Ñúо@!þòÎ@ }Ÿ‡à·À+\Ciøò®LÛž|;ìÓâë8Kiò}qü‡Øà© û'ë‚’Œ§àu €gà zŸ`Aî/ègº0}9o´j¼ŸÍaþŸmsx~ªHา$}6`*|€ )þ¾Íä¹ ž ‹ÍPÀ@{¾ !÷@B"|‘Q掩RÐ ÐC`:·Í@ ‘ø#°R0·€`9øBÏJ8~lâ*¥<§È«€‡ÍBõK~ÕŸ’Ü(û¯ÌÒ3ð{'©îä€à07‡ð ¼ b÷#Sò:Ö¶|î±ä|Ÿ`ÉUÊ€}ç‰úbgÀ*sÀ@4‚€À ø$€˜ IíD{"NÐuK5Ÿ(aè€ÀaäG©þ|-´‘) MhQP«6=Ç•{žø{TÕFKiåhžrÜ %Ÿhò’£r‚.{¶vh5(,Çñòv¢Àqù†P p=gÑõ-ÅlöPð8uÂ' £«´ž;ŠÃ°¥s@}Í5ØÞžÇ {¶–Aù7ÍÓhøõŒÎ{ Iì€;‚üËœžyŸ³b'“µgøžç’8z¸< ´.c.~žËy÷o³j ö‘ËSûïjPôõ“€,Vzq§š>¶€( )l–y€GÑóU)žÅŽBŽü'Àú|iêÙUÐãg‰¾WfŠ=mÁõ‘ØT¨=¹úyK¼mÖ=gñíˆàaý§Iûs ´gÉòÛÍv£MO=FÖÂ*‡•97.‰ê(v$ŸÓªU'é¼~€4–i õk w°;ÀHûd„ü€ÓÜëèñQCÑE0žá¼p zr(GJÂ,¡Í”ü<Ç ñ‡c¸{âŽÐ€zD} `Œà€ P @àOøT6„ÁÀOðýü‚ÀÀðH4 }/Ç»Ì÷q?¤ øÔˆ! >ï d(€‘Gëùò ÄÑÈpì‡ÀŽUs¡ºq»A°›¼(¿€  ¶þ_/GÛõðýcYÄ 6‚@VóõòÖÀHDöÅ€@`~>Àó—Ûñþý~>_€0#ô ~?@ï»8ဠúý…À±Ï÷åà ¯?ŸàKà üºê` X>6o·³Èþze4@€EåøX4¯Úæ—Ïd@'΀y?Ÿ+{×Bž‚z/«›ë‡Â€ëó˜]æ,ÿœ½À¸÷¾õîÀ اgØ  Ô}+ãú¢ìŸÀ ~à9ü5  ô­­x «'ÂðƱ`ÙŒ;vµ2 Éò|ŸçÁòÙA@RÒÊà2Þ2¡ôÒ-ì( L9ú}ŸÏBöŸGà}g°}I€ ø¿+‡ó^'À~LØ ßŸÀP~lqîÆàê€p‚R¹îÙ1Çñ÷+Ï츠§Š|{ÏÔ’ü€0}·ì${$+q ¸|¬§Ä¶€ h Ð }ǯŠßç¡ê|§¹óɯÁ躴‡Áôv'ÕVœ4̱œÇòmÈ|žè€M@ X$ @è,„ h` *®Ø ÈÍ9Ö~½‡ø‹, 34µ°}¦`À@ §¡ät_gVBÕ÷›.è;pÏí²âźöKQ¢ç±êÈ8Qœ€|€ P¹‰Û–# 9à~3,´ÇÑþÖ C££Ÿ§ƒ¶z¿ –²hw¹ù(ÎgÞÙé+çªëMèLsPÜ/mcŽ- -s=Ñ ò,$ ÞçÜT|@:ä~Èú½´ðû£€ûkМ͜yVÓnä»7¨®a°nÂGÁü{MB*ì‡ñëÚžo`º`mÀ{+mkäÂȺÌ{ÎW²€¾gâ>Ù‡áÚvŸ§¢³Êè (1gÁ÷LQ³"|®ÇÏe³É³·1ŸµÔ§ b0 GÈ=ˆ 6ÌI œ4þò‡¡ÂHeí4RðvGØCëÜÚB(ÌãØ™ñà>G`úè|€ÄHžùÏ@ =«±æCÍI†)ÈÔXAR@"%äíœs(@@ ˆL‰€¦ =€øÃì À> Â8!ãÐÉÈxeXCãÜ”BÀãÄ‚0 8…Xá¢àoðì)©¤¸qÀ3VÃè{¥´%Hch4ô8øÇú®4§@$y^‹f3ihÖ÷:aH1äàæ£x“‘"ãÞ#‡í$ÏÙ¬Kj°’0`M+}"„„ÃÈ8Qð6j¨á),bÀLy‡M@‚µeI Ñz'm$€tX ;²(Ý;døF ™Cà‘¢|—)ð2h!¸éY@+V:IÝï¬SxMsÈÛ‘‚þFY{'dv‘äãá\5îtQþ;¡Ðñ6mÅ ‚…Ÿo•eð|€C(!͇Ð`º³çf? ¦HæT®•ı9 ÃäØ~€“p†WTx7ŽJy5g”œmr {+”–„åQƒcà6œœ8Ùéˆ ¥¨Å´U<¢¤ &ƱÐ0>À”&À “Ôä}êm­È˜îÅThÒšä;&åp2J¹ €@ CØnޱò9ÇúI´[Aì>ÆÐõç|SN; 1Éæ3ð,ÀhA@$ E¼³*Ï ÊñåNJ ïØ±ÌáêsHõÀ(’v! A|^éÜ­¢C&cÈûˆ ]1ä’+4s¨h¯˜ò:Íh æüQêGHð`,|ÀÀ­ 1ÎÔzÒÊetòmªÎ=“pD©qo$` QÄǸçhÀ8Þº¡Ò:‹@ñ ÊK4°{aÞÒ Ê 2#Þ>»"Ò^ 9ƒå%† ÌA:îÐÜ>†<È¢ ‚çLÄ“Z?T&o¨({MÈ8a@jiƒ°ÎO¢ØÀù`E„Q€ «¤ÜmPé{±³㉢ZNÀ¨’/!P9hxàš€Pî ƒ¾ž'öŸæzW5H¹¬´üDÇëÄ'à‘å™qh…½êEýÐ.¤]t‘¡Z@NHIòÖœJ<ä(ôT@#!9$†ÄÉ€‡@ £"ÆÇqåÚßX‚¹IÀÿjĵ»£IÁìTåÐh´ÆèGá2 ¨ØsaA̘€|òwóL¬¡ò8Ç©­!»/fLÈnC!¶ÎNäL™àÀª)wÆ5Q¡Ð?°MØ%‚*;éî©-H(œ¡UH=€H €ˆƒ€:¬X%Œâ¤r ‘d7Lj @wMLEÁaN@% gÏ–Šâr=éÜÃ%¤¼î‡’‰e ÃWbÔs®Ð7#ðl‚–GÉ!Ôs‚OE«×#½‹|Í‹O(º³`¾©Z”$O•`D««P-ã„ 7¼C œ2)!ìB¶È›JA€”ÚHM:à'$P„’²ÿ¯Á¿f4ÔEP#P\­^HíD:[Í|=Åܽ–¢æEÌ wé¨K­… šó8Êí¶$tG‘ÙyE¨Ò–“~?ÀRS$…¹LD®ÒjÜ2©_3®X4j‰:~2X~ù‘üÐúqíe ñMª~ @;|1f?瘲ì©-ï)È›2³{ˆ±¼sG±Âê=ÙÂLsa #rɘ Š~>Àà>@W%d°¼ÐiÈûp¿“´$^ 8y‹°~‘ø=‡Y¤!ðæa’A K´±AÀ"ÈÞbÂdC£¤ ä|%¢àR€f€€ ^‹AèÂ.+£\’ÂÞ­`´â梠 2¡ô\â" $À¡þ )ò3ÃzQ4nL/ú?æ2¬¦,ÏcZ@Å4_`f¤h.&È÷¤ªaâÚôààh€À àAôäÚCcºwäî`¥X nA!ú‚z€\r r0!Aæåî@d’^ãFdøõéœuâNWîå4ð„20ÎTaäãoîQ£^ÎVÜ."ò-¦¬ïäz§+V+÷ ##E¨46@$-(L¯^ˬÕG´ $áÀ"q¡à4¦À+C|iëdÈvm$F£ØqÇÄKJðȬg¼ˆÈ€fãŸ/î.Å4/-4¡ðAò  DÁØ6ÁàACDm£²;gwN'¢Ì9àm¥Þí$¦lw(‰"ä4C¾ƒzIõÕâ 0bzcïÖW(9¢øô#$FDz\à¸é°dBnÐÉ ÙCÙ#©Äš+‚jJ{-T0#àç ¸ˆúQ"ò‰# 3!öˆ Ã’œ ª#@»àýa· ›(b†Í !¢^âÚNB€hÀ"…ÀDÆ67 !ÒZ–@l JAàg KchAGü!„˜ú€J p` À¡X¡’áÂkÀ0Ö-ª†Å"2ÏÌS+œA"ðADî>Djì4Fáôv¤˜r"&Úâ*0È´\ËMí¨5(r#'p«€¼§Á,Tl{L`$ʈ@ãP–!òÁ"þ­#$:lÚ²ãJ—AúƒpàÍT/„*4r0ʾr"ðx€FâÒNc"£Ü’Áüç@ªâÌ>PÒm¢¸JöÒD¨ëÀ_dnKDÀ[c»Šö#~/cØC…D$4΢BC8@cí9b: „GC‚`žÀbæ"À\‹ÄwHtJ&,Nä0À# m’Išo$ž@/†6"ÁÒKNIbÑuö<~ &m¥ÈS "7¥§C¥©à.áâ2gí>KÂÓ^赆eÉŒdÒÇ4$¡Ú3!àã6KÆî(ò] O+L+‚Lü"ë72D™Y¡ý›æ®‘²þBͪ!bïgB(~€Ëà‚,µh"¤ fˆÏ3ºÄzXgè¢;¡öäZÏmQ`  ,N¡à§¨ ºä£ Š÷FêXVt)n¤8,%MDè$_$P•I1š+Ôn“ÂêJ( cd$‚)<=”)´ä>1m4™ÁàvFG:µ<à&291Fj5àJ,IÔµàÀ<€t À!bÁšÆþÅ®à&Ú®6N Ês¬Œ!&È"¶Â4ìêA +œÂ+lt`ή”1ô¦†ƒÄ¬´9ãt4©9cÙ9cKX‰@ãP°&$$ÑU#£!#hÃä1 Ò2ÂÀmXò‚6+#z/eïxÈ„Ãfc ‘£Øf‚"5£·ƒ@¤îz'j:êì=äÁc"‚dB{Ç:Cb¬±R|F¬ugÀTГÀ,…01§ü¢Ää+cÃ:¼(ÙÝ»åÈ´ñ9¸º®ƒ3’S¬¬j¯j+KƬ¶ÈB¥î6D/Rb-,`!4@×#NmI"ÅÈwtD‡f"ÉИ£1ÂpOä<1cDQÇÆ-n"â4*îÃ,,£ >GHøø6L@U„´<Å›€ y@& SöEÚÄT°â}ÈXâ#hƧÑopuhJ""#ö âz0Õð–j,2`§áÜaÂ!ŒÐ¨>AÒ‚AÂQ¬ê+4¥0ãt0f@‹¸&t(ß‚ À` À‚à  6`07Ê ¤§Ñ[l&¾0õó°Ô&¡æÊlà„+tr‹¦1G0= –2¤x4’1¤lB vÞ5í,J®Ä€ ü`¡ï ó¦šn:&€ LýÖrŠ0qÖ/¨B£ÿ_÷e"~,ãûi*B@äFŠXgÔ©¶‘çÀ +Ø;2'jN‡<¤2 ¶Ê0ìîåZ¢³Õ#nC)=æf â.·bê0å$8îjf\²ÕêzHðd|Ëã˜-)^4„†¯tS…iÓƒ*.TrL‡BK¥¥É‚¤Ê^¤åTÏît†ÓU¼§XI€aaæ5ýµŽ"0' Ó–î-æhl‡(/)“öK&À1I¦Ò€ Gðæ}‚oÀ@ÿOWð þƒwàòú~@qðH>_§Ãñüþ¿@ ø +¾^/'óáæÿF À;ñèü~½ÀùþüïÐ"¤þ=éO—óè~Õ¯¨püû«ÞWcÍîë{AÔð@0 üÁ`£yèúRoïûøžÁa°wù–+„ÁbæX 0, AZp5þû{F\ï°¡ @4"ˆ‚Ïg³ìÿ~¿€@=>^z‚ÃPàl ¼ÁÂpK¥dæf°\nw¸Pä€ò°H—¦`@eV}á°ì& å¨?ü  ‰ûy@/úx ö¿@“*·säü~òhø€À3âû>ÇãÄÃ)Nøìí„¡Í€ºÊH²@ 2i!â'«:`2!½à›A˪RŸGÈ€à(+¨H³OÌ€¤¬Ï¹ð|?'¸ €,}£§óü™€+€@CpŒ¸R`ªí|ÙÈЧg̨ŸGÐG«,}ÇÕ1J üŸéiö‡X³a懂’¼€àXžï¡ö±hÀ;Ð L¬—Në*î#r¡ú€êH€T¤¨}¤ÀPˆ©Ókô|= W`Aþ{)Ôþ€`L€lð"@òÙʱæIdÞöe¹&Ÿñà ~* +/ÇÊ»OŠN¡€[ê‘ú|ÏjI=õ±ûOÆo±ú)gÜZÀ0˜(w€ðzEY¦n%Éà~iÒüF§ñä+#Z.›~¾¯X•¨§¢zœÀ(-@œ€pF „j½\‚²Éêt¡ð“Á'㸧³@IøÓà{¬ bvUKÌÂ/ÇþI ø˜éŸP)æ•Ægè9 –sž'ÑÎyÁ(×@*PÓ·&¤mtlö¬Ê0 €  0Çyö~Þ±„|€÷‚ŸH83 ÀBŸ¡Š®_°F2Z ŸÀ8îrÊoOç²5‘K:ˆ ½úW<õi§»a|vraKŸ*¡ÿkyÏÈ©”è~€ÀÇè@,ÌŒîŸä}I)Ð ML`dîÁ'›Ê|Ð RŒà•ü|€,ž'!øéYz!ì°‰[Ϩ —’áø;Ï‘ñME®`Usøtãá €aþRTJL|1ôtɉP>Œ°‚›hù. Ì|Qðó"ÆM#Й pIHüWg©K:0@iô%–“'®kÙ8ýzë¬ÔøöÀ 6 X¤f“á°ŠŽy“‘¸KÇèùsgý•Ò’GˆHCðuGQ̺@‹ý`(6Ð÷‡øÙm€€øÿBaP8H‡?aÐh!‚A €`4 ?@§ûíðz:_RHˆlG†7Ð%üþ~À€09{@ƒÓül$ ½A¢Àc¡Väg®\n<î€/—ðü~Ïð+ò€âpKT']AÀ `( u~¿_ökÛôý¯Ÿïà0ü½Ù«°çð€P ù÷~¿™˜ .Ài ÞºÍìà+í÷›€AÀÀ(8 ù|½ßOǬ` Í€î00,øþ~=ïO˜FâÇ<Ÿà«îw¢ïÇè!úøzÖžÀ`UÒw‘½ßø|ÍqøüËØ`>ôùú@úLˆvŸ`[º±'Ðzàê¯@Gð€§°ŸGéöžLk*ÇòЯ4ÀBд‡¹öÜŸ0»"M‰ðŸ òÔ P "PÜçáð±­ `Qú} LR°ˆ 'ãè²à9ñ§,þ}oÈ!à@xgéìŸ !ò㟀X-‚ ôy¬GÀ ƒ®Íyöº 9îºN D†Ë«jæ5ÏÂô}=n´^à@+€R¾zŸ²ˆ³Q¹ô»€OÊ{¶ :{±ÇÊ p€™üw›äÙ tê¦ç£ ­JGûDПì-1 Áøò8 GÑÚËïЦ €@l ƒ!( ÀگǵX}€Ð¸2°€ƒ„€OJÄyHr¨ ÂÇÜN¢HK~K‰,ž´S5ŸÇ©ðëK€XHzÇ‘æzà8 `€Ó˜$ÎBk´®Jçø´ ;Ò{§©î~¹Ý–ÀRÞ¬Œi'¨K¢|¡ º¼rC‡Bÿ11¨1ø{gù蓟§¥ÞÆ× &žÇàñŸX}¦ËÛä2±ÓBÀÌ×°à4 ~6/HÌÍçáàz8À ° #W]àð¯/ ºHòŸ ŠxìñO†oʼE ñùóHoVK7È4[¶îlËÛ€’¢k\äÚ§ñüÙ1K<’ sRyžçñÚ}Sà ù;ŸÀ:ÑY‡£]Dz‘ÑþÀJÇà¦@(z}s+3ßç1 õwX@}7§ÂOÌ-ZËçc$'µÞðŸ`iîÄǸ  !w€´ >—ªÅL¬´–€ >@ø9‰ìõœSr’àA”y±ÆóÀ›z¤ª —FÙ`D ®‚(BÈQ¡jÄ‚¢Cˆë€<ÀÅÚåQ£Üt«–A°H`y II'¥€" @àû@ à À 䣴i‹!Ö;Àpãñã@¸»Ôù~o€ž˜âÇ!z!&,®“À–‘¢' õ)ô ö‹@qç|ƒ#PˆÒ`¦ñìeGâi5¤ôž‘" Ì€š0døžœxö©LÚ¬BË<÷¾e—úœ"åiàdP;XÆÅOÈ!õÙÂwŠÀ{Iuö\ ?À8ôB<À BNç h“˜>ÍÒPT#ý+ˆé+€#k&ñÙ—söµOò¡:ÆÁšö×8JÐûE¦hÐcôÙ¸ùqåÚ;– nzå±'‡é/,dé6 I±2åÔœ)e>ÃÇ¢&z)4º©˜€‘ bŸˆþ›ÑyBçÈÄ,Y’>äì ËaÖ¸ñN\x@aæ@º„s•±ÚŽÌ~-)Ø*3^Ï££“ ¨À ”oà0ô‰˜{•ã¸?Çy“&P³@n‘7>p½Èq$Ü9÷$)lù¡sî?ôÌUdÎ:…XÉ"Œh€=ÙbjÏl‚–‡ÔN‹CÌ&ê0Ôsh Hík#xü„ð8?è7@”@n û -¤®X«Î@À)&Qh4oMÒÆn€O2ì@̹‚>o8é’)ª›Ð <b¤ôìA OÀy@<É( Ãøל«ú8S…í—¢º~‹ ;ƒµ9 p™·M}V-#ôKÝU9 úó¶‹Ì:Œ3`#njU®L¤üœ€ …@m@!&S¶Ï•PýãP2'ïl‚tt“M*rCØ›°PY†©xÃßCÞOá79J1³âÔ=ÞHÅ|Ì€ @ÊEà%¢·DGœL¥–n¡ô‹^*ªôûE:eË2ýÈCì¯!òW¨ò>cÔŸ€Òº½S8{f¸E@ùäz0R"—)9c€†Iº(C‡ÛúOX€„/-¡XÏ1M±Üó¦q¯R8€™ óÃàxI`¥æP/&h(­~ ô˜¹ÝBÂ=‡Î.³ Ê5v²=ÀóC¡ Ž!ö€ ØCÕd¨ ?ÎÄ!¤';lÈ`BËI…ÑîK£FmUq¾&)2" þa0ƒ@”ÀÛ[w&.s²»ÉÈì `ì Ù€FÇ8Ãðr ‘î3E¨õ` !àm‹Q_ÅÃéÜG8êAH³=åx·3²e €n³µG‘#zÈ®§)” LwH*LÒ†8Õ>¦ª,95[C.òç4PÙl0Ò ä”rhGÓðSåpž –å Ùø5t|#aò0Iƒ¢ƒøxª¡ì=íê_ge䣆‘=T1ѽ »Ñøþd𑚗¢a‘þI£Ì€p"—À‹äp¨¤¹€p%0 ÷ƒùP£w'u%s|ƒ¸}ޱê?aŽ=ЃE2»Ò?.桸}Õ*-.]Q%Å:HÙ¨beÄ–„¢…R;.. @ÆŽù\+AÐ:aÀ"@’¡ølà`à2ç€Ì…¤-„¤&ÆŠZ¡ì;E,{äC2@ ˆ2ãB4‡=dfSæø±o¾šŠ7¦° &G@¹ ¨'ðämˆl¢|6ƒ~T#tB+ò5'Þþ¢¾}D;À¢„Eïê/-f+ƒp/ÎüDC@|ãÒ+áô’ãKc62ÆìNZÂdlGô3Äp<¡ôÁ†²#2ŽâÈFæ”-B|y‚¼-BâJà9†ø1ÂÀ¶ïê$ ìB ×$Kh„ÄÓ¼£æy…ŒL¨ª:©ˆ°£àNBò0¬$w!òH~mbè„2àF´-ÊÒ¥\Çc¾€†ôÊi¢oƒ`ƒÞ¥ 2Ã*2qHðEä¶60ÀpñÂd,2£¬-ÊàuÃy 0‹hm¨$˜‚z{äXtæ2ð„:—æ5í0fvbªœúræ¼~äº@†èÚ.‚qçä¦b•ÀaöF²ÁÜB¯t.ä Iç(5 1¡êT$Ò`B´ÇFzK¯Ü!Þ!ÄØÀ(F¨Õë¨E!®mžÚ¨^Ùhb £O&èVÚëF#j¸"C"Dò áô€žàr €DçlΆ^®²+Bò!â–ÀnÁü`LÚ`^¡ÊÚrAÚ€$Îeæ˜eZQ†ø“Ãb4GœB (3C.âUC*± :cT……N,eJ,:ÃèC‹vƒ$#Š´#æÖ,‹D$CR"²ãG¶0§¢Õdn/âº'Tùô®È Nãb]©yàQú£’òóf¥`ÉÄ:Ä9.JC,>Èn¶ÇÔ!'˜å`"(C"úÀuGÔ.¢¸,² óÅ8Ö #æG䎒îü ÃC$!ìaäÒqîôNé\’R˜»Âö¹/êõ3*}BòSÄ $C2=m*IãlÜÖHå }âÉG¼.ä¤i‚„/éTíD ÌŠœ`ŒÌîdŽpà?C„Xò5§Ûì¯æ=$B3Cò'.ZEBo¬Ð'.ŒÜ0eŒ{t>?Ò ƒªR‚ô&Ìæ'ïê5Ô\B¤IN$è>„t™‚¶š.±$oLž.&nqÎe‚¾böÌA ØÁ°Á"àfÉE"º'Î,š¦Péƒè‚42edÄicÞàHà> fÀ–m4Kè‘Ç&LÐÈ7ã 5ì„ÝÓÖ-`.bâ6‰ü;ó9…Ú'î[6c ‰§ ÇhF6Fb+鶆6Bl&XGô'¶¦Ö¼ï ."¸7èè;(è+@ VAïCQH;Bè夺/qÃn4ÅâqEÃ*G"yâÄ1~1³¶àê Aú p¦o ©~‹hbC&8@2Œð/!ð7j¬ãFö’k AGN&ÆØO"È©Él¢ =JR;Q–a°ÐMFú¾â­ãNM%Û]­Àœ#\$…•ɾ(DNè$Ê=â{YfdÒ§0¤âü–Æè΢ì›ã<º†ø’ïø7$ÎçN¾…ön25;ó{Kè}ä.k%¤ZDZía;ç’íbî§ŠT¤Ö'êÃæ’ä^ŸL„S m‹Daä@ 0mNÃ"¦±áà‚ ,=m>º¢È3U¦Ë°ËƒI¢ fó„AìÊ"Áð3È´€"9 ¸IAòã'Ò|‘Âü!‚½qˆ\ M¢A eò"PʹLÓaÎ ( ÀF@š`*êÖ"ò,"_b ,Ï€hÁþPÁê`ZÎaÆ!vaÖ $aÐeîZ eêš"Æ0®’eT¢î¢KÄ©iZz)lä :dºTˆ–ÂÅ14Û:#,:iÂ4+·Æè' @•Ê/Cä@Â~-"ü3Æ|\² D /æz, l6`DÂòle‹¿#´Y#aü v€Áñ"ŠÕºY ×#™k‚â-1¼0´/Eê–ÄšXÄî-Íf,g5CÉ®bCtgÅ\#é(h 7HP yæ'N}C˜’oê.3`ì‚…F„¢'˜Büí0@"qäâJáè63X,d@Ñ*/ÅB<âvÁ'‚f|2 %1DÎ{m6¶…\qNIB»*ëÎLG$Fóf:‡_Ì2+@ÒÃðI£L¥Þ" ˆeÔ&R¤¸Ÿd.+H¬uÄ 7$.c&wÁäGF0…¢C¢ö+°n.… =‚Oc˜N€ CBí’£²J $C.Lƒ´tf¡þ!˜áÌáâÖιöÈ ‡j^£B,ÄDqÓ8,R3I&„¢î.¢Ômc¬„(àXš ( (܇©CðÌùAö¥ä÷â²$DCÑ·O¡îF£"i+²/ÁÞ2Ä;rbºyâ 8åªh7#Bì$d #„Ì/Aâ×ê@0žðeÚ]D¶.•d)Ã`Lº>d2äCâ'üBâ '„?|b m±B´'¢åÅ ž0f8&ì)%ÎbDsdãæƒ¡Þkâ`2à•  xlãXö‘H$ Z¨J9‡+ÄžKŠJ5C*1§¤Ã:+D{øbæc@LåÜP ¹ ŠÈ=#vK‚´J¬øÉŒ"áƒ8éƒQ®¤0ÄËcãeñ|P¡òÛrö›ÞmÃbtáç$44’t\;D—èàz'.&ÐØ,òzHz¶ƒª¡ððDî™Ã$й„‚ 2dÐ&h,Ã: XB™”ÁψÁÌ¿Å4.€Â…Ê{¡¼+—º­ !í¨…èd5 F@ P¤ª,`Sö¤ò‘s CtDè›tÛe.02Àpà Ljd`ÁX¡˜ÊödÒFÈéžBÈA+i.é¢Ä.¢þ„¢#æX=fhݰò‚&ûl¸' oIl'cŠéC=|‚K˜äbMŽ·Žr'&ì>tŒ V¤Häžmbr¬æ:` ZøB鄞·•eeáÿưt„<‰áýK””?ô-%’'†þk"¼¢¾k#Ö<­´$\B¶RÉ]â0……†°í[tÈ…UL²>󗆬œ#,Í5ܯy3f$7DSX¡øMáúH£2†X|Ä.HhèÂ2ïÑC˜©Ræô  ¡èùØJx=E*4<ÌUÇN@ƒ.D®OeøÁKi»¡úG¡õ\΂13K€™Keoq ‚$›  tŽJDþ<í]èfr,ƒ€´;HKe!Í.p-ÂrÀêäUÕ!ØSŸ ±ÈKd<‡ aÄxaêÈá°Áæ£ætãb —¹£$îÔñÆ8Bv8ƒ÷C… sÖ`  ^À® *Wà2Û4bKø¹Jw8÷ìzMIãÓc’LD Á‚D¬F€â RÂz3e’Y"nŠÏŠ3âEEÄ82cSpáÐÀ"°@*! 2¨¡ÔHùâ$ä¤7` Z€äjjâXXGKà,«„©ÚöÁëVX ´Î1Óýc¦ÇëB’cPSêzÁæyc"ÉãIØèSF,–dægÇHÅÄ:qè"'À$ gfÞHáèÌ€ -– £.aàBŒåKÄ0†ËCOŠ Xdw&ãB´ê <4ÈM*‚ i!ìG¦zw8Ç!Ä¡Ä* ìì|ä,+â-"qdä¸6%F‡i"cPê² ‰íÀ@1ýÉŠŽ‡3G¼,8gÃÖšÒIä¶¥:xV(RªÄWÑ!ÃÚFÊCƒîê 8´#¤QiæAc¾rã‚„Ñà’% >^r§ëùä½ €GøòFáGèàFz† ÇbÉÌË`¹O =Ò €O üü(1Wìáúø±>ä@´ý~¾ßÐ<áõ8}¾€@'à @‘€+첿¯Çåj¼DßpgóújŠ€5·ôáÿ•Ï€ Ð ,&|»_³ úåy~¾€±yàðÿØ¿@ 0 =öÏ< ú ЂZ /ïgûÎæöx¯  û¿ûÑ  íöý{?_ž 8%ô ÞC€Ó×öÌÕ¿Ÿï‡è$û‚h¡äšž‡âº@@~'Èš€-Ñô}€€ Iþ­'ðœÑòØ #V¤)ë0{ˆ¢tè¢ÇØ |>  ¾ ò¾½6'ŠîCÀø€IàÈ€ ,;çÙêÜhp SÛ žl©ð|¿S&À;`*ü~€€;Ò{ŸR‹ô@øÞŠë¡ ¾¬c'9þ|®'Ó „âó€'È à[ÂzÇÑ‰ÂŸ€Å ³@H o-0Q§ø½@¡ø{Çòd…‡²°éa¶EñÐ|g9¼ !ôÆJ-ÂâñhM<®¦§»?XˆP$kõ.ƒP â¨j‹0~`x.€ñê€ì™øå3sçR€®ˆ3ÂD©¨ ý<ì[ÄœÀ!øz¶@;x ‹½ ,‰ö|Áü‘‘äò‚ ôÑØB§»×8ŸÊÙìLÐ$€ N^v['Ê)€.ò{Ñb) FGÒI;Р)ô|7lÃHeé¨ô;ö“õ$¡ÏªŸS+?‡9ÿ}`–ƺ€gÑíYZMºÀ!ƒH=MÁø}$3ïCÜã¸ì8ÁØ~gƒŸ@ Ǹ&Ÿ‡T"wµ²U<¯@Qò‚g¹à ='ƒzy9kìLÁ)0ËÐcÒÀ%§Iö{Ú€ŠçóŠi‡ÓuŠ€€0¹Zì[–¹néø,޾B«c5+kkrúéí3ž¶Ì ñ¥/‡¨š² 4"ï€6>¦T­F €¨>À‰Â&Üz–@H÷:‰À㟦ú> šsdEÄÆÒÜ“W‚vT` 4‘îÇÐð…°w$ÓP“H˜ú¸}ŽQÒ@‹b `—ˆôа„CpB›„@3k´ƒ"D©=Qä\€Ó|ÒNq@Áè9‡¸ àŒÐF‡€óïñY0äm ©?e Ô Àl Àý° Á\9€¾c¬~:ÀZ£=E…¸GäÕSÑà }–‡šµÕY߇|þ:`ë¯på´ÞŸ¡ê¶YR Bidü’B„K‘û[ )4šF¤fÌ«"e²Ó4=‘Ãш*†‘bàÜ%éú! å¬Dd=‡ÜTdpž( dXKO9±dÖYϺZLüð¬SÒ‰y-}­ÕØ…T€üaF~¥±Ëðlå´ð?‚Š hbäè}»WÔ¶Y«MmôÄ3\> ÁË3Éš!¤”¾¥ØÀ 8 ˆtìmȱË$ì‹4v?k¿Åui*´uD—9«gFŤ) ‰ÅA«´‡#´ŠVÌ: WxÊѤGQ¢'~—À)š§Èm ™³"GÂIJÉ»¢ˆÐx“Ñè¶JÒðaj {âÄ`’‹wBhØå'·þAè.gtþ±TÀÇØñ«¹8–"ú‘僤 Ñ‚:‡èÖc­Ã•×êzÜʱ¥=€#?á`%À™tòg@¶©à.Áx À @èñiƒÞNŸímR M&ô‘BBW‹Š£ÐëK‚ÜEù‡/Ë]®¨p~-¡|€"f¬Øøà{Ð ‡ø»wpÕªRàå^ºmà@Ì?€´¦Ú IÔɳØPK›Pž›‡"«Îƒü7€fÎÚ ³T m9`4ã£tCH!f ¨¨â‚CIñI {H¡ú“œŠ£#Ð*õ²‡ÃÎF€Ó€aîaŒšI8&õÚ¬ÑꇹAç6p£žšX}dùo#ó TÌPýfEú02 “Ùó¤L|ŸÉ¥jHÈdà¡ë;K‘{oLx5ÑàI›»õ>iÔ€ë}O€5+“@ËJÉÌZàúCM¤z€øˆT™Ÿ!Q@Ô>†‘25&2£³üï¸|Faq"HötÙà ÀõwƤ|¤’‚‘ˆ¾dJèº3 ›“×W{RÏ¡èÓäoìØŽ¡Þ>‡0ïÀDŸ¸p>@` ãÈx áÖËÓ)"d„‘‡1´ö–Ù Eü# HÀs#LÖAê9À ”…0NG@ñŽa8©äË: U@Ð ðdQÇààHu Èð.3Á@,vÒ*¥Ký Û•È;1ú‹Yû[2 äƒÒÅÏé/ïŠ&Ä–ÀVfQ0EW¦¦iªÉx<éXyŒ[Cj–Ψ2pc ûƒ…ji€-,Ã Ž¨aE~il~_ZQóº'/EÁ-\lê:&ùмäFŒGØç¨c¥´çàL¨±± f`?$ù ¸ûR@,3Ó ¥Ë¸PU3ÖF[Xê i¸QO“*lgUÉÌ4=Þq)5Ä­œÅ3”¥ž‹jƒŠuvž³ð?]ɽ-Åüõœé23øû…ÖiHÍJÝÊôŒMi!š&Ó$ËL¬RaÝtß ÔÅÇn2  Š*…–8ñcÐx ßW~Òo<7\6œ¶:Ú“°4¥º ~SH @°(ÊÏ*DÔ£A `4ÖŸýB©.¥œÏuú´D&\&°õéÀ£fsvÜ!°¡ÀS¤Ô;è"ŒÄΩ†3nø;ëðÁ#ÖÚ窯aøH`Xà” 8 Hâ6@çÞHâ +Âî¡Úme€I-ºRöƒb´ ܯaä?ƒæ’Ã+C~o^FÂú1¤òª k®~ÂøáèàCŠ¡ú .Xî/‰ÔЍ Æ~ûCš/cî”ȦÂBy~Xáà!0"Þ$ZNæàkBÚê´'ª$ÉØ»Âk¦T2¢v‰cVeñæ]„f' dAæG¤´å.¢LSíJ-¤Ô0bPdÌ1Hªz( P‚ s:<(8Tg®³®˜ŽÎ0 Ô5TNÇÕ‡”àceÎ3o,$êRîKäòE*’K ëb¾%aþ; ßã–ÊbÊT¢&0xIΖx©œ.#^¤xÜr jÚíæMC,aÆT<0Ü‘æj9e4(Ì6qž JÊâ¢úÃÔG0n„EŠgx( ¡ë $Åd746j =IÆÑbÊC­®BP+¥°ÚÄs kÁö&0¡ì0¬F`"r d¡Þ!µhŒˆÂÙã¾"bÚòbÕ'ª>él`iMØŠ,Ê. €PÀª`4¡Úúãn|‚ ƒƒ6mæ bø@HÁö \aÔaÌÁrÁâ?Àª¶jc\>ã00(85¤Ò!©Æz"‚0B²o¦~‘¤pE"|3åH-JÀâLnÞAf.`cÎ!±¬Ãc0¤“/‚JzÅâëaø©Ì }Áþ3GŒI 7àÏñ‚nä$-‰RƒƒÄGb,'¦˜÷"£¥T'¤Ì;ª(€Dš+¾£Ê‚Ø»E!*vÿG¾:ÒC«&"ï´øÅ[.ô/cø+cÎSÒö0)LÏǤ,'>o¢zŠ’L£ cŠkðÜ©'l)¦H &*RÁÖáö„pMdL´"ÂPÅæ¬â|TD,BÚQÁàm"Ú7¦cÔý€ +„L5¦+Œe¦`y*Ä®…øÀb€Ñ"-Å:-Ñ@•bÅè ¬~1,#À_H97Ä ,¤$êA‚Bã+æÆlbâÅæî'³tä.>ãúbêéX»ƒ´ª#€?¢0="Î.8A#–C±": úÁÔ”àá´!®Ñc0Nc\nÀleJ,P$jcÂO%TLƘ¨dÆœgX ~áö`t x@0 Ï”wƒ²ÐÆú€ŒFyAèI¼®„òL­ í àqLr)Aº+Š @ ¤œçŠ\ãF 9RD$¾+â¶GöCgä-ÆD?‚¾’q‡ãj"ûfzÊŒq†®Aò4uÆ!IÁâ*v( rC PƒÖB‘T0â䧃:žDtm1†D&Þ7£D^Ílþ9d(?EŽP"zuÂP‚âT†+C,iCˆo`įVHÂ|$æ`a'aÓQÁÈ '”HƒóAäáÜ¢Òr"%h!æ¦4(€n(è"¤2Ù1="t$ÁîáêÀ¬‚ Z¥ 2¢ö'ÕZ'f¡ú€B¡ì–aT¡žáÕA¨üî~æ]pçåüêây¯šè‚%lýAü— LVjÊ&–SÌr#dœ+£^§®0 †¤ ¦meTz÷¼ÃåÚûI'à G‚C8¹ff0eE^ñ$Ö$ÃðÕ5‹šzçÈn$ç&ãô1dÌA°Ç0aHâÚ”HÀl`^à*Çøè,ö£Š&xeHP$p7¢æG –œ#à @Ò+Øp8Jk„”XNCÔaüà(/Áæ!äDD w‚»FBÛ-òì¦XâØ1¤ÖLÃ@!Mì2ÃçJhN¢½ä,îN‡Éz/v(ÅX¶– ¦aÂ&¸ê,@4†7 ã1ƒ66åH´+Þ:ã–7“F;C =c-NŒ€Z@ÇFcb*ч0Cf¶YCºkcúL<Ä:6Fì¸À„X2(ƿ٤BƒŠ#p”e<&à§Œ°#ˆ,'cTaàr® :⑊ˉTq-¸I£tw„§Ú•©"à.B'oI¡üÉgàøµ$ÅðÀdBø+$<|£ôL£–$"à."Á6(y£Ê¤@,gO{0NCº3gÈzã*‚ÇÐ3gfyèß7ùÜMF/iRîR…PZ!Ì@‚Ü.´#xÙaöáÚ""0!­¨!(†3æâSm¶ÚE7ÃÀÖRb£Â4‘Ÿ(’ItÀR ¬€*¡Þ"¾P"À.|$5ZSÀfÈÜ@ ` €¯þvŒ78!æ7â,<§3‰ #×—jâ/ƒ48$’LDÏDPG"(edâCg› C5ÂMd9*†àdÀNžp#æIp¥V|z3RkØ'‰Mz!ð”$’7ã|}âö-¢æÇ'@2¢ä2ÊSÉÞ~¤$.¤µT"¶V˜'¤®G‚´0z~HCBA®tÂàŒ^!j/F¹Âj¡ Eð'£u\í¶['ȳã|’*T‘t9p“ÄŽëcÚŸD§Äâ>g"b±<ËCbA¡ð/§øn·§Ö„UDFÃã&,¤í³åÛ )Ú0ddÜ&6ŠêãÇj¢Å å®áÈšªî‚äÃæÂBâ#Iaê:î$Ú ['”õÙoƒ‚ü¹tC»^+i,# ¼OÙÙP‡~˜$#¶®0¢:ˆB$ }#¾c6N(€Æ˜2>3@.ð•× & !ßGÆ:¢Á측¬áæcT,N/Û Ùä:yê’&Õ§… 8¢ê„ ªd´0åF'ƦŠEšÕU –@;¦NšCûÑ¢¶pãõwÛüCQ±óBQã 0<àûCÔ=DpxÇtI§å—÷¼J®.šhePlF»Œ£´GF¸ÙL¡æãêĤ’at À‡ä3jöR&8K#± Ïô#§8Œ$DÚ_.t< P€ì´6¿M+¼€ªŸªÔ9M-N  «ÉW¤$‡À 9õ“²Ôœð’2Ÿà`‡Ëáä[çù誚&ˆ‘2'õnLaë!žò` é4R×¶Ëõ{àÀ ùl€;H¥N˜~7 ‰úzŸ‡¾„{Æ`DÙ=Nô Ÿ ¾lt4'iþxà¨ñô±öíU<GølçÆ C€ 8È88çéèum@I÷[ôˆ›Nsw±@üølæØyœ’|q'ÁçrÀ@ ÂC€dGÑÞ¨U½T©2* ° xŸÇ·¦|€8'²ñþ à§áì=ž w4mÄŸŠ›»°:Ç3z»Kð8Nø‡8~ÎÒª•"TPêL1cä|UZhžs6lƱì ÕAȉ€©CÞ]Š¡“0Æ$÷œ sÀ@ yàPǼAìz€¥ €}ŽáÈ;ǀဠ)r>Gâ§xälޱø@@€@ø€Ø(~@âQ  ¿Ÿñ°ø ƒ€à˜%ü€ÞOGû½Äö •ăҜ6íy¼ÀçËáúý}?`0ö† Áoápè†ß.ÅûýªÈ~½@A`sÄ. ÖŸÏ·Ä-ú¡ P-úû?!€ L$;y¿Ó ( _O—Ý‹G_Ï×ôt €ÁÀËÅðûz½Ÿ€[@ ¾€8ø}øÿ~Y_¯˜p!þŸÛ ò{‚ D%üÎa . ‹_ïxéöÝàÀ04 ížû,=ú¿ßO9óÈ€`êuþ;Øø5‡ËÖz¸€@€géìü9ÈXŸ² 8à)ö¿‹«Ü€@Qô~ǹúw¡0# ­Sv÷¨À( ƒà 8Gú~|£nQþg»^~'ñü|#+ Ÿ @ Pz°«ƒòF !ôù=€0 |ÇËR¡'П‡Ñð~Ë\KQîÆŸªŽ€à@1ô€¡¸#P÷;ð‰ú÷F1æÒŸà(ÁÍÂ|€¯<ÁH¨ ¸¹“ žÊE¯Â#©rPGìt~Ìhê‰CÒþŒçÄ Ã*~#4C8{Ÿ@0z¦Ùî|žG äY™g™Xu`Œ¶ƒu¢*8KÓà”Ús‡éÐ~QkP}¡'ÙÞâ00‡áè"…À €ŸG”0© @91ôL> ÄŸ¨Aþ|9Ǫ 1ø°§ÂØ}ÃÙõŸm{•|Ò ;ˆ*0߀è žçâ#Ú ˆR2,ê þyd ¢ŸmŽlŽHSP~€éæ*{ïÙÉÀ0àmf{OY+~zÅÐÚ„·Èà-ÿ#³ø~,‡Ü³±çôÇÏä~@M Fà&û‡Éôq±g‹ŠÌ@$é˜à´Z+8Å`*ÇÜ‹VbN @,ô0ÀHçChÈ£f@Ø©ç`1Þòü‡–j-aàP«…Z–¤aF/岜s^n€:þ¡à=Gy/à1Ħ$FX 9#¬µ{4_R8hy¼qâkšqjf$aЧ àÀBš4F°ñaöƒÈŠC!%¢¶Gª®põ!–‚ <¸e²±žÀ˜ à8§÷œ÷‚¢ãËäEɯtàûÍÐõdlû;È[ ‹H4d™­‚<Ô&H²˜Å RÔý_9µ†6_ɲ|@ ˆ(˭ƾǘ' ª³9{£è¬³˜›FeÇÙög>Ã0@Î9Ï« ¯ƒ’>¹>`Y€jƒÜ ë<­‰¾òâûI05Zçd¸ îj’¤Bäí)br°„bâø¨ 6èùzw+$‘¿AeÝVÃ’Ý“k` /ðü d¤R,Ž¡x Áè´*"‰Gâ ñ"Ió`9¨ÃF¨ Q %°w˜ÑäÀO Ï7f5€ ôMˆù‹‘‘Rˆ½Ï‚.£í˜"RÔù UÆ­IÐéÁP  cVË8ëÀã¸\¡€‹Æè:žÉ‘!ð=e„oì7G8DT*W@PøcxòxxC™ !S®ÃäM%H26± ÷ŸQ€YaÃäsG@¨ÁàR`hvŧYüO[í€VX8!À ð2<…øáC,oލ¢GHy«A~2Tx\‘aœ!Ù9&BF {ÿ!‡ƒC+§d·Ê›!ǾqSˆÒüLKÅÜ“\£BàGoŠ*„Z¾2™,ä2\—tÐ"[€Ëä`Ù£’ÌiÔšC-HÅžë frÚ¡OJ?œB䈉ߙ ®E–ù¬Ð_6É =G¡FºF=÷¾4ZB”Ū çqú³2J<$¤¡áê<¡Ù·˜YÍš†‚ #²<‡Ò>‡±x` Ä`­†ö”ÇØ€. B€¢ 0Aèw ",b4!‘ê9€C Fà`X¡æº†¡ÒÀ8áÆî¸Ïƾ® §ÑR<ãt{Ûbx.Kö,ãÞ!n#Âu‹Š!&GÊž#BØÉ†ü'„ØõÇR„™„`;Ãò#¢ŒL¦1d¥«H¾š}Ã~J0ã…dTêæ”ì!ã‚é^h%š¹£žq@Ñ<D 0G>…ø'zQÄ©ñø¶Â >ÑXc¨úò?ãf1ªl_‘Hýβù%H5hQ®fQ¢F"?#@8 JM£Djƒv=HBvI¶1Œ’E¨6öOC"¯Áù5`ƒaáaêÉ 2fÐ2ľÒÁ²ÁJáèÁÖÜP£Yªž}‘€˜.¢@¢„4KZRM t€ JV€" *î ЦbVe Q¬|4ôÌY£€‘o’lX¼BÚ#Ä9.­d¤KÂ~gdeŠ8F†ü‡#¶'ìÂ)kz‰0˜lÌè!üÐaþž§,(Éjáé5‰¶Ì!öZ‰§ÂNp ‡¨•„ÖàVlæ@ã7B"Ccd#n’-Cnï¢Âªe7C†a aȘ¾b*4É<`É?4T^äëèmƒc 5\ðÎE IðH}‡?ÔŸ÷¦.ëò(#8kf\2&Ì!Cå#j2!êQpY"Î"ÑHb€4â*V•c„LHô1ˆ‚"Ä*Ej°²¢~Ä„1`!þè¼BÐaWX2"ˆ5Ã-ŒEgx3Åô!$iIŒ¶2‚ˆÀż5äÿ£¤ê4¤@£>GÇ&F#z;Â/À"@gNÊ"<ÂüwˆvT#ÜN– $~`0s#è(£zN`FÀóÎ)C"OL\æf1¢ò6§ÚV‚´?SÀÀÉÜpngŽlCýÄ'0bN"#b0©V@6H%f¨qp|¤2±B× Q*5šq:Øgª&ÁRØ`¢òâEîWB æLF£DkíÕx ²  à6ÀÎ@ à8ÖúMž#Æ—xþ ã¤9IÓ;ò ãò^ƒPL£“ˆ"†™B0h Ø%ÄLaæ#§ Ë`›ãÎu Y[Jn "–èoÅr%„¦6K"bCvg¦:ü)H@Ó¾rB‚Y¢ÆFFÄ\>4,fÑEâ}m †¼#C 5ð˜Àâ΂Ø_$HÓG ðœAaâ­b΄`3D˜ê wã¨<*Ê…¼EF' H´½êæQ®«ëÎ ÃYDò¤ 6þ é?"ëa–Œc"þxOÒ;ê  ¬¶±gv(!ìúáØýà9C쉆¾-ã;c4b*«ãl0IÈ£Øeð5å˜!$ÄîáðúÌqB71P!yR4ô¬ÇÆh'06¢2?²6f‚_„\5†Ð#uÌ,«hì– …fb¦X\€dÂ:0DdEb65d´~ðH`Ócü4"~eTwª‡Dt'¸¦6þòöâxCDeB¡× îíã¼"vBXºÎâ1-™2VÔ‡º‚™ƒÅL 0I@$çŸçÆ;aìað€œÀ€  PÂr‚LU¦*I†WCðàTuàJ8 >,V!–Æaú (zΙ…B#Š<ãP9# BÃt#ðTD~Œf'wƒkä0FÖYªÀãEaD#ê!c|OLøõ b˜’¡ÃPfü?%ÿÄQ¤¿’à`&L#æ™zj&0¦LA"Þ6‘=ñ¶b£6`ÏÂF'À0¡æÓL _9Ç‚26»Ì|æ%2£„lGÞGв=ÂÐÊdþÄËd@v®fÅd–T!*R!jVôãÂ8d"4vØ4D`$ôC/BP>-µdcÃ/'Ȥ(‰#c£v9B…i&7ó*¶b M(?RÕÈL5¤-›ÏÁ£æ·£>tc¤rAñ:ÆÐ6I˜ÉŠVëc~ænm‘Æ3fLÏâй–â (Ãæc|ˆ'b!'H„.ðªâ>pcˆë% 5gp¤¡àv@Þá´žAäAØ!¸úz!â0G_ƒç0=Ä@&` V@À6@6) 8 $`ƒ‹´[f,–[-|b4c„ùät‚<¦b*r§ìêÍã’d‡³<””âù#~ì¦w§Ï?K#NT"·cP®k›Wf‚7–`5ÅrN#"·° Õ–ÁÜlàÑ„*l¯^æ1â5Þ ƒXD®1b…M¦¨¼ûc—¦¥¬À*•⹓vvPX3UNÀ"DæMgkëz|ÃÎU 2 ¦ 3`*vFŠÁäp þ`(¶ÓDô0¢âL$qEåä"ö1  (`,!áÎAìgee†˜E£šã>²/×i­aðÒx#Fðc¦ÉÚ3Cm’£„¹ƒáÍQ„be&8—ö7¾HF5°¢óÃdÙî=ÉÁóŽjRwæn6‰>"úãAVÃtI£ŠäÃàøC\ôrC[føJLV„*ƒôÉôÔìCÎYо,–^æ\Äó¤0§Þh —F⎎aá[x²ƒÐb€ÂŠèbaÖkàAæÄ“À"0®ö”€:c’¡à@E™–׿Vd3ˆ2 ݹ˜s·¦¸   Çûñðz9Ÿr ~P†Ý¯˜üú}¿#о/ñHò)Ÿáx1̨u²Vާ€" x€àp  ?_àgì„}@Àóæ(ú 0 ?€#ýþ€èçø¶þXÀ`@;ð Š¿@¯Ê-œ®Wl`p öþ»O×õ=þþ´Ð_à ô@€H;]³€/ LéíW{¿@€K ßï×à&8Ô 7ÛÝðý|>k p0 ¸ï x׳îÈ€‡ãùøù¾@» £ùö{¿ÀàWëßQ´¾ßøË)òîèïÈUüý€@îð Ö{èh@CÉ~Ÿ§Ë±'iÛx¢«à;Ú៧²³€ Ÿ@:ܤ‡È¸ Ÿ@!öGøŠ©Ú€xÎË#§ÈŸh£D¿`þ«€.Š€ÂŸ Â4§±Çà~.ÀbBŸG°ÆÒIìà ¤¬Ž[Ÿ É#ª’8°ÊØ,ž®©ï0€©ãJ}Ÿ`#~Ñ$éôç7‡Û$G€Cb¨©:>yŸ‡‘äzħø·/OâtÚƒœ‚Î~‡ÑÄq‡aæ|™§ÙðfçáÚqŸ'ð~êÌdÆø*°ˆVÀð.}@°,à´g?)À  G™ìÎOÉãÔÚÍžÆñ "Æ 3—GŸ.¹þo3vò€k~#Oú}¢À œ²2TzòÒ'ØZ®Yß0€“r?x*¨â€’# hÙÓgÁ÷DÎ yú4àBž¬+’æ5 S$ãêêÈx'œÜz3@C4½ï&®'ëXŸÒ.´ˆPé÷E«ê}౫R6­µ @©Ž«þ~+óu¢ù‚*é÷9gÊœ¬2€};ò\f‰ä‹ÊÊ •€'áúåo@Fˆ§ÑÞçï§çËÊIz%Àí§|§¸øè®üIêy0°mšžø“8{Ÿ'™ûkÙô¾LXñü¨jò:}žÍ•îóàTô¬]4l‹¡Ó—±äŽ?vˆ{*LÃŽ*ù2»AÄ ‹*û^žÜNžáñœ1KäW)¬¨€@€‡™ðv8g¼\Ÿ` ‚Q Þ|ñê}‡øã#üpÐ,¦À;@0ã6‡p € P8$ € àL*Áá Gð€ @$ ýÀÇÐìèz† ¢¡éLXt»ž€Ûñöý~¿¡ ˆ ð~Š€Ï@„.ü ‹Á®e±˜¯v=Á@ƒÜ€`03ýöÿ?!Qp#{>À/‡Óì @€Ô)þ°ßÀ9+ýúº€ßð-ÒÎþ|Ù_uþ¹<+@œ“éø>^³§³õþ­À 0êÀù›ì6`$( ‚ÁÚ€O·Æ¡ôø~¿Ày߀ÀMà¾Á·£Íâþ{<î žxþ¿ç§Ëôý€yxWËñòú~¾ë€€ “¹¨|ðßß ›P*øÇ |† vÏ™N¤@Kîû,ÍÐ'é ~'Ïaò¬€gë@ž‡ÒÚ{žÇ¨~ž`QþŸ`P"GÐô‡ÄN‡àyÇÉ𡟧¨~žè èêÔ¦ÇãØÏ€)ÉøÁ¡€ð´gÒâÚ1géô€À#¼‡ót~IÀ {€ ð~*êŠ1®D`{¡ð` š ZÞ5LëÀ'3¬2€2n~žÇò*Š +šŸÌðG ã¾0@kÜ@Iúxg¹â…gä&}€ªÑì¬Çið{ži"ø¬ŸðÁÔ|€Çƒ¾v`ÞxžgaÄzg)ô§À €à‚€ `p{‚9ê ª`¦ß½+À~hHy'¬óW¬+5S Äû"²8mŸçhx *.+H`×€ <ÌM¤Ñ"€­ä°+ñ›ä¡@9ôá'×¹þzçôúp뎛€ ^Ÿ²‰îíaÇømRàê[Áèùùö€“T°zŸ‡ëº­®`}‡Ùüz´RÊL©ùÿ6nËI B¼Á¹/Â(}¡GæŠË ÄË’°lnO !òz,.ÈߟŒÛh½µ³J~€‹¾yG‰â}Ÿ0š2jË# ±¹ø‹,XÆQÊ.>× úvê5Aþ 4Ý@x€ûîÖ5€@Ol\!ô|¹'¿/̬±` ŸgÙΞçp‡CÎ~°¤Ã>¼S1êäž§šÀz±Ðqÿ”Ÿ‡¾¯ZÖ€Kaí[` ÈàQð°c»7¼Çÿnn¢ÚÉ^âOÅȾÁø>ðH§ˆ›ƒ8Ÿ‡¹a]­uþ"G‡Øö }"CÚõÀhX HQí É«w£Øzt怯Q”p"?°Õqd9…R kR 4‡ÌáÒTÙ K0€ GP¸jÉxQÌ=@¸R@ü(ð4;‡HðnÆX…7Bæ^ [% xà2?è.äUá”-Çpó€T Žð&€)w2)iI“ØÀ”iCÈó¾±üV”œHp1ö¨ãg Gàn…°Âö–‰h±°¦ö[Õ~"åxÜ¥)J_ȹˆ5¥´~2*˜dysd­È±ôÞXSX} h[˼æP#&tG8øê€§€iöR¬\ƒ ÚÚ k%jJõË€ˆR8ø‰ •º™Oä8à B6±/@³»È`q¡ÐP!€ ±F:^Ï !#¼ÌâÄZÀ15 d}3”Á¢„èßœ˜BRüH¢ |ô¾† ùr°ü”𸛤O~‡}T—2À2:h©áä;°Ò€a”Lu"KQì—Ïpö8ƒÙ4QöVÊùx§-Ù'êlêS8b‰¿“BèËq¾184Þ;ÇȉãØ¿)¤?è³tSjeÖ€F>~WlP7ãÜ8ÂÞN8÷.%ðªH iCÉÐ œÀC3À-âö>‡µ¼”´‘f`áäÚ“Áq‰‚{–rjÚ Ë9*åL'|=MCæJu¥ÂšC0ŒJ-æ€Ýž=À0ð–¢YR²2.ž*¸I]™iöf+Ü ÅhñßK“ÂE—á$ Ü84[¦ >SÀ}WÔÁ#dz#,”¢9I8O.D3Áð¬´ÆAÃøÑèwS˜ý##ôߣV*y°p"ÍО ËbA‰$càä§Zñ øeXÜ£=U¸ùGÆÍb¢Ñü° <ãÊ£  ü@À=ÂZì­‡ðñ­&‰X±ú€qŽŒ£ÝÁ¦¢>G´‰cà$|˜ƒø~҉å4!Þôbxðø!$å{©³>¦0ú$@{€²Ú—j61ÌžX¤Wf!ò¦àÀTqꈇ›2Fí‘AòÀ öL—5VJO]€ÃÖ‚¼`>ÕAÝ<€ &vp;™,YHŠŸ$døËiˆˆTläKܽå«H‡Ú$5ÖØŒð=—Ji„~‘Ý7 Gàð·9qø= ´+à9$€°'%@Àã@x¸}·®y!%‚îíâ%ât9 ‘°˜–ã™Ë£Ôs ,Áp? ÀÀêaö$o½‡3< nh$ d`G€±£(`QØ>€øàhÉg6ç/œH#„Eœä‘î>Ÿ^j+l Ö“cÄ Ó FGäü¥ãL¢·!; üÇ©M²æ¢L¦GÞܽ6/jdöžiÈóÐwä×ô¶ÇðòkdÌ›¥êv"GnÇhŠézî,.&‡¾9¼EAþ¥îã,f>ì¸ocL'Æ‹šuc³ƒ|@ J$£Ò½Æ0§ª4‚î²ç2FC:iÉÊ`€0¹!æîó­DMW‚z2#^9"Hd¡Þ=GÌ` ƒ”¡B´?'l ²@ e¤|ê÷áþí$<&£¨[íQ ÂV Ë¥§Æò –a«êsijãj>çÚÔ£2‰ê'€†,¸3D|—#0C la¦4@ó oì'vM<}gv6…bÓŒ ynÀùCp¿/^‘’3Æ^çC†4„ŽÅ¶QÅ ' ÖR¨:"p‡  l¤1G€s#^I' :S JnÁ¶-¡Ànƒ¨vàõFŠD!â°P$,GÒECü2#Z8bæVç¿bxKÂଢfÆU`Cð#æœOÄÐ'$d4L¢"H|dš>ÆÐAÂøJОIô>G|½†baÂÊ/´/äL &¤æ ø+Fb!CT2ÊúÁîΌԾ«ú‰£$ÍC¾nZf!ö3ô'#ÊŒ€&2 (v ÒLCörðzaê&ñnSM.9.}ç8X£NI€å`¢À‘\%æ AðBfdx‡Òt‡ˆŒ‡ˆ|;B sb, Ýæb?ļaèÁà   | Àf¡Þ)Ä]BÞ#ÃHR@DG B@0`B :`Á–!ºâàRAÒglbÔkA‚Êtš+Î&ãÌ–±TÄ+ö1"Bj¢(actí!ë 'æ”®¤i)Â!Bàa$¢‘ ÆÌ$°ÂÌ!Lài2b:‘ð²äö¤&¿¦^ c’1Ж4â(è7©2lDÌ.ƒ´Bë, ‘ 1È@ 3ÃtJB¾+ÏÀ5P¦iô2‰.+§"©+î>Õ¢jC<'B.}ã"Bç5ÄÍD,ÁZÊŒÌ(J"ƒDêŽÅJü@"V "-!àj!äbÕ(dÉ3f;Åz+¤z2#ä-Â4…6C°èU"¶R£†ÅÁôTBU#ʃ¤À,à95ˆ4Š©Ô4óà.H!ÜqÖ>ä^à e¡ø¥*J!Þ¿3êƒìšÐ¢–¢Ä$²ôÿ‰6p…ø(ž8ÅDh²e§lr°‚#2sˆÊ( @ådÌVãÌmÚ>Â""â· iâ> äk¢ÄPÁîeêÆ!C;Æ/Ân>F@sm*¿+÷4bµ(¢¾gŽÒ|Æjñ ÒgZ¡B|c¤D"ãH„ˆBð~¤?§ÂKAè¿/À.à.Š"RGè±Ä&–³I(èH©rf,¨wÄkDŽ~Bqc­,P<à -+1Ì}« -¨'µ  “HJc("$ü4¨ÄBµG“°RDØ2G cW&*Sjqå2æ¤ìº#À ”.ç ¡Ú+ô~Â,=DÈjKÄv¬p–&Âühè1qð~o~#&ö+DA„¦+b"dBt?($@Oe $ð}êJ-aâi"¾aü=Nšs#$@2AÀ*/æ5 ”$€W# +„ÈÒ>çycº¢)ÔÁãÚ.ãF¼d¦ˆI±£¾Hå\a¢r5`‚,°R$f$(C¦/bh4‰4Ô©–d¯ˆ–ë.L‚pHjh@¿(„cçÆüe6$ôôøÂ@<§8¿§ ] -'ŠC";H€úÅn¨h:¤’‚¸äçÛ4 ÃîOAöÇòâüæºà,/ÅcAô¡à!¢'¢ prt>â“b Bʉà~#ü"¥Ðcáì…À. àX œà6ÁÖ€ÀãL]T„=Ç. D/€:€*€B`>ab¡–ºAø &`4Ô‡|/EpnĬ`(È0gäí*p’ RI&=‚²"¢4‚(ÍËŸ`”Žx ¤.ä¢/Ĭ?C¨„îÚfÐÁ!üăiÆØ8Bnd£ÚÂ<7ô-Ë3g4k€Ä"J0²>P}&ÒJ#Ôàc–;ÄTRCÃk..dIÄÌõÅîLp?ŠÔc Jx¥îRHÐjDÊ6f àbp†È+ ‘Ú/Æ,ní$ÎÉæbÌwÌ0Œâ¶G¤GÊp#Å*Ï£.H&ÐHlž.#ÊÝFº9Þf#Zþ¤£Vk„bê"ï66„µl)‘ R¶*Aâ3À0c 2Áü4$OÄsvKÞ'ËÞ^D=ˆF"²ýC4MrC¦v0j‚V*‚Ði¾Lg˜Í8G9ð“D¦±JìÀ0v=¢âNÂÊ>ðÈW‚·ã=Y¢CÜ÷*1'–JoëYÃ,&¦b>âz"¢.ŠÓ (‘d dv°"À"Ë$m9 ÇŠC¢¾4*ú)3–¼>de©2Àd´NŒ=Å68â²iD‹Št ;özWµ¤"å*<óJ>òuñ ­~¬dº>,:ÂF#ZG¹Š/ÈaµàBö(æÕe'.G…$oKnâ¾lpŒ:A†”&ÂuUÂÀh†ú¤Bq¦ì˜Ärà–¬HüƒJ(>=°+º«86 Ç.é²`L“fËê@y ÑìPV6Rf-KGå fK˜æµ !üé2âÜ~oJn q‚MÞ1c®Ou˜±ð¢“AýQ¥Š|cñê)kÕ´Î4©þ}¨’ºcÔTж—ª‡!ªù­xºÚ –ƒ%*# È‚r"è|Kj+LFÐN@ƒêƲáäáäAÒ`B *L:&¬¤‹'w »…%'w qbykdéŠLJÔOÇÛr¡î œ2¦€2áÝKä¼' ØŒÄ;l@¯ 9u€ @Vd!ŽÁ¸áû‹áÔVÐæ#ø‚+.b¢Îb´P¢4xÀáÞcž’¶>ÆÔüp¸þT :7e2s˜Dçbx öS¸#rs#¿¤áüZƒ ¬Hi:À½î‘å2>ÈÎJÇ@4Š’°F08‡€¦ƒr+âq7äœÈ¤.bHJKf‘èÀˆš&ˆ1´œÖ`1ÂÏ ¨—²:H Š˜Ë’4õ1¨ªsƒÂjvƒË"å‘®ì>Ëå "æS7¤,bsF1€-\LF’m‡Û¨w cäÀâø-ª$»"üí£°+³¸/œx!†à!"Þ=¤¬/h‘=M<&ÌI¢,èebå¢|mPÅ52QâÀ/0!0Ú,î7„ÞiQÒ#´rfú¬-ŠÒ,§Þ9Ì+"úšÀ~£Ì¯¤µ$„Âs j>‰V;Bü5ìÎW­/~ ,ž F>r©ˆw‹(U+pjÜÈŒ~MâèÖrFC´D‡É‚C$BuNamzñðeø>æ­Š§äÁànŒy‚D¬M¹‡˜µÚ>æJ«ÔmRô<ÜF¢;2‘Þ/Kne¾'8Œ+ÆÔÆC PR ¦f&Ž x§wÕêq=à £òfæ°}¥V/d:­FŠ:ÆìV*ŠB“@N'|æ@&°Ve¸åHˆBÄ HŠÆµœ-êÒ$ŽÆâöf&ÄJ)X >yfbŒ‚Ø,–›"n«€GÅ; °W/cò-0`S#òm"æ&RV"æ(JD‚Ö 5¢,0G11-D'Š=©bó°£Lâ4Q†£ÎÄ=´H@CJBle 7"p‹ÐdÑ1Va)‹G‚²Ýä¢Ë©€0C.;è"y|eyî`s&Ê&†¬†)¿*T7jHIË&­ç¸h5L&ö‘ë÷çc–ú£Œ5 J= ~M7mHÎ$f† -¥"<Â!©@.£'#NÒ´áʬ~8ûh9"9ïAîÜcû„a D QH jäÜrt MÖ†MH˜¢þÊ'²¨\Àš`z `VâÊ2 ·Óñüú?_Ï0 ôþC€PX. …B7²Á¸Ä^¸/ðØ1Ô_à`üýƒ¿@€ ;ø¾P ð û½e¯‰Hå`9Ð ÷L}àJ8 ~>Ÿ@è … ÷ð-}€oÙàû'™€ øÿ«€P  >?n@x€ÀP3æ;€€úëúoZ¬½á€ è Øx5§úÇèÀØ \ª±Ÿ€û<Ç‚²–pÙý À€çÈ0=ŸO g"ù¿§r‡åH¸Ô(µWÖ2ø\/ðXdŸwåoûH|QX'þ µV/—óÞPø='ÚT›°Ð ~ ÒT~ª(¯~-‰ðèHsR~¥ð¿ŸéÚV©+€ <´Í蘀°‘ø{®GqðÀ?IšZõ +þAÊó`¿žíáò¨€àx*aö'´~›ÆÇâ] J¤{žç©ô|@à@0Èê€r¢!À¥€@¶ŸÇƒ¾x±@‚² §Ç‰ú¹$ØÌ‡Ë4ÁìZä}€ˆ1ó@ŸiX ®QÀiø«˜(¹à$š}žè,šEóÑù7¥,$ôžàåTG¢R€ $ƒ‡Êúà`ñ‰üw?RCÀYô~`€Tª›E€yC§¬ö¦Ÿªjį0‹›}ºPÕŸçÊ\»lйWK#ÞäŸÇ™ìŸÑ áô³€zxï&Ók6Aîùê–(¶!êÄï ªQ;À*‡ùúŸ'©èGŠä(àTAuH”}Úªl'ªHkÀ@*§éîzG©ðx¶g‚t€FgSɇÑìyÑ«HíXÔžÀhs Î|6,:GO@f*z?9¹ðŸ`ˆÖ1๞²v|@ 8*å¦+z€ yîcY«fÅ@Eƒž¸Ùî}ëTxž§ÙÜz {Ø}cçíªG`•R`Aücçáàž'˜y§ªT—ÉvH逰:â|«±Ü~Ÿ§—>²b¬.´‡Ÿ~B—.L’ä2€IýÔ«G“ €qú}0Pxñ©àùn&‹)î´žò‹¾‡,²Éú¡I\ u‡ð[£(`qì~ aÜ€@ý„@à°˜#ü ïØ;üà@(4 Á gØ|½Ÿï';Ô(PI°óÉÜú>ßwóåý?~ÀO  €B!`€`H'½ÖMæBùÆëÂn° $ýˆ€Ÿ¯°íú€ß€€ýìþ? Wëõò±¿@ 'ðþ  ÒAgì]ø}ð  üý·Ùo€` ÿ²€bòˆƒîÈ@ñ€‡ø z\¯çàB Œ¿@™\­Î³ÅÁÉÐ öúÙ”˜ }}€^›'¨¹À´HãŒ}Ÿ ~ù}½ß¯Àè!ºçOö`Gîþ‚` F1ì>€/Ïü}@¹ô}ŸŒj2´ pgðŸÇòð{Ÿ+rêˇ𠤸n:"€Çâˆí`,C¬Áø‡5€ñŸ@ò¥ <6Ë:Ð)þ~0‹âö@ð¿'£0ýHz Œ¤Í˜"¿ëIøzG¹ä}Ò#Ê'Ëô”1 Cê€Qð|¢GéæÿŸM`ͬÑê¿€KøŸ@0GÉðzÄL\´¢îÈ >žSáè|£N[ÞÙÀ"HÏ­øã®28ç-bÕÄÌ´"Ÿà0%ʃM´:†çóYð¨@hÙ¬òŸõ¢4}®ð Á=N~ó©ðºÖlQù¼iñöÅ `k€Ç´§[žö"ŒüŽè~®Yò ÖÄxŸ¦õ¬@28 €À(* &@"üŽ•o ÎˆS<°•Ž9/ Ñ=Ä«1ôÌ8_DÀJµÓñá8lÓ*¯àúùñî¯Òäñ®áüÇKŠ( ðZ ¡Àƃ<€-H¤Ÿgµ®|Ÿ/ Œn‚ò7aé.€ ›¨vš|¾€ô’üðÖç‘ð$ëú„̨}Ÿõ¹âw/@%Ðù3ÀyöK-Ø w,šco"-cŸm$†‡ºA,¨’0w³Íañ§°–Ê÷ÃI-ü¸«vží!øò% *|}e§ðŸG˜zÈÀh XbX3ª cLº- "#üzÏÃó ‘Ó“'œy´³ÆÂ|µ'ªÞ䀸ð ®—΄Ÿ¼“„2ÇŸleJ‹Ÿ ò´Zà=ˆ„:ÓæÌ~ @U¶öÌKÝ`@i¦v.C›0ÿ£Ð€¶ŒÀ™À4Á¤9ŒÁh* ÁÂ4BY „ ˜ða!Ðã„sG˜ä€L(‚À|p ð|€ôªÕÇàù7€;œ2ŒÌÐ €8 ‚@H Já"ør€,Ç`ÈТ±ã†xÀ!˜!甂S.xã)D#õ·¤&ÆÓÙ=í|¤°¶„=ž:$Yÿ'ÂÚùHÅ]Ið¬êGÑv Í?„¸ÐY˜?X§U`o‚Wç€8‰HÂ9VHd°vbUñÆ.Pß¾cXÌBAë˜Ó\R”BGá.1ð> úm{¥yc›ñêÌ‘X“„4šüóyÎ@` {·‡±¤~E\Äp>ÈÅzl¨…$Î1ÎXà~¦®•NÙš/Ä+vìX’"°cÆ€±“ŽšÛ6 !L€ &‚Lj Èx€â‘•‘?V)a,ÓäЀjAÇ$†»òæÄ9À°ÝBГúIÌ¿²ÔÄPÕÁ(<àœçò© *A$‘6‚˜ÙÖPîÔb_ e ÔG €^Çl’ˆ³ÈÙ4/áÒЇäK”Åá£1ã”CŒñÃ?IÅà±àì/Á\*DÐÇ€û xyÒ4¨Gó£Õ32Ìo ‰mƒ”qÐO!*/ƒåD1ä?@p ‘ $h–A`\‚t;º-FUက ó[8G9 Äþ>Tù#gR´zØœGùã-Cö`ä2qc¤`$è—´vq–ñ Eà1²,²ÏªÊ< (ƒ¾›‚Ъ¹dOŠà{¢"~EÏhhÐDÿJUhXÕºh0à=\R„°­Ë6fñ>›ñïiÀ%Føa.#¬»€’ˆ€y(gs—Ö° VŽìËÚ3G°÷LãÜ{£‡ÖîÀìK¤ê µrÐf€œþKÀ|Ù QÙoˆ' úàhG²1þà—"ä„)?æ! €ð>¤pŠ”y[$ Eô¿£ÙÝ6¦0ý–r g–}(fN&qð€ \a@´)ý¶ÜeÄù¡‘­'Yi¤F0Æø‰Gú¶Æ@S¬o”(: >%âêp†AãÙS$@ iÀµà{aÆXf©2¤DÞ(3ª`ѧ€ €Z , ¶§h‘Ð=@¨N ð$ƒB>!àiŠ$}d2äÌãàÎÜ÷@"#ƒÌZ1˜/Hê1hvë’„q ÁT¨eì¡B'ÅÍ8³ây5q (ø’ŒŸ]9`2Ž÷XÂM$h1ó±"5df‡É„€…ô‹áò8>G¸ð°ƒÄ6ŒqßI¤j]S—CÆŠÈÚ°òqm¤Càÿ_+'Ä숡 ™»ŒÙE§äf=€QšuK+ŒE(å&,H»%ûSôÈn¤E7—UHyQRqŽI´” $¡Àª˜èËs€É8C¦}êý_ 9ЀJ=ÉàšÇèá…ðá±¾ÍßÒ²"éÔƒqúiâ&«OdX%JG‡ðóKŽP}™€‹é­ÊúuìJtÙ‘Š4¥ø½ñÔ$>ÇÉt§Zf£Ln]—€ÿ°Ãï½üǯÍï)È®A¬‘5ItãÙƒ™‡º†¢F'ßÎIä"kì9(´ € ±Àsp0æ`‡/U¶=H÷vZß¹€‘è[æÁø'óQ2à žÐ#€´±"ÊQK25‹ô¶ðÞá¼iÊÀá¼F!¸jzM6AâgªEü4„üÏqà¬Àø†MA@J…Ðÿ¤øE"€ïˆêM¦ì4£/D„ˆÄâ1¥båúi‚$tâ@¢Ê"Äöº¢>ðì4OæÞÈg|Œ%F"ŠÜ,†ì|¦ŒâÉ8YE€Q‚†œOp÷,jŸÀÈañ8d6Eäd'ä$!Â2'¦"<òY©‰.£ðZíüAê¡ä!Äô@ $^‚°¡Áî’¤<âK1$#ò¡£T¯ÞdÚB«n Í»‡öRQ(*Ù¬Ù;bq2@,#®¦|ƒH?#6ðyå€ÕâÕbW@+8lB$aÎ( ’` faôêPr²ðrฑ!ü+ˆ€*(àTAð¡ÖA‚°Aüà. .qLFC<¢cà8ì|CD~¦3B?ƒ*7. âH/âêc"ì‚91gô=ëœ8¨BBŒ6gÀâ7NöÀ@fx?É" å„gDĦ¢OËøŸËô}B~#I8è‚ö1ãÈX$LYF¼£þ.¢2"ô<6dô~DX#ô@ô°jà°þ»Š˜Mì†?$ e|V /Ä% œ0§‚%N:WÄ7‘(¸‚.#ÌR1ÃÆ!ÉJ.ƒ1T“EdðÀ 4èPuCÀ@Š$‹ªÒô.Åì2¢È#   âÔ9¤DÌ ªŒƒ,AÜQ–v(1Ïà1åìb‰r.&àOB8(Aÿ(‹ÒM¸B´9‡1x7Ê|"`%ê0Å€BBÛT˜§Áú‚.ìÇb(dª2ã·42Æp¢^îÀ ; 4ˆ?€aøáÌ„AòÏ0ƒà .à ǽåä!¼7âtÙ£fNîÞ")ªAã€7´cux|(þdxX!Ò1Ϥ"ƒøVDôjìM³Ä9âãEº/çbÄ…ž@†¾§Â0 ƒàbÃ2eŽhǺ?i 'TZq—Ö"‡ cã’.e.Ô„vB¡ê--ø_#gC„ jö¸# ýå¼% J7ŒT†´©"ed÷Þ46èCÈ;„Û=k"'ó$› EŽb’‚¢P$âõ94¤s%šáþÀaäÚ°`YM:X"ÈCˆ„Íçô2ƒ2âÍoc*"‚Mî:,M"ì:Odê¶äêDB.?C¬å)3 ¢(£èõʰJ£îc"Ê“ÊÞ™¤þ,p¢¤€e…hZâˆ;aþt£,Qõ¼nãÞˆ$Sƒ‹hˈ.c4"ª#’™/jcaè–Œ%vú ŽÌâ3$Oá #,Jñh.dx+áíLåQå”–Ä<1}FxúÃJ²¶6D˜'Â)UÚˆ=‹ÆÍ㎪¤€(Ni)€pN“ÅN䌰cÂ9®2¯\bP3Ne•ðT÷‘e„vPìö4†¸eùÞ/6¿&d@bë>ê&xn4-ë¨ÐïŒcÖ¢`¢ 0e¦ê#d@âê‚Ý$B"À×&¤VÃXÝ£ŽcÅ®,ä5@NìäehC%Ââ<íåú@IÄGƒ`«ñ¥n‘¤L€lìhBƒ|@¤¼Í"?e€¸ƒBúî|ZGLc2Ö9éØ'üÄ‹ø<¹¤-£<,U4Y¨|ÁÚ:ZÐAÀæ76 L€áÒÆêáÀ¡þA¶ ((`";AÒø”Ö'Æ…ÀŒàfç(@U£­$S“:¸(¢*ƒ…ŠXü"Ã>TÌ>3d4 BTQcødÈ,H„3È„FÆY‚ìãJC44Œ02ª|º¸ÞB.ºeÇÚ±¢4¸ž>µ&1ƒÜ-EL(ÜyÅÙîÑ}ΛhAÞ.ó 9›Ù8¾ZçÒ/’•ÒRC@ˆ¦àœé”G„ëc‚‘0Zó,ënWѺ¬À"{¡ÎZaØÍ8TI —áæ¨ÞÚC#À•âÐ4aø$ l.øÜ/CÊ8ÇôÃ㬻‚~¸!öeZ?ÁØ"’uö#cÚ5€áü 5óº5NC\dßÊÀ_Ã’ôfƒ´Zd„c *.`2K¡ÖYŠò.eò^Ä\Ÿ¢Æ@ÑF·BHAdöÒAÞüñK`n:ýû›:âÎÄðAE§b¶à£¶…H °ÔýáˆCqîCâ”LÅ@O÷ûùÿ€€€Ðh0^à0sõø÷=\‰@b<% ÄwCä÷z½OÇÄT‡FŸ`çãØ ‰"‘  rÖg±ÛNÀxå „A@0 ù|=_o§»ô Á€'ô@ |€_¯° ŸçËéþøAÀ >ðò½bàJ0ÆüBo‡ËÑôú}ßáàŒ €oÓõâ‚(; ~P> Ëñû…Þ ðH!?hÀ€çý{?¶Ï (ýpßw›Íðò@`ˆ'$²FŸ—7ÞðþY.[\ôù> ,`Àþ€ z}œ§áôuŸà0}€ŽAü°àZX{€Géò,‘ü½à)þ c ('›Þ|Ÿkê`þy3§¡öÀ;€gà‹rCK¸ @8~ :Þ  ~çIê ˜Ÿ9ìžÇ˜Ã €¬Å=lÒÍ80¥“)øÆ Hžg¹ñŸ¯úøíÿÃgÜ00Ó>€Çà ä-ðAô¬¤êF­Ã:ú€l%‚®Gôì }GiÎsi°Æáò`€ H ÇéyÜqÏ xQÒ‹žèà 0@IþŸ`(ã°¡äÃm‚Œ€`A ¨° Ç <ž}(Ïyü~[¯qú7®z¹Â6£` ‚~Ç‹ÄË €OYê{g³r#·¹úA@dhz€)Aú—çÒ*‚Û¬5ƒ€ö8{€@š €"xAð<‚ǹó{%/\PµÍ… G*ªb + ,:rDt}„·{ŸnÖ¹ö½5hÛ€j*æÂxC†Hº8KP»tŸú–}¥Yîˆ× 8ñä(#R@¾.§íÎ[çÊê-`Iò~Ÿ yÐÏø€;!§¸ z äÛ@‡,±Ô;0!Ì1öyà*ò̹rƒl×C]¶=7PsŸÇÛÈQÀ[ŽÔ[ðÚ'“èzÕŽ[Ò|A(Êü޽÷Í/ <úŸ@'²N`2Öb´nó@§âñÂBèãÚÛâœ&¸~h¹ì‹ü'çâÞ )Á‚ýe¨îÜP¯æ¹€¶¨íÇë“L€p¢ÌJ=£ýð¯ƒFÐê3GÁâ>Gƒ- Í3€ ¹»\#"Ä`]8ƒµ§Ñà†És”€97pÇÌ € @ þ? h"A_¯øÿ€@ah:<>À€Ðñêûy¹Þ€ÌxL‰n—È5ðöz€¯˜,(ý?ÁÏ÷Ð& Ä£Pí¬Îd·œ/à%ƒŸ@0D!ô?$°P¿¬±Gð‚Ÿ€€oèT"  4Eøü¿_oÐúc ˆ»åüúÈaöPü´®Ogðï:¸ZŸ`0$¾¾Ÿ Gëö¾ÿ~Ä `+úº¿A;Làöÿ|A@V€.0 ?^Ï®[æ ?÷`H ðü|oßO‡à¹`´ì@V˜¿@`P¹߯‡›Þnü|ïÀ3èêGÑözŸ‡Ùðö¶€"ðgÚä²€N@ |ŸgÙüž€[tŸ€!ܧ{#L`Å8 øø,‹¡üˆ£h¤ºDö+ !êG™þwÙäÀ­'Ô\Ä·`…/@l~5GÑøÎ ®Ÿ.ì/ 8|íT,á½`оA@0êà8}RÌ 6µÀJvœ€'²Òõ¢ *`Xžç±ì×9ÍЀÀôá«æÁîçiÐuGaÌp€'AΜÑòGÈ{»»|äŸ8®GØ ŒŸh)î½ÈÀH·‰Ä‚7 ì´Ar›¾#Â#1€kËH~Eçâ€ÉŸ S*Îç¹þ{®   ˆÒY̹ò{žòóQ7ÌqñS> 8 h,S:ô·/l@€àLöŒ 8'§Ð€¡(h ‡€QüxÀ2Üè /÷² z8vÒÌÒçt¦xBñ˜&¯)ôx±îy7¨Eì° >j "®Ök¹ ((.‰4-ÍEòeV®å²€À{°GÁüz( sðÔ±üß1þ¹€jD…g°cbyŸ+€.ÀÎ.t¢g‚¦ûÁôË×ÒÎ|60ï` ~žà„§(‹ ~´£’ð}žÑRsZ²ôX¶€Ëh ¶Àš"Ær"tÌ'dÀÃ#Péî]èÆöŸ $}Ÿ€Æë™žm8·‹)äõ°¼,Að6÷:¸; ÕTŠfqx Ñ}øw²çxƒgØ|G@zCò‚¶{Ek’4wÖ˜¿ ,ª‚öoP°¹'ݸQ§‹ðõÚ?š±¦IIQ™&>‡¨úƒÌü•K˜îãÄyŽQౘ|@ } ‡“"¤ø‡Â,E©X¤]p–‚2õÀX Ðè HGÈø£œw0š ÁøJ€ˆ|º‡=G‹L[D$Œp‹x¨‚0p…ÈÓãoŽAìÀHãà-£,~Î@q@|ôŠ›hÿ1Ãø pF‡¡ª,±"º_ËIjj&šjkƒ5Ãõh!cøÌÙ@‚RPÆôAÐëA6Ì1rÀjþj'´‰“¤ViØ ª˜‹˜:u$ùì¦MδÄý@Ö.fÀ{†¾åÎYð8+4„£lÀ©´HùÅü=€!ª6¦øqþX£±Ô‡ ʵ1òœY{¾M%«VfbƒC€A»L>ñÜ `€$ ! Àò¨Cäz’ztVßüèY3PÓþŸ‹À_ƒèw1â=à`,ÓDN‡pøª|a Ñà8Føð#Ðõǵ ™’™5¦È~‚0DH‰# ¸€Ó*޳"ÃÌ —Ú´\"©4”Ù±ôª¨Pcøñ9>‡ÙŠ«ƒü¨Ä|\«µtÌ‹–ÔÌQ€ü\É倯.’àíCÄx8ŠòFW¹=#Sü´€#þaøHÒP~ÀÂ`a€6 €Ø/DcÂÙ áØ «™7Öùº[ˆ€€ ‡Š?Ç©Ü@)–bè=À0ò&åÍט…_‹Áfi™”?îcÕ5¾?ô×Y>l˜»,Êɽút‰Ð¹í~TÔùâšóheî¾!òG€’N`—#Q/Ðà Qæ`Œùg®¤èÇd¨cÉðBÀ£ÿ;L3¸QfTºv>×:BÄ`êIr"•NJÐxj0Ð#MJøD„}5N<È)Šj$Qùó^€L¬y£áÅÁÚ@‡}å±±úÍÍq_K¤b(7¦½£´lÑ6¿còÅÓ0þFY™1â_@“µf¨{;Fã£/%àÃWP Þà‘ßB©¾b˜¶lµ;Óç”褧aJе4‡ áÓcK @È L®¢òWHE4#(ÙøòÊa:L “¹ ¹–øæÈœŸo~–I]Ç/(½#m èÿGÙh°G¢ >8¥¦žË;]Lƶî‘&© ©„ F+&t ƒÀü1Ñ騙S%)YneÆÄì§ãþu´áðœœ`?V¾‘øA@1.*$v¨‹.Tè~M;Læù„ëø ‚ 3Z\æ–¢åßhÊÞ}{à\9I¿kÊ0og|Ð3hJƒ±ê2ªÑϵ‰®¨"€+×fàøç ï€ãö=ïHýx£Ü­›µRÓñ««U*H <Ј ›8¦¬Dó¹i2à¸K»ÆÊ cÉl#œ{Ô?1ô7f\}Ž$H<‡ b ‚r<‡°ï>HXIÿŒÓ18~úw÷?ÈŠ,"àɯƾod Oäþå” úfˆN€Ã9c~/Ô-Iþ.e\bFº7C~Åd¢`;ªø8'ð,C¥j¬$|4ãL€D“ãb!BÜzÃ:Ë0#*ê2£ÎôÁü6cr€@” z >à>ÀìAà/(‡‚„|9‚`7Q Ψ8 Tþ—cØeÌPˆ$3䔘.ö¡£lR!å (#>§à  QdŒç <0ÆÚmp_aø#ÃØC|ŠÀ"å\YœB¨HDo à AÉþœã<›î Kä) d"#,ê0L ŽÇö6#@4b€^bÄ:Žx=C|©l9ƒHb@lZ@*Aì¢ÔÜ’iÈ4c*Jáä3gp¢èÓã•§Ä1âˆ1CÚ-Â&†ÃÐ:CÄ/kõáÒ9!Ö/‹: ŠB&()®QÆ8=¢D$#~XD:ƒp7 Ï£B[ƒ`' fK$op61"Ê#p1äÌdLîfãØ“ÃJbÐã 9LÃT/âÚPäÖ‚¸j„Ü€L ¾@ aò³¡êÈ <  ¼I(!ƨŒ¢#ŽOëÊV± JaèEížåëÂkå”w v"åf6¢æ.Fœ’ƒ*5„ª•B€°XµÁüg ›±ì^Ÿ¦Æ1‰âMâNÏcF_ƒ í÷%ý9ÁúÜAøä0‚|Ç"ö̇ö,@i”M‚ξ J9-68 ¥£J3N4ŽËæ ®!æÎ3A´¡þ¡²áŽÁÞØÀ,Ë@1ÞfÝ/c8£c5úTOþ ‚Â'DšLÅ·Â"Mhô(#˜'¾{øƒæŽÔ"e&0VªæB •Ø6…š,‰þ-Ã1kÈ…jI0*£c¶aèáÞD‚ð>à/$Qk’‚òPk}5,9EBÜ,ª,  €À@n`L 0`j‹0°² '(  D2„ÔUЬ0¨è!ëRaì@!ôNÀ1f $-À, ­€®£È D®D7ÄŒ­ÂUÌfƒ,“U8“Â$( ´Ï¥\@DTHËî?îqäw b y¢ä‚Cø/è5€6%f5°6/âà'‰F§B47'ö"ìÒ¾Ã|…„ULáþ£ÙAO°4‚ÞS¨ Ö›¤uãøf@‚#­ ŽÄ:…ÐVF¨+«F¯CcdTLÇ,£Tkæ¾,eðD(>E g* ðœ!â}ì7å›b“Ò"âŸêjOÃ0‹îÜ/ø$áökPJcr-®N§cÚM%j$ÃØi‚Š©(‚.¯Âw*6EBº€Ä¦gàzvn(#@£öf²Ä!Bˆ#0V2æ“CÔ;4êìÜËÀ.ö 1`Àªá«7¥Ãsn'Rx"Í !Oä´²†Aîzà×ÀÛà D…¡È@&% | `o+Ê.¡çï7¤¦/¨ì7~`^mþ¡ŠA¨!Æ!èÀád“ÄN©bøENp2(?†¾VsþVgà!wF5ƒ5iTLÕÈ6"0—Ì"Þfn^ùk0®G¾Ž‚Ú6—`` K&ºQ£féUbdˆœâ$f£¶:”ŠC$¨ÑtV£kFFÖ;cVʦ¢kç*@d? ö¤¸:Í-6^À¤ŒBâ&Dî½gÛi`#†NGGرã€1Aê/Cþ·ÎÆ.ƒÚ}C~EQj! T:B Id‚_ÍB˜{Q‘ 1#ùbÎeÎ.…L=“:öD¢2x–CŠ@ Îà*-ÁÖ½˜ì©à4Ì,9ƒ–ŸêDã|/õвGF'LN¾A¢¹m€m„7&Ñëbc\jÃl#FÃAÃP8¦R0fHÂrÐÏazü¬ÐÁÖ¡è8âÚbã”›ãìå‚ê:ƒN.v–82¢Úª"2-šJ£J(ö_,Ã`B‚w…äúF"σ£°B§^ª‹m¦'˜EEoðo€ l!ê¡æÁàŽ¢ô0ö ÂÐêBÒXÑÛwLy"¬o¦ ª@ *`€F@R.Cð„Â8¦À)gÅ>¡ÔA€&8à$ì§ä|L-ñûh©‚²„ëà‡`=DÀV~AÆ!AÃ'ä~®–s¢&OBx3¥üèÆ˜TY\ì,âU+["ÀVnÊ-F‰ø3†rôÌú¡ï wêÊ¥úòípľ'B4 KöC`1XÖ 8g¬À¥ò¡®ð$¥nÄÅ3åf¦‚†4åâ5ªêBúp:ƒlŽÀoŽx¦¡÷J ã¤Vi‹3Ê1 B†nQÀ†öê6'Š·iþ>böA@0°wáèPèƒ2âÂIlºÀ¥´h1"#BúVC ìC0&â2@äÔ"ë;§¢&w ÄsAö?5š=ŒÍ8‰Û{Ã$ ª_°g0‚ôKƒr‘ ¾, M쪄£D„ A¯Tl.01Çà@Áà!ô'z¢ðà&NÍ|oСç&í¦!×E(s& Â,ApX†"(Ägr͸×´gŠ¡ÇvBZàš JAÊÀ$¡å®â®""-C1ÛÔ€X€>¨Á Œ¡è É¢´f¾¦—ÈMÈ‚(Œ:Û(F?ˆú€Bã,5É4=QH3·ˆB,B‚'Cÿ@¼@6¦ffæPˆ~=ÂøK!ò€Å‹ꥫÀ1“X¿Fh_„œ#}c'a‹þ€Â?£.†är7ÔZ<‡3ÆÌĆ‚À!EgMŒ„’‚4€Y"„-°®QÄpE¥LÂ!Bè_d4å|–kæŽþCàICl4f€•AØ#!ÙPèìDã úK#Ôµ`C±7¡ð1&/Žƒ¦ö±ê# +id>â½"nAäJ•†»RãØŽì„;:5©‚€F»€ _¦˜OGhJÀi‚Úó¦"!ÜbAÞ5c'6ÃDˆþÎhaÐ<ò¬CáÆÁá!C0ïâÓ(ÅMbÌÂ./âþÔh!þ›‚æ=ˆK…¤qâgÉþ("¿N)Yƒ£@Óè¼@šü$,C Fp²(—ikOÐp -¦$A LÚ9h>½Â "ÃÇj4ø"”}ÃNÖ¬®ŽE¬Ñ@  @ÄÑ@*s¥·FP1(æìÁã²clNà HË0§ ;c UÅùˆb~P¦R»@åšìÒjl¼OÂQ£¸Ž…^w jC¶âóbæYÂÒj×V.bñ—'¾™ðX;ÂÏ'#­ÅNTMJ,áûe9x±íÔdì0â‚Ï#”YOø $V¥¤Þ“:7%\yಉ&üodgcÔ^öô]¤©ØBôÚÅ\ÉŽ¤c -ZÁ"ùΩCsÛ¥`„ö'…º’‡ä,Ĩ8zŽÕ¬~Éï°tÉ L· ßöÙåN=k Ûƒ"t¤Ì"Î{¤2Êp¸‚0ù¥šbãò<ã½îƒr@„‚8^.@³.8+¯(óÊ>Ân0c7Ä(aÁîCAû\ËTD†Tåâÿ\lJØDÌ Ð° ü ^/f“Áò‡Câsþ!ˆ¡ÏàJ?À p`  “Ÿ @ˆöô~½O0‰Dd@&įw3Ø"÷x¼_ï·«èþ¿Ÿ‘@(0‚Æ"PàðÄk´Ú. Ä2 r„@ Gí€`€õðü}¾_ 0X @pìÿ?$ CøýÁPcTGØ)¿ßÑKð_À›° ð{]߯ òß@Pvêÿ{=ãà Fóa#@ÀP €ÞïÛcî@€€¼'ûèÿ£ÙŸ xÓïfþÃ0`8 °½ßϾfç>ot×à }€XÑbŠ?_ñMšÄþ‚4'Øá‡éüz¨í¬1òãîàò½€~²À{»`€à( €ì, ü8€€àAþ®ÀòŸLYøÙK*Ö !ø·ñôx~@°¬ˆë.ƒ,±¿Èp¹€žÙà{G‘úîÂàRšù±‡úÇ Ÿl2Â/Í“è|° ø€C0|5'âËÉþŸÃ{/gø ¤²bR³€ 8|ÏÉìsq¦{&©àG渭ú6~®’:¡Ép{Ÿ‡Óò#L£hö0«º6ù€À F‹[œ£ŸÀ3š}¶ó¨Å€XS'¹ò|ŸrÓ 2'£"{àC¶D6H5ŸK=x€*!ûf[àX ó™Ùõè}²Ï‰T9Èr0‚L˜_pT.E H.Ÿçˆ  x.ˆ¹ü  À{-Çâ×w€ÎuLçÒØCöýßÓõ­èºSU²î>} j [GL2u¿ [ ¾¥‰(/ R¢uès2“°¢.ª”0ÏÔxÿE ˜Ÿ r @QN^{]›åæñ>žïÇûõüý}¿_à@0û" ÑÅj¶Z.CÐ(s°pì ¢€@àwëåôù~>À€@ Š {üõ}_÷Ð üû/€õ €±Oà ðÀ Ð8쾟GÝz Ø€oÀ-‡:üÔCÀ€ äÿ~=â ¸ÀÏŸû¸~?> ×Hø ‚À}ÃîÌ÷|>_À€0*}gõ·ëòü{€Þñw° }‹b;]à&~`]0Kü¶€ø‹ô {§çãº} @Qþ bÚ`9ô~P9ø‚0!þ€`H ©éÞáDZþ|Ÿ ˜k™ü»Iúü€š„(G¹ú JƒŸé1ü{=à3`Òˆ¶ HêGGÄ| BH4  £¯j‡ ŸmÙü0N³0Ômæ¼»0§€,fìÄÌ`àlz|-g³˜G ȇëZÏ1¢|aÈs—F‘ÞXGÈ"xž§âÚÆ"-Úxõ€ ò¾’D§ÁöHÇ⊾4'ð¶¨l(±UÀTz}çò+[t¶y-3X‚0H(ž§Yì~'´vÔLuÓ„íGô¶É ì~8RK '‘à ­`²Îu(bÖµ {ºx'éê»(Ö˜ @#à( }ämiŒ€³l sà5cᮀDˆ‡ÊoL'ÝëAä<Çïà)UP?ÇÛ˜OÔnŽöX@Èa†$92BxAH™bPeõ¥ À` `8@$‰‡þƒ„w0¤ øKà˜}Žaô‡»Ö/ˆ”ØÐ{×`. . @Èhi±Ú=à9µ¦AôÞ1Éaæ î¦D~A"[o„€AútˆúKJ m$¤äQ²ªFå z–àHGðùåìšWpÌÊ ƒP` Á„ðm€FÅôе¸OH¼bkh»%cªŒK± [ÑÜ@‰p^ÜxÀˆ„TG¤ðµJC y“q;È9Ã8ý’ÔŠC`kRìMô†(ÆìÜà[R/Ãô|Pu@:à÷"ð¾ˆÂ¶Š ¶€ÃP=æZ%,èV1"èðiXÒ1b’%Þ‘uc ÚÚ;J¼Ÿ*s a[b`ðzÐS ÒQA¨Ä“ê=ÀR|Žó<²>¡öG˜ãܵ¦f’"ñ#èÆRØ¥œ¿‹Å*‡¿Ër(ùW탗èl aà‡`Ü¢ÌgAN6ÀGcíË‚"O¡µ<;QÖR &˜v€r5dӚǠDL‘p<Ê%²&Ö°1ñX{¢ÐGÀ`#OeÓ9„<±k&¬Î‘b[ê3'Í„ºs /ÚqGA‘ @ •€( 1µ9’ºS$ŒËq9 `€"†@sê±#è ôÀPÀp ƒ OI %Kô°”M8G4¾ÕUØ€£¶ÑpÀØH}BD‰ˆJ-°š3ÞBͺ¡l'Sµ°\ïIU|$Aà‘Û*àDè¨Q(!kró2Áö Iâ8gTœ…¸mP2‰i®±àç Yú_y]¬=Jb4‡Ô¸Þaç‡Ç¢]l hÒ—ûT¼L ¡KW°vG«‰j¹œ÷reKñã§æ—«•>Çy¨HŽ­k‚ìd‡úË&4ÈTfžðwc”zÑÖ€1ÛY!+Y“ú^ŽìÂ*fµôn»¤À£é r‡ŒGÌ:JÍ ’#BGð÷à~ŽÒÄÑ™Ê1§X¡™‚‚˜ ôcâM‘å ú8hi*È{rÖáG+ì<µ¡ S (ù/‰$ñ°vÀa‡$cÈtqâ:GóbH44žõýãµÃ"D\4 ëÜH¤b@Û\´!OA¦€÷ÕH§cÌ}!Æ;ÀPàô%R?G(ýÔzÃeåt¤§€Ëô2€ø@ }ŒaÒ7vA·àu§¦-l’1¾[I'8!¡úeGê¼Æ…/rÝŠ0y=.yY¥ÁˆÅ€IPÌxö±f}/âë"§éYà£`{Óćªü´Éf·ieCè}È×K­2¶¤”\˜J °,˜¶ÚftOF#LôSr=rjMÀÂp\Œy•~£Ðz@”¨«Žê9Hcâ˜Ó"ó»KÜ  ^®ÖÅù1ªóÄW‡Èî¦d–”ƒ$`R0N¬ƒÒò&Y‹>p–@¯ €~„!e÷¨cZ½ ï"éY—Ÿ•›tíÂ4>¢ üƒã÷3ä±Ùî‚S.œÚÉT9„‚1OÔ6áèo6(IJ¯¡êcnÀƒ%€+aù¦¾:b„k©Eåâ,dÞCe¬p†º/PîNþê¡úbÆ#/hPVh,áíG@'¤´1‹N ãŠG ìB¤H“N‰ ÃVl!ð:aþaäaÜ!΂€0: $¬Bèà"^a¨-¢5ƒ„4(fÚ("̆‹,  ˆ@` > &0ÌbAÊ@"  d’€JáÔ€6êF?ªxUä™Âc¦@H êÔ’è`uÁâ 5¨Äp‚$e¨PT%ØÀ0¥æ{#„"©deÍF<ÃÞmlÖ.Ë`ɬ. ƒü4‹–:JdÃæÂ>(ü¯£Vñm8FmLfLd4èTÁCÞA¥fòcÛCvUå^òB†5hHG(d£m¯N-*@ä0¬Š({Î.„:¶ÃÚÄh" ¢2HF^èî'âÚ™æ¦(…p9EÀOG 'Æ(ÈÂÖ$%eæa3‚D#bä;)¸P,>g|肺@‹âMÃ1ãUå4¿MT#(8âI,Be¤.ôGaþÅ€(|AÒÜ¡Ø;ÐÆ±$ŒTË +c„ž100BòµM¬æbÑŽæB¶#L6#Æ`  GFâÒ‰%ä'å@i4#¢AÌTaða¸àÆ/¥¤Ícß'l3âÚ8iK"ŒWNšžDÄ0$žŠãcN¡âá"ÂæG¢„7b.OT”ƒF8b"[…t¢\Z7!(DD,ô!o 66ÇÚMÃP_ 8•Áä³L — @J@`à "À8€à(à*Ã캀ciòEaÞ"d>Æœ½^_(”‘@Ód`‚× ão©Þd‚$>AÜ!à0Õà2?K²| ž C 8Dj†ÄÆB"6@þ¢J‰Ho³L‚&C(ì”…¸~£ ë#$Žr7!ðtƒrÙz`‡Ú¥áä¡ìįd¼O®L^VŒF[P A‚ý"m8)Þ:„6ÈÂ~,Œø(„’s"ÙÄ\ÞBn;?¤ºÃæhdÍʱåNóæð,Cô†##ÔÐÀ¢> 'ãTÄà;£O ô®Ì0D.8l&aà(LJºÅ }blµfdâårõªx— EõœVeu$äfb0Hêà,T!Ä1¡Ð/ÄE 3OÂ;£BPaú‰'†8G‡¾,åBÏ€Â/? BHŒµcFkTT„Â()ŠaðÀ,A ¥–8À  èo¶Ÿ'm¡K$€ô¢†•œ†#Bóȃ4Zˆæy$áÊ $  Xà”H¡Ü 0­êÏ„Öb‚&0nbÀm À4à^aŠA¸AæD@$aÞ/UÂ0Aãz-‚~(f,ß„4‰t5¦X¬£¦(Ðï$¨Q`Äb5Š&¾`›f ‡ ÀA`'þKaò.bŠd$ŒÎcº!g4mdè3LKB¶MæÖ'„yÃ7`º¤P㮆´d¢(Bö>#ºHÂ"¥õÒ„Ý`"ÀL(Ä–ÌZÅ\í  vª'äœom!DFEäF´cƒCœ-"Æ#¬¢Ì‰0´W+>'#¦+¦š÷êW&JNH(o Ft…ã1âÚAàBîæefZB×FèŒ>á÷ Ï]'Á3BvòHF¸@: @†º×\/dHmp¬„c#"†!#´S¥\8d»äz+Š|l£Ç@8E¦š("Ì“-ò-¥4¥/@@~¡DAô¬ !Þé7BEL.Åt"f¦ ƒ¢#X,È'‚öID/lнÃrŽ\dwAiV)ߊf6t§b*Pêú L™O%Z—#„–„z,Dzê  @°Ënº”E@ãô`¸CGEàrÀ .+`à Z@º` 0@é}w“ŽüÅBêªú€Nö¼Äj"fÓF„l!ïdÌ7iª#C2o£ÄT80êJkæBÏ(¹ZƒY‹.0¸ JCœ>àÅáöÅæ~=ç¾&Y ðïdÖI½dj<¢Îƒ |ÉÀ@Q@-I+f,Â&âã$Ò“kÖ`†f7dV(Á÷/t•È&<@;O&z-žò¥gMãæ4Cm­©¡‹´"hî` BSø;²‹ƒÌ1Ct™@—^ÓClºÆ,DBÌì‚ø¿ ^¤ˆPOd[@½…†EºyŽºÓ‹úL$„#O¬êlîŒC¤ŒSU¯ìÈfB0£$p|/Å^\VeXªýC’:f ŠÍÉs X\/&ñ)#55Úðkà¹Þƒº2âøZ9š6Ñ^Ë"Ò‘BàáÈ!èAî(l´³¢¾øáòp!²t9fâ!B i×4Vf§ Å8[‚2ˆNη#¼$zpÁæáåtà`” Hw^§ŠÊ!öÆ#„/ØH꣒UAü> bAŒ°AØáüw”ã‹‚&JJBMùÑŠl!䊬%–£²É¨Vnº\N…^T"Ô5µ`¶Ig¤Ô ›(,Pv £1,ŠL1êF¥RK§¥âÿõ¼0"áO""WK¾T5ÐG¬–`Eò2Îü6/´ä”(¦j`'Mfk"x6þ•,ErPmÉ·ôÍ€#*値º.É¥ä–-·$¬4jÈ(dÂZS|Eù8h"yogš:±êµ&³‹Åâ[£%›øœ¤`0‚¾B{ô>-&ˆìQ$w”x3€D’Ppvd%\,ļž#˜=ã.Ó‚ø¶ày %Åm£®éHmf#Z(Ìò6†Ê8Ñ@G  ©%N“RÈ1Cl41Ð!ÒWE¸!|Áþ¡˜×¡¾!¯  dÇ<£Þ8n]©rnð74Ãâ0k%:)H1„±Ìº8Bˆ5©Ë˜ä!|¼Œ(bíܦX'#tƒ¦b„ #[„$ŒøåzLaà-Ši#:( i¢:k´¸I\ðaݦ€v `R€V òöG¼ˆ£vøâº"£ã ÅôUû’deµÞÄeñ°-¢3páw„°ªã EîTèïp*¥õ®À²s¿"" â Ç+ʤˆÀ4L€98»piŠNX¯ÝÜ6 :‰AÞDiÖ(â:4ŠV…^3V B\Ñ6õž›‚fòÑvF(Í(Pkbi*7H•"14ÀI2“D BªúN` J•è'¤°®ª[ PÂÕjjDF|…Ð(}d_JUäP!òJ-Ù¡ê„v—æ- Ù€1#ñ˜¼L„¢o&òÁß¾âqÆrÐm5d! $"©×^¥À-HP•]:¤’€K¬»â~d–~dÉdÔáè¡æ °˜$ _  X(ímºÞ@€¢qhÔJ+@/Àÿ%?ŸÀ,ƒ/ÀDü{?^ŽGxD 3bG˵ö›<ŸÓiKþPüÀàp(!û†P+!¸Øf¹¯Á9Úƒ½"¯§Ô©öå8˜>Éí¯çè øÿ€i7¸›üý_ïÚ{þUn’_Àëÿ$»€«sêªþ}¾€ à “¿Àv×Î$?€²§Èú½±QKø ~S&QGèJo0à+€/»>€ÀÀ}ój}€ðà`½þÙ‚nOJ‹åöùz½ßo9HB€»Ðˆ ß/Oè§.ç¢Özh¨£à(1,hc'ÐÀ#™æ§©äמ¬˜ ŠˆÏ*I¡ü‚§éð}€ÇÊìŸ.9ôy§Éï¿îPŸGÁô{ Ó€*“”ã´§éî}< 9€!¸à$~ŸsZ*à€mBR-i+¤lÐÿ€ÛÀwÇÃEP` # @#ñ˜xÇ;lxGù®{G–u™fYÚaž‘°{3é9ôÚ¢®B’¢®S&}4(ºÜر |¼çÇtÄx­`.¿6‰ ØŸÓAîK@ ôÔ1(«^4ó$„®GëBŸøl"€0~³úßj•È’ŸìÔ`8Å âà”€íùê c\ `+;ž PŒ1qø¥G¢(z¢³Ê%l°6§Ñþ{´ó¸v"“5´”€ÍúíQ>|º’ÈÀàŠÌ`µ€ðTôÚ-g–Ф8’$%'ð ƒwÇÑâ~¡(úî-mò$¹#°2U…ŸçªU^6 Cb4LÁø{¢XiôŸgð&Ыà@çð ¡Ÿ cfÀ;0¡Gà(yÑç±ÞýÀ8 J÷ÛM ,„ |€‡³=ŒÕ Hkyÿ®žG¦–›å„})èÔ-Í¢>-®š0“ËÙøx¼G–Å…ž¸0{ª û3B`Q€r2¡*G¼P|¬RÐÏŸL*.½×¼Òàõ@4žyç±áa8ïúÿ ³u€Ü7 {$}žÇ¹øz­àczégáúá[c`%³|…Ox@Ém>áðSŒ-Ç]¨Ä¼?‘˜:éÜ|qàºO(ïƒàu` [y 1‡Äƒ‘¶<Çဠþÿƒ0P ý?à˜süŒ!oçóýö‚Á€``8€Ÿ¯WëÑÈï ”ÆƒÒhÐBùu¿O—³Ñþü|¿¡` úÈGÈ´.ÙMÖÓIÈé|ˆAîàè<úPŸ 0 ü ~A¨Oë |?_¯˜8È?Ÿo×õÈY€oçÃü`F0Ø7ëò8û…‚À E!öû>ÞÏ›ûì¼€ð‡À.~E€Ùûsð´æϬø·ß,1·Óÿá€ÏàCàü|IÁ@X7ö{¾_O}x*„¿± P  ¾Þ§£Û>¬ «À4Ý{À¯—ÛÌõy¿@ `.ì5-è~¢@*,®X 1§Ú~‹а‡ð ¯¡òçéì~€GÓRíø8- ½ÀØ  ž§ØÔ€lþÙ¡ú„ ‡û¸–¯G¹þ|€È“Vp#†ȹ袨è‚Ê-˜ ê>~€îˆ5-2Œ¼¬‹ À8!Èh €xH9Üí.Ìø |CoH÷  8|xžñ)Î̇AÖaçy‚n§ÁæzÎ4›1Íè³MÀ&|1Íê¸0Ê‚`Iö{žìs -çÔJ ,À¸ ð4qE€ÀL Ÿ` q˜×H‰ô|GyöjJ1ê['Û†},ˆ†ÕŽ :"[>€@²Îú⇧x @!†à˜4¡{@~I0yÈG¼›-+uj~V§ À€â`ê9ùô/îà®È[ºìÐÏ+KRï"#”‚—iäTC§tV§Ð7{Gq¨~×B£Ë<^ï!f,…Œ1â‹é52Õ¢J./3ç¤"Þ@š8tÇÇtÏVmB4×@tX‹·5ŒzÇéîvŸH¯ @ z¬‡»<Lø'dƒqà~G‘ö|ÝÀ} £‡ËpužŠYëÍYçòOœÇÁ蟠YügøÇêþéuÇå”gÀ+ÎŒ™Þ¼]—Z¢s»Éžj’ ry²g¶‚|Ÿ.B[7´¨’Ò²Ëw–~€ðz­ÜÀ(‡»P°-_Ú…"ò‚|k×}­çàÑ=]kf쟨v'~$Æ=ˆÉemàÞ¼CºB!?>Ãôy$?@H$Ä|v’K`÷íD:÷Úñý¦Ln7ÓŽÈñ D¢b aˆ"0$ýºâˆ]øö€0,Ð{˜øKcÐQÆ<€P@ð%ƒ`H?8øcà{3qöaL ˜€h„?Áp ä ñ´7¨âÃ̱Î@qyv+²¾Ør_ qB3‰˜ƒ Fºb@/ƒíŠ ="@î¢CÄ!A8‰¼®ùÒl;¦¸„š[‡ëõT ¢€w2š8FÁ ‘ºkÌjcÄX}"ô¯Ð2HL {¨ÁêçÒ‰x&€€Aô·–ðÿ`,þ·¡ü<ÇÉd(FeBµµBAÈsÔ*eÍ"PŽá,ë™:ÕŒŸØ4£Ùp!c^`+Äé¸ËÒ¼‡á¶  #bX@eÈä´’9Ì»q4!Ä¢ðkäy 7H‡Sz=Š2ˆ#ØÒ¸AöŒGÚ6ƈÃ;":S ù¾§v[JŠì”” fà°  üô(¹£¦áò>’6ØÉÑæ€P6)Ä¢öŒò¸!I°£$’B 9E Uɤ6‹£) ¢d~‚úý‹©` +‘‡ö>D¼í~ÌóöR/¶"ÄýDè0pßiÝ3ê²Ôê€ [‰\òÒ£$ .vK°æ7P`lHtv£[¢>Ša;tö>Bˆ©†{ .’$BË©F̈¢S´ÀQ"$ 6µD¡ôòG”Oá8„ (ýä ¡ì< šµ7ÐD|‘¢În™Ý T€4†àÜ£ r 6GF4xµÍX¸A«häpÇòÜQ·i?;¨ð½ÓV[©n*R%Ö 4|A€šN•/ÀY{:$I“.”±wR€ñaLµd©92Þ>À9ߦv°š ¸ÑÈÙŽ=-£¤Õâbeš‹ÃØx¨“¨#Ì/`8õ€ê€p>н^„pÈ)§(ÀP2Ñ!¸@f‚} ãÌ–ÇÊa™$¢'P"[\ÎÀí^[Ea¸¨‰Â<&Xñ‰ˆ„ƹcäŽçxvŽÐ =Á€@€´ÇR ™Þ5tù#ZG‘Ñšà$kÀ8G¸æ#8tŒ±ª>›0öó©%¹›ã0›íÐ ­·:…@(öÀ|€À,hž(~¢iö À&@À8ï"uà")c¨òªR2î¨3 $`&Cr!úašÎ!ÐÁêM‰GÉ((C/C‚B" 5!þó‚ˆËƒ)ÞšK -àNU&$ `x€¬Ü(„"LIcøçbe!øÅ,XݪþN&’†’©`¤æáMÚ€¢Æ(ľϢvDú b§âŇ:¯ì¼3Â0!£°º#zî’€d Œ‚ þCjH (]È; FBVŠªÀ=ê€Bb-%Ðígl™É(¤cÀâ#§’Ú z(ƒ¸3çö áØ AÞ¡Ì•)°EÄbþBÂ\zÒ,X,t–8#Ü%OTTÂÀ (BÀ.háØVmÐaf—e¼6Ê.;D`þBL%EP%L†¤…fšˆŽbÄ67㨂–¢À¥²émF-.ÈÅ I‘Ê”ƒ2ì4\ñ|¯¢V=D|ƒ|=FôTÔ6ÈüD"’× ™ d"(Ðn2ã`GÈJö<)XŠ€X¤v#¯Œ´Áî´"$,ÂÞ¼æJ?‚8-ä€N`!Ü.!؇ †nÅ@  /Ô†b! † R‚†pëÈj]"-ƒ€¬|Ú L"º!æAâ!à@¢@~ jÁüAôM®²F¢8%Gð ‰öˆ&@(ÀvažÁ¼ÁÒ¡äÀêòÿƒKbÊ2þ­Ã¸Ã~#¤r0Ò× RI€4³&1À ɨ)ŒTvÄÞcCª‚Ì‚*BÊ>Q5âþ)e!¢òx‡ðD ËÃøD‚ò$@¢Ø‚"MÅ”hn:~ê!gª!OXFãp¼ êBè·BòÌ™Æ/Áüo6Í”ÓÄ3éÀ ˆKpb" N`PÂ@mÙà 1ª*! fŸcRÈHIºpê&5ÂÆ&f¶“&@áÒ/AÖ^@0tM„€JÌj–&y©úwáøèqØ/%‚cÃÌêUHv½öãú/çèŒÁø@]ê"æ.OãE• „Œ>bê<…~6XÅ7Ìq@åå8H‚; ¡A†¡”ØÃìv*#ä|,‚17&Ši%€Ï„P.Å”ÕÏì« —­\C¡à @\`æÀ$=€*YBD¬Ãò¥Ø²¢Ö šN†\(Ã$ÅEØcŠ#¢è4Æ–¤ÍÃäÌ–;ž…¸2åÀM‚D¤„Õ…jÀÌ ‚î]…Ćã(K굡öÂEóÊ7¡æ]9 "GDkpb4&öô'‡5lNPW"2$rhG*nN‚G‡ê¢ôôR) ö,#õabX~MÁü¤ €O0îgÈ¢$Ncî8'4=C£¤ ¯XÏä ¯äUÄé!ùCæ4.„ ?‹tA6.B;0ò ¢.)aˆš.D>ÕÇÚL'¹¤Bò0´ìðf¬T.GTt–R8¦6™¢À(ŒØ ÂÁ>E6Âã!æŠ×îEáúˆãl,Àž‰²="‚C¥ä'åd¥*~@Œ4cÉL–òI$>¤…ÑC\Ä4ëCKàZQ–¡ž|,*!-‡(R‡iˆf" øËÌ`†‹ŘÚÏ*` Kå4| '+ z mÀÓ,¥5áøÔ‡à/KV/à'Á÷.@ aÀ¡¦AÎ 0áØÅ^,rq,3är?b¾"8/â/ôˆ>QbŒu&E“q)q!¨v¼8@ÂBÃF(Ã;28"|$|ªƒÒ,–û¢ÎMśŀ1£|)0Ê-é6/ ðÒ!ä-ì^uà +ÃG$@™©(ÙRX,§«[D¬I*|cõd¢<.Lü5$"¼.(¤ÚIƒÞ©äB0ÂÊÅ„¡Eú¨´h£8D5ƒ0‚7BK @ä 5äàÅF¨cK¦ÌœvŶ"él"Ä6v¶Óã ó ãÜÅd:VeP/$$D'ñE3‚¯â»ƒ^.Îíˆ]¦>ª6…ptIÐåhikRZ-ê¬>Ã7©Ä¢4f80Å’ç °böj0“l´ÉTÄ$$ãd7ÅtELDDáè ýG™%ƒ2?‡ö¿–¤faòbÞ}X`îbú•Ã>5eî«ì"xº`c*¸ÇVó‚Æ0g:H¾3ØtNB#¨Ç~!¬~àAÐ`‚ã#>~¢x„Pã.›$7 )üçðî$ÇYº°Â `L€žÀ" B@R'PÀ$îÍ®ÂfµŽÐ;thã ›8øæ§$r ” y‚:2¢@r<ü4H{2ïò(¤>:‹Á|j^½d|2 ž6ãŽieeªFÄäEèDŽ%B%„„5È"/˜àI£7CÓmL'ZM1t¼ú~·Ê`cC"p-ä\t¤"ècW‰!§a(Bå6~,Ðà%- ÔìR¦öX[„{.I~Õù%åGŒ†ôV®p .´ÊÃÄå‚"ó !cƒªN¡þš³ ƒ^‘I5!è¤` '1\>‰-•¥dhá·^m€,·=(gàØhjUb–"o 9­§bNÃÄÔaÁv’ºÀ’`N(²•tj<ëdTH P³‚ a:€p¡žA¶ÁÜð7¨¯<›(r(Âå…m‚ú× m'#Æ€;@D'¨'ãzæL}üNB@¾œ"¤’tB:¶2€#D8!aê5/ …S<=_|¦Š.ÙÎJêž=+ì"b@!6|B uáþÿsä)P9¡úêfáë—£/DYtƒµx‘|MÐl"Â4/‚ 1Æp1° þJ\ÅŒJI‚ô-ƒR(Ö"°b¢ç¶#í]L‘2Iv˜,´|AÊh1âÊ]ãØ]¼MWéæ!¦’`‚úy…Þ=Ï>Xé=ó^%®#@ª‡î#î\‚òÙqÆ…¤Ë!Áè[g?ÆNÉo’9iR;FK|ôÐDþï•ÓìÅãÂa‚×b8"Ɔí \Dƒ|€£HAã|kg'V8¬^NŠf‚&Z¯éÜ›gö:Ý ä6×|°Ïö™³ÈEV¬<ó¼B bcRAÁÌpúáà!¦ab3laï@g`UnG%Þ£ÂÐúAâ.RÉ­CƒüHáÞ>@yE`\&l}ŸâÒC‚ðjáøu£¬ƒgS/‚Š-&P"ð| 1±>‚>F>2Ô¾B±%qtM˜"ÂCVÎæR3Ä›CÂŒ?,&jØ|` GÚÃJ.1³'e¿‚õ€HzNuí"‚#ø™c¼¨ð¾„˜nB”bJàNdè5kògƒtÃD7­3Sj;Â!j!*ä(4‚3ð¸36` kE“²Q$ Ï%„šuXª­Ê–Ôbá|£0±­çþHð`4{p"Ç`MÔ!€D·G^:#¢—±Q5"<"øšãõBö?q¼â¥Ú¿Ã@Á§4­L^ÜÄ"I*—m‰5*@0 D†~n`òÏò“ - šNT c0‘Vî[‚}¹#Dš˜"0Ö©ÑkAÒpÉ\ à,þÁ×Ó™êÿ@tF‰Å#˜„b&‹Á€ `4¿@ à#éèûx¸ž!xÀ„HŠŽ×Èyöðr¿Ÿn÷ãü~ÑÀ8CÝþøÁ#€{EÀál;À-Ü OÐ3ýþú‰?@@` ü{ÄŸ1(ð ¾ßï×à ¢௨…íþþ|¿Ÿï¸xE@ 7íà G¢€Ÿôò þÉŸ öaüþ¾Ÿ/°hø¾?€À@Íú¿€ ¬h3o}Ü_¶ˆ€ @}gž›0FD ´ßÏ׸$úÝ_pcñüôÒáÀà#ï GÄ­t]G£ÍÀŸïÌÝöP¿ÀWóßd €)ê•¿+‹ Ï8‡èÛŸí›f+@µŽ êÓŸLL0Ȩ­}° H;lÈŸ€d‚©L†»Ÿà Aü?‡©óà¡ðÓä‚ ø €gÉÞ§£0ÉÁŒ)ì~'¹òàHàQî½Cç°}Ÿ@ü~4,¨",:±çÙêÑÈx }Ÿ1ò½ 1úñö2O BÚŸ ò3ÔÄ~K¨‡‘ô{¸ïŠÅ¼L~6'üôµ²3±ô½8è@ïøÀ­ í2q@ú¿`@ |àX`•BrŸ§™ÊÌǤ´|€«!ó7°ç`¾žÇ‘RižÅaŒzŸ‡qærLµÒâ‹LR½ŸUY÷Ÿˆîzž‡éë0Jú×6¬Áò€aC   B¨Lž P$ŸçRîw5€ˆàJÒY×%žHŒmX8Èó`¡ž®‘óP­m47ŸjSn$¼{Ÿ ÅX-WR$bHˆf¡æ}ã ‡Ÿ`*Ì ö¯ÖH…,¹3ð²ò¸Ks¢É¯Æš¿ àÀ „nu>'p:"O–` ðãb“Ð@2Û#Ù!ý)]‹$C6èÂ~± O –4Ùí½»Ë³‰fTlzh»ïö>5‘÷з G‡Åؽ5'åMÅ´€è|»‡²Ä `*ƒ1ÒÆnyžç‰åÛ€ (?çg"y;«_’ '®X~hhð¶8 ½€í®¶|8‘~“ñH&ûg±îwÊMWDõ¾ÛãQãªTEäÕÈpR‘ûN/ —ÀX2°/m$Ýã<<0àI :<’ë@t:Ö°ŸšÑ(!üpú@@€ P0  }ÀŸð8C!à h( A@0<÷z>ž.7pDœ-…â€+Åþ!ÈÞχcáûˆÇ`pðÿ} ‚€‘ÐEªàp¶ÝNg`ä ‚ÀàXX:ñ?^ð öß@ ò²~Ï_ÀÐ öú€@ÓpHÄ?AÐ ÀzØÀ #üü€Ÿ §ø ž€_Ï«³ó& U¯ô_Øš$úXrÀ@ÿ\YqOà#úçYâm`;5ÿZ¶l,€€`!êÿ=^LcÔ?ŸóÀ#ë¤ö¾Ààø }½ö½`³ý…¾_—k ±?/ïëø #sÖ‚s [áøŸoBòªG˜ÇáòŸ‹€ ¬€K‰þ~ŸGêÜyŸ§áö~ 8 ÃÌÚæ|-±ðº¨( {nñúGè»(+¿ÀCü|PPØçñð¬Ÿ*è …€Àü=ûæ|"'ÓüzžÊÐ # O[äzO³:û-(‹`ë+ !øÉL+ÐÂÈYô„ŸÑÿ¶H-’*"é.À3rÃG‘öžLÀà‚âyL§´~Ÿ'û»C :È*gÉöˆŸŽ˜ àPÒrÀ¹>Ϡʇ¼'8¬ ì :@H ;@8xžkAêÄ'slv²@zÉeç©öéêOgÙNc§¹¸vœ,$K ´ó*žÓжÄQ`1÷¯*ãìÇ!në€Ü€`{Z}`¼‚e  'r,±#§-ÐÒ’ó_'»Ë‡, ž‡«${0 #ÄÉ8‘þ²c‡ðÚ€@ªð#g¡ìG¹âв ñ‰žÌx(RìÒ¡'ã{À…Ÿ "C8 Ü+” Æ à;Ž~áÐ[ê`6çÉë7ÙÌkìàK²kXy¡gÛ²?lr²ˆÊP ì“ÎηNc¼äb}­îE “tÇ­gè-<}xÔ‡ìž×‡±ô}s@DaHšÃɬpÓ ïÑþ{žìšºŽ*‹ šŒ™ä|'ÇRºnˆìÜ '-€G©òÀS5ö„Øð ¤"|'©±ø-KÊ€`J¥]hÇyô|ž MjÒgœpØ,ÕžzÖDØt€ ÔxÉg»¸ ® “§¸°ýÃÜ·qÞPôToV±â?GJ†$ "TGhÝ&ÄH‡S]!\0y)à€X ÄHðò£Ä°`Â(0 x0D?‡ âCÌu9´ˆyMN.è~*A°#€oŽÔ8Ç8cx €Ã¢ªy BeÌ"ÒÊÇØ‘fJJù!7ª?€Ar%ÈÎ3À Y‡ÙIç}€Cr‘ÀˆIA•–ò_Ó‡a¦% “²Ì{€sl`—“š;ÀÇ ÎmÌs,ÌÇ’ºOLé\4%Óü‡ÀõêB¸ùΫ@Yãì5àÀCë=j,îñú¹Gôu ú'C0˜M€üÔ}€ú…Ÿ:GG%ê0Þ˜A£ÂJ0 ZÇÐ&=ÈBÍÀ 'M?€6ñŒÈÎðºÌsX=Ñ`z p€¢x s‡’sUù:ðQèöCÐ{—Ãhxˆ N-t¶)›æ¸Ž²i™#¬‚dѱ|èµ'¤ê<|ŒS@+ÓH3$¤ƒ^ªwrÌNQ©Y ÀJ ?ż~À E9“I*”x€€='˜†Ñ*/ [q6’5!‘îg¬-J@Hò˜CÖ\^9àh] –’ºä~WÕÄ­“1ú;L… ³ÚKlê2¸ë<>%áã—’$ÏŠTL¤Øž°®ÇøŽ#ÜáTÜÊ‹43ž>TÃhŒJr¨å˜Ñ°àæœrw@ižä>\ˆ9å @@DU’¥=ãÕ 1aìƒ)¨úz„ðÛ!£†@UC¤°—‰dG’£@)áà”¡€ HÕL"ÂÒMÖ{ =2Á1ä:ÚñÀ6ê€#%LT·È´bàLjY±tƒÜ}QPkÙ¡ä{(„Y)q'n<Æ“0 ëGª%ÅಠÔG¢§?ÈÌ~µ b‹LÂçX7à×Uó\BHIrÔ"JæÜ=Ù’IŒIO)⛟Q£ V]¹ ’Üÿj@vMuŒGñ¤ k¤rÊX@iÛ8¦ðºÝÒwf@y–3ýÇúç†'øy`#c¹8ÉÔÃu!DHø)kˆ  " 4¸ú®ÇÖc˜z˜ ðE@¤Ð áˆâcÄuØúã›ÃçPÒT°Z€86CdoÂ:é@ o ™ ]wˆ»ü¬z&¾Ý4AQU1MK [14í§³ ^#JžŒwïÆFYGò–x¥ñCBÒ@,i¦‚Á“åF“ÙïwERø7ƒjvK@÷AšPÚªÀÈÀY2Iì©´CN>yÃ23à-êóÁþ<[õà©9å|Æ š›ò!”?ÆQi­hXäúGy"ƒ$µÝ¤N5 šÒÓ0#”w0ˆe‘€AêGpúH‰µçVÁ%l ëØydCäh@¨ì®R´I®“éð g ,ƒ©ŒÂgÜœX-„wPÞ>Çœ~l]/M4>?9Ž«Á”Ô®ª‚>G‘®m”´É$Ø^ÇÑ`ü$&k0Þ*>èF䙞µdwˆ =~Y‰ˆb…Vr'§¹-¨Upà îxÉZ61óì>Éû¸0¤ßaþ>¢îGyÌЉӲHÍ(\å|ÈÙƒÌ5à@£âAð™‰> ,)tõ\¬úV"èwášAÒá–á„+6HÄèêLè¤Ià4¶N…JH¢Ñ'Ñ>cçg†0À¦ |@Fà.À¤NNŠ,‚âîgØ1 (\úc@c¥ ÒÅx=oBëÐx'¬(0âÐe‚ODÊ6-¸cƒB5†Fo²Þ•C\f悉6!"n8cL£€ ã¾<­°æBþK¥4NÃÉå0S.,‰ªCé.d6S"ø>EÔ2D#bqɬbBÈ-bª˜Wf€ƒ†;f7…Ë@(eÞeܤI =‚Ì1äܘ2elx¾C 7$4'¾,dMÂä Jj;ŠD3cC Hâ1Ãi$>D* ëÎ1¤Âxæ8,ƒª¹¢à„“ áðó¡ü‚Ü¥ØÖ"ÖbÈ\DŠ^"'!ð$"à×B.1&;*¦†Aäœ`~ –Ù  ú„aÚ-è>B¦$t…à\Ül!®á¼Ò!ÖÀà8 ÉXúï¶O#\=À²@h#äfc¦0©Î´"òqÂÊ.B6@ƒZF¤&|êj-dpJ¸+„¶:‚þÑclí>+HR 0ùÄÂjhü1CmÑÖò¤ž*€¬ 0¬®AâÂ'd7‚à+¢øgBÈ”@ …ÖEDHî¯*>O^âÊX'šÎ<ã ¥d¼h26S< ¢¦RêTeF÷úHƒÀ¬Þ=jä6+L¹äŠD>@Ë"=c¶H¥Ö-Çz'²/"Öc‚€eg¾Oe Cäœ5'OáöÈ!æÿ¥~óšf‡6HÂÚg'´,%DK%F…î+âÜ:Ü® &¢¢Ðh¶VcXËF/‚þ¨óR6Aö$)ŽhFn‰¾!æ¡âa²!Ò¡¤AlZ Ôª¦JJ®!Ò"'c¤:)’6!ò- ®CCÐè£RjÂæK€‚ àf€hà0 !æZ#ÊI¡ì?O°c…dFO#ev/" D¨¾6 4Táöxñà"¬#ªDn"¢\8ƒˆ13îò$«‚ü†VÃ(+d:!Þ]@ì†Dü@¨#¸Ÿê’ºª¤.Å`hˆCˆŽ`3‚Þa£ .«ê"¬”`f­8CÊÂ#IÔv®iæÈ‹“ n+%x"'x¹äfaÜeÜàÁüà*cïB"lìT&#,Fl\+‚ë%<%53DÊJ DNãîú¦Àšd¨0ï®%¦ª®5…4F&„R@º@ d4~É0”§V<… Ï41\ìÅp!êä‚„4R’æFåS<Ñdˆ–"ì~Ód8 4,vúÜMÁä+ ; (æ ¦=ËÙ/l5ƒ0:C\;°ä2ÔºP&tyAðu±Ì1ââ’)´DôeG^€aÀ¦ä€Að@+ 64áºh¦š7ò!ãX!¦'@BŒs,è<¦ ¨PKªÉGáâèh €d‡j` €E¤ÇÀÔgë0¥†55@\(`pá°áºáÖ¡Ú @>œÄÜlj>C`=é"1£[Fì7¥NH ã¦XƒÜwD2>Ãg@&Ôú- ®ª3ÂAñþcƒ>5„ËFbxÄâ6Èz¡òBÊŽp ‚6Ä>sd³ãª Mø·„÷ZJ4AíB,‚GxspNì.ÚdËa$öK¶w1(>ƒXã#æ½§<:ÂA¤Ô>Ãôu"MåÈ=g,Ð@ Ά‰Hç8l`hB#K§äÞ!ê@ƒôKÃ;„;‡¦Bêý£jhŒt8CZgE ¦¤<†$žc°ƒ0… 4 J+6En ‚6ª/à¨&1ïº~C(d†”–n“G~¢£-x#BšdŒ:&Üõì*hÅN. ªSÇÏ:ÎpB¤âDºÍÚ µìMäv„â¶ÖJ޼æ$&Ã& B~SC(mà /¯ŠškƒQƒr&ðâ~dâdað㬱ÞÁžA^ ÁâUD5Ð ¸ü?Þ>4¼T¤2KÆr:èRÂ' X…À4€&ÀX€œ!ú*ôàAü§Å0>'J=÷X*Âì!gì©Ú*€ûn¶2Žˆ¤B¬lDaÆ8€.Ýäz8ö2JCP¼6fnFã6Çä÷P/ä½)¨aôL7øÜ:ÄjC%¹`/j+†šâ¦$Fj!e#Z5ÞìáòÃ"Ú/#(e ‚^Áöô&*hB¦ Ë‚qÆÎN¥|Gt¢dbÆpžáðâfOG¤*†è,‚¯:äIäjÛ«ç, d¤,4/A‚Ü·…žK0&w„ZŽdBÿ$3³¾AêD¢Øcå×§(r“R£¬ò>ƒ€-eGFÖ€C‘ed’Ê-U$‚ö²îdJµ¸X`°láˆì¨o04Ê)Q.p:¬C z.Rž*MYÇ4{åÞ,‚¬øOtÌ¢¡Ö‚Ä¿ä6v¼¡È1 8À sÀâ¾8ü]¨>gâ/äé"Dž´.<¤Ð ­ò… €Ò.Õ‡Ê!Ô @h`„€PÖ`Bâ!ÑN’ /I!¨ücC "Šâ!ÊÁà` 8#N4Iìoi;r‰ô>¥ÂSõðîëœR´ ãÚ,©æh1 ‘ÖèkÚ*„¤Î»njgÎ1§Î6$L§×¬™$õ–8Fø6—ç-ç4ÐN^ ÑŠú¯AåN7…N1³F¨Òž”¡öG¯@MËþ4 ¾צ s„×<2‚€J YÈd–S¹bÖ]â×,ÒÎãRôšÇ²l$,qÂÒpÁžòã£LèoÐJjqÎ2qãt®Ïx0n¢þÔ'Î62§úw‹«×C@6ƒTé*,Á蹃ô/ç7j„Ã|.d2àcrcéÎMæ-æf/ 7Ê7æTAž!>¡èv·DÞw&ò|øäà# VÃh8CcJ–Ócm›…|Gëx.¡øÃ'3ÉÅx«àGà!@ Ì"5 ~.¥Ô¤BL(WÁÜ/ç;¡â-BÆâv2D82ÄÂ:\Åwä ê,thäV.ë)· I"1¤/˜N•ô!ï †$f ÕN2ÉãÒ·„èt¬\;¤·ŠrrË%HE"ƒ ’ÅŒxâØIdÌ>$¤3RãBJ‡4†%F Aü#ìFfˆÉn¡"’´*PÎ!úÄÊ8^–Âáæ-Æ’ÚÄYH“<KêC\%ÁëX—Ãòìl¥–h‡8çæjk®b¡è€@Bà&ÀÁµã'˜4&!ƒ}mgŽlâr=ˆ<´h>5Úxb*èVzh\ ׳íäåx £Aél)º€A÷ëÉÎùz<Ÿ/° þú€€`@ ð~ŠÁÀ‘ I¶ßq8œ®WP€ßð û¿à þ~¾èï§ð àwì€~?^o×ûÝþ?€ºëø?¨/ÐxZÀ@JX &€+  ª½d~¿€€ˆà*E?}½£‡Øöû¦‚ SÜú[A7ÓõùJ€´ð@þù­>¯Xàê|{€€PŸ€ß€+ýüúŸ ›(À~Þ$0jMºc_ÇÆÊžXc`'µþûƒô€ 0îù¯÷¼VM 4ÀmÀ~þ‹ê„þ{€Ÿož©Ÿ€3¼ÿÊ8­X¼ ®/nx #ÇøŸ@Jšà`|žàL&x;ÈÀ€€§ñòz¤§Éõ(@0Ú HzŸÇÁù . ôÈ*r*Ñä´('â8~'qbBÜÏr¸øŸ/öÔëRšËíùú~€-äÄüŸ­b@|-­ø(ðÙðxF'´bÑj‹®|  ôz¼ÀbÌ$gáêÕŸ‡ôl°0ëÜÅ‹t–|çªîÁ *3AJP|¬ó?9´ "|Ÿ¬ðОÑë:€0S` Ÿ‡¡kŸqˆxGIÞ|L3ó8, ¹@XÎs!àÒžÓBê½VФèŸÀÐÜ„@ ²‚#<+ Pà,BÝ®ªj6°@ëÓ`³5!ü~MðÛŽzÂM€¨'ÂëQ ²M @Aö{£ÌÚÄ·-`RÕ$Ë • ¨ RÉÁJz8½#¯Á0x·;« 4 AñòÞä§Éþ«‹ ܸ£õ™úºá¸B4w´§¡övH ˜ Ià·žáì§o°Äà=fá/ 6«Ÿ !ø×©‹{Çš(JÔ|wÒt}Éíò–áNsÃ6|­s"È‚N +ÀÄ${>‡bÐü©jB¸y3g  eÁmYâèñx ª4 X³¤|»”L€;”wžçÙè{Ià2D½*mNgÚêBRÓq­£‚°@j{¬Ç॰à’Á°›´Üž'Óp§¸õLö7Šò~7rÀ2J‡ÎÁ è}ÎÎÙä|y¸x¼ )ØvŸG¹Ü}˜ X\© Að€ ÿ€Ÿðx3ü…€_ÐÈÿÀÀ1` ÈAà×è(|<¯g ¸"O‰#1hÚú?NwÓÝâø}¿@`ÔL¾ bÀx0bm¸Ü.gC™Æ ¶ƒ`ð{ôÁ¨@@ê.û°€qw“ñþÕöþ|€_‡ÐúÂ_À0èü}€«À0D¡²×í¸û¿A'å ýt§î6ÿ€`Wóíæ~=_€0&€~ÂoÐ;¾Pò=À "Ȳ@€WÐn~X_Àhl&†ü~Â"ñp úÚ\@ ,.`þ€Ù Ö¼öꬰ7à£øïgûgû–Õ€à!þ{¯ Qü¹#TÜAü³Aò}žðŒGÀGkÈv½ [¡g¨~'ò ÀŸ‡ÀŸ  ŒÅÀ3(@ˆ‚@ áF Ú„@$€`P Ÿ'¹ð{Åó½ `ÈÚŠŒ?¨Êܸ¿ƒ(}@++*ÀŸM¨ ¬'ÙøØ8q‰þC§¢.{€ £$¿8«ëâŸçÈÖ¨Mh  `HŸí+>už'Êt|@h à8{'Áô~,ÎsìGÇð¸ŽCVˆ»ÀOåK;î%gÉè~¿Î"42;f= KÇQÍÔzŸñcçè€'‘RoŸE±‚w'9Öj 0ïÀ-hò@H9Ÿ@=ª|¡Sê‡1@¸ <ì‚Çñø{‚à˜Ð‚chd ‚F}žË)òô€ ¾È|⃠°qþ})éæ{¡ØÌHî8Å@l¡€¥ðZ‰ë¦Æ€-€'³2¼ßúá£gÊ‹¾È@¾Ÿ´Qî°Þ @ ಠx²ñR𣲢tTZq]³!`kÔÈ;2̼R0îÔ®òͶr79ž@1òή¢†»¸§ññ Ú´ êI,£¶ù¡pAõ ɪøâ5²iô¯:Œ¹Ý#•!ã‘aúyg¤ÙZ`ÒªÝÖ`ý*§Á¾¡œPs¨°sx6ÒþŸ‘tØ‹ §Yì{‹¸ð)S—ŸçÂÌ€Kêdkiûa€²€‹s·à;ðJ)òÐ`9è~g±êwŸÉôzOaz`ÇÔ}€3@9qåÈÄ5¢@jBLÚò=G¼ÇPz€Õ8Q°èj$wñØ  ð5ÛIf¤dìb) ˆj…x‚¨²' Žé9`0€°Ši%‚ƒåÖ1È<xM@ü# PGpþÃôzŽô>£‹#&\î8cf?AH Ä ‘Ê9Gì°AŸ‚lf¦„œ¢PvG©Th,{¶@ O‹Ä‡DÏ9 @ÇØ‰X`@ 0g ÝjÑmg}¬É>÷_J 4Å…ºž§r>ùÈäÖ'ÜA!@ÿ\|“ÓìbŒb2) Ìß„’‹pRcèª%=ÔÐøqm„3Cl ! =LôÈ…ªÔAä-ǤɹîX¡” èLÌžCðWÎêo;Híž§1ìB‘hüJU·#€”ÌÀNƒÇÀ@-ëp±ìÊBQ6’ˆ»sVhP*ÁŠ¡ÉW‡¸Õí?Aþh .rìz¿1ôA ³!ì^[0wVŒÒj)4¸2>Ô@Q/£àÐRòŽˆ)€?Æ@,À sÁÙÀ4±ü Hû5UTḴV}€:À$‚ƒºqLÓ8‚ÃäwfúMH  ¯$ÄvtÈ­gC¦AMìzjxç0 ²ƒJCÌÒDu3R‰™`Ź>P LSõQ5d~W±æ>X£(vѰ3ÇHÁƒ¤XŽÀ¬1„ ¥ ‡%ôr¨µM¨¬ò´rŠWÈyNÀ…Ñæ€z ,6„ (=@Øã±ÖéÛ¸c%Q£“GTyeãØ}!è€kÅ -Œ¼X”Y) …Ÿ! ÓÝ™…ˆµH@Z5˜æcêyᬠ!¤<‘0 ËWðù M`€(P H|?Bh¬»©¡Ô@»›’eæMÞÁúËK Of¥–8ÂÀ¨4ˆ€9áô=1€^&„@°=ÀóÔÞ—€ËòcU!M°Ó² =°j³svô•3}@ÀE9–…QPGøõŒ]Eˆq±éïh²ÞÛ‡s™ÁJ½§ö‡±nÇ×$‘Ç ƒ$ï ¹¶« âwæ!"Ð_JFN} Eú’wf¼ÎÎÃí#l ï*-N,%RR5"Gƒª"J@Ö\;'ÝW=<ªµp;|`PƒÍ8G9¥#ðvŸ€8À "€lÒ@áü8ÉÐáCÒ' ¶¾Nˆ$f€@H“@€>˜‘þ“³ñ³¨‚WæiTYÆ †‘Ú,ÉñË‚T#íï$vÊ÷@zþÛíÆ”"2Ì êEƒ±'9³Ôg °€GtÀJð+p—°ôÔ8&îùij¤\Z" qC(_ðF$`€E¢ð à'–à3à ùlpEà/À6îmæ´¡Š¡Ðá¿`…z5E˜0…$¦Fe r;ãÀþ§„Z#¸8h|/ €€Ò` ÀŽÀ L!êýAôìCàƒÅº®IîÓ‡Ú˜fº8"Ö¾c#¢†Ñ¢(BÊ!`‡¢ÜjBFcÈ4It2¡àNãΆeü!jÌ–#Ò`åî B]B‡‚&1§úiëJ`2ˆ…TCˆ è|dn[#¢ *`@$GAÜx$š/í¬…"HdT&P$ €ÂwåD©¢,ƒB!ênÞDnÞaÞm,Öð†/@àFÃ8W¡ø9dîã6g£2!êÃeˆGÄ”ÐKÎ_ø*¤¬!ð“C\D ˆ3â!bühçÀ§øÌ#f“‘~‚"6IbBe R¤æÍ "NdîEfF/FPg§Î©¬ª=£3CPOŠCEdrX!äQáê=Jnn¨Jㆥã&5gŠ;.B‘.@.0¡Ü2§î!Ä 0¢PcÂÈ4©ò-c¾"êš8‹0£ºDÁü#^AÖ/¤.ç¦ "@2硼M—¢ŒhnÚͨکÖ#b‡èÆ_å$@ŸmÈ;ÄÎ@ €^ ˆíâþ‰ÁöNâ)K w#T_â;ÀH `Öá¼å0À: @EÃV=CÖ#ý#e²øÊ^7‚6.†j„f›¢ä$\>ËèQfÒZ& 2t{%4³Y*Î6ƒ2!"6„âX,Äì+âÜ 72FfDrsâ!ÅiOO$ ÷Š ÒŠˆiå,0h@ÊÎj"ÊjX.þ3â;íü@hô–cÀ3mÀèd.X„@@D\4#`âxp®Ü) Bæ sqðùôF–…` pO&Z…°@GHâ’ôdZ(„(caþD¼ð,Y‡À!óƒC£Tö£d#†¥ìmÅ¥ãÎÁ£%"OxOcÎäîk„ö:„ “Ô|r9Ž)9bÂ÷‚Ê „‚ˆ‰d•CxNƒÐ!#Ò–%¢­®!ènç=„s`äÂIóôlãI©;Cü‚엤؀ÃY‘Èåã`ÿ€{1°3‚À]…€øâéS|0ïÊ&„q ô;²T@MN(` c”CàpCêñ ¾È0AÑ%¡´AŠ!ØÀPÔµÍiK‚Ó“0¤r¾B2@§rNtQbÌÐÂ,« @6€¤@2ÀX@h§æGÃî1¢æ;ã¾>¢ˆ+Â$ø/Ÿ4.t¼ˆP½‚È>µp²C*–eN¬äŒ“£(>¬€Õfj/  b$)E*Y…˜$?2ÔEÊÑ/C*{È2¦âòö£Ð>u¸<¶b¼½ KÀ1Œ  *!é¥E?DW3c¨4$n>«c!(âÚêZ&dÃAì=,°,òZ¡ÞGh2‚⃢1¦ÒÁ±! öåH÷«Æ;Ó´VÊ Z#¥;‡º!ʪ)@{Dš1mÌUæ;«.öb(ãˆ&3B„S$ŽêBB@1Zô¤Œ¨Pì/ÃV2¨2‹ä&.ê6Z£Æ~¦ç` 2ä'8N B‚:©Q¡ïéAD’+ãí0/áô3ôib©¤5Eˆñ„ØoR¢TzehOŒ€ GaÈ6b* ÆÂ!²‡q(r†Up Bú¾€èˆS²&çr‹Ô` Úè¬aÞ@BTa¼ÞÄ®Ú*]Cð¨#¦6`!ÖAÀØà6ÁȈÔ1#,‰€Íe‚ ïø8«:ìÈ(e GC>&Ž(ÈdDØT÷ÊÄÆúÙ@:ƒü,P?²$<‚,YÄÓ€vs|„¾0£¦i#°x±x0$ŒFè iIl:*Ÿqñ~šE_ l°Co¢BÇïÆF?üʬ”GD r)@PF;Äv>î(Õl¦SG0cU‚ÑóWåL=?ÖT*‘ɤ0…$ŸÃ¦©g0üX„â2‰È"cXü ©l%‰GËÿü€Ãi/D@>¨¸SOö ‡ NB)€¢â÷@ +”Zc‚8ôCáþ¨#úJÇ <ÜCÒ‘Õe ÄŒ(ïô1ò‚HâH9…j8dŒ9£I±Š.â!¾åçº~*uzƒÈ5©âvAêsõ’6£ª””"â!IÔX…ð/Kʦ-ÁômʯZvt2å4±CÆ!ð $4è!Þw!ÌXà!ž¶<R,ˆp3#¾`Æ#5(Kãã‘6NѰÐϦõäÀЬÀfà$ p€Š¦$cŠI:éëò±Ç²"D\~ePx¥ªä"=|²å ÃV{iÐF¦áYb‚<åh2r0+7Ö èÂ.nä‚&EK?¢ õhü!ú#*Ÿ 8F±‡<`$ Áà DTtäl ÊÈ)ªa^"SB;ÎU0Â;Áè€ãŠ ¦‚ Äl¦z  Ç´¨=§ˆ¡áÄ"]B 4 ~uÁîd줢 ÑmL÷"9ZF£ÜCø*ND¾UÑž$ÒO„aMÂR–AÔEJD;£vÀ,;áân!ç?L«G#`,CY6ä8œÙä&(dÜÑ×e±„?¯¢;ÏôÊ£0Kƒø(ç ¦ô€#1œ‡Â AÈ.X{ÊBèoÎíËÈj$kæúކeƒ².àJÁÄ—r`Â>,ú d¢}!È2©†Í§qW'Í8‹¼iÀyc¾ïGçs " €fàˆ St¦páèÜyõÕVƒB=M8€NˆÀZ¬!Ö¡Þâ@ 2yoê"CA†Â„héÚAu¯x#ÀTDXèÛ”#"(ÉÄ%cܨˆ ±Bc “è ²ç ;¢—¦F)J&â‡ü-¼;"ú×7è÷ºfKàæÆQ7ŪKÁû#.#c†7#²êÌœÄ!f±w¨¼‹j¨ãµ`®lzâ¯FPw0Ú"ôŒ2‰f`ãÔ@­s Td˜6Œz€hçç]eÔFD8²„ªc ʈC(I>ƈ KD@bå2XG?ƒµ²Új.0"ÀÒÆ¢>é@. ²FŽ„ ÜÐF8(‰thK΀"V˜¼@âA–6®|_ ¨uµ÷Ð|dgè bŽ/e€j"î4§H}Ãð4 kèçy™83‚Ì&„{L†!GH3ú„FêÂÓƒÒj`³íÂâ(àO‚;ÅJD.<˜:ÜÁìâz€ÀmÀ$sæJÌ# Ä 1̓SX2†ÄE¢†7…ü[$ø¡é“aøùa²Á&aäÐãÜ4C`E£–7VuÔ¥ä} ]ˆE2#Š¢Ö`Rü (`" V@ºãVC©¥¸j6ƒ8W¢Yƒ³°"€8±‡Öh"hYFÐ"HÔuÄö5”œvhã$ª¢:ffÒ=&šY œŸt€=¡ç7ˆ<f[Qß™E…ÆA^+f"k`^B e¬’~õqVÎFÁ†âY‚¦ì~;@/bPzcÚçÓR‹À#£©EÂÇ&d8¦¾ŒfNÑaìcîÜ«B`‰”¥¦¦.gH2F¤ZãÈŠãä.äÌÈ.>"ŠGcƬˈÛÈ‘]þŽ‚áüéb?¶t/ïŽW”Tã‡×Ó]v—¬ƒ°I¶"cÒ;â†`Â2©N/C¨…gÏ$î>lYɘÀ=ïJFŽ@*ˆ-Ä쳫 ?® Ä jý03‚.÷¶ ƒÒíhô®`ÍUÂT¡Â` k:úµ‹ OA¼›q-­¸nÕqUåSp&ˆŒ À;ø? ³©è% ÇÄQp¤ï†@/Gƒáê÷|>€ûñüÀ€ðü „À–“ÅÖÚ|»^Apcœ0>Àpáìý¾Òpþ…*€€@Gýÿ€Ÿ´°Aþÿ‘J@/° Tþ}½€ºÁßï·õHýß Wà ÿ¿lϧëõï[É@Ù88}ØkØ0ù)áÀ@Pñô~>€0øÔào—  ü÷ÀÀ] $|Q€€Ð((U_º÷³Åôy>@ Céþ¤ðd@|‚@ @]MíaäHï5×äöÇ€@  £b€/WóÚó¹¤'ëàý~-Ëx ŸêJª’€êØ~m[Z:ÍxÆŸÇô$Çã8žªóN¬)ûl˜ ¾lÉì`Qô+™öŸ'óü~@ì¯àP­ŸPX/g¹þ)'Ó^©Ÿ & z˜ «‰úz(¬‘ôdzª{¤²à('éô}¯h©gÈ{Æé1ð¨ŸÉø½Ò3¹Ÿ±Ë~|¹ÐD^L)Rš´«/œªžp §ëfà`Ÿ@4ê¦/`žGáÔzŸL( IG¡÷F‡¸¾ d>‹‡ˆ|7±` ®I+ç;²o`TÒÁèwŸkÙÚ|ÆÉöOšÇ€uçŠAgÂüÀ[©¹AòÉŸNJ–ÍéL¾¦`T>I‡øf ÀàháP&0 ±¤)Ì%‡²þ¤ð“JŸǪҩI'áúéßÀÇ xzŒÙÞéGز܄ËRþ´ª`2¶ɪª­¬ùþ¹'À Œè!àÀÚ %jz0§²½I€2ɉ — ‰ R}$§³Ïé lÍ̇è `¦vx'¹æzž P}ôнiËšÌ`˜J ä…€‹“ȸï1YGáØz€‰ð€ÀC ó#6ºB|€®sÖÏÎ@ X½Ó«û+$2fI Bóà`€‚­1᳞Ǚâ@-"¯\‹3H¯0ë r('ùïÌ@$«ª2B¼â/pþŸÈÿª¿n΀©˜“èóâ꥟ÒH{Ãà«J  iêÀNÇÑæÎëŸOpeD_à0ú}?@O°#ôû­¶Çø"*ø€ßOçãý÷o¿ì¶¹øF²½@ g­zôû¿®¯Ð0øùÄãA/p8î_–Wãè„€ÏÐX+ {?À/‡í²éi€ro‡æñúü -ùüö|?žö°-wmnµ€_o‰ûîð>_Àë;ïm„Ü.fpï@š˜ç‚û|Ð_PÐ#jÿ1Íê"“¬l‚{¡m㵇ÛV­`Hà€MQþ…¯¨!ð¤@0½`3à€` 1 $&¸§ËsŽÏZ*‚²éô²Ÿ@+šûˠÌ3ú¾€ñSKúz:/èØ€Çùú¡ŸË²»€Ç±ìíÁÑúºÀ9ô®Ÿmˆ€qìyÁë€À(Å-`CÀŸ‡´`ž€ Ê'Ø Øq€D€@cl=(jÔˆ¨"¾Ý:'Øy®Ç“f¢`t~-Ѐ^7'«¢Ì«‘òJ 2ÎQí*Ú‰CÐAøÛ,+aôð=à'‡Yÿ§É@fŸ…)¦x§Š©Ÿ§Ë>ÈÑ( Äžióo3ÇÝ@¨HÚѳZÙ±A°4„¡ø&…à°v¸GÀ† ¬K…qŸàJ~~¤/KfQ0íY=ç°OÀ8 Ùn‚ÝcD×TŸ¸¸!`:ÛFŽgûZõ€ X•Y@órçgÃ0?À | «yìŒÇõê3C¹è«äàµ+ÜÊ¡æ¨%QS tMŸ 8Üç±ÞQ»üµÀžŸžç¸ '¸Ÿg°xŸ(Ã< §ø ´²v;x`UÛv³òÚ袕9ýcŸç‰û`; Þñ»oGãfÒ¯*#ºM úÀQöÙ1äz'¼¾àJ#æÇBjº¼€ïC¿9ùߟ‰*¨×jÊ{Ÿ§“zÐ]$,Ë 0ŒO™´vÈg¸ôH³@S2¹8/Ùö“;Ðìã#'ÀP» ù€õqú|-ÊL?)ŠF 3qüI–xê£Üs`Ó`£ä³ð$\ÂW „D‚’ B\l pv òÚ[’š'€”"[›põ#Ô„^Â/€ x`D–G8øCÁs±r é2?-äØ 6ÇÐícðv°(G<ÔA¦^ªM²î=H” ¥Ã–P±oF$ 2ÊzÐÛ08,ÀŒ­ÐuL™]Xêc:Ňû­ 14²=GéoTŽÙAD­øBIÜÕœG¢ «©îÒº^sIƒôäÇtŒéߨ#)¸‡N©›{•F‚¡2ÚZÈ1r(Œ]"UÀÒIº8'õt`Ÿ€0£ô01掇РæD&ü@Ñ1h ¹0%  Ñ W'x¢º Ë5ü”öܦfà4€ñ‡éa)sŠ~GÁô€íýĹhîúÀaë&£äxªB‹9 Xê >lje’Ä~^Óé$L2‰’¼Ä°ó´AÚ¤`6K$‡X÷ƒÀý³fJ@šI@-üdlÉSX…´yø„G™@BÀ”€*[górn¢:¡üôÙÂ;QðyPñìèæLÇñêL!ÓGµ†’$˜™ð~¥Ñq€y]?Œ0󅽺™öG€òhƒÑÔÜ^Gïl•]Ïat3Çø¼#¶>ŽÚ9G%ªi¡r‚HÑ‚f§á0€’? v¡pŠÇø2@\À8€s )V–äÌFÕØü¥&Ȉ¢¦Z«in*°u³RYÑ„nU èŸK;&˜ <iG;é²CJì'䤾©@A¨CÔ.U”¢f”ö\tùX*‘ø[Ìir`(»*”˜B‡ûÂU'Т&n\.Ðýk<{6‡IO‡ê®Cí¹;0gÇ£ô2 ´>c> Ù«£Ï¬“–gv`Gð0Àx†ÇN7‘»p@4Š‘2Ù"N‚O ­,‡ðæs#¬ã¬âY@#Çjev£Ä–K<+ zX'd^ Ùm!®Œ@yTåTZ©0†vP ÅÍ’‹s¬ ³I=gáuBñÜû5ñø?Ãå¼|—TJ?‹žZLNNùWb'Añ2¸@öU0 Á( ãÔy ñô;xã ½tEOu¢¢*`ÛA̺, »í"=Îà'  G*rÖ„öx tøgPùH´,^3"“¨`mi˜€#:Ž’³§# Tà{ÀQ“žÃÇ86ŽPj¹\(‘g–ÅOhORÞ~ˆ\ˆ´ú» Rã#&Øà€ zŒ:œÌ\á(#W(™a§Íå"í3.AZª7¨@õõ'èïÒo¦vŠû¡ûžPwèê 'aJ`Yç#¤ýSxüH‰d€PîÀ£¤o¨6¢®.A_ã&8ô\º+üÀ“Hª€~DAë&Gíh®Ä ~fç >‰÷xùMãŸ3] q­8ȼ¯1w:Ög0 €à4ò<¡Ç´ ;‡ˆƒ¢À@ ­8¸¡–4”ÙóÌKz‹™¢èI—éÄlÐ2J?»ROÀ*8ü¦ò[˜o³£;ðÂ[GñF*ÍŠ€¶Èé¿|D…Œ§áüàÐ6BÈDÞÁÐJÚ@„raâb¢êͰÆJ®Ê¢Úž ´ úPI‰iTäÄ.=aôf$r@6D€>Baà(a¼u ¡úàŠÀ:@> wæÜ(4•ÍD8  )اˆ(ÑnêØ&jšJšaà  åå–3ÌÄF:`¹&¼ bPr> 2¤`ËhÔ‰bÐÏxfªö? BÜf dÉú7‚Ò7D¬šdbø¤T7"!BPÆj9iЪ1ɦ-GêƒBÈ#n"=J0Å„4êÄP$‚rkÂqï\d Uà`ccèš&LŠÞåà&\ȣ˒#¦ŒàØB "í€ âÔ= )gÊ’¥†„b©!äífÀdÀ€ RJ2@0BÂ-db)*B£`@#`D!ª!äaúÁä .zéŒöìô\ÚmOä0älÂ> »AÞ>ÇœjÏN‘"H„.U àŽ†ÐðDT5%F N¨#J5¢‚tà ccš¿Â /Çú5"†Dêu´I„˜›cx[Ä. ¢Ø®©<-bU¯|!b‚”ÅDÔsÐ~fÔoÏnƒ¶,‚ÆPHøõÂÊ]BA£lðC8£ÅPJÒ("Š1/â>½¦|“cGä<"h …rdÖ)2è¬Às¬‚B¼($â|¾áò±†|)b]ëîXc œJæ%(f¾ÍLºéÀYdÚƒÌÙJ‘!è!èD‚7Áî›MÐ{8&»0ÆòJ«3>aðŸÆÚ°¥†,Ç&6dî5CúkÏ1FL?'ÀççP„†.T†,,hú>* JÀub ;i¦šbÄ}CÒåãP>%X$aõ ªY £ÖWŽ¡¬ÞKÁöÛÑœfâ:5KŠ2 @áúŸÄ¾ÁAÿ`ÇÖp†X3Ǽ;m!J¡Þ9â Ãì+âî!Ê€Ð`"OBcFoD£„4³Îf©ÜÐ002 $ˆ~fÈ2AÊ3@¸@ À@(@L`o!çüm –åÊvàa܇R\ À'é\¡!þõº·­u%’T!ÈH×Íx–éàÑs­@G $K,Ì  \|àVAè F¡ò3´…\ ÇP26†Ô >¡˜ÁA©mAòZªŠšd&I.27¤b=æL ü5Î>­d¥N¡*„»R?ãÄF&!l˜t„d›&> bB¤t;Æ|A¥æ2c“-c=@ãnÉ%€ê.zEQofƒÞÀ"ºA Ð!e–DÌF$h=d)H)#ÔÁn-Äš8#V="ÖÌŽ^Ô"†~£PžÂ—.¦ª(‚&"ðAµ+®N§…T9ü'RÑDØBOi‡ ñ£ 7Fc4GìËņj# HĚР.b=bô ØÄÊI0„H£¤Cú0 ìCiØDW8äLîJç˜Q$¦ ."'®Šôì!ÔFà&  ""Ù¨úmœš%4x@ ‡×6‡Hê’2§&¡æ.0£xfCÖDêBð/Äl³Ç:$ërc>ÇàµV`&Ñvä~$,(Á¡Ö3K¡Ú¹aÒ¡ Ê`ŽÛ!aì ¡ä¬!öäÒ**hŒv1fº!ÂûÃòP¬ª\aæŽä™ŠcFu!åŸzD²UIˆEõF*ÑÖ€3F5úg+&¦ÐLuv½&*]Lh)e}7…Xtãb •È'È…Ên¥T«Ê+ÅXîbU#ÞæÅX 2^\ætãN2“9#•Ϊ3Â'Ãà:J..d À !£®+æk`®!í¥`Î:‘ É $›,/b4Qaæh…»tƒð;E5p¤o$úä>Žî:5$­€èlΔ‰àåCzœ©U1(!`"#J ôæ£ÌjP/ì,€ ¡â†{Å-&î'úvsÃŽŽêÑu$`Çc>•S䯀¾ñ-æú%%½J°ò£Âæi˜ââ"œ‚ °Ö`0ªÀUƒÒÒ#::DªG)–7ªÌ!Â"Ñ9HõTK1džÄDã(û/>EE†UCrg´1"N¡Øþ£¢6±§;¤Êœ²­"×mvƒš;%û| îš"§Æ÷¢–…  ÙI¶U΀" b%øñusC'NmcõŽ&¤ €,€à ‘hÞ¡æCªÄh)&YLD!FòŒ¤bLìîy†ðD+¬$bÆ•†j1âeTtžÒd':+£à@ÊyÊÎ Td”70àŸÃúubÐ ‘D&ž/¢™mü#DoèØ@eÂ!EtúF".˜0#úfԣ͠”¦â­úeº© VqügÃ^Îáôo§ø3€€ šAîcv($‚7Wììg¤ æÐF⾟“Ÿ£Ö2OB8šJ,fMJÍÆ‰(éÖ4äÌ\sh7ÜH¢pô 2U#P!xÞq"èDÃt/].fCWRË£@mŒ•GꟆ2 Æ%&Ôæ7„¢2-ÌþGû÷N£ä[*879„\SAØ ˆ!íaîù$î÷‘¾Þ„òY·Íz ÷ó ‚]¢.PήӖ€$ GëÙþõt=‚D¡€ì€1Þ +ýúç~¼ž Ãíðÿ|½À@0þ?Aà@X9üÍ»@‡Óô& w€à@þ €ß@ #ð ÿ 7Ûôþ~_àZ@}=ßoÇÓèR€€WÀ û|×°.Ã9¾_ÀwõÄ !¦H€@x þ¾ßQI3ä@~>@oWо¶A @öû€Ÿ ƒíîý­?¤Ì½Ô Ÿ€0+ð ?@O° Àà'ããQ•è±€‡è< |^ïàCÞÞ~ì.`P-FN ¹ƒ¨O o"Œüy€fsÛè+sdÜ?_›;ûmªkßôÜöý]ê GÈúù–çz¢y+YþŒ‘ôÉ€r€ šÔ€J`€K žÐ¹ð©+RJ}‡³|© 2t{€ [t€;n€ Àhñì6|$ÐaìžKQâ‘'ð°`2xŸgñè°ïzîËŸ `3…€ñ|Ÿçð¦2'ì¼'²Lx®éЀgʲ|€@ ¢Ñèq'ÁÖnE™¸|•g!öã-@PxŸÀî‚#ÇìмÊ3à€Àkôw(»|£çú¾ó ,ôúm½7Tˆ~Gª:}*°0gùìzÀHXÕñúʾ  ^0‰ã@-,­a&¶ ) R‘ª©bªQë*€( gáø ƒ‚ðV‹á:@ìà2æ¹Y ð~§¨‚ ¢®/è¤#/€ý(á*5žðÈ`ø$`,.Ð!úÊ7g­@E²ŸŸ'¢ˆä€@rt'xÚâG¢yŸxܸÑSJh ‘`Éý³ѺT÷žÙ{ +Úl!õ?'@V7OçÁèç«EŠ T®Ñ±8À5h£4÷'ìH¾ÄØÙó!Íðh NÀí²žõ½C.$«ƒ,¹¯¯¢›¢hÉåLn «ž0K€BB'ô¢¤®³@;ˆwÂ'‰ë& Žsú´Ÿ(·k ¼fF§‚ø{ž¨ô¼{€çå|[ÊæöO°Âd$˜4#-‘öÇÈx€$žgyîwÍâHÓqíb³&-í­Ò³9îËÆÎ# \´Ìa&¶ì`rž椒mÀ ªç,,‘ðyŸÔÞç€qaöéÕØXÒÌ8‡˜ €(þƒAáP°†Á@@ð ‚Àà€P)þÏwëÕÒñ†#¼Z{„ÀWÑìõz>ž¯—ëñîùÀ€ øü a Lñl^¯p 1Ö° 4Mø¿ ÀP{ïˆp,ÀÏW³Ùñ:€ÀOÐ ‚€o÷½öû`@3úŠ@ß ÛþŠþ€@ #ä }€ ;Uø}>l à,?Oùýø|?Àï×Ýù^}?d`2„ É¿`0w„ù³`»#Ùøÿ}oq@Ì4þ~¿Àgö„•¾€k h¨ˆþ´½Þ óð"¹|Oéð }(~€ªöÙ7-›8¨À‡LãÈ{žÎ@"Ÿ§°«`C‚Ÿ(³>§ñèº(Nj'@ ¡€@Qö| 9Ò\ÿ gñðÞ¼¨ûñ5ö~ P­‰àÒ`8ä#h¡üŠ¡ªùø­¢¬ƒDÌ’¤‡¸µ€«Éø£(ó{&É Çú°¬HëÑü}í°Ê ² @xçùâŸ`q²~‚'àtFéÜp§ÙÌwŸFÉçJŸÂÌ~À!ø}²ãTë³ S~À ¹g¢Ä|+` hȺº¸-â(€#ÅgÓÑôå7±*D´í³×`@b»Ü8þ8Šú†ó¨gí  z¶ªÔŸ â[€ôµU ð~¡ Z,…Á¨º§¸u**ó= ÍéûD£ R‹R ò IáúÛ`wÅ ¯´Hqò¯¨ø "ù1ú‚E;0ë w‘þ´Ÿ€B¡H™>Ñï= QóŸ-ÑúÕšLµ LÀ €H(å5NB5 äƒ?gøŠAô{çñæu\VóýGYzhЀÎ[?À: z·´.n|ž (|ÆçØA–ðVT v$2È?–rFПøô(#ÂÍÃòJ°9oó1ÁOL²TMa1€7“Qu°«(îì‚x`9ë™»d‡ù }`N.¢@üA€'Ãö —ï)è}€€S<‚l@6µœÇéâvJ4YÍÍd£#ÀBÜÿíêߎhÍ¡‰zÈ0ƒešÛÊçdqªáÔèÞ°4éhÀÂD= ó:ËÈuQü9̨z@8 €…ꔇ¸÷ãÔ}ò C!„.k0‹"ž–0 €À-ý º‰Ðè<%àtÁp/Ãè‚p>G@ïÚ žAüñÎ!ÌN {’ŒÔÜkñêR8ï x}‘3`wÊë-xˆ9Ê!ô®€@ÿ#ˆ ù…dÔRyj¦&(3˜¸‡ø< LæPÊÞ³Ö…®ŒÍ&ñ꣒8þ«ˆ•¢_ `$rJüYHÿ©éš¦ú¥Y¸í c¹C4Lñ(‡Yu"”ìß")6Ò˜ö`?@È m4Šó&wȪÈM 9¸ >Çèôјɫ“ÄYŽù›?‘Ĭ“ãf?šxù'‘1“¯´R€š ATœÐ4_ÀÛô4v–ȳ’YY4Cà:š@)Yu õߥ1è}Õƒd è&ãd [!z6cðÿãܼÊ"|<,~9jMá³WQ´Á•³JEÓ[ê µ3F›À3M.˰‚µüì{£C¥Ü€rŠY$—£ÝäñÜn[èi&‘è€`€õHt0,G@£hw ±´<†™ä‰WÀy@a‚4´aú‘-;Eú$jtR!ÀæÑãÜ^“}|'‡œ´ó{8QL¡zÃækÅÀõŠ0~•Â6BŒ‰Zé,ÄLâz=f—èúg`v&à d( .„ÐÙ0 t+ƒp<@ÂHjµuíybu×$¡L!ذ‡ˆIÒÀБQ¢E£Á BöÉ’)j ~™0i*1€+æÚ’òyú§6jíú&Dhn¤5(E€Üò;VÄ [°oG¨ýPJo8£À«¢b 1#e :oÝèp äˆÏÁæ=«É; xÈò…°Àˆ˜bAõî¼Ø(ÐÈ‘ˆt}QÔ;ÀpI è ^Ã8 ƒ¨x <`Š@ b`\@`0Œö¤Þ-#‰æ E €ÂÎuBþC¼!Þ6ÁäEøš‹ªkà&È‹üÀnnì´²i£dŒd€æL_KæZ]‚¶iå‚ä„þ CNУHg ;ÁþC‚Š(N@H£Diæò lš£ËÊ l†roîL‚Jlƒ èÅpðú°ƒR‡BM#™IÆ!èB*bЉà Ì|"`6è>îŽõ@Zo!î@£6@þ…†ÞXXª`eŒt/(~†ÅZ(ã¬5ø¥ÎS ¢†`ƒhG22Ã- ¦n¼­èÌi…ˆ^ø$*&* +CătEôã#ÊhIFˆž@$<¡à+AòËÊa샡â&À&€}1ž-ò¬ √ „†hjzË4k""†b _€. "à2([ nm  f@r@V!æP7aЃ’&c#H^dzaéô J Bºà `vcö  N'3¢("•hÆ2B¨ÏD4Eä>Ð<#î0 C ÂÇj$ÆÇƒZhMAèôFC4Îáðb¦]­ÒPÒ£÷c(+³0¤Pe¢E¦~c‚È@¥§ Ãl"ƒ&?‚ÂdüJBúvpPÁÞ"lÄPcæZc”Cƒ–u‰ü9b†3ã,Áqí侯CÊ+#,i%`µë,P' R‘JX¥3EÄÄ€ïä8eéÔCƒ@9§ÈKÃH4"ÄzÂúºÊâG)VDZäc`2`Á%"lƒbYÂù9ƒ–C¢*0æº|¤_¥Ø²Ó{&ê(år> Ö+ì»#¥´Uä]ÅŠ[ m¢³2ÎÜvað‡†¢`ŠdnZ*Œ>‹žgEØ‹¡èA®Vèø¡äbò‚R84cÊr¦mt`"aî:Aö~è!øq+Hë‚ै[ê¬E$ޱ²¼À‡ž¨,@g¤l‘˜à0äå`eâ*tC0¿J>£âÁ†hÇ„ô3v¤Z¢ÂØ®äÒW-þ?ŽvɭЀÔÀ  jÈšà9)åðf€P§â²y!ì8²°‹° ̸6Èü0âÒã¤`‚à0¸Þ;õ.&L1„õ4" @cÂ>kª €i*íæ²…£°v#8"…+Æ~!µ>ä iG>Ì5±ŸVJzkBCÅØ4‰Ð(#„ aòl%ü 2ÀE¦. f„3HÆ6Â18¥tOK:DÁ Â-&N€¢¶/$T÷‚îBŽ.B†«Pf^\,VC(…¥\OD@¢Ê@L‚cñeæd2‡]/£,ô£< š"”0W"þ9Clr¥t&èZ×CÎÎå¼4k8+4f‰3è˜_¦.0c.GBM‘΃ä/§K@¼’xw6Rƒ®ß­7n¢ò†.0©®³âô?%!ÿIC(zÀ›cˆN0¹gt¬j+ʧk¸æã‘ƒÕ‚Ö°_"ƲØ(mV‚LbÔÈ¢ 8‚™âÄ, à  ãNcÎëáØÀbàfÀTfcØó.¡çC&9ƒ&bAèŠAè`BœÆúKaè(â½4+åú<« QdS ‡+4#0Ïkd³HææÚÉ­":ëÊ+cÜ=Hn’csVäc‰T@¤Ò<ªŒY'¬@ì4f,ñv,«fªà›Fä'©7SC*¢c‡æ^f_htÄF„ó™-4"l⬱iF5cd´=ƒèW•-b¾pƒz6LªãÖ W"6å€ä8t&_Ã02´3Uå^,êîW.¦jcT4ÌHdº D>GâÏf9Lï #T/m48Fà8ÂÈ(âúbì¸oGfôDŽUƒNR“J7ªÒ0”U*4F‹4EÂX*ä®ï|gBÊXX$Mä` Ð|爅èxîšæÉ –74¤ $ ëígcÂ<"Š1'2º6aîaæÁœZIÞEð9ƒ–2…aEñ†0ãaÇ*±·À¶4äc°…§ã„îrHâöøDâ$£(ð‚&_Ã0·ü`$6ÜGliõ:!ïB"Ä>F§RCíûv#-DX‡~rê°ëÒSà4(´`À¨` €WÀ€-<ãZɦòŒÍ *lz^ÂÌe‚±°,$,ƒB|´ûn¢ÀiîHŒdDû.2&®dk¦„D"?Šx<òâEvÐ(ÃNð ŒGe™../rC6Ò |”¬K>äšc£”¿Ã˜y%ˆ¥H$-ƒøà 80'Ú!ÎXPP5¢z\Y8ÿ"(#èt $3prmjÏbX¦òLx/qžB…ü7ã^  Áf\ ‡â!õJ(Î]‰>„¿VàFðQGbµz|fà@BâAâD ½x¤¼2Ö^¡ü”Ž4Dð³&Àq`Q * ØYÅ&#ìnAãÁcÔ¶g€ J)Š&(¯„DŽ1Ì㤥ý§à%wg„*H4CÍ,"V¤`èo$ 2õŠ1‚‡G’ /9j@ aÚdd)ˆòÀèê"†Ðª×ÂuE‚!#0ëEk[â#$ $ª5É®b ~!òsÊ`\Àp`X¡ì`­´æ Â¦1„eÄ4/ãöAŒáè81‡€+mÁòÁ¢Œ;ñ•¦¥„E 6@f^2‚ö)úÆpp:áà,Ϻ«e©ÃÃŽcÂY¾fÚ™º8®õø,æN-ã±CÆ[ƒ*2£ƒœBÄ,BÈk€ Ì Nk(Ò1MMÚú!â51Öè€*{£ Cä³JУÜ à@éžÂ…õ«ÃÆãD~ˆò3CÔÐè¦&Î8š&3HòôK^PdQ!棂$EùwÐ fåúX£þUE^'„›ƒçèuÔAfúÓÃÀB…ØÒb+¥%ìE$Q©b„7åúžƒÈx¨ô#î9…r-:ÇôB(CH¼†ä6a禣„õS˜"èòfãJ,¥&ä7ª 9¤0m5¯2Ü–FbMòº¤†4+§”õBYÃ9 ¦>ç–Öc‚4:ãh2ݲ3ˆ˜6ËÏ¢(ÕðW \ÁþÀT€@* ¶„y&4?ǼuC Œä*fâD3„8†rMz£ŠFëôpC3œb¡ú` CÁôMrÛ$"'£è…­.º¦LW°Ûi2< b¾@å€r´¦Œ{#¡xÁô:›V/ÁãÑé´’üê×â5FºAøHÂ2ã|*™`z^$i˜éZWDÖhLLfù{B0âÓqÊ¿Ê.ä*h'fFTOÇ|-â„E&n,Sx ƒÀÎ"Š\B‚¥CßÊ%p!ôGQw'ŽWefp}âø7%~1HŠJct3o*Ã…ü6‚0F‡¢\LN)ëFþV]&bOAüÿ™JÁKd£BúHË,®ÂƒkÏ YÖ8E*=µg¢q²âùØ5",FßqÂ>~#xœsăQ]¢ô6Jw¾äaÊÑŠD.?` „'d*×âȪ\†Nµù¬Š!CD´sðb+<áÚ €`@xÀ\ë¼Ù ¬ÅDö$C¤ßi‹È/m ² 4¡†55nÊ”• §ãùê=À¯øT-ø€áÀpùþ>ß` d{ï   ¤1‡ë怠?ŸÏ˜›Ýú‰&ϰ$Xû„¿h°0¾Ÿogóõìú€_@üý‚+OðL¸üÀÀ27ð /{¿—Ëì ”Á1·ô¾­€ïà jÿ?fØlî~Øü øŽÕÁ`;ñê÷z=_/é]õc¿@Àie8\ßO—ãæ·„ À+-ï4@•CõüöÊæ˜>N‚1gÃÚÏÓš>§ø (€¥À,Ïdy=¤>€8µ.íÍ»ï÷è H.€¸ÃÈùã,Mð€©f¥‡à ©¼2œ¢KZ:Ÿ,¢|‡Ùû -i», @0€Ç¹ð}Çáîÿ*çªf-û¾~Ÿ Aþ}žç±êΟMp€AþlàIàmœå©žvGü -è¼À²€ LþÆÀ ¦Œ;ÍÓ\´ ±*ëÌR§Ú¸¿¹‡à~ï«"áŸÀYú}pÉêÑŠÒ^Ô%Ì ø«>` p €à¸°ªÀÊ/tí»o+¶}3j²h`4ƒ*p"€@N„P:ƒA`ž*‰èŸ@1ú+ÙîןrÈ €iPŸ© 0Ã.úé¼«È ŸÇ¢#`jf#`²|Àbtï£iófŽŸK­²(9Ø™ìr”©@ Zyž˜÷ÓØçùìx¤™û  JÚ|‡ùðž$ 䔞ÇÙô}H €ÀYî˜1êðy¦§¡ä|€Ç’E€MôíÆ„m¸ퟑ²¦°A±‚.¹ÇÒÌ€àþ¸J­  à 1özžl êY€!}1Ô‹çÒX­Xú â/y °`š,uŸ‡±àùÒ@E$«ªn;}F 6z|"‡Êº’&|¦§ã*È yÀt.yŸ'qìzà `sN¹ {ø¼Ügêhú;ÁöÀ)îÔ» šp*›²—¨®~Ž»»L2¼~±""EPœìÀ1ï)ú„ùâÒ|a©öƒL‰Ðrg‘ÈsY‡—àP™æÁä~ € @ ÿ„A@xD †!  Á€È¨Hþ|>Þ®·ˆ4Œ2ŽÆBÀcÌ"¾Ï'«íìõ{€_ïWûüÁ@Oà[ø|±‚ÏFPPŸA8àý½ß€CíòkGëùü~?@0¬>ŸïÇÕ¼ ý À Àü{¾ßo¬ GoÀ(ú ¯7ûåü}¿€qGÕù÷’¿Ÿ”0$§o#æ½}€šÛVf°ΧV 0þŸï€ âë‚€ð^‚ÿÅ¿À èý~ƒm 8 úû¾Ÿ™‡Ûõþþ~Å"@iþGp¾xÏwÓû~ùÊ=A@0P*z€ rú 'éä‰0'ë´¬'È žîhŸ `6 Aø¯5Gè à³à&Ù`;°žk .Ð}Ÿ‹2Þ€@(€ ø›  jŸ€'й­àê¶´@cÒË8³€`1ï¢x|ÊgøßÂæH7à0ž¬3–~­«K*ó21‹ª±! ”pº‡)üz·Ðš ƒ€§ã~¸5ŒqîxŸ§¹è|,GÒ€†ð¦ùÆZAVoŸàyðù"KRzû+m 0ó¼ëÀ Þ üxŸ1õ\²Œþ}Èk+’Rgø y9â¡‚®2Ÿ'KÂv3µh€ buF;à ÁÊø€'ÝhÇ7íæ‚-ý¨¨ƒB˽ãfÀáˆÁ À@` ,0|2À!÷@¾.ìàjB³çð ; ø3oî¼ ëz Õ9s/DzÀ}Ú [Á :©ðñÒ Ã6Ê<ààµÓÓ îBàe¼g¤b½ÐzÕUÒl‘ëŒh`#63qÍ‚ñ·î«6ú«ÇÙâ} `}‚'Éÿ™­)艱ŠÈ|'Ùðyǹî«øxxË'/¤´í8yŸG¡ì~žkdƶŸ§È Çk-M€s4Àø¸G¢ã½ÞMv²€ï(gŸº³C¯¨4àl&zFµçÀ2>€!ðÙí(&~ž‡¹òzºšÄj°Ÿ`dDgöŠø'€9ȯ§iûßÀ‚?9ìПK’ö~€ðú°€0…Ã…ŸâñÅ=Š…Çâ olŠ+ÃØFW±—$(ìá!ün ÁzP.@z>2|Ïž!Õ5 Ÿ€=Ì0\O$|È:°â±@ X¸€<~1¬;ǹ@6c.BÈ™ IJZÏ€ c@(€@ÐÐöãÔtŽðÁ : Äâ1dƒÜ{!â=Ï@ökŠä‚•€ŽÈÍ#ÈgB*¨ø`42ÔÇ€ùV#ù1€n°ÿoGLï죉 Ð6@Ü0¦ö‚£Q ;àÓ€x”·ƒŠB'2æ>Í ‚]j@¹ª3ìIñZ€%miP> Òl…•6ˆÚÅÇá5J­p¥ä6‡ÃÂÆ„öOšù¾e !D£G^‚ F, ôÀD(Fü¼3ÌOU ŽÌ,¿¶tÚ%~°€Ö€#ðN%pFùã#¶|>ωü¯`6>OLÔæÊ}€ Ø€&#€ïŽXÖ©Í,äHŸ–Yq9æqÂbÇø>‰™k˜§ÎÓ |GÕÚ€– BÀ@úz `αqþdÐö“ÙÓà<ž«,€ ŽáÈ7… Àb¤pð(_)£2GaòÌè¾cgt9¶[‰A,êñ Xƒ ­WÑðDÑìÞÀõ‘+®'òýcš^VFÁéâOÑF'°æ¼NÒ{Žñl!q5¢DÐT# $° @à  <`=*Èû†…™ œ²Ä˜K;ÇwÀ õ˜öòTˆX#ÄAæÄxbàüòÖR£~ 0¿—|’¼t–З°fÊá•Pqo%â(Aß9 ¨D^Ç3HGÈúBÀ,"T¼<‹)‰ÆŒž­"_‡ÈôÎ1\:£a€@G‚józ{c1çıØ<‡øìI‡ÄÙ£„´q€ûtÀ!é^ÆÇGÇøð½‡ìŠœÑúþQAƒãä0€¤ûÃáÊV”™ÌbÔHFøÌ‘æ`Ù`3a„¼È’‰Í†ºuÎ%|™ ÑË@IÀ ?‡Q"h)ú6³= k–~&e‹Ò‰NÌ¢>-x€¡øv¥^I± œÐ%’‚­j”ÈÔ :Ñ'Æeò 슯 ñ/f UÕXÐ`®U ¶¤Â>¤4r#âÆBæÃÇð àp±ÎØÇ+°š‘ý!€Pù£Xv;ØÔXÁg[Ä2 ‘5y6ß'à'bXdb€ (£äy1Ô:É05`ø‚°<!(#Åö‘ø¬³z!hÑ¢*s>‡¸ËcÀfBªÀxõí¡™°ZQ¨‰ŠO(“°gfrŒ©¨Ä´¨aûÞD®NŒ$‘~6F8|H“2Qh F„æ{-àO€rO'0ñšð~ÈðèÀv£¦w’±=(Pï©Òt[ëMjÆaž‘ì’BØ0…Ge* OÜÑ(N¾ÐeÉêŽ8i³;€`“fr®¥W9˜#ÏY’‰þ|ïµf²Ó/ ^5E´ÙMšPy‡ÅÇ1ñ¡¡Ïh”]E”¸áæY›Ðé07_0´@8õq ¸™Òû® ÁÁ-øž–‹\ÒñÅ"ˆ³³RAèü*䈴J Pqz-Làx`<Ž÷ƒg(ä™·bOÌ¡r-¢E#Ûe@8œf\ö£æÇÌo[[`ø€6¦ü5Úã$~€ñÈ7Gµ#˜Vqþ È,„v4jø.Cд(,ãr,%Ú b,å\B„‚3H81‚t'é–¨"-i°Íc„Èâ‚3§êb :þÔEZ:fˆ>ÅDE¼£Ò¨ÆRìIƒÊ"‰–Æ.Á 2-€*à @ MÒà b,,äLHÃ-DÆØ$ž- P'E+É@2C–™.,#ä02*AÅbð²+Âò7%¤,G‚*> hÊœCF 2hмüÂÊZe´X%‚Ä#TK¾HáÀ„‚£‡è^Ìèéz¡êÁèQÇöX%¼D¢ †‚v¦ˆ/mÌUÈaàa`WÇïÍ<…`¢Î``$egÚËìöÀ$Cäă†[Âx쨤ÆlÀV†ö©¥¨iCŒ>CíbAå¦vîì3qŒC 2Ê¢t|ä>8C—D@ÂÒop`ÙäH/Ú fbéÅžÂ*èo‚†ZîM<£çœUiì1C¥š=#z?КN èG$h.ƒ$ã|LäJÇ,8­Èn­4#š™Ã2¡£ì<áäV,aÖzÐQÀ(K„¶ÉЬ׭F²gãÀµ-Àˆ(´"ˆ P´'ʬ_mˆoàô£ÂÊÁÚ €h`~€Vâ`>;Áä8ÅnŠB¶ ü;«à:áöä(&¤<>ƬMƒ„6dCãp;ÄÄÃ6i–gÖ†‚¨¦¬BÈDÑÔg…³®R çƒðüe*PFƒ YòþF„†]bî:c’Caà=ä¢Ã ~ºÌDbçbÌÀ*Œ/\,BºLj¬ÏFñ ¢uéLYïPVæ+Q«ãJ܃ªmBÐ,’ÎÉÖæ±ïé–/JŽ!`PááÚ8U`î"0äâöbêi^8cˆ¡®6#,ykД¨;×PÂ~1²b(.ô9£ø/iåÆe÷¸-Ån,&H%ž1È8i¢Îq‚v¥ŠŒ‚z<£¼4L¨$ ”2ãú'G^2ƒ„FŒL@8™ÀBa¾AAÈ4d ¥x0Å¥1srI¨,%Ê"‘Œ<ðlú4ñ„|€m«å¦I„hHÄŒ˜"Òú ã~CwÚZ‰Æoä´kmˆ3à0†•4Vi¢/¡üwƒ† ”ÐI´c¼k¨ø_b Èç +bÔ2#~¢`,å>‘"¶B,ZCº0ŽÂyƒÊ,ŠÌ- € v/TbT'Éž© ìÊŠr¤hYägNE‚ÕÃ\©ö`BaöËãª&#.£Ì¥Ì;€8(aø+ÙvþÒ Ä¡@A⡸` QCXD¢ŒW¸ÈÐüÓÃ~47¸.p>(4DF‡T'£ÆˆËþÀCŸˆè8Ä'°iÃ-K…|(3p>Å\G¸‰}b$6cBãTQ׎@  0Ÿ@*@Ä ÀBu£JÑÅ\W„˜È¢Ø((:„šcD…¨d:°Ý-ƒÒ8Rž<ÍÅPP >¢h ;¢æGª EyrCú™Ç¬gòiIÈÑyd7èh׬He‚:C,~Áöœcd㚬g°¼ã– E¦/…½…RHD÷§8Aî9D"qLU„ØBø=*·U‡,àaø#ä Áþ߃ÒcO~2®¸!ãìßÁòÍ"r¬¾% @Zb>ÀDDT¬‚3©Š,;Ö4ÙÂxáê\íFapÖhƒTPBÈo˜:Z.C)6'tÚ.2ƒ4é–L³@ýÊ,3 Ùââ%É@I®.Ô àAã>PMý¦î82 gÂ,ž$šèij4Ct ¾îPF¨ÐÈãÒ1ª>$ì*¥µkàE¢Ä(ð2*›A‹ALÖxމœ:E¢P"êðâqðöÃFÞ¿¦xC‚7 M­–’Ÿr„ˆÂˆ¾ˆ˜Hè ¹¥}?Cª¬!ÖÀ h|`PæÁŠPÖà0*`†Õ}z•äˆê´9¨rÖC€ðžT c(9eÚZ—Ü8¥y3°Öi§­OcÀ€@F.th ðÂ9ÃÆ=„<"V% kØ\‚$<³Ò1¤b, 1Ũ’Lè#äú3 3¼á˜§*̼â|mDŒv"ô[BÅü;og°§ÎÄG„cäz|cyA²âV$6ìи•Ì>©<¶'êÍl Ìô ·' 3CÒcåÂ;®RÕr`>­RAî.úÆÍÇò#DÂ\\Íc©.¢ÀAþff欺föb>D`€%/Eb³ÜtäcZ3Ø:Fˆ2ÀPGü¢ÄÎÚîÚ.$È,¢~kƒz=`8ÅVæ(8i·77êqõR‰¦(èY-6Áêáªa\!ê¡ÞÁÑ="Úž"€o·$Åv#ÆI¢@F¢ä*®.2#–~§°+ÃF.BÚzñò'Jwq-ȃ)3DD(iô>ÂÀ΃"FÄl8.¹@"º5Nîcµ?F°@8@fâ²\@ y¢†€cѧX(ÐAèöuZF¼H'å€WçDZ)‚v¯sz¢àxãÂ;„v ƒÒ¹€Zš^!Ü7¤ÂI°êÚÍÎó–MlšŠU¢5Z3Äc̨:¢Í`ãГʌ\@/ò‘ÌÜ;ÅQMˆ#šņJL€"ãhš:ââÎ󿢣Bj\:âYþT2Î44°éBÖƒCë#$,Ã, .)à:"¡ÈóÁÒÁ)*6sãb¶qç:°AÂbr¬ÌhÄpLЬ1„`'3`«+ 6&ÞmI#q’y,tʃËÃð4\Xå¾.b0âëî()ìõE@()Æ0Ü/QF%ClÔL‹¨2úíH¢ªE£BF¥HÎs@aÔ1Íø"œÐ:\*.`ÎI[͇?çà5Œî]}ǯ¤ ‚âßÇÚ3BØ-¨œ,äZRhþ¬ÉöYíªÁÜêL ð"C¬äà¡àU¸ˆ“[ˆÛµOâ •##sI<C® $2‡|Ȫ ²(Üp>‹/ túz¼žà7‹Ýä~¼À@#ø€^ GØüøe‡^Œ°Ð  =ƒ`SÜ~Ÿ€pÿ@`8ú?@@ ý~¿¨ôP öŸoéðõDŸÀWàúü‹Q 7øÀ¾ßï°£éú€¡@GËñÿO¿Ÿo§Þ úÏßçàÿA h Àþ ß@åi|SŸ7×Ô°Œ¾Ÿø -þ¿Â`&” ϽßÌâû~AÀ«>k@ð* ‚^ÀÀSñøù~¼±/à jÛ«±Ô1 *-¦Ë`§+ 8 ™+ô ‚`Œ)ÿ`Ÿ'À"À0ÇÓÜŸ§øŸ $¤-I"œ¦éáæÈHÜ€‡ã µà Ñ¢ÈھãˆÜ@}žíyô2'ò2«'›{#MJþ¿Á©âvêBoƒbk¸´ªpD8{£ë{´(`ÓŸ'Ü8²«Šì Ö,À à€@ .ª›°uGé쬖§h^šGqÐjÆÙ⣇Ùê«çð;¬*€Ï@PG‘ N¤©Kp, ԟKâÆ @ à(€®p€À8ŸP$}…Àˆ ¹‹`Á+ÓoÀ{ ZJº1+£#Çð y@Aç4¿GÊßV€3ê}@‰ø®-ÕšŒQ좤MB}>ÍÜŸp] úß*R=.²’¨ w#ûJ´î¡+‡ÛԢπ‘ò¸lüÂmÚºàqþ À%½IØí˧ÑòÑŸ » }·§šöæg.éË |óQð|U K!NAJ2®¡öŸ 9ê€ÑaüÁ(ñõŸè€ò zÏǺÙŸ  QÇ⇭Zd kVzŸ[)Þ}´³ê“Ÿí|¾« ©'©øzÜP2 ðëCªÀ¦Òùð€ùðåÀ€Ûd,W"{¸ö›ч”û±Ú¬r¦ëeК,±pêNç#ÏÌe/•;jÉÜ®6î8¤5ë_€¤Ï¯S´¿€ç ÀY ¨ tBzJœb8ŸŽâо} è{D å^Ô@ `‚(}|h<¼ L@&ˆ ùè­1Xj~† k)ô×"* úW˜1üÙ탟9:*µ8h€‹‰ê‰ž€Dà€yí7E÷S3@(#Bˆ‡ñì{gœ/‡ÐÕ€õaâ°žñ¨¹€Ç‰ò}Q˺Ш`Iý`»'Ð{Ÿ`K>_€ Щ›|Ÿgø|@Fÿ Qª¹¢iûl‡áñ¦ŸÀ“ž W‡÷ÇåÈ¢±Õh1'Ô 0W‡‰êz$j(zy|&d|û혾M‘º,ƒ,úù;VúÁˆ}žXZ­£wÄðö¾@Gú"B av€mÝf°'|ƒZ~|¬H ¨rÌ@GŠÈz93Ÿëâî«ZC7 ±!ê>ÀA¾2 ÈÝtn>À –Àt ñǰ€!ð:‡óÄ ‚*Aá!"D ‚ãìB ÓA`(Õ~Œˆ­ðyšAÐ;€hE%@è°<À!4Ð|0Ñö=Ç£ìeé!”#†aO˜øÃ<1œÈ £Ì #ñöh•Hý†ý4†k[…ó˜"2Ü@ ^‹paüØÇó9à8Ê;"@òJª–5%n\Q1!4%Á$¡ Gi×DgÉÒ°ð‹Ûé‚(„!!“ø`` -ž¾@Ê so„5¾4Nkq®w)<†° סú!«<ö¨Qú=Ñ8÷Že‰“€Y4b‘“N@Œð¦ÑôŠû  ¬œÁîÓÑþ/'L½·^yÞ}|15–³|Ÿ nU…€7èÇ›n¥¬è‡žó˃uæY ¤¢Y…l´ ³z ÒÎP<Sä€Gé›`$€…0‘˜ðv†ù£*KØç!£vª¼_èåLÇhCMÐünMùóäXNبPx”– QZ/°Ÿ¤L?ÇÒ~8UŽÁü+xñ#„x ©®ÛÐ ntôœúRè‹@J¿f†)“€rMP]t°?@ÚL ·’¿/ÎØÿà$~Ör<‹Põ]`H Ð0õ'*0¹´ò~’˨üL•f>À*9"dP‚s–?ð f ˆ·åxT¹¾ ÄÀ¯b) YjN1I "†v>G±Æž$Q~r#'c¢UW„ÚÆ°„ÏÑ/lƒ*N  y7E­¢@<ÍhŸ`-È&xÖCmê3&ú¨“òæ½ú@è'&¢< l–†w™kö¦qH¿e˦éŽj‡¡i1¦d ³vmÎR¸!+Ù±ú„Çáz(‰­3PÁÙñŠ5HЂ.î<Œ õÀ$½.GÆøOñŒ0ä@„/EYiLµ ¤à0<‚Ñ2,o(k¶|ÄëP™8 ±æ>ý½¡æA‡ª(#ýµÆ®rÀA#¶Íû’`€@¹Š?Á×…ÌBRX¥±\ežwÇãP“æÐ¨ÙMσ5oˆë ™iU)LÊô(\¤J‚ÊA—iº0Í\¡L¼ÄwŽ`ù,¤ ·Eü\^b ·tÈ¡ÎZ@¡µ)´˜ 7Çš/"R•ó&öB™¯!+ÓJU³ `@0&â5ÃÀ„@d ÁÈ2 Dy`N‰‡tä‰ìÔÂ0ÕKSKWJ#Øe‚!è3@ó9X#Ü 2à‡Éù.%ÅÉó¢è !9 í£AþUä„¢¦ C¢0 wLqë”é“ ·–õˆš¸Cœ´¸$XÈC5·îKÏŽˆ WDe€CZk®ÂnŽzÑ\ÛzÊ]ÀiWŽ)ƒ ‚BÉÊùZg2_»BÈ|›pv¨"tf›H‰`@ŸæR\á {&1e±t•€G¸úŠcôv B(…*ó(E#ZÓÜ ,F¨÷F¢qG‘eZÄ^_RÄ«jFƒ6Bèã5͆ë@e¹®Ö²ˆûcXvŽaê9‡XìN£ìxqæ<Àãø¶s¶?‘ð Wõ¿”¤Æ­Feö,uÄ—Áæw@j Œ6¦à<@ó¤ÝöÅÖ ’sggD¯³äŸ“¬;¤Åé–‘à8ϤŒ%láð?Áî]àWà" € ²Æº^îG"Î-Âþ}â*¶æœ kà&¼#D"¼#*ÝËžgÇN,#ô…½¤°?C2´‹z"êMÊŽ"(®!þf£&!Ü!¡Ü/€L†P¸"eÞ}† !ðƒ¥ð1¡èW…:ƒÁòÊd2ðÁêÍv™À{Dü&®:]b&þ„ÀOˆæ2eÚ ¨jµAþÉ®(òç°Ä ÃèÆä)$@H–8ÏØ;'ØBÐcmdAx@‚þÃpjâÆ¶c¬«ã ±Fæ0+@ú+¤s↡ðÚªt"ä˜x‹ÆÞO $>bö>$ ;å 'êî¡à,â_Êø`©.N¢fFâ 7AúÉyZ9ðÂò™J"cÚ)öì¢4"öô=æ’æ „Ô8b€`à ,áçÍ$f¢,>fni4Eª° $nCäàÃqÂ(/úAäÊK¥°€"ߨ(gš§ð…mdÕ°hÕâ$AjŽ€"@d†Jl’&à&áìŠaèáâ „àdbÀ"€ É/M4S.¦¢(+‡µƒ*áŽ!ä >9€îhãÈP?Es qÆ$ƒ'^íd2/Ì¢„?€ BfÆžÂ%Ja¢B1‚À¬¦<> ¨/P€´#@Ϊ0bŠã¢Ä™È\a§–fdòf±¢©ÃôDä+Gž˜jç-„dbÊMÇ^^ƒZ5o•èÖ”£–_Â(0Wˆ :çµ1†¬+FFuáøk*2¨âö1©.Wh\@ƒ,2Ä@”‰~¢§@£øpCe§:aìGà8Gà0,¾"f‘AøæÜ<åÖW#$9qä0c6QDJ *· (/AàÒAÚ4@(g Žaà"%,¢/ëP"…Þ/*z]27„¼ÆBøk0h.é>/` DêÞ-€ÇGÂPbÎHg>/#,£ çÂ?üÕ"HtQ¬VéÔ"²‚t]b é«”År&ÀAðÁú¦Êô!Þ$aÐ?@.;à.P¢Øw"ÆÔ @GBÀ4È`@f·H¨ìjuã‚)#â6Ä@Áì@bô,$Îh0oâù1jFskx9cxNáúŠbÚjãî‘…ŠÚäR{Ž:yaø$g (œ: 0Ðuéª"ÂgÃx x_FbŸ%ìP…¹B!í$'â Tü9áêæúVè 8eè4Ód„Yãv1ƒ²"Ž:¼C&Å cšç¼¶dü8¤L˜ðeà eÖ€]å²'¾gã\ê>â5îË.qZgt<Ø…É>¢"(,nØ2Gð2眧âîºh }Kžœ$R5bêóáøD¢‡¢™H°%¹€ ÅÚ]L2+æ\yqã5¬Ú:Éz(£>‚ôD`0 FBBÞÇ=±þ0B,$€Tîîó&’LEL­ & *:fø"İt=h.¢’6ÂÈ@hÃ&úÏÃÎ^Ä $0ÇNãÊÚjFßXâ"…Ã,>â´6Ǹ€ PðÂeÎa6¢ä¾EÈI®"&rþ„ J­:Ì&&—à"ÄVt€Áè¡ÜeèWj¢+‚ …2.d@?O ƒ ”®à ‡h‘AêáÞ`‚ h ^€&ÍœIÁä§—-”4Ô1RælŒ@>!Š  X €.Æ ’Acsæ+âÀÒBÖˆ\4H(Šþì¥üo­^Ap˜´ªŽ44@„Dãl@ðèHf|„æF¶øÂ 1ÊÒ0æ'ãT.D~²†œeèž)2z8¬;“p«{5"â¹ìøïBòC䤆X¤š¤ð6Cç„U#ã<åâ°‚¾sö|ÒC?E>pȵØ.øä ,#É|W"|áä*η£\{TŒWå£IJ8ÄaVÁôÅOP(c»Ðn=ƒî“DAWÅZIî©D"ÄYã¶?N‚Eú5l¨2Kxn@o¡ðIüDfN>c½ÂÔuî†1!ì7ð5¢âÆèd†L=ªøƒÃZý¤dg$Œ@ƒ¡ÚBaß X 8céy¤_Õ#l>ãTÃd±x!CÈ¢@úko®¥ÂMþ`ר1´ö†À tì`G™|KÜ´ 4e¬;PÞ9–ä¿d&4c–uår@A JÒÏ N*¢Žs>>M$vÈ@,›ÐpAÚB`vkâH0/WØ€å»R(Ö@s/†$tHC¬9ÔP›0Ðr MÚ&†Za¥ª"b P÷l(CÚfBÔ cT- x7Ò^g^—ÄPQ!ðB~,:DCT¯<~’#¢Å+õ­˜!Þjâ``î¶/0ȸý?7&ª&g#êEñ¸}æ²t¦äö$«bÖ.$!Q§/ dæ_ç´HTå,bxÄž.ø›Huæœjö‚22,Â`÷^Ê$.W‘äŽdfZB†p.zF® Î#@M“ 5"ÔÎÄÜ(s5#RdâCÄŽp‚x.¦ú5¨¬êâÇ#}}š(=íÒŠµÜDäÜ{DDc†8Âæ£À¤Öwë§Ä;›¬\¤ìGáôJ! à"¶&ÜùC$q¹i|?ÃX”GE C0Fr1…¤D`@gû}ª¢f¢îJ¡Ö!ôäà.ÕB …¬ÄáÔ¯ƒjÈJq-Ój¢Ö6´T¢1‚9¬`Câ&ÁêÜ`xh€\ (F HmAäcdÒqçeëqyb=§è¡ÁÚ`09@êäñ&Z-CqNÚÎȪ,ƒ-Yp=ä Hç`›‚ÇwÂàKBâg)n3"÷F„Qvä34h<"ƘÅù"øZ6B~-Ìz6 (* Ÿ Æq‰3]5¹šE¥ž#è?ø‡¤¼‚"@îìšã¬NZ•àHG®›ëXn· \ 2`wXZDnìCTòo «‚‘§Ü|b´y#Œ7Â]ån@H\vÜ,†>A®F ’(Bûc" îäÜ®*Üç¢Ð^‚‚;clFé”di.Ó^05Ä/AüϘîÃ]• DAà-yCÚ>þCIz5{}‹äL£"%‹6"Î$Ðhp¼Éáõ ø^*%Jy b$§&ÒªÒ`ƒ¢ïF¢Õ±J/€}„6ئΠžì¥ åÔ8§@iÌžcÃB-Cx.ª2U”Ý’fNöܾAîyäš4QR¶c"ãž6¤f4‹æ¼íâW#0Â&“‚.>çûÂÈf=©”Lï-téP0Í#DsC´;"¡>Ä("|GS j Ÿhà%"é fk¤¼ ,k° ÙèšfðV@âë>ãîa§›$ÉÂàYƒ–¤~4‚tré© n"kä/©~D¢x‰ÂÆUÒ£«¥Bî;bySÆ>oö›…é¿9GÞ˜e=‚á"Ø/ GG:7iâC 0泃õb ¢\þ>¹ðú4܉¤^ÙFQÇ…@ŸtWÚ6W xB"ª"ä$=PwFƒ¤F·¦Êv%p\!ðC,dãÙ„ý_þ7ÂÔì¨Ì«>(D„}èõ]ËY,骘â¶JA]äª$"Ðþðð­;ŠDGk#¾£"ø-Å9äxÎÈŠ Ä…ÇÖdͬ! –C¾_Ã$"$^4§"ö5aÒrb*ì€1LãÊbAìÜö.„Ö´!çòÂ'ÒžÖC#`ËÀ×  ×âi`¡Ú@fÀ` \aà P6ÁÞ_‰>qãîô%½ïÂBPÂíÀ¡¢ç´0à.?”=HcB4ycéfƒ¼^Ò§¾ƒ/c(´+/'Â>8(gž—æ,u:—âr>Ú?œ–®:õ“1÷«yä5g^P¬FD[Ú5ä úÿ€@(~?ÀÀ0 üù‚¾Ÿ þŽÁŸ‘ <"@À #ùúühìÈ ß p8‚Ÿ¯G£Åîõy>Ààg |ÇÓìùƒ¿à@gôH ‚+Rè5@_¯ª«üþ~? Ðì}€ Çð¶€äÀ ³éòü@0H-ôó}¿^oÐ(1þÀÞïì$jšÛk  0 ÿ]-O—Ðò¨€`pSè~?žZÇ®º_X“?_`Wý¾=2¹êÀ¯> ‚=å÷@`÷ž<_Q‡ãÙúþ½?Á gãäü}¿$oð;û¨ ·åðPëiï§2·ôãK„€4ÌŸ yú–¢ÎØ`hž !øy€­Ùþ~¢hÙø£kAü¶Ÿ«8º *$¢‹Aú2@)ú=À쟹þ} `„?gêêÇŸJÒ¶µ*H"’ 8$ (&œ‡©à}ž‡¹ì}’«Î­ÀHŸà@¼Ð ø€‰LªQZä $âÁ*à*fŽ©à#h·Çœ-ŸÀ0­’aî²ÐÐÒËÊ(!æÀ AS˜A`‘c0匰P£øFš=\@é,!ƒ@l¨-CÄÔ¦O(ûðè¯nFW€ûGœ¦à4@Ð4 ,LàC ¡õØ[À+m°(~aúkÈrDZ€ÕÜ@Jåyüè¬`Ë Qi·”†”aLàÿSny˜x @"²,Céh&%P©J,à{2=JÛû0àưâSrèu !þ©Žz:j@r(rȱÂ8HÎEÒ>‡’0‹¬œ·Ì?X:Rœ»¦“>ŒP€lžåO!#M}Ì ˆ”Hs_˜3@ {°<CVà<­"ü±Q²>1Ì»$ÄL‰{ e¬¶-ÜÓ’Ù³3Œ)2dœ¸ü…íT TY W ¤¢ú®VèR¥œ¥A!vWx)êL‹f/¹®À`€o ¿¥”OVûSBR¦R¸ÁŠá7à ~°gÓæãÅ:C*QΠüîz¡B8l@u&~²•–%¨¼zÊàgÐrh×è>G©'ªÂ)LC¡!lIóP÷ªÇz\ GÎÔ4 O—+‹4,ˆs0Z@ kãÍÃWá꣞FâÆÌÐ<§@ 1@&`”è €“È>Km+À*BKQò=túiªËÓùÓ\'ëxÏ€ê@`õ4€PØi¤:Nèëè(zìèÜ4€\Ð.#°¸Ú‡© ©Jß²ãHIãšìP~±Æ`ë(L²4Êï!Ëm„„.w”õ€2ŒY]úh>À@ÿ…Ý:ÉùüÞé2lpz¶`²bXH´x‘à=ÑtÑ PÄsIçBÝ qúLùL[B†1!špa `²“æ=Ç¥!ª÷}&úB¢Ð²X2P¢ó99®3”»-!ú=Ï^ŠKp­Ò¶¾=‹xôFrb±¼ˆšâ!'³"öÕÁ{?©IÐ<1ì;èPí@æq)šÃ‚½òzKp(&.<ŒÈ`4à]é7pÀ r•º>0†ÌزӖMÊÚ÷0àH“Ú:œ¸! 5 e:‹GèÝÐ[Vò*F ¡{ƒe~u>¦gRPs°•¡í €HBdÀ+nвß'eJ“…ºWÈcꔥµi ÐH;Æ 1À  "†QÏFjñ:˜ÂîðÑ h”fÈPIº[È*ðM$Zn˜¢*¢Ê"3`3tä¶šA™aæ—HàË¥„A—>5‡™€´`±tJðŠO$G†=Ìó¼ve–À1cMíxgËXþ»Ë/°¥Îix"Òë0‡4?G±àoÊ’Ýpó£ŠÑfæ¼$6w+1ç °Ç¾“ƒA*ì—Ó0ÒAÉmä!1†È~»Þ>Õ!Ì5«Á&Ã$¨× òçù`ŒÆ…€Ý4M43'‚0 ]ÍáÏl),ˆÂI€Œl(M6€ =€{c[OÓ,¡•€ ‰©šŠyOå4!Wf©"’‹yI” ÅLdᨓHþ€£<ðÕ1 ܱ¦}rò–ÔªÜkàÏ€ ä RäêXx“°^?/EìÁQ€Ô8WGøóE)jϱÿnœDÒAÄ',+un@yÅo qÑâ»ä"Òkà"z€µòáºêN~· É!ò¬!m+ãÀwÄ<€×!ƒ`uÖ!ÎmÀ(!  F 6À2B©ââ;‚rA¾’”b: ìn‰0Zâ. Cš\†.?‚vÂâäè "/AØŠFˆ‹n 6#FÐÂÀkëÁ sJ0cEßæâŠÀ$"D|=ÍäÚRä 4‚æaòw£ÈPÄ–ýå¤W EÃd‰IJM徤$" i JD(&Z“EN,b°Cä–{`„T=«N+`$BH¡ÔFÁØ8èòZåÖJldi€FoÂr'Ù £Š.®iåJÁì¡Ö -† Š¡êÀF–C‚@p{aèe„:Ñë”ð®ÀDᬬÀ$@*:î!-FÂ2+âþ6âkæbòÐN+b¶!m&æPÑä¢÷ë’ubzhΰ„ƒ¢f#Ö=IH— ºë¢'cÒf%`W®&åàF¤;ˆÎ¡bü!„`[ꆯN1ÚŒ)ö’cÐ*CšB+æ/ŸD‚0©öEå©,ÅCŠ˜¹†¶e¥@Ìr®ã˜Tcv0ãÊM|â¤'‰CžíäáOMéöÉJ) ö0b¶dCHœ£ÖV"Ǭ>†ÜýÉFD)6}Sf/Å€bºÏÁë Ï‚”­.“c˜0ãš (=dÞmãÚnòÑ0ÜKR<’Ö0² 匸lTN¢ö!$fiC˜#"nhâ¼}D‡ªîL@š@/„¶Â¸K#C#\‹‚Æ¥d>›¥a<ÑHo2üÀI»4E¼/CÈ7Â(®$•Æ€Aàæaêjl’†ÆEMÆÃ4pÃ>3€&V>5 iÄ\két‹t'+@‘.”'@'ÃRü%Š=«˜¡Ô`"¡ÎáÎ%AÞÁØ'!Î#ŒRA䩈v@ " *@&R@fÒÀ!ÚèH4qB'ˆã~ ¸s„Aæ,)0©0“é¤L©`W r°;§4 EAãLqÎñâQ(À$.æ¶E.¤ Ê/¨ =cº››àDS#æRO-àw¦°5è J߇æ>ƒI)ˆÔŽºAï8KR,L^)H”X&Tà kc ¡ôaÌë¡Ð9n’’€@  FÐÉö5æZ^ïÚM !tjm¢ÆÒ$šÁùIcCäŒBd*+ÆòŸB”¸tØ,Ä\ä7c-nèiR¡èT辋ãf‹ˆsEP"ÅPë® ÀŽNpRÀ'¥.läèXºB&”ø)À/®r!o¦‡)ôB"eƒ1 3i¤“Í(ò‚Þáô{äÊY"9d “库âNpP¤c˜FÓ^ç™:u®Ö=‚Ç !Þ¡î ÞN v@'Dޡ䡼ÆÂ ƒ â¶"¢ÕÂúN­èƒc*´iˆ¨F@&À)«#Ò@~@j `à$ ÄZ5H4"¬ Ïk#œ.àuÁœâ 6K@$áÖ‚°8H¿( ƒHTaözκ!„..îÚ¬ÅS9c’šC˜0cG &ôG)2\4¦>ÀM®(åx!C*< Í¢*hÂÞw²Ú‹¤€óÂè3å¼/¯R  dh H +eNB‚º1£V"v¥á¢#ãZ)\K èkBVä‚,"n¶jü7qÈÄt,Ä>4¦°Ñ/ží¢^Bö5é iDÄõD|xeºi¬|e£bfeG:çV«W80âƒ1,!ðz$ib¾$GAõ¬ À"!ê5$ >bn+¥®ZÑd1‰J:—âC³iuäÞ”Ãl1§ø8GÊ82M"zÇ +²¢,cY*LIRÜ¢¤/åp61RH;t "H†Œ(‚Ä`¯¡øex·C!Óâä_r‚¾` 1ä,‹PIGêKAâ£Ä8ãêÁà9´, *.À¦tÕ>"q[áô|WŠ"xÀeƸBƒÛŒDÖENHEÄÂ#o‰@Ënì!ÐÁÊpBz’Z„•¨‹ëˆ 9…<‘C4evõChe oÂŒÊÃ28eQ ò"‰ ›ÁÖ`1¦69p-Ò¸n²Zì‰JfC8O` »#²nd€[ÆPRH¶Ûi3(>¡î#£§e&o–ª"Ã>+…€|iÃÑ(УÀübß æàH„ Ñ'†WrîJffFŒñáìTðY úÅrC¸Nƒžgj)f”§Â,ºæ¾,Ä&oQyRäpX«5Å "€ÆÃ–2"¸2c†4ä˜HyÊêT,*Ç"ÄGÆ‘{c0Ouò@ \Ì…câ!Ì$e® 8YW1… +€ÔFf:âvm³V4ƒ–‹ \PîBˆ#%ˆ5‡MbÞ(ãÖ/f^˘(†`Y¥ ‹eœÂ|чYi #¨\âx(sÍ/iâªLf÷ã³¢Ši"”¡¶­öjN¥à‚–¦‚H "–¢_òÌŠol®vƒŠ;Æ0`¶Ö@f.eq—©z3„÷dÄ+ƒ Uö›llÀ<a¨ † €07§àAÇNe 5ÎÀend&úÄ`/j3iu¢²¡dB¥fb!Ä,D¥{md›âŽ`"vc*3$ Yâ";0‚šBÌw…î/0¬—J/Tç•%Ø|lc†5ãÞÓ8M6bð›§g€¢v½åYu†P-)\iTß#cTJBLІ$O’H‚º7"¼!d^Èf".Úà ÂH•¸8ßdéˆÉ>ˆ$º}@ 1 ¤8p‘ EE»Ã£KóZè;s6ö"^ÌñæÐáè†c °k A¨H—NŠbÁÐ6 mD¡N‡œ4­ÊFqȸbâà&Y( Ç"K\ÐÉãÛáü+áÚq4Š]¦˜orƒða²|]‚!Û!¥!#¸š[V:¢  ‹<@ wØôzäªÀ`X¦xdà7ÐPø AàP8÷y¿ž•§ð ò„²)gYøø‚Ç¡€ ü°‹¾ÞïGûæC[Žè€"åä‚RŽëÃØñx€lÈz1àH°è€@€}©Ð€§š{M`GúH~´Ñö€¨éøzžçüN}ÌXÇ¥ À œžñìz,ì[Ä~GÑŠwŸ†9¸}œ‡ôi5b ‡à¸{`jØ{ )ò¿ç™êŸGyÜryΦŸ@$H{Ÿg9Ú~MÀ7høêCàj|¯gaø~ˆ |¯ê:ŒÈ[- C¬Ÿ¨ÃOÀB$‚`Šš ¢ØP Áp"À˜<€Gè±úž`"|­Ç¹ÎÀ‡‘úüŸÇب€@P]/g¸Ã#*( ޼@ïXž‡éäZ(¸"|F°Bš¡+rJà9ø°F‡šÊyDÒqè"𒮨KIFªˆ{¤‰ógÒ>àSPÌ"§Ë¢€ 4€  Œh2H€ÚÔ~¤`ê€Ô{D1ô¿„ágÌã‡+§©üêÐL˜}€Àk>|·góèâ§ùßzŸ¨ÐeIàzWвN¸€µu”Ÿ‹c@}¯î>ÁŸÑ ¸D‡Ò Ç03dù¯ Z'Áðy †€ËÒ× Cç½ú­GèäÁŸ°ÃG‡B;äxŒ*㬇Í'ø韉f±¸ bxŸ¬ÁüÍ"¬r¡*ÀP µ®…ggª=ek ±÷™Ñéî×x%÷XÑ_Šy_Œvµ@)Ì‹Çs^àr: ßçé¤|(€@ ø@áP7üïèPþÅÀ H, Ÿ€  üõ|=nà8èl4EÁgx Rþ~<qGÛÕìþ{½ß°€|?À ‡Ëí wµƒ§È0 íƒ `}ÄŸ X£ê”ü?À”põ<~€€ P¬A‡ûåíM{?Áwìxñ}€žï·Ð€Àöå ü€`  ðþ¾_8Ð ì ?_o×ãÕû©Êx0h$ ý}ÀËpöü?À±zä û\‘ä¸@€ ÷Tý†×A@,Ö­ñС€(ö¹ÀpãÙ×¥í€3ÜOxàªãÍù¢ŠDˆ+õòŸ‹2ê¥êØ °mðÉ¢ .‰ jÔ~žÇÑêzŸÇÈ¡¹ÇùúÇ;@#„Œ¡ôŽµç° ¤ÏHÆ!ú°‘X  F€c.ÁÌYôÕ©H”»Ÿñ¢~éÛ*ê º`pG™òzçáì}­°|6„£(ôº ÛÅžÉùæ°C'Ð.`xè) ¸gÀ( 0Þ ÞCGôš)ðð ö}Çã~|ŸÀ9ìçÒð@Š‚ §&ùÒzœGqÞ‡‘þv@'AÔ~ÇþyÇP‹X<‡ Ÿç±Ü°žGãxö€`ö|'¬®8m²0s©âï/COCl«¹‡±âª%™üœ"ˆ²"‰(ëTè,H+gø´Ÿ`0  #‡á‡ÀØ8á}{¸+h"Ÿ ›Nxà]T<ç¹ð-èD:Þàƒ¼{=PÐÎÚ4Õê€'Ĉ[ Iäó¢†, 1[‚à³Ñöz`1úv:j†€È"½'†nŸ ÚÈý@b°Ò‹R {³¹‘öÈŸSõzÙKËŽ‚¯¨!î|ŸŠÒË aêžvÉ鍨Fî²l>gà€GÑø­ C¦zÀ5„Äž-åô­£g¡ìxK³"+‹Z©LÊìéîæ´ CŸˆ*,Ÿ,yò¥QLyüŸ r, ‚º 4"Rtºë¬Dˆ§ø ¡€mùçÆŸ‡šæz«–Wv¨póRÇ.+ndfW?º‰,”K@PÀyúújÅ­Sw÷ú,„AÇŠ2õ¸ù5ƒøðòˆ‰Iäš–(kQé«ÕÝšu>DZª5 U´€0;GÀÊЀ1ðÑ )ÁôvHY!ÆC",FNÑD"Gh€ Ò . M&‘î; `<`ÌDÀ,<€()^éY&Ñî= iˆwi<ÇÀcÚ øÍãÀh‘ò?øï`4%0ÃÈòpGAÞ:Û”1;ƒÅpÁ€šÈiÓ$äàÅ™“€f‡ÐøªP£¢ bô#`"=¬é"[Høh‰ùšî›Œ!®‘€p€HÉq‡ àˆ–×Hù%2à@‘$<†ñ˜p`&áìHÑzmƒé ¡ ÑÓBƒì¦rºiË[)yəɑö<ÇÄÙ(mΚ>@!Œ$rœÇ§8&žÎý?g ‘¬¥ÔGã'™“4z–qÏ A”Û©Uô>ÀTÖCÜ,å[‹xû/@(Ÿ9܇‰8 Öf^?¥àýŸ@´™3p?”xüt€)Dò2Ê2‚QÆýÁ˜÷n¹ª^Ée˜"´Ê„SÑg‡µ ‘”ö“Ù„.ìyLÀ†@ppª‘&à =×9]ù=;ÁÔÃPø#`„v‡u Ôv‡Éƒ9ÍÇ^@Ž€ "érSÒE’Ë#/édí(Ô_2ŠÐ…ãÝ`t‰‹ p·”“pE‰1—D¨(fLÖê×v,èÉó„=”Cä˜ôÐR$`P9…/fAQÀP˜â1PM € XÚˆú˜‘{”ç ÛäK#Ë2Œ’NÇðK¨ª¤=TÊUϤŒëÃMm­ÈY ]j#¢#X™žŒ#†>GºÂ%€ôRb €¨ð€¤ÝàôF>G€úý¤ôšD’F31ƒ,F@2jÀXà@ø²qþm`‘™1&ðÛ€VÒeK#&mL€?¸ò^¯aC@!ÿ1/ Cœ}%ÁT6û(§P$üÊ´àšC)4æ/C:\_}\¥ f¬eÎDL¼7IÉpÈâ8Y@I•Òèm¥*H•ª”Õ¦Hº¨‘þJÈó'`$¥tJ`jäz•:È™] ÛÄ›Yr,Žšýú¢âŒŠ0 6æq.“¼ÚÞÁ-'ýe%Ô?wø¨à– ^Ðø 5#Ñ{wyÈ^–¹é좙te‡üXPȼí8ÓSÀ$Ê4õ ®ò`áøÿ>Ôô±.swˆ²y]R–%G»ÁòzSû'˜Ez”(0ÝÀzâ¨}€‚Þ>®€ûˆÝ¡íÑûƒ>é ˜Žb~;Gô—ðtc>ï– ì€wÁßÏÕòXqXtŽð;öé(pϤä`[WiD.I ñéÁó#ï.«Am¯BŠnËPþGôƒÏ¥Ž'F#  AðKC^7ç¼#"2×…àIãÔY"†FB$3¤^L$D¹à „J}€$Àà0à  làœ¡òäwŠ09¤>#æCf¼&ô€Æ6$dÊA¢ä(v1"ÀMfZ3Ã:"$8D 7@@ ­¤Ì2Â(4nÎcÜc… è‹Êj$>êD8 ¾ˆ¶6â"$ʃ´Mbü/£Ê(ø €ƒô'”^ $¾Î°ÅT¡è @(1`,aîaä„aÖB .’€*PGV€@3¬°"ÉI ë¨bVw‹‚Ï¢æI§câî‚Æÿd6;AäYÄ´4̰#Âî€ ¦€rDD î% :Y"ð£‡@!æ3ê2èÀ4¸#©Dœ[ CBÐPÂök¥JãWÅÎ"cêb…ã>5HN6ëŒÐÈL# 2…x ð>´7q,Y%X’$ÿÂ"¯îƒœÂ’×H†¾LGÞLÜJ…xàH "8"‚¨ÀzÀn l@.Ú@TÿAÞŽã|KðƒD@P˜Š0ät˜(ÈÂpÀ+ð2Bæ.¢ä1&Ò6ê8á‰T(‚Š.qÐNò¼‘ ;Ìãʸ.lÁ¨Bæ:jž RÎAÆzÿE äž$âÈüJaüéxã@-î\j#8;ÅÒ@’R]…êç„æ‹¨5#†DOÎ¥è—CžCddS`,ÁÞRæ.$ÞÂÀOëž5"â’ö"$C«…ú¡æsÂý¢ ∸,ˆv8}çbÐd`™ |þc^pÉNƒ"EðŒbr®#Îc‘'3Œˆ‚¥è2c˜H„)„Êvíð"h3ã<+Vµå4däš”cPÀÅ éåü0‘”qÉ€ÿÓêqÃvg¨rÑ¢ÀDI¢1â23éÂc…$)¤f_ÅôíÌ©)(qCt'xsÃè¹â¶Š"eœÚ¡À!æÁ¾AŽàFˆÛáþ« ð@7æDfnYhNˆN?áðD´~+¤œ.E’ñbFBÆ!,”^ü@ä`:ƒöÛB(ÏÇX^‚1ÂÚ=BŽQ%.G`ƒ„RJ@±Âq5Cœ^‚cš!´Ö.„œíü-HP+ƒ6`FÌà€ @r€®ô‰9¢8…²’$Áô.•L´s ÀÀbô,T˜;IˆGæZ˜„(jn="Û/@£÷)ÀÆ6Ö°.jfŽ\Aê!ò@.œ%~`Jå(5E*/„ !¦êFHÄ)Â#ÀnŽˆ7äÜn‡ÉX1 ’‡,nSï‰y6Cx˜Ž*…äD1aÖáü¢2‡šÏîH` 3§*ŠÈ®!ð¼€ìR¤•r€„’ÐË1K†}d^ M .&'1DÓÅ¡¦`I&e_Ãæ/@JÒŽ“Dx  .N¸5EœFKÔë ï'n¸"Œ¥êZØ"Ã3+Î(~eè)¤¸wDI°eÅ8EBÚ8"2˜ÂÒDE40ojè7bÌ6ÕΠý¡øÊDÑâ†Õ¶‘K΋Å1Òb!ä“LL£nÀ ÷lR­´\bz‹ú£xIáÒ#!Õ¤þ.Ž`gȬև#¼ºˆw$’õTC¼!'w%v‡àê§klBTà€hd‰`.`  %JBC1”™‚¨]$5§a˜¡Ü@.5 $Ý@4-qÊ.BI¦”AÃ2d¢,7‚.(¢Ö²ê”¤]Õ."MuéNK)v#è¨Ø|‡HCìÛWC€CÃn[¢æ¢Êô”ƈòc~F D.b/Ki(â(þƶ'hn'hEæ¶Vå²<;B&t=!ê[ col’%ê=3ˆºŽB-Ž60b¦@¥v ˜†¶”Äüh‚⤠YN3Jµ>‡œ ¥ëD^MÎvEÕ$“à1q†àª9®B+`6§h-ÌyÂÞS6ÂÃî℘„’—ƒ˜/*@,cœëNÊ$"ÄÊ3[)˜5#^‚t o†Š°ddA -ÊD,£½rdc©….ØvŽ…Êb¸g"†ÙZàdÓ î!Ò ¡ÞÁ¼Á¾MRI/B‹;SäfCJwnFé:ÖDw87¬3ô3ä2ßX"éLÂcQlMC޼FJÐ#ˆ+¤lîõ¢~>é˜Ì”g†V]bâ|"ä(ņâèaëžQ€. ¡ü€* `tÀª}…ƒP„ºpc:³ÉÀ!l¿b$DË™–â4ÂfòŽe¢†Q¬*Vã&9­ì(` 0l‚3ÆÃNöPžgúsl}à"Àf„cƒÊP‚ ˜£9§!”Ck®œ"8?õšI"þ¸fÈØAø2ÀÀë6Cx7W:êîàËÑ ô qí„(¥Í0àáØA䤲@&rSPI®ƒ¤±hâ+£,"c >"õÃ( P*¦tŠA§¢p)b.–Ĩ°2A`8(ÁÎ-¼q‹uÅ•ŸÍ$ñJN£Dw‹PŽD2’#b/â"BŠ@'èAÐ!›cËž bâ Ob5–ÓCP=¢>= "dõ¼g5€Pƒ.5Ž vêf1¦H#ˆ| áðaän—ÄP,Ïe†Ž(fdCFéWÊqÁÌh|åÀ€ØÄäÔDCRJ× v‡Hp"'f´àØQ÷k%óbýl!Ö dÈ–À,÷àXÁélä+Ff4%)4üÈ"=ö¸šä8.€,ìbLÄŽ?ƒ¶.Âê¯B&}÷«2”¸:…&'að3NÄ®ÄÿDšàå–,n«eü)F(¤ÖÉ£¾Õ#::dB@pH"ì1ã_røüȇ EïfMÊ@´æÏ_)ˆB¢Œ=#lKú·†’I¥$”áô0eë.ÂÄy¡ú¢Ã[À !ÄÂvçH4ç"ÈI$ ¦\¼c^‘÷y"¸"ubYD²]ê¸tÂðäÄ6-C¼n Ž^ÌSPÈYcJ?äBþIFk¶!GÞJÆt¸bäïо €z)ÀŒä?…„ü[©RDMs ª‰î6À /Z64Ê ©P^iêÙ$d„ØRB3¦E%¤¹îõ‡ç,1ÄûIÂðŽùË~DBq”)6maÆ@VX:À¡ø!ÈjÆö¡íjc”L¥Î)/ô"K†þšÒ"æN7D1‡j5j1ÆÖÐkT²ŠPÒâr'j†' !†Ó¾d^2âÎ fÓæ…‹ix.eZ¦ÓCœ-âP1B¨ë$Ä×–àâgßfäœCãPFiy+„h—Þ .  t€Øq”ìaþqk)œf=KI7éëX&9ƒà;Ã(jz2ÂÂp"$7En0+žAÌfÀlçí4ƒ#YÄ$—áK¦'BÔvò|†¼¼yñ@¢j=§n#xKô×0RR‘ Ì€&ÓJ¶ŠšÁé˜RJ#°4îK¡CÁü‡B=&V"ïL©¦H·M|.~?Ķ3d¨‡Å¾›ÊÜ ÆÉ@vâ„K@(#¢¼N cucˆšÂÒCÂ’ct˜ ä°[¬ Lû8‚Œãœ|~Ø>&·B¯ÞÙ%ºS)L׉²q§¼LU¯V#€ &qƒ3QªP…à=¢öCf`“B”wn°¤H?Ód˜‘죓cìd’XÐôå”:wÃ6Ç$X#pdƒ.œ®*CcNv“dïÉ6v¦8ï@gn'±œ  ¯kÀá¢_=µmo%HcT(]„Ê(~@ à¦8—áì¡à z»€@`áè WXÌ›#¯-i²% Ebä”âqƒaâ€@a  €X "o—»ñî€À`€ CÀÏ·ìlÿ¾ÀQà#ñù?ß 0ÄÀ€ üþÃßçÐøŽ‚$àPü‹¾ŸoÇ£ù÷7@@P œÿLeà9hü,ú ÿ›JÀ €8 óÒ€Op[ø ~€^`³âÁ<ÄÀ gëðw}L¤³À+ô ›¾hRØ%ðýÎßÀXú€q•gÌòÉ&}€P`(ù€Ÿ4À>t¾À`ɳöOeÊ¥€°,¢¾÷zUßI_@p4}ð n3ÐÕÿÁ& ‡Õíã9}\÷À ƒÁ@W¤‘îû}[;`P+î‹69§óš~úö· áJbl¤©à0 §ž§ñì{3¨êªÏªnë`z?˜ # Š&x*G°•Ÿ¨ºÊ–Ÿj‚V}©à øzgÌ{¦²—æ±àŸG€’›§ˆnžgÈ~ŸG¸8p‹Z¤‰¨}ÇêÌçø¦'ô¦×$ @¿ék‡¨I° ÀŸ‡òËk|º~HÍô»¿@ž³,4œ€GèÄ?Oùú²³gáô’®é±è|€‡¡ú|Ñ jÊ!Í"¥ÏúµG% h ¶`hñP ƒbèxŒ™îx­àQøËàjËG:ÀGS©ÚˆËˆyüž´çÊJ¥èŒ}IÖ»¶‡+çò†¥ kf}‰ìº”ÉçˆzÒ5ÈX'ñê)ð"©€C®y€¼.|«íJË Î¨pεŒ[œ¡ž‡²Þ|2 $¦Ï rº §™ØÐWm«¤€ €"çà òuŸÇ™ä-йøyË÷#Û—Og«6cìp=Ñz6FÇ¢¦¾-lØŸ°`,^Vx$àx é™ï;ÒG ϽÒ|ɺÀÙ€i)ö·°#l«M©ú*º|~gʪ¯Ÿ j„UÇ¡â}ï²ãg;¬e Ž~%§è g3÷Ë·9uŠŸÀzÅÙÿ­,Iø©Ùìù<çñù5+µ1øéÊÞ‡ØÎ’Ùè}0îÚ,Ô|n³3ÇÇà{&Üqêl©»î¬9Ë(‚h¨t HŸG©´wH€ @8úÿ@€0xH„B@@ÿ…Â@H0 Ÿ 0˜øö~½nðhøl5 EÁwx Vÿ}ºßo—ãýîõ|¾^O—ð GßO§ð)ìðfŒðÀ$ >‚ WÛùîù€é0@€€ïÇóñû´BèÏÇÛìtÀà00$ý|Ûß`7ý n|Ýíзݤ‚À`×Ãêvý~Ò@@eù°±0>5õÄÀ›Kû]±€àKÕØ`}‚¤`¬ÛÝþø|?Ÿ¶‹@ƒEbñþ¤ ?Á1‡³ì÷>ô¯°0"?‘>Þ—GÇúþ?rÖìý½_ã×ð/úç7¢¤Ÿçàáà@|€À*Ø~kø‡À0"`zÒ€‡ ž 3HºÄÍ¢ ì-§ØꀬÉòŠŸ0  QþL>üox €®2­ì " T~· c¬´? úº[ ¥@`úÇñêx€‡Ùç ‡ÈLÇÀ)‡ñÿ­ìÚØÑ‚ÒŸGæŸGYèM±Dh±'qðüµ)0 ×Eê øDÒ„r|+²hèñš,ü€ÇÑø¢-Ê<$ÂNmT³Ä€Ý73(…D¶ õ‚½€±þ”/( W(5žì%(r ¢¡Š0z­³äªžÁìËŒŒO˜³11ð·žÔ(Þ h 8&‚ˆD ‹úxB•0 [° ‹È4’&À±MJаµk±æ`yöèqßa.€l Ψ@„/X:± ì”§Áò{Ÿ¬yô¾Ç˜   ÐQö{¿G³îHYêˆhEP¿·€r졳>x Îkž»ú GÛ@;¢ˆØÈ!è¨m½F] `:¸ž¼gÃì­ þnh˜ | IâzLgáîÍ¢­ˆ:ÐêZüB,éúyž‡ùäÏ¢Aö}Ç¡úÎx(~;ùò{lE¹I@QU"Ÿ9¶ùò}ÁGÌ”) Aäyç™ã±÷ÀۂʺÄÇêÏI9hßl€Ø9§âÔк'õˆ.ñ÷^è¸}Ÿ RÂ}úþ ¼šÌg±ÿ@äFüÉþ¢À.ŸÀâÁê¯âh‰Ùt.¦7>šÉêCÐ}–h±!#Ñ €#Ξˆy í 'ST£ˆi ƒ*<Œ‘7òFÀA , '™ õcÀÀd Á˜1ÀXy€V¶Gy€|ãÈ»³øR\:"à }A–Š˜> < p*ð–ÍÀ‚6ƒÛ˜ý1¥µ –†^‘“ ÃHЀ° >»à[èlŠ€3*åÒ™H”ЏŒˆ )RG4û5²ÊiÏó¯v‚²þ>›pY´€0@‡ªA8&Í3»ñî? «!8圳%U²¾Ì-€%-€”(Ï] úmÑd€X£pýŽ#ío¡7òð ±Mȹ„P?Ôr(@e¸¢WJ9g,OvGI$$¶H°ú-|£Ð o“z(bà“‚[LÃ[ …Š f:«#ð“ÖÌ+«.Ç„“E)Bn1Ú!ã:sO$`5 éÁžŠ„É¥Ñþ€óÍ"8üÜÀ0ù–£ø|¢˜X ÂetÞ² 2‡ˆ£lt ž:Exß XÄ…ZÒ@¦6OŸ•¶q£ó" ¹WÈÄ`+p'Ç· —‰?JtBp±><òôÂBpEJ)xÓ ŒBŠ‘r-'M7–’ ãȸó5Éx»“ÂŽƒ Æ(Í%BgÀ?—ˆØ "AHภA›€DqŸ®cŠ£ˆ3[?!÷HßšÚÝÒ\쀾EÜß¹F›p_J”æ©Aö ó ÒòƒÀk DQÞC‡‰‘°|fEY¼.ët.Dv•ù‰¥ØÂ€ÞA £[6ð =°íCðx@ÑBG®éš²&=š0öcT|€<À@(Ãé›[¬ TW&%p,‡‘ÑfÔIü™‚0A õ>ÈXК“ NÀ,ÏEDà{‘þOª‹G„ʵp‹Øö)gÍ£”Z>G‚Oe–,€€=``ú$à–&±àŸtB…žHû@DäR Ü Ñˆ¡·@£‘²b¿3¼ô¡² øÙx¬‰‘"ø,r’˜ž' |;C« GЩ ~ñô?Ç™Æo÷ zÑÄ!›À] 9¼sŽáà9Gxa 6ÒZB¢À0ãF1t„¨èFCHŒ!!rœƒóœ‰Vœà)s *1bèöôÀj `/Š ç¡Ú‘M\qoÐèš×—ŠbØø`Hx p v@ˆÀd ÿ-ϘþI‰ñ™Øgf•Ã9ÓtºÓÀ0¼èfd6=ORM:DYúBØëÌí!µbbÑWr‹Fô(¶pBu@Ÿ€4ÌBÀ€Xsàu‘AÖAªzɹÜ2( Y3åýEº>áZ(鄞’e@ðT‹Ö¯±#qfvB…޲’@ªAl¥%ü¯JN`  3ò£Iì «Œâµc’€ÎƒrTN½R¾+ØQ–ø5ˆ"똑¼p€êÆÝ’HA‘ üGåYÚ9rxÏ[±ÍeæÎ ìDÌÈ5ø~< dÈÔÆ5l½"¸¹ICÄ{23,¶.r8çY K¤,?‡¡„c 9 ˜¶£üdŒ±Ö4FHë÷D §Ç†Î‹s#±{ÅŠ^ p10r —´nˆÎi]0„˜ó¤Pz@¦<ä\¢ƒ ?¢ hÑnŒ´SðZ‘tÕ'5lã,ð€;€âÐùOwX¦;°<Ëu¨Tˆ$᪞#èÄ(#²n e@ `S`4€¸@& ``¹  Lé´9>Y+/gò"#ðJ3§vD6Påô-ŽíÂFd#06p@$ÆDßÃö½„B»£ ¥Ã6R\Ç~caÖgaèzâBÎ ûãð˜bDN«JpìÚE l‚zø(ºmÃ\çºÆ.Å£"W&æ&àf lZW«šFïðLÆ¥¶f懂cŽãŽ5F(:Â’Ì$B-bîMé äx#*Scð(Çé¢0AAøáE6à‡èG&BMÁñ¢p5ÆÒ#ä"BgÊýÁø(cÄÉcD8bLÂÖp$,<¯èIœ:œɄ[$G¢ŠN"ŒMrQÂz!ÏÈàæv ´~„¤,C àë©´bPDÊÚzÂzG'æ!è'æ#nxÁîr,ôt¤6,c27Âĵ¢p„2,ãàB&ü¡à!ĉÈ"€M­ØK`„„"% h:Õ2 ¢!G~ÐEÌÄÖ( ± LaÜtK&`laä ^C!Ö3ãTc€—ˆ CRâáì€0¾@Ìʸ(¥ü§h=zyüà‘þr‚ÍäÜ1¢LzC:Å#t¨Zð:#¬I¢˜Jj‚yŲ0#ÔMÄEN!fàûî3å½.Aƒ†1¥—C¢ÊçBbćhÉ´¨müÅ"ò3"šÅ B‡ó+c~0gºMºF >çœ?c\iD,¥G +åøê)AðKdÐ æ.#6RE$3kx?bîçI@N¢Ì¸É–Ǩ3 ö,¥@ÎÄ—C0dT¤#ž cRcDC­ÄKÁ‚”“›F$ŸÅü-Cfd&f| E-;/@c¦ò¥B:Â4æÉ$'Œ)8¢\/´6Ã>¥Ã’¨BèêÉB…'6ôÆà:¤UDV-å² M Ü¡Äárö!È¡ÖÇ4s§º>¢’¯ñ¶ŽÂMÂ0Ðã™Lb"ÃÎB£ >B0{L,éüñLSŒ¾D¬-ÌÎ}",A&~gØ!$oÔæi˜ZÃòH ~„f™¾ÐódûJ†µ§ ~ƒê/“Ög¬b‚CEr Aî/ t` H t 6 N)2S¦@#ìz9°ü?$BcÂìhIÈBãòâîã¥Âb„6R‡6GÔ7ã,ðt-HJf ¨Ñð K#ž!f&'Šǰ¨íBìc>ƒxi.†|"[¤.èLXfFzƒ¸+0C:*’/@$4í Fà@CìÂÒÄ@L!ÞªhÀ2ÏH @.3 oDCdn¯cXág¨ºÆüItÁ‰nélpà/Ê—% t{ªèB‹©dËHš!ÄZfSfPÜB½Að°ŒÄ.p¸RLŒLâØQ…'6)”ÞßBpcR:(§œvâ' ÁôU^kgTŸfH,5dùƒ„-Ä¡Ê@AöôŽ`äZnP´AÊg² 3­Ñ ”2{!©$Õ眕Íh@_€#DÁè¡ÔÀ lÀ^@p’&Ë\ØåD¡°‚‘™,Òú¤AüO¦Aä€.L@áÐ\nÄ,5扌&,çÛªV¡CÜ;-Æ„™‚Ø/#ÐÈÇ4ƒ,º¢vG¤ê."Ü|êA£RA¢’-LÌgµZBÂ*4âŒJà‹d†‰x}” Å©´hþä£öŽ­â¸bÐ^à$ŸÄ8j†ïB‚üÉÇÄwà OKï„"‚3,´nH¶B%\à –Kbø„¤"\9""à$Q»XpýAç"‰˜(Àkæ«ï¦/,ˆ.‚Þ×ò΢,ÌâsÃ_h$o2i@‹JÖŒR“ƒT@ΠÑ1tI›0¯ž/#DÐ6b)6 FF'+HDh?B8,å" ã3Ä[ñ©væ$~œɖîgè1£ü‹oV6q!´N¡ÚáºÁ¾}´D’BÄA¤äRÓ'XŒÐâ–!d°Äƒè$nšÊ¢({6#)¤ŒLR.â`°F‹b£S«×‰âŸ¥)r,ÌB$ÛƒÔâÍb /`-!Þ?†ø1«ªRC¬¥mâ´†Ô’áþé Â0ýĦ  4Àª`"``À2O†QÆò»cø'„Z868 ¹âÜŒ@#jhkd51Èæ¥u9^—nà’¼nS \ÈÇÒQÆžã†"…– ¨2Ã\-+€9â ƒÎ3b AáØpåvœ… 9çŒáôð­.e²X²P0âú+‚ÀŒGR颻:Fbô Âý%þ¾pµ‹€‡Ëæ&|Cž"eP}){¢{Ηƒ„Z À4.23bßÔ)Wš`²tnch0‘XG)è• ­ µÖ¡ä¾èÎ$ ¤„‚:Ä”r«¬ÆÒºÐj½Aã]4¢ÐÛ¨Ü rLçΚÌ+€rBÞß,$hÄg¤s p chAæD8I!H"’,ϰD!êÇG.€)(|²ì#£6Áï5ðø6âÌcÄ$c³s„©ºœêŒƒ‡ÃŽ´‚t!þ³AiÅ c–ƒ‡ƒ R‹­ÄGÈ#¶ªm"bK¡êÞò*ÀXÀh¡ä (ÞËC„-ƒ€ìçIjH>ÂÞú"và6¡ª¬€@%/w?3…(™„Ÿ'F¶3Zï⼬·C¤TE5W<$×NG(²A ÜFs6¤8ãŽ0¢¬ò–OzšoÈ,îÎ[dnRDE#T2Ã,'b4b¢MLáwÞ@Ø! ŒÁêJ¢˜I šCbÂ;¬Ï¼ÈÈ@%¼ÎDeÐî;ÆýÌeKˆÍ‚&@l©íþVAþdÛ¬ÎB2tGñ¬R^5ÆŒ½KÊg©BAŒFB#ü_k€ÌÅ$-¤B|äN§€éÂŒ¥yå´ãEYÎ’@YEPý:’A–¬-@Uαá'IY/b׆FTwXAî2¬£'Æuj%~R.¬¥ ç @$(4À7áÜ8@áèa¤¡<¡Ù¡Ø§ŒH)"Æ~£1)ÿZC°d$Džˆ,8E²3É–4D¤˜äPÕ£GGÞxòt!3`¤63çh.è@UDëÂ4#fÈÂô?C²D'(©$}ÆÔ=-¾'{^'¬A®þS£žKd~Èà2¡ö&`G!€\` Àb à(ŽS!üå³&CY¤.‰´‚ìXºú‹#òÍ&,£VgfÈíE„.Ó¢J ¾iÈa K˜ÆçÒ3ñzƒDF–u¾GÒÈ$¾rBÌ@Å~pö ~xŒAía UÙÃ|/CùÊqÒA lô–´ŒÌKiB«ÌŒ$rC²¯@Bú„&g¨ )”2?†HTQB›B‚EVbæžÒ1–Cê3$~âˆPäªMäg:H×Ö©xJªõB¯’3š6Gœ[h´ƒRZ®9­® ""Ç&åDÿH0v¨N¯Hì‚‚j®DÃxuäncŒ<` fð~„:8âFèµøïI\æfˆ),#c$ŽÄ§¢ 4DcÌi{ãb™ ^ÇC„Qƒ g>¾)"þ)#…¨žÓ†V/oV '“ùü€à!øWè }¿Á°3è}‚`° úü>_ 0ð¾žïù|ÊdWëî"ü}?À€Á Wóè ú~‚d°ñóá—¨úø€ŸÏÚà œY€ [ (, I_o¹Cì ‚Ÿàçðæý>@g´Áêùâ`ËÀe€Þ¯Ðì_ù#õúR€€7ø ò~¾€OÀ ‘¾ÔÝÿÊ_s€|¬€Ûn¯›«ëEd_ï·Ð”ùŸ€8+E.çPÚ«ƒƒ(`ð%ìý¾¿“*V<Á@ó'½µå—£2¯‡Ëñðý{JޝG  GðÈ€À‰èv’‰æJG¸uGhœ¤¨B†Ó)ÃúŸÉþǫ舂&‡ð~¶Ë ÐÅJú COk0Õ¬‘"v…'‘þ¥¬ ëV~³ðÒÄ1í¾» Z%€P3ž&IÀ+žÀüÀ41h¶l¸ƒªI$„~K°H z/gqøƒ ¢ÈR Ààà(2¹šØ¹9§È/z{TÁ¤çÓÆ„²àÞˆ,@X HSÈ‚r“Ñℳ§êöuŸÂô{@˜¼¡ëй ,Š:‚ɀ깟lÃ÷ "* |äÆ@\É'€ª wŸ«ô£  ¡(@;œ–GÉì}̸ÖGùæyŸÇ³Bà;ÀÀKÊøÉ!îIêˆÔ€ .3ÀJ.|ŸçÚ|ŸGÁôŸ®­­Ú! B~ÌÇð†¦ÈE*ª%ˆ:rƒ$‡œÞzžçä anJœÜ€ÊÀŽÄÑÃm¢2¥ª¶KÓvF,“0§<È"H‚¢( +î^T…€`憻‡ÐŸ€hæ%Çõ€y`èyÑ'±î ~B !'‚šyÀ Aþ¤¤j’â¿€50z»ÚŽª_øü €9¼º¦âˆ ì-@!î? !ø­§÷–n«šU. Ä–@ÇÑß1`‡±Îw§ Ü„@8 Ÿý6žŸœî"€8úÿB@0p.?ÀЇÌ2`H  ?€@ðýðúz»À‘àÄj3Œ@@¨ ûvÅ_÷Ûéð÷~=À;ùú>ŸÀ0CáìÏ :šÁgÛà$vAÀÊ0ÿ~¾À'ãíò>ÀÀPõûE=Wûø»‚@góà”?¯p ýb/à K _ñ°Kä ~¿°€ä ód}€žÀGøýéà`Â"ò¾¢ðbÿ~R€ €ŠÅȬoÐ07~>, “ä »÷ãñì°½ô½ 6þì{>_6WÓómk ]«íøÚ€ ¯x9üüy€)Àþ4€@( Àug©â}žÈ‘ø~¾) ª’Zçô<Í0)+”}"§ûlþ4‰ <}¸  î«B)@0à@}@Çâ4ì¸~'ز­¯[B}GÇä}1ªX Û`"ÚŸÇØ~°liîŸä2}­§ùî}¬@€[j} $‘ER;µIgüU Gà ±0IÊR™gYFkŸÀ[ªz· éú“Ÿ€#îÉIáú}?‘Tê± I”%!éÜüŸ5 ±Än8ã¹ó?m£.®§òÚÄkð~€'ó$ç¸ï1ø‘3(#ú˜°êTº†¤(Õ>÷³0 Ø@À( »€à2ÆÏÛA`*~ @áh ÇpU}ÜÓ(Š€@k9DSµž{€:*û’ v±{Ìâ€Tꄵ˜…È šÛ'ÁÚç‚ê€1ÛÓTÃìhÞ!°“BàÀ8#žGùìzžÌð€G«Ö!`x†Àuüz͇žSàNg2€í’Ä´€Gͪ}©8ä Z€{ùeÅ$:Á¨ªâ@hàjÃTŸg™ôãomc•XZ’\¿5/q€øŠ:øOÇÍ…TÂGË®ëkÀ!ð v}{ ½ n’Ÿ³°Ý-È4ˆ†°­`+çðž‡j{•oiÞ³€« $€@B=žÛÙïh Mª"„-³Yû$ŸW µ 2g;îu3€Vg+.SrlpñîG}\zçÌé<±Ó±èΞgéîÈ@aô Ç’zêè²hÿ=:¿ñð>Gèö Îä€p æ  #¼w³ãÄ=G`íƒv€@0o cÕjñê?‡@ödhh„„4†ˆ! <çð}Aúˆ:8ÅŒ¦çÊØø@LÑê>G¨ë,ƒ h Iˆ (£Qä>¡¸,1#4D€J3äãÈh±Ð5žˆö€\t0&Öó3'är†bŸÐ4 ΃îyP7¦ð‚…¾¥M û6†È.£êè,€¨ZEÞÑ–HèœÎ·¶ zPû‡Üñ'ã: )s0@ ˜Ð"¬Í¢¬HéURÒæ>Î!s\æý޵Aþ< ò:ªõa²Ø i'A† µ¢5·Ê,Šd“ˆö‡ä$$LµæºZÚX 39‘²z]K2te"|9ú|cá›ò$™Pñ3%Î"[à?ê|Ó´Fh\Ãp( ,ÐÓ°ö(äy±Õ±LÈø,Cè±5B޹̘ £ì+ô=‰Õ\‰pÞ,‘ð=#°ô7`)ß´ @€(ö1‘ã€3€Q’j Ù°1Ñü5VP\ŒaÞ-XûNX~¡ïŸùˆ—TäZfˆ±ªÚ?‡±f¦d£Ø^ y $€ÑL‘BCÞ ±êøÍ9…cåà…½¦@˜c JÝ ®¡æ®Ç`ýÄL½Bn¬ÍèÿšÆì.¦ÖNIb­Zï&ôŠi$‹ž]Dþà6àøÀP÷£å æ4Qм€;%Ù,®«A b—KEˆÛü; ü#"qè½”FöyOˆ\Ät2XþŸˆ1ãGë”øbÒ dieÍzʘ "‹$ XH Ÿ%I u#dðQ a’Hìù¤AîÔRrí8㦄ªmS©ñ@É€Õ4ZÈíˆMèÁ%HzIŽ2—R纛ãÒ‰sB @Ô–lL$)Æ í4²FŽz» %aIbúƒÓºM‰¸¿Ú>|E¢pR$ ˆ  Àâ€1â?S!¤'VÍZXÈZˆµßUŸÈX©³à @,ûB€ªG¼ãÜuð Á3`СèSî(Éh²Ò‡üä‹I„׿3ÀðëYˆp(9@ðIÑŽÒJЊ¬¡À$óMgÒn%I¥È†4£ bŒnK§@Ȩµ2´.Š‹An4Š‘ ®sv 9!'…&¿D'qAÝê<°!J™”˜?©Ép´Ä"ÇTò*Y4©•LZN:V {­[¶p ¦o%x¢ ›‘Ù§Añ,”TïŒcKcÈþGÚHˆ„Zå«Qe:³Ÿ‹ \‘EݽENØ,=$ó9$¸=ž¢™ö¤˜p…P‡Gš0ܸ‡0ÎQ&¥üXäëžÈô'£ÌЀà¼4&3Ox‘àÀ̧†ÊÑàbÁ·æ FêÀ@ š·@³â¬@*e’I,!$=1 *©|£ÈrQ¡ø7G€©ƒØRaðÚHz‡™P.BD‹8,RtÄ%CZRén<ȬږƦKJž+‘jTüûQŒñÄA¯<²?º‰¸ÖËajÐ  ð˜Žðþÿ$%{¼.I#LaÔW$à0¡«4#â@Ïø@. Aü¢ø‚ÖÀ €aö$ºí:=e¨Jâð!¢Ä3„XsÇ´hTEŠ3ªJ_¥ÔYE”8­x=#lD®¡Ö Ó/°)pw+*~CBÌøÀVc0É…M\U%R"e`ÒîœÃŽJã 4ÌSM2áâÀGÒ1Hj@ŠàãÖ,"ÀCÆv@(7*Ü\€(: (‹è¤Kpˆ£h$Bª;$ GÃ"YHÑcL¬ò–Áú7*¿Ðt$@k£HTÀ¢¸$d8g¢Ì;¤¢ÊðÀâe„’¹Â’\ƒ1%>Bf:,<@!ôº’Lˆ;¥€$Ì6ˆ´0ÈàÀSáØïÜ1LvN”1PÆK,* †A%L/‡= $:ޤ67F  RCôSêHXD @'0­câ!(Z®ð)r<Âä;üH¤ºqÉR]K*'‚ÄуŽ(Ȱ>ðp>x$"!ö‹ÎÁæ`,ÿ`¥.-ƒ!Ê„è` INÕíZCR&!$þ6ÅNðà׀Šø¥ìh:ÀhÀP`lÁä€Z$®˜XDjON*`h1^ÈÄŠ2¡ê`>¡´!þ`$AÆÀ¡îX¥ž,ƒ ê`0E”Tj'ŠàÈ|MÅfL¥’¤ƒ«¤ò-‚JBº d)HC¤~”âJ>$,dŠPãÒlÅú<®L"CjD,$ÊSâÈáB­¡øHôF¢¾åjä4ƒº¯ÆXl0Cä<õ§|ZènA«ˆYÈnGÑêHòºWŒOì2ñ¢zB ÐÈ Ä,€E®Ï^1Ü'€ƒÒÀAØ!aâ§R¬4¯”ÿcrg§ø, &\CU$c¥Ó1¬ŒùC8XE ,"2Æ;£p=þ)J¨/Ž€ 'bŽV#HÉ‚ÀZ‚˜~,Ȱª£8W¤òE.3n£Ln‚@×C¬Yí¼(äºKBJOø4ÃJ-´>-PYàîa®A,!äaÒAc>4ˆ\ÏiTÄ€>3bI"pãXчülíňCÅ~8¤8!¨!¨j®EÆ‘¨UâæXIp°­üÉÖ`2e€  à<bÀ  ,à(e€*¬Ê7ëÿ‰¬ ZÇC d½;îZ­ÃÒƒ}¢—8$(·zßI»:ß$Ú…£ª9Ê|{‚ªrà?BYäŠ.¤Øï–"˜BFV*oƒhc‘¸¸‡rÊ4£ŠHÖp Åžá@ ’ÁîLbœ7Ë wÀ N†3…Ôà± A¡üéƒ$KÃ8F@Ã|Q]"°Ì AëƒÂÎGaö?â”çè „¸sÂY8UbN"£‰n˜¢J/j‡è)ÇÒâÃâBU `c7l-En¢@ % ðWcž.£ŒOÂÖ³/†‰ tDzëÌwVÃGÃhä:o`d $?«œå¢J¼(<à Fª4DcD4¡ðAêG/=3R†äº8ÐDF(°p1Ç L(ãlÉHn'ff ÄJgÄ'Ä<§þ ƒ>P æa§@BÅŒECf-Ãz!ì!æáÊ€6Àgðy "t¯F"Ò%k6®$¨pde¤!¨|nIÄ©„¸ˆáæ­Œ@dH€jAæ€`"z δ(O)dPBCZõ0àFἆP:AÈþì/I)#ú,®ˆ±VrÁ+ð:]$|,6@'nŒ¬$ä0¥R7N …ª\‘Ú,ðˆBx dŠK‡o³gF(5&GéÚ¬†É#j=‚I-¼ $õsMl!¤® DD[VYäØK0Š2ä$4cC!ú.à }Nðå¤BMDA#Tth'<@ÓF·îª gy-¯•CÄ×[†è  «dèR’h?€ ˆ†Q;!ätd®Tt,s0†ê1¢ä`cCŽ„<ÏÂKDj;£’9È  rå¨É"اʮçB6cf–#Ì2$ÖDbs¾Kå°\…>Æ*Hw)Mƒ2‘ºw¥‘^Ñ>‹hÁad€¡’!ÌAÚDÐ2¼qe’TÓb”êCÒd’C‹tÊ; 6Êî1Ãv:¤ü[ä~ãÇ‹tÂŒ"8R¹.,ãÙs£,«6KH|€4€@à 2à<¶ $´x>ĸ¹å(!¤HæáêR6s¼ÌTcà xe¿Œêçáî2¢À/úôI‘H€çå¨ù#t|ˆ§°.zoëìjÃ;$¼3B¾PK¸ˆ_‚ €p³ÀÓ!ÖHŒH Bé Ä•b(jÉìGÁèbH'ŧu¥Y3ªBk½3bG¨Š±'üDêD`Ñ_n03®-œ€&GÂ<.bÁÙÌC†Mdp=Ë_+¢æâ þ>#Ø'bî5C.ˆËL<@Ìc¦«=BÚÏr£=éìs²=ƒžubÓWAü1¢Ö,"He.#e‡<~Dʤ ¶³¡æ8ÃG—˜sÆÔìn4ùŠNh0Bvãƒî3¤HT¥ŸY)ÍšD" œÞcúB•ÖYã9ê(à‚L°†l#ŠY'x`dp®Â$\£qÌ£Bª,¢ê¬vZ4t†E5<¤ú=ÅÔ2ÎÀ g@-…Àö–“kM^BV»jíX®MY± ‡Éª+`-@$"€aÜ m’ jÀI `btf(7(p$ãb'ã@8ÄÑwöàL!¬ Á@"ÿbÕFZ€-ä´ñÑäKCˆ@ ÖsÒÐ0Ë_ˆ(Š-#ˆJáøibÆY"–ÖÉÐ!bx|g–TÔ4Â:¡WÊȉLN…zfð#h§M¸7à/CÊ F}"cææ Ä<õ$pT ,ƒàÂÅ@CÜR¢F8À$NAèZ¡î)B:3'rlépKña\Ë·:©pûÂØŒ0¤¼„ÞKƒû®/gÂ$Z¦:fÀ I¬'eú6“ncM¦m¼)$jKB$Jˆa_œl¬„T)evw'Ò‹CC ¤z±$«H±.Ìpäc@$®pä¾5‹äs.7µ&U˜SD®Ö’jª"xde®˜b€Ë 8èä¸NBš ºo"æa‚Ø[ Ÿ4$—· aòÀáÌÁˆaTøêª,EÊTk`¨ µä³-Î…Î>'qÑî0D.!¥R\#,Iö‡b Ê"J>‚Æ6¢&/¢Ž´@‹þŒÀJ Š€à*€  '>cä”$É&r”I1=¡ÿHõ¨Œ`}8 †i›ˆx‚îëÛhÐ/Tª+}ìËv Có¤AÊ—x 0ƒe‚ê<%`é—Š”úðK&`B*}âxX@,Bï¦!ÑÓ<3£"D ,B ü0ìBgBîî¶ã:SWÒGç0*¦"¤ta¥f™=#î˜d±cÇ0æ" —ˆ`yÎ&EjIc$@9D!£bæ@Ñ SIßÄÊA+ƒer‚#µ¥ú4âx"k*Ç* 3"ÝSmôe§z0†¹/¤”‘QØ=d$RЍy¢æ4Ë6­îM„»Ñ£‹µ‚ 1²»cxYç,?@ £@*oaØ"0ÃHŒä…R ô®ãB#£k~¤Øø‰’©ij?CÍâYC$,VBF2F†H\"¯¬¥wv6Ãóï¸=.óDü³RAÜ¡êÕ ‡´)…ÕC£áÎÂ*Ö­^®[®HY±^ !^´ UF¦â‡Ã$‚L‰Ü‚` n€J%`lgÁÌTƒFU+‚r˨"Ìtb Z2ÀFšâ&¹à¤Hy¢';#X-E®,¢¸äKW¬–|›Œ0,JI\&ö—€ ð@¿€`úÿ†¿ßÏÐ ð~¿aoÀ€€@ @ ¾^ÃÌ }?b/§üÎ`ÁàÙ³ùòú¾Þï öÀ $Aù0?@oçøf÷>€@€(°~?À Ø ú}‚_Og•-ê¬qðHŸ y½ao`"©ÏOš,b†¡€À@'ý`{8ýò ü8–¿ÀpèæDyÊž€'¸§Hà[ûìŠ[ê `&+!Š=ßo‡Ãõô ¬‚À ·ûî ý|¼_ïǨð‡Q!`xø þÈh40¸]&°B/òÐMý{^wè4€ï§sáôò™ *Ä`¡öhi̇R6±ˆùþ{ŸŠ }‚fø ÇqÀY‡Abi`1èwž'àMb–å€n².Ê(­ÆÀ–@KÁü¡áù"‰ ¨ÇØÀ ˜ˆ¦ ²- Aüº¨ª”gÙþ³8  gñê §¨!pJÀ‚À`PÅ€˜ (gñð²‡Ò^§žgÔf{€ Xàˆ~€1òwª€˜ QYô|jóï¨y‡‘î/@*¼È`  ‡ÀùVKÔ$°j{”žˆñî4àõ)¢@‘þï¥J„*gÈ};GÔrû¯´ Ï´®6k¹eÚ¯U§c+ŒÃ€R1ø–¿‹ÚŠÛYhÁìŒP¬CÊP6£(YÑ`öÝ|¯@EŒªX,yüÉv}E‡È~%4*þJpsB|3µžìíR¾b¢šû9vYò©XÊC|¾MŠ Gä©H€ó‡àxI€Aúz6ÇáôŸmxB€gáî¶€‡²H¡À{4yI‡’* ÊÀ² vµ‡ˆÏ@uL¹XŸjh>†„§èoÝV"HRð ~€à¥Ôxh'  ˆªv04 dÂ|ºséê{§‹ª¢Ì  ž çÙëEží(}ÊÇî†-§ú¬¸48ˆ·v¸¥Fˆj¾Ý[艖2x’I‡™Úw§AÕ Ò „Ö{b,|§qô€€€€ô „@À07ü& …€!oð$ ƒ@Çè&=ßowk¼6Ecq˜}Ö>ß.°+õð ~^¯ÐÙð÷¾ç 'ãô {½"s08ƒÁïÈøŸà7ø >ŸÀKê¸û€ë/àÀ@gàðþ¾@oÊÓö¹j}€ Pô €ŸÏÈ+ú´¶ß÷àø [|_Uh°6¾ßGÝõP¨Wh@P` ‚žïÜø òüz½Ÿ»;° ‚eÀ˜Œ þ£má%m{@zwûùí\ÝÑŸ906^Ü À}×£áúý|€ gÐüÝs:. à<€ÀGž0ê@ €@@of}ž®¨¸2à:…À Aö~¨Oˆ­Œ«…­((€` ½`CõiÊ|§ÌÀcŸÇú ›Ìz7G«.¹2;2€/þ¹Ô {®gâDó»`ä3Ò°'Ð<0‘öÊ®¬P´­ ΀àèÀ  (tà L¬óÓe¨‡º¶~Éô|<ÀÃ29ð'Àp `°¨$G›fÀ`09ž`Î}€€Á3›Àˆ“]-”ið×1ÓÈkt¨>hk¶á¡¨*„‡ñüG[š¬=H]¢¨y" ·Ç¨kÜ6 æ|c ­v}J3 $B¸c`|xÄg¾x‘.À³\_KS˜žN©ñS«Œtt}90~:‡ÙÛžG1ÐC` {l’ƒ½tp·Ÿª±ìŸ§©ðº`Ç©êGÌ¢,1˜K¹ã†ž€8ÜÀ~ŸR<ŽÅaî忞m¸\ˆéþý€€S+2¢GÛ&æóДïëË.7@fx|`)ôŒ$äôg— ¸Ø ) €܇¡â{žÇøZÊ1æ§àzÚAà 6µFká⸞.›?¼¡§ê ‚+'î Ÿ §€ÍÐ H‹üf)ȶ tÞ!„,d-H–$L@€Qm0#ì³+€·‹xí a؉ @4 QÊŠf$8‡gç 4 <&¥d €€;ÏÀXˆd`;G€@Ðàj €Ðñ°¡Úɉ˲‡ÃüÙš6ÈD‘ЩŒd’á–‘è cÈ 8CJ¯Ñš:é´  ŠÈ4æ- 2¼ÌKªUF† ˸¨U*Phêì!² DC!Wjôô´r@Q‚+ˆr¹¶ær Ü€4ºBAþ<À ¼oôz%ìD$q eyÍSx‰©†6ãö£RæâŒyÉf9'…J† È=É;öBÇÑ^])\Ä¡qîrÉr.(¨– âAŒ•h=J³/ ™ä udHˆà b”É•D¥@?—p]Ô“&9¨<2`Ï< }Tü=ǼÉ+G4²=%@¾û(#ÙL”pŽ‹ÃpUÐ ­³‚¶àË‚ #å2ªEŒZšñ„SàÚ‘ò¸RyíD¦$¸愇¡Õ(@|&ðj ùý#ܤñ=€ уÈx¡ê;8÷„ŒtÓ¡â?‡‹Ù<+ Eéj>&,ĪyŽ9¿EDÒs\<‡º—6ë}¢8©2 «=Èdr\é @ NpWÊàHpBÀÐp DQè  5†eXÀÖ³/H££ =À.ãÀµ5”ÀV@a‚§°{–BÀÌ$(‡ 3€(Gš[c,¼bÁ›1bîmÇZÒ–Ò:ð dz£Ã,A#dY"@)¶s@1¤Ç¨+º=‡„„ #Öš6ÛËl.AóÕhóY!ç …Ÿü‰ È`(†€À±¯ú =“|ãB;Ÿ‘®ïL½º·äfP¹E€§ªê´T>ЏØ €0ÙýÇl¸HÔ¸¬§2™cì¦@h7ãÈ~ÃâY”hÍø}$ðQË‘ûK'¼Å:ó* ª6°ä&ZE¤å#¥Ø^—]c“ÃÅ ?Cì .v7±ßFÀe¡‚ $zAðd#t~CÔÿÊqøØ |¬¹#žf…Z"$Ò”F¤Ë¾xýY8BrT'qá@%ˆš¸‚êNï"3/Æ*JiÎþƒ¬{qÎ<€X@@<€1ì{‹8䉅ÂDQâ[†°æ«Ö [p ç¨ ™&ö=Çy&Äàl ÎoKÀw¸vÈX¨ f˜l¯QÿLjÄã¨d”°ö²Fv@<Ët€P¸M*„¡F1W,¸€ÁÇÖB`ªzs+‚Œ|Jém!uVœ#ª*?#³HÏèŠÜp42('› =Qå5T %]¡ÄÒõV¥ŽA ‰Î]‹òáOæs¥SÂeªÝõàÊ”ä ÐZ’0¨¨Ú3Ô@²æ4E™,À ³Ýl†0ÇJ³;’&‚ ¿^–Ǹ$eÀ–ÂbÎA…Ut aõÀ@¥á¶6â¸<‹Ó~` ÞA$²ÛF˸€£€Ò S‡Lcø{«rŸö’ìzï:†˜Âex ¦à]™6SO­I–ç zÔÊãRÅÁo3OÐ3+-¬~޶L=(æ#ìt¹1”;‡àÌÃôuQú:·‚ޤø)":‰¥†Þ1“åVJ6ZÈ, m!‰“MË#ö1ŽÈ¢˜S©/Ú›µ/Qý)40]ÇËK@šVÿ ˜À8#° 2 ` èÞs¦èáIÒ¿åG„üE}¥h,\GCÒ ÃÖ',=P*º%B <Áîtâê×£ŒÖ„z ‚g‚ø#¤p.Â0@«zGÌf&€Wâ´WDröDzãè,GBø=äzDd qèð «ìNâtï´H(Äi´#8É ¬ŽB˜ãâAÔWc,dä-àSÃn.¤²àêî$F¾Vñ€¢B<ì=¢l]çP ²âõ éªä‰ÛhÜ(LØ\%àJ˨”#v ãð´=IV9¡âg†ü® `$9¡ì¦²ÀÇÌ!¦0"8J¢^Å&IÔiÞò6Ãö™&èƒ-åÒ þ_ÃfNãJâ¼ÎŽ¡ÖAÒþAÖAÒƒÎáìLîNâ³ÃI&Ub$RbøRc"ƒŠ®êò2¤ʸ!d0üŽ! §¤ €@@MìÀ4àPäÂàð€5Ï$+Ä®J§J JF©ö$AäèHL¿Ã<£òœ|cÆ£oÞ¼b8@-"E*¯"$9¢º‡T@c€c€ÔöKÂyPìNÂWDþ2¤x;cæ«ì-Œ¢uÏ 2b p‚²þ!òè{eWM$c%RDå‚ê-ƒÔ~"¡ä4¨ä"x-ì$'h9«n. ½À OÔ_L#Hxì«öÄd>+äîWd²L¨L£À :¡ä2©@­Š°§út æZhÀêp(£u$EdäšpÅ\\&hB1ØÔú‡U40Tcã +Dp`£,". D u"¶œáò’!òæè‚â8 ÞáòbÔƒÜæò¿ä«0gUÇ;Ev+bàE6Ñ" (Âö.š˜â‰Y‡òhæî$ J«c§/EÀtœàBãÎ4$pYª~Ä+Aμ!ÈaþÃÞl`ÎÊ!ä– Â"""æj*&Iöx¨l¿à†Â{ìØàxjjà*À&ÆÃcΉ¨(£„²-ƒ-¬$qLà2Á”#à€$`8Īmƒ€!ªô.ª8‰¦€„b6¬ãç7Nçp-EÄWòØS"È`5–2¥NS1¢XÒ¢¥jK.#ÎXÓÄ…v2LRÇV£#*Æúª%Ì/€O #>Š9Ö‚0„‚¡d†ÆQ§âÚgEÃ$6«KB-6m6<&F<-£Ö$dÒØ‚Ã,+ƒb'7È(4BŒF‘  cÄb!¤Èsƒ¶B,]퀗q¸-írÖ m‰NÕÖ`™â`¯´‡!ô`¡øDL@d\2Î=i«Áé=)JVFØ¥de‰nA$.0GûBØ‚#H>Þ>œ£>4Bz³ÒÆ; ;†Âæ„`m—-˜jT8ùâÚ1"ÆIåÈ&Ϫi…dYÂ¥Ä`ù4úW â³Ä'ÃÁÊaŒÁøøl¡Ö¸” !=#í_¦ò/bª¤õ hªä@*Æ|‚²JÆL^` 7*NÔ²œCãÖ@ æ*-J£}®B+¬"ŽB9q@’:@†À€P nx4´>£*•V4¤ÊE7,?áêÑ*æÀ/|B¬³#ˆiÖ=’Ù=#ô5ÂçZ$u,ƒ.¨o<ƒš™ì¨.ãŒ2K¨=cÐAäOÕFZS5:gò“ @Æ¢ ]+ö> oâ! 6óÒÐdnƒ]‡Ä ·‚@p¡Øh¶0BV ñ¡ï ê8 ²/‡RXC’Å =BÒ6’¦'‚ï*Ê;©vâªÑíSÂ*7f2FÒ†r;¥1n59Ⱥ¢ +ƒnWff-‚‚" =?Â@1ƒN<øä1žFbx#¢ä„J ‚BŠ/XøG¤ šð¦vÄ{CWätDâÀM€*æ€OA÷. nêÈ8dG4É<#Ò£„·U>?뺽àç&èû¼&Ãv€EJãæÅ‚ü{jRâ…µ¢ÚEBd+CJA)æRÔd‡äîƒðgê]CæÆ+‚ê;§É21Š˜pÀ®`Ám“ãÒÙ„nƒ+.ÆÆnþ(>*8u  y^l§d«ËîTðíïF¤$A'8}ú†â,BFx£iæ·¤¤JÃ4AùˆÀ<#!†@â"dͬ­.„gÓÓÓê-âÜTÍze.J g:lqhU#ÞëƒÄ9€aö·$´$1°¸³0{+šéä–¦Üs–„iÂ2LXÌÓ¦¢Û@€cN¢Ð§9 ṳ̀I çp ‰Î'ŽD¬k žTc¤çËÄ‚„oåîáÈüYÃ^‰åÌ%Nø@â$ÖÖ¤Ö£QúéÂýkD P`î KæúpÁÜà@d \H‘ù XÑÜs£N”ÒÙQÒŠ  þƒ¯FXaØÒ `0‹¨ „_à@°üý?À` ø¿`O—À @ @$ö ÀCü#7v?€.×ûü’€ßÀ÷Ûø$»bÏ›Øð|L€ò 0ý ŸÀ:4Àûˆp8̈þŸ ‰«ü €oÀ Õöû¿_ @ú€@O§Ãéüù¯‚ÀX÷/·Èîü€ïÀõüƒ€ €€úûÈôL8$ÿyÐÏ{ŽM@oÇæRE”É&ïÛ*,°ïçóÒDü \à­üü¡Çr˜çü  ̤ gø*f “½@ØËô~áü ¦ä/Žë”}€'È }ž­ð|1ì' !ø¥é `Ϩˆ"Œó€ *n~¨!òŸ`@ˆŸ@ ðˆžÉAò}/@4º€.ñ- Л€É0º4NÈÖ€§ùýÇÙúÐlÀÎÈ Ã€'´Š½çü\Eú¢ÊZÀÁÒŒÇá¢x€ÁÀ{ç1îh§ñÌtÇØ¿3­öõHú¾Ž, ¢†§DËJº@(À%j\C22U™ 8Ë'Ùôv²‡”Š´¥‹C@‚&rb>ƒ/廒L8  6ˆ@ P<¦ðáý(*ì!ì|Ç‚T8öXò¡ò€© JÑ€'ÔP+@°¦ÍúB³U0êl|3çéìÊ]Gè á¸.’F5,ÖˆïR£®“ï%GÖÉú|Ÿ‡è’)!î–;ÀØ¢Æ,q%A‹ {ç 1Ljø© ¡÷Ÿ§øvŸ@aÞ¼8,í-%>@PÛ‰”¿;²#b’$'éø·Ÿç¹ò{žvP `Ÿ ñë7ì½²}3G¬P©rB|G”Áú€΀ßH‘³}àð}=™ÁÇcP15ƒÝ@ÐdT?ß·ý†`Øôú?Àà0( ?@@Zëì }ÀàWËö>üÀ”P>ï~²¾@7Ëñþ{€@o÷Ðãi¿pOà8%kÊBßÖ #ò(þ €°%\o€ŸOw»ñòø}Øß`(¥ ÿ>"/ € ÎÙŸ¯×ãöáæ+êÕw@ïðs[X€¯©­ îþÑÎÀ@&nôî½òyŒðù ²€ÁË %ü|²oºÞ¶dz{(¯¨É€çàŸ RР)øÓ¨™ö}ŸÇ¹òˆ€ê8À}Ÿ@aöà0Ÿ`p¢ŸIí ªàæ· L0„À¬°;€PË?±ñò8'°Æ )äŸç«dŸª-Ëñõ#Ÿ L°|«³"îï5í@Ê &àŠÏ¬’sfî¬8ª»î}¸²ü›€s|£'¡‡ì¨,g( )§éÌvçið‡0s›GYÀv¦ÙáEA Pî¡Iú€ˆLžOªà72ˆ °1§Ó|•¼Æ8NZˆ¨‹Š®¬k£- Ó#€ÀUœ|gÝxÖ„`¡ü ‚àJ‚A0D€€ÍPÚ§±òx§ ŒÜÉž 2´œ1Ñ3`qé ·«$~2ÌÓ8€@X9íYÚ§’xû±€ U¤`ðŸi´x€º„€1 ±E0ëœ|ži¹ë/€.4ñ(Ñ †7ê¼Ö§ÀxMò™ÜÖ¿`ÕÈ8)‘§ùÞtiî}g¢rõŸTcÜO`X23þ}lj‡¨Àë ³$‰®àº_sîº{Pµ.`ð1h C쨫*~àÌ êÁ{¸ H€@x‚+fîz°Œ¨Ý¢VvêްʶÞMXd €ÊäC/û‰ó]ðÞJ|H^Cµ8=Œ¾"×'›É”µøàµxcÆý ö&jùBŸ€TkÖG{„§ê¥fŲÊ0ÇkLxYÜÉù± ¬hÈ“!ãè@Ø·(¦¨qú¥‡¸ï8 $v¥ñÖ=‡ø3ÀA޵nÐåP€†‘@•rà e'$ú•­!äP§ ™‚éìz›AØ;@6аhÇX &P™–qúMBB„EEE&œ>ÀÒã°l±ö<€X `L³LÓz‚9„(Â\ŒqqcD@˜!ôUè8 PÖ›ZC‰Æ6à³™Uš`㑪"lô†µ`‘Ób·†TšG„„[‰¬C‹$€ S|XKm'¹c?NÚ´_Nh·¡ðQ B" °‰'±þ=Ô5e¡@€²ÈËqœ’Cä˜pwG™Ý£ý µR†u¢G3*<¢VMÐÉ~.¬®¦¢öšÇÑ耄LÞ&Ã<“¥‹ ?r|ÄY©h$KEù$Û(ý(4¶|pU>ªõVœâpÿŒdx X<†»çhHd¶€DBc€0ý…¡ ÉÒ†D%9ã-S‰iŠÌx'¦8ú–JÒ…YÑÔcŠuí¬ŽðLjúfQF9˜ÃäTLÍLàˆá:@€Ôúa@º>ç| áä>GÞÂÀu!^9‡ ücàxAðæG©Û( ˆÂ PCÎt0NFX¶Yô‡Í*Q2hÄ›“x¤rÕt(œÌhâZÕpO…5³˜ë$AT €œ„JÂ8 6ƒ2?ǹD4iÁ[¡f É2eGä}ÊÈüfåÖbÒj€Và.’¡÷lZ„K“Z=€U.à=!8Âà˜Cþn®ùR¥r¡NÍPè|{BÜלí"-¨—Ô8H¬„.êÜ¿7}¡ñe½é9nBÏÛ `ï\™:Æ™Óp¹î6ÎŒáµ#Ú›#TØQf9ÿ8¦Ú¡!³LF#¬ÇFà€?@›™†Åý¿áàPóv+5X€ûÈwKA’-…ÅàCìZˆS m‰è£€ÂŒeIáÝ®X†'"‹@^:Ö4Ì!¿:ÀÍÀel´yÒ ÇÐ ¶Ãèxáø£Èáû,‰ðû!æòŒªÀ“öÝ€~@.cÈû£,j~Œõ6 ;×  ,$á?è}Y¤ú U ãÅ,¨9 %‚¯Ð~fˆ2úÈÕã¸o±ò:@H€T€üÎxP¹Ì0yÉFØ\à ™iÌúÌÞò!}QB,vбÆÙ&G¸ø^BVwUj…%rl'42^é”oÊ̱„c’ÅT€¦"hïT…ŽæhÆ—Æã+_™x,& ¢ø^£Ô)ÅżÉH0Ü©ÚFäP¢³ÌK7D+y˜|7Óbý(#Šø²ÎÒÌQ‹óô'¹˜âIðEKÇKÒ´þH«£lcm›h[k¿áò‹N )Ì$Â@lžêQv…ŸvàXÄãÆx6¾Ë×k7÷Ž<qè@©µ2-–=¸ØfbïãBÒ“¦«·¡ÁóµÀ 0“#ðyRvfÉgÚìÌÖÖ?‡ÍlS,ਦZÑ€CÝËcày«3ؑݾ!eŒµ«Ú¨d˜Äì(›Vò?ßÁh§à xŽQîG@ñÀx áÜ9 âè;òΆ`!UŒ¬Ì¬âˆV–q÷AÄáYØ]`,§ŠV€YÁú0if2cx5âÞ0è‰çâv‚ÞtéJŠÀ$P@`,`@@À>ª¢ª†ºCèGæ|¬”ƒ&B}€}FD3ÈÐ(klaê¢MiPªŠdçb"j€0pÃZa‰Ú(džæ¤-b®!‚~dBl]Ä.@Cˆï~Mæ¦-à !aÖêÉÂaÀèĺ1ǺW¢Àh¾+¦•ØD ¦Ä|«#œ¨Aè±èhà"çVe.CbÈÞb"&æ«£„Dj/!ò´e„k¥ˆCF>ã¬þñ x ¢nH# Âf#œqDF¢èµ( dȉã4tâ$€¤ÈÌ«"x&Âää!üwƒÂîH E¢Î3…ž5ä8s  Fâˆöƒ*'g‚BƒTëèLVŽÈM¡ö&b_'Ø(Z-Ú5lYCÐ0 ÜAÀô˜¢ÔE"FB"m‚{Ød PÊB´Á¡æÁâÁä@$]`"‚rYÄáÎ6æt5hNUÃ<šâ MlÖ¢8®æí`  Àéò®‡àíšÙ€jæ ^gå,FaäôáÒ(Eê`2CÎm¢z`>a´ü.J€,]d¾L Œaî.¡,Ãvoæ"C$„ ˜3Ï*–p“ŒK¡ð6 0Ö"*ŒNCÄ0eh+¤ú7„*AhµÒÊ+¢æ@-þP£ö©ïð~„d-êv&êf&,#¢Mb@Ãeb&ÆË,%š¦ƒÂ¼bÒ‚ŠN3+FAîï…ôBÄž8J™‰#~#Ø‘i¤U,rxkËÕ1&žÚ­â±†œ"‚œ"0=gfãÄd m¢üé§zWD:&‚à*  ÎaølJ4/`´`‹Ø·gì°. &—ÈboÄP9Nh/Ë_$òø !#Ž~ÐNAÐfç{à¹f7ø=É| QìU§X1áø¢ÂjmŽšÑÂÖ«>!`"µdeBËäšiP1§2BÂ$QBh$âhDÄ£ ñÔà*äQC(‘ãïZ ƒšA¡è!òIpaËÏ(Ú0ºÁÊ+ˆO$²N!"º!Íb ‚&„Æ=@b &«."Hˆ h€V€d!äàTÄáÜÁÀÖAäÁ®aú , 2mÜ1À ‹ Aìà>ÄhÚ (-¤HAoju„(7+-ƒ$U¥\»$bU¤¢gåXJ•¨+£ZXƒ$~ƒPxµM¨ð¯)ÛDr=…h bŠÛ´ŸxgjAÀ Z:FEXª‰ZNŠßâÄÆ n@ô,æá'üŠ#(9èb!"hÒÓì"‚æícÐHãq4hX01h9cìxiÀ5W\_FügEj6 ,# i¨nâ1ÆÖI@¼v€v3¶zÖWàQâî"'j2ÄÈp‰Ý0­ú1­âg)>¦žö¢Èn"Æ0&DÅ.3–b=f:õà;´àê20ïjU”o¨+nžÂÞÚöNåjg@›e.¨Bäj¬Nä % *5¬Ì1g05¡îD!ú™gF+Vbå¥ Þ¨€¡ÜD¤°•#õ£¶•¦œ9¢ÐRä°¦ÆJä*ÞoÊT9‰ !Ø€,!è!¶AêÚA¾aàaÈaèÁöÕ¢ÊÌø(˜V4J_zcx£4øŸ#*1aþílF+fò|¨ðÎ` Ô…¬Ox¦2b„Uø m¶Y“ìQì¾/DÞÎ\À$@v@èÌ@bt=jä¢#)8ð9Æò(ÃTa€µ%'“ê(*÷P5&aÃVDm@x!ìÃy{``"DäÈ"(þ"/¥dà@  áì¢B'Gü;ƒŽ3ÃØk¤(„kˆë
CV9¨ô(c–gLÎEô“âå®0â¶D6YÆYtÅ{„bŠ(‚Ú"¨ê 06kv&îòd~‚ºNhcU푃FYÇx©‰ˆ)–H'÷dï~/`fÂ@ÉŠ7%Ò¦ÔAgö÷Å8êx)&«æ4n’l'j­&ÀK£ÎJ¥haâÙ¡ N?HPC`,áÎÊ0`.§`-%ØtdCb­®Ðµipi˜Z '(åe*!áæYÓ>,7¾{ϤgHê¯d:>bx5D¼µŽ(àí OΑƒ d—ŽÞYÉЄ(ƒ…I‚Ìÿ&(.°Àtäm#¯ú>¢ÞB„á̤¢1æf箩hž,FºdLøF¾Äa¬Áø!àF«v9‚ò&ã@v5¨VwÐÁÞ-!æ.LKuƒ­BâüH÷— …o‚ˆÕAÞ8ü5ÉÈïFöÖ]Ÿ+€8AÚ#Ð €p à& QB±€=Êj,Âwdä5LFxw°WšX(Éš~dü»AúÁÁÂfá¸!à?`:V 7iµ$1`z×f&•3ß×Ê–(9&Ì—Náf1 WM.Ђô{Ôù°D¼(ƒvAæªÀm§Ådã¸D#V­3²ƒÎ0Oh 'ÍZ7!èM`hb"BrÓãÑÝcôy3Nèw£$5ŠGƒ™\¥õIFk¦ãäµ F©#÷F(ÑLCbt WúâŒ:Œ`Q†à#üÓ#È'c(ZIûPÏ`5VM"LCœ$dnÂØƒP¶.0dîɘc¼æVC®€m°nL‘aOÒΧæô8 /†£NHæ[IGÁí†àBâÕßb"8L—L?D0$ú3?À/Útø¦Jßoúcúw([ßOÜðÿ4à˜ôØ—ž?Àh  œÁß’—ûéýx”ÆŸQÇ›ß,ù@øh¼øÏÕŸàx8‚³/`åôyÈ@ó`M“K~[ß`@0¹@z󟙊nçH§Àr0{¤‡À‘©ï˜¤€'Éþy%jhÇ4K‹îÒgëxˆº„̽`ò°4'È ~ Aöž )ò{ÇÒ4–ïÈ< BZ~ 1î{ÅGºl™Îè{&Î ø% BT}*ÊΞQÙè~«CZ«€Ìè`î"Ê Yø€úxC¬Ú}žÇ³{‡3:w¹ºsfáÄ{§9îró¤|v¯)r¨•§Ð20|%mKÊ|³Q£IM m8¸¥o¹‡üD´£ v×:¨ÅÏ%RGL™ú~ˆ@aô€Ðh"((¤)ìr\€ÊsˆûŸ«¹QXÈçÝ( ¡üÌ€, d¡ú|N”äøˆ€àx ฀ i$š(÷1§ÇáâÒ5T¹€Zç‚¢ph|ž§‚4yº CxÀQô}Rçâk2ljˆßG“,ÐôJEm0§˜$ÚuºZh´'º'ã“k8ª”€!ðy9 Àœ°Q¥óR´GË'[c(âIq L~JãÅ¥µ+R{Ÿ)‹ ×£†ÛŠ÷²à8LJh´âgñì”56åN€ÈÞ"gÉãtGú3n´Æ ùŸÛ9çt'©üÓé´€bŽx´'¢ 6ªJ⻸kKS¸»°ˆŸ bUmë¹ôt 9Ú´ìÂÎL೪v Çî|€q2¨á©§áî~€'²jùº½ó€gÙòt2ç9ÞËh q‘P {'9ø{ € @8öƒÁh@ À¡ððÁ Ðsø ?ž¯‡«µä FÂÑÐÄ0ï‰À—›ñú^‡ÓÅòñ€hOð0þÿ ¾_L óÁ ¥nð¸(ýE@qèˆP€@ 8V€_€ 3õüñ€ž×Ø öü°€ß€`ô ffÏ—Ûú×q°€ŸÔwì< i€@—y¾4 ‘@O·Øöÿ?0Ïü]”¾M€ZKŒâq—‰èÏ|Û×}Æ_ÀxsÜÄ@ÔÓæúú¾‚mÀ¬[æ"üÄ`ÀGÔDÿö@t\¾Ÿ ~_3‡ßÑ™Ä_`x ÃÕ>@ZÛì Æ¿À>+ì ½`H~`3/@0@~ Ñð~ ¸Aaö}'‡Ó쎓ö(€BB ‡Éü¯ŸÏû<Ǽ¬Ò𳱨#65ë)ñhZrÞ,€ á©Gº”|; 3˜Ï`ŒŸçÑôz1gÄ„Ùð{æŸËs¡Èrþº8+»üÃËûì‘CþžˆqòŸÀIð +Æì‡j"µ1G±ô°ÀH½p1ÚÂgÌ ¯I«1ø~>ëJè|« =À{&k³æùÂ}§)ügÇ©ÈpŸéÔ|'ܬ¡ ûAZÅkS80ÈsWŒk…­XÈŸÌ“ (ö3DK3°àÙ3¤­ !êçàî`ÈÐ"à @ŸPº³¾èÔ~çà\h‡!P¡ðŰ®qþ{ÊÑêÇáâ{Ÿª ² Z#{àS±lD$p‡!í¢_ êù±²Í!h"¬›'™ä{Aöø Å`ºa,$Ò€úÁ—Ò` 3Ÿ™€(x{`ô7ç‹ yŸ0}/Œ#1<-#N€†¹Àu¢'®8 @[<ÅiXIèž‘ÙæÌÀ :¤¼!à&~ÚüÍ€êÉêzŸ§Áçë€ dÇ¢¶;{p‡¸ÍŽ ° ¬2k<ŠœÉ¨¹­áî3tvV~ž‡Ï4¸kYû  1ø(¼9ð|G»ÄÉžË0 -˜qó$8½Áø|ºšäP–oˬX²nfVS¡þ{çùê{ê€m¢êŸè®9`{ï UŸmlÚq&;hYö{/ÍÒM‡Hó@Iœ€ð"ºk-††ÀÒ$»“  HPŠhCÀH  Ð?€@@ÃØ|AÜ<H8`Ü`jG€Cþ¬ÆáR2{ŒeZ™Øõlu0”€€ÀeДBÈHLi×Y©£°eËÑÒ!d„ù«Ã|?žA™ÊúÑ$#Ý4¥rY™y‹(ç`¶Äz>Íñ²4äIN€A 1eã³ÂÀs‹±¡4é¥+R*dP© ~&ê¡FnMÀ#Eƒ†I¶¤>Rjò>*|qé€PPÃÌ}‘î†Íw5qœ­ƒ q”„8ÿÙÒÏ€Õb¦x ÁÈ®ŽÛèÿuE‡)ÈÎ_Þø)MøµÇ\TØ 2æ|wù¸^ÍQc7æ)Â0BŽo˜ÿ,ÎY™ŸÄp±e8x¸àRÔC§Ñ|7$Æ Ú ŸC¼èŽðP¡‘jU¾•©˜J»ÓM,p›¢oPéX¬¬Ž‘ðˆö#@jQž4‡x÷c¸uŸ(öØK1iCéf,[™Ê :í›ã9G£’>æDÎu&hM µS&þ¡åÒˆ×+#ä𭆈hØ1Å¥9 ~NÚ÷F ÁP…`ÀÀ{MiL"K=…ðîOaãœ( äÒԓЈ@ z!AîÅ¡9/7ÁÚP‡rÑhPÜôµˆý°ŠÈÌ€‚¼XXˆ hˆ`š€qèHÀ+à?Ùõ­ŽNʱz†nµšs†̸ý(p¡ú: ÷FN³¯–”Cñ!× %+7ÂÄ€˜}8Dp_ÞªBA]:3aî=€H   üWü^ald)-Gð 7 (ò„{RµfÛƒ@PÞ£J „Øí™(ñQdÁ7À¦”zÎR‰BÄò¸³’².¹áAhµ<§“6?S¡ž4Fç)•’Ž(Õx3åÐëÏù€DN2Ñ/À}G€’š*ˆ*ôì ‰š¶ «M:€jG©á„š‚³N2SÌ( 1&˜6ñÍ¡œ(XVÑ¢ƒIÈ‘Y}‡ÄñŸ<{½/ ^ÑV8t‹L×$7øŒ<°ºtwà8›a.xõp |µÐÎOáôuëH²€3Œ»Lê=¶ ¯“°QK°ü““芘´˜d‹à J²`Âç^?B ƒ‡Ñ#A{A=Ü©ÞIL|ØI£q@1À¾Yº°%šµ¼/î|,–1×Ìâcˆ Õ€5Q™G‹’P¢©G¥{¬²j·‹Âœ£@ì1b:ȹ#ào!ø6G{‡}`ºÖ@AŠ>V‚Þ´·c ¬å‰Û$(#oWh$]‘BÂ(rfó?Â>ÇX” Ìà LÀD[Áæa#°h†ŠÎ&fÎd¢ Bê,ˆ@5cNg-ì!lþZê&o7$²9‹aæ—‰QÀUüÕ «üŠ&b,©@br-+$¥@N‚öHO4DVMã8{áømëún†|à' ¼{âH>bp/‚Ô‹‹<4DÐy†daÄÅð:çP&k¬6ÂDm*:Ø@†$Ç#¢Máä ¡ô“‚”è(Α €8d˜'$šcd3‚èñ‚ÞÀ²Aî§Þl+:j„p¾ ~ ´$@ „<D8 g'Bpú1âÜ+éLED¶£ŠÊäP³Ã²z¬”DÅ0É8‚2a`àh#¡ô¢ú†Â‹:›ä&¬‚Ö'æ¡ê›¡èJM¬„Ro§ŽäÃ4DÍØœ¡ïà7ÎÜ3£^/áôILS/ÌL3å&bÇâLEÐç°@NÀ*i!ÔG¡à?€ÓAüAâà2Ë`.Àç«òŽxÔí:‚ >Þ(cˆ,£$ zr²ã‚)ª!ààx€fÀn€6À¼„ä@À`Áò¯d81«ð¬Æ€2A¢&ø€€2Oc”³¤Ž.›¢‚oån¿è/£$ãèxº®¢Ò}ƒÂA©Lâ†ô(BÖ£Bp®¾>„6ä&X²K¥,õŒþEdvŽ­Eh¸-cª[rìË8"%Ò/£®Æ&rh8ŸC(V£ÚZBl&ǰ4gÅ*+#¨/dã>1f^vÆœ±À ¦ä”†øÄÒL""6‡†õ‰5%*Èð£ŒV¢BÕ¢‘’h)>ƒ4;` G³º'Š€/Ìdw¼0¯b‘¤4òS%>5TS†D&Nó€JŒ(W‡b#Oaì9äâ°´  Æ:´¡î®¼Š‘ö.ó4sjÔ@®“úƒÂ æ|×áþi€"¨®¢®¼„­eb¶~f¤£êž>2V°dvsR}cT€BnÜ4D E½àOrr¢áà@í†!g·V ‚ÚAÌœJÓ˜v Î@¼…v­G Ü‰,ãD-Iôáp/°ô•‚9Ä@8O„2E¦XãÂ!ÄèÁäHGÉœÆMÒ+›ó˜ë¢¹1€-„ä4åÒ/šGB2  Œœ†ƒ [ÑÃFåìòBì,!ã;"Iãþwñ¿^¥Ö‚ÔÇŽLI„L'hå1ö‹d¨ÑdÈoÀ:¡ —¶æ!²AxBúkÔˆ0D6ѬeŠX†a"ö¾ ¤¾5Š%HC4,êô+êÈ5bÒ35ü(Wî@" HÀ*àd ¢¡û`uzZ.*à$8&^Œ÷_†bÒWÄм†rj„VÄãH] ì”ÑøÃ<Œà8pŽ<&Ø,"-¶¦‘(š²ÌõæÉÁòN`è6]³ô-4ƒ ð6r ’ÆB.ÇT (v@y¸†7ÇèWÙ²°dÒD$½C˜)&-‚„=Õ¶ç¸6ÐÞ³ˆâÞ̼Ég¦Aö¿É*!æÀmñ,a&¼!êoâ•)¨÷Io)ƃ3DQÎ\2ld!âôV¤À:„˜âƒv&õ½™ÈBäaÍbÂòZQ¿^i9Œæþ°´ÉQ<9¥Š:#4BÇ  gnvåÅ÷ üÀ¼ˆ8êc.ë¼X ¶¬r!ÆÕ ,áä@.Øk­dËhAàEAàáàtܳ#6EcxAÐüÅ ‚Ý YÓ×* IytŽ@nÀë€cŽo–Àh fàjàF@‹h¦ü¾$B_iô)C6D#$.2l!ŒáÚ­”à*Aä…ì¼”â&ã¸+&”Eƒ%Ç2I/êê·äº"ƒ!gñ…±¡*È:âq vž-ì{û[ǪZ*š²LVwŽ»úG£-ì£ô2#BXC #UüÄd8ï#*ã D$Œ‘ÌH•äš÷¨®S)0`”ά‚Šx²:$"!ìN‡ ƒì_frxa`UÔBeöqÇ8dë­²»*bØ4€{†[{«‘£1»Ú8f‡ƒPˆ#œ'™G¨zž¥t¤é1.g‘HÌ ëf&d(+c2¯â‘ÉôwAúIã딣DVCd6¬„Ü5ã$àŠ4"3>iŸ´lGZ,lœQ  -Aäž4Ö€=Å’ÛåíËf7a÷³æ&ëjŽ+Ì-µÔ[ÎG`%÷?Iæ•ýŃ«UN¾}bä”Ë<-„Ó`_Áà_áè+kÔeù²-ÇtàOó•d¬Øá½yVNÔá¦ÖAÊ2L,+yLœ7ŽÜEzwX¤f'ín+dÀX[ø<‹*4à.àp€.… 2 .3¬.V7*¬æ}B ´ÖÌ•d@ºÕÔ›¢|"I™B@Ib|¡ôå’w‰êcÓÍR'/ZB…ˆqXÕTøØ}2R”G‡×ªÁþzb5«¿L¶^¼.ôEcî0ƒÅ2沓‹˜ H.ƒ”.è®3¤ Y&Ô„ƒ¶A«:0̶@ZB+ó)üb„84'ø£G^*‹Ç÷>ž£®#ÂgdÁûDZh ›£íÊ€gÊF«í^è9S¤"`áôQ«\âbî{¡âJgq<Šç°¶fú8"²ìËÞ<ØïD›ï†PVn#·€ áÿ# ¿ ›Ð ñãŠÎà +ò”þ*Ò5|¹±•f2åÎRÁr¨n8)¾!â<(É1ñ¨ú‚†òyƸ•ǘm@(^À"kŠ áäѱæ¡¶!îdHL:DÁö˜·‘Äÿ²›,"B("ElV¢ŽÕ(4È_Úà$@{î Z€ŸÀp}«/—Ëéç#}K,€H0 ¿ÞðׯDÀÓG«Íø÷ª‚@=J³º?ÞO—óÙõeñçèP.Ô0_ °KoÀÌf'{Ë4`-.'vºA¼‹÷ôÝ€À -ôú޾Þ/·çÕúÌ.ë~.L‰þŸnc¬ŸÈz€QêŸ yø"‡Ê\Èà€ˆ£è˜ ~'îðí$ ð•žÀ  ;Òˆ(™ì†$§ûH·Ç£ö¦Àkå3 2HŸ‡Ùöª$ÇâÈžq‰ôPÉà¶`4®}jSê}'ùû&€ 1ðF2 ´ÒÀ œG9ÊúN¯lÙð–>Ë“ž»³gòúÉžqÃh+Òº2‡ª‡ÙïMŸ + ÌÊŸ¹ü| Ð¢î|:œ²VÉ3–É8òb€žÉÑô*¯~q:L“·ÔÛb~0'Ýòz$ €0iô~Ÿ'^Y2¼ÊæJÐ6V¶¬ù𜥌Ή¨è±E®z¡Ç¹óHŸhËñbyZ¹+ÖÈÊ<É,çükŸª¡ü™Ø Ÿpà? À£Œ0(¡÷+ºÇÒ+0$G¸ ¢ÊÉdË•Ÿ(H¥`%vĬÇô¨~žÚõ%\Âzð[ʆHª©ñê}@Ú=óWá` ç€àAþ}¶‡Ùèþ½ 0 À( iîkçF©æzG‘èÓV€Qü¯ç :€€€þ„BaP@@oð  A ·Ø"~=_oWƒÄ 2 Dã!À‰ì ‚Î׳ñøûHÀ7ëåìþ~=àÀ 5ö÷h†í°‹ñÞ8À€Sä ~@ wø¿ŸðgÕ‰>Û+ø ?íçôâ D@ @( ÷8€b [ìb~OOð64°>pÏÀð ÄØ,` #è8Î_@‰ÿ”i0àòâ@x¨( ùz¾ŸÏwöŽèÊàP.÷~H-[ÀYœ‰?€š@@õ|¾žï·à¦¿Do0Jì?¥ÛÁO°0þ}w¯×ó÷?|€Àÿ½˜äŸi°à`·§«€Ä€àp.*éþ¾Ÿ‡ÉÞ  ,蜹ÇÙò.°Æ€+´0@€ :#ŸÎbø ‡Ø6ˆÂ°~¨/š¶÷@ |)¨xG@1ò‚x ç=ÀÀˆ01Ò@~±‹öõŸ`aö°öã:ïiò~''jr¹(áþ´/È}¸}7N~Ÿ`@ö‚,» >ÇÈ. `P |"ÎÉâžG ö=ŒÀéF‹ÀÄ€‡Ùþ|,1Ò#Pˆ|* €ž§éÜ~ç’„žìâd¶ (vŸ`¸v…¡´uæÉè|ç‰Äw,  ñj¹’1¢jºÖ=ÕÂêµ®*Ú'³àyv놞 @"-ƒàˆ¤€À`>Š:Ð|@h ’z SèžëDö}:tPPè£èGá䀫ÚÐÅÏ™ñu«@ú®9÷U¬­‹ÞºÃ‘¬‡NÔ'¢Â{­àç¬Ê+IƺÂ`iüs©ü±0ãìžÇ«©€IðÇŸ+<~¨ƒ,ó›tŸ@)éŠ !î~Çx€ ±9=W+IúzGùôw°ç…­+kàõ`bÂ|§†¸ƒ9Žô€0G‡Õ6{4uØø€IÃ{¯ªž.ØšÜJˆ{-oʉEì<”Œé«Xc¦zžÚ„@sª9éñu¹!òºa`¼Ã¢Œ¡ùG@V RÇà|Ð ¬‚í` áïÓÐ3áðX&à´vyc¸.n™ìÃ.  Æ«¿|‘ð…RâHm‰ì‘wëZ븞ÓfdzI/s‘¼@P¬ðЬǸõÕ=""‰q !¤„B ‰0@(9š0&íQÞ;À83`Àƒ@l`Ø2ãäv“²õ;l4ï¤}‚ÔiˆûCH Žá²‡ðó@8rÀ Ù©(ˆDTO13ƒøµ*2pŽI¡>…¬®€RìÈ€=,­²<¢ÂtO× ÃØÁün©§8€ØžÓYIÁhBnIÖTôå–Ø<§¸ïÉp‘àà-̦z;ÇÑY9<¤P£y ’ •äRÉãñ1ãô‘0Áê×In:œÍ!³NáŸ{à<¼"xU‘ÑžI€ V ó«(˜ajOH앲x?™±¥ "r€Òò>ˆ >£Â8Ÿ`ié¡À0ëÄ<ÙúÍh‰á܉ø ™È>‡ËYn[e•ár*^QfÏ\¼Ã®8ô x“„"à)qwÉC}ŒXþ?.T{¦²Ü4 )…C¬=_H§Ñ\öàc(/ŽÞš7Ò× ".£ºå@:k¨À˜t! °÷l£ÚnQå9@b/H­p› ?eÒE `!²5<Ðäü”1ðÒóPè÷xîDR‰<LjðãìxŽA‚7PÄÃèmŽQì3G±ô7¯Üˆ£R %)ÁZ4³0†3X] ËDŠu ÒµÔÀ} @<†D‚ø7nt8BrQULήÒl@!On¼Ë±1ü-\Ž€wׂ&õ¤ ]E²œfyÖ'Hy­¹?Nr0F¨žF—·7Gâ—ÃÆ»‹Üº€1ó&ͰCW{‡å7A (qæ=àƒòDïD¬ªàbË 5*„#oI)6Ã(Ä·Ð8ð&qî0 µ›Ëw[ Z:J ³€qï;j#qMèî¹Òð^Êümãí0áë]‡ÐùBm $Œ»Gø 䑿êÇø h¼³Ð÷‡©½¨‰\À—³*ŠGùÙCÉÐdh À§:Áè=Ýå¿§€ª*s¦åLÅ56M°¸|ƒ`e”À!vš7:þNB',e`Öe` È‹–TSP~ŽÂò¥bpðÌ!¬Ó >ƒË#Ñ I×”€<üO¨èçFÐÀ0è=‡ü}ŽÙŽ:^PB`H—P" ¨öýÂâÁivD0…°˜Yâ‡ È @9¤ýz@‘˜°HXw€`h q+± ƒ0>IñTCì¶’pÚâ©ô¹4| D<†È ãÌÊ€=:Qàß—)„&}OdEC¤ePÉ7-pâ Ž©œm’åô¨_U¡k¥h”Æ|Ìáí=9å§…EQb~luP¨¤<û ‚Û>­±+93X–¸xìàž¨ƒ^îkØ8 Í)›ø‡ â@t 7Qà=³$è«eȉ–²ø?1‰Ûhý?Æ~c¡‚ln,ýC@jFÔÝKÐXÝ>e¸¾Ÿµ×:Y;6% ¡òΑÊÌU]Züêᜩm† #(‰#q"OháBð^RLfc«á‘ðtÌ»GCfŒÌ_˜&V‡áÌakdúZsH àïÇT} ¢ê= Ðò1xAM™J´§b‹£Å¬›Ü7Õ‹r:°]^Qg6¾>\‘ÙãÍu?æè>×x=£ý’»ÎiL€þ¥¾ø€,ÞÆG³iXR*²ájsP,¥ì«„è6¡Ð¡˜AÖa´Î!ìÊÈÍØ;‚ F¥®¾;à æQcD‡þ̪æ/*<¬®̤@4Àœ  `TA  ,MHtéj<vzâ/&ºkƒ$.InEÆÒýC¦:Ǩ 6;Äxrrk¨ü/n¨ýÄôa…`e -ö¯ â£Ã˜>Ɖk†‚Þ1䌓Æ4(AØÃ$2Áê2¡ìF 2¸‚è;…{à2‡ŒW¡òèðêä "â< ‚,²ô熡ìOäƒÄ<þBÊ/ÃhÐ AàåR ¶%ç*$'¬*Áú­!üxÜmö&§€®¬0$`#ìä*#¼fÄ„r"(3€.0À6ö!Þ+AäÊ¢´Õ x ì(äÆÌ"´2¤Þeb¶ô1bF½(G€$L`("ä-HùgØNbö#ègfïénVdjT„øÏÄ<x>$oJVE#¤#n¦Æ,ä¬6ƒh"È–V§6¡ÚAØ&†® "BbDQ 1bæT ZüJíý1‚@yì2*‰Ö",úÇÂ1c¬;ËNs£¢cG:eFâ\9€"õjà›"ò*Ç—G*s£„kØ>aÜ+§çÈd0CR dæ/$N*ç$1l2ÄÁúj#z#<Ã#Ü Dè8Jl€¼ àÄc 2£9'”'1žÉàÎúÔê4lÂ;È @æÖâªyæØ2Â@+êübEbF]@(9“2Ã.¨zLˆ"aãÃ*¡ÖAšÒ¡®ašç”}#FF-ä,g¬çpš f(/FFïF¤`ƒªŽD'‡ºàV}`2À @X –L;$íÎ8DF3„ö½DjCb6#,[bl.‡ºVg%cê7¥qç”´ªÚ§°5!ôcôžà2O@DaÄz͈qÄH5#Uaün '”#`B`ŸÈœjìÅãwfËžã§Ž`/Ä݃*0àÉà¥àÅÐøC‚ö1‡¬‚ cË "*ºaÞ;§J  P b¸¢¾fz°`9Â5&ê;ãˆ0#T¤F(æm.¢Æ}”ÒFª*pÿhUe7Nı@¸qN©(Åó”W±Z.¡ì3¬+£<®Ø+ô,JÂ$=&ØT‘tNbõ ĸÓn<àÇ|j©V4¢r-pÄÊ=檙† Df֣Ŗãˆ6‚¼4â#9âê݃ÜWƒìaáÜ7!Ö=€ÊöÑ¢<‚aµ]2i%í ô.:dm0–ü ©4:Ä dŒúà$6"ŽÁæÀÛàjl >@('n#$[hª|Ìx4£’÷„°A¨aà@@¹ ÚS2+h 2¦Ö-†ºSn<2¥p>‚³ .{+Q´Ø.IäF.ŽF,jBl"F¤R­¢Â³ÂÀ2 É#À‚èË5ð"  bÞÇ„l¦F3A ˆB³î"¼8ƒX!Žú=¢Þ‚u$°Eq&/s¨ee,)âF"¾ivJ+£¤B£êÇ—Æ5ƒœ#€ bOÜI$FŠÃ>W©Ö+ã¬M‚x$¿y‚À#Ü vlϰâ¬bx×°–'ôc"Þ+&WÇø>„þtŽ„§Ã<§|yI&be >“ÉàIáûwMú=(vgâ®N.ÅdØsaƒR®‡6eeD¡îÉpö'4ZVbÎ)D5£N6¼cˆÚ,,Ô…ˆ‰ƒÛ Û8€+#tWbÚbp5(N/ÑNì±ÜeaæeÆ9ÃÌÎ#æÔÊŒ¢,iÔNGdçŒÆn Ȫ=ÄÆ]¨09ÊÒL‹ãaâ&ÌžƒÁ¾XRa¢¡øažAÞ¡Òc(I#€K†Védt5jà>¥0“uä¬*â±dêpr"-G"Ñr †@> p & 8ÂbÀ¦0Ÿ$:Â;‡”ÈFì &M†üæ+¢+3K‡?ÆoJ 3;"r€ F°P-wZa¼DÈÐ Ù¸c„b5!æfÁæ,È= JÀ&#à…xì²B¡ê¡I/‚“Ȟ&äFÕ5ó'jVJÂ)ì‚B¤H(6‚ù 4ê?mRaðlúbJ2cÄv¾&8ª#~c˜yB²F9DŠÜ1f6ãà N¡ñ]!îÅ &D¬Qúl¨v€(F&êm„ð5†/ÐH4ô^>®AŒHáìë~/ÊC†ËFDæ—/bì´9ʺäRbeV;¢Ôì á|IãºC„>3Ç•*T‚Þ'(>ï©bЄj-¼ÇÈœZïâüAì` 2ÊPGGŽN¦ôQcªI׋Â3b@©Ušáä @r`NàrAÜ ^zíˆ2Cêr¤¸À#òDPxûâ`;+€*ÇÀ,¡Ð ÁÌ@E"æP q Ÿ""."¼Cc ,c>¸3Sl#&â ì&£$& DÐxe2#ˆ–$­Ug¿‚z§ÄꄊTC€…ÉDN"AG¶+±žC˜1)Öp*¢1ç.Šd!¸ºýbH 2‚x&èI*bòi8ÀÄtF(ùÍ‘EÀIÂGEk*dž}ö¶"»wÂÆuêà"bº"j 6-v"úF4áèl†J2Kâ.J§À$vÁâ$CÊŠ,qI ƒƒ(VâÜDbш£*6i1  †»2‚pQ xI"º..ÀûæÈ+ªŠUfT:Ê"«âÞœçMÇ$'bü1‘@ŠÌx¬•Úà$.àLÜLƒ>4h´/$ ªBv8À;.€~øüŠPèB¾ÇŒ‹xĬ>שïNrfS×`{àË8 ‹^š^G„È@%z¼¡Éáªáîá¨a¤ê:láF.$8EI׿þî¯\œbpK™¸!¢¾¨Êèhä>;¤alcÒ§à/ ¶ü Àj "5˜9ƒŒ¹dªü¸ÇeºíÀw)XB¦N쎔D\ ‘ôzãFF¸{¤2ÇÂÔe8Šsp ä8õ–cÀÐǬ¸ž/NEóXK‚ˆCc¬î£‹7âÖ~lþ;qÚG–äãSæã¤ZÓd7u´<º"£ÚBê¦,.bÌ1à9#’7°#£¤=c›ë¦´?+¦:«LUhM}ÂladLó‘ææRãÊP&R“Â(>¢DT"Õ‚ãIWÝ€h„æ&æÌ>|'¬evÐ-lD"BäÒ(èk¦Ò8CH9† é¬ÍÅ·çÎŒ,JA\—Zîêk–€¼èü"…Ôm‹òª8î©!Á vÇwâLF£cƒr÷Ñ.ýUp0Yn-bÖ–gï©à@k΄ˆìm“F>ŠDaáøf2ªp,@ PˆrÍl!’h…bFÊ/%o¨daæ#i$-²Tdð=f ! ÈL6ˆ@¡ˆôð|¾ßï×óõøü¾ß` ñòÿ¿€ðSåòÓ ¼AGËÀ&r†€ ( ?ßðùö÷¾#¯À lDß@'øþ@`ñüN)’ûìû~×_ @ø' gøô?$6í0ý_·ú@ÓÀÀŠˆc©?`pñî>º³ø•€€ øš±>ߨëâ¢Çó·à÷›ˆ‚@ïÀ8¬e@t;ýêï|½Þ/ , ô9;ý{[,`<¨"&ë>jï«åøÀO£tÀ(ô ¿_'Ïh }&Ïp ÷;ªr€‹ôW~0'øKÈ h¨~½ìÂܱ€) Æ2ì(='ñô{¨À ¨>GéòÁéÛ*‹*$ã0Œ‰êÍÃ+ñò~Ÿi°ø€B4#§°z²GÄ6ËÆIâ:·Ÿj;f` ì-Œx‹ÀÌÜ,­ªÇØ~€Ið|¬k«4€bB€ DÆ¥"Gˆ"}+ÚÌ€‡¡ú£ÀYü¢ÇÒ–žÇéî{Ÿ €Ky¬ñü˜|,/ÄfÎGñÙ !öngáÐt¦ÙÀ|FáîyçÁÎÌ©@ B¯¢ë8"°‚¬¡âü03€»Ðx7ŽÄ¬ÿª¬©ËrÔ‚Ùþ ©ð&§Ðš`)â}ŸÌk%` 1êчáúš =à¦ë3æ¼€Ô,Ç €`\ ©ê8}«€›NÖ Jø³; W˜iì¦×ï:ty訷sðrq Îw:—=­ qô±r`*|€ ô1J 2Kô é ¾HÑô~YR¾´?€pgá'iêz‡©øÛ€uÊNì¹ðnÑæ‰íà)X öHM Š´éÿ1Ø Óæÿ¢@ñO *þŸ@aþzjËÑìíhè Óm 1î’V-“OØÑð£¿Ó;C/¯k\ ´À% mβ,æ Mà™K³Ñ©ˆ±öPŒ]€2ês×®`kþ¿àqœf²µ ƪ4 ;¬Û )˜ñòv«jƒ2*'Ë;•/ˆÑüzžèÞí?*¬P¦¾ªš©2À ~ú§ÁÜ|L˜Ê:yþ{ÀÀ,v‚€ @( }ÀŸðX‚?ß°Èx `Àcø?ßO—ËÅÞŒ†‚!ÔJ÷ Á/·{åöý~¿Ÿ×àøø{¿Sp ðþ>_MÃɬ}½Â —H`À@ð ø€ßïÇËâ%€ {Õî{Ÿà`@8’_¯÷ø ý×gPçÜõþþˆD1@ ð?€¼5ìQÀ× @‚oÀŒ€üÿ{¿À@ûãV÷{¿€ï‡àê€ÁÉÄEøö~>ß5ûðÔn€@gÐüýC@¶…ï>|ãoJ ×k°æò9X û]~ŸÀYÓ$ìa|×Ì8 :nóÙwç=î¡Çéâ‡Çð± Ü!`!ò­‡èé€@×BŠ)þƒž®F}¿ Ò+Çó$£²hRý c$è¬êHà°çò"…Ÿ®$Òm }žÇ´z}Ÿë pó‚ ð&€GˆžGÁòÈÀ,T„¹ê0}²èÓ=@rå2¸05ŒjDÓžï8@;¯¹àå4§sð€L~,€ž³ê,ð{ÈÒúŽ &ËÓ ¸ B˜žà1ì|? Aô²ÁÞpʧaÊ{gQêaœGÙÆr†Ùê~ Ô,`ôˆ2` m Æ|€©È&€{ŒyŸçYÚ~βu ­[@ã+Gð¨À<€Âp ÀZÄ~±Œ¸€µáöŸ0ê|Géîw8¦Œñó$Ÿ§ã¨X€Ž2Ìá/ûÒ±^H: ΀ÑèçÈuBÀàM‡Ð€¢žŸ@IüyɱÜžM8Ú@€úS@P @–c+Pc¦´ðÎ\{6MIïzž¯T×'x(ŒO1Û#‡À ´€˜+˜€n‰øy³Çˆ{Qº¼¶¯"z„ž !ôz€'¡ñH×È€àµI(r‚¯+àˆ|@s¶zÇ©ô` ç5žÀ2¦Àe°ÔžgÜ ¿`'¾„·²Gìó$v'Tðà0 -2ø~º }Ÿwéø‰2gì<|'ÇÂÁ‚ÔÝ6´€çû…$x¨\tÕŸœÑüz@kMŠÅ‰ ½C€Jvyv[„êÈ 3`Iô§®)ù×'ì»N31zÏ}@‚ À"E}”WR?‡Ðö©aî‰ È^¬Éޱôf¡™!Æž8fH’!Ž4ÉŸ`@ALž¢Ê>˜î`¸°b A8ö Ùú׊Nèû4ãø’Ò†òˆ›é#Ðfñè4@ÃDÀ8w¶ƒBÀ;Ê>Åu1áðo B4Ë܉—ÓdGÔL"qÄõ—°rBXe“Vd™1E=Ì/äH]Ðÿhîù•¼p À( 2ÐÖÂ¥ŠW`¹"'€´t^³(̼Ȗ"º@€A_#ª!aä>fäY"Li$ÃÂ(žñŠyOÐ|˜.²Ý--@Àæ ÖKèû@æžr¾{œQE ²•ˆ™ ÇÑ|KI&H» ™eö BÌtK”"L``=Ò¢¾À ž@9:›BˆNIê**`8„$t BŒÅŽ^–‘øýŒä‰ÏÂüà×Ù<2ælÖ/3²ø1§ÄBFŽka‡»“zÀ'½Ñ180zQúÀ‘²'8vÕ!Ü:‹Xè98$zt9‹Pç,H$§d•‡ÃÅ'cüy)S$æ( ‹4¿bÈðLxo`,‘6F>J/ª` ž°H?à+£c€,BD‡q§5ÆžóÑQæ\‡¤ì7n ®¯P L€;6ïˆ4œG™f;PÉ×Òº €ò"@@½r®ÇÔÀ.e€Á“â|‰±r~Àdï6elÙ)NÉ9¼² ¡yìP Í`eüyÎCmŒ!â?G ðs (Ï&ÂЧbJÅF3¡Ô=PçcÈñæ ©PÌQèBÈi f:ë\¢ØQEHt DbÈSñ Úø J s`=Lj젼0EA.¬ˆƒèv“h•Oé<ÛÄŽŽ‘’<Æh$Ã@N0‡x1‡ö\‘VV®ŠÉ9õ_ #©Hƒéà˜âå*=êbixô‘ r¾"Q$‰–6(D£D?HËm-˜yÀ¬:4c›/8‹,‡Ä?Xˆ57ª5,Stlµ•f%˜œðCþ‡»ø olNÀAÚº(SQà8ÓqŽY£?©ÖËSXïZÉ+ÃÙ½´É(A;¬ö»¯3œœèV­%Nq´Ô"i±ì$å<KšÐDàää‘X ÉÑßE4šp€9ЧÄÃXዼñhT¸|˜ƒÕKŒAµ"M¿¡c°Ž€RBÕFòÔõ`ƒDŒ¶X PÎE×c”#XU–"tuz,M@Æg0"½ =hEŒÆÎÃ2?‡³€Zøl IkûØá‘8.€ d0`…˜¢Á`,°W€ ³;"äs΢Ç)F´æ–¦åøÕbÄhŽñ`:\§Á!féå(.'Ý”¨ûÙ%!“ 9Bæ„â…~>Â|{C.5‚xé"i‡t'$½@H¨P((òÏ€ bBBfb~O d¢|:búCâŒ0¥„û‰€Î%¥6, €…oDîɲRÆeâãƒvI$Æen v"¢§`-*(NT×èòåx¼î~úã:Ç\†\…T#0xã`âN.²7lb;&I HÂ&Èœ† #f^"kÔf$ˆaü!è_%üem`Lêp’$/¸\Dò4ÄÆC\¼$2A€Dà ÃLÿbæGâæGE_¬ß£ìg”à(À$©ÜªªÄ0/ö!äƒeÆemôG‚ä1£HCAùB°išECh1?#4"n'ƒT[¦\<ÂôI#&€¥\BôBä<äŠè‡öEC†'Bv'PN!2'*q$JCAì+DˆGG˜Í$Z5Q:¬ð‚ƒB-"›"ŽKª$z(<áÒT`5¦¾¡F&ÁÂ0†!Âø×­p„¢3%!#–¢.,:À"`&ÐÓFÈtàfF n¡æàl_Ö(Bnx…*,ô¿ˆöO Õa–¡Ü @.í˜@*@( ‰=CXC®ú9âs-ìó#p5pèŠdÒ[‡ðQ£v7Bt'‚÷Gv{ 3 †äðXb²BˆòEH ED>i†Ž^®P'ŠH?#—HÎh‹ÒƒìðBÄ ½EŒ1ƒDx£b‚’-ìC$Ø/Å02¾Y$§"¢oÈÂwAüP£+"vD4G¢$Ž#ú”ëÔxŸI5blÛÁìõ…æ+ÌâKà à&à͆ü. ƒŒø=ôJ&vF\ âû`\Hf¤ê+òÁæ®~ çâB Féó R â†1ÄHè_:‹„/fØ'BÔJÅâÄÂwPìº_¡ôeÀ #«n'â5…ÌcP5H4,®f¬_±d ƒ:AÆ 5B´[¬™cV`âôJΛj¦€*s`2¬ÔzÁÞÎÁ÷‘ÂÀ›g:EE’3Å6x«ÒC!ò`+ˆjˆâþL¢JÂÄAÐÞ¡Úa´6+âs£¦="¼cl4‹BC,˜Nçt „tKE$1¢„/h”XÄMbÖ²à*`rÀ€<`:@ € \BEžÐËtëbD5-nêdÀ"ºÀ$ćÀ…¨L #ÃØ=ÃDcr OR†g£#R¯É‰hÌ'Ãú91f£z(¥æxóT~*B?èâN.TX`ª©€-'ÒQ§¾åG˜N$l5oâÊ'c†Œh_I ˜<ÅðGGî1F £Xƒâ‘€`"úÉ€&ÚC‰(ˆ(0ã"J Ü"z.§êc4 Ž0Á`%z¬BbHY)4´p÷ó€Ï4AøŸˆÌ5‚vòN¡NÅè(.Š "2ç|+Aþ.¢Ì=kžkñ:¿„,Câ<”xà"ÂbŽŒï2!ì!#h§‘öAâ0çÀîÉ_ ãKáüâz}ˆâ"Cž/Âø†Æ$.ÖŒ%Æ4Èâ›h8Å¥Æ8aè/aì›'8Ü£ (ñæCЮ5I”À áÔ_€;IøËeÆ9Èm"f25Mt" !"Œ¢!1q¨c"@Â:À*=… Aà$à``\@j@N` Ç‚ƒÖnKê%"D~„ØøÁÞ Lá˜Rü@8 (BïLd¾:*\/§”[®tü-"À9dbR¢Hb õ…z,/~øãSº"Y¦Vq1ÞÏ$e*wGÓà {e’ãB¼(*^ŠNÉdeãV;"x£àƒÅà"Ê&ãbqB+x^ä’B`ƒ.! KÔZW|2c¢f B3%ñG<önrƒ‚paö·PbpÚ!Å®¨oªJ[¤¾9â.ãŒoѪÄ.þ`B°pbÈM'…ŽD‰ÖÁâ‚Aãƒgb¤€äæ'Ãô`‡Š&aï’að-†ð"d(ʬ,g—4_Â) ðBeÑ 5Jº b®§¥ú—£ yŽð@ 2"ÈI"½ búÈz8BöNî²6‰Øgt}C„ /®€ò\èâîç«wëÒ¾-éˆiâŒ1„T(΂˜r'hbs’$^öÔ>×cX0;’EbŠ6¤8Ã&…B¤Ãdà#læ*à «$¬HrvÓm`f Q$`rÈÁÒ5òñ¯¬ø'˜I ­†áÒ6, Á甬û^¢ÀuÄÒ2÷.°o#h XdÄæ-cØ>¢Ž Ù„¢Eâl FhC7;ºèò3 iC=^4>XEç¢C vPß±é€9x,$$&1¥H/Vœ.ªLjC ú) .‚ÿ•úÐY:ÆCñŽKEøj†z-BEÄ’gu0Çà8$ ¬)€Yµ<2:¬aì/„Vkê·ÍÁóDƒe~lνI§£N9ÃŒ ä"v&ç÷jG¶‘CXNk Hp¤ˆ”2‡'Äû•ªÈÜŽjÇ Æ…¤I²|Æ6¯Ž8Y%Cì·<ùP%©u…ðJÁâñ²ö/‰”`¥é"F…qÅ.ƒï|XÂÃÄÃ%Œ±Ü˜hÐgœ?eæ7cñl—zÄ€+&&5Æ¶àˆ wëÀ7CÒ¡tm©zRÈÎ9ûÐ,ƒÖ7áÕ9ëbaؾÐ!¨!¤Ârx´ÓÏ4p÷‚Æ„‡üxŠøó£UÎèDX$b¡¢2"ì?§68$ì3y­Ï&n½@q´ L€ b ˜šL/Ç8S˜(HÎù`:€g8ŽT©ƒ$ÖýW`·EL¯c‚s©zAÄf!v‚Cís!&&KtÌ$ýÀdç‚ÅŽ¤æ“H×[bmoRT±ÇŽúÄ(3.ÏO7Âü *3Ê:b°`#³Èé”Cå^’P‚jQƒN BÆ '©f꿉ù4Çð_¤lR­B¦ò‚“…ó¢þoaþr·ô«æB-e.è"‚àÈøCä핎:#óO‚î`!àC’Š‚/6¸ÁÇ (§"Eh(>”tYzd1À.sb@&Âofn2E¨(F Üfs':™þîÂt(c°ã˜g޹ƒBu4 jãò',´uÞnz­8XÄâ(”dcT^Q›×ÉvBÏü3"øMd>9ðbl%¨,€ÙKHÅBþáÊD" !•¢!—²ƒMtˆ×f2%ƒjtUŠùaäͦ@\fÀP ¦HµýT?ç¨ )_"PJ„–áØKu6` À.Bïç¾6 ëÈ3Ä/ä Çóð¿p(, Aï÷ûà}àp~Áßàôˆ}¿ÀOØ( 1,€ óÁøßÒ9T6’ÍßÀH_/>Ÿ¯ Ú`{ÊïÐH)ü åà ,…úü¨ÀP!ö|€ßO +ø ^rþõ|?Ÿ/§ð ÂÇëÒ0õ’Í£ @3ð ~àÀ‡  }€äOÚÀ X³ÚÅ«@|Ežïçè  ŽÎOàðýË×fõÛX*‚¾t/·Ü¿+¾?ì»sº€›x½EA•ÝãœÓŒ»ùô^µ7Ãåìz=@àp` Ÿv·ð$ûz­ÉàH»> Ÿ§¸~ŸGʸŒ:ìÚÖŸ ùôº8 'ËTá¨'ó0Ã`æØ¬ ºº (g’ºyŸ€²+x· À*p`yò|(çóþ}Ã!ô»«gñÆ}‡yÂx–æéð[G©îrž§bž¶.¡ü¢H¨ ºèªµ5Gâ,•$R®Cs:肺óc®Ø¥çøÀP î~ŸÇH à°(À0DÁ—-çäâQ¤Ô#@ žÑiï ·ÉbÁÓˆ©ðº,1ïT ª`yE Z*€è¬{Ä iþ®ÍT{¥Ý–ý´íòK@9ŠAü|8`9þ€Ë ï8çÀ­à@Ÿ „pYê@ËR_l,çØy@AÜ#QØN¡)Ìl¤@¨Lj–•bU3ip2  ~C´"¹Ä³a÷‰µGÒN€w}Œ¯àC:pz­ª~\œB>ê·6€g©ö{áóæù$èºe “Bê4 B¸ŸG¬ Œžìá쨹‰B·†®1òÞ@nƯiðz€ P‚XŸG±ï ©à ꜯ€hÅ]èÂE«-;yð|Ìì.ƒø‹/ùîÑ€3>è'ÓŠþƒ€±mµc%‰Áú»Ÿîêè€Yš*òŸêÁú¸mH€bHÔYØy€€¬^ àèóQ'©ÆyŸ(€(ú„B@0'øÄ`P¸˜‚€ÀÀx=ü _¯‰#Éà ŨÜJògƒùö?ßo¨{åøõ¾OÇãè>ß-0ûɶ<Á ‡8^ú?@/ð3ü]‘oà +uª»î"þ~‚ {˜!ÿ6‚ÀÀ@ûßà;øü­D@4§ûñöþW«¶ &ºœ¾€ÀÌð úÀPŽ·§>Ÿ¯ËËØJ~¾€ 0h EÀ/©¼øü܃.À—À òùÏlÛ`0øÿÑuϧ¶h ‚—·Ø²|å| PKø ~¿Þž´ç_¥)ÿˆ|ä‘éñü~@«çãNl{~ˆ¾k#FÈ'ð|¢-SJù€à3}¶ÐS"ƒ Mb|Ÿ ƒ69«yþ~€Çì@ÿ@\bŸà#ºÜ (p±âŸG‘þH1øÄŸŒÄˆ¬A¬Òrµì ø²GË }''è‘CÌ[Õ ØëèÑ'³V}!¯¼®21bÌÿŸ¯2½+¡mÙê}§«¾Pè ÕAçÐ…Í 3;/ÛžIgaù Q–q¦‘ÀqÇ)ÈmnsTyÍÌÆ·.þŠ+k2,+g³|" ô»È{œ¡¬;lÒ€ôXZÇð²¬@F€À( !0"…( ôÓ AùÇâìó,“Dz·è²Û ÅL³;§øY@îv\Gte+ëáñ/Dë 0L1üòÎŽR†µìAö{(çºå×½)€'œ@ùGÀaï  åvë("9À­\r@g;¦Àp|–9èàkø(ÈÈZÙîÇÁ®@ |/`ˆ‚ÀÐY¹î~g¹ý@r«!4+ÌÁú{¬z;æ~6sÌòÎ1 ;X~¿1ΞàUé+ÀjЦN@•.²(м‡ÃÍ{#’[îžÚܹ%žj÷"/¨ ü±À /¿^.iôÐY:’_UÍ[ ðŸG¸-O—[ À06µGÜò±®Ð€H.¾{ÙàêÍ žày`?f¨!îØ§ÏòÜM(cì‡Õp¯£ôYýµ1ÊËØ€8² ‚t¾ÚÄUÚÜS+¡©Ü1ÄgaòÇ 8i´€â<Çù5Ä ¼"¾©!Ä&x(AÊø .@4€ä`Ì!$CÌx€Z Ah èŽð Làîƒà³ülJSãCØ‘ì>Æh()`‰€°;€¸¬ì™öÜ Ád(åtô—rpÂJ9 ‚p†—Þ®ËâK" ࣻk 1«°ð9÷¦b@I]YfÙ˜p ãX!mI„0‡Eaé6` ÁòÀä9c.ƒü"tøØA‘3f&PQŽqcŒcµ„´¡Ùº/DàÍ€5’?KØUGÝ­€ã  ÃÞ(†°ç°5âò€9ÀvEýZ3yPd ™Y+ÅÂ62DžH‰DaÞM£€c)fN…»c¼û x ›¾ä®MÓiÞ‚Ä£“3-ŒHä䯇øÀ8À,ñú<‡°öfhôp‘$8þ5Iå:¼kDM,PÌ~–®Ë=ol¨˜4ÿ! Ð %ˆš'oJ9æR*s‘‰š‹Ïö‡£L–˜#ÓŽ¹²?i› ÓºúÈÙClxáÚ7GÈ«èU¯à=S ø„£Ðyã¢w(y0è¾VÈBÇÛ‰Š0ôšÂø» K_N2¨‹€wmˆ!ùRƒà€p À NÀ$ pNÃ%FÌ×u’PW`÷9ST˜ KIeEñܯ"‡KÉݰgÌ _Êëì5…ÀzKÂÎnL™väò-2[v/G8åqðN‡Èï.+±{£Àõ`.Dbf®3’¢“•ÒHæ‡Ê%Ä“qú®‰ NøãÚ F’[[REÜĉg’!wyF±F„_W° à ¾ÍJ>ˆÈùV”œ{ÝžMŽâ)#ÆT6œÍRø¶ì ~ÖàlœÐ•ÔßÓ„¹Ž(E~È(D ïQò®J£ü¯†¶W‘yż€y(¨~‚­ºÇa`0~ÓGCÒ+d QVá#•ׄþœPì‚?GÐѬ–eß‹!¤ð~›^ yÞ Ó*>¦“ sˆökfEöœãî@Ì:K,ø<ÃåY†2ù®'4tCñÈ=@0oÀ8 DÒèN ÝoìœdIy VI. ¯„ãÈq#@4ã@ ‹#Ôx’€d @è6` xpŠkF.äí+©s`çȱE $y!Ž ‡À̈ðàÐö?9µxùÀ†ßI {ôžDÔûwÏôÊRç@ÈDé[ \M.ó¤µ0éTƒâ/0P9­šH¡AŒY8KÇÝöhTr—Ë$j+Å|Ù«DkÙÊ̔ýŽó_[¦Ìq!jÐßGœ¹áFÙG'’ˆ¾&„7Œ à%ã¼_]ä¨,nEWõTà%B,j_(ߥð‡QÀ†¢hó#ãì¡Ô|\Ès Eä(£âîCdÙÊG«ˆÿ^2Δ \RäGC*XÑa9Cä~–´¥pIœx±<)‰ø+Ø’ÔÜò ‘nÖÜ~›24»3iƒ”À ¹!ÔNÝ.Pý´ÑƒØ÷fÊ´o$@—0‹Í¿·T ·âµA\Qä- 1dßÙª•À5;@#Ôz9òFÇ" ÏŒpŽ!ø:F¸éc¼t Aì ¨D•ñ³!ìrºa°'J¸Æ«´¾Uó …wt–=­6UŒ5" -Ĭk(*6 t€Ð\€h8E¦ Û@j,\ÃÔú³ƒýÙÉÎ…0MÕ43Þa˜8,—ÃÓNÉZ\Ä8å2Öávíhômæ/ì$ü´ª`c>0DÊ; Ÿ£À,aÜî¨ãÚÄ:@ "CìB¢T ߊÜ^(ž aø›ŠØ}£Vjäc”LçÚ­ÈF4Žeh¦®èy"L¡êæå0Ä^k†®^-Ê´üHö/lŽ)p@+cpª(C0@ÂúÁáö¥.g">,æÆí,‚ø3t!­¬­Ä`9¤d@"þ¥ëæ]É–¢â†`csHšv`ì@Œ.GÍ:$È-ÐþJë€ÁèC¨,Ë 8Dz&p‚!àÃ^߉L;Ä|q$ˆB”+ˆjFX@ RƒxNf F Z KKÌáÜÀÀ‹ÀklæG"iã€ðàô6C"Uê +ÊÊ^ãB4¢,4ƒ88ÅìÊ¡ìÁðáÒ`e€'¢Hâ6|a¾y"(b"Ìåd‚B¶,èì÷‡à,â0ñ^£oªžÀ j*>ÁÞ €bÀ>@tèÔÃRÉUÄ'B´hÃKEðz`Áâ T! e & HåaèGÉP!åÒ'È,/ƒî+bÊ"Å|-D¼$G2'búªå~mà¶CÖHƒWä¾@Ãþ^çš} +Cø_ä¦"bæ„Ä8ð/ìÀ“dñˆ0# 1eè\kª’  =«¸‰¤¾9Cæ'*‚ÂRˆü|,¤–-ƒžUÂxpâö8hÇeÏ2¸@:¬(à--Ô¬''IJ扞+¢¦£c®VŽ­-ƒT< ænDPˆÔÄ<2$Ü8†ê9ɦg‡xèÔº2Áô¦0º¥êFζ:ä!c€.ä¸è”G æUÊ ï#r§~,†¼p¼1쪉© 5d¾ `£bˆ«DsH”.ÑD/l˜5Éž1öfç>¥Â”¡#þ;cä@9ìc¢ÌH*&b†°òNoÎ":Š\5cô!Ã*!à‹ªÖ¡ŽAäÔAÀÀØJ`·Aövaø= ,  cºÞGAˆ ACœ(¢"?ÀBÆÈì•DnEd+r¤Ll4$ :À" F ˜À(âx *”…h¶ô!`%,‰ªUÉ #ãºPâºÐÄ=14aö4bŠgŠÂAø†£šXâC Ì(Ä)IÎУ¦Ú&œ@"ÎA¢Òí¡ô.6nÆÐ!o;A„àiê4É% e´fç"3‹¢ÊäóIdè`ì$#,sHh.hGÂø{"´-CŽKC 2 ÆÊ´>4ÔG)H•BÒ4”Úq „!øŸ ª¶êjyU4))`)º¦,l‚&!bD&Ã"&òø0DdVÄ}©"FKªÀÄ,H#)Aæ|cÌwªÜCj!ä5Œ^kŽÆªü"¢þK²Î M%\ÞH”@Åà&ìn•$/Ë„fçö(´8Ó3`L¬”<5c ¡"3áì’áü5Ã÷'¤XCËBàRCª:î0ˆÓA⸠B¼{ÃdEåR“" )µ;ã¨På¤t>IÌhëÂÁâêÁß 5‘^+k=ôL!B9£Þ_a¢ BW‚Kb£ GµŒEìöþŽø€dÀ@r€"ñb„‰­X1âŠkI Kf°¡èÁžÚ@61`$!ØdÒiЬ,FŸAÄSU‡8`#b!ïÞ•"Ò'g•Dª>¢,bÃ_e§2$Å^"ö“†ÐBìÛ2N‰¥h0'I§4RcX‹¢î®CÒ+!îü‹Š*Ü'D F J/é’‚+.á9Åp1eR>dÂ-ÄøâÊÓ(¥(÷uf;´3nðM AöeØ.ÀL£Lg²õ4¶@àFêÄ 7ö„‰Ulçeñ$Öþklž›ôD-‚Þkb¶Rƒ0<Ц1k ,†¾‚b†cÁø5ÊJ@äÒ£¨”ÙÃ6 I|!cÙ¯A‚Ž2®d^Î*4©6TÊ&ãmƒDP“$4ÒþC¿å_ bö²ªF$¸Ì¤ê\`¸J^5@­Å²¢îäT4`Kê\1Ó†ÁŽYßÁàJ¤šA²@.aÐá¾aÄÀæJlìëÍLÆ®5Æèa¨µ%eô' ¶ŒH›]Ϊ/ô5Dɪ|t/eÒ:0V`DªnVx.ÀT BàBÈÌ‚¦Ètz;Aì†n¨†ƒ´ª›Aìoaé‚è4°TþE(¤ŒâïÓä–Ábv.s3ƒrýÀ bìº0ŽÑ‡z:ìH—PHðPÄpFMaâ膾”Ðöܳ:I4´4[I¦ÇâBâF3¢ænƒæN†g„t0"„ÎþhpöÙ-Ä@Áæ(«Jw2¦RGCH#ä CÎv1®¤!ÃìÁÒ_Új@"1à&FM:AêÂD,yB‡|Ž7'Š7cº/¢øn+Ö ª?뢦’ölc›ðå¢ü(ç¢à`ð€iˆ UÒ¸ö#ÁüßìÈf,@äÐ/¤à›‘c%ÌR‡60c›)˸5U>ãV"²…’0•ÔL¥$›ƒx6ÂŒÚcI _ÃÌ!åY-¿ˆ§ÆY„0’âöº`b?¤.H¤š')H"ÊN@.6@:;¡Îš¡Ö´.Áãê|bjáÜbÀ;¤Ö1 §úL(Ò Ë)—F·w !c*åâÜnP²3îîƒxopobø'´4N]‚¹µbrC£*C®¬/ä1`7>°b¹ y°ñÃs'M¼hkCB¤¿qã • sc'Å\ã°’)2*ät9¸”Î8.~&6NI¬«u@í³34DÎån°1ÐUÂ|‡ð€#ã?tÉPF(Ô!êkh~(ãJGÖ¢&ÊPâҔÀxÚ=gÆ>FàŒDŽ2 @Ãeƒ÷j ª›”2}£Ú=%ì†f,¡Þ„àõÜáî î‚å  ¶âyT×Ê0`kg¢/÷íQ L¤sr$è&âtADªXå){Qu·ãc€à8Là À> Š Ò (`8ôÊ1¾/¹þ‚ Üã05ñeÊ!‚àFÄL² à(>@ZèbÍ6y%RyCr_BÏþÂúó#Y”[hËDr}e„,ã"]€RJ\룖ú ‡ ”Hyß]ªcìH}¯ÈìÂnº´2å„zawÜHƒ‹¤æë€¢Ìd£ô•@£Å´‘––/iRR‡î˜jÜ@ÊÜêÂbˆâ1ätHh@7ÐKÌ$êDhY¼êŽ"0m»^+£Ž   F£rðêi ÎîTÊ68 }¢Ô‚ð\BÜz!üÃäþjp}»– $J¢F9ë²ù˜ä5äÜFKè'òK"ˆN~'‰¦FÓcráè­ÕPFRÒJ6ÈŒ;xäQÎÖ:ލ`ê_xq8Úq†±- -ľ ƒ½šuÆpVî–?&DaæRçP£Ò<¡åPXÚ/¡ü&¡þ¹DeþÇ+B¾7ÇMh/e¢wßï—Ø öú` X ¿ßàxSð þ~€O÷´%ôø|_ï§øƒ€€gäû ß p$qþ~€4×ûõø@ *F² ‚ç`ÇÛáó_~×ß/ç³éøùâ p<<$€P3çý|GpW™“ýù'}>@¼°ƒ¥'äuüUpÏp†£ÜMý/=@¸Àoœñú÷SsàÖ#\ß ¶ÆúÔ€ÏçóÍþõ|¤OðSì ßuWëÑü{^ÀÀgøÿŒ‹?7“˜ƒÿ®~çÞ/.åøó£ç‰ðl›§Á¾tÇ9Üw›g*>|g{h8çøz«ÃÔ.K’%)pþ4` €ä³Çê¢ ÄR¤ $îLVá!€r ‡ð|4@° è(„ˆTŸè¤@H mª‰@*  €Iþ}§Ñîx€9èÀ@4€ êÎ`x¦Åçàà €±á>@®Kêƒ/>è/ Gôž1S?>à*$ë¼Vβ³:5`hîS èÿŸQʶòŸ@ôŸh2€“P0z^}Ê@c®àAò½¤o¨™K*Äd³Èî øÞàðx%’Ø “ªiƒbyª •Œj é+ÏX {.­ñâûÂgø« ö}ž!ìy€§ò Ï “z}V‰£GQ€ÇÒçõ¸$l6XŸ`$8Ÿk›Ì~®,}7¢ÀL¶~Ÿ©ªb>qóLŸÌìžç¡ø®îJ€Ç¸ “¿‘Yï{K¤òÖ©Kî6¯¦7èe®¯)÷š*g£,©)(óÊØ¬,ó"Ü83°Œ-€„š:W#àÞE6¼‹' Q ®Š¶ˆÎÇ€*V(¬zâ~ЀÖzÇIæ~€Aú‘úˆæG)î| € üþhBŸ°¨¤Pƒ€€à€H  ¿€Á #ýðû{<àA`ÄVÏ ˆøøs?_oíüÿ}?€o×»åòû}¿ñ #åêÕ:ÚÁz<&𠂀ϧøJ@/÷óðüAP(€€@gÛéðúÚAð 0üz>ÀÇèJ¿ìÖ@â‹€và4äÿ='@‡ÛôŽÆ€€±hžØào÷îN~X!@€x~ÀÀ;Ùë;"öø( Kq·B±÷¼ñŠ´?"`wËÿNm€Ýþ}W3ðžíén|ά ÚÀ/×ÄêŽ?€øgß· „Gñúx« c0µŸèáþ>‰úžÏ .€ ø”5ŸÀ€§èÜ~€-£èzŸGÉìë€H ‘þƒ0Gìd( ±ž +8Ǽ(§Š1þàr´ÉæŸË{æ0À*&® ðÑŸIëå !‡ÓD>€9ù1 Rº´GÈ€èžÇ¸æ¿QœvÌ1§ˆ'€G¨€ààž‹1õ!* á28 œn¡ÀuŸ§RÊyœçÙ‚q†!ê|G”RŸ@Ó§À2Ð|IÔv± ®À}€!øÖ(íbˆ¡(R ±µìf„B¶$²¶ÄL}̉à ÄQ€"€ Ÿ < ]Q˜(Ÿ§ÊJ ø~‡ôr|€1擆 )òƒàP^Áp(µŠNÀÔ‘Êìç/ñÈCŸ‡cºw°t,òUÙü”Ý”h ×GÝt}"gê Ú> óóU G­„l)Œ©þÝÌç¼l‚1® ~¯Éø|ÀOfDy•*"¡`‚ÒØ€éò­Ÿ@(UkÚƒ7gñö¯ ô|Û Rí|z!I𫵲ÔH8MÉKLü@9þ}±*>Ê‚¼ L-ƒ€‡šøz(àIû€Ì” ýämC¤´Fo’…!MU,>kržÛÆ-¨‡î¼°Ê‹F Ð«F~À 䟩àD³` Úž áê{Âó<ÅI7'Ú€¬°¨ŽÛډ츟'‘òÀÇíâ=Õȵ€@O}ºÒ¬«èŸº®j¹Å¢>ž†¾5žFîÝÁ 2 "à/¡êAòÞ@8 jʤ~‚þÇ8ó#Ч€xeÆA¼g¦F Á ,D<…G1ˆyXt®»pG@h {`EvdTǸí38 ÀJ<è ,@ @$b’xͬ…‡Xd•ÉßY儹:Âî“Y!ñ@ 8ŠYJ9i"é_òÂc›Š@.f•¾GŒ> ¢¸"e ´„d an,$tÎ|͉qW-Ä·´@£MiýF¥ }—#„cˆ›Æ,m˜Ø£7¬Y#ûnµîœ)W%.DqF€7䱤_"$”¼=2’®OÀ~Å‘øáðœNª Ê·˜‡®Ò@1])Ô¥HsÁct&‰,/~@+YÃá½™ÑöGÜlH@õŒ0K ,~XÑ)»;(Y’G€eOÀ÷z¤˜Ÿ‘4ÀR…Œ€ô“ÂzþKd„GÌÁƒ°^ØHýœnÝ84äèGÉØ4`ÉÒþó|z€³¬iß°ÌŠ™áÔGšb#ÌaÜ8ÇXÛØr”†ð>Ljû¨£ôr#X ¹b-ÈÌ´&F¼I^²¿4fLùÇ¢Þt©«†8…G4fzIëÿ!f¼·!ó„X¤(@ãÐWç+hì (`(€Xø[ƒýAžš ÝêùÄ3¤é€0¡@x€i|p8A” €`&@X7`ü%‚`DômS!À_ß³m\¦v² —‰Z\¥íu¢BÇQþ «´¾4¡@h)@z¬×ì @ u>j µ^À( 6#ÈÉetº¬À Ý7¦VŽ@ ò0n‰—#%p¨Òê?h€;¿<©‘›#üôÌb€¹N’Ž;gÁ\&bP²üyW@Éx÷¼ÊŽÓtOHK²h–Óû‚NÊk,dØ“ÚTG¤Å€îZ@\Àsžd‹­™S1ú`@8€ 6˜é¢\Ñ)à#I59aè\Ñ€ Åø{Tl]ðúì1ǦqäbJRæk?d,®g¦¹Ÿû¬Ç y¾Xš®¼kÙ\cªœ¢3 YÅ·zêOaÁh(øÎ·´fæ€ 2i>c%ÛI0 «ý Ô¬vM‘Î=@ å@4 .  GðãÏ0gNƒ"D }©Ðp®‘Ò´@h ¤±¡”áà;€ . Äpr Gp g0s–„„ˆ]69's»ŒžyBãèx44HvÈÓ‚jà ÚãsÔÉø“+Ø~P‘ö<ÆÀëãˆoÁ†;à¿£Ìxñê:òqqi%ˆÆžÖî@4C!|òAºàÉkb4ËÉ:û„t1i4çõW+yÀ5-¬Ø¢Cjj9a5qlþœ0~Mbº3áåÌ"ß I'°hášâÜDwžà\upÀ¤€Tb&0òãD `P …G`NAè'çò2mÆ”B¢@ˆd^K@!AèáH >¡îc$„mbƒ €J†ÐÆÐ[¤¼'áêAðèc¸0Çâ5… k+ŽL†\( 9"ü/ïà"',(CÂJ‚#¼]¬\€@ÁîìB'€ ‚ÄÔKb†B$l &6‚Ì¢.n¾UN6 +HåÊ͇ìš,Îãú½²)ö!D°=*fäEÒ(Åt¡è;æ. -$®öñˆxÆDyM@i„èRH†Ð8ú3¨\kâ8@.('‚|c>6áæ.Pfüãúºï:ä…ÐTŠBR ,FСê&ÀàaèAö€„çžžOLãê D\ñR,L|œŒŒÅ G"Ψñ/‡Ä<.Þ+¤È.DlgB~ ÁÞhØP4k<4b:ÑAêÞ­;ìÌ~âtň+¤¤¸E¼€@öà$DŒÁâOÀ\@bl`R JTƒªt"'Cœ@FøWfÐNÎÈ LAœ‰˜-¤“âÄG&îu‚D“ãâqdjdà ¤ET'Ê((C&ò/¼ß`ÀíThjÖ ÃZ=ŒÐ#C¾!´/‚Ú:ÏpÛâÈo‰¨8þ1$Îyºã¼Lñ?ImÏš,Ã:º1ÄáIl=…\ob.]´€5ŒW$Kâþ]¢¼.¢Ê]k„q¤p!fø~-Ì18‘£k+¢š8ÇLf¢Èf2øš*žªBÆ]‚Êm¯Žf$Ò,êP,x"Ðf'~ ‚xÅãP8É’ é„LÃL( U3fB¥p]O¼:ÄfT„Þer]CXFf23 ª{|-IB+£ªæã¾O‚¼|B Ã¥&†1 >!ÞB‘Vßpf&é²-NFd(8Aæ\£š(ãØ D aÐA˜Á‚ÁâAæM4'£¼"Þâåry¨ñOÎtÃB‚ÂWd@Ž®+£F;$¬N" 'DHWmÎLÅ`Å``åÔÀ(0´"BÆâÐÍðÆFo°4b;ðôD¢Äjä¬b ›$."ÃP-ÅâKhâønë'd¤Å $@z@0à&€61$W"΃d¨P² ¿Æø]HˆÍ ;°‚t&'´+†¼Åc‚L‹®[² †(3"PaôDP¥È‰þJ„*ã&‚]€"+ .›áØaë?Êffâ¸"ïÌm`$@L0'ó2aØo^h‘r6"r¡Ð,£n†‚¼lV±„á=B'p4AðÊBNÃL˜HØD‘rº 3n¡ðeì$ãF]„|fãFÂÊ!¤l§LK­Ô'è °>»ÍRú‘r®dÅwSÂ~âÓë„mEU.O$2“°>&²ã~Ft È[­Bg‚„±sJ·%ãBC$­oÞ]DêQaêF- 'aÒÁ솮Áî´ä%+«ÆA)¾'… qeÊ, ø/ƒ¥h‚÷L²jÅÔüÅÔBÂzeá*"AúøM.€$F0À?5DIâ2$ãè<ÝÏv5dâÞ¢!€[sÚ€À iƒESð@V \€j@VÀ Öh‚ð'â“Dr8N"&çLÁèÀ<â 0lx€=Ï4 !Fçìf£„8¶'q-Ǽ#Åt:£æhŽ!%T-5YcÇžärü¢l¸ Mö.B̺Æ\bäÙãä9‹„ßw7&àgˆˆï‚zD\»Ã©[¦¸!j0 ,3H!Ý%H)É<çŒUl²1FöŒ‚t(fVâ¦L˜æði%¾ãq øeØ-`[ÊÜ^"“¤â-C¾pIrŒÄdÆ¢Îfªmg€œnzø# 4İäïìaܺáàãš(¯j8ƒÀ'R6-ÆÐ¹"" …TƒP w:$¶•T0!`.% 6\ž¢„ÃFÚbzáBÊ?¢x-¯ni#¿o:x#¤h.#g¬p@FÁè$áê»ÃOîzš-/V€G€?  q0Á¾2¡Øº@ d¤!é6”ª«ƒŒWf蘃¤@BÞ0C#[†L¸GX¤„rJ#Ál$dgƒÚD ÄJäÒ{dÁê¸Pbqrà FÁÒ.¡ÝBç8äçô(;ÃÚ‚ån5ár‹Ûâ".D>GØô==îHO»ACj!aÐa ´à ÀzÀ0@2àJx,’74/ÅT›ëÔ¥Ø`èUDÓÒXª,5ÀAæ‚nƒ´FåSi!ûUY [§ÊBÆbÆtäžf¢ëGÃð7C¸¤Ù„Váèœwl‘ˆ|2r,hüºãØAæña ;™D*x :k& D RjRI3ÚÅæðÅ$ävpdLC*j¬„•Jè–(CÐB‚:ƒÀÇ$§aØdޤŤl-âã¨ßd8¤ ¹ŠTà㪇éTmºçpØ%SCbt#Ž'ÌäÆãjB&5„&>=ÈÛo®§”Èo°î€é  µäc+ æøM—øjfƲ¡#E΀¹L|‡€ÉÅÚB†r&ë›)Øb(fðàDC„b^EØTƒ.D´'Ä„J&꘢ö+×GÈÝ:)ÞtBºc!Сø¶”Â×IEÌr¡Ü<â(!Ñígˆ4„C\Ûõ˜ƒ•z‹ê«"h ú(!@€d@0Àräàn^ÁÞýWx0WF(#ÒWfD{¨`>!²þ!Ëq„FÇ–ÈJGY1ÆÀ.ãèN&@ˆ\ƒ¤,bŽ.Fª+FîÅîÈ!pb7Q¹DcbGÊœ±:W’ …nâ&÷c&# .ºš ‚È7fH”ÔV)ÂFc0åÂLt×9ŠdCÀG EçÒp­öEn òø"jé'B‚–Ã!"ÜöfwÀ5æÅ$.€ØD»#tGbâ‚ë=F‚#wÎ,”v?¤âÅ öaïz hh†€ü.fJƒk6áöwð[É;¥ç”c$sÇL˜‡5cPkÑö@Y…Yã¾$#²ÂRl½+„¬L†®›ñyÂŒŸ)[# 0b†0¢v“BÌw>.BŽ˜éŽ„ Å)ÃC†¦Aù y¶ÚåÆ7r&ô#bÛƒ«XaÞ¸ÊÁªÁn–èBæÚ,²ŽRÙc¸SÕ-åÒ(ÅÆ£¸˜Æ¼3£¦-ëª7¬qeˆXtš®B…p'§í­'ô-’€ÄW¨À· Æô ($Èx¬Y‹ê±5CŽZAâ2½h+©rmbÇcÖÇ€¦Àj`4`<¸O5Cú;ˆ‰Ã†j)b—a*ջxEÈÂ8”ÞK[„N"¶!Pu$ÕP´$R™À;ÚD§–I0(ºwáõ…fˆ0À,0ÕMDc¹‡eä0n$jçn=­È>„¨-£ãt`(m`* ×Þ¬æ¾Lç¼®‡ìˆ¼ˆDœRL„ÔQ£ÖAãçd2GB:ÇL+ñ-ü´NîV`À.h!Ü“ðÌXã‚zÑ;!ø'Ã8,œ1HT¦áÌgAÛ&:MÂÆ(ý׃ÚV$\¡ä-äz4yŽQi:ªxEc°j¢è'ˆæ˜GxáÐFÁÜnãcBz·®ÌÎçDb.I„ZбC j/†J†ï{M¨Å8Ã(ˆ‰T¢Î =ÃY8lë*‚JaÖáõeÀ£N5&`¨ˆ¡Ó^B(X ëgHA–È4þB0S2!ý¨o±UÁ ÅÚI¢R  j , pAàx7ÙÇNÞ- ø˜âŒ?ªæV ÀB! Ån"vfKf«.]bÿ €©Žc+H± ¤ ƒ.£&0¢Ö-ÃhQbÈLG°FÔ-# WûÙþ{¾ŸÀWËø? €òý}>ß` D Žð3ýèù¿¡o×àü~€@`p 53—ûôý`Ð ú}?Àï÷ø&úåo #íü}Ÿr÷õg`Ãð-CÀq*E[-¢Ÿ 'ÃìW¬à "ô¥<%ïZ Î5,¾éà¬ü¬â;ô~?¡‘P5xYhôP£( 'ý:€ý2wãü WB@'ë¬ÿw>@/w¸ íŽ?ŸTÍ(Opž>¥@]uý}¾Œîô 8À`­†ô>Þ¯÷ãÞðÍ׻˃ên‚ @3Ü~: *¨¶§è ¢°AðŸ $€§ÒL~Ç‘üTlhGa¦vOHçû^ìú\HJÀ­, ê~‡³Î;-8 @:ËltvÒ€@` ”1Gúp´l#°ž£'ñúÕ!ò\Jœ1JúuŸçÚ*~ ø™m‚y·HZÄ­Ë ¸¯Çéö˜'ÊÛ ›¥ë˜¦€K†ŸÀS…Ÿç4x$ ~‚ÁL †À¡ú§È€ t¡I`y³©ÁôÓ½‡ÈÕÂÔˆ˜3ê²ÄK2LV‰«é뺀à|€ 8yŸ§ñç`ÎKÏRàSJ{(UÝPõUªPªsÑúñ§³ª}'š¨žµSÕPÌAò~€:Σªi¸«ªqì.` ´(O!ïJž‰òŠÌšžz€GãÌHÏ:X}'8"fèÌtVÉ€Q»®{"Ǩ 2@XžÉ)ô{¤Ê‚ªœ¬ŠSÞ¤3í\€}¨àZÊA§™î}žðTx‰¯‰b`¼A•«IT<Òúʲ])ÃÀƒŸ'Ä"™ë½Vĸ|@(Ä€õ1Èö»«`ý± +¥5I„ÀzÁ EIø|žË©ð™À`T!l³zág¦ÂÅ€bY¬J Ìn'Û‹‘x ,Giê|Lj ¦ ˜"~ž¨~œg°€€€ P8$A@ ?_‘” AP`8ý…€oç£éîðx€ÅPdh6½$ +éÖü¿_Ï×Óéüþ|½ÞÀ*ÿƒÞïF …èË ÃA`§ˆL ÄÑŠ0†ÃÀ/÷ÄAò…¿ß—àúo¹ÓüW€î/÷È r´¾@K°ûbCq0ÚÎâÏgóÙî}®õpCõþþ€Ÿo‹£éøýóÀ€ô¾À/à5 ?"ïüø þ]« 8kíý~ÌD@@,\G‚ýc`&%é¡|>àwËòàf¡v€iñ¦|?Ÿq›þŒ¶àt÷ÞgŸ6÷ׯv°4 ;<†€‡â6}¢ Iòí¡k{|ÌA ô·í™ú€® Ãñø¾€'ÒÈ`HØžà;Ôï'@JÚ{¶'ÂjŸ'Ø}ŸGªÆüˆ €n‹— 9‰Áú~¸À+~@P`D<|§lú|´ëiý'gà·5ˆˆ߀€*Ư/pÛ~º NZ~ÂG«.~ç©òYù€fæù x™'±ø'«Ü+t@ 0iáô¤NCE»¨rÉKÒ|·ÇÚ" ÁöµË2 °8)Ãg³Ìú €0©ÿ+Èë0'Ž3öÔÔ »™%·õSx±º*Bó2Çà4÷G[>ê ìÔ˜Íà@~Ó–»‚Рçkˆ(‚§øŠ‚ ÐRÀzü~€Àið¹®dàŸS5^!­ûÞléü¸Ö¨´§²ä{-KЀґúÖQè;p'ñþyË`1óò<Ÿ‹ %¤g‹y€ÆP]8/ @»L`ò­Ÿp–,¶Ÿ§ÂÖÁ iÒ"‡Çí…°~.gâÚ‰¶1S¸Úe@~«ëNþs@s˜GÃ.Ä@,>Ú°ìì‘¿ fÞ® €G™ðz;-/ä6Å®µÈç»Ô¼·Ð“fÐ0â|¾€€à{âž/Çæ¸Tà!ê}îҫбºï(ó+rèâÔyå¥íÍdFËiЀçÁ߆I¢‰ûQjŸÀ`@•k®rÐÌ€:–|Ÿ'´·¯Îªäß"~»gʰ~5@ôèK(J}» ï¥làž§aî|G  HãvÔp9© D- X ÌG€P‹™ FÚè ;ÀLˆr‚;Ç `¬fAˆúàô±Ú`‹SŠc£ü{”'j=“1r@8zQ–€Ð%ÈñÜÙº.É'žÀÈ8û]@æ„XÙ²@4Í(ãt,¾ˆ¹š7í—Ã~p ¹o,` "oÇÒ×6…ØÙ4ƒ> ”`DP Gº×JÌÏ;Õ8ð? 4ºâÀ>S€ú"-TÓ4>Ma‚L¥d–¦ì?±hT¿&¤”Wz*,†ýw´ßS0 2,uñ((ª§É ÀÛ´RˆwKP÷g$™'šÄœy\1à4Š=$tTCˆ¨WŒ>Ž©¸8e¸9b®TY;*ñԻĂ˜áÎ)¿•t’å¼x¹Bèq ÜË-É}à˜äQ‡›– ²œƒâ=F—åêUË{f&H˜ÈÎ` pý9ë ð2’¤éFr8ÀøÅÀîcѨ2Çh¿]àA€ ‰ @§\'e{މ.+a—2²õR õo€ÐœtÝ@Ò;TÈm#›àøÉñr7Žº2ϳQBài Hí ÓââÒ¸!æðµ–â±N#nC`áðXÇÊZÔ†úXËÉ)Í3-`=Έ[Cð'ƒ0Áx`D² > ¨Dà$ü£CÑ#Æ5°£0¤H_v.4Ï")õ^ÒÁ 4èàÌ¢ŒÎUŠIˆJœ‰€ ™ÄåyÇ Þƒà @wÁ¬TëÑXÓÀúÉJ«Yv´dp=Yë[44HÓ—!øŒU/( ®Ëv<‰ðò+ï¼€âr_KQÅ9dá¤K¢p˜º!ËÅÅH©d“2§.já€A⌇’XN =2›ò°P “`=8ÂüvÌHGäEGý4 ÃÅKeðëвò’º4:†y´•Mpáë/ 9"žB¸'D5öĬétý‹Lô{ >åVH8†x¸¹´>Z°"ÀÃíhÑš6M 7ýà<ãIC¡nˆõÜ3n?G¸ê'£žâåúÀeßLÍ}ŽV;àl Ïìðtr°@4K0 XÍ ö#İb à5à¬yt͹HxÏ¡‹6!æQYÇ1 6Œð8;F°K`HŽ 11è’ì:1 „—|n)ð7ÌFX9’ÁpÒ¢£' ¼XÎÍ‘¨elŒ7“°ËÉ~!ëéb¬4>9ÝKÇÆUS_—’c^34⇣²$AÔL‡a¶@tfYF_çHp=ž÷Lœ¥ÜÓ5v/¨U˜v‘‘wÚKà,ç=è £ÀyAúŽ“$hdŒÒær…ëû'\€¶E–%¢XIÎp„Bv©å¨_DZÞ=ǨôFµØÆ#Ý)ë5Êp&T?€[!] zÓL<¥‘jªí˜¸ãBP•y#¡¶ ºÑ¼ðFзˆ¤gÏLŸq”z(¡õ¬7à÷"çÞ!²Ô‚œi75€Ñ Ò Ò‘5£à¡µBv-ÇPc,u'áÒ @+sbÄ8‘Ï"z®qäID8œšÊj]6Ã0m¹ÅŠ1»_^fŒ!SrR³"E¹‹ä1³ˆY87eø¹¡âÔOÈyV%dÖ#u@DÏ*VJDõ’ù±âO6d]W¹bMñ°!ˆõHðrRX- Ì‚ ˆÇÙ—Jõö€"yG]–æS’°ÆÌn–½.5DbmÔ´"Œ$jž»e–Qã>TcÎ'‡òÞΖ­ƒ"-fÜ=À ÆÀã~"væ”(Â|7)œý#x4Bü]â¦à é$ þÁ!ä2âziCúaŽ6 SÃŒ^†S‚ø4|_£b(‚\$hmd¨5â>¸£D=¦4¤Î\æ0ì°I¢üîB€|IÆe®Hc˜SÅf9ˆ$FffÎä`=À4®m­ö9‚Ê=ch9€ Œà ø£~/£–3 Ž—aÿD¶4"âLª†6ж9ƒh”ö=)œ4ŠþHâ6@ÉUL¦4 'b9ÅŽ]aè`Æð§ 10'kŠÌCR,åê7ââÜÌÐfÖ8„6ô°6¢r.ÅØ0MxÄêK¾!-°¦´EØ*Îhá‰fŸçBèÏq Ï úÏ"ìM¢î)hˆz@ÌpáìlAÞÀlÒp X E°Œ¨?#L(d©ã´=Ãxaô˜JLÂxà €:ða¦µC|@­d÷Ã~_#ð>æ,lC» Œ»£ xØ1ƒ‚ÖÑ0 ãʨqd7‡Ö`Ê @"ä"pæ,SÃfZ"" 2=Æ'àÀPî'0ÀKGÄ:$Ž4hâÐÍÀ£¨;cn6aøžèXbÆã ƒp-` ‡¬dV4£xrÿ@ ¤@!ØÀ2Æö@‚¾4""cR4 iJ¸ih²Càë,@D"#ü:‰ ¥€(4ÒåÁÚ7EbhŽiE”/Ð #` #ñd4ÁôQ áênétÛJ.‡#â60ÐBbü6ñ¾'ê2 À1"pm _€ÆQúâ7O]bz¨iŠ5C¤>&,8"é* ¦AîDâ–G ò-¨X3À®!l!þ¢ÌAÚe8˜âr:ƒ!gª:"ð9sÄzÃp}a#NZâÔ.ÏP!jñ«B!ä3óæÂåZö"Ëm¢!$=Ãt¬¯dMp-I*d ‚À¶²Æaü5„ ,žöF„Æ,.uÀH †!À.` à: @fàĈIqZâ.4Šâf£8B8é 7Å”¥Âfêžå’èBT8Ÿ¤pÍöPB@4 IxÀ§ŠÀ}F 2Â)’ÜÆPçf#ÈzÓäVj4c€P‚•Eª#L6Aç>CG)t:( _ ë4cðI ô7'@ÊÎ`gÓGiJ~I‚¯Ú!©¨:+ÐŽt"} Dë†ÅF°G†.Ê 0ä’8†ö†gBv=$2Ž£¼;Ö5Dr'ªâ/È,fÒRä22J](‡œD*†ôâ*é&"C˜|e®Fê‚â2ÁèsbJî„.Gô>)”3íX3@"SD¬mÄpF|(ö»¯l!’c j#¶3ì°}Mv-¦Rÿ"&¨cˆ¢ òâÈêîä«bÈ…úAô€`.@^¥”Btæha‚ÏÊìA¯·ƒ.Ƕ6€"$(7Áë!àÀf <ÀvaàÀt™¡ÐQÇ|÷D;K,îc>HZ€6Á¤ÅF@$À4">`$aè-L‹CˆDéÒ5£T,'Aøm½!@êOŸ(` E@+"®hb'ÏDŸMîRÔœ8e€+$žSbiC Œ ´qT€fðN¥Åð'å0-5:-´.p¯Cä6Sƒb.޾–edn„°:º0aBŒ,â-ã;'0Ì;Áî· '„4Câ3í²-J¤‰*£˜3ä,13H-#!ˆÓCƒ42aî±ãºD¢.¦¢CöK*%'&dɤ°FCne‚!VˆÒCÇÖÜÏÒ.íà¬mì­’ª¸¯.Òˆ#ƒ$‚0S†´ëæ4DâÞ-ðÎ7† P¦7*î„.ÈÎ7к+B!.†´8óHD<Œä¶}vj K,À% AXöÁ¢áء੠˜å^aBÖhÀ¹Ž,6fÜ¥ÂÐ4ÄŽ3Ïr!g|"VEˆ>B¾.%&[Š‹eVÉbhEzsà4Ò0bÑbäpîæ8äì|Â"úe®mÂüî‚!„B‰.GS ¾măSÂ2¶€àln T0 l`„aàaâF +Ã$¢I2cŒ–ƒb›ƒ>:‚~­Šâ]ÁêC`®hÎ!üÂèÊþâr ,paàxÎ*’(%ÂáÜ4FLG·v' Ä0MDL‡‚""ÚIÚëÊ$€;Ĥ,¢zLƒ'æìäL,àJàc`AìS¥o[E!ŠÞˆÂ¾0c@SÃA80SÐ@{€ nqòzAúa08"ï>""!48C|ëçÄÿ¤ti q‡¤*Œ„Ê®$í?ª $ÂL®4:[@^9VLÎås¢!”˜þ$x!fÄ èò`(5 0!ÑŒvѽuf’}§òZ¡óc^Ÿ¡øn5ÌFÿ´ë3Î,få<1$”:§¡S"šã})€{„¤kU´PÊâµ°!uµƒÂæ6wDiBÆqN Ø  l!N\“–/¡ÈAR7ñ£jsVJ,Ýù«z1'  Ùc©ÒCá߀\@X`b \hFAë€ItöRlxÛˤŸ¤ä­N`,ÃàÜ de%mö-C´D¤OIÒ/£´/µÔ03âÀ8ƒÀ—D,+äÎùÄ8¬$`è$.ÚÔ¨bs¥ª‹å¶6ä€ä¤C>°n;ÅtfD#œ¾"°.e|â"‚?oÈ;ÊdG*7Ƽ4,mh"£«^4âP£Üëù¢!Îf]jÞ,Ž"WeHG .ƒŒ'ÊÜ÷î_zŠØ!§ lÃ0]‹V:™r<4*2#F‚ó\åØÂ$Êfd0º=$¨=JÀ<©Ž”'€$/!îZÛÝQ&辩®(Ów3ÐB£$;Ä.ʆL¨b+n,tm¦sC¢tDž©â¼}Ü;ª6S *Œ ŽƒïQ…²=3âC¢1S×è0û^ (èAÐL¡Ú¡²O¨àã=%f§mC¹¼£e&/ŽãâsìyÈâêó‚ÞÆö#f6VcF¿-¦U£¨mô.EAp*žÓm¥ˆd6'Ì›%ôcÆì‚7×Y%‚b¯©‚Æ´TdާICøþ7îÀ :–®d & $nš!dd ^(ãZFÃäzGœq†”:pDµÊŽX#17·Â.b±Ä€™d¾4O>½L4æÍ)—¸Z¢Ò5 Î2ú2ÁåâÖâ°Hî #ÔiÁ*æ. Aêø£Z0Í’g)ú!ØÑgÊ °pUóˆ#ªób.ÂÊ47$°4%è+òè56…„+òBÝÇħ.ZïöFÅN8 lG£N´xH'=d‚§ÃxöŒnöÃÁôæTJTgçWƒÒG€v,ø-* §>†?*ð‹"5à*Âsaï!þ`f€:š¸@"ºÀbx5ŽD82IÎ=%bçšÁÚ 0=@h~rCN †JÂ0IÊØAIt/‚tHcZ7ãxM£¨0¬˜V.HÃ+"’¦”|ÅU Q®'Cðáêq²66â+ÄQ£p¹ä0îDaS @" >”5$n]çÐ C£j6ÓŒ?½Ä¾kªjÁ.rCIã4=B;¥þùQr6cŒ©üN°TºGŸãBš±~f” +ýò€À@ }€OW°ùïÐùúÿ€@à äþ{=_à0 ¿Þϧóåû+ŒJßÀ ¨þÅÁ 3äû•A_‘è~ˆB@@@ "÷“¾žñJ€ô|¾ÀP'à K~#@@ ü `7ãè?€Rð®/~^ç ‡ø(þ?€o8ƒÞÖ{€€OÇØ6~Æ€Ïð&B,}ÕÐð{ÑäÁy>šÍ—c9²î`»€ÇÃùþþ”Æ2TÇô²¢ýƒm7׸kñùkmŸà(=µ?ç³ÈP0À/Óýäù‹\¡]WýÄåó}‡ûê~ûšhe1xLR´ÿÈ€0Püøä¨‰ø~€©Éøè#®;’Œª Úî˸ð€¸àü€À8ºÈ* ¡ˆ)« 4àx yžÀaøzÏËÊŸ/Áöþ%(#IÑìП0¢„µ!˒Ω@ }ŸGâ&€¬È€ Sªy§çyìñžÇà¡€`}¢`)ð§C` œŸæ}€'Ä^ËŠt¦$hËh~ê„Ú²˜!ÐGäîM€LÌð0*yŸÇ` yžT;jP¨¿‚Œ‘à~žg©ú|¡:¢ŸŸ®+’< Bx|%§èŸÇ£’¬Ÿà[ì—Ÿ4Â4{Ÿ§Ô€|?ŠsÝŸgë6ºËا ’,ñí«-ÑþŸÇÛ¡7ŸËZ¨[“ €C ŒÀ×h„¤h@¯€GÁîû7Ï;|Ù6ö{ɇÚâ ¯+p:5F6|¶¹à½¬ J‚}T'±î=ñ„/gâã"»iÒî˹øv£‡iî× Éš xuY€ @þ„@Àÿ…€@/Çüþ…€@( ƒAï°8Pÿ{¾ž¯ˆT4Æãá“Ä"?½Ý/çÓö&ú{¿ß·Óåüý}Qã[áêÎ;Z¡Ðàt„€¸¨ þ}¿ß±PŸ‡ÛÕöü³04HÿÆß ð'z€Ÿ¯—è(PçûîxàŸÀ æ  —öL@(`P0 ð[ß ûFÒñx05¼ …ÊgÀ È~BßšP˜'‘|€€zð"6{¿o÷ó²ƒ]÷Xè{õùØÐ€t  Cñúû{€°à"+yÊð`(½Á Wìñú{ŸÇ⎇Ø+àNÌ€À §âú~ ÉæŸç©î¿.pz¢ç°´Èø }Ÿ§sy1@*ÂÒ!€zПçÀ €J.°7P*.àè€H €GÑΡñ ŒH†Ô#«2ôŸÀ9öÍ(€@Rå€ J{`ò€¨03¯ëÒ‚  "çˆ }’È {€`#øÃœpêËà|ç¢*~±<¤sŒÆxf™àTÎùèè¹ !ü®CàpzÐyð}gÒ¼€qô·ÇÇò0ű3` Q;è1þ¡¯Úª¶UmÌpÄ¢Pâ«Ó );íIö|)šî1öú>àr<»Ëð´ð£¢‡ó²þ½N\€Â Ï]D‹°€£2²0¨€m@N Œa°&3( ލiøžçóiŸ§Ãä  6‡, $„çì³=W7˸ Ç£°a‡¡í?Ÿ2’ìFÀ(.>L°ËÔ ¢î uBALR.ªÝçË}§Ø 1À%%'ÛfÆŸ§è+ä‹¡ P-›8ß0¹Zx@ ôêú̲0G‘ø{O§ÌÀ¹¤ð †¤àÔòùüÉôyÚ‡ÛnÈ€@Z-]žÜ=VzB@ÙË,1Cȯ#xƒPqð¶'‡’|~R¬RÊ}€`lÀÈǹìǬž­&ùܧÊò¼$à ü|6{`ð{(G·”þѼe¯#•†Ïáú¼â:R‡6€ñ!ÄyUtí"Wqp{û`EìÙ >P»ž­9ðy2g´b²,Ô=ô0 %ŠFFe  B0CøÄ,Âb*çO u6dGHu‘±Ô»9"$„˜ƒa˺ê"Ä Š¢0‚Hãô’Ÿ!îz˜ð€˜ ( Áè4ÀD €!ò:Jë1ª¬¤7Bª€blʬ¨á¬GÈô(s“6>’ë–5 ´¯ð€9I:$9`uúaŽkÇPQ‹‘VØŸ™þG'x³Ç,¹Pø÷äx÷·,ÐÈ¡G =à”SDØ‘F}ÆÌ›ð¤àÀ0S0Ž8 d‚2 @ŠÔ1@=qòGËtÎÈÑ>à‚–$嘀t0­€ó5š€"ø`–‰'´øzµ+Ò’¶4ó©’w3. œ×@a@ê‹ö¯À%­Ô‡…›ŠªÆF¤¢åwMá¿$ÝÓqäQÓ°é¨ÃQ¤O $ y±Ø=+ à+ã"ÎcGF"„šml4=6ÅÊY„ÐpÏXc É)Š%#ØyC P A@`â!r¾:K(E±Ž©úNˆš2p£L ¸Ǹñàr"pÖ…,¥À©(y””eEÏ(Z¯×éF"h>>–Rm€ i% ¦A7Â6ÅGøñ2ƒÉµ™R4]Õc^>HÝ‘²6³¹=1¸§b\„er¿X"¿¡ôÚÐ)¥*À @ Û#…ã?€Aè<ÞI=sË0¥Öp˜‡àô?¨‰*V³rF“[70·½ô³Áú\Øé`y„øƒmÔp?e üDu»'²4WÏ!He|5´CH²²\ìtÔS”Ÿ›•0@,­!êÇe÷M 9X€â¸€r„MƒØ{!ˆŒ‡çi¼ŒAaúôGðDÉ4*—À>pÒÊC~p@( i@5 #˜ZI9ÀÑ6•¶z© Z <}Ÿp ;Õøòr,Ü|™žU¡øvAþý©nd®NWh^1¢$VÅÐVͽ  ˆ$ã8q¦Ø]")Hßé:à?£Îj&ªÍ+Âò`åbƒRYæFÃJàÆB.j.rÃS#ÒZ‡Ög€{g;ͪ3íº," båvkÊ2@$B¬¤FâÆ·aôChL«Eí Ãúm`²‚˜KäF@„\ âª(ÂúWç„Z†:õg@5 T–$¶?Èh€Wlvå#‚\ä¶Ä¸0c8¿&L˜Î1"æå"Ćëb5ÌHL ¿æªºÃ ‚6…¢6(¦:-¢ê€æÈ¢8$ÆäáôÂ&· §r‚(_²‘tIáø…!CØÓhDÓ‚2! „ ñ$ƒ ¶¤É:Ù$X `À2`nò€~¡øƒï°=C&j'ôb(nJBòò´aæ@,Ú@@43e$åYÅ$B.¹"#P!¢„0B|=jÖCƒúr M­À0DÊ(^•(Câ&"à‚ŽtÁøB)rÛÈã '”b1dÛ¢.4Âg‚à§„$ÇcrÅ*#DŸ†G$ì,åž4QŒpJÝ#"? Øž¡þlyÅ\ÿ¤¶£z£2ŽfOVÉDÊ,àÂ,"‚¿C¨ÀÎ.g+f9@’f2f@¥PG+Låf ä’­… ûî/‚r}iŒ.("c KCÚ9¡ô ô飼=Bî9(’M¨AÅ~TEä"D*%”l!æ-dúm§¶»Üq‚¾ulƒj¸3 &vŽaÚáÔãáöSío~àBr¿oàe`UÂø3"Î9, <€&.`D³(£,7hìéï¤jº#Œd¥àü ‚jáæ¨ÁæÀ&!f !¸è!Ý%À,s.ó‚=/º$‚Ì4‚ÄBC< änäÒŒà  2$ @ƒ `$!òHÁöO”„À3ê¤2í¦¢¡Ì¨,¢<"ª.a H…ú’À+6d=G,”ˆ> U‚úFð´xDÞAäKÄ+ÁòvB6bJBè@\¤åK»@ INP‚(?±z=dÎÎî¾L”!ƒ¾Û¤Zm.b$/#K5º8f‘ïÒAçœiàí%ž7G;'ØEÄj?+IJ.¨TAB’z &Ä¡è@r‹úWÕޤ¸1Ü~¡úäÚ.CœLP+Î7JÚ@GPMB&.ÖíªN! (7À&u£¼¡ Îä£:Uõ¤M‚4V §Š›ãú­¤Ø_¥$}‡ j*dޱ 1I>¯Å 1À rŒØiGÜ9l ëN$c–rÂÎ=C‚Äd6%*?"2c”Sµ7ƒ²}Âã&cÿ `n@МFAöuÃ:C„’¡Ô1ÈB!&»VÅ|ÔB !¥°…¢#eÔʃJ`\I3+ÁàPRàPP@h*#j:Hà-ƒä%KÎåο«þ¬¡ä .!âÀ€,k)dG'’2"èG0ÐßÅ+h% LlJ`@¨×-üPC"èFºÛ±ð]â1"1:Vâz]LÌ ERj,”2†x@õI=„r#BÆ ã }eo‡EB…£Ö@`!LªØäCxCðPÖR¶j§‚YHÀVkl. ž¯ :†ÒNä€ÂNÂ’¼,D\­§¶r¯"e”‰5XK(fC~(ã@6.†`ËL²ÝÃÚ!‡ 3çX$ê=âðŸÁwCj?‰Máüz#*šUæu„´(`à/°PyP¶u ö,æt}ÂÆFæo7áôÌ/(HZHB|1BAH(‡P<ŘY,–!d„1£ ?£Pƒƒ1Ã(§ðbA¬dAÅÔ9XŽR£ÖUŠ3~°{)”ŸÃMBŒbbaê’ Âtc*aõÌãœæÒHÌÌ¿/ fÖmbö8$½Éè}ÇX°ê,  z â丅ëô¯Œ*Ó˜KÄÁÚÁð»6>Z€:LÁÜ9Aê¡úøú‡CRtBĉdìƒH²,À®FRFD¨À»Ä/«Ü9Òø WçkÏ0ˆÁ:4À/°¤iÃ>2̾#MªÊ…È'‘¡D$†æJC$Ä@FzFÄn­ÅA¥(FÂÀCl@FPR ¼G)°=£Ö \äÁ:Ä0£/)¥\4*´9×¼,dÖ9c¾nÐdÃÒ@ LB.THn<ä,ÄÀääÔMl¿-føèb0Ú¥[ƒ*..f˜b&y |#ö17ìU¡þEl?€I'™Yw†7CuŽ6Ì+P0¶øbµž#Aá eÊtÅúŒñxd¤<ã«C-aòø.æ¯7êÛ[Ó£6P,”1SÚKeôÜ…gVel­Šþ,fÐ5Ì.š3ë?ö¥âïs¬9ÁäåAú–B$güf` ƒ_®#“báè9dD/ÅÕ"©\JQðWbÈŠ$ACúdcQ©d-ébR–à"A@ÃaêâŽ'¡Þ^²„rÔ»!¨ú]…Ô…"#£JÒ€"9´|Q°¶ t@` *àxê ŠòƉ¢…Zµ"Ö×–øKÒ 8!²©Aæ  ,…øy¤Ïš7ƒBUÄ3¶Y«ƒE¢ê*¦¢u‰—¡äH‘H(¬´£"9 ŠÀ.êØû0XÈG"­£”Q‚ÖyCÜ#ÌdwÂz…ï<…o•H­ƒ8L³®;Ã’x€Md/a‚’(Ä»ByzÎ<$ìMpÈK_ÄF(.šìÜi¯:ÐÊšÒnbÐHÆvkÄg)dPÜãHA2‚ˆÂìP)úb£‚LÐHEÎÆîs¬B/ FóÈ@°€,"O$Å]CN´Ç„<â,"ä h¼¨ù¿r°(?¦À°€Â/×ëÅù!G€ ( ‚à˺pó‘OÇð5úÿ?l5 øù?© Wóþ ž€«íþöÑÀ0 ziÀ xµ¼áïpöìÿDÀ10(8ÜOwóöv€j3¹@߬/Ë“û8}f@'ÖøýÚh€2‡ÀúŸÇ¨—ä½úúQ#WŒÍJ£¿Àð+ €žôGÓë–ÿ g¼ðn0 €À´p6yòùxßyhí@~è@àc,²‹àíç3‡ÒÞìh˜¼À+∣€Ö/`ðÞŸ-Qð„<*RèϧÀ ¼ª€)úyê|ç±ìÙ/,œëŸÀ$àB ¶'Ùü·Ç’ÐuŸ§Ûš|Ÿm{ éòÁÀP%»‹ 8Ù(ò›ï(>qp‹´ˆøðŸg°%gû&{êˆï¯jÂ}GÛÈ-;¸žçø|ÇŠ”z9à:<£ÀS˜5Œ€z@%=gzØ­-`d51Ñè¾,¢‰(7{&@Oxy¢G±ë K`mChœ± 9üÀΫzLŸÄ çJóP Æ "@ŽÀKúþºìE£€GÁôZ®ú.IáþÉ@!öz€‡åI®€Zþ¹n‰ù Ÿ‘iúÜÄŒš”rMq -ˆëNðà³È‡(Yä6ŽsTž6ˆôê©€4¢*N$ë.€Ê¨¿¾éø{]'ÉðzéùêËǨ Ÿö|žJhŽ£Š9õ:¯¯³êNzç%³` $Â-(æ£z˜©r= &í8`€*bÏY8 Š,+œ§•ë£@ò5yÙÀfå²€'ÁìÛm@<™3+Zn~F×ZüûÙÀEê«9Gè(‚zàø'Ñòuç'1Þèà,/x@©ø€€€ P8ÿ‚B`` ¾áX€ ‚ ÀpAú Ä—£Åäþ …áq ôfòÀ§kùö?ï—ãñò÷x€/7ëô_Oæ˜uàÝ >ž! [2 ¾Àà0(ÿEWßÀ7ûüÿ?gð õ } ÏÈuèü€a€ ;ôÁ çãùèú¡? 7óÝýFÒ#@gø 8}>ŸóhH?_ÀŶ- >À¯ÚÓð t®¿_/Ðê$‚p+ùýt>_OÐ , 嬛=ÒÔã±+e” e‡€²–—ãíöý¼@@€p÷}Nüð0 >=·ø"¼ _i½˜÷ŸÇÒ,º€0à`|‡¹ö{ˆp£¸.)òŸ +Øø!  ‹,§Ú,ƒ/ˆh‰6Šú¹ #z>ùò„)n²¾ä1€±Ã,؇³çðäžðÉö|-Mòn~,Øï€@jÌkP«}$jøGÙÜ~Ç£ í|Éà Ÿqqô×'ð~5 ;^Ü 7àL¦ê\ê|¬k{|{ î{€`!üèÉÀÏ`3hE§‘ø|ÇÙèä­š¾ø`¢°AGÙàž§  z€GÀŸ@ðƒ ý ʳh \`pÁPaôž;ë¢!A,Ž‚8€|°v€¡á€lˆ¿À,ôgàÊF@ãk¶®3*Éüy¡‡»HP/ûòûR ZÇ-o°€gC4t³ #.Á5õ&Î}Ÿ4±_o±ÿ/·±þ}XrÂÎí! {?ëjÂ|Ÿyclˆ5ô œÑh @m­eG Pšs î,C’Ñ× BÂûL,{Fî¦Ì+Ù¢f¸qú°­ÇÙîžè` ¿3ÏÛSá膔ø8LÉö̳ÕîX2'‘÷¯ªÇ›¨àm&,'‰û6—Áöå´móó«Ï 35Š[ïÊšÒQ%pÛbgàŸçà_[gñÞÆ1˜ ïE  Øo2ó*MaàßRà,¥X®êä 6n£-õ¨«s™ãp Ïr­ ^~,à {–tlkâôµ1š¸Ìv€”iû «˜ýz~-ô‹?›€.ƒ>~žÇ°{žµ²|ʬ“ÓDÏçþøž œÇÀíÃàsà‹ )Ü ?°êŠØ…ògHk† dYA1bÔfÍ,­ð$€ö Q1ð<‡xó¤À. AØ3`L™È Z”Ðø§|{ªÁc=æØj¡æ6œà8tö=ÑE8ƒðU¾?ˆC’!¦Å@B0gˆ€ý3F±[·3‚°Ï(Fˆ|VTXÍYyÇ䇑d`b ÷+Ìh›"ó)Íé«,ä}^Ó2[T2·(Ò$€Â,Éàõ'£åp›DGÎø{ãÝ “s zÌ©£:é4À0²mRlÔÁ+¡ècZÛ _!0™áüÍÕ¼©SG°¼¶jØ1F—ÀAœ€?Ie m,•äNîÊ÷Tðµ ’ºW­Ìµ£ð‡â¤«}jBÊ?':‘(äõç)3"[É›¸wHy”Ã? àw§$9ˆ¼{Üb¸>y;–¶€Žÿ+, NÐyE=¯a…!£ZLËWY¥„¸–£Tj×.ˆå̯‚ÄÀi¬xFxö Qû-Çü1/)°ž$ì^r¸@àzÊ4dM©È5È{€ÖåxùA‰ |ÃþqÊ2šêM€S^JY|0e)#ö<ȉ¯dt}&’ÕÇ´ÝÅçâÖ€\>À!€ Àpõ€HÇà=˜ }Řæ&bÍ¡ˆäçÁqˆÑkE«„•€Ñr}AѼWǾZÒÁrQæUº–¼Z pl”œKú}R€; Væ%ARb„=@ò'%ŒžÇƒ*îŒùï1‹™r€˜QBk­ !½˜yÐV«,ž—‚ÔOGú=§@â¨$°ˆ¬q¾A Tʇ] aK‹… ÈÍÖ´Ë áN§š>©“‰e*NŒT®N”4m]¨ú›¨a‹'U`BЕñ6Báú½ŸBø"ñ«‘ ¤lÙ–/Š\ÛG³¸>J6:‘6æK@Æñ›3ð SˆíRmýKÃâ$ºÌ)Ån­ÖΞÃq¹MY›-ÈüÙöA_¨ - ±Š?õŽ@X <ÙÌcÎÌ@%U[·¿‘¹OAÞ8Ž Þö?•KÃé·&õ:—“ÞNH6,ƒß¥€$ž‘Ëw°àîÑóÒLKМ^™˜L ¤+u}g@ÓDôp€aì:@AÜ­Ì›ØÀjGŽŒm:ÀòpÝgæv¨Âýó>)\L"x2…F ¨/*Ь@"»ïÒSêQÅlÝKbW*®!Å"6ƒzPƒX7ÈÔ-pfæ«e@$ØOGGœC-r/DØK¬¶ÙaúJDd³¡ô2èÔ4PŠV¨ü"À"(ærË„|R¯$vî!Úì-£Ü0å@ªDð-#ܹ§F’d~ u+2céÒpÇp!ƒº)ÆxôHŠ;Äæ=¾w膴… ³Àtdf7âÌ(ç°!ƒ6.§F@£þÊ¥–,iüR/ÚbcH/CÌÂ!êK3"¼4CFVâÈQÁþ§ž5q:2¦æ”â×bänf&R –(ò¥Ö ªgtÀ;ÇF!àöˆ*Ñ¢&Ñ‚&Œ"ô!‹rîÃHŒÈ1æˆ@à0 @£2l¨Ç^b@,‡j "FN¼ìÀíðò¢&Z?!äA ÁÒ0{ áÖàK@o^3„ê[ã-hK1äÂ’càǦ>IÀ/CBBp„C> Cš¥v®dN¯c ÷‚ð‹ÄCОjgÒ7ÁüVÇߢ¨2>Áí¢tb¨—ãXîñ”L ­ÒÈ"v@¢l~sjAèw.Z@äHL8e6E&zà),0#^$vå}ð8ê'Ф€aôCÜ´Ø\à  ^4DŽ}èÀGp–Aü0$ 7ò²„)’L(¡àc!Þ6±Àcdë.‡œ8GjN'†³¦nžÈa0¶B±H‹¯Jd¢ø7²„Ã…'ÈÜ3ˆÀ/¿£Î^Ä.$êåG¾Ñ‡pE¤-0æ³ãÄCD'dNNbÄ,ÇtOEÂ6Ã'Ã7‘:6­“bÊW$ð4C"ò£ºÌƒÆeÊNÄD‘:NÑzéºò‚éc(ª¶neä Vëž°áæ€Aè¬Nge¤É@ÔIKCV!ƒÀ<¤g!ø’ÀÆ?l.’xK˜£X¨£Œg¤¢/èAä¥èAâpïHå²M‹:à~3$Š7Å2R$š„ÍCâ›(À[aڀ껌gV̡ԘÂ(YñÂD‚& ‚,˜ðуhƒ`'€m@ ñHØúÀf`(`tÒ`áÌ|… E%nÀmgÆ_áè 6Á¨¤€,##,¯ƒzñ#DOCLÒ£÷E°PaDk#8o|Vã00Ä ÂÞ/(º-£V[ôH®'œ¸°µÕ<›äpwð5g³4‚ÝiuÒ{.Ze9_eæQ¡ô2”¤D2³Z·c"̲EšÞ“Ì+ulCSPq“24B*0§ÂEÇFÁGîRb*œc ;¬6"Èd‚lôb$g¶1/Ì'C7Å/"ÐE/ä0{4æ8kÜ0ÂÃB Å&-ÄçNaî<@  Æ®bè»-æjAÆÿ.Èð—âþ´¨À߸¢yMÐ`f #AæmmÔ-àSƒþÃ¥&/UNVèÀnb¾"ÒÚ;ÂO .²Tn¢îô&ò¸!¥RIŒ1é)¢¸gìÜ~ ÝrÕè} iÎï„6"fCÅEKÁæ1d¹&6êøCÌLÁì/ n Aä8 4EüP€J¢"Å þ¢Ð>tuâ8aä@IupÅÃ(@'Õùiv5,“3ǘGjŠ1¡Ø/)j¡…”ŒþÂXÄ™àƒ~õ¬CdXk@âì&Ål0èŽ"«ÔEÈ7[:Gjãg’@„±,äÆ4ú X7  §„Æ¢–Fc¼|ƒÀM‡F¼645Ùn¦æñ€ ¥ÄI AìÜf¥@/Ô6£Ö7ïž|‡R=`+£êPB$,'˜f²„Kn²ƒc@dB3ÒDì8'ø8‹^nb–eGýFjwC´1™8oáØP‡’kÃß#ÙF‹—’2¥"¼¢,2Ð 1¨†hÉ8P…|¨ ›Ÿ÷úEbò²…>3Äÿ@ÀcÐ/NšûâÃKâ,•ç2W¤`!¹‹™DN–z„NP¯™"ô?"ä4,“¿C Ná씜/Dì:ö4A IÈŽA¡ôe2R£p6O–Ábâ-Õ? ^/C“$el4"%$…–ãE£ˆÛæêEG¾!ʨø!Ř¹~bŽ7 rʆ×PDú-yÆXe8˜–ìR¤NXzhI‚ó8jzÄšIBDçÒC'¾@"º7ðœNô凾'„ ÐúÝ!ò]aú±44Ëó¤fæô±£¯('ýŸ+s'‚AâÖˆñ¨b¶kÓ=¢¾¤´& 4(JjâNáþaýÕúD\3à8˜Ç6àË!k&Ð!ÌèGä]¼ÈŽÜ­pS¶Ï&Dª•çr›$[çþh‡4dŽV¦Z)IñwDÂf¨¸ô©Î’£ùãB-o 6‚nPB ‹ÄN1Þ1In^†ì³H,Ëü*"ÐOœ¸z0­Ô¢„"Ò*à¥Gk®HÔ;óC¬¾äë(³ãŽA6ÚÆ¬“„\,Ã’QX8§3/KÂRGü?âxM¢zG:n"Ëм5¸to¸ø‚Ýã¹-Ê+Äê<äD¸„¾²q„šP£ìgø¢!âÔ:m6ª°n(uÁƲx-ƒyœ*‰ fX‚c2I$äwúø^J8çtœ‚=šôÉõ¸tà\uÕroð,e¾"²b@ªR/æZH»:9##0°¢ö nZÝ«‚]¡ß¦)DHCÄA®qÃfövÑVt/B Kp!CÈ )]ÜÛm–E³¡Þþ f†Àh€^`±šLbÛÁ)Pî²H§rCÃX»F*†ÓΧt"l_ŽËÍ{|¡ŽÂÐ@¤ü6ð´3©~PIq¥ä{´6BÞ7‡²/·ÐïXJ4+ÔWµ›CÂÆnò’,"$ÖÆªÇçØDæ†a„0)ê3%N£ìD¢Gç :8 0ð¿àÀËÙüø}o° -øƒàPh ü?ŸÀðþ?ßo Ñç À`xûùù'o×è#L¯IÓÝúÿ@€ òÒ' `(Dü}ŸÇø ÉŸïàD!ö“Áh³ þƒj8‹Ùø÷ -êýy=á°PTä ¾ÀÀÇãáò}>€àÐ@$½ßo—Ô‚KEž?Ÿà ž?ߓع'€•˜|)íE{³—ü¼¤€"Ù£÷NGß:7ͬÀ¥hÀ@0"p»Ö@7öä’¦ï›î>+ NÈ ëØ 'ëØúùÑü¯ß³êµ?°ªZ´¢¾MÛD­Ÿà £$ ÈÔ! p~€O@ |€ «ŸìП@(ØÄGÙø‰-HAh éNéày‡©ìyÇÈ w€1Ķ…+BŽ%à(&†žàkížmÙèÖ9 @ÀÀü|àjµ€gØÜ4- 1'ÍòJ~)gú·‡éøy€ )蘉0ŸCV@Jn§ÙôŸŠ|´ü}T#^Ѐª(À  ÆñÜ€§óŽËš’`AöwI ì­¾G¸@Ÿ B£€L\íD òy¹`ðìQöŸç™Þ„Nˆ ‚J§õ]Y©š¾}.Ùèˆ,`[,AÐËvª*í'‘2ÂÕŸÒñú@!ò’Ÿhh†­Àk¬ Gqú{žgéëGð §Â4ºÌè{Bß2ÐK4{!ÀR“¶È, }°xËÙn~$hQ÷À€0¿@ Yøû}€ß 7óð}@@0síøð~¿¥4€(»à`ýû\¾±/ÇôøQÀÏÐHø ^@ $¤ Á™gËèúR@ Pzþ~€¡ïëƒùö~?\ýÚý~2Àp&ޝ>ØÝ« óÔÁ@@öú¾ðowüÖð³ÑÁ˜È2kg¬@›`ë4 H‰ú{3‡ÉüÖ+¬jöàÈañ³@)ôz«ùðé@+>*:|"¯œ¢+´°›š{€ FAøyž§éêÎ@)þꀠ£ô 4ÇRu¬ ‚ÂÉ2 Ÿgòúˆ€Âü~8'è@ñÚÝ€`[Ú©2h~ŸdÆô kóv¸@(~-*S¹°nlÆ:@øãË+#$-  ˆŸ- 4gìr»€«», ÓZ¶žÀ  |Æw€À)æ¢Gáô‹9®“BÐ4ˆžÊ¸²sˆË©ó2Í‹‰ësn~ž‹9ïA€€ákh {$ò{gIüx‡™Ö|'i·€]`Î €à  8-R@sÖ/ô)ú~€ +`úÈ (ƒÀêy€Ó¨ÏC>å¯lM*‚Ö‰èŸ'Šzz$#º@ }«‹b¸ÎÓùêÈ òô‘Ÿà> þz@Lz'ç¥C *ìÒ˼4¨‰žò¹÷a<çñâ~eÀØ3€K:³Æ‡ñæ´0Í"Ÿ|¨y 8~ Z~{€±îmMŸꄞ¶ÕÜ™P«udóáŽS–¹Ï@Äšéú m˜°{6 j¼`0ÖgÝ¡ŠcÂÔÞŸK}L~z:"É®;v~S'ü–àà]îz2M«-èèe(®/Áôä§ÇÙòÝS 7„æ¹]rØm«bÁ¸^?SÒ²Ã>gáêËt¯ÑõAë +ŠWn@SŸ+ñïõ¶)á÷%ì¨ÚæŒÁ¹…L¿Y܆N0&€£¬ö(_æraþŽ `}" f‡1g@$œ‚áˆ~2D‡&â|EÈd$U§Ð ‹X,C¸|Ô<ø, ¨ ƒ@t ‡ çôv3$q‹Á™(ø¡»ô´Œ‡ÐÛ#ÄrQô9Àˆ `¶(Ób¾@ä-f\‰åNZNé£.`e¦äu«û Êð«¨gÐûǺî© ÇtÇ˲Á/¤1£„ÁÀ øR0TaòXt¥$¾Ù*ÇÒ¹—K°àdV nX(-JÇ’ì^Ëb^…¸«•ðŠ!:°¦XNN± 5%¸€¢Ö -E„<¢èäË£Å5‹%zb{H0ø n@!&Z Cìy#1è_Uh -î …'ƒô?!8¸œÁðf’¹k^…hÄ¡“neK˜ #’úKRq1T÷.ˆÀØcûØ*"G±â›–â\‘¿}DlÌ—ãŒ_ ™8:+¶Í"îAa"ˆÀý43n>¤IÆæpÈ%C ‡ “ë@G–ZAQYE¯ ‡æ?‡YÇ :¡òƒH0ƒÜ!Ê@`é.h5<#p^h “à<½Ç :Î">ÀLÈ4rào2»…{’aô<È‘\WÄNÃ>ðN/2ÌÆÔ€aêÿǵùD@ ÁXsm3ªfEèÒ>²ˆP‡Â.¾ ¸1CR=_|µ®a£€Ù°K#£TåŒö™ÃCvÑ-+«¥v¢£a»+ྦྷ HÈÈ Càš£ÚÉH¡œ!…wijFp¡¶'¸œ‘ìì€H  4¯°hÇq¹IŽ9Γ€=‹éÜ…¦ð¸uÚ"9zWpPʦôHà­iÄ.îüçŸØ9{ž^æ> €cl”J=£ôî7¸˜À@îIFÌ3üpN‰cÀwi6šp ñ™¡Ïˆi"ä #B˜I Œ©Í ÄY$\F€ À€?Q õ㼂`` À 0`Ø{ …1GJ÷7 9ö“å§MVcD†ø} À2<Ç㨠€q¼€` 6Ñ|ïºPkÍÈ xDM€iŠXXqÁ"D Fä8ÙJÇù¥.à,ˆ¥Dgœ|ƒŠ tœYXùÏ6)°áã räù¡ÍJøf@=ÇåÊ‘ü‚wS¡ÏŒZÒ‘;òYž †QRðõ'9Ê7ÉȇÚ:Y¤m –#”í:Ð ¢Hbĉ#a/š €0!tÐÅï£äïté Aa€+¡RR=rA¹‰°³@™H˜ùBÄ1ì,³8‡á8S‰ ’äž•1Í2æ¥E(©p8®‘’ïv@¢Ž’É,r¬A<¾zÜêRO˜²9Êpˆ2µm ºÂô^“q 1Z0<hñÈl͆e{ýš•CHKŸDo¦©z˜´Ž¡æ?GPçÃl¿Ð$?@A´ÉH€µžõº<Œ—#Rrκx¦L¶”™ÊO${©T®Ý’{ÎHò=՜܆CF²K¤,Z j_&èáÚáºÁÞá´An¢üèMM"þ€‚<¯¼ 6ràP] J  L ~Ȥt}$e …Zf!ꌛ§â-b’9#Œ"Š(ßÎ,»#d‰…¶n«T…àkŠ(ƒ.Bú1-ä~cÈ`$7¡ê'aâ}£(,&œ2ÌBIŽ´"£>DÞaì¡êE‡ÞÄbDâÈc‰Š_ ¤ÐZ"„tÀžAè/%", Ö'B"‚âÊ=O6,‰ÒƒL#%òH`uÃrTêä<£¼‘­(ljĘe Šæ,IBlÃ(4‰*mÄàx@ `£J䔇ínFd…N=ì~C‚ö€ Äî j# ^âÔ”KÞ/ãpnÄvcâŽ3ƒ‚3¯¼ jŒ{åL‘¤NA¦†4Ì&˜Baò‘* "i>2Æ>/# hã +à¯À âé¢òá‚ÖkæÌhDÖmfƒâ,Öâ%²T lV+â:] ¡ïaäáú b€ |mª ¼…î=‚zà¦ìå Ú0Îù¸aì ,AÐÀà.sN”EXR#@8BÖ¦8HÅ"Ö…’e‚zLbît¥ð(Ë +ä¢:ä0cX´Ãvôp IÇ 4 ›i¤I‡N:}"ºEÂüâJ‰¶}ªã>.Å""þb¡ uB ¤ç¸_8Ø)£FyÂJQ²ö-¨öÄB+áø›å8R¥IÃÜS:/#’5$Þ6" J„œ'«|3ãìÒƒF,g’÷£Žiƒ$T2Ât2Tü•åH¥œílÎBS9¸2ÆŽ9'JI„µ£*ã„ F¾!äÀÑZ˲F$ðêb”0NöZHò»#¢)\uHØ0:3©6Obôé"¥ VKc‚‚…òkpX!îI»!åòfN.ƒô4sä/fZGCzqÅ2¤Æ1#j1"zì†ê:€a¥BA®áþaºÁ¼ô€8 2/¼r§däÜEºx2…iª8ðö"jCfìƒP*"I¶ãHÅÌþ!‚*„‚ÚOh¡Ö@ÁÞ"` ÆÊTAä! p¡Ú!à¸MKÞmîþòèBB”\¯7 4b< P €D@Fà(à"X%Ð ¤ ]þ&ëØR¬¶!zÓL"† |Ä`,ç„iF8+®Ö8N~*h§-Äšµ@­ü$f±düc‚9CøåÆQ¥üÄvMǶ3ã’ º#f&AÙBaÔXà&@áâ¡ð¸¡ðNcrc‚þ™äHö‘?VF-Dœ›b°i…ìT#.|Â>ÁìáîÂÔz­ dN›QL:FÐT­$6áèÀ‘ZÌɪj@‚j¢®©R=‡\,I!ît,Ì€V &dgT±¢ 1ôñE$‘ɸ9aæ“à =”ü/1h5@ ,?aàIÖ.ãØNPF.e"#"¸ÒƒpÓêÊ:¤#&QQ4+m„È@ãr2P Ì_Cgå\eŤH˜‚ìÄôä°'"@X' !Ü=¨p•"%ÊÙpåÐ_'PÁÖ€J|>ÐŽ©ÄÀ îRQ_HG&7 "Ó %(<ÖBÑÐ8à"U 0f¬¸¥ºÀL@Rb`tà* .ƒ’ïPþÛgXZv+@Xá´¡ò€0úÚÞBìR‹²äbÊm°6§|,¦ QB1À"ðØ7h:ƒ³-£Œý%€àcRDºå V}Åc3((m*ÕdÈ7.»%¤'¶Ä8# câü'È"6/hKIÍæ/*ŒR(’>Á>CL‚@ t‚F0ÂxÈi  lÜN§„'lU¤®PW’sF¯""È$àÈcŒÕd,Ÿâ¦C-hÄÆ?jŽ·GGCìän‚’ÂÃbþxfâ›Ip™GÖ(îÆ/¦ØÛqª.„°-¡ÿ5 Se,–Zp9f 7 Ìwíâ?£»"õÖŸD°+‚þ!æ7!æ-FT(áö8£`ZHØé.Ô+ä,®×'KòPcwç…á"$VslU¯h~c¤}¢‡J)r©vdâèz!ð!²ÉaºÄ4¡ølÈâ$À&`_f ^n!ø#>y 8…ÃÄmÈ ÕìVfICº0u”iÄu2=–èz¢Öð1äT¸ån¦7‹ß¢Ô4Ñ('òòír¸QC5¤å£$.ÈY'äÉÞ/%l£@#g<èCK+€ äÉaî\¬Å('qL8#{™X°Î¤2nå[§Ê¡ì=º$Æè“â5>Ch¤ÆÕo5’_,Â8\+#L/¤tBˆ(c”€ÎÀ-!äxüY#w3BÅj ÎL¬,’huRåYb$Î+%î/Â8BÆM:7)Ð5ƒ&X#È'Ó8&BÂ4OFæ:/Œ?³€EÅò'm´?Ì”ÅÖê,Écáèd±3¡Åv1ÄæÐ¤ÞMΰx£·µÓ'C ¢§$1$$°‰‹ß3ã412rI¢F¥g0Âø/ð"ej!ÒÄ!Î÷¾Ìu«£-„NÀ¿7!"qTàhA"‚ÿ CÈ rD¬çaìaÞ\@NàL€d@rà, !ÊQ¤›"äšI„Zs„È`}¡´áò`.Õ+ÄÓè deȼ"DHÍzY$Ü5ˆÊ+ŽïC2“ãö_"ä:"&fI6È {)·%î“b3¹CÂl5ƒÒNOK"öÕv$Œ5|„âþ(Â*â(Md˜9 ÐU…œ½â*T…¤!N’EÔ?iä°:‘$3J,pÉ:=€//2̤8¥e®¬IŠP§†ý'Cœ~bô/ãÎ.üR!å®F8(d=Šé$œð,8H¾-É>Œ 1|Ì,‚*Q%‚:¤.nB'yø'¢ôø#’C«Z¾ ‡u Ð/ðþ€' MÃ)&B‹$ k*Ú©b(Ä8«€I¥ ZB(ÑIgç²XçjR¥v/b3ëæþàâ)„Dƒ ÁÑ[¯ ¡vóÖghaçW@ …f<%šTÅHà$GÀ`Äà6 "à&ý+ZÀ·XÉeð`§ €„8½äu1\ñ{ej?ĨObsKâà ê`½áð)¾áÌÁ,!æ–àZì1¤±Û´ª+`@—¾8âÊ7e“ZÍüI`(âæ¶ @T ˆÀ& N€L‡Ž@$+ÚJF,¾£©ÖËÈø$¡øÔNU½%…¤t.ÆX<«“…*A²ê=£‡¬Û£ à Fé|ý"þ.ÃÀC î†‘#–8|yé(k!å’_)Šaè7Û<ìÁy:÷\.JÃ@ãçø96F¤Ó8FÆ?[§”Oe=¤°"BàF5Á@ÄœÄ)jOFõ@fÈX‚ì  ¼ ×h‚¢"CÎþ¼ÆB6ÇdBШxº¼Pu¶+»†£$Ä#ª8÷þ·Ä,Ÿˆ¡èuÄñçkêÇc`i,nóM(ìgHJ!Ö'aнÀ&‚%ÖÓ 6að#]%Â,!ÃÚ!r`"ûø ðÿ@/ø ƒAÀ÷Ø*=ï·“Éú& ‚C!àáð"_ÎwÓíöý—?O÷ëñðý}>ŸÏçØü›¶Ã¯7eþì AÀ`( „ŸO×8î•€ª 0 ÿ€ ù@WÝ}ü |¿ÞÏàæÀ 83ö9Å­ ˆù„?kà@8+~½ß€dÎkr?¨02bÝX©–Fw¾€OåRåz€_P08~ƒi¯  s8™k@P0 ÏÇãÙþü|îÀ +³þÖýžÙg€@öþo€ÀHÆz¼€Ol3l …eûpg·Yòþd@]ÞSùúû¿`‰>èúëºÆê ‡à ¦ŸjÛ¬¿€*jÈÛŸïÇóâ‡@¢€_ÀgÃí´x8‚Ïwh@+RƒbÀ`Tio@åêÿ|€€€@}?€odzþÙ ¿@€Wøüû}¿¯Ð nŸØ ýö RŸïàN/•À`@EªåÞßO§³úÑ €_º <+kµµO <.&ÿ|c_‘¨>hý»X@--ü}€xwþ/*‡t9 Kÿ}? ˆH$ûÊqâЫT&vüÆ`ëØvô€^¸¹3ì gOgÃáò}ŸJö… ‚: áþ [JŸLP M‘òŠ@”Á€GàЀà8 …Ÿ§À…lk’€ ò¨Ì  ¡@Z4z€ ê€ {@Þz¥K0 QüîÁô(GÂ.}¡ÀJHØ Ѫêì§“Zy0ÍKÚÖŸ§ˆ•ëIì€Kz·`8µ³Iê£'äL‡`zzd€9²ræiz˜' ç-³8èÖiE†<ð#c”;G¸£Ìg:˜F (¡æ8G²!ä4‚$N̈)-ˆÐøãše€0(¦þI‡Â†£À‚ ` €.@ÜzPˆØæ$èd{±"?é!È•¹”Ѳ‡ˆàãäw°8€˜†M š …IB;.Þ3 ›K ÃØ~ò(^!lÄ(Õœ¦DÀKâºYÆLŸº³¦r¢"°À•°#£þBáòÊŒ™ !Ä`Í«ÀGÀ~Ì9ЦÔðÓ¬9M³4L`KœQ9Dh}úF lˆ5£øÃ¡ ¾P*2T1”}ŸõÅœ r€4*p ˜úÃÐ~äÀ“Däý>cB_]éªIQÜe°<Ç,ƒñ/ÎÈždŽ5GªÂv=^auŒ¦_€Gjb§ð'hØÊ¡B[ ê6Yå•&  ØõCä|aîÀHª@%ñÉ€p#(€8AXÀ® ‹àpø˜#b` Dç€ÁišqÙØþÅðy P=ΚÀó–R?^ þ­ÑÖ&Æ€ñC(zñÚ< IБ-Ì…$¸fô·ðÌå$Wðø-iá¤@¸ÀP\*œ ð(‡IA u€,Ѐ£¼=TÅ;Pä–óiª!³GœúD AÖ/%ò‹ÑÇAf˜é¯^ @ÿfäƒ/£LRÇ’^ãìzšÑð‹Lj'"–ª—€¨G±Ã¥*Jbi (îfç©“å¢r@8†€8€–zö‡Ú×"÷á~¸ó2-¢à|zsš±ˆ•׸…ö€V+)¤…½gÃ]lލg€wLÀÆZˆulfºPMú§A@$Ç=5 Hù¨@{™Ñîdn.Hè}6ò“ØÛÌãÔ~!8bˆK4ÅR„ìÐ!ðC$-ço´Ä‡rFnè¹§ýš”?^ ÃÀÇ"|—ÊKjlˆìµ?€  #ÀÊLìÉØ³d_Èhá–´ø? !‘Fˆž’xšÉX©À§ŽHtÕ‘È<À 3 Jm%¨bÆë[„ºîö¯ xD ä$!ñœPð@xý IÑð=Gˆü@¼€ð^ÀõÁߎ!þ<™½>Æ y  `ža„;#\ 1¾&¨ƒˆ €´tvìu7ûäEœ“ÌmAFºÁû*T‡^Ÿ.øWÕ`—†ûÉBQ0àV È´¯¹š5G‡¶cloPÑ{DEè£( ±•¿Ø‚†b΄F§È"sL§*B4/„þ¶g(„Ìᵎðù3âŒ?´…äz<¨èÓ@I«V~JH9#¸5B*yÃ"8FÜèh-”©@ˆ¸m":b(lâ$P-†$õ£ÐŽ ƒâ-e 8¦O†,w xd<ä4ID@ÃRº0ìèä-ã¾#B4.ú?ú‚AcV¯(>"Ò>(ü68 !Ã>O€KC4J„X¦nL"Èò‹ Âzjˆên"X«ÖÄ„Ih8Œé.’é,FÂåG’G:I~8• V.FàX§–Ùä.”G:M Áè ð]ƒå HÎO( ãîlÔOÚB&aþzHÎ㦱š)Dð¯Dð BÒ#Bz/ƒ¬Sô-‡|¢ãpáØAøÂÈ‹ãM`p "…ÈRØRZ ¨N“h\-Êd Ù dlP¢Ì!ú ¨àZ`rÀ$ )übN-23"B€"â0¬Š²@0¾¡øà ÁÈ<l2Kêghä[cþIâ€Ø£ŠBb9#S…88C„7b&~‚Ð]ãì¤Ã¦'èà3¡ê"£JCGXb8K'cE„A ±Eò¬#Cˆ…¤zFÊúk D#ð•ű1älI…æs£>e38€Ì#L.ìµ,‘¨¢w¥œFƒÀ-C”[sP=C ,Bv0„€=¢&0$:6I° *1¡Ú"â¨À Y¦ÈÌ®N¨4€ÒPNIˆ¦…ªäCÄ‚–"d<("[bÖ4#¶†HrŠ!è§C’>è(.TQ¤*Üàü¡ !ðx &ÁâÂü)J¹;é,-Ž!2â#ã¦n°e1Œ`z  X€P``$'ÂÖaà‹À.â’ä°  ¨Â˜/-%0B•¥²yÄPu‡\æ%°‹ AÖ!:aÞÁªÀ2hB4ËÚ8ÔP"H8­>D°žÚM)šGªðï`À4€&  f   9#†ØÏÃAcŠ}L|G¦¦JÁòGÞDâ*GB€8§–9Σ T`CŽ%@$ jB=Ë„sÂöjAòŒêƒÆ+**¾åÛ"¦R8C~g”8ﺸ€O¬í,{N°>"ßãŽx(ê+ ¹ (5",Åô!Ê–;ã*F£tj"äEˆÞÐ$´c)£ ÏЊg4Â,$ (B:Ó8DäÀøf˜"â„8dT!ƒve#%=î"cÁZ¦˜FÂÖK@Q@aó TÌMCCY¨Vã¶Fè!ÚSF@ŸÈO#´m‡^!D&àà.ƒLœaæ£eXÀÐLšŠŒ±ägv1ë'â€9">;ˆÇd¢(È8c5G)@¹̬|wÎâáögb=G‡Db¬t.#!L/GèyÁÜ>aαË–8£4gjTCÍx„­€„m|Øc22¢z!BzZBÞ€,@ ¨pî†zàb@ |¡é(ä|ƒK:bÊ?‰ŠT•’ާ .ÂÞ0ÁÊ  ‚.âüc¼òøc²Ž£À6J .î&Câ{>ÆÌE"†1¢/^"p“L̨Üz‚¿BƘ#D+aâ<[7Z'b6"¦á-¢v3Œ’/c[´Kò0…¶ßóYE¶"Ïx"ã¢CCâCHÐi·ŠYÄ"ŽF„H¼¤zÌà Vè%#–¢|1(4²þ6‡^¯x (JˆJ®l—Š{‰Æz%òÒïWIÙ3¢//‡Cø9Fð7uìŠ.7fâi‡&Üã6:d.„4+ðNDç(€Dèxâ(¥øòd\"C4@ÓÎ, « ¨Ã´,D4w‚80ò8,n/Ö3¬*#â>#¿"Ö2…8íŽ~iôþ. j!h ð…¨2Pâ’Âôb«¬aîäîA°,ÁÎaØœŸÃ >¢ìŒ#h E-Î2µÜ5¥Þ1aâ†@ˆàÀP H  $!kêb¸„À@Ã("¢N7f@ B<ûˆ(˜´.fp+±wˆÞOaÄa¤<ðÔÔ7c9$ð7s¶™§:¦7gc3xpæ$>D1ž.bư $  z ¶À  &êb.«â?e°q5Èi‰°kׄè_ˆf3„¤DJ㇋(s¢q"'"¥ƒRFw¤0.B{ XÀõ’b4 Aø A LMã4%ð–xÎC¢ºÑɇ€4¤E>@fãÀ7áå"N¢ÿi¢]ê–ðšûe8;h ³#ë,v`$̈MG,-zÜÁüu’ƒ§'è!ƒBßÛ›Êüm¢æ/â§&Ø1dZ“8Íä kD­il˨¬Aú`ÿÀ¨<_@"Àb'ÁÞ§*KO;‚›§è€&À$$!àã; fÈÍî[¡Î2fd.#¢( ÁòÀ% 3c¼Ãâ„’Šò0Ñ—'éK1­$ÞÄ€"éx_Uq÷ŠuùéW@Ä ¶áðYÜ@(P+ï0uÖÚÍpò` WqІpb=r€ >À*w¨BÙò| b €|æàŽ?tàõƒOîÆÄÒ û$$PÁ°áàÀ*ÁÞÀÞ€®èh2~ûBN¤pìüb¢=ODeò#c¦ÅÇYå5°fÜöÂ(A#r7ó9Fn”(¤„D5ä@–0'xö À "tvsd.@³ eÞØ¤h£â!Fl:fÝ|y,l‰>o"ŒJÂô_(4'£³Pk‚‰·à÷…Þ‡7 .ø/£RÍâŠ5d*Abü$âp6„ñ/Â,-„)·bÈꄌä\a»hBõçFR2‚x¯Ö# Z>0ObEÂÔ;…!#dEZH-ô,`Ø0BÑöe!æE3|d©@èGz]¥¨_`&O!Ü9æ8B›]bvå³y] Åòl‚ü;Çv6GòbŒuù)¯x2"6CT³1EÚ$Aÿ9¤Èû|Y!Ôá8¡úA¸`&yd0 Ó¢–5Fºb|I…ŸÐV"µc`€ `B D@$`60ƒj7йê0¸ÓÄ¢:Ãí™Èê/¢F|È"O…ùbO%¤¡ðA2ÁæáœaúA䃒Yž>CŽ>n 2°Š$Û6$Ŷ"ƒÐ¯Aî”Cø€âÌ€" b Ä¦5œ€:Tè"ÅHJÂÄaáöãLGê,'(#Ç;]bô¢†n>[ô²1U’ÍóvF©üCü~‡ê7ëMÊÏå¡úŒ~Je$°ƒGY¦,¬f˜Líqã”.G„ ~„ü±gà™ ©é>¢vJ1õ „âv†ïW„.’äøC£bChw…¤èê“äœkYpé,(˦ŠvŠ^¤àø¦2è-—Ö5#BE"ˆ°ì(f›z)k2³>Œ‘pO)j9#^ƒbÈ4d  °¤†Mɰ-r)eªH(psÊð¢µü5(dáèŽuš£¼ ÌŠn…ß‚õ„ -€€ÎÁâš&o ˆ4óì?Ã)jL”(œIã†3µ„8¦Pó£‘n£.]£”pà Qº~q eÖ¡Î ° €ÿÏ0(úz9o€N)bq€þ-‹Å#@ û?_àpH ß `° üö}>žOød%Çc§€dŽ|¸ßï—Èô~?À`ûÙòû|>ï°ü ý}5¯6àQòîÜa @$[€ p ¾ßÀGëá욀Ÿ`lýv€·i&"0ù†¾ßïxÀæ Œíïê•hþÆïÀ¿-ài8ø|@õ”ÍŸ wëï)¨#™áúü¾_»×ø$¿ßXçÐ @@nh $¿_  aˆ§îï@­p1Üt>Ÿ÷ÛÝó¤ÉA-€¶‘‡ò’éP@.› ¼,ëÇÀ'&Žä";€+¢È> @2<Œ‡Ò¢~?ŠèŸÇñè}Ÿ'Áô’²Šˆ ‘€2h}³¬ãX€ˆºß±'ÛÀ¼1È*/øÑ8§âPh›œgøîñÙâþŽÀ}ªaè'°}ªL£FÓ ~Íèà ¶¹‘óÂÊgÙô§µì*¶È âG  ÊLæÁÚ¦¹à[G‘`s Šš~‡»ÁN»ñbPç­Îkɤªƒ¸&€KÀ|`X‚‚¡H"… Àr Ç”dÑ úÌ/hÁõ; äêM Ågà~g¤{‡äb~Ÿ.€{€À0&e1º~æAàyœi°ÈÅVň🰅WU¤hº0¿< ¸ NXzžh -X¦Ùਪ4í[€AøæÌ€;ò cêz¶0¹ô’“ZiiÍGè€`0%Už«¹õ Bh~ž æ”Mêf€;ñ% zÏ«Áæç¸®LãÎQde3ªÛ¾{Ε^-ŠbÚ}·ñîwàL±üâ5­DB©ʬü𨻙N)ÙSiRýN«¯™ýN5 ¶ Œ4ç°|ŸG°ò U°~`Öà À.Ž›¾Ö¤‘<çn/|v€+-=@'ÁøxS‡µ„% R¼”vËññð<Þ¯#‡Ò´í`À`r£,cj‘ì{©ï9ꓞÊLB·€RZž+ÊÒR&ùæá¦å‡™ü}l@$'Ó4‘Àzl/çúç·Ýä›CŒ€¢‡gú²ð?zhOÈØì°T¨øÚ0#ìö¯Àõà€ À˜dlaÞ9õ €(úƒ€@ ûþ…à p§óþ‚Ap0$ Â`GûÝòúy<ŸÂ1˜Œ"9Ýá’8ðã>_ 'ãý÷gOÇãåðø>À×ãd&ôpÀ` ¾ƒ@ P( ýßÀð0 ö¿Ÿ”ðú½ oô ¿aoç³üý~€ :؈ŸÚÀ x oà'ÐçÛþú‚6°ìx€O7ÛÜ÷}ư3ü=À gÄûrÆa/Ð<5àõ~¼­ÀÐX/›ˆÍ¢Ãh õù‰¿A! âõ>ïÀSõóϼí@oû°'· }=ÀX`ê,~!‰øÿ«h"¬ Ëêà€À »'ã~ž­Ð´‚KÀ ‡Óì~@Þ¸§òŽ}ŸMÄàí©ø?g¹úÒ°NÔ´­DùôÁqú¥Ì8 ƒ KÊúù%Ÿ€ #`ið~lAêé< ~ŸÇÜÉ2§Îâ ¨Œ ¦ØÇ³† GØ(­‹›§Óò²Â€"À@¥ Ï ö_`že¦q¦w˜G©üAˆý€B |Në)!O*ÐÆAòÉ©°@à†xZ"#†pŸ)à|`jΑ˜~¯56€@ºÉ£gñèŸÇ©ùfÀ«¼|µ­x !æXœÇÙzeç1ªvŠ@!Ž(  éâ~Ÿç’â®èU¨‹!N¤éY‹*„ýŸgxŠàÐ%Ö x@„€Sr—™ô¯Њ¶¯îü`1Ü|€ÇzÚ@ ·žÍáô}j­hs€ž¿`ó|Ì%c·gìçŸàU… 2è}§R:%¡J\ðŒ“óBÀè²ÐŸ—özú­4L}$‡ó Še¬Å e¢{žqi×eèÏš‰|L®Œ>ïÌÇ솻ÇÀe6{ 9óik'£LŒ[ŠŸg¨ ÅŸ@P|²ÜQöæ{RípZ”(|KSüÏ0vhÕ#€*‰¡Z±SÖz¡Nh:ƒ~_[¢l†ÓOÜ…Ÿlùû 1ýã)ðžž!èŸ6/|°>³>‡á÷Pçʧ 2×kÔ îŠÖaâ€pÌ {ŸVû(­Àh(Ö@ñž $F”@}éÄ>RŽ<Ê0ðHk(í*ž G¢×G¹.‘Ø=@@`$1ýÀ@òÃw´"î@‡Ñ!ðÌtBH{: (¹ Çø -Ô±è<à!€Œ€~‡h )Hq“æZ>âÂhÎ °¤u,[‡°÷ tyŽ@0?;r@N!· ö þE丘³LºÎ)ƒàŠ¥€×Ï¡«Ík¥BvÌÏ*K#¤,{ÇP‹@¯@-Œ²Ø?U~"Eðà ÄÖ]Ö<‘0#Ô8áü=ÛQÃ@,—`‘¹;;†ÄÚ—h6µpЈ<ÒÎå A‘Ìî:õ¿ 3(ŽI4¦‚"áýFñlÓ2@` $Ù$Üš‘™=vMð%€b !jiË €ú€Y“6#ä‹ByÚ>Œ²ŽKQ¤— yMÁîE¬üúÆ ¾d§Md8‹,ÂeR&( úÂlJ ì|$Œ€Z&åÀåðÏ—x9äß¼sG¨ÈCèmQÔ2F ê£ €Ò;ËC= H±Ÿư‚"Ý F9y¨Sˆ`P9 ¼Qü P ¤à(ǹd%¤‚P ‘è Y{0´lòÌ)€uþ“±´ÀÌ 7+1î缉Ë &¶€ 3xûÃØy’bÜp(‰ŽB1œ£rÀ‘zøU%õ¨cËcè‘jA‰Áç>G¸qðõ™ëÐÚ\¬Ð¶/¹°E² þ\ù92€ ³³Qü<(ñL,í¨YNì’8Ç<3ð >Îû\’i. ¤%ô¾c³J©ˆí^÷¦=G¨ïjÈÏ,¤Ä³›²ÃêG>#P‘Ã8  qEªÌyTG#aÏén)%<4±G¸ögÃÙ¢2ÙÙÑ' >¤ ßÉ>Òs]Qñb@²ÎÝ„"ú0GØòKH‚òxÖL)%™ÏŒ{(&3<iH}ÎPØ&WQbÇÈê¹ P  ÚÉŽãÈ}ŽCz@ˆ!܆šï^3dCHqz#rôÏ•‘Q£p´ƒPFÉ„Pá6RԵ͘1Xùœ“F/¨ÚÃÀo‚ ;œÐã )Ãd(Oˆ$ï1“ѰÒìtZTƒ¢‡ù(¼sèÛ04ÅÙ3³ö«mÈiE®ñúŽhøÝÄõìÅŠÄO*A†!Áü愤1„8#øfc¤Ÿ2ËžÚaÖe6A¤È'ñTl˜'Ïè@" üðÉŒ(Sæ„Cú„¶¢B"4 (=ÆœÏjlÆ×²L-"îRgM‚—ª\ ‚î„"ÊaôÜ@B Hh€pm¦-áÌodÇ3‡–EAÜKaþ!ì Da¶ à !ÒÀDðlĤ1ÅfäÈ!nüØ,82â†åM§Üš :FâÌåÆÀ/²m(4¸BŠZ/äTE†öP¢òDT_~#Ø+Éè4¢ž"ÀT*úgÈdFâÚ'¦¬1Â’Y«ÖI/¨^l¸kÃA £2c¢Âô ÊY‡½jP_ è)‘Þ!‚¼!d@Y‚Öƒ`HÀ>d@`E ;pš lä“ nr‚6$Çéz &e ‡ª⯲n(#´I¤ P K‚ä"ê Cç $äà‡èH"/£Ü4§’:"À>B,FF„(/F„vBò(‰Pk#³ ÌZ>…”k.¬éa÷…A<å˜rs;Ç|ÃÜM…”¬ñ2+b!örÂá®AP!Þâæ[â'“e 4*;Eç0‹ñ?B,gàÀ0ÀD€2@nçRiFj/à‡ÃŠ6Ë”ƒ~æ‚Hæð¬p‘¥Ò¢ò½gNfÄØ*¤ŽLëžÒj‚ŠÁ®árÆNاÌ0ð ‚ AdL…¨!tè‚¢î}CF}®¥¤f0`*¹áþ@  `À²$OI`$$Äðçv‹ov-î&ÆCŠÏ‹% áìRÈPÊ ë¬°ž(F*./4òLÂÌ;ä"¬Ãh@üë!ðNŸJ0ÂÜ-©†6¢¼|¦ F•ZgäÊ|̨'Ä|Jîø h‡h'Ì_âÜ#I†S‰Ú3'«À2‚Bµ²&ZN–Áæˆ ˜sØ-¢Î?bŠHälîÅ H¶+¢CGÆiPˆ$„ RÁâ7¤l/Fš 'éV;`H‡ðpE¸I.F§ÄH!äudÌä%6Ã\!³z0h擇*P„Ø1ƲhÊ–;"Hâì†~KªÐ1$–ê–¤ìO"¥@#c£;ÄZËÃH1Þ@© @é&(+LaàøS¦)JÄ>À£O>b*#¶)‚|Ä’;€éàã@,pcú·QÊ7§páØm&+ÀLb4óÈp…$öá=â0NR æ#D(€òàÕ…ª=æ¡ø@^Ààváð ˆqAÔoi p&[VI&áè¨AÜᤡâà.0€&áÐ@•å Þ$|<@¿Gè'DÌ@CûI¡Ls½"ò´é`äæÊ}ÆÐ',6%B-CAiàØŽbÖÔ¤‚ƒ´$¤l$” DŽÃ¸IãJ Ê8l Í /‰òFƒ²½å´"´.Kg°00@’iÉz;sÈLÁèZÇÑAfŠhÐ~ 4ì i"@°®æ©®þZ‡š'iÌ7¨æ’2e —¬E;Aî#‚~Fê›*èpfõ¾wqK‡bÔ/¤’FŒº_ÄÈ;‡Üè<ª„Sb?ÓK O ‡Ð$ÆfE„Èʘh;0@aÌ|Àáäa°¡Nî¡è©F¼A)ª"£:Ë¢* d&;P¢3zA€É€ "@R €6€`ÖndîB¸°š#@Êx´æ-EÀáFf(„@?Q€âBÞqgĬ"1ƒúW¡ø•ø!ØÁ¡à´!ª¯°xg“àTð1Ê}ÏD?(¡@bI Ф'ä àP ¼Ã@ $½ D”§Ì7X @îæPCìÉ N7¤ƒkn}Ð@>ƒæA£Jô­*ë&'î¤bÉ(K&K¹VJ)^ˆ2'B‚‚ÆÒ†"˜‚´Dˆì?GŒïbÖ0ÊELAˆ6èd(ÓØ0… é)OКDÃqvbB"Ôš— ¤ð°n,'¤LÂ’1v’dïâÐj·J´>‡‰V™¢vÇœ¶²0ç³L" \â0M†n¡†ÂL¤$è‚661˜7D¢$¥¾“¼,è‘À ]#œ^dlgÄ;æ©PZBU’¤Äfáâ™ø{‰Ìå Ü/LnMƒ:éc3­Ü8^E‡R‹ò= Є !bI#ö™¢(ŽÆ’ C˜vI´l PE’PFâÓ1j+´8bÚ'†=ÑrÐb”傎&jr !z©&ÇÄ66à†ˆl×»_4â4Õ¶ö‡u âå:‹'`L`ÀnÀ(Q[qâ€pGTJPª}05 ¾š!Ü@"¡ìÀ(=!Ãü3SMíZc¯s:…ñ«j$PÓâ;³h7dšùÈjgCÅÊ-Rylô;eñt­Ø§z©gO£Q./„)f²oCæŽÅ ¬‚Gƒ²¢…œT£.$© '–ycäqbÕ©‚ð¥C)Xs“Œ$0~y¢íhT*\¯„ZóÃÄLP@=¤¥-zcWÂÀ©ÌA‚Î'ë¥bòÒ>‘T#Ü/Žþ‚ÚðÄ–Yn‡óamîId&0êTæjÏ‚« ‡èã‘“‹¸e¬Fü1‡“BD'!TÊ%®}ûx"ß7%¨F‰µÁ¤0D“䨚ѪcãNÄèÊ„fL‡@-Uk/ #(ƒ*Pu$ošìn2jC!ºÁ`âaÊ”Œî+OÁbØ jd;õ˜ÙPDª$äBhˆ`O T€ µm@À!žas -ÃFÑT¥iV4ö-¨$ïœt&fjú."ùƒh /ñK•„z¡¦ÁäA¨a–›Hfj,6"J_ */ó$O#ÐïƒaÐ,#.T&”¡ã¥Àº  à|Ï :®äb-Æä¦ê?4Ž^cíÝit=Ã]bb¤ Kñ Š1Bz‚èá•Ä+©ð«|@6)aØÂŒ”e¢Ì7dŠ2†6PÄ’+ó6žƒ0E¨.rá Gé!ĉºÍ:$áå™I lÊ\#€ži}B×JÙÀ^3¼Á¨ìE‡(}‚ÓWÂN› ÞÕâ~â-|‡dX£ûŠAóEjøDÆձ¸ãÖJ‘&,LfÜ0 @  «fmÏÅ»Z†r޿ߌ0jPD±¢€bÀP·ÔÔ« à@J i¸æ †óaØLÊL‰í郬Aè`&a°ˆè@$ÀFÕ¡é ƒB#Ä>Ç —ãõôþ{¾à`P ?Ÿ @ €7ð C ýüü¾€ øü@¯ÐXüþ@` p õŸ4ûõðýo Ñÿ€Oç´Eð¦€ß¯çìqþ@•¹  òˆß WÃü ü°ÈŸÕhå<›?@óèü|ƒ€@Ç8ö¾ß²èø“R_²wÔXã7ëòkN~‚­5 MuízÉÍŸÀª@ûaç/à Ì÷Œ=ë9WøŒ¦Ê¥YHÿ|]@ÖËTzÜÉñëËçw-{kj k²›Í¿€ :ôc}ÒTmóŠ> oI6Íÿ/ä@90&:—l¼ ‹£ zhšŸé!þý€ *¬ö¯Çð@Hžàú}§-kx®ŸÊ* Í›¯iæmÅ‘”v•§aþèAôÈŸ‡Ò»€qÂÂÎ$‡Òò¤@(´¥  õ€‡ã0 P!xP€¢J€`D€ž&gñÜž‡±ôž¯8 BRÂí,ŸàrDx@g±ü²@)ò½©gãÂj´›•Oëò)ú¯¥§ÛŒ”¾èàŽ€ ø„G‹Ë£ $±¬cÀ>A°1'â}ñih ×I‚œÃ(c\¨¨ 5Ì€Š|Á§Ûx×£¶  £IFÞ«Â1w‡ºŠ|/Xý¢§ø-(¹õƒ/Ö€ t£'5¸ÎL$öñR ד € P8$ ?àà)ýA@P8€ï÷ÃÝö÷w¿Ãà 0f<=¤0#åÚü~€ßïùƒíü~>_/×Ûíøõ¾€·Ãh"îo‚ßOÐAÊð üû€ß`` õªïôþÃ@Ð×ì!ÿ7¿ì ð TÕ€·ãèû˜¿Ÿ¯çóó»€@GÄ5ô‚@ h ööɾà` û‹|/`P()öù~?o«>¥öÿ®À€˜·àÇê€`#øž7  ªÂ9íëä ¿¡øò|?`Ogûõîÿ}€`.tüß`'Ämò~¿_—M€$þWzŽÏ¬9 JÄÝŸmÛŒ þÓ·‡ã~~§`1ðô ŸGÉî5€ !êÈ ÄIþyŸ ä©Î¸žGôN´*°Ï'/œ2˜€M‰òõà ÅÀ8}àBÐ'Ñì}'°¨€‹”dø'Ê6}€àà€Àð>Hhz7§° K€ù%(/‹Ö6ª²v«£ Ë"ŸÇÁé ¨`°ça¼u˜IÜ\ ùíbdë®ÌœÂ™ K‹`¡z΀2è º€ç“î ‚‡àn‚àèN …À« NçëK)Ò9¹ìì;€~<¯ŠÞÍ¡‡Ã8ù¦m«ºÉ·` 4çÓзÈÇéðjžçáÐoæ ®w–ÇC) ÇìÃ3Ö]ÇÓ^®‡óD©šÄß4ŒZòÞŸç €±ø!†@¨:‚&ŸðŸ‘Yð{§«>À[¬~ !ø»Ÿ 8d jèxÁgì.RU¬³0tó;x‡³ø¾­À òÃí¼œ£§ð à(&°Àqú{铿Ÿ "ˆµ®øõFɾ"Ê PZ€O½§&»éŠ…«!÷je˜GËÈõ¾q“Ωqö)‘ç.õ ´yµçª`¼`dÈëÊ #D|)î|²Ÿ*g÷1NFG³Æ~kûÜÈœ°¯Zº†ÆðJ¢E)Ó…5¹Qê&Î,uÛ»ªXK#Ȫ4V´øØ‘Ÿg¬ª|Xg¿˜3ìèÙ€>"{(-ídÔRèγP„8œ>Cí!K²Íí()•å*»I<òCÒe9ºHïÃTz§Õº¬ CÄω'®ü…*4¼FÀé1ã”zà$l€ '*\ز¾A Ä9D* 3Æ]J €°‹À82Cè|?¡Ø?Àø4À8 r<€ EcôtŸ"â?‹9g'èšÆâe–ØCxÞ€Há ,4º[Kz (iZƒ€] ŠÂ*Èõ|ó´ûˉ‹9äÄñŸ(vVÔó. =è B Àþé€@Îñ°,lò›fº™’2L>êô±¤ƒœBcœ‡Å˜›¤€\ѳèɽŸõð ‘4SHxœ)¨Êã{cE”ÕøÎFÈ¡VW`Ïà dÀ‘…eƒìy¥ã$ÀX2õ^–Ôøm€,¢.'hñ¡ôªû‹ÚnÏTº³ÒyI=$ÑäGâÀp@0€øX;ÐÈóï ~±äúµ[±Ã~œç§ñþÕ”"ø$#ôxÐX§tÓºÔá˜Jk´‰¢”0a@I;„LÎ_“ñì,±TËqü<èó2Æô¬âyËéÝ@-¤0eÇxõ3D j áÌ5‡`Ìc°a¨Ù’eËiÇi*z{›¶|[‹™rSþ>€§•ø à00/à,PDR‹C Àê€$Ó%9LÕ´<\ˆb¿ì¿¶Ú€§ô*dÉ£îdÉÙ<0‹¸õä=Ç@ícHy ñ¾{iî*eܺ·³ºl ¹‹.ŵväašÒG $ñ Íi2VM r*£ñ²¥ OW‚7÷äs´>‡y-Žiue‰˜\!ÏL%‰{›²vV‘Ü->f”´8¢ˆ‹IŒxl²p²¯iB§˜ˆô(CÙŠ%Ñÿz‹zõK© cÞŒ‡šHmt„&ˆq‘” K'd|7"»_å¡m p´dC‘~'…ÈÞª<>‹Kù!Hñqîþ_Iœ+( ˜±@ ®ÕéV0DÑf#~@Tzl³´åÆÀ ÃkXsQü8î€l F*µSwGI׃ p±¨2¦Hs;Jp·/£DR˜ `1þ GßÐî`ˆ’ðbØöáQŽcTTÍQ…“‹t:x²¯ðÒ£ÌmRñØ@à  € ÓŸ8æUŸ$¬l!»L&õ/JÂnaŒZdoQ£T)fm ·^4”¬Ù0hü[ÇØ ÅŠpôC¸Z„šqôI´ú?OÒZFh²i~[YB}s…œËT£†oÃr{ôªV:î]«I¯0ªxßš$@y‚Æ52^d£rè“WÆŽ< ~imšñÇ8e—.›´(ÙV"]˜F„}ÈR€ CÉxááL¥?‹ßx!¸P·˜€~À#Ô0šs޹dGç!*íæÄ˜ýÈ|¹äÈ3ØÐÝägŒÑÖ1G_‰˜¥ä ñtN~Yêp²ÝÑÄL™Ÿã  ¨ÀpL`$p ðôdx” æMdÉLŠeN ŸƒåJÓsK?ÃUákIÃ=| º² ‡û/c­Í1à;HÐB¬ibØÅlbê7¢xSNô8ÃÎ;­ÞÞCŒ‡z%Ú6 BÊÀH`(à^`ˆà ÀÀ!Þ[KPMhª„db´AÀb$BpÊèà¢|C.„‚"Ã,’â¦@aê,o*  ¦g” b&ôG<'$².+ЬBZ!Ž.Í ¥Œþ# 0liî.wðJ@ ^0‡@(8.Å:³Ã ;&¨B ~!âÊ!ŒÌê­š6ˆŽ(B´*¤¨7à <@ xbè>$<¤þ¹„œFEÒS†:“À /ÃÔ„‡P¡ø$üïËšL-â—:2¡øMxzƒRèzL"þ܆¼Ù§”},(¤`·¤.Ç K#V8 -.!¢>ñt!PŽI#â#â$n¥i./À!B„IèIÖ‹æú¥<®ú'Aâ5¹åÚ-¯zBxLcÈ&è>ÇâºgÆ*é6W§¢cÖo"áÒó!Èà à $ÊgýîÇ dzŒ ‚â,B7dÈ6# "ø"Q†T¬„x¤3à8ʾxÁîàšV¡Ã$È;£^&„2,Bú“fªOÁ¤AÚ*Dà¡Î©ÆlhJ,¢eæ¬!‰ü5â|AbÊÒ@¸©B*¢†#“£ã!ð 6É(SBê™)Ä'6¾„¼*ª([¦ Gñ8d!î=‚Ì„ .HÆ.¬ 7âÞÔŽL5pEw/‚éê˜/%à i+¦'Ä~&$<üd8c+t-)r (4DÞ8B›dÜ›i&8dÆK'ò*Aú#džLâ`;!øükH­hã¸]Æt–ƒ¨„<,Eò÷g -b•ãȯè8]¤Ä.(„»"Þ‘™8и»Eà'âÊ!âIƒRêDAäïòÖ"p€Ìj2€0B`#RAjV6ÃÄlD²yAü·.Ï0$ö@\7ÂÈsKFˆŸÂn*è`Aþ˜!üq8üe8#¬îMaöAæ¬!ÚAœŽo¢Ò'*ˆj# ŸÎÕ­R+©@ãŽÕc†!Áú €¸À  x€ "CÎj£¢èB§®5î²O†AÃ<+ÄÖKÆFÑ~¿3œˆ"*ÏG£âµ*…g;£:è¡:áöA–À¡Ôc6Ñ'£,Ä­É 6c^5,Ù£$í£f?â²FDÊF ±¦àR† ²sY-aê,ÃBªK¢5bp¹ ̯ŠcØdÁøáè#…vl ü™3ðÃÎÎÙ³ 0Gw’Ö/k¸IƒÃæ>s-" NÔé!åò6Mü”nQt05R0DÖRÉï<1.¢4BÐãà Ar˜*â¼gΪ<„6¥¤."²<ƒ(B«;7zö¤*æö¹´ˆåÂ7ÓÇ"Жò$’AÍ,ç£R°a|ã 1ÂÊ>l7"¢-brOôŸ¡ì.7ƒ`!¢âÕƒg ƒ;*‚z7úCljˆv‡fsCÏ‘ÞKÂh@¢Å3Qˆ”ÌCÉHë‚,ÆÛãMG@žæl™%('L(0ä"/ZAìËÔëPÁÞåúsÒ®bx'’ˆó¢êjtÒ&fª¬c^¡ã¤G <\¤P$bªÁÈ¡à$Ðú¸*;PŽt-48ÅôÐã"!£È' Ü5AØ#¤@ j$`"³8Â$ZCê:ªÜ,Gˆ“d (-š&bf1"z$,¦)p‹¯^djÑ“&SÆÄÈiâdÄA¼¡bÁÎ!ÌÆVÄ•*Dñp JÓ+ƒ´{r7ƒ4còºÔNÉȬ£Ŭ<&â.欭ÕZXCÄ7†ÝB0žLQ¨E"ƒ›¦£{æ5ä«)ã  `¤¼È…–+òB“RI2¨OˆôB&ŽÃD+ex}ãz>‘+¥úJƒˆ¡øk¨X.¤*Â;ø7qÌ4‹HJ YDé1!Þ&üPƒ&1RO‚ˆ!”@€:!ïîÈè0* ,lCÚdÓ\e#k{( Å<#o¢fÚA 3lÎPƒÜ˨œ€4@F ^À„ 2 §$x¯ðÂY¢|*º'êç¡æÀ"¶2Aæ " @ÒM ££;–†ˆ þí£$¤¯Î_xCÏ× ¨$àI þÙ¨î`nh„"ÊJÚd7ÂÄ3ƒÎUÎnTk›oÃr%ä&ƒ|0B¬XƒÓ95[•ï‚J‰ªO°G£’¨×÷›)’˜0B+ç 3"èá8ļ…h:¨vüƒl.ļ!ùCF"Px1ª*¢fAž´„èc!êiüZq¤zqOÁ1¨Wˆ~XWL²—ô-+²-£/»ÎµÅkŠcÆÙB£Át#NBxEt_×l` œ iüáä/ÄúKÂÖìˆæ>Z¦|fŽbºƒ÷n0‚ÅTc„J¢ú¨Cž. ¡ìJþxš!¶À(IJÄÈ{²äJ¢ÒgÄz»£E«Ãe¾b¨;¦À” À``2à$‡VÀ  f VÊÅ–áõAd3¨Äš*çüvc0 'ÙÏH’:d‹|26C*èS‰‚là!¬!ÜAàŽO‚¦ƒ‰å?7‚tü«ƒæ7“ˆKî2hÀ&9áö€ bàÒà À$Haê5-«›UyšÕbßÜŽlâ;"ÍËd²­ ˜ &¿%­<¨±.C†z•ZJîAddâî„2#P¤sà 1èP"¬_N\.Aîxañ¥î9Ë.Œµ,õp¬cïDãU£X-‡2 ;G&¢¥ˆæ9/ò ÷RØDà…-$ YþÖîk˜Ï2®æn.ë =‚ú>¸3¸báíÁØáñ±)ÿˆ $“ÃDæT¡¼O²ÔÂ!®kWò8«§3WZHň@U£ŸÝ¡ô¡à@<ï~¡ì”BAÈ5I'£ *jènÃ.ÁîÚ€¡Äò!Ö`ŠB¢ð€<¦GˆUbÑC€»7_6Þ¢.ä± gÜ@.¶ ø€€ðì}¿€'ä üŸ€P¾Ÿ±h$ÿ}!o ö¡@‡ûõò~¿¦Ï·ìÎBŸà©4AüÿA`9CøA€Oð8 òø?pY( ¾_Ï—Ûþ&þ_µ¸ÔÈÿCAWÛìþ{½_ÀÃü ™*ïà$ì §¿À/·ài‚€@Ðh}<æÏ˜õÒc4pz ÜÀG#†Æ‚@oí ìü¦Ç7wE~úžÜ—Óëˆá£  €ÀCˆ}€,ñô€gЋ뢌  1­‰ú€ üä€,™ðDz)1ò}€0 ö:'ò j¢Ô:çÃÒ™ñ >à³¹Þ€( ¥ÊqÿÀÇØ¿F 3J§È~@Gð{¶‡ÜŽÉ+áôé€ì0 ÕnKh¿(ë«p{€è }£çè |5GØ}€G¡ò`AæZ'Ñxcy¬x±{(à$\¾2‹£jÛ»(K¨»³*5ÒÀ ‚˜V ¸ y¼€2Æ£­¡ÿJèÜz5 Q Dm[®'èÈ( ˆ”BŸ©Çáö}¹íJ ¾-Ax¦Ñ wyÜ\çð~Ä눹ÀM«h¸éû\ÕÁ ój¢@Š$y±Gb'ð,"HfŠÀØ v€LÑöz§Êl @`‚$´,Ññ¥€Xsˆ1ðžðúš}€›z€Ù T~žïôZÍ1!þÚ‡ÉìþŸ|1³jà1H „€`0|ÆÀìÅ0Àǰ~îz·V™õHkèB ÅÀåè€p*‚K¡æ~DzšŸGÊ穵   ­B›˜#¬ŒÚcbð´‡Ó‹"`Jæzàðz2‡p}€`€€`Îk¨² !ñiŸl= .0³§€Ú C«ËT` ®ç·$¬ g¬:|ŸˆYîÚ¨,z’刎ÇG²1äŸÜÜF¶§Â¬|  0 LíZ4»MPõA0OǯÒ´àÑÎMaêgÃ]ÂA3å¦m ñ±€1!#Ö<‡êih¦­œò‹Á?¨TŠ'0;ˆèƒø €ð <€9˜ètBH„)!°¬‡™2 غ ÆÖ¸à€ÿà\÷äÃÇ€ûàÀ€ `B8 À$z%‚ÉJ Ï#(„Ï!áð;Ï?c`ŽñÀ>ǰê o ¶@`Gæ)½C×’QÌi”…Êh‚‚:òa{y.†µ€‡ru Q„"h Ò9”Œ‚P˜Dè¸È­râL9FN$YZ€s]“‰ui-ˆÉ‘Òà\\á´o¥Ñ*°NÜ(祈BMjW.Æ#&‰ ×1ãô×·ÄHÁ#®èÇ—ÀmPìŠEÅ Ò øÀ $ÕÞ”ò2§‘p=…æ$"'/É-'8¢b2€€bB…Ä}$(ÈÊZ èõ+qú°P£È¥ØŽSží"+6€%Ý]1ÒÙ"©¥Ò|=KŠE.Ç»¢‚† ‰âJç¬ÌԲ䄖“y3Ít>ƒð{WôO¤˜@( VãI óöxÀ0}Ñ^9‡˜¶ãÀzŽÞ8’ÄÎy$âBÓC”ñ–RñÖQúm#¡Ë™ ð  `t@(EÀ8 >äüƒàÌP7Éi;Ø(BÕ3zž`.p;ª’ }gFyŸÖ–>yNarÁŽ5ÙƒŒc°’ºì:^Q&nP§0þN $È€|fa ##´£ƒp?A , ìð”@ ïGÀ y»â¬ç@cã̱ðаìZƒ¬´’Bí ¡A¯Ü~6X¾€@‡£Ñ˜„"í&KID (G,=–àÿ¸²-bˆµZC€©¹Ñþ>‡ƒœD}2œ[ª< ÀïHÀ6•áôK'Ùi˜ìÜÛœáìáp8 lô÷‘bÇàêL£¶âœ"æø „ CÈ Ô9æi#Сö<XóC¦©!I…Mº+ÅèíÀdÇ’qºˆ…̤B†?Ù(ýB„˜Å@’Ø´Ñ @²ÐwÖ‘˜9ÈAê@z{êò–bü]aYa>,¸Î«ÕbøÓýÞ½SΑð<ÑÛoh€ç"‰áFEHý¥$”°|«É„rÀƒ›„gÏYDˆìþ”r6Z¸ 󥨩ŽO vI6«4£™BøîP än0.ÕǺ"àt a^¹ TPɲCák}/‹)€pÛÐT£ÞaÚ?€ø5`(à‚=€¸LN㉦S®PwG?Ç8|ÐF‡°ÝÀsáÈ À@Ù€P ÀYH’Zj–B’cT¼Ç.ÉÄÉÇþ :’+äYY² "A %4uô;{ËCø/Ã䃠Š(ßR¡·9&á–‘ôi¶J)Ò(¾I×L'˜óFºìáoëUìðd¡~h”(‚“ŽœL‹WXÈ<‘&r6=yŸgcøz†,À™Ôᔂ ÞÀajµå[˜9’ôÛù4‹R’B7\‡i³Dà,Ã"<¶h$²ô‚;+xÑ ¤' Ÿ|¤YÏh 7fðÛræ‡ì½Œhx¡qè‚y¡º+è$çÈŠ’b Yp$(\‚•ô*˯PŠ…=!ïfàaò2œäÙ‹‡“Öb&QP8Gà­ÃÈŽaâ;9‰j:û|ëúÔ0mÈQ“Ôºü…GGhcè©t@@ÀX6`( ·"se¥€ b€µÅ_Ãøw¾ÀÊB|D6”éÚ>êEj<ódlZƒ†ÛÁüG-$ 0(R áœAÆÁÔ!ìŠÎ`@DFJâ42ŠN¾ãjŠDâ#B,„)¢ ‚Škò€‚d `  ÀfÀ€ «LèÀÀà Æö0I`•bØdð5Œ¦ßovu/Hmç$.Ä­L*(ÚÑ+¬Ç"š ö˜áîÂÁôäŒOƒ¾†6¡ÊB”ðn8…¤ge†žtÜÁê°3@,®Eâ0!env€ B$î=êVOï2lh(þIJÁþÆnL¤Œ;äÀ€„!øC’#êGªIbBFôwG8JÄB@` BRA &ìðÞnBÞ"¢SDâ7ì] äTTªÒ2:-&¾„„.ˆ°O¢ì¢’Ÿb0 ÂâtáâÈÀG$vrCXï,d>GNT|Œ †L®ºÆt,¦4‡"2ê)ñ(5DÞ¢^(âŒå%˜v"0sÞÉFÐ#Iîvk澉ή îNh(Gœ1áò~ˆn„z!ÆX!Àà ‡Ä(6JÑÖaÐO u&²l×hX–Él ¨BGèn÷ GÄn¦˜‹:%PÀtÁð´h¾í¼d¢6 oHS–>&áöaÒ¡è hAªà&áøÅB6}#ˆCãXC±lD‘5òªáðDâ„7%Ô."6‰a l”:(.Jl,Ç.'ãjy"#bS/åª.#xðB £p0è5§0ób0@̤cCŽu  ‡: ‡¼¦PûDB0ïv„9Ãt!s5ƒjp‚èt­Â–Ó$›‰$#àwC’ðeÖ9¢,] ¼Zb61þ\çb"£r5†‚8‚*S„T.‰,5£ž§îŒ5¥Üs">¦>èð,ÖФey0=‚žédFIhäHÂ#)Ž#&y`-âD' "elD#j”‹¢‡I*À,!€ÀFàXˆ ,À‡Ä!q¼‡©NHrë‚Ñ&ô³kD#áîš@$G *ïë¦RCà#B!"$( d¦kÊÁ´abÚ!ÊÊ7B(]böCÈáéZbü0uëèXïJÃ)¢ 0Ô@\ÀH €$jðD6!èRAìxƒÂiJeÊv„´:-ö"F(áÞZaê!âM%DîbG5î€Ãü/À3§p.g6s¦ˆÅħäÎ3ÎCéöVCŒ€cž¤Î†”iÚ䦖"ÔÆ@9Šu!ûCãVk€Dœjâ‚9Ò‚r¹âÊV䜾âàHäÏ]J`½D„x4BZGR$˜Ä´Jà}` «‚~C¸#|$  „ŽcjY@>€CI xÁò ’¸¡ÈÅÃü'à ®éš7èfJÅaÈÈáÒA´àj,TŽ/CX)"$H¢Îr*NÉ®˜! ¤!"¼Ú/ÁäáÎ G#(üB’CÊDŽGñ€ )ÌDc?ÓKBئÎA9Ç8uÓ/>$9`(ô?À4×ÐÇÊlÊdæ‡ï!\D#"@)%ôO§tR(˜éæ}"àAük‹Êu‚:º"6áãàN$d¡bLíöêrž.^õ©t–¨ØVòòcü"bŽs'.~‚|‹¥l\;‚á;ã\¦Ðbäd¥ 5±¼¥' +ë¢éhi‘½/…¦ÉB0à3Ã;A©NÊã;kK¡K©"6÷ìª"JÄ‚,,ð|E¨\Ä*A‚4jj¬)é–qEÐosè-%aÂ?ÃØjD¬Á¤Á†ÁÜÆ÷¸R7„\å©Aø"&Hbàvc(%*Vªƒº©¦ô˜¢øD#Â4`TA€H``T@rb„Î.5i4$>ƒ´BÊÖ–öš…‚¬â7$r=äâ=bR´Ò>qŠï‚ÀAHìTî)ÐFµÇ"îz‚NE'‰ s…JZB0/ˆ À(€†à"^THÆ .¤š;D ƒ#ÖfECdC×D<#¦j‡RÀ—iÐ?Å¥˜¢ò1¦C\*ldÏÆ’6ÖFéÁÞrQu\¨C†é9å+1ñƒÆ>zªçL¾ˆ¡ÃjcDø)¸Dp‚ξã‰w¯*¦‘úHÉæ¾„©<­Ì¦ÎHo(ù\ÅÖ©#Å×V‘¾9+´`$5Æ:BÞp¦õf>9Àø ,# ¼6–@µhÅbìDf‚ î=kHÇ|p¦šFÄ;øa.2/ƒŠðd¨T¹Š8JÇ O9©¬fâøðCº"o˜–ƒM¼‹z@(Søic05‰Gõ5„Q¬?¥¤ÉG$!'¼‹`C…Œ5B~ΰ{Î|¢n².÷øþ'ñR!ÖÀ*€6'fNqÀÅep'Mr†"…Â#ãàìÉmF°P 6àD`\€tà0 !Ò'Äh.Ŧ2Ž7–Òf+îAÎAȨ¡À`va–€:úc|IjDV³¾7„<"ãØqCy®èD"Îææõ9ô|.¢ìô£l4N#‚è èÄŒ"n|@¤´ƒc„¼¢4B.LB6WÆB@øbÍCÔ¢-n ¡IFwí„£ŽI­J Ž”¦ÔjDL-ã bæßÂü#Hë®ãjhæ“Fl> äVªÌB rþ@CÙ†bZƒn¯ y|7WµŸBùˆV’BÊE$Nº¥‰ä! ¦A'"EʬD#vƒX%xY(§Œ|OÇV¬¦iÂ6D´wkiÂÁ„Bx‘¢:äV2†9c¡ö.€b0F–ï‡ð5¼>œ1üb*r‰JH¢9ÓŠÂ @ÁÌ¡ž!`¡þ<.Ã!TÒ¤cŽhâ< Gž/Ä,ÄÂ.u"‚(t.$U|$"@.!` D ;¶ N` 4w (Õ©XÇNÀâ ¿§ JHÊJ¬¼‡$´NTz¥× ¯æ!!âa áîAÊ´îý¢ã ©c ã‚1ýÄmvúæ€S ˜êH¾áØš ®à  p`" &%8ðmîÒ²vC Âà4ÿª xåÌ8Šfä*@ä!!ä4…–Y}EãÜYT#éÉE "öF=Ä\ ø6h|dqģÜAæ^?°fà"ªÔjƒri„>-ejÄIÂ$„u$‹£×"„0#B8×Ã&eOG*Ë28…ju/#GÅ`dŽòÃåU¢€d  Y{,KÄRV2tdNÃhr–f爄 ° OÁÎBÎ) 89À8ŸaÖ4ÁÜZ‰$?Ù «§Ò£ÃT¾æ^A£à5ÆŸç✭dðÄ©æ$BàZœ sFe†Œn«Šcd¯çÛñüü}?Ÿïàùü>_/Ù ñØèw>Û öaôŃ/à _`8 þÿ PK~Oð ER0'è ¦À`(óùóO¯Ó ;íöÿ}ÒÚýþù’>¨à‰5è YoÈ( ÷°¿@¯Èeð‚@@þ€àèH ¤<Ÿ ♕¦Þ­Ÿa?¯µú¸¸ý¹f¨’7üú±ª &7Që”`*}žÀÀÖ[–Ø×[ø$™|>^ø +C%©u_Òz”–U…¾€Z‡åTÀ*W,$þå倩øŸË‘ü¢@Ȉ€;2•2ê!ô”BM0¡€§Ò“ˆâÚC*"¦ñ¶‡ü,¾:²½[`yŸ Iæb<,¸ÀŸ‡éö|#°0}ª¡ò€§Ë^ŸØ&£J¸¹‡èGyLh%¼}'ÁîÛ1üÈŽ²çì¤Á*3ŽŽ*€8 NYðŸèÌ?«„¬«r'`( €‚°8  €6©x{žé!ö¨¢‡©þ~ŸTÓ2`"ÚÕ­¡îÀǹðr'éäpž…YÄz•çIügÔ2€80/B¤J ñý;-Ð#€’¬à$.ªB2)Qâø=E†€‚A Ñ KÓV>Ùö¦4,u9ÕãÆ©èú{Ô¬ªÈ|ÒÇÜM#à 2ƒŸà=P¿­ÊšŒ~gÙôyÌqðê€h|ºà:䪹gÚ3€À`ÀYðy-‡™å#à 0©6ðžÇ¾oésŒÆ}$:—(¬OMD×ljQôêF†ºx°€è(^Ÿ`2ÚGñè°dz~SèO*¹Þ|€‡¬{°´Òú¡¬”t(çéòÌ”¢@w+€º– €§ÙÚŸ'‘ø+‹Ð_tÀ3ø ʾ®Ø§ø òúS±@Mð ù€_¨³÷A=€8Š~?Ñ·µØ þëg_úM Iù=ß¾Ÿ‡:µëÀq $&ìÔŸ§Êü±¨@$ÑŸáôÉGÛöÜ è ‹€Œ«–Ð î~°ÏÃ*µÀ2„; C,©"hØ (§ÛÞ.ëZö~§ãÐÜLhŸíHº"1zÒ¨C-9ô)Ëð×€€D†¿ÏÄ\¥!È´ ªlhy§ùì޶ͬ#Ÿ¬šT¨€¨r<•)@"<ËLФéLjÒŸ©ZiEy¤zª©âµŸŒÜ>ß-À+lÖ*Hê1'@€3Há¡ Ð6€M©ú¢ËHÅ€`H6­8‚Gø\ €Lƒ x ëSiøàÀ\3T Ów/Ç”|ºaôžViÊrŸaÂx›§qâk0"ŠØËu$õ¯ÓŠŸ R‹ª0|Åjèɳ,zw@H¶‚ \A(#}`;Äy@–È@‹JF@ttz]/AèØÍjÎ}Ÿó eŸ€Yò{¤Çáî€øHŠ4tä}žùè|±9Ë7ŸîëCƒ.ÈÂÔíRÀxç¡ôzžÇ€—Ó`r¤‰-’p|à:f.d|<§Ñà#¼ÆRÔžÇã`í±ñ=¹3 ÜU(v Yözž§Éñèjaÿ€€L œ¹Áþ/r'Žá“{Ÿ\:[¢ªc^~ˆAñt¾–±ÀZ*ž/)áøÐyê¥m(@hÀ£)[{®ô9ôyÊ +ÞËŒÊ”Š¢³› ²N‹I-¢Gø¶(ó”*‰o‰á"À0¨¦“,Âxþ3D¼-£&EGȤ8{&îvYA:'¡¼€©˜èˆ|ËÑéŒ%CÐÓt“$Èúz§eS(çÂj‘næ# q@8`,Æ“&>X1‰"¦Q Ù$æÌ©FЍ€qü®Yi¥GCíÕÐÀˆÐü8ñ µ€ÄÚ<@l!…Õ,w•R]²˜)$„tHšmFìz±„è`ÌÑ’] IM’¢–tJaž’¯îeç2ŽKáf‰N6n«¶z§Ò©? `°B ÙRlÈæo6"–t qŽ |¼ ñÚç_(²£ìZAè?óÔ¢”÷2jŠ á—’âæÎ払?ŒÔÌqcñÅ:*äÇœçǸFH@Ð à8€år\Pà ³Nh@\êEšU±Ê<Èê`nKAÀ<ÐÝðo¹€ùP jtó›YtO\˜Sè̼œR˜ƒæ*/- ô¤t§X0íÀ,+‚ p `p‚3Îë°Yg0º<ô^f)p2h4Øbà„ˆj6 }ã@vK)½ƒÈ{Ï$dÑÜ8 6¦½Î<²(ÁÇòr.yitc›Ê{`Ça=“ÅO;ǨûÏ™•ð#Y²#d4~ºo™Œv'̼’ÐZ se£áë¶#fKÀ £øQîìdÈJ 8Jò&DÀHù·Ä•™)ÔMšj’E¸""Ö€SGAèå:¨”`€4t…¤ýΠŒ‰á.AÎf’Ì’ÑS¡x/!4”sÂÿ@eãëgoŠ ˜|¥/§±ê|ωM§îx´&†úSÜ¿)¤\¡™#6iŠTn2­™0ßÓÐàͱÐ9ñð¢RÜïÎÿc­ ªÖØä½¢çlæD1ê] é€c˜{è°fàXÀ, °¡ê‰Ÿðçä‚rÝÈ&©:-ƒ"C ‹«`€,MPÈö:cÐx²d@@-`ø|`˜ãGs<¬eçÁÔ鈢ižd¨|1ž‡ÏN€ 0L8ù`¥ÁNÞì>Iä‚:%þ€:žç‹edkª6ÑP¤ËUUE:4…‘ç»EŸ‰³f¢ö´QËay.Ÿ¥*ÍIj©)¸ü}š6^Ë 3™ÅTŒäY¡±Çà £™` \‡ÛÝ-„l£ñêœÛô=“$Œ–¾*]øtšÄ,Ò‰ÜO;ƒ,ÏDÛjôtT—Š/åÜv bÚyà›è8yïWާ+B­hÆirNxGÁ<&™)ò,A•Ë3%¨°¥œÃHndA?*!Á"ý IF—åàˆ™ÖÜFÏä"ÁlÆQ–É@‹À"øŸ#&\¹*Úˆ™TžìØùCôx@„N0â–4ÀƒJ 7ÂRAÜA¡æ/ Ôúv)ƒ ¾4f\¾JÂ×CÁæQÑ0Fƒ3AŽ:´âaŒ€Aö©4Mñº]FQ¯š4ŠìÏÞ%b”ù$ÖGø!N"Nž*#f*F@*1ú9ðÓO´À Ñè/#Ž`Hú#Æ&”k:DÆBÅËÂL1(3#%ƒ6LÄ Q-ó*Ï~%C^²F:Ñ>sçúkF4 ‚ÀÐ(`^jÏærB„6HT>:)’¹à`©ì:ƒz˜„ä\Èš‚LWŠ€çÔ"¤$2Âø6D*;¨Òä˜Ic4šB@ƒŒFf‡Ì|¤–;¬pS£FG¢;Á¦¤Ç-HIP¶AãfFR¬ù©¶;wÐ4Ñ H$–XŠ"Qã3k‚"ƒdç2p"-ªH!æd@J¬Ò¸%†}Â"uãPa<¸#04¢IkÌ-2#÷6„öA¤¥1 6„°(„~/.€B"ü#ÃÞ#vì)'žÇäp4bþu@]£ä@U4ƒ¨4›n˜@ƒÚh#°ªbžãt/¶0en‚C†´â¡;ññL†^†µc­.6äcFÃCºå#2Gö4lúM&@`ã:/†è.âxnâ9#ÃÔ6®èzîN4oìŽ<æÚÆÚd\½×$éd+*ƒ²Œ,ã;®ø¥éâG#©\e:}ßsÕÀ0íFÏÍÀÜ­/¬˜^£YÂæ"SLD"–áèÁnaâa¢l:F†%£¼òd 1bòÔT DdÞ’“.ËÂ-DÓGäp;.œ›TŽ?@Å«$Љ^Â&餄Ã#áA‚F‚.%Â0Imb#Õì’p3¬5oì>j¢Ùâ*HŒsãB@"h`Àˆ€àTü@6`FÃPÀ§f|£@T©$u*1Èà7büScLodd3Aþvw~…å>éÈš=äN/°PqDÒé¦þ)AêIˆÒwâ Oi2krnÐÔfA^Â<—N‹V%qîÌ/Âè£P ¼GMâ=c·xL2mc1H÷×€@C¼6¦@–À‚çÜ¥‰’;Kx‰Ô@†Ì7ñç^$óÁä[,¨€òüÃǜÊvVà)‘rI‡’i€v°P"‚ÊI£æÌ9áôA¦T6cZž3¦Ë´gˆÁæ#%oc¢Ä$B!Nš:É-Âñxd(‚ž;#„7Ãðc¼6$‡ƒŠ`ÄÂ4"ð/âÜ9U,¢ð= rAÉ pÎÿ#^4æ¸q'9>lQ_@lĄ”áÐ|¸$à>u&£^$#¶@CQ|¡ÞìmN-TI ƃ=:ï•8 #~o§€.4 6`¡àáï V” BR6að ŠÊaÔY¼G l"®›G2Ö`Á÷Vå–ޡ衲:À& X%lÜ"ë´@è"‰¤ÔUB,hb g,ñ*JBŽÖ=€øÌ**Jù££—“[a†z'„Ÿr"–ÕÃ’BÊÁdM2G2¢22'Fg`T¤ä;aü‘“ôòBÒù¤ŸÂ A± —B &D:qº"ÄLkBüyB¢Ê:'.B¤€yD›© ?"ÖYwÀy£Š:Äž¸(gÌ6„–¹e-PÀb‚DLBˆt!øeæ@/™-:Öd €ì˜Çúƒ¸ãR:™6¼ŒòÆË,˜~!ø®`Jø£3f#X3KÖù¤·¾£,ÝÇ™ƒö9†TÍÙ-Òˆdq gQEh"\³J›¦Y/Ãu^dT1ÙöÏ…RO%Ê/ßu $ÁèaÈÁHM>Ê y¢ÔÆn›(QœS¼"(±€/%ë’‹‡B0²¦Ni.ƒ÷24ã܃@‘‚Ndaä0Y4‰ì2ÄÒ®Àû"WvŒ4Ï‚Í4·Ä01#-pvá‚-'¢ƒ‡Úse*;>-ƒÞà0`  ® š@ &ókd ""2¸@O± ¾ZǪJ‘Ã&N›Ž"çt-ÅB€¼z b–þˆÐO‡•teÛ:"6BBZ3v2ÓÂûÜ 9ãÆ=ätzê-©i^cz€é’¼ôäg¢« #:1 Bšž"O³.…,ó#‘Eïšl` “9"dÐ#ºF€ù7ƃ b”¬XÌV!Äääñ Âs0IãgÏòÎ ‹ç†pb<„‚“aì0‘rTäe¯â4I’Ðlæ%ÑœIi”oi–7$t>iL€ À º†àτչš0ˆ„fb•B9áÐPéâ!—r)›–yu ´w˜DM8ª~D>dèŒ!fq3ðlžBCæ1ˆŸc`7©Ì)l'«þ):ÞjþA³â <1 .Ô1«„ià &LÉOõ«(@ÝÍOD„Ö;8š¤büª¯/Ȳ¯š.šYú’*€_ÀXÚè Œ7¡Î]äiGý$=äœ/¦~¿£¦;Áêaà¡ÈaÄ€^á® 4€éZ`Ãé%âÔÄHÎ8ÉF~ˆÂóaÓ€FK0\$zK"ÜBPN.㩃N@-Ø-y g£l2C™yDhè²È“8ÖlÂéÂà"ÿ/Æ"W¬Læ¢ß*J£2àošTÔ¡ø&.ãLÕºF;¿n¥:ïŽ(2de‹œ p+õú¿€0 ¾€÷Ø ðà`Céô?_Çûåüÿ{>À€gÐ Á@'ÛñúõÇÁ wð. úd ö<€A   Nô}¿Þ¯ð  QGøü¥€_àgøþ£ƒ@à³äù|>(o`øQÀ`H8øú~/Ú5ê0}½ß`Æ&õ € Gëç g Ü­úþ£ÜÀ '«Û+…T€H Ÿ§œ…ãs€ÁÀ‡ËÔýg´Ýí¦ãÅ’í àçàÙ]wÌ€oêëê~ôhì&¦òáY¬ëõÿc‹€×®”EÿèÁ=»þ9[ǰïë €Ïª!‹ò{£êx@hAþÕ€\|!™ð©:‹ –‹+Gà裇éð~3+.´€‡Ùü|`@r €ÁP\èK¹ô‰ùëñúø€ @.Ú Á"!j D  ªÀ$,¡ª ôËéèÀxp[:„ÉÊ`î#`ù"¢ãúÈÊ/3 Ï#Rò=çÜ ¢O@)ò`Iö~“ñæÇÀŽ€@:.ÉRh+¼¢gùøxŸÇ©âŸ qü¥Òý^½É\‹Êm øŸQAü&ˆœè¿¨hSãJ"Õz…žî¢@Ï(•|r²`;:|€ÑRŽ¢zy«§R³ z« º(¼üÄ¢7ú{Ÿ”’–Å€pèº@¬¬ œð +‡)ôz'äÈ‚(p„žÇò €À8&'YðyÇÑîø¾ K#TÄ’2õ€T›0ͬ‘æˆ,{ÂgÉìy£ë’PhH <¹äÃŽ¯jö.À£Ë*€y°1HtÀiØyã'ÙŒ`à ࢀlʳ"çaø € #ýþüB@0—ü  ˆBÀH[ö¿ÀOçø ¡wè :;ŸgƒÅø‰¢Á¸Ýî!Ÿ®—è~?¨Tkö8¿€`gãáõ¿\®‡‹ÉÀàj Œ°ðL, ÃÀÐæ }èÀÈKÔ}A€wø@à ˜ü? (3ì{áÀÏ÷ðþ·_À@8ùŒ~"œƒíó}`œ° B}€§À0>h>ßï{š!o¿bÛ ê”þ„âßà›°TŠ`â[—þZå óx‹Ãì >Þ€gËܾÐ#Z+çFËÝ€hMÒû=€@€_Áþ|xÀ` *©'Úœ{§áê!mH¼€.ü Ã@ @cÀ|¾Gáö}€‡áòÊà(9àz€'‰ì~2N²ö-èx¡"HÑ4bŒ ó²}A Ë^‚'ËyúÙK0DZã·+ãŸHÈÜ'ã¢ãhÜ0"Ê`'ÑòŸ'è±ìƒ`¾q˜Ð€P@ZúpiYÈ~F¹üOœ§h{žA9ðgÙük±ì“ ‹Aƒà ì;T@Qú¬‡Ñä~žÇš”ë€À8©èáþäÀ )ö}Ú@ Ž€¬¢¢ù4LyúÆ!¨29\€à3`ãP“ýŸ€ °~Š èÁÍv’7c´Gùè§™÷ €1¢Â‡€ `ø +à(&a*ìàÀb¢x Gµ2¾¡¯áôÍ è1ù'O¹àÃöÉ€2ð©@8ŸUšœ}€38Ç¡î{ž’®@/ !óqÑÔúeW@t³›&`X²Ì²Ù2ùðÁÃ`#8Ì©6Rçr³çØ Ž/-2ìöT‡ýhõ°Žûº|ç±ósDH¥m\LÛ ¨ÖlzãDô.1âÞh0×`У( †Ù@°¾¸Œ°Ÿyú{) Kd²Èɇî¨}@6Pqº.ËTÔ´Ûk†ÖÀ3c«jÖm8}àyôzÇñâx “€§Îì4¼ hÔAë3 ;ÖËŸ?ƒ|€ÇðŸçÌXÆ@zxºõ£"¡§Â|8 Úõ0.2:"€|™o¬·òPº¿Lœ˜|çíiœç¸sgÐ ­GêÉ @°_H™¤¡€aÔ=‹a NÊU`cѬ!ÐX¾ FÏ’ø)¬€À"@Xy21äJ1@D°d<À>#ÜuÓcÚm'¤-b£4Œ¬Ì>%¥ÐwQ„‡8¿$ @2Á8JÀ+¡Ã€•ÛYI¦] 0y 9z9£Ü¤²2‚\ù¤5€ ØÑ\ <~,ÓáÍ9J CøÐ¿aü@RåMhmc“™ŒyH2de '¤oJBc0ç&fó˜Ã+‚ŒÈA ƒø€´X‹tÝVÃìÝHuŒÈø ‡ZC €ÆG9–C@_ °/†ˆä r!êÇšÃv‹€¡h-Ï‘©*U;p,Râ<©€s–TÖ^ƒ7Q¤€½(ˆÑj\¦Ê.Lb(>i©;.>¬3rOUH Y'!0ãd8kƒé3!Æ,áÌy—Ÿãð„O# “«“­<€8AÀµ^h¸û‹ƒøy!ê°Ï‘ =zbÁÖ0ÿVfÌ7”òˆ‡Ø JçಜڎTZI_Côy¡Þ=JqëŠ}±"Áü†’é™ Eƒ3;Ð@ñ3 4Ö€çšá|!¤¢ "tàú¯"ÇEK »”ckŽ$Îþk^ŠÑ0ÈHÙ¤Áê=æ½h.ÄÕ÷¶R˜„vBCÔcÁÐ!à4G¼KTz“bë&†šrŒtGËŒ™¥2K=e£yÞjº[Æ2>¡tºbÑúEŠâD€F,é|Ï {Ùö.RÓÁÝ7WàãLŠIN0FsâÇ™¤º"Ç7±æÐóS‰_#'1ì_Á’€¨·0÷•Áp-í8`P‡_ê´äm à˜Ç¸ýn¼zœaîQ íjÃÐvaì=€þjŒqr0 €Pù4f™[캇(÷¹Ç@„“ÒCZv=ˆ÷N'Þ]§1X`)€@ˆ€až1ä>˜é@€‚ Áø7€P!Ñð:c7Q"·”j‰é(­eã2%‡ ÅÃl`þÁ° È cÆEÉoZr$tŽ5W ¨¯sø{Ì Žs¨M‰2™Gªâ5.¨œy1›ñHg¾& Œ]Ra/#ü†V÷ócS&‘Ï™üD'±IÞôàAº/ð-ë,¤îk©þCÖ’(ãCI Äÿ>étŽPZ-QW¥é¶á“³OËÄŽdlãsš˜cÛ›#š¸É¤³BUÂ;Â& Öb4‡ÊŠe©—V"$GqèrÒ†ìÀ$˜ÓœSf¼§«køûÓ´±X~ð®P”T±ßÛæ‰ÆK4?óÎ>CÒr=%\E¬ DdhaÚ5$°—6þ<IÛLP:H;Ñž¨Ø a ;ÆHÎBüw (?G¼3ìØ…Ýª"30ÈSoºfG¤;r³ì˜ó˜THÒ3Ÿœ ¥ròµq{dT{Aaîô£Ù=¡¨„ä”NJÒ<<ÉGÒæi—9p`Žp†iAÈ€¸h€*À&åFpä¾€#(-Èúz_Iæc¨z#*ÉÈÜM#)c^ŽàÊäaì6BT?dkbÕÁô ã«€ì­ø;ãŒà§ÞÚ%¢zÈ,ÁC'ÄK£LN§RFcwÐ}¨€œÃc }ÇÁò³¡øãoF.¸ìþKð6>ÈÚFâ jÈØ÷.ÞBì£ûã~ÔÏ&BC CXŒdKä$-ð†Ed¨ðÄfJ¦ô3H¦ÅËŽ‡â:/㯺.R1‚ £t2klKCåÆ@EÀ-'š€-:Bdîqæ`qøBŒä¢ˆúêcT@’.)Ì É¶=K@4Bþë¡ðy$Ä˜Æ 7E>ïF2c re>¹#$ìR„` lfÆ‚2YAüG!ðȧ¤ƒ*€9æ¬f¸aâ!ÜaôAÔá¿ L€€:äDà 3‚2sb3"Ò¬ž""E‚\ƒB$6â(©DÀ¢LÀ&@ðR¦DÞ@> F€b x@( G6.ÇjH(F81‚*-ç:¯¡'³àâÁìA€áÚÀfÁî 8à`æÚžä®œÃDR®¦CÂ'Â&!¢ø bê/îAç#¤ÚB2ìhî¤xbÂ2zÔ†0¬Æ¬N£ Æ(–£F!©.—c(˜Ë®Àáâ.Ž:E„‡nçãt2æ „nVk’fFõB8-#Á+ÐN᫸/&2°„"å¨?f¬>CUG”®hdb:"„nèBòÏ.VɺœÄà3,Þ÷#Ø|,Hæ\z0.4#†8J„À=…¢€b@ ¤crY£r( ‚ÂŽþ©£‚ 4)îÕD2Žƒ—«ÞÃç¬#ø@£ö_¨bïÌ"h,¤‚âAÕ€úȆVÍŒ7$;cò„iOBœìd"7¦¸ðN)¥’'E“¢Åfã!Þ!ˆ!ú!¢àaàÞZ%¯$ºC¥‡Â(iˆ=#T)CôŸ‚8h$bùÃT(«¾)K¤Úá#—äŠ4+T9¤HDFòHâÓÅ“-²àµF¡â»&£.£ Àæ<  Z`Z€6@àûäVlÖÕÎGg†AîG…ô#-Þ#Dë.€¸,hcZjc*x$î®f("3 lä À(K?ƒtœcæ° 2W ø#b,ù!êû¡ðFä9¡òfU ÒƒÃö=‡  ç@.'üjÇzNÌaÚd‹z„)>c,â@D ´^#Ä$­ìH£t0ƒ^µBøHŒ(KŽ‘äìƒò®7¢”4É60(ç# a!öC€O¸'Dú.€N(5ç6‹Ä ƒèÜÃ%MË-âè'£P.ü_À‚4_I=nCr£ÐO åUÆVˆ ".äXr9)„“Áüxc$=iZ%Ð\î"GµžÁ#šC°|pz4Lrcr:#¨,-O œ‰ ô!'ê˯¾j‚aܧÁÔáИJ€à6â XÏ„0ŠøœÇ&ÇòNÈ6‚äjòh,¶É!fbŸxRµ8¡ àNà$>!ðkÁèn`<ÀM"tð`•$áÂV¡ð3ƒ€«kAC£–\¤ÀQÂ%ej1áèáÐAÀaÒd!¶à,@,€$®3@€ô룲°“Á7cMT1P)dº¡£Tpé-j§¼s†dÏŽVÃ.À "K´Xo ó"'B|’Rª›"3jÃBF$/8C ,V‹b–4U¿ ¼ÁS¨\ ö1lÞà@NAì4,âVðÑÁþ¢_Ó¨˜Äz]¤5„Æ($úåü#cïV å¢Lì.Áì@C¢.'ÎIÆZLðCfçFÃî£T§žDLªæ3ìLxrÈ>ˆeŠ´ Œ1ã#²ìA£Ø3†hCBt½åŒ=‹ß;k4W ôKCŒ7ë¶“ŒÞ@¼à"1vL/ðløC/ ÃÖ2À ‘¾EfºÃZ\¢íMC€JB*bÆÂ®Æûá÷Mà4¦Òaää k£h8bYUOq¥z"f.3"2It" Fwñ¥Ð/$Ž"Ã?“·k†¬2ã/Aâ[ƒ0% ‘yh ƒšq€v®(Y$´OŠÚÁðo,Šd-l "‚b@Un€_65·ãXÍ>SƒFà©."Ã2ç#r%¤—„z«ÆG…R¸ç‡wãV*#LO$ðBÇÿy"úseš$Sõ¤Ld&6O’wsg°oÄo©„»–ƒî÷cNéh¬Êøc„Í$DW¤Í·n)’¢0¡•ƒ²NÖ›s¶2d«5l–OCZ‡3Ã'=€Cz„8©UXXf:2P4çÁ ,ÖBàxaà|ª™ô¸0’@J„>ÀàSÒl;"Žû«ðz(†(&.8¨W=œÕÄFÕ6"s˜Œ™ÕfjQfd2g %fü6Ù,zĈ`C(%•wòȉ+lYM$¡Ñ^?L3Bö1b’áæDìƒé‘#Îx36!îëîÒ…¡Ï7ânÀ2 J}>I‘:/ˆÊ9¡þqgµ«qä#$`<¼3(:ñ¢‰‘Iädaêa :€H@f`z , ` !ÀLË>8À(¯z c#%^A-åÄc'¢!ØúA¼H!~ (±À0@F¢4/ /d€yCºeY-báÙD/XDMæ=€ì1#òškè´ ”¨òŽ%b"ɺBCNBO ê’Huv@¢ŒSà&-™ä(»ˆCq4£oCÂ((5ः(¹GÞ~#14Ó¢¼7‰°8¦;%.#§äNé­N\e\R98):NcsL©ŠZ2®¶Å/æd>쇂>[‘Y$àD`d®Î,¶{Î&@˜5•f'6«TeÀbÌË`BÊvŠýÙ¾9ÅÑ=z¨£V#ù¸çšžfVVlîæc¢O`m¢,1ç0/#Yƒ%šmäôh)GÐ>†,°‘–NiHQÊå£yæûä¨Á²MA¾áÚ°AÆAìaàÁ¶­ `±ì‰®)i´ÎĈ,Ú‰»Vâ“nËøúCQBîcÃâµD 5CMz<|È„fšÈVÌJ#fÞUfi›åf°*Ð $zÕ€6I`*ÀF`B ©âÄ’¤ñz%†:'›4ã—éŠXc1‹´ý–*%˼µX#ƒÀhVöG¯ÄÚ#/OÌ>ãÊ>å¢ðÇ6zÈCš20—…lc†°ôáæ-ê'æ‚Ú“x3C!Q¥üƪ½sg˜ì¢CBCéÒ6PH…x Ò¥zRêUQÅ8ˆ¦,¯I¶øºF8yÄnS¸\ËkVL¤îBY¸¤†¬ºqüâ2@áÜÍejc£yA'¬Mi›$îiCßä€VÃ"Æ5¬Š=“Q’ÊHL½È?‚–Á¥›=œ×A¢’>BJ˜ÇåÜG ,æ„C®vfD:Z"z5êHoÈ.(Ì>0P1äPÁåÐ#¦CäÀ£LJ¤4GÜy³¨4´¥paØM!ÚAÄŒzÂ9 ,rt;" °ˆBo@{ÄnXgë’Í>ƒ¹«BN­@‚e/¸è¦å:D aç‚kÁäT`H€Ng"Aè–Áì%h| D”JŽòj. i¤èBåfÁúÕÂAÎAŒÁÀT@LÀë¬ZYÍäðz&ŸªfüEäÁ§Á£"ôâb–BU mgоx !Y$#¢|F!‰ž¯K’!Y׈8©xÆ/ˆæD#¢~ÎnùÊ/2ˆbɇ3d¸Ã’Ñl´âîàÂV#â'J€CMkŽoËŽ èþ>À ð~€a 'ø€ Ð×ûýðø?ïà ùb î$ÿ€€¯P òú~¾/ç³ýú>BP0¢?@7ø<{¹Àøý¡Í& $,Fßñ î*ˆ_G»Õò}¾Aà€3Ð|!§øüÿ{Æß‡ëÙó7áÀp( ô–‹ÓæCÄ‚@ðL¡ò¾€ Xî}>V< ÁÛõôþ?co—à ±2‡‹Ö%–À 7ÃUêûpµžÌ&»á|î|/—ÞÔ¨Ür@€ ‚`/VïŠýæ@Ñ}´£É³îÈÁ  6§ž%@(Þ©X†gzx iR¯Š+n}GÑô€`äß@ @aü‚`z Áà@ÀØ ¾,x ¤ ²&¹!à2¼~€hRœgáý«¯¢”‰ ©þ} €Cl‚€'à Á)aö¨³Iäª}§€ ì­**ŠÅ"oÛÇñâÐ*‘ˆ€à "§©üÀŸïx5- Ù÷<` ¾ž,¡î±ˆðŽè{¶éAø@Sb¥G›Æy¤žCÈH ŸÇÉ앾Ô1þ“¤HKª9üw³.j{Ÿ’|_KÀQþ²'•R›žÐz&ÉÇÉÿ^UÒ‹^ù£|©J§Ã"Ï € Æ­·¯ù1*K"H†Ã@0!óSÇör.·Ûgú䌜yž÷£Öñ‘øC 9üÆ©@C#]ŸíF€ŠRJ$HT€6 þå<Ì[^BIU$~'º)o5©ø¥S  N'±îyŸÇ‘î‘€ÇÐnçÉÛE'iìq‡‘·dH0 0ਟ+áþÉôuÀñŸ8œŒ~Ñú€` ýƒ?ŸÐHd6@±ð ÿBŸïø¨ ‚@à‡Ø}¼ßï‡sÜ(‰Âã1ðñê&ž®Ìõúþ~Æá@ø ýE€_à0 ™ ÑŸ·Ô-ôòy?€/'bìÙ^>@Ñ(Yú# ƒAàHHLÀÀ7Ø ~}ß )ùI½€_±šÕ>ùG¥Á¢x*l2”ÁÒàp8¸ ùL‹/TH~aßÏÈ3þƒ¤€À·À55øý}?(à -0 ý~>ÀoçÈ!ú|Äd±øð Z¨Ý/û'ãów{S@€ Ÿ¥Fð/ÛØ œþÛ€Á/À3ßvüô/¯ðM<}êz”Øç½û=>Ÿ@Ÿ€ Žø|à #C>3¢.˜¹Ÿèª´Žãn{Ÿ Yî¹'؀螫èÁºg±ö¿¨ š(çÊ%€ÀP€'Ùò½7Kì ŠKxË8èB•¹Òºþ©/Ú ŸçÑì‡ÁôkÊFûÁí‰ô)`@u€ 1øx†a°{FÙàuÇy¼©€'‰ò{8(ºˆÆ€jc}¨1’Š(‡Ê.ÝJê;<£j:ªðµíz @¯Š*ÕN‡«â|:+˜.+Ø~Ÿg¤€z€êÒš`P @0€P&. ÀVŸ@B žéú8ÏÆRƒV·àYü1šL3ÇÊ ºXm óÈò5;FR ûŸÀkØÐ¯€ð×£‡ùø}#.à ¤Ìä|'Áïd«X”®÷Ö6!ÿ-2 J?0¨ê Ï(àDŠª.¾#'À}` |ÐÐʈÌè ¯'囥2’ÖâgÙðŸ-Ëi €73UaÃçø ‹*9îÈ78”¥‡b¶!„¢6C  fpÏcLd Kbç¼—!1ò]GÐô<¨ * è>€h%að8ÙYA¤ ¡›³¢SŠÒ1ìu,µZ­¬ecÀj>¡´:Xñàq@&@€@hžÐ’( {¹D¤DOaF}³š2úÃkQ> !T¤ãLiˆ[Æ#à @1"ˆC ‘”ÇM¨ºvâv•2YX|—¶nA ³”U)\€Â”Lòz²¶$BŒñrcEõ¿½#ŽŒ‚Kƒ(ã”â ?Íh@}S‡û–/-›yX`Žpø#,´I'/‹ÙïI°‹c2ÐÎ*P¡êTb‚ aâÖ¡Úqzð@2À À6`Ù@"bh Ž#+ªy.¼@¢‚D#ò$àÁþ$â"À#-SM ÑC#À; TªM‚þNÀNÀb@zHX^AÊ?€bƒ`"1ÈJã> B0‚gŒecͰø*aÌ¢°(ˆL!˜€àªX ¨œàJº°qÂ>-ÏÂølì°8åäkb³äèã#v"â,:£àŒ~— R)¤À1cZ" RªƒÄB@:ÃH;C+DdqÏ”;„”Îì(⦠Dð5@TøcŽv‚Ph"ý§Ž—Ãâî,A #H•+£'(wƒr0C¦p'’K„¤4gŠr‚ä)BæT‡€sãFqæ”"¬´á@X…ˆë„?¥†xÄ*k²~Ò~­Rú¤à4 Váöè¤ebAĬ©BôõS>)À[´‰û‹"äâúiB‚k$GÃTné ]KÞ"¢ô€u%*4†ß;/Îaô.Å æcòôáöÆÊ€/fÜÀ& ìFaæƒáÒ2k1¶ËIâjBŸ&ø8#d2Ð>Bb¦6ô¸DV¤áþŒi¼Ë!örgO"€î€ôCt6*ÌÆå€c&òL#Z B˜ h67†²r¤ì*ƒ`o%R‘Š8Âø—´D!Nr•Iò.¦îkjÅZ§Ç²±S»Jáá4çŽr9Áø?ôöZEˆg¼!êAä0cš ã>†ê0)‚&O`uB¦F'è#3þÏfŠ#%h"ìNS¤0BÁô—B¨”ê´S®¨Hæ° ¦€>!òÆãª.Â4"@Lî:0ª5¬ ;‰&?Âú7C>.U¾gâ.PO¦Il¼"âz¡Ü¡¯<¯L¡ÆGàV@ ,%j/H¸D–Ž ÈHïÄÒ‚Žº <±È!Ã,#1ÄЩêm ‚nþ‚#êeæ‘ß@tAò 7ÓÆ($´««/Œ1ƒ!b ,†x‚§Áò@Pda¢¤á˜{Ä aúA€ë€"z@(Ãh;ÉÂ8šEÌìžRÜ'âˆG#Ê$`@$>ï°ºj"aíž:;sâ †–k©ìJæƒo¢>"Èö/¬p9¨|Tâ6" Vf5 6?/f¢#m³ 3°•déƒT7®m$$x® c-îd #üh°R0œt^"åHÁÅZ•ƒòT„(’b è&6 S…/äî(ªdç’”€ç‰)ÄLbã^<Ãô­Ã¢5lpV”št*S¤X=ôí3`¿$è¤èìžDÀiÁþ^P&/æ3ÇO` °#„D7DË&4f¢L' !LÀGÓè®%^#…H?3z(/ž4ƒH8ä®xÄ(DDB<¢<ÃØlwA®–äqŠ)À$æç c£ƒh™¶ŒÄ›ˆÆ/½LAÆØAÌÁÖd­EàáÖê†C8B›&˜N&Ñw "Ð<3ÃŒ>ö¡ÆœŠ  À$Z²~à@gõÀ@YG¦þÓªNtî$$G:"bªqÃâ WÆVx‚=,­|#!B¦N%@^vØDŽãx¦"œTîNoVcLp"Xâ-ÁüûÁøböbóT£ú3SºX‚ !ä¡à!ðæÁñlµ/¤Ž?nìDJ5<çJ6€ÿË@KFFÿÃ=¸ðqÃ~YÙ,•OuAè6, ºãÒaË~'ä-Q®Ž'.E>$z©J0G¨ºïD‚ýŽ=¤ª;Ëà?ChbN¼4&jï.AæNŒ´xéz×CFRå\ŽÃh¡Ä~¥:èØ´”dCöh´ë쎗ÄHx¥†p3ì+#غ†”7d$$´šYô1ìvF*']މ|ëàg€áî6£ÓDè:,R2Ç,Ûâ’t@GæuCôiÔ$)•ª=‚N@b3£·Aˆ¡Ôs„Áà^Ö–/`"€.À)#BiÅ wsè´(áM¨3èx¾ÕÇ](Ñ#(ïöB ¶H‚gÑ̉|HæÐJH f@v–dcaÖU¢8‡ÉXJNÇ>ð¤Âc¦MV:Ǿëáæ¡ÀÚ A¨ná˜mà‰$¯Tã úà , >¼µªHãî/é •¦"¦ õ>!ú¼¡ø-„fÏVäOÆ!QѽZ)X@Kªæcè?£V?"~8 % ¿VäC2¦sCoµÐ‘VŒ¡;©®¬œ†kˆ"½$FU£ö)¢¢LåìXáþu§–(Bk¦˜k£ô3'Lçè6‚Ï àæÓVæf8ÊFp¦°Þr²º0&½„#¶"#ƒ€nucr 4Ðô.BûŸ"*T×4ƒ¬5C¨h&(éV`jXÀ>âŒÏäY 4—ÜN€÷&/Cz)O ¬–A¯zãvcþ"@Z Cà ÏcÈN¬­"£vGÂ8+D:í‡5ŽäªiJR7D&°€ç…èb{ú)%ÖŽ+ÙwTF¤aÔDŠÚäDS¢J?ÄÁjóê=áó“½>a¼ç"\®'œâñS IcBjé"œC¢s` #'¥a€<‹‡ò€:@$,ÉÿIÄÖxÎf•œÒ6Aê6 u²ã3ãÅ1*NH$ŽGf)T„EãZnô^¸ã-«j1ˆ€ž;Š^€(Ãp'µ ˜*cÆÊÃÚ‘£/‚ë”z`—Â,H#Ħ„ö¡ÝÀã¹!ô‚ÔÿÒÆÃc<%b‰P)ƒúgîè½.Å嵿/Od qÄäPÂñ5™Ä9Ø8.2”"fGNóé`†¹‘½8#dM^¥áWS`‚Hå3áäN³ TÓ>j(ÙxämÃíWCh%ÃŒý€æî7ƒ¸gÂ87ìæõw¦2ËP FB_YvÑWÆ>GnÊÄ tà ¦B7i^3ã‚7$/,¡|éXáBˆH¤FHã5gùVÄ/ÈRæ<ÇèFn¼éÄVib9§HètååJe@„:L#m1cV-FW¢¡ê½èº)aôÔAüáÒáÆ!ìáðàX¼ D‚>"Ö>$‡&¢fæ$‡È.qÂ6ð&/Šò¥@"*¢2:Ídiwl_d_( ÑØÊÀL€H€`Àx@: $ô©>ï( ôß“z ©Æ_íÿ#¿ÀW("tñ~?×Ð$¿8€ý½)ðg_ïÐmUì÷>_/Ð0 ë6=À²é]ˆúš‚ `·ëùñ(|Ö %øú~n€X3üÅ€¶r¹žµøÿ}@ ~³€€‡ìYû³ÙÃy¯çç ýîï ~(Ê:œ+8Dž=€oTy`!â~­'òî{Ÿ'Qî|ؤ@ð¿£'ð7À1ì~€@°"@‹Þ‰€hð«p€ `¬Hp})Ô¼#@êîŸGñö”$¯£´Þ¢Î°@Sœ¼G°ìh‰ø:€~ S| €;¬ñÇ ¨:NÁä§¡þz'O;~})‡à7€CdǬŒƒ®*Á.ª"~Ÿnëêô® :@É ‹,È#€í¡îÃŽ˜Ÿ°“³LBç³¢@@S¤D¸w€'¨°¸Ì"Œiؼ€ÉµAžì[Ô¹',p<@rÂ{NG£F,@YøñæxŸç«*½Àú| ´š}@à"ˆ¨=àTr„»Ç™ö#³ø½÷™ú{½)[r¶ÇÏÁðÏÏ-D§Hj캶j`}Ÿ`šêw©G¥ø‡ÇÓžŠT`H‡¸¨óë{à ä¡Àª´½Þ~ ÏÀtÊírtLç¡îήÂ|¹,:‚L¨“*@<ú~©WJ4tCG¡èzœÇqìqˆaî}` ƒ@p8.àJ†!ŽDä¤?©Ç0«ü ÛO8 «b€@þÿ!P°* ˆ@¡Ñ¤V! B@Â1&+A²X8ì|?@×ëÞ2øŒ€¯ù” ‚'00 ¾À/à8øä|¼o7sDPc‹AÁ( ôx>]ÇÛò_ðÀ,"€À«øüŒ¿c/èH?îOçûäøº_€@wè º€¹ƒ¿€0wøg×íà'Øô/ð-ùú ‚ÀïÀ®¬‚àgÛúY ÌŸø§Ûîå…[àT7àùV}Õ¶àgÀºtï¨T 3y?@/{È3>nÁtgÞ!ÿ0{?ÏyÀ4‚€€\8!ôù}?_™PRd|ìÈ@ è€G‘ò~`ü €  äÊž¨È(Œqø}€NÓ 3$4iÓ@0-`<ü¥gÁöûŸgÈ ` €€Ÿ‡Ñø¶Ÿ¨*Í‘ü};'ñä·§¬PŸ@h}¬¬‚¹ … 6ÌQü€p€”±çè €À'Ë|–G  ¨±ç¸ €IûagÄ‚Ö:ó)ÿ Ÿ‡Êf¡! $1Ñü|-î  ÐOÙðzE-¦ˆÌÀ‚À-ñåAHP¼ «$Nñöý´`&@’ì}2 ®¢!'ÂŒzà|¯Ø}1à-jÉžg¨¥À©ü6`XÕŸ‡³š|GÒ~}M`:{u‡ÐþïПm+X~&m˜ Ù'Ùꔞð ØÀB„~ŸÀ%Œ¢' Bè‚_²äÀ5“°}Å»ïrÖçÒ@gã`¢U´ë¶¨*ðÌx¢¿hŒÐAö7Òþß?ÙþD@ ’ëBä¸À!ï@ëršV§éô¶Ÿ'±þ˲êdã8 |Ñî*U=,VÖÌ€#fæCgË×…!70 6à§ö$~êÍØ*Ìò¿ m\ÜŒž¬©ñAAÇÓZJ`CµÅ(yózŸÒ£®|®ÒP1ðD¯žç°}s‹“ýX“8Pz³@S Uï]ñ!bñPÄ ·2z–-ÍóêÀ6ǘü`4#: @¨¹€!ògq¤&LøÈ0‡<‚ІÁ„#Ò‘é|1dô|¨É2˜TÛH9ˆ 0~£7VŠR:¯'D ¼Á"¬—RY¨tƒÁseNñú@rŒŸ€ðÌ{øö….?—©z:®¤¿!rX€J¤-àÀ¨ö¥Ús@,~‘î†Öœ8&U¾G“îÐ÷3©x¢§±øL©²b焃f}!À4ß0‰)Á%.‡ Y+à ¡Ô¡ÇYBÀ@€À,GðõéÄyÌ×Î>[™°‚Eè‚›bèž’ZõqÍÍ*9SÕ7Ͳ&`€iš>Kym‘੾÷$è{(ãrJ“°õh´È€´÷€(ô0´èú&PwÏtn°™`>À4ó£À™2øÓp #ؾ.V.{ؾ7KšC¹\k\á!à)Ö“3ÔJøNÉ73å€Öøý[Ç@ ¹€ø9‘}~4S©JË`ö1ÃÍZ€÷`ˆ‘ýK xQÜ­IÁ…CÄÉ+€ytu!ØB]•$@³8xÌÓØ@s|R=LAóGüš<¥±N¾ipA¨•>GÁ 5i­@I*V'MÊS´…@.@Øü¸Z6@»”ŠÐ¯Ÿk\2(díFÔÇØimÉ€²‡%TY• èy51êoMò;@Ïž ø7£¼³ØžÎqÉ€æ¶!@I*­Ñ©ÉS`€Aô; …Ÿ D€³UÍñ¶.Göú.Sñ.Æv bØœÃiZÖ) fìè½õ.kPèø~ºwHPLãÄMDÂQ¶æp½lRÒ1ŬMò3 @@N€tÕ€Œ¦Í,s‚ò¨ƒ%Bè b2¾‚.B†(crHâ9¢ %aÖáúÞ€LaŒ@äÆD²!Þ ©œÁÜ!ð!Ú@$/íÄÏîÖ@,cÃn ¤V¸H~ç8/‘ºäPé|.øÓÒ&âmBfƒ¦ZÅÆ~G¦d®–î'P&…bs†<7ÂòO¦èߢä(>2Âz-Äú1æÔ åê2dö&žpÂ{ĺ£ÁôPD6;CŒO®F–n4ƒ*]D–ç'r€%4Ó„¾†/0 £$€GCB5ê&dB*8¹+è¡ .A `.(™¥ïžhFjÍØ™ÃEÒ£nòIÛÆ¾—€ˆˆ Æç'%öBáø|2Q#"SáøHcîg낲H2K#¦„,£b~&¬ÀU³X?dBiÀ£Š³aö½¡ê‰p‡)Ò ¬¨/O%xH³‹2ãv „%±."`mC:–'ê"T+ãp+êëå?MB iFÜ/¢¸'hà70¼aèlj¾N¦PkPY1&œ:%HÁ†p@F”'Rt¥â5‰˜ÇÀ|‚Öf°ºQâémê.ÄÆ¿£’X &‡f(Rtje #BZE¾1ãLXÀäÔcv‹SœkfÌ;I¾¡¢‡¾3„=¢슲à|¯ ¡à2¡æ$Ãà/0„Ýüï!ü=ÍêAf;Ã@•d6Bª£ô³ wLaëL¡èfìa£ô`Æì'B\ÓìSRñ>ÈòqDÞSffåaöDà 2Ä:צv1AøÛÓ8uIV‰Ê8c@<çD6¢TÚ- Çz+äùd8C£6ÇF/ÀÛÊJx….&h!"ÄAÓô=âZ0‡¬ëtL¤sµPçÑ8 tŠt·âÜ-Ã,Vkè-aô^«üZ56ÂX7¤úßãâ@ƒnÓì0Ãc&¬ óT¸¡ÒÚað)AÔ iþ 2MÅ.†"fŽöE&Ò8C­@ PlgX4c~…ð©ˆ.„ÈI" ƒm=c‚. Bh/€ À>À&Àl!þˆ€âE !itÅ!-H ã¾­âz Ž`¡þB—$ÁÚ€BŒ ¤TÀ&6gh°™áÜíŠùf@å’€*òG 8W‘¦DAäG­B ð'ÄKr©`N#z6æv»‚”¤ú8Cu„öå"Ö'õro„R?SHgÞ(ÕXcw.Ei3´2¤AÃ=gâ-rÙ0‰¾2p1ö¥©bæøâ#Wif!"ðLü<âògÃ( ƒÒ(ÅÊ.6hæ®â,aø‚ã´Ð‚zoj~M§XƒöRëìZc’PèôÝІ‚DŽª†«sïD``UáòΡú «ì/“d¼$D/U¤D&j§Ä;ifB§MDDI"ö׈¿Ã&P-jj€jæÔ\ÈÓ. Í_x"€ôBû ²÷w%œ«1:Oh–Q*¨kÌŠEΪӅj|à åÊtf<µe¼éæÚ¿¤ž9ÃF.ÖžS&¾4ƒ´gÃD7e^dWZnÇH°€Ð còš. *SR)*]T'LÇF¿‚ÕÚx’ÏÄ%>ÃÒB¦¢€"Enî?¥€8»€o(¾àRæPŸ£Av#ð}!æY,fVX¤•zw#,NCÎÊDzµ4F‚ÆkÂŒ%ê2Oüíðn”â-"¬(Ѝt‚à>$äü¡æD¼@ëV_…F’¡ÞPáâ¤TiÀ ²ø»¦Sä=,åÌ|5cœvã¯7åh5©¥2¼AbÖ€G³Žg`°D 2j6å3ºSKĤ£ä<†°u—þ æ–<â¾3#Þ‘ì’ËèEi¬(0t…þ=g8h „–!ö¥mÎ6Aþ;9r’¢e ã [ª¯BÞðoì(ƒÔV#8,W–c*dŽà 4Sà%§Æ'¦¬_ÁÜâ94Œê¤€,À`-$˜’é˜dNXȪ1t&¤'M¢ûæ%Å&ÔŽþ0·$'³Ša309q1ÆçmVò'FnmÖü4$zB$P£bVsÑíA+Š c´šÆ 2/Ks;Ì!¡Üf„Ûa7$}è4„ wf-²Ž,3#ÊHp”%Âqnäú4!¤Ø7B#¨ê.Ä‚#~/Z5ƒ¿o'<š¦(Ó‹8¤9W§Â/ƒ-Ä6ZBTnc:¸0YÂý£5£:B«ú EüF¥.Fã ¬‹#¾‚úR"@¢d¼Ó¤¡è%àsÕJjºNý[øØÐâp£eo´7Æv›äÈFph8Fh_j7Z­&a䙦å/¯ &ŠÇHrƒl:&ç8[ø’>‚ bèÜ™áêiwz*ÇFFIYQ³Ä0(bIÅná§`˜*J„.&|)ÒªR䱆ø›G`5ŠH–`$IaÔÜAÚ@¡îÏÄ8EaìW‰²?lC¼$oUêb2\¬'aÑB˜C®NÅÔ®HØVæ–¼)3»$<§R””ÎiÀ$Ckt#(RãHfãó™„úD°Ép(e(3Èò4H?dõ~–ò&iI#æ[Ë+µ–úú³â0bgL±ÃR$¨^£ Ñ—Ì;×àVã×…—#j8$‡±Vf·ºP#ó8¢ +§%¿8¤—~QúpAdåÃH$_sº™§ªéžêh9äŽEEð‚ý^g@ ºq(ÔǧBÞ`ÙRF¢¬}”×ŀȢ:åk!#-p&~û÷¾$Ê.›Ü ÈîR’ ¢Lºò‹áí’û“!Ø÷²W_!Î¬Š™áâ7`*£àÀW`¯šmGb¯&ŽarEäé3Š7=7b„0’ÑJ¤Üh·Î›"ÚÔP'™ž%äL­åKc%P©: <@F@nú²ëRÂÊ-ú/—&‡ã¼3„&“0ßké–ºG:óì¡–üÀF $À“(im;²òÈfëAÎ!ÊAì’dz¦$À4ãþ !Ü \?Lë§T:X-âÄOb„׬×2àV˜ô ÒÅ"Dò2Bà/Rä5…joc\7t”rE3å)øHå"ÓŽpcÍSKúô›¢åâõã&!£®jæ÷M·ÊcÚK×)&ÞÜ›÷>CÉF8Ä%–|G»ætƒB1cÂ4ÜEiÒM¡þ’‰t †j à#õþÿ À@?€×èüÀ€ +ð?¯Ð~½À Ëèø|Éßà0CüÀ`0Qøùu=ßNçÌüý™€@@þý{>@/X ,ý@€@@þ½@'«ýô >€P+Ð{@`wð û~¿ŸÏ·ðp€38!øv½Ào ¸Â™¿A@ ê PAÀ@0 ÉÀÏ÷|¥âý™çãðMdŸïì•áù~ëÁO𠚪Öï¤`€+íïÄ}ìaÙ#íôù—äïSõðöÐ=Ààp[ê8ü}¾ °0|P;ï§ø1þüώ̰|RO°Ì» 1ü|,njF½Gꔥ´‰òzŸÇÑôéHö`B»  {¨¨’ÈŠ¬(@Pï.'¸'Áô¹Ê@|'ئ«ª«BE)º{žñe£€)® (Í€Èùô“/HŠæ€-b~BGÛô)‹ƒ$É9 "ðˆ$O[N¦‡ðª€hTr•ÇÙø{ÍaìÝçË—`H¿$`j 'z$yŸ‰£P}ª øñRH)òÚ GÃ5>»3lœ|Q‘º@4(ý€Ú1'Àb)/€jò}¥hH€)Jº'Áð§àXø KVÊ(°ê&¦ŸíôàÓ³ˆ34{Ÿ:#©¢E2Ÿà=nx)R3`Š¡ª¬"A ­Ô¤ŒŸ`"¨gÑä|€Yòo^‡Ø}g‰òoŸ€= ¥F €A [-MÊ’€Oüz¡ŽuPÓ€BÍ ¢¤gÊâÖ4Êò7>§Û.{@B€þƒÁh…C"Gü2‚?ŸÀPð€>ŒFïÐÈøx¿_ñ‡ôÀ¥ ôÍÀ` 0i5¿£€TÅÒz>_.Æ@üÄB/à8Š}¯çä©ù?_GãÉðîw>]®çÐì÷z€Á`p ƒ °˜2V‚/ùSÿÆÐ ]ýƒ~€à“I€ ÃNï° åö~a€øÙ~bܦ/×è­}_°>EøÌLwyËü¿aoÀ ô ÁŸ0GÜì™—æå¯¸0_¥ÐmÀ@€ }=ß”­h ‚1o˜3êÇ®/{è_}ÀߺgÈ‚}Ÿ€Yô~/Aú€*(—%¬2 AÎê*{¹Ž°~#GóØœ TŸj€ ‹.{€+Ø¡1,îצ ¾ H|ž'±þzž‡°|ɨ ó€n³î¬ŸGÙò€GË~˰ 1ö|LÁòà1ø}6@<²iìÌ"T–²NÚ0ÄÁK¬|Ï÷,º‰ƒ¨·Íaø{ŸÓñþÙ+ïQû#¦Ë€§™ø|çÙæ9èþÅŸ³â¸*ø ÐgÑû«h@T†{€.ɨŒå¶ªP|N’H Ë@ü|9ôœ˜M1+Š~ŽyøàO€ ÃN­½;Ÿý‘)°Ñ»®L¿ŸMðº@IÿÙàÁ`@ÇÀ+èÏ!þ{žÐÝ«_8nx~€C ð\ü¨1šƒ9©£ç²à\'ù儦`}%çÑòÄ´£$Ôà=–§¹îcÀ(t§oqþD­heà#æÃ—Íd Zb%g£þÇGø—àðy7Ë?k&©™ú;˜’0ýµÇË÷b€ÈÑôzÚÇÔÆ¬ÒŽÓP8ÓHª€@Ty£G ‚àq _´@šŽfÙIÊõXÀkXžç‘ü}N0'¬”Òt£ûtŸà>ä`4¼9¶'}$ycÊÎXžík_9ÀG jV¸º»$¹´õ–yU|±äu‡)Üw¼è|§  ó§è ‚`x ‚gè@€â%K­Â‡ë=ÇÏís¬eóÉû¥î0ÚåÚ«;†(ÁðËÀsÀd>@X àD"%È:80£ì  < ¢ f<ßœ2 Úy–d„PÔâZ?8îcàýŽáŽGÀ , °€:i8Mu-¨zcI²#¼|Áè<øÙÃøi¨0 @yUnà ´ՋÓoÔ7(ëÉÁÅ0æ,šE(X@S5¬|ÔÀ‰Ña?Ä f˜ Ñ€#+S#ô)Ò° áA­M/Â@u¤|7Ç,±ö¦GÁ´#Lî¼êNÕ`ÿhM?2fôáÃaH±_˜سŽxö129K±Æ\dO¸%© §@cÀZDy¥üæ éÆ?,¸›Ÿtš¯Ž!“dÄígÅÒ^Vš$,ŠœqIY- ¤`ý#DvO²'Ïó‘¡÷-Ë08€¦@ l‡x÷£å—F×&“Gå.oˆ…ÕGº“b?càŽæhæƒ`q¬=£ ýÇà(?p>€à€âÜŠ'œó?¥~ÍØø‡XJ 'Œé:*ÔG‹†íPñÏ7(Q@=Q!¬ÀHsÁˆ!Ð…O“„èÀ@àl?@À?GCÄ•²#€½I›9æøÆ˜œNf Ê2O8„’ˆÚâ‡pÅ£Ø_Ð@,Rb\<‘b6‰]¥aûùœÃÀâ<Ü€ötø€4Ž@`  64êºò|Iu¯Yæ-\PO¢Ö5Í §Sú”My—N§êM-·JÚh?ÈH•˜“ž®Õû_ãñ¿¯$ê b¾1¬$Æ`”9±Œ1a¾;×–Ñþé™à&ÿ%|Lʦë2Éõ#¦¦œ„È1’8ëX…™òåXÏñâÅ0Rc*€ô ÎT ÁèxÕd÷=Hßðy¤cãá¸AºDÃBY!ˆ˜JÇù€X¢ªW=²[à•PÝAô8ŒdK±úÝÀdÐzÒºúŒˆ[t¨¥‚hpŠá*?g(Äps’ª®é¦&0Ù¹Ó€»H2¥ X™)dz‡ýÕwƒø‘³EjÙÉ<ôšwÝUæú%…gÐHcp`Ž= *ôÈ’ädPª%)Ç ÓžŠ:Ìl0¬•®î iY>泘ûp a’7ÄŠ¿Ò*MÛ\‘I§í ›ñø§Ç±œ…‰€°Ú3òâˆ]Ú\湈ú5Åž}G/ÌÇ‚´õ%Üuƒ6>ÎA¤ GaôeFRb`5åR@U ­dž»áæJÉ.S ¢¬(¡þÁÖ-Ê\&&D£B3¡Ú(Hé‚x™ƒV0#6u¥‘ÂjãŒ<Ä4ª2WÄ0ÃÆXboXàë WǦ™”c\`¤l“@Rè8!ä>@(+à$Áè$6‚ '(7¨–ãP Ââ]"„Yã’UÈvØÉ„‰¸ ¸+âýéngZiÁðÇâPµàBN€FP!ÌlÁâJ!СæáÒ‰aä¡úÁÚHâ¡ÜFÀ"/€ *T$p€$'Æàã@?b„8C–°#"0ÄÚ™DÚ#BdB1b3#Ð38à `  *@A» +ü!bŒòÏŒöÏ\&.À: 8 J`bÀ6dtZ§à%ä?ÎÊ;J–:&t'éòŒHÂ÷‚bAÞ·£ ¡Šaì8 2à$`k €áêìâ7ÐS‚TnÅîR…¬<Áæ!¬öaà@ #h8BŠ2lG&2Ðnrˆ®Yì2d6!¤`0 04WÎt3e¬4% !E¢rcÐeŠjƒezD¡ä8áì0D¢1ªê%BÚ Ë@7åþD" ó„"pN¶~þx#~mã-©ÔÀE23N:ã⺥Î,c‰ £J4#fD#\%ã’›âÂöò("T5㪜`)X8Q` að0¾KÇnÉPÀgB4bâ6Aú†Øbé4\(ÒµàçîYÈMp2À&%ñ(‰vs¤àCň¥LO€Åe+áø>(úœcAcŠ9¥HM$ê1!üHEÎGÅZ#EvAáòaÈî„ü!ús$È&ò ;C80"²=Að[aôÁ b ª#¬EÜGbj3àD…be._$ŽJ g nƒm†2ÅhUAð'ªz¼%Ò b}Âj0c'’>#Œz£î<äKÐÖ1c=…–h3Îoã¤!c$ÄÒ½³zl*"eÄZ¦¢²#aò<Ì $î0c=‚°AŠÄ¡ìV*ê… L^Gæ.%Hr…–cÕ3%¶0ƒ uþ2IHEÈ2Æt–@×áþãYmèx"Ú'ï„â”+ =ô|X9áàeáøkâÂ)ÂE Páä+¢Í%‡ˆM/âe‚„¹r‡,<hVê+p¶h-”Fˆ¡ª¡¢…€6C€*ƒJN\åÞL¥ÜY ‡&â’ À Leô4?b(÷„ú´²+¢º‘¥’HïŽC‹45ÆT>ÅF]´,J TG8ÿ-*Cƒ‹#Y%ç\4"7 ®( G@`$]ç&ãB¦ÆSV²!â·!êAâìv¡äa°!äAÙAà¡Ð8‚NN V€1/  ¾1å(V#Š7gæ0 žcCŠZ'Æ™‰:«„dcë@'†„@¤¼‡ª )3@ $àáÎUˆ Ÿ+4€‰ò"Lö1/óâb#à86F`^ 4¤ÐÒ“s„Þ(P7B,"b+e.'â„Ò2!Ø+ÀÐÀ,áƒà6 ,€$Š'€æ¤€u£} „P:&åÄLô¥Xáò±*¡îìºø‰¸nâ‡,JsÉÆŠ'¨I­@…b–C¶ß#¬I%}>åbƒØ²‚ 8Ä<ÌJ1£Ô¢&ª|sP#¾bxÅ~gÃd.E’N¢|#R7põâÄ]#ò¾ ^Üë.]2êR£?Â"^«Æ¦3‚ZìóîKä &ˆºP$Z8-::âZ‡Cº'Çî]0ÖP%F“Áük 4rjêäâh;ãnÀGÊ&ld\lü‚¢¤\YÈX ꙺkK@7ÒôL‚½Ãè>Ãõ¥œ(¡úéênÀl‡d52²Z³b1%ØqN1¥•ƒ›oÒa쮤J®‚ju·²(RM£¬fsb5‰d<¤ê'ƒ§Il…Fi8A,Ð+‡D2c€'„’Kãþ Ïdd·ˆ'cfIÅ‘äRä%hL8C¾$øœ* L¥«<ˆ;3%$Nâß3IÆEÇfå;ƒ|5ÁÞAÁå …ä.K(0ë%³qCBK4*•‹G@6c‘ÅF>§£^?dÖkÌ¢ü‡BV9¦ü5PlƼ+¥ˆWcdiâÜR%N+ 0pÊð& |%³âxK³Èœ¢üzýò|ã¾6¥ØÖÍuÁêÆ"Œ-¤žTg&6  ‰ÉÞÑŠzð` (à8…!ìÁ×9NŒ2à"p%«Œe’ <âOp:…V!âêê… æI¢Â‚6íÚÌb|K €^èY_CºYÇ&YÇÏH6Yb°5Ê'b „Gp`P0¯zAþKj¹¦¼,xÏ¢T™‚´V#6‘”'£b$êzs ¦…EŽ‚¸Žæyáðˆ–Áà!à)!Ö•BN4Qˆ'¾µ±ŠÀ&.§nÃ<8„83x9"Ÿ"°Qò»Bj+Bx)çGäat§:‘†{d­3Aû—`—hraèÚ+è6< yý©V4€ã€F€ :ÀH f‚€p‡(Þ\£\X6qbeå@4…ø!HH'r&ãú€ž ˆAè   8@(¥€$D†J<þ."¸kÅÏWƒö<¤(HïØ•Ã:$¾Pd|ã< À> QeAþ(¨>-Š@-uÁïch—´¸ã“…’êcÃ^w#0tX£¨&þŠÈon"ºª&œ#B}BÇÄ2ÃÔ‰ây㬆1Ãl/Ñ4É4f2$?)(%bÝb‹K^Cc±#|+„z±U|Ã9„H¶„À!EÀ eÆ dÄH4%&£p\Uè”BåqYE I5œ1ÿ¨d ÐÈqôR 5€&…éo1Còã„Ftâ1oF63ƒf'cÎ0@("RâRe†8Eåv&U{I¶JéTNä’‘æiÙÇ0ƒÌ'‚ ˆûBÖÉrh6"CA˜1PD¢Ò™”+v¹¸üeüSÆc¨ý·ÈvÀC>HCoä61ƒè ¢4܉3îp&.rba%L*A*ÜMh9y"bn„¹ºÙʋϮùTaâÕ§baØë¢÷Î&ƒšô…Ä:ùŒcxJ"¸Yf'‚ #«È1„”æ©'5~¨ø@fb#åŒg@Iªë%à ƒ~nMòŽcD@(E¬ˆbm„Bò¶†Ú*àâl n€ðf>áJèD¥rØÓxOŠ¨Ú ‘­UØ` $„¢Ož¶Cæž#|²PxéhCŒ”ÅZÎCä'fäaÜB–Äõ$¢«7¤¡r¾âÚ@{6!sΊØ%:,N·P¾;ˆ¿…³9ø´~gËÉ(g£èXËVžÃv1oµá‰ê´å­|$îm¶ cgúKé {’ú€2W`2JÆãÍaÙ !ÚáðAÈ8Q—ª:Ô&Lì" ÷ï"#v+  €>€ @X»>¬a"r%ðÒ9’$qQ¨7C…^¨ºD84B zÜ7Áà@ áv¢ 6`*@*¶œQ†¶Éס瑆ETRnFBÁ éF&„œÖÌj&<!ä!ï•C¨Ez·nrb¬*µŠ78¦±~CrA„¢raúTæt7ãSçpžjH¢p}æhDºABÂ<â}3\LÃ̸,%c#˜48 ‘Œ®©šD#F 'Óåþû}¿@à@ |@/Àúø}?_À þ€@r8þù|€ß— !þóA€0 0 {EßOçÄ`Àoð@ú€±ø,}öúoðþ€¸û¢Dh×èøúOÐh.Œü>À —ËÝì{¾€ €(=/wÀ ì~+€‡ãáüû‹Káçø€_Ô@ þþjÕH½’MP}€À@ ”Aøþ©Õ€`ºx8|>âqŠ–\ ©€_/·à1$¬æ@4` *€Ú¿èl»äý¿r™àºªÿ|@·]MÿÞI_™½è \ªmgàP]ùð¾€`Cöhöt`9ÒyŸàc€ŸÐB^Œ 9øGúŒ# 3lú©§áø¬@ó ž§ùûÂnÁúË/ ;ö€±ø}€éãÎô³ªˆ&±øƒ ñâÎ,Áð¤ 39 Á ¼"§ 3(Úiéø¶'‰ü}Žð E,ûT©àLÕKRB@J¨€€ª±czž§` ~r(10@!øw;ç‰îÏ% Û§MkÔC ™ xà{ˆzA PÕ8}ž+ùæÆËKÓîyžç‘îzŸ à& jH}" rÎù:§â; €‡¡ì'mÃ5ë«(~ #<Á)Íúü«$ Âü~@Ð €X{U„t¤§E °²j*r'-;‚®9*¤À$ns**€‚@y ° ´ŸsÎ#ø{žóïMŽ{{U-ç™ÚyØyá*gÖ({Ÿ3™ðxgÓ|<¯š6!€ 8(  $ P ±Lšâz‡‘ómŸÀS’ÅLŒ@|ÐAæ£ ("Õˆ9ðŦI’®|ܯH€à`8p˜zŸgšƒG ÚGAòoÇò€ P8 ?àP¨$6B!P`ü?@áÐàl" !¡È8 ù}€Aˆ¨ ~@OÐøþÌ€qpœ@3p|wŸo÷ó¹„v/A@`È\$ 0(<<€WÓÉîñy¿‘—ëáôû}Pçà@wÒ Ïð,F€¿ŸŽ«Þýq»ŸÎ³öÔ|¿_t§ÜT¿‚\ €@‚á[«üi¯à8ÿp˜?ç/Çîd°ŸŸ€*aŸ— dfÿØ@Sð,)ô¿_¯ Sùö KÁP7zÒüy¾@·ßX6, ^ö§‹ë¿¢ 0DÈÑþ#'Éþ~é°Ï~ ;t}KX{ëª~` <`#òCC´~%îÀ|ÇÙðÁ&Çè …ªô}ÇÑðH`œ")ºR2r@×­©¬8zï¨{Gúi²`pÀL¡Êgùì{Ÿ§º†à A ôµ€‡²ø8@0}Ÿˆ² $Öà1ú{"çáêÇÜr¡4n"R8i{%+Éãú¿L¨™·©‹Hà;*dk qJö™€„£ǪŒõ¸ÐÌWT½`—³0Ëõ;`|HIîw²l„`‚ p  Jn¥!T«§É9ø5h|é;n)o"è  H,xŸçHyò«²ê×ñ¬„G±øž û)‡áø³ [Êá¹IÄô„PëiGó$?G´Üƒ)m¹ï+ QþÚ¸‰ˆ 82„Ñ"§Ý }õüMM|~Gn[tý¢gÜ3ŸeŸ€.ÏèfyñøïNÈ |E‡Éõ PO ÿ«‡ƒÔ§àƒ¤›êÇý\m„yTïÑðƒ€âÙ®¹qý*žÀhžp¤ ¨㌕ïiéö|Ÿp$ ÈQÙâýF÷†žÇ´âá¨Í¶~žñèÇrÈËâ—'ÊzˆŸÍŠ~àÞ@joJξúhË„Ú&gV&vž'¹Ý¯§ÄÄ}Ÿ§R|EðL@€8 RP$À•i6’}Ü@@€`0ç™èzžÇcÔËcîƒj_G¹í«f”¨šžë‹"àŠÒW$~›,t€©` ЦÁÊ<@íCänƒ;ǰèlĈRHŒ„ ìŒ2x^ÑÀlb@Ø8«lá¸ó A‰°þ( ¢§thnŽdýòš2bv ØîMÄ(v 0;Eðeì´€@€ L£‡öšyo&i¹œ0!îRÓpf€Óúo ÙÓ&Etñè€#ÉÐCæä éCÒ?,C¶Žˆº}0 ^Æ| 0'`%î÷^_PìtHàÞ:VÁÉ8(küÑClwŠ+[7Dľ+fÀ|IÀ ;CÄÑ7oÀIÕFE«3`âѪOÆØ}†Ìº„7ê5±“òIŠKà4€s^ÇÐùñO!.ÇpnøO”|G–ŠdÕ)-JÄÅ2“B.?–b€4{ÏTV¹Mx?¥0œD†Pj (Ä­ÌøÇ«ÆB&ÙV#¶L‡€6bmñÃÌV|ˆ$¤”i¦ÈWQ‰œÀ&Ä*ØtqPé·'ì v¥Rièí#´p‡é ‡]Hcñ$›ÚÕFÄXÙ H) zÅ!ò‡Ž2}ŽÃô|»“\ÖY¯i¤¡ƒÆV`ü‚T~Y èâÓäK@ù³§h•Hd*UJœ–¹m;© ”jvq#¸ãìáø¨C|¥ @ÜCMy¦ÜÛ™€A¢‘8{‘¡£FQ?FT¨ô.Ká£s@{±4Ýij¢8pç`Kƒl§–Y£‹/´œ"ŒÊ9C¦tP¿ßëŸCF©î§H>Í­r"ãÔÇ&I€q©gÀ”³“®† 1¢M¹¤‰6oM!A†Il¦R†‰ópà<(¢Þ½Ô©(`MË…þ:Še¾èS3H„€ócÌzµuÒÇÈ ®Ï ÞN)à!Ñd $~¨ >ǰU'  üó Ð0à JCGmK‡;Pé+]åJ\CVw#ål¸ê„0i·ºƒáH¡ÐÉ—1ð'Óˆò>0ÀX ÃùîâèKÙ(¥w ¸Å*N¨ðX0z±º@{ä1@|ú9‡x£¬{qÖ> xñ-@ƒÂ(FCÈ‘(¨gM(p? ð!`0‚ðn?ÀÈ;oI•#Hr®Ê)ñ_Ç]§©Sm?få:J¤™!è’ øëÀ u ÖŒOJ|à=½´‘ÿ”"äåÔµòL§8˜¨ò!–ŸMÎ1>Z¹¬ŸÎ4NS [¾†,ÞAà?‡È$1²Þžha£&äÈì'Ð’«.É>L ž4‡4„jâgjm—ù¿Z&ˆç鲇uÐîœFtÍä"ËR_ êŠÄª¨ì2Óã9P£èüÝea91½g*bˆžÏá¢Ë1 죤¶lÛÜ´©Y M~IÇß íM¶Êý#Û4¢ÃäMké±;ºØò^`¡ã Qœí§júÔÈ9Pˆ€¤ÉNPÊ.ñÐÉ⓬lSÆ"_êTÝu¢poI*8güíZ"øQIù5HhȈ™1ýšLõ@éµ+J´A,Iù=oi Ê©ClB˜EXàd ‰ùRvt/\»-ô^íºÞö¥g,<>1Õ"”^’ÓÒÞT3.é DqMøùŸRðí}dëyy¿4Fš34‡ÀÊ})—CN‚c«²Í%¦Gé—³†cç ü‡ùÿCÜé br> ™5{›ÿ”³"AˆB£‡™š¬@I67èðÈãb?B!îZe@"Œ_Æöh¢úßB€i(§dÁd2Ã®ÎÆb‚dãd‡é$6…nCCj)6ÄK¸±ÂŒ2B.X£t‡r!*pDÉàC¢4ò¦ŒL9 *%B7J°Ü„Fäðª„ïãl6-@« d2¦žñÇ(hØE8Ý#ˆ:vïæ|Ínâ'ìˆÁEŒŽÆ€‡"b'  Á¦úÁè.'žUDìÇÈçÎ m!ü¢ŠÐ ¨Øgî§"€_É€Fª OƒŒÈ…s…²9eÂsÊŽHdèßbüŽ£~¡Šršpã%l®En$Ö;+AÊÀaàƒaÆ¡öÚ!ÖáðÂÒ¢­/1tÒâ(³áú4 F \ àÁèR"jÃF"¢˜.Oc*Û%T8‡È\x"å~Nç¡taÐ`Œ8^¢†6«8£Ì'Ë®  4C ÿ'fU*#%sÈè³c{c¢jOB^k¢ìA!öaüAêjÑ–Ç;&|2$!E!ƒ Cƒ„™ã÷#fĪ|4JîáBj! "ãÈ"Îø@d2”‚¯v'#ô@/¢,:J\LBpEâzÉcª)m°„#Œ¡‚lÈÐf!g)Â"õjíð_ï C†´¤òî&1%Cž(cŸ"ÈxM KÄ\rd"ÌF@z÷《R:JÂz&Cb1ÂhR²ŠS¢n8ht_ãŠïrduë±$£tÚeþ7H~W","ìD6ç(7C|l r2ÆÀ4B…rXC"C¢á.DÚmr‡Cb!‚öU$‡%í<â#¤D†µÃ–F¢h`w)䇊ñâåk<¨åš4‡hU3VÓÄ‹2j2môiî&âf7’þš~aÂú1Ô!)H:¨Àæ6šc@db”æDU1£.(V-ö&Ãò@"€7N'”>3–ó° 9Æ;ÌJ?DÒP£–9B(Bz#ì–xñóT:Œ§$(É2"²ðä„Ü8‡Hñäðõ ú:DüÂlC"z³¨ñ:ET²ÇZ HеƒbÀc°."fJÎê•Lùd:_Ñ")c‰<ÄÀ¤‰Nñâ1<Ô4‡Ää2d&I3$¶/„RN"$W, 9…¢.brŽ'X7‚'+´pDp&Ä4‡®ƒBáÖdÁÜVä$¼`˜¦ .ʾµä¬´C½,ç,`$°4FßLâlDâq ˆ&/ù #2:/d¬²ír7ƒò´#%üpJv|¥Ì5ç¨r L Aì¡ââAÖaÒn¦LaÜ2£¦E1rÓ1s’”!µHÒ¦ÆJÀ`B€@\ÀÀ|`BÄí4Q74C<²´'&vûòÝHHð ~`áz!Ò àIvÆs‚j·âúKhÔܳC1CiBc*r`"|¬UJžÄãFqíþ¥-¶âž&ê82 _Aß/â€^æšÝEþUÃx6dðjctgÃl¸ÓÕäH£l8‚0¸TZBDsìâ"0B˜H­õO¶3æ äBrîDì‚—'†‹(õ®ÄC¦  U)§8!Pp‡RÚb/Ca9Šm 'X@2Ï¢&VCžWBn)…¢ßs!hê7©€EMøH”"‡s–³âgóBˆîóX KBBaT"!iRT¤"f?,DR²âu¸ hzLm‰Þ@Bn&b/,èx/‹VˆG(Í&:/tOJT&?&Þ@åRG2ÿijühÉU¢2@NùlÚZBn’R&£?ŠI0®.C¯.ET5AøqâÔiî;k4¶äc"obÖZƒ­X#…A_\b╠ĢdŸpˆó()‰ýAáxo602^÷Ç[c¼@Ód‘ô[+g w-5rŠ¥.3±7B÷ ‚†ãfk‰LöÄÍÂùB*”©¡.2fޤE0èÆ: T\ÅreïÄDÝ5C½²µ'²=k%tC"_ehò0Q $â(" ( ":AâNÊ!*ž•ˆ² à!à:P4S«ÐHb&˜…R:äôëv‚³èzÅV‰ZêA~° À@.Ê`6YÍv’i€.¢‡–)mk:d†aª¨QOºëón®È@Ò[hÎ2ýv2þ´SLªŽOQ~6(±§¸4ɨBfæŸaü$ÌÃÒAàAÔŠOtd¶ÁTÈKTb!T­0OcFˆ#”À4 < BàgV`tvQ–b²d'¢rB—€ÿ1¹.$ô@ ”"§"|øz¡ÄîLrPc˜ÓŽ“3¶êÿ–7T"öV§$°l({sÕø;Â"Q†¢(&0.BéV%k>/sÖI QUÆ&”Dœ ""Ê|¤¯¿u*HgZ:chŒ ÞÝ#cnøUI¶ç0Ó¹‘c®&ò_nlÒ(£# €´F2Ôö@ã°›6|ß„òHs´³ævÖÙˆ8N± „‹&§f?Fžÿ~Jæ9Y£¶P”±¸¯¯³ð'f ˜%w5ôq2f•sÆp%þJñ¸ŽSš#O„^îHˆOgmzÍkomCžaBrB@¶¥ Ï…jW[h¶}¢hCŸ „ i?¡êswÄ6nYzf2`š4GCxTBmB€œi¨šÒFæ¯O3šZ2›u¾&ïÌÀ$9@*JÁÐ;ÃZVa‰s?T’jJLÓ‚x#/?œ…) \!F&;-z0P˜&#³aÒÿtƒAƒÈ5DnÄXØCÅ*›ŒNñòªF£„i¤_è‚’G8&”qrSz&UógöÃh†Ÿ¥ãE%Ö/ó’áqžå¢Q Žóh{§Gúg&_@bÓ$¢tÓuBÒÑvÒ³D!Ãbj$‘U`B­HÀhŠ`yÌ%™œ‡Oñ­d†¤Q¶û?h:Ü€¢vÞÍ!ì!’Á®!Êj„§¨ÀrÄòÄvS*C±ƒøTü"4#𘖇yBxU&| ”\ù Òûê€%â'q—c¡XVò6vŠÿ—gX>§Õƒš¨êmQšâC„Saÿv ´7ªÍNù¤š[Gm’Ìî"R¶wFZÁ Ôš/‚Apb€E˜¨´’\¤)[#3ÈH¦³Þ„‚jz"Ò³åwÏET(g‘TòLTös¤(>Óv¿]Cgæw°šÜûû"/ÄöëII5¨Cbâ)Ol¤v~R°q™Îm6Pb"d4!úClÑ.lÚg))s+B³üÑ«–d3¡¦$4gÆ£>\økaòx% Ú›àAþ{!ü!ØŽÁæ¸rc¶ 05ÊHƒ”6 öʘyuG Œ¤•ó#¢%<‚Ot›£Ô5Ï(O•H ï*•ãlˆ5lB¥*`R•‘–3×P9Ùà4‚E3wgf9*·úâ€VĦ"2FU>}%öÙs4UYÎcçPíð•3 )"zÀ&+@/GÁÊPááâ2«Ø=UŸmHv B…l?DS­Üv'b4&D_ƒÆ|;HE5oõç3’~“k*(iʦÄóÜ=ªæÈ{HüwçÞ‰¹$¤GZa\Ýâ–H™% ôñ®s‹áM3Ô èõOëÓ{bã±SíÒ„d.Ù~²¦œ:ö%>ëKkžà9ÜPëMùDìH € P8$ „@À0'ø†ÂÀ€(˜ú†„°`€\6†GÀÀ+Åúü€_À0 •C€38”Ä"o÷øz¾_p¹SÝðü?ìç‹y ív€g¸ `7óÕüü|?år€#ùÿd~€À“ÇÔñøŠçϹãùûg?f¯ø¤Aòÿ}ÐßOÇåÛ –b+/°X öUpíú†ÝáSxuqû+?ÌJåà-‰ô¿&÷ "g*bwØ ïoæÀgëÑúý{Jµ °óŸ}q师¶iýÖ€Ð한þðCüS‰=ÑûmÄLå1súajØ?3þôùü㾡o¨†~Ä“³ˆR€@*ä}Ÿ‹N¾JV‰A§ÒV}or ˜:é˜~ŸCžÏÃhj¾=°{Ô±(ú™½ÍBnµ<ëÒú³í2 ¢?©ò|!`KPz¡¯â,÷!l´T¾&)b˜%°Ê^À úy,Gî 9‘b,‡&QsRš< K¦|ÂN<°§ø €`*H}+Çñî¬Æéñþ¹à@Ç!iéþ»Ä@ì¾ ö:íjxЭIœÈË„ÿ¡qsF™€°$²ÉëºëÀ©ÄxÐÏn«Â†°“úxåÉS:yR¬Íiöý.Ð%bù¨lRê,ûB` ~Q »À~+'ú¬‹'«*¸ÔéMÏRø”€+kÊÌ3ú퀀J|°Í ‚qROu´k€©ºNµ€ Â0m Ó§%:~¨Çûôá‚‚lË  »€ë»”ÅjÍ*¬¢Ókbz­§±ö‚ @ 9úÔ RdˆÇÔ\Á¤çñå9΀@PÖŸS$Txg©ìyî{‡»r±h‹ÕHž§ÉË>ˆi‰êdO¨s¿L²¨n­¦"w›¯¦OwL‡êè>Uú‚a@´@:õ ¯Á+<Ñ §‰³B¹!ÀCPSŠñô{ÃŽ¾ˆ‡ëÓCºév¯JÃQg% ZÚ„&›* Þh*r‰µ°Š2ƒhB†À4  !ãWÀˆ³˜œ·3Û®ú±<ÚX´ Wiü|Op¢Ã£‡Qìy'º1ޱà@}NKTë¹0Ÿ 3¾¥.Œ¤÷¢Žüä·< rÓª{§ë»^'éë`¨çä6Þ§Ú‚z€àðà«B¦ÕKBuk Hø´x‰& ´sz¼H£Ö7$°ž:÷v:ǰ÷ €@ÐVgðž'òløò &md¾@íФ=Æœ¬¦f„‡ÊÇ FRXÀ @€(áòCYÇ4%غÄ` ÒG+%h€@ÁǹbX-IwÂî€Ui›¾å®]ÏQfp피¼É€|&…²ÒnnWÑ+&ÀÁÁT=“<‹œð¢DÀ2í^Ohï“´+Iº …®),¥Ü–܉-OãøÄs WÕÊ O¦Á “7Ì_Ikh¬{$äyÀh`,Áà<‡pï£ÈÜšPÀ( 2 :"€G°jÊ\#äxw0 ЍU„ð† INðßcP©°càë•ÄŽÚDHê©au2›Iºl,¯˜ã”ÊJÓî­rØ|ô¢xhM±9)Ùl¢ªÑ%àY³ò‚>Z ñös6Œ|ŸÒ”Èü˜L“Øô¾9tB¬} GÁü¡È˜PĬ•–•¦žÎbæuÀD(Ž~Øùåw 0L˜›‘î<ÇpíãÈ|òGÀôJ€I0<Çàl{?ÓZ¢‰˜ c¥\7ùœ?‡x X,?Àhø(û€3,Ù©°À$€¡è> ðûE¨wp4\˜Í ƒÔ¬ÁÐ9Ç à¨r ÑÞ8hì@–vŸŒQ8%Eµ5 ù4…æq¢SÚâJ¯6æ¸2X_&m»L'Å’‡]SP/X ’‘ÞDزh*«èÂÚŠÌQ)”Jd‹—hfÙTQiÅ™%&%^Ÿ‹á8n¤Àù8FÀäÈ9d m_žÔŒŠ z hpAP8p ÑÜÜIj§.±R”DR»@¶"ð¼ÄÅòìœÉˆýXjp|–¥ÚE§!ˆcHÍh¬bÌjKºL›I"¿ô¥kÐÙfJP*EQø‚‘u0L}J^=Žºd(Ãäx6É€£Î©Eš’ÓdµÐõœˆ‰¬…ž¾‰é/3$¬ó*ÒOyº+ä´ˆUaà=¥h `T †ÇÔ-¥•Å‚ˆ1Î ®­x|^—Ŷ1é3¢´ÒWÎù¦_Ôð¸@e³* 2‹pD¨ÒÄjL…S±|Š È’î}Z"#Ôd”’„¤RÄ”(ÀÇ S Õœ&Oæê9%Åæ•ˆ&Ѧr¡RY,(ô½wš•`¡·"DÍ –d@K‹Qf†ËÚ¾kÙ™,Ž@ "ÇbôιšDFj%–³ U“QVJѯ¾c 9$8 ãâ¡Qât^´U—ò›ë¢à¾”Êå.åŠQQ¾SÒþ"oTžá£Ôqõ|¢”›îsNl[aHi,RÊMŠà;f)1~"C@Rшð‹=¦#PK ÚçÎ$̳šÓÁŒA\ªe8éZ:ÞXãMÀŒíé6Áñ –[ÆÄ‡a¢`Šâ\(‹ØŠ?ÀJ’%… ›–sðîòéS3‘%)SPôÈ¡ ›Ìô}` ó@CÌÌÂ!Ò<Ç`ïȃ‚g áÔ;Ô ‚@d>€ˆ4(ÌÙ&ÒN 1 ¬1îÏãû+ gqì‡à óY˜p¼Qð à`qþ< è #ÜAÂR^±…?@‘Â9GùCDMQš&Ç êˆFùİ…Ö2ÈÅÕ4ôúOdÁ?O쌱8¦´ ¶9e×ëÂW*‰!*) ¥”Е1ýì€C÷­¤R†k <ŽˆôW¤1&ÃÄGNh5ld,B|Fåàêšk‹¶4-0úB ½ë\k‚Kd¾Ð#dÖ-d ¿§B\¢B$`Þâ†;KTM¬N\ÉÒ=-&]¤¤>¨fKeQd˜vhEhLdÔú‚/‚¸<"Ì6®¸cúzÅâY&AÄZq¥ZEÄúBÀ›Â„ä¨pdÂÔ@ƒ`,Bä_‚ ?E8‹‚dÃëÔjOÂuâîÅ)P?ÂT„xPÄöÐÂ.% â‡RöJHî3¦»ŠMå ê¦„¤H’&?´>§Ü!É$Ô|$âÜd„f/E2¤Ø¡€3T>ÄnìâvdcŽ.b`"bVŽCbÌN®X&æBƺµÎÎ<HáÑ.väRUìNY2MH"c0ƒŽ%Ã`ç°¥â >D,5†"Oct¡ò5 ¤B7@.Å8-H„Oä³ ¢ÄÆër"","oÃ-˜çêO¢è“b}Å¢NãtšåììäTÌBô|χ#œ5,ü¸dÐZ%@¢²ö±âIáî&0XCÀ7G ˆ¨}Æ [ä ÐŒ‹(ŒeìOˆI¥°7'±ä Ud>e“ŽEÐïÄTŠ#d7-h21¨.dfj%°-DTìâTBî`¡ìJ!æ˜@&@  äc>¬ä$µ¦>/Cn"".…ºÇ#ì>©´aˆRÅèé#æÞ%…®72Š h(4¢.;ãzCZ‘-¯â¸ÆAèAÎAÊáÒ V¡ú T¡ò`@Œaä¢N7‰Ãà 5&ô^#¼4!ÚH„"1(œ€ ŠÔ=`. 2ŘÓîÄ<ôh$.m¡ÌÁÝaœ¡²ARaÜo@wƒÔ5 ÎÅ„ë¢"G ,s)Ø;éÚze<'Ķ-bξ¦ Ó-=†ºGNtûÖ‰bX.Od¢‚|¥:C£R5ãê2ÑLO ·+`û§EÂÊh„\æè*E0j· m+Bò!-â ù³‹8£rye 8@"@^B2@aè™%tb èJED(”?²2ìâY â¤5k\d¨v½Pla°òçIDYð7$^%OÂ6À9%âü$@< °%8=Ïž!©$BLn€2Œæç¦%£?(Âô„þÈX[äI¤ O:Ç&˜iblRÚI$EÆ>`ãC&’ë±>+”’…koJ$ü>ëV¤Ïšá¢ì·¥2× (“mµÒ5Ç`j4’6$*ºÂpׯyrœO§ZÄÍ·€îÔ×,66pOw°á¨!ÛFäB)#]¬6)µ=Ç++Nik¦뢀))~'¢ÿd$_Âøå&Ù$íƘ6èôä£0ªvpðñ7”¯Ø6ZË{Âè0è^”…Mïè*Ã(Æç¼-Ä*'ì@Ô¬b¶ÜDHä5…=!ãtXÔ< ®.×vnËp…v‚)Oè´j-aýg¢Ž/Ô¢}Äø_BfþËtê$Â-$Hb"‡”Ã*+„î5åEÅH’M|{Ǿ‡ 3Œè.ÑÒvgr@¢m‡¦L[Ã#³D•‰Mk¨î}•J)ÈCDBDæ|ÒFÃHvNËŽr #\“ÀnMÊ‹ÕVöfyi¡¬aÄAÒ VV€* Aàm„ÝÎ"@Àm»d4Ö,¸Ý–Ë_„£˜œ1ÒA0*»#ý6í^}¶¡Òæ‚¡TÁœÁ¶§–aðdËeA…BÄ•eKé4}ëMkBòFw>ÖÓ\.Í)i± S³ bÿñMpm”ÓM6ö´ŠJ E¨ªÆ,qv:Ú€ûÎo(ç]„º„«‡©K]6Ð!x)>"¸dÚc¢Ø# BGDÀnÀ8/jäPé·h‚¶dÄî'†.^mÿ‰l¸S‘XÄ !!vM¯H@aœ…ç\´ƒ¾YG07£>¢‡Så ³²œjC(`9ƒùˆ˜û¬ÈßtJ-¡òA5j\RNQî'$ÂIˆ4U’lâh›BàÑfæZbYi€,ôý#™°È–42Rde:Û„F‰Æâ¥ô÷ê<éc”ŽB„9ÄVж:줶(ãHÂväC¶*ZzG@O@šâºJ®¼5^ùˆÆ7M{â͕ΠsÏ—FÚ(#PÖÖêÄrCbRŽT@^dü“’ÉÍ\Œ'§bObfë å.@±2nµ6]>KÃÖ"8~Y.ô<4âm€„"†Å,(r"Ë’%Â"ÃŒ"äÕnEfì´˜Ì[Å,륪bz•×tÃB\@ ¥þÈ´…²:ã\H (¸Jè$6–2XréDþÑ% åä_ËFÛD¤ÿ~Ç"!æí)æ'Œ1 É%V£ôŽš§›YÅ‘TÅ&FìÆæÁk¥Ã{ƒY@^ojÌcðìø4¶h½+Ò6Áúm¥â¶lò½"’ªüXX×zÎÌ­Iõˆ5"×QÂT,Eò(Œ¡ø¡báØáÊ`ˆà:€8V”`&Œ«PÓ‚zGÓ8¥ëæk;‹NW§¬c;—Í?΂{"HblC±x9íúŸa¸G„ÁšÁÄl¡Úyh Q•9°Èvr ÕI)´8äV»ÅÓ—&K­¥²¦ÆÁ1ª¯Ýò?Ç4Ç0FBù¨ÒÁ%¹&d,XÑâ;uǬÝ2WL¢ ¢èJÒ.Kí¥›Þ`7ãÜ9/– 8"ÛF˜éóÀWè ÿyÛm¶-;ê‘D‰Ï@šÅú±ŸÙp º%L²VkQ8  àpÖ·ëåæý}=ß ,è ËÓiî·OŠî_ïª,ÿ›7—À¥‘wÝ>ø‡¢ˆ¢®Çòb‡©óú~‹øÕ)SnŠŸò´¤*§ë6©4(¤4™ Îx}8íºÜÄÎ ¦À€(|ŸÉZl›À({Çùò­È õ@ÎSDÚvš¢ðÕB‰»l~0+â˜}¾€ã€êjX­ ø|©h¨9@ ö·6  ÀÆÌtÖùžà¾‡µHÀ}Ÿ )ø}žÀ }ÏÊÑó@>:Ö½±¨*|'ŠÛ'GÆ®jñ"3Ó ¨ŽR˜­#Pj`‚=`Ö‡AÌzàµ,%E38ìò*¦ËL—F.pË9Bf|°Ðiþ¸7LzÈ}Ç'Ã|°P,t¶·Ê¢l¶F5üõŸ¨È }£ò–¦ÆÀ2Ð?§ÊÕ«p:x±&±‹KÔIÿ3×òCOÕâjygAÞlœ@(Jƒ@ÐF€Q€¬@M¡ýAÁL¤¡ Ê!þ&iʦ0 !+ëD÷"& ,zà!õ3²Ôc?géÈlgéÌf!†V‡‰eH•¼ààî‰X‰ªÜë¦l }&pû  ® $™¢¯ú¶¢ê3VŸ±è#%¦Ï›ªŠzd‹iª|5( @*f˜¥øÒÃ1§‹Tr~‹8 ǦH|,)èæŸG¥Þz­¬:Œ¶¯®BÛ6€¬»ŽÃÞ ²»!œÏ2‡TˆNÌ‹¬ ¹þ|àØF X ØyžnlÖæÖ¨3¯º{"·Z, Ï3 ʺ¯ G3x‡§ŠF¾‹-Š:x´ÊKälâŽS/ãÊ|¦‚VÉØ‡é‰ê³ò["Щ5ˆ3 ´3RƒWGùìƒì^4'\Š|¸(ÈÐnHrK!æÕ€ƒJŽº}= M#“€ÎÇÂ9&#ý,€7¾³Î±ë'ÅϵbRÊÂ-ÄQb²Ð”J’ +c왢þ® kÇXÒµ¨ ÇÜ9& åfJ”Ñð%†\â-s•Ѥbç4ƒÄ0aŽ¢d=iø•€ƒ=ZqJ%¸¾1¢°jÚ9]0æ4›&ÔÀ‹Ôá‹'ç®±æ KÚùXùw/@—¡¦¤ÓVšB¦Æ50ŽÊq6$HŠ˜rpMabñÔ“5cŒ†Êõr¦b*o‘iG¤®.šò–a 2ˆË€–Ü;g€ñ£Ì!Þ‡r5@dp?_›J hŒã¾?4©‚É,{Ôâ>Mp;(õÛÓúŠÒì‚Æy®‰€cÉ…Og, €Áü:Çñøg‰áÀ0Å Ýg¡‚Ÿö3 NöAj«˜¢ûÔ¬M!¯ ©–‚ _á9Ž ò´™Î@B? ž­“58B‹±:‰ª¾.œ¢¢Zò cE-·"=ËØi«/KÅ˱¹q%h—õ4\ˆ;— åĉµ;`æˆR•e¤:"sÇЀˆ°D AÀü!K4’dU0å\Ç—Ò–Ûùh1j5öUBŽD©=¶¬dš–ÒÖaËq¶]ˆ¨¬¼ä”šˆ‘ã˜àÙ¶¼EVŒ]/50˜^"$¨ŽÓ‹ o°ŠÉóÖ‹Ïêıĵª#n—Ow&ÉAÜ×2&¦ÊØCàzÀ‘êjMÉkM`Ä™øf+òÏ"ð<³§9ZÿÉ­™SF’C3Ö?¢yü©מM¤Ñb,QȉÓúV©>kÅ]Hcni‡òW`$"D®[X û,ò죻·÷k ‘†‚ÏýKÅèla¤G+¥â‡hNÉš6Hˆ%®  üûñ[ÏQÞ' Skëi¤ t Ô6"oÕùà• ¨Ò¸Ã•3Vrl™«O×}sÙR–}™‡ŒMZ¶¢ÓÜYװŬ³ƒÀ”‰éL|д©$ŽS̹ÊxYUq cr?K=m9©ÈÛYñe¼NL´Í<19&ǨÈ#ä§ɧUé¶[^#RhIÆ\µ«@$²ÿx[pý¡§€œãd†ÙÎÙ|8î=¦rÂèÔ +{J¬¯öUÐm–)£äú>¢’I¡¿­_»Í8E ¨8+½^™ 𚟹:ÞiI‘ò>G‘aç PÀ0 ,)Ä•¦ÅÒÒ1*OüÀ€}@\Á©H<Šà©àf‡Ù¹B¸À²¤B>ãÊ¿A„dà:Ç8òÃØg ñ²1E8× *+3ôÙ7•±löìà×7ÿ.ʉ*m@ê&v ”g‡+n&2žJïJ Öܧ9u8m»c!:åÛã3ŒÍ¹´J†B[¾Äl¯Î™½§Qæ¶ÊŽM·u9Ä?¾‹hû9}.VÊØ•5^ùɰÕƒû>€H `ðÀ‹•ƒÈÎMSÎ"ÖNÉä9{…!<§Äû*©0­Eà ¤qüC{DZ§8¢+FÔ¹ÊBªþ’?ó.‰šÜF†i÷òàfIr±ií’G[Sž·‘Mº­Wišp|•á/jˆawC<À‡"¥að!ìA‡ØTر"ÆlĆk¨Ú ,("XB&6Ä’CDÌ!äz±R„b|OÃT~>ƒ âÐ0ìåDVè)c[ðbdlA¢œj¤¤„âqäÊ ƒš"~c àlÍ:iÁ7„0)lÞHœÆ-æ,ë ;MÿÈÇB¬J$Ä¿…œ1)ìmÈf]&4l(&»ïúNM²"% £sG6¥4ªÏü,‚àt&D2äö&/¶)ä,Cvjî,cFJFîz+ÑTèn»B*æ»å‘¨ cF?c¯FÀNDâͤMäò<~OHR&â|{áú~ 8‚Ð0­/E,:L`%lP,f,äøÓâî3BšùežT:])lü„Ê'r"‚Y.ÀPˆ,)ê3ÆÈñïThŠmo8‹Ëè'c4°Æ"èæ"±€£"Xì©ü·”´ÿïü:~.Æ*5$zw#h#¾7Áî2„2îÿR3â^%‚~äjvZíHò 8ŨºÒ €%.EDºsäJr*&ÈÃÏ º¼Kp"+µe¬2'i8i,.cN> >."DÁþ€€@Då­LµJ;èn'Š0ÃNȔ耋<(O†¨·kþj¯€lc˜¶±\LŰ,‘‘Ç&(#Ÿ6†‚BøÏp°nëÅEÞ6Èà%òô¿õˆ,¯è%ËÂøC!ÂÔhñºškXïf¨ôrA£–+íŠ9EIcúæ(hN"`kõ4MV`­ê&`" 2î’~ê@*¤Un’@wc0•c6ÃÖ]ñ?  Ê€;2)SÒšµ¿ÄêðK´Qm²jbÇ<#&1Iæ6¢„`×>ÆUV³A+þX‡:i“läi‚`zP¬Ö56O8Ž¢}ˆ<(¾9R¾×$̧B/n£û7Ó¶'ËZtcžE¦6©$eDärÕ’C\&‡I³.ÐÀ4‰3OE¢Úèz("ÏN$ˆ'êvý4꟎¤ÑR……‰yIÖ6Vµ§ÿr2al¤0Uj£8ÇrVèÜ»âÐ@ÔÂ,G¦·ñ\>£¦Qg€JÂЇ–Ö/áöN!ü4Ão &êØ×¼JÅDP¢ä“ã]â Ú¢Žé"šåˆ9îJ 3¢^5Kfzé9Ä K*€' Š·¢¶,3Œ°ÂŒpaýŠ@ $Š”LB",bþw$Œaö¹Áû1@ äcX‡g *²æ/X‚ÒÉ,È7)Zî©&ÄÖ7ü1”Àe#^A¯ìÞAäaìá?%uÂ5ÎèPd@{ãÄJŒêôL¢ ¯ã +ôû3©ËIò*yÍöz O‰@­‰liö0…„÷ ã 1x”7y¯EH.ÌÖ}¢ªúcšOBs‹ ¶ÏC Q®&¥.afÆÀElcÐ7È™†f£"ÒäyE¦9ô´MI–Õ†.<†@Bà Z$€8$àõÞÚBáiB.U$„´ý_¢²IŠl"É+.•cØ b²@g|xƒíBfJõ„ž4èej ¸Ö!çæhFÚ"§¾vˆì‚eÐSR.ö°Ãõañ>)Tn?£ ˆå\Ixb€HA¥B¼J×€Õ€î¤"²?¥~ªQ¤ÏœJZEˆdõƒ<‘¯l'$F"šý„Ãc´ýƒÃcò˜B£Î`åMN@ú'„lŒ'Ã<áEŸ*Ù< Í31·UÃh¢böJ÷„TP 23ñ(‚ ÿ’ÒcQq?ˆ•+àDc›yL*J/ÂNM¤%ØÀŸ„9‡¾Åó¼±åB$lžO¸'ô§Kð1ò?TÉð1hg‚&$ 6‚°ˆ)ì9f&&d AƒUEÅK"†B… axC~=Ð-¸ã

)l'K)÷ ì ø¬z@&ë9'siÞ5%°%•Z&ƒV-ð-QTU"Õ=ÇþB„bSÜ¢b7<ÂPÒ"bj~¢Ô×Z8aú:Ç®…‡n‘ÀT P(ˆl(÷&èf.X•¬5™Cf)7²¢àyMpALfxˆ°"Ž'(qÄÖ5E¼Ò ž.®a¼ëb~dý]oTOx.G-cè¼jÆb„G_tbyv?"f«6¾Ä7$9f(D*C覊Û+In@#‘/$Û,»`G¹«Da²\Å g $(âe9x$r€Á@—óýú€àðƒÁߘ4* €@0 üÁ@@Wü‚:þI1§ëíð  `à°h A 7£ýü€£R0 ùü?ä`J4‘üù•¾©4À4þ„P¡Qð%úÅ#@ üý¥Bj´ @ú¬Z!Ô+,hO×åbÅC’ÊÀ•˜<„ùáÖ@>·CéP;üú·?Àзä"• ­e±²˜Íb2ý_axÛÍ“H¿kô\kîû·S`kDY@à`3ë;h~ÐwvLF¤úˆJ_·° >}R«l¼lwèÐ}îÁ }Ç€PÞÎú?:±ûÜOâÿ‚À€ph|;-’>n«P+çø ÆªÀ ¸£²È2ð=À ì…)(È èH~ŸGè΀ùþ¦2 t¯¨(삨±ŠV³*ÁðË([¬Í”J¡¨QòÎÞ8ˆÊúÎÂ/PŸ9*2Ê„¬¬k¬È¢²²2Пj:ôLÊø}ŸçÂТ£à"É'°`èʪLÉó,%àòƒ((Ú·%òá ªêî±MSZ¼ÇÚ‚Ѩ{ä¤5 Ú°…2 òض)è4š˜€èYì¬.[ÀªÏ5JËÒ‹f£Å(â¬~ÌH37!½z·Šªºƒ!ŠúP°A` ˆçãꢫI\ £0k LµÑû€Kh{«çÛ: ©RZ„¨ûeÄèK¯. ²=и`õ=ŸŽËÀX'­~ƒ£1+€Û(œÒ¼€Iéôz§ÌªG(,€Cε(WdË,³RÞ…Ÿmˆ ´èc Å2éþï´BÈA Ìÿ_7¸}Ÿ'²Š}݉Ø|ÇÉœO›)HnS«S¨SAgÛ0~@èB£1ëX°jLË:°j¬L–µ<íî®Ék‹Â„´Ä«*úØŸ:˜ ¯×Ì>¤•ÊTÚ„2ڟ.ÈR†óîzûC»³tjÃ2ÚÅ3 ¬m”£¨h*@€ †fq* P¸ÐBÂÕqJúF²€°N(“t–é¡j«2€Ø&aXlƒAîŒx´ËÒJ²½Z¼Bðû¢V»81{L.ˆJüϨhòΖOñ*;+zâ‡â@%¯®¢Ðê·³:±³¥0uKÉ|w¶„#3Swß4n­î²|Ò—#rV£ˆñäQeÔÔb‚›¢9$mˆçFÊJü0faBZYˆZ !Ä8ÃSüzÌ€ú1Æp£,àÄ—£ÔSiL‡£TºlJI'Åõ{#ødj¡Ã%·bÜžÜYdBõ®58ߟÖ(ÇÀ£'"ÝÍ‘V-ìá¨5&fI˜+¦î–:]Ù+35œÜ˜Óx?ǹAFç¥8šZŽ©woCú¶öIZ›s‚Íýr…¶|KÃ=e€}¦CRùÍdƒ*\¡¡È„Ž ‚q5%$·–團piÄ À^Š:Ã- ,Þ‘4F§ñ]$eÔn?‡ÁdU¯%§¨¢ÌÓi¶EÉ@ôzN’óQ¥ÙÀÓia=Ä@…·xb—PCð#ÇøöŠƒŠCñgMÇFcR–+«P„*ól|JÓC¯m%¨SÆiKÂ"ÍÓ‚jS!²\Ë@²?0 Ô!)™‡V[Ñø>ËÑÉZs¬†%‚6Û@¶AHŒ””aòý’X‡ìB&< ø I`%D?:`Y¤±Ï57öƒ ºÎC¤qšÃ £ƒ-ÇL¥‚¬™S¿e¡€@#½ÊóžÛ±@,êÒCŒfLaƒNˆéH@L `, ÁÀA1Þ|›§§¤yv¡ú¾Qm͸P怤è2Ý‘”†¹¢”´Š…‘k ap _Jûð²Mùħãb`O½”¥‰T²BrÝ)¤€¡¡b£3€'Š€’4¸&© (h'³Ÿ‹ ¥°„e;Éeœ?$pˆ¥²‚õV²€>MR¹ ÂªWÎ B|%À}¦öpJÜœ Z°ˆøšÄpXa\3Æ\Ç‘—J^–U*fd|£Â.Û½Þc ÎÊ’KH›VT¬œ¢—®£#ÇADfR.SS†1±35†ˆ±ÅFWÛ{‘,¯MdÓöX¹Q`‡H±W…Ù¢à|Ð_@Yïsæ@¯# úPJÖy1¯ŒƒÐƒPIØm¦i=Ùõ0ËË%Zä— 5¶üV ØWÉr÷¸åE û´9Éó–  ^…½Ï‚ >IKo¥G’¯”$ \Ë«Z™kžAþ>ŒÀ×ŨÒÐ=Hy˜+¦fœu\Ëæ\W†x‘ò+c½»Å‘îK4n *"!¤¥ÊW›h9­aújÒÜŠR]TꄉÚ÷˜i ’Œu—›D?Y—WÀ¨ø>/8ø„¤v˜³@y"_‰fEÖ¢S%`:(ÁòàˆH™‰®oÛ‘Ó?L«4(çq® Qþ<ѨøèÜЀ‡˜é D{:6Æ(¦ƒ¨1ñd˜ÌéЕþ­—ç˜dÒ$Qd`ek›íé–•”R.Ú[  #€Ç.?rÍf»!„¦3`otò šIhoÅéouªEâxomû.E$·´ä`86ƒ‹D%"I’6²Rõ‰Ý$`0¤"Ü=žqÙ“ž €`à<ƒ0AÀÃǧɥ6þÉ*!móþš\ä9ù—MEð¥fäÕ¦tq]L«¦Ý4•u2ʼ-‹B(úhƒØн˜Ò|ÆÁ¯ÊanABƒ_IÙYI@ÐeÂÄÃÇóßVû•=h2𣠲E†YÇÜ”bÞyèl2"6¥,0@¢îÜŠ¶…h2Y#xS<à´üS"ú"ªxÈ‹d$ƒ‚ìÄ¢"¥†c©L4åªDâÈ})\äB|¢"~¶ä6ã/‰Ú.„J+©ô'Ã@,$F=Bô!£P;&X.®8Œ Š‘ "£´Ÿ©FXĤ6 ”FÎt§)Œ":Ä „FÞð¬ŠLì"*ç¨È‚P/#àmåš,Ä ¢ÐLÊy#’ž›©šbZÜ‚:mâPÃÃÎû°%C0,Äf4bU@>ÄìûÄ ãçØó°ŒÆ„„ÞDjx/¡ü$ô( 4‹‚ø+ª62ÍŒ¡+‹ì^ŸåÚs#V2Ko¬0bZ-qc®2êd(ÃÎEÄDRâœxe²JC’,’WGœ›‚ÞYþN‚ó#ÎføËâǃ>ÞâB_"Î["Š1b¬K(âf¸jB8¼åè-:-ÂvAäT/x€õà éîz,(P®F6e¤ì Î>:l*N^5  4Yf0|ÔQ°þ|ëi¡ìK¡î ëDààaâaäaBŠ!À‘ð‡Ç4yƒzÞì0¡¢ì”«¼Ë„Èl(,§qHï ’B%®…mîj…håh-Ãv%JäÆiËØÏ1bÆ`&X7‰4pãV[' o澉îjĦ¥ÃD\ÉÒÚp|k”Å®8J6ÀèK„j†Ì~D!€cÀ?±æ: ¥B8Ï#®À &à`:@  d®'|‚ µé:OCª£mÆ@£6qgžûÆòüȲc2œï3äÞZ—eÆ!#àRÃÖ ÀQâ¨\’Âjfú¯ÒF1£0¦X/‚¶Ñ#`ºâöY£J~.°¦âV?Åšµàx즨‘‡€”LhìnâY&ü}£¦0b’}L®ìжË$Ü!„6Ï"@#%N„jtJl¼$lJ(ÅJއ²>"mdÞ¢w>ü)ë,%‚/nrì$‡~S¥”€ªÐ@Áþ‚”ã+ø,PWc:éSY®>7å.¢ÎPÈè#CÒ=bPÀÄ„sÜ÷Àc:‚Ž1þ‰¤bY¢¾GÈZdør'–B&¤GîVš"HÓ$œËîþ" 澯ÃL;I˜0ffìÉÐDã«)F´Ü‡ÈK¢ö5ÕJœ…c\Øâ|Rò¦¡@ÌJ¢H`´R2È|ÌJÍ~ž*66Sc¬„ ä.–ì) ¤j½åÊ‘š5D`½*ÀqtùbHjL¼kcä1*R-â,5&À@±Þç©7IdÂÏTjT˜ƒ.ÐÃße×?C€CmîS'ôwÄÚ:â IdÜ¡èaì.put8¢&‡ FDã¦YbJŸ(D )Jä9勨†C° 3é˜C„‚‡¶.Äž2íf¢¼ü¡Ð@A¨ÀRáÚãü1Þyl¸3É64* ÒÂ*â¶3£"Ó¤¬#,°Ó.\²ˆÒroÆCÂ.eÇŒQF©'4vQç–lIÒ.£dlÄÃå JÌ–ƒÆq¢è‹3>!I>Ý£*)åÈ·J.À\ãK4Ê3kbC ¢î‚Ìàà4`à<€Àd@ ­4â£n[21H.¨o‚òÇÂV\hdk\IJuclÚƒ$$#L “C"  (Än æÃR%X*+óÚµÃ{bàŒ‘øYO…Gæ˜8£4ÃÈQ农$Ö9DN8%ˆRíÆ#DÕbBŽ…Icxÿ"6¿o,Ö#Ç#”Ê\Èú:àÂ>ñHÂæÎS´Q2ë åÈQÃî.âÜã-.A(¯Êœ6“VÚ†‰ 4¢8*Y¤ºZfÒïÂMlÖOÌHŽÅ@i4#ƒd3dQ+Â("BÖué5ƒ$N LBÎüÈ„F*RkƒÈ§iÆ/ü¤6 õèÝ-+C[Pô˜OuDj­Nz!ÂÎkrY(æ} ž#l›—j’äEáýãÒ#ÓD#>¢¶(â÷j®þƒ’)#üÞC§XëÎdïÌPË"2d¸Øc_8‹T™« 90pDóB>,`ë –M@ —ñê* "#.ö/¼Q¢r#tB¨>H1†ðP n|åÊF"è†ö0þH6,ˆEl¶€'ú›ÄˆÉ½rctHÐþ!dâ‹E°Mƒ4fæ·–€‡Ž@¦I-ôæÜ€  @ h×L$£,ߢ|_÷@%›º6È0$"å,±…CFKÚ#гCæ,k#dôΞa„ÊfpÕv‚Æž/PD¸(Cükı.æ;¬£Æ)¢‚Më™C|xkl‘…‚c;‘ëåø.&îoqÃã!"àDc,ÿ@,³c«¦¶j§KéÚsÒx•H¬‚`»»Ä©.£c.ê’†Læ¸M&>K5¦Ï„SƒˆDJˆÒÙBª,g¯Eh¹ƒâ‰Òo¶:e-qž4MjS¾E æ/dâ0äÉm—U³-C€!eü”ABÂÑ•Xs  ZY¹ZÈ£{tÆ %m2$Â~ú‚¥šQÜ¥H#üD4¿ŠÊH!Ú6AÞŽ‡ºUnzN VLT룪Ðcâ#P‚[¤îº¬*<Å(Ú¡í¨bÁÆaÞ!ân¹B¡ø€!/`2ˆ1öp %¡Ü:¡Üir*€6$/xm|K;fâ”8Ñ{áùÆÀî ÀÊOJíqOÇJÎvôîæ¦@j¾7…FT­?â´@BŽYĸ0d2ÖpAæ)áîqårc"IêY¸(SicI¥D„,ãê ¢€@ P üÿƒ'ø ?ϸKú€€Ð þÀ 0B×óýû&À 8 ƒ"PTH  0ˆöñ}=ÞÏ·Ëô {‚!p@*¿ßoÀ3ùúý„Kc 90 ×á²™1÷•ÇÀ ú% ¾¯ÊÜ B€€Gè%ôípº®WK²¼ûy½@м„(ƒƒ€Ð¤9ðÆEøï}½ÞúXÐH ÿ„BÀ€ØT Ëh 7ðü€è@ôà¾á|§ô¤àÇðPh7-ŽD.| °ü`¶›”65Ï ÷¿©Äéð8W-ìø…oe1 =:<~!Zû è)þ!hR:¹¿'ëÔ¡! z²H#¾¬èŠû·ð¤|çÔ­Ž ~B¨É÷ÇÔŽAPŸjÚYA‰·.ª¼âˆÔ‚Ž!€!ìÆ À°$꼈 À ¹µíòß"pB‰(ÉtP¤)3î¨qŠ»«ªü$/rÒƒ¡I2É+8άÀ¹­0¢:ñ°D@³àFë7®=P;x£ ô“9Šéø#ô|h‚°S“®jòÀ¤h‚OZÈ¥îòß Ëê„Á8)!øÎkž|;€î|À绚!@Cx|¼G¨çð "'‘þ|ž«8 },‡Ê4ßPh:ê£À „9Nrâ¢Móx–¡4?aE¨ò›1$ÓzêÁQ(x}Qð ¡7ðãñB·‘ »Ö¨ühóÖ]îŽ"U³ˆ“:Hp|žÐìwÀaöv,¡þ‚ûbGËz¿€¬ —@/’ Ƨڀ28—ЫKæ£õ¿Ö¨¤ÓZÎ0Eæ8I´•¥'ó}Ú‡ñàtž€Úh—±ªVà8` ƒ Ø,à ÊÀgÀ¾ 8zp&àAð¦iu€Ç¸çm@wî`J\®têÓ)Ævññ^Vü¢`[„vçùà{¬ 2^#À?‡²™"@)’!ä9†¸ó$P­(ðx 8Ð@9¯à ó 9[Xúnp˜°.Æà X#À8‚> I)Ô]¢uˆ]–ø>à ß’òNGÏk¯ È á„âÍàâ`Qõ ‘3[Ô ì‰&¼¨5àÉüh„Áfn}cA)M¦ù¦#®¾Ïªn.©P‚—òȃÀ#·w¤ °÷nÏŸ9`‡ D›ÔA/(r]׺Áþ_  röŽõx=GàómD;CC”GI ‰¾+ ÀݸúLIpÈÔ‰! Òe¾¢…HR¼D%ÕY¯Áü¥‚#ÇÅoŸƒ‚ñIca•gg•RsAcìך%¼­€9`pCü{)Tð—ÈÓ ,•JíO•[¨¬‰ªˆÄsU™½^hUí³ò˜ú$QÊÕR€@‚þdÅüJd%#|/µÒ€l?‡ùü~Ø>À :°~%?€P6àÎ<Çè켈-aþ@`Uh6zNx?¥ÎW¼Q9‘Ôb•åÍÔLøJëÓh„¶e/v|µ©&Kð“!îGª")àñw_UR‰¾aˆ ߨ‚L> ê.±í¾Dz@ «ãð|±â‹GXû@L€Pâ… …j4«EXKc)rãð…gkÈh™3œeãj‹Î_k¨€“Äì-DNÑîHs¯&Es°€0 ²Œ€‡nÅ@û@w@å@XøÃȇB°È !cÕ$ZÁü;ǰùE(‹+@ÈÇœ&)txPÀau5)@ )ü¸z²¼’ú‰!¢E¥¦›wˆ;„§èµHÂDA#O´’—ŠãSƒÈZæþШ ?H¢ú…€ñàKG± ‹(â4CÄGÚ<$Ó£²øžÓZ 9¥Ô¤ÞÀL{€=%!ö=(ùZÀ¨€P0ÀxÀ<´€@o&Uc9è"73…Ø‚0MˆÈ¢Á]G¨õØ v»u‹‰1(uv;àô7£ú\ZÓ€Š-iC+ =€FGyß„l¢G'Ê5>(€à$maèRƒåo¨#‚­CI%%áSÕiÑ /íØê°ü=5N9-8ä¨ÞÊ£ç8ÝùêS(=AT¼N“Ù®ež•F»½.ET"bY#Ï2AH aÇÐò¤¯$ÆD=G°ñ¾E,‚õ¾@Çê”nCü,Aô`µâŒ éÅhVû @ PÇÀ÷ày>Ì@´…y>Ç© ޵€™$ƒÀz ë9«%(iMב²Vˆ9Jo-L¤Z‚&í8Dx} )›€È ã¬|Ž¡ä>¯áf.x T˜ð®^3¥J«)Âà•¥þBÙjóÉid7õ¡ 9Ë€SH²¡}ÃþɨhWz©W‰CC!‚LI49åœ}#R½)ë¥%ŽûÒ‚2—K«!i({À=‡pìÃät+ªÑN@RÞ,ô§0û€àØ Ò;€H ­à `ÒÉ! ÉZ>àEß)вLš’ìˆ7¸ú, ,!½–CÄzŽ]\ÂXL±ë9£€Yæ9øBYh~7Î=KzÀ·±ì·¾5XOcD°Š"Ogòa‚\t¢Ù-š%–E¡Ú!âAê `.9 ,#‚çÚyäšyh¡#Ú7þ9éT/êP âš”ì²>°ÿI€]69ãîw-ŒÓj D!ö>ÊîÕ¡Þ€¡¬ áð€*)NÍ`&„…Hö›ë¾$`0$Zg(”x¡îáäª&B˜ ®\ÎÂeh™"ÁRh0#§¬²„’&£çÜ‡Ü &i‚¾H*ÐÔˆ"FcˆD W œ!C^uDÒ/bøvB,+âº^â$! ²8‚J"æ`§¤AêE¨RS$¾šêø3„•DD"‚þJEåhEÄ)Ì%"!ƒð#C‚ó¶4KXÜÄ‚%¬< C JDPÉB.Æ€Ù¥kÂ2Xä‚LöI Ü£…úAÂ2,¾ódÜ$©F$*4Etl§jD  KHÝl®(BÔdböhÂB8":$ëcÔVmšßk<.oì!æx£@t¢l·ÀÔ¢8T©8]D ,dKEV!ƒîÐÃÌ]b@ŽKX-"šv%2Ý>1 ·DÙ LÇ2HL ÆÉðDLâ2¤D¶wq¤„Ú#±N¯­6ýi̱Âh†Ô`8áÐØ¤Hô¦aöëÂÀâöJƒ~ºÀ$T¡â,á詜„9âN8 ´à  ’ã@¦±ai!rm`v}`p0A¸À&Õ!ìà B&`@ HR‚Á¼!†öbÞ Àµ¬"aæÃTD"æ+'Jrˆ?\g0ì=GH:hìÀT@L@ Á¬¸!øG@aä*@T«ª`(áô¡Ö¡Ó²`¨%ÎfÅ^-’>âö%ä E$c®a2¤? “!ä(aèOŒ[î`#äA£‚DÂI(þS 8Pj”Åâ$ÆÞ*£‚¸aûe ïgjàn`8^m@"lÆIAÞ!òÆ¡úàå!ú" AÒ¥Jä`À )s¸AmÌìRàè­0Áà@Î\`D@\4¡¬tÁÈ¡Ø/áÓ2LrÈòO~.DÞ‘”ÅT£MºFŠ:b9H80G2a,Z:qfU³4T¦ç/#ðBëB=B7,_Gäà8”~¤æˆA%êÇ"ÅÐFºxžƒ%Ä@2@šåVgò«#DJeñMefé ÅäQ£¬×«Y Æ< •9äA’I3C« ã„YLªVˆšäî!ÊPÚé³OOBs‡V$ &cåpRòK¢„Düý'xÇ$©º.ÂÆŠUI¦Q‚þi‚0ID~‚§8Bâþ/ˆ °¢V ¤D ã”ñèÜ·5n$ Ž#¾–G`=$*$˜ä&=%T¥"(7Ñd=ÂÉ+L@KBÞïJVåh;H»ˆ,-ß$ÒM<ð_d óT ‘Sº,:.Â/fƒŒ[̦:ÆÔhÙ"G…x¢˜QŠ¢ÓÌÄÆ"NÉ$,jUQxAŽ’N5e« $– #ôÊé):8 B ,‚ö,#·PãðS´Å347â"r¡.ò@ãîΰTAñIÃ~> þv$6{‚Æ``l sà§E ÂîRá¯Ø0ðŽª¤äÇÁü4!ü"ÒÕcÁs4¢ôjcˆÂ¥„”ä”âE'AüG*)` QóÞ(À"M @åogåDáÈ@)ÂæÂe@BLíè!KêÖfU0Mô…mÁöp…PnÁü( ÀáØíj¿€ *Ðj¤AÞ„P¶ÿVvâÀ/‘ çVHb³3Ÿk¤L?"4$µ»wÊH!gÎ,âŒêŒTâG3d°<$Š)ÃEK€Hö˜bîQªþv©^s#ŽgbB§Îàö% ˜ë„Φ¥ÓJΧÄ@¡ÕE 00”ò„WŽ0e%F'&áCÒ’WÁÜEÇ… ;dP¸}_„îMÃÝR£E äÁm–%ôÆ+È× âŒy»} ¦±‡Ä8cÔ!Âe.Hî×FEiNo„×¶|8„\ŒGÎQyX!dÒMXk:jô1]dèhV±x/B!‘&,œ¶2D$œq¤B1á$ÊK"®/&VwMQèCÊ«ˆ•SJºâc„ÁK¼C Ä+Áð7ðoÌa‚ )ÅZKâ™RXˆ>«Pvb¾ÅdhPÈ+•¸Ÿ¹Ãˆò)MMßJ:RF Nž4É‹XZ=§œ0E`@«#¦fÏ®'Qæñò»Ž;§D¢.m—šB^ú{Š©8"1ËcØH"$[$cRù‹#Š…\鈺·R©HD%&9[‡ÈÖ<|*KI¤$ùQÕ% –¤b=ÀÉüwµ#ß!5øš4ÊdY,S(Ú,ZzÑOhdá©8ò°#·ÑöK‰ôðGU.iMƒ§¼ñYÒo)!ŠÃ¿Õœé…œ*s=Of8­Øû•§½X®{}¨ÐÅÚ¿·!ÓUv?^Ì¥ ´Y€>šb4Ê ,d¤t§Ï$tð,0úÁ¹TFÕïΪ×%€‚DÖœgb£Ö¶ex‡dfJåÎ#^ãrPì)Ûô†àà Ð KÔð$ò fABD!¸(ÁÓ„v¢#DûŒc’ˆ¡ð úHƒV Î!òlÈ#T m@AÂ6"%ŽM*F\"±“LÃæDV;!êqSÍœaéŽJcî+6ÂI¯ßÏ&DXC½D/LK.GÂ-à%Ï“¤ ËgD¨peœ¡êW†Š$W¥j#k#"ò#‚€ @@§àþ€À @þõ|¾^ï§Ëþ<ü ðüÿ#Ò)þC‚€À00û’¿ÀÒ‡àþ}¿$O° (€©TöZ‚Êf`7ìºRJ&¯éDª¿ß³ùü’¸üJ¤•àÿ}Hg¯ÚäÊI•IAr \ýï!|ÔŸÐ[²ÿŸ@€s+¤¨þ~ÀŸ°Z8†}ʰy¬5rï)‚€€)­ŠJù“Ê%²Œ‹þe†œàë2yd´·¨â&V 0ID?­5S&”qd J€}¢¿(U]&,‹éIî–ðÂÇóåÀ‰Së“>Ÿ¯Úî‰ï=^¯§»Þq5¬?Ÿ“Ô®@ºm«Ê#|  ƒá¹À!ô¥ŸcTà MRJ•&l“TßA,"P¼*) Ô”­(*J¢£ÌˆȨHP”7lÚfÖ$jÌ ÃéA¦Ðú<¤½,’ÒÚ3ê«@‘9Ì|_ÈèôJ ‰ò<Ä ¨ª*Ä.+ÒªÂÉ-KJa²à¬žÌ‹2©Gªä*Ç s|0Ÿ'˲„ä*ÒŒG1J£¨DnDª¯ªHž–0´?BFñ ã8±2ªðÐQÒ„*IéÒD}7Çüº×9‰Üü7À ïÄ®j„¤CWTç꘦µÒü¸Ð¤§è§Â@ެpëï@(&"v¼+bH#ǰ€ ²!Œp€ÉÔ¥2`)ò úz‚ ðv`Aä‰&€¹Â¦aòÆêQÊ\âÒª!ǹw€™ åLXõ»ÉÒŠ€NuÚ{"¢ú:/?DÁúy‡áì  P}žgøz¡ 4V· LÌ IÞ~磚Š!èǹÉJààŸ§¤¹4ÜŠÀ¨ ð¸'øCÓ©X €@(ÈPN„\` î”eb›Œ˜.螬šˆlzƒ}Wg¸ ‡Ùû§î(AøúÀ „ïfõ½YGè ŸÇÍ}Bò ¬¼€@ ÙÈâÀö8,[„”€­ò‚Cë¤V±E) ¡?KŒ2§³ú}¤ïJâõ«ˆªÔ´ó)ÐxŠO¬êFÄBò“ µ**ú|’±Œô®¡+–P üPÂ,‰ü¸Ì(.ÞÖ¹ ³%å,lƒ–Áµézfä0i2\—2mÂg•6@fðdk’TêÚcº$OŸ¡Ã`K̉X cô¨2:‰êž$E×#˜xS¢Å$ ‘ö€H;12 µuØË›GoídÈ•è Çñì×"’~@KGH{ zšÀûüÃ2…ŒQ>$åÄ+ÂÒÞØþÈEÚ"õK]kåFÈÈ»$e ”]B‚Cä¨ 2<šâò„5F$“¼ØnÏY¡´Nj<»¡7[ ͬkHi.,9®¢ÔR9HçÕ$îKß),.Ç:AT‘b7(ì´¬>I y&-ú"$0‘Þbq7 å%˜‚ðJÙò Dñ¬”%ä@ÐñE)¦%'$øœÍ%ˆÙ¨DTMjoJ…J5¨h†*96f}Ï¡p_%Á5:K«t&±·uv1.WBƒ‡Øq©¦¼LÄœ¬.ˆ¹ÔJÉlü‘)­˜¤¯]´ÂHŒ½ò1é½ò©â´T"©‘”&Ôði>œ$™£J¯¹ ËE-,3µ’I# ";P$ú‚„À‚_T‡%—- >pɪI“jc’¹‡)å4yÀéZOZÓjeÕ!ŽQ}6(Èe[ÏÌÈR5 ¿0Ìn8–r\é²Hò"CŒÒZ¤ÉRT¬\†L ó³ `Q¿úJ_£P£ßm¨˜ÅKç$I®³Š]HoU’™=j ñ…%kAE´ä–v*…§ÛSi£jTRéÆbåu¶ŒÛØ[Õ%Ci.©¯ÊR.íMׯŒVÑÍ)Ëu'*}¶‘j-K©uYï 1W2•D²%¬tIìm¤ ï„X"™@QÂ/äÝN¼Ü–Hµ!‘17þ„bÏe§—§ æ+ÂK™³ß?O$ô¸Mƒ.õRK—“dIñ\- ´c'eÇÀ Ô´Táç¼™’VŽƒ•!g P|š “JUlQX5ÄȬ™RMójí8 9•SÜ=Ù À5ìO±Ü<@òcá^“ØCNˆ=q•‰zkÈ-5%š.Y5t+•ü|D`UÙF+ œAþGÁô(‡%É캅QÅN` ,Aì0aì(±âop |Ç.W…vvÂzN¢Œ± ,&`4-¡Ö=Ö=À 0à AêÔ`AàòòÁà=ÁÞŸpW§¾=CØ2d&+‚jYK$`oDR%€€ Ï6ì!æ¿çôÅ£œkà1jÆ>ÉøB-žÐ"~Fⲃ ýhø dÄÜ­þ%hÀ&¾O¸BL$Ñ,“é|ÂgÎëçÆÎð¾üò•§•zŽäZ‚G`ׂ·hhƒ")¨°Ñgp1ï²+¢P#­$C ÚÎbÔùòÐDS)(¶Ös( cvFÏ$ðËžDÄ¢6Rã,ȰH¬Í€K‹ÂÊð¨Œ0ƒR–ŠŒ¬é˜vR„¦•Òá5Ç`$Ô $.Ô„|$®þÖVÉ$Jõù „骰=ô)޼C#¸$¯=c•¤üIoî”ä›`…T«@,OÒ*«úPÆ1«Ì oá`3*ßô(HìÓÇX1ÄÄ+ëñ;°Ç©9ïHé]´ÄL‘Df‘[£_/©µ>ÏÍ—{¢PVdZ=- a5¶ÂÛÐnô!+dÞ¤36r²IM|§Ö—*í Õ†zÒ0 BÃu0Ä”FMNÛµÊî¤ñII12d¢¹ƒ!aÃW$@~kJµJ­ï @bT,l­ ʈˆ =f® ü("¹ÃbAFG0çÈ‘b'赓Ënèð‚"¤"ÚÀ# !øîà•¨VF0ÅÛà(r ¨ $ ¤ò@Ôv¡þb˜áÝ%úÃÜ#‚èµR´ä)!ühðnÂ)Òe 2%N.j°b’à AåIT¢\ÔÎOL­ÍŸA4 2Å<-ŒP-n°©%„O ˆ,)*ð°¼–ˆ*ÈÍN±BËÃc¯; 0A‡R˜ƒvvS”S¸ñn.F¬Š5°šTÂ<…Ôïi… àÐXÍWcq,w8UiÕøÊõàŒâR sÕ격µ˜46·nÐÙ]ñ,q` qŠ’,CÝ¥J~¬ÍB’æ1I"Qhå‚PÈÔK!Aþfû} Ýp¦ŽvC;¥]¶´É¬©]OŽî‰ çn~ ×3sHDmFBŒ–&(LQ–ûEŠ6•Ã.vE Mo„—nÊBѤJÙÃrO©`.çN)+äA"€ @HúÀ€0PƒÂÀ˜„*‰E"Ð+‰€! Kþ3†¿ãÒäIŽapü~Æ¡àX[îML¡Ó¨´.9#?À—ä–‚†€ € kúW" ¿Àr ý9¤Âæ @~¬ÿ“K벩 ¢º›>ŸÀ'íX Ašø üÒ_qÚHs “XdXš–%P°É@Oð¼úµÚ%Rà0/½%''5™áj—Gø³Ah@À0 *ÎÀÀ·ø"È }¾_ Óòöòz¿^¯·ìÉù„áá6z”4×~¾ßÜXSòDþ’dßù`ú;^­€Ñ×ÔO *Ì«ñ-Tž- ÅkvÊ„Múˆ¢êê¼,JË4“¨HB´‚¢Hz KZr¶+ ‚Hÿ¦kB”©êJhØ-¯ºô¼ 2‚Ó«g󼉨I ?ªòÖÂ< T6Í$©”t¯$ê¨Ê$Ïú8“, y"jkò ¾*Köÿ£J"ŽChÿ#êBÛ¹þ~»ÉüXס*Ú¼Ã(øžGêZ© ¤ŠtD€ Àè¾ó,“AsúüD)D€€8~®RûÀ‰I±\‚KèJºÓ¨J²]+ì°¨šl3 Kž{ Ë”'E¢ô#Ü™¶Vø¢Ìš; SQ £NO¤— $ • ç¾ÔÌJ—ÌÏYþöÖêx7FÑ2"!oKö´¥*²„°qêô­J ÷ÓUå2©Êèòˆ£Ó¨¢ž¯è4®Þ áyÞ—«‡"·¼Æ„^T ®û(lF…ÉHú§ÙVZ†ƒ¥Ô”ñ$¥ót¢l- ,I”ˆØZмø´%êÕÖò±kC÷:ÄÐÌKaÄëBëeOQ‚RŸ¬LTÆÚ¼§ÛÄŸÌJÒ :0ÖúU_B 2Ð~&GÑúæá‘E‰=r0 € H²FO#¶|€î•)TÂ}½:Zý2ò~¬Œ6‘—˲ë,~Ÿ JŒ®3i%.5Ó}ý€LoíyÁcUúÈ€ »ˆ¾Kr¥öûµ8]©Ñ‹þ×)ö‡ZŠëΙ°uª1À¿вô­5ã)éÊ^”N*‚º³"hÀøéh¦h­¯Éz—$D0onÖ¤Ždã &7Â5S´g1K~zU‰Bâò·JF‚1ZM@TÜ VAùÙºT{ÃÕD"ÇCôtŸŸ%N0O£~ñâfm)*ìeÚšô˜AJs4`Jew­W¦MœI5k€ œ˜4¾P2[r Íg½efÓ*g¯Y‰1V(ø_ +@¤‰Ö(lGˆË(¨ÕA¢Ä¨µ”é]åd±9En¬’‚™&ŽE‰¢DN²V{ë‰zÄØœ¼â:ô_¯RÂh\¼Ö»ê=È9[C·ÔMOó•"LŠG¤ŽÑ.D TÉ/†â³•éñR*íkÃ<}^Ù“.°^’ÓUÓ€O¥AFÕj‚IÓ¶‹eˆÉ*ÄÌAZa0(ÄØƒ³ÀZ2ZI±CWêÑŠ ` ²º¨˜ ÉM|å}65ÂèÒŽyï4æ¸AbL„J‘–ã䯮÷tîˆÚø‘‡åYYˆñÑbëOÙl%–WNÒH%qÇö@Èb¬5uý’HÇÖš#oCGìžÂŒºM=ó%]•ÒË cz˜¨"”=“«™1*jDóÈèNb*n ô¤Ã§är—Ñ"7De:EéEqâ-Ŧ@šˆÂiK¤-¸$²xŽò¨f½]&¥XõSA™fd3D@ù˜ƒ‡Üñ>–-Fœ{šóeáÔ<üÖi'€æ€r’{VÄÃ"¦QT•&ÄDƒÍ}TÕ)F÷F”Ȧb´ ˆ¦Äb³0"op°±¤ÿÙ4-pÁí.™D’´R„ñp§£ä&ôãìO«ë xI¨Ÿ_ÓURx5Î7®bXò‘PWçå uwEû˜«*u¼**½‰±^žèB¶¦r$ù $ƒÔ„µÊéa¬ ó$0éŠH‡Ôê“e?,…B2âOB Y#+M;Nø€íÏ\Ç4’BÞzVY5% |“e²@È3ç#§®s“˜X µÄdSÊãbºÒÏùV;ÈÊ´U©dì™}åZ-5`RÔ$Ft‚{—7® J2w±D(þ¥ËA‡×ï¨P@Y ´ƒü|L8úƒÝQ\h‚ ¯´¬ Ëù(4fú{S³ÁRb­˜k^Š+ƒ0¾Ç⪘Y3zqa™Û+#ʲ/ÔŠ|k–˜$6Éx0u¯I‚ø@T\²Î…k="„¿d¸“¨δÒ[\H¸ €rÐ=ÊK­M Øj«WëÞ,°1^"ÕŠl>!JQݘ³ÔPq@¼šÆ¬œ'®•í}ºZ+e¼ÖÈhÍJ¬ŽY¾ºtó!rÁ`EIâÇë–ŒDìwtTÔ0\N„Ò\0ª±ŒX:°¡Ò3ØKö²½Â Q›#4à=ɕåݤ0ùA¥Ñ‚‚Ã‡Ê HG´%š¤"êÊØ*,r> :']cþÐx”ÒÊljµv̲âÌJ¤ŽÊ¾È „CY’Ý®d™H@<<@žñ :ô+¦xI‰ ‹ÕËð™“$¾0¥ù#dÈAôœ£ƒ³%~7}9AL9jo\C,¨ä\ôCµyÒlWTXBc&þ€ë;ŽaˆG£H9é„2Ìg|L‰ñ§°Ó[C^5S€HrªhqÕ9-g•ªUs,ZVT³ÅKTÁ×=D%¥"iÄžÇ#52&F"£›Òp$-7$¨Ì‹œ¡Ìžë'6bȧØL‰%½Á¤:]o5ŸŠbÈŒÓmAÂN—šZ[ï=x¢£–û!4tª±hd 2EÔ¾®Æþ½WDñz>¿æ•íkQ~-´¾ÓímvšÅ»¦=Vªbùõ3O…æë—3„Î{®é/«{ Èè+æš×Tã+ d=°Xú,VB÷gÆmu9ÓÐÏÚÀ,ç\ÚËK¥tNÉþd&eš² ȸ£<R û˜ë14E®~1r·Ññ LÿÀ·³ÔkäLÖÌfЦ֑/6Ìl†vF<Ñ|MƒÌCz+hötiêI,*z‡Ð?0*Dë.ñNàCPË¢‚k‰jAÅ&3J|O¥  bËT"ï?¬:Îç2á å*â<,Ü?ŠP_ªB¤ê~ƒ¦ÉâŠêLÌs«4ë…Ýd˜Ùâ(*cÌ,êhÄÈ4Mbn:vAÉnrO$¯ŒöOI†H%í†N¸aʨ¨Bâl0f}äbÚ$l„ö^>ÊJã¢,¢ë,!âlŽbhFÇl˜¬þ~osªò×E`P…' ØZì¬æ$FJ˾ÐÀˆi²ŠJpŠÌΣNFòÈ<=*´ó†`aÏ–PQ@ÎÚ‰ÅA ,ð‰†„hVÌk<˜JÚ…ÅÏN†"Cô ’G‚)ˆ¸æŠÔ?ÈP°¢@¬¤Äzo¤Â…JÜàB6Ũ2kÖJâhCéÜË¢¶gGº*Í s¬Æ'"êÐ!sàI«AmX{þUP@wíþþ¦Ì ô Ž€/çÛúã?§ÏÚb¢ù„¾¡7Ë%#€ß¯Çí⌵Bè°œbï[¦Óf“xuîÇ?“ÁpÊ,IÕb"·<Á¢ŒD·÷ª¾ ƒ}×q¹‰nþÿ}?-‘™mj£VŠ\bµÙçnÏ^¬ÈkPjS¾GzQʔΣyËÚ€±Ù,S9ZŽQ @8+÷Hê/г&¡,bx¼µ¯Iü‹*2¶‚µ(b¾n‚¥#®Ê­Kêð‘€ÒâÅB.º^ž©¬òÿ©MÄ›+Ðsª·-HJæ9*2ï+ Ú4ôŸë2,¸®Oáü =ïZrŽ ëûÿ:ðj"ý¶Ä©¢ |bó#ÏãÞŒ7®«o-¥‚q"M &þ£êª8Ù)'ðù®ª²Ì ¡ï e=§N´É>FMbf“,“¼ÓL3ì—7)j)K0ƒjïK-Šî"‡ê(ôÇs‚¯F0ù¬©tòÛ# ËVç°Ôòðµnìj“MóúZ£:h½97¯€ŽÂ)²B·@‹rÜ$`»žë¹ö´*è¢ ‚³‹¼ˆƒ®j‹ WØ 4~/’¬’ÄÈ¥HÛ´Çä\«*•¬üñǵʃ´ðÃÑ:èš®©©(õ«w¢‘G¦Iþ°!,þÂß7ÔzŸŠ»ÿ+<ô?|«“u*†,Ž”¦ë`T } «pk JBX½áGÚâÿ4“2‡vcu«‘áo+ZŽ€¶¦U& Ë®š2iÚtÁ­/u<8à¥,Õ㺟WÎCÔöÅð½%™­“ÓÏ¢½À H˜…p•½<ª»LòŠæWÈ©ôþèÊ÷R\ˆU!>Ìô”¶Zå’©µ‚!wmønM=Æ¥¡¾ñóÄFï´-A⊬±Ëã\äÑ}^SÇÏC’·š·E9LçE  [¯k‰dÒòð]1ÕËk[KzEpŠÏWæÑLJ¹Üû´E¸jTŒ?Šºç9*6IñµH‹ä<ꊃç ƒ ôD§Ùô¼uŒíAi9ˆª°»7˼‘­¿N®£<<)}¤Z ‘F+©Í±7ØÍ0@}4JÍydu¥UB•SðéÜ 5V‡‰Ñ¨'1Tô^(-Í”® )}E%D‘˜•›)j ãùˆšÒ|‘ȃ¼‚®qÚ5ĤšUD^6DŶ¬WXwÕ„=-!GlL]ñ-^¨nA7:y£m)ÅyRGx>ÍSäksÈI-À‡j­#¡%R bòR´(Vä-í18^Z™T„W,Ê"¯óXM¡Œ2[P,žwhW[Âi1fT/”të`C·:Ê5î˜dÊ€šÛ'©ÄÜ—í¼-&Ø»% _ÈþE$1æ_G°û\u"rD€9V¦ ¨—¶PUߤ‹Ï(ª(Õ ¬ËÄÄC.,¯ª†ƒ=IJÚs Бæ3¢“M¨Îs¿%Lƒ ¬A‘RUÃ(Ob¼ŒI}‡ÍUå a -î?¿|"1\/°AÊÇ2äÚž4†ñ!á "Ȉšÿ+¥Åè ¸ óÈ)`Ní¬Ñ9[.ŽãkS!ض¦–š€/4‰ž7$Ì™™ A¥mÔ¯®2#,TSº,çhìµ àÍ'IÁœ%¨[Š®8šFÚ‚ÄËÙÒ"@"+AžtݢqýÌÈù&å¢ {\Ä’§§„™Ô±²V)¼Ë¡¢cî>ÅCØšÙ3{±(I6ºÃÓÊ–W5ñ0W`wêPk&\¼KóLRc9s: mÖÕ)Úe ˆ|GÔÎNF Ì98®nG$ÆF Ø‚S¥ ZļÔXžê[IÇz9 ’¬ä’{SöÑ*fç©“NÒó9¬{ŽºM`ˆé½³0Ï`©16i‚Ê„™.Ñݨóñ[¨ò^ï¡@ 1²˜¢HÁ- *׆Qlí¯¼rY’Ÿ‹7ydÅ•¡­¾®'„£,¼Â/Ð m²YŒok›““/1 aÏ@ãv –¦¢éÉj删Ñðq´ ÂYUYásb!3¦†9›F—1 §°öX†Cºã"ôºë¾úÓV(èò ‹)oÝ^©}r~7t ‘7DpDT’Zˆ œ@Õþ¡Ù3”8ìBÀª2 ¿œtÉQGÊÆ4 \«êcÔ­Ñ2”%ç‹ üKFªøÍ’VIË@…eVÓBe§VÒÿ‘N5~*[CKjñ—EQü—²‹æ1Ÿ(ƒe· ˆÑUc¥™c:N¤È½°:Ó,².ò+Pˆƒg*º°¡<9]|mÄ^ΣÌ&Jɹqexš›9XÕA€Ak¼‰ÆuSyØ£ù©WS_«mAHÓ…Ú ¿b6ë\¤aJwI)³ÊþÐÙI(NR^8JäenÇ; Ÿ=ǵ(ê—Î`ý›b:̲—ûRÖvÐØw&Sä\ŽÊrL§—fôcëy;¼Ð¼çÝ\ŽsMá]£Ò û1>Q.bCN9ÝÐg5¯JLÞÏ%s/Ì ôLå¥b¢±€‰œb’’²Þðÿ­€3Ó–‹ðü2DUM3$ß–¥Þˆ^Rö%ÂMgQ ݨ–NÇ4h}”H‘ó%)›”yÝæNµYþFrÍ ŽÑ]‹LgÛ0—þzâ“*{¹¯u ÒÇÆ§Å8më§í B7ßói·ùK×8ÝßY÷ʶLt¥š TE%ݸ¥ÉîXdñšéw]†ìšz쪻)vAµ…aó¤ó³i1ýt‹ü‘w×CŒjëÍv©þ¸÷º¬W‡vQYv¿’²€ P8$ „Ba@ ÿ†€!ðxŒN …ÂcHt  @âÑÈd¿!çü†=Æã ÂàóÒ÷ŽÆf³ÈÕ šË`’®%Ããoù”^žDÀ4š”:#MJ¢QÁ.¡¿a¸ü5þÿ¡À­´ªŒJ]­Ga³P ²á ¿Òàxü–¿+ª…RQY§Ãë°I †De™¨‚Õ%§è2°, ù(·èâ–J‹ÿ/¤â(•mÞ3¨€i¯÷Ü’-†ÙÉvÔÝV [†°ðWír½»¨n÷ (|ºež¨Q ¶x,>‡ÖíAS\ÜÒý¼ömðÚëX˜Þ |Þ?#ö©VïØ Üô½*‚Üá´Hƒ†«kzÔ™8[øî»ës¨A«’$ô" CÉ$J¢h‡ÁË¡§Úàª$*êêÏ-Îâ»;°4,Æ ˆ‹èì©é’ɦh+1îû$ÝF ¬ ßGËZÑÇl¤šÕHñëØ Ê”d´­j ¿+Kˆ[.ÊRÚg/DzúøD±û,ÈÑÄš$óúˆ¢-(Þ´.óÿ42lš¾+ªBÀ?´S”«&ÔCº5Èaúä/­š,©ÇÜñ´ ŸGñø—ëRBÂ$ÈdLõ«HÅÜ&ÒÅ6"ÓŽ£B-CÖÛ×ëáÊ,öÿ=@ ¥OKá!¯O ¡¢v ,šŸ±J*™Z3rݬI5]ÐQ’ ¼¢ :81â1' îÃiD,jMHìGPø5Z¨ÔÞ äS$Øl«ŠŠ/5jlÉÅUkS Öñ "+UÀš0À LÀZ++®óÈ•*Ë€OD_dqÄ 73¯=Û8Ít.N™Þ„3/’ 1A ½L>Ö›,e·|Á†Ñq–ŠñKYT’íL“³#³Uµ¥$z”k=麵(ªÏ~”óe°EŽúæÏbšPúÜ7& •]i¥O¥ã©V­w×M·o­ï²Ì»_i½`”<`€ÌúæÔ§Õ&~Z¶£.”¯Ø®¼/o=g7]ˆŠ‡[NÕ«:”6‡kÁ1§þç óBê^è“êÜ­ì%t²ÊW]‡6w £ÉŒå‚ÝwGlÛ(p­- sÛ=»™Q²²‡sNú¦¡½¦ÜËåÖ½èú[¾æÌåÄþ/{œew[Ñãaƒì ¾ãp¢ëvàÁ¾ó#™$r…³ÒýÙ“J?ÇÒ´$©ý ³°QuvM” Uáï<…4ó4ÚÐ "±b6wjnér¶¦PÐTby$Žõ-ÂTÀµÔ+i#%€÷£ _½h#ÂV²I âÎ Ñ?Áè„PŽ#ц@õ:”8 B0, áZÀÕTJIÞl§ð'ÅZÛÒ5)¤|¤;P\9MðÁò=Ì ùBÃù±ºèP­ÔY¦ÍÝÄ3L¸£ê]]=/Æo ܹrv«<§7ÃîC”G^ Ò&C¤|ïâ1OxFYƒ·ÈôK aÇ2ê•9¢u ) Šg…ù‘gˆ´ áÕƒM °”è‡réO±[=†¦¡@tÏ'*’Ã$”)éeå±è«“ä½eÚ}’-<’°gU# bErÈäó@€K|r,(J S*PÓ±w)®@Ê5²EW$”<Ó]˜dQaD­km¨ö_>ÚnLNm.¡b9ˆ)ZA›D™1ˆ™¯‚ ì†?ôñ(ºHG´.´vPŸ¢5€ÄÁ·Ù#H5äì>ñ<%Ž”¦±ctˆ™Õ˜ˆxû=‚N@*ž~@\QòtAiÐ÷"8ÿ ¥i}fP¾0ÛÓ*Î/t霣Io=¦8¢SHLù*%Í2î« ÑQPê]cÖ•´q"z;Qó(þ¢NXiø#ƶ˜ºd~ÔsX@À´ ó‰Lf¹ªn)Î;BÚT½#bÆRy(НaŠ4 S&ŰÊ:ß7#»+2U=¢¥$gi¢IðºÙ šˆ‚ˆZ¨µ4íxÖ*zD_óUŽÙ†Rˆ¢p¦Uvª§ÄìÜs'-‡(?Ô’zËu4 bhHɇ@!㧆-iâ j®JSj]x‰’´d¤Ì2¢l2H¶'~£OI¯”3ý—ãwq™«à6·µmP&vË9g7>'‘üPàq½³g䎨3ÆH@9(T,y÷QÃûMI mN“§¿M‹P-Hc '+¬cK#Þ»r|•ú2]HĹXJ@Û)n¢Á©³$6o‰OMÏrªãø|(!ZåÉí}ÝW R‹y¯®hf &X×YÓËf§RXº–$xV”Ò{9¢ÓRUymÙ7•—öØÔÂÙéÊku¶£.[)jasH&FW`8öý×"¤—ËÕ‰ËX6}ÏWÙ/3Z|„)”H[‚Ëû"XzïQd‹n!fÍE<ÄC?ÝÖ‡À™ÓYéÕ ¢²wÆ…‚7bUsa&™£ÓગWpi@ ÊóŠísœzš;M–l6U-šJv¢FW}0_c³T×6ˆ¹]Åk|kµ±Å8ü¶)ÖzáÀÐBèi,×Oq¢üm¦”~šu E”]]³êMï]SÂwµº1¦¹k”˜©ßz—)3Ô¨›#‡£€"ÔSg˜ùØ]ݱ.4  áòCÑ7$Ä4ÙC(`\dQ³ºÛEC2[ÌCGF¡åÃ×Mu}ÞÝvmÒ™ù¡gY–=j 8¾.cy©ÛýßÎrüϼ‰›eÓKηÑÔ>Àšá„ðÐ2MS¨‹®·Óºrðñ“ »$øš½3”u$”o)¿©é{·ó8˜ø‰’vÂ]½hÍBô@@€ @ü? P¸d4A¡Ñ8¤V-ˆD¢¸@û‚ÈbñH€û„È᱘>%"†Çc¯È´€2øŒ²U?‡À£°ª N5)†FÀ3¹|¾7BGè™m‰<ê1H@uY‡"5‰@‰€À1÷ü½û7¥¿­²ð´”O€S‡ôÚ µ[möÚ­ÖsmŽÛï” Pþ~á$t¸ˆûסwûí‘EV€@˜óÞ ‘ÏJèqšt)’fà› žf ÿ»Ä#÷YíBs.Äew ž×3>˜lo»\ßÿ~ßn€ MšÙKµÐwð=¼·ƒw©A£3ì§ » ƒXŸïÊT ¹vãšzÅW›Á¦Âî÷Û‚¶•9b†ª¾©[ܤ"K;’楧üáAŽœ ¶`*}AnSbª-° bÏ¡ÌZžØªHÂÔçŸË,@¢¢ Kd—B Ê )£`ó%0z¨±â±0Œzû* 4ˆ#«ð„©èÚ$€€þƒÏ<,<C2<C>==å€$“Aperio Image Library v11.2.1 label 387x463å„ä’矤§°«½GΤà3ô÷ %%û<"UÍm¶†fŸ׸rÑ–ê [s6MOhš³ ÌÎä·ý† /ÙG`x(‘ƒ©þÁ®ÚRóÈ †$ù<4U‚mi…Ëñµ×ÎÒçS«`1_IVaky&‘,©Û½¸Ñ»ä ø¡ ÎS(Q1Í9ÿ  ½Û, œ]Ä.Ö'«é°q›$uPÚÁþù÷ÁéÏš¹7}›[{°¤v¾s;Nçb&æûXµÿ÷»¯ÝQ•-… þ|…ÿØÿÀÿÚ ?óúóúóú(¢Š(¢Š(¢œKaŽ­Sh¢Š(§‡eB ðÝE<±NìŸOJ^Ã'ð§)Þ]ð£8ö¦RSd ®B6áëV,®¤³ºIâÆô鑚r¶Ö 8õ¢2UÔ€ ½E+´’3¿Þ'&ç'>µ$Ñʲ?ša÷ºS)*2ìÈœ…éíOB¡Áu,½À8§ dd;âš1‘ž”ÞüÓ{óRÇùÁ&}‹ÜŽiHg9ö¥éïHÊ‘JGßQM¤¦ Øô§ª©V%€# õ¥¯?ýzëÎ?­2’ˆÂ—Ž=À Ãr)O^¿•K#,Óno”¤dÓséF})D‚& #[ÖŒûsëF?Zx¹Qó4Y“œ¾zÓ•Cç‘Ðc­¡éP¡’£®A4â6ýðØ ‘Û=F?ëScfEm¬ ^qž£?Ÿõ­Bh›`hÔŒŒ7úΣ9úÿZp@ØEcŒ€Î}:õ¨‘J…‘#8ð}9J«0…¦O/b¹*¹8>œŽ¿¥7nÔÜêNïºÙüê.™'<ô4“¤0•‰`ãä|õõ© !Õ jÙáFs_æ*@ÇÂ1$áyüû{ŠL¬ŠÖ<á9úöõ"§[»C 2Ë"ŽW§û¸þ.ÔæXÐGåH]ÝAe…9éïڥرN«ì :)þéþ÷j¬]ÖØ«(*íOP{Õˆõ£Ò¥°*¦ 8$r¬;ƒôãÿ×H²Î¶Òp¦9;ÈäoóüéNØÜ²>XáI úô5Z`V ÀV8]Áº{ŽÖ­ÍbÚH’ì?”ÿ,g¿¯Cõ¤ÚªÖEÜs‘ƒòýj.GøUQ¹;TÉÇÔT¯$FBPÊ¿!–ç‘Û3׽ɨJ¦ß΄ye[só`ŽØÈ#™ëÞä6–ŸÚEciŒ†%€ùˆ tÆAãó={Ù‚Xe¼·Šûe*“y„üŽÃè9ç×½Ý)mŸ[´‚ òÃ+*J²¡ùé×óÏw][Ak} PÊîÒY‘ðzŽyõîÆ<ùaH¥\H †!{þ9úúgÕ·iaÝÄ&Öxˆ˜  Q9ÈúçëéžæÅ­Ÿœ<Ñ3Kæa¢ûÅSGÔœc¯\g¹˜}«P¼ËÈÀ„عBw*ò}Ž>˜íQ+^j¥¼FI~M‘©”^@Ç?\sÛ©-æî ª»¸M‘¡Só ä?\sÛªI4Å´Îg0L–â"7ŒŽ}ùãñé©n²iý¦ßp!$9ÈÈçÛüñƒöh[É—mÄQ°qääds×óزÖ5” W+y'‚WhÜ;àóœã¿}Ye‚ÖhRy&”›¶ñ´nŽNFs8ÏX.ÒxÞÖm³¬’£m?)ÚÀÈìrAç9¿ÓQíÉÄ@Í"ºÇ¹CnT¯<}}6Ò)´;È®n-ÆIUU”:–R§·×ØÔ3möKon@êda¸3r»pxúû»VÐ[´—PÉ%Ï–ÊÎȰîôÎNîIÎr3³e¨ißdk¸ÚeÕRV–EÈ\çÐprNrHËí¦†¤’$s{ 2àGÂäúg’ïžrHÍ‹ÙlÚîÚæh²Ä¡B•ˆ À]¿)äòzc½I,ÚY5öŸog$Юɑ·+ð§„ òžOÌGïÒ¯ÛK¤ÏhŸkµ‚£Q¸oºxP>Rry=ïÒ,éé=ŒpÜI Û¤yP6œžøuü VѤÓô»»_+Ys3Èè# ‚9ï1×Ʀµ—A²ò-[Ì>k3¾IÚ£AïÆ@Ç_ÀÕ8×}öéÕ¦ºIB›<²vÌ €F{Ä÷æMZêš³Iy;Ï|^Ù<¯+vѹ”€þ|ߘUô˜î#Q Ës«D› {°7 9íèO~tlâ½»B#Y­¯Ûž9Ú9>¸Ó¹Æn}‚Îúâh”¥¼ðß3– ‰œÎÑÉëœÓòp ¦ÚÒæD†¼ð^³˜ñ¶göõ=s€=;œf®š˜´-§M‰Ýw\•åI9ažqΧðäZwö|mg—4«™¡dfPJî ŒžqŽ;dñPØA§4žL–Æ"gUs!aÊî Œq¦zT j £Y$`‰¢–óz ŽI9ž§ŠuÜvö×pZÛ\5š°ž A>b±þG9$ŽzgŒw»<:tšŒÖîÖË •t—$:“Ñr9ÎHäõéŽú=´i},ë¡ ãh”m,€»‚òrÆNr{ä™,¬à³[§Óæ™ÔáÕ#‡ ÄmÂïÛóäc'99ç$Ô]6ÖÖêå®!™…¶6‰>Go”Ü“GSœžù&¥½µÍô³2hƒ12•l‘”…Ÿ“‰,Ø€ñ׌raVôX­"šÝMÜò@¬ÑÈ’Hô¾9éÀ9°ªöí†Ak(¶˜å×zCŒ 9£æôç990ZI µšÃ§Ÿ±LË™zE´‡ ¿7§9ÉÉY¢‘¡±“Ê™˜ï’,0ä )!GÍÏç'&h¤†mv7Þ€°R²:m‘Áü£oLCƒ×Öõ©¶¹Ôm/ÌŽy0²¾@'jíäÏ öäÞ±²k{x§w‚)f•˜#pqÈÀt#ŸÆÌ’ä[ÝÀ&‰Øoac#ԃ g§9úr³Ú3ÍWp‰ÞVýæØ7FÀzƒÂ g¡É?NrD73]@óÛ}¬3bOÜe1Ó$„ã=9'é̪ ±–åxšeÜòF0rņåœ'×Å4$ yue›ÛN镚> 1,7à}îO®;Šy‡N¶F|Èä KM*K3ž:Œž™Çz¡¦mšX-ï.“çv~#ã£sÈqÏøÕm Êkk%Ì7×73JD’âq†ç•Î㟧¨«ÚmÌýšÅìÎÒâI ±ã³sÈÎãŸñrÃL-õÜ迾;ã8BŽÇ8Úz;Ÿ¦M_ÒfŠÖ3Ò ‘§&MÄ!GbN6žƒƒŒž¾¦eMs,’Þ(›Î#±Î6žƒƒŒŸÌÔÐ\ÁkrÑ6CÆCƒ‚¬ÇŽPF&3OX"–íâFžâÙ·§TnÝB€ üœg¥žÊo%À–æÕÙ.^Ùþã³yqí Ì3ó7 8 ÷ÏÓ5¬§Ó Ï5Êì21, øÏ-ò¨à~¿•[¸¾¶&Ýl¡ö‘å°Ü^œµØ~ªc4 5¼³·—$£bFHÀ‚‘ß:rA\ú皊ÏJ·H­#¶‚â4ÄÛí#=¹9 ®}r3SK§Ø‹»f¸Žr»„¥X…#=¹pW>½ê­äBÚ?0îÿX¨X(ÁVx$g…ϯC‰¥yCÅ1bª¢@ª®Ò¤ à•ÏÝ×#ä[Óµ C>ч(ÁRðHÏ ¯Ž+5¥µ¬3*Ú,ïn¾cF»‚îùr»HädƒÓ¡Æ¡ò 6A=²J!_3È@ÀnK.Ür2AéÈ#ØÓíôçO>IÌs*/™ä +¥—f9 ôäìimtñ&¢’jÞTó<½ŒÊ£«88zg¶i$´Î§o3,pK" eBŒ Úaòàd= ìML,ín54»–(Rà åX‘Çûg¶s µÔ.Ñiö­º'b¦W,åAlð03ž€z ³bˆµÁ’‘ºBÎH-ž3Ôvç ê*…•µ•þë&ùc$3ɹËÙÈÈŽÀœô¨- °KXD3Gq<&FùÈÓs»^â™o0GYÚÞhn®¦Hä¿xp¼`àNw`g¯qY‚ÚÞ9Ú8ÖQ0#mÃy@:ãçw½ÅPÑ­™ÑâÊ~郒x#ŒgŒûÕ´ËØgmï».å$ä`dŽ1ž1Ïõ²úwØîá½ù\¦Ó“ŒGÏçßÖ­¤—6ÿk´´²™l!bãl`ž»GùúÕHÿÑžh¢±’Þ ¢0þ`Ú»'`8s“ïøÞ°¸Š–må·ŠUϼm‹qþè8sŸ¯ã=œvÍjËË(”³È±–RÇ“·œ©ãˆÇ'5Sû:ÝQí.­¦¸F›ÌwHÉIòJàåOõäsTÚâÞ̼r™'òåÜå",®Ì2JàåxìF9'9«Z<·âRð8Ÿ-.Ðs“#“Çâ&®ÖåÚ.ž³N¾kì79òÁäôü‡&¤¶Kµ¼¶†A2Î¥‰M£““#“Çä95JÊÊhuÙ$3Ç< íç¾ žqÉyíÇ4ØÞS¨A%¤±­š³}£qoœœÀ#œÁíÇ&´ffO: ‰šR[©À\ ` à€QÇ%º|71oÑÛ=·f¤Òßʺy$ÓÊÅ.ßß3’8ʨ}1Æ{b«Éia=Ûê6ðî¸m¸™‰ÚÇ”ô ê1PlÜ^ôJÛiG`J÷P¦Ç§]­âjk;UT2‡qÉ‚üs¹ ô¦ oìÖžñlÄ+4Á¥3Hß?Êr=sÓý£“Ç&¡öIÚìD©+K¹ÎÖ2?ÏÁÏ©ÏN¹''ŽkIdg™šo$’â6ù°¾£ðç­8Eå\[Ký”‰%»Ob¹Á˼õí“q íRò Ybg€<¥ÛbŒð3ÈÁƒ&žìmµ„›Éí™îGÚ£0ÆpW§§$ŽôûsºæHn_ÊûœHv"m1€ 瑃ì2}êÍÔ)hÁçdŽ(6´"1òÏ9¿ý=xÐA1Æ!tŽ Œ Â`g' t>¿OZ[¨`‡Ë}?ËY’G÷ÉÈäwúzñU%ûlÖ·&É£–ºKp¤@¸ 댜ŠÈKd–+™´ÿ±][º²¼Yœàä•wž§8 ˜æ uwLer"œáH$€7t`Aç©Î0MËkLÓGe5¼î<´’8Êc,£;³Ër}®峉®®ÔA$R°³ÅŒ®æ^wgæn‡>Ç×u¼‡,‹k5’‘²9¢ˆ¡ù™yÝž[89ö>¸#k‹LRo"f3,{~ñÁHóÏ©Æjd’ÜjPBͲò5b¡P !ÛæpéŸSŒý^%¶¾¸Î<» ¤®Õ+Ã7Ì6àëêqš±ÚšùÞyêÌrJ¿—)ì•zžÝLRý‚ÈŠÆ÷0pȬRSÛ p½HéÈ=1O‹Bµ]-1ç%Ìx`èæ9qÓÂðOn‡¦*ONF¿ŽÖÆÙœ[9!¸Q»=Ç®xýhÅá­?to “²Û»mŽB“æP?Ý=s‘ú¿DžÎÖHô剜FÎrÿ.ü²€ßî€\ä~©>›ör~Òí-Åèèêv³¿ºŽõëÚµû<–ñÜ9k‰†S†‘±–àŽõÎ{}ffÓæÅV–æSƒ­#ž[sžß[~¡7 gå ù¾Z(î9?@9'èqIoçZâ6æG’F2K*‘óX}ç$ý)ÖïÝ@.´£ÂHHhÂär2Oà9'èqV¤²·¶Ñç·†oÓy1ärpÜË׎ütüjbÔ´3kt%¹‡Ì`®ùË…o”’¾Ã¯ùÓw[Üg²[¨ãfÃN@8²õàuàð~µ›i¥ßË4QOî­ã°°À< €Ø=Èóß=‰±hd†8,£µXÌQ+*3}ìÎB@'žùìNU屚·±µ1 dW*ïMÀ‡ž{ç±;SÜYZ½»"¼pM„gçÀÆ8ÏP½ÇÝü*µÌvZuóknï‰ÊÆÌ€°ÁÞ¡{»øR%­ÅÈÔc–E‰v+RÀð1Ž3ÔË׊¥öd¶º6Gr´Q ÒÌ'jíÁ÷ézY„híö3ˆyÓn‹·p}F:`v5|Iû»}.÷váÎÁ ÑvàŒ{ŒtÀìjŒ×0™ñ5¼’%’% ²6~ë ¹ àgûÙú“0ÛÜÁq"p ê;ÿ{àŒöª7¶QEöxâ™á‚ À¶Ö ½øÈï½ßžqZ×2ÇCGå]áŽí䌃€AéÔã9Ôn³[¸áCåÞ€ˆPåÁà=:œr ± µ´’ÞX¤ß°DÜ[q#h8èAé׎@äXëå >Óe4"$UeËÔ¤“ÈýO¾_§­±¶DÓ¡‡ËÚªÉòŽA 2yþgß74ÙÖUr@1 ß/b3Ô~§ß+ · ©(h6G${FÔPc83ÏLq‘Ó¼ÐBÐ<Ú¾8öˆ„J 7 @Ç~˜î:wK6u‘¯"M…#ØÁcQ°ðAàc¿Lq‘Ó»ÚÊÞI.^:Ö$‰‡ ¤•'%F1Ðp;€9昲ù 4ºˆ’ݾxØ.¨'q^1ÐpP:óK dÌã챟11ÃŽA;ŠŒ`ð8¨yª“_ÅsråâºÝ²ÛŸ”a—#ŒŽq׎j+¿â½0ÝÓ¹ŽL;±*¸dF3×x æªËª}´CrïqöT ›h_ çå2‚8Ï\uãšžÕ.-£If Í  ©•=@ìÙ¿×"–k K›™¼ÛB$ åŒO5>Vê÷²®Eh®±o%Ô§ìÏç òøÜ…“å=@þöAþ¹nÀiÖЋ’$Kx‘Hó#ÌŠçýÑŒŒ§#Ót=:ÚÒÒ¶,J환¯3ÊŒdd{Ž˜ç1µÎ=”S]ïŠ6jÈ™‘[ gîñ‘ǸéŽk6;Hï®ÏÙ÷rϵ’AÀŽ\äœt¨ãÓ­onå›ìNî£jÉ9FÆàÙïnÉ8éTìt»)¥ž4‘Ø  û70p~ös½*þ™äi‘Ý–ŠX£‚5Û)N$%y>½yõ©´è¤×Ikg-¼0*mldMòò >½rzæ§mBÂÞ_-m¥Œª( Sýf‘‚ÆO¯\ž¹¬û{[íë ?‘$¬Dà¨!Tò2¼òNùÍlZKæm½¾Yô…pÈÉÉ'¿L΄62]_Ï-ª&,…RÃ/<“ŸlÎ6ž>ãe›<ácQ,°ª²»wnA8óÎxéŽq/­Íž£oªCg%Û¬J¬Ð2²ÈOŽAlÐ󜎘æäÆ]2à-´/;ÍaÞ¬¬{žAlc¿9ÈéŽoZ_E1Î äwÞê@˜Pžëާ ‹ig’0`‰œI"m)Ø0§¦§ fû)˜Ÿõya#F(S´|§º`€}9pxÞæÎâêæDOD0ñïd(ù@ãÜñÔг–òÛZÔY [„–xø0xÁà>B•@Ç„ñÉ5-ÙkÜ4 2Ç2"¯?Ç£´Ã#Ô½mb³ÜÛB·’#$·åS0vòzŒv¹£LÑ´å¶[eúkigEÊ+ ƒxäc°ìsR"Cqu éðƒ"ºÈø;Cd’§#ߎñÍP?q×_#DKFP s€Øî§#Ÿ\õ“úÆUÒße³™Ìç¶÷S‘Ïc´Uq0Ä“µ±ò·í) à6;©Èçת³Ítg·œ¬n*¨ƒS’3€ ?_Ï&þ¥$—ÂH$µ¹ŽÖîÝž8‘º2²’ÅIÆ üOn¹kfô VWKƒÐ1¢`Á”–#8Á'ê{uËInñÜÃgiqòÁ34Ž9 õzç ïÏ?[ºm·Øô{EºÛ—iÒXðd\Ê®F@ã©ç‘Ö¥Žä‚ y'Y³–”Hœ²÷zç Ç<óõmº@ÑÚG,72Ê%Ü‘ª”ܘ^rp Ÿ^?ž…kg @ÍáÔÄÛÑcB»£àu8HÏ[dÚp{lãОÃ4ûX¶® ¿›¦ÉÌ:–—n=Tò@éèOP0jÝZ@›VØInbÉPÈ|§‘nž„ö+<¶BPB3e ü‘ß>Ãüw(¸ÐµMYg¸·š=À´Á™B¹ÆA©cÇ׿;ªmd˜ üÈà ìÎTÔ·°õúæ%·–TŠâwƒÎY 2H½€œ{c¯oQš–qy7A¯äµZÈPÛΜ:mîTöÇ^ÞÀؤ·Çmº9Dn³/¡zœG§^ÞÀ¤[o"ûBB‘rü2ç ç¯%@ü†sšwr+Ë ÐClKJ°¤‹ É$œ•caœÒ«YËw Ë$ÜíuÎIäŽÞÃ9¨!KyÍÄò𠰱ȀÆqù}hb6,Y˜»€yì:ãòª0[$ÐÌ&™ÕhùFürà:ãòúʆÓÊšQî%‘‡“8$s–$u'§¯_Îx¥·6·"æšêV_*]Ç sóê>µ4[Æ“ÃtI†Ég9$ޤôãž¿œ³ÌŽ<·`Ó+SàT;òÓ–¶ë4‘†Åæ<Ÿ`\AÀã‚k¦ÍfU¹x¸Àwäp8ÅGö–1${˜D€’ ã¨Á¾?ñãêISq%¼vÆá–ý1‘‚8ñøõ$Ïý¬­¡ G‘Œ„8ÙÆàwÆ?àGÔ’Z8ûJª # žOùÿ<Õ%Æá·H<Õ[xp%‘DÑŒ ¬psÿëÿ&¥h I£H%ól¼À1»‚:ðØõÍ_±‚ å$Äh²fYòqŒd.ëò¶:ç>ÔØG2€˜ÂÉ–›'ÆvàŽ¿+c®s^…á[x£ÒVP HJº¸}ÜuÈãœtçÓ·“áëh-4Ô[D ÈJ¸>þ:ä sŽœã§n=ÂvPZiJ#*Ùêáƒq×#ŽqÓœtí[…^9kIN0O'¿zÕ$$Œ¯çMÜ<·Æî§¥6ES»=©é@eÁ(qž´DvœGùÿ5-¹@ÇoóÍ*¤¹Á9çüþu&FÑ‚0}±O•cdòŸBÅ%—‚ Ç@@÷è=©©¶eÞ uäÆBd3ú :ôÔû{5xåq4k,J[k¸œýÜŒþ?ýyá°‰Ãù—qÇ2+7”U‹nÃÈÆsÇ_þ¼Ïbå7»Ç¤U$î$mÁÎxëÿ×¹oö(ÐÉ4ÑÉ`±DÈ2Y”Îp~PO#$Àf7tÒÅ( (ÜY”ÏÁA<Œ’?™!·† ‘-Ô±ËÈTG+Õ—!Ÿ¨ÚQœË1Ad]Ò(TOuæ– %HeO¯Ðw½i¢Á%ÏØï¶IxeiÀ2€ !Àýqè8ÜëktŠa#È¿hY â%%N1”8~¸ôeÈ6ŒOÓ3(6ŽxpO$ú׃ÍhÝ– u¹µšh†~ÇKµNN$Œ“è9>§ƒËg¸I–6’ÖO1¹Så ž§Øsîzó[´‚5s1ŒxãüŠÜ± yôéùôÊêzli ¬†âT³˜†’cVåÎÃÏ_Läw¶“Í&B€ò'ÊNv0Tà‚9$wÍYŠØÁ,1\¡Ýæ–a2¯ÊÜíã•8ÁäwÍ:ÙîÅ©qcle¹s+Iµpvã ÇNOwÐ[µ‡K&?1mæmAš@þ@ ÅqÐ`íÇ$äðw}îí—aRÞß7­æ,‚5ÇÊp0qÆs“Á-߀ÛK+Fin%?e¹ùP'œB¤c9ÉÏNI'žµ¤Ãe-ÛH±OÆxüШU‚•R1œäç§$“ÎsBé¯l^öVÜÅ0†<ÕQ‚ F3žsÓ“Ï|Ó4t²¯“4 )\8ewØHcÎ09=xã¶jÕ¥¼’"ÞªÉvŸ9ØX(*ç b9=xã¶j˜§ºÔ"ómŸï¬v¬yÁñ“׎= *iåõÔ–X×jºþéX¡Ý‡VQÏ^€ü¦°¾ŽXµ ÔF08ò-Õ¼²®î2Y”sÁçžS%ÅŒï~&¸E˜†]±†ØC» îeã<ð;œú“èö¶mÉèä*êè ƒÎrJ烜Œj–x–âxSPX¤»dÝŸ“œw%sòœä`ûT÷VÆØAk1·„,›Jº+œóœ’¹àõÏ¥WþË…´ôt„3)—iÆß¼T gªöíڭͧ@8‚ĨdDUû¤}â¡qžY{~UimÒÑá|r(•bÛ»~ñ\c?y{víTd- ÍëÚÇ/µD K³“qÐǯNñ¼6ÖÓ¤—1D3VEÉ.Ì[9ÆàÆzôïÔö’Ýý¢+H™I*«*äïf' ã Çäôîç†ÙõÖâ)axS®Îdl‡©ç õ$Õ—½‚Úu@’(Œm\¯.xèzžrRMFºT"yYD±ˆ€ÚvòÌ1Ðõ<䤞•¡§!kKhþÈñ¬¬r­ûÈn„œt>õ^ Úî(ͼ-³n%¢ÇÈÿ6ì`‚Á°rqÐûÓRæ9msn»Œ»FpQ°w` ƒ“Ž‡Þ–>e‘ä¹EgVުà œ0qŽ:gÔÕØ9.JŠ$ݽ‡+Õr08ã¦}M:îîñ¯müÀe@Ûðà ;’08ã¦qÔÓ4k¯âžI¦YãŒñüJ¤c¤uùWó=ú¤ ¸äB†r[puR¸ãuùGÓ'¿Yn.§–ao„!ÏÌP¨`Ž¿*ý2{õ-txáÔÚdo2‚žO˜09ÈÀÇ8ÁÉïמ(ù,÷Q7Ú7[Ä•vùâe9È sœ`î=úóÃ’Ö9-좚PápX3|ÊÀç#ã'¿^xµ.YšÚ¦ÿT3g‚Îè@_æPZŠH$“ß$g$ñÜ…VW "¾`ÇïBxV rIêIÉ?ZRX‹ içIÄ ™1óGÑI,z‘œ“Û›–Ö|®Rd,¨èIdèWHëþ-ú9ÿ–±VUh‚+¡\u#¯øUËÑÛÀ’E"2‰QB’WÓHÎsüªËZ ¸Ž(™Ä`Ï,0 qžOQ×989Í2' ñÇ™/$ Só¹ÉÁÉ5=Í«_ý™me$+‚ñn!‚€Íר뜜æ²î´/´ÞIhdÖÑ0$¤„ž@à;áOS‚=iøfºdy"§®I9À ;€§##Öª¥­Í²4Šÿ:#üÀŒGpã$=jÝ´2YDÖ³îáB€¸²ÞÀúcÓ%±»´‹dé…§TÙï`}1錘î-!³ Öîœ&ÂN@í>÷Lzc&¾™med'2Ç1C‘Ôœu<Ôc&£9]/ËiüÕXÈw'†ã©8ÎOê1“H!…¬#‹Í-,q°Þ[†ã©8êx8ÏQŒšzé³Ï*´è¶ŠCb8ÊçŸê1Æzã¶)¼—˜IfLFs˜£+¿Ÿê1Æzã¶)úWŸ-ÜÑM~¥’#ˆ 8>½9ã=qÛØ”k "¶vÛsrç H ’{×±«,e]ŠCº&ÒҸ‚r8ì?^Æ”A¨CyPÂæ(0^áþè ç={Ný#ÄVå¤òÛv숅 ‚Ä8ÈvÁô&€Rf94òlBÈA8 qíƒèM^³Ó®|ÒÏ)&f íMÉŒ‚p@ùr £ã“V-á}{O’êDX³òp„ƒÓåÎ?*P–òEö™-Ðc(Ä)Oo”áXñ论„Ùˆ qò¶ÕΑJFdgPTÉdñœäðOõª¢âHcTtKw.±ùîë\ddñœäðOõ§Üo[†VD¸‘¥Ë2‚ëŽ2xÎw êzÔö^D.må’&Y. ž„‘€:ž¾ùëŒSá¶…d·žSæ¸p$ûœa‰©ëŽùëŒU‹}>%–t„ÊFU̲`%@©ëŽù늳ÇycHº»X·$wÁõxíV!iöUŠ%)û°®[Î}ºñÚ£KT–('Ó#LH§8bØ8ïϨëÇjÌÒm ò gTHäf]ý}Êp03òúþ#6(m­´êÂ9Â?@zî\ŽùQym¿³tþeG)#2†À ßr‚8gåü=D°é‘ÅCa¤#ÌI[”÷Ç ðyÈÆ1ÒìHòYáPÑÎÀ+ õÀǸôéTh‘½´×Ê&•Ô8b°>ÜqÐð»éÑtû˜îÔÊöïktÀ_»É8êNy°àIgrÀ–žŽÝùT rHIÏ öiº}€Ô1xQí]  `’qÔ܃ÆšŠ]2Ý&[Õb—a["ð:þ#Ž}+^±KÛk …eDÃÒ8àž¸qÓ£üš|`Ä¡Lwh˜–`>QÐà÷ÆG:0úE=œéf­Ð*I5¼O>ñ+H@+œ23œíÉîIöÄSGcªÃ& D…X*•mÞf@<ä 9ç®*A½ºîÊH%T†,dÜÉç8üyëŠÑ±Ôîüĵ¶t|«m,Þfá‚O|~yç®*ØÇmá–ÐÎ̱~ñ^E(#“‘œóëÓ¿5¨³ÝLFfòâ¹w\mrIÎzôúѵ”.°ºÎfŠ2|¶eŽOÏ9ëŒ}j÷‡–Ht¹쌒;™Õd#Ç-ž¸#ƒÇN*­¸mÙÉáyÜaÛ€q÷³×¡ã§í2ÏRµµò`…¼©ØÍûÂ>RÞÏ\Áã¦E ñÁs"ÅmæM"28v!p[qdtÇxšmmþÓµå,¨èáÉ vâtÇxš†Þöò+‹„(²£>v€[$ ÐgmàuªÓ ½‚_9YBåù€¹g%IÆO'#ý®ý:Pð5Å™Š9\#±äRä¶TŸ¼y9}ìsÓ¥J,uôÇšâäŸ4¢D.KeOBy9׿N”û tRܤfÝUA §hVQœLuõãÒxnc3 òÄ1"b$HPFp=ëÜñèíNçí‘@ÖÀDa €Ê3èG_^=4å{Û³y›÷oŒw'æ<Ž:þ]ŽO¤¶ïq$òÃvUOsó‘Ç_~;ž¢ÀÆ;‹g”‰Ô01ç'-Éäq×ߎÇ'‹1Ú5Åœ±ØÁNkL± ’×qÀÏ×±õª‚WviÖ‘Ã3K¶I`¤‡¹cŽ~£¡õ©$Òîl Å¼hò»íy`¤„xã§Ó>µ%•ŽV9å–Ydr€‡å`r»H8äcÏ4“Go óN&‘þé(ß+•ÚAÀÀÈÆâsS>œ o›Ìv' °åpr»H8äcŒýj;P‰,—¾h›qóF<Œ…ôì<ñŸºë3q˼É4üùŠÑŒ íÁ'h§` çŒýÙ£Üo~ШäÀž¬œ 㯀'Ó?v­ÌpêÂx”K徿o7k’1»€¸ÜQÁÁàÐn¤yU!dš)w·ïrx üÝŽ£ƒƒÁªúM¹ÕuO¶+Rî æ|å¸ÝÀ\gGƒVô‹H…´’G# •”$‡çaòó€GÜòŠ‘®eŠLpÓ:ü¿}—åçpÀ{äË,_˜¡Þ¦V]¯÷Ù>^qÇÜÇâkK¦2ÝF“2]392Ÿ#ŒðFr[ŒŠžÝÚ)#EHöHÆE !XŒgƒÎKq‘W“M’ÖS=¹‰ŒÎåNÒF3Áç;¸â6—hÎ!¸/ \å…®y#;†'#œTšæÞ HÛO$»®T„ §n'ïc!‡ œŒ zqKW¶ó/#‚v‘¦‘NÆ@B'’>ð䑯=8½%Œ~U¾Ð²Ù#EÒ~7ŽÀñ€sƒCÚÿ£¤üá]÷€;JCñ¸ŒvçŽH4¶1}œ5´ˆ“>äL:«3ü#ÁÏh‚ÅçíJ¾r©– ÕN0BÜs×¢†Ó ž É]Zå å‚ã*{…¸÷ãh¨#³¿k²bÙ±7’ ÊqÈPߢ¨[iŽ"!X˜ùd W=Tã°ÝŒQì%]’ou…\Ä~C´ wSŽ£æÆ¨öRÒ[8n&/˜‡)¶0ÝH²ØÀõÂHôRòÛÍë•ò„H, AÉ9ôíŽi–÷7&ÙG”8UUÚ0\`òIϧlsUd·“Q¦m¬Ë€¡B¨ ppAÉ?NØæ­K¥Ç=ݦï.;¨\ áÉHÇÇ'¯•›x·‘xÒáFæòÇqÜcŒã“ß•›ós$+h¶‘´öûYÌd ÿQŽ3ŽO·ä¶º°Igm1?º® ‘´®pNJžÝ=ªºÙ]†+›‘tñœD#WHÚT’§·Oj †á!Kfùæmä·–H(FÒ¹Á9*{tëÅU›I {pfBñŸ¸Š¥4Â|ŠAÀàäã·­T QöÞ«L›—Å?säRƒ“ŽÞµ•„m*Cr^GR~@Pt_‘H8œvõªºdMz|ÙPÎÒòdÏʪî¹Ï#¦¸Ï6Z{hgŠæy^iynsµTЮAÁÆ{óÌñéÁ®ek›˜‹I UŽC÷UF:ÎpGL ÷çX´Ù.¯e¸Ô"GS``ÐŒŸ\÷ç×jò½¶ap‰(Ýû°ÃÈ#'±Ï~qšmë_ ™f$D¸cØŒžÇ=ùÀõÅCq¥Å=Ùd1i“—PŠIåÁ#ŽG®1Žyõªw²xxÄ ¤‰&ö— W w gÇLúÕ«k cÓVÞt‚(Ê|ûJ8?wsÓ?¯fY-ôÔ‹È…`Týâ++…Éé€9Î:Ÿ×´ö+i)jí–ñ~ò4*Ázq…ÝOëÙ4èe¹7‰gbÎÅÊùl¸!ISê~¾½Äí4w+‡bVH AÇO××½chÖ|Ê€“†iÊ•eÁ•=ºŸåžà†Ñ-¯ÕD<¹ÈŠ6ï=É\dWž0G¹Å coÜè³s)\ºD³žä®3’G¦ëÉzÂKs©HL·AÙì/ë¹qI˜#Ôšˆ²i÷ nÊ&†rò>2Œá›±È#8’Tòm_ì·»}Ò¸T §$3sƒÁ &²´‰]Ÿ÷²0y … ¼á›±’ªì–QR ˆÂÆ ¤2 öÀõ'èNF.›¦_*Tge þéHÊœƒÛIüNF+iö÷Y7cİ&5 ŸLzcÜŸÄä`‡D´·´>rÉ<'æS;¨aÔg‚z!XaÓ¢žC,¾VYZfPÜägŒýê;‚h~Ót²•‹˜e”ÄŒà`zuô¬©mámNï‹Ep¹È’rx ·¶@ÇSߦjÔ–Þ@÷OËpX‘Ç€»{d uõéš³ ´‹)¿f5' U‰Ç€¤gŒŽÿ­M6–Wëg(&eó,8Ldí?/sÇ„°MbΩƲlÊýÁÊöû ôÇN*ÂÛÛÛËÏvy´<@6GÔv?/zqøSh`I HašT”°g‘Wr¶rWvœ8ã’:œAö1snÛÒi$rAyBîÜ;v•Úq·ƒR:šÊšÑ®uW>Lò.~ieU ºà®Þ0z u=êì:,<¹¯d¹\>YŽƒg\e¹#©©m3p­Ó—çemÛ×nHÇAêin wº/û4Rüÿ+cfzs‚~•F&>J«Î¬Ñ³4s å†+òò¸É `ž¼ŽÜÁpÞå§¹‘Y3Ã:€¾Pm£iùq’@ÚO^Gc›"Öb×.ês$s¨ °6Ñ»€s÷IëÈíÍ™ôyçÔ!¼Ô;‚ë+$LÊÊ™\;·¿aÔãN[ïu[é-Óí¤I!gG ¹eÛÐöN1PX«M&BïP\LË :È«¹p@î}û¼b©]ÙiêmÒxyî›÷‘òÁ0Îá’9vþqÝxug ÞÂÎÒÝçÌ‹ï œŒ‘ÏN1×ëGɶŒyª@7$†Eù¶ÔdŽqÆ™¥Ç Ó›¦ò®.7°Û€ œätãùäêÇn¯¨-ľD—Pîq‚å9ÈèHäw÷Évê71\»E#‚Øã´ç p}?žjK{Y4«öG¸F•¾ek1¸^=p =N1Á沨iWÐIgr—3ÈŤyþ]çÀï€IÆN1Æ3IkÖ—Öä$»‰Ýqǘr\OSŒpyªvÛM©NnžsE (c'Ì1Áߎ}ûͪéVÔŒ“ÏòÆDˆ >`í#•óÇ#ꇒþ)%šy¢t6¨%€a”ƒ^9÷îÛ ¯g¹‘®cݼ²[í2,™ y$·àpzÈp7W÷ÐÝBÑÈ·TiVmØ$u9n‰¥5g¸ºº‘ÔÅpÉX.²î óÏ-øv¨-!Xîd“M½‚Pe’XHW88ïÀÃr3לó^‹á‰Ñmb_%YWºÁÇ~‘ž¼çšôá4ˆ£ýÐeP;ñÃr3לó[+“Ú¶BžEm à‚w~¥TðGáLu½ª20:c=©›ÝŽ´øÔúãð¤xsEJƒr‚ݺfž7`EOÔ®8¥ùÍã­+g#šn1×JëÏZO\^ØïF(ÁüèíÅP8ŒdZNô¼€y£óKÜQŒâ“¶1Iߥ'~x¥âȦ‘øÓ¸Æ(8b€FO˜(£ž@£ƒøR“Fxæçô£Ý)AÏ8éFÒqúÒ÷§<ô{ _jLç­/ÒšxéAàQŒuëJ<Ò):qŠÅ)ëŒgÞŽi3KÈäPF0=hÀéŠQŒt£?.*8“#§åAÎcó£o=h‚;Ð~¾ô‡ƒ_ÿÙÿØÿÀÿÚ ?óúóúóú(¢Š(¢Š(¢žBW$ô>”QL¢Š)@Í(«[™ÝQæ ’=1IIQ)çrîŒQE2Š(¢Š^zS†0r9íÍ•»m~´‡©N;S¤DR>ï^1VÎxí’å“÷NHVõ"—kÜG3JÆré•éíP»—lœgàbœú~×ee(u>´ßqGÒž»–0èùÇQéO‹×-Žz‘šQ޹çéRÁ»[;IpVP~TÛkF{KX`tR·rÛXƒäuè@#¸ÿëw×·[eÒåûJÙb¬Ñ¼.HÆîŒŽãó=:¬Q¬u– •ebxÏBÿýU.Ÿ¡¥ýÔVÐê6í+òB†àc=ÀÏÒ–ÇA7÷Ëiý»³r›Ïp?*žËFšþá!¶žfÇBzcÜʶ`ð47‹YðHùa'¡úÖÜ3>©PHb'¡úÖñð4Œ|¨µ8ä Hùb?ãWá”J…µ‘p@0:c?ç¯Z¶þ¹yT¶¤’]«ºŒcÆÏ^µb\yÊf”:*í£1Ÿó×­F>:)UÔA ¬|žƒ ÿ{Ú™ÃùãGEÔ€Y@WýÏlƒýïj³/⊠C&öqµŽÎÙûÞÔôøyå‚Ë©†~Ùƒ§þ=@øqÎF¨ÖþÊ¢…!—÷‡Ý:ûê›ÿ ñWa]CyæÌ|×úÓäøwŽ! L€å£àýxüéà 2£ÏÍ»§à3ýhON³+ÜÀîòpF>ôü©GÃÌ/ü„FíÀ†ò0F>þqVO„Pºß.;öàœ}éù}iÃÙw4ÚDFpIò¸'é»Þ™ÿ ñÀ1PìlýÏ8Ýîi‡Á‘ˆˆTl¶1À#þïIÿ îQ&S‘ÞWÿe@ø}2I•Õ8 Â,u?ÅîjeðÄžY‰£ùX`°=¿½]O KjPC,rìrÛž;†“מ¾£5j×ÀËmx³}©%Dl„xd`Œzó×ÔgË =¼åþÎ’ û¾t ‘‚<õÁëê3Šªþ ¹–ØE5Ú óK€±d&zãæã8—zbø*F²ž»TW—zááztu øa¥·[i` È\ar¸ù¸ÎòïOo\Z‚"qqæaX6^sלæŸgà¨-Ô¡öÂ0¡TÆß~sœûúP¾ò 2Úùο(+„}ùÎ}óéL> ½·ºC Á’0›FPd÷€9ã<óâ4Ÿð†=µÎm®KD"E,ýàF3Ï8þ#R¦€ÑA´i–%Ø ¤å€9Ï=¿ˆÔ‰á›ë;oj#s&LŽð©lãrêHêy«vžšÂÊ8,d[“$²[£18ÆÈ u#©æ›‡ÄYUÓÃîÉ-"© ‘Œ‘ÔŽ§š}®…©[)g²;Š–?eBÜõÝß×Ú¤ÓN³\%‘ÉVuk¸àäó¿¿­NtEùGö=®>RãÊRNq’ýéÃ÷ê™’6 ¡#UÝ20gµjCbÖÂ5·hãŠ6á% ŽÈÏS£Òd†é'‚ÁcØÀ…P£#Œ€r3Bt Mce$È ûÔCòŽ€óÉëÉç“UæÑmæWó¢Gšªß(9¯'ïryù»Ðš\û¥3X-Àp«‰B·Ê:¼ž¼žyïOÃ7w±ÌÓ$O2ÆIÀùsžŸ‡­I&ž·7pΡ"xH,ÞX,xPÀð=xçŸZxÓ’kĸþÌD•9qÁÎÊ<^=jô¶Zžìb*:˜b †ÁÉåÏ\ãðϽ6ÞÎxå-pbpôÙìn·=„|:ùHk`äýþùÇáŸzϸÒoäŸírÀÀ©ù@&@ÿ}qéžôémå‘ZG;$Ax!Ú;}ãþÖ=3Þ£’ÂàÎ.>Ãå˜ð?r wÜO÷±éžø­7A¸3$‚زQ—~Ig’{qR}™A…Ö4*AVMÄ’Ï$öàÔèyßhKP›”Œ?ÌrqÏ$öàúÕKS 5µº•‚C’á¹Îàxù½Öš,Ú9ŒqǶÝ-ƒÉ9#æã¡Ï­\‹M¹…RÇ Ü³‡ç9Œ·}iÖÚN¡j g1…\úœnïÖ•-L>AKxËEžP=N7wëO†Æxîa¸þËÎŒ}äÂŒž§±ÏZ¢×7‡F…ÎUFHì>÷©'Óžƒº[ÛÜÇpfùy%À\’; ïõ$úsÐu$öwÓ\yßbU$’Ø<‘Øg©'Óžƒ©†7X‚âI¢P¸ qójtóE!;SfT.9Æ8ùÎÃQG¥M ©‡NT\ Àe±Žó…ÇðÕk­232Æ%`v’qž7uÎOn¦›%¤ŽÅ‘7db€ícŒñ»“œžÝOz.4‡¸!ŽšŠë–V<áŽ2q»®r{Oz-õµSB‘« »‘˜Ï_O\Ó¢‰ÕÛ6ê²2…iUdÆ}=I©¢[áº9¬®Ð ª¨#¹éêMM4³F–îˆÊ¬ ÃcûÙï럭ÂÓ¢ By¨ßx' qïg¿¯ãIöYX˜Ø"Igrôc‚:nÏ_ÄÔÒE¬1[ÈuÆ8à3NôÖ´¸e·ð(a¿rpFGyœzd欩ÔP¡û' „àŽ:üΚɬ²…°íU*Ƹ÷È 8ùÏ^½OZ¦¡öeƒìƒä ÿçëL†×[¶ ‰"¸Ø¨¸SÏO›ßÓµZnV@B¢Ã´( ùO<ƒ»ß¦;U{:k‰cgÓP"(iç‘ócðÇj”G­•¢F ÏêÞœR”—Ë Æ®G#9êÞœœT¢ÞñJ‘§¡ÛÀÜsÇâÞœTVv:­ +o Åæ6_ŒŒã“þ¿ZdKq…DB,ü¹=N7úúæ§ŽMABØ"å²ÃŒdõ8ßëõ¨ÛG¾šÓìOo@rü£݈ù¸ïOx  Œ$j€å3;b>n;ÓV9ÆÜi‘Œ®@!bî;Ô©º&,ÑFÀ|Á¶(¾›¿Î)†i|³/Ì$ÚÝëßçJ]ÈÙ—L›ïnÀw®7œ}*R5Ö<ÅÀJ ãÝ*D‰Ã’(ب•@1ÿtö©L·Ì¡[NL(ÀÚÇþ=ÓÚ¡š²^ ¤´‹Î ´ÊQw‘éÔÓûRÏöHÌ¡Jù¥Wv=3š„ÇsæTYeÚ\…Ü}‰Ýš™Ž¸ ¹¶‡xv®7zÿ:ŒÄÃl“[ÄeQ÷ö g®@Ýëüé£íVñ—d[Èù›óì7zŸÖ˜,/î5 $1F¢C–yrŸ”wsÓùuÇ0¼w&`©¬‡ Éåè »¹éüºã–Å%éöièCŸw€Ww=?—\sb[Mc÷ʳ[ˆøÂÅÝùÆz¹÷üêK{[ÈC+Om°ÿ Vûs’3ÕÏ¿çRDulýŽÖ8öî$ÿ½õüꑲÖvùXP09ÏççÏN:Ôßf& -ü¼FFNsÆ9ù³íÖ’â;»˜L3éÁ£é‚ÙÏ×æÏµHñkžT‘ùhÑÉÆÝŠ1ž¼îúöôªïotI x߀›ûÜîúöôãŽRánš&ŒéÊQøÛ€1ž¿ÅõíéǺ4ÖÃÃ¾Ý ¦7.N„›Óüšž$—ɉ|˜Ð®Aã¸7§ù4¨—K qÿeÆ1‘‘Ó¸7§ù5 Á«‘ãˆ)ÈÈØ¸à`ã ÔÒaÕbŒ§¦ÁƒÆ 5âð6éø\Œ®8Ãu¦Í¢òGtöq<«ÕŒ@d÷8ÝŒõçüšðÇ4vë$¾TÒƒ’Æ3Ï'ºã<ý?‹Ûížbéè[ œÆ99äãw^¼ûÔèÚ£J‘ÜÙ¬±c*¸ƒ]Õ<…¥™R{q"ã* ŒƒƒßwùæŸöëçVM9\‘2ë»üóOÛŠó…v9ÈY6:ñ÷½ý¿­5mæÍÆå²„‘wc¯ßê}¿­E,W2yÉýœ•·bL7¾>÷¯ÓúÓm`Õ­dgXs‘÷W ÷±O†Õ-д1añü qìb7»·dZvÐR?P”.¸Ï½áŒÀ‘UGÌ1ƒƒ»Ž¼uǽF±^<`¶Èä| B ù— Üuã®=è†MA#_ø—ÆŒq¿hQ‘ß7xëzV]q¢ØÑ)]ÙÀQÓŽ>÷·Ò¬YÊ‹×û½½>÷·Ò–g½–2` –Î2:qÇÞöúT1[kVåž("Üàn ƒ÷³úÔÙlœüÞÃòôâ ’ÞyÉytµ.IËd|Ù9ù½¿O¦¸‹[’rñĨvy÷×¹«£ÊŽ¢0 ®Òp:ß^æ¥ :3²iaY×i9ÏÜÓ`µÕc˜H𼄩F%òH=y-Q¥šDçlnC.Ö%òX}KRm¼+´Ø³ev’dÉ žy-K-¶¯$ ’ˆ¡É!QpGðŒnìN¥2kC1PÊ¡Uò Á|£»ŸéISBÝ0+oÎWn0: ìI5Il5T|5ª°Ç ¨9ç#Ý¿ÃÒ˜´)1¨\a•ÿwÝ¿ÃÒ£2]-ËÈúb38îôéü]¿ÃÒ­¬Z³þéì÷@ 6Þ¸ÁÇ>çéN–µ2¤ö›’5À,®1ëî~”­ö‰Ñ"m0•p7ëŒsî~”ŠšïÝdb@ê6õüN1×òSÉ™’0Û·*Ç ×èN1×ò]lnâO,Ø1ãæ9^Oâq޼’‡Mº’ãí2éèe''週ÇOÖ„²%ÖIcC‚r¡GB e¸éHÑÜÈâWÓPóÈã¡ e¸éS´z«Ï¹íT¡ÀTOÍ߸Èü{Ò˧Å%ÂLÐ(,{Ÿ›¿q‘ø÷¤–Ù¥¾Žíô‘ç(ÆàTu?7î2?õ½¦© ³‹X÷q•zŒó÷½ üélíMºüÐÆ_nØ9#<ýïB:So3Ëæ>•`ÈÀçž~÷¹üéí´ˆ£Ž4aʪc$õ9×=ýéÑ[M;Lj§¨Xöäž§!úûÓ [ëxŒqØ¢¡ì:õ9ßÔúÓDßɾ0Êþ+Š•íÖWV–Å>îqÇþ=J#ºòDRiÛt]çÍÅYTÔ³‹B än àþ~íùöÅ0[l•äŒfçœÏÝ¿>ئi„,éÌ…¹Épp?vüûb«-ž©·kA¹s’8Rî¼ÿõªI¸ù‘Ô=Hç­,ÝÄS*}@úŸ½Ôæ—ìÚŸØÞ#lKç ‚ ¨Ï~3QõX®®O •áJ§#þú÷üp=*6°Ç–Ùã\)BÈÏûßçÒ£ˆ]Á(“ìlË€¥IûëüàzTV–—¶Ì»­Ø1$…PN[$u¥]>ÕWa[ OÜå²GZ¬öï&¡çɦ|ž˜ÉÉ{5Ìz´÷A…`sÃcœŸÓÒ§ò xßh ƒÃ8=ÿ‹äþž•t}¨Êé£ä胃Üýìs“úzS×TŒ»%º+>7«È㯹üÿ7}É !Èɼž:ûŸÎ žÍç›Î}%™£Œ޾çóüîÚÜjP[‘qhò1•eBO?¥GûøÄŽÞcœ`mÚ8õäžJg‘u ¢ål¤ €U×§¯$óúT~eô—I'ØXÆFYaÏÿ?—®cH~Òí(Ò/]®çŒŸË×3H²^,2M§´²OÎS¸Çùÿ9m’^@²#X!cò£ù\’X–ÐA$%¢Sò«mà~x¤Xe{/³K¦"é†e~tˈµ7˜Ë ±F( =þ÷×ó5#ÆT7—©ãƒë÷¾¿™¤†Þâ žvŒ•Ràá½õüͦ£-‰µ¬²2ͱ€RÄþY\Æ3ïÏ?çÞ³ì-¾ÉrLZd›ˆÁýàǾyçÿÕï™­-õT›u¢±—whèIçžzÓŬ) D-†ÃŽ9ç<óïVäŽ_*DþÊP®;JŒòO<óÖ­´Ú‰ÚÂÍ÷ ç• úwýhh¾bÊ­þÐù~oNücÖ£‚ÈÄPŧ<~^H;ÔóÔwýja™ŒzkF„ä"²Œž¾€Sl--ìÑ…µ»BŒrPà õôˆ­åFF‡MhÚ2HÚÊ9À\õô™ jÐ˵#•¡èVGHÿx·¹ÿ"’;cĨ©àù¼‘õ-î?jCmxÇ›IXtmò$}w{ŸÏÚ=½Üɵì‹_{†Ü3œ}ìñ“Î{šjÙyeö‚C®Ö|û†sŽ[÷¯èqRÍב}œi…8êϯèqL[ †C’P1$.õÚ Çúæ3fÆä܉&VÎåL!T8ÁÇ~}õ̰Úeo#M–2[r®ä*‡8î3ì®b¹°º˜¤†À³Æ¼1!œœär\gÿýj.!’8Y …ð88g'vz—ã×ÿ­N’ß9Ò mQÎUœóž¥ÆxõÿëU9t÷mÝÜRBÑ Q6Ì•ã 1É÷üEV¼ÙüL&y-FÎÍØã 1ŒúÄUY†œ¯ĦKt‰6‘åž3† ‘ž8?ˆ¦Kc¦\ÃioòïB"â,“ŒáH$pøÕk[Ä0Ù^Gˆ…Š98΀I`pøš¢öúx¹·M>é…û3…‰Ç@@9#€ÄÕ6Úm¬ÐM¶ô‘ch"ã½¹«+Åj­ ›Î¸GUŽtc±Psòä9=ïZæXaºùo<æV ²&vªc ÈsÜ}~µd¼I-dRè›ÎL^P.ØÛÏ™Œó’¦Y¾låºQ1lùF³ýÞ²uç$ÿÀO¶k«Æð¿˜Ã,Ù*S,z;äŸÃó¬L@ À·Ì¥¶aw:Žàs×·0‡Œ©2‚ß2–Ü ŽàsÔôåí 2—Œ²’¨ù@=cøõíË6>61ä!nH=9õü* æˆÛIùTœœŸáI º3´­–5<)l3Óñü)Ïrê d1ÜS•댌vÏó§Î„ÜH ‡`Ç&>TóÔc·øÓ&Hešg2~ð9á*yíŽßãM+ÎQœ:dêHúõÒ£O,H7üËžJœ1RDmîn9@@yiU#ñ‡Jôï4’hP™.Q“€ƒËnþÿ™õO fÒ"’{¨å.N%P`aF=;ã¿æ{ÿ ÝoÒ£‹*6“÷:Ëøw÷üÎÚ& “[…è‚tÍäÓ zÓ]8£`d´àÀ_Æ•Píõ暥^2zc¥5=¹'ò m+Áê}:SÊü¹í¾ô¤rcA\JNùéF¦Š1Å'=éB÷£÷¥¸£‡9¤¤Ï™Æ})1Èô þ” qKœŒtÅñÅJ^qF8¤éÒ—sÞŽÜô4H÷¤ãþ´ƒ¨ÏZU;z~>ôƒsõ¡€9æ¼:¼B¼:Š(¥`àæŠ)(¢Š(¢Š(¢žÑýâ‡rŽôQHŽÑ¶å84QMêh¢Š(¢Š)ìTª€¸#©õ¢ŠeQO2;"¡cµy°¥ÉÆ3Å.IÏÊJJ(¢œ 1Á`¼“R"†l 0NNiñ¡‘¶‚äÔöéó©xZPù ÆOÖŸko%ÌéQ´Œç/=œ—— Fí“–»ï ø>(b[­A NÃ„Ï ÉäcÛèÞðŒIÍàßsŽFxSílW¥h¾µ²†6¸d¸äg…>Ø®À(ÕöÇjèÀ`v¥¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Œ1ÚŠ(¢Š(¢Š(¢Š(¢Š(¢Š(£ŒQ€;QEQEQEQEQEQEQEQE4®XÚŒ‘íHW$dð;S©iqEQEQEQF(¢“Å~`QG”´QEQEQEQEQEQEQEQEQEQF(£QEQEQEQEQEQEQEQEQEbŠ(¢Š(¢Š(¢Š(¢Š1F3AëF(¢Š(¢Š(¢Š1EQEQEQŠ(Æi a‰õ¤ õ¦†Ï­:–EQEQEQERÁ €G"‚ê b¥-´QEQEQEQE#*°ÃG¡¦º,‹µÔ2úŽH"•vº)JdöðÜÀÐÏK eȨî--î 0ÜB’FF °ÍEscmuÉáI°È®cUÑ›K_´iÐ ­T‰$¶eÜr3– “‚x9¬+"M-R}=D¶–ÇÙ7ó¹È$àž}«œÔtc’ûEª0’H6e³“– “‚x9ö®j꾇ÊÓ¢d†ÝÌ® 8è§ç ž=ûséž_WÓ­þÍå·I ¦ÜBw¦0­ûͧô=¹ôÏ+}j‘\2Ø’Þ7Þ@‹s.0Ý´ãñúã¦rn-Ö+8di@Ÿ^ÒF:ƒßù~t‡‘#0ë´…ÁùïøqùÒU$O0á¶’6õ¿Ëó¨†ö•NztÍB2G=*!,€ !3Û±¦3bÇ“ž,Ž]ÙȱÎÀü©$rò1nã `~T"³°T' €@$ôˆ¥J–]Áº |JŠgcÂí8æŸÍØegÈ qÏjXŠïù•› … qÏjôÿíÿ„j//”ÙJ40ªE‡îÀçwáOH^_-#Œïb@9ëíJ¶ÐäœØÔH»€NXàÕÝ|7œ‹k»rÃfõ^ý'ùtÏáÆ}á¼§û>â—iqÏ'€ôõü8ÏqðúO.[‹rà‚wÜð2QëøqžÔWe]Ø¥¢ŠoO&š£'’i=rhí‘ùÓ©GOzLm"ŒzQšJ>´´”ÜóMtvÆ9¢Šëš;óIÒŒã¥ö£>Ô¼âŠ1IÛƒH x¥”ñúÑø~4ŸÊ—ùÒczNý9¥œÑŠAßšPMæ—w8¦“׊<ô ¸éFN(Æg ŒRƒÎi(‚ƒô¥Ï¤àJ1Û½úÒžø¤ë€MÆ9 Œ/¥é:´‹99"¸ŽÔ¿Êœ£-šTëŒ~4 `æ›È~ xqqÁ¯ ¯ ÷¤¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠVERQEQK´ç袒Š(¢ŠR§v;ÒàÒ…,p:Ô©Ž …‰Å*€N À©"„ÈNxœ³6ÀM=¡ÇÝuo¥Hlß R¥XTá‡*Gµz?„õ}2ËÃöÖóÝÇË»z±îI5è¾Õ´Í;A··¸»Ž9W;Õ³Ô’kÑ´KO±Ñà†âî8åPw†õÉ­±¯é'þbßU®=cM–EŽ;ëwv8UW“O‹ZÓ&‘cŠúw8UW“N‹XÓfuH¯`vc€Á$Õ“) Wa8«¥À89ÏÒ®[9úR‡%ˆÚx£pÎ9£zûÒ‡‘ЊMêIäR P’äRçœb—"—p£4dRî_Z23ŠàMÊz Ö”°Q“A$v4¿‡½>”PXQžzRdZëùPÄ ¥Î=hÜ­!c·;N})2=é7zPO¡¥¥È÷ j(È¥¢ŒŠ;ÑFEŠLŒã½&åþTRÒäPh£"£6ìymZMÃ8Ã~T›—Ñ¿*~xɥȣ+ŒÒÑK‘EdRdQ)7-.E£ QI‘œzPsô¦î<ü§Š3ìhÈô?•:–—"‘Ž@Í(È÷¥9Q‘HN(¤È£'?tÒgëK‘ïKKFEQ‘E™™Æy¤ÈÎ;ѹsŽô´´€ƒÒ“ ÐM.iiw (Í&áþERäQ‘E€fŠ@ÀŠMÃ8Í&áÓ4oQÞ––”ŒÒdQFáFi `GÊŒŠ\Š]‚@£Š7 2(£p£#Ö“"“rúÑ‘K‘K¸RÑFáI‘E…´dQ¸zÒæŠ2)2=hÈ£põ£pÏZMÃ8Ï4›×8ͼRäQ‘Ž´™g4n_Z7Z2=i7/­´dzÒî´n¢ŒÔŠBê:‘FE.E.áFG­n´dQ‘FáëFEdQ‘I‘FE´SMgEêi©8þF˜'›œÿºj¾·gÚçýÓK‘OÈ©ò´dQ‘FTÓL±®A`1Ö˜óGw0ëQÉq yÞàc­*ȬiË"8XiÉ,R(dpAéK¸g¹ê)Ù\ã4dRÒñ@e=¤„Re}E¼RàQ‘ëFFqš0(È¢Œ 2=i2=©>\Q¹}E.G¨¥Àö£#ÔQǵÔn´qíFqFqG£"Ž(ÅqFqF´QFE{QFG­'Ô`J2¾´¼zÑFG­zÑíFG­QíFWÖŽ=EfŒ¯­Rà{Q•õ£Š0)2¾´qITµ«ynô›˜-ˆºü ÷ïŠÌñ„º–‰sinGšëòƒß8ý+;ÄvRê Õ¥¾ ®¿(=ðsÒ¼êxuU"{‰d YÐðvç$;AÁ*êÚ}„’Èe;4o€Jƒ¸‚= ÿ“^mçj [‘*ï,¯ÁÛÇ#Ðr+ȕѥ»¢õeC·ŒäV\V7#]f’3*¸nÈúsõ¬Ñ̬þK<@ ̨vàqœŠjF÷,Åw1<’y9Ïÿ^©H|éØïf,rXŒ’i’e¤eGi7rORMD rÀÓU¡%Âò8"’9 Á$Y9È©crªò:wöêzžïUQ<¬9ÈçðêzžâcgQ€ÃÓùu=?ÏrNˆæE,âÿéϽ>HcXbv™XÈ9>àsïþ{Òºñ2)ÏeþÓŸzÝðÆ«6•qˆFRá¶7É’z`gþµ­áMMô»ðDŠÌ®ÌîéŽØÐo¥Ñµ%`c)!ÚFܓӿãþx¯BÓ5Hï£bX#©ÚTžõéZv¡ìDä,ŠpÀžõèÚf«ôCk®ðpÀ‘Ö­O/–»ºjši¼µÜ:U™e)–ÀlzQ ùª ¸#­=z++¼ÓpqœSi´”Q@¢¥³æ>ÏN:ÑEFQN¡Âò;ÑE92ãc6ö£µ©2¬Ç ¥¢¤·R\ ½{ÒçžÔøÎ_}kBH”D¬1(=úSã# 0úUëb…pGªíŸ’‘Œœ‹×$`÷©Ñ@àZ°O ôÉ8)Ê»Ž1Åu´ö$à(<÷§0ì‹Np «ÖŒy¤tã4ÕòÉÆjnæ”®Ü@¥tQ‚Ø£,8Ï4€c#ŠF8ã4 9lf€yÅ(!NÜSÀ;~÷Oz~Õ+ŒNÙ.2¼R;v†&T n\R~ënÐPŠŸH‘¢Ö-_Ì ¶@rz —J—ÊÕ혣“ÐTšT‹§Þƒ9'^ ºÞ»i»‹wNµé'U°´ÝÅ»ýêîS²Y ›˜r?Úr+ˆ&£‘=Á©£¸‚S˜äFÏ¡©b¹‚S˜ÝèsR u©F:Ô /QKKN£­Ö¨=E(@Ub—¸¤cÇZ À✠Z)h¢Š(¢°M!`9&)¾jâ¤óûÔ›×ÖÏþ!Iæ§÷…×ÔR}¦/ïŠ<Øÿ¾(ÞŸÞZOµÁÿ='Ÿ÷ÅÓûËùÑö¨:ù‚,yϘ eë½OãIöËùè(ÅýõüéC¦>úþt}²ßþz­/ÿ–‹ùѽ?¾¿(º„ÿËAG›÷×ó¥Þ¿Þ_Μg‹|R—CüCó •#ïΚ'Œ/2;ÓUÕW—wÍ1UÃ2àwÍe$|àÒ`7zRÀàoZ:ž†Ÿ½}E(uÉR;` Ö›+|£ "£¸lF6‘œŽôàG¨§†_QRP>ðüèÜ=E—ÔQ½}GçA`sņ3‘Š ¨ÈÇÖ”zÜPOFQ‘ê(ܾ¢“#8Ï4:df‚ʈ Öõ ëš\ƒFAèiw/¨¤$’h$¦ŒŒP‘@!†EäS[Œ2E)£=ñH2ªq“Þ˜2<“֙ΠäçšzœŽ˜§)ÈéŠzœŽ˜¥È¥¥¤Éϵ';ºqMËoÆÞ=iiiØö£4QøQEö¦õ8šy8zÓ$àqž¦”~t½:óKÊ'𥥧bŠ(¢Š(¢Š(¢Š(EQEQEQI€) „ZBF) *GpiAäL•<œƒKšPiCqÞšæà@Üð(Ï=)ôêw݃9i»Fr:ÓJŒp)FqÏZpÎ9ëJ¹Ç8Í#*°ù…5Ñ\|Ã8¦¼høÞ3ŠP t¥”àRÒÐ)1H ÷ iiih¢Š1F(ÅR`z BHÆ!$v¤bF8£Ó4zQïQ\m]¬Ç¡üê)ö®ÖcÐþuÛF±ÁüèÝS»b‚b8قǦ) Äy\튔~µ0ýjUàsÖ–Š"šX)u¤,Ö¸RïN¥§QEQEQM^3ŸZjçœúÓS<ƒëN§S¨¢ŽÔÔ$˜`Ò)%yàÓP’¼õ§RÓ©3ÍúÒwë@çµé@úRÑG9¢Š\ÑEQEQEQEQEQEQE×û‡‡=Ž=鯧oZæ#Ómµku 4Fkyä2d –'Çóâ±â¶Šh§Ž6†ã±”¥s’p@<`ûgŠæ"°í%x|™&¿žÖÉ üø¬+¯•Ÿ›m-Æð\íÜr9`G9ãö‡^§t}:{Ñ,‰m%ËH¡•ܨRå”ã%Ž8ÿhpy-ÏMá‹Ö–7Ùnóy€0w “‘Ëë‘ÇûCƒÉ9Mj÷7>rÀäy­¿—€8;@õÇnyõë‘}áÖº’{ë4†ë_³˜rhô8ãóë×:ïO-~Yb`™£0éÁÀô8ãóëÖV±¼³´>Y£¡i%*§à’2~ð㚇NÒu)mf´X`QÈÆGD*‡i8$Œ±ù—Ž "²¹»‰ÈX•–TmÌ‹°pN Ç=WŽ}ê­Œ÷“*E ’ÎÀK¸óX G<œ{çóÆ—fhØÅ#Í(®Fì‚ØŒsÏõÏçGìó Œbw–`$^7dÆHǯùüã6Þ\ò££¤Š|µW]çŒÐwú~$v&+‰à˜:\¦#E]|ÃÆ Χáʽ™‚W‰ÃyƒŒe{œQøSáK–_² Üã׌š‚êÆæÊD†dÈ¢EÚC ügÒšö×(Á x¡Æ>|ÆxÉíZK¨]ÆcŽÆ}‘ŒpO‘ŒÆ®bî!lÖò1uA¸ñ†vñƒøÔëu=¤±Gf( ’=;F1ù×G¡x‚âþÑmïd㣞¹èqOóéÙhž!}Zßì÷qù7 gqé.zcÓüúv~ÖäÔbk;Àã©< 3È?—ùôÝÑ$ci¶O¼ÖÖ‰#½‘Y>ò±®ƒEfû!ŠA‡F=ëN´kB’ÒMä~4Ò)>¢Š(ïGn”b“¿µÅ(Å.2i1Í/>”ƒ®1IŒÒsš4RÆ1H4{ÐGµã¥⃟JnZ)0in)08â—ÔzQŠM˜àÞ£šSô¤ç®)O8Å7#Š^x"“ÔRû c£Ó­¯O­ ÷õ£Ò‚¼qK´ç§J^™ÍéHF Í&}()Ä{u¤Æx£€ezóIÓŠ(Û’jðêðÚðÊ(¢Š(§:26`õ¥ Ž£¤ÁȦÒRQEQN@¥°ÇÖ­5ÜÒÚÇjv”BJáFy÷§î%B`cc1íž9ªÍŒð1L4„`)(b=ýésÎzýiZRìþlS·|…vŽH9ïßüJIˆŠlRIwqŒÿè)K/h@r[¿ñý)³œSÝ'8>ž´Šû9S‚8úÐ 4R$È8ÏZ3Ï#J\Óä—vß— ;f—8=?Zp;O*^õ,7M¬ê£$zúŠ‚œ•ëBHçh'Þ‘nöí;rW¦{Rgž)ßhqÓ¶89QN7­8]ËÓuJº”ý¥ó_ûƵKýò)§Q¸ŠO1ÿ¼Eæ\¬"“ûFëë fÏÞ9¤óÜž\æšnçvîõ£q#–?k0Áþ&”ÝÊË´ÊÇñ ŸsùÒyÝÎ~´Ÿh“o2ýhÏ=OçG˜IûÇó NÇþt½¾÷>”›‰ïúÓ<Æ ÷ÏçH1Þ—wÏëK¼œŸÎ¤· 8ɧŷp$➌ d¶?~ñ“óR—“¼þu|’wΞ·R§ÜžEú1讥…³ò)öcRCw=»n†wCìÆ¶´ïê6EåÄ:«Oã[zwŒ5"«$‚xÇfëùÖÖŸãFÌ+‰ÓѺ×]§xÏMº‹uÃý‡f®»Oñ¦›sg!‡f®ºÃÆzuÄy–O%‡PÕhx§HÈÿML}*Àñ^’H?lLTãÅšQÁûRc4ÿøJ4oùþJ“þþRŸÿ V•ÿ?qÑÿ >øþŽ”xŸH#‹ÈóJ¾(ÒØd]ÇùÖ½Õ½ÔK,2«¡äkB »{ˆ„‘Jއ¡´`¾·¸dŽTenA¥ dTÊÁ†GJX0ÈéKÞ–ÞŠ(¦¨ÀÅ"Œ R(`RàRÒÑ´z 1íGáFÕô`z )6/÷GåI´zÊÀQ±º(ÀôgéG–ŸÝ•ƒò£ðyiýÑùQè?*?ùQ±º?*6AF ¥Ú¿Ý•‚“ÐQ±º?*0=G ¦ÈbŠ6’Bˆˆ 36u$Ñ´zÊ›#Gm$…Qfc€êIª_ÛZ?ýìïú/—þÇéT¯£ù‰ØÿàB#ë:AR§cŸúîŸãLx)9úS$Õ4VR?´¬ð!?Æ…Öôr£:•ýÿOñ¡bFcÁúPš¶ŠT¨Øƒéç§øÒÿmhÿô°ÿ¿éþ4¾JÿÏ?Ò—ûSDÿ þ'øÑýµ£žº†?ëº#>>”SD#Q±Çý|'øÑýµ£öÔ¬?ïúJÄ¥SÐÀãQ±ÿÀ„ÿ?¶´ú ØÿàBJçî~”¿Úš&sý¥cÿ þ4ŸÛ:?ýìð!?Æ%s”jèŸô±ÿÀ„ÿ?¶tú ØÿàB/”?¸iµ´_ú ÙàBÿ'öÆÿA;/üOñ¤òG÷ ÚÚ/ýì¿ð!ÆšÚ¦ŠÄgT²ãþžWüh0)þGö¶‹ÿA;/ü _ñ£ûSEÿ ¥Ÿþ¯øÒ}ºß™¥þ×Ñ¿è'gÿ+þ4ŸÚz/ýlÿð%ƳFüÍÛ7ý,ÿð%Æí-þ‚¶Ÿø¿ãGÙÇ£þfíþ‚–ø¿ãH5-ÌVÓÿ—üi>Ì3Ñÿ3@Ö4pä+gÿ+þ4¿Úz/ým?ð%Æ—ìãÑÿ3GöÎÿA[?ü _ñ jz/ým?ð%ƳGüÍÛ:?ýlÿð%Æ—ûSFÿ ­§þ¯øÑöqþßæi¶tú ÙÿàJÿÚz7ým?ð%Ƴöÿ3Iý³¤ÐVÏÿWüiµtoú ÚàJÿ/“þÿçKýµ¤ÐVÏÿWühþÕÑ¿è+gÿ+þ4y?ï~tŸÛ:Gý¬ÿð%Æímþ‚¶Ÿø¿ãG’Û£ûgIÿ µŸþ§øÒÿkèÿô´ÿÀ•ÿ<£êô‡YÒüÅìÿð!?Æí#þ‚ÖŸøŸãG”Þ¯Iý±¥ãþCŸøŸãHumN­iÇý<§øÒXÿÒ_K?ó´ÿÀ„ÿwöÆ‘ÿAk?ü Oñ¥1?÷ží}3þƒ6øŸãIý±¤ÐZÓÿühòŸûÏIý­¦ÐfÏÿühþØÒ?è-iÿ þ4†þóÐum3þƒVŸøŸã@ÖtŸú YÿàBSÿ}ÿ*Oím3þƒV÷ý?Æí+þ‚ÖøŸãG”ÿÞoÊím7þƒV÷ý?ƃ¬éGþböøŸãA…Ïñ7åGö®™ÿA«?ûþŸãIý³¥ÿÐ^Ïÿühò¤þû~Tki¿ô³ÿ¿éþ4léŸô²ÿ¿éþ4yR|þTki¿ô²ÿ¿éþ4ŸÛ:gý,¿ïúLŸß?•Úºgý¬¿ïúÛ:oý,¿ïúT¿ß?÷Í/ö¶›ÿA«/ûþŸãMþØÓ¿è1cÿÓüi<™{?þ;NÆ™ÿA‹ûþŸãKý³§ÿÐbÃþÿ'øÑåOýÿüví7þƒ÷ý?Æí­?þƒ÷ù?Æ—Ë›ûÃþù¥þÙÒÿè/aÿÓühþÙÓóÿ!‹ûüŸãG—7÷‡ýóGöΗŸù Xßôÿ?¶´ÿú Xßäÿ<¹¿¼?ïš?¶´Ïú Xßôÿ³§ù‹Øßôÿsãò kZXÿ˜µ‡ýÿ_ñ¥þÚÓ±ÿ!{ûþ¿ãFɱÔ~ToL?ó°ÿ¿ëþ4 gNÇ:½‡ýÿOñ£dØê?*Oí­3ò°ÿ¿éþ4£ZÓ{êÖ÷ýÆ“{~Tmé€ÈRÃÿüjäLÒF²$©"8ܬ¼‚B 5VeÈ,áVágxĈé*8ܬ§ ƒÐƒOÄŸÞZ_Þÿ³O̾‹F$õZ›þÍ›=“÷½Ùi?{ßm&fôZKÆiÍÆÚk€à(悲»HúR‘!<…"‚%a†E"€¬:ØP¨Ë÷QAö¡ãÉXÔÖ†óqÆÚØ-)iû"þtÕó”`àûÒ'œÒ>´ÕiÀÚPëN̾‚”™¿º´¤Üq:Kº( )t~t¡§ÿžcó¦³Ê9?:Fi‡>Xüé­$ëÏ”?:_6LªýiwËÿ<¿Zpyñþ«õ¤3J“øÒ&í ?î?çëMÍÿ>çó¤ófïüÅæï üÅyOü»¶~¢Ë.?Ô6~¢”´¤ª`~¢<¹ÿvüÅ(š\ÿ¨oÌR‡ÿË&ý)|ùçÝ¿1G'xó¡Ÿ'1·éAžNð7=9Ÿ<ÂÜý(.s÷šY?烊Q#‘)ǽ¶1µþ´¾kÿÏ£Ínñ½'™Ž¨ôï1¿ç›S¼Óÿ<Ú—ÍÝoÊ“«oòÜJná»~×Ò›¹CïÃQŠw˜s÷ò§yÃûùR›…þëþTy‡?q¿*O8gî·åMûJuÿ*<ßöò£Ï_î·åGÚÓû¯ÿ|ÓZrÄN i¹ÏáLkÕÜG?ðQ6G(Ãð§ ÔŽU‡áJ/##î¿ýóKæ¯Rò Ìpß•î1Îò£Í\½ùQç¯{ò¤ûdyæÿ¾hó—ßò¥óÓßò§}®?ö¿*C<`ãŸÊšnc7åHo¢7ýòi Ä}Éü¨ûLxäŸÊ—íq‘ßòªw0i—2ožÚ7sÕ¶rj•ž—q1–khÝÏŠrjŒöúTÒ&µÜõbœšŒiú;ˤ_ŠÓOÑÛ¥¤CþH–zKŽ-#üTÓ³ôPpláãýš>Ťd²Æ?à4?FfÁ³‡#ÕiÇE+²À}2´}‹Gçm´9úQý›£ö³ƒ?îÓ–ÇF"ÚôZ_ìýŒ›h*pÒô–^làüª9t­t(Ч¨Ge–qTî|;¡\³;@C7]’¸–qUï4=6á_î;ùg“?…´ÕrÖRÆ7ÿË•Op2=Ï\çKá+8îD¶3ÆC˜.º·p2=úýóMü>¶òË-£E+MÃÅ:–VîcŸó×8Óè—ZMäO«8‘˜.äAÈ8qçôõéYÚ·…%†á ¬(ìò³ßcp«–ç=‡áŠÃ›Ã†–$UVi •Ê äInqƒØ~­¯èÒ y'»´ s" VŒ ÷¾SÔ’~£·¢è¦WyìW ˆªc)Œ*ýï”õ,OÔcÞ¬x[NiLö…gT@®…vŒ¼I9ý+MG‰äG}léÁ£ÜŒ¸'®uº^Sz¸ùÏ\ ÐïWëC<ÐN) &i3MçÖ“¥!àúÑÒŒûÑFi2)(Í»K‘õ¤8¤ÉÎ(ȤÏ4à{Ñš !=ñGoz;Òf“ÅœQ@¥Ï@zÓIfŒñIÆx¤ÎhÏ»€úÑ‘Šn8âžÔPN!â“ Ð1ŇþF“ÿŠ¥ÞÞ´¿ð†xþ|?ò4ŸüUð†xþ|?ò4ŸüUÛÖøCùOþ*øC4 È?ÿ#IÿÅQ½½hÿ„3@ÿ þF“ÿŠ£þÍþÿùOþ*íëGü!žÿŸü'ÿGü!žÿŸü'ÿFöõ£þÏÿÐ?ÿ#IÿÅQÿg‡ÿçÃÿ#IÿÅQ½½hÿ„3Ãÿóáÿ‘¤ÿâ¨ÿ„3Ãÿóáÿ‘¤ÿâ¨ÞÞ´Âáÿúÿäi?øª?á ðÿüøäi?øª7·­ð†xþÿùOþ*øC4ùðÿÈÒñTooZ?á ðÿüøäi?øª?á ðÿüøäi?øª7·­'ü!ºüøäi?øª?á ðÿüøäi?øª7·­/ü!žÿŸü'ÿIÿfŸøðãþ»IÿÅRo|õâ“þÍ?ñáÇýv“ÿŠ£þßÿχþF“ÿŠ¥ÞÞ´¿ð†xþ|?ò4ŸüU/ü!žÿŸü'ÿFöõ£þÏÿχþF“ÿФÿ„7Ãÿóáÿ‘¤ÿâ¨Þ޴ Ð?ÿ#IÿÅRÿÂáÿùðÿÈÒñTooZOøC|?ÿ>ùOþ*øCùOþ*íëKÿg‡ÿçÃÿ#IÿÅQÿfÿ>ùOþ*íëGü!žÿŸü'ÿGü!žÿŸü'ÿFöõ£þÏÿχþF“ÿŠ£þÍþ|?ò4ŸüUÛÖøCùOþ*øCùOþ*íëGü!žÿŸü'ÿGü!žÿ þF“ÿŠ£{zÒ gþùOþ*íëKÿfÿ@ÿü'ÿY>)ðÖaáû««[O.hömo1Î2à ÇCJŒÅ€&²|Sá"ÃÃ÷WV¶ž\ÑìÚÞkœeÀ<ކº]þ@oýzÅÿ  k}ãõ®“Bÿ›ÿ^±è¯RUú(¥¤"ÓM.2Aô£ úQŒsHÎM q$þs’ u:–Š(¤$Žô„óŽôÚŠZ(¢Š(£ëEQEQKE”QEQHÊíMe ר¤eÜ-:–Š)h¢ŠZ)(¢ÂŠ)p(¢“ð¢Š8¤¢ŒAE`zQE‚Œ )p=Qè(Ú=(Àô¤ãÐRmSÚ“ÐQè?*6¯ £ÐQÇ ü¨Ø¾‚ŒAùRñè?*O-º?*6¯÷GåGà?*]‹ýÑùQµ}åGƒò£bÿt~Tm_AùQøÊ“bÿt~T›Wû£ò¤üåM¹·†ê†tÜÔd~£šeͼwP43©hÛ¨ G|õÓ'‚;ˆZWr?Þ‘úŽk;Nµt³[«\ˬfšmå‰'ŒFÇóª–b$·ÜN‡%š]ä’HÇ<ðö?RÓí£Ó·ÚFÓÊ82iwIe’iö’v¶9ëK¦Ê³<ÅIÊ6 =M&›(–kœìlsÖ´*ñ5£ŠAM¤ü( Ði:Ni>´zQKކ“Rcµ ( ôÏzSÖ’œŽ”t æ“94‡“Å%PA'¥Z^©^i3HAÇ=i1Ï¥/ÒŒc¥:v¥¥Ï¥&:ž´†Œ Röë@âðx¥ f×ô£<Ò“ÓŠAÈÇJ:­Í.i·§‘KŽøæ”vÍ&=©0})'#<9½xi9¨ü9£^zׇW‡W†“O%v€Nx4§÷ÍHc c†œƒL¤¨¨¢”OiXpzÒœ÷¡‰''­%%*-†8´÷[ Á†:ŠR1ß4„c¾i””ã´F0rÇô¢ŠhÁ<œRñŽœÑ@Å%rÍîiAÁ£¡§H†7*q‘IE2—>´¸ }iÁIè)))§­ŠQEQEQERãš(¤¢–Š)(¢Š^Ô£Žh¤¥¢”RRRQERÒãŒÑE%-Šzô§ QKKKV`$l#Ö­[’ cÔU›BD©Zö;Oøô‡×`þUì¶Ä›H}ƒùW³Ú’m!=öåR®qÉûTŠN9 Ÿj•NF J^Ô´½"ýÚEäR”´´´QEQEQEQEQEQE(¢Š¡¯ÈRÿ¯YôJ¿x}j†½ÿ Kþ½eÿÐ PðGüŠv_öÓÿF5+ýóT<ÿ"—ý´ÿÑ[ÔÚÞ¢Š(¢Š(¢Š(¢Š(¢Š(¢ @0()ih¢Š(¢Š(¢Š(¢ŠN´t¢‚@ÑE-QEQEQEQIEQEu¢Š;Òcž´QKY÷ºŒ6¡Ê¸y:mÏJÌ¿Õa³Y 8’QüéY׺‚Z ¸’NÉž•ªµÝËG$~XÛ‘ïQiZÑ¿ºh^//åÈÉêj=;U7wSG°íÏ5©[©HsÛ‡=€¤mÝ€4žÄP§'¡+d‘‚¥¥§Qš3Hx£4™ )h£½'z)ih¤¢Š(¢Š)h¢’°¼oÿ"ïý³ÿÑ‹NïŠÂñ¿üŠw¿öÏÿF-_Ðä¦ÿ׬_ú¤o¼~µ{Bÿ›ÿ^±è¯RUú(¢Š(¢Š(¢Š(¢–Š)‹ìHÇ¥1s½‰ô¦®w±#”êu;­´˜¢Š(¢Š(¢Š(¤œRg’(Í--è¢EQEQERÑÞ“šJZZ%QE--é(¥¢Š(¢ŒÒÑEQIEQERcš(¥¥¢ŠJ(¢ŠAEQEŽÍÛœÒ7Ýϧ4ÉQ[ z¯C\߆®Œ÷÷«» ?­`x^s<ú†N@~Ÿ‰¬_KæßjC=Zé ow­Þ†ŠCIõ¤4´˜¢’—úQƒŒÒö¢Ò`Ò£ši3š;b–AëHzRg“·Z1KÖ­#zLqA¤ät£µ(Ï­€9ö£žÔ`b–“OZLzRuÖ”ôç­(ã­ ã­4t¹ô¥Ï4 `ã­ Æi;ô €JU8)q‘H2µæŒw¢ƒÓƒ@éKA(½=E§=M!' ¦•8õ¯ÿÙÿØÿÀÿÚ ?óúóúàQ™+Á¢ŠV Žs÷©IÍÜðr9¤¢’Š(¢Š(¢Š(¢Š(¢Š*vE[uq"–cÊã‘z~q29=1Í?¢už˜æ >ÔÊgZ( QEQKÍ/CÍ)´ch“Ö’’’Š_¥ŠJ(¢”QE%QE/j( ýh¢ÏŠ(Æ)GZQ@¢ŠJ(¢ŠJ(¥¢EàiEê\ÒÕ˜þâc®jÔëVm~úýkØìÉ6pq‘•{-™ÍœÀ¿Ê½žÄæÊ÷ò§GŽF`x=©ÉɇCÚ¤HÂH̽­HNTâŸÔSúŠD9Z¥"縧RÒÑEQEQEQEQEQE€žh¢–¨kßòÔ¿ëÖ_ýÒ¯ÞZ¡¯ÈRÿ¯YôT<ÿ"—ý´ÿÑK'ß5CÁò)ØÿÛOýÕ½M­ê(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢€1F(¤ Í!PHÍ#(n´Ô¯nÔÕù[onÔÕù[onÔú}>Š(¤¢ŠZ(¢Š(¢ŠJ(¢Š(¢Š§¨jÙÄyÝ)ûª*†©©Åa$†”ýÔ“Tõ èìâ' ¹û«žMbˆ§(ÂEGY9ÀŒ×1û罄‡8Fk÷Í¿ÌXHrqÔT+öòG,`åNsQƳ[IÈå9Í25šÝÒErœ×Mk8¸d¸÷®ÊÊé/-–Tà÷†º{K•¹€H¼ãÐÔÕb§¢Š(¢ŠF8¦±¦1¬ÍCVKBÑ"——z ÊÔõ¸ìFŠ^lp+:ÿVŽÌP^\p+>ÏÄ2£0»Áé°c›aâyÙo€`~éAÒ¨ÙkÌ‹°0z+ Šhæ]Ý0k¥†xç^7 ­Ó·£™$@ÈàƒèjJ’ŸEQE-RQE…ãoùïíŸþŒZt|V¿äS½ÿ¶ú1jö…ÿ 7þ½bÿÐ#}ãõ«úü€4ïúõ‹ÿ@~’´(¢’Š(¢Š QEQGz;ÑHh4˜ iæ”RÒÑE-RQA¢)ÅŽô´´QEQEQKE”QE´QH}¨S‘H§"‘I#ž´‡8ã­ HR± p9¥íKE-RQKA¢Š(¤t¢Š)h¢’Š)3IšLÒƒJ:RŠZ)h¢ŠJ(¥¢’Š)h¢Š(=)2 õ®?Â#¥øœÿ3\¯‚øºÔÇ£ÿS\ß…¿ä)«c aüÍuÌy® õ®ÑÅ'ãHi;⓽'ãGz(úÑš3K‘ÓŠCïIëH:ŸAKÂŽÔvæŒõQŒÒc9æƒHõ¤4”z;QÚ€(Š;{ÐqEñÅ qJ:Rãó /sHF9¤#µ/jÏ4¤ךZ3F=¸¢Ž½©@àbÒ‚ QÖöÍ­ã8Çõ¥çu @çJF:àäÐNægf¼7RK ç§s^#€Q›pÈ#åç'ßüúׇ¹2eÙ†ìôî}éµGE¤–94QIV¤{ce¤dN ÞùàŽÜŸðyÛ°`ÙäÓÉ]€`îÏ&ªÓ) r(¢’—Ôw¥š e¾QéE%% ”u¢Š(¢Š(¢Š\cš½”QEQERŠ(¥Pyö¥¢’Š(¢’–Š)(¢E£­SÅ8RгýÚýjÌ…úÕ‹o¼¿Zö;.l 8Çî×ùW²ØØ@qݯò¯fÓNí>ÜqøT§k)ñSdGçV89ˆ®ÐhÀ ` rŒ ¥4´´´QEQEQEQEQLwdp·Ò˜Ï·©9éŠcɳ¨'=1JŽr)QÃŒŠTpë‘N§Sª†½ÿ Kþ½eÿÐ *ýáõª÷ü€5/úõ—ÿ@5CÁò)ØÿÛOýÔ²}óT<ÿ"ý´ÿÑ[ÔÚÞ¢Š(¢ŠQÖŠB3H(´´QGz(¢Š(¢Š(¢Š(¤'M!;zã„ã©¥¥£4”RÑEÇVnU€ô¦:—)ÔÆ—*Gµ0Ë")ÌEˆþïza–HÔw½0Ìè2ñž?»Í:|Å©CèiÑKæ(%J“Øõ§C(š0ÀÏcÖ¤©*JZ(¤¢Š(¢Š(¤`N0qëM`OCŠC’88¦\J°@ò?E¦]L[¼¯÷Tf£žE†vè£5ÍÛ\K<ÒJöìC”žÕÅ‹—¸¸–i!c¸ü¤ö®]f3Ï$ÏÇå$t«òCϬdìô58'n{šŠ#´`œæ‘rZ sSéîc»Û’»UíVŠôG¸í~ƬéR4w›w¯ÔÕ/ŽÜz×DÎ=kh¸ÎiAdt¥‘ȧÈ´¿äP?ȤZ:â‚r:Räú~4v¡pL:Ž{RžÔ¹â––ŒœqNÍý) $ô¤àsH8¤ž´vRƒÏJrœwÍü ž('#å¯ÿÙÿØÿÀÿÚ ?óúóúóú(¢Š(¢Š(¢Šq8 ‚:æœÀ©ÁÁ¤‘QUB“»øÅ6›MW+Ðõ¢Š@prFiûŽÒ¼rsӟΤ Bã‚xüÿpbAQŽNzsùÓAÅ4§#õÑÁ¤¦ÐASƒEÆ3Á¢ŠJ(¢Š)p@ÖŠ(ãôQIEQEMQEQEQEQEQJzÓ—­( Ru4RQEQEQER@¢œ)–¬Ã÷SëVmÿƒëV-~úýkÙ,Çú¾EþUìÖCp`cä_å^Ï`±ƒ|ƒùTÂ¥êÀ ôâ”ô ô R”Šr ÒÒŠZ(¢Š(¢Š(¢Š(¢Š(¢Š)¥&sŠL æ–––¨kßòÔ¿ëÖ_ýÒ¯ÞZ¡¯ÈRÿ¯YôT<ÿ"—ý´ÿÑJÿ|Õȧcÿm?ôcVõ6·¨¢Š(¢’Š)h¢’Ž””„àç·ziÈ9ŽôŒpsÛ½.sNëÒKEQEQERÁŒ¡†Í#(a‚2(Ïj3GAE-QG^(  t RÑEQERQE:J;{ÑK@Î9¢’ŠÊ×ç1ÛÇ?ë±üIpb´XÔà»b³5ÙJÛÔà»b¨DÉq籬ÿvAÞyìk"1°œãÐÔ’JØêBnjԄœ3MÚF ô4Gn´ `tëJeèNqž£µ>7 Ý9Óûüf³õ·ÛbÃûÜVU¢,ê"–L²õô®jÑVvò¥—•êéX–øˆå—‘ÕV¬µ¤hàаö¨€85+À¡@Ò…T'ß­.1¥A4Õw·—Ì,j–Úá¬äÞ¹`;SíåkY7¦Hô­;{Á:‚ Öý¥úÝ `¸õ¶m¯áCPjÀ`TÐÕ Á”0èju`Êt4Íæ”iÔêZÂñ¿üŠw¿öÏÿF-:?¾+ Æÿò)ÞÿÛ?ýµ{Aÿÿ^±è‘¾ñúÕíþ@wýzÅÿ  ¿IWûQIIE´RÑE%RÑE%QEu© ÷¡r8=©}©sKš(¢Š(ëE-RQš(¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢Ž”™¢ŠZ(¢Š)¤4v£¥(QEQE-RqA¢–Š(¢ŠJ3E-QEç4„sš03š)h£½%…-- qÖ¹ øœjý£üÍr¾ÿ†¨?Úþ¦¹_4}ª™NæÝ×溶ûÕÓžµÔ3š^Ô”½¨w¦óøÒu¤œ÷¤'(¥ÇzLú Lú CÏ4áÓš½óHM!ëKøÑš)ZLÑH -¹Ï^(9¢–ŒsÍç¥!À£=h¦º¦êk¦=N+©nø¤¤”½Mé;óE'z 7¯áE ëíH(ôdzAF9¥×­çš`zÑØQÐfŒq×ñ¥}(ïH03Þƒ\PzÒàö¦…àãÒqÓž)[žƒµÿÙÿØÿÀÿÚ ?óúóúóú(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)z`ƒÍRRñzp#iàç±¥ãô”ÚJ)sšRsÖ—””””QEQEQEQEQEQEQES” ÒûQIIE¥¢ŠJ)(¢–Š)ih§”¢VbáWëVaà/Ö¬[ð½’Èÿ¡[ÿ×5þUì¶6ç?òÍ•{6˜IÓ­É9ýØþU9«j˜X§­7=rx¤éÔÒDAN:f’/»ÇLÓcû§3RSéù¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š(QTuïùj?õë/þ€iWï­P׿ä¨ÿ׬¿úªÿ‘NÇþÚèÆ¥“ïš¡àùì¿í§þŒjݦÖõ-””RÑEQEQFh4”@ Z)i(¤¢Š(¢–Š)(¢Š)(‡=¨9íAÏj3ÅâŒñKE-´”Rw¢ŠZ(¢Š %QEQXz¿•%äYáÐvï\ψü©níÁ8tñÞ°uÕIn á”g"«©Áéôª 1Úª.GjŽY]~´¬ìƒÞ”»(÷¥Žçœ`œÓ–`N9朒Œãžiþ`M)aëJÎ*æ“s;DAÇ9õ­=êÙ¡99ëëW4‹ˆ£wŒä3ž¾µ¯[Õ³KE”QYšò´V*©Åbø¢$}83"¬9ÆqY^!NË 8aÎ:Vlv0íV(?+œ| ùxÏqÅb-»¨Äxϧ]ôød$ì$ŽœÔm¦BßÂIíÍFÚt$giöæžšl%xðsëOM* ¿ñªÿ‘NËþÚèÆ­ÚmnÑE-RRÑKIEŒHR@$úR1 4„àdi‹®Y ŸCH¹rT¯±¤S¸g{u:”QEQKE”QEQEQIEQIøQŠ1éGJ:Q“@ u£ñ¥¥¢šW*qM+Œ•4Ò§9ð¥#4 äfœFiih¢Š)))+ŸÔÏüM˜wØ1\®¿ÿ!`;ì¬g›ôÇ]ƒ_tŠyÆ*fSÓŠ¨Ž b’I”¯4¯(+ŠWmÇ#p£êiAÐ~tŠã¢õõ¦»>ð§©éJûòªN t¥pÀ.N7t§[N¶÷"B>e?5:Òám.ÖCÉSÍJ¶÷*ÿx©æºx¤YcWC•aœ×c ©<+$da‘]4R,Ñ,ˆr¬2 >ŸO¤Å˜¨/-þÑm$džWŠ«¨[}ªÖHÉ8+P^AöˆðW¥b[îxHgÎ8éÓÉE¸£+6pqô®r-ÅHcÈãéB˜ÝÒ¤PÝ*@7J²Š0sš²ª9É52=sMØ7äö¦íð{R`oÁ§#’9wAÖ¤‹Ëņè4õSG.á€zÍl#@ᮚ7 aÐÖê8t 9±|A&1Áy+ë\÷‰¥X—‚òV±|@ÿ4` ØäŠÏñ¨ðméî>^}¾u­] G䂤–ïíYþ! ÿeöÒw~ï#Ó÷‹[ºü€4ïúõ‹ÿ@}¾ñúÖîƒÿ ;þ½bÿÐ_¤«ôQA¢Š) PN:ÒZk0^´zRä‘JFih¥¢Š(¢Š(¤¢ŠZ(¤¢Š(¢–Š(¢Š(¢ŠJ(¢Š)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š(¢ŠJ(¥¢Š(¢”RÑœ}+•ðþOˆ5"¼™®gÃÿkê§ý¯êk˜ðŒ­6¥«HWi/Ð÷5Ó7Þé]cut­×¥/jo4œ ÓHæƒE/ÒŠAHM%Å Ñ@Î)Ý(j\ÓOÒ’ŠLsÒô¦`â”t¢ŠoSE/¡§(¥÷¤Ð(zw^(ÅRQFGNÔ‡¾izAŒ‘Ú þuëJ~”ž¸¥ê} (9RëÖŽ”˜=ºRç¾hÏ|ñJN9¿Z;õ¦±µ<E{‡üx[ÿ×5þUìzgüƒ-¿ëšÿ*öM'J¶Ïüóʧn•dÕÃKÛ4Z?ŠÝ·Gœc“Þ£€îBHÇ&™ Êަ¥©jJZ(¢Š(¢Š(¢Š(¢Š(¢ŠCA¢–Š*†½ÿ Kþ½eÿÐ *ýáõª÷ü€5/úõ—ÿ@5CÁò)ÙÛOýÔ²}óT<ÿ"—ý´ÿÑ[´ÜVõ AE´QEQEQE%QEQE (¢Š(¢Š(¢ŠJ)(£½æ“vsÅúÑKE(¥¢ŠNù¤éÉ4RÓ¨€b“¢–Š)(¤¢’°5E#R”žè1\¾¼ÔØžè1XÀ+}“Ý*ŒÛ<Ök*“)ŠÝ˜SAãRuŠž9”`mǽ=Yr1ïJ¬¹÷¥ò‘ˆu`H4ï— ŽH4ü'^¤0ù'=HH‹.IP¹êGJGE“8P¹ëŽ•§¥]$h-ÛŸ”æ¶´;ø¢Eµ—û¤šÔÒnÒ5ÍòŒü¤šÕ­Ú×¢Š)h¤®~u6ºƒÄÃÉó!÷®CR„Ùꎤb9Nå=³\ÝôMm¨¸a„—æSÛ5 ’­ƒÒ¡ÝÏ5}jxf$vÀ« !eÎLŒHã)9§$’¬>cÇŽ äŠtˆSÔŠY*¡Ç$V†Ÿ 0ì'•­pöæ6o™•ié’î„¡<¯ò¬Û—óæ‘ßáX×Ò}¢îV|=«2ñüë©7à…ŸKEQEQEQEQEQHh¤¢ŠZÏ×sý…©sÇÙeÿÐ *ýáõª÷ü€5/úõ—ÿ@5KÁò)ÙÛOýÔ²}óYþ ÿ‘NÇþÚèÆ­ÚmoÑGJBp(¢Š(¥¢Š)EQE%%QEÃ&Ùvyèj3( óÒ£2ªÊç-ÓŠ}IRQIEQEQE”Qžh¢Š(¢Èâ€r8¤#Š(äÒÐh9Ç})ih¢’ŠJJJ)h¬]uJÍ H–¹ßFË=¼¼•9_¥aëêË4`•åk*H¶·-“XÅqÔóYÄc©æœ‘¤óNHÉå©É<µIä­ÀíRy'9#ô§˜OŒÒ•#Ã|£Š@˜nÃp8©ã@ýˆ*ÇÐTŠANd\mAÈäSž58ýáÎhdR0™Ü9¶­ŸÌ[pcŽq]E”¢kTmÁŽ0H­ûI|ÛtbÀœ`⥩êj(¢¨jöÍ4 $~¸ZË×ìÚêÌ<~¸ZÏÖ-žâÓ1ýøÎà=k4âxC¯å\â‘$a…b)¡…5ÒQéNFÁ”õlc5p0TŽjø‘R0HçÒ¬«…£ ’KT{Ãdµ }ÀîëÚȉØõÈÅ>ÒïìîÍÔ0Á¥‚ãÉbÝr0EeÏx9;w+.[¥g(ÝÆ³ä¹ ÛA X÷©üQÙüt™ÏŸü}k´Ò û5¤1w5kŘ<sêgÿ"-lh?òÓ¿ëÖ/ýU†ûÇëZÚü€4ïúõ‹ÿ@z’¯RÑEQEQE-%QE%“4QKE-RQE-QEQE%RÑE%´„ÒiëJ)iE-´QEQIE%-´QEQIE%-´QE%”´RÑEQIE´”QE Z(¤¢Š(¤ÍJ>”iËÚŽ£š^ŠMs:1lju,ÿ{ú×9áìsUþ/ë\×…¥2êÚ³0[§ã]?5t­tg“E%èÏ¥¤ç­¥'jCši–Š(¢Š(¢Š(¢Š(¢Š(¢ÑE‚“¥P׿ä¨ÿ׬¿ú§/ÞZ¡®ÿÈRÿ¯YôT|ÿ"—ý´ÿÑK'ß5GÁò)ÙÛOýÕ»M­ê(¤¢ŠZ){ÒsE-QKÎ(¢’ŠJ(¢ŠB¡ˆ'µ!}) ‚Aô¥¥¥¢Š3EQEQE&(Ń sH2Í@'ÒÒÑ@t {¥¥¢Š)h¤¤¢Š(¢ŒQŠZ1Tõ;´Y8Qó¨Êýjޝj.¬$\eÔn_­UÔ 6r'p7/Ö°`Q#”ãËÚ*ÈKLvãµsöÊ$;¤;qÚœí†Ç~Õ,Œ7sÛ¦*W#?ʤŒŒzФsž½©U»ÛŠyÚŒ1Î};R°U ƒœúv àz柎)váráKŒƒøTeI`Á¸¨˜ƒšˆƒœƒSYÜ5µÐRߺ~>†®éWkv#fýËñô5bÂàÚÝ*±ýÓð}mƒÞºn¼×Aýh¢Š( ÖÜMirËÜÉÊŸC\¦«höWŒBþâSà5ÎjíkvH¹”äÀÕ4™†ð1Ö¨$Z¨’@#Þž’ÂÀ—,)˵{Æc¼‚?ý k½„c`ôÒ´|kÇ„o ÿCZÐпä§׬_ú¡¾ñúÕý þ@:wýzÅÿ  ¿IWéh¢’Š1éE´QIEPs‘Hs‘G9”R⊠fœ šCB°aÁ͆èh âŠZZLóIžp&}ih¥´´´QERRRw¢€¥Ç­.)h¢Š(¢Š)(¤¥¢Š(¢Š)h¢Š(¢Š(¤¢ŠRÑEQIE%QERÑKERQIERÑE*ö¥(nP㸮gH\x—S×òç¥sžñ;ÕxïùsÒ¹ÄÑj²²lmÝ3Ó“]zß=k¦o½IIAÒ J){QIíŠocAéGcÅ(¤  \QŒÑÚ“Þ“”†–äÐ84P(Ç¥c¦(¢Ž½iæ’z~xæŠvr)>”Rw¤'ŽMœÒ¼šiΓ¥/j¦úÔîÔuQE'zæœJ;Ò /j½h ƒž´áÁçšA‚0)=©1ÇJðêñ ðÚqÁÆäõ4÷*BíR1'94ヌ9Éêi´ÊV*U@\ÔúÑE2Š(¢Š(¢Š(¢Š(¢Šq<` zÒ€IÀ¢›Þ’Š(¢Š(¢Š(¢Š(¥Ç QIEQÚŠ(¢Š(¢Š(¢Š(h¢—hRQEQEQEQE´Q@QNáEXˆ~ìzæ¬E÷M {šs§ÛÿË5þUìZAΓjOüóʽCÿ5¯ýs9Ï8ëVùæ¯ Òÿ½¡ ž "Œ(¦§*zjr ÷¥œ:SûS©h¢Š(¢Š(¢Š(¢Š) QEQEP×ä©׬¿ú¥_¼>µC^ÿ£ÿ^²ÿè¨ø#þE;/ûiÿ£–O¾k?Á?ò)ØÿÛOýÕ»M­ê(¥¢“½%´´QIE%RÑÞŠJ(¢Š(¢Š(¤4C@¤”´´´QKERQEQKE”QKE”P)9Í'9¤=iÔêu”™¤¢×5t>ϨË/ÞqÚ”fÕ%ˆ !ù‡ã\Õêu !ù‡ãP¹=sQ.9Îi‹×5i0H©€ïéR_J‘B·~iÀïÍ9@o­< ŽÔõÈ9^Ôì`ñÚ‘œì+Æ>”#2•àíHÎp@À÷ÅBTQžJ‰sÁ=}*0€²ÝO>ÕÐ&6.x®¾ôÅ/’Šr»²½]Òâf¹A¸sŽEjh°¼EÈ<ç*ö— {°$\ƒÎìSüoÿ"ïý³ÿÐÖºÈþø©|mÿ"ïý³ÿÑ‹Wô/ùéßõëþ€)^пä§׬_ú«ô•4QEQE´QERfŠ(¢’Š)h  tïH3ïH‘ÞƒÒŠZÀ  E´RÒÑEQER÷¥íKŽ(Ç›i6ÐGh”ƒŠ)h¥¢ŠJ( œR:Ðx z¡ zZZ)(¥¢ŠJZ)i(¢Š)(¢–Š)(¢Š(¢–Š) Z(¤¢Ž”QE-R¯j;Rö®{Mx—S#®îŸsúÆ·ªóÎïëX:Q¬êÄwsùÖé5nžµ´~õ&))Z)(b’ûS[ô¥¢•i)?\ŠJZ;ñE!#8íHG=(ü)=³H-'¥(ëIG=¨4´BñÞS€§v¢ÏZCGô ñõ¤4Rt>¦›ŒÒPsš:zPMÔuíF8¥#šPGJ1ÚÔÓ—’isÏÖ“?6G>ô‡’wRwæŒòAâš;’)ґǽÿÙÿØÿÀÿÚ ?óúóúóú(¢Š(¢Š(¢Š(¥\ÉÀ¢Šð0)@<âŠJJ(¢ŠRsJ>¸¥'“ŠJJJ(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŒfŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢––ŠQJ(«1}ÅúÕˆ¾è©¡í^çãìåÛå¯ò¯aÒ±ý—m°ü¾XþUìZ.?²-vŸ—ËeŽ1Å\cWÉÀ¨ÁgRA☠0<ñM`})bP‰zXÔ"c=èE€g½IN§ÒÒÑEQEQE:ÑEQš)(¢Š(ª÷ü€5úõ—ÿ@4«÷‡Ö¨kßò/ê?õë/þ€j‡‚äS²ÿ¶Ÿú1©dûæ¨x#þE;ûiÿ£·€Å3Vî(¥¢Š(¢’—µRQEŽ”E 9¥¢–ŠZ(¤¢Š(¤QE”´RÑEQEQE Lâ‚h¢Š)h¢’Š(¢ŠZ(¢Š)( óXºì^\‘ܨàü®}sÞ'€¡ŽíGû/ÇjÅס#˹åo¥fù·v¬uæ³Sœ¹oL ¹nhi2` “¥Àã`qNÏqNcÆ8§ƒ⛜”Æà`~4ÃÅ#ò½9¦°ÊûÒòÖÒ²ˆŸ†Œ÷­Í3P‰ãXáÀã=ëSO¼‘`c‡Œ÷«™­,ÕüÒÒÑEw¥íGjZ…¡Ã‹†ÿ‘NÇþÚèÆ¥“ïšÏðGüŠ–?öÓÿF5nÓkzŠ)h¢“½QÞŠ)h¤¤¢Š(¢Š(¢šX(Ë>´ÖuQ– zk8^Xà{Õs¨Z)Á2=êÔ-ƒp™úÔFòÜu™?:š)â™wE"°ö5,SÅ2æ)DZ©#–9QÕ‡±ÍIRSóEQEQEQERQE-QEQE´RRQEQE%2h’xš7V¨ç‰'…â¬1ƒLš%š&ÆU†1\Ä‘¼3IÃæN„w«Œž-.d‚Q‚œ‚;ŽÕÌIÛNðÈ>ï ŽãµÈc$NŠR™½:) ž*äG+Våjt9ür:S”a‡JP0EçÏjSš]¹=©9céF ¤™‚'}Eò ¯ :M`dpGB*æ›v'SÞ'¯q[:=ð¹Ê‘¿zž½Åji—^|~[ŸÞ/¯qWëN¯QE-QE”QEQEv¬/ÿȧ{ÿÿÑ‹NïŠÂñ·üŠ—¿öÏÿF-^Ðä§׬_ú¤o¼~µBÿ›ÿ^±è¯ÒUê(¥¢ŠJ(¢Š(¢’Š)héERÑERÑE ¤¢–—¥£4‚’“RÑE´QIKEQKEQEQIEQE-%”Q@éKE-QIE%QKE-%QE%QEP(¢–ŠZCE%-PE´£µ/j;W=¦ŒxRÀþ/ë\þ„¿ñ9ÕOû_Ö°|>?âs«½ýkxõ­ÃÖ·Òb’RQïE-'ÓÔSqéF)@ã#­( Ð;QIš2)) '4cš^ôJE ¥=p(¤¦Ÿ¥…/zPhÍ(ëN¢—ß4LRc¸¤#þ”SzpzSzæŒsJ1žhö¥Æ;R€úÓHÁ÷£8ç­ßš~z :OaK“Ž('<Š÷¤éIß4¥p84˜ÁèOÒöÈ?…*`q_ÿÙÿØÿÀÿÚ ?à s^^IEQEQEQE)$€=(¢’Š(¢Š(¢Š(¥`À9QIEQEQJ'Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)x¢ŠJ(¢Š(¢Š(¢Š(¢ŠQE¢”QVcÿV>µb/¹SEÒ½H$évÛºùb½‡D?ñ&µÿ®b½‡Ãÿò´ÿpUΕw¥ht¦»…wÔÓ]ÀÎx´Öp2ëKR€©âˆöìzR¦6 ½)!™fMÈxÉE"Ê»—¦qB8uÊôÎ*J}:Š(¢Š(¢Š(¢Š(¢Š)(¢Š(ªïü€5/úõ—ÿ@4«÷‡Ö³õïùj?õë/þ€j‡‚äS²ÿ¶Ÿú1¨“ïš¡à“ YÛOýÕ½Ú›šÞ#4RÑEQIš(¢Š)h¢’Š‚{Ë{õÒªýMA=彿úé•>¦¡–æÖH«õ5ÚÔ·gŠ »sšÁ¸ñ“³¥š„@qæk]mæf[e €ãyæ©<~läÉrÍžÙ5•3Í<¤ËpιBF–Y?{9p}ȨŎQepAVùî*¹·,¡ÛvU¹÷A•weO ÷m¬Õ˜Iv;Ô6$ý¾>v? êEvÓu¢–EQEQEQEV¿äS½ÿ¶ú1iÑýñX^6ÿ‘N÷þÙÿèÅ«Úü€4ïúõ‹ÿA÷ÏÖ¯hGþ$:hÿ§X¿ôWé*ýRÑE%Rô¥¢’Š(¢Š)(¢Š(¥¢ŠJ(¢Š(¢ŠZ(¤¢¥-´QIEQE¤¢–Š))h¢Š)h¢ŠJ)(¢ŠZ)i(¢E´QER)>”QEQš(¢ƒ8¤$ãAÎ8Ó ŒJw¦3²Œ”8ïL,ëÉSŽôå`Ã#‘O2äƒORÈéN¢”RšSKBõv¤?tã­súgüŒz—ÅýkAñ8Õû_Ö¹ï ³¶§ª™ScåsÓ“[§­nO¾zÑIG~)“µ&i¥%!Í'oz_zÍ(¤¥Í-%'ozNœQAiùçp cûSj:½<¹*ã§¹ã¹ãÊJJr©fFI¥'­(8i´”00y¥ â€qB±^””™Å¯4QIEQEQEQEQEQJ84QIEQEQEQE½(¥”RQEQEQJ)h¢Š)”QV#ÿV½OÜ©¡s¢Z`ƒò•lò9u†G5 E¨íŧi¹bFi ±NÙ¤]Å;fœ3Þœ)ÔêZ(¢Š(¢Š(¢Š(¢Š(¢’Š(¢T5ïùj?õë/þ‚iWï­P׿ä_ÔëÖ_ýÕȧeÿm?ôcRÉ÷ÍPðGüŠv?öÓÿF5nÓkvŠJ(¢ŽÔÙbŒ»rM6GXлrI¦Èëb“\õÌóÝÜy |‹÷ÓÞ¹;û‰µ Â㘗î/õ®rîyonw(Ìk÷WúÕgãæSšªá€ù”Ô,ø¨[ŠŒôÅ0ôd¡ ¤ÜT‚3I¤š–E.›ÝO ²ç9§Xg­K ð àôÅKwÚ9.•àw§Ú[KxåbB@êiÖÐÉu!XÔñÔÖݵ²[¯Ê>b95ÓYYGi >r95»kk²£æÇ&¦«UbŠ(¢ŠJ(¢Š)h¢Š(¤ÍQKE-%”RQKKE%QIEQEQE Ö°Î¥dN{㚆{H.T‰¢V÷Ç5ö°Ü KŸ|UFÒ"pT»íì=+<èWÌ}½‡¥Q:4g#Îm½‡¥ £Û†Aó£÷¥mÍ  À™I;ÒÉ¢Ú4 6|ÁÒNôèt›hÙnæ‘ü*K}Ò-ŽSs/sÐþ,:]¬aÝÌ:žÇð«Ê¡T´B(UÐ ¸ªB¨À---QEQEQÒ‚qÖŠ(¢Š+ Æßò)ÞÿÛ?ý´øÿÖ Âñ·üŠw¿öÏÿF-^Ð@ÿ^±è"šÀosW´?°4ïúõ‹ÿA¡E_¤¤¢ŠZ1EQEQEQE´QIEQI@£cœúQŽh¥¢Š(¢Š(¢Š(¢Š)h¢’Š(¥¢Š(¥¤¢’Š)ih¢Š(¤¤¤éE--QÚŠ)(¢Š(¢Š(¢Š¢Š(¤¢’Š)ih¢’Š;ÑÎhy§¢œ:Rö5Îé ÿíDü}?ÀðúÿÄÓT#¦ÿêkžðÊÔu\.ÏŸ§§&·Û;«põ®ƒ¡äÑÚÑïIÅ%6Ðy£­ ´QŒ wJ>”cŽ(Å% Ò~” Féͤ#µ7´Sºýhê=èÞ’ŽôÈ¥vƒÒ”ð)i(ÅÞéG~i¤óGÖ“ß8¦ã&Œ~4““J:óE/¹ãŠúÔ‡œsÒŠ8ÏÖ‚8â“<ƒéKøÒ‚p2y‡®)3ØPy––Š(¢Š(¢Š(¢Š(¢Š(<ÒgÞšBy¤À P3Žô›G>õG^ÿ£ÿ^²ÿ蜼0úÕtc@Ô¿ëÖ_ýÕÿȧeÿm?ôcS¤ûæ¨ø#þE;ûiÿ£·©µ»E%³5«€±-²òÒõÇaY!º n-•°òñÇaYzÕÎØEº^8ô¬‰ Ú¹õM£å¬„jü´ôBËÈ©T|¼Š™GËȧª3*€[À¥ÝÅ,ª3ëÅûœñI 铞*q±Ûû¦«.U‰*$1ÇJ­(Ê]ºç þtÓ´•Ï|mΘãné[±Æ_­M /s'¹ûky.œ,¶y"Ÿ páb'œWKm†Àrq]œ omí€äâºkXD6È…@`9⦩êj)h¢Š>´QEQKIIE-””QKEQE%-´QEQE-””QŠ(¢–Š+˜ñõ­ÅÞ‹ v°K;‹•b±!bÖçë\Ï­n.ôXcµ‚YÜ\«‰ 6·8Z’2rqÅRøycwgý¡ö«Y ßåíóc+»³Œýj—ÃË«?íµZÍÿ/o›]ØÝœgê(”ƒŒk³®Î£¢Š(¢Š(¢Š(£8¤'„âŠ:ÒŽh¥¢Š(¢Š(¢ŠÂñ·üŠw¿öÏÿF-:?¾+ Æßò)ÞÿÛ?ýµ{Bÿ›ÿ^±è‘¾ñúÕýþ@wýzÅÿ  ¿IW¨¢–Š(¥¢’’’ŠZZ)(¢–Š(¢–’ŠJZ)i(¢–Š(¢Š(¤¤¤¢ŠZ)=E4ƒœƒøSX6Að¥§S袒Š)h¢ŠZ(¢Š)(¤¢Š)h¥¢Š)(¢Š))h¢’ŠRÑE%QEQGÖŠ(¥¢–’’’œ;RŽ”£¥sÚ9ÿ‰æ¡þÿõ5ƒáãKSÇ÷ÿ©¬øšê¿ïÿS[ÄüÕ¸x­ãíAúRsLïAëAëKÖ“µÞ”ÐZJZv(éJ:QŠCLúQÐô Òàö¤ö¤£Ò;QHsŠ\S©NqíH9ïIŠL S†½%(4¹Å(#4¸4§ëIœŠiëœÓ{õ çéGõ¥ã—ñéA®8£­'ZpsKŽ9£¨£‚94Þ§­ éÖŽÜt¥<ôéNǵ ÇC“G§ZLÁÉ£éFyâ”gµËøc‹ûÜçýaþf¹ÏŸÞj$çýgõ5ÏxkþB§Sóæk¦#œWDzâºFi3MëFM'QHyúS[ÐPhíJ;QÚ¥)>¢’—Òx¢“€("’“¨£ëHh¦ƒíJ9¥Ô”f“=¨ïGz)ÞØ¢—Š(¤ïŠBp1AÀ ŸÆ˜}zæŽÙ ýÚ^ãÖØ÷¤Áæž8´g¯¥À9æoÖ¯ç@÷üé¤äÑž)~œÒý)"—¨ëH—ŒFõ4ÉÏ4„fÈÅÿÙÿØÿÀÿÚ ?àN08ç'©® Ê•PªAæ$õ5À§8ç'©¡°X•.xäÐåK±E*¹à’9—væA„¡9"›L¨è¢Š{¸• ð ɤ©rP\ð ÉëOm¥ŽÐBç€NHÊŽ­ò¶G­Sh¢ž¡v[t´QL¢Š(¢•”©ÁëE”QNpñøÑE&8ÍP29QIEQEQERŒfŠ)(¢Š(¢Š(¢Š)AÁ¢Š^h¢’Š(¢Š(¢––Š)(¢–ŠQ@¢¬Eþ¬}jÄ_r¥Š½wH!´›pyù¯]ÐØ6‹l= ö0m ذ^ |0+D(bI=(cŒŸJCž˜ â•NTR¯ÝìS©ih¢Š(¢Š(¢Š(¢Š(¢Š)(¢Š(ª÷ü€u.åÖ_ýпx}k?]ÿ¥ÿ^²ÿè¨ø#þE;/ûiÿ£–O¾j‡ÿäS²ÿÿèÆ­ÚmoW=â cŽò`ÄÈS\ÇŠYEÝ»NÑȹÿ06OÊ9ªAÜ <Õäƫ½cëW×¥Zã=jÏÓù&”gvhç9¤ÝÇZF'šF&ê3¿œŠhuƒŒ‚)ñj´¤&?7lUfùH`y=*»ðCgžÕ¹g†鸌“]^j¶ÖÉ<Æcë] Œt$0ŽMXlUŠ(¢’’’¡¸¹H i[¢Î ¹»ŠÚÝæáT~u ÷ÃHç…#Í|KÝ“øÓ޹˩µ)‹Ü"þô÷®næâ[é ˜b?á_Ozj¢…Ú[>œT‚»³Q¬aF7f¥E!Áì*T"¤QŒTÌ@ÁæžNFE8œr3PÜF$O˜>€ÔS uËdý G"†lŸ¥T’Íe› Ø´{Òui4u£¶(QF?•Œõ£¨ ûRéIúQFM;ñ£µ/4}(¤”@†9nGjŽÃàÒB»_¬íߌ ²#Ü8ëSùyõ! Œ÷Æ)OÌ|Üt¨ØñM æ‘ø8Q’x¤*IXñHTçdž*{K3¬“.Õ^@õ­;I\,· µS=jÝžšâe’u¯ zÖ®+vµ¨‚Š)h¤v¥˜à¦šì¨¥˜à’i‚‚IÀkêwÔd; Xîûšåu;÷Ô¥) "Ý:üF¹ëû¦¿¬dˆW¡Äh2Ý´vª¥³…#8ªA·8ª-àžW¦¼÷¦Ž¼Ô‚B½ÉéVSäUÀ½juTp3ëJXŽO\óM“9%º÷¦°ê[¯zG"ûž• d¯“Ò¡lãšÓÓ­DjeuùÜ~•Ñè¶f‡Í‘xãô­½"ÓÈ‹ÍuùÜ~•zµkB–Š)(¢Š)h¢ŠZ(¤¢’Š(¢’Š)ih¢KE”QŠ(¤¢Š)¬åNLgÁÀR~”Ö|`Ÿ¥5f0óëíH$ÞÀ'>¾ÔÔ™d*œõö©*J’Š(¢Š) =…4ç°¤%» P0=é@À÷¥Q¯z)h¬/ȧ{ÿlÿôbÓ£ûâ°¼mÿ"ïý³ÿÑ‹Wôùißõëþ€)ï­_Ðä§׬_ú«Ô•~Š))h¥¤¢’–ŠZJ)3ƒKE”QKE”PhšLÐ ´QE-RQEQEQKEQKIEQIH'œšh\19<Ò†'$æ–KE´´QHi ! QIÍ---%QEQFh¢Š)(¢–ŠJ(¢Š(¢––Š)(¤¢Š)Gj^ÔáÎ+ŸÐøÔoqÂù‡ùšÁð×ü|j8àyŸÔÖ‡GüL5NÃÌþ¦·&·ZÜ#$ñ@éH:Rv¤ Ð8ëI׎”ƒ¥.E.1IMš_­-)ÏJJC×)(ÆhúÑIëE.qÒŒñF=)>”g4cµJ>”c½Š_ÆŽhàRRGáH=i9â×§Z3žÔünl÷£¯^´‡ãÐGZ)ÇqÖ›ß@8üi¼ƒÓšQõëKÓ½8sÏz'CGÒ’‚r)3Æ éIÔj0x½P×ÿÙÿØÿÀÿÚ ?óúóúóñEò›_kœ~´QL¢Šp#cŸZ(¦ÑEQEQER‚Täv¥èx§´§"’’›ERƒJ1ÞIIEQEQEQEQEQE¤bŠ)(¢Š(¢Š(¢Š(¢Š(¢Š(QKEQEQJ)Eb?õCëSÅ÷*XºW­h ?³ *Xï^¹áÕض¤d žµëþQý‡hF@ÙZG¨¦zÖõ Œýh#4½è¥£ëKIœQ1F@¥¥¢Š(¢Š(¢Š);õ¢Š(¢Š(¥¢Š¡¯ÿÈQÿ¯YôJ>ðúÕ {þ@—ýzËÿ ÏðOüŠv_öÓÿF5,Ÿ|Õȧcÿm?ôcVõ2·OJç5`Ë©:/G×+®FcÔßòÐ\ö«ŠõŠóæj´;ÃIȪ±d1æ¡‹ ã<ÕØC)ݜըw)Þ[8éV",­¸œÔÊÊFE) ôæ— ô ®zsM ã=i¤šÂ Ó¶à~AÅ]ÑbIgfa’œŠ³¦F²Ìņvò+N·«_­RRQEQÚ²õ›¬¡²I’AÉÂ+Ä7û"6Q‚d”rGðŠÊÖnʧÙc¼ƒ¯ ª$ù*‘¨è+EU¥e Øª¾” 1<íã½;hbyÚ1OÛ¸ðqÇzG„´ŠÀð:Ò4вžiJ~´ä>;Š•nÇqR °xÅ)o®zûR•Ë~”ÓÓsO±íŠqš±¤Àg¾RyT9”uïE)£¦(~4‚ŒñKŠ\AÁ÷£úÒRÿ:Bph¤aJh4sŠg=:QÓÚ€1ÒÆAàqRvÅâ›Ö‚pÜQÎiÝ &9È¥À ç9—¡¤4½3Ö—¾¦r) Ži„`w÷£¿z\`qøÒíK¸8Í`‚këÃkÃQK¶­Rçš(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥8ãõ§00{óJN­%6’Š(¥ìip0Nyô£ñ¤¤4QEQEQEQEŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢Š(¢Š( \ÑVcÿWSÇ÷*HóŠõŸ höÜçå¯[ðÐ#Bµçøk×ü4Ð-†´ØôÅi·lV›ž´¤qšSëN=(ÏqE'oZ(£¯4´´´QE¢Š(¢Š(¢Š)(¢Š(¢Š3T5ïùj?õë/þ€iWï­gëßòÔëÖ_ýÕÿȧcÿm?ôcQ'ß5GÁò)YÛOýÕ½M­ÚÌÕ!(MÐ]øaYå» ]ªî0ËYº¬L Ü(Ü`ŠÊ„eÉdòÉè Îkç%—a==k"93!%v“ÐÖ¬#`àœŸJµv'š²Øõ©L€ *Rx÷§çŽ)¯1B0y5¶Ü{Ó±z½¥îxÚCŒ1À­m ’òc€kCHB#w aŽ_­ZТŠ%Ó.&KxW?*ŒÔ73¥­»Í!¨ɨç•`‰¤s…Q“Xi–y.eÎ÷õì;W$î×\ÉdèaÚ¹Övšw¸b~~€öÒg˜2_‘M·J³ ¹¾jÌj?„`÷¬*Œ Y C)å5ÌIíÞ˜¬¤’Ý}i¡ÁÉn´ÉI Uzž†˜Ã'jžOÓ“´u= lÚZ$1!þ 9"º{$¶†?ïÉë~ÒÙa…q÷±Éõ«B­Šœ u9¢–––Š(¢Š(¢’ŠJZ)i(¢—½”QKE :Ðh&’ŠLÒÑKE”QE%! Ð(hšZZZ(¢Š(¢ŠAÀ¤'ZBHri ÀàdÒsƒ@'8#…'£ Ãñ·üŠw¿öÏÿF->?¾+Æßò)ÞÿÛ?ýµBÿ›ÿ^±è‘¾ñúÕíþ@oýzÅÿ Š¿IW袎ôQGZ(¢Š)i(¤¢Š(¢–Š(¢ŠJ(¢Š(¢Š(Í&hÏ4RÑÞŠ)i9œÓyÏJZZZ1IE´w¥¢ŠJJ(¢Š)ih¤4†“4€Òg&ƒJiM(é@ QKJh¢“4RQERHâŽÔéJ){QE (¥¢ŠJ(£½RÑE%( t§/Qõ¬H¸º8ÿ–§ùÖ†:Þœpe?α4/u{É[‡šÛ=kgÖ—QÛšoN´Öç½!¥í@àæŠ3KÔô¤ïAç £¥ ž8ëMïGJ8¤Ç8¥ÇëG­)94‡ÚŽÔ™Å”q‘NÁÅÍÇ”´„“Ú€h “ŸjoSIÔæBŒŽ8£¨ãŠL äSéyåni JOjæ—‘Á¥íFhw¤ÏN('¦zRPzPsIÛœQß)¼çµ&<;Rޏ¯ÿÙÿØÿÀÿÚ ?óúóúàÅPIc“N`ädö¢ƒ€N9¤Áph¤÷¤¢Š(¢Š)@ÉÀ¢ŠJ(¢Š(¢Š(¢ÖŠ)xÅP ÉÀ¢ŠJ(¥ €­RQEŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŽôQEQEQE-QEQE´Uˆ¿ÕÔÑ}Ú’.µë>]º,w5ëžRº ·ûµëþxz×éWÚ=øÞIǧ}“qù‰ü*ùLYÐS—*Jÿ8Í9r¤¯lqšrðÛIÎG§ð¼S³Oè)ih¥¥¥¢ŒÑEQEQEQIšJ(£µ%QT5ïùj?õë/þ‚iË÷‡Ö¨kßòÔëÖ_ýÕÿȧeÿm?ôcQ'ß5CÁ?ò)ØÿÛOýÕ½M­êl©¾2¼sê3Lš?6&N>n9ÉSÌB¼sÇ"¹Ùãû5ä09Ïb+‘½¶6wL ä Šæîíͬç*x9Ïb)fWàg4¿¼ \ÓðàŒ šI¥hF_ïº=i³Ü—æëØzšl³ycæöõ^5á>J38àú ŽÞ9ïN!VgèqÐS YnŽ"RÍÓŽ‚º‹h¼˜1Øsõ®ÂÒmkCøG?Zé-bò-’3ÕG?Z–¦©ih¤¢ŠZË×\-¼aÎ#/‡>ÕâfÛ§Çä.jÌ×È[˜áK€ßJÌk†ÞDí\ð”ÇÝíXÂ\‘»Š–$ËuÆjxsqïSÅËqžõ` ªGoçS¶Pc±ê}jWÊñÛ×Öš61LPj`ÆqPK" Ï@:Ô2:ŽsŒTnʼçëZtºy‡ Aâ¶´[H™L¬09¥¥[FàÊØb¥[U«E”QEQEQE--””RÒÑERRQKKEQIIEQEQEPE%!)G” Z)i3IIÒŠZ)h¢Š)i(Å%axÛþE;ßûgÿ£ß…ãoù/íŸþŒZ¿¡ÈMÿ¯X¿ôHßxýjö…ÿ 7þ½bÿÐ_¤«ôQE%QEQKE”QKKEQE%”´QIEQE&9ÜsIŠZu-”sE-QEQEQEQE”QKA¥íGj;S{ô¤ïÒu¥4RâŠZ(¢Š(¢ŠJZ(¢ŠZJ:QE”´ Z(¢š8¢ŠuRQE-(íKÚ”v¬-uÉ 2?ÃðÉâð‚9”ñéÍax{"çP9ÉÓñ­¼óíë[G­nƒÍ¦)¥4÷Å'z(ŠQEŠAïKíE¥#}iµ'zAH:P:QŒz\w4zSëÞJN‚šG¨£½-/^´wëIÞqïAÀ4¸ b“ÿ §û•¡Z£Þ˜ìC}Ó´w¦»s‚@ëMvÚs‚@§ç${ÓÁÎ)ÀîÆ:\RÓ¨¤¤ïKKKEQEQEQM9'ŠC’p)sJ(Š)hªïü€5/úõ—ÿ@4«÷‡Ö¨ëÃþ$ýzËÿ ¡àùìí§þŒj$ûæ³üÿ"ý´ÿÑ[Ô•½E%ͬW(V@yî*½í”W‘“#=Çj‚êÕ.â(äŒ÷’tYÖðJ³‚ƒ¢œñXoáë•»Ç8d¬¦Ñ®VçzÌ@iÇB2Mºy÷)êJ¾ß&éçÜPH4?1·M6sÔ Ö†àŒ$J­m[ÛÇmÇ …P1ïZC„‰@T•-IKE”QEVf¼ÊlÖ¹2¶µcø™Ôi†6]ÞcmÕ›®²=•“vö Xñ™AXfå<ô®f6deI ÐÁF)µ0½3Ž•môv«‘6ÖÀ«Hvž:Só¸g‘SœuÅJ~~ø¤$Ÿoz½üiY÷LÓÊ`N˜íTäÌóˆyª¤¹šQŸ¼:Šél-ÖÒÑ"P}Ozìtûe±²H€>§½t–ëgf‘àîïÞ¬ƒžÕiN{U•`Ý(¥§QE%RÒÑE4ƒ‘ƒ€:ÒIÛÖ‚H9Å:––Š))(¢–Š(¢Š@1E(QIEQE--RQE-””QE´QIEQEQGãEV¿äS½ÿ¶ú1iÑýñX^6ÿ‘N÷þÙÿèÅ«úü€4ïúõ‹ÿ@÷Ö¯è?òÓ¿ëÖ/ýUêJ½EQE-RQE--QE%QE´QIE´QE%QE%RÑE%QEQEQE”QKEQEQEŠ(¢Š(¢Š(¢Š(¢Š(¢–Š)(¢E%-´QE&(4RÑE¨¢“½(íJ:S‡lz×=ᬸZœHvíÆ*e~Æ)yp£§ñS$,X(üi²[hüimbÞíˆå¡=…M§Û™ï‚DAÌè)ÖqoD#—'°­ð0®¬p®’––€(¢Š(¤À¢Š0(¢–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)(¢–Š)0s׊NAëÅ&=h¥¥¢Š(¢ŠÂñ·üŠw¿öÏÿF-:?¾+Æßò)ÞÿÛ?ýµ{Bÿÿ^±è‘¾ñúÕýþ@wýzÅÿ  ¿IW袊Z(¢ŠLÑE-RRRQKKKEQE†ŠJ(¥QIE´QERQEQF(¢Š)(çµQHFG4‘ƒAŽi{bƒÓŠ>”v¥¥QIEQE-ŠJ)(¢–Š(¥ÅRw¢Š QEQIE--”QKE-!„dRiGAJ(ƒá¾DØaþu‡áoõ76ÿ‘N÷þÙÿèÅ«úü€4ßúõ‹ÿ@÷Ö¯è_òÓëÖ/ýUúJ½E J)h¤¤¢–ŠZ(íIE´Ræ’Š(¢Š(¢Š)(¢––Š)(¤Å-v¤¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š(¢Š(¢Š(£ôºÒg”Å/_ÂM!äñH<ñNÀíA£¾i Žùõ¥4b—ƒŠŒŠ;QžÔÆ)½‡­7¹çŠAÉ84qž´/?…(4Ïõ ZŒ÷¤àpE&}€§ Òöõ¥íëIØäSsŽ(Ïœ`R–ÊæœòEÊ“GÎzw£ž1@Æ)¼ãô¥ü?*QÀÎ?*vqÇOZBr==i¸ä‘ë_ÿÙÿØÿÀÿÚ ?óúóúóúyrT)ÆN)sÆ)sÆ)”””QEQEQEQEQEQEQER°ðr(¢’Š)sÆ(¢’Š(¢Š(¢Š(¢Š(¢—š@(sÍ----QEQEQHFE! ŒÐ Ç#œÒz(ÅRÑÞ¨k¿òÔ¿ëÖ_ýÒ¯ÞZ£¯ÈRÿ¯YôT<ÿ"—ý´ÿÑK'ß5CÁò)ÙÛOýÕ½M­Ú(¢Š)h¢’Š(¢Š(¢Š)(¢Š(9 æƒžÔQIÖ³n´¤vßTbIl÷¬‹ýe}öʨÇ%³Þ³o´Åvó UV'-žõ-¤±Èq°áã©®~[••R&ÛŽ¦±¤·“…HÙ_¶GSVcÒndd òwn§Ú®Ã ÝJë»ä\î.Ý~•j=å™w £;‹µ±gc ¢Ÿ,rNI5¿a§ÃaŒ–ä±­«;8ìÑ‚r[’MY«uc­èç4QEŠ(¢Š)h¢Š(¢Š(¢Š(¢Š( QEQEQEQíG¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(¢Š(¢Š+Æßò)ÞÿÛ?ý´è¾ø¬ȧ{ÿlÿôbÕý þ@oýzÅÿ  FûÇëWôùißõëþ€*ý%_¢Š(¢t¢Š)(¥¥¢ŠJ(¢Š(¢Š( RÑEQE”QERÒQE pN40-Í7 ¶)Ôêp¤¢Š(¤¢Š(¢Š(¢Š(¢Š)3IE--QE-¢šH=9¤$!æŠ(&€3F3Ö“¥Èp)r´´´RRQ@¢ŠZ(¤Æ)h¢œPh¥íKÚ”œ Ö…¿ÔÊ顬 ôkƒêæ°|,2—,{½oÒ¶øÏº:)1ùPi=¨ô£ÒÐ);ãÏJi9ê)Î) ;ëÅ!ã“A¤#½ =(:׆W†×†‚AÈ¢ŠJ(¢Š(¢Š(¢Š(§0yçÒŠ)´QEQE¤`àÑE•9QIEQEQEQEQE.N1J^h¤¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥¢Š(¢Š(©¢?.*høÏ5ëÇö,ô¯Zð¯ü€mþ•ëÞðý±†µØcš×>µ¬hÔPhôÍ-´ƒ4sšAšZZZ3E´QH¤ž´ƒ<Ò ÷¢žôRÒÒÒQE¢Š(¤ªïü€5/úõ—ÿ@4/ÞZ£¯ÈRÿ¯YôT<ÿ"—ý´ÿÑN“ïšÏðOüŠv?öÓÿF5oSkz€1E/j(¤¢Š(¤£½´´QIHAÈæƒëE--RQEbŠ(¤Ú3œr(ÀÎp2=¨Àô•-™çQKE¤Î(¢–Š(¢Š(¢Š(¢Š(¢Š(¢ŠJ(¥¢€i(¢Š(¢Š)h¢’Ö“½RÒÑEQEQEQEQEQEQEQX>8 xRôw;?ôbÓ£ÿX+Æßò)ÞÿÛ?ýµBÿ›ÿ^±è‘¾ñúÕýþ@wýzÅÿ Š¿IW袊(¢Š(¢Š)(¢Š(¥¢ŠLóIži3Î)iizÑE†ŠJ Z)h¢Š(¢ LÒ’ŠZQš(¢–ŠJJ(¢Š(¢ŽôRPi ŠâÒ qÅ!Í4 b” RŽ”RÑE¢Š £¥%%&hÍ-(¥ RÑE¨íGjJ(¢ŠZ(¤¢Š)GJQÒ‡û¼V…Çî%üÃX>ì³äóæÂð + Èn¾enô5¹ŠÝÇ&ŽÔ™Á£¡¢ŽôRfÆŽâåGò¤?N(¤£ÓÚ›Žy4üÑŸz^Ø£¶(ÎG­(ͨëÒ“Šé3ŠÅò¥ ö¤Ô¼Òçâ÷þûOþ&“þî“ÿ?¿÷Úñ4y‡ÚøWšOüü^ÿßiÿÄÑÿ ÷IÿŸ‹ßûí?øšO5½©?á^é?óñ{ÿ}§ÿGü+Ý#þ~/ï´ÿâi|Ãè)á^éóñ{ÿ}§ÿGü+Ý'þ~/ï´ÿâhóµ'ü+Ý'þ~/ï´ÿâhÿ…{¤ÿÏÅïýöŸüMcz _øWšOüü^ÿßiÿÄÑÿ ÷IÿŸ‹ßûí?øš<Æô¼Òçâ÷þûOþ&øWºGüü^ÿßiÿÄÑæjOøWºOüü^ÿßiÿÄÑÿ ÷IÿŸ‹ßûí?øšO1½/ü+Ý'þ~/ï´ÿâhÿ…{¤ÿÏÅïýöŸüMiö£þæ“ÿ?¿÷Úñ4½Òçâ÷þûOþ&4ûQÿ óIÿŸ‹ßûí?øš?á^é?óñ{ÿ}§ÿGš}ð¯4Ÿùø½ÿ¾Óÿ‰£þî“ÿ?¿÷Úñ4y§Ú“þî“ÿ?¿÷Úñ4½Òçâ÷þûOþ&4ú ?á^é?óñ{ÿ}§ÿGü+Ý'þ~/ï´ÿâhó[ÐRÿ¼Òçâ÷þûOþ&øWºOüü^ÿßiÿÄÐe#°¤?t?ãâ÷þûOþ&øWºOüü^ÿßiÿÄÑæ· £þî“ÿ?¿÷Úñ4½Òçâ÷þûOþ&4ûQÿ ÷IÿŸ‹ßûí?øš?á^é?óñ{ÿ}§ÿGšÞ‚øWºOüü^ÿßiÿÄÑÿ ÷IÿŸ‹ßûí?øš_1½©á^i?óñ{ÿ}§ÿGü+Ý'þ~/ï´ÿâi<Óè)?á^é?óñ{ÿ}§ÿGü+Ý'þ~/ï´ÿâhó[ÐRÿ¼Òçâ÷þûOþ&øWºOüü^ÿßiÿÄÑæ· ¤ÿ…{¤ÿÏÅïýöŸüMð¯tŸùø½ÿ¾Óÿ‰£ÍoAGü+Ý'þ~/ï´ÿâhÿ…{¤ÿÏÅïýöŸüMkwøWºW{‹ßûí?øš?á^é?óñ{ÿ}§ÿGšÞ‚øWºOüü^ÿßiÿÄÑÿ ÷IÿŸ‹ßûí?øš<Öô½Òçâ÷þûOþ&øWºOüü^ÿßiÿÄÑæ· £þî“ÿ?¿÷Úñ4½Òçâ÷þûOþ&5½ð¯tŸùø½ÿ¾Óÿ‰£þî“ÿ?¿÷Úñ4y­è(ÿ…{¤ÿÏÅïýöŸüMð¯tœÿÇÅïýöŸüMk{Qÿ ÷IÿŸ‹ßûí?øš?á^é?óñ{ÿ}§ÿGš}/ü+Ý'þ~/ï´ÿâhÿ…{¤ÿÏÅïýöŸüMkz OøWºOüü^ÿßiÿÄÑÿ ÷IÿŸ‹ßûí?øš<Öô½Òçâ÷þûOþ&øWºOüü^ÿßiÿÄÑæ· £þî“ÿ?¿÷Úñ4½Òçâ÷þûOþ&5½ð¯tŸùø½ÿ¾Óÿ‰£þî“ÿ?¿÷Úñ4y­è(ÿ…{¤ÿÏÅïýöŸüMð¯tŸùø½ÿ¾Óÿ‰£ÍoAGü+Ý'þ~/ï´ÿâhÿ…{¤ÿÏÅïýöŸüMk{Qÿ ÷IÇü|^ÿßiÿÄÔð¯´áœÜ]ŸL:ÿñ5–pOÊ„v<Ôgáþž]°õ£ÿe§/ÃÍ3?5ÍßàëÿÄÓ–I?‹gà =~éŸÅsyô¿üMu6–égg´eŠCÆ¥ºi ÉÏ­u–éig´eŠCÆ¥º*šŠšŠ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ãÑŠ8ïM‚ ZZZ;QÒŽ”´QEQEQIIERP3œQKGz(¥¥Š Š ŠAH)´QEQK@P-(¤¤Å¢–Š) dô¤'š sFá€sņ3‘Š7 g#RûÒñÖŠ))h¥ïIEè$*–=ɤf …@2i²±–=5…áû©N7šÃð ÿEœóËšÄð±ÌW'œâ·}ksÖ·=qGzJ¤£½'QÒ”}hïA#¥ £Ú—Þ“µé4‚;Ð:Ð9=(ŸÆŒÒt8gž);Ð1ž ¢Ž§¥ÒRäw£¿½/JAÁõ¤úÒcwæ”.G4¸ïHp;f—ô4/½('ךE8úÒg­8ò(ä1§ ƒÍ&þ¿JLsÖƒ‘ȤÈç½Z1×?ÖÔuÍ.08£ƒÍ!àô&Œœ`dм/sH@ÇJ`™…¨œÒg×½ŒsG挎”QÏzNyÍ÷¥ãŠ;u£úÒߦhÏRÔ€Š\ñÅ/¸¥#œÑ’=è=(v¤ë‚i1ëFSE'4gh¤îÎihíïKü¨ïíG­{ÑÖŒfŽGøPh¯øR`“ŒQÉÅ"‚M8ÇÞ—¸¥ çž”˜9sÍ@âŒLü¾ôùxâ€0sH2O±¤œ Sëšïœæ‚8Î)ŠNyÏJQô¦‘Áã9è+ÿÙÿØÿÀÿÚ ?óúóúóú(¢Š(¢ŠRI9Ï4QIE  ô¢ŠJ(§%Kƒ­Sh¢Š(¢Š)X–9=h¢’”GZ)Tp:ÒQ@84QIÞŠ(¢Š(¢Š(¢Š(¢Š(¢”QIA¢Š(¢Š(¢Š(¢Š(¢Š(¢Š)h¢Š(©céRÅÒŸZõ? hPÎsÒ½[Âd®ƒo“sÓµz×… _Ûîäôí[RJ#* 帶%•c* 帯$Éð)ÛŽðÄã­.I#Ž;Ðæ#;ÑŸ›§Î)Ôê(£µQKE 9¢ŠZ(h¤¥¢ŠNâŠh¢Š\ÑKšnAàR t¤È4´´´QIE´QIE´gœQEQFyÅ”u¢ŠZ)h¢ŠJJLQK@£½'z;ÑA£4QEƒA¢–Š)(¢Š(¥¢ŒÒQEQE¢–Š)(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢ŠLóÒ‚qÚŠZ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š£4f—4´´”†ÑE!¢ŠZJ(¢Š;QEQIE´QIERÑEQHh¢”QKKKFi:ÒQ×­QIÖŠ)h¤¢Š)(¢ƒÇZ惀:ÑE-¤Ï4™çƒE-QE2à9·p˜ÜAÆzR0Ý9S×¥2pL,2AëÒ°|#¸ZH#y¬çìsƒÓÌ8¬?-n鿊èGZÞÇ&ºæ”ÐsÅ'ZoZ£{RŸLÒ~4‡ž™£4½p1Hy=(É ô¥¹ òh#×¥#{Rwîi3ÀëF84vëF(¢Žô”éM.=èç4‡œÓNM.Zk pw4vîi@8À4§ÅŽiÄÍ'q“š1“Öc=sHWß­(ÊŽ™§Æ¡‡lÒö<ÑÀ?JkÒò)'¯Ö—õ¤è3Ö‚ü=è#‡½Ïœt<{QÀ R åGjÇ=ÏúR óКQ…9ï^^^EQEQEQEQEQEQESˆ Aä{ÓŠ €Ã#ÞœA$#Þ›M¤Áçš(¤¢Š(¢Š(¢Š(¢Š(¢Š(¢—¢ŠJ(¥'4QIEQEQ@¢Š(¢Š(¢Š(¢ŠZ(¢Š(¢Š–>•,})ñýêõO þ÷ בڽ_Âe¿°-ÁŽzv¯Zð›7ü#öû€Ç<ŠÛ 1‘Ó5²Ê¬F@$r3Ú¶J+9¥< qÎ8¥lãŠP(((ïKKGzAœšL~ ZZ(¢Š)(¢Š(¥¢Š(ïIŽsIŽsE-…AæŒÑ€iiih¢’Š)h¢’Š)h¢QE-ïE%QE´QIEw¢Š(¢E%QEQEQKEQE%QA Q@¢Š(¥¢ŠJ9¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(¢’Š)h¢Š(ÍP(¢Š(¢Š(¢Š(¢ŠJ;ÑKEQEQH(qE-QEQEQEQE%RÑE”QE (¢–Š)(¢Š(¢Š(QÒŠ)(¢–Š) -Rf’ŒŒâŠZ(¢ŠZ(¢Š(¢ŠLÑKžh¢ŠZ(¤¢Š(¤¤``ŒŠF†ȤeWa‘J8v¥þ”@b{š’;Ò“Üõ¥¥¥ÅRÒ:+¡VRG­îž G><–ÈcœÖ…?ãÑÀéækÂ$}†`:ù‡šÃðÝi?9ùëxqšÝÇZßÎ ¢¥Ñœýi:ÒhÎ){Rã¾(ê´”t éF3HsÖŽsš3HIúÒ`Ò{Rž´€ö£4¤Ó»})qH æ“}häRdžÜž´dæ“<ñK)(ì)¹Î)ÜÑíšpàûQÏ@ipG£’p 5AÞð£°Èæ”u¤É8&Œò0x÷£<{ÐIäŠBpyèisœPFqžôd€èiN9Ï=hÁ#4Óè(ã®qš\ò(<ƒœsH9挂Ä㥠;XFhÆ/ZkzŽ•ÿÙÿØÿÀÿÚ ?óúóúóú(¢Š)[ðr(¢’Š(¢Š(¢Š(¢Š(¢Š(¢—µ.põ¢’ƒŽ1øÓŽ00{ÒñÆ?Jm.J‚´ àäQMïIEQEQEQEQEQE(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¥QRÄ8©bøº×ªøDĆ^kÖ|"?⟃ךõÏ ȽoëÍmwk]IÜA®¤îÁÞ•ºdR·àiGJâŽô´Q‘E-RQH}ihÅÍ%´´´QERQIGAGAG´RÑE%%´QEQE‚Š)h¢’ƒÒƒÒŠ3Û½&FqÞŒóŽôRÑEQEQA¢Š(¢Š(¢ŠJ(¥¢Š(¢’Š)hÅ”QKEQE%QGÖŠ(¢Š(¢Š(¢“4(ŒÒÍ-´QGz(¢Š(¢ŒŒâ“#8Ï4QKE(¢Š(¢Š(¢Š(¢Š(¢Š(¢’’Š^ô´QEQEt qGJ(¤¤¢––Š(¢ŠJ(Í-™¤¢–Š(¢Š(¢Š1EQERQEQGz(¢Ž”RÑÖŠ(QKÞŠLRQERÑE¢Š%%%QE--”†ŠZ>”RQÞŠ(¢–—4QIKü'žÆ‘¾áçS.?Ô7Ò°<&se'òÐô¬?œØÌ顬?læãþZ•¼8·;šègŽ(9¤ö¦ŸP);f“Ô½ºÑþqKÉç?…Gµ=èÏ=èúþtuïŠCÍŽÍ)ô¤ÀÎ)Zh'uúÐ)ÜQCôÂsÉ õ£¢€xéA `QÎ1@Òuà(#±¥pixw¥à :óÛµpxƒ®x¤ÉœR–8¥<œ _nôc æ˜qÏ¥±Š:Oî”dÖƒ€ ÝM#y¦… rsMÉaò¶=sA ñ¡²G×Ö¿ÿÙÿØÿÀÿÚ ?óúóúóú(¢@©!Ù¿÷ŸwQL=N(¢’Š(¢Š(¢Š(¢Š(¢ŠPpr(¢’”ãŒS‰=ù§œc4”ÚmQEQEQEQEQEQEQEQEQEQEQEQEQERÑE´µeæ§A…"qŠõÚ#ë^«á­áè=s^±á-­áø×5¶«´c5´£hÆs[J6Œf”惚CœûRâ–”(¥£¿µ'9ö¤ç>ÔRâ–Š(Åé;ûRsžœQKKE%RÑA¢Š(¢–Š)(¢–Š)†’ŒÑE---%QE%RÑEQIÞR” ZZZ(¤£<Š(¢Š(¢ŽôRQE-QGQEQE%ŠZ(¢Š(¢Š(¢’ŽôQE´QIEQHERF & RÒÒÑEQE´QŠJ1EQE”QKEQEQ@¢Š(¢Š(ïEQEQEQEQEQERw¢Š)(¢–Š;Žh¢—µQHEsIÅQFh¥¢ŠJ9¢–Š(¢ŠJZ(¢Š\QE”QEQE´QERQIE%(¢ŠJ(¢Š(¢–ŠOzN”˜ç4¢ŠQE(£½RŠIA08 ´•<úqMœf ªžŸJŠë›i<©éXžÿazÜÖ/„yÓþºŸéXÞçNãþZé[½+o¥oiàQíIë@£¿J@;âžØ¢”ŸZ1šLzóH<Ó³Ž1KÒ€=M4ñÎ3HyçRŒzt d‘IÎzQÎG¤ŒóFqHzsH}Ež´ÒNx¤ÖŠv21J(ý)sÈ óíFq‘Š^¼æŒqÞŽØäQòã¡¥'Œb†È8¿…!bqÅ)÷Æ=)3ž£ŠQƒ€&1Å(àIŒϾ)¼íM?6(=ˆéOcŒÒ—ž¹à{R“õ„ óœPrO¥“ÓŽ´¼þ”21ÔTgp8àŽÔ× >”‡8à)À û÷æg“×ñ§ƒÎ;÷æ¼2¼2¼&Š(¢Š(¢œH*#©õ¢ŠmR©ò2)êŒÇ 8'j’4yKè94à¥Ê 8'ÒšIc“Qše%QE(š(¤¢Š(¢Š( QEQE. RQEQEQEQEQEQE)Æx4QIEQEQEQEQE¢Š)È»˜S‘rØ¥'eŽGªÏZ”Ezwƒ[:#Üרø=³ Â>µêÞlè0ƒï[`“!ÏNÕ´3¼ç§jÚ,sÓµ+t¥n”§¥-—½´QEÅQš)4QJ(QE¨¢–Š(¢ŠJ)(¢ŒÑE-QEP3Ži>´”A8£µ”QKKKIE%t¥íE”QKE”QERÑE%QEQEQA¢Š(¢–Š)(¢Š)(¢–Š(¢Š(¢’Š)hQF ”QEQEQE-QE”Q@¢Š(¢–Š(¢ŠJ(¢Š(¢Š(¢Š(¢Š(¢Š(ÍQE)3Eâ–ŠZ(¢’Š(¢ŠÅ(Å-cœæŠ(€`P(¢ŠNô´RÑEQEQEbŠ)1E´”QKE¥QIE´QIEQEQE”QEé(¢––ŠJJ(£4RÑÞŠ)zRÑEC{rÙL’¶Ô(rsÐb™>Óm(oºQçb¢ºÚJáJO¶+Â#Yç?¼?Ò±¼#ŸìÉ?롬 ý!ÿ¦‡úVöxæ¶ùÍn~´Þ 4qAÒtïAçÅ.1Ó¥~G ¥ê=(<Š1IÏaHsǽ ô£Å’}©9Îx ŸÌP:3žôƒšLqAÒç>Ô‡úR^ø úž”½¹¥#&€qF2OÒ¾ÔsKï@Éö ›œP½OJ0~´rO½/AëÍyî1JGnx¤ž´¸õ¨$ŽèÊ Lªž…sLt˜¸+"…î¤+!`UÔqVFqÍKO¥¢ŠJ(¢Š(t QEw¢Š(¢ŽôRRÑKIE%-´QE&(¤¢ŠJ>´”P)h¢Š(¢––Š(¢ŠJJJ)MQKE€æŠ(¢ŠZ(¢Š)(¢Š(¢Š(£4†Žh¥¢Š(¢Š(¤¢ŠZ(¢ŠZ)h¢ŠJ)(¢Š(¢Š(¢“v¢–Š(¢Š(¢Š;ÑE¢’Š( QE†Š)EQEQEQEQEQGJ(¤ê(¢–Š(¢Š(w¤ç4QKEw¢Š(¢’Š)h¢Š(¢Š)(¢–Š(¢Š(¢Š(¢Š(Q@ëIE袊(¢–Š)(¤¤lí;zÒ6pqÖƒœqÖ”gv¥RÑG=© %QÚ’€2yê)G½(4´QKGz(¤•à‘¥AúTw#6²‚ ý*À>É( T‚Ò±¼+ÿ æÆ$5•á\f7ù†³<.q¦¶ü´5¶@5³ŒÖÏzCÒûRuç½"û ¤ÆiOZç4§ÒÆOz1Å ½ã¯Z1ÏjZ1žÔÿÂ÷½é óÖ”ýhïŒÒÙÞ§4‡Æ)OåG¾:ÑÛ8ü(<:ÒŽ: 0{qŠNÔ™8Ïj2@õ¥+Æ)@Ïôu1ŽôdœÒòâ‚6ŒI»9ÛŽžô½¸àÒƒÇ&—oµ4þ~Ô cé@ÜS€\’8ã­8s’G§Úm6Š)ìûÇÌ2Þ´¤’ô£µ7µ%AÁ¢ŠAEQEQKE”QERñE†Š(¢Š(¢ŠQŽôRŒc“IE%QERÑEæ—Uˆ"Üjh£îiè½ÍNzÔ½éã­4àƒF)W«Ò|Ì4X§L}kÓ¼Xhq)^9#Þ½WÂÿaÂ¥p9 úÖø'<ŒVàÎy·F9ëKß4¼RÒÑÚŠ)h?J  Nh¢–ŠZ(¤¢Š>´ƒ=èæ––ŠJ(¥¢Š(¢’Š(¢Š(¢–ƒE%QEQIKE-QERQEQEQEQIEQEQKE”QEQEQIE´QEQE(¤=(QE´QEQGz)(ÍRÑKIEQÞ’Š)h¢Š(¤¢Š(¢–Š)(¢Š(¢Š(¢Š(¢Š(¢Š(£Ú‘”0Á ¨=iÖéŠLóŒPRÒÒ÷¢Š)(¢–Š(¢Š1EQEQIšBi3J .hÎh¢–Š(¢Š(¢Š(¢Š(¢Š3ƒIÚ‚h9¢Š3KEbŠ%”´RÒQEQERHi§­-©qëGZ:ŠÏÑ÷»Ò½éÁêiÀƒÒ”sÈ¥EŒÐHÏz dÒÒÒÓdb¸à©Éôâ›?ú‡Ç÷Oò¨îFmÜzƒY^Œ%‰#÷Ö³<64ö ù‡9¬ß ÅåØ7^\õ­sŽõ©ƒÍkœÒç>”§×½&sÞgµ  Jq£ëKÆ)1‘GojL©;ÒæŒ{ñKו/QGO~Ôô£œÐ:óF3õ£ûÑŒtëIŒži9ÉŽÜÒ÷4s»ƒEäûКsëҌʎ½év“ÔQ€}èãŠ÷Ç4 cßdqK×Èæ€y÷ Ÿzjœ““Ï¥(ýi¹!½éÛ‡Í!àç¹ïKŽç©¦ðzïIÈÆx£¯¨Ç½#Ny£9ÁÅ!Ld’qJÊHìr)O9)9 HQ‚£H0>½)ÄpqÖ“ Œ°àž”U᱂x¥Æ8'©¯ÿÙÿØÿÀÿÚ ?óúóúóú(¢Š(¢Š(¢Š(§+¥s…=iìر$çúTŽåÝ™€É98§o !gPs“€0?JeGL'?J(¤¢Š(¢”A>”QIEQE(àÑE%QEQEQEQERÑE%QEQE)%P’¥4PA‚0qE”QŠ\QOXɧ&—¦T îjE@£ÞœÓ¾”üÒÒz)i»²p:PN*}ì õOÃäi°¨èÊ5꾉 Ò`£.EzφãۃїŠ×lãÒµÛ$zV¹¯½DD€g!µDÂAÏ ô¨Ïš@ ô©={ÔŠÄ€O½H¤•Rø§E;éKE---QEQE%”QKKEQEQEQE”QKE”QKE”Q@¢Š(¢Š(£éEQEQKE”QEœÑE-QEQEQIEQE-¥P(¤¢Š(ïEQE8¤”Š(¢ŠZ)h¢Š(¤¤£4w¢ŠZ(¢–Š(¢ŠJ(¢Š(¢Š)h¥¢Š)3Î)3Î) ØïEw¢–Š(¢Š(¢Š(Í´f’’š7o$·†)mÄ–ã°¦ío3vï—ÓêZuQERQE-QE”QA ÒI‚zÓqŸ¥&3JÍ(¸¥¥¥¢Š3EQŠ(úÑEQIIEëE´´Qžh¢ŠJ)>´´QE´QE%”QKG^”zRgµP RÑß­&=èühé@¤RÒÐî±£;°UPI,põ4’:EI#Efc€©4×uYÝ•QAff8¤šÇ³Ö“P‚âT8ˆ;,ciÀOuéYZÔzŒ7rÅþ¤9H‰R €9#<œô¬k-v M/ -û¸Øªd`°¨'‚3žœò*ÖŒІ9cÍ[ÑÀ#±´¹¼P{RtéGjN1Ò€F:R` qJ~öhÎ9¥â€1Ò—qHlуÏjCÇ^”¹ Ònˆ'¯4t?Zh#$÷ëF0sœ“Ò—8ïœô¥àŒ“œô¤–Ÿ¥/ñsÓµ-øQŒ’1Ò›ŽÆqH$ädŠOø&€Àr ï@!ÆNy§ óÒ”àƒéJÀàŒqH@'ÿ:i {r?h$äã?­ Nô iÄò;þ5áuáUáTQEQEQE9Èf%Whô¢ŠmRœÀŨ§ü‚/V?¥TtQJI J(¤¢Š(¢œ óÏaE(瑟j=©s€EpE”ÿ%¶õíN žø©"Ã$€=êÌ{Ì›ËìM2p H¶»‰ºU˜tS#:ï)Lx84ï±ÿµŸÂ˜ÚFÖËœûP#$dZwØN ÝÒ¤!Î|ÎZ@¹üi©iK6=8¨×IÜÃçùON)Bçád½ß…Hº($n“…/–?½­)±¤Æ}i[ERÉy÷¤ÙÏZAeþÝ6=wWý)Âÿ>´ñ§3¿ÄS—E p$çÜRˆT®K`Ð,¯Þ9ïO:Ïšr=©`Eó1à¶ Kma¸EgÈ&¥µÐ!’uFŸ>•ßÍà;6pÑÌáHí&ð“>c¸p¤t5ÓOðþÓîî\B*à(+pj3ðþÛµÑüª#ðú×gò¤QÒä~TÑà³ÅÐü©§áúvºý)£À$øûúRùûÿv›ÿ ÿ‘þ–?*VðªäÝñô¥oF£?lÿÇiíàÕsöÏüvœ< Œ2.³øRÿÂ[¼þÄpVï?…'ü y_øùÁúQÿ cþ>ùúR!^nùÿv®Ùø"Á÷åÜûU«_ØÆs3»ý*Í·,ã9–go§Ò[Û­¼iyƒé-í–Þ†<„Ašémm–ÖÚ8#'b ÔņqR–çoz˜·8ïG>”¹>”¿…‘È r90h8QÏJ£KKKš(¤QKEQE袊(¢Š))h¥¢Š)(¢Š(¥¢ŠJ(¢Š(¢Š(¢E%QI¸êi Å¥¥¢Š)h¢Š Å(ÏœR㎴sÚŠZ(4QEQEQERQE-QEQŽhïIÆh¢–Š)(¢Š(¢Š)héE&h¢E%/j:ÑIš)h¢Š(¢€h¢Š(¢Š(ÍQEQE¢Š(¤¥¢Š(¢’Ž(¢Ž(¢Š(¢Š(¢ŽÔQ@éEQE¢–E%”RgšZ){Rw¢“¥¢—½QEQEôQEQÚŠ(¢Š)(ëE£˜¢ŠZZ(¢Š)(¢–Š(¢Š(¤¤ÈÏQKƒN } »Rb§û¦ŽÜbŒQµ¿ºhÅmoCAb§ÐÒâŒR´dñõªWš­‰d¸º‰%QŸ-œn?AÖ©ßjÚ~š¤Þ]Å…†ãÿëU5 RÇMˆ½åÔQ2°Ü}8ë\'ˆ<`Ú‰ò­#)jTW{çÜcŽœÿ‡â?>«ZZ¡ŽÍ€  ìAè?ÈóïøÆMV?²ÃŠÔæ+rÎrà8éþF^‰yy¼ÚZªî˜ÿ €ÍÐr}±úŸZ¡¡Þ_Hÿb´EÝ)Á*€àO¶?SëYÚ÷s^%­°]Òœ|ªnäþ©õ¯OÒmÚÖÅ"s—{×§é¶¿c³HKna÷Ž;שiK4·c—_¼G­]éV»Õ¾”‡h¤ÏBiqœR}(èýi1óRã4¼ 3ƒAàRd P}i÷¥íHzgqŽ:RyíIíŽ:ÒF#JpüÅ&y9¤ ‚?\{Óø¤çúÒ 7Ž3G^½ú ~9¥õ¥Çb(Öw)€OZSÇN´wéI‚"šO'´óc§­’ÃÐu4™#4wœ®iÀ~4)^¹ühå‡_­éßÞ•HP1ŽO­&x±=sH§ß©õ£¹õ>”ãŽß¥ xã=q@ÎAõ téG`SsŒ¶8¤ç>Ÿ…Éãgsâ}fY–Yn®#‚BJ¢|›—wE88¼2Š(¢Š(¢Š(¢Š(¢Š)Ê@`XdzRŽ¼ÒŽ¼Ói)(¢Š(¥ƒ‘Eèʃ–ö¢Š|Q,“g*£¾3Kž1E6-ÛŠ)À4”SUÚ7ܧŠ)Ø8 ©ÏZpöü©éÀ‘Ÿoj¸¥|½ñü«ýÚr¤6 »nëæd=+NÙ‹¾æèGJh99xUß0hE÷ô§rœT–œÈr4¡¸>æÈïš—k…ùOSB°g‘B1È)"”ä)¥ ¼J°áÁãÒœN\=)@ËdS°XîíOÇçÍ;pGsJ>Q×­1›hã’iUn„’iØæš¤ ƒ’M#q"c×¥0·ï—sDO‹•ŒW´Û‚l #¯–¿Ê½jÜn²‡v/ò¯J_šÞ#þÀþU/>•7#ìñšSš_zw½DѶâWå>µÆKeNÓQº19SŠzäòG4às‚iCdsœÓ#¥8ò)IRlçÚ“>ÔsA\ñÚ”Žqڃ׭;)zSª;‡h×rŒŽâ™;´k¸rQQÜHÑ.娪ëzÌÁL$gÜUt¼f ˆÏ¸¨#¿V`¥Í[ç1VÇN•ptéKÏ¥-~QIÍÒsKÏ¥sE´QERf–Žô´”RdRÑFE!¢ºÐ)&áëKKK¸SNiZBëšP( ZF@qœñéAPÝi ÜÑ‚1ƒÇ½ R\z`ýìÓ‰À§S²(¢‚@¢Š8õ¢Š2(GSJ‚Aô¤À'>”dgéKžqKFE5˜«(ÆsHNã­éN¥£"œ.G4™8Èæ“9îÔf—"Š^‚ŒñIE¥¢–Š)3EfŠ)i:ÑÚ“4QE-%RÑÅ%RÑFi(£4QFh¤ïFhÅ-ÓšCŒsHHïJ:P F0(¥¥¢Š ¢“"ŒóF(ã­&9ïE-(4QE- @yéHI¤Ï4c8£½/RÑš(£ƒH àb`RâŠPhÅfŠ ¤Î(¢—Š( š(¤ÍRæŠ)(¢–ŒsEŠ)(¢–Š)(Æh¥¤=h=h¤, €zšBÀÍ7 0^æKN&ŠZ(¤¢ŒÐM! u¤$´„A`¹¥ëKÚŒÒg„ ƒF ÑÁ9 P)ih£4Q‘H %šIXÇp¹ gëJ:g©ÆqQË0…‚K˜ï^oâ]{í·ÚÊ…Zo9C… )ñó{ž1Åy牵è¦Ôà·—2¥«¿Ÿ,¶H GÆÍÎrxÇÀxƒYkU`Qæ=³·˜¹! ¤qœ`sßž1Å`ÚÍ ‘Ú‰#Cž2OOÏžk•7!íã‚DSå±*ÜîÁþLwüýk—’ee V(ß{1ž˜ïùúÔ²O+6Dc (=‡à* ,€3„’:ÀTY™Â…Æ2;~œ#%¥–¬‘sŽAÐýj[ˆ£ŠâD·”L‰‚iv?ËùÒ²æfò¾`¸ úôõ¨„˜ãlH8÷ÿQ,ΰ¼;ŽÆ ‘î3æ:“æƒ|rõ£×žÿ‰¦‡*¬£n¼TyÆGcPØXUºñR$žVÇU†y  p;H8çßšyM‘Fåv†Î® Öð¾Ÿý§|"ÎÕ_šCê+ÂSjׯBÇ íß±á"]VèŸ3¹<ã>•éö¶PÚÄ#Þ½>ÚÖ+HDP(Eéö°Á°KdƒŽœÕž‡'¨©z÷©ÀÃiÌ)W8§ yÈæŒŸJ2sÓŠ3Æh÷¤Î2is“Ò†4 F2s@zw ý(ãÒtäRt ƒŤ_°“ÆÔ·Ý&ç+ð-ù[ ÷Vñ%û.D8¶@~IBQBXÎcßi°oåuÆ|G†ÖD¥!š 4q ³ o   æHœ _ › I rÈÄŒ Ñ5á Ý ÿØÿÛC   (1#%(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egcÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÙvips-8.2.2/test/test_threading.sh0000775000175000017500000000160012634746647013771 00000000000000#!/bin/sh # set -x . ./variables.sh chain=1 # im_benchmark needs a labq vips colourspace $image $tmp/t3.v labq for tile in 10 64 128 512; do # benchmark includes a dither which will vary with tile size vips --vips-concurrency=1 \ --vips-tile-width=$tile --vips-tile-height=$tile \ im_benchmarkn $tmp/t3.v $tmp/t5.v $chain for cpus in 2 3 4 5 6 7 8 99; do echo trying cpus = $cpus, tile = $tile ... vips --vips-concurrency=$cpus \ --vips-tile-width=$tile --vips-tile-height=$tile \ im_benchmarkn $tmp/t3.v $tmp/t7.v $chain vips subtract $tmp/t5.v $tmp/t7.v $tmp/t8.v vips abs $tmp/t8.v $tmp/t9.v max=$(vips max $tmp/t9.v) if [ $(echo "$max > 0" | bc) -eq 1 ]; then break fi done if [ $(echo "$max > 0" | bc) -eq 1 ]; then break fi done if [ $(echo "$max > 0" | bc) -eq 1 ]; then echo error, max == $max exit 1 else echo all threading tests passed fi vips-8.2.2/test/test_thumbnail.sh0000775000175000017500000000261112551702036013770 00000000000000#!/bin/sh # resize a 1000x1000 image to every size in [500,1000] with every interpolator # and check for black lines # see https://github.com/jcupitt/libvips/issues/131 # set -x . ./variables.sh # make a 1000x1000 mono test image echo building test image ... vips extract_band $image $tmp/t1.v 1 vips replicate $tmp/t1.v $tmp/t2.v 2 2 vips extract_area $tmp/t2.v $tmp/t1.v 10 10 1000 1000 # is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning # error, or outside threshold) break_threshold() { diff=$1 threshold=$2 return $(echo "$diff > $threshold" | bc -l) } for interp in nearest bilinear bicubic lbb nohalo vsqbs; do size=1000 while [ $size -gt 499 ]; do printf "testing $interp, size to $size ... " vipsthumbnail $tmp/t1.v -o $tmp/t2.v --size $size --interpolator $interp if [ $(vipsheader -f width $tmp/t2.v) -ne $size ]; then echo failed -- bad size exit fi if [ $(vipsheader -f height $tmp/t2.v) -ne $size ]; then echo failed -- bad size exit fi vips project $tmp/t2.v $tmp/cols.v $tmp/rows.v min=$(vips min $tmp/cols.v) if break_threshold $min 0; then echo failed -- has a black column exit fi min=$(vips min $tmp/rows.v) if break_threshold $min 0; then echo failed -- has a black row exit fi echo ok size=$(($size-1)) done done vips-8.2.2/test/test_cli.sh0000775000175000017500000000242712551702036012561 00000000000000#!/bin/sh # this test is also in test_resample.py (though much smaller and neater) ... # keep this test to exercise the cli interface # set -x . ./variables.sh # is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning # error, or outside threshold) # # use bc since bash does not support fp math break_threshold() { diff=$1 threshold=$2 return $(echo "$diff <= $threshold" | bc -l) } # subtract, look for max difference less than a threshold test_difference() { before=$1 after=$2 threshold=$3 $vips subtract $before $after $tmp/difference.v $vips abs $tmp/difference.v $tmp/abs.v dif=$($vips max $tmp/abs.v) if break_threshold $dif $threshold; then echo "difference is $dif" exit 1 fi } test_rotate() { im=$1 inter=$2 printf "testing $inter ... " # 90 degree clockwise rotate trn="0 1 1 0" $vips affine $im $tmp/t1.v "$trn" --interpolate $inter $vips affine $tmp/t1.v $tmp/t2.v "$trn" --interpolate $inter $vips affine $tmp/t2.v $tmp/t1.v "$trn" --interpolate $inter $vips affine $tmp/t1.v $tmp/t2.v "$trn" --interpolate $inter test_difference $im $tmp/t2.v 1 echo "ok" } # vsqbs is non-interpolatory, don't test this way echo "testing with $(basename $image)" for i in nearest bicubic bilinear nohalo lbb; do test_rotate $image $i done vips-8.2.2/test/test_python.sh0000775000175000017500000000047012551702036013327 00000000000000#!/bin/sh # set -x # don't run this set of tests as part of make check -- some platforms do make # check before install and it's too hard to make pyvips8 work without # installation . ./variables.sh echo "testing with python2 ..." python2 test_all.py echo "testing with python3 ..." python3 test_all.py vips-8.2.2/test/test_seq.sh0000775000175000017500000000166412551702036012604 00000000000000#!/bin/sh # set -x . ./variables.sh # make a large PNG, roughly the size of Chicago.png printf "building huge test PNG image ... " $vips replicate $image $tmp/huge.png 30 5 echo "ok" huge=$tmp/huge.png printf "testing vipsthumbnail ... " rm -f $tmp/x.png $vipsthumbnail $huge -o $tmp/x.png if ! $vipsheader $tmp/x.png > /dev/null 2>&1 ; then echo "vipsthumbnail failed in basic mode" exit 1 fi echo "ok" if [ ! -d $tmp/readonly ] ; then mkdir $tmp/readonly chmod ugo-wx $tmp/readonly fi export TMPDIR=$tmp/readonly printf "testing vipsthumbnail does not make temps ... " rm -f $tmp/x.png $vipsthumbnail $huge -o $tmp/x.png if ! $vipsheader $tmp/x.png > /dev/null 2>&1 ; then echo "vipsthumbnail made a temp" exit 1 fi echo "ok" printf "testing shrink does not make temps ... " rm -f $tmp/x.png $vips shrink $huge $tmp/x.png 230 230 if ! $vipsheader $tmp/x.png > /dev/null 2>&1 ; then echo "shrink made a temp" exit 1 fi echo "ok" vips-8.2.2/test/Makefile.am0000664000175000017500000000107012610427330012436 00000000000000 EXTRA_DIST = \ images \ variables.sh.in \ test_cli.sh \ test_formats.sh \ test_seq.sh \ test_thumbnail.sh \ test_threading.sh \ test_python.sh test_all.py \ test_arithmetic.py \ test_colour.py \ test_conversion.py \ test_convolution.py \ test_iofuncs.py \ test_create.py \ test_foreign.py \ test_draw.py \ test_histogram.py \ test_morphology.py \ test_resample.py # don't run test_thumbnail.sh by default, it takes ages TESTS = \ test_cli.sh \ test_formats.sh \ test_seq.sh \ test_threading.sh clean-local: -rm -rf tmp-* -rm -f *.pyc vips-8.2.2/test/Makefile.in0000664000175000017500000007465612651721157012504 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = variables.sh CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/variables.sh.in \ $(top_srcdir)/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ EXTRA_DIST = \ images \ variables.sh.in \ test_cli.sh \ test_formats.sh \ test_seq.sh \ test_thumbnail.sh \ test_threading.sh \ test_python.sh # don't run test_thumbnail.sh by default, it takes ages TESTS = \ test_cli.sh \ test_formats.sh \ test_seq.sh \ test_threading.sh all: all-am .SUFFIXES: .SUFFIXES: .log .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign test/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): variables.sh: $(top_builddir)/config.status $(srcdir)/variables.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? test_cli.sh.log: test_cli.sh @p='test_cli.sh'; \ b='test_cli.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_formats.sh.log: test_formats.sh @p='test_formats.sh'; \ b='test_formats.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_seq.sh.log: test_seq.sh @p='test_seq.sh'; \ b='test_seq.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test_threading.sh.log: test_threading.sh @p='test_threading.sh'; \ b='test_threading.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: all all-am check check-TESTS check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \ uninstall uninstall-am .PRECIOUS: Makefile test_all.py \ test_arithmetic.py \ test_colour.py \ test_conversion.py \ test_convolution.py \ test_iofuncs.py \ test_create.py \ test_foreign.py \ test_draw.py \ test_histogram.py \ test_morphology.py \ test_resample.py clean-local: -rm -rf tmp-* -rm -f *.pyc # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/test/test_formats.sh0000775000175000017500000001102612551702036013460 00000000000000#!/bin/sh # this has now been mostly superceeded by test_foreign.py ... keep this around # as a test of the command-line interface # set -x . ./variables.sh # the matlab image and reference image matlab=$test_images/sample.mat matlab_ref=$test_images/sample.png # make a mono image $vips extract_band $image $tmp/mono.v 1 mono=$tmp/mono.v # make a radiance image $vips float2rad $image $tmp/rad.v rad=$tmp/rad.v # make a cmyk image $vips bandjoin "$image $tmp/mono.v" $tmp/t1.v $vips copy $tmp/t1.v $tmp/cmyk.v --interpretation cmyk cmyk=$tmp/cmyk.v # save to t1.format, load as back.v save_load() { in=$1 format=$2 mode=$3 if ! $vips copy $in $tmp/t1.$format$mode ; then echo "write to $out failed" exit 1 fi if ! $vips copy $tmp/t1.$format $tmp/back.v ; then echo "read from $out failed" exit 1 fi } # is a difference beyond a threshold? return 0 (meaning all ok) or 1 (meaning # error, or outside threshold) break_threshold() { diff=$1 threshold=$2 return $(echo "$diff <= $threshold" | bc -l) } # subtract, look for max difference less than a threshold test_difference() { before=$1 after=$2 threshold=$3 $vips subtract $before $after $tmp/difference.v $vips abs $tmp/difference.v $tmp/abs.v dif=$($vips max $tmp/abs.v) if break_threshold $dif $threshold; then echo "save / load difference is $dif" exit 1 fi } # save to the named file in tmp, convert back to vips again, subtract, look # for max difference less than a threshold test_format() { in=$1 format=$2 threshold=$3 mode=$4 printf "testing $(basename $in) $format$mode ... " save_load $in $format $mode test_difference $in $tmp/back.v $threshold echo "ok" } # as above, but hdr format # this is a coded format, so we need to rad2float before we can test for # differences test_rad() { in=$1 printf "testing $(basename $in) hdr ... " save_load $in hdr $vips rad2float $in $tmp/before.v $vips rad2float $tmp/back.v $tmp/after.v test_difference $tmp/before.v $tmp/after.v 0 echo "ok" } # as above, but raw format # we can't use suffix stuff to pick the load/save test_raw() { in=$1 printf "testing $(basename $in) raw ... " $vips copy $in $tmp/before.v width=$($vipsheader -f width $tmp/before.v) height=$($vipsheader -f height $tmp/before.v) bands=$($vipsheader -f bands $tmp/before.v) $vips rawsave $tmp/before.v $tmp/raw $vips rawload $tmp/raw $tmp/after.v $width $height $bands test_difference $tmp/before.v $tmp/after.v 0 echo "ok" } # a format for which we only have a load (eg. matlab) # pass in a reference file as well and compare to that test_loader() { ref=$1 in=$2 format=$3 printf "testing $(basename $in) $format ... " $vips copy $ref $tmp/before.v $vips copy $in $tmp/after.v test_difference $tmp/before.v $tmp/after.v 0 echo "ok" } # a format for which we only have a saver (eg. dzsave) # just run the operation and check exit status test_saver() { oper=$1 in=$2 suffix=$3 printf "testing $oper $(basename $in) $suffix ... " rm -rf $tmp/savertest* cmd="$vips $oper $in $tmp/savertest$suffix" if ! $cmd ; then echo "error executing:" echo " $cmd" exit 1 fi echo "ok" } # test for file format supported test_supported() { format=$1 if $vips $format > /dev/null 2>&1; then result=0 else echo "support for $format not configured, skipping test" result=1 fi return $result } test_format $image v 0 if test_supported tiffload; then test_format $image tif 0 test_format $image tif 90 [compression=jpeg] test_format $image tif 0 [compression=deflate] test_format $image tif 0 [compression=packbits] test_format $image tif 90 [compression=jpeg,tile] test_format $image tif 90 [compression=jpeg,tile,pyramid] fi if test_supported pngload; then test_format $image png 0 test_format $image png 0 [compression=9,interlace=1] fi if test_supported jpegload; then test_format $image jpg 90 fi test_format $image ppm 0 test_format $image pfm 0 if test_supported fitsload; then test_format $image fits 0 fi # csv can only do mono test_format $mono csv 0 # cmyk jpg is a special path if test_supported jpegload; then test_format $cmyk jpg 90 fi if test_supported tiffload; then test_format $cmyk tif 0 test_format $cmyk tif 90 [compression=jpeg] test_format $cmyk tif 90 [compression=jpeg,tile] test_format $cmyk tif 90 [compression=jpeg,tile,pyramid] fi test_rad $rad test_raw $mono test_raw $image if test_supported matload; then test_loader $matlab_ref $matlab matlab fi if test_supported dzsave; then test_saver dzsave $image .zip test_saver copy $image .dz test_saver copy $image .dz[container=zip] fi vips-8.2.2/configure.ac0000664000175000017500000006415612651721116011733 00000000000000# Process this file with autoconf to produce a configure script. # also update the version number in the m4 macros below AC_INIT([vips], [8.2.2], [vipsip@jiscmail.ac.uk]) # required for gobject-introspection AC_PREREQ(2.62) # gobject-introspection recommends -Wno-portability # foreign stops complaints about a missing README (we use README.md instead) # and missing INSTALL (the standard Gnu INSTALL is not very useful) # subdir-objects lets us have dumy.cc in a subdir AM_INIT_AUTOMAKE([-Wno-portability foreign subdir-objects]) AC_CONFIG_HEADERS(config.h) AC_CONFIG_MACRO_DIR([m4]) # user-visible library versioning m4_define([vips_major_version], [8]) m4_define([vips_minor_version], [2]) m4_define([vips_micro_version], [2]) m4_define([vips_version], [vips_major_version.vips_minor_version.vips_micro_version]) VIPS_MAJOR_VERSION=vips_major_version() VIPS_MINOR_VERSION=vips_minor_version() VIPS_MICRO_VERSION=vips_micro_version() VIPS_VERSION=vips_version() VIPS_VERSION_STRING=$VIPS_VERSION-`date` # libtool library versioning ... not user-visible (except as part of the # library file name) and does not correspond to major/minor/micro above # rules: # sources changed: increment revision # binary interface changed: increment current, reset revision to 0 # binary interface changes backwards compatible?: increment age # binary interface changes not backwards compatible?: reset age to 0 LIBRARY_CURRENT=45 LIBRARY_REVISION=2 LIBRARY_AGE=3 # patched into include/vips/version.h AC_SUBST(VIPS_VERSION) AC_SUBST(VIPS_VERSION_STRING) AC_SUBST(VIPS_MAJOR_VERSION) AC_SUBST(VIPS_MINOR_VERSION) AC_SUBST(VIPS_MICRO_VERSION) # put into library name by libsrc/Makefile.am and libsrcCC/Makefile.am AC_SUBST(LIBRARY_CURRENT) AC_SUBST(LIBRARY_REVISION) AC_SUBST(LIBRARY_AGE) # init introspection support GOBJECT_INTROSPECTION_CHECK([1.30.0]) # gir needs a list of source files to scan for introspection # # build with a glob and a list of files to exclude from scanning # see also IGNORE_HFILES in doc/Makefile.am introspection_sources=$(cd libvips ; find . -name "*.c") filter_list="deprecated " # contains(string, substring) # # Returns 0 if the specified string contains the specified substring, # otherwise returns 1. contains() { string="$1" substring="$2" if test "${string#*$substring}" != "$string"; then return 0 # $substring is in $string else return 1 # $substring is not in $string fi } introspection_sources2= for name in $introspection_sources; do found=0 for filter in $filter_list; do if contains $name ${filter}; then found=1 fi done if [[ $found -eq 0 ]]; then introspection_sources2="$introspection_sources2 $name" fi done vips_introspection_sources="$introspection_sources2" # add headers that form the public vips8 API .. don't do a find and exclude, # we end up excluding almost everything argh headers="\ basic.h \ vips.h \ object.h \ image.h \ error.h \ foreign.h \ interpolate.h \ header.h \ operation.h \ enumtypes.h \ conversion.h \ arithmetic.h \ colour.h \ convolution.h \ draw.h \ morphology.h \ type.h \ memory.h \ region.h" for name in $headers; do vips_introspection_sources="$vips_introspection_sources include/vips/$name" done AC_SUBST(vips_introspection_sources) AC_CANONICAL_HOST AC_DEFINE_UNQUOTED(G_LOG_DOMAIN, "VIPS", [Domain for glib logging messages.]) m4_define([debug_default], [no]) AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@], [turn on debugging @<:@default=debug_default()@:>@]),, enable_debug=debug_default()) if test "x$enable_debug" = "xyes"; then VIPS_DEBUG_FLAGS="-DDEBUG_FATAL -DDEBUG_LEAK" else VIPS_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS" if test "x$enable_debug" = "xno"; then VIPS_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS" fi fi # option to disable deprecated code, shaves a bit off the library size AC_ARG_ENABLE(deprecated, AS_HELP_STRING([--enable-deprecated], [build deprecated components (default: yes)])) VIPS_ENABLE_DEPRECATED=0 if test x"$enable_deprecated" != x"no"; then VIPS_ENABLE_DEPRECATED=1 enable_deprecated=yes AM_CONDITIONAL(ENABLE_DEPRECATED, true) else AM_CONDITIONAL(ENABLE_DEPRECATED, false) fi # this gets pasted into version.h as a #define AC_SUBST(VIPS_ENABLE_DEPRECATED) # we are a C library with some optional C++ components inside it # on most platforms, but not all, we just include -lstdc++ in the link line # for programs # we ought to write a proper configure test for this :( AC_MSG_CHECKING([for needs -lstdc++]) case "$host_os" in freebsd*) vips_needs_stdcpp=no ;; *) vips_needs_stdcpp=yes ;; esac AC_MSG_RESULT([$vips_needs_stdcpp]) AC_MSG_CHECKING([for native Win32]) case "$host" in *-*-mingw*) vips_os_win32=yes ;; *) vips_os_win32=no ;; esac AC_MSG_RESULT([$vips_os_win32]) if test x"$vips_os_win32" = "xyes"; then AC_DEFINE(OS_WIN32,1,[native win32]) # makes gcc use win native alignment VIPS_CFLAGS="-mms-bitfields $VIPS_CFLAGS" fi # CImg needs flags changed on win32 if test x"$vips_os_win32" = "xyes"; then AM_CONDITIONAL(OS_WIN32, true) else AM_CONDITIONAL(OS_WIN32, false) fi # Cygwin/mingw need binary open to avoid CR/LF madness # ... should be a better way to test for this AC_MSG_CHECKING([for binary open needed]) case "$host_os" in cygwin* | mingw*) vips_binary_open=yes ;; *) vips_binary_open=no ;; esac AC_MSG_RESULT([$vips_binary_open]) if test x"$vips_binary_open" = "xyes"; then AC_DEFINE(BINARY_OPEN,1,[define to open non-text files in binary mode]) fi AC_MSG_CHECKING([for Mac OS X]) case "$host" in *-*-darwin*) vips_os_darwin=yes ;; *) vips_os_darwin=no ;; esac AC_MSG_RESULT([$vips_os_darwin]) if test x"$vips_os_darwin" = x"yes"; then AC_DEFINE(VIPS_OS_DARWIN,1,[native Mac OS X]) fi # set the default directory for ICC profiles if test x"$vips_os_darwin" = x"yes"; then profile_dir="/Library/ColorSync/Profiles" elif test x"$vips_os_win32" = x"yes"; then profile_dir="C:\\Windows\\System32\\spool\\drivers\\color" else profile_dir="/usr/share/color/icc" fi AC_DEFINE_UNQUOTED(VIPS_ICC_DIR,"$profile_dir",[default directory for ICC profiles]) # we want largefile support, if possible AC_SYS_LARGEFILE # Checks for programs. AC_PROG_AWK AC_PROG_CC AC_PROG_CC_STDC AC_PROG_CXX AC_C_CONST AC_C_RESTRICT AC_PROG_RANLIB AC_PROG_INSTALL AC_PROG_LN_S AM_WITH_DMALLOC # we need a fully expanded version of $libdir # without this we get something like # define VIPS_LIBDIR ${exec_prefix}/lib # argh test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # set $expanded_value to the fully-expanded value of the argument expand () { eval expanded_value=$1 if test x"$expanded_value" != x"$1"; then expand "$expanded_value" fi } expand $libdir VIPS_LIBDIR=$expanded_value # this gets pasted into version.h as a #define VIPS_EXEEXT=$EXEEXT AC_SUBST(VIPS_EXEEXT) # vips.c/im_guess_prefix.c need to know the exe suffix and (as a fallback) # the configure-time install prefix AC_DEFINE_UNQUOTED(VIPS_PREFIX,"$prefix",[configure-time install prefix]) AC_DEFINE_UNQUOTED(VIPS_LIBDIR,"$VIPS_LIBDIR",[configure-time library directory]) # i18n # we need to name our .mo with major.minor so we can have multiple versions # installed in parallel on Debian expand vips$VIPS_MAJOR_VERSION.$VIPS_MINOR_VERSION GETTEXT_PACKAGE=$expanded_value AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The prefix for our gettext translation domains.]) # the 'malkovich' one is there for testing only, remove for release #ALL_LINGUAS="en_GB de malkovich" ALL_LINGUAS="en_GB de" AM_GLIB_GNU_GETTEXT # Checks for libraries. # build list of pkg-config packages we used here PACKAGES_USED="" # build list of extra libs we need here # the main one is jpeg: it does not have a .pc file, so when we make vips.pc # we need to put -ljpeg into libs ourselves EXTRA_LIBS_USED="" # Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS([errno.h math.h fcntl.h limits.h stdlib.h string.h sys/file.h sys/ioctl.h sys/param.h sys/time.h sys/mman.h sys/types.h sys/stat.h unistd.h io.h direct.h windows.h]) # uncomment to change which libs we build # AC_DISABLE_SHARED # AC_DISABLE_STATIC AC_LIBTOOL_WIN32_DLL AC_CHECK_TOOL(DLLWRAP, dllwrap) AC_CHECK_TOOL(DLLTOOL, dlltool) AC_CHECK_TOOL(OBJDUMP, objdump) AC_CHECK_TOOL(RANLIB, ranlib) AC_CHECK_TOOL(STRIP, strip) AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(AS, as) AC_CHECK_TOOL(LD, ld) AC_PROVIDE([AC_LIBTOOL_WIN32_DLL]) AC_PROG_LIBTOOL # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_SIZE_T # Checks for library functions. AC_FUNC_MEMCMP AC_FUNC_MMAP AC_FUNC_VPRINTF AC_CHECK_FUNCS([getcwd gettimeofday getwd memset munmap putenv realpath strcasecmp strchr strcspn strdup strerror strrchr strspn vsnprintf realpath mkstemp mktemp random rand sysconf atexit]) AC_CHECK_LIB(m,cbrt,[AC_DEFINE(HAVE_CBRT,1,[have cbrt() in libm.])]) AC_CHECK_LIB(m,hypot,[AC_DEFINE(HAVE_HYPOT,1,[have hypot() in libm.])]) AC_CHECK_LIB(m,atan2,[AC_DEFINE(HAVE_ATAN2,1,[have atan2() in libm.])]) # have to have these # need glib 2.6 for GOption PKG_CHECK_MODULES(REQUIRED, glib-2.0 >= 2.6 gmodule-2.0 libxml-2.0 gobject-2.0) PACKAGES_USED="$PACKAGES_USED glib-2.0 libxml-2.0 gmodule-2.0 gobject-2.0" # after 2.28 we have a monotonic timer PKG_CHECK_MODULES(MONOTONIC, glib-2.0 >= 2.28,[ AC_DEFINE(HAVE_MONOTONIC_TIME,1,[define if your glib has g_get_monotonic_time().]) ],[: ] ) # after 2.32 there are a new set of thread functions, annoyingly PKG_CHECK_MODULES(THREADS, glib-2.0 >= 2.32,[ AC_DEFINE(HAVE_MUTEX_INIT,1,[define if your glib has g_mutex_init().]) AC_DEFINE(HAVE_COND_INIT,1,[define if your glib has g_cond_init().]) AC_DEFINE(HAVE_THREAD_NEW,1,[define if your glib has g_thread_new().]) AC_DEFINE(HAVE_PRIVATE_INIT,1,[define if your glib has G_PRIVATE_INIT().]) AC_DEFINE(HAVE_VALUE_GET_SCHAR,1,[define if your glib has g_value_get_schar().]) ],[ # the old threading system ... we need to link against gthread PKG_CHECK_MODULES(GTHREAD, gthread-2.0) PACKAGES_USED="$PACKAGES_USED gthread-2.0" ] ) # with 2.36 and after the type system inits itself PKG_CHECK_MODULES(TYPE_INIT, glib-2.0 < 2.36,[ AC_DEFINE(NEED_TYPE_INIT,1,[define if your glib needs g_type_init().]) ],[: ] ) # check for gtk-doc GTK_DOC_CHECK([1.14],[--flavour no-tmpl]) # optional supporting libraries AC_ARG_WITH([gsf], AS_HELP_STRING([--without-gsf], [build without libgsf-1 (default: test)])) # libgsf-1 1.14.21 crashes, .27 is known-good, not sure about 22-26 if test x"$with_gsf" != "xno"; then PKG_CHECK_MODULES(GSF, libgsf-1 >= 1.14.27, [AC_DEFINE(HAVE_GSF,1,[define if you have libgsf-1 installed.]) with_gsf=yes PACKAGES_USED="$PACKAGES_USED libgsf-1"], [AC_MSG_WARN([libgsf-1 not found; disabling dzsave support]) with_gsf=no]) fi AC_ARG_WITH([fftw], AS_HELP_STRING([--without-fftw], [build without fftw (default: test)])) if test x"$with_fftw" != "xno"; then PKG_CHECK_MODULES(FFTW, fftw3, [AC_DEFINE(HAVE_FFTW,1,[define if you have fftw3 installed.]) with_fftw=yes PACKAGES_USED="$PACKAGES_USED fftw3"], [AC_MSG_WARN([fftw not found; disabling fftw support]) with_fftw=no]) fi # ImageMagick ... detect attribute iteration too # Optionally look for GraphicsMagick instead ... use # --with-magickpackage=GraphicsMagick AC_ARG_WITH([magick], AS_HELP_STRING([--without-magick], [build without libMagic (default: test)])) AC_ARG_WITH([magickpackage], AS_HELP_STRING([--with-magickpackage], [magickpackage to use (default: MagickWand, ImageMagick; try GraphicsMagick to build against gm instead)])) # recent versions of ImageMagick have split parts of the library off to # MagickWand, so by default we test for that first if test x"$with_magickpackage" = "x"; then PKG_CHECK_MODULES(MAGICK_WAND, MagickWand, [with_magickpackage=MagickWand], [PKG_CHECK_MODULES(IMAGE_MAGICK, ImageMagick, [with_magickpackage=ImageMagick], [AC_MSG_WARN([neither MagickWand nor ImageMagick found; disabling Magick support]) with_magick=no ])]) fi if test x"$with_magick" != "xno"; then PKG_CHECK_MODULES(MAGICK, $with_magickpackage, [AC_DEFINE(HAVE_MAGICK,1,[define if you have libMagick installed.]) with_magick=yes PACKAGES_USED="$PACKAGES_USED $with_magickpackage"], [AC_MSG_WARN([$with_magickpackage not found; disabling Magick support]) with_magick=no ]) fi if test x"$with_magick" != "xno"; then # we SetImageOption to disable some DICOM read processing, but that's only # in more recent imagemagicks and not in graphicsmagick save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" AC_CHECK_FUNCS(SetImageOption, AC_DEFINE(HAVE_SETIMAGEOPTION,1, [define if your magick has SetImageOption.])) LIBS=$save_LIBS fi if test x"$with_magick" != "xno"; then # newer ImageMagicks use MagickCoreGenesis instead of InitializeMagick argh save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" AC_CHECK_FUNCS(MagickCoreGenesis, AC_DEFINE(HAVE_MAGICKCOREGENESIS,1, [define if your magick has MagickCoreGenesis.])) LIBS=$save_LIBS fi if test x"$with_magick" != "xno"; then # newer ImageMagicks use ResetImagePropertyIterator instead of # ResetImageAttributeIterator argh save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" AC_CHECK_FUNCS(ResetImagePropertyIterator, AC_DEFINE(HAVE_RESETIMAGEPROPERTYITERATOR,1, [define if your magick has ResetImagePropertyIterator.])) LIBS=$save_LIBS fi if test x"$with_magick" != "xno"; then # so ... do we have ResetImageAttributeIterator()? GM does not save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" AC_CHECK_FUNCS(ResetImageAttributeIterator, AC_DEFINE(HAVE_RESETIMAGEATTRIBUTEITERATOR,1, [define if your magick has ResetImageAttributeIterator.])) LIBS=$save_LIBS fi if test x"$with_magick" != "xno"; then # more recent magicks have GetVirtualPixels rather than GetImagePixels save_LIBS=$LIBS LIBS="$LIBS $MAGICK_LIBS" AC_CHECK_FUNCS(GetVirtualPixels, AC_DEFINE(HAVE_GETVIRTUALPIXELS,1, [define if your magick has GetVirtualPixels.])) LIBS=$save_LIBS fi # orc AC_ARG_WITH([orc], AS_HELP_STRING([--without-orc], [build without orc (default: test)])) if test x"$with_orc" != "xno"; then # we use loadpw etc. PKG_CHECK_MODULES(ORC, orc-0.4 >= 0.4.11, [AC_DEFINE(HAVE_ORC,1,[define if you have orc-0.4.11 or later installed.]) with_orc=yes PACKAGES_USED="$PACKAGES_USED orc-0.4" save_LIBS=$LIBS LIBS="$LIBS $ORC_LIBS" AC_CHECK_FUNCS(orc_program_get_error, AC_DEFINE(HAVE_ORC_PROGRAM_GET_ERROR,1, [define if your orc has orc_program_get_error.])) LIBS=$save_LIBS ], [AC_MSG_WARN([orc-0.4.11 or later not found; disabling orc support]) with_orc=no ]) fi # lcms ... look for lcms2 first, it has better threading support AC_ARG_WITH([lcms], AS_HELP_STRING([--without-lcms], [build without lcms (default: test)])) if test x"$with_lcms" != "xno"; then PKG_CHECK_MODULES(LCMS, lcms2, [AC_DEFINE(HAVE_LCMS2,1,[define if you have lcms2 installed.]) with_lcms="yes (lcms2)" PACKAGES_USED="$PACKAGES_USED lcms2"], [PKG_CHECK_MODULES(LCMS, lcms, [AC_DEFINE(HAVE_LCMS,1,[define if you have lcms installed.]) with_lcms="yes (lcms1)" PACKAGES_USED="$PACKAGES_USED lcms"], [AC_MSG_WARN([lcms2/lcms not found; disabling lcms support]) with_lcms=no]) ]) fi # OpenEXR AC_ARG_WITH([OpenEXR], AS_HELP_STRING([--without-OpenEXR], [build without OpenEXR (default: test)])) # require 1.2.2 since 1.2.1 has a broken ImfCloseTiledInputFile() if test x"$with_OpenEXR" != "xno"; then PKG_CHECK_MODULES(OPENEXR, OpenEXR >= 1.2.2, [AC_DEFINE(HAVE_OPENEXR,1,[define if you have OpenEXR >=1.2.2 installed.]) with_OpenEXR=yes PACKAGES_USED="$PACKAGES_USED OpenEXR"], [AC_MSG_WARN([OpenEXR not found; disabling OpenEXR support]) with_OpenEXR=no ]) fi # OpenSlide AC_ARG_WITH([openslide], AS_HELP_STRING([--without-openslide], [build without OpenSlide (default: test)])) if test x"$with_openslide" != x"no"; then PKG_CHECK_MODULES(OPENSLIDE, [openslide >= 3.4.0], [AC_DEFINE(HAVE_OPENSLIDE_3_4,1,[define if you have OpenSlide >= 3.4.0 installed.]) AC_DEFINE(HAVE_OPENSLIDE,1,[define if you have OpenSlide >= 3.3.0 installed.]) with_openslide=yes PACKAGES_USED="$PACKAGES_USED openslide"], [AC_MSG_NOTICE([OpenSlide >= 3.4.0 not found; checking for >= 3.3.0]) PKG_CHECK_MODULES(OPENSLIDE, [openslide >= 3.3.0], [AC_DEFINE(HAVE_OPENSLIDE,1,[define if you have OpenSlide >= 3.3.0 installed.]) with_openslide=yes PACKAGES_USED="$PACKAGES_USED openslide"], [AC_MSG_WARN([OpenSlide >= 3.3.0 not found; disabling virtual slide support]) with_openslide=no ]) ]) fi # matio AC_ARG_WITH([matio], AS_HELP_STRING([--without-matio], [build without matio (default: test)])) if test x"$with_matio" != "xno"; then PKG_CHECK_MODULES(MATIO, matio, [AC_DEFINE(HAVE_MATIO,1,[define if you have matio installed.]) with_matio=yes PACKAGES_USED="$PACKAGES_USED matio"], [AC_MSG_WARN([matio not found; disabling matio support]) with_matio=no ]) fi # cfitsio AC_ARG_WITH([cfitsio], AS_HELP_STRING([--without-cfitsio], [build without cfitsio (default: test)])) if test x"$with_cfitsio" != "xno"; then PKG_CHECK_MODULES(CFITSIO, cfitsio, [AC_DEFINE(HAVE_CFITSIO,1,[define if you have cfitsio installed.]) with_cfitsio=yes PACKAGES_USED="$PACKAGES_USED cfitsio"], [AC_MSG_WARN([cfitsio not found; disabling cfitsio support]) with_cfitsio=no ]) fi # libwebp AC_ARG_WITH([libwebp], AS_HELP_STRING([--without-libwebp], [build without libwebp (default: test)])) if test x"$with_libwebp" != "xno"; then PKG_CHECK_MODULES(LIBWEBP, libwebp, [AC_DEFINE(HAVE_LIBWEBP,1,[define if you have libwebp installed.]) with_libwebp=yes PACKAGES_USED="$PACKAGES_USED libwebp"], [AC_MSG_WARN([libwebp not found; disabling libwebp support]) with_libwebp=no ]) fi # pangoft2 AC_ARG_WITH([pangoft2], AS_HELP_STRING([--without-pangoft2], [build without pangoft2 (default: test)])) if test x"$with_pangoft2" != "xno"; then PKG_CHECK_MODULES(PANGOFT2, pangoft2, [AC_DEFINE(HAVE_PANGOFT2,1,[define if you have pangoft2 installed.]) with_pangoft2=yes PACKAGES_USED="$PACKAGES_USED pangoft2" ], [AC_MSG_WARN([pangoft2 not found; disabling pangoft2 support]) with_pangoft2=no ]) fi # install vips8 python AC_ARG_ENABLE([pyvips8], AS_HELP_STRING([--enable-pyvips8], [install vips8 Python overrides (default: test)]), [enable_pyvips8=$enableval], [enable_pyvips8="auto"]) if test "x$enable_pyvips8" = "xauto"; then PKG_CHECK_EXISTS([pygobject-3.0 >= 3.12.0], [enable_pyvips8=yes], [AC_MSG_WARN([pygobject-3.0 not found; disabling vips8 python support]) enable_pyvips8=no ] ) fi if test x"$enable_pyvips8" = x"yes"; then AM_PATH_PYTHON(2.7,, [enable_pyvips8=no AC_MSG_WARN([Python not found; disabling vips8 Python binding])] ) fi if test x"$enable_pyvips8" = x"yes"; then PKG_CHECK_MODULES(PYGOBJECT, [pygobject-3.0 >= 3.12.0]) pyoverridesdir="\$(pyexecdir)/gi/overrides" AC_SUBST(pyoverridesdir) fi AM_CONDITIONAL(ENABLE_PYVIPS8, test x"$enable_pyvips8" = x"yes") # hmm, these don't have .pc files on ubuntu 5.10, how odd FIND_ZIP( [with_zip=yes], [AC_MSG_WARN([libz not found; disabling ZIP support]) with_zip=no ]) # look for TIFF with pkg-config ... fall back to our tester # pkgconfig support for libtiff starts with libtiff-4 AC_ARG_WITH([tiff], AS_HELP_STRING([--without-tiff], [build without libtiff (default: test)])) if test x"$with_tiff" != "xno"; then PKG_CHECK_MODULES(TIFF, libtiff-4, [AC_DEFINE(HAVE_TIFF,1,[define if you have libtiff installed.]) with_tiff="yes (pkg-config libtiff-4)" PACKAGES_USED="$PACKAGES_USED libtiff-4"], [FIND_TIFF( with_tiff="yes (found by search)", [AC_MSG_WARN([libtiff not found; disabling TIFF support]) with_tiff=no ]) ]) fi # look for PNG with pkg-config ... fall back to our tester AC_ARG_WITH([png], AS_HELP_STRING([--without-png], [build without libpng (default: test)])) if test x"$with_png" != "xno"; then PKG_CHECK_MODULES(PNG, libpng >= 1.2.9, [AC_DEFINE(HAVE_PNG,1,[define if you have libpng installed.]) with_png="yes (pkg-config libpng >= 1.2.9)" PACKAGES_USED="$PACKAGES_USED libpng"], [FIND_PNG( with_png="yes (found by search)", [AC_MSG_WARN([libpng not found; disabling PNG support]) with_png=no ]) ]) fi FIND_JPEG( [with_jpeg=yes EXTRA_LIBS_USED="$EXTRA_LIBS_USED -ljpeg"], [AC_MSG_WARN([libjpeg not found; disabling JPEG support]) with_jpeg=no ]) # JPEG extension parameters available in libjpeg-turbo >=1.5.0, mozjpeg >=3.0 if test x"$with_jpeg" = "xyes"; then AC_MSG_CHECKING([for JPEG extension parameters]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include ]], [[ J_BOOLEAN_PARAM test; ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_JPEG_EXT_PARAMS],1,[libjpeg has extension parameters]) ], [ AC_MSG_RESULT([no]) ]) fi # libexif AC_ARG_WITH([libexif], AS_HELP_STRING([--without-libexif], [build without libexif (default: test)])) if test x"$with_libexif" != "xno"; then PKG_CHECK_MODULES(EXIF, libexif >= 0.6, [AC_DEFINE(HAVE_EXIF,1,[define if you have libexif >= 0.6 installed.]) with_libexif=yes PACKAGES_USED="$PACKAGES_USED libexif"], [AC_MSG_WARN([libexif >= 0.6 not found; disabling exif support]) with_libexif=no ]) fi # some libexif packages need include , some just # how annoying if test x"$with_libexif" != "xno"; then # cppflags not cflags because we want the preproc to see the -I as well save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$EXIF_CFLAGS $CPPFLAGS" AC_CHECK_HEADER(exif-data.h, AC_DEFINE(UNTAGGED_EXIF,1,[libexif includes don't need libexif prefix])) CPPFLAGS=$save_CPPFLAGS fi # make python binding? AC_ARG_WITH([python], AS_HELP_STRING([--without-python], [build without vips7 Python bindings (default: test)])) if test x"$with_python" != x"no"; then if test x"$enable_cxx" = x"no"; then # if C++ is off, we can't do Python with_python=no AC_MSG_WARN([C++ is off, disabling vips7 Python binding]) fi fi if test x"$with_python" != x"no"; then AM_PATH_PYTHON(2.7,, [with_python=no AC_MSG_WARN([Python not found; disabling vips7 Python binding])] ) fi if test x"$with_python" != x"no"; then AM_CHECK_PYTHON_HEADERS(, [with_python=no AC_MSG_WARN([Python headers not found; disabling vips7 Python binding])]) fi # we don't check for swig: we include the generated bindings in the # distribution if test x"$with_python" != x"no"; then AM_CONDITIONAL(HAVE_PYTHON, true) with_python=yes else AM_CONDITIONAL(HAVE_PYTHON, false) fi # Gather all up for VIPS_CFLAGS, VIPS_INCLUDES, VIPS_LIBS # sort includes to get longer, more specific dirs first # helps, for example, selecting graphicsmagick over imagemagick VIPS_CFLAGS=`for i in $VIPS_CFLAGS $GTHREAD_CFLAGS $REQUIRED_CFLAGS $PANGOFT2_CFLAGS $GSF_CFLAGS $FFTW_CFLAGS $MAGICK_CFLAGS $PNG_CFLAGS $EXIF_CFLAGS $MATIO_CFLAGS $CFITSIO_CFLAGS $LIBWEBP_CFLAGS $OPENEXR_CFLAGS $OPENSLIDE_CFLAGS $ORC_CFLAGS $TIFF_CFLAGS $LCMS_CFLAGS do echo $i done | sort -ru` VIPS_CFLAGS=`echo $VIPS_CFLAGS` VIPS_CFLAGS="$VIPS_DEBUG_FLAGS $VIPS_CFLAGS" VIPS_INCLUDES="$PNG_INCLUDES $TIFF_INCLUDES $ZIP_INCLUDES $JPEG_INCLUDES" VIPS_LIBS="$MAGICK_LIBS $PNG_LIBS $TIFF_LIBS $ZIP_LIBS $JPEG_LIBS $GTHREAD_LIBS $REQUIRED_LIBS $PANGOFT2_LIBS $GSF_LIBS $FFTW_LIBS $ORC_LIBS $LCMS_LIBS $OPENEXR_LIBS $OPENSLIDE_LIBS $CFITSIO_LIBS $LIBWEBP_LIBS $MATIO_LIBS $EXIF_LIBS -lm" AC_SUBST(VIPS_LIBDIR) AC_SUBST(VIPS_CFLAGS) AC_SUBST(VIPS_INCLUDES) AC_SUBST(VIPS_LIBS) AC_SUBST(PACKAGES_USED) AC_SUBST(EXTRA_LIBS_USED) # needed by test/variables.sh.in # :( what's a better way to do this, argh TOP_SRCDIR=$ac_pwd AC_SUBST(TOP_SRCDIR) AC_OUTPUT([ vips.pc vipsCC.pc vips-cpp.pc Makefile libvips/include/vips/version.h libvips/include/Makefile libvips/include/vips/Makefile libvips/Makefile libvips/arithmetic/Makefile libvips/colour/Makefile libvips/conversion/Makefile libvips/convolution/Makefile libvips/deprecated/Makefile libvips/foreign/Makefile libvips/freqfilt/Makefile libvips/histogram/Makefile libvips/draw/Makefile libvips/iofuncs/Makefile libvips/morphology/Makefile libvips/mosaicing/Makefile libvips/create/Makefile libvips/resample/Makefile libvips/video/Makefile libvipsCC/include/Makefile libvipsCC/include/vips/Makefile libvipsCC/Makefile cplusplus/include/Makefile cplusplus/include/vips/Makefile cplusplus/Makefile tools/Makefile tools/batch_crop tools/batch_image_convert tools/batch_rubber_sheet tools/light_correct tools/shrink_width python/Makefile test/Makefile test/variables.sh swig/Makefile swig/vipsCC/Makefile man/Makefile doc/Makefile doc/libvips-docs.xml po/Makefile.in ]) AC_MSG_RESULT([ * build options native win32: $vips_os_win32 native OS X: $vips_os_darwin open files in binary mode: $vips_binary_open enable debug: $enable_debug build deprecated components: $enable_deprecated build docs with gtkdoc: $enable_gtk_doc gobject introspection: $found_introspection build vips7 Python binding: $with_python install vips8 Python overrides: $enable_pyvips8 (requires pygobject-3.12.0 or later) * optional dependencies use fftw3 for FFT: $with_fftw Magick package: $with_magickpackage file import with libMagick: $with_magick accelerate loops with orc: $with_orc (requires orc-0.4.11 or later) ICC profile support with lcms: $with_lcms file import with OpenEXR: $with_OpenEXR file import with OpenSlide: $with_openslide (requires openslide-3.3.0 or later) file import with matio: $with_matio file import with cfitsio: $with_cfitsio file import/export with libwebp: $with_libwebp text rendering with pangoft2: $with_pangoft2 file import/export with libpng: $with_png (requires libpng-1.2.9 or later) file import/export with libtiff: $with_tiff file import/export with libjpeg: $with_jpeg image pyramid export: $with_gsf (requires libgsf-1 1.14.27 or later) use libexif to load/save JPEG metadata: $with_libexif ]) vips-8.2.2/libvipsCC/0000775000175000017500000000000012651721506011372 500000000000000vips-8.2.2/libvipsCC/VImage.cc0000664000175000017500000002647512644170367013014 00000000000000// Object part of VImage class /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #include #include #ifdef WITH_DMALLOC #include #endif /*WITH_DMALLOC*/ /* #define DEBUG */ VIPS_NAMESPACE_START /* Useful to have these as C++ functions. */ bool init( const char *argv0 ) { return( vips__init( argv0 ) == 0 ); } void shutdown() { vips_shutdown(); } void thread_shutdown() { vips_thread_shutdown(); } void VImage::refblock::debug_print() { std::list::iterator i; printf( "refblock %p:\n", this ); printf( " im = %p", im ); if( im && im->filename ) printf( " (im->filename = \"%s\")", im->filename ); printf( "\n" ); printf( " close_on_delete = %d\n", close_on_delete ); printf( " nrefs (refs to us) = %d\n", nrefs ); printf( " orefs (refs we make) = refblocks " ); for( i = orefs.begin(); i != orefs.end(); ++i ) printf( "%p ", *i ); printf( "\n" ); } // dump all refblocks for debugging void VImage::print_all() { #ifdef DEBUG std::list::iterator i; printf( "*** VImage::refblock::print_all() start\n" ); for( i = all_refblock.begin(); i != all_refblock.end(); ++i ) (*i)->debug_print(); printf( "*** VImage::refblock::print_all() end\n" ); #endif /*DEBUG*/ } // easy call from C version void im__ccp_print_all() { VImage::print_all(); } // constructor VImage::refblock::refblock() { im = 0; close_on_delete = 1; nrefs = 1; #ifdef DEBUG all_refblock.push_front( this ); #endif /*DEBUG*/ } // Add a ref - this (output image) depends upon VipsImage in void VImage::refblock::addref( refblock *in ) throw( VError ) { if( this == in ) verror( "sanity failure" ); in->nrefs++; orefs.push_front( in ); } VImage::refblock::~refblock() throw( VError ) { #ifdef DEBUG printf( "VImage::refblock::removeref(): death!\n" ); debug_print(); #endif /*DEBUG*/ std::list::iterator i; if( close_on_delete && im ) { if( im_close( im ) ) verror(); im = 0; } // remove any refs we have ... may trigger other destructs in turn for( i = orefs.begin(); i != orefs.end(); ++i ) (*i)->removeref(); #ifdef DEBUG all_refblock.remove( this ); #endif /*DEBUG*/ } // Remove a ref void VImage::refblock::removeref() throw( VError ) { nrefs--; if( nrefs < 0 ) verror( "too many closes!" ); if( nrefs == 0 ) delete this; } // Init with name ... mode defaults to "rd" VImage::VImage( const char *name, const char *mode ) throw( VError ) { _ref = new refblock; if( !(_ref->im = im_open( name, mode )) ) verror(); _ref->close_on_delete = 1; #ifdef DEBUG printf( "VImage::VImage( \"%s\", \"%s\" )\n", name, mode ); _ref->debug_print(); #endif /*DEBUG*/ } // Build a VImage from an VipsImage structure VImage::VImage( _VipsImage *in ) { _ref = new refblock; _ref->im = in; _ref->close_on_delete = 0; #ifdef DEBUG printf( "VImage::VImage( VipsImage* %p )\n", in ); _ref->debug_print(); #endif /*DEBUG*/ } // Build from memory buffer VImage::VImage( void *buffer, int width, int height, int bands, TBandFmt format ) throw( VError ) { _ref = new refblock; if( !(_ref->im = im_image( buffer, width, height, bands, VipsBandFmt( format ) )) ) verror(); _ref->close_on_delete = 1; #ifdef DEBUG printf( "VImage::VImage( void* %p, %d, %d )\n", buffer, width, height ); _ref->debug_print(); #endif /*DEBUG*/ } // Empty init ... means open intermediate VImage::VImage() throw( VError ) { static int id = 0; char filename[256]; _ref = new refblock; /* This is not safe with threading ... but it doesn't really matter. */ im_snprintf( filename, 256, "intermediate image #%d", id++ ); if( !(_ref->im = im_open( filename, "p" )) ) verror(); _ref->close_on_delete = 1; #ifdef DEBUG printf( "VImage::VImage()\n" ); _ref->debug_print(); #endif /*DEBUG*/ } // Copy constructor VImage::VImage( const VImage &a ) { _ref = a._ref; _ref->nrefs++; } // Assignment VImage &VImage::operator=( const VImage &a ) throw( VError ) { _ref->removeref(); _ref = a._ref; _ref->nrefs++; return( *this ); } // Extract underlying data pointer void *VImage::data() const throw( VError ) { if( im_incheck( _ref->im ) ) verror(); return( (void *) _ref->im->data ); } void VImage::debug_print() { im_printdesc( image() ); } // Like jpeg2vips, but convert to a disc file rather than to memory // We can handle huge files without running out of RAM VImage VImage::convert2disc( const char* convert, const char* in, const char* disc ) throw( VError ) { VImage out( disc, "w" ); Vargv _vec( convert ); _vec.data(0) = (im_object) in; _vec.data(1) = out.image(); _vec.call(); return( out ); } // Write this to a VImage VImage VImage::write( VImage out ) throw( VError ) { if( im_copy( _ref->im, out._ref->im ) ) verror(); out._ref->addref( _ref ); return( out ); } VImage VImage::write( const char *name ) throw( VError ) { VImage out( name, "w" ); if( im_copy( _ref->im, out._ref->im ) ) verror(); out._ref->addref( _ref ); return( out ); } VImage VImage::write() throw( VError ) { VImage out( "VImage:w1", "t" ); if( im_copy( _ref->im, out._ref->im ) ) verror(); out._ref->addref( _ref ); return( out ); } // Projection functions to get header fields int VImage::Xsize() { return( _ref->im->Xsize ); } int VImage::Ysize() { return( _ref->im->Ysize ); } int VImage::Bands() { return( _ref->im->Bands ); } VImage::TBandFmt VImage::BandFmt() { return( (TBandFmt) _ref->im->BandFmt ); } VImage::TCoding VImage::Coding() { return( (TCoding) _ref->im->Coding ); } VImage::TType VImage::Type() { return( (TType) _ref->im->Type ); } float VImage::Xres() { return( _ref->im->Xres ); } float VImage::Yres() { return( _ref->im->Yres ); } int VImage::Length() { return( _ref->im->Length ); } VImage::TCompression VImage::Compression() { return( (TCompression) _ref->im->Compression ); } short VImage::Level() { return( _ref->im->Level ); } int VImage::Xoffset() { return( _ref->im->Xoffset ); } int VImage::Yoffset() { return( _ref->im->Yoffset ); } // Derived fields const char *VImage::filename() { return( _ref->im->filename ); } const char *VImage::Hist() { return( im_history_get( _ref->im ) ); } VImage VImage::hough_circle( int scale, int min_radius, int max_radius ) throw( VError ) { VImage in = *this; VipsImage *x; VImage out; if( vips_hough_circle( in.image(), &x, "scale", scale, "min_radius", min_radius, "max_radius", max_radius, NULL ) ) verror(); if( vips_image_write( x, out.image() ) ) { g_object_unref( x ); verror(); } g_object_unref( x ); return( out ); } // metadata // base functionality void VImage::meta_set( const char *field, GValue *value ) throw( VError ) { if( im_meta_set( _ref->im, field, value ) ) verror(); } gboolean VImage::meta_remove( const char *field ) { return( im_meta_remove( _ref->im, field ) ); } void VImage::meta_get( const char *field, GValue *value_copy ) throw( VError ) { if( im_meta_get( _ref->im, field, value_copy ) ) verror(); } GType VImage::meta_get_typeof( const char *field ) { return( im_meta_get_typeof( _ref->im, field ) ); } // convenience functions int VImage::meta_get_int( const char *field ) throw( VError ) { int result; if( im_meta_get_int( _ref->im, field, &result ) ) verror(); return( result ); } double VImage::meta_get_double( const char *field ) throw( VError ) { double result; if( im_meta_get_double( _ref->im, field, &result ) ) verror(); return( result ); } const char *VImage::meta_get_string( const char *field ) throw( VError ) { const char *result; if( im_meta_get_string( _ref->im, field, &result ) ) verror(); return( result ); } void *VImage::meta_get_area( const char *field ) throw( VError ) { void *result; if( im_meta_get_area( _ref->im, field, &result ) ) verror(); return( result ); } void *VImage::meta_get_blob( const char *field, size_t *length ) throw( VError ) { void *result; if( im_meta_get_blob( _ref->im, field, &result, length ) ) verror(); return( result ); } void VImage::meta_set( const char *field, int value ) throw( VError ) { if( im_meta_set_int( _ref->im, field, value ) ) verror(); } void VImage::meta_set( const char *field, double value ) throw( VError ) { if( im_meta_set_double( _ref->im, field, value ) ) verror(); } void VImage::meta_set( const char *field, const char *value ) throw( VError ) { if( im_meta_set_string( _ref->im, field, value ) ) verror(); } void VImage::meta_set( const char *field, VCallback free_fn, void *value ) throw( VError ) { if( im_meta_set_area( _ref->im, field, free_fn, value ) ) verror(); } void VImage::meta_set( const char *field, VCallback free_fn, void *value, size_t length ) throw( VError ) { if( im_meta_set_blob( _ref->im, field, free_fn, value, length ) ) verror(); } // Set header fields and setbuf() in one go. void VImage::initdesc( int x, int y, int b, TBandFmt f, TCoding c, TType t, float xr, float yr, int xo, int yo ) throw( VError ) { im_initdesc( _ref->im, x, y, b, 0, VipsBandFmt( f ), VipsCoding( c ), VipsType( t ), xr, yr, xo, yo ); if( im_setupout( _ref->im ) ) verror(); } // Create a Vargv from a name Vargv::Vargv( const char *name ) { im_function *f = im_find_function( (char *) name ); if( !f ) verror(); fn = (im__function *) f; base = new im_object[f->argc]; if( im_allocate_vargv( f, base ) ) { delete[] base; verror(); } } // Destroy a Vargv Vargv::~Vargv() { im_function *f = (im_function *) fn; // free any memory allocated for input vectors // this is the stuff allocated in each function during _object* build, // see vipsc++.cc for( int i = 0; i < f->argc; i++ ) { im_type_desc *ty = f->argv[i].desc; if( !(ty->flags & IM_TYPE_OUTPUT) ) { if( strcmp( ty->type, IM_TYPE_IMAGEVEC ) == 0 || strcmp( ty->type, IM_TYPE_DOUBLEVEC ) == 0 || strcmp( ty->type, IM_TYPE_INTVEC ) == 0 ) { // will work for doublevec and intvec too im_imagevec_object *io = (im_imagevec_object *) base[i]; if( io->vec ) { delete[] io->vec; io->vec = NULL; } } else if( strcmp( ty->type, IM_TYPE_INTERPOLATE ) == 0 ) g_object_unref( base[i] ); } } im_free_vargv( f, base ); delete[] base; } // Call the function void Vargv::call() { im_function *f = (im_function *) fn; if( f->disp( base ) ) verror(); } /* Insert automatically generated wrappers for VIPS image processing * functions. */ #include "vipsc++.cc" VIPS_NAMESPACE_END vips-8.2.2/libvipsCC/vipsc++.cc0000664000175000017500000041010212530402247013063 00000000000000 // bodies for package arithmetic // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_abs: absolute value VImage VImage::abs() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_abs" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_acostra: acos of image (result in degrees) VImage VImage::acos() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_acostra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_add: add two images VImage VImage::add( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_add" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_asintra: asin of image (result in degrees) VImage VImage::asin() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_asintra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_atantra: atan of image (result in degrees) VImage VImage::atan() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_atantra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_avg: average value of image double VImage::avg() throw( VError ) { VImage in = *this; double value; Vargv _vec( "im_avg" ); _vec.data(0) = in.image(); _vec.call(); value = *((double*)_vec.data(1)); return( value ); } // im_point: interpolate value at single point double VImage::point( char* interpolate, double x, double y, int band ) throw( VError ) { VImage in = *this; double out; Vargv _vec( "im_point" ); _vec.data(0) = in.image(); if( vips__input_interpolate_init( &_vec.data(1), interpolate ) ) verror(); *((double*) _vec.data(2)) = x; *((double*) _vec.data(3)) = y; *((int*) _vec.data(4)) = band; _vec.call(); out = *((double*)_vec.data(5)); return( out ); } // im_point_bilinear: interpolate value at single point, linearly double VImage::point_bilinear( double x, double y, int band ) throw( VError ) { VImage in = *this; double val; Vargv _vec( "im_point_bilinear" ); _vec.data(0) = in.image(); *((double*) _vec.data(1)) = x; *((double*) _vec.data(2)) = y; *((int*) _vec.data(3)) = band; _vec.call(); val = *((double*)_vec.data(4)); return( val ); } // im_bandmean: average image bands VImage VImage::bandmean() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_bandmean" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_ceil: round to smallest integer value not less than VImage VImage::ceil() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_ceil" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_costra: cos of image (angles in degrees) VImage VImage::cos() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_costra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_cross_phase: phase of cross power spectrum of two complex images VImage VImage::cross_phase( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_cross_phase" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_deviate: standard deviation of image double VImage::deviate() throw( VError ) { VImage in = *this; double value; Vargv _vec( "im_deviate" ); _vec.data(0) = in.image(); _vec.call(); value = *((double*)_vec.data(1)); return( value ); } // im_divide: divide two images VImage VImage::divide( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_divide" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_exp10tra: 10^pel of image VImage VImage::exp10() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_exp10tra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_expntra: x^pel of image VImage VImage::expn( double x ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_expntra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = x; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_expntra_vec: [x,y,z]^pel of image VImage VImage::expn( std::vector v ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_expntra_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = v.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[v.size()]; for( unsigned int i = 0; i < v.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = v[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_exptra: e^pel of image VImage VImage::exp() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_exptra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_floor: round to largest integer value not greater than VImage VImage::floor() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_floor" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_invert: photographic negative VImage VImage::invert() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_invert" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_lintra: calculate a*in + b = outfile VImage VImage::lin( double a, double b ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_lintra" ); *((double*) _vec.data(0)) = a; _vec.data(1) = in.image(); *((double*) _vec.data(2)) = b; _vec.data(3) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_linreg: pixelwise linear regression VImage VImage::linreg( std::vector ins, std::vector xs ) throw( VError ) { VImage out; Vargv _vec( "im_linreg" ); ((im_imagevec_object*) _vec.data(0))->n = ins.size(); ((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[ins.size()]; for( unsigned int i = 0; i < ins.size(); i++ ) ((im_imagevec_object*) _vec.data(0))->vec[i] = ins[i].image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = xs.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[xs.size()]; for( unsigned int i = 0; i < xs.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = xs[i]; _vec.call(); for( unsigned int i = 0; i < ins.size(); i++ ) out._ref->addref( ins[i]._ref ); return( out ); } // im_lintra_vec: calculate a*in + b -> out, a and b vectors VImage VImage::lin( std::vector a, std::vector b ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_lintra_vec" ); ((im_doublevec_object*) _vec.data(0))->n = a.size(); ((im_doublevec_object*) _vec.data(0))->vec = new double[a.size()]; for( unsigned int i = 0; i < a.size(); i++ ) ((im_doublevec_object*) _vec.data(0))->vec[i] = a[i]; _vec.data(1) = in.image(); ((im_doublevec_object*) _vec.data(2))->n = b.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[b.size()]; for( unsigned int i = 0; i < b.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = b[i]; _vec.data(3) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_log10tra: log10 of image VImage VImage::log10() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_log10tra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_logtra: ln of image VImage VImage::log() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_logtra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_max: maximum value of image double VImage::max() throw( VError ) { VImage in = *this; double value; Vargv _vec( "im_max" ); _vec.data(0) = in.image(); _vec.call(); value = *((double*)_vec.data(1)); return( value ); } // im_maxpos: position of maximum value of image std::complex VImage::maxpos() throw( VError ) { VImage in = *this; std::complex position; Vargv _vec( "im_maxpos" ); _vec.data(0) = in.image(); _vec.call(); position = *((std::complex*)_vec.data(1)); return( position ); } // im_maxpos_avg: position of maximum value of image, averaging in case of draw double VImage::maxpos_avg( double& y, double& out ) throw( VError ) { VImage in = *this; double x; Vargv _vec( "im_maxpos_avg" ); _vec.data(0) = in.image(); _vec.call(); x = *((double*)_vec.data(1)); y = *((double*)_vec.data(2)); out = *((double*)_vec.data(3)); return( x ); } // im_measure: measure averages of a grid of patches VDMask VImage::measure( int x, int y, int w, int h, int h_patches, int v_patches ) throw( VError ) { VImage in = *this; VDMask mask; Vargv _vec( "im_measure" ); _vec.data(0) = in.image(); ((im_mask_object*) _vec.data(1))->name = (char*)"noname"; *((int*) _vec.data(2)) = x; *((int*) _vec.data(3)) = y; *((int*) _vec.data(4)) = w; *((int*) _vec.data(5)) = h; *((int*) _vec.data(6)) = h_patches; *((int*) _vec.data(7)) = v_patches; _vec.call(); mask.embed( (DOUBLEMASK *)((im_mask_object*)_vec.data(1))->mask ); return( mask ); } // im_min: minimum value of image double VImage::min() throw( VError ) { VImage in = *this; double value; Vargv _vec( "im_min" ); _vec.data(0) = in.image(); _vec.call(); value = *((double*)_vec.data(1)); return( value ); } // im_minpos: position of minimum value of image std::complex VImage::minpos() throw( VError ) { VImage in = *this; std::complex position; Vargv _vec( "im_minpos" ); _vec.data(0) = in.image(); _vec.call(); position = *((std::complex*)_vec.data(1)); return( position ); } // im_multiply: multiply two images VImage VImage::multiply( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_multiply" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_powtra: pel^x of image VImage VImage::pow( double x ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_powtra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = x; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_powtra_vec: pel^[x,y,z] of image VImage VImage::pow( std::vector v ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_powtra_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = v.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[v.size()]; for( unsigned int i = 0; i < v.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = v[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_recomb: linear recombination with mask VImage VImage::recomb( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_recomb" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_remainder: remainder after integer division VImage VImage::remainder( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_remainder" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_remainderconst: remainder after integer division by a constant VImage VImage::remainder( double x ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_remainderconst" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = x; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_remainder_vec: remainder after integer division by a vector of constants VImage VImage::remainder( std::vector x ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_remainder_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = x.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[x.size()]; for( unsigned int i = 0; i < x.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = x[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_rint: round to nearest integer value VImage VImage::rint() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_rint" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_sign: unit vector in direction of value VImage VImage::sign() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_sign" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_sintra: sin of image (angles in degrees) VImage VImage::sin() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_sintra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_stats: many image statistics in one pass VDMask VImage::stats() throw( VError ) { VImage in = *this; VDMask statistics; Vargv _vec( "im_stats" ); _vec.data(0) = in.image(); ((im_mask_object*) _vec.data(1))->name = (char*)"noname"; _vec.call(); statistics.embed( (DOUBLEMASK *)((im_mask_object*)_vec.data(1))->mask ); return( statistics ); } // im_subtract: subtract two images VImage VImage::subtract( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_subtract" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_tantra: tan of image (angles in degrees) VImage VImage::tan() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_tantra" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // bodies for package cimg // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_greyc: noise-removing filter VImage VImage::greyc( int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) throw( VError ) { VImage src = *this; VImage dst; Vargv _vec( "im_greyc" ); _vec.data(0) = src.image(); _vec.data(1) = dst.image(); *((int*) _vec.data(2)) = iterations; *((double*) _vec.data(3)) = amplitude; *((double*) _vec.data(4)) = sharpness; *((double*) _vec.data(5)) = anisotropy; *((double*) _vec.data(6)) = alpha; *((double*) _vec.data(7)) = sigma; *((double*) _vec.data(8)) = dl; *((double*) _vec.data(9)) = da; *((double*) _vec.data(10)) = gauss_prec; *((int*) _vec.data(11)) = interpolation; *((int*) _vec.data(12)) = fast_approx; _vec.call(); dst._ref->addref( src._ref ); return( dst ); } // im_greyc_mask: noise-removing filter, with a mask VImage VImage::greyc_mask( VImage mask, int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) throw( VError ) { VImage src = *this; VImage dst; Vargv _vec( "im_greyc_mask" ); _vec.data(0) = src.image(); _vec.data(1) = dst.image(); _vec.data(2) = mask.image(); *((int*) _vec.data(3)) = iterations; *((double*) _vec.data(4)) = amplitude; *((double*) _vec.data(5)) = sharpness; *((double*) _vec.data(6)) = anisotropy; *((double*) _vec.data(7)) = alpha; *((double*) _vec.data(8)) = sigma; *((double*) _vec.data(9)) = dl; *((double*) _vec.data(10)) = da; *((double*) _vec.data(11)) = gauss_prec; *((int*) _vec.data(12)) = interpolation; *((int*) _vec.data(13)) = fast_approx; _vec.call(); dst._ref->addref( src._ref ); dst._ref->addref( mask._ref ); return( dst ); } // bodies for package colour // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_LCh2Lab: convert LCh to Lab VImage VImage::LCh2Lab() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_LCh2Lab" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_LCh2UCS: convert LCh to UCS VImage VImage::LCh2UCS() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_LCh2UCS" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_Lab2LCh: convert Lab to LCh VImage VImage::Lab2LCh() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_Lab2LCh" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_Lab2LabQ: convert Lab to LabQ VImage VImage::Lab2LabQ() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_Lab2LabQ" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_Lab2LabS: convert Lab to LabS VImage VImage::Lab2LabS() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_Lab2LabS" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_Lab2UCS: convert Lab to UCS VImage VImage::Lab2UCS() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_Lab2UCS" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_Lab2XYZ: convert D65 Lab to XYZ VImage VImage::Lab2XYZ() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_Lab2XYZ" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_Lab2XYZ_temp: convert Lab to XYZ, with a specified colour temperature VImage VImage::Lab2XYZ_temp( double X0, double Y0, double Z0 ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_Lab2XYZ_temp" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = X0; *((double*) _vec.data(3)) = Y0; *((double*) _vec.data(4)) = Z0; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_Lab2disp: convert Lab to displayable VImage VImage::Lab2disp( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_Lab2disp" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = disp.disp(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_LabQ2LabS: convert LabQ to LabS VImage VImage::LabQ2LabS() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_LabQ2LabS" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_LabQ2Lab: convert LabQ to Lab VImage VImage::LabQ2Lab() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_LabQ2Lab" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_LabQ2XYZ: convert LabQ to XYZ VImage VImage::LabQ2XYZ() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_LabQ2XYZ" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_LabQ2disp: convert LabQ to displayable VImage VImage::LabQ2disp( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_LabQ2disp" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = disp.disp(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_LabS2LabQ: convert LabS to LabQ VImage VImage::LabS2LabQ() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_LabS2LabQ" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_LabS2Lab: convert LabS to Lab VImage VImage::LabS2Lab() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_LabS2Lab" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_UCS2LCh: convert UCS to LCh VImage VImage::UCS2LCh() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_UCS2LCh" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_UCS2Lab: convert UCS to Lab VImage VImage::UCS2Lab() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_UCS2Lab" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_UCS2XYZ: convert UCS to XYZ VImage VImage::UCS2XYZ() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_UCS2XYZ" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_XYZ2Lab: convert D65 XYZ to Lab VImage VImage::XYZ2Lab() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_XYZ2Lab" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_XYZ2Lab_temp: convert XYZ to Lab, with a specified colour temperature VImage VImage::XYZ2Lab_temp( double X0, double Y0, double Z0 ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_XYZ2Lab_temp" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = X0; *((double*) _vec.data(3)) = Y0; *((double*) _vec.data(4)) = Z0; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_XYZ2UCS: convert XYZ to UCS VImage VImage::XYZ2UCS() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_XYZ2UCS" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_XYZ2Yxy: convert XYZ to Yxy VImage VImage::XYZ2Yxy() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_XYZ2Yxy" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_XYZ2disp: convert XYZ to displayble VImage VImage::XYZ2disp( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_XYZ2disp" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = disp.disp(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_XYZ2sRGB: convert XYZ to sRGB VImage VImage::XYZ2sRGB() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_XYZ2sRGB" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_Yxy2XYZ: convert Yxy to XYZ VImage VImage::Yxy2XYZ() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_Yxy2XYZ" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_dE00_fromLab: calculate delta-E CIE2000 for two Lab images VImage VImage::dE00_fromLab( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_dE00_fromLab" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_dECMC_fromLab: calculate delta-E CMC(1:1) for two Lab images VImage VImage::dECMC_fromLab( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_dECMC_fromLab" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_dECMC_fromdisp: calculate delta-E CMC(1:1) for two displayable images VImage VImage::dECMC_fromdisp( VImage in2, VDisplay disp ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_dECMC_fromdisp" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.data(3) = disp.disp(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_dE_fromLab: calculate delta-E for two Lab images VImage VImage::dE_fromLab( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_dE_fromLab" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_dE_fromXYZ: calculate delta-E for two XYZ images VImage VImage::dE_fromXYZ( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_dE_fromXYZ" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_dE_fromdisp: calculate delta-E for two displayable images VImage VImage::dE_fromdisp( VImage in2, VDisplay disp ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_dE_fromdisp" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.data(3) = disp.disp(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_disp2Lab: convert displayable to Lab VImage VImage::disp2Lab( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_disp2Lab" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = disp.disp(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_disp2XYZ: convert displayable to XYZ VImage VImage::disp2XYZ( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_disp2XYZ" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = disp.disp(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_float2rad: convert float to Radiance packed VImage VImage::float2rad() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_float2rad" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_icc_ac2rc: convert LAB from AC to RC using an ICC profile VImage VImage::icc_ac2rc( char* profile ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_icc_ac2rc" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = (im_object) profile; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_icc_export_depth: convert a float LAB to device space with an ICC profile VImage VImage::icc_export_depth( int depth, char* output_profile, int intent ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_icc_export_depth" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = depth; _vec.data(3) = (im_object) output_profile; *((int*) _vec.data(4)) = intent; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_icc_import: convert a device image to float LAB with an ICC profile VImage VImage::icc_import( char* input_profile, int intent ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_icc_import" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = (im_object) input_profile; *((int*) _vec.data(3)) = intent; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_icc_import_embedded: convert a device image to float LAB using the embedded profile VImage VImage::icc_import_embedded( int intent ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_icc_import_embedded" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = intent; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_icc_transform: convert between two device images with a pair of ICC profiles VImage VImage::icc_transform( char* input_profile, char* output_profile, int intent ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_icc_transform" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = (im_object) input_profile; _vec.data(3) = (im_object) output_profile; *((int*) _vec.data(4)) = intent; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_lab_morph: morph colourspace of a LAB image VImage VImage::lab_morph( VDMask greyscale, double L_offset, double L_scale, double a_scale, double b_scale ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_lab_morph" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = greyscale.mask().dptr; *((double*) _vec.data(3)) = L_offset; *((double*) _vec.data(4)) = L_scale; *((double*) _vec.data(5)) = a_scale; *((double*) _vec.data(6)) = b_scale; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_rad2float: convert Radiance packed to float VImage VImage::rad2float() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_rad2float" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_sRGB2XYZ: convert sRGB to XYZ VImage VImage::sRGB2XYZ() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_sRGB2XYZ" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // bodies for package conversion // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_gaussnoise: generate image of gaussian noise with specified statistics VImage VImage::gaussnoise( int xsize, int ysize, double mean, double sigma ) throw( VError ) { VImage out; Vargv _vec( "im_gaussnoise" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = xsize; *((int*) _vec.data(2)) = ysize; *((double*) _vec.data(3)) = mean; *((double*) _vec.data(4)) = sigma; _vec.call(); return( out ); } // im_bandjoin: bandwise join of two images VImage VImage::bandjoin( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_bandjoin" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_black: generate black image VImage VImage::black( int x_size, int y_size, int bands ) throw( VError ) { VImage output; Vargv _vec( "im_black" ); _vec.data(0) = output.image(); *((int*) _vec.data(1)) = x_size; *((int*) _vec.data(2)) = y_size; *((int*) _vec.data(3)) = bands; _vec.call(); return( output ); } // im_c2amph: convert real and imaginary to phase and amplitude VImage VImage::c2amph() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_c2amph" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_c2imag: extract imaginary part of complex image VImage VImage::c2imag() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_c2imag" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_c2real: extract real part of complex image VImage VImage::c2real() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_c2real" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_c2rect: convert phase and amplitude to real and imaginary VImage VImage::c2rect() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_c2rect" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_clip2fmt: convert image format to ofmt VImage VImage::clip2fmt( int ofmt ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2fmt" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = ofmt; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_copy: copy image VImage VImage::copy() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_copy" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_copy_file: copy image to a file and return that VImage VImage::copy_file() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_copy_file" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_copy_morph: copy image, setting pixel layout VImage VImage::copy_morph( int Bands, int BandFmt, int Coding ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_copy_morph" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = Bands; *((int*) _vec.data(3)) = BandFmt; *((int*) _vec.data(4)) = Coding; _vec.call(); output._ref->addref( input._ref ); return( output ); } // im_copy_swap: copy image, swapping byte order VImage VImage::copy_swap() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_copy_swap" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_copy_set: copy image, setting informational fields VImage VImage::copy_set( int Type, double Xres, double Yres, int Xoffset, int Yoffset ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_copy_set" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = Type; *((double*) _vec.data(3)) = Xres; *((double*) _vec.data(4)) = Yres; *((int*) _vec.data(5)) = Xoffset; *((int*) _vec.data(6)) = Yoffset; _vec.call(); output._ref->addref( input._ref ); return( output ); } // im_extract_area: extract area VImage VImage::extract_area( int left, int top, int width, int height ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_extract_area" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = left; *((int*) _vec.data(3)) = top; *((int*) _vec.data(4)) = width; *((int*) _vec.data(5)) = height; _vec.call(); output._ref->addref( input._ref ); return( output ); } // im_extract_areabands: extract area and bands VImage VImage::extract_areabands( int left, int top, int width, int height, int band, int nbands ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_extract_areabands" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = left; *((int*) _vec.data(3)) = top; *((int*) _vec.data(4)) = width; *((int*) _vec.data(5)) = height; *((int*) _vec.data(6)) = band; *((int*) _vec.data(7)) = nbands; _vec.call(); output._ref->addref( input._ref ); return( output ); } // im_extract_band: extract band VImage VImage::extract_band( int band ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_extract_band" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = band; _vec.call(); output._ref->addref( input._ref ); return( output ); } // im_extract_bands: extract several bands VImage VImage::extract_bands( int band, int nbands ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_extract_bands" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = band; *((int*) _vec.data(3)) = nbands; _vec.call(); output._ref->addref( input._ref ); return( output ); } // im_extract: extract area/band VImage VImage::extract( int left, int top, int width, int height, int band ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_extract" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = left; *((int*) _vec.data(3)) = top; *((int*) _vec.data(4)) = width; *((int*) _vec.data(5)) = height; *((int*) _vec.data(6)) = band; _vec.call(); output._ref->addref( input._ref ); return( output ); } // im_falsecolour: turn luminance changes into chrominance changes VImage VImage::falsecolour() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_falsecolour" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_fliphor: flip image left-right VImage VImage::fliphor() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_fliphor" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_flipver: flip image top-bottom VImage VImage::flipver() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_flipver" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_gbandjoin: bandwise join of many images VImage VImage::gbandjoin( std::vector in ) throw( VError ) { VImage out; Vargv _vec( "im_gbandjoin" ); ((im_imagevec_object*) _vec.data(0))->n = in.size(); ((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[in.size()]; for( unsigned int i = 0; i < in.size(); i++ ) ((im_imagevec_object*) _vec.data(0))->vec[i] = in[i].image(); _vec.data(1) = out.image(); _vec.call(); for( unsigned int i = 0; i < in.size(); i++ ) out._ref->addref( in[i]._ref ); return( out ); } // im_grid: chop a tall thin image into a grid of images VImage VImage::grid( int tile_height, int across, int down ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_grid" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = tile_height; *((int*) _vec.data(3)) = across; *((int*) _vec.data(4)) = down; _vec.call(); output._ref->addref( input._ref ); return( output ); } // im_insert: insert sub-image into main image at position VImage VImage::insert( VImage sub, int x, int y ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_insert" ); _vec.data(0) = in.image(); _vec.data(1) = sub.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = x; *((int*) _vec.data(4)) = y; _vec.call(); out._ref->addref( in._ref ); out._ref->addref( sub._ref ); return( out ); } // im_insertset: insert sub into main at every position in x, y VImage VImage::insert( VImage sub, std::vector x, std::vector y ) throw( VError ) { VImage main = *this; VImage out; Vargv _vec( "im_insertset" ); _vec.data(0) = main.image(); _vec.data(1) = sub.image(); _vec.data(2) = out.image(); ((im_intvec_object*) _vec.data(3))->n = x.size(); ((im_intvec_object*) _vec.data(3))->vec = new int[x.size()]; for( unsigned int i = 0; i < x.size(); i++ ) ((im_intvec_object*) _vec.data(3))->vec[i] = x[i]; ((im_intvec_object*) _vec.data(4))->n = y.size(); ((im_intvec_object*) _vec.data(4))->vec = new int[y.size()]; for( unsigned int i = 0; i < y.size(); i++ ) ((im_intvec_object*) _vec.data(4))->vec[i] = y[i]; _vec.call(); return( out ); } // im_insert_noexpand: insert sub-image into main image at position, no expansion VImage VImage::insert_noexpand( VImage sub, int x, int y ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_insert_noexpand" ); _vec.data(0) = in.image(); _vec.data(1) = sub.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = x; *((int*) _vec.data(4)) = y; _vec.call(); out._ref->addref( in._ref ); out._ref->addref( sub._ref ); return( out ); } // im_embed: embed in within a set of borders VImage VImage::embed( int type, int x, int y, int width, int height ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_embed" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = type; *((int*) _vec.data(3)) = x; *((int*) _vec.data(4)) = y; *((int*) _vec.data(5)) = width; *((int*) _vec.data(6)) = height; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_lrjoin: join two images left-right VImage VImage::lrjoin( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_lrjoin" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_msb: convert to uchar by discarding bits VImage VImage::msb() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_msb" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_msb_band: convert to single band uchar by discarding bits VImage VImage::msb_band( int band ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_msb_band" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = band; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_replicate: replicate an image horizontally and vertically VImage VImage::replicate( int across, int down ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_replicate" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = across; *((int*) _vec.data(3)) = down; _vec.call(); output._ref->addref( input._ref ); return( output ); } // im_ri2c: join two non-complex images to form complex VImage VImage::ri2c( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_ri2c" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_rot180: rotate image 180 degrees VImage VImage::rot180() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_rot180" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_rot270: rotate image 270 degrees clockwise VImage VImage::rot270() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_rot270" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_rot90: rotate image 90 degrees clockwise VImage VImage::rot90() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_rot90" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_scale: scale image linearly to fit range 0-255 VImage VImage::scale() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_scale" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_scaleps: logarithmic scale of image to fit range 0-255 VImage VImage::scaleps() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_scaleps" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_subsample: subsample image by integer factors VImage VImage::subsample( int xshrink, int yshrink ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_subsample" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = xshrink; *((int*) _vec.data(3)) = yshrink; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_system: run command on image char* VImage::system( char* command ) throw( VError ) { VImage im = *this; char* output; Vargv _vec( "im_system" ); _vec.data(0) = im.image(); _vec.data(1) = (im_object) command; _vec.call(); output = (char*) _vec.data(2); return( output ); } // im_system_image: run command on image, with image output VImage VImage::system_image( char* in_format, char* out_format, char* command, char*& log ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_system_image" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = (im_object) in_format; _vec.data(3) = (im_object) out_format; _vec.data(4) = (im_object) command; _vec.call(); log = (char*) _vec.data(5); return( out ); } // im_tbjoin: join two images top-bottom VImage VImage::tbjoin( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_tbjoin" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_text: generate text image VImage VImage::text( char* text, char* font, int width, int alignment, int dpi ) throw( VError ) { VImage out; Vargv _vec( "im_text" ); _vec.data(0) = out.image(); _vec.data(1) = (im_object) text; _vec.data(2) = (im_object) font; *((int*) _vec.data(3)) = width; *((int*) _vec.data(4)) = alignment; *((int*) _vec.data(5)) = dpi; _vec.call(); return( out ); } // im_wrap: shift image origin, wrapping at sides VImage VImage::wrap( int x, int y ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_wrap" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = x; *((int*) _vec.data(3)) = y; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_zoom: simple zoom of an image by integer factors VImage VImage::zoom( int xfac, int yfac ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_zoom" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((int*) _vec.data(2)) = xfac; *((int*) _vec.data(3)) = yfac; _vec.call(); output._ref->addref( input._ref ); return( output ); } // bodies for package convolution // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_aconvsep: approximate separable convolution VImage VImage::aconvsep( VDMask matrix, int n_layers ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_aconvsep" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr; *((int*) _vec.data(3)) = n_layers; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_aconv: approximate convolution VImage VImage::aconv( VDMask matrix, int n_layers, int cluster ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_aconv" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr; *((int*) _vec.data(3)) = n_layers; *((int*) _vec.data(4)) = cluster; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_addgnoise: add gaussian noise with mean 0 and std. dev. sigma VImage VImage::addgnoise( double sigma ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_addgnoise" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = sigma; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_compass: convolve with 8-way rotating integer mask VImage VImage::compass( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_compass" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_contrast_surface: find high-contrast points in an image VImage VImage::contrast_surface( int half_win_size, int spacing ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_contrast_surface" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = half_win_size; *((int*) _vec.data(3)) = spacing; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_conv: convolve VImage VImage::conv( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_conv" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_conv_f: convolve, with DOUBLEMASK VImage VImage::conv( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_conv_f" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_convsep: seperable convolution VImage VImage::convsep( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_convsep" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_convsep_f: seperable convolution, with DOUBLEMASK VImage VImage::convsep( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_convsep_f" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_fastcor: fast correlate in2 within in1 VImage VImage::fastcor( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_fastcor" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_gradcor: non-normalised correlation of gradient of in2 within in1 VImage VImage::gradcor( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_gradcor" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_gradient: convolve with 2-way rotating mask VImage VImage::gradient( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_gradient" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_grad_x: horizontal difference image VImage VImage::grad_x() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_grad_x" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_grad_y: vertical difference image VImage VImage::grad_y() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_grad_y" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_lindetect: convolve with 4-way rotating mask VImage VImage::lindetect( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_lindetect" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_sharpen: sharpen high frequencies of L channel of LabQ VImage VImage::sharpen( int mask_size, double x1, double y2, double y3, double m1, double m2 ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_sharpen" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = mask_size; *((double*) _vec.data(3)) = x1; *((double*) _vec.data(4)) = y2; *((double*) _vec.data(5)) = y3; *((double*) _vec.data(6)) = m1; *((double*) _vec.data(7)) = m2; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_spcor: normalised correlation of in2 within in1 VImage VImage::spcor( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_spcor" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // bodies for package deprecated // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_argb2rgba: convert pre-multipled argb to png-style rgba VImage VImage::argb2rgba() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_argb2rgba" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_flood_copy: flood with ink from start_x, start_y while pixel == start pixel VImage VImage::flood_copy( int start_x, int start_y, std::vector ink ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_flood_copy" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = start_x; *((int*) _vec.data(3)) = start_y; ((im_doublevec_object*) _vec.data(4))->n = ink.size(); ((im_doublevec_object*) _vec.data(4))->vec = new double[ink.size()]; for( unsigned int i = 0; i < ink.size(); i++ ) ((im_doublevec_object*) _vec.data(4))->vec[i] = ink[i]; _vec.call(); return( out ); } // im_flood_blob_copy: flood with ink from start_x, start_y while pixel == start pixel VImage VImage::flood_blob_copy( int start_x, int start_y, std::vector ink ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_flood_blob_copy" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = start_x; *((int*) _vec.data(3)) = start_y; ((im_doublevec_object*) _vec.data(4))->n = ink.size(); ((im_doublevec_object*) _vec.data(4))->vec = new double[ink.size()]; for( unsigned int i = 0; i < ink.size(); i++ ) ((im_doublevec_object*) _vec.data(4))->vec[i] = ink[i]; _vec.call(); return( out ); } // im_flood_other_copy: flood mark with serial from start_x, start_y while pixel == start pixel VImage VImage::flood_other_copy( VImage mark, int start_x, int start_y, int serial ) throw( VError ) { VImage test = *this; VImage out; Vargv _vec( "im_flood_other_copy" ); _vec.data(0) = test.image(); _vec.data(1) = mark.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = start_x; *((int*) _vec.data(4)) = start_y; *((int*) _vec.data(5)) = serial; _vec.call(); return( out ); } // im_clip: convert to unsigned 8-bit integer VImage VImage::clip() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_c2ps: find power spectrum of complex image VImage VImage::c2ps() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_c2ps" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_resize_linear: resize to X by Y pixels with linear interpolation VImage VImage::resize_linear( int X, int Y ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_resize_linear" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = X; *((int*) _vec.data(3)) = Y; _vec.call(); return( out ); } // im_cmulnorm: multiply two complex images, normalising output VImage VImage::cmulnorm( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_cmulnorm" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_fav4: average of 4 images VImage VImage::fav4( VImage in2, VImage in3, VImage in4 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_fav4" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = in3.image(); _vec.data(3) = in4.image(); _vec.data(4) = out.image(); _vec.call(); return( out ); } // im_gadd: calculate a*in1 + b*in2 + c = outfile VImage VImage::gadd( double a, double b, VImage in2, double c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_gadd" ); *((double*) _vec.data(0)) = a; _vec.data(1) = in1.image(); *((double*) _vec.data(2)) = b; _vec.data(3) = in2.image(); *((double*) _vec.data(4)) = c; _vec.data(5) = out.image(); _vec.call(); return( out ); } // im_icc_export: convert a float LAB to an 8-bit device image with an ICC profile VImage VImage::icc_export( char* output_profile, int intent ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_icc_export" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = (im_object) output_profile; *((int*) _vec.data(3)) = intent; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_litecor: calculate max(white)*factor*(in/white), if clip == 1 VImage VImage::litecor( VImage white, int clip, double factor ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_litecor" ); _vec.data(0) = in.image(); _vec.data(1) = white.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = clip; *((double*) _vec.data(4)) = factor; _vec.call(); return( out ); } // im_affine: affine transform VImage VImage::affine( double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_affine" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = a; *((double*) _vec.data(3)) = b; *((double*) _vec.data(4)) = c; *((double*) _vec.data(5)) = d; *((double*) _vec.data(6)) = dx; *((double*) _vec.data(7)) = dy; *((int*) _vec.data(8)) = x; *((int*) _vec.data(9)) = y; *((int*) _vec.data(10)) = w; *((int*) _vec.data(11)) = h; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_clip2c: convert to signed 8-bit integer VImage VImage::clip2c() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2c" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_clip2cm: convert to complex VImage VImage::clip2cm() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2cm" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_clip2d: convert to double-precision float VImage VImage::clip2d() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2d" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_clip2dcm: convert to double complex VImage VImage::clip2dcm() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2dcm" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_clip2f: convert to single-precision float VImage VImage::clip2f() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2f" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_clip2i: convert to signed 32-bit integer VImage VImage::clip2i() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2i" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_convsub: convolve uchar to uchar, sub-sampling by xskip, yskip VImage VImage::convsub( VIMask matrix, int xskip, int yskip ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_convsub" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr; *((int*) _vec.data(3)) = xskip; *((int*) _vec.data(4)) = yskip; _vec.call(); return( out ); } // im_convf: convolve, with DOUBLEMASK VImage VImage::convf( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_convf" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_convsepf: seperable convolution, with DOUBLEMASK VImage VImage::convsepf( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_convsepf" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_clip2s: convert to signed 16-bit integer VImage VImage::clip2s() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2s" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_clip2ui: convert to unsigned 32-bit integer VImage VImage::clip2ui() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2ui" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_insertplaceset: insert sub into main at every position in x, y VImage VImage::insertplace( VImage sub, std::vector x, std::vector y ) throw( VError ) { VImage main = *this; VImage out; Vargv _vec( "im_insertplaceset" ); _vec.data(0) = main.image(); _vec.data(1) = sub.image(); _vec.data(2) = out.image(); ((im_intvec_object*) _vec.data(3))->n = x.size(); ((im_intvec_object*) _vec.data(3))->vec = new int[x.size()]; for( unsigned int i = 0; i < x.size(); i++ ) ((im_intvec_object*) _vec.data(3))->vec[i] = x[i]; ((im_intvec_object*) _vec.data(4))->n = y.size(); ((im_intvec_object*) _vec.data(4))->vec = new int[y.size()]; for( unsigned int i = 0; i < y.size(); i++ ) ((im_intvec_object*) _vec.data(4))->vec[i] = y[i]; _vec.call(); return( out ); } // im_clip2us: convert to unsigned 16-bit integer VImage VImage::clip2us() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_clip2us" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_slice: slice an image using two thresholds VImage VImage::slice( double thresh1, double thresh2 ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_slice" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((double*) _vec.data(2)) = thresh1; *((double*) _vec.data(3)) = thresh2; _vec.call(); return( output ); } // im_segment: number continuous regions in an image VImage VImage::segment( int& segments ) throw( VError ) { VImage test = *this; VImage mask; Vargv _vec( "im_segment" ); _vec.data(0) = test.image(); _vec.data(1) = mask.image(); _vec.call(); segments = *((int*)_vec.data(2)); return( mask ); } // im_line: draw line between points (x1,y1) and (x2,y2) void VImage::line( int x1, int y1, int x2, int y2, int pelval ) throw( VError ) { VImage im = *this; Vargv _vec( "im_line" ); _vec.data(0) = im.image(); *((int*) _vec.data(1)) = x1; *((int*) _vec.data(2)) = y1; *((int*) _vec.data(3)) = x2; *((int*) _vec.data(4)) = y2; *((int*) _vec.data(5)) = pelval; _vec.call(); } // im_thresh: slice an image at a threshold VImage VImage::thresh( double threshold ) throw( VError ) { VImage input = *this; VImage output; Vargv _vec( "im_thresh" ); _vec.data(0) = input.image(); _vec.data(1) = output.image(); *((double*) _vec.data(2)) = threshold; _vec.call(); return( output ); } // im_convf_raw: convolve, with DOUBLEMASK, no border VImage VImage::convf_raw( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_convf_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_conv_raw: convolve, no border VImage VImage::conv_raw( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_conv_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_contrast_surface_raw: find high-contrast points in an image VImage VImage::contrast_surface_raw( int half_win_size, int spacing ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_contrast_surface_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = half_win_size; *((int*) _vec.data(3)) = spacing; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_convsepf_raw: seperable convolution, with DOUBLEMASK, no border VImage VImage::convsepf_raw( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_convsepf_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().dptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_convsep_raw: seperable convolution, no border VImage VImage::convsep_raw( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_convsep_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = matrix.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_fastcor_raw: fast correlate in2 within in1, no border VImage VImage::fastcor_raw( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_fastcor_raw" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_gradcor_raw: non-normalised correlation of gradient of in2 within in1, no padding VImage VImage::gradcor_raw( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_gradcor_raw" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_spcor_raw: normalised correlation of in2 within in1, no black padding VImage VImage::spcor_raw( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_spcor_raw" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_lhisteq_raw: local histogram equalisation, no border VImage VImage::lhisteq_raw( int width, int height ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_lhisteq_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = width; *((int*) _vec.data(3)) = height; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_stdif_raw: statistical differencing, no border VImage VImage::stdif_raw( double a, double m0, double b, double s0, int xw, int yw ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_stdif_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = a; *((double*) _vec.data(3)) = m0; *((double*) _vec.data(4)) = b; *((double*) _vec.data(5)) = s0; *((int*) _vec.data(6)) = xw; *((int*) _vec.data(7)) = yw; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_rank_raw: rank filter nth element of xsize/ysize window, no border VImage VImage::rank_raw( int xsize, int ysize, int n ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_rank_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = xsize; *((int*) _vec.data(3)) = ysize; *((int*) _vec.data(4)) = n; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_dilate_raw: dilate image with mask VImage VImage::dilate_raw( VIMask mask ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_dilate_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = mask.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_erode_raw: erode image with mask VImage VImage::erode_raw( VIMask mask ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_erode_raw" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = mask.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_similarity_area: output area xywh of similarity transformation VImage VImage::similarity_area( double a, double b, double dx, double dy, int x, int y, int w, int h ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_similarity_area" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = a; *((double*) _vec.data(3)) = b; *((double*) _vec.data(4)) = dx; *((double*) _vec.data(5)) = dy; *((int*) _vec.data(6)) = x; *((int*) _vec.data(7)) = y; *((int*) _vec.data(8)) = w; *((int*) _vec.data(9)) = h; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_similarity: similarity transformation VImage VImage::similarity( double a, double b, double dx, double dy ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_similarity" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = a; *((double*) _vec.data(3)) = b; *((double*) _vec.data(4)) = dx; *((double*) _vec.data(5)) = dy; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_mask2vips: convert DOUBLEMASK to VIPS image VImage VImage::mask2vips( VDMask input ) throw( VError ) { VImage output; Vargv _vec( "im_mask2vips" ); ((im_mask_object*) _vec.data(0))->mask = input.mask().dptr; _vec.data(1) = output.image(); _vec.call(); return( output ); } // im_vips2mask: convert VIPS image to DOUBLEMASK VDMask VImage::vips2mask() throw( VError ) { VImage input = *this; VDMask output; Vargv _vec( "im_vips2mask" ); _vec.data(0) = input.image(); ((im_mask_object*) _vec.data(1))->name = (char*)"noname"; _vec.call(); output.embed( (DOUBLEMASK *)((im_mask_object*)_vec.data(1))->mask ); return( output ); } // im_insertplace: draw image sub inside image main at position (x,y) void VImage::insertplace( VImage sub, int x, int y ) throw( VError ) { VImage main = *this; Vargv _vec( "im_insertplace" ); _vec.data(0) = main.image(); _vec.data(1) = sub.image(); *((int*) _vec.data(2)) = x; *((int*) _vec.data(3)) = y; _vec.call(); } // im_circle: plot circle on image void VImage::circle( int cx, int cy, int radius, int intensity ) throw( VError ) { VImage image = *this; Vargv _vec( "im_circle" ); _vec.data(0) = image.image(); *((int*) _vec.data(1)) = cx; *((int*) _vec.data(2)) = cy; *((int*) _vec.data(3)) = radius; *((int*) _vec.data(4)) = intensity; _vec.call(); } // im_andimage: bitwise and of two images VImage VImage::andimage( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_andimage" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_andimageconst: bitwise and of an image with a constant VImage VImage::andimage( int c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_andimageconst" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_andimage_vec: bitwise and of an image with a vector constant VImage VImage::andimage( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_andimage_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_orimage: bitwise or of two images VImage VImage::orimage( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_orimage" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_orimageconst: bitwise or of an image with a constant VImage VImage::orimage( int c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_orimageconst" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_orimage_vec: bitwise or of an image with a vector constant VImage VImage::orimage( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_orimage_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_eorimage: bitwise eor of two images VImage VImage::eorimage( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_eorimage" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_eorimageconst: bitwise eor of an image with a constant VImage VImage::eorimage( int c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_eorimageconst" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_eorimage_vec: bitwise eor of an image with a vector constant VImage VImage::eorimage( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_eorimage_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_shiftleft_vec: shift image array bits to left VImage VImage::shiftleft( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_shiftleft_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_shiftleft: shift image n bits to left VImage VImage::shiftleft( int c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_shiftleft" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_shiftright_vec: shift image array bits to right VImage VImage::shiftright( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_shiftright_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_shiftright: shift integer image n bits to right VImage VImage::shiftright( int c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_shiftright" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_blend: use cond image to blend between images in1 and in2 VImage VImage::blend( VImage in1, VImage in2 ) throw( VError ) { VImage cond = *this; VImage out; Vargv _vec( "im_blend" ); _vec.data(0) = cond.image(); _vec.data(1) = in1.image(); _vec.data(2) = in2.image(); _vec.data(3) = out.image(); _vec.call(); out._ref->addref( cond._ref ); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_equal: two images equal in value VImage VImage::equal( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_equal" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_equal_vec: image equals doublevec VImage VImage::equal( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_equal_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_equalconst: image equals const VImage VImage::equal( double c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_equalconst" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_ifthenelse: use cond image to choose pels from image in1 or in2 VImage VImage::ifthenelse( VImage in1, VImage in2 ) throw( VError ) { VImage cond = *this; VImage out; Vargv _vec( "im_ifthenelse" ); _vec.data(0) = cond.image(); _vec.data(1) = in1.image(); _vec.data(2) = in2.image(); _vec.data(3) = out.image(); _vec.call(); out._ref->addref( cond._ref ); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_less: in1 less than in2 in value VImage VImage::less( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_less" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_less_vec: in less than doublevec VImage VImage::less( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_less_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_lessconst: in less than const VImage VImage::less( double c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_lessconst" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_lesseq: in1 less than or equal to in2 in value VImage VImage::lesseq( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_lesseq" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_lesseq_vec: in less than or equal to doublevec VImage VImage::lesseq( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_lesseq_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_lesseqconst: in less than or equal to const VImage VImage::lesseq( double c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_lesseqconst" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_more: in1 more than in2 in value VImage VImage::more( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_more" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_more_vec: in more than doublevec VImage VImage::more( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_more_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_moreconst: in more than const VImage VImage::more( double c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_moreconst" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_moreeq: in1 more than or equal to in2 in value VImage VImage::moreeq( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_moreeq" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_moreeq_vec: in more than or equal to doublevec VImage VImage::moreeq( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_moreeq_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_moreeqconst: in more than or equal to const VImage VImage::moreeq( double c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_moreeqconst" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_notequal: two images not equal in value VImage VImage::notequal( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_notequal" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( in1._ref ); out._ref->addref( in2._ref ); return( out ); } // im_notequal_vec: image does not equal doublevec VImage VImage::notequal( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_notequal_vec" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_doublevec_object*) _vec.data(2))->n = vec.size(); ((im_doublevec_object*) _vec.data(2))->vec = new double[vec.size()]; for( unsigned int i = 0; i < vec.size(); i++ ) ((im_doublevec_object*) _vec.data(2))->vec[i] = vec[i]; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_notequalconst: image does not equal const VImage VImage::notequal( double c ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_notequalconst" ); _vec.data(0) = in1.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = c; _vec.call(); out._ref->addref( in1._ref ); return( out ); } // im_quadratic: transform via quadratic VImage VImage::quadratic( VImage coeff ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_quadratic" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = coeff.image(); _vec.call(); out._ref->addref( in._ref ); out._ref->addref( coeff._ref ); return( out ); } // bodies for package format // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_csv2vips: read a file in csv format VImage VImage::csv2vips( char* filename ) throw( VError ) { VImage im; Vargv _vec( "im_csv2vips" ); _vec.data(0) = (im_object) filename; _vec.data(1) = im.image(); _vec.call(); return( im ); } // im_fits2vips: convert from fits VImage VImage::fits2vips( char* in ) throw( VError ) { VImage out; Vargv _vec( "im_fits2vips" ); _vec.data(0) = (im_object) in; _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_jpeg2vips: convert from jpeg VImage VImage::jpeg2vips( char* in ) throw( VError ) { VImage out; Vargv _vec( "im_jpeg2vips" ); _vec.data(0) = (im_object) in; _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_magick2vips: load file with libMagick VImage VImage::magick2vips( char* in ) throw( VError ) { VImage out; Vargv _vec( "im_magick2vips" ); _vec.data(0) = (im_object) in; _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_png2vips: convert PNG file to VIPS image VImage VImage::png2vips( char* in ) throw( VError ) { VImage out; Vargv _vec( "im_png2vips" ); _vec.data(0) = (im_object) in; _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_exr2vips: convert an OpenEXR file to VIPS VImage VImage::exr2vips( char* in ) throw( VError ) { VImage out; Vargv _vec( "im_exr2vips" ); _vec.data(0) = (im_object) in; _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_ppm2vips: read a file in pbm/pgm/ppm format VImage VImage::ppm2vips( char* filename ) throw( VError ) { VImage im; Vargv _vec( "im_ppm2vips" ); _vec.data(0) = (im_object) filename; _vec.data(1) = im.image(); _vec.call(); return( im ); } // im_analyze2vips: read a file in analyze format VImage VImage::analyze2vips( char* filename ) throw( VError ) { VImage im; Vargv _vec( "im_analyze2vips" ); _vec.data(0) = (im_object) filename; _vec.data(1) = im.image(); _vec.call(); return( im ); } // im_tiff2vips: convert TIFF file to VIPS image VImage VImage::tiff2vips( char* in ) throw( VError ) { VImage out; Vargv _vec( "im_tiff2vips" ); _vec.data(0) = (im_object) in; _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_vips2csv: write an image in csv format void VImage::vips2csv( char* filename ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2csv" ); _vec.data(0) = in.image(); _vec.data(1) = (im_object) filename; _vec.call(); } // im_vips2dz: save as deepzoom void VImage::vips2dz( char* out ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2dz" ); _vec.data(0) = in.image(); _vec.data(1) = (im_object) out; _vec.call(); } // im_vips2jpeg: convert to jpeg void VImage::vips2jpeg( char* out ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2jpeg" ); _vec.data(0) = in.image(); _vec.data(1) = (im_object) out; _vec.call(); } // im_vips2mimejpeg: convert to jpeg as mime type on stdout void VImage::vips2mimejpeg( int qfac ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2mimejpeg" ); _vec.data(0) = in.image(); *((int*) _vec.data(1)) = qfac; _vec.call(); } // im_vips2png: convert VIPS image to PNG file void VImage::vips2png( char* out ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2png" ); _vec.data(0) = in.image(); _vec.data(1) = (im_object) out; _vec.call(); } // im_vips2ppm: write a file in pbm/pgm/ppm format void VImage::vips2ppm( char* filename ) throw( VError ) { VImage im = *this; Vargv _vec( "im_vips2ppm" ); _vec.data(0) = im.image(); _vec.data(1) = (im_object) filename; _vec.call(); } // im_vips2tiff: convert VIPS image to TIFF file void VImage::vips2tiff( char* out ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2tiff" ); _vec.data(0) = in.image(); _vec.data(1) = (im_object) out; _vec.call(); } // bodies for package freq_filt // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_create_fmask: create frequency domain filter mask VImage VImage::create_fmask( int width, int height, int type, double p1, double p2, double p3, double p4, double p5 ) throw( VError ) { VImage out; Vargv _vec( "im_create_fmask" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = width; *((int*) _vec.data(2)) = height; *((int*) _vec.data(3)) = type; *((double*) _vec.data(4)) = p1; *((double*) _vec.data(5)) = p2; *((double*) _vec.data(6)) = p3; *((double*) _vec.data(7)) = p4; *((double*) _vec.data(8)) = p5; _vec.call(); return( out ); } // im_disp_ps: make displayable power spectrum VImage VImage::disp_ps() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_disp_ps" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_flt_image_freq: frequency domain filter image VImage VImage::flt_image_freq( int type, double p1, double p2, double p3, double p4, double p5 ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_flt_image_freq" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = type; *((double*) _vec.data(3)) = p1; *((double*) _vec.data(4)) = p2; *((double*) _vec.data(5)) = p3; *((double*) _vec.data(6)) = p4; *((double*) _vec.data(7)) = p5; _vec.call(); return( out ); } // im_fractsurf: generate a fractal surface of given dimension VImage VImage::fractsurf( int size, double dimension ) throw( VError ) { VImage out; Vargv _vec( "im_fractsurf" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = size; *((double*) _vec.data(2)) = dimension; _vec.call(); return( out ); } // im_freqflt: frequency-domain filter of in with mask VImage VImage::freqflt( VImage mask ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_freqflt" ); _vec.data(0) = in.image(); _vec.data(1) = mask.image(); _vec.data(2) = out.image(); _vec.call(); return( out ); } // im_fwfft: forward fast-fourier transform VImage VImage::fwfft() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_fwfft" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_rotquad: rotate image quadrants to move origin to centre VImage VImage::rotquad() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_rotquad" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_invfft: inverse fast-fourier transform VImage VImage::invfft() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_invfft" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_phasecor_fft: non-normalised correlation of gradient of in2 within in1 VImage VImage::phasecor_fft( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; Vargv _vec( "im_phasecor_fft" ); _vec.data(0) = in1.image(); _vec.data(1) = in2.image(); _vec.data(2) = out.image(); _vec.call(); return( out ); } // im_invfftr: real part of inverse fast-fourier transform VImage VImage::invfftr() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_invfftr" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); return( out ); } // bodies for package histograms_lut // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_gammacorrect: gamma-correct image VImage VImage::gammacorrect( double exponent ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_gammacorrect" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = exponent; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_heq: histogram-equalise image VImage VImage::heq( int band_number ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_heq" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = band_number; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_hist: find and graph histogram of image VImage VImage::hist( int band_number ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_hist" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = band_number; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_histcum: turn histogram to cumulative histogram VImage VImage::histcum() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_histcum" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_histeq: form histogram equalistion LUT VImage VImage::histeq() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_histeq" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_hist_indexed: make a histogram with an index image VImage VImage::hist_indexed( VImage value ) throw( VError ) { VImage index = *this; VImage out; Vargv _vec( "im_hist_indexed" ); _vec.data(0) = index.image(); _vec.data(1) = value.image(); _vec.data(2) = out.image(); _vec.call(); out._ref->addref( index._ref ); out._ref->addref( value._ref ); return( out ); } // im_histgr: find histogram of image VImage VImage::histgr( int band_number ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_histgr" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = band_number; _vec.call(); return( out ); } // im_histnD: find 1D, 2D or 3D histogram of image VImage VImage::histnD( int bins ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_histnD" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = bins; _vec.call(); return( out ); } // im_histnorm: form normalised histogram VImage VImage::histnorm() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_histnorm" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_histplot: plot graph of histogram VImage VImage::histplot() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_histplot" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_histspec: find histogram which will make pdf of in match ref VImage VImage::histspec( VImage ref ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_histspec" ); _vec.data(0) = in.image(); _vec.data(1) = ref.image(); _vec.data(2) = out.image(); _vec.call(); return( out ); } // im_hsp: match stats of in to stats of ref VImage VImage::hsp( VImage ref ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_hsp" ); _vec.data(0) = in.image(); _vec.data(1) = ref.image(); _vec.data(2) = out.image(); _vec.call(); return( out ); } // im_identity: generate identity histogram VImage VImage::identity( int nbands ) throw( VError ) { VImage out; Vargv _vec( "im_identity" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = nbands; _vec.call(); return( out ); } // im_identity_ushort: generate ushort identity histogram VImage VImage::identity_ushort( int nbands, int size ) throw( VError ) { VImage out; Vargv _vec( "im_identity_ushort" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = nbands; *((int*) _vec.data(2)) = size; _vec.call(); return( out ); } // im_ismonotonic: test LUT for monotonicity int VImage::ismonotonic() throw( VError ) { VImage lut = *this; int mono; Vargv _vec( "im_ismonotonic" ); _vec.data(0) = lut.image(); _vec.call(); mono = *((int*)_vec.data(1)); return( mono ); } // im_lhisteq: local histogram equalisation VImage VImage::lhisteq( int width, int height ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_lhisteq" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = width; *((int*) _vec.data(3)) = height; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_mpercent: find threshold above which there are percent values int VImage::mpercent( double percent ) throw( VError ) { VImage in = *this; int thresh; Vargv _vec( "im_mpercent" ); _vec.data(0) = in.image(); *((double*) _vec.data(1)) = percent; _vec.call(); thresh = *((int*)_vec.data(2)); return( thresh ); } // im_invertlut: generate correction table from set of measures VImage VImage::invertlut( VDMask measures, int lut_size ) throw( VError ) { VImage lut; Vargv _vec( "im_invertlut" ); ((im_mask_object*) _vec.data(0))->mask = measures.mask().dptr; _vec.data(1) = lut.image(); *((int*) _vec.data(2)) = lut_size; _vec.call(); return( lut ); } // im_buildlut: generate LUT table from set of x/y positions VImage VImage::buildlut( VDMask xyes ) throw( VError ) { VImage lut; Vargv _vec( "im_buildlut" ); ((im_mask_object*) _vec.data(0))->mask = xyes.mask().dptr; _vec.data(1) = lut.image(); _vec.call(); return( lut ); } // im_maplut: map image through LUT VImage VImage::maplut( VImage lut ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_maplut" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = lut.image(); _vec.call(); out._ref->addref( in._ref ); out._ref->addref( lut._ref ); return( out ); } // im_project: find horizontal and vertical projections of an image VImage VImage::project( VImage& vout ) throw( VError ) { VImage in = *this; VImage hout; Vargv _vec( "im_project" ); _vec.data(0) = in.image(); _vec.data(1) = hout.image(); _vec.data(2) = vout.image(); _vec.call(); return( hout ); } // im_stdif: statistical differencing VImage VImage::stdif( double a, double m0, double b, double s0, int xw, int yw ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_stdif" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = a; *((double*) _vec.data(3)) = m0; *((double*) _vec.data(4)) = b; *((double*) _vec.data(5)) = s0; *((int*) _vec.data(6)) = xw; *((int*) _vec.data(7)) = yw; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_tone_analyse: analyse in and create LUT for tone adjustment VImage VImage::tone_analyse( double Ps, double Pm, double Ph, double S, double M, double H ) throw( VError ) { VImage in = *this; VImage hist; Vargv _vec( "im_tone_analyse" ); _vec.data(0) = in.image(); _vec.data(1) = hist.image(); *((double*) _vec.data(2)) = Ps; *((double*) _vec.data(3)) = Pm; *((double*) _vec.data(4)) = Ph; *((double*) _vec.data(5)) = S; *((double*) _vec.data(6)) = M; *((double*) _vec.data(7)) = H; _vec.call(); return( hist ); } // im_tone_build: create LUT for tone adjustment of LabS images VImage VImage::tone_build( double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) throw( VError ) { VImage hist; Vargv _vec( "im_tone_build" ); _vec.data(0) = hist.image(); *((double*) _vec.data(1)) = Lb; *((double*) _vec.data(2)) = Lw; *((double*) _vec.data(3)) = Ps; *((double*) _vec.data(4)) = Pm; *((double*) _vec.data(5)) = Ph; *((double*) _vec.data(6)) = S; *((double*) _vec.data(7)) = M; *((double*) _vec.data(8)) = H; _vec.call(); return( hist ); } // im_tone_build_range: create LUT for tone adjustment VImage VImage::tone_build_range( int in_max, int out_max, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) throw( VError ) { VImage hist; Vargv _vec( "im_tone_build_range" ); _vec.data(0) = hist.image(); *((int*) _vec.data(1)) = in_max; *((int*) _vec.data(2)) = out_max; *((double*) _vec.data(3)) = Lb; *((double*) _vec.data(4)) = Lw; *((double*) _vec.data(5)) = Ps; *((double*) _vec.data(6)) = Pm; *((double*) _vec.data(7)) = Ph; *((double*) _vec.data(8)) = S; *((double*) _vec.data(9)) = M; *((double*) _vec.data(10)) = H; _vec.call(); return( hist ); } // im_tone_map: map L channel of LabS or LabQ image through LUT VImage VImage::tone_map( VImage lut ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_tone_map" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = lut.image(); _vec.call(); out._ref->addref( in._ref ); out._ref->addref( lut._ref ); return( out ); } // bodies for package inplace // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_draw_circle: draw circle on image void VImage::draw_circle( int cx, int cy, int radius, int fill, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_circle" ); _vec.data(0) = image.image(); *((int*) _vec.data(1)) = cx; *((int*) _vec.data(2)) = cy; *((int*) _vec.data(3)) = radius; *((int*) _vec.data(4)) = fill; ((im_doublevec_object*) _vec.data(5))->n = ink.size(); ((im_doublevec_object*) _vec.data(5))->vec = new double[ink.size()]; for( unsigned int i = 0; i < ink.size(); i++ ) ((im_doublevec_object*) _vec.data(5))->vec[i] = ink[i]; _vec.call(); } // im_draw_rect: draw rect on image void VImage::draw_rect( int left, int top, int width, int height, int fill, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_rect" ); _vec.data(0) = image.image(); *((int*) _vec.data(1)) = left; *((int*) _vec.data(2)) = top; *((int*) _vec.data(3)) = width; *((int*) _vec.data(4)) = height; *((int*) _vec.data(5)) = fill; ((im_doublevec_object*) _vec.data(6))->n = ink.size(); ((im_doublevec_object*) _vec.data(6))->vec = new double[ink.size()]; for( unsigned int i = 0; i < ink.size(); i++ ) ((im_doublevec_object*) _vec.data(6))->vec[i] = ink[i]; _vec.call(); } // im_draw_line: draw line on image void VImage::draw_line( int x1, int y1, int x2, int y2, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_line" ); _vec.data(0) = image.image(); *((int*) _vec.data(1)) = x1; *((int*) _vec.data(2)) = y1; *((int*) _vec.data(3)) = x2; *((int*) _vec.data(4)) = y2; ((im_doublevec_object*) _vec.data(5))->n = ink.size(); ((im_doublevec_object*) _vec.data(5))->vec = new double[ink.size()]; for( unsigned int i = 0; i < ink.size(); i++ ) ((im_doublevec_object*) _vec.data(5))->vec[i] = ink[i]; _vec.call(); } // im_draw_point: draw point on image void VImage::draw_point( int x, int y, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_point" ); _vec.data(0) = image.image(); *((int*) _vec.data(1)) = x; *((int*) _vec.data(2)) = y; ((im_doublevec_object*) _vec.data(3))->n = ink.size(); ((im_doublevec_object*) _vec.data(3))->vec = new double[ink.size()]; for( unsigned int i = 0; i < ink.size(); i++ ) ((im_doublevec_object*) _vec.data(3))->vec[i] = ink[i]; _vec.call(); } // im_draw_smudge: smudge part of an image void VImage::draw_smudge( int left, int top, int width, int height ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_smudge" ); _vec.data(0) = image.image(); *((int*) _vec.data(1)) = left; *((int*) _vec.data(2)) = top; *((int*) _vec.data(3)) = width; *((int*) _vec.data(4)) = height; _vec.call(); } // im_draw_flood: flood with ink from x, y while pixel != ink void VImage::draw_flood( int x, int y, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_flood" ); _vec.data(0) = image.image(); *((int*) _vec.data(1)) = x; *((int*) _vec.data(2)) = y; ((im_doublevec_object*) _vec.data(3))->n = ink.size(); ((im_doublevec_object*) _vec.data(3))->vec = new double[ink.size()]; for( unsigned int i = 0; i < ink.size(); i++ ) ((im_doublevec_object*) _vec.data(3))->vec[i] = ink[i]; _vec.call(); } // im_draw_flood_blob: flood with ink from x, y while pixel == start void VImage::draw_flood_blob( int x, int y, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_flood_blob" ); _vec.data(0) = image.image(); *((int*) _vec.data(1)) = x; *((int*) _vec.data(2)) = y; ((im_doublevec_object*) _vec.data(3))->n = ink.size(); ((im_doublevec_object*) _vec.data(3))->vec = new double[ink.size()]; for( unsigned int i = 0; i < ink.size(); i++ ) ((im_doublevec_object*) _vec.data(3))->vec[i] = ink[i]; _vec.call(); } // im_draw_flood_other: flood image with serial from x, y while pixel == start void VImage::draw_flood_other( VImage test, int x, int y, int serial ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_flood_other" ); _vec.data(0) = image.image(); _vec.data(1) = test.image(); *((int*) _vec.data(2)) = x; *((int*) _vec.data(3)) = y; *((int*) _vec.data(4)) = serial; _vec.call(); } // im_draw_image: draw image sub inside image main at position (x,y) void VImage::draw_image( VImage sub, int x, int y ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_image" ); _vec.data(0) = image.image(); _vec.data(1) = sub.image(); *((int*) _vec.data(2)) = x; *((int*) _vec.data(3)) = y; _vec.call(); } // im_draw_mask: draw mask sub inside image main at position (x,y) void VImage::draw_mask( VImage mask, int x, int y, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_mask" ); _vec.data(0) = image.image(); _vec.data(1) = mask.image(); *((int*) _vec.data(2)) = x; *((int*) _vec.data(3)) = y; ((im_doublevec_object*) _vec.data(4))->n = ink.size(); ((im_doublevec_object*) _vec.data(4))->vec = new double[ink.size()]; for( unsigned int i = 0; i < ink.size(); i++ ) ((im_doublevec_object*) _vec.data(4))->vec[i] = ink[i]; _vec.call(); } // im_lineset: draw line between points (x1,y1) and (x2,y2) VImage VImage::line( VImage mask, VImage ink, std::vector x1, std::vector y1, std::vector x2, std::vector y2 ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_lineset" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = mask.image(); _vec.data(3) = ink.image(); ((im_intvec_object*) _vec.data(4))->n = x1.size(); ((im_intvec_object*) _vec.data(4))->vec = new int[x1.size()]; for( unsigned int i = 0; i < x1.size(); i++ ) ((im_intvec_object*) _vec.data(4))->vec[i] = x1[i]; ((im_intvec_object*) _vec.data(5))->n = y1.size(); ((im_intvec_object*) _vec.data(5))->vec = new int[y1.size()]; for( unsigned int i = 0; i < y1.size(); i++ ) ((im_intvec_object*) _vec.data(5))->vec[i] = y1[i]; ((im_intvec_object*) _vec.data(6))->n = x2.size(); ((im_intvec_object*) _vec.data(6))->vec = new int[x2.size()]; for( unsigned int i = 0; i < x2.size(); i++ ) ((im_intvec_object*) _vec.data(6))->vec[i] = x2[i]; ((im_intvec_object*) _vec.data(7))->n = y2.size(); ((im_intvec_object*) _vec.data(7))->vec = new int[y2.size()]; for( unsigned int i = 0; i < y2.size(); i++ ) ((im_intvec_object*) _vec.data(7))->vec[i] = y2[i]; _vec.call(); return( out ); } // bodies for package iofuncs // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_binfile: open a headerless binary file VImage VImage::binfile( char* filename, int width, int height, int bands, int offset ) throw( VError ) { VImage out; Vargv _vec( "im_binfile" ); _vec.data(0) = (im_object) filename; _vec.data(1) = out.image(); *((int*) _vec.data(2)) = width; *((int*) _vec.data(3)) = height; *((int*) _vec.data(4)) = bands; *((int*) _vec.data(5)) = offset; _vec.call(); return( out ); } // im_cache: cache results of an operation VImage VImage::cache( int tile_width, int tile_height, int max_tiles ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_cache" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = tile_width; *((int*) _vec.data(3)) = tile_height; *((int*) _vec.data(4)) = max_tiles; _vec.call(); return( out ); } // im_getext: return the image metadata XML as a string char* VImage::getext() throw( VError ) { VImage image = *this; char* history; Vargv _vec( "im_getext" ); _vec.data(0) = image.image(); _vec.call(); history = (char*) _vec.data(1); return( history ); } // im_header_get_typeof: return field type int VImage::header_get_typeof( char* field ) throw( VError ) { VImage image = *this; int gtype; Vargv _vec( "im_header_get_typeof" ); _vec.data(0) = (im_object) field; _vec.data(1) = image.image(); _vec.call(); gtype = *((int*)_vec.data(2)); return( gtype ); } // im_header_int: extract int fields from header int VImage::header_int( char* field ) throw( VError ) { VImage image = *this; int value; Vargv _vec( "im_header_int" ); _vec.data(0) = (im_object) field; _vec.data(1) = image.image(); _vec.call(); value = *((int*)_vec.data(2)); return( value ); } // im_header_double: extract double fields from header double VImage::header_double( char* field ) throw( VError ) { VImage image = *this; double value; Vargv _vec( "im_header_double" ); _vec.data(0) = (im_object) field; _vec.data(1) = image.image(); _vec.call(); value = *((double*)_vec.data(2)); return( value ); } // im_header_string: extract fields from headers as strings char* VImage::header_string( char* field ) throw( VError ) { VImage image = *this; char* value; Vargv _vec( "im_header_string" ); _vec.data(0) = (im_object) field; _vec.data(1) = image.image(); _vec.call(); value = (char*) _vec.data(2); return( value ); } // im_history_get: return the image history as a string char* VImage::history_get() throw( VError ) { VImage image = *this; char* history; Vargv _vec( "im_history_get" ); _vec.data(0) = image.image(); _vec.call(); history = (char*) _vec.data(1); return( history ); } // im_printdesc: print an image header to stdout void VImage::printdesc() throw( VError ) { VImage image = *this; Vargv _vec( "im_printdesc" ); _vec.data(0) = image.image(); _vec.call(); } // bodies for package mask // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // bodies for package morphology // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_cntlines: count horizontal or vertical lines double VImage::cntlines( int direction ) throw( VError ) { VImage in = *this; double nlines; Vargv _vec( "im_cntlines" ); _vec.data(0) = in.image(); *((int*) _vec.data(2)) = direction; _vec.call(); nlines = *((double*)_vec.data(1)); return( nlines ); } // im_dilate: dilate image with mask, adding a black border VImage VImage::dilate( VIMask mask ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_dilate" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = mask.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_rank: rank filter nth element of xsize/ysize window VImage VImage::rank( int xsize, int ysize, int n ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_rank" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = xsize; *((int*) _vec.data(3)) = ysize; *((int*) _vec.data(4)) = n; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_rank_image: point-wise pixel rank VImage VImage::rank_image( std::vector in, int index ) throw( VError ) { VImage out; Vargv _vec( "im_rank_image" ); ((im_imagevec_object*) _vec.data(0))->n = in.size(); ((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[in.size()]; for( unsigned int i = 0; i < in.size(); i++ ) ((im_imagevec_object*) _vec.data(0))->vec[i] = in[i].image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = index; _vec.call(); for( unsigned int i = 0; i < in.size(); i++ ) out._ref->addref( in[i]._ref ); return( out ); } // im_maxvalue: point-wise maximum value VImage VImage::maxvalue( std::vector in ) throw( VError ) { VImage out; Vargv _vec( "im_maxvalue" ); ((im_imagevec_object*) _vec.data(0))->n = in.size(); ((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[in.size()]; for( unsigned int i = 0; i < in.size(); i++ ) ((im_imagevec_object*) _vec.data(0))->vec[i] = in[i].image(); _vec.data(1) = out.image(); _vec.call(); for( unsigned int i = 0; i < in.size(); i++ ) out._ref->addref( in[i]._ref ); return( out ); } // im_label_regions: number continuous regions in an image VImage VImage::label_regions( int& segments ) throw( VError ) { VImage test = *this; VImage mask; Vargv _vec( "im_label_regions" ); _vec.data(0) = test.image(); _vec.data(1) = mask.image(); _vec.call(); segments = *((int*)_vec.data(2)); return( mask ); } // im_zerox: find +ve or -ve zero crossings in image VImage VImage::zerox( int flag ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_zerox" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = flag; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_erode: erode image with mask, adding a black border VImage VImage::erode( VIMask mask ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_erode" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); ((im_mask_object*) _vec.data(2))->mask = mask.mask().iptr; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_profile: find first horizontal/vertical edge VImage VImage::profile( int direction ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_profile" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = direction; _vec.call(); return( out ); } // bodies for package mosaicing // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_align_bands: align the bands of an image VImage VImage::align_bands() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_align_bands" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); return( out ); } // im_correl: search area around sec for match for area around ref double VImage::correl( VImage sec, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int& x, int& y ) throw( VError ) { VImage ref = *this; double correlation; Vargv _vec( "im_correl" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); *((int*) _vec.data(2)) = xref; *((int*) _vec.data(3)) = yref; *((int*) _vec.data(4)) = xsec; *((int*) _vec.data(5)) = ysec; *((int*) _vec.data(6)) = hwindowsize; *((int*) _vec.data(7)) = hsearchsize; _vec.call(); correlation = *((double*)_vec.data(8)); x = *((int*)_vec.data(9)); y = *((int*)_vec.data(10)); return( correlation ); } // im__find_lroverlap: search for left-right overlap of ref and sec int VImage::_find_lroverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) throw( VError ) { VImage ref = *this; int dx0; Vargv _vec( "im__find_lroverlap" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); *((int*) _vec.data(2)) = bandno; *((int*) _vec.data(3)) = xr; *((int*) _vec.data(4)) = yr; *((int*) _vec.data(5)) = xs; *((int*) _vec.data(6)) = ys; *((int*) _vec.data(7)) = halfcorrelation; *((int*) _vec.data(8)) = halfarea; _vec.call(); dx0 = *((int*)_vec.data(9)); dy0 = *((int*)_vec.data(10)); scale1 = *((double*)_vec.data(11)); angle1 = *((double*)_vec.data(12)); dx1 = *((double*)_vec.data(13)); dy1 = *((double*)_vec.data(14)); return( dx0 ); } // im__find_tboverlap: search for top-bottom overlap of ref and sec int VImage::_find_tboverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) throw( VError ) { VImage ref = *this; int dx0; Vargv _vec( "im__find_tboverlap" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); *((int*) _vec.data(2)) = bandno; *((int*) _vec.data(3)) = xr; *((int*) _vec.data(4)) = yr; *((int*) _vec.data(5)) = xs; *((int*) _vec.data(6)) = ys; *((int*) _vec.data(7)) = halfcorrelation; *((int*) _vec.data(8)) = halfarea; _vec.call(); dx0 = *((int*)_vec.data(9)); dy0 = *((int*)_vec.data(10)); scale1 = *((double*)_vec.data(11)); angle1 = *((double*)_vec.data(12)); dx1 = *((double*)_vec.data(13)); dy1 = *((double*)_vec.data(14)); return( dx0 ); } // im_global_balance: automatically rebuild mosaic with balancing VImage VImage::global_balance( double gamma ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_global_balance" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = gamma; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_global_balancef: automatically rebuild mosaic with balancing, float output VImage VImage::global_balancef( double gamma ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_global_balancef" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = gamma; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_lrmerge: left-right merge of in1 and in2 VImage VImage::lrmerge( VImage sec, int dx, int dy, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_lrmerge" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = dx; *((int*) _vec.data(4)) = dy; *((int*) _vec.data(5)) = mwidth; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // im_lrmerge1: first-order left-right merge of ref and sec VImage VImage::lrmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_lrmerge1" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = xr1; *((int*) _vec.data(4)) = yr1; *((int*) _vec.data(5)) = xs1; *((int*) _vec.data(6)) = ys1; *((int*) _vec.data(7)) = xr2; *((int*) _vec.data(8)) = yr2; *((int*) _vec.data(9)) = xs2; *((int*) _vec.data(10)) = ys2; *((int*) _vec.data(11)) = mwidth; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // im_lrmosaic: left-right mosaic of ref and sec VImage VImage::lrmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_lrmosaic" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = bandno; *((int*) _vec.data(4)) = xr; *((int*) _vec.data(5)) = yr; *((int*) _vec.data(6)) = xs; *((int*) _vec.data(7)) = ys; *((int*) _vec.data(8)) = halfcorrelation; *((int*) _vec.data(9)) = halfarea; *((int*) _vec.data(10)) = balancetype; *((int*) _vec.data(11)) = mwidth; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // im_lrmosaic1: first-order left-right mosaic of ref and sec VImage VImage::lrmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_lrmosaic1" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = bandno; *((int*) _vec.data(4)) = xr1; *((int*) _vec.data(5)) = yr1; *((int*) _vec.data(6)) = xs1; *((int*) _vec.data(7)) = ys1; *((int*) _vec.data(8)) = xr2; *((int*) _vec.data(9)) = yr2; *((int*) _vec.data(10)) = xs2; *((int*) _vec.data(11)) = ys2; *((int*) _vec.data(12)) = halfcorrelation; *((int*) _vec.data(13)) = halfarea; *((int*) _vec.data(14)) = balancetype; *((int*) _vec.data(15)) = mwidth; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // im_match_linear: resample ref so that tie-points match VImage VImage::match_linear( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2 ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_match_linear" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = xref1; *((int*) _vec.data(4)) = yref1; *((int*) _vec.data(5)) = xsec1; *((int*) _vec.data(6)) = ysec1; *((int*) _vec.data(7)) = xref2; *((int*) _vec.data(8)) = yref2; *((int*) _vec.data(9)) = xsec2; *((int*) _vec.data(10)) = ysec2; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // im_match_linear_search: search sec, then resample so that tie-points match VImage VImage::match_linear_search( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2, int hwindowsize, int hsearchsize ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_match_linear_search" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = xref1; *((int*) _vec.data(4)) = yref1; *((int*) _vec.data(5)) = xsec1; *((int*) _vec.data(6)) = ysec1; *((int*) _vec.data(7)) = xref2; *((int*) _vec.data(8)) = yref2; *((int*) _vec.data(9)) = xsec2; *((int*) _vec.data(10)) = ysec2; *((int*) _vec.data(11)) = hwindowsize; *((int*) _vec.data(12)) = hsearchsize; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // im_maxpos_subpel: subpixel position of maximum of (phase correlation) image double VImage::maxpos_subpel( double& y ) throw( VError ) { VImage im = *this; double x; Vargv _vec( "im_maxpos_subpel" ); _vec.data(0) = im.image(); _vec.call(); x = *((double*)_vec.data(1)); y = *((double*)_vec.data(2)); return( x ); } // im_remosaic: automatically rebuild mosaic with new files VImage VImage::remosaic( char* old_str, char* new_str ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_remosaic" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.data(2) = (im_object) old_str; _vec.data(3) = (im_object) new_str; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_tbmerge: top-bottom merge of in1 and in2 VImage VImage::tbmerge( VImage sec, int dx, int dy, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_tbmerge" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = dx; *((int*) _vec.data(4)) = dy; *((int*) _vec.data(5)) = mwidth; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // im_tbmerge1: first-order top-bottom merge of in1 and in2 VImage VImage::tbmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_tbmerge1" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = xr1; *((int*) _vec.data(4)) = yr1; *((int*) _vec.data(5)) = xs1; *((int*) _vec.data(6)) = ys1; *((int*) _vec.data(7)) = xr2; *((int*) _vec.data(8)) = yr2; *((int*) _vec.data(9)) = xs2; *((int*) _vec.data(10)) = ys2; *((int*) _vec.data(11)) = mwidth; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // im_tbmosaic: top-bottom mosaic of in1 and in2 VImage VImage::tbmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_tbmosaic" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = bandno; *((int*) _vec.data(4)) = xr; *((int*) _vec.data(5)) = yr; *((int*) _vec.data(6)) = xs; *((int*) _vec.data(7)) = ys; *((int*) _vec.data(8)) = halfcorrelation; *((int*) _vec.data(9)) = halfarea; *((int*) _vec.data(10)) = balancetype; *((int*) _vec.data(11)) = mwidth; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // im_tbmosaic1: first-order top-bottom mosaic of ref and sec VImage VImage::tbmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; Vargv _vec( "im_tbmosaic1" ); _vec.data(0) = ref.image(); _vec.data(1) = sec.image(); _vec.data(2) = out.image(); *((int*) _vec.data(3)) = bandno; *((int*) _vec.data(4)) = xr1; *((int*) _vec.data(5)) = yr1; *((int*) _vec.data(6)) = xs1; *((int*) _vec.data(7)) = ys1; *((int*) _vec.data(8)) = xr2; *((int*) _vec.data(9)) = yr2; *((int*) _vec.data(10)) = xs2; *((int*) _vec.data(11)) = ys2; *((int*) _vec.data(12)) = halfcorrelation; *((int*) _vec.data(13)) = halfarea; *((int*) _vec.data(14)) = balancetype; *((int*) _vec.data(15)) = mwidth; _vec.call(); out._ref->addref( ref._ref ); out._ref->addref( sec._ref ); return( out ); } // bodies for package other // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_benchmark: do something complicated for testing VImage VImage::benchmark() throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_benchmark" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_benchmark2: do something complicated for testing double VImage::benchmark2() throw( VError ) { VImage in = *this; double value; Vargv _vec( "im_benchmark2" ); _vec.data(0) = in.image(); _vec.call(); value = *((double*)_vec.data(1)); return( value ); } // im_benchmarkn: do something complicated for testing VImage VImage::benchmarkn( int n ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_benchmarkn" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = n; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_eye: generate IM_BANDFMT_UCHAR [0,255] frequency/amplitude image VImage VImage::eye( int xsize, int ysize, double factor ) throw( VError ) { VImage out; Vargv _vec( "im_eye" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = xsize; *((int*) _vec.data(2)) = ysize; *((double*) _vec.data(3)) = factor; _vec.call(); return( out ); } // im_grey: generate IM_BANDFMT_UCHAR [0,255] grey scale image VImage VImage::grey( int xsize, int ysize ) throw( VError ) { VImage out; Vargv _vec( "im_grey" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = xsize; *((int*) _vec.data(2)) = ysize; _vec.call(); return( out ); } // im_feye: generate IM_BANDFMT_FLOAT [-1,1] frequency/amplitude image VImage VImage::feye( int xsize, int ysize, double factor ) throw( VError ) { VImage out; Vargv _vec( "im_feye" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = xsize; *((int*) _vec.data(2)) = ysize; *((double*) _vec.data(3)) = factor; _vec.call(); return( out ); } // im_fgrey: generate IM_BANDFMT_FLOAT [0,1] grey scale image VImage VImage::fgrey( int xsize, int ysize ) throw( VError ) { VImage out; Vargv _vec( "im_fgrey" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = xsize; *((int*) _vec.data(2)) = ysize; _vec.call(); return( out ); } // im_fzone: generate IM_BANDFMT_FLOAT [-1,1] zone plate image VImage VImage::fzone( int size ) throw( VError ) { VImage out; Vargv _vec( "im_fzone" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = size; _vec.call(); return( out ); } // im_make_xy: generate image with pixel value equal to coordinate VImage VImage::make_xy( int xsize, int ysize ) throw( VError ) { VImage out; Vargv _vec( "im_make_xy" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = xsize; *((int*) _vec.data(2)) = ysize; _vec.call(); return( out ); } // im_sines: generate 2D sine image VImage VImage::sines( int xsize, int ysize, double horfreq, double verfreq ) throw( VError ) { VImage out; Vargv _vec( "im_sines" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = xsize; *((int*) _vec.data(2)) = ysize; *((double*) _vec.data(3)) = horfreq; *((double*) _vec.data(4)) = verfreq; _vec.call(); return( out ); } // im_zone: generate IM_BANDFMT_UCHAR [0,255] zone plate image VImage VImage::zone( int size ) throw( VError ) { VImage out; Vargv _vec( "im_zone" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = size; _vec.call(); return( out ); } // bodies for package resample // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_rightshift_size: decrease size by a power-of-two factor VImage VImage::rightshift_size( int xshift, int yshift, int band_fmt ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_rightshift_size" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((int*) _vec.data(2)) = xshift; *((int*) _vec.data(3)) = yshift; *((int*) _vec.data(4)) = band_fmt; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_shrink: shrink image by xfac, yfac times VImage VImage::shrink( double xfac, double yfac ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_shrink" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = xfac; *((double*) _vec.data(3)) = yfac; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_stretch3: stretch 3%, sub-pixel displace by xdisp/ydisp VImage VImage::stretch3( double xdisp, double ydisp ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_stretch3" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); *((double*) _vec.data(2)) = xdisp; *((double*) _vec.data(3)) = ydisp; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_affinei: affine transform VImage VImage::affinei( char* interpolate, double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_affinei" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); if( vips__input_interpolate_init( &_vec.data(2), interpolate ) ) verror(); *((double*) _vec.data(3)) = a; *((double*) _vec.data(4)) = b; *((double*) _vec.data(5)) = c; *((double*) _vec.data(6)) = d; *((double*) _vec.data(7)) = dx; *((double*) _vec.data(8)) = dy; *((int*) _vec.data(9)) = x; *((int*) _vec.data(10)) = y; *((int*) _vec.data(11)) = w; *((int*) _vec.data(12)) = h; _vec.call(); out._ref->addref( in._ref ); return( out ); } // im_affinei_all: affine transform of whole image VImage VImage::affinei_all( char* interpolate, double a, double b, double c, double d, double dx, double dy ) throw( VError ) { VImage in = *this; VImage out; Vargv _vec( "im_affinei_all" ); _vec.data(0) = in.image(); _vec.data(1) = out.image(); if( vips__input_interpolate_init( &_vec.data(2), interpolate ) ) verror(); *((double*) _vec.data(3)) = a; *((double*) _vec.data(4)) = b; *((double*) _vec.data(5)) = c; *((double*) _vec.data(6)) = d; *((double*) _vec.data(7)) = dx; *((double*) _vec.data(8)) = dy; _vec.call(); out._ref->addref( in._ref ); return( out ); } // bodies for package video // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // im_video_test: test video grabber VImage VImage::video_test( int brightness, int error ) throw( VError ) { VImage out; Vargv _vec( "im_video_test" ); _vec.data(0) = out.image(); *((int*) _vec.data(1)) = brightness; *((int*) _vec.data(2)) = error; _vec.call(); return( out ); } // im_video_v4l1: grab a video frame with v4l1 VImage VImage::video_v4l1( char* device, int channel, int brightness, int colour, int contrast, int hue, int ngrabs ) throw( VError ) { VImage out; Vargv _vec( "im_video_v4l1" ); _vec.data(0) = out.image(); _vec.data(1) = (im_object) device; *((int*) _vec.data(2)) = channel; *((int*) _vec.data(3)) = brightness; *((int*) _vec.data(4)) = colour; *((int*) _vec.data(5)) = contrast; *((int*) _vec.data(6)) = hue; *((int*) _vec.data(7)) = ngrabs; _vec.call(); return( out ); } vips-8.2.2/libvipsCC/VError.cc0000664000175000017500000000361612530402247013040 00000000000000// Code for error type /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #ifdef WITH_DMALLOC #include #endif /*WITH_DMALLOC*/ VIPS_NAMESPACE_START void VError::perror() { std::cerr << _what; exit( 1 ); } void VError::perror( const char *name ) { std::cerr << name << ": " << _what; exit( 1 ); } // Add a new bit to the end of the error buffer VError &VError::app( const int i ) { char buf[ 256 ]; sprintf( buf, "%d", i ); _what += buf; return( *this ); } VError &VError::app( std::string txt ) { _what += txt; return( *this ); }; void VError::ostream_print( std::ostream &file ) const { file << _what; } void verror( std::string str ) throw( VError ) { VError err; err.app( "VIPS error: " ); if( str == "" ) { err.app( im_error_buffer() ); im_error_clear(); } else err.app( str ).app( "\n" ); throw( err ); } VIPS_NAMESPACE_END vips-8.2.2/libvipsCC/VMask.cc0000664000175000017500000003261112530402247012637 00000000000000// Object part of VMask class /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #ifdef WITH_DMALLOC #include #endif /*WITH_DMALLOC*/ VIPS_NAMESPACE_START /* Functions for VMask - refcounting layer over VPMask. */ VMask::~VMask() { ref->nrefs--; if( !ref->nrefs ) delete ref; } VMask &VMask::operator=( const VMask &a ) { // Loosing ref to LHS ref->nrefs--; if( ref->nrefs > 0 ) // Need fresh refblock ref = new refblock; else // Recycle old refblock delete ref->pmask; // LHS now points to RHS ref = a.ref; ref->nrefs++; return( *this ); } // Make sure this is a private copy of pmask --- dup if nrefs != 1 void VMask::make_private() { if( ref->nrefs > 1 ) { // Make fresh refblock refblock *ref2 = new refblock; // And copy the mask ref2->pmask = ref->pmask->dup(); ref->nrefs--; ref = ref2; } } void VMask::ostream_print( std::ostream &file ) const { file << *(ref->pmask); } // Embed INTMASK in VIMask void VIMask::embed( INTMASK *i ) throw( VError ) { if( ref->pmask ) verror( "embed: VIMask not empty" ); ref->pmask = new _private_detail::VPIMask( i ); } // Type conversions: implicit INTMASK to DOUBLEMASK VIMask::operator VDMask() { VDMask out( xsize(), ysize() ); out.mask().dptr->scale = scale(); out.mask().dptr->offset = offset(); for( int i = 0; i < size(); i++ ) out[i] = (*this)[i]; return( out ); } // Forward ref of VImage class class VImage; // Type conversions: implicit DOUBLEMASK to INTMASK VDMask::operator VIMask() { VIMask out( xsize(), ysize() ); out.mask().iptr->scale = int( scale() ); out.mask().iptr->offset = int( offset() ); for( int i = 0; i < size(); i++ ) out[i] = (int) rint( (*this)[i] ); return( out ); } // Type conversions: implicit DOUBLEMASK to VImage VDMask::operator VImage() throw( VError ) { VImage out; if( im_mask2vips( mask().dptr, out.image() ) ) verror(); return( out ); } // ... and INTMASK to VImage VIMask::operator VImage() { return( VImage( VDMask( *this ) ) ); } // Embed DOUBLEMASK in VDMask void VDMask::embed( DOUBLEMASK *i ) throw( VError ) { if( ref->pmask ) verror( "embed: VDMask not empty" ); ref->pmask = new _private_detail::VPDMask( i ); } /* Functions for P*Mask - layer over im_*_*mask() functions. */ // Create empty imask _private_detail::VPIMask::VPIMask( int xsize, int ysize ) throw( VError ) { if( !(data.iptr = im_create_imask( "VPIMask::VPIMask", xsize, ysize )) ) verror(); type = _private_detail::VPMask::INT; } // Init from vector _private_detail::VPIMask::VPIMask( int xsize, int ysize, int scale, int offset, std::vector coeff ) throw( VError ) { int i; if( !(data.iptr = im_create_imask( "VPIMask::VPIMask", xsize, ysize )) ) verror(); type = _private_detail::VPMask::INT; data.iptr->scale = scale; data.iptr->offset = offset; for( i = 0; i < xsize * ysize; i++ ) data.iptr->coeff[i] = coeff[i]; } // Create from filename _private_detail::VPIMask::VPIMask( const char *name ) throw( VError ) { if( !(data.iptr = im_read_imask( (char *) name )) ) verror(); type = _private_detail::VPMask::INT; } // Create from existing INTMASK _private_detail::VPIMask::VPIMask( INTMASK *imask ) { data.iptr = imask; type = _private_detail::VPMask::INT; } // Create empty _private_detail::VPIMask::VPIMask() { data.iptr = 0; type = _private_detail::VPMask::UNASSIGNED; } _private_detail::VPIMask::~VPIMask() { if( data.iptr ) { im_free_imask( data.iptr ); data.iptr = 0; type = _private_detail::VPMask::UNASSIGNED; } } // Duplicate -- we are a VPIMask, return a new VPIMask which is a copy of us. // Return as a VPMask tho'. _private_detail::VPMask *_private_detail::VPIMask::dup() const throw( VError ) { _private_detail::VPIMask *out = new _private_detail::VPIMask(); INTMASK *msk; if( !(msk = im_dup_imask( data.iptr, "VPIMask::dup" )) ) { delete out; verror(); } out->embed( msk ); return( out ); } // Insert INTMASK pointer void _private_detail::VPIMask::embed( INTMASK *msk ) throw( VError ) { if( type != _private_detail::VPMask::UNASSIGNED ) verror( "VPIMask::embed: VPIMask not empty" ); data.iptr = msk; type = _private_detail::VPMask::INT; } int _private_detail::VPIMask::xsize() const throw( VError ) { if( !data.iptr ) verror( "xsize: mask not set" ); return( data.iptr->xsize ); } int _private_detail::VPIMask::ysize() const throw( VError ) { if( !data.iptr ) verror( "ysize: mask not set" ); return( data.iptr->ysize ); } int _private_detail::VPIMask::scale() const throw( VError ) { if( !data.iptr ) verror( "scale: mask not set" ); return( data.iptr->scale ); } int _private_detail::VPIMask::offset() const throw( VError ) { if( !data.iptr ) verror( "offset: mask not set" ); return( data.iptr->offset ); } const char *_private_detail::VPIMask::filename() const throw( VError ) { if( !data.iptr ) verror( "filename: mask not set" ); return( data.iptr->filename ); } void _private_detail::VPIMask::ostream_print( std::ostream &file ) const throw( VError ) { if( !data.iptr ) verror( "internal error #7447234" ); int i, j; int *p = data.iptr->coeff; file << this->xsize() << "\t" << this->ysize() << "\t"; file << this->scale() << "\t" << this->offset() << "\n"; for( i = 0; i < this->ysize(); i++ ) { for( j = 0; j < this->xsize(); j++ ) file << *p++ << "\t"; file << "\n"; } } // Extract start of int array int *_private_detail::VPIMask::array() const { return( data.iptr->coeff ); } // Create empty dmask _private_detail::VPDMask::VPDMask( int xsize, int ysize ) throw( VError ) { if( !(data.dptr = im_create_dmask( "VPDMask::VPDMask", xsize, ysize )) ) verror(); type = _private_detail::VPMask::DOUBLE; } // Create from vector _private_detail::VPDMask::VPDMask( int xsize, int ysize, double scale, double offset, std::vector coeff ) throw( VError ) { int i; if( !(data.dptr = im_create_dmask( "VPDMask::VPDMask", xsize, ysize )) ) verror(); type = _private_detail::VPMask::DOUBLE; data.dptr->scale = scale; data.dptr->offset = offset; for( i = 0; i < xsize * ysize; i++ ) data.dptr->coeff[i] = coeff[i]; } // Create from filename _private_detail::VPDMask::VPDMask( const char *name ) throw( VError ) { if( !(data.dptr = im_read_dmask( (char *) name )) ) verror(); type = _private_detail::VPMask::DOUBLE; } // Create empty _private_detail::VPDMask::VPDMask() { data.dptr = 0; type = _private_detail::VPMask::UNASSIGNED; } // Create from existing DOUBLEMASK _private_detail::VPDMask::VPDMask( DOUBLEMASK *dmask ) { data.dptr = dmask; type = _private_detail::VPMask::DOUBLE; } _private_detail::VPDMask::~VPDMask() { if( data.dptr ) { im_free_dmask( data.dptr ); data.dptr = 0; type = _private_detail::VPMask::UNASSIGNED; } } // Duplicate -- we are a VPIMask, return a new VPIMask which is a copy of us. // Return as a VPMask tho'. _private_detail::VPMask *_private_detail::VPDMask::dup() const throw( VError ) { _private_detail::VPDMask *out = new _private_detail::VPDMask(); DOUBLEMASK *msk; if( !(msk = im_dup_dmask( data.dptr, "VPDMask::dup" )) ) { delete out; verror(); } out->embed( msk ); return( out ); } // Insert DOUBLEMASK pointer void _private_detail::VPDMask::embed( DOUBLEMASK *msk ) throw( VError ) { if( type != _private_detail::VPMask::UNASSIGNED ) verror( "VPDMask::embed: VPDMask not empty" ); data.dptr = msk; type = _private_detail::VPMask::DOUBLE; } int _private_detail::VPDMask::xsize() const throw( VError ) { if( !data.dptr ) verror( "xsize: mask not set" ); return( data.dptr->xsize ); } int _private_detail::VPDMask::ysize() const throw( VError ) { if( !data.dptr ) verror( "ysize: mask not set" ); return( data.dptr->ysize ); } double _private_detail::VPDMask::scale() const throw( VError ) { if( !data.dptr ) verror( "scale: mask not set" ); return( data.dptr->scale ); } double _private_detail::VPDMask::offset() const throw( VError ) { if( !data.dptr ) verror( "offset: mask not set" ); return( data.dptr->offset ); } const char *_private_detail::VPDMask::filename() const throw( VError ) { if( !data.dptr ) verror( "filename: mask not set" ); return( data.dptr->filename ); } void _private_detail::VPDMask::ostream_print( std::ostream &file ) const throw( VError ) { if( !data.dptr ) verror( "internal error #7447234" ); int i, j; double *p = data.dptr->coeff; file << this->xsize() << "\t" << this->ysize() << "\t"; file << this->scale() << "\t" << this->offset() << "\n"; for( i = 0; i < this->ysize(); i++ ) { for( j = 0; j < this->xsize(); j++ ) file << *p++ << "\t"; file << "\n"; } } // Extract data pointer double *_private_detail::VPDMask::array() const { return( data.dptr->coeff ); } // Build functions VIMask VIMask::gauss( double sig, double minamp ) throw( VError ) { VIMask out; INTMASK *msk; if( !(msk = im_gauss_imask( "VIMask::gauss", sig, minamp )) ) verror(); out.embed( msk ); return( out ); } VIMask VIMask::gauss_sep( double sig, double minamp ) throw( VError ) { VIMask out; INTMASK *msk; if( !(msk = im_gauss_imask_sep( "VIMask::gauss", sig, minamp )) ) verror(); out.embed( msk ); return( out ); } VDMask VDMask::gauss( double sig, double minamp ) throw( VError ) { VDMask out; DOUBLEMASK *msk; if( !(msk = im_gauss_dmask( "VDMask::gauss", sig, minamp )) ) verror(); out.embed( msk ); return( out ); } VIMask VIMask::log( double sig, double minamp ) throw( VError ) { VIMask out; INTMASK *msk; if( !(msk = im_log_imask( "VIMask::log", sig, minamp )) ) verror(); out.embed( msk ); return( out ); } VDMask VDMask::log( double sig, double minamp ) throw( VError ) { VDMask out; DOUBLEMASK *msk; if( !(msk = im_log_dmask( "VDMask::log", sig, minamp )) ) verror(); out.embed( msk ); return( out ); } // Manipulation functions VIMask VIMask::rotate45() throw( VError ) { VIMask out; INTMASK *msk; if( !(msk = im_rotate_imask45( mask().iptr, "VIMask::rotate45" )) ) verror(); out.embed( msk ); return( out ); } VIMask VIMask::rotate90() throw( VError ) { VIMask out; INTMASK *msk; if( !(msk = im_rotate_imask90( mask().iptr, "VIMask::rotate90" )) ) verror(); out.embed( msk ); return( out ); } VDMask VDMask::rotate45() throw( VError ) { VDMask out; DOUBLEMASK *msk; if( !(msk = im_rotate_dmask45( mask().dptr, "VDMask::rotate45" )) ) verror(); out.embed( msk ); return( out ); } VDMask VDMask::rotate90() throw( VError ) { VDMask out; DOUBLEMASK *msk; if( !(msk = im_rotate_dmask90( mask().dptr, "VDMask::rotate90" )) ) verror(); out.embed( msk ); return( out ); } VDMask VDMask::trn() throw( VError ) { VDMask out; DOUBLEMASK *msk; if( !(msk = im_mattrn( mask().dptr, "VDMask::trn" )) ) verror(); out.embed( msk ); return( out ); } VDMask VDMask::inv() throw( VError ) { VDMask out; DOUBLEMASK *msk; if( !(msk = im_matinv( mask().dptr, "VDMask::inv" )) ) verror(); out.embed( msk ); return( out ); } VDMask VDMask::mul( VDMask m ) throw( VError ) { VDMask out; DOUBLEMASK *msk; if( !(msk = im_matmul( mask().dptr, m.mask().dptr, "VDMask::mul" )) ) verror(); out.embed( msk ); return( out ); } VDMask VDMask::cat( VDMask m ) throw( VError ) { VDMask out; DOUBLEMASK *msk; if( !(msk = im_matcat( mask().dptr, m.mask().dptr, "VDMask::cat" )) ) verror(); out.embed( msk ); return( out ); } VIMask VDMask::scalei() throw( VError ) { VIMask out; INTMASK *msk; if( !(msk = im_scale_dmask( mask().dptr, "VDMask::scalei" )) ) verror(); out.embed( msk ); return( out ); } // Arithmetic on a VIMask ... just cast and use VDMask VDMask VIMask::trn() throw( VError ) { return( ((VDMask)*this).trn() ); } VDMask VIMask::inv() throw( VError ) { return( ((VDMask)*this).inv() ); } VDMask VIMask::cat( VDMask a ) throw( VError ) { return( ((VDMask)*this).cat( a ) ); } VDMask VIMask::mul( VDMask a ) throw( VError ) { return( ((VDMask)*this).mul( a ) ); } // Overload [] to get linear array subscript. // Our caller may write to the result, so make sure we have a private // copy. // Involves function call, slow anyway, so do range checking int &VIMask::operator[]( int x ) throw( VError ) { if( ref->nrefs != 1 ) make_private(); if( x > size() ) verror( "VIMask::operator[]: subscript out of range" ); return( ((_private_detail::VPIMask *)ref->pmask)->array()[x] ); } double &VDMask::operator[]( int x ) throw( VError ) { if( ref->nrefs != 1 ) make_private(); if( x > size() ) verror( "VDMask::operator[]: subscript out of range" ); return( ((_private_detail::VPDMask *)ref->pmask)->array()[x] ); } VIPS_NAMESPACE_END vips-8.2.2/libvipsCC/Makefile.am0000664000175000017500000000153512530402247013344 00000000000000SUBDIRS = \ include AM_CPPFLAGS = \ -I$(top_srcdir)/libvips/include \ -I$(top_srcdir)/libvipsCC/include \ @VIPS_CFLAGS@ lib_LTLIBRARIES = libvipsCC.la libvipsCC_la_SOURCES = \ VImage.cc \ VError.cc \ VDisplay.cc \ VMask.cc libvipsCC_la_LDFLAGS = \ -no-undefined \ -version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ libvipsCC_la_LIBADD = \ $(top_builddir)/libvips/libvips.la @VIPS_LIBS@ # swap the 'awk' line for this: # awk '{if($$1!="deprecated") print $$1}'` ; \ # to not generate the wrappers for deprecated functions vipsc++.cc: packages=`vips list packages | \ awk '{print $$1}'` ; \ echo > vipsc++.cc ; \ for name in $$packages; do \ echo "// bodies for package $$name" >> vipsc++.cc ; \ vips cppc $$name >> vipsc++.cc ; \ echo >> vipsc++.cc ; \ done EXTRA_DIST = \ README.txt \ vipsc++.cc vips-8.2.2/libvipsCC/VDisplay.cc0000664000175000017500000000545112530402247013353 00000000000000// Object part of VDisplay class /* Copyright (C) 1991-2001 The National Gallery This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifdef HAVE_CONFIG_H #include #endif /*HAVE_CONFIG_H*/ #include #include #include #include #include #include #ifdef WITH_DMALLOC #include #endif /*WITH_DMALLOC*/ VIPS_NAMESPACE_START /* Refcounting stuff first. */ // Free an im_col_display static void free_display( im_col_display *d ) { } // Dupe an im_col_display static im_col_display * dup_display( im_col_display *in ) throw( VError ) { return( in ); } // Remove lut void VDisplay::refblock::cleanlut() { if( luts ) { im_free( luts ); luts = 0; } } // Remove attached things void VDisplay::refblock::cleanref() { if( disp && priv ) { free_display( disp ); disp = 0; priv = 0; } cleanlut(); } // Get ready to write to disp void VDisplay::refblock::wready() throw( VError ) { cleanlut(); if( !priv ) { disp = dup_display( disp ); priv = 1; } } // Check that luts are up-to-date void VDisplay::refblock::cluts() throw( VError ) { } VDisplay::~VDisplay() { ref->nrefs--; if( !ref->nrefs ) delete ref; } VDisplay &VDisplay::operator=( const VDisplay &a ) { ref->nrefs--; if( ref->nrefs > 0 ) // Need fresh ref = new refblock; else // Recycle old ref->cleanref(); ref = a.ref; ref->nrefs++; return( *this ); } VDisplay::VDisplay( const char *name ) throw( VError ) { // Install display ref = new refblock; ref->disp = NULL; } VDisplay::VDisplay() { // Just use sRGB ref = new refblock; ref->disp = im_col_displays( 7 ); } /* Setters and getters. We used to have a lot of code of the form: float &VDisplay::YCW() { ref->wready(); return( ((im_col_display*)ref->disp)->d_YCW ); } This should be split to separate setters/getters so we can exploit const. Too annoying to do this on such a useless class (I'm certain no one used these functions anyway), fix in vips8. */ VIPS_NAMESPACE_END vips-8.2.2/libvipsCC/include/0000775000175000017500000000000012651721506013015 500000000000000vips-8.2.2/libvipsCC/include/vips/0000775000175000017500000000000012651721506013776 500000000000000vips-8.2.2/libvipsCC/include/vips/VMask.h0000664000175000017500000002362612530402247015113 00000000000000/* VIPS mask class. * * Just like VImage, but we don't need dependency stuff. Instead, have a base * wrapper over *MASK, derive VMaskD and VMaskI from that, and then put * refcounting over all of them. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_VMASK_H #define IM_VMASK_H /* SWIG includes this file directly rather than going through vipscpp.h ... so * we have to define these macros here as well. */ #ifdef SWIG # define VIPS_NAMESPACE_START namespace vips { # define VIPS_NAMESPACE_END } #endif /*SWIG*/ /* Don't include these when parsing for SWIG. */ #ifndef SWIG # include # include # include #endif /*!SWIG*/ /* Wrap pointers to these, but we don't want to import all the old C API. Just * declare them. */ extern "C" { struct im__INTMASK; struct im__DOUBLEMASK; } VIPS_NAMESPACE_START /* This first section is private. Only expose the non-P versions of these * classes later on. Don't need to wrap then in SWIG either. */ #ifndef SWIG namespace _private_detail { union MASKUNION { im__INTMASK *iptr; im__DOUBLEMASK *dptr; }; // Private wrapper over *MASK - user does not see this class VPMask { friend class VMask; public: // Track type of mask with this enum VMaskType { UNASSIGNED, // Not yet set INT, // mask points to INTMASK DOUBLE // mask points to DOUBLEMASK }; MASKUNION data; // Mask pointer - INT or DOUBLE VMaskType type; // Track type too, for safety virtual ~VPMask() {}; // Duplicate virtual VPMask *dup() const = 0; // Projection functions to get MASK fields virtual int xsize() const = 0; virtual int ysize() const = 0; virtual const char *filename() const = 0; // Output virtual void ostream_print( std::ostream & ) const = 0; }; // Specialise for INTMASK class VPIMask : public VPMask { public: VPIMask( int xsize, int ysize ) throw( VError ); VPIMask( int xsize, int ysize, int scale, int offset, std::vector coeff ) throw( VError ); VPIMask( const char * ) throw( VError ); VPIMask( im__INTMASK * ); VPIMask(); virtual ~VPIMask(); VPMask *dup() const throw( VError ); void embed( im__INTMASK * ) throw( VError ); int xsize() const throw( VError ); int ysize() const throw( VError ); int scale() const throw( VError ); int offset() const throw( VError ); const char *filename() const throw( VError ); // Output virtual void ostream_print( std::ostream & ) const throw( VError ); // Extract start of array of ints int *array() const; }; // Specialise for DOUBLEMASK class VPDMask : public VPMask { public: VPDMask( int xsize, int ysize ) throw( VError ); VPDMask( int xsize, int ysize, double scale, double offset, std::vector coeff ) throw( VError ); VPDMask( const char * ) throw( VError ); VPDMask( im__DOUBLEMASK * ); VPDMask(); virtual ~VPDMask(); VPMask *dup() const throw( VError ); void embed( im__DOUBLEMASK * ) throw( VError ); int xsize() const throw( VError ); int ysize() const throw( VError ); double scale() const throw( VError ); double offset() const throw( VError ); const char *filename() const throw( VError ); // Output virtual void ostream_print( std::ostream & ) const throw( VError ); // Extract start of array of doubles double *array() const; }; } // end of namespace _private_detail inline std::ostream &operator<<( std::ostream &file, const _private_detail::VPMask &msk ) { msk.ostream_print( file ); return( file ); } #endif /*!SWIG*/ // Wrapper over VP?Mask with ref counting class VMask { protected: struct refblock { _private_detail::VPMask *pmask; // Mask: double or int int nrefs; // Refs to us refblock() : pmask(0), nrefs(1) {} virtual ~refblock() { delete pmask; } }; refblock *ref; // Make sure this is a private copy of pmask --- dup if nrefs != 1 void make_private(); public: // Constructor leaves msk uninitialised VMask() { ref = new refblock; } // Copy constructor VMask( const VMask &a ) { ref = a.ref; ref->nrefs++; } // Assignment VMask &operator=( const VMask &a ); // Destructor virtual ~VMask(); int xsize() const throw( VError ) { return( ref->pmask->xsize() ); } int ysize() const throw( VError ) { return( ref->pmask->ysize() ); } int size() const throw( VError ) { return( xsize() * ysize() ); } const char *filename() const throw( VError ) { return( ref->pmask->filename() ); } // Extract underlying type _private_detail::VPMask::VMaskType type() const { return( ref->pmask->type ); } // Extract underlying VIPS pointer _private_detail::MASKUNION mask() const { return( ref->pmask->data ); } void ostream_print( std::ostream & ) const; }; inline std::ostream &operator<<( std::ostream &file, const VMask &msk ) { msk.ostream_print( file ); return( file ); } // Need to forward ref these class VDMask; class VImage; // Wrapper over _private_detail::VPIMask with ref counting class VIMask : public VMask { public: VIMask( int xsize, int ysize ) { ref->pmask = new _private_detail::VPIMask( xsize, ysize ); } /* Don't wrap the varargs constructor. We want Python to use the vector one. */ #ifndef SWIG VIMask( int xsize, int ysize, int scale, int offset, ... ) { va_list ap; int i; std::vector coeff( xsize * ysize ); va_start( ap, offset ); for( i = 0; i < xsize * ysize; i++ ) coeff[i] = va_arg( ap, int ); va_end( ap ); ref->pmask = new _private_detail::VPIMask( xsize, ysize, scale, offset, coeff ); } #endif /*!SWIG*/ VIMask( int xsize, int ysize, int scale, int offset, std::vector coeff ) { ref->pmask = new _private_detail::VPIMask( xsize, ysize, scale, offset, coeff ); } VIMask( const char *name ) { ref->pmask = new _private_detail::VPIMask( name ); } // No mask there yet VIMask() {} int scale() { return( ((_private_detail::VPIMask *)ref->pmask)->scale() ); } int offset() { return( ((_private_detail::VPIMask *)ref->pmask)->offset() ); } // Embed INTMASK in VIMask void embed( im__INTMASK * ) throw( VError ); // Overload [] to get linear array subscript. int &operator[]( int ) throw( VError ); // Overload () to get matrix subscript. int &operator()( int x, int y ) throw( VError ) { return( (*this)[x + y*xsize()] ); } // and as a function call that SWIG can wrap int get( int i ) throw( VError ) { return( (*this)[i] ); } // Type conversion: INTMASK->DOUBLEMASK operator VDMask(); // Type conversion: INTMASK->image operator VImage(); // VIMask build functions static VIMask gauss( double, double ) throw( VError ); static VIMask gauss_sep( double, double ) throw( VError ); static VIMask log( double, double ) throw( VError ); // VIMask manipulation VIMask rotate45() throw( VError ); VIMask rotate90() throw( VError ); // Arithmetic ... cast to double, and use VDMask funcs. For some // reason, the compiler won't let us do casts to VDImage yet, so no // inlines. VDMask trn() throw( VError ); VDMask inv() throw( VError ); VDMask cat( VDMask ) throw( VError ); VDMask mul( VDMask ) throw( VError ); }; // Wrapper over _private_detail::VPDMask with ref counting class VDMask : public VMask { public: VDMask( int xsize, int ysize ) { ref->pmask = new _private_detail::VPDMask( xsize, ysize ); } /* Don't wrap the varargs constructor. We want Python to use the vector one. */ #ifndef SWIG VDMask( int xsize, int ysize, double scale, double offset, ... ) { va_list ap; int i; std::vector coeff( xsize * ysize ); va_start( ap, offset ); for( i = 0; i < xsize * ysize; i++ ) coeff[i] = va_arg( ap, double ); va_end( ap ); ref->pmask = new _private_detail::VPDMask( xsize, ysize, scale, offset, coeff ); } #endif /*!SWIG*/ VDMask( int xsize, int ysize, double scale, double offset, std::vector coeff ) { ref->pmask = new _private_detail::VPDMask( xsize, ysize, scale, offset, coeff ); } VDMask( const char *name ) { ref->pmask = new _private_detail::VPDMask( name ); } // No mask yet VDMask() { } // Embed DOUBLEMASK in VDMask void embed( im__DOUBLEMASK * ) throw( VError ); double scale() throw( VError ) { return( ((_private_detail::VPDMask *)ref->pmask)->scale() ); } double offset() throw( VError ) { return( ((_private_detail::VPDMask *)ref->pmask)->offset() ); } // Overload [] to get linear array subscript. double &operator[]( int ) throw( VError ); // Overload () to get matrix subscript. double &operator()( int x, int y ) throw( VError ) { return( (*this)[x + y*xsize()] ); } // and as a function call that SWIG can wrap double get( int i ) throw( VError ) { return( (*this)[i] ); } // Type conversion: double->int operator VIMask(); // Type conversion: DOUBLEMASK->image operator VImage() throw( VError ); // VDMask build functions static VDMask gauss( double, double ) throw( VError ); static VDMask log( double, double ) throw( VError ); // VDMask manipulation VDMask rotate45() throw( VError ); VDMask rotate90() throw( VError ); // Scale to intmask VIMask scalei() throw( VError ); // Simple arithmetic VDMask trn() throw( VError ); VDMask inv() throw( VError ); VDMask cat( VDMask ) throw( VError ); VDMask mul( VDMask ) throw( VError ); }; VIPS_NAMESPACE_END #endif /*IM_VMASK_H*/ vips-8.2.2/libvipsCC/include/vips/VImage.h0000664000175000017500000003233512530402247015237 00000000000000// VIPS image wrapper /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_VIMAGE_H #define IM_VIMAGE_H /* SWIG includes this file directly rather than going through vipscpp.h ... so * we have to define these macros here as well. */ #ifdef SWIG # define VIPS_NAMESPACE_START namespace vips { # define VIPS_NAMESPACE_END } #endif /*SWIG*/ /* Don't include these when parsing for SWIG. */ #ifndef SWIG # include # include # include #endif /*!SWIG*/ /* Wrap pointers to these, but we don't want to import all the old C API. Just * declare them. */ extern "C" { struct _VipsImage; /* Needed by Vargv, see below. */ struct im__function; typedef void *im__object; } VIPS_NAMESPACE_START /* vips_init() and vips_shutdown as namespaced C++ functions. */ bool init( const char *argv0 = "nothing" ); void thread_shutdown( void ); void shutdown( void ); /* A VIPS callback, our name for im_callback_fn. */ typedef int (*VCallback)( void *, void * ); /* VIPS image class. * * Slightly tricky: we have two sorts of sharing. Several VImage can share one * refblock (while results are being returned from functions, for example), * and several other refblocks can have IMAGEs which depend upon this IMAGE * for their result. */ class VImage { /* We'd like this to be protected so that user subclasses can define * their own member wrappers. But sadly C++ doesn't work like that: * subclasses of VImage can only refer to protected members via * this->, which isn't what we need. Just make it public and hope no * one touches it. */ public: /* Doesn't need to be wrapped. */ #ifndef SWIG // Count ref etc. in one of these. One for each open VIPS image. struct refblock { _VipsImage *im; // IMAGE pointer int close_on_delete; // Set if we must im_close() int nrefs; // Number of refs to us std::list orefs; // Refs im makes // Construct/destruct refblock(); virtual ~refblock() throw( VError ); // Add a ref - this (output image) depends upon IMAGE in void addref( refblock *in ) throw( VError ); // Remove a ref void removeref() throw( VError ); // Debugging void debug_print(); // Linked list needs "==" -- use address equivalence friend int operator==( const refblock &left, const refblock &right ) { return( &left == &right ); } }; refblock *_ref; #endif /*!SWIG*/ public: #ifdef DEBUG /* All the refblocks in the world. */ static std::list all_refblock; #endif /*DEBUG*/ /* Print all refblocks ... debugging. Compile with DEBUG to enable * this. */ static void print_all(); /* Typedefs and enums we need. */ // Type type enum TType { MULTIBAND = 0, B_W = 1, LUMINACE = 2, XRAY = 3, IR = 4, YUV = 5, RED_ONLY = 6, GREEN_ONLY = 7, BLUE_ONLY = 8, POWER_SPECTRUM = 9, HISTOGRAM = 10, LUT = 11, XYZ = 12, LAB = 13, CMC = 14, CMYK = 15, LABQ = 16, RGB = 17, UCS = 18, LCH = 19, LABS = 21, sRGB = 22, YXY = 23, FOURIER = 24, RGB16 = 25, GREY16 = 26 }; // Format type enum TBandFmt { FMTNOTSET = -1, FMTUCHAR = 0, FMTCHAR = 1, FMTUSHORT = 2, FMTSHORT = 3, FMTUINT = 4, FMTINT = 5, FMTFLOAT = 6, FMTCOMPLEX = 7, FMTDOUBLE = 8, FMTDPCOMPLEX = 9 }; // Coding type enum TCoding { NOCODING = 0, COLQUANT = 1, LABPACK = 2, LABPACK_COMPRESSED = 3, RGB_COMPRESSED = 4, LUM_COMPRESSED = 5, RAD = 6 }; // Compression type enum TCompression { NO_COMPRESSION = 0, TCSF_COMPRESSION = 1, JPEG_COMPRESSION = 2 }; /* Start of wrappers for iofuncs. */ // Plain constructors VImage( const char *name, const char *mode = "rd" ) throw( VError ); VImage( void *data, int width, int height, int bands, TBandFmt format ) throw( VError ); VImage( _VipsImage *image ); VImage() throw( VError ); // Convert to a disc file, eg: // VImage fred = VImage::convert2disc( "im_jpeg2vips", // "file.jpg", "temp.v" ); // Runs im_jpeg2vips to the temp file, then opens that and returns // it. Useful for opening very large files without using a lot of RAM. // Now superseded by the format API, though that's not yet wrapped in // C++ // Also replaced by the new default "rd" mode static VImage convert2disc( const char* convert, const char* in, const char* disc ) throw( VError ); // Copy constructor VImage( const VImage &a ); // Assignment - delete old ref VImage &operator=( const VImage &a ) throw( VError ); // Destructor virtual ~VImage() throw( VError ) { _ref->removeref(); } // Extract underlying IMAGE* pointer _VipsImage *image() const { return( _ref->im ); } // Extract underlying data pointer void *data() const throw( VError ); // Write this to another VImage, to a file, or to a mem buffer VImage write( VImage out ) throw( VError ); VImage write( const char *name ) throw( VError ); VImage write() throw( VError ); // Debugging ... print header fields void debug_print(); // Projection functions to get header fields int Xsize(); int Ysize(); int Bands(); TBandFmt BandFmt(); TCoding Coding(); TType Type(); float Xres(); float Yres(); int Length(); TCompression Compression(); short Level(); int Xoffset(); int Yoffset(); // Derived fields const char *filename(); const char *Hist(); // need the hough circle stuff for the rode python GUI VImage hough_circle( int scale, int min_radius, int max_radius ) throw( VError ); // metadata #ifndef SWIG // base functionality // we don't wrap GValue, so we can't wrap these for now void meta_set( const char *field, GValue *value ) throw( VError ); void meta_get( const char *field, GValue *value_copy ) throw( VError ); #endif /*SWIG*/ // We can wrap these, fwiw gboolean meta_remove( const char *field ); GType meta_get_typeof( const char *field ); // convenience functions int meta_get_int( const char *field ) throw( VError ); double meta_get_double( const char *field ) throw( VError ); const char *meta_get_string( const char *field ) throw( VError ); void *meta_get_area( const char *field ) throw( VError ); void *meta_get_blob( const char *field, size_t *length ) throw( VError ); void meta_set( const char *field, int value ) throw( VError ); void meta_set( const char *field, double value ) throw( VError ); void meta_set( const char *field, const char *value ) throw( VError ); #ifndef SWIG // we don't wrap callbacks yet, so we can't wrap these for now void meta_set( const char *field, VCallback free_fn, void *value ) throw( VError ); void meta_set( const char *field, VCallback free_fn, void *value, size_t length ) throw( VError ); #endif /*SWIG*/ // Set header fields void initdesc( int, int, int, TBandFmt, TCoding, TType, float = 1.0, float = 1.0, int = 0, int = 0 ) throw( VError ); /* Insert automatically generated headers. */ #include "vipsc++.h" /* No point getting SWIG to wrap these ... we do this by hand later so we can * handle things like "a + 12" correctly. */ #ifndef SWIG // And some in-line operator equivalences done by hand friend VImage operator+( VImage a, VImage b ) throw( VError ) { return( a.add( b ) ); } friend VImage operator+( double a, VImage b ) throw( VError ) { return( b.lin( 1.0, a ) ); } friend VImage operator+( VImage a, double b ) throw( VError ) { return( a.lin( 1.0, b ) ); } friend VImage operator-( VImage a, VImage b ) throw( VError ) { return( a.subtract( b ) ); } friend VImage operator-( double a, VImage b ) throw( VError ) { return( b.lin( -1.0, a ) ); } friend VImage operator-( VImage a, double b ) throw( VError ) { return( a.lin( 1.0, -b ) ); } friend VImage operator*( VImage a, VImage b ) throw( VError ) { return( a.multiply( b ) ); } friend VImage operator*( double a, VImage b ) throw( VError ) { return( b.lin( a, 0.0 ) ); } friend VImage operator*( VImage a, double b ) throw( VError ) { return( a.lin( b, 0.0 ) ); } friend VImage operator/( VImage a, VImage b ) throw( VError ) { return( a.divide( b ) ); } friend VImage operator/( double a, VImage b ) throw( VError ) { return( b.pow( -1.0 ).lin( a, 0.0 ) ); } friend VImage operator/( VImage a, double b ) throw( VError ) { return( a.lin( 1.0/b, 0.0 ) ); } friend VImage operator%( VImage a, VImage b ) throw( VError ) { return( a.remainder( b ) ); } friend VImage operator%( VImage a, double b ) throw( VError ) { return( a.remainder( b ) ); } friend VImage operator<( VImage a, VImage b ) throw( VError ) { return( a.less( b ) ); } friend VImage operator<( double a, VImage b ) throw( VError ) { return( b.more( a ) ); } friend VImage operator<( VImage a, double b ) throw( VError ) { return( a.less( b ) ); } friend VImage operator<=( VImage a, VImage b ) throw( VError ) { return( a.lesseq( b ) ); } friend VImage operator<=( double a, VImage b ) throw( VError ) { return( b.moreeq( a ) ); } friend VImage operator<=( VImage a, double b ) throw( VError ) { return( a.lesseq( b ) ); } friend VImage operator>( VImage a, VImage b ) throw( VError ) { return( a.more( b ) ); } friend VImage operator>( double a, VImage b ) throw( VError ) { return( b.less( a ) ); } friend VImage operator>( VImage a, double b ) throw( VError ) { return( a.more( b ) ); } friend VImage operator>=( VImage a, VImage b ) throw( VError ) { return( a.moreeq( b ) ); } friend VImage operator>=( double a, VImage b ) throw( VError ) { return( b.lesseq( a ) ); } friend VImage operator>=( VImage a, double b ) throw( VError ) { return( a.moreeq( b ) ); } friend VImage operator==( VImage a, VImage b ) throw( VError ) { return( a.equal( b ) ); } friend VImage operator==( double a, VImage b ) throw( VError ) { return( b.equal( a ) ); } friend VImage operator==( VImage a, double b ) throw( VError ) { return( a.equal( b ) ); } friend VImage operator!=( VImage a, VImage b ) throw( VError ) { return( a.notequal( b ) ); } friend VImage operator!=( double a, VImage b ) throw( VError ) { return( b.notequal( a ) ); } friend VImage operator!=( VImage a, double b ) throw( VError ) { return( a.notequal( b ) ); } friend VImage operator&( VImage a, VImage b ) throw( VError ) { return( a.andimage( b ) ); } friend VImage operator&( int a, VImage b ) throw( VError ) { return( b.andimage( a ) ); } friend VImage operator&( VImage a, int b ) throw( VError ) { return( a.andimage( b ) ); } friend VImage operator|( VImage a, VImage b ) throw( VError ) { return( a.orimage( b ) ); } friend VImage operator|( int a, VImage b ) throw( VError ) { return( b.orimage( a ) ); } friend VImage operator|( VImage a, int b ) throw( VError ) { return( a.orimage( b ) ); } friend VImage operator^( VImage a, VImage b ) throw( VError ) { return( a.eorimage( b ) ); } friend VImage operator^( int a, VImage b ) throw( VError ) { return( b.eorimage( a ) ); } friend VImage operator^( VImage a, int b ) throw( VError ) { return( a.eorimage( b ) ); } friend VImage operator<<( VImage a, int b ) throw( VError ) { return( a.shiftleft( b ) ); } friend VImage operator>>( VImage a, int b ) throw( VError ) { return( a.shiftright( b ) ); } friend VImage operator-( VImage a ) throw( VError ) { return( a * -1 ); } // Type conversion: VImage to VDMask and VIMask operator VDMask() throw( VError ) { return( this->vips2mask() ); } operator VIMask() throw( VError ) { return( VIMask( VDMask( *this ) ) ); } #endif /*!SWIG*/ }; /* Don't include these when parsing for SWIG. */ #ifndef SWIG /* Class wrapping up a vargv. Member function wrappers need this. It needs to * be part of the public API in case people subclass VImage and add their own * members. */ class Vargv { // Function we are args to im__function *fn; // Base of object vector im__object *base; public: Vargv( const char *name ); ~Vargv(); // Reference to element of base im__object &data( int i = 0 ) { return( base[i] ); }; // Invoke function void call(); }; #endif /*!SWIG*/ VIPS_NAMESPACE_END // Other VIPS protos we need extern "C" { extern int im_init_world( const char *argv0 ); extern int im_init_world( const char *argv0 ); extern void vips_thread_shutdown( void ); extern void im__print_all(); extern void im_col_Lab2XYZ( float, float, float, float *, float *, float * ); } #endif /*IM_VIMAGE_H*/ vips-8.2.2/libvipsCC/include/vips/vips0000664000175000017500000000433612530402247014622 00000000000000// Include file to get all VIPS C++ bindings /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_VIPS #define IM_VIPS #include // VImage.h uses GValue for metadata #include // If we have already #included the C vips headers, we have to undef a load of // stuff to stop vips's stupid macros messing up our enums #ifdef IM_VIPS_H #ifdef IM_ENABLE_DEPRECATED #undef MULTIBAND #undef B_W #undef LUMINACE #undef XRAY #undef IR #undef YUV #undef RED_ONLY #undef GREEN_ONLY #undef BLUE_ONLY #undef POWER_SPECTRUM #undef HISTOGRAM #undef LUT #undef XYZ #undef LAB #undef CMC #undef CMYK #undef LABQ #undef RGB #undef UCS #undef LCH #undef LABS #undef sRGB #undef FMTNOTSET #undef FMTUCHAR #undef FMTCHAR #undef FMTUSHORT #undef FMTSHORT #undef FMTUINT #undef FMTINT #undef FMTFLOAT #undef FMTCOMPLEX #undef FMTDOUBLE #undef FMTDPCOMPLEX #undef NOCODING #undef COLQUANT #undef LABPACK #undef LABPACK_COMPRESSED #undef RGB_COMPRESSED #undef LUM_COMPRESSED #undef NO_COMPRESSION #undef TCSF_COMPRESSION #undef JPEG_COMPRESSION #endif /*IM_ENABLE_DEPRECATED*/ #endif /*IM_VIPS_H*/ #ifdef IM_RECT_H #ifdef IM_ENABLE_DEPRECATED #undef right #undef bottom #endif /*IM_ENABLE_DEPRECATED*/ #endif /*IM_RECT_H*/ #define VIPS_NAMESPACE_START namespace vips { #define VIPS_NAMESPACE_END } #include #include #include #include #endif /*IM_VIPS*/ vips-8.2.2/libvipsCC/include/vips/VError.h0000664000175000017500000000377512530402247015314 00000000000000// Header for error type /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_VERROR_H #define IM_VERROR_H /* SWIG includes this file directly rather than going through vipscpp.h ... so * we have to define these macros here as well. */ #ifdef SWIG #define VIPS_NAMESPACE_START namespace vips { #define VIPS_NAMESPACE_END } #endif /*SWIG*/ /* Don't include these when parsing for SWIG. */ #ifndef SWIG # include # include # include #endif /*!SWIG*/ VIPS_NAMESPACE_START // Error type class VError : public std::exception { std::string _what; public: VError( std::string what ) : _what( what ) {} VError() {} virtual ~VError() throw() {} // Print message and exit void perror( const char * ); void perror(); // Append some more text to the message VError &app( std::string txt ); VError &app( const int i ); // Extract string virtual const char *what() const throw() { return _what.c_str(); } void ostream_print( std::ostream & ) const; }; inline std::ostream &operator<<( std::ostream &file, const VError &err ) { err.ostream_print( file ); return( file ); } void verror( std::string str = "" ) throw( VError ); VIPS_NAMESPACE_END #endif /*IM_VERROR_H*/ vips-8.2.2/libvipsCC/include/vips/vipscpp.h0000664000175000017500000000213212530402247015543 00000000000000// Include file to get all VIPS C++ bindings /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ /* This header is just for compatibility with the pre-namespace C++ bindings. */ #ifndef IM_VIPSCPP_H #define IM_VIPSCPP_H #include using namespace vips; #endif /*IM_VIPSCPP_H*/ vips-8.2.2/libvipsCC/include/vips/vipsc++.h0000664000175000017500000007157512530402247015352 00000000000000 // headers for package arithmetic // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 VImage abs() throw( VError ); VImage acos() throw( VError ); VImage add( VImage add_in2 ) throw( VError ); VImage asin() throw( VError ); VImage atan() throw( VError ); double avg() throw( VError ); double point( char* point_interpolate, double point_x, double point_y, int point_band ) throw( VError ); double point_bilinear( double point_bilinear_x, double point_bilinear_y, int point_bilinear_band ) throw( VError ); VImage bandmean() throw( VError ); VImage ceil() throw( VError ); VImage cos() throw( VError ); VImage cross_phase( VImage cross_phase_in2 ) throw( VError ); double deviate() throw( VError ); VImage divide( VImage divide_in2 ) throw( VError ); VImage exp10() throw( VError ); VImage expn( double expn_x ) throw( VError ); VImage expn( std::vector expn_v ) throw( VError ); VImage exp() throw( VError ); VImage floor() throw( VError ); VImage invert() throw( VError ); VImage lin( double lin_a, double lin_b ) throw( VError ); static VImage linreg( std::vector linreg_ins, std::vector linreg_xs ) throw( VError ); VImage lin( std::vector lin_a, std::vector lin_b ) throw( VError ); VImage log10() throw( VError ); VImage log() throw( VError ); double max() throw( VError ); std::complex maxpos() throw( VError ); double maxpos_avg( double& maxpos_avg_y, double& maxpos_avg_out ) throw( VError ); VDMask measure( int measure_x, int measure_y, int measure_w, int measure_h, int measure_h_patches, int measure_v_patches ) throw( VError ); double min() throw( VError ); std::complex minpos() throw( VError ); VImage multiply( VImage multiply_in2 ) throw( VError ); VImage pow( double pow_x ) throw( VError ); VImage pow( std::vector pow_v ) throw( VError ); VImage recomb( VDMask recomb_matrix ) throw( VError ); VImage remainder( VImage remainder_in2 ) throw( VError ); VImage remainder( double remainder_x ) throw( VError ); VImage remainder( std::vector remainder_x ) throw( VError ); VImage rint() throw( VError ); VImage sign() throw( VError ); VImage sin() throw( VError ); VDMask stats() throw( VError ); VImage subtract( VImage subtract_in2 ) throw( VError ); VImage tan() throw( VError ); // headers for package cimg // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 VImage greyc( int greyc_iterations, double greyc_amplitude, double greyc_sharpness, double greyc_anisotropy, double greyc_alpha, double greyc_sigma, double greyc_dl, double greyc_da, double greyc_gauss_prec, int greyc_interpolation, int greyc_fast_approx ) throw( VError ); VImage greyc_mask( VImage greyc_mask_mask, int greyc_mask_iterations, double greyc_mask_amplitude, double greyc_mask_sharpness, double greyc_mask_anisotropy, double greyc_mask_alpha, double greyc_mask_sigma, double greyc_mask_dl, double greyc_mask_da, double greyc_mask_gauss_prec, int greyc_mask_interpolation, int greyc_mask_fast_approx ) throw( VError ); // headers for package colour // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 VImage LCh2Lab() throw( VError ); VImage LCh2UCS() throw( VError ); VImage Lab2LCh() throw( VError ); VImage Lab2LabQ() throw( VError ); VImage Lab2LabS() throw( VError ); VImage Lab2UCS() throw( VError ); VImage Lab2XYZ() throw( VError ); VImage Lab2XYZ_temp( double Lab2XYZ_temp_X0, double Lab2XYZ_temp_Y0, double Lab2XYZ_temp_Z0 ) throw( VError ); VImage Lab2disp( VDisplay Lab2disp_disp ) throw( VError ); VImage LabQ2LabS() throw( VError ); VImage LabQ2Lab() throw( VError ); VImage LabQ2XYZ() throw( VError ); VImage LabQ2disp( VDisplay LabQ2disp_disp ) throw( VError ); VImage LabS2LabQ() throw( VError ); VImage LabS2Lab() throw( VError ); VImage UCS2LCh() throw( VError ); VImage UCS2Lab() throw( VError ); VImage UCS2XYZ() throw( VError ); VImage XYZ2Lab() throw( VError ); VImage XYZ2Lab_temp( double XYZ2Lab_temp_X0, double XYZ2Lab_temp_Y0, double XYZ2Lab_temp_Z0 ) throw( VError ); VImage XYZ2UCS() throw( VError ); VImage XYZ2Yxy() throw( VError ); VImage XYZ2disp( VDisplay XYZ2disp_disp ) throw( VError ); VImage XYZ2sRGB() throw( VError ); VImage Yxy2XYZ() throw( VError ); VImage dE00_fromLab( VImage dE00_fromLab_in2 ) throw( VError ); VImage dECMC_fromLab( VImage dECMC_fromLab_in2 ) throw( VError ); VImage dECMC_fromdisp( VImage dECMC_fromdisp_in2, VDisplay dECMC_fromdisp_disp ) throw( VError ); VImage dE_fromLab( VImage dE_fromLab_in2 ) throw( VError ); VImage dE_fromXYZ( VImage dE_fromXYZ_in2 ) throw( VError ); VImage dE_fromdisp( VImage dE_fromdisp_in2, VDisplay dE_fromdisp_disp ) throw( VError ); VImage disp2Lab( VDisplay disp2Lab_disp ) throw( VError ); VImage disp2XYZ( VDisplay disp2XYZ_disp ) throw( VError ); VImage float2rad() throw( VError ); VImage icc_ac2rc( char* icc_ac2rc_profile ) throw( VError ); VImage icc_export_depth( int icc_export_depth_depth, char* icc_export_depth_output_profile, int icc_export_depth_intent ) throw( VError ); VImage icc_import( char* icc_import_input_profile, int icc_import_intent ) throw( VError ); VImage icc_import_embedded( int icc_import_embedded_intent ) throw( VError ); VImage icc_transform( char* icc_transform_input_profile, char* icc_transform_output_profile, int icc_transform_intent ) throw( VError ); VImage lab_morph( VDMask lab_morph_greyscale, double lab_morph_L_offset, double lab_morph_L_scale, double lab_morph_a_scale, double lab_morph_b_scale ) throw( VError ); VImage rad2float() throw( VError ); VImage sRGB2XYZ() throw( VError ); // headers for package conversion // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 static VImage gaussnoise( int gaussnoise_xsize, int gaussnoise_ysize, double gaussnoise_mean, double gaussnoise_sigma ) throw( VError ); VImage bandjoin( VImage bandjoin_in2 ) throw( VError ); static VImage black( int black_x_size, int black_y_size, int black_bands ) throw( VError ); VImage c2amph() throw( VError ); VImage c2imag() throw( VError ); VImage c2real() throw( VError ); VImage c2rect() throw( VError ); VImage clip2fmt( int clip2fmt_ofmt ) throw( VError ); VImage copy() throw( VError ); VImage copy_file() throw( VError ); VImage copy_morph( int copy_morph_Bands, int copy_morph_BandFmt, int copy_morph_Coding ) throw( VError ); VImage copy_swap() throw( VError ); VImage copy_set( int copy_set_Type, double copy_set_Xres, double copy_set_Yres, int copy_set_Xoffset, int copy_set_Yoffset ) throw( VError ); VImage extract_area( int extract_area_left, int extract_area_top, int extract_area_width, int extract_area_height ) throw( VError ); VImage extract_areabands( int extract_areabands_left, int extract_areabands_top, int extract_areabands_width, int extract_areabands_height, int extract_areabands_band, int extract_areabands_nbands ) throw( VError ); VImage extract_band( int extract_band_band ) throw( VError ); VImage extract_bands( int extract_bands_band, int extract_bands_nbands ) throw( VError ); VImage extract( int extract_left, int extract_top, int extract_width, int extract_height, int extract_band ) throw( VError ); VImage falsecolour() throw( VError ); VImage fliphor() throw( VError ); VImage flipver() throw( VError ); static VImage gbandjoin( std::vector gbandjoin_in ) throw( VError ); VImage grid( int grid_tile_height, int grid_across, int grid_down ) throw( VError ); VImage insert( VImage insert_sub, int insert_x, int insert_y ) throw( VError ); VImage insert( VImage insert_sub, std::vector insert_x, std::vector insert_y ) throw( VError ); VImage insert_noexpand( VImage insert_noexpand_sub, int insert_noexpand_x, int insert_noexpand_y ) throw( VError ); VImage embed( int embed_type, int embed_x, int embed_y, int embed_width, int embed_height ) throw( VError ); VImage lrjoin( VImage lrjoin_in2 ) throw( VError ); VImage msb() throw( VError ); VImage msb_band( int msb_band_band ) throw( VError ); VImage replicate( int replicate_across, int replicate_down ) throw( VError ); VImage ri2c( VImage ri2c_in2 ) throw( VError ); VImage rot180() throw( VError ); VImage rot270() throw( VError ); VImage rot90() throw( VError ); VImage scale() throw( VError ); VImage scaleps() throw( VError ); VImage subsample( int subsample_xshrink, int subsample_yshrink ) throw( VError ); char* system( char* system_command ) throw( VError ); VImage system_image( char* system_image_in_format, char* system_image_out_format, char* system_image_command, char*& system_image_log ) throw( VError ); VImage tbjoin( VImage tbjoin_in2 ) throw( VError ); static VImage text( char* text_text, char* text_font, int text_width, int text_alignment, int text_dpi ) throw( VError ); VImage wrap( int wrap_x, int wrap_y ) throw( VError ); VImage zoom( int zoom_xfac, int zoom_yfac ) throw( VError ); // headers for package convolution // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 VImage aconvsep( VDMask aconvsep_matrix, int aconvsep_n_layers ) throw( VError ); VImage aconv( VDMask aconv_matrix, int aconv_n_layers, int aconv_cluster ) throw( VError ); VImage addgnoise( double addgnoise_sigma ) throw( VError ); VImage compass( VIMask compass_matrix ) throw( VError ); VImage contrast_surface( int contrast_surface_half_win_size, int contrast_surface_spacing ) throw( VError ); VImage conv( VIMask conv_matrix ) throw( VError ); VImage conv( VDMask conv_matrix ) throw( VError ); VImage convsep( VIMask convsep_matrix ) throw( VError ); VImage convsep( VDMask convsep_matrix ) throw( VError ); VImage fastcor( VImage fastcor_in2 ) throw( VError ); VImage gradcor( VImage gradcor_in2 ) throw( VError ); VImage gradient( VIMask gradient_matrix ) throw( VError ); VImage grad_x() throw( VError ); VImage grad_y() throw( VError ); VImage lindetect( VIMask lindetect_matrix ) throw( VError ); VImage sharpen( int sharpen_mask_size, double sharpen_x1, double sharpen_y2, double sharpen_y3, double sharpen_m1, double sharpen_m2 ) throw( VError ); VImage spcor( VImage spcor_in2 ) throw( VError ); // headers for package deprecated // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 VImage argb2rgba() throw( VError ); VImage flood_copy( int flood_copy_start_x, int flood_copy_start_y, std::vector flood_copy_ink ) throw( VError ); VImage flood_blob_copy( int flood_blob_copy_start_x, int flood_blob_copy_start_y, std::vector flood_blob_copy_ink ) throw( VError ); VImage flood_other_copy( VImage flood_other_copy_mark, int flood_other_copy_start_x, int flood_other_copy_start_y, int flood_other_copy_serial ) throw( VError ); VImage clip() throw( VError ); VImage c2ps() throw( VError ); VImage resize_linear( int resize_linear_X, int resize_linear_Y ) throw( VError ); VImage cmulnorm( VImage cmulnorm_in2 ) throw( VError ); VImage fav4( VImage fav4_in2, VImage fav4_in3, VImage fav4_in4 ) throw( VError ); VImage gadd( double gadd_a, double gadd_b, VImage gadd_in2, double gadd_c ) throw( VError ); VImage icc_export( char* icc_export_output_profile, int icc_export_intent ) throw( VError ); VImage litecor( VImage litecor_white, int litecor_clip, double litecor_factor ) throw( VError ); VImage affine( double affine_a, double affine_b, double affine_c, double affine_d, double affine_dx, double affine_dy, int affine_x, int affine_y, int affine_w, int affine_h ) throw( VError ); VImage clip2c() throw( VError ); VImage clip2cm() throw( VError ); VImage clip2d() throw( VError ); VImage clip2dcm() throw( VError ); VImage clip2f() throw( VError ); VImage clip2i() throw( VError ); VImage convsub( VIMask convsub_matrix, int convsub_xskip, int convsub_yskip ) throw( VError ); VImage convf( VDMask convf_matrix ) throw( VError ); VImage convsepf( VDMask convsepf_matrix ) throw( VError ); VImage clip2s() throw( VError ); VImage clip2ui() throw( VError ); VImage insertplace( VImage insertplace_sub, std::vector insertplace_x, std::vector insertplace_y ) throw( VError ); VImage clip2us() throw( VError ); VImage slice( double slice_thresh1, double slice_thresh2 ) throw( VError ); VImage segment( int& segment_segments ) throw( VError ); void line( int line_x1, int line_y1, int line_x2, int line_y2, int line_pelval ) throw( VError ); VImage thresh( double thresh_threshold ) throw( VError ); VImage convf_raw( VDMask convf_raw_matrix ) throw( VError ); VImage conv_raw( VIMask conv_raw_matrix ) throw( VError ); VImage contrast_surface_raw( int contrast_surface_raw_half_win_size, int contrast_surface_raw_spacing ) throw( VError ); VImage convsepf_raw( VDMask convsepf_raw_matrix ) throw( VError ); VImage convsep_raw( VIMask convsep_raw_matrix ) throw( VError ); VImage fastcor_raw( VImage fastcor_raw_in2 ) throw( VError ); VImage gradcor_raw( VImage gradcor_raw_in2 ) throw( VError ); VImage spcor_raw( VImage spcor_raw_in2 ) throw( VError ); VImage lhisteq_raw( int lhisteq_raw_width, int lhisteq_raw_height ) throw( VError ); VImage stdif_raw( double stdif_raw_a, double stdif_raw_m0, double stdif_raw_b, double stdif_raw_s0, int stdif_raw_xw, int stdif_raw_yw ) throw( VError ); VImage rank_raw( int rank_raw_xsize, int rank_raw_ysize, int rank_raw_n ) throw( VError ); VImage dilate_raw( VIMask dilate_raw_mask ) throw( VError ); VImage erode_raw( VIMask erode_raw_mask ) throw( VError ); VImage similarity_area( double similarity_area_a, double similarity_area_b, double similarity_area_dx, double similarity_area_dy, int similarity_area_x, int similarity_area_y, int similarity_area_w, int similarity_area_h ) throw( VError ); VImage similarity( double similarity_a, double similarity_b, double similarity_dx, double similarity_dy ) throw( VError ); static VImage mask2vips( VDMask mask2vips_input ) throw( VError ); VDMask vips2mask() throw( VError ); void insertplace( VImage insertplace_sub, int insertplace_x, int insertplace_y ) throw( VError ); void circle( int circle_cx, int circle_cy, int circle_radius, int circle_intensity ) throw( VError ); VImage andimage( VImage andimage_in2 ) throw( VError ); VImage andimage( int andimage_c ) throw( VError ); VImage andimage( std::vector andimage_vec ) throw( VError ); VImage orimage( VImage orimage_in2 ) throw( VError ); VImage orimage( int orimage_c ) throw( VError ); VImage orimage( std::vector orimage_vec ) throw( VError ); VImage eorimage( VImage eorimage_in2 ) throw( VError ); VImage eorimage( int eorimage_c ) throw( VError ); VImage eorimage( std::vector eorimage_vec ) throw( VError ); VImage shiftleft( std::vector shiftleft_vec ) throw( VError ); VImage shiftleft( int shiftleft_c ) throw( VError ); VImage shiftright( std::vector shiftright_vec ) throw( VError ); VImage shiftright( int shiftright_c ) throw( VError ); VImage blend( VImage blend_in1, VImage blend_in2 ) throw( VError ); VImage equal( VImage equal_in2 ) throw( VError ); VImage equal( std::vector equal_vec ) throw( VError ); VImage equal( double equal_c ) throw( VError ); VImage ifthenelse( VImage ifthenelse_in1, VImage ifthenelse_in2 ) throw( VError ); VImage less( VImage less_in2 ) throw( VError ); VImage less( std::vector less_vec ) throw( VError ); VImage less( double less_c ) throw( VError ); VImage lesseq( VImage lesseq_in2 ) throw( VError ); VImage lesseq( std::vector lesseq_vec ) throw( VError ); VImage lesseq( double lesseq_c ) throw( VError ); VImage more( VImage more_in2 ) throw( VError ); VImage more( std::vector more_vec ) throw( VError ); VImage more( double more_c ) throw( VError ); VImage moreeq( VImage moreeq_in2 ) throw( VError ); VImage moreeq( std::vector moreeq_vec ) throw( VError ); VImage moreeq( double moreeq_c ) throw( VError ); VImage notequal( VImage notequal_in2 ) throw( VError ); VImage notequal( std::vector notequal_vec ) throw( VError ); VImage notequal( double notequal_c ) throw( VError ); VImage quadratic( VImage quadratic_coeff ) throw( VError ); // headers for package format // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 static VImage csv2vips( char* csv2vips_filename ) throw( VError ); static VImage fits2vips( char* fits2vips_in ) throw( VError ); static VImage jpeg2vips( char* jpeg2vips_in ) throw( VError ); static VImage magick2vips( char* magick2vips_in ) throw( VError ); static VImage png2vips( char* png2vips_in ) throw( VError ); static VImage exr2vips( char* exr2vips_in ) throw( VError ); static VImage ppm2vips( char* ppm2vips_filename ) throw( VError ); static VImage analyze2vips( char* analyze2vips_filename ) throw( VError ); static VImage tiff2vips( char* tiff2vips_in ) throw( VError ); void vips2csv( char* vips2csv_filename ) throw( VError ); void vips2dz( char* vips2dz_out ) throw( VError ); void vips2jpeg( char* vips2jpeg_out ) throw( VError ); void vips2mimejpeg( int vips2mimejpeg_qfac ) throw( VError ); void vips2png( char* vips2png_out ) throw( VError ); void vips2ppm( char* vips2ppm_filename ) throw( VError ); void vips2tiff( char* vips2tiff_out ) throw( VError ); // headers for package freq_filt // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 static VImage create_fmask( int create_fmask_width, int create_fmask_height, int create_fmask_type, double create_fmask_p1, double create_fmask_p2, double create_fmask_p3, double create_fmask_p4, double create_fmask_p5 ) throw( VError ); VImage disp_ps() throw( VError ); VImage flt_image_freq( int flt_image_freq_type, double flt_image_freq_p1, double flt_image_freq_p2, double flt_image_freq_p3, double flt_image_freq_p4, double flt_image_freq_p5 ) throw( VError ); static VImage fractsurf( int fractsurf_size, double fractsurf_dimension ) throw( VError ); VImage freqflt( VImage freqflt_mask ) throw( VError ); VImage fwfft() throw( VError ); VImage rotquad() throw( VError ); VImage invfft() throw( VError ); VImage phasecor_fft( VImage phasecor_fft_in2 ) throw( VError ); VImage invfftr() throw( VError ); // headers for package histograms_lut // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 VImage gammacorrect( double gammacorrect_exponent ) throw( VError ); VImage heq( int heq_band_number ) throw( VError ); VImage hist( int hist_band_number ) throw( VError ); VImage histcum() throw( VError ); VImage histeq() throw( VError ); VImage hist_indexed( VImage hist_indexed_value ) throw( VError ); VImage histgr( int histgr_band_number ) throw( VError ); VImage histnD( int histnD_bins ) throw( VError ); VImage histnorm() throw( VError ); VImage histplot() throw( VError ); VImage histspec( VImage histspec_ref ) throw( VError ); VImage hsp( VImage hsp_ref ) throw( VError ); static VImage identity( int identity_nbands ) throw( VError ); static VImage identity_ushort( int identity_ushort_nbands, int identity_ushort_size ) throw( VError ); int ismonotonic() throw( VError ); VImage lhisteq( int lhisteq_width, int lhisteq_height ) throw( VError ); int mpercent( double mpercent_percent ) throw( VError ); static VImage invertlut( VDMask invertlut_measures, int invertlut_lut_size ) throw( VError ); static VImage buildlut( VDMask buildlut_xyes ) throw( VError ); VImage maplut( VImage maplut_lut ) throw( VError ); VImage project( VImage& project_vout ) throw( VError ); VImage stdif( double stdif_a, double stdif_m0, double stdif_b, double stdif_s0, int stdif_xw, int stdif_yw ) throw( VError ); VImage tone_analyse( double tone_analyse_Ps, double tone_analyse_Pm, double tone_analyse_Ph, double tone_analyse_S, double tone_analyse_M, double tone_analyse_H ) throw( VError ); static VImage tone_build( double tone_build_Lb, double tone_build_Lw, double tone_build_Ps, double tone_build_Pm, double tone_build_Ph, double tone_build_S, double tone_build_M, double tone_build_H ) throw( VError ); static VImage tone_build_range( int tone_build_range_in_max, int tone_build_range_out_max, double tone_build_range_Lb, double tone_build_range_Lw, double tone_build_range_Ps, double tone_build_range_Pm, double tone_build_range_Ph, double tone_build_range_S, double tone_build_range_M, double tone_build_range_H ) throw( VError ); VImage tone_map( VImage tone_map_lut ) throw( VError ); // headers for package inplace // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 void draw_circle( int draw_circle_cx, int draw_circle_cy, int draw_circle_radius, int draw_circle_fill, std::vector draw_circle_ink ) throw( VError ); void draw_rect( int draw_rect_left, int draw_rect_top, int draw_rect_width, int draw_rect_height, int draw_rect_fill, std::vector draw_rect_ink ) throw( VError ); void draw_line( int draw_line_x1, int draw_line_y1, int draw_line_x2, int draw_line_y2, std::vector draw_line_ink ) throw( VError ); void draw_point( int draw_point_x, int draw_point_y, std::vector draw_point_ink ) throw( VError ); void draw_smudge( int draw_smudge_left, int draw_smudge_top, int draw_smudge_width, int draw_smudge_height ) throw( VError ); void draw_flood( int draw_flood_x, int draw_flood_y, std::vector draw_flood_ink ) throw( VError ); void draw_flood_blob( int draw_flood_blob_x, int draw_flood_blob_y, std::vector draw_flood_blob_ink ) throw( VError ); void draw_flood_other( VImage draw_flood_other_test, int draw_flood_other_x, int draw_flood_other_y, int draw_flood_other_serial ) throw( VError ); void draw_image( VImage draw_image_sub, int draw_image_x, int draw_image_y ) throw( VError ); void draw_mask( VImage draw_mask_mask, int draw_mask_x, int draw_mask_y, std::vector draw_mask_ink ) throw( VError ); VImage line( VImage line_mask, VImage line_ink, std::vector line_x1, std::vector line_y1, std::vector line_x2, std::vector line_y2 ) throw( VError ); // headers for package iofuncs // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 static VImage binfile( char* binfile_filename, int binfile_width, int binfile_height, int binfile_bands, int binfile_offset ) throw( VError ); VImage cache( int cache_tile_width, int cache_tile_height, int cache_max_tiles ) throw( VError ); char* getext() throw( VError ); int header_get_typeof( char* header_get_typeof_field ) throw( VError ); int header_int( char* header_int_field ) throw( VError ); double header_double( char* header_double_field ) throw( VError ); char* header_string( char* header_string_field ) throw( VError ); char* history_get() throw( VError ); void printdesc() throw( VError ); // headers for package mask // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 // headers for package morphology // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 double cntlines( int cntlines_direction ) throw( VError ); VImage dilate( VIMask dilate_mask ) throw( VError ); VImage rank( int rank_xsize, int rank_ysize, int rank_n ) throw( VError ); static VImage rank_image( std::vector rank_image_in, int rank_image_index ) throw( VError ); static VImage maxvalue( std::vector maxvalue_in ) throw( VError ); VImage label_regions( int& label_regions_segments ) throw( VError ); VImage zerox( int zerox_flag ) throw( VError ); VImage erode( VIMask erode_mask ) throw( VError ); VImage profile( int profile_direction ) throw( VError ); // headers for package mosaicing // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 VImage align_bands() throw( VError ); double correl( VImage correl_sec, int correl_xref, int correl_yref, int correl_xsec, int correl_ysec, int correl_hwindowsize, int correl_hsearchsize, int& correl_x, int& correl_y ) throw( VError ); int _find_lroverlap( VImage _find_lroverlap_sec, int _find_lroverlap_bandno, int _find_lroverlap_xr, int _find_lroverlap_yr, int _find_lroverlap_xs, int _find_lroverlap_ys, int _find_lroverlap_halfcorrelation, int _find_lroverlap_halfarea, int& _find_lroverlap_dy0, double& _find_lroverlap_scale1, double& _find_lroverlap_angle1, double& _find_lroverlap_dx1, double& _find_lroverlap_dy1 ) throw( VError ); int _find_tboverlap( VImage _find_tboverlap_sec, int _find_tboverlap_bandno, int _find_tboverlap_xr, int _find_tboverlap_yr, int _find_tboverlap_xs, int _find_tboverlap_ys, int _find_tboverlap_halfcorrelation, int _find_tboverlap_halfarea, int& _find_tboverlap_dy0, double& _find_tboverlap_scale1, double& _find_tboverlap_angle1, double& _find_tboverlap_dx1, double& _find_tboverlap_dy1 ) throw( VError ); VImage global_balance( double global_balance_gamma ) throw( VError ); VImage global_balancef( double global_balancef_gamma ) throw( VError ); VImage lrmerge( VImage lrmerge_sec, int lrmerge_dx, int lrmerge_dy, int lrmerge_mwidth ) throw( VError ); VImage lrmerge1( VImage lrmerge1_sec, int lrmerge1_xr1, int lrmerge1_yr1, int lrmerge1_xs1, int lrmerge1_ys1, int lrmerge1_xr2, int lrmerge1_yr2, int lrmerge1_xs2, int lrmerge1_ys2, int lrmerge1_mwidth ) throw( VError ); VImage lrmosaic( VImage lrmosaic_sec, int lrmosaic_bandno, int lrmosaic_xr, int lrmosaic_yr, int lrmosaic_xs, int lrmosaic_ys, int lrmosaic_halfcorrelation, int lrmosaic_halfarea, int lrmosaic_balancetype, int lrmosaic_mwidth ) throw( VError ); VImage lrmosaic1( VImage lrmosaic1_sec, int lrmosaic1_bandno, int lrmosaic1_xr1, int lrmosaic1_yr1, int lrmosaic1_xs1, int lrmosaic1_ys1, int lrmosaic1_xr2, int lrmosaic1_yr2, int lrmosaic1_xs2, int lrmosaic1_ys2, int lrmosaic1_halfcorrelation, int lrmosaic1_halfarea, int lrmosaic1_balancetype, int lrmosaic1_mwidth ) throw( VError ); VImage match_linear( VImage match_linear_sec, int match_linear_xref1, int match_linear_yref1, int match_linear_xsec1, int match_linear_ysec1, int match_linear_xref2, int match_linear_yref2, int match_linear_xsec2, int match_linear_ysec2 ) throw( VError ); VImage match_linear_search( VImage match_linear_search_sec, int match_linear_search_xref1, int match_linear_search_yref1, int match_linear_search_xsec1, int match_linear_search_ysec1, int match_linear_search_xref2, int match_linear_search_yref2, int match_linear_search_xsec2, int match_linear_search_ysec2, int match_linear_search_hwindowsize, int match_linear_search_hsearchsize ) throw( VError ); double maxpos_subpel( double& maxpos_subpel_y ) throw( VError ); VImage remosaic( char* remosaic_old_str, char* remosaic_new_str ) throw( VError ); VImage tbmerge( VImage tbmerge_sec, int tbmerge_dx, int tbmerge_dy, int tbmerge_mwidth ) throw( VError ); VImage tbmerge1( VImage tbmerge1_sec, int tbmerge1_xr1, int tbmerge1_yr1, int tbmerge1_xs1, int tbmerge1_ys1, int tbmerge1_xr2, int tbmerge1_yr2, int tbmerge1_xs2, int tbmerge1_ys2, int tbmerge1_mwidth ) throw( VError ); VImage tbmosaic( VImage tbmosaic_sec, int tbmosaic_bandno, int tbmosaic_xr, int tbmosaic_yr, int tbmosaic_xs, int tbmosaic_ys, int tbmosaic_halfcorrelation, int tbmosaic_halfarea, int tbmosaic_balancetype, int tbmosaic_mwidth ) throw( VError ); VImage tbmosaic1( VImage tbmosaic1_sec, int tbmosaic1_bandno, int tbmosaic1_xr1, int tbmosaic1_yr1, int tbmosaic1_xs1, int tbmosaic1_ys1, int tbmosaic1_xr2, int tbmosaic1_yr2, int tbmosaic1_xs2, int tbmosaic1_ys2, int tbmosaic1_halfcorrelation, int tbmosaic1_halfarea, int tbmosaic1_balancetype, int tbmosaic1_mwidth ) throw( VError ); // headers for package other // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 VImage benchmark() throw( VError ); double benchmark2() throw( VError ); VImage benchmarkn( int benchmarkn_n ) throw( VError ); static VImage eye( int eye_xsize, int eye_ysize, double eye_factor ) throw( VError ); static VImage grey( int grey_xsize, int grey_ysize ) throw( VError ); static VImage feye( int feye_xsize, int feye_ysize, double feye_factor ) throw( VError ); static VImage fgrey( int fgrey_xsize, int fgrey_ysize ) throw( VError ); static VImage fzone( int fzone_size ) throw( VError ); static VImage make_xy( int make_xy_xsize, int make_xy_ysize ) throw( VError ); static VImage sines( int sines_xsize, int sines_ysize, double sines_horfreq, double sines_verfreq ) throw( VError ); static VImage zone( int zone_size ) throw( VError ); // headers for package resample // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 VImage rightshift_size( int rightshift_size_xshift, int rightshift_size_yshift, int rightshift_size_band_fmt ) throw( VError ); VImage shrink( double shrink_xfac, double shrink_yfac ) throw( VError ); VImage stretch3( double stretch3_xdisp, double stretch3_ydisp ) throw( VError ); VImage affinei( char* affinei_interpolate, double affinei_a, double affinei_b, double affinei_c, double affinei_d, double affinei_dx, double affinei_dy, int affinei_x, int affinei_y, int affinei_w, int affinei_h ) throw( VError ); VImage affinei_all( char* affinei_all_interpolate, double affinei_all_a, double affinei_all_b, double affinei_all_c, double affinei_all_d, double affinei_all_dx, double affinei_all_dy ) throw( VError ); // headers for package video // this file automatically generated from // VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 static VImage video_test( int video_test_brightness, int video_test_error ) throw( VError ); static VImage video_v4l1( char* video_v4l1_device, int video_v4l1_channel, int video_v4l1_brightness, int video_v4l1_colour, int video_v4l1_contrast, int video_v4l1_hue, int video_v4l1_ngrabs ) throw( VError ); vips-8.2.2/libvipsCC/include/vips/VDisplay.h0000664000175000017500000000523412530402247015620 00000000000000/* VIPS display class. * * Hide details of im_col_display API. */ /* This file is part of VIPS. VIPS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk */ #ifndef IM_VDISPLAY_H #define IM_VDISPLAY_H /* SWIG includes this file directly rather than going through vipscpp.h ... so * we have to define these macros here as well. */ #ifdef SWIG #define VIPS_NAMESPACE_START namespace vips { #define VIPS_NAMESPACE_END } #endif /*SWIG*/ /* Wrap pointers to these, but we don't want to import all the old C API. Just * declare them. */ extern "C" { struct im_col_display; struct im_col_tab_disp; } VIPS_NAMESPACE_START // Wrapper over im_col_display with ref counting class VDisplay { struct refblock { im_col_display *disp; // im_col_display struct im_col_tab_disp *luts; // luts built from this display int priv; // disp is ours, or system int nrefs; // Refs to us // Invalidate lut void cleanlut(); // Break attached stuff void cleanref(); // Get ready to write void wready() throw( VError ); // Check that luts are up-to-date void cluts() throw( VError ); refblock() : disp(0), luts(0), priv(0), nrefs(1) {} ~refblock() { cleanref(); } }; refblock *ref; public: enum VDisplayType { BARCO, // Does many corrections for us DUMB // Needs many corrections }; // Get named display VDisplay( const char *name ) throw( VError ); // Get default display VDisplay(); // Copy constructor VDisplay( const VDisplay &a ) { ref = a.ref; ref->nrefs++; } // Assignment VDisplay &operator=( const VDisplay &a ); // Destructor virtual ~VDisplay(); // The matrix type we use typedef float matrix[3][3]; // Extract display pointer void *disp() const { return( ref->disp ); } // Extract luts pointer, rebuilding luts if necessary im_col_tab_disp *luts() const throw( VError ) { ref->cluts(); return( ref->luts ); } }; VIPS_NAMESPACE_END #endif /*IM_VDISPLAY_H*/ vips-8.2.2/libvipsCC/include/vips/Makefile.am0000664000175000017500000000076612530402247015755 00000000000000pkginclude_HEADERS = \ VDisplay.h \ VError.h \ VImage.h \ VMask.h \ vipscpp.h \ vips \ vipsc++.h # swap the 'awk' line for this: # awk '{if($$1!="deprecated") print $$1}'` ; \ # to not generate the wrappers for deprecated functions vipsc++.h: packages=`vips list packages | \ awk '{print $$1}'` ; \ echo > vipsc++.h ; \ for name in $$packages; do \ echo "// headers for package $$name" >> vipsc++.h ; \ vips cpph $$name >> vipsc++.h ; \ echo >> vipsc++.h ; \ done vips-8.2.2/libvipsCC/include/vips/Makefile.in0000664000175000017500000005032312651721157015770 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvipsCC/include/vips ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(pkginclude_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgincludedir)" HEADERS = $(pkginclude_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ pkginclude_HEADERS = \ VDisplay.h \ VError.h \ VImage.h \ VMask.h \ vipscpp.h \ vips \ vipsc++.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvipsCC/include/vips/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvipsCC/include/vips/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(pkgincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgincludeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgincludeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgincludeHEADERS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-pkgincludeHEADERS .PRECIOUS: Makefile # swap the 'awk' line for this: # awk '{if($$1!="deprecated") print $$1}'` ; \ # to not generate the wrappers for deprecated functions vipsc++.h: packages=`vips list packages | \ awk '{print $$1}'` ; \ echo > vipsc++.h ; \ for name in $$packages; do \ echo "// headers for package $$name" >> vipsc++.h ; \ vips cpph $$name >> vipsc++.h ; \ echo >> vipsc++.h ; \ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvipsCC/include/Makefile.am0000664000175000017500000000002012530402247014753 00000000000000 SUBDIRS = vips vips-8.2.2/libvipsCC/include/Makefile.in0000664000175000017500000005321012651721157015005 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvipsCC/include ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ SUBDIRS = vips all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvipsCC/include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvipsCC/include/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvipsCC/Makefile.in0000664000175000017500000007155412651721157013375 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libvipsCC ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libvipsCC_la_DEPENDENCIES = $(top_builddir)/libvips/libvips.la am_libvipsCC_la_OBJECTS = VImage.lo VError.lo VDisplay.lo VMask.lo libvipsCC_la_OBJECTS = $(am_libvipsCC_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libvipsCC_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libvipsCC_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(libvipsCC_la_SOURCES) DIST_SOURCES = $(libvipsCC_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ SUBDIRS = \ include AM_CPPFLAGS = \ -I$(top_srcdir)/libvips/include \ -I$(top_srcdir)/libvipsCC/include \ @VIPS_CFLAGS@ lib_LTLIBRARIES = libvipsCC.la libvipsCC_la_SOURCES = \ VImage.cc \ VError.cc \ VDisplay.cc \ VMask.cc libvipsCC_la_LDFLAGS = \ -no-undefined \ -version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@ libvipsCC_la_LIBADD = \ $(top_builddir)/libvips/libvips.la @VIPS_LIBS@ EXTRA_DIST = \ README.txt \ vipsc++.cc all: all-recursive .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libvipsCC/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libvipsCC/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libvipsCC.la: $(libvipsCC_la_OBJECTS) $(libvipsCC_la_DEPENDENCIES) $(EXTRA_libvipsCC_la_DEPENDENCIES) $(AM_V_CXXLD)$(libvipsCC_la_LINK) -rpath $(libdir) $(libvipsCC_la_OBJECTS) $(libvipsCC_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VDisplay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VError.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VImage.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VMask.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libLTLIBRARIES \ clean-libtool cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile # swap the 'awk' line for this: # awk '{if($$1!="deprecated") print $$1}'` ; \ # to not generate the wrappers for deprecated functions vipsc++.cc: packages=`vips list packages | \ awk '{print $$1}'` ; \ echo > vipsc++.cc ; \ for name in $$packages; do \ echo "// bodies for package $$name" >> vipsc++.cc ; \ vips cppc $$name >> vipsc++.cc ; \ echo >> vipsc++.cc ; \ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/libvipsCC/README.txt0000664000175000017500000000012212530402247012775 00000000000000This is the old vips7 C++ API. Use the vips8 one in preference for new projects. vips-8.2.2/doc/0000775000175000017500000000000012651721507010262 500000000000000vips-8.2.2/doc/function-list.xml0000664000175000017500000006720712632771264013542 00000000000000 VIPS function list 3 VIPS Library Using VIPS List of VIPS functions and operators Function list VIPS has a set of operators each of which computes some useful image processing operation. Each operator is implemented as a %GObject class, for example VipsGamma. Classes are identified by their unique nickname, in this case gamma. From the command-line, C++ and most language bindings, you use the nickname to call the operator. For example in C++: vips::VImage fred = ...; vips::VImage jim = fred.gamma(); or Python: fred = jim.gamma() VIPS has a set of C wrapper functions for calling operators, in this case vips_gamma(): VipsImage *fred = ...; VipsImage *jim; if (vips_gamma(fred, &jim, NULL)) ...error; Some operators have many C convenience functions. This table lists all the VIPS operators with their C convenience functions and a short description. It's supposed to be useful for searching. See the API docs each function links to for more details. VIPS functions and operators Operator Description C functions system run an external command vips_system() add add two images vips_add() subtract subtract two images vips_subtract() multiply multiply two images vips_multiply() divide divide two images vips_divide() relational relational operation on two images vips_relational(), vips_equal(), vips_notequal(), vips_less(), vips_lesseq(), vips_more(), vips_moreeq() remainder remainder after integer division of two images vips_remainder() boolean boolean operation on two images vips_boolean(), vips_andimage(), vips_orimage(), vips_eorimage(), vips_lshift(), vips_rshift() math2 binary math operations vips_math2(), vips_pow(), vips_wop() complex2 complex binary operations on two images vips_complex2(), vips_cross_phase() complexform form a complex image from two real images vips_complexform() sum sum an array of images vips_sum() invert invert an image vips_invert() linear calculate (a * in + b) vips_linear(), vips_linear1() math apply a math operation to an image vips_math(), vips_sin(), vips_cos(), vips_tan(), vips_asin(), vips_acos(), vips_atan(), vips_exp(), vips_exp10(), vips_log(), vips_log10() abs absolute value of an image vips_abs() sign unit vector of pixel vips_sign() round perform a round function on an image vips_round(), vips_floor(), vips_ceil(), vips_rint() relational_const relational operations against a constant vips_relational_const(), vips_equal_const(), vips_notequal_const(), vips_less_const(), vips_lesseq_const(), vips_more_const(), vips_moreeq_const(), vips_relational_const1(), vips_equal_const1(), vips_notequal_const1(), vips_less_const1(), vips_lesseq_const1(), vips_more_const1(), vips_moreeq_const1() remainder_const remainder after integer division of an image and a constant vips_remainder_const(), vips_remainder_const1() boolean_const boolean operations against a constant vips_boolean_const(), vips_andimage_const(), vips_orimage_const(), vips_eorimage_const(), vips_lshift_const(), vips_rshift_const(), vips_boolean_const1(), vips_andimage_const1(), vips_orimage_const1(), vips_eorimage_const1(), vips_lshift_const1(), vips_rshift_const1() math2_const pow( @in, @c ) vips_math2_const(), vips_pow_const(), vips_wop_const(), vips_math2_const1(), vips_pow_const1(), vips_wop_const1() complex perform a complex operation on an image vips_complex(), vips_polar(), vips_rect(), vips_conj() complexget get a component from a complex image vips_complexget(), vips_real(), vips_imag() avg find image average vips_avg() min find image minimum vips_min() max find image maximum vips_max() deviate find image standard deviation vips_deviate() stats find image average vips_stats() hist_find find image histogram vips_hist_find() hist_find_ndim find n-dimensional image histogram vips_hist_find_ndim() hist_find_indexed find indexed image histogram vips_hist_find_indexed() hough_line find hough line transform vips_hough_line() hough_circle find hough circle transform vips_hough_circle() project find image projections vips_project() profile find image profiles vips_profile() measure measure a set of patches on a color chart vips_measure() getpoint read a point from an image vips_getpoint() copy copy an image vips_copy() tilecache cache an image as a set of tiles vips_tilecache() linecache cache an image as a set of lines vips_linecache() sequential check sequential access vips_sequential() cache cache an image vips_cache() embed embed an image in a larger image vips_embed() flip flip an image vips_flip() insert insert image @sub into @main at @x, @y vips_insert() join join a pair of images vips_join() arrayjoin join an array of images vips_arrayjoin() extract_area extract an area from an image vips_extract_area(), vips_crop() extract_band extract band from an image vips_extract_band() bandjoin bandwise join a set of images vips_bandjoin(), vips_bandjoin2() bandjoin_const append a constant band to an image vips_bandjoin_const(), vips_bandjoin_const1() bandrank band-wise rank of a set of images vips_bandrank() bandmean band-wise average vips_bandmean() bandbool boolean operation across image bands vips_bandbool(), vips_bandand(), vips_bandor(), vips_bandeor(), vips_bandmean() replicate replicate an image vips_replicate() cast cast an image vips_cast(), vips_cast_uchar(), vips_cast_char(), vips_cast_ushort(), vips_cast_short(), vips_cast_uint(), vips_cast_int(), vips_cast_float(), vips_cast_double(), vips_cast_complex(), vips_cast_dpcomplex() rot rotate an image vips_rot() rot45 rotate an image vips_rot45() autorot autorotate image by exif tag vips_autorot() ifthenelse ifthenelse an image vips_ifthenelse() recomb linear recombination with matrix vips_recomb() bandfold fold up x axis into bands vips_bandfold() bandunfold unfold image bands into x axis vips_bandunfold() flatten flatten alpha out of an image vips_flatten() premultiply premultiply image alpha vips_premultiply() unpremultiply unpremultiply image alpha vips_unpremultiply() grid grid an image vips_grid() scale scale an image to uchar vips_scale() wrap wrap image origin vips_wrap() zoom zoom an image vips_zoom() subsample subsample an image vips_subsample() msb pick most-significant byte from an image vips_msb() byteswap byteswap an image vips_byteswap() falsecolour false colour an image vips_falsecolour() gamma gamma an image vips_gamma() black make a black image vips_black() gaussnoise make a gaussnoise image vips_gaussnoise() text make a text image vips_text() xyz make an image where pixel values are coordinates vips_xyz() gaussmat make a gaussian image vips_gaussmat() logmat make a laplacian of gaussian image vips_logmat() eye make an image showing the eye's spatial response vips_eye() grey make a grey ramp image vips_grey() zone make a zone plate vips_zone() sines make a 2D sine wave vips_sines() mask_ideal make an ideal filter vips_mask_ideal() mask_ideal_ring make an ideal ring filter vips_mask_ideal_ring() mask_ideal_band make an ideal band filter vips_mask_ideal_band() mask_butterworth make a butterworth filter vips_mask_butterworth() mask_butterworth_ring make a butterworth ring filter vips_mask_butterworth_ring() mask_butterworth_band make a butterworth_band filter vips_mask_butterworth_band() mask_gaussian make a gaussian filter vips_mask_gaussian() mask_gaussian_ring make a gaussian ring filter vips_mask_gaussian_ring() mask_gaussian_band make a gaussian filter vips_mask_gaussian_band() mask_fractal make fractal filter vips_mask_fractal() buildlut build a look-up table vips_buildlut() invertlut build an inverted look-up table vips_invertlut() tonelut build a look-up table vips_tonelut() identity make a 1D image where pixel values are indexes vips_identity() fractsurf make a fractal surface vips_fractsurf() radload load a Radiance image from a file vips_radload() ppmload load ppm from file vips_ppmload() csvload load csv from file vips_csvload() matrixload load matrix from file vips_matrixload() analyzeload load an Analyze6 image vips_analyzeload() rawload load raw data from a file vips_rawload() pngload load png from file vips_pngload() pngload_buffer load png from buffer vips_pngload_buffer() matload load mat from file vips_matload() jpegload load jpeg from file vips_jpegload() jpegload_buffer load jpeg from buffer vips_jpegload_buffer() webpload load webp from file vips_webpload() webpload_buffer load webp from buffer vips_webpload_buffer() tiffload load tiff from file vips_tiffload() tiffload_buffer load tiff from buffer vips_tiffload_buffer() openslideload load file with OpenSlide vips_openslideload() magickload load file with ImageMagick vips_magickload() magickload_buffer load image from buffer with ImageMagick vips_magickload_buffer() fitsload load a FITS image vips_fitsload() openexrload load an OpenEXR image vips_openexrload() radsave save image to Radiance file vips_radsave() ppmsave save image to ppm file vips_ppmsave() csvsave save image to csv file vips_csvsave() matrixsave save image to matrix file vips_matrixsave() matrixprint print matrix vips_matrixprint() rawsave save image to raw file vips_rawsave() rawsave_fd write raw image to file descriptor vips_rawsave_fd() dzsave save image to deep zoom format vips_dzsave() pngsave save image to png file vips_pngsave() pngsave_buffer save image to png buffer vips_pngsave_buffer() jpegsave save image to jpeg file vips_jpegsave() jpegsave_buffer save image to jpeg buffer vips_jpegsave_buffer() jpegsave_mime save image to jpeg mime vips_jpegsave_mime() webpsave save image to webp file vips_webpsave() webpsave_buffer save image to webp buffer vips_webpsave_buffer() tiffsave save image to tiff file vips_tiffsave() fitssave save image to fits file vips_fitssave() shrink shrink an image vips_shrink() mapim resample an image with an arbitrary warp vips_mapim() affine affine transform of an image vips_affine() similarity similarity transform of an image vips_similarity() resize resize an image vips_resize() colourspace convert to a new colourspace vips_colourspace() Lab2XYZ transform CIELAB to XYZ vips_Lab2XYZ() XYZ2Lab transform XYZ to Lab vips_XYZ2Lab() Lab2LCh transform Lab to LCh vips_Lab2LCh() LCh2Lab transform LCh to Lab vips_LCh2Lab() LCh2CMC transform LCh to CMC vips_LCh2CMC() CMC2LCh transform LCh to CMC vips_CMC2LCh() XYZ2Yxy transform XYZ to Yxy vips_XYZ2Yxy() Yxy2XYZ transform Yxy to XYZ vips_Yxy2XYZ() scRGB2XYZ transform scRGB to XYZ vips_scRGB2XYZ() XYZ2scRGB transform XYZ to scRGB vips_XYZ2scRGB() LabQ2Lab unpack a LabQ image to float Lab vips_LabQ2Lab() Lab2LabQ transform float Lab to LabQ coding vips_Lab2LabQ() LabQ2LabS unpack a LabQ image to short Lab vips_LabQ2LabS() LabS2LabQ transform short Lab to LabQ coding vips_LabS2LabQ() LabS2Lab transform signed short Lab to float vips_LabS2Lab() Lab2LabS transform float Lab to signed short vips_Lab2LabS() rad2float unpack Radiance coding to float RGB vips_rad2float() float2rad transform float RGB to Radiance coding vips_float2rad() LabQ2sRGB unpack a LabQ image to short Lab vips_LabQ2sRGB() sRGB2HSV transform sRGB to HSV vips_sRGB2HSV() HSV2sRGB transform HSV to sRGB vips_HSV2sRGB() sRGB2scRGB convert an sRGB image to scRGB vips_sRGB2scRGB() scRGB2sRGB convert an scRGB image to sRGB vips_scRGB2sRGB() icc_import import from device with ICC profile vips_icc_import() icc_export output to device with ICC profile vips_icc_export() icc_transform transform between devices with ICC profiles vips_icc_transform() dE76 calculate dE76 vips_dE76() dE00 calculate dE00 vips_dE00() dECMC calculate dECMC vips_dECMC() maplut map an image though a lut vips_maplut() percent find threshold for percent of pixels vips_percent() stdif statistical difference vips_stdif() hist_cum form cumulative histogram vips_hist_cum() hist_match match two histograms vips_hist_match() hist_norm normalise histogram vips_hist_norm() hist_equal histogram equalisation vips_hist_equal() hist_plot plot histogram vips_hist_plot() hist_local local histogram equalisation vips_hist_local() hist_ismonotonic test for monotonicity vips_hist_ismonotonic() conv convolution operation vips_conv() compass convolve with rotating mask vips_compass() convsep seperable convolution operation vips_convsep() fastcor fast correlation vips_fastcor() spcor spatial correlation vips_spcor() sharpen unsharp masking for print vips_sharpen() gaussblur gaussian blur vips_gaussblur() fwfft forward FFT vips_fwfft() invfft inverse FFT vips_invfft() freqmult frequency-domain filtering vips_freqmult() spectrum make displayable power spectrum vips_spectrum() phasecor calculate phase correlation vips_phasecor() morph morphology operation vips_morph() rank rank filter vips_rank(), vips_median() countlines count lines in an image vips_countlines() labelregions label regions in an image vips_labelregions() draw_rect paint a rectangle on an image vips_draw_rect(), vips_draw_rect1(), vips_draw_point(), vips_draw_point1() draw_mask draw a mask on an image vips_draw_mask(), vips_draw_mask1() draw_line draw a line on an image vips_draw_line(), vips_draw_line1() draw_circle draw a circle on an image vips_draw_circle(), vips_draw_circle1() draw_flood flood-fill an area vips_draw_flood(), vips_draw_flood1() draw_image paint an image into another image vips_draw_image() draw_smudge blur a rectangle on an image vips_draw_smudge() merge merge two images vips_merge() mosaic mosaic two images vips_mosaic() mosaic1 first-order mosaic of two images vips_mosaic1() match first-order match of two images vips_match() globalbalance global balance an image mosaic vips_globalbalance()
vips-8.2.2/doc/file-format.xml0000664000175000017500000002013412530402247013122 00000000000000 The VIPS file format 3 VIPS Library File format The VIPS file format Introduction VIPS has a simple, native file format. It's very fast, there is no image size limit, and it supports arbitrary metadata. Although few other programs can read these images (though recent versions of ImageMagick do have basic support for .vips format), it can be useful as an intermediate format for command-line processing. For example: $ vips invert input.tif t.v $ vips gamma t.v output.tif is faster than using .tif for the temporary intermediate image. This section documents the VIPS file format. VIPS comes with a command-line program called vipsedit which is useful for destructively changing fields in a vips image. The vipsheader program can be used to extract any metadata. VIPS files come in three parts. First, there is a 64-byte header, containing an identifying magic number and a set of very basic fields, such as image width in pixels. Next, the image data is stored as a set of band-interleaved scanlines, from the top of the image to the bottom. Finally, after the pixel data comes an optional block of XML containing any extra metadata, such as an ICC profile or the EXIF data. The header The fields in the VIPS header are always stored least-significant byte first (Intel ordering). Only the most basic information about the image is in the header: most metadata is stored in the XML extension block after the pixel data. If the first four bytes of the file are in order 08 f2 a6 b6, the image data (see the next section) is stored in Intel byte order (LSB first) and will need to be swapped if read on a SPARC-style machine (MSB first). If the magic number is b6 a6 f2 08, the image data is in SPARC order and will need to swapped if read on an Intel-style machine. libvips does this swapping automatically. The VIPS header Bytes Type VIPS name Meaning 0 -- 3 VIPS magic number: 08 f2 a6 b6, or b6 a6 f2 08 4 -- 7 %gint width Width of image, in pixels 8 -- 11 %gint height Height of image, in pixels 12 -- 15 %gint bands Number of image bands 16 -- 19 Unused 20 -- 23 #VipsBandFormat format Band format 24 -- 27 #VipsCoding coding Image coding 28 -- 31 #VipsInterpretation interpretation Pixel interpretation 32 -- 35 %gfloat xres Horizontal resolution, in pixels per millimetre 36 -- 39 %gfloat yres Vertical resolution, in pixels per millimetre 40 -- 47 Unused 48 -- 51 %gint xoffset Horizontal offset of origin, in pixels 52 -- 55 %gint yoffset Vertical offset of origin, in pixels 56 -- 63 Unused
The image data If coding is set to #VIPS_CODING_NONE, pixels are stored in native C format, that is, the native format of the machine that wrote the data. If you open a big-endian image on a little-endian machine, VIPS will automatically byte-swap for you. VIPS has 10 band formats, see #VipsBandFormat. Image data is stored as a simple list of scanlines, from the top of the image to the bottom. Pixels are band-interleaved, so RGBRGBRGBRGB, for example. There is no padding at the end of scanlines. If coding is set to #VIPS_CODING_LABQ, each pixel is four bytes, with 10 bits for L* and 11 bits for each of a* and b*. These 32 bits are packed into 4 bytes, with the most significant 8 bits of each value in the first 3 bytes, and the left-over bits packed into the final byte as 2:3:3. If coding is set to #VIPS_CODING_RAD, each pixel is RGB or XYZ float, with 8 bits of mantissa and then 8 bits of exponent, shared between the three channels. This coding style is used by the Radiance family of programs (and the HDR format) commonly used for HDR imaging. Other values of coding can set other coding styles. Use VIPS_IMAGE_SIZEOF_IMAGE() to calculate the size of the image data section. The metadata Following the image data is a chunk of XML holding a simple list of name-value pairs. Binary data is encoded with base64. Use vips_image_set() and friends to set and get image metadata. You can use vipsheader -f getext some_file.v to get the XML from a VIPS image, and vipsedit --setext some_file.v < file.xml to replace the XML.
vips-8.2.2/doc/using-cpp.xml0000664000175000017500000003110512644220226012623 00000000000000 VIPS from C++ 3 VIPS Library Using VIPS How to use the VIPS library from C++ Introduction VIPS comes with a convenient C++ API. It is a very thin wrapper over the C API and adds automatic reference counting, exceptions, operator overloads, and automatic constant expansion. You can drop down to the C API at any point, so all the C API docs also work for C++. /* compile with: * g++ -g -Wall try.cc `pkg-config vips-cpp --cflags --libs` */ #include <vips/vips8> using namespace vips; int main( int argc, char **argv ) { GOptionContext *context; GOptionGroup *main_group; GError *error = NULL; if( VIPS_INIT( argv[0] ) ) vips_error_exit( NULL ); context = g_option_context_new( "" ); main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL ); g_option_context_set_main_group( context, main_group ); g_option_context_add_group( context, vips_get_option_group() ); if( !g_option_context_parse( context, &argc, &argv, &error ) ) { if( error ) { fprintf( stderr, "%s\n", error->message ); g_error_free( error ); } vips_error_exit( NULL ); } VImage in = VImage::new_from_file( argv[1], VImage::option()-> set( "access", VIPS_ACCESS_SEQUENTIAL_UNBUFFERED ) ); double avg = in.avg(); printf( "avg = %g\n", avg ); printf( "width = %d\n", in.width() ); VImage in = VImage::new_from_file( argv[1], VImage::option()-> set( "access", VIPS_ACCESS_SEQUENTIAL_UNBUFFERED ) ); VImage out = in.embed( 10, 10, 1000, 1000, VImage::option()-> set( "extend", "background" )-> set( "background", 128 ) ); out.write_to_file( argv[2] ); vips_shutdown(); return( 0 ); } Everything before VImage in = VImage::.. is exactly as the C API. This boilerplate gives the example a set of standard command-line flags. This line is the C++ equivalent of vips_image_new_from_file(). It works in the same way, the differences being: VImage lifetime is managed automatically, like a smart pointer. You don't need to call g_object_unref(). Instead of using varargs and a %NULL-terminated option list, this function takes an optional VOption pointer. This gives a list of name / value pairs for optional arguments to the function. In this case we request unbuffered IO for the image, meaning, we expect to do a single top-to-bottom scan of the image and do not need it to be decompressed entirely. You can use the C enum name, as is done in this case, or use a string and have the string looked up. See below. The function will delete the VOption pointer for us when it's finished with it. Instead of returning %NULL on error, this constructor will raise a VError exception. There are a series of similar constructors which parallel the other constructors in the C API, see VImage::new_from_memory(), VImage::new_from_buffer(), and VImage::new_matrix(). There's also VImage::new_memory() and VImage::new_temp_file(), which when written to with VImage::write() will create whole images on memory or on disc. The next line finds the average pixel value, it's the equivalent of the vips_avg() function. The differences from the C API are: VImage::avg() is a member function: the this parameter is the first (the only, in this case) input image. The function returns the first output parameter, in this case the average pixel value. Other return values are via pointer arguments, as in the C API. Like VImage::new_from_file(), function raises the VError exception on error. Like VImage::new_from_file(), extra arguments are passed via an optional VOption parameter. There are none in this case, so the function brackets can be left empty. All other operations follow the same pattern, for example the C API call vips_add(): int vips_add( VipsImage *left, VipsImage *right, VipsImage **out, ... ); appears in C++ as: VImage VImage::add( VImage right, VOption *options = 0 ); The next line uses VImage::width() to get the image width in pixels. There are similar functions paralleling vips_image_get_format() and friends. Use VImage::set() to set metadata fields, VImage::get_int() and c. to fetch metadata. Next we reload the image. The VImage::avg() will have scanned the image and reached the end of the file, we need to scan again for the next operation. If we'd selected random access mode (the default) in the original VImage::new_from_file(), we would not need to reload. The next line runs vips_embed() with two optional parameters. The first sets the value to an enum (here we use a string to set the value, it'll be looked up in the list of possible enum values, or you can use the symbols from the C API), the second sets the value to an int. The "background" parameter is actually a #VipsArrayDouble: if you pass an int instead, it will be automatically converted to a one-element array for you. You can pass a std::vector<double> too: the utility function VImage::to_vectorv() is a convenient way to make one. Finally, VImage::write_to_file() will write the new image to the filesystem. You can add a #VOption as a final parameter and set options for the writer if you wish. Again, the operation will throw a #VError exception on error. The other writers from the C API are also present: you can write to a memory array, to a formatted image in memory, or to another image. Automatic constant expansion The C++ API will automatically turn constants into images in some cases. For example, you can join two images together bandwise (the bandwise join of two RGB images would be a six-band image) with: VImage rgb = ...; VImage six_band = rgb.bandjoin( rgb ); You can also bandjoin a constant, for example: VImage rgb_with_alpha = rgb.bandjoin( 255 ); Will add an extra band to an image, with every element in the new band having the value 255. This is quite a general feature. You can use a constant in most places where you can use an image and it will be converted. For example: VImage a = (a < 128).ifthenelse( 128, a ); Will set every band element of a less than 128 to 128. The C++ API includes the usual range of arithmetic operator overloads. You can mix constants, vectors and images freely. The API overloads [] to be vips_extract_band(). You can write: VImage xyz = VImage::xyz( 256, 256 ) - VImage::to_vectorv( 2, 128.0, 128.0 ); VImage mask = (xyz[0].pow( 2 ) + xyz[1].pow( 2 )).pow( 0.5 ) < 100; to make a circular mask, for example. The API overloads () to be vips_getpoint(). You can write: VImage xyz = VImage::xyz( 256, 256 ) - VImage::to_vectorv( 2, 128.0, 128.0 ); // this will have the value [0, 0] std::vector<double> point = xyz(128, 128); Enum expansion VIPS operations which implement several functions with a controlling enum, such as vips_math(), are expanded to a set of member functions named after the enum. For example, the C function: int vips_math( VipsImage *in, VipsImage **out, VipsOperationMath math, ... ); where #VipsOperationMath has the member #VIPS_OPERATION_MATH_SIN, has a C convenience function vips_sin(): int vips_sin( VipsImage *in, VipsImage **out, ... ); and a C++ member function VImage::sin(): VImage VImage::sin( VOption *options = 0 ); Image metadata VIPS images can have a lot of metadata attached to them, giving things like ICC profiles, EXIF data, and so on. You can use the command-line program vipsheader with the -a flag to list all the fields. You can read metadata items with the member functions get_int(), get_double(), get_string() and get_blob(). Use get_typeof() to call vips_image_get_typeof() and read the type of an item. This will return 0 for undefined fields. const char *VImage::get_string( const char *field ) throw( VError ); You can use the set() family of overloaded members to set metadata, for example: void VImage::set( const char *field, const char *value ); You can use these functions to manipulate exif metadata, for example: VImage im = VImage::new_from_file( "x.jpg" ) int orientation = atoi( im.get_string( "exif-ifd0-Orientation" ) ); im.set( "exif-ifd0-Orientation", "2" ); im.write_to_file( "y.jpg" ); Extending the C++ interface The C++ interface comes in two parts. First, VImage8.h defines a simple layer over #GObject for automatic reference counting, then a generic way to call any vips8 operation with VImage::call(), then a few convenience functions, then a set of overloads. The member function for each operation, for example VImage::add(), is generated by a small Python program called gen-operators.py, and its companion, gen-operators-h.py to generate the headers. If you write a new VIPS operator, you'll need to rerun these programs to make the new member function. You can write the wrapper yourself, of course, they are very simple. The one for VImage::add() looks like this: VImage VImage::add(VImage right, VOption *options) { VImage out; call("add" , (options ? options : VImage::option()) -> set("out", &out) -> set("left", *this) -> set("right", right)); return out; } Where VImage::call() is the generic call-a-vips8-operation function. vips-8.2.2/doc/libvips-overrides.txt0000664000175000017500000000000012651721354014401 00000000000000vips-8.2.2/doc/images/0000775000175000017500000000000012571531237011527 500000000000000vips-8.2.2/doc/images/interconvert.png0000664000175000017500000006642412571531237014713 00000000000000‰PNG  IHDRûYŒssBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î< IDATxœìwxTE×À[Ò ! ¤PCè-ôÞ›4)¢Rlˆ(Š"b{äµE?D_ATéU@ªô„„Þ¶|ÌÝdÒ€Ýìf3¿ç™gïÞ½åÜ“ÍΙ3gÎQ!Ñ-€n@k >Ppªi@pˆŽ;€@Ž ä•H$‰DbAZŸq€ñ.ZðÂH$‰¤B£²µ6 +0è[p·w64O‚z©P+üs@kè 1nå Ç|!ÁµÐ5ï–ÇH$‰Dbi*“AP˜Ø<œ³ Ü‰D"‘XÊb A¸÷«‰·µS`êix6Vxî#ðS |ØNú+;ÓoïE`‰D"‘HÊ­(þƒèœ=ÀM/ß@ç[ ¾›Ø³¦2Bó4x: |Ra¯?d»# `=bÎA"‘H$»Æ‘=*à „ ¨~Ù ­S­wËhWÝÔPvü <€\ ‘H$;Ç‘ ‚€WÄfÇXX÷TÑYÿ¶¹*x°5¬h ìX< è­o‰D"‘HîG2˜€0€.—`ûp×sOÓem#»D"‘H$w#y\ @t„í[m-P>´#€, pÕÆI$‰DRGò< ‰ÜìGDõÛIûè0¸g#Œ–iÖT‚D"‘H$wƒ#ÄKû‹Ð1 ›Nn5²`è EÎñˆU‰D"‘Ø Žb4ÚŠÍGNbs ¨6å”2CÀm…•$‰D"±-Z[ `!”Ö-&D!–ùÙ!$.Wúkm-‘¤B¡!ªu6ê€;âÿ8Q’û"p؃¨Â)³dOÐhŠÐg0BŸž]fшbe]=K$‰£ÝÅKãXp*ÐÅõ´i„-X@Tb"¹e½`­Z¸þü3½:w.¹ãîÝ¿aèéâ‚úÀâ¿ÿžC±YZÇ(A²Ê!©ôtÆ£À¬~FäÀÆèøÇ"<‹¥ÑÕl[0 ~~nY\:‰Ä†8Ê*ƒ3@xd,ÚkþA` Î×®ñ|ÇŽ|»w/Ée½`óæx:ÄD­–¹Å³t)]†¥ÕîÝœKK#»S'êÅǓڣ+âã‹2>Þm3#~˜=€rH¥,©€¨€‘À«@›‚¹çBX ÔJƒÀlðR¾C™j¸éÑpÑ Ü ]3ø øa(T6:¯ƒ)0Uêd€ºŠ>ƒ2¡ªò›£‚$g¸ìQ^pųã1Q4mrÕÄAp¨+6&p{Í=€J…¡ˆÏhÒÏNðKN&gÝ:n¤¦æcÐj1<ðAz=†U«¸ž-öOŸNý#h3h‹6m" 0û÷3fñbºȦÛEmuCÙpj‘÷ðÜǤ0蜿+8 ÇÂqÐ=¹l%»zÀ°"Nø1˜ <LGÔØ¨ #¼,ʨJ6ô»\…7Á« uFb\`e5ø-öB®bÅÐSÀ»À\¤FRÁq/(6—üccÍ?¬^ç¸8^êÜ™¯wï.èâ{í5ŸžnQQÜðõÅÓׯž=Yrêé-Zàuð “ç‚N‡> ŸìlrÛ·giRºcÇ}ã)}ú°Þüš¯¿NƒY³âãç™™…KŸw‡ð”7Y%£ÖWÉ«”U(-ãaÚwýÞþU÷xÃ{á°¾èMZL±ÝÞ#£x_ñ64ž9ScÀíÒ™G»À»a°4 ÒM+†"ŒŽs÷$±DbCa•gþf•,ŠŽò7y ´¯¾â|P :wfe£F,9tˆÈwÞ¡µésõ–-œmÛ–ßë×ç{• >úˆ–€!8ÿS§¸Vøš;vçìŒS»vxß.GõL3¹½­¨IÅÂX ¼8AõtX° oƒñq ºÇ.oÁ_ûaûhaòRFtbe™G¯h¨€ß_1ÍòêaˆÜ¯_7÷¤ÏÚ™°ð8œZ ƒ£c­5BŸ÷•çƒJ$–Ħ ÌܧF#•ç½/ê3Õ7ßÐ&"‚//Ü«VÅóʃb@ðÉ'œ 99°e §Ú¶¥&°W­½>ßà0¡Ó‰)åµÐýtæØ=ŒP$„°¼”Ûý£á§ÁÏ ñ%]nÁ¡­ðr˜×rëÿ :±ý–¿ŸMЋ€±âm£Xºš§[þV53aõ>øþ2¼ØRy2Íš7'Ð+çÓÓÉ1—“CŽ‹ Z@ý:‰ãWøš]ºà—›KÎÑ£$þ â̽äò%‰7b@k1Êœp¾=fÝ[ª9§ Û ßRý€@Oà°uïmuTÀ7ä}¢àϽ÷6=Pž¸,–ìÑUïiÊ—Z÷¾‰eq„)ƒÄ?pÁ‹;˜2hÒ„%K8ðóÏÄìÚEbíÚ¦¹Æ<jôh‚LÇ·nMHT×ÃÊ•îÞV­[ãiúÜÓÕäÉtÞ³‡ãiiäÞ.Ç ³é n ©Ì¨F[ÑÍÚß¡Üe »+7G6P1eq§Ëí·€'ÅæÐs°a×½O”µ5Lƒ]› vâo»èhõ'–H,ˆ#x ˆD,Íà´…\ñ&ÁܹôNO'Û´ñbŽœ>MÌsÏÑÃß׈‚Ãà ½~å£ÛoÒ»eKŽÔ­‹o‹„÷èÁW€á?ÿáH—.ÔÞ¶I›7óoZÙ=zÐÔhÄ8f k Ë!8è¯ld1VÐ…¤âð0Pl¾xfÚ ­W",Ý #@N0b}}_ŠXSèÌ›=¢à½¢®Iyœ ›7A§pà ¸Ä—¯ÉÝ¡±µ¢3Ð ¹ðÜ!D¼€0êõªV%ùÊ’nÜ ÅÔþý—ë³gs¬n]hܘ€£G¹2{6;¯^%a÷nôz nnÜš5‹÷ÝGœtS¦ðçÞ½$F£Ã÷ßsêÖ-bÃÃñ«W€°0êŒÁwÇ“b.C~{¿D‡ \³ßÚFU; ð žáçü®(òûcžNi°¥6PH âÅx!â0ª@Í›°} ¸ë±‰N}s âšX ÷A,{üÃêH,€#,;xøœr!~T±IŸß§O»v4èÜ™ïbbLÓæT{ü€ÿ”·|»@ì:€*œý|í AU·ž°³"¶¥gcî„Ï€@«‡­+ «,¥œÖævPÞô6ÛR‰¤,8ŠAŠÈ9®†×„÷­˜u7ü MUÞtvØR‰Íü)6¿Y“ìdê(Ò Z<ÎÀçÀÔÒΰB ¾\`ü!Xü¯­䪠áp¸èÈ7Ò¡´3$[ãA…—¿Åæom!oEµ¯M)h£ùÐ%•“7ÄKÃk0)šr ",­…¥Ã&Cú)DUΊÀtÀEGÎ9ŒÍõhjNzxÍ”x¬=²Â©¤à(ÀBñr¾üŒÍÌÛaOø§"çÿ(2àPR hŽè€çÿÅæFjáöþpÎÜÈ[ºg׸ãÅæðcP- ›ëмMŒ†:¦€Â'­¡‰Ä’8’Að+bµ Þ„Í:ÿí>ðBë‚û¦ô3ŒÈS/©œ(—o<Í ÕÂ-(:]((«]3ð•^<‰ÍõWT»ÿ¤"ë0dvR‰ãH±ˆl/F`“€ °¼;Ô|…ÀÿՄݦB5³uÖ%•“þâ¥Û9¥L·tX…Û¨³Š¬-êVÐ%Qôv "’±¹îŠjSÎ ƒDò'‰Änq”e‡&N – ÖƒÃáÐö „¥QnK¸L­êeXÞ þjuƒQôädÉãÊJ5à@Ïí…v7)á;„sçÎøDFRì÷·~}ÜÆ'¤cG|}l,™€±wo|§L!lÃâJºGÑ­^ÌiF5pñ?e¯| øÂ€“02†bž)0§ž=©zî\A]v튛$&’cÚçãƒfÌ‚ûôÁ¿Z5´.f0`0}Þ£UGŒ FëÖxge‘{ý:YÅÝW´ª9ð¿0Hö@$#+P M"±'ÉC`â) ²ÝaüDˆv¦ÜGODAèEÈòP¦ ö ÊL3òVõ ½B)ß¡#¨¾t)ËúL­Æ°lŽç‰I“ˆ3†&k×òÀ¡C  -[ReÈ•v¢›_6„$(27·ªFî  žØìX¢> "`Ù2FÞ¿`½_|‘¦÷/½DÝØX&ΜI×#ÿòKúÆÆòh›6"éæÍô]¹’†'üñÇi¶{7ãž}–Z%Ý[´FW™íYŸ‰Cd*,L4bþóOˆ…®ÏÂÏ¡z9Ö*ÏV+nB@0p©üäØ Å‹W:„f”v°J…éûc(üÙçŸ1`͆eÉÆ$hµ¨>üæ€A¥Â¨œohÙ¯„rbcó³t–NH\ TdÖ"åøÿS*îˆ\ ŠÕÖ”]´HLÙJ‹9Æú÷ÇÿÃòÁ¬›9“S¦ŸzŠZ®®¨FŽ$°kW6lÈ7QQdxx ñöFSÒ½õÇ@Ã2>ŸDbÑC°˜"6cáÕt8èA¹D'¨!âI8×B‘墢]#¤1P™Q–ñUM¥ ß#³Nì¶Ï~˜6¿üÂÞ¹nÚ§Ó¡›>C€^­FïìŒæÐ!†¯YÃÈÈHžþáÚ•å¾¢y›’jõæ¹ÖRÊ]†H ¬žB)ºT ¤ÂûM†“~útZ9Ã¥™39n~Ì‚\ܵ‹„€œ  ™™yÅÎôééäÄÅ‘YÒ½E 1%Jª†ãä~‘8 Žè!011’ø®Õž3`Ö70í¼õn¹,ž}B•‹ó°¿[€td´ÊŠ—xq˦Ô¥ÕšFùæûCCqõóÃgçNb‹»ŽJ…18˜À7ßdÃâÅÄöë‡ÿš5L˜>ý EuîYjø¡&,o —ý ÆL¨"b_ìÃäM„O€À$hzÞ<MÓÌT«‹÷˜t\¿>{÷r¡¨c~þ™K¯¿NÒÙ³L:|˜ {öpiÁ"MÞ‚’ñ1XÄ’ÎR=D‰-pdƒDTð(ó:ý5øc#,Z õÊð\VnjaüØx¿3`D$ ùa”d ÙlF«-woIÁ42¼­“/òàb¦ ¼¼Äu’“)ɰ0^¿NüâÅ¢€ÖÆÜÈÎ&'"/ÓCA.ºÁ® Q'ÉrM¿ *„kÞñÊßÌp…tWˆñ~Ð4¥Ð±EêR¥Â¨ ''4ä>ÆDr29óý‹/Þ£u&N¤Ë /ÐwâD~ùé'®uN>jók:Z ·ÄptƒD™ÓÀÏ`lÿ „f çZ˜»ÂïÁZw‚ç»Âš!jÊì< lRÞ›®è‡0 tÀº»¿¯¤¢ŒZ3(ƒAPܨ62’´ìlrZ¶Ägõê¢ë ¨Õ²²  :z77TEß»q*,QRig¨¡Ç8ÐDù0˜Uš¼åLp@Ù6ÂÖÐ>¹¸ƒÓÒÈÖjqR«1ÌžÞÕ'e ÀÏ­:u¨J ›´4 ï¼ÃÉwÞá¤V‹jÏF¾þ:]ú‰ŸK÷¦“²a@ $»ÄQc sh±gCfXû04™Ÿ©pÖ•2Ea_q‚7›@Äú%, DÃæä…¹ŒH¦2èaµ§•Ø#‰â%Ù“{ˆ!ÈÉAwð '{ŒöÎÎçÅ›7ÇÝtná9se¾ÜPú½ÝsÁÅ€¸ñv±’Nî-0ZÙV“Žžiÿ~4ÔýúákÚçï: ¿'ˆôk×r¢S'š6k†›ù¹¾¾¨kÕÆ„ù~ÝÅ‹\wqA[Ò½E»ì¡Èz“2ƒ‰­¨ éˆ ƒ WGAç §»ˆö…Aäð» Õnˆhp¯ Hu‡LWˆ€„XKÉ+`Bü¼-ƒ‘£`­AÖ5¨$( ’½áš¶´U/*Fœ—,¡‹ùþY³øwÂÖïØÁ“gÎðتUJL$³m[Bºv¥¹¯/sŠ›n0¹ÇKõ²¿²qJs‡Û„ÀlZ`/D[á02’´;ùwáBFýð;23Ñ=ôm®_çÆwßq0¾ù&Gûô¡þ®]<ýÛoì<ž› à7t(í'Oæ×Ñ£ñ|ì1:lÞÌɨ(’›4ÁèP:~û-(U§çMú<[âa‰©L‰‹À$`&ð°Ò”D,7k‰V¦¸Ã“ˆtÉ?)×¼ÎÕÀˆÀ-‰ccJð£‚AðL‰ß™ãÇIز…½U«;9a<}š´¦Mùêý÷iÝ­aj5ê¨(®÷ïÏÀpäñ6`*ôÀºuì½x‘TJí¼Ò4pÕTx²ÄCmË- ‚áÙÈ’îÝ›•sæÑ»7õÑ=ÊÅçŸg¯N‡À`€Xöæ›40€FíÚQ'.ޤiÓXöë¯ÄÖ®kÍšxµiCh¯^4HJ"ýÍ7ùuÎΕ.êÙ eÞõ)‘È%0 ~@7Ä´B} à‰ˆÎAÌÿ^Fd<l®Zྭ˧†cßá$–á<C¶ÀŸm-LÑ|Už›¤¼©ƒÈëa¯,ÆBýópn¡­…)š+.Pó-0hƒ¹ÊHb·TFAQ$+”VžFL¬#‚%ŽË& ö4ÃnSØþÖTÙ8‡} ~…‹uá”4¶Ã€½O)Æ€±ôX"±[*KP¡=³‘nùOĈLâ¸ü$^àÛš”{JíÒZ’ö¶Td-%rÞ.X d€^ïÛ¨˜YimU[EÖ€©²Db—HƒÀ>Ø<l@LWH“݈@=`nO¬’)ó^ÚÔö¢þzDR-{'X.6Wwƒ[*l®CóöC0\SdýŸU4 ‘XiØ«Ö5l,‹Ä:Åæé&°0›`Mí²üÑ[‘óìºÀÄÇ€R|`JGl®GóöÎ}ŠŒg?¬¥‰ÄRHƒÀ¾X¼…X’ègcY$Öá'D¡‚7Dd¾5ÀIwèq?ü_MlÒyiUA´o[Y–䀖 ‚ý^ØÜÀÓZÁES1£·^‰Ä®‘« ì“Ç€çÞ@’mE‘Xžˆi"Dìƒ\ D×…À88ÿUù‹óA#xãY±ô–÷€7Ë_†{¢Â0ð:gàô—àb°8;|¡ÿkå‰ÈLÚ×v²H$eGöËsÀ ?jcY$–ÅØtÈßåÿ~µ³Š;É:lò‡¡¯+×  -PÎ2X„ÇÈ›§ï½6ÛÈEÍZ½×jɈ¥Ìl#‹DrgÈBöË~D—÷¹ ì­­äîi„p!·G¤6Bÿðôi±]^mŸ7 éUz}€ëÖ~x+q" * NdÁèHÊUŸÉhÿ \Wö= ì±þ£K$–AöÍ^Īƒ—ÑÔ:ÛŠ#±·€‘c Ð@d¤^~q”Kçµ2F¾)ˆFÃÉ/TQÙ€ðºÔ…Óa¯Æ¡\ôé žƒhSQ¨×€ï¬þĉ‘Sƒ£Êž‚ŠNðp1-tðBAe€~+aå_àjÅ9ðWZÁ ÛDø埔ËZx"‚r»Š·÷ÂêEPׂåÎ ócL 7M)ŠßfXï~‰uAÅa6Pñã-=“Nˆt»o?Î@b„¾h! :þãc-{û#^ðøp¤;â? HÅíH¸?£Ä[¯xxn¼̲·¹¥…q`ýpÐ;!¦^l*‘Ü;Ò ¨8¨€¯õG,o’Tž^AÌ+åš÷¾@üm•Zþ 3ÖÀð{œ×?ãÓzÖÁc*Å»‹ã¼©éÀ;à ¨}&¯‚—ËP¨$R4ðBGøã~H1‚ŠA‹J$iT,ÔÀbĈòIÈ+s+±_\}CÄ”ÏRŽÌ%/c¥ÊµŽB¯ÝðÒ!hœQ¶Û&:Á܆ðg'8Órݔҥº?¡rL?µæS`EGµ ÐyL>}Ëv™|[~éG:Cº¯ò±ºáUDM‰¤Â" ‚Ї‘Üæ:Â=)±_ Ç ”µvC䡘 TÏß­2‚ï%¾Aq˜^YଇdWH¨WªÃÕP¸^ôÎf×ÌBLS¼‡ÍV&Tˆ%¼¯M ~äu‚ÎCp%€gxgÁ-WHô†¸j W@Ž§Ù‰Fà/à¿Èòå‰Ä†8«qû¤pQÍònqUÎ_ˆ¹›ø£ˆˆ÷À{ÃQPuw§ÏÄÿ]ãr–]"±:ÒCPqqFT{û1ê“Ø¦x‡€-tM_Dä|7ÄŠ“úˆôÖ>ˆÿãD«óJÛŒ¶Ðý 7Ä4B )BŸ!ˆX' a4D!JAÿ‹Ðç düŽD"±CÜ?R¯ØX‰ÀXü ØX‰D"‘T2¼ Œž±µ •œ DVºÿCŒ0%‰D")wª –²M´µ •KÄ H$‰DbªÇëÜ%åÇS@$ÐÆÖ‚H$‰Db"ôô€­©˜â¶#ã$‰Db‡„g€A¶Ä‘ñ‰D"©ÔC,=ëikAÎÈx‰D"‘T ÂsÛ]m-ˆ!ã$‰DR!i†ÍÊìÞp¾EÆ H$‰¤Óa´²µ óx­e‘H$‰äžèˆ(s+ó¯ß¦xGl-ˆD"‘H$–¢ p¨kkA*¦xÖ¶D"‘H$KÓQ¨¥¶å°gd¼€D"‘H*÷§sã’‚Èx‰D"‘T*F'™ %/ ‘H$’JÉ£ÀaÀ×Ö‚Ø2^@"‘H$•š ¹—­±¦xmˆâP‰D"‘TZ^þ°áFwdžB~’ñ‰D"‘ÃÇÀï8¦ ÝXˆŒH$‰¤TTÀ×À€ÚƲXS¼À‡€ÆÆ²H$‰DR!P!FÒß+Û.ˆ)‚l-ˆD"‘Ø3Žðƒo)´@ >P pª©@‹èXÎY6’±¼ÐK€xàù{¼V(ލ¡à‹Xâ¨Gèô"¸ï4p÷)Ч€©ÀƒÀq+\_"‘H$B00 Ø€èøehYÀ`ÂxpTœ€UÀ§wxž+0aP\¦l:5"Œ‚o€ÞÜ»[ß/°¨z×’H$‰ÓX‡©ê˜4È€z· < ê'A`:h‹8#b ÿkÎÝ„3°±,±4jŸÉ©§*YP+%_§!©à‘Sô±\þÃÝuæ2^@"‘Hî‚Ê6eÐ ø1¯¬à¦ƒ.qÐ-ú$B‹tp3Ü~ªN'Ýa“/ì¨×€g³N ÜÓ[¬úå°1Úþ¨ˆÏ«ÿž!ou‚ÊÍ¡Ûu¡ÓŽ)P-·èËǸÀÎ*°Õ¶U‡¨*f¦ïŸ9eµ ðð:°¼ ÇK$‰D¡²ÎÀ{À‹äëÝ‚§Ïä+ॿóKf«áÇ@øª>1_ƶxÑ™9 Ê*`°: E¤þUÊ{åÀƒ`Z4ʼ»[íò†¹õà¯ZcáŸÆ‡J8QÆ H$É=P ‚P`%!ÞVOƒYGaÒUËÝb…?¼Ü.˜\ÜQÀpà¨åîasª ².jm€>€ œõðèYøø,øè,s»(W˜ÒÖÖ£ á!˜|¥ tˆxùˆÒÅc€$ËÜ_"‘H*Žn4G¸»ƒÅ£Ž> ç]xJC¯‚i a~3Щ‚QˆNÔQðG$ö Ï+Ð ~ÞiÖ¹åŠj0©Ä{(;>¢SÞˆDJÛ71!‰D"¹ Ù hŠè(üÀEŸï†I±Ö¿í_~0®;$»"V$ Æ1â BÙ@_ò‚ýÅá-àZDÌ…%¹æ ƒ:áÊŽt`2^@"‘H,†£!À~ ¸çÀÒ­0ÄëÜ‹á' ì7<4 ;%ÏWTÀÀýù»j'Á‰õàQ#ó,5Ü×¶ÕRv$=Áœ‰D"¹Gu©Ü2 ¸êà§-0ä`(¿‘k7AÕLDYáßIy*2ÓÉ3Ÿƒv±çÏ7¡\têªl3yüÕX1"‘H$’»Å ‚@G1 }'Ü 1·\έõ-øa h @òƒá*"­Õ®Ñ°êØ· ÞÙ[B QÕõ¹°l¯%<>.¦ÀEDæH‰D"‘Ü#Ž6eÐášw†a§`e¯É¯ IDATå[ S›Àç”7÷!–ïU$4À^  ¤Â‰s d©!ÎêX1sœ3´Í®Ã‚Ö]‡CŽGð¸õî-‘H$•G3VƒÁ/ NÿV|2œòD¯‚FCà| p h†pƒWÆ!ªß­ƒ'Ê!0³0G<¡vVÁ%Ï6‡ùí™ [áXK<%‰¤Üq$ƒ øPÁÛ[aÆ9[ ”Ïòê0ÚŒ÷ "Æ¡" N !â´#ïF–j>ñ¦¥‡£l-‘D"‘Td)†àY@ÉðÊ9Ê5ˆ°´öÀUhvÙLΊB ¡Ø|ã_l®ÇÂA†OšVnܨa ‘H$’»ÄQ `´Ø¼ÿ¤tf–y{Ô´<®+PÏ :°ÊÜ|í0"›ë°p{ù ¸å â±–$‰¤2à(AOÀSÕ™z ›¬*(­=sܳÓ4C¬§ ‹¡EACNcsýÕªfCÇóмC­ ‰D"©48ŠAÐ[¼„$@£T,4 @;n5,s=÷\h£ÈÛÇ:j°(m©‘QXi”ïä„qâDB´ZŒww¾ÑfòšWJ”H$Éà(A[ñÒâ2EtxÆÇó„¯/š¢>/®µo÷¼y ,îóZµpþçddðLv6ÏݼɄŸ~¢Cñ×lgŠ#hkUmXEFïtèžHôuã÷îMÕ²kj>>¨,`¤§'ª;9/¿º¤È«E¬6H$É] µµB |kè( àê þþTÑhòF¡eB¥Ê;¶Ès–,¡‡«+Náá,ˆ%»C|zö$°ø{´ˆW6? ±¬²Ø€Fâ%82êÌߟ*y{Y1*¯¦Nþ K HwGȼýί!‘H$Gðx":W <‰"æšU*ôÊk6lþ»w3(:šq§NñÀÛoÓÐì<À¬Y„GF2æøqFMœHˆéó°0×­ãtl,€~ï^?ø€bZš_-¬¨—»Å xè&Þ©ÓbšÉˆ*°¿];<·m£_TcÏãÁ híì,Ž3ým}”Ó§}æ ΚEƒ;¸§M%Mu$‰Dr‡8‚‡À+Ó/ƒ"F™*Uñ£Poo4K–ptÏZ´ÀgΆÆÄ²p!—T* žž¸÷ëG½qãXÕ«óæ1â̾߹“¤3g¸2i]ÜÜЬ]Ëå-[ŠñGºÃ aw³™ÀyÀý^ÞJü€¨"ƒžባðð‘%°xƒ €Ž}|Ь_Ïù-[ØŠûܹ øè#²_|‘æcŸzŠ6Ï<ú°0¼>ý”ûoÜ }þ|¢Ê&®»)K¢W‰‡I$‰¤XÁ pÍßôÈ¥h·³¹ë¿Àç?þHLõê8w»;ê³g‰<˜º ¥RaÔhPˆ¨(2÷îåæÀ„MJ³;Ù>bë¾úŠŽ=D›©SxëÉ}ÄÆ?FIФSÁK­`QWÈp…\'³[ŽYN G‘5ÅþnêÇ×໵ÐáVq')ÆWoÜÈ}û¸Ù­¾5jàrø0ÑݺQ8h:öwض}; Û·“Уû{Œóçs¡l¢:›2RºÝéCJ$‰DàAFþæ-S‘¨Õ·Mä1s&_|‘þ‘‘\NK#+(_½>ª!#ƒÌ¨(ÒLÇ_ºDB½zTôIIèÇŒa;°½fM\çÎ¥ã»ï2⯿øìÔ)Ò…z?? ÚŸðelj§\ê,b¹¤=Ò8 6ýoÂ#»à•“˜SÚ‰EéxÜ8B¾ø‚Q—/síæMÒñqqÁ³)ƒ½{‰7wö,ñ]º^ø:Å“i2´ÒJ„ðØyIˆß–hàpH·ˆŠ DMs}z¯Ï‹Ïè1„—TR2!@còõé†Ðé-Ä÷Ñ\Ÿ÷\OÆ ‚”üÍk®í!(vÊ`òdºÏœÉÊyóÄhtÃzxàT*Œnn¸x{£NIA€Ç­[¤¾NL cDz-#ƒ®íÚQõÔ)R Š04|ö˜ë¯½y œ+ v= Á%˜s°¬'å!xé%:-]ʮɓÙ0>í È«é`Ç=:ZwÁÁx¤¤Ü®ãâI3yRJë—ñ¼`?°¡ÏhkWÑ Š£Ëéë–ñ¼,„>ÿ–—K>¼hÁ È®ApÊ—¢c mÛR%9™¼QîéÓ¤êÔÁ0ôëGµ.]h~ägA­F½`zˆ¿;u§S'š=ÿ6•“üöF`ðbíÛo3jÂú$%qkóföiµh}f&9ÑÑ\®R×äd^ÖjÑüöÿ½v«Z—d¬§'^F#†øx_}•%.×ÑT6.cŸÆ€9§ÅK\äÁ¹ÔÎ9)‰›¯¾jÊn(X²„íÿý/[¾ý–1))´ÊÌ$sË5lH ×éÐ%%q3*Šë ¼äìŒv×.޼öZ~|AÉüS²Mq$gîð%Ž xñ#˜¿;$ú_…ž Ð/©äʨgÝ`½l­[ƒ Íè¡´}Àò¦Ø5ÂxðÏß]+ú]…^ Ð7 ütÅœœrÏ×çö HwB$këìDtŠG¬÷v…xx¨š¿»N²ø~öN€Þ· j ú<æý…>ÿ‚ -0Pi[FÛ‰âÏÏÇQª¾ Ì€ª‰pó“»¹€»;šŒŒâç¬Qët †ÛG®®¨srŠþ¬ 'ÀÙúÙ˜’µ9Mó¦ÀÏóÄ ƒ{£4«Õ¨œQeeÝI>‚)máË‘O‘r^R’OMDéne ­Æ½.ÃôHaÜ ™jø_ ø²>œV–;c>G¬ÌɾW¡í˜ºÀ £x«5@_EŸ½Š 4.™ 5|óÃᜩCÔ#F·3KG%øh-Þ:`À%xùtM¾»K¦iàÿ‚a~}¸è£ìÔï*­Ä¸,G1º“—fílxÖÂÍeW¨;tNÀà{[KT *ÄTLu¾ þ°SW^‹GàXS`#ÐßÖÒH솈[åG±ãUøò(DXÐ3÷Cux£%\5-w= ã.çoíœaÀbòÒ™w‹…/A3 Zþ_Ìj ×<”û€á@œåîa7<ˆ˜šõ?µ½.‹ïgC hæ…À;- Þ´´}'0ˆ/î G1´@ Plƒukl-Ðí<Ó¾yLB ;âKàY¨r>(-Aùs֚̽x øÖÖIì‚'€ÿ´à‘ïý /Ä”vÒÝ‘®†‰-`i%”à ¢(˜½ ß “/ xeÃGà™XëÜ*Uµ„õ}^Bw§­s?›ð"^B U²`î>xÜJFÏ--ŒkkLv#KÞ‹Œ·ÒXGˆrÇ€˜ì Wàñ]"˜£}40ñ!H÷þþgE]X’ÀSíšËÐã:6×¥y›ÔN5@LÀ(D´wB9=³5™Œ¨¡ö-ؾ&`5}ºàÁ«à“ [‚ÁP¬n–Ó3[“—€Ù€ ÂnÂÎMÐ+ «éÓUc®€kü ?„×åwà¶i GñÔF¬v‚VòÍ6–ÇŒ×[À‡O(oº;l)Ͳè5.CìPm- Ú Í„,w`>ð¬­%’ØœÁÀJ@õaÛ.5w†åøËìN@,bùîµò»¿Åü ¨¡Q›ßm€'¬@x'ôè×CäoiLÅZÉñð.¨ŒðóZxȦ‘:ö½µV#”©-G4@ÌÓ<aÂbXøOù‹0¯L› :`"‰I9ÎgZœ!ˆÀ•0 âC ß:X»º|D¸o0¬F {‘ÄdWùÜ_b‡¸#ò¹Bç‹°k‹®i¼÷K\s†Æ£!ÉŠ‘wÄ„7Â+è ½ÏÃæí¸¦ôí ÍGCª+"hôÉÒΰüúô‚A§á/KüVY@ŸgÝ!b4d8#‚F§€ãM˜Ø„X“G›Ãµ0¸ç¾?h¯O+bÙL oT@Î!7[BšhÕ.ÃÎ…à¢Çê:=æŸ …4_e_ð2"ÿ€¤òò04ø}•sÜ@qÍS‰:Ø] ‘|9# î%`0hõðç:¨f#×váæ“ WŒp á\BÅøM}è.:X³ªæ`s]bÿ¸¨†ÃÁÖ@ªÚšš°!鈵–§„kù› 0`äÉ/¨c¥öXxs*äº!âú"üTt‚HÌ\Ÿ:'8ç†ÕuúK èö\«‹øB'#²{½Ž˜ŠqÔﱤdTÀ3b³ûyhŒÕ¿‹wÒfž‚ªéˆïç$k)Á‚¨Ó/@ß3Ð8›ëм½s<3u%&ZK ÄLÎA'¡Ž©`›´÷‚[6¢ÂàØ?¤ 7ý^@î‡zÓa“©’…Û1whü4,z ZDÇÙ1Ïí\6#¾ägÅ®›AÐõmxͼr¡[®êãgBrbÊå1DeµtÄÎ@ÄšoSšNIå¡ yÕõž9ŽÍ` 7Ï\xJ‘u âǞ鄊ÍçíPŸUs ¯òÛÃxì¿ÿ»õ%;Ôg`ô4õO‚ãN˜È@ÌßÕZ@J5ø¥'ìÐ@ç(ðµÀ²x-<Ú¦Oë¦*jÙÊì ÇbtE¸•†!*Ç­ÚÎ þéKjƒÿ%h–‚E\Zï7€ÑS`w0jÉýˆhò ˆå†:D\ƒ"Káv*FH‰exè Iðý.lî†-ªUKƒZ ¾£›Ëxí•€öš_íÁæº+ªydÀ/ͱ«±ï´ÆÓ¨Ÿü‹ÍuWTÓdÁïM_`¹½[X– `8H3l>ƒNÂÿ‚î°ýé}‡B­Oá÷ñ㉵¾„˜®¨ó…e¥;"»âýˆ‚GŸ# Jµ&o Ð…V0î¨7¦7WÒÜ¡N/:Á„ŽPý-xã ˆ¯£Üÿ7 ðw1ò-@¸:W!–vJ*½ÄKëK”È* ­‡ª;;¯["ø™rdô¶Š,‡¢Ï¶ÑXAZ-ÆÐPœÕê{¹Î}×Á;C‘·‚賃E¿ŸÁÁ8Ý›ÍÛÈ«à–¥ÈÛÛQÊ—…Ÿkkg“ ×ö mÚU¨{Zž…ÖW¡K<47+‚rÁ þ®kÀ¡úÙê˜][,^ñ¼ "¿Fd3¹?M£œ³ˆúðoƒ1.¶†9­a^*Ô: MOC«ËÐ5Ú¦€‡Rm+Ñ öøÀžêp°œi ±Aïlvï£+»,Y'w ¦ˆ~GdˆûâK/qLœF"Ðù2wñ·5Šê‹ 27ÃÍ›¤,ZÄ¡Y³òóæ«ÕðÕW´~ðA"¼¼ðÐëѧ¦’±f 'žx‚}¬XA÷þýijºNBÉ_}ÅþO?5ÅÛ4½ 7ÚÜã3[wÄò3 [™õ¹|9] ¢9@V9QQÄ¿ò ;·l!ÑtLXnß}Göí©o0`ÐhPGGs}î\ö}ó ÑññLððÀÕtóç¹6e ;öï/œ^W 4Š…}áØ·>}¥èY¢>‡'ðÿc¸ߘïÿ÷_†ýó—^x#j5,_N·iž›‹ÎÍ —˜n´lɲ¹s‰ˆˆ ¨ukV™Ÿ_§nÇŽñØÐ¡üºm[qiŸ€WáH] Me2’n±ËÕ‚áV ‚Cý !tÊT‚‹ã&˜KÅZg\VŸý(þùŒˆ©„Ÿó¤Ïí!Ç Îwm…Ùáš\0ªÁPÜt•a|˜–0Þ¼±oÆ|D\ÁXÄß\âxÔ#oN¾M<¥”u- ggÐjÑ„…ñµFƒêÑG©=cƒàÆš5ÜXº”n={ÒpÒ$V­ZÅ5ƒz÷Æïƒèæâ‚13ƒ›šýû‰|ä¶j4¨ž|’ºÌ øæäIÒ n‚âÜjh¹Ç·8 È›“oWf}º¹¡9tˆ‹cưÙÇíW_ÑíÇ$~H}|ÐîØÁ苹Ѻ5ßžLªéüiÓ¿y“”mÛJ›F­¯ +ÔAQ\CŒ k=¥6 %¸¹ÍÈET1û±.¿bÓÁc` e{¾\Dþ‡@bêä/n+H¢w*ˆEÄzL‚•{®ãÎŒYˆˆÙ•À? Fn‡#4³íÍ*UPoÚDßk×xòÆ &>Ì“{?4çõëésõ*ÇÅ1á÷ßéT* F#ÄÄEú¬Yœ¼u‹”nÝ à:bmßz‹ Ë—s%'½N‡~ÃnDDð[f&:å:ÆÜ\t¦ë¼õ'c“&xKº]f»C‘Me„ÖIr-ù%­®\á±ÄDž:wއÆåÙu:ñìÇŽ‘2okÔÀß× `˜9“Æîî¸ ÂÚ“'I ·n‘óÉ'œ½ÿ~¶šÝƒ”²cbÈ8r„äÕ«9H•ÂrˆVǤϚå¦;GѧS®’r½X·½J•ç=(¼ß¨Ra MšàIÜ‘#$†ÌLtsæp.=Ü}ûH:wŽËÓ¦ÑÄüü¡CiúçŸ+éÞ¢ÕÊÓgeóÆ€DÛ®¼W#¾dµOÀ a$¤!2cE#:>Ggð>bº ê.ο€Èt¦d;à î TAtô·ÆÂyÈ·j-ÈDÉÔ•À«ˆ©‰ãà%^4¨š3{6í«UóCed 5Š`À Vcغ•‘qq$õëÇ/ÙÙ ¢Ê®r-ÀÀT«R¯ãÇI Æd4‚\¤ãT¥ÂB•3h Õ¢îÝ›z—.·z5qâÚ>¦÷Έ鷹»ÿ+kâ'^4z(œ782„€±cé0t(K"¥W/üÈ!_‡FF¤$RnÞƒ«=q‚KII¥'eëÓ‡ÐêÕqõöÆùá‡i»j‡L×-ˆiÎÛ ‘Tç#ì/sa5ñ¢1À5-T/éùj5ª3h`¾ÓÇw“A°mÑsæ0꯿èµiQ¿þÊåk×òuúÇ}ê)º¨Õì2à¾û ÂölNPêôO¾>+»AP¢Ó¶­6åA`ÂsrÅB×LTZy³Wà¨(±&`pqA忆Sƒ¸mØ@ÂüùÂ=l!!´iÃOÉÉèãgŸ T­Fïä„Sb"ϨT¨½½ñZ¸MK–p ÀÏçôt2t:ò*ÒíÚÅP??¼^y…M«Ws]¥Â€Ï°aâ=8ÿãljCžðYcØf&÷ DÀ±—Õ5tg¸Š½M‚‰P+ž<æê:ʨѨUáµg7W¯Î¯à¨RaìÐF‰‰ÔtrÂÙ`Àðøã,Eq{{ãE‚é}ø~ý5÷¤¦’Ù®]¾¡Ah½zøjµh´ZT±±$SÀ¾¯ Ìk»Â•jDPó-ìOŸÊ÷3ÇŸÎ×çÓG`DÔÅ*• õС443RñôÄC Ôþ9ç –>öï½Ç9spٶñ>'ãìÙœœ6þÏŸoÝ+¯À+¯°½Oü¿ü’û¾ü’.²A¥Â˜™IÖ®]$îÚEbv6+–,áño¾áäÁƒ¤ìÜÉ…çŸg@Íš8ÇÄ•˜Höòå\ ÄE¹¯„§Áô÷ؽ›DUóæx>ì ¿oÝVX oõóu”c—oÚBa¥0øCè³ú ¹ÃO³‘¢0\>Ї ïûSˆÛö ðí·DMJLx8¦D{,\ÈÁï¿çÑ7Þà‚N‡nþ|")SV‚â"¹²J 2˜Œ˜&p4cÀœˆÀÅ•ˆ8 IÅåBþæ?¾“'S«}{¼t:ô›7s-7—½ýŠ\ML$é÷ßéíãƒÚÕÆ#ˆÛc YYè,`ÛØ±tóñACÆ’%lyùeø!ÍÂÂpõöF=v,AZ-ZóÌÓç®]©2`~Ÿ|Bó¦M ÛºU ]†ú¦©·Àaò–£ÙfÁ¯~‡½ËáÍ“à3`~=D µã®]$ܺEš^Ÿ÷ìt¸l±§NùñÇt o¿Í±k×Hؾ1ãÆäãƒ:4çN6? fM<»v¥ÊƒR}åJ¤¦’¾q#×òÑêááøÿöÎ;<ª2kà¿ôF-´ ô*D)¢€4ÁEEQuYXuQE° ¢« Ÿt‘µa¡* ½÷J¨I¨IHÏ÷ǹ“ !eR&Sr~Ïó>3·Ì½gÞdî=÷ÔZ&Yw ÿö¬iæ˜ÿ-lùÆ–ê•wöÝ1‡¦a®hN›Fã·ß¦Ah(%¼½aôhj„„PmãFN›ö_¼˜sׯscìXº¯[ÇîädR²8Wã”? µ(Ï"úb?QcŠ+øÉcÖ¸Çä<ÒÓ¢$llØð &Mâ__¼H\»–]†ß5­woæÏ™Csçx9-´Ý»9¼p!gnÜàöùó\ÀÌOýæ›ìíÛ—&Ï=GÍ)S82b.^äÆàÁ´;–G’“I¼|™¨™3ùaÞ<ÂÔË—¹V·. —,a`Z\¿ÎÍwÞaÙÔ©¦º'*‡?€dâØ#‡Kš7l „>éñCxLžL¹s)˜Hò‰œ=šµ@Ê•+\/QCݬ IDATÌæpòdÖL›F¯  Ü#"H cîW_ÑqÆ ;—€˜n…‡sþÙg™gúÜùó\2„6C†Ð&)‰”óç¹2`³/^4¹†Ì9išÏýHÁ4{d7òÝÜ`} "‚‹dJ;¼p¨ÈHn)—.që™gh7f yyáMôœ9ü:}:GÌ?³t)ûö¥õŒìÈ|¼ì 7Íçagm¬XÆËH_€¹+=ÐéñFâ *¢qŽÊJà!h¾v.¶µ0Yï ¥Þ€o$Eù3[K”ë€û!l'l^fka²æš;þG«1©b¯lZA‡Í°þ‡\÷¶ ¼ êF*øcê2(¾ü)E܉⧠€Ö+pŒ –‡jÃ5Wò]¾Õšã¿5 eÀL^»Åï@]¸ 6Ÿ»¬Æg!†2`&¯ÝbÈ·'’M±v6>­c(©ÀZUŠ'ã‘N\c4(Æh\ã²H…øð^=ˆv…OjBׇaIEòÕ£¤°Ç↬ûcÖ›ŠBa1~ð~l>wYo›²þý—‰ÿF^n”†O‚±ùÜe5¾7Íç: R‚âÇ$¤`w¬SÈ1ż¼‡ówuÒHo/þqy^!;ƒLõãm8¶ùÃn£ßÂ5Ñí•cÀfy;¿=6Ÿ¿Ìcmi8ØÀÕ^c1ÌÙì‘·³ïÃæó—yüTŽ™Š!Íûï'­.o­… &—}‹¦zå‘z¥m+Ž’ žH±)#ý0Ñbý¡ËzXmÊ¿¶ñx¹$»#ñ)öü–™äåTˆñTkóhº æíËÀB«Í@ábÌç‘ú0·*6ŸCóñzWé+CH UŠ.H¦æH~ìíœw/¶$ õV qöNb!ð'½H‘[’|!››bT‚¿ï5dý2wí³[V ]FÉý ÖÔîÙÆóùyuØÞÊñ}È*ûÀ.Y‚t…^{Ôh—cóùa-ØÛÌq †`ju~\&Eµ€~ÜÕÀIÉ‚ÈEñ$?ûPλ+ELÒμÿq?Éž°Ã†‚ôû6ÑîÐkÄ”Dò䟀ŒòÇÀ!àIˆ €Ý©0ø(6Ï‹ÐÿYˆóGú“Œ@nlހɭ5Dþ&ÂÀãØt>O{Á㣠Þqi<‹()ª89.ÀL$µn äÞ`DIç,´6éÞ¸Žüu_T P$mï1à߈ ìº1Îa ·# ËElvÁíð8oh,?Fú¢ÃpéäÚN†§áþËØd.SvÃàt]D xûk •'‘²&p¬ø‡{£°Ù|ÞûDÔB¬l}0 ÎT…Àyq¾Bº ƱžPì…[À¤Ôñ3HÞ{|ŽŸP¬A`:ð*¢Œ#£Y Ò’|-’B[ ¶6ßcÐ6š"¿à>ÜþêlÈö0§Ðg£hXd!U†M¡ÔQhmƒùìÔ¶v0dz Xdݯm5V½!-þl A¡ÙuŠ|>;> ;L®¬W€ïÍ…T…À9qC¢š=¡¨2PR€_`6ðmÕ1¥PñƳÔpäæŸ©Æ>ý!µ4¬k'¡]$Eª üÚËçG`”±ÍIFæs ¤–„uÍÀï(„‘Rtî ë6äùù_pT¥õ1H) ¿7ƒòG åUŠd>“€`CCžyÀ¿2 © óá†TïJı|möŽy\ÁE4®Àšx å´§ ×Zrÿ_¾ü €ÔR°®5„_‡Þ§±êÅö¢Ü÷$lìjȱ1Å&hlÏ5à` ¤Àê08 =ÏaÕù<ë íž‚í 9~þZ…üo „äø­5D_‚‡ÎcÕù<á 힆=í 9þ‡Äµ¤fPK;HTk4òtr×\)0UØ‚õˆÛÑ/Rö„ â#~ ±Äü‡;šÄXLmä&RKëmƒ…ó¡¹ên|V^{®U6V| Á¹2yê#î²ê²Øp,Z ­ºüAmxk$ܬ`¬XŒ<Ø8S0tà05xjö',ùêZ!sbJ(¼7n•3VÌE‚³TVU!p<³Ú%¤s¡£š*/Ä—]xíƒPt¦"YãH/8”oÊ#ñÊ¢gt[Ÿ¯Ê…\û{9ßöu€4D1|xçTÄ+"›dÑ3z|³ÖCÅB˜ÏŸaB_8x/r_JFÂwqÎkYòðf<µ{Ý„ÞËaÖŸP¶\¼ßW„? GÂŒ‰À$6[T!p¼ÂÇ‘@¥hxém?©J¦äÈ…?)©½¡í¼„Xüe•×-h½Fn„!çsølÄ»Â; àûör¡M5¹\!-Äÿ*,ÁíWäúòSxß„6«á™M00­ÓcÝ`rCXÑ޵FŠä€¸ãž¶–àvŠr“ž”U>סí*xþoè}9o‡»éo7†:À‰{ E$îfâöÌUŸÀH»Íñ6–¥8Ò‰Ù˜€Ô‚W,£*5~/òTm͹«Œ<½FÜj¥.@ƒÐà$4½Í£ J¹S™§ˆ…¥(ç«:RJ¶ 5 ö/þ”\l F”¡‚Ö(؉Ä<•(ZñíŽÚHFMAklE,V^E+¾bK|‘Èë7l-ˆÈoðÚ!+<óýY¤Á–-/þnˆ/| R¢ú&9_`/?/#vʸ]ÍHýŽœæóøjOÑŠqÓ îí*"úBúµ— £O(Ò¨:â"X_´2*ŠRT¸æ¾‹R„ÔEªŽB•gfOà.iBðs0ìòEnÌE4’`ݺ\ "± †|_Ë‘80TP§Fû!ÉÛ…tQœ—¡@kyûÊx|øÇCŸŽ’F‘*å`ÉðJFj]4Cª`n@Ê¢6CgìI¯(Šê2°ê#‘ˆÉVq^ümyhqvü.«S\àã½"‹V¤[nP§\2.žEkÎ+J±B[µÚžfHààÈS™âÜŒz{*ü´*%iàšm¯AhnÍ yÜpƒvÝ ¼¼™Œ¡Æëv Ñ:Ó (н¡ÛÒiüò8ÒFqn<ö¿á¡C°òOÛŠsÕZö’òÆA×¥ò_µÍݶ”NQ”¢ÅÝÖcZß"ål·ÛX¥hxi³ LØøñ­…þþh/Ø´*V€¨P¢ýá¨B (Å *ÌW¤» ‡ŽÝé@×UŠå¥öE¸/©haa@aí¨Ÿ±ì–ݲöG-ˆŠR¬P ä\·Ú#fÒ:H•@o³}’€sHû½À_ÆÈc³0Î3Qöç[jÅÑp·÷ŸÀzÖÒÿ,j…X2¢ÿ£ŠRl(Î ÁýˆY´àŸË¾@°1º"뀕À<$wÛ’ üýHûâ^ÀÁ|Ȭ8.µIwï¼Ã1Ó6WW˜=›V?ÿÌ™¨”õÿô¨Ql‰Œ$‡ Ý/ƒo<Äz#Ê«*ŠRL(Ž AOà ćoFåhzŲ5â |"x¤Éu;ÒΔ€“~°§ œ €4/D™èCjÁ/ û }7àÄ|Ü*ßL±gêË‹kt¾Lí/_æ¶î Ò©Y3éc1~ß’ FÕÏ?§ßÉ“\ŒŠâVÇŽ¬4mswÇåðaïÚÅ™F:p€óðWæc´lIÀºu Ÿ9“µ'ZjþØ–Þ l#½¢¢¢(ÎŽ³+®ÀTàYôO€7öÀ¸3…Ÿ`1¿"ü³\ö5V$OˆB>¡âX| ¼¡ápx‘¥Ú»—¡¡Ô¨U‹#"H0ßÖ®¥×¬adT×êÔanl쮀ҥqß»—'÷ïçl÷îüa¹¨ÃÛÀ׀ä»:Eqvœ9íÐ1ãÊ@ã˰ãWxå¸Z!ÕkèyØ÷+tž„Ñ£ÙšœLÚ!ì›7 ²0ó¾†Bî.xáj Dû!C˜{üx~nêJoÔÍ¥(Åg´„!q@ØYøy#¸%c½ªpfcBm‰!µ .-ƒ~‡ ™F“^¥N)¦ã½a·/9ü @…‡¦õˆ,KN&H<˜ß*W¦üÔ©44ß×Pî°¼õ½SRHýè#‰ˆàYóÑ«åÉÕBpÁÔèèˆõ§EQ{ÁÙ,žHá¨xþ÷xäs]˜¤%àÔw`œsñ6hVUf«è¢‘G±3öÉ€;,¯Íöe·ãÙ³Ä<ü0Ÿ®_Ÿñ¿rå ñ:ñßråðÄÌÂ0z4?FF’`¾îÿ`¾‡GÖÊþæÍD“£…â¨/\1)»,ûjŠ¢8Îèö*ð>¸¤Á·?CÿBH+,(»ü¡M?Ht¾@úÌ+Å“M@[h»6}gka²f|SxR®»ù+Ï­(ŠâL.?D!º…þ(7An£ùufzÒÔ°Ê·W_äegCˆvÅæÿ›YŸš²n@•E)V8“B0(n©0uVÍ&ÈëxoøÝFÒ_¶æ$(vQÚ:¡¼Ù›ÿ_.©¯5„FæÃ¦’p4ÔužçAQ;Ä™\{ÆÐþü¹ÊÖÂÜͰ{`~+à*Pî,2£~zBÙH8ÿ.xåšq`=\¡þ(¸PJ]…8¸Y¸†¤ÊjÚ¡¢#œÅBÐh,oŸ<ˆmŸ¼²1žxHb(Ãý”bÆÛò]F…aS÷€WúBŽÁ•ʆ2RhÎt¬(J8‹BÐE^|ãታØÖ›¢Ðâ:T¿bÈÛÙ“ 8ÛeòvQOØ€MX¯dØ<¼â ùR€­ÀZ$+BQ”b‚³<´——gÁ=Å’ŒIµèh¿ÿžK¦uõëãûôÓ„pé1+VpvÍšŒÔ///\G&¸eKIÙ½›ÈY³OJ²´ aË3pºÐ1ßMq>^º@b)xô)8ôØðæÛ¯'Üö3ö H`á$à¢S¥q Aãå2>=õ$Ø´üòËïÞ͈°0‚nÞ$¾F J.]Jïÿü‡:@jHÞÇŽ1hìXÚº¹›ŒI³Ý»éké9¡¹Iù¨ƒ*Å“KH›là|0t©w•6V´h½ØþxÐk°øhì6ï‘Þ)TQgÅ,@My‰\è,ÁT>¥Q#ü¦L¡û‡²j„Œ±üÙ¤ @ÊâÅtŠ%¾uk–ݺ•qލdù9›Ge’ù˜…²*ÎÇ7HUÍ—`G;èpÖ/-šÛ&Æ7…YÑàâíÀ H°« R‡àK`1ð<°©£ñ1«(N‰3XHWl‚b°ðiݼ)ÌèÑ„^¿ÎÍÿ›½æû\¹BüªU\©^Ï–-©3u*nݺ³«ÜÒ¥œ·ôœlµ]¥¸ó2¢»@³ápÃânˆƒ;À´ç Õ 8 ôâÉ(ƒl")ÞFªöǹ2”EÁ9¿Œ·%M%\-¦¦0©!!”Žˆ 255ë}ÃÂ(åâ‚ËÚµXì’ÈzT¾m&·š`•`(°D÷·…:aE VSNyA£Àâ' Í8€¹š^³ãð Ò¨«?°èPàPÅnp…ÀÌ\Ÿl±¿ÕÅ…4W×tÿlš‹Kú±²¸»ÔŸonÖnÄ4?xHƒ+5`À[Ðõ¸ìF¡Å ¤¤Â³÷@ãwà@[ãÜ Oþyéjx¼„¤P®"=åWQGÆ‚˜Œ·Ñ¦Æ/¹ 0Ì£'Or¥Z5 á®±iQii¤víjI§¸œÆEó@B-ú¢˜H&ÝËì «úBððpw8X‚|ÿÏ]w…gZC…·à‹ç!¶ ¢„LnäSæ-HvÏ'ÀR`>RpKQÅ‚›€‘C}ÌŸ<(&—ÁG±ÏßßO>¡…ù>Õ«ãÙ«å#"ˆÛ¾¯¾ÊýeÊàf¾ÏÈ‘T³ôœ°ÏÜMp E¹“_úÀ§@2Ä•‚_ƒÆŸA­qâ÷ÿÎwÂ?x¾%4} *Ì‚/GCt ã« ‚÷Œý ÊO@#$aƒqÜ’…p\EQŠg Ú 4…ÞëaÅjK>°s'Ï#ºwoV¼ò u&OfÀÉ“œ9r„ ø7jD?æ—I“8X«%V¯æ |wîähRÉ RãÖ-â5beb¾Ü>ì‡X5ÀÒúJ1¤6ð 0 ðºs“Çm(yü¯g<¸&K„¸¸Q nguCþx)8d-|ÑH¬f$(Šƒá, Á×À09 ÇçXòaèví ?þHz‹äÚµñ=šz•*Qòòen-]ʉ ¸fÚîîŽËèÑ„„…Q%1‘äíÛ¹8k§RS-½±·ïZ÷æå *Å–Ò@_$¯rÓµ„$#à$“á¤U¤ËšòÀkˆ ä-¤©“*¿Šbç8‹B0˜îÉpa”O²µ@YSf<\+ƒc½aki‡ÃhÔC,åó¼+ p 8nŒ­Ø>N¥.ò¿^¬·©4Š¢äˆ³(•€s€¼¼¦ï²µ@wóu5þ‚±ÐØlKi¥ CÜ Hí…}¶GQ”¬p…$ «Ô8 á³l-ÌÝ´[§·º¨ U)~t>@ !½ œ±­8é¸5, ¤¶Éu 8örPŠ ÎPºØÄl œ®ÿ­φÛZ  6–†í÷ sPe@)ž¬Z#àÆeHý…ü¦>æo¤y'¤¸R(9÷‰Aú:ü‰\íäÆÛrìlD!å_míÛU[c‹Œ„úÀ¤°RAR#O_ŸCFб¢8:Τôþ'oŸZ s6ÙT¦×…W_@æzð‘R{¢’^Ù˜†XÐ £>‚9µŒc÷&ýšç’u¯C«(» b vTøD{@³—à\mà6Ðqi(Š’=­‘Œ„DÄrßßLRÁ¨÷Q2Æ€WÏ@‰B°@œõ‚ñ¡°,R\‘¸ O ™µO‰â8£Bp?R¢Õ*œ BmKž )æà†;Ü3 Ž71V Cj½+ŠbéÀ1àŸH´¿¥4BžÖƒd±ç)˜³­`ÛO†Á‰ÒÆŠß‘"R'¤8n¹ïâœÂÞ[5{ 8Ò›Yi+m_„ð††,¯3­þŹ8|‰dÌj"Ñýñ¹|®)R©x&ÛaÆ!ðMÁ*¿÷jñ0òó„Ce #ð-båP‡ÁYŸý »Ôv_qÐéVSfÕ„ÇÆI [Þ&Yÿ«*ŠS’†¸ ¾D2f# ÂN²6ˇ ±åÀ/¾YÃ.`õ‡Tèn%–ʈe¢5°„ÂT«áÌ H-÷]À#ìÃ`EYhqªÄSh„p/èÕ¾ñþHààóHd³¢(# Ø,BjÌDRw#¿Á6HÄÿÏ@”H‚¥«¡g$VWÌǃ‘›WAÒ‹ý‚¢8ÎC™:ÈŤ¥,z܆֫áÝß Ýõüö°¼ÜÖw3ë0wŒÔ’W¥ð1e$„ýr œ¤~µ†Ÿ·xýZÃ÷õŒ…^À¶“EQ,§¸( •È^B|ú²Ê%ªí‡ö[`ðAx0*÷Ãl €¹ `]+8ÕR< Hq•ÉÈÓŠ¢(Ö¥’‘à‡T@†ì…;l(ï »Ãñ@¤ÇJ4ÈPqŠ“B`¢R­lwU+ó†Òç¡L$øÅ€O<ÄyC\ ¸W+Â­Š™Ž´_ž†B)ŠR4¸]€¥ˆR4¸ƒR6Nýû³4tî É®H,Ñk¶•GQr§8*&ü>À $MÑ;ŸMFº~‹\Œ" [8EQr%˜ ”E߈õ‚ú`ïPÆÆJAÿ6ð]cà&’%qÕ¶ò(JÎg…Ào$*¸Òg¾RkÝqÄ ¦¿ãHÔóFÔ- (öÀŸ@{¨w~úW…ÕÕ l,ÞÞÖŽòOË~Óqh8Ý‘ê‹ï[YE)ª(Šâ¨'ø`%Œ³C—]ç`M}¤ås¨­¥Q”œpµµŠ¢(ù¤?ྷvç©ö7žòâ‘®›ïŸx‚µ*PªbEJÊ:Óú;¸þæ›üüÑGôúápwÇmÈÖ©S¦°»iSj‡„à ¤NœHƒcÇ8»};×,;oIó–;VE)ª(Šâˆ$ÈK²;yðç_»FâÁƒœ>p€ðk×H4ß6mGá̃rÏ A|O2zø0·öîåøÄ‰4R{õ¢Ù¢Eì´ü¼·Ì­·­8'ŠR T!PÅ1š¥¸B´yP \\Hsq!-óú¶m)Ù¸1ÁÑÑD?ÿ|zða òÕWlëуfÆQÙ×ï?æ¹ HhCæ Ñš“¢(AEQ‘³o7•$©€f Aú:??øæú}÷}”ýûÓnÈ*a( _~É©´4R§N¥çêÕì4Y,ÇJß-³¢Øª(Šâˆœ"Ým°¥<´,[F—˜â†gÆ DOŸÎŸ~ÊÀZµð2íóãl $pútväå|p²¼!ó«Îˆ¢íe (Š£²ƒö[áÏÿYú¡råðˆŠ"É´®F ¼¯\!).ŽóuQQ$ÅÄȺùó¹¯ysj6lÈü¼‰Yê_p£$ððvÞ>«(EGf AS YË0¨TÀc‚,ù¡ðn¶+Š’?ÖÈËþÚšîïÏmDEE¼ùºÓ§‰‹#1󺘛4ÁgÖ,ZôëG‡™3YgéydüXÎPVYw:¥`˜+žÀÀj¤pQ1(UÀc¸#-‹mrÓ7±hb¶\x¼H%R”âÁOòr­ |Q<™ñ-ÁÁ”¨_ŸJÓ¦±ì‹/8•·ÏÞÜõ"°ÝJó (…‚¹BÐ8zeÚ/ðJ ‘› ‰RÜ]lÜ•ŠÊä\µ«’±Ý\¾ÒÜmÑðG™KÀðLÛ\%!pË´­Òy,§œ`_îü%¹û{»!¾ÌçÌ>SÚl˜ïÒ®µzçTÅr¶‡äíì6XI!X±‚ ;²|Ò$öåí³Ñn°±¥!ëBÈpG(Š=b~ƒÌ7Fæ›ë:àS`0QL7¶yÀh³}Ýé=Ùœo>òCž,Í$CEàOàw`°¨il[ ô3Û·µ‚ÜhÃͶ5Gx¾æ;Ͷ½ œ>ŽOg!'ÀËÀ‡Æ{à20ÙX.hüÞˆ5`Ÿ±þ?ˆEà3Ä<øˆ±Þ Xb|§-†LŠ¢œÏäeOSø¥,VkR”ŸñRÄøÉÀ—V›E)$L7ãÊÀÀ7À·@{ j¦}Ë!7¿ÈM{”±þ¿ÀH³ýBr„7dq¾þˆ¢Ph‡ÜäËšmŸa|®1ÒÉl7åyÀ0³}{!ŠÉ¡Lçð0¾ÇLD1hg|€ûg€Æû–HO5îf éíU¹8h¶Ü1ÿÅfúÌ?Åá ãØËŒõU'„6ˆ…e ¢È(ŠR0ææ cú`%+AÞÇ!XÞÅqpÂj3 (…„I!x‰ˆ®+ß¾9‹È0ym&Ãäÿ;ò¤|Ÿ±ü4ÙkÑ›uŒ±üµÙ1]žÀDqè¤™Ž»¹W4–‡!JBfB}>3[wÓx}8lÈѸq7´Îâ8Û×EUDYúq”3–×dó³â*ð‹ñ>Qd‚óðyEQ²&xMÞž¨cZ`se€TÔâýkÝ$«}{E)D\_ûpħ¾Ê€'¹3-Ñüi8‰Œ¸Täf9iIÚ²MË ½Â U»Lu¾}7@yäfl¬{ߨ…(ƒ‹F{D¹ÈLIDHÍb[Yįl6#®ƒÌ$!ÖŠNÆXƒ¸N:š-[JL¦å$Ä’¡(JÁ™Oúïñ³ÇàX~ó¶‚«`x[ØgŠx-H¤8î@[$mo f¶mòtþ—Ç™‹<õ^CüöײÙï(w¦5Ö!#°/‰Øü˜Íç¿FüønÈ÷ÕlÎQ‰=Ï´m¿±mj¶ßäNÖ –„2ˆÉo b9 Bâ ²"íh¦(EIò³’aø(¨ú>´¸™Ëç¬À”z°` ±ðâU‡À &ü± ¬6Km– ü ¼@ÎÁ3_ 1ÿD²fqg³ñˆ©ÿY +â~0/äñ+P ü:Y>~@”œH°ŸéüµÏ‡‘ ÅÏÈ>ò±ß:cy-б$eó™=À+†ì ²ÙGQ”Â%$Âõ@è6vøQ¤n‚éµaÒsâŽ.!kK¥¢Ø%nˆ{`â»7ç4âCÿ 1³ï@üߦÏE!Y&›í„Îw Q@‚ëÞC‚ð6 .‰CÆùî3†;rc?o|>ùáG_‘ñcsAžÖË« ù:!Š{ YÿCâ:!ŠÀ6$ò?9 y#Óþ㜱ˆÏròƒQªÆòˆÕ£’Æy>ÓvùÜiȨ(JáŽX*ûB\)ø¶ÔÚ n!×+Žg[ÃûÏA²'p¹Æ](’o­(…Da•.ö@nx_¡é5Š¢Ø–HÀ±¸'À E0ÿOëœ*  »;+N!VÅ£Ö9Ÿ¢XÂPBRêþFLðÚÞSQ[s’ö[A«†·ˆB ðKqç[ÃÂÇ Ö”:½¹f¶¶*ŠC ÍEqV‘€çî²è’Á»aè¯ð¯Ãà™–Ó‡³æœ¼Ö~îWƒŒ•IÀ;HÀ³V#TUEqvú"MÔjf¬ò½ ¡Û¡õ!èuºFgýÑ›nðC%ø¹.ìn§šCŠyIòUÀî.¦(Š¢(Šâ3ÛK–AnñP*ÊŸ€Ê ÜIð».ÉY쟌;ßk‹/¢(ÎB2* šðG‚pžDÊ gnä‚”;Š”+®bU ï¤2’öø’‘0©Að(ЧeQ¥phLA2Œ²ºág5n!iÏ/r÷5LQœ‚¢v@~ˆ‹å>HfÂA¤ðO0Ò¡°Rb¸"R#! ZôFÊ Ï £‚¡5Y‹¤,þŠ"ú˜ˆDOG('Š¢X‡¤·JrñC¬ ·% ©dz„¬S“¥ØQѪ3­÷D~@.HžJ¹çð¸ñ¾>R¶xP¦}Zu÷명%̶û#=²Âù1—1ä1¯膔5† ÅÃDrAÈÜn9±N˜·46µRžŽ(7æøçõËF>EQEqX&!Úñ*¤8Ïl³m#OÎk‘”›hà_9Ë\!˜ʎƈ©®FdÝŠYÚ‡XN!å‘A 0]Aº9î@ª–Fª1Ö2Ûÿoä‰`¿±mbhblϬLD ‘¬5^ÿ‘¹EQÅî)cöÞ1ïßo,?Ž<å›Jô6DLmžÙË\!X‡T*ÌŽ'È{>ïVã¸&ËÀÛˆ¹D!H3Žkâà'2žú§"•M\Gª/š8OÖ Ag¤BšÉ„T` BQEQKšð$!4õåÀ¹¹®7¶ïF”~2Œw:—ãšüt9mÏa{vÌ'Ã×7é{`r$ M›LtBú˜r‡¿@¬îäÍ_hj«ÜÕlÝÄÝ‘‡ã(Š¢(ŠM°D!ø yú]†t|iKl"¿­}ÃɈÈŠSˆbaê)n)·2½÷D, OüæÍFL­’MÜDd÷É´>7Êç6[·Œ~Š¢(Šb×ä¦x푎1Hð`µB:÷¤Ur’a`¹!oBLô/ofúl ²·@4G2LïÏqÙì{hAF7Ã{€‹äM±Œ´Ãò¶ÊŠ¢(ŠbWä¦Ä#7Í·€ßǸ3¦  ¬þ‹øý?FR{jO!mCÿ#Ýk#ˆÞHï„H²Ú{ 8‹˜ìß#çôÄ©H›ç›À à]¤i^ùÌçsÄ¢âƒÄLF]Š¢(Šà–û.¬Ú­›óJÄ…pÆøü5`—ÙþÞH 㬞ʽ€íÀ%cù7$z¿ò4ÉjØfl?‹ÄT5Î_QL¦’uŸñ‘È ½&†dDüŸ±Í‰ øËlÿÓÆr'Déø1õg÷]¼ËE âZ8X7ŒóÇ BZ*oCk›+Š¢(J‘³•ôF&Š¢(Š¢XŠkî»(Š¢(Šâìü?ÑËé`í(ýÚIEND®B`‚vips-8.2.2/doc/images/interconvert.svg0000664000175000017500000005660212571531237014723 00000000000000 image/svg+xml Lab XYZ LCh scRGB Yxy UCS LabQ LabS ICC Any device withan ICC profile sRGB HSV vips-8.2.2/doc/gen-function-list.py0000775000175000017500000000224412530402247014117 00000000000000#!/usr/bin/python # walk vips and generate a list of all operators and their descriptions # for docs # sample output: # # gamma # gamma an image # vips_gamma() # from gi.repository import Vips, GObject vips_type_operation = GObject.GType.from_name("VipsOperation") def gen_function(cls): op = Vips.Operation.new(cls.name) gtype = Vips.type_find("VipsOperation", cls.name) nickname = Vips.nickname_find(gtype) print '' print ' %s' % nickname print ' %s' % op.get_description() print ' vips_%s()' % nickname print '' # we have a few synonyms ... don't generate twice generated = {} def gen_function_list(cls): if not cls.is_abstract(): gtype = Vips.type_find("VipsOperation", cls.name) nickname = Vips.nickname_find(gtype) if not nickname in generated: gen_function(cls) generated[nickname] = True if len(cls.children) > 0: for child in cls.children: gen_function_list(child) if __name__ == '__main__': gen_function_list(vips_type_operation) vips-8.2.2/doc/using-python.xml0000664000175000017500000005440212643524555013402 00000000000000 VIPS from Python 3 VIPS Library Using VIPS How to use the VIPS library from Python Introduction VIPS comes with a convenient, high-level Python API built on on gobject-introspection. As long as you can get GOI for your platform, you should be able to use libvips. To test the binding, start up Python and at the console enter: >>> from gi.repository import Vips >>> x = Vips.Image.new_from_file("/path/to/some/image/file.jpg") >>> x.width 1450 >>> If import fails, check you have the Python gobject-introspection packages installed, that you have the libvips typelib installed, and that the typelib is either in the system area or on your GI_TYPELIB_PATH. If .new_from_file() fails, the vips overrides have not been found. Make sure Vips.py is in your system overrides area. Example program Here's a complete example program: #!/usr/bin/python import sys from gi.repository import Vips im = Vips.Image.new_from_file(sys.argv[1]) im = im.extract_area(100, 100, im.width - 200, im.height - 200) im = im.similarity(scale = 0.9) mask = Vips.Image.new_from_array([[-1, -1, -1], [-1, 16, -1], [-1, -1, -1]], scale = 8) im = im.conv(mask) im.write_to_file(sys.argv[2]) Reading this code, the first interesting line is: from gi.repository import Vips When Python executes the import line it performs the following steps: It searches for a file called Vips-x.y.typelib. This is a binary file generated automatically during libvips build by introspection of the libvips shared library plus scanning of the C headers. It lists all the API entry points, all the types the library uses, and has an extra set of hints for object ownership and reference counting. The typelib is searched for in /usr/lib/gi-repository-1.0 and along the path in the environment variable GI_TYPELIB_PATH. It uses the typelib to make a basic binding for libvips. It's just the C API with a little very light mangling, so for example the enum member VIPS_FORMAT_UCHAR of the enum VipsBandFormat becomes Vips.BandFormat.UCHAR. The binding you get can be rather unfriendly, so it also loads a set of overrides from Vips.py in /usr/lib/python2.7/dist-packages/gi/overrides (on my system at least). If you're using python3, it's /usr/lib/python3/dist-packages/gi/overrides. Unfortunately, as far as I know, there is no way to extend this search using environment variables. You MUST have Vips.py in exactly this directory. If you install vips via a package manager this will happen automatically, since vips and pygobject will have been built to the same prefix, but if you are installing vips from source and the prefix does not match, it will not be installed for you, you will need to copy it. Finally, Vips.py makes the rest of the binding. In fact, Vips.py makes almost all the binding: it defines __getattr__ on Vips.Image and binds at runtime by searching libvips for an operation of that name. The next line is: im = Vips.Image.new_from_file(sys.argv[1]) This loads the input image. You can append load options to the argument list as keyword arguments, for example: im = Vips.Image.new_from_file(sys.argv[1], access = Vips.Access.SEQUENTIAL) See the various loaders for a list of the available options for each file format. The C equivalent to this function, vips_image_new_from_file(), has more extensive documentation. Try help(Vips.Image) to see a list of all the image constructors --- you can load from memory, or create from an array, for example. The next line is: im = im.extract_area(100, 100, im.width - 200, im.height - 200) The arguments are left, top, width, height, so this crops 100 pixels off every edge. Try help(im.extract_area) and the C API docs for vips_extract_area() for details. You can use .crop() as a synonym, if you like. im.width gets the image width in pixels, see help(Vips.Image) and vips_image_get_width() and friends for a list of the other getters. The next line: im = im.similarity(scale = 0.9) shrinks by 10%. By default it uses bilinear interpolation, use interpolate to pick another interpolator, for example: im = im.similarity(scale = 0.9, interpolate = Vips.Interpolate.new("bicubic")) see vips_similarity() for full documentation. The similarity operator will not give good results for large resizes (more than a factor of two). See vips_resize() if you need to make a large change. Next: mask = Vips.Image.new_from_array([[-1, -1, -1], [-1, 16, -1], [-1, -1, -1]], scale = 8) im = im.conv(mask) makes an image from a 2D array, then convolves with that. The scale keyword argument lets you set a divisor for convolution, handy for integer convolutions. You can set offset as well. See vips_conv() for details on the vips convolution operator. Finally, im.write_to_file(sys.argv[2]) sends the image back to the filesystem. There's also .write_to_buffer() to make a string containing the formatted image, and .write() to write to another image. As with .new_from_file() you can append save options as keyword arguments. For example: im.write_to_file("test.jpg", Q = 90) will write a JPEG image with quality set to 90. See the various save operations for a list of all the save options, for example vips_jpegsave(). Getting help Try help(Vips) for everything, help(Vips.Image) for something slightly more digestible, or something like help(Vips.Image.black) for help on a specific class member. You can't get help on dynamically bound member functions like .add() this way. Instead, make an image and get help from that, for example: image = Vips.Image.black(1, 1) help(image.add) And you'll get a summary of the operator's behaviour and how the arguments are represented in Python. The API docs have a handy table of all vips operations, if you want to find out how to do something, try searching that. The vips command can be useful too. For example, in a terminal you can type vips jpegsave to get a summary of an operation: $ vips jpegsave save image to jpeg file usage: jpegsave in filename where: in - Image to save, input VipsImage filename - Filename to save to, input gchararray optional arguments: Q - Q factor, input gint default: 75 min: 1, max: 100 profile - ICC profile to embed, input gchararray optimize-coding - Compute optimal Huffman coding tables, input gboolean default: false interlace - Generate an interlaced (progressive) jpeg, input gboolean default: false no-subsample - Disable chroma subsample, input gboolean default: false trellis-quant - Apply trellis quantisation to each 8x8 block, input gboolean default: false overshoot-deringing - Apply overshooting to samples with extreme values, input gboolean default: false optimize-scans - Split the spectrum of DCT coefficients into separate scans, input gboolean default: false strip - Strip all metadata from image, input gboolean default: false background - Background value, input VipsArrayDouble operation flags: sequential-unbuffered nocache <code>pyvips8</code> basics As noted above, the Python interface comes in two main parts, an automatically generated binding based on the vips typelib, plus a set of extra features provided by overrides. The rest of this chapter runs through the features provided by the overrides. Automatic wrapping The overrides intercept member lookup on the Vips.Image class and look for vips operations with that name. So the vips operation "add", which appears in the C API as vips_add(), appears in Python as image.add(). The first input image argument becomes the self argument. If there are no input image arguments, the operation appears as a class member. Optional input arguments become keyword arguments. The result is a list of all the output arguments, or a single output if there is only one. Optional output arguments are enabled with a boolean keyword argument of that name. For example, "min" (the operation which appears in the C API as vips_min()), can be called like this: min_value = im.min() and min_value will be a floating point value giving the minimum value in the image. "min" can also find the position of the minimum value with the x and y optional output arguments. Call it like this: min_value, opts = im.min(x = True, y = True) x = opts['x'] y = opts['y'] In other words, if optional output args are requested, an extra dictionary is returned containing those objects. Of course in this case, the .minpos() convenience function would be simpler, see below. Because operations are member functions and return the result image, you can chain them. For example, you can write: result_image = image.sin().pow(2) to calculate the square of the sine for each pixel. There is also a full set of arithmetic operator overloads, see below. VIPS types are also automatically wrapped. The override looks at the type of argument required by the operation and converts the value you supply, when it can. For example, "linear" takes a #VipsArrayDouble as an argument for the set of constants to use for multiplication. You can supply this value as an integer, a float, or some kind of compound object and it will be converted for you. You can write: result_image = image.linear(1, 3) result_image = image.linear(12.4, 13.9) result_image = image.linear([1, 2, 3], [4, 5, 6]) result_image = image.linear(1, [4, 5, 6]) And so on. A set of overloads are defined for .linear(), see below. It does a couple of more ambitious conversions. It will automatically convert to and from the various vips types, like #VipsBlob and #VipsArrayImage. For example, you can read the ICC profile out of an image like this: profile = im.get_value("icc-profile-data") and profile will be a string. You can use array constants instead of images. A 2D array is simply changed into a one-band double image. This is handy for things like .erode(), for example: im = im.erode([[128, 255, 128], [255, 255, 255], [128, 255, 128]]) will erode an image with a 4-connected structuring element. If an operation takes several input images, you can use a 1D array constant or a number constant for all but one of them and the wrapper will expand it to an image for you. For example, .ifthenelse() uses a condition image to pick pixels between a then and an else image: result_image = condition_image.ifthenelse(then_image, else_image) You can use a constant instead of either the then or the else parts, and it will be expanded to an image for you. If you use a constant for both then and else, it will be expanded to match the condition image. For example: result_image = condition_image.ifthenelse([0, 255, 0], [255, 0, 0]) Will make an image where true pixels are green and false pixels are red. This is also useful for .bandjoin(), the thing to join two or more images up bandwise. You can write: rgba = rgb.bandjoin(255) to add a constant 255 band to an image, perhaps to add an alpha channel. Of course you can also write: result_image = image1.bandjoin(image2) result_image = image1.bandjoin([image2, image3]) result_image = image1.bandjoin([image2, 255]) and so on. Exceptions The wrapper spots errors from vips operations and raises the Vips.Error exception. You can catch it in the usual way. The .detail member gives the detailed error message. Reading and writing areas of memory You can use the C API functions vips_image_new_from_memory() and vips_image_write_to_memory() directly from Python to read and write areas of memory. This can be useful if you need to get images to and from other other image processing libraries, like PIL or numpy. Use them from Python like this: image = Vips.Image.new_from_file("/path/to/some/image/file.jpg") memory_area = image.write_to_memory() memory_area is now a string containing uncompressed binary image data. For an RGB image, it will have bytes RGBRGBRGB..., being the first three pixels of the first scanline of the image. You can pass this string to the numpy or PIL constructors and make an image there. Note that .write_to_memory() will make a copy of the image. It would be better to use a Python buffer to pass the data, but sadly this isn't possible with gobject-introspection, as far as I know. Going the other way, you can construct a vips image from a string of binary data. For example: image = Vips.Image.new_from_file("/path/to/some/image/file.jpg") memory_area = image.write_to_memory() image2 = Vips.Image.new_from_memory(memory_area, image.width, image.height, image.bands, Vips.BandFormat.UCHAR) Now image2 should be an identical copy of image. Be careful: in this direction, vips does not make a copy of the memory area, so if memory_area is freed by the Python garbage collector and you later try to use image2, you'll get a crash. Make sure you keep a reference to memory_area around for as long as you need it. Draw operations Paint operations like draw_circle and draw_line modify their input image. This makes them hard to use with the rest of libvips: you need to be very careful about the order in which operations execute or you can get nasty crashes. The wrapper spots operations of this type and makes a private copy of the image in memory before calling the operation. This stops crashes, but it does make it inefficient. If you draw 100 lines on an image, for example, you'll copy the image 100 times. The wrapper does make sure that memory is recycled where possible, so you won't have 100 copies in memory. At least you can execute these operations. If you want to avoid the copies, you'll need to call drawing operations yourself. Overloads The wrapper defines the usual set of arithmetic, boolean and relational overloads on image. You can mix images, constants and lists of constants (almost) freely. For example, you can write: result_image = ((image * [1, 2, 3]).abs() < 128) | 4 The wrapper overloads [] to be vips_extract_band(). You can write: result_image = image[2] to extract the third band of the image. It implements the usual slicing and negative indexes, so you can write: result_image = image[1:] result_image = image[:3] result_image = image[-2:] result_image = [x.avg() for x in image] and so on. The wrapper overloads () to be vips_getpoint(). You can write: r, g, b = image(10, 10) to read out the value of the pixel at coordinates (10, 10) from an RGB image. Expansions Some vips operators take an enum to select an action, for example .math() can be used to calculate sine of every pixel like this: result_image = image.math(Vips.OperationMath.SIN) This is annoying, so the wrapper expands all these enums into separate members named after the enum. So you can write: result_image = image.sin() See help(Vips.Image) for a list. Convenience functions The wrapper defines a few extra useful utility functions: .get_value(), .set_value(), .bandsplit(), .maxpos(), .minpos(), .median(). Again, see help(Vips.Image) for a list. Command-line option parsing GLib includes a command-line option parser, and Vips defines a set of standard flags you can use with it. For example: import sys from gi.repository import GLib, Vips context = GLib.OptionContext(" - test stuff") main_group = GLib.OptionGroup("main", "Main options", "Main options for this program", None) context.set_main_group(main_group) Vips.add_option_entries(main_group) context.parse(sys.argv) vips-8.2.2/doc/using-command-line.xml0000664000175000017500000001513212530402247014405 00000000000000 VIPS from the command-line 1 VIPS Library Using VIPS How to use the VIPS library from the command-line Introduction Use the vips command to execute VIPS operations from the command-line. For example: $ vips rot k2.jpg x.jpg d90 Will rotate the image k2.jpg by 90 degrees anticlockwise and write the result to the file x.jpg. If you don't give any arguments to an operation, vips will give a short description, for example: $ vips rot rotate an image usage: rot in out angle where: in - Input image, input VipsImage out - Output image, output VipsImage angle - Angle to rotate image, input VipsAngle default: d90 allowed: d0, d90, d180, d270 There's a straightforward relationship with the C API: compare this to the API docs for vips_rot(), for example. Listing all operations You can list all classes with: $ vips -l ... VipsOperation (operation), operations VipsSystem (system), run an external command VipsArithmetic (arithmetic), arithmetic operations VipsBinary (binary), binary operations VipsAdd (add), add two images ... etc. Each line shows the canonical name of the class (for example VipsAdd), the class nickname (add in this case), and a short description. Some subclasses of operation will show more: for example, subclasses of VipsForeign will show some of the extra flags supported by the file load/save operations. Optional arguments Many operations take optional arguments. You can supply these as command-line options, for example: $ vips gamma gamma an image usage: gamma in out where: in - Input image, input VipsImage out - Output image, output VipsImage optional arguments: exponent - Gamma factor, input gdouble default: 2.4 min: 1e-06, max: 1000 operation flags: sequential-unbuffered vips_gamma() applies a gamma factor to an image. By default, it uses 2.4, the sRGB gamma factor, but you can specify any gamma with the exponent option. Use it from the command-line like this: $ vips gamma k2.jpg x.jpg --exponent 0.42 This will read file k2.jpg, un-gamma it, and write the result to file x.jpg. Array arguments Some operations take arrays of values as arguments, for example, vips_affine() needs an array of four numbers for the 2x2 transform matrix. You pass arrays as space-separated lists, for example: $ vips affine k2.jpg x.jpg "2 0 0 1" You may need the quotes to stop your shell breaking the argument at the spaces. vips_bandjoin() needs an array of input images to join, run it like this: $ vips bandjoin "k2.jpg k4.jpg" x.tif Implicit file format conversion vips will automatically convert between image file formats for you. Input images are detected by sniffing their first few bytes; output formats are set from the filename suffix. You can see a list of all the supported file formats with something like: $ vips -l foreign Then get a list of the options a format supports with, for example: $ vips jpegsave You can pass options to the implicit load and save operations enclosed in square brackets after the filename. For example: vips affine k2.jpg x.jpg[Q=90,strip] "2 0 0 1" Will write x.jpg at quality level 90 and will strip all metadata from the image. Chaining operations Because each operation runs in a separate process, you can't use libvips's chaining system to join operations together, you have to use intermediate files. The command-line interface is therefore quite a bit slower than Python or C. The best alternative is to use vips files for intermediates. Something like: vips invert input.jpg t1.v vips affine t1.v output.jpg "2 0 0 1" rm t1.v Other features Finally, vips has a couple of useful extra options. Use to get vips to display a simple progress indicator. Use and vips will leak-test on exit, and also display an estimate of peak memory use. VIPS comes with a couple of other useful programs. vipsheader is a command which can print image header fields. vipsedit can change fields in vips format images. vipsthumbnail can make image thumbnails quickly. vips-8.2.2/doc/html/0000775000175000017500000000000012651721507011226 500000000000000vips-8.2.2/doc/html/ch02.html0000664000175000017500000000725312651721507012577 00000000000000 Core VIPS API: VIPS Reference Manual

Core VIPS API

vips — startup, shutdown, version
VipsImage — the VIPS image class
header — get, set and walk image headers
generate — calculate pixels and pixel buffers
VipsOperation — the VIPS operation base object class
error — error messages and error handling
memory — memory utilities
VipsRegion — small, rectangular parts of images
type — basic types
rect — the VIPS rectangle class
VipsObject — the VIPS base object class
VipsThreadState — pools of worker threads
buf — a string you can append to
basic — a few typedefs used everywhere
vips-8.2.2/doc/html/interconvert.png0000664000175000017500000006642412651721507014412 00000000000000‰PNG  IHDRûYŒssBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î< IDATxœìwxTE×À[Ò ! ¤PCè-ôÞ›4)¢Rlˆ(Š"b{äµE?D_ATéU@ªô„„Þ¶|ÌÝdÒ€Ýìf3¿ç™gïÞ½åÜ“ÍΙ3gÎQ!Ñ-€n@k >Ppªi@pˆŽ;€@Ž ä•H$‰DbAZŸq€ñ.ZðÂH$‰¤B£²µ6 +0è[p·w64O‚z©P+üs@kè 1nå Ç|!ÁµÐ5ï–ÇH$‰Dbi*“AP˜Ø<œ³ Ü‰D"‘XÊb A¸÷«‰·µS`êix6Vxî#ðS |ØNú+;ÓoïE`‰D"‘HÊ­(þƒèœ=ÀM/ß@ç[ ¾›Ø³¦2Bó4x: |Ra¯?d»# `=bÎA"‘H$»Æ‘=*à „ ¨~Ù ­S­wËhWÝÔPvü <€\ ‘H$;Ç‘ ‚€WÄfÇXX÷TÑYÿ¶¹*x°5¬h ìX< è­o‰D"‘HîG2˜€0€.—`ûp×sOÓem#»D"‘H$w#y\ @t„í[m-P>´#€, pÕÆI$‰DRGò< ‰ÜìGDõÛIûè0¸g#Œ–iÖT‚D"‘H$wƒ#ÄKû‹Ð1 ›Nn5²`è EÎñˆU‰D"‘Ø Žb4ÚŠÍGNbs ¨6å”2CÀm…•$‰D"±-Z[ `!”Ö-&D!–ùÙ!$.Wúkm-‘¤B¡!ªu6ê€;âÿ8Q’û"p؃¨Â)³dOÐhŠÐg0BŸž]fшbe]=K$‰£ÝÅKãXp*ÐÅõ´i„-X@Tb"¹e½`­Z¸þü3½:w.¹ãîÝ¿aèéâ‚úÀâ¿ÿžC±YZÇ(A²Ê!©ôtÆ£À¬~FäÀÆèøÇ"<‹¥ÑÕl[0 ~~nY\:‰Ä†8Ê*ƒ3@xd,ÚkþA` Î×®ñ|ÇŽ|»w/Ée½`óæx:ÄD­–¹Å³t)]†¥ÕîÝœKK#»S'êÅǓڣ+âã‹2>Þm3#~˜=€rH¥,©€¨€‘À«@›‚¹çBX ÔJƒÀlðR¾C™j¸éÑpÑ Ü ]3ø øa(T6:¯ƒ)0Uêd€ºŠ>ƒ2¡ªò›£‚$g¸ìQ^pųã1Q4mrÕÄAp¨+6&p{Í=€J…¡ˆÏhÒÏNðKN&gÝ:n¤¦æcÐj1<ðAz=†U«¸ž-öOŸNý#h3h‹6m" 0û÷3fñbºȦÛEmuCÙpj‘÷ðÜǤ0蜿+8 ÇÂqÐ=¹l%»zÀ°"Nø1˜ <LGÔØ¨ #¼,ʨJ6ô»\…7Á« uFb\`e5ø-öB®bÅÐSÀ»À\¤FRÁq/(6—üccÍ?¬^ç¸8^êÜ™¯wï.èâ{í5ŸžnQQÜðõÅÓׯž=Yrêé-Zàuð “ç‚N‡> ŸìlrÛ·giRºcÇ}ã)}ú°Þüš¯¿NƒY³âãç™™…KŸw‡ð”7Y%£ÖWÉ«”U(-ãaÚwýÞþU÷xÃ{á°¾èMZL±ÝÞ#£x_ñ64ž9ScÀíÒ™G»À»a°4 ÒM+†"ŒŽs÷$±DbCa•gþf•,ŠŽò7y ´¯¾â|P :wfe£F,9tˆÈwÞ¡µésõ–-œmÛ–ßë×ç{• >úˆ–€!8ÿS§¸Vøš;vçìŒS»vxß.GõL3¹½­¨IÅÂX ¼8AõtX° oƒñq ºÇ.oÁ_ûaûhaòRFtbe™G¯h¨€ß_1ÍòêaˆÜ¯_7÷¤ÏÚ™°ð8œZ ƒ£c­5BŸ÷•çƒJ$–Ħ ÌܧF#•ç½/ê3Õ7ßÐ&"‚//Ü«VÅóʃb@ðÉ'œ 99°e §Ú¶¥&°W­½>ßà0¡Ó‰)åµÐýtæØ=ŒP$„°¼”Ûý£á§ÁÏ ñ%]nÁ¡­ðr˜×rëÿ :±ý–¿ŸMЋ€±âm£Xºš§[þV53aõ>øþ2¼ØRy2Íš7'Ð+çÓÓÉ1—“CŽ‹ Z@ý:‰ãWøš]ºà—›KÎÑ£$þ â̽äò%‰7b@k1Êœp¾=fÝ[ª9§ Û ßRý€@Oà°uïmuTÀ7ä}¢àϽ÷6=Pž¸,–ìÑUïiÊ—Z÷¾‰eq„)ƒÄ?pÁ‹;˜2hÒ„%K8ðóÏÄìÚEbíÚ¦¹Æ<jôh‚LÇ·nMHT×ÃÊ•îÞV­[ãiúÜÓÕäÉtÞ³‡ãiiäÞ.Ç ³é n ©Ì¨F[ÑÍÚß¡Üe »+7G6P1eq§Ëí·€'ÅæÐs°a×½O”µ5Lƒ]› vâo»èhõ'–H,ˆ#x ˆD,Íà´…\ñ&ÁܹôNO'Û´ñbŽœ>MÌsÏÑÃß׈‚Ãà ½~å£ÛoÒ»eKŽÔ­‹o‹„÷èÁW€á?ÿáH—.ÔÞ¶I›7óoZÙ=zÐÔhÄ8f k Ë!8è¯ld1VÐ…¤âð0Pl¾xfÚ ­W",Ý #@N0b}}_ŠXSèÌ›=¢à½¢®Iyœ ›7A§pà ¸Ä—¯ÉÝ¡±µ¢3Ð ¹ðÜ!D¼€0êõªV%ùÊ’nÜ ÅÔþý—ë³gs¬n]hܘ€£G¹2{6;¯^%a÷nôz nnÜš5‹÷ÝGœtS¦ðçÞ½$F£Ã÷ßsêÖ-bÃÃñ«W€°0êŒÁwÇ“b.C~{¿D‡ \³ßÚFU; ð žáçü®(òûcžNi°¥6PH âÅx!â0ª@Í›°} ¸ë±‰N}s âšX ÷A,{üÃêH,€#,;xøœr!~T±IŸß§O»v4èÜ™ïbbLÓæT{ü€ÿ”·|»@ì:€*œý|í AU·ž°³"¶¥gcî„Ï€@«‡­+ «,¥œÖævPÞô6ÛR‰¤,8ŠAŠÈ9®†×„÷­˜u7ü MUÞtvØR‰Íü)6¿Y“ìdê(Ò Z<ÎÀçÀÔÒΰB ¾\`ü!Xü¯­䪠áp¸èÈ7Ò¡´3$[ãA…—¿Åæom!oEµ¯M)h£ùÐ%•“7ÄKÃk0)šr ",­…¥Ã&Cú)DUΊÀtÀEGÎ9ŒÍõhjNzxÍ”x¬=²Â©¤à(ÀBñr¾üŒÍÌÛaOø§"çÿ(2àPR hŽè€çÿÅæFjáöþpÎÜÈ[ºg׸ãÅæðcP- ›ëмMŒ†:¦€Â'­¡‰Ä’8’Að+bµ Þ„Í:ÿí>ðBë‚û¦ô3ŒÈS/©œ(—o<Í ÕÂ-(:]((«]3ð•^<‰ÍõWT»ÿ¤"ë0dvR‰ãH±ˆl/F`“€ °¼;Ô|…ÀÿՄݦB5³uÖ%•“þâ¥Û9¥L·tX…Û¨³Š¬-êVÐ%Qôv "’±¹îŠjSÎ ƒDò'‰Änq”e‡&N – ÖƒÃáÐö „¥QnK¸L­êeXÞ þjuƒQôädÉãÊJ5à@Ïí…v7)á;„sçÎøDFRì÷·~}ÜÆ'¤cG|}l,™€±wo|§L!lÃâJºGÑ­^ÌiF5pñ?e¯| øÂ€“02†bž)0§ž=©zî\A]v튛$&’cÚçãƒfÌ‚ûôÁ¿Z5´.f0`0}Þ£UGŒ FëÖxge‘{ý:YÅÝW´ª9ð¿0Hö@$#+P M"±'ÉC`â) ²ÝaüDˆv¦ÜGODAèEÈòP¦ ö ÊL3òVõ ½B)ß¡#¨¾t)ËúL­Æ°lŽç‰I“ˆ3†&k×òÀ¡C  -[ReÈ•v¢›_6„$(27·ªFî  žØìX¢> "`Ù2FÞ¿`½_|‘¦÷/½DÝØX&ΜI×#ÿòKúÆÆòh›6"éæÍô]¹’†'üñÇi¶{7ãž}–Z%Ý[´FW™íYŸ‰Cd*,L4bþóOˆ…®ÏÂÏ¡z9Ö*ÏV+nB@0p©üäØ Å‹W:„f”v°J…éûc(üÙçŸ1`͆eÉÆ$hµ¨>üæ€A¥Â¨œohÙ¯„rbcó³t–NH\ TdÖ"åøÿS*îˆ\ ŠÕÖ”]´HLÙJ‹9Æú÷ÇÿÃòÁ¬›9“S¦ŸzŠZ®®¨FŽ$°kW6lÈ7QQdxx ñöFSÒ½õÇ@Ã2>ŸDbÑC°˜"6cáÕt8èA¹D'¨!âI8×B‘墢]#¤1P™Q–ñUM¥ ß#³Nì¶Ï~˜6¿üÂÞ¹nÚ§Ó¡›>C€^­FïìŒæÐ!†¯YÃÈÈHžþáÚ•å¾¢y›’jõæ¹ÖRÊ]†H ¬žB)ºT ¤ÂûM†“~útZ9Ã¥™39n~Ì‚\ܵ‹„€œ  ™™yÅÎôééäÄÅ‘YÒ½E 1%Jª†ãä~‘8 Žè!011’ø®Õž3`Ö70í¼õn¹,ž}B•‹ó°¿[€td´ÊŠ—xq˦Ô¥ÕšFùæûCCqõóÃgçNb‹»ŽJ…18˜À7ßdÃâÅÄöë‡ÿš5L˜>ý EuîYjø¡&,o —ý ÆL¨"b_ìÃäM„O€À$hzÞ<MÓÌT«‹÷˜t\¿>{÷r¡¨c~þ™K¯¿NÒÙ³L:|˜ {öpiÁ"MÞ‚’ñ1XÄ’ÎR=D‰-pdƒDTð(ó:ý5øc#,Z õÊð\VnjaüØx¿3`D$ ùa”d ÙlF«-woIÁ42¼­“/òàb¦ ¼¼Äu’“)ɰ0^¿NüâÅ¢€ÖÆÜÈÎ&'"/ÓCA.ºÁ® Q'ÉrM¿ *„kÞñÊßÌp…tWˆñ~Ð4¥Ð±EêR¥Â¨ ''4ä>ÆDr29óý‹/Þ£u&N¤Ë /ÐwâD~ùé'®uN>jók:Z ·ÄptƒD™ÓÀÏ`lÿ „f çZ˜»ÂïÁZw‚ç»Âš!jÊì< lRÞ›®è‡0 tÀº»¿¯¤¢ŒZ3(ƒAPܨ62’´ìlrZ¶Ägõê¢ë ¨Õ²²  :z77TEß»q*,QRig¨¡Ç8ÐDù0˜Uš¼åLp@Ù6ÂÖÐ>¹¸ƒÓÒÈÖjqR«1ÌžÞÕ'e ÀÏ­:u¨J ›´4 ï¼ÃÉwÞá¤V‹jÏF¾þ:]ú‰ŸK÷¦“²a@ $»ÄQc sh±gCfXû04™Ÿ©pÖ•2Ea_q‚7›@Äú%, DÃæä…¹ŒH¦2èaµ§•Ø#‰â%Ù“{ˆ!ÈÉAwð '{ŒöÎÎçÅ›7ÇÝtná9se¾ÜPú½ÝsÁÅ€¸ñv±’Nî-0ZÙV“Žžiÿ~4ÔýúákÚçï: ¿'ˆôk×r¢S'š6k†›ù¹¾¾¨kÕÆ„ù~ÝÅ‹\wqA[Ò½E»ì¡Èz“2ƒ‰­¨ éˆ ƒ WGAç §»ˆö…Aäð» Õnˆhp¯ Hu‡LWˆ€„XKÉ+`Bü¼-ƒ‘£`­AÖ5¨$( ’½áš¶´U/*Fœ—,¡‹ùþY³øwÂÖïØÁ“gÎðتUJL$³m[Bºv¥¹¯/sŠ›n0¹ÇKõ²¿²qJs‡Û„ÀlZ`/D[á02’´;ùwáBFýð;23Ñ=ôm®_çÆwßq0¾ù&Gûô¡þ®]<ýÛoì<ž› à7t(í'Oæ×Ñ£ñ|ì1:lÞÌɨ(’›4ÁèP:~û-(U§çMú<[âa‰©L‰‹À$`&ð°Ò”D,7k‰V¦¸Ã“ˆtÉ?)×¼ÎÕÀˆÀ-‰ccJð£‚AðL‰ß™ãÇIز…½U«;9a<}š´¦Mùêý÷iÝ­aj5ê¨(®÷ïÏÀpäñ6`*ôÀºuì½x‘TJí¼Ò4pÕTx²ÄCmË- ‚áÙÈ’îÝ›•sæÑ»7õÑ=ÊÅçŸg¯N‡À`€Xöæ›40€FíÚQ'.ޤiÓXöë¯ÄÖ®kÍšxµiCh¯^4HJ"ýÍ7ùuÎΕ.êÙ eÞõ)‘È%0 ~@7Ä´B} à‰ˆÎAÌÿ^Fd<l®Zྭ˧†cßá$–á<C¶ÀŸm-LÑ|Už›¤¼©ƒÈëa¯,ÆBýópn¡­…)š+.Pó-0hƒ¹ÊHb·TFAQ$+”VžFL¬#‚%ŽË& ö4ÃnSØþÖTÙ8‡} ~…‹uá”4¶Ã€½O)Æ€±ôX"±[*KP¡=³‘nùOĈLâ¸ü$^àÛš”{JíÒZ’ö¶Td-%rÞ.X d€^ïÛ¨˜YimU[EÖ€©²Db—HƒÀ>Ø<l@LWH“݈@=`nO¬’)ó^ÚÔö¢þzDR-{'X.6Wwƒ[*l®CóöC0\SdýŸU4 ‘XiØ«Ö5l,‹Ä:Åæé&°0›`Mí²üÑ[‘óìºÀÄÇ€R|`JGl®GóöÎ}ŠŒg?¬¥‰ÄRHƒÀ¾X¼…X’ègcY$Öá'D¡‚7Dd¾5ÀIwèq?ü_MlÒyiUA´o[Y–䀖 ‚ý^ØÜÀÓZÁES1£·^‰Ä®‘« ì“Ç€çÞ@’mE‘Xžˆi"Dìƒ\ D×…À88ÿUù‹óA#xãY±ô–÷€7Ë_†{¢Â0ð:gàô—àb°8;|¡ÿkå‰ÈLÚ×v²H$eGöËsÀ ?jcY$–ÅØtÈßåÿ~µ³Š;É:lò‡¡¯+×  -PÎ2X„ÇÈ›§ï½6ÛÈEÍZ½×jɈ¥Ìl#‹DrgÈBöË~D—÷¹ ì­­äîi„p!·G¤6Bÿðôi±]^mŸ7 éUz}€ëÖ~x+q" * NdÁèHÊUŸÉhÿ \Wö= ì±þ£K$–AöÍ^Īƒ—ÑÔ:ÛŠ#±·€‘c Ð@d¤^~q”Kçµ2F¾)ˆFÃÉ/TQÙ€ðºÔ…Óa¯Æ¡\ôé žƒhSQ¨×€ï¬þĉ‘Sƒ£Êž‚ŠNðp1-tðBAe€~+aå_àjÅ9ðWZÁ ÛDø埔ËZx"‚r»Š·÷ÂêEPׂåÎ ócL 7M)ŠßfXï~‰uAÅa6Pñã-=“Nˆt»o?Î@b„¾h! :þãc-{û#^ðøp¤;â? HÅíH¸?£Ä[¯xxn¼̲·¹¥…q`ýpÐ;!¦^l*‘Ü;Ò ¨8¨€¯õG,o’Tž^AÌ+åš÷¾@üm•Zþ 3ÖÀð{œ×?ãÓzÖÁc*Å»‹ã¼©éÀ;à ¨}&¯‚—ËP¨$R4ðBGøã~H1‚ŠA‹J$iT,ÔÀbĈòIÈ+s+±_\}CÄ”ÏRŽÌ%/c¥ÊµŽB¯ÝðÒ!hœQ¶Û&:Á܆ðg'8Órݔҥº?¡rL?µæS`EGµ ÐyL>}Ëv™|[~éG:Cº¯ò±ºáUDM‰¤Â" ‚Ї‘Üæ:Â=)±_ Ç ”µvC䡘 TÏß­2‚ï%¾Aq˜^YଇdWH¨WªÃÕP¸^ôÎf×ÌBLS¼‡ÍV&Tˆ%¼¯M ~äu‚ÎCp%€gxgÁ-WHô†¸j W@Ž§Ù‰Fà/à¿Èòå‰Ä†8«qû¤pQÍònqUÎ_ˆ¹›ø£ˆˆ÷À{ÃQPuw§ÏÄÿ]ãr–]"±:ÒCPqqFT{û1ê“Ø¦x‡€-tM_Dä|7ÄŠ“úˆôÖ>ˆÿãD«óJÛŒ¶Ðý 7Ä4B )BŸ!ˆX' a4D!JAÿ‹Ðç düŽD"±CÜ?R¯ØX‰ÀXü ØX‰D"‘T2¼ Œž±µ •œ DVºÿCŒ0%‰D")wª –²M´µ •KÄ H$‰DbªÇëÜ%åÇS@$ÐÆÖ‚H$‰Db"ôô€­©˜â¶#ã$‰Db‡„g€A¶Ä‘ñ‰D"©ÔC,=ëikAÎÈx‰D"‘T ÂsÛ]m-ˆ!ã$‰DR!i†ÍÊìÞp¾EÆ H$‰¤Óa´²µ óx­e‘H$‰äžèˆ(s+ó¯ß¦xGl-ˆD"‘H$–¢ p¨kkA*¦xÖ¶D"‘H$KÓQ¨¥¶å°gd¼€D"‘H*÷§sã’‚Èx‰D"‘T*F'™ %/ ‘H$’JÉ£ÀaÀ×Ö‚Ø2^@"‘H$•š ¹—­±¦xmˆâP‰D"‘TZ^þ°áFwdžB~’ñ‰D"‘ÃÇÀï8¦ ÝXˆŒH$‰¤TTÀ×À€ÚƲXS¼À‡€ÆÆ²H$‰DR!P!FÒß+Û.ˆ)‚l-ˆD"‘Ø3Žðƒo)´@ >P pª©@‹èXÎY6’±¼ÐK€xàù{¼V(ލ¡à‹Xâ¨Gèô"¸ï4p÷)Ч€©ÀƒÀq+\_"‘H$B00 Ø€èøehYÀ`ÂxpTœ€UÀ§wxž+0aP\¦l:5"Œ‚o€ÞÜ»[ß/°¨z×’H$‰ÓX‡©ê˜4È€z· < ê'A`:h‹8#b ÿkÎÝ„3°±,±4jŸÉ©§*YP+%_§!©à‘Sô±\þÃÝuæ2^@"‘Hî‚Ê6eÐ ø1¯¬à¦ƒ.qÐ-ú$B‹tp3Ü~ªN'Ýa“/ì¨×€g³N ÜÓ[¬úå°1Úþ¨ˆÏ«ÿž!ou‚ÊÍ¡Ûu¡ÓŽ)P-·èËǸÀÎ*°Õ¶U‡¨*f¦ïŸ9eµ ðð:°¼ ÇK$‰D¡²ÎÀ{À‹äëÝ‚§Ïä+ॿóKf«áÇ@øª>1_ƶxÑ™9 Ê*`°: E¤þUÊ{åÀƒ`Z4ʼ»[íò†¹õà¯ZcáŸÆ‡J8QÆ H$É=P ‚P`%!ÞVOƒYGaÒUËÝb…?¼Ü.˜\ÜQÀpà¨åîasª ².jm€>€ œõðèYøø,øè,s»(W˜ÒÖÖ£ á!˜|¥ tˆxùˆÒÅc€$ËÜ_"‘H*Žn4G¸»ƒÅ£Ž> ç]xJC¯‚i a~3Щ‚QˆNÔQðG$ö Ï+Ð ~ÞiÖ¹åŠj0©Ä{(;>¢SÞˆDJÛ71!‰D"¹ Ù hŠè(üÀEŸï†I±Ö¿í_~0®;$»"V$ Æ1â BÙ@_ò‚ýÅá-àZDÌ…%¹æ ƒ:áÊŽt`2^@"‘H,†£!À~ ¸çÀÒ­0ÄëÜ‹á' ì7<4 ;%ÏWTÀÀýù»j'Á‰õàQ#ó,5Ü×¶ÕRv$=Áœ‰D"¹Gu©Ü2 ¸êà§-0ä`(¿‘k7AÕLDYáßIy*2ÓÉ3Ÿƒv±çÏ7¡\têªl3yüÕX1"‘H$’»Å ‚@G1 }'Ü 1·\έõ-øa h @òƒá*"­Õ®Ñ°êØ· ÞÙ[B QÕõ¹°l¯%<>.¦ÀEDæH‰D"‘Ü#Ž6eÐášw†a§`e¯É¯ IDATå[ S›Àç”7÷!–ïU$4À^  ¤Â‰s d©!ÎêX1sœ3´Í®Ã‚Ö]‡CŽGð¸õî-‘H$•G3VƒÁ/ NÿV|2œòD¯‚FCà| p h†pƒWÆ!ªß­ƒ'Ê!0³0G<¡vVÁ%Ï6‡ùí™ [áXK<%‰¤Üq$ƒ øPÁÛ[aÆ9[ ”Ïòê0ÚŒ÷ "Æ¡" N !â´#ïF–j>ñ¦¥‡£l-‘D"‘Td)†àY@ÉðÊ9Ê5ˆ°´öÀUhvÙLΊB ¡Ø|ã_l®ÇÂA†OšVnܨa ‘H$’»ÄQ `´Ø¼ÿ¤tf–y{Ô´<®+PÏ :°ÊÜ|í0"›ë°p{ù ¸å â±–$‰¤2à(AOÀSÕ™z ›¬*(­=sܳÓ4C¬§ ‹¡EACNcsýÕªfCÇóмC­ ‰D"©48ŠAÐ[¼„$@£T,4 @;n5,s=÷\h£ÈÛÇ:j°(m©‘QXi”ïä„qâDB´ZŒww¾ÑfòšWJ”H$Éà(A[ñÒâ2EtxÆÇó„¯/š¢>/®µo÷¼y ,îóZµpþçddðLv6ÏݼɄŸ~¢Cñ×lgŠ#hkUmXEFïtèžHôuã÷îMÕ²kj>>¨,`¤§'ª;9/¿º¤È«E¬6H$É] µµB |kè( àê þþTÑhòF¡eB¥Ê;¶Ès–,¡‡«+Náá,ˆ%»C|zö$°ø{´ˆW6? ±¬²Ø€Fâ%82êÌߟ*y{Y1*¯¦Nþ K HwGȼýί!‘H$Gðx":W <‰"æšU*ôÊk6lþ»w3(:šq§NñÀÛoÓÐì<À¬Y„GF2æøqFMœHˆéó°0×­ãtl,€~ï^?ø€bZš_-¬¨—»Å xè&Þ©ÓbšÉˆ*°¿];<·m£_TcÏãÁ híì,Ž3ým}”Ó§}æ ΚEƒ;¸§M%Mu$‰Dr‡8‚‡À+Ó/ƒ"F™*Uñ£Poo4K–ptÏZ´ÀgΆÆÄ²p!—T* žž¸÷ëG½qãXÕ«óæ1â̾߹“¤3g¸2i]ÜÜЬ]Ëå-[ŠñGºÃ aw³™ÀyÀý^ÞJü€¨"ƒžባðð‘%°xƒ €Ž}|Ь_Ïù-[ØŠûܹ øè#²_|‘æcŸzŠ6Ï<ú°0¼>ý”ûoÜ }þ|¢Ê&®»)K¢W‰‡I$‰¤XÁ pÍßôÈ¥h·³¹ë¿Àç?þHLõê8w»;ê³g‰<˜º ¥RaÔhPˆ¨(2÷îåæÀ„MJ³;Ù>bë¾úŠŽ=D›©SxëÉ}ÄÆ?FIФSÁK­`QWÈp…\'³[ŽYN G‘5ÅþnêÇ×໵ÐáVq')ÆWoÜÈ}û¸Ù­¾5jàrø0ÑݺQ8h:öwض}; Û·“Уû{Œóçs¡l¢:›2RºÝéCJ$‰DàAFþæ-S‘¨Õ·Mä1s&_|‘þ‘‘\NK#+(_½>ª!#ƒÌ¨(ÒLÇ_ºDB½zTôIIèÇŒa;°½fM\çÎ¥ã»ï2⯿øìÔ)Ò…z?? ÚŸðelj§\ê,b¹¤=Ò8 6ýoÂ#»à•“˜SÚ‰EéxÜ8B¾ø‚Q—/síæMÒñqqÁ³)ƒ½{‰7wö,ñ]º^ø:Å“i2´ÒJ„ðØyIˆß–hàpH·ˆŠ DMs}z¯Ï‹Ïè1„—TR2!@còõé†Ðé-Ä÷Ñ\Ÿ÷\OÆ ‚”üÍk®í!(vÊ`òdºÏœÉÊyóÄhtÃzxàT*Œnn¸x{£NIA€Ç­[¤¾NL cDz-#ƒ®íÚQõÔ)R Š04|ö˜ë¯½y œ+ v= Á%˜s°¬'å!xé%:-]ʮɓÙ0>í È«é`Ç=:ZwÁÁx¤¤Ü®ãâI3yRJë—ñ¼`?°¡ÏhkWÑ Š£Ëéë–ñ¼,„>ÿ–—K>¼hÁ È®ApÊ—¢c mÛR%9™¼QîéÓ¤êÔÁ0ôëGµ.]h~ägA­F½`zˆ¿;u§S'š=ÿ6•“üöF`ðbíÛo3jÂú$%qkóföiµh}f&9ÑÑ\®R×äd^ÖjÑüöÿ½v«Z—d¬§'^F#†øx_}•%.×ÑT6.cŸÆ€9§ÅK\äÁ¹ÔÎ9)‰›¯¾jÊn(X²„íÿý/[¾ý–1))´ÊÌ$sË5lH ×éÐ%%q3*Šë ¼äìŒv×.޼öZ~|AÉüS²Mq$gîð%Ž xñ#˜¿;$ú_…ž Ð/©äʨgÝ`½l­[ƒ Íè¡´}Àò¦Ø5ÂxðÏß]+ú]…^ Ð7 ütÅœœrÏ×çö HwB$këìDtŠG¬÷v…xx¨š¿»N²ø~öN€Þ· j ú<æý…>ÿ‚ -0Pi[FÛ‰âÏÏÇQª¾ Ì€ª‰pó“»¹€»;šŒŒâç¬Qët †ÛG®®¨srŠþ¬ 'ÀÙúÙ˜’µ9Mó¦ÀÏóÄ ƒ{£4«Õ¨œQeeÝI>‚)máË‘O‘r^R’OMDéne ­Æ½.ÃôHaÜ ™jø_ ø²>œV–;c>G¬ÌɾW¡í˜ºÀ £x«5@_EŸ½Š 4.™ 5|óÃᜩCÔ#F·3KG%øh-Þ:`À%xùtM¾»K¦iàÿ‚a~}¸è£ìÔï*­Ä¸,G1º“—fílxÖÂÍeW¨;tNÀà{[KT *ÄTLu¾ þ°SW^‹GàXS`#ÐßÖÒH솈[åG±ãUøò(DXÐ3÷Cux£%\5-w= ã.çoíœaÀbòÒ™w‹…/A3 Zþ_Ìj ×<”û€á@œåîa7<ˆ˜šõ?µ½.‹ïgC hæ…À;- Þ´´}'0ˆ/î G1´@ Plƒukl-Ðí<Ó¾yLB ;âKàY¨r>(-Aùs֚̽x øÖÖIì‚'€ÿ´à‘ïý /Ä”vÒÝ‘®†‰-`i%”à ¢(˜½ ß “/ xeÃGà™XëÜ*Uµ„õ}^Bw§­s?›ð"^B U²`î>xÜJFÏ--ŒkkLv#KÞ‹Œ·ÒXGˆrÇ€˜ì Wàñ]"˜£}40ñ!H÷þþgE]X’ÀSíšËÐã:6×¥y›ÔN5@LÀ(D´wB9=³5™Œ¨¡ö-ؾ&`5}ºàÁ«à“ [‚ÁP¬n–Ó3[“—€Ù€ ÂnÂÎMÐ+ «éÓUc®€kü ?„×åwà¶i GñÔF¬v‚VòÍ6–ÇŒ×[À‡O(oº;l)Ͳè5.CìPm- Ú Í„,w`>ð¬­%’ØœÁÀJ@õaÛ.5w†åøËìN@,bùîµò»¿Åü ¨¡Q›ßm€'¬@x'ôè×CäoiLÅZÉñð.¨ŒðóZxȦ‘:ö½µV#”©-G4@ÌÓ<aÂbXøOù‹0¯L› :`"‰I9ÎgZœ!ˆÀ•0 âC ß:X»º|D¸o0¬F {‘ÄdWùÜ_b‡¸#ò¹Bç‹°k‹®i¼÷K\s†Æ£!ÉŠ‘wÄ„7Â+è ½ÏÃæí¸¦ôí ÍGCª+"hôÉÒΰüúô‚A§á/KüVY@ŸgÝ!b4d8#‚F§€ãM˜Ø„X“G›Ãµ0¸ç¾?h¯O+bÙL oT@Î!7[BšhÕ.ÃÎ…à¢Çê:=æŸ …4_e_ð2"ÿ€¤òò04ø}•sÜ@qÍS‰:Ø] ‘|9# î%`0hõðç:¨f#×váæ“ WŒp á\BÅøM}è.:X³ªæ`s]bÿ¸¨†ÃÁÖ@ªÚšš°!鈵–§„kù› 0`äÉ/¨c¥öXxs*äº!âú"üTt‚HÌ\Ÿ:'8ç†ÕuúK èö\«‹øB'#²{½Ž˜ŠqÔﱤdTÀ3b³ûyhŒÕ¿‹wÒfž‚ªéˆïç$k)Á‚¨Ó/@ß3Ð8›ëм½s<3u%&ZK ÄLÎA'¡Ž©`›´÷‚[6¢ÂàØ?¤ 7ý^@î‡zÓa“©’…Û1whü4,z ZDÇÙ1Ïí\6#¾ägÅ®›AÐõmxͼr¡[®êãgBrbÊå1DeµtÄÎ@ÄšoSšNIå¡ yÕõž9ŽÍ` 7Ï\xJ‘u âǞ鄊ÍçíPŸUs ¯òÛÃxì¿ÿ»õ%;Ôg`ô4õO‚ãN˜È@ÌßÕZ@J5ø¥'ìÐ@ç(ðµÀ²x-<Ú¦Oë¦*jÙÊì ÇbtE¸•†!*Ç­ÚÎ þéKjƒÿ%h–‚E\Zï7€ÑS`w0jÉýˆhò ˆå†:D\ƒ"Káv*FH‰exè Iðý.lî†-ªUKƒZ ¾£›Ëxí•€öš_íÁæº+ªydÀ/ͱ«±ï´ÆÓ¨Ÿü‹ÍuWTÓdÁïM_`¹½[X– `8H3l>ƒNÂÿ‚î°ýé}‡B­Oá÷ñ㉵¾„˜®¨ó…e¥;"»âýˆ‚GŸ# Jµ&o Ð…V0î¨7¦7WÒÜ¡N/:Á„ŽPý-xã ˆ¯£Üÿ7 ðw1ò-@¸:W!–vJ*½ÄKëK”È* ­‡ª;;¯["ø™rdô¶Š,‡¢Ï¶ÑXAZ-ÆÐPœÕê{¹Î}×Á;C‘·‚賃E¿ŸÁÁ8Ý›ÍÛÈ«à–¥ÈÛÛQÊ—…Ÿkkg“ ×ö mÚU¨{Zž…ÖW¡K<47+‚rÁ þ®kÀ¡úÙê˜][,^ñ¼ "¿Fd3¹?M£œ³ˆúðoƒ1.¶†9­a^*Ô: MOC«ËÐ5Ú¦€‡Rm+Ñ öøÀžêp°œi ±Aïlvï£+»,Y'w ¦ˆ~GdˆûâK/qLœF"Ðù2wñ·5Šê‹ 27ÃÍ›¤,ZÄ¡Y³òóæ«ÕðÕW´~ðA"¼¼ðÐëѧ¦’±f 'žx‚}¬XA÷þýijºNBÉ_}ÅþO?5ÅÛ4½ 7ÚÜã3[wÄò3 [™õ¹|9] ¢9@V9QQÄ¿ò ;·l!ÑtLXnß}Göí©o0`ÐhPGGs}î\ö}ó ÑññLððÀÕtóç¹6e ;öï/œ^W 4Š…}áØ·>}¥èY¢>‡'ðÿc¸ߘïÿ÷_†ýó—^x#j5,_N·iž›‹ÎÍ —˜n´lɲ¹s‰ˆˆ ¨ukV™Ÿ_§nÇŽñØÐ¡üºm[qiŸ€WáH] Me2’n±ËÕ‚áV ‚Cý !tÊT‚‹ã&˜KÅZg\VŸý(þùŒˆ©„Ÿó¤Ïí!Ç Îwm…Ùáš\0ªÁPÜt•a|˜–0Þ¼±oÆ|D\ÁXÄß\âxÔ#oN¾M<¥”u- ggÐjÑ„…ñµFƒêÑG©=cƒàÆš5ÜXº”n={ÒpÒ$V­ZÅ5ƒz÷Æïƒèæâ‚13ƒ›šýû‰|ä¶j4¨ž|’ºÌ øæäIÒ n‚âÜjh¹Ç·8 È›“oWf}º¹¡9tˆ‹cưÙÇíW_ÑíÇ$~H}|ÐîØÁ苹Ѻ5ßžLªéüiÓ¿y“”mÛJ›F­¯ +ÔAQ\CŒ k=¥6 %¸¹ÍÈET1û±.¿bÓÁc` e{¾\Dþ‡@bêä/n+H¢w*ˆEÄzL‚•{®ãÎŒYˆˆÙ•À? Fn‡#4³íÍ*UPoÚDßk×xòÆ &>Ì“{?4çõëésõ*ÇÅ1á÷ßéT* F#ÄÄEú¬Yœ¼u‹”nÝ à:bmßz‹ Ë—s%'½N‡~ÃnDDð[f&:å:ÆÜ\t¦ë¼õ'c“&xKº]f»C‘Me„ÖIr-ù%­®\á±ÄDž:wއÆåÙu:ñìÇŽ‘2okÔÀß× `˜9“Æîî¸ ÂÚ“'I ·n‘óÉ'œ½ÿ~¶šÝƒ”²cbÈ8r„äÕ«9H•ÂrˆVǤϚå¦;GѧS®’r½X·½J•ç=(¼ß¨Ra MšàIÜ‘#$†ÌLtsæp.=Ü}ûH:wŽËÓ¦ÑÄüü¡CiúçŸ+éÞ¢ÕÊÓgeóÆ€DÛ®¼W#¾dµOÀ a$¤!2cE#:>Ggð>bº ê.ο€Èt¦d;à î TAtô·ÆÂyÈ·j-ÈDÉÔ•À«ˆ©‰ãà%^4¨š3{6í«UóCed 5Š`À Vcغ•‘qq$õëÇ/ÙÙ ¢Ê®r-ÀÀT«R¯ãÇI Æd4‚\¤ãT¥ÂB•3h Õ¢îÝ›z—.·z5qâÚ>¦÷Έ鷹»ÿ+kâ'^4z(œ782„€±cé0t(K"¥W/üÈ!_‡FF¤$RnÞƒ«=q‚KII¥'eëÓ‡ÐêÕqõöÆùá‡i»j‡L×-ˆiÎÛ ‘Tç#ì/sa5ñ¢1À5-T/éùj5ª3h`¾ÓÇw“A°mÑsæ0꯿èµiQ¿þÊåk×òuúÇ}ê)º¨Õì2à¾û ÂölNPêôO¾>+»AP¢Ó¶­6åA`ÂsrÅB×LTZy³Wà¨(±&`pqA忆Sƒ¸mØ@ÂüùÂ=l!!´iÃOÉÉèãgŸ T­Fïä„Sb"ϨT¨½½ñZ¸MK–p ÀÏçôt2t:ò*ÒíÚÅP??¼^y…M«Ws]¥Â€Ï°aâ=8ÿãljCžðYcØf&÷ DÀ±—Õ5tg¸Š½M‚‰P+ž<æê:ʨѨUáµg7W¯Î¯à¨RaìÐF‰‰ÔtrÂÙ`Àðøã,Eq{{ãE‚é}ø~ý5÷¤¦’Ù®]¾¡Ah½zøjµh´ZT±±$SÀ¾¯ Ìk»Â•jDPó-ìOŸÊ÷3ÇŸÎ×çÓG`DÔÅ*• õС443RñôÄC Ôþ9ç –>öï½Ç9spٶñ>'ãìÙœœ6þÏŸoÝ+¯À+¯°½Oü¿ü’û¾ü’.²A¥Â˜™IÖ®]$îÚEbv6+–,áño¾áäÁƒ¤ìÜÉ…çŸg@Íš8ÇÄ•˜Höòå\ ÄE¹¯„§Áô÷ؽ›DUóæx>ì ¿oÝVX oõóu”c—oÚBa¥0øCè³ú ¹ÃO³‘¢0\>Ї ïûSˆÛö ðí·DMJLx8¦D{,\ÈÁï¿çÑ7Þà‚N‡nþ|")SV‚â"¹²J 2˜Œ˜&p4cÀœˆÀÅ•ˆ8 IÅåBþæ?¾“'S«}{¼t:ô›7s-7—½ýŠ\ML$é÷ßéíãƒÚÕÆ#ˆÛc YYè,`ÛØ±tóñACÆ’%lyùeø!ÍÂÂpõöF=v,AZ-ZóÌÓç®]©2`~Ÿ|Bó¦M ÛºU ]†ú¦©·Àaò–£ÙfÁ¯~‡½ËáÍ“à3`~=D µã®]$ܺEš^Ÿ÷ìt¸l±§NùñÇt o¿Í±k×Hؾ1ãÆäãƒ:4çN6? fM<»v¥ÊƒR}åJ¤¦’¾q#×òÑêááøÿöÎ;<ª2kà¿ôF-´ ô*D)¢€4ÁEEQuYXuQE° ¢« Ÿt‘µa¡* ½÷J¨I¨IHÏ÷ǹ“ !eR&Sr~Ïó>3·Ì½gÞdî=÷ÔZ&Yw ÿö¬iæ˜ÿ-lùÆ–ê•wöÝ1‡¦a®hN›Fã·ß¦Ah(%¼½aôhj„„PmãFN›ö_¼˜sׯscìXº¯[ÇîädR²8Wã”? µ(Ï"úb?QcŠ+øÉcÖ¸Çä<ÒÓ¢$llØð &Mâ__¼H\»–]†ß5­woæÏ™Csçx9-´Ý»9¼p!gnÜàöùó\ÀÌOýæ›ìíÛ—&Ï=GÍ)S82b.^äÆàÁ´;–G’“I¼|™¨™3ùaÞ<ÂÔË—¹V·. —,a`Z\¿ÎÍwÞaÙÔ©¦º'*‡?€dâØ#‡Kš7l „>éñCxLžL¹s)˜Hò‰œ=šµ@Ê•+\/QCݬ IDATÌæpòdÖL›F¯  Ü#"H cîW_ÑqÆ ;—€˜n…‡sþÙg™gúÜùó\2„6C†Ð&)‰”óç¹2`³/^4¹†Ì9išÏýHÁ4{d7òÝÜ`} "‚‹dJ;¼p¨ÈHn)—.që™gh7f yyáMôœ9ü:}:GÌ?³t)ûö¥õŒìÈ|¼ì 7Íçagm¬XÆËH_€¹+=ÐéñFâ *¢qŽÊJà!h¾v.¶µ0Yï ¥Þ€o$Eù3[K”ë€û!l'l^fka²æš;þG«1©b¯lZA‡Í°þ‡\÷¶ ¼ êF*øcê2(¾ü)E܉⧠€Ö+pŒ –‡jÃ5Wò]¾Õšã¿5 eÀL^»Åï@]¸ 6Ÿ»¬Æg!†2`&¯ÝbÈ·'’M±v6>­c(©ÀZUŠ'ã‘N\c4(Æh\ã²H…øð^=ˆv…OjBׇaIEòÕ£¤°Ç↬ûcÖ›ŠBa1~ð~l>wYo›²þý—‰ÿF^n”†O‚±ùÜe5¾7Íç: R‚âÇ$¤`w¬SÈ1ż¼‡ówuÒHo/þqy^!;ƒLõãm8¶ùÃn£ßÂ5Ñí•cÀfy;¿=6Ÿ¿Ìcmi8ØÀÕ^c1ÌÙì‘·³ïÃæó—yüTŽ™Š!Íûï'­.o­… &—}‹¦zå‘z¥m+Ž’ žH±)#ý0Ñbý¡ËzXmÊ¿¶ñx¹$»#ñ)öü–™äåTˆñTkóhº æíËÀB«Í@ábÌç‘ú0·*6ŸCóñzWé+CH UŠ.H¦æH~ìíœw/¶$ õV qöNb!ð'½H‘[’|!››bT‚¿ï5dý2wí³[V ]FÉý ÖÔîÙÆóùyuØÞÊñ}È*ûÀ.Y‚t…^{Ôh—cóùa-ØÛÌq †`ju~\&Eµ€~ÜÕÀIÉ‚ÈEñ$?ûPλ+ELÒμÿq?Éž°Ã†‚ôû6ÑîÐkÄ”Dò䟀ŒòÇÀ!àIˆ €Ý©0ø(6Ï‹ÐÿYˆóGú“Œ@nlހɭ5Dþ&ÂÀãØt>O{Á㣠Þqi<‹()ª89.ÀL$µn äÞ`DIç,´6éÞ¸Žüu_T P$mï1à߈ ìº1Îa ·# ËElvÁíð8oh,?Fú¢ÃpéäÚN†§áþËØd.SvÃàt]D xûk •'‘²&p¬ø‡{£°Ù|ÞûDÔB¬l}0 ÎT…Àyq¾Bº ƱžPì…[À¤Ôñ3HÞ{|ŽŸP¬A`:ð*¢Œ#£Y Ò’|-’B[ ¶6ßcÐ6š"¿à>ÜþêlÈö0§Ðg£hXd!U†M¡ÔQhmƒùìÔ¶v0dz Xdݯm5V½!-þl A¡ÙuŠ|>;> ;L®¬W€ïÍ…T…À9qC¢š=¡¨2PR€_`6ðmÕ1¥PñƳÔpäæŸ©Æ>ý!µ4¬k'¡]$Eª üÚËçG`”±ÍIFæs ¤–„uÍÀï(„‘Rtî ë6äùù_pT¥õ1H) ¿7ƒòG åUŠd>“€`CCžyÀ¿2 © óá†TïJı|möŽy\ÁE4®Àšx å´§ ×Zrÿ_¾ü €ÔR°®5„_‡Þ§±êÅö¢Ü÷$lìjȱ1Å&hlÏ5à` ¤Àê08 =ÏaÕù<ë íž‚í 9~þZ…üo „äø­5D_‚‡ÎcÕù<á 힆=í 9þ‡Äµ¤fPK;HTk4òtr×\)0UØ‚õˆÛÑ/Rö„ â#~ ±Äü‡;šÄXLmä&RKëmƒ…ó¡¹ên|V^{®U6V| Á¹2yê#î²ê²Øp,Z ­ºüAmxk$ܬ`¬XŒ<Ø8S0tà05xjö',ùêZ!sbJ(¼7n•3VÌE‚³TVU!p<³Ú%¤s¡£š*/Ä—]xíƒPt¦"YãH/8”oÊ#ñÊ¢gt[Ÿ¯Ê…\û{9ßöu€4D1|xçTÄ+"›dÑ3z|³ÖCÅB˜ÏŸaB_8x/r_JFÂwqÎkYòðf<µ{Ý„ÞËaÖŸP¶\¼ßW„? GÂŒ‰À$6[T!p¼ÂÇ‘@¥hxém?©J¦äÈ…?)©½¡í¼„Xüe•×-h½Fn„!çsølÄ»Â; àûör¡M5¹\!-Äÿ*,ÁíWäúòSxß„6«á™M00­ÓcÝ`rCXÑ޵FŠä€¸ãž¶–àvŠr“ž”U>סí*xþoè}9o‡»éo7†:À‰{ E$îfâöÌUŸÀH»Íñ6–¥8Ò‰Ù˜€Ô‚W,£*5~/òTm͹«Œ<½FÜj¥.@ƒÐà$4½Í£ J¹S™§ˆ…¥(ç«:RJ¶ 5 ö/þ”\l F”¡‚Ö(؉Ä<•(ZñíŽÚHFMAklE,V^E+¾bK|‘Èë7l-ˆÈoðÚ!+<óýY¤Á–-/þnˆ/| R¢ú&9_`/?/#vʸ]ÍHýŽœæóøjOÑŠqÓ îí*"úBúµ— £O(Ò¨:â"X_´2*ŠRT¸æ¾‹R„ÔEªŽB•gfOà.iBðs0ìòEnÌE4’`ݺ\ "± †|_Ë‘80TP§Fû!ÉÛ…tQœ—¡@kyûÊx|øÇCŸŽ’F‘*å`ÉðJFj]4Cª`n@Ê¢6CgìI¯(Šê2°ê#‘ˆÉVq^ümyhqvü.«S\àã½"‹V¤[nP§\2.žEkÎ+J±B[µÚžfHààÈS™âÜŒz{*ü´*%iàšm¯AhnÍ yÜpƒvÝ ¼¼™Œ¡Æëv Ñ:Ó (н¡ÛÒiüò8ÒFqn<ö¿á¡C°òOÛŠsÕZö’òÆA×¥ò_µÍݶ”NQ”¢ÅÝÖcZß"ål·ÛX¥hxi³ LØøñ­…þþh/Ø´*V€¨P¢ýá¨B (Å *ÌW¤» ‡ŽÝé@×UŠå¥öE¸/©haa@aí¨Ÿ±ì–ݲöG-ˆŠR¬P ä\·Ú#fÒ:H•@o³}’€sHû½À_ÆÈc³0Î3Qöç[jÅÑp·÷ŸÀzÖÒÿ,j…X2¢ÿ£ŠRl(Î ÁýˆY´àŸË¾@°1º"뀕À<$wÛ’ üýHûâ^ÀÁ|Ȭ8.µIwï¼Ã1Ó6WW˜=›V?ÿÌ™¨”õÿô¨Ql‰Œ$‡ Ý/ƒo<Äz#Ê«*ŠRL(Ž AOà ćoFåhzŲ5â |"x¤Éu;ÒΔ€“~°§ œ €4/D™èCjÁ/ û }7àÄ|Ü*ßL±gêË‹kt¾Lí/_æ¶î Ò©Y3éc1~ß’ FÕÏ?§ßÉ“\ŒŠâVÇŽ¬4mswÇåðaïÚÅ™F:p€óðWæc´lIÀºu Ÿ9“µ'ZjþØ–Þ l#½¢¢¢(ÎŽ³+®ÀTàYôO€7öÀ¸3…Ÿ`1¿"ü³\ö5V$OˆB>¡âX| ¼¡ápx‘¥Ú»—¡¡Ô¨U‹#"H0ßÖ®¥×¬adT×êÔanl쮀ҥqß»—'÷ïçl÷îüa¹¨ÃÛÀ׀ä»:Eqvœ9íÐ1ãÊ@ã˰ãWxå¸Z!ÕkèyØ÷+tž„Ñ£ÙšœLÚ!ì›7 ²0ó¾†Bî.xáj Dû!C˜{üx~nêJoÔÍ¥(Åg´„!q@ØYøy#¸%c½ªpfcBm‰!µ .-ƒ~‡ ™F“^¥N)¦ã½a·/9ü @…‡¦õˆ,KN&H<˜ß*W¦üÔ©44ß×Pî°¼õ½SRHýè#‰ˆàYóÑ«åÉÕBpÁÔèèˆõ§EQ{ÁÙ,žHá¨xþ÷xäs]˜¤%àÔw`œsñ6hVUf«è¢‘G±3öÉ€;,¯Íöe·ãÙ³Ä<ü0Ÿ®_Ÿñ¿rå ñ:ñßråðÄÌÂ0z4?FF’`¾îÿ`¾‡GÖÊþæÍD“£…â¨/\1)»,ûjŠ¢8Îèö*ð>¸¤Á·?CÿBH+,(»ü¡M?Ht¾@úÌ+Å“M@[h»6}gka²f|SxR®»ù+Ï­(ŠâL.?D!º…þ(7An£ùufzÒÔ°Ê·W_äegCˆvÅæÿ›YŸš²n@•E)V8“B0(n©0uVÍ&ÈëxoøÝFÒ_¶æ$(vQÚ:¡¼Ù›ÿ_.©¯5„FæÃ¦’p4ÔužçAQ;Ä™\{ÆÐþü¹ÊÖÂÜͰ{`~+à*Pî,2£~zBÙH8ÿ.xåšq`=\¡þ(¸PJ]…8¸Y¸†¤ÊjÚ¡¢#œÅBÐh,oŸ<ˆmŸ¼²1žxHb(Ãý”bÆÛò]F…aS÷€WúBŽÁ•ʆ2RhÎt¬(J8‹BÐE^|ãታØÖ›¢Ðâ:T¿bÈÛÙ“ 8ÛeòvQOØ€MX¯dØ<¼â ùR€­ÀZ$+BQ”b‚³<´——gÁ=Å’ŒIµèh¿ÿžK¦uõëãûôÓ„pé1+VpvÍšŒÔ///\G&¸eKIÙ½›ÈY³OJ²´ aË3pºÐ1ßMq>^º@b)xô)8ôØðæÛ¯'Üö3ö H`á$à¢S¥q Aãå2>=õ$Ø´üòËïÞ͈°0‚nÞ$¾F J.]Jïÿü‡:@jHÞÇŽ1hìXÚº¹›ŒI³Ý»éké9¡¹Iù¨ƒ*Å“KH›là|0t©w•6V´h½ØþxÐk°øhì6ï‘Þ)TQgÅ,@My‰\è,ÁT>¥Q#ü¦L¡û‡²j„Œ±üÙ¤ @ÊâÅtŠ%¾uk–ݺ•qލdù9›Ge’ù˜…²*ÎÇ7HUÍ—`G;èpÖ/-šÛ&Æ7…YÑàâíÀ H°« R‡àK`1ð<°©£ñ1«(N‰3XHWl‚b°ðiݼ)ÌèÑ„^¿ÎÍÿ›½æû\¹BüªU\©^Ï–-©3u*nݺ³«ÜÒ¥œ·ôœlµ]¥¸ó2¢»@³ápÃânˆƒ;À´ç Õ 8 ôâÉ(ƒl")ÞFªöǹ2”EÁ9¿Œ·%M%\-¦¦0©!!”Žˆ 255ë}ÃÂ(åâ‚ËÚµXì’ÈzT¾m&·š`•`(°D÷·…:aE VSNyA£Àâ' Í8€¹š^³ãð Ò¨«?°èPàPÅnp…ÀÌ\Ÿl±¿ÕÅ…4W×tÿlš‹Kú±²¸»ÔŸonÖnÄ4?xHƒ+5`À[Ðõ¸ìF¡Å ¤¤Â³÷@ãwà@[ãÜ Oþyéjx¼„¤P®"=åWQGÆ‚˜Œ·Ñ¦Æ/¹ 0Ì£'Or¥Z5 á®±iQii¤víjI§¸œÆEó@B-ú¢˜H&ÝËì «úBððpw8X‚|ÿÏ]w…gZC…·à‹ç!¶ ¢„LnäSæ-HvÏ'ÀR`>RpKQÅ‚›€‘C}ÌŸ<(&—ÁG±ÏßßO>¡…ù>Õ«ãÙ«å#"ˆÛ¾¯¾ÊýeÊàf¾ÏÈ‘T³ôœ°ÏÜMp E¹“_úÀ§@2Ä•‚_ƒÆŸA­qâ÷ÿÎwÂ?x¾%4} *Ì‚/GCt ã« ‚÷Œý ÊO@#$aƒqÜ’…p\EQŠg Ú 4…ÞëaÅjK>°s'Ï#ºwoV¼ò u&OfÀÉ“œ9r„ ø7jD?æ—I“8X«%V¯æ |wîähRÉ RãÖ-â5beb¾Ü>ì‡X5ÀÒúJ1¤6ð 0 ðºs“Çm(yü¯g<¸&K„¸¸Q nguCþx)8d-|ÑH¬f$(Šƒá, Á×À09 ÇçXòaèví ?þHz‹äÚµñ=šz•*Qòòen-]ʉ ¸fÚîîŽËèÑ„„…Q%1‘äíÛ¹8k§RS-½±·ïZ÷æå *Å–Ò@_$¯rÓµ„$#à$“á¤U¤ËšòÀkˆ ä-¤©“*¿Šbç8‹B0˜îÉpa”O²µ@YSf<\+ƒc½aki‡ÃhÔC,åó¼+ p 8nŒ­Ø>N¥.ò¿^¬·©4Š¢äˆ³(•€s€¼¼¦ï²µ@wóu5þ‚±ÐØlKi¥ CÜ Hí…}¶GQ”¬p…$ «Ô8 á³l-ÌÝ´[§·º¨ U)~t>@ !½ œ±­8é¸5, ¤¶Éu 8örPŠ ÎPºØÄl œ®ÿ­φÛZ  6–†í÷ sPe@)ž¬Z#àÆeHý…ü¦>æo¤y'¤¸R(9÷‰Aú:ü‰\íäÆÛrìlD!å_míÛU[c‹Œ„úÀ¤°RAR#O_ŸCFб¢8:Τôþ'oŸZ s6ÙT¦×…W_@æzð‘R{¢’^Ù˜†XÐ £>‚9µŒc÷&ýšç’u¯C«(» b vTøD{@³—à\mà6Ðqi(Š’=­‘Œ„DÄrßßLRÁ¨÷Q2Æ€WÏ@‰B°@œõ‚ñ¡°,R\‘¸ O ™µO‰â8£Bp?R¢Õ*œ BmKž )æà†;Ü3 Ž71V Cj½+ŠbéÀ1àŸH´¿¥4BžÖƒd±ç)˜³­`ÛO†Á‰ÒÆŠß‘"R'¤8n¹ïâœÂÞ[5{ 8Ò›Yi+m_„ð††,¯3­þŹ8|‰dÌj"Ñýñ¹|®)R©x&ÛaÆ!ðMÁ*¿÷jñ0òó„Ce #ð-båP‡ÁYŸý »Ôv_qÐéVSfÕ„ÇÆI [Þ&Yÿ«*ŠS’†¸ ¾D2f# ÂN²6ˇ ±åÀ/¾YÃ.`õ‡Tèn%–ʈe¢5°„ÂT«áÌ H-÷]À#ìÃ`EYhqªÄSh„p/èÕ¾ñþHààóHd³¢(# Ø,BjÌDRw#¿Á6HÄÿÏ@”H‚¥«¡g$VWÌǃ‘›WAÒ‹ý‚¢8ÎC™:ÈŤ¥,z܆֫áÝß Ýõüö°¼ÜÖw3ë0wŒÔ’W¥ð1e$„ýr œ¤~µ†Ÿ·xýZÃ÷õŒ…^À¶“EQ,§¸( •È^B|ú²Ê%ªí‡ö[`ðAx0*÷Ãl €¹ `]+8ÕR< Hq•ÉÈÓŠ¢(Ö¥’‘à‡T@†ì…;l(ï »Ãñ@¤ÇJ4ÈPqŠ“B`¢R­lwU+ó†Òç¡L$øÅ€O<ÄyC\ ¸W+Â­Š™Ž´_ž†B)ŠR4¸]€¥ˆR4¸ƒR6Nýû³4tî É®H,Ñk¶•GQr§8*&ü>À $MÑ;ŸMFº~‹\Œ" [8EQr%˜ ”E߈õ‚ú`ïPÆÆJAÿ6ð]cà&’%qÕ¶ò(JÎg…Ào$*¸Òg¾RkÝqÄ ¦¿ãHÔóFÔ- (öÀŸ@{¨w~úW…ÕÕ l,ÞÞÖŽòOË~Óqh8Ý‘ê‹ï[YE)ª(Šâ¨'ø`%Œ³C—]ç`M}¤ås¨­¥Q”œpµµŠ¢(ù¤?ྷvç©ö7žòâ‘®›ïŸx‚µ*PªbEJÊ:Óú;¸þæ›üüÑGôúápwÇmÈÖ©S¦°»iSj‡„à ¤NœHƒcÇ8»};×,;oIó–;VE)ª(Šâˆ$ÈK²;yðç_»FâÁƒœ>p€ðk×H4ß6mGá̃rÏ A|O2zø0·öîåøÄ‰4R{õ¢Ù¢Eì´ü¼·Ì­·­8'ŠR T!PÅ1š¥¸B´yP \\Hsq!-óú¶m)Ù¸1ÁÑÑD?ÿ|zða òÕWlëуfÆQÙ×ï?æ¹ HhCæ Ñš“¢(AEQ‘³o7•$©€f Aú:??øæú}÷}”ýûÓnÈ*a( _~É©´4R§N¥çêÕì4Y,ÇJß-³¢Øª(Šâˆœ"Ým°¥<´,[F—˜â†gÆ DOŸÎŸ~ÊÀZµð2íóãl $pútväå|p²¼!ó«Îˆ¢íe (Š£²ƒö[áÏÿYú¡råðˆŠ"É´®F ¼¯\!).ŽóuQQ$ÅÄȺùó¹¯ysj6lÈü¼‰Yê_p£$ððvÞ>«(EGf AS YË0¨TÀc‚,ù¡ðn¶+Š’?ÖÈËþÚšîïÏmDEE¼ùºÓ§‰‹#1󺘛4ÁgÖ,ZôëG‡™3YgéydüXÎPVYw:¥`˜+žÀÀj¤pQ1(UÀc¸#-‹mrÓ7±hb¶\x¼H%R”âÁOòr­ |Q<™ñ-ÁÁ”¨_ŸJÓ¦±ì‹/8•·ÏÞÜõ"°ÝJó (…‚¹BÐ8zeÚ/ðJ ‘› ‰RÜ]lÜ•ŠÊä\µ«’±Ý\¾ÒÜmÑðG™KÀðLÛ\%!pË´­Òy,§œ`_îü%¹û{»!¾ÌçÌ>SÚl˜ïÒ®µzçTÅr¶‡äíì6XI!X±‚ ;²|Ò$öåí³Ñn°±¥!ëBÈpG(Š=b~ƒÌ7Fæ›ë:àS`0QL7¶yÀh³}Ýé=Ùœo>òCž,Í$CEàOàw`°¨il[ ô3Û·µ‚ÜhÃͶ5Gx¾æ;Ͷ½ œ>ŽOg!'ÀËÀ‡Æ{à20ÙX.hüÞˆ5`Ÿ±þ?ˆEà3Ä<øˆ±Þ Xb|§-†LŠ¢œÏäeOSø¥,VkR”ŸñRÄøÉÀ—V›E)$L7ãÊÀÀ7À·@{ j¦}Ë!7¿ÈM{”±þ¿ÀH³ýBr„7dq¾þˆ¢Ph‡ÜäËšmŸa|®1ÒÉl7åyÀ0³}{!ŠÉ¡Lçð0¾ÇLD1hg|€ûg€Æû–HO5îf éíU¹8h¶Ü1ÿÅfúÌ?Åá ãØËŒõU'„6ˆ…e ¢È(ŠR0ææ cú`%+AÞÇ!XÞÅqpÂj3 (…„I!x‰ˆ®+ß¾9‹È0ym&Ãäÿ;ò¤|Ÿ±ü4ÙkÑ›uŒ±üµÙ1]žÀDqè¤™Ž»¹W4–‡!JBfB}>3[wÓx}8lÈѸq7´Îâ8Û×EUDYúq”3–×dó³â*ð‹ñ>Qd‚óðyEQ²&xMÞž¨cZ`se€TÔâýkÝ$«}{E)D\_ûpħ¾Ê€'¹3-Ñüi8‰Œ¸Täf9iIÚ²MË ½Â U»Lu¾}7@yäfl¬{ߨ…(ƒ‹F{D¹ÈLIDHÍb[Yįl6#®ƒÌ$!ÖŠNÆXƒ¸N:š-[JL¦å$Ä’¡(JÁ™Oúïñ³ÇàX~ó¶‚«`x[ØgŠx-H¤8î@[$mo f¶mòtþ—Ç™‹<õ^CüöײÙï(w¦5Ö!#°/‰Øü˜Íç¿FüønÈ÷ÕlÎQ‰=Ï´m¿±mj¶ßäNÖ –„2ˆÉo b9 Bâ ²"íh¦(EIò³’aø(¨ú>´¸™Ëç¬À”z°` ±ðâU‡À &ü± ¬6Km– ü ¼@ÎÁ3_ 1ÿD²fqg³ñˆ©ÿY +â~0/äñ+P ü:Y>~@”œH°ŸéüµÏ‡‘ ÅÏÈ>ò±ß:cy-б$eó™=À+†ì ²ÙGQ”Â%$Âõ@è6vøQ¤n‚éµaÒsâŽ.!kK¥¢Ø%nˆ{`â»7ç4âCÿ 1³ï@üߦÏE!Y&›í„Îw Q@‚ëÞC‚ð6 .‰CÆùî3†;rc?o|>ùáG_‘ñcsAžÖË« ù:!Š{ YÿCâ:!ŠÀ6$ò?9 y#Óþ㜱ˆÏròƒQªÆòˆÕ£’Æy>ÓvùÜiȨ(JáŽX*ûB\)ø¶ÔÚ n!×+Žg[ÃûÏA²'p¹Æ](’o­(…Da•.ö@nx_¡é5Š¢Ø–HÀ±¸'À E0ÿOëœ*  »;+N!VÅ£Ö9Ÿ¢XÂPBRêþFLðÚÞSQ[s’ö[A«†·ˆB ðKqç[ÃÂÇ Ö”:½¹f¶¶*ŠC ÍEqV‘€çî²è’Á»aè¯ð¯Ãà™–Ó‡³æœ¼Ö~îWƒŒ•IÀ;HÀ³V#TUEqvú"MÔjf¬ò½ ¡Û¡õ!èuºFgýÑ›nðC%ø¹.ìn§šCŠyIòUÀî.¦(Š¢(Šâ3ÛK–AnñP*ÊŸ€Ê ÜIð».ÉY쟌;ßk‹/¢(ÎB2* šðG‚pžDÊ gnä‚”;Š”+®bU ï¤2’öø’‘0©Að(ЧeQ¥phLA2Œ²ºág5n!iÏ/r÷5LQœ‚¢v@~ˆ‹å>HfÂA¤ðO0Ò¡°Rb¸"R#! ZôFÊ Ï £‚¡5Y‹¤,þŠ"ú˜ˆDOG('Š¢X‡¤·JrñC¬ ·% ©dz„¬S“¥ØQѪ3­÷D~@.HžJ¹çð¸ñ¾>R¶xP¦}Zu÷명%̶û#=²Âù1—1ä1¯膔5† ÅÃDrAÈÜn9±N˜·46µRžŽ(7æøçõËF>EQEqX&!Úñ*¤8Ïl³m#OÎk‘”›hà_9Ë\!˜ʎƈ©®FdÝŠYÚ‡XN!å‘A 0]Aº9î@ª–Fª1Ö2Ûÿoä‰`¿±mbhblϬLD ‘¬5^ÿ‘¹EQÅî)cöÞ1ïßo,?Ž<å›Jô6DLmžÙË\!X‡T*ÌŽ'È{>ïVã¸&ËÀÛˆ¹D!H3Žkâà'2žú§"•M\Gª/š8OÖ Ag¤BšÉ„T` BQEQKšð$!4õåÀ¹¹®7¶ïF”~2Œw:—ãšüt9mÏa{vÌ'Ã×7é{`r$ M›LtBú˜r‡¿@¬îäÍ_hj«ÜÕlÝÄÝ‘‡ã(Š¢(ŠM°D!ø yú]†t|iKl"¿­}ÃɈÈŠSˆbaê)n)·2½÷D, OüæÍFL­’MÜDd÷É´>7Êç6[·Œ~Š¢(Šb×ä¦x푎1Hð`µB:÷¤Ur’a`¹!oBLô/ofúl ²·@4G2LïÏqÙì{hAF7Ã{€‹äM±Œ´Ãò¶ÊŠ¢(ŠbWä¦Ä#7Í·€ßǸ3¦  ¬þ‹øý?FR{jO!mCÿ#Ýk#ˆÞHï„H²Ú{ 8‹˜ìß#çôÄ©H›ç›À à]¤i^ùÌçsÄ¢âƒÄLF]Š¢(Šà–û.¬Ú­›óJÄ…pÆøü5`—ÙþÞH 㬞ʽ€íÀ%cù7$z¿ò4ÉjØfl?‹ÄT5Î_QL¦’uŸñ‘È ½&†dDüŸ±Í‰ øËlÿÓÆr'Déø1õg÷]¼ËE âZ8X7ŒóÇ BZ*oCk›+Š¢(J‘³•ôF&Š¢(Š¢XŠkî»(Š¢(Šâìü?ÑËé`í(ýÚIEND®B`‚vips-8.2.2/doc/html/index.html0000664000175000017500000002013712651721507013146 00000000000000 VIPS Reference Manual: VIPS Reference Manual

For VIPS 8.2.2. The latest version of this documentation can be found on the VIPS website.


VIPS Overview
VIPS from the command-line — How to use the VIPS library from the command-line
VIPS from C — How to use the VIPS library from C
VIPS from Python — How to use the VIPS library from Python
VIPS from C++ — How to use the VIPS library from C++
Writing bindings for libvips — How to write bindings for libvips
Extending VIPS — How to add operations to VIPS
VIPS function list — List of VIPS functions and operators
The VIPS file format — The VIPS file format
VIPS and threads — VIPS and threading
Core VIPS API
vips — startup, shutdown, version
VipsImage — the VIPS image class
header — get, set and walk image headers
generate — calculate pixels and pixel buffers
VipsOperation — the VIPS operation base object class
error — error messages and error handling
memory — memory utilities
VipsRegion — small, rectangular parts of images
type — basic types
rect — the VIPS rectangle class
VipsObject — the VIPS base object class
VipsThreadState — pools of worker threads
buf — a string you can append to
basic — a few typedefs used everywhere
VIPS operation API by section
arithmetic — operations which perform pixel arithmetic, trig, log, statistics
colour — colour operators
conversion — convert images in some way: change band format, change header, insert, extract, join
convolution — convolve and correlate images
VipsForeignSave — load and save images in a variety of formats
freqfilt — fourier transforms and frequency-domin filters
histogram — find, manipulate and apply histograms and lookup tables
draw — drawing operations: flood, paste, line, circle
VipsInterpolate — various interpolators: nearest, bilinear, and some non-linear
morphology — morphological operators, rank filters and related image analysis
mosaicing — build image mosaics
create — create images in various ways
resample
Other API (no gtkdoc comments yet)
transform
util
version
semaphore
Object Hierarchy
API Index
Annotation Glossary
vips-8.2.2/doc/html/using-threads.html0000664000175000017500000002130212651721507014607 00000000000000 VIPS and threads: VIPS Reference Manual

VIPS and threads

Using VIPS — VIPS and threading

Introduction

This section tries to summarise the rules for threaded programs using libvips. Generally, libvips is threaded and thread-safe, with a few exceptions.

Images

On startup, you need to call VIPS_INIT() single-threaded. After that, you can freely create images in any thread and read them in any other thread. See the example at the end of this chapter. Note that results can also be shared between threads for you by the vips operation cache.

The exception is the drawing operators, such as vips_draw_circle(). These operations modify their image argument so you can't call them on the same image from more than one thread. Reading from an image while another thread is writing to it with one of the draw operations will obviously also fail.

When libvips calculates an image, by default it will use as many threads as you have CPU cores. Use vips_concurrency_set() to change this.

Error handling

libvips has a single error code (-1 or NULL) returned by all functions on error. Error messages are not returned, instead they are logged in a single global error buffer shared by all threads, see vips_error_buffer().

This makes error handling very simple but the obvious downside is that because error returns and error messages are separate when you detect an error return you can't be sure that what's in the error buffer is the message that matches your error.

The simplest way to handle this is to present the whole error log to the user on the next interaction and leave it to them to decide what action caused the failure.

Using VipsRegion between threads

VipsImage objects are immutable and can be shared between threads very simply. However the lower-level VipsRegion object used to implement VipsImage (see Extending VIPS) is mutable and you can only use a VipsRegion from one thread at once.

In fact it's worse than that: to reduce locking, VipsRegion keeps a lot of state in per-thread storage. If you want to create a region in one thread and use it in another, you have to first tag the region as unowned from the creating thread with vips__region_no_ownership(), then in the recieving thread take ownership with vips__region_take_ownership(). See the source for operations like vips_tilecache() if you're curious how this works.

libvips includes a set of sanity checks for region ownership and will fail if you don't pass ownership correctly.

Example

This example runs many vips_resize() in parallel from many threads.

Example 2. VIPS and threads example

/* Read from many threads. 
 *
 * Compile with:
 *
 * 	gcc -g -Wall soak.c `pkg-config vips --cflags --libs`
 *
 * Run with:
 *
 * 	rm -rf x
 * 	mkdir x
 * 	for i in {0..10}; do ./a.out ~/pics/k2.jpg; done
 *
 */

#include <stdio.h>
#include <glib.h>

#include <vips/vips.h>

/* How many pings we run at once.
 */
#define NUM_IN_PARALLEL (50)

/* Number of tests we do in total.
 */
#define TOTAL_TESTS (NUM_IN_PARALLEL * 20)

/* Workers queue up on this.
 */
GMutex allocation_lock;

/* Our set of threads.
 */
GThread *workers[NUM_IN_PARALLEL];

/* Number of calls so far.
 */
int n_calls = 0;

/* Our test function. This is called by NUM_IN_PARALLEL threads a total of
 * TOTAL_TESTS times. 
 */
static int
test (const char *filename)
{
  VipsImage *im, *x;
  char output_file[256];

  snprintf (output_file, 256, "x/tmp-%p.jpg", g_thread_self ());

  if (!(im = vips_image_new_from_file (filename,
				       "access",
				       VIPS_ACCESS_SEQUENTIAL_UNBUFFERED,
				       NULL)))
    return (-1);

  if (vips_resize (im, &x, 0.1, NULL))
    {
      g_object_unref (im);
      return (-1);
    }
  g_object_unref (im);
  im = x;

  if (vips_image_write_to_file (im, output_file, NULL))
    {
      g_object_unref (im);
      return (-1);
    }
  g_object_unref (im);

  return (0);
}

/* What we run as a thread.
 */
static void *
worker (void *data)
{
  const char *filename = (const char *) data;

  for (;;)
    {
      gboolean done;

      done = FALSE;
      g_mutex_lock (&allocation_lock);
      n_calls += 1;
      if (n_calls > TOTAL_TESTS)
	done = TRUE;
      g_mutex_unlock (&allocation_lock);

      if (done)
	break;

      if (test (filename))
	vips_error_exit (NULL);
    }

  return (NULL);
}

int
main (int argc, char **argv)
{
  int i;

  if (VIPS_INIT (argv[0]))
    vips_error_exit (NULL);

  g_mutex_init (&allocation_lock);

  for (i = 0; i < NUM_IN_PARALLEL; i++)
    workers[i] = g_thread_new (NULL, (GThreadFunc) worker, argv[1]);

  for (i = 0; i < NUM_IN_PARALLEL; i++)
    g_thread_join (workers[i]);

  return (0);
}

vips-8.2.2/doc/html/using-from-cpp.html0000664000175000017500000004131112651721507014702 00000000000000 VIPS from C++: VIPS Reference Manual

VIPS from C++

Using VIPS — How to use the VIPS library from C++

Introduction

VIPS comes with a convenient C++ API. It is a very thin wrapper over the C API and adds automatic reference counting, exceptions, operator overloads, and automatic constant expansion. You can drop down to the C API at any point, so all the C API docs also work for C++.

/* compile with:
 *      g++ -g -Wall try.cc `pkg-config vips-cpp --cflags --libs`
 */

#include <vips/vips8>

using namespace vips;

int
main( int argc, char **argv )
{
  GOptionContext *context;
  GOptionGroup *main_group;
  GError *error = NULL;

  if( VIPS_INIT( argv[0] ) )
    vips_error_exit( NULL ); 

  context = g_option_context_new( "" ); 

  main_group = g_option_group_new( NULL, NULL, NULL, NULL, NULL );
  g_option_context_set_main_group( context, main_group );
  g_option_context_add_group( context, vips_get_option_group() );

  if( !g_option_context_parse( context, &argc, &argv, &error ) ) {
    if( error ) {
      fprintf( stderr, "%s\n", error->message );
      g_error_free( error );
    }

    vips_error_exit( NULL );
  }

  VImage in = VImage::new_from_file( argv[1], 
    VImage::option()->
      set( "access", VIPS_ACCESS_SEQUENTIAL_UNBUFFERED ) ); 

  double avg = in.avg(); 

  printf( "avg = %g\n", avg ); 
  printf( "width = %d\n", in.width() ); 

  VImage in = VImage::new_from_file( argv[1],
    VImage::option()->
      set( "access", VIPS_ACCESS_SEQUENTIAL_UNBUFFERED ) ); 

  VImage out = in.embed( 10, 10, 1000, 1000, 
    VImage::option()->
      set( "extend", "background" )->
      set( "background", 128 ) );

  out.write_to_file( argv[2] );

  vips_shutdown();

  return( 0 );
}

Everything before VImage in = VImage::.. is exactly as the C API. This boilerplate gives the example a set of standard command-line flags.

This line is the C++ equivalent of vips_image_new_from_file(). It works in the same way, the differences being:

  • VImage lifetime is managed automatically, like a smart pointer. You don't need to call g_object_unref().

  • Instead of using varargs and a NULL-terminated option list, this function takes an optional VOption pointer. This gives a list of name / value pairs for optional arguments to the function.

    In this case we request unbuffered IO for the image, meaning, we expect to do a single top-to-bottom scan of the image and do not need it to be decompressed entirely. You can use the C enum name, as is done in this case, or use a string and have the string looked up. See below.

    The function will delete the VOption pointer for us when it's finished with it.

  • Instead of returning NULL on error, this constructor will raise a VError exception.

There are a series of similar constructors which parallel the other constructors in the C API, see VImage::new_from_memory(), VImage::new_from_buffer(), and VImage::new_matrix(). There's also VImage::new_memory() and VImage::new_temp_file(), which when written to with VImage::write() will create whole images on memory or on disc.

The next line finds the average pixel value, it's the equivalent of the vips_avg() function. The differences from the C API are:

  • VImage::avg() is a member function: the this parameter is the first (the only, in this case) input image.

    The function returns the first output parameter, in this case the average pixel value. Other return values are via pointer arguments, as in the C API.

    Like VImage::new_from_file(), function raises the VError exception on error.

    Like VImage::new_from_file(), extra arguments are passed via an optional VOption parameter. There are none in this case, so the function brackets can be left empty.

All other operations follow the same pattern, for example the C API call vips_add():

int vips_add( VipsImage *left, VipsImage *right, VipsImage **out, ... );

appears in C++ as:

VImage VImage::add( VImage right, VOption *options = 0 );

The next line uses VImage::width() to get the image width in pixels. There are similar functions paralleling vips_image_get_format() and friends. Use VImage::set() to set metadata fields, VImage::get_int() and c. to fetch metadata.

Next we reload the image. The VImage::avg() will have scanned the image and reached the end of the file, we need to scan again for the next operation. If we'd selected random access mode (the default) in the original VImage::new_from_file(), we would not need to reload.

The next line runs vips_embed() with two optional parameters. The first sets the value to an enum (here we use a string to set the value, it'll be looked up in the list of possible enum values, or you can use the symbols from the C API), the second sets the value to an int. The "background" parameter is actually a VipsArrayDouble: if you pass an int instead, it will be automatically converted to a one-element array for you. You can pass a std::vector<double> too: the utility function VImage::to_vectorv() is a convenient way to make one.

Finally, VImage::write_to_file() will write the new image to the filesystem. You can add a VOption as a final parameter and set options for the writer if you wish. Again, the operation will throw a VError exception on error. The other writers from the C API are also present: you can write to a memory array, to a formatted image in memory, or to another image.

Automatic constant expansion

The C++ API will automatically turn constants into images in some cases. For example, you can join two images together bandwise (the bandwise join of two RGB images would be a six-band image) with:

VImage rgb = ...; 
VImage six_band = rgb.bandjoin( rgb );

You can also bandjoin a constant, for example:

VImage rgb_with_alpha = rgb.bandjoin( 255 );

Will add an extra band to an image, with every element in the new band having the value 255. This is quite a general feature. You can use a constant in most places where you can use an image and it will be converted. For example:

VImage a = (a < 128).ifthenelse( 128, a ); 

Will set every band element of a less than 128 to 128.

The C++ API includes the usual range of arithmetic operator overloads. You can mix constants, vectors and images freely.

The API overloads [] to be vips_extract_band(). You can write:

VImage xyz = VImage::xyz( 256, 256 ) - VImage::to_vectorv( 2, 128.0, 128.0 ); 
VImage mask = (xyz[0].pow( 2 ) + xyz[1].pow( 2 )).pow( 0.5 ) < 100;

to make a circular mask, for example.

The API overloads () to be vips_getpoint(). You can write:

VImage xyz = VImage::xyz( 256, 256 ) - VImage::to_vectorv( 2, 128.0, 128.0 ); 
// this will have the value [0, 0]
std::vector<double> point = xyz(128, 128);

Enum expansion

VIPS operations which implement several functions with a controlling enum, such as vips_math(), are expanded to a set of member functions named after the enum. For example, the C function:

int vips_math( VipsImage *in, VipsImage **out, VipsOperationMath math, ... );

where VipsOperationMath has the member VIPS_OPERATION_MATH_SIN, has a C convenience function vips_sin():

int vips_sin( VipsImage *in, VipsImage **out, ... );

and a C++ member function VImage::sin():

VImage VImage::sin( VOption *options = 0 );

Image metadata

VIPS images can have a lot of metadata attached to them, giving things like ICC profiles, EXIF data, and so on. You can use the command-line program vipsheader with the -a flag to list all the fields.

You can read metadata items with the member functions get_int(), get_double(), get_string() and get_blob(). Use get_typeof() to call vips_image_get_typeof() and read the type of an item. This will return 0 for undefined fields.

const char *VImage::get_string( const char *field ) throw( VError );

You can use the set() family of overloaded members to set metadata, for example:

void VImage::set( const char *field, const char *value );

You can use these functions to manipulate exif metadata, for example:

VImage im = VImage::new_from_file( "x.jpg" )
int orientation = atoi( im.get_string( "exif-ifd0-Orientation" ) );
im.set( "exif-ifd0-Orientation", "2" );
im.write_to_file( "y.jpg" );

Extending the C++ interface

The C++ interface comes in two parts. First, VImage8.h defines a simple layer over GObject for automatic reference counting, then a generic way to call any vips8 operation with VImage::call(), then a few convenience functions, then a set of overloads.

The member function for each operation, for example VImage::add(), is generated by a small Python program called gen-operators.py, and its companion, gen-operators-h.py to generate the headers. If you write a new VIPS operator, you'll need to rerun these programs to make the new member function.

You can write the wrapper yourself, of course, they are very simple. The one for VImage::add() looks like this:

VImage VImage::add(VImage right, VOption *options)
{
  VImage out;

  call("add" ,
    (options ? options : VImage::option()) ->
      set("out", &out) ->
      set("left", *this) ->
      set("right", right));

  return out;
}

Where VImage::call() is the generic call-a-vips8-operation function.

vips-8.2.2/doc/html/libvips-VipsObject.html0000664000175000017500000032675712651721507015576 00000000000000 VipsObject: VIPS Reference Manual

VipsObject

VipsObject — the VIPS base object class

Stability Level

Stable, unless otherwise indicated

Functions

#define VIPS_UNREF()
#define VIPS_ARG_IMAGE()
#define VIPS_ARG_INTERPOLATE()
#define VIPS_ARG_BOOL()
#define VIPS_ARG_DOUBLE()
#define VIPS_ARG_BOXED()
#define VIPS_ARG_INT()
#define VIPS_ARG_UINT64()
#define VIPS_ARG_ENUM()
#define VIPS_ARG_FLAGS()
#define VIPS_ARG_STRING()
#define VIPS_ARG_POINTER()
VipsArgumentInstance * vips__argument_get_instance ()
VipsArgument * vips__argument_table_lookup ()
void vips__object_set_member ()
void * (*VipsArgumentMapFn) ()
void * vips_argument_map ()
void * (*VipsArgumentClassMapFn) ()
void * vips_argument_class_map ()
gboolean vips_argument_class_needsstring ()
int vips_object_get_argument ()
gboolean vips_object_argument_isset ()
VipsArgumentFlags vips_object_get_argument_flags ()
int vips_object_get_argument_priority ()
#define VIPS_ARGUMENT_FOR_ALL()
#define VIPS_ARGUMENT_COLLECT_SET()
#define VIPS_ARGUMENT_COLLECT_GET()
gboolean vips_value_is_null ()
void vips_object_set_property ()
void vips_object_get_property ()
void vips_object_preclose ()
int vips_object_build ()
void vips_object_summary_class ()
void vips_object_summary ()
void vips_object_dump ()
void vips_object_print_summary_class ()
void vips_object_print_summary ()
void vips_object_print_dump ()
void vips_object_print_name ()
gboolean vips_object_sanity ()
void vips_object_class_install_argument ()
int vips_object_set_argument_from_string ()
gboolean vips_object_argument_needsstring ()
int vips_object_get_argument_to_string ()
int vips_object_set_required ()
void * (*VipsObjectSetArguments) ()
VipsObject * vips_object_new ()
int vips_object_set_valist ()
int vips_object_set ()
int vips_object_set_from_string ()
VipsObject * vips_object_new_from_string ()
void vips_object_to_string ()
void * vips_object_map ()
void * (*VipsTypeMapFn) ()
void * (*VipsTypeMap2Fn) ()
void * (*VipsClassMapFn) ()
void * vips_type_map ()
void * vips_type_map_all ()
int vips_type_depth ()
GType vips_type_find ()
const char * vips_nickname_find ()
void * vips_class_map_all ()
VipsObjectClass * vips_class_find ()
VipsObject ** vips_object_local_array ()
void vips_object_local_cb ()
#define vips_object_local()
void vips_object_set_static ()
void vips_object_print_all ()
void vips_object_sanity_all ()
void vips_object_rewind ()
void vips_object_unref_outputs ()
const char * vips_object_get_description ()

Includes

#include <vips/vips.h>

Description

The VipsObject class and associated types and macros.

VipsObject is the base class for all objects in libvips. It has the following major features:

Functional class creation Vips objects have a very regular lifecycle: initialise, build, use, destroy. They behave rather like function calls and are free of side-effects.

Run-time introspection Vips objects can be fully introspected at run-time. There is not need for separate source-code analysis.

Command-line interface Any vips object can be run from the command-line with the vips driver program.

The VipsObject lifecycle

VipsObject s have a strictly defined lifecycle, split broadly as construct and then use. In detail, the stages are:

  1. g_object_new(). The VipsObject is created with g_object_new(). Objects in this state are blank slates and need to have their various parameters set.

  2. g_object_set(). You loop over the VipsArgument that the object has defined with vips_argument_map(). Arguments have a set of flags attached to them for required, optional, input, output, type, and so on. You must set all required arguments.

  3. vips_object_build(). Call this to construct the object and get it ready for use. Building an object happens in four stages, see below.

  4. g_object_get(). The object has now been built. You can read out any computed values.

  5. g_object_unref(). When you are done with an object, you can unref it. See the section on reference counting for an explanation of the convention that VipsObject uses. When the last ref to an object is released, the object is closed. Objects close in three stages, see below.

The stages inside vips_object_build() are:

  1. Chain up through the object's build class methods. At each stage, each class does any initial setup and checking, then chains up to its superclass.

  2. The innermost build method inside VipsObject itself checks that all input arguments have been set and then returns.

  3. All object build methods now finish executing, from innermost to outermost. They know all input arguments have been checked and supplied, so now they set all output arguments.

  4. vips_object_build() finishes the process by checking that all output objects have been set, and then triggering the “postbuild†signal. “postbuild†only runs if the object has constructed successfuly.

VipsOperation has a cache of recent operation objects, see that class for an explanation of vips_cache_operation_build().

Finally the stages inside close are:

  1. “precloseâ€. This is emitted at the start of the VipsObject dispose. The object is still functioning.

  2. “closeâ€. This runs just after all VipsArgument held by the object have been released.

  3. “postcloseâ€. This runs right at the end. The object pointer is still valid, but nothing else is.

VipsArgument

libvips has a simple mechanism for automating at least some aspects of GObject properties. You add a set of macros to your _class_init() which describe the arguments, and set the get and set functions to the vips ones.

See extending for a complete example.

The VipsObject reference counting convention

VipsObject has a set of conventions to simplify reference counting.

  1. All input GObject have a ref added to them, owned by the object. When a VipsObject is unreffed, all of these refs to input objects are automatically dropped.

  2. All output GObject hold a ref to the object. When a GObject which is an output of a VipsObject is disposed, it must drop this reference. VipsObject which are outputs of other VipsObject will do this automatically.

See VipsOperation for an example of VipsObject reference counting.

Functions

VIPS_UNREF()

#define             VIPS_UNREF( X )

VIPS_ARG_IMAGE()

#define             VIPS_ARG_IMAGE( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET )

VIPS_ARG_INTERPOLATE()

#define             VIPS_ARG_INTERPOLATE( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET )

VIPS_ARG_BOOL()

#define             VIPS_ARG_BOOL( CLASS, NAME, PRIORITY, LONG, DESC, \
            	FLAGS, OFFSET, VALUE )

VIPS_ARG_DOUBLE()

#define             VIPS_ARG_DOUBLE( CLASS, NAME, PRIORITY, LONG, DESC, \
            	FLAGS, OFFSET, MIN, MAX, VALUE )

VIPS_ARG_BOXED()

#define             VIPS_ARG_BOXED( CLASS, NAME, PRIORITY, LONG, DESC, \
            	FLAGS, OFFSET, TYPE )

VIPS_ARG_INT()

#define             VIPS_ARG_INT( CLASS, NAME, PRIORITY, LONG, DESC, \
            	FLAGS, OFFSET, MIN, MAX, VALUE )

VIPS_ARG_UINT64()

#define             VIPS_ARG_UINT64( CLASS, NAME, PRIORITY, LONG, DESC, \
            	FLAGS, OFFSET, MIN, MAX, VALUE )

VIPS_ARG_ENUM()

#define             VIPS_ARG_ENUM( CLASS, NAME, PRIORITY, LONG, DESC, \
            	FLAGS, OFFSET, TYPE, VALUE )

VIPS_ARG_FLAGS()

#define             VIPS_ARG_FLAGS( CLASS, NAME, PRIORITY, LONG, DESC, \
            	FLAGS, OFFSET, TYPE, VALUE )

VIPS_ARG_STRING()

#define             VIPS_ARG_STRING( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, \
            	VALUE )

VIPS_ARG_POINTER()

#define             VIPS_ARG_POINTER( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET )

vips__argument_get_instance ()

VipsArgumentInstance *
vips__argument_get_instance (VipsArgumentClass *argument_class,
                             VipsObject *object);

Convenience ... given the VipsArgumentClass, get the VipsArgumentInstance.

[skip]


vips__argument_table_lookup ()

VipsArgument *
vips__argument_table_lookup (VipsArgumentTable *argument_class,
                             GParamSpec *pspec);

vips__object_set_member ()

void
vips__object_set_member (VipsObject *object,
                         GParamSpec *pspec,
                         GObject **member,
                         GObject *argument);

VipsArgumentMapFn ()

void *
(*VipsArgumentMapFn) (VipsObject *object,
                      GParamSpec *pspec,
                      VipsArgumentClass *argument_class,
                      VipsArgumentInstance *argument_instance,
                      void *a,
                      void *b);

vips_argument_map ()

void *
vips_argument_map (VipsObject *object,
                   VipsArgumentMapFn fn,
                   void *a,
                   void *b);

Loop over the vips_arguments to an object. Stop when fn returns non-NULL and return that value.

[skip]

Parameters

object

object whose args should be enumerated

 

fn

call this function for every argument

 

a

client data

 

b

client data

 

Returns

NULL if fn returns NULL for all arguments, otherwise the first non-NULL value from fn .


VipsArgumentClassMapFn ()

void *
(*VipsArgumentClassMapFn) (VipsObjectClass *object_class,
                           GParamSpec *pspec,
                           VipsArgumentClass *argument_class,
                           void *a,
                           void *b);

vips_argument_class_map ()

void *
vips_argument_class_map (VipsObjectClass *object_class,
                         VipsArgumentClassMapFn fn,
                         void *a,
                         void *b);

And loop over a class. Same as ^^, but with no VipsArgumentInstance.

[skip]


vips_argument_class_needsstring ()

gboolean
vips_argument_class_needsstring (VipsArgumentClass *argument_class);

vips_object_get_argument ()

int
vips_object_get_argument (VipsObject *object,
                          const char *name,
                          GParamSpec **pspec,
                          VipsArgumentClass **argument_class,
                          VipsArgumentInstance **argument_instance);

Look up the three things you need to work with a vips argument.

[skip]

Parameters

object

the object to fetch the args from

 

name

arg to fetch

 

pspec

the pspec for this arg.

[transfer none]

argument_class

the argument_class for this arg.

[transfer none]

argument_instance

the argument_instance for this arg.

[transfer none]

Returns

0 on success, or -1 on error.


vips_object_argument_isset ()

gboolean
vips_object_argument_isset (VipsObject *object,
                            const char *name);

Convenience: has an argument been assigned. Useful for bindings.

Parameters

object

the object to fetch the args from

 

name

arg to fetch

 

Returns

TRUE if the argument has been assigned.


vips_object_get_argument_flags ()

VipsArgumentFlags
vips_object_get_argument_flags (VipsObject *object,
                                const char *name);

Convenience: get the flags for an argument. Useful for bindings.

Parameters

object

the object to fetch the args from

 

name

arg to fetch

 

Returns

The VipsArgumentFlags for this argument.


vips_object_get_argument_priority ()

int
vips_object_get_argument_priority (VipsObject *object,
                                   const char *name);

Convenience: get the priority for an argument. Useful for bindings.

Parameters

object

the object to fetch the args from

 

name

arg to fetch

 

Returns

The priority of this argument.


VIPS_ARGUMENT_FOR_ALL()

#define             VIPS_ARGUMENT_FOR_ALL( OBJECT, PSPEC, ARG_CLASS, ARG_INSTANCE )

VIPS_ARGUMENT_COLLECT_SET()

#define             VIPS_ARGUMENT_COLLECT_SET( PSPEC, ARG_CLASS, AP )

VIPS_ARGUMENT_COLLECT_GET()

#define             VIPS_ARGUMENT_COLLECT_GET( PSPEC, ARG_CLASS, AP )

vips_value_is_null ()

gboolean
vips_value_is_null (GParamSpec *psoec,
                    const GValue *value);

vips_object_set_property ()

void
vips_object_set_property (GObject *gobject,
                          guint property_id,
                          const GValue *value,
                          GParamSpec *pspec);

vips_object_get_property ()

void
vips_object_get_property (GObject *gobject,
                          guint property_id,
                          GValue *value,
                          GParamSpec *pspec);

vips_object_preclose ()

void
vips_object_preclose (VipsObject *object);

vips_object_build ()

int
vips_object_build (VipsObject *object);

vips_object_summary_class ()

void
vips_object_summary_class (VipsObjectClass *klass,
                           VipsBuf *buf);

Generate a human-readable summary for a class.

[skip]

Parameters

klass

class to summarise

 

buf

write summary here

 

vips_object_summary ()

void
vips_object_summary (VipsObject *object,
                     VipsBuf *buf);

Generate a human-readable summary for an object.

[skip]

Parameters

object

object to summarise

 

buf

write summary here

 

vips_object_dump ()

void
vips_object_dump (VipsObject *object,
                  VipsBuf *buf);

Dump everything that vips knows about an object to a string.

[skip]

Parameters

object

object to dump

 

buf

write dump here

 

vips_object_print_summary_class ()

void
vips_object_print_summary_class (VipsObjectClass *klass);

vips_object_print_summary ()

void
vips_object_print_summary (VipsObject *object);

vips_object_print_dump ()

void
vips_object_print_dump (VipsObject *object);

vips_object_print_name ()

void
vips_object_print_name (VipsObject *object);

vips_object_sanity ()

gboolean
vips_object_sanity (VipsObject *object);

vips_object_class_install_argument ()

void
vips_object_class_install_argument (VipsObjectClass *cls,
                                    GParamSpec *pspec,
                                    VipsArgumentFlags flags,
                                    int priority,
                                    guint offset);

vips_object_set_argument_from_string ()

int
vips_object_set_argument_from_string (VipsObject *object,
                                      const char *name,
                                      const char *value);

vips_object_argument_needsstring ()

gboolean
vips_object_argument_needsstring (VipsObject *object,
                                  const char *name);

vips_object_get_argument_to_string ()

int
vips_object_get_argument_to_string (VipsObject *object,
                                    const char *name,
                                    const char *arg);

vips_object_set_required ()

int
vips_object_set_required (VipsObject *object,
                          const char *value);

VipsObjectSetArguments ()

void *
(*VipsObjectSetArguments) (VipsObject *object,
                           void *a,
                           void *b);

vips_object_new ()

VipsObject *
vips_object_new (GType type,
                 VipsObjectSetArguments set,
                 void *a,
                 void *b);

g_object_new() the object, set any arguments with set , call vips_object_build() and return the complete object.

[skip]

Parameters

type

object to create

 

set

set arguments with this

 

a

client data

 

b

client data

 

Returns

the new object


vips_object_set_valist ()

int
vips_object_set_valist (VipsObject *object,
                        va_list ap);

See vips_object_set().

Parameters

object

object to set arguments on

 

ap

NULL-terminated list of argument/value pairs

 

Returns

0 on success, -1 on error


vips_object_set ()

int
vips_object_set (VipsObject *object,
                 ...);

Set a list of vips object arguments. For example:

vips_object_set (operation,
  "input", in,
  "output", &out,
  NULL);

Input arguments are given in-line, output arguments are given as pointers to where the output value should be written.

See also: vips_object_set_valist(), vips_object_set_from_string().

Parameters

object

object to set arguments on

 

...

NULL-terminated list of argument/value pairs

 

Returns

0 on success, -1 on error


vips_object_set_from_string ()

int
vips_object_set_from_string (VipsObject *object,
                             const char *string);

Set object arguments from a string. The string can be something like "a=12", or "a = 12, b = 13", or "fred". The string can optionally be enclosed in brackets.

You'd typically use this between creating the object and building it.

See also: vips_object_set(), vips_object_build(), vips_cache_operation_buildp().

Parameters

object

object to set arguments on

 

string

arguments as a string

 

Returns

0 on success, -1 on error


vips_object_new_from_string ()

VipsObject *
vips_object_new_from_string (VipsObjectClass *object_class,
                             const char *p);

vips_object_to_string ()

void
vips_object_to_string (VipsObject *object,
                       VipsBuf *buf);

The inverse of vips_object_new_from_string(): turn object into eg. "VipsInterpolateSnohalo1(blur=.333333)".

Parameters

object

object to stringify

 

buf

write string here

 

vips_object_map ()

void *
vips_object_map (VipsSListMap2Fn fn,
                 void *a,
                 void *b);

Call a function for all alive objects. Stop when fn returns non-NULL and return that value.

[skip]

Parameters

fn

function to call for all objects

 

a

client data

 

b

client data

 

Returns

NULL if fn returns NULL for all arguments, otherwise the first non-NULL value from fn .


VipsTypeMapFn ()

void *
(*VipsTypeMapFn) (GType type,
                  void *a);

VipsTypeMap2Fn ()

void *
(*VipsTypeMap2Fn) (GType type,
                   void *a,
                   void *b);

VipsClassMapFn ()

void *
(*VipsClassMapFn) (VipsObjectClass *cls,
                   void *a);

vips_type_map ()

void *
vips_type_map (GType base,
               VipsTypeMap2Fn fn,
               void *a,
               void *b);

Map over a type's children. Stop when fn returns non-NULL and return that value.

[skip]

Parameters

base

base type

 

fn

call this function for every type

 

a

client data

 

b

client data

 

Returns

NULL if fn returns NULL for all arguments, otherwise the first non-NULL value from fn .


vips_type_map_all ()

void *
vips_type_map_all (GType base,
                   VipsTypeMapFn fn,
                   void *a);

Map over a type's children, direct and indirect. Stop when fn returns non-NULL and return that value.

[skip]

Parameters

base

base type

 

fn

call this function for every type

 

a

client data

 

Returns

NULL if fn returns NULL for all arguments, otherwise the first non-NULL value from fn .


vips_type_depth ()

int
vips_type_depth (GType type);

vips_type_find ()

GType
vips_type_find (const char *basename,
                const char *nickname);

Search below basename , return the GType of the class whose name or nickname matches, or 0 for not found. If basename is NULL, the whole of VipsObject is searched.

This function uses a cache, so it should be quick.

See also: vips_class_find()

Parameters

basename

name of base class

 

nickname

search for a class with this nickname

 

Returns

the GType of the class, or 0 if the class is not found.


vips_nickname_find ()

const char *
vips_nickname_find (GType type);

Return the VIPS nickname for a GType. Handy for language bindings.

Parameters

type

GType to search for

 

Returns

the class nickname.

[transfer none]


vips_class_map_all ()

void *
vips_class_map_all (GType type,
                    VipsClassMapFn fn,
                    void *a);

Loop over all the subclasses of type . Non-abstract classes only. Stop when fn returns non-NULL and return that value.

Parameters

type

base type

 

fn

call this function for every type

 

a

client data

 

Returns

NULL if fn returns NULL for all arguments, otherwise the first non-NULL value from fn .


vips_class_find ()

VipsObjectClass *
vips_class_find (const char *basename,
                 const char *nickname);

Search below basename , return the first class whose name or nickname matches.

See also: vips_type_find()

Parameters

basename

name of base class

 

nickname

search for a class with this nickname

 

Returns

the found class.


vips_object_local_array ()

VipsObject **
vips_object_local_array (VipsObject *parent,
                         int n);

Make an array of NULL VipsObject pointers. When parent closes, every non-NULL pointer in the array will be unreffed and the array will be freed. Handy for creating a set of temporary images for a function.

The array is NULL-terminated, ie. contains an extra NULL element at the end.

Example:

VipsObject **t;

t = vips_object_local_array( a, 5 );
if( 
  vips_add( a, b, &t[0], NULL ) ||
  vips_invert( t[0], &t[1], NULL ) ||
  vips_add( t[1], t[0], &t[2], NULL ) ||
  vips_costra( t[2], out, NULL ) )
  return( -1 );

See also: vips_object_local().

[skip]

Parameters

parent

objects unref when this object unrefs

 

n

array size

 

Returns

an array of NULL pointers of length n


vips_object_local_cb ()

void
vips_object_local_cb (VipsObject *vobject,
                      GObject *gobject);

vips_object_local()

#define             vips_object_local( V, G )

vips_object_set_static ()

void
vips_object_set_static (VipsObject *object,
                        gboolean static_object);

vips_object_print_all ()

void
vips_object_print_all (void);

vips_object_sanity_all ()

void
vips_object_sanity_all (void);

vips_object_rewind ()

void
vips_object_rewind (VipsObject *object);

vips_object_unref_outputs ()

void
vips_object_unref_outputs (VipsObject *object);

Unref all assigned output objects. Useful for language bindings.

After an object is built, all output args are owned by the caller. If something goes wrong before then, we have to unref the outputs that have been made so far. This function can also be useful for callers when they've finished processing outputs themselves.

See also: vips_cache_operation_build().

Parameters

object

object to drop output refs from

 

vips_object_get_description ()

const char *
vips_object_get_description (VipsObject *object);

Fetch the object description. Useful for language bindings.

object.description is only avaliable after _build(), which can be too late. This function fetches from the instance, if possible, but falls back to the class description if we are too early.

Parameters

object

object to fetch description from

 

Returns

the object description

Types and Values

enum VipsArgumentFlags

Flags we associate with each object argument.

Have separate input & output flags. Both set is an error; neither set is OK.

Input gobjects are automatically reffed, output gobjects automatically ref us. We also automatically watch for "destroy" and unlink.

VIPS_ARGUMENT_SET_ALWAYS is handy for arguments which are set from C. For example, VipsImage::width is a property that gives access to the Xsize member of struct _VipsImage. We default its 'assigned' to TRUE since the field is always set directly by C.

VIPS_ARGUMENT_DEPRECATED arguments are not shown in help text, are not looked for if required, are not checked for "have-been-set". You can deprecate a required argument, but you must obviously add a new required argument if you do.

Input args with VIPS_ARGUMENT_MODIFY will be modified by the operation. This is used for things like the in-place drawing operations.

Members

VIPS_ARGUMENT_NONE

no flags

 

VIPS_ARGUMENT_REQUIRED

must be set in the constructor

 

VIPS_ARGUMENT_CONSTRUCT

can only be set in the constructor

 

VIPS_ARGUMENT_SET_ONCE

can only be set once

 

VIPS_ARGUMENT_SET_ALWAYS

don't do use-before-set checks

 

VIPS_ARGUMENT_INPUT

is an input argument (one we depend on)

 

VIPS_ARGUMENT_OUTPUT

is an output argument (depends on us)

 

VIPS_ARGUMENT_DEPRECATED

just there for back-compat, hide

 

VIPS_ARGUMENT_MODIFY

the input argument will be modified

 

VIPS_ARGUMENT_REQUIRED_INPUT

#define             VIPS_ARGUMENT_REQUIRED_INPUT

VIPS_ARGUMENT_OPTIONAL_INPUT

#define             VIPS_ARGUMENT_OPTIONAL_INPUT

VIPS_ARGUMENT_REQUIRED_OUTPUT

#define             VIPS_ARGUMENT_REQUIRED_OUTPUT

VIPS_ARGUMENT_OPTIONAL_OUTPUT

#define             VIPS_ARGUMENT_OPTIONAL_OUTPUT

VipsArgument

typedef struct {
	GParamSpec *pspec; /* pspec for this argument */

	/* More stuff, see below */
} VipsArgument;

VipsArgumentClass

typedef struct {
	VipsArgument parent;

	/* The class of the object we are an arg for.
	 */
	VipsObjectClass *object_class;

	VipsArgumentFlags flags;
	int priority;		/* Order args by this */
	guint offset;		/* G_STRUCT_OFFSET of member in object */
} VipsArgumentClass;

VipsArgumentInstance

typedef struct {
	VipsArgument parent;

	/* The class we are part of.
	 */
	VipsArgumentClass *argument_class;

	/* The object we are attached to.
	 */
	VipsObject *object;

	/* Has been set.
	 */
	gboolean assigned;

	/* If this is an output argument, keep the id of our "close" handler
	 * here.
	 */
	gulong close_id;	

	/* We need to listen for "invalidate" on input images and send our own
	 * "invalidate" out. If we go, we need to disconnect.
	 */
	gulong invalidate_id;
} VipsArgumentInstance;

VipsArgumentTable

typedef GHashTable VipsArgumentTable;

VIPS_ARGUMENT_COLLECT_END

#define             VIPS_ARGUMENT_COLLECT_END

See Also

operation
vips-8.2.2/doc/html/libvips-VipsRegion.html0000664000175000017500000013373012651721507015576 00000000000000 VipsRegion: VIPS Reference Manual

VipsRegion

VipsRegion — small, rectangular parts of images

Stability Level

Stable, unless otherwise indicated

Includes

#include <vips/vips.h>

Description

A VipsRegion is a small part of an image and some pixels. You use regions to read pixels out of images without having to have the whole image in memory at once.

A region can be a memory buffer, part of a memory-mapped file, part of some other image, or part of some other region.

Regions must be created, used and freed all within the same thread, since they can reference private per-thread caches. VIPS sanity-checks region ownership in various places, so you are likely to see g_assert() errors if you don't follow this rule.

There is API to transfer ownership of regions between threads, but hopefully this is only needed within VIPS, so we don't expose it. Hopefully.

Functions

vips_region_new ()

VipsRegion *
vips_region_new (VipsImage *image);

Create a region. VipsRegion s start out empty, you need to call vips_region_prepare() to fill them with pixels.

See also: vips_region_prepare().

Parameters

image

image to create this region on

 

vips_region_buffer ()

int
vips_region_buffer (VipsRegion *reg,
                    VipsRect *r);

The region is transformed so that at least r pixels are available as a memory buffer.

Parameters

reg

region to operate upon

 

r

VipsRect of pixels you need to be able to address

 

Returns

0 on success, or -1 for error.


vips_region_image ()

int
vips_region_image (VipsRegion *reg,
                   VipsRect *r);

The region is transformed so that at least r pixels are available directly from the image. The image needs to be a memory buffer or represent a file on disc that has been mapped or can be mapped.

Parameters

reg

region to operate upon

 

r

VipsRect of pixels you need to be able to address

 

Returns

0 on success, or -1 for error.


vips_region_region ()

int
vips_region_region (VipsRegion *reg,
                    VipsRegion *dest,
                    VipsRect *r,
                    int x,
                    int y);

Make VIPS_REGION_ADDR() on reg go to dest instead.

r is the part of reg which you want to be able to address (this effectively becomes the valid field), (x , y ) is the top LH corner of the corresponding area in dest .

Performs all clipping necessary to ensure that reg->valid is indeed valid.

If the region we attach to is modified, we can be left with dangling pointers! If the region we attach to is on another image, the two images must have the same sizeof( pel ).

Parameters

reg

region to operate upon

 

dest

region to connect to

 

r

VipsRect of pixels you need to be able to address

 

x

postion of r in dest

 

y

postion of r in dest

 

Returns

0 on success, or -1 for error.


vips_region_equalsregion ()

int
vips_region_equalsregion (VipsRegion *reg1,
                          VipsRegion *reg2);

Do two regions point to the same piece of image? ie.

	VIPS_REGION_ADDR( reg1, x, y ) == VIPS_REGION_ADDR( reg2, x, y ) &&
	*VIPS_REGION_ADDR( reg1, x, y ) == 
		*VIPS_REGION_ADDR( reg2, x, y ) for all x, y, reg1, reg2.

Parameters

reg1

region to test

 

reg2

region to test

 

Returns

non-zero on equality.


vips_region_position ()

int
vips_region_position (VipsRegion *reg,
                      int x,
                      int y);

Set the position of a region. This only affects reg->valid, ie. the way pixels are addressed, not reg->data, the pixels which are addressed. Clip against the size of the image. Do not allow negative positions, or positions outside the image.

Parameters

reg

region to operate upon

 

x

position to move to

 

y

position to move to

 

Returns

0 on success, or -1 for error.


vips_region_paint ()

void
vips_region_paint (VipsRegion *reg,
                   VipsRect *r,
                   int value);

Paints value into reg covering rectangle r . For int images, value is passed to memset(), so it usually needs to be 0 or 255. For float images, value is cast to a float and copied in to each band element.

r is clipped against reg->valid .

See also: vips_region_black().

Parameters

reg

region to operate upon

 

r

area to paint

 

value

value to paint

 

vips_region_paint_pel ()

void
vips_region_paint_pel (VipsRegion *reg,
                       VipsRect *r,
                       VipsPel *ink);

Paints ink into reg covering rectangle r . r is clipped against reg->valid .

ink should be a byte array of the same size as an image pixel containing the binary value to write into the pixels.

See also: vips_region_paint().

Parameters

reg

region to operate upon

 

r

area to paint

 

ink

value to paint

 

vips_region_black ()

void
vips_region_black (VipsRegion *reg);

Paints 0 into the valid part of reg .

See also: vips_region_paint().

Parameters

reg

region to operate upon

 

vips_region_copy ()

void
vips_region_copy (VipsRegion *reg,
                  VipsRegion *dest,
                  VipsRect *r,
                  int x,
                  int y);

Copy from one region to another. Copy area r from inside reg to dest , positioning the area of pixels at x , y . The two regions must have pixels which are the same size.

See also: vips_region_paint().

Parameters

reg

source region

 

dest

destination region

 

r

VipsRect of pixels you need to copy

 

x

postion of r in dest

 

y

postion of r in dest

 

vips_region_shrink ()

int
vips_region_shrink (VipsRegion *from,
                    VipsRegion *to,
                    VipsRect *target);

Write the pixels target in to from the x2 larger area in from . Non-complex uncoded images and LABQ only.

See also: vips_region_copy().

Parameters

from

source region

 

to

destination region

 

target

VipsRect of pixels you need to copy

 

vips_region_prepare ()

int
vips_region_prepare (VipsRegion *reg,
                     VipsRect *r);

vips_region_prepare() fills reg with pixels. After calling, you can address at least the area r with VIPS_REGION_ADDR() and get valid pixels.

vips_region_prepare() runs in-line, that is, computation is done by the calling thread, no new threads are involved, and computation blocks until the pixels are ready.

Use vips_sink_screen() to calculate an area of pixels in the background.

See also: vips_sink_screen(), vips_region_prepare_to().

Parameters

reg

region to prepare

 

r

VipsRect of pixels you need to be able to address

 

Returns

0 on success, or -1 on error.


vips_region_prepare_to ()

int
vips_region_prepare_to (VipsRegion *reg,
                        VipsRegion *dest,
                        VipsRect *r,
                        int x,
                        int y);

Like vips_region_prepare(): fill reg with data, ready to be read from by our caller. Unlike vips_region_prepare(), rather than allocating memory local to reg for the result, we guarantee that we will fill the pixels in dest at offset x , y . In other words, we generate an extra copy operation if necessary.

Also unlike vips_region_prepare(), dest is not set up for writing for you with vips_region_buffer(). You can point dest at anything, and pixels really will be written there. This makes vips_region_prepare_to() useful for making the ends of pipelines, since it (effectively) makes a break in the pipe.

See also: vips_region_prepare(), vips_sink_disc().

Parameters

reg

region to prepare

 

dest

region to write to

 

r

VipsRect of pixels you need to be able to address

 

x

postion of r in dest

 

y

postion of r in dest

 

Returns

0 on success, or -1 on error


vips_region_prepare_many ()

int
vips_region_prepare_many (VipsRegion **reg,
                          VipsRect *r);

vips_region_invalidate ()

void
vips_region_invalidate (VipsRegion *reg);

Mark a region as containing invalid pixels. Calling this function means that the next time vips_region_prepare() is called, the region will be recalculated.

This is faster than calling vips_image_invalidate_all(), but obviously only affects a single region.

See also: vips_image_invalidate_all(), vips_region_prepare().

Parameters

reg

region to invalidate

 

vips_region_dump_all ()

void
vips_region_dump_all (void);

VIPS_REGION_LSKIP()

#define             VIPS_REGION_LSKIP( R )

Parameters

R

a VipsRegion

 

Returns

The number of bytes to add to move down a scanline.


VIPS_REGION_N_ELEMENTS()

#define             VIPS_REGION_N_ELEMENTS( R )

Parameters

R

a VipsRegion

 

Returns

The number of band elements across a region.


VIPS_REGION_SIZEOF_LINE()

#define             VIPS_REGION_SIZEOF_LINE( R )

Parameters

R

a VipsRegion

 

Returns

The number of bytes across a region.


VIPS_REGION_ADDR()

#define             VIPS_REGION_ADDR( R, X, Y )

This macro returns a pointer to a pixel in a region. The (X , Y ) coordinates need to be within the VipsRect (R->valid ).

If DEBUG is defined, you get a version that checks bounds for you.

See also: vips_region_prepare().

Parameters

R

a VipsRegion

 

X

x coordinate

 

Y

y coordinate

 

Returns

The address of pixel (X ,Y ) in R .


VIPS_REGION_ADDR_TOPLEFT()

#define VIPS_REGION_ADDR_TOPLEFT( R ) ((R)->data)

This macro returns a pointer to the top-left pixel in the VipsRegion, that is, the pixel at (R->valid.left , R->valid.top ).

See also: vips_region_prepare().

Parameters

R

a VipsRegion

 

Returns

The address of the top-left pixel in the region.

Types and Values

See Also

image, generate
vips-8.2.2/doc/html/file-format.html0000664000175000017500000002500312651721507014241 00000000000000 The VIPS file format: VIPS Reference Manual

The VIPS file format

File format — The VIPS file format

Introduction

VIPS has a simple, native file format. It's very fast, there is no image size limit, and it supports arbitrary metadata. Although few other programs can read these images (though recent versions of ImageMagick do have basic support for .vips format), it can be useful as an intermediate format for command-line processing. For example:

$ vips invert input.tif t.v
$ vips gamma t.v output.tif

is faster than using .tif for the temporary intermediate image. This section documents the VIPS file format.

VIPS comes with a command-line program called vipsedit which is useful for destructively changing fields in a vips image. The vipsheader program can be used to extract any metadata.

VIPS files come in three parts. First, there is a 64-byte header, containing an identifying magic number and a set of very basic fields, such as image width in pixels. Next, the image data is stored as a set of band-interleaved scanlines, from the top of the image to the bottom. Finally, after the pixel data comes an optional block of XML containing any extra metadata, such as an ICC profile or the EXIF data.

The header

The fields in the VIPS header are always stored least-significant byte first (Intel ordering). Only the most basic information about the image is in the header: most metadata is stored in the XML extension block after the pixel data.

If the first four bytes of the file are in order 08 f2 a6 b6, the image data (see the next section) is stored in Intel byte order (LSB first) and will need to be swapped if read on a SPARC-style machine (MSB first). If the magic number is b6 a6 f2 08, the image data is in SPARC order and will need to swapped if read on an Intel-style machine. libvips does this swapping automatically.

Table 2. The VIPS header

Bytes Type VIPS name Meaning
0 -- 3     VIPS magic number: 08 f2 a6 b6, or b6 a6 f2 08
4 -- 7 gint width Width of image, in pixels
8 -- 11 gint height Height of image, in pixels
12 -- 15 gint bands Number of image bands
16 -- 19     Unused
20 -- 23 VipsBandFormat format Band format
24 -- 27 VipsCoding coding Image coding
28 -- 31 VipsInterpretation interpretation Pixel interpretation
32 -- 35 gfloat xres Horizontal resolution, in pixels per millimetre
36 -- 39 gfloat yres Vertical resolution, in pixels per millimetre
40 -- 47     Unused
48 -- 51 gint xoffset Horizontal offset of origin, in pixels
52 -- 55 gint yoffset Vertical offset of origin, in pixels
56 -- 63     Unused


The image data

If coding is set to VIPS_CODING_NONE, pixels are stored in native C format, that is, the native format of the machine that wrote the data. If you open a big-endian image on a little-endian machine, VIPS will automatically byte-swap for you. VIPS has 10 band formats, see VipsBandFormat. Image data is stored as a simple list of scanlines, from the top of the image to the bottom. Pixels are band-interleaved, so RGBRGBRGBRGB, for example. There is no padding at the end of scanlines.

If coding is set to VIPS_CODING_LABQ, each pixel is four bytes, with 10 bits for L* and 11 bits for each of a* and b*. These 32 bits are packed into 4 bytes, with the most significant 8 bits of each value in the first 3 bytes, and the left-over bits packed into the final byte as 2:3:3.

If coding is set to VIPS_CODING_RAD, each pixel is RGB or XYZ float, with 8 bits of mantissa and then 8 bits of exponent, shared between the three channels. This coding style is used by the Radiance family of programs (and the HDR format) commonly used for HDR imaging.

Other values of coding can set other coding styles. Use VIPS_IMAGE_SIZEOF_IMAGE() to calculate the size of the image data section.

The metadata

Following the image data is a chunk of XML holding a simple list of name-value pairs. Binary data is encoded with base64. Use vips_image_set() and friends to set and get image metadata.

You can use vipsheader -f getext some_file.v to get the XML from a VIPS image, and vipsedit --setext some_file.v < file.xml to replace the XML.

vips-8.2.2/doc/html/libvips-histogram.html0000664000175000017500000010703712651721507015507 00000000000000 histogram: VIPS Reference Manual

histogram

histogram — find, manipulate and apply histograms and lookup tables

Stability Level

Stable, unless otherwise indicated

Functions

int vips_maplut ()
int vips_percent ()
int vips_stdif ()
int vips_hist_cum ()
int vips_hist_norm ()
int vips_hist_equal ()
int vips_hist_plot ()
int vips_hist_match ()
int vips_hist_local ()
int vips_hist_ismonotonic ()
int vips_hist_entropy ()

Includes

#include <vips/vips.h>

Description

Histograms and look-up tables are 1xn or nx1 images, where n is less than 256 or less than 65536, corresponding to 8- and 16-bit unsigned int images. They are tagged with a VipsInterpretation of VIPS_INTERPRETATION_HISTOGRAM and usually displayed by user-interfaces such as nip2 as plots rather than images.

These functions can be broadly grouped as things to find or build histograms (vips_hist_find(), vips_buildlut(), vips_identity()), operations that manipulate histograms in some way (vips_hist_cum(), vips_hist_norm()), operations to apply histograms (vips_maplut()), and a variety of utility operations.

A final group of operations build tone curves. These are useful in pre-press work for adjusting the appearance of images. They are designed for CIELAB images, but might be useful elsewhere.

Functions

vips_maplut ()

int
vips_maplut (VipsImage *in,
             VipsImage **out,
             VipsImage *lut,
             ...);

Optional arguments:

band : apply one-band lut to this band of in

Map an image through another image acting as a LUT (Look Up Table). The lut may have any type and the output image will be that type.

The input image will be cast to one of the unsigned integer types, that is, VIPS_FORMAT_UCHAR, VIPS_FORMAT_USHORT or VIPS_FORMAT_UINT.

If lut is too small for the input type (for example, if in is VIPS_FORMAT_UCHAR but lut only has 100 elements), the lut is padded out by copying the last element. Overflows are reported at the end of computation. If lut is too large, extra values are ignored.

If lut has one band and band is -1 (the default), then all bands of in pass through lut . If band is >= 0, then just that band of in passes through lut and other bands are just copied.

If lut has same number of bands as in , then each band is mapped separately. If in has one band, then lut may have many bands and the output will have the same number of bands as lut .

See also: vips_hist_find(), vips_identity().

Parameters

in

input image

 

out

output image

 

lut

look-up table

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_percent ()

int
vips_percent (VipsImage *in,
              double percent,
              int *threshold,
              ...);

vips_percent() returns (through the threshold parameter) the threshold above which there are percent values of in . If for example percent=10, the number of pels of the input image with values greater than threshold will correspond to 10% of all pels of the image.

The function works for uchar and ushort images only. It can be used to threshold the scaled result of a filtering operation.

See also: vips_hist_find(), vips_profile().

Parameters

in

input image

 

percent

threshold percentage

 

threshold

output threshold value

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_stdif ()

int
vips_stdif (VipsImage *in,
            VipsImage **out,
            int width,
            int height,
            ...);

Optional arguments:

a : weight of new mean m0 : target mean b : weight of new deviation s0 : target deviation

vips_stdif() preforms statistical differencing according to the formula given in page 45 of the book "An Introduction to Digital Image Processing" by Wayne Niblack. This transformation emphasises the way in which a pel differs statistically from its neighbours. It is useful for enhancing low-contrast images with lots of detail, such as X-ray plates.

At point (i,j) the output is given by the equation:

vout(i,j) = @a * @m0 + (1 - @a) * meanv + 
      (vin(i,j) - meanv) * (@b * @s0) / (@s0 + @b * stdv)

Values a , m0 , b and s0 are entered, while meanv and stdv are the values calculated over a moving window of size width , height centred on pixel (i,j). m0 is the new mean, a is the weight given to it. s0 is the new standard deviation, b is the weight given to it.

Try:

vips stdif $VIPSHOME/pics/huysum.v fred.v 0.5 128 0.5 50 11 11

The operation works on one-band uchar images only, and writes a one-band uchar image as its result. The output image has the same size as the input.

See also: vips_hist_local().

Parameters

in

input image

 

out

output image

 

width

width of region

 

height

height of region

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_cum ()

int
vips_hist_cum (VipsImage *in,
               VipsImage **out,
               ...);

Form cumulative histogram.

See also: vips_hist_norm().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_norm ()

int
vips_hist_norm (VipsImage *in,
                VipsImage **out,
                ...);

Normalise histogram ... normalise range to make it square (ie. max == number of elements). Normalise each band separately.

See also: vips_hist_cum().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_equal ()

int
vips_hist_equal (VipsImage *in,
                 VipsImage **out,
                 ...);

Optional arguments:

band : band to equalise

Histogram-equalise in . Equalise using band bandno , or if bandno is -1, equalise bands independently.

See also:

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_plot ()

int
vips_hist_plot (VipsImage *in,
                VipsImage **out,
                ...);

Plot a 1 by any or any by 1 image file as a max by any or any by max image using these rules:

unsigned char max is always 256

other unsigned integer types output 0 - maxium value of in .

signed int types min moved to 0, max moved to max + min.

float types min moved to 0, max moved to any (square output)

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_match ()

int
vips_hist_match (VipsImage *in,
                 VipsImage *ref,
                 VipsImage **out,
                 ...);

Adjust in to match ref . If in and ref are normalised cumulative histograms, out will be a LUT that adjusts the PDF of the image from which in was made to match the PDF of ref 's image.

See also: vips_maplut(), vips_hist_find(), vips_hist_norm(), vips_hist_cum().

Parameters

in

input histogram

 

ref

reference histogram

 

out

output histogram

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_local ()

int
vips_hist_local (VipsImage *in,
                 VipsImage **out,
                 int width,
                 int height,
                 ...);

Performs local histogram equalisation on in using a window of size xwin by ywin centered on the input pixel.

The output image is the same size as the input image. The edge pixels are created by copy edge pixels of the input image outwards.

See also: vips_hist_equal().

Parameters

in

input image

 

out

output image

 

width

width of region

 

height

height of region

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_ismonotonic ()

int
vips_hist_ismonotonic (VipsImage *in,
                       gboolean *out,
                       ...);

Test in for monotonicity. out is set non-zero if in is monotonic.

Parameters

in

lookup-table to test

 

out

set non-zero if in is monotonic

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_entropy ()

int
vips_hist_entropy (VipsImage *in,
                   double *out,
                   ...);

Estimate image entropy from a histogram. Entropy is calculated as:

-sum( p * log2( p ) )

where p is histogram-value / sum-of-histogram-values.

Parameters

in

input histogram

 

out

image entropy

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error

Types and Values

vips-8.2.2/doc/html/libvips-VipsForeignSave.html0000664000175000017500000050532712651721507016570 00000000000000 VipsForeignSave: VIPS Reference Manual

VipsForeignSave

VipsForeignSave — load and save images in a variety of formats

Stability Level

Stable, unless otherwise indicated

Functions

void * vips_foreign_map ()
const char * vips_foreign_find_load ()
const char * vips_foreign_find_load_buffer ()
VipsForeignFlags vips_foreign_flags ()
gboolean vips_foreign_is_a ()
gboolean vips_foreign_is_a_buffer ()
const char * vips_foreign_find_save ()
const char * vips_foreign_find_save_buffer ()
int vips_vipsload ()
int vips_vipssave ()
int vips_openslideload ()
int vips_jpegload ()
int vips_jpegload_buffer ()
int vips_jpegsave ()
int vips_jpegsave_buffer ()
int vips_jpegsave_mime ()
int vips_webpload ()
int vips_webpload_buffer ()
int vips_webpsave ()
int vips_webpsave_buffer ()
int vips_webpsave_mime ()
int vips_tiffload ()
int vips_tiffload_buffer ()
int vips_tiffsave ()
int vips_openexrload ()
int vips_fitsload ()
int vips_fitssave ()
int vips_analyzeload ()
int vips_rawload ()
int vips_rawsave ()
int vips_rawsave_fd ()
int vips_csvload ()
int vips_csvsave ()
int vips_matrixload ()
int vips_matrixsave ()
int vips_matrixprint ()
int vips_magickload ()
int vips_magickload_buffer ()
int vips_pngload ()
int vips_pngload_buffer ()
int vips_pngsave ()
int vips_pngsave_buffer ()
int vips_ppmload ()
int vips_ppmsave ()
int vips_matload ()
int vips_radload ()
int vips_radsave ()
int vips_dzsave ()

Includes

#include <vips/vips.h>

Description

This set of operations load and save images in a variety of formats.

The operations share a base class that offers a simple way to search for a subclass of VipsForeign which can load a certain file (see vips_foreign_find_load()) or buffer (see vips_foreign_find_load_buffer()), or which could be used to save an image to a certain file type (see vips_foreign_find_save() and vips_foreign_find_save_buffer()). You can then run these operations using vips_call() and friends to perform the load or save.

vips_image_write_to_file() and vips_image_new_from_file() and friends use these functions to automate file load and save.

You can also invoke the operations directly, for example:

vips_tiffsave (my_image, "frank.anything", 
    "compression", VIPS_FOREIGN_TIFF_COMPRESSION_JPEG,
    NULL);

To add support for a new file format to vips, simply define a new subclass of VipsForeignLoad or VipsForeignSave.

If you define a new operation which is a subclass of VipsForeign, support for it automatically appears in all VIPS user-interfaces. It will also be transparently supported by vips_image_new_from_file() and friends.

VIPS comes with VipsForeign for TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP and VIPS. It also includes import filters which can load with libMagick and with OpenSlide.

Functions

vips_foreign_map ()

void *
vips_foreign_map (const char *base,
                  VipsSListMap2Fn fn,
                  void *a,
                  void *b);

Apply a function to every VipsForeignClass that VIPS knows about. Foreigns are presented to the function in priority order.

Like all VIPS map functions, if fn returns NULL, iteration continues. If it returns non-NULL, iteration terminates and that value is returned. The map function returns NULL if all calls return NULL.

See also: vips_slist_map().

Parameters

base

base class to search below (eg. "VipsForeignLoad")

 

fn

function to apply to each VipsForeignClass.

[scope call]

a

user data

 

b

user data

 

Returns

the result of iteration.

[transfer none]


vips_foreign_find_load ()

const char *
vips_foreign_find_load (const char *filename);

Searches for an operation you could use to load filename . Any trailing options on filename are stripped and ignored.

See also: vips_foreign_find_load_buffer(), vips_image_new_from_file().

Parameters

filename

file to find a loader for

 

Returns

the name of an operation on success, NULL on error


vips_foreign_find_load_buffer ()

const char *
vips_foreign_find_load_buffer (const void *data,
                               size_t size);

Searches for an operation you could use to load a memory buffer.

See also: vips_image_new_from_buffer().

Parameters

data

start of memory buffer.

[array length=size][element-type guint8][transfer none]

size

number of bytes in data

 

Returns

the name of an operation on success, NULL on error.

[transfer none]


vips_foreign_flags ()

VipsForeignFlags
vips_foreign_flags (const char *loader,
                    const char *filename);

Return the flags for filename using loader . loader is something like "tiffload" or "VipsForeignLoadTiff".

Parameters

loader

name of loader to use for test

 

filename

file to test

 

Returns

the flags for filename .


vips_foreign_is_a ()

gboolean
vips_foreign_is_a (const char *loader,
                   const char *filename);

Return TRUE if filename can be loaded by loader . loader is something like "tiffload" or "VipsForeignLoadTiff".

Parameters

loader

name of loader to use for test

 

filename

file to test

 

Returns

TRUE if filename can be loaded by loader .


vips_foreign_is_a_buffer ()

gboolean
vips_foreign_is_a_buffer (const char *loader,
                          const void *data,
                          size_t size);

Return TRUE if data can be loaded by loader . loader is something like "tiffload_buffer" or "VipsForeignLoadTiffBuffer".

Parameters

loader

name of loader to use for test

 

data

pointer to the buffer to test

 

size

size of the buffer to test

 

Returns

TRUE if data can be loaded by loader .


vips_foreign_find_save ()

const char *
vips_foreign_find_save (const char *filename);

Searches for an operation you could use to write to filename . Any trailing options on filename are stripped and ignored.

See also: vips_foreign_find_save_buffer(), vips_image_write_to_file().

Parameters

filename

name to find a saver for

 

Returns

the name of an operation on success, NULL on error


vips_foreign_find_save_buffer ()

const char *
vips_foreign_find_save_buffer (const char *suffix);

Searches for an operation you could use to write to a buffer in suffix format.

See also: vips_image_write_to_buffer().

Parameters

suffix

name to find a saver for

 

Returns

the name of an operation on success, NULL on error


vips_vipsload ()

int
vips_vipsload (const char *filename,
               VipsImage **out,
               ...);

Read in a vips image.

See also: vips_vipssave().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_vipssave ()

int
vips_vipssave (VipsImage *in,
               const char *filename,
               ...);

Write in to filename in VIPS format.

See also: vips_vipsload().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_openslideload ()

int
vips_openslideload (const char *filename,
                    VipsImage **out,
                    ...);

Optional arguments:

level : load this level associated : load this associated image autocrop : crop to image bounds

Read a virtual slide supported by the OpenSlide library into a VIPS image. OpenSlide supports images in Aperio, Hamamatsu, MIRAX, Sakura, Trestle, and Ventana formats.

To facilitate zooming, virtual slide formats include multiple scaled-down versions of the high-resolution image. These are typically called "levels". By default, vips_openslideload() reads the highest-resolution level (level 0). Set level to the level number you want.

In addition to the slide image itself, virtual slide formats sometimes include additional images, such as a scan of the slide's barcode. OpenSlide calls these "associated images". To read an associated image, set associated to the image's name. A slide's associated images are listed in the "slide-associated-images" metadata item.

The output of this operator is always RGBA.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_jpegload ()

int
vips_jpegload (const char *filename,
               VipsImage **out,
               ...);

Optional arguments:

shrink : gint, shrink by this much on load fail : gboolean, fail on warnings autorotate : gboolean, use exif Orientation tag to rotate the image during load

Read a JPEG file into a VIPS image. It can read most 8-bit JPEG images, including CMYK and YCbCr.

shrink means shrink by this integer factor during load. Possible values are 1, 2, 4 and 8. Shrinking during read is very much faster than decompressing the whole image and then shrinking later.

Setting fail to TRUE makes the JPEG reader fail on any warnings. This can be useful for detecting truncated files, for example. Normally reading these produces a warning, but no fatal error.

Setting autorotate to TRUE will make the loader interpret the EXIF Orientation field and automatically rotate the image appropriately during load. After rotation, the Orientation tag will be removed to prevent accidental double-rotation.

Using autorotate can be much slower than doing the rotate later in processing. See vips_autorot().

Example:

vips_jpegload( "fred.jpg", &out,
	"shrink", 8,
	"fail", TRUE,
	NULL );

Any embedded ICC profiles are ignored: you always just get the RGB from the file. Instead, the embedded profile will be attached to the image as VIPS_META_ICC_NAME ("icc-profile-data"). You need to use something like vips_icc_import() to get CIE values from the file.

EXIF metadata is attached as VIPS_META_EXIF_NAME ("exif-data"), IPCT as VIPS_META_IPCT_NAME ("ipct-data"), and XMP as VIPS_META_XMP_NAME ("xmp-data").

The int metadata item "jpeg-multiscan" is set to the result of jpeg_has_multiple_scans(). Interlaced jpeg images need a large amount of memory to load, so this field gives callers a chance to handle these images differently.

The EXIF thumbnail, if present, is attached to the image as "jpeg-thumbnail-data". See vips_image_get_blob().

This function only reads the image header and does not decompress any pixel data. Decompression only occurs when pixels are accessed.

See also: vips_jpegload_buffer(), vips_image_new_from_file().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_jpegload_buffer ()

int
vips_jpegload_buffer (void *buf,
                      size_t len,
                      VipsImage **out,
                      ...);

Optional arguments:

shrink : gint, shrink by this much on load fail : gboolean, fail on warnings

Read a JPEG-formatted memory block into a VIPS image. Exactly as vips_jpegload(), but read from a memory buffer.

You must not free the buffer while out is active. The “postclose†signal on out is a good place to free.

See also: vips_jpegload().

Parameters

buf

memory area to load

 

len

size of memory area

 

out

image to write

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_jpegsave ()

int
vips_jpegsave (VipsImage *in,
               const char *filename,
               ...);

Optional arguments:

Q : gint, quality factor profile : filename of ICC profile to attach optimize_coding : gboolean, compute optimal Huffman coding tables interlace : gboolean, write an interlaced (progressive) jpeg strip : gboolean, remove all metadata from image no -subsample: gboolean, disable chroma subsampling trellis_quant : gboolean, apply trellis quantisation to each 8x8 block overshoot_deringing : gboolean, overshoot samples with extreme values optimize_scans : gboolean, split DCT coefficients into separate scans

Write a VIPS image to a file as JPEG.

Use Q to set the JPEG compression factor. Default 75.

Use profile to give the filename of a profile to be embedded in the JPEG. This does not affect the pixels which are written, just the way they are tagged. You can use the special string "none" to mean "don't attach a profile".

If no profile is specified and the VIPS header contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the profile from the VIPS header will be attached.

The image is automatically converted to RGB, Monochrome or CMYK before saving.

EXIF data is constructed from VIPS_META_EXIF_NAME ("exif-data"), then modified with any other related tags on the image before being written to the file.

IPCT as VIPS_META_IPCT_NAME ("ipct-data") and XMP as VIPS_META_XMP_NAME ("xmp-data") are coded and attached.

If optimize_coding is set, the Huffman tables are optimised. This is sllightly slower and produces slightly smaller files.

If interlace is set, the jpeg files will be interlaced (progressive jpeg, in jpg parlance). These files may be better for display over a slow network conection, but need much more memory to encode and decode.

If strip is set, no EXIF data, IPCT data, ICC profile or XMP metadata is written into the output file.

If no -subsample is set, chrominance subsampling is disabled. This will improve quality at the cost of larger file size. Useful for high Q factors.

If trellis_quant is set and the version of libjpeg supports it (e.g. mozjpeg >= 3.0), apply trellis quantisation to each 8x8 block. Reduces file size but increases compression time.

If overshoot_deringing is set and the version of libjpeg supports it (e.g. mozjpeg >= 3.0), apply overshooting to samples with extreme values for example 0 and 255 for 8-bit. Overshooting may reduce ringing artifacts from compression, in particular in areas where black text appears on a white background.

If optimize_scans is set and the version of libjpeg supports it (e.g. mozjpeg >= 3.0), split the spectrum of DCT coefficients into separate scans. Reduces file size but increases compression time.

See also: vips_jpegsave_buffer(), vips_image_write_to_file().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_jpegsave_buffer ()

int
vips_jpegsave_buffer (VipsImage *in,
                      void **buf,
                      size_t *len,
                      ...);

Optional arguments:

Q : JPEG quality factor profile : attach this ICC profile optimize_coding : compute optimal Huffman coding tables interlace : write an interlaced (progressive) jpeg strip : remove all metadata from image no -subsample: disable chroma subsampling trellis_quant : gboolean, apply trellis quantisation to each 8x8 block overshoot_deringing : gboolean, overshoot samples with extreme values optimize_scans : gboolean, split DCT coefficients into separate scans

As vips_jpegsave(), but save to a memory buffer.

The address of the buffer is returned in obuf , the length of the buffer in olen . You are responsible for freeing the buffer with g_free() when you are done with it.

See also: vips_jpegsave(), vips_image_write_to_file().

Parameters

in

image to save

 

buf

return output buffer here

 

len

return output length here

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_jpegsave_mime ()

int
vips_jpegsave_mime (VipsImage *in,
                    ...);

Optional arguments:

Q : JPEG quality factor profile : attach this ICC profile optimize_coding : compute optimal Huffman coding tables strip : remove all metadata from image no -subsample: disable chroma subsampling trellis_quant : gboolean, apply trellis quantisation to each 8x8 block overshoot_deringing : gboolean, overshoot samples with extreme values optimize_scans : gboolean, split DCT coefficients into separate scans

As vips_jpegsave(), but save as a mime jpeg on stdout.

See also: vips_jpegsave(), vips_image_write_to_file().

Parameters

in

image to save

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_webpload ()

int
vips_webpload (const char *filename,
               VipsImage **out,
               ...);

Read a WebP file into a VIPS image.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_webpload_buffer ()

int
vips_webpload_buffer (void *buf,
                      size_t len,
                      VipsImage **out,
                      ...);

Read a WebP-formatted memory block into a VIPS image. Exactly as vips_webpload(), but read from a memory buffer.

You must not free the buffer while out is active. The “postclose†signal on out is a good place to free.

See also: vips_webpload()

Parameters

buf

memory area to load

 

len

size of memory area

 

out

image to write

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_webpsave ()

int
vips_webpsave (VipsImage *in,
               const char *filename,
               ...);

Optional arguments:

Q : quality factor

See also: vips_webpload(), vips_image_write_to_file().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_webpsave_buffer ()

int
vips_webpsave_buffer (VipsImage *in,
                      void **buf,
                      size_t *len,
                      ...);

Optional arguments:

Q : JPEG quality factor

See also: vips_webpsave().

Parameters

in

image to save

 

buf

return output buffer here

 

len

return output length here

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_webpsave_mime ()

int
vips_webpsave_mime (VipsImage *in,
                    ...);

Optional arguments:

Q : quality factor

As vips_webpsave(), but save as a mime webp on stdout.

See also: vips_webpsave(), vips_image_write_to_file().

Parameters

in

image to save

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_tiffload ()

int
vips_tiffload (const char *filename,
               VipsImage **out,
               ...);

Optional arguments:

page : int, load this page

Read a TIFF file into a VIPS image. It is a full baseline TIFF 6 reader, with extensions for tiled images, multipage images, LAB colour space, pyramidal images and JPEG compression. including CMYK and YCbCr.

page means load this page from the file. By default the first page (page 0) is read.

Any ICC profile is read and attached to the VIPS image. Any XMP metadata is read and attached to the image.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_tiffload_buffer ()

int
vips_tiffload_buffer (void *buf,
                      size_t len,
                      VipsImage **out,
                      ...);

Optional arguments:

page : gint, load this page

Read a TIFF-formatted memory block into a VIPS image. Exactly as vips_tiffload(), but read from a memory source.

You must not free the buffer while out is active. The “postclose†signal on out is a good place to free.

See also: vips_tiffload().

Parameters

buf

memory area to load

 

len

size of memory area

 

out

image to write

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_tiffsave ()

int
vips_tiffsave (VipsImage *in,
               const char *filename,
               ...);

Optional arguments:

compression : use this VipsForeignTiffCompression Q : gint quality factor predictor : use this VipsForeignTiffPredictor profile : filename of ICC profile to attach tile : set TRUE to write a tiled tiff tile_width : gint for tile size tile_height : gint for tile size pyramid : set TRUE to write an image pyramid squash : set TRUE to squash 8-bit images down to 1 bit miniswhite : set TRUE to write 1-bit images as MINISWHITE resunit : VipsForeignTiffResunit for resolution unit xres : gdouble horizontal resolution in pixels/mm yres : gdouble vertical resolution in pixels/mm bigtiff : set TRUE to write a BigTiff file

Write a VIPS image to a file as TIFF.

Use compression to set the tiff compression. Currently jpeg, packbits, fax4, lzw, none and deflate are supported. The default is no compression. JPEG compression is a good lossy compressor for photographs, packbits is good for 1-bit images, and deflate is the best lossless compression TIFF can do. LZW has patent problems and is no longer recommended.

Use Q to set the JPEG compression factor. Default 75.

Use predictor to set the predictor for lzw and deflate compression.

Predictor is not set by default. There are three predictor values recognised at the moment (2007, July): 1 is no prediction, 2 is a horizontal differencing and 3 is a floating point predictor. Refer to the libtiff specifications for further discussion of various predictors. In short, predictor helps to better compress image, especially in case of digital photos or scanned images and bit depths > 8. Try it to find whether it works for your images.

Use profile to give the filename of a profile to be embedded in the TIFF. This does not affect the pixels which are written, just the way they are tagged. You can use the special string "none" to mean "don't attach a profile".

If no profile is specified and the VIPS header contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the profile from the VIPS header will be attached.

Set tile to TRUE to write a tiled tiff. By default tiff are written in strips. Use tile_width and tile_height to set the tile size. The defaiult is 128 by 128.

Set pyramid to write the image as a set of images, one per page, of decreasing size.

Set squash to make 8-bit uchar images write as 1-bit TIFFs. Values >128 are written as white, values <=128 as black. Normally vips will write MINISBLACK TIFFs where black is a 0 bit, but if you set miniswhite , it will use 0 for a white bit. Many pre-press applications only work with images which use this sense. miniswhite only affects one-bit images, it does nothing for greyscale images.

Use resunit to override the default resolution unit. The default resolution unit is taken from the header field "resolution-unit" (VIPS_META_RESOLUTION_UNIT in C). If this field is not set, then VIPS defaults to cm.

Use xres and yres to override the default horizontal and vertical resolutions. By default these values are taken from the VIPS image header. libvips resolution is always in pixels per millimetre.

Set bigtiff to attempt to write a bigtiff. Bigtiff is a variant of the TIFF format that allows more than 4GB in a file.

If in has a field called VIPS_META_XMP_NAME ("xmp-data") it is written to the tiff image.

See also: vips_tiffload(), vips_image_write_to_file().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_openexrload ()

int
vips_openexrload (const char *filename,
                  VipsImage **out,
                  ...);

Read a OpenEXR file into a VIPS image.

The reader can handle scanline and tiled OpenEXR images. It can't handle OpenEXR colour management, image attributes, many pixel formats, anything other than RGBA.

This reader uses the rather limited OpenEXR C API. It should really be redone in C++.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_fitsload ()

int
vips_fitsload (const char *filename,
               VipsImage **out,
               ...);

Read a FITS image file into a VIPS image.

This operation can read images with up to three dimensions. Any higher dimensions must be empty.

It can read 8, 16 and 32-bit integer images, signed and unsigned, float and double.

FITS metadata is attached with the "fits-" prefix.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_fitssave ()

int
vips_fitssave (VipsImage *in,
               const char *filename,
               ...);

Write a VIPS image to a file in FITS format.

See also: vips_image_write_to_file().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_analyzeload ()

int
vips_analyzeload (const char *filename,
                  VipsImage **out,
                  ...);

Load an Analyze 6.0 file. If filename is "fred.img", this will look for an image header called "fred.hdr" and pixel data in "fred.img". You can also load "fred" or "fred.hdr".

Images are loaded lazilly and byte-swapped, if necessary. The Analyze metadata is read and attached.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_rawload ()

int
vips_rawload (const char *filename,
              VipsImage **out,
              int width,
              int height,
              int bands,
              ...);

Optional arguments:

offset : offset in bytes from start of file

This operation mmaps the file, setting out so that access to that image will read from the file.

out will be a 8-bit uchar image with bands image bands, so bands can be thought of as meaning "number of bytes per pixel". Use functions like vips_copy() to set the exact band format, number of bands, byte ordering and so on.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

output image

 

width

width of image in pixels

 

height

height of image in pixels

 

bands

number of image bands

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_rawsave ()

int
vips_rawsave (VipsImage *in,
              const char *filename,
              ...);

Writes the pixels in in to the file filename with no header or other metadata.

See also: vips_image_write_to_file().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_rawsave_fd ()

int
vips_rawsave_fd (VipsImage *in,
                 int fd,
                 ...);

Writes the pixels in in to the fd with no header or other metadata. Handy for implementing other savers.

See also: vips_rawsave().

Parameters

in

image to save

 

fd

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_csvload ()

int
vips_csvload (const char *filename,
              VipsImage **out,
              ...);

Optional arguments:

skip : skip this many lines at start of file lines : read this many lines from file whitespace : set of whitespace characters separator : set of separator characters

Load a CSV (comma-separated values) file. The output image is always 1 band (monochrome), VIPS_FORMAT_DOUBLE. Use vips_bandfold() to turn RGBRGBRGB mono images into colour iamges.

Items in lines can be either floating point numbers in the C locale, or strings enclosed in double-quotes ("), or empty. You can use a backslash() within the quotes to escape special characters, such as quote marks.

The reader is deliberately rather fussy: it will fail if there are any short lines, or if the file is too short. It will ignore lines that are too long.

skip sets the number of lines to skip at the start of the file. Default zero.

lines sets the number of lines to read from the file. Default -1, meaning read all lines to end of file.

whitespace sets the skippable whitespace characters. Default space. Whitespace characters are always run together.

separator sets the characters that separate fields. Default ;,tab. Separators are never run together.

See also: vips_image_new_from_file(), vips_bandfold().

Parameters

filename

file to load

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_csvsave ()

int
vips_csvsave (VipsImage *in,
              const char *filename,
              ...);

Optional arguments:

separator : separator string

Writes the pixels in in to the filename as CSV (comma-separated values). The image is written one line of text per scanline. Complex numbers are written as "(real,imaginary)" and will need extra parsing I guess. Only the first band is written.

separator gives the string to use to separate numbers in the output. The default is "\t" (tab).

See also: vips_image_write_to_file().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_matrixload ()

int
vips_matrixload (const char *filename,
                 VipsImage **out,
                 ...);

Reads a matrix from a file.

Matrix files have a simple format that's supposed to be easy to create with a text editor or a spreadsheet.

The first line has four numbers for width, height, scale and offset (scale and offset may be omitted, in which case they default to 1.0 and 0.0). Scale must be non-zero. Width and height must be positive integers. The numbers are separated by any mixture of spaces, commas, tabs and quotation marks ("). The scale and offset fields may be floating-point, and must use '.' as a decimal separator.

Subsequent lines each hold one line of matrix data, with numbers again separated by any mixture of spaces, commas, tabs and quotation marks ("). The numbers may be floating-point, and must use '.' as a decimal separator.

Extra characters at the ends of lines or at the end of the file are ignored.

See also: vips_csvload().

Parameters

filename

file to load

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_matrixsave ()

int
vips_matrixsave (VipsImage *in,
                 const char *filename,
                 ...);

Write in to filename in matrix format. See vips_matrixload() for a description of the format.

See also: vips_matrixload().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_matrixprint ()

int
vips_matrixprint (VipsImage *in,
                  ...);

Print in to stdout in matrix format. See vips_matrixload() for a description of the format.

See also: vips_matrixload().

Parameters

in

image to print

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_magickload ()

int
vips_magickload (const char *filename,
                 VipsImage **out,
                 ...);

Optional arguments:

all_frames : gboolean, load all frames in sequence density : string, canvas resolution for rendering vector formats like SVG

Read in an image using libMagick, the ImageMagick library. This library can read more than 80 file formats, including SVG, BMP, EPS, DICOM and many others. The reader can handle any ImageMagick image, including the float and double formats. It will work with any quantum size, including HDR. Any metadata attached to the libMagick image is copied on to the VIPS image.

The reader should also work with most versions of GraphicsMagick. See the "--with-magickpackage" configure option.

Normally it will only load the first image in a many-image sequence (such as a GIF). Set all_frames to true to read the whole image sequence.

density is "WxH" in DPI, e.g. "600x300" or "600" (default is "72x72"). See the density docs on the imagemagick website.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_magickload_buffer ()

int
vips_magickload_buffer (void *buf,
                        size_t len,
                        VipsImage **out,
                        ...);

Optional arguments:

all_frames : gboolean, load all frames in sequence density : string, canvas resolution for rendering vector formats like SVG

Read an image memory block using libMagick into a VIPS image. Exactly as vips_magickload(), but read from a memory source.

You must not free the buffer while out is active. The “postclose†signal on out is a good place to free.

See also: vips_magickload().

Parameters

buf

memory area to load

 

len

size of memory area

 

out

image to write

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_pngload ()

int
vips_pngload (const char *filename,
              VipsImage **out,
              ...);

Optional arguments:

Read a PNG file into a VIPS image. It can read all png images, including 8- and 16-bit images, 1 and 3 channel, with and without an alpha channel.

Any ICC profile is read and attached to the VIPS image.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

decompressed image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_pngload_buffer ()

int
vips_pngload_buffer (void *buf,
                     size_t len,
                     VipsImage **out,
                     ...);

Read a PNG-formatted memory block into a VIPS image. It can read all png images, including 8- and 16-bit images, 1 and 3 channel, with and without an alpha channel.

Any ICC profile is read and attached to the VIPS image.

You must not free the buffer while out is active. The “postclose†signal on out is a good place to free.

See also: vips_pngload().

Parameters

buf

memory area to load

 

len

size of memory area

 

out

image to write

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_pngsave ()

int
vips_pngsave (VipsImage *in,
              const char *filename,
              ...);

Optional arguments:

compression : compression level interlace : interlace image profile : ICC profile to embed filter : VipsForeignPngFilter row filter flag(s)

Write a VIPS image to a file as PNG.

compression means compress with this much effort (0 - 9). Default 6.

Set interlace to TRUE to interlace the image with ADAM7 interlacing. Beware than an interlaced PNG can be up to 7 times slower to write than a non-interlaced image.

Use profile to give the filename of a profile to be embedded in the PNG. This does not affect the pixels which are written, just the way they are tagged. You can use the special string "none" to mean "don't attach a profile".

If profile is specified and the VIPS header contains an ICC profile named VIPS_META_ICC_NAME ("icc-profile-data"), the profile from the VIPS header will be attached.

Use filter to specify one or more filters (instead of adaptive filtering), see VipsForeignPngFilter.

The image is automatically converted to RGB, RGBA, Monochrome or Mono + alpha before saving. Images with more than one byte per band element are saved as 16-bit PNG, others are saved as 8-bit PNG.

See also: vips_image_new_from_file().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_pngsave_buffer ()

int
vips_pngsave_buffer (VipsImage *in,
                     void **buf,
                     size_t *len,
                     ...);

Optional arguments:

compression : compression level interlace : interlace image profile : ICC profile to embed filter : libpng row filter flag(s)

As vips_pngsave(), but save to a memory buffer.

The address of the buffer is returned in obuf , the length of the buffer in olen . You are responsible for freeing the buffer with g_free() when you are done with it.

See also: vips_pngsave(), vips_image_write_to_file().

Parameters

in

image to save

 

buf

return output buffer here

 

len

return output length here

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_ppmload ()

int
vips_ppmload (const char *filename,
              VipsImage **out,
              ...);

Read a PPM/PBM/PGM/PFM file into a VIPS image.

It can read 1, 8, 16 and 32 bit images, colour or monochrome, stored in binary or in ASCII. One bit images become 8 bit VIPS images, with 0 and 255 for 0 and 1.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_ppmsave ()

int
vips_ppmsave (VipsImage *in,
              const char *filename,
              ...);

Optional arguments:

ascii : save as ASCII rather than binary squash : squash 8-bit images down to one bit

Write a VIPS image to a file as PPM. It can write 1, 8, 16 or 32 bit unsigned integer images, float images, colour or monochrome, stored as binary or ASCII. Integer images of more than 8 bits can only be stored in ASCII.

When writing float (PFM) images the scale factor is set from the "pfm-scale" metadata.

Set ascii to TRUE to write as human-readable ASCII. Normally data is written in binary.

Set squash to TRUE to squash 8-bit images down to one bit. The saver does no dithering, that's up to you.

See also: vips_image_write_to_file().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_matload ()

int
vips_matload (const char *filename,
              VipsImage **out,
              ...);

Read a Matlab save file into a VIPS image.

This operation searches the save file for the first array variable with between 1 and 3 dimensions and loads it as an image. It will not handle complex images. It does not handle sparse matrices.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_radload ()

int
vips_radload (const char *filename,
              VipsImage **out,
              ...);

Read a Radiance (HDR) file into a VIPS image.

Radiance files are read as VIPS_CODING_RAD. They have one byte for each of red, green and blue, and one byte of shared exponent. Some operations (like vips_extract_area()) can work directly with images in this format, but mmany (all the arithmetic operations, for example) will not. Unpack VIPS_CODING_RAD images to 3 band float with vips_rad2float() if you want to do arithmetic on them.

This operation ignores some header fields, like VIEW and DATE. It will not rotate/flip as the FORMAT string asks.

Sections of this reader from Greg Ward and Radiance with kind permission.

See also: vips_image_new_from_file().

Parameters

filename

file to load

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_radsave ()

int
vips_radsave (VipsImage *in,
              const char *filename,
              ...);

Write a VIPS image in Radiance (HDR) format.

Sections of this reader from Greg Ward and Radiance with kind permission.

See also: vips_image_write_to_file().

Parameters

in

image to save

 

filename

file to write to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_dzsave ()

int
vips_dzsave (VipsImage *in,
             const char *name,
             ...);

Optional arguments:

layout ; directory layout convention suffix : suffix for tile tiles overlap ; set tile overlap tile_size ; set tile size background : background colour depth : how deep to make the pyramid centre : centre the tiles angle : rotate the image by this much container : set container type properties : write a properties file

Save an image as a set of tiles at various resolutions. By default dzsave uses DeepZoom layout -- use layout to pick other conventions.

vips_dzsave() creates a directory called name to hold the tiles. If name ends .zip, vips_dzsave() will create a zip file called name to hold the tiles. You can use container to force zip file output.

You can set suffix to something like ".jpg[Q=85]" to control the tile write options.

In Google layout mode, edge tiles are expanded to tile_size by tile_size pixels. Normally they are filled with white, but you can set another colour with background . Images are usually placed at the top-left of the tile, but you can have them centred by turning on centre .

You can set the size and overlap of tiles with tile_size and overlap . They default to the correct settings for the selected layout . The deepzoom defaults produce 256x256 jpeg files for centre tiles, the most efficient size.

Use depth to control how low the pyramid goes. This defaults to the correct setting for the layout you select.

If properties is TRUE, vips_dzsave() will write a file called vips-properties.xml to the output directory. This file lists all of the metadata attached to in in an obvious manner. It can be useful for viewing programs which wish to use fields from source files loaded via vips_openslideload().

See also: vips_tiffsave().

Parameters

in

image to save

 

name

name to save to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.

Types and Values

enum VipsForeignFlags

Some hints about the image loader.

VIPS_FOREIGN_PARTIAL means that the image can be read directly from the file without needing to be unpacked to a temporary image first.

VIPS_FOREIGN_SEQUENTIAL means that the loader supports lazy reading, but only top-to-bottom (sequential) access. Formats like PNG can read sets of scanlines, for example, but only in order.

If neither PARTIAL or SEQUENTIAL is set, the loader only supports whole image read. Setting both PARTIAL and SEQUENTIAL is an error.

VIPS_FOREIGN_BIGENDIAN means that image pixels are most-significant byte first. Depending on the native byte order of the host machine, you may need to swap bytes. See vips_copy().

Members

VIPS_FOREIGN_NONE

no flags set

 

VIPS_FOREIGN_PARTIAL

the image may be read lazilly

 

VIPS_FOREIGN_BIGENDIAN

image pixels are most-significant byte first

 

VIPS_FOREIGN_SEQUENTIAL

top-to-bottom lazy reading

 

VIPS_FOREIGN_ALL

   

enum VipsSaveable

See also: VipsForeignSave.

Members

VIPS_SAVEABLE_MONO

1 band (eg. CSV)

 

VIPS_SAVEABLE_RGB

1 or 3 bands (eg. PPM)

 

VIPS_SAVEABLE_RGBA

1, 2, 3 or 4 bands (eg. PNG)

 

VIPS_SAVEABLE_RGBA_ONLY

3 or 4 bands (eg. WEBP)

 

VIPS_SAVEABLE_RGB_CMYK

1, 3 or 4 bands (eg. JPEG)

 

VIPS_SAVEABLE_ANY

any number of bands (eg. TIFF)

 

VIPS_SAVEABLE_LAST

   

enum VipsForeignTiffCompression

The compression types supported by the tiff writer.

Use Q to set the jpeg compression level, default 75.

Use prediction to set the lzw or deflate prediction, default none.

Members

VIPS_FOREIGN_TIFF_COMPRESSION_NONE

no compression

 

VIPS_FOREIGN_TIFF_COMPRESSION_JPEG

jpeg compression

 

VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE

deflate (zip) compression

 

VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS

packbits compression

 

VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4

fax4 compression

 

VIPS_FOREIGN_TIFF_COMPRESSION_LZW

LZW compression

 

VIPS_FOREIGN_TIFF_COMPRESSION_LAST

   

enum VipsForeignTiffPredictor

The predictor can help deflate and lzw compression. The values are fixed by the tiff library.

Members

VIPS_FOREIGN_TIFF_PREDICTOR_NONE

no prediction

 

VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL

horizontal differencing

 

VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT

float predictor

 

VIPS_FOREIGN_TIFF_PREDICTOR_LAST

   

enum VipsForeignTiffResunit

Use inches or centimeters as the resolution unit for a tiff file.

Members

VIPS_FOREIGN_TIFF_RESUNIT_CM

use centimeters

 

VIPS_FOREIGN_TIFF_RESUNIT_INCH

use inches

 

VIPS_FOREIGN_TIFF_RESUNIT_LAST

   

enum VipsForeignPngFilter

http://www.w3.org/TR/PNG-Filters.html The values mirror those of png.h in libpng.

Members

VIPS_FOREIGN_PNG_FILTER_NONE

no filtering

 

VIPS_FOREIGN_PNG_FILTER_SUB

difference to the left

 

VIPS_FOREIGN_PNG_FILTER_UP

difference up

 

VIPS_FOREIGN_PNG_FILTER_AVG

average of left and up

 

VIPS_FOREIGN_PNG_FILTER_PAETH

pick best neighbor predictor automatically

 

VIPS_FOREIGN_PNG_FILTER_ALL

adaptive

 

enum VipsForeignDzLayout

What directory layout and metadata standard to use.

Members

VIPS_FOREIGN_DZ_LAYOUT_DZ

use DeepZoom directory layout

 

VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY

use Zoomify directory layout

 

VIPS_FOREIGN_DZ_LAYOUT_GOOGLE

use Google maps directory layout

 

VIPS_FOREIGN_DZ_LAYOUT_LAST

   

enum VipsForeignDzDepth

How many pyramid layers to create.

Members

VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL

create layers down to 1x1 pixel

 

VIPS_FOREIGN_DZ_DEPTH_ONETILE

create layers down to 1x1 tile

 

VIPS_FOREIGN_DZ_DEPTH_ONE

only create a single layer

 

VIPS_FOREIGN_DZ_DEPTH_LAST

   

enum VipsForeignDzContainer

How many pyramid layers to create.

Members

VIPS_FOREIGN_DZ_CONTAINER_FS

write tiles to the filesystem

 

VIPS_FOREIGN_DZ_CONTAINER_ZIP

write tiles to a zip file

 

VIPS_FOREIGN_DZ_CONTAINER_LAST

   

See Also

image
vips-8.2.2/doc/html/libvips-memory.html0000664000175000017500000006700112651721507015016 00000000000000 memory: VIPS Reference Manual

memory

memory — memory utilities

Stability Level

Stable, unless otherwise indicated

Functions

#define VIPS_FREEF()
#define VIPS_FREE()
#define VIPS_SETSTR()
#define VIPS_NEW()
#define VIPS_ARRAY()
void * vips_malloc ()
char * vips_strdup ()
int vips_free ()
void vips_tracked_free ()
void * vips_tracked_malloc ()
size_t vips_tracked_get_mem ()
size_t vips_tracked_get_mem_highwater ()
int vips_tracked_get_allocs ()
int vips_tracked_open ()
int vips_tracked_close ()
int vips_tracked_get_files ()

Includes

#include <vips/vips.h>

Description

These functions cover two main areas.

First, some simple utility functions over the underlying g_malloc()/g_free() functions. Memory allocated and freeded using these functions is interchangeable with any other glib library.

Second, a pair of functions, vips_tracked_malloc() and vips_tracked_free(), which are NOT compatible. If you g_free() memory that has been allocated with vips_tracked_malloc() you will see crashes.

The tracked functions are only suitable for large allocations internal to the library, for example pixel buffers. libvips watches the total amount of live tracked memory and uses this information to decide when to trim caches.

Functions

VIPS_FREEF()

#define             VIPS_FREEF( F, S )

VIPS_FREE()

#define VIPS_FREE( S ) VIPS_FREEF( g_free, (S) );

VIPS_SETSTR()

#define             VIPS_SETSTR( S, V )

VIPS_NEW()

#define             VIPS_NEW( OBJ, T )

Parameters

OBJ

allocate memory local to OBJ , or NULL for no auto-free

 

T

type of thing to allocate

 

Returns

A pointer of type T *, or NULL on error.


VIPS_ARRAY()

#define             VIPS_ARRAY( OBJ, N, T )

Parameters

OBJ

allocate memory local to OBJ , or NULL for no auto-free

 

N

number of T 's to allocate

 

T

type of thing to allocate

 

Returns

A pointer of type T *, or NULL on error.


vips_malloc ()

void *
vips_malloc (VipsObject *object,
             size_t size);

g_malloc() local to object , that is, the memory will be automatically freed for you when the object is closed. If object is NULL, you need to free the memory explicitly with g_free().

This function cannot fail. See vips_tracked_malloc() if you are allocating large amounts of memory.

See also: vips_tracked_malloc().

Parameters

object

allocate memory local to this VipsObject, or NULL

 

size

number of bytes to allocate

 

Returns

a pointer to the allocated memory.

[transfer full]


vips_strdup ()

char *
vips_strdup (VipsObject *object,
             const char *str);

g_strdup() a string. When object is freed, the string will be freed for you. If object is NULL, you need to free the memory explicitly with g_free().

This function cannot fail.

See also: vips_malloc().

Parameters

object

allocate memory local to this VipsObject, or NULL

 

str

string to copy

 

Returns

a pointer to the allocated memory.

[transfer full]


vips_free ()

int
vips_free (void *buf);

Frees memory with g_free() and returns 0. Handy for callbacks.

See also: vips_malloc().

Parameters

buf

memory to free

 

Returns

0


vips_tracked_free ()

void
vips_tracked_free (void *s);

Only use it to free memory that was previously allocated with vips_tracked_malloc() with a NULL first argument.

See also: vips_tracked_malloc().

Parameters

s

memory to free.

[transfer full]

vips_tracked_malloc ()

void *
vips_tracked_malloc (size_t size);

Allocate an area of memory that will be tracked by vips_tracked_get_mem() and friends.

If allocation fails, vips_malloc() returns NULL and sets an error message.

You must only free the memory returned with vips_tracked_free().

See also: vips_tracked_free(), vips_malloc().

Parameters

size

number of bytes to allocate

 

Returns

a pointer to the allocated memory, or NULL on error.

[transfer full]


vips_tracked_get_mem ()

size_t
vips_tracked_get_mem (void);

Returns the number of bytes currently allocated via vips_malloc() and friends. vips uses this figure to decide when to start dropping cache, see VipsOperation.

Returns

the number of currently allocated bytes


vips_tracked_get_mem_highwater ()

size_t
vips_tracked_get_mem_highwater (void);

Returns the largest number of bytes simultaneously allocated via vips_tracked_malloc(). Handy for estimating max memory requirements for a program.

Returns

the largest number of currently allocated bytes


vips_tracked_get_allocs ()

int
vips_tracked_get_allocs (void);

Returns the number of active allocations.

Returns

the number of active allocations


vips_tracked_open ()

int
vips_tracked_open (const char *pathname,
                   int flags,
                   ...);

Exactly as open(2), but the number of files current open via vips_tracked_open() is available via vips_tracked_get_files(). This is used by the vips operation cache to drop cache when the number of files available is low.

You must only close the file descriptor with vips_tracked_close().

See also: vips_tracked_close(), vips_tracked_get_files().

Parameters

pathname

name of file to open

 

flags

flags for open()

 

...

open mode

 

Returns

a file descriptor, or -1 on error.


vips_tracked_close ()

int
vips_tracked_close (int fd);

Exactly as close(2), but update the number of files currently open via vips_tracked_get_files(). This is used by the vips operation cache to drop cache when the number of files available is low.

You must only close file descriptors opened with vips_tracked_open().

See also: vips_tracked_open(), vips_tracked_get_files().

Parameters

fd

file to close()

 

Returns

a file descriptor, or -1 on error.


vips_tracked_get_files ()

int
vips_tracked_get_files (void);

Returns the number of open files.

Returns

the number of open files

Types and Values

vips-8.2.2/doc/html/using-cli.html0000664000175000017500000002123212651721507013726 00000000000000 VIPS from the command-line: VIPS Reference Manual

VIPS from the command-line

Using VIPS — How to use the VIPS library from the command-line

Introduction

Use the vips command to execute VIPS operations from the command-line. For example:

$ vips rot k2.jpg x.jpg d90

Will rotate the image k2.jpg by 90 degrees anticlockwise and write the result to the file x.jpg. If you don't give any arguments to an operation, vips will give a short description, for example:

$ vips rot 
rotate an image
usage:
   rot in out angle
where:
   in           - Input image, input VipsImage
   out          - Output image, output VipsImage
   angle        - Angle to rotate image, input VipsAngle
                        default: d90
                        allowed: d0, d90, d180, d270

There's a straightforward relationship with the C API: compare this to the API docs for vips_rot(), for example.

Listing all operations

You can list all classes with:

$ vips -l
... 
VipsOperation (operation), operations
  VipsSystem (system), run an external command
  VipsArithmetic (arithmetic), arithmetic operations
    VipsBinary (binary), binary operations
      VipsAdd (add), add two images
      ... etc.

Each line shows the canonical name of the class (for example VipsAdd), the class nickname (add in this case), and a short description. Some subclasses of operation will show more: for example, subclasses of VipsForeign will show some of the extra flags supported by the file load/save operations.

Optional arguments

Many operations take optional arguments. You can supply these as command-line options, for example:

$ vips gamma
gamma an image
usage:
   gamma in out
where:
   in           - Input image, input VipsImage
   out          - Output image, output VipsImage
optional arguments:
   exponent     - Gamma factor, input gdouble
                  default: 2.4
                  min: 1e-06, max: 1000
operation flags: sequential-unbuffered 

vips_gamma() applies a gamma factor to an image. By default, it uses 2.4, the sRGB gamma factor, but you can specify any gamma with the exponent option.

Use it from the command-line like this:

$ vips gamma k2.jpg x.jpg --exponent 0.42

This will read file k2.jpg, un-gamma it, and write the result to file x.jpg.

Array arguments

Some operations take arrays of values as arguments, for example, vips_affine() needs an array of four numbers for the 2x2 transform matrix. You pass arrays as space-separated lists, for example:

$ vips affine k2.jpg x.jpg "2 0 0 1"

You may need the quotes to stop your shell breaking the argument at the spaces. vips_bandjoin() needs an array of input images to join, run it like this:

$ vips bandjoin "k2.jpg k4.jpg" x.tif

Implicit file format conversion

vips will automatically convert between image file formats for you. Input images are detected by sniffing their first few bytes; output formats are set from the filename suffix. You can see a list of all the supported file formats with something like:

$ vips -l foreign

Then get a list of the options a format supports with, for example:

$ vips jpegsave

You can pass options to the implicit load and save operations enclosed in square brackets after the filename. For example:

vips affine k2.jpg x.jpg[Q=90,strip] "2 0 0 1"

Will write x.jpg at quality level 90 and will strip all metadata from the image.

Chaining operations

Because each operation runs in a separate process, you can't use libvips's chaining system to join operations together, you have to use intermediate files. The command-line interface is therefore quite a bit slower than Python or C.

The best alternative is to use vips files for intermediates. Something like:

vips invert input.jpg t1.v
vips affine t1.v output.jpg "2 0 0 1"
rm t1.v

Other features

Finally, vips has a couple of useful extra options.

  • Use --vips-progress to get vips to display a simple progress indicator.

  • Use --vips-leak and vips will leak-test on exit, and also display an estimate of peak memory use.

VIPS comes with a couple of other useful programs. vipsheader is a command which can print image header fields. vipsedit can change fields in vips format images. vipsthumbnail can make image thumbnails quickly.

vips-8.2.2/doc/html/libvips-draw.html0000664000175000017500000015235112651721507014446 00000000000000 draw: VIPS Reference Manual

draw

draw — drawing operations: flood, paste, line, circle

Stability Level

Stable, unless otherwise indicated

Functions

int vips_draw_rect ()
int vips_draw_rect1 ()
int vips_draw_point ()
int vips_draw_point1 ()
int vips_draw_image ()
int vips_draw_mask ()
int vips_draw_mask1 ()
int vips_draw_line ()
int vips_draw_line1 ()
int vips_draw_circle ()
int vips_draw_circle1 ()
int vips_draw_flood ()
int vips_draw_flood1 ()
int vips_draw_smudge ()

Types and Values

Includes

#include <vips/vips.h>

Description

These operations directly modify the image. They do not thread, on 32-bit machines they will be limited to 2GB images, and a little care needs to be taken if you use them as part of an image pipeline.

They are mostly supposed to be useful for paintbox-style programs.

Functions

vips_draw_rect ()

int
vips_draw_rect (VipsImage *image,
                double *ink,
                int n,
                int left,
                int top,
                int width,
                int height,
                ...);

Optional arguments:

fill : fill the rect

Paint pixels within left , top , width , height in image with ink . If fill is zero, just paint a 1-pixel-wide outline.

See also: vips_draw_circle().

Parameters

image

image to draw on

 

ink

value to draw.

[array length=n]

n

length of ink array

 

left

area to paint

 

top

area to paint

 

width

area to paint

 

height

area to paint

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_rect1 ()

int
vips_draw_rect1 (VipsImage *image,
                 double ink,
                 int left,
                 int top,
                 int width,
                 int height,
                 ...);

Optional arguments:

fill : fill the rect

As vips_draw_rect(), but just take a single double for ink .

See also: vips_draw_rect().

Parameters

image

image to draw on

 

ink

value to draw

 

left

area to paint

 

top

area to paint

 

width

area to paint

 

height

area to paint

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_point ()

int
vips_draw_point (VipsImage *image,
                 double *ink,
                 int n,
                 int x,
                 int y,
                 ...);

As vips_draw_rect(), but draw a single pixel at x , y .

See also: vips_draw_rect().

Parameters

image

image to draw on

 

ink

value to draw.

[array length=n]

n

length of ink array

 

x

point to paint

 

y

point to paint

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_point1 ()

int
vips_draw_point1 (VipsImage *image,
                  double ink,
                  int x,
                  int y,
                  ...);

As vips_draw_point(), but just take a single double for ink .

See also: vips_draw_point().

Parameters

image

image to draw on

 

ink

value to draw

 

x

point to draw

 

y

point to draw

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_image ()

int
vips_draw_image (VipsImage *image,
                 VipsImage *sub,
                 int x,
                 int y,
                 ...);

Optional arguments:

mode : how to combine pixels

Draw sub on top of image at position x , y . The two images must have the same Coding. If sub has 1 band, the bands will be duplicated to match the number of bands in image . sub will be converted to image 's format, see vips_cast().

Use mode to set how pixels are combined. If you use VIPS_COMBINE_MODE_ADD, both images muct be uncoded.

See also: vips_draw_mask(), vips_insert().

Parameters

image

image to draw on

 

sub

image to paint

 

x

draw sub here

 

y

draw sub here

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_mask ()

int
vips_draw_mask (VipsImage *image,
                double *ink,
                int n,
                VipsImage *mask,
                int x,
                int y,
                ...);

Draw mask on the image. mask is a monochrome 8-bit image with 0/255 for transparent or ink coloured points. Intermediate values blend the ink with the pixel. Use with vips_text() to draw text on an image. Use in a vips_draw_line() subclass to draw an object along a line.

ink is an array of double containing values to draw.

See also: vips_text(), vips_draw_line().

Parameters

image

image to draw on

 

ink

value to draw.

[array length=n]

n

size of ink array

 

mask

mask of 0/255 values showing where to plot

 

x

draw mask here

 

y

draw mask here

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_mask1 ()

int
vips_draw_mask1 (VipsImage *image,
                 double ink,
                 VipsImage *mask,
                 int x,
                 int y,
                 ...);

As vips_draw_mask(), but just takes a single double for ink .

See also: vips_draw_mask().

Parameters

image

image to draw on

 

ink

value to draw

 

mask

mask of 0/255 values showing where to plot

 

x

draw mask here

 

y

draw mask here

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_line ()

int
vips_draw_line (VipsImage *image,
                double *ink,
                int n,
                int x1,
                int y1,
                int x2,
                int y2,
                ...);

Draws a 1-pixel-wide line on an image.

ink is an array of double containing values to draw.

See also: vips_draw_line1(), vips_draw_circle(), vips_draw_mask().

Parameters

image

image to draw on

 

ink

value to draw.

[array length=n]

n

length of ink array

 

x1

start of draw_line

 

y1

start of draw_line

 

x2

end of draw_line

 

y2

end of draw_line

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_line1 ()

int
vips_draw_line1 (VipsImage *image,
                 double ink,
                 int x1,
                 int y1,
                 int x2,
                 int y2,
                 ...);

As vips_draw_line(), but just take a single double for ink .

See also: vips_draw_line().

Parameters

image

image to draw on

 

ink

value to draw

 

x1

start of draw_line

 

y1

start of draw_line

 

x2

end of draw_line

 

y2

end of draw_line

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_circle ()

int
vips_draw_circle (VipsImage *image,
                  double *ink,
                  int n,
                  int cx,
                  int cy,
                  int radius,
                  ...);

Optional arguments:

fill : fill the draw_circle

Draws a circle on image . If fill is TRUE then the circle is filled, otherwise a 1-pixel-wide perimeter is drawn.

ink is an array of double containing values to draw.

See also: vips_draw_circle1(), vips_draw_line().

Parameters

image

image to draw on

 

ink

value to draw.

[array length=n]

n

length of ink array

 

cx

centre of draw_circle

 

cy

centre of draw_circle

 

radius

draw_circle radius

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_circle1 ()

int
vips_draw_circle1 (VipsImage *image,
                   double ink,
                   int cx,
                   int cy,
                   int radius,
                   ...);

Optional arguments:

fill : fill the draw_circle

As vips_draw_circle(), but just takes a single double for ink .

See also: vips_draw_circle().

Parameters

image

image to draw on

 

ink

value to draw

 

cx

centre of draw_circle

 

cy

centre of draw_circle

 

radius

draw_circle radius

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_flood ()

int
vips_draw_flood (VipsImage *image,
                 double *ink,
                 int n,
                 int x,
                 int y,
                 ...);

Optional arguments:

test : test this image equal : fill while equal to edge left : output left edge of bounding box of modified area top : output top edge of bounding box of modified area width : output width of bounding box of modified area height : output height of bounding box of modified area

Flood-fill image with ink , starting at position x , y . The filled area is bounded by pixels that are equal to the ink colour, in other words, it searches for pixels enclosed by an edge of ink .

If equal is set, it instead searches for pixels which are equal to the start point and fills them with ink .

Normally it will test and set pixels in image . If test is set, it will test pixels in test and set pixels in image . This lets you search an image (test ) for continuous areas of pixels without modifying it.

left , top , width , height output the bounding box of the modified pixels.

ink is an array of double containing values to draw.

See also: vips_draw_flood1().

Parameters

image

image to draw on

 

ink

value to draw.

[array length=n]

n

length of ink array

 

x

centre of circle

 

y

centre of circle

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_flood1 ()

int
vips_draw_flood1 (VipsImage *image,
                  double ink,
                  int x,
                  int y,
                  ...);

Optional arguments:

test : test this image equal : fill while equal to edge left : output left edge of bounding box of modified area top : output top edge of bounding box of modified area width : output width of bounding box of modified area height : output height of bounding box of modified area

As vips_draw_flood(), but just takes a single double for ink .

See also: vips_draw_flood().

Parameters

image

image to draw on

 

ink

value to draw

 

x

centre of circle

 

y

centre of circle

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_draw_smudge ()

int
vips_draw_smudge (VipsImage *image,
                  int left,
                  int top,
                  int width,
                  int height,
                  ...);

Smudge a section of image . Each pixel in the area left , top , width , height is replaced by the average of the surrounding 3x3 pixels.

See also: vips_draw_line().

Parameters

image

image to draw on

 

left

point to paint

 

top

point to paint

 

width

area to paint

 

height

area to paint

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.

Types and Values

enum VipsCombineMode

See vips_draw_image() and so on.

Operations like vips_draw_image() need to be told how to combine images from two sources.

See also: vips_join().

Members

VIPS_COMBINE_MODE_SET

set pixels to the new value

 

VIPS_COMBINE_MODE_ADD

add pixels

 

VIPS_COMBINE_MODE_LAST

   
vips-8.2.2/doc/html/libvips-mosaicing.html0000664000175000017500000010665212651721507015465 00000000000000 mosaicing: VIPS Reference Manual

mosaicing

mosaicing — build image mosaics

Stability Level

Stable, unless otherwise indicated

Functions

int vips_merge ()
int vips_mosaic ()
int vips_mosaic1 ()
int vips_match ()
int vips_globalbalance ()
int vips_remosaic ()

Includes

#include <vips/vips.h>

Description

These functions are useful for joining many small images together to make one large image. They can cope with unstable contrast and arbitary sub-image layout, but will not do any geometric correction. Geometric errors should be removed before using these functions.

The mosaicing functions can be grouped into layers:

The lowest level functions are im_correl() and vips_merge(). im_correl() searches a large image for a small sub-image, returning the position of the best sub-image match. vips_merge() joins two images together left-right or up-down with a smooth seam.

Next, vips_mosaic() use the search function plus the two low-level merge operations to join two images given just an approximate overlap as a start point.

The functions im_lrmosaic1() and im_tbmosaic1() are first-order analogues of the basic mosaic functions: they take two approximate tie-points and use them to rotate and scale the right-hand or bottom image before starting to join.

Finally, vips_globalbalance() can be used to remove contrast differences in a mosaic which has been assembled with these functions. It takes the mosaic apart, measures image contrast differences along the seams, finds a set of correction factors which will minimise these differences, and reassembles the mosaic. im_remosaic() uses the same techniques, but will reassemble the image from a different set of source images.

Functions

vips_merge ()

int
vips_merge (VipsImage *ref,
            VipsImage *sec,
            VipsImage **out,
            VipsDirection direction,
            int dx,
            int dy,
            ...);

Optional arguments:

mblend : maximum blend size

This operation joins two images left-right (with ref on the left) or up-down (with ref above) with a smooth seam.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common type (see table Smallest common format in

arithmetic).

dx and dy give the displacement of sec relative to ref , in other words, the vector to get from the origin of sec to the origin of ref , in other words, dx will generally be a negative number.

mblend limits the maximum width of the blend area. A value of "-1" means "unlimited". The two images are blended with a raised cosine.

Pixels with all bands equal to zero are "transparent", that is, zero pixels in the overlap area do not contribute to the merge. This makes it possible to join non-rectangular images.

See also: vips_mosaic(), vips_insert().

Parameters

ref

reference image

 

sec

secondary image

 

out

output image

 

direction

horizontal or vertical merge

 

dx

displacement of ref from sec

 

dy

displacement of ref from sec

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mosaic ()

int
vips_mosaic (VipsImage *ref,
             VipsImage *sec,
             VipsImage **out,
             VipsDirection direction,
             int xref,
             int yref,
             int xsec,
             int ysec,
             ...);

Optional arguments:

bandno : band to search for features hwindow : half window size harea : half search size mblend : maximum blend size

This operation joins two images left-right (with ref on the left) or top-bottom (with ref above) given an approximate overlap.

sec is positioned so that the pixel (xsec , ysec ) in sec lies on top of the pixel (xref , yref ) in ref . The overlap area is divided into three sections, 20 high-contrast points in band bandno of image ref are found in each, and each high-contrast point is searched for in sec using hwindow and harea (see vips_correl()).

A linear model is fitted to the 60 tie-points, points a long way from the fit are discarded, and the model refitted until either too few points remain or the model reaches good agreement.

The detected displacement is used with vips_merge() to join the two images together.

See also: vips_merge(), vips_insert().

Parameters

ref

reference image

 

sec

secondary image

 

out

output image

 

direction

horizontal or vertical join

 

xref

position in reference image

 

yref

position in reference image

 

xsec

position in secondary image

 

ysec

position in secondary image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mosaic1 ()

int
vips_mosaic1 (VipsImage *ref,
              VipsImage *sec,
              VipsImage **out,
              VipsDirection direction,
              int xr1,
              int yr1,
              int xs1,
              int ys1,
              int xr2,
              int yr2,
              int xs2,
              int ys2,
              ...);

Optional arguments:

search : search to improve tie-points hwindow : half window size harea : half search size interpolate : interpolate pixels with this mblend : maximum blend size bandno : band to search for features

This operation joins two images top-bottom (with sec on the right) or left-right (with sec at the bottom) given an approximate pair of tie-points. sec is scaled and rotated as necessary before the join.

Before performing the transformation, the tie-points are improved by searching band bandno in an area of sec of size hsearchsize for a match of size hwindowsize to ref .

If search is TRUE, before performing the transformation, the tie-points are improved by searching an area of sec of size harea for a mosaic1 of size hwindow to ref .

mblend limits the maximum size of the blend area. A value of "-1" means "unlimited". The two images are blended with a raised cosine.

Pixels with all bands equal to zero are "transparent", that is, zero pixels in the overlap area do not contribute to the merge. This makes it possible to join non-rectangular images.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common type (see table Smallest common format in

arithmetic).

See also: vips_merge(), vips_insert(), vips_globalbalance().

Parameters

ref

reference image

 

sec

secondary image

 

out

output image

 

direction

horizontal or vertical join

 

xr1

first reference tie-point

 

yr1

first reference tie-point

 

xs1

first secondary tie-point

 

ys1

first secondary tie-point

 

xr2

second reference tie-point

 

yr2

second reference tie-point

 

xs2

second secondary tie-point

 

ys2

second secondary tie-point

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_match ()

int
vips_match (VipsImage *ref,
            VipsImage *sec,
            VipsImage **out,
            int xr1,
            int yr1,
            int xs1,
            int ys1,
            int xr2,
            int yr2,
            int xs2,
            int ys2,
            ...);

Optional arguments:

search : search to improve tie-points hwindow : half window size harea : half search size interpolate : interpolate pixels with this

Scale, rotate and translate sec so that the tie-points line up.

If search is TRUE, before performing the transformation, the tie-points are improved by searching an area of sec of size harea for a match of size hwindow to ref .

This function will only work well for small rotates and scales.

Parameters

ref

reference image

 

sec

secondary image

 

out

output image

 

xr1

first reference tie-point

 

yr1

first reference tie-point

 

xs1

first secondary tie-point

 

ys1

first secondary tie-point

 

xr2

second reference tie-point

 

yr2

second reference tie-point

 

xs2

second secondary tie-point

 

ys2

second secondary tie-point

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_globalbalance ()

int
vips_globalbalance (VipsImage *in,
                    VipsImage **out,
                    ...);

Optional arguments:

gamma : gamma of source images int_output : TRUE for integer image output

vips_globalbalance() can be used to remove contrast differences in an assembled mosaic.

It reads the History field attached to in and builds a list of the source images that were used to make the mosaic and the position that each ended up at in the final image.

It opens each of the source images in turn and extracts all parts which overlap with any of the other images. It finds the average values in the overlap areas and uses least-mean-square to find a set of correction factors which will minimise overlap differences. It uses gamma to gamma-correct the source images before calculating the factors. A value of 1.0 will stop this.

Each of the source images is transformed with the appropriate correction factor, then the mosaic is reassembled. out is VIPS_FORMAT_FLOAT, but if int_output is set, the output image is the same format as the input images.

There are some conditions that must be met before this operation can work: the source images must all be present under the filenames recorded in the history on in , and the mosaic must have been built using only operations in this package.

See also: vips_remosaic().

Parameters

in

mosaic to rebuild

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_remosaic ()

int
vips_remosaic (VipsImage *in,
               VipsImage **out,
               const char *old_str,
               const char *new_str,
               ...);

vips_remosaic() works rather as vips_globalbalance(). It takes apart the mosaiced image in and rebuilds it, substituting images.

Unlike vips_globalbalance(), images are substituted based on their file†names. The rightmost occurence of the string old_str is swapped for new_str , that file is opened, and that image substituted for the old image.

It's convenient for multispectral images. You can mosaic one band, then use that mosaic as a template for mosaicing the others automatically.

See also: vips_globalbalance().

Parameters

in

mosaic to rebuild

 

out

output image

 

old_str

gamma of source images

 

new_str

gamma of source images

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error

Types and Values

vips-8.2.2/doc/html/libvips-error.html0000664000175000017500000026470412651721507014650 00000000000000 error: VIPS Reference Manual

error

error — error messages and error handling

Stability Level

Stable, unless otherwise indicated

Functions

Includes

#include <vips/vips.h>

Description

VIPS maintains an error buffer (a log of localised text messages), a set of functions for adding messages, and a way to access and clear the buffer.

The error buffer is global, that is, it is shared between all threads. You can add to the buffer from any thread (there is a lock to prevent corruption), but it's sensible to only read and clear the buffer from the main thread of execution.

The general principle is: if you detect an error, log a message for the user. If a function you call detects an error, just propogate it and don't add another message.

IMAGE *im;

if( !(im = vips_image_new_from_file( filename, NULL )) )
  // vips_image_new_from_file() will set a message, we don't need to
  return( -1 );

if( vips_image_get_width( im ) < 100 ) {
  // we have detected an error, we must set a message
  vips_error( "myprogram", "%s", _( "width too small" ) );
  return( -1 );
}

The domain argument most of these functions take is not localised and is supposed to indicate the component which failed.

Functions

vips_error_buffer ()

const char *
vips_error_buffer (void);

Get a pointer to the start of the error buffer as a C string. The string is owned by the error system and must not be freed.

See also: vips_error_clear().

Returns

the error buffer as a C string which must not be freed


vips_error_clear ()

void
vips_error_clear (void);

Clear and reset the error buffer. This is typically called after presenting an error to the user.

See also: vips_error_buffer().


vips_error_freeze ()

void
vips_error_freeze (void);

Stop errors being logged. Use vips_error_thaw() to unfreeze. You can nest freeze/thaw pairs.


vips_error_thaw ()

void
vips_error_thaw (void);

Reenable error logging.


vips_error ()

void
vips_error (const char *domain,
            const char *fmt,
            ...);

Format the string in the style of printf() and append to the error buffer.

See also: vips_error_system(), vips_verror().

Parameters

domain

the source of the error

 

fmt

printf()-style format string for the error

 

...

arguments to the format string

 

vips_verror ()

void
vips_verror (const char *domain,
             const char *fmt,
             va_list ap);

Append a message to the error buffer.

See also: vips_error().

Parameters

domain

the source of the error

 

fmt

printf()-style format string for the error

 

ap

arguments to the format string

 

vips_error_system ()

void
vips_error_system (int err,
                   const char *domain,
                   const char *fmt,
                   ...);

Format the string in the style of printf() and append to the error buffer. Then create and append a localised message based on the system error code, usually the value of errno.

See also: vips_verror_system().

Parameters

err

the system error code

 

domain

the source of the error

 

fmt

printf()-style format string for the error

 

...

arguments to the format string

 

vips_verror_system ()

void
vips_verror_system (int err,
                    const char *domain,
                    const char *fmt,
                    va_list ap);

Format the string in the style of printf() and append to the error buffer. Then create and append a localised message based on the system error code, usually the value of errno.

See also: vips_error_system().

Parameters

err

the system error code

 

domain

the source of the error

 

fmt

printf()-style format string for the error

 

ap

arguments to the format string

 

vips_error_g ()

void
vips_error_g (GError **error);

This function sets the glib error pointer from the vips error buffer and clears it. It's handy for returning errors to glib functions from vips.

See vips_g_error() for the inverse operation.

See also: g_set_error(), vips_g_error().

Parameters

error

glib error pointer

 

vips_g_error ()

void
vips_g_error (GError **error);

This function adds the GError to the vips error buffer and clears it. It's the opposite of vips_error_g().

See also: vips_error_g().

Parameters

error

glib error pointer

 

vips_warn ()

void
vips_warn (const char *domain,
           const char *fmt,
           ...);

Sends a formatted warning message to stderr. If you define the environment variable VIPS_WARNING, these message are supressed.

Warning messages are used to report things like overflow counts.

See also: vips_info(), vips_vwarn().

Parameters

domain

the source of the warning message

 

fmt

printf()-style format string for the message

 

...

arguments to the format string

 

vips_vwarn ()

void
vips_vwarn (const char *domain,
            const char *fmt,
            va_list ap);

Exactly as vips_warn(), but takes a va_list argument.

See also: vips_warn().

Parameters

domain

the source of the warning message

 

fmt

printf()-style format string for the message

 

ap

arguments to the format string

 

vips_info_set ()

void
vips_info_set (gboolean info);

If set, vips will output various informative messages to stderr as it works.

See also: vips_info().

Parameters

info

TRUE to enable info messages

 

vips_info ()

void
vips_info (const char *domain,
           const char *fmt,
           ...);

Sends a formatted informational message to stderr if the --vips-info flag has been given to the program or the environment variable VIPS_INFO has been defined, or if vips_info_set() has been called.

Informational messages are used to report details about the operation of functions.

See also: vips_info_set(), vips_vinfo(), vips_warn().

Parameters

domain

the source of the diagnostic message

 

fmt

printf()-style format string for the message

 

...

arguments to the format string

 

vips_vinfo ()

void
vips_vinfo (const char *domain,
            const char *fmt,
            va_list ap);

Sends a formatted informational message to stderr if the --vips-info flag has been given to the program, or the environment variable VIPS_INFO has been defined, or if vips_info_set() has been called.

Informational messages are used to report details about the operation of functions.

See also: vips_info(), vips_info_set(), vips_warn().

Parameters

domain

the source of the message

 

fmt

printf()-style format string for the message

 

ap

arguments to the format string

 

vips_error_exit ()

void
vips_error_exit (const char *fmt,
                 ...);

Sends a formatted error message to stderr, then sends the contents of the error buffer, if any, then shuts down vips and terminates the program with an error code.

fmt may be NULL, in which case only the error buffer is printed before exiting.

See also: vips_error().

Parameters

fmt

printf()-style format string for the message

 

...

arguments to the format string

 

vips_check_uncoded ()

int
vips_check_uncoded (const char *domain,
                    VipsImage *im);

Check that the image is not coded. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 on OK, or -1 on error.


vips_check_coding ()

int
vips_check_coding (const char *domain,
                   VipsImage *im,
                   VipsCoding coding);

Check that the image has the required coding . If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

coding

required coding

 

Returns

0 on OK, or -1 on error.


vips_check_coding_known ()

int
vips_check_coding_known (const char *domain,
                         VipsImage *im);

Check that the image is uncoded, LABQ coded or RAD coded. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 on OK, or -1 on error.


vips_check_coding_noneorlabq ()

int
vips_check_coding_noneorlabq (const char *domain,
                              VipsImage *im);

Check that the image is uncoded or LABQ coded. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 on OK, or -1 on error.


vips_check_coding_same ()

int
vips_check_coding_same (const char *domain,
                        VipsImage *im1,
                        VipsImage *im2);

Check that the images have the same coding. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im1

first image to check

 

im2

second image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_mono ()

int
vips_check_mono (const char *domain,
                 VipsImage *im);

Check that the image has exactly one band. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_bands ()

int
vips_check_bands (const char *domain,
                  VipsImage *im,
                  int bands);

Check that the image has bands bands. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

bands

must have this many bands

 

Returns

0 if OK, -1 otherwise.


vips_check_bands_1or3 ()

int
vips_check_bands_1or3 (const char *domain,
                       VipsImage *im);

Check that the image has either one or three bands. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_bands_atleast ()

int
vips_check_bands_atleast (const char *domain,
                          VipsImage *im,
                          int bands);

Check that the image has at least bands bands. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

bands

at least this many bands

 

Returns

0 if OK, -1 otherwise.


vips_check_bands_1orn ()

int
vips_check_bands_1orn (const char *domain,
                       VipsImage *im1,
                       VipsImage *im2);

Check that the images have the same number of bands, or that one of the images has just 1 band. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im1

first image to check

 

im2

second image to check

 

Returns

0 on OK, or -1 on error.


vips_check_bands_1orn_unary ()

int
vips_check_bands_1orn_unary (const char *domain,
                             VipsImage *im,
                             int n);

Check that an image has 1 or n bands. Handy for unary operations, cf. vips_check_bands_1orn(). If not, set an error message and return non-zero.

See also: vips_check_bands_1orn().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

n

number of bands, or 1

 

Returns

0 on OK, or -1 on error.


vips_check_bands_same ()

int
vips_check_bands_same (const char *domain,
                       VipsImage *im1,
                       VipsImage *im2);

Check that the images have the same number of bands. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im1

first image to check

 

im2

second image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_bandno ()

int
vips_check_bandno (const char *domain,
                   VipsImage *im,
                   int bandno);

bandno should be a valid band number (ie. 0 to im->Bands - 1), or can be -1, meaning all bands. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

bandno

band number

 

Returns

0 if OK, -1 otherwise.


vips_check_int ()

int
vips_check_int (const char *domain,
                VipsImage *im);

Check that the image is in one of the integer formats. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_uint ()

int
vips_check_uint (const char *domain,
                 VipsImage *im);

Check that the image is in one of the unsigned integer formats. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_uintorf ()

int
vips_check_uintorf (const char *domain,
                    VipsImage *im);

Check that the image is unsigned int or float. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_noncomplex ()

int
vips_check_noncomplex (const char *domain,
                       VipsImage *im);

Check that the image is not complex. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_complex ()

int
vips_check_complex (const char *domain,
                    VipsImage *im);

Check that the image is complex. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_twocomponents ()

int
vips_check_twocomponents (const char *domain,
                          VipsImage *im);

Check that the image is has two "components", ie. is a one-band complex or a two-band non-complex. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_format ()

int
vips_check_format (const char *domain,
                   VipsImage *im,
                   VipsBandFormat fmt);

Check that the image has the specified format. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

fmt

format to test for

 

Returns

0 if OK, -1 otherwise.


vips_check_u8or16 ()

int
vips_check_u8or16 (const char *domain,
                   VipsImage *im);

Check that the image is 8 or 16-bit unsigned integer. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_8or16 ()

int
vips_check_8or16 (const char *domain,
                  VipsImage *im);

Check that the image is 8 or 16-bit integer, signed or unsigned. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_u8or16orf ()

int
vips_check_u8or16orf (const char *domain,
                      VipsImage *im);

Check that the image is 8 or 16-bit unsigned integer, or float. Otherwise set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_format_same ()

int
vips_check_format_same (const char *domain,
                        VipsImage *im1,
                        VipsImage *im2);

Check that the images have the same format. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im1

first image to check

 

im2

second image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_size_same ()

int
vips_check_size_same (const char *domain,
                      VipsImage *im1,
                      VipsImage *im2);

Check that the images have the same size. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im1

first image to check

 

im2

second image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_oddsquare ()

int
vips_check_oddsquare (const char *domain,
                      VipsImage *im);

Check that the image is square and that the sides are odd. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_vector_length ()

int
vips_check_vector_length (const char *domain,
                          int n,
                          int len);

Check that n == len .

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

n

number of elements in vector

 

len

number of elements vector should have

 

Returns

0 if OK, -1 otherwise.


vips_check_vector ()

int
vips_check_vector (const char *domain,
                   int n,
                   VipsImage *im);

Operations with a vector constant need a 1-element vector, or a vector with the same number of elements as there are bands in the image.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

n

number of elements in vector

 

im

image to check against

 

Returns

0 if OK, -1 otherwise.


vips_check_hist ()

int
vips_check_hist (const char *domain,
                 VipsImage *im);

Histogram images must have width or height 1, and must not have more than 65536 elements. Return 0 if the image will pass as a histogram, or -1 and set an error message otherwise.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_matrix ()

int
vips_check_matrix (const char *domain,
                   VipsImage *im,
                   VipsImage **out);

Matrix images must have width and height less than 100000 and have 1 band.

Return 0 if the image will pass as a matrix, or -1 and set an error message otherwise.

out is set to be im cast to double and stored in memory. Use VIPS_MATRIX() to address values in out .

You must unref out when you are done with it.

See also: VIPS_MATRIX(), vips_object_local()

Parameters

domain

the originating domain for the error message

 

im

image to check

 

out

put image as in-memory doubles here

 

Returns

0 if OK, -1 otherwise.


vips_check_separable ()

int
vips_check_separable (const char *domain,
                      VipsImage *im);

Separable matrix images must have width or height 1. Return 0 if the image will pass, or -1 and set an error message otherwise.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

im

image to check

 

Returns

0 if OK, -1 otherwise.


vips_check_precision_intfloat ()

int
vips_check_precision_intfloat (const char *domain,
                               VipsPrecision precision);

Check that prec image is either float or int. If not, set an error message and return non-zero.

See also: vips_error().

Parameters

domain

the originating domain for the error message

 

precision

precision to check

 

Returns

0 on OK, or -1 on error.

Types and Values

vips-8.2.2/doc/html/libvips-buf.html0000664000175000017500000013640012651721507014262 00000000000000 buf: VIPS Reference Manual

buf

buf — a string you can append to

Stability Level

Stable, unless otherwise indicated

Types and Values

  VipsBuf

Includes

#include <vips/vips.h>

Description

A message buffer you can append stuff to safely and quickly. If the message gets too long, you get "..." and truncation. Message buffers can be on the stack or heap.

For example:

char txt[256];
VipsBuf buf = VIPS_BUF_STATIC (txt);
int i;

vips_buf_appends (&buf, "Numbers are: ");
for (i = 0; i < array_length; i++) {
  if (i > 0)
    vips_buf_appends (&buf, ", ");
  vips_buf_appendg (&buf, array[i]);
}
printf ("%s", vips_buf_all (&buf));

Functions

VIPS_BUF_STATIC()

#define             VIPS_BUF_STATIC( TEXT )

Initialize a heap buffer. For example:

char txt[256];
VipsBuf buf = VIPS_BUF_STATIC (txt);

Parameters

TEXT

the storage area to use

 

vips_buf_rewind ()

void
vips_buf_rewind (VipsBuf *buf);

Reset the buffer to the empty string.

Parameters

buf

the buffer

 

vips_buf_destroy ()

void
vips_buf_destroy (VipsBuf *buf);

Destroy a buffer. Only needed for heap buffers. Leaves the buffer in the _init state.

Parameters

buf

the buffer

 

vips_buf_init ()

void
vips_buf_init (VipsBuf *buf);

Initialize a buffer.

Parameters

buf

the buffer

 

vips_buf_set_static ()

void
vips_buf_set_static (VipsBuf *buf,
                     char *base,
                     int mx);

Attach the buffer to a static memory area. The buffer needs to have been initialised. The memory area needs to be at least 4 bytes long.

Parameters

buf

the buffer

 

base

the start of the memory area to use for storage

 

mx

the size of the storage area

 

vips_buf_set_dynamic ()

void
vips_buf_set_dynamic (VipsBuf *buf,
                      int mx);

Attach the buffer to a heap memory area. The buffer needs to have been initialised. The memory area needs to be at least 4 bytes long.

Parameters

buf

the buffer

 

mx

the size of the storage area

 

vips_buf_init_static ()

void
vips_buf_init_static (VipsBuf *buf,
                      char *base,
                      int mx);

Initialise and attach to a static memory area. VIPS_BUF_STATIC() is usually more convenient.

For example:

char txt[256];
VipsBuf buf;

vips_buf_init_static (&buf, txt, 256);

Static buffers don't need to be freed when they go out of scope, but their size must be set at compile-time.

Parameters

buf

the buffer

 

base

the start of the memory area to use for storage

 

mx

the size of the storage area

 

vips_buf_init_dynamic ()

void
vips_buf_init_dynamic (VipsBuf *buf,
                       int mx);

Initialise and attach to a heap memory area. The memory area needs to be at least 4 bytes long.

VipsBuf buf;

vips_buf_init_synamic (&buf, 256);

Dynamic buffers must be freed with vips_buf_destroy(), but their size can be set at runtime.

Parameters

buf

the buffer

 

mx

the size of the storage area

 

vips_buf_appendns ()

gboolean
vips_buf_appendns (VipsBuf *buf,
                   const char *str,
                   int sz);

Append at most sz chars from str to buf . sz < 0 means unlimited. This is the low-level append operation: functions like vips_buf_appendf() build on top of this.

Parameters

buf

the buffer

 

str

the string to append to the buffer

 

sz

the size of the string to append

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_appends ()

gboolean
vips_buf_appends (VipsBuf *buf,
                  const char *str);

Append the whole of str to buf .

Parameters

buf

the buffer

 

str

the string to append to the buffer

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_appendf ()

gboolean
vips_buf_appendf (VipsBuf *buf,
                  const char *fmt,
                  ...);

Format the string and append to buf .

Parameters

buf

the buffer

 

fmt

printf()-style format string

 

...

arguments to format string

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_vappendf ()

gboolean
vips_buf_vappendf (VipsBuf *buf,
                   const char *fmt,
                   va_list ap);

Append to buf , args as vprintf().

Parameters

buf

the buffer

 

fmt

printf()-style format string

 

ap

arguments to format string

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_appendc ()

gboolean
vips_buf_appendc (VipsBuf *buf,
                  char ch);

Append a single character ch to buf .

Parameters

buf

the buffer

 

ch

the character to append to the buffer

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_appendsc ()

gboolean
vips_buf_appendsc (VipsBuf *buf,
                   gboolean quote,
                   const char *str);

vips_buf_appendgv ()

gboolean
vips_buf_appendgv (VipsBuf *buf,
                   GValue *value);

Format and append a GValue with g_strdup_value_contents().

Parameters

buf

the buffer

 

value

GValue to format and append

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_append_size ()

gboolean
vips_buf_append_size (VipsBuf *buf,
                      size_t n);

Turn a number of bytes into a sensible string ... eg "12", "12KB", "12MB", "12GB" etc.

Parameters

buf

the buffer

 

n

the number of bytes

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_removec ()

gboolean
vips_buf_removec (VipsBuf *buf,
                  char ch);

Remove the last character, if it's ch .

Parameters

buf

the buffer

 

ch

the character to remove

 

Returns

FALSE on failure, TRUE otherwise.


vips_buf_change ()

gboolean
vips_buf_change (VipsBuf *buf,
                 const char *o,
                 const char *n);

Swap the rightmost occurence of o for n .

Parameters

buf

the buffer

 

o

the string to search for

 

n

the string to substitute

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_is_empty ()

gboolean
vips_buf_is_empty (VipsBuf *buf);

Parameters

buf

the buffer

 

Returns

TRUE if the buffer is empty.


vips_buf_is_full ()

gboolean
vips_buf_is_full (VipsBuf *buf);

Parameters

buf

the buffer

 

Returns

TRUE if the buffer is full.


vips_buf_all ()

const char *
vips_buf_all (VipsBuf *buf);

Return the contents of the buffer as a C string.

Parameters

buf

the buffer

 

Returns

the NULL-terminated contents of the buffer. This is a pointer to the memory managed by the buffer and must not be freed.


vips_buf_firstline ()

const char *
vips_buf_firstline (VipsBuf *buf);

Trim to just the first line (excluding "\n").

Parameters

buf

the buffer

 

Returns

the NULL-terminated contents of the buffer. This is a pointer to the memory managed by the buffer and must not be freed.


vips_buf_appendg ()

gboolean
vips_buf_appendg (VipsBuf *buf,
                  double g);

Append a double, non-localised. Useful for config files etc.

Parameters

buf

the buffer

 

g

value to format and append

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_appendd ()

gboolean
vips_buf_appendd (VipsBuf *buf,
                  int d);

Append a number. If the number is -ve, add brackets. Needed for building function arguments.

Parameters

buf

the buffer

 

d

value to format and append

 

Returns

FALSE on overflow, TRUE otherwise.


vips_buf_len ()

int
vips_buf_len (VipsBuf *buf);

Parameters

buf

the buffer

 

Returns

the number of characters currently in the buffer.

Types and Values

VipsBuf

typedef struct {
	/* All fields are private.
	 */
} VipsBuf;

See Also

vips

vips-8.2.2/doc/html/libvips-type.html0000664000175000017500000024313012651721507014466 00000000000000 type: VIPS Reference Manual

type

type — basic types

Stability Level

Stable, unless otherwise indicated

Functions

VipsThing * vips_thing_new ()
VipsArea * vips_area_copy ()
void vips_area_unref ()
VipsArea * vips_area_new ()
VipsArea * vips_area_new_array ()
VipsArea * vips_area_new_array_object ()
void * vips_area_get_data ()
#define VIPS_ARRAY_ADDR()
VipsRefString * vips_ref_string_new ()
const char * vips_ref_string_get ()
VipsBlob * vips_blob_new ()
VipsBlob * vips_blob_copy ()
const void * vips_blob_get ()
VipsArrayDouble * vips_array_double_new ()
VipsArrayDouble * vips_array_double_newv ()
double * vips_array_double_get ()
VipsArrayInt * vips_array_int_new ()
VipsArrayInt * vips_array_int_newv ()
int * vips_array_int_get ()
void vips_value_set_area ()
void * vips_value_get_area ()
const char * vips_value_get_save_string ()
void vips_value_set_save_string ()
void vips_value_set_save_stringf ()
const char * vips_value_get_ref_string ()
void vips_value_set_ref_string ()
void * vips_value_get_blob ()
void vips_value_set_blob ()
void vips_value_set_array ()
void * vips_value_get_array ()
double * vips_value_get_array_double ()
void vips_value_set_array_double ()
int * vips_value_get_array_int ()
void vips_value_set_array_int ()
GObject ** vips_value_get_array_object ()
void vips_value_set_array_object ()

Includes

#include <vips/vips.h>

Description

A selection of GType defintions used by VIPS.

Functions

vips_thing_new ()

VipsThing *
vips_thing_new (int i);

Returns

a new VipsThing.

[transfer full]


vips_area_copy ()

VipsArea *
vips_area_copy (VipsArea *area);

vips_area_unref ()

void
vips_area_unref (VipsArea *area);

vips_area_new ()

VipsArea *
vips_area_new (VipsCallbackFn free_fn,
               void *data);

A VipsArea wraps a chunk of memory. It adds reference counting and a free function. It also keeps a count and a GType, so the area can be an array.

This type is used for things like passing an array of double or an array of VipsObject pointers to operations, and for reference-counted immutable strings.

Inital count == 1, so _unref() after attaching somewhere.

See also: vips_area_unref().

Parameters

free_fn

data will be freed with this function.

[scope async]

data

data will be freed with this function

 

Returns

the new VipsArea.

[transfer full]


vips_area_new_array ()

VipsArea *
vips_area_new_array (GType type,
                     size_t sizeof_type,
                     int n);

An area which holds an array of elements of some GType. To set values for the elements, get the pointer and write.

See also: vips_area_unref().

Parameters

type

GType of elements to store

 

sizeof_type

sizeof() an element in the array

 

n

number of elements in the array

 

Returns

the new VipsArea.

[transfer full]


vips_area_new_array_object ()

VipsArea *
vips_area_new_array_object (int n);

An area which holds an array of GObject s. See vips_area_new_array(). When the area is freed, each GObject will be unreffed.

Add an extra NULL element at the end, handy for eg. vips_image_pipeline_array() etc.

See also: vips_area_unref().

Parameters

n

number of elements in the array

 

Returns

the new VipsArea.

[transfer full]


vips_area_get_data ()

void *
vips_area_get_data (VipsArea *area,
                    size_t *length,
                    int *n,
                    GType *type,
                    size_t *sizeof_type);

Return the data pointer plus optionally the length in bytes of an area, the number of elements, the GType of each element and the sizeof() each element.

Parameters

area

VipsArea to fetch from

 

length

optionally return length in bytes here.

[allow-none]

n

optionally return number of elements here.

[allow-none]

type

optionally return element type here.

[allow-none]

sizeof_type

optionally return sizeof() element type here.

[allow-none]

Returns

The pointer held by area .

[transfer none]


VIPS_ARRAY_ADDR()

#define             VIPS_ARRAY_ADDR( X, I )

vips_ref_string_new ()

VipsRefString *
vips_ref_string_new (const char *str);

Create a new refstring. These are reference-counted immutable strings, used to store string data in vips image metadata.

See also: vips_area_unref().

Parameters

str

string to store.

[transfer none]

Returns

the new VipsRefString.

[transfer full]


vips_ref_string_get ()

const char *
vips_ref_string_get (VipsRefString *refstr,
                     size_t *length);

Get a pointer to the private string inside a refstr. Handy for language bindings.

See also: vips_value_get_ref_string().

Parameters

refstr

the VipsRefString to fetch from

 

length

return length here, optionally.

[allow-none]

Returns

The C string held by refstr .

[transfer none]


vips_blob_new ()

VipsBlob *
vips_blob_new (VipsCallbackFn free_fn,
               const void *data,
               size_t size);

Like vips_area_new(), but track a length as well. The returned VipsBlob takes ownership of data and will free it with free_fn . Pass NULL for free_fn to not transfer ownership.

An area of mem with a free func and a length (some sort of binary object, like an ICC profile).

See also: vips_area_unref().

Parameters

free_fn

data will be freed with this function.

[scope async][allow-none]

data

data to store.

[array length=size][element-type guint8][transfer full]

size

number of bytes in data

 

Returns

the new VipsBlob.

[transfer full]


vips_blob_copy ()

VipsBlob *
vips_blob_copy (const void *data,
                size_t size);

Like vips_blob_new(), but take a copy of the data. Useful for bindings which strugle with callbacks.

See also: vips_blob_new().

Parameters

data

data to store.

[array length=size][element-type guint8][transfer none]

size

number of bytes in data

 

Returns

the new VipsBlob.

[transfer full]


vips_blob_get ()

const void *
vips_blob_get (VipsBlob *blob,
               size_t *size);

Get the data from a VipsBlob.

See also: vips_blob_new().

Parameters

blob

VipsBlob to fetch from

 

size

return number of bytes of data

 

Returns

the data.

[array length=size][element-type guint8][transfer none]


vips_array_double_new ()

VipsArrayDouble *
vips_array_double_new (const double *array,
                       int n);

Allocate a new array of doubles and copy array into it. Free with vips_area_unref().

See also: VipsArea.

Parameters

array

array of double.

[array length=n]

n

number of doubles

 

Returns

A new VipsArrayDouble.

[transfer full]


vips_array_double_newv ()

VipsArrayDouble *
vips_array_double_newv (int n,
                        ...);

Allocate a new array of n doubles and copy @... into it. Free with vips_area_unref().

See also: vips_array_double_new()

Parameters

n

number of doubles

 

...

list of double arguments

 

Returns

A new VipsArrayDouble.

[transfer full]


vips_array_double_get ()

double *
vips_array_double_get (VipsArrayDouble *array,
                       int *n);

Fetch a double array from a VipsArrayDouble. Useful for language bindings.

Parameters

array

the VipsArrayDouble to fetch from

 

n

length of array

 

Returns

array of double.

[array length=n][transfer none]


vips_array_int_new ()

VipsArrayInt *
vips_array_int_new (const int *array,
                    int n);

Allocate a new array of ints and copy array into it. Free with vips_area_unref().

See also: VipsArea.

Parameters

array

array of int.

[array length=n]

n

number of ints

 

Returns

A new VipsArrayInt.

[transfer full]


vips_array_int_newv ()

VipsArrayInt *
vips_array_int_newv (int n,
                     ...);

Allocate a new array of n ints and copy @... into it. Free with vips_area_unref().

See also: vips_array_int_new()

Parameters

n

number of ints

 

...

list of int arguments

 

Returns

A new VipsArrayInt.

[transfer full]


vips_array_int_get ()

int *
vips_array_int_get (VipsArrayInt *array,
                    int *n);

Fetch an int array from a VipsArrayInt. Useful for language bindings.

Parameters

array

the VipsArrayInt to fetch from

 

n

length of array

 

Returns

array of int.

[array length=n][transfer none]


vips_value_set_area ()

void
vips_value_set_area (GValue *value,
                     VipsCallbackFn free_fn,
                     void *data);

Set value to be a ref-counted area of memory with a free function.

Parameters

value

set this value.

[out]

free_fn

data will be freed with this function.

[scope async]

data

set value to track this pointer

 

vips_value_get_area ()

void *
vips_value_get_area (const GValue *value,
                     size_t *length);

Get the pointer from an area. Don't touch count (area is static).

Parameters

value

get from this value

 

length

optionally return length here.

[allow-none]

Returns

The pointer held by value .

[transfer none]


vips_value_get_save_string ()

const char *
vips_value_get_save_string (const GValue *value);

Get the C string held internally by the GValue.

Parameters

value

GValue to get from

 

Returns

The C string held by value .

[transfer none]


vips_value_set_save_string ()

void
vips_value_set_save_string (GValue *value,
                            const char *str);

Copies the C string into value .

Parameters

value

GValue to set.

[out]

str

C string to copy into the GValue

 

vips_value_set_save_stringf ()

void
vips_value_set_save_stringf (GValue *value,
                             const char *fmt,
                             ...);

Generates a string and copies it into value .

Parameters

value

GValue to set.

[out]

fmt

printf()-style format string

 

...

arguments to printf()-formatted fmt

 

vips_value_get_ref_string ()

const char *
vips_value_get_ref_string (const GValue *value,
                           size_t *length);

Get the C string held internally by the GValue.

Parameters

value

GValue to get from

 

length

return length here, optionally.

[allow-none]

Returns

The C string held by value .

[transfer none]


vips_value_set_ref_string ()

void
vips_value_set_ref_string (GValue *value,
                           const char *str);

Copies the C string str into value .

vips_ref_string are immutable C strings that are copied between images by copying reference-counted pointers, making them much more efficient than regular GValue strings.

Parameters

value

GValue to set.

[out]

str

C string to copy into the GValue

 

vips_value_get_blob ()

void *
vips_value_get_blob (const GValue *value,
                     size_t *length);

Returns the data pointer from a blob. Optionally returns the length too.

blobs are things like ICC profiles or EXIF data. They are relocatable, and are saved to VIPS files for you coded as base64 inside the XML. They are copied by copying reference-counted pointers.

See also: vips_value_set_blob()

Parameters

value

GValue to set

 

length

optionally return length of memory area.

[allow-none]

Returns

The pointer held by value .

[transfer none]


vips_value_set_blob ()

void
vips_value_set_blob (GValue *value,
                     VipsCallbackFn free_fn,
                     void *data,
                     size_t length);

Sets value to hold a data . When value is freed, data will be freed with free_fn . value also holds a note of the length of the memory area.

blobs are things like ICC profiles or EXIF data. They are relocatable, and are saved to VIPS files for you coded as base64 inside the XML. They are copied by copying reference-counted pointers.

See also: vips_value_get_blob()

Parameters

value

GValue to set.

[out]

free_fn

free function for data .

[scope async]

data

pointer to area of memory

 

length

length of memory area

 

vips_value_set_array ()

void
vips_value_set_array (GValue *value,
                      int n,
                      GType type,
                      size_t sizeof_type);

Set value to be an array of things.

This allocates memory but does not initialise the contents: get the pointer and write instead.

Parameters

value

GValue to set.

[out]

n

number of elements

 

type

the type of each element

 

sizeof_type

the sizeof each element

 

vips_value_get_array ()

void *
vips_value_get_array (const GValue *value,
                      int *n,
                      GType *type,
                      size_t *sizeof_type);

Return the pointer to the array held by value . Optionally return the other properties of the array in n , type , sizeof_type .

See also: vips_value_set_array().

Parameters

value

GValue to get from

 

n

return the number of elements here, optionally.

[allow-none]

type

return the type of each element here, optionally.

[allow-none]

sizeof_type

return the sizeof each element here, optionally.

[allow-none]

Returns

The array address.

[transfer none]


vips_value_get_array_double ()

double *
vips_value_get_array_double (const GValue *value,
                             int *n);

Return the start of the array of doubles held by value . optionally return the number of elements in n .

See also: vips_array_double_new().

Parameters

value

GValue to get from

 

n

return the number of elements here, optionally.

[allow-none]

Returns

The array address.

[transfer none]


vips_value_set_array_double ()

void
vips_value_set_array_double (GValue *value,
                             const double *array,
                             int n);

Set value to hold a copy of array . Pass in the array length in n .

See also: vips_array_double_get().

Parameters

value

GValue to get from.

[out]

array

array of doubles.

[array length=n][allow-none]

n

the number of elements

 

vips_value_get_array_int ()

int *
vips_value_get_array_int (const GValue *value,
                          int *n);

Return the start of the array of ints held by value . optionally return the number of elements in n .

See also: vips_array_int_new().

Parameters

value

GValue to get from

 

n

return the number of elements here, optionally.

[allow-none]

Returns

The array address.

[transfer none]


vips_value_set_array_int ()

void
vips_value_set_array_int (GValue *value,
                          const int *array,
                          int n);

Set value to hold a copy of array . Pass in the array length in n .

See also: vips_array_int_get().

Parameters

value

GValue to get from.

[out]

array

array of ints.

[array length=n][allow-none]

n

the number of elements

 

vips_value_get_array_object ()

GObject **
vips_value_get_array_object (const GValue *value,
                             int *n);

Return the start of the array of GObject held by value . Optionally return the number of elements in n .

See also: vips_area_new_array_object().

[skip]

Parameters

value

GValue to get from

 

n

return the number of elements here, optionally.

[allow-none]

Returns

The array address.

[transfer none]


vips_value_set_array_object ()

void
vips_value_set_array_object (GValue *value,
                             int n);

Set value to hold an array of GObject. Pass in the array length in n .

See also: vips_value_get_array_object().

Parameters

value

GValue to set.

[out]

n

the number of elements

 

Types and Values

See Also

header
vips-8.2.2/doc/html/libvips-vips.html0000664000175000017500000005342712651721507014476 00000000000000 vips: VIPS Reference Manual

vips

vips — startup, shutdown, version

Stability Level

Stable, unless otherwise indicated

Functions

#define VIPS_INIT()
int vips_init ()
const char * vips_get_argv0 ()
void vips_shutdown ()
void vips_thread_shutdown ()
void vips_add_option_entries ()
void vips_leak_set ()
const char * vips_version_string ()
int vips_version ()
const char * vips_guess_prefix ()
const char * vips_guess_libdir ()

Includes

#include <vips/vips.h>

Description

Start VIPS up, shut VIPS down, get version information, relocation.

VIPS is a relocatable package, meaning you can move the directory tree you compiled it to at runtime and it will still be able to find all data files. This is required for OS X and Windows, but slightly unusual in the Unix world. See vips_init() and vips_guess_prefix().

Functions

VIPS_INIT()

#define             VIPS_INIT( ARGV0 )

VIPS_INIT is deprecated and should not be used in newly-written code.

VIPS_INIT() starts up the world of VIPS. You should call this on program startup before using any other VIPS operations. If you do not call VIPS_INIT(), VIPS will call it for you when you use your first VIPS operation, but it may not be able to get hold of ARGV0 and VIPS may therefore be unable to find its data files. It is much better to call this macro yourself.

VIPS_INIT() is a macro, since it tries to check binary compatibility between the caller and the library.

VIPS_INIT() does approximately the following:

  • checks that the libvips your program is expecting is binary-compatible with the vips library you're running against

  • initialises any libraries that VIPS is using, including GObject and the threading system, if neccessary

  • guesses where the VIPS data files are and sets up internationalisation --- see vips_guess_prefix()

  • creates the main vips types, including VipsImage and friends

  • loads any plugins from $libdir/vips-x.y/, where x and y are the major and minor version numbers for this VIPS.

Example:

int main (int argc, char **argv)
{
  if (VIPS_INIT (argv[0]))
    vips_error_exit ("unable to start VIPS");

  vips_shutdown ();

  return 0;
}

See also: vips_shutdown(), vips_add_option_entries(), vips_version(), vips_guess_prefix(), vips_guess_libdir().

Parameters

ARGV0

name of application

 

Returns

0 on success, -1 otherwise


vips_init ()

int
vips_init (const char *argv0);

This function starts up libvips, see VIPS_INIT().

This function is for bindings which need to start up vips. C programs should use the VIPS_INIT() macro, which does some extra checks.

See also: VIPS_INIT().

Parameters

argv0

name of application

 

Returns

0 on success, -1 otherwise


vips_get_argv0 ()

const char *
vips_get_argv0 (void);

See also: VIPS_INIT().

Returns

a pointer to an internal copy of the argv0 string passed to VIPS_INIT(). Do not free this value


vips_shutdown ()

void
vips_shutdown (void);

Call this to drop caches and close plugins. Run with "--vips-leak" to do a leak check too. May be called many times.


vips_thread_shutdown ()

void
vips_thread_shutdown (void);

Free any thread-private data and flush any profiling information.

This function needs to be called when a thread that has been using vips exits. It is called for you by vips_shutdown() and for any threads created by vips_g_thread_new().

You will need to call it from threads created in other ways or there will be memory leaks. If you do not call it, vips will generate a warning message.

It may be called many times, and you can continue using vips after calling it. Calling it too often will reduce performance.


vips_add_option_entries ()

void
vips_add_option_entries (GOptionGroup *option_group);

Add the standard vips GOptionEntry to a GOptionGroup.

See also: g_option_group_new().

Parameters

option_group

group to add to

 

vips_leak_set ()

void
vips_leak_set (gboolean leak);

Turn on or off vips leak checking. See also --vips-leak and vips_add_option_entries().

You should call this very early in your program.

Parameters

leak

turn leak checking on or off

 

vips_version_string ()

const char *
vips_version_string (void);

Get the VIPS version as a static string, including a build date and time. Do not free.

Returns

a static version string.

[transfer none]


vips_version ()

int
vips_version (int flag);

Get the major, minor or micro library version, with flag values 0, 1 and 2.

Parameters

flag

which field of the version to get

 

Returns

library version number


vips_guess_prefix ()

const char *
vips_guess_prefix (const char *argv0,
                   const char *env_name);

vips_guess_prefix() tries to guess the install directory. You should pass in the value of argv[0] (the name your program was run as) as a clue to help it out, plus the name of the environment variable you let the user override your package install area with (eg. "VIPSHOME").

On success, vips_guess_prefix() returns the prefix it discovered, and as a side effect, sets the environment variable (if it's not set).

Don't free the return string!

See also: vips_guess_libdir().

Parameters

argv0

program name (typically argv[0])

 

env_name

save prefix in this environment variable

 

Returns

the install prefix as a static string, do not free.

[transfer none]


vips_guess_libdir ()

const char *
vips_guess_libdir (const char *argv0,
                   const char *env_name);

vips_guess_libdir() tries to guess the install directory (usually the configure libdir, or $prefix/lib). You should pass in the value of argv[0] (the name your program was run as) as a clue to help it out, plus the name of the environment variable you let the user override your package install area with (eg. "VIPSHOME").

On success, vips_guess_libdir() returns the libdir it discovered, and as a side effect, sets the prefix environment variable (if it's not set).

Don't free the return string!

See also: vips_guess_prefix().

Parameters

argv0

program name (typically argv[0])

 

env_name

save prefix in this environment variable

 

Returns

the libdir as a static string, do not free.

[transfer none]

Types and Values

See Also

VipsOperation
vips-8.2.2/doc/html/libvips-colour.html0000664000175000017500000041135512651721507015016 00000000000000 colour: VIPS Reference Manual

colour

colour — colour operators

Stability Level

Stable, unless otherwise indicated

Functions

#define VIPS_D93_X0
#define VIPS_D93_Y0
#define VIPS_D93_Z0
#define VIPS_D75_X0
#define VIPS_D75_Y0
#define VIPS_D75_Z0
#define VIPS_D65_X0
#define VIPS_D65_Y0
#define VIPS_D65_Z0
#define VIPS_D55_X0
#define VIPS_D55_Y0
#define VIPS_D55_Z0
#define VIPS_D50_X0
#define VIPS_D50_Y0
#define VIPS_D50_Z0
#define VIPS_A_X0
#define VIPS_A_Y0
#define VIPS_A_Z0
#define VIPS_B_X0
#define VIPS_B_Y0
#define VIPS_B_Z0
#define VIPS_C_X0
#define VIPS_C_Y0
#define VIPS_C_Z0
#define VIPS_E_X0
#define VIPS_E_Y0
#define VIPS_E_Z0
#define VIPS_D3250_X0
#define VIPS_D3250_Y0
#define VIPS_D3250_Z0
gboolean vips_colourspace_issupported ()
int vips_colourspace ()
int vips_LabQ2sRGB ()
int vips_rad2float ()
int vips_float2rad ()
int vips_LabS2LabQ ()
int vips_LabQ2LabS ()
int vips_LabQ2Lab ()
int vips_Lab2LabQ ()
int vips_LCh2Lab ()
int vips_Lab2LCh ()
int vips_Yxy2Lab ()
int vips_CMC2XYZ ()
int vips_Lab2XYZ ()
int vips_XYZ2Lab ()
int vips_XYZ2scRGB ()
int vips_scRGB2sRGB ()
int vips_scRGB2BW ()
int vips_sRGB2scRGB ()
int vips_scRGB2XYZ ()
int vips_HSV2sRGB ()
int vips_sRGB2HSV ()
int vips_LCh2CMC ()
int vips_CMC2LCh ()
int vips_XYZ2Yxy ()
int vips_Yxy2XYZ ()
int vips_LabS2Lab ()
int vips_Lab2LabS ()
int vips_icc_present ()
int vips_icc_transform ()
int vips_icc_import ()
int vips_icc_export ()
int vips_icc_ac2rc ()
int vips_dE76 ()
int vips_dE00 ()
int vips_dECMC ()
void vips_col_Lab2XYZ ()
void vips_col_XYZ2Lab ()
double vips_col_ab2h ()
void vips_col_ab2Ch ()
void vips_col_Ch2ab ()
float vips_col_L2Lcmc ()
float vips_col_C2Ccmc ()
float vips_col_Ch2hcmc ()
void vips_col_make_tables_CMC ()
float vips_col_Lcmc2L ()
float vips_col_Ccmc2C ()
float vips_col_Chcmc2h ()
int vips_col_sRGB2scRGB_8 ()
int vips_col_sRGB2scRGB_16 ()
int vips_col_scRGB2XYZ ()
int vips_col_XYZ2scRGB ()
int vips_col_scRGB2sRGB_8 ()
int vips_col_scRGB2sRGB_16 ()
int vips_col_scRGB2BW_16 ()
int vips_col_scRGB2BW_8 ()
float vips_pythagoras ()
float vips_col_dE00 ()

Types and Values

enum VipsIntent
enum VipsPCS

Includes

#include <vips/vips.h>

Description

These operators let you transform coordinates and images between colour spaces, calculate colour differences, and move to and from device spaces.

All operations process colour from the first few bands and pass other bands through unaltered. This means you can operate on images with alpha channels safely. If you move to or from 16-bit RGB, any alpha channels are rescaled for you.

Radiance images have four 8-bits bands and store 8 bits of R, G and B and another 8 bits of exponent, common to all channels. They are widely used in the HDR imaging community.

The colour functions can be divided into three main groups. First, functions to transform images between the different colour spaces supported by VIPS: VIPS_INTERPRETATION_sRGB, VIPS_INTERPRETATION_scRGB, VIPS_INTERPRETATION_B_W, VIPS_INTERPRETATION_XYZ, VIPS_INTERPRETATION_YXY, VIPS_INTERPRETATION_LAB, VIPS_INTERPRETATION_LCH, and VIPS_INTERPRETATION_CMC.

There are also a set of minor colourspaces which are one of the above in a slightly different format: VIPS_INTERPRETATION_LAB, VIPS_INTERPRETATION_LABQ, VIPS_INTERPRETATION_LABS, VIPS_INTERPRETATION_LCH, VIPS_INTERPRETATION_RGB16, and VIPS_INTERPRETATION_GREY16.

Use vips_colourspace() to move an image to a target colourspace using the best sequence of colour transform operations.

Secondly, there are a set of operations for calculating colour difference metrics. Finally, VIPS wraps LittleCMS and uses it to provide a set of operations for reading and writing images with ICC profiles.

This figure shows how the VIPS colour spaces interconvert:

The colour spaces supported by VIPS are:

  • VIPS_INTERPRETATION_LAB -- CIELAB '76 colourspace with a D65 white. This uses three floats for each band, and bands have the obvious range.

    There are two variants, VIPS_INTERPRETATION_LABQ and VIPS_INTERPRETATION_LABS, which use ints to store values. These are less precise, but can be quicker to store and process.

    VIPS_INTERPRETATION_LCH is the same, but with a*b* as polar coordinates. Hue is expressed in degrees.

  • VIPS_INTERPRETATION_XYZ -- CIE XYZ. This uses three floats. See VIPS_D75_X0 and friends for values for the ranges under various illuminants.

    VIPS_INTERPRETATION_YXY is the same, but with little x and y.

  • VIPS_INTERPRETATION_scRGB -- a linear colourspace with the sRGB primaries. This is useful if you need linear light and don't care much what the primaries are.

    Linearization is performed with the usual sRGB equations, see below.

  • VIPS_INTERPRETATION_sRGB -- the standard sRGB colourspace, see: wikipedia sRGB.

    This uses three 8-bit values for each of RGB.

    VIPS_INTERPRETATION_RGB16 is the same, but using three 16-bit values for RGB.

    VIPS_INTERPRETATION_HSV is sRGB, but in polar coordinates. VIPS_INTERPRETATION_LCH is much better, only use HSV if you have to.

  • VIPS_INTERPRETATION_B_W -- a monochrome image, roughly G from sRGB. The grey value is calculated in VIPS_INTERPRETATION_scRGB space with the usual 0.2, 0.7, 0.1 RGB ratios.

    VIPS_INTERPRETATION_GREY16 is the same, but using 16-bits.

  • VIPS_INTERPRETATION_CMC -- a colour space based on the CMC(1:1) colour difference measurement. This is a highly uniform colour space, much better than CIELAB for expressing small differences.

    The CMC colourspace is described in "Uniform Colour Space Based on the CMC(l:c) Colour-difference Formula", M R Luo and B Rigg, Journal of the Society of Dyers and Colourists, vol 102, 1986. Distances in this colourspace approximate, within 10% or so, differences in the CMC(l:c) colour difference formula.

    You can calculate metrics like CMC(2:1) by scaling the spaces before finding differences.

Functions

VIPS_D93_X0

#define VIPS_D93_X0 (89.7400)

Areas under curves for D93, 2 degree observer.


VIPS_D93_Y0

#define VIPS_D93_Y0 (100.0)

VIPS_D93_Z0

#define VIPS_D93_Z0 (130.7700)

VIPS_D75_X0

#define VIPS_D75_X0 (94.9682)

Areas under curves for D75, 2 degree observer.


VIPS_D75_Y0

#define VIPS_D75_Y0 (100.0)

VIPS_D75_Z0

#define VIPS_D75_Z0 (122.5710)

VIPS_D65_X0

#define VIPS_D65_X0 (95.0470)

Areas under curves for D65, 2 degree observer.


VIPS_D65_Y0

#define VIPS_D65_Y0 (100.0)

VIPS_D65_Z0

#define VIPS_D65_Z0 (108.8827)

VIPS_D55_X0

#define VIPS_D55_X0 (95.6831)

Areas under curves for D55, 2 degree observer.


VIPS_D55_Y0

#define VIPS_D55_Y0 (100.0)

VIPS_D55_Z0

#define VIPS_D55_Z0 (92.0871)

VIPS_D50_X0

#define VIPS_D50_X0 (96.4250)

Areas under curves for D50, 2 degree observer.


VIPS_D50_Y0

#define VIPS_D50_Y0 (100.0)

VIPS_D50_Z0

#define VIPS_D50_Z0 (82.4680)

VIPS_A_X0

#define VIPS_A_X0 (109.8503)

Areas under curves for illuminant A (2856K), 2 degree observer.


VIPS_A_Y0

#define VIPS_A_Y0 (100.0)

VIPS_A_Z0

#define VIPS_A_Z0 (35.5849)

VIPS_B_X0

#define VIPS_B_X0 (99.0720)

Areas under curves for illuminant B (4874K), 2 degree observer.


VIPS_B_Y0

#define VIPS_B_Y0 (100.0)

VIPS_B_Z0

#define VIPS_B_Z0 (85.2230)

VIPS_C_X0

#define VIPS_C_X0 (98.0700)

Areas under curves for illuminant C (6774K), 2 degree observer.


VIPS_C_Y0

#define VIPS_C_Y0 (100.0)

VIPS_C_Z0

#define VIPS_C_Z0 (118.2300)

VIPS_E_X0

#define VIPS_E_X0 (100.0)

Areas under curves for equal energy illuminant E.


VIPS_E_Y0

#define VIPS_E_Y0 (100.0)

VIPS_E_Z0

#define VIPS_E_Z0 (100.0)

VIPS_D3250_X0

#define VIPS_D3250_X0 (105.6590)

Areas under curves for black body at 3250K, 2 degree observer.


VIPS_D3250_Y0

#define VIPS_D3250_Y0 (100.0)

VIPS_D3250_Z0

#define VIPS_D3250_Z0 (45.8501)

vips_colourspace_issupported ()

gboolean
vips_colourspace_issupported (const VipsImage *image);

Test if image is in a colourspace that vips_colourspace() can process. For example, VIPS_INTERPRETATION_RGB images are not in a well-defined colourspace, but VIPS_INTERPRETATION_sRGB ones are.

Parameters

image

input image

 

Returns

TRUE if image is in a supported colourspace.


vips_colourspace ()

int
vips_colourspace (VipsImage *in,
                  VipsImage **out,
                  VipsInterpretation space,
                  ...);

Optional arguments:

source_space : input colour space

This operation looks at the interpretation field of in (or uses source_space , if set) and runs a set of colourspace conversion functions to move it to space .

For example, given an image tagged as VIPS_INTERPRETATION_YXY, running vips_colourspace() with space set to VIPS_INTERPRETATION_LAB will convert with vips_Yxy2XYZ() and vips_XYZ2Lab().

See also: vips_colourspace_issupported(), vips_image_guess_interpretation().

Parameters

in

input image

 

out

output image

 

space

convert to this colour space

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_LabQ2sRGB ()

int
vips_LabQ2sRGB (VipsImage *in,
                VipsImage **out,
                ...);

Unpack a LabQ (VIPS_CODING_LABQ) image to a three-band short image.

See also: vips_LabS2LabQ(), vips_LabQ2sRGB(), vips_rad2float().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_rad2float ()

int
vips_rad2float (VipsImage *in,
                VipsImage **out,
                ...);

Unpack a RAD (VIPS_CODING_RAD) image to a three-band float image.

See also: vips_float2rad(), vips_LabQ2LabS().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_float2rad ()

int
vips_float2rad (VipsImage *in,
                VipsImage **out,
                ...);

Convert a three-band float image to Radiance 32-bit packed format.

See also: vips_rad2float(), VIPS_CODING_RAD, vips_LabQ2Lab().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_LabS2LabQ ()

int
vips_LabS2LabQ (VipsImage *in,
                VipsImage **out,
                ...);

Convert a LabS three-band signed short image to LabQ

See also: vips_LabQ2LabS().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_LabQ2LabS ()

int
vips_LabQ2LabS (VipsImage *in,
                VipsImage **out,
                ...);

Unpack a LabQ (VIPS_CODING_LABQ) image to a three-band short image.

See also: vips_LabS2LabQ(), vips_LabQ2LabS(), vips_rad2float().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_LabQ2Lab ()

int
vips_LabQ2Lab (VipsImage *in,
               VipsImage **out,
               ...);

Unpack a LabQ (VIPS_CODING_LABQ) image to a three-band float image.

See also: vips_LabQ2Lab(), vips_LabQ2LabS(), vips_rad2float().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_Lab2LabQ ()

int
vips_Lab2LabQ (VipsImage *in,
               VipsImage **out,
               ...);

Convert a Lab three-band float image to LabQ (VIPS_CODING_LABQ).

See also: vips_LabQ2Lab().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_LCh2Lab ()

int
vips_LCh2Lab (VipsImage *in,
              VipsImage **out,
              ...);

Turn LCh to Lab.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_Lab2LCh ()

int
vips_Lab2LCh (VipsImage *in,
              VipsImage **out,
              ...);

Turn Lab to LCh.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_Yxy2Lab ()

int
vips_Yxy2Lab (VipsImage *in,
              VipsImage **out,
              ...);

vips_CMC2XYZ ()

int
vips_CMC2XYZ (VipsImage *in,
              VipsImage **out,
              ...);

vips_Lab2XYZ ()

int
vips_Lab2XYZ (VipsImage *in,
              VipsImage **out,
              ...);

optional arguments:

temp : colour temperature

Turn Lab to XYZ. The colour temperature defaults to D65, but can be specified with temp .

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_XYZ2Lab ()

int
vips_XYZ2Lab (VipsImage *in,
              VipsImage **out,
              ...);

optional arguments:

temp : colour temperature

Turn XYZ to Lab, optionally specifying the colour temperature. temp defaults to D65.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_XYZ2scRGB ()

int
vips_XYZ2scRGB (VipsImage *in,
                VipsImage **out,
                ...);

Turn XYZ to scRGB.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_scRGB2sRGB ()

int
vips_scRGB2sRGB (VipsImage *in,
                 VipsImage **out,
                 ...);

Optional arguments:

depth : depth of output image in bits

Convert an scRGB image to sRGB. Set depth to 16 to get 16-bit output.

If depth is 16, any extra channels after RGB are multiplied by 256.

See also: vips_LabS2LabQ(), vips_sRGB2scRGB(), vips_rad2float().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_scRGB2BW ()

int
vips_scRGB2BW (VipsImage *in,
               VipsImage **out,
               ...);

Optional arguments:

depth : depth of output image in bits

Convert an scRGB image to greyscale. Set depth to 16 to get 16-bit output.

If depth is 16, any extra channels after RGB are multiplied by 256.

See also: vips_LabS2LabQ(), vips_sRGB2scRGB(), vips_rad2float().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_sRGB2scRGB ()

int
vips_sRGB2scRGB (VipsImage *in,
                 VipsImage **out,
                 ...);

Convert an sRGB image to scRGB. The input image can be 8 or 16-bit unsigned int.

If the input image is unsigned 16-bit, any extra channels after RGB are divided by 256. Thus, scRGB alpha is always 0 - 255.99.

See also: vips_scRGB2XYZ(), vips_scRGB2sRGB(), vips_rad2float().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_scRGB2XYZ ()

int
vips_scRGB2XYZ (VipsImage *in,
                VipsImage **out,
                ...);

Turn XYZ to scRGB.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_HSV2sRGB ()

int
vips_HSV2sRGB (VipsImage *in,
               VipsImage **out,
               ...);

Convert HSV to sRGB.

HSV is a crude polar coordinate system for RGB images. It is provided for compatibility with other image processing systems. See vips_Lab2LCh() for a much better colour space.

See also: vips_sRGB2HSV().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_sRGB2HSV ()

int
vips_sRGB2HSV (VipsImage *in,
               VipsImage **out,
               ...);

Convert to HSV.

HSV is a crude polar coordinate system for RGB images. It is provided for compatibility with other image processing systems. See vips_Lab2LCh() for a much better colour space.

See also: vips_HSV2sRGB(), vips_Lab2LCh().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_LCh2CMC ()

int
vips_LCh2CMC (VipsImage *in,
              VipsImage **out,
              ...);

Turn LCh to CMC.

The CMC colourspace is described in "Uniform Colour Space Based on the CMC(l:c) Colour-difference Formula", M R Luo and B Rigg, Journal of the Society of Dyers and Colourists, vol 102, 1986. Distances in this colourspace approximate, within 10% or so, differences in the CMC(l:c) colour difference formula.

This operation generates CMC(1:1). For CMC(2:1), halve Lucs and double Cucs.

See also: vips_CMC2LCh().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_CMC2LCh ()

int
vips_CMC2LCh (VipsImage *in,
              VipsImage **out,
              ...);

Turn LCh to CMC.

See also: vips_LCh2CMC().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_XYZ2Yxy ()

int
vips_XYZ2Yxy (VipsImage *in,
              VipsImage **out,
              ...);

Turn XYZ to Yxy.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_Yxy2XYZ ()

int
vips_Yxy2XYZ (VipsImage *in,
              VipsImage **out,
              ...);

Turn XYZ to Yxy.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_LabS2Lab ()

int
vips_LabS2Lab (VipsImage *in,
               VipsImage **out,
               ...);

Convert a LabS three-band signed short image to a three-band float image.

See also: vips_LabS2Lab().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_Lab2LabS ()

int
vips_Lab2LabS (VipsImage *in,
               VipsImage **out,
               ...);

Turn Lab to LabS, signed 16-bit int fixed point.

See also: vips_LabQ2Lab().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_icc_present ()

int
vips_icc_present (void);

VIPS can optionally be built without the ICC library. Use this function to test for its availability.

Returns

non-zero if the ICC library is present.


vips_icc_transform ()

int
vips_icc_transform (VipsImage *in,
                    VipsImage **out,
                    const char *output_profile,
                    ...);

Optional arguments:

input_profile : get the input profile from here intent : transform with this intent depth : depth of output image in bits embedded : use profile embedded in input image

Transform an image with a pair of ICC profiles. The input image is moved to profile-connection space with the input profile and then to the output space with the output profile.

If embedded is set, the input profile is taken from the input image metadata, if present. If there is no embedded profile, input_profile is used as a fall-back.

If embedded is not set, the input profile is taken from input_profile . If input_profile is not supplied, the metadata profile, if any, is used as a fall-back.

Use vips_icc_import() and vips_icc_export() to do either the first or second half of this operation in isolation.

Parameters

in

input image

 

out

output image

 

output_profile

get the output profile from here

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_icc_import ()

int
vips_icc_import (VipsImage *in,
                 VipsImage **out,
                 ...);

Optional arguments:

input_profile : get the input profile from here intent : transform with this intent embedded : use profile embedded in input image pcs : use XYZ or LAB PCS

Import an image from device space to D65 LAB with an ICC profile. If pcs is set to VIPS_PCS_XYZ, use CIE XYZ PCS instead.

If embedded is set, the input profile is taken from the input image metadata. If there is no embedded profile, input_profile_filename is used as a fall-back.

If embedded is not set, the input profile is taken from input_profile . If input_profile is not supplied, the metadata profile, if any, is used as a fall-back.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_icc_export ()

int
vips_icc_export (VipsImage *in,
                 VipsImage **out,
                 ...);

Optional arguments:

intent : transform with this intent depth : depth of output image in bits output_profile : get the output profile from here pcs : use XYZ or LAB PCS

Export an image from D65 LAB to device space with an ICC profile. If pcs is set to VIPS_PCS_XYZ, use CIE XYZ PCS instead. If output_profile is not set, use the embedded profile, if any. If output_profile is set, export with that and attach it to the output image.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_icc_ac2rc ()

int
vips_icc_ac2rc (VipsImage *in,
                VipsImage **out,
                const char *profile_filename);

Transform an image from absolute to relative colorimetry using the MediaWhitePoint stored in the ICC profile.

See also: vips_icc_transform(), vips_icc_import().

Parameters

in

input image

 

out

output image

 

profile_filename

use this profile

 

Returns

0 on success, -1 on error.


vips_dE76 ()

int
vips_dE76 (VipsImage *left,
           VipsImage *right,
           VipsImage **out,
           ...);

Calculate dE 76.

Parameters

left

first input image

 

right

second input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_dE00 ()

int
vips_dE00 (VipsImage *left,
           VipsImage *right,
           VipsImage **out,
           ...);

Calculate dE 00.

Parameters

left

first input image

 

right

second input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_dECMC ()

int
vips_dECMC (VipsImage *left,
            VipsImage *right,
            VipsImage **out,
            ...);

Calculate dE CMC. The input images are transformed to CMC colour space and the euclidean distance between corresponding pixels calculated.

To calculate a colour difference with values for (l:c) other than (1:1), transform the two source images to CMC yourself, scale the channels appropriately, and call this function.

See also: vips_colourspace()

Parameters

left

first input image

 

right

second input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_col_Lab2XYZ ()

void
vips_col_Lab2XYZ (float L,
                  float a,
                  float b,
                  float *X,
                  float *Y,
                  float *Z);

Calculate XYZ from Lab, D65.

See also: vips_Lab2XYZ().

Parameters

L

Input CIE Lab value

 

a

Input CIE Lab value

 

b

Input CIE Lab value

 

X

Return CIE XYZ colour

 

Y

Return CIE XYZ colour

 

Z

Return CIE XYZ colour

 

vips_col_XYZ2Lab ()

void
vips_col_XYZ2Lab (float X,
                  float Y,
                  float Z,
                  float *L,
                  float *a,
                  float *b);

Calculate XYZ from Lab, D65.

See also: vips_XYZ2Lab().

Parameters

X

Input CIE XYZ colour

 

Y

Input CIE XYZ colour

 

Z

Input CIE XYZ colour

 

L

Return CIE Lab value

 

a

Return CIE Lab value

 

b

Return CIE Lab value

 

vips_col_ab2h ()

double
vips_col_ab2h (double a,
               double b);

Parameters

a

CIE a

 

b

CIE b

 

Returns

Hue (degrees)


vips_col_ab2Ch ()

void
vips_col_ab2Ch (float a,
                float b,
                float *C,
                float *h);

vips_col_Ch2ab ()

void
vips_col_Ch2ab (float C,
                float h,
                float *a,
                float *b);

Calculate ab from Ch, h in degrees.

Parameters

C

Chroma

 

h

Hue angle (degrees)

 

a

return CIE a* value

 

b

return CIE b* value

 

vips_col_L2Lcmc ()

float
vips_col_L2Lcmc (float L);

Calculate Lcmc from L.

Parameters

L

CIE L*

 

Returns

Lcmc


vips_col_C2Ccmc ()

float
vips_col_C2Ccmc (float C);

Calculate Ccmc from C.

Parameters

C

Chroma

 

Returns

Ccmc.


vips_col_Ch2hcmc ()

float
vips_col_Ch2hcmc (float C,
                  float h);

Calculate hcmc from C and h.

Parameters

C

Chroma

 

h

Hue (degrees)

 

Returns

hcmc.


vips_col_make_tables_CMC ()

void
vips_col_make_tables_CMC (void);

Make the lookup tables for cmc.


vips_col_Lcmc2L ()

float
vips_col_Lcmc2L (float Lcmc);

Calculate L from Lcmc using a table. Call vips_col_make_tables_CMC() at least once before using this function.

Parameters

Lcmc

L cmc

 

Returns

L*


vips_col_Ccmc2C ()

float
vips_col_Ccmc2C (float Ccmc);

Calculate C from Ccmc using a table. Call vips_col_make_tables_CMC() at least once before using this function.

Parameters

Ccmc

Ccmc

 

Returns

C.


vips_col_Chcmc2h ()

float
vips_col_Chcmc2h (float C,
                  float hcmc);

Calculate h from C and hcmc, using a table. Call vips_col_make_tables_CMC() at least once before using this function.

Parameters

C

Chroma

 

hcmc

Hue cmc (degrees)

 

Returns

h.


vips_col_sRGB2scRGB_8 ()

int
vips_col_sRGB2scRGB_8 (int r,
                       int g,
                       int b,
                       float *R,
                       float *G,
                       float *B);

vips_col_sRGB2scRGB_16 ()

int
vips_col_sRGB2scRGB_16 (int r,
                        int g,
                        int b,
                        float *R,
                        float *G,
                        float *B);

vips_col_scRGB2XYZ ()

int
vips_col_scRGB2XYZ (float R,
                    float G,
                    float B,
                    float *X,
                    float *Y,
                    float *Z);

vips_col_XYZ2scRGB ()

int
vips_col_XYZ2scRGB (float X,
                    float Y,
                    float Z,
                    float *R,
                    float *G,
                    float *B);

vips_col_scRGB2sRGB_8 ()

int
vips_col_scRGB2sRGB_8 (float R,
                       float G,
                       float B,
                       int *r,
                       int *g,
                       int *b,
                       int *og);

vips_col_scRGB2sRGB_16 ()

int
vips_col_scRGB2sRGB_16 (float R,
                        float G,
                        float B,
                        int *r,
                        int *g,
                        int *b,
                        int *og);

vips_col_scRGB2BW_16 ()

int
vips_col_scRGB2BW_16 (float R,
                      float G,
                      float B,
                      int *g,
                      int *og);

vips_col_scRGB2BW_8 ()

int
vips_col_scRGB2BW_8 (float R,
                     float G,
                     float B,
                     int *g,
                     int *og);

vips_pythagoras ()

float
vips_pythagoras (float L1,
                 float a1,
                 float b1,
                 float L2,
                 float a2,
                 float b2);

Pythagorean distance between two points in colour space. Lab/XYZ/CMC etc.

Parameters

L1

Input coordinate 1

 

a1

Input coordinate 1

 

b1

Input coordinate 1

 

L2

Input coordinate 2

 

a2

Input coordinate 2

 

b2

Input coordinate 2

 

vips_col_dE00 ()

float
vips_col_dE00 (float L1,
               float a1,
               float b1,
               float L2,
               float a2,
               float b2);

CIEDE2000, from:

Luo, Cui, Rigg, "The Development of the CIE 2000 Colour-Difference Formula: CIEDE2000", COLOR research and application, pp 340

Parameters

L1

Input coordinate 1

 

a1

Input coordinate 1

 

b1

Input coordinate 1

 

L2

Input coordinate 2

 

a2

Input coordinate 2

 

b2

Input coordinate 2

 

Returns

CIE dE2000 colour difference.

Types and Values

enum VipsIntent

The rendering intent. VIPS_INTENT_ABSOLUTE is best for scientific work, VIPS_INTENT_RELATIVE is usually best for accurate communication with other imaging libraries.

Members

VIPS_INTENT_PERCEPTUAL

perceptual rendering intent

 

VIPS_INTENT_RELATIVE

relative colorimetric rendering intent

 

VIPS_INTENT_SATURATION

saturation rendering intent

 

VIPS_INTENT_ABSOLUTE

absolute colorimetric rendering intent

 

VIPS_INTENT_LAST

   

enum VipsPCS

Pick a Profile Connection Space for vips_icc_import() and vips_icc_export(). LAB is usually best, XYZ can be more convenient in some cases.

Members

VIPS_PCS_LAB

use CIELAB D65 as the Profile Connection Space

 

VIPS_PCS_XYZ

use XYZ as the Profile Connection Space

 

VIPS_PCS_LAST

   

See Also

arithmetic
vips-8.2.2/doc/html/libvips-version.html0000664000175000017500000001201512651721507015166 00000000000000 version: VIPS Reference Manual

version

version

Types and Values

Description

Functions

Types and Values

VIPS_VERSION

#define VIPS_VERSION		"8.2.2"

VIPS_VERSION_STRING

#define VIPS_VERSION_STRING "8.2.2-Tue Jan 26 16:44:38 GMT 2016"

VIPS_MAJOR_VERSION

#define VIPS_MAJOR_VERSION (8)

VIPS_MINOR_VERSION

#define VIPS_MINOR_VERSION (2)

VIPS_MICRO_VERSION

#define VIPS_MICRO_VERSION (2)

VIPS_EXEEXT

#define VIPS_EXEEXT ""

VIPS_ENABLE_DEPRECATED

#define VIPS_ENABLE_DEPRECATED 1
vips-8.2.2/doc/html/binding.html0000664000175000017500000001261212651721507013450 00000000000000 Writing bindings for libvips: VIPS Reference Manual

Writing bindings for libvips

Binding — How to write bindings for libvips

Binding and gobject-introspection

The C source code to libvips has been marked up with special comments describing the interface in a standard way. These comments are read by gobject-introspection when libvips is compiled and used to generate a typelib, a description of how to call the library. Many languages have gobject-introspection packages: all you need to do to call libvips from your favorite language is to start g-o-i, load the libvips typelib, and you should have the whole library available. For example, from Python it's as simple as:

from gi.repository import Vips

libvips used in this way is likely to be rather bare-bones. For Python, we wrote a set of overrides which layer a more Pythonesque interface on top of the one provided for libvips by pygobject. These overrides are simply a set of Python classes.

To call a vips operation, you'll need to make a new operation with vips_operation_new() (all it does is look up the operation by name with vips_type_find(), then call g_object_new() for you), then use vips_argument_map() and friends to loop over the operation's arguments setting them. Once you have set all arguments, use vips_cache_operation_build() to look up the operation in the cache and either build or dup it. If something goes wrong, you'll need to use vips_object_unref_outputs() and g_object_unref() to free the partially-built object. The Python binding uses this technique to implement a function which can call any vips operation, turning optional vips arguments into Python keyword arguments.

If your language does not have a gobject-introspection package, you'll need to write something in C or C++ doing approximately the same thing. The C++ API takes this route.

You can generate searchable docs from a .gir (the thing that is built from scanning libvips and which in turn turn the typelib is made from) with g-ir-doc-tool, for example:

$ g-ir-doc-tool --language=Python -o ~/mydocs Vips-8.0.gir

Then to view them, either:

$ yelp ~/mydocs 

Or perhaps

$ cd ~/mydocs 
$ yelp-build html .

To make HTML docs. This is an easy way to see what you can call in the library.

vips-8.2.2/doc/html/libvips.devhelp20000664000175000017500000037504112651721507014263 00000000000000 vips-8.2.2/doc/html/libvips-semaphore.html0000664000175000017500000001646612651721507015502 00000000000000 semaphore: VIPS Reference Manual

semaphore

semaphore

Functions

Types and Values

Description

Functions

vips_semaphore_up ()

int
vips_semaphore_up (VipsSemaphore *s);

vips_semaphore_down ()

int
vips_semaphore_down (VipsSemaphore *s);

vips_semaphore_upn ()

int
vips_semaphore_upn (VipsSemaphore *s,
                    int n);

vips_semaphore_downn ()

int
vips_semaphore_downn (VipsSemaphore *s,
                      int n);

vips_semaphore_destroy ()

void
vips_semaphore_destroy (VipsSemaphore *s);

vips_semaphore_init ()

void
vips_semaphore_init (VipsSemaphore *s,
                     int v,
                     char *name);

Types and Values

VipsSemaphore

typedef struct {
	char *name;
	int v;

	GMutex *mutex;
	GCond *cond;
} VipsSemaphore;
vips-8.2.2/doc/html/using-from-c.html0000664000175000017500000002633512651721507014353 00000000000000 VIPS from C: VIPS Reference Manual

VIPS from C

Using VIPS — How to use the VIPS library from C

Introduction

VIPS comes with a convenient, high-level C API. You should read the API docs for full details, but this section will try to give a brief overview.

Library startup

When your program starts, use VIPS_INIT() to start up the VIPS library. You should pass it the name of your program, usually argv[0]. Use vips_shutdown() when you exit. VIPS_INIT() is a macro to let it check that the libvips library you have linked to matches the libvips headers you included.

You can add the VIPS flags to your GObject command-line processing with vips_add_option_entries().

The VipsImage class

The basic data object is the VipsImage. You can create an image from a file on disc or from an area of memory, either as a C-style array, or as a formatted object, like JPEG. See vips_image_new_from_file() and friends. Loading an image is fast: VIPS read just enough of the image to be able to get the various properties, such as width, but no decoding occurs until pixel values are really needed.

Once you have an image, you can get properties from it in the usual way. You can use projection functions, like vips_image_get_width() or g_object_get(), to get GObject properties. All VIPS objects are immutable, meaning you can only get properties, you can't set them. See VIPS Header to read about image properties.

Reference counting

VIPS is based on the GObject library and is therefore reference counted. vips_image_new_from_file() returns an object with a count of 1. When you are done with an image, use g_object_unref() to dispose of it. If you pass an image to an operation and that operation needs to keep a copy of the image, it will ref it. So you can unref an image as soon as you no longer need it, you don't need to hang on to it in case anyone else is still using it.

See VipsOperation for more detail on VIPS reference counting conventions.

VIPS operations

Use things like vips_embed() to manipulate your images. You use it from C like this:

const char *filename;
VipsImage *in = vips_image_new_from_file (filename, NULL); 
const int x = 10;
const int y = 10;
const int width = 1000;
const int height = 1000;
VipsImage *out;

if (vips_embed (in, &out, x, y, width, height, NULL))
  error_handling();

Now out will hold a reference to a 1000 by 1000 pixel image, with in pasted 10 right and 10 down from the top left-hand corner. The remainder of the image will be black. If in is too large, it will be clipped at the image edges.

Operations can take options. You give these as a set of NULL-terminated name-value pairs at the end of the call. For example, you can write:

if (vips_embed (in, &out, x, y, width, height, 
  "extend", VIPS_EXTEND_COPY,
  NULL))
  error_handling();

And now the new edge pixels, which were black, will be filled with a copy of the edge pixels of in. Operation options are listed at the top of each operation's entry in the docs. Alternatively, the vips program is handy for getting a summary of an operation's parameters. For example:

$ vips embed
embed an image in a larger image
usage:
   embed in out x y width height
where:
   in           - Input image, input VipsImage
   out          - Output image, output VipsImage
   x            - Left edge of input in output, input gint
			                default: 0
			                min: -1000000000, max: 1000000000
   y            - Top edge of input in output, input gint
			                default: 0
			                min: -1000000000, max: 1000000000
   width        - Image width in pixels, input gint
			                default: 1
			                min: 1, max: 1000000000
   height       - Image height in pixels, input gint
			                default: 1
			                min: 1, max: 1000000000
optional arguments:
   extend       - How to generate the extra pixels, input VipsExtend
			                default: black
			                allowed: black, copy, repeat, mirror, white, background
   background   - Colour for background pixels, input VipsArrayDouble
operation flags: sequential-unbuffered 

See VipsOperation for more information on running operations on images.

When you are done, you can write the final image to a disc file, to a formatted memory buffer, or to C-style memory array. See vips_image_write_to_file() and friends.

Getting pixels

Use VipsRegion to read pixels out of images. You can use VIPS_IMAGE_ADDR() as well, but this can need a large amount of memory to work. See extending for an introduction to writing your own operations.

Error handling

VIPS keeps a log of error message, see VIPS Error to find out how to get and clear the error log.

Example

Example 1. VIPS from C example

/* compile with:
 *
 *      gcc -g -Wall try211.c `pkg-config vips --cflags --libs`
 */

#include <stdio.h>
#include <vips/vips.h>

int
main( int argc, char **argv )
{
  VipsImage *in;
  double mean;
  VipsImage *out;

  if( VIPS_INIT( argv[0] ) )
    vips_error_exit( NULL ); 

  if( argc != 3 )
    vips_error_exit( "usage: %s infile outfile", argv[0] ); 
  
  if( !(in = vips_image_new_from_file( argv[1], NULL )) )
    vips_error_exit( NULL );

  printf( "image width = %d\n", vips_image_get_width( in ) ); 

  if( vips_avg( in, &mean, NULL ) )
    vips_error_exit( NULL );

  printf( "mean pixel value = %g\n", mean ); 

  if( vips_invert( in, &out, NULL ) )
    vips_error_exit( NULL );

  g_object_unref( in ); 

  if( vips_image_write_to_file( out, argv[2], NULL ) )
    vips_error_exit( NULL );

  g_object_unref( out ); 

  return( 0 );
}

vips-8.2.2/doc/html/using-from-python.html0000664000175000017500000006323112651721507015446 00000000000000 VIPS from Python: VIPS Reference Manual

VIPS from Python

Using VIPS — How to use the VIPS library from Python

Introduction

VIPS comes with a convenient, high-level Python API built on on gobject-introspection. As long as you can get GOI for your platform, you should be able to use libvips.

To test the binding, start up Python and at the console enter:

>>> from gi.repository import Vips
>>> x = Vips.Image.new_from_file("/path/to/some/image/file.jpg")
>>> x.width
1450
>>>

  1. If import fails, check you have the Python gobject-introspection packages installed, that you have the libvips typelib installed, and that the typelib is either in the system area or on your GI_TYPELIB_PATH.

  2. If .new_from_file() fails, the vips overrides have not been found. Make sure Vips.py is in your system overrides area.

Example program

Here's a complete example program:

#!/usr/bin/python

import sys

from gi.repository import Vips

im = Vips.Image.new_from_file(sys.argv[1])

im = im.extract_area(100, 100, im.width - 200, im.height - 200)
im = im.similarity(scale = 0.9)
mask = Vips.Image.new_from_array([[-1, -1,  -1], 
                                  [-1, 16,  -1], 
                                  [-1, -1,  -1]], scale = 8)
im = im.conv(mask)

im.write_to_file(sys.argv[2])

Reading this code, the first interesting line is:

from gi.repository import Vips

When Python executes the import line it performs the following steps:

  1. It searches for a file called Vips-x.y.typelib. This is a binary file generated automatically during libvips build by introspection of the libvips shared library plus scanning of the C headers. It lists all the API entry points, all the types the library uses, and has an extra set of hints for object ownership and reference counting. The typelib is searched for in /usr/lib/gi-repository-1.0 and along the path in the environment variable GI_TYPELIB_PATH.

  2. It uses the typelib to make a basic binding for libvips. It's just the C API with a little very light mangling, so for example the enum member VIPS_FORMAT_UCHAR of the enum VipsBandFormat becomes Vips.BandFormat.UCHAR.

  3. The binding you get can be rather unfriendly, so it also loads a set of overrides from Vips.py in /usr/lib/python2.7/dist-packages/gi/overrides (on my system at least). If you're using python3, it's /usr/lib/python3/dist-packages/gi/overrides. Unfortunately, as far as I know, there is no way to extend this search using environment variables. You MUST have Vips.py in exactly this directory. If you install vips via a package manager this will happen automatically, since vips and pygobject will have been built to the same prefix, but if you are installing vips from source and the prefix does not match, it will not be installed for you, you will need to copy it.

  4. Finally, Vips.py makes the rest of the binding. In fact, Vips.py makes almost all the binding: it defines __getattr__ on Vips.Image and binds at runtime by searching libvips for an operation of that name.

The next line is:

im = Vips.Image.new_from_file(sys.argv[1])

This loads the input image. You can append load options to the argument list as keyword arguments, for example:

im = Vips.Image.new_from_file(sys.argv[1], access = Vips.Access.SEQUENTIAL)

See the various loaders for a list of the available options for each file format. The C equivalent to this function, vips_image_new_from_file(), has more extensive documentation. Try help(Vips.Image) to see a list of all the image constructors --- you can load from memory, or create from an array, for example.

The next line is:

im = im.extract_area(100, 100, im.width - 200, im.height - 200)

The arguments are left, top, width, height, so this crops 100 pixels off every edge. Try help(im.extract_area) and the C API docs for vips_extract_area() for details. You can use .crop() as a synonym, if you like.

im.width gets the image width in pixels, see help(Vips.Image) and vips_image_get_width() and friends for a list of the other getters.

The next line:

im = im.similarity(scale = 0.9)

shrinks by 10%. By default it uses bilinear interpolation, use interpolate to pick another interpolator, for example:

im = im.similarity(scale = 0.9, interpolate = Vips.Interpolate.new("bicubic"))

see vips_similarity() for full documentation. The similarity operator will not give good results for large resizes (more than a factor of two). See vips_resize() if you need to make a large change.

Next:

mask = Vips.Image.new_from_array([[-1, -1,  -1], 
                                  [-1, 16,  -1], 
                                  [-1, -1,  -1]], scale = 8)
im = im.conv(mask)

makes an image from a 2D array, then convolves with that. The scale keyword argument lets you set a divisor for convolution, handy for integer convolutions. You can set offset as well. See vips_conv() for details on the vips convolution operator.

Finally,

im.write_to_file(sys.argv[2])

sends the image back to the filesystem. There's also .write_to_buffer() to make a string containing the formatted image, and .write() to write to another image.

As with .new_from_file() you can append save options as keyword arguments. For example:

im.write_to_file("test.jpg", Q = 90)

will write a JPEG image with quality set to 90. See the various save operations for a list of all the save options, for example vips_jpegsave().

Getting help

Try help(Vips) for everything, help(Vips.Image) for something slightly more digestible, or something like help(Vips.Image.black) for help on a specific class member.

You can't get help on dynamically bound member functions like .add() this way. Instead, make an image and get help from that, for example:

image = Vips.Image.black(1, 1)
help(image.add)

And you'll get a summary of the operator's behaviour and how the arguments are represented in Python.

The API docs have a handy table of all vips operations, if you want to find out how to do something, try searching that.

The vips command can be useful too. For example, in a terminal you can type vips jpegsave to get a summary of an operation:

$ vips jpegsave
save image to jpeg file
usage:
   jpegsave in filename
where:
   in           - Image to save, input VipsImage
   filename     - Filename to save to, input gchararray
optional arguments:
   Q            - Q factor, input gint
                      default: 75
                      min: 1, max: 100
   profile      - ICC profile to embed, input gchararray
   optimize-coding - Compute optimal Huffman coding tables, input gboolean
                      default: false
   interlace    - Generate an interlaced (progressive) jpeg, input gboolean
                      default: false
   no-subsample - Disable chroma subsample, input gboolean
                      default: false
   trellis-quant - Apply trellis quantisation to each 8x8 block, input gboolean
                      default: false
   overshoot-deringing - Apply overshooting to samples with extreme values, input gboolean
                      default: false
   optimize-scans - Split the spectrum of DCT coefficients into separate scans, input gboolean
                      default: false
   strip        - Strip all metadata from image, input gboolean
                      default: false
   background   - Background value, input VipsArrayDouble
operation flags: sequential-unbuffered nocache 

pyvips8 basics

As noted above, the Python interface comes in two main parts, an automatically generated binding based on the vips typelib, plus a set of extra features provided by overrides. The rest of this chapter runs through the features provided by the overrides.

Automatic wrapping

The overrides intercept member lookup on the Vips.Image class and look for vips operations with that name. So the vips operation "add", which appears in the C API as vips_add(), appears in Python as image.add().

The first input image argument becomes the self argument. If there are no input image arguments, the operation appears as a class member. Optional input arguments become keyword arguments. The result is a list of all the output arguments, or a single output if there is only one.

Optional output arguments are enabled with a boolean keyword argument of that name. For example, "min" (the operation which appears in the C API as vips_min()), can be called like this:

min_value = im.min()

and min_value will be a floating point value giving the minimum value in the image. "min" can also find the position of the minimum value with the x and y optional output arguments. Call it like this:

min_value, opts = im.min(x = True, y = True)
x = opts['x']
y = opts['y']

In other words, if optional output args are requested, an extra dictionary is returned containing those objects. Of course in this case, the .minpos() convenience function would be simpler, see below.

Because operations are member functions and return the result image, you can chain them. For example, you can write:

result_image = image.sin().pow(2)

to calculate the square of the sine for each pixel. There is also a full set of arithmetic operator overloads, see below.

VIPS types are also automatically wrapped. The override looks at the type of argument required by the operation and converts the value you supply, when it can. For example, "linear" takes a VipsArrayDouble as an argument for the set of constants to use for multiplication. You can supply this value as an integer, a float, or some kind of compound object and it will be converted for you. You can write:

result_image = image.linear(1, 3)
result_image = image.linear(12.4, 13.9)
result_image = image.linear([1, 2, 3], [4, 5, 6])
result_image = image.linear(1, [4, 5, 6])

And so on. A set of overloads are defined for .linear(), see below.

It does a couple of more ambitious conversions. It will automatically convert to and from the various vips types, like VipsBlob and VipsArrayImage. For example, you can read the ICC profile out of an image like this:

profile = im.get_value("icc-profile-data")

and profile will be a string.

You can use array constants instead of images. A 2D array is simply changed into a one-band double image. This is handy for things like .erode(), for example:

im = im.erode([[128, 255, 128],
               [255, 255, 255],
               [128, 255, 128]])

will erode an image with a 4-connected structuring element.

If an operation takes several input images, you can use a 1D array constant or a number constant for all but one of them and the wrapper will expand it to an image for you. For example, .ifthenelse() uses a condition image to pick pixels between a then and an else image:

result_image = condition_image.ifthenelse(then_image, else_image)

You can use a constant instead of either the then or the else parts, and it will be expanded to an image for you. If you use a constant for both then and else, it will be expanded to match the condition image. For example:

result_image = condition_image.ifthenelse([0, 255, 0], [255, 0, 0])

Will make an image where true pixels are green and false pixels are red.

This is also useful for .bandjoin(), the thing to join two or more images up bandwise. You can write:

rgba = rgb.bandjoin(255)

to add a constant 255 band to an image, perhaps to add an alpha channel. Of course you can also write:

result_image = image1.bandjoin(image2)
result_image = image1.bandjoin([image2, image3])
result_image = image1.bandjoin([image2, 255])

and so on.

Exceptions

The wrapper spots errors from vips operations and raises the Vips.Error exception. You can catch it in the usual way. The .detail member gives the detailed error message.

Reading and writing areas of memory

You can use the C API functions vips_image_new_from_memory() and vips_image_write_to_memory() directly from Python to read and write areas of memory. This can be useful if you need to get images to and from other other image processing libraries, like PIL or numpy.

Use them from Python like this:

image = Vips.Image.new_from_file("/path/to/some/image/file.jpg")
memory_area = image.write_to_memory()

memory_area is now a string containing uncompressed binary image data. For an RGB image, it will have bytes RGBRGBRGB..., being the first three pixels of the first scanline of the image. You can pass this string to the numpy or PIL constructors and make an image there.

Note that .write_to_memory() will make a copy of the image. It would be better to use a Python buffer to pass the data, but sadly this isn't possible with gobject-introspection, as far as I know.

Going the other way, you can construct a vips image from a string of binary data. For example:

image = Vips.Image.new_from_file("/path/to/some/image/file.jpg")
memory_area = image.write_to_memory()
image2 = Vips.Image.new_from_memory(memory_area, 
                                    image.width, image.height, image.bands, 
                                    Vips.BandFormat.UCHAR)

Now image2 should be an identical copy of image.

Be careful: in this direction, vips does not make a copy of the memory area, so if memory_area is freed by the Python garbage collector and you later try to use image2, you'll get a crash. Make sure you keep a reference to memory_area around for as long as you need it.

Draw operations

Paint operations like draw_circle and draw_line modify their input image. This makes them hard to use with the rest of libvips: you need to be very careful about the order in which operations execute or you can get nasty crashes.

The wrapper spots operations of this type and makes a private copy of the image in memory before calling the operation. This stops crashes, but it does make it inefficient. If you draw 100 lines on an image, for example, you'll copy the image 100 times. The wrapper does make sure that memory is recycled where possible, so you won't have 100 copies in memory. At least you can execute these operations.

If you want to avoid the copies, you'll need to call drawing operations yourself.

Overloads

The wrapper defines the usual set of arithmetic, boolean and relational overloads on image. You can mix images, constants and lists of constants (almost) freely. For example, you can write:

result_image = ((image * [1, 2, 3]).abs() < 128) | 4

The wrapper overloads [] to be vips_extract_band(). You can write:

result_image = image[2]

to extract the third band of the image. It implements the usual slicing and negative indexes, so you can write:

result_image = image[1:]
result_image = image[:3]
result_image = image[-2:]
result_image = [x.avg() for x in image]

and so on.

The wrapper overloads () to be vips_getpoint(). You can write:

r, g, b = image(10, 10)

to read out the value of the pixel at coordinates (10, 10) from an RGB image.

Expansions

Some vips operators take an enum to select an action, for example .math() can be used to calculate sine of every pixel like this:

result_image = image.math(Vips.OperationMath.SIN)

This is annoying, so the wrapper expands all these enums into separate members named after the enum. So you can write:

result_image = image.sin()

See help(Vips.Image) for a list.

Convenience functions

The wrapper defines a few extra useful utility functions: .get_value(), .set_value(), .bandsplit(), .maxpos(), .minpos(), .median(). Again, see help(Vips.Image) for a list.

Command-line option parsing

GLib includes a command-line option parser, and Vips defines a set of standard flags you can use with it. For example:

import sys
from gi.repository import GLib, Vips

context = GLib.OptionContext(" - test stuff")
main_group = GLib.OptionGroup("main", 
                              "Main options", "Main options for this program", 
                              None)
context.set_main_group(main_group)
Vips.add_option_entries(main_group)
context.parse(sys.argv)

vips-8.2.2/doc/html/ch01.html0000664000175000017500000000723212651721507012573 00000000000000 VIPS Overview: VIPS Reference Manual

VIPS Overview

VIPS from the command-line — How to use the VIPS library from the command-line
VIPS from C — How to use the VIPS library from C
VIPS from Python — How to use the VIPS library from Python
VIPS from C++ — How to use the VIPS library from C++
Writing bindings for libvips — How to write bindings for libvips
Extending VIPS — How to add operations to VIPS
VIPS function list — List of VIPS functions and operators
The VIPS file format — The VIPS file format
VIPS and threads — VIPS and threading

VIPS is a free image processing system. It is good with large images (images larger than the amount of RAM you have available), with many CPUs (speed scales linearly to at least 32 threads), for working with colour, for scientific analysis and for general research and development. As well as JPEG, TIFF and PNG images, it also supports scientific formats like FITS, Matlab, Analyze, PFM, Radiance and OpenSlide. It works on many UNIX-like platforms, as well as Windows and OS X. VIPS is released under the GNU Library General Public License (GNU LGPL).

vips-8.2.2/doc/html/index.sgml0000664000175000017500000040524012651721507013146 00000000000000 vips-8.2.2/doc/html/left.png0000644000175000017500000000027312651721507012606 00000000000000‰PNG  IHDRóÿa‚IDATxÕÏ!ÆqÛ'˜(ª +’#H²¨»9„èš+¤ÚÉf†×ïßû%þÛ¯>ÛSû›:l Rõ8I5äF°£EéÆ<Ö4(Ý”Á2û{Á‡73Ò͉êÒ„'ÁŠ:éFÜ 64I7àJ°§Mº>‚•êr"(ø¡¾!Q©IEND®B`‚vips-8.2.2/doc/html/libvips-basic.html0000664000175000017500000002604512651721507014572 00000000000000 basic: VIPS Reference Manual

basic

basic — a few typedefs used everywhere

Stability Level

Stable, unless otherwise indicated

Functions

int (*VipsCallbackFn) ()
void * (*VipsSListMap2Fn) ()
void * (*VipsSListMap4Fn) ()
void * (*VipsSListFold2Fn) ()
char * vips_path_filename7 ()
char * vips_path_mode7 ()

Types and Values

typedef VipsPel
enum VipsPrecision

Includes

#include <vips/vips.h>

Description

A few simple typedefs used by VIPS.

Functions

VipsCallbackFn ()

int
(*VipsCallbackFn) (void *a,
                   void *b);

VipsSListMap2Fn ()

void *
(*VipsSListMap2Fn) (void *item,
                    void *a,
                    void *b);

VipsSListMap4Fn ()

void *
(*VipsSListMap4Fn) (void *item,
                    void *a,
                    void *b,
                    void *c,
                    void *d);

VipsSListFold2Fn ()

void *
(*VipsSListFold2Fn) (void *item,
                     void *a,
                     void *b,
                     void *c);

vips_path_filename7 ()

char *
vips_path_filename7 (const char *path);

Return the filename part of a vips7 path. For testing only.

Parameters

path

path to split

 

vips_path_mode7 ()

char *
vips_path_mode7 (const char *path);

Return the mode part of a vips7 path. For testing only.

Parameters

path

path to split

 

Types and Values

VipsPel

typedef unsigned char VipsPel;

A picture element. Cast this to whatever the associated VipsBandFormat says to get the value.


enum VipsPrecision

How accurate an operation should be.

Members

VIPS_PRECISION_INTEGER

int everywhere

 

VIPS_PRECISION_FLOAT

float everywhere

 

VIPS_PRECISION_APPROXIMATE

approximate integer output

 

VIPS_PRECISION_LAST

   
vips-8.2.2/doc/html/libvips-util.html0000664000175000017500000015241312651721507014465 00000000000000 util: VIPS Reference Manual

util

util

Functions

#define VIPS_PI
#define VIPS_RAD()
#define VIPS_DEG()
#define VIPS_MAX()
#define VIPS_MIN()
#define VIPS_ABS()
#define VIPS_CLIP()
#define VIPS_NUMBER()
#define VIPS_ISNAN()
#define VIPS_ISINF()
#define VIPS_FLOOR()
#define VIPS_CEIL()
#define VIPS_RINT()
#define VIPS_FABS()
#define VIPS_FMAX()
#define VIPS_FMIN()
#define VIPS_FCLIP()
#define VIPS_SWAP()
#define VIPS_UNROLL()
#define VIPS_CLIP_UCHAR()
#define VIPS_CLIP_CHAR()
#define VIPS_CLIP_USHORT()
#define VIPS_CLIP_SHORT()
#define VIPS_CLIP_UINT()
#define VIPS_CLIP_NONE()
#define VIPS_PATH_MAX
const char * vips_enum_string ()
const char * vips_enum_nick ()
int vips_enum_from_nick ()
int vips_flags_from_nick ()
gboolean vips_slist_equal ()
void * vips_slist_map2 ()
void * vips_slist_map2_rev ()
void * vips_slist_map4 ()
void * vips_slist_fold2 ()
GSList * vips_slist_filter ()
void vips_slist_free_all ()
void * vips_map_equal ()
void * vips_hash_table_map ()
char * vips_strncpy ()
char * vips_strrstr ()
gboolean vips_ispostfix ()
gboolean vips_isprefix ()
char * vips_break_token ()
void vips__chomp ()
int vips_vsnprintf ()
int vips_snprintf ()
int vips_filename_suffix_match ()
gint64 vips_file_length ()
int vips__write ()
FILE * vips__file_open_read ()
FILE * vips__file_open_write ()
char * vips__file_read ()
char * vips__file_read_name ()
int vips__file_write ()
int vips__get_bytes ()
int vips__fgetc ()
GValue * vips__gvalue_ref_string_new ()
void vips__gslist_gvalue_free ()
GSList * vips__gslist_gvalue_copy ()
GSList * vips__gslist_gvalue_merge ()
char * vips__gslist_gvalue_get ()
int vips__seek ()
int vips__ftruncate ()
int vips_existsf ()
int vips_mkdirf ()
int vips_rmdirf ()
int vips_rename ()
FILE * vips_popenf ()
const char * vips__token_get ()
const char * vips__token_must ()
const char * vips__token_need ()
const char * vips__find_rightmost_brackets ()
void vips__filename_split8 ()
int vips_ispoweroftwo ()
int vips_amiMSBfirst ()
char * vips__temp_name ()
void vips__change_suffix ()

Types and Values

enum VipsToken

Description

Functions

VIPS_PI

#define VIPS_PI (3.14159265358979323846)

VIPS_RAD()

#define VIPS_RAD( R ) (((R) / 360.0) * 2.0 * VIPS_PI)

VIPS_DEG()

#define VIPS_DEG( A ) (((A) / (2.0 * VIPS_PI)) * 360.0)

VIPS_MAX()

#define VIPS_MAX( A, B ) ((A) > (B) ? (A) : (B))

VIPS_MIN()

#define VIPS_MIN( A, B ) ((A) < (B) ? (A) : (B))

VIPS_ABS()

#define VIPS_ABS( X ) (((X) >= 0) ? (X) : -(X))

VIPS_CLIP()

#define VIPS_CLIP( A, V, B ) VIPS_MAX( (A), VIPS_MIN( (B), (V) ) )

VIPS_NUMBER()

#define VIPS_NUMBER( R ) ((int) (sizeof(R) / sizeof(R[0])))

VIPS_ISNAN()

#define VIPS_ISNAN( V ) __builtin_isnan( V )

VIPS_ISINF()

#define VIPS_ISINF( V ) __builtin_isinf( V )

VIPS_FLOOR()

#define VIPS_FLOOR( V ) __builtin_floor( V )

VIPS_CEIL()

#define VIPS_CEIL( V ) __builtin_ceil( V )

VIPS_RINT()

#define VIPS_RINT( V ) __builtin_rint( V )

VIPS_FABS()

#define VIPS_FABS( V ) __builtin_fabs( V )

VIPS_FMAX()

#define VIPS_FMAX( A, B ) __builtin_fmax( A, B )

VIPS_FMIN()

#define VIPS_FMIN( A, B ) __builtin_fmin( A, B )

VIPS_FCLIP()

#define VIPS_FCLIP( A, V, B ) VIPS_FMAX( (A), VIPS_FMIN( (B), (V) ) )

VIPS_SWAP()

#define             VIPS_SWAP( TYPE, A, B )

VIPS_UNROLL()

#define             VIPS_UNROLL( N, OPER )

VIPS_CLIP_UCHAR()

#define             VIPS_CLIP_UCHAR( V, SEQ )

VIPS_CLIP_CHAR()

#define             VIPS_CLIP_CHAR( V, SEQ )

VIPS_CLIP_USHORT()

#define             VIPS_CLIP_USHORT( V, SEQ )

VIPS_CLIP_SHORT()

#define             VIPS_CLIP_SHORT( V, SEQ )

VIPS_CLIP_UINT()

#define             VIPS_CLIP_UINT( V, SEQ )

VIPS_CLIP_NONE()

#define VIPS_CLIP_NONE( V, SEQ ) {}

VIPS_PATH_MAX

#define VIPS_PATH_MAX (4096)

vips_enum_string ()

const char *
vips_enum_string (GType enm,
                  int value);

vips_enum_nick ()

const char *
vips_enum_nick (GType enm,
                int value);

vips_enum_from_nick ()

int
vips_enum_from_nick (const char *domain,
                     GType type,
                     const char *str);

vips_flags_from_nick ()

int
vips_flags_from_nick (const char *domain,
                      GType type,
                      const char *nick);

vips_slist_equal ()

gboolean
vips_slist_equal (GSList *l1,
                  GSList *l2);

vips_slist_map2 ()

void *
vips_slist_map2 (GSList *list,
                 VipsSListMap2Fn fn,
                 void *a,
                 void *b);

vips_slist_map2_rev ()

void *
vips_slist_map2_rev (GSList *list,
                     VipsSListMap2Fn fn,
                     void *a,
                     void *b);

vips_slist_map4 ()

void *
vips_slist_map4 (GSList *list,
                 VipsSListMap4Fn fn,
                 void *a,
                 void *b,
                 void *c,
                 void *d);

vips_slist_fold2 ()

void *
vips_slist_fold2 (GSList *list,
                  void *start,
                  VipsSListFold2Fn fn,
                  void *a,
                  void *b);

vips_slist_filter ()

GSList *
vips_slist_filter (GSList *list,
                   VipsSListMap2Fn fn,
                   void *a,
                   void *b);

vips_slist_free_all ()

void
vips_slist_free_all (GSList *list);

vips_map_equal ()

void *
vips_map_equal (void *a,
                void *b);

vips_hash_table_map ()

void *
vips_hash_table_map (GHashTable *hash,
                     VipsSListMap2Fn fn,
                     void *a,
                     void *b);

vips_strncpy ()

char *
vips_strncpy (char *dest,
              const char *src,
              int n);

vips_strrstr ()

char *
vips_strrstr (const char *haystack,
              const char *needle);

vips_ispostfix ()

gboolean
vips_ispostfix (const char *a,
                const char *b);

vips_isprefix ()

gboolean
vips_isprefix (const char *a,
               const char *b);

vips_break_token ()

char *
vips_break_token (char *str,
                  const char *brk);

vips__chomp ()

void
vips__chomp (char *str);

vips_vsnprintf ()

int
vips_vsnprintf (char *str,
                size_t size,
                const char *format,
                va_list ap);

vips_snprintf ()

int
vips_snprintf (char *str,
               size_t size,
               const char *format,
               ...);

vips_filename_suffix_match ()

int
vips_filename_suffix_match (const char *path,
                            const char *suffixes[]);

vips_file_length ()

gint64
vips_file_length (int fd);

vips__write ()

int
vips__write (int fd,
             const void *buf,
             size_t count);

vips__file_open_read ()

FILE *
vips__file_open_read (const char *filename,
                      const char *fallback_dir,
                      gboolean text_mode);

vips__file_open_write ()

FILE *
vips__file_open_write (const char *filename,
                       gboolean text_mode);

vips__file_read ()

char *
vips__file_read (FILE *fp,
                 const char *name,
                 size_t *length_out);

vips__file_read_name ()

char *
vips__file_read_name (const char *name,
                      const char *fallback_dir,
                      size_t *length_out);

vips__file_write ()

int
vips__file_write (void *data,
                  size_t size,
                  size_t nmemb,
                  FILE *stream);

vips__get_bytes ()

int
vips__get_bytes (const char *filename,
                 unsigned char buf[],
                 int len);

vips__fgetc ()

int
vips__fgetc (FILE *fp);

vips__gvalue_ref_string_new ()

GValue *
vips__gvalue_ref_string_new (const char *text);

vips__gslist_gvalue_free ()

void
vips__gslist_gvalue_free (GSList *list);

vips__gslist_gvalue_copy ()

GSList *
vips__gslist_gvalue_copy (const GSList *list);

vips__gslist_gvalue_merge ()

GSList *
vips__gslist_gvalue_merge (GSList *a,
                           const GSList *b);

vips__gslist_gvalue_get ()

char *
vips__gslist_gvalue_get (const GSList *list);

vips__seek ()

int
vips__seek (int fd,
            gint64 pos);

vips__ftruncate ()

int
vips__ftruncate (int fd,
                 gint64 pos);

vips_existsf ()

int
vips_existsf (const char *name,
              ...);

vips_mkdirf ()

int
vips_mkdirf (const char *name,
             ...);

vips_rmdirf ()

int
vips_rmdirf (const char *name,
             ...);

vips_rename ()

int
vips_rename (const char *old_name,
             const char *new_name);

vips_popenf ()

FILE *
vips_popenf (const char *fmt,
             const char *mode,
             ...);

vips__token_get ()

const char *
vips__token_get (const char *buffer,
                 VipsToken *token,
                 char *string,
                 int size);

vips__token_must ()

const char *
vips__token_must (const char *buffer,
                  VipsToken *token,
                  char *string,
                  int size);

vips__token_need ()

const char *
vips__token_need (const char *buffer,
                  VipsToken need_token,
                  char *string,
                  int size);

vips__find_rightmost_brackets ()

const char *
vips__find_rightmost_brackets (const char *p);

vips__filename_split8 ()

void
vips__filename_split8 (const char *name,
                       char *filename,
                       char *option_string);

vips_ispoweroftwo ()

int
vips_ispoweroftwo (int p);

vips_amiMSBfirst ()

int
vips_amiMSBfirst (void);

vips__temp_name ()

char *
vips__temp_name (const char *format);

vips__change_suffix ()

void
vips__change_suffix (const char *name,
                     char *out,
                     int mx,
                     const char *new_suff,
                     const char **olds,
                     int nolds);

Types and Values

enum VipsToken

Tokens returned by the vips lexical analyzer, see vips__token_get(). This is used to parse option strings for arguments.

Left and right brackets can be any of (, {, [, <.

Strings may be in double quotes, and may contain escaped quote characters, for example string, "string" and "str\"ing".

Members

VIPS_TOKEN_LEFT

left bracket

 

VIPS_TOKEN_RIGHT

right bracket

 

VIPS_TOKEN_STRING

string constant

 

VIPS_TOKEN_EQUALS

equals sign

 

VIPS_TOKEN_COMMA

comma

 
vips-8.2.2/doc/html/libvips-transform.html0000664000175000017500000003245012651721507015521 00000000000000 transform: VIPS Reference Manual

transform

transform

Types and Values

Description

Functions

vips__transform_init ()

void
vips__transform_init (VipsTransformation *trn);

vips__transform_calc_inverse ()

int
vips__transform_calc_inverse (VipsTransformation *trn);

vips__transform_isidentity ()

int
vips__transform_isidentity (const VipsTransformation *trn);

vips__transform_add ()

int
vips__transform_add (const VipsTransformation *in1,
                     const VipsTransformation *in2,
                     VipsTransformation *out);

vips__transform_print ()

void
vips__transform_print (const VipsTransformation *trn);

vips__transform_forward_point ()

void
vips__transform_forward_point (const VipsTransformation *trn,
                               const double x,
                               const double y,
                               double *ox,
                               double *oy);

vips__transform_invert_point ()

void
vips__transform_invert_point (const VipsTransformation *trn,
                              const double x,
                              const double y,
                              double *ox,
                              double *oy);

vips__transform_forward_rect ()

void
vips__transform_forward_rect (const VipsTransformation *trn,
                              const VipsRect *in,
                              VipsRect *out);

vips__transform_invert_rect ()

void
vips__transform_invert_rect (const VipsTransformation *trn,
                             const VipsRect *in,
                             VipsRect *out);

vips__transform_set_area ()

void
vips__transform_set_area (VipsTransformation *Param1);

vips__affine ()

int
vips__affine (VipsImage *in,
              VipsImage *out,
              VipsTransformation *trn);

Types and Values

VipsTransformation

typedef struct {
	/* Area of input we can use. This can be smaller than the real input 
	 * image: we expand the input to add extra pixels for interpolation. 
	 */
	VipsRect iarea;			

	/* The area of the output we've been asked to generate. left/top can
	 * be negative.
	 */
	VipsRect oarea;

	/* The transform.
	 */
	double a, b, c, d;		
	double idx, idy;
	double odx, ody;

	double ia, ib, ic, id;		/* Inverse of matrix abcd */
} VipsTransformation;
vips-8.2.2/doc/html/right.png0000644000175000017500000000027212651721507012770 00000000000000‰PNG  IHDRóÿaIDATxÕÌ!qÇq›M´Iª +’h²¨rw@s‡7qA›d3óz|®ðüßí¿ÆOTô)êDpaHº.Á éÚìžÌH×dCðfAQ+j>¬I·¤&²-¶/æ™q‡=ÁƒifÜã@pcLª#Á•é‚3þ /Œ!N†¤•yIEND®B`‚vips-8.2.2/doc/html/libvips-VipsThreadState.html0000664000175000017500000006121312651721507016557 00000000000000 VipsThreadState: VIPS Reference Manual

VipsThreadState

VipsThreadState — pools of worker threads

Stability Level

Stable, unless otherwise indicated

Includes

#include <vips/vips.h>

Description

vips_threadpool_run() loops a set of threads over an image. Threads take it in turns to allocate units of work (a unit might be a tile in an image), then run in parallel to process those units. An optional progress function can be used to give feedback.

Functions

vips_thread_state_set ()

void *
vips_thread_state_set (VipsObject *object,
                       void *a,
                       void *b);

vips_thread_state_new ()

VipsThreadState *
vips_thread_state_new (VipsImage *im,
                       void *a);

VipsThreadStartFn ()

VipsThreadState *
(*VipsThreadStartFn) (VipsImage *im,
                      void *a);

VipsThreadpoolAllocateFn ()

int
(*VipsThreadpoolAllocateFn) (VipsThreadState *state,
                             void *a,
                             gboolean *stop);

This function is called to allocate a new work unit for the thread. It is always single-threaded, so it can modify per-pool state (such as a counter).

a , b , c are the values supplied to the call to vips_threadpool_run().

It should set stop to TRUE to indicate that no work could be allocated because the job is done.

See also: vips_threadpool_run().

Parameters

state

per-thread state

 

a

client data

 

b

client data

 

c

client data

 

stop

set this to signal end of computation

 

Returns

0 on success, or -1 on error


VipsThreadpoolWorkFn ()

int
(*VipsThreadpoolWorkFn) (VipsThreadState *state,
                         void *a);

This function is called to process a work unit. Many copies of this can run at once, so it should not write to the per-pool state. It can write to per-thread state.

a , b , c are the values supplied to the call to vips_threadpool_run().

See also: vips_threadpool_run().

Parameters

state

per-thread state

 

a

client data

 

b

client data

 

c

client data

 

Returns

0 on success, or -1 on error


VipsThreadpoolProgressFn ()

int
(*VipsThreadpoolProgressFn) (void *a);

This function is called by the main thread once for every work unit processed. It can be used to give the user progress feedback.

See also: vips_threadpool_run().

Parameters

a

client data

 

b

client data

 

c

client data

 

Returns

0 on success, or -1 on error


vips_threadpool_run ()

int
vips_threadpool_run (VipsImage *im,
                     VipsThreadStartFn start,
                     VipsThreadpoolAllocateFn allocate,
                     VipsThreadpoolWorkFn work,
                     VipsThreadpoolProgressFn progress,
                     void *a);

This function runs a set of threads over an image. Each thread first calls start to create new per-thread state, then runs allocate to set up a new work unit (perhaps the next tile in an image, for example), then work to process that work unit. After each unit is processed, progress is called, so that the operation can give progress feedback. progress may be NULL.

The object returned by start must be an instance of a subclass of VipsThreadState. Use this to communicate between allocate and work .

allocate and start are always single-threaded (so they can write to the per-pool state), whereas work can be executed concurrently. progress is always called by the main thread (ie. the thread which called vips_threadpool_run()).

See also: vips_concurrency_set().

Parameters

im

image to loop over

 

start

allocate per-thread state

 

allocate

allocate a work unit

 

work

process a work unit

 

progress

give progress feedback about a work unit, or NULL

 

a

client data

 

Returns

0 on success, or -1 on error.


vips_get_tile_size ()

void
vips_get_tile_size (VipsImage *im,
                    int *tile_width,
                    int *tile_height,
                    int *n_lines);

Pick a tile size and a buffer height for this image and the current value of vips_concurrency_get(). The buffer height will always be a multiple of tile_height.

Parameters

im

image to guess for

 

tile_width

return selected tile width

 

tile_height

return selected tile height

 

n_lines

return buffer height in scanlines

 

vips_concurrency_set ()

void
vips_concurrency_set (int concurrency);

Sets the number of worker threads that vips should use when running a VipsThreadPool.

The special value 0 means "default". In this case, the number of threads is set by the environment variable VIPS_CONCURRENCY, or if that is not set, the number of threads availble on the host machine.

See also: vips_concurrency_get().

Parameters

concurrency

number of threads to run

 

vips_concurrency_get ()

int
vips_concurrency_get (void);

Returns the number of worker threads that vips should use when running a VipsThreadPool.

vips gets this values from these sources in turn:

If vips_concurrency_set() has been called, this value is used. The special value 0 means "default". You can also use the command-line argument "--vips-concurrency" to set this value.

If vips_concurrency_set() has not been called and no command-line argument was used, vips uses the value of the environment variable VIPS_CONCURRENCY,

If VIPS_CONCURRENCY has not been set, vips find the number of hardware threads that the host machine can run in parallel and uses that value.

The final value is clipped to the range 1 - 1024.

See also: vips_concurrency_get().

Returns

number of worker threads to use.

Types and Values

See Also

generate
vips-8.2.2/doc/html/style.css0000644000175000017500000002115412651721507013021 00000000000000body { font-family: cantarell, sans-serif; } .synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; background: rgba(238, 238, 236, 0.5); border: solid 1px rgb(238, 238, 236); padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ /* fallback for no rgba support */ background: #e6f3ff; border: solid 1px #729fcf; background: rgba(114, 159, 207, 0.1); border: solid 1px rgba(114, 159, 207, 0.2); padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.informaltable table { border-collapse: separate; border-spacing: 1em 0.3em; border: none; } div.informaltable table td, div.informaltable table th { vertical-align: top; } .function_type, .variable_type, .property_type, .signal_type, .parameter_name, .struct_member_name, .union_member_name, .define_keyword, .datatype_keyword, .typedef_keyword { text-align: right; } /* dim non-primary columns */ .c_punctuation, .function_type, .variable_type, .property_type, .signal_type, .define_keyword, .datatype_keyword, .typedef_keyword, .property_flags, .signal_flags, .parameter_annotations, .enum_member_annotations, .struct_member_annotations, .union_member_annotations { color: #888a85; } .function_type a, .function_type a:visited, .function_type a:hover, .property_type a, .property_type a:visited, .property_type a:hover, .signal_type a, .signal_type a:visited, .signal_type a:hover, .signal_flags a, .signal_flags a:visited, .signal_flags a:hover { color: #729fcf; } td p { margin: 0.25em; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } h4 { color: #555753; margin-top: 1em; margin-bottom: 1em; } hr { /* tango:aluminium 1 */ color: #d3d7cf; background: #d3d7cf; border: none 0px; height: 1px; clear: both; margin: 2.0em 0em 2.0em 0em; } dl.toc dt { padding-bottom: 0.25em; } dl.toc > dt { padding-top: 0.25em; padding-bottom: 0.25em; font-weight: bold; } dl.toc > dl { padding-bottom: 0.5em; } .parameter { font-style: normal; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .informalfigure, .figure { margin: 1em; } .informalexample, .example { margin-top: 1em; margin-bottom: 1em; } .warning { /* tango:orange 0/1 */ background: #ffeed9; background: rgba(252, 175, 62, 0.1); border-color: #ffb04f; border-color: rgba(252, 175, 62, 0.2); } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; background: rgba(138, 226, 52, 0.1); border-color: #abf562; border-color: rgba(138, 226, 52, 0.2); } div.blockquote { border-color: #eeeeec; } .note, .warning, div.blockquote { padding: 0.5em; border-width: 1px; border-style: solid; margin: 2em; } .note p, .warning p { margin: 0; } div.warning h3.title, div.note h3.title { display: none; } p + div.section { margin-top: 1em; } div.refnamediv, div.refsynopsisdiv, div.refsect1, div.refsect2, div.toc, div.section { margin-bottom: 1em; } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .lineart { color: #d3d7cf; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-weight: normal; } .structfield { font-style: normal; font-weight: normal; } acronym,abbr { border-bottom: 1px dotted gray; } /* code listings */ .listing_code .programlisting .normal, .listing_code .programlisting .normal a, .listing_code .programlisting .number, .listing_code .programlisting .cbracket, .listing_code .programlisting .symbol { color: #555753; } .listing_code .programlisting .comment, .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .function, .listing_code .programlisting .function a, .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */ .listing_code .programlisting .keyword, .listing_code .programlisting .usertype, .listing_code .programlisting .type, .listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; border: solid 1px rgba(114, 159, 207, 0.2); padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; background: rgba(114, 159, 207, 0.2); /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; background: rgba(114, 159, 207, 0.1); } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; background: none; } .listing_lines pre, .listing_code pre { margin: 0px; } @media screen { /* these have a as a first child, but since there are no parent selectors * we can't use that. */ a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { display: inline-block; position: relative; top:-5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 2.5em; padding-bottom: 500px; max-width: 60em; } p { max-width: 60em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; background: #e2e2e2; border-bottom: solid 1px #babdb6; border-spacing: 5px; margin-top: 0; margin-bottom: 0; top: 0; left: 0; z-index: 10; } table.navigation#top td { padding-left: 6px; padding-right: 6px; } .navigation a, .navigation a:visited { /* tango:sky blue 3 */ color: #204a87; } .navigation a:hover { /* tango:sky blue 2 */ color: #3465a4; } td.shortcuts { /* tango:sky blue 2 */ color: #3465a4; font-size: 80%; white-space: nowrap; } td.shortcuts .dim { color: #babdb6; } .navigation .title { font-size: 80%; max-width: none; margin: 0px; font-weight: normal; } } @media screen and (min-width: 60em) { /* screen larger than 60em */ body { margin: auto; } } @media screen and (max-width: 60em) { /* screen less than 60em */ #nav_hierarchy { display: none; } #nav_interfaces { display: none; } #nav_prerequisites { display: none; } #nav_derived_interfaces { display: none; } #nav_implementations { display: none; } #nav_child_properties { display: none; } #nav_style_properties { display: none; } #nav_index { display: none; } #nav_glossary { display: none; } .gallery_image { display: none; } .property_flags { display: none; } .signal_flags { display: none; } .parameter_annotations { display: none; } .enum_member_annotations { display: none; } .struct_member_annotations { display: none; } .union_member_annotations { display: none; } /* now that a column is hidden, optimize space */ col.parameters_name { width: auto; } col.parameters_description { width: auto; } col.struct_members_name { width: auto; } col.struct_members_description { width: auto; } col.enum_members_name { width: auto; } col.enum_members_description { width: auto; } col.union_members_name { width: auto; } col.union_members_description { width: auto; } .listing_lines { display: none; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; background: #e2e2e2; border: solid 1px #babdb6; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } vips-8.2.2/doc/html/libvips-header.html0000664000175000017500000026300712651721507014742 00000000000000 header: VIPS Reference Manual

header

header — get, set and walk image headers

Stability Level

Stable, unless otherwise indicated

Includes

#include <vips/vips.h>

Description

These functions let you get at image header data (including metadata) in a uniform way.

Use vips_image_get_typeof() to test for the existance and GType of a header field.

You can attach arbitrary metadata to images. Metadata is copied as images are processed, so all images which used this image as input, directly or indirectly, will have this same bit of metadata attached to them. Copying is implemented with reference-counted pointers, so it is efficient, even for large items of data. This does however mean that metadata items need to be immutable. Metadata is handy for things like ICC profiles or EXIF data.

Various convenience functions (eg. vips_image_set_int()) let you easily attach simple types like numbers, strings and memory blocks to images. Use vips_image_map() to loop over an image's fields, including all metadata.

Items of metadata are identified by strings. Some strings are reserved, for example the ICC profile for an image is known by convention as "icc-profile-data".

If you save an image in VIPS format, all metadata (with a restriction, see below) is automatically saved for you in a block of XML at the end of the file. When you load a VIPS image, the metadata is restored. You can use the vipsedit command-line tool to extract or replace this block of XML.

VIPS metadata is based on GValue. See the docs for that system if you want to do fancy stuff such as defining a new metadata type. VIPS defines a new GValue called vips_save_string, a variety of string, see vips_value_set_save_string(). If your GValue can be transformed to vips_save_string, it will be saved and loaded to and from VIPS files for you.

VIPS provides a couple of base classes which implement reference-counted areas of memory. If you base your metadata on one of these types, it can be copied between images efficiently.

Functions

vips_format_sizeof ()

guint64
vips_format_sizeof (VipsBandFormat format);

Parameters

format

format type

 

Returns

number of bytes for a band format.


vips_image_get_width ()

int
vips_image_get_width (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the number of pixels across the image.


vips_image_get_height ()

int
vips_image_get_height (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the number of pixels down the image.


vips_image_get_bands ()

int
vips_image_get_bands (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the number of bands (channels) in the image.


vips_image_get_format ()

VipsBandFormat
vips_image_get_format (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the format of each band element.


vips_image_get_coding ()

VipsCoding
vips_image_get_coding (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the image coding


vips_image_get_interpretation ()

VipsInterpretation
vips_image_get_interpretation (const VipsImage *image);

Return the VipsInterpretation set in the image header. Use vips_image_guess_interpretation() if you want a sanity-checked value.

Parameters

image

image to get from

 

Returns

the VipsInterpretation from the image header.


vips_image_guess_interpretation ()

VipsInterpretation
vips_image_guess_interpretation (const VipsImage *image);

Return the VipsInterpretation for an image, guessing a sane value if the set value looks crazy.

Parameters

image

image to guess for

 

Returns

a sensible VipsInterpretation for the image.


vips_image_get_xres ()

double
vips_image_get_xres (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the horizontal image resolution in pixels per millimeter.


vips_image_get_yres ()

double
vips_image_get_yres (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the vertical image resolution in pixels per millimeter.


vips_image_get_xoffset ()

int
vips_image_get_xoffset (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the horizontal position of the image origin, in pixels.


vips_image_get_yoffset ()

int
vips_image_get_yoffset (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the vertical position of the image origin, in pixels.


vips_image_get_filename ()

const char *
vips_image_get_filename (const VipsImage *image);

Parameters

image

image to get from

 

Returns

the name of the file the image was loaded from.


vips_image_get_mode ()

const char *
vips_image_get_mode (const VipsImage *image);

Image modes are things like "t", meaning a memory buffer, and "p" meaning a delayed computation.

Parameters

image

image to get from

 

Returns

the image mode.


vips_image_get_scale ()

double
vips_image_get_scale (const VipsImage *image);

Matrix images can have an optional scale field for use by integer convolution.

Parameters

image

image to get from

 

Returns

the scale.


vips_image_get_offset ()

double
vips_image_get_offset (const VipsImage *image);

Matrix images can have an optional offset field for use by integer convolution.

Parameters

image

image to get from

 

Returns

the offset.


vips_image_get_data ()

const void *
vips_image_get_data (VipsImage *image);

Return a pointer to the image's pixel data, if possible. This can involve allocating large amounts of memory and performing a long computation. Image pixels are laid out in band-packed rows.

Since this function modifies image , it is not threadsafe. Only call it on images which you are sure have not been shared with another thread.

See also: vips_image_wio_input(), vips_image_copy_memory().

Parameters

image

image to get data for

 

Returns

a pointer to pixel data, if possible.

[transfer none]


vips_image_init_fields ()

void
vips_image_init_fields (VipsImage *image,
                        int xsize,
                        int ysize,
                        int bands,
                        VipsBandFormat format,
                        VipsCoding coding,
                        VipsInterpretation interpretation,
                        double xres,
                        double yres);

A convenience function to set the header fields after creating an image. Normally you copy the fields from your input images with vips_image_pipelinev() and then make any adjustments you need, but if you are creating an image from scratch, for example vips_black() or vips_jpegload(), you do need to set all the fields yourself.

See also: vips_image_pipelinev().

Parameters

image

image to init

 

xsize

image width

 

ysize

image height

 

bands

image bands

 

format

band format

 

coding

image coding

 

interpretation

image type

 

xres

horizontal resolution, pixels per millimetre

 

yres

vertical resolution, pixels per millimetre

 

vips_image_set ()

void
vips_image_set (VipsImage *image,
                const char *field,
                GValue *value);

Set a piece of metadata on image . Any old metadata with that name is destroyed. The GValue is copied into the image, so you need to unset the value when you're done with it.

For example, to set an integer on an image (though you would use the convenience function vips_image_set_int() in practice), you would do:

GValue value = { 0 };

g_value_init (&value, G_TYPE_INT);
g_value_set_int (&value, 42);
vips_image_set (image, field, &value);
g_value_unset (&value);

See also: vips_image_get().

Parameters

image

image to set the metadata on

 

field

the name to give the metadata

 

value

the GValue to copy into the image

 

vips_image_get ()

int
vips_image_get (const VipsImage *image,
                const char *field,
                GValue *value_copy);

Fill value_copy with a copy of the header field. value_copy must be zeroed but uninitialised.

This will return -1 and add a message to the error buffer if the field does not exist. Use vips_image_get_typeof() to test for the existence of a field first if you are not certain it will be there.

For example, to read a double from an image (though of course you would use vips_image_get_double() in practice):

GValue value = { 0 };
double d;

if (vips_image_get (image, field, &value))
  return -1;

if (G_VALUE_TYPE (&value) != G_TYPE_DOUBLE) {
  vips_error( "mydomain", 
    _("field \"%s\" is of type %s, not double"),
    field, 
    g_type_name (G_VALUE_TYPE (&value)));
  g_value_unset (&value);
  return -1;
}

d = g_value_get_double (&value);
g_value_unset (&value);

See also: vips_image_get_typeof(), vips_image_get_double().

Parameters

image

image to get the field from from

 

field

the name to give the metadata

 

value_copy

the GValue is copied into this.

[transfer full][out caller-allocates]

Returns

0 on success, -1 otherwise.

[skip]


vips_image_get_as_string ()

int
vips_image_get_as_string (const VipsImage *image,
                          const char *field,
                          char **out);

Gets out from im under the name field . This function will read any field, returning it as a printable string. You need to free the string with g_free() when you are done with it.

See also: vips_image_get(), vips_image_get_typeof().

Parameters

image

image to get the header field from

 

field

field name

 

out

return field value as string.

[transfer full]

Returns

0 on success, -1 otherwise.


vips_image_get_typeof ()

GType
vips_image_get_typeof (const VipsImage *image,
                       const char *field);

Read the GType for a header field. Returns zero if there is no field of that name.

See also: vips_image_get().

Parameters

image

image to test

 

field

the name to search for

 

Returns

the GType of the field, or zero if there is no field of that name.


vips_image_remove ()

gboolean
vips_image_remove (VipsImage *image,
                   const char *field);

Find and remove an item of metadata. Return FALSE if no metadata of that name was found.

See also: vips_image_set(), vips_image_get_typeof().

Parameters

image

image to test

 

field

the name to search for

 

Returns

TRUE if an item of metadata of that name was found and removed


VipsImageMapFn ()

void *
(*VipsImageMapFn) (VipsImage *image,
                   const char *field,
                   GValue *value,
                   void *a);

vips_image_map ()

void *
vips_image_map (VipsImage *image,
                VipsImageMapFn fn,
                void *a);

This function calls fn for every header field, including every item of metadata.

Like all _map functions, the user function should return NULL to continue iteration, or a non-NULL pointer to indicate early termination.

See also: vips_image_get_typeof(), vips_image_get().

Parameters

image

image to map over

 

fn

function to call for each header field.

[scope call]

a

user data for function

 

Returns

NULL on success, the failing pointer otherwise.

[transfer none]


vips_image_set_area ()

void
vips_image_set_area (VipsImage *image,
                     const char *field,
                     VipsCallbackFn free_fn,
                     void *data);

Attaches data as a metadata item on image under the name field . When VIPS no longer needs the metadata, it will be freed with free_fn .

See also: vips_image_get_double(), vips_image_set()

Parameters

image

image to attach the metadata to

 

field

metadata name

 

free_fn

free function for data .

[scope async]

data

pointer to area of memory

 

vips_image_get_area ()

int
vips_image_get_area (const VipsImage *image,
                     const char *field,
                     void **data);

Gets data from image under the name field . A convenience function over vips_image_get(). Use vips_image_get_typeof() to test for the existance of a piece of metadata.

See also: vips_image_set_area(), vips_image_get(), vips_image_get_typeof()

Parameters

image

image to get the metadata from

 

field

metadata name

 

data

return metadata value

 

Returns

0 on success, -1 otherwise.


vips_image_set_blob ()

void
vips_image_set_blob (VipsImage *image,
                     const char *field,
                     VipsCallbackFn free_fn,
                     void *data,
                     size_t length);

Attaches blob as a metadata item on image under the name field . A convenience function over vips_image_set() using an vips_blob.

See also: vips_image_get_blob(), vips_image_set().

Parameters

image

image to attach the metadata to

 

field

metadata name

 

free_fn

free function for data .

[scope async]

data

pointer to area of memory

 

length

length of memory area

 

vips_image_get_blob ()

int
vips_image_get_blob (const VipsImage *image,
                     const char *field,
                     void **data,
                     size_t *length);

Gets blob from image under the name field , optionally return its length in length . A convenience function over vips_image_get(). Use vips_image_get_typeof() to test for the existance of a piece of metadata.

See also: vips_image_get(), vips_image_get_typeof(), vips_blob_get(),

Parameters

image

image to get the metadata from

 

field

metadata name

 

data

pointer to area of memory

 

length

return the blob length here, optionally

 

Returns

0 on success, -1 otherwise.


vips_image_get_int ()

int
vips_image_get_int (const VipsImage *image,
                    const char *field,
                    int *out);

Gets out from im under the name field . This function searches for int-valued fields.

See also: vips_image_get(), vips_image_get_typeof()

Parameters

image

image to get the header field from

 

field

field name

 

out

return field value

 

Returns

0 on success, -1 otherwise.


vips_image_set_int ()

void
vips_image_set_int (VipsImage *image,
                    const char *field,
                    int i);

Attaches i as a metadata item on image under the name field . A convenience function over vips_image_set().

See also: vips_image_get_int(), vips_image_set()

Parameters

image

image to attach the metadata to

 

field

metadata name

 

i

metadata value

 

vips_image_get_double ()

int
vips_image_get_double (const VipsImage *image,
                       const char *field,
                       double *out);

Gets out from im under the name field . This function searches for double-valued fields.

See also: vips_image_get(), vips_image_get_typeof()

Parameters

image

image to get the header field from

 

field

field name

 

out

return field value

 

Returns

0 on success, -1 otherwise.


vips_image_set_double ()

void
vips_image_set_double (VipsImage *image,
                       const char *field,
                       double d);

Attaches d as a metadata item on image under the name field . A convenience function over vips_image_set().

See also: vips_image_get_double(), vips_image_set()

Parameters

image

image to attach the metadata to

 

field

metadata name

 

d

metadata value

 

vips_image_get_string ()

int
vips_image_get_string (const VipsImage *image,
                       const char *field,
                       const char **out);

Gets out from im under the name field . This function searches for string-valued fields.

Do not free out .

See also: vips_image_get(), vips_image_get_typeof()

Parameters

image

image to get the header field from

 

field

field name

 

out

return field value

 

Returns

0 on success, -1 otherwise.


vips_image_set_string ()

void
vips_image_set_string (VipsImage *image,
                       const char *field,
                       const char *str);

Attaches str as a metadata item on image under the name field . A convenience function over vips_image_set() using an vips_ref_string.

See also: vips_image_get_double(), vips_image_set(), vips_ref_string

Parameters

image

image to attach the metadata to

 

field

metadata name

 

str

metadata value

 

vips_image_history_printf ()

int
vips_image_history_printf (VipsImage *image,
                           const char *format,
                           ...);

Add a line to the image history. The format and arguments are expanded, the date and time is appended prefixed with a hash character, and the whole string is appended to the image history and terminated with a newline.

For example:

vips_image_history_printf (image, "vips invert %s %s", 
  in->filename, out->filename);

Might add the string

"vips invert /home/john/fred.v /home/john/jim.v # Fri Apr 3 23:30:35 2009\n"

VIPS operations don't add history lines for you because a single action at the application level might involve many VIPS operations. History must be recorded by the application.

Parameters

image

add history line to this image

 

format

printf() format string

 

...

arguments to format string

 

Returns

0 on success, -1 on error.


vips_image_history_args ()

int
vips_image_history_args (VipsImage *image,
                         const char *name,
                         int argc,
                         char *argv[]);

Formats the name/argv as a single string and calls vips_image_history_printf(). A convenience function for command-line prorams.

See also: vips_image_get_history().

Parameters

image

image to attach history line to

 

name

program name

 

argc

number of program arguments

 

argv

program arguments

 

Returns

0 on success, -1 on error.


vips_image_get_history ()

const char *
vips_image_get_history (VipsImage *image);

This function reads the image history as a C string. The string is owned by VIPS and must not be freed.

VIPS tracks the history of each image, that is, the sequence of operations that generated that image. Applications built on VIPS need to call vips_image_history_printf() for each action they perform, setting the command-line equivalent for the action.

See also: vips_image_history_printf().

Parameters

image

get history from here

 

Returns

The history of image as a C string. Do not free!.

[transfer none]

Types and Values

VIPS_META_EXIF_NAME

#define VIPS_META_EXIF_NAME "exif-data"

The name that JPEG read and write operations use for the image's EXIF data.


VIPS_META_XMP_NAME

#define VIPS_META_XMP_NAME "xmp-data"

The name that read and write operations use for the image's XMP data.


VIPS_META_IPCT_NAME

#define VIPS_META_IPCT_NAME "ipct-data"

The name that read and write operations use for the image's IPCT data.


VIPS_META_PHOTOSHOP_NAME

#define VIPS_META_PHOTOSHOP_NAME "photoshop-data"

The name that TIFF read and write operations use for the image's TIFFTAG_PHOTOSHOP data.


VIPS_META_ICC_NAME

#define VIPS_META_ICC_NAME "icc-profile-data"

The name we use to attach an ICC profile. The file read and write operations for TIFF, JPEG, PNG and others use this item of metadata to attach and save ICC profiles. The profile is updated by the vips_icc_transform() operations.


VIPS_META_XML

#define VIPS_META_XML "xml-header"

The original XML that was used to code the metadata after reading a VIPS format file.


VIPS_META_IMAGEDESCRIPTION

#define VIPS_META_IMAGEDESCRIPTION "image-description"

The IMAGEDESCRIPTION tag. Often has useful metadata.


VIPS_META_RESOLUTION_UNIT

#define VIPS_META_RESOLUTION_UNIT "resolution-unit"

The JPEG and TIFF read and write operations use this to record the file's preferred unit for resolution.


VIPS_META_LOADER

#define VIPS_META_LOADER "vips-loader"

Record the name of the original loader here. Handy for hinting file formats and for debugging.

See Also

type
vips-8.2.2/doc/html/libvips-create.html0000664000175000017500000026041512651721507014755 00000000000000 create: VIPS Reference Manual

create

create — create images in various ways

Stability Level

Stable, unless otherwise indicated

Functions

int vips_black ()
int vips_xyz ()
int vips_grey ()
int vips_gaussmat ()
int vips_logmat ()
int vips_text ()
int vips_gaussnoise ()
int vips_eye ()
int vips_sines ()
int vips_zone ()
int vips_identity ()
int vips_buildlut ()
int vips_invertlut ()
int vips_tonelut ()
int vips_mask_ideal ()
int vips_mask_ideal_ring ()
int vips_mask_ideal_band ()
int vips_mask_butterworth ()
int vips_mask_butterworth_ring ()
int vips_mask_butterworth_band ()
int vips_mask_gaussian ()
int vips_mask_gaussian_ring ()
int vips_mask_gaussian_band ()
int vips_mask_fractal ()
int vips_fractsurf ()

Includes

#include <vips/vips.h>

Description

These functions generate various test images. You can combine them with the arithmetic and rotate functions to build more complicated images.

The im_benchmark() operations are for testing the VIPS SMP system.

Functions

vips_black ()

int
vips_black (VipsImage **out,
            int width,
            int height,
            ...);

Optional arguments:

bands : output bands

Make a black unsigned char image of a specified size.

See also: vips_xyz(), vips_text(), vips_gaussnoise().

Parameters

out

output image

 

width

output width

 

height

output height

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_xyz ()

int
vips_xyz (VipsImage **out,
          int width,
          int height,
          ...);

Optional arguments:

csize : size for third dimension dsize : size for fourth dimension esize : size for fifth dimension

Create a two-band uint32 image where the elements in the first band have the value of their x coordinate and elements in the second band have their y coordinate.

You can make any image where the value of a pixel is a function of its (x, y) coordinate by combining this operator with the arithmetic operators.

Set csize , dsize , esize to generate higher dimensions and add more bands. The extra dimensions are placed down the vertical axis. Use vips_grid() to change the layout.

See also: vips_grey(), vips_grid(), vips_identity().

Parameters

out

output image

 

width

horizontal size

 

height

vertical size

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_grey ()

int
vips_grey (VipsImage **out,
           int width,
           int height,
           ...);

Optional arguments:

uchar : output a uchar image

Create a one-band float image with the left-most column zero and the right-most 1. Intermediate pixels are a linear ramp.

Set uchar to output a uchar image with the leftmost pixel 0 and the rightmost 255.

See also: vips_xyz(), vips_identity().

Parameters

out

output image

 

width

image size

 

height

image size

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_gaussmat ()

int
vips_gaussmat (VipsImage **out,
               double sigma,
               double min_ampl,
               ...);

Optional arguments:

separable : generate a separable gaussian precision : VipsPrecision for out

Creates a circularly symmetric Gaussian image of radius sigma . The size of the mask is determined by the variable min_ampl ; if for instance the value .1 is entered this means that the produced mask is clipped at values less than 10 percent of the maximum amplitude.

The program uses the following equation:

H(r) = exp( -(r * r) / (2 * sigma * sigma ) )

The generated image has odd size and its maximum value is normalised to 1.0, unless precision is VIPS_PRECISION_INTEGER.

If separable is set, only the centre horizontal is generated. This is useful for separable convolutions.

If precision is VIPS_PRECISION_INTEGER, an integer gaussian is generated. This is useful for integer convolutions.

"scale" is set to the sum of all the mask elements.

See also: vips_logmat(), vips_conv().

Parameters

out

output image

 

sigma

standard deviation of mask

 

min_ampl

minimum amplitude

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_logmat ()

int
vips_logmat (VipsImage **out,
             double sigma,
             double min_ampl,
             ...);

Optional arguments:

separable : generate a separable mask precision : VipsPrecision for out

Creates a circularly symmetric Laplacian of Gaussian mask of radius sigma . The size of the mask is determined by the variable min_ampl ; if for instance the value .1 is entered this means that the produced mask is clipped at values within 10 persent of zero, and where the change between mask elements is less than 10%.

The program uses the following equation: (from Handbook of Pattern Recognition and image processing by Young and Fu, AP 1986 pages 220-221):

H(r) = (1 / (2 * M_PI * s4)) * (2 - (r2 / s2)) * exp(-r2 / (2 * s2))

where s2 = sigma * sigma , s4 = s2 * s2, r2 = r * r.

The generated mask has odd size and its maximum value is normalised to 1.0, unless precision is VIPS_PRECISION_INTEGER.

If separable is set, only the centre horizontal is generated. This is useful for separable convolutions.

If precision is VIPS_PRECISION_INTEGER, an integer mask is generated. This is useful for integer convolutions.

"scale" is set to the sum of all the mask elements.

See also: vips_gaussmat(), vips_conv().

Parameters

out

output image

 

sigma

standard deviation of mask

 

min_ampl

minimum amplitude

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_text ()

int
vips_text (VipsImage **out,
           const char *text,
           ...);

Optional arguments:

font : font to render with width : render within this many pixels across alignment : left/centre/right alignment dpi : render at this resolution spacing : space lines by this in points

Draw the string text to an image. out is a one-band 8-bit unsigned char image, with 0 for no text and 255 for text. Values inbetween are used for anti-aliasing.

text is the text to render as a UTF-8 string. It can contain Pango markup, for example "<i>The</i>Guardian".

font is the font to render with, as a fontconfig name. Examples might be "sans 12" or perhaps "bitstream charter bold 10".

width is the maximum number of pixels across to draw within. If the generated text is wider than this, it will wrap to a new line. In this case, alignment can be used to set the alignment style for multi-line text.

dpi sets the resolution to render at. "sans 12" at 72 dpi draws characters approximately 12 pixels high.

spacing sets the line spacing, in points. It would typicallly be something like font size times 1.2.

See also: vips_xyz(), vips_text(), vips_gaussnoise().

Parameters

out

output image

 

text

utf-8 text string to render

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_gaussnoise ()

int
vips_gaussnoise (VipsImage **out,
                 int width,
                 int height,
                 ...);

Optional arguments:

mean : mean of generated pixels sigma : standard deviation of generated pixels

Make a one band float image of gaussian noise with the specified distribution. The noise distribution is created by averaging 12 random numbers with the appropriate weights.

See also: vips_black(), vips_xyz(), vips_text().

Parameters

out

output image

 

width

output width

 

height

output height

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_eye ()

int
vips_eye (VipsImage **out,
          int width,
          int height,
          ...);

Optional arguments:

factor : maximum spatial frequency uchar : output a uchar image

Create a test pattern with increasing spatial frequence in X and amplitude in Y. factor should be between 0 and 1 and determines the maximum spatial frequency.

Set uchar to output a uchar image.

See also: vips_zone().

Parameters

out

output image

 

width

image size

 

height

image size

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_sines ()

int
vips_sines (VipsImage **out,
            int width,
            int height,
            ...);

Optional arguments:

hfreq : horizontal frequency vreq : vertical frequency uchar : output a uchar image

Creates a float one band image of the a sine waveform in two dimensions.

The number of horizontal and vertical spatial frequencies are determined by the variables hfreq and vfreq respectively. The function is useful for creating displayable sine waves and square waves in two dimensions.

If horfreq and verfreq are integers the resultant image is periodical and therfore the Fourier transform does not present spikes

Pixels are normally in [-1, +1], set uchar to output [0, 255].

See also: vips_grey(), vips_xyz().

Parameters

out

output image

 

width

image size

 

height

image size

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_zone ()

int
vips_zone (VipsImage **out,
           int width,
           int height,
           ...);

Optional arguments:

uchar : output a uchar image

Create a one-band image of a zone plate.

Pixels are normally in [-1, +1], set uchar to output [0, 255].

See also: vips_eye(), vips_xyz().

Parameters

out

output image

 

width

image size

 

height

image size

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_identity ()

int
vips_identity (VipsImage **out,
               ...);

Optional arguments:

bands : number of bands to create ushort : TRUE for an unsigned short identity size : number of LUT elements for a ushort image

Creates an identity lookup table, ie. one which will leave an image unchanged when applied with vips_maplut(). Each entry in the table has a value equal to its position.

Use the arithmetic operations on these tables to make LUTs representing arbitrary functions.

Normally LUTs are 8-bit. Set ushort to create a 16-bit table.

Normally 16-bit tables have 65536 entries. You can set this smaller with size .

See also: vips_xyz(), vips_maplut().

Parameters

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_buildlut ()

int
vips_buildlut (VipsImage *in,
               VipsImage **out,
               ...);

This operation builds a lookup table from a set of points. Intermediate values are generated by piecewise linear interpolation.

For example, consider this 2 x 2 matrix of (x, y) coordinates:

0 0
255 100

We then generate:

Index Value
0 0
1 0.4
... etc. by linear interpolation
255 100

This is then written as the output image, with the left column giving the index in the image to place the value.

The (x, y) points don't need to be sorted: we do that. You can have several Ys, each becomes a band in the output LUT. You don't need to start at zero, any integer will do, including negatives.

See also: vips_identity(), vips_invertlut().

Parameters

in

input matrix

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_invertlut ()

int
vips_invertlut (VipsImage *in,
                VipsImage **out,
                ...);

Optional arguments:

size : generate this much

Given a mask of target values and real values, generate a LUT which will map reals to targets. Handy for linearising images from measurements of a colour chart. All values in [0,1]. Piecewise linear interpolation, extrapolate head and tail to 0 and 1.

Eg. input like this:

4 3    
0.1 0.2 0.3 0.1
0.2 0.4 0.4 0.2
0.7 0.5 0.6 0.3

Means a patch with 10% reflectance produces an image with 20% in channel 1, 30% in channel 2, and 10% in channel 3, and so on.

Inputs don't need to be sorted (we do that). Generate any precision LUT, default to 256 elements.

It won't work too well for non-monotonic camera responses (we should fix this). Interpolation is simple piecewise linear; we ought to do something better really.

See also: vips_buildlut().

Parameters

in

input mask

 

out

output LUT

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_tonelut ()

int
vips_tonelut (VipsImage **out,
              ...);

Optional arguments:

in_max : input range out_max : output range Lb : black-point [0-100] Lw : white-point [0-100] Ps : shadow point (eg. 0.2) Pm : mid-tone point (eg. 0.5) Ph : highlight point (eg. 0.8) S : shadow adjustment (+/- 30) M : mid-tone adjustment (+/- 30) H : highlight adjustment (+/- 30)

vips_tonelut() generates a tone curve for the adjustment of image levels. It is mostly designed for adjusting the L* part of a LAB image in a way suitable for print work, but you can use it for other things too.

The curve is an unsigned 16-bit image with (in_max + 1) entries, each in the range [0, out_max ].

Lb , Lw are expressed as 0-100, as in LAB colour space. You specify the scaling for the input and output images with the in_max and out_max parameters.

Parameters

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_ideal ()

int
vips_mask_ideal (VipsImage **out,
                 int width,
                 int height,
                 double frequency_cutoff,
                 ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

Make an ideal high- or low-pass filter, that is, one with a sharp cutoff positioned at frequency_cutoff , where frequency_cutoff is in the range 0 - 1.

This operation creates a one-band float image of the specified size. The image has values in the range [0, 1] and is typically used for multiplying against frequency domain images to filter them. Masks are created with the DC component at (0, 0). The DC pixel always has the value 1.0.

Set nodc to not set the DC pixel.

Set optical to position the DC component in the centre of the image. This makes the mask suitable for multiplying against optical Fourier transforms. See vips_wrap().

Set reject to invert the sense of the filter. For example, low-pass becomes low-reject.

Set uchar to output an 8-bit unsigned char image rather than a float image. In this case, pixels are in the range [0 - 255].

See also: vips_mask_ideal(), vips_mask_ideal_ring(), vips_mask_ideal_band(), vips_mask_butterworth(), vips_mask_butterworth_ring(), vips_mask_butterworth_band(), vips_mask_gaussian(), vips_mask_gaussian_ring(), vips_mask_gaussian_band().

Parameters

out

output image

 

width

image size

 

height

image size

 

frequency_cutoff

threshold at which filter ends

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_ideal_ring ()

int
vips_mask_ideal_ring (VipsImage **out,
                      int width,
                      int height,
                      double frequency_cutoff,
                      double ringwidth,
                      ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

Make an ideal ring-pass or ring-reject filter, that is, one with a sharp ring positioned at frequency_cutoff of width width , where frequency_cutoff and width are expressed as the range 0 - 1.

See also: vips_mask_ideal().

Parameters

out

output image

 

width

image size

 

height

image size

 

frequency_cutoff

threshold at which filter ends

 

ringwidth

ring width

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_ideal_band ()

int
vips_mask_ideal_band (VipsImage **out,
                      int width,
                      int height,
                      double frequency_cutoff_x,
                      double frequency_cutoff_y,
                      double radius,
                      ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

Make an ideal band-pass or band-reject filter, that is, one with a sharp cutoff around the point frequency_cutoff_x , frequency_cutoff_y , of size radius .

See also: vips_mask_ideal().

Parameters

out

output image

 

width

image size

 

height

image size

 

frequency_cutoff_x

position of band

 

frequency_cutoff_y

position of band

 

radius

size of band

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_butterworth ()

int
vips_mask_butterworth (VipsImage **out,
                       int width,
                       int height,
                       double order,
                       double frequency_cutoff,
                       double amplitude_cutoff,
                       ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

Make an butterworth high- or low-pass filter, that is, one with a variable, smooth transition positioned at frequency_cutoff , where frequency_cutoff is in range 0 - 1. The shape of the curve is controlled by order --- higher values give a sharper transition. See Gonzalez and Wintz, Digital Image Processing, 1987.

See also: vips_mask_ideal().

Parameters

out

output image

 

width

image size

 

height

image size

 

order

filter order

 

frequency_cutoff

frequency threshold

 

amplitude_cutoff

amplitude threshold

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_butterworth_ring ()

int
vips_mask_butterworth_ring (VipsImage **out,
                            int width,
                            int height,
                            double order,
                            double frequency_cutoff,
                            double amplitude_cutoff,
                            double ringwidth,
                            ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

Make a butterworth ring-pass or ring-reject filter, that is, one with a variable, smooth transition positioned at frequency_cutoff of width width , where frequency_cutoff is in the range 0 - 1. The shape of the curve is controlled by order --- higher values give a sharper transition. See Gonzalez and Wintz, Digital Image Processing, 1987.

See also: vips_mask_ideal().

Parameters

out

output image

 

width

image size

 

height

image size

 

order

filter order

 

frequency_cutoff

frequency threshold

 

amplitude_cutoff

amplitude threshold

 

ringwidth

ringwidth

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_butterworth_band ()

int
vips_mask_butterworth_band (VipsImage **out,
                            int width,
                            int height,
                            double order,
                            double frequency_cutoff_x,
                            double frequency_cutoff_y,
                            double radius,
                            double amplitude_cutoff,
                            ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

Make an butterworth band-pass or band-reject filter, that is, one with a variable, smooth transition positioned at frequency_cutoff_x , frequency_cutoff_y , of radius radius . The shape of the curve is controlled by order --- higher values give a sharper transition. See Gonzalez and Wintz, Digital Image Processing, 1987.

See also: vips_mask_ideal().

Parameters

out

output image

 

width

image size

 

height

image size

 

order

filter order

 

frequency_cutoff_x

band position

 

frequency_cutoff_y

band position

 

radius

band radius

 

amplitude_cutoff

amplitude threshold

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_gaussian ()

int
vips_mask_gaussian (VipsImage **out,
                    int width,
                    int height,
                    double frequency_cutoff,
                    double amplitude_cutoff,
                    ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

Make a gaussian high- or low-pass filter, that is, one with a variable, smooth transition positioned at frequency_cutoff .

See also: vips_mask_ideal().

Parameters

out

output image

 

width

image size

 

height

image size

 

frequency_cutoff

frequency threshold

 

amplitude_cutoff

amplitude threshold

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_gaussian_ring ()

int
vips_mask_gaussian_ring (VipsImage **out,
                         int width,
                         int height,
                         double frequency_cutoff,
                         double amplitude_cutoff,
                         double ringwidth,
                         ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

Make a gaussian ring-pass or ring-reject filter, that is, one with a variable, smooth transition positioned at frequency_cutoff of width ringwidth .

See also: vips_mask_ideal().

Parameters

out

output image

 

width

image size

 

height

image size

 

frequency_cutoff

frequency threshold

 

amplitude_cutoff

amplitude threshold

 

ringwidth

ringwidth

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_gaussian_band ()

int
vips_mask_gaussian_band (VipsImage **out,
                         int width,
                         int height,
                         double frequency_cutoff_x,
                         double frequency_cutoff_y,
                         double radius,
                         double amplitude_cutoff,
                         ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

Make a gaussian band-pass or band-reject filter, that is, one with a variable, smooth transition positioned at frequency_cutoff_x , frequency_cutoff_y , of radius radius .

See also: vips_mask_ideal().

Parameters

out

output image

 

width

image size

 

height

image size

 

frequency_cutoff_x

band position

 

frequency_cutoff_y

band position

 

radius

band radius

 

amplitude_cutoff

amplitude threshold

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mask_fractal ()

int
vips_mask_fractal (VipsImage **out,
                   int width,
                   int height,
                   double fractal_dimension,
                   ...);

Optional arguments:

nodc : don't set the DC pixel reject : invert the filter sense optical : coordinates in optical space uchar : output a uchar image

This operation should be used to create fractal images by filtering the power spectrum of Gaussian white noise. See vips_gaussnoise().

See also: vips_mask_ideal().

Parameters

out

output image

 

width

image size

 

height

image size

 

fractal_dimension

fractal dimension

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_fractsurf ()

int
vips_fractsurf (VipsImage **out,
                int width,
                int height,
                double fractal_dimension,
                ...);

Generate an image of size width by height and fractal dimension fractal_dimension . The dimension should be between 2 and 3.

See also: vips_gaussnoise(), vips_mask_fractal().

Parameters

out

output image

 

width

output width

 

height

output height

 

fractal_dimension

fractal dimension

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error

Types and Values

vips-8.2.2/doc/html/libvips-rect.html0000664000175000017500000005722212651721507014447 00000000000000 rect: VIPS Reference Manual

rect

rect — the VIPS rectangle class

Stability Level

Stable, unless otherwise indicated

Types and Values

  VipsRect

Includes

#include <vips/vips.h>

Description

The VipsRect class and associated types and macros.

Functions

VIPS_RECT_RIGHT()

#define VIPS_RECT_RIGHT(R) ((R)->left + (R)->width)

VIPS_RECT_BOTTOM()

#define VIPS_RECT_BOTTOM(R) ((R)->top + (R)->height)

VIPS_RECT_HCENTRE()

#define VIPS_RECT_HCENTRE(R) ((R)->left + (R)->width / 2)

VIPS_RECT_VCENTRE()

#define VIPS_RECT_VCENTRE(R) ((R)->top + (R)->height / 2)

vips_rect_isempty ()

gboolean
vips_rect_isempty (const VipsRect *r);

Is r empty? ie. zero width or height.

Parameters

r

rectangle to test

 

Returns

TRUE if r contains no pixels.


vips_rect_includespoint ()

gboolean
vips_rect_includespoint (const VipsRect *r,
                         int x,
                         int y);

Does r contain point (x , y )?

Parameters

r

rectangle to test

 

x

position to test for

 

y

position to test for

 

Returns

TRUE if r contains (x , y ).


vips_rect_includesrect ()

gboolean
vips_rect_includesrect (const VipsRect *r1,
                        const VipsRect *r2);

Is r2 a subset of r1 ?

Parameters

r1

outer rectangle

 

r2

inner rectangle

 

Returns

TRUE if r2 is a subset of r1 .


vips_rect_equalsrect ()

gboolean
vips_rect_equalsrect (const VipsRect *r1,
                      const VipsRect *r2);

Is r1 equal to r2 ?

Parameters

r1

first rectangle

 

r2

second rectangle

 

Returns

TRUE if r1 is equal to r2 .


vips_rect_marginadjust ()

void
vips_rect_marginadjust (VipsRect *r,
                        int n);

Enlarge r by n . +1 means out one pixel.

Parameters

r

rectangle to adjust

 

n

enlarge by

 

vips_rect_intersectrect ()

void
vips_rect_intersectrect (const VipsRect *r1,
                         const VipsRect *r2,
                         VipsRect *out);

Fill out with the intersection of r1 and r2 . out can equal r1 or r2 .

Parameters

r1

input rectangle 1

 

r2

input rectangle 2

 

out

output rectangle

 

vips_rect_unionrect ()

void
vips_rect_unionrect (const VipsRect *r1,
                     const VipsRect *r2,
                     VipsRect *out);

Fill out with the bounding box of r1 and r2 . out can equal r1 or r2 .

Parameters

r1

input rectangle 1

 

r2

input rectangle 2

 

out

output rectangle

 

vips_rect_dup ()

VipsRect *
vips_rect_dup (const VipsRect *r);

Duplicate a rect to the heap. You need to free the result with vips_free().

Parameters

r

rectangle to duplicate

 

Returns

a pointer to copy of r allocated on the heap.


vips_rect_normalise ()

void
vips_rect_normalise (VipsRect *r);

Make sure width and height are >0 by moving the origin and flipping the rect.

Parameters

r

rect to normalise

 

Types and Values

VipsRect

typedef struct {
	int left;
	int top;
	int width;
	int height;
} VipsRect;

A VipsRect is a rectangular area of pixels. This is a struct for performing simple rectangle algebra.

Members

int left;

left edge of rectangle

 

int top;

top edge of rectangle

 

int width;

width of rectangle

 

int height;

height of rectangle

 

See Also

region
vips-8.2.2/doc/html/libvips-generate.html0000664000175000017500000013615612651721507015310 00000000000000 generate: VIPS Reference Manual

generate

generate — calculate pixels and pixel buffers

Stability Level

Stable, unless otherwise indicated

Functions

int (*VipsRegionWrite) ()
int vips_sink_disc ()
int vips_sink ()
int vips_sink_tile ()
void (*VipsSinkNotify) ()
int vips_sink_screen ()
int vips_sink_memory ()
void * vips_start_one ()
int vips_stop_one ()
void * vips_start_many ()
int vips_stop_many ()
VipsImage ** vips_allocate_input_array ()
int vips_image_generate ()
int vips_image_pipeline_array ()
int vips_image_pipelinev ()

Includes

#include <vips/vips.h>

Description

These functions let you attach generate functions to images and ask for regions of images to be calculated.

Functions

VipsRegionWrite ()

int
(*VipsRegionWrite) (VipsRegion *region,
                    VipsRect *area,
                    void *a);

The function should write the pixels in area from region . a is the value passed into vips_sink_disc().

See also: vips_sink_disc().

Parameters

region

get pixels from here

 

area

area to write

 

a

client data

 

Returns

0 on success, -1 on error.


vips_sink_disc ()

int
vips_sink_disc (VipsImage *im,
                VipsRegionWrite write_fn,
                void *a);

vips_sink_disc() loops over im , top-to-bottom, generating it in sections. As each section is produced, write_fn is called.

write_fn is always called single-threaded (though not always from the same thread), it's always given image sections in top-to-bottom order, and there are never any gaps.

This operation is handy for making image sinks which output to things like disc files. Things like vips_jpegsave(), for example, use this to write images to files in JPEG format.

See also: vips_concurrency_set().

Parameters

im

image to process

 

write_fn

called for every batch of pixels

 

a

client data

 

Returns

0 on success, -1 on error.


vips_sink ()

int
vips_sink (VipsImage *im,
           VipsStartFn start_fn,
           VipsGenerateFn generate_fn,
           VipsStopFn stop_fn,
           void *a,
           void *b);

Loops over an image. generate_fn is called for every pixel in the image, with the reg argument being a region of calculated pixels. vips_sink() is used to implement operations like vips_avg() which have no image output.

Each set of pixels is sized according to the requirements of the image pipeline that generated im .

See also: vips_image_generate(), vips_image_new().

Parameters

im

scan over this image

 

start_fn

start sequences with this function

 

generate_fn

generate pixels with this function

 

stop_fn

stop sequences with this function

 

a

user data

 

b

user data

 

Returns

0 on success, or -1 on error.


vips_sink_tile ()

int
vips_sink_tile (VipsImage *im,
                int tile_width,
                int tile_height,
                VipsStartFn start_fn,
                VipsGenerateFn generate_fn,
                VipsStopFn stop_fn,
                void *a,
                void *b);

Loops over an image. generate_fn is called for every pixel in the image, with the reg argument being a region of calculated pixels.

Each set of pixels is tile_width by tile_height pixels (less at the image edges). This is handy for things like writing a tiled TIFF image, where tiles have to be generated with a certain size.

See also: vips_sink(), vips_get_tile_size().

Parameters

im

scan over this image

 

tile_width

tile width

 

tile_height

tile height

 

start_fn

start sequences with this function

 

generate_fn

generate pixels with this function

 

stop_fn

stop sequences with this function

 

a

user data

 

b

user data

 

Returns

0 on success, or -1 on error.


VipsSinkNotify ()

void
(*VipsSinkNotify) (VipsImage *im,
                   VipsRect *rect,
                   void *a);

vips_sink_screen ()

int
vips_sink_screen (VipsImage *in,
                  VipsImage *out,
                  VipsImage *mask,
                  int tile_width,
                  int tile_height,
                  int max_tiles,
                  int priority,
                  VipsSinkNotify notify_fn,
                  void *a);

This operation renders in in the background, making pixels available on out as they are calculated. The notify_fn callback is run every time a new set of pixels are available. Calculated pixels are kept in a cache with tiles sized tile_width by tile_height pixels and with at most max_tiles tiles. If max_tiles is -1, the cache is of unlimited size (up to the maximum image size). The mask image is a one-band uchar image and has 255 for pixels which are currently in cache and 0 for uncalculated pixels.

Only a single sink is calculated at any one time, though many may be alive. Use priority to indicate which renders are more important: zero means normal priority, negative numbers are low priority, positive numbers high priority.

Calls to vips_region_prepare() on out return immediately and hold whatever is currently in cache for that VipsRect (check mask to see which parts of the VipsRect are valid). Any pixels in the VipsRect which are not in cache are added to a queue, and the notify_fn callback will trigger when those pixels are ready.

The notify_fn callback is run from one of the background threads. In the callback you need to somehow send a message to the main thread that the pixels are ready. In a glib-based application, this is easily done with g_idle_add().

If notify_fn is NULL then vips_sink_screen() runs synchronously. vips_region_prepare() on out will always block until the pixels have been calculated.

See also: vips_tilecache(), vips_region_prepare(), vips_sink_disc(), vips_sink().

Parameters

in

input image

 

out

output image

 

mask

mask image indicating valid pixels

 

tile_width

tile width

 

tile_height

tile height

 

max_tiles

maximum tiles to cache

 

priority

rendering priority

 

notify_fn

pixels are ready notification callback

 

a

client data for callback

 

Returns

0 on sucess, -1 on error.


vips_sink_memory ()

int
vips_sink_memory (VipsImage *im);

Loops over im , generating it to a memory buffer attached to im . It is used by vips to implement writing to a memory buffer.

See also: vips_sink(), vips_get_tile_size(), vips_image_new_memory().

Parameters

im

generate this image to memory

 

Returns

0 on success, or -1 on error.


vips_start_one ()

void *
vips_start_one (VipsImage *out,
                void *a,
                void *b);

Start function for one image in. Input image is a .

See also: vips_image_generate().

Parameters

out

image to generate

 

a

user data

 

b

user data

 

vips_stop_one ()

int
vips_stop_one (void *seq,
               void *a,
               void *b);

Stop function for one image in. Input image is a .

See also: vips_image_generate().

Parameters

seq

sequence value

 

a

user data

 

b

user data

 

vips_start_many ()

void *
vips_start_many (VipsImage *out,
                 void *a,
                 void *b);

Start function for many images in. a is a pointer to a NULL-terminated array of input images.

See also: vips_image_generate(), vips_allocate_input_array()

Parameters

out

image to generate

 

a

user data

 

b

user data

 

vips_stop_many ()

int
vips_stop_many (void *seq,
                void *a,
                void *b);

Stop function for many images in. a is a pointer to a NULL-terminated array of input images.

See also: vips_image_generate().

Parameters

seq

sequence value

 

a

user data

 

b

user data

 

vips_allocate_input_array ()

VipsImage **
vips_allocate_input_array (VipsImage *out,
                           ...);

Convenience function --- make a NULL-terminated array of input images. Use with vips_start_many().

See also: vips_image_generate(), vips_start_many().

Parameters

out

free array when this image closes

 

...

NULL-terminated list of input images

 

Returns

NULL-terminated array of images. Do not free the result.


vips_image_generate ()

int
vips_image_generate (VipsImage *image,
                     VipsStartFn start_fn,
                     VipsGenerateFn generate_fn,
                     VipsStopFn stop_fn,
                     void *a,
                     void *b);

Generates an image. The action depends on the image type.

For images created with vips_image_new(), vips_image_generate() just attaches the start/generate/stop callbacks and returns.

For images created with vips_image_new_memory(), memory is allocated for the whole image and it is entirely generated using vips_sink_memory().

For images created with vips_image_new_temp_file() and friends, memory for a few scanlines is allocated and vips_sink_disc() used to generate the image in small chunks. As each chunk is generated, it is written to disc.

See also: vips_sink(), vips_image_new(), vips_region_prepare().

Parameters

image

generate this image

 

start_fn

start sequences with this function

 

generate_fn

generate pixels with this function

 

stop_fn

stop sequences with this function

 

a

user data

 

b

user data

 

Returns

0 on success, or -1 on error.


vips_image_pipeline_array ()

int
vips_image_pipeline_array (VipsImage *image,
                           VipsDemandStyle hint,
                           VipsImage **in);

Add an image to a pipeline. image depends on all of the images in in , image prefers to supply pixels according to hint .

Operations can set demand hints, that is, hints to the VIPS IO system about the type of region geometry they work best with. For example, operations which transform coordinates will usually work best with VIPS_DEMAND_STYLE_SMALLTILE, operations which work on local windows of pixels will like VIPS_DEMAND_STYLE_FATSTRIP.

Header fields in image are set from the fields in in , with lower-numbered images in in taking priority. For example, if in [0] and in [1] both have an item called "icc-profile", it's the profile attached to in [0] that will end up on image . Image history is completely copied from all in . image will have the history of all the input images. The array of input images can be empty, meaning image is at the start of a pipeline.

VIPS uses the list of input images to build the tree of operations it needs for the cache invalidation system.

See also: vips_image_pipelinev(), vips_image_generate().

Parameters

image

output image

 

hint

demand hint for image

 

in

NULL-terminated array of input images

 

Returns

0 on success, -1 on error.


vips_image_pipelinev ()

int
vips_image_pipelinev (VipsImage *image,
                      VipsDemandStyle hint,
                      ...);

Build an array and call vips_image_pipeline_array().

See also: vips_image_generate().

Parameters

image

output image of pipeline

 

hint

hint for this image

 

...

NULL-terminated list of input images

 

Types and Values

See Also

VipsImage, VipsRegion
vips-8.2.2/doc/html/object-tree.html0000664000175000017500000000312112651721507014234 00000000000000 Object Hierarchy: VIPS Reference Manual

Object Hierarchy


vips-8.2.2/doc/html/libvips-VipsImage.html0000664000175000017500000053652512651721507015406 00000000000000 VipsImage: VIPS Reference Manual

VipsImage

VipsImage — the VIPS image class

Stability Level

Stable, unless otherwise indicated

Functions

#define VIPS_MAGIC_INTEL
#define VIPS_MAGIC_SPARC
#define VIPS_MAX_COORD
void * (*VipsStartFn) ()
int (*VipsGenerateFn) ()
int (*VipsStopFn) ()
#define VIPS_IMAGE_SIZEOF_ELEMENT()
#define VIPS_IMAGE_SIZEOF_PEL()
#define VIPS_IMAGE_SIZEOF_LINE()
#define VIPS_IMAGE_N_ELEMENTS()
#define VIPS_IMAGE_N_PELS()
#define VIPS_IMAGE_ADDR()
#define VIPS_MATRIX()
void vips_progress_set ()
void vips_image_invalidate_all ()
void vips_image_minimise_all ()
void vips_image_set_progress ()
char * vips_filename_get_filename ()
char * vips_filename_get_options ()
VipsImage * vips_image_new ()
VipsImage * vips_image_new_memory ()
VipsImage * vips_image_memory ()
VipsImage * vips_image_new_from_file ()
VipsImage * vips_image_new_from_file_RW ()
VipsImage * vips_image_new_from_file_raw ()
VipsImage * vips_image_new_from_memory ()
VipsImage * vips_image_new_from_memory_copy ()
VipsImage * vips_image_new_from_buffer ()
VipsImage * vips_image_new_matrix ()
VipsImage * vips_image_new_matrixv ()
VipsImage * vips_image_new_matrix_from_array ()
VipsImage * vips_image_matrix_from_array ()
void vips_image_set_delete_on_close ()
guint64 vips_get_disc_threshold ()
VipsImage * vips_image_new_temp_file ()
int vips_image_write ()
int vips_image_write_to_file ()
int vips_image_write_to_buffer ()
void * vips_image_write_to_memory ()
int vips_image_decode_predict ()
int vips_image_decode ()
int vips_image_encode ()
gboolean vips_image_isMSBfirst ()
gboolean vips_image_isfile ()
gboolean vips_image_ispartial ()
VipsImage * vips_image_copy_memory ()
int vips_image_wio_input ()
int vips_image_pio_input ()
int vips_image_pio_output ()
int vips_image_inplace ()
int vips_image_write_prepare ()
int vips_image_write_line ()
gboolean vips_band_format_isint ()
gboolean vips_band_format_isuint ()
gboolean vips_band_format_is8bit ()
gboolean vips_band_format_isfloat ()
gboolean vips_band_format_iscomplex ()
int vips_system ()
VipsArrayImage * vips_array_image_new ()
VipsArrayImage * vips_array_image_newv ()
VipsArrayImage * vips_array_image_empty ()
VipsArrayImage * vips_array_image_append ()
VipsImage ** vips_array_image_get ()
VipsImage ** vips_value_get_array_image ()
void vips_value_set_array_image ()

Includes

#include <vips/vips.h>

Description

The image class and associated types and macros.

Images can be created from formatted files on disc, from C-style arrays on disc, from formatted areas of memory, or from C-style arrays in memory. See vips_image_new_from_file() and friends. Creating an image is fast. VIPS reads just enough of the image to be able to get the various properties, such as width in pixels. It delays reading any pixels until they are really needed.

Once you have an image, you can get properties from it in the usual way. You can use projection functions, like vips_image_get_width() or g_object_get(), to get GObject properties.

VIPS images are three-dimensional arrays, the dimensions being width, height and bands. Each dimension can be up to 2 ** 31 pixels (or band elements). An image has a format, meaning the machine number type used to represent each value. VIPS supports 10 formats, from 8-bit unsigned integer up to 128-bit double complex, see vips_image_get_format().

In VIPS, images are uninterpreted arrays, meaning that from the point of view of most operations, they are just large collections of numbers. There's no difference between an RGBA (RGB with alpha) image and a CMYK image, for example, they are both just four-band images. It's up to the user of the library to pass the right sort of image to each operation.

To take an example, VIPS has vips_Lab2XYZ(), an operation to transform an image from CIE LAB colour space to CIE XYZ space. It assumes the first three bands represent pixels in LAB colour space and returns an image where the first three bands are transformed to XYZ and any remaining bands are just copied. Pass it a RGB image by mistake and you'll just get nonsense.

VIPS has a feature to help (a little) with this: it sets a VipsInterpretation hint for each image (see vips_image_get_interpretation()); a hint which says how pixels should be interpreted. For example, vips_Lab2XYZ() will set the interpretation of the output image to VIPS_INTERPRETATION_XYZ. A few utility operations will also use interpretation as a guide. For example, you can give vips_colourspace() an input image and a desired colourspace and it will use the input's interpretation hint to apply the best sequence of colourspace transforms to get to the desired space.

Use things like vips_invert() to manipulate your images. When you are done, you can write images to disc files (with vips_image_write_to_file()), to formatted memory buffers (with vips_image_write_to_buffer()) and to C-style memory arrays (with vips_image_write_to_memory().

You can also write image to other images. Create, for example, a temporary disc image with vips_image_new_temp_file(), then write your image to that with vips_image_write(). You can create several other types of image and write to them, see vips_image_new_memory(), for example.

See operation for an introduction to running operations on images, see header for getting and setting image metadata. See object for a discussion of the lower levels.

Functions

VIPS_MAGIC_INTEL

#define VIPS_MAGIC_INTEL (0xb6a6f208U)

The first four bytes of a VIPS file in Intel byte ordering.


VIPS_MAGIC_SPARC

#define VIPS_MAGIC_SPARC (0x08f2a6b6U)

The first four bytes of a VIPS file in SPARC byte ordering.


VIPS_MAX_COORD

#define VIPS_MAX_COORD (10000000)

VipsStartFn ()

void *
(*VipsStartFn) (struct _VipsImage *out,
                void *a,
                void *b);

Start a new processing sequence for this generate function. This allocates per-thread state, such as an input region.

See also: vips_start_one(), vips_start_many().

Parameters

out

image being calculated

 

a

user data

 

b

user data

 

Returns

a new sequence value


VipsGenerateFn ()

int
(*VipsGenerateFn) (struct _VipsRegion *out,
                   void *seq,
                   void *a,
                   void *b,
                   gboolean *stop);

Fill out->valid with pixels. seq contains per-thread state, such as the input regions. Set stop to TRUE to stop processing.

See also: vips_image_generate(), vips_stop_many().

Parameters

out

VipsRegion to fill

 

seq

sequence value

 

a

user data

 

b

user data

 

stop

set this to stop processing

 

Returns

0 on success, -1 on error.


VipsStopFn ()

int
(*VipsStopFn) (void *seq,
               void *a,
               void *b);

Stop a processing sequence. This frees per-thread state, such as an input region.

See also: vips_stop_one(), vips_stop_many().

Parameters

seq

sequence value

 

a

user data

 

b

user data

 

Returns

0 on success, -1 on error.


VIPS_IMAGE_SIZEOF_ELEMENT()

#define             VIPS_IMAGE_SIZEOF_ELEMENT( I )

Parameters

I

a VipsImage

 

Returns

sizeof() a band element.


VIPS_IMAGE_SIZEOF_PEL()

#define             VIPS_IMAGE_SIZEOF_PEL( I )

Parameters

I

a VipsImage

 

Returns

sizeof() a pixel.


VIPS_IMAGE_SIZEOF_LINE()

#define             VIPS_IMAGE_SIZEOF_LINE( I )

Parameters

I

a VipsImage

 

Returns

sizeof() a scanline of pixels.


VIPS_IMAGE_N_ELEMENTS()

#define             VIPS_IMAGE_N_ELEMENTS( I )

Parameters

I

a VipsImage

 

Returns

The number of band elements in a scanline.


VIPS_IMAGE_N_PELS()

#define             VIPS_IMAGE_N_PELS( I )

Parameters

I

a VipsImage

 

Returns

The number of pels in an image. A 64-bit unsigned int.


VIPS_IMAGE_ADDR()

#define             VIPS_IMAGE_ADDR( I, X, Y )

This macro returns a pointer to a pixel in an image, cast to a VipsPel *. It only works for images which are fully available in memory, so memory buffers and small mapped images only.

If VIPS_DEBUG is defined, you get a version that checks bounds for you.

See also: vips_image_wio_input(), vips_image_inplace(), VIPS_REGION_ADDR().

Parameters

I

a VipsImage

 

X

x coordinate

 

Y

y coordinate

 

Returns

The address of pixel (X ,Y ) in I .


VIPS_MATRIX()

#define             VIPS_MATRIX( I, X, Y )

This macro returns a pointer to a pixel in an image, cast to a double*. The image must have a single band, be VIPS_FORMAT_DOUBLE and be fully available in memory, so memory buffers and small mapped images only.

If VIPS_DEBUG is defined, you get a version that checks bounds and image type for you.

See also: vips_image_wio_input(), vips_image_inplace(), vips_check_matrix().

Parameters

I

a VipsImage

 

X

x coordinate

 

Y

y coordinate

 

Returns

The address of pixel (X ,Y ) in I .


vips_progress_set ()

void
vips_progress_set (gboolean progress);

If set, vips will print messages about the progress of computation to stdout. This can also be enabled with the --vips-progress option, or by setting the environment variable VIPS_PROGRESS.

Parameters

progress

TRUE to enable progress messages

 

vips_image_invalidate_all ()

void
vips_image_invalidate_all (VipsImage *image);

Invalidate all pixel caches on image and any downstream images, that is, images which depend on this image. Additionally, all operations which depend upon this image are dropped from the VIPS operation cache.

You should call this function after destructively modifying an image with something like vips_draw_circle().

The “invalidate†signal is emitted for all invalidated images.

See also: vips_region_invalidate().

Parameters

image

VipsImage to invalidate

 

vips_image_minimise_all ()

void
vips_image_minimise_all (VipsImage *image);

Minimise memory use on this image and any upstream images, that is, images which this image depends upon. This function is called automatically at the end of a computation, but it might be useful to call at other times.

The “minimise†signal is emitted for all minimised images.

Parameters

image

VipsImage to minimise

 

vips_image_set_progress ()

void
vips_image_set_progress (VipsImage *image,
                         gboolean progress);

vips signals evaluation progress via the “preevalâ€, “eval†and “posteval†signals. Progress is signalled on the most-downstream image for which vips_image_set_progress() was called.

Parameters

image

image to signal progress on

 

progress

turn progress reporting on or off

 

vips_filename_get_filename ()

char *
vips_filename_get_filename (const char *vips_filename);

Given a vips filename like "fred.jpg[Q=90]", return a new string of just the filename part, "fred.jpg" in this case.

Useful for language bindings.

See also: vips_filename_get_options().

Parameters

vips_filename

a filename including a set of options

 

Returns

transfer full: just the filename component.


vips_filename_get_options ()

char *
vips_filename_get_options (const char *vips_filename);

Given a vips filename like "fred.jpg[Q=90]", return a new string of just the options part, "[Q=90]" in this case.

Useful for language bindings.

See also: vips_filename_get_filename().

Parameters

vips_filename

a filename including a set of options

 

Returns

transfer full: just the options component.


vips_image_new ()

VipsImage *
vips_image_new (void);

vips_image_new() creates a new, empty VipsImage. If you write to one of these images, vips will just attach some callbacks, no pixels will be generated.

Write pixels to an image with vips_image_generate() or vips_image_write_line(). Write a whole image to another image with vips_image_write().

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_memory ()

VipsImage *
vips_image_new_memory (void);

vips_image_new_memory() creates a new VipsImage which, when written to, will create a memory image.

See also: vips_image_new().

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_memory ()

VipsImage *
vips_image_memory (void);

A renamed vips_image_new_memory() ... Some gobject binding systems do not like more than one _new() method.

See also: vips_image_new_memory().

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_from_file ()

VipsImage *
vips_image_new_from_file (const char *name,
                          ...);

Optional arguments:

access : hint VipsAccess mode to loader disc : load via a temporary disc file

vips_image_new_from_file() opens name for reading. It can load files in many image formats, including VIPS, TIFF, PNG, JPEG, FITS, Matlab, OpenEXR, CSV, WebP, Radiance, RAW, PPM and others.

Load options may be appended to filename as "[name=value,...]" or given as a NULL-terminated list of name-value pairs at the end of the arguments. Options given in the function call override options given in the filename. Many loaders add extra options, see vips_jpegload(), for example.

vips_image_new_from_file() always returns immediately with the header fields filled in. No pixels are actually read until you first access them.

access lets you set a VipsAccess hint giving the expected access pattern for this file. VIPS_ACCESS_RANDOM means you can fetch pixels randomly from the image. This is the default mode. VIPS_ACCESS_SEQUENTIAL means you will read the whole image exactly once, top-to-bottom. In this mode, vips can avoid converting the whole image in one go, for a large memory saving. You are allowed to make small non-local references, so area operations like convolution will work. VIPS_ACCESS_SEQUENTIAL_UNBUFFERED does not allow non-local references, so will only work for very strict top-to-bottom operations, but does have very low memory needs.

In VIPS_ACCESS_RANDOM mode, small images are decompressed to memory and then processed from there. Large images are decompressed to temporary random-access files on disc and then processed from there. Set disc to TRUE to force loading via disc. See vips_image_new_temp_file() for an explanation of how VIPS selects a location for the temporary file.

The disc threshold can be set with the "--vips-disc-threshold" command-line argument, or the VIPS_DISC_THRESHOLD environment variable. The value is a simple integer, but can take a unit postfix of "k", "m" or "g" to indicate kilobytes, megabytes or gigabytes. The default threshold is 100 MB.

For example:

VipsImage *image = vips_image_new_from_file ("fred.tif",
	"page", 12,
	NULL);

Will open "fred.tif", reading page 12.

VipsImage *image = vips_image_new_from_file ("fred.jpg[shrink=2]",
	NULL);

Will open "fred.jpg", downsampling by a factor of two.

Use vips_foreign_find_load() or vips_foreign_is_a() to see what format a file is in and therefore what options are available. If you need more control over the loading process, you can call loaders directly, see vips_jpegload(), for example.

See also: vips_foreign_find_load(), vips_foreign_is_a(), vips_image_write_to_file().

Parameters

name

file to open

 

...

NULL-terminated list of optional named arguments

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_from_file_RW ()

VipsImage *
vips_image_new_from_file_RW (const char *filename);

Opens the named file for simultaneous reading and writing. This will only work for VIPS files in a format native to your machine. It is only for paintbox-type applications.

See also: vips_draw_circle().

Parameters

filename

filename to open

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_from_file_raw ()

VipsImage *
vips_image_new_from_file_raw (const char *filename,
                              int xsize,
                              int ysize,
                              int bands,
                              guint64 offset);

This function maps the named file and returns a VipsImage you can use to read it.

It returns an 8-bit image with bands bands. If the image is not 8-bit, use vips_copy() to transform the descriptor after loading it.

See also: vips_copy(), vips_rawload(), vips_image_new_from_file().

Parameters

filename

filename to open

 

xsize

image width

 

ysize

image height

 

bands

image bands (or bytes per pixel)

 

offset

bytes to skip at start of file

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_from_memory ()

VipsImage *
vips_image_new_from_memory (const void *data,
                            size_t size,
                            int width,
                            int height,
                            int bands,
                            VipsBandFormat format);

This function wraps a VipsImage around a memory area. The memory area must be a simple array, for example RGBRGBRGB, left-to-right, top-to-bottom. Use vips_image_new_from_buffer() to load an area of memory containing an image in a format.

VIPS does not take responsibility for the area of memory, it's up to you to make sure it's freed when the image is closed. See for example “closeâ€.

Because VIPS is "borrowing" data from the caller, this function is extremely dangerous. Unless you are very careful, you will get crashes or memory corruption. Use vips_image_new_from_memory_copy() instead if you are at all unsure.

Use vips_copy() to set other image properties.

See also: vips_image_new(), vips_image_write_to_memory(), vips_image_new_from_memory_copy().

Parameters

data

start of memory area.

[array length=size][element-type guint8][transfer none]

size

length of memory area

 

width

image width

 

height

image height

 

bands

image bands (or bytes per pixel)

 

format

image format

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_from_memory_copy ()

VipsImage *
vips_image_new_from_memory_copy (const void *data,
                                 size_t size,
                                 int width,
                                 int height,
                                 int bands,
                                 VipsBandFormat format);

Like vips_image_new_from_memory(), but VIPS will make a copy of the memory area. This means more memory use and an extra copy operation, but is much simpler and safer.

See also: vips_image_new_from_memory().

Parameters

data

start of memory area.

[array length=size][element-type guint8][transfer none]

size

length of memory area

 

width

image width

 

height

image height

 

bands

image bands (or bytes per pixel)

 

format

image format

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_from_buffer ()

VipsImage *
vips_image_new_from_buffer (const void *buf,
                            size_t len,
                            const char *option_string,
                            ...);

Loads an image from the formatted area of memory buf , len using the loader recommended by vips_foreign_find_load_buffer(). Only TIFF, PNG and JPEG formats are supported. To load an unformatted area of memory, use vips_image_new_from_memory().

VIPS does not take responsibility for the area of memory, it's up to you to make sure it's freed when the image is closed. See for example “closeâ€.

Load options may be given in option_string as "[name=value,...]" or given as a NULL-terminated list of name-value pairs at the end of the arguments. Options given in the function call override options given in the filename.

See also: vips_image_write_to_buffer().

Parameters

buf

image data.

[array length=len][element-type guint8][transfer none]

len

length of memory buffer

 

option_string

set of extra options as a string

 

...

NULL-terminated list of optional named arguments

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_matrix ()

VipsImage *
vips_image_new_matrix (int width,
                       int height);

This convenience function makes an image which is a matrix: a one-band VIPS_FORMAT_DOUBLE image held in memory.

Use VIPS_IMAGE_ADDR(), or VIPS_MATRIX() to address pixels in the image.

Use vips_image_set_double() to set "scale" and "offset", if required.

See also: vips_image_new_matrixv()

Parameters

width

image width

 

height

image height

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_matrixv ()

VipsImage *
vips_image_new_matrixv (int width,
                        int height,
                        ...);

As vips_image_new_matrix(), but initialise the matrix from the argument list. After height should be width * height double constants which are used to set the matrix elements.

See also: vips_image_new_matrix()

Parameters

width

image width

 

height

image height

 

...

matrix coefficients

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_new_matrix_from_array ()

VipsImage *
vips_image_new_matrix_from_array (int width,
                                  int height,
                                  const double *array,
                                  int size);

A binding-friendly version of vips_image_new_matrixv().

Parameters

width

image width

 

height

image height

 

array

array of elements.

[array length=size][transfer none]

size

number of elements

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_matrix_from_array ()

VipsImage *
vips_image_matrix_from_array (int width,
                              int height,
                              const double *array,
                              int size);

A renamed vips_image_new_matrix_from_array(). Some gobject bindings do not like more than one _new method.

Parameters

width

image width

 

height

image height

 

array

array of elements.

[array length=size][transfer none]

size

number of elements

 

Returns

the new VipsImage, or NULL on error.

[transfer full]


vips_image_set_delete_on_close ()

void
vips_image_set_delete_on_close (VipsImage *image,
                                gboolean delete_on_close);

Sets the delete_on_close flag for the image. If this flag is set, when image is finalized, the filename held in image->filename at the time of this call is deleted.

This function is clearly extremely dangerous, use with great caution.

See also: vips_image_new_temp_file().

Parameters

image

image to set

 

delete_on_close

format of file

 

vips_get_disc_threshold ()

guint64
vips_get_disc_threshold (void);

Return the number of bytes at which we flip between open via memory and open via disc. This defaults to 100mb, but can be changed with the VIPS_DISC_THRESHOLD environment variable or the --vips-disc-threshold command-line flag. See vips_image_new_from_file().

Returns

disc threshold in bytes.


vips_image_new_temp_file ()

VipsImage *
vips_image_new_temp_file (const char *format);

Make a VipsImage which, when written to, will create a temporary file on disc. The file will be automatically deleted when the image is destroyed. format is something like "%s.v" for a vips file.

The file is created in the temporary directory. This is set with the environment variable TMPDIR. If this is not set, then on Unix systems, vips will default to /tmp. On Windows, vips uses GetTempPath() to find the temporary directory.

vips uses g_mkstemp() to make the temporary filename. They generally look something like "vips-12-EJKJFGH.v".

See also: vips_image_new().

Parameters

format

format of file

 

Returns

the new VipsImage, or NULL on error.


vips_image_write ()

int
vips_image_write (VipsImage *image,
                  VipsImage *out);

Write image to out . Use vips_image_new() and friends to create the VipsImage you want to write to.

See also: vips_image_new(), vips_copy(), vips_image_write_to_file().

Parameters

image

image to write

 

out

write to this image

 

Returns

0 on success, or -1 on error.


vips_image_write_to_file ()

int
vips_image_write_to_file (VipsImage *image,
                          const char *name,
                          ...);

Writes in to name using the saver recommended by vips_foreign_find_save().

Save options may be appended to filename as "[name=value,...]" or given as a NULL-terminated list of name-value pairs at the end of the arguments. Options given in the function call override options given in the filename.

See also: vips_image_new_from_file().

Parameters

image

image to write

 

name

write to this file

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_image_write_to_buffer ()

int
vips_image_write_to_buffer (VipsImage *in,
                            const char *suffix,
                            void **buf,
                            size_t *size,
                            ...);

Writes in to a memory buffer in a format specified by suffix .

Save options may be appended to suffix as "[name=value,...]" or given as a NULL-terminated list of name-value pairs at the end of the arguments. Options given in the function call override options given in the filename.

Currently only TIFF, JPEG and PNG formats are supported.

You can call the various save operations directly if you wish, see vips_jpegsave_buffer(), for example.

See also: vips_image_write_to_memory(), vips_image_new_from_buffer().

Parameters

in

image to write

 

suffix

format to write

 

buf

return buffer start here.

[array length=size][element-type guint8][transfer full]

size

return buffer length here

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_image_write_to_memory ()

void *
vips_image_write_to_memory (VipsImage *in,
                            size_t *size);

Writes in to memory as a simple, unformatted C-style array.

The caller is responsible for freeing this memory.

See also: vips_image_write_to_buffer().

Parameters

in

image to write

 

size

return buffer length here

 

Returns

return buffer start here.

[array length=size][element-type guint8][transfer full]


vips_image_decode_predict ()

int
vips_image_decode_predict (VipsImage *in,
                           int *bands,
                           VipsBandFormat *format);

We often need to know what an image will decode to without actually decoding it, for example, in arg checking.

See also: vips_image_decode().

Parameters

in

image to decode

 

bands

predict bands here

 

format

predict format here

 

vips_image_decode ()

int
vips_image_decode (VipsImage *in,
                   VipsImage **out);

A convenience function to unpack to a format that we can compute with. out.coding is always VIPS_CODING_NONE.

This unpacks LABQ to plain LAB. Use vips_LabQ2LabS() for a bit more speed if you need it.

See also: vips_image_encode(), vips_LabQ2Lab(), vips_rad2float().

Parameters

in

image to decode

 

out

write to this image

 

Returns

0 on success, or -1 on error.


vips_image_encode ()

int
vips_image_encode (VipsImage *in,
                   VipsImage **out,
                   VipsCoding coding);

A convenience function to pack to a coding. The inverse of vips_image_decode().

See also: vips_image_decode().

Parameters

in

image to encode

 

out

write to this image

 

coding

coding to apply

 

Returns

0 on success, or -1 on error.


vips_image_isMSBfirst ()

gboolean
vips_image_isMSBfirst (VipsImage *image);

Return TRUE if image is in most-significant- byte first form. This is the byte order used on the SPARC architecture and others.

Parameters

image

image to test

 

vips_image_isfile ()

gboolean
vips_image_isfile (VipsImage *image);

Return TRUE if image represents a file on disc in some way.

Parameters

image

image to test

 

vips_image_ispartial ()

gboolean
vips_image_ispartial (VipsImage *image);

Return TRUE if im represents a partial image (a delayed calculation).

Parameters

image

image to test

 

vips_image_copy_memory ()

VipsImage *
vips_image_copy_memory (VipsImage *image);

Allocate a memory buffer and copy image to it. This is a thread-safe equivalent of vips_image_wio_input(), useful if image is small and from an unknown source.

If image is already in memory (perhaps a mmaped file on disc), vips_image_copy_memory() will just ref image and return that.

If you are sure that image is not shared with another thread (perhaps you have made it yourself), use vips_image_wio_input() instead.

See also: vips_image_wio_input().

Parameters

image

image to copy to a memory buffer

 

vips_image_wio_input ()

int
vips_image_wio_input (VipsImage *image);

Check that an image is readable via the VIPS_IMAGE_ADDR() macro, that is, that the entire image is in memory and all pixels can be read with VIPS_IMAGE_ADDR(). If it isn't, try to transform it so that VIPS_IMAGE_ADDR() can work.

Since this function modifies image , it is not thread-safe. Only call it on images which you are sure have not been shared with another thread. If the image might have been shared, use the less efficient vips_image_copy_memory() instead.

See also: vips_image_copy_memory(), vips_image_pio_input(), vips_image_inplace(), VIPS_IMAGE_ADDR().

Parameters

image

image to transform

 

Returns

0 on succeess, or -1 on error.


vips_image_pio_input ()

int
vips_image_pio_input (VipsImage *image);

Check that an image is readable with vips_region_prepare() and friends. If it isn't, try to transform the image so that vips_region_prepare() can work.

See also: vips_image_pio_output(), vips_region_prepare().

Parameters

image

image to check

 

Returns

0 on succeess, or -1 on error.


vips_image_pio_output ()

int
vips_image_pio_output (VipsImage *image);

Check that an image is writeable with vips_image_generate(). If it isn't, try to transform the image so that vips_image_generate() can work.

See also: vips_image_pio_input().

Parameters

image

image to check

 

Returns

0 on succeess, or -1 on error.


vips_image_inplace ()

int
vips_image_inplace (VipsImage *image);

Gets image ready for an in-place operation, such as vips_draw_circle(). After calling this function you can both read and write the image with VIPS_IMAGE_ADDR().

Since this function modifies image , it is not thread-safe. Only call it on images which you are sure have not been shared with another thread. All in-place operations are inherently not thread-safe, so you need to take great care in any case.

See also: vips_draw_circle(), vips_image_wio_input().

Parameters

image

image to make read-write

 

Returns

0 on succeess, or -1 on error.


vips_image_write_prepare ()

int
vips_image_write_prepare (VipsImage *image);

Call this after setting header fields (width, height, and so on) to allocate resources ready for writing.

Normally this function is called for you by vips_image_generate() or vips_image_write_line(). You will need to call it yourself if you plan to write directly to the ->data member of a memory image.

Parameters

image

image to prepare

 

Returns

0 on success, or -1 on error.


vips_image_write_line ()

int
vips_image_write_line (VipsImage *image,
                       int ypos,
                       VipsPel *linebuffer);

Write a line of pixels to an image. This function must be called repeatedly with ypos increasing from 0 to “height†. linebuffer must be VIPS_IMAGE_SIZEOF_LINE() bytes long.

See also: vips_image_generate().

Parameters

image

image to write to

 

ypos

vertical position of scan-line to write

 

linebuffer

scanline of pixels

 

Returns

0 on success, or -1 on error.


vips_band_format_isint ()

gboolean
vips_band_format_isint (VipsBandFormat format);

Return TRUE if format is one of the integer types.

Parameters

format

format to test

 

vips_band_format_isuint ()

gboolean
vips_band_format_isuint (VipsBandFormat format);

Return TRUE if format is one of the unsigned integer types.

Parameters

format

format to test

 

vips_band_format_is8bit ()

gboolean
vips_band_format_is8bit (VipsBandFormat format);

Return TRUE if format is uchar or schar.

Parameters

format

format to test

 

vips_band_format_isfloat ()

gboolean
vips_band_format_isfloat (VipsBandFormat format);

Return TRUE if format is one of the float types.

Parameters

format

format to test

 

vips_band_format_iscomplex ()

gboolean
vips_band_format_iscomplex (VipsBandFormat format);

Return TRUE if fmt is one of the complex types.

Parameters

format

format to test

 

vips_system ()

int
vips_system (const char *cmd_format,
             ...);

Optional arguments:

in : array of input images out : output image in_format : write input files like this out_format : write output filename like this log : stdout of command is returned here

vips_system() runs a command, optionally passing a set of images in and optionally getting an image back. The command's stdout is returned in log .

First, if in is set, the array of images are written to files. See vips_image_new_temp_file() to see how temporary files are created. If in_format is something like %s.png, the file will be written in PNG format. By default, in_format is %s.tif.

If out_format is set, an output filename is formed in the same way.

The command string to run is made by substituting the first set of %s in cmd_format for the names of the input files, if in is set, and then the next %s for the output filename, if out_format is set. You can put a number between the % and the s to change the order in which the substitution occurs.

The command is executed with popen() and the output captured in log .

After the command finishes, if out_format is set, the output image is opened and returned in out . Closing out image will automatically delete the output file.

Finally the input images are deleted.

For example, this call will run the ImageMagick convert program on an image, using JPEG files to pass images into and out of the convert command.

VipsArrayImage *in;
VipsImage *out;
char *log;

if (vips_system ("convert %s -swirl 45 %s",
	"in", in, 
	"out", &out, 
  	"in_format", "%s.jpg", 
  	"out_format", "%s.jpg", 
  	"log", &log,
  	NULL))
  	error ...

Parameters

cmd_format

command to run

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on failure.


vips_array_image_new ()

VipsArrayImage *
vips_array_image_new (VipsImage **array,
                      int n);

Allocate a new array of images and copy array into it. Free with vips_area_unref().

The images will all be reffed by this function. They will be automatically unreffed for you by vips_area_unref().

Add an extra NULL element at the end, handy for eg. vips_image_pipeline_array() etc.

See also: VipsArea.

Parameters

array

array of VipsImage.

[array length=n]

n

number of images

 

Returns

A new VipsArrayImage.

[transfer full]


vips_array_image_newv ()

VipsArrayImage *
vips_array_image_newv (int n,
                       ...);

Allocate a new array of n VipsImage and copy @... into it. Free with vips_area_unref().

The images will all be reffed by this function. They will be automatically unreffed for you by vips_area_unref().

Add an extra NULL element at the end, handy for eg. vips_image_pipeline_array() etc.

See also: vips_array_image_new()

Parameters

n

number of images

 

...

list of VipsImage arguments

 

Returns

A new VipsArrayImage.

[transfer full]


vips_array_image_empty ()

VipsArrayImage *
vips_array_image_empty (void);

Make an empty image array. Handy with vips_array_image_add() for bindings which can't handle object array arguments.

See also: vips_array_image_add().

Returns

A new VipsArrayImage.

[transfer full]


vips_array_image_append ()

VipsArrayImage *
vips_array_image_append (VipsArrayImage *array,
                         VipsImage *image);

Make a new VipsArrayImage, one larger than array , with image appended to the end. Handy with vips_array_image_empty() for bindings which can't handle object array arguments.

See also: vips_array_image_empty().

Parameters

array

append to this.

[transfer none]

image

add this

 

Returns

A new VipsArrayImage.

[transfer full]


vips_array_image_get ()

VipsImage **
vips_array_image_get (VipsArrayImage *array,
                      int *n);

Fetch an image array from a VipsArrayImage. Useful for language bindings.

Parameters

array

the VipsArrayImage to fetch from

 

n

length of array

 

Returns

array of VipsImage.

[array length=n][transfer none]


vips_value_get_array_image ()

VipsImage **
vips_value_get_array_image (const GValue *value,
                            int *n);

Return the start of the array of images held by value . optionally return the number of elements in n .

See also: vips_value_set_array_image().

Parameters

value

GValue to get from

 

n

return the number of elements here, optionally.

[allow-none]

Returns

The array address.

[transfer none]


vips_value_set_array_image ()

void
vips_value_set_array_image (GValue *value,
                            int n);

Set value to hold an array of images. Pass in the array length in n .

See also: vips_array_image_get().

Parameters

value

GValue to get from.

[out]

n

the number of elements

 

Types and Values

enum VipsDemandStyle

See vips_image_pipelinev(). Operations can hint to the VIPS image IO system about the kind of demand geometry they prefer.

These demand styles are given below in order of increasing restrictiveness. When demanding output from a pipeline, vips_image_generate() will use the most restrictive of the styles requested by the operations in the pipeline.

VIPS_DEMAND_STYLE_THINSTRIP --- This operation would like to output strips the width of the image and a few pels high. This is option suitable for point-to-point operations, such as those in the arithmetic package.

This option is only efficient for cases where each output pel depends upon the pel in the corresponding position in the input image.

VIPS_DEMAND_STYLE_FATSTRIP --- This operation would like to output strips the width of the image and as high as possible. This option is suitable for area operations which do not violently transform coordinates, such as vips_conv().

VIPS_DEMAND_STYLE_SMALLTILE --- This is the most general demand format. Output is demanded in small (around 100x100 pel) sections. This style works reasonably efficiently, even for bizzare operations like 45 degree rotate.

VIPS_DEMAND_STYLE_ANY --- This image is not being demand-read from a disc file (even indirectly) so any demand style is OK. It's used for things like vips_black() where the pixels are calculated.

See also: vips_image_pipelinev().

Members

VIPS_DEMAND_STYLE_ERROR

   

VIPS_DEMAND_STYLE_SMALLTILE

demand in small (typically 64x64 pixel) tiles

 

VIPS_DEMAND_STYLE_FATSTRIP

demand in fat (typically 10 pixel high) strips

 

VIPS_DEMAND_STYLE_THINSTRIP

demand in thin (typically 1 pixel high) strips

 

VIPS_DEMAND_STYLE_ANY

demand geometry does not matter

 

enum VipsImageType

Members

VIPS_IMAGE_ERROR

   

VIPS_IMAGE_NONE

   

VIPS_IMAGE_SETBUF

   

VIPS_IMAGE_SETBUF_FOREIGN

   

VIPS_IMAGE_OPENIN

   

VIPS_IMAGE_MMAPIN

   

VIPS_IMAGE_MMAPINRW

   

VIPS_IMAGE_OPENOUT

   

VIPS_IMAGE_PARTIAL

   

enum VipsInterpretation

How the values in an image should be interpreted. For example, a three-band float image of type VIPS_INTERPRETATION_LAB should have its pixels interpreted as coordinates in CIE Lab space.

These values are set by operations as hints to user-interfaces built on top of VIPS to help them show images to the user in a meaningful way. Operations do not use these values to decide their action.

The gaps in numbering are historical and must be maintained. Allocate new numbers from the end.

Members

VIPS_INTERPRETATION_ERROR

   

VIPS_INTERPRETATION_MULTIBAND

generic many-band image

 

VIPS_INTERPRETATION_B_W

some kind of single-band image

 

VIPS_INTERPRETATION_HISTOGRAM

a 1D image, eg. histogram or lookup table

 

VIPS_INTERPRETATION_XYZ

the first three bands are CIE XYZ

 

VIPS_INTERPRETATION_LAB

pixels are in CIE Lab space

 

VIPS_INTERPRETATION_CMYK

the first four bands are in CMYK space

 

VIPS_INTERPRETATION_LABQ

implies VIPS_CODING_LABQ

 

VIPS_INTERPRETATION_RGB

generic RGB space

 

VIPS_INTERPRETATION_CMC

a uniform colourspace based on CMC(1:1)

 

VIPS_INTERPRETATION_LCH

pixels are in CIE LCh space

 

VIPS_INTERPRETATION_LABS

CIE LAB coded as three signed 16-bit values

 

VIPS_INTERPRETATION_sRGB

pixels are sRGB

 

VIPS_INTERPRETATION_YXY

pixels are CIE Yxy

 

VIPS_INTERPRETATION_FOURIER

image is in fourier space

 

VIPS_INTERPRETATION_RGB16

generic 16-bit RGB

 

VIPS_INTERPRETATION_GREY16

generic 16-bit mono

 

VIPS_INTERPRETATION_MATRIX

a matrix

 

VIPS_INTERPRETATION_scRGB

pixels are scRGB

 

VIPS_INTERPRETATION_HSV

pixels are HSV

 

VIPS_INTERPRETATION_LAST

   

enum VipsBandFormat

The format used for each band element.

Each corresponds to a native C type for the current machine. For example, VIPS_FORMAT_USHORT is unsigned short.

Members

VIPS_FORMAT_NOTSET

invalid setting

 

VIPS_FORMAT_UCHAR

unsigned char format

 

VIPS_FORMAT_CHAR

char format

 

VIPS_FORMAT_USHORT

unsigned short format

 

VIPS_FORMAT_SHORT

short format

 

VIPS_FORMAT_UINT

unsigned int format

 

VIPS_FORMAT_INT

int format

 

VIPS_FORMAT_FLOAT

float format

 

VIPS_FORMAT_COMPLEX

complex (two floats) format

 

VIPS_FORMAT_DOUBLE

double float format

 

VIPS_FORMAT_DPCOMPLEX

double complex (two double) format

 

VIPS_FORMAT_LAST

   

enum VipsCoding

How pixels are coded.

Normally, pixels are uncoded and can be manipulated as you would expect. However some file formats code pixels for compression, and sometimes it's useful to be able to manipulate images in the coded format.

The gaps in the numbering are historical and must be maintained. Allocate new numbers from the end.

Members

VIPS_CODING_ERROR

   

VIPS_CODING_NONE

pixels are not coded

 

VIPS_CODING_LABQ

pixels encode 3 float CIELAB values as 4 uchar

 

VIPS_CODING_RAD

pixels encode 3 float RGB as 4 uchar (Radiance coding)

 

VIPS_CODING_LAST

   

enum VipsAccess

The type of access an operation has to supply. See vips_tilecache() and VipsForeign.

VIPS_ACCESS_RANDOM means requests can come in any order.

VIPS_ACCESS_SEQUENTIAL means requests will be top-to-bottom, but with some amount of buffering behind the read point for small non-local accesses.

VIPS_ACCESS_SEQUENTIAL_UNBUFFERED means requests will be strictly top-to-bottom with no read-behind. This can save some memory.

Members

VIPS_ACCESS_RANDOM

can read anywhere

 

VIPS_ACCESS_SEQUENTIAL

top-to-bottom reading only, but with a small buffer

 

VIPS_ACCESS_SEQUENTIAL_UNBUFFERED

top-to-bottom reading only

 

VIPS_ACCESS_LAST

   

VipsProgress

typedef struct {
	int run;		/* Time we have been running */
	int eta;		/* Estimated seconds of computation left */
	gint64 tpels;		/* Number of pels we expect to calculate */
	gint64 npels;		/* Number of pels calculated so far */
	int percent;		/* Percent complete */
	GTimer *start;		/* Start time */
} VipsProgress;

A structure available to eval callbacks giving information on evaluation progress. See “evalâ€.

Members

int run;

Time we have been running

 

int eta;

Estimated seconds of computation left

 

gint64 tpels;

Number of pels we expect to calculate

 

gint64 npels;

Number of pels calculated so far

 

int percent;

Percent complete

 

GTimer *start;

Start time

 
vips-8.2.2/doc/html/libvips-morphology.html0000664000175000017500000006037712651721507015716 00000000000000 morphology: VIPS Reference Manual

morphology

morphology — morphological operators, rank filters and related image analysis

Stability Level

Stable, unless otherwise indicated

Functions

int vips_morph ()
int vips_rank ()
int vips_median ()
int vips_countlines ()
int vips_labelregions ()

Types and Values

Includes

#include <vips/vips.h>

Description

The morphological functions search images for particular patterns of pixels, specified with the mask argument, either adding or removing pixels when they find a match. They are useful for cleaning up images --- for example, you might threshold an image, and then use one of the morphological functions to remove all single isolated pixels from the result.

If you combine the morphological operators with the mask rotators (vips_rot45(), for example) and apply them repeatedly, you can achieve very complicated effects: you can thin, prune, fill, open edges, close gaps, and many others. For example, see `Fundamentals of Digital Image Processing' by A. Jain, pp 384-388, Prentice-Hall, 1989 for more ideas.

Beware that VIPS reverses the usual image processing convention, by assuming white objects (non-zero pixels) on a black background (zero pixels).

The mask you give to the morphological functions should contain only the values 0 (for background), 128 (for don't care) and 255 (for object). The mask must have odd length sides --- the origin of the mask is taken to be the centre value. For example, the mask:

3 3 128 255 128 255 0 255 128 255 128

applied to an image with vips_morph() VIPS_OPERATION_MORPHOLOGY_ERODE, will find all black pixels 4-way connected with white pixels. Essentially, dilate sets pixels in the output if any part of the mask matches, whereas erode sets pixels only if all of the mask matches.

See vips_andimage(), vips_orimage() and vips_eorimage() for analogues of the usual set difference and set union operations.

Functions

vips_morph ()

int
vips_morph (VipsImage *in,
            VipsImage **out,
            VipsImage *mask,
            VipsOperationMorphology morph,
            ...);

Performs a morphological operation on in using mask as a structuring element.

The image should have 0 (black) for no object and 255 (non-zero) for an object. Note that this is the reverse of the usual convention for these operations, but more convenient when combined with the boolean operators. The output image is the same size as the input image: edge pxels are made by expanding the input image as necessary.

Mask coefficients can be either 0 (for object) or 255 (for background) or 128 (for do not care). The origin of the mask is at location (m.xsize / 2, m.ysize / 2), integer division. All algorithms have been based on the book "Fundamentals of Digital Image Processing" by A. Jain, pp 384-388, Prentice-Hall, 1989.

For VIPS_OPERATION_MORPHOLOGY_ERODE, the whole mask must match for the output pixel to be set, that is, the result is the logical AND of the selected input pixels.

For VIPS_OPERATION_MORPHOLOGY_DILATE, the output pixel is set if any part of the mask matches, that is, the result is the logical OR of the selected input pixels.

See the boolean operations vips_andimage(), vips_orimage() and vips_eorimage() for analogues of the usual set difference and set union operations.

Operations are performed using the processor's vector unit, if possible. Disable this with --vips-novector or IM_NOVECTOR.

Parameters

in

input image

 

out

output image

 

mask

morphology with this mask

 

morph

operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_rank ()

int
vips_rank (VipsImage *in,
           VipsImage **out,
           int width,
           int height,
           int index,
           ...);

vips_rank() does rank filtering on an image. A window of size width by height is passed over the image. At each position, the pixels inside the window are sorted into ascending order and the pixel at position index is output. index numbers from 0.

It works for any non-complex image type, with any number of bands. The input is expanded by copying edge pixels before performing the operation so that the output image has the same size as the input. Edge pixels in the output image are therefore only approximate.

For a median filter with mask size m (3 for 3x3, 5 for 5x5, etc.) use

vips_rank( in, out, m, m, m * m / 2 );

The special cases n == 0 and n == m * m - 1 are useful dilate and expand operators.

See also: vips_conv(), vips_median(), vips_spcor().

Parameters

in

input image

 

out

output image

 

width

width of region

 

height

height of region

 

index

select pixel

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_median ()

int
vips_median (VipsImage *in,
             VipsImage **out,
             int size,
             ...);

A convenience function equivalent to:

vips_rank( in, out, size, size, (size * size) / 2 );

See also: vips_rank().

Parameters

in

input image

 

out

output image

 

size

size of region

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_countlines ()

int
vips_countlines (VipsImage *in,
                 double *nolines,
                 VipsDirection direction,
                 ...);

Function which calculates the number of transitions between black and white for the horizontal or the vertical direction of an image. black<128 , white>=128 The function calculates the number of transitions for all Xsize or Ysize and returns the mean of the result Input should be one band, 8-bit.

See also: vips_morph(), vips_conv().

Parameters

in

input image

 

nolines

output average number of lines

 

direction

count lines horizontally or vertically

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_labelregions ()

int
vips_labelregions (VipsImage *in,
                   VipsImage **mask,
                   ...);

Optional arguments:

segments : return number of regions found here

Repeatedly scans in for regions of 4-connected pixels with the same pixel value. Every time a region is discovered, those pixels are marked in mask with a unique serial number. Once all pixels have been labelled, the operation returns, setting segments to the number of discrete regions which were detected.

mask is always a 1-band VIPS_FORMAT_INT image of the same dimensions as in .

This operation is useful for, for example, blob counting. You can use the morphological operators to detect and isolate a series of objects, then use vips_labelregions() to number them all.

Use vips_hist_find_indexed() to (for example) find blob coordinates.

See also: vips_hist_find_indexed().

Parameters

in

image to test

 

mask

write labelled regions here

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.

Types and Values

enum VipsOperationMorphology

More like hit-miss, really.

See also: vips_morph().

Members

VIPS_OPERATION_MORPHOLOGY_ERODE

true if all set

 

VIPS_OPERATION_MORPHOLOGY_DILATE

true if one set

 

VIPS_OPERATION_MORPHOLOGY_LAST

   

See Also

arithmetic
vips-8.2.2/doc/html/left-insensitive.png0000644000175000017500000000051112651721507015137 00000000000000‰PNG  IHDR(-S~PLTEªªª¿¿¿¿¿¿³³³¸¸¸¹¹¹ººº½½½¾¾¾ÁÁÁ½½½¿¿¿¿¿¿¾¾¾¿¿¿¿¿¿¿¿¿¾¾¾½½½¾¾¾¾¾¾¿¿¿¾¾¾¿¿¿¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾ÿÿÿ VIPS function list: VIPS Reference Manual

VIPS function list

Using VIPS — List of VIPS functions and operators

Function list

VIPS has a set of operators each of which computes some useful image processing operation. Each operator is implemented as a GObject class, for example VipsGamma. Classes are identified by their unique nickname, in this case gamma. From the command-line, C++ and most language bindings, you use the nickname to call the operator. For example in C++:

  vips::VImage fred = ...;
  vips::VImage jim = fred.gamma();

or Python:

  fred = jim.gamma()

VIPS has a set of C wrapper functions for calling operators, in this case vips_gamma():

  VipsImage *fred = ...;
  VipsImage *jim;

  if (vips_gamma(fred, &jim, NULL))
    ...error; 

Some operators have many C convenience functions.

This table lists all the VIPS operators with their C convenience functions and a short description. It's supposed to be useful for searching. See the API docs each function links to for more details.

Table 1. VIPS functions and operators

Operator Description C functions
system run an external command vips_system()
add add two images vips_add()
subtract subtract two images vips_subtract()
multiply multiply two images vips_multiply()
divide divide two images vips_divide()
relational relational operation on two images vips_relational(), vips_equal(), vips_notequal(), vips_less(), vips_lesseq(), vips_more(), vips_moreeq()
remainder remainder after integer division of two images vips_remainder()
boolean boolean operation on two images vips_boolean(), vips_andimage(), vips_orimage(), vips_eorimage(), vips_lshift(), vips_rshift()
math2 binary math operations vips_math2(), vips_pow(), vips_wop()
complex2 complex binary operations on two images vips_complex2(), vips_cross_phase()
complexform form a complex image from two real images vips_complexform()
sum sum an array of images vips_sum()
invert invert an image vips_invert()
linear calculate (a * in + b) vips_linear(), vips_linear1()
math apply a math operation to an image vips_math(), vips_sin(), vips_cos(), vips_tan(), vips_asin(), vips_acos(), vips_atan(), vips_exp(), vips_exp10(), vips_log(), vips_log10()
abs absolute value of an image vips_abs()
sign unit vector of pixel vips_sign()
round perform a round function on an image vips_round(), vips_floor(), vips_ceil(), vips_rint()
relational_const relational operations against a constant vips_relational_const(), vips_equal_const(), vips_notequal_const(), vips_less_const(), vips_lesseq_const(), vips_more_const(), vips_moreeq_const(), vips_relational_const1(), vips_equal_const1(), vips_notequal_const1(), vips_less_const1(), vips_lesseq_const1(), vips_more_const1(), vips_moreeq_const1()
remainder_const remainder after integer division of an image and a constant vips_remainder_const(), vips_remainder_const1()
boolean_const boolean operations against a constant vips_boolean_const(), vips_andimage_const(), vips_orimage_const(), vips_eorimage_const(), vips_lshift_const(), vips_rshift_const(), vips_boolean_const1(), vips_andimage_const1(), vips_orimage_const1(), vips_eorimage_const1(), vips_lshift_const1(), vips_rshift_const1()
math2_const pow( in, c ) vips_math2_const(), vips_pow_const(), vips_wop_const(), vips_math2_const1(), vips_pow_const1(), vips_wop_const1()
complex perform a complex operation on an image vips_complex(), vips_polar(), vips_rect(), vips_conj()
complexget get a component from a complex image vips_complexget(), vips_real(), vips_imag()
avg find image average vips_avg()
min find image minimum vips_min()
max find image maximum vips_max()
deviate find image standard deviation vips_deviate()
stats find image average vips_stats()
hist_find find image histogram vips_hist_find()
hist_find_ndim find n-dimensional image histogram vips_hist_find_ndim()
hist_find_indexed find indexed image histogram vips_hist_find_indexed()
hough_line find hough line transform vips_hough_line()
hough_circle find hough circle transform vips_hough_circle()
project find image projections vips_project()
profile find image profiles vips_profile()
measure measure a set of patches on a color chart vips_measure()
getpoint read a point from an image vips_getpoint()
copy copy an image vips_copy()
tilecache cache an image as a set of tiles vips_tilecache()
linecache cache an image as a set of lines vips_linecache()
sequential check sequential access vips_sequential()
cache cache an image vips_cache()
embed embed an image in a larger image vips_embed()
flip flip an image vips_flip()
insert insert image sub into main at x, y vips_insert()
join join a pair of images vips_join()
arrayjoin join an array of images vips_arrayjoin()
extract_area extract an area from an image vips_extract_area(), vips_crop()
extract_band extract band from an image vips_extract_band()
bandjoin bandwise join a set of images vips_bandjoin(), vips_bandjoin2()
bandjoin_const append a constant band to an image vips_bandjoin_const(), vips_bandjoin_const1()
bandrank band-wise rank of a set of images vips_bandrank()
bandmean band-wise average vips_bandmean()
bandbool boolean operation across image bands vips_bandbool(), vips_bandand(), vips_bandor(), vips_bandeor(), vips_bandmean()
replicate replicate an image vips_replicate()
cast cast an image vips_cast(), vips_cast_uchar(), vips_cast_char(), vips_cast_ushort(), vips_cast_short(), vips_cast_uint(), vips_cast_int(), vips_cast_float(), vips_cast_double(), vips_cast_complex(), vips_cast_dpcomplex()
rot rotate an image vips_rot()
rot45 rotate an image vips_rot45()
autorot autorotate image by exif tag vips_autorot()
ifthenelse ifthenelse an image vips_ifthenelse()
recomb linear recombination with matrix vips_recomb()
bandfold fold up x axis into bands vips_bandfold()
bandunfold unfold image bands into x axis vips_bandunfold()
flatten flatten alpha out of an image vips_flatten()
premultiply premultiply image alpha vips_premultiply()
unpremultiply unpremultiply image alpha vips_unpremultiply()
grid grid an image vips_grid()
scale scale an image to uchar vips_scale()
wrap wrap image origin vips_wrap()
zoom zoom an image vips_zoom()
subsample subsample an image vips_subsample()
msb pick most-significant byte from an image vips_msb()
byteswap byteswap an image vips_byteswap()
falsecolour false colour an image vips_falsecolour()
gamma gamma an image vips_gamma()
black make a black image vips_black()
gaussnoise make a gaussnoise image vips_gaussnoise()
text make a text image vips_text()
xyz make an image where pixel values are coordinates vips_xyz()
gaussmat make a gaussian image vips_gaussmat()
logmat make a laplacian of gaussian image vips_logmat()
eye make an image showing the eye's spatial response vips_eye()
grey make a grey ramp image vips_grey()
zone make a zone plate vips_zone()
sines make a 2D sine wave vips_sines()
mask_ideal make an ideal filter vips_mask_ideal()
mask_ideal_ring make an ideal ring filter vips_mask_ideal_ring()
mask_ideal_band make an ideal band filter vips_mask_ideal_band()
mask_butterworth make a butterworth filter vips_mask_butterworth()
mask_butterworth_ring make a butterworth ring filter vips_mask_butterworth_ring()
mask_butterworth_band make a butterworth_band filter vips_mask_butterworth_band()
mask_gaussian make a gaussian filter vips_mask_gaussian()
mask_gaussian_ring make a gaussian ring filter vips_mask_gaussian_ring()
mask_gaussian_band make a gaussian filter vips_mask_gaussian_band()
mask_fractal make fractal filter vips_mask_fractal()
buildlut build a look-up table vips_buildlut()
invertlut build an inverted look-up table vips_invertlut()
tonelut build a look-up table vips_tonelut()
identity make a 1D image where pixel values are indexes vips_identity()
fractsurf make a fractal surface vips_fractsurf()
radload load a Radiance image from a file vips_radload()
ppmload load ppm from file vips_ppmload()
csvload load csv from file vips_csvload()
matrixload load matrix from file vips_matrixload()
analyzeload load an Analyze6 image vips_analyzeload()
rawload load raw data from a file vips_rawload()
pngload load png from file vips_pngload()
pngload_buffer load png from buffer vips_pngload_buffer()
matload load mat from file vips_matload()
jpegload load jpeg from file vips_jpegload()
jpegload_buffer load jpeg from buffer vips_jpegload_buffer()
webpload load webp from file vips_webpload()
webpload_buffer load webp from buffer vips_webpload_buffer()
tiffload load tiff from file vips_tiffload()
tiffload_buffer load tiff from buffer vips_tiffload_buffer()
openslideload load file with OpenSlide vips_openslideload()
magickload load file with ImageMagick vips_magickload()
magickload_buffer load image from buffer with ImageMagick vips_magickload_buffer()
fitsload load a FITS image vips_fitsload()
openexrload load an OpenEXR image vips_openexrload()
radsave save image to Radiance file vips_radsave()
ppmsave save image to ppm file vips_ppmsave()
csvsave save image to csv file vips_csvsave()
matrixsave save image to matrix file vips_matrixsave()
matrixprint print matrix vips_matrixprint()
rawsave save image to raw file vips_rawsave()
rawsave_fd write raw image to file descriptor vips_rawsave_fd()
dzsave save image to deep zoom format vips_dzsave()
pngsave save image to png file vips_pngsave()
pngsave_buffer save image to png buffer vips_pngsave_buffer()
jpegsave save image to jpeg file vips_jpegsave()
jpegsave_buffer save image to jpeg buffer vips_jpegsave_buffer()
jpegsave_mime save image to jpeg mime vips_jpegsave_mime()
webpsave save image to webp file vips_webpsave()
webpsave_buffer save image to webp buffer vips_webpsave_buffer()
tiffsave save image to tiff file vips_tiffsave()
fitssave save image to fits file vips_fitssave()
shrink shrink an image vips_shrink()
mapim resample an image with an arbitrary warp vips_mapim()
affine affine transform of an image vips_affine()
similarity similarity transform of an image vips_similarity()
resize resize an image vips_resize()
colourspace convert to a new colourspace vips_colourspace()
Lab2XYZ transform CIELAB to XYZ vips_Lab2XYZ()
XYZ2Lab transform XYZ to Lab vips_XYZ2Lab()
Lab2LCh transform Lab to LCh vips_Lab2LCh()
LCh2Lab transform LCh to Lab vips_LCh2Lab()
LCh2CMC transform LCh to CMC vips_LCh2CMC()
CMC2LCh transform LCh to CMC vips_CMC2LCh()
XYZ2Yxy transform XYZ to Yxy vips_XYZ2Yxy()
Yxy2XYZ transform Yxy to XYZ vips_Yxy2XYZ()
scRGB2XYZ transform scRGB to XYZ vips_scRGB2XYZ()
XYZ2scRGB transform XYZ to scRGB vips_XYZ2scRGB()
LabQ2Lab unpack a LabQ image to float Lab vips_LabQ2Lab()
Lab2LabQ transform float Lab to LabQ coding vips_Lab2LabQ()
LabQ2LabS unpack a LabQ image to short Lab vips_LabQ2LabS()
LabS2LabQ transform short Lab to LabQ coding vips_LabS2LabQ()
LabS2Lab transform signed short Lab to float vips_LabS2Lab()
Lab2LabS transform float Lab to signed short vips_Lab2LabS()
rad2float unpack Radiance coding to float RGB vips_rad2float()
float2rad transform float RGB to Radiance coding vips_float2rad()
LabQ2sRGB unpack a LabQ image to short Lab vips_LabQ2sRGB()
sRGB2HSV transform sRGB to HSV vips_sRGB2HSV()
HSV2sRGB transform HSV to sRGB vips_HSV2sRGB()
sRGB2scRGB convert an sRGB image to scRGB vips_sRGB2scRGB()
scRGB2sRGB convert an scRGB image to sRGB vips_scRGB2sRGB()
icc_import import from device with ICC profile vips_icc_import()
icc_export output to device with ICC profile vips_icc_export()
icc_transform transform between devices with ICC profiles vips_icc_transform()
dE76 calculate dE76 vips_dE76()
dE00 calculate dE00 vips_dE00()
dECMC calculate dECMC vips_dECMC()
maplut map an image though a lut vips_maplut()
percent find threshold for percent of pixels vips_percent()
stdif statistical difference vips_stdif()
hist_cum form cumulative histogram vips_hist_cum()
hist_match match two histograms vips_hist_match()
hist_norm normalise histogram vips_hist_norm()
hist_equal histogram equalisation vips_hist_equal()
hist_plot plot histogram vips_hist_plot()
hist_local local histogram equalisation vips_hist_local()
hist_ismonotonic test for monotonicity vips_hist_ismonotonic()
conv convolution operation vips_conv()
compass convolve with rotating mask vips_compass()
convsep seperable convolution operation vips_convsep()
fastcor fast correlation vips_fastcor()
spcor spatial correlation vips_spcor()
sharpen unsharp masking for print vips_sharpen()
gaussblur gaussian blur vips_gaussblur()
fwfft forward FFT vips_fwfft()
invfft inverse FFT vips_invfft()
freqmult frequency-domain filtering vips_freqmult()
spectrum make displayable power spectrum vips_spectrum()
phasecor calculate phase correlation vips_phasecor()
morph morphology operation vips_morph()
rank rank filter vips_rank(), vips_median()
countlines count lines in an image vips_countlines()
labelregions label regions in an image vips_labelregions()
draw_rect paint a rectangle on an image vips_draw_rect(), vips_draw_rect1(), vips_draw_point(), vips_draw_point1()
draw_mask draw a mask on an image vips_draw_mask(), vips_draw_mask1()
draw_line draw a line on an image vips_draw_line(), vips_draw_line1()
draw_circle draw a circle on an image vips_draw_circle(), vips_draw_circle1()
draw_flood flood-fill an area vips_draw_flood(), vips_draw_flood1()
draw_image paint an image into another image vips_draw_image()
draw_smudge blur a rectangle on an image vips_draw_smudge()
merge merge two images vips_merge()
mosaic mosaic two images vips_mosaic()
mosaic1 first-order mosaic of two images vips_mosaic1()
match first-order match of two images vips_match()
globalbalance global balance an image mosaic vips_globalbalance()


vips-8.2.2/doc/html/up-insensitive.png0000644000175000017500000000044512651721507014637 00000000000000‰PNG  IHDR(-S`PLTEÿÿÿ¶¶¶¿¿¿ÃÃÿ¿¿ÁÁÁÁÁÁ¼¼¼½½½½½½¾¾¾¿¿¿¾¾¾¿¿¿¾¾¾¿¿¿¾¾¾¾¾¾¾¾¾¿¿¿¿¿¿¾¾¾¿¿¿½½½¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾[g¤&tRNS !1EMino‚ƒŠ‹ ¡ÁÂÆÉÊÎæîñùûþM°å3UIDATxÚ­ÊG€0À ¤Ð;iøÿ¿D€p/ëY™¦©ÿ®€òk÷=ê×*ÀõXz´D¼¼]XôŒˆ °ùõØ0òóò +;‹›Å=‹Ë(Eê娨Ó]bIEND®B`‚vips-8.2.2/doc/html/libvips-VipsInterpolate.html0000664000175000017500000005075312651721507016644 00000000000000 VipsInterpolate: VIPS Reference Manual

VipsInterpolate

VipsInterpolate — various interpolators: nearest, bilinear, and some non-linear

Stability Level

Stable, unless otherwise indicated

Includes

#include <vips/vips.h>

Description

A number of image interpolators.

Functions

VipsInterpolateMethod ()

void
(*VipsInterpolateMethod) (VipsInterpolate *interpolate,
                          void *out,
                          VipsRegion *in,
                          double x,
                          double y);

An interpolation function. It should read source pixels from in with VIPS_REGION_ADDR(), it can look left and up from (x, y) by window_offset pixels and it can access pixels in a window of size window_size .

The interpolated value should be written to the pixel pointed to by out .

See also: VipsInterpolateClass.

Parameters

interpolate

the interpolator

 

out

write the interpolated pixel here

 

in

read source pixels from here

 

x

interpolate value at this position

 

y

interpolate value at this position

 

vips_interpolate ()

void
vips_interpolate (VipsInterpolate *interpolate,
                  void *out,
                  VipsRegion *in,
                  double x,
                  double y);

Look up the interpolate method in the class and call it. Use vips_interpolate_get_method() to get a direct pointer to the function and avoid the lookup overhead.

You need to set in and out up correctly.

[skip]

Parameters

interpolate

interpolator to use

 

out

write result here

 

in

read source data from here

 

x

interpolate value at this position

 

y

interpolate value at this position

 

vips_interpolate_get_method ()

VipsInterpolateMethod
vips_interpolate_get_method (VipsInterpolate *interpolate);

Look up the interpolate method in the class and return it. Use this instead of vips_interpolate() to cache method dispatch.

[skip]

Parameters

interpolate

interpolator to use

 

Returns

a pointer to the interpolation function


vips_interpolate_get_window_size ()

int
vips_interpolate_get_window_size (VipsInterpolate *interpolate);

Look up an interpolators desired window size.

Parameters

interpolate

interpolator to use

 

Returns

the interpolators required window size


vips_interpolate_get_window_offset ()

int
vips_interpolate_get_window_offset (VipsInterpolate *interpolate);

Look up an interpolators desired window offset.

Parameters

interpolate

interpolator to use

 

Returns

the interpolators required window offset


VIPS_TRANSFORM_SHIFT

#define VIPS_TRANSFORM_SHIFT (6)

Many of the vips interpolators use fixed-point arithmetic for coordinate calculation. This is how many bits of precision they use.


VIPS_TRANSFORM_SCALE

#define VIPS_TRANSFORM_SCALE (1 << VIPS_TRANSFORM_SHIFT)

VIPS_TRANSFORM_SHIFT as a multiplicative constant.


VIPS_INTERPOLATE_SHIFT

#define VIPS_INTERPOLATE_SHIFT (12)

Many of the vips interpolators use fixed-point arithmetic for value calcualtion. This is how many bits of precision they use.


VIPS_INTERPOLATE_SCALE

#define VIPS_INTERPOLATE_SCALE (1 << VIPS_INTERPOLATE_SHIFT)

VIPS_INTERPOLATE_SHIFT as a multiplicative constant.


vips_interpolate_nearest_static ()

VipsInterpolate *
vips_interpolate_nearest_static (void);

A convenience function that returns a nearest-neighbour interpolator you don't need to free.

Returns

a nearest-neighbour interpolator.

[transfer none]


vips_interpolate_bilinear_static ()

VipsInterpolate *
vips_interpolate_bilinear_static (void);

A convenience function that returns a bilinear interpolator you don't need to free.

Returns

a bilinear interpolator.

[transfer none]


vips_interpolate_new ()

VipsInterpolate *
vips_interpolate_new (const char *nickname);

Look up an interpolator from a nickname and make one. You need to free the result with g_object_unref() when you're done with it.

See also: vips_type_find().

Parameters

nickname

nickname for interpolator

 

Returns

an interpolator, or NULL on error.

Types and Values

vips-8.2.2/doc/html/ch04.html0000664000175000017500000000415212651721507012574 00000000000000 Other API (no gtkdoc comments yet): VIPS Reference Manual

Other API (no gtkdoc comments yet)

vips-8.2.2/doc/html/api-index-full.html0000664000175000017500000065764112651721507014675 00000000000000 API Index: VIPS Reference Manual

API Index

A

Ë'9‡¸t:>ìg¤_ÌmŠßÊWÔ4»jƒÍq£ƒëÜ-Ž<³mó‚+r!^¸´‘>Åüf2[ôëwd:ÍàmyœÆ¡VpœûÌYƒËÒ&p̞ߊ¥x9‘“Qƒ`ÉSp’ë*±ääp¥´7øÉÙÁÉèzæ‘=Ð WHM¸\äC‚ 6të«ü>QÞ™·¶³u"¯& Q¬TöI(çÊæ ½a>°ã†¡¿á2ÚŸn'βnÂÁN˜!,;)ϘH‹µügâDñKä/…6vHxÀ x3ÐÛTÇVò[­ÆÈW3ç…ãb¢c%¼­Ï¢HÜ‚šq :Š'˜'6šyô#z€.ÁÅøžK‘wb‹ýÆ3a?u(Á_A+œƒìÉ q²¥Þ°PLÕyp«È9ðÆI´œ .ÙÜ4î £9¥3×ÏA=ÄŒüHl™ûp'2Ÿõãgñ%¬šÌg½‡‹Ý,^zËfÉMòÿÉÝ…z–MÕ¡7t ³â3ˆ=S¥Ó8‡cq#ŽBɰ^ÃBœGJˆ5ÙN>áµd#žâQ0'&’J¶Ñmô3ý@6¢s„÷’@¾b€ÛðÒ„ÒGt $R.Ÿ ž´•TNÔ•lBà\òÈѵ~³Za5éù­‹ŸYÝÛ¸F”‡g’%Â!«m -FZ…ÙÑ:+G±“\j×w™|ÿÝàç‰ñé•9;‹g•¶7 ­Z§ŠVÁZ q¶‰n³î™îYƒ».­~­vV틺¿t¥Ú#µ½TÊÅêw껵¾'Í‘ÚMµV•ß²¾Qɲ¢-’$ù®%?T/´ÿÔ9)Û+yU'^_a~o~eúŸ9ÊtßôÎ4ËÔÁhZÙØÑ4Ûdi,ÈÝSÞ5ô­ïýSé!ŸcÝRÏú$Ÿê˜r2ÒÇàÓÓ¯[ô¿ÓTÍ÷Z_•¡îR}O•¶ƒ.ÜfzÜß÷¸ï Ðýñ{³Šjܪf•ÛW|-K.h—槨Žÿ5(PÐ'øDàÀ«¼&{ÙŸ®H<–©,³PW©Ó†…„4ÆÌŽÿü2yN„EÀú“Ý‚®œv÷ûp†$IÝ+jP¸‡÷Ѓ{ÝìƒÄóïv¤`ÑñëêÄèðGÜ&u¯Ùqz†t`'þ?_*èfêÈâ©õ£Ä»©äÊà]° þÊá,˜‰·âV™H¦fÎT×baÇ}–næÖÓr0]ûÁ7î$ëJ7Á5ätÅ6¼ŽÝáëdvlø•|tý)¼bÙYûÂ?ãõü5z˜˜áUh-i€–0†I„ üwyDè)ÿ$«–ùgèf™Bæ%L`Èv^&Œg¾DÏBÉH¶–Í`™ÔV°¬åoÙL´ÀbW‰êYl¨0Sñ¯H®˜úî±*¶„Õâçè&z,ME]p1²æ¶Jöu"T$_‚H^“¨±h¹„äPƒýˆ‘ÚŠÙu+œŠfƒEà˜ô‰$CÅ%Âà6ð)(îð+Ì›çk8‚GQ+ª¥p<öÐHv—%‰.¶µ#ÿÃn¸›pX&“Aá&϶ócù ú‹Mó Ï; ËØcõ`3œÛéðŒ‡½ÑÔ,Þ…š ZAp5~Œ™˜„#H* ¢3Ù|²Vdêeì„KÄÆ¶\äò7Ô“LÇð8²ßFÖh2AîâWð>ü…Æ‹Ï[ÅŽçÁÚŒb¸' Oäl0þIåzù,ú_aR‹¤:N€±¸H±ºÄ“Žd°ûòmBgò Ù²—B¹µÛº×{]½Õg¶ÇOÉ*Ný?ÿÿ˜pÉÅñpÈár¹`ÁýpKvº¿îž™MwB€Á @Œw%î.Äm7›•ìFáp9?Ü%ø!÷ŸMmÕÖJMu÷÷Þû½y˜ì”¼¾À¼ÂDñNýL÷Üpµ¹©1«!K?HØ`®X_­úKû¢A£ól1´6ËZŦ‰†áMÓcµ‹J¯¦\(ìaøQÌR|*o©º«n†6Z\¹£"¤¢¹ÆXkÛdÞ|¹1¼ébKUkJ³Îª_ÔÛ4¨YZ}öiùÝšrÅùœê¨y¾i~c­SÆe„ÏQ29(=Ø*Ô5zSösEÝÜÆñÚ9šnª¡ÊPEKmeõ›’†dCPÏo¿h}Á½šˆZ·ª+•+Ë7Ô<ªð*±(‰);“TZ~=È*ðMÈÛ¨!éër”.ÑÕ5ÜËÙew0óiþ‘SWÒJS”ÉúØ”à[AöÉ»’ÓO6þî»Ò‹º¥zÿ4Â?³òØŒƒ÷ Ýa½ú“¸Šÿ—_ˆãÑs¬‡ÎäO¢¢·Ùr.Ÿ3@Ä™KÇ<Ö#s,âAÜp¼…ÂgüÀ 2×`ü ßGWe_ÌË@6‹ä#;r“„bwôßÁŽ,Ï ½pô'7¸l2–^Br¾VÁvþŠð›ÐÂgñoÀŸ\â_á*ZJúC«ÌÛ¬ï"ÃÂeˆÃ=ùW¡ƒ°D¾^è&>–Wð>â!È?âsÅ ¢3¿=aÛi:œ¥;¨k{ñμëÈ>re8s¨Aåø¹Æo£çØ úˆÈéxÒŽ_a@pìh ™ ­xyH®£n¶"ÓÉB¼™àã`L_’\âC’…±¬ §ÂRì†n¢µÜ[ÎýŽM!ÿö˶qn\,z†§âp¤^H‰Æ“2žÄâ-²³XG/°vþ›ýö%†nâ»°Ël³X& áxkÚ‡çß Œ¿Âæð ¼‚ÍecÉ$<·p¾ˆãþåÑ!î º‚¯Ãv"G åè\Œ·’/t™p—w"Ѩ—Ópï‚ûä%að;ÎÄóÁ” ØþàoI3Y@¦Â%| A8ô£×éXžçShWøŽa{ä‚j¹èoj *pƒ“ØAÿ¡OÈÍ&>|?‰¦’¾4ú1þ'ÁßggX yq—u‹ŽGE8D}÷_àw(Z•ö¶8²¶¦_Ó-§uñ5Ÿ+ãªÓk¼ª÷ׄÖì«»¬ÚQW«ò«Wko«½+HqmM¤æM]fј”¨”#ù›ó¶®V$){*†ªTuiÊöZÛŠÔÂÆœÐ‚°J½âŽ"RÙE}H¥½^”‹ª¦•ö¯òÕ94ŸÒ\6ìꜤóþÇý¼Z"ÓÓ²Rf%?N‰=is)ùdIN­ªªº¶—ºÂ k\¨â ï¦(ÓóÒ*×V‰E“Ò¼©{”û”˜Ñ…15]+&”YT ¨ë­;­¹\§×Ün¸Pd•ú1qX’gÜoñ/§Xd„—vÔ97Mos¸”QÑ=Î#1¸x•r j`­P柭Nó5DGÄÖ¦ºÆ Üìëëov/<;x«[/··.};psØbµÙò ß\€—\n†ß(—ì íÍü 7Ù%©n*üÀcXG<f"{äD¼qW²oÀF°Qf‹o‚€“ðRˆ>™‘…ÉZ‘7v¤;ˆ7è`=þ­"ÝÉxjLŽðFd¡F÷‹oå21™ïc©³,…¤ö6²½t í͹ öùíóø±%)fõšá\óüO‡Ó]ô³•ª÷äFïNêRé¦k^ÑØ_Ç)M˼s¤ÍOø3Þ(ªÉO¤ñ’/Å6îõ\}´ïáNáÛV[öáËh7É=÷+èA/ÐHv“rôþƒ<Ç?ð8òŠôbãð&0‚gx;»FÌH î(¹:köÝÇoðJø†»‚l„ÜUøÓ d ›aäÂðíÄ÷àѯä¦\.v³p²ÐZö®òëÅ~|»øMLgÈ_‰¯„yBG6]˜Ó9oH’¢‚mâ_ˆÛÄN‚¿è"¬¥MEfòj¾ŒÏÌ„Dñ![Feð“"¦$pÀÿ&`OÙ\Ü„4¨+·ÁìOÐ N‡çÓhjÄ>ÊôÔ'£¸×Âr¸JòØGZ…Ⱥáþd ¸`*3%¶ÐŠŽ¡Nœ–[HÎÁôn"'çBÐv$àg(Ÿ¼Dÿ’ñe4½ÃVA,—¦{« ±TÉZðuô%G±› oÏÙj®`‚Gp¹*²•þF;2½C,Á“žá³ùyì±Î«Ø0¶M0vÐ ð€ÕpŽüí˜^ðRʱ$ Æ'%•žÍcÞ´…S;ˆ íaQ“f˜ƒÉ+ØepMÒÝJr€1D2I&dq é4žÚI+§2v‚Ã| ¯…mpú€Ú.¹+‚ùÒ™þ6Ò,‚1»%½’Y%Ÿd´öò’z~ÛÇž²Hþ/úRÞ²qÖ¾r×ë¾}j|ÒNœ b©+ ÿN™ºôXŸ£ï¿ .:9.qyr^:) +o¯h,L)Œw=]ä[@ÉÕ¾WÔÔ»è¦èýõº±êתÕ‡®®>°*êÔ®â…Õýë®(ì«÷Tþ]áYå£0Vt¬/njĈƒ“Üßû߈›æ–^àêÓÕc–˵½ß6›ËÊa+·õ'}H(}ƒM©–d2:YÒP;¤CXH…©è»ì rhÈk:¹Ò›| W…ß¡î°Ab—õБ–“mø5DA YÏÎSgRKNU¤ îÑÞ´‘¦6ðDì!N—s¼äÏ-TE)ÛÀ–HœòY+vú±Gô#¿ÇâèË ìq¨0O Ê„ â ?a7ßB¹JÞUœ.ìó`‹i{-ñÚv¾#F=I0]ô—7³ž0†žæm˜ÎG¸²EæKP¬à,\£+h 4â¥p Eëñ4ÉÑëðdjOëà*ùF>¼Æ®˜#;è€\ñ&¤çŒ%­tÅ:„P_‰'íÐïÜ ôBb¶6dŒ˜@)ëÿ@Î0„®¥Ö àú€ßq/ÐßDBa’p\Z%Ç®@ 2æZÌ2d–R^IY5Ý÷C6}Ä‘/¨Éw²Ÿ6“Ap¦“5po‡Ct6-‘RÕDúd)ñ‚•ø÷™¾î£g™“”U³È":•õ`sèw²žcì·$ö] ¦9¾!¥d·%ëÈy:ƒl‚9’þâH&F´Š´@5$æl¡Gh'úä0WÈ6éN7a²¤Ð¿©ÝJóá\`ŧ–‹×x¯+·ÅgeôÖMøÀ~{VÛí<âüÕ}“×7•sù1»˜¯)Ã6˜³~Ü–Ø}Ñîwü7w.K^•Q -˜žù9\{8ÐáèÁ'Á²N* µ¶X«Òþ­Û¥»­û®›¨Uk&k~j=^êèŠÕÍêSš—Ú:cí-­¯v¤v…ÖX›­5nÞˆ[¦µÍÍK)}Vñ²ìTÖÂÄu©SÒC2B²"ssóJæÕÏÑ^Wn¬r*ë¯ÒZݦm™ÕÜWõ±`bÆ/ —#ìâk ]+çŽM Š>¡Jó(«­0*,‰ûã™±¶\Ôæé–Ö+Ÿ\²=?3{bZ—¤1Éá®1q)ÆÅwêßè³+l³Ä_Ž–`š¹½Àª|T…W}“a\s°¾N]_=4¿k„Éaá ÊwJ\[âþ¸QÁYžK¥Ë×õ®‡íÎC+MåÇY¹ì¡¹‘Dƒw$õI¤±¾rÇI%ÚFøw»‘LÎKrrœ…˜•tRÞ¬½…Ã`!„ÊÒñ&)ñ%³§Éø‰Ô|þß•B¡œÔ±² ꑯxôšP. -£{ñFI³PŒVʲésê'y©ýAN°¡ô~Ib…íbŽ`*.‘;0WQ#+· ]-|,¾ Öülvÿ$fˆ×D+>^Iµ’kw…Utý—ìÄÞÂT>‰™K÷˜FÑ{Ù!n”Ò•Òÿ–ð튫á.AŸÍWá™àì¸Ïh>Ñ’JèNo“Qä3©§ît“2•rÑ:d ùR£ZÎ:RþBÖ â¾pÁÈ%£oè)ªÄ³p;·ùbŠ7c^bÙäøÝ#>™üKgø¥´„*;ovˆ[ÎaTÅ­”« ^ÃU 9ZÇm6Ë0Kâ:CX’±Ä÷€x˜Ä–ýfxÖ‘p6’©$ÍNC1ðf’x2—FÐ¥ô"ØÓçlû*å™B:¿çø“ÔÇC¤¬Û Ãñn|9¡sø‰¦ÿÀ}Ü„÷aŸ‘úç5RCNÃñ |€˜°¶œÝ"&d-dw©ZÚ‘÷c›Ù†¿Ó ~¹ÜvÉq«aüg2ZrʩҺ~'ô™õðÍ6•Û=Tè1Ñ­Úýk¨çð‡Ã·eg—VmP8>qþ~虿_ÒûŒ.i’''> ßçzâàUy¡ccòÛ•÷µW5»ë·Ô‡«Þ«bÕIÚPÝkÍ>Íî;Ãÿ OtÝõ+õã§5¥6-nt2”~1ÈÖèFâZ:´FätÏÝSð¾ )oIÎ?¹Õ…¥ŸËƒO,j¬ôUUÔ¯Sm«)PŒ×ljj]xÆ£µ°~~ÉžÌûÉ#v'N®|¯ºPË ÚÓéPQW¿ZSU»718*)%¸¬kƒ‹6¼¦±¼SÝÝê–ÌšÔ„¸ÈÈÂàá“’_ä¨Ö«ŒrK7FOŽÏL0kIÉPfë‹Æ”öU~)š’ß?Í$a¼o«Ûïð°a †Ä_ÂÆžq¤ü€±ëÊ£uîŠÏ—.´0"·eVÜsò€ J¨Az ð'ö'9¤€Vóc`‹¬’¬$Þh ^ÇI*?X˜HŸàÎDzi¶HLüjøUzBš‡pb"[ÌG‘Ïè h¸ÉÜ9xÅܤDZ¢ZÄdJžáh2…ž¢ l]È €_éczí¤ ¤ò®t/]Ï2øp!P8#Ö‰;™/HìØ.&Ø @#È8G°^äÙS¼Š|$©Rš£C’ß¿%ïɲ€„@šÌÝ|%“qg 'É–MëñRÉ+À%p&Œ¾© †pŽhÜ%óè:)'ÈJ–#1kì&}Y=ká?1Âæòul& å/³vHkËås-.È/Þ¶ºa]åºÁÛŽœ\oï}²OÌóðž#ì¦Ù:ì™|ÄÈ5úè|߈D㜱¥~<¿¸çAk·è 'Òï•ÿZg¦H©¾S3S™¯bÃ_[µ!õõZ~­þÝü†‰VÍ+[&·U´%¶Ük¢ÍË CõU {ü v†øâŠOç?Ì-Ë–;º¨®ÒS±¯Æ¼xE Tv©Ž®¹\S^»§.@; aeƒ§Ö¥~Bmv©sjǸ°¸nÙ*mSÉìô5©ójÕÚ–o-¯†gGEOô.úS]¥ÕÕUN2Ø_}ª\ð!Ë,ýD‚c—¬(0Ժו¥w ·±OtMÛ–d’Õ9gM¶!íEʨ4’é—¶-fÿ¢ýýË"3â$©N¾ 8â>ÈiâþãN‘‡ïËd]#±å溿‘9t9€?áá´3ÙG>‘;¢½JÂp,¶„¯ø³Ô:’oØ@”´Ô ™‹*Q_Y“Ôæz‘øv7‡R‰éfÚÂFòQÌS6h‰õÆL^….s³AN4ø›@&¥Ä£•h!Ü'{,W‰Oew¤»ÈI9ôÃŽ²,°¤6¼É W¨?“ï Äòëy")2Bêâ7a†0ØâþN“ßy[’ÃýŠÇÐ"RÊîÁxqRëYÎV1ŸÆçÊRd_ÌË9|àÛÍ Á™NdGÑ]ί:h˜ÓÁÄHùq¬„-R­Ãq¥Dt§q#ìt yÒ@%Í©ºÏÍ’¾éL\H¶ÂzòƒcÜ&Y7N.{fÖ)P7ØÅ=Ä`OnC8L—^×hÍ$î –õ (ðm´Mò¥MP†¦"%Æö°+d†Ä”Ðin”ÿÞ¨OÄ«Ñ öä8‘‰‹(¹3w’‹éLÞœu§~d@ÚÀ“ &gÑYÜ[Á?”ÈÕ‡‹A‹¡(èáo/Iþ0×á1pÙྤ‚ܦӨyÅ:ó'h6…Ó0\JÊl(óÃÿŸ…@RE:IÄZÌÞ±xáßS°×ÁY,nðŸ3 O«ø¥Ã—[­:µÞÔ¶lOíÑî¼_YlHŽuƸ€“‘IÍq >øØ†˜Dì ÿÒ+*)f€ÿ÷ûíø½¯v®rÜé¯Kž–×RÑZñOñ‘SBYXíTõ@}h‹gë톟õ£µrýV½…n³v­Þ¦¹K›Ýée§«ÛâÛþjŽÐßÔ~ÓlÔ¼TwÑhÊÆ*Ö*±)ì“SªOµ¼úxéÄÚ&mwý)]šB[1½êŽªv²ÆS¥T+ë–•Meá¥1¶yoÔ‹ÊýâfG÷O]ø³n®þpc³†ËuK-,œU¿­q£Öº¤²ø¹¡ËÙ*ų⠒§¥=r6dmÏê[4H×µág[zenô–¨žñÅIù×O-K3Š õŽ L;™œXs%lDðƒÈEIöi4Ù"”sCî}ušzhÙ¡£N9»v/Ç–à{ðÝ£6¢‹t’%d#vB|‘yä¹HÞ zá,qÛe¸Ä¹;²ƒ¬¡¿C)3а;‚þ‚û4€$‘“áåÃ+šŠüøÿ?ËN¡uXav›ÞZ—½;Y>l';¹Ԅݧ݄ÅvÂ+ø€_‘/âbA*yø³ùF¸J8p O¸>ø†D§ÿÁ'øFõDÍÞ’Ÿ$Ç£wìÃb ʰÿp&— eØ÷FG)6•…¡Ñh”ìº4C¤ß? _ÉHôÉ|W%{ÍuÇv8‹²*©»6’—l~ÍÉÉiYµåó™¥ÔnZñ0‘²«\3rƒ÷ÈTêDP§GZd‚í¥qCkd?¹ƒ’?Ü…²ÜX³ ³µ›ç’eÙè6H\˜wÈkŒ'£‡(Cg¶ˆ›€Ÿ  l‹ÿ4¸¤}b爀w˜/–øšJD™¼˜åCO¦å­Y̤ãè‰>A }ǿ㖠³|Ǫ$7IGÇ%Nt¤)d$1¥É~2™zÒßéi²‡XrÇé¹n8=BöðL' ÷\!:Ä!n J‘p{àúŒú³7,‘ïÄÿÿIf(ù…˜P=ß`ÌáXX°@¢Ñ,¾§ü´ØÎ¿O¬…üCaöâÁV×-[e¬ídÓ¼uÅޯǼüý"·Æ|8ù.uשÿ ¶&§ÇîO H‹ˆí}.ê{˜IØåðG! þË|ºŸXîµÃ}´sÄ®¶£=‡dRª¾U˜’™›~>oYm‡†‹MF­¶ÍcõYšsZˆÃz]ƒ‡&X÷ÆÐÚìØâÙò[ë›–áͬ5£ÔžjcÍJÍr‹Ê¡Õee‘Å›J•ô+:’ã’³¿&»qJ«Kë—¦u}j†¨óµö:½jâYIyFßTMèµ@šqNÓ§uKƒ>Ï>Á"uOnϼw…çOæ)S³SLªnëÛZ;_<Ûò±lF…Iݯ4ÕŒU«VÚeö9µ£rIkËÛ]o =Cò"n¥:·åŸ‰éìû>ˆÄÌOh‹9mvö¤yêŠtE‚ip±{g·GL1¯õ[=ê´ì(Z,•æ9D ,‚Ά 8TòøÝ¨@/¤€8üT|.|ŸÒ©D…"É8¶Ÿt# (äNƱæÑ'xK0¿€ú!s¼ [‘X¶ƒ_ÅLénöJèMBñcÖÙb%_ĺ£ &·´f¡¬3Àï°ªµ¸HçK½p1+'y²|îê€WÃK¸"(á1t%Î+ÑR 㪩žª¤®ÓFbèk–ËŽ²y¬™º’›0ŒèH ÎGiÎEc9.G¤” Id-İRª"é3P¡=R¿ù.áü!ê³È>xƒ{â;؆¾%^Â1úRJÆ`˜P‘¤‰í8Gsåp Îàiƒ; .\J»³(7 ³²tAšèƒÜ-ó£R;sY¸za›LHIÞýྡྷLøÑäFŽ2SYÿE-ò•]FKÈ|XŠÍ¥tÍ„L‰ï™™ÊºboډϦù0µ’]î&š@JH™&õ6©%Ò:6Ý€Žð¬‚~d˜cJ¼±ÌàMåñKµ+F-M—Sq•à! ™Æ6m,{µz°mÖ:ËgXúo‰º—‘È’¤¿>u¾âN–YÜϤ79^i±ºðNÕÞQ'Îzô®ð´ópòéÚÃßù´£ñ¾÷^|ŠòÔ¯yéiÇF%ùæ¦ÔÞi¸Ñx¸1ÓPßÐ¥ažé’ šJ5ûÕV:󷆵ú½—FEÓ;CLƒ—¦]ýS»PëZݤ¼Ww îUíÜŠ£%› «ò¾æ—Wî©?ª[oðn´ÔS»×ÏÔÓf*óýÓ³ ¼´ñѾò¬ôWNµF¨§–œÎÏ2NU'_J>»7’•¾oÛx¦ë¹ÕW\›ûU¥”Ù*z6}0ìlºh°5ês•SÊ#+ÿÿÿ™TɆ͊9ë*êšóšÐ]uoUÏDň+æ°‚YEDTDÉ9ƒd$§!3À Aĸfå™sØ]óš^íáÌa˜é.zºî½ßÿu¹G]^òrÿ‡®gÇyœ Y7 tœ’÷µÐÁÑAW½õÞžþ{CÜ##&ú»ŽÚßäô¿ý¡NÎOœ³wücÿdžÞj’i3ìbÙx•gAoH´áÕk:‹ÔÖÌ]}ˆ'²&\ˆ¦ä7e¦lƒÝP iô-µ“†l{MOC}ÇæÊuÜŸÕáh¥ŸR O`) Â0SYHû™Í7}Âü‰=œ†sÖ8ï¡ÒS¹©¸°h‚.8ž¥PTžàZÕ1¤¬’Õ³Þ|(óc_¸£2Sµ°]gømìÀ†ñ‘t4€óg†ø#i0|ÆX×a%JJ#°–8]X BFÈ ¸®eã½únÚó;rM ïæ…d‡äì* ®XP³ ¾}ýS]CÍ¢úH}sqYj|DûÔ;ÚßËÞ SBjs›*¯ý«rañ𜲄»½Ï¹­ôUå8×õk˜¢7-û™1<îs\nz+MVÖ“¬9ѽjÃëZÕÜ/3)2Lÿ¢?ò§ã­cJÀ×€¥=;]äµ"–û;yNòð/õõ_èÓÍ#n߇®NUû{í[åè¾×Ý~å²%ªNjÓFðǽÌ\D§R™Þ•zÒÓ¸W€ý  vR½Æ‡ä;õ•GÊ5´óeUbw¼á8Ì7¤›¨”Å8”½ÂËć¶ÇmK¯bG´Ä&(@NáûÆRp)-DtO® §`=³EÖCÕÅ"]u“§ñ·ìþÎè…µ8€?b½”¾l]Æ+ ¦íÕsÌN˜¨©Q¡gX +‚ð/ö`ç¡hhÛÀ¿óÏl%Žïq…üuØDw‰™`Õäò€¦âœ ;`3ìdZÎTù¨«Dˆ K` ¬\õåcù&¾ O ÄC,…oÀo¬:Óp¬°ÎƒE¢‡Âé7ÚŠf€]B~ƒZÒƒ¶m´/)¤Gá"JïÈ:™„2Ì¡W!ƒt ƒå³Ò9VP[È絤^òCªÂº^¾.Ý"sq<”ËO¥d,’«äÎò>“!Äše³h´Á#l?î‚ p ºR7z ÆÃÕ0·‹©d§ôU7°Þx oc0ÈÄ´x-î£8ÁAÌÄ">”×?ɤc¡3žÇõ˜Ž/ð=̳ÐÕØ {â¶ŒýÂúà`4b«xOþgûølÅ_]fvØìËŸ ‹–öZÒwé½%Ó,G›×Y¿X½oÃçÝŇ/LÞsÌbÚ¢O;'îà>8d]æÂk¹R¬‡{¤ûÆÓNž'ÞzÝöÿÂlDìä2þˆÃ±$ïØ îA­‚ûžî’`éwÜ+ËgyÄ„ô­%¹ZK-”v/Š,>[VQöoqhþÞ|ë’ ò¥Q¹é©JòèÔÌ<ÇÒpíäê¸ýšº´:û†OíÎå7ü[=®x´¦kixYa®i~÷RSýþÆø¦~ç6ºœ½UW …’˜ôß"4þþü…»ßo4¿ 9û¨|UQuö‡„øØOas¼'{Žy“?¿Î¤~\Õ³¼šè6? ˎɈ\x4¬s³ÂÙú£ ê§T È;Ü£óÔã·½>œô;w ùphÄÅ”óIºð¾Á~n~×½Ÿœš{ò‡«Ñþ·õô{GínçÐÓÑå6–†R ÔjŽD<© ‘úS‰WÏe¶ìQ—½™/OÆfz‹è©—dBŸƒ ~Aë ,ä#”=,˜ö1‘p6/{;OLðòzÈÀlä_h;¼Cÿ…[,W(CèNÙÏá} Â1°›á©èœöpSœ»Oý^’fìþß•(ªÙ¼ ¡Ÿ²JýÑÔØbýúÆ5ÉKÍ¿³m’,Â`XÉ=”ð¾"1Ð $‡ûÔ£Uä!˜/jm/V‹ ÒÎWi+™ 9ÔKð×’ô†&zª±Xå«*àÓùßèÌGð±¬çðl¶‰bÖ¸;àaðÄxRDoí1]>àX† ¢ëNB*­##™'™$쇖´3¬¦ô t€‹$ö€ 2™c$^%9ÄFÖ"b$· ô95ÀÕ´’Žƒýð?ôW"¹“©0”쑦™„HÏå´¥—‰©ÜŠ„ÈEr#€³ l˜ÂÖ‹ëŠ/:ŠÎcw`ø m¸1ç'X%Ü¢ubÞÍeîÌ‘…³Ï؃àoãqo¯c[©“dEŽB5+fyì!Æã<1 (…q=b­^|#o`°'xŠäLQލêTSÕŒwd#Äž„©Í,æw³`¾vîÓÅ&‹×[;-:”¿î½zí\Ë•U›m›êö4òhzËäû^ÊIfÿªïÎ µÙ¸Âwm×-}¶¸–ûߎyŸº3kpάì>™ÓŸgE½*Z‘q7îsäÅëÝÑþ™%öåª2R|H³L3¼ä~ÉÇü9é¹™J©‡6°Ò¤pø™‰I}“#³CJ «sjŽÕ6Õ8ët¶ºúe]Eýð:]yRѽ¬)Ù&…Wò[çêK¾ºùÖ56Ì8·¦q¾Î_ÛPþHó)CŽ^šá~:'?®>µñGãº~ù‘ñ¿íõ_|:àÅÉ cœ[Ý»nRÕÏüΉ)ËÜ_ù¶ ÙâÔó›÷¡¨Q9'´ãumµý5É9÷“"Üθ­ñèãuÌâÈÌê´·šè¬á'½?¸WŸ˜vrÝ© ®ßö[;õp¶u:ëxÐáúîœí›w2ݤ:!ˆKPÆôÞƒ™‚Zx»D?¡~ïÐ$x6AÊ‘XŠ+0€ÍÅ:hƒÅ¤£à× :ˆ”ÃÖZùÀ/ÁF^Ë)òA¶âuÔ°–|o¥Œã‰t\E;Ê–rRL†Ê_Á™˜c+Ðò4Ó“ê$³rA'oü“¡1¶_Ë•ÊߪÛ|·™zßÌ ÿ;¼Êª‹ù0ºt8‹Ü•ïa0ƦÌû£à3äòw”aª˜çñ;šižHsRK°’£¤Ñ°[aü‰=a8?§ŒWG(ì>Ú²?0ž…°hv‚ùÁcˆÀ‡ô3T ¶ÙáÒ *(%9FT2inÓc ºÃêAÇó 8GB¤KÒ}94‘™´Ad¶ëô:¹&¥Ëi‰2a’‡Éy Œ¦nrW2ƒèÈ}ú+5‡Z<ˆþp”í¡>&áô6ÊçŒÑ¤Tz(ËT¡ÇÉ<¹‰•¼¤íÒ-AÎ5„C¥já Awн´/P< và7¥»òû,Ö_FƱ&æ(¸çó ®ðkl!›É Y=¶Pnð1,nPC˜ÑøEdç·`[h¸XéM€¾‚´!›ýàÏøaž%Î=È,Î+ãZ®#ýH1Ú³»l†ò^Ì«êsfßLË-¥uc7~˜¿ÚBciº—ÚìÞxx¯‘ÇÈà Sýÿð4{ÃBy$W)¾¦Ùs¯¸pàpøÃœYÚ.uµ—ëlë÷é›uöõ ΆÔfk“Š\s\ϸ§isfÏ) -ŠÐÕ*èS4¢Ì3ÿeúÅÇòNº;z'íMDÎÏìkùKiÛV}«þ¡û¡?¡¯)[SÙ²reiC^SòŒ¤»)ÎÙ!¹Óè™ï%/«lköÔýu¶¹ÖO·f¿îI-©ŠÉ{­©©xR¹GÛBûªìKi÷2ßD ˜àíì³×ÿ©WçãÙ‹ƒ\ò,+zÖWELË"’Oø žîyß}¿cÆíŽÚtA]ZcEÃÛì¯Á}Ç{7zâjL—ˉ ºòfü•ô¤cHC7VÌóúEo.RYAÓ&¥^ik¾Ú²Ê¢Ì"×BeÞdqÒiòþ‡s?/b.‰NöÄÉTEï G¹(råwñó6|+\.îÁKž!˜<˜S–á )ˆncoéBzž:³6‚p¸+ØèÛ•¡¼ Û‰ZÌ¥Ñ[°l98ŠgÉøŒâtzHdÆò-y±ü×œÑÆggˆ5¾²fÜŠ‚«ô¹JžËÉrWáam¡5™G|‘¢&^R¼ÜÁ¸¿‰ä+ûÃdÑ'ޤ³HéÅÂòü¡3üìI§Ða$ŠWóÈãr:'VC ä%r¼ÔÅ$Öh´Ô$ß”ɾ”¢>Ù6™´¥§(´Þ9“Å0îËžƒ S¸ ECÁ)q¤Š/g®l9ëÀã%lÃÀfr†l¢]àŒÂ‰x.QOY"íA+ö¢/Ñ0WüT£TÞŠ;ˆãØ6‘øí±?ÛÀ>‚ªú«Z°$<ÆÆ³]–âV Ê0ŸköZ‰Q­TT÷Q6í8¿»m]ƒý¼å*óQªéj#Ó YÞœŸ¶¾Àùi@Xjnõ³pnIÓ÷¦ÐÆOõÌÎõ8_vn|ÃhÝëŠg¥´tjy‹R—üù¹#s½sþÖä•.ÚŸX´­¼°f·NU9RÓ;çqÆ€ÜDMŸ ÷ʼJue`9”¼/YP,•˜k6gK 9S“»®4¥pZÒ䨒ìÎZw}]ÝÞúüÚúº¿j»×Ö©ð©¾^ߤ·×JVÙûRBb¶„šú¦yOö©ò›áwržßŒèî9éåïÊÎ\.˜X8"ágT÷ØC‰‰CÃ;ùyk’ÿªx_3_×G—unÅ­¨¢åó£·E|ˆøàwÀM}²U¸Uî–Š·yÑñ—bãbFÇ$EO šyô”óÚƒ…v»lÜyq­ÍâUÊÞ‚’‹¸ŸŒÂ3ôû ÷ÁfñK˜)¼ÃW‰©‡@\¨¬ä+•„¹= cï…‹äË?¥4êÃ`-[…x·²)JmR½$W¤ßÀU/’£“мöBEÂLÈnú 2DZZBkñ!fB: ôÙB·cƒ©ê”je¢™£ÊÍâ£Ã´ÑvŸ7(ÿ˜ÉÖÓ¶mÞ¡X´Rr±?ÝLÛÒ§¢R9©†aÊZAÝ hGjE%´ar¼Š›L˜udyò¸ ßèÒ‚’eè‰1‰ìµ€í,ìÎ’T§¹“H¢hÀ,Øtôbeì!Îâ˜-‚$\&Ò.“ïòFÑ=Ï¥u$þ‚¶,\øÔ5M™Ü@VP]D¼#g‘ê%¬ÉVM7?ÙVÞ$MZÊݤ=yD¶CK´c¥<ŸõÇ(Aº¿…î€îQOç’zƒõ¸ËÀ˜N&Ö”ˆ×zBm&Öd Cái x/žN…öp‡ÎÀÖ"§ç‹5Ó…ïQmáð-î¶öý…ÿ}µBëq'NÇÍÂË¥ò7Ò™ºÂia†1dµdHºŠé!±ÍÊ3Õ8uå_6’·`ÅTÉCV÷Íy{> ›ÙÅ`½ùF¶‹õå! —/I=h3ØÂIòANòÈ+yç“ÌÌÍžZÒ¹ëÍ’Í[Ì™·f‘©mØÖšcc‚æF”§ü«}ß8§É¢ñxƒAÝx}ÏÚÐúõg4¬ª«Ëª~QݻڲâGᔜIoÒò——½.M)ê]\ÖK»®òß’)ù/Ó¦§¸¦OÏu._•Tµ¥âkÉVMP±’÷=Õ0é`Fi^œÆ¢Ü·’—ÎÌn›¦/[X¿¸áTCŒþEÍ]z ©ºSѯâ@%©þYóI»¯h|¦A¬e𫀸ðÇaOƒ¶…O‹ŒŠŠ¨›½5i_Þ†Ü]ib»3Űx{^¿x߸Õñéý‹=Ë¯Õ ªÙVq¡((ûmldÌ‚3õY·ãÂý_žÚæ9зEìÉW"·F =]û$²C ‡ÛÔ¯†8ØѾóª&S{4£Ïp ü~…tX Îø®È/q²‰Mä×± ÌfWÉnÊ¥’%šrõ^¢ªÜÜrý¯ëøÊ±, PVX[ Žò2ƒ¾ W˜¸ñhn£˜ªv(â'ÊÈcÈÁî Ŭÿ[pë=‰{°Z@4½M‡ñã÷ËéV‰ã“yökqYòå.eý4™9kâî™bšjš:(xiÇŠûesJ7TŸÔéô‰µ«uãªÓ*^VŽ®\WY ]Y3¢jš~JITÁ»Tÿøýá±ANÑžK#—eÅå]NÅÐ6¯ƒG¦NËï“ùåLL’ALS\h~ï4èӡßâÂsn–®©£=_ß®á[–IÔÜð!1×Sç÷NbëÓÕó”{÷SÚÀ®a)#ƒãƒÀO]v3;<Áy´ó¤Covuìgÿhsûï/Zr2ñQ¶›T 冼;î)jþÁú*ùh\U!LÀ„[’¹äº°jÃhÝ'jºì¢_àÖ Õô<Ü’w‰gcp9ä 7ê«|e3Økt$‰‚rµüYv§.hCŸÓ=ô' ¡'¤ùèü ’Z°‰æÊL%mLœä^¤™¾†|¼I-åž´FÙÌõ"ã<£=àd6ù]T[•Ü'+éjÖ’F3ú?ù1±!¥hÄk˜Dþs3_¶†âð<]‹ž4ŠJ‚´à}GZ’Oä=+œm)5…¶Xe+ &Wˆ‡!û)lî5obÛp$ü¤Ã`¦˜å…ò%ÒîlJ¥m»º’2y5̇h M—{S{ù±Å ‘ÑL‘{gafRN»šœ§Ibk\E¿Êă&Ÿ¨ãUP+(WI­`,ÁAËD:‡T”ÐìÈ]R-ºòfü€ÒUm ¾ÎŸ£ì¡·EÆ«„øNpì<|Å*æÌ—ªž)*î$¦g /2‚HMÒf²^@Œ £èÂHkò•¾kq̨'IÄ”¬åT°²àË¢ÌNSúT¾#Ÿ"]è*ðƒ^h÷è-xMLÀöDÙ§ŠUvð~ÿý?á.æPé–QW£GÆ&Æžôªî¦|Þ‹ÕnöÕv°e·Ø=Ü¿³Û?|FMÖdåiVj³ôjKuxõøšGºiuµ#t÷jZé$]ºþvýï6†70}yùžÂ°¿‚º"§’ñ…&y!9¯Ò3ŽFw K žÜ)\‰þ#±sVU±mÙtMC‘Uö ´ñi±} l«´ºcúí5UÛª]*½+?”¿-ýV¼(÷²&¥"¬ú‚.]·ºØ>uaBF¼mÌ›°öañ‘‘Ö±¿œ)]ê—gÕ6üŸØþ)+ ü³›·ÄuŽöKPÐ3kÅéÛa×—D;äÌ)™Sþ¬²±ôdbnäð(¯Ä YšÜIm}nº…µuO8uØ'æÄ…ã=\×ùæ|Óuûp÷f÷îCŽ•íƒ˜3«âk±{HD‡›¸’+Ô Œå²F¾ 9­I?ÚVr£[Ø<¥Èö°’µeXæ‚£™>€=þÅî‹Ï!œuùBoˆ»%œË†¤›<ƒaØgCWêI LZ2–º“¶ä#±Ã}‚·¨éR9Xj–k$ëd?: ¼E×½'ƒE@1©¢ð.teSá¢pÃ-bzÓiØBÔtœXµƒ°; :^8ö4‘f_Ó³4Ÿ^ Ù"]vcG°KÁÎhçñ+[ 7ű4”ŒŸ5ƒ|'CÄ÷lÉ,a¿bKÑ;)ж’‹t— –,®Ì[v”ÈÏå«&isü¥)ê´%]-—°Ã0G¾(×R1/ÚCˆ ܃ ½pèvØž7ò¹ŠÄcµ¼ï óÈù¾ÉÙ3+¦ž4:`Öu]¿}?Ž^ð²ówð?ê³5à{¨gè÷€>nÞáÁ7âÛå¿/;\y¸"¹²Y»ºz²~R½aÃäÚ5Eºµë nÔûÖ­Õ‡UtÑÄåÅäÕdmÏR—ÇgÇ[ÆOŽ6 üzªèdÎÉ=Gžî³q¶<>Ü+Äß=|eôäV%åŸ >'ï?=0u±&¤vyÓ®ú:­AqRÁµ&.óqJuꪌâÒ:çÚW:Ÿ²º”ÒвÐó,Ò:|Aèù ú°’xŸœ9Åå¡Y^qK#;$}O[‘·#W“âq3®KÎȲ8Myô.ßÇ>?£ãÃL¦Æ=º#%uÈ1*s¯¼Z諌ò¨9jçñÆí”ë‹C[œ½ÛÉ"éâ z¿òöh׌…—u±¢s&0:QVk|]äú‹ì"ª5˜t"?M†H}Œ‘)ÔOàÿÿÿ™wXYÛÆ±­®‹««î*ꮽ»Š˜žÌ©3 MË**bWl(VÞ„žz-!@è`[Q×^ðU×Þ]\]û7ß¹®™\™sfÎyîç¾96Â5H@ìp$Ò¢MÐÌ„¼£ßñº—ZÓÅàÙÌ:’ úœªZÎuÓËp.~Z‚µÀï@6L'0ÈOÃ&šqƒ÷°-]E³‰+½B¿²[©U²=è$ꇎ¡¾ä-íÀ‘°ú¡Xƒ×ã,|iÁ¹†y„ª‘™†à‘8áwL°)ð ŒB‘°Þ–€—òff@Ì&0i¡棯ð\þ¯â+³ȘûÌ,H‰If\å§¥=ò`æ¸ü‹ì¸»®ËÔT¾6çy:Ìx“y#Å*Nîšœ»s¥ÏÎ]}öìòk ò9”ÝP¹ÄˆÊ—8eÉirjWuµ¼bþµ¢¡$¼üq¹WáÝx½K±ª¶¼ÃµCZ{§êLrLœ_Š>}OV\nz†WÊ]šþQÕoZoS9:ïI¶KÁˆŠ†ºOÕΩÎIß2.ê/Çb³E—›°x§øéñ_7Ǽ‰‰ÏØ\º«¡ª~n£C£ª¤1åjxth걪CÇ‚6ïkß¿&hndJœ½zo¢.á~BxBxŒ[@“Ï_¡—çúý[ÜU‹ÑZû¾¨J*:/‚:êA“‡Ê÷O¤Dá¸7k+qy‚Ý %vl"{@éIRˆ¹‡ÝaÎÅ=Ô—:ÐYÊ>¬G‘d .&¨;ù†°êÇôìDöû+{oƒç€¬`ûâKô9öÇî YKûÓ¿ÈS2ŸŒÂ,HD]p*þ_CÑEìOnÑ4ËðøXŠí‘/² O´aêACñ~øÛÊöúPñTCF±KYÊÚcZ ¢›PËðyÒETx,åð#ô~‘°bÏÓzƒ¾&Óñò˜Xà\˜ÅèW¾âzãUH ß ýXŠè Æ' @Y„ÿ +ðVœÀëÙöF#Пø7èÃŒVL‘ )}˜¥Š×Š`´bcd¬¡xÿFmȺƒ¾ð, íȃ`jB¯—AÌÀ»ñ ’L|Hz Th: þ„sQoy¦ÈZü³t‘â°ÂGQ%_!_-/…ˆ–ˆúΛ1××îËñÞÿfÍÇr§,¶Zä ,¶-w3qd&}Â> A´7>‰Î𵿕WÜlCê±wòž1œ×@ gͺÑÄ•£ êÆ…pÇèÕ$²†ùž8<Ä;É-bE¯âý4ŽªiëAϰI΂öÌ^ÙïèXC¢±¢XHÄø :Gâ‘? ïÉT|Ï$V¬Œ!¿a½Mfq}Ø·dú„Ð`ÞñFAù‰´ànäŠíèGú;ÛÀ&ƒˆ‘K¾#©àm4­A¥¨ƒq¶ ,†h&ú¬U$3OyÇ!hܺ‘'a1j‡Çnà0†ØŠ\б¨Ùñn:›_aG4Ÿ?v)P€N*žIêÅ›ÅÞ’õòV™³ìÌ[â)š-^-ýNœ)è%úIl%TŠÂÄ…B… Ô®bî;i^×ÜE™’ÉÒ~ò±òÅa~…¥|7û m%*êCþÂ#Q8ÿl{á;øœöb÷¸Ù~°k®S5¿[»ø{x-Ȇ<ã=®ž‰fá™ô]O‡ÐÙÔŠÊh9ÖJ_KE %ér ÁWÙ‘W\ü<œ¼ ÷] HªËÜžWfW·´i‚ex-îH>–ZÚZ=Ù´Ôt¨Ò¡´§ô]u…ù®eXÓ¤h4ŸoªhÜP¯6O1ö­°®¼P³%µulûôösÏ 6ņ{ÕÎebí¬ø‹1²¤8Íâ$}úsíy­­niyEM/óŽRN—ì•S´Òü®õtÛÒeÃåÖæöðÖ)ÍïKÍó‹&äü’ó![¢¥ ;BOF©R¶¦Çä=¨žPCõC3Cô×Jl 準âšMu#«Ì•ñ ý[»LûŠéî§­Ì©oȨ÷Ó]תu3*2‡+>šõ8£)Ã=glþòe^pîÀŒSšõ^õݘ±‘¯_ð¡Sû&öMy¤ñONOÉK.5QÒù˜vÔÛÇèÐãü§¼B:O°^´]2Ï›_lÃ&(­Ù8ZŒâð¿h5ϧ“jÊÐ8¬#€ÊmâzÑ>4¼…ÓIjŠÊHß³ž¨ƒ ¯H=é|„&jv1ªÍž`¿âáÊoì¢Ã à1 ®AC¸n|€O2þh_x>Hþ@Q$C¹Ž˜ùÄÇq—è*ü/$iÄÀvWnnAŸGÚñ&ÌawJÀNò–ÅŨ~Už&f|ï˜ï ŸèR‹¯€ð&rÁ‹HYBsI%ìŸh4·‚¸QWR„¯’4ºš\#uônŸÃŒaôŸ'ÕhܯÀghÐ_ÐR¾s"®P=à4€ìfGÐßÈf܃á4xYa6À`æ1c`¤ Hq ΨàrÄ‚§€ãQ)¾CÂP8J øF¾g=欸‡t3¿ªf¸Vb{<†_k9'ÿ6l7 €\Ðvé>aÛ¼s˜g”¿ ‚…çéì~M—<UŠýE:É\i½ø„ø¤x†x•x¸èŒð¼ÐWX2o“¨LpE -í}ÕŠoŠgÉ/˜Âá ä¶*>Ê*  EÖКɆB•­êv3IE3øÜxÂEÐ]ýà"ìŸãÞô,Яô)kb‘§ŒBþÁÿÃo”}ìNN6Kÿó9>äæ§Óݵ¬Cº턬ïKúä9æ¾(n/#yK²²¥ú‘¹½óì úešSo¤áÌ =ûöEÃx©æE’,qV’1Á¨¾¿;±1Rrí+ß½Ñÿæ‘¿ö]XQàr–nlÛË~BäÜÂI 箜ÆZ³ÏÐ:¸Ýæ3ÇM”ÀÎdû«‚`()VmS^Äù|¶Ÿƒ è>êÁ+¨†öUžbº CÑFðŠß—n:U•Ü¿äÛ—ö¢£hYƒQ5 @½±~Œu´€÷©÷8ž0Øšˆ|?€Bâ¯ÜH-ôšOwÒÃØŸ¥ÅÊÑÊpj«’ÛTÀ³/ÿmv&ßáx:žO’¸é4‚VáOpZ‡¼q ™H6`¹G4x0ÞíI w•Χ¹ì9ú‰œ ÏéEö.)$Nü C©ýƒ=É;À6ÞUía-':Tƒ ñW¶Õ¡½d¾Ä;Å\ÒšÀ>t-ÇUt·ŒÎ'ÉwÈ]C-püå‹áxV1›É×Àè0ºSdŽÌ¦<ãa¶¢a¬„¼&ß)/sÇéU6Íá=^F˜…jÄð#vâ•8@Ù| w—NÁ]Á.¡FxG8Aè,|(J˜…Œ8G¬íÞ´z_ßøúU}ê´n- mNÒ+;ÝZLScpÛ€&m͈º?›.[æ‹J>doÈ>‘÷¥ð§’'%¯K.L5ë_¶hÚk;¶ljm$ñ }ê>Ô]µ i5ˆÌkz×l©ÑÔ´VUÝ©ô¬Þmö³m m®lòm˜Qý)瀶&}rV­~¯Þ*ˬ¿[¼Ñt­5±ùl“Kóg‹Ù®i„á£/C®EŠ“ìRUÚyçk2*}òßgº&ø$ÎÚU~Öx¤æûüúÔ‚Å•7ê76ܯU™¸œŽÄîø-é]º€¬QY{³[ËÆ4Äß{—©Ù¡9•0*é²Ú5a‹zP\aLó±ÑæîWïËØ+öKZvÅcÁê׎Ÿå¯™-¢n;;Û!Ù~ 玆Ò8^Qbž3üØò;_¯ÉôhQ”}l{BF¥>¿+îµWTSØä°%Gâ<y4~›ÇF¸uÏþœÝGW¨)ï)w  öK9ªÄ*1WÃ6BG°ÈH67•ÏW"n;.âŽr'I~ŒœñEô {³ç¸Áœ ­ä-=®“–Uýªr§cÉE6…/Ãt|\ b¦ ¬…*ôZþOqc°+Ó¡d ‰â?Ïù®šŒH&ÆîUÞ§‡h#õ%2ZHÃi?.”÷“oП¼%±Ð Åð¹FŽèŸ ÛqOù‰$ž¨ØB®–÷#i!xŸ+á~¦.Ø™íb}Tõ4‚°œ3Dz5ìxÚųU.\K«ÉHr›]Æ1Üuú”Ϧ»áhüúÿßáaäçýæO¸ ££È|oÁ/ðrlË+ãσ 4–ý^Ù>B)L<ƒ@Bð¸…>ëì`š@Yì ÆƒIà"8¾Àh~@·Ñvte£ýxrãâX-ù­!·àØ…D¸M@öüœÎÈ™âZ,?%ó”ʤ%;ÉÿÄûEO…×D]â,ÑkÑ ÁéyçÅ­’=ÒÇòí ûJ£¥¡â"³pï¼[‚áâÿ‡ŸDÇÄ—ÄÃ$_%¥Òþ²Ÿe÷¥!’[âÙGyóA^-©“Mæ½¹XÑ(ÓKoH’%ñ + ìñ¯ØBè†vó>®Æ^<³6â×$žn¦ŸÙSÊÙ ÿÙÓ÷(éDö`>[Åó¹ª8+ºPP¼¹dPÅájR‹,‡š#Úü›>ÖÐJyÝÇ–åÍem¶ó[_Ö ,Ù£É {q#úPĸ¨ µ}ºKµ¸ÎʼܼÇÔ«ö³ÜüдÈp-§NW§k*²³¤7ߨÉ0üZþOÁÀ¼¨l,_m`ºw§·-9S2­rŸ3ß×ö3®(ß”SRPšs;ëNÁÚóÍõ-†ö¤Öõ¦a%‡2û¤ŒË<•õ›Ö’²&-1clùàÚ–ºÁuÏ*ºô¯5»’¯k·äw™.× ÉÍOìïŸ<¶p]åðʉ6%µYEºà¿*ÊtÙ?éãsîÞš 5ÞY/Ó.¤¬OÜ­9—pMm£ùâ’¬N ÐŒIiHßÓ7¬;øÇ°Œ°¶ÈG‘ ¢—D/ŒXöâø˜ƒqûÖí<꛽jº{Þ¢q‹à²y®¿Î¯q|oÚq·C¸ýQ‡3~vîïää0”[Ëý…ï±³è*ö‚Ö*‡«žªÞÒK¼7MSn"{Y¹•»§úÉ~Wʳ‘~ì6ú?Öš^#!°%0Íøñ…©Ä†g¶ÞÑ|y—ZF¤ø ®å•µ’Ï|à@å{¼ Ïâ™j'ͤݤ…ßá::‰¯øHúçâuÄ™”¡7t1©â¤ŒB‡™(.C¨g“vÎ.çNø)W“@êMŸòÚíæN³ºU¨¼Øt1êÞ AØ ßày±‰&Rg®†jðK| ÇßP´•x"¯l%B.ñú]Eµdþ›¯À$¯¡fà¬á4:ƒÉà{@‘,Aó¡- Ä1ÜH.Ÿ&M¨ þ 4Ã]x¥y xð}ä󚽄Ï@œ„mH/þlïêïÐz~NA²È=4ÀFÀ2… Åù"i?I€džè‚x‚䉨K2GþF±\±`:Ÿ{Ã(E °(˜3ò!Ò ’eR7a´ð¥ä¶dì°T,qÕ§& ® ® ÇÊß‚N¸Ulå{àp¨…ŸÁÏ`ðaIƒd£+0Žw¸¡x~¢MHŠû“©|‡ "³ø= eÏ)CU‰®{ü½Ò‡åM(ô/=•ö5~ÄÑI×3ÄyÓ‹v´æMÌ×xWž«nØ‘»S»FŸj í 'ov<¨Û“‘Øõ-¶;I­ñO·Êú¡À¯=½-¸îoÓŽê“·åLýßåGôš,µ¯Æ7Ƕ) uñlyhAtzÿÔ[)g’rã Q=±å© æçˆóµ†¹Æàªe~y+t}³eíÑ­Ó{•߬³nÊh]ÜúÑ\bX˜“£ÿ-g\Qw£Cµ§s2 ,å¿W Ë\ôÃ3Æh™uŽžÉÞ—9".$Ö+E]xªffíçŠæ²eveNUÐèY*Ö3¾¤oË(H7gœN¥9”T›¸8©@ó2Iç{/úNŒ%ZÓ”“L±ÂàDÿ©A>ÂC+ŽdÜý謃[n ë³sõ4×·ÎjçMN¾Ž›xu;ìpüì0ÙÑÛ¡ÞÞÛ!eþœE[æw-œètMõÚ~¦ÓdUw—«`×⽑5¼ÀÐŽ£Sð‰ü¾| ÞãO 3žgÛhY Í ÿc×p«yÞ¨žh ¯«ehô†‹A”„Ðä‚þ…‰Ìiæ%¼vˆ <¸ª´Cîp2\)ü[4=?À0f˜|¬·üŒüù÷Œ7X6 ñp&Ü|@!ôéü¸-`$è¶1øÊ9Þÿî2—¡Æ+±E²•'=±Ø—Ïš€iPË­ä5ŠÇ Gfx©ø‘ùRÀùYÅ8°š'QòCoñ#’ˆP,’¢*”ËÓïK¾ï>VU;Éí·;.[÷‹ÿ†Õ?üÜÁ€S‡z…Tg¦ïÒ2Úv­mJxì‹x£vSÑØL›Xe¥NÈvmzÒšcrÍKL^ž±@Cu?ëŸjƒ²3ŠçÕµ´¼ošnÙ`þÏ]?Àü>ûyê°¤Hõþ”ÙeNEÎZû´Pµ>v`"ÖŠ_1.Ô-²O¢!#O÷W™OµÅt»2°ˆÍw*Ûh8Yø»îc¦U^QÕ3Ó„ú¹­3›&WmÊŸ–³¾àT—û&Ç6»Tç•~&­¿öMÖ|ýq}_½]^wÙÆÒÅaºåI¶©îÚÝ€ò<ã–êý²2Ã’ZÇ:»}fòÓTÛa¢uü‰8‘úLºx«ø7‰Jwòïš§êûÑmQ 13ã~TKR]’¼BÒ÷Æû¶ø†yEûDì‚»c·œÛÚÇçmã\æPÌŸQÓ%ªGöËm~rŽpªwdœ¶.hrøhÿØa¨C…sæ‚NoíkT‡9t84Ù¿còJ¹€&Q1›ÍÀÉtò#þ‘F“9ìTöNÿ$=Љk¤+Xwä†gátü ‡’Jð±Bit%:D'(/1ßAs™%ø*l@64‰ú`¾KÖq&¼›œŸ˜«ÜbòÛL«p/žk±?ïEeèz‰„°#É\>G~ãÝpYF®3ÁøŠÄB iõ ÏH#¼GR‰]ÈîÒSüÙz‚z+«ÙÿèdU {ˆÄZÈc\ˆÂàU˜‰HtTO~`SHjx’ËD‚Zöp1ö#ó¨;ê sà/x1€P¾ú߀=p ¬€nÐ ¼ãÐ$8Z.`Œ†5°LAëñ8|`cÙßÉÿÿ#÷<'‡qZ§ÀEpZF¢{ø_hƒG EÌ~Íÿf#ÏKIàï;Ÿÿÿÿ˜…CSûÃÆ¯íµ¯Š­ØÞß5P¯ÁvηÏÙ(`¡ˆ˜X(¢‚…Š Ø 6:ÒŒÁh»ÅÄ»õÚ¾çýξ'žø<›sàQP2ÀmÐÇc]ZÜ;óyü{¸ÝE"ú Ÿ ¿ñjø üä=ødy¡,› ápP¾…kí‘Á4©ðP€º xÿ!ÿ${*{m}MžÃ·ã÷q‹¹­üzN#ÿÈÝ’Í”O>Ïu‡çá ü7Ù€½q ɦ¡t*IÁ‡ðyÌè2¶Eø$̵ûî`iûMèf#ŸÙÝñÙl/Ç¶Ž¯Ö9r%2%F?7¾kllŒ\=>ðfȈ„ú„!‡¯löÞa¿ïŸô_¹º¯ZEˆéXÛˆçqõIi3Ò[믧=Èñ-±­t¬J/9¥ïßµN¯ŽRwQ·Šb±öš¾¡ëŽY¾}°GÈè‹Mô°ˆƒÇÇßþÒ*ziþFÓ¬š¾¦]™íR‡‚Êkåó_§|ÖÙës2Ó²Úä*xšû,cMêâôñY ôëR.êꬒí`lßxÇäœäʼn5éO{+zW”äŽsѯÊ<˜×’ù9£Cæ¢Ìφ¶¹ã ³‹–§_Lü¤}§™§=¥ÁÚë‡ÔÁa+Â>„…«G®ÓTkVFŽ=^ytãÑ Ž] ¿£YøjÛÏ·¶­¶[S°áÉÊ®‹®ÏŸåzt™Í¼}6]™-Xˆ¢ÍsÑv“í›v¥3¬µ¶ ›3v‡çêg}ŸÓe¶Îf›]¾ò»Ã [™*Åæo…?]*V ù"ªBæVÂ>$™üI;áZþ:MÑ#{Î\Ø6–‹BýX7a¯àF cJgòÅ¡ÕXG†²|êD"ÐlMÜè0˜‡r–Þ P'„É9,ÜHÊÈRM-Y¢xŽÄ ÏÆ!ÓwÌ5s˜ ýL&±; Ť‘áh.n„½ñôû4:Eè…&Ò'¸^ÑU,TÜdÅ 6†ÜC+x[<œ¬%ã„©LGÑ—Ä„Ýñ"|ãß\zƒ'Iú®ƒ+Öá~¸s‘;1´5Yˆ:¢ÚHîÁbP‚êqo¼ îÀ–d&Kädý—LÁÕ@ÓõôoÒŽÝe%¸†o$WÍàSùÛ`(j—¡xä†mÈA<o@&Éi©ð?¾x:ðž¡5 "ø| òø¼Œwç.pA p·@”Êå¯eÞÜ]^Ïu;Ê“ø{|W ­Àðnƒ§¸*yW~xùi`oä¢ÁD°“ñà…¬ÐEx€_† [ĉÌA£q{Rƒ¿¢×0ÿKVáyd½KÝéN%Æ jz†œ'³Hg:†þ$^v›{…ŽTOа 2S…ÜÕ<0ÌOZqè°÷ÏÕL>^‘Ç’Æ'Nˆ_?TWkðN×f:”-Ú–{+çGþôRÑ¢€&æE¼ ¤nÔv¾9YsB;D½ñø‡Çf û#éWÎì¢÷y I÷Âû0ù“ä+eLOË"³$}L½Yq§6fÖ´äûéÞ%ÝJÒ5ejÊ€Ô³Y‹òÿ(ø•ËgÅê§¥úfZ%¿‹{÷0öF\»LóÞÊOf'“Cn]^—`Œ/XžÓE“:½À­ÀâÄÈ%éÃãçD$h¾†õŽH޼©­SÿO½F=/òlä¯È)ÚÕñ5É¥ ›¢ÇF¯ˆ¬=¢½®éÜj÷?þ+‚–¼r×Ìûf«µùŸê¾ÝBû vÿ¨J©Ÿ°PH•;ÄÕ,³ùO%·Í°hûcf¢íäWìÏîe'·uRzØ„©¼U—”'TQÂ$aƒXÈV Ϊ=â.åo{ÐÝÄFÉg¢|@¿Q¤ØF …'ì:§Ît³ /ˆ-Ž!ö䧤¬JÔŽ‰Ì›<þ4…¨éD²Žì@›ás0‘†&3ô§4ÛJ'›$’–’6—Ú±+ô›GâxâG‡SK!œé„OÌGì#ü¤ŒúŠChíÏŽS„ ÐNÒÆaØÌQô§-øÎÙŒW<w C”ÛÄ|a1…8 -!s‰‡XÆ:-xú!å@8‰!¿ð9|ƒüGr$wÌF‹Ðü E/I[ò çnì%Ó‹Ž,ßC3°oF]xW‡N¡è1šÌžkfKº 78 ½ÄP=kE{’¿é'¼eÁð:¸Úó@Z4®gà-¸u…“Á@´ø‚\¸‹ç@ Fù@͹y[Þ:È‚¹>R×¹Éù þð†`(øÀçK5EŽø/à# †_åíå?¸«|%o;À)Ø Íò[œ?„oŒàÿ›^üÞN€Íàì+=Ó0r†ÎÆv  |‡Éò’²Ô“xã¿p‰ô•Â(\O,Éuœ‡¢ìN»³¿™† ñt8žôœ™æÚsuѪ7nŽË}–]õÈöK:ö;ê“:i÷§Í^W¶ÍðkÖ8i½£FŶJ|•“k\o¶7.”édèUžUüGùÚâÂì׆3©Ò3²Ÿd JQ&ç'o‰]e£éö¯V•¬,8S·°¦$Û^£Ýo»«Gö¯b®dl†!nr4J}Y‘rú¿Œ†5z˜Rã}“Vé:¤çÖ”±âî¹ÿè{¦¼J“Ýœ3%#4)*ÖEó3Ò6Æ+çréêòjã¸Ò»¥Ï úæ­)x[V€ ?V”8÷(|[dÌ¿ŸvK·3Á5úZÄ_ѽ´~¤1iÚ„¨?.ëå,Ï4bÒõž)¦$œhë±½ëòÞ2v…-¨U,·»àfÆ8ÞŸÑJ5BÌgßè…=&ª˜r¥+8ˆó”ok•T‰ÊÍ6@e°1)û)³”?ÄNŠ»ªçJ­H©†YRû.D‰/…Ó$EJó¥dÍ#WÈB¶ŸlQè„—¤;É– zá•0eÑžYÇéUð èŒÒ“øµâ,ù}=ăø òÄ÷¡\Êú4•ñx1ÙI¢˜>DŸÑ:„¾¤èö$½Ø[VE7 wØi:¼£÷I˜ôÕW –¬›äÅF|žŒ£}éÚWœD~‘S¨ˆ(+ê‹uèT†Ï’rÁGØ x*ž /Ùá‚PÂ}° –ñøálÝÌ& ¿éA@‡³1l0ÝBÉ“0-YúïÅ.x?|ˆ:x))v‘1Â{ª`et¼p‚^Çm°ŒE–0vÅ]HK+pkÔÌÉ¥+ÊqÝJáCĉv#³á]~# @+u\!ØÌ?•§ÊšÁ/”ƒ œ Ü`Ò ½`=ül‚÷ÑØÀËyÂ-xq+Äo²/óã[$—šá(ñøP‘ü*¹ï ?§à4¿GüEîœüèäp¼šäýùÿ`¸€§ù&þ5ØbxGð øÃ Xо)Ä˰ý áF:u’R‹*ìNn! x>%1´™¡Å¤‘”²§l°ðM°fóië$vRnWqª™â4A£è­ÒÌpw]¼áÊv¯€¢}ÞÿnöÚ=åP¯ÐÉ‘á¶!EÁsƒ“ÂÖ¤·©>Õèlîœq$Ú"~qæë"sErõìšæm5¿jzÕu­{fêS~ºÌ¡Ô²x[þ¾ìŽz—ÄK Ë ­Nx”Ý+j«ŠVEÊÔo2?ewÌy“¼!¢,|SÊɪÑ5AENúË $¹ÚðÚ0Mÿ2µF_¡ÏI˜y=Í6ÅV÷.+uKú^ÃcÃ)$©M¢[ìüL7ãêÊ æ‹UíÌæŽUõÆ}Æ3fSýó_ÓæòÅû ÷¯(U—ô- Í[“1A{*j¬fmÔ})=Ä×fg2Ÿ¼3þ—¥Ìè”Ù˜¡Õ¿ŠoŒ)WûÊòoíuý©elíG· åªå#]ÏXÌq8­¤Ýév‰¸’ä+N@=q_bF×ñw<šðÂGÅ…ƒ˜¦°Wö±qSf*N#E+j&‹˜œuRDŠKEOᬔáÏÁ1¢bÞT.Èèmê$d°]¬ž”±Bö]Œ¡¹d±¤ÇHþ"ji/6dÂÿ ¬ÇÛ±’ ‡™pZA6IÚ¾Ž¦’÷p’PC¿’㨅ÐdrKb¾¬•Ø^,¢W`Wj‰^°@| †á:’@ÂYíʦ6ô-úˆk$2¬–4Þö–ò`/^@Âñ”DZP ¾‹î*G±=[O£ á5Ñu’Ê}°@Ãè fÅÊpGjÅ~Š×”â_ ®#*HJÉGìOz“ÞðºFdt M¦­èTtÇ 6ÌWÙ]щTà˜“Ô_ǃ Ø¡MÈ;I4ç‚Íd<³"ëÉÒHÿ Aè?œK`?T|@^Á©y+xÍUà삮‘è~Š,ðj4½…àqÀ  éƒnƒ:~Œl<·v¿å¹²y"§æ¶rCø:î<–(üŽƒ+A2·†3ñ}Ñä ª¥îj røh.‹[Êßâê9KøŽ“ȳD:š&Qü¸µ#ÉOl‹°!£ñpÔ€%ö@kÀþ؂¤w }“¾Ñ@Vņ ©âpI l™½Þ)`–qÆ»q3êì«÷ζâ˜gâ¶Ú½çýºín}¤u˜Sèœã;B··¬>ä±>ÿr}U£©ê`útͳ¨}†êÂg¦ÌškõžjwîÌ…Q?žzÜгÎXÝ·vLÝèºù• &åûœ°Î¼;¦4¢F}2j£î¦¡}Æ\^w&‡>ÃEå}Š—v1!(©,kVÁÌ£ó3lÒŠõ).ñg£¿Ç®K,Õ9ê€ÁE¿'ÅW·E—”ý&/¥,ÆRö©|µÉÞ4¡²{%4ÛÔªž]ådZ_\âRâR–UÖ¹ädÕocVÒ݈ÙêNêÞá7cþsŠ÷M©Ji¥»H:à´” !#aWÞïÿ{–ç/ƒ4iã=DÅhé,D0¡¿8Bém·yN—%žC<š×do¸´Å~G˜÷?îÎ+üÝýJö§8íÙz(S»®.¹>ïÔ³3ŸOºÕ­-¨]Qÿ¤Áûä„SsjÃŒ­NÌ3XÆ»«=Â"Î%Ès?¶.ñJIÒö9«ÛžÕ!§4wD¾uæøätÝïÜŠ"±hxÞ®Ìó©«u1Ë"çjîÅd&nMê•ú8³[QÿÂýŲ²µå©Eñ%Ù¥cÊÓŒÃM‹Í²Ê4shõ‡êe•Íe•U3Íáæ¦Y¦IåãªÏ—Çdhã"‚´Î±Õq²D›¤3Is“Š“.$Z&ÝNlJ¾§ë­»žä—Ð3Î#æß„M)‰)»G¬Ë8²ðè±c{Z·ï—ÇÚ"WGÕ*öŸÍ} òcIÂ<&Dq€à œdÎÂOiI_ÀrôMJ¿cØ—5(ÖÙ4)ª[+Tm”‡W”¶¶l†Ön©³ª¯L5T9_œËöÚêXÜàþ8¶EK„)8õ! è0ü™ :ˆ¹bZ†sàkREƒ¤ôü)Ñ% O± F4ŠüI—²%ô 9|p,ö\.±Æ-øéÈ™DDR&5ÎOÉWoá*²’Ô‘v¢ÖSo<žŽ<Ä(öˆö£É`ƒ=q é.,Px*B%/ù°\a¢@é!ìï‘\éI»©<­„uäžBoÑzŽÚÒ§ØU¨&ÿàPLÈé^¬ÑR¼„ú²©ÌG"Ö¤±"±¹š¥DÙ'½¡¶˜BW˜¾ÂW8DÊž—ÒÈá‹y{éª14†lÛñdô/xÏMéò'Ö©2“uOyßž¿ÎÅÉ¿X?´ž%ß.{"?Å{#3´B‘ŽÌböì+ú…œÑo´ß‚S@øÌânÈ8^¢¹½òïÖïe ¬}äŽàœ9þ649x'¿Ê%ó=á7$³xà%1£ L °ý)hÛÀnÞ‹_¦W>„w®Ø =†Žh2ª‘Á}%ž4›Ï‘+Á|þ §âgƒ¹’ÛM"›é*2¸AñPuÐù¿#}÷ï[ºÏkËsÇÿR÷ AÚCȸ 2vÛ9ë¨KŒkœgôa©g:&OµÈM.Q›RkuõõB-W±¦xTIŠ1¢:¸¾cãúÆË5_M¦eUk«&šskòë¦6Ø7œ¬ÿÚð¹®µéhnOý娷á/Õ»´ÃcG'[—¿(¯/õÏù˜ü%aGÒË”@½>u¶ÞÞ`•Ñ'«ý Ÿ²8ãÿŠr3ú$WÄ õôã:µ,¡_’­a_Öì¼×¥Ï*ô¥.f·š¦ hê^qÍô <¡Â¢ò²±mÅP“µibU½©wõåÚ'U\Å„ò”’ÁE%ùYïË’&$'êÂS&ÐÏ×SL)-©KÒUI‰A\IlYtªD½qj™¶<¦ Î=64êæDä4iý-޼±4tf`Á~Þg¬›ë vi=Ù.¶H½``M¬²Y¥Q½o2”-"»i-ÜM—ž6¼ÊËæ¤Í ›2›*‡±Î–îcW-¹æì4£Xemca{Si¥Ø«¸Éú YÄ€äwa$ôÆ¢O`;²CÊÑ«ÈyÓ@ì„ûJôÒ¤)Â.ºW"ÂWR Üî j©;^ÑO´ ͤH –ÑçL)hÉü Å¢;@\ˆž\‘|YÃ^“¾¤I¯°Çl'uc£„ß#¿X)ºJ{õªàBðC|’´¥ÅÂ*°yÌÿG’X }&ýþQä¶„l¿àA–â¡x;jÆ>äiGŸ’9$ çà7¸ jøRº—ä ù†^Ár)…fáX-?/µÊÔ(­ÏPüªq™B×±_ì,ŠÖ‚5`=ìCtDEˆ?‰ƒÇ¹N\wþOùÁi¦yZ7sÞœ%·]>M?k>½ó´íÖ ~Üå$A’‰O‘•x0ˆÜÑ/òüäC7) úâùÓãôüÉQ¸QÜmù*ðdpùÖ³¬=¹u`,³~$ûO>™ æ‚þÀ|A5p ?ÔI,üž?j° n†ñ4´AòæìKŽÀßüNØ ¿&%èØ‹N F°d¡µXvs*k'D±za–ÊÝn¯Ó)OÁwÄîlŸ>{r÷%¤Y¨­4,ÌjÖ?Lð‰½‘{tþþòàðÄ{¹ýŠÜŠÚ ˱ÍLÊß_üª¼›yw½Å©œ†fóÞª¥µ­O?[váÑõ ›ž ë zº¯,[_‘bz\µ§¦ vTíz³`"Å£3I­¢w;Ö9¦Õ7VÕ™«‹ÓÅ5ÄMM:˜ô,~râÚŒ…y3‹cË+Ì#Ê̆þ‰î14CŒéchUšXäT|½¼—™«lWÑèÜ0¾*¾êYÅcVåE㚊]Æë¥ïŒ\ÙÇŠÅ• &«Êé×Ê#Kâ‹ne}H{¬»chѺàlÞÉôS© ײš2õ9ÿæÌLòë ù_Ô5õ¦ˆaê)áË4ÿFžl«¹¡éy8ªEk¡©~ý<*8¢%dyðÔc!O=gºa—a¶‡Íl­ŠÇ2ÁUø c°¸•Ý!vl‡Ä‚˜™®StSè”WTé¶ýí"ìF/¸¼nÆž^‡àÖ©ÞþÎûTOÁ ¸L D=È\ú„ö`O¥n¬Âžð#ý O³Ü8£/8#æçbw¸ Ðá,D¢½¢!óÑ*ÁŠ¢}$ˆ:ÐK4ÿ…îàþ,Ž~ïI ®EQøF½…Åx2i ÔBèJÇH}׎,Bkh)ýŒ: #Ù3|øÒø@§Ó÷ô/v<ÁÇ%:[ÌnÓZÚ@]è0ú‚ê¦ßqé…}é0…û%-¸w؆t•Váh<íÄßÈEÜwBÖ¬+]F,ˆºŠì`G¤‡W‘¿äôÍèŽñ:p–wåcI{Lp[i!Çìžp‚á'p½Äºà?‘'N#ç¤}´õã®X;pÜäé­å×¹Hù9‘O‘eY[ÉÊdÓZOÏáúÁh¼ vHûn0ÚúI™…0¹ ³Ám´ßAFiõ¡'ßÿÈ­ä#ÁXô®å²áÜ@o Ë0›Â_ç{€4¾#0ÁuàÊÛò^à0?GʈUÀ’·B·ÐZ>ÌF…ȵFàky ï‰ÚQHŸH'ü!í¶Ô¼–èÛKjèKÈ%?é6AØ-ìT¨mŠfž[´5vÏ«]—v´Ûÿ3” T9Ð0!§1v…fBR÷¸­‡—o·Ú¯Òþ™9«tEeså²À¾`ȉÄâÁGjXýðšÓEóᓪ èÊþ›_lyzëMñ²¼K…ßJWÍ¥gËfWL®šXó¥z”idþÅÄ×±®Q>û¶5ÇUt¨hnO67\­]Y0?vp¤‡62þm¬dÇôM¦¯•iUsJßÞDÓ´v(|”zb"N{œá‘ëTx¨4¼Äø©fº¹tþÑšÇ&'ÓXó&ãx£¯±UŲêvÕÃ+ÚWŒ0ލÜQ[_=¥|^黂Aù²äLË»i¸“úG꿆ڜýYÉ)ÉWc"~ª·«¿G|ŠŒÎŠ3$î^ÜÒØ±Ñý£äQí¢b"MšíΨÊã‚?±0ìÖa/ßQ›Ï.‹œ?ÂÆlOØIM:ºi™ EÐ×¼ÔL4Šê”…â•¥ªí„™ýì¬m—Ïî¾jÿþÞ~wv_š;ò€ÎÛÓ©EéJÙKPFž’2v¾$߈V\ÁÆÓx —âI¤#¹ÇtšÜÀ¹J{Í—z³‡äÿÿëXMÞ’qÁ Fã‰Ù2^±šíÄ·ðN7²mô6Ž–\ØŠ$m„I4‡(Éh:ƒÌ¡c¥­ÖÝPGô”4‰:Å'–@/KÔ‚GФ™taƒHŸ‰ãÉv [ÑG¸–ˆpéÉl¦ÍÌM|âN¶—t¢ÏÉM‰p­ðy|¹ÃÎÂ~ä ƒnË:dîÚÚ¢ÜUþS§\ç7Ù5Y<’F;9 Ô†âÐ'´‰ŸË/ã—ðßeÓäçøKhð )…yÐjá-ÃK„nô;?PÛR{ÎAmNæÉEñ üAÏ$sÈYárCŸð HÖË÷pñP::ƒæ"/t¿Ê%Èÿ•×Èßrrœ…' ‘è.?ià§°ƒ­€üŠ|'·a!]µô¦'†Qò;„Â,¦ Ûév½ü Ãì"]½]V¸nµÓ² ÷ö.Îñî MZžaV8/ù_ÿ.œò?Ÿäð©qa©žª²_ʾ½ÈoÌy^PS>¹vnczÓÛ†¶8m~îÞE›'öo*¯‡w|o~×2»Ý¾ý@ûÇŽ{­MÍ•M²·ÂÿÅ]˜xÇï]´2k“J¿}Ë™w§Ä Uµµª©07kmÆ»¬·ù/ ÷åÎY»¸µî ï8׸§Ì çiöž¼¹æYÍeVµcmšZìkÔtÔžª}PçS'¯6®6UÙV³:w•\5§l~¥Ž*V5PY‘¯²R}¨R–}*ºs*:Û¡`k¡YáØâJ—Å”,,=“;5Ç(ûeKéó÷IØœÜl•ꑚ”Ž3'eîN6NµOÛ•\žøG|Iìö¤k O*NvÆ ˆþ=øšïªns\|\k•Cì/Ø}gc±þh± £yºgØT+Œfqh­a—Q, !Ѻ‡õSL/ìq±e÷—eÅ»Ëf‘ºãéSÔ‰ÆÒ(ÖÆ,ç=ҟ̥Ѵž–‹žº­b´Ë–ái0”NS”€5䤤,º]‰l-U ¥e°˜šPW˜ÀFÂrü .ÂEx²€L'Û±ž„ûÈ`0ˆì±"%@4ôlÂGè[E­ÂSa,º2mÅ^ÖMQ3¶™®¢ƒÁ–ºJ*®„o¤ ·A€ôMl`¢à ¹,Š&)>²9ð/±did?.!úä5} _°ׄ¢É„ÉTPá5àÈ–Ãf²‚|!ñDN>aM¼ õǃÐþ-߃2…½d 9À²©51Ågäÿð÷[ t\!‘l Þ[f/íx oÁ1RUükÙñZ‚ÖÙ<ù8n´<˜ÓBè9Mù^‹οB±¼–ü€l¾Î/r´RØÅy¢›äW‘—ÎE·AˆÂYù­j­þrÆ=â{y >½Æçá>C¯áNAfÃÿˆ[‘qä¹0C؃Ñ~ÎI¶—wʦóÎÂÁC‚Ž!6Àcp&\÷x1,–êu‰4€7•Ó·ÐGúH!<Æ/ñRHyÅ:Ã5kg­Ùd´Ùà£~‡n¨ž©ö®Öç.<º>`z4‹Ûá_îàãü-0;Z»:A•l”K‹š ‡ŸR¤ªbÇ$«ÌPý×°®Õ·mkËü–ýmËÚ….ý¯n[œ¾Ôð¡yL[BÛºV×ÖI_ZÝ›-›§Ô?)rMü7úGl{ò»’µ-w;ôδŸéWp {CÞ®œï™iSÒÎæ©• //K.o¬¬ièßr·µº½¬­¼ÁºübùݲÆÒ–ªY %£Ûnµ,nÜ8 ¾¶nhMIUyõýjUp塱`KFEòç8ÍØ5ñýRNi•à‚ ß²¿ædf O_”ö-k|¾"ÿbþ²üúü%ŸrÏç¾Éø#ý¿ Ìq©'f%ö%,IÛ‘¹$ó×̵™Ê¬¡Y³³42ÝÓ6'ÊħǵÄÝOØwò[Ôíȶp§ {>æ^îN œKÜ&y¤¹;ƒó—C,·n(4q\n\*úëóâ|Ýô×’Ù4à!ºt}Œ^¬³~Œé=ý›BúJ¢ˆ:Mgê‹4…Ü!†äjA3½ Šìwz‡jÒ90R”XX_ƒ gÊUã‰ô$ù•‚˜ÁW:šé‹‘̘º@2ñáß“!ä?X°ºHŒ![ •ØAÛËÅ âRÊØG’3HΣ¥ùûŒªÑ³±î2_EÛÈÚX¶Bç`ÝDàmÄ›äÑípŒÖI·ê Mð6‡sÒ/ÊÉ;ð‡VôgR P‘¿±)½G‚%~A+Q?rŒ%z<òß&µx"~ʹòcÑižÃE‚º0èŠÓÙ>: Jq½à‹ÿÅO‰ ©…0ðeÍ¢¥b‰T…‡ÕºJfÈËúÉGÉòdm²~²72 >TRXŽPʧ §ø™|º…J¸!Â7Þ’!Dñ+xmü ËÏÀÅì†Ø*‘z´ø‰:ã_{~‹¬¿¶J'BÞ)·<$J®á? wðqø@VB4ñGÜŠMI^$!YpÔñN|JE1ÈÝâ Ex.ž+ àÍåÖ¼š°ËÑ9¾Uíä9AÔ` ]Iý ‡€Òï0’<ÆKјƒ7ó·xîë:•:{¹>4‰ˆzcMKÍË­‡PX‡XÎU…‹×MHM4I5ÈÛ_\^ô(ïlÂÁh£Ä¾ÜÒÊ’úëÍêí÷[4›m[ìš>¶Tv´U7÷kúÚÒÕ²ªåjÓÆ†iõò:ͦ¯mc[¶7n®þQy±\;Ÿ÷5®i›×þ¸­¨èXfpη„íS~Y+ŠÛª¹ú¿k§Ô®©{Uw¥~xsMÛÕÓÝí[×x”l/˜Ÿ§U1 nq_Íò:\÷±öií©š“•ƒJÎ)KVUNͱMŽGq¥¹¡÷Âmc—æÌ)Œª:Ÿ›š£“¯–7!soÆ¢4ÇôoYor6_Ë‹ËKˉÉþ/k@F_êØô™©w’ë\cOƨ'îOÙo“ÿWÂý˜‡Ñúq;£‘áѳ¢z£´£ŸDEÜ è4Üs’ÛJ‡ÏN*÷·Û®÷ܨÛaåª=Uæ¦[-Öí4XoüÉøµA±¤·¹øñ€²Xþ’'”ÏRÿ©+,„1â9RŒµP ,ІVzOXÝÌLq¯ñDêT¡œ|$[!²Y Í!é>²¤óáHÅŸ…Ý$/ô%òý 2qšØÅ®Q…ä' ?É-vˆ]§v0^ÒÉ4‰HŠ™tûsÄåâ±›ÅSw‰›^tq ÿIlSQS¶„=¤ê”gñâ>vÂH:,QlßPˆƒz¦b§èR…5½IÁ0üƒÌ†?áW6šÑŸ¸Œ˜Ø ø³È¼“©Á òš,Â÷q‰n Ëá"vÅê,îV|ˆÔsctȧ⠉Zä%‰¡/E/q·øŠ]'Ÿh9ü”áL´E'édÛØOªÐ¥ä¥pš/’yË:§´÷kOâlñ>\¾Q6T¾ŠSãD>€+äÃ…~¨M†„ø áW ‘xò4q¥°® w ·]'Z¦Æÿ§c¯“ ?Ãâ^sÈcl#8"CaŠD¯dî'ìäÞqæhªÁ¦ð· ?ù³ò¥\Ú d! Nsæ÷£xÎ[~Ëâð#ÑClF¾ ±ÄgÉLðp‚]’ê_‰>ÎÅ·és:ö“ãÈP>Œ @wÉ ý0ÃUFGL–í8´{Üï'Föœü#Ö"yRæËír£¼‚¸{Ñ.±Û²m«æÔíkšÛVÒü¹a~ã×êå%qe>­-ŽÍ½M–µç‹ºó—”ÔÿÛþ×iŸ3e]ÁM^¹ñ–I~y?ªTƒ³¶¥ÍÉ5ª¨[¹EUY[Ö4¤cV‹K]WuuÝõƤ6ÿöà¶m«›­k§œòÍþQ Yá_›SyºzgU\U@fíÂJb¯‚-©Miïã‡ÅÞˆx~?tmØËPÛP¿è³iÊHjbÊÑØù'âÞlj±Œ³NðIV¤ŒÊÍ)£=ceÚø”gÉR'&'eÆì Yð6xdøÚ°ß{÷¤> ßË^.Þ׽˼½ƒw„¨…]S }dz&ÀÕ/̳ÀyƒƒšS’Ë9÷»Învn_]ò—Ñ·Ó¶´Ý4vƒ¥É+£ì "Ü áœ”fæ=4‹¦zmðJ\R£ÆÐÂúmbˆâOaߨ <”n|,:Ḻü&ÞË#n%‹…ÅÌMrz¿ÀZSðpò†õØK¬h?^ƒ>¦[1,‘Ø(u¿ì†ÃÐ@K ¼¥Aâ6‘­mö^|¢ðc¡4—¥¯éc6›Âzô;½5X`‘ì£ôýMhvœ§/¾¥ l‹ÁŸñd‰<êl®8›\Ç5dуc’ûKaSØ 6˜B©` «áé!æd0É#º¤|8‰øÓp”ü ÉVü÷@ Aær3y–Î$î:? ?˜\“²`'y}tžîtÝ|1šÒ)÷ñAò?b%¬Ÿ”n×ÓWPO×â}äM:Ó5K´šd3ù·ÚŸ´oho’àrùõd²0‚ äžpæØûà`)|âc…ÿ¡ïœ«0GH””7 [¿ 4P^ʽFIÜU:iGò¹ò>ÝCüPd‰\‘¯pUøŸ &ñÇø“üþ2¾ ~Â&n&¥Æ$~g.ó”=ã³ñzlŒ·aÉÁkbDŽƒ †ë ¥ÛØ «É²‘8ãô‡h(†²£ŠEª®–î`ÅÒ'èJ³¶MÏÝ W\¦¼aå„ÝZv÷\õ<¢<"}.ûÍV‹Œþr\åQ25«£B]•ÜàÝt´jn1d,Hl‰¹Ó˜ÚQéÝDZ›+êÈ)>eZÊôÌΪ7m?»šÏÎì8Þô*mµ¯Ç¼ð?“pRlVS†]~ZÍùæ÷M)M%­¶m‰ • E Ô+~¯ûRëW ¢ª§ÕOªN”Xå~Ϋ¨ ®Ü¥Ò®æ«O¨îªV¨&yf¥§ÇÐÈw!!%!kB—…Î[v0<'úm\jlHÄßšÞõÞsý®úÚù,òŸdî_”¸+ùDò¼äñU ®&V&,‰ºæ?þ¨àVè6Û£õ¨£[rªãjWs—sç/ŽSœ\Ï;‹nîÇM½ƒŽß?>Ò;ìø<7 §N+]Ê\䮩îÛÜG¸z¹:{9¯VÙ¶o¥·a¡Ñ':XŒÀè)•RU$ˆ{6}ߟ¿*špbEâC´Tœ«X*Žb5ð\ þø?™ˆãôñ¯d…\)Ì"FŠ)`Á²¡šå%Þ¯(Q|„|fEºù™$›A™8Y1SŒ‡ùäš0CìÁÿÀk¸{išø.Àl¬¸%%= QSÏžg@ya¾4{ÕÅ>½ñŠDÑ ˆäh—C¸ÂOè¢fK&“t…(cŸ`M¦ŸØ5¨"áˆ(g†ðP¨ fè<ü–’F[hŠä8à!„c ( –‚¿¤¶Br „×d©”N ¡Ž$kÉÇ.$¬þCËycy9¿e A’ëÕÒåHü’¤HŸ¹ô/Å +:šN”ÞgÌã´Ž&Rêˆ=ð72”¬Æõ$G8Ï›èÜZ©¡sRV)_+K•kÖI‘…s/::€LÑ%~Îf.É®õînç]ƒœ8¦;ª;ôº:¿³S·JÝš¨ÈÐÖÁo…د–ÒØs0Sè¬z´ö­OLÉXROGH÷aÈÖŠ"˜$ܦר>ò‚-e-ÂzX(Å)膰F‹¨äJM¡QJP—è{ô!ê¿DZ;Ù%ñå1®“·ÂUâH^à#ä“ÔÿÁ@Øÿk/†Óið‘=!faœ&š¤‰XH:òF#$zŽkÂC½ä€Ê¡PJ4g….ÛE¶,©- Ûh9}D»©¦¤õuÐ+üOJ–c$‡ô‚i³‘Šâtº:Á“Äà?ÑØ€’Rߨ#Qé"q% õ³ŽÒ‰:³|,Ð+¡OaFtôWÐ%?‰;ÖÁ/…±RurÈnA$÷ ŽþEo‹½"eK¡¿\¡™”‚oñ ¹=:_t|µ[tvqÆò n§/÷á— c…*Á Mæ-Ñ6Á7“§É´¹~ ÿ ¯EËdk¸NÆ[b9„ïÎ}•÷ȇÈ#ä·¹Ëü:þ»\ä¶ñcLòç”ìΡßÑe> ÁUh ïÃo@‡}\Mf5Â<zð*´Å¡lòVÊÕWÈ#ÜK( ’²†§¸KÕ$›TÒ@ö}Ùp‰îPøŠ³Å늺õžHºsÓ»­·Ëà îÝ÷ºè2“Ž¥ãàoÉÅ7+Fê54å›ì3YhðÖä¾Ï§cçÍ­ïWáúÄ{ÅúuþkvXø'n}mUûƒÓ–]¯; ›OUdý–6'+3Û;ϦxYÙ¨Š‚òŒl·È€†ØÔ‚{eFM†ÕòjÛÚðÆšöC]3º:ÏÖÞ*Rd\Mø5µIo¹MÅîbÃüGùÏO}8ÅJ/—O¬xWx¿dWõ¦#m½ÓŠòSîDGºvG„ t KÎþúÂçA€¹ÿúcº-;úÚyœ=¦ð²ó‹ (òûî+å† ‘ûOñ9â¿  7ðb຀`÷SŽCz:û‡ŽöNþÊJIk›\˜Ëå,åig—ƒ®œ2Âq¯Sª²Ÿr©ëbçB— ®Gœã]¦m?šïëå|Ô9ßé7§‰n§œø}ˬ–n{¦iWÈV°ò^q+ bxÉÞɇ±×ÄÄãÛbý¤ÈcÆlŒä3‡ÑúÂà<|DÏÑ’HlAA@2^¶’H Õ€48@ H¢ Fp€™Ina…Ð*uw9Ä,ð]üFp!zâm1— ƒYÕ ùÂ'4]XšR×?•4ëÿG>Ò9Ôòñ`ÒB Éhº‹iÑ+Âá䡨¯ˆ’84™=ƒ’ÂÖÑ:PbÛ]ö‚Á!Ü#a:5§²SbUƒ[R †ƒÄÄBä!¨Œ¡›aüÀÑx’äºÓ rß'G@…½pœ° ¯•’\"„Ã9<–ŒÄñ:Dñ…Æã,"—ÖÛÍŒ¯E…‰ØFý¥Úå!c!C:ïH< «+aß&{-[.¿ÈÅðçäÏäúŒ÷áçB.’ ÑB*çâtÖÈgó„£ø7¬äãnɹÑ\'ð®| ·”›)ÏÐ.ÐÉ‘çòZx9J‘ÅÈ|9-a.qÀ7Ñ&´ÿÝçß ‰DsC%ž‡6z¾’ ¢&eÎÿI©qŽ/zzˆµTù¸ ÷Jžò;l§)Aúh™"ö°uÒÓ ê+®Uhêzê…é¿Öo4`ìd˜hm4Do¾þwÃú«ŸE‘þŽÊÑ7I­§éJýùëú¶•os3Q¬“në:Ÿæø§Å;³–…rîoypýÂ5+Ö?Üè園V¿ëÌÊó7ÏÛôt´,<µ!ãCš,Ù ñ\êóÜ9¥¶¥Û³ºãLOš¥u«üšƒÏ–wZ´f·¬k™Ö‘ÔŠ[ëd5‹KÕÓ!9µP£~{‹ª5¹áMÅŒÂÅ[ë~TªÕ~­>T5¬šÕi6¯©S¹gî:y#øIC€Vàÿ}þÁ…!á‡c^5úOЪRÄ–xöÐ:¦áùÐÃÚSÇc¦Ou@zðâàc·÷®ð?ëõÂûˆ·­× ¯…ÇB•'ì{•ZJ‡ZåW']×7.S”&Ê7Nc•)»þtûÛy¶r¡ò½Cò¬ÓE¥ŽS­³½óKg¹Ã_®}®—Ý ÝMÝl\ß8µ9­trRÚ9ÖÛLØÞ¶f„бüéÊ,î0ž"M99ú$â»ä“–0_ê.|Åî cš¬š Q,¡V`GI¹h1;+¨! æ¿áÍpC,”æü"ÁRQX*£âG±ŽàF2σCCÈ$Ð4wãwÄAÊP˜!Z­Â!I·D72‚>€,f®Hg0_r€uÒDºbaÜ#KðO2ôÀG(C±J"lt“…äYF[á©Â¾¤·è š,\"_$R~…ŤGÚk-ÒÚ£ÙEq½ä‹WÀ]a4‘ÓCt·Dʰ ÀB/Lw€·À]r™ 4w nÒ³˜±o’²¿iä0 `Þ€~Å>ÂTC³à–a+áOÓhÓRl`Nì%í¤ƒ$¥¾Ä5xV »è˜‹­¹»ò>™ƒöm™ä1OËgðcø©h¥0}@ûðn\ÁæOËó¸ÂÔ+LÌøhn ¿¡©Ü4Γ¿ÆÙÈBe³¿œÏ!d/ün  ÂYd&L¦F‚ W°&^(Q¸ /¤ß˜{A»Ç%¿8 ÛáGd¾4ÓZa-þ(üA'Ó8˜Jè4š ŽtŸøRòŽâD±ÀŸ¢žî8ý±†ÇW…­.ÙXkI,–™mÜòbãè )ë¬LÜÖEoÀ&Ùúº‡tCõ¢ ¸/­ãöw×e®Û»~ÝŽÛÎÝÉož<|Ñó™r—ã$‡iî–Öñžÿ¶Ó³Ÿ»›:W¢ìÕ)BšIjQʬ ý‚aEgò¦¤»'O™Qø®I«sHww÷è3ï;¯´ljtojl\ÝпִøpÆâô“ezM.u]N·5¹Ï)|]ÚWRR^«^ ª •í•OËZÓFÅš†ÿ8#ä«_¤¯ŸVÀ–àŸáÇ"!“ýgø°) b·{…z«{Mñœàqô¸ã±«'Þê;)ÀÞOÃ÷¦O¶×gï¯_NLõ!•È–K{±!ØzƒWø5·€µ@Ù¸nBÐf6ò£=Ìùà>|‹/àHô„µÇI.þ{˜àð*ã‰z£™ð;4ý!@}IØ'£Gè 2å¢Hoœ‡Ð<Î"wtŸô'!p=z `º„ýðuÔ•‘Qħ°ÿ!RÎwá½ -vÄaìü]a"˜R €sÐü7Á˜Ž6âu¤q%ŸÜ¥Z€!y£ŸEè2ƒ³èÕÌBàȰ ìQ”'}‚i¢†1Ã5êAV-éË '¡Œ?}©eT³÷€ß–Zó{–W,·IJ-ëEMæ¶â‰’4z)1öÌYð7~@Ú@;5 ôC©p-(Áh½ßê+%ƒc…o~‡þ#.“l¢ŽÒÕ.q L¨?ôeÚ‰’Pi”œÎ£^Sã˜P„|‘º ’™fà '’áb¢&Édû'Á3àpÄ*²Ãsñ`|c$†0Æ!_ò×ÉOág²/ðø+»›*l÷×rïõi;6jPD^Dï€OÊbמNù;|w]ÙÝßÙÁyŸÓÙ]c¶T¯wÞ5NÁy.ô©^+­•åÙªÂãñÕi1ÇUOÓÅÇî¥<©È\˜ê‘z+}g†eɽ®ùFÕ¦¼¬£Ïâ;¢Ã£gÆv&•¦KǧÎHÊŽ™œ™Ó»>¦#¨mÈ™í¸þC¹]ÑŸÒîêÇU†E(mh\AÊÅ2«›6yGEëÆ*»Â>'—ç¿Î[Q"+ ªX[¹±Ä-7÷Hç¡i‘TxÏ úhù×f÷ÐsQÝG†ÆTŠ1Ø¡‘{ïÓzZ`Ý>­H×là?ËÇÓoœÿ:ÝÔÀì€;º7þWuEþnÚuÚ8ÏNõßòa ¤LSÎSÏöØáeé7Îg½ç½Ë›ó½­ç_ªmò­óòR™jÔª¯ê3¾ªrÕƒûAÞó&ì7`ûáidÙƒMáYj2À(šÂ>ð>T“Eh"zÆ~ĵ¼3—Ä">¿‡<̦0±Þ‚›/h vÒw¢—èÊÁwaÜ ¿ãåð(¼€’ÑXhHC,ƒáh=ªC½É8WÈòÔ†ï¢ì#üSÁ|bJ¨±Œ7u•ª—Ü GÁžíËNæãˆY¢´ Jü pâó™EÆæÀüŒùm+kj)] ¾ÃAp>?3c@>tƒ3„S¨á¸îDëÁIÓ×5à.0—9ÁŒeþ¢b…|af0øÂèén*•~L³4`î?tGoÀPEw3™ÀM"‰ìΙm#‹XCÂ`WJ’"Ù)|/i*û\¸s>* CÙì4.KzÏúŠõFö›/õµN‘­Zæ»Ë{Ÿú@Ÿà¤$r4(±ßá‘ÓÃq¸ÛA›C±±ßâ®ÆÞŽÞäèò%öO¬>®o¬,\¥|!FŒ³§—Ü* -^eÜ8§Õ¦­£¡ô”4Ç(csÖÍò¿k/Ÿ"…úÛÌ#'é3–‡ÎŒšs8âqøÔƒ×b^$ו65õ­¿Ñ6­½³Á«z{‰÷©m5 fµT^ÏÔ¾Çz×äÙÒÖ£i~¹,3(íʱЧüñE犥ÅÉyíi“ãô1A-£$‘ÎúŠ,ïï¡KÂQøì°}Jøá¨¿ƒ•ú+º:]ˆî­©¿G@ª>?à†O°ï(Ÿ >GüWëúèmu“uËý}µ/}Vx¶{,SULw›év^Q«zç±EûDÛ©[ªöëÐþç»YãóÀ§É¡ÏÏé ½¢[¥žª+{()*Ô‹ÝÝCWâçõQ™¯©<®yµgÜî:û!ÈÀœ¦<¨x±óJ,¦JÞÓ]Œ!ýŒÉ`"ÅÝ0®!§ávù…_ò½ÈE–åÖáh!±#§Q7yÎaÞÕÞq÷VŸU®k’–œ·ÝfÓÛ~§l’t²íor€?ÂÁ2¦Ÿô3ÿ–SsíHŒs9ty¢½xè‚Ãé\N- PYÊ>ÆË°-ê w… ¿EȦ½Ç«ñ_8š(ðb‰¿£X<€¬ÁÉ(mCçIZI2.‹Q$Ü4À’‰/‹¯3cÒ¬fß²ñ|«Á÷aª‘ÿdÝÉ܈€GÀ ¸2®Àô½I$“ÇÌNÌr”.l9~Bbq©lõšdÛ#l-þ%ä{™‹š¡%3“þÆîÌEFNo¢ŠŇ™uhêd'½B®ç’sdû’]Â¥Ã|K3#“$³ãW&ïÅG©u’¯Ôj&šzE¯¶ ŬnÌá½+™X0…´¢Ï`M½€KpO´EÈË7&’™ @}„ª–  nR«éW”޲¡’©!Œ!úŽí„Ýuü›¡=²„ÓÁ ð ®À·ðm\ƒ1îÀCXoÒÆ6°Ø>| ŸÂŸd/Á•°–°Ü*¾ˆß&«±1µlWk=_dÛ(l¶[_tÌÙ·ÀýjàöC\üÞø€Dÿ”}É$53ƒË>ùoöìßY_Ó)Š_’,JÜŸ”’šxþPÇ‘È4&Ã¥`]yVUh5W—Þ4®uYëViËçÆ»õuo‹¬ ý‹_,îWÈd­9ú+1öHÌÁËA—ô›üÖøò×F†ßIn-çOͨýV¿«®¡rsYi¹¨ág«m×d_ÞçÔ®Šç5ÉMA-6mý[Ëš&—ÎàR·*˜X\]ô¬ðCæ‹ø±ù1ªèèƒV1-!:}¤ ÚØ€ü_xëêû¼ðçwÚ§—ïdsý3ÿtßgÞNš<¯K~~ÀÏÂ?KûÅ×ÉóŽêÂÐã„¢Ä}“b‡üœ¼‡:C»U_ k×Ðuúõô‹ÔzÞóvð‘i×VèÇhúy*åÊÕ(¥^^ ðtKT¸É{Žô9å©ÖV9)W*>ï{ë8uÉT¼K|€ú›‚ÔsN|ÚŒˆ¡I_jž9E¹Š;©Q´ö0 ½`]…Y_Nì¸øÜA. µìŠõ ©Äî¤}úîêGß øÆý'WL´‰•XËdÝÖåÖ+¤³x÷'Z~!‡øõü Η]KQ-ƒë˜§¨¯`‡]†ûH9+ØP=™ÏngÃÛ‚ÿˆÈXþp=÷¯%#ñlŽåð½ M ³ðeŽ'âÉÌQÆ9à6þß)&£ñ˜ ³À9ña¶‡€qð»‹ýÎfq$d’h,jDÓQügø6JÆÌ°™‚<á:ôK Ç< d(™£z!íóÈ|Y¯¥WlÚ¹/ø<ꉫðGEpøÿg”éÏœ¥J¨<ê õˆºEofDà¶"óñ~\G¬ÙZ´—"Sc>ÍÌHtÎÌÃ*R&YOEÐÆˆ%’fÉ5I$óŒ h;&›²;T΃R€F Mp~Èzp.„‚k@3ùjµÒ 'ÞAW0ë[fè'±OÉga¹9\Eþűè® Ñ9X*°´É\|'Îc ¤ë¤¿øî«cϱù\1§å㤋¬£l÷Úí·y'üoÇ¥ïùùÖ·mnÈ8îu¿ægôðàõø­ñããø„M©¿ý<‘”=-×(¿¢dç©×§5fßË8“v1©Òž£µÙ±y1%Ní:µ¸jXÝÆzdž ¯ô ÒÆýÍ^­›ÛŸ6Ö8•æû·T4TÎ)o-w«²®^‘÷9iúáÒÈ'aS"»¢ócÂ’Z R‹>—õ®P–-*Òæ$|­Êný÷Ldûà†kUúš±oëjŽÔtÕØÔüjè®Ø˜?²$ªÄ°¤¨°(¿ýÄý„üCÿEàðÕaß‚ªõ¿ügiC‚Î…x•ÀÀ AÃô ~ ¿8ß¿üŸûÏÖÕê¯ú_Ô¾ôãCù ñå|.øuù^ôLV¶º-s3wƒr··¯nöÿP>ðìÖIü/û?Ðúù!ßï>ñ>—¼æyx¶i‡hvªæªj•W•Ϊ'JȪ¿x»™½q´Ù(ó.Ñ|³Eâ}T½XAÇÓ#+I†kP)ôB½P%¼ÆŒÇ±ø©‡áü_Öù›és¼%꣞!«zZ×ËúZÿký/_Ãm%I:û/ó¹J²ù²ã¸¶K`TZO#av+á¨Aá/x\ð±n´”ÝBª d}±è(ƒ‰š±RègÑ2ô‡ùÁXà¥@ÉüÃ+QA;q%Î%ÿc »µ0÷é‡ ±`þÆØÛü_üZnÛÉúƒfºR¸'$œ-Å1¨ C#ñsü¹ ñŒžZÊü@×É#€ ¿¬ö:‡±#!  èÓ6€Ú•ÖÑ(Õ=I‹d­g© t#èEV‘Al;‡ƒ‡ 7t¡FX9ZD[šYVY®”@j4˜NæÀ÷Ì<ňA,ÝôCá0ø´Ñ™­Xƒ·Ã1àý‡™ $è.öá¸ñ¤î¯ÃóÌ2À ÆŒ^Lonx8y/ô´ìPö.Ú{pã¹-äv¿Ë^d‡ñoç¾³q¬1.µ—bþ¦À¹m\'å_ÊJã¸hîw]z[:“ó"ý…7ÏC7ØÏd Šã×ÿ³íÔþÅZ›C’O'O6;Ò$sBFçɉyye}+ÃKgåR'n'× IÊËØW4îTmeBmCýæz£†{³NÕ¬ZZ±¿Ò±údýŠæ×­»ÛÇ·™4O©;RQþ§¨WQt™CMMcc£i%*UæfûŸ ÈôÉþ_Nÿ¢Î|·Ò“Åê´ÓǶæÕ;·÷>3§¥üTNQwYHmLUR)%>1¢èCÝx»êjuGiXqGŽ*!ìPQ˜.29Ì)p±W¸ß:Ýy}FàL}MPRpuðÀ“ÇàŸA‚Sƒô"Ý ­J—¨+Òm P°X§ÓUúð ÑÌñ^ïU©^#ß,7wíî$ ðPðÊ.¥NÕ­qÓVi?û©ý*´9¾ƒ|ƒ<Í5ã<>ªÜ:Õ,÷Óî:y³{”2VU¥iS¼T Wmðäµ÷ðÁ yŠV¦(ï¸{;oÝøÈÁ‹ØY¹Yž¿±:l±Ã¼Ôô§ñ5£Û¢ïf;Ì6Š^[ 6Ÿ$Î3ÝoùQôÒbe±h¼ñ_ô¿’>Ô"‹é–,U) °(¡ é»Öw7ˆ4¯|N;`{²JÈ[¦c­l<Ÿ‚й42g0A?LþÇ-cMØ?È”µ‚z8 Å+ù,ü~Áà¾@¼5xlW`6Ës‰ÄXS¥à3­àýyÃ|ÈâP¤ÂÈÀ6d&Nƒ;„Ô´£bh)4DÃÀ{†ÁqÄ‹5#41 Mì^~ÃZ±ÄMe¾Ðc`"²ÀwäÀ×ä’Âð3îĸ }gN3#„¬ã°]h±±n`×ÓöÀ./ªað ¸ ¿z3™b•X&!é¦ È¤ÊéÌn€…\¶àj–ÂZ¦ÌdJV‰­xqµd’D.qc~á2îÞ‹lá8l…ãñ7¸_à| ‘ F: ÷ ©dŠ­Ì|ú!uŸÎf¬ñaòŸÐs¸ÈŠq‹À-ÉTám ±5›H‚I›ÄÞÆq¹Ï.ç¶ð£¤ƒ¤û¸ 2‘«ã«dZÙYOëe Ùz™ƒôûštãDö·‡\GnøëÄ/ä¯#(b¬@0úÑxTÃØ :þšÝ»uXy!4/fÂa:ásJÔÑÏê¼Í¥Ëï”'–œÍús|dÒŸ¨Ýqó:«.U)jrV6õhzÐ8­©¤áAmreciEaqáÌòÁUÍtËæ¶×fg;:nÕç<Ö3=4oVʼnšcÍÏÚ·´Y4[ÖùV/©)®]R38³»`õŒ²áÇûë*R×Å·óí¹u=N}ÎlÉ?\k†––¥ïK°L³.r<•XБ9ïaÁݼGéF1W–F½;¨ Õè–â a ¡oƒ'…Ü›fq:|kÈç ã k!ó‚ŽZ„é÷5D˜ô <x\wIëæGû6y%ª-Ü·8íÚË]¶¿Bž¡rTŠ•³T=4¡¾YþM~½úL÷Uú^ñuõÒk~) åÕî7Ý×(Ü¦Ë åi ‰`˜g.ò—yªÏƸ„Ã:ï>ªX¹D9Y>Å%awîÖ³KÍáSq¹ø·Už¥¹´8!úcÚÛä¹Ño kQ—ùI3(Ò˜zš¶˜>5ºl|ßh¤Éã¦JÉHÉ&z³R ‚0ÃÈJ!ñ㛥üTú¹ä?Kjت‘ëûÊV ÿð܆Jbìaå—Iç³rÖ…„![°†Æ®'GÙ¡ÄŽqaÑèS‘ 0·èKÔ*z¤0Oa¢°ùoÑ o!ô· „‹"Nd&Çn@×H΂ñHBŠñ”$0\UX‹ytY ”0â¾ DâBÖâtV‡¶A'쌆 —`·Ó¯ÌAê3õ$5l&Þ ·£bôÍA,¼'¸Z.jÅ7ˆ Ö‚­ð"¬bÄb_æ ô¬øÚæQ+%ØR&¾Ä\7™bf$S"$"C¸Ÿ`†¿™W@ôc‰”J‡L“¤”ò"\Š¡ßð^.0oæ6,#VRgÞ‰|,"‚ßÁFJqôfƒ`†ß‘Ç:”V˜ d¸ŠÎ¢ÿæ¨ñ`c¸M¼7WCŒ…¼…q< „oüŽ›A´è¼JÚ%}!k¹X·ñ“ æ!ëL>` 6—d!áÖHIÌøüjö#Ú&€èú…Z…,ÂçØnéYý¯µ‰;[œ¬ÜOxø ’°ã¤IþŽRûê¼jIÙ†ôŒØO‡\S®ï­½ßÄ´Þi¶lvnvlúÙ°¤®³²wYSAJ¦¼¬agãéú aÍu´Ý«}–ýéẖöÛª^5uºŽ©×ÚëÚú4-­K¯[QŸ]÷6õÒɨ"ï‚­'v ɶ­rª1¨ìªüVR’ý:ßö”g劼UéÓ“2Ÿäü®`J¦æÿÎÏÎ’»&Ã;>'zhì×Èýcµ·õOÂn„o‰XΆd†-‰<Ù¾%$%È"Ø/4%¬,” ž´GŸ0,`…®wÀæ€Cú6ÝÝDßo­j­û½ý¾.ßÜ7º3Š*ÞÓßû¾§¿ï,Ý+ísŸyÞ{½ë|‚½ÂT›Ý3\¹ä»/—¸7¸¿S8»©sÝ+ç•ç”ÃÔ—§Lõ«öþ 2R~RöVýçySýzßùm_m鋿-ºà|Ño“Æ Æ[DM_+L_˜/½4»dºÊ´Õ¤Üh áz“Ó‘ÉA‹N²l°t4™nñÛèuBtVrØRfaFgT–¡Fk³†k%Vp—¤Ö¢Y4GÔ[tR£{fÊ™Nz9Þ€Gów°1þ$lé5ü^¦/êþ¸~*´ýÓ0 O,ð&ýŸ$Öê™åjØÝg?!+øˆ)CÑÀ/â6>ä z-xŽkEfd9–³#ge¬w˜ÿ.xi @ Ñ\‚ÌÐa|‡ËL+‰W’<˜ùWÂ.hK^â\ü›Â)L3ÅcÂôJ‰ oE 5z#0¹ ­‚Ç€³¨Ñ Ô†ð´ -gÄ{tÌc8íÀg`€ÄAb@Ý ½À#ÆžÙÄ ‚LCSÑEì‚Æ0®ð ˜MgQO©7ÿnÐ!ÔI}S˜è8˜…‡á]B¶z‚IÌô…ý,Û Îuƒ`GÞbµð½3̶ÇVÁè»I)ד]Jú‘h n‚Ï@_Ô §bÞYúŒ_Á˹ÍÜ`©šïf_çŸÍ`?Aþ‡§qÞü >M:O&•ÅJgqÛQd(¤q Ãïã“%dWÉ-ã\É6šôX«Eð*,¶Š!h3Ꚇ[!°‘Úý°ß»bõžFMv`¿è¾éÑ…;Sn‡/ý¸7dU|jÉÌÆEMkê<êÎÕh¨¯|[ú¬h¿¸»eÒ:®)¨aJý›ÚëµÉUQ%\æ‹c陓rmJ[ªöÖMoß¶¦5½etó¼z}MWm}׆ø´ˆ|«Šò’…G“¬ÒŒsÓ œ çÚç¿vüIaŸÊô‚îtÿûDÃÔÀœÆ"Rð)ïYþü±©{ÛÅøGÝ×·ú„ëžg„9D„Gî_ú<, ìKHsÈä”Ð+Q6‘;Ã|‚Lƒ+þó×ùgê–ê?é¾×>óÉôþŸFí>Çm¹ûOy<Î}¥â›ªÔ{‰ÖÅÇÖ«Ó7Õ7Âg°¯£§ƒªC®–ËÜ<öÿp)=0Ë}“"Gî£Üª*W¬U,•»ª®©»½Œ4Ó<×{ršNõfåv•¹ê¤²Æ=ÍÉ|c–ì¶ùX‹@“. ks‘eµq‰‰ÆlºÙMÑ*£¹¦Y†LZM<,þ1_!šediìkllœlôÓb ä•‘‰±‡©Ûâ·‹Ÿš¶/þ`Þ!š(¤d¢d=–ª’„¢Ûp-sÍ¢?íi!¢û0ahg†ÀžL(èG"±;”w@¨‚[Á?%ñDâÀ7²Í Þ ¹œ‚Ø¡å‚Éý„N0®Â=@8—¹®‘íì 6Ÿõ&ò`G½È}ü çF“Cq þÀk¥ó­Ÿp°:-´À'g| ד÷d­…ìd ùø/ú£Ñx~ —3Ø}À ÙkDáH4eák¸ ýb€3ŒFo? ¹ä âa­¡«©Å’3´D [)xB=§œ)zxÂ4Ri3 ôƒ¡°ÞÚŸ‡@¥æý \dÞ1CAšà‹ÞV+©óè’áÙÈA{D£ih¾I*ù©2?Ζ\ÅóÈ1²íC„òÇld‚ÁO¸V`¢“Ñä+î:›âX6Ïg5Ò·27Ùv龈) ’Žà7óPFnò+YÐÆ|Âó©ü7λÀám°v&gyOÙsî#«äR8Àµóƒù|oÞ8á3¨ ”ƒiHNÂ%¨…üÌÖ‹Á­ãZñ à‚ÆIvû–ž[%wžãÕ¤º»K¼±mÓò­œ[ZÔî“Yùû³žæö({UQS´ Cšb˜öðäù²öš^õkënTϬ8^‘¿ ³)MŸÞ\V_›TݳajKcóF}ÝášÓÕýª&T©k5ÌjJËU= ¥ªnyÖ…„¨„Ê£çÓ¥i3SÓ]“óN´–ÖV]Î]}l\Zbri‘ã&™¨`s¶:ßµðH¶8gJrP\TدSŸéú„Pƒ°ñaÿ„Ý …= y²$$+$.ôbЧªðúÈa~¡‘A.úGþ§´›ÌuŒ®Ý_íçáÙ¥ù¨Š÷ø¦–ª¡ÒC¹M½IåäqQ㯺!?­¨®W[i^*:\\Fº rÛ)ov+ræüÂ%ANÉÿsSNr·GŪS=†{õŽòlÖ,ÒÈ=ö)Ã5OäµÈ]ìôuó]ÆÛüÒb[³»–¿,¢ÌŸšZ˜N6]`QLùšÍ­µˆ-‘H,žZå˜zÆŠ”¢Çf…f×ÉJÛæ»E¹Zr?2}ˆúñvx&º ¯‘w¨‹ÏdËÈ)!xØj… ë!Xl± ê ¿Áp Ât×A˜å¦³ýø­\ ë(ØÌ ¸Pp¥-Ò;d"{/ oÍu¡¥x3AO¸ ;J%\!+ãÌȼ““‘ÿÿÿ—wTׯ£h°·X¢ÆÔØQAX¶ÌÌmSv—¦Ø+vEé½—mT¥*bAi ÒUD:KÔ`,Ø{7ñ§&Æ¿ùþ›sæÎ¹3sï{ŸçÕ°„‚G°l‡!$S‰9Œ{™WôTƒÚà ´€+åŠÙ^¸„þà'ø¤Â,P€·¡{ †Ì`8¥W¨çd±r{E!eK7S-”ø›IÂGX t€ùÂx:LÐ4 oBcÉc´›°H²$Iº€ž¢"8N‚SÁ\ô …Ã`Øì½p1Ö)m…‘Ê‹B"{Ÿ}Ã-çù¹\7wŠDzRBÔDBºÁ=Åqº­eϱÉ}rž5ãîáëē˪UYJžïÇ6âõä27UxÄMãºÉox¼ÍøÃX”GwìMvû„s°Àò;ثĂÛÂ¥¸”þÆT`+V†W£íú-7ñ|럡8<÷H…ÕùäÐÄ$ÿÔŽ,-9›z~muâ™e›‹ö–ì/3–õV+ÚÆvù¶nn}Ñ&oœP3¯LR”Pb~Z_6°zjý覕÷ÃÚî´ž­K,xdkæ§\‡œ†£‡¦q8izníù×ÅιV9¦Y‡ÓÙÔÞtŸìÒ‚ˆ|ÉÉKE'OêOýx2#ëd²YÌîèaqe±‰ñmû“ç%ŒŒ=¤ ×GoˆÑÇæD?ˆ÷Ú›´÷A쬘~Ñ“ôIzWÔR—HŸˆÏá dnÈñðÁ¡Ï‚þ Ìܸ!øbP]ðâ=-þƒ¿yŸŸu^·}j}×ûåúÝòvñYë5Üý’W‹g’O¤ïc¿Æ  ÆÀÔà—AÁ!“ñ!+·º…Ñ[߸=ÿím—eѰ°c‘@…I\¥G,ˆ ø'‚þ…áA´ULHa-ˆd²ä7e³äí´+“+Ï“ZH5r7*‡–ÒÁtzÕKQ´s‘ù±£çÐát(½—Þ©PKSäÿ“®ÙÓ˜±gܘË@ǤҘþª¡=ù»;À[jÀex›áIp-²bC¹ä0R@-¸Ç”€Ñø+®ÁYxpcfã7ÄŽÿŸÀkxV°æ¥\WÇÿÃ#Iì6ÎÀ>ÁQHŽþE«3\ÃPô ìÅ2œ'·„«ä~^‚‰à.Î]HÞsÁü>nw„ýH1e(‘t’©<z…oJVÕ_õ³í-•‹'´(£U‰ÊËü?¨1eFàHò ?Ξ[w~ã¡Õ¶M†1ºø>©¹'6–ÝÏú3õrúõÃåçAÝëÚÛçóªVUÌ=÷åÂìZÿs¤fzËd£UÛžöÖF\“W2=ÿ—üa Š3«¶ÔWÍ›¾´¯mO7>¸zº÷„*÷xiÐéð ½¹®9ùØáœ°ãÉ…‹O+šWl•í’ü¯v¡oL]l‡!,á|BO,­7Õ~ü¬³7DèOëø˜ðØgqc­£ûG?5LŒžmðÔý¹?lO¤"jnÔÃÈá7#^DŒ ½|*ä\0 õñ>´+,:øoÿ¾  #``Єà?[ïg^õžùîež+¼‹¼‹}Ÿ8Ù½Î\ëÿ9 >`_Àü@³À¸ 1Á•…¾û|glI!kõ±X³h¿ä¨ÄTbib•nYgn]¹ØCrCò£tÔÊZaí!ÛbsKö˜ÐfÈ•ý›£<—‘ð*v‡z1/Cx_æ2œŒ¶³MœŠ;Àà/ìXö®fÍÁItüzÐh” ú0 À›p±ø+rÃ=œ†­G¶Š{Š{L,ìDF(A³P’°³ÉVöWRÉg|µäÊP/îûa˜H÷q¢˜œ¥P áNÔ¡ 0 _EÍhš"î×ih:xH_¢ã¯¢~ä5;‘û;#ýȃ3à%Xy&€ödìák`ÇÁ=Ì4ä á/p)Þ„òCø‰Ä Ÿ@Cq9¼€Š¡=>YxÌ7ÁdÚS6FvEö™I¡æ)Ë?K§(2{ä?ËœmÊ‹h5s† ¦KèbÇ܇PÜIÏ—¯•?—õUÓMt¥“}’UÈ’e'dC©Å¨'‘NÔ†Ñô%ð¹¡3 L$£Ùhv½Ì/ÀÁ]ÊžØ;lYKÞa;’Íg+w(œù5ü,.‰½ÎªÙ»ì ¶ œ=oÍc´<‰$QÜIÞ–•‘!dyßæsg¸óœ7¿O¸ÏG&|[ÆïnðC…QÂXÎŽ]ÈNæžòþ‚¥ÒÄö²­µú¼j°z«í0û3*Ä}ç …KÊå]aŒè´°[Âÿeûa]à¦Îe–KÓ7}ó\œ£Ïʬ¬$T^ž¾:lXˆOHrp~È˰zÿR¯…Ãܪ\]°ë”=—\OyuùúMàƒû_ö‰öíðüNùOð 0ñ?xÀ[áëì"_b†›$… ßÉ*$æ²M’—–Klþ“H66Šã–ómº%}d:éXúª…œ#<{€L#-켕 kxšú¸„‹H¶€P…—“lÖ 7Àûh0<€ûéÄ[¿ËÓè*j#¼ â ­F³¸¿ÑWàˆÁMx0\Ç1{Àxö8ó ¦âÑ¢V°Ÿˆ5;ŸE›ðRn*g@?ðÎýáF„çqØj ÷‚‡0 Ð>ywŽ1p":€N‚nPüQ$qÀŽÜ¡Š»Iæc'´E½COá z"ÈG]¾0œ¦Ý˜à63öŠvU‡†dá"´Õa)ù€ú£‹t3ãÈü§˜©äë¤{$­Ö¹’çÒ¡4¡L¨"…B~\+³—æ)TÔ)* :ÚGïqàoPG¨;Tõ‰ºA ¢b=2/éé5险ô¤¼‰öWÐD6n+à#ìCzà”Fö±Ëé„n¶Mäî|‘RAÜ\;gΞf÷ñX8©¼Â¿àÇ‹ÄñCñˆàq$B¤\×Éßâ6rAlÉB.â‰ÓÆ>å.²ÿ°‹ødaŠò»`'ìäsÍÜ`~/çû~Bž2DµKyJé*,ã¥|‹ T›ªç©ÿQGÛݲ[kûÒv¶ÝG·%çlÒUÙ¶‚­ÿ²NŒ­¥êšý¤]Ës—.wxí4}=pÞ¶æë–UoBØ8«Œç=…s³S‹þhô»ÒÕ}Ñ¢ÝãÂÛ”­+µ\kh˲†~ͦÃ/f6+kGÔw6ÜoüØPÝ0¢yŽÑ¼ƒî^ÞA:·þ]»òœºøÃ‰ïy]¥6ÕéUݧjóç•›Ö,¬ÿ¹ú¿S-9©£“LöGdêrü³Úö+å¥è¦å•Ä’á9)ï¢_Æ7$T¤„¤§MKøCßy#¼^»\[¯9¾B3S;ðØP­_û(&1nGt™¾]»:²'tZT’f’.Dk¥/0¬Ðõzõ ¬;¬ ôYîÅjü#‡G؆lÁ¡ï‚Ú¼%©»Ïï™ä~ÅÕÌ}äžïî™^sü§úó òêgáùÂ5Ñã‰gƒïÿqOþ P¬òhqraä­½e¥åb•& ²y¥¥(•Oµ)O›È':IÍH¹r j„Ê[\¥)ìpà„|¨…x?ގ̱ ìƒà±G}‚°}§!Ü&Ô¦¯h”&ÐŒ¬@Càm0…Êš‘Á|ðDQ™L©Ø­2p: ͹]l Ê îè&*Æ-èÎáþD,_Êc5Äž@ÒC9ÃË oùvç‘0œ‰‡†I‡[˜ :]€ëà‘`¾mb_£Áh.1rç±÷³°‡]ÎÈ{|42u`)øzÁt!3 tÀe8‡´bÿƒôèGÔC‹áæW A±‰Xƒ.#£ÕÔZf ð§|¤o$é61²5’¤ñ6}¬›¥QŠ ŠXEì¤Í i <ºÆA{æ'z½‹¾E;2t=}Œ~+/WL »è5Ì&&‡~Gí¤³}¼"ZáMߦÏп‚âw;KÚ™J…Ÿ0Àæx I%2ö§L¹r‹-g?ðíÇ÷aíI.×)„‹œºÂý ûÑ%ÌðT<ÇpùZÁ^xÀßâï°{Ùc¬=Èꈑ”±y¬žÛ%\T†+Ï 2á;ÿàßóÿ—ç”·•Ï•&*OÕ+åPe©pCx¦tS¶çðÜñ¸c¼ú¥Ý–¥Wë7f¯¶´o°¸&{£vW¸gº×;ñäR¸¥qƒéÆ k7¬:ºÛ5('*Xß¼×)fAD¡.!zhÂO‹ª>·8tÞé\oüZý¡ð˱üÓmÕÆ~MÝ-“/.¿zæŠ_CUmnóµÖ#ƅͳšÝZ\”_ÞV·°¾¥qO“]uBéÂüWÇKJ~¨­¾PrZzBŸÛTåÛPXgsÆ©0(«*åXÚ³£ýÿy¤.5-6,idÍ?õ—Ž==0:qݾÝûÞ§öuøÇC›÷~7è5²(™f°Ni¯³Ñ™éUцs†©±$n|‚yüªØ2ýAM‘æ`$å »­;¦» }£/‰Þ yõ4âJè§û°†ˆ×QC¢ú‡……Î 9ï?Ù§Åm®k£ÛJlÏñžË=Õž·?EÊ'ríÂeå e¦ªMõUùDÍ»ò«U¿¨ÓÕÞk}v\Xu[í¸æoWÖwô.¯ ¯v/¬íŒÿ+íJJd\fmXDÀ'¯$oä©KNi8˜pDqÜ;mµ®#äP@–Æ=ñä©5ÏZ"ZW4«úžï_6­Ò¡µz¶t67­k ¼x¸çRçÛÆ–FóÖ°Óf¿æWÆýÆ.³SÓJûUýV);5ûxC¶ÉñõeEöÍ«Î苜 F—Ü={í씲I…'2Ùƒ›3ýò;O–ªH–óO¦”À”™‰[÷í?’|!9=íUzìÕqŽÚº¨†È/šRm”¾Tã§7D—ëVVþ6,‰ ‰ß´wŒ‹¾4²+rnTb„wÄícífíxÝŸÚ¯Q#¶‡[„F÷†ì Ÿ¥ ½¬ÁŽwB»~ô›áiáúÀ-Ûóªw™Ÿ“ï¯ù^¬×oSŸ-Ú7!cÝ]¼†x=ÚmçöÞ½Øó§+¿MÞõ{Drü Û¸XÚ/Ö-þUrÎÒB¾Aº€*"M[wÍðX¸£Û¡ÌnêÚçë§9M_¹T¥U¿å»Ù½äw4 ç£fP o‚‘ˆ–øž~LOS,#è ˶¢f.Ø *Èur–ÄžÖ=Íò6žC/U|WœCàL 2P)²( Q ˆDüÈzpC¸ÃÜu`¤”ðÝÞân2Ž×ÁY¢‰&Áx”.Òô.ê‹nq¯¹Í$Ùˆ;8ü {áRÆš~V2«Á5À¢Å fãIY‰êànˆèZÆ ž Íb·¹,™pæ°è¡Åp.™Oì°Üþ “©*ÊYˆû’0´ ›áñøœÏ•ã»"™ç)$‹Xu[”4H3d÷*\þF:Hªµù(-?&?¦° 4ŠZÅê+süÒè#TsìáŠãŠ—´7há dÀã"M—À‘Ð[ÅžüRþ\Æ¿@Æ …‘r–f·³ q0 ØP¡”Ãö²“¸X¶•]ÌyˆW.Xì\;”ÝÂv2 ?!¶ä{™{NYOᙩ„ª áßËÎ ­ÂDe£ø8~™H¸oB€r¥ÒDY$lPF)e¾²MùY¹V9ZuUÕW¡²V†«úší‡.û¡.— ǃ6mž5Úúp:dkü”´6ýɡÙÅ +–³eyeÛNÿ¯ðZ¡ütßÒÞò垥þåG‹†æÙ‘êÚ5c3ºJ뛜[‹ãx£SSG­cy³‰qyÓÛúW ‰M¯Œ ÛA×ú‹ëZ‡¶Æ§µÆø¶æNïÉQ«IÉÀ3\nNVHŽEÉñš-/ZzksÊ {OÏ©¼U†NÝÉ‘S‘ÓvbeÑÛÒü¼¤ ÿTIŠÒµø ¸ñƧ$X'ƒáþKKú¬‹ÔæD¹k‘f´6^[£›¬OÖDè>h›õÎúÕ†[±c¢9C¼öKä¦ÈÔ¨Rm®Xï¤ÉÒ¼‰š)‹xÒ¨÷x)ôjd„v§®\+ÕïŒ* .öÓ¹;º]wÿÙë_ï ¾ÿø ò~ïñI$ܯ¾=_CÞy=ôüÁ½eûõíÔv×Ýî.ß÷òzà¡Y÷šÌ_<ѪÖÒZú/¸$Û+Ë`ª¸R쵌 ®íêPî=`OÓ®“+<—¥(+‰ wEìðÛH ;cqÿmb"èÛbjGÚg¢b&Ž8Ø22;¨Ì5|ËHZ„<Ñoh*pÏ’Ë(}ßCcpþ‹-BƒŽ‰Mk&6G…x{‘t ú 3ˆ†x¯åbÎôŽö‡gáï¨9áx+ú Ž7áTÃ)ø„ø&c 8¸¾sÐllNÞr!ä8ÜN~]ôG‘»ãq I#¸ÍÈÐWÁz2ÜC¶x.z óÀ"ñ=[±š˜€ £l  Ö  xE£Γ "zî%^‡¶ÓÏd7¥¯åïŠåÔj…Læi}Õz··ô7E™"XÑİônºXìnrúoª„™À„€Np€ÖHkmXÆDžÑG©Xúw& :‹)Ïg\ésrú<^*4Ì+ô7°'83î ieïð;ør®—Þ‰MÍÀZ²üs®‚˜“jö_ÃOã¯ñ'„ë¼W »T‚zú£ú°ª¯j¿ªPÌÑU™r’˜²na´²¿’V¾U¾RVUÖ)©F©(·©n©BÔclÛŽ±Gv“m£l[ìòç-‹X©ßœéaæ¹-Ä£F›ôGºuÚ°”ÍI¹qݦ•˜ÕL®Ô𩾨AR¹vjãùæ«Í}[V6þ][{©Oi·ný÷ä¶ýVÔgÿkÍëØÙêdt6^kþмÆx¹ùlSlÚ†—M ZTÍ/›øö÷]TÇ®ÖüÖ!mëÛŸµ»·½lþ%ãÝÁûÙ{Ë·žŽÊÿ\B*Z™NY›¤îYù““¦•Íg/”³§æ- ŠTâ’˜Óù#²¾d”¦_O»—R‘P«‰¿÷$þq²WÚ‹dÃÞéú½bÒâuîÚ$ÍwíSJŸ¦= ™¡‹Ð:hnjú°AblˆÒ\U­ù[×_÷Eó!òIÄîÐQ¡±A“S|]ýGÖÚèÎëj-uri¨wàp÷Ñž ]Þzè-õ™á}Îø¾ðwx2ÑßÊ{‹×É=ÎÛ¾løc-³Úb]Ó’ÅöP(EÃ--vZ®‘6È'P}dFi+wL@KÆo)ßûg|½ÿV¯¿6W®1±µV:s›¹Y¨š½ÀR¬ ˜†GÒ×Á~(gZ™GÐ5à×xå‹~aÒéçt3žOjIë Eý„*IW„>ÑWÀXÏÞgúÑÑ´Áuî"ñæb±Zt;oÎÕ#È}€sñß8—¿ÁýÌ.4ïà|9o¡ðµž©ßA&Þ…ux yŽƒÑ$ò$Пé}ð'xLÛà ˆáuxöÀ—( ׈Ùï#;qƱà!³ ª‘ž|Ä+Q!ˆÿ„¶p/ØA¯`&‚âÝáÀÎ@;aB­¡~§˜±ÐéR\eÚ ?:Ï’Xî>òk©‹’ŠrÙpy†|§|›l¥MŽä$Ñæ!õE~^¾IáÄdÒ­ŠrªÎ¤i3æý#\Î*Xù'ZÊ|WÌÍ“’ËMÔS`TL/Â”Ò½Ô ª¦cK‘dYb²¢ù.ÞSÙÍf{Ø6v çÆµˆžÑFN² ¹3DNK²½Ëoá_mÊJ¾ƒ»¢ÜgûA-S?WMTíV_SÇ©ª^¥…ê’*GmT;Ù°ÓÙ«o«ßª¥ê)êojÞ6M¤*µ}¾dãdÇ Ç<;Ó”5‹×w~·ÁuÃÏ;·Ú˜¶.~Ã>ÿ±ûfey&ø®I«>v»:¤±©iCÓÇzózICHÓŠæÇÍ3«Œ‡ÒÏ›žgšµW zžV¿ÈñÍ.?{Öø©Õ´ím§¶«Ðx­ÝäÒÜÇfc]Umd£K㬆ù½Í㌠Æ­¿¶y´×¶ßn‹6f7L>öëaá¨Þ¹¢!ù£KW×=l}Þ1§cQ³{õàò7•Žg¬Ëúžþ­PQ¸¯èÉ):O‘OXg]>jÈIÊ)Ëœúaï_ñlœ_"H{¹_²ÿÕ¾±Ï «cÖè_ˆMÎ\_ªÿKר»¯s™å®™­ÿ G™a“AnX§Ý¥ ÒVèr´ õ}"ž…´= H® xâ7?hGxŠör´IôCýGíéhÿhFw! œò¯­r—³·£çH×—:¿þ3­ƒv†ò{âuÄ«vÓ”UÕŽ§–Ú{+ÍðŸôrE³”ÈnX Z\H»2é…]ÍøGN¥Þ >Rà±;4«äBºÐÃß‚MøO±¿A[ð:?Á-à-J†ë1``×ááh|+Í„!p›Œ7#3’I’áN,Sžb+ð+ð?C$ìxö"^Þ³éh9þ€cDK¼…,Ø/(HÜKbçLªðüyAC…@Cö²?c#z\ÀPC‘êMÊ’“³›Ñ5²ÍÆ™ð9lCGÑdÚŒErÜŸ¸“ø?8Dˆ¼˜ŠV37Äge²E3MCEá ôf3ûá ¼•Â`Ü>Ò;¾‡Îð°‘L½ˆšÌÌ„kñuxZ$î ±«î)Ð’¬ÃàH©£”¯Bª¨—¶)&òË6¼tœÔ‘%*Ù!É–êäRù|:ˆ)§‡Ñ“™CŒÇ3ÀƒJ4†ÅôkY_Ê fi'f3ž–ÐçiÅvê=jÅS«’d°5BAƱ\—øÏ&àèÿÿÿ˜uXTé߯ÕUlQÔuíŽU±›™óä93¤¨ b¡€  (Ý1LÒ1ÀP"-ÝÝ¥¢k¬½v®bçš¿ó¾ÿÌuÍ<שg¾÷ý¹ï󑬢ˆ\D^8ˆtáø®!sÈKüçaQªa•A¶øžè†(K¬¯/×OÒfp̰ÞšŽ1:iÜ´ùí–¦­¾¦ú&Ž›m¶ ßê²ùªñ¯-Þfñ¦ÙïMªö vH,FØHþpœæZåç¼Àç¾ÃbÇvï+®ëŒÜ÷ËÍ1xfÔÚuÙš¼¢Äp[ƉJuÝõú¢ÆÇ-ãÚwu~íø¯U·mL[FCHé„Rÿzܹ´7©}JíŠ*»º£ÍmsºÏ_]¤(|‘ïœg•;þä“´kékÓ&Ëú‡$ÞU'Dº†o ŸûEÀ&æ$ìŠØ¾,T­T(Üä2Å[R­RM—GÛJoÊ==Jã¬\®ÒQê¨Ö)œä'²kÁ…þ$¾]~ñ¾ÀKâÕã;Q2Hf¯Ì’2²ÅªurVõQV,è÷ÆcŽ—µ‡‡kë¸c6É®ßüÂôý'z™{xØ9=µÉßRkˆ¸:ú Kð|šYBâYG‰ÜÙËóÅýìj&H¡/›gØe3Òu’ä;Ö(ËPˆÂ“ð+¢HCá/Ĉ<ĉä #¢Öè+WO‘(bÛa ÎDJÑDn ;˜®¤¡!JwМ#y ÓqÞ†° ï&kÉW4ÏÄó°kñ3c‰?ÃT%x=IÓ0ï¢edù‡Î&Ť_FÍÃp bCäN®²¿¨$RjÁÎÄçq=ŠÇ+i3™H0­c‹>‘Ø(4†/rp ŽF_¡Ò'HĆ“ûgF„¢Á!ôè7ôgâÝè2ˆŸà ôMƒ´€1@ÄlƒúXŒ7‘0¨ z¯„ãÈ”†Cá| á!§W¬wA/_ÏC`¥ç¢.X)l>ßè³a¢ð*óCPÅ8=Æ îGÉj‹k 3µb‡ñºÑÆGFÏЊ9Ãá@¦ œÕHÈŽp'©;=EÞár’È?eì1ˆE!¸çBÊ \ɬeæÀFЃ²@…¾ã>²}ˆ‘›A·è4û˜‹mÔ?i¸ÜHhdeÔfÜjbV±3l»xû·…;š¶=ÛÞd¡½ÿÂAû=±‹öMÜigÙçÚïíäìï~9áaÒÊ$œÜ”ìÓ!é— ŠKOœr(•Y‡;¨ÙÂÕeéAÇ…)^yÅLáÏÂøJ—¦ÒŽï]~ÓZO6i®®þU²¡èMùûÚyÍ[Û¯¶µ¶~mÕêZÓ÷o߀ í—×ý•Žé»|úîé©z-Ûj‡×œ¨«oDíýÝÕÝâ³ûœ:&6sµÉ³J§¦:”ÛÑx²£ò@Ó¼ö™íWZ7fU•ú—V¶å»å¢ÜìÏ”†øõ„XqtPDFÔÂXmušú|´2Ü>rGŒ8Þ!ám|·Zu.´AuT9G1P!T¬PV½]/÷”<‘앎PTé+9¹¶b¨²YÑ%w–ÙÙÜàQ’³“ü…~#|gøôVû;ú”Kš‚ÈçÈóeëTÅÁ÷¥¶Ï=k]¹Õ8¸}r]ï2Øcf@ŠTWöÁKè~äØ)ëcfåì^< õ x'ÔŸÈö‹ø¡x Mˆ_ˆF‰jÑpª'Ù«úþ{?X=2òÄ›aÚ*tf–3:Ø–jÑd ç;B¡´-Âipï²3f‡`4È×Cméx(Úɬ'KÑ4t ™†²ÜKgã8¿C*œ†W±ýCnƒqt$™|Š—ÑÔ‚ˆL¸Ór℃±”ýÆjsØFè7  „H¶cºá.dKGr/#O‰ºÍ¼ƒãÑkúžìaQ3¼ U sÑ  F¢ ø'~‚Nà{Ø>cÁX¸çòó;L¦ bÉj tê£d3^‡§`%,ù¼²V£ßq / —ŒáaLYÊyb_4®fSaঽ›×é%ëé ôì6mDC€iÂP¡ ø„ÁïEÓ¡8Ìû¸ÖSQ‚ø‘è ¹Æ`?ú'™„fá“ F` †ò>À.â>ÐÐ ·a zÃÏüî¶€F~7ýù³GÇqºÓÁcf |çȽү1u3}h´Þ(Éà¶þDýuúÙ¾F¿6/ݾw·ÊªÉÚvü×úÄ~kmÛ Ö?lóu‰KX›Låù›Ó6ÇꀗšQYó³Fç¾/ɪ½Z3±P'mWÒ‚xi¤VäŽøÏ o#s##“ÿM}›{§v}õÜšêÎ2iiZѺœ¯Y— Ô•Ç[µ»í÷7þQïW©WâRZ1¯Ö°E·cr§y—´óaoôµô›ñ—kþz{Ú´{n×ø33ûV·‡4olÛàÚØÚø¼ õd™ÑÓÞÙÜžÚ< á÷²ÎlE³ný¢Æ) •¦E7‹ßWh´%µ>l^ÜhSeYþ²üE!—w=«1Ë&U+áBD¨<‡üTÙ‘÷1Ö?ò¿ð‡¡ÓÂ=£ Šã­ât¢'ò«Ö²±2…ÌO‘ªÜª¥\/7”Η\ Þ/§Êý ¼MùM¹V¥¼/\)Ñ’$ûm÷ŸäëîÕê=Öûº§Æm‡O_à­àÕÊq cy´]º;¸,hÄÀwŸû7{WcN·/Ÿ AW‚îú{Ù»J­&˜™é¯gî¡<Ü q(#‡«!Ãþ}×ãŠhˆ¾“~-Âqè5ëÁÞĺ¨O GNd5’ëp¼…Tp8Ñ!ºÔŒ›J+`4¶BsÀ`: °:‡¡’žÐ¯ìPZ¾eÚð*\“Q,L‚yXEìèzñ>žp XCLH;;†¶±]ø93˜çr¯XO*!yͽF xýÌf‹Þc —Åæˆ’¸tBè%´EãÙqd™Œöà lMÙ½ô4©Å»°)Îd¿³I„%íÄ„^Çá 2¤3ƒÐj ‡\Äßù™î2}`'Üß“Åx:êÅ„ €õ ‘¹ÈÔ3kÑ/8 ïa¢…JaÈÔ g‚å`ø›Q ~ ;°3«C.€7LiåZ9_´[P»1U¯\o«0<`Ö3à6ö¼ÓLÅky®¥à[d;Uc]þ ¸ ›`!;A|JäCªáœEçq®ìtê„? ÔJ´Lô7¿{Ét ÜdV7P Ž2¬pì€KÐYt é kä€ß“»ìšN^’–c“Yc²™Ž×êk ņƆú*Ósõ[®›e/êC³ä·}69׺Œó¼ª¢•Ññq'$GÏWµE$&}Êý½¢«òZ¥ .§Å®é]1—æ–\š°0¼[e~5âxœ0MZø½öRË‚¦þZíºÁ!Wj²ŠŠO?£}¿þÝÎþ;/&v>i×on,i.jëïœÑ«:“v¦»û|»[v{k·ÿéÒNIÓÇêé:’{Ö¾ÕÓÜaÖx®jCuf­Ió¼6û¦ Óë­r&Wè:Ÿ,K9ªþ[ßgž°!ág,Š{®¹´Sž-16ÎJm£Þ Þý=$D~Q¦0QÆ*žÉ'ËE²¿de²£òÁòAò¬kòDÕÅ,åUY¦|“üŒ|‘G×ÄŸ ƒ‰ð< a7úÌw¥‘°O~¦økcðš°ž)"´Ü™ù|óÄ>"'x>^á“t%¯uxç½™Ðj“Œù¼Á'&Š9È«¿ÿA≀,ÿ¿ÆŠFAÞ@QhÊÐý„µP£`%OßOTûÌ÷É}DD“Y]n’È_4G䥟`pÖ Ôhƒñ^ãƒÆÕFÐHÏ4Íbªåò=·wß°îsœçù^ù ¡>£«èSÚÛ÷¿,ç¸>´Š5S¯Ó4¡1:ῇ•ªŒCºÂßEY¦ /˜Sq«Þ·ùl]Á‚eiÏ3 £ªûZþjïê´ì5y–ïÌ»›Æ¨Í#búc­Ãâ<ß[·[é³7âPÊØë2r‹‡? ªþ’2'KTýµíCÛì–õM%í#®ldóªý®VO\}`Ýé–;íŽ×ºöõ 8óG¯a[{CZvce×Û3Ë{I˹úÑ5M-m´[¶ ºE¥› Ÿ” ¯lª|_ù¡üMqMYIýóÛ¦eO²ýRâÔCc#4މ4÷ÆjN&dªÕj.®!aRBT\nÜNõÀØ1ª˜ÝÑa¡P¶HzŽgU,Pê*v(J•fŠ&U»|¶"Há¢øªÐUf+¥weÞrCU Ûi’\*ìÏ×à-±æ¹Ó‹š’ éæ«Þ«Þ„O_žþ½(¸rMͷƤŽ÷šJˆý<õ´HYó¾U§ç}¯}ÇéZ™ñ$!=¨òЕCEÎÿ¹,µÿ°7Ðêˆg™ìƒòJ¤(úpP|—©L¾2b²æMþ¢FaÛ¢6ßšºþÅA7?˸ÔQµ¼àB•¤}iwh—¸ëQÇóöe¿Jó(Ê.¬ùÞiß= MPµBÒjÙzµÅ¹Þ¯”d-0,÷/nÎ>ž]s+Û¦hi¥uÓÌæÈ xª85[½,neR[ry²e˜ø[qÇÔLôº«X󨻑4jdÌ…È»Q\Ô¹°ø7i«ÄVj­è”k”grÅl¥…ò„2T±_1H™£lP>Wì–GÊ×ÊÝå¯ä?å²6ÉÙŸm.÷íç9írñu©ôܼ@Qïà®ãóÝû¨÷SŸó%²ñrSéX¿Ûs½¼Ÿzåúšù)Tïè§#H™èÝ%ÞÂmä¤"÷wàѤ ûp'¹boÃ[võ‡uMÒÄo¹§Œ;x‰‡“.ü'âáú«D=ô¾ :a‘Þ3dŽþÀb<x£÷x žÓ õ0—¾Ä Euä*%Øqð".çç{)òFg„d„oáx&9}P¾³ðL>۲ȋ¾#IgËóï9‰¥qx<Ò†'à4_!x;‰U°K¹:…†ðSÜÜ†ÃøÔ›DW-Ð ¬Éñ"v,=Ɔ²¡TÏ3«™#ÈVÁŒ%ã h  ¨_hÍ¡i|{sæBIòÀŸq0~LÖõúNözc0ŒÑU(jC1¬ËaÏG ‰gf1sá- k™‰¼NT |'ÍÜeñFÃù\: æþÿ;Èsd<[H.‘ý8 ?yÆ/@„ À=ÄrüÄ~p/tnŒ0€Ë¡ï‘΃!p\(\(4ÄØ‡6HŒ|ÀpFÑ'8ÖÁt8ZBo4€$SK‘¹ÁO±ç+¿ç’ä˜ïY³?Œ+M6›b³-;“wlܶxKÔ6™…ùc‚6ÅìŒ+UÇÄE$>H*þRq<ÿPä€9!ãÜOÕ£ò‰ÏB9YƒòEhYÄÜhótTw«IÙ høÔ~µgNwBó—ŠË9Ò¹åm»ºOv¾m´-U¦5$DFdxL=2ëØV÷ùîï<¼|«Î‡f(°¼E±0ty䙄;Ùv'j¢óU‡RjJ×ù׫*³C5¯¢’“ôÓ‚3.œÜ_}°£´÷ïÒtüj{ÒÒV¾?õhô‚”±ù#ªÍŽ×Þ®þ»DÔú­é@cõç¢Y¹KÊ¿V_«™Z•’w2'1çÏ¢¤šš¦’Ƨ՚¬ÏI+ÇeÊONIš³1CÕã›âÂÕŠhÏèÒˆÕGÕ÷ˆöH ž£Þ! ­WlV¦(Âg•zªßB‹BχΠéRšªv«òUTyÊãJ;e¥\"û¬¸#ÏW ”] ®‘~ö:ädn—gèiâ1Ú¯^žêçê>Þ«Ìû7çb¯Ÿ’ZO¾Bm²‡«ð4•§?Œ†”Âh:ßëŠÑ>¾y…ƒ§ð*\gà-hú}s˜uÌFÐ,tC±¢e†Ýââ³d¼ f`+äŠÒm¸fÃ5ÈëRuÂ}`C˜  œE³ÉØÅ4ƒ:f< ð4%)â¯%C ônó˜@ÆËŒT;„™Å\O ϹXÔWšW˜q²´Ñ¶²(//ƒÉ8Ux¸†k³owkøT¥W®UÜ~*³bz£´I\£)ý”gšiŸó¸Ô»¢%Ÿ¿ÿC¯‰+SK£mÂ7…=V 9º2Ê!ªƒbs#Ö†:ª†…Ø©þTU¨Î†%„7ª¾«²Uâ°…#"þ  êRš+oÊ~ð,œ¨8 øGå8×ÃáÈÚÃGÔ.Ë\î;fºÏð1ó¾èñ‡÷z·éÎ-Þ÷»Bþ bå¾…Þo]û½r]:üÜ3Ä\ ¶¦æâ»âï\ í#Ö‚ÛD3xçP)ºÌé=ú‹˜ˆ²Ù×â«ô²Ÿ}Æz¡t;þ̨ ŒXSýA>¤‹NäVðŒ²£ùßTèâ_x=wTtB4€ž#ÝÄŸxá£( q?¶á: -vÇŸ0ƒÓxJϧ>dù…} 9Ø!øÆÄ3\†hD&áS0Ù7ÂB)쇯ù6ÖÇÓ2Ô†ßÁ×°Z€—P‚å`<ÙMG‘cˆâkÈ*à@¼ƒ*ÚK&à‹9kkÞèü´BqnLvKC|JÝ”‘èZâѨl (g’vÉyOñ®Ž±ÊÙ[5 Õ¾k^ï¸3ûzÿìÞø®hQz^È1ÙJE}Tq —¥“’¥Iÿÿÿ —wTWÅc7–`oØ jb‰±Qvf^™™]:‚ŒTl¨ˆ MÚV¶²ô‚é½IYv)K±‹ÄØc‰"Æ‚-úé·ç3½÷ÇœsïýÝkSv8¦Ž[‘З£¹8ÔQßÕ)ҵȎÕe4×7¸˜R1² #ç×ó¯ oÕìj¼SešU’à¨Þ·=¦WuF*‰2’zÊ-ëTáq#¤1SceAâëÂ-ÂmÂw‚jI»d­ØH\'’=‰ ÅF–œ”Ì{ˆ^%B,| È” FÖ„âS‰ž–G>yâ‘vLã½Ýÿiˆ,à¾KÎxûl XöETv xþ™É~ÿø¬ñKö¢Ýíæ[}·œeymf_±^Ü}ìTæÝOÏ`žÑ$Äs1Zƒ3©õÀì's‰T"•Éã&3bf63™éc³žØ˜p挀2r°™Cô^&m‡'ÀyÎ(Ȥøƒ ‚¨˜McWp’<"ÁŸ îãÉÃP‰nÓèÉ<,¡ÜÉûpû™qd— gì‡w¡/h;“È»Á›Â Ь% ¨xx Œ‚{a*ì 0-Wsï°/™Ñú=æ„›w‘ƒÔbrU>Ã$KÌ£œ·ÄnÊ’l攃Pú`+üDO§ÇáÍTå öQRKþ žÁ 8€ŽãTØA9‘ãif=]FÏç^¤õøÖÁ èŒN€@ò9@«Ð\ü’Œ#ó¨°…Àø££±;úŽÞàEŒ?þȘҹèUKŽ£¦¸̡ҩÙT)ÙB­…>FÆxò '’©ˆ‹/!/|=³áÇæ[^à¥0}t=}Wc‚‘²k¹JînnŒ%ßjºU„õfû©{çJÙ¯ÜÙc?~÷cŸ áÙèM±Î’?ûæF„¦Ÿ$ï8aã}Bâ’ñ¥ü§šçe ÅoËÆT4•kªÇ¶ˆÚ½4ÖÕ  ®_x\zû¼@ý0R¡ä§ˆúE ù¹âqIʬý™.çŽå]:g›ì{BÞ,Þ¤|‘”Y~®-W—û4£-•H¸*}-ô–•ÝVNK_U¶³zzùÁ"ï’•k85JE¹Ú‚©eSsÊ2’ŠÜ÷6Ó<,·N¿Ÿê»<Î/7 ôf\WWg`GNGr§m‡[sÍø ©\" Š ùKà;%uJ7{RÆôÔÇÉ7’N¦hˆÖî×5·+tlÓ½úYMmMu¡U®å—ÏOÎ]ThT«oÙìXg}~wâÅõÊØõV•F^Å‘_”9+,T»ã‡ŠÇVˆ;Ý ì“-nÌ´ñ—ð‚j¡¯ð'ÙRI¤x‹ÄTl,œ(ˆLEã…‡c…î‘Ég¿úÝ?ùÔÏ>Œç-:ÞqºÑ¿ÇÏÁw†OÌ8)ì¥P2ƳûM§B'é«=‡]6صbbÏ[òyÙѼÖßÇ6°OÎô0ÝÎünP´¾ /QO ;êü•ù‘¹Î^cÍØ[ÌnÔŽ#8±”ô¢!¼€MâÆ[Zò¶rm™dè~iW£õ¸ õx"¶ãpÖ‘9),A'©‘T µ ­bâ¸ñjz5Ä™iáEv¢Åt´z »©@¼¯fLèôÿ…ô r0æÞ1h] ¦8è€Aã»Ð¸VwH3pÅ33¸\öíÈÔÑ©ôotWE‡žpø6£)0~‚éÔ0‘`1†8ÂYGn!ã©é€ÿ‚ê0™Œ¡{ „ò >’€¥Ô]ê2 ÞGI¸šÁ׆¿ €uÔG˜‚6SÍÐ ÍûƒóÄWX‰ÿ¥VQ{àhôZŠÏ1à-èGYàGÊ2à.êÅb´ÜfÐÁX‹PC=ãäPÀ,&Çiär€ìÛî7x|¾nH–™ÈùaO:˜Î6øìgö%›ÍMä–3Å´³ƒáñTVÙ6¾Ö-û­¼lß:r÷°GƼ›K{C;ìs5:{7Å·æß–¡ÒÓ‰^Ñ>±sã*dGׯ­I©Î}T²¬ìX9¿ÆºîQup•¢qÖ¾ýN둺ûÓ«öÕz”伎pãßâË…Ù¢'"Rú_<‘ù:ãHú•„¢(“ˆ_$ÿS*cånjEìÁø¼ä£É«ã¿&˜Ç]U4*Ū7ò/1²çÕÕ¥U¹V¤V:V÷TÖ–‡Ï. .WÕΫ›WßtQߔӚ¨é¬“UTÇ—ö®KÑ}ïšÞ]Ðõ¼c^ç¼®zýõž÷úïuÇräoC‡¨…§bÆ&'æ³V¿MÕ\0®|P1\>®öFëôö&mU㾆#5u•ËK—–,åÅdË6)Ý_#m°lª¾Ÿù$Á]Y-·VNSý.ß«º®æ)åEQ[Ul¬ñùu™âȸµ1ƒrwÉ þUÑ[ÁWAwd¯°N4$~/¾(¹EÙ‰·ñ……ü+Âüþ<áµ°i §–…nR­ K:¹À{ƒÏOŽßò›döƒd»4:´çDÎvÏ“;ÀVÛ ZÏázà0€'æ¹[ös_²ûØzµBkô\Gûbú½™Þ„FrD`gb±Â  ½YÎf2¹ôïôßðJÄËÙTú:[aHÜùL'eûay“^ŠŠa²d^Ál4}{`5²„>Ü~¼Á:8•C 庑Oâ†Âý â L2°-šk 8SKáSÊÅQ8“†®°ƒ2‡Cp?¶ÅqÀ3¾Aê q‡Ø…‚éÓx6;‹ÝÉXÑ7é 8Õàƒ¸„Á7áXEÙR7p6ZÉ(‚pãTr~j 5\màQ(˜ ¼a ¬E9xþ Fƒ“` È¡Vp¦pœÀf<Þ†™pZ)x ¬DÏÑ” ’/ éÁmzh .¦}è‘x'ô ¿€³p j"ÿ£>Á#(9Â…”åßrƒ@è7 ¨  ¾T©'†©ÝÔCj#Zj`£}¥³ ÌÿÄø3Ø$±ù<#ËU–¯­Z/³ºBObYfY:ØÞ¶{hgϳ5µr¶1rêvÝrª"xØ#qMú-é‚£…‡¦‡¹¥ëZkÛS¿UŽ(=’??e¿L*r§IÕªëÉos6å ç}+ÿ^¶aIUVÍëÖÍꞎ®w-FMÿh-uK‹Å–¼Þ¾ã(È–6Æ;¤x§~Nz,—«¢3—åX¦Š›¦Ê—˽Uë›ÔÃqŸã¹É©S·gn,¬^t±«¾¥zaž’×E÷ jó?^0© iØÑò±ùDËJ «û]§hÛàR—\7³IÔv©ƒÖ7èªZšvQçmýpïô«»/ ÚÅåLŠ{BMº{ê@‚MÚ¡|UrZqàES­mÛ¸]uBµkCvÃ@í¸ ×sB3n$¯Lû3 ¦º¥íH׿¬.™X”W”™ÿcÆ„¸$…‡â‚áÐr[Õ°ÊDy]6CN(2T^1Ê8eÜ€:"¶+q[‚M4OÒοùZ xF<â·‰® ¯ ç‰÷‹oŠ…n‚ÿø‹øîü9Â}ÂCáŸú¿ xš˜êNÍñLð­ó~Ù+Ê:;Öç¥Ë놋²©7àùcM¸³a(ÜRÁÅ\닞o”M“ÌllN€ô SjÈÍÑsʹ£Ý¨ÞAÈO¤ÕÁÙÀ µ€…èÚÇÈ·E‚Bp쥮Qµðå ¢— ‰t‚ó°_¦xslþ°]g×n“cål}Üf§•#µã''‡ÃŽWMÖü>Ï]¶çøî÷Ošø˜Øt žlc˜ð¬\f,u>!ÜÞ±ï¸le·efó¬‹ój8„)FêàX÷4‡ô}©^™¹_sV¤V:5Úµ6¶äµtkôµ—šû~êÒÖv7ÕäŒRw‹5‘‡#¯El³åß“›Äü“ Ìœ•·&wJÎÒ‚ …Φ¥©ŸË¿‰O‘^Wñ–$™¦Év+ -ö*Y]±¦öÄÅԦκŒ² ÅcJ¯—W•ÛVÝoÈÔ¼Ðlÿµã¯©Î^{BGk‡4 MsG]÷ÕžH½}Ûˆ‹m-.íKºìz¶^Šºò˵ÃWÎuŸh ©±oø¹éÃÅÍMŒÆæ†ñÐwûõ{ÛŽÔ+‹&)#+³sR{nĺ©¿Åý¿2þj⪋dœq9-4µ<•NŠTʳåÿS-ŽQ5ªþUV(=åÛd[åJå3U£üÅQµ"&=¾1éçØÑ’X~JäfA4?\P¾P¸VØ.¼)je ½…Ï*á\Áiþ§Hÿ]ØÉД`¿ ´3õ§©Ó7ý'ÅG$G’NɃû î;ÏåÐÌ"ú3ƒŠ4?fºÔ,ÇÔ”ºD.±ù•µd‹YK&=†7x*v-RZ½w}µs'óÊÐo8‚)Åo ­È“^Ž0ذbrÐF œhGºŽ\A}4k Ì„ÀFàIõ »L2ÍÀhýÈ p?CÈEè½îxÐ@«%†vŽz 6 ‰¨/ 9Ìmü€B.=ØlÓ'`4\L)©fŒ ¹’<@Î"¾Q+áМª%n‚EÅ+À#tÚÀ¸]ì_( gá-L!=ˆëÐ!8’3—Eìµhâ\'¾oÒb+'üŒA5ÄLÃÎÚ‡7ã)à ±ô]ðñµ m¥gàÛPOezàÿÀj&u–³†¼ ×"'µð3Úœ}‰“éil!]-à LzêÙ@i@ø‹¢ÀWðxÃnû ãÑæ ;‘¦)ª¢ú&ö„"X_Áçð;*DáQp—t¢þŸº¢EˆCDƒLz:zËüf öœrwßWêÖ¾W°g’׊3ÑS‘{à¾?ví4;„NMòšàõþTÇ©gBd3³¾ç+ÓD)ÏOÊ ©¾Ùéž¶?ÅmÓñYãSÛKº‹ÂÎñ²žÇi[c²’ò‹õ;/¨ŠVWiªÿW]w¼ù÷ö];´;g_v¹lÚ³K_¬ñ«ŽÌQËCîÅœ‡þ|,ÌQ\•³5'¬JY?»Á¶&¿Ä7ã£ú¶„XKÜE-Òy A©dꬄñÑLtp|AÒÕtn~fYOÍÝ:M­e¶î]͹êG§iÕíÚöéí£u_µ:~WaÏ`÷—ž¾ÞýÖ}Ïzz¶tµ•êfv^íü¤è3½¼ýj÷•WBúòºê;=ôn]µ]j}äK?í|Ô§ln¬Ô})j-é»`œ–&Hý”×feˆ*±|¹êa´›zÚ.Þ7aS²Gìú÷èÏÑ z¶ê“ò©ÂT!–ß•%J¿HÏIjd{TÏÔíêyªFukôki¨Ð+ì1·`¯àkäH¡H-¾# å7 2„Y¾ðôˆäÅ¡}¡{Cº¤¾ßÎlñ•Y¿ rfFý"7“n_8û߉ö#èô‚Þ…ýпd01ÁâµyÅÆå忳j§2Ç.ö<« ÒNÌ]ºƒN¡&üîúG?{f±¿Òÿá;ôe|þ„Ýé_é"¼ŒYƘOè ¾Ç|exT,!ßÃdœÇä£eØÓà©Cè+ù Øâ…ø*}Û°þ/A0ÊÑ.jn¥×b \ð(€Al…ýð¡!Wú© ŠúŽì =ã6þ€#A5¾ÈÞ³r:`/T©ˆ&$“}œšk\œVú1³ ²É™±[àê~'a_ÜgA”ßÙ€§ ïZžj»Ë‹\ô/|}ÌÖ¥ÚpcÈ›ˆ1¢>UV²gÚ„Ä315±Ÿb߯ŸËXS¹·9¡Þ½^×Z¡û¢k›Û†t&]‰]o[×5Íj_Ü›Ü3»ç¿v“úŽ´¾ÈÏ×§éÌ› þòKÃ{‚‰ÒB+ mðZivj–¢AÀ8!¬•ªY*—Äìt*ñµrÿGàÚ(ßä˜Ôìô1VÙe+ê²êbÊãKŸ6^Òú·ÿ¥[¦KЄj6öÅÞ(½~éÔ¥«—>ö•õi»uúö.ÏNBw@w¥ã{O[Ï“ž•ÝV½f½·z4úšÎîί]³zœ†¿·~{y“~{›Uýe‡K; ©bœ|Pí£|œµ6=Lú1|²¢@¹-êJôÎäИ·A¬Ú¥Ü(Û,+—™È^‰ç‰×ˆ?G9EŽú[~@ž£ÊSY©nÄ,íUXÈ/)W©§Ê•â¡FQÄ¿ŠöI~ßݔ숼"ü j”ä‰7Š=¢*£\„‹Â·xœ‘ø-ßÇ‘ ÈBTcE;ÄïøçÂãúšûí÷_áž`ï–³ÌCj•A=6›o–ÅYÁ$þ%'Y´üÛ2™½Ì±@t1Þ›A«Ùnâ;uH8+q)ýœq¥Ë˜}ÜU¬h-öPîd'Ùl`ÃÞeFÒÃhvE­B{ Îp…Átµé92àjðd@>5L>A¬(MË\“bšø.mLþÎrëºã5Ú¬Ëò¨Ðm¡6¢JÙsù{Ù®˜†4͹šœq)!êxy!?4ðžw¦—ù±"3¿¨ö‡æ·æ¥Í‹ÚÌ:ïè‡ôKu”ÖêÿÖÖKïµyÚIŽÝ)½oú&Ü?PÖ:¯ôD±ª¬ vUó¼Ö=m×ÛÅúÙúñúlýî®úãú÷ËZ®´nh½¬ÕU¢]Võ9ëkÆí¼„óWÎ}M›–P§:›Ÿð^å .‹®‰©I™]Ø×ö²í[åê색3“n$½MêNÐÆ:È…²æ¨AùLÙZE‡â¼)ê ô¹lžt‹ô„B§´•«¢6ÈÖ)fËdÊ4Å ù}iK”­´Oš$q–~•²ª/J7ÕÉ6È(pND¼$+ªDÑ-ÿ ¹l¸Æ·ÓOH ^*¥ØFáwt0²¸Ç‰'‹-‚I_Ò–üL¦ï¢Aê/î_VXÍŽåZ°,ó•cnfg®„ö@Šn zìƒ÷ã˜jöÓAr,Dè?v92Z0Wã8´ÁÐ’ÊÑ$ƒ–*‘‰AaUè?¸ rA‰¡gy3+!ÀS´šu¡/a…)ôƒ¡Y•¡Kh,mÉréÅt5nAÿ€‘äEöÊ#ãÀ uÏÔ0#íœeä ƒ§dª… Ç’ˆ¡êá ”­’ñE2ð §M°t„?ÁI±œ Í?š­¡î“ÖÈl¦0enØ\{Ðx*•Ó»à¿ÔXò9g&g—ÙsóhÎóŽùƒ…‘E Ç–èå\7ÿh~È| áF¸šÿlîGÌ¢Œ€˜Š5xíÍ”Ñë¸ì^¿UŠUo5û™]Ïš ƒ¸{à›ÜxÅ8öémL¸8ÓÀœ~h)‡×ÒqHÊtqp[YO«Öë˜RË×¶›ìŽ:]ØbûÙö­½ÃúNn¿xû†^ñqt»å¸Ýá©ËXÿ|Õ‰‡Ð{ÇG{:Kòg¬&ú¨àÄé/G•Lwúºcá^ã}C¡£¿$nM益u%ÉÄƒŠ½É—SoÅFJ6Šü¢&‹/FhB·I³_·üÕž¢ýÖ¶T;­ëTWdãŠìªÄô”’Ü’ê--Þ{Ó;×6Œ+Ë(ûZ³¥Ñâ"U°8'-^õUT!P§Ð9‹óÂóvæ—\ÍÏ/ÙS}½è¿Ä‚±~+C.‹ý”]JûèñÃé›óÈ?¼@ºCt?êÁ²w‘¯U.9••w›âtž]Ûô¾z£î ½£.ì›ÐáߖгøšWÏÁ6;ÍfÝÝ®#½Wâï­¹·¢ò÷$ElÒëÜÅ5?ÖÞj¨ÐDtPæß:ìÚýt.íº­‰v²¦A#iËj±(©NÞŸ–uav᨜¼äaùmÙëØÚäøÔú¤Žøô¤ötAÅHûMõŇ²ÿÎæ^p(9šg’q9!)¦Dê"óV.VF*ã]r‘R¡úEî'(zUוX1Km;!ñFÂ@‚±Ú8ºAiû8ú£r~Ì(õÕ‰øÉ/âÿ–ìOäOÉÒ’eý’Ö¤8¾6ì¿_ôZ9'÷VQeÈ[Û>ÎÔæ)@eÑÈJpˆIÆØÐ×CXÊÞÆA8’~É]B¿‡ë,},ã©Ï0߃‰ôY¸ÿÁ&Òÿÿÿ —g\“W‡«¶jH­ ÖÉ3Îyž' KAqàFeï%È {…™öÞ„‘ pRWÝTk¥îYõÕ7¿óñ|¹?Üÿûú_Ëp= _EQ—ñ'(†{q Y€ké‘ žxLV™Ø7ŽãOáß  &€%0÷Ƴ Ö·(â‡Á{@‰o0…è…E{A:îBL&^ƒÍøêJo¥‡Xϰ’Ñ?Ò›‘}Ö·éRd*>¾ÁêoëiHµe9Ò†¥à_q5R޵9>æÒ«u4ƒŸ6™‰6ag‘aNÜ:ÜóÁi0èñ*\¿3 =ȸ †ÑÖÒV#wÐ/ ‰¤¹[ÆÑÌé·év4>ÝvÔ’C»hu†¶ ]Š~G®£ŸhO¬Æèõx/>‡ºÀ¤³n3¯0͘?3ZHõ´)Dù‚R‘§ sb~ª`؆·c£èdÙæBòV§íZV Á¬·ÏrúïØo^{=½tžÇ¼+}ÂÏn?á´7÷Huøå¤Â8·@êðÞ=>Ž:fiIñÞ°·û¬ ®Lß^úLúU¾O±¤.¨X|à™Ã;ÛSo’@æºÄ?â~NhNþ7ímÚÕŒ˜üû‚·ü÷y‘ì‚ÔœWi{¢»‚S/üR²¸S¤ÉU%k6ê¾è`ßüÖÇâœb7¹<@á­<¤þ¬ùܹ·Ñ¼öDÃÔ6¬suGU3ÞÐTȽÁo¨1m,­2ñäfêèõœjŸËŽ97î“-foÈÜ‘+Λ]4WÔU5¡Ô"ãqÐɨΠ^{Éâ{Íg:^+ïûYo64cØzøí0çâ¾+ñw ´hj~Щ¹šêwZÓÁ †º~OÝÔÞM¼ÒùÜawezsfë—öçŠ9Ú2ý}»Î^3K•×çÚW×÷DËפj¼Ô 5i%ÃÜÅ ì®>égÉìüw9÷ üKgו²$O/<Ó2¡÷©æºji׉¦MëÛ#º6t„6Ô‹êx· tùË8§ ªòÝò¶æ>Îù%¿+{[æåôßs^å¼âÜ.¤ó'U»Ê´ÕŠBœàœ3y‚üËyu…ºÜ¹Œüg¼Å‚Åù+²úÒV¥žÌ”ŒWöÖ–ºg?ÍOý-MVÆnoùXC÷7Ý[o[Ne¿P‹‰ï؈ßà|â5h ‰H2„àBòUé:rÀ¹žJ"Ç©qxDÃ!DX<8N0áÉÇ~ &ƒ47ü²qÿGpseJÙ‚z@¾€7àG¬ãS|%¼ˆÛc3ñhü6f®6î ÿÄrñG ‚`Ã#‚;P—|€‡àCâK“ óSü"æD›k¹Á2‡öâˆD!läí=ºkÂzñf ®gàËt`Ô þóÆ¶ã–Øtl¶¿‡|¤O„SHS¨Á×âsAnÏ«HÈÄÕØe,$ÂØ–]­-Ð44 ½¼°Féµôëëg´;t:b ²¾o}þír¹B«¥½´ÚI¢uâ©Ô›˜\F7#y¹…iLÑódº3V’K«ÃvàE8 ¡·X#ÖY–Ó¬VlŸm1níbc7׎tÜst‹Ïç0븦óáqöƤ±ø0¶(ƒø8ðÃ9nìŽ|¼ðJ¼ù™®>N»jKN´dVë.˜œ‘G®*™$;5œ1ìªkT¼):ìcã¸Ö᲋›ß„ÐïÓž›ÏâMòέ,æsïs8ë3ã3§ä­ËX•æ¿ÐûIy” W «^'íßêlYc£ö÷ ïúãÊ㺚AƒF×*­ø(Z,ùPeÛ¾C1_n/siõ®ý³Î¿-¬uAíArNLAWõh«¤ùlù÷ÞVñòŒ ÚÀ‰ßr@AïiÍp»W×årµ§~΀f0à"ç²ôJàeß!7ý%m±þ¨^¤ß£÷Òîï?0<ª?£äµi&6;µ­ìØ"{¥XØýC÷°z£n~ÿýt­¥º¥G lRÚõ¾ÖÓ ún(”­_+ÞKòëWÈ1•A5µípi­ä÷ÚÏ ùÕ)¥{…/$KZšeTSµNªÊÕ²)»-²c‹Ô¦ebÍ‘²_Â’ý\ÏX¨Í›Ë,rd•çæåÌ¢åúzßÖð”®‚ÜÞ IA /H8‰ï\ä\t]¬-ÿG´UÀ*ºY´¶hMŽ8;S ÔÖ|ã¹HJZšw¯+¡;Ey©ëIÖÝ#Ë÷%³š¹ä\æn‚ÄLjFȇ}@E¬ÃmÐß±™Ô$Öz–/K*Èf¬ 9 ˜zR XøÚÀ0¸€•ÉXHÞ„/á\Ž ÖÉÀ«¢û`à°Î0ʨu¤ aAJáx®&C*Ư¤’œBšà2h‰}Äí‘Jx4‚Ðfƒ ðW`dÀ9è=|¢BGѱPT…ÜÂÇñE˜Âú°Õ«—ÈlÄY‚=Aqru?oÅDxèf+Ú®án˜'¦B)" ‡1ñ…°ÿoÃV€z"˜€¿‘M¨ Û˜ËMàðAPô+Æf˜;ÜÖ¡áh:b½Ÿö?³î³:NK¥ŸC¾¡ñøôG7G{‘:TleGK@e`.\K]aø2—’OàÊÒfšÝw2ÐùŒÍÌŒz’†eaPK´Œ`ÍЉá@™o¬×6ÕÁä@³—ktNúþ’îÇÔ¯OÃ\£©Üˆ¢ˆì‹ÅËJ-ùK³âBªüSB>…<97t:ÏCpBá¼Âþv8Ê?ž?±ÀgnHmö¯­MÚǺ¼¾´îxÁªèÇA‡Cw†ÿ9fføÂ˜÷)ß²<òˆJÇJ.ç¼Îþ)¯?ÛÙ‘²–gX$9Å,Lû³ìNçä®JEê’.Y3µw‚¡ˡã®tNÏ õOÝ*Ùé¦=‚ ™ññíé¾¼ æzzºã»oÈõív-ñ¤IU³ò%©´œg™ GÜŠ”8\˜Á`g±MžÅNêL"³\ùËËsÍâÕ1u!Ü€ýã#oäþXö¾EعG±ß˜öTÝ”‹îWs®4^¬1qždà ¤ Î?¸Ø1l>°HØ›¯6è÷óúGöRå´¼þ|ýQm š§Jìæ*ªzšûÆ{‹äq­â6¼Ý¿ÝM¹§wºnµæ÷®ä¦åM÷Úkω;øJÞ쪽ÊU}O5EÚm½ es;Þ·Lmš\ïX«ª­­¸ZŠ”¥•z—Þ®L*{ŸWDqÖm,8•˜•W%´ª jŽ—ýØ=[‘T6‰c•ÄŸZQ‹V\â¿Nï´îþW¶Z¸Ÿ3™§&æ¤Õe:g¯É¥gøÅnŽ÷ÎrÌ›PÍÖ™hƒ¢»‘ßßß=ʸ ßP¹¤ Ç`Q‰D6hÇb °|1r.‚Ä]b+£ˆ’R¦d:™'æÃÿg·‰Gp>IV0à#¼ë±Å¥ôë˜+XÂò1‹P‘H |Œ:A.ŒÄ6#0˜aK™1Þß@ÿÄâ <¬¡?a»p'æÂ@N {Èdø}ƒ®D'L´vAè›­êès¡ßhLå't=Zއ¡ÇÑyV3!Úl nJ€܆+ñk˜Wà —ÃßI6qdƒ8ð¼\b „oL<‰I°Uxþ?Œ±áÜóD‚Ðõøsz0 µî2·N¢gbkÁC;‘bÄ iE‚éjº? wOˆí¬VÆj!#™R0›™ÿ]„‚ªgrlÜX  bð|ã„wƒŒ£lŒ-4Â!Á R%gegµå”—\©N¬º—ýG\=(*'´0$²–íTp"ó@œôÜžƒS÷lsYç~éð§C+Îô¾8svç§`Ëè‘®±ÏÓ9"É›îML_tç’/ ©±33Kókò#ó‹ùªŽÖ×ߪ·®]¾œw¹äPñ³œ±Ô•ì ™ÅñÆ‹~*¸Æ[S¼3§;LS¢ûu w°TgÒûW—£Œ_íZÔ´‘·0s]¼s€ÁÃÅwu Yu½÷°Ö –ö­î:ݰ­z·¨¤X’ócƳ´¢â¹Ý'‡u‹Ú?Í ,YTÂÖ$ÜgïN?‘ÕUU±½íSµ™à^®e$vúÝÀ„ßÔSÅKÄ?•^Lk^¬zax4Ò7ì9òÓeŸk+®M¼ÄîøopžA0X?üíòÊwnuüÁÜ¡¥oC«aÃðŽ‘û“Áà~´ßkð¯A™ö^¯wïß}Ýåë[ý:ôÌÒ¾Òõª9Zÿ¾Z™¼¥·Ußr°tgñâÂ‚ÒÆ^Íuíký!íJmë¥ÆÈ·æÛµ¶ïJIIc)Ri[çVû¨VU5P–ÀÍßY|¢èç\ÓâúR¿šÄºÍuOÎ×,(m,©,^(t*­OMä ¸Vâ[ ²NIÏJ‰sA&·HVè›q<_ž5=Ý*yÍyR^Î2Ž5w—°FRÓ_v*ezÀz=cÎ"—Qk)ñ’H „p‰Ñ«‚¡x ®à‰D9ÌZÆú“q˜Ú ±»FóÚDž‚×Á4›l²(ˆdF*õ'±‡4#—?Àÿ@ƒõR¢›’/ˆ+ÄNÖdò$؉ïǧ ÇÁ¨ƒW“·@3fE¯b‘Þà•¸½I¥xø ÂR±9Ç@#>Á<°µ´+×]¨õBä(M‰MB÷¡ãèU€âå˜0Å^¢¿b|4 [iäO™OÞ€g` ¨!<?r.ñ?ü~ Ÿ {ÁM|2î!FÛª‚ÿá6 €×F³LÀüÀ/@€ßDgÓ§Zm ‡X}±ÒÑoa“@(6Œ¦¢;0 }6"1"†­Ã&â…ø p `òlš˜ÒGÐ~Ä?Θá@:ZؾdåÚx32+˜Ls­Ýߎû|'+ùNÍÇÛ4HËìD«Ë«/Šˆ¼»a×ü‡Ê2—ånæüpbw‘Û~íž´“W}ôÞ-ÞRßsìcû½&["ã·ºÖl‡‹WTœ¨ª ©¶o´¬›+ùR4³0·8¬hŒëP}«n¸b¼t‘d¿dªäž Œ¿²"¾~´òµhIÉ^þOâ”ÒÕöšÇDA‚r¤D“[YÜQ4R¸¬x°Pšë˜÷'>?6kFâüÔdŽ5Çü|íñ÷v›I>>‹œ?'jˆIÌS Ô˜‰é„FPŒ&òi€/É(#c`1y†+É\âé@°£p;áIŠÉƒ$:N<§ÂÈ9ÆgÏÌ¡>À2’xMZ2Ÿ2þ!­ˆlèÙp1f¿Ž@Š-Ãnk㾆‚ (†gñЉ/Â9 LÁ]Ø`hÃö/ü6ÎÇ#°è ° ?†E gqzFg¡CÅYh$0ÃaO°yäÐ<Á2h€¿’Û‰#Ð<ƒEäuTŠ=X6 LÒ‰\LN§Êáì†7À_`"Ø´p°ÿÀVz3í»u)mj†1©-D0ž‚Ù`áØ Ø‹`GñR<ÅÈÆx$»Æ1à æHÝÖúº‰¶œÜjÓh«!¾!é¶E{gØmµcŸe³Åf§íóC;£žýÖœª¼ÛÝÑõ°]Ú<Þ6]fß"IŽ 7½° èH:ß–þñ½LWÆZÛíû^Ÿ0;çí/ôÚç>Ù#Ïÿ£¯ò¸ìÀ¯GwzŠÎù™]HIc¦OOö|”´$‚•rŽÓ]tW+Ì«™&÷êMVüÒñ®5²í]뮥0¦ødF_+ôÅ…5Tù±ÚÂÊçüe­÷ežr\óÎ@Æt„¶B›×m[å“)н—V˜9/Å?<Ó×*uv©¡æRÓpGg]kx•Ю¨½x^¾0mkñVi±ú­~¦®@ù[kx…ïlÖõäÜ”óiW2_ä5 ¨öEEÝæü­Vzï?2ëØÏ޳>açl>¦ž-7tÊûtÚM¾veÿÕÏ–Aßþ·ÚX5©ªì‹TÛè¼/NÞcØ1´bèÀHÚˆÏð´¡ðÁ–¡ëCêaóáºÁUzÎV7KáÙ=µ·¡gV÷{Å]9«›Ýç¯fô'êÞ)¶¶ê›oÕuŠ\Šly›Ê 튿ºoõ ”6ío76SRqï;#ï*>ñð~'–.+]^ö¸L]ùNDç› „¼.[0^ëW^-"Ö¢§ü\þ›âµüi5³ZŸ¶^©Uˆ­Ež¢¢âòvBú¸ÒG°WÌ–<(E…·ùG‹Îp½…æüÙ"oÁ,aì‚ä Ùý™¦ óOÎt˜“)3ø±˜L#÷“kˆZ†5!#Í`ùˆØ §ÀQ0Jì„qx=ü—Ð1¶§ˆË„k"²ˆmànÇH'“‰f<¯ÉD ¼BÜ!Éÿˆ§ÀÔ14ä7ª‰°Cp.ìLJ©°›áÎ ÿà9•š¬¨>°[$h,ÈÂ?`?Œ×»i•I¸2ža‡@ƦíA?!-ÿõF tœ.Aâ±B¸›p2Z"i¤–?N'Ç0þÖ n‚0MÉ8b”XBÝ&g§É7FîeÀJj©'\È\ãø‘üJ¤“ßH 9“šKiÈ>r+1Þ†ÿ€Xr-†Ï@è¨+¶Œ¸¿2KÈkƼ=žà×àTP"vƒ#ð8Qi ‘¢và>Ý ¿<?SÏàõhón•CëëãEçҽ̾s>ãrtR`~æÃªƒ îÍ]ñ¯›œêdDG¸ä:Çûü%/{ìÔöW]nu•ï´›ì´Ýý¦Ï+ŸcÞ¦þÊeAG"G–øüq¤ÑE°q¾vøøéïÑö! ϶ƒ˜ëŠ“g|_;ÿ=ckþ"^l[§»r~÷üîÊA¥¸~FapʉèÖÀ‰AÙQÚä­ÅquÿkxRq¡ÜªÙBšÑ¦i“•ô-ÑoêKëyÐÿÈðµ+’»;˪@\ü.Ó2|Ãé5!Óç¥-Ü$‹†*µ[6r/¸‘s(c¨p]lÍR&¨\ÚfH.NOóO9™ OIefÜÏœ]ü[‹£ŒY}¬8=‘{j“ë~÷!ïgùq|ÿ žžý®nN'¿·°/¢¯¤¯\³W묹§.Uéz×Kç·V·Ê«dº„~‹þ5ýãZOÝý©Ã+ §ô˜žÖÚïÒ_§¿ªÖÖéƒîwÅ)R%k£UQÊ™§" Û¥çTÏi¹{ckU`}V½ìÒ;å/ëäcò?•Ó§eìº•ÒÆå]U=‹»Kž–µˆ*K…öƒ‚„±Âi"_þQ±º,³ ¯ñ=jœkèü^Ånñra$WÏ[Þ,Ë•+:º%¿íæÌÉ6É‘—âßáò/ œ«6ml6Ôp¸¬Ì“iõ?Î VPÜ],.k©P6—ë[ë|•teº’Œ÷þ#¥`„SûŒÎ5H\02ÌœÂàÏd"d5ˆ;±šè\òâ ùŒ˜B6¢ßɃè(8 ×ShŽßÁ; iV0S[Ij£‘UØM3C‰xTÛÜqª‘µ”çÀ4ðULÊÑØZ¨Á Fæ­ƒž EèøTl-yd gÑ· ¡/Ùõƒu êŽ=E Þ¨]ž30S`‚ÁÛ°ù๎ƒ§FÇ À¶€/Æ©¬‰DògF0ãkëãWæMdv0b*œ:ÂaÅ0pÆ+*˜q–9›õÒfŠ Å ¥ž¯¡œ!2˜Àid ù˜¼J,¦|° Ç­Á  •AýŒ&½ÈèQ?0LÏ…9ÌcT?3À–rª=4ÓsuØœÄfvkòꤗák|þôÜíõ0J–gÚh¡Ö/”¯­YS^V–]ÊàZgƆ†æ¹e²ÜÆ4› 癈gêñ0½¾þ!Ÿ¼®ù¾þ×­ {z08ç4ß­Ü9ʩιßåuÙÿþÙßÝû]æí7=þŸ÷}¿c‰µ)§‚ÒÇJÎUlmÊ—ÑT~Ú&­s§Yô9Üùôdÿ§Á&Ñ›sÊj~îhkÖ× ªwÔ€ºâÆ€ÖY“Ú;ëÆë{¬†LôšR ÿÍÞ—wš=¤<è% ŠŒ’$ d0²7•¸Õ åƒmñüì,*ãs¡ŸD]é'ÍRjÚòycïÁ¨¾¸M‰òÔ½ßsйÏjþí*hþQ81=ØW±Oá,qñs{vìµÏ©ÄvÞá–SrM¯jy÷¯Ýf= ”ùK¤VmÁUùüLn˜X^}D6¦îÑvö-és«äÊ¿”ÿö©UÉFÿÄt¿é¸ê©*JýPgjÊ™}.º…ZÒý£b¿"Jþ¾+¥} bLT¾»%Gú¼iIÓÃúÏ Ë;i]råçΖ‰e\ÉÁê¦ÆÕÍuõ*oŠ^ ÁWîX Â[^Lç.â…H^Ô¶(ZºüªwJ–ŠòÎn,n‹J-KwTœ¨y'õê­ï’ÕG—.Ì1°/]ÈM€)æéæ)#ì9YKÅZ¬šþ­j)ÉIÍlŒ:{aSúzÞìÚsÊå`ë…:]î{ÿÇ ùÚQq„õ„±Ü˜19›R2o3µFþ]„à0hrP1â q ç! ƈÿð °¾*l-˜ÌÜÀ ¤Ì‰½T3+—ð#4ÀìÅqXžßˆ•ä£SщLr‘G´Ž‘{ÿ1‚àh·QýŒ~àŽ]ÃïÀûŒ.è½èžÖ%èVŒÏD[­ÏZ¿µü²³pW>r—‰z`1€ ŸMnr 7`³á ž‹‹°E ›rÜØ¯vvÀMä9ÛfÐæ+Ä6Ž¥¶ä ²yeiÇfÝdJY¦Uö‡msYßmÚ›ÛÍqÐØÎ±1a40þe|c¸10ªŽ¼Gô@JBž¥º™„#LÎ˧>‘wÈ©ÌQŠ ¦PfÍÈÇ'ÌA&ݘbsûÒÝ6‡¿ûÍ?95-ÿpŸþ/gÊÕhCø¥¤Þ¡Öo}Sõ—âÕÿkùT~²ìƒ(°¤$ïp¼"äJÐÎS{’ìN;D::£~©‡ò”ÙcmCGƒß} T}‹ ÅMµ‰áEz‡ øñœäØ·}öGÎȃgÆÞˆhñÝvÎ3tr²ä%>JþfA;/HäX\wVöº±ñ ‰biñ¹ØŒ3‘Ç}'‡¿‰±â46twÈ:~lê-Ạ•5~Wª~á>MçdH+vjç¨õ-Ù‚±Üe©w£?‡üúWpqxuê‡Bß\—¬M|ª´²µFU-],Y L­’X”Ÿj~Õ…vT—±8Ë£Ì}k¢+S-3*sx£õ;dò®_Úv—ßË0œ.ßáør÷gÇh’¿¤¡ãs‡X6EÖ+jÛz».ArZx²dEÎÌÔ é§sCŠÞŠo4_“O”¹¶Éë~ªzZv½²µ>^*VÌìôƪ&©ÈÞ…}Ùúâ!CÇ"ufÿR}LŸyÏÉöŒúçMïe_»Úšl+"ª,Ú§ÉiÝoåÂŽ Æ”Æ¿šw°ºªÛÎW Ÿ‹.Wp^v±x{Á†ü NW/o´`w~`IRyµTÙÇÑ}“ûTñJ } ÿWâ%.—üSáÞÙàÙNtôr;·U×ó’r|’SýC2Îgw§)“\ófU…µÌos]*pä% ÅõsÅ©ƒ™[ËÝ›WËØí‚ºI"˜´ËÍÄVKŽbRxä@5ÕMÄ"j‰Q3`6Ï„eä"’Á=° âö@2á Ò™‚“4 úvÜšègN³ýJ„ÉŒWd3ÙE@"°Àkü.ºþ öS&Äz¸ž…Ø3ô2ØEЊ¨7z¡99BV¡?J@0Ä@ ý•Õ2z¸E¼ Á84¹lí†Ã뀗! ÌÀ)ÌEQÄB⼑šûàoN|6rµƒq“¼Ḻ>ÁÒãó(çÉΗÜþ°?ds fLH¶½Úu¦ËÈ^ß½lŠc¿š*„þ¶»óì§Ûãö6a6Ólž1U¬.æ&Ê’¼D ¾'¼Jþÿÿ ×ç_“`Ç[g-Ž:ÑVźÜ<# T"" ˆ"‚ì½BIÙ{$, °´Z·¢uã¶.lõõÃù ÎïºÏ}BP\Ø‚B JÑC˜©~.˜tÔÌ.”íwó*ø@tßÉ¿À´âò-ÄÓÔí,4/†É›/ qîÐòè^ìÉ~ hÚܹ±#²ù‹×ÂU"8aµc%¹‡sü‹7•^8ó*yeüÚ¨–Ã;Òð‡0›Tý:{b"·ì<&E—²-›}´À;ß–í‘ù.åæ1\$21²4˜¼‹R€[VBªt­ýŒ?_ÄÎhöhÁ*ç > æ6äسº»úþë‹1”“ßfŽ+ŒŸœ•Š.íb.j€u×´$E1o5/TòL¾V®ã¤<®Å׋EomóŒüu|’?õ%5‰¸ªÚIrçø£´^^`•þnºê`غ,E§D&›Ú¤ké¶á,ù’*Ñœ~éÓ*îœ?¡_nȵ¦Û^¯q6_8I :ußÈ!õy!U&Y¤º¢žÕ´¬á¶"Cº–÷šA¤‚DöTQnñ²Š/Õgˆ•ôYÂRµŸ¦¡I§À²gÒÖ³PÒ«ú¡Ýê(wö¶Ïj#wIÿ\i¾êÌï±voµ-jœ$à´ˆjZí¿v ¬è‘b¤˜ÉÖ"³ÑKÂ’¸êöZB-dmŽ‚#ÀòNrV1ÛI µžDJ­LcúrGXŸè±üzµÄºÏÞÓ.±}–^àÌãšù$wä.’py¾êì—†GMã3eÅü<úÂúéø{>e=׿žÕO}Á¡jë¬æ—üŒßëÄ™£§žÙQ¼‚Õ-ç~jX¥žÂ[DƒÊŠ÷=öð+Gý QÐ/K‚|ü¯¡S1ô t…_Ao!,4Õï3€G-€\-8løt^ˆaø¡!r-r)òÜ ï‚G´Î@¹b‚1ð_`=ðØ Í…ÐPf#S€HȱaWÄ1äÏ$ä4Ð&Ô/p*ú<_‚ª½»·ùöÀóÑwüí~Ià ßN ºQ&PŒî‡Ýá\ÄtämßßÛ#p ðDàðü ^/GÑà•¨™à%42pßžûûFŽù&e—–£Š*3—G,8¶èdEí8xfkŠ[’{’ËéƒI²D—C÷+n„Y߆ï) ¹´;HäOÇÔøýì~å~™~ Œ9ãWäÿóÚÏäÇôKÆô¡ñèÅ(¸"¶?N“ÛJ Æ’ý9Fõs}æ£jµ¨T&üç&îm ×Û›µZ¢¾UÙË%¬/‰ÌmÏMªö¦.¢÷“9åâkœÄzTáµCV?z|ÞÆ| Š ö ž‰1££JaÆU Éá[~ë1bT8d ù` j áT°_ˆ·Crè3ðZ Þfƒ*à*½vƒöCCÈïH"x º 'À üª GM†ã Ä€ |è¼~ ÂIð¶fÐa°dç·“w>¸ÈJ@ LñM'UÈ`pñˆ ÕȾscÈaDr6¸Š©Àð+ä ÁÙR°i߇—ÓŠ>ˆ '2蟛ôíÞ­ãŒ5¬‚Å» Q .LJK'‘ªjªÎ—Ï+*jË“:“bÑîQæð‹{Õa¦Š`sPZàñÀì€%Aþgýlh&¦Ú¯Ý¿À?> 3ˆ¤ ò î ù5*(qòé’”+¥$† pŽÈŸ˜®Úœf®a‚š/­ã-gg• ŽÊ úS†N™/û÷š÷å-ø2îÄqòþ-±or°epïy5{¤QÂÅ|CÑœc÷”X~0íd]"þ„(ñSÒýø¦¸Øãc13ž]¨-€Ò­‰E)ÁÙÙ¥Óñ6©4¢ -ëiúhI åð½.'‘8ʉêÑW ‰Ì$¶@ ÖöÕ8¹º+Ĩ ÎYK¢œZûŒõ‡ð-ïgÞ î:®?7˜-¯³¼Ì¼R2±d].Êœ¢ w^7½– ›6êç‰â(muÓirÖ!›»š8Jöê¿Z–›Úí2ZC•ÑÅoùÖÞbwi߯}¡Ô#Ťw¤K’š&`Ìfá9a´Ôb¯Ì ç"Ïã‹®àÎÑðJC$1‚3Œ$#žUQ­¯=@žN»]×›Q½ÿ8‰9I°HÌT¬iü½µÜ£w#%ŠGÍkL°ue§_·ÄÔ¾Ù|I7ÁìÕ»£sedž–Å g¹ÇDÇ´ó™-ÍÔŽŽŽ-*7Š—+—4 uTOòUFl£gÛÒŽÚ¶cŒv— ÉÆÐdÄåÄêf‘Pª¹kñ16ȃÄëùé:fªð*›OÙÏÉ‘mЦY˜*ÔC¢¶’óžu€>½æy¦¸³ìBí Ê2Á áTÆŠz:éÐ_Óº5ΟãoãŠXáÌÒ‹Š¸²Ëï‘qkÍœz"µüÂÀ@Ü€Þ Œ¢V¢où @_Á.´ ʈö†cá°?:ô‚Þv(ùÉ‚Aøðõ‡4©ß^t44ÑŽŽAý„´"Âà½ÈÈ®ƒû¡(äî"‚c€ Ú†^ÿ}‚Σ^ú'¸tb®þ¸ŠÏà,8ù‡¼p •¿„›«wÞݾa×–ŸÇH-âÂ螃…àO€;r:"±Ú×vø–#³|Ö#2vOFNFš€Å ˆ€Üa78 =ZûWE'-L-n¯ë©éÞàÀöÑó†XŽ!‹«á ún™-¼[Ôe÷°aqM ¢ß¸.ü1Ñ a ÿõ2Þ=O–q-lîA(bwص9!žaÈ]л`¯ ûþ‹èAÈ>> zò(4$øóéË•»ÈkÈ…õ_©r‘šËÖ*Ç;;³Ú¯™Ë w5³%ú&z8¿C¼V“clä0È)¸Z‚k©2á§£krâÉ™\åÀ^ª¬"lö ?2òWàoÇ=‰hÙß±wçþ?Ã÷‡g’Ç.>—B?å;å´¬à@éðùñ;Ò×Wm&"-Çó/‰ gÃ3g…3xŒ=õ[jV•–UaIyô¬1j´yt°òRæà¾^D£Nt!9;Ž„âF‹ä U˜Ø-§‡R#ÈIÕùeºœÉ4wV@¥âÚ—Bkd¿)Ru¯ñ%GDøˆŸKõçòæ³ç1XÂûú˜Öî&oþ2¶…ù„¹B˜¨=n^fgô4v_kk¤±Óhƒ?à ë>«°~_µ7öˆØ‚Ë1E« !²«rŸîƒ:R9AœÄ¾KºCÀP*éŸ Þ†_5»~—õ‰Oð±<V’ù©qMS¸2NúˆSÀ¸Åq•oÒ»¶•; ú¬½ƒhñ0Þo8©˜×u±-Ñ$PU‰e?5GÛšl¿›ÿj7ÂÚŠhaoLFÖ>m©×N0?«ó:zKcmFfOêÆ?Ír0µì¡§œgü»c‰mjTœ$°–Ð.ó>5íà²HäÚdF½"¸u©õ¹iT{…‚’@Í£_ ¼&ÿDa}pOÈf:Šq’Z•\ ×N6^Ô\•9TÝ?ÆTunFñ¾¢6ü~Ešn¹œGÝE¢ìÊ;TN¨[ÂWhº;(×õçEKÙ‡X=œX^œàoÖÏ„äºlcÉ#Âx}-ñ`ÉÜ|¾¨nÿ’TéWi–¬N6.™ õSà„*”º¢Y­ßÝj™ÚjѺi O­‰ÆIÒ~/[B‰#áè~²ï­Ö.lOø€¢ojç&KVËTÍ U‚Mlºm(”Ï•ñ[®uFt¯v2:žšl-nÊ6ÁÑz GñQé)äÔk¨4E™ù¯nJÏ'Áþ_ÛÝÖ]Z³h&wµà™¼ iæ¿ÓÙaêÔÎVÒ8&ºŒ5_üJþù3ŽPsÕ(é6 ÍóZžËß3]©ÿJ}4í<í+V ¹ ÿ7¾„aeýM{G®VÔ.ä·ÒZß› ¥æŒÎ—ö•ˆú¨ÑS5­—µÓØc¤¶Êè V¨3 ÏŬ…ÞÀïÑ©`6¸yøº jt´ ,õÙvAÐ h¼Þà7 *A!á_Pï11˜5ð/Èhë¡EP%ú.j*úh©ß*¸ +ÀÈù>Nä`t÷Ÿ€ô¼GkÜP0ü|Æ*ðRãÛîÓæ{Í7Ö·ß·XŒX EGí'!Ý|}G‘Û`;¼"ðÀgà¼ÏŸ3»_ì8²Û{×DÞwŠ_oàÿ]ªUõÔ\Ãnç‡îÝ’n‡óK÷ÅîåÝ+Gêï=¸zÞAo¯j×u¹u_p–9.vÙ;ë;¦X:š#›£õ,ƒ¨9Ҳє¨ûBÆfãÎ.Ms$ƈO;BŒ½røïƒ¿¤Ùš€Hü/‹ÃÇŸ–»³4ü›x–vAkrs?…ÒÆH&Z‘pºàÌpu[ìãÒd¶gÃE~<ã2ÿ½"‡sµfvÕ0¶©®‰u‰.L¦_¬5ÕlŽ˗¦´œ]uÁ”gÅqpˆœˆcû¡½]{/¯ËÞ\y€+¿yáu¶cÌ„·ÉܘձPA+^ jîKž2i— ê 1öhuò⼺2MÑ¥ÂeKÊŒÙ#Á5 õÜ®UÝïû‚ú ]s¥×ˆ7ª³‰*öGùCd júFWà‹b‹<ð™ïåÍªÂÆåŽ5Îp–.‘‚ÈëtÌ|%B1Müµ±Ç’Ðõ ãOiõÝÌYGe•O³Å §®Ì_PR¬âÿLn¦1…A`l½^$¬+Õÿe(ÏN.!á˜óX껈 r:½Xðsã6½g+Õ’i6˜JZ¯·êM+Me¦å–ú¶æ®˜žÇÎõö¦Î‹Nמ¶ÄXWVÑWY×Å«5œiÏm[Ú2S»MMh’)Òï-Å]%A¶¼–@í“–Ô®‡ÝA=œQgÚ^({ZÅcµ«’$ æ ÃÄš7wub«í–¡ÖOº}÷ÝÍta9–²W;n^Üü%'÷ÖìÊK‹¸‹^€öÂðýê¡ h/äKÈP ¸ : ϼ¡oAÏÁVtê?è´ÉÇ ‚‰¨Â섯ÃSàrXsÐrÔø(zºÐ﾿?zÖ· Z€y°'t\O]a&\…êwù¨|㑹¾Ÿ5Y|€ˆF¶ùŠ$ð=(Gûj )p0Ex ÓG‘bd&òÝî!~ˆï;d^;¶œõ¼ä~ÕsÌ[¸û2Šæ¯Z[¹–´£<÷U°ÏØnJ[,õ,­c™ÛU:¢ï_hÓ7ý¢Šh‰k¿imm³Xü-£Fœ.Eû¡ÕöÙzǾºwsFW¼®QôF𜩠J—xä:ÏË ¯ëb˜~õÞØ ÒtÒqn·ä™4Ty¶y¯å'ÇlçQ½‚w¼Þ«†Œ§£µólw›‹QÊVÕJÎW-ZΛB]LÛÈ¿-BRV̨¹.è4$o \(òou“ªˆYª8—pÏcIçþJÏL¹yFz y:öôó¬ÀªÇ¸-X;Žwä=;êwpZâ›Ôû‰†ó Bë€ÈWùZn—¯»ÖÒÒf&LI:pJ™d9û6kZU=iVÕžô˜l_J´ôŸ¦aëƒÁÇ#»œdÑOu!´8ÖL*–ÊFÉgcÇʆò€šÌ}âD38MýµiíiÁ¹óì4gÖ—ZHzD7®[i|Ô¦èáôüÑ îQˆ”réyýÉò3ÕÅ u »\¦×fšÑ¶Ë-mPó¸:ŠŽaúÑ[ßT,(+|ˆNÆ.f;Øó8õœfiænëWÛ‹ŽñN¢CêTt9ƒ»é=wzž÷Lé;Öf`Ù v0ï"~X6ôµÛÖÒÈ5žW-¬±Ÿ YÏNþJ–‰îÎçÊ8W…Xk—sAß’nûD“®ÙÝ›xúœ}LŠjý§ee£ŠOà]UõÚØ=YÝ;’”‹Å_„y’e‚Ñ •ðÞcëê§ê‡­í >•”Ê~¤XcAôÈcF¶è‰¨WaÒ¶P§Pëj†sO‡:1)Pêºÿ¿ôÔ °Nƒïƒ`$j:<Þe#‘(è´5/§‚‡à(8áGoLAEc¢­À¯ÆìôWBß¡ÙèœJ…*C¹ƒDx1\W@*Tú-\þC꿈.n*|¥ˆ>¯‘“Bd p̧" £¡ÉH"‚æ£ò)F¬Bö ¾ 7 ¯vŸDd£·|ú°Q;on+ö°yj=÷57g¥y–SvcÜ~ËúʦçëÒ+Œ ¤ŠªÊÒ™ØaR<-œ@KÅc*ó°{êI¿jæG]ç_»·õo èø4t÷âá‹Q{Îõ O¾4y¤§ï{Ç+£»lÿ=km-ÙF¨%m%_#®ŸÆŠ¨¤xENól³WÏPCßﮯ-U©äƒ8LÊ_CüSÂ^~Ž0M±\U¬ÙªñjlPOÒÿ¢ý¢Ú«’ÎÒÞÑn“5‹®ò&ò«e=²~ñYe`ãDe×Âå’¢äÊ,|eœ:8¹†L~ÂÝ®!´&i¢5‘ͪ–Y– ·ž9=™\T“äš_kê¤ý ]†@ l‚~A}‰èT¸ú M‡*@&4 uä@À=¸ò@¯AãP—Ѱééó3x,ÿ„< ýðÐdxØ‚l…þߣP,(@`0€k@!ò®/ LàÀhFÈ ä0â4ò™O¯—ó| Ûã=¯yo9î-ñÜã±ÎÓæ5ËKé‘ã³­±yᘽwmdûÁçñ§³Ãrò_TÇÐï‘×Þ=õáLlV{™ù2‡$þ]6"ï‘?–S5AÆßìóî=…ΕZç>ºÃŧh›Ügï[اëœÞø] “Ö´föîì_ÓIlÆ)3´¹¦ËívþÜÕý½{¼¿¯/®õ#÷ qއgÐf3qÌ#œY¼þSSª¬N¼€c¡. , æÚ­8wò?²u7§“¬®ûH·“®ä½‹ýÆ ‰ˆƒsèyI鯒¼’ßÞ¬ùR£ÃÙÊZò£ÂÂ0û(û—$¾/yP3ëW¼#Ï\]Á(Veî+=Éf7NnK]tâ]ÜS5é=©§=úï LöŸÄ#B¾Ú×rÑþ‹eys­¾C3\·3÷{~~=;–ëÆxÎL(±Òe´ÀÊžÜóy>åÉe s.§©wS­và9¬£b‘ä¶8Yû¨ÝÐëÚ¯°+ŸÒWŒØ·E·*¶wSÞK|ÍI–]·ê‚.ÚœÑÑg…T/h‹ªï×VUøÕy2W1 ŸÊב*(»(c_]hkf+Á2Ñ>âHêù£ï·ùÇ/¶w ý;°z;tkè¡ý‡œ=ÈVÛ<¹ T‰g Ö‰í²˜†*µXwF¿§5ÅÒÑŽëyØï>@¸ÝÙ*“?ÝeþÍ1òÄ‚™r…Vßø¤áƒ&¸e±ù¦~PyRÕÔ¸T¹A¥k(QMÔßkj¾ h?¨éÊe žJ%O5IsA3C2Ëi'h7 ìÆúšï5Bj5 !­ªUšæ4Lõ~µÆö¬rôê´ÊM#æ›&”gßà®TÞ¯£pŽs—3ó(¨OÙáí½ÃÚÝ<"w—E Òÿf¸sÎH~jxM/½@™:Á?½ÔïQÀ ÿsþ&ƒzŠñFG þ@E›Ðý°+ê5jª5µ> ‚“¡ÀZèÔYdC× PGûÇ¢a eD/…ÈCˆo%ôèÏC¢&£§£^îDü²û’¾C>êCÐ[D."Ï7ˆ@´#dèp6P~G¬GÔí^´óØö;f #_!ä¾7}ûÔú´ûlBü‰x²]æ)öèðÀy½ÜrÝ ±¥È»Î«×Cážê™ëþÙcΖÍf÷ïÊm¸m ;¤þuþ˜-¡G÷d†EûCåì‰çäj+N’™›•÷ÄÅ|¡pµZЂ5zÛ¿:Êi=Ï{ÛϵhZªõ35_-^θ>«3Ê@Pñ[Ä–‡ÞqÆ:ßxËò«ý½¨m©]ïœÕ×<ðh ­¿Þ°„WC"âŒUåØ-”pÖt!­A#­>§øã‡«\±AÕøéåë².\)÷"º±«¸‘u¦Ú“õ†šœ’Þœ¯ÙYϲй’œ]é¥ ÌÄsÅGÉ…„Ž"Lú†¨ÍaB…Ç‚S¸VZ4×A)þ/cþ¹%)›Ïv¤jóÿb šN:þÑ0ëo” çúg®M;3ç¼>Ã7¹üôƬÂ,¾T<,9.ü—ó/ïòõNSÅûªn6BÉÔà´§ÕcªŒ¦·ªÃLAIYöÿÿÿ —exÓÅ‘lÀpÛ2ê‘þ±6R…E ¥Ô(uwoêÞ´iÒ´qiwoÒ4mjÀpw ^|Œ1öòÜ/÷ÃýtŸçœó;K+U ¨ºðª¤xRyYaeJí˺Ådm÷Í®Ö^OUèèsÛ¦þ²]–„2‘=¿’¿6—5ù·^¤½ai“Ýér­c« âz¯Pu~©ûPmižGù@o––þÂ9Äúža‘IÕ÷Ôá’9ÜAz¯9‘7ê?~l¢j=å˜|0vÞ…ú6.‚ ?粻ƆUCÇ-#Z©òƒ’«5š–Ù>f >¶ÐmùδQÂÈÖ‰÷“&NŒu„YOª_óØ5,,s1gÍ€¿f¾nÄ4wp§}Â6e•é2•VékÉyƒfµñŒö³n ¶ÉmÞ¦té€X3ð•‘Ê´ÙÖRí}Q–Œ&M“U_Dè.Xíÿšè­—ýëÄï$šþÛì^ÍëááCÕzî%ÁŠÁ®ZGµhG×ó–­ZÚ¦Þהߺ¯ÑÔé=+z ¸,M§Ž­Ý§Žì¿ÉÞÏ °IÚEÒ»üþ*I|lÈBb§¿ÿ7afÐ]":à9>$h þ>.…û5`þg\°0®Ã=ñ{b=ö¦ óÛˆóóô»Š9ˆ-AF``as;±a¸Oø0:ä äϨG¨9ØU~·ðbŒs ½¸»ä‹‚×Á ®ð½°¤ f+wß!àÊ6!ïeH2¸!F¼ƒg€# ;ª yÁG$"Á¯=Ä'Æc¯÷6ß ïÿ<£}¹^—<-^r¯Ë^Ó<ܼC=fº/÷Üà5±å~À}ÀƒãáëñykÏøžµî›Aö®w–ˆ³g'%…ŸÈN½’[Ÿ™ó]˜#$îpmáh+žªçu(|éA•¯ó-9ñ ¯#%y«Z#8£ƒ‘Sîã\]2ÛA;ßæYæÌؚљ«+ô.ž[³Š(˜-iã$tE4ÖO± b£ô9ÿGL6Å9.:¦µTùŸÔùº´·D~ÉzMk¥­fl&§T\­ð¨9QÕt„¼¿c e7'Q÷»S5^椪\¬Ì’E}aõüº=wÖì#SèÄ#î›Ãqê0ZPco¿ß¤º¢4¯³Ì3}1œ·4 Õ8óœ^ƒÅö5ê`ïµþ§*?ÃIë{š½m¸bD=úÞY04{(Сòrüì,ƒMü0±ÉE|¢Wëÿ0Mšmƒ[íC燥#Sã…#ßþß:N%9— {;® ÍÕůŸ¹›È+¦ñ€­Üùb8Ó^j±oµÆ׫®h¼,OÌžZ¨žmÉ·MšbåÁü-²¯RޤÊPiUX%Ú¥ÊåƒË†F“<®[ƒ¶úßgŽf‘þ ªQª¤™FLÏ¡&¶z'ÇÀX£t[â\$^ÁþÌH•¼2ÜT<§\¦šhÓÚþ*·×‘»u¼(ÙˆÆ.þ̪a?•ÎÒÚ•ÊâŽÚ&{ÌwáúÀ»ø~"|u`Q@fÀ¢åÀë€kÄê:ñ€^.˜pÇÀÅ;ñ 0Áص¨,ÿÏ'\ÄÝÅ0;°kÑs±Ç±ëü˜ÄÒÀ³i¡÷C#±M¨B´CD¯ÿ!² ×!¯``¿hØ_pð0YôÀË@î7UÕ"*r x‚\®Ÿ«À>„¸¹ vÆ» ˜ ¯‡6"ž@ °ÅðÓÀAø?>}^×=ÿõEzï÷©õFC´ÐÇP4ÌËËÍ; ‚÷x¶çœ'ÖãˆËKî;Ïk7’ðMußë;Ï/2jz殊È+™==Õ‚[R9Ç[x[ó^³^ÿƒÍÇépm?g0ñ•œ3œ·œR]‹K8±Ê¼Q<‡û/¯ÿ8\5ö—ë—1Üøž ÌßÚ”Š>ñï ”LÍÉéÖ>­¹Þ:E3ôT±•ñw‘w•%_¯Iñ)¸^ZXº¤xi˜ÍX’½¬á0ew›­j¼è.IKEkÕ›t~¢!*¥z2w}ô“½‹CSÂÀ°ðPQð­ÃÑÉ«kJ;vʺ( ënûpuX!ŸžZTÄíUwŒMœ;y¶f¢Ù±ÁLåýÜYT›]ú °¶x²n!YÁÌ‘6I3¦7ºU¼isôMãdJ¼M3q®Oã3'aÃÎqƒFü[߇úí9ù3ê÷w¾ìY ‡é}i-/ʵÉíçz2{?õ^ï{Øw‰¬¶ Ûvª¡¼ Öåjî»Ø‰äÀ”5iïóŽÖ~ê­3XÇ2ǼlþýmÚê_:(¸”ßÜè¶5ÚH³Ø†Ä#øÑÛÎ6Ë:]„Ü‹'ìKdíáý2 Öì6ð´Á]sÄ1Ë^d3ÛfÙ»í>#Ä 3WÏü7:zÇþÁ"7yºô«ŒFó´¡ãÃû]Ý® çÙ±‡“o' o*sÀ-ò þ>d ¸ÿ¿Š.õóGê8Ú4kn4ëiÆ%Æ\Í÷úí¦³Ài??¸RièІ©Ì ”9Å£O”…iç;É®öñÅ®Ãï4Ç;~¬ömÜÆü¢W›7h·)±ú\Ûk£ý;#ÅЕ «n–-Eð…©èÃꌟYÚ¿¹³„Z×t£x}IV‹ÓÅCHößîe2’”7µîâ!átÖgúäŠ ·S÷ø ñ_ˆL|AH8ÐAü‘èðñaà.‚#pM  ÿ‰·bï£/‚ëÐw±éØ6”7Tå·Ý‹ÊB\E´ ×¢0ÅØø‹Á„ƒ³plÌ€ßðõËL8ž €,GxÐ Ø<ø_;|<ü§Â»HTžÁ`0ñ=ˆC^APpÀ !B¬D@ ô2¼çÛõ3èMÈuX 4Ùg³÷"Ï?=Úܯºÿë“ᛃ}Óz÷:ï» ú—ןåÐfßçÐ;ÐT˜|†~ƒý¸¼7 ‚‹Â”÷Ë- ‡ÉU½5Ôeô›ì¡ŒwC6Ï@2³†ÞŽßœ¨Õnâÿ3(ù‘Ý£9äøo0CùŠÛ]Eƒ ôZ×çŽLŽÖO–a˜ ä^’Qq÷s÷˶7Í /Þ+ñ[ö½>d·KWËÏfG×RF£Ÿl‹|·>eY*=L¼“ªH ÏZ]j%Euh˜«ÞʨË3æ4¼Ìp‹H݇–? y³Ï3f2Ù•Ôžc'…WϪȭžh¿Ý™RVµºâ}ö“ü“O½ãϦ¶Ÿ½1qml‡3@ÏzO©lxYzµtQý¾®åœ"æT}P©©fQ«±M@}(Ò–ÛgŽø.q¬6Vžä»È/ ']Kƒ4†2ä{tÔ\+¶Å´•³D/pVq‰œÇ?ÿg)×·ˆÝ9Ķ·YŒcÀ‘à£G¼NØ–k­9A÷ÔŠF³'²‘™O+û ImãÒ=võHœý³a–>Ã2àt¹þsEI¬oL—µ’jî^Ž€Ê™Ó/Ò¼°ÿî<3 Ú¢,WŒ½É²ÚÅÿ:Ž?>ï˜1Øb˜/¯oéꪭƒ“ƒs¬ÕæGë¢ó­ÍðVPË^Íd°.ˆ„r½¼C JÙæ¾aãÆð·lžä‘ê‹1GÀ'[ö ¶ Ã%]¤|‡ò…þ2m`ŽÔOXÀõødäºè‡ ›q»Ë«Á¯RW½±%#½ŒP­ÖøÕ2Í6ÝVªŽV¯áÅ[¨gxS§8ÕÝȧæµ6¿€zÒÞ9§á2éÝ‘ÂçJœzù€^°UQ6ò½™YÔ¦n;ÅD·SûÈ!¹‘+|‚ïy„@üUÿ]8a+H,Äë $ÜÅ Ÿpýž ^aŠÐµèyØld:îûýx;"E,òQù"è°S`üR؉ä ÿEC`Xï O8ÙGáÂú¡{}ßøša?ÁgÕðQ¨’ ‡ƒÀUîE=A¬C|¬‚¡>‡ú ‡®üÆ•D©‡>…¬‚l€­µ°AدÇÞm¾ÁÞ“ÞD½·;ä»é¿¦ë qâöÜâ`ÒhßEã;»À€P94Õºkæßl͆N¹XàÓáŸYzŒ|â`LybQÞÊÆ?iU2èÐò‰0íÆnsù‹ÌQRYÏn• œ{ƒý˜ J—ØN8á#§G,Ö-*é€;g²§™²²yFÍö*YMMÏGË•Qò8ÈÕ=_Н‹9ê$-Cc6±ýäØl{;Xd£ØÞN·´˜PÖ\K—¥Ç²×8f<¦>Ùï`¬èòü–ÈûÛ•¡ºsŒž¦Ò)®já&üà:ã.¿?t U)óg[˜‘¢åºg¢A*wã–s– ÿhá /UĈTÉÝ%ÛY3èÍ]§_×2*§U ê#»Û9såHEºd¹2@ã«Z,á½§G6«δ…PÐŒù½Ë›…5ŸÉ ‚ÝÊ2îzå_*‡®¤E0¦xªXý3õQe«ò`c5g7«†ú†r€±JúH{Œ¡ÍŠ Ù²!è»Àé$\‘ˆ»×Úÿâ_ø«q„?poý˜C¨Ì·m&ú,p!Düà·Ùo: @b€ˆ¿ (.t!¸ pó…]‚}õ)€}6yÝ\‡Fù”¢ªáå°(*õáø@–{k|„ÆÀû!=QyÈ¿A(– Ph'@„Ç"¶"– =&‘ †¸Ã6û¼ñºõœ°<˜|´ö/”æÕ€±09" #BŽ¡Àv„ 1 øÕÇ ¿ ª‘GQX0 .Àü‰:ƒÖ!ôrø¿ÅœÃxk½•1 –?«[×=ØöôÓäÞ–À~ ¡åŠâ)àøk× G;—«ÞËn ìtKw8gX¿Éæcyhž0Ö›ö ö³ßsrz#h7º§Q*©e}Ÿx§D+èIu}%% о¤ŸM²g½H7Ãí½°êXÉI·¤Òô˜Dg´øÄùè ¹=MK9ù*‘¢GÆÅ/¥‚ù-ò¨”ÔÈücŠãØè¨ä=é9I@ò¡tEêúx òS$.YS¶˜¬ézZThÈ?TkbÌ0=v<Ô/|`\c\î ¡ð[VÖ|Îz~zWÎÓ²³õœºùßÇù¿šø1«®j)5™ñ/“Ëœ“Ñ4 õ‘–½C.Ãtm§ðYþ•Zþ’ r ±E×,Û^³:7¨s̲wê¯1ÚÉò³é7K™­Ðò§1RÑÑ–’ºôØôhil|œ2y¼b6Ý,êÒXí^¶•œŒºß2>&WŸ«‰­]X{¥öV£´ã}Pž€/®e#Ú†Hó*e%ðÜ  ¼˜M±ˆ¼°à£n¡7‰—ð‚9À#œIh „÷¿ýð8ü^L¢?›X°ÿî-z 胘Eá†üzñâÅóñÞø¸ÝØô;¸lÏZø ß2_©§²+€žƒha3á-ü`‚R}7ûJlà'à<1 Ç ¢´È-ÀRL‡"8°*õ­…¨à>ÞT’ï»ÝG}ã¡ `4X¸ñ'P‚Èn!O NcŽ‚³£àM´94ûð‡À8˜¶‚ýÈ(æ2+Em@{¢Ï V¡B1 Øï±ÏüÏú[C¢÷í Þ4Ç“CøUád{‹¡[(e™ã=¯ÈtÊ Êoí©ŒBÖWM¦ƒgËÕEkçhÅ~£¬ï5CÆätõ‡jf“bÆb.`»s„Üž[Ÿ±5¢j{ñÓüu!í½¸uìøiÞ…äU©ñÉkÒ~Lû_ìדĬ‹,öõ&ÅlÓSô8†Z_[P*ÎïÌìK\›¸/iYJQ²2ª<üåAÙq×éМé…9Eô¤òõ­j¦‰goß§NQäÞü;ír/޶·ûqo€à‰˜+¿Í.h8šÜ‘åï~bW8±,ÙX,l=Â[§(½f!xK9÷i©ŒºyŽ £›¦Ç3¥3„¬nKÅËìõi[RIi1)=S”5'$?;7O=;³Úµdh°©ž(¹º§–Ù¾Ö­Y+bÔqg]«zAvã°dµ‡~‰¼‚¶§¤=ˆNåílù@ŽkzÝÀlk®.ÉûZœH:_²/mA”ú;>àô´}Òæì'åÒbb²,õpÁëúašFÅ·hÄÜçÜÕô7æÞTž«£ºnz<øŸuÅPâÈÙÊÐLó5ãïö‘bãˆÖdùδ$¨¾SǾî95üÄè¦îR.µrÇÐWvþ/ûÞãzã?ƒñƒ}À˜¦I‘ <ç9ØÓ…ÕýÿˆS%s”êë*˜ÄÁÜ÷_ÇëžEx¿eiÛAfÇ]rGj~g]¦ähøóEÏÔOuW¹[È„ú¨¦V®Ù¸WwK°­óQýcêÞZ¥à7Î+.‰Ó) 2XÈ·ÚªiU}úÞgô›=†žç½q /Òm1>âW3µ•ÔØ{G6¯%®"Ã} ø…xWOŒ$Ü#ž"R Ùx¦ß á÷а€àÀP‚fÌÃøuøUùßÄ'àaøNÜ5¼Ä/³ñ Föyèä9Ä~D2âü,LÌ’°ùÐóð`˜ ÕD!î™@!Ðá6h0á…ÐCÀ„ïo§o/üâ#ë‡\†:!›¼ÁnÃŽ¢Î­ð,€æ §ƒ»À~DˆÄ4 Ó‘EHÈaÔWäÔVô(*=ÃAµ!Q˜X¬] n@F­ þ~Q›0ÍØù˜蹨¥˜pÄVì ¡ý"žç­§´ÉD*„ä>}¸IUý¾õ6#R“0ÈQYÔ+'ûغnf{^‡'mË·lbßáŸUt©Îˆëùátò‡öí]Œ®äùÞÍQÍM¯jÕ5äÚwu¢ºK…S)ã]©ø\mvQÞ†\tŽgÅõÖ˜žÁÞ¡§&‘ïǘÙ}ª¾ rQšOÌòÓŽ´Ü¬7y¯ ¿ûÆ{ I¦ˆ·‡¾ _š0UìQ{¦ŽWŸQ©ÅÚ³•’UÉÈ*NkÈÏ'¡šÃ[ 5•¥íí³ùC"/¥NHhŸ—;yby”ùØømÙ—Jë{lýÉÂMBûugxµé ÝÇòÂÕ{¶íLþ0Çà§:Ξ¬óθzšœ´'yè›?¤ç½§­2g&"΢Ʒچ´+%¦þ(™Ê0˪®i(L˨k£Æñ¿—ºnñã8Qԇő {cÌï+·4ûÒJh©Ý *šÙÏs Yútsªgò_‰Ó’8 ¦ÅäE•̨vÕ-/MΧ„§ÚI~ÊESË.’&Lú׌8š?­‚>‰s5{̇Š]sÆ‘£qVޱÙÌ·1l$e¸Šªaªgö?äD²Joëju2íjÙláka¯>¼æœðÉÓ[táïý½Ú'ú×ö ¼y¶ÒMf»‹ˆV‰7ü ’ŠNH‡ä*õÝqݨøýkÛ¿?wªZæ6,ï^ÚV|PVjP˜êD_X"ÚÆX0<ª n/)¯ Ñ-RPSËüÒÁj|LïT©ŸUÃe Ú¥ú~V[+ºûÇžÓtOÖ!K|…oeá(óº—³ÊU2ÝcNk×ûÖ„–ìÂyqyGã„7FðïI„|,á%á~&î¤ N÷ ø'8%À-4<ð2þ_‚aa>_ƒÛO$—gá¡ØÇØŒ°5Ÿý‹ýê±;PÔ=”À/ã¿ÖŸŠˆƒë¨Ôvt8Ž8®@hà‰Ø ìFlGà¹ð$ pT@â ÀòE@°h`š ‘åÈ. ÜŠŠE¥£¤¨8ä6èrÁ(ð ªy Ü@‚UØCßZåsp ²åDmBã1T2Ü C#l:| r7ê,‚lFÖÃò|z}ŒžN/Oè:Ÿ÷Þ }˜Xö )¨ò.Ê#a0Úz¬ñ#ƒeЮü¡zíaWÀìïóêÃSæv‰iF ÷‘Ø¢¼¨>,iå2([ ³NÏN‚äikó[É)Ñí G«]Å;²BÒ–dÞ-hÍj¯¨Ú“3ž).¢TÑI§Kc+¹uwH7IãµôÆÜÒ®Xpâñî”u…3NvšÛ†ª23gDŸ=Œ<+Œ&Å6ýÔ1½mMýFg㹎çç}ÞçuÉêÿ§x*ç4œ•Ü&“¶?»>vín­éÆDåFZéÞʅ«ŠÀ&?X)çí©õb^$õ{_¤u’k–gÐ ‡ùqõµªÏü¸ ïr÷ç÷®ðævöF®™p¾h¾HYy¨Â³fŒYÀÅI‰=uýÆÚ/ÂoÌâ®æ|ù¿Ü#ÌÒÊ䊉¼?’ŸÙ9_!vYÏØÍ/‘îø}ÄSÄKø¨ 'qóÇI§ˆ,¿Z.´Ê!í%1ð‡ ¿ä¸u„Â>R3!ƒ®ƒ P Þ yDpÇ¡s\?>ŒnAï€ÍªµØ‰<†F!H,0_°ZÀúÀ'`è“Ål ³HÄø`§0e˜_,ö`V›¿1?h1…%À|xAAhFdà¶Û”Y€}€› Æ–OÌ>v ü Þ‚"ϰeØ×àoQgþ›,–š!%`"ð?@ …Àw->õ2ùåõ8öøÑ£T“»'¿™’O<;áêKN¤³xìš¿ÊvW}¨û·Å­çR÷µÖLõ ²VòCFRh8Í5[:a¨ˆØ0¯ížò¢à km9#¯'ä¨Ëß[äIÒ¯Ñ?U¿¬ÞJÍ5 óªòÿ54*;ºCxX ³¦2–ÄlŒÊ£„ÇþPàpÚúŽ­‘ï*ju¾4{#åH˜Ø—~6^YR' S˼¢þðøèNõð Ž<@u* U¯©ö/þ7—™ýÈqj÷ öc'ÉeÕ†|8ùKfE %qqøwça‡(‡Tç`iïAß;¡úø½©Æ f±/¨±´2¿<ç ¯ÅŠ?iFN_ö»\?Žï#¶YYU”Ñ”79»rû2ÐŒ¬R£fѸèb™a¶/A_¥Ù-Ñ Ö;+Ïéw?éX[¹ì{bd\B"+óy63™šÔ”á’x(â~袤¬,õƒx$AOÖnÝ­³ 8åiÔ›}ä½Yk‹þK;ÃKZ_x™9.¸ÓT¤sKrZ½‚ãþdŠÕ‹ zo×™ÐÙÉGò=ÙœUܾ£ì´v~S“f¨ÝAç ãéÚ[ ŽÑ¾uEÃK í%Gk׳·ÕNñ7‹fÄÇU7[÷©U²i…¡åGËSE ߋě+ä3“ªÕM¤Æ²z®ŒV·ZJj)ï)W4gh8m£-@[~Ol‹œSÂÌeï¬UqaþQ¶Ì¸á¡|•è€@Æ…xLõÊѪËb³yQÄå€+ö.g¤¤ª9ž–£ð7ðkQ+B+AB€ð?ðFhÎéÀ-Â×£»qGPòÿ!´…!YD[±¯°‡€^mAHM@HTlðc°GÀpl|yuƒo@`jNwv£.˜'¤§¤fW;œ š<=¾aŽõ'X¼6/pò‰_~-kaaã6KÙÄìD:c»’:eeÓÞÞ*-"‘ šåý¯»ª§òõB°òbé¥jÚë`N_äÅH_j[Fi‘1Í$#7>2úqDµßá [R7Õ´RS,~St<*Æ—âŸè¹Ûî§3«‚33N Á‡#¿†»Ä ¦í –†[G§Žpÿ­Ùœ¾/à©ËUï´P–¡o@\x^kùáÊ¥«é¿—/Íÿ…|Ã¥Ý>¿?ói²öPIPFR®[jVàvçlÛ•6ÞöG•cºËIw¹ß?QÉ ¶q§"âüsL ÍÒ‚½]PY¥{ûŒ!ed™!½ÃGK‘éïÒé3ž¥;f>ÌœÎ^ZÛ¯_:îןÑ~¯kžá—Юíô–"¢s­:E@cΤ-»ìeìÉ<¿ÿÜ­ k‰ é gã~K¹Î0?UÔ«žª<%+™_iºÜàÒsUP±õ[èÖðþÄòÔC‰Æ©ºœ<ú<¶³d³ªK`“u>ìW2%ùf6¹Ø–®ÍMœN0.p«ð¯ÜÌXËPVÛq&x?D¯ëV×$NÒìú(ÍoC#^cqc¾nS ‚eÌ=̻ƧËWhd¡º­¦õh7®ûŸfHÞ%‘Hƒ—+Ý£Šª,Õ5ùßÒÅw$„ú³õ°ÊEëÕ¬hZ§ÛÞ3Ö)Uíçb9wù'D5ÂíIZ›dF¼„ÿŒß).’0šÎöù YÕE–ga+ìy¾ü­üH‰1ךùœ w6* ÂØš¨êðÂC¥_RΗTv3©ªÍ¯Ê@TGäÄ”-“ïV0•¢UœÕóËÓXñ‚˜¬ w¯­î7ˆ‹3—Q˜èˆ·FWDÄ+h:n'jŒ– ŽˆWíƒ!X·¡"üVô›å{ÜyduEó ráp„´”ôÎ ÿ§E¸H?œU‚W ¿À“8-Ф³U]|lFˆù޵ƒWF è†Ò1¦->1öaÐUÏŸ½­âV&Hä$URëÉÒØ5¹½µO¤ÏëËt;Zþ­vÌÒ®õ‰ ™^äýÖñ˜Ý:û Ç öïí§"94Ïj/ÆšbCêêÄtêñàqßÀK·ÈëƒCÈûb_e”WpWq2ØÎüŸyŽ¥Ïâ^Q¥Ôì·UªxÙŒˆ=Áþ^·\ÜÝ11NïXÎ'\·:Ïwnò»-;u4zUÚ›¢ %ÇS=#Èq?Jöˆiºs½JýT—¾µC(v¨V5æÖ&ʨÛ2®çusÜÚ~ï¾ &©wëýG…#¬¡ñ¾ÉvóÆIþûÚeËÒ»Èé~gÝûLZùM™Qg*¶–ÏæW”ÏÖšÕ–2‰Ì…•ßJ ™õé]ÙÛò\ Y…eÉÇb’ƒ%A&QÔøÃI5iWòìÜ“ÂúªÀ„wLß.Ï¥ç-½þu·öÑÄìKZUbZU¶#¯!?ЍqJ¼–9•M¥¤{U¾«5žq½::2 tw‹9œùR?©»°¥ÁQ»¨wþ€v¨vàáœÞ\פ VNjñ]µ°ª¯)¹}ªÓ¦nU ()œ•»tm=ƒ÷†kš/½VÝ6êñzV³«:^ß¼[;Ðôµþ—úÝ Gê×½–'5wžHè¥7wKt²eü]¬W¬ 6½A¨ ¶³‰Âª:¸)¡.Ÿõ‰¶?'"÷]ZM«ÚÆIªók_:h74i˜ê2nNÿ¯ñïÖ m¤¶ù-íÅ ÉEÖÚÂTÇð~G‚ÿ(› ç>[ á%é11Žß›‰Lü>8·±A,p5HÂÇ Ðä_¼3úç‹3Â¥Οm!F°3ôú_†N" 4 n…WÁ? !<GBà0À&LæØŒ81ÊA,Ù„ âóqÝPP¹ ºûÍÌÅîÿÁúàjAÖRArð;Aw_¡rè/èŠþ ï†D ¦úŠÕÂð(’A'è²eÂp †ÿ‚¸! Èd.[8Y<Ř˜ýc¶×ÜÈ\ež8µó˰\kßãpÄokvAíCfZÉëŠGµIœAþ%ao£Ã£à×Ó‹Œ‘©¡ É”êî´ñ”ZjUåþ’H}”ô,!3uMþL JßU:SE•Höó%¶brùâÄ“A çÐg!/Ö‡?‰¿îÛž‘{‹ÇÕ˜ ¿LÇY<>÷ĉ-JU&MFéÂ&£§ÌÓª¬Ùl¾Q]½òŒHÎPÐ|“ïÄ/HW?)N‰Œ “EsóUe볆Cöx¼÷:P~~µÏŸÑN "†À ß Œ«L«sª<™ïXFüyi›—avpZ/ï¤öLIUôÝIJZc¾[åe¡£ì½0ANèK›7úd¤ç·(2Ê~”èþÚßÝÃÓC*OÐ'Ù§ù–Ì•)p¨‡Ÿ“ûV×H•³Îå\è×LYM¼ü-÷j®’ü9°Ä«È£ÏÛ8ø1Y˜|½ÔƒaZyuøôðµÁƒŽý•]_ÔäFãÖŸ[\?4ïjýÑwshÍ8mÜwh¹ž¥Í”¯”Óšv´0›>ÔǶÜ3Ìï_Ø¥lœßiG•ÑjO}ò@AGUó5í¢®Ø®?u÷ZÒºöõ¤öeéMû¦ÛohŽª?5Jt;Z›Uùm­úQÃÅžëš=­÷;âê3ù—«jâê}[Üeââ?´:ÕÜòâ%K+ÖV«-·Úˆã¦wß]÷ëÉçµå¤~NЦÉK-ª/0õ¬‘oëÚ‘µ#{NuoÑ|äÎ-‰˜‚ Î"ŸŽŠ¢xg–vWoª<Ìtc±j>Ñ'èù·™"·$9fe U’üOúýxû€c^Áþ>Ÿƒ&Ô‚$IÚ9zœpXô™åFó•oöÚé§ ùº)1¡ä˽f TÚ—T[•‰†K¢OÇO& a&ó¶Éº‡é#m†º´Ç¸-¼=¤{£¡ÜàÙµì\ÛSdP·]­¯×{¨þ÷J»êË•"ÅßM‡»ÞjûT¿+ö×ÏÎÙ˾îªV0×zU»šìÔ“Z½zRi¥‚tºžì>LVûTõRÕWÿ¬±GsHµ¤A×ò_¯GïmR;Ò¦Ò“å +…¡üœý•Ç+U¬DTéÑ^«ª¨½T}ˆ}й…Eb•r¢›{­{M{,{2ûð=¤^ƒÑpƒžÔÚãÜýJ¯è?Ýb)ü¥üïŠ×å˜â£™?âý]yÞ+ì5–A„ß'­_= 'Hc„XB#A†;‰›‡áØø –‡ð¹èÄ.À¦C,8þ ¾ëCZ‘µˆ?«á ð&@ǺB¶È *BeÈQdjŽ¿·è Dÿ mEBcx8‚·áh¨*˜ê„WAW ˆ¹øä*ð è 1 …° ðø@‘P ü|¿@¶¡å(  ˆ+O¼„—¢fHÚ@´%f*á×ÈØàb·€» ø+ÄE(ÐÄ€FÅÈp| ê†åèúýƒà…fÓp’Š:ínq ƒÅ09˜uH:K¸‹»`ž™WX5̽P3^ù¥ª£Ò”îP¸'ÿU.v¬HJŸ)f§Ñ¢n…”†z¿÷üÃ{ÈkÑùhŸ4ò¡,¿òEEõô•yoâŠ)#U¡šŸ$14nâÙ¾™z9÷Q™¦Öç‹Âöõ<{¤žÅÿ7Gá™lûÍíGZ]¢J˜õ{xûùR_×°Š[nTÅ6nºìy“‡va“Bº«–PĈý¾,VºÞgæüÙHM1W5Õ§h¶¯4¦–œ›¶7ómˆn‹›¤|ÚÚÝ’C¨ÂH_©¶ÎoY¬œ­ã5rj„A}ý7®ÊÇvš°“3bó“ý ÜJÙåLÆÛê1áY£ÞÂ`èÕPø`12“°…²%>#Å;ñCdMÌÃb:ßIƳ¯Iäk•Ó¬‚œö´‡yþ$ïBÞxÊ)oS–å-*ÈL:–º9À*âW*1~EœsÎ.v£x?©¸!ml}xS轈Åq›2Åqô‰»(}ÔÔM‹Ø±HÒ{Úå|Cþ¢žü}Ë×®%C'?öº/ªÎ4>è|7Ž¥ŒïÖ ìÖÿÙg>ðp˜::ºûBî°Q÷-ÚN|ϾVÛúÉú †…R'Ñá¨ø`]µ$TÊTÝ×¼Ð꛼;ävÒ—â/|‚¸¡Å­g¶‹¥û ¸% ­›•”ÊMìÙðLãÛòMýOÓÖÆ„†Eóµë5¸Y¥©[˘Ün‘ZΑÛKD‚ nW-ƒÏì—N4Ìo¿×îÓkۗЃéÊéîvïû§_Ò?Ï𦧧GÐW6XØ“£ýM‚ò"e‘ú¢²Œq8%Ü÷•»Ó!›A—J»ÓvÎD=QEÜAr$!ñwðŸñŸˆDoÒ=B*j ÏC‚`&a"áè:ÜZh3€¡S4ZÔÂo'¸Mè1\!â¨àŸÐ¨)AÌQ!‚ÇW·€&h32±Ã@¸¤`E ÄÁ–ȘÚÁxn9}[Àkð þ î ã\ÉÖÆÌÆÚdÄ•´3n1ÎÕK|µ÷ŽÖN·þ&q©°È Rׯ7D›&%.KªÏÑpŒZ©-MòM¬>Î9ª»Ë.¦ÿ¯*¹’XãRü)gošsjQE._û=èrE,;.5éVúþìôÓüqçc^^¬CÌ«X4´<ˆ³%Á7^bâþÊëHüžüu…¡Å\†—Æû(È­{Ô´X§êt롞 ïíjs—n=P3 cÇÏ©G>þophØn$h;جguunoë²Èëkn´’P„Õ¼iæ#f†pl¾hVÔò».\WÛ¾®C¢~, ly9|¶†Ö/¼£¡Ê­Éx]– ЭÒì/žT²ÿkÐJœDoEº†êìú.öÃJ«ª(A’&Û-œ‰î îˆÌ›åÕH;›÷ëï1H 3ÚfÅ~]c_¡e@¯¿Ó÷´ÇIï:àÔ>Ñ˜Ýø¥ù öZòhîaß´dy¡0úMìå7þ†säsqî¿:i g­„H1ô7¼„4‹¿‹gZ,mnøc¸HÜY4ÝŒ;lB§„÷èIüZÂkt9ºñ‘íkÂã¹7…¯Åañ ‚917‰šã_ãß#lŒ¤à 3Ä4ÌùÈên˜·°Ýàè7œ-¢E$P ô܆\„¯âÂO ëÐes-‚3‘,s ƒ›á$äî;:€/!þ "–»-÷"¯ð'áFÀ <ü˜@Cø<;ØmÉù£ö¸Rh±Bö!?[p îÆœ…sp·ñ¾è^¸÷w õÇò‰bÔÿ ·—…v ûçxåXÑœÿ‹2-Vr+f•ˋ̪o ý¤Ê°Â?s£S/EaÂü|Ûݯ»Üµ?e#!àuø§ø-Äs6Ë\œÞ9dùɾ‹r¿ðzÉrú3^À`n/¿[–™«3²/·>dãd'÷]¹)»€µºfuÊv—çN² ‚o¶ûò€ë1†äc©âRo.½Áe¥orMònåV2ަOhœK¸4|”y—6¿tï›fW»¾ Ðý*ÿQ¡Hký3¼=ŽMãå®ÕMi;‚{„-daiÙÖ”»Ûœ%ü#ÝÇ é­tÖñœáÄÍ ý)¾ù{ÊDUt^¶úýþáƒã‹‡ÏtÕ4Ðk7eO…ç} .Œ¶Hú”™¥&SÙÔh!Â2|+_6þ®ç·à>ç­TÌÖ³;sæÅ+)ÙÙ#™Æaçþ+íhÙêBMö¯…K«ÿ# ÿ@ñ¡ÄÙ$9ókâL°ÚµÇq‹sa°OþeΰdM= 6i}Ó’Û¼_U¦n%´:i´½ß4ti£¸¼µa¸úBóøàxÛèë‘ÍdðüàïC/†'»yê‹-MNËÝ>ÏÁ -E^É{Ãf”zV©+XìÖ¶ºçí›Ú»²:é[:F5ÞêŽFa]–®¾Û™Ûè,óP4ÅiÚ:î>¦Þ.|R“.’äˆý<¾ü Nßý­Ã~É<,"7.Ð)– lÅó¸&µYwtËd•Ì@úŠ£ü^UI÷ýþ5}Ô…üz±I·Øà;Ü<â6tBé^Ù»@û¨1 Üÿ`X?Ús)~âõØÞIá–ŠÝ¢,B’0êJ˜Sˆ­w­ë Hø‚Ô«u„åøcð0a#Òƒ'hñ¥„UDAˆ«@³pÏpuøIÜvüÒîò+Z/ÀKH–¸§èvÒ)B ‘HÔàwÈÈøD÷ÂgX°ò¿Qsíðä „@ûç²' ÁÌMÃ7°I„?C÷A Qx#dmǬ†´ð6D¥A¦ ° ª€0ߊOÄEá7@\ CÀŒ€t°Èz&’ãy´Ë´ cd¡Ç`5²ù…Ãàt¸>‰l‡_"@þÁipGð8B11аŒæÃ$ôÂ÷-P î°1Ù²üi­y­ºVÅ3ô²;hÒ˜ ‘ÝS®W”.nKí÷:fy¼t.µÞL( ù¶ 9;`5@0"ÕŸ sÍÜY:SËmµ^àÛÓsgîzܰÙmçà© $o ¯ˆ^_É·dÅîw±8SgëëôÖÏ#ê+õi²4!„²<ƒ‘ÿ#ÝÙ_¸;ºìûNv-l¹¤yÙë8BѦ”ž¥^Ï"BÇügε……Ñ·Ê0¢ôÒÅÖì¬æê¶„ú*öÓ’…ÉѪ”(&±¶5kc@ˆ£ô<+õDõ-Õíæñ–óí§;Ú4Ûd/iB™h\1Ú6¤l»+="®Pï9~qÉÅ}Ž9 ?Ð ü4p\¿³ÿjç3ÍAƒvDý¸»Á°w «‹Qׯ±erKV1¯eXÒk„ž­†^–>¢SØêر¤Âåô_hèeÕ¡õ÷åýMá-WzËýËuÅ8LþŸâYÁ^¼Þ¦·Ñ0Õ¡z*pçë„ÿ“¬S<ùp«Z$q'š[¹Ã%oèµU;Ùñò¶vËž ÄfîVH#£ûƆǀÞÌ®4­Ÿ$]y©wÃHèø‰±Íã‹Gdš½üÅÕä¢"!íAÚ¢h›è¡ï¼f¬] q6ÞÖ-cIAÄoør$¸…`EÈ#’RH‹‰«ñóæR‚+Â÷ÎZŽY–¢ƒ(ïDÿÿÿ —eTÛW€k[Ûµ]Ëêî]»º¿´@þÃ¥PŠ»»»“@b¸Æ=„àЮ«ûê¥ÞÕíåÛ=çÞó»Ÿ~çyžwèÿPWž¸''ÌÃѰ—p œ‚…æ«G„õ€ðV £³Áp´Y¹@ÿÀnh 8fB¡õ`¦|ŽñÂÀ òƒ<àahlB£¡×ðÐ]hpò|  öôV‹?ÁiÀ`B`?øÂz¦ÎBëW`Ãçaí ?8$ñà-p7tû^ƒ4`:xx Î…ÛPSüjü1ü^B?žŠkÅï#ñÛñ‘Øh<Á¦ÕyN8?­&߯غò?2·“oYÇ(/ÝÔì¶Ø{µŸç¹ôsa¢&ý—ØÕSíKÎ:x¸;5Ù<·ñ°}DOÃWgvïW¹©R{¾ÑÌ+¾gÞ  ;:ØýëY˜P“v3öpЫ¨3e×jšsv¨\|øUûäz?÷q [¿<á~œCüº8“ðÏÛ²Ïqs )E­«éï«^ÔD³*›­é³+o­#gԱ̤ú]ý+»_W5¥\Žx9ž¨,l˜nWK:ÕßûþPy´˜S¯T¦äsþL¼šµ8sslJ <ðgÜ·ìºÂYiù}5Î9º_F<ÇúÆ GŒòS ¤2§Š•ceî%Ü"Y¹?y~%·š=‘t2ær®‡©ÜÔ?¨:Õ—¥w˜º=•ÈK)ÒÇ,‰i‰>¾+ àœ"¾©¶‚SRÉÈþ_åJîù­Þ£ ·ËNäü?û†qªmÅ!²Äñžû—iõkÖ‹ö`GvUž+f¶$³¶7JkÉ–¥cƒcƒÎt¥]çW¦°Yª¹døsè°ÁZçªYÞ竾¬Zª˜–m‘ŸµI½U‹•Úã†ÝúZÕ†¶¹M±œÊ†Ü²™ßŠÛ랈>jBuÑšçÊdÕscÑXÊø[ÃÆîÇìx.£÷¯š_©Òõ_ yÞ]‰ÍGÛ(íåMO›&› ÚBùúïèŽè¾*¶Þ¢f”±n³#¹f¬ÇuáµRf÷ã_jVý$û8ÇŸAïøU¶_óHåÓ:ÀâH‚ô[Œý´Q2iì×ÊÌ›Ci ØG¥/u톌‘Öanÿfe~û†Óyò¬©TæÝÖzFQIdèÿÅAmhhwÐñ¶õ-;©e/q!Z€ë!Èq-›‰ˆ/ e蘊~G/a¹Ä›Vî„%ØÝð_0­Ç]ÃmÂÆßÂSñ¦¸ß &xGl4¢‚08ää̓~‡ƒæÂÅà$‡W 8„í®æÐŒ†á&8pV00Öž„ Сð ø#†V[ˆ0æà=p Èæ?,¸v˜XÀ s"Aùðcõ7Óôg¡ç+G8zÀQÄþAp&LAvÀRÐì~€‹íøo8Aˆ?…ŸÀ™c'Ñ|ä(ŽNð´bY-µ\d]fø#2,îIޤ ç]Ô‡ùÍÁ;nW|ºBŽ„·Æ.NÖF¼rÍrÜà|ú;RôÑç™Ï(vÁÒÊPŠ]Ÿ½¹ ¥Þ&}­fGMŸI°Q;> þw'*;pÌûVèçÔ{©ïÃÓ»"‹Â#6…?‹Íˆ .|»0ö^Àwç5.FOGß&ïÇ1*.±Åìú<Æ‘¦ø®ÔVlÃ&RqqS9ú½ÃY½®ÿQßvyI÷=zy5é@ÁòÚOM¤ÕZu’äE»¡þ—r» ŸÐò ùÑ_ãÈñ‡£B‚ׯý]dR}½ª¤a¼ÃU”¥èíã÷O¸OÍ™˜ÒP[^7ø¶|æ¨+«ÒM’â*cÆæçõ²kb…YÒªÓûÔhÿ!]”Ñp!üï½R‘M\[b^ìªøžŒ/¹µ¥‚êœZ 9­Ð—r\`¹ÿ‘UÆ–¤—"Óê‚‹êଆ¤7)–lü·;’ÿDúCqIÖßûƒ½¬î¿Ê£ikº"-u¦ÚÓ}ÕâàæïÜ•4(íõçGçLÈßð¦9FîaáRÉYùûþÅýØ^|»{w~ûªö…MÌUí]&üJÉjÕEu®â”xWûöÆ'ŒNæ ;—¹“¹®1‹áßhÓ¨¢~/YWóRà&æpž÷Ä*žjÈê%’S‚…r–ºPá¡øWÃ3”«*e=mÌÚàúÈ®hÅÜ~ŸyFû‘Äa¥àýUifƒo»½4H+º$Pû²š-YažîNs}ííøgo9UÚMY/µŽ³²".¡#¸"‚¡k‹\Åþ…@/°tìwô0Ž‹p2l4‡ŒëÅÿØOX†;€ß‰ÍBV »À#Ø•È0VíGPôL…ÃkÐHtªƒFàã@:ôd‚TBà_`> ÁøZÁ¥ð)Øzñv‚’Á-^šû¿cÌá‡øåx ôÃÅ|´µ8aá‚Y=‡¯ƒíà\à7Œ%zœpÕ©îl'¡íÁ(v°<ˆìgA"`˜gÀi¸ŠF¯ásðœ; õD÷¡Oá^8 NÇS¬.[°Á¯%ì´õ1Æ6æ¯-¹YbÞüä¼s>q™YZeÆ5_[ïKAgB‘Ðî€{ž<ÿE!CIgÓµ1×¼Øá„‚ªæW„eF&^H7ÏÚ›K‚ªO”¤$lqËvzåe¸É?¯É~f}`hò—„m^¾N>)î8Ÿ•‘š°_½rüDœcùð8äRèþÌ=Ûñªý Ÿ}©¶%—Ëä59½TÑòî —JçW°æŠÕ&Ï¢wÿ›`CƒY]þ kGÑ'š¼s½˜ Ì8 Õ­“Ô¤lRh™Ï¯>—WGŠbç%ÝKK/YU'h\Þ,ÕÕêÕúaÒÄã ŒQ ¡±žÖö4×[§ñ]2ž8§æ|çSA`½Cf%YÁYQ¢¤µvbE÷¤[Õs ''¶(´Õ7‹•ÆÔÆW;1vrÁŽþFAjسI1©¸×\W;ÔhƹÜÅåíÝ™ÍDn>׃ëÑ:ÜûR¬¶¶ßa^«ë'OÜJÅ'îLôŠ?ƒþÅЬ“hãú¾gRÕ¤e÷1ú=Uë·>ªfÝmýóEʦ:Î@×ÂÞK<©èìϼ{Zå?p\ÙÉÿ«Û¦-ƒKk™ß5›÷®ç÷ÞÙuŸrÈmôÖ ¨ëÚÓükï:±Ÿjá`ƒ®Zý@þJþFi.ù£÷H×+aeß/ú ¯Ô·ÅÓ¼ÛÝŸ›n×/¬É<Ø.ëÊnTÔU0h¬ªºZ*åê¨V OÝ´Ÿ_¯êTsKd@Ÿ©¼£ÅÐÔ&]ÞŸ%^(!vš²ÖÖdÔ:þç¾ï¿ÿ·§Ô­Ã´í¿bèàøQe«|©æ”A 9A/lL¡G¬pÿ`ÛçØlt6w:ì°Ðö¶µŒH'¬°Zb)#Tàxø¯ØE ÅbŸc/â.—âVâ¿c¿Í˜Y<ÎÏÆÞGVãr ^ØHì2\’ŠJ°X/ì06íD=‘¯h vºcæô|ȇnô‹´Dæås-` Ô ¶Ó˜ÕÐPsàÿ /ˆ ]2ë†@-dƒÝŠ»=Þ'0°¹E&æ%æü̇,~¦1qÀÆîûi`!(z€L4Be ]ÁŒƒo z ­E´`5X§!ÝБ™ ±X.Â)±k°Yx3KŠ!âV®d¼é“v„µ¼È5Ì*HŸ›’ãOñÜ‘>áo+°[ã³&Êaj<¢Ø$Y*;¯ +É– Š)ÙÖQ/µ¡Ÿbš¬®Äo‰ÿ7‘4zzxÚj°7$öI=äŠX¹…¤Kس§;_Ò1À4è\â.oò•J®*pÒz†:¨®&÷ <ÖýUòÊ–kM!üj)GXÌ7ÿè—# #£†Ï÷lJm29÷íÕiƒGs -úõýBµRãiøk4wl–ó}ë»Í8Xµfˬ£´QVãJý…Â$“©^5f¥'kÎrœ›o¶új˜º{}Z9MÍS_ã)™¦Xiþdñ+Ü(CTÚø±Æ¥ŠÆy)®–ìë³SE‰tÝ颷¢fûŠnð‰Ä]½Gï2P ÝÎ2c§Ý)Ù™¹Ës¶ÝSkÀ6ϵÊ1öÌmkÍÖ&ÖyvVGˆ°÷q.¸å8S7»ûå`Û°Wq?ña–V„…¸\¼¸ oŠ¥aOãöáž`ßÍܰVˆ½@%‰,†J Ÿ˜Ù€7øê…¡U@-HÎ~à1àpB"øâ  ¡ìÄ “8Ûà  7xÌÁí0 ¨1d‹Â°pø¾mÁm÷™·Á~ ù@í3åøúw¦%Ç1 ` DƒîƒÁ`)x €àXe€]3¶û¸ `€&èCtö ú}þ‚w">ôމÅgm/ÞEÉ©ÛQØ–îqÞwŽ¿ØMäz=Â/ ñòi´a)¶éðˆ¿Uœ_“Z{´z¼øGæÒT\dœË2â£è-¤Õ¥›SãÅ|ŒŽ òþtîâ¹*×ù.T§·n #]âÈ!¶nUg\œSœCΤ1s±õzèiîZç–ç]á7èüÕ¯ÅgÀ¡ÆÈãñîéçI·šŽñ*:ìÎ’6ö‘s«¼êV2™ì¨¦þ–CÝYÂkü‚fš)ù:õk[§‘ÿLÀ;µ&e¤žˆ=¹:„q#Ö6Á,=£ ½[¼:Ó)Ùü—,ø ñžß:I<Ùý®ñ~} eqÖÕð€ðEwSÈÔ=dÕÜ® RL®mVszUjA¾+µ„ý¤õ»ä N£:,KØBFkrkŒd›Ö|È~Ôkø†á´þã@’AªIÒLÒ[ú!:+=(*Þ¯Ú+à,ûÌ\øŠ u¾ûÜß¹o÷”å'&æï$[‘½ò RŽ$­Ï”z-Çšø”’ŽvD³Ô9£¡W½ýöE@±scàˆoŽ"ÇÍŽWœÏ{ÿîïrÑa³c½sŸ«ÈÝÉ5É¥Î+ÚgÚçº#—ÄL˜•t#™šÈKJM6Ë=UÅlðjÜ^‹©,Ê·ËRç¾/|]ÝÀð`Kš*Z޶¿éœ;Þhçìkµ[kv4,`Z±¯0Ôœ(´LœŽJˆ¥$XÇ×Ä ã|’näz—è‹/d€ ƬU\ާ:kðþ ë¾Öt¯¡¤¤WA¹Yñ³æÆ¥¥~­ì ¸Pz>X4@¯'­Ì>«ŽU¥*?ÑK¾ŒžaZúÀzåÞdo8¸ßÇØd\oÜ5´`øäðÆ±² ›I‡)pjß„ÿ˜p¨aÀA!•œ“ZÈëT\yr‹ª.$ë1ß»8f,ϤlVQOÚ•b­ñŸ£o‡~®3vwö/“ë~ÃÙͺÀŒfmn_-üKúA–,*hЍù‹¾´ÙºÅ©'·Ï¤“ø§Ð´oã Ï`º^!7ézÞß²¯Ùžß¯jí;"•~”—kÛGÒGTý¦B7F%Õªk\ë<”7j9¼V{]‹QoUMõu%ÐS#ß5ðÏ Mïîú•õµT¯J¯ÊØJÏóN"]ÕXÑVüªæ'½5­=“÷F°Iä)m‘ÉO«Nê^¯\ËÙQbÆ·uïþ~v_9ÒaYw½4µÁ†Ý›ÂȧÉjë[Ï#eù 'ÞÖg¤ ˜k4šíº ªz^Ÿ»ŒßéXßJª/ÞÙ^æœð5`½]¯­ÌÑÜÞÝÆÆú<~Ì2ÎÒÉÒo$žµœ"†XNŸX¹XâˆñØxüÜwä$ö)¢CŽ#™°=„ ˜p7l 7íp¼H€/Xh| Ê…ÿ‚¦¡Ïà)äô ã ÄÏa6¡fd  ‡‘èâK¡dh„>À:ÉÄpk/ôfA}ÐF˜ =†ÀuH'ŠA¯ÁÐéCí ]D\¼ZËagh1¸{f«Ÿ“å`$rµ‡†PR ·‚ÐlÖ ×‡dííþO¸8õaÎÏŒÉäÔª œ Õ»Š6示%^Ë‚ƒEn‹H]¼Ó'ÅûÆ9Yè_!ááÆd}öê´ÐpŽË «»VÉ^‚¨K%&M)ôè´U®16>އ£NäåÍÎû'ÕÉ ´srœYáE¸èµÏù„››×®saA~>¤ð¿c ÑoõòØÁ§ÄI—R>Å'ÈÒòãªë9 >é[ÞÏLÛ¸èÑYY³È™Ì®žpqÿmS(£‘ÁãüÚdϯ^@.£¼®a™r¹ éEwcÑhiB^òêTrR|’}nWá›Â…ݳJîÔÜoò–ÞìoÓ†tßZŽÒ®Õ1ò©›+GòLÂÒÛÈ«ºb†Ã'ôcT‘µ,yeô娛ñG3þ+ß̦HJµu-:+ƒýX~Zè!»£óнR{ëbÆ>LzŸ¿7Õ=^40q||xØKç¨Ãô¿Q¦©ÃûPÅýŽg õyk£‡=hHÌÒìâÜÅ™óÓ®$O,šx<ªŠ6®4Ü|7x\eÉÛÒñ_ϵ.fOŸp½˜ÈûSˆŠÛ#ÞÓR™o:÷ËÛjB%»»tŸUîòEñYåI)¦ãߦu=²/RTy_Í6þoƒ÷ZÌAŠà­0,ƒ€÷Áup>´½ $A*è ´J„5ðaØaÁûao„¨gLsÊC }ˆ=¿…ëáèU‚£:Ò-°1OÂþ3º ¶€¯#‰èuÜ3ä0¼ d`ÒÁ…Èct#v6º¾A[a ô,ÝÀ4ˆ„ dô_DŒ4cc°rä94 ¿Ãàþ!þÏyA4šu¥P^ô!‡–‘ŸëY|£<‡¼…ìUiV2¯0#ãg‚¶ÆúdК4Ër2-?ÏÛbsÍñ²Û#JÄÆÐi÷yÎ~^&!—¢¦£"°Ñ·RÍÆ&÷G¿Ší_?•äe“{%ãJf}©eMJÃE†'e âIÞÃÐ2ïZ§‡Ì{4ˆ?®¥*$½ìs4úei/ùxíÛ\p¥¿Ú0©<Ûx1·7Ü$1,{w6+ë`šYÚãü_JÖ”OW%Ö¦±® YšÖ¾4í Ÿb6×–Ç|ÎQ0Ut§ÚëäE$Å‚}KzY»VÚÕ¸-{WÀy/zЯñÜ|U‘ö𱄻¡ã´äØßÎîýs°sIëF¾¹´¼û‰d‘Q3µï¼~ø¡F¦åêºtçôÛtV?H²º«wÇ5(Çc–¥¤§þu71*—››’êœ)*‘–ì]3;„1ë9Z™ÖD9K²‡ÿY*‘ÍW¤+]Ä£Cí*Á^ñÏŽõÍUmû„‰ê†>ý"y,Îê8×N Tšþ|Åh·y+¡;SÚ§ŽS^í?ªv’®o[ÌùÑè^WX»‰ûV’¥?$ûØQÎlvá\gýÆå7ãüÕ§²GÛÒéŸj¢HáÔyìöF2µ ²°˜˜õ¹Ü„µ³)’Õ@ 'é©‹;þé:-¨”æHï(ÊU7ôÆÆF]Žh¿ ®o¥:¦¥§¶³Ä—2¯y™Ø¤÷ô¸2߂υ]UÌ™ãrf`&€EÃÂ) %ôºßtZ3ý»Åý—Ä*1Cš-Zß®£í*ÿTx?}A°Æõ'µã+ß.o¾kƒK¨ÓßNöˆƒ“í;kOë#„Lb©•©ÕOâ˹g<—‡mÄn„È3­´ ï‰7Åkñ‘¸U( <…CQj‡¾@æÃ±ðH‚´#xxò‚ÌÀdhµ Ø¢Hƒ"`[˜g̱ª1ÓRx>j‹r!žYD "ßà+¨+2ï÷#›Á„™Ý°¹ÇéL/¦œB^p="Bæ`×Ã2Æ›EaJaSdÓŒƒB™™]Å@kqçˆ_,›ìÖ “¿g‘ò.)6”ï«qiØÓ°¯NG[TË%g”ë Og{§:%¾HœŒXë}ÙOÇ‹†ZÄï©æ·\d¿$EfÒÒÆ2Ôip⦘DÿœŒ–¦8-ò‘àø¨À”r,o¹ëlË*Ë÷¶®¨’³”}à@ÒDËÔéQ¤oo燶ǽÞþ毤}¹¯óÒk6u­—¸wäS·d›¥O-©b}®e¹uþΓwÝ–°åT¯ÅyÂj¥fygÓ‹í2‘!rCŸ•Bí®ÜUø,ïX^Hâyo(t* Èÿ¨ïU·z·egן©8›ì”åð›­M¦Õ”Ý/Ö¹6JKa;dû–@"¼Á~&0ˆñ6„pü6Ë96jK1Š„î(…fНÍžá×òqB\ÌcáÛ`Ü ƒð;ðf%†„©…>Ã_aW8–‚ëÁ‡9,‚A4ÑA]35Žp°yØŸ¸Íè%Ì 8…‹€‡0t¾%Ðaè‘Åg€gáÄ#kPt jBVÌô¬D^#gÐQ4iw ÏÑX6®ŠÐâù>nGê·,¤Ð²â‰B‘ÕM2`úƒz¨~[ýÿÿÿ —gT“gÇ[[gqk«Öºê@«V_7$yžSD²÷†°7$$ŒHÈÞ !{‡l¦¢¸g먋ºpÖõrî/×9÷9×§ë÷'::Z*š˜ ‹*ƒ ïçmΙ¸%1$ïj&ª¼ê飨ÚÅg}%×ãæÔE×`‹»³›3ÿ9õcð0²ËoÂÿ@”!»¾ 4oÝqŽÿÿ«~ÁÈÆcØôø<}Æ™ žî™Ü™¼'niRb¾ ¦¹é0šVô2]“R]Qø$Ÿ)˜Õ„#ýMÙɼB×µºJ0)„ôTÔ­œ”ÜXöÿzò{CzY:¸zP["ˆéœN¿ªÊ´GõG,º¸ªÿ±ñ9•íGj7`ÿ* A×\kxT?½iœJÕý™CìÁˆÁ7Aw—öšd¦í¦ª/É¿°7S7PC±ïër+îTø¦Ló:¶9P’QÕâ+°¯Ê\‰Ý¨Ëè–úüšª¢á”Ÿb§ÅÇÆgì¬|Ú¡gN銕KeNÙËn^ç•@©¼.+“ú‰¾u-’-éŽcŸ£¤Sb¨!œ—òâÓTÏæ(v^¸Káp;2ìŒoeï¡bˆœÐSâúÔq·»ªÝbǨy¦RÁe…êæ NŒë°û¥ó¹¢[v‚·‘v‹&gñÕÒrØRdÿlÊ왢ޭ¸'y)Ù"0t­ß5ËÍâ¿¥VEŒà{¶'§š²‘’Ì.''5Ž5m$×2×I>Èþ•/–y nwx ´ Žy¹µ¿QX5¯þOâgÖe©NœÈ:Á(gˆEÁ=åŽ}°^˜õ€o-œu1Ûײ)·ÚOt (o;6N/‹+ù2‰ú–ù´y5]ù;J³°OÉu41sTÜ¡°Ëƒ5ãE" hŸIÎ튒°»0# {‰gDÁÖhc°HB6´='üKŽf;€jrþŒÑ”¤Ì©ß¥¼‹ûëD]TTô÷ÑQG~>\æös¨+ôVà¼`Ï£‡îðýrDÁü@’p×ß¹6`Y Ì߉¸ÍÒÝ€ø¨ÿzàáãýø:(j!l>ìwŸÝ7 ‚`Àç‚P ÕNÀNÁG °rØ3¨öœÎA´ ‚üLðF`ì+ø¶²Ë»þ` ä4öJ€ ÖÃF ˜ô¾w dF…}‚áÁx¸ ž„¸ ÇÁÿ†GÕð&„Á?&ìrÊ‚Êwu²š®º…ج&| ßÖq–4LÜÖ™DŽël!n&ln\Vý¢øR;?4·-%4[TœQ>½f>µQZÅß&KÑþACVGef¬Î,LæF'…„t"K¢‹’Øù‰ù”øÁÃŒ WAªðÒðñˆÝña‰+’‘)¿¥lÌ^ZŸ'ídÖCTJý%ÌHÙ眹i R ™ŒÌ¦´†‚k¸ßi·çXjv5)¦Ê”FÉå”YP+r×ÕÒhäûç[‚å‹}¿9F~T´N­´º× ÏݾxeìÙùÌA‚®MåbZ² Hé‹‹’ªÔÚÑu¦.¨‹pþì¹µ#ƒë+~õ5cØjS›ª(‚4šAnü¹À]s-Ì?å—q½Šé%vRÿ!.ª~yÊ+ÌuD}%zçɽqâ·ìè:f:Öpâs¦!…²‚}‚È“ä­qøçj"IÐèª_ÛYØÍ19 doÔþ¦hÛªÞ_{žñK©wšžÔdYKmI6¤ùŽzCwx·FQ¯‘Ú¾¹.¹Úoì,ÇÒ¾.Ûi½@½XÅîYâ¾Ü—Ô{ÙêcÝjH÷ñs¸#t ]Ï{ÌÿÇ’„É_in˜v†ºO ä$sS#ð²¹ EɪÝ=>†yB!ÙHÝCÿƒ¾‰ Œ4ïÂÏgïë¶o8J{wÙÖkŸ1Öб@à oMÆZ£ˆ9ìÝK «ŒÙÊ/¢Wâ Ã)—ÓqÒ)wŸwb³œnÇ>‡Uÿˆµ§ÅÔ6Œ?Ý27Ý„žß±•U«~ªßHÿ·æ2j}yuí65ý¥X¢ÙkI6yôìÐþ!ûFïÀæãˆÔYÌÛí1•G‹ßÕÕ±Žè¦Ü]’ÁAùÈJ¥ð=‰nüß-4œ³¹Z²¥pvFrÆ©”ïâOs£O|™sä!rZ°3èB2h{P~€@fð™ÐUA‡‚GLÿ*äüB\=à‹à €FÁað ÐD€k€›=üˆÏÃà9À ø ó|Á¸ÚÏí[?,WƒÁ`20‹¡`vp|"^î÷ÅÿÖ» Ú€%°<˜7ð +†¾‡î? n!rÁ°Xï}>Ñ0"L ÉåÀ‡:ø;øÄ¿íÈk¾A¾÷¡¡/â•da+q™˜ëèzô\ÜhË™6bg'­s>ùGJe:±ªå8úYåš’……³ ÍEÓŠ7 Þ  Å«jRÈ+uûy·Ï&«#Ux¥/LÌM]›PîŒx·¯°¨ùµ®£ -Í!Çl?sþ”û 7~QÒÖIlYŒ!A™™›±;qY26%-%$CŸIÈÚž¯F¥¡¢ö,Íë.ªA‡S³DÝ_g:ÔÁJö–ãk$5-5Å]çýîDs[í÷Ýé÷ ˜7Ê®+NZ|E}ßúç,ž_° Ïq½Ö‘y`뱜+iõùÈÒ5åõºê°Î'–+#çÇê/¼8ïð°Méyo|ãÀÜ)ˆ£KUã5UëÑ'[ˆo «›?Ñö² u^öÝìá⯑Ia«ÂW…7FNC3³®dóräy«³g¤ßËaT×·êÚj›~¨N*\_ðåW†®²™z¨‰ošgÓr¢ˆ•m^´—¼eôZüÇö?h瘱\Œt©åŒ ¢ —¬°^uû8‚ÍNtLÿ3w²ë #éꛩñd~íÜO¶§töw„5#/£”v]ïbd¶®ÙZR5^õoG5=LùÕHrVõÚ-¥=·…×;Э]$2}Œ2ˆ©:ZOY$J»…gåÔT}*Û›N³Ò]ìTá‚òžÐøèZ(jmÆ»œŸÓ|#;< [(; E‡UÚz%Ä\Lš´$°yù„üè÷q~ l‚Þ„î È È,Ø `;´ L3Àà/  \—ÃׂÁÀgå·Q7À°>w!»Á]°(ˆlì&ìÁ$©^ ü †ƒO}îLÒ´¤ÀVNi†–ÂÈBŸZH9üb-â;Òç-€€@ ìüÇOá‹BЮ„ìÜØˆ J”t¡¿6¶£¿6|DolºÚVCj&#©‰´vú­‹ºŽø¤å^ýõªðÊÃe‹YÅwJ2J÷Çç׿}©ÆÒãìE£Ø¡FÛÏÚ)”?³©G×'~ȉN»|vM|oÎ!ÜZRJÿ¯õ[íïãééwQ_jVåý’ðìDÈ™•i—²ÓÒo$F¦?Ëÿ)_”Ò?-'¦\\—Xk,ÓåO+()_ˆ)"¦ñI½$¯Ú{Ú¾'ñ5ÍC'A»[¬áîÛîƒn{ÂÝg R¼–þk8b‰±=ˆ>¿jô͹“C8W¼êU{yÉé³/’æmF=Ì9˜)*É%yw ù]p\BAÎ_8Ù×îîŠ^èvYnö–÷w+'ðGÐ!Ú-MÛI·å[eešFë¸lS㬳7ŽÝ9±#âÕÉéYúdký$QéXjÝü)Yɹ¥…¯Kõå_Š·L*Ç·J6Öݼ»¹©©¨ewâ[&s­øTÏGç÷Z×§¾ž¾6?ã~Õç ªÓïPê”MŠtɦÈÞ½Ž‡©ò*jÒý60æQ¦Q÷K0æÝ=ÇÔEœ×´#´éVÂ(Ë¡Щõÿ¨øroF&yË*æ²qHûµÖ[$‹Íu’¨m”=Ó€ãÞ¡Ü¡yð-ÜbZmçF℺RË-¾Q°åå]*zzË.ƒEõ yiaT7Ãɰ0j…Ûtiâg¼•j‰mÈžcBØ÷ö/Š(ºÖ¨ølòR~á… ¯±ŸP“È‹Øïº‡ÕJ®‚èBhð¬û»ô}IhU‘ÉééÙgÓjšgÊ,ÑuÒêV~‚2A}AÍm§‚ÉÜüAA¦¨‰'¤'Ón²0|gCW°ÌC'0Tª·H4´;!¬&®$®mú–ÿ)~ÚñÀØÄØè“wOŠ¢ £fã‡ãÓO9¼4¤(¸#” En* þì?‘B€Ç@¨ñQB_A¢`àÕ°qèZà¸^7É ä $ðø8ð+°4#þ@¬„+³Ï äT‰†>žÀ,0° ‚‹€åÀ~ÈåƒYÐ8Ø=Ø2 Œîûˆ ÓaÇ¡_a£`ˆ°¯Ðµ°­¯j@‡Èö™ˆ6¿Á`ïðºÐ ðˆ¤”·%®úÏXö挡q¨õ=©Š²Šþœ¾˜YÆü@­è¯^ôj2“®ä²„KlhËCÁ<:FëÐ1ýTQÓéÆÅØYÚt²­u'qrcçeâ;J5¯N0ÂÝÀI“Ü6R-hëv—¹¿ÄyÐUê:èŠî_0@Îuöh=[U)Ò3â^yµj‡f€ÉiY_õ¥Ö›Ó°†E&˜ë¤OT5²S²i²«‚ÅôUVëÎŽ=´ZyÙÂæÊ[ÔyÚO22K@ a8E?è×ègYöãõ´LHñVËžÊk¥*Mòë´ÿИbI~vê­ôÑ„ˆ³´ÓGÏ:¹ò”Çñ·G«Ž‹ ·„.憜 ‚únEæ€(_¸ßˆo‚ïNxø7<ÑN@PÀv nAlò-òKñ}IØ ­Ç|9¾„€8¢€4ø‚Ýfà$kphà5¤Ÿœ\ ®¦TèFè>7|‚¡Õ°]“;«&i€¦ÂŽÁ?#vÁ5p<<ÕOtë°óˆ>—4§dæQ w sÃkü‚µá?tQJéMôŒ(j$y¸s> ÖžÓNm«s³/$ÃÓÿÎÊËÊ_–»&m0!/v~ü¢ôÅ î>Í‹ÃÈ!D–vÇߌȉ|”ÒØ ¥ ,NuÛP¹g*ûlîšÂ?ÊÇk#°wZ ‡K¯£0y)9e9òÜù¨}(Š•E\L¸Õ‚ÅVVÙ ve«Òg¥ÜO÷)ú¹ñMªðsÕ}sÏsä)NÓjÐåk¾´.åøh³¬y½zófCŸ:“:T=£FºØ}RS¨O×¥+‰íqúô?pËÜ5nïAïÁiC;† –ÞT‡§ëg¿I®Þ$íUâ 0+ÚUI¿Êv™*ôÉÚ:#Ê,5,çI±Í…'ëˆt\¬ÕôÎH¹;´i`Ðââ 6Q æQ¬öãÏf׳¶É™ Ê\ñg¹H»ÖRb¸ªLÐ}ìê#{¬†ÆÛ\½Miû@ˆâ„ƒL^Ò}„÷M?‘J'ï=€ën›ß&$–’”‡´]ºR—M¶´ß¬/L\Ç”^‹Ie/q¶; ö »Âù¼oª³¨÷eØÓ ž/GŠ? .ÛÐgjbkµMËš+° ­ãí§)¯Ø †?Úõ—4HæÁŸC}M¬£'3½³‰ùt™8ÂxÐþ·õ/þrÒOÄù\Œ´êì‹{gØ,õ=Û ³݈îŠ4ÃZÖ¹ÑV«^.ØÎð¥Ínû»‘Z÷­¬ýŸ³Ì„’øÀ³£_…^ d zº(Ì+\Äð!gø]ôÝâ÷…ø ܈xž„Ç#.øÄ#Yeþ±€¶üf÷øQ`­^ˆ/ vƒE“d-‡>…þ^·áp¸„Ãô“>w¼ á·UÀc˜pxŒ˜ iƒÐ¡3áwý|}º|^ûdÁïùŸ I8r<Qr°®»¿uNóXã…ÆóØ°¦ ¼ŠôœÕ¹”4@jîœI~Nj vtÜkµbg5'<;³9áUREÚÑ\]&9éQ6>;~Gü›³yiY¥A„QÞÏÝ ¤£eñigÒÒÙUŸ›Oà3°5%Ì ÏÔ§Ñy; éå¯ë K8»É¿×Çÿ[ð  >¿¹`JñÆ`r<í*µâɘ˜Ôé—e±™'Rã’D™wPÇë+ñ Ô©:› æ–é‰Ì£íÿÕýV¹²ú n%Õ5¤§i 4kD›Ú§”—$_ÉFa…T¼`BÄÜÊÞ¦µÝU¿TÅ cpZB—/¾ÍC·M©[‹iÀÛ¨Ýfó.×2GÞÀ»þSýn\ß{û#‡¿{›õ& ßb¢Oˆo .r„ì`~¬*ƬòfBh(i‚¥ÇÒw»·Ëz«·Ê\Ϻƒ¡y&Jç&‚i@ITÅÒEóŸÄ½ôoŒ¼T1F5¡¾¦Œ‘1Ec’õ†¿/†‡ö¹z\Qƒ­ƒƒºÁONGÿÖø Cèá¶^§bºÐo¶ïq¬0ù©Š•†ŒÙ`c÷ÛzŒ\tçJR,ýˆàJ»a=Ú ¼ì¿80Þ¿ÞÝ®¨` ¹$óË ƒNù?É -Â:×F·,´ŒêÊôq柜×ͦq«Ú7°jЋ׊å ,eÛ<ƒ07ª`x¶O´H!ÂTl:Ëõ¿o¢ Áô".J–k½b_eÂišUò–s¥iXk4Æ:>»ÎÛÖšÖš:ÍëÍ„Þ8ÝWC1Å&ñ iŸð_šW6f·üØæÕ2Ÿ¼«Ã‹ò‘µ”Eg+þQÝ—Ax"þCù)Y„ ž™J³5º­OL ⻤—mïÙã†Ï6±M`{dÕXÇL<ËpA9OñVý‹öˆ.Úa‚ú=êª?Å^ìxf,q^SMÃDýÁš•å3 —äÞÏ¢%â:_¤O–§‹ÁsC+ƒwÜ @ùÏ󟇀³à›ýNûãý1þu3ö`ƒÛŒ~&¸¾~[|• ö?D¡/1ÿ £  ÷ÀÖƒ›|›ß!–!-ÜF™¾s°ÀÁJ€áü~ñ= Þô°w[¡2 f2{}J½w"µ‡2Oze«`5Üh\Š Á]Æmmb5?Ç[‰9”¢Îù'ãbq[Ç:Âݶ}­¡MÛkB²)Âô˜´€\ j¢ðh®oš*ñ^òüŒ‚äʤ5Ù[q×åõ†‹Ä{ykãߟy·;k¼äf¤tsN@úÏÓáy¿·W­ëðä>íN`‘›4e×ó¨ÜXIdY.º²ý )¨Óż.â Äh¿Ê¹ÿ$?Oÿ åU´¬JFڡα”ÊÈ á5º§Y6V±Ý@ì¨ä9Òîì–=ÕqÖS/‹„¤›ì^^> ÷GÖqê[â®–eÕY%3*Bš>pô™ 5÷1{‚ò;½vKë3ö’Ù+ã¸s—Ûk@æ¾Ñ{ƾÆ}yðžè.½ÇØ>ùôd)EK’¬“IJ™š­Æãfžý“s¢×§WßW`V1§bžÔxâLMI Wjö£OµÕáoâ·2Ô¬n½ ¹›-;Ðý §þ‰öó›úª}Ðítv¯¨êÒŸ:8àÜ5´fx÷`åpöch±Z¡ZoÐÙ2\;ìWôgåufô¤âOÞ™fï ó;ÞO]PN¤W»Ìoþ®[.•óÎ~÷[ËCåyŽ–f:l?áxi^ÑSèÜá¼9ü`˜¯OU†ŒcºaM³ÁbûÝujÚ³G*½á‹Ð]Mû‰·YIªÝá4;T{Äõið­íù,ñ|“GëêgN¿õ’ PmCåK û‹­ÏÕ¦wÎ!÷6`L52<1>ÖÍ?m3î4 0‡©ìn¦àˆD œ ÜX~—Ü­{®@+éVk﫯ªƒUŸô -À$Ð ^Ñ.qßéÆ, ês¼è8f—¨É¼¢OiÇÙ¸Öã6•u®u©Ådäø†k²©¯ø›°V2K78µ³”Qòó’R!‰Ó",ï¢Ë¬|1M `ä`1y‹#ò™/"¯†Þ8”thï¡ãÁ9‹eµ‡Ì ú!`ò°ÿÈö€ö€ˆÀŸ‚¦ý°k2_z#¢.ÄÂÓ÷4â=\äGGÎEÖ!Pð:Ä_§o7" Ñ'ùÞñSûïñƒúÖø^G¨HÄ9Äk„L£Á`"Êß  >€‡¡³l’ãýÙû+dB…̈8›‘_Ò_ËÀdà”ÍoZ¼ñ‡Û^µßèü¬'Nk»"ÜÅÿÚ²¯yYëb<¡yqƒo©²twUV]×hÁmǯj5Ö÷1óèš`Ù£•„ˆÿâVu×e™=4óyÞÌBCqß*ˆéûÓ1fñ4%›²m‹­Ç,‹ÌsMsÔwm’ßy9—(~¡Ø&'+è’4ñ|±BnSÍ1DjûTùêgÚ©BxKB-îz$7tFè³£ºHÇ1êѹGÞ'n<Ë9Vwxs¸+| ¤ `G@UÐo‡¿?L |è§÷Û(DF!÷û£üûý/ø×úý/û#ƒµþsüsüý:}…~<ßpD øçoößá¿Íò±ïo¾:ßM~ ®3áÑð#ðup:¼qk²ëë` « UX!ð¢%àû¸ (eU†Åmk~Ür¯%ìîDwôˆmÓ[·Æ5«q÷°››®4ßÁrÐØú U•…µy-óéרáôï8]OY‡ÛÒÊCó{ IyS³–Í'>—~Òî“´'¡.$uÅi’îg˜rù˜¼ŠŒª$tòÞô-…1Mï™nú` ®’ž¿2oA^nþ@¾<—W]w¹ýƒÙuHÀ¡Î%¤ï¼X…ʌ˚[Q!*û³øtîhÆõ¼ŸJ'Šœ«ã?¥LäWW^krS/t5r–cÛ“E †âûÕ{Ñ)”ï$¹Ò¥|½²Ž¦í¨¬ü/u8±7ïlÛ{ùÉ^‚‰+¡¯m)ѶVþ×hÀèx,=kîÍïý?ÿÿ ×eX“ p»û¼çÇnA1Žˆ"R£A%¤»a4£;Œƒml,aÝ{¶g0B»;í1^¯ûëýñþ_÷ïß­Þ¬œÞ‘Eç[ÖöJn‚ÑKéòɳ—þṎ±g:ªþ¢–øpqâíò·üÝC=‚¶fŒ‰ðœKßÅví&ðçËÇÁ‘zcžf»:I³WvuhéÀþn_6–$Ûü‡'†? f;K¹)cÄa´ÄT#_E?@/ãü%Ú!ÏRbÁñJÖ<Æ{ñ~°G±VúAxVœ+ü °ü¤ü‰[N¨d/“®>+™ª×ê}j¹ÚVsVŸ+Ù'ØÊÄ$3ù«ªc“ဦLsIÿM­9%Å2T”Bö0À‘Zq!ŒƒÔq¢ MH B;ÃÖa[d­ÇÛÓ»ÎöhѵýåòZí>Á[¦­*Õʲê¾Ú"ì°ÇøãÇ^òÔB­Tïn¼¡Pþ¡: ØÓóÉ' Ó¸Ø1¬;n ‘à¨ÆA”ÂVòJ„oÀ;âŸRgY†h‹8K¼pP\SUtÈ–LòˆÒÅÛÄ,Ê*’ ½h°LÈ’wk6©× m%(jEýÆPkž=‚7b4Vªó€@èÒ©³ø±$´¼zOiߘ“쳌­Ì¿˜Ó|ŒàŸÌoâ¶ ÷ˆ³¤6<Á¤§žQð13.lKüÑ8eľ›vÂ…˜·Q_¢¼Ãç„bO‹‚®œ>õgÔd|gÈQßu‹~c¾ëý ýâû÷=æWà«÷?æ{Ï;Èû©g)dd òÍ£Þ¥Û-Ïý¡rrbñ°v÷ôÄ{®ñ¼åñÓƒêñÃã´‡ d·‡Üc/DážèzÔ¹Øq›SùIšK²ËÇ“&‡Ìñ:IË×¶„vÿöïí_¥ÝhTx%è2wìGn_ƒ·i[ÃÛYm…ðm-/kËø0)¬´é~o2E:TÅ8Áf¢h2dgéƒÂCEÏ ãŠXe#õR$Üd‚%dÏÏ|˜%ÈÂç¤;–í‚]Ê Ä»Ç;dÜj¼Ü—¾QÓ•§ÈuË?—µ,sv®uÑ{Ø‚ú–î3ø•ôh* ïÒ˜¼ •R=³´¡¸¾òA¼|<çRÔñàÁˆ(ï¸ô˜Õé…E^U«?t÷—â÷5¡Š÷µ´¡Úzúd”[Âû‚mÌäiRɹ×RÁÑÄ?€ÎìØ ˆ7?4 K‡ûÚ*©¡¥–Ê¥amc\¤ö“i‰ñ±Ú˜Œ'.E=owéL&X *ÿR°Øî¼tÆ@ïÆƒC»˜ZîSQÕIÓcâúwòá XÌòÁJ0΄2êá!G(~%Û¢Áª«ÕXM®¾BÓzj¥ò@Ž”GÀbzPÚBƒW/ÒÙ?[LÆ &+PpƒòÉ–ý’á¯øxî oX­ý®EËöJkÄ6‚íܬ½t>éé+{·4DPÂ[Ʀ‹Ó¥m@‡’&cCâNúÞ=½ SyÈŠxüIÉ P @(:EùÜ8Áùz¥½hŠ1—ûŽy’Dx•T×AjØØ"@¾mµ†÷÷´ ;t„TÆÀ6‡Ü*i^Äq:nµê u PI">¬Uºè<ô³”5’iêdG­ÿƒ£ºîã—1üRÃOUP+Ë›%p¶+å }Ø3xc2•Œ§µ!j„p9ç¾à<Ï £N‘ij¦ˆ=ÍKÔÖL_âíþ-¤«ÜJá"9W•§M×örñÔx(<{üívÏ=Ä=yä9éEòðuÂ8¥9ÓOœ?±Êa‡ãU7aPQ¾míÚVd‡ÕïiEúuœFh;¾wÜí@µ¿jû1¯£a‡xÑ~¿- Ôü£&¢€þ-aVÊ`.¶Êº£¸ÿ3óP.«æ„uÖ•4L¬€½(žã½,œ—_ŸÇÉ“ç‰ó—å%f?Ï__t¨°öµ`*}nâ³ô=eîõ^µêÊÙ%Éù{ >å#¡ž§²–—øµL#ÈÊ»>>¾—6—üµ¤%¹æCYLeAËfn‰(²äÌ¢ëQi‘™á9qíYsKjé5>¶TÔÔWv·ÏÄL¨íœ|+a“ÈO/Hâ•SŸ·H]º(H›y»÷8aÒéR¯º‹Ê:¡P ´8Ç»…š¶jž™ü pÆV!-k{Ö37Šà´û=ht.Ö±?fà1¿ eÌÏ$%·¶#~Ì–œRÈÁÿø%Œ6úl¦#/Kx^ôNì)éVéQÐCU¯´‘‰Nr¢é2bbϳöy+z> n–º¨úäÛåUýŽîšºˆ¡_'M“· Ö+¾•Vr³|£â°XÙ®Wên*ûDQŽ0’3Ÿ·@Àê£Ùò øAƒŽT19šÒKù2¸Çãt®:¢ð#•B¾Á› ^¦…1âvîÖ9Ñ ,$ åâ [ù]ݨ˜-y$ÓŠqû…ŒÔÞ=­OZ?£‹1݉í3Ðë‘¶Ý~AÇãfB‡"ýý\n{¨Ù³‚TǬ&  m  ÝxÝßàà3×ç´W  Iƒøºíw'BjÝrÜÑMžZH;DìAv[è±Ï#ÇÃÏ«ÒKã½À³À{ÒÛê´ÃIæ\êöŸGbÀÓxyÞpå›úÍ[¡ðü&nÓ7øÆvsk@ë›¶gm/Û’ÛŠ+Û½[ÚáÍIÕãE˲$É=ñ·âšSöBß×Z÷¦q •9²Vâå†ôÒXh¢äT)/¯!1.îIÊ•¼ÐÒU°gÐÁŒКœ…ÓU Ë'2•q§“\³'*7´­ÀTc»;WtìkN‚Åæ¼Êh„f6”^­~Ô¶¶·¶ŸB}¿Öö­úN9·lMù·fÇ.EÕú¨ÿ‚Æ‚Qa{Ã!.ÁîÙí°}9/“×%/,:ÚœÑõ•<†Œ,»~‹-T¡,åÐ 3ÚÚ ‘g?ÁV(¬y¾#+†©Òôòê¤|ÛÄ%ñ¨Ø¹lô4ÿNiÂ|Ä6ÔÕBßj ²C‚ÙÆ^Ȱǧ£üÑU¸bâ‘¢^q‹-|s¿ µ¶e~w«BU—h¿¾j O™ª`*K4+´Vúq}˜¡»¬]§›¡QÊÍü‡CXzå&á"amó`ü„ôƒ«ðdœ®]óYõLr‡ÜD„P?HRô¿ wLPƒ»Þ×@Ö†*æÅO€ÁJàKBÙ^^ôà8]Á¾ÍØHOá°z9­Ò%£ˆóó& ÅÜŽX.iç/<—¸r«ÕaJ'Ù Þ„0VþI¡Ó>UOiE¯èw©fZ©§íã­±½‘Ûûî÷?ï¯ìËjO«I¯ÝÒìˆìë󢋿‰p¢.Òµ¾Sèœ##„³BôNµLãV‰Ã„ÎÆKæwþ.VKÎK¢µ÷5Ç@“dîg•ÔÉ;e3äPp­úr‰ÖÓ¸nxáð¤j‘0‘¼w»ïFß‚ž«¨oèÛ}wØó½™ã+ÞP"éÈA)ËMX”&u•ê‹r@¶‰ïß·—(˜‹í¥EʦÕµkA6ðXN”o…BþKA”b·.QÏUM‹„Ä4dkÝT•¾ ³‰þ€÷™?É9;”<4Í%Q"—3ȘDÞn|RSÕÈFFáˆÄe˜‡`› "°7_Œ;Ý•\s8ß*«4#1~Ú1ð]˜$<(8)8*hÙéÊ€?{ß>»½!ï=!÷Ür!5ûžK½z¼L¿áeEž ç 73€î÷Ñ›Q¹sËOø9?pYåÑèÕïÿ>¤*‘+/é¨û«!©n²îicR³ºE ·À[\áOáQ­Õð¹ÍÞM6uå8˜*ïyVWzvrIÌç(sêõF3ù4°Rá ¸„ý?Pc.9{KÌFG †çF{¥FÀÊJ÷åoË8©Ê]WVÝ]±:--æSÜ 4½êH×UÌ©fpqöM݅М­ÙoÓæ¤ÌMý ­¬Êí4ö}î{…^Õ )Í.ê*¾–· ºú =2޲<ä@„sôæð‘ÓÛëÃ'ŽúßYmÔ@©ûU¡Ý4Ò:±jòõ…ø‹çÏ-®}+<Óx¶+xI\q¥²¤»‡6­»iÞ­XÒtÌoMC–¾nvÁž‘ jÿ5|Ò–Š’×ô¤"NvÜèú‚ƒ²TR2ÓÏëÙØ÷¿”°s´½¢ß>£F(#Ð3€M†5¦t3ßòxx‘éæ…³ç­ŒÌ+FrÇ^Ž×ŽÎ±\7Úéïi´Ê3²-À7 VúJòP<,1ï³ú÷,D=íÕŠªo +}áU¯Þ6>~éÄÅCcQcÃQ†à‘à3—ÂõdL3¯ðUR³j†ÂE%“æ²âE³Šz…­j÷M.è&û-¯µUGÀhÐbOq ì“tnȘd¼®©’9JqK¡Ó?Ö_“`Î : ®ç"¹»Sä¿ ê.|Ç¿¨(@Ä mëºÛdhø‚¸Ý5€ºC|Çð|h9øxdaç<Ò!þRÙ. [wS3­Þ®ô–öÉ/…²jñ: Jù7è® ÕlQ7†\¹m¢LÙ•ò´NbP±F¨1tøéÈSó;Œdé°ë «ïè\Ò½­áOimÁ}A·VzXZ.þ-­³Qb2&À¼¤kÿ¿CnèCDÿ:ðKrJtGä(­ïÉþ’­².ãƒáEæùÆ?UÑP?¶½¹rc™m“[Ì d‹ a+x˜nqóu0íÔ(æÉñ¢“"79 ¿Ãù›²€JŽäTur‚ô“D$áâñäJU‘mª$cr`¬]´>jv䢨±°Ü g¿iŸ9>ç¼*¼¬¼x¿öªöáøìñùì­ðýá-ñb{ËšüVûíñíûíK{·tG…Ý)»;÷Ñ®]Ý6ú¤ëÓ²óûªëaõÞ ðÆ×Íò&f¬zg%»j°vqó‹Æ–2i6%÷rÁkèá\H6!­&áFT*ì2†ÃçHo‹îŠF™IýíÿV̇Ùä›ÓOF= GK(H%fÏþžÝ‘'…*r/¶fÏŠ‡žM?—ƒ­šX; Îå¡p¬ÎÈêèìwù ¼²‹rÌE¤Fª»7 –4m®©+·+R¦­Ð‡`cö'có":Ãá…¡ A3ƒªƒžo úq?Ý}@ãbÙ1™°;·çÂáK?.¹^ ·\çXc‡›.$$âjìIqÌ´<~¡îá¡Ü4p«çß®/-˜ö«ˆM(#kJC7nÕŽÉ72t•WÜÈþ³¢¼£‚x`« šÅ"Tÿs¬{ÿ41ƒ´ÜDΠLq»Ä·Œü¸Fd`[²Æn<6¯?·ôöÈ•÷Øð²Ñ¤ }S×Î'Ÿ·x˜)¦óæ«Æ=ÆÓwóLËLKÜp›a›Æ(‘\Ô0W±‚d™âSŠV}¼BOI Ý×$\Zqså¥Þsöã ã} -,¥±©‹0áÒEêÊ]Ì<kËx*ãÑ.þéb S±L 6eðÆz¹FöHÖ¥„+f¾<EéÔâsO†/ê.'­½’®jdœ‘¡“ä­ÌQŒ† œàù­{‘'(2]ïU‘I±FcÛ¢Wõ>GÇ÷xbÖ“¢¸¥œ9=¨5­Ð%¤iþ^¥IóƨN5¸É–Ëæþî¯Uº³Æõ&Gý;íÃðH>ƒq‘Ä ×JFTÇu±ú3#KÓp±gn›g™æÀ|î^QýaG–5®ªïô¢+©º¯Š¦¡ÿqîŠò§¿ûÝJm‘ÁË1lPŽ)Q7cþ¡ucÿ¦¦+ý&¥xèOþ°UáþEàkÍWó¨Ån´jäŠv°on]^ù¬ðLÕ†Þ[¬a¨ˆ¾+eúæUæë¦Õ&žÑlhÓÅbY3ó:¡ ç„s'OrùÒP.f±v-äá[ÕOK‹‹4…ûó~,µ/¨Í¸\åûäÔªà—S§3æûÏ=Ͱ÷_î¯ò;å?í»Ð7, Ö/Âg†ï3Ÿ ¯û_'oÙçÛn>‚rà:¿:•¸`!û€¨Ò¢Ã)-à‰mš·4¹ÖOT¤–üS¬,{Sõ¼rs¶*zyì§ÄÄ÷¤'±¼„ýñs¢4Ù‹[„x€[, 3¤›³I÷»”usKFò–æL¤cŸÄ@Ó|rá¹åï-Ž-ö†yÊÜó>Ì#ây¬Âëô=5Gp±²] 3Ú?–Ê_–‹Ï½–½,“s‚§£vàðØÝȤ§¦Þº}0ÌUÉŠô%™¦äà¨+Á‘§¨ÛCFBcC"ƒþ >ë_ïË  ʧڕÙÈŒs çg_j¾hç²ýûrªCõE©Ý ¬m@³8DŠQ%k÷‘ühúúßywClë¦`‹¡Io¥ÄñóðÕ妿ɓÖ]A[ Á”BóƒšÝЂ°u <ÍyçEy²( Ø ë|LQÕ§\¦“[‚&Ò-fc³9nœqþÆ…á©ç&,³,‡F!c_,/-¿,ß-ËÍáÄñø ÷‰ìËÀØwU‰bŒ“=×¹\X?ÖÍükð«œÑNI´2II”mž{4(M¸bZ¶cÂõîæÉ£†géƒt•ò¯üý­ ¸ªSv”ŸN³ܯH7îÑdK4Ì•dqÐoXc¾£ ½íªD¬ì<†nCý‹ìE `²ø:i6çgº!ª §ö'qŸŠ¯)rHÀM|(×Å?ŒÌ­1¢ «Œ3ÍOU³ds(ÎÄ…œK2wÍ7¡{Ø~Älê4m0Ì5CLå*ëF¾ë}ûîÆ¼Æ‘º›õ†Hnç×P¯àÞï‰ëÀHÅUE”v£q±ùŽi¯ÑÆ´^´nC{ÁØÂöb^ NPVwLt ©œ”·”ÞªÚ`óž±éqŒå1\,Pà¦Ú>•Í(õë*¥ì•å. R†‘ÝTlV¿Riwiž)+À i_Ï*'ýƒ‡ô“ûmÈpj®ÐFÙöJüÞî’OÊ×p§¦{®#UÈ'­Ûß#ûê©âC¢¿†Q£?E­>äJ‚†’¡aKƒqgþ9›üä´1âßá3Óí” Üñ’½ÛQïcšã뎗wvÔ:—Ÿ\çþÈߘñ¡,·l¤ZÝVZÛ_›S}ª*·"¦]²1%Óï™Û`¯‡>k¼fû\ ÷L3» ¬Kra]Èž9}¤SlÑP%!¹ãIÍò‚¯P}öó”Ç)ÜlHÑ"ØÒ’Ë5§—ÖzÕ²ª|²ŽE׆’"6Å.ÊýÐVL¹ þKRF74Ë2Uéýىٳ ìš/u™º°È’îg}™{ ªi[ÉòÜãУi·SR¢¯ÙŸíOü‘ZŸ4}*º-“¼8ñn‘õï<F 2Uÿ˜Ö:k¸5â%¿B|Ñþö´ ±l^˹^[B9¾ß2àÊ8’'ä‡=ßPòÞ¯ôCŠzãYà œ?[o+r«¶—¡Ø¬e ³ñ«.‘«#a)›i*² Íä°ð‚urWpxUµ\Ÿ¨Ù*;)Íï¯Þ)wh½tÞFÃ(nuaÙÅ9ÒÆ–·£Œã3'ZF÷Ž/5µ [Ÿëº\pËi ЇêÞh?kVöÍ5k9IƒVÜ¿äFíe]ª¡Ö´ÈP¨çk=¬`6ë!e=28q€BÍÁ¿ÇXúž°nél†wŒ¼0Û™F *[q ¹ÈJ²›¿™ë,ü)—êüM.ú2Õš±ïÖþk;öÝ ÕmV¾/eyñ†”{4XÍ:ÁJ?i9 5¸iÓ€qnGÆþ ú}ãz)?—Ûò ^„ØÓíÔMjlYØ]G^@};°=Ù„l8Ðø¡}Æ™àD?ˆêf?’ŽZöÏs~ Ôþ§½!ç±Ûûw“{jð‹§÷ѳ”¿s¨þ¡Ý§G꺅ýàG|(q?ICxÛ×Ô»¬çdsvsBgoo&E](+®)]Ô#úDý/}¢ùù>^¶@p‚'4 –qüÈW‡Ž‰L’Óbk ]3¥º¢9¨±ÒÆë7ÄŒn1Ök§TU`’øf>Áê€áÞ±‚õÚê-j”f³ ­\¨ˆ’çK dì ¿a5ˆ¢´Zúæø=“/0JY²jùOÐ^sÍäg6˜Zu—¥©|û0µË@/DT5\.WHƒgb²X©ßSý¡+2Â’$ë}b»£ßD•Ç싎õŒâ„μð1œ\é¸ßÉíX£]²ýFû_¶wlÃ'º¾sWx½Œ‡'«³6Á ¡0ÿrQùŠøÒUÅ/²¯žÎpzv$Ó~݉‡Çé.ŸÃÁœê¿¢ü¢Ï…‹K_—ÇV(ª÷ Ú°i„7ÄŸ8|2ÿr΢G…n0ûꆕ•ßË4s ]/PN-伺˜¬à¾`I ,eaîDåþnôàZ:¹¶øxZYš:{^n{þåÔªi>…µ^ÖWêH“ðÔ ïnÞÎŒe)6)%¹¥ˆÊE—~DG'¼JñÊÏ­4¶V÷vàvá¦Hi¢¥¡ùêXåC{]2ŸœÕY^—_ýOË4z-zNëòвšµMKcø¼DÞL¬¹í 2’ì¯î68èë@ùOrogIýuèŽÛ}ãƒí-Öƒ[G\BÙN=ÌÌd~¤S‡DCKXþ*e>xS(ÔPq/\3 ìÛÔM¦-ãV&Уv£ú‘#–a‹a4o¸õ·0Eº>Ç 5O‹Œ{Ô&Åfí/=Ù˜lÖª,ô7T#’)‘I·Ê'€¯jƒ~­-¾$ð4‰— gr®óCyå´Ç´L†BÉÝ9¶m$rD4²~ÔÁˆ_ Íü™W±YÜø+îilŒoAÆt b"~”®¹¡œ8+|Àp·b¢˜Þkã%óI:ü/Æ6ð®r¿$ýŠy‚û—¨NþT%@Ün²nz@ÝêZÐ:Ýö”ÐÍp$½ÄÞG~‚C:§ÿ¶=EþK€SgÒ’i|^xn8Îrllíè´ÉÝ`¥Cª¶òýh…ýFêÑA™Qÿ·N¯l¾KŠd6Z­î»ÖVk¦X¶RBWÙ‚—ÅÕLA‰¢(8Gb*náÀÕ!©ÌZ§Ò™•ÆÏÚDU¡v¯aµ‘£Y)›!A‰;EáÌ~J0»Je§Ú!“ÉÒÕ‹5uï5g~çÙW¿Q[£˜¯xJ•÷ä €w’ìŒA¢ï ´2%ßä{Ô«µ)šI¥@þCbäM1©´åäI:”õƒ÷BtYªObø‚™"oé|¹NÑlúÏ24\7za4I×,ŒRopÐzà3ˆÙݱ§½Ð³ºËˆ¬éü§ùGµ°üpEO%¢êIåʬÂUPx|ÚYtà¨Ï†“öŽOÚ_8:i§;²Ä6Ó.îè—«]«Ü£èÆêóÃ`ƒî…oò‰¹‡¡ÿ%¯M”gÚ!.s|9Y8 zg“´`;,¦Â¶¬»,½ÒT~«Ì¿)»÷ìÐCþ2ò¶.M©_ܳ¾Ðg]Bÿ®L> ÛX¹­ä@ᕬè”ÖÌ{ÙêâÑs+Ø8¯Éš@5¾\tNªºDØÛú®êìY¶]Šk:6»Ra‡‹ÿ;özâ‘tIáZ8[?ðŽ>D§±/‰ªÖ¦5ãZú)`óÀt š@Šä[h¯;6UÜ),Z]ÖPÜS€8ÔY¯¯¥uŠ˜ÞŠv-Y3ªsQ`pâ΄ÎXš@ø§ÌZM“ßôK‰ÖÄÆ^>eLÐÉð%>èßu¸·a¨›»Sw†Ó««v¯ÜÔ èW²Ìw‡©#· cF‚ÉÊàfZd"èÕšÚVmºæ˜&Yµ€K e¾jºaÚôK/×ôË­™”óT­Åšb'sž­oQ¿RÝ‘ž>‹ë¥ ŽŠÂ…xHhX>¦+¶ü1Òk^?j£¯R.ÇûÔµêJÝ íju³z±v»îŒî ú&X!ýÉcp0àZ}¾~‘ùÄH²åÿÿÿ —åCT GíxMÌ5V]Û]uWÅT@ iAº¥cz¦»»ïÔ½sïô"`w6»«kñú'<~Ï9ç¾ãy“¤˜Ì$ŽpÇKuRa0ó·NŒ• Ü(³[Jj,U=-iøKx}Óp] Q.vª¾²ixW«°+ƒæbÖ ì€Z‘É¡'è‡=WY6­µÉ²0öŸDKY'Øñ¶ú7ýPªÓhkÿ3³Œ¶þEÀËLûµf¼Ìµ‰áx¤T.“t ?qÒ¨÷ ²Ïô¯yŸUe™7!ÝcƒÑ™eЀÑnH‹õSÕ¿µpÒ §Zeà@w@,rÝZg_iƒdBI† ú-IiLÓ3[YÇÈe]'pç ï™yÐopÓõ×”Ëå‰S'J“è“ú_ (€¡¸'µÉHÊ)@¥n’> D(†2ý8h–FÈͬU0“:£+ŽðsÅ€¬!+˜ò?•!ªjÅ*e²‚¡)3–äšZU‚’¢¹¯ 1ŠÁë:P!¯âœ•n6§HìÖdÌRJ³ð¦êµøo^ý1=’Ãv)´ŸÀÊ 5aòÚ1ëiYÜJîêZâyÌävU×|Ö7À¹'kGÔvœ{ÄêÎØ½©ûù¤z:|pºß°ï³ Í ìÜÒóæÂqgß;u$.`¡ÿ¼€Ë¾nÞ?ööy¡ýÉÏJ|›®ÈyŸ—š•s#{(k[ÚÛxnª«ÒvSu@´—Qæ“•G*‘ÝÉ™”:?5õ¯Ò@ìMµT›*[Ït5]ËIŽsÅr£¹Qs#n…)£¦œùšˆËÏ«ý÷\pR8ä ‡òý:‰êǶ-=Ÿ/][‘ÉÒXiÅìâ”Üœ´¾„Šhzè­¯˜¿“?dJCQÿàÿáÕç•™R¬ì´æœÑîÿóÊ Ç|‘mH‰÷ݼRÔÿü]Ò š&`§f—~Œvf“j ^éö'‘VrHµG ÒghÚuÿ¨†‡ÚzÕ8iª°ð€=M›3tSd¸ge;þtèm\‹ÂÄå@»l©|–*BîP« 2ä/K2Ï úµ›µGú>ÕsÁ3Þ`³Éiͳ}FÎ[^šz”áCOü^ùÜp<¨z*ek?¶ (YDLת¦¸Ž4LaïÛ9¦qAë¯Ü< Z‚¥¾èȨë¬&_¬"Ü 7è=-/ {å75XëI»¿e¬Ò¨^Xý8`…ü¾hXyÌ8ÍâR;Ž!K!’ñ7e™i[¯ÊÞC·\û{>º¼\v»/|ÑŠÓòr<ævûXL£T_h6û˜ x³È¬A∙b>iÛeŸ`ýå£ T£ZiúlÈçÀMf‰³x›¥æ-P¡^ 4©M*H:[0MdOR(ÔÕÙÒãœìDq…ê¹v²A Á(hŠÛê=ªdÅåzùiI—F© Ö“tG 7À­H¼ðV_Uº îcy°í( òé’4£Û¦‘"ÅS„#]ŠúRTfkiçpg®–F'R¸Äõ]T ë÷ } h©ã©21´6Hëm»œqãð{oާËCî9Ëãw¯}‡{ü ^oþÁ‡­KCR¢7$ùe%¦c§„öÿL !¶ ðÊðìÞ+ó»íç˜]5ß”ÿ4¿¢ "ŸœsöeäÓ“¶Ôë•õ=%ÝÉ'c—žEç¿(¥#ô¤tˆÂjˆ¯e·øIDm2ûvܸĸ¡˜êäôθöجø©yëjSjä¹Å5ÅÝÌøPš\ïEñÓ8¦^ª¿|°oFû·­¶©ìŸ‚ìüŠÂ üÏ)?¢–Å•¤–å¿®ûIÉå*ôº0Ýu¤´GrGd™Ñ³òòL‡M¼œ(VÙÌ}Ð`Fÿß¶ª_Š¢ÕDÔT·.¥c™d"@îÞQœ5Å <ƒ—¤‡Ò‚ž_~î¿liK¹°Å,°Rmq&XŠ¢Û±U˜¯d}9Rd¾!zÖþª&¨¾ÒÜÞBi¬­UÁ¨©NBumÌÅ´ä£i¸âB)þâ'4çOª ô“ÓI£©åLP¤pv÷BýP 2Öø§QXÔ34 j”&Ú¸æ[f#‰;¸ÚM×AòöîNþ+Ñmc’õ¤«É¾Õ€ñæW¶A‡À‘aýÇì}u‹eB‹Å%|G'šªúO÷ vê<4#Êò¼ù;]½ê=?I² ´çY½à\ÇÌî§%HêÕ~†l½V+Ò%–%–tã£éå„õ„»äW”ç“P Uë0 œ_àoZ¼„ÁìÆÊ°œŽñy„·òçÿ é’À:Û=Âl7Ét¿wµ›€‰”y—ñüåýðiö<¤Ÿ£)RÄ•šUÒëà\×ìn£Ëåzb 5]Ó/‘nå=agÑ×v]êXÔ1–}$Ùþ¶ËeÛ8k¯õ¸mõµŸr-¶‰L×uEª‚áVM—ú£l–ø›Êjè54ýg’C£ÿ3ÎÞ©É]2¦h÷•EÐt¬Õ‚\É+±@ô«¢ èÔÀlõ Š tëíbÕZi„x.ïŸ-Ù(£¨¿êÜà`Ó%ÍKŽ‹ðrh©]ñ”Ñêú‰Òk4tWsãÔÑ֦΃íÊrMÁüRÙ›æh´­ÅNjfÃ<æÒ×Ö5aô.>•ôŽrŸv™±žù–ÓMj/…w¼óÉñZ¼÷¹×ô“#©c…A_­ ô?ævbMìpÒŸ‘™‹vGML´fnÈSí1ëŽ_ñÅx¿õÉ þ¡ŽÍJ¿¸äSÉ‚âÝE-ùÒVEœ>¾"xcHÊ©+‰+²”Y‘yÃ¥·/<*:·¾èbî­¤C9þ¨ÃÄ!ÚêI!%ùÏ3{bG¢\1;â’o¤]H¸#K|’õ.5(>19(³-/µl/þ µíé„û}ûT}KÍƗƦsù…‹‹±Ëj5B Ró,YgK!ÌKá^HaÜfXþ£‡¤Il÷¹|Ÿ e!ÿäÖY [d{Û'»¼§/£fÝЮ†O cÈ(Db/@j€Åâ$íkr[µŸYÓæYq#èChDù‚=æðžqÝë­î¦n}¡ê 'šéËãË–èz ù•‡+j*Ö·mÇyvܯT_´"K¬=ÈétøÚw[3L3A©þ¨¼ž5BŸÉÙ*•êƒáO–‹Ê¼™bùÇ:ÎÎ4/µ¬4‡< /•Y¢¿Ä¤Å‚Zöuc¡Œmةٯ™©!Êæ²Ky‰šFå!¶hEÜœ'ló/ß½=øTUD+ÜV}0Äkñ˽à€Óä¸d—YÇJðäjŽp9÷)vTÝšJAåîZ>ˆƒå¿ÈÒy£he„TšÞȲ²»ÕŠÙÚ90Ýšn›f?­§iÛ×eaüñŒª£CÔþ7­XU¢ÿã'{¾ÉÞˆ e'‘$…Áå›ÌÖO–zK2 µèÿx³ew•Âô\ÆYþ‡ù†#ÍÙ¢lÓoœ#.7çíî'oDhªÑMâà-’×b= ·¢8d2™ç˜ÍÆ“úqúsºzõKY”d‹x.¡üEú•„¦H™?Ø*Î|Ñ P©÷|Õê$ýq°Ç®ëPÄJ&ò‡‡è÷éëÙsŹV^)ÄÓ”Ä1$rš˜Šk!Ï.Wý!]Áx‹»×îÑ´¡¹¶mQýÒߊ—«êöt.À~íœÆôRjÞHïâf×~« A_Ç~!bçÄðÎ ÜDQ퉾A_yõ¬ß÷9 /,#¤6Ð÷ýØÆ„ˆù©»Šp•üº×ùÿKú5]Zx¸Èžó!ùd¼WÌÇcþc}Vú ɉ ½=­(£Ä«´¼SXU´;'#¥ð4*4.„ó%­¡PQ9«5¨ý}ý¢rÔùGEe¾>û.}ryyíº=çsFgË“ƒNï‹ó:#‰_›² ±6ú¯pRØúÈÚ¨q‰m¹ªü#çüš—qIðœÞõW˜×û®¾ò²ÏÃüŽmiyU³ª&³îi}L úÂöÌ7é3ËÔu4|·r¢ ø…Š·Ìc¤`J/X‹ÓKÆQvÐ ]®Í£§¡w ç`÷8ð99Ek¹-]þT÷*óJ¤-FCÿšïZ—›¥`3¢áY¦ò؆¨èi$¹j§õ±³ÂEwj«ø‡úºz•ö¶ƒ¨ÚÞ.*aW<#™•e†ajemrõP3ªèXA©º³¦’ozÐÅoãWGÉO'‹îà·ù”Ï.n¨#êYkèìYü…ò†É¦ cÎÏÍ-Ðzð¦+ˆ·õ¡uº+¨‡ÑûÞõÈD×?Røñ°Lc)ï¨úP Þƒa±éýO«úÝÔcJ†ÆTº-7d?t ˜¡†1&Ť©ü[â“HU¥×hæ(*³t8í_ßõkû]‹l‹¯üvå‹Kª£â}2õ¯ä z8›¤ãŒÕ† m:ŸMÉÞ9)”˜ðJÁ¹†ÒçÕÚG&Š»x0›ÏÈqÆqòXV찪ɸÃâ×Óm51¥3™sy •By‡ù;NÔIJçUÉŽ`…x!k»ô;ð]²™ýV|U`¨3.2•B»À:«i³¾ ¢X2lµ¦©ê e„ô;¶ºžw±Îz×âK /™íÝ6¡Yff„GÇsÇóö“—à $*‡gˆ2[+Ôk°éÓÌT&+¿*öË—‹nÒ×S'“¥¸g];'( òwþ=`‡±^ߨ9.J—(Ï)›åëe…’‡”Øù¸º®•„óTˆóoæ`¨o‰2DŽ¡5’›‰÷áO =$¼ÀžÂñé AwÔÏ­µ\œUîW{©áÏÿjTëß”eÊãIU•Ó±¾ ®¼Û`"lå|—Ž9šjÕ(…¯â$ó=¶ÿܬ˜Ç÷ï¾GéáîÅ8 ? ‡^<ptBHJjlQOM_Ë e’.1;[R_öK/éVü`D@àô3½VÙÚ–ï×–ÕñµþsÉçìÒܪ¢ÁB}ÞøLY<&¾ÿ4;9¾tZW¢Dľ†{^Ó_0#§>y]ò¨L{Þú’=¥)¹Åå¹5ÙÓ^Dê#ˆ‘â^ŸåœZýK,5±:­={QEUÙJF¹_Ë&>ž×}¬ÿÓ@öÀŠ>aw‘˦cm± —.>+ÓTÕ$bk¥Û T¾ÓqtxÃ<^Y¿ÏTr}Uîà#õ~öê8`t7º7¢ï¿¾çý-Ö¦–‘Çóå»ãoLé®vÛó­_M»ìr/íߺÓ wU-G_$Œ(÷#.Ë[Û\d‰:L¶5—9 t;ˆrZ—úSÇ~5xåíÕ«o̩Ɨ¸IŒu´I4yŸ… ÅÕt~ÓÇBsüì×m7Y¨~ؽä‰ 쀞ý¬£f¡þ¸! òÑІ©@Ùu©a1üÞJvŽwe;ÿsFÚßÂå&‹!TM„3¿6Pz¸•Š» „'@ßÁµÆàð®úo û’l¦å”ã%rÝT,?BóÆ_$á­œã«úŒŸMÝÐ(c ´Ô¨Ã{õƒFËõŸ}”ªílagÑ„Lµ!ŠVXÓDÙhà7õ}a03†j§ïgL'?!_åÐ Zþ«˜YæÑ¼€¤ã™õ^òßd~šßõ·´Q¢xækÚN§Ì|0Ì3ËžÐ=M=žªÒà(x+0—õ+½—×ÌIó‘ Kˆ„ÆàSc­n§ÆWQ®iQ~‘ªÄ¹ò=`¯å¹ý‰sOwŸã¬Ù±A™¦ñˆÀàúâ‚],畞{®v—9º¤‹´ä‹ÌLá=ÅGµŸú‹h|‰‘äÂYаá'ß³deµb—,—îìjÇß&M&âMí¬¶ñmTfÈ‚têã$(§¨ÖC> V‰óÉÛZ÷7?n~Ô¶µ Oòczp쩜Aö>îAþ4>‡Û"-дhêä èc2ñVëæª°ªhÔW¾A:ÜRÚßâõ¡-Ÿ–|¡zµÿ¯v2 W 5?'¶‹íúëÐcCªö7`“ú½Ø)Nÿûãà¡€'~TŸ7ÞàA(03Ä¢ŽIâd“ŠÆU½¿ø:·/ù|†éØJjaæfä‡ãÉG·úOòsbyy+öoñ ÍZs’ꟺ8safSzRò¢Ì/OÒwðpu€L¿•çÙÄɈ;=7F~8[VQò*+0Íš4/ÍZ—|Æ÷d_èùåÙ )C™™#©Ç2eÅN”'ÖR;úB êl%k‘n oùaiw6/®Ð^šŸ›²=jàëÈàqkÌÞè5QßÎ×Ýô ù]ü÷Òä´ã?¥„·è¤5]Л;º`Gg rŽÎ!ÈBÅ•‡~ ý‘ù xVÞóTlZf*>ÝPx¸lmnbì§Ó¢„̳‹RÿÉÌÍÚznÜ׌i]!v>¬¹NÉøP€ò ïЕ f<0Aºµ„ab~¦Ì":ÉÇØó Wzü.ß¾|³¯¡oó³±ÎqÞë]{ùÈ¥¼Œë_ëj$a6¼Â±òRhï¯==O»?X”ª@µaZ‚ÙLzOuQ?0äQ¬]‚pò¢†¤sÓÊ—6Þ$•ìÓŠÁãp§­Íú*ú)O«dåꨟU£Nóš_'šl¼pm_Á¹ôúf¿Êùø:¾MŒþVYˆÚ€Ÿ!H‚7(nãZJÚ.w0‹ÅS4‘ñ›cý™í‚=ÌÑq!öŸÇ˜„à&ý)ýãï¦ß­‘®'ÍòÚ4RÁ‘mfØô/ˆ&°ºˆÛ˜:J‡ú-Z ¼ø #i]Ëdž;<¸“ IŽIÎh”™HŽ Õ ß¨h_¨ØÀ8PÑsû®´ÏËÁw¼¶ àpý"Õ=éUq‡ØMªäæÈŽds(¸B€/bGPs ĵ¤‹-ÿž?ÜÐÃ,VåÐDÕ“kÈ/M/›ÞzÕºÊÞîJwµHù›éhód›4³»s؇H¿´  ×bÎÐóå9Rˆ=…ÖÄMVi¤ÍÒ ]»e´ÝÝØ:6»ý‚ÝMç/m¥ü踇IèzLü®xd‰rñ\zû[ Å©t<µO‚'údOw`ÑvÉrÑz©Ñf2œhéÅØÆ™´ÝšÛð»·MûªIòûÐr$ôÔßÓõ“ÉÊ,ánüÓ¦Ö6?Âê1J:!´ó<é.;LuÆrÛUàÊ֟⻓h$™ ƒÈ †>`Ž Ž2‹0ïêòÁÙ¨7;Ån’R±]òR¶J“køU ¸¯ña·R¶ÓgbÃêˆÕZr:­@ý„–N)îz{@ÇI9r›-F›nµÞ,Ÿ^8îB$j-¡Š”ÅùÈøÖ4ùü‡\UrÔ™®„ð”ŒlWæ–øAbß}~SÂÚc/$ýÈN/ì, ¨ánE®"^ñöbRþ¬´71ͧ†ck’¿¦­JIߨ¥•³W3à Ûÿ¨Ëû#ý㙢Ðè -Aƒ„Òr X¼´Rög+ÆE~;Q íK›”4;1:=)ezֻ¶RŸ¢Ð´$8Y”ü)‘ïû"ípµ©ýÖëÞÜp!&soÂÙ´Ô‹@çDúQ^°ÄMV'îc³XkX£ië({¸³ îŽÏ=ü¾} {¦9жû¶OÎå—†ú1 $^vºJlo¬ùöí–—&#ˆƒ}î_û8ü`ÚåƒÎ'ºTévÞfe˜<‘þ„œˆ¹„)'6àN·Ýn^ÑJÀ6’½x|e¶¶î·Ä"X‹ý¦½»¯ýqÎ÷ü;Tr£š2Š—ˆAŠÅßší¨µù±øµQèã´Ö.Ü«Z¯‹cÊË„”›´´ÖɵûZ0Q»xžŠ†qæd®i6<ÇÌ·~±L¶¸[÷X¦ÚO˜ñð Hî㜽vW…µÀ¸ Y`ÙjNDî€[DDj-µƒ?¤Yox d‹Æ vK¦«Hè-]çÚ…ø*z»à²ò¬ÍÑ0 èñ?æ€ð;k)ã™ô_'þÚËþ…½zÍ*2Y4‘RÎ\¶g!%+ƒå-> N6°»h úz¢ÙN:Œq«ÀŽ)›Ú¶šHëœQ?»U&µ·Í¶ÍÝæ¯æ0x œ­´p %T¥Œ•Mñ§Ì$ Z­¨§]¾¬ÍrÛ“ÒÒ5« KÙDÍbMWjÔÁš[Šù:‡a XoÜއÔïDÆ  K‰k¤Ö&g­ó_ËN3h¾€\†¦B Â>Â3†Y‹²ÞµÌ‚‡t8½ÔÁC2N†ZP±©y5¿Yg¶ZÍ£¡!õ%Ž„_chB4 F»Q¿[GÑAb/öM;Üé üÿÿ –õ[Fí@ݘ³•Ù±)¶ „ˆÒ \òÒ¸ÝÝÝÝÝE#˜CÄŽÙ-îåÛ?ðþò>Ï9';‚w’äsÅxÁþÃ?©‘Ð\þ¨Jbí¼°lémyØämÀûKmÝ"µûùn>c¡"‡È§)¾+§¨ÓÞÓ¾ŒçZ90æ´ÿQ£r«çTtÔŒÀO§nÆ\‚’±ƒXÆ |ã›rŸ¸—YGcò+D ,CrLÊό޼Ýù³3RõùJ×—EG©] ™Sý(oÞå?.§¤ï‹ÇœIIò].ËlÏù-.xX6³¦­âpi]qàï«Gsc2]Y•¡Ë¹”u>KÿÀ’pêYcŸ(0|nm\ÌYÜ™—'ÆÈÿÚ‘6Íœ‘QÅ;ãúOqNLøžœ»#icVˆÍˆ'mªð^…d^Ëüšõ(5;w¦%ùï’Oð›xø$P“¿0“šóÀ¯Í%ý ` äîì†D#ÄaÉdÙX‰TdV¿qñÃC›Ñm‡Ú´d…uá#Í^{ÖYr#þÆŠ[™·Æ^KoR4nm:Xå4ØÏ‡#^üþ9ÿþŽ›O:f6¯ôo³r„gXNŽU f ѣ뵵Uð^‚”f¡m >æ’5Ì¿œþ¿‚@WVû–çöÀ5Ò¸Ò÷9ˆÒü:?f/ùão‰ç4†(MŠÕÜßñWÐÛyG¤‡¹Sñ1Õ%E™Àãõ_ Y˜7”eŒdÎ_ÜÂ_ò†Nk³ë•»É»50ïþ慮ǜÅì§’¡ÎÔPLËÖË¡Dëï‚õ7ÎéÁ±O¸&QºM¾U9KƒU¥™4(& †FCS¿ƒå¥Æ¢@O©cE¾`º¨‡y³‹?ɪá¦.C§d4c ù9"à;1îOû±Sgmi”‚YàDìOøæú—ˆxÊT†’G~«}^:9˜‚MǨ%¥eðR&°ª¢TRý¥øtq{ñÝb+ð·r\Q%€SYÒž½;'¤Ÿ\̶q¥ò'R&ÄwéôøÝ—iªô+ù»!w™3Åÿâ"¯>‹?z~è¹[qÑç9gzN;S–b6r˜ôw O©S²dг‡&§éãMqRrklðõ¥×³ÂÊ«‡Ëºëúi˜!˜ ¨ï8&=—w]š®ˆUÎÐk¯(r5s/|_CõMoÏ„F„Æ6f¶÷uª®ÿsmzÇÚ¼ë·ÛåMÏïCÜ –»êB•ìú¬7Óº—\#µµëš»=AåîEaXd¤÷¢æTÏ6V-Áê™#¹W8ÕüNÉc”Ãç¾í«vGyo4/ÒÿŽü«´-³ #\ôwÝvLˆ˜LâÑ_ñ‹„ê6Ü\">“·VûظMö] ÷U^¬@: W™'d]úå±I–œ—²õ–޵¾×¾uÞ?|•ÞÞÒ–ˆÖô–Íô@êévõû}t?ÙkðM Ì]¢Ãiá=!Ž·ÁµË†±uz4ƒµ)ºÇêu†ÙŽJÇ;Õ1A7ïƒà‹¨‹w€›Ï9ÃXIÖÿb‚¸/¹µ\'=žl`ÏÒì6ïs­óõuúÃÉ…®ñ–Íú~µ[qIõ7ƒÙÏ”ÑyHTýh&±”;’K™+¶SO@6ÕôÕ쫤v3nê3ÃÇ›¶µ­j=ÑT؈ñt£Ôm´Æº8G8)XÕ<ªa¦÷¬®›yˆv\‰»‡ê‡>D2ÉQì)ì[ªzÚßJ EY·ðýL§‰¯V ’wÉ£”2„®Ûžìûh ªêû,·5ŸŒÑ†(ÕIÝý[É9Æ=ê ñ}Ã+ƒN«ô 1š§Ž¶Ó'9CH(?L®3aÖ x–²`Vã†æùÍóšj·ðžIŽ…&«|´ ZŠE‹å3E_…YÂõ¢™2º¦PªàOâr¸etí þplR‚Ma•«O†þh¾h¡²ÿ!Þ%&Ò>sŠ^ D'$#eóÔÛ  Ê f+å1î3dnÉÖâùeYeêÒËe†Z?ò(zj;„<Éhb¿£Íck4ïìßÌ]ºÑªtu¿;)7é‚û쪸Ò+¹y‹*´¨ÝŒ¬‹4.u¶p¢1KÓ%(¦´Nöé=ï¬àý È?ÍyÐaÊÐ~Ò‰T3DéòB^±Õ$ëx£e§Í‹ áôœº»„,Üq ô a›ýs8¥ùiãˆæ/M >µ hš!rþB½cv[³W[”­ËÃZS†hã!á) MÞD’WiÄ…Ž4áZŽ´v…#*M‘¦ù¤a‡˜çš^›D&¯³ÁûÜ7^E<â¯mT I^ ÷‹&+íüé´—d ¯Øej”½eS˜Û…rC„X¨Í9…3·6£\_6¤&—Èë0\®ßº¯ºmkö¶5Ƚ)–½úê(M’¶^;BÏÑÖÉcEe‚&ÁveHle(yä³´ô¿‰+à×ê‡Âþ‡zJ_¬?àwúGZ¯)Rèõ¸ù¤Q’GZ¤œ+î#„³eÓÔ%ÆDs·v¶¢‚s‘x¸úC¡£  øCYiõ±ê®ê¥59Gʧ”‰«Žr@¼.Áíߦߌç´ù¶×°¸æl ¢ ªWúxTŒÉ¡âj¹ÎNá~­Y#¼§ea¾CàØAäÒì#ÈDD5–‹b°O07‰D)EG½M þ­hν ˜RÓV'€%ÃãK—¦œNX“¶8çU3Vx·8¦r.|(8àË\—̾êâ¥Øq—þÈ[?‡bĉ‹œñμ8ÿ$#©`0«ÎϬ;ˆ,ü­œ•u!&qWŽ´ärÝxÔadZýÛ¢ÖlG±µ6V‚Oã&jjõjÕdy¿g™c«¶Ÿ³7ÕËêUä«p ¡ô§À-ÒËr [œ6ÇCý9Þê$pð\á1À²ò# ç•KËo—dFæHkÏŠ®xMß)ïQîÓ²tÜÓ.¶ÿáï²O`ŸEͬ-¨ÚQ=tt§ÒXù¦–Ž˜ ¹SI¯Z†€àâbâ0g k) (Ç(í¤-D ŽA8BW±`d%a«B*LeÐ7°æÑ~¡ŸB< oe–šã¨õDµ¼ìeå²Î‚—9{s›ò# )%U€¥ù%%SK®ÎÇ@£qøÅ|ÄEzÒÈ ˜[´#7ö8>9%>{IáæÊãðguƒ+®Û õ)’³¡´‚«_òOT¹À½µq€˜t}ò½ _Ò>æ-¬ì!uHK YÚ;²Ñâ‘’±ÒgÂü6^šÁØÈïÜtmmKNsjÃîCSè[à‚[i5Xÿ´­³>² ·†FoQxê5~Ǹ‘o˜ã±î¥4‚u‰Ø‚ÙP;¡r\íâNÖWú3ÚZ.ó {—Í5ðr_s–ðϳ¡˜ŒÒ_€Ÿ`î |x‰ ¯¸r?º "é©éy%kLCÝ3]Æjá/J'âUíªšØÚïð(L?êò.©ŽE,ü©­|¬îÓ¾6œ·B¬ýúÉæÇ>bhOãÈáØ –hëbÛ)ÛM×·×ùÉçÞäùݾҜ®ëW÷êpº_â“Ì ºõ‘õX8P­3ÿ°Î°§Øç)§“z1™‹…[xmµ<[‚”`äC &{¦{¿®Œ ð)õëªjBœãõ]åÝÅ "afÌExÒàô8‡¥èQ^6ÒÍ›•D·E ²uìgˆÑF@OIèR-¨L\ð0ouÁ§œù— ÏREW_•÷Ô‹àŸÐY¤ßÈ“ˆ6RÍÈ8@O9GÞ‰ŽÅuŽY7¯à•’zq±ó±û±QÝ\èürf6]OJ¡g2÷b£*[JΔ¿-OŽb—¦’¼W9K¥¥0ëP¸lZ|£„ª¤Ö¸úóî+q¹»svä6ÕW{`"SÁŒšÔJ0`oÞçrl•º¤¤àE!8orò°óõqåç²SÎM°_Ä‚ùÆÓ:=UÅV” Ä‹„…ÂV½×ÙLl“voM eùÆz.Ø©²¹ÜT)Üâ°f©¯¨ÎÚæø³Ã¶VdKRóü²6™ÉÛÄ'‰³™“ý™”A’ Š«l%á2NM¾IÝ@m#鉳I÷)J^¡¢“t¬– …@™õ[ »/C . FÑÞ²c8Ý\­„b*ôçòl [âÄŸͯšW™YÓ¢”(#b=tø5¬O§=a˜¸aY“*¬׊NªGû7Ü>…mm¶ËåÚáŽó”º7»n¸ï¸°€û¸£ÝÒ«Z)Mþ&º§Z¤/ΰb ©2ÁfÑzéÿÄ…_9·ØPîõ9£Öïøâ:baIh¼‰ÂüœmTþ1d½çkómõ¶MûþIv‰Ï¸üa¾¤ÓÙ–{¯Øý‚u,m 7 ¾å‰´ÇÈo±Þ’ëu<ÿrç¿*u?DŠÇsƒÒ.6ŸYÈ~Å{*>ï¯ ëïzþg(•ìã!Uã÷7OÐ6Y=IÄ1,µ&ñoS°h™5ÝÏ÷}rop²¸Ôå¤íCàfcaó¸Ð(ïsç~Ç}ÛÛZm$H¸„ÏY.ðq÷²£hÄ4Ê*ÚEì$ÝGlåt*a^j Û½Ë²Ç¶ÌŽ6„ùý+ò#ì²w’Ñ-Ç·5·nØèuê—l;Ô-LKíæGpµ¼;šTå3î Ú N‡’¦ )›¤KF‰>±÷‡Â‡ÔÑTâvÑóT;Ïžc;`þÅ`“ß³ œ ü,Ù,¥SÑ$Û k˜`›úßwy[ˆCáca­ˆœ‚±šù7n$·,ªô{ÞØ+u— r£ª ±^¦„ º#zI­ÅV⻨Ó(zèD>¥xf%¦|~Éʼ`öÑ,pÚ½„}ñUé®­ÀwÀÑÀÕXè| –†dëYfƯÿت¦,§˜®ö²gà®!ÞAúá±gððÛÐ?°ëXƒä ÍgóÝgê«Ú-eѨªû•+T†+Ä%û ÂÀÑØõô$æLn™8K~þÔ™ÆËb&žŒMXÚX‚.Œ-¹ZF©ÚT_Q_Sõ¹63„f)¤WS™®ú8À‹æ‹û¯\Ì„”œ†˜ð½´|޶Ý|ß:Õ6öëé°ê7ʆÖÖÖ%nž?"pÅ·ÆÓíj1ÌTüCò9AšÊÿ÷‰*Ó†Úô =&¢(…K Ý'^3Æ{‰Râø&éÿwÍÎ-Ìl˜ñ7ç@ç#/ÂܨRòÞ Á}–> Uú09âÜèØØ’1Œ\ Á~WË•}לsཀྵ¶³©¢–—X¯*:T!©aÕ †9ðfÜLÌm¬‰ðcN‡žFµâÓé9¬ª·…¤ïôCƒ]η†EÆ%nYÀpþ ÂCÜOMöK´â>ÏÅOÂD+uµ‹x9ôÓÿmÍ%~æÎOUvj¶È#…QÂ:Ùã÷AO¯û¤{¼.G0Š " ž¥û)fæhÁf3ĽÝ3È“ä:éðÚì6¨c›khC¿u©1Á30ü(üY+’6PªÅÌk-E&ŽÌDš¶‰Ðävpb½š²‰ÊåÕ›t;e%|éå[«o­“WEâ¢w`3ÚdÃPùrØZq°ô}ŽíÒŒa¹"0ôoâcÎÎBªS€Ü‡éÁ?Gß©ÿ\3 æQÍ5_«@UÛʆæ}½¼6¡ìÒÈ@áÆÚòl²©¦¸¨.ïm¸T ·b &‚²s’7pû97éY¤­¸R„ÖäáÄÕä•”mÔŸl¸a†;Å;Yô­ªµU=Ý…nó«–Ž¹Ú”]+ m'Å”Bfäêc±¯O¥s[ÏÏÅæ?-XPz°l pRù²škEƒJ?"¿1öÈ?+9†×æ!¬ØÚºâôÌWžgÜÉË+¸[> "5Ð>p¦+tÖrï}oŒ'ìl7«ÔKT3 GÔkøPîÕ뮵n”k¾]l@·2Ùœ‚ L ac‰(¬ýÓQáØlÌ–,§›ðÝÈ/¤Ñ\Î ò°úÊlÐ ;Y%ö×>‡¤ Á€õ“!Ûk××Äf1ý×$è«éW‘࢑—ÆzÓ÷!ƒòb§ÕYeù`Øošìm ’½Óô!ö HWQnA?0®Z³IÂV#Ú0è5ô¯˜WÈXt5n;ÑM?Ç×ãÃŒS¡¾Æ!¾HÍÕë.÷N÷e_\poHâ[ãÛáh×çJ^°ŒÞtÑm~'[8\þ·hŠ`g½ƒãìíU÷(cåÓd¹j ö¢iŽ;è:à.6}RÆ3»Q³að ÂMæ6ùDÝsgq /8ÁÛp9TkA˜nZ ï¬ÿh´sœ;l6c‹ü.{96óAä^RRÕ±JIH†B¸P`aB¯«û†»[3à?£Ë8Q„ùD.µOý¯s_íä8©¿)™"*cˆ:$V•I“$OPβìs¶fI\‚EÜŠÙŠgOÖ8·©¬aQCbãц[A´›d*!$s¯àÞ×|«fÀÛIɃO ³U\ÅöbYí{P”€Äéâdq\¼'œ=Ìç‚&C¶[éœÉ¥Qβ’HƒÈê7ìNØWD9]+á(ãäý‚߸Rz)6½þL•©<ÝÍͳO÷Ôz'ùÖxéJj.!–2–‡U¾—r°ì }!Û£ ûvÙD, .·€Shby– ´Si5¹Uï€ñù ‡åÉ®ˆÊ‘ÃÉk‰9Ø¿ÐQ‰ØDÌMÄ!pZ½–‹}Žû… ÁzJáÏ’¿ v—½ÄFˆŒ<7H(A¬–çy*_!6á¦ÇâÄè jÎHAˆÀo"Þ$$ât˜‡x>ÙEî%'щxÁ(÷`ç ¾‡øe³ $H_õò“…y™ï37”öafSõ„c¨S5Ó+öœ º“ܳ«;«VUM¨\V¿"«ˆ.”=(&–C1?Yþ™v´î³¯~X±*÷bÎ8€- ŸSvò'ù1é>n.ã7Ãß‘à|ÿUÞöT÷B[ª_«|ÇÞMëÖ[N¡gs`Œ÷Ì|@œÉ)¡œE[á2ê6‰]ýÞà2ùtk–fcýèªJ9£Ÿb® ]FÖ`-¬}ü^r lzÅ˪–ò‘•dPt],|1AD6Ò¾°O‰ï dz~‚C€YûñðŽßöݽ0Äs½µ´¹GxstcY›=EâìGiK²/•<ި߻S™_u„âj"ж“ƒá´pîÑÎÓS9 ¾}˜Ö­Ú*Ý>ýVcƒ“ê;}–\ÓPE™ Ÿ•ÆÜÅXˉä™íôYLo†x›l‰Ê{E飄ècx»ä¹@å3Û¬If¤ù¹YâˆÑ¥Rê#Ô}ØWð?ÈHÕ6Ö òð‚Z™ûMÈJ7b4‹ C4t™K|K…4õkJr¸3HK‘O¡«‰O9áqÍ)>›„Å«9OG «¥Qôœ´QuÏóØþA$ã¤mªåŽ­áó!’÷º«Éáø 7 &ˆn«Ë aE¦â‹¥Ì»Ä3Y `ÆÓ^ÉxÞúJÃÏ›ì-+šHqMË›î{{Õ«x­œ3ü>"¨*§¶“4QöÆqÖ{ÂúA2\Óâxßɹˆ1ðJô,ÊiiŠ:Š·œ"­$ïÀuyî7P›,©—JL?|÷¯‚¹ŽºBùË÷á@t¸¥qZ[´ƒÁý _W Ëb¦h“ÀñsR3ÃkÐàvh-uŒâ«Én$:Æ;ϺMìƒÝ®ù³†näÜ6¬sÒísÑ6¶ê>ã-ùõ¸¨F™Èü wKF­Á.â]¶¦º­v2ï'ö2æe?Vif"D€m5 ØÿàË@55ýÕ³ª‡‹j· ³0Ð…èCXº>v œ­À¯eL`«þs– |0.O]üOY}…ÒAÛÍ™Hí&Zˆpuç+¢ÀO( ÝwÀà9h-V‹„G¨&>&"&!Èy”çDþá ­ñš~xÞ‚W«ü?ÿÿ —…[‡Î)æìŽéÄDgSÇg‹¨XˆŠSº9àŠkร®»»»;9BÅžSç,t³¾ý ¿çyßçý•ßÂÒjÒª{ ɹñ‚—`?!‡v«mGÓÎ6(n}Qû¡¥'6AÿiþF)çm’[Xok7BTp)ÿžEpft·ÆË#oÿpúêÿ/† ©Y\ó¾ óºÎÜ\ÈDó²˜×—e‹g£»Bgºå¹~µ ï€;öjC±’ƒ¶~?TåE‡2SdØY¤ÉXv==I÷Ýíp“61ÐônºMB—ñ„þ]Ÿû\:ϺظXH%ïi5b—¢.¡§4YÉQÆgòÇÖ" šw_·Þ“œ¢hà›ª~š1Y–&Ó¾5ôÅÿÒyÖ¡±x;Z†üZt¸daþó<: ¼¹ñ°ª 8z«jc1®xlÍ›f*ÉÙþˆô B›%8à}cu¶„Á>•ƒmýÕzÚIµk U¥-^'"¨A‹-¼DæjÚÿè‰ÜNi¶ê–úˆ"C¸“3‡šJ§pJ™Š/Ê ºÛ9Ã*Íã~‹Ã†SüÀÀ¶/%¿¤\¢ã¤Í¾Õ“e@èšäxÞzÓÅÖEæ<ÅfÁU«1®Ôì–ŽcŸ$Uã~ÄŽf|•.·uö¨g 0–p›#¤¿Iêùþ#ÑQ+9lˆiÜiú.íe=#”ÜÝÛÙ-ŠË;E^ƒ~|± ¤?nʶßv>¶vêC,5q ›«ù5|,ŽéÆwßé²tx:\]Ug£|=VôJî1¬Uc•m‰ž„¸56×÷Î)rVhç0jZç‘&Ò›ä5·Å ŽqŒ…ÏQ “Ü=_]DÇ ·&Êè²u5u bi‘¹Qr ŸGE¿†ö~QOSµÒH‡NCÑÚ'¤ ½—D±«RlLåXq\¸C|Pz‹Jo˜Öp‘¦]ÖÕÚq.­³ÀuÅØÎßÏÏGȑꂷÄAøvì¦&"+S=CËÿAÚ‹'a“p3às°0t PSÍ©5Ô%5Ün‚ãµum(A}oóòö¤Ê3Z”ù‚ºÿª¶·HµqÜW,'=µiì3äÒnFÚá«Ð† ¾¡íOúÎKš¨¡3ýµ²¾_Œ·b`Èhݬ%ÑOÖôÔë¬ìwì©Â1 à ;´´ñRírôxäv²øÏüKÅó+SLààò¡¹Ò¬ãeyXX[3ˆôÊ¥Sñ°¼C‡l'kÀû›7óoh­¶:ý®f Øû£v qžh„»úì× w½[iÇÐ.Ðuà Ø>¶¡R ÉÖþ%JÄ}¢_%Úµîs!wž^ š,Ú¡‚Z–¹ï»¯8f;þôPƒ³# øwñO‘lqŽx ùKÝ’æë’4Ç2ßšPbø¢ßlHç/6éÔ«y«i3 5„…ÒE¾/±ÞÞuÖÂÐ.d ‡%#h¤×"‰a¿ò,Â~Â<,Ž¿—ô‘žÖ^¥7¡ýmìJÉ}Ÿ7¸Ù_çš!]NL©A•y `E¯*M.§Qeðüš’rÀ€¼­Y7s~ ‡À¦"ŸÖ¬„L«£à¿˜~=ŽÝÍó³Œqmž¶_ý¯f†f‰!ËSø ?¹í'ä vOû{r©˜§x§÷ª?Ë Å kï°à(.0òûø`q…8&˜.‰(¿3NT<ã¾£Mã»…M²×ÒTåóQïGÝŒ×L7ôØ~vm1“Fº–»Y0Bõ^£R¥dÎKÒˆØDv…$Ýîò<Ò_SÌdYVþkî=ÚÖ|ÙQ Û“eG'û–X?Ú^çu ‰gÆ »–ŸAƇ9ŒŠ•Ò¡êo:œáªv‹ÌÀYJ ’ ä£\›žé?5Æûâ¾ø†x ¾*ö]èÿƒé”ø…æžu¸‘(êãW‰ÿôîŠ)Ã3óße/KÒloúLÌ&O¥½ãø%ãT­’ Â\á51TÖ©Ûáöú±îFÇÂàþŽ«ñx|Uצ¸?êî˜ÑëºÐÙù¤' ÑvTø úæÙÄi„íMWá¥Ø‡ÌÙXñL^‡.l—qŸkÝð£mÉœ‹ÂGŠUŸ»Ógwsô颟Äs…ò.ŸßÖ6²aJà¶7|ª¶B€o{\ÀÔ îÁÂÆ"ÖÂ’€{Ë5Õ|èø”zz3šÕ²…€ßÅ GH/(Éô]¼3òvþ×¶ÛØ}­w@Ç£r“a~ÐS葚oÐ}5ÃÀ( ú µ—BÝÁÙM¹Û° µ…­=Þp±öÄ ¸ZWÙBj3“\4+ó.ÍÈã½Swh<™ŠË€Þ©ZW.)iÉOÉ\–È\¨Ug{Žî>~©ü0î;S4Q™@4å*ް3¶»š§¨ÝF‡³þæ‡ÿÔµAn‚0Fæ{KïF`‹cóâ gÁù(f£ž7ÁZìl1¼‘M—*$+d&-ÝδÏÐÝ%ðHkuÃìë}IþÎ/ž¾ð¯QmÔs„‹,S„p†?»ù±Xd›æExÏys‚«|CÔë…—¥ëõü:ÒõÆ,òwŠK=_{~ê\öús|µÊT¼»”ÚŠO§_S¿5Y%ƒo(­‚LYXðwûJ 4ªrp&rÅd¨=Ïñ)4ü”öIÈ €Ê²se³+öTå¿V<ËqkÈ_P5ð²à@¯pVÕÈà•#Ë •ðvˊТhOêøEu^Ò%…IÞHJ•O I¢tªæ©Ê 0=+•¯¹¢ñ:‹5ÓyÜÌÔä¿ËJJôò&éþQÎVÊÔº–±_°IqF7L;^í”?ÖžvŽõtêŽòž b¦&ÝeÑ,R¨Sì_~óùÎ5îtõ4ùjñNÑ/œQä´ÚîgñUB¶[x[ØÄyAžÅ‚ˆG‰DœRy®×ª_é˜Ð ÉFÍ»Ý?Ó¶é•ézn#ñSÝõ¶6:]CE2u¬Ø/!Šå¢VñE£å滾Y¶£þºÐEÏÛeë&.p7´¸ã`4!RÓ9 :Ú—f8'ýÀsH¼jî ^«`9}é%. "° ¸gXlæ6‹ü±îh*`fyo%·Òêt'‡…Î[†Ñš * ú®þ/Y% Út¦nV›ùJœÆšŽ£ ?ÃàÐõ5hb-“…ÄAnT­ê€Ê±FüåºÍÈÁUßUõÕˆ‡é¥ ?%—FãƒY+ñóÐqP2…¹–’ÜšŽâUá+÷_€LPĨÉüþ¦ÂUSÑÐü;]Ž\„ù¶4žä"“wŽ‘™ÿ-b¢$Ðò¸^N;å9!µõ ayÛÌ„ê åË‹åáO%gÏc,ËŸ”xrc~ðLãza¯6d›Hÿ–StèM:þ`kz0§÷'ón!é!*TVËê7òxz²J!†³‘͵ šÂ­½¨Ÿ«/"ÆPzÔŸ<;ýn[ó»¤TÄæG@ÅíCU§Ä.š«˜e¼îŒx‡úG¸Ç›ÆZ’Ýì#ØNäZæjVH,ôäášÿý 9’‘‡§øßË?°³V1ßSƵ.$èß±OuNé=uætüjÈTÙú©© Rö¶|lõ޶j­Fy›ò¡u³YØ/^Ǿ‹ÿ„XPùpLÀo0-ŒôGïnë'ŠÂtAƒ®‚^:¤tRÉ>ÀóŠ“E'NdäßḂˆ+7/(È/ùXùºª®hf¾3ÿ ?04¶4²%0ÜuU=C†STª‹U)ž"IvL6V²ùÿ ¢K}£\C=/¼K‰þçžg¢6]{IwP×`‚š¤-B/ó:µ&dý%jn´ÙmAûnO]À6û{ …ŸEeÆ#êS¬-´Ï±æƒ· tÇ«Óä &q_ˆK® ÇóAì\n†ˆ$ù^ªçr’YO81a*GÑ6Œ|€Ãc²„VWwׯîwq~רЇñ¬ˆJ;uy¨}_ Ü=½›ë=ªÆoc}áü$Z+ü‘wœM`À9‰¬“´¬M¼M’¸é„+5r3 ñw¬õêDå!…ÀÅ Þqm1 Œ_dDî Ù]ª4••M˜ˆ-«'bÚáwëĶÌ$ÞVAD4KØ-î‘ìVÏ1ìéÎ^ÛG+ÆùØÝç¹c*P¬’w˜Û’µïé¾û{Òpûë+>QÞ „´ëÈe›ªÞ¢Èt&?h@!fä­ö±Â!Bw‹²Ádâ\¢²°6¸ÔuCõ¯x»pw#ï;É2Ù÷â{¢BÅÝY‹ÞÅ<×6ÔüR{I:C"úMv@¾’õ¦ÅBëá,&O6„ðgöö\ì9Þ9;ô·¡<î*pÓ¼3 çewŒƒ£û»R:çÇ^Ž—ŠaÒ"Y¶Š)ºÄ¹ÏÔò¼á¼f>u'=À¨¹Êý`ŸÉ X|Î0+®éIìÔFš½~±‘Ä¥Ö1¿'¯#ðëÙMËšv_Ë'Âx’‡RÆq «RŸøŒ¨]hS$ÁÛÞSîNÀ:a/³¼2çYO:AžW—çºcŸí™á•b˜<_µW=IP¡Œ»½1RŒË£„+°$PZŽx–º’ZO\ݸOo~@y@ý‹^Å¥þlnt§¸Û/¸*ŽÈgßç÷®ñn“œEµ ýl’à!Ó³d`;ª³»ö)æòW˜ò|¥æ*^ÐpŠTþ ñCK.Ê:ÉË–Q“v¢U°Šª.ðcÄ4 ³ ›…Û\{¢®ÞQ ­ŽT¨ËÕ%w嵿ĖDr&'ÎLiéC|M©þ!¿©ðku_͉šÍ o +ì>ª 9–ŠÆàgáÞÖ^Çç0þ2JìW¸ Z6×-€˜Šg?2mßÑ}”ë2Ó Æ?  '7nƒÿQnÈqä×#àƒÊ½©Gß…T¹NÂ%aCÕOK'#!yZT« :Ë«° ø^c’bAÓNhnK/ÿŒeNhGÄù% µ­Õ&Ê¢A¡ O0W´^üVüV³×8]ýY(b¿`Ñø¯LË‚S£ÑçÁVW¢i¸|1Æ2ÑÂïå$q6œ^N}H%-çZM j¾G¼©MoÉæÌ5½ŽMéN>Çèm@Ô‰jëAO!›[”²nópC»öI£Bê[Ï"Ð BUWÖ1-G{üƒy‚;M)¬ÒmEéÅ· p ìë*¶C’³&ä“Òµ  ðdÐe·ÆÔ´ ·àú¢»¢°˜4Šv?2/wi‚ÿOnÎz–Ú®9þŒÐãhj¸5fŠ® Ïóîu¶éÏ(&H%ŠAæ­º³Zlt™ðGËž&!¨ï•7ä'„†ø§z…v¿þ¾Ö¤0p„Cy÷”'´wÊsÏìêˆ{&+¿É§ q”ë”d1ÞbóÕ…§ºF«ÀÒréKã!õ+a„*lYDKäÿE©§µ"³;“:³º2ý¹æë¼eÂQòKJ¿:™ûθ$°84©óiçà® ¡šåÒ Úòj±]R*OŸeŠƒ"'Dð{ wµw„—ÅkzRz^õäž-9;®{›÷¡ÄÒîl?CÛÈþÌ Ò‰í:úR:ò ë5ï e?Šø…R-ÿ[ú@yÙXíØë…Ù ¶[ž‘áù‘.ß^{ŽÕbخۧgžy®6Ï÷)»@?Å0Ðä4wÜsMôß Š(ãr¿Kø”….ƒ=@±ÆÖÄ—Dé9ÉO;C£ÐÓAB„áOרXjNðN¥Qþzo pÿÂð‰UI…ðGîÉ1ÄäçjôjmvJ„8 ÃC¡à,P XV½´èõéëÅëjþÀŒÄ­i­`\Üù$!dlñoÕÆºÙ$c8«µžøyÜ&‚ìÕå—ŠÄó–B&75Œ·ÂE*?“ŽMF†ª¶¨ÚŠˆx=_í,Q¾§¼°ø9à[Í Ô>ä ÄâïÚ°©Œ—NÏeLh^ùPPp?Ãt°6c]ƸŒï gÀ~k†µ¸…@ri¸dmáÅ|dîG^§ŸËÙ_çŒuœ‡µ2u嬪¡¼¾œ \]WAO6$y”u·›G2v‰› }ÝUüHóYvPõ‹b“Ä#8,®—i{U—¥î¿4 í-Ý.¼hÁù*CÃâÖ® 3£°@Hýš¤lüFÄGoh£´&¯¦o%Ã×·èajróN u¾E{ _âu,‰-ôöì° ÍiÇÔ.Â$GÕ±À¬ÐBÝ[1CÊS‰CëÞÁ'bz[öS?ñ/êÎTÓA5¡xV†+ºœ»"{MΪœs%‡`«ÑzÈÈÒIJ>"ƒeÖdÁSà#j¿Ö>@:vw\‹‘"¯ZG¿ë*  Ã÷CsÂÛM™y '/ÐÒø”¡UÁëÁåÑ6¯×ñ@÷½â¹$¢˜kv)`"‹øwqžp—øŠ2ÃÞåAúxž|O·«Àit¬²¬Ó´ékíýêQj§qó`üCO´Ówùd4_ѯ¶òcm Ûo5V»ã†“lð³éïØxÞ|îc–œø/a)i%£—ÜIjÌ#CC¢:OD‹ÍfÑsa¯¬S|R°˜s„¶ƒ¹DxÝñ~Š€ÙÒ‹²z™éå…m„}‚~Ÿù7÷.ç©‚sMrÇ0Ì7Ö+´.·,æu\‰§uë{nö°Î ð ÿHô´íâþ¦ÕX­fŒàµ¸½‰ž£.Wâ„EŸå³ÕŸä&~û ·PvU3I÷¥Òëì³ì2sš~Ÿ**°ÙÌcŒÀ+Ý¥Ípø}1m¯9Ï;4à L í µz‘-Nä1Ϭm]» ;¾ý<¡½éJ[ÉG 02X”Íœñâmêßåÿò!B£1ÛuÇ?*Äóíô¦Äz"l³ÕïŒC¼?ZÌÜw¸,° A„ ¨â¯É)ÎyRþ ܆ýÇÐ à˜êw€ÁÈPÓÑk¾UgIõî¡¿küƒ±‡“Âl`^ 4¡càÕ ^ØtÄè$ð³ò—¹G·çÙÃj¶#.4ô¡„âºA(¼¶æ8ä ìjÝ 4º¸º¤hXö¤ÜâÂ/€?+ÏVN¬8˜ƒý•ÕË®¦mdí`\läBöT©|_Í9vìÉþê½™§[Aëkk›Òëõ e_•ÕW|.Q“Šnæº Gé)òV äîi8î>ÝÞ«5Î#.å|SwšujyrKc&§O²V»Øˆ(»FŸûØ±Ë²ÖØæz%Öòß$Û¥kDÿz8ýŒtÀpñF›}“#ïâËÎ4žÛ³&ôQÒM’µ ¦âÙïè¥8é0¡«ç®â~ã/Ut°¸U-ó‰ïÚ›[„·Äþt.Az!|Û—%½Ø2akÓHÒŒz;HQ#šÇ÷’¦5<ƒ®…æ !M­Z¾5%Ñ|Æ7š$úØÆ˜{°p:| èBù*[Ù›’ãëÐÓÀÝå›+À ¸†@™êûñãoÖWuXãc ðs_ŸëOG•, ]‡BK.«KQ¦Ù\š ë’¤òÖ²Þ±œì[íÎú#õ~üLÒ}Úrjy:å+wì¬úƒ ¦=`"ØÏy.1~¨g^Ñy.þ):=ꎬ ’åÛpmðÄNÈ(@eÑÓÈ©”£“3s‹í°uýu&L*Ü^õSE)r6}yVÐ8ﻎKSÛ76hŸˆ-¯:_I-‰UÇQÃpNü‚ºCð!U±¼-§§ZXpªøN6»ð4t^m z|Ô݉b×Ç?­O†Í(uv›*MlÂÊ?ʪW#Sa$dçj ×$‚]à½ÀžêÑÕ-eûsöeþ–]Z€Œ¦‚o€= !5ó m•@uÕëlq'’GÞO@—Ì«mJ¦a1»ëÆ“?ñ†k>Ú9¿“ÐïQÜ^ž.GO²lò®î¨8÷WÏ07Ðë뮌¥;O*~à_ã¯ã®ã`…n1Wð€¿_šk2ú…1E§°#ß»ÚV!ÙJ|J\ÂxGîiÑ@nÐÕ.¯YšRahœ®P™Io øñm?*[`¶Ã—ÃׂôØ‹¸a³Db’,¦*gJ‹Â‚/´äÚЗ50¨áö6ÖÞÀ$~/7:wxÇ8c(‡ZØX9Ö‰)‡À·Â`{(e@U`¢Ÿà‡·­lG 7G#ÌqÑXxTø£¿ÐýЪq ‹öÅ2c“¢ua»ÿˆ3IŸ¬èÉÆ‘ÚQr£9îo ³"{b¼(ÇÖ @³ âJŒx¯œû—د]dì]xêŸéyó½_=™.™sнËä´uDÑ¿ý3\­Ö|£Õ’b[î=âßÜý³ŠÌ\!\$Ùdmq­³|Óß”Í7 +:æ6Éóýq™ gí#Ûg¶_fœ Mæ e5nŸ³B½Ç3öÒˆžÄÐ< Nü@SÌÌfU³ßÈÇëhÖ: B»¢‡•ÎrsŽÍo>¡çK½ìEâ~sv¤2®ëȲ_ãöq—kƒÖÆ´;­DïðŽäèðªà-ç|ÿöÐ¥Ðô ÀwÇöÀ`¡¤D÷‹Ð¸ðO¡/þ¨ë_ËhÃåP†–õ©{õsMïM€ÿÊz£Ä(¤r÷s7r>ñ„¿…e¢­êÓšt•Zð”×#Þ¡Ú/ öp»Ø/³Õ“½[‚ïÀÇ=Êýcp˜Ï$:L¾\·JýÊ ‘“ÛÃô6ÕxÎöÕærZÝ…îåî_•§Ü›š×ívOëxà¢Ë÷S¾ÁzkÄ5€Hηc° GÆðÌ‚Ìo…Ëkº°¶fC3OGEÝh³‰/úé—"wCCý“ƒØ\ŸÜõ”¥):â8¹q½u;)µ}oë^¼VYrý4òéä¹ÌpÆü,m‰L™!+' ‹Ð³k]È©Àgùôãšì¶Êfàd 2 BÛ;ʶg ÙÀ#5è*B¹¯ª´:Z}2 ‰NÊÛQ¼ÆÂz1?UÃ*ŒÐèç˜QµI° ø¼âhyp4RY˜›V8z1]‚ç´”¶ÿÀ¸-¸¤Þ$É Ê±zê}•ƒi9o\cwø ¦.Q×ÓÎÃ]Ÿº'u‰Üs\VÔ RÄíòd¥D‡6=TuóN±þæio9þçΫž»æùÜEÍ{åäâoxnuWÁ„âC%hvk¡ÐfzêhS+ ´žæÄÖ§µ§*ož~X:¥ªF¡WéŠ,#$OèÓ©·t4ËbQÚÄßÃ9̸L¤ã7àØ /1ê¯7þÿÿ—UXÔ ÃÅE];0V±]cíV\u-léî`b¨™a€¦»˜îŽÿtÀ¢¢®®Ý±¶k­¾úùÝž‹ó<çæwΙÕfì¼Àsäæ•Úã*¿’‘ÊI¦<ïT"w#–×;j·Ö®ÞÂ@NíD“³8‹Dx&Ô¹÷ÆMqí8@Ö×LGôÕ†bÇdÏ&Ãå¹ê¬ñ‡y¦ÈûÅ;ù.fåOî1C¤]æŒwë]Ϭ ÁIÊ+æ*þÎYúAv#wмÌÐl:øl'­AίŽ#Öi–£Ö­æÒÀôrú*í*-VU¨.TïWèÔ:£xe3Èÿ&n¦Ï”¬3®¶€œÛ-—¹`ÊbÆ=z'ý³$C[¢–³'Ð)žÐŒŸC "Ù»îÿ'=`Þ!” «Ý{}ȾH'J‰ìyÃð³ \²H-¿Þ³L<Öì;20®÷¼ñ¾XùSóÊð=x1Z2Ϲ¤w¶ï”úoêzrüsv·–0»Ý8ÖîqOðB< žwžÓ®àQ¦ö«C¤‚Ã:Ž;µ÷µg™ã 2I5ÁÊOj§|-ß*’©ë‚´:y°,[ö§d w îê¹É coa_þ!­:.šž•ÏžÍ,`¼g¤w/mƒv®á‰,“}ˆ¾ÿõ¾ò”{G¨Ì‘ä@47‰Á :1':_Ó ¿j”†sæÓ«å‹©Ü4Θ{md·Ö{Ç?àO0Ïã6¡ûëæ€áà'ÅmYW^ÄŒ?kLÛ‘R1\H¨úTó á¿†W5ŠŠ¸†(|‘ gØÙv‹c‰ùýjÇtÔ—ægÕ³pуÉÁõSþƒÏE/À˜Ú^ÖÌη$)ãžù= ˆœÚY$ƒ4VÐ ÑY»ò“«‚«ÿWV™ãKþ5­&ß[N*VR]‘ÝxžÐ2©Q0'szîÈ¢¥/Š&Ü=O·Ç,NÄ–Œ½n¤V\-¹Z嫽 [‚<Ò¶þ¡F^ž“Ï(º[Õí÷O5/lk@®Ff Ö ~EnïœF dï¡Ë^"V£¥Õ+$òAÆNtĹÞ!¾èßÑWï–h³8V¦µ§‘?S¢®Qè˜þŽK¸bæ#I‘|Ÿ@ °_+B4zcévòoúHU²^`\¡…i¨>ê[6¾‹ã{ýÃã‡BUø/Yÿ§`æ’®«ÊmdgªëµK뺥;ÈyFŸÏ~Ãçóv‰–‹þ–êXpöÝÎ_\hOŒý‰¥ÂrÎx@Ö¡²»œ½/œ‡tßt±š ÕkQ‡øz“ñ«ÇúR²”3¶G¬Ý\¾Æs¥ÍÀÎ ›DÙº—†@›»–YI{Î «&r/3ðõ(ùEˆ2U’+™!íWî4þ„p×–`;ïêur U’ɬaJn1þÜi;ëÝè–:Nzò<ÍGÑI°2O5Z¶GÜsÎà¹ä¼¡ ‘ÐÏšÇWLJ¥E'Fö_ð ²rN”ÀYŽm©Pt3%%¹3iG\kLu’6k[þ÷‚„ܯ‰Ñ£¢vÇUå +×ÕN…Æ‚“çħ_Ïåfÿ›±"K“s¢às œ‘ý<áM,(¦0Õþ†Lmkƒ Ò¿Eµ‡¯=u-¬,Hü剽œý¶xLù,Èì†EŸ!AÎx¤Úˆù‡D;ðãÈ_;}mfÌÚnæCºþ†ü_†û@º-ì¶…_Ù{ÓziÚ@­ïk‘çŽw—ÞÀ„>ƒëã­“c%êNª&)(y2‘Ä\ƒûÑ ù­Î‚ogÿÆŠeOÖ”8§Q• ™ RM/cÿ›Ó|æ­kk^CðsC$ŒåÝ x8D 17µÂÊK/‚ŽÃ»‚(™Ô>lœÜ5š{Eˆäͧ¶â¶×PØ”µ˜Œ†c%Ù9´Ú»´ÙšdÎg‰ÕI4ÑÒ\9g?#…¶ôPJP·>@)ºa”—êšn’!̼P;]øƒõ‘ôØäˆw%[7[®Ø f¶A¯ÌUôi0ºÃªe:ºýŒGàÎt[7ÂÔ y³(™{š³CçrV5Ûð ÷ˆrÎ6éMûQ¿sè^ß[[Œ2…̤h%Ë„WÙ3yO¤ËL¯¼,ß*»_YÇO#£³0Ã"õ½.ÎéÓ­d³#HÑáÔ?MÉÝW°Î u$7U@‹ÅÃt¦ WMo”ðMgÍAÙÖ úNÜ9 GÃ,ëlë¾Î»jï;èûÃ]á˜iH–oU¤ –/6§édYk€#– Õžð“öA­MŠW`®²CŒ«œÏMp ¿ÌfŸìYÓó–&Å¿Àv“RAê1æ!Ç-ÇÖ)ÆnõˆÃ½L;wËx¦EÖlc©Ê´Z~–ñ;‘G³f áêj«ÇSç¿6x¾¿Ìïð<±O±H,µ¶ÕÖ&C³.^hÞŸnpCªš«ü¤ù`ê°¾0êFk?PLS‡kE&td} ÌWz<·ô^±*ïS:˜Ÿº%K^4¤ÌW%Ùcô‰9 ]Aì݆Ùn§Ûè¸aù,Çan7;`A•ãÓ€¨Qw“ÿ¬d£ôͼÖ’–GÜndnôôê\rfP¶<ïlÎÅ”-ñç£GŸ™’Â.Þ_ůÑWÜÊéŠ ‹£:{ïì_çF¦<Ê*œ\2iˆî:ý4|AÑÜz³–]µŸsEttŸì>n8>5Œ.Š™ù£`aAfÁèÒN¯èC¡üIEX]'‚Üt .º¥± \÷½åæ)už@( ·²±ãi~U©õÏ¢þž‹•Ão.´ ù_õ7Žˆõ=rîp¬r>u½I7K}EÖ.Ñ1x]“[¡Ø_‰…躳QÈW´sf6>.P•Îkù„ÿa 2 ²¿b1d!Ä×Ô…û‡…Y†xPÓR«m_J8×õ²«0°¡¹ûbGFÃÙJc¼ìK»„!ÀqˆL+þ09ˆR× À¾Uk ¡ˆ]Ýûç#¸'ÙEF¿ès÷«––FHk%6ŽAͧ—÷8¸ ùyüQ¨ìš*qf0ä´e$¸Ëe}oø(Më¹Í¾Âéäæh–aÛŸ.†£Þ{зÂÊÖ kýšTÍeóIÛcû*×>{>Pj‹7o²„Ù¬H]¥!Þ³UòUºÃ¶·¾AÿÑóÁ}ß]UÚ•R0i)*²sÙð6¹j”sX<Š‹œD `üfJõ_éÿ wÑR7¹Oå{z‚ÈU„Az‘ð‹¢\+¿Ä¸Ž½Ñö±%°ÓA ü¹Ú„8'/Þ`›î è=íý丆vg·Ïéé½áškš×hÚµ‡ªŸé¾:n™¿0Ú9Qª#N*«à\ Ž£®êY/‹ŠÇXÔ%¼_åý†@ûeW©Ûecš¿iÈ&sö.`Õ¤1‚Pe¬¢OºP™/_'Öórì4žU°F3Îç40Ô/ïßîõØŸ«‹U«MPCƒÂ!I”ÎÕw<ëõêKm7-g€/¶¯v¸s¶õ•b)?ƒÎ$¯ §ÇÿÒ¼¿.£¡¾á`ƒzÔ^ˆÌ›“16Ù“NÊž[ü¾ü ¨>s ¾"nmz-ô_ôxfža­s™ë›#X¿‡µ©û òIMGq\Æ“sã ùª¶ujE/Aù¡y_©¾ /Ñu3©2¿ô°âaEVijÚøs5±†è·QKÏG§ôέ¸µA¶åÿy?~>b̹ðÌ{É LÉ™,rôP¸ìB¿DñyÝÓ‹¬aaÇŽò‡5œØwº<þzÊôÌK¹ÍyóD%Œ²™åS*>U8!ù°zÄ.Ôˆ–å° ØS(¦ª§º§yO—ÜÆ(¡‰Ús7WJB]å¾ïc.¶_й°{èØèöÌÇs%;^Û ö¹?‰§4fƒõk cTQ”}‡;IJúšö¤8¶ŸK%ÿŽ:û^³­ÆØ´›ŒÙP{ô¤äSIZUtkáá ¶ެ½ÞâîzÕa‡Å”ßåÁN4®©^–³.¹¦‰üÄÖ‰¯ñû)àŽifüJîP뫦¨Æ‰ “ª"`:×|Ï}ÐuÎöÜPÏ;„Ó4&V.‚l›Ûõ˜ð‘Feôp‚‹Â‹Ò×r‰¨Œ÷?&’±[Xî*ropº—1@ÖÆÕ2æqþ¥)÷é5œ5zm¯Ò¹Ò!¶Fš¦Z&;n¡s—s§í±ñ¨Æ¤Úmšaïn™&¼i’á‰&D¼APË¿+ùªM²48\ùzd¹d,ï>é 鸈 æàïÃ/`²h„hÍhÛS|þN¯ŸÛõ8·¨¼œaâU`è±ë•#^÷<”ÕAxJŸ%Úd|é=ì=¨(grþ–EJ' Gʳl‹ò%ÔQÄÜ·ò2`¥u¢èIã®W†RÞoXêq[Cwnk­r‰–ÄÊÁØ)ñúÛ^sïC/Þ1ÚvßIóÀ}_|wmƒÖ{Â4FŸ*_­ Ñ¡MTó'Ý^]­ê_YcÏ:^¾pMÏu–6‡Ì§Èdk -ºE¾°”÷E¸S¾À|ÕaòÒzë¼g]ÃözëxÕ~~<LfÒî0OsH^©ÄšZ]•ñžæ‡TÄn#•Q×KF8 ¾Ê¾×‚Ce‹U¯Ð,²ÉÏ ÁŠf?Ë&çX!¾ ¾®ý^—àºïYáÿØK°£$fü Ô|Ô«&,^qßð¬)¦yyÓ!H@áé´á„i ìÝ%몰Ï5ýåóK¾dÚ’B «…ËÕnpöxSÜáÆJÞ ¥ ½ ~lÙƒâ‘y 8IÜÒRv»“ø¹mSÅ ðó*hI\Úó c‘ü4 f†´åìgGŒŠŽuEM:ó%î—ôGÙ¨’èÒé©÷£wFäž >q3²8g<ú¼âqim.£¡¦¥{nש¶äíYóQ×Ñ1{ıÈGg¬ÉÙÙI…B ü¢üD9 ¼<Øìký½õ9¶†&$Í@Ÿl`@¦W™ ‚FsëíNn/ÙG¶bþéh§ÎÓtmï;}>tøÌ%Åàüž?üVO»½È·ZœÛì› Í&”}­ýk‡‹¢úJKí¾ƒ»Ø\Sý¹ù©H*åN§•‘­]™Íi-ná9ly®èZñïåÐÆŒ–4š@neÁ^×=«›Û|¤íI+ r·˜Ú[y!_—#€†áæÒTjÑ RD £vw“®=£õ)|{SzSdý}«YÆÊÓoqŽpBކ¢<ÌßðZØCXFý¶zT@¼G™GÓ‰Œb:‚&c@¥._w³û¡kUïd[žƸM[ÈœÆñp_²“y!Š'¦YöENŸ•oñÚ®rO¸Çé ±Vt‚±½ê„å“å~´!CoRŸRìP9ìÕœ‚&Šk†7ÔÀUO”ßáN`Nd ³Ïõ­ÿ5m¡MUŒs´;Wz“}ø¾§îÿœóÕ|bÖÓQÒà‡^_C]Zè¸cØbœ ¸µóä~Ñ¯Š©öºþÁ‘®oêÿ©uÖ—ÖYâ¯Ì`ÞŽƒŒj/#NÐ]ˆ^¾§Ë„“4ðZD3ô–õ=‘‡Ú ”Ýݧ{ËfZg‹‹ˆ§¸ûô‹¼¡þ<_„ýŒ-Ü3ËËêìóŒ*éJuª¦iÜêEº›Ð8JS*ÂH/I¯pÂIP³cy¼‰ü)¢/º&˜.\µR¶O Ò²Œ©Öûž²¾çý ½…½?z7»¶·Ô]’ã/;Q`Ð謩–%@ˆm†í/3B,#•á(ÔÊO6“oE¯ÀÙlùª¾¢KuþðI½§â{ ³_¼[÷`°|vè×ÙÛ×û¨i½)punk| Q‚&äQ³W–Yw¢Æ´o55½«‘gM(¬C©°S-àæ»n $'?:)1­¬é™$ʳÜîÛoÚ.°P¸Ê¦° èQ1%ëQìõ˜Ui¯ A%uyü‚îÊ?«~Ÿ,Ì­šÖ܉"¢Á¨u™Á±³#CbƦ­Ì¤&Ä b>&êò׃n5d|‹Yñ4ìGxGÒ—Š­MÅ É•Ðfu~k $_—ØszÉaô¡Áã3#¡gò¢®F—ÇÑÒKºªêÞUß®H¨ š†ôìG|+œ}¡ëpƒ²ú~E?$ÖßÔLoGR2xƒ¬ãäѤì0uâ0O¼òËÅÝÿ—'Í~ V›ÇŽVkïêØ¶Tïºûù·îk§uÈ "oªLOiM_+¾!£‰·Rõ¨ØÎ“ô{ä!Xkîû‚‡`U'4õ·œT‡Õ´L¬Ú$îä ­ƒÂ3„…Å »a/+#•Ä]¢$µC°€ØÒ´´øM6¦QÕ_M€v5îi.GFaw U–]öaÅñÚqÓz_z’Ýõ¨UÕZ'o^ÔžŠ¦·?D\C:»Ü]j¬_FøLö7±{áÎ÷½¾—¢šÅÿÉYĉbýGAéc&ˆ#®-a‚!\“©[f±:ÖºUÎöÑz–^LT(°r±Z£Î”ˆŒ’b‘-H;Ô]Ö®¿í_»¢”çg_â÷³'’ç¢5H «@÷xÆ9í(ÝõÊž™Ôbe°Ë€ºÙµ€ˆÐþÑoí²¹©¼å{éïÊ#â™’=ÂqÌ{®÷¨C\&‹OÐ"Ä@Œ³éì8ö”.ÐÛéÛçô ´ÅŒ=5¦¥†¯ÌÝ$|-ˆî£EÊc´d‹»…9Y2Ó´À¾ÝýÑ1Áâ4µhNéB$8ÞvZ:&‡±DxL¿Ù¦A¨ßÿl²\Õ]!M6[uŸv¸«“4‰çÒ„é.·ì3 SUmê*ó ʆw…÷þ6;_>ð®ŸÐ7e ÊßÝ7Õ…0oUç©ç˜K]·ÜñÎD Æ´Ì Æ îÒ^ã¥ø4ŽPõÌ” ¬ÖÌÔH§kÍìË'c°”Ç>œÇ:ÏÞÀ-]¡·¹Nxçú9§M?ÄG°”jpéÄœk™àÔu»*6½B4Á5Í“j¥ÍÙðâOÕ¥M%ˆVĶæ7 ö–‰MWªH™ ½u·YDïçtC‰ä=k áÄ“ÊÅ¥'‹ë ›3¢c[âÑY¥ÅÉ…s³Çå€JTàµ0o«ÕÞZ…Ì«+ÍÛ¿8Š–PAƒŒJ_k‰ L< Ï.ÌÈH&nLìItfpÊ>Öæ5Ê«äPSS±1­Ç͇r•ÚyìtXè™9QNdžQOµŸq23†Pú½vTÍÝŠKó!0XLkJu •Øú®)§>º6²æ¿Ú ˜ªN_w££‰µKõ])ä¸ÈgÉX€Nâ^9»Äº4îBã ¤/ÏîÒëÌ› çl÷h[¤²@yÅRáYrþ¯‹Ê‹+¯kÿze¤P ¨08Áo=Bš¥º¦ñ¶gbh;±¡/I5ù+ jTõó‘ ̸i¸ùˆ‰•Çš²h‘ ;íe%#vqi+úzr͵ÚÍÄ-âڭ⥌̔҈$H┼†jrÃ^±ýY§„®Ðe. ÂúÈ0/²8E-¤ým¬†°ÚÍuÙðÈ6{ûÂv9j)‚ß89  nFwêlÇ[–ÓìýÙËÚòHQ´ä@š{–»œ}…Ëâ ‹^‰˜â=¯yõRˆq pÛºÏlú–wI6Š%PÕJÕ-átÁ~ CýD_n\¥ cÕ^ Õ3Ë™¤qHˆ‚«¢É¿ÒîxÚM¦Ñ*ëÛï1;T"ö0ý ±À£X߈9è ˜|dp÷xÞku¯ß³ŸEŸ‰ßDšB¢P³™9ì.U­õ-ÍöŸV ±[»Ã‰£ð~x|íä*rªdŒ½Í5Bì!RIÉœN-NM`Ÿ¥ýJM¤O§ml¶E{–dn>{–Úf¢™´&²)Ï W?ày38ßñ¸–ºÊƒ æ®_XHÙHÉJqºl£j£|@8^Ò,*¡þÒ­¤ $€>޸ÒâºîýÓ}O?È ¨Ñm5iL•N‰ïéÀ»Áƒ¥çמÂŒòßôNro±½²utÍuOq:SÌ<Åßçó 1s„PÉ^#þ]%ð³@üËR·Z¢]¤[%© péøÍT8m$å_*VˆîõŽ;À¿ª-*´i/¡ybiy7ûLNc:7ã^éÊš»µ×jµÕ×Á# 2Ó/Ÿ­}ÿ4Â_6]€ç +êEcÏíK¥4ÿ´ª)¦êE½¢«ô ݯë²Ë'–\Ë¿žœdËØ[|³honH®7“™Ý²¯±±ŠVþ¤èNÞ–üò‚Ü/9Â’º*”_ ˆ“cÄ숃¥ÄgFeý’ÍÏâä$À£ ó*=…ûRõÑ—ÂÎU†òCŸšp46\™dÉr$‰¼pÊxÒr {, òEƹòoUªòœŠâZBãAøž¦µáÕ}«O×Þ…î¯*¯|×Á%^å-æZHo1oÑg1 ˜ÿk½þ¸çƒÛús}ûYܹ²5–®C½sÝñú,i‰¼ÒÐæù:Ð?4úæækÌ`Ùþ?ŒAlBç>r}¼Ùl*åPð»0)íDÙœ N龚kõ¦£­Jt.ú+<:¶tl}±ÈÐñ*Ïn芟T¹ ËÞ$­æúˆ;ºNÁo–nKK/¾ÛÚÊCd"ÊQÉÝ£…fÃ{S eÍsÌrGZïɈ”^ä‚êËÕˆ–¡Ö”·mOÛ_­šÖ‹õû*ÁÉuK‘=¨6u¨z.ÈÀÓ‹åï{6òW ã„iÜÙ¢¥ªKÊù"Ïînn;÷ƒ !‹’™$e{$‘²- ¨Ö)Ö«xÊíHV³EA”V¾Ö¶¼3NSmãuÉ«,Ž©œºSY«ÁɶhP–Fu/Ÿ¹VUâÄÚ}ú“›ÔÔtj(•Lõ0ûèoÈí$S÷S” µž-UX>©Ó‰ øÐöÝ]Û).>O´W÷ÌÙäe)/âÄÿÿÿ ×[” `]×Xk»{UtEרµ±E:†f˜îîÎ7§‹¡:E@lÛ•5?;W×ÏŸp®sÎsÝÏF“ñ üJ4beb~»¤ÉôkPQp ÔËpê¼–ÿ%pÞÉç‚ý!wRó’SÞ¦Ï>LÁèºÜ¦ßêZÊÃkÖT¯vW@Kó¶ÿ)³Dþá[0$àÎËñ¬õº] 'Æ}׆®kì3¼«KeÕê¦=Íö“c=åã}Þýeøj¨¼¡.¦õà¹}Š.ºô×å”Ëm§G5լ–֖F”-3Õß;ß2°áNño¯çòÀñºó*§ÇÇr+]£ì½n“_SVÊÈ×Á}•…CULóä :8…‡jY ›nWCŽ•Èzo¼5Vq„ÕAf’‡ãiÜã^Rý…Aý™2¿;5$5„rWDVΑµ‹•¢_%‡… ÔaÙÇO%q¹:Žãz`u¿@?s4“„s·%òS|é»R¥‰¯¶ÆoKmĮΚFø‹ÕÄL lNýï9\»:gãe=®“͘Ó(±{“ç–6&G›;Št‡8"§ û/'ŒÇ%%];´kï­ˆ®ªˆ¨=¿ï#ìÖÖfLÌš½ØÇÁ¥û6íu€0wYfN/k;›»…ƒ£‹I¿PÌ¢Œ7„,{›(¬gÀeÞj,Ò:U÷•ŪK@ß2eSGkJû¼sýκOµÔŒp<õ­hlnùrª¬S÷­ì‚Ñ¥Wj…MIÍÝõÿ+Ÿ4Z‡4“JûÛôΕ/ÚzÏüR½ÑúQOT¬×ع]„$ÒîA¸h¼ôwùŸª%]ü’Çã\¬S‚bNQÆ'R§dµ¦N¢O³4CÓÌT¥™t0cËQ©®©Ûù×éUœ_ !•‘uúŽÆG'Þ5ÛN~¯Æ{DÚ^¾‹^*Ø¢ÈJdë¤óÄÓØ5„Q¸•„|,ÅL¡ÔO/‘åÏ(œhò´9_;'äß,Œ/ØV̨Ø`¬ü^VRÖ\v°ì[MSCUcV]OðT~›·'?µrnMOõÆšþu³ê1õGkTòÊÕ•PÝÔÚõÁñùÖÑÞ¯ÕIU—ƒ³‹Á±5Š|$8²¡µÒåÉtÖú¢ËUÁÉþf;ÖŽÍ?™OuÐ7¡e7:”i¥›Vö°½pEYûvìŠþ+ßÝ´¿µ¤=þ¼ïRÇ•«m+\KL+-åÎþ6öâ쎯;ø§§TE•32k$ô<Ëù,xûĵ–#u’2 à¼?Ú‰^×ï2Ý·>rN·»­ÿYyv÷Kàsa·¿ôÈHÞ’û}ÓÝÏóŠ?ËKƒ·Êgþ5¥(cµ€Ž£‹ÕîÕ.—g¤Ë’Ú)rRù ¥lÈý#{=±Œ­—’­>â×òÕÂÅ|ƒFxš9‘ÊÕ¶:ð.¶#ÝùR©r²»0)G—%$flÁŒH®?¼>¥1'5w#ñ) ýG+Â9RãââË\KžDº—ÉθOÎzɹÎE É>•{šffÜb4Ñ®Þç¬ÎÉþ­Ë.J>ýbß¶ýeûÖìKÙ7:ò—ˆˆ廞ƳŽõ‹N>ô%a@úããá mØ×œ²eòéÒ?y3©sæb(’7ãå98ÒÚm6Q¸Q9Û8Œ…k‘8Ä…Ø‘IÐ}p…GS;¾utû¦Ó §ÙmÁŠÛ+÷§ú¬¶ó­`ÃÞÊQEÂüÝå½U_˦z¦ÙÎÙ/¹Ì ÛλÎ?=¡s2«ýËÙÙg÷5~,þÛýÆ?1»e÷8Œ#"‘ì³Ô%ä8u‘¦Z}\!ô)ßdgÄänÍ }¡aŽ*JuÕÐ¥ª¡wå¾åN`_¢º¹8Å~U/w"ËŒ1fùTµ4ZÙM–׿­û­viÞÔ/_+ $eðuŒï$q ~tæÉ¤žØÞØêäêÔÔÆ’€ØRº{™›Sø¸òkåÔšÞ¦®æ˜†uŸO4mšsrxÛ±6~[×É#õ ƒÚà‹ Q%¾lIñÜ*\Ð0 öd•·:¹vXX•¼±ž7±ýW–ÜUh <.ýXQSÔZ½­©µnQþB÷`Ïó|_!ìzb«uõE9ŽÙ§T–56ÔÒ¼³€hø8_ƒÕDêÿ##¼µõ//…]v]¢t;^ÛÓuî\c©Ì5U¿^à!ØŠ‘¥†¹f¼Äþ‹+¶I‚èÞ<¡ý˜#$˜ÐÒÕ8 ÉbÄ2M‘ÞéÞš·­îx[R[m{J‹¶|yÁ §ÑÑÏ_Y4Ó]¦h¨.ØÓѲ´¶°_?õÔã@¼é†i”kG¡¢ôSјÒ¼šUM«š¨µÏšúÕQЧç?-úZajV5½lhnÙr&âœú¾£ðBÚùö–—µšÚ•«<×PºÒÿ¶òÉ‘ ª&yÛ¼\`ƒa›y"âºoSبV¾vÖ–— :­•"/Ž,'uµ¾úþ¥'7ìÍp™ì o‰$Sw¦äÕúŸXÑæ§þœ41ã)fNM‰cÄÐóh=ä6,šû€uB4]Bå%pëxÙâÿ‰VpŽ1ÌÌV–Ÿ¿]7ÖF÷ìô¶—€‹Ëqé b?ŧ&»³º2miÓÓ%iRÇfÃ9ƒˆ js%KGÑç$cñ˜ªtEòšøSÑš˜ÌÔ ÒSÁé.Z>î…¹ËþBÆãÛÓΚò=ˆ­ÌŒ‘àîgH©‹ú°sû–¸Í[†ì¼·»jïŽCÞã«ÒþMzŸ’D¤ê”*]‘Ö!¿Ç)$O¢§ vˆkyTV3†öÅÌ‹®È¤šO–½|Af¥´jS0¤ðçâÑuOO¥œ ?—¦þÔŠºþÞî³1ïÄÔ††r²{‹mm~Åצ¸ú“©@•¦ÕÚÔröݹþÆ^ê¾@¸xâüü3{ä:+O4A~EFš<²mÒÒñ<‹Â? (ÓA†>†&ÝpS(ÔÑSèßðO–!Àcc’v¼æilNIR #6‡J$rVËgˆgк©Ç„‹¡ù”hkÃNÌi®9¡¯óÔ,©ÂT­*¾ä|cz¤zΛAN÷gŒ"ùŸÔUÇÑÏãgöfÿk/Býðð üÂöHïa70ZdDh¾k›;Ê]f{ ?± Ô ˜¶¬Áäûœ=DRòÅŒ#ä0n™ä«âÙ9æGú€ÓôG0Çô³A ¸P2ˆì‡\D$Z n¾ mÙ€Ar]”_Ý=þ1cJ7ø‰–*ÇW÷†ßÛh¾HïO_[‘å†â7“1 ÷NæÃÔéÄÓâå¦:8Ñj1/1Œ5EšÂó-ÓÐ ÖKh,:5Z£ì÷­™ph_ÀÎN¹žK“½ŸUÊÆld”KΟ™õæ¥@%¼.cL÷Ô/%‹dïd!¹ò$Õ›íƒýXoœ±p$ñ?‚”Ö‡´ Of³U{LŸÌò¦@NcÙLé1aBNyæa_È… P¸nš#Z%é4( W¤‡xdÃ#(ÉôBaةָT÷d“¸N Q3 zbQÅ4ß{R;Åvq¢4N®d>ÃÃ8±+ˆ£¸æçVÄüE®•<â½ U¼´îv.².‚{ ëõ}ÅW97E*‚„»rO­ŠÞ“vw!%%¶OtHâܬOä5ÜXvvr3µ%«;YsôæÑ9%쾄Ìߌ ¬³”9Ò+–tDcJWUÀâÇò ¦…~KXà^)Ç´‘¶9åfZEfA2-÷ž*ÇîÍóØzà!°ÑÜ °öuy=ŸóW».Á§¡ÈR䦩Z±EpA’ Ü/%ñçÙ&æC–‹¨Íÿ¾ðcùKg»h¥Ì½GÏ–Ÿ, 2$ Yli­íaáòÀÖÀ"?®ØQQ[ä²,+UZVD†;}gŠþ_ÓLp¢GWZA1&³j« '‹—ûõ-ŽÄ€¿à¡K+Û™=Ì·”#ìlÅgK=ò *¯˜?š?[Áã°I±FZމÂI TŠð™b‘òˆxw8EÓíÙa„ Žª 5äî¡’;,c‰HÕB2}‘¡ÃÜ-û—fgkE»%R%Õäê3±…ÇÇÏf£ªT£l1¶1ú¿x'9Ae±ºQö·¸Š÷•=@´\1OY/¾ÈD·aŽeÆ0¿)–kýšíTNKÒ*†<_ù?U·Ú¯½¦¬|!?-Q1.á3õ9g/K`•†éÖ_íŽX´ÖADh;ê5 â鿲žj"¬×]{|ç†ûç-|³3¹%#›¨8TJ¼Ä¹.SÊ× C镌GÐþÚ ãj‹k^c-uîvíñdû> \Sú™akõÚWÁÙŠ”~ä?·ÁÛšw:/˜·<¿Ê¹£j½ÁþÐó,Èn[ëŠ÷Lp'!/Í#ä 'Öq$¡êØg\’g~!å~#\cÞ nÔlR“™%N¦!K¬ýÕXÖøÖæùöZÇZBÕ“¥Di‹>(ÞÃ<ˆ¿C˜Á0p(ßë2}5GÅH'?Ö8ÎX%Ð2p†õœå€0Î¥ËíÂw~xJ[ü”tqNR:õ@ ò@üÞôt“4›-"ÝM5„Jå(qï)ó(ßS&'´›Åû˜¿°Ï)OëVjÚutÓEãcsŽt~qôX :˜Âý/ÅœöûfWÚzÖp™}3pËⳬöÂ!èdÛCk½µ< ž‡GÙV¸ÚfÃeq´¯Ô·Â­â“ÚŸõ*":3Vx;8;8Ê4[¿UÖÅÛ¡¥ø>{VÝ?²+Ò×à"— Ûl]Ë+Ê+ǬEFk†±Ód¤Å¾Ú1Ì~ɦ·¿F; …Ð-è)ÜoGžé…5ž0NÛšû'y&o-k¹4èg·Ø‰Ö7è$k¢µÛÚì˜êäû­ö²ìS¦ig™'A$¶œ“Ä‘¢2êRç$mˆ™~hsœýÿ€²À @¯þ¸dØ?Ï+G¡÷P@O’ìâ«Nö ΪóÒûr{S\ÇKŽLYÍõˆy’ÄrRÑ¿"gõPÞã÷àNà+Há ™ð½,w1sæ±RQ0U¾H"‘ìͦòyd!þãwÉeé.Y¦t­D!Éæ¯¢Ôbog9s<4˜Ë>’ŽÓVkÑfú·- ªnCtûD»e» ,ï_ï—šÓ"ýY~™ûœ6S»m2SÇé ~®br¡¯ÖßÜÏ›, Ò–ˆàLÛ9W¾« Ù ïµþë­ôùý½¿ãúœay`ÂßÅ4‰Bó0ÚvzóJ<Ÿ Ù@Ò˜Ì3iþ´¾‰Ó²ÊéQ"¶ ”áÂ#ÔÝÊp(ä€9ÈidÒ]C~¶Ê¶U ­Uä ¶ªoën*ØÒ8E§ô½´Lø^ù@W¯©µHÇê×XB uÆOŠ©¢»òZµ ˜oæ1ÌöIÈvu wµŽ¾˜½Šþ;þ5g±±Í#vŸöJ'rìbÁZÅ6ýcC³qˆñ¹¥ ­{*Îe²—#YrãÒcª Jœ$ÛG}Æë'Ü&Ì.ããÙTꉌIòÖ:…C+„>¢«íe¶xËÉ6nª¢W0˜667ÿ4÷&å&w®â€øoúŠ¿“É6þäžeãBA¸ÀˆÉD1¯(Ë–¦-Çé~tïoÙ±¯²¦ÆË`£×§°0™í¹nR<)@™Æ˜Ê[&|ÁÏbðÿÕ'®e>‘Æ07Pü§üRU¸Ìxü¦2³YñU¸\ª·L–˜°“3=ø´£¹‡H›%3MW-w,Õ@/˜½‡¡W#ðn`ÔÙn'Î käÿåF'Ÿ&Ç<àNÀ MwmÏ[x•?°¸z>–gÓÒ„LË!Ö(£ü,-О7ñT­B;×”kè=’Ø“A0UýŒÑ!t™…ÈU°/Ø]A¢O¿Ul¿ì¨±/²ýl}e» ÍÕòܘ'¸ñÜ¡ª-–èzä Ì„1èCXß@ÿ´u»Ç ÿBà{û,çßýÞæÖYãs{JÌ®£‡*ŽO§^”K w*Ûï*¯Æ;È×íæ"{O¹Xp˜*ƒ$[ãËKf »Y±„Â}ìèœ7ô‡B•è­àƒè²¨¿t®üµ$ŒƒÊ%vâŽfu‘äQºn…„lÏl'}¦ËšÅÿðA^(k">ïø˜£p:.A˜/œ*~/9*‡Å™xârÂ~–^Ï! ¹Rƒü?•C÷ZS¾NñAv”5˜¹N3Þú©ß­Õ¡my©þU÷µã¾Ø%Ãy yéìvŒêX~â(Ìê|Ù'õ0ÙPáÅBÃc±cXTÿØ×V‡¹bH½:Jµàè¼WP¡£Èû[Þ=×ù«k¨ç+ÓÙa µÍ*”Ñ5ï¶ø§pêV m®ëWí.‘ù…¤“ÚLhÊ’bE¹ß¸½„K%žMËÀ¦Âb‡æŽ¼H>M¯‚ÿFn‚/ÀK`\äØo?a¬0}‹àp£É¨ŸsµQüDq¾l¦8Šw[9EóÀ,CÎA'®qºù+°Ñ½7ßîšãˆ(·°Âè 8G…“ÄÓ‚ƒøÜ¿@æü]K§Êl!`¥1ºd°Ý*´nB_Ãip­±Uú€¹I‚*¬„ÒÉú‰5†‘ëIf%˜ã‰Rú‚c7ç^çæ²+EâtàƒÈy×;ð‘â\Fñ·Brb03Ó«°Tª]tY¼Gxž%¢W19……îþö®õ²_iKÒoç`ekt=4ì‘î”(ñpñ0ÆfÊlz¡&é¯ý½ñÜ uflfvµ’š˜+ ýÂÇ‹f +ø²4€<÷"¥+#‚¾7‹\FjáQdõÛõ•ŒÁÆw‘¢ÅÉjS ç#bxrô¸‚9æ à¨\GÿÈ´Ö[ÈÈî? ]s¬µè{Ó7ñTBÞa9>¨x±m~Çiÿ§üƒÇÞ gÌ3µp¿e50ɪi+}3¥Ž_"[®Xé-šñL,.š²OŠhòAÍoäÛ”-wÁ§Z’L¥(7}¾A#ÑÈXd*Ò ÿ>òµ¯9M¹)¹IœHÕYp¹c†Ã е‚ G‚W-1€œ‚Ÿ›î*©ºsÖ.çÏsÖŽöhØ’ ¢PæRüÙrùÂ|U¤î‰izÝ©r-uå¸Užtß¹.h|ªè'mÙr(¦mŽ“è)È •;xë>ºÍFZ-[,áày„lo0_b«SÆ´;Œ—‹^hƒ×ðB—a0Dê-‚Ö-_)‰–ÐD鈜zB›£9…îrÞp©=s=]Ö¡Öè+´?º ^#Qò„sškQ5š7€_¡ ûή°Å=ÙbQé^J9¼b…0^&D¯D×Ù¹´¯œGüoüÜVÖ0QÚ í@ŸXVgZìÀSp6Ü ‡¡úÌÚÏG%?Ì€º]†oꥦ·–rh®ó½]c€ó àÚ[$òîtù­€ª“<^£.6kêXë(SÛÑ¡©ö_´|ΑŒBˆB ÷,.²yÖ@]F/ðq´"·YkN˜Ë|’¶‹SðoãnÆ/M_™Ã&À|K퓽š×.ý¬gj24cL§`2Á:Ãh‹—&™nè¿ñ%$fD†O¡jEkUý噢I ê:9*¸×fsŽrœá¿b eo`ÏLߊ;’ΉΊ¿Fcp¶²¾ ‡*Ây³3S÷/8x;éDfxÚÖôY©{ÒV­IîÍœ‡Ý@+‘ìUnMN*ˆúíHùñ Ý”n6í¡ý¬çÖ R®džÁÚpœ!ªiÒuÔ˘ ØŸ‰Ã²F¤ô#v«[@ú ™‚FÞ³¼«yƒ º‹núç›>2Øìíàã|“o´¡÷†¹Ÿ±•7O©<(ÈæÏQ‡ZÀKí 'ݹ˜Oë÷ëÖé{ c,£áÕÖV ÚÝËÌ¡ºÃR!c~4V†cgÿ—y3ûeîf;÷&ï û #‹ag…±O±;¹¿‰¾üpè¯b»è4|î‡7jýIÝ¢fw[Åüüƒ®§ÞËyIžx¸ÞÂÜf¼>huüš¿ PT‰‘v{—ä¢~ìÓÚDcбV/Ôü¤x+§Á·³ÑZ¦¨”s“¸W—!‡å5¦«žþ®™öxW¹ûOÇožjĨ/k;]H¼FŸÅå’Dz·ÉN)‹õ}DùQ½ò?Ë=è#Ý&2ô—wë!Ë"à9(tñÀYh¬í™ý ² ä@T8@h.¼ •9h#ØŒôÀ» tÛðÂÛEòù!‹Ô·Äwå»+”¯x3‰xé„X0ÞŸ÷Óã¨'Ø,]7:¶ø]y0 =2€ÈaTØ7Ƀ©óÅ XÚèŸ#ÞÄ<ÈÖ`ô8‹ÎîÏFÜDæ*þQדr rÈT…øµØÃ4dON—ŒIÌJ)Ì<ÄZ¤w! ¬¿Xõh :غÖÚc}ûC}×á!0`š§¡ :ríämüIÚ_¬³ó×{t®“y»‚“+FMsfY—ÚÖ*h‡ëúr†áæRr%oŒŽŽµâVŽ"±+}(ãòÑ–(dª¨(RS !L8pnÿVB?•,š\b>#‹¥)T¡Êzåb½ÍÔ¢C,`³éc?Ógó8Ëa§X°HiþRæ¹èDF öŒ%>&šîW+uË‘¢£¬}œ8ýÛÛt¾#ÍsÔ7%ïQ€™Ï.(+:\t·hX ÛÛ¬}.¿µûì¶[Ú(Ù]y–KĨÞ›©¦ àDêžãˆë¤í_´ICbU0!]6ÂxM#Í4ÜtÚÂ6cµ/áÒž“QJßCÁ¿‘PÇ2±\;ÿˆðÿ*×Ì'H¸’YÒ2ØV„Ô¨sÉ;³­¼y“Û¦Õ<Ë+Í“øö9qP¨Ñ­ýŸº¯Þ …¹—åá%f“4’’t%i>ïø$÷ñ–±ù\T’ª{®®xÉRã§a„(ò d¹Á^̥꿣œMÖr0¸]]¥Ü­ßøA)ðRï”UHÔJ?XßPïÛè¢2h§9J¿Deäõ°”D´0¯ŸÛ§—±‘8”rÑÅýnKŽÞ`Y`3¹n:Ýö¡È8e4+‚-’Ÿ±ì5ßQ*¦k3L 0 9í{ ‚ôµaxÈDö!ËvËwôût22È æñ½mÞ…>)°IÁ• dÛä$ö°Œl½ ã¼ìu]øÑl ukŒ4û­KQ¥i ƒ Þç&’°š=Ž8çøÂtyfWÖÿøËMÌ‘¸õ9ò ìKÜ'òpî£+€)gk]r[®KæjÓ;¥ÞÞ¼9î­Ö%¶_mSœãµ–DÍ'^£`°,ÜxR¿Â©ÔÐoZ¥àŽ$OÛªtò¶‘#.Þÿÿÿ —et“†±á w΀aÃW(à i)u·4Ú¤qwOÞ¼Éëoêh)0Î E7`¸‡áúQàãçóï>ç9çºî{_v,·s!ŸÝ¿¬IÛ(-äíd½Ë‰Ëì”õ,]›·° +{SrCª=«[êÕÕ–…WJ¸Xt_ôKx ߬ž¥:%ÛªˆLe½`ý+Ì·mB¹¯©I濈„Y‚E¹6vÜhÝÔ5ïQÑîIu3°;B«) õ e§ ý?Ðm¨wD~ùêᘛ…íØ1ÑTƒÈ“\i‰L¨o»²mjŒMV ï¬‰úfO_³ñZÙÿøßi¯:×B#BáŠ6ø6ËQÁ~ÎÁhÕ,×uô6qj"ìÎ9RÐ*uoâ‚<ù1[¡£§¶‚g&YFcƒ«häqì°Ÿ°ùeºMº?L"›Ú½~‰ÿŒ÷tý!wI÷™ÿy¹E6³ñ¶u.˜‡œA ÍX;çíç­'¹â•Z·«„ÞÊ"Ž"/Ð*Ì.wW·ÔVoy[;¯&£¦CUº[A ý@3`>4'‰MD[²‰zꯥ·RÈžx ¯¤HZG‹éut/šKž!ƈþ”ލôÊlÛí»ÁvèPÿåè‘Éä|(Ë3ÉópŦ6r åfÚ^ëØn?d³˜ôÆÁ®y¥iˆå‰ƒMÎ$üà%M³ò±•"—më[µ<ÜDó‘&ä6´Ì}Ì~Ê6¨ÅoDÖ„ lç éðâÜ”Ë9 E­s°]#]*òð—«Oyz®ÈïñÒ:HK”UÚÎÆÍÆàhº{ =án¥©+õ}ìqðt•ç¬qž©-àÿ¡"µmªuµ+«Dø.8æbXGª6ó{ñ“t-ØÝhA`ƒ÷žá®‘°·u]wWûÞÀ*ßsÌÝVýKùjx›S*ŸÃ4duZÀàZû(ëWÛE·Ô÷~‹}"a"yÅÁÓ°íÈC´+–OzpêÛíAÆ{qü3´ʃúB©˜ÜõEÙÝâööò6ß/fýPvÝ5•èGt†úA0¶T‰êd œã¹@Xª-®Vb%g8ã%û|¤b¼ú?[…®^ÓÕrÚ´^už}µUá4÷!Dá-U×B!ê6a ÜÿFgÓ%áp%ÛåoMÎG~ÁY¸8ÖXŽÙzîYo»Z ùÓÒZ•ßwýb¹­Y\ÇVƒÉV_ÖêüŸÄDÙ[Nÿb9³½TÌ—· ã—äî©ã³g0JØÿwÊî’ôSêçä™ WW~Y¥MbŸsðœôâFA{k±ûºg˜»‡>3±`š´—k:26ÿXï¨K$Xé6†?éâÕ†áIµ¹Ž¢‘ìægêmEߦ%ôDªšâú?Ð.ÿsr6±ÿà˳/PÌÎ:´® ségC ú0r»\^ÁªÉªÃcòÔjþÔ,SlO²²•Sì2×0…˜L'óñú\ñ`~{p"_ƒ}ûUÒˆ”Ö¹Ñü½%“x[Ë& B°x¤Ü$ýhgµÎHgt<Ø; àD0H‡¾ZïJ“˜¹LR¸ÍôºQvdIÝy3Œ+áàE š?¡ø£Ó›M*Û3N¤¨z(Õ²Fe7Ls=Ça\¼ 8ÉÑAWÕÕoÿZû2&­Õ"݈Ô)gÈ–Îʦ/QÇ*^”§‘¹Îm'¡µ”ž®4‘ jGî†]Eºô²›y×ónqÊ_àiÈuØÇSapZ w𶪓@Ì“Š¶Ã÷c|3<®ðr¶q„-{M¨2G}ظðYç Ë»š‡º#‰ÀhÑÖ‰òÎàtì8´ÍÇǧV.Ù2§¶_ùI$È?ªv"O´]'Riæ÷¦+.›cªs¹ªA½Æåê-AEoy/‹ÕMâùÔ/¥þ!X(‚ì÷O´ ó+wWô $î?¹:+K¶ò¦éŸ«­5Úûò}ÂTÍU Ëë7'éjýdu)ÚÙ²Uö¯˜©Q˜×ëG‰%Eï ú•Ôç?HmL\–Ôœ½)´ A÷‚ÿ‚y:­!/œ¹žã‰r†$ËË`weÞÉuæþQÈg]Uœ² À9ÞÅ– áøüsb½‰¶ts-A6¢4ôƹPI ºäħ8óu9’NcæH2áÒ)ÎÖTUpe¢Î‘Ϩx*ƒæRNBE¬Çÿ…&Y$yS×ßJ\˜é`½1ÿhSu½òN¥º*³<‹Üç~¬š¬¸Q„ À ¿³°—‰´æâmÒR½#R|ÿ͘_vÉšŽ¤c„k‰¢¸8?s}΂âNœ¬ ¬ÙœãÌ%ìVe·u‹ ýÞŸ‹ß×;묫,Ë,à{è‰ïpxã‹!Vàqx7zh¹jÛ×½¡Ýè±n=xŸ@Ï¢GÑ»©³ø|=Öï%–Â>ßi(CÖ@ã¬ß›Ç»“‰qÑ”ÊÁ5CêDÕ5¯cK*~-_jçÏÉCc‚_ƒ§"ÉÑÅá>þ·d1ù#É!{R ä}ÜAl"Ò#Bxøk¸*Äówó¤s¨“E]!kè¡Áçt6™€Eà‘ˆ†%À£ Dè(0ß±ËåÄöæ°Ñªù$»*&m1Å ÏT€†i% äø=X’÷Ï5ëZõÈ•MÅE†g†;žQY! ~Ê–¯~,,:”jëHTÝt.R×gk¾ˆ7©#I&8^>UBÛ}-Ë,^9ƒ>L|Þ°Ï×mv¬Ñ+ðµ~ } ƒù ¯”±õ?Ü`.‡2*o±Ý')ukûâ¢?JµCž™Fh»Ú­˜8º¤*%ìq4ŽtÌtÍ RsYư‚9â゛ζ¸œÒÐ7 „èE]!4È¿ÜÝÑ2PÝZÑNû“EæÜçÙîf{Æ‚àç~Í,Êõew*Z*ë|o[ÂýPzNvEn¯oLO…ç”ÜùÈ´JÇx•®:´² ¹ß§CJ¨6‘‡Ô÷®ÜšMr>+oºœÎÇ«î«a»c좹&ï«¿èí€ãd5~”føçˆÏcyn6“[ËŸG~ŠM®ÐøŸ‘O~©äkÉj_ ,){m™¬+ve‡ßQ÷œ­MóùXÙ€}HÄŸrýc¥\õè{"èI¯¦/,¼¤næ›—êŸÚ’Áᮺ3r®2Þ>Sð;h31Ê¿ßÄ©„òpN «è±vE¶#},‡-k St£5bm‚~ša½Q¢=,£Êαd”°hö@9 ÉÖÝU+-¿Úgiã¸ËسKµ¢-¼RæMæxþ[Î?| ìPß¶vW}TÚã=!ÇsÃ3°Ê…¨zñ[1Z³£e\ΜÂÏÙÌüh¯˜—_˜Z˜ÕžÁÚä %wdÓÍÐ'ÛoÁÑ9ÆÉÏÜ)E3 “¥ó6LHl•=Eu #’hš|ƒ¿ÁŸáññŽUb­°àKã{6ž–›¾£ÀÇläí6Y cKC]»ºî5cé~æB«Œ¶H=9®ù²±,ºl•ÂÇ·xÊ@äj7»{ÁÓÒ‰Àê’Ÿ8Íw-)ñz²3™Ê8ÖɲÙÂ;Ìw%Ÿ˜×¥ÅN5×Í kçýIÄ·ƒ}dùÕº'‘gÛ†Ôü)·?0L¶4«äK‹Î·á=a'?*hÊëSü¸0”mJˆKè’&,ZWF«~’Ä˶šïalj8Wµñ;åZI<ØWYp*oiš,±_š…»ÇøÚû ÙB1¾13Ÿ…ŠÑÃŽò(·±èrQfñ¢gy£²Ÿ Oº{Ç6î(Ø¿߯¬Hö®ÓÞ“ÜÒ¶sòìÒűû”²eyÃs;p¾š9D¾Ï`a§e.®Ö~ò ¬¬ t| ïM° zˆ,…ýð/È ô%²jy€ÕE»Žyö£ê+Ô¶¼m¹¸ü²ÿ`шE¤VÕtÛ*#Ö>|*úo¸š|޶yò€_½í‘®àCÍxéÖËÈ òOßÝSÞ,Ö(>ÂSäe¥žc|PG½q 9ú‹n u¢RÜ‹M™¶ ÄZ8 n«+j/U -"aŸ`ʦÕýbbÙÚØî+]aTY‹÷Ã>½ˆ=¦ÈUúÓÀä{´­P–©|Œ·¯:]u¢z&9ÒºÖÙìm:"ÿÄv@Z_….y1ï¤Ñ{нD6]+”²´Ú¹Æ8Ë)#GÚA¸\1ÚÚßêç;Z¹DîCàlü-¡Ãû"%ÄûÊáÑëî‡zŽl_)[^âÎðÖùØDªóÛn©Jl åØ×èŸp²Y¸¾ÅMYŸhiÇÒÉôNY%Ÿ.OÔm{Qzª˜Ø‹¾Dë‰õÔ>2oë96ã-‘håóè3ÿ¢ÐÍ0—HÏ*kÄ™ÂþŠNÊ}òÓZi¨eµ,¶œ”~”ŒSv–/gìÊ<Ÿo*¹Êlà¶bïÉyžâ+Háld×ɇлÏm¸œŸ€ O®K=°j{dk•ûœˆ/ª~¼Ï­`´eY ŽåL(HÏ=_t°ÊEÒ/¯¿ñû ÄÞ¬”}Åù¥5âÆû`šg¥©µ¼P.çnaˆØå¼ùE›‡nšžHvÛÙD>ïŠ]Dû`cÐ5¾7f%»9ukÖ`V!&4§òF¸[DâÿÛ˰×xs©ã$M#ωØè>¤GbðK(Ùk²¿sôö´Aðî˜Øk(4õô-CÖ9ÓÔäKEÝËnH…úù Lú·¥+¶ /ñ@Oײ^RªŠâ—jó‚Ï!ëQOwbL ¬Ç‚¨¶³Ìå¦6B±XÑßüÁžû-ŸâìÛlY¶EÐÛÀNtœ®FzÐæ^"}<;@¿bÂôK• ¦d؈Ì~ö½ ^‘f×+ÝYoE“ù„i¸e·±‹Ä/\dXì퇕B3›/M‰ä–äîíq÷æ`Fd›ëOÓ%G;8Ÿø‹É»ßúp®w§¦ óié&[–CoPkP,]‘u–|R®³¾A&ćbë몑3–<Å$a¾â¬úз%f2Nsí¦; –:î‰siå#éþ¾»Ž0¸¯$c•(—8ER”½·ö¤[îYÄ3ê&¾Ø§6‰4OÕ埊’Ý‚hÙë lˆDðj8zö—})þ+¿-ƒâ†J×qvtÍí“_ÅÆã«M·Éãª-ÿ†ë±" ÊÊPÜÕÌ4ø 5¶»îS¼ÛY5¬‰RB/|Wº“Û'/’÷9oR±˜[Ï«etÏ.*"¸ÝŠ…³75³JO+³Ogërîäg”õ_f¾H¶Ž·¾)+޳J!rÜ'öøÿGÏ"ä?ŸÞó7°Âй´9otÉ!쨵‡•ÿåÿVpCÁóYªoo¹µýëΦ½k×a\#=máO(Ó³NI /ˆŠ¥]t~Çg‹÷8ÜÜ ÿ‘56©2[©:ŠU9j^U} VÉÿÈÐm:’|#eÓm ‰äª8K{÷ ¯˜g.h:©š€|ˆl”ŒÔ³ nÔÎЖ°>Xì?dÛíÐf<^šJÄ7ÁݽÚ•Ãê?íZ¼eȳ6Cûi7A{W:üއ®3Þ\Ìááj·J')#Š€|¦‚)­nPúVЗ£ ÑÇÐ\ãbÝ_ð„ÊÌŠvô,d."ŒÞõ½PY53퉻Ôkäôb5Þ„üåâhލ/)‹Õ&ù:ÍgíxE©"јïõ{–[ÿ¶ç[^J:³b?0—F¶T<¢g Ç\­ÀÕ߈ÒÝñ¡Þ·¦{e»÷˜Rñ]уÒn¥G¤W_áÝî;§¹-2˜L©>YUC´`nÐ褵L]{å\‘Q©çj…MÖËhB#~ÂgãËèÓT{@êNA;ÿ¤ÿ¢š‘A˜«Ã†¢à³MòYʳwÇ4´‡>çb^©­–׈õƒ$ø“î\šYj@’%³?å 9E‰…é¬-Œ_‹÷âZu=zöæÉaumÃð+G6= Ë4²*¹ÞX¾c¶°æ˜$Àp×+}Ü!"¸K‹J2ÁÜlVñaÑlá8Ρ¢¦ÕºSk§$ÝNge¹³&&Ôm2§?.”‰DTÑžÔv‡nxÍË`_z]Al¶:õà}àÙÃN‰bÿË P»é>®¿™“ ÄœsÒt÷GìQp~]m«Ê±Ñ¾Ü‡÷Ä{{²,ƒŒ…š‰¦$¬±|O¥3&¼&~¹2¨²Éˆ~Sµùh–}¡ûš{§ëx@íè;aø•OSÐ ”Øš/’. ÊüA#•–qwÒpšƒ?_ÖÄGkS©ÿVm¨ü_MßkùËšŽ‚ý¼ËUE¿—N-œ‘)--2ïmmø;€­ž.™¨r£_\rô³®Qû¶yc£‘°×?ÅöJÖ¾bÝb¯WÕÝ.?Ku1¾o¢G£xhvÛÏá#tEìC¢C@÷¸ï;_¢ÓÀퟜ—5C*eöš[ü à*w´#ž;«ùÝuÃHƒ•Šu©70}¼”¯ ÇÚb¬Eè^ì4VŒ£èà†áW¨#ènª>HZ8¿3zr‰—SôÑgKkéaîv]”P»o‡$õgœ൦eÀG Þ ˜ õqÆdkw+ZJšØ‡ŠR*Þ1Íæ)ÞÔÈ<¢#¨E†ãw±xdTdI‚Ùæ KŽò¼ðaÝ.jBÝg®“£`'°¤-@3Øl©ƒ ‰¡x©õ“ëQ`©¯ÂÝöš‚³¡]&¹ê¸ ˆ9ºö k‚¡Ÿ…œVV‰Æ³OÔ!ô˜ÊeK¹··ñKÄ)r·3BŽÒ’5»‹—.Žf£©´œ¾%s 78JÆU„Øtƒbwê¡E«íWx°ät®|ãÌ´CUÈgÉèyQe­ü‚e ·ÕnÍ +siÞ²ô·å~ÙÝTõgyÊHjŠŸ_•Ø?kW6?¹`õÛuÓÖæ¬ø‹"*µäwÊœx}ãô´Ëùoʯ3y;°ešÅiXiX™Aƒª‰š_z²æ ?žcP³¾ìcÁ‚/¥/_«í¢çƒ5$„FÐNh;t ñÚ¾€¤èO°qçC?…ŸEw‡èß}OÐ_ù/… =ÝÖ±awý·§þ©ˆå*·™‘J«.ÝWy‚QÄê«{ŒMsMô 6øzùrS¢ÃÁÞÞ°û½oEèeH­vvDað$‘ìäÚJó\‡!¾¡‡æ´Ô)<ÈÝA=T¾ˆ²ƒ¥–ìSÊÔ X*SÞÒXþÅžØvÇD§^ñ ÆzÁ7@£•ü2ǀƭÁÛþ?ýƒ]¼‚O앬ŠM…-Uÿ«íÉ&ë\ÒõNiS¤_Ä}tÃtIuVuScW›´/41ª>)º`ÖVä³·e]MYQ-CáJÿ€ ì5ÞÅ<"t,ÄŒ&0ÛtŒ ÞRi8N~…ø(ÓSCÒ&ò/ëã\íü?¡¥³jÏó+,ô¢^,*\ |t¿v_tˆÝÏÉÝÅnŒÌ‡ÞʦЧ ÿÖÇÂ(º;2ÃK˜v°lu/(T†CØ øS_JœÁ®ÇMu'E ßç>È8CQ+ºRs¥hLu©fTìm —Û)p9Øl>§ïÍ›aˆ”;§Ù³‰áØ{°Ôt\]¯ÊŽ’Ðt:S g&-EÜ-s÷¿ŽìŠÌ·YÌ#5TÝc üÔ²@-–¥ËçI<ÂÔÿ•MÖMÍíF”ïC#š?6ùœý‰X[ ¹>k ¶˜çƒ¯Ìçà;F•æ¿NÐÌ4=RÁi´Xè`¡›º£i-òÄñ8Ø=ð_8+œá/…pÍhåýxÍ0vÚrª†ñ ãšz–é?õA÷š#”e´í´?*VWŒb:%.`»e:² {ô–ÜÍoˇK™ïòGlº m.ì\¬ÎkŸÿ¨ºç:rÇ£#6‘Uf6N±*émú•Ú^ÒVæÄÒzïGÑTãx7|¤­ ˆ®®²0«¼ÄªüÜhy\fîÏþ¶©1±1ƒ(Óþ(Ù°¡lÝó”¯Ù²Â ÀüÇÅI%³ò'§:“úå/ •x(;9ùqj«ò‘r©¾Ù0_9Ù…ÃH¯3ðú2Ÿ–6–ay¶”Pj}¶½¶³!ä®PÜ1ö-ØI¸;LÁ=;‚s,~«BõÁ õô§z:)ûA»}nݹ¥„E£QS}Býžh·P_÷IGصÈ[è>åðRùñIÙmIóX嬚Ýubn’dŒò•|€¼V;É Q]ÐØc0×1=à¹ÝXf&·ÒQ3N5|Çû“ÁmyõË·¬ˆ p<†éÖ»2U.O1€æRë¥àË@“+ݹÞ^ŒÏÃv‘;Ç,GŒò´:ÿµ—ØÎYÏ»,áãŽði>[’#ÍyWõ—ÒAXBÿEvù× à±X¬½‹g¿û®6wÓ ‹Ö&Ç*ß=w1þY¨y…TC+^)Ü-èo®t ˜Bœ`›kÔ[·VºCtP Ë·}Oþãë¼FED\4k½Ù#_ VÃ1ØW­WtQØÁÂóþ:帆ß@[ôç ¥3¡ü’!‹ûuXèÑv"õî3¶~ˆRz¿VÊd1'Hÿ“QDã9býóyÃ&$™¯kSöÓ,PÕð´u¼Š?Š—²»˜úZG6QÝ7n.ïR UåZެ4{oÇ=Ûë4û^g¼ue™ô°à¬®•ßÈÑqÂíÝ)>Ä?ׇm4\S%›n MîN–v•hºr„j«bç|žGd×Ðô }\vÁ¢ÃÑÍàVÓnóró_æ(ðÑTRa€¨%†lô.9Á6Öq n6Ï6«à$HfTõð3²Í³)  -ƒ>­Õ—nR¾P^ÿ#Ú!):jf€ Ù  L¢w¢4ÒfÕŽ¤N¯¹Z]V3G¯’¨DJ—\Wû{Açü†r!eeQ~Yy%m8ç)'£¬¸°°dA“®}0t‚'}¯¡«-Éš–¶–:XìçHj¶ÕÎæqxQíTÓ–óÀWpŒý e>ÌdoªÇï MRbÁ—)ïªF—©Dx]êàôȺÐús)G²³/ågVØ}yË*¼YÝsÁÂëÅæò%£Š]”z6ctíÚÚc5|jsï³Íá¼ôìâ²Îŧ MD×õʳþïz$cöäðÙ¬C îG!‡;Õ€óñADü;xÒrÜ"º›_šÑžÕõgFŒ|ëì–Ë)nÖdZªôh`íÜÉÄ.¼¯óŒ—œj ùC¥á=þ×)ì4ûó"·¢C’ës"ƒÁ 28)pÊÓÍ•f½MÁ5àÅ]"áèl™R*Î2X‹kßs_IÍò˪K£ï£~¨n^_óõ‹NöÞã43ômªÊödÑ çÙ¤û›^ï;p€ïÛ®ÞÊ{Îk”À,[g±ç¾Dý¹k$6p¶‡§‡#¡…‘³‘Ûáå¡£Þ9/ãû~à;ë¥{òórJ37¦÷,—K/#oÝç}s}×ì7í}œRwÐú¿Ü–×ê ‘8"ÙAº»õ=%¹rÑM™@¨R^PÓ4‡…­šƒf&´ß¾ƒ|c!U° ½°w•x!ë&âˆUÎ7©Û?:^inPz—SªO³=º\b²õìwç_hÍ´¦Û†:*‰*ÝÖÚrîxÉ~ÉvÑ5õô³w´[êüÃ}~mx¬¹γfûVD;Xý›9É2ð(KÅ ´ó™p•t¿°!h5lÅÆãgŒËL þ¶iø‡¹¯~2ÄE^ê0Y¥ö ÐÑ솦!M«TùâÛ¦ÞÐVÓÓ6p%v Op}võ¶wµ®G0óTý ]›î²qŽ¥ þ‹ìàÊs´ŸÓܪsÕ]büÅf²ž3–×ô­òÓO² Ʋ¾VýXŬüHY]×H›^keBªƒ< ôVxëš*7籋å•{e·Œ£ÔíTàhÑ”Üe”‡Òlé}ʲ¼ì’EÌqÊW£Ž¦‰Ó²‘„N/\šMK¿]ø…µBø€™Bû‘s›WNíZÙÆzÇj+èHKP¯KÞÜ9÷]Y1·EÛÎÔ]|§Ú{"ýq~i©7'9¥5í`ö›Ü@¶>->õïlqy€N¥gÓ›+«ÊÛjûÕl,ðf\Ù¸5ÅQ~]9[ç^ƒ½ÑŒ–Pµ|ô‘gjPë“á©ê$Á ]šƒ¬$èe }íâY‘#G#º-‘mý›Þ:2ÌõÑÉ; ’ÔàwÑ5Ä6ûDÇoZèuh«w¤#ÆÚŸÜIÞtÜùN]kãzNhÿš×åYìZh݆í}7SG¨bý¢.6‡ÍÇ-{Í“¤ ìVáÑJÙTmi„¹Íð¯v¸á xícDƸ·ÿù¬A-ì%w÷Ûû¥Ñ]o¼+ŶOÒÄõkÄÌ@A´gô@pAàDèj}uêú¿" "Úzjýß‘µ‘†piöËý¿{º¸‡ørëÝ3)ŠÈ•c¥w 9©ÒìÙ¬ 1 ËÈ~îwž|WW§Â±Ú}ß1Ó±®])ÿ¨îà¨ÁUä iK¨}J×T²›uâeTÔ‚F®9z8’¤?źV9‹ÉÐe€­ºjÍIÝt°À8JË4î+¡–.ÈtaÁ—Ã?Dú]Ð}ëa{‰ÐØTC‹pŒz.>Õå%VkCš³®õá±d¼1G±\3ˆôÙº[Þ˜+q ¹š‚ôÂ}¤†¼D®²FMÄã%WùV“ØeúlY‡uÁ‡¡õàSÝmõÏŠYœôk§ÊqÐñXg"Hö¶ç‡-{4í¹™Œƒt’•(ŒUˆ[-a´œ^¡,¡ +ŽÓ¯qçQ”¥ÛøåìPÙµ,ÿzg¾”¾9J÷°î)ÍôÞî’Ž)YI³”úÔ¡©ýr¿æ‡ò›Òkw&‚9ÿ+ßVõ•žÈyÈ7ˆ×±•wòó³2y?RÏI‡š¦j¢´™ÕϤ¯Á¥FˆÈv=†úËs1Ã2ÏàP7ò­æ9c1³ÅØl_ãßšýVß¾aTý`ÿ3 S¥%—|.™Á~¦lÕé´?=Ñ7†"ãÏa˜Ó1ÃFC‘é" ϳ‰ƒÊp;¿Ø}ŒŒÇÏ sÑð*“NãѲ óT_¸[ù[ta„Fl±±±ü¨°ŠOÿäóÄçå»4>ãà†Ib™î˜þÄOð÷pGÂBĘNª®š¶[OùþõÍô•““´vþcÙ.ä¸ÏÚJ löfû%ááÛ¶ŸÚ>¥þQ°9Tœ¨õ¯ð~pïw'»Ìî-~doÓ­¥‡âÕ©œL~,÷.e_¥—Ãö®ãÁV·ËyØyÀîn‰À÷/³½fŠÉ‰-#WB™L¶BuEÓ znÓµ ÚŸÖat×pUð/ÍT=P"ƒíÄ3¤ i™EÐÐËÚrm>´· ù/™L豬ë5{‘»h.(ÑŒ¿àFe9ºè ÷[4UvWþ »a]jI¬à ,Xàÿ—k}áo %xÍD tÕ4Õ(³HP ¶{[à«ðÕPƒážz§n‹TPÃ|Jkø8 þŽ Gè?¨Mƒ™r™Šê.’&íVm¾®ƒá¹¹\Ý´|µˆ ÅŠŸêjŠ»RßIÂú£YFÑ[1^ i+3¼—˜§/WíÕvЭH,¼écµ:²I>A-óXË \¶*b9Üz]]#£VUwˆ¿X8Z¶Ypœ3Xt\â•§Ê]†î–Zø ¨´Ü³ô%¦[m¸šàZ—aÿ¢Y`[¶‡1šÒ­ŠEÿI°Od’Î^áæoä•ðsx]¹ê~¤•ÿ†‰ÐÑæNFé)z—aûlÕ¾#ð]3{Un›¶ÿå?ò7t|¼ü²uÙ1¹¹írveë²´íô÷ÀñÚ«2~ͺt"uZ2±áÎú—÷n“În*O·ùLaCQÖT>£Ìž®K ­Ÿ<2óv6Q<¿ö…R¤ú[vÛ®D›ˆ&æ$ßÏl.U—ñŠÝ9”ÔšM³ÓN|g| JÍÕ(rÅ]>ÆöJmþÂìÄžåÐ;Ñœ/š+ºo¨µ–‡/G†ù*1·|í_Ö}sœw©ËÒY#Jé‚çȈå5R¼Á _1¦’M¤ %…I%nÖWÍ5€¦>#noi7(üâ‚<~÷?ö4މ7Gô›¢Õd%>Øö‘«‰j³èÀˆ¿‰¿B ºb\ÐjüÇl%†¹”ÎþÎ!®2û<8FÛ_úY²SÉUùÔß ¿Cç°ÍDt°ÉhÒ—jŒšz5[V*eÊäÒI¦Ç$¯oÕw¼gPo²=ÿÎÊæÀñÀŸÅy‡ù  ª¹û6oè’¯§¿Ì»Â³Ñ­q½sQB«ÒÞàÜÒ{âØÎÇ`º©\ Åë¶ î+À`Á®¤†‡õê†o~ÐuÛó>ðpë“CC¶ ÀÕê¡Z™¾Å4m­D3Ò¾wüáá/)î–.Ã9)».Ø¡éÌwþe±ýD_`©ê“®:‚`Jü«‹8†ØSÌJÂH‚Ù‹âÄpŽ,‹º”ÙÝÔß²Ó’dm&o럫û«I¦·:!8 ½dûD „g¡ÛD¨ÞŸg[ ¬VwWULQžÓG°1^‰?Þý ß¼àBìá¢OÌ·ÔOš%õ'Z‚៥Ÿƒ…-V0èm†>þ«ýTÃ×ÌÄcôz ^Óþ¨õ‚FP¤>&Ô,“1Äê…P“MNöЖòµ¹øtÿx¬FßG’#,Ñ.@›É8 n3»ôJÉZfßÚ-²RÃCËNˆ€GoUðQQ˜u“¶L½±/3˜É¨– pÙqÁz†PìÔÛ¡_“mk…º…úÿŒ—Ñix'ˆn±Â¥– Uó\¸‰¿‡1»j}Õ:úv¹BF(âeÍr£ê¡ø’`Lm&ÕYAæd±Ap"rÒB§(òÇwG]çwÄÄÖü_+àz¿ÙSHh†}³%—j®§îÛˆ$—n¦¤+7O¦ì0 °ôâ~,—¦¯ÜèØ|xS̆¼ Ûi;*Î$Ö]_[¶¶mS|ñ}ÆœòAE?e¬ÙŒgÙ2榬Iç¤ÈÒ»å>¡‡Y¨h‚ú ‘Ù%iQ=ÏVL{V½§´)Pn8õ`âãäŸÒ^¥íÏÕ1»ª1pE÷³ès ˜39ÌN(3ÑRÚªí"™nÆ ˜£3ýÍèI•Ÿ¾¡ºUÚíó3$ó»”ïSÕy'4Ýz14Ö#±S-uümœ³Òk’’Mú·Ä%÷UËÏÌ Ušo•™ÅßÉ3‰ ¹e‚â™J§æ‹ÞÁFb;‘ð ØŽO°m¶mµ½rÌõ—¹®Oê3žî~åþOÁû»؆U«´z¡¾UÇ4.Fž’qÖ# qô]•_T^CÃjÃt rèó´©$F8Ï8ƒ%ƒÁÛîÁôæËò¶óœu®t °Ï¶ÿâÖ¹ë\R× §Ãiu<³­²•‘ é…@bå¶2›ŽøêdÛû® {¤ãE‡‰¸Æ›îdœc•c™ëy<õ'l)ð¾3ô9Ô{Œ+ÁJbŠ}6Ù¼AfXÿ"Þ ÛÍ«MíTþÏÒ?t9ÚAÒ²·Úm@:‰ì„_°4êFH,¬›¢[€éŠvCtx3yžX‡—céØÏXw¤—e‡¿oˆ“èr1.A$fB¿…úDÍ~u{Õ*Í?àiì'G±ZˆîYÁñáüàØhË£\®¬1Î&Þøð`“ç S%O˜¿Uí*êž—]1Dzèá™ÚPÓ³õqX««“ËítñÐzžºŽÎÐRóM‡YæžòrÙ²8%ML1«ƒÀÈÝãBž«#¢>Âðq—+ E;f\ÕƒÊÖB³Ø=-0¹£‚Õ G[z:wJåIå[ Ì'Z‹ÝËíÝE }^åzú9æìŠAÕffŽâœæµTÃz!âhîI׫å§X÷øCDÝ|0L ºû†ÀaÝ8©‚»“ûЍ,Y¨K‚a(éh‰káËÚ]BUÕ¼;ɼ %GY½Í÷-ƒ,±ftà4h¿å¦ô;MÖA^¡ÊuK½º§i¦+Ny¶doBêší›ze²7^ÎË”x¥Ö¢+‰ý6ˆ 6/Oß›ò(k¿F­f”ßoZËzbC¤ ‰uŸmš>#-”1º,›’]¥/LwgOƒ2Ã….Cv‰¹©°Kf׌ÇÿQž0ÆÒÏ——ä/Ïë›Ýw35‘’T’ço`F4O°¹ÖJä‹~@í΢?r/çpª’ØIŒÕòú=XµûK`ŽûRaòÚ׬b•É—ƒñ¨B¾¥,Zð€™ƒ-Ù"nÜåêÚÐÎ’|2üŽÌG¾B_ÐYv›ë)üNÜ™ט¥ÁäÉúÙpGx ÓàuÈcè-rßK¶]ñçðRbº÷@hf€îTا»fZo˜_êÛÀò,1Ê/oÕÖ['ŽÃˆß,09Ý[õMq`Øt™‡™… †¶í°0ÔÛï¹ 6¤ªñ_U—QU’ÙæÖA†ðÜPUÀåIrHI%±‹ØCÀD/r¬-ÁvíŽjð8â ª5mUÔÉ› NËe¨^$u>STâky*æ2ø"‘Þª}*¨ºh~mÍ =¬¿FÎ!•X²‰®`kSMyàxô ²È0#r./ë™ê³üSÕ+êÂ2ì(ÛT÷‹¤Ú°Tƒ_Œ§5“E'è×hWDí° %ZJL$‡ñ¸?0^ƒ4A×$zöù)¨;Η‚—+T«…Yœã‚YjLwÌÂÅ–[—ÚâÛŸ;”šâé€V€Ûõ'µ£ôc,iø*O®;`¬ÐA}Œú"^q¢äLÕ°ÚŽÌ; ®5kŸýÛ—¡›"¼MŸSûJ>À4Re¤=*Äê©k³8°òO%_ÕC3YOè½üþt õ×oü‚G­FÇeãDAÞ™zµöEQÂÉ{VHc3CÞ¿<ãLA¥œ'¾ÎP3ã%kõ;-¬~ŸÛ»Ì¹Ä½ÐöѰ—Ûµfo]±d–æ©Fl|fàõññ 5ÈNˆå‚ùÔFZo‰øŒþôâ‚É–_àvÀÕeå2©_T$“h@ãÈ—Îááfï%·ÜN7›UÃyï+Ó7Í]ü5½¼¬³…GØ"œfršØ÷9z»¯«oñ¬I–XÇ¡Í+\—“²®¾°^’½=»çÆcñá y•æªiŒääŒYá¬ç¹™ysFpfÈ®ò–ÐÞåiÒòÖßÐ5ólfaF(³{ú›LGé-JláÅ YVuîäÍÁDFʸ’DîfyéŽÂgK ?•í¢­ý±âK†;]Ÿ³ 7-cY¥ð^eX 3ýÏζè/ CqǬÉ*SµQXu5+¦ÖtB—Xã}/Üq\%­¡Ï*ùVØZ}OðEÖ‹_M2˜&‰ïK„ ¸ -ŸC¹QÃp3´¥£ ú'nƒoÞ*¯Ê>(W´ÞžïøÁúÄÚß¶ÅúCn²sq ±Á§Ùý Gnt52¼·­úiJŠöH…õ&b£vªýT#3Ú]ð7ã$S£^ ß"ž!ý N”bz™çÿämµ w8~Ä{ 2µRb–èÇžç)öõöu?²_ÃÓaZdI´˜²ù|©|&Y¡‰Õ1$U´E%Ÿ*~Ÿ5vùPüÓ¸÷ŸÛï&p v'þï¼Óô§t†d:+z¡1ƒþÿÿ—exT××ÅqøãÅ¡8„b…Òiƒ»Kš âîÉÌdÜíÎë.ãÏ$ÁŠ-…âîZ\‹µHß¼ŸÎ§³÷9ϳ×^ë׆Âñ·H>¦ÛñO¸\‚6‘%ô!âšãLÕ71²¦{êÛy£ z¨F™2l6»˜o¼YŠNVì´V‰ÐF%RjŽuãÂ>ZðùŽÌlj“Ž_Óјìí©Su–»W6®è×ÒiæÎ¸”¼ÅoæÎˆøÃl¡^UD^‹Ç‡uý­±Ý$Îq­à†ÐW° \M-AX °ÚÃmOÕ#tÝQsãà]AÖi;‘ƒäiÌ›ñQÔ,¬ƒ:&ï¤è…®³œ,]Xf6—AÛ-ÉêH)”ãÈÜmüCwݺº_¶¼xYá´ô—›O%KòäHŠ^ËgRæ?â¶óŽz©¹ÜqÞÖnGçScYÂ%TN(¿Ê<%p'h:d3Ü³Æ 7ðåL!a@ÑŽ®–‰À tªµ~T씕Ê3IÿÐÿâÜÎtl®|w“k¥C~&Vag< sÄ;‘>¬*¢âµ»ŽËEÕT Ò`lÌ^In:S´Š÷ÏðþáÁÚ #2v‹åMÙš4*mRþrÍ"ü½p­|׎ù[“3Jb_lú9µ «jýåÈúX]îœMb6f¥H˜H¯O7lX—Ò%{’«Š(ˆO껲tUíf¡0¢¤6¿6ã}¶/ëϤÈuËÖ~Ù\ÔióȤØÔãYŠÍÙÃgdç­Ì©Ë¹[!IÎX½ Æ“ O©K]˜žœ--U[㨮ÂMrÖ½IX@B!ɯ)^0|ýߤþ %·b«Öx1ÀEÊ•I¶U¹¿É¢,£í©êeÓ·B—®zK…‹-Ѷ(ùÕ"AW’RÆÇjèæ<ã¡ö‘7ȾôF®ƒ+Þÿ]y›àÑà®À”ÀÀ >øª<ªâLùØàGÏ·]q^vvîΦêA_Å-t/t™3ê@|ÏVÒé½¾°]û¶á¿ßVÍ!/ㇱÝömÆ“ÆQêÉõü³/¢<<ð»ÿ§@cðuÅÙàC÷n}„Ž,Þë.‡ðZHßqv7u_†]s>vz±<ÌÏ´§¨É¾WMSÌÍõÄW¯{‘ž¦þŒ„šÀ¡ÞIBìcj<¼Ô±ÙŽYwš{›1ÝvéÙbç»@¯º.L,ÓDí¥†’¾kšЮH áqìã³YŒWA /vVþo¡V~VÛO™­cùÆ±ÕØ­ôI^f™É&B«±§T<3›¶²YBw~‘¸Î}Yгë™&Û•&Þ35]Ô$ü4ø2ô¾Ü /ÒD•—êj>à铹v¸%Ëq•OÇ?eâù þ%ùÆ~Ù>™Nü@}ä>^®{’¨üQ~5;‹íÉßg"¡^ÆH`'uËw”SÚgçWiwŠó+{Uô®ûÃ3Ë9Ú†~Â?›º–å–DÉþ³QÎ4X…,‚g™/H¾XRä×uVC[u7Ù$YŸ’6Ùù9ƒ1];î@‹çô¯õvG4šÌĶ9ÃÈ^n̽{i;oæ$µ ¶;÷9{9×;{±um8ð³%èD9/EL†õòjÅDùC)¨I…V 6Ÿ\œ&” ý©$l˦Ñ*ç;c3` C K@»ÑWÄeœ i§ï›õüšy3Ï]Ê6áçlC$_5‹„F‘¯NÓäÏTÆéúàÇ9»ï÷%¾‡£)×y¸€‘$7I2âÿÜüºà¿‚š´ÏÉ£ò®ç¶+´ó{¥¦§\É<#¹®æ%y©Èª¯+šâÏ•öÕ×ëÓ a’š„×qëã_¥ÿ˜Ý!y‰[â+9’™÷&º2åjÑ΢{yCò±¼­ 9ÑܦɹwóÿÉSÖJèc“èdn?߃SQKèåTt¦Â ¢€ÒË7oVÜÀÕÜ;×劆òoüAZcÿ'=|e튈ÔζBP%ýšqO†!›*‹ëFÔüè/ÄDà `ËL¥–°ß²F®„Æ,fG»Zy,ž½Þôò–ÕbuXmMíß5ѵýjåÕêª1UŸª~(7úÎW=û-cG›j |iýá#çͬŠ$Æ";ÉÝî(©Kåý£|MEíqÖŽa.ЋXý'©%zARƒh8 ùø¿ý'áÒ÷ØsÙû%˜,óÂÞ“Þ{þˆÀ¿®…œ•}Åbô+ju™¼DîŤXg2l‰D~ÇØÎ[ ñÊÃ%7KîiRÀcX*2Ý6À0Õôʾº_FZµ¤Ÿ(Âij*•g=R6Õh¢~rÛèöôª'Ý‘yJͦnmÉYļ€ÜDÝ"_‘K™ìö4û 7?€,Ô¼*%´³ÍM–9àÐby­¾%)Q¯·Õ…Xf$oáž6×éÇô`n³ÿÿÖãôÔP¾,ðG£ÍÅCÓyJÁöÇl³ù*“j+hô‘U+=1âk~=µ‚îÀ50ë©U$Â_ v ÐMõ^òØpã°J¦”bño8«/G<å\þ.XL½×NÕª¡€¸[<«Ù™·Ö1½zmí»ºÛ³v´©¨"ÛÓÉ—V³²¤d¾TiK§úðëÝïcΈ‚+áxx ºdK°‚µÂºÂ>É¢®Zÿ傹T:Rª6_¶‡9~ÁOaÀ+i8ˆ‹Ï±Ÿ•ååKUY ×î1YšL_õ…ª4™¦nöÞ¶öhOüD“Àù@18km@òN߯u'ú‘iØ6â;ö ÿûd_n §³9„è~²†Ù»ÎUYØÿ‘ÓÀ¿öÜ@©Èù¿Ùù¦x£ÃQ‚| ÇÙïèÆÛ»Ã‘Íø>ì-î‚ö9£À ¯b‘zå1 [eE…Åû{ÊzËKwÊKUÿé±Í1çkÝÍg[gº£Vu<#=ö~ÔŒ¤ƒ¢2W_ì£f1…ýÓ7\,N(=¬pê×è;i殈 ‹²ÅOÎVæWe½K¿¾ùUìÊ É™ÿÉIÅY²| ¡ÄÞ ht$’‡¸Kâz~ÿ—7)èÆ;Ù¦éÿ”í.ùAû:‰ lq@R9³ÜàȱÒík?¬·qšì¬"%59ê÷ìG¦Ë®Quë~«.òþFEbQ3$Ø/;BˆœÞ¬ŒWLß°ŠW•_*ZUçÕ«]zW0$­¿T_w¢¦WÍŠÚªêÅ­Gt…»>¸Úø¨-³o´¿¿‹ãö­ws°‹g˜ãJï¹Q¿ZØK.#a&‘ÛÏög`r ž cwMó›=YâoBG±ÒÕÖsÒ½Ã7¡<¬"Î÷\ÊïåÆqË™HæÆþÇôdê錟E¸¥|+~[B Ô/„5¡UÄ(æo¦‚š€pŽr& ñ–TWÚÄLælÜ î9O³ãÁŸ4MêF[i‡·ÂyüvÔs!a,ÏÓ?’µx#uŠô  CèeºAœêFÝÅ^%÷ÖñZ×Ëà²ZœFxº#QŸ¯`úÙù”iâ²ùþׯYg<3•]ÔP(¥%îßqÓÄQžâ(V'×[S@Oåõœ¬üa†`÷£ªµâX ÙOÃáäR¼³:Imu—ú>ñã¸Õ¢Ý{.0_pÒ»éØrø¥3ž|À?b½ÁKuÚÚ Ž5ü©`Îu¾±oÊ;ü¬tä65¿ì9±—å;[Ú« h–ŸW‚©Ì=÷ÏßÜžà—q_é…”ƒ9@mÆ%¤‡\ w°HO°^1#¯}~u/ÇX³ÙÒ‡¿FÇ ÀZÙƒü:Í =6ÀqÊ>¥›õòuš²Õ ýXMo™·l©²›òMÙ{Óèk~¥˜"6RSžžèÖ8*åè>s_âˆFfQÇÐYX-ÉV`Óѹè\î3éô¶åZ/…Þ]Ì ì¹ K4à2dª¯¹»û±Åa¿yø0ÒÚd`Ÿ|gO±°Ì3÷¶î³(,-¬­m¹Àh-$³§Z‡Øy»ÓqøH󱦆íJ½¡Úðiî[ÔÓ¿Ãrç夿÷- /º&AiìöŒI§(ÖPÚwjÀi[ ¶B®ÚZHâ’{%\KÏÏ»ž’›¼qwÜÀ„g¥7å ²~ê(“Ú”Ê Ý©ù\Ñ'¸'Ð"8.x¬.ì°õ`¿Ú]Bˆ»/h< ÝóùL·Œ»Cm!Db ÑšêÉõçdzÃé‡äq*‡™HöÀk¨ ËÆÒ”†NoÞ쳋ÿàëá/ŽqN!ÚµÓ5×Å‹‹Å¹âxa'R먽ì9^#nwmgˆ#ETøü¶#=‚¨¤¸[Ã|Ç=âg‹&>Š-f®1 Ì\CŸØÎè´ê~†O–) îîÜ—¡Ëé»ÍŠ>ŒaP/x>šÚ„:V@]ˆžb£ç«ç÷q ‘éxœÛÁp‚}ñ‰y»½:+$Úx^ðŒØÉó½è ¿§(f=ÇS[I7B'Ü`.2Ïùƒø<ÍzÃà À.-ËL*z¥z/mæ»YîñP¬!¤éh ÃPl4Ç„:ïPW´{|`Oùœ`7f'ž…Å™ŸÉÛ©fÛ$Ÿè/­òTµ_XFÿ²GØ“­}t@Ù˼§¶||ªøÅ³ËÂßdØãHÝýXó äù-±‰ÿêö‰¿2¯ÉgÌ=ÚÊ4Rè!ˆ_‡öX>HÇ–9­+…cSKÒÌê)P8Úš8Áű‰È:õ÷%a¹Ÿ²Ì9Éy úîˆDÛ:±Kâ•’Ûòûªëæ€-ÅüD×I¦.¹”{CZ«ì*—Â-Ø"÷JWk6†jɧB}´+-åà$çȃ &9ìü»³‡#–oCÁü}Œt¬±±]!/¡‹ÎZè9×W¼ ÷ƒìºÆó´r(,ZS-“Õ¸YT×JßÒÀÏþ2®±N¶ß´r´…:£*tZ‰Õánb±œÔ’_ÈÁäzâ!idÎs™\Wv>}Ópǰ,Ý3Ùcóè Ñ¬Ò¬)þÝ4 }AÂ5ØtղĺÍ~Ϻ é |#nSJ¡˜3¼`eRzìíØë~I,NíZ`+ +j!iÐäjAÕi¸é2‘ìqú¿©Lw]åyáªk1ß©D_«àmè'z†gnÕ€ÚÔª±Õ÷Èk*×:òט¸ïc·FůK/˜f³ “«ׅ׿ ñ<´LI’§”%l]»:%¹“?±]ã¿ViëÕ ¶g}\}i(+”[O5œn|Õ¨nœß¸µ>ØÕ˜Q_S7©nqíúÚ%5»Êçy>óõ‚Þ7©|’¯#¿€îO·cÓÙÓäQÔ€Œ'r…C°ü×$Þþ'Ôòm¹Udš Ç@ô—s ò3ù™˜„·Ã¯Ó ìê*u]xGûWB¾wþ—•|å—–莠`¶·†»ßœÀN³­¹mœ’mM‡c½Ñ¡ìaƒ°Y]â—æ:6‘ äsâ8òÈqÚ<^ßÊÜÓê§^’5„…ަÖÑ…‰l|èí,@Ïðß¡ t³J˜&¾a;ñݹÄ+ô8r ?Ã_Íᦗ¶j0ÿÑå÷2,t÷â£Ñ'ÎjJÉÃŒŒ¾èÚáÏ¡-Ô5\f*ÍßT4 8@¶Æs_Ýö_í™$ïÜà_sÉÑÕ4À1ÜÎ<¦ÐÇØâÞ~<Ð&(õgö¢k0;n﫬“îRÓæZ¾"rö®.–CñÆîÖ2[´љڪ[ÚöŒ€4ÿUF2–<fœcm]Ý¥Cì8a›èä_áX!AÎuÎ5fòF©†—®ÍÃu£LjÑRSÑͲuö£°„›9þ€½GÉöŒžiáYír~ËN\Õ}–P)ùß©û–™>“áͬ¿Tß¾PZ¼˜ œJNSûÑ î;•z‰®Çr` š ½±}Ñ/7à¦Ë6º`Y _ ^ªÚ©zªýäȲÌmôÝõ-œ7­2£ß|†]ÙèUxæ†f²,3™´ _Ì æ¶Æcú‡º«º«½ÑheÑÐE°| .Fê ŸàШÝÝìÛ>…ÏÄãézºõ?b0¶–ØO(ñev­•cÕƒèbkª-Ó;R±¥t<Ó–iiiéf“›ãsÙ¾å3¸Õ†ƒÙ=Óo%¦­{›¶vŦ.‰êìç…\NjF‡üa2½ÎQv­t¤­òÚƒo=£¸.ìoâmoµÏë gÒ‰uøõæþ oË•5;j¢ƒÇñ»–Å9c¤QúÈ¿¢Gde™f’<7Ùç¬ý®ñç-ÊÏ`áà´™Ùtþïi?¯šôS¡Ì²”{Q×{KJýäPŸz²~QC\ãŽÆü†žÞF]c›Æ¡—†„6×V×Ω-­•Ô ñL‹\Ï‚e•IÞyüa®0™ÜBbT4É ¼¯^U;¬jn9^Ñ;ÐÁý“0“: ^2O5O–8[CFï¹êKòsÞÓÁ­!*Ôä}AÌBEJζb`º5³†ò’:m¢Y\/î‚/ÈóüqŸøXHæ2µŒN¢îQRæ+õ/„ïÁ:ç¦ éMwOº0RpŸ±aÐvl%³‹Id#¹bÇæû½…1ÔòO?¤J©(üò‡3Ô™J !PÆU±}33¾v¬0þaïÁ(Ýëù”€ΣðXòú ÒU6mSë”ýPz>¿•ü=BN`^ò¸÷‚obà€¿_d_€Jè6Á1-] \‚°Ø;+8#xIPâYˆ‹zG¢v£¥àg›QÃÈèSœàoÑÖ`ºíãXã>ÝgMå`iÃ.ä8ŸÈÈ Ý7æë<Ë ã~ãûlEaÄ ¡®@ºþ™57éo(ó3”iªgº‹vo  À‰h;|u‹Hh¶.ª¬eѰ"W~(ëHÖðÂç…V‰ÙÐÖjÒôWi-‚ådknñ»’§’vȯ°~##}㘀™A ,FžÁ3 Ðî(m7i:ÉyÙzU©v¾“§KGIJ KöÉ?+Ÿ©B JŽhr £5óäÛefëA¬;:žíœäXaé¦Q™”¿kÇÛ~´©,€¥ÀÚÞöÚú}ŽÃà< %8Ž3ìK¬;ÍÌí-íÍóŸc…s2ØPØkì6 +ò/zžƒ D2у„© zS+¶5»Ç ¤·Ñ§è£ô.z=ó„™NÓdKò"Ñ•ÜRÕ£:2(e†C·ñÅ´B¾ ZpsùðfšúÍÛ×3@\ÉŽg¬ìß\¤8صÁÕ•ý®·:‚¶¶¶{(MȈtÖ‹÷±× 1îµ<3i>ì>· îÂÏ[dºÓ¶SD!ŒúMS9<{¾®˹6³>JÉ¥ âp÷&woµ8+³wF âù;‚í!'¬oÏTt‘ÎÓ}±L»´ï5 ó#è9n¤VsŒ@qk˜3l²(“CŒ%:ý©®Øm›’ÅÃÓ;&=ÏX¬ìdòZÛZ¥ÚÂâ~¥»·l ÖzÇYƒ |&I—n)ž“Ë•Mµ·´mWKŒ»lÅvÑòÕôÞ"3%è4ÝÕûË–ÈSËüêjå u‘jŒŠVF¨ÏkÆéNêC¤öŽú£º§j„EŒä\çiÛ# ²ËöI»¨úhòì„ã†=ÒÑà¸à˜ž‚'#‰h,º´ÛËXÛSk½uº½ÙÓ#Ž‘`;Ç*k©å¡i¸åG ¬:³%Hwº#7šŒF G±,ç%M­$hæ° è\>µ|†˜œºš2Ý+}µ­zCô$öX–jöèïËþÍm—ÀÄN‰œ¸CW¬¿fU@)¥ éó+ AIIÆ“|7+"ýv~/±ÝÑLžÄFú\B'ïÑ÷9Nè.ÂÂc.†ŒÃxkKùÍGŽ>›uÚ± ç¡oðÓ¾“¡–[^·wJ=%ËÊÆ”JJþ+ŒK²áC”m5ë-Œ×V›7H—KSõMÃPZÝŽš 5¹¡%õçëú×ȪžUÄ•£Á Ai ï†gŒ§£x™?æš(¾á¬ŽíCOAõ÷ª­È'ô1HøÒ$5´ÂèiB~‹XézÁ/æSݤGŸ³'Я`¸ý"è#h]¸ôúÝEWó÷ÉAs9ùªƒß•À²1fµ¡§1öÔÅʆIè2u«T—5&‹V['½¤Ôœ6Sigë«[«;«ÿ§Þ¥Ü¢º®¹i˜kÖ›-‚Mb}kk`xÔ ~i´þµö3öo#Ï­OM¿ë?ªÉþV¦éné?XO:¿wî†v€ß‚ Á2çAè8 ¢=Á¡VÈÐÝaƒä9‡E )èQtv=“εPô šm±oþáaxè©16w\îÏÊd}Š©+tYÄ-Ü+O'|»)GkP=Pb† Ûûðoû%ý åeý2Ý mLî  ã¢]ëGXŠ9¹F£àÏÍ1)½3Ê¥Óš=Ý$s=Hõï^Ô®IQr¶+H$Rè–ìG®‡Ïk¸é¼†Å°‹Ö/ùù±V/\›¤ ‡ÕÎ$$ÂëU†ZGÃm•mKŸÊÿ•ÉKT…±¹ÏR>Çÿ]ºªå¯¹1á)Ë /Éÿ´¬eW—…Bí|‡üÖ`yði°sÅø è;ì yÛ¸·‰g„]¼”a‘>È5î¼Ûù°y@ºå¬ý±ÃýSåœY5Üí©ç½L·Oå{»’üWÜ𽳤Cހ̋™åXÖCÉù‚¼²”a©_³¶—t4¾rZ‰nÓm²†ßÛŠlM†*S ØêÌïã»ó-Ø2jcw]‡}K¼%Ž‹È%¸@÷c?âOñ<üZŠí$üŒ–ÙCvM^´z–ûŒ£‹á‹¡“sñ‘µ ÑœfÝ•ˆŒð„¿ˆßÆÄRN.\1?íO¢û9nZKíÁ…ÐSøF¢Ô8 &Œ‚nØúÛ¯á ø¾ɼÇV9R5-%¿¨ö€é î{†íÂÅú'”dÿGÍ$öâR:Ûs\ü™èéÜ ô‡oâ—i9d‡#óՉ;óóU=t} [ÍË Ò¿BœƒtrÒÎáŽBx-n H2ósùôÊIUÛ÷UÍà¢ÉyÿŒ.~U˜#í¦7^0µoÉþÀÍüÂsEuh&ÿÿÿ —uXT Æu5×ZsmEŒµ;i¤ÅEDi˜a˜¾wúNß™{çö`ˆ!¤T°»ƒU×Z;?×XkUtýüç<çßó<ç}ßßû'yCó¹ÀŸÇ7pˆ4ò2"F¢±+ÌU6—Äf3Ç©-ÔÍòWå‹gÈvÄÒ¤7˜Fa¨VªÞ Ó{Õãõt Ú{<…F9XùB=¨P¶('‚é¢~¡+ãåvÍ uà‘ „-’zÐWñÜ+ü.»,Ò|ÒZôSOø°åüÔʱ´ûY»"7,·Œ3MCMáFýÙÙ}È X'?,çƒ º¨@%PO2Þ2øCsõmÚŸ´o Nã}ÓYãȦy`)"ÁóˆçØ9"}@Œ¤òˆÃDÔ‰F{™¸š\Õ;TÕ©‚5i3w÷Ì_Õö{hryŒvÃsm÷!·â¨,H²KùêªKÑP…§ŸõeL¼’/È8’¸7ùMzR6“ÏÍÎIn’=\2ÜvO1ÝÔ†a÷ª_ÕœB¯:¸„Êc Ô±Èm(ˬjôlv|c3…ìzê&–5qÈÄô¨à8EÁnÃYâ)}»¼¶®£Ñ§~ Ùž§^§,¯Šß–Žá}ÊjJËL^üóæ—‰†­³Gæ|)lÑ ôY·nÆ2m]Ð\begÖ³‡ØùŽXÒ‹ˆ*Œ±nÕ#¢â¦ßÈ_§~¯ú´â¨R¯ÏÅî»K¼«ßWù”ãN)ý35šS]Ù©ž#eñøHµˆ{/Óž‘r7åíÖuÜEª=0U„ðT…3 ÿ*m×%Ø3)¦§ª‘àD0«ôqÞõµÊ69€ö%»‘» 9Ž Qˆ=†E‘é~ÌeÆŸ·šª`ØzÚÒ߸Y—oìLÁ1ä’9îM<Àg“7m (Mþ‡|•nö…q:|˜ÉŽ'®jZ‹Î€ö‹ïˆ‡›öàø`:€¢m«L¡™Æ¿-þVŽq TkŽÎ¢^R÷q)±*$…D'Ù†Èõ3Œyp´á3ÐUvF׃˜ÉÎpOòôp Ýûý1©5|5¹mþtyÞ¶L¿MÓÛ¼ =@ÍqÏcÂMÇE¼¼0Iwóp["²E'‘ûë¾;`w"[ÎÎ%çYÿFºRb¤¼ß)]¾ º[ùËzsSµ© ¸£xHéY¯°ôŒj¡¶Zk°ï8ïm ›3"ƒ“§/•ÿ¥r€^`GquﷻóÊc†ßMƒMJÛ{„°Ÿ¶u±wAó¬ó-‹  …]vX¶AúDb—´Šæˆ_j°'Ž,=~®û"ÄÅÆÒ§Å+8mEtž*ÕOé’?±/©×VÀº†ÞD/„ò—¥7ZÃÜ+j¯×\ªÞUåÕ:}_:žö!6ÙtŠðÜ5‰Á[çxÄŦ‹Ô±Ê„šGµSf6Ü ìšXŸãŽ¥GÓqô>"™hYŽÌÁcíö+h¨±·4TšþEª(ÿl„Ì+Œ¨æ5¥nÎ!ΚҮòƒ¦/¶õnYÖò´ÀmÊìs¹Á%€ÂiüÇÌ×k!³ÎcŒE†Ñå5/&{µØú šMÿÄnµïT_&IZÄ]KÛÿ Ë$4«-ëì3È™D7K:p¶xPÁcÎw^œàpGÑ™œiÓ2‘yMNÀrPäM\BD–»¦¦ƒÚdOVíÚ8u'¨O?–“uòg¯/ɾiî@ÝUϱý®¤¾´\>SwW§ü*〙ðSúiÄäh–jÿnVÍÖ3[¨,./Z”¥é¯¿¦bJ'pWˆ%ª`°¨ÈËIWÅÚý(6ÑÊÚRÉÿQ3› 15¸ê®Ýìý¹ú­{!ûž !ÏRÇ ¤.Ðc±ÊKÂÞÚ˜ÍñÅ1›Ú„”á6v»3‚ Sçñþ.>¥ GC©<Ã*Z½jOæ6ÕÛ;•Îä{[›Þi Äc°ÞD:Õ×yÓ]†Âs,ç -Úd³Öñ©²£f;Ðßîp­ý%¥…—”ì/¾§¼ƒntwñ좂0ÊhP%ï[w;¨x2ÿDÞ ½Ì<º;}WÙ1ä2z3a /™H¢Z©™‹a˘…®w®[Žp:^‘?!eZúGYO Nã` û‚;eÇ¥¸ô³<X÷C}ve¡f¶®—ñƒ1Ñ‚ØŸØ Ÿ¤§Yœ°ÜÛYOÒ^×#Áwõ©ØÙQOWþæßu¥8à¬âÊ[UË; À¿‘•¹/ÂD‡gäóø¥p‘hV­ÕÅ;ÑsxÂHNDx\÷¼ xã—¾( ЭІ£§Ä¶ÄŒŒ³%¤n8—'€ë.o”æ®ä ƒ¹&Þ×ì¹ÛOä½(Ù*Z¨‰ÕèÔÕDSu¼æÃÿÚLÈ1x°¡¿V Ð‚Ó…ý¸#8ÿãî?UÈ,Ùl¯²fç<ýqñéaÑ q‹À‡Á¯älå€ê5MkðHK¶i ÞŽ3j°`ÓöÏ܉¶-ž5“je^SÅç8ºãÇ_pÙþä9+¦åH¯qOrç—Œ)iá]–,Õ}À’<j÷ìèhüܼ{çð[³Å6Õ5¬úXýÐú´zOƒ´)·ùesÎŽ]å4£bîUbÍÿ6«û§’.o§ÿ„÷)òÊóûp?IÏA#³ÀïÅýŠ÷sž„åâH%†ÓØ6jºC7MuE9i!è¶²oø S£î/]«~¤õb¬ý»2äuÂ"‰Fr\òZ¡<`ÑÑs¾ÄóhU­`ï¦ðÀIR錢î¹×²ð†è¡1è Ë,S<}”Û ðxë0#z+;¢ø@¢ó%ãø>’L J/'IÊŸ©Ö(ï¡pz0:i¡L—õ™ÚÉÙPÝóRx¾©ÅY”û¨à4§¡(·=O)Œü¾Ùó[„.pnika§(Ä–ÁˆY˜ D>Z§Ø)¼™èJµ¶é¾ê|Ðîßš‘U¯œ£sÜáG'ã©g%µËüèØX:šÑ°¶©±é^Ó«ºÛ$Çê7 OÙ!UÒÚIv©[[öžÙ÷_˳ºØº¬ìžM­Á»C[ØÖ†ÝKjîÐ æ=BŸ‚Û\PôZ0µ8¼¸]xR²YœZzV¸G}Õ¸8åËè¹&…b0 –”…(ÂôDŠ IÖeØTË8S:ú…-u;5  ('ªäêò“b¯à»" ïSñÀÓÛIáG4é‚Å¢©r@Öƒ?¶8¢àXÎ_áym›‰«iŽXœäCu¥zz±B£L0Q°D©¹¨¬„ã¥Õ²ëÒ,W0\d_(»3éÉöÑpOd¶Ÿ8ƒÝ¶Ä*¦ “!ÀßêŸ4ÂÎ,n&P*Ô”ë  Êy’¹ÂªÂ9…ããT…ÊkÜê¯$˜Ü\þÌÃa¦!XΠë±ÍØ5Ìh½dÈ3^@ŠÉË,ì¹ä~ç„ÝnW'5Áê°übÙ®Ÿ®ì«3‚è f=>S#(•[m×™?mJž8K*2™Ÿ°˜ã°cs&uÔ>yiC­e7°ÃFg½›Su¬rze¹çž£™Yj} ýOÜK%8&ˆ’.T‡=´•ÙHܶ6ëxáÙI3Ö´Ö’j}`«±4 SJÆd?ÞZ”:Ûø”Œxß =OC†Y´AéAéÁeAõ!EaVåÆ˜¢}bJb¬±þ uq–ÕuÉlrÜÖg¼ù@0E¬®¨‹·ÐÙdшûêÔJžê_‰‚+–tÌ‹Y0`ÁŽEÿ¹rUÀ¿Ã^†uDKâýÖ¼_½4®5ÚøcG㯬­Éí#=f)#¥e²qà8° Š€  YÝ`èbõ1’Ú ªëÒ"Á8ž†3«`rNK'kÁ¶žù¿^òôk+ꈀ1õa(Á(×\Pš&Úп€·%„y¡{!áPgŠ' âtȹՓâ½Rv·šŠ-áøæ›ó.i¹§ê>è~×g­ùâmpÆEÎpÉ ë'wK]ׯÃM ªŠ­¸F›¯áÎQ,1 Ÿ{•;Ów¿Û=lϵ–oµíÞªfSËú]–ú£uIõ­ÍçšyÕæžî[鯢  –¼Þª{k+~Rü¬lÐO' ÞøÚ+eãñÆ‘ÚCÊMú:b”ÛÃÒð!¢K͇‰”¶êA^DÙÄðÃ}¬e“í¢a´r…BnŽv«Ê¯èæ\‰ÜøqíWÃ$S/µH8±X_Àÿ&,QìÔ/Ð?0ØP1Å{Û[çâ™OóWpæIJuÏÌM†gª.À ©˜*n*yS•Ì/‘?¹^¸†3 ñ +Ã71ÏØ±d ÜO%j,•If‚¢A¹}3§óÅPÆÐ“Ðvկ±%E¢QŠt «WÓ9c‹ûA±ÄR„‰á+ÆTÛib9óö§rìµÖz»gí>Ôzv'C_EgXÕ÷å9àc@ cä úBûfG'óÀvNs¬ƒÞYgšö=D­ªáèQW®{ºg¹cڡ鮎†\˜/ëu^t|bÒYÐÑÝ‘æ~ã:Ÿñp}¸x¼h®ì X.éiJ%®¹ÛÊJé¿mMŸé,]‘å^ÜÐ¥ô=&ìLÒ¾Q®µ,BŸ"/±=Øpü¸†ØL¡ÂéãuCZ/࿚Ã=¬çl¸í:ÐzVB×ÞÒ[ÒRh¤¾I“#}%…e‡äSe/e=d%@< ˜&;^7jJ : hL5Ôl).ÌP'œZ39¦=òZd^ԘȪ yàô°5!oC²Cl?EüÑ#âJäµè)q±q“ãñ¯VÏ_÷¿ML"7½ºPSœÅçÉOAˆn $5ÄÙÿ¶Ÿ²¿G’Íx YÂÍ›—Ô?útwñÚ%c–]ì¿âÂòŠ¥Û–ò3N ÜØÒº+œŽìY¿ Žx¸jrtרÒ(QŒ#ùjn¯¢>%s¸3ù¸p¢ø„(Bø…¿[¤‘¯ª 4D5GÞ)¬/Í×ðcø¯‹‡MÏë—ù#EÄÂûê54Y V’öžÐ0Ý>¥KW/ÖgÛ|„j[a…ê'Ç77ƒEêH õQûçgn¹Ës™j™cœa?ÎôqÙ\;‰ÇÚŸ}ÕÐÕ7ÎÒ¤ªöìò¢:Õpê¿Êsµ×F쬪ÃÄŠME)šüƒ¥Cå¾6½ólíðæg k;Áx‘SQ¹²2«,’>FŒv,ö8Ï£1­m9–Íàôr1ýI#þ„—“L£m=iº «ûX“^™à^æXÀä²3Ë~®ÚX=›’Sr–oi’’Yeõå<…ΤGCÑÍØ}öoæòÁ´=ë1ÖŽ¯Êt‡;ž9Lž=•jÞ”eY»I² Oûˆ àõnówr^ÙÒÊÙÕ³kT.pt1gòGL Õ~³Î²‰õêá?zxŠhähòfç¦qÃéõÎ'ìGú1UFg0-Ô(ìše¢zuѰ\c x£´IŽð$ÅaÒ6ýu{'âo¨wH–(š!©…‡ª6r¿ÒŽ7.0½5r`?¬ý{Y]Y“ëOö­fWÐÛ°Xú }n½¡mSœP…håºÃš,ñEÁ^åZŒÏ²ÌZRnU;Ì—ÌA¯"°ƒôl÷e÷NÏ‡Ç *v+ ¥ï0Ä1ÕevøPÿë5»ªì ç![„Œ4Dkÿg+T‰^šdôÄTßð&;¾¢«à z_{2# šU êR@usêÊß•1Dˆö˜:ÞoþȲzû¬§ý“=ŸøNn#bðv¬mCk¹e“剮§¤PYÍPe KãÁi4¸ pHûIßJ¯ËNƒ˜l¹Ì*=-¾/ ¨RQ ¸KqS¤sf–ŒÊ¶¹0f$~;lpº lCÚrae— K˜O˜7ütX¯(]?J­ˆ=ï—à÷lõÀ 7SòÒ‹s'r¦—vWßT‘&—5à}ÈtÛs7éHÎÕ´ÌèA‡öú-\¶vYôòBÿ®•!A9Aƒæ‡Ü »~9lDxjøÒpgÐÝàÚ/A;ƒŸ·†ÎèÍF-‰½¶žØv'ËSä|Èk+Rs{p}Їp›ÿHv§³¼ØCƈÆ)aœðŒ ¸Š£ò¼¼‚xÞôRÐòÚí`ËVùiŠPùE@¦Ì0Å{A‹‹(±÷qZèSèýE&<¤l¡§Éó¬|6; 1,·µ’+Ùb矎0SÂò7š¹À Îù§åy¹';0›knÙ¯UkÞ4Ð.±Ü7ݼ3«§8?¦p¬ä=\é8ÈN!FB¾’PÖ&˜Ã,Ñj`S6êÆW™í}“ª¯Õmø^Ò4¾ùc]VŠ¢î³¿º&U´{­y\Xë®™Zý¥j¨·¦jyÕ¼ò:& ŽƒzQú² i)n—kUÙ-w‚K_–]©¬ÜàìÃ^-ÿX7°>µº°¬\X_Úò¨5yÏø={«ßWr} ¾ðÇ¥ªgÖ牪 onM“×éºNÚ ÿ#-€¹ú{ºß4WuqúÊvÑ¡R€ûº°ë/´¦“ÙnN€á’S°¿m|K¥q¾r,¯ˆûXùúo€c)Eiù-'<×î6^åAýlB‹åBËù„`wéZÉMè"\gO¥rÜõ,ó,tŠ)ÝN÷¢ûŒm¢Em©CB¬' þ&Ì²Ôæ5J„`Îò¢Dc:ö^`OG¶ "b°vóPìxºŒ "vão¨«ÌØsË+ýUco<‰íèK`ÝñX'Rèm©L÷`Lwòµ½Þ\lœ`" ¿¨gè·“ÑÕ³Cvœ¯}BvêwaÝ]ìÝÁ-ÆdÂàÜ\y®êµãZ«­qÖDä&ÚŒvÁÆÛ«1%¥'`‰H"Ü ¯¶¾0ÌÑýÒ}™ïЬय़x·è=Wä7e—$G¥¤¬à¬—m”ˆÿ}*sGIÞŽÎ-ËoOÿgSÀºu«»Ç< ¹îÿ-´pl(òW°8¤>dmØöˆEaD0ñ=ò|u#úq춸ú¸¸ø~ Œë&¤-͙ʙ,€¿ð3J„‚Ó²GP³ñ«þ0IäÍz™é? ¸eyâRÙ’C~Ü@ ha³²ÁÿåÊ–ÀùA‚šƒ¾„jVÝ O¶;üh¨:Xô-è]PPðð0Ã*Y¤+zWÌ(rMJz·\Uöˆl »3++7*O]`丹÷Kª…§ ¥õ¥ãų$i’U²ù!Õ™TúZÐ^ÐÈ€¹¾Ù=Dcáý¤!T]Jˆ¢ß¸Ñ%¾4–ê·ƒùòô1M¡x"òM}~ZÙ½VçêIt´â«Ìá.D!ÝÉÊݧYÅÒiYYÁÊÔ¤TMþ ¾N¿”8JöÃ}ÖÛQw¶|ž•䆥ff6qwæOMê’8(w+øÚp\˜_›œžüOæs®œ·¸°Ká"îMqƒ:Ý´ Sº7Ôº ¦ðæ ÍÜæØ¦ÞíµŠêVïÔÊ'_+ŸTu­²Uœ©ˆ¯Q¹§*¶jfUdµÛõ',žiDG;+Ë’Ë#ÝqîÛ哪Bj¢jox×T†V™jÔç7@;^ÖTyzýkäÚ'vÆ´Þj®&5²ê¢K¥‘òP]1F9ñ²ûž«åwØx<Ú´T2‡;†·RØ]úYÞWþàÑlÑå)¾Š_ˆ#%ƒûj_ÍIFÏzX‰+ÐÑF*­‡ Ú|UŒX%lÔ¥¶x$žÄ,wñ‹D<ãYb½»:Jt¤`sœ2Ù‹7Iò6p:Ÿ-Õø!ª˜ùÌìv:¿aS‹6RqUÑ ]Ò­0^4u…§!ƒÑ|%Ñ€…ZüJ]»¸  ‡’äd Ðw¼«kŸÛîÚë8E"v¹ù<‰’>”› s Ž‹lû™LFXÛ%úg·OÅ]·»ì{žc!ÕËÞÛÞ—ÄQÀð ù\3£Ià•:TÖ5æî¤Ÿs¾R.#ßmœB1;(7† •öw¶»¶ØPÜ‹l±^‚ÝX<ýÂÞˆn·†š³Œ>Úç U\-ë+ØYÐ¥4[*W€ÞrVîÓ SöI:X2_rCüŸ¨“ÇudˆRnº¸.1avl·pmp·ð{§B­‰¡ƒ.W‡d{BªB›C~°®:3 îKLaLALhì¨xÉêÉ • Ñ›_n©Ëtç暊ócJÊ·—o”éÍîWà›ûiý’pÜŸ€ùå,|´Èìw~壠ä`[Èö0C˜'¤)äYˆõ‡¶%¡²Ðñá›ÂN„yBׄím ý?ÿÿ—õ_ØÃ…uݵc±um±ÖîF`º $¤fˆaˆ˜îîî¦{1XcíUÖŽÕ¯…±âÚýòþpïp?çÜç9nÀ¸\½‚Š`Ò¢#3þ*:Vq —;ˆ¥—æbO–í,Ẫ/Vë’ë–Õ(ñÉu}HjZ:;O5>Þ¥¬&ŒÅäag;æš=úõŠœ§U' úÞ/_?N&1²t@…^#sî úBfËcnBù‘Ýûꉢèæìíùå;ë9Ji[^bþͲ‡e¼ª=uTÊ^…üŒ¾ÛBtÛ‚#ÞØå˜*¶ VˈöyâÒxŸøéðèÀÇ€Çßã^ìXgû`ÛéüÅeóÌõo ]D´Z\·Îñ¦¹Ð3÷ًðîñ ® ï Z}ÏߵЀ¨'<"4:xÃ?Êôw¯‡>‡K[zâKmGù¢¾ÂX#öèó\;Í>ÇÞhÌRu²vV©q?WO š™¼éÜn6†ÛÎ%rî1†2½¬)óg{›ìŶtË8c‰º†n,oœØô©B½®zhç9­ê‡ôdâ4ÞF•FÓ®I…‚¡‚ŠTÓ4#T·[;[5J|ÄÅ?à6R [” õ\9@u@÷Uz‰y„t¨ZÃ¬Ï¤íæ‰%Jµf£i‡i±1Sw^ÜÎ.eu‰6ʆ³gÖ””:jrö÷V³Ñ§ÁKEœ3ü¸­†j«,ëlKìfÛbë#í~^/G>[_koɶC¬çM+­×¬ ÖwŽÿÕð!ã’¨ý•{.™§gN•î´Œõ[<­ºé"š6F|D:FyU5ZFW Ô* L÷ÎpCU'í}WªuqU¦üˆô÷>eh#­Ù l Ñ®5­¢6Ò~¡©¨o¨3˜‹è•zƒ  6QN4QˆðÚ„ÍeG·_GÏE¼€Î„,„­‚–€7€Ö€ßBã ™rð;äo° ¦„n†ÌI€RðnØ)DŠÎE­D‰ÑcÑ7ÑèôW[P¹Â‚e¥pþÊÄ }ñºbAѶüYñŒ?Q³a‰ÈgÈE€=+v®x±±qoj_` åoÀ1Ð:  t òBƒ}…l…ä~†¾†¾ ‡Hx„¾¾ÞuA F¡—¤ý›v=Õ™fßù£t}Õ j þ,~ >VÕXîÀ:°e§«¯Õ<%ïkÕ ‰]ä= ¾3Eú†ôgåÇ’ø<­ÜWŽ®ÛÈ™ªTv+«å/«0ØDƒº›4L,vsZþi°¥é>i—ê¿ë·Øbž_¼HÐg´f*OJl ¼þgëÇ*ç¯ÍûÝ­Ž‰Ra`áõ<ì® \ϧ­Õ•«oéæÚ'„‡Åš½l˜²¸ª H?Ó´ªR×V%ÞnꉼŒ\Š}ŠÝ¶ìmÙ?]Z†…ù—ºx6³µÝ¶Ì1×m÷ÖyŸ{m–­ÆÎvÿÈ@qÚœ,UF×Ån…à2ÿ\$øSdh„Ž„üAb°#8"$”DîCÖ“r9ãIc;³@j5ŒsìqÀšw¸~³éY£:WóR_a‚è®ëŽZ?;ZíFç3Ï,[L€©Ý‚ŸN`6èÙ<'c%ýWÎcNu™ÝYÓø'áFÕz»i€g|fÔÚ4ví?Úû:š:_1M»ØRžál®o­V°†·ö'öKÀøI=H\Í\Ë| l‘Õæ¸tÎ>Ö5ÖF X3‡1™šÄH]Ö±Œ>Û +ɼÃþÊcvýðÞŒÜ9ž8&©¼£Èe|av«±Í)aRëáˆV,l¸DzD?Ï &ÉòdZå,=ÈÐeúÍ`V Tü-õJÖ*¿ËÜ7T+¾¥‚Ùp²i ½’>—þˆJ§m¥eÐ…”£”.êqê ¯I@NùH|LØT•YLW› ‡{³ÍßÛ瀀7Rö€xàÂÔ‰€¬ÔTÐðBèrÄ ”z²&„§À5È …¦b’0³Óf¥=Ïpmž”³ 0© †Ÿ[ÂÉ–w?«u;7„Þ²nú°ñõÆ™›&mh_ \;nÃp ú\è%‚l ðhp åƒ:@wÁPh"ä'èGÀdèz ò+´ Ú÷#ú¢?¢V£sP]è"ôz }zËÎ]xì«ê†Ú‡µ‘ÚÚúPo›Ž”ŸÀ’°Ã+{ªûã÷àïᕵ¾ê«¤GKvãÿ)Ÿ[Ê-VTŒ[Q÷˜òH¬oÔÊ¹ß óË,u;¹1Ú|F5€ð’CwDbCC\ÛLƒÍ`3Î0¨Í ]ß{¯ÌSàÐkkÅá{åVK·ã–êÌòZ‚ó5Öܺü”œ¼]GI.ñuÕvý;Ñ÷%29.õç6oÕ„¹£ØNÉÝ#^³_Y¨~®O2˜Ÿ{Ýr;Í2Ç•vރZBm[Ç3¢ßcæ˜/büÕ²©åÏ86~>²6\&D2"ËBûÝomN[¬7ïÓÏí+m –5¶?,z5b O‰ Â zIù$>©å[ìstb~fÆF¶¬ˆGb?¢O"O"}£½ÔÃû79›Loµ&ùDáá9õ{«¬y­+Á³ÃûÔýÑRªü›ã,eÁØ/¤ã/Ì+mÊæ½ŽMÈò&ØÎ®›§¸oе´çŒÃŒBÖV1S–­¡½kÌÔ/ÕVi`Êþ²QÂ3b5wM“«²ºì‚Ž:“þ‰þ “˸M«¤Í§Ì¢ÕR$”›ä äo¤I «WWÙw©·ÙÒrP¥ð øO°BÍ…x“omZX Ã~Àæç¦Îµ‚?@  ÅðrÄ4X<1}~q5 } óOúæÍ«6ò™ÚE­8S•¦âaþ‰Ìͨ Z•‚þ,M™µ©<)°énÒ÷”ßS1IóG@ðpXø\¹ Ú.‚&ƒOƒ/YàKÐ\èWè6ØVxL¿Ž¸†ø„ü†Â!¡(ê'Ô3´s6­Ï_¶?¿O¹‘^»­ŽNÊl°àÐØTìñòA*.TåTݨ²Öü¯"Rǯi2oÕ^¨¹[ˆ“Öl©jÙßÄG™ßjŸá~Æ- wŠÞ0—Þe+¬ª_)莘~Ò.•TïÔõÑb ~Û/î>Í(§Ím¶l~açV›#ößw\?Ë|•z)=¿´>o`Þ®r™)î£Q:]¡Ù±Y½ÔzZë~d©äköZêôâ›òa¶XpAÔ* ŽˆÄ"¤è‰èïW¤+z%º2v#¾»EÙr.6(Z‰Eé-ú8/ò0”ZZœŒwo¸iö¸-Åvdzi-V“Ú˜b¥ùr¢áè€Èê"|1,žŠ\­lÙêoE¶˜cÿÄSZû·ÎjÛÝly'ŧÄM‘6ïï¶sÆSF¶©Ÿþµæ»ñDó Ï4/ÈsÆUàkÿdè¯}«=¢Ãk/k¯ŽX´þ¶x{`ˆe¬C—}4 µY-{œ‹¬ï¬ó÷aÏ@=4ñ<ñNYT¢Sü¤'š›²6á×Èå5—k‡RîñòDóGróÿœׯ.§ã¹y¤>¢>¡Ë4ñ¤¿2n3Ÿ+WZNªŠ²tåù3þ\Ö*G 7kœC ÖV¿¯èí9å3‡¶IÖ&õ²ê’~¶x~S%»S›c+lê»y„†¥œš;ü˜²\¹ÖX¨OT<ÍVÙ N³ÍܦY&--6®sÿðýÜÜitêwë; +õ4M’n;7¥Z“XeÇakSÒ” LßÌe*³¨“C  ¤ñF°¶qyB±ŒªˆiÞè-ú¨nµö7ÕEùŒMjÊ'8ðœúê`v?ê‘v™zŽº‘l&¿nrM= õ/kXÝ.LæôPüð4¸˜‘lHNJ±$[’'§â€XvuFñA>Ш¾7û‡àp8¾y™Š"¢†bîcg<È(Ø^³sPù‘Ê·»‡óËånÛ.O;êNüp#U™2#y à~ʵÔÐ;ÀE ü ¸ÙÞÛ,Ö€AàS È(Hä;x7äp.¤~щhEnEßBä Ä¨}( *Ù†ˆ£'¡aƦÏ8œý[ÎÇüÅ7ð‰µjµ kk¿ãe¡ÒÓØV¬Û†=Ûë™5U£Köå]*ÉløÜ8näì õ4^!–×:‰?X­Ì)Äÿ*¾UÎ#žâìSBÄðšYùèçKv“¦R=|¬`£›£—jU‹ ¯­·ÝÛœWÃ}œHÕzî$º—ó·â”™b÷»)‡Î¨¬³ªo~ ocÁ_ÕcØc¤wMTrtyˤ¶þñG¡ï$Ó*ùxQ?ö·¦Ã¬†×žsÁ¡á<ïþ 6ÖÏŠúÃiÑÔ/†Œ‘â„6TëµhJ¤Ի·kƒïþÓþnï5ÄsÔ ² ·Ù¬L{ÈUâîgÛ¯÷)Ç«z Ž$%t(r7" Ôx½^¬oL¤=kù½=kO µ¼íjëÔÖS­Ÿ[7µ®oÙÿ+†‹ÌõylÃÍåf”u²åkZb¿éx¹^š‹ëè±`'ŒLûÍóŸÆLÃpsÈý",ôVjçp3f tÛLs̛݅²q•##îõµºµÅÊ Ù_’s2¥ú°6 ­=á jûà%µ}ÆRîK–²-3Ʀ´ÒÍ8íQß©QØÞi¥O«É¢¬ÐF-=VGÔœs9£Í%1C4Æ|C³Cø˜ÙÉΖPx8‡UÛ45_Œ Ê(V¯Õñ-‚}¢Ò}†2ç!ÓaBÝ„ÒUÕ÷YS8ÒgJW«W¨ÃêhÈÒØÕTZýÓ~º%Èétõ)£ƒ:‘¶†J¦~¡p!¤ñuÞ:(þUþWþ‡-_1db4ÚV*Rö%÷$Å“=@Kê]àXàBÈI° ú¹#Íφܼ…{A¸q ÙT 31ì´Vt+º,cÌ–/['fí.`UµÕ”—ÎØÖ¼Íšñ”Ú|dSWÊ*`èKiõôÚéHÐ~ C2 ¿@ª@£Àpd"x ~FB‘ðáðs°‘p<Â_…üЬDÝéåÙp]€ê‡¹Ú€šŠÒ¡ö N£¾`–¤ÍÏÀn¿™óe7»luÕíÚ?²šP¤ÆšûåçKs±oËÆc+ÿ«,—…»RØ™ý$ëAÉ-ì Êq¢ÈÄFa7²)X¡[:†[NÜK2“/R×qso5î(Se¯ÊeV"198îÆ†~Äå¢}º<3Ñö^è%@^à‹{¶a¦äãeÓ3vDkåúäÓ–yt’3UÐ]’¼¶‚¥}‰VÎgÍ_ÍÛÂUÑ­ño1`œÙouKk¹ƒ¸#8{1u©)¥Ùê>êšÕ<ѳ/¸8ô,°&¬„£éñå-[è{n·ˆpßïmo—gŠ'àýî™âʲ²µ½7³4‰ŠGšËÖknœ›d-Òí’gÉ—h÷[­ÿ¸Ú½|SÜ!›ÑºÎ^éYz)ˆ?ïmÚ¬Öc-S[X-ßã§Zá­¿Äýñ)ÑŸ¼\ËÒmîk]iùlø×pÞüцw-óõñ@ì…æý2ƒÖ(6~6ü¢§þŸ¦ÆÌ’£†[œk\§ ªçëËLÛqÓWWí7œ±¶î³L5âÔ7E/¸ó„ýd“$x¶–ÔYƒ!?gIiÆÆ:îÅ>e± h˜ ªëüé¼te?ãm ïAÍÑš•b¿ñ£õ©a—¤„Ï`*? kúˆokVèi"ªÓªDÍÆvOCC­+$‡©¸º¯Üª «¢KDz|7VJ6©È¬N<^WÑp›3lu õ¤˜W©†ªÎª+ôä:!O4C´MlåMãíæ_”lP¯3ʯˆ'+¡»®í[ %ñ. f÷úlDæå8éÖ9Pš(ѧ²ö ¿ÈG¨¬úÉêóÊ9FTÈ®h\AŸÇ>BG0ÆQ)Ôj"õ29“Ü@¾D¬'ˆK§î<¶µióÉŒÌä~X<z < ºr#‚LI^ô€ÊA]ÀÐÐ ðqؤӛ:¾€Ù…v"HaZAÚ‹Œ-›—¦ßFëІ´ŒÜÇ…Ëòð‰Ä±¢Íëáà×1¯ šd˦ÿRFރǀÀÏ©O@«Á¿C8 [€í` $ÒêŸ'AfB–AP5d3ôt/ †¬Bv!w ðh: “¬C5a†¤½EõC¯@=B}FMAïCÝB¥ î£¦c.bÀi‹2¦îè)ú^1¿žxŠkæ•U{pð²±Ür06†`©ØUåºâW¹ÿåb‹¶íÚGà3¬vúܦ/ ßÿ¥_¸a(Ç|ü?T\Õöüǹ©5_¿k­ªyŒ1 FnŽf mírýíëô~ðA›K-uA>c £D\§÷Û?xgøÞ7ß–Þª™_p%HÑÚ‚~¸Ú¦Qòÿ,cü_#¥ÑÚØŒ–¯-ï6ÃVW3JYßkS3Ìcš!Žs͇Ü=Íã\ç|g‰|ݧ¶öÙóµý·öÜÜ¿Ö3ÝvEš×8Ö7G\$û3É4Ûb0©%hÊq]¿ÜÕŸÔ¼QORõSNÖ¦kMRs›%ÛrÖ¸N— -Ö/¶HÝ“·YÑ„¸":6v¦eH‹,~±Ô¾¾%µ¥<úÅ3ÖŽ°^µ<¶±âŒ— ãMD ÝÞÕ|ÊÙÏÖÏÔ¥+2¬7LS´…ònÙimƒ¯©ý±Ï¦Z¦ÞfÚ[öZ3mzË%­Ne5(,iŽc®¼æÕæ{ ¿ Tø—¼Vñ‹`0åZŸÛW¶QÜ“ÜW°ä÷¥Ó%Ãÿl6“Q£>.z,º#ß§#+æ”Ô}"SÕíÖ–E"ÛÍBÝK|Ì?¡ùbx ?¤®ÐÝÑŠ,[:Úþ¸ùþZë8&ÞJBý¼Gê¾:¬öWs¶¥ÞøDî4Ð[›vÑü¿x'• –[®©¶ÙЉr…ägO"ãžá¤ñ¯Ñv“p6‰’å—¤ÉÂù’°(F]Gù@G4É«xé^ÕÓ*4#~±nMŠ 6,ÔR}‘\à)ùä™2ƒB¬°Ê‹¤ßy)ts*[É‚³l´u µŽ<˜ê¡¨êªê7”gå¼Ú.K_‚ÉÄ@Ø#ÈàtÀy°3@ËÁ@" ð ø&h2(ì!V¨9~ ¸|X‡jA?@f¢§¦‡2¶&gœË8œVŠüyšý¤è0~dÓÒjKôð(5–“úwêq86œ $ƒ Là1`&(~aƒQà=€éSJØ;ªƒ6AëàÃ#÷xTj-zÊ™yކ‚cVcÞ£hH+Ò‡ÌB¿Dg£¯"Î"Ȩå˜bÌ ôgÔÌô-Ù¦²¯ÕëiÆ>ÊëÖšJ@Ù쉲lgù6l3ŽYƚʖ×hk¼e¦MôHÕºšúšÚ/„o¤MœO< ç,CÈ*¡®°ß >Õ­ÉlE²àEG„1ߪ?©Tx}Úî÷5Iü×öu±O›ÔV!¾qågtk¬ëAÛ#;Õ»Ò¹Xë©yƒ$¯0ýPÑ—ØmáqsÊyŒÂ¾…ñBkÉúuÝËæ±>‚ÿr87No½Ú–Ÿ†„Á~™•®éöa¾f%sçòŸp#ÌÅL»¨H;Ïy.˜l0zmSXì/ö÷UøÎy™ÞÕžÎ6ŽåOS…f2/N•’¬'ÍjÉ(¶NV™T©É¦£%‹{7#ŸnhÌ ‚8ÿHÎkˆÖb×׿fk¼û“óµƒì8î 9ç9Œ¶[’eˆå5bõ™ë³Ôg•hM¾Ò˜m¦ÚåÍ.÷YÏi×Y×Fïž"WØF3îÐð5ãùæQÑ#¡ïV å¶s“â¿çÛà±YNëº çøP^¸ÐùDkWÕP­E—`8!%×Ùª”\±¾Â<Ö‘èaXEÒî¥Ð–ád3©ÊNÙEÓ}w»Ý«¬¦g6Ü Gä[tseóxóXË „ZæárêÂÚuÓijÉ Í È‘jê&©/iïë÷H»åfCªa‚¦XýF-TÝSªÄûÙ8!ZwÈ”` ˜k-[ ˆ¥´©” Ëñaì³âhIr…j¶¬›5«¦«ŠÍ\nHW©züþF=i+óˆâœvœHFÒRðä~|§:ÿ\vS¥2ް*ÿÊÇ Î ©B‰è'Éï"¼`:ûö:Æ:æxæUz6ýíMΆ÷ø¿ð» í™1—³ó‘ùÈqàJðmÀM`?€-õXr^JCêP`.@Hû@å`#8z Ì„œ¿.EŽDÁoÂþëQ¥¨É1ƱíÀöþÙ3¦¡˜,4µF€ à¨Þmµ^˜:1“\4ƒÿ%úƒh€O€ÐNàlÐà+ñ  œžz!å~ÊÁT.D ó!Ðp;rŠ©Bý†„cLhò;b3æê,²u™ˆºŽêBLCT@B#Ðyˆ1ðq°Í°à$è[è xb:ZŒ‘£Ë¶ö+ WüZW¡'uÈG0T×Wɪ—TËðñœêIøøÿêçøY<4ù.)¡¾£º/ñO>Hþ‚#j|Æz ýGuŠO¨¾]v”Ñûú–EÜŽbdÞû†AüÁöS±É¾BåtÒ¬:K¥sž)¾&¯å¡wq€d5Ȧr1âÕEc‰ÓèûhVŒ$ZÍÎ;³+¯ðÆî X,i¤üˆåµó©wPÄÔ²¡5£Å]ÞðûS¼ëny y1.T¸kw°¼«b}¹ªü>±G´ÝrŸü?ÿÿ —÷[S‡Û‡UÔÚZ÷¶V\¸pÔ‹™sNvEd)(+EöÞ{œ$';d°‡ WÝZmµ¾_µZ·ÅQGÕº­úúÏ0•ÛÓøX0Lž/'ÉŒòZ´YeÒ›:ͬ·µÛ¥OD ŠEHñDz†Ïå`ó¹›y£¹tÞ#öffÊŽ’ürÒ(ì½” €Á±Ðuh x’P—: Uœ¶ •š\•:u)íj9èFßaªÑ·¡…講Ä!Ta£=øu¤ñ„n"œ™¾éáÆ‡Š3Y„üG‚“`ÆÞÂ¥cߢÂIwÒÚR~Kyš,O]ŒR9¨%@#Šˆ*N£¥BM@%I`10˜LAý€|윿†À#Î%ä§§g¬#í&&ã'ãfb \ì5ììo˜ëXÎ=‚ª€ÇÀ P‡-ÃÓ2zIC¡:°hŸb¶á²ð+26eí,è+»][Ìå쪓WõÔ7SöÖž£î¢í®ÿ±¦ƒšÄŸ©šl‚ÌÍWÏW³kqòµ¼µ{˜Ï•CŠì`•¦bŒä… LÒËëVFøßáÐò&ØX/¬¤uÒ³,”‘ #·µ©ð¬€%’™œn¦Ëî)q¦åö;®•ÁN_òмžýo ­°¹˜UÙØø³p…¦ ~ãú/èkyÙ1©ƒÙÊiYç¿L }ò¶ “¢..G 7]-•–üW¸Ç9v»ydÓñ¹×ù=pÖ8  !áŠÈò–‚–ÍÉ‘œÀ^Äç$¸Z\\ç"»Æ¡q/ñ~6*ãj¹¹Ø¼º*#µ„úœ±UtW¿Ñû/7%…[Cé´ä…q”lXÊŽßy§ª‘‚âýj$y›Ó}×½¹±ï¢í¤ÐU)¨œÅ„eWBGœïNtRÇúfûýÎ]+Û'¶&´dze5ÜßDŽ æôè·À™ã~ì} ûë¼rWÒçì@9쮉®CÖ&s½Ñª·ªž îÒ/qÐ%:§ž‡Îú¢D–ǹ¯Ûç* ?Él Nš„#IWÌ–OSÜÓo„3‘ÿs|c,0ͳƒžé–¡¦oÕ¡„:—¶]5Ç–èa•IøúQµ¯É'K5÷X^é®)ÊøÍlc}¯r›Þ¦y¬L’å+NiâmfSŒÂ)š  b%•æÿsI-ùâvæqN†î‰£)…¿XB–ÓðwZ 3¸ÇaS^ãPåhÃaÍ3 W.+Tý£:¯Ø#¯18UÉ>Éy–L!)äñrjù%ÜSÜX‘%aòk¼EaâDLªåCs€Ãà)p(æ>z*j;ô,B-DMHu£¸¨JÔJðNÚ“ÔVTø-Ø öÇŒÁ’Ñÿ ã’zð 8ýNŽKÀ'7dþ³aú¦CYþÌAÄŸ± ¿’0ÄñÄû˜}ÉÕÉGSh©¸Ô)7’I¨]À!ÔZà”¼šÜOÅ&!¨IÀàG@” |À*ô  †˜LZAšKˆ'rH²ôyø™Øv¬½}èö+Á*ÌߘÊÔ2`O*¨‚ž Í¤[+·Ñ2žbTLÐbŸ`¾ÏÔeÞÊ'—W—ÂUéô—;w–Vï×XÆ×ÐËJžf>«FCKó%ð!ÇS_†6ïa'W?©LSв*U• ü¹švÉg—¶W¼ÉlI ü£=)+1ÅzÜ‘9–¡½¦«n ?FtŒ«d¥6²d6«¿éZTé m€;•UJв¼³Õ:;v·±(’÷—ÅÕÆÊŒ*™v¢m©ÓãI Z¶é[Ö5Ó\±ŽËÔþÏîÕÿ 1°²ºÊ¼ã¶·Ëb¸‡ÚÀŠN¸Èçs庾õ}lj„Z~iÛÖÜÙ4Ó_ë}ïb{¾mÒ„Ï7üý;ÛrQ¶•1 ül¾¢Ô¶ÃZù¥‘©¡À—<é‡MW"Óš£–SL ®ß,­[S”P8©¢‹^§„-¥ÎRF„p¬çœ&®þEÁðÒ…µ'è~^¦Ì£gÙôfDøm«:Íí¤ÏsYk¯„S#|ÇC%Ñc]çö!mP`sxŠÿEøY¤$ø¹è9w;ZmD˳ÛÖúÕzñF±Wg¶Y—ÛÀ­f@;C²@iEú¼çDÓỚºíáòHÍ'j-è6|°žƒpÀxÑ4رÒÖ#ëü¨øN;EÃR6°¿£™ÔBdž÷´ÔxTÃ4xñmV³(^§ÓTJ–±n4¬ä§…tɪ^~5ï„` ª«gl6†}^¢ý¨J"g+ߊ¾çJ5N³GPÍðˆNÛ"î-¾Aî¿]g2ùÙùÌéq¶yå·XÃ%‰¬q¢ò#³ƒÒÕxYát³œ"ž¤GºLÆ·‹Û„s8n/»‡7—³R¹)ªíñ¿¤%oLý ¿³ Xð2ô*€Ê ‰¨*èz&´ LJíÒP?s!.ÐjF „zÌ…–c|˜ .OÂüÑ)Ø"ì_øQxCiÖµì/ÖdN%4aÏWdpI}Ø4t!J–òg7õ×´OÉÓÒv40: $û€Dhxõ0åjÇ@sÀ0]ƒ‹%e>ã—ƒøÍ„LÜo¸|| æ*¸ø«Ã¾KkO‹6aâpψ“IDðiê+T¡c°“2EÝõ¢×ñCQåÐkâ ÒÄŒyp~EÙr;-›'¼\Îϼ#IÄÔ,Qõ*~Ðéå,6†‘Üе÷ _{­º¶ÁV5²~=¥ŽVKe®¶ /k¶›5+lwC·:7Ed¥t÷Œ?p"åñÔñ²~*ªÌÉ;Íì4hUÈìðhŸoµ‰'±É¾h &”‰lžké³íúJQ–`aMEñ*Mñ@5ÀpÍþÐ!A¬¬æÿµ?ë¸ÙÛ§ÿ³.,in ë½™ˆÕ2$HfQoV¯x]4oKYy­DzNËT]Pª4$Ó*'É;+´­9½µ&ÒçIDä®x¯Ó»ÂGðñü·šfE½ÁÇ{}®è åJÅÖ²KÕ#°¨£Îï‚gƒƒ‘PSäF0ǰšz¢ôKyZ}«’©¦hëé ”P%UI?(ï§;^"çìRe|ÝŠ!”×ÌÕ›Yå¬LþDÅR}?Ç0ÿ¦¹ÁþV«lß,¢h?8PA‘?¢ÛŻ뺯·?é’yF…ú7ÿ\Œ1“÷ìñνF¾öœÑÐt¯ôgd°¸M^o$jâ#’MšŸ§´?(þÐ[Óî÷çÝ9füÎpÅ« ¢©8yÊIZ­e^ar5¡ Ü8ÚO¼Fá*æï´$æÖãýÀˆÈ&²‡äÙìÙêmïÕÈÔç´ku¤Ä&EžAãhpζ<’77NnH¯ÛW¦¨Ù¨.´>G0Î ãÍ!í\ÕwR»î˜ºŠ²‚Ü"[‹LoÙˆ8ÖÏꟘO™Ø^XiV¢q‰ÐN}F_.¨ûÉðY0‹Ì%sXq”ó”Il¿(VôYØÌÑó¹‚Ý\g*æt0FP~«´µ¸¼’ö3ôø=š˜Àøü BPàu¨{ôÕiÓÀ½(?x¼ ¶@6ðÌW"ÂÐXtƇ›‚‚>€Ö`¾“Ðv$n¡‚äÉ"ds³åü–Q„ס#ȉ½x¦£G;P7R (uÚùTj1úÔ^‚˜À@àô¡c¡M 8™æ€&@?@õ˜ËÄß2bH³ ³ñ}ØÛ¸:Ü%tFûuê,àüJhÊ€ÉÃÍÇ3*òP^0 a¢¸3Ä5™qÛe;õÄqXæTæÐ¬·Âuæ÷ìµ²F­ÉZ¤ÿ2´ðTI2 #=­a™ÙÆÙ2Ì×u/µã ·Œ{,ÇíO]ë‘OÊ—õôÊO”Gl涇ÇÌe0´\»Ä¸Z÷“£©E¥¹jBé»ÿ×]êøÄ;@yç~¥û(¥Ñ)—èSÙºqv¾ë.ÌÕ7K‹„Ï…,Ù5Õ ýAÃ1ãëL˜l¼ÅV»²ŠæÐNµ÷wæ áÀ«–½Œž~»zÃ|¾zÞ¾¸]Zé½î°èœ· S)¯*vLÞ<±Ð¶crÍà*Uí´‡ü÷*‚y6bð¼ó/ V 'm Ž÷Rg–]i·ÙŸ"üÀ²ÐGs•Õ^-ßX;Ž=BþJ7À¶Ðs!¸ÅÿÚ=ÛÓéÕ96+;YTÔ÷ìªýYÍ\)OH=ÞÜäoü+9«˜¢ˆçÚj/×mlOW\”ß’¬½‘Ä+b¿¦¹Y¯Ðžeó*®º+IäpØûŸ÷œ{­÷niIìÚÐ5)8«é¥?Ö¿Ñl‘ Pß×®•æs÷‹Ç©ÆËæ°ßÔ9žó¸ÒVþ4Z9·H¿öêþ”æ[x‡y¶xâ\½ÆnõlÙ>éNœ*ÂËÃÚºý¦ñ¦QeËO1~£L刞1”[kŠÖ1c@³¤ šï&9»Ú}ÙQÈë'ÙzI¶N¤ïµhGµ®•n¦s’m½6…7šV]—Åœ£aó»ž~õj¢CgGÙº ,埌 ;«E‚^שˆØÿÐ|MË× ¨ò ) žã°´"IãHFˆ-ä<æËP™sÇ ªHpH>Nrˆ`×6nåžãÍçd»¸§×S0%5™Á-(UÚ4¨ZB*ü¨ÁP"øt˜lH› NC÷G/COÇd@ú6—‡=Y ¡Ó¡÷è8Ì9ô °ãkÒ5˜³Ð÷Ø2\æŽH"mz˜=! ÌšÓ›¾7 ?¯Å Äj¼ú-í^ê°”:Ô÷@4:³€2 ^·¢èå¼r`£'`ÔtúàÌDÒqœýJÃ|‹~„9À¦ã?áæí4a/®Ï 5N1rW¡ï ƒ˜[¸ÂèÌýÅû+NTÁ‰¥˜’hÅœj3YªP7ë`K•íµ½ÍZ!9Üp¡úNù]ª_èÖc£|ÃCç÷}בˆõOs¯=Ù]êiS·QÛ«ñuùÔÆb^—ÏxT[Ä4gM5ú890ÂAVÍ×å;x¶ oÇ´~DóZmn$Ÿß Ö¢/äqÄ$R•@7ÕH•ÿF•ÐNr‡ªïNûÁg‘ïíIÚŸ¥u¼ŠÆödéSŒã 2Ê_Üò¤sB÷È]‹zvµ-^ŽNi[Þyµ£«­/Z¸j½!›ÎÜ0¾rÁÖùÇóò :òÛŠ Õ‹hS î5Ãö“£ÅÕíKD"6Ð~Ùâxg»·Úp.R$7´Þãñ«^WÌ¢¹Uû•žßh?èÍqn4_ОPPŠø~ÎUÑ=Ùr™ãË@œZ,¿ë£“u…ñSÃX†ŒÏ¢³( Ôã4_"‹¨†«ª%ågUÉH‘ÃfM&«JüQåy‡Í£='év£]+¼‚¯§|ÈhzÈõ§…§‡aý á1^ ³ýpf­Œ.RQý¥[Ë3¹âÓ<.gŒâ˜u½}ˆ®Ji´Nvÿáƒ]ß;Yç[Šà×VP§‘‡$Uò#šÃ_† æJ»Ð–­zC÷Òv‹I¯2¯—vå¢Å8NôôvA¡‡Î\xy¬å[×]ß+‡B•ÊŸ¬€tD§F;þç¸çX‰<@$‹M§‘©Þh'™1R¼>äŸãé i}jõw´‹;3(KeƒlGÝÏ}¥ð`‚?Œ»QF2õÂC…úŒâ£$[|[òE´ŒAª\T9—²šo?ð§¹'X¯Ø?s9竜6µJ›§&âÐ=iD¨X†~÷•«þè_¡ZÔ*PÝP@=¸RÚQP ú/ô¯˜¸ ÄÖÌO™ï2Ff¬È¸Oz…-ÃÅc~DÇðÑ$œ›†›»Š{€íÂm&ÝËŽf¯Í)Íû&ýî4´¼‚ýŽt1“šù„ø/¤O^”²9À¼¯.:`4ø: Á£à>Pð˜Nì_X$¤ãŸcv¡E Ô€#>ì\ñ’7£ÿæ3Ûf7¥›7 É=‘1?ãdz ¦?V‚Š×äÖ“ÿà´ ´çÄ3…¥åä÷äí*±æ•Nn\o^èø×™kÓèN Jé3ØËTL±È³À•¦žð¤æÓá²ÊÒm1;?øŸxÝlNN}9@»L£Ö :«Ÿà'íE$Óã±—;FYÒ#œµb@_íäø/û§;ƪ’Du kÊ×mßY/bd²°¨½ìr‡A xLqT¢•"ó_–·Þ;öDsŸ±ÙЩÞÅYÁ>¦F[q|qï‹ê¨îÚØcèÔù®ùbxnx|4­¹1š‡ÞÿLE.ÖH*—L¬I*?[t½ðlÅZ¤SÅÕ®³ò\6¯,¼îÛéžé‘vû&#s¬çõq¦“ŽþžfR{‡õIý7[s©(cÈò«š>‡Þ¹£‘XÀ³Ð6Ðæñ²4G,Ëœ³¨ËûÐÐÀ™KS?…RTç#?¦ åçïåÌ`´5 ¥¡ X"Î"ÁII“nåGÌ(%&¯œ½ýyñ´âÞÊ’x«Ö:Å(×ü¨Y… »?tjjŒ:[ÄÝöžsðA!kµ¹a*ߪ^cäj ¯-'‹áì”!ê _¿Åú†ÏްgJh`dfäKh¤ýƒé]ŽÔÀ£ôT奯f«=`˜æ€ÂK[Ÿ7ø¡wÞs9&ý¢¥;bš±@¡–Õ¨¯èO ì3šþ/èÿÒ»·í^ïk'W*)ŸY”Z#T¼p¼vÎ2wÈhÉS¸‹ÕX=WBû‡x¡v·õˆÆ/(eÕÑEäW´üœý–ó‹ã$íÛßÚR,{•å’ãÎíëƒÙ»9[„ŸTýuXÄ4Ï €‹¥kDý«ÙDÐlUTª’dod!é énÙuŸêµt¤ žÝÂår8Û8aº¥aSíŪOYTü:ÈÅA!àph HAu£Ò "ôdèO …]†š Š ”Å`±%DçrŽ.¯³ m‹!7y39cŽ&óuú‡Ì¸Œ·™ÛÓˉ)øy¤…2©‹4–x¸:C1(}l:6Ý’N'þBè%¼úÊåmüÎôG„õé‹6½É;“ÎÅbÀÌ}`p,åjšµ(mrÚ‹´ À˯­± uDêƒÎÃ솶¡jÐÛ ñà·àa,Œ•âdæVÓψB“î ²Ò? žÓ­hõ1ö£ z\YöŽs s•|žp¦É4QMÖxu­Ú ê8yŒHCL P(äJ5}0=ž¾‡‹Ò^vŽ X½OÝ•È8Å>Î9Ä~Ùk‰W yÚ—vØwÅýÄà—î}Üb¬ãÑ®wh¼–èüAÝ'õ ~Q½Ë©Á{ûÿéuvž Ûm¦´4µðbQ[U Û®åØ/ÙdZHéT-Rd3=ekhû ­K·QíÐ~0f~ým†#ÿØŸÈéu“vØ>*ò-q¾Â6Lç±6¨åxô§ðÛ@ÔÜ÷Ì{σ ¾8Ûxíß´êš¿DUÑiÍ¿zËhcLí=ëç{׆àmY»»¦tîxÒò]4¦iƒ«Äº_±—ÿ@Áµe„óöíiÖ^Þþ>«Š|Ýò"4À÷ÀŸ×¼Ò¹V1S2EÕ©ý[{Xu_=ÃÒ‡¼ö 0ü{ÝÖ•*“ÐÁ³ñ&oç*íuý”úëõû™8³Xwkäׂ&å7¢“ôÒrZÞØ¼#[rŠì… Ù«ˆ½$Ôæ·ÛâŠØY=ynÌóÍuuia‰þÊ&ᚊú´!‡ëö8IÈK‘M¿[×Tãà<7mC´¦[1s w–o±Ù§;v;jt!º¡þx¾†MºzQäm§¹ÛuÆû2„ö[&«Knèßû¡H²}ˆ8¼ãfù1ú‘JݢƊ^ÒwÔLn¬PZE¹ø:£½[0õ€üªrVñÛ‚oªÃ¬8ógª³Þ±Ìþ­õ…gÍ5þÂN}ÀyɽȽ%z.¸ÎëÏM*#=Î&ûË‘‹³Q~K)UFeóvåŸ2œ|­Ä*W¨3´ƒ«Dͼaœ_9dÀ­hì«;±}ZŽ ÿø%m"ð30 ï@3x Ø–ZªÇ£ýÀMˆ ñ¡; ü«áN ¯á¤™•Ù÷s²rwå¢sßgÂ©éŸˆó  «‰Kˆ¼ôæô±$ˆ°”–>”ô !mɸŸ%ÎD‘þÀÀg†ãðà÷ÔÄ]„A¤/Ø{8}Flñþ¼Íx#tÒ‚¿¦íN”Ú/…’ˆZ¿$ù—Ô¿Ò® Î¢šS|è‹h*îàWîÅ-%ìÆüIxG8„_˜÷‚R¤?÷sÝÁ :ò.ð{hO`¢ï2ÜbhG¸·”Ó*%ޱfgÿíœêtr õæ º’jª‘•ÞÊ×eÑÒãÒE™­›–—Þ#?gfªô†qˆù¼i†i¸%Ï&30ŠåY¬Ÿ)…oEËÔ>]¶,,ú]’.;&!Z"6kHö÷M§¢UÈ"íAÁM¾»ñ” ×ròÐä}í}«mTÁNòù²[S¶]£ôÓÞD|1n–•¦¯SJùß“÷7Æ™ÞZ¹*:W-m¼ïLóÈ}Fûž®Ù!¨é’|k.ô¬nù¾mr³1¤Þüº—Öõ½ðŽöþÿÂqÍó[-íûÚ½K{Ît÷µ’ýõãmžA¡ç¨s ÒïbíNÚu§çdWÿ®‚ö9áE®lã¿ê‡:³þG×tÍr”::Ð*3ækOúäXµm12´ku‹ 2#Ö2+Íklíëœû]Ǽq.¹ 6ÓŒãL}f³é}¾&Mrµ¥voÙõºÞþŠ®C¨¿±3Ù¢F3uÐÎoÊ…;'‘g‘eôÜû›åÛÕKËÓŠU…§ën25ÃÜÏœ1z¢ô¼4 8ËØÁ.£~fXãÄzŽ!5·—w0o1³µc}]Á.{²Ž¬ÍÕXj-T³F3†³‹üÿÿÿ —exSwÆáî2(26lÐÒjIN윓ԆÔ(ê.I“4îîn4i›ÐÒâ2üe¬8ƒâ¬ )2¼°·_þ×ÿÃóå¹®û~îûw½J‰òÅb2ó{¹ºÖ|ÒÕã½íËp檩ÜDr¯Ï2³i·_oLçPʳJWP•üNþuŽ•¶¡z(í?ž7NrY2œ^Z3ŒÑFùšL]_DÛó0¿·úb¤!ÞtEÏU'ª»5lµCúŠÄÌf–-^U¬à\¦n­.,•†R»åoD‡™9)ì,ðƒ4KÖÏŸÏ¿'©–ÔJÜ’ŸÅ«…ɼ;l s –ÇH"ƒUKª ¹Æm3 Åh6ê/Tr°¨ÂБè0äL”õ*æ2˜ŒCªÐÓ°s° pTœ$!ô¥ðh¬ þCœC8‡Ó ±„ãÐ0¸m„a ñ<<–@ƒà`Bñq¬ÅVá2ð¿‚x%è€ê  0Å!ñcâþ‰­ÄäD/ŒQDó¶"ÃJ·èB«6í ÅDï¦"ÙÈ/¨À_?æüQðG88–œ¸OO\ü1ª:- X®Yˆšum­#Óª±fŽêŽ*‹ªEGEWT2å~qU}ê»ØŸâº¶J}•½'#!±³-~‘ ð?BºvðR‡ïº!ɪ¼U™H°ÇI/É|Ê1êY¿Eÿ­Æ_ ÓI”VÊ)*ò„ÚGÿÄÞÁI¡L®ZÄþAâ¾àŸíýdª^,RïÎ+|¯Â7ï8<éøÀ"sºd.eQÞÂ]–”˹í,¾žèÉlf]*¹ÂJaì#Õ1µêPc¯’Ìü¯¶@âÒ79ÜG]4Oi[‹r‹¾0?ªnZ]¾zïeÇT«Ü\`®2©MKLå†Z]«1ÉÛåµzXþ.Ï÷µv$›×;6ú+ZªÛÔ-k›f;˜]þ¼æÍ¢Ö«-ÛÎìkÝ'j–ÛëoÈì̵Ì#‚?ù;©_sòv%T-“]оÑ4;”‡¤Û¥ëå;fÕ,Ýmü êFjÊ´ÝFšõŽ1ÔøÝ°Ï˜g®°Ü77™ú¥²‹¤7YgKlœ¹BŸüšjÿ0駪§Ì¿¥w…'jç‘Ä$}­‡«ávÐóè߸‡x‡&n$ÅQM«bP¤Þ­V¾z„¼Ý˜íáÿdÁê¦ ÖöX»ÁþÄøU¼„D·2©ú­eöBó3í#QK×›µùâÔÚ¤ $e)ó©x½ê™¸ŸZGÖóºõݶ“6Ðú·Z'¼CSS†IÊì·Ôÿd”òN“i”ÿ„©J‘Ì,y μ’µ’Û;Zò¢á²j©PΓ̤vTiFöp¡SxCÚ&ýQ.úEQ(dÒ^–eŽ.ý(nSÎe¼­š»#­uÏårû Ý[z°²‰nâ>‘´·”…Ç9£¤÷eÛXÅÂ…¬0îv+c*}^턪…yÒ°ÿ‹&!FEécܨº˜Ã€˜y œ~DžDNn.ôfÌX\ n.N‹›@'áa Ž·…x‰Èëñlü °•p·€Ž¯‡ØðEúH¸GL#.%. î'vCø$‚` dÅ3q«À¸rü ètœ ëÁm`(hÀ_ÄŽÅ•F·†!Cnnê i[üÔyÀ›ØXßDkápêÕÂÚ²ÆÒ©¬u²×R‰–Q_èg$ 7‰{DQº`©p¯4G•¢G›F¦i>¨Õ R¯26\׿ªIšýãdËË=ëWë9Ã#ÞÆª½Ì¿TAÆùŽyžæ.ñ*¶T:]÷R6’s†±™ÙÍý mROÒSô¯,›í#lM†?dÓkï”_ôíóÜv 8¿6®9üüLL`¡ñHÝÇX}ˆÂ¨Ygn–õ“~­ÎwªƒŒ=º1‡^Á-.Ôì4ú½œ‹Ìqâ5'ÈÕÿYF˜0‚ åÿv3O*ÚÓê$¡†²t‹:“¹HuÏkß# ¢Œ¢®;M¯t6eš¬KÚ+âˆ+NY÷wetfNê c”aY®`Y*qcÔ[ù]”Öþ'V´h§ÊÀú¯¼¢òuÙ/å=Ô~a#s)[Þ•ÝœO+ZN‘S·—'W´1çKz%ñ¢Tž@¸JÕ ™§-S¿“høCy‹xWéÓ*í“ÚCŒÁÆE¿ˆú E,@‘ È}¨K¨÷@5ºåPh?pãÅ'ƒˆ+í:T;2®(vG\â¶ðØæ¸ ±‡Ào š é wÁ*x'˜ ioaá´…x6¶!vHœ*vxÜÎÁ$#À‡¡$(Ï[ÁFü\XVB~(ô‚<|ì £ c>…*7i6Ý yj {¾9'ž½5dë/!â°aчB‹°}DvÜúøää7¥Q¬jñÝ2ýUÅ/²¥­’ç²rXœN77[ ‘ TÏ5;Ù²»êX àü¨/à‡Wþ›IOiÞ®ËÙ'¸cÞÅíøÛí>edŘڕ”§üúàú¯G¬9ª™âC¬Dn¶êã^Ó^ò'7X8Åð·÷dƒ×!ÔæßI^™4+w&Õ&ü¦ÈÕF›Ûiöi†)2;/9›ÏWvhÛMGLlí4Íí*-VݧøŸrñvÆ¿ÆìÚéþÙŸãˆV Ù¢:e±éºónÝygËn}¢çó(ñ4“Эx+:Wu239/“¼ŒÕÈ>Ååâ¾ç‹Pk »-s̓US_c¬4[-;ÍdÀ&Q»Ñ8Ç,3w™‡X@Ë5}–¸„óXYà˜WÍ?¬‘éÝkÎ6 XüÖ÷ªõ¼‰|Œ°YR®,Õ¤þgêµ>sœt‡x{ê:ŒW¥Ù\”/«á¬ï¥HãÌV¼K$ÞÌ_.û‘ÿ¾úN)†´œMìk5üEòlÍÝWu ýXa}ÉæZµÖrÁ”¡êdà d.y!â˜ë˜,ë,¿›õ´ô:wŠrŽ,Ž5”„§}©®¡½QFZcµ--3^Ñ u†ò)‚ übÆgÆFÅ!ã€}®ú¦h²ò¢æ¦.RÝÌ#Ðò)­’Ós©¾ò·bZÙ—J×¥¹/—óJ÷½ÔQ”%¬¨Ú~Ê—’¹ÞÒ@qwµ òàî ô¿J«k/pþåLáõÊ š×êûšXC±«c ß³#i”âð¸n  ¡Ëb#ÐÈUêú+P˜çQÀ%Àùû;N‹KNèí‹]K̈}IÛO”Ån&®%¬"œ#L#,„âC¡Õ±K ePÄ…‘„8œÈSa*<ƒðpˆ0ŸpîCO ðoàLp5øŸ…_ 5 枟ïF_F%!2cl[¦‡LÛ¼;Œ¿yqÄ’ˆ¹þA„8rMTz¤8RD#ƒ€ÚÄÝÅÅü2Ñ ùo¦…^¸þ„§Ø¼O4¢jFvVÆ•íX…;Š[ŽNˆŽ ¯Ùزlëóðã[ê¶ê#òÂWmÑlù/lyÔϨ*t; =†M•¢Ï­è;€ ø±ÑKÕÀw õ àᢰ¸8ÜŸ„̤s%ŸhFŽ“Ã{ÏÕž%¿¨\K¦0Ʋ&sç üB”¸F¶RuS›¯húµK,·œÃ\EÝ™?az{f~/»QÝj:â¹Þ\ךçaKpœÿ‰GI/©ýV‹KìøÕ4Ô0ÖHQµh:­ÿÙ‚LŪür†‡óPCvü5.¯l?ioÎÞ¤ë»>ÍfæÉþ1¯o(o½Üú»]TÜÍ‹â_‘"”½òéòÏòu²Bñuñi1U<^²B†Rr5BÝjµXrV çw1»käU‘•#¸zµ;Ó÷ýãzl9§ØÇ½(ÎWuÉTÜHÚìʯ%Ì5g¿ø²âµ|½ü±l¿$Z¶LñVYoúÇQcë5'˜#¬7e.²+ѾÏoFX!{Ÿý¢-`½m‚Ô6aƒè€ñ¹÷‰?ÅÏ÷5øöx’\}Þv÷YÃ\ù}e¨îµñšé™c¶[¤ÖTkÍi?hgYj¬0öù/ú=åî¾fË<™T] m®š”5§‚ôT‘o¸`9d0K(–›惂+•oË5ô~ùÏæÇ4í&¢th¡²d,g‘%È…V—UïÎyQfP­ÌÃ$¥t ]³ŒyK˜²5¿R jy¬8T®¼¯õê–j Üh%\ûEÏiÃeé_ì·ìáòzÅ9ª¼â-e ·Y3_pÏWŽËÛžWT*oºèo •EW,(ù»šJ_C£•¬ÊÊ/O¶•4•¿,˜šÙ—N]ψ°ä~ý#£S¯ymh6·n°îÕü–kŒ‚A娅èŘ/è+èû@;&cÙ6£Ãø8„‘á±Ð/p'G̪õÐBBñœ{ƒÏCöAžšË'ÖÁ•p\&~€åPl‡ø&áOØ—@¡7ø&(~}„*A1A>(:1˜p4è˜æà§à»€¼¨OæÐ¦;!cCì[–DuF„EEEš#NGöD-G ÇRÁÄþ„Ø´YD2N³Ò^ßP'±¦˜›¥ñ¥»qØv?ÎcNÝÈ1éÑ5È‹ ‚=1µŒ,GÖ#–Æ4Æ$ÅÜEô©ƒÎ:†˜‰â#ˆÀiÌr s†z†hF)Q7ØB¬—„ý<ÇJÞ°ke–"÷cÁÜÒ]ÅuE÷*KYÎGþiÙFÅ€\/Ý(¯WuhdÚ`Ó€§ýoŽó’bSùØÝÝId¥,IÃuýXÝæmQ7ÒNõL÷eyßywŒ¶ôê~4l4oÖqõVkó­Q¯|Å@EW9ûõ£×lèŸ)ÞÕ~ËX¶}]öŒÝª;F`zkn[WKš÷‚e‘Éi£]g…Óûiã8Y‚'‚Lñ6ÀKäÐXCX\~­´I:ƒ'¿#Ù©eôµ=Ô‰|§þ†‡ÔtÒ7`»fX,ÑÑ1 œNr™ËÇ+'jŸ¦ÚÆyuí–Óvs·‘£a«QVµOSŸíÚZwÔïXÎwÈC²?²´kœ×¼º]vŠ)ZA½”¯4δǺO¸ÓÜ“ÝSê6Ô™ÝëœZÃ6õ =ߺÛÖeé´lµ¤í)Ö–}ƒ§5Ñ:Á{Õ¿¬éŠ7Únryšo7 W>b0èzãþeÍç#¿#سøyì¦Äº& ¯¦—Lâ7(W×9G$ÛjÖ «½Ü[ ™+ÜþE|¤¦ž$‘ŸôÒ÷ m>®«]Ø%L‘íRÿ¬{ƽPRU¬-Ó”]dÓ‹¼uí_5Н¢SSË‘v•'_WS˜â[r MY•DŽ£ý*"k‹5g%_Ü’‡e‡ä•†ù¼¨ò”ì/YˆãoâßbŠÉ–gÁOƒS‚ׄnåDø£F'Å„E—ÅT 2QŸðxTòÌü1Uï©\x¨Ñ[ßYÈqE;”á%-(ÍH žÂt`¹øoølÜ"쯈n¤i@Œ “ГL@ŽZ‹ ,ƒ7$Õ‰lFî@ŽB†¢pðnÄÚA'®Ä¼Ã€z&ƒœeû7z7jÆ€NÇþ‰Y‚Æëñ£ á# Æ&¤•þËÓÈjkL¹&©Þ¢P(D*šn½1àJ9¸ñp~[iý)epõáìµéwvÒ–W°'XŽ7¾o:ÚôÙ*Àlã¶Íou5.p6¹¥di:FG4—Ù—ºØÖªàV3äé ÖmÖYÖwö[òàâÌÄ‹I|jºšåú¹ùm3¥…Þ.n;å{fúÈÕQ*É‹[s^ŽgìÖ¿rý¡i¯k–ÔL'­gfˆwKŸ pþfàWKFH¦ˆ®ÊŒ6™}Œ%AÿYÊ`©<™È+*šX<½Â- µbëÛ|ãýå Ç}]¶ ëYã^e+¶.v«¿ëÅyÿªÞ ðù²|³ëߺ‡xFy~ò^ônuß±¿7ÛµT<íJc¯Ù`›b¿`ýlždŽ·þnßbeéÃ4úµ¦4ãFã“Å´ÉD0ÿffÍ´ŽµÙîÚœ@㕆©îÇ)›Ô“Õ˜lïаå ä³Õç #Í“­ ->{‚õ6o$ݧY˜Fñ_WO埵ÝiíßÜü^sФžHõ³Í>…ªæfÙZÁj•\¢nvô¶Ümÿݯ·rRT—üØ–½æ3LUE-EzE#NgÇ2¶×æòPйšFíRYV(aj -°®•¹¨øCjlÆ”²‰ÔæXöz^§ôoY¸èª$F‘)L¥)ÎóM-këÝ—À‰Ó¯¤Ú’ÊÁ}èxL ÖŽ!b€‰èbä)” U@Ñïdô;ÌdP Ÿˆ3à[Z—¨ðCÜ<üS|îx <:Èg *B3a/A w@@?CŸà„+ ¤„ÖáGâZ`$4< O“pëq/áTâ}øˆÇWWñ,ƒø7ltÈ·ðo[åQ®d¤?f$®GŒ†›7=I_f®9(0«Ãã|ã`×ÖÅ[Tcø3«È»š ôõèY1£°•ànüJìbt"/f&Їš¼hAÞ–8ôNô+Ô;üˆµ þCU"g~T'ZŽ¡Ÿ{Q3€~`36Û‹¶#wÒë"`p5Mn"§¡£7ÊÉÅ–a£ñßÁü¬ ¹2ú4°|çt NñÐüÙá·Ÿ4_W4Jç‹ÇËj¦šº{›ûÚ¯6o2‡óéUGòðI_s’f–g©Çyľ-Þïþ̦EüÆ1¾ºoêå̉ ¶¤R›/Û¢Üï<Š©UÛÒÏæ_yÍÁƒÜ5Öû²!Äꤌܑ¸=­:YýÆù¹Ó¤kžÕö¾½¶i³® s(…ùù©™©üZzËïmKøor³sKʕ䅬nþs~/“ËÍ.å¡8ÜÚùŒÁdYºô•ô¥¨–=Ÿ™Ji.6d•çØòÏå¨>(4j?™V™·Ÿ[¬8ûwÍúÌ8V{V'´~p¹=g¼¾_|{ê_z>y% ¦ÆOÓ¡M{ýõvÏ@Î9`ûfÝi ² {èwCº±Æ¼ÑòÔ²Ý<Þ°FçQó½Š1Zžq˜‰kÚd_Y7¥nHݪºHoo‹À#vu9Ò­/ÌñƒŽ|d¸ •QеZ¤°ùõãTÿSÜ“b«y Úo~ªûS<Àˆ–¹„m´Æ‰‰ñ’` eIÕ MWj¶˜°º!†»£á¡w¯Õ ê«(#ý©9áúfCó_åQX]êÇr×ïî)-YÍwlyÊÆruÑyþvËŸ^¹bùxÍÉ,Ív}—&\B“º¥gäQ*¢j¼ê€ŽkÙacÚN[°êü»•i9³ó˜%÷Ê¿×|ãÈ¥%ýbª ƒÏ”iU é«ù‰©Á˜­ß­!këOÖIç”Äo‹)Á¾GÏž¶(?r8:x1x÷W¡F£‹0¡]˜ ì ˆ[B˜ÿ…ÀÀ+àwâ]x*!‚0 ºƒØ~|ôü4èËűsbÃcU„R¸¬#ò׈ aßÏ‚æã/⮂ÈçƒßñÑ`øØ=o€³À‘`5þ­@‹#9!ÁÁÜÐk¾ÈmQ%ø²øž¤»ŠR¾n’®ägý¤X¤Î²ü`¯²»,U–åšq,qeˆ¶Æâ·rˆ[S¢$ˆØ˜³1pŒ ÁCV#E¨oH'ê0°ð~Ì94 ¨LÀN, ;íÅìEÇìDZ€ pñhpqpâ2èÒPcQà00¡Ù˜èiÈ»H 0s Ûˆ_ˆ#¡‹‘Q¯¢v¢Ã’N—EðÐò]š»ÚP©TÐ%z)á*ÎÉsUiI–à@“{¼Ž/ZBÎÎØÉJ»X¢ ·Ýt–9Ã\NÏOÀþÅüÈòPgeÿUÆ$ÍR=6¼3¿v¼cLKaMÞ ~·±ÅÑç.ð?nšîºÆß±g}.™ûŸé™wrƒ ‘ÛüK+¿5µq“ó¸ñ°’ÉZW\–6uºìî¡ 9í4TD@îùF*ÚÌí®-g*h7è=,·ð¬p"½ˆæb-ç†p²{Y%Ì?811­†L¥Î$g†å[IÛR¶p<çÖ|A»T)Ý$ù*êþ%¹lèõ ñuz1õmõïyÏŸÞt·éxÓ²@p ±\#§Ò*¬ÂÖu~o ¨Žª˜ÄV’HTƒâ„yCÝOŽ©¦GZ‡úg³ËvB¶Žù°:NNp®vY¤/Êß”ö+fÖÕøf†´Üûº¡Y:4?;yk)šgR¢¤zZ0V k_«ÛÁüI‚mÊŸµLIÒ¡x©º¦.2¢-Õ†Š)ÒvþªŸŒ£±ÈÖÊ+t…üä8ïÞma±øOùuË^çsÛ ótãßÚ;ê5†ŸT(>©4`˜Õƒä6³xPM—‘h”¹u„‡‚ÕãFƒ‘„¹ìÃ÷ƒEð}øü vÃI„øTOH€Hð#(§ÄáÞƒÑÄû„ø6$À}W 2Þy<w7¬ÃC`” Rq‹Á!ø6Üøô#\Ž=…;~Æ_ÀEâ¤ÀÊè°-=Á™›_oÍŠM& |<Ž´J:K¶XT%¾,/Ö„©Çi¦ê:´õS•.‰¿_‘™;ðšÛƒ<•“ˆ VE¿‹ÉEÌG®A®@¹QRädÔU u‘,øÀa`2pE¼(G€}¨ HÀ®ÅíF¯6dô `iQld"2‹ŠD/FÏG)eN£g¢¯¢& ¸¨ È1ÀxìS`ƒ~ŽX}0êߨçj¼:ýsÑ»ÊûUŠN¦–o•ÊÇÉKªdmæZ[­±N;R²…|¨`øž¤çâ|Ó¸Â8Ç|×2Áb×ÿ¨lPž•Í«½Qt«f¿ô¶ºO}LÛcÝ๬ûÄQV$濫ݯý×"µÿPwÚ9Æñ^Î/_GÞ¥ÀØ ½Q¾Ç‚TÛí¶¿ónÛvhZ„ýUﳆüVBŸ¨Ã¡÷E¾Œª‹¨~,<Å{L¹BÍ[!>­,5U™ÚëÚ0½U³W¨Îª¥*µŠ!#r6—»Œ^9§úÿ„–obFU¨l§sò.³ª¤WÄq¦þÝ ÿómip6Ìmàù£ü$ÿ ¿ÉnxѲ×ûZ×µéZÞNø3˛ƻC­wÍ>cª.[‹0šCÕÑtùóæ:¹ïtÓêÀ³?°°éfc—ÿ¸—îÙçûµþ¦m©þÅ =êYºQúkúíTLsKù«f©SÿEð¹ÆT•@úRŽÌ«ÎÇRz”ÿ˜l®‰N¶9M䀆:ÝJõž´}ÒJø $y¹`Bíz±2Ø2ÑÅ·|áÕ|^×ís¼óx#r¥¼|a8H½Ã’lKrÀ.‡kº£MEÒ¹H?&ßEÏC_앳Ðÿ`Nc$Ø#h`V!ÞEïÞbî`.áïZ 1¼ ?Ú¥Â?hÄYD7QoAÀ8Âgx"4‹0 _†ý?ÿÿ˜etç߆q— Å Å¡hB\vçŸÙÝ)$$B!dãîëî¾Ùltc,H6@q ”ùãî…B¾ûžù0gfΙÏ3÷ïºîyJØñ ’¦¿Rû‰' È}¤ï$"H!Nã äs2‡\OÎ!ý‰:´‚h%ºÈáäxl çz"¡G~)þ‹½‹×¬ ^°=¸äÝâ7J»kzÀêïªWXÓ,ìbÛ[ó1ãHíé ÑûœAIòؘ¨;a·ÐGˆ Þ¼\Û ±Ì·ŒÙÌ“`l‚~‡Ô ´5@‹@ د©Ðxð™ùzþl€—À6xöÁáþp)29Y€-  н ,€Z€7ˆBý‘lØAMLª„‡ÀÁp0ú'|ÍPŸ ¨ ~<}AÒGØP47ajþdÑ/’ï%q²ûjoÃ&c¬yµy•ºYÒY¢®«ŠÔþ¡Y®¢cÜgëû«&*WÉ•¥fg”òóªe„ºÜ\XhŠ ÌúÆ-çuFØò¬bó"ÓkGv²À^¾ÕTPÛSçí²º’ÜÜÆÚ»-Ϧê‡?äX¶çü’2ý§®ùâӇɀ&ó¢¥Ù³ø?”PE½‚ÁJÚt­Rm˜¯9–ÔÏr}°'WæÔÔ8„¶HãS™YôR²M´Iœ®ý±¦ u³ë•z¿ U´D-ÑÖìVÏÕGª «G5ßj:Ý<·…ß2Ìý¶aKý¡ºèºÜ:P·ªi»¼)¤édóÁÆ! óœoïëHWuõÀª 6eš™²ÊÇ+lYúÖ¾oÞ2§•nös÷´ˆÝL÷ìf¢þQÍ}g|eý™)E¡Ô¶5ŒÔ@ê.ÃYã¯ú‘êNÍS¢>[˜³:c\vsÖ÷?¦¿Ëë_(³Y“÷4‡Ø»UË }-Wí)Ž*Ý?Ò…2¾(½¨6çræõ캊ï%+4òêå-æùE»Ò/_ÑÄØ?š~Òˆº³«ÜeGÅOå:ãHGŠ#Âu°1­òºæ„àL^Rî{þ!ÕLýeÃó–L]‹"IÐG¤úbzi‰´<5\WtÆqñÔsYŠ/½ç¥Jâ zÜ<Õ:¹²×YQ»Ð¦’"‚þ[?RÐaÈ'¬½É°›Xu‚ØŠÍEÖ0ÇÀá>d>‚ì¢ÒIŽ¡‘ë©8ºšîb}`¢÷R—XÁ¬Ùô8z?ËHÅRßQ1d&áGɈ}DµF‰È&r±'ß9d6~¨£R¨)9´ÝØu¢Î'c‰/xyŒÕ!“C†Lòâ})0ÝÏ™™A)úU¦M†DÃnýWÍTãxÛa[¤­Æ4Eì+˜*1m{'íEv2F@‹As&è‚S>t 0áGp'3K¡ Þ È+d°1’ò †§#;àé öB¿ ‰ˆ<†{Á8> p6¼ 6Š»¬ø=ïuéö‚ì †T&*“è>V~kðk˜PßQëUyÂá²Ï·,2í´,ª ¯j¬åµ ö²ÛB,Þêp˧º—Él=1ÿŠÇà—ÁIFXð*ŸTcPlÐ/C[J®*tÆ·ªX‰…ÿ·`–ˆîÕYß™.ªGˆ"scv$$Æû…Šˆ¦ƒùC†ú€RPâÁz°HB@éà/h/øw€‰p(Ó¡wˆóÆ&ÂÍÐvæÆEhâ‹<ƒ5ÈkdR7#Kb…FáРŒè‘ndT fBl„¿€“ ò  ÌÈ` PB·AYp´³™±ÌEL˜ Ý`^ y£¸ŒÝÎYùy§ì¤Ì ¢kœnyh:¡dPLÆúÌÀѧj]Z½çWa¬h>Ðô7„iÏ«¾W2Üн”ÁüübÙÕ y°ì€zž>N)•5—K'èz °:G‘TjËÞ+¨ å%rÉ­oÒÃÄ 8÷Iž>âUÎl“å2Á‰€óX"7HQÆ·§ßåve=)ÜÊ맸aç|ØXר]÷©fDÍ…š*ggÝ æåmeôÎÙ»àæ1FwùÍ2/ÔÚÁ®eaŒr°Zhu¸:ššê‹kåµyÎNç&çͪéöHK€ÕÇîg_c×ÚÊlÁöóŽ76»a€±ÞtÄúÁ™SûÅó?—6êß5z7´œj9ã¾á>Ù˜åô«mt}×üc›ÑýºîyÓ—~íJG—é¥R(¦{gJ·î«r;^ØgÖ4×q®>a`—Í ­¸¨¤t­•#9ö=ÂJÁ5°í©d;&™%¢K’16¯få÷޽–±Ê’2Ó[Ó,E€h9-|+ËU.Ñ©úb‹ïÊÆsÓä»U<¹Iü¹tGViö²Š7šk¦µßê˜Ùß¾¼†¡JÐt¨¦¨Iü5Iž™2 r´a‰ñœm‘m¸_êñôi&õiƒKÏ2­1DÉà‚‘ÙÓ2žåN\׉  ïí†[úãê6]…àþæ_‘ ÆmPŠ<'›ñ—ÈQÁ Q9~Eyx2y‡Ð/ÉC¬sôöhö9N9§„C„’œèˆ‚ÐÅìZK½¢”¤ƒzJ…Ò½ä#ò>¹˜2Pä 2’ü»BŒ$ÏS/9a!òŒèCnÿyè…£äXê2¬ô8¦‹£¿"à[àn¿ß0ŸY“™V𠹙ȋT\P¤*ÈúK’ûŠ¿¥óÄÿªr„xY{êÐ #EXB먗L%ão†ú 0_Aï™l&`Þƒæ'4 ¤h\‰ÌàÇà1€¶£0â›À]ø+ü _Lô"ÿƒOÁcQ7R‰záݘ7®Dï Jľ…4#àK° ~ºÀvuFÀþð4˜¹ààå…ƒ (p,r¡ðè-¬FÛ€ 2 …ÈMp>΢JT‚ðrw}{¼3OYœ—Þœþ†[w‰×$¹¥.Ò_4mµœ2O4·T¿S½Swþ2>ժתNk w5ýe{D­¢Eâ•âÒiú ‹ËxÕŒèв)\r».å ÷§”ùÑ¡ÏR†æ®Ü¼„*g¯ý!çayLÊŸ¡N¼x Ý~2wÀº¿÷?½_#gó\ºWrcÉ£B®Ñ̶ºkÎÕr?kkmÛZÕô¸ùmKOKIë‚vjçôŽû Sí? ¯sä4É_Ù®8ïÕpåTí³‘öâª÷5%Õ··­+M÷ ù‹ö,V¼QÞG¯^¢´*ÞªEZ£Ú [|°€_ö³äšÎj:ocgêZë7¿«ï­Í«[{­¶£f€#ٴ͸ÓXdó÷øíAÛç¡J¥ã”íñ’j±Œ«ê¯g˜Ö Sœ™kQ½½&Ä6RjLÉJÙ_!×FÙéÚ£MCƒùS ôò{†t•¿¤¼ôzöï¥ß$£„?óŸÈ§*ÆòóÌk³-y²º‚Øü¼cʶJ…{²{‡ UçéŒO5[ÄweÉÆ^]?¹—*ÓvÀ-íHn nšTsÖàïY§ËòXåþ'ÙïæmÖþ_M°¦C;Ö,—fÛT‘¼¦à«T¬Ýc 4T»‹ *r•z³ÄÞd¥Í&}“¾@ÕÄ{Ÿ΢’»˱‰Ø|3ñ™„”`;0ø².$t´™5—%!•Ô7ÊÂå,áØ#¼CYž™Æö=ÅŠe$ÉFj]D} ø¬øŽ£|©d"9Ò£ð~d(¹Ô’&œ!FMDyÈ%9Ô#â:QC]•¸- y°ßw¯w‰w§ï–€Ü£Aû ·r‹þ÷J}dMªaºí?úP©µÂ]º8kO|B˜ _Šn/ Æ A!Å H`ø€[àc;Hf,“°Þ z<ü» öÓ‘Áè ä4²M€ èb㬠kÇaø9¼›ƒÐ·,_jSNê%>»ƒÆ6€>ȸ¶nøøt‚¸á»à%8 ‚ìpµ'/¡ƒÐH¾Bœ€>„+< q|•bÐ%ð,èÓj[ÀVf Ó ŽG X êG,¢âȩՑûcʶþžqƒŸ¦š¡ÍÕ.°ô:ZG™ç›ºª£2·,Qõ\]¡?«ž%ó–dˆæÈöihówöû¦ýÆ3Š#8AÌ?‚`(¶‚ É*ÖãÐLl—÷•~þ‰Œpyx«–ˆ¯‚7ˆ#ø?Ÿ€€<ÿ5°`k²¢Õi£SGUmvooÓµ_ÚUعpçÈŽ’Nr÷ï;Gìlß9v绦›V¹n¸^!ü-ÿ¼ŒY9©ÑØÜÕœÒìjé8þ¶¨þZ‘ôbùœbMÑ–‚}9Í…Ïyr~ï+o ¿H0”w-÷À¶ qO¢AÒð,IÑ=1Sž¤ž§½¥Í2WÔ´W¶•u½š Êa²áþWQ²r²zì¸ì€a£Áedº¬½¬«+Ô{k'«C•O5˜þš~£1IW.»Yv£,Xþ§þ•©Ÿõc°+ÁTz¢çÇüÉݙؔ”’;±bQÞ‰š÷\tAä%S™ÕMãœëä7 FdÕçÔh˜.^û²¦ë8¤jª³Õ¶L}X[í]ãÔIdaê}Õ3š4Oé˜×4¢ÄkËÙ¬ ôš¾Æ]&¶öŽÊ[±QÞªH’¯/OI­Œßw;õ¹ì´.Ú0S?_ö™ïS&»gè±VÕæTr,Mªfùdáæ4ï¿Gœ '¡ÙØ}l FFã ø`ü=|¸‘ÃhA±ò)¥î²ºè©¡S#ÿ ïbq VëÙC5чé~ôhrÉ¥ŽƒéÔ^r!~†xHŒ÷tµEäœK,#Þc‰HBMð‰÷L•’{ð3ø"‚È"ZH_"x‚yÃFû—øÉüEþ[‚­¼ §à0 _—ƒŠWIÛ•CÔ¤·”U•‚yò*AkYdÉn{x;ú‰‘Ìèñ¸Ûpfã!3ºƒ÷pÈ€«<íì#´z ÆÀLx!|^"‚À-Ø mÏaï°U˜„ùè‘wD<-Eî ¥Øúx܉0—gŽD°ÎqÙ»éÍ´ƒòÂûàiX7šŒ^G-ÿŠ”!<^ YÐ%OŽ»<çëÌ^梑ÿ¡ÚÀÖcán¼…,„.ZЃXJ{Ü•”‘P`£B$iAO vž%‹*Þ´aû{n[I Ô®ÊRÏQÍ,æÅ–_*ŸÂ¿%ªœºX•@þTù›Îלdõ³ë´ç„Ñ7#žB„ÿßCŽ=¡“þ0ó´ÿ$ïy«Õ?“ÞŒ«x_²—x€ó={Ü…6!Vx>ê†×0†ScR~¿±:ëØMIMWê÷»"êGµ,ÞÒYÓ1¥C¿kû.¿ö-óÜg7Ô^2Wñ*ë,닎T¬°:µÎ75Ñ®–úu;+Ó, ꂲ‹…xþey™®Ûwü™3œw”·½üÏÌßR=akûºŸ×+Hë(Éãï/é¥K%Ⴂ9²Ÿy‚B^ŽO¦0S–ó8ÿ×âãe­å ʉIí,'×vN¿V}W}Pu\½Zy]ô b?_îÉŠz°Ä)8)*”Þšºfs†i³)ÇòYO¶\zMšYšš%ÝöûŽŽâ‡Ò0þ¹Â!<¦œk\cï×Pß\n/P¸‹ ž@rN;­™ß<Å`{ñ&(¢¬VOfZäV­¦YÈ%êó©-»»†îu”ÿ¸µº@\1Tõ½e¾í¡Á z h¬–|” üUz&÷ßôâô…Ò^ósÓ0yƒ¨N+›¬\5¬.«n€c‰†T·ËÖ•^IVGO ÃÐIpž‚÷ØO’ ÇʱÍðði¢KDCÔªŒ=…s<4’3 lHäáþl5+®'/P;¨³dýŒ\G ^“óiù'"°x0áG¤q'ðSÄügˈiT1q›ôÆÔX(~ ëÁGàX"ýŒ¾Ñ>øîó fœJ¡Õ¦sëµ£uQ†M„"Ur@tºàXþù¿ä\MkwŸ˜ÙAû˜˜ñ±#ä2ô vf X x,P—ÃÞÐ!€ÃoáWŠôCzˆlò¾œó24™ýÚJ”â§Q9|é†óÁ (“Éô6k^D'kMõ°ïqú„Î÷±{¨¾4îé§5Äü/"…z…w¢oÀŒTÁa2)«¡¹,nx(ö=…VãH.';<”ŠG H Ò}€,Ç'÷ñQ”˜ÜLÆã^Ø=l3ñ/Å혶KBx  JŦÓÕœÐ_^n‰Lž—|mKIRñ¶_“svÊúX%þ$é‰ÿÿ×nñws»Ê’ÃyrÂï{ÿØ`3ޏÀap¦1üZ|3ýûã~ƒv1¥@Љãä&ª™ÞÆRÒãYè ¢ÒH½ÛöN¥¯+o rŸrúXólõm^;ï¶–4ßsÿÛRÕ8 ¶½f’“]díÒ]Uð…ì¼g%´áºÕu j™ZµÅ…Ug›1Iv†$w¸yEõŒÒ„MØÆ©ÛäýPR[TU:¦|V~vú©¤'›çp‡Êö ì¹ö¥&H ‹bÊß”.!ò6dÓf%žßX?(þc ԪL}Öo9oÊÚµZk[݈©y¼6]uX¹GÖ*Û&àm–Öªæ`ãpÙ9qŒ`äƒôsYPÅj]‹Uo&tzÕuAbý`ë6Í–G­/z®*W×ó¹“eÁÆ9¶±U׫—šJòuÊåú|KªS[9T¹»Ø•ÿGžQQè˜R9ÁüD»Þ˜f>'ë_b¯hU_°óëÿçÊßÉš&á«õbË'í3ɉQuWÙGò¶,¾ÔPÑžoà&¦Q°35†0B¸O%2%ÖÄ6-¯T+¦–çþ”Ñ”àŒÙKíAêáŸñÉD'&CÂËh8 #ð ¬ ‹3‰ÏÔ+²€æÒV:™ÓÃùÄZÁîÏéaodqXÓ©^ªâáKp Cúy¼‘Kž%¤ØFB€Å&Âb´ÿŒÕáW±tŒ‡aÄ>l2^Kq˜èÀfâ{°ƒh6Útƒ¯!½Œé!±~ÿ)þÕ¾Y>‡×<^SÒr[“6DYmeè£î«y¤èQ‚ŠÑY™ÅÛ^Åüù”¾‡Ô‚AP5tÿ0†@t ½ý`ëaw=\-ká H0&ÄúSk9kØõœ¿"¢Ö¯m ÍfW}Ñvæh |Ü ¹ÆØÍ\ÍDß௰ӄ••È"X™l9»‹óÐC;-¥ÏÓ؇éÖÏœ ú)1‘Ø‹?ðð/ û ]‰¶#w™¦{2ûH'zŒ:ÊñÛøhÃì06¾~FvbyxžItQ­¬L:€ö£i:‹¤Üô6j8½Š^‡ì'd%¢‡/1Á›ñë¸~ë&ÏÒ3è*•í^ß¼uî_®W¯0¨HR^x1S‰ ‚æûÏñ·­„ƒ‚$´•¹*HðÙŸøKÐ5¿·>e>aþVÆ4–¨'GÐY,IØéÈÙœCd > `·åûÚ®º_¹w×^µ=¶­_Üò§ûuS@ÃÖúá ×ë6U‡V­®n©|Rïˆ×o+ʾ gȧòë‹g‹ŽiÃLEÖK«ÒQ"K J©n[¦”Ç4mÈÙžòSîƒB^Y ÿ¿²óÅ/ŠW շ̯í˪³\ܺiµùŽ?5g„#x…ý²‡g›wH¶¯Kòßørc`ò™§óÇ¿·\ªX#²­·–˜Uº<ÙÁKázÙÍAcˆ£Åy®Šcb»dýbî5&¨(ò 2Û…Êã¶k¹Ý«ò¤óISI«Üù‡|xa˜ä q™Â\1–Ÿ¡¯+´ÿ\Ùe¾©‰R5ÎY~°,7œOÍ|Åݘþ"«Mówýéæ?ìoõmú¹Ö…ºµ¹Oò¥û¤;ËoæœÍÚUÔ®ö² –ušû%²5ªh}‰.D6ªðqN¿£¼9ù}°¢ÏeO 2òGH.©î™qÛ 'QõM¾½¨3ËʚkŒ¼‡qø_4“(ƵøZŒ‹²Ð-p7Z¥ý‰7¬Y_Y“8ÓB§°³w²Y8ë4k,ë_¼ƒ|OõàÝÄÿˆx?–`ŸñKäò7%`ƒÑcx7¼_‹¿CSðqxú %f+ÉBò7, ‚Ä"ýásŒ®àÿ‚VúGúEú÷¡ý×û?ñíö¦ý¼¯útø5ÈoãQ©2K ^æŸÛ!Èh˱p³vÄlzƹAö…ÀX™! Àè™3 TëáÍä!Üæcøü¸rÑ"«‘$« -¬+áCùwíùˆ7‘Ï#Ë£r"¼9gÉÝðWæuÆ+è=$…쀄"9Æ">Ñ"–Ž=ƒí¢×ÑÏéôŸÔê:„ý™ÂzKwp¼Ø‡©§¤œJdí¡·RgH ±Ÿ§À}‘áðix)²}Ž>§·EãQ5È…ÐSÄ8öÆÂ0ñFLØFjû<Ë—½šýëÍ%ýé V0+šEQmäâ_â$~[OÀøÈ!¸™„FÀ»àÙp´¦ð(j·§;¯SF°Øgñ™ØhoHßVÈ´àúàÓüoúõçù]÷{ãYÙñ§üx¾A¾s½;|þç¿<$YF¥±Tì-1ß⯅ùRã±ÄL¼mÓ:yKm·{lã°†;°CÙÒ,lüÒTÎõ¤uý]3¯ºÒá¨éiøÔ°½ªÇ(ÐòG„<~¸ì±êófýx]ƒ‰ëpX!ýOæÕŽ/Uk{jnÖìu4kœåÚç:^Céb BK³4ÝJ[‘Wö×¼Ná ãäš{5þ–Í W³QæÍ7gïOVmÂÝ›ËWÜ®5´hÌ«ÚenúMw¶ôo¡~›6¢p^êÎlŽìKªý©îûÒW)º‚µ–D{—qƒvŒäBÉq¡êtù•Ô_¶CÉcvÉ ‘ÖÛVÖÌwÝw,Ó+®J'ïp6ǹשXwÈ;Ølâol"ÎÃFaßa³ðUd4É!î“ÈÚ›]ÌêËÉâ˜BÓÙFº‘>E£'R_ð餓tPi¤Øó|ƈ¡ÔI²‚°ajò"QJÉ™žŒñˆ ܆JÐÕØt"SÈÄ™ƒÃèÈÒíïå×»ºÂï®_­o?¦Ï× ¾Œ×ÿùóïã340 ào_Ùê5>'ƒeàHl º•)Eº°Â‘!mÌ•àä­…ßA~àœ‚ÁÈv  ¾ &2…ÎMCÑ=¨ BšˆùÔnzPè§µk ×]Z·;êê/ü,ò'ŒN®EÈdÐ Báuà °Â3à:äÑ}ýg*‡ËÙÂΤÆR}è㤋:Æ:Hoô´×7´‚õ˜ºC~$cé:7tEèÿÿÿ˜wTÙÿ¿×ºöÞ»«¢~°c)!e2åÞ;“„.ˆX¨ŠA:"5’Ò! ¡ŠØ;ÄÞÖÞë®eímu¿óûùgΙdfι÷õ~=Ïüb¤ð3u%¥ÂI!Çópsö¹Ýq¶8{ººz¤ðŽPØÊ…ëꂦúž÷ê.Yäݰ(xI@Þ†¾ù«ÊÛë.Úóï¼·;°%µÑ¡qJ}žý‘½¶aFóîÆívëÕŠ?«L•?LoŒ<ÝJÝ ãlãwíüÒ‰JK±]ñLé+Ïɳ% ßô,=K[Pñºb·EgíU¿³ñCsvëÂÖƒ-1ÛÏ7ú4U4}lpªw®åT{UT2ëJ#ò‰Ë#ëCÖEÞIôÙܾ~Hà¥àÞQ­ñGbF,Ùttk›r޾Cû]•$}œ>7ubvbñ5U^k:dØoˆ05”ZLCm»«§–7•{VDTN4ËJŒneÉz'ÃkíeFÎõøÞa³"“­q¯ÖnK9U1¿d­Æ·ò¬}JͲsù.ÉS ‹2Ë\,-ýU=dÕòKðŽ¯­îMoª5¥­©Ž‰G3+~êâŠæe´%M•~T—”J3w¬ÝÜ™Lh×2K{—ì“k‹'(Æ)9ŠAù›ÓåYc²g(w¶UÚí½vŒj:¡IÍÉ[ |¯‡ùŸ$»S*v6Žø¼Vø Ç{RÎ¨Š¶1eâ\‘µ¡Ùt#'êdz3Û¾Ôj8 ÝT è…Ãõ¢pÑßl ÿ›ÁS²…ZJÄS?È2"Ž*¤ÒÉÝxOb4q•üþ#(<æÎòXêvÏyüò&çØåj¹ÇN„ç ž†|C Oà™üÎ`î4.‡+óœÉQº*]®8á²dÅN×ß]æºôtqçØø'ñ~d¡ÀÛëùg¹ûØ®•ÿ7Ï[Ëæå ÿ1Œ3ø²Šö”ô¯/óÝè'öÇü¦ú÷vð« ˜æwÓy@öšY¼ED!ì ïOË+ì†k±BÌŠçá×Á/fµø…x‡¨‰9O߀'áXç R8”N`F£ùà!xK&øÂv¤¯?©è1ôZº„ñDÝ`âB ìIM%ž£^"+¨À„½Èc°¹‰â˜³ð „"a/XÄÞûÆ3MÞÙk #o¬Ï\„RäNOAïÙÜ…JÐHú{ΣßÓvºÞ¿ÀO굌C‰ÁpŽ|J'÷mäBB\&FQ‹Ao8,¤ É©Ä5l !·¿[O×tmž‚7äÑFïFÚƈNû °¹-~VBMþµÒ´«f`ÍÐúÛG¶|¬ßÚ˜Þ|Çn¬Ùn{S?«¹°©°!¦6¡º¬:¹ê‚y©WY?ÃZÃjc¡Áɧ§µ‡µjÝu£jXÞ­ØÃÉ_µÁuöæ·Í½Zî´$¶ŒkyÞr¶¥´¥ ¹¸±¢ñpSks[³gct}ƒýŽ}ou´îj^G\ßðn›“œ³>fŒŽÙòpMKLR*Ÿ¶ößuŠ8<«Xã¯n-˜žR”t:ífö䢪Ç:±©Õ2¼rmUuÅkË ëEûýº´Êµ¦á¦æÇ–‹†ùEÂÂÊðRgùÕá–V„§Eg¥ìز*tÔ†ÚmJ’Œó+j+žëî+ædæÈÔ/êÑŽ3ͽ-“òÒflmXÔòWƒÅÔYz2÷궪Ütå2c|¥VãPè{6G“ß3óï S×LˆnÏ¿hÀu‘ª› Y‘]Ö·ølq‚‚(ž.«”^R7i[u£ÍϛǷ®l¨+y°Zæ5+²%Xƒœˆaà0ù ß¡x.±…ìO-F6:‹^N2ÌYð-¥g1>¢ŒN¥Árµ–Á.ê 5œ¥ö‚…Œ î ìÚUT‡pI“ äïT9žDø)¬;q\ão÷ìšäºlYog_×—ÿ­Èw¿ÍyÄÁ=ܹwñzÐA~nåŸõÜâÞ‡£çÜà äê8þœóž7O1WÉIá´ñnñI39l"#†aîØu~«`.¶_É=Å_Š…cË…#„Vá7ò1v‰°€Ê•ß¼ã¼Ý|E~CüB|_úh½Îú;t÷?é[éóU<Çk™÷i‘¸ð<Ao¾Dx “ /c‡°j¡‘zŠ:éxÑe£o²ÊØãJHO0 ÊÁ6p —Au›\I½D3èÐŒzÂv`‚9)*]ï;‰í¢Ñ ú*Œá°ƒ¹+Þ/Ib‰®z„º£k0öEÃQôSïõ Ôkóéu£˜h ·2•t JAÑ$$ƒÑb8ŒæŠšD½é0þ ÐN9‚I0 -T#Å€A Šê¢F#e¦Vƒc”#eþ§Òñ½Ø[þþA^Ÿ/¼ƒÏ$´8#0 j(Êßoë#Í#yº4³ä”>§œ0﬜WWÐj¿]ñ¶b‚e‘é¾Ùf¶[Bë›jW÷±6Vxš7U˜<ÊG ÷ Ý Ý)ú mý:]‹úª†RƤ.NXW@—5Ù?6 Ù~¤Å³ÅµeJ˸í󛣎ÔYëâí[ë'5aÍ‹šQ“CãÉÚ0Ë9ÍËNÆ3é(ÝYƒ§V%»“X×'£#û}ê•ø‚äÔlgik©¿òlÞ¢t]²5]_0¹èMɽŸå†¹Ð8ÄðÎPU6ÁP©ê» VCŒùUMîž©¹ªÎ8|Ó»D—Ô©Æt­ß:/vî¶Etƾd‹Lªžoül]kuTýW0'ç~~»6´>`û K”<7Í9&&åµ¶ºV];Y´õgfXþM…§þbÕ…†˜Šp…GÁli‡òjAEŠwÔ稉ù•º›ú‡Z›|ŒtF!Ý! +4%+·hôï”¶¢“º¾Õ šþ¶ʾȹGö[ÙLÕáíD'Pó¨nT ÙI€*Cß§ŸÐeô´†þxbWIžØ[˜rf8maôôPú:›Ú j@3Åù’¨%ÐúÀ«Ô `¥Æ€±hð%|ˆFü>KXˆeó4î!Ë/¹ u^µ,Òù…ôÈôpäüÁù"Ðð{ñð†º¿yݵœÎï\ï<7ˆ3“+å¾÷<ÈÓ æñý±Qx5!'ȾÄGá;ÁlkFc…‰<ƒ`µ°'~Ÿ¨"\É1t3WÜìÛ?Ðhö÷ó²zßñZî­öÆ|6øðVFûôöïëâ÷Ýë‡÷ßÞÑoðÉ$˜ŠõžbÕ‚UÂNrúDŸa›Å £I´¸À> „Cùˆ,_À<Ð ¤R~ðËØ¿&SÁjä„Âa)Â*6Q\f°—ƧÒgšw—¸“YBC(D}Ås½K%´'JDéF´Ž:p(aoºô!µø;¿¦ÑS˜bô½-B8ìëáw¸¥ÒÙ @‡ÁW0þA° Ê f€p°A#œG¢è8 8(V³ÿyÂ…ì:›…>X® D8’h"âˆ!øáV¼'9Ìû|ÆIµ±pø¶_Û&eÜsR½ bMÈ8§4I‘#/Tò ƒ¬ßí£í¥6uµ©ŸA¦¥u„~¿n½n‰!Ři2ÞÖ¯ÖFê>jç©CJ§Úœ×oÛ-»¦ë_vØÚðk»CKïí¼†uößjcíq¶WU+ªCìéõ oêZj.ל¨ÙP!-;¢÷1ýW3§n¡}uÕ¹’÷_R¦gäö’§«tª3Ê…¡EûóÄùW¤˜tŽ2Æðºü?óŒÊÕæ4ÝÓ’GÚU†2yjF@öh•¢|CÝûæ¦6á‰àR‡øyÁík÷D»ÅDçÒ@‘›y¢¥Hó¢p¦j²ñŒíónïO5±=sþ(ð,©‘T—(ÇåiÒÞ¤îÈsÕk Ê:óí[ö%{ÁºÓ{†îüU7GsD>M:©8ÏxTÿ1{Vlx˜vËõ_:žzeþÍ-דlYβžŠ´ÒÁ†•åïË•ùŠ+Ê&ÍoÚɹ!áã™?Vöʧc'ovw$²;h8¿Ó 'ý¥0Á4NûÓ#iœ‘zoðšíÕ!úÂ|bΊgúï¿…s™ÌmØ ~ˆæ!Gt”ºŠÏÔø=D  'ÌÚÿГPá/0G¾Äí²³ËòÉ+¬àºÝöºðøéÙì™ìÆ[†3Âþx$~ :…71GÁpN g÷9¯—ÀûßÁÙ챜w•7–;›Kpðÿ‘×YëTãŽø¡w'ºðw¸A8Œã~ÄoìTÎ:Rúä5ÝÛà}Ìß? )p¦o£Dì½Ù눗‡÷ Ÿ>ç%³¼þ«Ä¿|¦I‚$ß%ëEãh«p‘`VϺàEi°6l°PÑh&’ŽgiQI@–ávÂ4èƒG`\ ˆ )À̇ëYÖË%C©9à78\A?°ŸÌÑL®h¦¸•Aô&4-‹ •ÐËèù0“µà)l¢î >ׇjj‹¿'þ*ÁFôº„LôÔ ÖÃÛìï' ‰H ƒKÔ ê3¸GÃþ(ƒAd{P ûÃ_ðº€pvEÈŒlŒŠš®(òÐ>8¦üˆ;¸ŠüDƒÉvâ_â*Õ |ƒíkºE†Dym׊IÂVî‰zºyvò_ië7ŸŠœs9EU|Äü¸¾¢á|M µ´¢Jc,xžÛ[Š+jK¶«GëÖègÛ sµvÍP­¥ô?ùç¬ü ëóãväÖȶ)U¦)öoõ¨á°ªÝcûP›dK¯N®Ækòl’ÚäšÁÕ.ÖwÖ}ÖUiUÖu5Qu/ëƒëc*ÊñԴĤ¼uêD«¦E™–c.n—+eÚíÚ|ýEóófóPó“²_zÃDz5æÅE²ôMÒt…ÂÔ³:¢>©©¬i¤«Šv¿ëÝ;î}ösS}sÝòJž¦]U`ð¬þwÿ²Ý=KÅyËs<ó¿–ì14\UÇ–®×œTÞ,´i/j R_+NË{P·ï}Çå½³w¿V6æþžñx‘¾ÊtxX?#$‡¾A}Féîô_(€ùÎ,¤wS¸TS/ÀCfÜ '¡F¸TQµä]¬‹;ÖmµK¢K/÷`ÎOÍëÉ9ê=wsc<}ùQ¸ß%…Ùfá ¼N%ñ & þáqx8Ï?œWâYáz‹£âÆsøÏÜEüBá;¡…ø¡DB>±˜l£raø@q©ûP? n \‚ˆßНˆr$]~©~‹Ä;Ew$”×Ko/Ÿe¾ã|Þ{9KJD†+¾#‰¡8¹ çàÎüsüùAV/4áÙBƒà4i‡ã‘<ÌRó´œ>õ ,c!„…0„Å ½d?p‹ #Ç‚\ØJyÏä0ê ‘CΤP€þÁrà`°ŸíÈ!À°yYˆîÂ8ÚNf‰õ),†Q0Þƒ Ê‘ÀNÅ!üfÀ íG [a\‹ÒÑ!¸ œ&•TðB±è8è@G˜fš ³™oðO4’ùƒqcîÓC™×LO†b2é@öÎ{Ñb:öåT#Û‡w)wò>€¬£º“'1?"’ü[&øÄÄ{'˜@ÎeB%Ý}ºŽ þwõÒ]ìù4Õš¶Æ?m3+¯”iŠ6¤´%¶¤¸¦®I«Ý:5ßIÙ¨“•YŒ#õß5‹Ô¥r•ŸÜš_”V¥¤Š,¢¼«ßan¯2U©qª½gûQ»ºîJí6›¿íeÍ šé5˜-ÕvÁÖYó¤*²2°U±rªgÔ$VŸ×ûäý™T´mj1§ÄZº®$&G£˜£lQ_3>2v’u7ÔÿSÿTMPÒ¼Õž){jÜ¡ÚPBª— L!ö1µkL Ï“_Ä>MÛFK?æMÏpÉÜ•R=ÄrÙ¬0Í2~Óÿkü³òŽm›îlN”‰3UŠ×jN)cUqê¥Ŧœí¹wä}5×µbeº¢Üò¦uèÁøú¼Òשekƒ£F&Z ;uቧ% Ìçæ{'õøµ¾-Z\xÛøÐälšiâêÛÚbŽ"P¾U1£È¼ÁÖò&¾Ô1° ­D!0tÂèáhëó­P·ƒp´õ 0›$!’nÌ|–mfA.*¥ƒý'ù‚S( TCf1ò„¡¡,W-9d-Ý“ÚFˆäðõ…LÅRy8lS}e3”ç±Ïã1g7Áó߆µóF ½À*²óÃp#±x«À…×î9Thþx 6ò9|1ïw‘g·7ï3Ï‘;÷†_ ØG|j4–¡FBŒ-ªôâˆW0Ã$ÏèN–ÀBÉV8€ùB_ÍôZë;Î ²™³Š_ŠÝ}í¾Ž>„ìeN¢fÑ&¦Ž9Å(Eq¢wP@D·°.þ%þ=ÌŠwQr±Ýfv¢­À“ÌBtšÞFPSAL×a;ìKßRÐ΃zj.yŒŠ‰@6C#›«Ý”‰L&†S.ÔD0ÔZ²¸O½†÷)ÛiŸÁAàŽÁ=,gî‡ÎT èK‘U#'ÆÄ|cLl«>¤³¹î6£ßÒ@ îÁ4‡¾ À'BF…Âÿ×dÒ2EÎt#›é,Ð  ZBß{‰"™Óô.z$3‘î‚/Ù£†íç$„˜_b±¤„îN)Èuì»ejqC°ƒÿ%k.1d¦KÚ%3$_%Óל}––ÑžñN:ª¬Ù¦¨¹gm0 ‘ŽN®‰_—t$åA¢`óéä·aÚMekË^ƒ 4Κeº FÒtÐn^W^i<¡ÿ¤ÿj\Sþµü´9¿ªÙöÔvÞ^U÷µæ½õ`µkSSjNÚÆÔÍ®ó±Ýª^RåaYneÙj™\!2­Òrt~zÁ#©»ìEÉÓÒAÒŒÒaÚfݲ2gãE}²êž"¼øCöŠkq”b­ê–r¾luÖŒmcÓN«/Yï[néžË^nþº!úÏÜ‹%¡š\ù¸ÂºÂ+ʬ2ÓÇŠ¥5 ªÖUþ]§Ï(Ü”nÝœíýOÆÛ¢]¾õ@ãýí7k÷÷Ø·3ùæÖTyÅÂŒé™{J5–•ú›Ú­[î·oÜ6@5Ìø^™šeIû´­`ëõ„–ˆ1›"Ò7æMRÑ=2Ž(÷×¼SŽ—ïR|”gËaÎòuç…ó1¾TPÑ!p9"Q )О`3h%%ðOê3å‡Ðãh-èÃîœSäRàD¨ˆB°€  ÜA.`=$]€zÌšà¿d•Gœ"Âp'ê³sï | °>ýÊgö‰þfêéWÈ—v`Ò™nlë•ÒKèVÚAt^<ßÛÃç‘È F èKÇ8¼vQ}È…d 8#zâãëçá·.`LÐ×UÇÂæÅ>‰Ã6oÞ’’þI:V½Þèh+kÑRòq²dÕ3ý‡’…dA?9×]>ß´¬¼ ìGùÓò}¦Ww­¨:»ÊjÖ—g˜z˜ÿ+ŸR¾º,ÎâP3®¶¯½ÖþÐöÃzÉz¤jbEIåjf?T¯nø\Z[b™X–­ï¯ï[~Í”a”j÷¨N*JÖȪsÍ%}uS‹ÂµçµGÕ"õ"ÕP…¬¸T>Fº9}Q†³LZ” ’’ÛZÔ½€“Bäõ1~5Åô¬‹±(ñk΋bZß®?P[òŸÚÄîlAQô=ª/úª`Ëþ») '€Áh8Ü¢©JðMÙaèJÿM–PÛÁ>˜GES'ð-ø8*•˜ߣ¹°…ê.L$\ðR"’èF<ÃÇëGЈÕq—pzðʹÁ< Á~òø Ÿ†=üœTbŽB xÈ×ðÇ Ž þäc2þ<Á<Þ4a _ÀŸ!pÆtBȽʿÈ,À‰—c” ¡„¬å “ ôE^Ž¢•Œ3—^Ž..èEfÜDãDÿcžA%Ãõ¨ù²Y‹$L‰È·a¥KP}P¯UG‚—­úÒ'Ü9rXtyt¯È;¡_Â:㦤uÛöwîxéu­ƒe]Åðºÿÿÿ—TéÛÅÁÞÛZ×.6DÙµWV%™™$ó–™PQP)"¢Hï½C€H  éQì ×®+¶UWtmËbok/¿ùNNNæd’Ì;ož{ïïîk\ižV³@Ûªó¬Z¢åi’ª/h€¦—v˜¾Oý†Ã}ݺpCR½ZwR+«é¯—×›_X ÍN&GSŒ¡RWŸc ·>°¾´•ØÛ,ók¯W^®Ø_ž_ÁS¥•_,ûW¾R1AU]ü4gHñóÒ ÅhUrÅÍÒìâÄ<×d]BRÖò̵±Q¹ióòÛ2¤ûHÕoJsÓR3+OWÏg¤ïNhM;Y²§æŽ.¨¦LÃ*^dÞʲ”Ÿª’¨4º-Æ„j^ùem/iNäõ8Auµ&®|ìFQ§*§¶»n±á`ºÐ1)-ꀿó–šx§tk¼9Ä'¢oõ>ó©’ýñg´9úÂB©OöÈØ€mºðÎâåÕÙl~©Q)+åÍò‘ò+2yþÏéÊuîÄA =ÐÜÀUúÜÁ|-h:¼\è.X 'Ãe(xC-° /Ðþ`&øàLö¬øŽz¬ö†%ÂvÁ\êÔ=Á5ð ®ÄÁ4OtJøB°EàM $¶¾ NPcz®do~'•ÀÆ›Â/$‘ZBA‘×øåÄi"’`ÉÊÕÉHrH&ð?}ˆ›‚‰3Dá.b aç$I~À—¸Ï÷'(ⱜ\(ÚG_G„ŸEKÀzúøc¼Å§ØibRìÄ„Ðj‘ ¢c(3ÌD¼ ¯C±ð=XŒ'áÌÌJŸý‘Õ›ö#t OaêpxKísÿÈSÏxF^Ž{‰„ð…õ ~óiš6Yác ÄáYð¦Ãp&ô‡=a*­] ¿ùh8„ºè2ú¢¨]4 d;t ø@=£ ô=á2º?ðGÁ8 EÃkDÇa 4Â7Üñ!ˆá.à ¦À, ¢w(MFs ôDf¤ÁÃPOîz^xó/Û$ž$a{3{ÑDäwÒ‡ÁǶ»ØiG ½àËÜàV„ÔÌrq€ø_É{ O²ZÒ î`ç²ãðø 4· ‹`8.Á®bã–Q·cºE·îرOx ùv$f}ª2íp‚WǪ̂ï‘aÁ;ßGô-Ü¥³Z­mÛì¶¡V©ù„¡£¦P;O{A³]}«t±b6WßÏlx­o7*ÌŽ–NS‡á¢~ŸÞÏ8Ù’`ÛØø½ÁÒpÇÞhm¶öµñ­}í! ïŒ vs{½^¼VU]Xþ­tܯD%·*Ï—Î/ϬÌ>¬ïYû¼ÒRÙ7J,Ù^žø!ß· 2ãRU<¡ì²f’a±eˆ>\þ«4¹¼¶‚'ýÖ+õG~·ê~6Ÿæ%Í_wùë¦ä´¥5ä÷—•– -¯­žPÓTýVåUqF¾?)3fA^@Å‘ªC•¥½ ÃòØÂ uZ–7°gêçÊvÇIÃß-ˆè¹ùÊÆi™©êÁÚâܸQäÊÄoI=“ïÆ‡ÆÁØeÙþå—õËMÛôRõ Òr‰LY²JV™â}–œ¾ŠOvˆ£ÆÉ« wлé(`B™È.[¡+ ÂQH‹žã 8±i/È&a9è‚˘HêQ>:DÛ“0‚pö£üD¿Áh}ZØF.|£&/)/~ ‘Ái óGPqV8›:F ¾»÷ ÆP>Ôò#QGî£\øF²„œEvñ5üÍdà+9“ÚCF›Ý·“[I–ÜJô$©Dãê÷üj*§Å ÞcþÿˆaäA_r(¤×Ál*ê¤Ut”ߢ9ÌHVÓÁ¢ p$ÜCé%ð5ç.Nx%ž…'â4'¶õÞÛú¯ÍÀAp!žËžfŽ ãˆ^ ±‹èà-áð¢‰D~Œ0¤B>ž<á[z—È $1¾ éiÐ .D“P;\ ·‰é'PÍ,dÞàAÌ5˜ ®‚V°öcÁ#º^´IÔN'‹PFŸ‡¹Ø—YÀ\aü<œ¼^®)Ûñ"õ¢t½J+ß•´8ê]ÔHu1Õµð}™OÕYͪuÅEYM ¾ÛvÎËß®du7ï4ZzÚ<-ÛÕB§_eØgX£3UÒ!5SIõËŒMÃ-{-ƒ­[¶4Ûê,ó¬?¬¿Ûx žGÛ—Zm7´ÙÂmí§míÖ%v¯F[SHÓ¾¦mÖªªd^y wcNQÁÙÌÜ5 Sã]LjÓ·¤=s®¦È#.E[e ZgKnõÑâÈR²æ™ùký “‹E­#ÛR¬,í!#2³cmÉ›åá&ºa±mj£‹ÉOѳ¤¨ìIéFÙÛÒ½ÕiõÿÓÇWM»%Þ7ÿ‰¢^ÝT:-kdrr†UöC;Â4¦^]{T{¾¤)¥#ÜqgÏèEiwÒÜ‚ü¼ßÄÜ“-W¨¥#ï†6‡ð"/&ú$þ™ÜžµUÖ&«hS9){—Í•—–ÈŠÌÒ£‘)’,þ}~›ègèÇ Fý½¾0Þt/X "_f$~ O—€0¦Ž9Ãì‡oHGZœ£÷%(JX*‚ѧrSÓ×Áo`(E¢•¢f%,üY8øÊ¯¥ù/ÉhÒš…/¡tpš–á Á^F‰·7Ú2o»wàçöÌÃ!¶+Ö©ÊC¹ rKû•SehúÖõ·7ÏhnýŰ¼\šì‘“ݧ:Ìèf 0 0EšCÌSŒcŒ®¦E–‹›u–-ÃøÒˆ›…ÍÿZ¤¶9–†¨†vÿÆÍšO7n±—Ø\mŒõy¡©·þ³fHM€!Ä0ÝøÃlìcbqoø§¡OCë*=¬Ø”=(nA”WDCô¸q sãüâæÔo‹Våü“¿J~§øe±M󯵵nvy¼¥¢S7ȪÒ?©4TÂÚœªHõí‰ ÿ‚‘±?¢Ø¼w•ž¦Õº×ÕÎå{ þ•=à’mZÅöʧ5[ŒK5 E¡±(Ì-ú)­Ò%ÚŠ„ÒôÄÖhkÎêŠòª ª—ªÏe岤¢¨¼E9§ò:eWs'm}ï½#ۡ䱬[^”ÛáyáqñObD±¼hmä˜ä£ùF).\YR)¿([Ql*ÔGXŸÅ¯'(~«è\Á|Eóq:"Á[° A½™(Ê8܇àax t…"+h¦b½àxúWX+qonnša2V!!X ëE‰`½ °ŸÀ—´’·É&Â@î"ýW¥^í¼ƒä|RF^p/ä-$û’o´úoo6Ì›Kœ!ËÉ6Á~ò5±˜´“:Á*•ö`RXbíhIò÷‰\¡€÷šzDÅ}þäHb1ƒØÍG@bñŽ&ÿàëxc¿Óˆy‹nq\÷2HrMRíåæ9^üV|—1à6¼÷Ç nRÅ=¸ÙqëNcèÛ´àáXè„YvÇ£¹PM¦ñ+ù^ü'¤;9ƒP3„p:|ã˸‡¹ìj…uh4_вÁèsÎ3"°|…(Œ]$öf¦0ÃÄî¬+;™Y€V€O¢‡¢n\îƒÁ"x6‚~p:ˆH4i±€{Ä¡Tø‘#Ò$¨†«8â\À`&C_¢[èxÍF½a ã2,6Â4䃊à<¸|¥ŸÓýà$àÁ­k#€Q¦@†ÁPDŸu\Æÿƒ®¢2ð +ñ |H<Àoe@¤w^p÷LéÉìsRµÆ±qHkæî\“£zŒj™Î·AÑ<³!ß:ÖîÜ4×ð=i{Ž(uÙŽ²þ5Ææg–ÆÁ¦hs°é+—/¯,ƒÌõmƒ|ݹñNCi³KóɆhke›-ÑNØ3lÛlJë¿ÆZ·¤êQi‰¼Lå¤rWÒWè¿ÔÕÔš®Õͨî&Ùg’wÅ \²ãÖVm°$Ü-V™i~£û»’§,V¹Umª.Ö^ÕYT…y/s®Hc ï)|µ‚ZU¥—òŠ*T=µ h#«‹*B¥SâÏ%D—j47´Uª®’Ùy *_«/ToUY•?*ÒË# %É«#·&EÞ’M/[UYT„óƒe}Ë~”Iáʨ’qy÷²Û¤Ã*$ÕßU“´O*wd‹ºgíÊ-‘RyªÌ£‰Þ‘÷¢Ç%iv;¿í•å–Qøkn·â]²¶¢Ýßò÷†e°ùÄC♾/ø‰Ÿ£ßÁg˜ÇÂàÂÑ—;tCß`$zóÐÄçÜs,þî!ÇÁ4¸(`,H“ø‰Ÿ‚:Z.ʧç ZÈf"†w†|I~æÇóvvP>D(q”ˆ#?Q ^)9…Ì¢üHuÚ½Ò½7ÿ™@*‰Nb1\p–¤ˆ-Äv’¡œ„P‰mÃ_ÏñÌ2øŠN)¸nø‘ð$;ùñGó ÷ŸÈÇÄ{÷ D1ˆhu×ó}Dbp`¾!gVÄ>eã8Nû‚Cà?‘+ŠÇËàr(ÀØáVøt¢}È =¸œ›Å­ÄÏ€sà&\Ë`…<4õ@[@6;è“ '×F+P(ÇÜup.R¡ýèÃlb>óýÜ|¤á”b­å¨¥Ê<«ñFsBsßæ“MÎAv÷¦?vçí okŸa_fûf?Ý2l_WëzSŽRV]£W×»˜w™Ç›MŽæ3æûæEfã.ý]ÝøšIº/¶Í5ö·Ö؆{ }-{ #ê7[Û¦Y¶š¢Ì7Ìó9cWm–êœL­xYý¹èA‘LýV­SŽQuU$ÊÎå.K˜ñ*Lý9*"bdä­èè¨Þáµþú ú‡†ƒ¸¶¸f·¾­Ú5/9.*éQæ«8· eÅy­EÝZñ[Õ£ªîÕo«‹j.×´”g箉™™­Tí¨îT;«jAêmÆåV©îžz·ïÈõ-üGš—3){oáÙ˜¢<%¬<^¹RX~±l¶úƵ*E¹©ÈQ+¿«y~(Êös O;WY^â&÷RŽQÞÉ}ìä¿ýväñ°´À½Þ7ºRnRåŠdÿ&½T8Mú@ú0ã˜ç@þìÕ<½Àâ=Є^3h7êεô¹PŠ˜ q=Ê‚“¡3, '€'Ð o"\†vÃnXÎ5þ÷"oú$7/m`5ÛŶ GS´ Z¨ Ê(r(19ÜÀ½>ãg…Ä^Ââ>ƒXJvŽœJüˆ©T éKÈùI\Ë«%QVÞ&þ"…Z*|Dú“©‹älaü@2uýʵ[½ñšÎµFÉPv8sì _ñßðs¸tëXFŒ!|5±Œ¼Jº Ò„Rú ÍàœS0Îâý,¯‘dy¸y½ðÔ³oÐz†ÀØÉÝgrÀOÁAìË>âòï$f– tÔ?D½PÈïè³¢)Â«Ô ª–tL …XÂN‡é½ð.ã€çâý° ž†1\K*ƒÃ`rƒÏ¡ žá´­dSÅ›%†åÆîÆDc¤¹›m‘ý•å¾å¼õª¥ËìlÞcœ`ª6,ª=¤;Zßhþ×ü“ÅÍ$5,4\©—šNšJŒE†#†“õ õ!zI ZR¬s°2Dzƒê銤ìÐ Z.ßIÆõVlÓú{Z·ß‰ðŠM‰×FjwWMÓ¬ª¬¹^óY£P÷ÕÕú+æçôÊÊM=Ý‘‘ª¾b™¡?¢ÍÑÁºE†÷–µV¼±v \÷9UW!ÓhÕ‰*z·ÕGXÙú}Úß+K•/¤éù@š‘õ ydrSOeŪš“U?+ûãêT‹ƒáªZ©–¬+í]Úvj¿ºf‰òŸ"ÿ_á-¹wåËò¸è¾FnÙ^31¶{•º#«±¬wEoeÙþ¢˜¢Ãóó»"§0§Ý×ðrÉéBšþÎ$¡ZØÝB9¯7pŒQ›O‘ßV÷ ‰û¯·ƒDvápf<¾ÑIt€ó×?8""€Ì>¦{ ­ô S‰Yä#2›WL¼!–RRREPcø*ò“ ™cCrõ„$)%µŠ8Ï—“³)F8•ZHð‰Þ|á`nÆ¿‘W)õ‡ˆ“<ôkÞy|ñâ¯ííUìíùÄó'Ö,l'hþDâA‘ó¨Çü­|1!8(¢Ù\ƒéM‚7¡“¡ÔC^ ›ÈF'Ù—’?Åfö(ZJ/ ¾!Þàå$™ÂýB&¾Éådw´ ã¸|{ 70]hÚQ þ s¸ÞVÇéª ÍC&xÞ‡6x ~†ÙÙ:0'ñ!ŽKK9þŸèí¢«t7¤ÁÙܿрÚÐP¼w¡¤‡gÁ!.s»¡&Ž›˜kÌf–Äíà+°Â”ÍyÂ]æ¹äˆ§«§«d¦Dãéëéí!ñÜÍîñ^=JÎÓ­µîiäÙÕèËÿ”k•U¡Å3 æ)/Õ¤›Ãíßí;š®7Iš^ï¾¶·«õdëßÍÛ¬3-W,YöM9öD»¥!Ô>ÞÚÃ2Ó¼ÜúÀ2¬>R7¹N§/Ò?5<2œ2Œ6þS?Öø“ñy½Àp[7¡înšîœ¦¶\TÐ!ûEû°*COÔôS6í*hOýî7nóím¾gÃ7„Xüûo”oz8l»=²3úS|ŽÒQ*„峕ÊT ­v®Ûaòª[WíWÑC‘Xyßþ¶é€…gšdÄúïu}Ì!õ#õïUmÃy…÷uc5=Ko”\¨ÐhNZ̈cÍue®g nf'eDVE½,¢®ÑÈ5.uOª}¥¯R4…V•¨ndÍŠòqeÉž•©³™«Œí ¼•y“ò³¥|ÅdeÄÎë2‚¾EJ;•›[@•MW8ËžVÌSv”åo+l/*ŠÂ&­\Ï›B^§> ƒè÷Œº3`:×ÝÂãÈ)á ?èÐë:'zÁÌ0Õìqü’yÈ ÁnlǼãÚÇR8“ž&ì2E{KE¤h·`*•@&Ådoâ:qTèBõ£v ® ¶Q'XÔI… W ÷ :ÈCÔ}j°p®ð´P$èEÅ“‘ä7r Å_MúRÛ)‰Ð kĉ^w<'xyx¼—Ôyž[ÓmÝßëÂÖý†GÐ>Ô Á)ªŸ@(X"ì+ ~éa*NFÙÌ ®W^Àv„û0~LS…g1ýÄŒïB=‘ Od†Š¡L´“K…ð"Î’L7vsy Wv Þ.qô–Á)@Á±õß"£p„ð€Ð²Åœ†ÀsàWˆá¯è3ü .À¹x .Aƒà{(æ)‹þt§_ çìÉK¶»8-¢×‹JÁ{¶Ä3Ù㺊'±~L,^‚Ú@;Xº|Ïñd_Žóž îHs´ùsûðXCoX Æ‚=à'ïâÌWÇ}ë=ÈÀCbá[HpjuÂ>xs†ÑpÉ–‡òÁ}° þÌ5?;0+ðA”ÀùƒJà!N“_Àh¤e&1Bœ†Çbž+¾á©÷°3°Ð;+ª9/¬²Ãx¢.Rµ2+2¬=ìQXï­ÎÁщJie…cÝ{cˆÍ¥éRÓñæž-q‡ÉóOkP™C,lnö›¶¿í£Bméö£ö7önÖ¦:ßjª2´âs…¼j„¦SÓC·ÄP_?Ód0ê…ujƒt;tï«æy%F$Ió—V½7J4½” •®š¾²îÑçÃKÂ7ÄÄ'\·ÓÒü«åAeIA t°²£Dšò9Ö!¾JVi¬7eéßè§×o­Ÿº9ù`ñÝK,ŸXœ!ÿX^ )AåD•CÙôB6; ³ruEDª[ÀâEBKú5éݼGù=r#r»dç‹j å[óZBV Ãyv¢ŒòäRÆóðtȃá(ë.h û-ƒb¼ÿ‰ÄÀ¦39¦Ù‹Ž¡Ÿp³˜ë h0þ‡¢ÉPN—ëD¯¢z˜L¨(g~y–rXË…mÜîÓ'Déàgz7=ŽÂs=[$ˆ sEcé_E‰•ü1T9‰÷ÿ3õ•Š=™6_rÇûÕº`É ±×Ÿež®k|¼§¬SIº±7Ð=P‚@“º3=ØÃk€ç4ñ'Æ…À$ðncüñ*f2ÃÃ3ñ=܂ޡj”…F¡‡ÌsF†'`?´j¸Y?Š£?qÎ@'¸6w=·¸)æ8“Ë+XG§.ú“ÈmB Ø Õ°þöÂJpL‡£Q'ˤ0K¹äÔÀßà®5ýGrj/aÍâwì ŽÞB™hp]8 ýÍ~ò´® ôZ(+®`¢‘”¡"N«±È›ó;ªA ôŽãÍXº Ì‚ ܆^€AÀîA&:_8¬7è‹ð §£O …n¥Õ ”kp3Pˆè<·ú!xö£¸'§>®DsÚÅ}â:Ú….Âïð>8`#ç(kèetÈ¢ãé‹\ÃÜ ÝÄ̆¡>ÏÄ$|Ž:×è‚ëR‡—,,}Z4:éºÏŸâf‰·Dë ÃÖ&æÜ. «]ïd{bÛm›ØPvpë¥)§ýò"³ÊüÁ2ßÊÚüm×­Ãbšö5Ò W,sucTñÅŽ9ÿËžU8¾$¢¬Oe|ÍÂúIæó&‘A_÷©f¬&CõTæœ}/žLÙ#_XÓXdt©ùTå ý½j™bžœU®¯øI§Õ¤RQ|¹€—-˺é_øµdQª2*&üYlxnTÉ J±~Œé[LóÒô©ÎT¶A~±$¿Ìª,WMÑê˺WZqµNy²,¿Jk‚Ö/!Ió\i§Û·8Ù¦T›Ô{´?™Jªëò§&e)­úG†ëª|hil‘‹ôfIZÝ»–b˪âñ)פÿÿÿ˜ut×߯ .¥Å¡XŠ;-)ðÃ%dmæÞï½3+1‰ !!Ä=Ä“ÝÈn²¾ÏÆ‘P @p(®Å)Z‚4h‘wÞ³çìÙ?æÌ{æ>ßçóÙ0}ÿüñ]á«Ä”¦‹JM|š UmñkMzžãió¨¼i.ËZÛ3þ|Þˆ‚ê]9ÓÄacI{[<Íí¤¤@¶q!_È|·#ýñ| ÀÙo²NLÓÕáj\„¿±Ã†ãu@à'8Œ'£¿Pþ€ÁÑÌ(eì!kpwÙxÙViš,‰Yƶƒ|‹¸‘St„| ü.÷ˆ¦¸oQ|Ï/'v˜Eà ñåûBžtx­ì®¸“H&š/é*ýÆÎ€‘Ü=Τzäïí¯8Æß“¿S4(Eß<ï¹{(}”¹ü¾UÙ¬ï>ÌýÖã«goù’ ~x%¸’‡ÜÎÀõ§oà+ô!ݰ9D²ð.XLè;h¡_p<>‹´h!Ànt)U‘£P=`“€9Òl„sp i ^‡Ø¹ì>¶¡ì!ô'òB'™­(ûÀX¨Á;ˆ¹Ÿñ4øM`+°† å9~Ÿ\΢«¨™Ô#ö# G¹—+“óä§x)wÔ³8~!ÃÉ3|‡ü+´ÂJ؆^²mhVàɸ»âÙpV!;²âq‚O¢p4u€{øv†#pžÁøÿŽw‚/LÆ·qq¢#H=Ì%­0TÄH 0  +©†Ø&¬²¼„UN0®ì$ô‰ÉÚƒ/Ví÷ݳfµê?á­:Q·ÑûV nã۬M Ë*TT½¸ç<¿â7¿ƒëý#øÌÇæ9޽ŽWŽˆšÓ[SötÛæYÞX^TÉU8>:‚ªO9n;p]Pý•š ŽýUL¥sñ÷úŽšv™e™§Õ_QtÁұĽ¬sùÒÒ¶AfiQcvyò¤äY©FM”í—ªÕÚšmªˆÊ»Uiµéõq ß5^hHm m¸Tó[…¨LeýËð®èIÑnƒ(wÆ–S1“Ú2´y-G –®ú5ºŠ‚±š®)(ñ´Þ¾¹ ÖµöŽö:Ûà’ïK2½Ó—™Jë¯è³³Wô¬Ø]9 ÕfIõÃ2Wã~s§²¥îì£)£S‡gÍÿ\¤ÔœJî–i‹jθhñ¬gœ-‘é““.¤­H’\šãl(Ê ‰ë·I·¹"6!>(iEFUöy§ªÜ¶-ªÊLœãß-´r-Ë3½sâ·}•fæ¸l¬$Iz_Fq `èÊÏ£¯i3ã‹ì1  Á>x0¼Fsq?XŽß2Ϙ×Ìf7ŽÙíll)3‘݃çàÎh!ãÙÞ¨ jAƒT Íl3ºÊœ!!ˆ:©‚”‰žƒ<Œîó½W©Ö¸UÞ“«ø»ÊýÊt÷>ªûw¼WÃÙ /Q‹öºIË‹øÑòù8å$ v¯3òoŠDåpO³ª·²Uéç-÷Z®Tz^W]R=U)ÜŸ¸7);(ó=¦«†Qr…ßá0Ë—ó•XÙÌûÑ×I&ÑÒ•®Ã½ÈzËýbø}Ãi¨ ~†?'ÓÌyó‰dž Ù GÕä%=K—“%ä {⃬/ã*[Ï æ´¬Bvˆ¹À<`±Óñß0úâÝl:¾ ácè–¹°…\¤~??ŽûLÛ¨lƒ¡Üh¥MñEÞ¤²*ô|G^Oˉƒºr,¿Ÿz½è(º„z`O|‹ÏÖ£(Lq4~Šû“B(ÄóÈmòª!¿DÑ5´Ï`b#û¡Iøt#çaþ‰<Á©höÇ  –œ Ÿˆ ³ † †j¼Ž1¹‹Å`"ýéià‹èràG°‚ëãÎ{Jä;T[V0ŠJÙ>é4´ ]Æs?/ÝïSéíÁuW¬_VÇý%™"2H·³ïù•Á’ìh§?w 8 ·¸ÍEK½EL |Åá-- é0•†Å8¿Â§ð7ô ]F7ð¢Ã«q{MÂ͸U¶íb—¡H–Ò63ìZøÞŽ>‚?£cÿe°­(Žó'[Ùiø û5P~Š\¦œ+wpÜï´ç¤­Ü¡p÷ê¥+*f{ V]äNÁ÷P Ý+ö\2„ÉÅ9ô ûA…“ò7÷1îܳTƒøM ì>Ðë“»Ÿjµ’QŽ—'ð(²øQò-J³û9ùorù@þW>ÉrP2Ø©F,ï lVÍ’«é.:ŸwæD4‚8/8‡Fƒûá ¶ ÈÈ‚ÑB $‘™¤^a?¡wg’f¢â>ý—\ÆÓ±¥3<óƒÌWZ%~ ¾!õ–ÞaòÙS¨'i¦§ðdÄŸ`©Ðþ™0 £ÇÌÔ=€ Ü#>Xè³`âÌUR-5ó›”§•í½åy>ŸÂŸ£ÿò:åqùb¾ A†Â/B¯Äø(zŠ|p>fP-YÕt!ôTþ ]Ç›àüè`:…(DO`)‚KpÃmѧÈRØ !„kîâ B‡w„ÝðA@ºŠâ8fòvÏxÏY´ ™Á W¦Dú–Y…và\°â1$¸É\3Nä'\)’/š·èÏÅS˜­^âÀsrÚ,³*fš®¨[Õýô÷ÌM%Ç•Õy•æªâª9eŠÒàÒð²weß•ÉÊ“«R+óK¦ÚóJ®W®¬–˜Ë Oªî‡êÊ2†éª¨¡F=ÊŠ‹'ÚîØ®Ø›Uú•zªÿUïbù½ìvù½RQYRåþª¿ËÓJÿ´_(^\>ÂRgl<©÷±øYëò¶G}ðŸºryÈ”îÙÝÆE,‹¾ówĵˆ¥Ñ_¢®%Õ=2>´f—¶XLG » /ëK­¦ºÉk'ûͽ•yYÏ›œôퟺUz'{½¥·>À°ÇÐ.90¬9òXÔ¥K!‘-±¿§µ¤®0VWe6¾Øö¤prðºØ›êBm¢®¦ <3(uaü‡pãÚÞ!6µwöëøñÁÜú‚ ñÝæµñ­ Ï’:¥|ŠYºÏ¯•^2I´JvH<‘ù†vÂ68ˆF±x ³—™šÑ}üý€÷±Ul Ü#uø$à©Ð€SP'Ü7³ÿ±_Y™ð.o¡ÿ y‹Ÿƒì(ÆÁd×¢GÐŒ“ÈiVÂÎ`„Ì>gÇA$’í|8?„ß,ïè>dzIõ‡ª‚›DwpÝI DMÂ$†œ˜RQoöãÃ[•oùÅò žT"÷÷g¼Já¯| Šö°x26’ûBKyïÇ)ÖÉgɇÈÛs«ùüR. _GíÀ›Íg÷ã&ˆã_Ó8.‡Žæ&p $ Ð}½àžâZÃI*Ã7a¿„§nB7Ñ+œCâh:iÂÇè:â-œJvEuè óQÒß­Ñm¢d–¤TÒ"†z íè5¤Ä»èò6á¥ø7ö3„õe£a e¸¾òüSz˜~¤'8g&ý¨?/å+i×›ß.ÿ‡ó‘Çò{¹'\†¿ó$¦“¿ òV‹÷`5>ŒðL˜G¸¹Trüöè=šüF_ÉBr˜ êN¾‘HR`½Fâ œÉH2…t$ÑpG˜¡”œ¨×+à6\#Ýé BZà¶ÿ?£Üý®“×ä'X‰+ð[®£ßA¬sFvS²R´Z¼@ºC*•-–¬w‹væjp&.e£Q¾ÁqDz:o™³ùchÞ– ùçíy¥¥ûʶٗöé« ]LÍ»-?Z™’¥¥[®š;ZO[Õúçy®ºf«-ÚìÈÃi 3Ú¢Âû†÷¶CÖ Ó7ÓYÓiÓKãÇÂ%¹í3ssœ ×vŒÆ-»m»u¾Ea£[¦û`f«¤u}JJ+úV69¥> dV÷ ž“Ñ?ÿFæÃŒMŸ´§Émša–éŹæZs‚õuiÇMûMµ4nWÂ^Úg?Tp+ñåš²Ua?fO2]5kµeZ­¡cE`Ý/ÕÖ%šÒ¦ÜÆ´„t”q#©aKmÆëTqÖXWsrÛæ¦ÖCï ·¢§%9 eÖÿ¬ÄÒTĪ·§Ý oˆݢͷf|Lè¶'xiä­äü-> ¯B_Ä_Hl‹9¸iØš|É87µ›·hŸô‚¬‡ ÒïŃÀâJ\&àÅpw‚+¬'lÇËq*ù„jQ{¤Ã ¤Zˆ‚ÑæêB´8çà+¨oD26•Š¢Åè5{ @¿ Éh ƒ¿E¤?ѱ\Ý&ìà!9,\Äex >Ó#ôy‹ %Pr5±“ët…órÚ‰žhҞܒºšž$Oñx°1´½0/Þ’ÓÄ@ÊÉ H†ã &]è9ÆùQ_÷èò†@¨Nà~ø Å?A-Œ%ãÉ9Ò —Ø,©ÄíØƒä4FÖ…¹ËLfóPÓ$*vqk[®7¥ =îY‚ÅkGnð°$¯É«îSÔÝšmš’{>±,þ~jvöJÍ“ÜyÚ¡F“e¸uŠu¸å¯ÂÒ´®1E±¿d9}g¸ß’¡X4Ø´Äšc}f¾`°è_ê·˜†Y¼ !êþI?&Çh·ø‰Mmw®9ÝØ3÷A<`a²gñ»Ú9æÈä)ƒ£ƒ¿¥µÏÏÓôÉ8ù^«/½_=§ä¶õ‚½‹~Q^YöîìêéY‹Re©“3òLÆ]ë~ˬ+ªñjx–›ö1Aª?T\ZõÂQTæcvÕ®ÊL&£(«% Ž”F4Ä»dÖdgŧùdä¦ï}uc;ˆ\\èºX.½ÌŒF¿¡DrS8_Yd Ö£ÉLŽì:·È ôvƒV|†<¦øv-6A9'{)XNÁì¾¢>°‚N¥=@¸ Ø*…±çÑlFÖ†ŒÈ]°’Óè­åº)Ý”'UNòª7 _É·)û*Ǩb<Ó<{ªŠL>O!FðhèׯÇmüM÷Ê,Už|-·–ÿ¬8â¾S¹]$?Gµœ—ÀuÚâ"÷#WCN@g.›sãBÉ Á'/ F—ŒÆKý¥œÔƒ™¡ôwzo†lâ ^ÀõÐ =÷¬ô&‰Â#ñuì -d2Ãi܈¦a'ä%°q0” í“Ýð4˜M–ŽiÅÜúJ\Å;$k¤JY2ë`û¡¡C&Ógø ôÁîx°Ô‡öäy Êíºe Cý™K2_ÔtåÆ)b”W¸d9HZ‰Ž^â¿ÒzÒ ènúpPè©û°ú ¿Ì)°.ÁCA*š$êRCn ít’nçX¢ƒ%8Y˜›;š tÞRI,dùFRÍ£û…+H,‘p\4וþ³ÉQáýÔ±_P'XÛÉV²Â+¨#Ét‘À¤÷á ÎbßJÞˆõÒ‹^ª’–2sùBO9&¹*ÖHz‹:ˆÒÄ=ÑÏ;7™ø‰ñ;¢†…µ‹~¦a-7 îFY}hu]°<&&ɘ<:Í¢ž¦²q¶B=Î( Íö?8/úx~³¥½éƒá•q’y€ÕÓ¶ØVoQ˜ Æ$ãdË:Û–Qúø¼¼\\èfCTQ¿¢…Ý‹öF™þ¾±ùõlcƒ…uä:™ÕYÍÑoSú©?ä,ÈHOæÓ¦t7DÒ Ý "#cë_vÃVcëP¦-sÊëu$¨"º)kɯEÝwEô^ÿ0¼§vPQ·ÜáIK#h 2.¹V¾ªdŸ©DkÍüNÝšï”ó8}@JdrWõ–‹•Žª Åß›¾æÿ‘ ŽÕefä±KØÊÿ*òª³ªòmí­ƒ´}ÓŽÄŒòöÜ`“õCn`Þ•ÜO깚¬—ÑkœÖö•tZübáQŠt„p*gÃ"bÆûH„0óYTÎè™qø‚ÓÄñY ªj瞯x-÷Tdªôª[Êe—§DòéòQŠ5J•ü´û y'ù÷r3]¯x¨xÏïx,E°³¹œÿ‹À“'È\CGr¬¼šûß‘©\wæà F!ËLŠ‹ŠB®”ö‚9ÈÇ æ5ˆpà*ÐòMø‡ "ð&¼ï0­…Ï`vv¯FÃÐm%¸ÓTòÇ.h“쌨EtB"–¤‹ìbý’9‘¤·ì(#šž‡¹ ÂÕÈY ¶` 9Ü .Ž?Éûðƒ8+y-Ðëe™íŽ0‚^Ã\þ<ž6³ë76u#ïÀ dº hòÇßð è!˜™«pòg ôçC:8üíA/2OWÑ&rDÈÕßä ñ¥3©¨…Õ ð <¡CGç$“L‰#ZòFðÒ{T'4ÝB!t •Súž¼œ…Z 0‡.¬14)·“ $“ˆ™!¬…I”ž–èdS%=ØwÑÞƒññ)ñ:É#î$¹Äü+Ÿºº"Ø%ª4 B{®ûâ’½F—š óêƒVñ«†‡ˆÃRC¯Æý’ÓK7Û4Í|?op¬¿_’—Çê/›;gÿ`þÉ–l=dn)·øYZ--=ÌcÌOM˜-Ø’n½d–›¶›R,-.–AÖHk«å†ÅÍzÞXæZkhŒØú£fpáwÆÕúˆÜÉßeœËé¥é¤iŸ=#ƒÕ½¶5•þkþ»¨\÷Ìz­ª}žb…ý±Ñ+gºFOÞ4 å¥ÑËò$O’µ3¶—6ÐZoŠVgn^‘¿ßÔµìŒítÑ$mŒ®¿¶^s5µß6–„Yã[röm°ËªüŒ'Sc#[c³’JR¯äž)L*ʶ6Wu0•’*]).¼~qÙ„€ýñšœ£éšäEñã•3ÎÇO‹3Ÿ¡ÛÜNJöHKIJ‡èž`ÜÁ¨ EϘø³Ì‰Í­Š¾Å˜ý%8ýÇ(ð4{‘¼‘!¨/îCàg2 –C Ùß Æà²$6G`'h¼/½EEéÂ/™S(Rø> ±d›Ð#‡ÙjáäÂÌ "‡éVù+î ¹³ÇíŠ;ÔäêQÆ[h=«øGp»äø}Ü8ùÅMÕn~uyÜ4>ަpw`!™Ž{C£ÀкšHá z&ñ5¡w—PžTó[Uþ|D¢< ©ºÒ—0<óÙJçp´½ÄÕÄÊço+p?EaˆàP\©ø%ާ;H5„.¢ÒO"‡x•øÈ*ÚìfËÅg¤Ÿov;óNĸ  è.ú– /RòQŠBþ8yˆº°Y²Uh<^‰_°[^cFølfØÎl³IÖû³¸‰ôùá6ʽ ë`&]Ïí¤ãá3úG£~ø5$/HÙB~¢_a„¾¿‰/™ y°™<\5ìIæÄÒãR!¿íi=Ä ãxÙ “:KçlÔƒ,#¤3ý•öxÕ™\‚û$û™†Nù ;È{òŠìc/HOʈ$MvšÉùJóETÚ‘9%e%‹¥al9¹tâ²T_Cлˆþ‘(ún†VãÑÊKØf¶µ ëFŒã´2]¶zpކ-úÖºYó7íŒÙ”þY·Æº×:ß¼ÐØEè2dÜoÚo>gîlênœc:k^b½gécq·þc³—Ü.‰/ö²[ìgíáöã¶r»¶òNíõšÑš½êõ¹$¯&×®ž’g(˜ñhÁW|éV¥fÑ×¼“ü•Á&ÚJ‰D¸˜\¦xF£øAòË|üŒâ›jÿŽæ LÆÓ‘t~£I¼Ex¹@·áŽð\­,‹ìŽñdRBì4D Î&üŠÉW¡Oቕˆh>m¢=élÈË—\æŽÑÍÂùehZƒýp*6à/8™wÆÅ0¯”ý':çæ.ž(š"r_œñâ™ÒÒ6é#Q¦ä†TÄø Ïø|šæ.-§U#¼|y+tE"än¸ŸpŸìv-ºƒ áLÁ*ܽdZ3«DY,AíñæjE+ñ-¨ˆ`‚òµê9ÿv±7Ø“8Ú“ÙÔ™v ÁUa…“¤7p‚Ÿ#FȘ´àOÂtsë$—b:Bhöñ BÈTášÕ¤Š`ÑR$Ì;ÂͤAB‹;ѱtY@ž ©ëKrÉÿÈRŽ7â rWðÅId,.G7˜ZY&ê‡ò¤;ÄÃ¥7™‹¬„?9‘*G•¤Xí]¼ÎkK“ö©neþrµÀW›ú†¯ú¼iq¼oÌÌpç-Ó ‰†¬ÄÌO¿×K£‚Ô‘=RòòýMRó½³nntÑ £·¹ÌvÙæg¤E6Ã,Ë K°ù¶9ξ¼l^Ňʣåg‹·7–Ø:ØÎÙ†Ÿ*Ý[<»ðXá<çÜêÞš[&›»Å»¨Ÿ¾GÑýc©éžq€e¢À¬OìÆªìZyYM5£*rCD~N§RcS4,uròoù·*{noÚªªôËâ7VF¯-(+>o÷2X‹®6Ì?n*'ùmê^ÙÆäиK‰‚õYzU®Ó-N(‹8˜Q§ÑgÎ/Ñ(¼£˜ÓI]·VóW²!Œþ$11§ƒæHò¨‡ÑÛÃKÂÛEµF½ ›ä²â´x´›ÖmƒŒc– 0碣øq` ÎÄA\‰…ãèw¸òÿÿa s¯—`)ÿÁ#2˜*¸éx¼û3_P ^ ÓñKäWñ TÈM¦ýÉ~ϱTWOF/ý/à#ÿ–õLP3}1eTì2< ­fJQ5ùê>J9" † ,sÿŒ¯‘ 2¬Å?“y%á$(æ>ÈÏp3¸÷| ÿÿÿ—T”ÙûÇUtíÂ^WŒ»eML˜|ïóÜû­”Ý¢twJ=  vÇ«®«îúS×Ä^»;þ÷æœaÎðÎ÷>ßø4;g{\p’8ÿKPGD»Ñëd"^dÖLÍ|Оô'áXö«ì˜ã9é~ù*e‹"Un-·•¿V"kQy3?ô?2·‘ñ$ƒ¸Ã;—@-~VÙ;Q}£Ÿ°ÎÃ.,&Ã!ŒŒ!6ä(郉˜…µ*7o'팠úÑ©´_ÓÞlm‹é¸‰¶àßäéDÆ È¿0ó3¯*Îuàä…”4ƒ/ZÓ+h‡[iw6’­O‰Îª ª¯ªQª.l c;Ù}êļÄÁÔ{Ò.ô&ÕQ_šFSq mÏÿÿ„=Ä0 Z@"ô$×ÑVÔ9» ö’/³¬iôt7¬<}ÎU»]½'goam^JJ§y֡츬ã[º§^Ìüžñ<ÌjÕ ·åî–æz®u?îw/eI~¾®¬x^î¬þjKaWÅXV~º¬ƒÞ³(CóÊPbÌÖ}ÕxŽ–,®°©mËF”],ù¦Ÿ¢§ë©Sê.jÿ+ˆÑÔ ¹o2fešòÌ{­gQ/CEi]IpÉhÝÓ‚ûiº&ÃmýFÝgc³ñŽvYÆõM®þÝ3NHeB6$qóx—ü‡¥O«‚kšL{¶ôŒ™”}ß4¸n¾¥uAsÞ©†ÈƒCÍcóφiësº'¶Žfi~%¿ì,=;}{S´U´Ç–¨Ô=fMÿLMÔ• Ÿmûnù”¸"vLd@ü¶ ªŽÏèõ>àaԃȉáo"|C?í ½è¡Ì¼0AnTüA^С4¿ ©|S>!ÃPG?âIq‹*˜=ÂQ´Î*»ÒÔŽú‹£ØfU{ÕIìH ß1þMþ&/¡+iñª2¬£5¸ž¨ÔË[Ñ!+Z\s®%ÿÀd2—£Ç!šÉÜ&ü!0¡_©’÷á ”›±×€o‚š +q>Ÿ¨R—1‹–²ú™œº¨Ž9õt‹P9±Aø3P,|ƒÈ{¬Å#(Çoä\'wùsP8Kz‚ TÀÿÈ{@V’Ý´ES o‰gétÑI¼…¿ájºÛ3&¶G_ØË5÷c¡ö’•Ðrù«)T0ð!—ɰ£“q!L ˰F1M±XÑS¡•‘›¤_%y²bÙ<™«ä¢Ãi‚t…4Õñ‘cwGÁ1P>VøS@Nõ‚+N¤;a9®…龜M°$ç\w[×µb6ÊÅ<1uSØ-ºDÚ“åŠ Ü3] ô÷ OúÏàQú„>ãÚÙF»ÓíÈW˜®Ã‘°vpƒð3܃o䜣;D ’?ÀP 0˜æ1+ñˆ¯jRy¨:‹1¢‡ø'k'Z©‹õ¬Šê1 ` ×Ü@&ˆÁ*™S°*IÜ(~¥_ 5‹N¿9½Ué]Ïx6ûú¬}>õ¬zúU–Oч’&Cm~~ΞâfMUî%u‡Üé5©ßRý†DU†v þË?|ÃÌeç›~_UéT™ì> ô”ËñE·UQÜ?C0½CóéæÄVˆ[˜”.¦ãùj»Óú7úà ÔA5|‚›Ð“¯Ë-ã r ¼Q¯a2–ò>#têÈmÜHoÓDf'îeþô<›+>â*Œ#Ù'æÉ1Õôæ©‚Ü¢¼‚}ïxf9·oã'ˆeݽÖ[»d‰ÕòäUMKç®ý=$Û»ð”¦VsµX©7–ý^ú¤ 3+§ ^¿¾ø©32£·† ˜°{ƒû†i–¿ý~Yþ¯WÙŠ!3Þ^É>‘²,Ù.³g±ƒñSé]ó óø’“†Æ£éséò’Ÿ44»ôw ÿ–²èŠ©–祇LvF{]'N»PW®Õèj¿h"‹<ò|É듵#kLþ}Mþ‘ Êv7èMúã8ãébEFïøï9[Ã3ÄMÒ‚µ={Ön6ŒÈ»–U’u)ùh©èú€wêG*ÛÕ¼cÖÜêKyOsû¦ÖX×µ«7—0™"tÆBmHͲ][s³#ޝ¾¾*/¼oîOEmR"®FÍβVw7‡‘tcKNö¶Œ±ñsC|Bì"ÚD¬‰|¦ xµ$WñQ~M2JR¦ìÆõÔ…çÃWè†Ö|âæ@Ü%uÊ7ÂUœÌ;ZOì‚ÑSLÆçðÌ埛 6a1xâ%®¤÷a‹PCB_œ®tÄ+H1œºÐ˜„k«¢ò0œürÅ‘¬lMz“/yö…€%ŒÃh%íEÏ+¯‘Šý¤‘ÜkX ¡ #Ÿi%®¤„@J¯Â8 S°µ«É6<ò ¤øà4fMhœƒîâ´E+ì‹·q7¶åÉy˜¡Ž<Æe´ Ú2}…Ð;#¡s¹+¬ϳS´5ô1Vs%?ƒöPOBA†FœL3ñW˜„Sép¶¶¡¿á_\ÅÉ7R` ’[…^ô¯¼¢Ø®h§8!.ÿ"ÿC¦‘”ÅÈBeiò%2{éY{Y–ô‹ìƒ¼¶“*¡PبôS~¢ ôKZ #…>Êzù(’NËi”¥ bþp‚Töªñ,·Ûöð3^æžgÅ÷Àƒt?Ý"þÅP ÎÆQgú ÌÃ嘭ù{:öVt íÉ»v.j š\QnVêÉCî1oðF@(¬A7z•þÆÚˆGØ ú‚î¢h'ºŽÞe^ªŽ.ù‹œ–í\5k™ÕâÎ ÄÕ¬I|æ“ä¿>ðšÿ¢ˆá±ý&/;”1*ϱÐS÷gIxyKå£MöÎÄ©íŠ꛵Cõ÷4%[&µ_Y¿l½µ×›•òM¶~Ÿ×Ý_W°É9((æ\üú¨˜ðNñ1ê3ÚVeÊo”5šFê?è›JîéÃt‹´û ûŸÔ¿ÖÝÒ~ÖUÞ”F›Þ›lJWû›MÓM·*Œ–ÛÕ3«NÎÅ÷Ô ,¾”§Íî•7Nd”[B+¯›Û• —²`ýEuZ̰lYõ—ͽ7ÿÈ]9¹Éظ .ÀÒä-¾‘³nK]ÐÅåNA wÜ_}¥lw¡%íRÚÎüéFoý¼bÛ¢_5#Ê­j—,J»Iúg}¼ÇT?i’<Ý#mxÐùåÓCZ²©ãb–·ŽòIZ–œ*ßÒ5²à› þK":E¸…u ÞøÊí‹l³tƒ\.ùSq ÅV<º²·\uF>µ&p†ýÂGyw2 ‰!¤2  $ÁB²Ð‘LFôÀHfÏ)à¶ !¹0\H5Œ$÷á' AMƒÃø?Pò®3*ß+‹åßåßù×·AT¥àTÎ5wá"ž¦Át^çýë’€?d ·É*GÿGT»œûâÖóÑ“Õð_þOhO?R)¬Fá¿0Œº1_,âÙ•Gï“IÔ‹Óš¸XáWø€_i1fcgz•£1ì%ïGÝ8]u€Tx¹ÓÒNâNœë¶aOúvBò¡¯ðœ¼ÅZÇþ@W°‡/ ÐKì÷ Oðâ+ð‚¼†§ø xÿŒÂ±´¿îSb á˜r—P¡Ô+w(o*z(~ÈŸÉgËý»JI‹ä”£4[†ò…^^ 臭$t¾ÂÏd¹¨h/D'Ò‡ô+÷šyèͯ1ˆþJGÑø 2ñ7ª¥Ÿ¸Ò6P|ƒ¯¬›ê=ýƒÖ°ÉÔ†Vóãwá!îa—‰º³{ôóÐ8(ÞhƒñèŠ.`€£8€&a¬‚]°:ñ•;F­YOþzˆb{YÑÂ|Å£ª—˽7øŒðÚíuÉ«ØmÓûÅ®¸¼Zåo~'±Ê»çaë_EãgÍ7•VVN-6DZõmõ¨ãiò ï<½¦Yvnm×õÝ7$û-ê: ädP¿ˆÚÄó ïc­"-¡¯‚ƒbKÔ·4OM¯ÌÚÒ[úÎZ•î´1×xCÓ:ÿBnaQ–®q†vAþíüšË:ѱ4Ǽ¢\R5µ¦®º°Æºú©åé°¦J·§äKITAÏ<;mcIRUÛ†Ó ÏªUÚ•Óôó†Ç xt pzäËâøº›Í>ýj¶WZXçè³î$ F¥¢æV]»iÙG}ç¬)'£ªÜ2†%Ÿéú=1I3§fHÃ÷ºOåKtÉ…_×Ym:ù.jI`_o¹w÷„Š‚.…³2Ä5%ý–*I9˜äWÔ?pn”UtzÄÁ°¨°½AçWÄÒ/|èÐA2AÉ5†k9­÷â ª–e‰=è_ø€\%#9ÏÛsWîMüá‚ðž¼"H²–”R‹@àDÞþ¢óYõ ?8ÑõÁ:ì !¸‚±+:b7ö/3T9|žm…\a*÷îJ¥R8I: 7ˆ7¦¼Šûé4ü pjâ}ÓS1šfÓ‘Nèž¿~úšÃ¾Mªøˆ¡ ,†çX‰Þä 9 H!Mˆ»ÀÊùºê:Až~ ëqgýEÂø,ŒlÞ ÏpŽI„ãx÷ó§[-vtR¨Ú²Ø‹zà%8‚Sh b&F%´] Cpn†ßyË#½Iìž j¡ž»Q&zsu¹â(‚õx“W65á}x¿ÐôÏ”å\#-Šõp€ódy¥¬PP,”?q$ÕKJ$“$m%1Ž»¤%²LùpÙ!É ÙYY“¼­ò¹²Y(RR¡‰"f¢iÜZ ?JpþÃóíoÞ7Rñ;Å»àvå<ã+Ø.ží—ОÆÐô_¼Æ»ï=´ð¾9€»Ì(Nƒ5ì½o¹ïa[ÆX=íL¯ðæøŽs´Ã"¸EІwT?|7¹â.3“¨gål¥˜Ãú‰TíT6*×S‹æ¹-QÍríáñ٥ן[öúnWÞ£½¯®xµ¶gtSÞ6ýUmP|’;•«ÐËkäÒ¾ÛV®ðs Èù˜Ü˜gU|_­ ÒÍÒÌ.š¤]Q2×ô«fúrÚ»„¬”ÕùÙú®eŸÌWKÆÿ6„õ%QÆOE»Ôÿå»›˜¥‡%Èø¸èY~MÁ¯ÚëFß _Ëܪ—Õéõ·î,û\uÒr¡,^¯--Ti’õ*m´¦ñl…S•ƒevµ¢þ@­¼Ä`h_rÄxVíŸp.qæ­œ¾úª­¤qPíÂ’¡ÆêÔá!s#ßć¯Ù2?nr¾}mßmkŽæåN‹<¶I}.noÍ*Ÿ™©ëµ¦Ê/uÆÚËÕj6—^KP¯o xÖy­ï*›ø´êŠ1›Lÿ„Ü8ûd÷¤Aq˃U!¢Râ~‹>68qÕ‡eÇÅÿ'ÿ—&ùJ¢c²j…ÿp’š‹{i»Î•Ñ€EÂl¥ pÝŒßñgÞú8j„{ Ò§ÔÀ6pvE.s÷}Ã'å0|ÇŽTÊ'º’«.C#ûÀÏ]@[H[²R8×”:!ì…ÌõPé¸&FÓzì}èGÚýääïdïvÞ§<6gÃß)qn¿ÐÕ|ê½ð8|%5Â:Þ³Áï8’wI;Ú[Ø ÍÐy*Øâ:Þ 7ÃSrl¡×C.}„—yëZæêtÔi9½%Òõ’!²0YܨÈU~UþLbˆœ‚½ÐDDNa®(…=ØŽ6àu¬Áé´Ž6áSžO1˜'NeCa¥Ý™ÿƒT|…ãè>zІö¦±=K§{qM¢0€ïœžS«ûÓx˜ŸiIµ¸’“ó+¡„¼#·á ÝÁÙvŽŽl"»ÈöÒ¯,@ÌA ´` ï"I,§„EØÑk¨O[1âg·a^>ÊÕý×D¶I‚ÐÇÎ+¥fåOÔ>+CŽj©Ï˜yÏÌ×j­K‡6jÚQ¿¯¡±insùÖ½UŒS´iÅýôgJ÷XX›/™'”E—~1_6/Ò&ÆèÖ[NÖ§7”Õ¼+=«a¬)5”ߪ²«l°\¨´«)©-Ö6%è©û¥—gÉóÚ»šÕ êwz;sk³O¥SíØŠ.egK.š •F“WñS|壊ƒ>æÒ‰~Fú·€‡þOÂ=£â7»¯”lpŽ[P*«­Û¶²¶cÅdCFjpˆlfÚýa=¬;y½øjÕø&ÛæÈ=Çßó68$õ‹oL_žÔkSßMþi[Š ª×šºªO¥oOŒO™’Ê’ÖEgÇ-‰í;2z]ˆvÕÍEÕ¡FÖ m·ÀCiÄ¡b(NlH?r bA÷à)0´)<»4œíÇAoÈ¡lË¡—`-]ZË;I7Á_9’èÙ#:ZœHNáNxVôü ÎJ‡!Q¨Â5x•xœ ÁÝt“ØBàéŠé2x3aŸâ‹‹’<¾rÂøÍÅ‹M¤oÙ ïÉ‹Ïx,ðÌZ¼Ç÷SŒSDÖR£ËsùÅpN`¶XÊ)å¹ì>uÆ®Šì ü§1Çb?¬Š£Ï¡½ÐFc& ãZØÀ<ÙüK …;8ƒe‹ ø§0÷bkž‚É'Á†ª nøœ'É>—ã1‘“ŸOA†p‚xƒÃ܇~‚X|Èip;4âIìˆgÉJÜL—á,¬Æ8>×sá!ƒ=íÍæ²EÌ–·½ÕÐ ŽcAŠùPù©F:Ur\òÉ1Fº_rB2E¶ËñOGÏ>OIŽ,NÞ^Ñ[ùC0“ÿOJ2¬y9a:‹f‡x÷ëżÙLV†{ø•'Ñ âB1ƒÎæ9š>á9þ Ž‚‰ü™’p;ŽâßD߇ €µ(ãÂø»Öyƒ›Ð–~ç]Nw`-ÙAêà o u¸”ûØtÚ•ÎÆ%¼ÇÜdk]ÝÝO‰ÙP/„ygG•“¼‘ŽQüÅçÅ—ŒdOT#\ö:¹©.:Íð|¶¢aÅ:×¾Nëè h$át™«eYhð„-¨9[Ýi[u㥦Œ¦ô¬3×Íݺ¢ñÎÖYµo*ÿ­øZÞÃ2¥zi%š?•>)kŠ-ÛT1ÎxMÿµä¾e\}DÃéšã槆\CNi`ÅŪӕ1ùesÌãK½µ×4[tUSÞ¹œMy“´§K ôo2Rbgäž7îªÐZn”.kWêZZ:»úS©›Á¾òeýè ­ñ[‘¥Ðû"Í#®cØÃ°¢ZÇŸ ò_ŸžÖϰ½¦´r¹ñgãµJ¯bU–E…«ó®Æ~ôްRg”M¯û³!ªY8é{ź27¡.cºVVäò_C>oL«¿éÓr’óý_8ILÆþXM‚a3žÇ ¸G– ”—Ä t ËtW«‘z§þÖ¡žàŸäúÛÁ›*\D"t$?Ȱ˜îA)6 )¸ƒ*yÚ¥â !Þ“ÎX!|€j(nVÙ BH€BX §HŒ‚á8„+ÿwLæü¥ ö´ï £Ø[*Ã…8'ñoïẇֈ£XGUG§[¼1–sv²¥;q"™€k 'OIºáIR‹Vì5V’O‚sé;®‰‰ü~²xžvFk2ÿ5´Å<Ó]Pñ<›p$gK-ö ¥$Q1I¡Tô¿‘ä8îv/é"ÕJ=¥¯e-ÒÍRä²ÔUzY¢“_$øŒ§n¿âìÍ3êžb›ÄÅì óóékØÂÏØÂ=l¯x†šÙ\U0«Dk\ ¡°”kôÿ_fØÊïh!„óUóä™8˜ë­ çV¸f“8¡ïO2ÌaƒTÿ©Šð~ÅÑÌ™í¡Öªÿ¹ôQIq"Ìldö/œîpÒáˆÄQ~KþZ>LèLÇŠs˜_R£ê¡ªÅeªs [&s bÁ´¿§bc}D§ä®é :”7Õ•ÔïªÝZdùX~£Â¥*®6½&ÐâR^fÞYÖhY]]Pe_Þ¿ÔÁ0VÿŸiFYXi£Q4æ–÷­+o˜]ÕÕd­ÿ®}«¿oÞV=±6®úZùm³Ô©yVØ_mÎZ™?Zk­Ÿf¾\ù½äyÞÝ-+÷WGWG–Žå9xß´Ôä`ºo¸c˜QÞ·"Y¿°($oCZbô¢èöiÓž¥¬M¯W·¨w¦¨Ãlcï«o¼ºø¢Â‚ڜм€ò×zÛ¬=©Niµê›š:›ŠÁÕ-1•{JîeŽNÝ«ùË<¬hN‚6*8¼.nz>ý^h—­Êú;JýT]“»2óYÄÊ”)!k½´rWÙbY¼r‚°“Ü/òE1„dóé’ü@íaýŽm¹gþõ.ªâÜ<|þó¶bKI=y \ 98)÷k\/î¢õ”±|GíÁdÄ…·Ôú;Üådö‚3ž7è@Ia3 ƒá‚^“>‚’Ôಇ,C[Ø*ìeY+üªúYœ(hÄJ¿ãë_­{¸ÆV´3K?åj%…EÄLð ï¨Ñtõ¢]¨÷ó}|ÞwA"Œá©uŸó‰'ÊEä1¿wwò7Ôò¿.´;§¼Ë´–ÞÇ_‘'9WÄ8Îm)x «i::pRÚAÔSdâ~jaÅÍ<Õª¸‡_¡cénHbùL\…c‹ØazˆÏ®Ã¡…n\™áW8CRx¶*a÷ªH2›kô”á\vt~á.Ã]’§¼.›'¹¹0Þ¡«d¡ãKÉL™¯”ÊnIme¢ô¥ä¾£LTäC M¦ÿÿÿ—exW†ñ(¤( EŠ ±•ÈîÌîΜóžÙM<â„@â²ñ¬{\ H(”b¥@± ¥)î.%¸~ç»æÊ¹v²3»û>ï}?Xˆ'Ó¡#¼„™àAdê_ÁÖÀ4Œ´øî5$¼ ¼… ä#þ#lÄßÃ-ÌCO…æàyø2߆¯ã×ñØ OÀ= ·‡¶p} j\…æ‘Øà¥!fþ(á ‡a JŽ5©$ó [á3À[ð$,ç/0»e#™ÝŒÀg“ ™=ð7Ö×£]Ó«7 yA–©G§ï™Ñæ·@ò4äê2>yfÙ6ó›§ãçÚë-MOöÖî¯ù©¦M_mUͼêãU ï%U¦†IMÓšÜêƒ+ZoZ\c*;WµØ*œokÚÔ uV™,úOúùƶ–^NšvÒuCYc ‰Ñ»&æß(îV’Z²ÑtÊ1¿bŸÝËšéxë¼_5¤öaÅF{²ÍÕéÜT=ºÚ£îM݈zo›]o/‹(ù&»Kæ§R¶äšæoÃÅz— Ý­âŒYÉ YS…3ÍÌXbt;5 K í5Z”ù:ù¸fŸ!Úndm=6¢ ú²“ɥɿü¿M-u‹,î…Ú\ÈhI¹šÒ1£ —Ï]Ð/?,·µàKI¿²kùÏ2ÿÉY¡iM»0/‹{è-oe& ÞP¢>‡Žñ}ø¹ü®”W£lÎ…ŸÇÁX<o„kø&ßöñÐVAÞðïq+nT!ü‡_!oxEÚ‘¹¤»: æã|‚_̇âóxÃàGòyÑ)Ù ®¸d nB:‰$øWü/¤Ð÷é„â5\¸ÊI>M?B²I$LSõ@Ñ|7›kä ùª*Žjx´ýƒ<« ÏåZ…'Â#ì‹Eð+ÜFGù_¸nD!,ÂÀih*΃Nbá ¬Gñ˜ŽO@i P/ð&X ûáwp't#a Yy‡ÚàÇB¸º”ΰbñm2QxOðHèJþ1QÂ?pT°€”coÔG#â_ð~œ‚ è'Ø 'éÝÎá ¬ôű04ø+M_ñ=:é„0|WÅgæ¦<šñf¯Ë—1¿21ÌXöƒéìs¶{”9ËlTü¤úŽsý9W~?•T-–ÑÙ'ø:‹Ä8…Ü…X´ß!CÔ#…Í伡ßE$ŽÒ‘wÀ>üXMA=ÿ-ºÇ?EExCÃÆ9p?á—£u¨#JE­$>,iáÊi§ñhÜÁ¯ñfÒDn’=d̃J¸¡°ÿ‹J¸hÅÆ*ïÃLdìLÛ^®h H“bò˜™|}н°íé ý’ÉÕIÍ ­ñ¬ê”X›R©ÙZþ›é´Ý¥*µîFCûº–ª¢*R}¨:¡F^#®ù§öIuH¥¨zvC؈® ‹«´Î+vÞf±t·m±m7ýb²ƒôÁ¥3s;çü•#ι—ý!ÏPþÅz¹âkMûZÞ@,— -åóÏezj\MsÖªŠê"ç[¼ƒw¶¿°$›L‹u‹lë*ZiÞýL•ù ƒó#2#r‹ÞcSU“_óŒMºŠnù}³&•›¶VD[Ôe³‹Îg·+eóô’÷×dÍ/ Ö)EŽ.ºòì¡k¦ëÊþ¶¬s¬5êóÆkƦKRo¬-Hê•:2­9}՚挚£ÚžÆ”ÒÌâ™%þ…Úèû³™9lJÀe6 ~Äàz……éÏLa·Ù(¥^YÛa(L‚X:ÏÔǕ{”Û•jôì¥3ôŸ`#c‚þÀ™x08à žÐÙÞŽ›Ðx cð;xBgâ7ü‘îè•ðîÁ1d&‰6C6äC'è“ñ n+ºËW­à]pÌŒ+Ð-F—± LQžf}£¢˜ëÍáNpçÑ[ú¾*<ïÆÛðzÜŒXH éAlÐiøªa?¶ãÁX þP q?rïC |[Å‘§Ðˆ_ñk¹d îƒa^L§ö%nE[à*o±\¨ iDCŸ-¿D>d²PKê1 ~P&D¡ä4> ÑO¶ÒùÛçp´%WP gã_ógQ>ÿ€;Šó2~;ú„JÑKt Úã“8ÝC,¾Ž¨Uâ1¨rƒnœ›²…ýM>‚±²‚lš<”Y!Oe¾c'°[¦‹âšâ /_,73z6†=Ç6+kUÜWU°êšÊ‹óTÍç¾Gà>ÃB¤B¨‡”Æ¿å.¨"TT/¸t ÅÑzˆ#Ïé†rÃé'¿ŠÞ¡£èˆ2Pß…ßÍû¢6¼;—‡Íœ¸ðÝÌ@r` „³x8<¡äè¡NƒÚãÑh#¿K¹‹µ²#™!°HÖM~4Ð-à Ô[ÔÇw¥KÀ[âX®Ì\^Ri¨05ëƒÊ7¢­õ¦ òWšòl.ÿ¦®ÌqºÆX½ÅÑÍ1ÜY\•+ªµ‰uMõQõókÕ]l¸Xç_3°ò«%Ú”`‰67é?iç•æiØÂý…G³âûÇ„ÆU¬êõíâ†ÈšÄéÏr ‹ë ŽYoT•ÙΔ–å÷*ÒÔ•6@í«ÂðŸ~´¥·å±öPi^Yœö§[ÓéMû×O¦WŠRŽ¥öÊlŸ9*ãN—æ’“¦ïQñ{®r‘UQ4}]¿¼Ý-[-\stmRF¯"ëõSk{çIXý:}SÞ‡¼kšÙ•iÏ3KŠôz•óX ok¢™e­Kí›:7A‰‡V_»,`Ñ\]˜á‚N¢;d\/æM *ö’}Ïôc"Ùô ÆÁ=ò0ˆ:K ÒðÍt¿/Pw¤|»L¶­ Ò«CÀ•ð%ÂIøY] Ãñ\K¹ø ­¦³ûI}¾Rn¬€a`yI7s"x ÇÔrh!1tßÞCÍ|"÷…Ã#žÅ¾$‚€àeô÷]ŒÛó#ùS”U“`Ú…w¢XÎUàìN}¢ë(•Ú’+Œ‚lÆGqÍÏBþ ö`+²bWtGŸÅ»„ñx 5ª÷XÌåƒ8þ9 å«p9–Ã3hC“oÁMØJú©¯ ÝÉ#˜+`J­TÈ¢I|C_ Á<¢ ùnÐqÿ€Î£a`ÇIø‰JÄ=PMAÝÑ^´s¨ˆ[‰ Í(]F½Uí¹™| ~„]ñpÊõ½Ô†áåü>]â¯sqŠ8…{QqKÞK>ñaåØläžþò V*ÿ*_!•­—]”Èÿ Œ l–#v³Uî!ß"Ocç°jz¸²Ñlœb›&WÊ¢oŒ8ï?\Ö›+Çò qô|ä:¨ÅÂ,h„ZìB÷滣Ȇú >8 íG€ ìì³CÔuð5Èf‹æS_ýnÒo¼’ÂGœ…¾òåüº)Ö°Wdnl˜àpI:AtÆëµw­o'Édeùâ_3ÏÄ *н×wt<¨ïU_n{Uœž|uÕ³<‹¥ÅagbþΪ´çü¶òXu e•¢áZý¶ºƒ5žÆI…A¬Ï°µµ¸2ŠK³øœSùµ>©8fzô—èQüÜw¡›çíYx{IA”#¾Y³ÄkÿÅ´¯ì¨¦Ká;}O§lcj]¶ñRÙ7eëu»ô;Êím‹OjoY>5îßðÎÑÖšá¾Z’)dO*ìW˜¯JŸ”ë_¾ÚÞ¦npÕÓóâaùçŠæTë*Ýò³RËrg/44Ûîë¿Éú}™{ÄõÄæ„îñdí¸˜+_¤5kŸ8Ú9~sܰŔãüД÷«Å.´âÙ iÂýô®es» *c€¾—¡ÎcŒËjŒÍŠoM8½:ÎÑ2Ûÿ¤øSîÛäãîÛ?`/3O¥Ú§h_0¡¡«`ÂÓÁ.ü&´nÑöð£ U÷" ÄßB[AMÂÈ*º'§½>À!X‚~64A4ÀRÛð:¡·0’…d;_‚ y€×Ã<‡“±Ü$Ð#¬‡î°nS÷ .ø Ÿ;Á…Œ%_Éaø‚~ÄŸÑw‘9JŽa–NñW”ƒû“Œñ |MÎ ç`|¢8ÂwÆ;1w¨;ê…Kü%œGЉ'IW?'èY^çpö|B½`\ÂO¡‚TS†¶¡If ½àoâ]8‹Þg^€FQ¶F€/†ZºÆÑœ¦οâ·! 5ðŸñ œŠ—ðgy7´}ÏßDOPn(ÏW!7ÔýÀoçRèS]¤¬½‡ÿ¤Û)œ·©š˜ŽÊGŠNÊJ¥QþD~–9,÷”9˜ŸØÃ²}ò6Ì.™›ìÇ€5’XQø¡tgÀbÿžþãý·úWù‡ˆ.y_õIðùF´TòRœëÛäuyŠÑûžÏ3ï‘b©4ܯØß*[ôWé©ùŽ&û„`A+ô£Ì»~Go¨Q&ò§hãc(™Gð5Ü)áCH̬ï„öh"mÇyWTA&ˆ>ñ­|_Âá,ª…„ý‘Yx1@ê?YzJúXÚW:R,ÉüÆÈ*óÙ"¯Dï5·×ü‘™QlÒ‹ìsêr֭ј¿}N[—eÝjûh*5ü­£›d’Û¾wv©ú§ò¿jký¢:så[{¨Ee8^¸&óRn£ásÅÊd=«K(ߦí¯õ+JJwM<²",2tåûˆv‘#WºE½ŽŽ‰õ/Ûm[`KѾΞšySÛ¯btC`­§uyùr}µ«e²9ÁØK»¶Ä© ³.®mc * XíŸ ÊðÈ1iØbÏÿ’7°lŽÅéÜf;`Ê1¹yÃ_f[]Aý­&W‘³,­KúUÍÒÂéÙîéuIÉk4I%)^E“³ÚǽŠY™X¡XâQTÙ!eDb·¨Ëó¢ªW‡¬êó8E[ú«a½á£öGÝc/c¶¥½ifá’|Í‘ÂìÒor¾,C\Gùï’‚)Ç=[§<’|/?¢xÆ7¡Ùh„Óî~–Î~(m0¿Ò“ '°Ç_’ I¥Á*ê8ËÉhB¢È×àöê!—0ÊûÑT}¦ÿ?Ûà\„ñ‡—W8­€@2‘2¬‘N„òîíx2tù£Ÿ±zÛ…S8„’ðÚ„à{°ˆÚÑlüžOwr8e? @]ñiš]ùáP\…òðÚfr€ÅWp,é$ìÄB™ Ka#¹„àSÂ^ÒWýUx.'…ߩ睊1m§l•ÂXêº5°”ÓÜ\Æ:šº/¸-ôÄoP ¾‹‹p NEËÈp²ÖcÀs±ÛQ&?“û»‘1à‚äüO¨ Õ Ihÿ–Îò n í0áß«j¹9¼‚ߢz¦ì­:ʯ£ô‡ЂߣV¾ŒãÓ¹¶œ–»¢®ì£¸ÏncöºÉÊ&U•êj"÷÷Š[Îùp½¹‘ª/*wîžò¦ª@=&d´º»b¢üëªì¡ü‘;Í}V9T-ÊmбÊRåF…‰ý¿ýÅüÁŒ•¿÷äp]v?ppàpy%©pçǨ…{$1ÿÛu×ÓwäwÊ[ÓM3¼hY‘_ñK£«£ÁùNš——¤IoW|[ÿ¾âŽížMQ{¡v­³É6ÍÖŲ¥,¯øyá³¼ý©_b¯D´]u9«‹Fn~Y½Ë.-ܳ«p¢þvÉ…Ò3†>ÎaÕ»Ìߘs«·ÔµµdêJóÔYŸ^Ø^s!×™×®è@ÉW¤è¹¾N·.Ç=‹Ë=Wü°èXÉŠ^=nåÒÈW<Ž]ºzvâà$6³wY¤é†^\^öD»[»Oÿ³9Ìœ¢Ë._ì­9ZXT³ªr¢¼Ñ³ÖÓà1ˆz9fþP'’U|_$Áõð®¡3éKÃrüIíÙÞêg4sï°Å@j`Zb ê®J6“?à–Úƒü ÿçÅe”"ÈD{Í jr&þ2üC[y ,†x2éN_±Ú´¨OÄQx%Σóék{iÿ¹x1ŽwƒÏÃ?#-%×EU#jFFêž'ñS<¦âH,Æz´ ›ð üœ”Ã,¼ß¡FYJŸø:f:á/`Ÿ°E0v'ÁÂì*ôƒ7Ô-%Ô|s‰(]¸¿T•Ev;ó3s¹ÎNgç3Ñ2»Ï5Ï$¯.^ý½Úz!//ïc>ç¼+|&‰WˆÌÞs}_ø?u\‘Ì—¸‰+E»Å3$Eƒx‹ø­×pï)¾‹|ø mó•ûúJƒd™¥²·TïÙ4ß×ËN¦÷y);ÃÖrãTeò È|˜Nò®ìU¦óVÞA–"{Æìbf0K˜B¹Žq°¬â+*ó§$®gÚ1òãÊ|jK¡lÆöè"M{Sêõù >Uñk­l㓠Ѻ״Ÿ³¯¨x\miôkœæ 2}Ño50{Y¿X¶Zúš/›BMƒÌÖVË%ËËRk?GŠ9ÕÇê¦Uù™Vémäe×~4L4…YÇ™±©ÂzÞeÏpܶr¬®]û4aSþ'½é•©Æ"8s«_UŸ©Hq¶¯ÎwÔèk$‰ÿ.‡•7b¶Åçg\É3O²î­¼j:š_z)ùJþ¥sÊõ¦ý•^§,¿˜o8þmQ?ßv«¤kfhNHþõü/Ù¡Y…Œï˃J»—Ü-ü”y?C¤¹PйdTÞµUî’xß(Ùª¾i÷3ƒÖe¤­.br1ýjôÕ* ÓžÒ6jó´íŒ™%¿.Ï[ý¨À¤ý’»zaÉ”/ðjò,òj —•¨»/£›»ƒçüM¾»úi'\†ó$Ç“ÔàLn <Ã6<æ)E&7õ( ð&„ á ò!ð<>ñ'pWšÃ*øžÌÅï)w"(iü¡Ÿð‹z4üƒæÑŒ½Gjü•Rí )À/Q îƒãè- ‚^ÆÂ]Pr#ñzÔVq³ð=Úµ8¼MDÁ€{¢ñä eÝ%Ü‹ð J-þÃ…ô§“,òÎÃ-häEø)#ça|Â$ãI°’I6ÑÁZˆ‡¥ü¸³!†ê AÑ´åE¡'|[Jm#XqHĨ¹n'¨ê„E0ç£Vn»JÍç>©ör*ÞÁææsnôün’âŽò¾j¤¢»D±X՟ס§|0¼]V‡Mm™:Ah‡¶à‡ÈÀ.ŠKQ¹(§(T‡”Ù³Á"ŸŸß)ÅÆyWz-ö.ñÍÇŠD‹EÏE»$1ÒJÉNÉÉ`i?©N’ iïßO–nN}½ =ñìÛ"Zê»Êw´ÄC¼Pd?uókãï#íî—æ?,`¿ÿG³ÇU`‰¼—L(•/‘ϕۘxf sˆ™Ífã˜=ÌxÅßl»“Ø™Œ‰ù¹¬LAFáû™^a½çø†5Ïn [´BŸÓÏÜZ²þeãÆ õÙuíÖ6n­?]gl|ÑŒšÏ+w6†6ôp¶5c-S’§s7ùëçëŸé&ÌÆW¦I6Wû'{¨}¤5ÅÊÙZ­"ë)[Ž£»ÃÕ¹Ú^eîjTeæï,ïÌÓͦùÖ£ööYGõ¤qp±#{]zP~FñâIù[sG—^1Zël“¬ímÍËtòs¢=#F·IP¦ÍÊ~›[ºÖn›®×$¬MZ{:¯AûÅcü§hsÞ…"Wý^ËërólÃÇÂ)SÖh:åiÒrJ4팧)NŸ\c¤bÙûEï£Ô‰÷’eYšIëŽÄŠ{“º ßšû «ª ÔRle-¼i†þÖÃÐÝ8ÖX«3Þ/¿TҿМo*~S,)èµ|é ÇM-–m|žòÑ/“¯öPûw!’ì&ÿâ¶„žŸŽ‘ŸhËn¥ígIQ4E½i[{@è(܆W¸”£?Twa uËa²z}ð$õmXJ”0®âC¸o¡Üë‚jðJÒ {hw Aø˜Ã7pïQ˜ ó@J n¸B_´ˆšfw‰:f+@yzM¡É ?Ѧ™‡]ÈÚL84‰ßÈ5£éülüŽS $‘n”Nƒp ÿOǵ°4”hãÉ 8E‚„`‰%µØL½ñ-އ3ø1:HÛÙ}øV8,ì"åùJïÃP³(×ÌBwa€S¨'ºP. {…l²–¼£Ûè!ÔÁS²[àÈL˜Ë_VµQuVÝRÝâ~â‡ð'8Ê8Oî_Õ¥\­òPµ*Ÿ³ûä¡ò L³F1FÑWÉéÐa¼1h9@é‚G‘D²]àGóíùÕ/ÊVÅ~¦Ÿ_„•¾”Ì…ù|ö9ï›*.ˆ¯zeûFJ~¥t"}-­öû*‰–t—ô%øzŠ,¢§¢¿ÅŒä¶ø¬(Ü·ÈÛæ;Ñ/À°ß=É_"•h¯hŒ¸H¼MtÃ÷®è“´Ð/]2Cì'­––Hæû-’Nók Ì–]’ç²sÙ‹òÍò•¬’u•?“?fEì6@qDñŽ]ÂÞWœEǧýÕ-3)Øv ójîéܬœ>úÌÚ9õ¤Ú^YWc¯íRWßZ¬²¯cn̓=Üž“•UN®aKm³ý¼~ONS²{NF“’¹1·º¤Ñ8Õ²ÓškÛa¬-j[œm—ù¶a˜~‚i“ÃQÓêt:•»ês Ñ:kù˲—e´aF­á†q¥µ½l—-WMÿ|tSË,ù³:ö7ñ¾jb¥¸"ÝZ¶)çáêö«ÿ[·3¥CÒʬ;ŠWê2ìÅÎåæi¥\†(yJvjù3[œ]«¹‘à™\QAÞƒMP–ãd,£íеGè et&Öà/È¡ÇZåZùîÀvÓiZ#²ûƉÂ}2}¿Š\ Ü/+ö?* ôÛ,&ý(þSôHÜ;`Xà¦Àåò«òf»|½üMÝ!æ(û•Ifú±G¨ó¶c• 8ÙTÙª¸‚¼ÐͶŸµÎ3½Ô]4~¶}²u·ùÙïÛçÛSé5ê6U´X¾Ž;ܯÖôª¿¹ö;eú–Œ›qsÖH×õN<}xõŽ¢3ÕO+ÿÿÿ—uXTéÿ¿ÕUYk-ì\;°?9§Ïg† •’Péf`z†nIÅÆB1×B];QtU×Îïùý®s]óÏyfÎ3çzßÏýz­+ òÊsæç©óçÍÌu3.W×d4¨:MBECÅ‘‚â¼åù—M ºpM˜*:3B¹Vs/kwÖ·ÜéÅ/KJŠ@~ÑL½$‹Ö·j볫ŠVUUV~+oÌ/cÞÆ Mgfv²yÚµ"—+Œ+ù£´#6IzS³Þ¸¼øJÁô”Â!á0i”áWÎ÷Ü«ù»ó^ ½òEL–,áY”UúóœËÅFǰ~\‚gnRç¿$`^pPØ·ÈéQ¹ÉeÊÓÊø¬^Yr]¾n—ŽÓ›v~éoèžk÷kÿLŸ—à±jõïg:·S«>yäÊ{8š9nuÝàN{R^ã=/ºú¹=—G¬¼ã<Ì­Éeˆ|¸ð7òC)|³t”㟲Y8 u¡h šŽ÷IC„0éwaÔ„ cÇIŸ:B—IÂ<\„ªÐl°u Oà7è Z´ >€l!Eh?  {PƒJ‘ºŽ¡K8ô‚ï 'ãËð´@4ž/®Y‹¿Â•°G¡È ;ã°F°A•p¸%à.Ja=dÐ)8¹Àɨ —°uG3Q1zÏ×¢x®TR'¼ ·€‰|¬Gâ½tgãfa8~"+ˆ| Ž‚?áñ¾Î@³PêDžh*@­h'Ê…Þ(¿×ÜwÁqÅår¥ 'ÿ;¿›Áà@p—«e_3=Øú1¹›À³§è|ʉAì Ri„3qŸ¸.™L’Œ9ëÆnàFñ&8üÃñ¨n€<ÿ‰½Æ$ÓÝ©{’;”M˲+Ò­o¬XidÝf]o³×ÁŸ !ïÖ„‹DC|%<ˆÄ]{gûóö]¶ß­ Û+LË”ÖV6?m.Ú|²þ¹üØò·K//ÿe³Í6ÐNf×Û~»ƒ@ØŸ~·¿m?ÅÁÖÞÏ®‡Ýu»F‰Qò¯}“d"™GùSæä%òùìIõ"#IsʆL!{2 ¬Ó${ãã•ÛTr<ÛVÑ-¡ojœfBvMþ”72ççä-Ë•éWd6«76Ön,¯/(/5´$D/O Òsbv'çÔ¸¹Ãªè~^^Λ‚=勊 õ™Òľ né×MÇê_Ô8ÛUšV¨•™2å`Å¢äöøˆ$¤Œ3mRÕoÌ5+”å¾ÊJSOP\WŽÒE)uªÎlyQdÉ —m· tÙ2ÍyÍ3¥Q©Û§¨PeÆj‡è‚²µyÖY^ª©evd•i¨s”C“2C¨Èš>9ËŠ¿¯,pÊËÉõÍ•Ý*rW¹mü³BŸÄ.NŒŠ›v>`@И {)C÷ôÞ09pzð˜àÖ͓Ҏj÷ë®(kÕYeJs ­)Ö„kj”W5i^‰º pï@·zçÕ.*yOù ÇñÒ=ÂG'_ù0·ž³=×x…{¿u¯õ|´ê°[ÒªC^Ü>ÈRl ~ Xi¬¿ð¸Ag@ þÒ鎱Âv©¥tºlãÊÎÛœ£½…þÈZã“Àì€ p¬ð›£xv´â£ÀUXŒ*q7l ÚÐHa¼_Â>p \$`ê/Î;…îãO0Ö¢mÂpá|„žÃað_(Ç/Ф€½à„á#¸¬‚qØ %a$ìÃÁpöÅþÂgïÁ¡hÜ‚Sñi<ÀµÈRüýÁpР‘änxNA¶ð!ü Û¡ÀÿZP#üÈJ¼O‡ÿòÇÁî9x̽bm¹7\—Ìóá;0 Ìåï2Ÿö3) ßŠd}¡oÈ$‡t#õ’.“Ä…èCØ&RAN¢séÝt3FO£=ØWls†žO%ÖSßèWô-j&Yáàb¯·Ûb¿ËAíäp ú¥s˜kLÑC“-ÓªSäQfõ‘qúL£1Wfò6ŽÖ¦'‡&?ÑØg›i§§ž‰sL˜˜u¡æfƒ¹—é·Œö¨Aщ)íªÑêE)ʤٺ¦Ê¦ZŠÏÅ…ÁEšªÂ2kíDÅõÔ×)G3 ÙÏ ÷åÞÔæ«6¤IjIŸ¬ü;íK\q´2~JÆaý„ôqÙ©ùq¦ÚVµÎøÉDbù© ê0“·©ôz¥UE{^Šî½Î)ËU?EûPŸ¬›¯ N=Ÿä¤°VcÕXe¶òƒaw^uá*e\zò—Ì…úCy ŠêóKsŸšÈ<¾xR‰¹qkªÔÿÖ:aý$ß~û|?èêOú=šjÜd¶ù|¸4à¦ÿì°ËË·~M ׸ªú)^¤ Ut¥QÊ4ÕÜŒå±Wb÷'(£Ðc°8/ÍÒûέDJw ·™®É+ÃÜ­=Ó<¦y^]åqÚk“WÍ*K÷b7Wwò‡®[åŒÔŽãŸòjÑr¡)™'žû:p }ÃrÁ B:.“^Å\‰¢Ix*R ä ñCP§³¿Qºš{ÁGû¡îóá+´ õyy íÖàIè œ(½º#+a½Èá < ¯C·Ä'­AÅ"ƒ£Ð`4o…%ÀúÀ#üzT‹ŠE2ÿÃãDÒþ@&x oDmpìÀhÔñû`úMš.’ÆJ7à‘ÒŲaÂf” C­øË¢á*Eß}r° ŠF®øZ·‹Œ]„~h¿èÁ‰è82 ¡"ó;  º- ¶Âø“gøiÜ®…õfÇrŸ¸)ü+þ>XŠ&Á/|_ÎÏä¹GìOö~(·U0öD ÑNêÈbb49’ð#ÛÉ,b*aEM¥úäŸÄâ.1X²€t¥ÒÉ'D¥ÄžCž ,I9iOYzⱄt&SëÈÓ’GäYz%¥¤ÎRžÔÊœžMw’ý©ýd/ª’n¢¼D+í'“$œÄšHx“ÙM—P^Ä""ÅÁÞá«C/‡l‡ƒE³ìâm§JŠíúÛÎwPK.Jþ“¼•#ßQæTiF¶ÉÄ%â5YBý®bÖ2ýéoô(_ö˜W“åì.\äøÀå¼4Eº<àYÊKÍÃ<“`ꦿ¬UÛ§œJž¤Ÿe¨IÙ-Æõ%õIáÉREN¦3O+SŽÖ%ëUÙÇô) ©òšñSAb©yÙó‚Yz uƒjGzaÚß Mf¢f•vTæœd.Æ"2$raâCm[öEýÁÌÇÉñµ‰s’Î$ÝÏÝS¶°bya‡v‹jGî¿%ÿFeOP^ÉTkßç“]Æ6ýU¥ö¤ÞßЩVj½tVZwe‹Â7½SÙKGêoëwÄ6t¯ÿY÷­èz‘ifù•mLÞ}Ã2}JV›Ñ;ߺ(°À[2o¼´"ðÔÆ…¾O|ýú&ûþŒƒO†ÌŠìŒl_±á³_¿À-!çb’Sªc7nvŽY›ü>ñXòÚ”+á­ú<[oïã,OÀeܘ.ô®p;ãnåy}õ]h÷Þž'Ü߯ vw_ÓmÍ£µ>ÞÜxÍsq—O]h’‘ȉ½‡d‚…0Í&ˆùr,²„»9kh†!tÀ;`°0Wè‡ Tȹ‰lÎk‰ù‰(ÝA;¥7„—èÖ »x!Ò‰Yp °ç‹i-öBnÂed‹ ÂWì ¿òWáä G≈GËY¡°˜&ŸÂ7ðŠf7Ã1 >åMฮXh,.Ab®| Z¡ 8À³Ãƒ ]´Û`4ZZ%”I3Ðaƒx"ä@5ŸÁ ø#z%žŽö¢§¨EÀ)p:´ss3X…ÊÄ]ç"ý.š2î…ßA(Â7€/À:‚P.”Õq\#³½Çÿ!îz–¸Ö‹щ¯—ÀU>•ëâ£`¿€Å ?;\#F’? %¹šÜD&’&ú‘­¤Ž:EŸ¥Cég"[ÿÁT’˜ì~I%$¡w8#I’˜‰4ö¤§“ˆX"†šLm W‰ŸR“ËLdϰ ×È2ŒŽ.¢2é\5;ÞJ¥}Ä5+Éñ¤šZCóìS®–‰¥óDž–S'ÉMTíCï <éº;]K½¤/Ð^””êO½§vÁÄ{r<%%.HÎýè¡Ìkz{‹i¤RèÓÜ<`â^Ñû) j«èéjÉ+I³àT’˜¥Xžá¦ÈMíL¼–öYuRKPÙI‰å sµ‘ãc™¦®Ï;“Sž—]ŒJò‹n¾(RFçdè“ ªì+y >æDgª“º’Χîʨ~ 1ÓÒìQÌNÚóGØ4,19Ûº´µª¶ØGß#4;ø_}réÍÒGù ­cÚU Qù¸ªµl¹1#3\¥5˜i½” ó‡²Óð,{NN€±PwEÛO³Nû^o®KÕü¥y®ühØ›÷n÷ÀòæÔÆÚbßšü¦ÏÍí•tqÞΘ»Í²ú{é‘ÂÆ]))a‡#§„Ü lôýå/÷ðÒo`ð¼ ƒ,B-c§ON©9=0æYüÔ-=¶”úG¡Y>—½µ–Ž`ü[êáxZ` Ó _‰†x's—AgR>ÖµÓõªÜae¤«ÞEë:Ùý­w_X÷!î6îOœ/º´;=“ùƒ«ÜE4Ïñ¢ ÖÊ:qo¼ÝâÑ/î°è®6q[±… J\Ç.Gû𤕗…íÀ…÷A·ÅfåˆîÃLD£Jô&¢°§Ø¹Êð‘'Oè‚çâÍH.‚ýp‰˜ý’ÐB´\Ø ç ùbwÜ®ñ @7˜Šž€*Ñ“s@"hCáx ý~C ÇŠÍï’‰dž€P‹(?ëe¥N­Ø ïƒEÃ^àèÞŸ}=ÐQx ‡÷Ázñàê@â÷¢]Ä  uâu ¾Þ{P#NÜ9VË×ÀiPÊOäw±¹L*=œÃÍ“@ ›_ $\ ÿ–+äžó,(CÑfÜÞçf°åTQF|"TÄuÑ^§(59‹i¥BÈ b ¨:ÑW«©¹ä<2–J%ç’fT/ê–d„ä!“¼&1}¨lj%ñ„´`tŒ?Ïtg8ÆŠíÍáÞrÅÜDþ(—Âi¹û,Í›ƒ;œ”#ùî w‚Æžc2Ù¶•¹ÊLeó˜3Ìf<Ý›©å&ˆw}ø‹àH;Á >˜[ÌÍg†3iô :þLï¡Êðÿ¯3„ëÆQ.ÔMv·œ=Ïú‹d¤~ÑbB² Úºº¯vs;ï<^Þcunж¸]Y~iÞ¡Ûcaj@Byæøœ¾yGLŒ“M‹O×í\ÑRÜ[çª2ènf™ç{æ/0%ŒòìS¯ì;ÆÓ%ã\MJ:4;jSxl|žVUâµëD½Ât/!7HµaAö¸"÷’S9}S»ÅjV”œ¬{·ãrýëò;úᆌì Ú©Ý3¯*Çè>çô*ø/¯Ó´T·DiPΪ3.ÈÚ¯§)Hšà¯Ñ•w¯nðjÞݼ¯eßN‹zÔ0½îØ6—ŠÚú¦]?¿Vï«UýGÁ£¯6#õÓ¦® Õ¦à® eÜ=ìLĶ”$­A3[u@ýBi¡:›þWrKâå­(4m] ó á‘῜8¥»µ8Qhw‘—#FÚ€:„x¶,JzCVî¸Ý±@¶L&u$œÖËç¹>ñ¸åêãQ¸r·c“KçÿÜJ¥°JlR.Ø„g ‡…T¡FlU ð‡°[áx¿î¸]¸&D‰ì¼–mè\½OL|Îb †¡­`« G…ÂV´Lzˆ?Í=õ0—¡^ø‡˜ !kÌà2¼™ÀØ®á÷B8v‹sûNL¡¢mP7±‘Ý<Ñè ?ƒÍbšÛ$Rõè?-¬„è˜hÛ£ j¤‘Â^1ÞƒSyI „“x¶p FŠ´/À9` à>ó™Ð]l‹» €€ØÙ&¡(ñDYŠ#Ð<ŸG1âž¥è½Øõ<ÅÿuŽ_Å>jà¥L!7ULÍnн=ùì^f¶h6 ¿„ÏgøÊ-bëèé|.PÁ!‚»ÐnæGrÞà!B–—$Z‡0b™HL$Ro©qÔ.Ñ`Ÿ D…’uÄ;â ‘/I!½¨§ÄAâªHä+ú.ÀTÒ#T’GÌr~Èe‡€=üvn0÷‹ñdVp£ø..‹;Á[ÁíàïÏÕò?@:8ƯáÇp Üþ+;ŠÝÈ=cûp+¹¡l>cÎesG8þ#¾ë¥¢Áyx_*®éËOfoÒ$ÓJÛ1½¹Åls‘oƒf.˜ß)¾ñ° 8¥àö‰ØB[h_FÉL`¢È_J"—‘È®gCl¹”p4Æ:xqÄÉäù™Y?s>ejŸô×qGbWfûÕ9íjªýÓè—°7ù»a@ArqJ¹WÅDzºJcuêö/UtI|ñ§Ò´Ò¼¢ïy{LÝÕ˺%ÑšŽbÛbIÖ…<åߤhC]ö‹Ü6íèÐ-VºûU® 7jœJG7*ÕÈpZ—¡qÑl×,Öö×ÇèÏjÓ,Q7+Í4ÿhÛ´'u'uë†g/ͽ[vãàÔCö‡Ü·í8þ²-ø¸êèŒãn'Æuèø×Í—vLÞ«o}wHzì<µý„¦–ûÞÚT:0dAÄï)0c˜òf†¹šÖîÕMÊú[w[µNñ1óaúݘ¿‚ÝÂÞ„jC»6žÙ8ÉþªRÙ+ö×ÊOÅ®ÿ¯)£|"¨†Ž¢+|Éëà}‘ ?G—nòR'sç»Î‹V½XÕæfã”!;%u’>Àýe3¥£¤«¤>Ò5Òîø2Zßà<Ë W9n’mfâÛx `æbš %ÌE%8”~[T.¢xއe(Ÿ…úŠó=#t Ù µ‹ÍLæñ»€%lFáÈ·Š¼AÃQØ •MÃ+Ð'øÔqÀrØù‚™°| ²Á+h€J´Q4SO4ÍBcq2ƒW‹g€^¸€ÚÁVX‹&ÂV¾¾%DM"¿Nbö‚F„$©DPàA8_¢÷ü'þ?¸‡Sq:ÒÃïà(è(ö-ùJP‡­qoäš¹ÍÜz.ÁìCÎ|àûñ×8[ âÐát¾Ø@+ùŸÜ?|"ÿ€ò 'Ším?5ŠZOu‰Í­YMf“v’’‰äBò$y,§fS]ä2ò2NÜ$È&â5›.¥³©¾æÄVf4ó„âÈp2„YÊ¥±Wè%T†çâø"Ø ƒ'\«H^ßÈëŶ™Êùó$ßÉ9³¾Ì\Ö“óႹul û†|‡xRˆ¤Žù°ºÁnp+ŸÈÅòw¹5¬%kG{ÐϘ(¶uç>ò‘°H@ð'À=P>ƒÇ  œ„n²!n®N³Ä£Å‰8@ú~UñÆ´0»ÍEII IÑw2Æ—; v˜W÷*}N¹}Óíæµµ“³cã¥IõYÚâ‡åÖ÷*ûTÔÉ›·¬ßPç^³s»}Uiµ¡vYíüRMÎZÓã¼&õù¯Ø™1ß’+ AÚ‡Ù7s™Ÿ"¬¶\RÝ*XVTèš¿J_­hW¹fÛåè/é:u¬®·n‹úUzzª,C«Ý©ý¬?—ôÐT‘gUX^y±©´Õ騷#…‡¿M8q°}ý™þ§Fž\}"æØ¶Ã¦Ö½f°hUÝ–Ùì¿Ý]ªy…5A‘O"·Ø'|ÉÐf¬NãÒ½Ž™'tCõÿdLȘžy'ý¦2Wµ?­Ÿâé#“²âÅ}ˆ½7hÀš¹øw¶uàð0ìä±R~,ÜÁ‡ãpøŃx8ªÂžÒý Yºcç.—]Ò\ï8>pœá¨•U˶:ÖÉæ: s}ëØ$ FV©›ô`)¼Â„0A¶@:Áóà¬ys˜âQ ¾ û"[¸ÍÆÛÐuXŠò 'BÆÁVd/lBr8[àÇ8Dìm”Âb˜¿Ãß„ ©/ê»`+¼>Âkð2ŽŸ€^b>Œ„}€;*†^Є‡ÄwБG) ‚!hŒH÷r8ÕŠÓ à—蚸ꆸ‹žâÊ4í„—Á7-E“ý#>k5ªÁ“ij„tè5(@á5¸ú?Ãyè;¶£Ÿ L?yH ‡À\Å–1¿¸ž\©ù­üW®áïˆþéÍÙZj%;)Úw3Opkøß¸ó¬ža©—Ôš£Ò鉜%ý˜˜Iš+Ü$ ‰’÷„3)#KÈ¥Ô2Ê–Z#v?gr:5Œ¤”dJrˆ"%ä'‰Ã#»•Dw±“%r¢‹Ñó÷¸¡@ ºsaL;ŸucÍØOÌ9f;†[À÷à2™#ÌWÖ_Æñç¸". ã}ù«\4»˜íÅíFØ·âÞs^ü4p,ƒxWÖšéÁlal9ŠïË'ñ@oh›Àxx†C !f‹§ø”›$°#bGpo_÷`»-f‘®!{ÖyD»Ç'%Ç&–Æ>U¼9MZ½vo–¿>!#@u®`oÍÈ›v^ª«(uÎjVÜVæ&—î*w®øP~¼¢z{GƒtÇ‹vÛ‰ŠˆmyUÿÕ.n4oÜZÝTº+¯@û6Á%ürè«°ºhOU¯ËuÁ€Ìq1Ö©ÁÚ6“cnF.c"²va&0³gÇZë]›¤¤KBA¤c`fèT±ƒP°‹ó;vpTl=v7ú­ï®kföµg±ç}Þû~þg_$aWÔÂÿ@.üÀOÉUˆ°°Y1ÖÊÚ¬œá1 …§4 `dþ—]±íM;?‡U¹^]ÿ(ø~àf_/6‡XK7+´²£mOËó>²1½Aîá.èYH–cXHÿÒ<&×H¢8|ÂÞNÿÇ®•È6X †D p öÑñ0LáŒ|UÞÈΤ¤4 vÃ`Ã^ùŠ/’H†DütLв+\v2$šˆ‹ÈpêåÀnÁQò¼{Šá5¨ÉE"Vh&u¨còŽ$‚BN¢NÀƒ>©`O¡G7УÁ<Q€²¯%V؃ä%žNv’åľ‘;ØR çSÅd!N4D+ð/i‘d…†âÓX Æ2öÒ/±- $‘£8L¥.Âvþ_UGe¹±•éY®YŒJTÕÜGÓŦ)øcÜon×—ÓãVðåÜun³RRÞU$r£8gåGe™ÒMÙ… ã,ù¾b¯Ü…eüA• ?CÈ P›%™‰Xü Ôª–pgM˜º°ëC•7L)†)î˜*¸ü,~†ª¿ð–Â÷JÄ¡’‡ä‡JQ€”%%¡èœà/NÇF¸£” f RÜŠï¡=¨˜œ‡bøÌä‡T°ÏI#™B®àmGc­Ò¼:……íò›¾1<øpèùM]Ò>kvå÷Öéi4¹Í©&ÑÛ-c›4V½*ΕŸ+›[0]û1naHqv¹QuñÞÐbIháí2ë]Óöï¿ÝüîL{Íõ˜p;apʸÔõIIQ YKÕ(÷£n¢vb¦IŠC’جÐm&Û®jÕ|Û—PÓrØ«iJ³Ó©ä¿;´ô;awÜê˜wsÉ Ú\ÕŒ›&5.mºSªÑ¾Ql˜Ùèp$ñä÷Æ#«ÚÔÒ>dXe?ÊUäôKY”Ø–4?£c–‰Ú7{ÎÖ脱ÅqÂåðàYA¾¡io/ Lü‚º¯žV‰" ‚òõ/q½oaó¨,W±ô1Áûètó_fIô8þF¾AÍ¡J¸+{›×ۚ؞°¾ÒÒÉÑíyðÙ¸ ÁI{c­#ޝQÙn°m¹Ó\4[K °!Ž#¯‰ yKû€ÞEH´œOVR ¦Ð§Pã"ÿ’_$ªaŒ†wÁ?hÜÄñø, i¸œ!—I),¤•ÀÑXMÓ ™%*¸š ª…)$‹ä.©cȨH:Ì„9d48Ð à ?HgbF΂|¦‹i:˜Ú@ K‘²Í…~T¦ch%ýËlŒ‡ØÛ’$â6dÙ‘Ôí%6&Ñ#|Ý­{£L´·ã ÖØZ|,ñ1ÂpÑXº‹Q¦ä’ðNŒi³P€}Ð<Òx»è"}dzÐZÁIØÀ™*®*­9WåU›PÁë©¶+MÝ”œ¿“ÿÊ!ApEá —¦œ§ü×t®i¾b!‡¹­¯œ¦Læ6pœJPíQê¸|.‘Ëáôø)ü^~¾´YJs¤…è ²Á#Qwq™! N åâMa,÷Þd•ékå.W1—kTõà“T_„‡Ò1[ì#Í’VŠâ]q„`,•LðaÔIJ—t’=~DN“'lv¢“¡®Óƒ0Šøâ?ÉF2Q{‹Û®×ÚB§èoh MNìšð,fì6U®S ’W£½”Q̯ß晡Wô¼"½jâöÕ僊ûVêTÑE *j·Ï*ý#ÿmÁ·í k<÷o®ƒ+ÿ>ìö©v|ÖOõÍZsH­UèJŸ–u)óÒU¤àø QÝܺø§E—ÿØñ`guµãŽsÍêß1G£«f¥½Kùœ|<=Hý0ÿ‡¶Hû+×%½ïæ ±R´SÌÁóä¯9Å»J÷ìÓ?`u˜ÖOowvô©9MŽÍÖ'´M£›|›f7]jÜr¸î°ocS}]ý˜†çõöG+ê–*+[—ç–‹5Åš Úy9»·nÉܶ?¹>S›f•à÷_d^ð© wæ!W‚CE„¿Žˆ¼º$xrðÆ ÎAî!Ÿ‚Zƒ|ü÷úŽ h¹r?@±Ž:–Ù°uL,ÍŠh,¹-}—¶£0š„Íá¼tÜO8l¦/¿4“¬—ÛD¯ìj÷sÕwûð˜-Ç·x&¬öoJh &Îý-J ‘NAQä>Ù óa®’RH'Ú‰ð?¼› s$“¬7y4=F‘`6Ñ_‰'H,7ñp÷ƒ6RC}iºY ¹EÒð Hc$Üÿa}@ÊWXŽNãz’Ba!Ld³¼ž*xGͨ>»ŸBA_SØ †ôù›,&"9OBˆ1 §i,K|½ù`~â[DMúÀxùÑ™í1WÊz°Šô‡-¤%9dcÀ r«Gß²ýqï'ã|<›ñ#Mä.K¢nh7ò&WÉ"ä-õ¢P‡;Ð¹Ô ˆî X^5h0ú.ðoÕKe´²P9Š«âŒTmœ¡ÊR%˜þRôå{ ‡$ú†ZQ¡ô?Î SøÏÜ,®MyKy‡§Z­ºÉé8Y9Qчóâ\¡Œy œNÑbâ`Riò“ÅÙ¢?šˆZ…_Ò'éƒøŸä†T趇ipUJTÎ4~bb¤X£x®Lçì¸dÕg^FK²”,.•fJHì+^eù,•NIfÒ'ñ‘´WreLÛ€-jÇ#ÈUœ…’¼¡x­Xaæ†aåqÉq±!{"ne¼ÉŽŒ¯ˆ>ºímNŽv}~íäTŸÒ ›%Ûd×^/*Ý]æVö¬h—nY¾KAD‘ªÌ«D“?¨`A…²Ú¬úkï…•÷ .•ïSÔ,+æ ²´ÿjÆé슽*§Z$ç‡õ ì1}ƒGD¾zBEøÎéw*>TéUlÉJˆÝ»yCjMÆ¢ôÉi½¶-M=¤yTYøI7=3hkǸ¡›µ‰]·>NVÔÿP¯C¹uÞõN‡{Ö5ÔåÖÍjèÞ¨‘Û_¥Û˜[—þ!ùFÚÑôØdßÍ7b›#ÃC-í?N éq=|t„[taLÖ&ÿ.ìcäï°é¡‘a£C‡… ÛøÓgµÿë{}Æ{·{öHt>h—µb¥—ÙeŒÃ/‰ ì‚i,%zò3Ò‹dB›;_¨“Oìæ;ôöêçÿ5>3±r˲Øÿ<Ö[NÀ;ÅA8 Û@†\¯È'.ƒ!BžÃ¦Ø“ ˜ïiû{Œ< [À‰%ªDÑ®Ëq$4ÀsFµP,ŸÀÃÈqÒ*Ï¢oÉH²€=xà*’KéoÆÇ±´£Y"ý‚\‰¾/ð3æ¯j8‰ÿ=zþ…Á`Fâˆ?òB†è ö‡*bMì.·ˆ†yã!²‡n$&d"yåróÐqp›íòDø‡$V4Š´ÑÞÌEÿ!ƒAEOÀŸâ“¸’„Á(x‡}ðìˆgwê€O r䊇âžð&)ä ®ÀGÐ9ñ“t_úN*ä‡0œ¥”C¹ÈñöJ{å!~¬°‹Wn2­SãDU&¯×#Ô.f¡‹ØâÜï@&â9•+¢Ü¨¸¢ìÀ7¨©ê9Õ`>ˆSr¹Xî/•±r¾ ,·RªŠø*á?AËG¨"„IR¢¤D€qWü›dŠ›ÀGî Ft Ì7Œv Y»ÛEæ£$Ø/ä-ä6>ÉŒ±­#ñŒXvô¾†“ÈÒÀm$t’Ù]rLp’0wsT)åŠSŠʇ|°‡ž‰Ä±ƒôM`nwC u@µè¨°…[¤üdÚ››ÁòòDyPõ“ßÅçFrûUZU‘ªQ¥ãq%Üg.·~ ø‹ªÛBÚζæl]‰ ãð:âEþBXZ ^æ BU¦ZÍ­ãZy•j·Š_'!Dà„PqôC8&ŒÀ„ԣè3¶Ä친À%x"ã]6:„cÑPt»2Ÿÿi•äØº"›¢£@Ø~}byÔ-Á½yý» !nyÊêäìПŒ°c©Órç^Ê­Ï;Ÿ¦0¢ÐªÐ?Ç(ePFZî¹ü‰¥^Vå– (^_¼´¨óŽô³Ý¯ÌÛ{>¯Y7 °©èrɇҲ„’É…ò5÷Ó *.äKÄ·¸kÙûKÃw ÚUÝ#Ë8•O{’¦M»™Ô1i]æ÷¼‡¹W³‡eÇg§çEë–ä*_Äéææ,QŸÉú–©ÕÅíNiŽ :ÖrdA½õá¿TïõÙ÷½&¦öÎþŒ]—*O—8•ô/<¡;«­Õ-™_šªë‘¹'mNÚî$uBqbbÚð,÷¬ç™ë²³ªórÆ¥žLp‰šÓ¼õà)*4âTh\Ì?qʸИ¿ÃQ›'džÛÄHÑm!“cÃÖ÷ žØ ó»êù~í¢u_ œ*]Öx87;Nuͱ_auÒü¸üÚâ…Å:þ¢2¼$JÔ‘=÷BÒ•l&uæ–f‡m=WŸ÷ptý`ŸeË“ERž ™ÔÑìª|EŽ–[Y¢Èzò›!à¬ü?jM¯ÐA´vâ«Òrâ‡Ë¡>'ùá¤k …ô-`XÆHv‰¼À2kOÉd®l#ÍAY~4d –¯Ãí>AÞ£\mïÚpövå;:ïq}ì²Ô¥Æºç ¥ÍT‹¡ô/3­ÕqºFla¿£Ší¹ÇR£t‚˜±)]Ïñm¼Påˆ>¡%h…0VÈW¬œåf˜Mï°¾µ ›Á@ÚêY"—³y{LD–“Û,gqKc ì!ö4„‘e=>×èaXFóÁš¥cóÅmdí "k^ËY7ûƒþ‚f]dsœI,É:6Ç3hýJvàáÐ. ŽÜ$ÕÌÿ€dúšLÁžx,¤kh¢üòϸ{‘¼bY¾Åh샠YÈÈT.Í#!°Ìé^(„s,ñÝ™kIg\Nÿ%$v<^°S{2†^ õäðd*ê†Çâ+Hn¡2)U0—ðk¼–µ°7hk“I,ë‚«ÄéRµX„&⸈ô#}±#  <õ¢Ÿ‰%.“¬øs cÓ)&S'•Ÿ¸ÿŸÜ:á™ðQ8(œæ›„Ÿ¬]ÙJWŬßMÕB?U®˜eº]9F¹V™©ì¦ø ¥úÅWò¬r/¹^|'®¿J),’,¤lé¦tIê‹šÑ ,i¥Ò$Æ-#̱n6g¢»(kÑZiËàGÁPœ)ª¤b¥àË÷SýæLUþ‚Qì…/ãÁ¤+| Å"mE¾¸#¾ŽŽIÃQò¯Â¬¯^†E°;Jkø5ªbÞL¸ˆÂÈ&¹Ò~—ÇQï’€ëñÃ2겄¬íjmsÁá’õyÉG·uO}‘˨W4¯L¿²cé‚‚f]\®.Ë%óFNuþÉâÀ²ÑeÁ¹×R·¥.ɹ[|©r|åèí«w†îøZ”<1\û"³V7.oFÒÔ„.i-yŽy süsŒók'ZèF¨Ô~Ú{Ú½ùÁùãµ…yÃ49¹ÓbÓçæ·íê}ôcCTCäËû kwÕØïäŠîhcÔù ]©&I½$÷Zvrv×l£ôòô êç¹öib~C°a¤Aô»ˆw‘Sb¦%â„a[Ÿ%ë§¹n[^â*Dl+¿ásÞ9Ä¥Ý+Ë6¯õqxëÐÝUpÍwìè²Â­Âõ²g»—Ó†³>_7$ùýçÝས“ó!ÛW+';§9E9mµ;ã¸Ã±vÕ'‡û«¬r°Xl6Ôb­e íŠ7HF’FÊ@ÒMÒÜäv놕O¡BÄhcB >@®Â$úv’¯Ò ú˜µKò‘t—Õ`Æ s’|’~a]¾Çct‡žô;ĺ“;¼ÇoȪïå6rÖ°|ú;ÝsXÛz…¿áh²~G˜&»ÀxMüH ªaÍ­+m…´œ‡yd:i$‹±5¼‚çäÚɸ´œå–cYÖ‡22“´²|ÅÂ?q)*Á×È’‹˜'GûñEÒüÁ…åá‚YØ“Dà(ÔÈ:åE´ F[˜k`›„kq_²„Ño,ꈎ3zŒGö(\ì+ D/Ù<¦ã—XìeY´ffF˜JúÒ9±Bz&éãÝÒ¤AgðqœB‚áÍjá(ZM˜t6ýSaÆÅ)G1j,á=T|O+ ”ú¡OâÞŒ·aIú€~ ³ÈUŠêëvó¹µÊ_Œ-3Us…ßücáˆè$ŒàÝùÂaÞ]ø,êI HŸ¥’§„3Åwè ²Åpêgá?ñwÉSx!¾•‚EwÑFœ$JB™P/v—JQ 9 S™üGÖ±ìýÂÜñSô£îø®Ã%$œ&Ð=4[#gÉ#å±²#ù Uà¯ø I'è‹LÜ>xOòúàó,äȦۛ&Æ[%&Znñ }ì÷+ý´‰%E¥wK}5 rŠ·šÇLؤ·Y?m¯Ž?-ÅŒ‡yi–±§9†ïðÞùb‡ÁÎþ;”ÞH¶ðÞê¡ ?Ÿ°;¾gòü¤ø´³š§…Z¤1,8YÔOWŸC2Óæ«ojWæý©®ËqÏy™;9ïgöà´+™§Koï[ÑÛ`P7°îGí¸Úù»ËÇ•þÔ^Ö¤ååZåyhr±údÎï 9µWJÛæoŒ½3½;ù ðô·hóÙ³qCØàEôݘ1m‘N!±¡+ƒ}ÃCÿ ªY›lµÙf§“›»bõ —”Uwmí&ØŸrW•ÚÉöZíþpœ´Æqm­ëg…ëW÷U6ÖöC\¦:Ý[¥çÜÅ%Ñ9È)ßq¨óá•ñ6C­ÇZþ4ï)¿Gçñg<‡¼’\+>æãÝæÚ­ªÅur$ý /Ðs|©šÒbxM%zÝ’j¥4˜B,©|¦ÈñVÒ}"È.(Kð•yx+¹‘€íHÑ‚–‡ Ö×\á™Ér«ÏzÕhæsäXø>ã{t!k%$…* 'Âv<œ>‚H—?S-ÝH:󤚄“çø.Aô#ËÒx „eRK¾!L¢˜uÞ&¯a/YJòȘÉÒp÷¡CÁ*YŽ÷³YÓcfi€ŸHþ‚O¹¾2r´°)N’òQÖàSÒIô·â0ÖÜ–áEh§´‹Ä >V6u*é*Ç¡°™x'ŠD1¸/îƒàó’;s¶—Ò`\+aù³%A<©újÚG¹])r÷”›Çµ)_*æªÆˆ²…ìÈ($ BßW"Í*„kü+þ>ïÄûªœ¹Ê?M)ŽqýøXÁS% ø\ê¡Ê…ñÆD8+82Ê>bÜŽ.£ì%É—e1Eš€¿H/„ÎÒ`fÁi…¤”Þˆ…b–4ó¸Õãb„gã*rW1»o!WØ»XÇ6Ñxð`n,YiÛŽÓérù¶|,È<ÚÎÚ»$Ì^ȜݻrÛùöWœýÖÞöŒ_×uý×çïl:y®Kø[ã_6 0¾(ªpmÚ‘¿Üíì&¯mSkV=¯èU¶­dZá¥ÜöäÅ)ÚL}Mz‰yÙŲ]e^•ªªFõŸ¡“}fG_¾åi¦}N¦z‹îYñëÒ;Åw¨wöϾmuü¥Øí Ë37d×f¸§nJ³ÛÔ×r'h¦ë.jS÷„Ö=?byTÿhÓ›½g*–kø¼®¹$g½z‰ú¸ú[öÏÌSYk3Æ$ÿŽ:áo·!Êóßõ½%ŸÅÞ‡|û~ôkÞÐê}7À àˆç ï#^¿}ÿðÙï¸ÑpcºkÚÊ#Ζî¶WmZµÕ.ÏæŒíngÁé„]/g{§õv÷Vþ^YeÝhe¾²Ìz…C»ÓÇ0‡[vç8Þpêîü—³³óDZN·l;Ú½°kçk9Òb›ðÐd˜Ô†JQª$I6 &¥d¬í*ç:Y@Ì÷·ƒv!…0Ål¡ù,(”®Ð$yZJ’ñti¸l‡àÑ@´ÃU°$*h&M†ÒFâ„ch;1a¶Ø ^¤y‹ dëw?q!éK5`‡±©%§©õ†‘ØhÑ:²ÌA¥0…Ž”½èC2†±°#±†aÌ6Gob "köÇñ-R#I$Ì€ äÿÿÿ™uXYÅëîBe·N…º—-¥E23™¹6“àHp—$@ ÅZ¤HÑ@÷¶Ô n[Û õ­ÛÖ}ëTé~óý‘<‘'3wnÞsÎï$/Ḩ9¨cà jH S‘3¾ŒëÉdüÿ‹ É3<·Á|ø (#Ç` §•®änKwÐñL4Œ@FÔNÄj\jñ84ŒƒÅè ÑáƒH@}Єº£p¸6¡xH¸Õ°¾aܰ ýD«Ð3èŒîžÐ$ n=Žò—씌£k©PZA}³É¡úKÏKœ/ êÁ_@ÉŽf´Ô:…ùCú€5L•d/ÕS²LRĬb/IsÙHÖYêÂÌ£ÝéÝ´Œ.§WÓ½édº…9ƺ eH"¸îÜOv87›#ÜYî ·;Ââ¬8o.™û”CKð‘àܹЙÂë`+Ðh`¼<Á=NzAš€"øõǃ`$œ†–áå¤ lΟà;È\ÏÛ ÇÈßp»^ŠAfñ1ôn$ͲDçn­ Ç™Ò/0ÒwEìϬ{%¿ª2JÃrÛ¢×ñf6Ó-!*‰üP¹Ùfóñ†öú“»›Ì+³ ~å(t[ò›ó§É‹³ ¿—Ÿ.rJ³JLȽZvÓXPžjX]vÞ0¯|DíúŦÀ†Ç¥L¾É†±ëÓê ì‹Ò ¯ç}Þ89ÿŸÒçç›s›æ6éZ~ì`,9ºýȱ6Óí*o­Ð *l*tÖ¿Ô¿+âtû‹®ë:²Ú’SÖ&ÀèEÁÁ÷C–…í {–¡ÔNŽ”‡÷ù2*|lå×ßÇ"´0t~зÀ;!•jû¡Ž]>8³Î–®V®;\/»* ªižÙÊOªÓžUÍž¿”cݸ–¹¦¹X*_»þ£ TõP V–yþ­jR)TçÝUªyÞÿ)ì]Ç8~w.°,;Â<³ÞÉI\ÑaØx¡1ÈwþŽGÞ87Bo¿âx4_CþB|Ÿƒ[à(”Ð~üJ¼A&|aùLr‘ &ñäº qÜ.N¹)¹„Õüw$Åè~€× è"ŒÄñà-PƒVagoÀ:ôÄ}ñ$„Ð{´‘tÂ%°C;Q Ú†tèœJÖòŸÐOî6\‚· =Y‹öÁ%¨^aË ³’½ÁIa ê$‹ñi¶†nPaÙƒGŠª+CŸàVx:¢µP LØi6sMJ7ê¥äÕÆvÇ“xkà24Œ¬ÃKQc /DwàØ‡Šó¸ôA?!ýÑ.´D‚s`/¸®ÃÙÈJ`6äÀw0{àb<íãZ{ú­¤V"¾Ei)b+£¥¿qgÙ[œÀxx–‹gZ%ébþã _p ÷HzF:[ÇÜdz°l4»KÌŒ£ÖQ€ÞJ{Kƒ¥Ötº¤¯¤”©3à î;3s¸3lwn0W+®f!xεpE\!˜cÀh8]¼Oƒ,šnB8SÔén˜{Á'`\ 7‚i œkàdð¨ø¬ ŒF øÑñ£ƒà%ó¶?-k"¿WØ+4T&ú†›Ø«ìì?l>¾íðÐã•g‰«Q£k¼‰êJ4•Zâ¶ñ¢ö±Ë&é‰Uê;mºÚ5EŸÖß­·ØlØìÑ2dGqc’>67x㌔#IwÓëò&×YäPéf™©ÅÉõÝšUcë‚j{ÖÊ*ÿ¨)­˜]±¤¬ºxs>•ú>e™î£aoy†ñ¾1ÿrþ´òí{Õûï®j-ÞóÛ¡õ~Þ}oÛžŠ`}YÁÃÂ>E3Šb ³ 5ºy|,ÇÕÄüQ²·uovx„K°6dI¸wø“ˆ¬ð‰š)ZZÛMó:ÈÑŽÿ€Nÿ+¡©!0 WÀvå»Mv…î—Ý÷<’<Œû••þª6•™ò¶—³g©«ÞMå¶TõÜ£I9Xáñ¯‡µªŸ×kÕVǯ!Êå/µçëºÖCå~ÜYå¼Ô ñ^p» \OugÝ8Ìázާ  b*x’tâJ¢x/#S0À£ÈlIÌI7~¹@d®¼@3ðz|†"È:»Gò¾²•²C‚)üDk¸Ûh&VàÞh4vÂ¥d¬¨¾®Ä¿Æ“Q2JÂÏa _…uø#XŒrá#ô8£d?Þ†[x/Ç×ðv\Š¿c vE0 5ÈNÂ}H*ñ‚ È„ù¿IüïõàJ¤©z ÆØ|n^“¡ zˆæ“ÂpÁˆ—ÀÉÈvÞð%ô…6ິœNkè?)Š>A—K&H¦°‹Ð’,j¢WdVíâ´Và(–óåh4ý uh| ÌñPq‚“‘;Á=c?±7À t ~‡7€+lâ~pkPHV£è8WÏ ¡~IfJ†Ú\³é*i¥Ì™ÒáÒ&6ä‚p!¼ÇMaã¤×˜Þì8áNrÛ¸wœ3°‹¸R6‹uv£/S9t5•‰—Þa¯s/ÙN®dpÜW®/Œuí\ø ŽÖr«y(EÁL8U¢¿ +æ» JÇÙâ.ä!_˜ Â`xÞƒ–C…¸òßq6‡¬C$Œ_+\‘­µkrÏð?äÏûá)<†Y0 0ÝN;t 3íŸ:|$ça)#j¾™ص ‹È ²œà-XJ–‘¹|¹½·|”ƒ³bž£›s¦ýû_ò$Òçàeä$)åg w°9‚’Vƒð‰ð!ê‹.¡<‰ ã1‡ÿ ™a{t•(q ,DÁè.*ÀÿâìŠ}±Ûð«P=ìN‰Y×=ůÑßèJĽ„Ëx$b±€¹¾ì%ÉKªŽ©gzÑmôDiÐ>A t^L¼ !NXM0 Q‰ÈŽÅÜzÄ@ݤzR™ô‘çü¤õ@ÀÝøâŠ/ðo‡Ö“fñsþ¨š¢kh+²EïÄü²G8¬w©»Í.¡g1ÿJ‹¸-°¯Ã3pŒàŒÜ]hŠwˆúµe3Ñö†í8ú0uPâN70[{‘ƒ"åIp ~€žþÀA$ãØ™ÁJXÒ¸T¡€ûã§`>§bHK™©LÅSéL«c÷°IlONÁµ³ÿ²¡Ü"8=—‡Í€@ j8"úÎbXŽŒøv÷8„A G¥â.¼B5¨7šˆn€Ó\ †¾àÁ¤ ä%¡È=ì'’Ì&²W°v”º¾÷lŠž‘YŸé– Õ¬ŸbtÅï¶×ì@:B¾8´È›wZìÕ[#[ƒW—†­P™)¹Ýzœšý3÷sÎÊì“Y÷³ÚuÇ O¥¤$Úg7äJçÔݬŸc“Ÿ°áyòÜÄ+k‡ÅW§ŒÉÖä ʼ—ñWÚ›/Š3ëÔ›vÔ]i<[ï[± d~CQ‹¡o¹V¯O¢%4¦ïUý¨Ê¬8\²;ÿUþûÚWÛ³wïnÛ²gC›ÉŽ7Õ­e~%™¥Ç {ä>‰uP‹ã–mV(+^ºÁ.¾*íhb¿Gu½&HK¨«ÂŸ„ÿÍk6†MPwѼŒØá­(IÁ¡ËBw×üòìêê¤xéa¢LÓí¨TŒÃW…[… Ö‰ÌÖzi†GlöOôïiçõÍÓRÑîã»Î«È)N•¦jº1º8,ÜÔy©Â]q_‘çrÊa8yÎvÒMÖϬ#lÒ©t½t7»›ÛÏ%±÷¤µÀžZdõö_ä.bZmãËùB¾;gá+y€óH/rA'ß#ßéR¸7ÐÄo»{wÅyW¬P¹ùÉZ…)2ká’,PøÎoçGðË…&Á‰?OXBð<±÷\GŢ梄%$Oà«Ñ²^T¤ ‹ÐKô–{‹^òÍxž0ÿ÷€ã°'êƒõ¢sÇÃÑwhÿuˆ¯½ù4¤Ò#éFÛ4ê“OÝ 0]élØ—b3â(ß(tŠG¿ÿ†ûÐ(ÑÉ} \.µ¥Ó¨ñ"Á™1ém –æŠ.!²­x¦çh ¿û HÀ×ñT>‹4è-j©ìœÈÁ Ñ(èÈÝæNs;¸.Roæ#ÝÁÎfDÔ+ù ƒ±H§’¹xé›i{Ûî6¬úKl™5¬%çÈÖ²W¸6#H9ŠÃ]ð ÕÖæÃßàTx\äD¢î€[DËÅ>Fs±ló–6•F°_Ø*ö¤¨»éì]v!·Kìc `¸2W¸Î¾ ¤¿Árè/zËC<—$‰LmDKÑz„P"zOª•ðëDú?"~‹‰ éG>ñ 2©ü ü–P'ä ¿“Ÿ¢0 N Š ]š²·x°!­ÐkclÆÀŒÎtç¬Ã-²³ò^æ¿ÌIK=±¶gZsÞ¬|˜¿t㮄ÞÑ£bo¦½ÍÙU´­tQé©“ÿ·­Æ›c· ª¯/e ”y£ vÚ+*”eON©\;@½5Ä'ünÔ‚„è„1‰ßº'ïÏíRñ¦~BÅ€†[õó«v–-L+¾hx]yÂØ–{-qFò.]dÙ/c×Ê òa}Ññì[ªº#-5-Ç·1;íø¼%ªÒ^¯èrÑhýÕ¼%ñs 5lêÇ´‘ëêV/ ÷‹»<5fTäµLÓ®¶VUwª7j‡DŽ«þ® ½î 1 ¹´&è¿ ûÀ ß9Þ‹<ë•‹ÇÝ6{\ñ¬V%+<ž+FºRfú¸& +IÒ¸»¹TòʧÊ.Ž!öëø%€·™+q² ´RJ¾[ë$Ìiwv´t?÷ lå´Ä…'2‚¿óBâL}æ§Ëñrþ[8+ˆ;ré 8ÿeÝ„$i¨…pñrþå:NþIXäØEvQ>RþŸ<Šï°ã ·ë”g Œ°†·D÷ñ òMÌ‹8™’Ñx ÌAK`|wóí zƒH<Ü+å l§ájôÎ…&Ð_Ì;ì% ªÅZ<˜_­Ð=˜AwPƒ%B³’?lOP3)…t8ì†(¯”µ oü3<ˆcÉ$2Ôʽb¥´3Çlgj¤»Ø‡\(,&r¹*^¯žW¡\KººRÞ¹v³`=\€z¡ßÐl˜s¸ ‘ð6p›Ùal.ó†¹BWÐѬÁu¨\ƒ(1+6à¿Ðï8 ì’^XÚFY+%aô&ö„ȦœW"¦ÑH¤ÀãÑß 6À®0œ«á6Ñ‘^€Þb#ˆQ< @£Ñh8DqûسŒ³ˆ#­fS¸(.ŽÃ\ g tè/$C=á`q]a"Ü ¯€™p*Êûfq$ÒÃptõ ad¹ÇO–õ>á[è32#ÙÂU¹§lŽ —¸Ø¹ uš*ÿSVi7Å.ÖáŠq´côƒ˜ºå/×­Ï?£{W’_j4¼¯Ú]9ÝØ¯ò\M~­ÊX\x´0PÿZ×Z˜ZÒ©›¶±-ïXI¯2ûòæšsµ‹k³‚6»mnnüÖx½QR÷°z„qXñª¢‘E]Š’ôE³ó>dæ¤ÑûBòÃÇF|ÑDE­ˆ•®ÿV0 òuiÿJ¥ñ’±³lS‰Y™PQRíZ9ÉX]ä«o.yVöðÐpѰ® •Wëßå늶×íܾÍaûŒfIñ¤Âô …ÚüQ¹[“û¯i×ô^;j]Íê¡Ï‚zWSÚ4m¤¶5|¦fšzxDCÄí[*|q˜.¨,… –øþPî7Ä'Òs¢ÊÚç7Õ÷ªLeo•ÄÇ&ª=¦.*1:/Ú^ã ¶Šœ1^»2rHÔä5Ÿ4ÀÓ 4z”ª^¨zyÍU6(:ܧ9ÿr»í1Øw§*Ì#Äs«ê­g¼G¸KªH?à‹d6õÄVm;ÄÊÇjÊ S«–=é”-Ó›[)ÒÏ »×ð”Øl²åSD*Ë–%D¾LXÌ;Û]Ž:åºwúR¶ç½Xÿ6go¼½×"‡% Kì¢;7;½r sj\ÖU~Lx*;ëpÁ1I6‡ÿ¤c¢€ÁX‹T";^ÉÒYl‡?q þ„÷‘ß>‡¿âK¸;öÄ*±‹ì€ý9?ÑáC8{¦»ô9Ý)™OOç³Vœ¬nx”#´ÕhëB¦éoô+¦'+G“Ét\Íçð| ÿ×á›è²çWò!8 ½‚UÐ3e é*ižÈiQè'ü öÖùD)\äø*Ú¼ÂŸí¶ºÄÊ>¢Ù¢ÞÞÃ0†[Ïù‚~\K¤!Rgf=ýŽŽgxf”4œµájÁ?â™ä$…gB>Ò­6ïlHIöIŸ8ö…aà9p™à ðûWTåð(4'—Ql„Ø"^u <ƒœxO!á|¸*nGèžÌn` _q,œ CÅŒ»Œ ñL£'È ÙÀùèzŒ¶âmÄ”,Cið–˜ ­° þÆY’L%ûCøBþ mdïÌo“:VÚûË{Ø÷pÔ;<–Uòü ᜗ÓoÎkï&7¦æ²ù[rnäçêG”˜–Ý16j Ÿªkšª7u©›n”•*ŠÈkÊ_ò®’­¾R'4\ªíW½ñM“[ó÷æûë–UûU¥×¦×w4ÆÔ–^~Ê_d¸hüj¸P>¤ZW¥×}O¿Z½.jƒwJëF«²l}`É»ÒØ’ñú.E7‹7”¨˜S{·r¬!·ømI¨1Ù8¹4¬4«dy©aKqq±±ùÕÎ3;Ù-šoÕº®éè¬ vduIZ“õRk¶¶$Îdõ¼È#º.âCde¤C¤:JS¢1j/¨}Õ­Ñ“4s#Ö…Æ'„p¡ƒŽhñÑ*¿º÷Sžö<­LöhUÙ:uøD…Œ‹^Õ)D±š¾š#Ú§QÃWßQ¿ˆ˜Jöñ›£:­\¤ÂžÇT]”G]«\Þ;¬u êêi®˜æ’âÜìºÄûˆ×D7sÇÙ84‹ ·1µÊ³zomnm±Ü{I¢ÅA«ƒ6™’¡Œ›Êþà&‚,XÍ•Â\?˜Óáa‘JZÐx zðž|‘l¹ãѨŸÙ¹ªÃ+“{ø¥9ìsôv K×ökåjûiN[…“‚V#8‘ñ2½¼Cv^ðŠ…k$—¯A—@ 8Š|ñ`´ E bŸÎÃí(‘ø’*tH7<"õ’Ú³röSKõ¢õ¶·­³$¬Ú|aáe¸™¥h çNOSî'@Ÿ§[+éB.e h\HJ„•vk…:~é†?Ø2ñ ä@–ñ³ÉK0XÀ‹p:f‰=^ÄÖ–Íëdí| 6CE¨1`2ZM >šÐÔYÂã §â"¸{ÒEÒ|©™ô›ä õŒÚDýKÓéÒ1`;~B~'Sp …®ÁA0¹fýÌ*C²€¶gÞp¿ÀìÊ7£¢[ø"ô¼0õ[ãtýÿw*ún²~Ü^ …âõc‘ÝÄNyYl£æ…·ÅvŽ¥@!<; -¶_#~&¶6[¼M[ïlÞ(B"é<Ñ\Næ‘®ä~¶œ’?îÉšdø¯äñ“•ÉJd£å'Éç“Dopã¡ǣ簗ìw÷©þ¼:+aåÆº3EÃõßõ>Å=‹Wé¿ý,¾\¡nxX»Ú(3y{3T×èk«ÎÔÿÙàÓ8¯ékÃ¥ún ×ëº6üÖ4¥î\y”1À`(_RíQWÚ_;«rqù}Ã4ÃòâÏúc¥±å¯«~–×ÎÈ÷È¿‘7¸@¦›¥»¬K-¦ é¿)rF¥KsLJýkICTíòB]NîR¡le©N?*/(ëhAh±•1¸zøËi;77v)1Óÿ—ï]x3ÿŸŒ=ÑîÚ>QÃÖ\Œc½Ú?r€f¢†ÒœÕ|ˆt[½K+Õþ®±Tÿ©ÍÔÌÔŒ©ýOý.b¬¦¿¶2Ì4èlPQ`‚ÿŸJ¯·”*À;ßg³—™—FÕÝwy°™¦C+zªÉ×´¨Ÿ¨—Eœ—„^õ·ö.ð¦ÝâÜyÊ4U’r¡ê?·E®¯œªú.Ïzc¯sÿ¡|ë›äÃ+v9ßz4ÛÓ6õ6Fk‹•Æß–ëÍ»,«°|jeµr•­µÑª'õÈ&Ѷܲ÷ª–••–WW>¢®Sžl:“CÿI´]º€'L’¼-Ì*5&m¥2Al\O„¯Bd@½×q{>Bö^Ø%|"WÉnRÎ_å ¢ÓÞ¶7 £…1²»üDÙeÈ3<%}±õÂÙX†!ï.¤ò6øäQ©õ@r†þ(¹E¿¶¹f›Lí²éüFK¥,·Æ /èNBñÜfŠ£žÐ@G1ÿ0æÒ‘x °ƒÜáó…`»4Ç |YIâûè-°‡Á}øÏÃÅ|ˆ&bžŽ QÄ B!0íà ùždLa¢.Ìð~<šüB.DÓáSî'wXŠÜ}XzVÆfBèRª’n§³lÛéYÜ 8 ·¡ùh-2CwàVt—+¡ÎÛŒ¶ñ ¦IßJçƒÅ¸Q.×ðX‰3H¹„—¡©è ©äo‘܌Ǒ'¤ „¿Ø\6¬õµ_¼Aq}åh( AÎbë»Çv¢"7¡,<™ŒäûñKÉ <Y 3¸XÔÜÁ‚œ÷Ú@½ßÇ ÇÐÙk|ÃÒŒƒLáQѦ³FǨ/k#{B¬tYš¥Þ‹Uƒ}µÏÔo½¯ùX©Â|kºµ7ýžèk}•wæ€Ì€K¶n>ç|~ÖÿO­ô4É狜“í÷:~tüÑî‡UݶNØæÚ-vúÛišý]‡DÛ «ZVX­X²¢Çöªã"gµý`—wÎ;þa÷Úe°kyA4’PKFˆæ‹¹ë\ß9íwprº&Êïw«vè rltZí>YôP2UÜ#ñ'¼À,¤“]d­ÙÛèW<ûƳ8kÑktA {»ÃßeÙ½8Nb"$PZ(¾$1K7’@"–—抯K2¤Zò°Ew 32ç…'c&¼…¬°š9JñÔ}ú6NO¡0½Ålö¼LϨB¦X8^Œ·"1 €¯Áð\„ˆ·! WA Ü¿G³Q ³Q ô‡ÖÐn„°ƒ9G¿¡\¨çÔ j Í42w)RúPzŒA<#&Rˆì".‘›¨©ÁLu‹šB÷§ŸÓzâh¡¤Zª¢Ó¨kÔ{j$œËB<ãv|Í@wA'c NÀRöîÏJ°&¹ìM\†>€0ºÁA‚î²Z~û:C53‡þ™ê¤W€MÌ"‰ÕÜ\>‡¹ß8†æã.€À!X¦R«hoâ÷ÊÒe…ÊXåÙ\n6¾ÃèI`´ÂçÀ2æ!HEMè*Ú-ÜùAìð‰î¢™@"RÂl&›M¨ ÊH©lÄçøpí?Q³“·füTz½.¶ì󆢴Éiš4QöÌš©±«šþ¨Ïn8Ý4¼¶³æV壊­•þµûÛÄÑkÛ†6VÖöVÏ*çra^sÅøª½Õ¯jÎV=¯žXëY{¤î‡¢¶¼†­¾]s­¦ß†ŠÜ3%ÚÂùëžÆkÒç¾,Öv,Ï]—Áo*/µ«q-˜ç™˜v ;×òeçÌ}²}'ö¿Ü§è:Ð$«:_±§dŽ5Ï2OOº”Ò“\›ð2>!ºÊ0$zt‘Y­1‘Æi1ÉFl|µËø%êGã=£ƒi¦)2²$ª"Â&dj𤠾ã},Z¥N¬[«Ûègø3´<27¼{Í„(wS¡9Ì|=™|c5*ßÕºmÚPýý[¿ßßdíïºé>~=—>øGzóŠSòNõ,ó¼îsÒç°Ïÿ:¯‡Ü3i¤óqggÇ.Ÿ]œ¶­šl»Û~¢ÃX§É#˜ÕoÚùÙÖÚ59”Úÿa?ß~¹«»­Å-Mâe;lå»Ó¶óœf9g¹‰æ1îþ’;Ò1´ E¤qJ¢L‘ËpÑŸnÓÄ«Eån„»Eˆ é(ïT6¢‡èºÖ±„–þSöüw<Ïà®òþ<#ÛÊ•_‘IÁhâ³tªø°¤ˆ%ÞKM„QºXG.¦÷ÁÁèú›‘+à½AÜ ëñ ü3Á °™ÒáP´—ug¯°V˜1p<ü„ƒj`'€Dèr%ØïÂPX ï`+úý#Ø#<³à;†2PZˆ ÓBQ):|™™ô:“®¥º(W²—ÚKM ÛÈTr>9†ºAÎ"²¥ƒƒô%Ñ@N'ב³(+šaÞÑ«©*‚œKqÔò1¹ŠLcbñzTýàeH£¼?ƒå ”£ ¬Ž{ÈÙq¿²1\ì-—„¶Ójêwú0°ƒ‡ñ+ö>¶C[`½€~Jd‘4Oâ¹Y¼D6B/kâ{Ùmð#GØ#p"mϤÀ¹ø›'맸ƳÝè 3•i„Cñvç‚fÁ4ÄŸñP6‘Í÷B_FKß'?ÑVèì VÑ¿3¸=Å Y†õD3Á'f6<‰ë¹×òQA‰qŸâý#쇬÷þ«’Ò‹C+ÛK5eó«&[´§ ³²£ò¤¥Ãk“›¥mÛ²[YêÊŠò_n¬+ÚÓúk;Y§«­µTXjjNU ®þ`y]Qó¤j_µ•Å’ý¥,¶&»êdnOÒ×$»M–œG“‡'Ï*«`j;r3­/Ø ª ݺdïå vûìßù°k«¤Æ±´!«¬Ë`æÿ‘‰ŸÀ.¸i±ú(ðï%{ÊÈð èôÚ“yBw³$¿ˆ}ÄëEÇÄVDBì“HHÆcé^*…\L5R!Ô2Aøìyr;qMz–8E "BIcÏÔÃIh9ˆd†9œÇÞæŽà?áð=h@±ž³æ»Øì]î2w;¡Ép%H€—P+,ܳã@ãàA´˜SsFv·+c_par[™5³?C[X·bw¬GþŒ å̘P·žÂ6a¼ Ý·Qî)g-û…kf×ajFCXÛÍ:pø£:‚ƒðô2@?àK\£¼^žÃeDZ³8;öóŸ¤Á-\´˜õøû‘5 ´Ei0Õg'æ™6egÉK¾Kó5櫚R÷¶ñ\CUÝôêk¥¯Ë—W5Víh¹µÿ]wÜ–®–~­/ëy‹¢Ì³Ø¥ü|™¾¢²:ÆÒ^;»RÜPØbßRkiÎù¶®tcIÁÈœï3®§žMYXTMUçÌ£6Ž]ß/™H?^6®Õ§}\GÀލQ»~Û=¶kó좥‰îÑâ]|cì§XCl±ù¦é‘±ÈtÏXnXÝßtÍôÙðñ£á›Ai.7MŒ¾k´7n7d 6‘«Cæ«Öô ù)Êô£ü;N èõsÐÔÿ¸F¨³ökÓ:ëîø>Ò‡Ü×;†¦ŸÕõú Òué*u¡úi~)­ŸÞU£÷Nõý¢¶ø$új¼ªµ£B["†é‡¨S•yD¾cÇûgµÃÇ:_‰vØ.q;§8B‡X—"÷é.ÎNÛlº8‰—¹Å‘îŠËþË;p0÷‘k—=“íVNðZ$OR¬’­W™¸üþ?Y»ÜO—Ïáw3£‰jé:©§(RĈŸ †ø˜#J"Ç*"ˆI÷¿PiÄZbzˆãQ2ÊD? „ÚйPÁŸa8 ‚ÑÌDð™ö2ÇQ‹r¸5ø6[f@{æ íNÂ`8ÀÜÕp"܈!» 8× ¦Âs¨gi<zãà5°˜èD†bž0_@‚H/n!¢a³i«™—àÎáŽq7ØÙ¸†±'¿§Ö£a%e œ¬ƒ˜=d$¹‚xN¬$_‰3D;D~’ÒRÉXéabñIjGž!U”š²¦&‘ˆìOýKž'Ë%.îXü¯([¬ #¨f’»©íÔpú?ZÚÒç¢ñZXÅ .Æ,ÅEø¸à’,)Œ7“*¸sŽfeì*.…­Ã½¸¯dý„~Kâ&ñýùÙe²XpG7öwvû]€§a!Ôxú'0ObаåáûØž5±ïÙ'l8«áVrCq¾Ènb'³>2ÎLlÅÏÙ ¶@ȳšÿ"[#߯ÌWt°ýQ+êÃîBÅ´«„wíë’ì¼Ãý  ›y‰ºLn¡’±whY|WÂw)!…±e—ÖŒ­ß`ÌÙWõ¸þ—&çÆ¥õjÌÕN ÁíÅmËBZ.o}Õ1n3µ¥§í|³kõ_¥6å_˦Wì­öhüÔªowÛ’Ûn×XPÁæ[çœ-—§)s¾fÏ.<_}±ê|‰(oLVmfGr™Á±4¦&‹,?RŸÛÖ´cé®s»¼»ÕuäwDÏ6ïŒ_‘pÚØÇ\eõgäpãtƒÒ¤26/F-5N‰šdhŠšy$ªŸñŒÑʸÓÐc8`XhÞo’/„džΠþæGéOú·懾 I ¥ƒ÷†Î Òø%Ìô@üåPg£­ÔÒwi“µ½úýþß´^¾3Õw½³|Ìz{}_õE_‰Vç{GÓ«Yéÿ‹ÿS_/ƒú$[ê~Á>ÍQkûÈ>ƾÆØÍ±—Úv®Ø¹b±Ã8§…N´[s»óßΗw.)’ÏÄw<j úŠ&W“ë UÝ^¤ì4?Ôãºf¥ò¦ÇYÅJ[Å>Ej¿Ç`OÕ0|(Ä€H• !v‹HV_x˘ÚÞLÏeÄt2uQ²˜¸Mç‚§àØ›˜¥ôZ¸E`êdÊ`'Ü Þ;xk€_€¬”wÅûKœO—`ͦ œ:íñ#øÌ~Â+3#À(8Çýð7ôú*™<0}¨±.ìq(|#œW!ðYŒÀRæ(0Ÿ,cÙ#(ZÁæ ¨…¨¬ èatÌ*Ž8)”ÚSuÒi’%q–ÄC¬_–xJÞH܈ ÄÊLÕ{¤µäPR+ÈQ£«·{±RÈår­´V”)‰WIÊÈ>ÌHÜÑptú‚»à> ÄÿÂÇp(ËËfðcÓÄf’ ¥;@ xWΑ?./‘í’“Qüpþ™Ì {ɺ ¬ì#ª˜Á)á*ö¸| /c``R õ,ýÙÑÜäöâ\»‡Ç.c;ÙKøœwãžsÜk6 {¡‚kæ³/ù5r™|±b°âŽœõhU-PQ+Q¬Ð-ñÒAÒe¢bç¿ìÎØ9:NwIpýA´˜Ëò‹¥}Å¿sŸýÞGÞLÞY|¹fqivVnñœú'í—ÚŸ·~n>WŸTµ¼œ©Én½Þgù®êphß¹yáfªãÈf·6ºåKóÄVÇ–-Í[b7¯ßÜÝÒ¯æj©²È*CÞ¯å%\Á»üªÂÞ5VU'‹§å_Ý4ný)ó„Ò¸!ùEîñ"¿òèÆŒ½KÌßç·gqÙôŒñ‰““F$MŸ/æ›áCÔ¯Æ÷Æ:SztUÄ‚È%QÅÎèiZ•·¦5òIÔbã4Ã0ã³<úv\®ùž9Ô”•±%¤8øI`ÿ¯àaãC³Ö”…ŽÎ $ Ú˜èü¯¾WãésÀ»Nu_ùH³Úg«ïíBßt­z¨ÞSgÑöÓýãkÖ†û<õðTõ~ïSç3ÝGìÝ„UŒHÒíxÝuƒS–ã‡ÕçV.sht¸çé´Þé´SÓÊg.[Ý<ÝÜ&»N%OqqÊëžåÞu’ÚVõÄ#N¥RÉùùÜAî¨lºê­ÂJöŒ“q‘Ü+¡CdØó¼½¬úÓ?K†H1h&tôe¨‹ä$ê#cEÉ§Ä iÝL·3·é¿¨ÇàýþœvÙ&XîÁI z¢ð Ö][étFnÃKÈÀ>ÈuÁ4x¡#° üˆj@&ó™ùˆtq„+ñ<´à@ü … $ƒ& BèÏÁÛ0›áoL4}\à—µ`œ5 y[úY4P„Å{ĤT"­•¾’¼ÛK&Kï‰Ë$&ñIy•´&¥dYL•“mâO¢â`Él2…üS:@2W¼O\*Þ+i"vH7K[É z3s…€Ì>p­ÅáØ›'»Ä…³Aìvv, sàU!9ýyN>Bñ„¿Ëm”*NÈ®Ëø>ðxŒ*¸ü&ö4’° ¤˜ÈëØ¸%¢ç¨ íD“ÙAüoÜ(îg.ˆ/ã2Øål;‹½…ËØ•Ü÷ÜiNÃ'ò|~Œ´l.·R–À’)•òór“ÇZÏnÏ/™r |/nq•ºUŠÖ‰«Ü¯º:ºAÑ÷$Æå¤Ëj±5½l¤r¤_‘yÉúã9®e_K rî•üÜò¾óBGßÍs;Rê¹’´üßÊ“ší6/kù»VÒh½åîÎ_·|hmWÚ¨Ž+úÍÌæmmÒv›-·Ú†¶6Ôö·ì¯Œ-}–וZâQ™Zf“76gQ¬Úº®±ÊRèžÕš:$~pêÍüÏeòŠkÅ}Jæt‡>ÞÚ²v'¨ºPøOÖ¼ôÀŒý©I?Å4ØG­0Ä˜Ç O¢B#þ3´.›nD„/ SGÝ Fó¨Úˆ1Æ×†2Ã3C£©Ò4)b_°8d@ÐŽà† V·ÐÛkö… n <œú}Ð`ísM“ÊZ¹SnñاÎô|äóÚ·BŸ ËÖŸ ¨ñ[¢[ï»Õ×NÓ¥™ã•­>áÝOsÑcºæJ j‰ën¸$8V81«_9*}Ÿº8.·ßíÐèîê¶Ãýµ¨CÒEe²ÅÊ6M…÷Y¯ï¼~òªìÅ"Ù{y¨ÂV9GØÖ |¦²]9€¿ÁŽÇZv3^…üp"XŠEè-œDŸ€ˆyNm„g#’1w(Oú-¥ÎÓ²rFñ›ÜÄ\¢ô¦åcudáå¬ÙS*ÔOª]_Q˜ÿiÃö¤ÂlP’U9­<®hcNoõ×Çj³Ën–^(Î.t-ʱ¤]?*Î#Ru3’–m²3ïˆý;ÚÅdkÜy.j«¢"#þˆê´6¸˜lŒŒîæ§Æë¡wBÞ[‚òêör/Øè"YtÛÿ®RÝ©j‘—µywj®xý§9æKèN][C„¸øÇû ôK÷äùZ³\sR3Ìg³÷"Õ;Ï^hízÚ­Õ»mµóVÝC—Ón©âD'Ñ\ПJ`fÛe9u¯"±/=Ç©ÄÞjŸÙ*Þ™ÅnA‚ïwp¸aõŒæÅl7æÙXtB¯‘‰³A ¹Á;ÂÓ²çCЇQWVŒÑ>ÁÓÁ° Ž…,¸*‰× ‡œ3œŽ?±£Y¡“Oâ»è“`tŸyÃû¹S¨‚ÙÊ ¹¢ë°å£ÙÈ$‚n!§Ÿa"ü‘0GÀ ¸†@‹` Œ†cà|P†ªðhŠ›‘/*‚OÁ¯ÌwôG ¯17…C?gÞƒÙx/¼†CÃp:Ȥ‡Ò_);Ø^Á÷¨ç¡…J¸9ÑïÄãD¿¸Ÿuwý$.”xI¡ôoÉ\éQ˜–„‰N¹w»ˆ”– ¤ÿGM¥LdÕ—©¦÷Ó¥ÖÒé!i˜t±“ÄÌ£Þwˆ&”ÈÈ:b 1”šA£ÄÔQâ s Sƒ„&Á?p9²ü/ìaÁ‡òÞªVe_ÊMç(a‡y Ëmw Д±.FkZ¹)òMÌŠ´A¹G çTL©í—ý"*HwZÕ°æAÊ†Š°†ü–»mŸZ@Óÿê~­î­íiþÚ‘ÜVØÜ·å×›®Ìƒ±»zšìj/6<­R{ßbn¨jSuŽÎŸ^r¡âUyŸ<Û _3sî•ýÔ¸²>¹ôUoÁ›¶bHÙÝ’!ùúô³ës ¯ÕEòW1)7Ö½7¶«Çj _aô;­kR¤xR¿V·*¬Åì"~Þ_ ”‰¢Ëðlh‘Œô]ô…kgU¬={•àdv*›ƒ>àl‚ïÐt€µÆ?á"*ðÌûb‡8!‡—Ð1®ž*ãΰûÀ#p b9=^…iì„jÁy¦‘É}Ð ´@Oà ü/ŠGSP$üìeÎ äÜD~p0Ü?a;ÜÄæs3„•b2úÎÈ–Þ 4ì? œÁü-xh m== Üãà+°–‰¿ ™±FîØ‡²pt2'gi´’±Ðóˆ~î΢xq˜xdƒÔDf—$‹%5â‰â ñI¢xÆÿÿcBúRŽÔ爛4“Õ¤ŽœLk¨¥D˜¸Sœ#‰•î êÈVJI/¡2¨zÂQ:…x.ýC|Dü‰œCß%ŠÈðæ±Uì:Öáæ+Êw³Ù^n³Ü]ÏyaO,bض„[Ïaô#Šd¯²uÜ4î'á7¿b빑ü@þ&{‘Ýέ•=P ”3¼”O–©ëËFµôël¶­G ·cêMµ®VÍá ÖŒ²d4UT“¥‡²öGdìò:êlÚ¯¶Ô6Ç·ˆ[ŠšNÕ¿kðo߆šF4Ìj¸U¿©uâ–A»¬¶ç5*êzjÕ5Öá¦ï:Ž·­Ù8«€­¸Výÿÿ˜wTyÛ†W,k¯¸®uík/ØÅ $™Ì̯Ì$¤Ð! ½$Š(E‘&HMB …žPE°¾vѵ¯½b_ûÚûÚ¿ùÎü5“9g&ç<÷s]÷xçéÓ·fçé&›­Uó+ÛMNúôkñCÃ$ƒ[‘"¯Nÿ<}A l=Yw»üŠi¨)Åø±øIá¢âÝݧâ¶|Çôïë’×êbÆ®ÐŽÔ Õ~Ñ0šÜŸñ£â‡q3cçj5±o5_¢j6ÅÜã~ÕTªêÛêš0Î{_=\Ý-úTXMøo¡£B.N l +ïˆl‰ú3fkTV¨6úÍósöÙí1Ùûš_wÕ)ß}>·UÏU#Þ§0ñ]zïòkõàgôžäÝì­”{œf×Ðï–6Í.|·ÄÑõ‹Hâ‚]‡ºîGk€Ú75³¸¨mS[†ojåš ‰?ÂFR¼`î±ÏÜ‹<‚½¥ÞÛXTC/£3¨ä†/£k辌;˜;È }DeÌuüûâ> 'zˆ?¢Cx"3—"ïÒUPÇœÆ=Ð5ì…ïá6F!ÉA¯àT¼ŽÉÆ6þì(ëɶ2•üùrÆ-Á|­×±¤Oƒô Xk  Ü„|PüÒ0Ý™Zôž.7a.Ú‡»Âó`!|²` žË—,—ÜÇC¡#z æ‚l(… Q| 4Ð$­Ôsz"üNÁAÐL½£OÂ9xœ‚/0ÁPH7ÓH€Ûp*RA‹ÿC Ð  H¤¦ÿ{ˆ¾ BFôTt@¸Cà-x,ø[pSðA4ET'8K‰[È2U¼_4N¤!)†ÞL 7¹Lrí*z"JüNHˆÛ¢©DÒ4Cˆ±¢BoAžHD\~”ŠãÀ:ˆ˜9ìæ3Ìý®t{™‰•œw/”ŠÙ4æãÍèq$>‡×²Œd¼ä?i‰ÜÙ}&[ÄÜdígi³û_Ò7,’xJO»•õt•“ spÿÛ½PvNñ‡G¸â¥,SÆÉ;+G(FË¿ÈîÊ<«ëåjùx…—G®× ¯JßgQæµâ‡¼Ž¼·î}®[þÀœÈÜ›ϤÉ+2ÿg×5<­ µÛêâêuõ·;šf5n¯Kªî¨ü\Ýn?´}íÿÒ¸õi‘Öûu„¨M´«m‡«3kÇÕ¿´}¬Pu¬|V庪!•}ª^7mQÔVWì¨ ¯žWÛ»n¢}N¥$£of÷Âí¦C†Üü÷ú‡Ul+ë—V÷0!ýÍüQyi…ÑA×Zp©ð‰Î¿ê~sÐ6SÓ~ÛM{ƒµ'Wåþ-êo¸WŒòY{×+“ÊvhŠ´µAÜ?\WÀ}æôš^ÚxMº¶B;Gkå.kfª—©k8ÍKµ“f§æ—¤ù )QS1_"¦D ¹XëŸp4ô\TϨk"¿GVF=Š©ërÑïy€Ä·¿·›ïxÿ_‹ýæL tzz^Ó+¢%UeûËü^{WzåË­²X@‰­ní®ÈyÍ¢²Å.»„cÄan0SÞáiVEþQ²=ãý:&úq˜wÀ ¯;ÒîîWñyæoö¦tžd±Ô§ÒýTxÜñæÐb;òEcéÕh³‹õ“Fb?ø…¾‡Öâ6‡ÓrºœfñÄ¡x$ÅÃᦕ±H¥ŒŽÇŽ’cxî|d8f"3”9‚ñ ”‚±Õì`& Ý€+aå úB1´âT û¡©è6œÌfã-¨ö€>CagôÚ@ý'h‚k/“˦3bL¢J8* ̇£àCêÈ€ÀØ„ áiº ¨éÇ”þFÃ1p4üVG°$ÃÁWj"]OŸ=Á ”ɸúFJ+„gÜV _ ÕÂn¢ÏÂW‚·an­¢‘IøAxS|Ž|H²ÔòžØ@†ÐËé_(7ÑU·Î¡Ä`¢@0I8EÔ_Ô Ô‰þ"ÑXÑG¡1Wl#¶ݼˆJò(x0ÙÁ’eîߘïhz£‹ð?~GŒEŸ³F"ô êðÌö£l¸¢¯DÅŽwÏ• R|w$..s”M—·ËžÉÆÈ·Ë rR>QqXñ@ñ\á <¬ø¬Ø£ìãA(íŠe7ïý^VÏžÿ*Wø8¨¦Í íTé_U´×“ò,Ñ^ÞøÒ°©ìwSIÞ´ ­6¬ù]cR]Mõ/•›«ÞØzÔ÷©_Vo¨?VƒË•§×wì»z GEAÎÜz³_Í/•Ŷ;­ß·\©r¬{·u~S[uVyW«½ü†µÃüÀ"¨xX±¼¢Ku˜mн¨öfõÓŠîKöáô”¬g…aºyÓ ¾Õ‘uÉv·êLó£nQI¥ñº!_t=tu%¢Êg›ïµÞoJ¨ÝÛ8bËÁV×ÆÐ²fÝqýçâ=…ê}ÚÎÔk4Ú[q{4¤¶‘OÙ0­›ÆçXmrümíØ™ÚãÜlnWÄR/å¾qG¸1¸]Qã#;E¸†Ì yp)àYÈÁ¨pîDl;×ëÓE3+F±2¤6°]UäÐû†ò¨ªÔ/FùD>&È3hYèÙˆêùáÿ ªúÅó‡,F¢qcÂéD¸(Q¼QÜ"ú*L˜ÈEè_ºY<ã¾WzÝÛ%õDÉŽ|y‚cÈ2i­d [Á¶K>á•Lg6‚}ŠKÙHžaÃ`tUÁoèÓUº•éï 1m€sèÜ„V Æû3Z馿¥Èð<Äû™µ<›J˜^¸ 3“íÌÄâ<ü@ÒÄX™¾L">Çâ÷h NÇkñW¼ Á³^áx0lQpÍ´ Tt >¦Ÿ£q¸9¢xè w$’gü 6Âûp%JÂë°žyÇ´á—<ß&ƒ ð•'$Dûá>fó¾ öÁ!L5|Eé?èµ ^‚§ÀOj4}’>A›éÁз«@(èL^7P5’Î3QH7‰í<§êE5D±è•¸M<™è+” ˆ¶Ü\âzÑ¿bòu’šEjų¨ôÐB}!”d uU¬"f ; ›‰ÉwÄya:O¾Fá.ѱ#iç‰f‹Óè0Ø+z5ð_Ú™úA&ŠÏ‹æãˆ&Q_Q/1¢6’QäYÒL=!‘dœ.k÷¨–­‘Η©eV¹òœ\ê>Þ½«l·\­¬QÒÊWŠž‰W” <þö0z&x±ÞîÞý½.yuõ>îé½Ô÷M€,Ø>>*-zuì‰Õ‹× ÞÐ?þs˜CìáÔ_co®‹þ™õ6{¾·É¥æ¡é‚ºÂÐÒ?kvÔÜ©ÜS‘Q±¨Ò¥ö¼}€=Åf¬]^uÇtÂÜZUR§­ŸPbzQ6Ö\czkbm¿î›yè¯Æ^õö-’æa5W¬ËMå”e‰©Ú\hö1.ªÓ»eZí ËSWã¶œŽÌâŒ2Y¿+µ_ÎHóÊÊKUVk¢¹¼´JwF—®QXÊÍ.¦®–©ÖIVÎrµrm‹óŽô=¢}î­ êÙéºäòf£yq™Ñø¯ñ÷²Öìš²Ú“-N[»TŽ) Ñ¥PEó ëŠ" ìÙÒßf·zšäæ‹&'óÔÒ±ú˺׆ž†ý2}¬ÑÝšnYj¹jÞ]Ö©ì‰qG©¸l}©Ÿq¤‘5ô(ŽÎ{”Ѳî`2³Ö1ae\CÜ‘X©vö·SC©jsß4~Z™6„ou$·A¸NÈ…q›4‚h“úvŒ[Ìau¸zަ.lsèÚÐõ‘\„ÅMÒìåöiTê1Úwa§ÂG‡äúñ©ò™âÙ3@üK¸KT˜ë¡ÝB’‚ü†(= ¶ÓˆÌ‡NH‰Æ3Fö€”–ŒÅ·$±Šn^£”Õ8¤%¼@i™•^ÂðÿE¦z^å'îÒµ´†Š;ø”y0Ïd—%ѨŒÆ#wÐ@Vp¦Ç"58†ßñ®9½Hýñö÷º µˆ…û2Ȉ&! h‘ïÁýñv°9Šb+º Jà ¼×ÀT 9Í—ve0'ð7¼Åì†drøDùð¹ àﮆ{è.ðŠ„øjf¢Ñ:ÚZA.ô¢Ï¡ô֠Ŭ‹$'#Œkà+€ÎÁ¿á->‡ÿ ˆæÒ;Á!Èйt(+øÜŽà•fÎñ´ þbÉáí@O#§’:q‚h 1‘\Œ†2É`}¸;È/‡{ˆ@b±”è&¶‘S©NâÅâ«D‚ø yŠÌ%çQÿQ µ‚zF%Ò©¤E<‚–Â+(å‚ * tCÉt=±‡ø]<“| g143ÏEIôn‚ãSÞ.˜) ¦ ¦¹¥¸B·Daž É­‹ðµà¹@,!lqqAn?Üf f(e›â’äµt‚â˜gÏ WI$Ñ#ÖËà÷3hPp¯àáҰ…«¾Æ}>z!²}Í×õ9k–ÆÌ ê³jæN'²äšf™V=®w¨/¬Œ--Òe(s>m¥­ÏÞ’e.)¬5Ž«Ö[%ÖÊò¾VgkLeÙZ¦2í(ï_?´áCmçêýU#*}¬LΦRÓ s¾¥ÃjÙl±Yòj«öÌükÉþ3;ìMµÕZ\ÚVÌ´ì4–Ö—¦³¦öÝ)6Eݱ†Ù5 ­®úK93ËÉÓÜÓ”b˜Y4±xšqƒež™)ó6}-E†L½ÍøÅ¨¯Ð‰ËfZ,®ÆÃý ݵ¢ß‹#t'K%s ¿é—nšž4)¾sr¤N«Óµº¸ÃZ¬ÕkÇNÕãí2AÊQ[Õ™Ün¶æWõŽÖäVsÏÔ¿E®Œ~¡ö‹ÊŠrŠ ø¶<ôlPMÀЈz­(®s\'Íõ‹˜Ñ1‹¢’£ìáV‰üîy½õžá§Sýf w =œd÷oðþ cÙÞ`p ŸPÛP8O™8ÏÆøÒã÷|¯¼snëÑŸ¨€r#çŠ)øAºL:€yp*¤ŽÐàtcSØ¥RŠñ“xê…пãÝèodƒN ®aß -l‹d1ÛÌ®¤0ôC§àäját_à é.žpÿ >̾ñõÇÏP/´9ÃVz+Z‡=±+–£d†o!Çß·¹‚RÆÌ알•ÈñFø`¾ÓV†"q3½z€˜S( }DxÇ}^£§HOç€tÇà—x¾Dé|r¦ÂMPŠÚáø”'× X{€®B~VÅǨ§ä5j°€¥  ÞPºC, wÓ•Ô0ú>±žØ þSœ@”ËÉ“ôú0™)vûÐ& JIV¼V¼A4˜*vß#iz#ÐÓŽô2ªÿÿÑÇÈ{Ô\¨:ʇš|¨pb«x*Ÿ-;ïûÈ>`/ÿ^séËä7²üúï—$Ãrj©,qèÖèzÏe¢ëD×rW£`¨àµà©p‡ð‚ÐYtRäA>§rÄEzP6ÊJÌî-¡‡1é’Kî4cs®.ÿgÑwãªêýMKêU•D¹²z°mK…‹yNéÃÿŠÿ3~¯«emnÕMÖ–™¥½ŠS >¦¼;²SËc­sÌ[Í÷ »îqoókünα,®;^·Ãz»ÚÆ6hš¶Ô¬þ£z‰m©ý—ú Gmñ|[ÓKê?Õͪù`bílzoxP²ÙMÞ¦SæúŠÃæ_Ë~–Æ–ô1ôÔ㦇¹[i•a‘±©d—a¦n¬þ¯á¶éWˆRöÇ©ãº$}Hê›è¤ ãÖpµÚ¼Øâ¥Z?í.•«Ð°ÜfõošïjO­… æ–rÜ MOsŸcÔÑwC4.AIÁAN~ý|ý†aî¶ÖƒgäΘŸš«Ñ‡ÃßE\ ÷ q÷½ë%SôŠTù} ù¦¦ºê=Ãû¥‡ƒRÅzá×lZŠöP1ôuxzQó`oØnCŸ˜kìMYª$ËyÎ…BŒk‘zÚ dƒØGØŽÔ|˜@‡£N8¹ÑC@ ˆöÁ$”n"hw@¾„>°‡Ù -eñ °Yø<ò­Ì=™½ø%3Ž] _¢^’®ì¿x‚œà6¾«½†Ãék`¼ ¸/À­P_€Ëd=1íÒw’xì‡ax@=q|çzšið‚q¸*„Ï¡?»Ñðü‰¡”Á·hjÀŸQßî,P{ƒ#  `ø®ɰ Zioø ÷Át#H‚ äóýè> á{ø€>Uìæ¨v6ŠüE*BHÞ!;¨~´³ø7Qio:“Þ.. RÅ· 'qºø§x3YFn _ÑýàFô ÖÐwÈ ô>§rÊD©À z1±V$&Îã‰iÂáV¢;¹—úJóáð æ`w`׊N þvàâãÖ&H >se‚xá'a“H!/LL%cxk]A.!QÝÐDÜ[Ñ1œÈRî„»“L§èäMû4ûÌò¿ëçº*u²ÞÉl6;—ÝË«z—^XrºäÆÆ½I‘qΑMaǸî)~Y1›fçï.v2ϰ5§ÙÛʶë ³Ë3#òŸÛÊßÚœ›<¶Ìm¹e›bõ(QºÓ¢0MÐ òV¬›¶Æ5íNn“žªšTu¡ôúŸ¹`ølWݺÒIæÚŠ“Õkʯ”•™µu³wG:°ÿæÍ­|´ÕV¾¹*ªnBsò–G­hó-[cEIùžš«›/o™Ð<¹¦ÎÚÃú­²¯Í±vKåe«wYF‰À(0Î1ž5^+õ4Õ—Æ™-ö’¼¢¨‚°boÃo¥CŒ·J Œ§Œ îEIÅ« ÃJºŒÅ~9túý¤ I†5+’jVïí¯›¢ÕǨ5q>ÜAî®™ëÊ=鮪õÒ,ÖöæjÃ4Å1?¢_G¿[µ3è¬ÇHŸŸžQ^í^Ãý5aÓ5#cuZ5ç¤>í¹(¼gøÅÈå󅫆®R^ žVÒP(àdd'Húð¼xœÐx¸~„5ü”a*Z"Iõkôû"ÏAKèS¡£(e Ü…ÇIÿ tò¾£ø\A§‚mð8lC§ÑczðBC˜§8íÁ§ØÏ¨‚ïP¾ÈŒò˜ÕLVÆ6à¾ø.:Kû0åÌ\Gb{£í°–Œ–÷fá >#ãñCÜNGïæ9¾À\`7ãG°’£Àdì (ë&kQ¨$µ ‚~<¥$ð-C£óádx-Ç)|æÏÃP̽øÔ<‡J¾å­ÄÅ`? ŸyÇ„ô8~ò›©kÐÄ7ÇûÐò Îþ”d¹«Ð6r¿5”TõÌ„Ýàr8Î`¦3ƒé‰¼1~&拞ŠüI=ù™ÞÀç£îE7Ñ“A!ý“8*êB6‘s©Õ$GýKï¢ÞS®|ânAOÜŒ:ÊÆ;ïk0ŠN£R¨22S4ÒÕ[0PáöÉåŒËa·:QõœC•R¡äa±‰¸#¸ìúÆ•s (¡“(MxC0Uè'\.Ò ñ7±T4Z(Ï#MdWê$uÞÁËÜŸ)zÈsdÝ3åáò!²›òã^uª«` WˆBÝ9Ák]jÞ¨’@³­ÆÁ¸"½Ïêá± ] ‚Šbó‚²ËV«Wòyí?-èHTuҢ̜ æµë›6«l×M±%×KFZ䵃›ò[ó¶Ê¶ÿh¥ë§Z Œ§ ~Ýð ù¯uµ)¹tßëÌ2Oÿ˜/ëç/ª*¸”þrÍâD—5S}rÔ†ëUÛëi{Ru¨U_;iOÚ©—'³¶è*+Ú­a57쇎5Nk›·6‰jV—M)ñ³,n2´®ÝÒR÷{e‚uº—°Î2ÕŸÅ|/$†úµÅSŠ®é&›¶Y?Xþ,ñÑ *´CCJYT™Ð¸ÔXPòV/.n)úQ|¶xTQß\UÆÜ¬¦,qÚÜ$*11~†V«¹ªuÑBM’v¿6 ¶sÜY®:þƒf¡ÆG}F­Ô„pö¸4õqEÓÂy©3böÄ8¨Óƒ]¼Ÿz.Pm £œãS>T;?òrÌÑè¦(ax`”&r[ ±#TZ–¶ª |Zôäè Ñ ‚{*߃ëˆcÓ%“=æó[p©$ƒŸÁ“PH÷„Y´ú(­•M6¥ßU=tÝ{3%¨¾ˆ»àÙ‡€‡lƒ$‰¹‹ßƒ{d#¬cÞ±o±‡ä¬D·¢,Ô ·ñ>× _A7 ½à{b·ÿÿJ‚¿Á@œ„ÝùßËp,6£kð&Œ]ÇÔâzèåL™d>³OÃåHÞ£\”ÉxỸŸd«c|ˆ9Ã_á ¡» ” —')«Sw©ÂÀzªŒóF8ßEðt†Ãùt?úi/"Þ_ˆbâ¾ØŸj¥ŠA*ß‹¨·âVê• ¤¼MR'èÓðH¢gÓ¡ôôéðbt”ºGåÑ9ô~ø <¡¨ ² qKðIà&ì.xê¦u!è#¢ÕO>QÂA˜)Ô3¹.1+sýŸPB¼õ½Ž9¯D٢ϢNÄC<"ÃÈž¤¼Æ´¾S^r$ ‘7¸oWDx*””Á>rÿAÁ¾\V²{š(ólnfÁÜÒÇUÅU¦¢îa„2>yíÃÜÕUšj"3;RpÔ;ÆKµjtÒîb£UWÕÏ–Ñԧͯ-ªáµ•¶Þ·.­°Û:šlm]·W77Ôø•o.ݘÿ2¾³ßVŸ‚€jïµ’½°ôH„[â·6ë@ÖÇd[\m\ÞêékV¥Ù¸ÁSjýk­_ W–M=¹êšëÿ¦•u-ÙiÁö ú¾uvEm—šèú§¶ …⌹ù -ÿ4^Øœm(?nÙbm° +1—ë|sò €þzQ̦͛ó¶äJ‹†þ3]´ü]RZp2Kž½² C?¤4µtAÉg¸_œ³©wîµ¼¦M]ÒTéLQ¨Î·À9íg¬k\W®sÌ õ5Íùh[«Ñj´´ÎqœÆ-:Ÿ¿N©o©å¡æ æ§f«z¥Z ¶s7¹šˆöÀA¾ TG‚ú ÿýñƒ×EÐA?C&†ô - ?5!&8:1zpØöUÁ¡ùá¿G7GdGö/_J3Ü{ñ”ŒÏ2=äR†0Èènü6¶ËÝ•5ÑQÚ,Ïãì©3Œ¦Ç")º‚þÿÿ—wXS×ÿÇÑÖR·­ó«-µµ¸Š»b«¢Tȼ÷¬›°‡Œ°ÂL{ï=“„„ aoްŠ8êÞâÆ­¸ë¨ú»¿'%ç>ç¹'ÏyÞ¯—®&2Ñ5û™ÌCô/ÌGû¨·0¦£ ¨ƒ6Å{˜ãdž@Ìñ8OÇ¢x%ؾBIð4½}‹¥d]G³àS4ŸFyXÅ@æ.ÁUH‚F# ;¢YDˆ÷¢æ#ö„ñxó79Mhâ„o£ßq6ñEIØ™i÷ƒÝ,¦•ÌcìÈèV‰pz€þA—¡ìC>캆|Ï|&Gˆ ¹åp©ÄÎx üý‹4(€vP<ºÄ€àLýì>_kà < ›÷؃ Q›wÁ:˜4Š‹P»¢‡÷À:”VÃNx•²ªù±½ÐF8(X hdÉ&°”~B§#W²Ï;Cðƒð?8 þ‘G¡¹P .ÒtÕEm¥$ÂŽ›þ)¿C7½·¦éfö¸/÷YÑžuÞÏCQáèæ í-¦Í»»Öo=ÐýÔ8§â~Ù#õ¦ÚˆÎ›=]Õ-£ê—ëß”¤¦9{­ö«ñôîöyî?v%º=~Mʦ´ÏéÓRæ&{”Œ´¬¬1OkX’}UóE¹|¥ÎTe–ÕŸ½½àAárÕ— ʨoö1NjxP?©îAå/ê˜ wùw©×”~¦µ¢Š8=(ª|f¨5ÌÕÝ)Í(º[V®]®5Uº^/þºp‘YYŸÖI?ZûXy%ûiÆ¡Üê²+šß4 êmJºlTY}é"Qá¾ü‡i?¦U釵Å(åFdE„“L!Ûº6lmDŽ"GQ±7úFÔYl0–Z¦­ “ÊNÉÎËn„‰dÅ!/e£Ã}eºÀJÿÓž¶.³œ3¥‰ —ş ™)ùÃWî?ßç/‰¾–AN¡‡‚îK3¤ža“P¾Cnçï+ùÓ%DœF$â…Œ„ù„êÈ*ñjÑ;; ˜P è¥ü5(B<w˜eâ¸À÷šýuÁZt™ÂsÐOaâÉ2x ½À_á{( @ŸKÈZlE:I6™Æ¨ðbÀéùä z„H€øÈ*ØÔ¸¡Å8iÑ\ƒ÷£—h%¼Vª`†Ð7X‰SqéAØÈøGx‰ˆ…1ß2žhm„ ð¤:ԅͰ F‚Ó´ £+PƒO íØÿ…Gð ñ)»~â/ÞHº˜ÉÌ h…¦“ Œ?ª£Sè÷`zLà@øž‡­ F8Dïãè—`˜3èÊÿO” CA ò@ Ø?¢5H Så@ @ à€1t‚0XpTà,ì\àñéÏØYäK¶b;ØBGÑ•ðàb°\¦ ´š¾JKá´ÍD0¥-ùûùnÂT‘ûï<玭5·ŸïEͧÚxZÛ·œ=Ü ¶?q̸™\šCñÚùW9ÝœuÜ8C܇/ç+¯Õ|.÷—˯âßL£VÓ‹5¼ þuý=%&[xÝþ¾ë!ÏN…ÆH\âP÷™^7=Ê?jªîW½,?¯ž¬6ÑTä·ø·j*âU]ªZiùóêñ5‹{nž?x”xu{Môx’T´²áÆWUóv•w6)õ; Nd/Öø×m¾k|V³ºj·a\ÙPÊÔàˆ¿""} E¤(n~jròíä59¢ؒóE *ëN®ø!?Cv)êêgåÿè¿Óšd÷âoþÊEzºU?·Ò¼vBc®‘Óð¾®Á0®øSzjøíÀ?£–fu•Ìךê¾SÇÏ-ߣjÍ;Ú›á¢Â†’šý•Hç¯Ù¯ê*†%ÿhbôRÍßj¨t*8’×X:Kë¨3×””M)ó)ëT{—œ+ TN(Ü¥ÍúªÔO;Fÿ¦2}Cì-E±˳)ž)Ìà 层Èö¨2»PÓ ¦ ±asÊÃ>…VÈ6‡É\ÃþȨ±A“½î¸¦9g¹ÚøÄKnþÉw–4IzÊ×\ÊøFz½ò­‹ ó Ê œä<[þPªðíòˆq¼êôÓwŠ•¢=x=Ž"×z/âœA8N½†çéfj Ï‘JÁ”¨Ü‡¿â8ŸEéx:c‰þGD893™Ð GỢyD€³ðê6›©“d¾„-q>éÄ“± *FX‰l‘,…¯Ð÷¸ Ðw‘ >ˆŽÂc˜‹ylw+l‹â RÆ~F‘‰DÄ<Íe ‰œïâbbAhŒM¡=tGÇ!B:¸NE8åÒ Q Ä_“`&ƒYÃô‘fs~Ø…>¢_ñk\†ëˆ7£·ð…t PÓС;L€‘ðý„=·+èBhÞÁ a–°‘ÞË6_>˜kÁ°áylS.@ ø–þüJùËB$ìf±ïá€ÅPHO "©~ú-žôvz˜L3´‚þÞÂãñ3(A²©tìçÜå,áÍáµò>s—óüx¼U+~÷gŽ`ƒÀÀ æ6ð6òø4è C„Åünïïk~,ÿ‹`6í]¡mOMèf˜Ì¤‹ëìžâeÐÅåX@¯ÿÒ i—â]Bi\²_©càæ¾ Û³·UüÕîÕx­ÚPQ¥iXZÝÞdÙ}²Ýĸ³Ò¦êRôÏu>…#ôlrßïqÄë¸{†û³ˆíÊwÕC•ÚºÚF]=]å¦tNI0ÍËP k_ë+ŸÂô«t™«CÚ¦D‹ÒEš¤ú—Ô«'•Þ*êŽTʪs+;4tg·t4/N›kH)Ô]¨Œ­ìWÎKn yë½ØçIJ¯6£f[æ†J_4äÔf•v&½õ}å3>ðqÄëôk¥ŒêxÑÄüû¥öy/R>D‰Λ^õ_S.ÛŠmU²ŠEº}Ú‹•?tšyÊ‹¹orZò÷”fk]ô3ôýš¤²<µAc¢~¡NÔ¾-ía;u•šÑyèÞª?ä]J=½;¼VîqIáªø¶OvVñ(Ò6¼Oæ¨ ¡TX¯|ªü’û)΃®ý®g½¦H²ýªüƒü˦J®ùgÇ…w„céóŽŸ" S6°Ô­žÌ%í<ìÝEO˜¢Ìu¶INsd˜Q1)è ü)¡¼*Ü&¼'ì.ΣßÅuâ¹¢gøNÄùx&r ÝOëhg4žÙb÷Â>Ìá.6ƒ€|AÓÐrP‡æ’bÉF/Pš eX‚PV££€‡:ÁwÐÔ‘{øÛv‰ŸØ—I ¢PÒŒ¿€ûÀ•üä vŠd¬‰Wˆó슙µx9Koyø>KŸ à´….Ƚa“ÓúÉ’jço¯q|'ê#ŒÝC»÷x1¸EõÂu8oŵl3nC·€ZM­~ÍA>ì‡ø+¦ »VÜ‹²iG0 =…KÑèOô3l/áz4‘mºÝ0ŒEæø*Z†×Šö1sðs0›¢L©YÂãT!UÎÇü|‰pš LØ+<&¤sèú–1 éIôMª”úHͧD»àqxƒåJºJh+påÞ¶må Úæq¬x¥¼Aî^ï^Šm-'É3p&r3Øß,øˆÊM€P¾‚Bž÷ÿ?¡€š Ëñ ÆQ4ý×hrۈüHù~ÙŽEÐÚáy¨<ùXNfΊ„-QÇÏÈ,Oýj*ùàû“ìaÚM]€ñKãJc`Ó³Ö›M—êÃêZ¯wZ¶¶Ô|£{®Ü¥ùR±¶Ì3ú¡ûq×½^r_Z2ÛÕÖ·/ãƒ.ÞðCå‘Ê—Z3åú|Iª(ú¿˜Àt»üê²úš+L˯V”vÆ+ ¢Ç(ã>e~Òp SµJõZݜʊڂ*Z7JuP{]ÿ_“,*63à ÇÚ)åçŠ^•Teǽ£}ïyHâýî}-wÚë[à±LtA¬uæmqª#žìM µ;çšàPÁÔŠ˜©x>;¿ÿ$±¹…âÐh(…+Ñ0•)H¦_€ °‡ÏoÈ;»ïì>’cøÈF锡kø#¹g7ä t}ëzÙé.y¾AÉè-óˆÝÇx‡á}0õánÜŒÍ1Ó,‰.Àsðh|YƒíX‰Áí  ®Â¿[´œDGÑ~ú"ªÅÏEÑvç‰39Í>¿Žm½åâ_ˆ¶BËà 4#¿1 ðJœŽºPªÇD»ìˆšEÓìg‰½E?ˆÚÖ‹¾!5¸=#çDÇÈ!²”LANp{¶a°v9›ì³¬‰NÅP c†ÍQ3ìÕ`ÎFÈ m R6ßGŸ}ï><¯„FÄài ­%îÈõSf|F0ÒSAT® Ÿç h¢þ)”‘ Õ4GØ,üƒ¿Q`/¤„‡øù‚k‚ÔŠêƒÐ 8Âͽd‹9›m‘¥Í"[9÷8¯·ž{šûŒ›Æ­åáñF¸¼5üAŽp@8ž¶£{¨ç¼û|#åHÓô_h„L >d?Ãé+go÷ýcãJr‡sÍâb\?C4¥äc[ROåÛ¢ƒù3Ts^XäoeŸ2ÕŸ ²šeõMEmó[šòë7ÖµtÜh[ûƒá±aWݘŠôä½›cݽNú\—„x¥ÞM£TqVÿ?u^Ö§« ‡ÜÛQƒþâ@ë°¾¸ ¥ú¢ùÊÌâ®´í‰{’ê 5…O*÷Vçê«´²òé†wú ºl­¢¢³áFíêŠG†…ÕÆ5ÕáuPo¯Ô-©Wµìl7Õï¯_Ú”Ñ>£§¬ëEe‰4ò©·vó*iXroúƒäàœ#iŸKœµDÿ§v­z¡ŽWSã]qG×­-Ð|R=-¹R:ºÄ!cÖ‰ìåê‹åG *¾Ñ\WfÍ-õUMR§>¡ú¯ì—²˜bË‚9î9_§¨¾6ž/°ˆçÅÏOxs1rQøËˆcá7¿DLˆæÊù²G¡oB…zÊÃ>Kß…üj.†’µ„_ióßîyEñMÖÆìJ*Oª³ˆú>rmÄpÄØÈ"ù™°©²œÐaB¹Dö$ô|ÐÃàÆ°š0 [>F~%ä™o‘÷qÿ{!Kýîyþ,™±ÙË+Å熯…tLÐTiªï7.ÔqfÙ¬±Nß`º)Áúò†+6.ì|ww‘:>vüÛñ±Ã‘„4 ˆJÐR†ÃÞôÛÄtA XŒîÀ™ÄŒôà縉Yn—ƒgbo<qðTÑ>XŠ'‘Ì%?`~i *èCÔH¡‘µy‘ýh:ØIpŽmdèH…9h½€÷Q"¾NZðntžºM…Á8²g 8¼D¨…2÷q(þžÂ6ä‚<Á0,C‰È÷x)¶Ásq(ÙDäd³ÝG+q¶ÝûmNCŒ’)yˆÛ°5‹n3+È*a/Z‡ð?H#K°4‚KtÝÁ:Úqèý€7´¦ýÀZ4jÁ aÝc@=1³Kù3°ÜfKÌDŒãaÑ0ùUtX,cZ‹vÀût·˜k*ØÃÓq5F¸ú‘Î£Ž ¿*„©Ôn!‡Ûc“n{ŠßLÙ —óÏðÇñù{x¯¸ßð–qï±Ü¸›3“{‡7ÌýÌ»Ë`©Ñ]ÀL¡œ…g¨.Àc}tÉà(ñ<‘…£ÚÑÊ¡Äõ±ç*Ïûn{=‚Ý—ˆÆÙyû= Í ËR ¤/t'l ×'˜DO»ÐzŸÉEZþm×¶xµlo¬y¬ÌO?– Ë–”MQV«ïiµÚéúŸêòš6¶Z´f¶†wwî~Ùyµ¥¬EßéÚ\41lŒdžWŸÄYòA2¨¸•5©¤±l²á°¡]_X‘^ÿ“þEÖz…Ô§P²ÔK+ 6O.*y¯rÐþbh­í¯wnHjjoìxÖ|»rŸöûòYUÓjµ5£ê-•TçÎ6×öÎŽ­­òfï–3Æ{u¦ ží {R{Îtx7,¬z\WÞRÚ>¡+¯«°Ë¶ga÷¶ÖƺE5㇌vMZôíSöì9¾yÇ©¶¿}ôþ…?æ¥Ü«vÎß‘Ÿð!–‰kJ¹•z9%4mw’0­3绬³i3ìszŠ&«&•%jfhÖö¨O–>*þº(§xEÉ­‚Í™m± â&š%tÆI IŒÐEùG­ôUôÉ7JoŽ !·d/§…ÿ# ‘Uœ GŠÄð¹²ÛÁ]AÚ€U~»=µnó=;¼d¾S®¥„ÉCÆäøDx-¶/â´õáÖmŠâìÛÄløs­Óº«'¼xºÖQj'ttZ$¶c"ðaf9-œö<·«#JªG›X %–D ÷ˆž¡Ð#´w2¹h )%S`ÜÂZÙM(ƒ'¨ÐcÐCìKQzŒÉL¨EZ8‡qºétœ…a[üŽÝ±‚4àÉ8U ¬Å%110 ïaïsÅò)st£H¶•`/4€MȈÎàs8u²fõ³•Q—‹ÝXçfq¬ý§ç.¯Å¿ˆî0ÉpòdLǦu ;K¡TäÜY; Þƒ!ðŒ‚Í 0lÆÖC=Ì€Vè,zw²kíÐB ¬ß.b=ùô‰¢Qö‹.‘­¤Plm—ÌRçQMùóuµ t‡ÒD/Òÿ•jî~–(˜÷à ÷Ÿ¥ò®Ü¯¯,»¢±4pË~ÏŠËU”/¯(Óò%óÊŠª5;+:š{ü»oµõµýݹ¸ó\ÛÎŽ[A­;µ†ØlÉw Éy©Oˆ!*.épÊ`žWyUݶ¦/mŸÛÃëÿ.ÐÊäÞ >}]<Íýê’®ª¦–§«>ç^ÉrËW2ªŒ ‘ñRih«½a hhžÔàÓbÙùºcfkƒñ»†–FØ®ïV÷îhоªÛª{\wy×H×öŽ+-;[ëØÝqºólgCÇäžÞž5½îÝÅÓ;Ê»Žt“žÝ›Îí?úr·)¹aŸöZÑPñ¥¢È=5(Ä7øÅ©´ÅÅÆ¼Žä‰±šØó±Óbbm6$¦ä5?/Û£9ªyTÖ£6Q/Pí(Z¥ÚRf©v,ÉÕåË¿œSq)­1iyÔ•¨7r®âjøtynÐïAå¡ 2C¸FñH±WñT‘i>Añ<'½ÚîýVzUr2`¯t­Ofàã ¡~³¥]’»BÀmçÜâÄÛܱ½½i–u¦•÷úÕü™nsŸïà‘è3lï*ÎÃs˜µ¤ïÂAøš4%øgñzÖ {è0Ž!ãÄGÈr‰Ì ³±¿€?âWh73Cœ3ÐJ°ŒCm8 z±©}gᙤ­Àj<…ÄÀAÄ£º`"ú;¡_p!®Äÿ` Ü€ÿÂùàÌa-j 2A è'’!ú w° Åæd/|M߃éÅ× ˜>ÇúÔïhZgX{XÝ[—²V¹~ÞÆvîAõ›UÌvxXã?Ém0l$óÄQ7¾ ‚°`F3Õâf†Ý)&‰¸£>|ÙÐÁcòmÀ£Q(°¥(€ÛÑlxXÔ'~“ÐRlAZÅ‹ÂàX„‡•(› !—þSò6û©Î¥å5“ŒC,¹CT†ì³Õ¾n®Áiacãæäl“/ÓÔÔÌ*ê;8Ô=ø¯(÷ôîœ?²Ï Sjº-NCÝÕºzyó°–d ¨ûY'1šºFì—¶L1Lh5l™ÓÛ6¼ëL—{Ëspc½åW›¸Ùj®h ³Èl£íóíc[žY [ºíGÓ§æä=Ïv¾ÚײӦ³V+õ¯è#çäibUQu‘¨ÊÇ fE4oÝ’˜‘æ—ûwÅDÕ:ùßâxÉ>9% ¬ÄÄ~•G]r¡â‘ô´d¸bŒ2QѣȖ÷È(OWÝRì‘F•ióScÜcÂ#ó¢—¤üžœ™ðSŠg’ Ù’Ü/ùEÒÁÄI/âUÛ^†%ïŒÚ­Î^"MÎZ™•›Ùþ&tqà²-6O»ç™¡üpÙÆ³¼.èÊþúZ§™NÁN훾¬¹¶þÆWà,Èõ²rÏÈ<ê/rJï£gàu¸–žÍêéì&vý»Ççøñ\#¸Or`Ó‰ wÓ-ÜF žÓaà4QhKh d0_A‹sOY1øÜ¥Vn²k(«gç1+è©`;;ƒÎ§€9L1õœ8M[ØXŽdƒ€̧oÓ/èÓôMé‹t8»ž» ö1g€€yÅÔ0ù=ÜQæ¬Û\þE®Wî*b'p4·Š»Ã&~ôf"ˆ\žƒÜ\æÀKawt6i…zqX ¶ëÆËq„8@ôàc±.¼…ú™š@fâ]˜ÍÄq%Ñ@^!z*Cÿ#$TÍ6Ç)§rÜþQþHwµ;áFpƒ¹ l?‰MÆä;ï*Œâr‡‚‰·¼ž ®E^ [Ðûp9ZCÍãê¹\Њ}†"á(ø:ª${“ ‰Å¤‚yΩ™'Ì9ö ÜM¾7|·{}÷}¹õGð‚À0÷žyÉÅ¿Š5I9¤#XáoM(N¸¹Ðµ}ãÕÕO6ŒÇ,®)ügøiß²Ê+ök›±=e™FqòAò¥Ë2TIRk§Å¯M[.’ÔE5×¶îoÜÚ»-¦ãhû'ÓáêE™®»±@¢ß×þ¸9P}¿úµ&Õ¼³uV[\c—tCæðøŠÄ÷É¿§•ùiVj6V=”nR>×L5õiîeˆǧx_ô¼ºuP¸ |Wôõ\¾òˆa’1GáQ06¹wDHÀ3Ÿ]þ;ãºÄ&s…Ýnïß”Ùȳl²F·l¶.4^TÏ®Üuä¶¥6F÷É4Øz«5e|\wr·Y \UP{BÈl2žlxÔÔ¯åÛ!k®í§¦^–ÃæüÆF­·.S×Ú8ÊzÙ¸PÑ ôFГĝ+v­ÍÌ+Lë)•Q9:n@ôäõ’ÞzsM¹Y!‘•¶H$¢U’ Š:Exõ9_V ¥èU5¼j‘ì»|“òpuI5¥dªÝ*מËÇkbd)»RÚ3‚Òä©§ÓL)ñ1½ãÎÆu'ßL$¿Ž¿³+öNìÁÔ9ÙÇÓ.Åߎ>ÞÏOäÓÉŸâ¾pÛÊ”·EüÄáá´—ë²^µvÙ¦n'Âx‡œ"œVC×]œÐ5‚“ÞO˜5ì0ö ûD5ñ¥Ì]¦„Í`¿°Ùì`¾Ù­EPïš¼){ɵ/ûL` ̆£è"z»ƒ’l=P3Åà8EÓ•àXÅ.`ï¸FÐAeúðÿc÷2Rš6òoò4ø“]Îø08=¸No%dô^æ?y›™ ŽšÈ â,t1ý€š@í&'_¦[ÀŒb¼˜Çà óŠKrÁŸïºÀk½g¹`·k–íº–›Æî;ˆèfä+4Á%Ž—å<²@*„‡>@|áuèi( ÁÒàÍÈ=8~‡bØMlÑ D‡a>Øiü"H&nâ01èKȃDþœ Éëä6ò!Aï`¶p:×#ž«=>x-ðläCÜ ¶]CG@O]<íX+E“:ìÒVÁ}¡x$‘0ãÞ@, ˆZI,Gß#nøò)± T²¥t4XàöÕ[æÛß[îþûp÷p÷rßu«CïÄåÇ® 4ºJ@‡«4¶º4´¤)*Zp½è38uM±«ðZ²[°»'Õ:ýE5rY©AŠE²ÄŠa"Vz«6\ö¨ _ô¼öŽjÄ'ƒKÉÌz—:0Ž‹:˜±Pikúdm÷Z×´D·ûvL0, Ì¥Š/Wuë¶6Ùc:¶dè­ª]ªcÚ•¦Ò†³º-Ê×eG²×eÉY_0ZvKó¬N¦ ÔÞR{©îè¾4l|Z=4é‰çtïÁ!æpèM™´<³á?ó5U8<¥'krÚÄ„ú¬yåÚº}V¬õ{K›½Û¾»´ewÔvÌoÚ¥¥9n·íÚmßU·¥ÎËx¯1Þ^½»ã¿W7ž5¿Í·g úHû¨!uµ¶Ágá[NX>[~kðÓï®WéVQÃs½Áh:SÿBº!½2k„øŒØVþ=w|FtPúàâÁ¥LÞñÔ1ñ#óW 7uÖhV}®œ©˜¨¸§hTL­‰«UÔd+dr™·l¬RºF:MžV!3K5ÕÃkæTuI²DãJLÅ!…daN~ƒð·‚À"ßÜ?3г¾fÜÍèÈ|\Ÿ_‘ükÒä™i¾é; :‹£roÆ|ßéñ f𑲮ªÏ65dcϦP—]¼eÎ××í\vã\è úntq‚Ϲ\&DZ뙽g޹Ùl°Ïlï)L6³„ì0ÕK:Ž=ãÊsXMN÷aKÙbv:Ëç±ùÌ0‰Ôüý3ˆ=‘WékeʡÆÍ` 3†ö¤¼@4øÂÉ`…R»¨e` ³Œã3 …ä+굟-f®t ‰4ŸžNŸ¤LT7uö¦ÿdÌ Îå2¡ èÀ,*ìg»˜ ìiFÈMwWq»?_Kø=HéB¹¬ÜÔʃø¼^p)t íp2\†œD8I‚óÊNô5lDÇ`žX71OB!t6^Š¿À%ør4±OÄ=±ß‰eøüqËa@;^‰ëpˆ@ƒÜNþ%WÊÕÌù°˜Ÿ™JZïƒåèâ.9oBÄhox:›ya;ñv¢ž˜LÞ%sðFT@AÌKúO*‰ÛîzÓëXhF gŽ•D†D%\©õô ¾û˜âûdœÜ–â¿ÆÇ‡;JbðJ×ðÂHenÎ4(hRÚUÙC¬ùCó=mÿ²‘!ãˆ3.;].ú,Í>œ%‰" °-.çHSÚ!yªŒ¯ÚPú¿´çéaxö•È+ ã ’ÅÚÙÍŒeƒu“ýˆýŽÙIW>0w“P!=b˜Ö:¼³¾3³ùUOíQ3´†VMÖ.Ñ<­]Tã/ÿV>[B©Êô?ëV(ÈóÕïtAêÕ~¥X g Xà³eiФ0sØÜ¨¿ÓoWž6 ª¿Qy%£KEù£r&‰¢5£ ¤á[}€zY5¿:[ ׄ)ß*“ªï(MòÁ²ÏÒìÊeâå¡åÿ+ß åûËb+NKHéNÙmY¶B¤Þl‰®>TØ$\_ø¶ì}IxÞgáõܬœðì°ÂÅWsÿÍL7$ÒÛ‹îK_Éì¥KRw§ONoÈóª‰0‡ÔM !>:í$˜qvy´®pí@^ï\ËëâíâípùM¥0Àö%ÿŽà|`ÙÖé5{˜®eèM”?½–nvxï{ZPÁÂì2ºŒÀ8\õŒ¨§/Ñ£7ûN0‡µ°=l=?Ý=€óc+ ƃþLjJC„‚»ŒÜJVá˜f€ªŠ~Çd1§¨Dê¸áhBIv¹J@ÑId= | ç‚¡ŒÍd/‹ ©§ô5z=˜ËÜ{Á3WÜÊYŒV¬ I£x5¼ÑÐQh  ê™éƒ}ƒ¢xK!)4”÷𝆠ð"øœ„äÀóxÏ|'ö?ÌèãhV~¸ÑAW0~/#ªˆeØ;ô"^‰ùáÕx=Ñ—²ã7𾔜éÅ ô„ó+8 wš íx_ô-ö„ð'N¡w «höÝ€¥`µh&ÞAŒ&(4’ æ/âf¸þðq 4…/sM÷)¸U¸¯dR™wÁ˜‚ßÊŠü³èéÖô4EIˆpjŒÀ÷·ãò€ü–ën–ÖøEoñlùEòÀx¯ëä¾E{Æš´9nŸÑ:’ðq!XäuÜã¼×­]Y}dª*T%9&âŠÂ³3óòþ˸‘èÎÿ÷”¸ª#mºgäš^´l²úiøòeZì®øj8ÚÆë¸iõ2d×WjÅ…Ò[Št§ Ý¡-Q¿¬‰×ô2ËDýEOa‚è¼v›i¼î”<7gR?ðYxstWÐ?þ)þ÷ý$Áý3O)ïªûå Öe„—~ƒ¹q‘õ–-Î6¨YgÞòO›[çÌ®¸®åmÝ–¾&ÚðÁT×àÙHš/˜óìmDÃàšŠU§k©Ïhm~­þ¾Öd\e65Ý5÷i(2kW©{©Íõqæ¥æß ‘ªÙÞ²©å"E¥vþ€6Iú¨àYé–*'Ť ¿‚ƒyCE53 Ïn¼uUçjü”}ªV½SäV=VÜWäÊK!IMùØ—|[^ð äIá°ÜÏù¿®°ÉñªÚZ­íòž9u±©•™ŸD1U-òãeîE}KöWé%å‹ßçß/.™9-E˜ûX<²Ê³ô¿ßx4Ý·ô˜c—¼4wèŸeîÂůs::®‚[lëËáBÈ‚œ`!òÑy<—ògs¹l_þ v„£1½Fæ óžÞM&9ÒDÿ ‚o!ž£8ùÿ» ¸‚ ‹Ÿ©p°ƒ½Ì õÌåâ]+ÝÞ¸ŽuŸÉ·3å`.€ÞÌ+°ˆÉ¯ÁGZ .ÑQÌHŠu`%˜ÍÌc1ö)ó xMăÒF{«©“`";…>Möç@ û‚ñg5Ì]@S¨½ôŸäßT•I.Gý‘#ÈYøWü ž6ÃО7²þ‡?ÃÏ¡'Ðth!|5¢qX_t2ò ž ¯sîã´Ž7ÖÀÿÀK ½Ë§`d(r½yâkñ'ønüRïpÓ‡›N’E´iÃbñyÄWìK|!;¨{à"*x+ï6ŽßŸóá¶¹ErƒÉ™Ä]b;QŠ"û=DSñ$â~û„Yˆ^d—Ãj>æ½+Ôœp"oŸˆVͪ#ìx"y{S(%^õ¿7õT¹ªÀ+:5¢!Ä% ·ßu¡û{®} Ÿ‰+’ŒÍªÞâéëý®¤Uó‡}ÒŽÞ]ZÓŒ‚¹!cC³âšR§L ŽâÒŠòªŠo+ëŽk…’¿sŽå¨ ¹lê¿)·S3ÓC“nDoMIS<4÷2u›döÐŽnÛ ÃH՟ʾ5VÍZ«¥í‘9¾®µzyÁ«è‹áùéÏEÿ¨•FÊðÍØË¤}¥ÛhíeoÓ|(ÎÎÜR4^¹Öª·¡¤2Þž³/»5¼oÀÍ—°§YwªÏè•-LÒÄ~ >µyé–‹Qm¥¿i¨æ÷ÖWæOúa¦ƒM½;¾w>èˆiiéÕÊ·÷ØV:hôn޶iØE¶45r†¾ÆK{pËT;m_cŸ`µ4moZßüÍoz^ßÕ}Ö6é¶éSërU&ÙoòÀêŒÚåúfÝFCƒª]%ßYÅSO‘:3C2²+Òµ7¼1Ì×\R>¬~'ï–÷‘ÇËÂY}e€Ô£ršø…øfÙ»QÎ’œ·E×ó½SF§$ç.ï©<./©ý¡×B+-é²d"}íúš`Éó\iéSã,ë`ÓŒ²çiÅE”#Ÿ¯IÀÓ'äåNHÞü:K«ÏýIÖÚü¿ŽP;&««Ç»üÄ tfóP2YïxÕ ¿…ïÁ.Ho6ìB*ÀFÆbF;rãsZňÁ3ê&åNÑs™ß˜›T=«e£ØL/@ØN£ÞÐ ³‘‰`Ó¸zv)«c»Xov.=™¹AÇÒÑè}lk`+8C~¤Ö3©ÀŸZ¦1ØÌv"çÉîl+}’ÑÐͽW)ZÉ2à/p•éSÁPð‰Î£¤&¢ñ¼ýðè0í¼‘ñ*yù¼?h*²·†÷¾ Ÿ‡çB,„S0!6ÍFvÀ›yÏ¡føËOÐU^|ÃqÛ‡¼‰< t€÷~‡¡÷ÑÃÄxÚ…pÇãÐ( Æ;‰ßèTàJÈ)„Ÿ…=ÂÂO²’¶wÌQö‘@ìêÉ¿Ì9q?»máî’QøbbÙDJˆÈnü<¹ìCÎ!ç c ™ÔYò69ÐumhGÆìßòàŠp¹HwS“Vˆ§®Œ<œ¸²,¾òyÙKi•taîøaAUzj'‘OôÁ¶c^ü…[4®R/¹Ú­C÷ŸŠÙ‘ý¨P.}Ðpª3µ«Êø£h@Üæ¸Òl[yƒôP…SéJù³ÁÛ4ÒØQç^CˆÖTÌ«L,ú%ásÄ·ø'«D/ËÞCâþµú–7-¾í‡:%áMÓ4ËkÚiWM±ªK;Ó7Es˜­ž[’[«™o6mhökša`ÕEšÌšk"{ÖÍ„Éé}+´6rGJçs¡¬»¼Ÿì`‘=üŠïð€®`§h&;»ö{“)»ÖZÖy›Œû“OÿÉoUü«îV.—.¯ýÒXÝò¾%¢åbûÉΗÛ㻾¶ý޾ܾ¯é…ÕÍú{ën<úoWYó\{¿–«Ž´9¥ùW[[Ëû{‚uV“³uhkžíºeî¡¶·¶¿r¶ü×jOm¶©§aVÝìú:±VN­]Y3¡âBÖéÔ;Ùiâ÷ú¦¦Æë† õùFéqÅúª ùáÊ)ÒSb¡¨Dì\¹ZR&>T±¾lf/óNÁÜüâä½Ùiåí⛢òŠŸ++Ÿ–þžgÈÿ©tªø~ÅæÒcyié!ùŒb~±MP>%-·pwÅy‡•yC²§¥}Š×D>Œ©Oÿ#{Qþ©¤jƒê•26s˜Oz ¹…®r$ GQù @R¯ø1ä9ô’¸$b!Ôhî »‹ý…idòÀe°–šÜèÅ”„£˜ ¤]ÁŽq=ÇšXÀªà å µle:Á"–å±Ìrê#f %£hŽî½ÁG«»Fs‡™?ÁoôÖÆÆ15à?RN~¡û2‰lXÂÊ™àXÀê¸kÌyp…¡‘£Á£NËi’îÆTøÄ鄯Á—yµÖ1…ÁYÊ[ e!åèFô%ï0dFuÐm(^Æ#ë‘?{ðxÄ.‡ûÃÃr …OÀÐ^h-$ƒpx%|Ñù¥Ë ¹ŽÆb¹˜ŒÀ×á?·©<¦Iñ— °øBM†“AäRê"u—^ê:Î#–;ÀÌr,Ö'Bñô0¾~Ìüp¿ï±H a…Œ?ƒ3cøˆ§`[ZÚjÑ8í.½¦»:T–U-RÓ5~¥Âج¸=ùâ’O• Í©ª÷q+6?DßpZ:ßÎu»qz°ßužo–ïeî3ýÙ#hëÚH]ÜŸ‰ŸòÎWöí(Üž54žˆJH–:Õd©lÊ'ªýæUíƒ:l¿¯ë7.6Ä©¼¤7r#Âó|zù¿Kë§¼×ð¹þ½rb奠éï–_[ÂÚ–ïüÔqÃxD¢Ý§/P“EcBnI ü‹O‡{]D™|²­£iNSlÓ7ãíyÅ—ü×ÛŠ‚üÿ)œ_=ÐÞºsߎ¶_s½fSÕÀB.*Ä7lëåpxÛÍÔ®ÚªöA­+Mžåïšø"*‘æÅÛ:8N”¦LñÎB«=—ÛZÏZ^Ù¾v:f·˜­Ïš¦7Ï6oh¸aÞß´»íÓê„ÏžÖçÖx»·}†m£í±}{[PûÀÖöS¶ÅöÏ-ƒZ‚Z.iãëú膨N('ª¶×M5‰Ææ]úˆ¢ºKvªpqš9éYî[ÙÍþº{†LÝkýÀª1²‡Un5¾5­ YFù¸r‘è‘d¹ø€ÈYæ[ù¢hxÎäܱW³ÞÒ•SÅÕ%íEQ…‹ »òÛó¤E>RQU±Ô³Ìš·¸ Xx¼hˆ,´.¾¦§8ªÈ&ívd )i–æÁÂÉÂMY­YPÎùÌû ßúc‘Ü)y¾aÿ²°†ê‚+±ÏèX¬’‹¾sN‚»ð h;¼lã6çïp •¶‚Ù¬°¥ œØÀäq{™uÌ2ö1 &:¦3nÐè³Ø´“—Á«çEñòá+0 Mt …ÇÁ!°^€Dº¡¹.“`3!!=ƒf!¶×ÅÄË„ï;áÉ‘Õè%4Ñá½eè|8 v‚Û¡1°ú½æ¹:ùó<?¸ m@ÝgL3•Ì0ªœ°à—ÐI¸[F'àcˆ§Ä:â*N ´‰y`ËðZÆÎñx©×T$%ë}Ö„¹Ìörs7{úûŒ*ɯ—_¯[Õ°A×Xû¾Æ»ö¦ö\£gcÄ”t4Ž{6ì[PGêø’Õq¿á ×%Ãà )ÈÏóööÛèþ˜yè& œé×ßÍÅ­¯ï¿[´^»<Œ¡‹þŠOØvts½Ï¥€õÛÖä4TøŠWV),šŸšË­‡ÌbÓB“—å¹¹Bå%V•LS¹¦ð[B®Çé†?©«*HúêÏ6iˆÆÐÎãÍxÝ)½ÖrΤ— ŽÎ 9–fÎZ—ôpë•ͲrE»êª‰iœo®£d±ù£~Êþ³z^ÓÝöß·»u=l>SK”ÌóL°Š'ók ÿXü“¹w[µî‚0*÷hÙò*¸ö™j²¦—ê®"^úI6»j‚úµ:^~¼<µðEÁâ’íeÂòâ14žŽÈƲÂ|8ßÙ‡B9|z+¡cðä$òYŽ®AP+ò)E£ ì²9мB£Ñ¨½…ЈÒÑóÚ‘<ä|®‡Û]FÁuP¼Ä±wd¼ ÈtÍ‘ŸeH_ô­c'…¸üŠš°³˜Œ¸K2D?bQï s~‘0ˆ/„/—,˜ìS|$V‘^œ u÷nyОêTyßøÕ¾¢a›ò»Ô­|\I¾T®¹¢WT­+ÔF•¸mÀv¬ë^Ý'¾Ck\¼áO`²û„­5þaÞ íÔÒUqÕßìóÙc´ëߌœûîºÂoN¸Òoÿµï]ü0”»"w|ÉUÑcåÂú…M}l®¶16£-B}[˜wxs/þZÁÞ`sêCéÃúéµ—•Çt¯ ãê«ßeübl3äi›ÕÓš::OÕ*Sÿÿÿ —…[Ôi†uíÎUY]Åî;az~9CJw3À0tÍÀtw“4‚­èŠ êÚÝ Šk|æÇ?ð^×yÏõœû~ÄÕ?¸‰ÅüøÔ~)PÂ!òç2»n¸·ÄF–Ъ(Õk$¡úŽ# 9õiú½BmùµÜð¬Ä¸Ž„ÍI[’sÓæ”Ž0-tä(C*Gf}@¦ƒ~ÁŠ„ª¤‰CbÄfÝ5~3³Y.Ù»k¤NgÍ7ëLÇbw»Y¡Z)¿«Ðéój¦Öªj¥.w•‡V;¦>»é{C`ãýÆqõ›îÖýpo°Í³%yÞ7ߘ~دy@ÇEßkÌ1;,¹¯ø[¼H+?#x'| rʽú!º)Ƶæ }‡|”«^g¼hÚktʧ‰þà?æ®,ùŠæÇòÒÙŠÊ«Õ[$ÿ‰Uüßœ&U»d‡ n*.ðòX£*ÂXJ•ļÄvØ<^ªcî-¾ž‡Éÿ“ש‚SX –*@ý£Ï-Ï +«ìäö²ýJÊÏJÏkâ"!¹è|ÐAòK šÈÍÑJXNØIM(ÃWb‰wˆ5Äð0¨ '7A“!r©¡´QVP³ánô!ù ¤C°Ô1h|Ž@Þ­Àj6*Bj)Gàep(È×S®Ã!x¼®‡ ÁÐ0Ð Î@žÁÉHÜZáAÈ˜Š¤ >”á½ðSME®Ãkà0ø ôô¢@ cÛq$"‚«ÇdaB°›ñë³ð· # E Î@òóa<äJKÔËQ r¿1õÜî"ny ?·‘Vžô+;гÆèð¦Ö¬õÓ¦U¤m)Å•ßåˆD=¼ueÛh7¡É+×ý^·{Ógòó¨}Ék’˜I1K“'%F†³ãŽgßϽJ«H ¤øÆî ë ZCYDyt5ât5¦›B—BŸ)ý"/ÅÜÊç”Ö0fë8åJ¯©Ý} qXËÿv)Ü%lvô$$ õ Ú“ò3ÖòÅëøh 6üÖ5N³Ü·ÖØÅæÊ£ ‰ãô¾ûómIœ¨Òe_h5á(â#²%¥þe·òª+éÂèu÷´ë«ç*# T•5Zo½ ßš²+¢8~eüñø·ÉžÄ͉*ú3éOë)}'daIl0\¥P6¾ Þú*EËÞ£å[Í8û3»Â:ÈgMãã8ucõC®Ce›Ö7z:¶Ô|´EÙ¼Ö÷5¸:½'ÎËö¸(–eÆÆ+Ö³µ+ í–ñîÉÞ)ÎÑ–c¸q¡EQõRØË9/x )6N×â5^e¹r†Õ­56^Ñþ% ?)kÕ^Užb£d=o"÷OÞežWP"úƒÝP…T­9T¡ö ëXå žÿ“ý¤ò;»Uôšò_‰´Òåú¬¹N'9SžŽ$¶¤e2¤ë‹(¹p¾Ÿ¤Óð·áœf7†¾¾H•4-±—Ö/sgY£2Á¹Ù3ÎÚdÈâ.O+$ƒó é %Ç’“R‰m¤ç¤\hL€¢Á·°¼0a`'xZ†6ÃK:tåå¼ü ¹à\xâ¡R]ÔH9’‰þƒLD˜ÐsÀ Æ¿ApÊGâÐ@ÄŽ¼@Ó;ð&X wQ<ÈxJ}ðê'ª ƒ±ˆMGöQÜp&¸¹…h‘Rø(ø4C€G$ÐK‡«Æa?ࢱl¹t€=à.V†éʱÃH4r"¡?á>OXD¬"<&ý"ž!o ¿ Ÿ„RÉm`;ÈŽYÀßÐnòÂ:â$hL€­ÈÐÀA^ ìÁ½$ˆ‰·ˆD¢—ØEX_ŒOÃÄïˆÂê0%˜P<÷æƈ«Ã§¶ã{1w°ûæcj°÷ñoð7ˆ (DÏ¢S->žV˜?ˆÝ!›¤kÐŽPÎm¨žW¾¡€Q-zn,qM÷>õVºniÏUò öä¬JÛ”¹1aø Jà€õø‡„·d ú*í׫è•ä—´d\J^œ21µ6míGvgVí}椌̔µ‰©:ª,$'fHêæìCéCãæDÒbyéÞœååÇ„LÕÿT?Äw›¤mºx׆¦à]¿ÚÕe)G Úy ú'Ÿ>OØYë}]Ë´7¨vˆ’å,³Ÿ­ÕÐ šJçfuIö·Ôì)¬ù,^\š™Ýž|3i\Ú®Ô:úŸ<œÌS‘Ààò»d̳ÚòÝz…Mp‚ß.\+y‰Ž&ÅѲµq&Êä𿊒ÜI=Ù¿+Ë”7­‡œáæ'wõûð‡@'1€ÂüscxAÚÚX]‡~º±Àk˜§ë–¿ÿ€Õ†R¿’¤²!U¿í´º<×ó%Ýi¥K2\6^{Ñ,°Ž°S­Ù–÷ÆPýUýkë½úVÕnë1¯Â ÚòMá*¶Ä!_¡‹Ò* Äwúþ Ç<ØÞh­6~Væ)ªÞêN˜ÖŸÉ§ñžðOñâë"nÕØÒÍż²`–‡Çâ`I+î𯩨ֳžá ¾ÖRˆu¼f¦ró¼Õ)¢¹ŠCòí:º}•¦`‰ï1GåûÑfå$äá+ÄeÌÜ›Ùán]…Ùh™'žÆt–®Œ+H ÕÝÏYE¿©0:kŽY·ê¬²®â_ÔýÀ`( ª„#¡È Ç’õ`30BÁÐlG!>ð-À ,…pPð°A[ª–’^Hµä  ºI™µ á!A{§¡Ç`^ €×ÈáJˆ&#‘H‚G[Ðkˆ ½EQPiTÊÊ^t‚w‡A< yFB/ІbÈïà{è)ÈÙ—¶åø\|vM@2¶gÇŒ) ³óÊßêïƒ5b6ãÖàêð ÂAÂZâR yù#¹†fÃë!uP„=#ìÇ/CîRžS¾ó))BŠ/5ÙŒì¤$fcÎcŸgÀ3䱤"èGx†ç`p)x6ӆ݌û„¹ Ã|ƼÃâ\† Ã‡àCˆ=¤+¤™ ò2¾$ã3Í?)Å”ghºu†%ÚeŠ0Eœ¬AâTD«e:±¹×ñÜS3C÷Ý"'Uäúg L¸“ž½…ùœu¹ &sY)6<¢.<6VŒ³$ê3˜ÚýÜzúÙÔ×1=‘Ä=M¯ÌÊÙ–VžÔ›ü]s#¿‰µ•}£ì\nB®,okÞ›²5ê# ¼æÿYhau—¡Û9³QÐìÛ&Ý·½‰.ú €Ÿ¡ˆ¨yÙÛÙã PM¬§Ù½Þ¤ tIl¿dSÒÁ4¨ôœÌSó¼6ÂsÙ’,þ™ù ýMŒ",B¯'²;¸3å‡\ÕkÕ'U—ê¨ÒOjŒâö²0Óò{ ‰å9[¥ æˆñŒ1N?O]ÍMdˆîj»M‰æn[ý‡%IS÷Ñ–zhºîƒ;ºn’g—ñ¤ø»œÉß­nM´Aæ³:ªÎ ]jºh]m£(=bŽä±f¿yºµL;U±C´œ·úuYoöŽ,¡°²ú…¸Wú^X^Ý#™j¾àþà:cŸe)_Ë)ã7Š.ʆɯH8’2¡¤HÉÖ§©*ùæÏâºÒ­Eååÿ²â?ŲjvC|×|Þerº«ÖDÖÛÂ'ä5 (Hºî»‰­V Û‹;àà&Xσ÷¡ÛC.SÀTxú (J!D„þ„®ÃË­(uA ˆHÈC¨èf$ ¼D’ÿGx ®E¾#×!ä)²}LGsa˜J†Á8´ƒ"CK)íÈ;d/‚PÖÃ÷á7 ¹H}ƒJÐ`4¼ï¥¥””u¨„|pb¡f…·!«ÈØ}y:PmÂÐ°ÙØ¡˜kÛc^`Va·b˰혷<Üyì:ÜBG0ÍäF’¼=GñÔÔX4£…!\Zx*}-r"lu`W$-ÕF?Tp•qˆñã=ãmî¤JLSødòøÚ3 LÂB!1”xˆpŽ0AÌÄâGãWbçâRpù¸VÜi|'q01™à& ä6òyb/Ä R¤¬,óHúKV)W›êµ ¾Nº)Yz»Œu¨Ü&Ü©ÿji“[îX¥Ú.ÞBv?%[5¯T“™ @諃6äÿO7þvl5VŒ.öÄÌF¡¤(#‹Ù’74íA¦,õE´|ç° c¡WãçäîeLH¯ŒY›žø%ór±¡r"ëi©-7‹žUt¹àIÁQÁ÷ü®°Æ3ο sµ§m—4m.nå6?’®IØ ýDŽÇúdUUÔm³Ðíh͇É|ZkÕ”+º«_ËNË‹“±*Œ³Z¯4 5üR¿³õz­æ'ªŠ_ÚHÛ%s¸4¸\Êš ½àÊn»×@³dªñš=ÚH­Óèç¸ã¹mz[ý(sX|wœ9óD&® N5ÝñÃiMò¯'ýAy¥0#°¬ªMòêYÊbiƒ¸Z°ˆ;=ƒ5€uŸéÇü_i}¦¨¥jµð‚(„?CìÑú:En›•#%òþVŽ·Ðl­aÖ~Ž•VŒ¾S`]ß*°O÷Žlhõ¾7Âü Å7YGDÁ±éQÍ.ç,[±æ±t¿–`öÕìt—+.+V™ÿ¶ŠŒK´Ç•%xS »Ó+Òºh‡ o³oIõ¿ª?”³õûõC”o¥Ã5ãÄ9œPa’äæ»v½v¶b˜ìÿž°L®ÅUxr¾Ó2óÒIJü™Êe¢h絬Ëèv>°%È~Wq ”1p`~轌CÌ_¬º"X²ÍpV%œÊò‰ùD^pÉ ² }z=¸ x2êƒ\êóºp$ò…ÂÄ e¡åÐpè2¼ºõ@¡pä8âDCXhô´ë=¼Þ—ÂWa°Ï'Ã+ ¤óäíºMÚØ×ä~#Á( Ù\Azà‹ŽC‡"—%†2’ò éE„”)x4lƒªI¿€ìO ðÅœÀ<ż˜¹c(n . §ÃÔcBûÈгã‚pƒˆ$\,.ÿÛ?q¬ _ÒÃ,Ù G(-âœÕß÷Œ¯‰^aLÌ^°€*QmQu*pâ)Â9Ü4™éSÔEs¤Õ–Â×Ϥ+øÞ¾v‘V“³Á`#iqá)¶Ç ݾqûMì$ÂdâÒ0Ò`òJè‘„d„|¢ÅcFÞg¡Wx\âÙÐ@õ2­{Õ¾ÜWyô´oéS‹öð{ô÷­>šB[ZcDÆÂòžD_ˆEÚ ¯ÏMUˆËõ…Š|~/CÞíÀ·ä^‚‹øí &{ÃFåFFD„/ µÆb³;rI‰˜Ð—!]±IlúíÜŽTŸ”¹) ±—Ò‹å%}a~?ÑK“Ò¹ÕºOêϾ p¸îµn Ùc™_Ú#`<( †èªNm¹¶PkhœêV.%Sy0îVìׄ¸Âã<‹éiëqSÉVVw_Ïáfx69[×!¾‘”}„×~¨Iäx¬› ­þ ;«Wöpoœ'ϼAz®¬(›Þ–“Q6õ\HW×_Óè9ŸhчCûGä¤Ó R¸‹õê5j½ò³PR=¯" $¿²‘û?ÑÅhé6UÏîç(-ºïê‹êA¦áî–º±ö›ª¯Êú'¶UŽö‘N‡g¼;ÊÒ¨!Wêõ‡œ~öŸæ0õn‹`·¦T­›f¸eíµ“ô#å4áF¥GÝ$Œ)¥0ú—T£¬Ë6Ë9ÝL [ž&¬agDåG–kªµâåZœí·e´éˆv¡ò(?…9‚'‘g–߬º+#s¯,3õCäÜ üe¼c,!cm®"å]Ö”Rb$º$ÂU„6Òc› íuÅO^ GËñe¬8@¿Ÿz0ùt¦“#W[0†ù"œ¤'õ*r‘ð0á Á…ñA?)ýàSà x0脎€½P-<Ù„AjÐXH­…ÇÀ Jº&d¥&PÉh rìÂO ²oCs[äv° ʆz¡G R¯àÔ\t ¥v&àH¢àÅøß˜1ØÜv\¶ wíˆÅ†cÄe¸Ý8†ŽY†™c`ãöàz°»-ø;žä Hù‘ÛŸ'5nul m˜äÁÕOl¼Óį­tÙíi–]–Ó®YÍïš~yô®‹6º1O³QEÕBº½š"í¿Ò¶ª 9I1è b.n~* †i`?BÜ[â+¢‚0Š0‰ðÿšt¨'¶04ŒTG¤Å…jYôʪ2]ɽüqÙ_cj®5.oø×Ój²*N•œLÍÌÀ• •6Y²Å©8Ã]H#¾ /Œ›nF?ÀÖã —“çg‚%¥ÒÉ’Ç%$ÁNT¬?0»Á?AFÞ„†EŽJêM:•ÐEIPQ„¦FGlM-*©¯ž^!-HO¾Ó7›ÍÈ þ®Êçpèûsæ—>cyr§ˆ8wí¯wÉöÝsr_‡MPüsçŸññœkz½Õ=®†¢ƒä.åPõM ¡ò0mxÒÌøGiK ÊÇç©Kwʳ¼S›F™£L쫎—LÍŸÂÙ«ÈVz%—ù-ÊDgdãKÇ<å^îqVË ìU4ðìÛšV6Sk'õ±ÐΞÃZĽ-iWfH[«ûW‘øsDçDÉ‹Œq·Š¥šÕ–ÓiU3CÞΙÀ3ËÒÔ㵡Æûv_W¡õ²‰hœ¬Å«Mf î“·½&ĸQûZ½K'Ì’uëŽZ†»ÞÖN¬Ï¨Mv3-[õ*‰RxݾÙ2ůh©å·µ­ÙÖjÓvÓrã%uä#ïo®r¦VÉÛ“72ÏÊ?fhq®Å®nË^³]ýZPÌŽ`ëy?D;dÍú!N›Ó×,RUŠ!öÁªne“õ\Rô°`…ô¦¡ÃÙá*v6V vW„q× góÿæ.¬Ì¤o,|Ê,âJÙù…K3†%®Ïÿ&ªžÊg‰>KDÚsÆÛê$ÞR6 Ÿ9G2ùÖÌ4ÄÊ骡¼¨Ø¯dƒ£!˜€`%¬˜€¢tÈ¿èõ>+äRç{Ñs0¸œÌ`´ ^†ïBçàð6x(RŽT"X¸^ ·#ÍèAtrà„°??"‚¨‘`$¦¯ñ€g@‘äT¢Ï –â_â—`Gø#[…õÇúaó±cñ Ì<ÿËÆ>ÆÎÃø`¨˜ %¦»B¼‚·àúÔkœºõ3›uMÝÍv¬ßîéXè rýëy´»l×ì:Ž'ÞóÆý˳©Îìí¬²¶Xõ.À3¦>¸!Ïýñ•œÅ¤- ÀMÇ¿‡”/Äe€?ëOÆ©5^vœÑ—•¿Òá~`®áu¤‰P~06žŸÙ–{'s~Ì…hWÎ%ÝÞßÍ\¤+5ê%KJr¬ŒWß3.ÇPS ýó³3ðQo#SÒÏ¥þ—ì¢o¿qoÛS´?w_‡k™êÜ9$×OñÞêtÍkˆ®ÿféVWHbªþÊßËøƒÕÈÿ.²jÁ¾ÛԮዾÈ=æ_ºvù]¬6‡Ëa‘-°NpV›S”we=†õÎ"CRÅä¸ÿÂꢵÄ ªTe(®[P+7¬VÄI–ȇkïéï,ê)Ü¥ŒØ¨ñ©;Îo;çüäÌò-Âz¾œs¨ú¬x¹î\]÷£VZgv—[zÌùÆ&í^CšÁ¥çè|Ä#$bÓh×ÏbO´³Ô¥u¨åÕœ…Â˲…ªÁ2:;‘Î/¡›âôiøê)­™k&™§jmªñWÞkÑÕiÕ*Ý{S«mKMµ>XúOõ *–ð?í ãIÁL†ªì¼œ¤c»àødÛ­Ö0¿±ÎN;¸ó a| «¨°ú,'›Í{^IWÝWzLµŸ4eÚNS§s®Ý_é[TŸ3#o´ø¡eµ{—©D9NLd¤ß#¿}À°$aä;°Z” £T"j| ŒfB p*Ä„r@Ÿ>·Ü 3á¹H21¡§ÿ¢®FŒ&#!F7°/r˜ZN)Db)èA˜ÄÀz¸HG&¡ô Ü@QˆÝ…ü͇wÉä¹ø(ÿ1"l(öAÀQÿ7Û£0ÉÂD|!(ûçÅâ¾aõ¸›ø5øwØiØ8£ÿímå›ã7›¶}ßà¦â¶kA}ÒÍê¿DÇcZ4f5ÖMsÕ8MŽQŽ½Ž¿öm¼öéäyÏ;óUó2G²{¾Óâ˜èÒºÆ;«ÙD°sÿY{Æ«myS`½[í›|9d@XVLOÔ€MÖ£¡×PWØÏ¤}qĘÁ‰™_ŠF–­.›ÇÝ S:λštU…+’oG_ŽøFk仆4ÿht54Z÷s¦rM®Ã¼ƒéŸÊÿQ%i·IN æñ%& ¬wë Øo³>¥93&ò¢.&ç¾(¼Êú]1=c<µ Üp‘ß‘éäe3Þþ(ÒFÆêïև܇憾+¡ë¶Ö½®‹·_Ò]V/þ/S‚4ƒÏCRƒÒw§•Ós˜òJwvAÊšrÄüºycó禥M_ÝdÏ*ßrŠ“¦¶¡µ#›'Û$ÔJf^= j¥f†3ÃããÉk¶ïã×Mžbè†|M!CtÜ2ÐL×5Z3šµæÖÊe%÷˜°˜ÉZžö‘âÂËBó2eû$‘†í^JM›Š)ù&§=¥fàèHÒSE“¦§W¹4· K´’+œíürõdËZ?±N_7<«·Õå5x›° ûê÷YIwËÄVI#Ùû´Þ§EÑ<ÙÞ£œÍ:[t¾psE$߬úǶÕí².Ò¾RÌSFi¢•"tÄJµK-c7´WŒ+“<ŠÚeõ¸Æ ûÕƒø•ò¡º1ª’½<„}AHÕ+\‹kÔì3ç5†ÚŪÉŸüÙ(M·úu€ÉcY¨Ö‰1̶â÷•kó¤>\yÙ¼Žòw"•JhYä™e)”þ(õgÚMuémHKˆj%ç‡Å)U\·8ÍN^Fi ]½ÐÓ*_Æ›$ô*ÿgÌ«-wÝÑž¼* ­°*kž›W*'‹¦I¯ä¨T¸N‚!Thr× ¥PðôôŠÍà6#Vä\Kî$­€ÆA› é œŒ †<ï3Ê3n7Art² ©¦L¡¢ È~8þ O‡Mèj¤®Bý?´ Õö1ò¸¼Nƒ¯%¾ÆÀŽ 8äb[Îúw$b?aÞï8pÅÿ°ÿ6옘󘬳³4`"v2Ö€‰ èÝZ³îöêîÕký^¯]»±ßvö1•º¿ì÷RQ@yª²M£ÇG{RqV¾W¹E½ÕÛwâÑ‘o™õ•.Êât|ª rNqÞrÜ«±š§›•¦öaîïîÍm†ÝÌ&Ô¨7 þã|©èÉz;6NyE}—´ ‚,äÿ,¦æwpÒ”tÍ;Sb¨rù´à1ªÇô­qöˆgQŠ« /½Áæ·Z¡a®JW¶¤$ºâ'c6-¨èÙ#_6µ, £©v=s†Ë©eùÅw _ÐÖ'6wCÔÐÏљᙒæ&7Å vŽŒiO½FKÏyŸ5:ÿwÕÆNJ¹½E5£Sãp¬eªp³Î¡µãk&››«–Ų_‡Tÿ ¢F••‘’å¬Ä߉cª6inë¯ÛJÛ2|lx._Ê«Sý«þ.´ÍúóÕ[*6”ÎÉË«¾¡j7¶èz$ëUM¡\Abf–²)¼³´ÇS»ß%vâê?웦ëmÑÙÂEô•Qs >%+½„¹D¶Ö ³§×êW8–˜ ¦TƒEvQt[lám/éμÊx*Ôè™ÞèÆhøJ‘â§ñÏŸ;›'6ÓšÿjyßœÕ"nùÕrtWô®;-hKy˽–?šcšZvÕïíþÞ`}+î_9¢LS™Å¬­º! U”IorÏTFUý)8Á=(Øê•¸âë>yÆ:EæM:Àb’™›ZM†y}»Š›6åyù7ùÕu¹D;ÅÚk Ö~UéÔ'´nõg±Ip‡Ãl“ÿÿÿ —eT›‰EkSw§îN•âNܾÜÝ!¸Æ…¸+I !$$AJ[êLuÚ¾º u›º·CåuÝçïY{}_‹0‚é²oÊÜE”Æ‚õ™|Šˆ±‘檮«i«y^o`Ý–°LÇ,ñúwâM¼+’/† ®¸H7[Ék K~:Ú‹—ks4o-¡ìqï*+èù¢[ÚØÎG–-ªK\ wŠìœî²ø‡Ìgq¾V|ÇÜÂò°J´û‹ÇþÊ=„ièŒäë1«1ݘEW‹{€þù = ㇪À|ÇÈ"ÀÅœÞ`´Ø—øÝÓ $â 0ïO¸ l&ÖØŒƒƒà;p€Ì€=„€»‚;ŠlA|†ÝE‚ÃÀ jÐyð#P¸´|¼L‹ˆ¸¡ Ÿ¢… AÁ*ðCØð¨ô#"!`¼ÿ[o¬Oƒ× Ÿk¾Ÿüà^ŸöÔz}ßó.ô†›M^³ evM*u¨¹·ÑŸQÏ>-ŽX•Çd:® )ö™~©e‚ú©.R?Ï$×Uj¯h;õ;L ›Æ9µk‚cE×%÷§º3ÉdÑýÝ&î|n\£Ó å^éí=ǰF.9!›e¬±ÚƷﲩºÝKûÿ§ûAÛJ"W&ù–Ô Šì½óy~êtÅ#FZãlÖºæâòöª³ŒNUóLê6Á)½E¿‡÷gÓÎCÖºrTÆìå"òSlQöê̆¬7…%å-µÌJÏâýÅã Ž¥~IŒI]ËN¡¢[²y²r ¾Wïã¬ç®e¼å„(ê”pzdeQ¹&C‚»€žNdf¼*áæGõáj34µcx3T­¶/}_ÜþV¤i©ùoI/õP³t3™¡¦ Sg³ÆI7(‚÷+Îeü(¼Ð4®Æ¾4jRFͨ<"ïµØµÕZCœ®<ëÄ_ò7ɉÿŒîÃܶázp×±UØ@ìà¬ÀÀÀ'L>à‰Ä”Û°g°dÔô[TJ‡BÏGÿ‰ ÂfJ€Œ¾ìÆïÃÎÀ)€JÌ @Eõ RP0¯Q{ü4\%v½ #C"/±+pg1ÇѾP< Þ™†«Á6ðgȹpøøäô´v ¾"ŒØªƒŒBÏGTD,Rá?A1ú¼ð>ïýÑ»Äo’d¯cïŸg{©^A»Wì)öÆø ì=â—rzUD(M§­ÍSÒDéL¾Gÿ•'«Ž£3ø#šÇ†q¦êˆ"\»JØöÑ:®KÐUÞñ¯-­s—¶Œ·ƒöEÚaóé‰Ù÷Ê6±åZ#»á‘wGO·¤“¢~(¹¬Þiε>·¬î|hÿÔµ±ßkßÍpÕ½´‹ m™Œ2ySÛÈëå»d·Õc\êþjezgÚµ—Ù—À!>&HÞ9$Ö ºTÇV­Wˆõ>})½¯-%á y]R‰1sZÁ®êÆ]uoçA˰Z ÕÁ,›ìZëYezãþü®lïâ´Ó¥úƒDÓä.ë£Ú˜Qœ(-Á$4=4\7ϵ›»hnP÷¬î¾ž’ž§=Wz=@ÏÌžî‡ÎÙî{ÎNG¤3«C UÔ]×P±•ž*/ÝZó-sr;`=n;bu¶-·úÛ¦t4Ú[ò¯Œ÷Ô÷ëOÐÆqÞˆTª—Ò@Q£¤H=Q§T¬Ä‹K•Â-¨tƒÄO~\9E‘§š®,“‹Ç‹W‰ÇÈ"‹T$5Vt‘VL}OûÀæïc„–í«˜¼ã²Mê}ê)êMңܭ¬peÉÒaþ¨,Òìo|¨–î«ø\΢¬ç<R~ó¾„ict³¶ÌÓm“ÛÄÍü‹Â±üíŒ:ÎEá€l‡ª•s$ÿ,Ɖ].zð×#Gq¿ð¸÷¸‰¸ãX¶+Æ8pK°¹˜Qàv-ºô*Ž‚d>hp :dƒ-‰%?ãoʈØèoq­¥1âÍŽÜ,¬›§L+IzužXšàN¾O"“ó ·ÐÃOøwxØjÞ3¥°­£ý­Ä£"ª”ÎÃêP¦ç¦Éæw¦Ýæ9š{´MiƒäÙ%5µ[ÊH¹¤ì=ÙcòUƒôDfw”]C‹çVkÝË5ô?i¿-MfQèeTJýÛš!z¹T-Σþ(»Z?Yw¿whß±^u}µw¹8µæ¬Uƒu»"fñ dstcŒ0Ý ™XxBú‡ÎüÀarÆ»é.—áÚä:ÜUÝÕáÛ'Ø·:Ü»]$הΖzs´1ª5ÜäkÛï9®^g«ýªãœËê,¶úXY6’mŽý³ýŠ9W¶—ÆaÖ0Û[vˆ•wj•T=¤y¢ Ò´(ÉF%'D%[To4 E“’¢qéŠ ó´É/ÉI©Q˜)Û¯æ›4š«"§bXõNIÕ]’g”Œ«TV©é8É9ZùCBæViÿè rÝî\©k宀M“œúŽ©² xÊÊtÚ1NísP@äc 5ܹI^®0È? ÖqÓ…ZUªæ‘¥†*éÕ”ToìôyÌEü?øÁ¨ÏÑÓH ÂÍØsxî5î ³”0 7üËÇ·wÖí˜q¿O¼¹ç‡^,"ñY81ŽÉŽàIQϰÝØBì>l~QC>D¼¬Gû#‰°`ä2uÞ š}îþôÆÂ'A=#`ä3ÌꙇB¹ÐЫð&¸²²Âׂî…Ý ¸æ—¸ D°È_Xè7äsÇoKÀKÿÏÆ½P¯ÃÞßÀ½Ë½fz¼^îFïﺺûànÜî}{®í>íú¿­øuå¿õ+™‹dåC±]:ÚºRw\[ko´—´ujœŽ®]º\!»ádgÑ*[í*íØ¦ðl,­y!À™D›¤ãš=¿ËÓùØù©‹Üa7ó;$=þN«8­È+v ÁHÚ_y±U¢2\•†²ßS^'¯¹EvÅ­Irgÿ“·&Û’°9òNÒQºY³Œo.ÿP°âC X¥+ÅuôåWÞéŒ_q}˜Y‘Ê‚¿ DY´¸f J^æV×'2oËï¶)e®Šà¬•©Ù‘ô¢¦›2_»¹ÿ›{D.šÅò× Ç+ÕA ÷®ì€þ¹ªª)—Ácílz›) i:Èœ'9¥š û›}«Rv=t±Z­Êql<ÐcZ¬>©<­™/_.8_Ÿ65iW‘±©Ÿ~Q8Qç«nb®Ì/NºAŒþç‘ü$ýqQFÉü¬æØI©óê¯s_4ç”]Ï ÏK¦=Rœ3YGtvþŠŠ£9,¢ ⽌i6¢w¢DÈ;¸åÉ|Ê®ºÃ•“©¥r¦˜›VTz/slÌÒ¼ ñKHò`Ûþô}%®&ËHsT™6ëbgÈ_õû¥ü¶â>wwÅù’ç쓪Kš•Ïs·kv7·{O·Ò5§+®]$ÛS1—X³¾¬‰æäzèÿ5þU‹JÍʯûG(T¾Õ³Ò-ÍYÓ™m½~:™h/·¦qB.9rv‚W’,¦0&,ÍèÓ9ÜËÝ·º4­™ÔMªÓ•s{3úQÜt©¼­¾]Éö2ËKÕ—òÏYΡdZÔ:Y{[Ý£h¸ÚöÓö±Øö?¹o³û©.Éò]*æáywŒîž&[o}í|æÏªÇ©»²àu^ì{|²\-m䬿5½Eõ@Ö€[â™Îêñ)3"I¸”ÈûØIÑÓ£ƒ£WÄÏO^ÿ!š×Aò%¿$'{FýÂB0JœøŽžŠ´!9€.À-'¯Ä¶!Kd=ª½ ›G¨ÅGF'ø$nÄ%agÿþÿÚQýˆ*ôwäAÄgÄxÄxX+¢á SÀÀ5°ËÈð 0Tõ„íḞ΀ ÀçÁ¢ˆ'jð¨ìeÄ{ð D cBØáõMa+CWûóý&–ûüô‡Ü XìGöÿáO \´5øY|3xr¨Wø²pNDNDGXIØ…°š¢+"zƒ*¼3IÐÈy„%qRÙüDC+ËýÒÂÆ yAò§­3Ú¬¿œ}{„êÚîkЍ˜l}ÉpM2µyUá …)&XÓ]`—ÍÜsºç¬¹N[%Ÿ(>-ÜÃlL©­¯ùÐĽ’Gµ@8Ë9è'+59 qXü\/Àc"·$M¬Ž9@XÕó)*<åVáéÊÕ¼êl½Æ˜ßþë·……×9’pˆˆh°üzIÀf¤&§¦%f§dœN;_˜J-`½­[žV²$µ=w1jøÃ™ßWÙ÷o_z_CßR÷f½©e°&'oÒ¯T"{Í!Îñ<†98{bÝ+VËÁGiîYÜvY'`W:Wþv´M]‘êSUߢ4èõ8d|aiï“àY%¼˜Pœ^þD¸×ÔÒ¨=%xÃáL•Í0¬ÆYòçìC”³d$2C’ákp˜”c%VF¬¶±k}ï§vž4%~¤!Fÿ{×A&ÍLÍxãb×}ÛµÆvVËWf)VkfÉÏr{軚)ìTÑjÕŠ²Ñ- ¡­´õ™©·ó¨ã­³Àµ¯‹lb[àXh»f­7óŒ1úTõ|íf}¶á´‘ÚNÐ+ é­‹ í2,ãQCACc‹X/;!­­`rB%ó5ãpÛy¹ŸÐSôLaÖ-–½l ùjstP T'{,«WîÒ*vЇÅg¸Á¬§¢0}Kë Í …'gb]wéýœà¬%/ázT÷]‡ÒÎ7~jo±^ÖÏ4J”›[^TI˜+•AjÿCÓ2ªTô·é¸1Jx—°ŒT,e¸ÄuF,P©uñª²ß¦›£™'Mösè,oæ,¾w5P¤IJÅn#–ŽDŠž­#)HûI_¢)ÑG§¢gGÝŽãâ4Àt¼ÄÄô ýUM¦=ló®1{f- J†WÆm«zÕdà‹镲0½Dó—ÆÕ&é¤èQÍ+2ŠKh‡µ·ÍLP1»ej­¦:‘ÞlþØCs~ï˜lyg‰×•Ú„„^ìd*@=N¦MçÿP©t!-Äš” õu‹sÊ¢.áLÀÈõp/µ$ñbìZ &Àú1šÔ)õ52¦î‘j™†ezmUêóEÈÒ\R?z,vSWÄÉ×’k"ÕÑ7"×áF1k‰“s÷–],¢P v~¨Kma™ÿëaw>3‚ >mˬë÷òW^ÉÇ'¤© •ýѰ®ùC¡Œø‘à•u97+÷~£]vFsM›¢o2zZsíW»¾ÙΨÊhžÙæÈøË„¥Ié…Ù…ßK ¼A¹òNý2×5ѽÈP§6觘ÎY×wlý¨0‰ŸÕôá͈h °5îß‚1ÕÇ ”k­{\Sìrg¼9î|]ü®tÏÅôa–s£ÂŽÉ=>= ÕBÙGa¨m-ø˜6%C[@c.j[íøËŒo“èæKŠRU¾:@[ªþ¡ûbzcźÈnºSa#¶'´?ÐÏ3l6Þ3^° ÚÆ)Jä{ÄÛ¸9õÏ %¹þ˜•ÒJÅ;õ]E‘xu‹¯|»ºA÷T9$Œâª %Q¾ƒ°wˆ†”ïµ µ É,Ž™ë' –oV¥J€–DZ$Õ!üO%–|`£ýUg*Î9ž–˜…(ù“Þ(D*¼”WdÇ•Sµ5FÕé F[éhIIÝE…Î]P¹¼X×ü—ìÍQ(מÄÞÂñdùs ¼Å"cŽù°¹È¸T~¿Å&¦Ýô&Ú2ÁFÍÎöUJzñÑèìÈÇ‘{cÚÈUøØèÖÈÑ\Ò‹èá()‘JZErºðå¸ìXB6á Þ £eÈcpÜ„ƒ¿„mœBI±Ÿ1NÄ äy%bF€áåÈoðù°»ð8 Z.B¨à7à(ÄÈqHßïl^—Â?ÁÒMðñ0)Ø ™…̆ƒþ„¾†ü½[…˜‹H€N‡‚<"¼B>? Yöƒù… N ÞL :‚Ï _ ·τ½†€îF¨@R7¨2 †ҡ 35ÐfÄÿ RH.,¾ý%ìÏÀ Adïñ»Âv®Ü;-÷“Ä +xÏù'D3d:Ù2Y–â¼î›`.eaE¹Ðj.íV¸™Y-©’¡…_˜ÍÕçë~H.Ê8›è[¥Ú,õCÝ']‹¨‡>ƒ¿U}UõQ´U¸Y>d´/TnŽÙ•yœœ+#|K<³)–s$Ê‹ÈÁ³ñSbHáÕBÔâW‘EHœŒíÁl0b` þ20Lî ð`OÄi8A…ÎCàág'á6„Ñt# “‘5ì:d ²ï7s¾ÐÐ`¨~‘‹hEÊ¡1 Ô±u冭ƒ¡¦¡o¡`ðSðÙÐ3akÃf…o ƒ†­} ¾T ퟋP‚ H˜Šƒ…ƒÿ†pÀvp˜N‡Žü&í$bÌ ]‹P Șc¨Kp7t3˜1 rê 9›Rì5oO+f}íDAÃ^³€5[x^˜ÈÖׇrF¸×ªûJj*vˆ®Æÿ´ WIá¿`äë¤_Z¶×²+û™^J¨æî–l9«ýQ(MZ[@¼_Ìú2z¦5ãIzTáÆjï©v™ÜÑx73=¡-ŸH‰3EOÇ`ÎÂ3ÿdú+Ž´ç˜ÏjV ^4z4óšVÖ²óÖD]Áݼ‡¢»ˆ¡Ñ1_IÄ-ˆ›@zA~HÞH^™7ƒO»T’^ëàÆ§;¥V¶¹XöŸè³”¨U!ˆ ñ3"Þí„m„LÜ× +.†ð‰„\ ùüvÛЀóï\AAÇ»‚¿…ì ‰'lÂAB7N‡‹'ÜÅâànà†à¦á ÜAœ ? ¿?…H'Œ€ª€rø)|¤lÀA[Î*I‹NZ®‡­ÁFL˜Ö5™î÷&–z”de”p}MÇÜ`-»v½éxn~À¹ÀH‰KOڑྵ$êO²3tbØTl'<=„ ÛÈ$d¼I£'ïN+çï·lm幌óTvÒÌò9úãz®ª]õÍRSó¨á]ýzmxnsT7z‹ôOè R¼šÄTe»”skŒÞF'ÉÂ1žUþ,Ÿ®$ÔÎmÃu4ìv6U‡¹ÞšÍeô„‰a÷ÈnÒ¿¤k(žô4öiY´ÛØNßu¸ãPóIÞ¾ÈúÔ6Á3Â;Ïæ*NŠ”¡š0ËSꕹ´õÆi±‰¤ª(NÇà*Ò¶˜|öP©oE7ç3w­p,»2îizSþÌ,þ˜t,LØÆHÛ–ÄɕɎr‡£” ))’IuY;oº?Öü4ŽPcŽO®‡¯û~­þq Üð¹%¬é[å3›]T÷³YcgÚ×{ZkØ®t«È¾¸¾3¥éHue¯ÎO¿Ð•ÚºÿÔÃçŸ/°K­ó=Í®[¾ÍjÞm`è?ª_È”²_t\½Üxƨ1wX~·n4lW+Fv\Éiu”æ×’ò‚ê<Ã)û±Úµ 㼡¦éš_•ÁÚõv¶ë±*· …5²x¥MÓèx+~•±2­MÒlRÚSuþÊÑÊ›²zý›CÖš5$×,°ÉKeÓä£$\!›{¹ä¡ê¤n3Ø¢Îæûptù…ñ[âðÑk£ãÂçb¬Ð ¡¹¤J öù89€ò¼™œIé¥–Ç ŽúsŒªGþÂÀ°PÚœPKè‡0^D]ÔÀðõa.R:€Êh“YscRÐP¨Àƒ.0T‚- ïOC<‰¯'^·} Kˆˆƒˆ ¥ø£„øŸ„KÄ7ÄHâkâ;ü\ ׃»Æß$Ü'”ßHøBÂ3üZ 718(8&Ä…;‰3àoâÚqç«ñ•¸ãø}x=þÀšˆÛv¿[4`4±ÐLF|>ƒ·"ìmÂFöñs¸ë•½ÄÁ±n¾MÛŸÙ¦^Ò´®èÂ:ƒ›ÔˆþšÜœí´)””MXF£X6ó–ÎW{°]äNK#Åc¦Ë0$9®×kô1ÅãR»â’½ú¶ó–D¿*F5¹ð¥ï®Ž¾/~¤§iWNs­Ý¨¿—û“>>:ÒÑ›ö"³"yTò·Ô—ÙK {ŠûåöOÚq"Î]VK;œvmŸåÝnï5#f¼Ùe.±G9»]u5¯vòÚšG¸Ë4ÛO~Gm´˜ÿ5_Ñ´)ç*–‡8Ú‡­aÚb™I>ÚÜëY¿gËýSW¾©íJ_+Ëú²JY÷ÂÉ0u&êÏisÔ5jlÚ‘:¡a¶ñ‰eœã‡Ãßdc¿d—ä?ÎÜžr®ä™Žeê´«é©eœ)m-y-öuLhäºV: ùË«à::6Jü2ËSê„Ãí\æ|ÙÙ-Å}ëv+ÿ_úºÒ¢X‰CéÐ/0æ¨c'å>ÖÑXSP¸¸˜*þžËJ9Ÿ°?®ƒ>/rh„‹º0t7Æ„²Ž*ÐaäéT¥."œþ=J·9ú{¸´7",ü·°Œ°Éáb)C/†e…n ‘©Ó˜]1ò~lzFèòt/D’B ‘8('Š™€ °UDÑJÔw{N ΂؀8¿?˜È'^&øÅàkâà ´ ¼Äx:nAN˜AN ‡¸Ÿ0øL >²€“Ð2H 4{ˆ°Ÿ8˜½g Àð.>Œx•0ŸßFXƒ?…Ó‡Do#ûÞÔ²ñÀ¦öÍ{Ö$¯ì]&ò¹Ø¹šíV6¸ÎÙ¶TèxÉšuU×[Ò;,Þx{9Vó™·¼4¡dMαŒÆŒV7ç‹8HsβÜf¸#p$ÂbXZÊ®‚¼8ÑVérée./—’»$ýï¤ý16ò¨øÌ| ÿë]¿‚U™}¥Oö²/oÌóÏ--V KòŸ„¢àLì!—žÁ‰úóŸçÁä.ä$t+|lVOîN?™ç(´qÕeÍÌÛØOÒ‘¨áéïÊg©x‚_²c9»%«+®ð BFêûðHJ8%>Ô—VMEEÇ?a¼eœa¯‘¾6å9ÎêpFGtP¾x)m¼]¬®ôÒ†ë„í9"nJRýõ¥:e¡>p×›=7Ûi­V¯OU©­ÅHÖ¯°nðfî`µ,«:/[žÅɺ&,1QŒ¥¢øŠU9»à‹¸Ù”–ìfÞR£ æ¯*¯£ºî\snÕ<œL±a¨Ó9…¼²üçqG²–ÖȆDkþ3çϰ_rî8umµÞáö¢6½e‘È.Ü©NÖ1ûXWØj*ýZ­;Ï5x:í6Ëç窷–_Ì'Í•Æ# €¢t/Bô›z¿zªòåïºXíípckãŠÊUòš’­g5=ötWŽe‘¾Å|ukÕŸ—ÙÚhýo†Ã›q¸…U4O¥&» s5ou¦Ô\b]Tý½ùHËßnDÔ¸š^ÍèŸÉg/Ï‹WdýÁ|CÉ£üL½*Ùiá4®ì¼Ù’VÙjøOüRâÕ„Uü’¢#eGþž#çÍËËH@2Ηƒª{šÕöëÕÖNN5©)ñlŠóIsCÝQ‹/!eqÑ^Õ%¦êR¿Óý§iîrþttZhæ¦ó«»òûXµ£ê¥ȇxgË™[åÒŒ5½¶è×Ëæ(Ÿ(¬‚jþVñjÕ`­[·Uת_¬ U_UW÷´M%&‹!ÅgÛnËq™ê}í2ÁÎÒðr¯,æÏVîÖ­14¼W—¨¦ÈæˆËŠŽÛ{“ÔiÍ$ëum˜Ü.j/Ú_&ˆ·3ªü5ÜßÊÎT0KÅfÓ»ÓçûŸÈÏj§¸ÿñüp&뿊þQÝÖ×,šÒBQ‚„(Îsp@öÖ´1ŽiÄ_¡×H]hÚˆGÙà|LNZBšø ÷à YAò§dcLt ² 顆Ð&QR–ß`ß±(4™KŠ'e„n HƒÃ'-$Ň? -ÂŽ"MÈ7è04dÀ¾È"XN‡Ë`8: qÁRä8ê À[ ŽØHì&N‡8 ‚ ¿Áu@&q ø ¨¿€'àÏ@1 Ù R ¸9uCEP,A&ÿྮBaH”Cˆ6CÏA< 9¥‚×ûèº ï¡÷€[þSü4~)[.m[¶mþf®ßíðVhf•vËn,'­‘=µ¬‹çäÑåx¨õôÚ5ZÏ\‡¾Šºƒjòªy;+_´ÿt3-Ó/Ѭ–~Süj¢ ƒ’ç0)Ïb{#$²ÏÏ+œ™#bJg—2UE cÝÐ0¤~ öDÎcšuQÆ“Ýø1ŽíOýK‰rêÔ˜þ±=™¿r?ä¤FgEeèF*‹Yk°@†?@ùJ63‡–u©¼Ú*•IMÖ¬á™|#ñ§$Ø:ÌûxÛr¬Å3ØC½0 , 2àß„DÞGÛ™×$Œ×Eífäå² Ò™7PÈŽŸ¤àV.hòo9Ó@«Lt3ÐK¯3• Kâ‡%Ô&ïO]—uO~¼ùlÛƒÊW–\§Ô;¡io¤rªc­Ð¹ÌŽ—íá8fQ âWp ñ8émÆÄÜSIë“îçIwô?õ³ÌõaÒÀÒé‹XÇù3Õ#…—ÒæF 30Åéºd;kz‰.X¥j(–LLÅQ«c¦WfýÁ¡r¶ejÇ&)=/É?—ß͆òï”+?.qËS$+ÖKõÊÚmõ[êÖjè¬Uêg ð§Ë†Ê²TÝ[‹#Ãô·±ÞrÏvÐöRÿLó^…iî—ëUê~ª±:Íõ:U¶òž*I÷—^g9feydXo;è©t¹ ñ» %ÃÔÏåZå@ÍvõCõ+Õi†¼V}K;Öݰ¿™­æçý—=˜‹*VÈÆÊ tC¤ÃK ʾª/Ø}ô?*vàó/¦ëóæ2ÅùóKí¢Xuªñ£§»ºÊE±nPò¥Zã Ó&ËLG1E%Üáçý™³>­,aw¬OÔ‰èw4%¥”lE*±‹PÉF &µƒ-?€Œ`)´C ?è&4®„KH0Zþ;„ÄNb~Ø´ I'E’Z‘µ¤£¨Š´‹vC@äoØ ‰ &ôû…AÛ‘$x:Dã`4pó!!$@ h„"™à¿ÀkÈÎ…~€ïa;Hê¡ÉPÔ { ¿@\¨Ö×ÁŸÐbd @7ÃÏ`Ôý͆AhhBaMƒVÁ=Ðw˜€nDÆÂÙ§€6ð9xž|hk—ÿ§m7·†o÷ÙS«3¤û Jµà7þ‡âI…ÅŒQÌ[™‰YÅ%)Ž3(ym)I.da^è¸#9È= rkWZ'ë¢Ê¦1g2w¦ÉŸ"¸Â{$9¦.5‹û\ç+—;“Leª –[NœÇ^ëã!¸©¦@D:¢83“¿ ÚÓÁ|û&Ò'œŠm%ãHçBu´c$zy*àÈ…ÀJx v!A,ôr[‚Õ£ ô@t9JBQt#|^ ý „ŽÀƾÝ#ðs8Þ %C—ÑwÐ.HEÁ¬¾é?dl¿A, /†­þ®›ÁH¨Ò i‘Í:j  T ·ã3ødÃáqàc0Ê€ÒáåH'R‡!ãÑÈ~䜳á°>Ò}dèt)ºûÚìT莅» gˆ_ßV$¸`ÆE§u¾ƒBƒ?é‚)!bÙöämŠ Í`O(>f|ò^¾y²a¨t„|¢u¹Pl´/¼ÿ×û—‡ÅæyÊ3½eåÅ78ÇK‹Qñþ Ò©¬ß©»Â ìq¦Œ®LfÉyÁAœ0PÜ©Kp.µ¤š¯~ò×'¯¥N ÿ9î`$;ÊÎË‚hÁ8[ŠòûüÆ2³´`F´åƒN4!ö-kYÆÆYº…é›ëý§àk6™6°ÒnÛ,/ãç-c׿/¬T­Àe];>ˆ~ªÀËŸœ±œ\„Sæ‡jÑ”úÄä(Fö…ù¾ð1o¯£|QÅŸ”÷Œ¡®–ÆŽ†ÓÕ|okû¾ÖX“;ï\tIT?梜KüÙº^S›²HõÖý¡- }X«·5¾¾Jýgþ¾Ü'iÉÑ iWHøaØ`æì”â”äµúe¦(Ñ“òdÑ}AÁƒŠÜò—÷èãããRç°´¹» ÛYQi…±6lvŽ>‰ñ[gÊ8Êa‰Ø‡„/"ƒð`4 : ¼ŠŒâ¼S.µ=×Íž@þ-"¨C.á«ÃÀÅ¡ýØa…Š~ÖO­~_5¸Zë®v̲hõRûSk¹~œÁd]èl¬&5ø6\÷Ô8/™¯iê™ú6ËÓ*Îô¢®³Îì>lø×Ä´Öz-”úû •ëÍM–Ý®;®O¦ÆKN»{KU‹'ÒC±» ÃnÀ4Ð$ÔN¶ÈÝyµç\ûM•¶:§I_ ÿQ® ²LrÈÆ 8²•çẠ’ž,~NHÑ]îeÞE¡R>Ù¬¶y]Cœ!.нݑl¥8ïÖJ¼ÙuÌê ÞÀÚôj†ã”åGp†¥)2OݔሷÆ$GWD^ ž õR¿A’ ID¡ÐCØsH†œG„…­CfÀ¡à>;{D¼†$Ó*±Ó€Âk¯Ð{¨Z _΃ <¢"À¡àQø&òy€VÂWûÒx¾` ¤Žö™Ýd¨— Ä¡ šõ@F¨ú¬‡^@ã¡Wàr(>¾-`?ØVÃJh ˜-…qÈ~x"’EZKŠ@¿õuØkðt¤ë@K‘xVÅ¡<ô!t:~‚[P˜ ­…¢cP\ŒdÃ3‘Yˆ>æ'‚ÑÈ0ØPˆ“ðýC‚pGBŠú¨h'vb§w3ó Ú+6ª¾¨˜²QüÂ?u?œ=¶fÙ áøòãÜ}å/Åy£$&TÚšçbMHè-MÍ\”:(+…Û,«}®’ ëÅ­¢3åC¸t9ÏþÖ$Î À~ƒÞ ËhSÀÝÌݵ)$.XÁ̶¤µOk­ÐÅP˜¿QóL>/oJü¯±“lw3}yŸÕÏ-çÜqž7ο̕ò¼ñl/«¥d—`X¡+MÉÌfþ%Émiî.jŒ¿Šu¢¡H'¥=îkÌj;ùit]—¿Yó¶’æãyd ÒŸ4d[GXsœÕ½gOŸYݼY”˜´1ú8cúѬ݅m¼Eå¾’Ró/­#ÛGï6TÚžK¢2c QaQûö%Ä0¦3ç³c Íí¯úPU“Äͽ‘£.ìÎMWlµ>ÌaÔÄö2f$udH© [6ƒz˜ú-)›å‰ÓE¨SpÜj®5ZFFÌ2J²’Œ‹\Gß•¦äB º„Z‘S22Žü1žMÖ„M‹ÜGïÊÛ.^ 4Lª?S7¨j+Üê5Í´½q¨ëú{û»-Ö|Ûiçe¹Ž×ØäÍkê_¹LïÝQ>ÓåfhþÑÞ·2_ЪojjLÊ‹ê k°Såð×·è—›>X†™PíP}ªmLÕ#÷SÇÃÍg¬þ¤žéC5gÍ{]£ìjc¹ÅvÅrM'Rõ×ø+ŠnˆJ¤ÝŠKÖù5[ÌmBY¹EzJ4›wTÜ_fovÝ‹m×m+]îjÏ5—ê#NTùWzj‡ÖVÖLóøÛi_Š‚–Š[‚Á‰ä˜‹ ôØÑIáÃh±-èã¾Õ‰‘2ÉMèaôZ€NÆþ¤v éÀ:à@'dƒá È;ŒTó‘x8Þ;áÉPK_ûõ‘iBÓ– Q3<y ÿ?…kÐAh ¼œ…fÓô@ v€mH-”éëšvÈÚùí`6,CÆC8 …6ßї0fô9‹‘¡÷‘[˜…J!“âÐH–Lö%'þè»_CÚBŠEKàI`<ˆR ø&|¢‚q`,\Ö—ëùè?èB´ @«^ŸÑ¡Ó@ˆë¡¸I¨#$¸¤©‹r–­SúK¶ ¤’ñš2M»4ºB.™#M¯à‰+ „tÞ˜ü ,(Ó”Þ›Pn¦ uØFÆ6³ÜÄM)9P6‰ý8jmBü¿ªu»rfE?¥ÔÄ(Y+ËŠ„V*td+‡èÈ!¦TM´Œ.¨CN#%–<4àä¢,ª`P䃔âœî]…ŸÙædVExÞ8.÷òíñúÄ4ßXy$Ö3OçݲgkÝMåò¬A6|†ǸK¡Š’JßKßÊüÆ¢'ïNOÈVtQ(3Á5£?4÷ìv·:ý,å U¯í@ÍÓÆæ¥µû*ó\>®6÷ãšõ¯½ÙÍ­5W¬¿[Üîøê'¶½ÿ÷¸íÒâ ²#ê?•w¤ÛTV£ÈÂ7}ÖçèéêÑJDÙ¿âì¸m›§Þ¹Ë<_Õ+·©âT_õ:³Óp]±ÚøÃôÃè§ÉÖøé!½ÉlÙVHBs-é‰ÅešJÝRS»^®»)¿*ÙRÁÓ ´°©Ìy©vºó„ó™s¤s­ý½ã çCÍÓwU~µÞ]ìj‡4”9n˜Õ%ÊÍš‡ÞÙ`á‘ó›c–Ç]HdÇŽy bÍê!)o(ç°õXIFZCžJ:ˆù!y`8 F ~@6BD(ȯˆ¤!½È@ÔP$(„ïÃCVh ú¡ =H²éBî#ƒÑ•ˆMFÞ÷ñæ5Ü/†ƒð:øŒ€6Àeð@¤6B¿@߈éàap"$/¨ -Cžº‘˨ 5a+ЗØ{0>‹•c òÒZì6ö{Š=„ +I?hnò+¸ <þ 'ÂÃÑ÷h¿>ˉBÙð$蟻4êRÌ£rÕírgX$>'H•Ä1EõÍ(ȘRV\Ž܉¡â¡Î˜]!g©o"xœ€ð\ŒM8 #‹óyg„3¥víiÅ‚ÛO¼mœìŬë¬')Ú+B&£ŠTËuþíšál²?¨›^;ÙvÞvÀ)w̵MÚ{†éV£+ÖÆU¤‰ü#ÙE¼âS²™M˜#Ÿm¸h Ѧ«æ-ÚY•¾‚WüÕ‚¥º»õƒ_E.¡ÂÔ‘”ŸXy!õ,²\ ‚×࿑ٌí¡&¶ŠüèOz¼î‚³a+4MFÞC!ðï¨íBØxlºea>Øø¼Þù‚K¹ÄãÄZp3½)õp] {)Îä÷J/è»”óøpÑøbJöõø¸™‘Bΰl¬–àbü<È }&^ÃÃhÅ”MÐì>¼>éXÑÑl8'T<] V¬p—{²Â˜ „;m»t~û0KÄÄâq†oº„üd.šüœœL¦õF©ã—rK¢ ‰—òî­(ûT´ ½7óâ/á’¸£x©·ó‹·fXbœK9ë•ìsÝ5N{}˜é„¤‹¬lº($4lpäò´îrº¾°îûX·¢æ ,8Ef4p-âï¶”†Cæâòò¤‰‘ÇC¼!“c[RÿI .ÞdPx&{¶þlze£Û-¾’ú Ä.aÜ`E¤™s?—ì½ý©ý¤žQñ{áPepMšö¨`nI¸hšªXƒófq™!Í Ùë3Ëh>ÀW|q²¥¤'CѾ$=¯Œ¢ô“G”|K¬‰™Íyz‡þ.XH¦Gì~ìo%¯Í½©®0ß±vÚ17äâJq­¿èÌs.uªûZo7±5oÅ•‚ÅúÇ.çOÇ:×2;É[¹Ö€»ÇU«!y#?§8®ýË6Ôó¯ökõÔòýåöÌ‘…Û‹×ðþ)`H“L á7³Ÿé›é–IªY¨ž­|§œ!¡}h9©ž(‡4뵈žmõ³5³«:J¢ÒçÕ­â •_dCõ'-Vetùç²mÒZƒ±ŸºU4WšÏ?P²H3Ìz@=“7+çp$£Ýa9b?b[¦,ô‘îªåÖw:bF44ÛÖ#5õg5›Ìöz½g“gw[K]Cwc“æ¿¡ðhÁÆÌ‹Ü–¿¢»¢ï²®cKè e 9|~Œ®@~ÃÛ¡5hÚƒÎ"£ü÷ %IÆð×X ~ƒjA¸È"AÊüúþc¹š¢§Œíãæù4t†tŠ…7Bjð¸Ú§A yÐ9¨üžO†·!¿ÃÃà\pq< ‡Al‡“!Ì¿A ø+tÚ‚tBc Z‡•’§`yè ŠŸ‡ÄÂH+òzú@Ãû˜{ަ°$©!Ñˉëh'гŒÀ€Ê„JÁ}àPÈv€ÔI‘ðH4#¡ÿ"›Ñ}h¼.ƒçëàw¤Z’€gÌÛ"%k•·*ލµ7e]…ï2BòÞ¤·3Ò&Q.+@1yf8Ävbt`5dÂ\˜ "I¬ÀáÄÃÁ¥i‹Š‰¹¦ÒZŽìzIZ.;΋üî6áW‚ª?94ºL$¬½¨^“ Î%¼†Áä'öŠ:…9(TÂH´åd&÷RA´»‘ÚxK¦9;.{šx±áoío$O‘ìW4B2Z×á|Кձ̳M5?绎þ’¾6*#}ky´î^Í™úYn­K®e—ΔÆîcß6d¿.-È>Á=>)üGΟ M°¤ô¯Xf¹Õöªew·w’WoÁ«›³~†ðB 1§3fäŠ2Wä‰Ë>Y• pVæ–ØÑå6ãq“G¨}´÷ãÚê;ÒT¬$êÖŸÁTJ :1ôMé7m‚ìrâ¦Ðôô6ùAÛ¶šnÍ3Qe“ý{v_N›NŠ?Ff¢ÿ¡“°^¼—ÚIk£@¨›ˆ€Èp,Û@Ma¤cmÔSäbœFù‹‡‘áp'LDÃr *„ h ÁÛQ6?…ö’–ëàñð9HÜÇa2$O€\° Lk ä§Ã'Á¨?t¸MtG~">»á{1¡Aà/ð-’CàsR?h<Øv¢K˜™Å¯Ð÷»¿ó¯Eó y`K_²þ u€çwðJ8º ô\ AeÐ_ð7$]€$ŸÁƒ°jüíƒYàVÈ‚a ‰™Y]´ªä;ÿ¡¸G>AÆSýa{W1't}< ,FKÑk¡ª¸×aÐHh>ˆö}6þtõ½ä0‹‘6F`Úï28DúoÂÃEOâáK~— ¥Vœ7æ,ÝMn‰ÚÃÿ)eee‘ãQYÈö5æJ7ÚD–³¶³ýB–†d2 É€HàaXhìgY´m¬ö§l—æ–y{ÍÕ¦ÂEiÉùmå°u“ÛBÚ67N0LåSgEÝÙ‘ÖX5ÑXj·x°ÆÏN¡zsÙÊÌ ÑIýOô)æ>lÎc£ñäÄú´—Û+ù†5nrSS³«U×aóÞ3>ç NÓùÚ¢óEjÁÑd~iŽ5AÀ:AA€j‰ñµi™¹·vUó‚CŽÎ—ò™qÛ‚t‘îËXKÌŽ¸÷¯ECds3Ô ËËë̆ãÖÛÓV'l(ŽW>ÒþB£{)Û³v*êLHm«½Ë¹ÙYP7Ìü¯ögewž$ëh*£fXm„u…)5ò ÒŠz?‡¬æ™e‹¡M?Y÷P[«¯mÐôÓ>P½Ó/·¬5]ªýÕÁ¬;­Û,¾)‰¶ð~d. õá6ÕÔ˜6™µÆ0]—o¿Pï´s­?«{ùk+K”•ê4ͯÖfk’*P:TYU(ﯺ%qKÉp…~™ÍX{Û²ÓP+ æÏ)w •öªbÑeI³ø—Êùy#³Sø*yšÌ·b¿×ï0Uj+„ƒE«¼!ÒùÐZm#¶®®=«m¯|Z,”&Y½ŽvÇYÏ:÷ou›ÌC*º²=ÙÍ&“AYŸ»5«>˜N "¿Æ½LSÍô KÛB~ OÃÛq+.eâAm´Í47vcañøTêZúcÚ9ìzNC{°\œCJ™Gþƒú„~Ž‚0SïaÕ¨î†æ!ï BäCcáaˆv½°q#ètºû¡øX°”@m /¶þ V÷‰I§I§‰”€ï»Ã ~þ’À^ ˜ ò€9àJp 4õ±ºz .£¼ØÐ-ߦh%^MÌšÁõPŸÿBwA2<¾q çà°Hº±«èjô>Žå“âÃщÈ$«/©ÏR«É/Q›IÙÀq%OªÏ}!ûÞøøvÊéÝÊÙ¹…ìÀVh2}.ý*¹‹1?6*º‹ÞM5Po°¼±«Âu¬ŠßÆ›R)zøábé©¢ÞŸYS™»q?&ÈDCAz'¾íÇœ<1áÏvúú(¿¨v6̹ËýÁ ߥßd­ ¾‹: ‰ýP4n‹Ý$õ±ôÑ‘á‹u´ó±eš”TäT•†K9Öÿ<3]œGê>U/Îm‰«f¯L*¾¨÷Ô7y*¼7=»­þ’}oÙÿ¡Ÿ°xz…õ‘š†Obe§› /Ô͵p=r_j¢µkýédaVqÅ=–GV_á°”Cñ¤Ê;úi•üxòUêÖÎŒ<µ|ƒIf^Z7Ëë{¤á KåC¤<Œ™ø"v ÷—„™ø‡ø{ üóÒ¤H}\ã4圹m9ßÊ4¢îª6q¯8î—šR¾P̆ٯ;¹®–šMª)¿t\úrê*ì D³ºLýÌ+Íýô#ª¢D7y6¥õEk˜®Çt°æo݃AûUÇUÿT~Ôçh¸f–ÙGý¢z˜ú¾º°*‚ïÌ´Å?ÉHª~¯Ä5 êdÕNímãfkcM¨±ŸlCÅQÑRM²5\·Ò̹Òñ-ÙnY¦bL5‰Ty_¦SyuÓÌ ë¾šS¸,¥Ò+œ!‚Åý+ƒÅ±•Âê òùåsMñáyßÙæHÉGù1ÜäÖ=PqUvÃ+‹Å£ÿÛ\^Û®Û -—-åý&êPŸµ^5­³rêÖ#ãŒ%MþRùÃAûg££ÕüVYÁÛ”ÀØŠµ™¬Q¡CBÄŒ7´²’ò‚ÖA9‰o¤¬¥‹¨UØ X‚ÏÇþFÖàÁh7r}‹àäíä ¸˜|rf§ES…d£“¢ÁaM¨IF¯#ñxòÞ„ü¼E*21*’‡-ÿ…&ÀßÐGP48 z€›@"(î㧇¸˜8™0ˆp> "`9á²ÿ@Ü_ï;‚èƒ{ñlø<)œ }ß,hÔ®§CWI׈r8°øGÐ ë 0hzß™© ƒ¨oBÏ€p ä–Áñp áU˜-Fg£#ÿƒ› %|OQ37Ñ|ðMp PúG6IJùs•»¼Ç/<2ªã?²šKî—§Ç)CÞ²âØYìs¬½ŒÍ 9+˜]ÿ$ᥠ\ÄžQ`ýUÀý s]É™Ë5máà„#ø PÕçà4<œÜùF…y3¢’¼ŒÓd+YÏa†Å­Žü‚ÜEŸÓ_Sû“}QeŸ+Oú×B”™ùóýĦ_]ï×¾’-æûWTK} yöÓæKÚ]ú妯f_ýµÊÉY#â·æP%#¡þªû“‡Õ0´¶µºJý#¹˜ÒCÿ‡‘äG?Ï*Oñ–|THÓuÿ˜þ±Œv[½-Í´ÆR»¿qTÕjþ3•ÚÀÌ^Ap‚)VÄý»üYâ” 3O•â.+¡ü¡¬6¤z|öɬ{²»¹ÎÔÆ4FÎÀ ½¬D®ûÅ„™‡9– ž›ž£ª)eEÒ ‹Þm¾iÜ¢n•.‘—>¬¾§6&Ø‚k®¨¶U”IÒªÂ0–„`\£èê_×Â5þ¶‚:š6T›,Öõæ¿LÃ2ÃC˜±Îf;`áj âG¢ ŠhU¯z«þ­±H}E.²àõ— JÕlåbyŽª˜%N•åµ²ÿ¤ÉZž¥ÙšÚwƒT™,?©Î2ÅÛr,_sŒcLý-ˆÁªl©êTî5´ ¬-°¼2VèÏhãÁ\^€`›"½/µð”ÂlÙ|É*ѵ‚¤¬ŸŠÑ†Ja—â±6ËÒ¦+Õ¥èö÷èªw‹¿èpË`Ë«šÚ-Ò¤²•-jT9Ïp®®ýàú“]µ£•þª†ª¶ûØeukG=7Í=y 2½áÏ™vÚòòD–88Ÿå )é¦;éZÚ³ Õ´xÊròPt5î‹ÂʰDò‚¾n÷ßGyHQSÏâ:ô:ZFùÌXJ)à ð¥xß*®$›Éã±xYŠ—c…} c‡Á§ú’j;”ÝÚˆùÄ£^ ƒØH úýÜ~]á» 1Ä^¢Õï÷€™»œƒ£ðmµA (£/9Ÿ@ã€ã¸ê?À@*Pn„ ÀÐ>nþ…b¡`ÉKz „€AÐ èXÜßõuÉ ÈXß×0GÃÀa}úžŒóƒ”èJh pP€9/²"þqöeSÔ‘¹¶Ù‚§?"÷UŒÖ&®ˆ\“²5w@<’õ‡c@LqúèÒ_sÚâƒ{Ìñ£ãO3:ýƒü{‚HéÞR{~kjWÎÍÔ ìU”ôÒùçhàí1—?D’9ð<¤ŠJá8à;Ô„oÆTðwä2%…ŽaoI~÷ü'’iŒáâœÕò¿kœž3îqÚ-B_á1½Ú.Û­úS1V!Sº!Æsš;Õo g¦…ñij®Öï°Ÿst8\Ú™ÆôW+m9«,´‡ÍàÀ©ä¬5™QYÃʸ‚q€óO€†õŽùNU\Xù©jÊd&f_Í*ÖwgÔF)î”eDÃÔäè/Ù•¼ëâÃ2º:Æp]Ç“¬nVQ×hËj5ÍêhîÐîmÙKìØÚÁocx¯Û"Lë,¿»áÖ¨=äÎ÷$Ó CNß?ï4¶wêc*ô\7빆â bdç† «‰Êõ|qŽs]r}ðhkæk1mº¡G hcµ»Ôg»ôZ»ÐýoŸkóÅ‹¥SM'Í ý-? +”嫬KÝÏ\¯êBmí¶U&ŽØWðH‘ û¢´ÈK•ٹ嗚˭)-/äW+„¢7š~f¡å‹Ícïqü¨Ïq¤ÔøšÖ ޤÈ=¯~¼ñ³.Cß©æŠSò.gú >(‡ófçä×ÕVÌ)˜Æ/ž)ÛU=V” iõÔì´^4†™ÆŠüàÊᦓfÿu~o…NÂçrËDOUúdkAÝNA»Àf8Ðè|hÃVS mŒë“Sì8§Ý¡¬¯)kÈŽO `e³Æ1gŸ`5†üÜEM¡ÜÁ«±§èEÔ_HHVPîÐ'Ð÷÷ÍÓjêV*ŸN;‹½AÍ”Ñäs”r)^„_Çv`»qšD´ºú㉉$`#Õ÷¶æx~[{ÉîÀ<ÿÿ@c +ph".óëö[0Œh— "XMFÀ+gð'x0r­¯µ}WBð@æƒ& A¾0 Þ/èÛÕ¯†W@zÒK ©ÂÑÀ¶>3%Ãxh ¥‘8¤ÉÀtè5ÌGs ¨ð¯“ˆ}d¾ÄNÐdz—döªý,Λó =5ô»%51ÏAâ>|>š‹–‹Ö‹AU./A­a$ÕoS>‰Žç‰¾õ!bR¤‰D$oÀ÷‹‰<ÿ<8%ü û¹|(â@&åbÊCö‚ yÄ–O˜–ý”UÇֳ嬅}–RF{…4aÊ>âöQ4í^ÐÆ” K4:-‚vq•¶Ü…ó±Uèètê‹ dºš 7"o!˜0ÏïK@L€;ÐèðÏò0”0‡ðp0È_GøJÈ l Œ î TZû ÅDâv`‡‚G"nL…ÿ‡þ‰âè5d<Ò†öB!>dƒP¤…΀L„G¡vòqŠÒÛ‡ Á0@÷ûR­šˆ¸` Ô n†žC± ´@Hx0Ô,2 @ öŽÖÄžÈas*O7\ùMÚ¦ êÇ03ßÓo1ð˜O‘ÆUú&5ø¯à¹¡>¡î¸]9OÊ•gøFŸb'¤M§.ßy8"U^d©\ˆÊ Î'×Òÿˆèâx"ƒY]'àÿgx>¬#¾ö?xÈ©0ºFúp;R‡¦R…5%:˜c‰‘§,,X]qB¥™¨ò©HÈʼšú-C–ë(dgd{ä›S·ÉÙÚO¦Ï鶺†=õ)º$ÁtÓò¾f²5Ë<ÆäcÚaÑ;V¸žš–*Õ½ÁžØºY³Ž7†÷² 9-9MWì«Z©¸—/Ì|›=/ÅUö­ê–Ä% QêC›¥ÕR`ÙfͲS݇\cpågÍÑ¿t•^ü^óC1©D•ö§@ a¨ñ²K¹e*¿¨^ëèö)𕇴óçk»Ýư;mR[‘MVÒ_;Cû¼z@Åõü ÉyQÅ܇9›’6‡tm »Ã"‡c. ¤]£&ÅоÐÜÌ`æÆP'cOÐà fzи ™ªp^ƒ2‘éˆa"¡Y ¹>:¡oÐí„7þ¥~s¢â'a!–€“½„s„;8°ŠpàC¼á‡– Àw (BÚH/<ëOm¡g2Ö„Ïßû:÷¹ëWvaއv”*ëÓZpÓaË9KëØÎyÁžDÀLƒþ@Œ ó"Þ†€¡ëÃ2B.!ˆóˆlÄù°ÈOÈ“á^d#"†ç‡w…ÐohPEC¿@¨ªØðvÌ9l^Ô¤¤€|'e6ÌE·Ó ý0 B€p7ü7z"xê‡ðxŒ³³ Þ¢½^]`ä„ÿ€°<þ þ«1c±³á[à/P8 ÀŸaþ|v£˜v Ó—“»ƒº’2²²ŽÞ@}˜ûgfRúö̽ÙÍŒ»¬¾”I«(ߨ{Ó6â¥TAÅ•!LFl:v9^ö9cúFò¢˜ê~èÀrd+¾‡v½Ì)k/GHÃR¸Áè|`LXÞwFÚcEš±#"“†²«“¯$K|ýg•ÔOaÙ¿³²ªÔé†XÓd¹DPÀ}œÂÇÖc¸=´»‰[Óèé2ʼnU<wTa CÉH-}¤øÍå´,örU}œK¾&#&¡–¥žÁ‡¥1²·RÚ/ò•om-£ëZêû|…Õm”¨J;Ý*´Tf)vUt”î—í6z­ ÷Ž¿À¼“5„û„îû°hòjÎÔ²A´4EùÐÚ{êÒŸ•ýC¥ŽjÍsö›XÝÛív¿Îçºç¾Q›äÒ9@WOÖ_Ü ®Ÿê¥Ù\–»!å\ê½ÈDü霟sîei]Ì› ±oNí+÷"÷Põýêfû9 Þ0Å`4ÿ`Zf*0»´mÒ#ò|ÃkÃ)e‹”/Ï3­p ùÚjgIšÌÉfŽ6H9E^¥©µœ­´"”bòƒ¡ÎfI´åÙ4/VÆ–Me/ãT‹è†Ž? eÒ¥¢'²ýBYå}IŸj´‚Ta-άVåO,䵕¯U.9 )‘™íøNæ5%B7_vµ„ÈþT>G/²,³ï´ãìíBgNÝíFAýxÏbË é‹+ÁñNf/2Ò¦òU7M1Zoë#-š=½"N}RÉªÐÆA]®ÉrÔ¾¡¶ÛVg pi}÷ëæx´6¾m‚ãg[¨þUåC^WQô}î@ÊÆŒ·Ó$) òòô¤Ò¤ÇIíÄåÄUDaw‚2z >¯Ç‡%îÀƒñÂí$¡%vyìÄHQDDÄ®ØòXT1Vwóo8/$?ö ±l˜>2b,ra8 aEƒácÂ"½È?ÑÖá‚F‚S ËpÔ‚#Õ`* òÁ/èèÑØþ¤•q'᳀̅C³¡Ù@0 C‰QÀ&ð9‰0Ào âBùÐN8Ò@,0<–£IÀ)pø˜D‚«¡ÿ oð(¸GÀ1p9VOúžÂ  )c©‰ÔêaúiöjöÌ£ìöêYêfò2WAëcMÈ*ˆ•¼ž5›¶$åõ¥t… )äî¡ïgBœ[¬!JmFod ²hß‹Ýkö  ;RûKö öÐ߇ßÞ}ô:ü)<SG>Œ¯ˆxùóä¯áàĤ̿²“Sê£æã6E«ÈÓ²‘iÅé_‹ å«MÖ$¸:í{ÕOrÆÃÌÑ(?~*ý¤¨Ôú¹îz£ vÀLÑñ¥ú‚éŒ÷^óƒ†sí³ºÛºƒ›ÿ°L®ÒS¹“¹Ï¸èÿà¥ôSx4+} #¤"ÃÖÓØæ¿Ð8º¹»îi‚l¦üº~¡Yhÿκ^ç”SpÕ \^É-~Ôˆ>¾M8“¹¿ð%÷u(ó5­MPê¨?4à<@ÿ–{™›]¹@Ð&;£>l^[ßU»ÂÖj6›wšýÆOF†¥¦Æà?Ö¼ÊÿOÍz²ðz–%7yƒžÈZÈÏ®ðP{ÁÉ3Ù¾{.¬k•ó‚õŠþ”z¾N¬Ë5:£«Kl«ÏT¯‘©~Ò5›ÒÕQÚ@âšß|*ÏrËÏ*‹n¤ì“°[¸WrAµÃâë=cZ¢"kæV“eµa¾¾\sCÞ--‹.Oá‘|”ÏÖ=Utrù ÇuåNcQ„פK¥Rþ 1ŽKʯ)õˆÏª¤Bt¾žšIŠH}ÀÅ*+-§T‡JÇçÝâTu¯òÍ­UÕl©…=…õ3º/wᛨƒF¨M4>Ö ÏÑ3p´{•v½ÜtRÙUü1M’Þ“K—E”ÄÛ4´=ªvã8óßæ­†Å7Ã,çµ5JcEžÄ¥DZôæµÊO"«à:ß]¶”ï¯úV¸39&¥3un¦"•™²+eeò,rqR¡?a1~ ÁŒLì#Œ&¬!’¸©§I011nbÂ÷‰¬Ø]±ÈèK„#DN ü\º'4>ìIØAˆØ¾1lb)ò²-ri ?úÀcÀX˜ ùÁÙÐýá~š…B|¨ýÕ ü„^¢©€eGm"áTìeŒ;íDM¾hð6Á@Ð ¦B8`)„‚¡_¡)”å@åÀDð¸ò@«áZðo0ZFBG1a˜ƒ_btî Ê;êJÀÖ²&²å-çd°‰¬¯ÌqŒZó%m#í UÌØ•;ÏÃkiSÙó²Âó˜Êvç±Um½n/_T—OÌ›Lù7Å…Íú°¯m"ä¶$õNòˆÄ“aMÛrwžüiõ¾ûhj\!/úÎSEŽü7âzêy ‚½¯roÁCüDFúIÕD3~;+P‘fm[T³Õj®$$wâ¢Ior0Iç‰÷9ßiÇz±þú†,ÇëKË 6CJÖ}«ÿØ>¶ãfÇï=Oi-öå;}–ï´_«žd¥m"¿£ì¦]¥…>¾±Íï>Øy©llšgÝ%èèív‡û÷êóý-í"ù™â˜‚Åy×"Ž"ªÐ#î²À¯%?ÐrñçvBA.œ:ƒäÜ?@mÌáC˜–ôåÏdK´¿hW² ÿ© åÇ”#´WŒáƹÚRU…–¯®QŸ‘άòW~¤¨@Óe}AZ¶=>ˆt¾æ¹c‚£Ç^afªžÉn«Pšå–ÉžFWã¡ gË´N6×Gšé*Uv£ßà~]×Û0Ú÷?ý.Dö¸òŠÐ$:'¯½a qükK4­5uêfè7éFj+Nåv É4Ô}§ 0Œ–TÙ‰¥TÞ"|Éã´E¹Ž²>‘U»ÖÀÑë5×”ÜR¸ð–h´êˆhsfÖiBeFZ¹JC²éÏJÞ–S¥ÓÕŽê:?Â╸“koxúÚvi©g} UQ$øTUU¹ƒ—>'s|áfI»e…s»\ž[OˆÉ>P!I?wªa}¯NgœgÊÕ×Iü%»ù#u£m%â¨?Ñòжc¬Å®Z&<Ï©:«œ`üQ1ßÚŸ|${ ùi–4ûP&”Þ2;õI:é1ɘt‡ä"Z‰zžC6&/¦1( Ž%NLXx*îBïŽè Ãùˆ5ÈÈ3ˆ=ˆÛ¡vÄ'Ä_È$9|%jz#¤OÙàð$z:@Ÿ@‹1:L0Þ®Fs±€…Bù‡½3k˜Æ‡˜·˜ìà°f~è ðuU‹R0|Átø14f€Ø $À´8~gÂ×àÐð1Ø Ò‡?*1îfüêìXš€J‹clæNú÷Ìͬô Œ+Œ…Ìöyƒ, ³Ÿ±Ÿ¶–îÉzILIë¤õ1†˜[…ßÕ\lgt­C¨ÂXC¤ôdcFuRNÄÄ“ôýéû_„ c§µyXcXèÞ{ΜzðXð Tº íÀè"f'UæD&úƒØxò5ÎÑ¢¯©, @üÈóQÏc<{*´ú»æ§V£µ]R×Gñ‰ç¬Nߟ6§âœ9Ì÷ÌGª¹l—8)Ž7†<=¢zZÓþ–=­ÑíÊ®ÝÔ®ÉÝ`ǰ¹¯ì‡ä“Ñåibú$JgÖÁ‚V]Œ¿¼]غ¬ýuëQG1Nð›f“;¤n»—é˜cž`!os÷eßᆠÓ Ž3^æá_•ôTª)S bÐÌ ì~СШ»œ„ÄW?çÇ÷²&VÝRè•LII•³ôN9BÚ#9Uùޱ?SUHRV;ÎÙÆêêtŸÍ ½ËþR?O0§p3ãfönËak§%ÈüLçW†©OêD†Ö²šPûb+ÎÒk™dçØ–†t•ƪg…s¤QÝfnPR$Èrª2… eoD›¥Í9Íýks‘)A)•/•Ì’LÓMR”C¾Ic}e9«žVšÍ;.3ÜŒ×x0m Ó/Vh2mï]T§ÛVM(ÈåÒ•—YIÙý¬¿ Â$7õl× W¾ù– TgGºn¹÷Iàï­'ÈùÂêBÜ>ûNugicùøŠñeŸ ¦çe·—~–˜%vš&”ž@ÆdÏ¥})ýG§Ý®¿` ·Žµ´š¬z«èï¼äüLQ*¯üföÊô.öqe·u«í‚r7¿·Œ/”)&?+‰…ç ¦É 4Ï\GS“1d{jR˜ò.ù)¹‘Ôÿ‘à#t$âvãgR#H}dBÒHòzü•¸)‰‹qãÁSaa¢ðäTÄŸ¢yyÉ/®B‡±?CðqÌ)Ì)è8|¼¥Ð{hQD~”ƒvÍà.àWT0š ÂÐxö_ì 8Ú )  ‚gA! ÙÃ×™˜|ìMø XÀ3 |ô¡·‚2H¡* ~†®ÁÝÐ H§áŒ Sé›Vú8æ,Æ':…¶‚r‹¶ŒÉ¦Ki oX!¬BÆ›a+Ñ—PÍ´óÌTÆ Êi …îd?,ÿÑö¦åhë—&·c”(€^‹?”PO—°\¼“cÓƒŠÞ*jÕKKR2€Åàsø<îräL, #!¤Ð3Bé¶œ\Õ§"OàFÆq’jI¹IÏ’Mvfžåhd>Û” º_«/:—[À s„œ±ÌAJ`‰K³ÊQ×é©­êÕÔÿîJ6þl‘û<  GýÑíË;³»Æt¬ïp´ lþ’üRärTNYF>)3%ªÂãjÖtõtfvüÕøwMˆ½Áiói}ÞôÂóÐu¼î_Š·šú ð]U Ÿêáý­uk3jv4¥ýI]èî8¹ï@pô*þvzq†$&}"¤'ö/ÐŽå¯å¾(}Á¼Ö™¼>c mã@ÖâôöŜԒz!¦ìmY â¬ö ª‡¬}¡Þ&ç+Ü:µ¹Æ|ÁxF»LýrØ6EYÇW7Uß´üiÚ`~oê6îTC¢â—†bï͆2çZÃeõ!ÁÚÂC…/+ÒeeƒŠ,Å}ÉGÁ-A—è£&PsR1K¢.æ;«@µD4÷²ªÁØâY÷Éçò˜•AòéÒ¡ª ü ÞWSY`0˜²Ím–Ù–:“4°`箸@U^©f}(Œ^–•o Ý€!G=Âv°6ÑñÒ"ôºü1?ù¼žï8ÏãºG¨DÇ_/Z&bT©(æÇó÷‰–iW¨,Â÷œ¦Ü¿(÷sçg—•‰»ôs­…®ñÕŸíO­zŪ²ç¥…UåfŤ2ýnSR¥eTkf¨¦Šoð—KÖ+{T(I ¨DªV£4CêùêFùZþæ"Z u<¥5¹ßH¼“REÆ'1âñqïñûñOð,b¾„AÊ µ¶'4'¨â ¸çàÞð¯¡_ÑH3r\xFxNx_øC Þ ýc ±Ð3ˆ ‡³e8ƒà"èèn ¶ Ö€ÛÀµ "í ØëÀ‡`´š7ÂðàC`èæƒO€ÕÀÔ½?‚G1͘Éð 0ÚŽ.&C‘p9üû[ä,L€‚~ˆZ…ý3;?2‹´>÷£q™I£·ÐcédÌÌa°êØö•<™Nšq¬q“i¯_füÇtÇcÝa¸ ™¢ÏÖëe›K–½+kRŸ²‹«ÃõúªþäÊ5E/Ktª±ÖöÖãÍîå¢Ý¢ÃêåV‘«$>o'˜¿J›")*Ú_±Ù~¯oéÎáLR^“²Ê3¸~1Ñ´exÿÅ<Å$ÓT]•øfIo1g{~}yTùü¹¥ë%Éò·B@ðP1ÃrEy]²PýÅî¶?09ª—44ú'{¹^ØsÚ‹©jtØ.êE*ö“|¦h±t®†l´¬TŒ($åî¡_edoH_N9YNWÖÙ܇ i:k¸ªÌæ}.<’&IŠËy|u¸v·§rj¹j’ØU9ZýLw^U«iÐÿnœ¤hž­¿ ž'8R¶·´´RÎ?SŒd`ÒZˆçÓ7e SŠ’Ù‰3H‡ ¥¤¥IñĤ"ˆ$Ï'ǧ%xâð˜á¹(%*|^ŠÞ³à-˜¹Ø1Ðbpãðær@à3(Άñ` X ÎÐðø7ø$†‰ …ÀSPþ‚>8Ðï€eÐ6è{¨\¡Àt£•Ã{-Ä@!*‡Â†™ýú L€N€¯8âÁ-p$î>ŽzÁ2ì˘Áèx\!öcôê”÷´¦¼LÎ]—ábîbŽfCyCìWœÅyó¬圂<^Þ6šõ/#‘f§¾¥ì¥»Y"ƪ83.õ0õ·B´WÙÏ»ûä¥YÝÐ;ä8HAŽ¿ž|»hV‰»2Zσ©Å‰§àÇØ»ä6.ClàfPq1ÑÀ‡cÇ~ˆß† '‰GŠ7³7Ò |WÅ– sÞ…´¯Q[#¸‘i©ÂB©"ÝÞßð¨ÍÑ~£Ý_G0æUÝ¢ÊSyŒ‘Çbw[|˜º¯õ¿;ClMÖóòç¢Rý ›®ö©Ûêú×Mòl³R$8» ã#v'}N¦Äq~liܹ¼LÉzC¿eY{Wû˜Ž¾¶/-·LoŠªâ½ÛÞØuÊ6X|Œ™!fþÕ2½îLÃrû+×çœ#8ëR#¯ÅÖÄ I§*ØMjŸ—›Fé/mÏŸŽÛ·/­Íé¾S øØüi•å:ÐB1iŒûÍ¡ÚÍ ©R¤².ôyùŠ|õuÞp­ö¥j£é½õoûT;Ýì4†j‡ ïs…q‚â/ÉퟃúǪà*¼B`T˜7É×T®É¯(œ,ÏRþ%ùŸ¥¤ÙD®ë¼høŸh%T͇ŒOd—¹búBRZ£û¢<,^\Ùh$9iö=ÊÂcâQÊ™šßY!“ãl—Á•׿éR­ºeÏsÒS3¯pDË ê˜E¼}âÒòMÅÊ,r•r¶ìU•XµØZi›e_ì9W·®VîºçÊvG¸'xÙͯØò“í°«}¤{aþh±l–äÏÎx“̾‘ݾ9Ï\R(ЙIº0m‡6CEÿWö¥h;w¤ˆ_QÚ)˜­¼e¿ìÊeâétUþ=IŽÙãžTŸ^{ɲÀ!œù>ûa„i•0GšK ­rw¡;ålÒh:ŠÁyÊ¡0òz“å´q’zÓ ×™ºþ–èvAëÇæ¹þßüÆæ…Mï–Æ…Ýøúl‘.ß,e›fï5ÎS=”˜7zï·Î0—ÓîP£Ë‡Qe…U’ß¼ß5e̤àX^äUð¿ÐÁà阜Ü<þ e»\+ÌoÑ^4*ÍF£Âˆ4nÕÞ[v—Úè=àQÖò}7}]uqž”]sÙóųÖgŒVŸÕ¿2ýg¹n|­^,+ѯùfá˜îÙê·ª ÊC¥ýŒ‰y\þNÝ!K©ÑîZQOhZìj<íØ#&òT1åÛNßÈ‚ª®ð5{­¡¦u^õ:u–Y]}ÙÒ¤Ë0\2ÝÕÇFŒ¦w¶]NU4ë0;_ˆ´mp¤ÆuPŠØïʪ¢´Ý,9WÑͨø ?`øÙ¦Òß7γ=¬Yb›îÞTC²V;žº°Î«¶³V¼k¥ÏçF¹²þlî1î6ÒW­.31Îä®Ê™@;“–ÉJ GÉlÊ~U¶ê‘öš¾_•S•Á3Iiâ?Šü±ºÿlœ¥öIB‰û¯¶¿6ÜY×0»Á[y{\Õ–*ý_úýã.Ë€-ÄúÍpD=AÆ”HËÆ«‹N3FSúðc¢c}‘{cýñ™ä’„­ ©„}„^Ÿ”˜Œ_JÐâ£È™øš¸šèÖˆ¸fì"ìeL'Fˆ‡GÓãÇââB"^‚h"Œ‚=ð ì,#€Þ `4Ú?ÌØB¨ Ü ½i`8tšŸ‚Ëïh€@x/L‚ ‚c!æ0_…sàS˜§‘SqKÁWèרPpÂpç=ÅåD·g<£Îa?âô²v2îÐfЃsƒ(Ñt7ýfíf_Ê[Å_p©•÷óNÚ£8sÔþøãÇTÉ3È$|8¾ÿ7~=>!&PD¿$i1Û_ËĹ¸Ì ŸŸ\•_Ù̹FZ1/bN_ޝ§ñß+gW–d/‰ºˆIÁàØÜÛœ­²]FÁ¡ŸjýŲEÝW°€ÆÚáqQOIM4Qñ,¹×Ñç•×m¨íÒ ¸£2SH¢udqi;PSâôçòÞ‘gBÖÈlj̡«nTñ”ƒÒ«3ò_S{sOsúÊ&ÊnYúíùÎ<°0…_uB¥²fû–Ö³Z†šBý¿6¾ª_éÔÏoÉõh¥w FËc-°n«ê’t¶è¸JcüŸöqybÉVåmëïÕW\_]·pýùú-êYôˆ„«ÀbÌ1ø´ ç%Ü`ß*ø“‡|,Q¢Ôéºm¯Æ¦E«GkšÑNtC»OSë¬=æëöÅ{÷Öæ×2|>L}NsFûl×+•Tóͤ°“lMö³þœí'‡×‰rÕ®tÄÉØ%„ÒŽJºü?}™ïèõë±^^£qCC²Ž&¼,ý »kß`ßfNÒ½W5¨!VÏ­™QóÉ`6ðª‘>È>Í’j%Ø×{B½smÚ]êu¼K9ÿÿÿ ÖexS`ЬØQd+0¬ƒá §·JRI›Z­»7îr4çD›¦M½´e8ÃÝm8|¸|ü=×õ¼Ï=•%½ Yòž7.Uã5)kðYòþÒEbEÉï5ƺeº‘p”÷žÇŽ/³u¡‹°# Ñ`Jq†×;°¸ ޵ý…Ü¿ à{Ø{‘5U¯’ï,[_I)Vuµ*¸´³6¤š/ëÓTMŒi18Úiqë‹Lýà°ÏtW5´Vd˜‹ÿî¸6•—-«Ø…ûû?7ŽmÛ´Ígðñ½>ûÁÖƒàh o˲­Glð?Ö}Æiæ %¯òvɤâ1WÄ+ÅK…»…<Á^Žš}=)–µqIê¤{Iä„al»'vpl>#‚¡gÌ¡¿ ñb\1¿s6³G'8>3â(ˆx”ްž°„t„ºˆ:†r˜º… Sö“A"@2“#ÈJ5ENÙ@¥P"©›h?ÒSî“ÓÉCh¯Éñ$ñáD'¹€ö/­‰ú‘@Nò6P äíD?QM ’Ú(ù¤lÚ&îu¡7çS¶BZ#µK½’EïE|IAÎÈ\~ΚœÞìE¹3sKòs öçNÎé¦&…pÔ©UɇÓÌREÞˆ¼"þ.)%%ã×tfüä¸ôô~Õƒì}³´2ß²¦Q{iÛ“î 'foLÐ3¨§)w‰ ôóì“BQí2C½e”îNÎU¦Šøü”Af¬JÊ«dZ[€!@æô ŽÁ¦-¥1Yoâ~¤EÅyF®Tا§p´Aæ”üú%éßä#éÉ›e9–møkD ff5R„Q8qNÖqÍó}Ãbp1ÝÕ:M~xú(þ†’#ºzjû _i—Y6ä?O} ]!ÿÏHï¸4_n­êÕvÇ××p½%Ï¥œ“=¤z“~—jŸñþž‚ª¦›ËLUf>ø1 ÛàÁØg¤Ãê øñk•ý3ú B‹žuäIÛr¿UX+׉«_iÆhòUouÙ¦ÓzX=FµV½Ä8 ýÙ»´ ò ñöîðÞôÞj¸êEšg5í¯ÿàÖ›áÿdŒ·ŒD·âûZä&Pe®Gì¿9W.ÀÓ5fù5ýUÃ8ͰÀš„Ýhø¥)µá¨ð^ñÛìóÀÀzä²m;¾Ô#f4·- óZÄž€. Pd^þ‰ýY§BlµgDÃ* {®¿&KÙ¢Å3*ÞÛÂÁɲ(íFÛ6¿¯5À~°®¤è÷ÂIbr^ª¢ÇD«ìl†fXÃa©ÍÝðë¶Ä¡qî÷ö³¶#È6x7<©Aî{ {±ûöúzùeÍC«Ábx ßÇs(Sšy'"÷ÀpRîYõ@/*tØ{m7ô•u“[\“ƒºT¾K·ýäßݶ²éoÇ×êà¿Ú4³i±å ÄÇZç›wÖëmæ§Œ^‚óÀ« j³´0¡þàÏH¸y€þ›&]±\!ý%1-!1eRʼ™Ü‰­‰¹ Õ™h&’ôk¢‡}š33¦5æs"šp„Sw†³7æ •E‚ˆ}ÄM„mÄ#äSµUIOÿ‡ö#UIÑR¯Pè”sT}-m9Jÿ bÍúÞÝ4º’z>¶2šl&‹ÈeätêtÆBZ8õþ÷{€ÜM–%„4—( í$?£˜éåI­˜è«˜)™&ImÒEÒiz®"wE^svTΨœAÒÁÙ¶œŸr97¤+³˜¼c™‰~Þ´’Í5j¯á½&¢b‚ô‹ð“d°<µ"ýpñÓòf‚‹l¹ó†ñ‘4–v&•z;鳊ܟTI:I“'½eÈ[o›§˜ÿ(Ý}‰ø+é ¡žp$)» ÐYhÞm7ŒK„j«ð9m}Nb*oß›ý ÿUáêâ‰ÙËSë8nö†¤%i¯ùýªÞB¡ý꺪 ¤Ìð£ŒGÉ•yáêÓÖfŽ!C'Ð6(v—Ïâ{˜“¹…,s^;Ú¾§ÁÝôtK*²W82ñ)¿¼r²b¿¶ {Ñ·ÐÏTŠ D;QŸ _`¢ò´ýìûì¤ÛÚ”6¾û‚Ea‹12ÚNé¶ Øsà•¥Ï0Kcü„1Ý*p†æ¾ò7CtÖCo¯ðòÑë'xg7ìk–ø ]ÛñH›,¤–'ºbmn¾9Éb5¿ÎZ†[ÖYŸƒÝàä ô| õ +¬QòÀbú­Äþ ¼„îWξ¤jÞÐäri¯¨"Mœ,J^ÊkI 䜈Ï`O Ÿ£J)×IRÒ ÊÚ>Ê3j>UOýDH ¦…ÑßÑ„´;Œ z?ÚjÊEêlšŽ:Œê¦0î3Ö2SXŸbÖ0‰ŒSôÅŒ¿©¡ÔÇ”Jå%úÏ÷ì¢\¡b”ÄqQ£Rˆ›‰ó‰ÂF–—§áO‘LÍ®’¸EÅfIÉÉe®+{bvd6ž7I²”e¥ˆ/‹ÃD[…!Â@þþ Ñéb¹¶×:Ë:eã)ðògÒDA«Ä/Óf]ª¢a?tœo–˜z„L;»”oŽÛƼ@yø†*a³J·ƒz³±,4ù™MºM¢®D]#NÚPú§ñJpÚ÷Æ Öh.B0›æ§F&>Ìe†¥¹9:æ/ñ/6åiì7ÚÇè%¼ªôÙ§T'¡CæQùo(—Iþä‚oR ·öÃ̯tµU󪋿Åp™™Éí56§¬½±é 6XW]›%ôðÙyUùÿ«]…lä·œlßæiœU£Ç5ª\Šô¸*ùfÓ;[œŸÕ:&ê®YÈøm¯Î ¹ÖÀ¹†Z úfŠU+è.*©~§;§Ò†ãê3¶Ø{&¶Uø{âÑõðj[;<ÏäÕ^QuÉÆ*ãŒÍh»»¾×gõËü¼–Ѿ>ß=·Øya¨Š” S¬ÁÐï ž E†0è1’‚L²VAa òÞªÝSq ºÈTƒ0Q=^Œ{+ìK&GƒC^Z.›éi^™Š±\ïiÏ[üwç@Ï[ìOÔñM4õZ}'p ˜iD4wee5ÃuóŒkòó20î¡I:+§ªhtyBñ ò\¨d¬Œîr4ä\ οT´½X]5ÚXßíºãœç‚msH07ôM3Zã–m®›©x¢x¡\¬|…yZàVÓcËqk!Z¶Â·°·ˆ^o…g B$ Ä"‘3à~ën \öjªª´³´­À}lB}/¾Vª´(w˜^ã3={|}ÍM§ÜG<‡pÎÆö Ûa/ ‚£­ûô~ãCžþ„¡QŸfºhºT}–?¬“­áx,ò:¼6ÖÕÍ—ŒN¯LÚž¹-!$•œñŒóœWÀ×dxS y-ÉÜŒ¤ÍÜk‰}¼©käÝ„i =~šñ•5†Á¥ßb¬wÑW⒢☠X£§(FJ5b Þú.Ìë”ÝÔñ´ÇßH“ÑiôZÚFãm/õÕHí¡ùiêzje.±!*†pŒ ŽâE®'`Ÿ]’ve/Ëž)6ñ£jñq‘ôì[Ò‹’ÿ$sÄ©‚û©ÖfÚçô Y,áŒG¼Þ¤Ìc+ª-~ä®í7ŒŽ¿û—­áoÏúœ%Êœœ+ *9¨.5O¯û(`²CbDñDÎxöŤ’”ñ)‹"ŠC?æHOjžVoçÍ%}!Щ÷ý"é„ݤ›LNî õëÛT\‡¦Ù¶(. ‰ýb3¸ð§e^àüN\ö ü é8u EBeEç§±4[(wj–F? G× ¥È5t/Ö¡ý±vä³e„ñ’z{-G¶P½îv7{ê×Õ§úµ¶×Owu9ÈX‰)K¦ª¤óXW€k¡×–åÀ«¸÷bƒp ȵž¶†€!–.ó`ãUíBíà2`˜ã—-;˜¯Dþ†ns,¸2¼zµn9ö6䚔ƅÖ%Ð18Ú6\eNønÃh?kŠî¶i˜±À¬°TUÍNåJÞUçh…£%9G¥{ªnÊ÷–ñrŵ˜˜eyùOrÞç<•¼È)W‚¡PÌõÅsdz ÞÕܨºUøIZœ;½úöª~”×|Üwƒç|÷m(t-Äæ"7Àvk'øQB?¢ Ø8t¶e¼eðÐZi¯[®ý>†!&—õgÛ 4H·µæšÿäû ûÌS‰çzêìv>‡Z€}Ð)p<8X̓€*k›¹Ãü—u%IÿÁ” n„" cPü˜­?«Þªÿb¥#r›Ô°¯6 ($G”½VR#îKž¯çœàð}|EÖâÄvnïsòÀLaî|Ñätœu•t/îUbkü#Î ¶’#ŒÏIN¸È›ÿ2öVÌZæbFCM £-¥Ý¢ ¥†’jÉc(ï()T"9º‹f¤ ¡Éi"…n¤­¢>¤óY{XÖ~Ú,Òbay¤("&bOÄ«ˆÍÔÀTLT˜= ÷ºhhV-?.sQÖ6ño’—ââÍ¢,Qgæ²Ô­É¬”œT ‡dyŠc—³–Ç ¹«$Ëj%V÷×ËÀã¥×Òß§,M Ëžù!OQð–q œNvMRfÊÒÄã±SW¦4§®Ë˜œ !²ÃöäÉt±\œ(:)¤Ÿç>Šö‘B"cÉ[ÒŽ—«üS±ÐôŸQaíBWYú×&å^M MèI»»´˜› E†…N"dP’'™´¸¸‰IY¼êŒù!ÅNÁ ¾¸„¥Ü«“š…Ð3È …µ É¤ÒŒ®%âÖ„^ŒjNv©Ü¾IÃ[ã›ëˆi6æÖ–‚}6·ŸÑã!5ÿÒ±«uœ½Qû_Å¿¥g ü…:½;ŒÉuSËV×NÕnQïVWÊnî,s˜r`cÝˬw…A–ɶ|ûûgh‘¥Óˆ˜ìfÀì³FÀ4胹Ü<Ñ\l&"\¤\Yp}–ìle«ì7C³m´{r½c£ŽhÇ0» –ß®j¯=a–¡ë9|êEŽ Aððx|£íh0YÍ*‹Ý0Ç CZë^c„ƒôÕª#2¯¬^ñŸn©y$úÚž…õ7ž¿V¾*°ý°ßb´,3œÔ¾°üG‚#Ì¿XWÂól2Œ†Ìf 8øÜlqj5ÅŸù“³Õ5µ_ ÏdÏ(¹]ú .9“‘üP8(ÿzíR¢¤É_È´Ucó'”U)Òõ:à0ó9mÿ.NS]]Å‘ªi†£¦6£~â55ñ¼IX~Ël=… µU ‡¾§0Îv9а1‹«낆š‡›>jÏ+†«¢4 Ê•ê)št nÞnü±&¨’[µ­F^ס^ î‡ôØ%›:w‚fG|$w,¿Þ:~;E¶™ú”TœPk²\b’ŠM’ÉŒU¤>õel^ÊÙì<Ù!Spᙎ©ï’¥–N¯;*ø3ª6ü1á)iù8é(FÚÈ¢³-ŒwäjJ;·»à\mk…'¸cHÇ—¶š&xž`³M*ÖerhË6~{B.ì•‘Œ­-Ýõ exæÅØ)”ß(ú{a³ù¾7º£®=´i:$P8ªžVTýV9VÇÂÖ¡•— 4Õm¾A¯S¼5ý¥øLõE]QqöõÛ™žã¾)m M§ƒ=ðÌŠ§Øç»Þ9¾ab|8¾ÂlÈ@0ÅRj)±¶šæPþwd«MÝÊΚh=Ûva{ÁDÅ媞ºlK:žè¸äü‚U|¿ÒÛ„ðð&´¡?f°[­Ol£…é°~ Ùk¨Õä*Wבê2=Фö=Ñ-uv!Ôô̆º *€i~4̇*ð?Kf~¢y-4 IöÚXöóÐ=¦ UÛeÊæ•תv)Ë*(99åãÔ?èÉnåŒJ™˜g/ªùײ[Žõ ]ê¼jaqpågã(ËQëz|> ý ©EÍKµúŸAù¡Æh|k;gØË°@[¡5º¾w­YâX±í¾Ë=´!ß;?îÔ j#*?U¼+žVb+aWéè€É¯Ü¥¬½­ý]'7j@\=À¾ÚÎc{P%Ÿ-“ÈJJ­ºŸlK«7áð-D‰†v?ƒdä„«ÇOh;ÚÂw]ÑÍ/‹ÈY•m)Ÿ¯­A™®F7×™nS#‹ñûî!Ž0bùÁ$Óñª-e›ò/—$ÉV›"€å°úp-­†¬d¹bX)»’ÏͶH¶&—Ç<`eÐÅñÙ‰|î¯Üã좸Q1j=€þ'ÍFH©¿Ò¾P‚ÉG‰YÔþŒ>–õžÑÄ8ÉØÌZ7(ÚC¥"…»#‡D¾ §G4&}äCäØ˜%É©YB>ß•ÉÞϾ-Ý.œ%ˆËüš±E +Ä7%ºœáb_?•|3i(·ŒŨ¦ˆSä°&7üÖ¼ÂY¥‹,}’ÝO¼E´^”–ä'EçPzXcøá ^g]íU‚9)9n`ÌÖ¸RÖxê‚„MvR^I¡ƒ rJ#ñTÄ£ˆIF9f»¾Ý-ÿ¶½î|Þu¡cF+ÞU¸‹ÑæÙÌ$Þ-šZ5ךÚZÝý±õGàyef®8ÉÁ\–Á(!kÍžSþÎV_s‡ã¡i^ÕÞ¼âüœ’FÅHŒEY2å¿ÕR•DÍ,U^YVΰ²WåѺó†\âùüM«[Ov.o;Ñòl÷ï;>6x§ûnø%Íw}5¾Äú‹ž2ç1ûu{VgÄ*ìÇ]n× Øö½1•u@å%σþ‡MwÜ7–ÔÝQöÙ>úo÷dt¦º¹rEøà‰é¥Ai\©¿flœ†/0)EòçÆ³à=K§!Wª_fÕáy]¢^¬£Üwû`öáv4¶C_àoPŸg•¯Çõ'Úgvšr­åðRû9;ùÙL’M¬©ÐL0Wi{•¾ZnCÒ­½áÉæÝEíÂÔŒ•¹š‚¸Â'ò^Ë2ü‘í'óyùÛ\~Îgí{@ЬÃߨÃìK+ppÀjA>¸¢¢£Qú“={†N±l‚êÐ[–‚ž³íÀ.âÓ÷™ÆL«¯×lq—­/td}Ì7žË¢—½ÑÊí·01rZð]*Àv8ŽFöÙ»z§Ô§Ù¶A¹5Ýêåñ Å\h™mrásH*ö9)Àpô÷ç¶Ú^t浌„eòìâ­‚Œ‡¹™Êïšv?wü€Ÿ@[œ[kn[sk¼ŸÚŒy ç#l’}L}¼·ß¶Å£!(‚[½®7 =ærÓZk´BR´WJJžÉ LoM!$_ä6&ÿ—´0á GSÆÜÇ袟`ÀÑUÑû¯™Vf/ó«=æDôìè)±”øqU±~öªÄCÌ@ruxýÆÊ ”u7Ö…Í %n„6+"òhå\·x°Ä.(ÈÚ%° e¦-NœeÆ ¸’rQÿ—”O)Ãyí‰ð®§AI«™5ôaš*ô±H ƒì'Íå~i²˜Ç¿Â>M¾I®¥½ˆf&% ánJÄ›É9ÀÖ&‹[Iþ)|1á0yû^ñ ÄØ¬ò 5¯®”p—8T„¶žä$mŠQºØP¤ƒSÕÏJ×ç·ˆ?q#h}‘ÂRò˜&úQr)˜Â£D‘NGØ9;ò_ҳė5Óšš:÷·˜šR[:ÿîjè,êÜ×4 ­6¾Ìo ? Žšcl+¬·Á³>A{pK1ª4UåÒREIwyâ×Êmju¯B×Y¸›IcØ‹ Xú4{}}bÓ]´Jv¥Ö§X¤ Ö µàWHcßï.¨ê kÈkˆméœÜVØLþûÆñ×}©m|ƒý kºú:÷wdµ<õ%4È|.ï ¯Å7¦)¹y{stË¿þ‹¾ 7èšìÀVcoÌLs7ÎkÎtÒu h{èž!3\×ÛñIØ8àšúWõ$e¦j‚a¤õWô̳Ëu/‹ÿ*=iøÅ1ÏQ [H¶XΡ!Ü3Ûõ¶ …ï ›ìl,ùb]Œ+·ï¬óƨ¶¶…¶5[l—ÀNc‘–U[¬€àÎ øŠY®à-ÎýÅøÖÿ¢ã®íU”÷U¢ªì®U;ò°¢í|$Q œE MsŒÀBíG¼}¯É`¨´Ä*.cÞˆŸrÝu‰l톳ZÔ2Ã6Ð~ 'b¥Î÷÷ï?¾uÍÛš#ÛöC£j­åÒCêÛ‡¼ä̇Óf÷ù†õØí þñ]M¶|›]è2ÛßÚò±_ ÿ”³”»Ë¨ÿ03NÑMÕ¾2N=h0öÚ×£gwkWDZ.SÇŸ¶K¦aµG¥íÉ_Ùûùiª}ØÇSÛ'$á´z(;½þÍo›o4å6ò|ʆþõ&l*"‚)ÐUt‡óhý(ŸÁùýŒÒ¯iàK­ôP;ïlÞ£œ[ysKææ÷òƒ92öyN2g›ÁÌ>›Sw„½Šs0îy\{ [÷ {5Œëw…sö¿È¹›ÔëÐÕëVÍ]{dÝŒµK74oz¶¾}ƒ¸:ù«8SbÓ2þJÎÈÊ<Ÿ¹6ë±è«àTFGƉ.‹ÅãÜì‚83Œ­žšº·DodÛºƒ]}^Ô!2¿­ ,Èʨ`Ofÿ7‹QHßMM˜ÃÍO“ žfJÒÒWÄN…뢆ŸE© ùŸÌ•®gžöºTǾDŽ ûhuTÈ'Ô½4m.êꕇKB$a),ÆÊ'&‡£žOyÙqŠG.!uÔëÈ JM¬µìÇÆ¾¦‘öD»½~ËÔöëmKºÞw­lûæîÓ,Çë3”òt,Û}ÕÛNz/7'4.r É²…AD•ÄnµàM].¦mnÝOÌk)ÌKÒdÕ0óõu†{¹º¹Uòñšfºûª™·¢aFÓ¢†ýõ«Ü3ëo6ûB=Kã-•µ5´4ÒÚ3¶ŒêNéþÔÕrÅŸæï×¼©i¦ÿ_¿¥ùASTÇœî–m{Ú·¥4Z|ÿ€qÐwÝÎß»šõËtìEóæ¶ÓõKìÑŽýx¬ý Ðcœ§KP]“MP4-@v¡—4o JÿËÑím:Öç}é~Šÿ…¬µ¬³Ì·ÎD‹Q0YoëPs ý: îPï•^Íìªv¿AĦŒœï=hÂlÀTÃDåãoî®Æpû<3°1ò!è—¶úÆ Wi à£hUÉêUÅW…‡ùÌòëȯø&swÁ’ôþ¢ÅÙl•øŠÌ°OC·[­¿@±.¡ç ï“w¬÷8˜ž-ØYð¶R¦ž÷·ïrDà£ì×_î³îÞª†õ#=Yö­fQÑÝò¢j–âNùËœ…Ò\±²r§îñ÷WÕXÕÓ‘6x'Ô‰ŒÇËì'íÂï+Äv>4õ*ÏkrMýÍ·Lç´níÓvK-¦"aJ䬨1ôƒŒÒÔhæñ¢ªÒËEÝ%ME±k¼3½×û´ù‚¯%¨ŽÜh‰mÑéųlýÐ<#2Âv¦ªÿ$æ\ª×´SŠ*ñ§•&Ðñ°”ðWaûº}ÖµE͉{:™Vòmjø/ñ.e*LjŸJ†±Hežm™ÜêÑVÜÆW; cÊb3ÞæL) í©nôâ„q.5Џ°¥ßØ#Q__;Ø|¡ÌYíG,¨º[žÎ:‘3>Êš—QÃù~¬ÝÞR§n»±‹Ù;¹?¨R7©WÆIfŽÑ`8§_£ VÀöà]øÜxBõèN¹m©]6Ý£ö>í.ûeºóJzS˜©f®bÏ8‘þ1Ë&²^0‘„¹)‰ñç"ÎÄ­ ûÓs‚ëâí•.}[nnµqq޼ȹÄÙÉå™ÛJï-Þý\hpHGÄüØ1á‘“d í-ã\JwJj¨ÆËß­Ðý¸Ï=sw¹3’•—3;ÊŒÏH˱æÔd'TWÉRùZy÷T¡š>”Ô–¬Mº™jÌÕæMfœI]¼5Žg÷Õ,‰·õ v‹ñx`ªˆ·ÉÛÅÿ¬POk~G?@ó¯ ±Â|SÎÖ4ñ§Uö–›¢:ëÓm…[¹) Jü7Ö1ZCKÙ’ýGîÑÔ[!qÁgB J²¤ ;¥n’M¢›Àv o·.mhe¶\Ð&I•—sÛrJÎ4Ln˜R"g$e½ÊßW½Læ¬ $즢ø 9e™ÞþÕúÌÊÕì™K§dý›3µò]Ó!ij«]D¸ üêŽs‰þ‘`  2 ú‹‘•˜\#4}ÓÅâ~˜‡‚É—4=åô*Çâ«È2mŽEÕ>¶=¤íHKPë·¶C­um«Û5-¶ËÓUC–Ù©Uךߡ0†kﯣψËzÒ²\ß/;"%JfN`9ØY:ñN޽ògp2tGF(›xLîiÞL¤Õì`=m,4WšOšHª9 ˜”{•sAGà|û‡º¦õTyàLôyÇ_mS4ÛÔ:xº¾ áµG¨½ d±VŸd û +/½"þ&å+baצâÌ”ä©ôé¹âÚ}¬ºü¦œÇMŽr?¬zr–2#¾J[W]UXv’«–g6/{£› ×t¿˜¦ת‡Èb?úJ)õåË’‘¤ñ¡4x¤Aeø¯D?~·‡KͲ¨ö Joˆþn¾É©j¬jÔ5¶ðÈ>ÃJT…ÝÓ¼Ôõµp:ƒ\MÉ D4e(0]™-¬“Ã0…r1ÌÇWªÓ‰Ý„EñÄ„ oF¾âX.Ç˧qƒ›kdlp>V©KÐ*µë&hþ£D*7œÛBhÊÆ·“öT+Ù@<Äoã D ©=¨™–ÚÖífY{sçZ£ÚOÍ¢Æá“ÑR0Hq‰WZGkêÌå¿áåð}y;ê(V2 g­9Zû†•_y½Pœ§Ì¥èTÔ´ˆ ¿Q»B\Ò\\\¾lÕm±ÙüÛÖ?¶LÙì®ó\é]èïìÿÈ+ÍïaÂwFnŠLŠù3žŸç^ø?ïÿy®÷jñJóØíù8èYìÞŒŒìåJ¦9}8e[ì0mað‚¸ŽÆeª\4¬ñ!Ë\ö&µ‘þ5Î41£ÓméÑq[³—ð.âqê;@"ûSXæ™åþÙÃÎÍÁýs ˜Ù¿'0ï§”û¡ŽÁU¡?§¾,Î/ßTš{¨éiÿ!Û}ÿZ%à$–9Õ^•»"¡3="7?³!á-N»š¾*.­hºÄ‚à>¤˜úÅ<«Õ¥#µ·H L¹ºîUýWÅK‚|¨ñÌñKáÇ5$]ˆ'²Xµ;Šæ2ÏU‡"ˆe=kžÓ&lé@k9uåoËŠ›dÐ,$ÈG]ÅØ÷¹(wC-&ƒ ƒÞÒ¿x#õ…ÜðFªŠçŒÍ›+¬U÷4˜š²Þn½ÒzÂÌ1?1Ü4³ÚR¬žº¶S¾‰k䕯pSË ¿,õGC1®QíPQªeøXÙ¿¼N¾·Bl‘Þ–ÚIš ’Æ\áÇ@¯ÒñÄ% X žW *¿k4G-Í1úÙzH—§}FnÃN@k  È\|šGPÄAl ÆFx2JS:*IWI– qänU¥kºéÚRù”Z»ªjQ*2Ù!]Ì/ÈN)nÉ—žO{›̨*^ʵp6íÏ]_ïǶÖ–ŒËÿ½é‡^õ¦Ž 4ð*Ï“­ŽjÛmmj6ûhÎP—ð>ÄNÜ彊é fà9h$>éדª_/ÅBJd”þ”õg¡õV K¼RFH(þ,þ5É|8KÀ#©çša¼¶ýgd-5Plâ²JIÄ#¡˜R{†r>ËBà bO5ë—é‚Tn„]‹ ˜ŸˆÏ"žârGÆæhXÔx“£WFÏÉ"P§Ò¼Uy©´D…I0;r˜ºFMR×R„=€w¡*j· ÓßÕ|ÁÛ)ƒq”ªSÖ+ž ¿ ²ÉOx7T&=+wT\GþÒ=6^ÔxRh’+ï“Î’µ‚h„–CµŠwBuƒªìh1‘¿9²÷æÍÃÎý›B]lç¹FoãìøÝ}œ×&UàÒ O¾Zÿ¾ð%IsRwÐãF…džŒ Þ8>0ϯÈ™¿»¯Âwد#X1%eLæ_LGƉ4ßÔ“ñÜðÒ`KÈì¢Ùè+óŠö3NhV醸ÉUÌ úòðAÚ…°s)%õ9Xˆþgƒ^í§t*CÂ^{=ñúÍ'Ø=|û~×Å×iŒ„Žá€vÂß!hi(-‚ÍäsôÏ;½zÞôºTøü†¬laŠ{Ìï¡1vq¢˜Cá7ƒÿ ö!Ì#f[^Œ(Aå£ÝL$aý„½¶´åzGT¯ó¹ P:±-’÷¦}ŒÞ£–XÅó=‰5Ñ÷#ªc³{é«B<#œ+>Ësˆí+ýS®> ú5OåVqÓ%Ž0…ÙaI?R)kªZMF‘¢KÚ‹'Áÿ ž°Î—-*¨iÔwrþÓ’Öº‚'jznßâxÔxà’þµqŸ±ÍPÔù±…a8cl5ûôÝú8Ã}ŸÖG7 ¯Ùi~‡Ûᡲ¯ÒÙü›ìsÜI‚sÒ 9¨ É$6ð<’ÀnÂ` ,\~ö‡þú¡+1ø?è't›‰k-1<Ôzi ¤=žˆæ!סk0†ù“©tÕ0q-FBÀŒ‰Ö£•bHà+Þ¤R©%R¨‡äÍ,â<ðºù{X†ÁH™T̽'›#çð¿T N¤/f–Œ)÷’¤Š¾–~J;ÅÚ"/…׉¯¹äl-~RLe|oHÔ1y‘yÊOòµ“ÕÎxN»Çz‹òÅë‘zôt<­ð•MEת{4z#¡ñ$áqº©ä" ´#+¨÷šëæW–ïº[ØNÂV³Ñ:Gû@ÞÎ]ÆÆy1’1˜U¢8F°É<üâ€}&žÇðõTóvÃ-S›¡»aZ`~D2bÜWµJµžºdâš§¨i˜¶‘˜Œûcñ¤'þ/2\ ÷à‹Ù”ÈyŒ§©ÂÕ¿©sÉcÄb§jÜÉÄ*ˆ ˆñäBb3i«:EMU Ád4M¾m³îS}ÔÖ‘œÙ&l/•ð$~œ1ü&刹Âl¯ ×…hâ‰mXùôæ bªéºÚûx5łŕ áÞs]]6 o~±-e»`Çc·ËîQÞÏüބބ5Ó6Ò˜Qs“_e*Xžy2¢Ç÷™×uŸ’€‡C~¾o¼æ{_ñã® ¹ŸÐ™â“úKòèDOºGR^|jĬЬø›¥ÿB æ<–™–ÂŽ¦2“þŽxN[ô>,5ÇNô—ÎÓP­¹¯lÜ’8ÉßDzß9ŸGîãwf¸­ð7‡=Íy\_U¨¢Í÷:ìEù? ²ÍÕ(&´ÝëÃ{ûûfî•›VÃÞ 72Ä;D½CCnlõu÷Ó…lеMyX0Üä UhšMGÔ®D.q[=£õ[׺½Dû&²]²@²\û¸g×AûC³úÿÑ5*@Scü–f̬Ïè‹-‹æ?’•P¦8Ý]ê”Ó<¡Á–™·¸~™ðq\m!£UwP_ž±ÒG§‰ÓTŸ:¤Ö‹èÇÆë¬ñÜmÀVàFÓòâ5ŒɵÌóEì9ȯøËéCï;ièV™^ÖN†Çb“5þæÓä Íuòws€å‰©ûjÚkødÈ4»`¥è\å'©\*àG7¬•?G «ðYä"õCªýØ CöMb‡ÜÇ_ Y¨ñEná;õ{ !º íõgb,¶zªhþNíP 6¨TÛɇˆ;bƒ˜¡ÛÀXH£ ÁUèžHÔ¢ÙÔ睊àÉr‰E~¼„ÁX Gq",mcÅ–L,=Xp·Ôµh\Í—r"çuÑ!Ésô'嵆è=xZgbMdkÃÑzuŠ#øÐü¬>Öð«v”z'º ˆ7Ð&¯TØV}¨Ia}«Ÿ¥‹#JðsÄeü*¸Eú;¦Ð]7½°\´Tw[ D„¥ÀõìÆò×¥ ˜h]CŒÿ±;<ßMýØL¼!òÉ[z–ÕbÔQÓg< Ÿ‚™áëð|1y„èÓÄ©î`ZÔ[Œ4ì0<¹퇿! ¨ü‰±Ùdƒ¶Ý¯©S¥“ñäâ¿ãËÐlè&:¿@Qš/êTÍo£¿æÊ’tMeôíŠÀ~ú4„6† Çc‘ò™ÕÎÌ ŒÆ=_êØSx›§+‚³ƒÀi…m X1n‡AH.\‰>Á+°ÓÂcùƒÁKÜKvìfºßs­r¼†ö,Ð%„ñGh'-,Ä'd zl'¥0¬<˜Òú=ìcß?Ák¿‡½gœÏ~ïå;ÂÆ–ÑSŸ'³èp2–LÄ ½ÀðïMüµ’¨Ô¤ô^ô¹(Š—z…1)±"tN`à¼Ìdy¶a†z‡xAÉ@BdÐÓ€­6~3|>xömñ›R”9¶nCUT’ο×瘯 º±ÜMöD{ cAÏÖ¾Á}{»ö¹œÝEû™cKbèc…旇݉޿·`ƒ+ÐÃÔdM¹;‰%.µAÝÎ=g,:E;wzº³»çÏÞu½§;ýˆÿNçåf5dåTŒ»ŠÎ²ÎÕuËž@Oµ.¦\Ýyd²0¢¤'{aÚŽä¤âëÒݤ D1ðYAÓp©¢ä{»ÔÆ:¥5¬{3¦p]©ªªúmÏ!æ óIþÖÜšBÑd É„Åñ™«’Oåîk8(æžrRì!íQê´àC\¦?j‚ÁæPÔ{M†ôx "KÈ´3¨lü;Z‰ `¡è*Ø$‰-»cÇÕ„AFµã;&DÏ0Ì4Äh5¯‰(è¥l´´M¦TÌ•>¢r >®ñÂŽÃ6 »½V”¡Ÿj.Íö©;P¾jT¯«Q>¦ù¹l dAQDM„dš:I³’PËÿk¸X墲öæÛgoÍÈ–­ šBr/¸Eb_=¶p^Άrˆ;KYˆþ KѯÄ}ýg£Hýß =ÜG*FwDëÅ ò+þθÂlCõ1¸ÍD°ü0v[ÿјcyfí6ØS øù?ÒW2PèRc(ŸUzN0Bô©¨æOðkä2U]¢Ð:“©ÊtÑxQ݇öËj¤¾ÐH#s•Èçû°k(HüAVã½ø%äÂ@z|ø©È1ùmébùF¥F‘ÏHnKqÔÁZ±:•|J¾¤Ê©SªÊšŒ‚iÊuJ6脉*Mˆî‚*ŠhÃì±…¡9Uò@=ÃÜ¥ €–ð§TÞ®˜Y¯lò¯™“v6%h~TST¼¨z«¢$]p $š¼x[eÐ ˆŒERÐX,[„\çíe$-÷öô;ãûÐóCä÷uvn¢Oä—°šà)´¶°S‘¶ ÅÉ¢&Ñ„±+2çþžó$ñYHl@¥¯Ê;ÜïQÀÇ sa§£ýè ¦†ù¿t}ò¼äGô¡?ñ…»›g‡_PˆËý &ÍJ/ÍvÏyœÑ攜‘ø6Ô3ámÅx)•5ÌOßq„¦úgŒ ¬Ö„ø­ ô‹dtÄÔÐ2ÃlÂ#CSB­ùr×Â^Çžžî¶½³ŒÇd·«ogͧïHòÍ<;6+?icxBLEÞpu“¬ôG»Ÿ%"u[õóph5Â%º5§ ÎÔ>®w£žÜ¦ëÍìõð»Žê¸¼ÜÂlõž6 ª×®s›ú𳘵ãkõ2ȉ=?ÝèÕµíÌnÇ̉ŠÕäãJ“@£Sà› Nþkö*±pPÕ,þž¯Ì,LWUVÖ8U”3Æ2ÚsOä/Ïí«˜_?WzFpµéquKøv¾ÇkŸÎ¤ÔJiucQBÚuFhæô*7N¡0X©ÌA…:Óô<:„ÎÃ&¡Bl;µ\{Uÿ“Yex¦¶‘v$qî ®rÆ îIï ¿ªlÕ•ø}4çPk4Δ•º¨jUebïàŽ´Z^­¼)®à/gÿ,J@T1ŽƒdŠMüNÑQð¶Œ/”c7µ:?jÛ¡•g*šÕ/¸£dw¡}è~Å%®JöW¶ æ¯Ö&ËR©©îî5ùjá˲w™EŒ § ní7Ñ0ô¡I²Áf‡¦—Âsâ*q€hH<]©@ÝTvúUIøt”€Þ+Ä[~cÿRÒXþ…_‹üBz/‚£¨x˜$ŒTvjŽêIÝ]•ZAhcˆ™ÀNx>vYé!ŠçËeÇÀ¹T‹ÎU¿ÌÂMÿ™ã¬ Ö`ó‡Öh«H»ˆÚ@Ì”²„t…­ìÛ­jRÀØbâ-Q…Ù¢/‘Éè|Dý£ëMp ÔòJ V¬QV‚OWâ…N§ÛJn&¦’çˆÉ¤Ÿ¢îĘ'‹”¬–­“;VX‰ÎF‡ÀF¥ ž’NàŽæ¼‰¨“¢Lx÷ Ž^y·jtÁó¸¯aGb¿0~ªØZëÊné.šžªDÃU3ªF8'å#°7þ‹Â?cuª/Ôt%w7sj¨ÈTÚ[4hVä®Äµ SbBÂÿò/öq žXžÛRmß Ê>šÚ_TÌȤόk>K{á·ÜÇÙ_z—›3œåõe/J»ï’2‘!е Ÿ¿ýîÒV%½(`×É…ŸYúGÚ¬Ô!zN$ŠÄÍ,8ÂBK¤Éa±/cW…Ý Î é¡ÕÓèaFZ¾ÿQß _ÊI°:‚“<%…›×g¡çÍg;Ÿ÷0ûÞö:ôØv%›Ë•=Õ/Š—ïé/̱ÉZ”µ:Þ7L‘ZS+¿†eã1¨Z£Ù¥: …)ÛÀfì"rGx¡ÚëJÕw wõwùõXöæ'YÌ´€ª¸Î˜{]oÞ»V+"7¨RõÖÔŽ›­ÅÓgÐúvŸñ}™]]ÿ¤Y¶,µ.4٫סi Gýû“¯{v*%{x‰¶…ÒTón:{=sMÖ¾ò'SjÛ0Ô)ëœoœ?õ»ç“j,Ûü¦J™ÚœbÈSûK“Mš“Ã_,{ ¿ 0øb‹†#¿¡¯ð³ÔÝsÍKS´e»ùžf:¼.æ(— ¥Íw›#E xó z¹GÞ#Ç}p úù Þ‚ ³ö g!¦4“ó•µ€3W¾UÄ€NØUp¯t›ò´Eì<¼åp‡þ.àÐò~¶>XÏ;%m¬È±µ‚ë‚_Ö”a÷ðN诺n¶"EQ$ÞÄó¯¹És/v(óÏ­à˜ü½ô¹ÄA\)½•·‹—òH^«\‘øKí:‹¿á? •¶r×ʺñOèm”•UwKÜ \„?¢cà+â¢Çpªjò—´þ ÏÇûI¶j"Õ­úYÿÁ”¯ÍÔÛ™š-´×Á=À*&¿æX3ÚÏ´È[Â[w¼nk2¡F™ÁYÍ'Vb ¹\vGÙ­8Ái¬ÿÒ¼L²yŒUâN8MG@gDûˆ$H*;-Ÿ(/+DkÄ«åü¦ÖÏ7¨£ÉF,1¡ö˜ 1 sF:„žì,~7ßÀwÏþ…S‘hð±r ì»ÃZéyîßò7¨ ¡à;èu2–¿¨t[ayar¶]v[n+ó(ã÷äÌÂÍ¢KêlKa‘Dqº6VÛ4ÿh9¼QEêoj›´AÚ¹†qX4u<ëzšW î¿Ã/<@êgGsó!BJRÎæúÖnäe+†c¿¦Ùäˆó|Ò&ÄB1ñak•Þ³½Ñ ûñ¹×…rî¤ê_³g%¼J¸ÍXGÿ3JÖ‰±&,¤‹÷<ÔWä{ãSæÔp§ÐwÁ§Ã_¤ŒÎ\áEg†Ç…;%lŒ½KË<Ø”ú2Œ Š XDFMåVÖ47ºVqÊ66(‘ÁÖúΨ®7]Šîí].ã)…ø7»¹¤²=L¤ͲT„K›t#–õÖ¥†iT’æ'}¿vÙˆ,æË=3€Nñ7öC~ˆþmOb·¶k¨Û¶ç†Ñ®Ù.'¸dE«ø·ÿv×~s¸Õ©ÕÖz¨å·ÃGæðK5áK“‰´¿r…ÜxúŒî¦ùTÜÂ+a­€¶Ü«{øw9ZQ¨, \iN+Ž~AKÆå{4›xlÞáX!)¯Užà¥ïˆ_&Ûó‚ «¼‹åiìT¹{‰h·`>”ß_C[¡8È pQÜ!Ô™ÑÌ4Ö³u-Ú“d12 å!g€³b×¹~{Ãz±è€ç +Ñwð Ì‚‚áp³2“ïÁ¿ 7ÞiYbj6coyGkë~\Ù9CüTn‹þ‰~ƒ?BR8™AömÙÿE»PÍ×n‚‹†„…Üñb “š-ÛÞÜt£€÷Ⳝ“uÿ6ßäío8Å– —åÅe÷èó£7æ/oüMþ _*ÿ °Åx¾MÞËË~ßüRêÏ ü ¿š¦«s¬YÛ¤TÀF¦± ›%_AŽbt’¸¨ª„#d\dDU¯éP/RMÇGÃûÑIh|ÌE}´ æçæDS®¹_ïG¼ÇþA¤˜žì×þÝ2±m{Û9ë«¶kŠQe8¡éQM‚4â§¢U@4=8(“þ>Ùp)nC’5éBƦ’+Å]™¢Äšø÷Œ+9Y ÷ð‹¡ ´ÿcÞ#î—w>óéÌCRd'ª`…1y‘ßc²c"¢Ê#ééE½)Ó˜VáÃs9Uöÿÿ —…_“‹ÆýÙzm°½6׸Ö5®‰¨„ÒÍh66cź·wÛûnoncÉÆh±ñÚqíÖk'vwýüœà<çsžïsNM,5Ò¸Q²)0ßÎê¤nO¿2.,qkκ̼ÍÉ‘‡7Š—z+kuÆÉËs&UTÉ÷CBÃ)Ve9ç®|”ú°†GÍ=Ú4ü†þÔ‹ôEòa5_«Ö³¾ðîë ½[­mg›|ó]»]gÝ=}=\×îº[D"Ö ¿3m1èO-ƒ}K#›ú¶‚í]-ÑØ~ÞèêB)ýÝ`YLt'džJO±É[î íJZ•v¢<€Ý&®Cá½ø,kggºöt+K)ë½sÄ=õŽ9¶ ‰€GÑ÷\Ú6®5æÕ|¤nnÐU×”Jʺ…²,ÓR|?x1L©«ÜobT*Ï©b°pëK¹uWÝ „ÍBýæNä‡ù˜)Á˜MAfs\aÞ¹®!xrF°øb̉ï5“jwr/)vB]H:úNƒqó>3×<Ó,°V­gö’7Öiüá{>î}SŸ ;!ðªÆ#íð /¡«‰ïŽÝîlZ‹'Ù.Zaü2^’µC ½t㺛=ÒžžÂ“ô÷¥å¼ßÄ¥®ªXľb;0YiiIÍœãNñrlÓQiÃ{Õe€Ž &òpiŽñú“ðáæ[Š“ìDz û°Ø5×1ÚL‡@äxÈ<ÛAñÏöuÞ‘õ_ë—»â»t>ùl~$ÿšh»ú¡ø5ûåõuÎ+öLûT›ŠøjVšÚ]¨?¤å\c¡OàzäÚf{ Ð|`^ V)¾Â .^K~K[s€ã>!'æÛº=Öõh_$>k®‚kÌS «‚3U;y˜ª¦IFåH˜Û@nô˜½—íL®Õø 4ã=¸7þÝ,­úqj¡*8kºÛ±óÄxëP‚cýD|­ᖷ–yÖÍXâ?Ba*cí¾@¬´ò¼•YLƒD¬“èDºsЦNë ]DmnmbKÔ,hnpþá­kŒò6˜3•¬Ådz±ƒz²j7½ŠœFZž™ë.êEþTüwÁô’ åcªº3oUÞ¡ +Ë-XKJÈV$GÆÿˆwÅß¼/ù y’vž1D×½*+!)AŸ5˜Ù®ënÞ‹…¯œôºnF~З¨;U…ÚŸhR“¯}m[Hëœæh/Ésª>ÎOnú·é¬Ÿâ{YßÇ5È2†<†'+œh“eûœ•-å6>Z5€Ê”Š©ƒÔE²OBPæÖ3-Ò-å®.K*ÙOëÇa˜!ÄFœU7Õ}º)f§^Øks`æhå6_[ëu¤ $™ öïÝÆHhüûwÁÉšp­BÒV›³¼l¼yI‡Ù>UFÔ,ã’”otPt‘Eœ%dN¬´ôªóÛ†YOåXŠ/"ïÐf<ÇY[Ò> ûi^?CÇcဢL‡ä79:ÉNhJA+Ì—À- Ûô?óV`gu{I’Žœ‚ó?h^]W ”LWý0Ê RlؽDÖµ¾?v¢}‘Ëà\e™ŠKLÿé‹ÀvÃÓ$p¨ãJ³¾n,Bcu[”—@•q•t“@/ì&ÜL¶piu¦v¾Z•g/ø"þ\7³q‰§ÉIr¬t¶xŸ6Lp‘¶¬S–ÂÓLS Á:€û¹ÔQ~Š›¢?…ü¾Qõên™9Æ}â ¹mÞ¬úY¾îÇn‰‡Að ¡ÒA977L–Ьï釹»×[êGÚæ9ìöl¨P\oØâ\ì×ù îïvªã9~Ì´Pá§* ®TÇêÙ3[ûmíjªñôG² ‘Æh‚g-ÇPx;ÒsÌ… Eÿ’ûKk„„ª¸.0 õsǶ»Âë ÄrÙ𻌫iE>»¸Cë}?ë)Ø<0TAF¿×8&áS-‡­4â*.!huó](‘‹b°»þpEð#‡ ÑË®¨¢”=IC3žT=PY=Ã÷Ì a—ì¶LÏù‡¿ž×,§¯Ó Fó²ËFÿYD*’‘ÿ­¸Z}ƒ9…æ*º]ðgÉð²Où}³þÉ#“Ô;Ôzvµ¯æCÅ–ây»r®fF¥½N®Hy;$ÊlÍ9ËÚ#sƒ_ß\õ”"qt\\ôÙ ìµß×o^ßÞ•sIÙQ÷ïâÅ'ìYºaÚ&J<œ2*>!65éKÆŠK¡#'?õEÜÍØËñ¡ ã9±ÎM!i,Þ7`½1_>±¬àbBQ -~y³„«»füi^¤›Wé µ×ô^COÝu®ñzݰ–Íí›Û’Zñf¨éTã´FQcjãˆæáͬ¦ôÆãõLÇ`k±ß´˜ “Û_^ ~\v¨Ýë÷-t)‰ø¤Q¤é/›(ýÆûY9íO^å®d ©>ÎÛ+nÀixW®/´‘ÒYûŸtωҼÅ¿¦n—´*?Ë•ê[XÏëßàÔ\ÕÞß]°® Ÿ»Mx‚þ!—œ3DÓ¬d÷Oˆ—å^©ÏEù[G¶F´¬m[Óàìc œV‘Õ.†Ž!¡ÄW|^ŽMÀVãÐhm€rzº UžSŒcí¥Ð¨Ó§$aJ!—Ãø ÁÆlù)}ºe¤¹Ó1”/x¸i¤_é35¹:™—¼6áXâåÂPj05²âof‚0HÊ:CÛJ9WX<*iù¦¬xWîÀ²JJ]©„ff³ÙÕeé¹ËòF‘zä{HݲGeõÈÉ Ìº>’åg×]"$Ú៕ìÄiáeëW†¿Û0eÝÒµk“ú "Õðÿ«¶ =°:jÝóÈß6í_õgÚ®šÝIþ½œÀ„Õqü¸êÄI7b÷n|6?^\á’‘Ü)¯Î$%^I”§?Ì,,¼’Æ( Ê­Ú`‚Òëô…†“@ 4]v|iZÚÒ£E×’Ù¢ôø6=iyÔLj65½hñµŽôußr=²_@¾Λ{íZyzÿhgtƒ¡yOcÏ;â›þ¨¢—òÕ6~yYÁ¸â['øã¤{Ä%‹ŠePÜͺݻ­1¥áð±—·ôÞ§RR¶ü^t¤¼å2ÖL©ÙÐlís@@7Ž•t,iŸ©Ì!´'%=s?¦öËrN-n¯ˆäíEÈ,ÒõªBàH5=ƒÏ£ë‰yÄ ü¶ëBõ®®^îUNžíÎDß8Ÿ{Ö=#ì ƒQ?òÉC©( K0q´ÁŠÀ=0R,@¬ŽD"7°DÃqÅiù-¨ÙªÆÔÝU“¤cĽ5ÕºvUä—Ókg2{(ÒÐRÇ0÷bG_»Ûڈ߃ÇråߊtÍeí6ÍmY¥ìägv¥:g_¾¬vlï•Ò¨Öñ&änLËH^“Å*¼ÎU{‰ãõõ¼¸Ké¸kSZƒmÚ¶ê}ô¾½±Ÿ{(~쥚!xWó¾†Cç³Ïˆ¨èòTÃ>Î\Õ íã4 ü.;/¨Wtƒ hºù¬‚3ÑM S‘¦Ýà˜í}lo·X‡à·°‘¨ÎüI#Ù«î‚ð \¥{ SÛ, Wí­^\Hn/0×%ùùÎøÊœ,K/ë9ü RˆN€¹Ú¿øpm†D+Ý!ƒ”ß”~ÕŸš†)ðôºÊVá!µ¿pOÔ¾VöƒŽÚöz]­êm™í—\/MOušîê‹À¿`ø"MœÄ§ãøfü°)Lñ‰s’óƒ×Hæsxe1E'J–3OªZ ^9$(Q†™‚ZI»²|—rÞµ Í.}Œôeù¸¸Ö—n|»5ùg~-}ëUåÆªùüDÅ@¥Z|º–WM.-Þ’5t³"'ƒ2¬|EÑ΢ùÔ‰•Ésò²ø¤Þw‹jKG“ Ö–çé“hYtöCýró)pöͯ†7^µ#60Ž“£¢Ú°“Š_¤üµ18²+ìExb%lq;Š;×!ï[’s2&?®!Ë*ÍjŠãDmnIÅš(+^žð=þb&µ(¡¼_ÕwÆn¦\$ªšd¨FƒkÁ]F©Ž®‡Ñ ^?ݤyD‹Úoô'µ„·žj)lln<Üò yjsÿ†)Χ֧èy#EµÔ0óðûœ½cšJ[~6Íð¶/4EicŒ»õýE§+_ämJ;˜ï`ÝRlRV‰Ê$óÔ)ƒxïX኶îô×ïÕáß(ÜÔïqP¢³°œ–˼Ëå É+€4 ^Ù›ö_þ¥²Ù¬¼?jÑcÊfÈósó (;¸Í(p”–!•Šøì†v8y™°XFAJà)î¬>´¾Ì¥µ¡*$›Ø†ýƒ]@n¢‡Ñ'ˆ)Ç,ø |:ž N5=7vïd5Ž·#[°Ñ K½]þD5[IUŒ’Ïu ‚91œã’(9ÿW‰x]ôNöxÕDÆx'±Ç²ÛuÇVˆL·ƒŒkõ:P¬ÍQ^T2DÔò¹ÏómÜÇj•ò0XüÆŸTz=¯:÷ß-S²ÓQGs£ošïä¯.ÎFkK‰é¹¨¢Ð’3Tf¶—{¸6Ø”p­DÍ…kŽ30Cèïª µ³•d5Å|ÕVàš^?ªþÖS=YòM2Oq[bè 7¾›èDˆ3Y >Åïb§¡Õè%8ØpÏxº¢_)«ÞŠLµÐ4(Ë0GyC»~é uŠ8äNÍYOÞÁû©kôƒ­×ÚZšüÞ#߉>Øè#`Ò&ez  447UgT¥êíNð¢á€N É×=3íF~Bm™ìEl–,^ÛÜ—nûŠúRÃFå\u¸Óâ·îÃê°AÄEü›¥§½É¾Òæ1LQÏ–¬ÝBŸTq§RHÏ¥´—¶Ò|ÕO9ÙUz»|·á¶Ú#2w·WÛö[â0 Zl\/™X\¿0:7ºoBlv÷fåþ!a‹Ð(jÕÏ"æcz(YÎg˜³ÕqXÆê ¦ƒ¡§÷§ô¥Õ0P³ŠG;D(?ÎÌã7ó3þ%d‹í{-«ñ’Û.M‡ŽkJÊC¢Ÿ†ûâ|‰£R) ™;KkÅ= CÙì”èøÈ-ÿĸ6>€ÃND%§E¹F¤¦O²#Ò±ñïø ™©¥KÁ5ns…±0…qmÌ ŒYŸ”…”e²LœÖ*fÉ´¼JÊz®\¸Ré1„˜#ÍI 2¼†÷aíøZ‹Ú:ر­~vóÚ–ï-·Ú&¶­iÜа¿hð{îÙ‘/@³f«2ËøÍ©¯otßo˜×4ª!×cµ‡¡SM'ŒƒÔeµ7èÿe7¦ÈÝP-ÉQ  %Ve Al¹èÛ¢±aX†1•aßQ³,SEû@‹¤â5øç¹?Øvî)&½¼­x5yWÍœZ€{“u´ª”2›ò’Ì¢´Ñ2¹AúËÀEˆ²Ìø§ª”¨óA5lÀ’ÐJx¼©4±—y4žoÎ׎–N4©GÏ!fä2…*˜…]Â_ oa–†¾AŽ›ž©“äi€ßTö‹×+ÑàNíGa‚0Tº\6C2R²Zô•k¯Ö𿨜šYš*AÃ]%<ÎÁå˜ùa¯´ÇÙ˜è98ÃDSÍ!ž^ jÌ•ûŠ"‹Ôv³!&QaŽ’^¤¼%§ª&(Jì £s–·ÅSX—ãQ?Ûå™®«,Ìûô…â}ÈÛ.ßä†r·ñë>‰ù\¥h¶¨‹ÓK%hOaë}?˜@ÓÑúÂgDôcÁ.¿‡KáØ>4ÉZi­ëg8¬iþчi8šŽ¢ VGÃÔUµïù3T2°NÑbâ+Â)Ê]P¸KÝ`&6óGfz2oäjhKe<ƒÄÒß~߃£·v oJh<í¹g3Y`OóA8Â|ļÕô˜®š¤(Qxs É*‘¤—8^¶_qFÜÈùÀ^ÅmàïÖß©#5å4£ŽÍˆZ¹Rx\ûÔ%ö·ÚîaÛ°õ¨;ëlˆ½ŽR¡×Š~Ѥ»ùÁä;æÊʬ¢›y¶ AÚ«$Y¾A¤1N4,6nÁ®[8¨ËœA(í#СbWùÊüüœ3ÙkI‘EOÊbè ÜñòYŠFE1™XJ<5²M¬þ4!í‹Q;™w–¹•â¤W*þþu£â"«„®|$ž+]¦\¦äsÆJ?fhËÓ7Q ŠœŠåÙ)ÑÇ7ZcÉŠdaòÐÌ’ÌÛù<Ú4òúŒ˜4FÁãü©CbjÃVnZœÃãMÖwHÙy²¨Š=cs“¯e¤:Eç”÷ù›É¥T)=9K]µùb&©x@…„¹¢²¼;çPjINÉªÚÆ£á™òLÙ†½@sUgäkôŸ :mYoñWY®²Q>_SkT]€Ä(ÙFu\sN«»ŠÛô•µƒ„G`¡½ÐƒMÅF!!û»Y°V’(´ð38ÔseM—ôšúø¬8Ìâ Å’òåš]²ÙÜ3 µWÑjêQn9sLÑïyŠâμ˜äô„íI=Óég3u‰Þ„ÏiÔô¬Œ‰åÕüó"ãxbQÄÀ=㞤± W¥8ãzlRUéФ¬÷²óª™¢„jeep©$~WdqÂítuÖîÒ7T-ùjꃸÁ1S6þˆûšé£Ø¤ -2ÑôK´ ªmŠ·²=2²F††ú"švøÑ†¾þ^þ› [öÕ÷t.ÀÇ€UÆ'ÐH“ Ì6rááÎuM/Û¯níÞé®%jMÙºe‰ÕêÀìМ?ht ¤’_ÂÊ?S»R ª…w9%¬‘µNa/FdzAÒ¹ŠJA@õ®½°îðJS¸B;ˆÍG5ðdDlž WürÛÃhèÐ_S5°¯UÜ*û­j¤t¬¾Æ°ðjÿ‘? ª®aVbÚ;ºàPódè§©·É ž&ËTב»ó¯˜—È8Õô¯Éˆ0~ e¢°¾\MÆGê3ãÙ7äZRéìç™n ×L`®6—w òuj˜oTÄQg±ã¢ÆGà{°ìQx¥ÅŽsѦc(NqOòUúÛ]ßM4 P!ú;xD²Tm…®¢³l}l€åå3Ì ”ÝŒGiÞÓ úæƒ {} ½ÝÎÖŸ€GªÔÖ2„ŠÓÐLÍ,Ågé[a¼ê>¸HåV ¦Iêt“Q ž õéú0ü(ñDQ;³òGé‘’dúbòpêíQbN»·#¯ñ¤ï§|óâ†îÿá× ?DA}èOs’‡—ã³ô<åH` ´\¥wªFªŸèbô?ä÷“eס'Èz"ÔÞìàaz{ãFſ⑆Vó3d€Å‡-EcÐ]¨ïk«qT¡ÚJY'¯³ü)+‡[x®ò&)Rà”^±Ó¢¶G7¤¾c,Ñ͆¡ÑŽ]ö+¦.dlÓfÿòÜ¢ü'Sós)?Èò¢Ëys³"2æ'ÜŽ^="vaÂÌ‚1gwØ\ÑÂ[\;g(_Ã_̵óÆs&Ðú3^'Ô»mg5uü³ì¹ìmÜD^kFÕ Ÿ•­œ¨àIÇë0`,çL^WÆx’ƒÔ‘s/kZö}öÿ2>—‚âRí4]PÍòänÑ­GÅÜÞ|.ªc“%y ͫΒå§ÒwñÂ¥¿)!ÑQnpÍÌ’uÙ@Ù›r°è\ÖŒ¬Ãé×77åDåF¨c€Ü1taíd`>¦BWš^ë;tÍšjÍr Y;Ã̱…yµ@»â·õÍiòίÿ×ñƸCrDY u™ßé&ë\È`çïí£vù:î¥Ø£åWåÿéù0Eý‚Ö£ä.¿—9~)YÓ¼șŭa“™ã«~£Í®ŠQ¥£ $BòkjHù©2yöÖØÉ6úïüé²I’{Üû,©jñÛ nç{3Ê…©…ƒIO Þ“?W’*äsùËÊÎÉ ÕyíVã2d¹%ÏúÈtÔ\‚·×ÕÔm°t˜øP.ò€È)TƒÀc°žÈFd¿)ÙÜðG7D}A9É0×t^ý‰ßVžN*È\•­˜ Qè$†g»td»ô…ñ°ù?8ÍÀ’§T'åmš'ÀeM7ÎÚ_â"8; ÷Dô`è/úŸD'Ø»»§»TÐX}²ßzæHJ,Ò³ŠpaOÑÚx=èuÐïÞuV5r”7ƒt±‚!¹®ý ±ó& vKßj»Ü/\gÝ€å‚y¥Òâaµ\EB\ÍM3€i/ñÝ\\Õ…³i,wqþÖd4ÌïRâÚ^·¤î»uš%‹ØL„#‹õ­‚GÌušþúù^ñ¦Ú1ì,A2–ŧ+™%Üc¢+ºË”ºKx£¹’rPðƒê®õ@U ;Žß7Z-Ž5¼iZë£Õ¯ö =ZOšs¶Bû¶fª H¡’ŸV¾6Ý1it$¯•סHT¦ãi£€·úFåŸ|1ë¶P'Ÿ‡Lq’Ü¥õãë'Öß«´¥ÆúÙ†@ø!œŠ|EŽ ¡Dƒ•geÍÑõVÜF°Ì´GôÍÂkò`þêÖ<»)õËf`ó”¥8k…‹ð™‘Ù›µLôP<§²#{tZsî«¢hÒà\ræà´d,þǦޛšb vJŒ8¦z4é¯üáe©ë+=œbáA8ŸÉ*«,®Õ‚;)_'%ªzWüF}^ÀûÉÏãD°Ž°íJ=YØNÂj–=χSîçàù½H+òIªŒÀÄ;Ù¥µß bPZpu“)¼!rf8ºŽîK]L]M 7Gd”®©Nçsd‚AJ…z=ø¿gn™'R²ãzƌbÊ•Óÿ4HpõóHœ„ùÍ/¡YàWãdè€FÃ[Mc~žÏÍ=ý×=ÜÓœ_·„»„ÛSÛÓðNÚ"^tƒSꎧ-;‰gV¿í?†ÉÙgÇUü_†´ì;?˜‰lV­j§„QmŒ-ŒúÝò›¥e$cR ‚úWJz5/åPÄÔ0_$PÐKá5O¬˜VËŽòƒ/‚Aíÿÿÿ—…_S‹ÿÆíî«×Ækw\±ã"Ò1: lÀë±î8ÛÙÙÙÉ%°Ñ¨¨(v]»ûk×µ½zÍŸ¿ÿàóz^Ïëý¼?KÄYg2Ÿfþ]ÐZÐw”=vLæ’]¦tà %¨˜­¿k)…qìmXe˜…ZN|¯uø[è´­DO²ÚuÌÕ€¯Å“ÐÛöËUý+ãUSwý|S_TäbŠ,ŠÍì×ê3`OøÛ:Œ"c¨%¡ºêÉ÷Ä-üš•)Od¯ã %ûUËdCeÍp7þ½Œ ±*”‡NÃø+’à ƒíçæªH×3C!L—¶Þ@ ì/ó-áNv/ã‚m³×ºŠW—þÎ-¿"›ßÀ/c™þ¯5ϼaØ`¿Ž4Çl§áY°Úr ùÓû`Ü«ý©£Ù¶#ÓðתFçNÂî¬õ êy.îxJsôEtÐÅ6ÑÑlÁÛk¬·NÕjÇ™^(sd‹_ Õ…ËX*³T3ÏM‘&¬Ÿíô–(ñÁmbYÙ¨ÊIº!`ƒù°v¸ª ôóy2ëwÕNošß´ÌI3\É5%])È(êU"¢Ýbþ® ’ŽÕô´|“MMëÌ+ 3d¸Ÿ9ëxAF.ñ3p¢áKSzsoŸËžlµ›úš6Ù7ã'±° žì؈V8K|lj¾Ð6Coù¦ÊõºUöÕ8`k”|cÔçWäé]cãÍ cSž°Þëã Ny¡ÂW¶‹TFó?0ç·1°’&F†OKÝ+aa«ë¦WBÚ­×Áad¤ë‹½Mö®ø?j§¬½Ù¢'#¤ØÁÂßYîgl´ÕóÛÛˆjóšµ­š_5rv6¡ÆçöÛ¨©ÄÓ>÷ï¤;>·ëåtùD#ÅúDM³jëmé§‹“—‹WÞÐÒ@ ywضZþ±† è0wy–tÂ'ÍÓ¸´‘¹³égù?U]Áéh”'Âãpî![üýªf9nÀBûQûô“­“ý¹ …+^ñÄ¥5ü•š Í{ð#¸½²„ûS£´ª‚‹¶åËÕçKŽN˜ãŒ'¹*žQÖlŸNÊÜý\ñöíÖ0è£5Ý´BÙöË|[±Ä[Aôp”[Ïê$ÖÁÄÒW-ñ_ ô¨s×­ªw»èK(Øl¹¯¿YžDA_ÆŸ$¯v­M·]¹CrÅ,ÀÓ¼œc5ýÕ{ŒlGI'Q×^Wæê—:ž¹€Ú–†÷ÍŸ·ûªÍ'æíèØÈõ‘Çâ-ET·òh¹˜¬¨±¦Øy¶:ó-Ã]Í™Qpšs†½^öžZG6ñ»57¾ãw›ñ(ÏÄnCŠå«þ¸é;îò55&R>SñÒr˜lð=ƒ§*ú1?öcn-¢doÉ8–«JíÍÜ!nT —s‡WŒàˆùox'ÙÁÌ%¥Ï8-bT´¢bMÙ⬫1m‘J ÷lÑGu%Áp4æªÏ y>ʆÂYœ'¸ÀÙ=Ê‹ØÙÜyœNÜ(î$ê^‘§iÔ×ï*™²MPXM'o:/êSÁ(É¥—]§w£ý–s<¹=¶¥>o›(×¼OÏé[¼‘ͤƒQ+6>ŒÙUÖ®Ú¤˜$ —ñ_Ðn¤£ùÿÑdzžé⫘m³Ûfo™K›²4 £)'ÓP›s:祋´ê†ÊvîåZd­k¢g”+ì…¾Ÿ€³í™æ×Â¥BS=¤aSÃšÆ uÇkw¹·Øºö 9¥ ËÿU7 &º¨7~"ÞíÜ`N_ º¡/Öêk*_k Ì^ó‘ÊÌ44ý|ZP2Ÿºq„5¡â7[$”Grì´Vs˜%¬ˆ¥'®eM_²êsêK"rÑÉPÜ3•‡&B”Ï©ûr“óƒØxÙbêñâÓB{_ù!ñR`¼;‚9ñð-p7v3@i|ç_„€à\›\f»ŽNvnÀ¥Ž±vˆÔʶËåòeÚeúZÅg)_ù¡ÒܸL÷´3*‹ô²Á†ö? Ë6ze£éxò©ë–lÙÇ›F_“¿Š¶9Fç@Ûˆäw0ÙHtúïÛ·ƒ2ø´­‡¥ȵ œ3mnãµJvÙ•â´’¼…ª1¦Vh’n§`P¥lÆ«œ]À³òSòzá]èHý¬ê àÛ4t EžC¾çzâ7‚OPç æXhj=€_õl(!¿íòõ–ùäiRäåûÖKëƒjמªrøÖUõ³S Rc SšŸ¿”9M~¤x‚jŽçÐxcq€l<'”·Yæ}†ÚWàè_|ÖhüWe'r/¤½Ï_ÃKTWÿÅg1Æ—•ÿ„~'Ÿ–¿I;>.;סú OvÞªšéœ…ˆáêmŒ[ñcŽP&ÅÇ^K<ž&§õÍ M¢¤§å|L:õ1zan¾èœî…¥ èÒúp‡Óè×°£j¼kžm¿}‡× sm7w@ª>Q‡™ŸØžèÏËÒj®^©1bËKËf³AÓKžÈsÿP.¬}­5PÀ1ÊÍŽ%ÄJ—ú$ )£ó”ü8ÞzŽVaϱkè<Çø>—X„8a<èªîd\¤1¶ÙÆ áå²eù F‹G`eÄm«Q÷‡|Ž^ܲ¹Ìÿhz))úɵ+›×[•©Ô&rÊýÕ~ñ]p¬ù`’ÕP2P n‡®Ø3Ñwxˆ«”xhÒTŽUv˜ë‰O·š‹5aWÍÀÀㆫÕbïH×j¸q+8ï—=SõRœ2v&Ÿþz,™D¦ØFˆR9ѼPÁ5á¡ß’çèÿëžMÒñÒc: w Z A';V z¯²öu=µ¾[ÕBw'w«g®o¼·WMQõN÷T|ÎÞKñ% §rhK _Ðòó/•e÷yû,}Ð½Ö }¡ÞfVÙ¯Z?IÙ•ŸL¥vÆ­>×p¶h<è[êXmr”âT"~£•WþÔ éÏ [‰îˆI£áÝãK+tåö’ô5©CSï–å²J§0»–Þ¤/ÉÏ+È-màLPÅYâY«¦»|9s9miñ$á å}E´|½$¯Ô’õ#cmba&-.÷Ma{Ù£ò]bÀ¸¾lñ —i —ÒF(í]~„Q[ bâ]1„«ø›Dµ²Eòß•ŸÍ{­5DŸ ¼Z>•å1Nåž¡´ÇüCKèŸÜ#…“ð¿˜OQ6/‰»‘=µK$WÙÀOÚÃ)×5njÈò+0Ç{:1l3_‘±*»óY´­£ZÜúh«©¶è`§4$Q¨›ó'—>–îƒ"ðÕ™n¾×>Ò­F"<ò<Š3~7v‡:£Ï±BTG!Gœ-þûõ“¶ø·>n©r2•A"c½MNw\Ç_’‡œ`¯Œ5£ä)’ƒžµÞ’œHËwlà7Ÿ˜ìD ŸÄ9 }¨g•#±Þ h/íZ¾Œ]¡zgÒ}aIhÊ®ø¶ôùŒûbŸ¹ÖcqîDnAŸ …‡²ÿµÄ.NØß7>&é7Jp'AÛ/Q”Ò=²Çúp]Ü–Ü?Ø÷X ¬;Ì Ü.ü+öážå¾ ÷k¢¾e¡˜ù¦sƒ´Ž¶±ì·D8>ÿ!¡†u¢e,o§> ¬·£– CW]W­LVÑŽ4*5\Å΀ègjø†6ë-Ç]ë!U˜è«â„Éo> Ynð@ÈXí¢q¢¥7¼ C&Ú#ô¥z@‚‹ #DbÖÚˆ"T.´`D‚ó YoiNJ)ßëcͶ¾ÖÜíìÞØãßAöÃ6ﺺ³þ6¿ºZT×ÒÈð@gš«MÝÀÛàË µY:Ló"%,Zâ¬ë¼7±:Þÿ¼¦0Ы:ÇÛÉ?×K¡³X’ä™5àMÏÿlÏzäœáM­ìÌTq[Ô&ºÂwÉGZ 6“á¶æ‰ÎõËñÚ­Ãðp"¿€s ví¯ú¯&Pí«}'=Ԛܺ¯Þ[¾QÞP áèºñùŒ¢úrT¼U~¦2‡{©hA>Tü›|9 6TÄHŸ¨ûYšuk+X­³‚—ã,ASpóèÀÒåè‰ê0yÑÙÃþB>W!(S,‚.â“ÁL¹——Í]Àž]r½ .Ï’MM¢ÆWfDçUÑN”—ì/c•6ÐZ V²Cy‚®¢CR ¥{ }BÅ<¤4*' ¶3´?“c2ÇeÅd­È^žº—¤N*q)Æs6¥æ[9/_–w¦0ž‘_¸&-2ñUÈ K— yEýÄ¡BQe¦i:Á"›†·0G̤ú’ú%sÒÅ·Æx.dôÉ'¥%Œ‹ë%Ž~—†sûB[È}Ú¨¸=%„> K¥ìá_¬\.ê¼Ñ&ÙRþNÿP¶Í\Põ¤aXCƒ{—rqÞúŒ5TcÖ÷Ü© –`$¨¹ë›ÕÇëŽ~H`·ýÜɦ1m1ž±­„/:hhÚ?ŒU{Æ5þÙhªo¾ì/ö‚¤)Î\eˆG;G}Ñj4É5_pÄ€±3µÇ„¨¡˜8¹#¸ù·/µÚæ‹Üù¼ØÛ¹g…7Ì^ijX¿¬ô~ ©8®ÕHž³jÒ ÑO"¾EMn'¢T·  }6ÕÉ»°“²K“'¥TP‚‡$~NÆ©¢öDLYN™ô.º4Ê»-µ(Ç–ó>-—2)¹KÓ±Ú}hGZר/˦« eª¶¬³´&›-`:Ræ|Afa?L>u¶Q`‹G«±rˆfÁ ù&ª‰jµ%Y'ªfˆ™Ük•ÙÒ•^M>0ÛÖFÚ–YË g;ÙneË|ÚȨ]¥ü¥¼mæ¡°V»Þ°TôUõÒ1Íj7Ñ®})ÃëÎè3¬¥@ƒž/ý¬¤H¶ræ*;,빚 ‡¡êOÿLzí©À ç]ì9¤æ…ÿ£«œ ¸CêNÕ—6 w•÷$T¸i–åþ/+¾#›-Í;Øë¹ƒ £¡iˆc{™5\ï9ßA—[Þ4>Ö¡Ð;L|U [ў΋ÞëØ9h P¢–Æ•=̧‡qÙzñ[YW]3G i6éBu'Í?à„ÛiŸtT“ÓÉõH7𮕂4“½ƒü)Þ;neõ}’Op¬"]š¼“Öô^–ƒò½ÂÞ+Ø’Õ*Pm’‘í“ñ+šóé_©GDÓvx8òžøR«nq5Mò½"ì¸7;/{*ãzPd~Sýjì"m"7„ݧb7ËTb*‰(îWèË»œù1y  3Ço¢M N¥ìIÛ^*•j+‚“ònÀ Uýua‰V.B¹Ç™+ÒƒâwůIéš&ȸ—õ5MëØl|œzŠþ}„{¢ä­"·”‘ù–²#ù@ú¬¬CTfÑû2wŸäujV“ÒøN²‚ó7ñ×ï7 xAö›ÌóIâXMÔæ˜‰±p,7îClPÜŒdKÞuñ‘_»åW›öÄ4­Ùò׺Ðë®Å{…- _P®(ÜE9œ:”{Å~ÊIqÌ5Îc0‹wŠȧ/¥ …Gµjg¯†;~:A3¯R½S™…Êx¼bëi©·>´!9h ò7òù˱LöKêgÔwnX˜ëüì˜i)ìÌÿ_¬éYâ]µÉuÝkÈÕt2þ®Ÿ"›Ç¡Û幎àÛ<Û^4Ôú‹½7Ý0r_›>>òL4+g™f¬ï¦},ûEÑÁ_ÙOÑeWŽË}—™K¹TÒæé² }ŒˆLÏ?V”Bž„P$È’d‰@LmDRv]YHù ÚíÔ±ñY±pÂñŒÁ»cs¢vElŠ/u·ûhD/ä_°^»C±Yküfú`i¶\3n1¹láK$àüâîCBoâ-X(>/ÀxŽËæÖÐjÈ‚ôE5ædR’#¡:&¡†@¨}œ# U—Ä[B·­Ô|Ð…" ¯•jS"´üá¼ì83¬+ Üo6›J ˜*N4B¬­ß`æÂD§9µ¢éÊE²$G8MÛS>ÆØá~ÜØ½þPÝÏú…UÛœ‹‰GÕM Wrœåºãœ/®vT×½äw$1 k…#í­™'¶¬£Àô:¾ÁÑNÒ½å-á¼àË4'ŒYÆîâ#4súCÚp!M Y•°möÜlü§¥±Áè­vµ;‡¹ó<éd´ý›V'-‘EkrMô›Äiœ:®¡BSÂ. a…3¾3#Tq";¹­ O¾'éXlSŒ‡ò‰Q%Z¯º¡øOÊÇ…ËØJ~œ™öwÙ¦„¾57&·¶?AM96(k[æË¤ˆHeDDrPÖHêÙ¬’­¥è›híyÖÔG±‚„@ÆïY[ÒšRç´1¶”õaÏfWU<ã/á5³}¼"Í{Çk\`XQQ—Äýu).e[²(ù]‹øñk¢‡DîÈñÉÆ/qofF¥¶§\¦De©23†GmtÆ÷óœ÷L&iD_S¬B¶÷CÔḀTÁG,ÖŸøát{îÿ’\§’Ø€co}ö)Æ+fÜ?´Gã; hÓzÝgÍ}¼Æ*Q ÙŒ!¾¹z{k](ò¬µÔYw£SmNEª6Ìv¹jñöáõL2Æu§Uƒ4Eî¯ýðµÐmÇ"ûrë5ÝOérM.° ¸,Zš)®ÔÆðgƒ÷µµôFf]•çˆý›ÞˆX=ψIÐ-C;{Ö×î ôs½[±$+ßò/8ÒÑͦ0o×7jçiôª6Yº`º`޼x„Ítõ%A|&zÛ¦:Ój¢›ú×—× v_®å’WŠÑÁÁ²Yt.û$g=-†ˆ¦*µjR#ÕÖ²Rç9ÓÝ«‰)ˆÏ&7¸N‘Cà·¶×ðmì5as[ÉP<ÓÁ{¬ã°ÌºØ"6%Z¢aŽçcàVý&:éOXî:NÛîƒ#‡Æ[Ú¹ª`Õ$S t½Š~ÃÎÑÎVb²³]tX`ª}¹þ¬æ¥õ Öi˃¶Ç ïÈ!¦‘†ñ 5k÷¤i$â&Ƹ{!}LSôíú®ÈJ[Žö;‹(ô‹ºè» oÊ÷ Wjîùñ€¢á½k¾í—)Í5Ó7Kê+½ê±ö»îù¾ÌKÓÊÆñ>…=Á6ÁmRkše³Ím$õSŒƒõ[äûDM !:ão°|ŒkµÇí øj«}þý5¯‰Æë<\¼_½_=Gûê? º)èÂAÔØ»²Qu×°Ùª5}4†ƒ×íådÀ3ÑI:$p<ÓI:{"OáKXg<>/DòàüoÇcøÿ‰”¯qtF”ø ×[ïßÕêÚ¹Íß¼#-/UL>í ÝSz€—*W$ÿWfhÕ-Ðäè/ÛCœ‹¼?ñŽD¢Üû¬fWõ´zÍÒÚÔšûh‰5ƒÍ®ÞÈáuZc6FÛXt£0”¶–º1ûmæô¬¬>Ô¿ü‰ø7ʽPô‚9Z¸ß¤vÜf» uf©ìEuªpSos«ž"\YQ9ÔÙK3á„ù1EQx4­ N|\Æ×½±¯À–(Ó黩÷2&•ÆíO»[S(Í5¤J $MôÅv$rÞç§å.’úð$ÏôÞ`H&çnMN‹ñÇæÛ‘7ÃÏD®LÇ‹F ~TN- OÿL $s(”ä›Ië"ç®›¾”!@*ü³ÝL4a|êLÖ@öï9CÒ6Óóå¦5¾ NRƬàiüÖAŽWÎîù Úæ÷µzÄè1ì~žë'h M1–pË+k¬ùŽò­4 ‡TUàI— `«ßØ<­e^Ëÿûû³ÁnìËÅdótEÿ–=`{ø³$Ÿy;¸O0ðX·O¸³üNù=Þ¿ê%ˆž„ÐVÇ8ìgÃÝ ’(˜ú’ËBšãIÝ›À4ð¸f>eúQòW¶z4¯•v7OÈ(2@¯YŽ{‚Oé;ÎRq£F;¢zFuéq¿ðƒO}w7þ÷´Ö¤¶lqάìãÔY&{‡y{ïz»º"ð `àƒv ‘D2ÖŒ^µ¾ÓsÁÉÈf<ÜŠ*ñrWg¹#w;‚Φhð6…-=ô-zÌÀÓ/1Oï ›‰!„kÇlh96_`öµ˜5#Fk¤5ÂnCéÕ—kÇÔ¾oo¯ëÚŒE•‹VWŒ3'£û—p«Å#*,ÇÅëä•ýùlÏ;VNH>ð>‹‚Ì›qYÕ—¢±WÍ6ËkÉ:í4 Köÿÿ —‡W“ÅX÷¶Ž:¨{WQë¢~(Êž°÷Þ„Bd’=ß7oòîì$ QmÝ{ãÖÖQAQkÝÖõù<ÏsÏsîïœ{¿qWc‰’¼EŠhø³©ÀñÈ:}¡"´KáõðoÈ)ô2ú/˜­{€D‡*ž æ+ëÁ=D’¢Ë„r±~¢&¯‘Ï Ûí,l|£Q?]¼nG'é8`‘dŒ£¢TÍ—æJrÕç4"©Ž7ˆ£ã(†ÏÀ&ÍUšöT ULð˜ þ£1]pIØ)Þ/¬Z§_G¸ÑàRTbiÍqLmúäØj?çü†T+UxIÍ]ÚêrkY T5²!I"U( Ò+oåÐ0$ z¬¼¯~‹² ·_µ•Xê,K]¤3†!Ól§ô] ghC²®å°ó¿¥ZbhQ³"•a7#j’_æ4eâSRï§^K|ówÁ|všÑ4Ëf!ãT׌+º^C—íTð¥odõÚLIJG–¥ˆU45gjjat[hIF™œ‘–õg>T1³~^íµ‚¦ô„t[¦=“™7‰6²ø\æªdQtHä}ÊÍhQ’>iXRf\WBP9[<[Êå¥Ê›_jÖe"IEIçbü"•¡wüçúõEÈY>Ÿþ¼èRò˜Dßô½YçÒf¤ÜŠ_D=,Z©0xËÞ§ÅmK[F·—®Ϫ—,Ði-m!º9 ¸`*o22¦8úZw·ïno5•ÐZò•¹Ð4ª.¨VK7Š@þnþ8Ñá‰Æ!òùè§­uD[xëì6ÿ6¶ãƒj3}GõÞ>‘’3±z[=­æAAOÌàØÇuSô# ÒcÌ·b–ªUš!ŽÕðöÖ½çÞÐØ;ì®ùZi¹4–,¬á—©æèl¢ÑÜ _K¤½ˆ—¤£y>ùžYgRï䬯?5ÕµÏ ›s±h~ÌàÌûéc“ÞGVPodòS›“\±Q1_ãÏèJg2r,Ù•Ÿ™ë0ÓŒ#ÍdúBÇ+¡.¸þ ËÅêŠæW±¯r‚n0 ÂçuúPÂ×@Úz,Ç Ï‘µê…âNy= è/*KI¤2FíпE¢‰:lµ “°I¨së=¡…€ò¯#øèi]ƒÖîA—‘!æ«]S:Ë ºì1ïXÕ'~20AA­àÀHº °Æ»ªˆ»‘7‡ùwù·ZæÚŸôÍü š6ûàä’>š°Ï:ÔþD÷S­Ùk+œÂºÂß6 vø‚&KýR׿B*1>šø SÐ]Ø Zž#ß­ÎÐêð ]²µ‘#êGʼQj®”({å”וŠoÂ%‚5|_~*®ä > Kú—²‘"¬Ï 5‡[£fò„f°Ê›$w%ãŵ^e·ËŸ×ÐWJû…1¼Þ=éZ¡¾º=À昗ØÒígÍág«¨e ‰Õ4àªh³6ßFT¤”芟e¦ÇGì u„½Ì úD•Œ({LQòK®#þÅ™¹KððkžÑ4Ü9Òú êkÈdܪϫø)»+]ž¨¢ü•Ô]òWÕ骘’¦ŒKTg¸&Œ6‚²9J¾5zE¿xvžAK‘q8?ކTÐiÒœñk#Ï… £ÞHZ–’•–î—¨¢¤› \y'i µkN¡ypîæ 4M ™4;ö^Äþ¨­YO‹Ã |R''ŽM»œ÷s‘"×'3'cÚjXÜõêUŠ&îÁÄѦÂÅU®Ê/ŒÂDpIqµº)ª¶°Ð¿ò°Øh6ú˜®X?¹’vÒ[6“SïÛ³Z™š´¨½–&J–)æC/´ç%VÕ"4ÞùÈmij´^1=%6Šú+œ÷ÒÑR.7·2«jk‰5úh¨3ª™1 M0þËcñÃÕ<ÍZ³²7 M¾ó¹øíywu{rü¥ÌÃÕaõ?Ô7ȹ--£&CÌÏæ{(3Ÿ¤‡e½­èR 0\Ý/ÖI†³WUcåÛŠ–æý•Xáw+Yž?¾ðߢ!Ù$Þ+ºS,®ÚOσ–š¦Q“sH‚hÀÛ/ígh7±ã»Cº11¾×ÃCÔQòràP«ü$jR+ÑÃÆç–G3vS¸Š}Ez_;A(& W¼ãõ7ÑMD-áUb]X1œhÅF£ÇµÍlµœÀ½:høúì„g“‹]³öšô‘œåâ!2Oø¶>ßtŠÿI$Ì7\TÑz"/eƒx;ù)uÇJG0 ùœú-ü§ê‰†Gèå&SØáöx:8RåBí÷oˆ¦HgkŒð`è²¾žàZ8&&.A7ê ?Â~Bµ½±_NƒÆ’2rùX!x-Ìצ`lÝ4u(ÐÿK5`ækoýOØ8²‡¨Ç“Ðu:DJ*(ÄXÛûJ›§•c¢œxb@ÇC-šr­T·9ŽVéÆjDê ª›²@y†ÕÑŸÂËÃ6†~ ’µ‡yÅv¥›3¤)·b?P½Ó·®)ÎÈïN Œn ­ O™–1-šM–f®¯ñämg³è­™ï"wGp"Rž×Vê¸æ?\7lG1†¦SôIÜÍ[EÛEýWÿ9å/‚ôwLkØÿÑ5zð¶3Ÿ×2Ù-üÝÜ•UÙÅÅe2ZP.’mÌ}Wt l‚b5~Â<Ñ`#M xRvPÈy®¬ž\¶¾2¶j/caÍ"îbu¨GÖB©ܾ³²u0V‚Çn  d…î´‚xNÚñ ø¢ÛèÝÑ㸥¯²Êš¹™L–([? péaþÍ4 šÆ=/™ÚÑòER#°]~ã)8…€ÝnZg^mœc ³Mµî1^7Dç™F™Ÿ›Ÿ7Ñ] N?ÍÑòQ¹Çs¼óû—GÄ÷†Gdž_ ݃äÍ+wæoË6ÇX3[å—óÜF×|×÷;,ß@¡Gpj*ÎS}ŒÒÀU_é¬"öµ:JUw5š:2h¯VpyÄÊù¸õ©¾iŽX0²›úOΨ|4kWꑨ¹áÁ‘ŒX¬¦ìÓÏ.(³Vm®Üœw6êJxµ%õIfY+ñÇÌq¹™;Û)Á^í©W‹oJ“?$åꋪhÇj›ØkO‹ž§­ˆy™¾ªú½±¼¬æŽ0K)>=nLa̬×à'ñÖz*{¥·Á-æî{Ιä[ôqÊ2½)ÏÍm+s¿s_sËÝ‹œ©p¸¼Eþ› ¦'ËX Ü]·¬f6»G!××Â{rx·æw?mBÁuÚ*VO 7ëvl^‚=¿W€¡çlÇ]Õ­^îΈF’P_Qþ(ûmœ6»ºªUpͲ­#ÏpšïUQçÇ~Z'¬kæÐ…ÃÅ·xÞõjŸ”MÿšN¾-}PÏì—@ÈxÓ+Ë~ë]Û †Pá!èvýA|@’¥Ü¨pëf[b]wš6bGôQ?ø¸\3G7þ M…²Áep4F ïP9ÖiÚbg¨ú²ä†`P»’Úý‡Ç^ãÃß¶áx¢"I,®ñTÏn«ûÁUèG¼[IÞ%×’JÃü&ÁØú eÝ´Ò¨€A½§}T¾š+ÐqÝXl™¬<&ñR5a›çœ%›‡Ð=ó$uéÒ ýqƒÔ°¯–ohLËË·ðþRH–ì³r”6âÈ|x¡[ö¼æt8XçÑÕ÷À³ú¹Ú@E.pw9|¸B™š h:0˜"þTÓK§Êc,µÍS°Uô»t%òŽmôf/•’Nî1ÆË€=ÈRdxHÌG‹À…Ú7Òñ¼‹`©ßæéžâ¾îXjjœi™€ —‰ê6 ®©×ÀÿÃÇá|´íD÷#+ôµ°î±ÌÀ9¥ÐÀ<yžÐZ–ð;VòL¾‰ßÉì­ ¶).­k{Kc+­åyˆtJ×e"T/ÆÙ;ð,ü4ÑGxXkíUæCØ`ýNTEˆÌ…f£i´y¿¡T‰—ÌΘs.kH"=æ;žMù9#œûµ=únT@T|j"3R{«9²ÍÏ­p³Z5¬¾¥¢-ΦDß :ö"©+GSTÓ0ViQ8Ó«ÿÊþ-Zàð*ÌgNŽONø#rzðØðßâ%Y̼ü´Ò˜Xʯ9±ÿfÛ3€øé‰×ÓÙÙå9O2 ø¸0A°š:5õs’=Íšœ7+D»}„ïÐÀƒ‘ý)2^D¿Žþ_*3ͯ`&ÓWÀmh+J}Ó›’\çÔÞVq ò?NVý§™ªá[Y³¸€`¼ø´r`£î}²ï€»ù™Ùi;=šÃÚæµ¯qgµØÛVšn!9ð˜ŠFÀú„<…3•Œ©v‹;Ô—5Juz¶2ŠÓMÉ¥u¾ÀL¥ˆ5¤,½2?Dݼەl9£_þ*[þSªOnZþˆ¸'IÂúuˆ—c­û+®¥_­Œgõ©uÖ Î³F¾`;¬¢$ÃA ¥H6f€ ЄWXvÙÙ¸Xú"ÇÀ™#¯)—á}¦Š¦xWXç¡vŠE‰þ 9¯ŸÝS5sq»s›Ë×ðš ˜W%;å/ÁEð.¼ÛøAaàJˆ‰.îø]·™v!ã‹¢š¤Û5¶q„‡º@èÅžÇëafÖ¼R¶‘ ð3èô RÍÖpCÝ;ß_ÕåIüæk…€z(eIÒõò =ÝüÞRB®Bžê}Cª‘ˆ½²zVù:Î[8¢y’û‘MŒþ©OÃ^ëþ§úQè£`i?!ëÉfÒA|3ôU¤äïSšùäG z•”0/u»[„•ñ‹ab¹š„dÙ!úÁFM)ÚM’ÁÄ-|"vU¿AKi²ëÌÁ}¯QOT¡#‰—ärM:;¡vg‚ì¥Â[ý>c¥5Ïw‡´^”ŸïLÙŸT•t‘ú*Â/œ埠L4QÞ…8ÂýÛÂéžê‹£m ãCÇðö*Ë]™wwÉötq˜ÌO _}±`ðF™'ÞÎÚ“ÿ$b|äþˆB¦OŠhŠžÿ(zk˜:à‰GH"5&+'CÞò”þˆùaƒ¢;cÅ®Œ ŠwÇÜ¡HHJ¼áù4|Xðóð¾œs,°öNnuô/a2ù¶i;°°7QÃf…¦ÞLþ)Ì¿XÐNd™ú¢6S——^—ÈV‹Î§õ …PüZµQ!{ °Ar‚óýFL‡Ç»özæX·®íDË=§ )Äu»½içµV?g™bϲp‰¬/5l6 ep‰XÅ(*ê)™Ãž$¦\®~a»v \¿‹º¯R®9o“üVÑZø&/Íkœ®ŠzJ]ŒaÅ“3”„r›Y}éã;*z%á¬îã-GÖòë5uÉLJí¸º' ‡¹t‚yqQþ…—U3‰Qˆ/‚«Q–§©û†dk|ÜZîúØö°-¤mìÕRÒº±³¸óykrólÇÛtçL[ ¹šiù[õ!§¡zÃ<Œ¢/ÔÌ•íµ‹GJ‹Ôžð9DƒþÍÅl†i±¾ —éJtÉè&brrñéü¾IJº±H¯žt£CÐOZ=ŠŒ#Îb{±ÃØ0b'üøZÓ#iÈ•O³w›õE›Ë¬¬,Å$.›~5‘¶y;ÿîJ«Šâ…¥ÚplŠ×Âm¹Ü±±•æÜ†êî± Wи1 ÑºÑ®i| ðq.ÊKMÏÛG¶‡ÓÞ¾L«ý [P¡J0IÕyÂZø¨äyÓ¥´? uµþJõpÙ™:33[9É$1ï%Ä8æ"ß›Ê,eÆ<Ì„®€ÑÌÒÎÔ«Ðt"Øb5üÄ y+’`ÐiÈK5*H´Àhø´I»TÑøE}©  ?XwX¨Ä ”««]òë¼5uµ‚TÐ^®;ƒèGë‚~šÏêN ]{ +±ö¹>·s±ÚT­!–Ý%ý`Ã7|#Œè+ôø¥¦Ë½í¯œNS&i3 vœpüÑœè8‚Ö(fKì’[’ã܇e‹W”ª×UŸ/ܘ"‹_ÓÉ ¬Ž>›þ0'0õuäû@™ÿΰžÜùü‡úƒÎ×f¾Sy¢îvùÓÂᩯ(+B˜; ¢ò_:—wlƒ~,ñH"€p±ÿ¦ðq±­)C³†fe$K#ŽóW¬X ¦G¦Æ¾JÏ,äåïŽÅƒpÿÿüÌ;•Rz©{JS~JÈŽL Ú~¯ÂɾWů^Ayâ‹näÿ{`›ßà {tn|aÂÑ„cŽÉO¼œFdœÍÜEä.½ÉRpKk¬4OZIaxá³ UÃX±Nµ\¤¦ qVKc>vÔ7‡»Nºæ»—º–7ÝiZÚö°óâÎ÷Í›šº>ƒeŒaŸå_{ž½ÖÆÃÒ… F§ƒñ6ïm¤àµ&\(ùÂXW²:?'§¦ŒhìâGåo‹Íˆ±Ä$_+9^·´a~M[±q›ª –Jª9é“·•Òg—ƽŽèëËK¬¡±òçÊ/>SÎe]æ¯oø\墨|Ut?. ‘Æb·ŒÝÆò.ñ0Žy›&NX˜µªc¼ãÄJEª³Ú¡Xdùd…-¯°8¤ü{÷ $;É_ÈÑøI¸Hù¯¶Þ_ÈS·ë¡CP¿¾’`™>“ó wñ¯ÈCì¢aš%’ÜB¾'£ >D#×›®b—t:ù¦_ <Ф¨o÷‘T2Ú”`¼¦³ŸÀ‘ :[Ë/Ô14ž aÉ%n°f%öë°Xç:N·dt)ÛøÌ/yÙôGòÃÎe;wîýºçXÇf{¦ù ÅŸµE{K¯µTYÀ§ÜoÕ.ÐØÁ;øŸÈõ‹†ßùÙPvÁ<ÔÔ ÝUÆjþÐQ°§è ÉƒÊ ¥—Ë÷Õörz€M„Œ˜!­ºÁÇ´¦ò,щb‹ õÆrÓÓVBŒM„)H9”¬(PèÆ “áR­ bêb5ÓþªKà* *[Ù8ˆ;DtýdI4F'µåÀ´ý`vØýœçí.Ó¤¯E½ võÑ£F_ñ!é'ÅmÒ€¬Æ–“»1îQ™xž¢JÝfÇÕ–.G‹3Õ™h®;—[MÎIV\¬ÌQ†³,¹.¬å7Û›f¨µ¶y…kBÇ„ö–Nx8»NQûkéûT¯Ô…]¥?UÊîÌÜs2|kèÅ(qì–ô»…oi ½Ó ãˆpeè²”wuªs^k¨Kn=ˆ –qÉê‘×R–' §. Z:6³¦ÞG0¯²4euÖö‡Éás(Óyé³óç”öçŒ‹Š òòÿÙo·_»__ðÝÈ´èkÔ¤”ó9úä­”ý¡Ô€©ÛÂ}äÁ¯æåväë3J“FÄïKþVk“öle üƒzç+M˜Û›¿¨â óç¿Gø·´Y\Í^ÉÙ­˜[]}.Ô]ÝÚ×¶ªåuóŽvygGGbËB»Ûbõu¾·­Õ®9-]ýŽ;PŠp¹h¨|nÕ®ÌÄÊ>ÅD¢î’À²­‚§t6#ZrD’]0>ò 5#ih¥8•q£>®vTigQJU«‚,ü…Ç/Œ?ž²6·7nqLTᵚ÷¬ë3k÷–DeßË^T<«ÊQf+K[HË(~’“TUŒÃÆ”d½¡‘L3¤“%w3´é·SÎd½/9T¢-w7Ô(”ú3 ´D߯›‚^&;FX›ΡÄ>Éâ:²n­À&ÑIO‹ÇÈ Àˈ?nŒ$\l¨¶°Œ65¬#N¡áªqR'rœl%(ÈX;õût¾š Š9ò™^³…üúÜÒÖíÐý£º&![­œÄ>P46ÿª¨ ýÁù›jIiöp•šWš_Á^ŒÖÒæ‚Ÿ«:Uó ôöŸ÷ïßn¶!ý˜9Y­;ªI×Î7îpW¸–‘2p9rß~Õ’§zÂ;(ñ“l垨&è"Þ7w¹z¿_@/•v:ÞA^”³UÞÖÆhæSà†n‘u 8®æ|ƒkaYÇ™þ‡§cûÌ_Ì¡x±^¡Ù­Ý‰îBd:íBýC¾D‡ªv€/“ü —'z©ªf(OIt*_²Ý~ÖüÏ€O!lüœñ¾ÝÛ}ÉÅtW5;jû/¶uÆÉ†åX n/P/ïÖlAqãODQeŒ¤É®‹œ`·I¶ WmEÍ“ãm¯m(ˆW8vžÚµ¤•‰ÿ¬ÙªªÓ !äƒñ‰“Þ¾¨­¹ÕÝFÙ]×> ÿ?ÿÿ —{†F îÃ݇î X©§I*ñ46îîZ»[S¥ÔKq)P`Ã×.2`C7Џü…ïùÎsÞ3ÁôQýH°’ºE?!½ød©Šé,Î[VSЇCÚM°<‚M‚[H¿‰› ý|©à‘df ¶ón·Ý_õÚûÎZ¯(h ñI³°­0$˜tåV@3:øÏ˜Aôk”.4¹¼xï®ü®¨*¥=‡ 2ÓOd{ó»¡+ f‚ YynØEì‚þ¼(ûiÆÖ,lþ4òRÁo|?ˆõ£ŸÓæ3‹ð@äé¼wéÇ7mÙ4'mú¤Ì$1y#D¹(šŽˆ#{…; òÊ/ÖÒð_§ $^ÄÒ ¸ã¤H™GºJG°ƒ{ýß:n[†ygW…¶ w¤¶ýÜ•·“Ö±¿ÃÔVÒªnJÞþ}ýü†þZí“èžøÎí„–7;°ÛËj¿ÛÓ¶ÿ‰»ƒ’L,VœµÅ}éÁÖ`»ã³nwÙ¿Åýš÷oÁøLÊEr/å½®z¢ª‹;¸3eç­•UwB+ ˆ¢ð’4.ÙN»ÆgÊX™q†™_V+áNB¢°¡e.í+N«§÷ªßx&ƪ¢¶èܪHbdb°ïxyªú±ä³Œ ¾àd°ðÔ5Œ³Ò¬ ¦çøè™æ¢x–º|{Ï7¨ú®F×6£™XeN­¼aÖX¦¸ñM ¹â‹³.ĈMŽþ¹ü#4:ÕÑkÇ×Mð|4-ðî 1"?œæÛâuù ½^ϯ޽)¤H|¨™]=81,dõüâ<ä9m?U¶Wú ·Ê²&±¾åéöçÕu{CeÞ•Öå:]L¿\ô‚ùT×±"SÚíàË´Ôò§›ï_㨴ž¼‹_KÀÕêÚÉÍg…ú¸ü·’'šgœRÚéÖðÈæ¿Zæ72=ÇÊ3+t™b«bߨÞrJç[v™BåqŸ'ø]pù¢¾À¶<ŒWVÏŽÂ"‡Å!­{€í/C¤¿2ËûWìlŒ¼h‹cñà8Ï#ïÝÝü—âF)Ï]yøà{}Ö0¾‰Q‹ˆý/¨k©õ6ò[»ÛÇï²wýÖ~¦£«UÞöºùÖÔÆ U}Á¬À—H¢ö¿º?ãÃc£%‘¦ÀÛª²Á¥û\ÀèZ}õùÈÈpA_ÕY÷Só·mü–ÝU½þ½îÃîgî7Þ¼àýhASoªeQSÓö«‹£Öb0å32†=}FNœ–|'¸À;ÆÞŒ_ SÅÉ.æJþÁ'n3ó{ŒÃåNÉ©gvŸožØéØ!ƒMv\éP¹†ÝMÔ­(üúˆi¡&Òd¼v z½?½DÚ!3Ê}Šõ’aô¨ó`K–;¿†°•ŠÃ?†ÜÏAfQ ûàHØÁ‚©Zȉ:ô-ö$%Z.ØŽ?+‚ß+èÏÂl½ž,MNIšI-Ͻ•5:]’ÊÚ¼rsàa¨àî1ú_T$àËG)ÎÊâª}´|ªpëÝÊVq„8^ ô×<©Û«†(q—÷y€ùžh.àŽÏ_Ï8ÈÚÍ8Ο©@êIƒU K%4ßàæŸÃCx7@VüëJ½i<ïoÚ~•Û† .þúç;mPê:àú¬P>Ÿ\Ù!”òi}dUdyxN´=z.v.¦ulQO”½á×Ó«Èý¬É|'ϺÃ:ÊÁ±3v3—ñŒ’Gú?´°Dz¼;t=Ú[õR4Êùs¼µfgd†¹ï eþ˜FwŽDˆà @yË Ýø¿Š ðà3 ‹ú)Éþ"ÒmlWá4ÔØ¢¡¸}ˆ/ТÂ-äGôs¼4çYi_¹ë+ Âó1ø˜¾½‘èfô³Ö×B¦çÈ2‡§ Ør;yCrNÊl`ìêiþüLSj[ši˽MG²ßÂ44·“ gZ¸"Á9Á˜2ô=¾‚TIшøRf’~ªí¤;?œÌ´]/]®m,½íCÔßoƵýÔ¹rW°SÕ4(œl7†+Ç´òÛۚĄ Ñúêÿš6¶‚ºŽ½÷sNõâÈÝ@‹‹QR«é0_sôÕŸ¨yãÞR–©[©Î“ Ç®ÉÿÑÏ® _¥}´+Ô%]²@H•* áPlÐñù¯9ë+ž*‡0×*+}GCo›Ûë¯_‡8< ~”õ f ec*¡þÞð‘¼(9Ú_5+væ–„‹¶àIì5܉ÜÝü„àÿûå.×K÷ ‚bwÈžçî«vï7góì‡Ü½ÎBsÀÕ* Þò4:NÙPÖ…Ö¯Dù\ÞUžÙ½sŸK|Qõ1<Ã÷( ü\Zºì¸ʯš^ÍŽ|pÛw<©±%‰Q’ï…c`¥opøUâ‡Ð‡Çx:ð¥>¯VδßWÒ%ÚœRv™Û¬4®¼XúNEæâÖ-ÑËuO‚.ñ5ÁZîq§Vc³»Óƒ¯ëºÚ”‡=‡Ç:0€JcŔР•0s„‰òŒxz¢Ñ¸Mº¸"ÅŽp÷‹‚‡œý%f¦,Ë#«7ˆ£zó`ÏØÄD,z:È‹l íµî7¾ þhH¦]¢ Õ4ãvW‹·Åƒô=t·,5ýg¾k_bs—•¯²\pŸôŠ‰-‰)Ñ÷ž6¨ËÌŠ ŽŒ‹l(èxÖ ìðv<îBî:Ûø$¦…}m®õn«í¿[XH¸b3ýwÝX¯Ö=Ã8U›lúÆÿ«Ïîä^ãþ3ŠàâI‰™a®å¥â±„Y6ÈqÆýØC fU½Ùñw릋ÕçíßY¼~¥c¡¨›8‹À$AÍÌ/ˉM?LÇ—’Ö‘F`=ÐÈ=ÒK^ð%'ÌBÐÓvÒ;q8è°-óJÉMWÂ;Ú3ÈÕkz£›Íï#… ÈÙßæ ‡‡ Ï3ä^Èo.Ú‹Å"†áଉôsˆË¹u9§²Ós‡ Œ¥„vø ôKÊ(F9œQ É5Âöáöe¤qua/rk!ƒÃœGdfÛS^l—r$å|ZvFjæ*€-:rbx$‡ ú8<‹–qè&\QÅ>WÍ­gœ#F1"¤:·àâ.éé¡|뚢»™¦Õ¥=šýÊ=Êyº…¶éUð¦÷-ÚOìJÛù¿“¢»Á°yn+ 9}ûäÚì8'bˆ—Ö­¯ù§jbÕ¥pzàKUvÓ£†‘mγ¡Û7tÕvQãó,CôËä_{è݈ßð ÖpîEÖŸ¬fñ,Ý)à …$MÌ–CµP; x¤Ì©þP’© Ú­ÇL]…àžh¼l•ˆÍ/ÔS•³Ñ”Ñ"ƒù}øId@LmüÇÒ#e¾kV¯Ÿp²h5c o:WÌ’0¨ø°ßaG0\Œ;¼Ð¶Ø=–9²uC%½ÂiÙíÉöhï}£©UþHÃ×M½Ð¯õV†ˆ1TlAdŸë¸e©rn ]E65ê€è¶ØßÑ®ÈëPnäqkó÷Ú¹úã6\änp‚ßézâŸ>ì¼à]˜H±6ÎshCsÂñòž²Õî.¯Í4¹ò‹«0LðOª¼e\¥ÈsG”`ƒ©¡4M®ò®Õå߸ÃÕõÖOh¹¿ëðaIÛŸF± XMu^1®Ôÿ¤Ðçñá¥iµg‘‚SVX?Â~ϾÐ×W-‹ Kz%]â=åXÏßÚÌ_?Wn4Ô¬(<,×gãp#%4³J`9¨ž¤ÿÙ}¾fZâDp\àZ´-tÅ–\º¨â†e¿3îÄÙ¶ûÎdïìà©(=*‹Î Ýò,ô0½—Ó¢é±÷Á ‰9ÍÂöævÈÎ¥»U{Ø;†žzómM‰<_sÞ”ê¯!×=¬.ãí>›o¶ §TfužpO³ýl½îº·Dá©Ñ‘¡÷–Úñº¥ŽË‘òèóеع†`}R}¸Á»i-,±—¡ ”ƒ”õBÅ@*)M®#bœ¤º£ˆ¬b¾¹·™:”ÓÎÒRPQ¢L$«¾x%BZÐý—ìÖ.g îŽoKj‰ãò:3À:X¢7¿ X ¨ÌÉ€.Ãý€;V4„Œe_£º00¨|DŸ,¦™ s Fœ…AåÄNÚ÷¨Ý¸Óä8µ‘VG^Žï*Ô!?! EbûâìÄÝXëW½Ž.¼3ÝQ¾n£o%=…PÀ òâGø~ÐÃÚƒ,~)lù¥_4“ôbÁ"Ürä|ìiÚînÑlùÉ0±^”Éù„ÚL"ñyˆ,°t~šÀdÎä;9ÿás÷‹Rªf;êé;ŠŒõü«|?"~.§^/Í]ËÆ\ÃA RØÿ`ÉØ‡üµ² òêKÚFÃ^óEKTuµ¬ß’$­â€DŸ‡Ý•b ðë¹”DÅmÎWdAéD3£?F¹Gã~áüÅ8ÂxÇîá¼bɹ6®ŽûIP"/×JFsÐEyOÄ-òkÀ#‹'R*±3pó™>Á-Q‹`½ð”8IüPòžwƒÑAÈ%‰É«ñéÅheéŠ%Ûø¯  ŸÇxÇr(»H5øÃ”å¬7ƒ?RÓá›ožƒ}ˆšHÍ%<ÎôdtRÃZ´þ°Ê(÷s¯òZxéÔ ¢na ‰“d²/J*+ÈÁZG¹KaÏ-å%L-SUŠZVZ§èüÄûŒý-ßQØGê¥$‘òfßK#ç¨@s@°4Ð V¾†tgá³»s×}Eý?þŒ÷È à£ ·øûø©Ô«âÏÒéB ç})a.!“oâ-’¯6mt TO¦GeˆgˆÑ€[y5r¦ípåHÅ/¼2æ,šZÀ1äW´SOé¿Êÿ„=< ó—â-ÞKÇê¥L+¥ªR8g*F™þ1æyIö^ö6Ô¬B+-¹d¤ãœcŽf,£õ/Óq±ƒË/•ñÍŸ{ÜpO(¢üS˜”-Oÿu‹{›w†÷ìkëüÊYJÉ&l@?E„Ð3Ñ¿÷kÀ–\‡ÑÒ"§‘—Hc™äxR¦ð?ùqŸàoª`ºÔ (µª¨ž¨þKp‰ø VO]ÄÉãÐYš”Ê@æ8ˆ ü*ì.Ä[È6Ôê Ùÿt%bå¢ò]­ácéKÉhòÔ™L3­€!L‘'ÑÀwç% EE5øÙÌš7â[d‘'è•R¹púïÔdªƒ•Ï_ÈÿÈL¥êIƒ`?çîðáx®l•’(UòÄGÌ¢2Ñœ~Éßr…ì¸|¶x#¥°ðQ‰ÆãL¦¯¤má¿ÑŒ¨Üo*~,éQNÑ/Ù£}(zX< ±;oq ¦¬]ýY½P…WVÊ—0€‰Èl è\š𠪕ÜͽÍöâ¹3@4Y_´²ô þ ®‹¹[ôN:Bùɰ«ìµ¢‚¾ ÷c/‡}–;‹s ›üV’¡Æh šÕš£:Rɰ²ÂÊæÄ'¿CÒEÝÃ8*è–5kð‰HÌóSVa2ѧà+³ŒiÌœBÜ\>^ø£wµxË%œ$Ìãk+˜¿²Ös‹Ex9EÒ%Тq¨æ¢rün¬¯hy:Dˆ³(gkõÚ>‘Ž;]Ð#bJ‰~,d3ü>z,ª+yfk­SþwyŽð ™H8Iù‰¼Ž¾;T”¤È–ßè•c*«Ó1LôÚfÿÃRt Í+_¼ŠÍ¢®á”aš!2Ü0Ìùl4¤R†/IR+XÃÈÄ èýh7ôoÐ&¾©´G<˼»|§ö´|¹àÛ¢o ·àqªS³ šagÁ³3†æx å†2–‚ÔÀÔì›Y•ysÕiðZø[À«ÔìÔ[Ù{2¯¤Ïø€]Ì_Uü·™¾‹ÞM[-˜#?(væIn0ûQßS—¨OWó»ÁFä„.o+3¿ô¦”ÃýļDÿÂ’p‹}ô®•ð-08«¸šo)G'Ë.šÖ™ÃæãÞaŸ¬ = PŸ&ú¾âe“j:{6qTÑ3ÙÅÒ×êFQƒ*·¼ÖZã”ä,n½pxQwöKþ@vZ<^¼Dø'g(s=㠓ıÿaŽõ*ó…Š”ÒtÅÂYq†a#õ?’SW]Wž“Ž“tK}-­ÕúFmjÉ~«À +©–ÒdD…_qVO¡æ!A¹±œs™¨¬+91þc;"ÊÔ1jÌ/l¶ ¦zÓ2³ì‰$‹§'¯#ÕsøŠÃ%ëÅ71¶¯Uj-ˆå½Ä“x@!‚ý?¯°Œô±ŒþöJCQñÝôbÞrÞZʜܹÀC…@n‰ðG~»0K|‹³ŸøADšˆ³h›iZÞ:©Q²UršwŠ0¥ÆN§Nf¦U‚{Šg%wʯðZ¹qÑÍO’ÂeªKª»¼¤bJèwHQ©D¨†h<†ùlðÛ\&hJúû­C2”à$üXÚ;Œü'L[+R~âîÅ_£m?Ò=(ù¡b{©Fä^ÊÈ"É¥#Ó‹x]¢ÓòuZ©š¡§PË'KSDƒeëÊ—iÆ`V+.c=’œVU)ñ·Ü1ÄÇYC 6B¦äj` ¿Öú, r'ûäU¶U¶R0ž{ŠƒãÌcf׊ôR¸ì³¨Ò/Çiæ,j}+gF1†Æ‹©Ùô0óå ÉÉ–)¶’X@ê;æFö+ÅAí†r­)¡¼Ç›ÍÝB&àWÑ@œáôAL,¹LdæØ¢Brlú#~2n5‡;E>JuCó\SÂlÇr¿.(Š—â¢š[—½*§ÓN\JžJ>G ææ!sÏ ½á/1Œbo䔸¥# é23ë‡Ôvä°Ìö-¹iPUQ<¦øoÂ.hß¶Ï·Ki(½Ê%ùÀ5òÖ3°™ã`ÕGÌö“ KÑ{êôÀb@yî`àfx¸*–ÂÛÖ±m[vü(ªIF^D]„ÄÓ²R”ÀgÅ7ESZ|mþø ™­D(?HWˆAÌ>Ì-x6ó¹î>ÛêÊÞ9OÞ‹{K’pI¬öz“ÝÈ~D_NK_ÉlàHX æ9ún&’ýŒ+ెLWмè@éGçsÚ¶Ù>Ö2É"u}öü+¿]¼$ƒÈ¥Òì8¦‚ØÂè—³ ËJŸh‰ÿãÖÉpç߯HxA€;‰³‰5ŠaýÉ}Çý^@á›9§…í²mÒ"uVæõ“·³²EŸ¥Ëv.šû€—ÅßËË“&©Ç*Tu•k+zÔÝïÆ¼Êé%jktvîjìÀƒìKà+ð,Æ9AµØ¢=aül~m)¶å[Ûúœ—=:W›y¨¦‘Fð0¹òúî8Ÿ Â Ÿ wT¤¾€8ˆÞĜȩgË–âc¨ÍÈß‘—Ñc©XÁ^ñ,Ö3˜lÅ’YGxkxÞ/ôIE€ªœÚüH£ØK™Ù9âŠ|å¢íT0á™÷õš·¨fš•÷»8I™¢Ò1ÇP:hÞaê4âN~—ú¸x"b«–¨$ÒdÙM@~^1™sç ¬#EP$5ó(„é¤dñ^ò_Ð^“è,v2ë­—Ù"\.ïW„´Ùv‚ç­À—2=e&¦E–,]'™ $Hö)•Z©f±2¦ðÊ ùLiz"|YÑT“ÒÃhoR&é“Ôï…7yßÊK@ Eßã[8Ù·ÈÏ †d¤W“.ós…¢b‰Å2 Grïs‘üj6–9ZÆREXǸ}¼\k¤$г² GàQ×ÑOá÷‘8V¾€(¤”ɦ)œòõ²³²§•Ó!Ã4½š7 Í@!6ª½r4ã!!$eTTØ%öHôˆìѹº‰ò€W\ÖžÓeÇ„ƒiCåðÕðïÉuàJk { }cá1``Í–!í…Ïr¶.§FÓ“²¾ú 'Ô0®³y¢o$W¸ÁÚ†<ìVIÁª‚‘)CR?aà<è/ІX0t8pŒõƒµÉ‚Ö Wn–þˆ Î9ˆ3È&kæ¡<ÛBsåv?bdŽ«ðz~îÃŒHöõìKYö%6e€.A§åÔdWäf`_b pQª›ÁOƒ Itæ#ÄT>}}7os/iY¶'Õ›~ ÷Œ>‘” ÿö‹àçÛÑ|¦w‡;æ«k„œËÜ4?…ÝÃHc¬äHyÁYþH‚ˆÞ6ý\f±ä8~1/°-Ö‡/¡m]ç rˆbΡ§¡Ïä6Èb`²;%#Bö‚{‘¡ Ϊñ»ÖDz]‚Þb‰ê[hÝ…¬vrAZ榀t Ö™ãêj=‹‘¦ïOrþg^ ð:àËNa‰€•2ý½·ém^#rÃz!ÿ’r°R’ÏT‡ˆÂþ%-ÂSé(5‚ykŸœw_»ÎºÑ6À¸Xf˜næ1BQ[GÅm÷@r$Ñ ›ˆWƒï-oÜ Á£Û1È&ôSb0]EÌF$€@ë2TÛë ,Áê õÀ/ Eýnßs EExÙØ¢9EÑPÉVèÕ~¸ôFô/ð­~²ç]xuEyɆëÔ‹ûfwƒ'@úÀÜDmÉîàBà ’âíýd³s·  釞r2ƒ Y"²!²ÊšçÆLùÑ^ª*l¢Î‡Ž‘H#vÅ·Ì¿ŒºåÝBý~´UäÈÍç·ôæÍâNǵJëhã>ÍFa xlUZÍ’h}¸Á$§KÿÌuËó·”U^â Reæ8§Qå6æ¸O¸*³yÜ-\›€' ’ù‰SÄ1¤Jfäp@AWayŽïõæäÖf¶Ïú›÷@8Ö8Ç1 t9“šS†Ö@{°­~‹˜â’Ú^ø5è’-*ËÉ©ËY"zÍse­䔕°$r³¢ÍÈ6´å{p3¬Þ”5qRùZñò öÙÁ†ÄТ+ÅòÒÚ²·¥%ñvú>ïXh«vOuîIø f߃‡äÊçP™ø-¼ûÛ)FP_¡ŒÿhÜv+#›à) û á©îUÈ¿´—9ŒƒçzŠ yÖ)RHœŠm=øÙG§ÓÇ“»ÜÕ˾I7H•­‹¿Ðµ`9¬¨:q¡Ô–XÒ)þºÔ^~¦<§²EÕžâz×Åd`Bð‚©ì>×!ƒRsÕÔ hÜ04m3HÖ7Þ÷Ñgó#ߢ¥P¸|âîŽþÈtõÏðÿí#æ‚ôˆ’©Þéª×ÊcòäQÕEí=ãlÇDØDÀX1„[ÐH(:ŒªÉ$)ÂO`…D5úÖ#µv2üåºí\ö*8‚˜Âª‚uŒ±{ö+ÁŽyàYúïÀÆ ó\¨qè[±Ñ¸ÝÓ€´wÏu Ýr˜†îÿ¹Ö9ï™NZÔ–ÆÓ¦VŠ›²un&Â<°ŠlKuÁ.£±#˜‡8GµóšüuPª}´}?aˆ]ˆ,e†ÚDn„.ûï£Eèy  Ð×tuÓzJL©ª³öýäfJœô>„8¿umÁŽÒÙ;x€™ëlÍk!= ƒ¿Âê‰Ó˜“H… ³ë¼ë¶û{¸=ž‰¸±'Ìaæ3^J ¾ J ÒÊ/%…eñ²•‘r¨å3¶Ù»’} ìλ–ÆUÕ‹x»ìLýIrB¸ ì«ªJS£8Ô”èê30 YVáǬŽ@æ3ÜšÙ¨Ù&MQ*lõ‰á®a¨j°chÔSÞ6áŽ\ô-ð£Ã‹àÂü0òœêƒìÕà÷Ä;{Tþµ‚›ÅfYŒ@?Oòß _s ²6X‚¶ŸÌ³»*Ö#®ÀG_Ÿ`MAz‰2Þ$.éš()½Pº2Ùºúyå>?§çìoމ§ì¥À(‰øcx3ºœ¬¤žb*ÔHž¦×Ó»è™DÒ¾‡äÙÞéÝ©>½›YO1äaÿ¾àl>hmÿÔ§ ‡TqÃwŽ4OMA]økâ jE÷Rú ykKÔãtÎ2VTtAzÔ€+ΗÞ'ÿfûú"ðD×*¡ßg|d'à@ }N,µÏׇò@éUÙ g#ñX#WIø…»€N/ƒfi— ÷HpÝ}+ià/Ûs×5ì3#'ËÐÕ±qÁb¸ Nâ¿aÕîÓ¶[ÆwΰïXÉ?E±Ù–¨Øóhí8fþ×G·sŒ,jâ‡=Z…öœá-šFæ3¬/ÂŒ Ã×|h!I€?é }ü íwØfDl´ézÚd®ÕàSh”;Õgã­a9ÚoŽû‰,æšWŒdižùEõÅçŠeïÖ’åñº¢ÅÄSËjTDœÇ[ŠFäµb—%6”,˜ê=á) ÌÁ›‰Nåm‹·2¶›N'VšOç 5âšg"®ò¸aá>rím]š—’ß ÍU:51MÒÒ™5S]Ý¡¸#òbÅë+÷ÄŸ'$Žï ]Àëˆ(µY âë± Íi‰ËìÁG¸äûcÎ V—¿›i Q­< ñ¼Ó™÷-ò:r8œC\·ò7׼ܸ¯3þJû™—+ IîH[ ·pÿH—þxÚ(Îô´)ƒ¦MóÆÓyyc² ©É5×ÚM½D54÷]NBNjºÂãýôOídáñ#Íþ¼¶YR¿›|&uW¦W(TˆZ›'~q¡køJÔ‚äÝ/ŒÈ‡ ø!š‰îe¿C˜Š.+êMÒ±™úŠë%ùÅgJ'–‹Ê…Ë£eEê«–ÚF¸MŒ0]ÖÛ±‹˜I ‰Œ‚ÆX/‹6É–3î^äIöÄm£+§gTæÎ zFÕ´”¬¦¦ÓÀXKseBÔ\· © ŸŽ|dç“Ñ®p3k¦<™3B“jã8Æ‚ð8»ž:fÿU‘¡éï| »±Jü LÃP3õŸs°ûÔ ¢¥³…Ãèyþåªëa|Vp@PÁôÀƒH)Š—öLn)㔞H,/ÝT&-ÿ£hµÏÁ| þAw¸cP?ÊÇvõµóý€ô&ï{_ÖKüŠV}Ñ`9›žNÖaݱžÄ ¢˜*búP9pžKêî ÀD–Å’è$VE7 lð÷ÂÏ€UîuØ{êˆç—úß×´Wé²—ú¼Î\#jà –ˆ¢Ö‘ʼnºª}¡TBèí‡ýn­2MRRËŒJ÷ïÞâÑE ‘Ru“¬AâæB‰tš{€w|W|~Ú8þ:åK«”>€¿•·â¸g\—fºzèþ§¸á~?¦èØ(ÿe”µì“NÈ{æh„»(ÑÁýY˜nƒ}èxì~ùàDVY¬€u_&¹4Qvñ*Ù ×Qw¢]lœfèêâÂ+ñü~˜œE‡Â™±G¡õÞj¸«mHnO9ùoÎRT€X .ÝV³ÆºË1ä˶³€ ×j¤ Lämâ3Ù›ôÅ^Úë]ƒ˜ çÇ[”èâ½CÉi¨G£v>‰Wy^鈵pÆ8ÁÉ+y%¿lúù)µ©¥…™-2ϸ>—;]ÐÍ8T±Œ×T²$£‡¥Ã=áiÎ~’›|©>“úŸ/Šýæzlî`ï ¼Î¯çVMY?IΙ%n¯ø k”L?1N€âÙ—êMí ¢W= q >ð]xƒçõñôíi0£šÍÜŠm)„Jn'gW’¹%ò˜Ò÷«}¹a1†úÊÎFCk9ŠÛÉ!ô©@µ7‚§¹Î ¶u—ã 'GAã•ô“‰”ÌôTn{a3)G¶Y˜ÁS nå$m­é®!qdZd ³ è§‹FK©ØVÙØ}îld%|×Yg]ÞÆÔ/ꮡö ýÉoI Z[Ù€ï Ò1Ó˽»±Oo ÞŽ6Eû:ïj7[d¤½èBÙõÒ^ Ié°Ò½%…%=ŠÛEÿRj7QG|í…ùÆxíÌgúuž±û~e7Ó}½¿{—“í©tê1›ð‘CI'QEzÈC8|=€_ ˆ±ÞU¡D4®ñÅ™_Ø€ÿ»†ä=á·‡÷ÜŠ5ú;øßûçR´?²þýÇ7‰x‹_Fn¹Ï`Cim`y°«w muß7x^B«á\@¾Eßg¹”†ß¸ôQ^4‹ÞOÞЫ„‹Å-¤»s{Or<]ÙYä•â4=Bd0¯Êß×ÿ‰>âÜgëLÖ2­˜.Ô Ï{{`3³²l@õ¼$/On*OÊ™lðhν`ú1gªyLÈ™|X¡ˆ%=ïl[á©ôú>=–bgöQXØ¿Ï{ØÓÆq_zæ=åvs!« æÐyäÔ Ù…?ðþ[¡|l y}‰ÎE”Þrú ¹Ÿü,vïÂ>û§Òƒ™6Dý—ªqÔmT×¢5ó>2›Ýa0òÅÒ‘àf% Ùa‰W³.ýp£<ˆô<÷,nÁ_6‡³UD;¿þ¢Øs^£õˆù•§™+imojaꨡl?¡ƒD@K°=:>2²²&92IVhË[ÄG°ÀÇ®?=câÕµþà$Õ±/¯Œ·†çË¢4Ç01ÚÄ’«ZUöd–)œá&²ãY¿+F¹ö#1ÛÑ?ÂÅIþ÷¼âçBeÖ­ÌΪ-ÐÙݬciâɳ§¼  PRš©Ôdg¨2³ˆÂb™H]mèânN»È׆—ü¦Š£v¾¹¹©½Î$è4¢§Ûg=(-ÐKWe/” Ïì#f9„{s™|)¶ {æÉq÷€¿F¯"QJϬp¿ä¦ó¹w$-Ô'É£•kª·;/ý)æ„ò©³#+ñ»1UþWÊÉîñxp‘§“oCì},À:mÙãäçíç‰LܳÕà”.̈L)˜¶7sW&Î}"H–ÉŽHK5Ž ÝÄ_ä?ÂÔb;Ü7l‡Î‚f®î6°-Á_ 3‰‘lç ?>gÉ¢‰&ÈÈŒ¡®1{¼ÅTgtþ»Ù·˜áaWÜJçCwÁ—ŒxÀöÎlƒæ…Ä…51]aeb]Y³ÒGÅtÑ”¢u±3¾oÉ`w²ã™‡T7:ŸN'W’3±Rv…Žw¤÷L7v¾ÿ;?‡ÅØÞ]TRNô :Í '¾ˆ²Í>ß æ'7á­ñ·øª9+Ü ¯ UÒ9Ô)¯XtÓ¶Ì[èhø„wÇõXb £"¯b×9Y÷§áp¼ïtࣿeøT¸:Ô1Zâµ;>7ëfè?ÞÍY;+ëÌÆJ°‹Ëkìlœ¶§F£kgÓ&tÕÜ}Üâôy"IŽcf€6 ëú*v&ü™"•è5ìÿ¦vöà’óám>9ÝÅó°OS­Ò¦øÚKîq~^q]¢e 켬M³)È}ß;wk›ºÚ#ÿ¹êŒÚR{¿G ¿ð«aÆŽcK¿¸·ïOVSE˜ÏþÂ´ÖØW/3m±÷ô³œ\F'éR‚o€ àš§Ñ1Or‚ó­p,º¹Ÿ­þÖ¢Ðܦ§Ç[a5|Í`&¾œž€ïcÇ$úV­G Ÿ1ý /G!²£äNê=N¡f»Ð à[Û0ë3ÍL}žcÿ.öd{Ê F¤Ì3¸fy¨ŽxÉŸjJª:$‡—}(o(ÈÅ~UETó â€œ•w/w—¼J8%kkÖ '·»øž`3oº/³°')^*>9ǹ&jl–Sòiҙ âþ’k¹†¼ l±´j>ë‡ÀVÇ>±9k¦4`di…åá{ÁªÜ?õ­4Ã%ýM8§ŽäÉŽ醩.‹_åš•›øfñvdw°Þ˜+_ °—̳³k³#‚…œõ™]„ýy¿fAj#¼Ø{‘ÆÑ¦ÈPl4ýÞGLÄ\ôp&èùOR—‘ñóhä Œ­¸2ófe§™Lå¹äåè<+‘“mVUÁ™bUL¸ÃøÆ‘™W/>a5F_Ä›>Ø;äVŠv«àW·»#™Õùhê‘”úC3þàœÌ²fwSg(ÕÛNØ.qÝÞ»`¬Ckç¸;#éãPç+(N‹”¼I È¢S«§oJÙñ]͈áùÔ3"çÂcP`(]¯ ËüÐK‡Ø£G^Aô¢ï$ÑÞµLúk g¦„V‘²{‰}Cï`·yGÓÙnÊZá8.qÖ=Ó}”ì²jç b3Ud”6ULΤáî¡7¨ÊYo Ùë§Iè,ô ³ÍiÚJô Y¿òàH}+áž`¹moþ>YWÙ"ñf±V1×6·7·3é,ë-|ÛvËB'Ãì 0èøNìi ’\ß‘âZ× öŠú²¾ÞE€ƒ(ŸïorÒš=Y0:ø]c¯k@j™,âp:§zz{WXW,=Ü9H©£™f­êã ¸†Ù‚,tÿê¹Íqû<ÍÝLŸ¶OÑÕæÿ0£l@‰¤ôDz½±&®EÊrî€ì"ùI¥ o”¢³ò‰¨<{ ÿUz÷Ôòi§:ÿä×i(_ä>5¾WŽám“šr‚’‡¢Ûjë®ë=ÙÁußüÈ—±lÌœkþ9¾ï+×s[0؈¬P÷m陀<ÿˆ¸í>—š ¥zÚ@©fP*ÐÝÍ;%X•)Ë÷+Ö°+ƒÍB ‚ƒBÓIÄ2Ø´H6Jœ"£ó9Îgž4ß6z*ÅR15Ñ‘HÀsÌ>Q\ÜFÒ.O‘Kfÿœ;NuWïsw™Œ6%¤¹`ÝŽö î)äùÏÛÇZºS ÍD…ç–׺D¾´‚Q! £kcË —¢?ئƒ[ ÜàV}#[«^F†É~nz17*>jvÚV[KuŸÔÃ^×EËH½U}ÆvƒT†»#k‘ÐuØ ƒòld‡åó˜Kɳº$}ÅEã‹Þ&·®q®Èø7}7”³Q¹)w»òGÅöÜ$·dJß´=Sÿã™,oBjïÅüÏü~¢íb¡x¥+<-lÐvõL)ª«½Zîar¼œ’Uf^Èù!|ÍFX®[75ª«ùû¤oóâ>üLþ\ž\°^r]Ü7[˜õ‘Šõ—͆¬å²ãžmÄ,ÿ!6L¶‡~s½‘m4ŠþÇݬ4{´xy9æ |»±¹P,Eþ¾w5¸"Ž¢¼‚Þâ’ü=Úqº¦¹å¼uêC!ËÌߪfU •OÊ»•Þò¥Û·ëO¸¬hµg¬úﳬÑ89ûBfwéÿ°Ýµ‘WGóˆÿÿ¸žãkSÖ½jM¹>pV…eUó¢™nÁñ˜/3Vþ´5E~d§iÈjâkâ¬}¾Öé'ÈP¿HWÍ4óg×VÛøÑsÉ#k'm„ª{àKÀ‰æôªñYíIwhO´ gèÕx3tSpL|l¢KE¸Ä@7#xL#ƒ²í|Kýɰ·ø²‘ÅÛÚv̸€ÞXv¹*mæÊò‚øê(Cõ¶Ü”UÊJòêMË;ðz@h\eo’-ˆˆÂãFOÒC¨ fO¼ä`GFÁ ‘F-"{3ϨJ’ñ®ðé;ñخ0ôާž’§ˆL€3̹ð'ï VÅèýiF?霥û¬¶i•Àóp]l†÷:+ðo„l@¥_~h'^‹ßƒë« f¢ôhÁ‡àUwoÙN˜Ó“šÙŽ?Ì8„°0}}sØëAyÙõòF|¦¦½á&ÌWÆÔD:Ò2j/+I0‘Wôgfjè[x±µÚ^çB¡ÍÎ&êiöíþüÈÚ!\‚,‘ÿ¬+O“®×tÒ¨Ù|¥m1™ ÞŠÅ*‚*ïßè0l+ðÉôÚ‘‚nA "ª }œÐy§yO²ˆ:#ýF–šó¡ÞüÈùÑ1×p^·ÁxŒØUùvÚ„?Ó=}£˜È_Þ¥ÉêŠSäUð£E™s]ÿ3±™™Q¼·<¥DíÖþçÒÁìcO{;>A2OÛRzÔ4¨²sŒun³&,C5ïóÔŠ–ÚÞ+´ÞƒŸÀS°þ' ¥0×rœèYä)àE5qW¨áÌqFºè:fßàÿ'¨¤9òΪ‡údÞ6]Ûœ\Ž`—²KþÏÜf©g§0\«dmŽNúZô!ß(h—W¢)öµYp'ù*<Ç·¾=[unMY¼r_¬džh¾$pÞ Š§ðœœ³‚ê/\räÜÈ^.q0þEñF]¡s{N —ú÷ŠbÞzκ_è.H'Ë+úH?ˆ+D¼Ìæò–.9sžzËÀ0 âEhöžMð —?æ/—¦è›)k;]TTȱk'5&Ó+N”K“ͪüh¼Ðó5ü;ƒü&_"J3µ°Uæ«6»7ƒYx•‚,dzè€ÒkeÖ¸šéºK&ò.du’|æåeÝÔt²n†Dþ½Þÿ¡«!ÀŒëÕ§-µ@-Ò‘øßIœ"…øüðí‚(Íî÷%ªWϾ˜ÿËg0ûÜwŽî„ñ”›Ü¿~IÄKè:r;Úïf ¿-90ëaòúœêý&ÐÚ׊Õùv1Iѵˆ‘ÉÇØç3}J'T6¯(JZ+ÙŠ=e]ý»ìƒL?[bŽÁ 7#7û{G×GáÂŽE;ƒiÔ&Ík ~÷ÞŠÏO /ÆzQ×"‡ƒÿ¢»1/ÑŸïkQGÛÄVÅÎE½‘—áß‚{ØÔD|™Áô F}¹ìrz#’¼ÿÿÿ —w‡…[Ü)w)¡PÜI€„غfÝ]fvlgÝ7ëCƒ¶HÐâR Xqw—à-¥„ôñî¹rî7Ü|Ìä2À>Ú——¿ ×°n¸_fz¡¸)VÈŸ8ÐK]£ä°¤Þàºí=ÏPîd®âeä.Å`Þ^JˆsWØ~ñ£ùŽvjôuô¢ö§Æ‚Ç!¬9Ü×ûê#±rЙ°·°_³LQŽ·•!ÊÛð{k3óë… ×××yÚÞ^·HàV•BÅJ Ó®,3®Tœ’n3bP¾Çí[© mAf g­Ã!P6ô:ZâDt)Ô ª3‚Óúy€7òN&å+ úè¬ÀzìŒ{c” &5åT‰KuÝmVk$G$ót>¤šÀÙvŒm­ÕJec ûXϱ:Ìånïéë^—I™E:7R`jaí^ªí’,±ôTU(OYaåKÃù ÏŠ9V!gg¥¤{á5΋Áÿ9ÞšSØi„ õÆ7`yè0ä0ªFsA’AniW>*²³†4wJ–J9ÔîÌ1¬ÃŒÙŒ\–>˜õºˆß0ôÆ÷áýˆ’ö3§|.ºA”ÑzÐ'“žRY6I–Ѻú8Š€‡iaêÒ¶£ïý»B[ívS!¾ƒgÍãL[D»ÇyHØ\rÈ"¡Ž¤c.àÖÑ©äô“üù´.¤üqJ¿‰€]ì 7²}´Ï)籕6μWp”6BZ\1楀:…²Ìÿ³n¶å`l¤8Bø¹Œ¯~Š´BöI.•'Z:‡§¦ ÒŒô˜Ì´Špõ@¾Âwl<çrý5Ê ÎCSÖDý³Ö&#FÁ'µKkfÞ(˜Eß„C+’ ³[b:Ç qUQya72‘ÌfæëlšãŠÁàHtò4뺪Æk O‘ÝSÞÕs¬®•Vàø;ðÆ?ÄUb øl‹ÿܸ7Î^ þÄ®v4XFAt¿k‡†ƒWà$Ú}€Z­sý÷½\·8È÷ÌC–#'îäZZx–JxØü›Bº¹; !Ü›cýS£â¹1EªCÖ–]P½I†×ºxï9PÔ…£åÛã5I4þÁý}k‹Ï7ýU:þum€Îèw£i‡k§y¥i®‘)ïš~qòíÙox^†NDÕ~’%þÕ9&xOïZVâ>k¥±¦ ÒÜ£ò­ñ̰Ý4^áñHx0+ ­Ð߯R8‚‹áÝÆ¡š9À}§ÅKÀžÊê$?¨?¨¯†¡u(®Þ£Bo|2ßBô¸~£ž)¸§«Žª¯”Ï€iº€ Ë5×aÇ«ãÁ}udÍ àšj·…´’ÂWÍ{mAd˜z´n-ò?œëÊõˆÀõ쎲î#Á!Ž·( ™jùÕÀ6*Û«ïë>£eÈ_ÀuÁÜàÕhþ\Á ¹ÊШÉèO(‡ÓšP–(šwöœwßQ JäD½ì4âµùUæaòÞWe‰UšZ!ï±qÀùkNù£ð9’–¢ mžr’’ÍEqÿfsšFªÇ)jTÅš¤º™ú‘f¸a2T„/ƒãº ú9†³Àqø¬·;ißX‡Y¾…vF°AûQ¿ÅÔ ßì„ûÅwD/•³C-âÔõÈ4'ÚõsŒw‡`§ê’ ÷vô«]IÛPd‡v˜¦­¡^s\L‘Jó„/EÍÕS•-DI±¶‡â·…¼Þ´ ,U) ! î”îë»^`ßû7Ç6G/ ¿"Ëø·„Mr ö6Á^ö/úÉ2^‘æž&pQ|¼>h"<-õÖ:8ø2+é ζüè¼ œKÔ[ÁY† è¦È©TÐV,í+ìÖ禨¾J{‰ããrÍ©:8¯2«m®Z Mt-r­7¯ÖlTWëoâW½HTÒ—s„‘—¿:•ØIøÉn‹Ìþè¯1n”tÕæÚzøºúsü}§;*th$óÔƒV‰u>ÜamÙ†òuÏÙ.Ig…U*áŒU¬RŽÖì4 3TC\ý(•äé ~>ñ·Æ²°¼2H«½¡ñÚ`ۀ猕º_ô‡45´ Äu¬¡¢±ŠRþ/œM¢:ùm3­\až`ô«–™~³^ îÀ!Ïô[ AÕå9þ\öÏʰú†ú¿†Þ[õCyÐg±ï´Ÿußwä"€ÄZjýxÍ8Q1| åAm‘ŽÀ+q=Í ÊÇØ©P¶iì3ž5¶WdȨ†…ÙI3õò\2ûÿ#øj*2ãtáw¥HçiÙ=™2Ö&j;j£è"ÒÛõis‡5ª‡øæ#ü%?O7O~NØ Nu þN« ÷Òå€qÍ]¦¯l9«/­€¸¡ðAé!VB¤îd. v#í/ÌÌ|7½¦dmIMÉéÒܨx-Gº 6‚[¹NÒŽÒzJ~YŒ]O[M<¬†ñg~ÈÔÚ´ã“ÿ¤´ÒƒämÆL˜·-ºWÌa«¤,ÅZËሠ«™~‘ZS~϶0ïÇŠ-à;†©úñš‡¦ÏžÝ!ox~ð•‹Ýß%S‰ýyQçì̧Ìì ­j‚ÿ˜É¯Ì¿DvsmF¡BIX®üì!¦&VýU3µºeµ¥zJ…=};­Kö‹­õÞqŽ‹uˆwŽŠÊëéHþ-U6Á³À¿:D~s}‡DôJ­ü©l·¸AÐTpLð·|»Ö}V·S¡ê/`ˆ‹ÜËCSS7bMá]ì­Âó†­º]ª_”]³nŽ»Ã}Ã[£óÓM*Æ&‡Û*‹¤×¥9ü$¯ Èq]´`áb§ž"¡ÿÜ,kälå·â5á%å¤M¹wåNô‰ù¬š)'LrlŒÑ‚¥Ú1ö–É~‘½N®YMÇÞy¡€S ·ô š©ð[k£µ¹³©o ²ðà>ª°êþ¼èdI·â©†Ñ´'& ôu6q‡\Ó ¥ªæÈ=4¨HHÎÉŸ+N:zýÉŒ{TIBØÓ€[ØÕ0P±YÕÄ6-ˆ'Ÿýz`}“O}°»Wzãæ‹â”´ ôØñ±¼*pÜþ ›q$zv.©eéÚdñ(¬cð³ÇæèoÖ½MQ"0ÝrÒqÂ~Õ|ØYäÚ¡¢é÷¢›lˆm—ù&î·–ØéÄpSí„ÔÈCoõÍ)IeÙw¼¶Â™ º:¢¼bH*{²PNµ¯òf÷«r£k¬µPgÈ ì3õ…×iûèû§+? ”"ˆSËI›Yg¹Ž+‘u™û¾`¡yÚák½é'C&õ{™¯WF[†Û(QÌ’-á‘e‹4-%>r»m#ž9ˆêfË †ï´9ÒfÊÅìQät’:‚­÷Ï _u×cL+ ƒæž¦Äô ù„ÞEal¨ñ«¶V˜¨< UšV‚Íù»8˵mÌ9ž˜ÿnjhM}¢ÐL645"F©ÙˆïÑ•CôKu1ÍA9¹ÈµŽX'=ƒ•WÌJ÷KÿXꨲoÁrõët·¡àÃSø˜F©[(ž#‹ÏÐ~ÕŸiøà8tzB÷3`2G½Ï‚YïkÃýÆ”ý'_©ºA†&œ•ŒßË^KŽr›)Ðr`“f»5¥/ã1³1CÌá˜%‘AøœgÛë¼"/.i |¥„I-‰[™R¶O d¤¨dÂÖ" ¹%·K ]\é>í±Ø^h/²<%ë sBè½:Àz¡û h¯„(VemÀû[ÏK¹ EI]eÙe‰ül¥+~"YŠGWRq¯êñt¥ß+®/-£­çZ$íùßúÍE™Rª%¾"~%ݡז âÅuk ‡TLÉðÔÔ’;в‹OQ#1PSö•y˜ò7áÅÇx¢ûèø5Ùº2úT®öä¡çû¬Ü8ža›é»ˆŽ*–ØÂðËÀßîfÞGºéÒM¶õ±¡™¡gB’ºY3g΃¸)Pæ;)$:èª;º2…F…oGªbGâ¥ñß§Ó»³eÆ&gÇW$¿fóªRi 6>"· kb­2¾´/’ N ,íô9ºp†c^CSÑ(ÑTÅíS%J€Y`žy u)²Ó¼ÃÝ»|gL’9• ¹ïj!Í 7Û$íÜ»ªfK«YþŠ6³TOŒrœ/­¦—*’~ºÏÑ-äOý“”î“®Í<ÍM¾ Ÿ üZÞ#Jü¾Y~ ˜;T&J¯©ú.…èDdùqCé#Fè}ðXjUúKê§ÐÌw±þä|g]жU»¥ájKè\âŠ`‡MVCƒP#£ç =Êêö–éþxP:ÕÉÆgR³ì¦‚¥kÞÈ: ëÅUxƒ÷¤Çj/4Þ“ Ôþ†õÄþP7U/Dj+Ä¿Q£ý‹³í$£nç: ŸÆlÉ=ªTB/ݼ?9nc]ÕAÑb%Uƒ!躃ô´õŒeò‡^þÚZc¤¨¢ò/eoxIJñÕ7Ê8î[_õïŠ%© WÙ×…IÕïF®m†í8´8€¼³.¶ÁéÖb«Þ¢žê:é§›D‹4'¥s~àPøHêûŠº C;Z­w[ºû îþêöŠ\x  Ô® &;MµÒs°ºCt•]l^m±# ÊQÒ“Zžq3ðH3ì„ ¨jª/3²›½UÞ‘Á–fÆ ]Wì˜ùØÞØÄ ¸>ø£åË¿øôŽÿ´}d¯‹µc.é]~ªCo K<åbƒ~Ÿð•²œ~–J¦pHJ‡ ?iÈ7Š.‰~!µ%U1”¥ž¤­ÎÐŽ0*Aºa0 /vûQÚ°Cª¥æÅX;Læö&Ô–Œ=3Εõå‡öÙ'ó/< ÿÙòÜê µÇ—r¢%5µŒ+'¨ Ú¥lmÉ rŒ,› ðu*oIóÂ7»‹&£Ä¹CTƒM$è 1q*ñ?Ê~ê$Jû¢øŒJN—¼-ÝI|Gü[Èý^TOYênvn"í™>“U[kÊ?[::€ Èô¨‰½Oýšz›œ“ä&W>¬˜–Ÿ¶µ2ÝÄkckfA«#œp]D ÆçE.ÆJÒ‡Ó¯’`r~¼Mò}Š—Y¹!=.19q'n’M“Bë,󑬹¢QIg?Ú;íæÀQ]žúšª,Äšc1‚Íj_mb¿9Ú{DsS¯3“½}­ìƒŒè‘«UÿlÜ\V±£ [9hem´—ž¤æbùÞ»‘7éxöv¥½úqåùÊfÕ¹Õ‹+§Vf+ö¤V&Ÿ¥î§N¤B‰x¼u’—þ’9•ާ¹‰½†)$œ)T²›ÓÑûó#»COʧxq¯å¢}™#bžfh)¾Å˜§^5Bƒ-Z³Dÿ6ÎXÊì¯Â9˜"PžØäózoº½ ÙŸ2’^¨®4ŒÛ†oLÏŒÏ0óú£Ö¡œ­‚~8kX'©Wä9vf—Ímã¾îÐûGF[˜w×»î-hOÓ íGÐ>¦;ZdûEOÔÿ‚µÝõ£Á3 JóÈ̲Ÿò\Šn +ým‘ž¼§ÜÂõ‚ì¥òŒs› îOÜZ\Ÿ0è,ùç ;I)È¿øý_`Ëó5À4ø&¨‡±Z¬”×hÍê{º&h‰u[`x¤w&™^h‘ëóuÃ+\/à û\ÉsÇù½e„hÎ(»0f’â?åñ?#M{M³ì¨-¢-Ò zÀ†‚ņýöuÎÙÆÕR“¡±!‡ì“û‘…¢yÌÆ÷P1ðÈäƒ{ÛW¸)oôây¯ƒQý~Y…Af¥¸úO Ï9Y#­e±©Ã-i‡Ë˜¬wÄ5E;HmYc¸÷dÂa’‹Q#ò+õ‚í¬Zm?ïªó,r/‚ö³W‘&ÇÓ *z­VìÔ¾‘×S¦0HÊ6f+ÔGPÂýS½ÇX‹6‡ 'r´@×\ñ™{‡Ìdœ`Êh6~J%ãl# m×¥,î¦%·M.8>ó¡•Ëî)Ü+¼m`o0é ©†Úº«hÅôg3¶ÎØR0®xaI”'㌀P&ΗAÂ|îoò*ÞLjJâú_|–_Q]_nVL…ÖxÞÅ Ò´ÌáÌŸÞ^ Nõ˜ü­]µ¸œ¬mgCãÒ¤16%¾/±2nKÏÎ>H¾(ÿhËjŽŠ*§Ø:¥çe±Ý±õi[ö@&?õGækåøªñX² Ö6¥ÍÜJæ¤ç$r“ŸÒp<žºékc–){ˆíÊíÐ(çl¼‡WZïãõöÛ°ZuÆ @Ëa!ô’oÙi݉:PÜQà_¼Å’‰HÿðÙKYªw_üÃò@íÚĪ´nÁÓß*’«Œeª¸™ìP1¹òpÖ˜ý§BSñ¢âÒŠöÙ.™†L»LEªGªYš’iš¹œ^•z–ØœÅßÎ(æ=ÖõÿÑ´ ð¥H¨~"ªíÂñe½€Kº\™cèƒÌ0u²üèï~éh¡%ÉÚª„ ÜkÍÓ>é]ºâ+òiðÑÀ¢N´²®é‚ 6 :Bç¨ãjúÁLS'}Øò—ë‘v-lx¥ÔrZ{ùf9ÒÁt¢r“¼DêQÞ‘yáÖö>øgs-AVÃ4sì*L0ž3¶q]wí \½?Ú,rž Àûž;šÒƒ=?ˆ[J­-a‘þf=×Ë®ò "›R~F+€]œÇ …¹ þÐòÉ;3rÝú\ø˜ÒŸLåÊlbß9çþÀKˆ'Á‰ñ÷*8ª÷üUŒ;,­¬ÞUb‹á½ _u]î*sxóX-yüGʹˆÕ(±çJ¬‚:Ëà+Î/Ô­Eï Þ“JhóiÔ-0¡ó«-exS†Ò`RÉJúBîE*%»(7¨ d9¹ …A»Ìª,«nUº1àWÕÎ{ê!’‰<€òœ×ù3ðÚ’•P=ê'x*º=}¾ârõÛès°3sŸ²Ÿûlj|T+ÙVñ^ÇÕÐåð§èÆØ‹è›DëªL¶[0«k]bÍÛ“ï¦&Œz‡Æ­õÖ–«½í½oÃî¨8¼ ü{HäíëZãîçã?]^Úí˜^:7[OZ.`G ³äÛ5ÛÌlŠ"!o‚µýà¼çm\ó˜RO=/Ø r4·V2tòîKöJ3#]l›$BövÙ'\kºŸBª=«\½ÌtÇ ê!Ö ±Pµ…§™C Ö²'Íì(VàæWÕågÁjz2ªt´ñ’ñ¼©hž¶ÄGû£-@ |ÃÊà  ®€[·Bî¦l êI¨ù§ùƒ%JǹÒcü\ñIõQõbóºòÆÀH×Y„c¸Ì†ÿƒÇzœ1aùD¨™¸^xºåç6ùîÇ÷X:7¥ÝXCÝ©éXfÖoÒýΩ®V¡¥ú Y*jú´Š‚Íœ]ìCô×Ì6ŒÎBƒñ'áiÍјÍÕ0—RŒ¤~4ó&f­•‡V@°[¦¨0HÈ)>C:Ê ²‹¹Ý8£hr…G¥RÛÑ{Ò·Ò»°´{±-æóš6‰°p–vžÓMqY:…œ Ü•ó0äEæD…%Û5ÜÂè-z^Ž;ÂkçI Hæ%Ö'ÞP}%Ù•$KN N–'Õ_0ÈzÉ{`(×MZ•ŽÇÆò. Ÿf|-ú_üи­ü¼„ÿbÄuáὌqËpW=Ÿ‚‡€þQßGµñðÄ Byú¨øËqÍnz·»$÷¯üМE™#ÀB™Å]’z°Ë3Gš+E³VŽÎ ¼)þ/oPÖÀÌÓf¡š2öB*}z’Ýêzï¹gh›Ô u«w…[ä/eÝ3^Ig©Ã6OñD=o£.’Ãà¸È|%3Æü wØ2$3ɶ—›a©v]ð/Ì®ñŽr.öÞÏ®ÊòX눟áyÈ^8 ‰ BØÃc©ÿEn‘þ¤Õ eÈ ø•ñ™ó"§¦ã¬¯¹hýº°Ÿè—îË9èúœ¾óþ>YÝý¨w’ë„CçÍκãx=Þ-Ylàƒ·Á=ݵÈñÄ.·¼2àæ…æÖÁYDÑüÂáŽçÊÛú·ù²âÛŽãf¥³À9Ô5Ôÿ:`·û}¬r­ ŲèLb+Å£þ‡w#¸£¦!f…!†Õ˃"‡K×A×5zñžôR°ÄpÎµÎ±Š ÁØ­zžž«ú7#Upõ½õ°å,c#iô_]¡j„v¾ÚxŒŠÖ‡‹Ãb³”ÿš·1+ôÓ˜“Æ0BŠŸÖ-Qü%™+ÿ†(´\r^aÔ‹Ñ9«çWïLß<ÓXÊBn$ …dg<½=—†€ÞÏK‰íEœO"x®i9µ9`Îü`;JTžL霣٢‘I©¨ýü_õg¨]ø ô6îÒ&Swb6;µI¼-ùb")ò Ùº `/±¿ · D,’ýŠÔ”„Ú±#iAÁÈļ&~[ܸ؎„1‰«R‹TÚ«P£ôCê¡”¯’ âýªZK§^à $¬à÷Ž»”0X²VbO<“œ$KXO$Æ%Oá§H÷±+³ûl 2õv‰óÄ×ðCÓ)W¥%Ä –ÎÄ3qÁIùqùÅNöu«‚µ‚ôv¢›å_èl丰iÉZCC^×üuÙ&ÏZJ ÁÊ÷\³+ͶÔÀOÛê€i=´HûHº$$Á¯?G/¤× Ä j>éF„NâÌC çÖ§6whÞ=ßZólÃn:YŽÒžD³Ì5ƲË–e ËÓ¹×ÊÈo »‰6 Íð±(¶!ýˆ1Ú/9¯:V³nóœì››ÃZù…œ¯Í4nVMd¤¬Ð¼%hªªW¹çÛ‚+²Ž2l&ì"ÒöeL_dõ„ühš` 1¸ÙRc¡¹ŸQHéŠäi.(S‘|î„m¼+ÖÑǺ“}‡ÜnÇA›—ë†Ï'ø_ç¼ËÌß‘C˜p*Þ‘q7ÖÛMµ…>Ã>¡äTµIîšÓæ #¯*~©D·%Ÿ$Oâ|Q"É'cE 27‘XK)‰´M? Bïñ,r—¾¿r´ì¼êwB¡ø÷¨GM%ü™‚«Àô#Ñ bD%ZJŸ«”jÊe…¢/«Cr@[£É—=RïÓ^AYúˆù– yè`= ˜ÁøaÃ&ºFnW ×ås÷ꜿ=¨óê2ÅaEô¦ûŽ“Ë5Œ~h=kL'Œ´ýÕ oT–«Oª«n!8×hžjÝÉVêvÀ»ÙO(_wZW¥ï)_žüO¡…óÕÝöçÃ1Ñ7b3uÿ8ü#yEÓš"Ç §˜ÛÚ]¼i‰¯¥±ðd!ð«Ä›±=n]øÏ*\V ÿˆN‘¥vQM‘ò„MqùÝDÃt-Ö¿lV£þJ9 ì‡-Ó~Tˆ#Š2u_6Ù;3ÓÂ>g””)Às —.VŸ¡»KŽEµ"ÙÏÒ(áOJÐ ˜¥„÷„Ý$7¯h£@1ÂÎÚZ2#Üs<+mTéÃ^ã2r>÷ÑØÕôÉâÓeÞ¶vqÆÛ×ùþ¶¶ã¡ƒ`oF´ùUÑ€"oÉ=éãÙÃsæçÖÚCgñ†<Ëf¤þ† –7nn.µm6Š»IúDˆôkÞŠT‡Þ~LÊc€:¥Bý@³)£$Ñ“¸W R•Üs@!¾¿?á¶x RmU_×$h{‚·e·R»$O‘|VeÉn½i2ÅkX DÈ+Á0àmÚôBhÕ´ˆ+Fðtü5‚”¤Ë"¿ä­Æ`\øÛÕ?ÊÙâ¨Ì¬ñÏàö¦¯HXžËs­•±‘­v\÷wÏžý}𺥸µt±uñÛð6°z)ùZ­ëpÌëž[Õèø lä‹€Óèb$é /‡‡9\“ÎÆ·mgÇR™o-Çì+%Î9™y®Oö>™-¾_}½=—œƒ3gM>8ãàµu!þ£2ßËnàçd›à àbšÉÕØrS´{€·ºpuSßÂ1ÌïÈ„•ÿ ¢ª®¥ªRŸ€Ål‘aªa‡Ñ ÄXò$sØDtØ d-uÎpÏðˆ!ØLãc§cÊi/)ÒŸQvÖ˜umðŒÒWOÕêeŠøe‘³Â{Ä6É)ìq ž®+Å3ÌAóY¢¹§Û¦‚tNmqªFðýÆ;6Ø?M øKä“îw T7Æ´[׌”Zü'b(ù CiЬ¿£¹‘$ÿ3Ý%Ÿ˜±H¶ EæÆ`j¼ K€sÀ¢ÀòÆt<•Q#Ï}¸’)ØŽä‰ei2`°m¤o¥c†±•¾EO!°U¶"Ód4 efíg\¤¿£¬˜~@M3Z«‚þ2ࣘ[O¾2>pºÍµ@JâduµÑðåV3ÁA©?’¹Á(åÔ?x'P¹ÚЃMV›Rx¼ÙÉ©ÚS_»Ξ€ìñêÇÂaÊ÷^ÒÈD_ò«˜¾±oÒG)OÓ ™þ½ŽZ…üOÚ)¥«¢V€ûhm G}¡"Í~íµŒM©"ñXéé.ôAB½e‡Ó‹èOhF¯¡h»™™æl3Km+Í¥\;÷Šnˆcf3“í®×®înî?<ÿF–,)ý3§Äõ3—ÎU»[Š&ÔϨەïÌšïKq ÎÛœë°ûèÙÄO¶¾þ·æ?åëàk !íú'Ô4ëäà©Âæ öWì Ë"-v³ó¹M¬Ìü™IÅŸ`!Tû·Y¨X’8:¥]™F,gÚiƒ¡ÕÜ™ŠHï”\#st .„ú‚[¥!Âb³6Gu‹ÄÕ›xTâz~GJSúÑ7bFñ'ÚßTèL $çÎðð´gb¾ñy'‚»¨­© áŒôÖØ§‘Û$}ÛöÞüàqø9/Gùbß.ú°$@·àõü»aWÅŽ‹æå÷Œv`W_Ô ôM˜û›h¢/#-aŽ~îz{˜}ë•§oV×ÀUvŸœžA¹÷ŠgY–À'rwË|–ù{VAṜ¿í噣˺æ* Q†kìjNÉUP#Ñ·_­Džƒ×5°é߀¯tvà¨îã—l°é¨jS&íÒFâ2b\­ˆKªlíØ*¸@~$VÓŸ9³mãÂÏè§ØóÝK ¯¸r|zO80>ºzÌF¤Ÿ8ŽQP„ÄWb±6ôÄ5MçÄx^‡úðp vCQʼ”§ˆMö"º8;['+¤‰Þm%^cæùì[y{²®:º˜0kµ*áYÞ¨ÔSê(ì2wÙö—K`™€étG ä|]þ‡ü‘B ]­­Äû{²ÍxO°~‡ÜQûc&Ä/oÀ%ˆ’™ S‹| Ù ô`h±xpüoéJê$\÷ìpåß©7…+UÇ¡JLd^e°Á*ð•ò¹ö%wv¶;É1øwÖG.±iÿ.XNlˆàÆ–`ã®ÝÙTô&˹™Û)¿WÑÁæž­ÏÖ ¾ ®õÏ6W‚õÁºúÚ¾•ú@cA—ÊwÕŸÊG? Ö¼/ZPô¶ôyÙ¡ÒnÉÙvÿ<ï¾`SáèÊg5íy‡3;ÙZÝ3«2ÍþçÙ?e'æß.*-HÏMÉßR —œ‚¦•dÐs#“p'Ë7ŽÊœòå§=©û-íO >Š%ã-Ä'¬?𠓬’{ºKð7ÒÖ”•üNqÿñÂ$ÏÕ)éÝ3”jÝd•ØP×”À}_¯¬þô€.ïp®Ë¾^Ó,ó˃É¢ƒ’>úr:è ñnsô‘k¢¬dõŸË"""„’´á¦Eo””8gI>|ìOð̶ô#ju2h£î,ä"×ÚÅÎhÇg/Ï#°&÷Vž4~~Ÿüî»ò¹HÖNß1ÿ'_Šo¨·"³ÖÑßô’žIN²6”y®¥ÞÛSó¢Pî€î2zÃGö2ÕŸ8Aö²Û ûã°˜Ï$2è7x‹þ*T‡w7<²X5†%Ô.l ²73ƒ8¾±Ñov°Ëˆëh~•xË€ruoíÐ;¼˜EÖÑ;h q…¬"ߟQ {M ØsÜ'j>šÞÕLÑÝÅawõYð#Œ"V3kLc±k “ä‚íx6ׯ–¡K±”™yLu¸Nÿ«nª®Eõ—ä’r¶×ÐÊþN†2Ar—ú¼ôžf À‡R0í£ôe4ËÏê¾6&;àÉpgÔHìÄ¿…žc ¯0Õ@Õá_ÜNݤõ–BWo üQÁR*Šš£ë/HŽF…_«fqM¼W2Õ=ýWì&|Žz–ü#t‡q3;ð×Èw„„ɵM·…ÒíD/´8AÛ /4û™ ënιœ ¦®²ÒÍl4 ‹y§@KE² í›‚¶úŬñ(g”«rd³4¯s‡eÍ%žq«‰ëÈ#ô UA†{˜ $¡ïÐû !ôd¹‹?DhV‚‡ÈWËæq¨EhýÖ0JóošA §Ñ¿›PpIô£ð2ÙMMkF'MŽQʸ)oÑtÖ­YŽ_ÁNR]ØÑ\²œ-r+ ‡Ó~ƒë n±f=ºÓij58ܶ~¶?lìWýžªÉµ/+Ï–_) )^ÛwËÜš[ëÞ•7ÍQœ\Þ·zÜž”cæÚe*3k—¬?[kªˆ,›U~º|n寵#êÓj‡U›*ÕC*÷Vý¯úHm§*rÝW%ó˺W„U•ÕÄ×¼­>Q7¥é~£ºîlíøõåoÖóÞyÿv_uÝ7 5FÐ]ðÏF½÷X ×Gà¥ä?ø":Šël _ãn̳}?g›ò“ £‹¡âNÅËŠ¸¢{ù±¹æ ?kZÍ>—ó4øÁùîzþÊ|i´õ ü¹±p ›»ÎB7Q!\4×HŽB£ç±ýð9ô «$)®Á0‹I¥‰éÈ]ìoò[z›a¯yŠ1š~ˆ‹¾8*ÓãZî˜Ua 5|Ù;ôìNÅÌ # Ðó™ÅÌU¶‚»Cɉ>Ts–öPý˜Zö QÇ( ù'¹›,Á¦áW©6 ‹õÛ ;R… >Ðc¸r*y£«‡Nc èc¨½ª²i³Ñ#Ø3x<ä)%ªùà<åd1)¦Ã}Í=e&Ò¿ÐðUº]@+x½ûª¶ê&À%ú]ƦRr rØz““þ[ ûˆäCj¿u‹=ô‹¶« ®žöS@íHâ<óûA¹V¸%­$µMUDû:Y1F:ZúN“C´‘[€”7U?!³ð“˜ëBŠY»m¤õz2"cyò…¤÷ê6r:#t…ûlþ¶1O7 &twÐ?ÐRhEŠVßd9WÈ,ýÎx^¢•jöh Š8¯eˆ·%˜²p+¡¦ »q 9™P‘yLäð„™˜‘º.ªJܲL³–þŒT j“Ç<‚}¯¾, ¸¥Ø+ªHî¯í­מ‹õÅh¤•ªåj+Ò è—‚3dÇÔ‘¢ÄˆýŠ×ÒNä'sší3»‹­rœ Ц‘Ò­ºXùbÓÌ]{«E+/Wá5ƺS5•§ªêªoÖÜ\ÚìÛt`3¼9eÓ‡æâæíj7ª[b[ž´<Ù2h‹µ5}Û™­²íswôØQ±íaëß-†–“†×Î.©*¼^9ºúÛ¢5Ùá†aø KÿL¯÷`æc Ï0˸ƒ‰7¬6F8VzRÜëíaPÁ·RR«Ø&JKó¥J…ÛDo¤XƼd}ênð<ýˆÎÓ&Óí2ÿìI%‹ žyÿrt5/³Ž3ÇÒ½ ºÝêÞ€¸c&<óìç²:Ó¡ñ-³,Ùu0övâܤpÅzêo§Ü·¹ÿ Ë&¼aúŸÃ?¯Ü¾)òiøÈX¥ O¶åeîÎ}^0¼°gqçâY…ùTþÛœUÙ–  8;ç^¾%??;,à˶æryÁzïRÇTcû1“˜kš›Ìç8ÓufÂà©À.Í38Kvé¼W2ÿgûÎzÄ|zAžáZÙ¡lÛN¡Š°ßt5dƒC‰¡ì7œ€¨=¦ÉÖ K¤yº±Í|Ö•ê¼aH£nã¸,v9™Gªi+ùr ±ÏH–L ?QMô/ÄŒÃ`ü6’£“eºïÑüFâ~b<ùÖ݃£ø;j0Ú]ï‡÷c ,í­©å«2•Ty`­î¨z.(A6¡åÈlý#ý?zjEg ; à´Fªª_€:ä¤Án2+ð$¤„ÊÝdX¨ÞÌÃ)l>•å¸d_ÎÝ£ö}ÁŽÔ°üi¢ùD»ñý@®=åBˉHf@Se¬f*ÚÌ,¦÷£½Ñûh*1„xIÅ2KÙIÿ]B¿@²¤ãgŶ¥÷W‡é ÐjzŠ©»á°OrEÑM5/7Æ{"€ÛaÌ6ôäâ™ pæ2T ×-ƒß§™K‰y«Ä"õbU¾â GOj»É{¨xŠX _ÐŽ%ÖpíàQÍhmoU>2ÝÃÜcš¨-`hâØ™Ér©FjJí">‘<¿&·!)_¶†ƒÍµw(&)6Äý–®‰¡Þæ}æGÄ[b SÁžgUÔA궘¸bÝí3ä®/ VÌ*ü%øKðL^rÅ¥ÆÈ:õÚš5•£ª¹ò¢¶ˆ®okžS±¶²°.ï½nJieÙºJ~íÄÚãÕÙµxmqõ­ê°º£õךº7ïhùÐʶF4ó6ð3¦m¸²qý–ñÛþÛ>ssÛ&ïfgëÛ‡ïüeûO;~ÙÞ¶}ô¶©dÍõÊ©uïöFíÿX/(v8ž™÷NÈê¨Îèi'Ìet#³…ÞkÞî:ä;éëg(›Åß•qB²?í´àhò¶4ä¦*N5'uoÂ’ôdäúÂÅêQd_Oìì\¡÷½íµ=Ç"± sx,EX4²öÁWѿȾvWà ß`š¢ù*îÛÙ‡®];4KÞ¬ìd™¨ º²›r oÐëušµkÖ6­ÈlÌŸ»¦iyÏð§©5Ôdo×¼áK 'ä÷Ën ŽÏ¾è°þ VçÒ¾ÜAY„·ÃÇš‚ªÀfo¸³€îŽŠ°pú°yŒù&7’æc¯è0â-ù–9nnÈ<’=7oqp¦w®w›´ !Ìdæ2ý–¨&†1gI2ÎÔ›ôŸµK•—%¡-ðrÛ×*»ÐÒÍj=]ÝÙÆ™ä÷d½a¶9™íI§âq!òôú¥Ûîÿѕ̼ùŒä£ îº·@;p ÙKgÑÛÉïˆJü<:O ¨a¶áã¢ßPyÔc¬­B¯C7Áx)‚ÿ„¿§–h¥ÈVñu÷±÷d¨¾»ò…RÔ–©—¡ÕˆûKÖ; SÚukÀ2…MÔ[B½ePg±ß ‹ºR; éºëÃm¼ï°{–ŸÍg¨÷èuz³“¹e¼h|ýÅõs¼uŽº…µ—ªJj{×ç4m_ÿ¦é\ÿu‘õ6,Ù‚}À;\ˆ3€$ç') Öf5Š©/êÞ¡]¨›zÆfò,)ÿ\ÑT9¶65x¨¾5ðc`t€ª;xéO÷íèêˆú†™ ³}ÞêQU®ò%‰¥ —ñ¿ª½R­¯Äj½þçWõ—ëO64Ý\º^µbUJKGÓÎÆ‰ÿkÈm<ؼ£ÙÞü¥ùIs[+ÝB/{Ô¼­I²LÛü÷2Ik¿Ö›+BWR+ mwÖÉÚÑ5-íĆK«Ø5ï]C,¦U•©roÙ¾ºë¿k=Ã-¿ë7hg‘ ä z™eGñaÍ/ä|m† •í`Î<˜SEN‚Ÿ’bÛpű4/ÛÀ;"äJaUp^vÈŠ(+Ÿ‹„¨wªN(ìFÞ.GdÝ•#¨Ræ³7Ä(ÑõÄœ˜a‰ijFGCLh±ÒóÎùŠú‹›’™ž>+ûCæòxNÔ†Ñó“K+ Û¡ûÚÝvWñ¶"½3èé_rÁuÚá°'Û†XnšlÿYΙ¿·Ü0M0²µ\†ÍŒ§¯jLÚøOP0PÅ鯷ZÒmÛl@1éVr¦¤Å[ê]仯'˜ö"ë%aÒÍ¢N~¥0D´Lü\”Åy’ÂJº’µW>àè›CŒ´w™*U² §±'TݤºHgªp8F^ÄO#{T°+’i©&ª…W»ÕE^×ñî4no:Ø2¼yOõ€êh߃šeU·ÊÃüv×Ú7U=«àò UƒýFxÀ\‡5ŒlZÒÒ¿õÖ*ª-cÕ¦Æ œú•Ïþ¹åÍCÚTë¾_÷ËÚØµ«Wµ\l [‘³vøšO«ÒZ®6Í[>­eG“±Ù±úìªÄº’ÚsEÇ-)޹®ŸH:r×§ Œ’'«¸hâ?©#ò‹¤¡ªwšŸP†.2KœÅCTéÜÝÜ]Ð[,^iñ|â sÑcÄYTŒ™±Gø–Ìøèu YÑ¥ò¶7ºVòŒõ–{‰;ÔÖ»”³%Ž•µ kIÎä¼-éÝ“.^9gaøÕktiì­¥Îì©Îü¶è€ËWfÎ6e™ãŒZu)ÍÓìÕI4£i’~«>ÏpU¿¡Vè°š¡‹$•ŠnÂ(á=ù_ÄÃ\k†­½p»£Ã-vsNvÖ;÷LïÿJs”Ð}¡Ù½’GÅ&Ç}IS’YV?uròš”IƒR–‰f]t—õg¾UzW´GÙ[Ñ"rJ~„ËT*šC†#GÁ (D&â¿B$4g©œª§Dwtò#> Eû@—@»2AqUþYnQ  6´úQÛǹÐZ}’|–4¿(Ç@]‘OÐd´?­„îòFÉ?R·’Mœ£\X7 B>R!xÊŸ*æ€iòuÊÐ^è)’Šý†KßÉßá4ÕŠnVªå‡¤óØ‹² @µC»HÿTßG]¯Û§G; åH=Þ¦ú¬ß¢9/’&#ñ_©9šgúŸµ*dˆ› LˆâÜ]ÌÚž¶'+eùE»Z~¦`´è¾,¹ƒ¢ªìïXV²Í¸´–5E¹Å0¾"7†=K˜&l‘ÇÁdt"–GÆ« ´>%g‰sRÅ#ÐqÌ|_AJr%¯\O*h'N¢×P­êYuÈoJ¾ùšüÇLƒ¹¥áâ5¢ó²md¸|"òašJ?¡æëšòèdžFö#4'n2šQi«5“Œ‡M„•±uì+K«I¯íí?Wu=ð áY}s]R€å« dÁqõµ ûêˆÀuZݹÀë@kUw´.Ó·Éé­¨)«i«{eÉD/]ú¹Œ_5$0>p#03x¾.¼±¾ynóíåO–Y¶³î@pSÐ\Èö/nLjëÚNnp­v´òVF7l<²êuûë5ðê‹õµôà3ßfßU_?ÿÚjÚ}G¿«Ç—@Õ‡}úà”`¸ÿ’ožï²/Ô7¹\U˜aÈbä&Oa®±Ÿn2#BgÈt(‰CtF»Å1Yÿ¥ŸÏÚ{5'"9$~tF—j³œ4•…˜Ê¦Òÿ+ c'nUNdÞ2Bý3Ó|˪Â-‘ …õDZSd‡¤C“gF&Îm‹˜Ÿ·Éz¾´ÉqÛat·¹«‹òÔ2¤{A3÷ü:þj^5 O/[½ðeLUìÐØ Ñ»cögG ·?dÖ ´(G # ÅÆ¢g”ý$,ÅRhÀðÿát¦ÍÌ9¥¨Å6Ë[ ¤ì¢¼ÎÙf´cR<Ç}·Äí¾o?eí°Ö^qœt¿´ç“!ì‰ÛâÛ¢î.º¸¸4¶,ëžì­ü‰d–@˜r5öç„1¹B ?î—†pG²ÙœÄËÉ>É<¢Š^I'âwðëTÕN¤ ]y$Á˜cêtfEÂZ°:Í<’ÇÂsÒ±°*{).Å: H¸ža¥ì#·NщôE{¡#T;Tè;±?óf"™ NB Ú-¦(¢CÄ‘ÊfDîÊ?ó(þPKÎa¦Ò_ˆvj´:ƒ(@¤ÅÜV1ÿ 򪧮;&.ôäý<Ëͯ]Á$Â!\Ò ž"zÑyè\ÙQ®wR± L":ô{ 5зéõKr¹ŸÈsÄÐ,IÑ#0שϦsñD$:†wÐWàõyç“V!åv× ÓžÂñνððl7(Ÿ(“Èžòíâbån°l¦÷ëþŷʧKhࣇþ"Q´gÕ°Óä|£7jòUwð÷PÔ y…ð¾Ú÷ä æeVc¯p-6„b"ÊŠcX?r±vºêµºÁh-³©OìûÂkÈ"ÜA°téÆËÆ%vŸ³Ô]SÁªÚS¹ ¶oô ¾ª©püáµÃjcjNÕ, ¬©ï¨{Øèk‰i(ö]®Q4Š|dÕ“’;µe£¾ÎüÐö¾p«©L_j|`œÃ\Qï2WºEe™5ÔN \ô‡Õ-mÔ4×ÿ[ß½ÙÔb[Ù¶HýÍ6wkˆoN]þ¶ÕÜt5ïòGø7l\>?¸Ë¿²JW‘Tѳ|Iù7e³ÜuÖit¸\~V-¯ôùNøŸø{ÔýQ7ªÞå·ùÈÚeU¯ˆa ¶—UWôÑrC7Tu ÿ1L¤ÕRÁm弤üN8”ß÷S®9¥>Q‘±TR˜ïšdÂ5‚(Ͳ˸–³e^âbw?“hŠ-šë /yQÁuúi.z_…O‡º‹KòG—Ìé6³0‚̪fÒJ‹½»=›<|ïiOlQ/«Á &ÂÌW–ÅA~á‰ÔEIU8X3²/de&œL©ô‘/È_z>'ö§¬«â•â9Â0þSVFzeÊìü&ÉjÑ ÖììúøèÄªìæ¼Éi…i‚œ¤œí¹åü¿…qŽ%Ì1¯„ô<)ÂmìC‹îYE[-qÈVkƧ¼·ia Ÿâï' ËÍQ(Šù—š¦|•ÃO˜‘žö{ž8ûMN{μLuÚŒä»ñ )ì·°‹Àðçh Ò}ˆ=ðbP‚°ƒNS1¶éoò*Ð ƒËåEœ™Ùóy‡€‹Ði¬`;:Hä…ŠòQJŽâ½ Ëž©ˆGz˜ææ±C"ÊdÅÀ‹fÅîK›Ï‘IóÁJ¤‹l£<}G[”¦¬“™{”³ÉÕA€=Äú•*E}L±?Çņ^¢n£ ðËÖÀiÄ2ú •‰#?B¹üƒ,)ï â'2Ü"/x.Š”ì†‘Ã¡ìVÆñ´ÙCÂJÖœ3øUY`¤êá†ákjÁSó§d,_d­Hž'ÆÂOËŸó»²÷&-)Š%–± ¼Ç’þœÿ¿ìåis¸oãÄÓXÓsÞ Xàx9R&Ë0€@·Ñ/t#ë\NA?lº¹Pw‰D ~UUM oãvš­&dŽ\B⛩R`¶Â#í*› Jáe`¨Íê’µ_Þ³ÑYŒ‰:ÈuõLYI–S—ðIhøA%y®üNÆ‚PÍU¿Aïk–Ôkå£ÀÍFmáÓò,0 jσDùUÏØu²ãp®ª7õ TÀ÷`ô¾2g ÍU•‡aÄYì´î»6ž`Ók4ݘÅT)±»ƒ¢_2Ût?•÷¹ßËO?­„*n×6±À¦Ú þGþ ß¡`gÀ°ùŸŽ~ Žö¡Õ“*+ªÐ2WirõâÀ~_Òù¸Ôä½Q¤1‚ÆÏÚ_H7´GÖEQ$qsÖbö=Þnß‚θ¿ …g-¸‡ŸPEØæ–~®´û˛Ƶþ½ÌSWÕ¸gÕ¦öþ¿iÚOn ì­Lv Õ¿"R°!èY<^(Ÿ(/‡üÿWÓB¹àMä–v¿AhI4ºh|SY„ ï©Æ˜~.üÇqÐ.tŽó\¯D*mµ·|‚š´²Áî–˜j_©ùE1.ÓÔPǽD‘ó?óãØ,®ŠâÛ¾µ¯ÕôRÌ– ¤.0³¥§â-`%ü£žì‚¼ƒ½%G]ÑÖ$ꊟQÿ¥©Å~¬È½?6kŠ(ÿ"õj®RºÙp¢ì|åÉ’·®a%!e¿—öþÅé•s%£(YŸþ9ç÷/y7x'ä– ókR×ç´‹–»éÚDð<£ÚÊ\Áä ¶MÿȪ}+xžÒžîa]ÉnÉî“s#@nêäæ³ºØÉî–AðA±QBptMIëã^%à"!Ò \$=.ý ö¥d yê xÀ'þéAg€¥¤Vh‰~âŠx:ÁÑ’ï$K #ðHvZþúq ã£>%‘×™R“·]8Läã ɰ%ÌHü;`M§ÊBÅ?–{:ñîÒ¡)N^ÑËNN¸´A5 Ò‘*©ÀÀç=Œ V\“^@—˜Î¶P5ÐQyOCÛdh–N-¦\øÉ¯·åeÀ„ºTùÌϺ©ÚKÚ\Õ`1¸W±G2Ì¢EÞ·¢2²Ìô\]¯&^%‘eŒŒ_™ö{Vsrw|ÔÄS³”ÃÁ÷‰eãœýŽÍÞ(ç ;U6*oP©oLIc+‘lù Ù YÂ`ê&‹””Ét•If~¢ÝL<z©gºv_5­(ê>×GÖÅq¤ö´Úk?ø¿‡GÔ†Ö¬ªJ+ z×ÙÙnövÝ׿&•d?ò ®CË¥ëå€$EØÉ'E³dÓdï¸p‹Ø-5H‡Kc¥›¡/¸ ÇH‹³ÕZñ¦¢£Rˆn™°æ÷Õ×Å5¤YÉVŠt=?W&U¤VŒ­”U(*>•ÏöNrìwt88þtòK‡Vî.O*MvÞÑ7(g&,ˆôÄZÓ7¦tMô¤ZY]ó»e;Yß œÊï(­V¨ùHÌAveÀy8'è•‚kÂ82 *å]SÞSõbpGS!¯ÌÃåñ¿“ÏWˆ„㲦¦†Š:u¯íglI¦*Fa‘.RÆ '¿#M’ðëÒ‰39:E²ìÜÑ‚ŸÑbõTÍ]m¾ö;¦³o ï:DІeeS¤ $£Äsc v¤ &Hî’v²'vó‡°qêL2:!‰ &³ŸóøìÅi„½)Š~¢.©LˆFèι›“”†°]ò‡˜4g6$ègM´Ýi£ v …ÞA´'&óC$WÀP4’j!?â/€&ÒknÔψ~óD„fVZÎdqLPðxNv†‘ÝÚÔÅî…Ï¢œ’&É8UÈe¯e.EhA–P‰¸ì>ÂûPgh ³IŸ§ï$lò ”Õ]4Tú)bmàšå/ðšj´ôjþ©:¹&úØÒ½iLš$'šd4'µqä.é:ùZE):KeRgÑ[ˆëà3Y i  éªi:²²Õšñ‚¿ƒì|ŽÅcÐÞôÏL<¹–?“7H[kü¾p»}¤³³˜¨XWÿ[ã’I]UÀhñ? ¬ô1µj'û¿øVÖ§5g7­ªÔ ¯Š(ý¦p3ÓJŽU#‡+"…ÄÏ…•"¹t¬¨ØÇŸ!Ü ÖÈß6äg¤¿Ž?FÜhò=~C÷C!nßèØW-¬/«»äì«hnY·i“fCËÚ!õOêv5õiXãzÍ•lÈ(Íì×7©#Õ–u=÷TÞûìæììÜYü‡²N¨Y +0ˆº† ‡û«áËè>4–|cXhˆ3Dè«mº"ƒÕiìf\kÆ­îÂAž—¥'ÜK‹j KÉ£hd 䑼”\$ý{îƒçšy^•j\+é©ÐVõhc‚ö¶®ÊvÔþ«ehvbªügý´ûV‹ÓA-tè½á%c\E®ƒTþø58ÜAÈtþ|Þ0¸ µßðÅ®ŒoŒÎNb)Æ®óм‡ÝÝ—\Ý­C¡ÖÃü—}½›(Ë+ó”Ëo–r}t`® Žt§§$¦lB™²l·w‡ýµäô‹®Š[ž71ãqrYÎÿxF~yN¯´#ù•×½n§a.na}“˜³YpB©› íR 2Ú Súrë@û¯Öㆹ 7CWáÊ5`Žä%w,Ïú m–sÆ×jzž‡ÌCN¢‚½øy©ù‰ é—…[ ßÀNñ8  ¾¡gÎjyÆ:Sob?»*ÿ²´T¥¦ƒË Ôœ0‰SÜ‘ÿ‚};û׌‘Úª Äí€p2™I¥\ÊëxAаTxCrFü ûVš[¢é4¨¾æ[yàüP ?FL°¤+Êýr½F[Iw ñT´ø4™Š&¢Å@‚âä„îa“É~2×–sž}>ï./S¨ãž+X ˆÕ7'4Sä9½e!Ä:er¶%^Â9Ï"?‹›…?H/)RÅÕü;‚îHJÀ9Àt ÷À,ämý7†(b,8…ï`â' ÿìÍ›’³ø“‰6šLŸ(½”±ëÁ\u–ìaÎV°"%ŽP{Ñ(`½ IâÃNÐ ´@ýÚ!¤ØÆ¦*z ã(»„è@xÍ#‡=駸_åe`f"1ž ³¬³®p‡Vªü›ýoõ ¿&\¨?¼¶õ/Õ 5§k¼Uf_Ÿòÿ\ªnR`JÉGïf§×ÔÛT ¹¢²‘w ¶¤H0Pø™ÿJ¯8è€\y;¸€èAÃ+TçèÕš&õ;B£J£gëg:¦WŒ¬¦ªºù2ëmÏ›¢—±Ö–ýZ¼¾¹UÝÜ¥2¼b¾ó‰ÉDôÎßžnʘŸs7ëïì…¹Ú¼rÎΓ¼~¹õ¹Õ<³üåW[ߣ”W‰ß°Ø¿Ô*ím7¤BUª8u­j¾æ{Ë Ý2-¡Ó&óÊbné×N`ŸÆŒ ^ã·Iƒóåù8» î‹¶Éž`»,Û<å÷гµmÚõ7´"íPã6ënÇ ^ˆP¿þ_`þq€“aHÕŽVY3“±ìI¼t@sJ_B$ó9…&[wö«®\öEµUMÕ`7ÅŽëè¼æ<äúd¹ÌEÑÀÒ`€dõJŠÃ²¹b»Üv—x,9"߉·w _ ÏèKhqUlÇ?¢Æ13¿ßìÅE´ÝÊd6¡FêsÈ‹Æõ6Ÿ“rD:ï)_Z7Ͻ O݇ª«5KjwÕ¨ºUµªüP9W>¢)‚Bƒ%þ Ð5µp¡é½`¥V!§,Ø»á-šFùùjõÍMMœ$:P˜k>cZeˆX—Ú3 C&“yná_®gè ¡:Tûãü+uîÅã—w[zoɬåÿ.˜éiŸk61Ïu¿J‚’’Í’G¹Ã%#òæ)$?JšÈ2´jU#Eg™AÑLÓê„¶GÇëWh—A¿€«àÓìAK–­Ü ‰Í¨'Äæó„vÓ¯©*“ÙÏŸ6š- íOíqŽy´p°fЏ"ÂÕ¡!²Š„Á':DÑŒF±7ŸŒ…áoÀ]mc( ϧ—ámèrþ C'B6åÝN:ÑtݶÐÔ‹]I4G[qÈ$$LO'@¸ÜÜÌú„@Ä#ŸçGˆÙæqLõ ý<¬„ìk*ðºßŠ×áÐ"2Ä´á=?=KFzRu“éÂuÅšÃw¡¦Ø-ïÜã^8Û†¹+NWߨžY³cÞ†š³ ŒµöyÔ¼7ófVí)ŸZ¹¢d{è°—×ä.³Î3ÿ#Ìdl9zÊKT]• (É_Òkò ²ûÔñð |1qŽxÄlçÚ2,¸5h£ ¸\Þˆç¹Çü\ZU~º$³Ä[Æ–ÊËÎÖ]°oÞÕêÐYϱÕÊ6Í2ð,[Æöt1;-wl^Wegù~Å+YvÁá¼4e,pT½WT¥©J4ku¯À·` `7@WÁÝͰæ„Âñæƒü¼ @ÏQ$ #o :p0RÞ¥ Oçy'·Ixlša–öš›9z[ Éd2±že9b|¡‰-Š]±«í}©ÞÊ›²•ÚÙÐGÌÌœ5¶¶l`â¶…k¨¿ñŽøb]qN±¿(ÁÞû›O0ŽÒÐ1Â$Ã2e(dêŽi/é¦äÖMLüyÖ„ÊiV ˪\˼ǽ±Á’ Ã?¢Ó=˜þ~’vöð¬©ÉÓ&/žÚ*õ³n&›Ÿ—‘rž\Ÿ]6ûAÊÙÔñòÚõú‡($þm ØsÜ[<%>•ÿ¡¯M`~0:|ÚßÀÓØý‡Sk7™›šŠÃÄm&È|ÚøÐ1:¬Q¾ÁGb9÷Ä}ÞÇy^øäþ.žžßÐ@z e¹@Ó@³`vho¨Wà“Gë‘z,ž?|H°s1Tnñoƒn%6ŸU–ý«vvš{g|n¨3œ5®¦ž Sà†Š‹²a«ò‡ÈªäPÞÝ‚\ÝÝ”ügYJ)ßêBè>lªèæb¨É”ŽÌ%nêÜÒ]š/šžRKö(Æð»é¼±ˆÐ«?æíλ¡›+ÜÀò²‡¦ý£n&ÐÖWÌDX«è7g»lZ2utÊRà¶¾K¾£êY#=ô)Ã’¯)˲Š4Ýô·uíHŸ¤W ˜‘lÑHõ`FbJµ|7X™4'¤Ÿ%ýõ]Ùä*| ”ʽÊLà! ùN¦æÖ›…?™oóñô%8hŠa/³‡„Ëú®m _H†Å †×Tk¸\® µ[ãý4éÓÆuŒ^ÑѬ…:Ù‡‹)éÚ ¹8QÈ%K9üšzÉüÈU‘j¤-²Ý ö€Þãn“ƹÌï( —ߘ÷¾¦ªöf5\½¾zKíèùE ¦Ví«œYu¼breÇŠu•k‚i”x‡ßÎ $ã¨1XÜUÿ¯R¥«j#]+$“寓GkAõNÍ{ð8v—õˆ}„"ãË~kÙ!>3eØ~töðx#;‹ÍeæªÆÕ Åh_†°V8¯ú¶¹µ}Ò‘”Ç鲓ӘÌK¹‰’^Ò¾Ê{jŸ¦lÖ¯ÒWwU>PÅè§kS4?ë.ª÷j~ÕßÊ€:h2í@\¤°ÙF‰¹^èÉüÅ>@‡6Â>@¹ZÔÚéÈpe+ˆ¡è[¼»@ü`ýŸC(9YuÙVH¯£´÷ìû5 §à¤ùÎoìW…¡jEVW)§­ÅWcñMÆ®y¡·žùx’¾ &£_™O†Ë‹ãC­ƒoœ­¨Èq¦¿˜7 Ö†Õ“#©Mº™ñÞØ—#£&ädì1ó¶+ìcyæy1?º§7›£fQ#å’â§DOo?çÓœ®MÚ8÷Nê™™?Lß9ãjÖ%7m5wûÎ|Ež>þÁ^¡¶¡÷%¾ß¼ÞÁþíAY°Eð‰¿…'ÉþÑ0œå©m,j¨4]5µ5î{Ûœ>¹¥!=ɾÖ0…nû³½”§ƒWåÈ öð÷ö.öÝòÛƒK‚…þ3ÞO®wöTç>·ßŒÔBÂý‚•sÒ+ .è„Rî?OhƒÒ·+ØzJ2M²?¯VÓ^/jÆ+&ä Èk,ù*yª<¯ ÓQBlÏ7àÒ˜ÖBsñ‰îäˆò‰†¬Íê®7a^RÍGÄ/´à*°’H"ë±}êÝ’Öyð"XŒ·ÄÛ‘]¹wºµÓú¤»“´šPâ=½NÈaQ$¨\“üq ;«Gvó¼ªb`»þ 4œÜgt‰ 5:胇 Ïˆ¦ÚÏÉ’ÆdÈd¸ù3¤—b—áÐ)Õ$ÕsU,l„0µB¼å°¹Ü8™?U+AÿaÓ°?ñqh/x-™Êžš<Ž@p1xZxÇ]-L€Wª¿èsëÍ•Öç¢I1$7Uê„ã¸~ô^<[¿¨‡b©z03ЍC_CÓØK|@l@å’¿bó±Ðf´ ]®ú¹6­¦´*¡öò‚욦U•9ß³­ 6yþ›ÊË7D>FŽø_8ÂæFB.Âíæ¾q·Ä¹Ôa}5,KWmËë–“˜_®õ_ô à4ô¼ ‘`“QEE…Éoéo)2$3!0޲”¸æ‡£‚óCaKä™ë´ë€åƒÿ˜È/È8IYZMú¶ì¹Ù#Íu{ådÕm]"g =°4ô§?¦X¢ ««Õ º>ºƒÚ®:¬„¦ ‰HºoÊÒÂnŸ,„¹…Ô,l(Øèþèu‡tv}¼®þœ¦:‚Wà˰Ll/ÖÞÃײJ:.©ñÄÓ”/3gk‚¯UmòÕ@<]féèW»¾¢#³VçÄ 8^¦ë¥}#ïNò¸¨sð±°¾€7e¶1î˜ÈŒð· 9î7r ¡±  E)5#0g™Ó¦z×g*4­|p Ô 넃ڦv&ÀxÅy$ø[QMÑÀ^Ë"™.éJÁWð’&3¿q>"ï(éžQÿ“îxœŠžÑ –Ûoºú{=îW>ôòûÞ´ÈèÙ¯õõôvöºü#þÓÞWn»g²³ØÅųù“f™í’)š§è—â4Æ×ˆ{\]‚b¸kh¯¯¯g²›rwt‡<õy`¨ç_wooŠJh[0ÝŸì¹m_eŸèlé¶ùõ~›=L –ggž•vÔÞBFo¨?ØS¼Ž¹ 5Rðò¦²Yi?¤ÖŽ¢ï²KÉ×ÀràW°ŠE"¿CèšHïcfWÌ™¶uHLþiå;`¶†RGÀÆHáÇ7ñ?)vÊå!ä)ù#7…»@\×¥êÓéñB½°ßxÈþÄSͬž“4³YêµÔ>ù^ÍEPyR_vÐíQŒ‘H%{¤ç2Â¥92e«üÂ%r>>é@ßä’ð7Ä á(uB}Bå’!+‰Wôe†@×C;Àc£j¨v±f.ÒÉ|Ƙaì`z#“¥šjù IÕ[Ð]„×}á¶T3ÃÓR‹ÁvjáOô;(¢­ÀÖü·­²Õ¸ÞîKâ lÚ5ðjŠÁÿ¶G¹ün¾ÛE ´™™Ç†ÉçPox%2e±Ã“k³êLuojÚW¦U¯¬‰Ÿ×«¢¸¢QÅô’žþÒêpl‘ÙŸnÆ›èIÌ6̘H5¹ŽxE !gk^å{%Ã%䥧r“ó–±Z²=€ÑS½Ø>\4me6 >ññœ¸Û°Ý4˜¥é“bcÛØ-<Æö‹-ÚòÉxJ,`4xŒºTŽDKí’¯¹r[ç?R6ÐnÑÞïéüÚ(ÝY]P >FãÐaÈU¨¬UR=SŸPÒÔõÚƒZÂCd-É6ŒoeˆRø#Ü<6­§©¨Î!mG¥M#EܦéÛ€/?Á¾pwеB1Ò…Í1w §‚ʔ܋©Ó¢%”[4RP4TP4²Ý‹4 Ž óa+×ÀèµÄ›S ù1\3.‡ýD¦¼YTkKãµ_±§T[D¹¡†ú:íÍ7í^Çþ„L:Åà~:LCÊDÙ}ì6†ã]™ßØ!h{í£œž©m´©Ì;ÍÞ‰žØÐ/‰y­ø3––…û¨ùú D7ê/2ÁšˆÂUAÎS"¬WÅåoU·Â[¨¹ôpq­s‡+l;iÃÀ¼­IÆ-™s.¶u+Ù\Q\]Ò$¼78ÎÃsû‘x³Ôë¶.3ît½(þ»â^嚊E•[«ðjSÕø²Î%Ï‹=E‹+½Ã|ÅA4L†ÆÖùyã=»ƒ7×xâ;ì¹àZê©õ¾²0ý >%´¤Cù…ä`ºú°ˆý`éîæûÒÜr×Çÿ\¿ûf»„ŽûMÞžýÞ§åEîÒ9%=Ãç}ë=˼ï}÷ŒÝ…öÆF‡x‰oÂç ÷¹:¡·)Ó!¡•°ˆ¹AmÆWàKXµ¨3㾉¡|ël†ºL½–=d ›þg¸EŸdÏ;:.û¥¾«c„¤·î+ëeôÌ6v8}©üžše8“×=ãQÁvÍ(ägêÀdz×ù:ãiÿüXr üxEö?Ãùê(àׯ¾í Äá·IºI½-¿G~ ì¹ëwo !È(T²$EBn~^ ͪYŒL ›~1ôb!3Tí‘:º±0E‡mÉž5ý¿©‘¬Éx_î2¾Œ‚.S&(X¼ [CœBúºÍ4méeYiìÄîB_a/Ù=†vÄgY=0*)8ãïôêì¹ÿh»iÿ¢ìÆ}†KØg•)HNŒv0xJ¶£Š™ KÌÿ‰³ëÙ<>ÎÙŃ|ÿ3Ÿ¹çš]¦¯S;xÁîºouŸ-lY½§ ¯4”O.GJ»/t äÖïœé(ñà]íTí;eOíEc©QzJÖCÙTÝMµ¯ ³:]·H]¢Y ¼EÇ“Aº¯Š.1µ5½OóÅÂtnÑIèn­q®°¿2þd”r…¥ü qîLKn7éˆì·9”$:T¨UM!ÕÝu`$€Û€:=÷}$`w]¼ú¥fŒ¾5ðØ n‹`=cåäU®+•™(hÍM Ç›C™‰´H¬­M*á3oØ)üÌZ˜÷DGdŽ®­ú…¼ƒn+B }ÁQà7à ðR«VWªa@ ¿„cT¥Ò  _&dL/¶‡3ÐT2ÙžO¥6ƒ3±¹ä8‰[j¨e³øŸçO4ûäv½&~öD™Ã³"ÙÁ6¶sh©¶R]pX/z×ÄÔÛ‘ä*®ª’âÀÁ‘a{GoI——Ì6 ›Êï”N)*;#_BC\WùåT2Þ^¯Ò®ÂçÞ¢aewK»—Å—„йRºT[œXô<Ô,°Äÿ«?:T_$)Š +ü߯mïì[Ý™ž w¬ç›+ÍÑ×yÅa(jùM\K¥Ëùþ†b¾+~J‡.[86ùŒþñ¾(÷uëSk¾g{ø|äy¨<ç;ç?bŠ6/o 8|[½ÿ ß>Gœ9N ‚Ÿ¡ÿòÝŒ…Lî 7"†Q]x%µ­#Šœ|>³[êgI‰z3ô‰sMŒJ1ÊpJÍ{ ºƒ½¢z¢×Á„Œþœ0Tó7ÀpÈÓ¸t®m‹»eÑàš@Ý·ª’ê)µ=”ÌÕ¹çGÍóUŠ%'ŠÖ¾*g‚áQ…ކæÃ ä'äÐ_¥ü¬Ø¬¨Ëo¤Ø!¯TÙ›”wT½¿ïK¸^û\‰ß¥Ó'(3qŠüLaÜ[f{Œ¾Mµ ‡È^¦Î®r_gg¼e“ÍþAÐgêErJyï;5ZT픳å}Ô•ú¶àW½M÷ÈÕ @û^sLùH™©|¨ h‹u¹z•^§ïßAú¢Mñfœ‰~ÍŒ1Úg¸FBwƒÏtÖpÙPc¨7ö0Ÿ3K €a¹)Çq1ÌSb&´IY×Jñ<‡xámúɺ>ÚBm™v—n(…äc&`Jþ Œé—ånõrµ±Ý´Ù,ÛÙ(¶-âAí=“¾!€!“'¶Ó ž~qÜ”x&éLA&9K"qÐX:yÏ´-ödžÿ)jT:&þB—€ËU+€±t‘ñO`Os)<×£3¾ŒÍY=lè [SG+§Z›‡DÒƒ±¡EÖ’#¡ËÎ0ŸƒeáÍÑáøhc¦«oxm¤Uøwß1Om >|.TAƒÍ|³ü3‡^•¬/mT”áidÓþ¿?˜¯[ºØ¶Ù–[³ÍKÌÍ,ÍAá 1Œ|Íì_šEëgÃ-ª9óDè.®6ýíp¸·º•öîb&×ÓºÎ_±DÄà|ÿöЖPT`pp@hLò¹¼7½p $È»~3ÕóŸ9¸\DˆX@ çP5ü8Ó!C/n)%#NbmÐß°mì—ï˜9‰ü´rê|í¸“yw²@Åd¼ý§A‡tTåÚ ØÏ$N§oÐéH…î±ò¾>ž¤{¢T÷ójµe V'볇ý.ÐV¤)ŸÎ%½ÐÒüa¹?BÃM',÷±-Ig®¶žZW¾a› Bñ`öÀYδv𠌀w{¡]袒ijºèÌ ÇGäþS ÜJ3%‡×oCV>“÷š2û¨°[«lœÒîÈY¯8ÍýãØåzd«#÷kß« 5KÔ¢v%|M— 1j¡çÁÞX‡3ëñÚ:ùš9‘ÙÃ%©Àä\.ì(\iûËjgRñatOvÕó@"Þ‰™Dý.D„üGËBÛFÏibQj-¹ð·…_«/VåTݯšXykÞŠeÅÙÈkW©m‰ðhK¤`7‘~À}å<•]=YsL]­^¨ì¦j­^§Þ ì¨Ø¯¼ÿ] š‡šöÕZî ‡““°«Ð94_Hv"çŸÐ—H¨"öx;/·çJ@â±¶MÑïRžPðLDÚ%šÚù@pŒ6Q£é¯fÕ¨N¯§t+&+‹muoô ŸûÈvü ™úÝuö C .ÓCã ÎÏîâ" ±µaŠq²1d8i}gøÓ°JˆæâÞpç¨åh/ ¥ÚMÿÞ2~pm¡ªçä½”Ç51ÈßP‚Ö­¨–ÍÝ([-} %±óÙå¼…Ëåær>^päØÞç¡J8WRyÈaPú4d˜gTbòq櫳¡kU¯ùñ‘ï™ÆÆÅN4Ø·HUb+yãÿKl­PwToÁﶉ¶–æòÂþx\òÊxÍ(Óð¨ŸãµÙ¡¹onhRx~¨62¤è—¢Ú`¢»Þ•àÜgZQ¨vŽóÞÞ¾sÎÇ….ÛðÂ)öÎ|ßKÏV×·Ô—tE–E†Ýžhço–dCø+,ƒBsžêÌvú5òÝ*RÆÎ§÷еÜAee¸Ì¶äÿ06_‘M ½À%âŠå±ïl Âkòí ¬ñŸñÎòª|ÓƒUÁ¾ÑžÞÞÕ¾ ó™h`g1A¶g#öÀûЧÄAf8¿’[À®¥N`p-N X‚éC¦à݉³ÖéáÖž{ø$(©ãâjçWð¢RPÞ‚rðÑ gD‡Ý„NHQi£d³tÐi‚þVLìàRp8¨bå'”4|ZyþCµ˜‰7’}›ú¨îIÆ’»Éjñ¯j Ò Y -&ú˜V†„ÑŽ–$©=w“@ªœAœWq`D‚OůRrMwâ:²H‹æ" P±"¢ô.X¤òb¥pªª¿‡¿Â¦¨7k]Û™ÕjìL…ñ¸iO˜mæüý î¶~¸é4O˜Š- MSë÷|;C~7W¢Ï7¹ôYÚèsr%;Î’aÍß0$)ý¬Ì€1ø9Ü9„­ÁÏá7‰ Σ–!S¸3º5x É0ǹg\ƒ>dÛåá¸ÄóúmšWÌÏÖ~†Ä)Yƒ€˜e© dÁ«Òc¶@r®ìÈÞ2ødáÆ0 –Õ•êœ>\¹²‘­øB h9Ê»ùÔ˜ù+'çŽ=?%$ÊoMl)úTü:z:* £;ЕŠK_–Š6FŸ„†8Ý:í îÿ\—MïÒŸ¶f:Ê<¥H°1d Õž }Ž+âûÓi·Ý³|gÞ£¯×ª‹V¬›AúÁÌ&ËEn¼P|OV¨ZE÷Ó^ÐüȦé’è—H3ézÁcÑwÊ‘ôzgV@åäyàÈòwýåºçŸìéÝæjîà­ßX>ß–ЏÞ?]Äì×fgs›Ù8î°)ÄÑw0N00y£^ÂÑ Çÿ¢IçûÂþÁ®N‚ך—»-‘£l©&™îƒ]Sï7„Ükü[œ:í8‰°­ÍËŒ±•áÓ‡MM¦KúF¹e¬ñÒAÜD˜2²šåWä-ÐÖt•®P¯ÂØÜžùÝÔO ÎiD[°%u—ªUüÌG?!’:÷‡…½ôrϳnv$€@D3þk¾Ú±³™=D.õnë§Î«[4&c¾)‹¿`²öiÿÀw! Š•ŠÒö²7¹)Ù[‘¶êݲt¾–ÁÕ˜a:Åç/Í»T¿²ï-ì;©Q@’¬0Ciû)cs$ÐpVbØb Ú®rMÚ <ªÓÝ1´µÞ/tGÛ–e.¼¼(Ró¸ÆYW²øMmóªQ_¾¯[vßÑ•T€GUuÈbø<`Sò L…²¡-Šöò$‰Cò#%‚Ý¥íäGä¿àù.yye:X§«Æ«—2—Ù(­Ñ´gš‘›UåÊ™À`.ðI:K¹GeãñG…â¬êÜ€¨RÙz ‡PñŽIðƒ$„ŽOBŸ L‘ûä^à"¬Àv‰&ò²n™FÀ aÆéÆ©ì]Ípòa¦-ì`í2}¢Î¢Kå–sF®œ_`X¯ÿ ÎÆjZhî1Qj©¤ïk6* ‹¸R<ŽA™ã×¥9Kïéf•ˆ ©Ç±H=ºMT¡.p㳸,U@MßFý§f•¡Þš-Ëœ¹~$œëþI+¡Zéw«éâβ¾¡N ·Ùk¾¤RYÑ"k“q¨ëzè€ù„鋙зÕÔYf»¸Åæ…D#^c M!ÓfÛrcs Mι›ìÁ¼ÕÕñ#ôm7²Üª¥æ×ŽÆåÄ Å+|²9Á×Û×›ß(»87µà¦5þ@å¡…ð Á©¹½%JäbN’•ÔIo‚Ÿé¾;Ÿ¢Mc»ñ=}K ›ÈýCWͯT”9bhäpò ÚO·Ð1ZW`úl„Q—ÐL–?/¸Ÿß5 ½8§V£yÉ2Ô~ñÝyÿ“·ükê ‡³T’¥À÷˜Ÿkm]Gd‰–£÷à,ò©þ(5BykAOa–›šÛ>ºèvϘÃ2~ƒo`Yiõ­ê¢ÚQu µOjù: .¹zLE³ò¬âA%'Üs¸ht]S¬I¢¾ '  °Ÿr$pÔÂ3βWÀ!à)ð/0L>T6M^$î Æ@£©l½h¯ c¡~Àax æ¡é®Ñ™ºÖšYäj JzuRÞ~'.‘Ì—ƒ¡D°HòT1 Ø)ݢܢ:@¹ñVhœê ê7å_ÂcÒ=Šó_›7,Rî€Õ*§z¾¶‘ݤ{ÍÿÁŸåY¾ÖtÕ0‚™LÝSÃØÿ6ª/h5ÞŸì@¦‡2˜Ë,bþT›±…ªº ê%; ¿ŠT§I½–¨¦&‚‰^ …ÂÇ5×LÒOŸ&[ÐcÉöŠ(è#ÚîºDkŒA‹ü¢pB]àÖš›ÖwŠÒt6®;Á¶ÎÕª²1x+ïâõÜѾþ™IT>êBÊÛ–}pz0L:ŸNv¤‹ Ï\O½L@Tr©¼E¤›iªz›ú ›kÙãÝÎ/¦šÈöö˜h]t¬móÁÐÒÝÁ:Ø4­Ði!DÿÃ8uƒ¸2ívm!ggÿÔ $¾“·Lo>¯'bÖ ¶„mNûp½iÞøŒ7šx—:ðÞ” —ÌD’ ￘ËÙ˪lù1è»kOJ‰¾D&Æ*ôtS{5 ¦óêÒß4S/¥–¯Q°]FAïÀÁ`%øuiMºÍdknñÿê'íïÒß`#ôjÍŒ¢·¡}Twu½$>ß!ø¶€@—èÎñÌ…´3oß¼Uò¶ã}D©h«ÜÌðË÷4´À ¹ ŠÕøCKÃsµ{©ÞB`v°ËYR?ÍxƒûE{ß9>¢¬pW½«YSc¯½\·½æFµêÛòÌïK6ø;ØÏ°­p±œTÖÂF:—©ƒÐòJNÖ\±4A8¨‡Fà‹üÔSyCrJú·Ô‡ÞTñh¶ý]5§0}ˆ¨UëÉ#Ì?t»—nT„ånåZÙzIXÜRâeŠÏˆNJ;ˆ~‘îS>T¨E B_+±0Ÿ@—„¯…fYÐì …B± ¶¹IfråÆ0ßÊ"2=2¤0BÕsäÒþ Aä;eɲ é5évY"øzÛ‘'ªØbú ¹î"7 o‰Ìâå’°ÿn ]ÆF" ŒÊþY€>! é!ToZ¨•i¾!xúš>ÏzÆ6Ź6ÛKµÅ`±P$¤©2%iO*Ü„ÍúÜk‹SÀΆåá祕–fsÞÎü„j|ò°ÌÖõWgR´fêT^'îXXïÜð’çåOKS]]4‡4 ÆÞü7ÆCVÜðuw’Œ+ˆýn\ÂD6ßWhª<×B­¢iѱ‘‡‘ªh4²¥PPÚo©øŽ3(ì”"H|=öʸÓq·böŽ8ËI(\ša ;†+·ÉÙßó—ï¦?-¬Š6E ÿôtqMswáóü1mHÍü'S©|•5?åޜ٠±â< zXž“\¸ÝlÁÕ9²@3ÕxÕJ:$+gFRV¦i$©õ½â¿1Ä™Ò,ëðøôôäu©…²—¤Ï¸ÖURWxÌ»Õ=dzÑ3+4¨Änæù`_kj0–82ƒI¥ÿ2ŸhŒs4é'ò!ãa­¯Ù¯.¥ij†’ê•F`èÎ Sy„ï²WÊ *Ä‹»=ËíŸ •Ê$É~ ç «£A.Ÿ’Ÿ{KéR¹ð&|˜Ú§±ú[ŸšêñmÄk¦#g%Mš|­AÎîÇ‹%ÈWü'g?nø|  é¤åŸsÚ↑51jð‹Åpn‰¡…1S¿‡Ñb\zÂõu-|”'=82˜ÄÏVF%} IäõÙ y®a­ûŸ§ýW÷}uqq…'L“ïd ç½}U¼þKÞ=È}§o©•;Uv±»¦¸å‚©Å' —òg±Wd¡ágãF]SwÛTOšwþdÒŒIÂŒôKš†˜P”Z´$r$r·(>jŠ€®…®‘3e5åÏ‹o{*¸Ë¢ßffLY›0(®{Œpè»Ù/t\áîДà_~0°Ì¿ÌÛÉ79Ø2¼·Œ> öíðÜò”ûn×û-¶$3l Ãè¨)¯6Ýœþ*K^üŽ:hzg¿éIòüg?as}$%ÉI©Û²ßÉÇ*c2ôÓL7ÍJ¢äYíQýk7ÇãUí},9ÍÉB¬–½Ä|PŸ*áKŒØ×<\m Q¯·¶1oQÏ·Sì Òµyíòž=´ß²qä0 V5›ª¤3;Í¿¤ 8n;‡² hPBÈ3¨“â’zÙY4TrAóÞ¿ÙuÎTª9Äå¦ñܲ·ú?l°r„ât9n€¸éÔ5ÙKQsl¦¶¼é}ÎìRª®_ý÷‹/WÏY˜\Õbñ¸ú~µDÕ¶ÉÞ¿´•2‰È.¬¼<—ü£HÛ!÷TRÕ&è (“ŸÊŨl˜ÿ5Ýp ”apl“4 ã”ß‚³•‡%0K~¦Séad-6òã°Eäj÷‘ÍcñéÀ‰Ap2o]®/ooöòùùK¥(ø-pz‚î‡O(o)ŸAðþôsºžR«³Ê!Dm•O!~üJìd$ìf,NR#?¼Àšcs‰QàPÁaÁJ‰TÞxüÃp¦R+^Q°«N–IU`°êôÊÍ¬Ì Ø§Ø¢„à-£`wˆb&׸TÇì%>›F9¸"¶IöW†•T³ˆŸëzìZ¶Û†¹ÚpS¨,Bú´o±è-Ìwç¢Nká9ßÜÀ‡¨°ô» ÈÙ#¤,9ZÇÿ£nÜǺ›ºp;4ï¾²—¥ ‹CÆÒ—…iÎxä·ìÏÊÿè/ÚŸè¥ì÷z‰Iæ¤ô„èäé#÷¤=Ñœa'sÿóuŽdD®DZF‰è¥È¸"¿ý÷•`·û‹ ]¡Ý>_¡l•ú¿©É‰Œì?ö~úEõ[}Íuƒî?Û®|ïÝ`eXVt9:¡Páyå~ê©ð? ì À¾öö5Žl]™zr@Î9ŸJd>øw®Á9Ïuß±Á9Ë)°Åæ É)·§¤<˜³! ÈÉÉ^’ÝLÑšXGôAª,ú„>Ö8‚¥9š­3)£)§&'7ëcªtþTÃÿäšãšæ)sðWT9YEÿ·EJ4%u%GÊÞ‡+ü3B3-Ó?;R­ýŒVf¿z(÷ÅZhèvSRpXí§®B/!oC÷Âf(o"s˜_¹ô;#,ƨá;ýŸ”Èó™Ûr²@îÅXâ)ÒÞ1¾0%™>[hŒòSÙíJ5%còö\lb®º¿ ~tz,¸wI`£o²9B,U}a„ôge‰, ^‡¯¡7³µ‰Ôâ=V¬ÉÜ1ó÷œkÌ0ÃFƒl—w×v”ÓòÚ92‰À„·µ¯òö°µÓþªêD>£îÃÇÑê~ônÔƒ4)/É¢H"ÕÓ0–2ÈjÁ‰ì $‰jcA«W×ß[|¿önÍƒê· ©ú‹WÔÃ%‚N¾ vE IŸIÓ…§„“”1h=†£Gà$¸à+-ÄáÅ%øðQ´\¬Bf`kð›`@ ƒÿƒ‚áÕ⎋]Æ+qDÕ€þoÃêGšWúCœCÓ‰ "ç%µù?Ü̳戲_æìäÊŒ@X˜EÁn@2ðÚ[½Œ|H-&ëÉ­ê>ðN…¬G¿ =T·ˆwšFõL~‘Í“‹d—-å#çDµ²uŠqÈâ$rêÝDÄE< ‚À8y,T¤ËO“ó8ËŤ‚ý€9"ÿ„óê#$¬½¡ÿEßÅVi#ñÑ`$ƒ«K²n³¾4ËÍnÓ\Îkn Ú¾³1d›àèoÙ¨ù¨êA'ÿdêúòM ƒÏµÓy4tNŠÜô¡·Å¿g„ÜÕUÍxãnz;LË;"©vZFzê}mí¶%¿{NïìùË l“1hŒ·ô(m³!©æz/4…¨¾”žh žÂ ¾ˆQßh IÆÑú®l¬Ú"ÿE0˜‚”I ©Gf÷’ßä QžÎæ¦LÍaþ¢3ÉéàWr¿#/àNÚcL;KûŠü޾¦•§YG˜¢¯¥î g–b]¥;fÊhË9Ð2ǰOýFAË¿*ÃæÝñÚ¶òjéaá°œ7èïºz}sµÍ@nKe²¡À¯øÀ‘쫚«Ã_d.ìW#\쯳ÔÄ×M©]]¾«ÜUr½ìw×m&F!“f‰7…‡DݤéŠmWm€—+‡ƒ·çÀ.@+i‰ä‰2:m Bb¯TUÄ@ª=>A5 QÂ_¤³äÏÎÀÕX¼T•Ž]RgÐGñxê„ö‰q&ge–“½°Êv‚có3 ¦vÆ ÷ŠY©¼¨| ×Ãí t஬‡|ø  ‹‘®Sà0j†tG Ȫ†ƒqò¨¤™ôº®—Ÿ—}”ÜA'AFU«À½! |”3çé‰È6h@äcæ;Õ˜dÜ1@âQ÷'OjŒc̼iˆ¥š?l‹uýÅ@þÿǃ;¯9Ç’à8ììïmëâ˜Ç÷ãI»ÓÍë\Ø|8IUKz5Cõðl–êƒÖë™îàŽ¸6û]Þ³†F.ÙöÖ3·p»ªû‘9› LÌÂg®Ÿ»EÞ¿F±T˜àÉ>Dq@t`|MÛ_×`ßeηÏ,¼zëx¬«F“¤/ ÖKBšÇNo¼ß×ÖïjJ;•D‹ŽM)¦Jf—äÿX´72ÔÿÈ0Ÿ gxS†¦ÔL~”àLœ6­4=3¯RÜDà¶)ÞŸa78ë9â¼ìdíý-­m m=øO†LsÐ51”à{Íö†ïËZÀjZiÜlгl²Lâ÷h/á¾ÞÐ:à™t”èW…™Ê,7ŸrØm³©ó¢}éÏR%YÛæ—§e¦Es¦tɺ=[’Ü+å§¼b û‹SÖG¡bÁ7²†dK?8»ÙÔsö{<#3жîõ òHý—ƒÚÀ}ë?®GšýI 8œO™Åw9’miùÙQ8Wž˜FÌ>(™)d±×º ÞKsD²”0!G€X¤]¡Š³dؓʭ5Ûk›-ª]ôxÑ„šŒªc•º²}‘Ì@­ý°n6j’Ý͆ µ"µâ ð ¹¥‰¾TâJ?(R&›@#”ÿ_D®‘­é ì*íg]çÕÄSÃI-¦PuUuÇt…­Äš°ÔRÍIVD7×çó§tûé ºqFA¼Ì]·[¤l•^’襇6¹¨§C»;ʈ|‹è°L©Ø _#?+ï«*ÀëV`hPhÁíè x©2úU7N9\ÙEzVqâQ6TÁ®c™Wh…²°)&*¦*åqð~Q¡l¹y¤ëVazp±õ37Z÷·!ѸN×ÓXfZd¼Åù¸5¶v®¾¶1|?ÍuW-η]3ß7õ·ülKq üלÿ3.04Ùž9ÏYÿÑÇÒ{  ¤¾Dô¤‚†9¦K¶ópÙ°­w«Ó伪ûˆlÂǦ¦—Ž)8*†Ô„ Áø7É=åuêr2K¾Éä­U±âs '¶¦þÆñf; ÝO“#σ9Ÿ]ÃtŒ4/÷=>ÆòÔïcCƒŠ'–¾/¾P´8ÚµTW*.­*¶–ü\4Ña\øCyO‰\œ’¡˜zr|ë±Ò;Üpç§`›âŒ’éáßü—ýH`pPé {ܾ>öY¬ÖH:¾÷̈tXàô ¡eysÕ[½½ÜaáñÎ'pYÖ¡y²Ìß3جåâr>?ÑN{ûº8Ûae)SgÄÌLNé”2xö7©ÓRæ6Í9›²$å›ÔËs+3–g\•#K´ÅèY領vnú YÛg½ž“—ÿ‚ûä_ä¹ink^à\Y¶háöð9ûßήE¦²UÜñQy$šè{°Qµ›¬Ä{É…RðÌVÚ–|ö2z残¤Dy–zNøbxŒºÀ›tºr:¾ª«‰ÎœÚW¨3Ú±rAR÷ðwg”ÎU òµ«hë^®ùˆô“d >‰?Áɲ?>špó¿øk}·Õ‰èAõ%µQ}i–X&c¦m¹m5_¥ËãçKõKÜß/™\nQ•¦¾UêG[úت1Ü%.™+Ó´TëÕlûFgc ·¨Ù‡™Âxt-‰^u¤wÙ–õ’3u›«œ [Tm«*^8µ¿µJ #ЇâfÙÒ+²}òÒÅlx t ê¬ bgá]ÀTð ܬ–´†¤Ð U†:^5–ø?ÿÿ —åS†lÈ`8lPÜÝ uoÓ&iÜÎIrNŽ[N¡ì+i›ß[ñI{[uW™£Ðj’Xð­ì­d©p¨h¡èŠT¯Š–¿–QÊ¡Ê7*©vÊ,UÈ/Èf('i;*Kqà•iƒ~À ×ÙK|).ï*VIeb²Èï,{!' êŒÿEåí%{œô=wTz–t ø3–zëŸÌ!rµÀ²Ë:ÆRn¹o~áZæå;Q(umÛm“ÓÜ\§­'Ø£¶aN¡ã†g¦=í«Î7<åÚD‰gd醒þe1¥öBs§wv¤dÄ_¶¯‹›ªî”õ´7D§ ÇÞ5ûcn*8«Æ‚@'ÉlÑ>U×Yt¿Ñ¶y÷ñ…ƒ\gýý¯¼¨ïs àmï ÌÍgTp}]ÑÁ'[ñÞÙÆÂ¿—2•ÛÊê#»Ãû‹v•¬*¹ïPñÑ{ØL9¼+ËÝ9%¸àWzº*¦vSM¤ì¹¯ÐÃø–ûš ÷»Uî¶Þ\®‹.ó9·y2JO.›XjS}Ní£9ë’z£\Ÿ‹¨úw‘mªn‰“óŠû ÌÙ@þQÃR¾·£‹+ÅpÎ7I2e1“bBñ]â«¿ÜÔØíq†ÄE)Tš²%qH<2VrŽæ uŒ¼­m|nhös‚1wãÎ'ã€ôñz3T·ÝGmªÝü‡×ÛÏÚo0©–¡žtƪüœ9(ó‰æ*Д ÓHÊ$Wæ^HM;MÿÀ'ÝdÅÊû·ÿ©g°»)‚Ôó÷P‡Ñ8¼Pûò‚ü‘KÇ&Bw ?À‰T,%T8ç¿Oìšÿ 5wE{™v»+ L}´cü-ÚF›¢È5€GqMsX¬è$ýWŸEoÅ’L hâ‚i¨é)¶‘ }œ?Þ«‘º2ÿÕLG â&%—Úšì“{Ýw(§þo¸¢ • _-‚º¢±c¼40±š«%­ý§ÎSÿgåÇê¶ öÕe„± ‹# mÏå?«3Uß*¤ªYà#ÃA BÛQ×]«åÔ”v`ˆò¨´—®³n0ø z¿‚·SJî'±lµœ`Õä\­ù;Ä/P•ä,öªOÄp¸3L:•E}ÃÆ™¿çÚ³tõ] » Z˜7l2tÔ}¥ž¢|§at5ºž …¼‚Ö}'þ—?YtQô>¿9¯Qô…I#ýXÐKrF­~¯=£{§è$·Š?Êõ/êâeú8Ëz~°ñ"*4ÿ刵td> ,öyez«¸’£-Ø ãø*ÏÁà´Ê áÏö9NÞ {òí£-wl+¬g¨™D*O'’Cè]ÄMj¿c…Ïï}à>ázzxò=S‰n‘´ÂŸãÿ–â|\hä>€ã¡ØNh:Šè_82•îq%Òg‘X{ëzzkpm5]ã/ÿ-¼ÍŽ{N{<¦pbÛy[òΚº™wr ðoÚUÈbB¾zÊŠ]AG6‹nd8æúfNú£½¹Ô 1“|5»ÑHšƒ>é¶Î‡ÁK•¡ûeU)e`ñìâïKï—½«¨/õýzà3…÷”§EÌx$Ï¢H…›ù½þÏ¡í%+EŽyÂÝ|=‹]ŸìŸøÎpHzŒc8oÏ%{WBÞ~¢^ 7fµõkö®óZÙÛPO¼¸e”˜@HÞP-Y2ûÞºÏåp×3÷4|Îú´Ù²w:x~¾|¾"¡Gê1ñ!ÉÛ,$9>Ñ’x[>¾®y"žžö4^›`HlNˆÄ‹g,›õ_¦ô­Ið솸ÞúÉö:î˜ÈkÐý.u'ñá|{æ¶ì †ø?Ð ÃpMƒ˜”‹rïˆ"Ùí0_À o‰C;¨ÙÌâ,u/ëŸÑW•dÚÊk 2åyú4$‘›Dg‘ŸÐ£ºˆ¨QžÂ8ì¿)’×±W’ÖŠ©ÞÁuÆÕƾ€NÒV‘÷¾ÇŽC›e´ãeEÂÒ{‚É‚{Ò&y™‚ÆeÐ7ðD LÓg!oTkoT‰:N:Q:¨3âºÚíuÎʹÝvÎ4R¯14ªam‘á¸Î×Ð}ü·EЂ½‹ †V [jß×4Õ&TˆªÁò;á2ÿ+gÇžgßPFf6»„¾Éæs®ÑÌóÝù2³‡N¢öÑUüTËnf$}ÙÃ6P_Ñk™CØdä:0W3A»ÉdÔo—« ~—.•ü(U‹kóe9rwçÍ­Ém_!¤DŸ öJñ'y³¦òLv™ù¨Y?Û`Øl‡\Ý,?±©Ü3sœëoË_ì®É<šU`nØ ‹á èâ1þ‰¼Ažå[¬µŽ¥ž°7ä…Ý>ë;Ëds^©·yÐ*Ã;³}‘ ZÚ¸Ž\GÜEÓ±4ÛöB{pBi~ÑF®Pû³v…ñ ›ZŽ7l©K¯9\4ÐQ§i˜ÿn*7éÝÄ®± õzë<çs{[öÇÌF%´M¼Žün»‡¿V.‡f9fú}¾¡…xÐFåÚôŠÜ Hª-êV>¤ømp´¿Æ{Ü.’Pº·¨_hehW‰«ê›êûÅ‘à[ÿÈÐÓ’žUí«—†ÖRf1_Q˜$ƒú•— Ä ùDíE¬ªª‹l* v`Ì<ú¼YRÖI[ÀͰJ-QÞ-HÿŽÉ·Æ=†\P¯¤€o੟dÞDYö{è.ú\ž¡ Jžgç„òIà”¦UžI›£ïoÚ‚õ†Û¡¯°“dMP·ló‹·-¼ÔpµnKí·5½k Ë¢«ú–·í³^7ÒB@#é!ú¬­<¥ë )wHN©Úé6ibtmA\?ÇPh¨6| µ'Ɇ“¨Oô(ê7ϼù‰âfp‰l5›ÇáÎqº/Œmf/3ùþž°Vš ôKê&e¦µæeæÎf1÷’3$Ëø879ÝÍDÚBÝ™[Ô.oJ~TÞ\Á¼ÚÜA1Y3rºe4gþ–;:ov~²xŽÈ!d±õ²u )§*éÅæåŽf{=?Ÿ‰L!ê.óê‹çö !BM>ÃÏ›!-&Tl/~ó˜…É̫ϓ¬÷oóì¶g±É<ð˜¶4΂î"]QVÍÛ «±öú7ê½d¦·M¤¢xn¸ù{Y\†Œ¾4V]=uóéJ…ç‘©1eÄô¢IÏ&þÝ [ËÿèþÕûoD»Â/A…l‘®Œ­·wd*Ôßk,í¼ÿyKí™Ü"üyž&u¾üw®Ò?¢¸MÙ¥À÷h§ÎÞÓžãl*|âÙåìèŽ*öÔ=­Y¶z:¹„ÎRÏFïßÁCeoJûEÌáäH ôXð7ûzç¿ÌG{—w„å‘aÄ»ÍCÏR¿Iy‘õ?å`Íivú?©Jeö½‡M#HääD三Ða#+$1¬ƒ¢Ð½øj* ~4ëŠ'}¨f®9Ól#?‚šlIÚ<õCt3üãzU­`{þmÍHô…~­¬¦ ’?O$ÖúQ†*ؿҤÞ|y~CVeü¸øËn†mou--EoÊ9/“ƒxÀúÊlfþÇäQà šÓêFãn¾ÞñÁœGbh/ì#6 ïgøZv/½hÞ¥©Sç/n‡oỀ>y] þÌdˆiVÒã‘kòA¢žòéx©'ÁõžA±ýªMòuµø+²‹a¶v°_÷Ÿ¡=ÍY¶ànE L¨«5ŒvÙžÙ<0"Àj=`ŠÀ ãqõs‰Mkü ÿAÝ?Ç0¿Mú37 Ì+Nþ!VÔ!}‰²Yø:yGÞJÍULÀöçÄUZf©õ |,á®]l\øp£*¶|X¥­ä]vƒx¦æžp“0Q–®CT{¤ÛtwtÀimWu'i”z¾€! ]75ba¼ˆpR~NL·¥2™æXóL"?Ú’Êؾ¬ÏœÊ,ç~å:±³¬)Öfža~o>ÉŽ°åhª NÞ¥ú3µô–áåüd¦’<ƒUbÛÉ^H"$Aï9ºéâ”üµysª3µiiY ™†ôšôøŒ_Óe´|•Sš?WðZ4@9\¥»¾CcO6ÄSÊgîiÓy»zßW´¯Ìæ×{j·rc p5W#ÊUˆ¤ŸTçUfÝ+];ÈŒVõÚr  â•ø¿¸ Å#Æý`Óº‰_È?³å™Ï1GñÁôË ßœ »dTø‚¿UàŽãi [‰?ØVü¿–›t)6ÍT¿A'âã ]ä­Mc]p¤¶$ÕÓJ5~ÓvþÁZBà¯Ú}àÐÒCBö¾`Áä’‘±cú&TÉÇPŸ]·€ã#R¦£çrè Ý›ßK—êâÔ#ð_œNï׎­hHÙ=æä\cÚiÈí¸é§üÜñæíŒ€9Žÿƒ'Y.ð0מ¢èÖÂõ v®9³ìßY[žZON®°/è^%)ïX᯹Z_ìô˜ÜW=÷AÇÄ’Œ šžp¥©ô—džP£Y>Á6ÙCÖƒ†¹Ó£ÇIöÛnó°r »¦L¯Ùc-Ì^¾ÓÞËðP_޶ôµ rä×ä8\FëÖª^éû³?+²/_çks¾•vÚ}Y6 î$Nu§Ÿ0Ì4%Š_  Vk ‘?Ðvø*Ëp×íâ‰34Öï_ô¦NSµºâÛ’=%›}vw‡™:í4›Õ1ÀWÆ@?Ý@ýRp,4h´*ZÛ¡o4Þ2‰Åø>¦;“ÈLgš‰Y8OÍdVòYœÂ^åCÜeÇòƒùÏü?ìpæ(¿Ô¬a&QãØÞ|)3˜îM-E S.b"$ôòCw¦ÃÔ2‚Ų°ëp),.êšUïåsrjr/äÉZ’š™ômòÜ´ñ’ôHz gsny’ý‹°wÖîœû¢ÐSõ±WlÛ0Ç'ÛËdKµƒ¤cMÿ¡káEš6˜üâS"4ïAM^³¨¯ø­°LðMþvùZídÃ}m’~Ú·ò¬²Ö`ÝC}4ù5ó5q˜u²)t|1ŸW¹\žE‘%áâUåúòÅ>”KÄed»Â»ËÿÙó›s•õ;“ñSÿ£7Àƒ!Ó¡°8<Î$+Ÿ9{‚g0oGÂlê§0»ôàÂ;%‹#ÉMq'úÆ5ÅžK=dY™Â¡žFûsWãx®¡²,r³f'ü·%ÍsÜsÙêVtˆ­œ–1mB‚Iñ?ÂUZZÛκ˜Âëêc`wZ~÷ô÷÷Ї§»FX3¬‹íË\c=íƒP™©¼¡´o W¨ê°hJÍr/þåkDÓ—Ù=ŽÁš¢7kaWWU)Bfc¸«šM©}’Öæ¨­ã€Ã¨‚³õï¡ÖˆçQ+h¥ÁèpÊÄ%pe¤kFâ1’zFÿGép7ì7]'—¡ÝÀ&tŸÌϱô¶·Ø+¸ÛÔßÌnö"â‘÷-Å%êDp0´©fê¥7ïµü„ÿ-½œžoyjWXrû,d°:€:+&ëó’¬tÑ7`5~ÝôXS¯üE¿ »&Fþmú»ì_Æëø-jµSQ3}~Vnd‰s­å±nTÖ†„Ää>Š è-*\Y#åó ÔÉDµí–å80W04Ã%¹ZÚz›52éžT6†Õt/¡«'i-D¹©$äˆá¥Æn’Ú»2k×…?ç÷n†þµ<0¾Hš—¯ÿ]§J5>SGÉ¢2v¤¶•‰ïèÕ+3“Òj ®H_ ½Øf»¿ ’S<©ü͸~äÒõÚ²ëE3¼NK˜wQ?Ás€±`b 7 P¯Äïw@k jAzQn4»”•q¶ EÞÄ^ØT¾ÿŠi"¾% :Ȯ懲·X©­½ÕÃvaç±?ÓË~š1U”íˆÜ…™nCm,†È V4þ‰CB6ƒû5ÙPikÉ$Á¸Ì‹QÙäȲ›Ò;¦O¦R?fDg÷É*x›Ó*/[¤Qþ¡?B\¥|ÖŽu®Ñ…O\‹*x%¡U/ _ '5St)Êw"¿¨TL %¢8éÙVÉFù?ògÒÖÒq‚¤‡¬‹ê¨zžn€áŠQ].AkÁ7@O`¢î•vµá(¸Û0iG—CUè{b;9'ù÷î…ÞE3K’i6„Ýd^ä©.é^~¹ÜXz$|Å_äÙí9?X­ö4«Á; 8ÁZ~œ˜ôÝÈæá§fŽÑ>´¿ ŠL-«-oZ©åZ]©¡ !ç—ÚïÙªÍIÖÎUl Ù ²SØ;GØ/›–E>g¼÷€·‘n–¬ŠvŒ=íqŠÓ˜d¹]˜ìBýŠ¡#žM®‰îYŽ}Îd÷[çMÇ;[7Ëë+GÀ¥t·ö^õß/T»[¹ÓœÍ6Ÿ´Åã'À÷êNòp½ãj¨mÉŠ¢‡¾?<µô ]iþ̤X¨>—— :eˆgêxˆºÓT†|0mÄÌ6}á§—ç¹OÖÁ…ÝüïsWн¯´Äº5ž|/¤ 䀫` |–“Û®s7éTÆË'Z øÿÌ.ó~b,x pÏšÖ£<Öj¢‘õh>„>OïÇh8š|F¨µx6…Z¢it³pB"•™ß”¹ßÀ8†xªÜŸ¸³¹)Û|†ËÑÉ>+ˆ‘/„bˆKì7Ø%ÍM‰Aµ(Ãv¸u6Ró1ãAò¥Ì×X†k6Û<\®öïÂWð[ÌI|Ü™™“1D1 O)m{­™ø-‰.ï³% 7ÙH,Y’$Õ“TÕ1Æ«P/ËOVø^x -7e«RÈÛ¸q¹÷âÿ—Áå r7¨âu6ÅÙÊ”:y½b±j”î‘üaþeèO$Ý’ïŽ*?°ªË.Vt¬:¿0¼(¿è±U„ÓÐG¸^CüÌ×^Ð>Ò]× ¡¾ú™šWêͺMÀ=ý)ð²ž1Ð.Ì&óbë~sªù9•M/£ú·ÈÖèzªÞÒÃö½ežÙÎÊ©#äFe1FmnkË)’Rýgù¦²¤ò‘çὑç%GÃAßQ»Šþ)ÇÙ¬˜¯àNÑŸMŠªy®)¯“ÃÃl}¼|gÜæœÃŒqÓË3ÎC|MáÊ@Kà×¢*",…# –djÛƒÒ2·ùö¯½ ü?¹7óqìkº u™`éÈ›É<Ðx ®3Í€NYz³û¥¿<°9ˆø/Øp]ŽJy ™éeºå4åHrŒól ¶/šàó;º9ÆÙ×ñiôJþY  ¸ìêçþ>P‹'GŽk½_»[\ë}Ñ€«;Õ¢ù­ E{ßÏ3ßbZ‘k±_ɬ€!/›ŽéýYÓ'’`dTÙƒ˜‡ƒØmì[â">˜8…™É$ß5ü=~Ý ]ÅVpç8txî@é ÙsÅHè¶y²¿68¯h¿··á¸<›.ã)(œeNÓe ç; ^–§6*V’m¥Á˜^9Ÿ鯡 á­ÅòÂñtU™ž"¤ÔÆH¶*8˜Ú, E¦~æõÁñåÅ!¢VyË7”ôu/Ó¨³¬BêŠí’iT_é+6R³±UàÅ¡ÜqªNü"Ö/®Š_s;ùbö'U:ÅØQiÊ¿hl‹%é¦êÄhJbÝjU~¹A¾ü«ÞÕ¥Õyk·Tïb{+)‘¸a,2}†@ý;µGw´+ŒNõy²Ú¨Á寠¡/ú”zBßcÚñ$÷š‰0N¦7+bRè×ôvºý»¹¯ä:Y*¬Ç˜¥t2m~B? ßPÝ#ó†jMý†§?`Ó'úi¥øpÅ'bPÒÛô üÔiDZÆm„ê´?â'F¥º2æeÌþ9§,‹ÉAŽ,Aº&gFnb%¹ªùŸ¾ ÚÇ>wn÷· W ¶±Œ„òüÃ:ñ­î1ØmªNŠ8ÙcÅU`:U>B´FÜ]öYŽJwܕרEª7ê]ò_%óåµ²Ñò‰ªÿ)¶ªªõÊ~²òÍÊUD•¬8«ì¬™¥-×|”7ë‚Р乡H·ImÓæè·hBàtd†mnIbÃwK^/‹ZÙ}¹Ù¡ÅS–üoÉþe¶¥æåëֆ̕ç‹ÿ$eý>½zèé¡' Îø‘¯¯ø±úeå75»jþZðuP^[ÔÝ;Ú9’¸¢jÑ6ÝgÓU¶-\<ú­æúÜuã 2®Ó¸û|áF÷sç+ßi²WJí\wòDTàŸW¬  ÕG6”Ä”ô<¥’ sÃTÁHÛÑIJSá¦ï4ɺ¯ŒÕL“kŠ›°þÀ%#æáŽyÖË=wª·¿qɽ«¼_Ñ÷eâ”e©ÙË$qâa?bshOÉŸE;Ç"êÈÙê?àÍ/¬+¼˜¡Ã!ožûoߺHTÉÛˆ¡ œ.|Qø·¥p£w³ç©%ž‚6 A<ÀÍâçs“ˆ9˜ ¯!v¡§Á ÕÝSw²mÇM°ùKëLϤ˾øøqæ=Èü$Ô•"I‚ØÅšúÒ Ì2䢱Ž^êWêÏÁ©äLtˆeI =¡—Ôÿ3ÌOšóéi†ýæK4o7ĪTsÈÿ0œ¦lÎíšßúÕo)>üƼJ5[¶Ëð3¡¶ÿKqÁ”}5wnwpÃãË•;mµ5¦k¾ûÁf£ö—L>¿I?ÿÅ@jwIg _2$›fAIÆ™àT,‹=eYMµÕ–ç NaR+„•>ƒß¸J/Á§‘ýŒ†ŸðÏì"{máø¢½e U†ºúŪÕw6ôÝ XÖ§ôsèmLÀ¦ÝºãÚcÚ×j‡æ¢ö æ˜b’¬X¶L5Qפ3†Ñô`.†*¤ª˜f6SÀ¢æé¿žK2Oá—³wØ‹¬’=ËAæ=ŠFØ{ü{ÊŠEO‘·¨õÔ!‚!.` .ÀZðdâ=ž@ë˜8ò?4›G~F–C/M­Mçà†aàÏùòŒ÷‰Pª/ýÇœõ‚šÜåy{Ó“2Û‹¤ƒ’|¹—5aõ4a7r>ÖdÝëis8äÎ?9=‚8lÀÔ´Bt &St¿ª+†+û(bBåP%§PI=aÑßÂr±HzTvCøY"û’ñrL:TüYœ,|)ì*í.)‘€Jꎬ«|‚âò‡²ˆâ½ò©2JmV.–&©ž‰úàÝQÝÀ ìÖîS¥©þÿÿ —gp‡…éz€ÐCOL œ w˶ꮴ«.­¶jµÒªwY²»-wŒ Ʀ˜Þ{‰¡˜^<-ô€Á´ðøwgîÜ™óçžó—⢮ÆJ.F{Öt¨³®Zç®Y¿¢¡âeEÇÍU ËþŒ®©õ7t/ǽτcb Ã3†wF`rÍ-ü±zE YùCtHþµˆ.릛ëi ÿ”-Ç6›3KÜ{= ˆkœ§³¯¤Îb¹2}WÝ';|Õž3pßEpBš¶ÆS—Mf/ ós.F®çîÊi súÜSm]±·CÇÞøÏö—¾e¼‘ eüîh-Ï÷ÜýÚÜŽ(AÇb89˜@Õ*U®9Æo¹Ç†ˆ“Ú§Šbq,÷Á^‡‚ä;ú¹kœKÝßù;yš=BwŒ›ãÚâºà­ötpÿ —÷ o ÌÚí z®ù–gíËJ „S|?;³mKØ?ÙL÷=¥L:q »°kºyš¨ö26œMü‡ð´ ȬҕäÝîþÂ}ÝÕÉõ£ï~n„Y¬_M(°ØpBÁ\Æ`í×ÒF1Ov]óƒÞ«-K`ZS¯¤y‹ÕÑõÔel‚|É ÈÆ]m.‡£ÊTd¸ •:‡Ú/gà ÙAô”k¾—²ÛTßÅ—¥^'ö[ß›“à«q<A»²OY9»ÙCeÕøË¬>Ñü„ùÿ¬ûCmOi}dßâï wh— ;T¬†E†êÆ«çhûüÎ7Ž7Ì:är»¬'§k*7ýRf'yžÐcÔ;Ý e<ƒF¡âJËÊ’K”Œ)žR:hEiÑ=ç’Ïw)Ø ô#ÒQ½Kö@~_¥†§‰«Å8¸¾#{­hQ\S½×LÇ>²oM¯˜ôeÃc ³Ë4ײÇgûÒzеÙͱ¦SÌßÌ]Sƒ¾Œø@Ý Óé÷è!]1T«ï¬/§^“01‰L¤šôcõ—è‹´™2aÝñÑúvØxT‹Ú´/Ô+¥á° eòW çR—ržñ¬à0ð+0S­Rf*S•ë•v²Æ<ÔpÌÁ¸…Î kW—ÓQJa’rr«®2Mù½ä (—‘µ—õY¾U”!¶]Á‹à3à/Q<ïUæmÞþyþÏâÐ a•Ö‰:'E%'·g&È{ ~ôç·×C;%ÁW¤‰ðà)ðBŒˆ=€$¡½pPö‹, ~ 6CéÐQÉ~±Ø,^&[&kR¬ÅšO†®æ.>[*¯xPÊn‹®©˜\†GÓ¢ëVÎÛõbû‘ÚbÿC?6üí®‰Ç3$ΛeÖîÚ0¦¡¾ª¦xo~S¶7pÍÕ,OMft·Ü\ï•wWpSÎ[œþDú!ÕŸþØ¿ÚßÎçögú¸xZz³üw÷¼ßòßE¼‘39üHi¤2r"».0(XhY)’œº¨ŸØ’»$øIèˆ;7^ò¥cOvŒgs¼¬Žª]š”ÄÚKQ¡Bh†bíto5ÿiçâk‰“D,~ Ý«lÌ'jGл˜x Ã+t?#uM¸Ñ/ ïL³ÜRŸÚ£öËBG‚ÊÀ2ŸÜ3½Á; 8){îò–œÁ¹o#†ìº`¿ (¨w[~Ãëgrñ¿±Oº8ä¥ÎŠvƫɣúÅz™À9·vF2òzäN‹ÐaQöõðé‚FË|§OƦk×)É/*²$ÙqI£ä´:€*4«”*½Ê1ò)ªT'd*Ò$¼ÆJVÚÛ§ùUîC6öR"e ËÐSŠRiz 3Ùº@ó‚écñ^æUŒTB-Y?†8``çJɪÊîêL¬Nx¸`ú²ïUï yø.Õ¸YvW[TK‘_FºŸñ/ò' “¡°röŒå-ÚA]­IÕý¬4É/I”ÜÒüjî«ÿQÑOuäŠblkS­õc«º”`%;‹ÒòŽÝåT5—´Íbe­*F™¤EÕ+d%{Á—à<Åd­[%×þ„µ#7ê˜ZX»ù†qchaV™ž²­Ö3–O–^–dk;Ë÷Œ‚²Rµúsxºo¤RO¨XF4“mÄi¢Š\@<Á¸™øD´bê!é&á­:;ÚŠ5Au’“Ìáæp¦¦¼J†“ëÒ÷skµãÙ•žw®&d{h>ȶ™ÛƲ}˜AæcމölóK“þ#rK3S)‚í+yÇ‹~v_[ Ë"„_,æi‚|#3÷¿Ìf~€?ØÜá=áõá0Fåï+8‘7 —‰\X>4lÍÞéäHp³L¤Ï 1’3Âð>er“èH´©iok ªËš‘Äh´ØÈ™’ÔW³ jÞÕø_åטo™Û¶L —Ýgê‚èt*þš™¤ãCiò›’åt­NõDðA1ÇÈê!=ƒõá5sÎa¸±ÆÂ·Írz]Eúß{̨ìyætü%rÒ2Ó+í| VøUêá$¨V¯×Œ•/ÔŸ ¯¿è{Q‰x5ÞC6QcÕË8õÜje5ù†b,9ε(|"º¬^ßøõº¹MkÖªW®)÷1ŸâÍ,GÎhvª{¨Ç«%HÝ4TµŠØÉ”uˆO†·tgC#óy¨ùйƒ±MÏ5t0Ïbì—¦xö"˲©¯é¨~U¢3ãß‘ñáD ±ŸèMµ'ÛfÝ^ü>q…l#Kˆ"dŸz*À“ð™D{bþ5:½©jiÍGY‰¯ðöq¦ŒSƧ)ò>âkHgg4ØËÝ#‘D¬‰n0ÿˆM„o+¢ €ž³’“.‹x•é^º—s®q–D-˜,þM]Å®µeùDoÉmÛœ4/¿Ÿ®ÈúÑå·Þu¶óþŶê);ϻЯȞäFª»ñ¸AJ·bÿC21-ñ‚ÆÌkA+À$à1¡N\ßÐ~*ÏR’Xùde§úÓ Ê wÿ¬U¼ÏºGö·ú2¾¹§>¡ ¢Ó‰¹ú8¦ +V©ú*OUЯ¨7ÆOÌ`ãv¹1ÓðˆÉ7ƘÖZÌöˆEcJ5J%¦ñìcS±1AßJ¼Å­úÍúqôy}_=BÅã/Ðãºöh”Xo¢:Rˆ¿T[Û´uè8ìÖíª“*{©4µU Š]P¾PÁ«ÉhIÓ¦!3Z“;‹Î›æz—y¹¶lê'ýç}Ge±y6»ÃÄ1Å™šSMÃØ“uˆôŒÏj n ÇFeß žþü)Y¾àËyj&Îêþ@š‰ ôUŠÔÿ`XFu Ž“I¦ÃB”ÕOÔ«µß¢uX¼É`76Ù² p§ÏÞ˜Nõw~²ß!î`/é cg÷¿Æ)Òr‘q]|~æCù*¢à"=iŽ%ÅKN7ÎpÍ:t¦æk„#¯åîIÙ±x ¸C•çžÝ;ë¡ïÕI8‰)ÙÝhYd׺åÖ#úAæ<÷LÒÿj0sÙXß™ÚÓü°_zI÷–ØÇä§”ÕVxjnÔÑuÕÒ•ƒË¯xb‚r»j¤V¢iRÝGÆ`“±ÍÈ,¦¾¦0k"·5Åx”ÎgnêlzM“ÔLògÃaãTó sž5Ëtƒ‰3Ì6õ4¡¦"Ó=ö®±?3›~ƱÆË†0Eá9ˆSÇ#o~r*~•:e\F¥ê¦"#ðV¼;ŒŽÒ}Rw—}€ŽÉ@eœìøš`xæ¿™s2sÒ÷e6pù™?Pñ–‰.·©‡q'Õçc{õl»½“o=|ëGÈ÷†E¿Vž”ä Â" ¨>ÀK-sà2‚NF Øôÿ&‚ÿJúCFh  êÄç%À)’lÐ*>-ñÁ롨$Fš/OU~)o/ý ¾ ,´ñÜ‚gà=Ñ{q®ä¬¸È lƒ¿ûœi=¥‹a\r$%p¢lŽ4%J¯+š¥ë ×’’UÐ÷²kÀ'~˜WÀ7rgsä‚+øAöH0)ßYþ®jKeÇʚꌪiÕlEÇÊ)=*3* ʪʗõ,Ï©¸Uð»k ÿBщr*ZS|£dW¹º¢GùŒ<Ê%ëCîŽ"¢äUéÙh[^}˜çúÅÄu%†œ¾¨£££±£]²‚·ûÄC%ºJØAê™`w( n‰nÝΛr?ò#Gä;ßê[&^–0ÉÙöÆûÁ»Ñß)ë}ðI(Ö·ËÞbO÷¼ÊJÌÎ mõ9ˆ¼çÀa6Ê)TiwAEšš´²”Y2­‡ÌåÖs¶¨ó…]h¸j,üLhó_:§º»{ïz·º}V ±ó³Ën#<ä3Òl`Ùæ­æ f¾å"keqûtï-ßd_÷À„ÀÿKo†b`}–*¬¦GQç±…j£2Q»”X¡S­ëes©ÅîXik1ß§ÅÊcb’øÌWæ…~쎥ìÐ<|U=ƒ÷‘¬ó˜ý›N¯3lµ[죱™cÀ6Lgžflíæègée̥蟿™™^[Ù³*¶º]U·²žÕ¾Ò‡ñš|Þßpú¾r†ºŸ:ñ fíM9ª–¨ÃšQºíºÓÔ0ým“À4ÝÔÉôṵ̂ŸrR.ÚNÿÌìfg²)¦4ƒŸ>fˆ3N6¡ÆÆ™ö–KÌ"} =š¾cxÎÄ“Zb.ñ£>žºB­¢êÉëä £ËG¿Ó³$Ÿx‡DÇ¢"ä™Â Ú…·$Åâÿø»¹w2Ûx¼s¼8î=ADûÁè± ߘhÖ°ã ¯mu6½×uÑ÷¯m¸å¥=³žBg`jù|8•*óŒ(UtYt¨Ûƒˆx†x1tLR ¶ˆŸJÆB&ÉI«¸úî}´ò:Џ¥Š•—ËÇ(•ò+ ¹Œ†ßI»+›TÕk5÷,lžIJ Åý 4¨?Ôò‚ÂT°–Ë*¦(PÙ8é&¨#ô;LKfIAg¥¥IÒ5p›$/†Bañà4°\+ØÍ˜ÙÛ”9»UÔý£|‰¿5l7Þ3N¶[ŸÙûÙïd­+˜[z2*qV–U8ÊöW&TV?.QVfWEJ?(їݬ˜X%*÷(wxѽ¨´RRÛ¯Ö_~¦àU »éú^{íNÀÈ ¨V4Ö˜覦’4Ü äNK-9Ay†¥‹fo~ÞXÓóŒ©i¯3#l WΖàwW{½+&À ô~NCÖÓÐÛlOö„H^¤ ´ khÖ•Ðá¬ZK%¹•W=ïIò|¡é*µDqX¥™o™ÿ4lÒç¢Ý‘fÍuy±èqZw¾ê¹>F ‰ôBãoØ×à“„Üe[ÓùâoÔ Ðax5J:°3,·U´•Ž1?µ¤2} ½I_mrÛº:¢–icCÆÏ!ë• šõ:)¶}…aÎPŸô·éOl¹á¶L¶cÙ®ô¡øc#×v«üŸìá%™!ÔkœªM†Æñøië¡n X”4¡í4ñÂñ]º“£Õd!¶ÁJ%_ÓC—g_è÷9ïÛ¨‹l£Ã;©¾Ãlæú¨ÆO²¶z'à=˜ž®eï U{‘gˆS^Om3”˜FÓCˆ[Ä?‡HRVñÍ)À Ьbïº%ŽÇ1&ÃºÄæÙ«/4 _uq…¯ò]ù¶â¶ü:=Š[/UOÑl•—JAU£fŒÆ§=­ª•Oû<×évèǘc¯±€EÏZ«±À𵡎– Ã)C‚¹“ù‘¤I¦™9˰Ìfˆá'’`¦wþÑ?¡nÓL½ £©y†ý¦¯®¡=ÓªA^6¤˜i–2î£ÛH!¶ ÍG— ‹•:QÇÉ¡Ò9œ%ƒx?q›x ¯ ýˆ®“á¬e}–9lüÆQéêíIÍŠ Êy“{ÔsÕP¯oFjdu"—èÑ8°dÔóþá÷~àh¼€ 4 OâÿÄÀ¤¿A8´Ylw^pWr³D# ýòbeFQý4Ûe£ä·drù~]_M“öÙ ;¥/$sË6ÉoÊdÒžðm <+Ù WH¯JOÈ⥻¡ÃЈ”,Ž3¡V¹Rvn…SEOÉ¢âzI3<tTyñjOJRÀKR?£¢Úã}tÑn7Ú¨Y/;&‹Çª‹‘Mš€âƒb”j•tr›KT’½­æ%ªÐvVNÐü„}! ¦lL’¶G|€p«i " ŠPuÑj>fÛÆª¨ Y©RU)>ZÌö›¤Vа¨¡Ÿ¨¿–ÅÔT†f‹Ð©›­''£æú“l¢Ø¨þA5hš`ß`X5Q0K"ë'Ú¢ý ˆ«ŒJÏ_nÐ2ÔÔàò¹2s5«$M1[66M¨‰+}RÎv ó@¦]úXü y•8§T'×µ“µVíù+h½4O÷†žhùÊ4‹)dr˜jz)]ª×gè#ôŸzó¯ÙmYξ5ÍfQ»ôÒóé ônlšî‘~<«6kºÎŒ0ýdZAß§±& Ã: #ô©Ø2ž\dìGʉ6Zõ›‘®”ùÁ:Á\ÎâÔÕ©÷Ó×ò§q§$ÆÿÆ›«[ß²#] ï¼ûµKì¾Îîvx—¯ÎŸžg_κ÷c½d44š)Èå?–Ü„EÝ@ø½u:Iþ' ߂ߋ¯‹òy½yy@3ô«,EÙUÕIõ^õ š¬$ØÉÝ Îç ?ˆ…ƒxÿð®€Ý¥ûÔÄ+Ÿ)u!)d7Œ@Xù%=Y¿”zˆÛ‘WJL)UïÐ Ôþ«ÈR½P.OC`ÐÊÁÓ㤵ÒLYËí™6-}Öú¨ëú›h©VHPV§Q¶JeÒ_‡ÄÏ=ö‚ö­º¯úºÂ'WÌÔEq}¡¬†xZ¹]#B—‘ñ†‹LëÛU3Ãl2u|rmqqC ƒíÃâ¼õÅKË÷”¯üý-4’Δ„3çgðyŸ 84šŒwT'òûp"i«ÓßgÔqÛñ:q7g8ùíe“·DoJI,&*¨fz-Ä?ÒAI/ÔÎ.l‰lõpÃþÖÀÿOÞ îÓ.ÌsÐuÂê°ˆì˼Ç<#¬·0IV4ÁÿCÅèÿÿÿ—exTÇÛ‡¡EþXq‡ N¡(P\DÖíìžu9.sd%»›ld7„@pw‡Å]CB€ …œ„¶h¡oÞk>ͧ™kæyžß}ÏsÕ¢?Sk¸™â|n4~Ùx*Ånjšw»x5þǬo3Þ$l…wá=IŸë£ù4EEÈÞK¥°~ä]š^ çÌÈhîûBÇrÐÖÎ\óú,EéœVñ ¦ï™æ™5]²IµI÷Ÿys~¹Î²hžË‹lw¬3t4³Ê­"9•é ¦¢¹úæ–Û¦V¶^æõrD±×ùßnI‡ÿ‚_Y³)Þ{rYÄ}ËnÓ>O.¿Z¯V@×s¢š¹Hs„ßµÀцi˾ ¾r4µÅ´\—aéd«á¢|aî<ñ—óyž‰˜wÏ]¬¤‰bñPÐiÊ/v¶ô$zc$ln³Â~â"ÔßÈ$&![í‡]žà¹È÷|hlxáÂÜ•QÛÂe6s &EúfúÓºµÂ¿èSÇh4–MõaOò ÖµžaZàzŒ\Çæ'È^dW:œå󃸑 ÂRìYz+Ý‚iÉüÉüÂwvz “¥PÌ!Ši/;šþÇ+Éhàæü áøÂDX/sŠÀ3PÃ$1›¨°®Ä`ì¶#Ê®±=µöÑ{4ç”…òÆÊÛòv’ÖÉ­“yiªr‚”âQ—±Q(-6ôJ%rÉ õ'~]K~`·’³±R|¶Ü¾ÞüùÊ,¹E[ {ŒÍ”ñŽªRÖ]èª4oNfNg¦-Å:ÇuìvÛçu2À½`¯S§É÷ä÷Ô²;+âÝ"g¢¶ãg/­wM¡åºé†)¦Ÿí#œµ6“q:´Þa-´Ç .ü6#ó~ð×z2À gXySæ'¿“¼—ŸU]ÕœV•Ë»HˆäªäÛ’sòòͲ6ÒäˆRgÿ™ô0;‰-v{?¸óø' ´ö˹èuÉßó§äåe„ƒ¦ <óLzuðnÀ|œè¿Í¿¢+¥Àw¤Mâo ¬­±3ÏõÐl7ívÄÜßчL#²QÜÑÙón™¯CP¶/UCK¬ãq[Nê&ZqZE•c}Эd'¦‘¨ßÓ—\ÇU§ü9˪údš¶: ~Ïí%J¸Rq9Õaî3uW2`:˜|kîxmÑ!}pºÚmCŒŠ“¦©¾d_‰˜Î´œ3"wáY•î¾ ­qŒó·ÏÛx`kôöšíJß…zd,q6sá †Øg¦ìoÑãÔÏ,Êäï¤Ãú“¡“m8®¦» mÅOb”xÁC‹{Üœø†ß zpeà1½„™%ä9ª—Èò©Ü\n1hÇåîð'Ù)t;j:»š-buÌe³fz$SM Ä *†RsðΨÙ1Ú6ÏäTêQ0¯ª¯òƒ|¡Ò«’)–I£eѲ:Ù2ÉhÙÓMw'b«Óƒõu•:`ý‡hµ?(^Kž¤¸S.Ê÷*¬òãª_ ëpC(Õéã  ›h¬OÖ­Q¿ÖLÖìSŸQVB' Wõ­ CìJâ ˆår™Š!£˜Å`SFÄ!_-ïáZèžn”6M;ZªÿbºcôKÍN쎢oiØ}ì ~ŠÄ@§eпQ~ÒJõc«¨bêÛY€x=½ãòË!¾mœ g›ä–Æ(¤Âù"‘ÜÚŒþKs#ä6:ÖõÜùÆ1=Ì[ó•Ì&—ý•OÎóMÜfÏs¡„?Áïe7ÐÅ„™èš€îÆ3ñ^Øv¤·½\¯Q VõUî‘_W¬ÓuÑïÓOÑ¥)VJK“«’â“ïHÉ®Jn§´Lé##O%%’ÿ¤û$kRNKzË¢å¨"V©Ò~¶ßÅ._©Lž·iÚO"xB½£e¼)¤Ì_T”ZÈÛ"q¹Ís³Ãp–3ótæÝÌ9’TŠ…Éú“¸=Š¿qÓIÝïZCleþÆ4`ü ~Ie½KZú‰ÙµÓÄÝŸ«º‹è1îP€Î˜Ÿ¹+ü¤ˆ[HŽË”v+Ô)·aa«¼´ÔYèqûysó1ÛN§ßÞÆÜUž>'zÎåFó('D5ö\Lý_ÝåBˆ9)PÞþÂPë6ø(úiƇ]É=<ä:LT±r6r”(eÆK¬’,'„»Á÷ß¼´sÞ/æ$óZGh éZ¯á3¬ví¢q³XÍÉ<µÌh4bÍHé).X?5æÓÇÝÇ‚+Rùæ‹]½¼û’©òÍ-j —e9ºµÔglhŒÏb»6û´*T—ù%õ­h&Ò­Mxsú<F$ue^EéÉMÿÛujÇým·$.h –àYl+ßsQˤ‚­Ì<úµ“ â;Ñ;–AÖ­x+¿r·ñ4® '¼Ã}«¼;S žGÂ6°Ü#Q"%É¡¼•ÿ̽‹A*øÄºÙ¾ü ¡%Б5Ôf-PýÙL›ÃveZᓜ[ÿ\Î=Öæ«ú¡št(MýXEê‹Õ£•;ÕrzW™BÐ,åz©^~Ba–jRéYÙÒÄ¢ÙŸ’^*f+þ’Ý•=”GÔ~*ï œ¤ì§yI´¯_”*}–õˆa¦¶V½^ƒèé õÁúœ{¨b•ReüF©ænæì±XCú{ƒ\‰/"(ò)»Ÿ› V`‚¥'4YÛΰÓxndx¢ï1¼2>·OÃú5hgLG~"•ä~ú_–àò¸É`xÆLbÞP)4Å5ž.>·ø7ØË´£K¨Ç(aÓÃ,ï,¬Ã઀¹20"7;Ø\ìnÿ˺ßÑiÌÃzaˆX0\¬ãWq)à.ø"¸<»Å^‚D(2DÆÜÍÄ—üi~ïÆ 'Àef0øÂ~GÈïm}íë­+­¯íaËumEy±ü¾ü­|£¢RiÓ\ÑœS “òÒošÐ*U™v»–U.Ik$ñ²kÊõ(ݸÚô¯óie§º›ù>óê2Õm ;?ñi=Âï³û…—G>äJò¯æÕæœÏ¹ƒæ¬ˆœÏÄü}ÁK6Gøì­öMá‘CèÑüQa+·C¡íÊAðQS„)qiCõR dft Ý]¥õ(}Áw-³^m¾#¿<Ï—7» .<Õw‘ëé5d}-Ì™79<Þ½œîZhê¬~ ÿƒ¦8ÔÒS /Ú$L˜´Un7¡º{;Ð7©åäF¬ùæÈªÏ°óÔ®ÖµÛ<Ý„îÕ«eS!ˆÅÞ™†± ½Ó|øÞtSj(#sw÷3-Ø¿(Ò~*Y¢øÉÞÂ>öäé[- ÎÞ}áÜ "Ùëru}Í;ñÎå*% 8°-}Tæß¡WÁ pÚ>VW„îÊ~2"íáš5¼-óJÆs¬“¶(~8Ô7³.t€ù… ‰(ü/™öÅ[Hõrö¶Ù°ÌÌ‘Kž¬¡v¦íKÚÞxÕ¨eÓsçq% ÂŽ UTð„ÿxÉqH[d:¹åpé)œÛí1{{® ‹ÒY„ÏDóŒA--3­tž"VpY|c:‘Àüòåj„Ãä.rû&xÌ`)NàôMÒƒ v¡æbYTR;Ù?ê¶òèÄÓò6d&²›å[›ö2u¬pÍ*èŒ÷Àдêô¦WÈ•ºRãKîÏP(ëH`¨£UÚ:¹ÑrÕ-I+ Û¦Ãͨݞß@¦M!(/sdún¤öåP}‰ótGŸ>ðÅË (ÃÐîÔ=E#VþºÝ°çÁî=ÛÞ­æs_ ½Ýw1>ØÐÎÞ™]À;éëH™c°3†(fZ±×Ø<ö(]ž>­¯w½ó­à–3+™ÅŒš]ʲ]ÙñìmæwÖ*6ómvËÝɼŒ1XÇNe9æ?²‘ç©©ÔFRI‘qXO¤šdœ¯ŒRý­Ø˜¢L>¼H>Uÿ+T }¤~¤H’OVImYH+'n¡tãµ±ª}Ê÷º †Yª‡²b)‘–6•=Mé!}.)á%SÏ4ÑšçêT ]„"Ð ãSÓw¦ Ëoð×°ÊTd•¾=wSa·¢Õ d%Áâ!…9y]s^„c²¥YÞ¬™›ÃWrb#'²Vr¹ˆ΂SGlÃsèLú56%°±äO\œØMØÌüjç%Íe©ØXçô£i†¬F9ÊüH5¿[ÎÍL.cJ:áÓ×ÝeÁ¶¦pTŽ#åiÏ|3^ÐÎrŒ`÷ŽÖ:æ+ß«†Ø®:4P•ü!ÔÇ^Ll%ç8¯˜ÖI–']–^Öw#‹¨Xw˜«Ã4ÈnäžO.¿Ð)Èç¿X&?1¢]•ê4'~ö{õh#”‘dK(,›l}‹õ4õV]2Ý1>vH]þÉó¯1‰ÆÅ¨Å·)œT9F—,ZûÄ…‚mi.û@˜Ñ³–R050)·Gæ&j‰­Úù+¿n:®Þ-˶uúø÷úÞÓ[q[…:‘'¨ÞigjÀ‚ôyêâ.ë ÷l,»V6uÕÀì›þ¢Ôˆû viF­3Á pì\î OšwªØ‘­#'Ò£@#~ "î!²ËüAža®Ô§Ù_ì6†ëË ç&òiÂcpèê×7æ y”ØŒ· ¾¹Ö;5Î5®:•9ë,«MÏ Úú+ªVʯʽŠg2…ò¥ò¬R¡*•—+¢Ô×u¸j­:ÏðÄ0µmgU•X·Ï2õ³BG"Û¸Ö©TnËyKÂ+¯-^±dyj¡Ë»ÌÛ„O¢VA^dЏ#Ü1Ð…»%«uà òg™rò2SÆßãz³Aú;<„~&05ø!6Å“"¬fvœ0OXÃ÷YŽìAÙ™3š–à;±÷ˆèº`Ù`™b)³¡öŸÍ­L±ºÅ*Rõ³:CQg©n*‹Ê u¢æJ¦©UŸSgë ð?Z©z‡úŠî?h\§ )“eª*T©Õ`†®úJŸjÛÿO‹zê›è:i«6çÃ=ô» %æmÆbmþà´ºN ²š ©uô f7C3ãù‰â%¡ZÈ@6šÛ(${>xF Ø]Ìæy’ˆÅ×â~²]N™ƒÌ;jù•(¦N“ïˆÓD&±?A—1·™ì£zZÆo¶ j>(¶ñ´÷µò4á°;˜®ÌZf¨kÄ«¾>Ÿç‘¸†{ â9Ûˆin%|¶û‚»\è(”Š#Ü;Ýç„{l;v${»ê¡yP*rÒJJ|)¾Ën·—ÍüTòvi~YU™vÉ´ü{øÿtÅsÝ7ÛYêXÁïäDzk(Ž,{¥»b„/G9–I#Ÿmñ>d¶SÍfqÙÏ wR+z?¹š¾Lv$l„ ŸQ¶}V›Åb­í(³#ÆËèBè–¶L6@–¥>mQ®–]N<Ÿ­¼§ì¥*»#û¥Ð©»«j4µ Aðè¶2AÕQs¾ ÓŽÔÑY ,‹ eð ]mx:z¯£¡ D ÕÑ~—û5ªéˆ¹¡)TwÕL…j#uCu;¤·þ¡.U;J3Ì´å’×ÁHŽcÒW©‹ìGz õžTÒwé¡L:=ŒÛÈ”W •ëm¸ù¦ó;1ƒù—þHד«Ï•³‡Ø ΃a|x_È?eOÐßéô²=‰yÈÌàB¹ûŽh¦ØûY›N¡÷´T_dY‰Õ‰U U ûXÙnÍg¸9ÜB °'¢q]âÚiΚg9¶áf²œ!ÜE>(­A yÊA>ýñ4G\šlB44g«Âb¹Ãü)¬ãþeì+,Òšc›N)Ü·R+S?z¶Ê…9Ó*ûR×_ì Ñ+Þc3(ø.VHOù‡ô$6l÷œâQn.5žù›ï$ìæÇ íÀ}¬·-Â<ÔNÛ0s¡ ¢>Ø|d0 ©·¶#öQ5e䎛ŠÐk…ñó ½Â‚ËÛ@ãsûàWºÄ2ëY§LÛñPü}´ªR3ž4‰Þ"ÁÒAú9›ÎÈeM„ò—bŸ||Àvœœ4Þ¿9§8û;–«Þ;IMüôsê:êBÚÓÿzwJ?½œŸ›½$ï Ó˜mÞêŒÀMä7lµý¤ñ˜c‹ÓJ2 „_b”Î+벬÷ªò•Þ’©’ÅþÖ´Ütʱ„Ì`ç3O¹áÀÏl 1>EhÇÓüTI#,d[‚L}ŒJÄW’›˜PÉ— ùo4Gþƒ=wnvÝ·?s\¶:l,eÆåe ;ÑÚÆQèh3üQ[™¸/q5$×ÃÆrUíKÕ{ÕOu¿Ä2¹ì¡ê¶×NF?¡“ÐRí2ù\µLsCmÕtÓÖQ†úšþ0ªà‹Ú/Ê5ÊÍ{È—@Yhw#jnû5CÑ&—±>2J‚§êšhÅ[Yœê’ºBㄆêv¡¯MáN€%«™&` à*ýŽþD"“€›™KÕ£í$ìºæXJô¦ZÒ6Š%F`s]•NÑš¤ÿ/AƆ—ºJ´ù‘ù±ÍïŒÄJ\M]3]\‡]áDê[_î>-rb+a„ðAx&¢A »œj@4¢KA-ñŒtFjÁÒ]HÕ†mÄE±è7dOì'†“ùô+æ c¡[Ñ?©oÜ:)ÁÓÊÓD˜"ù¿ø*ð¤ò;¹^Ü_à0ß›Ä `²³9Hð‹á# ¸iL"«gËh ½ƒiÆðÊø_A>Ý ›ßÎ_³7…­³¥M|)õ†XF$?‰…Ô 2;nïnbi®£?õ–‡'ØFÉ‹ä Ô•F£¡9 n£¼“ž0&¾©ìÜÔrÚ>«ÿľP)Â@_NÚº¤fÌÃWu…EK’N§c¬i… bDq û–ØMZ%,%Â]²€Åø(ᨠÆÙëÚ¼–¶V¿fº»—J£ùAÂÆ¸¿ŠøCÜm!T²ƒ±B§¶Oç~ξ¡+h-Þ¥®Ð餈±öçhK¨ý9‰¦Îa¼Åe‘L]Œ[Ì zû%öÿlLßM # +6U‹⢀™Øè8 ‚v˜ÿ‡Gsµ™D|™e¶•i3Ój’æ»[òŸùõÌ&{rµ¨ß©jË#”~»‹-r³üH2”r;Iç_΢ĹÀÚÙ× Š‡íü6ÏÝä¥T}h„°+í‘ø•úI~Ç×R?˜Üxj¤³Ÿóù)¸7š ë=+S?ç´*Î_Ô¬lÄ Õ¢wé;-c,eÎcøwì±…ªb.D8ËFÓ»Øöà'÷›Ý'D øÅ=d»rÛãb†p¿A1WœšÓ\UFÜ€¢4T¿R¯R§É+‚™µB[¬|"ÿª4*HeŒ¦­|i\ø ê£új…8 5;Ô'Keaê–È7è²ú¬: í„6C.éêC¥HmÝ|U'Í Í!Í&ÝräOx,œõRtI<¯ŒTîU?Ö6B‡š™»¡à]è*Ëhs†~¤nܦ^'›’Px@½j…,F’ œ6ÿcíg±KìvþˆfK¸=L-Z #]ø.ŒÉ#L5MSÀ1œÙŽÃcÅØpW#ûcxŸÖU£I† ¨ âjëZ`ãíï®9®ÁØIÌFX¨¤Dïçnk¥óâ.qˆg¥·\ZÊ_`1]À æ =žKâaA!Ä Vö^èÊÁ)*’]D[)Õ"H?¹‹t’ñT5ƒr“ØHþO Ù¼‰ÿÈ7Žð!BÉÌaÞp±R¶PÍDÑ©Ìkî•ôγ@jÌ¯âæ²í™+äZb0Ù–ƒtq³X[ ‘ðcØ•l|pg½…".”[ÌOñ¼tÏà~’Oˆx4>œ¸ŠvÜ02õ7ý©¿'#Sa¥j¤¬R¶V1QÓ yešîXel¡¦­]¨¹®]¤þ¦lõ1Œ<„rŒ°¾wõ`·³‘ï±La»g¸pÇø%U¸S¹gÜaqg®û¹ôH„™Aäezû˜#ÅO‘øŠŠ"F㵉QÁóx+’B’6x›{O&yÞ»CSާÞMÉKY’’–þο(-Ä·Y´òµÈMö­?æÁVˆG;tºÄ8ÞUn¿‹U9BMGtÚ„ØÝ1;P/òmNý(^ÏÙ¬°Mçµ5s¨Õj­¾€m-u55«\‰Ò›ôq¾ÛnÈÓ¹¥·™:‚¿ù™d56Ñuëãxi¾áXam^@Þ[ì‡lÅN“ã­¹v–¡Ã“É$­{ò9çY(2ŸaŒš¬X#ÿß;îµyç¼ÄŽé®¾¯kâœHõ§+¨sNÌd³gºs¼ë=§½‹R_ä+æûKO•îZŠ—åT8?ˆñÔifÙzMçÍÄÇÒÉdÚ-Ä “ƒÞÚ#h.9}ÃìåúIë%%?ÛÏdRÇœuÍ ]‚¼‹FŸØ#~Cl{y¬¦¯âfâQ™3AÅÉÉÊ~Å>Œ‡Ô„Á«ï€¶0Þ†.iÊ¿(bàæúéê)o­{Œ0ÚQŒ( _à¹*¶‘Ö¯Më£þ°£š¦<®ŽÒœÔ´‡zêL:]©òB?Ю&`*EÇÂK4¿Ôý9²ñ@Þ[sI·á0]/Ýø ºÆ ÙÒ‘b|£ÿ`w²„ S„ñb²aТ˜™žêôcÌK»Ëžåºêzì·^EŸ©µÚßÚSPº¡¯mÿì¼m‹°ýEâ娬Àè¯ôXîaÐÂBá…´ÙSß-ñ_èÇäTúA-".§¨zÌ'ÊMuÄê8S]—¨'̺˜n¶mý-U‹ù—ºJÅ3˜8¦ˆ­âp'Ù ö ×1ø×“-ÿ„ãÙɬþËÄÜsz$ëãoHåR‘p„ÛìQú3%Rk‰ÑTc0K<(=ãÅãü\*7¯áû «ùq .(›Å?<¨p’>M\ÅÛ‘í¨Úd®s¿%ÕXŽì×jîb‡K5˜&B{ >gõž>¥[%àì,ß¡®lÊýÃ3ÇwÐ]—;ÁuçÑ·¬±Öc¼˜Êû`Ï ÏeïrßDo]á%7ŽO6‰ÄkTWëg~£ÐB|ãæS¶¦È¼ÏÝ Ý·…éB#÷)WükÓÛú#üYþ5þTÿÀ¬§A²*3dgç^ÈM ´ lÏLLŽ â»ó¹½Ð9ÙfÿϥܮkÍùÉuöú†6º}3L>=Í*#-éfH£›m/¢~x¿ùš¦²Â&ãX ~9.©'#gl¯¸þibÊ­Ô/YWÒTÖÁ†i–«¦ŽÆC–ö¿œK‚˜Ø5r»¹–3ÿ!§ÉªrªÞ˜w&Çf_IËsoãkhfcÌÈY‰±'”¢ëLØ<åµ1óPêj[©r›6Í0ÑXjTç[çÙÿáw¦MÎØë‹öþ/}OÁÀ¥ûŸ\0j¾»`$©R$(€m7[ª(ˆ¹Ì…ñÇÙlú"6ÃQ‹±ˆÄR?q:8IÇÐ÷ø"é5˱+¹aâ{Æmbr.åÁ&;‹­’Á¢X“ˆ»MGÛâÇ«WªN( Tõå efÕ;Ízõ"Íu†¦O—Gê2¤.ÒAÃÈ¢d ‘ ÃQ Ú©ÌÒ¾Ñ^UÕ°f£ŽÑ|ÔL‚OÀ½µ‹àmh¡?Zñišj62h¿*ÿSSúå—”ˆ®¿a¶¡r¨'©Éâ•]d•Û¡±°õ#íÔkeO×Õ•Ú.æÙäWVFãäæí¢Ž·‹…øäÝ TäâµIlåYäÚd¡íC±ÞØ çvÓ_ˆ *†!ýô¢A‡Ô¦f¬åš5`“»RñCD3"’xJ¾£&0õ¸=¼I&,Mâ#ÞÈoá·SM´"Õ¸/Á.á4у۰$*‰«äïqi;'0€£Y:ŒmÎpŒmÁmc«Ù0À°iTcz'7"˜t}„Iü?`9ȯä' õÜÑÎíbŽsg…QB¾?8˜Üo™·Ì&™ÜCý ¾ …â_Âx~ŸÃïà;ó‰€ ¾Q9˜ÊãóJñ*øƒ†ÈY—Îgʘtc¢…51k P/4ÜcÚ®¯ß"GM¸¹˜é’¶8¯ ðBÎáÊÁ 01ÙâWd&ç~Ì™•5ßß5¥HàòºÆˆc“Ïzî ‡ÅïÒhÏ6wW)J ð0è&l” –zÌÎIÚë5xüIRߤíJ¿æžA¥â¾_ÉVßìGðÜ@Þü¼'yßó~äžÍ˜;4çw&ÈŽÎß8ïP~×Âáů ê6ùN’/Ì÷ 6ô¼é…m”4kul$7ŠYkÿl“LÎmi{í-Èã^oíéº$ò4åƒV/~`Ø7ÚZYB a·¾v _»¤EgóñxÛ"¸J=°ÿ$–»]Ûm—¬wÌ7 9ÖbŒ¥fãÌ»ÔnmGœ“н™Ò"—¨í TÜÑÙSš»:{D¿˜4@n¦8f•낽>Ry4Ñ£{lÓ8Cœv¢=o%SÌÛ6ãÏ’%埖Í\ú¸˜.(2ƒY1ŠzìÜ·©Lî®ð/åæ6±ïÍæƒÝÛÝý„lÙ,d¶qOÙ3lc€r—‚3»EÊñ®ŸÁvsÄRh¢å·ãQÙÕø²yÜ#ywõ@øº®j¤^¨©B}èQÃ`W­é§ÍÒ%X}•V%k§¾n ÍûLãõ£á Ú XµVþI&¨B·4 ºÇŠn†àÆ8Csý9¤´@Þ žƒŒÒ6QôVNQ˜dÿS®„’õh†þ \¡ U=Tø4«4í5µtéº Ããf„Ó»˜2Í› s§ˆ¶Ô˜`_¤÷Ò'è±ÄSìë ÁP›©§ø6ìqÖ ;;á8ƒe¹*_LõÍ Œ§Í¬uüQ½N3õ³Õq\v>ÀW`‡‰óTwºQ0‘>O)û»;JÝ@û…Kd»Q ÉYx¶5Èå9BOÞÁ˰Xr;ÛJ<ë&=K…ßÄxâ73”L!ûšYD¿aŸtîÖÊÜbLÀÑ났¼fKÙsÁ:´ž ¬À¸‡I±\€™b€‘ý‹)gçsK9/;‚µ±±L+®–&|á{òóÀð“ÿ[ð `=À.öO¾¿XÅGñMøûÁ'¯ÐC˜÷ì2þcpËJÖLC=güjÀêáìwûmÓ‰þ†éš]®Ô¤Ny· *}SÉ7À‘4"9Þ¿);2ûTÖ…ìU9Î|ǼÏ™{MSî‹<ÉŽáWó1ÂÝÒ]$mçÑ7èÿqí=ó“¸Ô•9Ks»f¶ÌHÊà2ýË9Çs;dÒo§iýUyMó°|wQÛÂóùOòB³ÛfïÈ!³Ze¼ÈœÓ$§]Aƒ’ÞEQyÖ”ŽÿT©ñ›¢wÄ© /èmùEm~*ùÃø?x§m#[›þnÿÉ|Lù•´ØõÜp×µ‚áSŸµ®Ã#šÝO¤~¾%ÒâAâÞø^ˆÒ¾G|Ìű÷˜pç[ÛWcã\¤¡ù¸áÍé†G1'T}àÉ:»¹ƒÅïä°7Úýñ+‘d=êŠí>Ó¾×.ºzÚoÙ›X·˜bÝÝgý=í¦&®Z™ã½¥‘ö®£Õmw:¦3PòÒ[ÛÒ}3¾•¶*o½ìÕÒcóz¥ãÌWmëX·+,á.py« Ü®ŒËæ€ÝR)J8Î6¤†áƒ‰B|/[ÂAÃè­)x{¼ u&( Y‡€¨Õ, R…LIîž*ž¡|:Y@/ã.ñç¹ìWÎÏÿ vr=Ølå$’˜&|E÷%_ék\´0XÔ s…¿Çܢ¸CàuÌ®Ô ¶>¸ÃÖæ@wÎ]µùÛà80`â÷K…RS>Š}@w¦Q *„FünðìfR¥Ä\zxÅ5#WØÙ8»>Ð=n÷z&Ÿš9Öƒ€¶iÃr³ ¼…r2Ó-™r÷äÛ ê½˜—“³<°&/¼ vQuáÜÀdw–d÷­{ƒžQÚ%6û°ÉíäJîû™çºßWVÚeÞ¢œgÙš@ïœ ~¹•Ù»ÒÓÓ^¥WfgçõÏù‘–û4³…ïâ.O¯Õß8ët4}sÚìÔ™¦ô@v±Tm¿Oü©¨´(:ö™æ.шkÙr§ÞÙšŸï]–”àIãÚܲ1ŠÆhgcOG 6ÿd[b©¤[¹›yÎù^¸çÒo­ß/Xû²J®6¹ÎvÆ8ØòÑ_à8jºi-$TÖMÚ0E]M˜™p­Ã\¯!ïfu'áÉö_ÎL knm¥‚ì¡ÚúGfîìR?6Uý^n¶ ·œOmõLÕºXdþdgµ«ÕO‡ïP¢;Ý[]Ðg±ù¨rUÑf÷dûýó*¬Ÿ0RZç*ôç7‚`¸°ƒ!ì¦ò*üäeà*·™íÈ^Àoépú05›ùÍptgª«²½ruw¥[Þ˜Sõaªžr¹r î³® òHgÖlÐfC§µs¡“pÄiÃt? {Ñ‘ð}§*/*×i*-a¶hÓ4?zÀ¥º…òfòÕr¿º*˜oZäÜYk¹Bt'Hó{Ã}s4͆ÔêÓšÚZ½ahŽÑ}T'«¿j×+j ½ú#†ã†zz 9ƒþeÐYÂm3m!VÜbµì±³D%y…¢5¸ þu¤;BCö&¶Äq §Éjrí¥VPÇÙuœiá²{¾ËuÀ<Ù:ÎRnü*S«Œ/\!„ו†ÏΩ ™lV¸¹w½Å8÷qÑ#Ôˆc„ú<2¸tsr&^‚×gN±‘ô¢6iòyÀR LJ–š‚CÔgú2Û¯âׂjî¸Å?æ×ð«øp…E¹ ŠæÚ’ÓñuØuú&¸"tB®Ðh˜ ²’®=Øø5¢·Ó°ÏØëÁ9Õp ¸6`è̳™<-ló<öø„ÎL 2ƒ> Äw|#î1“Í^§kOœÏð1ì`î•BÌ"‡ÒmÙñNjXú4ijÒ¨¢Ïeê †å?Ïû˜WЬÀ=(Œ-žWXXô»$¼änAyî‚I9yòZä>I¡“Þù¼"lÂqŒÔÃ}Ï]_ªf¯¿Ï B¤%B®'#+$Ï™3/+)k`@Ê:Ÿ1#0<âW¦Üô5HÍ^–YœvÙpk¨Ï– xCú¨°%ù¶{oŽ…Ù§ ã÷F£³ ¢âä‚ʧ>í†÷©ÏÊdJvyÍžkIû“ÛPÇHSVEÔì{Q{“LäØ+Gÿ`¶ñ½„¢¯Æ¶Ì«»F<Å÷;÷»8W);|W(µ¹…þ;šø'üÉC pv!`¬Ú˜k™‹ÕÇoºLŽX´74‰§ß[niB †º›~ÃÄü±žEìk{¬5KØîý—ë?‹z'ey…ž‹?5»õì^†!x¤ô ¼M5–Ž/‹/;QXœ>ª’÷„*•øveÚ{bG!Hü¾Tè$EHWÅöÒ qÊåƒrþžàjúÕ_‚qônõ…à°â ñÞ×ñ¯¹y¨0¨Ž«ivCÛ <j ï…Wé~êÊV{PÞfÐê_"ñ°þ GAóá…òvèÛP[®±\ MѽÒßÒ…(î(þÔÈôûÕp|9e®Cts~³46Õ3£ÖÖ>úîº Eyu¼ u‹ 0hê!Ô®eligÞ@Eº¾úg–¶–¦æé–­¶ÚÆ6¦‹Ž#Ø8W-Wê<[̫ܹÒr°žL£T y’ìBr u‰=Å{©Gsüsœ'ØûXMÙ+zB;eO>§ÿ 68ÇÚC\™Äaf/ÛX´»Ÿò‡ùy’El žsÄ©| 0^c§á“\Øzê9¥ ¦âáÄ=æ[M}")F÷ÅEÓÂ?ÂÎ`/» PP#xù…œúÿïø ô.‰¡"ŵ¦sèîÔºŒ÷ '„uB[>…9BÄPØ&l5¹Œ¥Hi ?¤¼™ÿÅÕå¾³8@!X+Rá=WÈì¡¿3l!óœ¾A,Æûax$¶Øõø›ÝÊ¿ä§ϼ-`ükþ?Ï!ßpqˆô,PºØ]~lþ§BKAYÑ×¢åÅ}Kί(–Í3ä//Ù2’³TY!þ ©c}g}ÓR6%“)÷’7ú´ÞõAÇ‘2EW°Û-“ê$oLœÙ<ã¾?Ï¿'}{º:s~æÇdÈS$íq¾¾éI*OvR¢ØÛi!opƒ’¾‰ôwãTÛ4n¶gÎNMO]¹,ræÁ©?fi>©ni›jnE_›Šo%–‹ÉÆŒ‚hI¨‚–ßÎ|_!h[ÊžNWCÓùõéO|o„ |wÜwñ¶óE$ÍÄ×Í®óÛA5un´%¸F‘ .hÆ;©b²“3߸Àü’Ê"¾×kӕħ‰ƒ0˜Ã]KͰ(Ó¬Ûù§ñ2úγl}ø’@êrbý y£µÀ‘çÙ’qR=êÁÜáAÇ£_ûdîh;ÛÛ:ÛGÛ–éö:–¾¦úCºÿÿÿ —etg†q‡â(î…R¤”§@‘H¢›ÕY÷yefv7î$!$iq(Á]ZŠ»•"%ÅÝ]RøöÇü›3çÌyn¹î‹quâʳl>ëw‰§l‡Û왎žÄŸ¾LoÏX{Ûb÷!Ó†Ií!–xró}k=)ì@z1Ù•yÅß’kèW  x(WçÉW…gÒ;n“Ø |­ŸÔ"Å>r=4WÿUQ $ <òUwµðn¥_ðmAØH3Ä8¦ŸúÎD«¡ŽN«ïÕ¤!â)p¡V®Q¾¼Â$±Hì&V2/}¯¨ÖüXq›¸Eº!—ê«»Ácü§Yiü¤oǧÐZøƒX]-“Ú=8ÿcô73ðiÍ F <´þOá/Œ1Æ>=wïå«r0´Ë(2–¼;°K§Ñ9¸5CMPS }‡ç– vFÕa´ÊˆŠ°‚=JâÎ ¤+òJ5ïö8ü÷Í8c5J„?è'üÚ+®€K³ ÓŠzͪ(2+¶èç±E}f4Í^’œþ,ga®'ÛŸ½;¯ùô7Y‹²6æ Ëû{:›ûMöw¹e¹‹röä´Ì:¶7¥"åNŠ;eO°Ðh¢× ìHžšÖ(£GV·ìäôÉ(°$èIaV7ëz¯7òŽLJ Ž•¶zç©ÏõyÕ3ZÁ»êÕäë¨{$šÜ1òǨ‡Sò&hc+ǧ„ÿ6;L4%²ɵ ¹®LU®Œ?¬ÜDNý!.Çå×Ì”Ÿ³9¯2Ûš1?x öR*á90=‘j»î*ñïõ'IñmÅ¡€ñ?ö ëÒCÁ¤"¥Lá…·»¥jtÕ‡%e1û* mJ¸wƒ!d©KÌ ¿Ý9Íí VÍöä²0.bÛzߺ† K WÜOãëN=dûÌßWÿ•ó`´–LÛ¸¹¨EÁ’¹—æöšq0óžÒל徺ô^ašÐ^¾ª®.5Z,ÿÌý+—¢éhPrBúà´uÁ3è\—ƒßA¯Ð¥ýê{yºœ¢l”IÅìeæ[.ŒM¡Š¶˜@Ì„Ä*6úhôë{/Çg ÷eÏ g™s«3ƒhGÌ´ˆá“c?'Œqîr píõ,r'~$†¹N$ñ9–¨„¾–¿Û?ÛzÙß:æ;\öíοÝm}>ÒJ_ca›ÓCÈξò±û*–8.1ÊÖÛ¶ÈÚ;ôõ—Î""ÂóÁûÆÅº?PŸ¸Ôòõ‰­G{\÷{ˆo€®CÎ ~õ­§7н¥6Æð¤þèÎŒº\ª)$ NÎ+QÚø+¯>RׂHj#áGxVm'üÉ4`ž²'™hê$µÔ3ÇqšÚ¤Ì iÛìj*øÎÒ—è]õÏú3ØtWGÉÓù&R¹4Hú(tæÞ{%¶±®¥´Sh"•‹—¥aê°ÿ‰¦Ã†!o¼‡‘ Z­”>Kåê¿À£C]cLoÁ‡  Þ zݧ/Ã]á Ŧß¡AxŒ>Ñß8©<Ðм‰¢@¾–¦-÷´c€FÓpKýŒ¾J烈Äõp쨆IU$« p ¤ÞÊ}åö<ÇçÍcf¹q÷A«à8½BOá&¥Hì |‰e,œyoÆ7y éGµ@»>)]ÕÎæÝà)-2gÝÌz›9!£$³ {Gщe}æõÍk–·;ïVî±”µ&c]æ»ìøœ^9¯ÒéÀh}¬«§ê1ư¤R;™OÔ¹BÛöƒ @jS­öÁ­ðTÉu h_{ö4>˜uÁM¾|ÆžôóÞ,Ǫè{Qucˆï'FýTY4íslTìßMª…o§•Ž<þض»,–ªwQª¹4‰Jž‰ P/pV…p'ÈR[Ááúj}:È.Øö'ŽÐþKª]žE‰Þ›âE%1É5|i¤¯?÷ßÓ>ëBÚõ«®Œƒ)³“ò‚ƒ@Ø´KÖæÑŒË)›äGä z»°ŽîÎw3½œÎ›î ®b–’Sâ»+ˆ€Ž®Òú@{üZ[Äs¿K³Ï\úó«¹5òÃÎÖ; ²›ðU29R¦zˆ'Àn¼2ýÆ.ô`*j„{‚!jC-E]©4’– ¯Øì$6Hÿá}åÜ`¬bkãcâöO‚p¹ï¹»%ç'çiã:àh÷eÂøãÖfŽsÞ×D)ñ³ï?DlrŸq͵̵ì².Œÿ;–´U¸Y{ªý–óGgéÊó¾ð.öޤ/KWJðVúvRŸè$Ãù»³Ôó…»Âó‚Xà]H6§î8Ë-Ü#…ù8CîÈöaÑjçÜféäéGþê=êF_gòÙdq>jøŸ¿3–ñ—zSØF"M’ºHÝ”åšG; Z!ý«­ÒVk‹P>> .Kã…züï\=º®o ç¡xVS…ór\„j@/˜Š*ðøpè[ÇQôF[.lá'J¯¥(É-vf“ÝÝl—,ÝlÐW[¼&4âGr“yQüŸR ’´­jìfŒ0JÐ:€M¾F[Åf}v¬„ZG­BÛ záÚú<:ÔtëѸ ¾BûõZþ-FPïnœ4.„T 劜C<þ€ƒF…ùÈçÛ÷ã=g–¶ÃÕZ6þ S¸µ®h÷ß æ?TºT=D* ÿŽ„Òx=9õxÚw``âPö+ø4ùnZBjmó˜rο2µ"µN#S=ÿŠG’ºdUM â6üz>MmÁM3×OŸ>ãs`^BXÄ,ºÛž¼¤töÇën߀ÄmŽ Ô‹ocùÆú†l¬æåo½¦¤ l³Ì7ÆÒ¯Ïøyv×YdfŠ ~°W#F{;²o¥¹Ú pND‚âî®Ážú*hÀ30¾†;PctTÿÒØƒOà8³DÿŽD]±ÃB9äâÿäùBáŠp†Ï£9‰ŸG“n‘áÍdÿ¥ÿ"÷“óÝ%žêžÎSöö¶ãÎZ¶ÿ½‰ú£WtCoUïGw/ß·¾æöú¶[dâ¸ÛŽûÎÏÖlÿ¸¹ò ›gs‹\MÒH"¤z< P«énôbj‘ç?×l7$-ôô)ò2Ýš¿ÇTºÿ´³Þ÷–IË¥ül©¥Ø…³øbìû­Š÷:ù5€Vi†9Ë|/sôü %ê?ãÉè‰vX•ò.e‹öP넊p&ÊU¿T®hÿÃwà*õƒü› äÇâxn]ê¹J”yçï˜Òø¸ñÿƒ»¡<ÊÆ^}”^†; §úZŽ‘M)\\$<uí ÷GUÇ÷žÏ¬ÆQoÈBÿp‰ß¥&J5å¹ ËÈÔcPO­Òjk8WèÓŒ24üoÀq*’Ú¨`¼‡ê ßÑ2lÁ[p#ý„þReÄè®bÎ3G]õóÀª,R·À2}·ñÑXaö×7o`­€ø \Õ¶jß³ 65³&.AoðhUÚ‰BĹšÙÉ –σåRw3û3ÂîsQïÙaJþ;ùuð¶,‹N‘gŸ ¯¥5Ì&N·å=›‘“w6'"çpÖü3%W¦ç¦MÎu>fžÍ˜‘y2óqFAf~&™¹%ó׌6©Ð\®?€­t^¶ÿìÚÍ\”[Éhø,ö/Å“…td–-D²ôο=8;¹<¹8ØÓl„‡gƒsÒP¦%ãQrß +Ø/xËŸ“²4ytðýø‘ “«â=îhN `Áà¡®Ëf©z[™!òÎò¸nŽ5–YÄ]f–p*”¦  ×jÇ…vân•È^½õcY¾ˆèÆß“à˜ÔïSÃàÏÆÛôI»Ä ßE_s®˜k ŽÃÙl¢Ôw ·lùÏPOÒÖÃL%ù=·Ðs(¶g!>*DSmí§ÛÜcã×xã… ŠË=Z¸!½0î¬;L?™6ãAéìÒ–9õƒ‡~çÙê¾CåÈg´«ê @Ÿ^KOB¿áÑh±ö ø 4E‹áYø/܉ÿg®1jè¥È>£Zøîj1FÀ+ê#å7Ð ìÓ¾D­P©ÚI]¨DH·¨õÔ8Þ­œçLn=‰Ý“½ù¶¡–­œ6ï"Ï1Á¾Ëï.óº×»[{z{¾õ®ôÞtäÙo[Ý6¯5ݲ:v@âJÂê›Hµ`N Š8…JèöÌ@¾/Í03¸—Ì;ïhO¤g†7Â3›¼FVó‰ÌZN¡’Œ÷^¨Ac}k™qâò)Q4èe¾S´‹õÒ·˜Ïôö!7Rº§f¢0”ƒ“áƒÆBU%åZBg9]mh,ÑH[ÅþZz¦•hÅZ2x Ï©¦p˜îãŽp½pqŒñÝ‘8Ä» ¿>5AgP?üÊ Ìh3Úâ}Z¹Äˆ}„jÂfNåÎPÄkËÓÄ—.‹¯sŒM¡úZÑíùã‚Mö©ЋX®ÕÕÞk}Ž{êŒ}¸:޾ũj}ñ²\¬5]Aú@)Ñ|¨ŠÞ]/ÇÇð[”›ãëþëþ‘Fg}1JGýñ=Bo£74­Á?Ìx;JE[QSt\Qó´"tÕ˜éŸdô‡­C÷Ty.šÂC¾gp´°I$ýÆKè±[b/Ø­d]n§tü~Òþâh鶦q­Üÿ9^Ûbí˘“ÁÛÙDÞþ‚NùUs»ç=Ìk–˜µ5§yî›ì™ïÒÃ3"36eÌ9]™‘”åÉ™Ÿs(«wÎÕ¬ÃþÃ!¢fPnm˜þKþý~#©ZpмA rÓ\µ¹câ‘„¿ë pÜ?†$tàn8×0ƒŸ½am¬ÞЭOO~VÃ_¦o4ÐZä!Žèi¿ü”æq)§¥:æ"m>óŠÚèé=3ü—IWÆ{¢~¡¥ân»—+—KÄxqŒ™±pó´¹]¨òˆq¶ Ô4¶`—?OýR»ê)‘î›Ä÷ÌzfaB\â|÷%ˆí§<³¾"#J…ÜäÉ-Sª3­þrÚìŠï÷–øÏîûévbJlÃIÉ‘C¸RV$cñ@=–me½—¢ÑÍ”±…)3Ï»›9#n4}Ñ3È9†¬FƒžZ¦¶ÔÆnÃgÜG4C]ë¢m0ˆvÀ¸¾Õ6 ãøotFµ%þXTÔ¢Ài´Õ7€96Õä²qÖu®ú\í!!f½†~ì¶ØyWm·J­!«¹·$l$&ûžÓõ}]ˆŽÖSöÇGg;'k›˜i ·‰©óÒ:ŒœCßaî±·øõò~ª'Ãm¡fò£„ö:ÝœžBfy¿ôuò~á µh+·Õ•éšN§0u„oó¹wÑy|UéO©RÀÓìoÜ~v1»Œ{Í^墅­R1¨¯Fôqè70¯Å[µãb»Ÿ?¨F¡è¥z]òÊë”Mpœ>$Är2l"±Çê8>Ú#9Šm›â:Ň;^r{!clИÌù¸jÈ-Sý¥Ó‹æ#c#¬¦E(íävâ&nó3]ꜳÝÒØ]ÌN&1;©ôï\¡xH™¢$+{5öMA³Ð¶YŒûé=ÍîF).×ÃÌX¢t×fh¬ZS;©½Ï¥“Æ]ý¸>[ï­¥SÆ^ý<Öq®„,naLÔ/†ºot`¿ŸyTàsè‚ÃsàZˆ;Oàuøœ©,Wj©ä&òB¹ª5ÞÇQOèîÞý®+Þ³Ôv$õÞ.ÇÛH×R×xW×įűM£è¶ÇšªBÌ3ö•t‰éºh?çý‘Ëf2"M­÷~vcr0ezy¸†¹¾ eðï·d[CÅj/as¯)–‰Í$J~-_哸ÍìzîÁW¬ £ÆBEŸ ?EO€OUÑ<<>«þ"]• †ÖÂ$­R™ LxDß ¨v‚'Ñ&L)-è<¢‰k‰mL\ æOËê˜Rå! ·5ªêuà_è ¹%8Àÿ«¹Ü?­“ÒF¶J1üvæ*ਈ­÷*f…ÍEŸçoÒ½¨#t6ÿQŒR›ËqÒEe%t‡èè+í¥VòÝDý z6£Ì¡Ø3!F)ÑjF(÷¦õÍÖþ|óWc¤Q¢#}?n~]Q ¹VÕÕV¨¿Cøw=Jo‚èüŒ€ãÕ±ÚmWh¯Ö×6ËS%$K¤ä~r©2 |íÆª.]b_P[½ž¯|ݽ뉽¶£1ô´IÑá±oâë0ûu‡èúà¸k=›Yõ˜\¬.WŸ2»­}¥r3Òi’7ÐÕì£akk#“:'5öñ{ý;ÍTÿ:WàÊùÚ-æ£,4ž––SCYÓX¤Ÿñ¥•x@n(o’]run›gžíƒsu˜Ûʇñ¹\—!üÍêäTß,aq =Û•ûP¯a¤ÀúÚ>*><{jN\_±2›sÈ Î£Š©3Ú¸”ÎéŒ+š¤]3ò‚Ûý5Ùfq9ž]æµü?²'Š~71©uL¸»\ü3w©½Ü–`íl[Rɽ“*ȹäY®%»•éå!çFï’^åN+j´(nKJözg‘ïF oˆWé×ÌúòYÇÝÉã­Ë„½Ž§Gb®ížc®{"wRØÁ{¼Ü¡3¶æÑ9o3Úsí–l›É“¼ Ú;ê ­ ƒ#PK3-ø·¹Bï§ïÖß››Á/!>®Ï†ñu´|Ô=ä±H„sá(ÐT À¡eP¨¨?ªC™c1sͲPGnTÈõ”ê6¨…ˆ¬•VSïæ)˜ÃÌŽWÕgj³7™KL5z‚;×éåâ£}¬õr¼Å~Ø–g}l¯ád ¯¯º/ú™Û'ì¤û8ŸØó)Ý‘‰¢;Q©ôÏ”›’HàÛìæÜm<{ˆ‰¹¾ed,6PYá¨üÐÕRi·|^ž§ÆŠYÜ®¿Ð^ÈÞH7àoð=z‚ÿÕã`‰ÔŽöWš U)ÐõÒ»áÃÃÙø¡±Ò*ÔBy›ÖWój‹…Oî:®ÞÄR{vbj¼æªF÷RZkåJ=­P©Ž„Cýå•fGã…ÞîR©©ô^Èc1|”³¡å±íˆ…²Îvïa8v<»œ#ùûÂñ#Ÿ,´“{‚NÚ7*!¿UÈã·p(„GqK]Ä^¼Ý54xýø=ž©æàÀjÿc¨±Öè¡›šG9®]…±ðke‡R Çé×al€¾À[@¬ÚR%”º!~¹¬ž6 †2_¡Õ`±Z[zÊ×w‹§Q˜¬l‡&Ú€Ž¢hô5ª»©Bè~«¹«¾=öYqQñRâûG[a¢–˜ïºì=KÔw|L¨³*f±} µêi¿·Ï~ÓMP£BÉ–­®3K„ÁqK¦>°\$ ù¦Â2N©mq#|[޼œDŒLxæÌ`®q…ü0ú%SKc°·Ñá7;zÈMÁ>!“h6mKôT·J»˜ d’s•ã–÷osÇVË^2=–S?§#lௌHïö'TN«O|O·„uÁ÷8ÞÈmMØ(>×Ýf]ô\9ZÄ?ÔÂoÓ/$äF4aoå=,ê›úˆ²[¾ŽvFÛV…Þ¸E öšÔH#*­Šùn3{qœ÷›ªæh@¨:n1»=I*‰*ä²ÞO—$æíŽ=C 7ª$ Z“òÍÙBUÏ"–‰SÜg"†Úv;È z¿´Zm|¨È?ûrqý’…ƒ´([›ä¹Aw–^©ÿÈ›T¤]‰ð©6_Ÿx¬lhh¤×‚´º¼Th®Dk‚:©_È“äH­; —ð¦.ÐVÉ•B„œªuoÐp¿ÀˆfZhs”Fêi˜¨–+ýQ7:¤f+]J}åýÆ×Á·ÛuܳÃ;†}ɼç`HK^ÅßiIÊd…ѪiXXH‹Ìq¤TK"UÖBCõló®QŽk •î¸C0:‡WjuA"òëëQ9ì‚¿7ß› ñJù˜øØM{§-ÿç’;ˆaî~¶‡Öt[¹³ µ€_,T $SzÇ ã,r½f TÃýÐ_rIHÍP¨*,â|¬“êãî+Ä ¢‰ç•s¯÷>g²A𲵨^’n/,Q¶Ë­ä©½ü»ÒŽÕ–¨>P 4ÑÖ@ÓªGBNÆá¸3®­Ô]ý_ùšÏôÎæ÷FSÔU½¬¯s‚ÇjlOoš%š«$šOvrHž5žs¨uàŒÿ<–ƒ© ýïô;!>¿@›P6õQ›ÍæO)’Êó7ÍÉ›WQzkæñôpº"®ã%µ©"©£µóZcT€»c»16ð1X¼aÎ7ãõŽÚC5AO4žÀnè= DÊäßP$P¸Q  ò«¦È«ÅËR‰üZ½£jç¡f ­ú^Y¦¥>(ýÕ(µ\*TÖÑ/]·ˆZL~¿ƒ{ËÛùF¬L—ð”J¦´C|*Òâå“l¾<]¸Ç°œ‹ÛD›d¡û³BlÄfïÒ§éÎôïdP:¢RÂG¦{“N`Qͬ´£/yY¹½ÜѦ¬ ñ};ºV¨šT‹÷’[ÈÆ¼ÎÖHäíGý[c´)á_´“ ¿Ù+ùB Ç«¤0Wh$Cð. ¹çˆ7Ú.'Šýå êB´(”KV~ùÖ•gojímoïÚæ¾è^ìÙF'³ã©=Þ»/t…F4.‚Uµ\Ñ"ìæ*™ýì.•©ôõòÈÄK×ßGÏSGÀÉ\g›ð;˜»žéöh{3o;ˆëÄ9ùuBCaøL™¡TUkmåwü!í„ñÿÿ—exgÛ†¡@(îZ¼xñâðŠIH žlÖmvvìñ™Ù»AˆàîR¤@ Ð(¥h)N[¤¸KÑ!ýö;æ×Ì9fžã¾¯ó¼~T+é3:“u§SíjÕ«¾PËÕëÓÍl&9¦ÈÒDi“Ò-%¥¬¹:žžÆ/q É¢-Õ#ô ùš\Æ6ò :ŒÊP]Ô†Dhkõ=4¶SFI…n|s¾…˜)Ï€‡ð+4 ºñò} ¸,à­öoìœsìûz&ĺ¾‰+Õa`ñXÞXì–#Ööö£–bk#‡Ï¶Ýt"Úó¯$ù¾õ(¡#¦õ 5Ît½±ù £ì7…}b3<^%¶îáÛBN…ÔŸn­ôÊŠEÊㆺ¦{~ò|ÏŸò$$Ÿâ=ü=iòÑú µr^Ù®•OI=%Žíë9oêjJ¤ôª¬•Y-¢øÊC÷\Óü9ˬ›Ý;íuâ?‹Úl|Ç˰ çò­k…¿Œþ®lLöðÜïÎF±f3ç[­%ÀÞ,ëAëvØ Ù¤?s\›²6l©PÓ‡’­0ÔS-ö&OÀ1ù¼{¸Ëf™e3t²à3“z§ÎM‰Ã`× ëO ù®B[Ïù½“Ú>uWʨ̘,UZÇ-¾pO’¥Ž+._Ð~áÊÒ±ùùE\QÄDS¹k»û¬w;ŒÁˆP³¥Ô¨­ÓK’*õjµš¶.lÐç'ŸÔã|UÚ82ÝBG1ÀQxyŒp8¼ ^*J€ Éä!ŒÇ@X£äbþ‰Tâ'‚üti¿´9prfó { o_þ¼§ÚãóZøsÎþ®lá€üAî ¶Âàœ4TüG.Aå+¹D¼Àp7²¶¸]¡b3y:ÿÀ½ÌýØ•î⤶ða?·ÕSÎÏòŒt¯Oœæ9--‘G ËÄö@À‹è"í ÖGoE›ü\Ž9ë9®8rc¼×¼P‰F‹Ù 5JÝDF·ð{zGwøб`®8Å{Qœ„¢iOu;A¯Ãšr¥¸G>¯ì{YùI|êúhÚiü˼ÐRjV ã‰u­mÁæbóDÇJÎ&œF1¸®¥Y¼Ùý­kŠû5·ÅYÃzÉØÝ´Û<Ü‘d/´åÛRìö`{Š­»å;ƒÝb׋Îïœïœqž7b  ›Ã•àºXà=JصŽöBûKíN«é{-C;ÅV«ÏÕVjmº‡îg%Ô§Iÿ‰Ìád)YFLÔKSHcRE~dÓ˜È>Ò&´¹‡u:‰v"ÍI8û›f {Jå‚B¯´UØ/½ÅÃ`å,L!¿¢÷€¡Z$J¹äíìðv71nŒ­cìj>b~bëb‹·|´x¬Ä–ëŒqf*æÔ*7ßtÏs{¹4¼-IÜ?e”šaërÿX«¶J}ý9ä[ñsw7Û‘ø_BëEYŸÅ>L¨ä{áÚÊ<÷g˜g{‹»¦÷ÐL¨ËŽŠ"l… ”5`/FpLþ!¾¢Æ-s¶ñ´FÉÍ3æ¤|cüÒ:ÓzÚ0ÁÐÁêðlþáË=_rÓ9^Ø Z‚4±ç!Yëï•6&YKþ_ Ç\Ý̧¢j#KFvšÎ¤™Â¤¤y3:ù¯;׌[2íŽ×é_˜v_©éòû‹æ~YÐ ~ÏM2ûãÌJˆ™ëªÏ§%ŸÔtsøfæÏ@:3g»ß¸Ç¸¿ªÑ m0Ü%OvEºÝцЛ–«âcù¸”ÃÂó Ë’æw+_PÖ¡ð\öfw£èã ÝÝ#½ÃÐJz•}£3-£ Ù[vDÝ¥f²å´-ûšN Óµ\_½˜6¢AìÎG×ñ :ŽfÓ[ô=J…h#° Þ›áç².ÅKó• ¸t!¿£©¤Ü©¸;:'Ç+c”žÒ2áˆ4@\"Pñ•¢‹IÎJG†÷­46GO@°GúÂëMB³ï)×X5ºí=Ç—­ø»x{&z¼‰–†±{£³¬ˆå7Ë~çë)ÏWÿõñžÀ3}[Ù(ÞôLðžã.% Ÿû¹;E¸(¯‘»±à¼]%sË—g,úoáé²ô´;Î –;†ÏÍžEŠDw³ÑzœZ“¬DãÈ|ÝVÑ@ЗhŒ Ý .Bº"Œ±¢†J^¤¦ë³ÕIÚÜuCÓa &&¸SÙ¢œVH_Á;p*®‡ÚÃjìM}Kd0CW¡p%”LgL“îÉu@Ô wÇPLã㥚rŒòNòˆaà6<)5–[Ê1òpÖWúI?‹&o;ç.ŽËpwßô|ä3<‡ýļÀ[ò•L¶Àjô¯Ö ©TOgɬuhGµ4—,¥WôÔ©äÔ¥jwµãgŠg‘0EîHþšø ¢š‡á<ÔìÇoÄëñ78‘ì¢-Øx²UVå\´_&ž (܇ï)Uü×׎\Gœ¡el¸)ÖºÛ>ÉA·ŒM †ÄU¶ÅöÎï¿qsøÛ®¡.ž+u…Ù—Ù7ÚzYªÍë¬ýí¯Û݇ßÚ{»~s9jÛÏ[ÏÚ7Zò‡˜ÏÛÿp<¶.tdJ'¡ƒœ¦wÉ~rx‰Ì2ó5 wÅ'ÐJü‘zImø5î¬þ¢?Õ z]µ½C^’ÄÄöª:ûO€<ˆ'ã÷è*ܯ¢\lÄMñ+ø=Xо'Ïáù¾<ÜRxi–tLè~¦I^Ý{Iª 'ìŽfò³<‚IˆF¨Qö»Ú›{bLÄV˺À›ÚÞ¸ =ñâ¯ü¹@ž;Wz^‚¸Œ×ÙwÓ†¦oË^šv!üsêÖŒ!i?%MÐêA¾ö|ÿðSJ§TϪvjZÓ™=ïòýíý 8$øùÑŽh›]ØÆÚj&ˆÅÆR'å¢bY`L@wH‰ŠµnZ1]/cï-q™ØE| Öè^S/f‰óùHnЇ㥥ü`?þ[‰T:ñÿØ[þâ2ä1dAàTÔŠô¾†³¡~÷?ÉY¹ ¬QL›Ðwq[]a8’Ýó­ÒGxÓÝCQqÊü²Æ‹N®*»÷òWùed6´øyó¼á‡â—'÷ʉZ]]néÐP‘ØG_›ZV[÷„.îa¿ïúÒfúðÃqYÈ—"d‚ÎúfT.¸»xþâÊUóãÊÕäÜHãç‰ÛL¿z’@þ¥PK×ãp.h ’U ‘eÊ4"½”:+Œ'à ¨.“oÃ&d›º_ÿ›ñè4ùe£Óøü(µ›â·ðŠCâÁbe¿fÏ®Úå xõ£´‚½n c-N`é½”`ÓIù*x­ F‘ t Ša38 n¡;É$¸Fy'ßð.磄gÞKÞ±‚%0³¤æ’ UbLÆETP7ùFû§ù©VC®¦1(šµVKüí’oùеÁ=·ÓúʺÏùÎc“E”IÞãç~”€¶à¯¨Nžá5䆘#›I}5‰V¡•ÉLŽ%•T&q¬‡êÒ—¨§(ñœ÷ßžëo6Ä7³qžt7ôlçæX¯Ä|dZh½`hŽ6}éÚäéÅÿË×w·²w´­K ï #lG쇸R¾Œ{h+²Ø¿²WÙ;Ø×Øó­µMºi=ÓÁlº³¦ìÃÃh:mÅ’µJý£­?òE2#¸’"ò6`À x•æiëµ|uA0ò†ö¢UÄ@8ö pìÀÐÀÎ4 xY ùÇÂÀƒŸ’E(LTN)ªÜL-ÕT’Á,¨âLô?ù5Õ›)HJ€5`wfRCÛªG’3rwÁÅ5trŽvÜHÇTû÷cO°$Ïc-ýI¾ ¾mŽJS–åÉÉO¯º7{@nô~ÉWR7é>zLÕÁ4÷hÓ«Øù±Aq«ÂºÌþ!¼{X÷Ø"o’ßào‚‹½EÂpe ëΰ+Z°z#í=ð;\E:Ðk°'Î [è ú9¦–“š XžƒnIƒ8ÀqB*²ã) Dlë¼éìä9î>`>mU•uzoú–,$ =ÎR#EÅmH œéÙq+dNðÖ°¯µA?æJþZÎôhdËpVÙk¸"…±Þ.Bq *..i¸ |íÈB‡c¾«›V'ùœ~F{ _’VÙgF¯;"ÏU¯Øºz¶¹õ”pç^W4Y†»NbëÈùÖTçjç#Û]çQÇh>C)’.+;™¡–}Zrr¥kÅ“Òó%…ùóiKohfèÃí§ÃP:A]CMŒ «È<"ÐæA^:(œ—w •þ lGnÔ ¶f´u㉆‡Ò@4 '[ÔAè®ô üŠB B‡ ¥ÁÁ œÅ†‚ùBmq –ØyèAæj’ºi—á3%îæNÈ×ñ8 ÔÃñep„öRŸ“p þ…,a™ú5’þ fËÿHÕr„"(çåy½ôZŠWJÑ èÀ-µïÔ÷é»Ê’HfÕfû8uû–üIV“ê*_¯¤Â¤íþrÿsÔÈu+q¢¹Ð9ÕSC¼Ç‘Ašæûm#Z`RïaL2ÙUÚ“xÈz“| 0w§\¤@@ñä® uØd²„àxYæ¿ãz\ö;ÏX®“§\Œ†ñ ]:æneºm¨cÌ5®´M7§ÇÚÿå-Þl¡'ÆyÜÖÛü$3¦Jëgoî£=ÛøÔÔÍÚÉQh/´f™6˜N™¯zö›:Û;zPðI˜‹Æ«oµÑºO7hËéÌÓ u'µbíUî+ŠÑKêÿÔG(ñ° ¹D§ÐÎ~m@G`0Öð¯à¼EƒOÈ`v“¸ÑbÀ£ÞŒÞP _Ó€Qy 7 @œ›ã-8N”{ÉDiŒŒäú lVz¡ÖÌçkÚ9ù Dö ÙƒŒé ØOéHWáßùRñ¿äq9æ¬W™²–e^Îî“×'·qzœÿqZTÞŒìaI.õ†T—Ÿâº—æ±ÄL¶‡ZêpÂó„uM¸ŒÆˆ]f{• ü}’—èÔ[äï€çGÐ ú‹ÖÜ¿S_ƒÐNz”^§óÉ"šÀ®ÐqZ_%F^'…ÏawÕbœæ #Ý;¸,çDû'®üíÒçòmißÌýØk’`8ØÂåZgÆel9Ú`ž˜o/¨ÕÄoV\u§ºvÆ«qIÑÂû&ä$,û­¸EYïÕþÜz<çyD>¤áô›I ]ÞW+•à°ïg-Tг´µ“˜± ©.Ä8B\/ãæ9Ñ,ÔêŠp[FŠþ@ÿ¿,ttOS/Š‹¾YüÕò•ËCËŽŒHëlo‰{g™.þް¦šG×U•n!·è)õ8½HF©ešD:Ã~˜¡)8•(‡D³Æz76:ISZ“¼QÊÄ\)¦’BñERˆÆ’öÄ£ñËl ƒÀ'p\,¿Ç¢ ÞÉmáPR?å®ÚDÌÉ{ù¡Êiô?xޤkõ†ä«­ÞD­•*ð'ÈþQKÕÓ¬7Œ8Ïh°“ô`s0BoÐlö€¶&wI›¨-Ðjùú’®ð„¸©¢o˜‰”ÑÓê3_¤[¾kÚϪÈLXt?1~0ß²éîAÞv ‘ý8é3-ˆ pù-hKV©3õ¶|‡U´J)WšƒÅ`¡r¬Ç|À>h_³(Ü‹,uD‹k§Kò&H‹äÝÊ9TI6 jeßÍ5Õáu u´u[ÝL]œ‘ž}ÜnœG÷(î-ÖMqËâ‹ÌìŸÙYãvã*ótÛ û s_S¥¥ÀÒ%EµŽ–0۲ýBh'·ŒòjüÝ8Q?Â%ô ÖSÿ•­ÅË¡®ìUühÛ K'ò ÝÃý¨¨>gVÚ•4CÑj²•tD³à}ø MfѬ Ù ŸÀ$²…Õ ðßeØ ºÑü…ÁPð#芶’ òy MëXè¢Í0þ¼l{rFÖ¶ôkê(T¾T¾^Oj®|òÜÂê¢Æ¨©­;ë“‘Ò3ãP)j[°!ïÛÌ®I!Z¬ï‹gaX¾ZÐ-ï¬zÕ´xfÙ 8íÎä'ÓÊ#oÆ½Ž™nh©gšh<ÕÀÒJž–|H¢NÁû¤he'^DkªÑI°·T%Og5é 4®eôºfNêšêߢ×ó]¤’}iߥ§¼FÅ\ÿÚ%­¶Š­ÄãîCî àÔÅ"o0ójSOûvòÛJóë¨\C+Ïimmš±0¹›Ï¬G?Óõeìé#gF¢Š´ÎéBÖÕlWJoªc¤\¶-u:(‘öz‡ÓWþï|íR÷eóE“V=dP‚ƨ·ÐφFÁ¾p›Ò؟ɵ™Sß|Tº$-‘"?¯ø.ä—×+[µ°ãÒÉ¥¡eûÒ‘`6´1{¹U`!s«ÛX ý¶þ+B\EÇÒFj¾ož>C]OSÕ «'ØÅ2ÔÑêÝ«.&é×l{…'Êm½k…y ñ3È©ÙPÜÕÐú7ù€Gà–ÈŠûâÉh‚2Fœµ5(©RŽ*aqà˪”£RÔ…Øõûº…Ñô 2TÈæÊax£¦3ÀYÐ÷‡+áõ¹†I *êÁúz¼EáÕì’öI­Ëî)õa§@‡¨Ø¿DGv÷¬÷{üg|mµÕ*c‡ñ¿R«ØúÔø—ƒò¯¥qkßz8{ƒî*¯…Æpµ©œÞG‹cÒ]$Ÿ6 t¸ žÐXj»âµ$Š}MF‘³,‚._y‡¹Oðä»ð0¹†–Ê¥UrŠ%”óë<^~”tU.?y7p[]ݹOÜ>ÈÕ-1?þc±ùÓÛn{…užù‚ñ¡éw³ÏôÑ”mn‹I»8î]bŒµ­3Áu›{æyãm†ÊÈ”^RªvΗæ;©¥ìñ<~@ƽBÎ̺ŽZÀ2¨9@çì;Ú;°smHmHóð "x G ÉøWl¦ èç8úAã€Ë}¡¨+pstm‡SájØ&ôz`:l›Ã8Xˆï©WýG“FjóI_2­ãYpÒõ~ZÒ¼…e“tjü“"]‚gR»ç¼L?“™—ô@2z?y ÔUIc’—gæ7ËèÎ M ¹?sóôg³6DõŠ9yö:k†§Äl8fú=qˆ]†Ù25M­fëðBØ5gSõµ¤ ÿÐ9YrDß¿Ô ~‘–yúB§ÿßO:Ì“Õ7{ufER~ò™¤Wþtª7Gi¤ÕŽ{nq¢ÒI®×ù~N¾¨­féôëäôä¦âýØþs֙ޏ¾$ÍRnælÊŽð—$‡*£ø{üŸâ›„ÅáƒÍNqtZ·œ®ÙéHª¸?ÊgLP{¿Öfޝ¥”¥®Ì´f·Í—Ö>ï 2829ÂÁ1)ØõMHÓIÔô¯¦&ao°1š¿-õ•Å€—Ez~Ñê—,]ð¸ôcéÕù1e» .úü.då#tÅOð)¸ϧÔ UC? ¸}I§è&5”®££ôHßo¾”÷óÈ2R–àdÃî««õ02_^î­×þ¡ÆbÔttQÂÕ´õ`+;ÆI'pÕBŸàúä ~Gƒ_Áù¹>pc¢&“Ž˜ ûx+gûù¸„>C³q¤HíÄîr™QšÕÇ7M¾OM_a'Ø’È"õó¤†ÃÆÈGKýî$‘~¡Ît-¥ Ùßä8¹D~b«UY{盡g+Ø[òª!dÚ[ZÏ»G‹µÁ1:Wª& Ó@¶r³ zƒŽc6v‚®¡3Ô€ßÀ§òÏpïÚß’—”CÐS6P]Œ¾µÀK @€Ðõˆ›JÛ ŠA jŽ7“›x «¯¾'çä‡\37ñTx†ðݸû¶BÓ_ƆXó0Çû.«Ïä3–+Œ»ŒÐXßvÓ^ÛRn¬J\gÜf®²ͳ¬>Wð>§fRŒ=d9ÓçøÇëÏÔñô1®ÁZ©!ôn ÏFÂëÔ¯MdÈF¼mxñpü } Ÿ(¥MÈŸ8 G£°)<„âñ,ã8ìB·áEðìÎfG±[Éï ‡´Tœ-fHcÑTø7yª²¸-z#¼SàR´ 5AfpE>k÷àVŸe¬wzBžÌšUžèµ=wí‚ NâjÍ®ž]hœêÔ“ãv˜ºjrÕÎBG5Ñå{áÛâûÞ×Ê7VïšúcÆÛ”Býݯ*’fJnŸÚ#yµ¥?%¥$í×Ìÿe&èK„a–ß™Ù!çSZ›¤?|—Y¶iVÝ<”›žŸWx¼pRÁix Ð6êÁ®µó!?BzãYäÌâôßC_TÒgò»úEê¸Ô‹tœË*ð^ÜÑÿgnTîÅ´?ØÈ' 7ÕtÕ1l™óÚvÊtýU äLNš$·lvv')ä]‹OÈ›ä•B=Àáíä{ºˆÞEûà¯øªDKãs-Æ›L×†Р›à :Z+×Wª“é2úƒ¶G½ŠîÉ#”6ÈgÄ ÂoŸóˆiºá°y¹õ¹õ”¥Sâûø˜ÄÝÆj#3 ³Ü³?µ>µ\3¿4Å[blæ+¶£Ü,q2zN£È :žÝQ{è³|w´¯X ’„ç•T!yð—$˜å²%ô/ò¥‚èj0‰"ðÿÄ¿†Ýx<æÈMº‰’@Þ“ÊÀÎ!¼Å v8× Õ¨;šÃÒI.ÄÕÑÝc¥‹ò1iœ0DŒT²ä¥ò>p>€©À¤–vxíÜe÷Ï1—äHu­·dÏ>º:¼V„9Z‹5ÞǶ‰Í4­Šü#˜†DÇ݈¿þ8ôòì¡Ñ âýî©)æaqàúTp¿ð]ÑÌ¢Ïçµ+ .ÙX™µ"ëiÖÿr6æœÈyšíÉn’óÿÿ—ex×Û‡±Å¡8/´Hlw³›d7ë¾³#gæœ9gvv#ß8Á)´X!Š·– Ń[ úÇÝÞ}¯ù4æ\×Ì<¿ç¾²ì9±yBhmò)’˜šµ¨ c›·;çJΦœæ¡^¹žÜÑ¡¹yƒó½ymry†À¥p2×ÑªŠ›¦:§{o¹®:Š7 òò· |Iš%M&å)¯SµÒz°2ýaæžàœà´äZ’–|¤· Ø[“Ê:žªã %þoÖ†ØiÞøäM©[ˆŽµ›|}n+WŒ¤ëŠ+Kï—]Z’[8P^*üè©´|kédÿLß ×H2^Þ%¤a }úÂáhŒçc8=xÏ»@ca:ó7I7?®±QMÜO;ÂB[ñÁÊgЇ=nÖÊ•¡~h¦Ø =À±ðï6æ-·ž¾¾ð°JÊ‘<È#*ŧb~Cî‘1þ•þbŠä—3ZðœÉnHÕ8 LûÜ(è’×+ë-3VHó Ë/Ÿû§¯š; .ÂL‰Å»džÿÆÍ§ÆÑµùþboò†œ‡àFbw¼çù¤€ÅÿXÚJÊq#2›pd#š-¸–ðPèênÛd­åàÞÀI¨Dœ@šHHžàZb¶8Ql yÆ æ’GØ ƒÆhŸ4Ó§"q¤‹88ÙîìD^‚£1G~!“`6ßnÄ.q8GÚ Ïð÷’º‘÷h-¬G:áܧ£è)i"W’¤—”+™)^«{¯í¹‰2N5¾H|“¸VW¿PÿZ_ªï¯__×0±«±›iŽíµ;i*ùÿ85ÛhÑkT(4†ëa97ŽZîmÊÚÙëÞb¦@°“VÒ ´úá}~ ¯äŸp×X÷ÿW èÄâÿÇW#MøÍ~€[y­p=FK„  Aka²pÔé š‹$a.µØp4pÝwöþžGפ«èéÌvŸŠŽ‘4_ŠTÒéŽÍæŸ,ý,à ָqŠ®‘íæðs¦EwP|Šþ=êpT-Å·ŠÊWj*ö­zYìz…%æxLÍpC+ÛWÆìŸ<š¹3{UÉê‘;¸@—/ä™3&eüµ.gEÞɼٹÛrg^O¯HÏÊ8›]œó_º*Ø,£(4(ŸÊiž=8Ìú’B/ƒƒ²Þç³/dx2ª½é|-ÐÖ=Î3„¿Î‚s¤Lßlú£a)µÁ?!P’œØ,Ž–.fàšÜXoMn§pZ˜Æò&hÙgþÀ¶;éýüuù²×]˜xÃõ›üKÖ¨PVv‡äÉ/øÀá4*EdRØýÎuÇýÙyMRd83çtYØ<å¡u;=Rú(M«Ì] ?ØZ LØ)L#&ÀvËRæþVä™÷q᪅{Bn"xßxÞ[›†º»³uQ$ž÷Ï`$?,bb¹ùB'´Ìå:Ã(a×ÁmuQŸÅþa([8H°4HÜG k8FXÂ÷ár%lw;ÞòpÒP¼LZáÎlG°…ÛÆ6Þ¹w‘4qªï³Ï+¯÷ ‘'Kä Þ ±B.Û âÜÜ)8*x‹ø5krÆçàØ@9uÛ]ºEËLwn2Œ–ûçù"A܃TôòVP‹)B=-/õ$Õxš.îljÒJÿx¿èŒ¿ÀÖø™*É‚4Ÿµb‚ϨvÌu&››Æݨ¹ø ûà ÇÀhž‰Tì,öL8G qpª¸Jò˽åþÖø9ãbj…p&â¯RC_s´ˆ îò3…p(QR’ËÏÂù=/úÃ<é¦ÌXñ°Hðg¼Š4õ-õO'}ÐE¸’S9Û˜cLµÍmsô¯ô?OÖèÿÐ7Óý•P©Ù¢}”¸Y×B·Ö|ÙéóÆp±Œ–>Ì´ãöswÂ[Mââ½Û3«Û5ÎÝÎéub†ó3à[Øötà·”[ϼ¥›3¼JÆËb—1—Ù|#t6ä#¸?Ù~ Ÿ¿ š²×hÂ&ƒo„A¨ZÓÙÜÅN÷gf3ÝÙÿ;ÜÀÊ_iÜ<®X .ƒ–âÏrq°·³}¥žÕm‰1÷¨"§ÎŽ5"ÒS}&f¾â]lß„'ú%öOŽ c‚m‘Õ76q½AûÓR¤Îèñ.s_Æ€Ì9B'³½iWi)kÓ£²VäôÍ»–‡r?åœÈ8”¾;x"Ø#믜#™ÿeœN”Õ8ýV06m_ÊÓÔ´ä÷©ç22S ‚¿¦½L¾Ö<£š³ñ·C 1¦a–ææb[/öZ˜&ø|™‡Š»àWÜ Á‡Âû¯KÀIt\5]ûHn®Ò{\ìc±6•/4ç\Ž…°LÌMíêj“ª•OPKÝÍH¯[)Q¢º Àtîgò5÷av»ÑȪàKòq|ˆnÎ¯à–º~ÔŸKtº¸î¹Ò¯7íjá“y™%%kçÍ-z”qËiIìi›á®ïiC7æjñÓ55ÙææygïeI¶¿gÆóOøãh(Ž®²ÑÔL÷Q×JÞƒ®a†XW|ƒÝØÜp€•@[ q¹œŸ[‹øÞ°›ÐÁ÷£]Ü®3XMÒ0@z!»|A^,ÇIÒY¼8l¬“Î;š[,”‡ÙZÊ×AAáø¶èh÷ ûBçh¶+l‡³rkÐ{©¥<Å÷ Å<(|17]ØŸ‘#þ³r+y)ÉÀÕ¨¾8§û sü=Ét>á;þrÿz_lø®.6J{¥°‡@R¸¥87Àæòɰ®Ø†Àjô„?$܃nØí6Ãx¹´L¼)†„㬴*Ð[|›¥$2 ߆sÙvÜ>¶Œ« ;"ß_¤.ÎÅ¥b+-T³û¹eð~>?K\€³¥ƒð˜Ž&AìµÛZXÚZzš§ËõnÃY}'ÃJÃE-ÔvNø1ña¬X·jIÜ¿ú\K„ƒw´r:ܧ<©¶ÔKw[Ïç³ÅðÉ$[V˜~7E:vRÃØ.Ü\mî,;—iȼõèÜCÝ=ÝZÌœðÞõ<¦V³«xŸÏŠLý•^Ï"6Â{ÄÓŽÇýÌÓp†° ¨ñ(ß/|?ï_ôOô62ü/¶ $äæ‚x®&¨äVq¿óíÄš|ŠÃkzh¨6¾0—„=tX³Ý¼»ù/Iø)†5ªÆ‰7©6°¯´T(qÝ€¸šž‹úÖšRý@s ê48áëŸ×²ìþ’Ž‹z/:¼àçâKòwÖŠ›önl<ËÍ£O9¿˜\†ï ÇÃÛV›Ø!a†­.£\¼YT ^ì(îO~oê’PË5íÙ  Œa>²“ùB(åŽs߀ lCäçÝÀw£)ðæ÷/T<ÛÃÿâÑa¬P uè=âaÔ ‰ ³ÍsŽ’{€Þ ëÐ:¸ÇËÅÑâŸá )q/q‰ôG8JªFßÂJX–õä¼ø;ÜW¡Oàž0V|E´d¡ø}EíP1ψ]±*`Sü]‹½»=ÏÙ-óM”­¾’(=#"Ë?O™O‰W`“ ü¶C9ðvo+ÇtwSay-©Ä³ðÌ€°ì,á©Ø¯ò,³n4=0ýmz¦Û®?`È0<6ºõ_uGŒ}͵ŒÕ çâJã_'$%®°kâ Së2k?»dOµçÚÏ›'BÃE£ß0ÂH™ºÚ8ÍÎÆŽßœ®®®ÿœì íwì¯]ßÑ‹Ùln0K›è]ôTz1õ7Õšž@Åxz*Ü OÐ è,¦»šápábÜ{==©‹Ì(؆lÿãïpã¹šì ÆÊf#=‘©çícÑÄoÖØuk-‰öFO|]µE5EÉ**£ ¢uš–¶H¾vzl¾©È^¸1;˜® -°åÎÏx|ß$Eß…êd¶Kéâ[޳ýÿ¤´ K’‘±5gdÎ AŒ ®Núß*Ã}ÅTHÏÖ²–YšX_kþ˜ÞêçWŠåºLuŸ¨­± ”£-]fƒvÚÝlñÀžUöÙž4ïx´%pNjË6s~u €µdã8ç0¹^ãSé·sT¡2¶sE–=žÔ¿öñÎÁN¿îŒÙê»™Ù3O—•ä+gšëþJæ=ê?œÖ]­_íèD…ÐË´Âì82Ø<,a–ã˜ã•s2Sâ)·u¶?w&;ðc“$UHýY =—ì.]JÌøÄ•žÛ \ÏXö~yÔÊY+ýúrÙ¢ü8qÃìjl«¶Õâk{3íuÐÌÅÚž ¿ê™Œö&ôk Í…?ø%\”°·Ç…Ø!ÝãClkoµã´»È[Îý.,@w@¨ÏÔä{CØ/1Ó„y~ÄwÄ|ž'ÙÛ”{ɽàãa’ØQ¨ìüôp;q‚>x©xÝJ¹çÔ&ðþ' FaÂ7Å4q¹ØÄW¿vðZ¸”Ü Õ·‰³‰¯~ã Ð6²XÚ÷Áƒ°¶x)Ü eÜ–”âM¾/d5¹Nþ%µ¥Bâ!§È=ÜVbäV)$Yò{’û#|‘òÿdà9Nƒ§„ý¨ž´Ç ´’_á”& AébþQZCt¾Õ¾á$vöÕ•-䨈Å+B`eÇs 8Aø´÷•Jí¥™r•ôAü^h gp¼‹wÌvÌul¦FsOÀ Ž¥–±†dc±gôâBamØÕþà Üúûzß›©hG'‹d9iŒ3½04µl7m5^²Ô´.¶^°<1m6&ê^i§$¶Õž‰º¶Æ¯¦¶“öƒöU¶4Ó2í[­2Q¥u&XÊžéFè`\¥ú†&'a¹n»Î®3ú8½ ŒBå8[p0F÷'Ç4×cê2ÕßuÍaq;•üñ\3Öà5RЋh–>åÍq›ÌU #4ã/$NNÜ¢»SµZõQ™©(Šœ4;Oq(¡¹ç÷äý™uÓ§/K©g³ÞäÝÊKÏ}µHúÇÛ’|ŸÕ>«4e¨ÄƒH>ô—ú§û_$_ Z2v¥ŸKn(/ðõô½g#ÌÇtÀ1›íÁŽÜc5ÇÕ^c•¶~Ä‘_vEœÑ\Ž­ŒÜ™µSq'Τ#šiö®|sQ)Ìä^Û–ÙçR<—èpyØS­åTSô 0t-B×2­¡ÔŒª”ÁÎ#–R{CÂ{ÿúˆa®¢^©³sÆå¤ù²†“qcœƒ“ßf¼§‚–Ì>ß×>¸Â÷Îñd­ÜfùAÛ5Þ쬑8=fŠ…eÓÁBïùrÒ ï_Ô¿¶ý–ÛFZ¿j ÕbÜ5T6V¸£GFWGoަ"ßÍÙêö˜Z‰ };ÅþŽ;2Þgu eä5,t_ míÉÝìö™ ’“JÀS¯ì‘ù{úßzyˆ|EþJ:€ÑëÑ›«T¥q´ëüÿFŠð8ïQW&—V8«t=b3c¦(ö*s«4o4úÅ ˆ²±uý‹¤%4í8¬_¯=æ-F¥ëd3íu|¤n£lñ¶Xͬs,_øÅ©ç‚ÃÛv/¶2!ÙðnÂݲ‹å#Ö]îNä]ò˜à?þAþüš©AõÅô•™ïø]–"ç>Ë{Û}új—Uë|`ûÆÝÖtÏ/îB»Äøî(‹5ÅáBm>„¢6ü8&Ý9ÒÜÏR“ZÅ}O÷·]6u´Ö´ªõ7´g Mõ·Õ]u KmG]W²;,#käºþÙüiGëq{=ç{‡Ú™ëë^äœè¸è( ºÓ îé¶ÖÖ—FOÂle”b²zGœ5~“VÒÙµ×4ï•Tt(º–òCtEäöè eµr¾²’Äx£ˆÞ³G¹L1$¦<Ƭ iŠâgÇmW]SU^éeC|B­„¥†[F—þIü³Ø»š¡ñ7Õ[4—´}ô×ì5è£Î»zA¯ï`š`êcÙb>bHÕÏÓ×6í¶¶´ ²¸Ëµ7ÔUƒT¡Øyª”;bfF7ˆn¨•÷” bÇ«è\¶2Á|‘Õ/ïH-_Úšœ7 ð—ù—ŠŸ¤å¥¹s†b²§÷×–ð³äM¸ÓWÉÜ)v)sÁ3Ä©pÞw4±W;iAœò‹äýÁçhЃCæáúô·Ö³&ƹÈùØÖÅ›ïµ2Ó¨çÎsôTKúä½oé{ÓÚ.)&©yR#é³"]ô·’Uð(?PØèÖš»{Ú{O:’ã¿SqÁò/£à_¥mKoC¦ØOR³|ýR&‰$ܻӥ˜”Éá8žîö`U®Ã[›‘YﵺzPŸÀw¨à­¦k¢ý\3g©£§}— Z÷˜ºj~öÓÔë3æGÚt:ãbË-4'_±ì¿žuêß’6ÜØ4ú[ùÕ­xýÃEæo-}YB—´.ý’¡µG  âbäœè:ÑÅñ#½×€Rh>_ÆBQ¨ Ú_¡Þ°__LÒà3ðÐHÊbþ ›Â PÂq A¿‡éÁ¿æ?ág°š6£\ú’Q%Ú!ö†Õ`&8èy(Ü$5¨ÆÚ“?çÜtõã{‚ö)G±·Ø3 %7U#Ýóh…×i¿nxª¤;¦KsÒî[ì-_QJmüÀÕ×b²vb*¹‚Bjš¾#õ{|˜_#ÆøÆpo½ ®º,bò™5ôUfÛÎõŒ÷dîÓ-ÕöåÞdÓ«ÏÌYÖ&fÆ^ž™ý\{Úä´þÆö ¡Ul–7Î[óx͵%k‡¬¹9sýä¥ì[ðbÞ­Ò²=)|M­^Íÿÿÿ —upI†ÁCàz¸;wç€ !$ÙÝ™u÷™Ýñé‘Ý8q!hÐ`A‚w'xЇ Á9¾­®þgª«º¦ºÞßó¼Çâ–FϺ£‹íÌÂËH ߊ©¡z²¡˜[L÷¦¿‘¿¨¥Ô*·’yŽnÅÿäŽÓ˜: D‰xEѳ8ŒùN²pžÆÞ$oS§Hž©æ.Ò™ÌÎæÓú 5 „ü0˜‡Ä6þ„ž2þ"ßL|Î/æQP Lf$Šb)®ÐÜyæ3ĉ.>‚s+Árþ¥Ð‰áGŠÿ )Â}á‡8Ýÿ^,êE¥_Ÿ\œ8UÚ'Mõ‚¿+Žñ/æ Á8Q%æŠÝ…Xá&ÿ—ð'_Á.Žú›H¢ç±JPÅK:q —Ëôf¯q^Ð_ÏEq—™;Ì^n#gg~S¹%¢Oj.”2G¨Žlgî Óœ % °dg¾[ô%Ùd(}€ ##ñØ%×j¤Yé E».¹~{Ž::šbLÏM M¿Ô h§â‘b†2W·Ü|ß>Õ£C¾ ×0·7/g†s­ØVL%}—»ç9θœž!n—½­Í«½—ÿ©ø®0*VËsµ¡P=8Æ”"%;ë‹çä·» ´à—SðèµbTZ¨Ø$o®)tŠ#Špx=œ5’dq²Éð å$øüž¢l¨,‡^ÁgÔ§Õ=TNø tn©~¨í¥]¡.Ðu7æë†iΩæÁ­”‡•çUßt#×4'ÕI³q€a¢á A¯_¯L’}’½q¬D-šŒøŠ pGÃ-ä®Ð3#3»*ÿfAbþ¼gùïóÛæÊî•ß{éâ%RŽ*cQnb~Mî®ÌN)‹¤¹Âª„›ÂX¦ ;’I"ð¥ø\E&â5x$¥gSÁŽ8€íÆ=àZ3Fª5‚µòM9-5_é=ˆvC0_¨§ÔG‘9ÎçÆ·ŠTm™%Ê}ßk*²ÿ¶G¸bÜFÃ4Þ‘d7Ù•ê(·w5lµM¶/¶ îÓ üué'È*-m´xÒŠã ²Ò¥wÕvey2}œïp¯ö¬qÓdgv «¢Ú“€Çßuße«Beœæ‡zÄY¾8ãt;dÌ_Ý“œŸ=)âÌE=7ÞÙq~K¯uik¦­ý±ádÉÜ’}k>®è»lÛ ßòôå–ùEW“º§¬öCÆÈj˞Ǝ—·mrñd5ß‚)'æQ"hCqD#r§ïÁ‘'ñ ò™EBl‡Àfé ;™ûÊQ`ÝŒyà `øÌMåÞPO¨D™¯ Ù‘îE%Ò©ôYvÃËðuô$ö_>EúÎwãk ÃÅÁþ‚„²@>BøSÚ ÐâO>즫3Ç•±ëØ=tö_ á{ó4˜*„!ÀÌ-à.òõý®Az+‘þJÿh©®xŠ/Òʼn“¿“tOk ¡B?låî³Ñ,Xø·`˜¸&°4ÐGlÅû¹SÔj¼.õ•yÈã ©WÀÆ/¤î‘½Ø8°…ŸÁ½d–³F®’Åè¦Ä(r#wGD¯Ð„ÿH`®2r!Þ—ìCAH4ÕwÛ‹áG‰d4iì]ã ÷ ÎÖž‡ž,·àï0Ø?YÇ™¿Û¸â›Mã4·”·àÿ`7\­ü¦Zo<`«tÔM9Øï[? Û– vêHy³ä>ZÔ^"Ù÷Š»æx:Ðo-?‚ZÎ’ÔLG—ÜxÚ÷¾À—ÎØ1âá/a½Ï\?F˜2S¶9Ï4ôíw@î6Ì™ÄA ήÏ §)§pÞÂ&&A/âŒÎžT')ÉÿIÌH¼—âI8—p8)5íu2 S±¯LKIÉV;;ÉÚ+k”ë4"¤…&ÎZ0­bz4Ù²ÂåsÌsá?fM^â)Z¾PQ4yyÈŠEÅV=YA¬ŠšVçŒÊ(„Çã/Ð;Bj>ÆÛKð¶÷”».;dâÓ±TOò¾Ýæ £œ‹yI]£+©0²ÙŒŒó#·‘,)#> ®LwLò=ö5¡‹™Çü[–"£˜=Ìov  \ ÛŒÆl¢7Ї€ŸGØ{à2ÀAÇoîðFn ³‡}Àìg^Ñ»˜AÜ6†‰bg ±Jx%Å'¶ó÷ „â\éÿ$˜¸‘|>šÿr€’{Í‹ønW TB ÿ? âÓøp¡£8G‘™E¦ÖÆÊ ÷\í¼ƒÝ#=œ£¹q—¡H¯×Q¡Ú:qÑËcr £-]¬£4/™qYSŽZ8vž{^Ü¢ìÅåËê-m^$í[D>Lâ— ™à =ŒçÇò1‚*Ð'?€6ƒ]Éh¹ ;@5½. zæmžÒ¤bŠ8Mè)<ð8p€ŽL/:б1éÌ\n£à> ¥b©tA¨# ÜVP |Û„Ý ]ýk„jVMš™­Ü!þ—ÈÎb?04ó5ØMC8ƒ›L&Y‹¸*þWD~Hïù–ü`¾*H~,è1ù\þ1Øü§çÌŠ`âœxW|9šŽ=ÄN£OG”qÙo». {\“]‘ùޱFÄÀ+ · ] 2Ã^}œ~¿¡µÅnjcègªkj¡ë®+5½´z¬¡Ö_æyöÙÎHÇlk´ÕjÛcÝ`žcnl§¯Ô6Õpš³šdx´F”¸ª«&]5UA6ø¦²+;À]a¥ª‹¦‰²>tQ1 6À# KP u’ÿ’+à—ðeø*<ï‚WÀéÐ;h†2ž§Üª5hרÿT«TõU:uíT]”î—šQPûtk óL ÍGÍ~ÓÝxÝX£ÂeŸèxfÕ5–÷…[#éþKI9;¶ËòÝ!ëæf^εe_˜£N “žøÞ3Ÿ’Ƥ c™¯Ø6þqæïÌSÞ'&ñ/\•ÆÇu,×ÓÕRna7ç<ÊÞ/ Ô šÜÊ»4¿EÊ5"kézŠé“o¬Î=ãwQW|õÑPô:VìC¼Ðñ¸†¸d}ã®ëîGž;¢_C²9Æ[<úS…¹—5Â;˜_îW³}]WœñžéžnÎ(ÇOË\ýee¾]ïõÀöægžã\9hhx0Tœ¨¶¤žË¾µ;[—×/ï[îÆÜ) &~'ÔÛ-_Œ9¦&¶‹[·Bï5‘Á÷\e nC©é¬ã„u‡¾±/­&7?(¿¸`sîÞ¼ù²ž&ÔM”9'÷'I s°¿6§ÝÄ."9È«5Ôv² ÎÜeZq«ñfȼîöžÇÂ0‚8V¡ }ð«8Ë®%xg{Og‰ÔdZCÆ¿ˆ\bKвú6á dˆg»û¬×L“ä`ï1âÞ²¸°[ÊÏçöqÃÀ%ú uŸ=çr_Äà ˜"¹Äa|¤Ø–Åçˆg-’.ú÷ßøF`|°å Ç ‡9hZs7@S±HØÚñ¡âá‹Èdzè›ô¦»0×i9{š[ʲÃy¹”è$6á7°yL·=h+„çþ6 y"ã'±|™ÐFØÍUÓ«Ùpn+§cî½Ù&ÎW²Õt Û@¨ª…ö!¨+9ÅBþ—Ë.`æÒuÁ°ü'”_YŽ™Ž_Á¯6ØVcõ½rô™ë©¥} ›ô䣃о®³Ž–®‡¶u&`hYo>i¬ÑkMÿŽèGšô¶ƒæ|ã†ÇºXu˜Öª ÍS¼ƒïj¾›šY/ õWLYƒåËTc3ÝFm¨v£f¢¦¾¾îŽÚ¯i§uáúÃ(Ã|õ2¸NR]TµVÍS‘ê }’®BäqòYÐ|ø'¼]§¬†A]àJøÊjø+¬PmRÍV')çÂ!ªQÊqªåúææÑ&»Ñeø®ÒµÕ¯Ös†BÃq}¤î¨ö°®‡q·e–±G[OFéÇkÌ“Íõl%ÖÏPçØì˜6³Î>[{Nþâõ÷Kù;}evÿìœ´Ž©Q©/ÄFxkÐ>!Jã_ʵïÅn'7›SèŸ ¶pZJKÌ Ž3W¹löÚ cÓüIÌV|úšÜ+}ând^›ºË4"ïaM\KM.ÃG8MñQ|*7 oê¹åé€ýeþHÙu¤àþËyÞÝ&†qÝ|¿,æ[¦\sËyG ò;ݱÈþ™çͳ¶2=3Zžè›Ú^ ¾ƒzL's׳±¢ë KÏYø4çÓˆâ×EuóödÊë;wÒb×’Ñ lyÉ)5øXÝ(E/ýO[ÀºTÿÕ´SŸ¬%LáæÿL{ÌWœ·ìFç'ç[{çg o‹'F-Ø3mŠ9ðXXÇëÝašÇÆ%h5žÇS[Ø¡@b2è½t4uˆèM]c›²§É'¤Š¾†oñ†“êïD4 ;ç\€–zžzö"÷±¾<ÀSÈžTÀû_GFÑôfr59„M~!нý±•‰ÄG’Gð"ò#[ÀšØ¼`Ûpo¹`)݈,ä&`Ix D¨â’Ø1A[Ç¿ùdàòwM8 t.ñcxXÀ$ávp &¶ßO8™0Í_ÁÖFó-„3",¥5´ŠYjóÑœ…¾Žï‰àŠÙ'üw©©èãÊ9?«…­üAÉ(¾z€¦Ò\é\ ÞÊpÎÍ©¸P;F»Ùhá¹`ç3¹®@¤;Òjþ$>œMc6’o¨U, îpïÄpá{º…®aèaÌ…ÕFÓ]˹ұוæ>áyèv¸8ßÛ/8ìßm­í´õ›yùµi´qŒ~”þ’ñ®éñ¸ 5ý¡;OÒèÔåjÙSy}ȯ™o8¡=ìQ‡‚ó³\ßEl_Ô =T¬©ÐµÐlSÇhFd¦¦†2MmUõaÝ8ÃC=«WBÌÝÍ× ˆ!U%ÈÅ‘ZµN§«RÃÊ{ÊåªÙªý°S¹AWfiêh ´UZ·.ÌxÔ¶Ù•îŠrNëYÛ,{¼­õ·e©9×`× *¯&`á,rÉíÌãLMK ‰ê8‘ߊ Ķ›õeúÀéӛϪ†•îOÔOp•Jôômà¤jSvóïü÷„Õøì”þ)1–%RÌ)ßü¯æÌ>–Ý.£Eª75-é<ýÂÛ‰j˜D'¤Ø¸M‹Ù*Уøpj7Ù7"•ÎãŽO¶ºË±ktÑü‚tOv«´eäQ#$7+k°G¼‹|ïäW¼~© ÈÅc¤—õ­í³óƒµm¯¥™©“Í騋>¬äxeþÇ’ã@]'éh±ú'!cþÛÒ¼UáëBJª—/½¿ëü¿÷—¥-ªÌí´*9±ñ[q­…®¬cÉ©dGÇKø“¥…9ÝðPõPãÑ$›Ê¬œ¸WÃ\fÛ‘2¤¿§—çîÖtõÅh‡ö„»›+]=*ŒÞõnrÛ™%Ð]k†{½7ŒºÀU±>ZͨèÕ”Dò1P©¡to{l¾Ÿ|è™é݆z1VΑcõ8ÒwØ.,àHɘÙŠNö!7ÒÕT 5† ™ÝÔMòþ?Š!žLì$~™6ÖÀbÎB®g‚ îVó‘C^ÕâMÿ>ñŽÍßVðW¸+L Ãr,è*… »X”#ù›¼t§O²ÏAoa€4Q*¸ÀO¾‘ä¦Q+v†¿…nÒu>ƒï*¬÷’p6þD0Ùrnh ún%¾‡ð\á ÄFâ`¾B< Ò°šßȯµÁ¶;WÞ±ÍÙ~Ì*¶1_"œ #¥ÃBFp½áå¼ ¸ÏL,sˆËãC¹ƒL“Eñi]e®/ž†È:d™{¥m`ðu•®HO3ô¡+Æ]ŽLņ£ô³û£cžý›¥Ê¼Õ4Ûä0e›òÍ –ƒ–sˆ}¤õ–UOU»”‰‘Ðgy tVsZ·8hwçT'U.eKX„õª6p¡ü¦ü›¢KV¸v•î¡å›£ží”q˜î‰æ‹.ÝpÕ˜iœflgŒ7¿¶–Ù§»€k§­Ž¥Ðâ·ô³·mµÈMá¦éFƒÑm7ž³ Ör“ѰÝn•œÿ‰¼Í+úèFÏwä+:‹ö¤Ù'X ŒMÕ½¡oÊqƶZ¶=¦H£ÜøÅøRÿ@ÛN×*è¯ áh¨2îmL`ÖÔ™Ûg*cÙ X ™=0Ú6;Q_Žkœ9ÊÔuÈeßí}AßÄô4~Îùä•- ù}ò¬ÛoótYKÅ™ÞvÐû“膟Á~ m‘ƒH’o$-±é‘ô$"Ýé¤l›u™òSŸOßæ‰J?\80=Q ¢M½Ž¢º’[‘¶–öJ`þŒç lÊŽ´ÞIUH8z ?Œ-r¤Û!Ç»è\ˆ–SGèBLåø®ínëÄ:‹.fê ÷Щ¾¢øâÝk–nêW:¶¬Ó>ßîIÛ÷—ð€žHÌ¡’*ò •Fn çR%ô:BL"b±£È/¬­GÞ[é¶ê–Û%ì VF`dó„h‰%£U¸nÁ~¥§0 ©wd¥%k|±Ì["Æ÷ɇQC¥.K¨`ÿVÁpÝøg`‰¸CØå·‰±~A|'n•¾ûkù+¹žTñÍäeA²eö2I¼S˜#bånëfM\ÝïÜ>Oß`w o|¿|½|å˜äYôíf•y¸ájÐ*çÛv9~ÚÏØZ[ÏXê[I£I£<_QåèJõMGeUwmmÝ_šåp,,ÀcáxÕ#Íå…^^O–·I~A=ÜÈ:O '\«Í…ææ0£ÅPËHéóƒ´ì£L¡ö[®Ež;îyŽfއÇõ§;Ôoká|æ¤Ol/l§låÖpK©é›©¡3›ŠíEšb‘>ÊC9¶9‡xùäxä¢}•)LùA¡Ú£Öª«Æ©þÖæ™ZÛ;6¸DO§³û¶c°­Ÿ®J¾">".;6JöQ¶+þÍì­Ñúèß1‡U/=…>žÂRMWu_L Sþɘ9'<±•TA•"*ilöÛ¬) ‰eÚeúžE¸‹èÏlef²v¡¾cB‹D»8Cø®±CØtâ£û—vÄäŸaúe|¤ï`Žs›a‘*J5×]­MñL0VÅÖ17åÜÒžÀ6©¹ÏdnŸ‡Æ¢ ‘ΞCÈT7f;í8ld>lîôÅâFæïT,yoê¡¥ÌþmûÊö㇎ÙsâÇ™ùå—O_8Öç@›mþ¸í÷–½e9ûŠ÷ï>Ts`ÞþÏÓ-ÕU¤âˆj”ëˆë# ò¤Lð–ó1jA“œ–ð•_FMkÁFºë_sÏwÿÖòÚÜC<8NeÒí7÷ŽØ…ÕÆËÉ\v\S9T½kH³ä8r"Ñ3;ï8›z{`´õ‘JR5v<óôź [1“÷”g8êÄfáÇ©ôê ‘‘øŸ¸ÒwŸÀ©pº¾ŸAÔÃïã(o ñbáøôü0>„7H¬¬ØXôHÝü'>'Jb[zõƒûÌYÁ´LcYñ«¸ÞïLäEÐ/¿A]ñ/ÉËOæj±´Ð‚oÉ÷& °P&Mßsƒ9…¿qà^Bí„ËÎfr~à׉zŸmεä—(Ÿ;š ÿÿÿÿ —eTUÙÆU»»ýc ¶Ž­è8JÝ€Û§ûœ}ι—†K‹ØØ( Ò&Š1æŒ9&:¶(ŠãŸOûË^k¯½Öû{Ÿß3ÍÓTê þþ˜%û*Èü(ÎÈsÙ¬‘›(|çVP«èÞ¤›˜$íß×B-?„÷çLl6ʶdžÓ#Ño6“ó(ÔÚ:(É…7ÁïáiðhÄM8踈dÀ hž wÔØ™‡kw–Ûlö¯Ö™öŽ>¶$‹Ò˜ÑL©SÔ«4Óô[õžˆ/*&ظ^¿Vó$ò'íIí)ÝDƒ^{Q­Wn=|4üWÍV£Ïò»uŠ1JçoøŸùŽy§yš©þ/u{Õ9í5sËRËLÇ8—Ÿ³—X§Ù£ëlÇmÜ!ð'W/7 MD–CŽÛ)Ç4$’È#Öá¿ÔÛW›QËyûV4Ê&ö¡÷]U†-š$­*òŒr¸r™Š6|v,B’ÿ0+¹qÜcf1Ý„ë6X®« =L!Ö&…6ÎØË<ÚÀé²l]ðÅì&‡Æ^ߢÏ';:ñfÂ\y:ËÕp‰#Ò‡ûĘg¬ÃÑÁ­$βõ`ž,ÊÝå¶ÑÁ þ¾yÉãÄDxCäòï!O ÕÒ) {0:¢Ý²åGKϪÂÝ‚£Ôáì¯é|S]¡Ì<¢ïF´tw´nsm§s(|Þ}Î}ßyÄÚÎü«¦‰2X_l׺ºc蘘9Ùù¹øÎ‡î—u«âO>¡«ˆ9¾àTþ©Éçž±¿^þµd鱓ÅUkZܽ¸[ɧâšSÛ‹»&*´~ê ‘„ú±ã6œÚÀ&A¤ðŠõ¾Ž¹Ï4#ïS3ééâ[¯¿|ÞÓKª:{“¼Z0ŽÌ†›R“y„-#!‡‘9pSœ¥¾ÑsØGLó+v1 ™?øYT.ZŽèImuùç™õöãNĽЀþ†ª=áËh­¡¯ˆOÔ?ä!ì0€î…Ã1=>𬥧3[˜ „¼òŠ9óY>Ê›….ìmÁ&ºAa±”åY}>f]ì?±n/#¼f¿ ³D3 fˆ• CŒ—^É£¼·D ¨8cšIzù¹œ'Mkücº0I|&—z’¤ò:° “j£ü£[Ç^à©;‚Yjí‰o€AâP¹ØSµX~z€•‚ŸÔ2fw„Ê}â+A‘<Í[ Æòyìhæ çi|ë%׌˥û¯¨-À%N“ÀTP*$ ƒ„ù|n'Ù„Pm¸@á§fnãÅöÑæaŽ,—Ù~ÄÑ>ˆ]G/£ÑH8 ) .RÑ]¥¹Ï:9Ï;;»GZ=úöÆP[ž¹ÖÐÂôÎö›m¦)Zó@Ѷ3ü™BV\WxTëÔÙêý¼®XÛM;_ï1|ÕƒWû4"U¥¬,TöÔ"MÀX¡>©˜¦\¬ž1XW`X¢¿¤]¥ ‹x§%MôD#§mtAºÞš2M?C•a«q¼%ßíqmro‚íÈhçÛ {»í…ï úÑþL7l¥5COë}–yîNx/zýûõv=0étYú·ö¡îxäu㤎Ònq–À–$ºëB¥ño„_èb®Ð4ê"XOjP;šÇtoE¥zw€›±Ê”ÐÄÑ £ßÄWÇíîw0yTú‹”’¤´„± A^œlA–¢kâ—Æ§D=–ºÊñ#âÍQMO›Æ{.Ø üa:8žI?Ë-={=ÕÒi™tQ ”º6ÞzâÁO¢,ƒÅ»Bsö3ûŠ1qeà?1¼dyæ?zyÒÅ!üê6 837€ÝC碋 ½Æ<Û@+ùîóSG¥«›k.4 ÿ‰Š!tx-Ræòƒ‡×É]X€{ºm®õˆ•²ÅØJ-?éîhi³43Ô]ÔK4ãuó4·T¢¢0|‰r™r_ØæÐîáµ »2T¥W/ŽX¦©0&›OŸºh]jGdMºFk¨2§›‚Œ}sM­ê¼úŠæLÄxmª¡Äb:gêfšoîb®ÓUÇ(î‡ÝÏ6TÕW“ ™£ÉÓE˜NX‡;Ý­óM¼‘4?·óî÷88AÖ#?[Æ®™>ÛZ¸× ü5éÄ-ðBÇP[?Ç-kíRGv¤a¶ÿÁ§ð^aŽxTr¿pœ0B£“ãÃã;Gë<£üÓò“¯EçFã k¶Äí—Hn&~JÕ¤ÎLê’4Û·)µ>ýJæêŒOiy©Õ¾ç>wêÈ”;1„÷}ÂëäêÔ YI™+cVR‹È¼M<Îñün!{úAíç'J¿[.Ì“f¯_¨6Ö7n€Äø¤” Ù‘+ðqçE‹Þ9Ip…™ L–‡ö5ä@a(«CÛÙÝ‘ót!TOyoêàœ°œ•kg ,~SôÓé5ã.¼8Ÿpþcõ¶ª†³ßNu®*Ÿ[¾°´°ÔXÒ¤¤MENeÒñ›gG_Öœ{ȘóÒwDÐëä/Q>[pÿ ʨ/‰¦Ôߎ”uQý3†ÞMß§v‘äQ„€SÐíø\ì#²ûŽZ Kð\|?“B´Ç.A‘ ÈaôVŠŸ$:P£èAü~,'‘!äU¦†›-Ðb0WÎE°ë©ÿ9Ú™GêGi^DŒ4¬‡àå`IôlùØE8.ç sŽy¾ÅY®š æ"ÅCÞÞÒ!U<Z í%•¦Š'åi*˜ ¹<)Þ OSÏlÙ. ò>>ŽŸÃ½á›IeÂ$~ƒ°Cë% Á®ËmžIKä‡ ¿Êøè÷üq3À„üá°Zø ^‚zv" 3IÜ3©Êó‡ÆÿÉû ]ä€à½øHl_Ê?¼W¤ÿ‰áâE±Bj*.ù$ö3ÇòÛX-{ —.KÏÄi¦ÔLä_rñ| ?”ÞK—2mr>Ó…¼„^£¾òoËéÙDjVgµšöÚ%(Ö]mÄR1ÓÚ™ã¸gÛêÞ‡'aOœ“õ¥‘嚆7ÖýæƒñJ^Ñ\‘~+¬µ¢DñZyB5H9AQ jP¿U'3/5$9ôixõÍ&ãÃ,“Âì3o57¾3ï¶.²éM"Oª6ªë")ý%ÃxC.ÓXj«¶9º97º(W‰c¿¹P©ª_~4¬U¨-ü¸²³òUøeKõŒHL«£½9VûV›£¯6ÿf‹¶u(]ƒOÍN ê<ç>äþÃuÈÕ Äƒ¨1‡€ |]ÂLdþdsÙ¨F"réüßük:—ùÈ5}¥üdfý„yÉö¤$þ”61ƒÈìžaIw¤Œ‹âðE”·lTÖ®ŒËé½3î¥U¤Kz’Èùn¥@©o’w%ÝMøœ¸=ù\’:õsnv~“uq?6„žÉĈä[J¦3¨ ewIIžÃ$¶§Š÷–Ùr}b˜x–' `—â>[äE&9¦÷[R1vMcýŒe¦‘kð´´ÅPbù!ÝËö/Ëÿ.>s,¤-m]©½_ÞxŽ>²ºë©ü Ï­­ÔGAeûKSK×Eo/ÿ£òðÉg.žšº÷öŠÑiùécÓF¦E¦õN|/w—yb½Õ íR“ãWÅìaÂì2Ý„Î'o`²ºi=é.…†bS·0‹¦BNä>š€6Eg G jh“£Þ‘ˆ´¢Äp*˜¹Áç34†%£ÙL°‚^l/6ŒûÆѵ.»ñªJqÍq O(Y7yKåºàìné×È-ÐG—DÜ'z ó¹›Üv ·G ‘;QXÈÁà¦ØÛÓGúÛsQïñH½¶˜òØåÞ y˜ËUkš+ÏŒã~b ìÞŸÊãÚ²­¸“Ü&ú\I}£òÉÔæ5{ñáQ(Ê ˆ9}@þ#N›:dYQÆ·´á™u)·„UDωÏMŸ²lå²­Ëê2we˰&Å‹7ú.&Ÿ‰Ÿ«IÜžRš §•f»Ÿ»0öàͨðMÊY‡á®AŽl×ô%h„ ¤ÓÑ&B^tqö+e ;(•Ïìê½(¦1eÎ1ú¿m/ÑNÄZÇ<ë;'ÿƒ×º" Häµû¼%að‡D6ãóßð{…PuÿTuYïâAEÍÊNמz~<ÿø½ÊÚ/ŽçO,y~L,®(~q¬ý±ˆcTxûpòáÅÏv…-[ŸXœ–³âÆÊÙãRµñ±»£ßG‘±û¤í\S6sº.Àw¡ÛÐd.¾[!p‰û'BÂÑTôZ‹DCóì«a…k-†w!)n½…Ñ/´*ÜUð?H¶—„™Åäj²%5Z¸ÍášóÙ|[áu„\€…¸öÌÚ,[ Ó+µÃ.çfiGfÆÕ5€ÞœÜIM†„ð¹§|70^¸Ë}b§‹[¼EÒ 1C*KÄ£b)¸*7‹®•—4fÊxi›èã õüp_ø§|2‹ðGA²giÔ<Ï0‘ò#”YÊðÑìKnȧÁ(P"TƒvÞØ¨Ûbk)$Êí½*¼ä2ù©<+†È­E›ÔÜsYÚ h°Néù Ÿ•Þˆ½åjq¡¤ó<œ8^T [XÕ•lJ=äï°[™bnŸ,<5Ò'錧Oô3IÃ]¤'SùDgâ ˜oT(½‚¹¥¾˜}Ä-âb™0BtŸ6\Òô²w"X¦'·›oÉf’-°J¸ʰU™·;FÀvwu…Ém.·–[¯çjªyU¶ê¹ê¥2Uá CÃÿT†¨ªÕY†›Î&¨Š\…ÛgÍMMˆi±é‚i˜iö¢Aéèî¸f*Õ´UŽœIðú$]Òfn:+ÅV§¾É¤³¶§÷9‹Ç£6Ç_NÚè«õÕûþI–¾&ý¹o~¢..+> ésBzܸ£ïFJ\Æ«U£nªsw‹ÜòÀvǶló@÷!v¸§3ËÞZi³!¨}du#œтÓs¹ŒFjO/Ößq”1—8I·Í7EÙÖK $$—ËzÎêFËqT:‘öy3t¢w•óä§’´ü.y»Ž.|~,·ä×Ò¥åKýÉÅ=Ë¢Škéò'ço;‘_^€ðìy±Á¾,8¹.éurTÖï«K–“¾ ‰o}¿¤lKèâíÈîdá“à)¶<çè¥Û„á˜ýùœ5®«†Bp%œ €>A·í“\v8¾h ²vÔ¶Xj˜`º¢kfL5ܳTbï˜ÝD0Þ¸F¯àƒ¨tKö/ZA?¦ 鹘 Ö»Ï@ÍÀâ fí‘\lÍç•»ã/â ÜÄqúwî;ŸÀOãfq¹üpW^î³_¨ÜiùèÆŸ’›Ê°hçüØÀOî-}f4ö«ëâ/¾iÌÇ:v_˯e/ ~bƒRfþå¹ËÜ~ax ¾zzz‹^>Ÿ;ÃÕR¢;½¡5îöL3¦¢ÑWÐ*¶ž@ºYt&õnkKŸÝÂÏ•‘Ûñ݈m¨é }sœu½‡ûãþØx´ †æ@ÜU¦åúXýÁFõ™¢¼&„‡ÿ¦4©ZD>1_vWá÷Ê]x'4 Âa'áÎNΦv|tl°LÔíTÝ §T%†=úºÈ³z½Éh 1ù’u]õ;#‡Ý ýO¥Ú9R¿KÛÇxÛq ꉮ@Z@›\ÑNÆi´‹\­tª§h&ê&~2Ôir•çÂÞ…ë” ª^‘…šLm–¾Ò¸Ç˜¢_¤Ù¯Ž‹¨ÐƛǸ[`?ð‡ô¡F&Dñ³@Þ …`"÷;OtD3ñ] ´£jámï–Ýk9,Æ-tc—ÄuNÏɲ®‘’ÏlÅr…ðd<óUzTêu_z¢”ôWrË”lßÄĽñ«ùü’—$ý’x"qMÒÒTrõ¨Š•ÇN$íàF!ë™–Âa.‡MÔÀzboæë-K‚Žþñj±_ПH|¶Š_Þ5µ#: M¦úÈÝÄèn;ÚB¯væ¯Èjñ€¾NíE*àEø#ñ¯„Ö«sŽVÿ¥bcɺ#ÓNÈ+˧ /œ>TԾȿt}Áúü§yËý?í0Yà<äÛûü€rûÌuVwZq8Óž>5qf⎔VËž%ùùêÓ­éÑÉÒCz¥¥fn“u8Š-AÏÃ'°,d'’‹,„¯Cp ¦‚°éC D‹°ÐGw®û/×8è°kŸí?lÚ£q…Þ‹œñD×˾×Yã¾ê„Ýh/¼¯D:“}¨üqwž@gа|ú»Ü+½Y¶oÙû¬Í)§H îĶ`Lôyf ‘"3‡wÉoäx)P¸L•Ð3Ä Â;Îà™#½jÌžÜS‘“Y¹Rº+ÅK¤Až¯â"pš¿Íßà#…©\4$E{oyUR­ÐUž=Ú;ÂsÃÛ#ª\ª^ Ÿ¤/²Q(Áð§”$JçÀK®—Æ,¦É=å1ò{°\öäx ÏxÉV7 ÂF~7¬±õ¾ÓÅb°‘‡¸2 „³uLs¦5Óä¶qü]N!ôåb_Ç>àâ@{0yEESyÄ\¢%y—I’¬ þ%éþäTì í™~ú‹%øÀ=’äj9¼¢¶âà°¼FŸŒN§C™}Ì:’pà@êî{ö/ÊóÝÛ~ëôÜQ[ƒ6¥n¼euî ÜÅë©•íRÞû§„$e%^M‹JX|UÒŽxMªôÕi~Þ~Ä|ó}ëwòšô™ûkÁ®{èlÚœ^KþE¼'5äS¼5…øQË‘±Ä ˜vûÜ îè«ë›Ñ7ן Ï öWÎÓ ÑåEŽÓ`†6–|ËC m ü‘xò,3AdùQìAöWj=:ðÙÚ@ß’ äQ*Ð_&˜aÌ:šâÉ8Gƒ+¬ŒÔÜäs£¹Í´{‰íÄer…Âa…°XÈw拸‰b°™-#·àíñeØXô9&÷ˆÞä{‚Äß#eÈ9÷Kk¥¦…ÅI #7óöÊÉ[xÙ„µE'`#©³\þ!Û@î'3¨MI\Åþ…Ï86[´†Ýꎪ9*Vµ\=LÿŸ•±ÛìMà$T¼Gô ®Ž¯dž“Ýð¯pW[GŽî7åóˆx£^ßZ]£Ü©6|0øé“ô—Lñºº°³K„V* #N",£»ÝsàVP‘ýŽqŠ%ÞÝžÈ'ÆÀ×mAúŪ‰Ê‘êSºU¦“Æ0}Ý|Õw¤ýÓì´xÍQ¦¶&µ©™i½7¸4mtÓ,ì3a?¼˜,¥ÿ£#™ã¬–«`²Vþ_±¬q³äâ·mƒÌéÖ2G¨3ÝzB³4|x𖯪:bsc·ê ™ña¨¿SIü3:%,ý^Š#±wâ’„Ç ƒ²cDŒ®÷ÂÑþ‰W%\I˜—X×ßûÉKftÌ~Ì%ƒîr'©?½®æ³½÷=O@¹^èý¦ŽYç[“Àå³Ç$“&4Ç–Ð=ô5:‚¸IZ‰Ô…½&—‰Ødì42›(&ocáŽÎÁüôDnûúÒAGÝG6ˆß°+qóùUó–¯ZuecÈžO뱕¥«£×½[¼|oö…¬©YfÖ§~ð±_½÷bóâ»úàØ½’Eq±Kâ¿ÅÇ8¤}v—¦P³ÎFƒPk3+é’  b44ÃñÄ*Ùo:NÄYmw¸ZAJ÷_Ä[÷|$ZçÎÅ^P4a±¼4(*B<¡ã•_tO4“U*¨é9QÑV±?¢ÀºÒÁ˜W¨;€¦ôd"•˜AòÐÿ̬Ai:u'î‘r<ŸËtaªèBªç5ì naŸÉöåIn OóÁ`1_œ"Kž&Òá¶ø]*‘ÂÅÑ".ƒ® #…_™PfÿŽ>³ÊSà}ìið5òZ& Ò é´xÈÓ„ÐUÄl& 7IvÚ›'¸¤ÉÙvä‚5 [!¶Oós“÷HOWË_cqÕü\0UÔƒ“bG‘œ|!¯äYvc§—Ò 5Žvò“ùMÜÁ%ôæ ™¾ì_l+¶/õÈ$‹p#ºÆŸ!û± Ä\ü_¨ê„´s×Út×Õ‚[ª—ˆCøîô9RM©ˆ t8z“8K_áçÜ7òBÀ(z?Oç3ŸÉh}gDFøñð·Š/Š:Eóˆæú¾ú`Ko{±5Û™†óì ÎÅÆQý‰½h.º[à2ý}M"–(†‡7Q95_5ášQÚ5Ú7 Š„P*ôº"'²›á¶a­u¬ó¦#ܶÂ`â­ÿÿÿ—u@–×ÛÇgÍgç옳¡ˆ<Ýu?wwÇóТ ¥bNœ]X`Íž¹Í™?uêŒ9» yyÿ<×9\çÊÏ·þ‰úI'zÂéþx`£k—cŽo3‚¡üÜÿ82\ç|£üÏü¯€V¾do”×ániÛjkæØdŸë¹ï7£iäq6ÈüÏÜ.ŸYÛ…» åh¢¼Ÿ: ÿ=BÃqf‚VÛÃô߯ïÖí6ç#t?ÄïÐW{ßâ ñZøp(-=ûSú?)'“%'6 ,æÎ+C»§J[”20µ&åIÊó„&òž¢=Tn¾\($q~+BµæÎä»@ß儨¤U‰Jà&»Â±!z˜ó¾°>xš)ðŒÆÆ ÂwÄ!r>µ~FO•b¸ýÔ(~”ôNH•±=s‹À±Lß&éî§kÞïݳ{ÐŽ¥^V*ë¯ô–@…­‹Ž.~RÚ©´¬$º_ü¤PYr¨¨Å’Í'³#²µ$–¼¼¨ôP^KÐëù͉«Ò¥ÄKÁ‹¬ÑïvbN3P‹œÀ“ÐZ7nI´îõ^Úx?bbnÅ5r¦'q ã™ÞYGúoqà@ø_j!IÉçµþgÉ6çZ1ë-ûd˯¦6±y†VîVŽÓC–å» ‚p;ÄÒ#~›Âµâó™8ú:Þ>aç2 Y’ŸÌ5bÎÑý˜;d5þ…þ‹Û)öSb¤»B¨øAÔÄul–¬—³”u‘’ªõW$ “îÈ÷"°I;¬V+U ­·L•¯Ê÷åB¹™2VÉ–æ ”EZž ª5.ÐCûŸZ&ïŽIä îÌrþ†ð­2F‰Q>(¿Ì(çT%pQé(gÉ­êíœ:Zù],’BTAñ EìkÚËLÞÉsã”2i¾T"6¬| á—ÄünH_%.Ñ{„{‚Gì.?—p€}γ[˜•ô+ºkýýTrÑ®ªòj|–‚Æã‘j{´­i!°òti®¸’ÎpÌY¶#ŒÎAK ’!¹cB?šž íðÁj©ËÜTq qÑÄo…±<¾Q|×X.¶­nœá¹~±ÔØÏ<ɳˆ€Åâ:þ9Û©"o“…øa÷÷í¾NöÉÆà ý¼øNºo ª1Ó¼Û<ܲÂ4ÖTlޱ­±=7=6±_w½unÞ;x ÍÃNâGñx¬?C„!›}¼=6„Ñþ=xl€¯ƒùàe¿ß»Öþ“£Äû hN„'Y;÷‚íÇ`Ó˜+T9Å2n©´L¥¤8–¦§1®—AíGûøþrì¶|2η[Ú›¿× :Þ¡Ç/’÷áfD[©gðú[àÉ5ÀFZ#õ»áÕÉS*ÙC“In‘¹0­ ×Ö—iïæ½£ö)N1…ƒ¹=ŒÇkŒáŠ W^$×Bº¾z‹ßÙo{zúy÷÷EÏRkª.ÓÒÒzû;MÖîæ;qÙq7móüÛc §—¿Òí¹e»éº}äæ(Ï”Pi+7ƒýBo•ú¥Î“ú°ãå«Ü}¦–mÎ>"Ï’]¸8i뤿²WùŸÅRq·àgÏI€Ü_>¢Q ài5Dm¤MЪø«T'~…Z’H%…ËTNm®ÄrfOl­’JŠö´Iˆå€tB~¨þ¸€‹²ºA.»ÄýâI’#•Ú« §™Õ‡ ¤®¼S£•ñÊAù³ÜPƒ´oE®RÌòqî “Èx9·pTÙØ'v«…¶ÂtÖIveÝl.óa#ßâ]©Xv¡°Rè+æÖû=…ýÈ Ìú9‰¬&@\Àºa«Ð^HT‚ã Jô~‰`°v@–½ 8D`Ìlö=+3Ÿ;›À÷§/¡KƒÄxúf4[Kw!×£0ÚœzÈV²·[8Ϸ凳ߠ휬î@ ³=Ö¡Û¥k [ÿÅÐÜuzÂ,^ ¿ò½¸ïéÃäCäO`¦¯x€G^ÑÛÔùZwuAuÜ,ý;ÃlK´íŠƒp~ã:äØcÕóç-¨u-ÊYâíèïöï‚ÕðEL#ß9htœÇŸbïsð'ô!â+Ñ<$ÍÆv`“‘àIÜþûþΨ—¾ÇÖgz“NÀ‡ Óލaî„‹bî“›¨Ü€ú.Ã[ W•ÎUÆl]{Ã^ g2Ä‹ú垎ðz«ýðßh– õýi¹ó_ì <±anEÎæä])ey©C¨Ì˜þ‘÷âðŸÒƒ™µ /åNÊ#e“ЇÔã¼%C(ÍÓ'%6K<‘¼ aü½m¼ç–ý­ÃF Ýé®ì&n·-Ð -Iˆ¶ZÝ€¡X_æõ ~¾Æ½äîŠ%LH[UTQž¸9z«šÏ5ºý›»¯­.?Xn,K.{^Ö»´[IBÉêâ1Kžö(`³zJj}÷ÖbGñGx_ta£G³¯Ù‘ãc _}g/_Ñßè¶ŒÝ¯¶÷¤z+üñ¾$/ìîàzé,p½uqñ¼ñ†ø.;í²yŠ©ÜÖßÌ#Më{â_ëûÛžoùoÓÐúÖY †¸¿8TWxÙaý+®e|¸kö’M—óiâ>ö~î¦ôްø¾ü{¾†?-ØygtȯfŽ1å|•ôVl$þ"ß–¯¨»ã’Š‚û°ÖOé¤þ-`ûR<.H´áê*åµX±‰Œ\‘p)±eÂíˆ:^¦\”b¥‘ŠU>¦‚ÿ%™¯%´Ip'nÓæ«QêH9]Ú¥M< vNÈ Jš¨¦hP`B O`±6JÙ'®“ßÈ‹¥ÅRz ߉ŸÆ-dC¸›Ü;ä'q‹¨%hSøé¦v6ì i§²3Ï~Fðzþ·ŠÍfZÏà“À ÿ)_¬·âŸC¾‡.x#°AtOr.U„¿õeûh$ƒxC4¦>P'éCt}‰Ø‰Õ˜§ôaÊ‹¿Á8¬£É î ÎÿÍ5e±P …+ì-4ÝùN·/ö×8¿>ÌpZ÷Ÿ¾—å¥ÃÄÔÏÓ)[œ&ö:1GÑ åçn [cÉ"|Ïcžª¿¯C ˆµ¹3ÒÕÂõ·Óè(²L7½26xôÛ ç¬A÷\ò>‚màè?˜†×à_±˜oM…Ò1T/ò9ùž~D›è{õç Ìöm!v"]à+ð@ìµ…7v,JuÀÍð à6؃ˆ¢Ð1ôzò9òvåä¼#®¡:x9¸ÌÝÂìµ´õè6ݤøC¦>®õŽPKC[¥7 ýÓ݉ŽÁ†æÑãâûsÉa¼3øoÊemsÃE žºw|hD<¢Oœ’’’¡Ñ&¥ÐÙO22”t*‹ðD™Ô^ýYYªŽRç³×‘|ºX¾hÍMBbÈ–ôJ&–¯ΞA2Ú%€ëÁ†ät²ûŒ.!Œ2”h+Á7,Z“\Ì–ê6ï_uhY͹Ÿ7.Y>¼¼¸4´ /ßXúã’±‹_,ž\0 kJ—4"X ®Á¾æc_ðØ1X¿€ýØ12û ï ´ñf˜Åź2áÛˆ¾àûÁÕK÷Y_b«±N·Ýu{Þ¸\ûgSkg¤{¼'èæ!lƒì¸ã†m¡õ|ܨÆØJëç)OOßN_‰§‹#Ü"Zß:~ôÿà¹b匞:ÆÄuˆº9gNÜ0ÇÏV¬›Ë|$‹ÉOHù~—™%+IÊ\e˜8\´q>á„‹1üB>(ì×+©ª^iªhró„ɦ@¨<[ùFù*›•ÞböŽx[ûÜ®NVUåº:OKS-ÚפíÉ;zjÏ´£õv*“•<Ŭå$•$N˜˜£éµZS¥µd—d±H®Òh{ƒ‘Á^ª¸¨ZÕnÚ´„݉µ§ò}ñ…T­X”Írs¹ƒF°Ø °Šï¢J¸uüYî ׂ{Îìbæ1ÛhöÕ5F?PÏšÎé?š/YÃÝ­‘'t*·KX'×É|[r5´ÃµÅQëÇiìL¾€9FY/éï»Ù=ÓžcÙo‹³7³Î6LÔ-Я0·ôvè]O¼/€sà{h ¼&‡PA‡ÑX•ý™åÙv̪³-ã@a–T)U‹üIª-ZßÅ÷Ð2{§~#‡²Ut¹;=¾ãÞÆàTäOø²éya_IìÆ¿!žãu8FCޏ9׃ó€?-­tWã#õ#u“uI¦÷¸R,sl‹óGct±â$+… Ö~§~ÒŸšýãä[?žš°xæõ¨ƒžRù ö«Ú.ø%ãEÁ¸ì“Jwv-ftø,·üÚµc èNd*xPMä«”kêñ¹TªÒšAUƒïaÁÃÚOÚåÀ£„®Ú¿Êuñ’T¬^IœŸ0 á«fW’ëÙ—ÈåÚuU–piª’­¶TYåšÜM]¤uWëdA U'É[øzÕ¡þ&—JËå„úÌx½½Z¡^x!&ƒFïqç>àcØÜ6ºœ!Ì‘{*³U@î,ä0ÍÙl,%Â&PöïñBŽ*»ÞãõÅU0ƒÑ¥Ø!¼ˆü–‰fÿÖq[˜CÔeFÌ ¾ÓÈwt&}—ÞÀEòñlO*€d~ÏDŸnƒ·`ê„#Ü+ú]ÆØéÏt—Lo‚¾³Â†cºWñ_t¥†,ãfsÀçT=ó|µP æ…pWüB·A6ø²Ü~g‰ë4xœc;2%0ì¼i9e¼h~j¯1u4̳&;,¦“ºIºå¦>ήaÞÞ°ÊGšáÉä=j:3žû•»ÁdÐ÷©6ô*Hm ã™ÏìÏÂCy©ê–ã¹1äHx)°ÞCÑ8YI,es_ëù2HìBÎúöÕ³Ò1ÇxÇt÷`8ô=ìÁBH/¹–œHwæ«… f&øó€TO¸µþ¾ŽÙ:e ¯˜ßùØdŒ¯wÜÜÈi‘söÏð¶À:¸êôä‚'sÏEòóÏÏ‹.²¦>‰ßÿD¤¾M òQè@¢€š? b·ÁVþlÿY¢©ú]òÈ@—Â6ávŠÕ¹R%}käïGÜãÜ }&ÂÂlþëEÐII}+çÖt¨ÉÚ;|ohõùƒo¼Úá®ô­¹¢niþ²¸òñ%½ ­K¯”oYz®x_ÒRf.Ù%yê2%W&FQ±Ëð\ô.àMÈøLöSŽö€Æ!}á:ä !à±Ðnÿ,[­©ÂØÙ2Üô»•r”ÚÎÆúb9£×qÞ©º›ú½Ø&j šî÷xwx1o?`«ë¢}’½©²·qnqõq×yx*O €bÇaû.S@i[a=i9Ý=t`èë°ÝóÏÆ°Ôx–£ Wàd2×ßÎĆÉ$ª/»Z Øý´“ÊŒ’Vhµ iÒd¶Ž¿!LcWâçÈáT„0’­ÌLÒÌ<àº? sù{\[(¼<Š]Ú ­’Ó••Ú,-2©SróL¹ †È;•%.Ñü¤µ”2êû­@Þ¥‚‰—’.+]‡tKD–;Í?—ìê7Š&5ÿÃDEì(^p y« òiܺŸÐ~±a¶Ïÿƒs¿i¸³#¸¹‹?f_ò¤Æj´úTKÕÖH'¸D†®çÏÛt’\ÿ×1Àc×gsÝ7¼‹†aºzN+ Épæ+ñ]…îü;v"£‘<IÇ×3K¸l6…YÅüHýH¬ÇkQ ¾í©tõòüâOÂcØÝlz=‘ŸçÍ\¡ð‡ôPHs@¥ñ»øÖñUº0Ã#b|`ô™~6,Ô³\ð±ÌXz+V¥úPGŒm•; Ú€6ÄZÂ5þ£®qºþq-õtïãCÍq6½±ÖRnáÀ½¨÷;ÎÛðƒ=«ØBºŠ©­§ÞÕYÏý õ–¸@Ì&½Ä$<߈?¥& •õZ–ôŠéJ½E€ç…w¯?¬û’W¹£ÂXÎ@Ú‘!¾Áž2×+ãd½×zÇwjþ‘ä÷Twi{Š;SL]£Þ¦ûù¼}p3:Ëø8f”þ¦ùzýˆðlåú ±ü:xv|ï¨=Ë#£´ö5!¢ÔÚF–!è1bùꛈJÐi~KÂä¤/â<è¹…pôwþa3ÚN;ÖùNCåè6²ŽxÂ&ɽåþ¼¬ )aûÐCàMÐ곚éäúi~ж… H9B K žøª™C¥Û·}Ù±cù^=b'¼qÝÚó+SW™–M[Ò.i g·/1•¯ø¡4/ýfîî^Fø¨VÔKd"rÚO`ãÙø”ÃÑÇØì?tBA¡‰ñx}|ýœ¢¾›‘u=pýcœ5¾ ¯æ.ô{÷ãíè÷ô~~„4žÏ!ÛA=}wØŸpºKun÷\ôôvmt=!-crIGfã’}“¾…õ†5Ý|nÁíȾá¹áÝ"›Gm‰.‰y§+Ñ?6µõ ¾þ¾÷-7 ~l@øäß°S¹›<.žÚ׫ÍvL‹sÄFÂ5~-{›;¯çþGØ¡Õ@²ï T€’pà ã¦á“y„·. Æ ÑZËàÍÀCõ¡úVÝ.ßæpUâ·òîù=uò_p-¶©îjàúñ÷‘Èåäfjý”ÓK½ÄRo5OZLo¦wÓ¿SÇè>½Hm' â– ½òwóMv÷·N3‡Øÿó=ħ1¿r#uºÜLy®„ËoÄùi¯kÿ9~™~©áoó‹bZd¸¨¢¯5µtÉÀ-,Ï„núOzpg–sŒï*ÔåšæÑ ƹ1„ć˜&z«üv_3ïBÏ_9Ô šê_ ž‚A¼‚é#LWú6 ŸCMe TU½ û†b©|ò[,jŒ<$CùmR™ÜLœBûQ 4pœ7^²D8¯ù>£ßјêVëßé›R?á» y*áx{â"µ“›È®`$=Í^üë"C~]æ×” ©s²…¬y‰–à¼99G*!‰'S[dÈHM»$~‹†ƒ·QK*Ñ ÿ¯Ægª›´ÈÄÉíÓÖ¤ðñâj¦–¸¡€Á‡ÌSˆñœ²O³EÅRsÅð aœõ}Á^ã_‰áü}ù¡hÆ£©êzž€©4x+Ðé¾¼cÿ¼L­‘bØ1Äy¢ŽK*Ð/Éc+þ¬òï{½/o¼mÜêEKg/+(O,›^Ð]8äo©,ÌÚ–þ2±µÒ=¤ûÌsü0$&´’áO€¯’ˆXÂGaÓà]à!ø'¸ÃjÑ[pø£§¡C¶´¶üæ¼ênïŒòÜ…ûcáuF¦rÑÂmº%?˜ïÂïe¾£o£¡Þ6žÃ.Æê(sþíô9†¹ÖC»/~V˜!sû@û8OŽq—þLÔÌȳaC#Ë#*~ÚÞzÎsK£ºÇå˜Nšï¹?y)_Ç=_!R„À[b<©á˨"ªû”[Á•ó¹Ü©J$ö.­¨p•¶M™J*‚šKåãs‘'hÿ÷ß"Z’fâ,’ ‡tÄË«K³%I²³3¸Á|Cé¹ôTÁ´6r† ›ø¿¥Nrµ4DŽV‰Eâm¡—°‘cï1<ÙP_¡M°%èr{Ç^ÛËÏ„éô3eÝï<¤øK}߸Ÿ;ö9ÛxëüÉøOÜ ét`Ppv@y©œW:«×ÄsÂWy…²Y˜Âjxüì „€Q0V_u:œÉàû²ènL€»&½QÞn¤^K½ ¯WpM™Uì!È^!€JŸÕ;ÊïÜjëgéi 1q&-©eò5mJ€Ss”Nr$ÿ…¿K,tÌŽ³Å~m£Ë45¯¶MLˬ—L¿êëtµ†å.¸æŸçø· A!ÈC⎥3½ß×Ç_1œp}Òðöd~¼à 3R›P'±ŽyÀ›…ŸÙõg/‡u#j‰×Ä ò/r;•C®C5¢DÐ}yšó°‰ÓàYŸÝóºA—o¸ëh f ­ñ„›XŒý½ñwCEò ÖFá ¼ŠÇ‘Ư¨Áq™Ž¼1¹ÕÙ½òŸ,.-ׂê„öÂŽâ‰ÇH(¼Ç·~ˆ¥1 ïâºó“Ä\ùƒÚ*án˜€ ¹šºÄh|{ŠÞeûü¸pN°]±¤ÙNÖSÃd»ËrÄ9k,íW¯*£Õ¥ê¿ /ÕqñØ%{tüƒØºØ4ÝvÓ¿–F–ÖéŽß½ ³›ÍbîfieÃÜMÀ+°y ýå ÷Èþ\<ƒ{)ÔÐC‘Ùþ[žÇ¾2Œ§g1ßÓk°»P9ÔÎ@懘HAëÄ{üwT <ŽF]=F Mñ‰„ ߎ®z»Z{— èZ:‡…þéßö†`ÏPæ:íßÿ…nÆáaD?ò±Ï!žÒ‘Lu’˜A|¡þ¤Ú(åTgæüS®,4¹GêÌìϹï[¼:¯{vYþêEââGƒóÖfíK+H~ò,³e®!çÛܹ'ræOÏWå:Òžh¯”¦í‰§R{eõN-R:0›á•øv®BÐóÃÒ7¦T’W ©ÑÛÍŸüœ¹)ˆ]-Í€/‚3qœÂTp{„-üÿÿÿ —utW†Ð‚»§Å¡¸·lv“µ¬ÎŽ»ÏìÎJŒIžàZ\‚Cð@q(VŠKp ¥hùöÌ3çž;çÞó{ßçA}1ÞI‘nñQÜt¾)¿‹ÝYš^ÌÔäi© ±ÍEYI'|uo÷ BuຮA–bsmw+h |ÃSÛý*é” °Ä:¾jèØøëxQ7*®MÌß1ítWbƵKxgžštÕöÌùƵ×ñÍ–»Î{êÃ`KfB‡€N޳Îk)8Ðó(½x9”?€º•Ó/Ø…Ö1]™§ä[ W‡èƒcÖûî°)¹¥ÿ= *±Ž¶TYÊ-ÞºÐÖÓ½•H=éÆ;౺àCw¤ç –M¯¦'À§~Éž–õÞñ¾~ja?$êñ e³ I…Nì:&•Ç׫ۼ9êcõ ÚL °?…ßÝf8jžƒXÑ\r-Ó¿ÏÑ&Ôln4ß•_Ï4#–à­™\Ne )Ã[3¯±™úÜ;¾†ø'·FðzÓ|³½‡ÔL©ß‚ŵâ0i™ï^Úœ#¹æ¦L!CËHËšŸu9Ý™ÖiƬىó^ÅÍ)ž11µAZUæ¤õgìš‘Ó/çaîèüÛyöÜ}yÍ &æ¬H©‘lò͉մf¡-äø) û=òFa:ª›´ÃÞÌox9ŠªFN`ó£¸ãELÇÓ˜»D[“Î$o D!ï16™ÇPâ?ÜCnÓ-kϽK2«•Zv~Üíz÷ûåÇ–8–jóÒSñ<µ[rjÿ©ã”X¥×x@.¤‡±?óv¢,âóÅŸ–¬ƒ=Ä–£5aÕ™MÁ“ßðñX_B"éÐ×[w6ˆ£ÑFž([?ìYKþ‡‰¿ z.Ž«Eã(B\X Váî ÜqçyÈfø z­ê¡*´9•• ø:»oÂ9ž®Î=ŽëŽ žúà…ÄjúIú Æ(£dXH×%Þ牨{w?~AbiÂĦ†—†¯‰£Í ŒÃ®⬟ ûŸÅçÅõŸV-þ¯øßõéè®Ô‰¹ÓÙÛb5Ükîç<‹åyŸá{§Ž¶} í%?DOȃk]­#]ËÜ@4VýÊíãæsc˜î\ŠÔS®%ŽßI%Ìx¾»¸p”M¤À®mŽþvŠ@FkAœó0ïÉtšJzù±œ­Ìõ批yôI|)À†×囘(¦‘ÎÏVïùJ¾À´@o­‰ïŠ7Ú7Ó—æKöFø(m¹¶Ì«SëË %XHæÚswùVb‰2ÖWÍß9p#t4e]ª˜ú2ôÎßѿܷ_Ù$W i=o'÷£R r«ž$è„@á7`ðs Dá;Ø(9S¹/E*ëü\JxO.œcc 8¢l_’Ú:Ë=O±—äDòñ5€ §±÷èXr#PVßô\F+YX2(ƒÕƒ¾-¾Î2&|‹+¸Ælon¶8J9*7W·z¿{Wùî«‹”•òxq;ßL`¹jÌòòÔƒ5P™*¦7×)\Ì’jðåôNÒJ´¡)ž£…çl{Œ,ïLT_LÞe_±ÏI#ÓYä_°ø+äsün)õ ­‚íh;*»§Æ¦YÒžA HoÛ'›Ì˜mŸyfN‡¢ˆ¹\gp‰ԌֳÜο˜——;aæ•‚‹3/æ]˜Ù¡`EfJª;ù“6]yÇ‹ àµÁAi]Rã…:¸nAʨâ{Z£ÜQoÈAîÓ…;,<•%,ÏО{w‘Q\æôœtÀ¿Ol, ¥àU\ ­‹‚Éõ¸«è|™x/ÀÏô›w'½—ØW¼9®d×Òé‹ÿ7gSÚZ!N`Õ ö¡»J®5ÓƒØEަÛ1%ÜögÀ'Ò˜SÌ&‰ªE¡Ÿ“‰‹Ã{³á7P[ðhŒSgbk–`ð¹H.>L˜,:ø"þ([É™ùzô%b2ÐÊyÛ¾ÉSo„.Cv÷$°¸>>ðôAþ‚¾ UD@¬Ÿÿ{ÚF÷çžΩöþžyÎHËCS¦Ëˆ¿ßT¿N-ž‹?¿_Ÿ¤o ¢ël©k·:nÓ4O|…~¸®Ü@C¼IµTkÄ¿‡ jÂ$Ã]}jb‰¾…uOµ&dÆ›öÎ0Úý@ÜB¯2µL’¸3a`Òzp©s›Ýd¯:‚6ç"ggp-œ,Ãò°O˜Jºˆ(ty—p»°ÖÔö*ÙÝsÛ¦¸ë`ù¸„œ‡¿c¿ƒ üâ‘îHZ‚vÁ:!JžŠ:©LŽP X“ËýWÕ ê5¡=ó…ÙÎ9¤Âh.‡©к6„蔽o¾š^§·§_ˆöµ–o)#÷ýí·´*¢T—/‹äÏJ’|]n¨UʃóCé©Yé;Ò¤P‚ÖÑ[.ÿ"ÇK·ùÝüX&„¶ð< §ÇO*عŽk8NFÿ;ØÆ¼+Ô<í±wœ:Ä?)ÔÚ÷‘)rONzl»em&{C`§»6W'þ#¼d!}…ºLFÝpšxMlÃŽ£f\À—oi+?XüIº'}}¿zyyp–ÂñJz©8S¦&û$íßUoŒw¤ê•{¹ ¼ÈFPEÄx©œöDa.l-äÇ|ü8©—I dCúg>[8Êv`*è×4Îõe6+œ`çãäQâ:ŒøÙÞÿ>u9…1ÓT[r1à:j,2Qî,è$òØÒ~Õ”<#ãsnÔœçóý…·³rS›¢2ò jÌý6'4«UÞ©üUwòÛ穹LvùtK›z+e}Jõ@UðpòxïOÞ–ÁªÀ=aWƒi-nðŽr®Rë)ñÂL6È}â‚b7d5y™NöÿE£½=C üæzø¯Z²fy´4GXÇÏç[ŠÅã==·ùö ‡‡—GÜ·¯ÉÖ9¥µ‹'.¾”ß[«`n¨Ñé@ú«àZ¾< Aýnú㤋~GO§Þb ØuòÍÒOéºÂRþ"yö@7ѽÌs´akáúÅsÍ ¬u½ð,Á~p—x¿P¡8Ä—”‡)e ¦œ¬ZË“θ‹ =:þÙsÆyÂÝÆZ N††CÓ!´CeP–g3Va_`í‹S>t5¸Þ¹Èp,nûĘ©¿M+‹û×0FÆ7Ö3z¯Þ—°)!Vÿ.þ´n‹.NLØžÁÖú\]G݃ø³ N³ÑØÚ ¬ ÍMfCÿÄ#úÞ‰ÛôƘã?O&ÿsÓpÜœagìšÐ(Ü ÍM=“Z»ZN&-·uœs.r/´žòô¶ÂõñçD$1 -C÷‚Öþº°ŸÃYäÅ[ƒá<|y¿A”aÏx›.œFä¬À>´ñ˜:Ê,’oxË”ÖÊ‚ðTU¥ÔM) ý¨T«I#åQªÏÇ+õÄZr‘¿2/ú{Vùã´þþµêh_”ÖÌë–SUHåà¯ðÇkå¾KÊù®ï”¶!ÌœÇ}&ÿ)¿ÈIyœv&d Üõ¶'ŸÂ'°“ÙuT\îDºÛuÀàz¬5á–ÐQà6ÅôÇK3Õõ²BªõÔºJWz¦ã€y[Òû*Û%Çmp¸ lŒ±äxê݃ñÐ¥Ô5r9q‰ø•œN~&õ´‡üDeN2IlW%”(¼ÏÕFrs±×’[,¤‰Ò/òõ¸Uñ:_~¯v‘žrø—L¹oF\ÁWƒ«¡ÃØ!ð½³âfqé_a½˜ºÍä -Ä?™ª%#1—éÔYr‘‹~ÆvR™Dí‹Þ"ªøaj©XJ^CF#™ø2†(Dz‚ÙöyÅo«moga,¥öåÎPC^ógÍXRXšgÅ*ÕT«Ú(íÞÌØ‚3<™LVßÜâü3‚Y»“-ɧÒÌÿËZ™éOwdžJ¦Ý–¯‰‹ÈB&];ãKŸûÏüsê%³˜­Ï½å^òã„á7áH†w‘^ßVj¸e˸ó\×”>‚Ýê¢3=ùõÜ~ –M%Îvîýplî!úÀ̃÷®Ú³ºyñÄE#f÷ð_ò®J®N¦”ñ H€Äˆ1D[¬ª’=© xÑ›B¬¡ßM¸ërŽè'ë›°?ȶì'"ªï­v`(@G< ¡æÈ4< ÷ÑͱNøyü6ñ…Ööƒæ8{ ¤¹t®$÷#À FÀ­ÀáÖ °ü:ŸÁ,¢Ö0Ézè<81Û™câFî+ºîJÅÒvf »†žA†G,Ò›A\p­sõÄeê ƒJ™¾ƒÚDßPÿ/þäЭ0Î éCÁõ¾“$æH›ä 1W Ê3R&õßô·÷ÃZtà–¬‰Z¤vÊ£õói>Ú›¯ŠêoªK5{Ëhð}ÀØâç´Z‹@õ”ìà¯O ),w‘KALÛ„½O-@û‚Én‹ýº£§k¬çôöÝŽ¬†ݱî~è|².];+ŒŒb}™—· ±¶3Ö)¶]Ö’¤žN“ÛžG^`µŒ®d0vö3zFÌ%–ÐÕ…+ÂaŽ ³ßoÌa¦œc…ëB™Ô_i§´‘>Jg•êù£4N¢ì¿ é¿‘¾øº%_!tçKÂd9˜´Ð1Œ‘êE­ [pB#¶qÕT¿\›9Gù¸ñ‰ðMcž1O™×ôVzýœjžôQL?:›X‹`ðaâ<3”ùŽÝõäÕPy‚(ÇૻЯØm\ÃtHÔ‰êËé9ä@4^E-Ы.Ŵɰ7±µØqÜt ¡“Éoºgp%Ü ¹„.¦ÑWq?E\§npGù|gIT@!“z‹ºé<ö°Ø8œŠ[ÅÖò嫲Å©‡½ÝýÓ”kËBrSö¥Y“åÀ–ðMÍ iÁCþá¾;2#Éü|¦±TÓ»ÇGû(Í€;ð¿ÀÂ0/Žô?Ð^ú®ùôZT`|°¥¿LY&&HÛ×çÿ;´*ùß ï7†ù'* ØJæOn¸°žy†.„ö£E(‰•’§ˆXW$Õâ­nÓ(ãflýaÑ[D[ —ê|œ4ÔúÜ=‹Èå|)SL—r9âïÒOâSºÌ½Á($Þ3·³ج–5Ö¥ÖIG\x¨ƒþA-£VOÐèò€.‘窀<”b^1ÝÄ»òDù¤<Æ7ÀgV#¼ÿSŸHõ¤SR?e½BÊ”XB½CsðWx:íÚ óØ&Ü$þ_&ޕ䩒N®”¿‰µÄÝR-®¶›ƒoEÏv&›éÉ fÆ2ýØÑ\:ýÆ—©dz\xîîÓ‹¹í‚]ÜÁ}¤W2g˜&|÷ž:DüI>"!|4Úç™Qî s¶á’naƒ±»)2Qoüh§À–f1c2 šæi*VxË‘þIã¨}ÂÿîÀ×dgæÇ¬µ©»Rgå˜9+§YfeîÊ9£g%ÏŒ*øžóeú.Zi*4½CFý¬ÈìYxF|Ú P†õ4ÌèÄ+Úiùz(Þ€ì3Ëõ©WhjJõôt°æ#KCèœ~ -ß¼±ÁÞçûÇï6W¥ÎÔbÙŽÂù.;ÿß@º‘³é'ÜaæKØ à÷nà2o©È Æ«ÈÞüXö-Y‹¹MŸÆ2<€« êRzâ4ô4s=Í¡¸ \å:æùzÙ CZ£ïcSÀFPÝD6ÇA/€ðmèg$í‰ÀÜäh¢|Z‹¥cC°ÏuÇïñÄ÷˜î1?Ö£·&ö4ýmìb4›u–…‰²~qì ý}C¤e‘—:Û¡í¨7ä "ëŒÖC§ÂØrh¾ë'{_{oûqˆÀTê Þ /¡«Ñëé|¦ÂÀeÐ@(èyµÂFy„@ì!ꣷ¬õ•Yöè^ôyZåt¼‡›Ì-ç|+>†mÌÃüg¡T^£Þ÷ýäðõö.õ/Ð$?ºp¨QòkõQ`vðG  pPû¡¢þ:ÁÉC‰áo´w’ª¢¿;°Áhm<…¸ˆÄ;j' %X®Ba{}Ì™ø7Ügú_¢2Ì•ÕQj]iÅluÌÃõî8W\Û°_ Û Œñй±Í™ø×„)£/ÄÜ7DÙÛáC³ ‚]yØ7}lê'ïNïÒ´ˆ¬eÉq©_r~Îß•³iúêÔoÙyCgžŸ)ç—çåÎøU*¤f»gï™Õ.¿Npv¨mêž@š#pìKj‚ââeøNl)¡S‰#t9]H\±n2^ߊS{ÏÊ^9|Ó±ƒWÊãvNÚßí·ÜB:uNò­ô¢BíÌòø]‚¡ZÒWènÜz*…!ˆ? PÛã‡ýàDÏÞàõé|¡•´]Ñ]7ØÌ˜I4nN5V™Z:ï%%ºßÀ¿bC=€ºH%²æÇÀÐ8Gs”ý¶{Çø˜Ýtæ×[lÏÍ¡ sô3Ò„8#Ñ^Ø*¢&ɬ$Yœëh‚+b²EÜs.$(œ‡;Å]¦ðÑB„J{Ö*·•3Þ?µÚ ï y‘ã_XêŸúOèOå×Iy é‚…¾ÞYZ”ÆúSƒ‚]ƒý‚}´µÞê6±3T\í}é­ô5ôÆ©|„Ó;×çÒ&j'||ô^ס¾Q^»” 'jÅ¡Ö>¨½×^+ŸÄ|R´ÁMOÁôÐ Àçþ 5Ç&Ñ‹+†Ákcö÷Ök¤ù‹)˲ÝüÒ\Ózź )ÉzÒTn»ˆÕîK}‰‚P9’]‡s¶³ž±ìt¼u=¢=Mœ’tÖ»–¶IfûeçY ÅððIÀ5Á-Ìö9Ý“ÙÍ8hµ„È­—¾É%R©øB,e¡ƒpŠïË'…-PåÜ~¾™É¿·(]}E¾Kê!©Œ_&Ì*¹ÅÌ)ú:]‡ýÊ~ ^£kIÈÇ!KC‡‚vä‰ëÙ›t1=—ªAlÃZã,¦GÓ°®ä|ê1Ó†Ëæx® »"üüÅæqfæDÎBi}j|h´&fÇ·‹{«£ 9ºƒ13â ÓöÄGqñS¨ ì˜ë2ôkà«ÂàДŒáé«åo½´{!’«†R¥Ì&Á ¾ºé÷rºäuÍíšmϼ™ýdV³Y}f 9ãsÎè˜w½ ×,±`n~a6¥vÈiû’þr>œÍl_)í„Zh4|᣸Ãx"t ªH›/ ,ž~%»ñüÁ«Ælò(ò^ðÀšMu6ßZ8}Võór¥ßðVç$MEÒ“éËäLr.}Ÿ.g£[ÉÀil1VŠB8‡ëð7„›©ÅLfÚ3wÙ³Ì-Š&âuÉÚ4‚~ÂxSä=| 9Jl¦2’ë,Mºnëå˜Nw%Û^ÙÙ¤Ò¤ç6î9Žéð›è4)…?Á)ðwŠç²k·t.±¿pÜ\Rmãckëß–HËi³dZf~š¸/±•©¦e…eyÒP‹9éÿÿÿ —etTg…q-„àBq+”"¡h)¡èDF¯»ûXfâ ”! Dq ”BqŠ{¡PÜ5¸—¾Y÷×ûãÞ»Ö{ö>ÏÞ¹¦Å ',‰¶ýæ*ká¨o‡§D …}–ƒ<…öà-¡qæA@ ÿ«åo‘/éÖÂ"áÑÊX©/t.3’Þ@G<% ˜ëì@n>‚}N'÷Òƒˆ/ØÕÜ þ$ÿ‰Oc{°WÙz\?]Þ£Ö)‚n×þ§?PÝŠK™&5vHaäìïêéì¯Òå³1ÊùD»¢Ydžjœ3¸ç¹Ž;cý‚:P\ÆÞ@MÓ»©EJ;Ù¢lR=â%©BÞ­}çì¨?SwéaΠέ™‚û:Z™ÃmÀCÊÌÆÓ«©…d>^‹D‚?R€>G‡ ÓÑrì#Þ…ìN•ѯ˜m,-tÆÐÏ!kGãøuô æEºß嘀‡ß«Z…‡E×Ú¦$œŽàg»ç·5±çq}’æO-­Ìªe†™GFë÷SR™jלÿSÖñ¬§kÖÓìu™xª=õß,gIa¹+3Ò{&)Õ7Äÿ)¥0usæ œzY €%•ßÅÌod U'îtþ¾zì±å[ó e—Åp´ ›èþÊXp`ѵÂ×eÇ×ÛöÛó®l{‰Xú¹xtþ—œMiý-o…Tkö:ÓŽ¬A²ZÌ'3ñÄk¨Ø±Ol%^B{à{°ªÀKÈ'Ì,1œïO#¾â'0H,[‚8 ™Pc'ò†\@#·-?š"b^˜{€^ ›½ý¾£Ü¶,a–# ò“‡¥qñÜï8hfí—h±ÿi_g/²r z,ó<êʬÎçL¥f Ö“õWôô˜^q|…’$þJg“Eô.éŸÉl¾‰XÁ¢L,ó†NgE¾@:!ž‘[JN±Bé(·—㄃Ì3ºTx­¼•Þó=Å$öô1ú1y€Máb…©â\ága»ÔÛÈ4Ž)›¤%üYîº0A©ÑnåÎ÷nѵNo¨Ÿ5®ºŸ¸mîÿœ·ŒõÎE†×rurÚm•¬]‘Ìühñ´’%w–]òÿd“:Fë¦Pé€ã w¾Ûk|çôx]ž m¢ôN8"Î3åáÊ5qŽüT¾ÀŃÿ&î†#ÈñT/"‰€§#Ï¡;ÈYèc¢ËtØ„Çm5µˆ/0÷IÛ0¦m¬7¶¿išÉë56‹0Kw‹GÅUb/q‘°R™¨žd%èA|T|™U°·ü’Xnb:_h«sœ´Î°ÆYi[¸ âì{°2ª˜'¥|&íMnå“„.•¾Ež`?ñ©¬‰²‘í©hê#]Ç~a'²wèjÆ&L×c¯’%¾ò ¹pö%Ó‹éD×R 5†Ì&݉(²¹ƒ.EÛR6&v“oÐuP[p&ð ðúоA®°™‰ï%zPm™dvŠ`u»S/ «j:] †;ûRv[µðÎkö_6z‰Uô’e3—¨‡„ƒ†å©ÎGé«~u/7˜Í†…ÛΈý|ñNA0˜óLk9^é#V:ƒS΄SC}a¾Ðä¹óOÿœ—ž´Lïèì®_2{§Y3³³@t$ñ„nÌŽGšÁ)t9Öõc2è¼ =·¾&áȱä$â3ꀜÂ;ßÞÅMVÓ Ë'U†,Ý^ôßocç{-T"/\ŸU™´^#ÁoàX@s½iåå‚É}È>ä4zÛ‡ìBçàÑ)Ð3{ÐfÝ ,¤¿puôVb*Öƒ¸‰l·aèW4 B* ú^‹üCwa¦@Ýv9þzì¶öý–m¶˜ÊŽ‹µÿÍH›WéœfÛN˜_$4À9Ç0° Á³0JŠÞ2{Ï/UEQk£‚çn ωŽNèJ±¦˜‡™¬ƒÍâ'î‰kbzSEF®‹ÙmY]æ¦K÷ä:y¡²C^']——(_ ?1­Œ™Ç%b–A–;qgL >Ë Ç0Ç¿ÖÌÄv ›‹,Ϭ_¬'mÐ ™F‚üq#׉šÆô–ÆI“ùN,Φð›ÄkbcîYM”Rsø4ù¾ô™ïÂÔ§Eî{9HÛ+ÇO¹ ¬N%ûÉr6¹”œJÔnòùµ’.fÿàýüv¶%›ÉNåZ°]È®ˆÎEß”4kž‡¾Aváv2<ðf ÍÚ%ÙÿÛRO2K(ò^q—þót+³è?é"ú6dTeÞ̈JkœŠd$f‘Bú¡ÔFÉw‹¿GöûÉÕ•)Œþíò•d-OÕEÜgþ£|XqÈíÜ«“.ûƒ’Þ:Û;KœyIcüÓk3—w„B3õ’Ëâ]é]ì÷pïeÞ½ÆÿF<@ž%ûO%Aû¨†3]iðKr?9®£â©6DyÈW¼sý€µVÒ5i5Ë-%Y…¯ “O.©+¸² .s¦Ž÷‰\Nß#B‰SÔú8Îûi¢H?U/¢Z‘Ô E]`,ò˜:Ç98ê@¶$òñ?П ;ŽXDÇkOëð ##°jÜŒ'Û±dÇQ[™ù‡(>Ên¿.ˆ÷Æ–(Z-gdúâˆÙ–‰¶:`'„p?ûAëû¸„¸gÑ|d£¹§çTÿሂcûE»M®&þŒeVTŽ)YR•×0ÍìY§š°ÝØßÔet#\›ðíp6âGws‚Àp)L Åç¦ÚTx,~‘\bs¾?cbçpK„ÊÕ%îç÷ðc…Lþ ¿M¬i¹Xþ]«gDI{Ž#Äùµ¼VúC>(ç ¹×ìB®#O0ŸžãåÅúBù?MXð¯ïuí1F8“\{]?9+Œ÷zKgGW¥vMî¢í1ª<·<Õ®\½±ÞC9%ÿ&£RC¾³›ºO— ”‹ÎÓî8g„ö»øR°Ë™J­ª ~Q Ó©}Ô:1µqÂHq¬0ŠÏ$UØ€W#­‘f袔aÙ‰Ä9ð8 >D΢`/lC†X÷XrÌ´ùUÜ€„&<&,fHÔê¹ö¨i±‡â‡Ä9ú=JŸ¥g«µþjµÐlýMXlˆi£)%.5Öeê—8ÚêµÊs­ÛÍÙ–·ñVÓÁøhÛJëÛu¨>“Nb› '¥nÊù–ØŒ‡Y™û^¬‘XA`aîM`Ÿ5Sbäcb ÎŒæ&‹{ë?î!]C¦Áx}" ߌjXOê.-Ñ(u”ØEœ£WІjUω¿³æ*û‰íFG$Ù˜´c°,C¸H/©cý±`ê7Š$Ÿ §gÜEÛ÷`ÐXŸ¨éu¾¾x*`ü“Ô4ã`ÖåÔ`ßH??å‹ôÕù7¤Ô&áÆW›’º`vá¥Ô ‚€v%½õwu®P{{ùoz¿8Û¹ <ÕÞ6žݬµ1ÖªŸ•—¾ÊäƒêU²’|'ôÕ×ë¬6X+ÂD“ûï !©ƒ°EÊö¬uþíH~#æµß¥ñ&.‡YÄ.'Û«r|•{6¤Õ†¬7¯°~âúˆTÉ–‚NÅo 7ä·Î~”åJÿšdÒú#ÀHl6Ù‚, fs³˜Õœ• §7½¨,ª’:Eƒôr6‰á¤?ÞòQŠ„TD; ³¥ØEÀzÐ L# mƒÿ b/B–‘_#‡Çoµß»™_Y;ßÃ3È–ê|a%z!QN”Ðñ„ˆÌ´¥G>{5§hî§ÈÙs|áofWF~ÝÕTèù±šCÐíÌî‚K~Ï»ðŸäDïLf žÁö‘˜‡ø.ü6»'a³™Ò±¸œ}Ž® ‘oéFB¶Ö\$”?`Ü>öWA•ÝÊAAç¦òã¥òsѬõ×n)í”+ÆX5Eîȧp#ùúz‹4W¨æËùÿq¹¬ÂgR?ðŠ¡Z‘s„Ü€ñ0#Åiªd(n§þ·ü—þ¯ÑÑHÓzj/‹½´óJŠÞÏYçÄ]í¼íIòj äÉÉRsö'²!Ù™$ù ½Â³Ó[èœ.ßÍ’,Œ®òƒ¥5j¢¶Eá”ÙJ¦XØ U<肋ED2Ö ûm†®Gú¡ID߯€¬Wíß#P ¶åÐ?…曉­ã•„þ =L@ô¦¨¼¨’È“ÅÑ"Ê"YX~ n`Æ#ýŒþP®Öªûä¿ñlj7b:GoŽÊˆºðfófÇï ¿ï;T›`欄ֶJÇ Ýú›}‚`ad7Sª”j8žÎ£n7‰uä ò©RÏÙýbN¦}ôP¢1ç¹_9˜~@W°Ý¸ö¬ADa+ÐEŽ.ÅöÛén5Ào£ß‘ç˜3\ {€D'R=éAÌR²‰Òש%Ä|ÜE“çé"&”ú‡ZËNáK¨%d y£ röåôKW{­GõÇd4I:À ”÷ú«3»åŽŸ7+kKò>ßïOJÒœô×Ù`úÏ+£ØŸS[Åd3Ï‘¯*ã.5nû×.X¹èSzuJ×ì蔉žõF˜Ü(ä[‰™0ö.˜kÍoL|–*vçˆ)b{¹³êò´u®b"”?|?zg¹ÂŒ\^Ä_A×éÃB °çØñâgßÄ‚ŠÕó7ü©=¹þЦ«c–SÚ¦xÙâ¥EKóZúž¦i‹|¢ê%c ì.’g±‹d%u“þÂG3ψ.ØXâ9Þ‡^ņ²û‚(#óÉî$‚ï >cNd,6Œ¦°Ópoû3û!° ‰-Äuô?â)“‡øaÌ+³?ârì][+ü[[‰iYÂh*Ò P>Þ'¡…c t ´ÿ97xö¾_[Fni3%zlÔ¾¨~&wÜ1‹KĶÑMD»óìBËò%›²yzÓj Ÿ‹évó'3§ˆEØÄ8ú»ƒ=!Ü‹ˆ5䪽•(´’/ò‡x¯awÓEâ(}šÌò¡ôî')Mì)[äBuµ2Pi £ÆN¥TŒæÿþ{zT'©“PŸ,LdK†oÃ'ò]ø¤À÷Ƴ'™ÁLª8UEkÜaÆŸÊuíAhó$Rªg¼ð>p×:Ÿ;CÕÆW¾ Ô—‹>ñ­Ô@Þ Ìg–1Œš#6uE{׸£,Ðö†9ªÿI'Å<¥³6H[%o–»ÈÄ \g.íÊn¦^ºRÛ@7 Åú£ÐßÁB8åÑ뎖DK[ËûIh2 á¨tãM¦á ãFž‹zu6ry´?v¥É³!êk|#f²¶Gãì¢T–Ê>P›*õ¨…Öqˆitì±ßÄtˆæâ–A ( ÏG:ë[#`Ÿ#ì ‰ÐgxêÇBQïÈíƒÑ‡à h0ØX®¿ƒ¨3¼Ý÷# W¶ à'b —ÏcLKú={NË_"÷"Q`5p®ÃúǨj¦rðx|™I­$÷bYÄö3”z€3ð&PÅÏR8ý ³“jAóvñžäg(õ_ø9´âŒJò“s°Ù>-u˜ö—œ—I.ø7§Üã\á”õ,‹Ë)Îý’5/í¡¿Ï‘z*;(/(s¥‹R1=Û{1¥©ßPÿ0å£:È=i^—ªëËCçgY²¤œw~Q³õ“úvYâß°9lçs\ÕiÕÙÝŒ‹Hr•Êà–òß1^fÒJ¦"Œ»êj5Nb¾ºŽôÃJé±xl õ‡ÀøÚ÷Å+éÉÄtv:1ã_,ïãûÚ¦À° ¶ø˜hâý½†½ÅSðÃ`¸¹Cü ø,àÕ9úÁÜË·L]bì±»ã›Zhdtœh/ø]Ý]©®.®Óû澞÷*9-·g:ý(f¿xK¥:.MøJ¶}ʧ×3½„8y·\@~$Ãét¦§ðmØ«b…ÐQøÄ¬Ä·òÁúIµŠïÍ>£¾¡0î“p_ì"}‘šRý]僕Z²„rñ±8P ’&r<›,•oòa| ÎÇ`k¸â)„ŸÃ‹¹rG-Âh­_×Ru—s¦WJ9Fº»»;Íù·ÞÖyÙ…%‰I/ëržðB˜$îã?‘ÑO˜Ä.Sîº&8múXý†1ÙíÞ¯aâM¹­Vª2ºé÷TE>Æ“ÄOøOx9±”¬ ÒˆHì²KÆ;BÁvÀ1ªqÄØ»Yw$†ØfØ[€Íjk¾åE™8¯ù†¹G|÷ئ1—c¦šÒÌ·Ì!ñÇ¢s£ŸXë˜[ŠbÔ©e¢]¤urºXKF‚/-Ý,=,_ÍK_Û@` ܹtÛã€öð$d¨x6e°v6‰@ár 9Ô ÂmÿY^Ú\öfvÚú‡…¶õÜÀ ‡LÛè„ ¸8ËUð®(z]ª‰ºM]æ\|8Û? _ »Ñ|1Ч¿‘³¨7T)-0w¨ñÔI¦!ŸLn·[-“,yÀWª±2Tc¥oå!®¹¾ŸüÍüߥ¤¥„êøzÞ–9“Rpµ:}qÁ4ÿ-gá¼ÚÜyi¿º–»ÏÜš³5íIZ÷Ü‚yKsô”'Þ¤ä é›2F'/J2¹¦jGù$f¸üN Ó•·É?ì]Ò§”+œ·>ý¶ÿ¢ñ¹ô1ÊE¹ ÅÒÂeŒ'Ã{ÝwdÁŒE”»#Ò(ÅÂè|â6:‘\E}!û "™èËŽã§Šø+T9ŸiËÞã_è•IÏ(»P3rÅ5ÓªF——uY:£,¬4¤ÔRvb©mþPo×ý³sä$21Øóüif N"o©DvWC& ×Ð+h1‰Œ%»Û ÷À%g³‘D†ÿFÑ~,5a]‰‹H%Õ„ñx >‹ø™ßg¡,ØÚj¿â˜tp´Á/’ >‘üÿOB¦@­÷ ?9‰ý•º‹¶óìuÖûqâfšš’cú›ÎÛ¾R6å†ßå5’Ù<ÂE÷ri\ÿ^nh?a2Ãed`n´êPáKùÛü5í[Mà/™«Ì  íMZ ¼–.r˜h¡±qZ“•×ìZŠÇëóMEP ‘œ,]æ‹í%Mð_øFRµÔZΖ¯‹vñ€V§uË蟘¡dK)}õ)Z­Ø‡í*,–"õ'Úí}»qÞù‡;Ï8®ï2†;õõ›Z#Â}Ð=AÿEk%F²áÜÌÀJ@r‘ ¬¡¾4RµI,ÿ¨7òÌt?U?(¨VO÷è ®#îÆÎå&~@'¢ñè܃¿CJ‘áÐ{5dÅgB•¶à~è)ø(³o4ŸIÈsü‚*ðy`•ãšÝcÿ 0öwqïcæÇ¦ÅÏK¸§&ž‰í1÷Cø‡˜±È)aº¼†›Ï†‹˜öJÛ-”Wá—Às‹’䤜Ø+är ^ðW¨Ü½GÅð£¹ß˜³xH¶á–·–ï¬]íuÀph/ðÔQ`ojmc rtCæÂÀëÐZÇ„ø±3M mhWe¯G|«˜F|ßšÙDt†W;.£[ñëÈU²WÍneßróø;”…Š l³?˜ZàRüˆ¨¦q?Á¥F½Œœ´¢¤¾‹©Zš;%Öÿ2)Éå”—©xÒIg8w_Ø•ãõ¥üž7,cvúñô>iÓ3ÇçDflM©Èøœ·/+Ì·Þó­gPR¹oµ—ôÎ µ·ø£Ø@©Ôrø¾ô’!+.~1ïIf[¿)¹Å‚ó_yLêFé”pG®UiívFE.œ±6+4WK1;cÄd=eŒÏ¢öÚËTz%áe·s÷E«þU^L÷gFINî½`ÓÒRåC–ŠK”Ý+iYr¼$²´OÙì’ý¥AC –$e ”åêéYŽ·cyAüSLAè&| eãrƒÉ`2ƒ˜Š%_ EÎåÎKš&í•5ýöJâMxsì3_-Ðë+!ÒßÒs5ÒÄt.„æC8¯R©ŽR'‹O¸§¢$6MbW’׋!²5ÓPì¡XD‡ì–ÛȲ”.~¤Ý\’@‹‚ôYI×_*Åüq¥NC…ïYýÀ=R¾Ña}²@ g³»%Y›a˜œ§áÞìîî½ëiìr:'Oõ³º _…~S½¬ÈÊOÒSá(oá—°k°AÐ÷àeºƒA¸¿:SÔb™Öë»óÜÿïô|£¾««;×äâ•Õür4Å š;Èì” ´·±ÑV xbßäHëP· oÁª@Æžfï C§à`Ä ÿ´F?"mà2s¡©ØtÄ7/¾`‚IÓ‡¹£ŽÛ_råJa†8\ììátIM™sØxò ]Duç^ÒÍñÝØ9r6¹í« §“¸žür¼ÀqÉÜ;q†å°å”­4ÍAºÎGúà ¡gÐ.¤9Öó s¬OôxÏÅ`¤>: ;Iôㆋ‡ù§ô%t,þNúÎ5ËUé¼­÷“–òÉ¢K=êÊó”{¸›à‡:ìÞ¬™Àá¹»WÖÜ#iMRÇeá™GS'+Ƀ’im„ÜGv¨tÒu&98;mžšI&—¦îKŸrËïKá’&{‹¼Sï¥}ñõLžrÐûg™ºSR?¨ˆÊ©Í5³ rUh>ß!uÓ‚Ÿ‹{äVeßÔ‹<£òerÍñ<ôÝõuò#I´')ùPÆùŒ²ŒéiÇ|YÞŸ]ƒ]ã½3œ©Ðj-/±sð•HïE ýäT¹¾`Ƚ<Ãç™ËÖWT•Ý(Þ¿¸ýâ ‹+_-ª*èZ4µð}¡;¯ƒB°/ø÷ª!—3Íé&\,"VÑ÷È«'´¤Os‡˜xj:LÅà…8Lœ#†ã¨b58@ż%²úÝá²4NHˆ Kˆ²ÖCE:„ÛÅ F–X9b! ÙgýËâ›Á} ÷ÐXEçy€ÞA4†KІxO"ïDå1Éj›Ê.ƒ·8ÒáÇ ŽlŲ™ÚÓìêù…4Oå¤Sîdÿ2í.¿Zì'6¯ øCd}2ý,5Ujµ§Ò1y§ÜGþYXÃäpQt„%«â^ö9ÕŽOR…þJ¼Mè/ –H5_€ÅPñoæ Ïø|5ŸÍY„ñ*§=ÓsåH¡NÈ·ˆƒÄ#œÀ¿(‰R¿Q !I<$eÿ¡Ó$ÔhïœçœkÔÓ뜷ÝN«RUµB[£ÒXý¶D-QVËkÄa+'5È} >‹©œÖ;aÆDgš§™·‘g…k™«¹1ÕÝÌ{ÍCºŽ«:‰Y!K ƒÿÿÿ˜ut”GÛÆqww—„ Ü!x!¾ò¸Ë<¾šlt7Ù8  Å¥-®!@qw‡â).-”"¥ß~gþ›3sΜ¹çº~×=‡±JÂEü —£sÑtZ Íß!£ˆ·Ä6B JùÜDòоøil: mŒuÃe_³.6%î}|[3‹Ñ :ÎⳌEgÊ-M'ªbÛã,tžÒ«ƒÚLOÒþcé†ÜÆ[b#1@¾ ³h•¸‡6Fƒ‰w Ï % ·¬åÖ¦VÂjÀ<*aÿÃmˆÛÈW$ðÓÙ´…8 H3jý|G^a®s¾‘pLpÙ|o‹%ŸÌÊœ.åÉUîÛÞ?½9b2«Ž%Ú›ÚÑ£Rÿ—{Ö»_Ý•49|„0¦pFŒé)ùYãݳœ'<ýûszúd¤'q¿6LúsW™·2ÿZц•y—²ýéL"éÕíçjÎcŽÀÂÖ“šbÒtǬ!IwíõÁ¼ßH[c{aq¾´ÿ¦Œd¦(“.©(=_p,tÏnߣ»gºçIb‹´w]})¾GiM<7гQê4ÿ$ïþ”†žvI)ž>zcRÛk»D™ÿ 4Uöiÿ‚¿ø7"cÜÐ^³a ·³€_Úµ¬Í²Ë‹O/i¿táâÂEeÅ=Šo.jSr½ÈšÖÁئâv ×ÖÚ ì!b+٠v$väVÐ+™&ÌQê6q‘ÛÄàž ²œÎífv²Ë„¹øØ±q^ýˆIQuãRáoŒI‰QÍÊa?r&ÁŠÜÅ*à'h•tÁ¦§èê>’‚?cŠØ/üú@ þ»”ÙÀHL9¹œýÊvá†ó8*¾eq¥Â5ã«ó‡Ü^NÔÙ'‡ô=Ȱ¡No‘Z¤½Ä·±+…Þbké%8+÷’ÞXž¦ðÆ[_m§ZG¹úŠ]Á[pĨkô9 .µ’ i—TGž©ÖV~ȧ¤ÝÒ6éŠÔZ)S"•;òK1—žÇLâv€À¼¦=ÐkiCÔuÚz­¡"Jͤݢ"ÁR õ½>H{*ï—[É#…§\œrSml¬´gôßl'>öB[ñUòæÛhsµ Gˆýµ-ÒP´Nj´¼_Ì ŽÀí :Oìãl÷lM!‰ãR®x–»Ë]/í#l¨c—ÛæúÛ“œ>ÙøÅ²'nô~õÀžàÍÐZèxŒF§ ã­=Íß-™H!Ú‰Àèot$‘×ÁJð|rnAËp~iÖ‡’c‘è®±É iȼœÌüPB#K ¾Ešh79¶Ù+ßÝs“žÛ¾€×ÌGl2Ôjâ—ÖPËX$”8NÔ!n¡·\ôC{!½‡UbË‘|8‰ß#~ï‹Þ@¾a½ñöÄW|.t îCwfg1ûé5|±xP-ÕTÞ‰Ó…â¿R¨Z©èò…²W·ßÖ)Ç•¤“ž8Onb<Œ °ÍñN¿csgW‚CfPFÞœ*ÑŒ•Ò7[lfQöììrÿ™´~î,·–~03*/ª8¿˜Zøoî»l2£ØÑDêIÿ†åcÄRäê¼z³kE!>ÇŒç.Æùû Ñè]lS*þe››¼Æá~ãlæNX%<¥_¸öcoLQ'Ýï¼á¹ë™ç ö4H}êýîž~Ò.f–‹Ëº“õÔû4$vq-#ÖÂÙZèȯ§wèf †ô„òÕñnl=›I£8ˆêk‡} 9–­¸¸¼ZÙ“²·Ëç/7-¦K7•.ŽÉ[œ伕ÔÊ»>eˆí h * 1h.6â éCôæ•P*,¦ÎÂU 5Y‚ÏüL¯b×ñ-µºR}aÛŽk+NàÆX«¢^ÅÖ€¿â¢~˜!Ág/’U~&u 60ŸñËD}êuœØL)Ôêq™~Ã÷ŽÊ¹Úã±êyRš<[ÙÁæÚðŸøj Ÿâ—³¥0u½¸=«{IZòIð³Êi=µ‘z펭ÔÖÈøËv2)W/TãR…< ˵ÃÚq%<­¤#ò­@ýGý¦|­¸±ÜG¾V—h\.“\à¾ÜEy,¯TšÊ5¤‡`&ØJå½þ\‰”4ºœ#¥ZŠCª%p0,°§TÎÇøï X¥º PÌQC•½ TLuÄ“Ì0ñ˜lUƒŠÛf,¶m5¦ØUj®ÐTй±t»Qü,%(]tQõË/€“Ï'z£Õð»ô! µ%»v8ƒY®ÑÉzr¥k„-Hi¦†Ø®ÚûÙû§W/H[|QOÆß@Û¡åÈ_xáGÁv’sˆ»ÈVS{k;x\€.!›’$¾?IgCØ6Ø}ó6è8¶û€w@F˜7X#­.(“p2 ·’iDø ƈ»\–ÚÐþ‡£Ëဤë´;‹ŽÆ8túƒÔ@â?p˜\CðØ.èwëph6…fãøôÒ ;K&0ÿPÝÉe¸Œå¢G¡9–VHG¼>ö¯¢/ð>ùO)”›Bµd|ü9á+—ÂÒü[©½ÜO(¡_²ÁŸà«2Ýkd‹tyš¤bîyXwÓC¾1!i`¾7gòzÌçß,>9<9á–m“«Zbõ4SÆï?Ùã³êzêyÊ’w$¥¤µÎÌÏÜ›éȾ]ø{^|*ånÀ‰ø:«N8:ÿà¼ïs@äyb8óšúIâcéÝâSnµ€½ª¼±ÿp­J¾iÇõIk7ÜZ{¡öæð¤Uü ccÒƒ¤ŽÇމu2’ §çm[ÆÁ÷9fúºä´É¼èqÎæ:±§DØb&YŸ¡á\¡&ãáÖ³13ûTZ¨´a2!K‘z§ /œ¹Ä»8½xî²î+R—¯(9[˜7&¿OÖ÷ýä‹‹J·-bÒMB4—¦©uÔÂDò"q†ØÃMö°·Wp /é5äYâ.ù˜ªàƨNµez²-Á0ÍÔEG"ÑT(𩹱"e¨:„œNFâfü!±ŸyÎ.aîr+zÍägsWøìSv*¿Q™¬z䉒jèšzCü]¼$þ NjÏmŸ‡ô.Z/ù@bŒK|ª†;ƒ Q©TTýÑÐV¤÷W‡ê§å¯ ­8ôô¿Zj%„s-„; Ì k8pÅ%yù>",ô7Kí”óÊ#©µ0U,•È¢¶X”ÚJ±ÔTê'Gʔ崜%g»ò^M׺*(8Æp—ÀK©¦tR<)¹ååJ¹j=ù­à±V.o‰oÀw^dÖ²ãZÊSG¨ÃT¿:S ÑÖËmø¯ ÂŒÂ7Z$Ó ¤!'‰gÀVðߌÿ½ˆÅ¡Ó‰yôf᫽ÐÝ#©Ÿ»£ë²»º»§Ëe_%c’ÓØbÕ͉ZI›…­l?So°XbÙ.¢0b'Êöc1|rß|JÃ}h&ÚŠ¨KAD4ÍÞ-\‘‰Ã6b-qšÉ'àsÉÖÄC¬ ÕŠéÈõb&{^° ù—²ƒúz¾½¦½@oéìb;'“=ЉX^ †bo0 «CT1d|@së±ðëp¸.~œGºñÏØ]¢sƒ“¹ÑÔâ€>ãŸe0´‰˜D>&JصBkÇ|ÒßJ¬‰×d& ‡Ám©³ô@ü¸ÁsN`¶òCŒw•«¡û¸{bâ}OíŒÞYjv¹ó" ÀÛÌ´´’µyðґ1}ú… š1xõ„ŽtÏô·™£2_¦ã¾zÙ²„ԪĎ޶é;²Od^ʸæ–ß%«C¡ÉÈó($rEô˜7æJsÔ–yÉþÇ’Ž©g8;çËìº:dQÕ-²–اºçÚУðÿLµÈ{X?.Zïc·8ZÚ±ÿê|ìžê­™¾£Ãþœ7¸©e§nNýÙÕÁu‰íÂÃâXå=#akØq„þA^ÊI‘~êƒRº2„`Ì@í½WÌl–í)9µà{/ ±¨Þ\ 0Œ‹–RôfºxÄÅJ‘tT…UŽÝúõ_ñiŒü·Zn;š&$î½Ô­Z¸^`o«ÇIë¹ç¤Èí›/ò/À 6‰VñWæ5dLSî*KäÝ *p'ûÅU ÔF#Ùx™·‚°wzh%úý±äÑÒà•4Y©œQ[«‚d€‹`¬&­eâmÐB·jí¥éÒ-µ¿"êÍõSÒiîgÐN=*u@¹¼lå·‰Õ¤#Ò,ù¼¸QÀ÷ö2½ÉJ| vúû0ªÞ|ÍtšÀ&ÓͨZäè°yaü1Ó'l0"n´}p}t·s'¹ªœ«Ž¶%Ò>Ð9p •ëBGö:ˆlɨÌt*˜ÙÄ–Ò‘t.„Ép„å|Â!ëb¤ Þœ^KÿA¶ LTwbª3÷éìhb<6‘Ú¦Ðat ¶ã§ÚSYôhf YmaigañxæpÀý¬@ýÄ;²3N ˆèR¨Ü{„ªðadù‚Š"ãaø-l6¿ˆÿB ZAD0u”œO+ÌHG7Â'¬s,´󙎧Ûs‡](÷@©Ëø+Ô;a¶ü—ý ë¦í‚¸‚ë(ÈÛ–¤ öÿì™þ(ùeâØ¤©ù~[n¶wVb¬{›Û柘«Ùã?êÚ7®ÿø¡u¸>1€¬ÜìÞs^Ùß1;/=Ñ• ú \òŸYù^%#.óaæjï’D=&zoôË'¸.椺Ð-è×|¥2Ù¹Ã=ҽ¹ÈÖváÎÓò>“Vó%¡½Mªî6+¬È´G“Ý“˜Ž©I®—6¿jÕ.é‘vZÏ%Ë¢©˜á3“&_ŸÒ~~'ªP+µo6(w±_¸˜ôùóL‡¸å€ó¦Ë°=Ö¦Šßè>ØØ¯rO°mÄNìz1I’q69¸˜)«µüŸ¢cÙéyù‹rІˆEAe{WÄ/«é¯P¶€Zâ*f·ƒA¢ÂiþØoÂHަ¯cH ´ RŒÖÀW§+6à§°eä8&ý5þT´aÙuŦ'h1Ë{¤=ŸB,Àwâ>ÒÏ×àcè2º3s„)¡«èè@ÇP± ž%4r´†â& 4 Ð'ôÿ‰¦+cP{3ãÔT1I"@Ä uaâX£#Ó¶©>Õ­> ÐÑÆš¹éLÃÅWÒN±…x‹ßÃÿŒ—N(eüi—’,7ˆ”ø?ðŸpZªTÂXVäYòK©P¤U\ê5V¹ ¼U,’/È¥@N±èFü;à'_Ä›²WÂ,Ÿ(®–Eý§ÀyN€Pé¸b”‰Úµ¡ 6È7Á8Ѐ·òfƃ-5sf3t:³=â{xiÄ{Ómò)9†8‰(ÈMx²õyüKÓ#l6ÕQ©pÍq‡9¿8Z:‹mÛ ^ë$I íçÝÑ.Ú¨Å΂[žc+˜Þ\º6Õ„®O?¢B©Ä:¼’ø¨Í]Ë è(¼ŒxNÜÆ‹ˆÄ&4^JlºñðËÈl.A´#°£ªÛCe§ñ·™qd5ô$ZN`ØIx?ÖšþA¤…°Ç…)˜ Ï€2ál<Ýf`ÍFan%{Q-ÈÍÔR$>…¸ûŠV"°¯dsò v †z'¬±ì¢¦³µ˜×XUÂû¨âù¶ùçÌÙÔ?âi[„ç\Jc÷$n,ƒ×"Ÿ‹'¶ËÛU0:»SV°wVZyj¯Ôû¾Zù yg3û'+Žyö(•â~Jø8)uصCf ɼjôìyýõʬ1þiY ³7emL}fÏxO]ÇŸîžÎ­é5sSòùÜÉ;ÈE³ï.ÿID²ÃÁd=GÙ%sú¼us&gó6H®é_³ªú½ðY“ÁþîžèùÅq•h¹[~oú¶„ÓÆ´ÔÊÒâèí(¶ÿ£ŒA ð°ÙÁjOå§t›ï–7Ù)ßyMèÊtµ Žù)z0®;$¯L:ŸÔ×ñA/fÄ1TÛ­UW7óû ¿©{B1~Í36g%––•¢ÅOóãŠ?-ý¶dØ¢Ó‹î”ýºY‘–»=­uJ+ÇᮟJ³B8¿Î¥—WéÁ|὇ÞO%Só¸rî=S›ýÀìa¯°ÙÂú!q7¶$Šá 9?ædÀ}O’QôP¢%E!IØ}à¹æäd±®ô™¶PaD_dƒ©*ò'ÓCi³:Y¨âŸ é’,QÛ€ÉÒÏÊw9OIÓ_Œ]únÝlhÆc²>SŠ–¾)%H û„|#±ŸX"Tç:ž=ÀïæÂÉìDѤZáòUnoÈwÅEÂu¡‘Gë»÷¶ ­•rOÞ"÷UZ+uÅQÒweÚ4“'+uäå|K¦J΀¥@é*M¿Šõå:r†L+÷¥a?“[‚5œº¬ÈYÊmi,ø.–J¥ žÂáLIZzÆ]™š@@›­ÅqÑÑÝbVBKE»X/XVÂaÖçÖŽæÅÈ$²‘–ä’]…öû{][°V ¿;ðœö—û™û°ý©1S=BÕ„Cš±h2‘N…r/‰ð:$Ÿ0 >Õ+:ÈJt?rm­†ºZ1¸G#Ÿ™rzŒ>Åžak h)¾•xJÌ!kÓg™O v"y…¿BBºä¨ÃT5òw$ºiM€®¢ñ={á‰pŠ9ÓôØd²Z Oð^l~‡Gwð”'.À»¬÷­³Ý!“ÁxKt"Ú+¡"꼇Ow1»æpW´FQjG’ó„ÚR]èz¬ÔCšÇ¦Í›Aø]nï™ì¬Ü œÕþß|Ò^¥~ô™rŠ|+\§ä? ÕsÕWŸÛs„}ÈÃŽ†>ú-øSˆ'f‚ÉÜèk“]åÍr‡;iÝOu äÝjL…ëaÖªlk®?g[â22Ô<“XOSK™HéêPCîiƒÓ‚ü²Æ&M‘¢õç‰øÎæAÜÑ«\%ŽËz‚».ëOˆÇ%>»ó“'Þp¿u™\§Ü{¨4î?ÿûÔê“®LX6í’)” n2ˆd¯v±’=%<±¿IìáºìHRö%‚Ÿ‡@‰ØÝ>ÒV*ôaOQ£È!„ïÎÿ’:·° øSqób®¤bÙûe©‹ÈEJw.›Wdä´X¾zyê+eºzO —2d—2Z׳õ'òNæ—C:‰ñ|}^#AXÑŽ¨ÍE‚©ô´›urC×qÕçÃɶdCè õ<¿ŒèCXgâ rÁÚ¢­!ÈE“/úht÷(WƒnÊ·¤ÚÐÿãGIÝÕ³òéœÔO署´-úF[‰s¹}¯1ÁQåþɵN5‹„ÒáPSª+¨ì0úon¯|« 5²9EU’ˆÇÂgu¸áTt9R:£¶RÏH‚Pl!•Èwl]œ³»6M9)…Jå+ò#ðŒ_#ŽP·¨smk”úÒÿÄ*î±ÜY/’Çh7l›ýÔH!”K8(–j/9Cê)÷`®Tø(xÁ{QVˆ/Å4q³ðšæ÷ÑuèTúò-îR4ÝÏMǯ ÇÌæR(#‘­ðtËÒø­–Ö›ðõèy2O9í˜åœ·-]+W» ×ÈÏL„‘èrŸµ r˜ø½žèA¦B¨Óè}ÔDêd ¤ZÌTÁ¥–*çé¬V«BÊ-áñmLáðZôgò?&‹þªg݆¬Ç\ð>hÔÍÃv}ÌóR™õÄ äL,"~Á3ÉNô1¡á?‰ð؃žGšACàÿ rB$ÔÞŒ4Áúc˱uÄr£²w©ŽhL&ºàû°·Ô:ò#þ„8@íbLÌq1È‘—<ÀD;eF|l¢ý·Ká®Ì†ÎÎ~©Û]_…upYL ó)æ¡Ñ2Ùîk–·¸ðbáËœˆôŽž)ii¾µ¾{©#ݼí­ÓšöÞÓÀ4(ôÒà7ƒ²Nüeh»qûÍ3“|£¼ãÜíH´w³u±´mµ½Q»òi£˜Çm/ ½Ø j&Jÿɬ`ãWááÜn®§ ‹”OÊã…òÿ?“ÔsRŠ´@ê`Y5ý¸¾ÒµÜöY~,Í–Nƒ=R_¹“Ä=øN*jƒl@±J3ÄýB[õ„£=QŸ½íÿ*kDJ,=çS„kÚêTyžàfg1N~¶¸Ì·Å‹üệ|‹¯D· ½1{e‰‹×”,˜µÅ&C·Ìçâšþ¶ Ð<ˆ4oJŽî` …ª ÃÇ3M¶û5ûxç4ûxƒT>q`í¶ý‰­K4YÜHþ„_¡há)¿—ÙLÞÅñ‘ŒôÇ‹ÑH¢>ƒQ)Xül32]‰Œ1ý_׺®Zhz+<Z ÿŠÇâà÷ªʵ¥Ÿa>4­‡†N"—©^L"™Crl9 3£‰1X1öÆ,+Ì>ëUìjtkkèT ;Q£q’H¢«Øå¢71ì z;9Ž1²þK¨l8%¯–ß׺ëÚÏè£zòÖÌ›Þõ‰[»?Š›Ð&x¾P›Û Õ‹Úgn]d.Äßað·l3êr˜JX¬~b‹ÇQøy\¶50:/ïºØ•Ù?*ûnÞz÷Ù¦ƒÕ A¹et2bõ)ÊDÉ,Üan1˜dKÜ0§C³™†äcÓIø=ˆ~KÅQÏÉáØur>sï÷à“piBÄÂo ëP0œ χÊã..ˆ™•éI˜gþnoÒ¢v…ÇÍï¶`Z\#ó(ª-òÒfýJ‡Ë?ÄÒêMe›ãªÓì’ì­ŒúkýˆÑWÛ¨Ñz?­™¼Yê-ÕG‹v±)?‹>Ç©dWŒ¥/°˜ 6A)POŠÃ€_=§Ü’D)KÔÞJ¾zRÙ'Qh[õNÆn} ÒH= od6ü%IOÅ`”¥T×Ú+]ù³|ð+í´ú Q_+ýÕ[J†!ÿX5C}`,T>2/éöì þwaU Ùnòç˜ÎÄ xš¥•é–å¹ ´Ýt-~VÔŘ¶æ æ™ Ú¶$øMŸÌëþŽžÇ[ë! ‘³‰ïfx­ƒ;ÉùІœå‹®‹­©[x “aLu¾Õ{Ë}˜3ôæ'*’jÈ'p?ã;ˆÆÌB9ì"2Z€`Ò,À+ñaø*töhy—÷,á<’NMaRÉ¡„›0ˆâú'ZƒÏu›s툛ŒÜD?À+ázDC"ïK¦.’éølè(¾ké»+ú·Øãæ^–v–&ÖÖS¦ýæ$x&:•ê´a„vÂ7>LoøëÜÔ9×¼p!Dh'’¦Û’DQÀ+˜_‰×áæTá[3àÂÛþŽÙFáÝÂa™ÅF!9 pI‚ÛíØê,IÜžÚ9«FîSÿߣŒïçÌ­×_?s„÷ÿÿÿ —exS€E‹}@q§ha0´P¼B=çFoìæºD›¤i\š6uZ¤Ðw(CŠ6†Ãp00øú÷ü=Ï{ÞóNp/ò¨jT¥¦<ª‚ªy¼¼u™Ì×`Èì2ÜÌ›deY´Ærªœ®$o!_4Cà›ÊáÚ銀ä¹:[kS« ]ð|>b‚ÚZíTø;Ó~TlKgIQ©Œ¨½j–ü…$AJË«e»Å³ÁWâ³¢"œ3$·‘•ÎjfiE|ñ6™O±Ü£qÁQhâ„>ZÿQÿÚÊqÿë|gØGŸÂbõ™TÕŒ ÐS›ˆ'C±7°Ža™Èní%õH {ð1Æ×†©ÔI¢±Û§û†¾¥»ÚSqôz.C=#?g©gôÜMnÃOâ{p3%$?â\|=ñ$¨4êwr/™Lð¨iÄlr2ö ]H!t„*4´¢5úñä7¼Žø¦3ñÄYø’†.Áfa32R£VQGƒÝA³”#Ï” ¤'%?IïIò€ÃÂ2>Ìñq0A`®xÀæ\ä<”²Ÿä÷%äÝA²FE)óÞåãæ7Æã)æ>:IóYÙjC•èC„‚ ƒ›UÅå’P'l4O›®Ë†CA¨¿æ€ú¸úõåyªâ¨b›Q]ÓÊ´_•xœ§î ™¡Úx¨VKj^«Ï¨ëÔQP Æ¡ðrhšz²V±RÒ$¦¤?J·HvÊæ(´’‰ ³¸^Ú (åÎÈUdi³­ÙX×”€â k@æ,«dü™¬38™ÑÚà …í`.’„n•TŸõ)u¸ˆEáöMÞöÁ†À‘«ùeñÙ˲‹SŸ.²±¬(/¯9¿"HÇ¿/rÍW…~ÕÄ32S 9†¤-~Ç>wŽ÷§›g Gå=ï%}íkƒ+‚[õØð~÷wo¦|Ê¢„ž ¿¥ì—µ¡wÄ`[[×Vï±Ðâ²;å¸éèdÜ»ñµãzÆ9&¿Ìaž(òwq°-©6ÚÒ*OîéŽ-ä{.;Æ:¿º$®J×ÔÀì‰E­ŠÒƒ¼>_Qc¹¹\|ìË 5Ɔìþ>ÆÍ+hð|å^­oZàªï ?>|¶øQ°°¶¸©ìe«‹u!fçïç†D’-­é:8—ühzª_ªè•ÞeÕ6£wÔÅRîSaƒbžª£®=jvÇ–&QÀ.¹©óÃoàËZL§ª3dŰÔ&ý(íþ¤úm€mº-Z®ú ø²D+Ö-†:jߪ§j&Á¦Æ¬-ÄQßRvƒR8'º$IµçM¢…±ÂW²1Ê­à=éIÞAÎxN;_Äeòƒ‘À;ý.vUÆ òŠGí“:š5%Ùm²/ˆèÿq/´öUJ3V$÷Q¼uŸ*¹VÒªBP1Å¿Ð0îÊõ¥íOÚ–þ ÂÚý5û i™ç¶;÷]”QŸw™Nm2•üå…½½]Ã=<½‚£¼Cò]®GÁ'!i¡8,cÛ¤šä>ɃRšR^Isð6XŒn:º9o´ë½·µ —@†yqcãÆüw|o|ÇìË ðÂu Û•95u{ |˜¾ìøX°*ÿ–_îùÍúƒu¹wxhJXWXì•Ùšò/ÕLÛ1qÅê`†ÿbð¶ò¾ñÁ›þO± tNñ. šBÆ€&Wt¤x|¡±èz‰¶X. Í >+7W77í«]Øoì %ê^ëMÌíp‰Kœ,{Þ£<Úw™éK dhмá‘—¨£–ª0X£¬þ½"±Ò^)¯°Œ_õm™}Õ”µ·×µ×—ÑeϪ¢—]VX2×õ§éù~©ý.!7Ó;‰>Ôy4+Fkð•ÔtZEÔ!AÝ\U´%É¥æVžtž­€œ Lmó¸_ù+$—d|Å ø *â-äœÏÙÎJÉퟻšsˆ7Œ»‚k¾GŽšRéií8ÌKþMÎÀÝØ ì*–„þÝb'3BOWQ¯ˆ}ðytî Q.£3Èáx96 oDRûŒs ä1, ûI7I « È•I§µø,ŠØOPNì-¶ ïŽî%î’ˆ$j…~µiƒi½–:BmÇòb$‚½ÆKðkÌ+ªÙD…è¡Är¸±Å­÷ÑLh•z²žˆC×h`íXÒL™àNšdàA‰KA)trFÆ•\gobTÊ~÷É„.Q±d(x@~Ti–5 W†I@ÁdöÞQ´¸, öTjuYø$*šð«£Ä3ùýøI¼ÕÜÏ¢AŒà‚˜¥N@’´r ~W…´‡à•(‚î×9áöðTM⨮åâ b¬|¬Ú¢þ}r¡;ªiªÕAe´j‰z”ftÊÐE¡4O•(®K×È?Ê¿;ÿ’àºø¡ì_á¼×<(_õÆ `½z»Ò­Ñ}QÞUš];S6ÝYû ¥ôœ#;™ÇA“2 —tZÔ:É’5UÓ9ƾ·dAÆ Ñx?À&”5Ô| M'ôÚ:”¯4ñ%‚u¬w¨g6柵 3uÏϰ²6¸ººNYS,›LËìgÍÁíŽny\DZÞï–yìsúoû>¹ý¶ êOÂ\ÑZà®JgXðÌHc,::¿ÂÙÝ·Üû‡x/»&iG)ƪÆZGÞü±³ä–7±$&ä¥Î² ‹õ©«ÁsLýZ÷œz9⟖¿7ošç]]X¸å:PðW`K­sý­pçßÞ˜êûì;þ\Ú®ä“çz>™¿Úý=° h ›C¿Mˆ$—ž,Õ‡Ï&êýãZýmßÕuQ1ÒGºwWÓU@_5Ãt«åj•= ÎMžœöJú§ì©ò.3ÚyÙ,±Bôš.U“K§—ž--©èZ=½æjõÖ®ZåjeuղŠÌÊË+Û­Þ¹ª¬JX¼Æwƒ鼚Z¸ˆj JÉX#–ŠÆ4£Ñc嘜ø Û©¾©ÚŠýÂ4z³"1K¨ïøj>[â…r6f&f«DÀi^[Þ3öÜë, ·'k· ‰—Ã'€?¡z¸Qõ³ì¬ºÕb›‰0©¢nˆ.Ø\üOìÕ‘>B-Çͺ‹êýºkØý:rt ÉKú)ÔÒHN&náGZ˜®ÿÎ$/a[qö§j0ú#ÕGo$·‘I¤—èŒ6ÃØ)LIäÓfj½“âS{È“zD= —Óó˜ØÇãðT|"^‹× r,šè@ìÀ}Øk>­Qÿ­ü rÂý­ö©ô,N3^Ó¤Ùþ$›#’Ê~’ ‘ŸÎ ‡ Vp”œ|¡ZvC¼OzL2O¶U1RùH¶L¢’¼–ìÿ*Èàœd‹–·Ëù)Â1â±à3õ&íK²•׆7P°Tx‹°‡°'q£¥ Ò¯ŠQ-*|àf]+D ™´?ë¢ð½xŠRTT[ÁTà'ùeUƒæ/-W3PQ™å÷$ Jµ®N}\¾[ÞJ9úŒöÄ֨ⅫÙ,–€UÅñóîò*9"ö!^¥|œ¦­ò¡üo‰]jWF`£Ñõðet¾ŸÀà8Ù*|ýdá…ªV¸ðyò¼¬á²S€)·néæùªyåóysGÏ_•´$ý8»ïníWÐ͈ܮKÿBéò‚1žU¦-ºO¢á¬öK·e Ò4º–”Þ/¹\2­ä|ñE­OVs,EÑ ®¼@½cu±ûJèd ÒþÖ ”º8g9':¦ 9¿±½@&ŽëµE®…–úv{C¾[ž;Þ|ï×Ð4o)™8køµa™£sã;Îz(úfD†—ñÛˆZ^kÒ–{Ä D®Rþ+Þÿ†`vð_ŸÃÕʶ×w²aÕæÑÁý¶Óe WÐú¡jøþÛ6†‘»ñ3æ®þÁéA^hV¨Kq»–úK-ª~ö?ñŽñtÁ^½MïœÅž¸¼–³)3H˜8ŒMÿà·“š ÕCî AÛÔuÉ' ¯ h¾hÜäVú°,9Lû¯—©Ü´¬¹òtåê[Õîêe+´•û«æ®|Wwo}̺×ðk.WZÆc4Ûõ¿ÓO†¸C~„^jƒçiàì¼1_„ïÃwÑcL7Œ©JF¶NøT8B´¿5£1½(µIþRCèº*òÖâuÜ4Ö¡œ!ìÙ»¸|Á<^qn,ÐEþ?ð ƒt1˜‰×ô"f•q3ƒªÂA‚¤ô\ªí¦‰ÁJ‰=Ø#x­®3æ&?‘YäC2ÞR“7ÈÐHw!¦R_È“Òq[L\¤mD„Ç®t‘¾sá­¥ü¢8O”3½àºCn¿g]gjF+dÃãÁdr”õ€ïBaVQBá&_³ó{tpbÙݲ:mñÌ âaŠØý=>ÇŠú“×BÉe›#‡ÍÍ`:ô à<ê#:ÖÑÆ?,ô-  $ûùŒ¾Õ¶ûpžÒ&+Ô>**p­û…çž?¾F×Üp{ðÊ|H,˜£ØB,¶‰ó³»œí|Ý‚£'|Û<' Îåw¶ÿcne>ox£g›f%èÿä“ýÑÛø²Ds/geZ‚°FÝO7_µ0¤mÏjm„¯Õ/3íô‡"?x`ëÛ³@i™±ò÷Ò %ž²å•IU½W|/{YÞkùÓ•—ëÕu}ëUµ_+{F¸ž5ŽNöáùËò¬y“ô¯™6 ÅØ ‡h­>‘ša¾i^A_5>7öÕßa:“ÃábÈ/ûS%Vje3Ä6 Þb µE F‹×K‹†pä¼FîÎiî>@+|*)¯Ï;´Ýp1‡ê‰ë;9…þn™aq’Ëñ)-âvs,s“ÌÀLÈyü ¡ÄÖj÷ªÝnRIm$Öè!Ç;çS†Þ‰G1ò'â&)£º¡¹Pº…ª ƒ†+˜~KŽ ãˆoøod;¦÷Ñõ}9õƒæ¡ó˜JÃSÓ‡º‹[лšreX¯Ý£»…4!oµ=µÙÐ"Ý+ÍgU³ò„*Z¹K¡•Ýkéãœ:¾V˜& m’fI·pnðƒÄ$å!°V3_½H}L ¼çÅ ^±Ÿp7Hû*(R%‡x¹¥Â§ÀwÁ’u“¯”ý-Ëß¶4¢™AùX-W¾ôÀféñ:ÁPáTÞXNö'önžðgŘÄãÐýªnò] l/‹e:ñC=Ô‡•C•·åS%¤™’;¢vâqâ¼¹ÏXgeÎËôÛ©XÚèLWVï”b´J¦|ÑâÑSJdÆÆ#c{²+ſٮ'žsú?äb!gxrã’>ÚÍÖª?ÓOeßÛZã}ü_ŠŽûQ&Q°#mXjijÞ2d!öDz7JNÍøK›j¸`0ßæCö…úGºÁÈ]æ|>›•ÚÀ2k‚v‘¿£H-v—­ K &NÉzàôÎ~3°(üKä}d\á Oi~…YcüdÖXŸØ¦ÙRMÝèlzpÞŸîKÞת‚æà{çlÇî|±å yHHº53~,Û¿gm¯§MÃ?χ¯[>ˆò䟬ÉÎÿìƒ|ñáQþ¯~n@úZ{Ûz[ùO—y俵8lîîU“m5Už…¾™Å¦eتrçDˆ|QŒoéÁ4ãFã\sZAïZÏvGEÞãB}¹ÞšžW¯o¢¯¯ ~rƒª·¢5F1c˜kÊç ;QøŸîü›ª Æ‚ÿÏ 'VI³éˆ]àT™K[š&1†+üR$Ž,ºº:þ|ˆ-zZ/ ×Gv„SÊzE>‡œ%ºš¯$Ë=[rl½d/sx¼”“çèjM°·³ÿk›nåšÃ)æ0#4© Ìc¼T_®OÅ^:;k,fJzf>•ÀRXòMÔE°7Š+áOÙ¨lz¿ê68[ÞA5¢/Çóèãônk“ÍKÿŠÎ@’é&ýotkê#YËlÑÿB¸ÐNºÑÈX4CeèL/a^X;wëË™J¸¥tõ¨=|U÷QýG¬7ì4xŒ;5ƒÜEÎ&)ÒÇ\gi}…I ÿ!ÃQº2†hKkô)‚°actŸµ 7ÐB¸^ßÒµÑnS^hñÛT5 «ŠO‹:Š:‰‚×™s•{Ø.¬Õ‹-b—à¿JøP(}’tPÆ«÷k7èÚ€ÿ ÿ'J® vóF ßI&«¦im*B–'ÜÄ4 W$«$½Ä­E«Ee"€ÄS%Ç¥"E…|‹D" >‰ï¿ zñ²8G9OÙEHeÐẠôŸÒ­è¬|¬<«Ø¢X¤¾ýOcVþ$;$ê,z+¼",%ò;·”r{TöØ VF$#’õ•ƒEÒ2HÉ×tÅvèoYOYÚÎØýŒ‡).ó·n»¤ZŒKÜœWt«$çŸÌKf/íHú WÚß Ëî§Ì²7|ÞEÞK…´'[Ó;[Ên–p[¨¬s)®¤CK 瘂×}'lW = çh?þj¥cIú¤ý˜Ö7ã>×ü!$|r{"½ QÛ92 ŠUÀŽ<-ü5ì.F˜oRÉ]ðoh7ó`›ÔúÔÑÑÕÓÑä0øV¸˜Îa5¶ì¢kÁƒÉL(š¹¾ÌQKá9ÝÆGŒ£fu– ½µ~R÷$íC:KÙ—šg+ !Ń1þ‰þÍÞñžá^“¯À7Ò÷Â÷¬eB{Ú:.îF×gŒçeèråjŒm@Vf¦ù„µƒcyþ¯ySmòe®ýަ3 MÍ¡ç•ésŒÔj²J³LµJÇ!ʘg$ÎÔà£Õ¹ÚýŒ¾‡)^¨ØÂ88¯½ù!ñMr[̨Ïôgã}³ÎÚÖùÔ%öÉÜ'ŒO©µú–C–¶—y¿XºX/ÚÉ‚ÖþfïA÷ÓÒæ5=ü³Às¤ÎUèëã1ºj ‚Ám"ÕŽ†k†ZgØùÖܲ?¸š>“7îœGvÑydSéÃ*cÙñ’1œLÖ,`œVNo離ñ¢y€EØSr œiT¹ø¢ý€ÕQýMƒ^eº¤&ô¸‡ü@¬ÖÛ !j6žÕçRñ­Økx"1ÒðÞ´’Dq ¤u„¡#Ž.@,šFí¨ƒÆ¡Ú3ô-ãº?µ–îMùÈfB†7†ÿèMôFz$õ•îCI±"mX»«'ëù"Œˆ@wS“¦[ 3ºk§ú¶z¬ü„t±ü_pØC1 ³<좟 ‹¢€{‚]¹“¸ÝDMüSœ?1 ŠÚH£dí”÷•Fñ!ޢ⼠Á} ¢ò«.ƒ›¤MÀ, S$抓·$O„8/ä¶>«¤—@"V|÷·Ž?HhA"@ˆs>s®ó“Ä/?@o6v *Ô\VFçT…ð#mXòŸ,¨¨QXd9Â;œzv9'‡ÍÙËæ°î²–ç´Êa8¨à<ïg<8‘—í¸ëv{ÖŸ#—ñ8}w¿%’\~§LS´Û…[ÚÎè6Hè¬Îiƒ.Z’•aM»Ÿ“q‘4ÙeÒ‚«J©É5ÎïéH°Ô‹¤©ª½úÕF;,Y$j?ãsíC‹v”DB—,}t Näb„r/¯G%ö+"ùÆ…3ƒ[C`Q‚?lÍ Û£GI­•8UHú#žù¦5¢¾)m“ÿÉ<ªYgÿêÉvwñÿîýÛ1ßi+l^ì5ÐÛUJcçàä¢*/c¬V[Ũdd]š_˜r.aa’P;/p±(Z++0§’‹ÿIËPû¬E®¿Ã[ƒ ®™îŠÀÈÂ/Á þ1¾ÁÁs¡¾KžÑÞDïßÕЉâwstÚMg õÖßóÇ8Wz‚>Ì{Ý9Éí„]#óÿ¦;’‹Mã¬Î‚H/|3±•BÃP<6Ÿ¼@·Â‹°·ØQâ*Öݦ¯G÷*gƒ“9;„Cõ‚ümöQ¦çÔg¼–F o™FÚŸXX¦íæ­ûZË{ZG¡y„÷£Ò÷‰büŒ>byl>›×ÁñÒ=»Ðbæ«&BíòÞãüë ¾‚ñ•’ªŽ•¸}?‚˜OÔëA]WÍMÍ  ÜíŠ1ò~y›ÖõX«÷ GJUn¾àž"Fñ«ò³t#˜,sŠ·ä÷Àþò%€Bl‘¼‚7`h/•lxÌœ£F0 f§që2oÔÇÐlf’¾”Eõmáp9ù–)eôÔ7 Hæ>QZ‰ÚÑÉ?AÂØaý3ê,Fæ“j²Úi‡$îÓ€ÁKWQ×Hù€lGQ¸APˆÈ%½)ÆÀÓÆ¿Á¿ë– =t±[ÕKù‹´C _U²)r@¦ôfÇæç¿”<–õgJ¦+æ³ø‰‚V¢_…=„qDn—ÍþÈ?%øÊ׉@àddœè™p‹8QrC´F2^z\üHÔOÜ],+Ä7ùˆÄ-1Jæ y pˆ¤I±¤Þ!‘sOs&òT‚ÿŸöãÏàþÁŸ'.T߀ŸcHXó\uTmRMVÇ }Õ­„,ÞvYLÊÄÙyìÍìIì~¹=XœØì茪\DP,e+¼ªëHÓÆ"¶º¦ü^ØÝù?+#©Ü]™XöŸå¨æp&ûzò dþ"]â ¦.5¤LeNÌMãàÔñƪ6"—áý™w:¿KPå=­u³Î (ä½i´ùö ›oMpðk óƒ#m}ï-IFCAgkH.Hóg¯Ð3%0ã‹ùš£»_ãuyþö/ Ýò¾·¥0ôk³û‚«—½ÒXªugt]àš«ž_•6LðËŸ…&»âók< ?:9ØxÙZ B¦†f;{þÓWÑû­£`þ°¸Ïã5ÓéD!ðÑÕTþ°ôP8Ï6-=]°4›‡=r^ ßõJé\ÃAo÷ˆ¤äH¿Ð¸t„Žû…T•þúÀ²7ø¶xùÊeõSlÙŽ½ù»l—óοPPäJñ$úÿsæ˜#y5î¾m¾Ô£…áÐÈ(²«q¿%blC6&­Q õǃ·«ÞKQîaºi­³ƒk‡e/'A ±(z±yDÞ®K.¤9Â|¥þÿÿ —…{S‡qZ\‡w +P—¤M-žÜ{sãrÝo¤IÛ¤mê÷aC7\E|¸·Ã}cÃ)ÿÀyžsÎó{Þ÷gÂO:æ  ì;-ƒØëô`Òˆ ü¬ÐÕsƒé‚ôB®#?q{ݹ¥DWû$òn¯^òo8LVs¥b_"Õ!Cb•ΞÖiæh^m8E¼%^ñWó†ÚŽfþ›û7ì1šÍCUð ãƒênN2ƒŠ Y–Tk‰= Ù†"—³}ÙYìl¦„}àYçîËÃB{÷ua }1pû¸ËÜ?”ƒÝE7EëˆÑÔ\×|gSEãœ}±H2D¶Æ“±Ì@DrpשiÌ[ÆOÎÁî#ûÕíÉD‘cÑå¨ý›PÐ „ïLD¢£Ðmøyl5³‰T o]CصޑaùÛÒÂ’×kæ©ëºë*uÃu2íZlHT:\8tÏ´rÝ «^¦½ò°Æp¬º­Ê£¢ú¦7š›/wA=Œ -ÁyŸz¢¶)P FŽ‚çÀDh–a8ôè1!…ª«ú­~#œiyçèe¬Py•óT‘šª(Õ95¯é í©¯>ÁÓ,sm›¬!Ümioz íÑ VG*FËksæ?9û¯«.j#€Mz) Õ«pU7RsǺÌ&î{äé<µl=Évî}IÆÃ߬€Ð,ð­$aþ¶ŠSVMöº$¥taê0É`YRF‡ôèÔ`Ú¸Œs²ciÏϦ/U˜t?jrU±ÖŸ™S\þÕæl’Ø·‰ÁA>èù>ýRÉàŠPåš²%Å…¥Û+©Š#Eà þÅô§±Ããúµ»+ãJ?yâ©Qy¿…R‚»‹W•ýZ¾%ÔYÔÒnoŸÂ;ÞXKãôS¯³(ÙÊŒ—ÒY™LŸ’æ¾Ùm«.ƒ…LÞoÄ\‹^m³Ÿs?©hW1³üj°o€ö¥ÙËcïÜ?ðæÀÃc*3S|5?Ì‘W/õ\×¾J͈ɉ›$³Ùºßmc\ÅŽ-rWmªæ«*…° .˜Tr¤hxp[pyð|aT°Mx÷â¬MSçlÉï¼”?¤pmáîâe«Ê¶•= Gã ‹z†/—Ža÷‹“¸ùô-z#5¿Èʨ¹ì(®;QæzŒ¥ºµCe´Ã‹lV¤žñ¸;ûÙ¹„ÆQîx‡^g8a£#&9f¡ï]‡Ïzζ•cÿsÝ3·µ°®Ãö³N IlwîsþízžG—¢UèDfˆ7Ñ× hȈ•Áú3×¾|QÙ6²ïQáö¹žM@3]Ãç}7 Ÿí…í |]~J=ÒòÉü[VmGt"Rkc¬‹¬€)Õ°Êoš ÓÆ%&µEk_èŠÄÜärz‰×™Ÿ¸Rò<ܲ$)°óœ»“ §O®Lk.¾¨Y]•ZÃÿÆU‡bK"Šî.)-ùÛ·“é›]òg~ {tÚyÙÿlí¥Ž›ºHÙCcz 94¼¼¬ðëüÆÂ8`ÎRÍÇÄÙEþÒ_Ê{–OL£ÍŽŠÜ'úå ì2Ü; ¥ÄšTÞ«f ˜KÚ%©æI¬rPy<ënúHIŒ®«X\p°`U #¿kᆼûÂdnŠÇ–§ö5÷œñ¸Å]BoEèIéÁ¶`bhdѽ¢QEŸŠUåË+jÊÿ ÿQ]l ÌŸW”PÚšmÊ+J%†;gÚScÑ…Lo±ž‡ì´Â‹}­9Ár¢ $ƒïñ“öAF“ptp~fÔk'¸›m”«ÁñÑxÏ4ıÓõ 5¢ÕŽŽ•ÁQmÅÈv§ÄU‡´pRØì!z„ÞâƒóÙ¼|´û*vM(>Tœì/Ìk˜XâIòtDg9, Ç:;€¬ä Vf¨Ìz©Y ü¢Žõšzr8-£"\íí­kõ“,M[Œåšsžó=òañ¥tWöOþ½û³»PÇÛÅ¿ÅÂZN`·~'ÜT1 <ä¨CØnÜIבëÉd-b²Ažãˈ4*Àög6rϨ Ä@â9þšŒáJ™zê)ù+¹‹jDsÌ6jõˆ$ÿ$š}ñS„ߌ ÂjQ½í² \‹\‘®MNÚa´µÎ¶¤ÃëÀ4•T9HáWŒUeèr€,ƒýxÝíxÅ;ýEÃ}M¬r­æ’¾0€ž ŒìzA÷#Ôê75Ì.êÚkÿÔo·¿ë‡èÖèàÅÃ_Í.ë Øþ¦îD§æ‚˜×ÀŠÇòcJV#Ñ^ÓuÐúHè$ðjkÝá¼à¬£™Ê¾ÊÕÊÅÊ“Úp+ƒè«·({‚´+—¾F\µ÷±V:¶1t‹|uéœpœo‚9\œÞ&vÔØ½½°³à1ʼ-}ß%zÆ´w‰ä¬ªo|ߤn)}Ó›Èf­Èl,ÿ+·™Ô’vPÚF*J`”•’±:ubúÌÌfòµÊµ©‹ã?Å6Ìž˜$5Ⱦ¨;ŠõÞgMÃ3+*ú„ç‡>Q‡A]ªtêÅIæžtá¯Lš¿³|QAuþ¹’a¥;‹MECó ù¼CìpamQ|ø$Þ1ÄßmÍä=¤ƒ²9—ÝéîîÄ:¢./¶ðž7þ¢o©Î/ O OâöC[¥[jg.²säõhëÔ¤„*[qxAѧ*£*iÛŒœøt­o¯5gõI/L¦oïËË¿ágD‹g£ç«8“{Áöç37µÚõÈuÁå#úû…¨Pÿ`FèL(Þ¶–ì.¹X–UE•7)ª >öµcÛ ' …›ð/Åœü¡s=0϶%¢¤Pàî‡.´ÌÚXdˆ 9…&^¸ö¸X/¹F¢Ã\7­“Ü4Æ~Ï¡Ž C\õè*ßlBz¡Ç‘“x)fµ5E÷!Éè§“"d»Énî»Ü_ü(:ÛÑÀŽ üjV´W¬'dxžýš]*à…g=×™ î ÿ¯¾6â~ úOÖCe3l4Iq­˜jP¥3"Uü¡˜ÙJ¦åBÿ†ÌEû:š/ƒ?¯ÏXf[vº2q9Ž6¸.GœwC¼Çma•¼/eqîq›1±~%§Ym b-‰6ØPÜ‚ÜAï‘«Y^Ëálg~ EIÉGÄAb7î§æé+ß „ôOˆ‹ø\êø÷#÷ñ\g_$ô}ï9®Kæ³#Êiq<·'ÙPk?ѧ)‡ª?iïéR`Ë6ÓpKƒñºaTmøÞ®o¡—î@'õ>½TÍtG•“´%ÚÅúsº:ÐL¢všBÍU}#à¤â˜b©—ƒ'À«šxE‰Ü¢øY÷ذÔRlžhX¡Û¦îª¿ €eZ-ð^{FÑ.׫l¬®ÔTè.†ï>Ž4h!Šƒã`RIå\Ìî—kQ•åÕ9ºÐ^ùˬHýqk,$Ó˜Fä/ΩÐÓdûäS@[Ñ®œ/¶’÷âLi?ó~âTu$ó°?Í‘²‘3³cNϺ=«0yQæ Å éÙ„—)÷Ós2N§ùÓfHKfK"Sý©ÍÓ‡gg´’&¥U¥%¦/Ë%ÿ˜ÙJº1iEœuƱØI‰-T^èP`9Y*Ë»² OèVpbIu( ±K÷Íx3}uŒeº[zƒPökEï’º¢¦ÅYA0´²$\\RpÒû”€P¾‰åW+sŠ`™ð+”H•‰¥Iµi´¬³i½F~IÕUè_Ѫæ|I˜pk¨Ján”¯¤¡FVáÁ”‰)±’~3FDeD±lÌž¸aÎØühë²K¥×3.KJ3ÖKs¿{sXÞ [%ì¢ÏSé½—w.o˜·BÜÀS\vÒ±Òy›èVº§üKe£òš`IPY ä,KRJG•v )¹wö+¶ÛŒ"tPÜèëMêI ›Œ\uöB3=ÉÆæ9:™aþ™¥GcÏiVѱÚu‚:‹¼u41UÃÛàž¦ÓˆÈ;”§)‹Å ¾“°/5‡*g·{ÝçÜo±|ëMûÔ€GÖP/Ä ÷QOWæ9‚óÄWlÐt¸ ¾²­'°ˆ¯èOÈ0±^[ÍÚðí`…£.Șœt"í‹v‚ãZúb}¯ýSÅ“¾®»ð™.<'ª]ÏíŸm3m÷œïÆWˆk„N„ÜyÕb4w‚«äk¹÷ìMv/Mé \KO®g‚˜Í¿¢ÿÆ.—©ÿˆè3|ö÷Dv¶ 4ŸÆö$×{ˆÔ]âvƒüL&pc©¾Äyt >k„¶Â'âë¨qD®«­«ÈyÎip¾·¶0¾Ó­ª»Àg!f¿|cŽ]1@;@À°£¹¹CþæòÛq#ï…j`©¹§á5Ø 8¦ý€ÀßywFÑ=·B…éûCéàv10†¡£~¸º¤¨ÍÁt³!Úð?ƒ‚5ƒ± HŸo8g€nµf¡n(0ˆuPkà¡æ¡&ZÛY?ÃaˆþN»ÀÏõ¤*F{ZN2T•¹r’T£À `Qî ]¼Ï0ßöºÃ}Ì=é¯vš8¢weœL9—T+ñ§«µû˜.¾åô"ÝÃ.ùÄ•®‘ J;/=&ë#ÿ3§4‹—¥dI>J’eq™sש¶Ë&¤o’.“¬O‹Mç¡j¬‰`Môì'B+8ó‡:–(óoó†­w’C3GÄ?‹Kɜĕ‡ÛV\+ßXJf3í|ÏÊÏ”êò9|‘tlR7Wïò‰ÕÆÒì­2÷¦œÊÝš½%gœÏM,%Fë àsð˜8n^}.Ö:Œæ_Uä·¼¨p\Xå±ö¥¦&gEOî=aÙ˜õ£vÎf¼ƒ§òž»W¡ëSR§wŸE$=J}’yPsØ4Šj ÅHúgzú¥V~ù‚(A­ÎåÎŽ½k³Ø´ð}1\<½`¸­»‚]By˜‘Þfþe>ÏáŽÅß@M ¾ljÙxòûxà˜§¯C^Û[Z#s™äOö%–oÈx²1›ÉsD òÂtÄÛˆ.*ì$Íût †ÁÆ•–ã7¸ÂQ޲ËÈîD²ëƒy¦•C>Ò7hœnŒ¼³:„‡ùÿ…ü¶´p¯×?KAÝÜÍ|4Ç3…+î3BKÏE¡õŠÜÇlàŸr5LW|9î&"èCܾÆóÜ]" » ?scÅdï{q€P$< ³ùùÊ.döÑ«Ùt>Σ÷"ü#æ93Š °ÉtyŸ‡§k¹mü"q»°é‚÷!ST/2@Ùi ½š’‘_ñ¡ø\—Ñ5y‡¬Â§²cðÍÖXóQÛ)û/æ † ð t> öRÙ´¯ *0Uy?'Kþ—j»n„®Üi¬¶tµIœÝ\vÓJ㟚m3§ƒ»´rE¡öªa!Ô8ž{T­Ôµ_šYYU–r/ÔÞePÁ7Í·  ›õ¾í½åË]ÝtuÜ îeÊ7žÒþeØ«Ÿ¦3]tcc†Í¦SкYºÓºàmx 4\}ûC¬‚–ßÓ0í2™áÕz#0Ã|Éep±Š¶î„G|ÄÉ„§^Ä?X<éi/7œ‹öNË m)Ì,8:éÇŸw rwJìÔë“…8³þÈ÷kœp|ÒœN;˜T&=˜qM“ÏF‡yðÍôeò*e´l³Oï(k®‚á`¬âߌ$ßÒ"ÒÎgFXŒ®®»Ö­ÚZÙÔ´Ûi[õmÝ'*U.Š Ô{®+‰+îQú¬ª{UêZÂ)ÿĦ§ü¦Þ,Ä”¾(»Rö¢\_ÒΟœ_Sv¥¸™ÿ.~<-)~›ÞãŸZó­fXQô‘u!ÿ5_–¿×}Â3 8µjnA6º ®V¡¯ÏN˜»¤¸ ·ËéG*é±ì~÷­ÀVÿŽ_Rn%}ˆ{7¹,ºéŒ‹³¦e9¹ÉEeÅå·ö@–¦]žÂMo™Läçà®2Œq ÃjIqëÁØAôì“혅7ÿã¬rå Ÿ°U„ÀLð½ð}j™FNÍwkY¸C[±,v>C6Ð:®%DZϙ©|µØÑÓÒ‹ -…]žý|·®ñ|bx£¸N€„wî\cªŠzË3sØöâv¡ð•éÈî`9ñÿ‚¾C̦{q?»…ÓB–Á¶£Ç1~z%K-cz4ÕŸŒ‡‘£NÑõÅU‹–â2z9þ •;>[ÚbtrµU§Öü¨l¢ú]7WãHCÚ«k©« 鯂}t=XhtLÿ "àß 7 Ð>Ã$ð0þ Lë6‚-0äÉ} î×Úõ»t…äZ1 §ÎW(Ì™¶ëp33Žl' IJՓº‰µw175î±­1)Íu¦Æ7ð`ˆz‘~¥Ák º¿5 uký[è¹Ñ·…­†qºéÊWš¯†F­å"<×\‡Ï?¹ïxÜÂÂ&eÛ+C• å\I{|mî¾ø±ÙòZúKècÉ™Âiâ ê¬a:,# lC$iqMò:jʧ®Éa¥sVxçý(ÊÝ‘Ü<ÙXÒA=.ÖîÈ<—ó³´Oò©T@º1clþ¥LÎ-“e€é'sž_Y†Û[[*»Kë%+3’½]/Š*jf—–ïÌoäô–v-ºQ„—>*?Φ¤FM—¥z”ÓÍòBeYá÷ÅéáèÊóU•¥Ba­t­PŸ’O©Îü›ð„³æw¬òzBB›òúÙ%Û #‹·–Ö•'¼Cï@;å#Xýü®5›ƒVz¥ý –ÇÞãJ…Ož£ží¦œ}2éìdûn–¨±Ô…$eæ’5î± 9}Eâ Éý§<‰M;j×— /Õ•Ú#\½í«,[ è6”p>µCN[Eiè<*ˆ~D#Ä/¡Õy(ìïA}ox?=‡ÉlrÝ6l°Íe¯–í Ãüß‚¼ËÔB¸EF3°Téo[$¸U8黇C•ˆE(i—W·¬Ãyº/šå|í\ˆ¿!#]Ç5m4-@ÜÞ¹yNÆy¸_Š­<{½“}M=·¼Ã‚+9íƒL±u Úñ ÿ«÷W·î=¢¼D/WGÛk»ÎÑ‘c+]NÒ‹ u5¡0Oç¢È2„rÀé¢ôÏšUàg¬ždµ,\G'ç<ùösf—É=cOóÿòË¿÷°ngóvöÖñÓy³8‘·sû9‰PÃOf+ø$^.(ݽù~ÔQü%Ó›­¤¢éKÌWf7)c?Š'=¼Ðƒk, pÇy6»ÓùIL:Hm¤Sh;Ý›E7#à'pàûuè§Þ¹É&ääSÔáao OTGÈ›«^ÊûåÐÙje;Íߺ&ưþ›>ž6VOuËtƒôÛ5ŒSÉ”ZÅbùae7Í Õ.íh„>*ïfÍψ¥ia`¼u¶•³¿å.÷å©ÝzÔÒØõØIM¹¡L É9/8öÛW㯩ô±ã‚Ϋ´5öök¶ñºKŠJ  k²Ã8ÐLjÀ6Ööq–Ʊ†YðDè*ˆ@‡á¦"õòn&9òƒ¹³c&±¨Ì<+”(ªžWM,/õ,QŸŠŽŸäŠ¿˜=Ùp‹šê?]hv*ŽH~RNÒµÍ<ô*†™ÞwòŸQ+~Ï›=¯ùÜ[5ã‚”êZJVRŬÖ1·â#Ó¤·¤ÿ¦4KÊ‘&gîNÿAú_vºWÖ°Ì/‡d}%—Ó^KF'÷O­—%K¤S³Ö§œ˜Õ8IV• ®I/oÁfAzçMï‰Â%tùÕ9;ç(¨óiG%=õ,ñÌèü“Áž…o ëJûÏÞ~•ÿƒçw°&¥IêÝ´ŸÓRuAtw¬æv9ãsÀe]ü/Ñ~h+¢Ž'¿;ÓÏég$K‰¡eë«®‡(÷¶–8Éõp‘ž y yáãîiŠI¨×iêmm®`->Á`ð–8ÅøF¶*uê,hÒìÄ? ç‘Dl¾Èiþ§¯V©çÊh¶Ö÷ÅÓÔ÷“#ùUâ1O“¼ùþ—…‹+æTo)þUü ö÷/ò=áÇPCh'uwç#ÀGökìz.{K$ÎÁÅÆdˆô9*Ñxî_Ÿ\œê<ôv% Ö#z“þ ìb~Na/]EöÑø6@>ÂØ”¶ögÈ]òƒ0ºðRÁ¨‚ƒyx71ÀuŽYWœœw×ÞÏjÄ\záébuQZ~»‹¬B÷ÓϘ͘øÅ»®`Ñ Î×Ú½s}ØEÖÃtSÉ_\ £éÜV_em $ëÚÚJ]»=]|áu „]%ò©Õžóâc¶7í¦ß²çY” ¸÷ˆaþ2#ð1ô|z7WXÅçpCÙå|šxR¬~çgѧ¿û“DÇâÇ©lÛËç§{ëÅáa°ð^|,F2™ 泑nÍüÃBT-}˜È"»Q °Hl=:éïT¸òÐh ÚÝå·üjô™ª2§Ø \­æºU}t€óà!à!ÐÑÐØ¸ÆCãô:µ[»^ý»z¥ršr”|EÎyy¼JPÎSÝÔ5j€?rúƒñÖnœ×–Ÿ”7P7:й0èõ7x/ò3ÝÙþ…ƒñ o«ï¿Hžc·úùþ;øžÆ´¥~ƒ«$ÚÃmcSK•ÍhZehfèfìbŸƒÖ#MmwM/ŒL5¦mÖ&fÞ¶›ÏÉ}3ÅžL¶sU¶oÚ²‰m³,¬žm¬zRþ<`À–%ŒŸÕ (ºfôöˆA±=Õ ðgôÎøCVŸ‹eoN}wdòo#‡-Î8Sueñ–…–Ê7ŽŽ’5Ieqf<ˆ­cŠ’c¤d–¬G™Ò‡gƒOA7dÓ3ÚèFYW˜[Á<`‘Æ¥þ›ÝT³Mþ›Â :ú&A&³CìËQ¹¦IâAí÷ø¢ü²‡åá¹ÉÇâ´3’ûdÓðûð–p£ð´ $ïPÝ ô%FÂ*E(£¥v ÒÓÜGµ"±¬ÂÈŠùy´ÊϤÿR¦ÊO87¹YëI¥ðC3+'„S¹\G½éŽq¿+’jÉôòö )å—BÉì^Ëý1ryùNî¹Ô1R’…§DQ‘ðO9‚n3ÝÎ;Ácã§±—¼ÏõVlë[çË*Ô_-ã*×UL+JôOËCò*]]1°â¿â)E‹ ~a¹Nàc¸}ìZ&̬e;r]}'…l†1ßBS kkoéÜIÙè1¶ˆ<Âuvb¾9{Âñ`G×¼ðdúÕ WfÞYßgú*¸®9Çù,f<*±Ã޽D?z¡g?ß3F¸ÇÏÀ;õèŠÀÝʵ$«ÓCáù½K*îWÅ…W³‹mFbûX Î‹ 2~ÅŒÔUtò\”þ5ý1Ô‰¨"tX¶k Ú‘yÌ% ±"ç.h‡>ÙÙ+ooœè ?Ó›·Ñnî^^ë"š÷é+ìMVÍ¿äcøöüzÎF®$^róDó÷÷”ûÄgÿã¸Bn:¥¢§ñç¹zêw´+*a£Äîü*®‡8SÉ¿b#ø:NÂæWÈ_™Ñ¬}ôå2G©|+!¥‘W°è3d ã˜3ÇõÊåü?ÿÿ —÷‡Åk~k¡FÚEÌ‘ÈNnrGîÍÝ{ïù<÷Þgܽ÷ÌØ”–RÔbUjoJˆ±Õµ}½Î?ðùáœÏyŸuXbãØ¸øm<7.|ÄmcÝa>dïá½ä¿\º…ZÉfqZð/ã&b­`ç²}¬ÓÄüšÞŸ¡de ç@ü„´Eùj4°Ð&ׇÎxP÷H¿Øó—­ÝÚäãêìÕG©¾ßl–õ®­ÞIn·C xh L m-Ÿ©.¬_3·-õ— ÅÊ=b⬲V9PV ™,¸Ë IV©¹:•ƪޠ¯ì«<¨(׎†ÞÚ„W¦~L+ƒ$]ïRËÐPwΰéÒÈ”úÁµÏR›ƒzÕEUá™Î¡ü(G`f¨Nk™`†v‘’Íå—‚ÓH“öO[Ÿûû·}Zý…ÄM{'‰²üFaUiSÉðÒRL3¾uˆø[EJRG›M:ÉêÌÎ"v'J¹ŸM¿z;úÂSô_i©²=D{™ð†Ô‡«XWñž `£7Ð×óçƒ}ƒCcÃR;k?ǸjWyky‘òY”[ó_rp:˜2E»ŸzÊÑEÀHc®ÅmÿÅÕ#ùkݽh&Ü,ê.ýhþÅtŸ¬«íóU?*n[‡Eü±ѵNyª3/²ÑÝ—C)]D(›W¹BºÔ¹ñÊ R€ÓLyvc¨9º;üÊjÎp¶KØf%O'u½Mäe/:¬ña¯w…û¬÷Y`L¼15 ñF‘¥†:…þ<ÐøưVõTzÍàGÛ]/ÝaÛg¨œª—H)ÚMŽA!a°$ÙÚåžÖÈÅ;• y^ÊnªoDz¦ª~QíAr•ët¡)èuûbCT÷N"öú&ûgç¿C–¡K-ÌóïôÛd:ý[­w”[Gtã‘îàßòÅ2’uµ¥'RmZiˆ @o  ü`,ÛP*‡r,¬6 „ˆ--+­ý¬C,ŸTµÂ»á—Ððð:jénû‰Ù֡ćçA5Ð?Ð÷è<Ë ´7Ý05ÿ €  ó ³ôëÕÍU\¶XJˆ· ¿M•,ø:ÑQ3¿€ÉÞ!Ú/9+Qy‚3¢lÁDf+=À8HÀÌ`I'ȵÄHÉŸ™4ÎßÒÞ&£{«ÍtÄHLLK,öírË<+4‹]àü×µ­:½;7Çš‰v´¾vtù®V9´4tÇ3ßqË3;ê¬û½^5oY Ÿg{l›z€‡f/WÀàQ°Ô€` ú.Ø¡¯á5¦NÁv+Xž¦¦›j?$üö5%öÌþ¦Œúœ¾¦Quß×ù’G£ÿZިΉsôO+ôY¾ÊãÖº°ÀÿÖÛìãÅù¶;š;”ŒÜû¹Š‚ùg ^–k±—©ï4m÷8a&>;7µª?ƒË>Ãé%ÕjÿÔ-ã–âk+Ê å•.šMÃt•Ä3“×;5‘¾¨‚9 w·üg™è Ä¡Õ ¾$Ðêó¼ "#‡£‚H•k¼ç+°.x+ÅOšS9ÕшM¢\ÅŸÊ?§ïÍ7·_ý¿óåóÖ†.I¬˜µ¥Ý°qª,‹®Ž ôŽªîšnOŒDÂô+‚00G|½¬=çQvëãyu.s‹çl¼«§\;D#GZ|`¬WºWä€QJ»[~ƒ5ÞÑ'Ž3BeND´?IŽ›¯î‡bçR˜tßÔªø‚ØðľøçØÖÄÊêw5WÓïª[kÕ¶×vOgxÍÐWŠëâza‘˜®`ÙëÜooÔgÊœòmOp¸¦B¢–ø!ôÚô Íö6zÛCœ[½ËC™¨[ýÈG÷©ª…ó8§9·ø÷¡ÃÁ6ýnT² ´ |­»!Ó*˜úD€ÖØ~v,GšÍc Wä 1GÒÍ3†´X¤ÎGwyÿÝIBÑö’˜4éþ+šNeÔ-òÎ5 …0ѱ(¾,Uë4ÈÝòN~ê¤^9R=Å’Ü…¾S¶…Z”µNpÆöÊEtv7öA×:/k ª ÈZK6Ú™e.B3­}'ÐlËÇLÛHÎ^a›d›ja}‡N²ýi™ieX eè2¤J†z˜²­EÈ;èÓóVÓ6è9ºg¦ Pè?ó,Óqk¦}zú晲M­ÆK¦& 6Žéóõu}ÔÇd³ÄqÐ,9"y .“¾—Þ)eË5ãµO„KQ–$(:ÇßÊïÀçò×s[8 6‘Õ“UÂôÒ^SªˆŽŠn„ÇÔûL‘°QEº “Í&ýKoÓúŽ+B…¶ýH–õŽÏ4'r½¼,;ŠqØ-ÍÈqçK÷OÞq>s¡s°µìb¸`?º!Å—%¦¤·&/†³¼³­ù #[q® $ö•`©ðô²ÓïÕí’·7¬¼]½½­Ž+‚¦¬)Çi.Tê:œhu uJý]=2’ðºåõ¸ÒŠÑ¼) ÍÛ“šçóÛ'¸±±Ñ]á›Ñƒ1b29÷pø?…h&cBᤇyhëiº*=£½ã\Ty€pœÖ‚›•)¯R´A£õK5/5/ÑÅö¤j¢Ü.T±{p K¸˜<ü»*”iÊ?+ohºŠÉ¤]¸˜â¢£ÓØÏXtZ¶¡rù%naùÔÊ‘b‰ùŒ€ß"3BáÝF¯U´šTQ*)WUÌŸ¨Vls^²ôç²?õÓ]þ˜¨ _ 5E³<a1k¨3ºé3‘®E¡Ÿ3Dù„ L³~”â1Ö™W“‘‡ÅPÄ/CÉ:fÍÞØÊXUJPm‰ ²dé^ˆFW–àçb?âµÌuò¶Iñ>ISjF"ìx µÎ³¾°Œƒ¤!þ ÉŸPŸPct·ëoý?ü4= ÕûÊb¸è®È‘hEŒ™çŸèåÅ[¢Áˆ.ú>þ,191&¾&šŒ¬~éÈv¯2Juy ÁX™Ø^ 6ãÑ,W‹{„ßå>b%:Û,ÍŽûÎN.‡“ Ä%U‚‚lÑâÿ$híÈÃ2ETüIjRvUØeGeßëëµ ðŠV ¨À"íbÍsÙeù=ÝZUs¹àÚiÚ­í¡,ç¸h:YpáÂVÕ5Ù|ˆiÿËó½ñ\Û¢zßR—>F‹Kb£< YÂ3'ø¯c¬eRZu×]Û¢C½3-âMÂ~ŠBã(b*Ö-c vw(…€W¬\ÇJc\÷0X.!S‘oP®u¥ÅŒ:a)’o)±>²¤Û­\ô#4¥ZHèzs?¤§……°áwÐïy! ¼Û,5ךŽOt³µ´÷5ïtù€XÐTÙzÍ4@kx¤©y¤üAö£$"ZÌ?ʛğÌ?ÁÅŠ¾w—äÊ<¢¸`‹p#g„°I,wç…ó¥“$¿ õ²ŠÒk¢…_”-ª=ìäcdÐV3ÚhÉUU Ò|96{­²®j IBl­Ì%”✪ÜSà‡jIk‰ ÝiïdcÅIêò>•‡8)1 /3=öÈlÓlãÁ7†ÙŽŸg¼?¦G.F~ m :$C×V¸_ú?ÿÄdϹõ©þæã%üüI‚†@S톱ëÞÁh|H|C¤<~>¾-þ2½/9aÌùzܪ‰[g¶åO£Hå ƒô>Ó4"îW¼´àLá½,þ8uþ_zP¸U2îîôƒ¨r&À+Ô=É[p"ü%ìbû.+“”W‰¡}0Bn>:WóœöCÙ¹OrV•ùâòsÜ·.ÄU âQ›ñ_S¦3oU&mТþ¬èkû ]?ù`êzÜ‚òñå/ËO•vœƒN?Ÿ“ÛÁÚ#ÎP˜¹žšP(Ù{e˜CoæØôç½oÌù)ð1þ1ÙèC¡â{X1¾¡tzAQ‘´”Š=ÁXŽ.‹¬,¶f c¼áĶêañ®ŽæµÀ[ÕTöIünìYÆMÝ:W×ÈÏ]6‚°Ž5þýáÛ¾¸âÂäÊgÜß-û’…ñ—è UnݨÜÒ»ÑÓàYá—‡Õ¶gz¤cbgülŒw&’Ëã=¢¡Qa],;ÎMž ü`ztÑÅñÉ}ñßÃ…ñ¬êµ×ê©‘à$&XüVše ŠG¦ª2踷èë¹í¼)âLó½kB¯Tš Áj…Âf˜¢-–Ö.Ó0¼Ýælc²Á2ÐR ÍS ÎYq_æ£Ëò²¨W*ØÚÙÀô,Ø“ƒU&­™Îž®5޽C€à0h /‰ûþ˜®I¾:íìpiöH€£{í¾í»i] í7sͳ o ÀIÝŠZuP‡Ô¡<+Ã&µ\BO[gnÃWºß vø[Ûô7dòöBkIPÁ¡ƒ,_Ášì&!²¾ ƒ{ÁmÐñ/iÛaÞmž`~aª7Û'ûÐ_à¶iµcÔ#äW¥yÉ6áséGez´ü”ø?À:FëÈÔ3R?ƒ9„³›¿AÔ.Ü)½*AdÉ IZy[Þ(”qß³&0­ÂoÄ5¢ÂqBœ@ÏýFí“lç_`×PW$ä‘ô-ÔO” ¤±U/.ü¢ª­”"r õ(5H. !?ªd2pÜýòÁØ,ŒŠ'›Š0sªó©Åã(‡ÅåÐUýßpÈ> mÕóôƒ‘¡n•ï£×¥D÷Æ¡äÍà5[ -QB.êZT&!wÖÔ]7e”ò:ÆO50EÝG£{Âý[L«rÁ¹ù¨±ÆÔÊô¡ÔáÔ¹dKlbÔ® á5‰5É_’½Ò"ÉÐøh4R‹Ôˆë¶ÖæÌí6W7—YLç§~LŸLÍøBcƒ,d4êÈ´£i”ßS«µŸ•ƒ5+ d$ m7ÓÿâL'Á·@&˜Òѵj]ÀoþûÒ35Þ¨3[oÕu0zœc&8–;öÃyýð+ÁV¬ «–D- \t ‰%ÝNÓÖ;´$~3ù¸uµœÝ<£ÌXå1Gðjo ½Á1ÉvÏ©=¢»蔟äw “[{x)A¯o½t?B ¦NºýæcV¡å%œ†Ç˜³ k¦ÙH>¬…^ëÌxÓ~bÞcî é*“ÅØž{ÉÆˆö2ðÒÀÑ_6´ÎèâÀÝ]íMEO‘J8UääÿÆ!¸*Z ¹%Û ¿"sŠBÜfî~Agå;x[…û„Ý•;äýe)éD G)W »ñüõ¢;’rQ6;“¹ÙÊÓˆ&aÌm<5k ;›1¼ˆ¢¤g1+¥4CD?N Pòiséq†—ᦑi£è½èËi·hýè|úÊܪ!d>åLÕÁª{TÙS©¤ê…aUŽ0ücä˜Ê¾h3°Ðñ—§GhCâCˆš ÔV×–ÔVG†(m%ªé¸¬Œ´7§as:…<À(ßnܘ $îx¯¸ÙþÃ_øòrMVÝÝè?Á=4y$ø—jzQÞ¢~Nÿ“¹Pr8áœd¿­Ìc”cŒs.Ïè4iÒ”·‘Ê¿J÷n£îià*4€Õ¡ `ÏÔplû&Ó~U1Œ^’.:¿ ß$xÁ»L6â·–œ/ªÁõf­,Pò¿Orl'„IRGüŠ¢kÙ:ÂKµ¦{Ž„…öú2aà{0n;¦wÉÑRövåNö3Y¾nøØÐ. ˆ7Á7‚‰ˆ/Âõ¼ƒëù`ÏXïØŒxy"‘:8ª¶ظ6p­³“2йÏJU˜AUíÚ“f8YºòžQ-5=qKÂõ‘NÞ Æj˧ðZ‹\} üd+†Ì£å×iÓ-™ác±êä÷ÉîV.w…‚6Ä{&#›ü^Ÿ6´#†©nª¶„!Û$=FÓúàų ú æj}º·‰Þ±á±QÑ›áŒè±ÂĨx‡dUbQêy²[Àí=±&7§U#©u‰Ç±ÌèÄØ¡ÈêØ}t¢U‰ ‡ãíáuÙˆV ¼X£ToU½7|ÝFæ ×Íà²þ´Ù³ ´KL è¹v¤êÐÏ6ÎRd;¾xû‚!ÏöÁÖÏãr6˜3áiVL©Á/H·hÜŽÑWÕÔôíÈd×ÿË/™»œ¬Hí„ö‰ jŠ]ÝÏÐ}þëÁŠ{z‰§Ÿ‰GýĬQlkµ/€U¦Ýp“î'x]duÝ«jWXc]‚(å—åçtË6Ës(l^i<î3ÿmbýÂA3MƒÀEÁx þÖN¯”ÝöTKuOÔ¿ÊFIÂ\É|™I¼CÒOiR½QÍRÝ’5‹øâÓº_t˳99×x¿ªWHâãÂ)‚¾†ïç5q3‚fY­´§H)Œ ÷ ÷‰:‹‹û‰ g‹º _ð³…ŸøOÙw™y‹Ås„ß b˜caeŽcüÈ 0v0:3EŒ.¬WÌÏ´ïiµt+«…)£¢èè»h½è™Œ^Œ]F½FôPfÐøÌË,÷'u…6ŽÔ«JJT»ªaÝzM&’aˆn·m´›|¯|«ír=M®1U—$çDÄÆõ‚lN%áV×¼2Ñ)ýÑš–¶³T’ &:ÚË3È¿3¸()_ÚiqCp3­D§Ç[)ûŠKðÏJG‹…› 8§ÒuÏ\(ûÎÂÂ]³×ÏzTrˆ5^†°{“njzASÕ{8g*C¸‹ÊZ× ÿ¤à<ßËqÚ¸ŠS³3 zc¿ÃvÁl*½W²¹tmÅÖþsF®x—eg0ý$¬cÎ!òÊnãÛÍ·¾P-²+Ö¡V^ó< بêo¨me×ËŽU\ íäÿ©0œ`TՑΠ,ÇƆ}±sñæø/IjMNuUJ•¦Ö<¬ùÑè6àç`nSè’ÿÊdwYaÅNØêÝžŒü¤¸&ÝF[KPIî }£SÀ.–ïìjÁÛ2,~qÜHDªÔò¶Gagè\¤"Ð(.ÆNgæÚ¾ª=Ps"õ!°Ç®vþ<›0§_%–ûg¸[!ÚÂãçÈ?iÂ˼£jÄçC!bäVønhkd~Ü’Bã/¢cGê`èë`f8;v:~5:<$òžuïrC0$ŽLrçÚöÁmð0$ 3¯À¾¦ñÆ;šÅ²rI³Qi;iÛö‚8ú.êßU{ô×À´ñ”þ’¹ 4TëìY³L|R9ÝîvZ«tÇoðuók EmwFø›ÐIIû.ø0´¬®fîƒts¨¿¯Ás4Ð-P;h²½ßVû‰–‡¡1Pœ^”˜Št’„¦jÕUG˜]´Õ ÇAwoAé|H£ì]–ÊŠnA"Lý#ækÑ,`¹ÜÒß3Íè +Áš™@°È2TªˆòŒ<ªÚ“!c±E[x…´vòOÔQÜcܱì CÍÊ}ËéËÏà¦gž)å{hoè2†Ÿ•'è-ê!¼ÈéÈ;Ïñ21ûpŒt„ñ3ïwÁ{ö Þ'žM hyÇYt^©®ðʽ|‚ðŸÏªgú9sy=¥GDò:ÒǶà¸qƒ¼»œ‡¼6OpœŽ^ \õ¡î%¶ëÀ1ëd«Zb|…†š«‹º@·´éº€}¬$ÓUbâ™^(†?´Œ¥ªß¡ÃyM4QèÏ©ùt75—ÒJþ™²ˆCàüME—]ÔsŒŒŒÒ᪮ä$JÕjJc½“ÀNðî±{qÃŒôù¬5œFö,Î#ÎÎ]Ö>&Äf gˆ[ùC¹ øÝC„t˜õ”ƒãâñXw™ky .I°‘Ÿæ—sÒÄUcÈýéGYëYd…õŒù/s»‰Ó‹ÍgÍaµ³¶°<¼ïÙ4–’ûƒx ï“€ÏÅ€6†¿›“äôç¬`‡Y}Ù’vp ø¥ñ°þÒ™˜G˜§• ¤*…§>øÔÊvÝöLòP¼{œOl½œÜ+ð0ÛJ.kÑÏ‘#Ž=ðPµœ\\†ÝŽàCí!uèr`£ÿ«@©s¡™¬µò.r`ÙnM›’ª} <ÕvbÜ$û¸Äy’5ÔÄ_q\Ìh…øÿÿ ×…‡Ãpd¸u¸»»êM›¤i¬q÷\r—Ü]r¹»¸5IÛÔ )2 †Ë EFGÑ•Aã7(:Šl w2¼ûžçù<ßîTîäÜS´39¯)_¿$›ØˆQ‡•øUácÞ&_s>;ÚH\·íS=¦í_¢Nt¤ïÍ9,^iIÒzsúdƲÏgü“º7c;•Ã1IÏmWW>Ajôh(X<¬ÐU0¬pDÑËx]ñY[ˆÆLê–RÊl–^pùOyµÔ=sPÁ=Aºx$âÎY8«`j¡©ðHµðnÁ ¨ÃA­üM´†ŒßRS?d´ÓDVfaÅi2ìj.•×Þ«S0&ð(Ô;ÿÇØÂø7¡CÐgÕ›ìôÝN*Jí›ÂmS‚\hþO`N¸œHw¦/dü…¸c­™¶×ê㪧–1ÁXqÊâxb¾:°×rG‘®R6Ò¦,)Kœš‘ƶºwU¥¶°1´‰|]ÄžàïqJàLa<ÎŒAù +K~­¬©±W°Š.ç ò¯„çL®ø©b.1˜Œ3ïW1s/g1æ*»Ã[‘öVX †õï±Eî žÛ6T{WÜ]™…óý}Ñ5Àzëû&÷OþÅè[ƒU3MóUÿ‹õ9|ÚJhZUlä×=[\aú$ÛG'Øk§ÉpØ5Óß!ü(¿ÎýVí*ö´xVRœ°²\¾É¼ÜV„ï·ïHe¢%9Ü-><ò&?>åéïê@Œ³Û$­8½8±tSeC´ÚÆ'§{@€V9µù ß xŽy…탭~‹<µFÚS÷í]° ;†]pŽGÆ#ýAªò²h¬L#¸/ø*XÂï-è$ö+(WˆO fç äOV`òG’w"BºAÜ,X,š,É•Ø%ïÅ=$egåu²qRX˜)í¬Ø¥x¦™%óå½â´ñ¬Â>ê“Úº4M½j‚,]Ñ.} ‰6Š‡Ë”Ò6ywåJ…K)ÔÞTΕ½ N–î’¬“¬‘*ee]esåru‚ѡۣê­v¨>hãúT]ûö gJ2HÕC-òÕ²…ª÷ªíª‘ÒþâçÂs’ Ò¡jÐ÷•Œ?ë…7„³…#8…£ƒÚƒ+€¿É·ÃŸãmbôïÈøà_Êf‘Å~;F/ÞÙêi´UmL=³X&Ÿ^\²Ì7Õ/(•T]õ÷rœM n”˜êÌn@¼è×Ë@µVgÖÖµsåì2É"y%¿g$« «]Dïš[ÌØ˜.š^0,ƒ+ºƒlð|ðüàN &y ý3 :›URjuš7õTöZ¦H€Êúr²º°›‰´óT)õM®[¶Úú;zXŸ+¨eía#Öâ£j•, éK¹a–ñ&›‘s€bîfýÈzÀ:À\EÛ‘1˜¾»Õú.À‹öŠ]Œú"žÐa?ÝZnOÄÞè†kÏ ‚9†Ì§©'©ýÑÖ†§;w:«˜T‚RÕ©¢kñ%Ô=¿­hRü¼ÿ«ý©–d¢Yžô²¤ÆD'¥D0ß4 šf…¯”®ŽpHrýn£&ÌCö$`¼ú£úv&q©\%h³Yû¸þT½KA#·GñÀÕ"¼â{ç9S r>47ºÑ3Ó~”D#GÜKõõ'$Ñò ,7O· >ç`ü>.Ä ð8éƒL°”õ õ)a¢ð”ð¿•—Ã_&m‘oP<‘ƒ²Y¢"K!S,Ó×^*÷( ÙGÕ*å ] m‚ßD¤K% ‚¢Ti»b¦V-Öpª9xW$Û”9º¿ÔLEW¹UòNºPÜ(x&œ#i–ËŸ*µ²3Š!ªÊÊ â£ìºôGi›´U³.„ªÁµP({vCÐøÞ´ËÔœ õEad(| LŽW\°3¼š¦k–+ÅŸÄÛEKE[į¤Ë”QUŽn30Po”Ѥ‘䨝%G"«È¡s½òœËyûõ^ø|î‰IIû ÑEù£]ÇìBÕ ™QƒËŒnæºÂ¨ö…Bµñ±×X?Çvìú \fZ/·†ë’ÈD6õr`–ðXÿËÈy[ÆÇÞÂ^ÏX•V½x×’’[h¯"ì NqN‹dFU Ú`{%íÅ0ÑÏQ¥wÍòä¬d¶1W²5ÜÍìƒl˜3€[Ïß*‡ I¤\® ä`”ÿÉ:…ì•Ö*Ná®H§b¤bD1Û“d¸À,Oÿ˜:8ÛŸCËù-[KãçŽâªMH>§TRx¼à÷‚!cðZ˜©/úZYYõ<õ MÁª¹2O%Í\2&WìReùs¸<¦·¨fhõ§â ¡ZpJ3 :*|Iˆm™LJjÆêž˜Nv#WzGF¼ñQxŒúzI·TfVö„ì}qÖÝ¬Ê oƒý¶Á’ÂMJ™º kQ8%7óxæo9}/sYCò’µ8Rê<äÚ ÓÚZ«àâ>nC¤¾¤¥è]Éôr¼œ^º´´©ÔTt£èd Þw+ò%B ¨½ á“¡Ç40U⢠&ÿr`‚ë!~ß½<²¯jCí÷/ƒ}­ó±} –kk¶—`TÀ¤ë ù`0Ã@¦XúâR Úi’Ó ëÕMàøPkÔï¿nhÓít•9ÄÞï‹rƒ¥Ä!ëFUº®Î´ y ©uóNå;S_ˆÜK³½ÕîÊ{n^íæŸ}DþÛM} ‰žgî_´:Õ3ͽÊñaçLû•?èvøòµûòðäV8hl†ÅÀSOø²­—}ÙB&³œ,ç|׿i2 )|ÁòR¯PÝ çá ¯W´ªÔ†QF«‘0ËŒT=S“¬Ü¤¾¥‰èHRdEºæ¢’':ǿĿ%¤H‡*ķÅd»d'$IJÞ‚qânÒSò¸²JÑ ›,ý áK—ÈMbŸ#rI’¥»eG¥˜²ƒò¡º›f¯Ö§÷i‹´º°ÙdÙ ?µ}‹UØ™÷ƒ| Á0Ú“05ã¿àø-›ÖXËm2ûqä-°__¢IP%(~’–w”PoWF4«6É[dnéáFùe_»c£íGÏþر¢åÞ¥ ã ×K»µpµh¥J4–懞:Yþ¶¾@ÉÛ)Ö zZï%ÞdçBoD4~;\iî >/ٿú º¢"’ÿœ½œÓÛÜÕ¹ì오²/äá¼âæpŸå æ­e8h9ÒMxepc¸ÅÊIÅ>X¯ÒÆ/.ʜȞ$0ðV°£Ìty–z™¶vŸ~š9™óA¼U^/¸-ø^îB*ÃÉ7šÛô÷ŒÍÊdÇe/(ó«Ãâ—*]•«K¯zOJrÒ,Ú´ä›oJkúŽœ6î=+Ü}é£Úýñ á‘Ṏ7Ú³xUyRuQõäêöʃ•…ÑƽGjE¼ý猜Ké(êê—®y_ÙïäoGðg$ÓÉš ¿ã@=uaÚßÙ ¼.ÖáÎ^dûXgÝ Üà|›I̤îc ð¼¶½TtÒÎ4>a§tâÏÓPY ý“ƒ”“9#è3hŠ„ö—Ô.¹Eï@ûœbdt‡¿Ÿ¬ÜTÖ»xAÕèè)¿µhtœ( Æ;ÇÆ'ÅE%×ãŽÂ‘[ž?|²¸¶t·û÷–ÈB±? ³“#ó³òoúõØ4SŠn5òwÁ·5ïBGŠ~¯ú‚5aSÜCíîZû°Þh6þh8nþ×¾Ͳ]B ä;Ó)órëãOª!L†‚é¬tü.¿¡&ƒ3ƒŠ¢¥å©ñÅ…½‰ÕP&§˜c”º³p†b‰ýJéŠòWžDÅÞôáìRò¹4؆X S¬o1±Eu‡¶HpÄ8ÀòÒ 5Šud«UÛ-ãlB·òW  Õ¹r”¦Ø®`ªZL'Ð H_t½½¿ìúâ:L®Å¯ã{1Y„±Ød¨Ì0HÜ“F6_Ë4bàR‹ÄÒ†º˜ßµÓµ%ê+–QÎ[@Ly[ºXNU𤿠»ˆÅó¤gåû$)’„¨$ø_£ZÄziùGé}ÙhÉTÙñ¡Bð@4X¼TtW’4J6H7+Zõ_u[mÖ>è6ÌU¢óàΖN¡è"ø‹‰fVÀ[ìCïÐþÈtt¶ÂdzH¥‹ `°m¶5h4›“ Íjš2_©R¬ÖlÔ¾ÔtE™ žw0ÏÂßÀ®ãLÊÛÈóÞÇáPAþíPñ­º[Þoº2¬ºàs9Rõ(ÿ\4Ifò¢Éýf ^²‡~ˆZ¶è‡y=Ò&é– ›,zè„ržäº¦§i«apÔ¼ ò@Ô.ý'ç+õ$÷Bö?”Ü!Šo WäóeµœvNž6œuTû«\ïíwU>ÊФԤYZÞaYÝQtû?vŒÝÂØ‘ÓÌjeqÌ“HƶJfšû»7[Þ1É]ÉSê_¡œO[¬GôŸ¼'Ë+KVÎ&¯K¾fÌM°d[‘ÑžÅÉyÀz§ÞáUû–>/dù¹îáêîôƒ²þ‘ºjze¸bFùÜJFÅ¡Ðï0…&^ ¤LXôjήl&ªN^ Öž).‹6zNYW{™:ÚËB‹ ´‘ódž6/÷Ûì€ö²Ÿ©ôFm)`½85õÜܾófÏÉÛ)}NL ÇÈxY,»pœ=•}%sZzÖ’U)û¨eÜõòq\*û&û"ÿ…¦Ù0_Ö!¯…é Wè˪Fí±í¸sbÍŸE뢻#Žh8æˆwv‹ ˆ/¯Ü]VSðÈw•\æ:[ð¶ä;d‹}yß#q,·ì7$Ø&‘â}°J\­ÊvÝ*¼\¬û®aÏV²¾çF‰U^etDPŠ&XºB ¡Ï ©€ã°&î@|ô´“óÉܯâUÊ&ñüP“[ãNó.ø¹ÔWÐ¥ž¨›áäźúQÉEu©CâܦBê@*žÃ)øä;‹"Á›¾áB#À,6,³l†&GX¦9º» OÓ¨˜¨{ßò¾EGñ?©óKÁ岿µmP2µ‚Öë>ü¡ç[ï`³a~b±›‰©mVôøÚð»zµºÆt¼l OáÐ7—)¸døÃpQg3h¹¦º9êWŠÝÊI¢kü}â"É ÙvÕzyHÒGä\åI%§¥ Tm²êKªzU–¼Ÿ8S¨Üå‰ù#×ÅÏ$§ÿ3`ª¢\±YÇ6÷±œÁž7ÅÈY@nÇF£G¬ïÍç0 úlÖèËÀý¡ÿûO¢JÛX,ˆwt$3ɇŽvü$ñ¯Ý&[Ç™bÚ˜|žÂ/eJ(,\`ú^½^$Ê£r§r³{pV±v2£¬]y2ÞþV}È%)ª À&½±¿¢›ÊÖ\+S„S­¸hHƒ:š"L¦ÏùiÖóT¿ñ•õ–£Èé³Oµüœ×žûˆ‘Ç ËF>LqÔÁWQYƒò¦ø ë!UÂ>%¶‚p?¡“VG½ž;Œwš;™µRâÜ& 0ÒøÒÚE{’1(s(ƒ-8%[¡7!­P­ª7×Ã\ÄŠä¹Ôgå'%SÔ•¢cœBྕ-ˆ0¦2oq®©ú9óóg»Ý†ùàÝÀ¯:¬îÆwä é·’¾¦ÝÊÆ©@&žy5ÛÌÊ~öôÍ)=_²egoH[.|]Ô\2§âiíÊëîë\2ãiÆ+*#;-I??ƒr=Qº¬òyÙ…øÏa½'•؆ÏÔœŠ«UxM]ek ï¡ÞW7‘ŸÝíÈSZý*ï]VAFŒ±‹÷YÂǃqO|DL\–TÞ9vûž;*ccz˜zRpºhÍ-cU1GÐ,÷¤hÏ“ý»Yý¬"¶'õ‡É»WÖ--ÜKl´Kü ²£MþûÁÉ‘U•îÊÜ¢ï O7”pUE?à9dü > ÍÔUi&z‚–«ÐýP[·Ü(:^Uâe¹ÐeñÃCð#þMˆíÛ`•Z¦BW³éÔ0Ö«Í4û o×ЪüÞ…I¡¥à5óPe o†üÁÚ½ƒóø¶]ðùÀJq¸~9½æž—*ëe˜ìªñȹÃryÞeó[£sÚ55òmÚY±ÿ[KJÂ;m!+xQÙ×ôU;æÚêÿ~°­Î+jEe†ö«x\DPè i*„ë099€d| ù‡óf°^†_¢ÝYØzø®y>\‰CW[¢]m¬³A¥a˜na–IdhTªkšëÌ1Ã1ýUð©,"kP¬T:—ä¹ò³RXºE¶KýÈ­FÐp\÷N÷f›z§jŒ–Ož•\”×+¿WµiïBØZ¢ ?ëÌpæ ´Õf$W‘ÉÎ/DÚ¯òËhx…u<^nÏp<µ?·mÆZlrG>›DˆdgKî*s.ÅêÐ^Ð2=¢[¨Ý¡ž,ûWìU<ׯ6ÝÔ”~#ìÊíÀ‹ /wñräym|½p·,g)o±v íkäsÔ†µoÑKsÑèB ø,pÛykßàìÓÆ²…X±³Ÿ£»§k°øÃVåÊòïWuÍ]ËϽdžÅëŸèd0Å”`¨–1|¾â%ÖBÙA`¶e0r H ŸÊ¾ÉÜÈ]ÅÙÁ¼LB¹IÛÈeèÇâÇàÙòg¼7Œ¶¬ÝÔÃü"v|™Äù#‹SAÏcJ¸×x® 1ØkÑ ³-ds·QݹYµ=z»xˆó®ÒgÚcF”؞ܵ´·ésÒ›(hzÊÜ4UÆtê ¬ŸÒetæ¯ î£lö‡…Óf㌠rSþ“ø‘XJaJù¿å¯½GòäÙ Ù•9w½è¶”œ´ ֣ū˜ñòÈî.øs°48Ík ’•úo¹³`›þuÚÇ4ˆ²-§9{ W§Y.XF;’;T÷ÀqÔ[]x¿êqµ´tªŠé °¿n[—÷š6›ñš·Ã´Owó•_Š,sMÀ†xÕ…C""£.ãué÷êQäÊÄtë aš®Æ~¯Æûá/°fb›ç7š»#meÖ6¤…|<éþ5ÁNþhÀä±n1—˜rL]€©pü9ÄW]×f¢¿YfÈ ‚Fñé îfëm©‡®€AK¥å¦µÊtüKÄ“ͰµÊ=Æc÷UÅ~Éס,M¦~æCƒÀyÄ3â ÑäHðµárÓN×ìÝ×ÝÅU"“"Í~)8Ôý‹ßOtã -À{ÿÔhWë!N“ô£å¢!3û}³à4°Éœ£µ,Øì°äþžö(¹Ý±ß²AOIj?B·ÁFÍr¨»°þ©¾|¶Ø‘C¶˜˜çR»9ΟK-ã­}:yߊíµ]vøþKóRGÌõßa«‚S¡<ÃÆróð…ù£é˜©È’j X7€3Í»uåš2£ËP£ jIÍ õ C­Vaȳ˜±Ûöá¶ » Y†Ò‘6h’×/Ôû´êKÀy° Ë õ~ õ‡ýí¾ƒŽ¾P½Ù„ÒðëÎ. ^Š5Û»’ðnv½Cß$­dñ#NqT’·íýðDGg‚ÿÿ¦Æ¬¿ê÷iê´ÓôÛµ°j½ô­òµnœ¶^Y­x$*äu•´ˆÆòƒ‚i«±‚VnûCîÿX‰j-öœ„‘k¦NFxˆŸ'!„G×Ež«jî:!Ý|G&Ñù,«=]}ïÝ‡í¯¼dù¤àzEYÉ«d,e× ®É®) Å:Å,¾?ï/¡…]¤8N_|G<î ¨e>d boc Ue¤ÎI2¦”g»sZ™Kôz¢t‹y6÷¦ù˜ÿ¡‘Þaøè½¨~ÊÊýœ?xnÈã~ïø²Cåá#ÿ:ýÜ:Å%_jùØHP³ŠsTö…«¢­Í.ÏîÙ#«šö ­1sEò’%ÊŒÕÔÚdæáÄᬛ"!Oë±øjÚi«{C„‡pï@W¶H3‡!Ïì–z.sOöizw42­ÔYf ܹ~y¾ Ò.Ö„üE¯òç ámFçűEÿ[DOÌNiȬâö9à6Á6q<á©qSí²ÎÉ‚U²ñt ƒbäÚi¨'°«²Ús1îRF;k½òOÝc¹Muۇ³:µãâPfJ[òά8íezö2öy Þ°MÎg_¤ÍÉú;û³X‘ ¢É;iª¶«r´‚},ß½ü_ !÷vkܺv»é·‚ãlÛ=T¬ÌUà6ÃùBÍ]Ãà-RaÁ.æáðzäriAÚ:Úsìw\½‰ıq žtN‡dr|e©°}î­Ë„õ`†é“íþ‚8j-Üb¡ÉWÇÌ>k…%ŒÏçaùÀ¨¯SѸÊÏÜ*éH§*ns<ê¥æü8>ší:ê_Lˆ”ûš\¿¢dvбî´*; +9Ì÷L2ƒx Œÿo(ð-ûPb“{¥3 _‡øm[°ÿ#ž»H¶s69ÿÙ^ì„ü+½—;† ‡ì©ÖÍ–WP©å˜-b—ÃHW›ÉE}–éH‚½Á–œƒÝ–Kæ–•¦Ëðj &W»»gx>’›±v>vÛA³íÂ[ϰù8?î,õ´zä~›7É×ê9ŠeZ~6úQ©c !q2 §ã±ÆÝ×ýÔyÊ$ïão­baŸe?d{nŬËìL÷u‰ÿ7¼èï¨;QPµªÁÚ'†º˜ò‘|‰¼N:Tö¤÷–ûU0_‰òEÍ‚žâb:ï|NcšPd ˜×ZuèV×®MÁnþK ×êÈ]@ÑHýÕ':ÍÜAÕÍ1ÅéF9ƵdA /Hô‘n%GÁª`a>ã.c§±¹‚ œôª¼Qè‹èÎ’3UU¹Îfé Î":5Cü™cMc~Τ×$æÎƒdI§øûE˜hc}›ý íaŸæ©˜§²zкò!U½µ%ð0ºæ?éÔç[±ë²éÂMÐUg‹ï\çT¨~¥ó)û3¸4ËÏîNÓ¦õÎú&3;uSÊôÌuÔ±Y;R¦Ëù=˜]Êàp«E5êv¡ç·¨§p®oŠí,z˵ëÀ;•©OJ=Ê=bú(Ž=ó&"«H ðkI‡’žÅ_b;|ùð÷úóÊõI &}‰¤Ð3‹Töî·Ò…H´ÐéþÉúgVÄM…¾Ùü¼ë)Jš%oêÿPqÅ’.ßNÛš6?ûõ$ííýUöÛô«ZFÓÜ¡ ‡.hžýtÖ“™ãf œsˆ–¬ê€ecÕ'R´3NMü4!cÚû9²ÅÝ’‹(“é4êF*á]ãŸàßn,í[vÉ•¶#_Œår®ì´ù¢§Í¿ÙCAuÈKˆ4ILpÔpݲ„w‚kÝ4_¡?è‚íu0fØo|æ,Í_Žï€?ÛÏVyša…¹£9’­³,/ÐÖTmoý_hM‹ {±#žxu':ž`¼‡p¶iŒ~»qX¸±Hï¸bt™ìøñ`ØE˜ïrú372©k,ûõSÐÿ~4üë|êxno³½ò&yr½­žIë ÎWÔÈej•B¢\ Þ4'êÖ ÝŠó܇]7ýˆ±Å9Ú½PWñ\\AŽvª'<íîk®ó®‰d_’Ħc?£íµ„†xJÜ"þG '’ñ.Ä(œ ú8£N•«Âé&k Ü׶С%·;;{wz–àÏá«@>Äf‘ÓÜ×½Ç\ù w+ˆuäPç¯9’TáZ¬‘ØçÉfâ^Br’âHuóÜÆk±ö³¶uvŽm.zÙrÖ¸À˜i^s°ßsÑTËzÃ(ÕãwÐ~óHC¦á/9SÓ ìüϤƒ4 4U ÊÎIKKFI΋߉GKŒ’W’ ü¸wxÝÅõb¯ªE¿Ã0õG‡à Hjáìò•Þ&ŒE4ìøt¨µ¼"2Úד̴õ°vêA'rì°ÎÕÒAy ¼cÙ¥)ÕÍ„òõ*™Db9]Pºôpx Þ‰›ÜQ4ˆ;Dbäuäî€ÆVÍcn[Èn,÷~Rý. Àt³>°:sòÖÈæÊF‹{ ‡ )jmç/$éìâ[ë=ãVÛ~B2WVž3»²šþÍKe63wè?"ç$ií™ é·Ò.¤ÎL¹õóoêæT¥Ž‘À^Êæ(ïc¡ìלԂPUÏ"§gž{,!ô4ùæIßgVQ+Y1A’ü$C¶7Á]#ʶUJ*ßVo.>˜Õã ýø?dÝÊ~” S^f52bìq\€G°!ðÿÿÿ —õcS…Y±1Ü¥@V¤Ø ž6Þ¤©7MÚ¸Ýäæºßx]©â> ¸Cña[‘}lÈðáÎÐÁpûøÞÎó>ç†úRN¸â¬Ã¾ä³BN’žòY{¬4MR½—nŒ^{PzFvZ' v&ŽUšÓxY¿„5Ñ‘ñïcBÓ—M¾!øÖüÔ;©bŸf"1ÉSÛ3ænÔµÉ]¦í‰_®x,ï™àqo´çoCiFÑêO¸Žú„muEº6£‹xUhXáÏ: ƒ¬öÆ?uƒ­Ðb—Íú/Ü\t*àkÏ4Q¾Íäq4¾-*ãüÈ$$Žláã˜øW"D&²¹Rr0ÉñÚq¾ }´º`€šÎ6‘P=ðOdÓ0‰i’i˜ÏWiAKmK KÔ®ªIY¸ËŒ 6;Xe)Ô…[\-ýÜX8ç¹C×Ãw 5×Þ³Ýð\ôEúmÞmð}¨¶`ª>R?Ó9Çð»nœ{&FW mˆ™ÄIb>ûϳ)”ëŽÓd UÀô!¿`×ÈdÊJÿKý@ ¤}Ä\ì*õ‰Dw¡W3ÑôMö[.‡ rÞËáLLg¶†C¾Gÿ"ÞP™dˆ( ¿Áõ¶àoâ(Ý‘k©¹¬Œ½Î¡òÉR²I¿ÁáÝÉ«TëãLt8QC¡Gp+¸_éÎD?¼ÿ„Ãb Ñ``L€ÈÒËPªSë"M€rl±o´ÿm:Ÿß¨c|aûlͰ6èM ä¾ 6ÙÇ[FX[€tp«3ÆUjÑk tßëòuuÚQùÇuGõ„~Žáœz«FŸ·7KžùÁ¢°Å8FBÏÈÔP;UÝÃ(®Îý~†”-¤žRmð“È DOGf@qÀÓ@s»Ü6Y,Õ¶Ú¬‚0û¯v ´»fåë5£,OìÔ°m¥g‘½-Å"Ÿœv*ëáy›HÏû(»P¤„¹Ñ•{Jv¸£&i¬ô"ƾÂs…ùÃÜ=m¿"–¬vf–Z/`'ØÖP¿âùÅO »óM¸Âf1èбl„ý»luú#åüÑLo…”¦Î‰¿-‰ÝšIÉΉNŪb^Š>§·ƒAoùÍ’ß<ÿâ—ÙƒÁvÞÁu¥~¬ügÑ@÷II©$CBJV%çʳò¢òÙvy‘ZO}ÞŒu‡ƒuÄ79ÙòkЍ”ÕÞ´¥¢Ú„Oòë¶þ¬—oÝc½À4MKú ã~íc¢M±Î1<M,Š9,X‘~*+[Þ.yyüÊøÑBUÏÜ)WD…ŒÊ‘¡Ù¯ù/åPÂi÷Þ #D.y«~6ÞæÔk·Šÿ=Ï•îH,Mý¬•f5lÄ÷ïuòuóÍg—Ð!âdÞ—vz»y®ÐägaÎ"ã=ËëF+j?çúÝ‹í#§‡ éNŒu¿B!¬Œx‚×"ßÂ9àp§xkb=¬œµ·3MÍ›š«Ïæ¾È윑}:s†ö–i%tI%®¹7Ò!¾‘A1\xÑ—@|8¸þÉ-W7ŒÒwÖV§ûÓoetOÝ.]&Y'‰Sž6~1ÌË›\`RNJ<$èãè^¸Í#wšÔ嚟ŒóF¼^®áÅÕñ½%Ot™¾Es°Šw‚¼¤•ªð©@&«ì*TÇsI¸ütÆ'íËlø7&Ñ»=h(+½|L#"oê91+x˜ü0u=˜-ËnœÈ‘ª)qßÅ5‰ºË¾È~–Ï—2ÂmÒ#ÙëÜß—®©5×M(kKèMékåÛœuúúŒâ¸2 E*;ˆ;&¾ÜJªO*“„©žh=ðû’ϵßVÅ…èœÜ2QÑUÉé,ÅÛô:ÅåoyNzGu§ªæP1’jã9ž>ù£èp~—’¥¾çi9ÉÖ„^¢»ºÝ™Þ"ø_boᯒEEêTù AŒà\Zƒ¢ËÜ—2[[P,,Öh€{ ´¢õPèVÌU_Èê‘iÍúOÛÓyÁs¸êKãÊÙ›gåpÇ)ävœ1öäÔ¯¡â`„·#Õ™ZÇ@Œ×´p›É-žqüb5bò[CbŠqºŽ1 ÛJGžã8nÙîz²`tÅm ,zÓWÛÚcžs3ˆ~ðEË1ë×vÛ$È=Žèwº×ƒ×ì¹6Øi2‰ÿa=‰•"73'ÙÙ·¨}IxPÏ—ÓGÁ_¡ÍôÇ’óÁvÅæÊi5”GBm!º’—à™ÈaªÄÓ?ÐËó#‹vò‹µî}ˆ–ÒL {iøÃžm¯qöuÜq+‘GÈŸPÎ3o9Ѓ¨7D+¾ßMôÅ^™:f1ňxgêe`Ã^þŒöÂ5Øeb&ó÷<ט¨³ä'r#q”ªf¶#°h.Ã5ø3ª™Æ¿^vÔјÞíüw¬‘ᙓôjò%ñ7¹‹®bÜÔr9å¥çÐ*æ)ÙýÄØëÜ‚ešyÏ7êK5rÅ깈v©f¿ºgîì9ísf®™Ç¹:B×Vè0Ífqky–ºŠ.ƒòðRl&n!’(”)#·1È;(ݪí™ÎÐsð[ÇcË C¸i¡©Æð»Élžm›d¼˜×+ë¯ì}új²Õ:ã/çÆ˸wO9%Âñ,÷ÐüëÙÔã5ùêð\½úbú#y³H“8WøR:*ípÞÆ´"ù#Ñ&éómº‘ø½¯GÂÐmôA×JͨäÛÓÒ׋%Šm©]=x›ü`Êô”\opFw[ÖUtD¥ÌN9­=N¬áû¢û\+`ˆ7•eU$Þ ÏLÙ‘!­eˆwf4öj ñicyÅ êþdÆì”«‚Á6I›”8ÙöŒ¶L¶mÍÎÆÔ¦¾£°éæMYƒÓƒÀweÇ7k¨JÌo*è™t%vTR•pªÈ/=‘vݤ£wVªÍ«>ÚˆBÚ-²ÎÒmIæ¤xásY?ùç´ÐÓŠ¥3§Ö²%‹ÉzBOÿªþVyÙ4ÐÑl[˜æ$ÖJGÚÛûÏ’óSø„‰I—Å&y®¼£$#1OôØH:Žë(å0™].Ï’'¤i½ä7ãšcö 6(”`¶7¿Ñ‡—úKTµ6¨fõn|ÛhJ.#&¸W€Ãôǵýà¡þÿ½NNÁÑž9,É½óž Æå{†»°ŸÈ=üõ¢œà ¨½}·U\±ô!¯¹«u—,¼»+"¦xÿä{ 똼#¹IÚÁxQQ~Åwì×ø,”è àõäbà”£íéw‘æ~ÆQj<—¶Î‡N9n9•®Á\ç2>Xâö`ƒJ°=È÷“¼›ýß–K+þ.Rúúg…Dä6 +>œ‹bßãÿRÛØKP-úÆÜÑ÷ B)éB?È <Ñl_Hv³™õ« ö¿lVðLEÙ©T²šZM|Æ#‰&&Œ ’Yó‰ 'o` ñÓøyb õ¨UØ54 oÀ¾àõô3ÖÄÓld^‰\²Š´½I-Ýž)aç°çØ(~WÏýÂïðÖzzú‹ï=ÔBüàyIµw ²ÎU{3ØÌV}WSÛìºÔoägÄÛ%½UO³·ä¤¥—_“T¨(ýÖÌŽª©¶:¼#úRï¤íMÚ[•À&}I|%9£Ü\-œx瘨Ü%õ¤Õ©Öʦ¤š³†f^HiM’ÈÝ«K³>¶RO- ð°à b|Ê ÉŒ S¹ó¾>/}^j²©ŸWY“QIÍó×@>e”0'Y™¸.®ZôP™oÊ}W‡×ÅÖª‹/¸¾3¿¡ÆwhJ°åõÑõ3ýñŸ²Q´"!W•\.ë+þ$›‹üQÖZ“P»¨–(W0}œÍéƒãÏNûOP,JOHemÖ&5¬¿äÅDߨ\ç]]‹º*¥—Û~T<ˆ’oëªíŽÔ¨¸ýÑM¢‡¹”Ÿ¹ Û¦?Ñ(·’ó°H4f( ÜÍð…É{îÿáɹx<3Ë+á¬s&¹|ηήqÐb„ô@Íö)ö½´Õß½(‚|¦[ ³ÉŒwE`*ºÀ¡&æ”Ï·,Ô§è´×ì8­ ,àdÜ¡ÒÆ²$*Ù5Ím²óÄÈÐÐõ ‘~BîöH}÷øwGÐáÔ›Ô‹À¤3¼ó‘bÜ€u'¶šéX:@™I{…Ⱦú0"H|41›·ðïñD´™la’¿Z«”îAö„¡ÓðŽøoÈu|IÉ™güI/å#y‚_êÛP(š]ÊD0½<§èÓÄdr4IþB#Ú­h TjÝ‹ÀïœmìuööûÀQ›Æ6ÈÙâúÁu\îV»/º7»#Á9€ܽ çÓwéc¸úu•¾'^Ó¨“Ô—`÷=æÉ›„>„ýž-$›ˆ=Ä$*Z†ïÇþEQô:¶•ú‰ÙGmEÏ_\¤s@;;BÀ g˜u“!ÎxWó*O +«ð«¾1~O|S8Ù‡‹|9…¥ü)Ó–ìþi‰P:0Mž]•™ ò§”§¤·MûÚ1íj²Hú· Õ¶¯r¶o žìH5yTÍ‚‰õÒ©)]S8I²d§êt¨è%Wk½Jì"~&n–¶—¤ŠªÅ…ÉsâÓêSçÆä˜$ûâJ¥)bR£òzäGçgQ5U*—úEæFå SGòIpWUx•·zleç)0Kg$Ȧ-+𙞕¬·Ô/«õÖ´ówLÈeR¶ B³ylýŸrtnRaoI“¤AÔA|5'™Ú]5¦úDUôŒÖšE;ðduçäŠëyUº7¦n† - =èíà}ÈD»†§ŽuÜ:B†„ÌQܦaSQ[C€LŒ TÞW•\‘4š~ä Ñn¢Ï‘ ËÊ×Ö ¬œâú]©P…»#ñ“Ú3’SÓ 'ç¿`Û7-®—4ôœÙذ±&ªÜPô4Z”Ähx#O€–N–¿˜ååç‹ïú={… £N¢™èyXÈÌ%"¡+Èo®9°Ç8ØÍ¡À{‹_›#Hù+é\þRàô ~I\DOÃ|ÕͳڻÔ¬ï >ÿHYé¡ÞÕ¾þ¯œg¹âþŽG»S6¯É+aâ˜Hr©{8\ƒuCºYç{kïç4bowÜ”y¹-èµ­É[ @Ô@zˆg¡£Åµ´°KéþÐ’2YY?_8|ÈøƒÕ þë½Tº!(¦Î@ù ë)-$¨]ÎEô |œàZL6-µ³Ý •ÁÑȯH<1‘ÙKÎ#GSï¨6äox |Ïõ‹3 ê‹Và»È 2ŽúO„ʱ ä4º÷–-!æBÏÜ=±QØg4× EºáãÙ\Nµ²OÙž-~s`­o8ÿ˜MeîS 5–\K¤uøtÖ ¶±Ï6 ²ÀuWjÿ‰Fâw+ª‚ÎÂIˆ›ŸroF^ý©ãt2>O3?‡BWR4Oô'?1´“î[•YBÖî^ØÂΤsç鎴—îÇŽfvQÝÉ=Äe|±€LfÞÓ²Îý/4Üív¥ƒë@ÚÍCGA‘«+88dm™7F£q<…æQCøÌ¢”éÂÞë÷\,NÓTçør–¨hÉ ñIÕÛÕÕ÷Š7‚BÁMÑ8ñ4Ñ¡FtR¸0ù±0W°Xp(» ä}QŽ­Y²¢´¦0—§Ñ¡à<¨Å¥t@LÎV±Ë m#>s‹¼Ç‚;=t=™eîï¸a±ˆ¯F/Þ7&»7Ó° Xá€r™äuþ6™ên;©g0:}5BŽ·m \à¯Þ‚š°š¯)xæ‹=ó¼q8‹&®Á€y¨©À–dL2½0LÔ/5‰ åö-Ò»²WîÓ|[´"/[ßεíCv€~fʪÏU`¡lO”OzáÎÍ{$ÿ+§•é]v4¸‹¡þâë¼ø: úI†ÎöZì ñ½÷šÇk_“>?%I·ÓÑˬ…Ú…È~ìþ ආþÈ@Ô‹äŸt4ý#%&&¡Ä¦ w“C™çèèò Ö+GÁ÷¡èNZñ$ú»“9C¹èõü ¶’³—ɯÉGî~m…³¡¥P?ð?gµ- )–þVÀÖ8רKÜõ.FgDZŽàZg–«èȱ™\^øùe¹0n÷÷þnÛü•/s›ÖÐ$}ÓÓ/4Ч_ðtö“˼a,Àg‡2ÙTf {)§îcÿº³áÃðe!Ôê²7q6€!W{«¬ X}Ï<ñÏ5…f^=ÔøÏÜ›Ë6½ñ-TO·¯t6ŒÌ8¦ð¦Qš!¹ÊŒžï3ΪÌÝÔ­™c52à[ãëC´wØÜ#š×ŽꙉþØ‹‰h2*-‘ƒR“d¯X®Tæ ²ÓRó”íÓ÷¤mÍhÑÅjOÊN'§((ö‰vÅ?ŠžŸ‹NŠ'g©³Š§5®ªB+Î×ÚÔ¶r&:A;¶€‚ox—Ý,Éwöô *’yFÞ‰.ÇLèÙ ž5½!¶ásÕðàRäœêÆ´¢ ¦O3'F ÷ † J-y]µ/‰ž•ÄêŸj”•di^á-¿›ƒÔ;g4Ϩ"’tã­{J^W¥—;˜Ž9e´LáÔ^ÒŸ}3‹FW7Íù¾¶É–%¸x;=.Ç[pß\m­2 s¬}CVcAeQU'ú¾ñ¶õÎ!D$ê?[*òíò"Õ`ÃòCñÐZmµ©tvàfaÏB)d3ÎWp‘ÂÑw~Œ$óÕ©ØÛw–ó\l°-ûö»Û†vÃĨ^BGÁË™¨ Tâ¿ÐS=ï¸&ê†;h3þŸã€‘RK•Õ¼›põ­ÁõÀ¼Ë¼Í}ïOž„µ&«uúì+ƒ«ù\díg”ƒ&ˆueôÛõ„e¤cNõ!’B6Àö1³‡yÎ,`øz[‚¾À ïï*Ïî{¾„ŠÞ‚§¢½ð_¨fšb*Ø0Ï_˜GDyÑRø¥{?4ȹÿŽl”Þ[Ýíø‘kšuW "õ—ºúEô,c_jfjyš)³cN½f‰z‚1BŸ,÷ )VÙÅÜ"´sê;ÁÙ”þ=µ+‰b:Ûq;Ú<9&úëJŠ÷“¥È™”½¹48ËæSÅÊ)ùª‰ÙÏthÚÏÂqòWéBåé'i²ø³$(ÃâFN7*mv ¸ XÀª+¯Ô¼›±¯4 q="Òý[Š×HF‰u‡çñ?–~ð´]Ï»«òÐ?”µ«yÚ˜ÉÏê×°‰³¦ÇäÇ=‹m+øE4PÜW.-~(—é:› j:¾ètÍùTM¯Ê@ùÅ¡©Öc¾?«'A¤Ÿd7²¢ÐKE#k‚þý9Ýeíuÿ(¯¨ï“Ñ,ÐGô(+™YYJdŽ^UœÉ_ ì‚ïs—ù^aQRñ O!ëµ-|Ç­UÖw~5ó€|ïî` œ†Ûî: ñÅ¢²l.èo`š+2HqÆ4kÕwüvB‡÷G›é;Ì^çx[.äÍô.ÊH^b¸-t¾&à÷«xÆZ¥kvÈ]=À»î­_×OGø˜—uåW’m±IØ=x­ý¢å;— Z뚪몇íõð#Z, Ó\$²s1ÍìÈ,÷[°Š¬õ¿ Þ"EŽ0×Oȯ_ÉŒe¢Oa]©UÜ·Á2Ò< úÄ9± öÑè\ÏÈ¢«!èãxk°Î¸ÇÐcƒ­mÁô$ß0ü¹í˜Å‚Ýä&Z Ç¢aXžã–¥Ao¹!ÿ¢i›Šf,§„È8lyù„ÚVÏqn’oèOÏ6¢c6”5*³{îË\µî[[˜í‰¹ÕqØ€ð£TG\€õÆûSˆSø¼uj ŸP‡™Q”‹ Ò2<šè‹½C;`¡+Ð}4q#Oñ $F Æ~åî0wØÝ1F—’¦ù»à˜5Î1\4¶ê#Õ'ó§šK­V£y¨y§)dг°ÿ¡¿o~`ýÛ<Õ¤°;×Z.Ù‚æ³–Lx•ÌüÎ)=³øgž-ÞXþ$»Ž‹äj8;c¦_`ÝÐb/÷ƒç3ŸCGqÓ½J_µôòmò'ú|«`®RÈÕ¤ˆ>ÏÚ¸f½‹ïéóøfv¹’˜EZ¨½Ø3W#üÙ¾œ_Õ¦µËº+&(Ù<»¤¥öSh»í~Hl2ƨ@ejzm¤íj CÎY‡Ê_‰u©»sä÷Él– bòyX u2ôµÎPǧÜOi«œ›Ò^ò"ÞQ~4q Õ\–WJ’û”AYµðd- K]ŸÒ [.‡S5i‡&ñëØ‰Ñݤÿ“OWÞµ7ù–õ«VÕv*¾Oáóâº{ï^hÁ ø$~=Į̀J–ïæÉòõõ=~lø¹Þšªº½'~x\¬à®ää°D˜›40y•ø³¨Ÿ*Ëî\­ÊªíR3«öD­ ¢<7g3”ïmµìÆ&o•ŽÍ›ìQ¤ŽöûÆô”„ÎÉS¤=³E:ÖIµK|¹®x»žû3x¬øcUXýƒÆv Þ†‹ jÿ©¬,[Qþ ´_ Õs³xfÅÆŠ÷åB;pBÁ ήÐq$ÅÞM*½ONÈ„KÄGbOG-™ùÓGn=;‹µy~)^o;ålƒ7ásÑ3XVƒ: ß-,ÀÚ ”g˜×‚͇AìW7 S¾Áë“þ×þ9…Šª &s8D¡á_ÿuŠ%Õ½Çfï˜=•lïˆpNÀn!%®WÐHÍþ0Û{[øTî<#ãlüÚÀ+VíFÿÿÿ —e|SW€q6\7 Œâ­{Ò$MÚH%n×ïÍMn’«±z›z‹v؆; ‡ 2FÁ€1^`ƒÅ0\Þ~=¿s~çË9ÿçyª\;ër.fú-*ŠYH—Lf^ûš >„CÛ©÷îC”Óa÷õ´¾—a½ù ‚Ÿ£gÉK.‘ã6a&ž:ΰó–sžk"µ˜RQ(Ê]Ë®ðž Öx2]ƒœÙß‘CŒ! |;úmÂFCì{­‘†¯u7ÙKžFýQÝ7ï+Ý;mØ8Iß-?:1Ü2Œsô‘Ú;—©½=©‡’Í=÷À¿¹Ð6ä"Ç´h}†³ÎcÎê ŪèÌPv1{Å«ó>¤Gs‘¾³Â'6“=ÌTÓc¸z¾È;Ù3’ÙËìc6Ò·ø6>‰ïk_?†ÛÀ*¹6Ü$öSÌEso’µ m}ñ³y1w“Ÿ&lþ`o{ò3ôÖ\ˆÀ¥¿®¶oÜ]¼]_Ÿ;ÞÖ.j«·¯­£2¨øŸÙMcÁÄ FãÄ$â6Êã°f¢ y“ØA¾v!Î1Ž¿ÉaŽÛX'ÄŸ‚}oj6õ3=Ï?¥)T‡Uu…æVîõœÃ¹›s.äü“ÿWþmý½ÂðÞ¸Ó˜l޵D˜'˜ö7Y¶bà d„Ç€e°MÁËÐMèk|‘ã¸ÓN§2¼C<‰Þjï6×2çKò¨kŸg›÷kfï5ÂAn;§å¦Ðö¼Ê˹“ì…»ZèÆý# îòµðI|5·˜çzs¯™Ü>¾žKâ: .ÿ7 n3»ˆ)g¥Ücå–0N¯Å•ÖSÆŠoŽ>¹xw~<ìÞ íá7¶[@ 6Å|:ûL֟ꕺKævÆ_Ô*ãÿ8G19 ¼«z% §[â{ˆ Ü]2£¸Ч·I”'¦}¥“},³>™åR†‹VJº¥™3Ч¿‹Òøô6K%{2º¦­K‰eJe-’ó™³:‚9ær¦lV(…êexh,²|§v+7ä\´/!•äJì<úGÚR_¸ûgÕ³Ü>p-%ó¶jÄe±ëf©âß&Æ'|N*Ú™´?ázÊîĉÇ&Ï|‘0 ž\ZØUÝ6ܧd¢°Ø®–䨦B)P„e¹íWóF|ZÁÏ M«R—7Ô†‹Úº>KÿžÿÃÄñf点ŸVvjÜ[±¶ü—Ò’ŠOµ_ÔÆV..ÝUþexFÉ‚20|'l _7Wö­Ì*O,M ݧÒìt|1ÙÛ{˜IGŒiÇDž­Íœ<·•g|žóÏìS©ûøWÜgæ»"8¦¸;û¶dZ«ýE'Ó_…ÇFâ Þ;£i':©/†fÛV[ÝnÛÉYç©ðo Þôký¨…È›ÊâÐ’æEØDr0RjÁú“ÝCcê§Ö&Ö6S±ÔÁùy‡ñÇHò†xè1Ò‡ ®GáepnHáËÚÛþý}ãºbU±j¥½3wÜ32×§òä,ÍúÒ<ÖCpvöñÖ j_¬Pï¿rÅ~²Ò÷9ºí‚Ϩ‹ßúÁ¹š°ÅæMó®´>°±¯ Úz–“{º ‹ ö9džùÞo¸M¾¤ 24*°5@Y/µžÜ†Ü¶ØM;õÛ,§±¹fÞ¶ƒyH!|ÒvU¢(º9ECÁø[ì8^ ‚ñ–%o~|na^ÍeU@éÉú"ÛªªR¿R÷ÐLÖĪúk³ ‡ Í]Ì.Ëë=Ë+ûL4*÷ÙË ºùÑ<´™»°Ø(¢3 xxæô1fûƒôö"T¤c¤çw߯þEÂ÷ÜÉVbçdB2߃u²Ÿ¸4áºpƒ+dúRÙžŽ\gçê}Ž@µð7šëßʾ&f2ÛoÏ ÷ f!™±_±ß1*ïï|ïrï4O$•€ã¶_m Øì%+7Ϭ¦«‘Çø>ü-RHàõHŒu—©·Qjhg3BÓìÏŒŽÑLÑ Î{’5'åQÔÊÙ.Y!Ã(™JAšK™ âÕ²ŸuM¶|½Þ¾ 9Ÿ½4mM žÚ!=S4;ýmz†øŠè¸H&š(Þ í&Ÿ!{ŸÑUzZÚOZQ›N§®NÞ’xG2ï Ð6$ëˆrîq«_S…î ÖÏ%þÀuk6!öøc¼ÈÜ3û²£¶B—j§ËS³ãd‡$1™d‹ò¦öå‹ ä´“ŒÉˆÿ$ãd§%›Ó¨´s¢îâ‹Ù’–ŒòÛêÑŠ®âC¢ŸDK“Ó’·¦íK=,= ü#¼)¹_Tù«ù¿\s3,säñŸE¹¹W‰žkÜÌ¢ÕÂKì¡·Æ)IÉ Œ§ èp%ÙXQÿ $˜c“:'ÜH%»¦i›™˜.?__LY‘ðÑx¬0½êYÅ‘šgõ}ë‹ ÊÉÑÁæªÃÕ½Ëh_7ç"Žo*6…ŸÍ“/k[ßÓ^œvqÊÅiǦ_ŽÛ£É´F§¿QÇCI+^^X~¸98…yÚZ»°¶gø·âó•YUçËÆýxúÏÆW]8©|_™¤,»0#TYUšädîÏþYV4«gl©täeÊš´ ­\EÑ/èR¶s«wœ ‹(9Ö ¸Wy`ê~Ü®6fèÚ‡BSm#áuÎHf ý¯æIŒ5î€ã†ý©u•õ´ãx¨¸d:-3w1tÇœÎTÿ† 0'´Á2~™9&c»CÓ©‡ÐDm'ãø‘î³Ú„¬åyGÙ‡ècÀýŽ=yqš]9S¡9žm©Þ(…$:Å(åO9«ôŒá°bGÆ–´‰©1âæô™©¤åÙtÖÓL|¼òŸì J({|FOi¼V Ìüè‰lPÒï±ORˆÄ> úìj­xRr¢ [é¡ „‚2¢rÃ4Ë#é’êô“/ºïÇé¿è·ôr&u¯,´heÓº¹ñuQµ?Ö¸+û„»Tì. ‡~ÿ”YÒ¿”<Ì™#“òd0Ó¯X°£vA·ªåã`[ÈëT•\«6×DV5W&Uï-j°âMê¨Ü>™¦íœäIuò¡êpo£)µ,þùôdÑéí[Âë„3K#WMOK› ÆWý í§ÄŽgHPl»eƒ<2ƒÃhVêzÇÉçŒÝS„n§!‘””_á~•_žºi²hf9¾9N ~!µv¿n-ô^G<¦uÞ~ÌF×FG“3TXô!¦€Þ¸:óB} ‚E¯Š"ÙŸß‘ÿÙW‚»uSóƃÏC×0%²ƒ,'ĸ ýeÿ\÷t^w‘ â7×8G¶Ý ÔØt÷µÝE2B¨Ú•ïåf/ +òeÀyd4z]»=û¡X+I1hJæ_¢Úð}Þ¿)ÑÁ¿¡t[Q¤ï*]/,+žZßuÁ•ÀG'j¬7ç™gŸz킬"ÅÉü$è+z\à®'Ò´T‰™or¬ +D.ÁàpøfkôŸrѨÑ:XÇÞF¢QÚ€ÅÊ©ól4M:SÁlð.šæ "„»ÐÓ#Ó,ã‚üÚY:u|ÏÚ˼y‰ìÅw¢i ˆsÌÁ‡"l9‹m ¾p7`‡á¡¶«Ö‘Ö×Ötèšf?gþÁÔÜú_P ²¬±ÖY&ÙPÛ3à=Ž?z÷q‰‚Žï#}ÏùÜ ~;‚^å•0Åì:.Îï¾õ_ñ¾ñôå1å´›Up6_O?ë‹õ§û{ ?úßn~¨P((„J¾„Êbì/üJv?ce£ØCÌC¦€9Èôà.sJ¶+ÓQpÊ}‡¸ì[¶ÿ Ízú9wï\_PÕ­¼N@¶ÂSáa`€Fk¢­šì:æ>H²ð 0ß¶Q»%Oay ~²„w»NþhÐÎ;i§Ú•ãÑ¥©JE™[¤ÕâôŒTuZûŒ|é)iO鮌“2TîͰ¥×Š·‹›Åãef…SÛ ŠN¹*’ë¢Ýó(WþG‘&asÜÄ# {ÒÝš®äKŸ |øªü‘_©y›Z—y-÷±t}R^/ïî<é¯òEpï„ÝAœûÛLR%E5YµókŒáå«+Ö8ëFÖ754šr»‹rD‚VxR¿¹æ\ ]$6;þů:pRŠ*í2Bî>É?Ƌӳ‘ltÃÜc¶ºÒÞ[ïxÄ”3]á#ÈV¨œ 5‚ Ìû s–FµGg±°ª?D ÁO!ï·Ð^ð(1Ý1íB¬Fú@øÎ¾ P[­´±ØºÁvÜfUÖæÖ\° RÚz÷dö1³— 3‹#¦òža7ø$\/ïz2ƒWð>“ÝÁŽåÍBJ 1dõïb_pðßøçÿô¹øbáðŠïèkð!ÂQ>ÒwOèáÎW0ïô=æB#g¦±ˆã÷ñgÙ#ŒŽÓò»ù¬Öý´ò²Ò{€=É:*…zêl"ì¨^<·J¬*Ë-K½y§ýnwë]÷áñð "—óÀ%ÖYæïM»;KÁº÷ þW~ÉoûE (¥BÙ¬–Õ]ýŸft­"ZK¤ñùW—ÔPÎ#õ.µA½,{³,B’"+Í6)ÿ’¤%ÝHÄåíŒsò¥Š•ÙßȾK_š:%½BÎÚPtÁ®â‹~­ù^æ S4tL™]#6Êc|1A¹ßXðwÅ—K ÄF³7ËbjdõiµÆ°¯Ì® w®ù·~_Aç¼!i½$ åuòÈŒ’±4‘}LÉžês7×õ¯óU 7»•mW>ªjWc¯ÚSÕþš¬ÒdY”€ÖÌs¼*^zY¼¬ø”ùCâù˜K3ÆÅl¾ôV¼Ì\"rÅ Jáä•™5ÒÓ¹Sí>“Ûfȉ·¤ŽNŸ"]¥ê&,ž›53½D±ÙêQÕ§rfa1-Õ•ÃÝÑLi±=gaïjœk(„S‰T‹ëŠ{'¥Á¼ÎýÔµa‰Ê›g¼â]‹ÂoØ*ÇYø¾úuƒ}(Iáç_Áijg|e‰$ÃTó€àX E&k5¹Ðc~S0Û»ÿ7?Ì}iB´d‹¬‡P1ͱÓóÊÑ›š„¾¶>â_mÉ{´«³)-mðW„Òý¶smœC‘‡ä’£"G=~ÐõþÃóœjãÕ"¿f+À8Ë ó`ƒŸ©ÈRˆƒ½ðz`3p­µÓZÀážPD@ïÑÝHPgi¿bfk;g ƒ· ü€³«çúºñi–éÂub_{&ÓqL§fÎyÛ³wØ >Èåò=Ùîl.ŽŸèÒß=…µü=þ¾/¿Õ#oøn&avëZžæÄ¼™ÿžÏàSy/kavÿc “OÃxè!ì>ßþ¿Ø4/é%ÙùÜva‹/’_Êøfn¦w¢ëŽÓèâÈoÑ&PjëoídÛ`ÿÃ.þl­X|LÄQ9‡#Ï8g9.#íáÏ6@{Äö¿Pj_Û¶ü‡ÒT³ŒI9ŸÙV›¯eržhŸBó|HãýEÊŠ ÙFålÓn(ÓE0ÉÞ¦äì‚l¹ SI”I²¥r}^‚ý¸ýšf¡²W~|Û˜;8=/."îDREÖ8ª±¨¥8\òmè<¼¢oC©ÿ€ygFfâ#‰ßÏ4p‰ÁØ`<Û:†·LRÔ©ÖXw«²¶èi¹ð}éÇšE ú¼‰7¤ ä9R4õAÒ² Äz¨ ½æŸZmíÁG­£ve·p]ÅÅò*­•Å5¥µÙša†‡· ›¼S*êV8ü{Îr.þÞŒGqõI »¨'`Ÿ˜K޲@ZÈqlÌ\™z09'- ©ÐFIª’¦'_—?±ë€ æuÆÖW–üœ…¢¿¤Íz†xB¯æ,õ¡þ^Üir¾«‹ËG-%ÿ„gÂ÷QÆÙ@ZH¿£‹ î-.•ý!«k^ŽÑ'Ü8I¥Ð-À<@o¥;þÃüTòìÈꙕm? {M ™f¿lKþ>x¹{-,yeÓ—ª za[rËô¨»uªNBÿµ|†ç2¯<±uÖõÖwÄeâd^£¸*9/íߥ!#Œ+íçô'Ó2Ý ë1çÓISÉøu¾§ˆèË¡aüêÀMßQáBði‰Ž+¦²ˆO¤šX‰“¸Ó3QèCm6×|PvµëÊer¿ŽÅ4ÈZÏç;°ÿŒ–˜æþeÿè‚<Ÿ¡¿#Œ£…SQA„ÃÇ{t´Æ©óî*ü¦è ~>+wŸpöpÁÎû(ì‰Ñ ¶C3Ý~×m¤6ת‡íÁ4+ ¤YŸšŠlß=ÐZ08 t!°KœBNÂQP9pÓ–kÜaºm› · ]][¨¾žÿÿÿ —e|“W‡qØáîî:J±Õ]“T’4ú$Ow’´MS÷Òâ2`¸Ã€Ã†Ãxq÷":|°òöÃùþ?¿ûÜçºþ´ôM U'È3%H½/Hb’€ ñB½0K¸ÈÞàlò\eƒRå.R?¨°»F*—FeFfýí^­ÐòuÙ¤ö÷ä{÷zƸIušÚAy/¯Èò'ùŠ¢æy¦¨ƒÅj±» )=•‘B*W&^tÕÃB:¿‡Ë—ìRÕ¯ÌwÎÞ•õƽC(fîï¨T:(·¯³Xc쬣ƒ+Š…2\&¨ÔîˆüEtcGá!p Ò >’ñÔ0Ì":Ðõ¥¯†Ü¬YÑ0«_˜?qjšÎþ@™âÿT8°R§Y$þ›Tb‰D¶Jµ7AÛ4…‰»5»u{´£“¤^$û)Ü ÷åÊÅ6îX&€~…Éb‡,k–1{o&Ã7‡úšÃ°O Žv$[§Ä< /0Ød¬0Náýr!½Ù¦±ÒÎ_Ðxd“ó:0ÚY(¤‰$ÖÍá´ÀÒc\cHãvDO½g_¡´ƒ­/€cFI×#å¢ãfÆ3ÓÛiÔ+׈ì£'zÚ{ãÕëÊKy—Rž-æÒYÇÅDUÃß!x|ïïé¡Î–ôr ·Û¢ÞRÎ*ÊYù¦üRÎ’ó$Jî­ü¦Ìs;T«4KÈå“„u"¬L‘o©w„:Jþ[<#V 5V©áÖˆ}ÜbfG÷{1Ÿ¿MW“ Ä;<ªwê>¶Ù—’+¸"þ¾;Û}Áy=²I¸˜.fÜ2®4’:5º!î7èYRØ>wªÿ§Â‹®”\.YSz¤l@el9QSý¾lsÕzDxšß?ÿB¶ÊîtåfåG.8WqÑÒ3Ö¯¢¤‹LÇírue~zEp‡ˆq‘aÓË'u˜´ðÇaÇ«ˆñNÈz‰ ~œ%ºàÏ‘ 4mO¦ŸJÝ<œw‘De" TÇpï¤,¹Wæ7µ„ãà‹ÖöÈD¸d† è#ð=$ a¸´Eiâ™E~³nÕìM*5ü€wæbÉfž*T*½» ªò&ãMœb<‹Ç²ÐFا—I=»’ºdhöƒÄ¸;0ª!pô±Î%õL 6üQ·_³ q›Ýï¥?€NÉ;Íí-ÁÓÑyÚW¶:ëG€±îDBs©md+q¦ÚÆóò’j ¢¯É+3e$Ë *àC|¿ø¸ÝüPê3ù Ù„ °žMU’¹ƒîub¶e§å/ð•†/£‡ÑIèS¢5Í9Žp Þ‚fاétÆÍø3ºZ¼ãðTËKG¹\_t¯â|ů¥­J:6žÛEz_oÏ!_?Ïæ<À6Fò§¨6®0hp'ã¤~sZ¯´Ai=4M´~M}¤¾“-ÇBºÞ@÷]k]áuΠ˜ ×P9ä¢+zÍŽdâ øhâe¥¢ûDL¦ë鹯g ®V¼#µñÜÉ_Sþ®ü×ℜ*·_ýÞûÆër?QV) •,‰J5²(çW‹aê}©Žo-?Q8õ³û…úŸtXxÈ̤?sÏåýî^ÞÞ*.Län²£dEMQÞ ­¸]2ëÉͼ¨¼åg³ Qr`gð ÈãÀ WÜ zå@m‹€½ŽÅÎRÛ7ã'K5À–jvgÄ8€bËUç-—ÛuÈù<ã‘q‡s–ØÑ—“ÉSõ)“b°¨’ÄžÀ×X`š±SÒNíïé÷S6hÈDöwk”UþœÿØŠÄõHªMûN¿4½…v54<ÿlÙ…âÓE;Ë‚JñÜØñ„…‘éaOÂ>‡ý³4m ×£hJG<ËvQKm—£v„§FžŠK¨Ay½@w)ÙÍú)ÈÅaÏÁ,(é€ÉÈ ç³V;.%Æ´€|’[W0Æ·‰ A^AIö«¶Ÿ]?p¿øù—–ü\W¶¼dHiçŠuÕÔByÁöì÷æý\zV°Ø_¼ÊœC’YƳνàÌ'´bµÔE<$ĉfo¡Ûg>¶*´e`ÓY3;…L‹6»cT¶8â­Ùoÿäü´À«àRø,’† hQÀŽð´qÿ#ÏF0´È/¶»û*«=‹|ÿæW.ãMÁàUøG$ ˆÞE'z©Zé§ÈìŸôGê‰ótúáô ãeûY8™0Ê’ï«ûcP“ócKÂ9¸ «¸T2í–KnOËÜžT;žºÃՖ는À‡È—ä]Þ'-ÄzA…Î#)g¢·EK<†vSF朧ËÓDGkanÖzé²u°¶\×Äø—m-°G]•,eº,ò*U Iˆ ”ïä”eö&ó`-I1…J'_w©HxÊÔ±Ä7¤-zصÅþ‡5Óáw®‚Nƒ”ó”ˈ¸áïœßa¨SÔ4Õ53r*7lâ¼¶Ãù®ƒÀç[£`OptuGÏC•®M®ÿÀöŽΞh ò'ÂŒ¯…“l˜.¸ X¶­B{¸üÎæàV´·Péì+n“Ð\Ú-f+>?W¼©ä|ñÌœu¾zÑýN½¯\Q>È”äݱ»ô–Âý)’OÄžÒvÙ¨ÀJƒ¼Däøã̲){GZ(×J{ÙG8‹(ø8æ³0J¤ÅRá†ôÕ]¢æ%tG|ü x¨ìö×ÎÐed7&¡Ã #øÆÉ;n:=l9¦?õÒýà цíFÏpýkîg»-BN[ìÚ7Ivpp…a¡ä¾žyu2ªGBB†àmš¥tAZ<éz|\¼dÎÌû0Ñ|m¦'-9IѶI¦™± KÍ5WåýJ‹ËwTô©¨÷õF^$Eïg¢"£ÿ­‹/âóNgõAƒ£[JÍjʆÅDd§ÇOf<v|º'P;Ã:à¶ Ý1y‹w&ß ½þ§™U“«y…súÍ—n,¹­Y;ýbh_ÓeœãüÛ ßt.ê[_y¢ª®ænÙ|â´ž 3ÙZèˆÒÆÿ-Èä¾Ç5óŒÎ ótãcð,|-C´ v1þl å#íxÆïFAo7œ³Ú¦ƒçÍÑÖƒÎ`¨£ÓeoÖbG±·¤Fþªî3™¯,!ÝgÈ#”ÛÒ6u¸§EîÔ¢©âq}×AGF#óÐÃø|d¼ØVů#S¡=ðaËc{g{×rp°m7ºM¢²¢•t¢Ø+Ûž[-­'–àµ|Oas“:ÍVd–”õ,þÙ5Oªºë\šVêúù›+<‹‡Q^Zæ§Ã¹ ì‘ñ9˜‹ˆ×»¡½ŒS~J%qt½œä½áI¶C-qɧDOs>¤Ny~s†XÃþÂnv/æêÑ-î]þ52…‡Â ™þì2nß’È'—dU{v;fÛ›b Ô|r>Wïæ=ƒ?Þ‡òŠÿȃ¸4.@üL~ö:ã‘kl@ã«,tF‹Á"©_&5wÞ4ÿ÷Îü»L¨¾Xá,Ê)²”õ©ì^Ù¬¬Yi³9þŠ÷^3÷\±ð&¼ †ºÂé°•ÐQ¸y‰Û-¼Uºóã™}d(Û‘lgs¼ÒÀ|àb‘2Òer }ïH‚2ð\Æ ÉÀck”µµs¶+uqLƒP˧qëx»*ç^-šœ§÷Þ—jUÝ'þÂOwóù?„.'>á‡p‹8Å¿çkùx®}#ùî+—ära)—Î û°9r–ð_è“8H¦Ã©§Ô¹¹çlPãäçB,׎n‰Ž7ƒQàI'⪇ò±!Xob¡AxWƒ³µó¢í¦~Wj‘a·%˜‚Œ ´ì25;»ØÛ— ¬+Ž8ŒÞ³Òégà€xѹE sKÌñ1ëÂÅî7î®™›k''ßH~‘t+VNhœ`žyþ“²O\†NŽé—ø—¦iRûÄíPAî•Ås¦VÌ(™•'-ô|çŽ-N¸=7îtüƒØÖñG´ÝtA1‚&N<02y¢gæáy1ÚX«m¿ïi’†Íž7éBÈ¢HÙø˜PÉIP¦+ßõØÕÍhÆ>]0ûgÇÞž‹T;Ê×,¨Ý Wþ{"80ö¸9ž)vÉßš÷knHþœÂÞ¥@I]>,¾pþírñ)²àúŽ šyxê®–9g„'…S*ËóO‰ ‰W4IžÆætƷЛ“ž›Â<]”5H-qËóWAÀœU¹³Ü+iJvb.B},ýÁ ÄXlÂPS<‚ÔU9¥8=WUJþŸ ZåWjµlKC\4~? ‡{ ÄTu·t‰ÈÆÏP« ÇȲ8ÔÖÄñ •!5É TªÝ„çµ§ 땊4ò½=½…Oóô~÷«y•ó>Í©žQ tA›2FÌçøbãð¶twü < ns"æ¤_ ¯7‹¬Á1äx8ĵƒ‹u?õ¬—ÚŠk°ZCÛèõš¯HP·pý‹×ñCdÀÝMÚ†ã%¯GÈåj¥%Êþìß³ºUö û*‚£åƒã+aåó¥×Þ©%·†è"v9Œ»$¶”z0á•Èá$7‰ê#tbOñ.Oˆ'þµ$Y.G²¯jJÉUЧ¸[9XÙ¯« /¨T¯2ãØ^X±k$:Aè\ä¾€¯Ã£ÈÞ¤b©±äp|³ùkügýd¯²B¶ÅÐZhtc“ü Û£Š5H¤õ-@µ¡_â‚#ËØ5m—q…%̾Ðù7Ú@}¡Ë™Œ•+–¢ÝC<×”Éü.~£¸€¿È¿å†sçØ=|G὞¬eêÙ|î wšÝACÕê ùº@rSé_éö\-×’_$<‘3ÜÝ×ø“Ä{t$DÔSsé,Ža9ÆG?E·ÂÃЛÐ*è(t ډñär8œæx jdÜ\ëP`ž­µ]‡låjåÅ?½Ûòzä-a¶XkËEîYª¥™~NYqwν¼”˜¸VwÔ4Ó¼ÑX™š˜³?RyD;ˆQrV¸w"pòQ¦¸ºÄø„ºè±ñÏgÜçò [”ž(lîwÏö?ö¬²ë´±ýb—D, Yñ:ful‹ØØ˜CÑ«ÂÛ ûµ=¬&r¬ƒà'¿'¶š~|bëŸ&üÔ:b‹c1£é^LWƒ<5•GNœ~êÇâ  èSÞ»ÒO%§ÊjJòÿ¦ôŽ~m‰y“b¡^zže?ò9ýÍ‹&UÙ+‹ ®2žäËñ¹Ôo/ï'?W³ÿøƒKϬ(æ|5óï†ÌDÏl:‹ÚI pw뉰ŠÙí#ÿŒ9iÿÑXca¬uEiÈœñ‡‹ÎfÁ‚¯P6q¿!§á‹ø$¤­c#V¬¸²C=•ô„d:r†ªÑbº.Ž`¿:ë~xrX:òÅ™å:F ì~éÑ ;L#Ÿ]5äSb¦ã‰½1œÓKpö9P±‰ß»;f¾õñÔG° Yˆúàyè álö _/u‚fWÆ{7z†²½€OÖ±è>r%^ýãLq”Ã,`¦5¯"¶ëNë¦Jlž”þ‘õ]ò¡÷œÓÄnžX‚þ‚nŒ-Òa³v·ÅbE\F”ÏJ8s–$4eè*ìW‘žÈ|¨}9ÑZÍ&.;ŸÂÉDf#FýÂ.¦ì¸@>$>À™NˆI–6ZÕWô[ƒõ#]KÑ;Ž0—(y•%&½Òx:&92;ççå‡û÷úÓ Úhòÿñ%JIÌk#¢‘µÈ.×QtŒ‚*|Ð2ä3Öž¬i$øÌTg¢»€ýʉì ú^Œþ`ÞŽ¿6:þ!€À`±@¼¥¥9Š"C©ô× kà¸áfúŸÞÒ‘ˆzèdz!ÙœØJ\$óù%ÂhvÀ|/ªvuÜEXJÅ1álkz#Ìôd®1³ø ¼•[/©žùž9KXËíâšr¸|:ŽjÏ• žÑîz.ˆÅÖ8ËÌËí9ônì KˆÅÐ(¥1}ä ü Þ ŸD¿"{¡ ÀVk¬õ;{g´£Î2Øú—í<  ›¨ÿIß¼í²J}^•šæ°8lÐS°ÌRöR?ííéç™I”™Ô‰†ƒFµÀ¹ÎºR73!8úQøàèÃÀ O‚ßÒ$Ä]‰ï¿4zräÅwŠl¥gG•Õà ®ä¼Í+ öªäîQ÷#^†õ iz'ø‡ˆýÑŸ£ë"‡†u‡MƆ<ÖÅP˹¥)ƒ”˜+†1šß5äúp½¸ t7¢YÞÈN š&¥ÈÝZ"ULªXîÿîµ<øMÐãÙ߇ØLŸÔÇ™'ršúùgúo¹u¸=¥YÌ‘4B<êÿË!»…XRÏ™˜ù'm‡ØÞB•é[Ê¢©’­–-Ow¿æý¶©ÁÀ]{Í¢;£{lÚINä÷ˆØÏ\ÏwSû˵Á\À *— U¶,Î9è —z>å¡ÂGv÷„~Š=&Ú“»©lœóGÇyt Ö»ŽWGÙXäúúlg›‹“Äâ;úñŠØîÈÔ!nd F¤ÓüÏdwXƒüäZŒ…A:—ÉB«ÑÜ }Mä­žÌfè‘ã0ú„B×€»‘cÈ{”a^ £5 ¢ßêÏÛvim¼q“áFô1Ó "©sdŒéoresi¬ÓÍ\ê<í`4þ ¹)ÖIí™´7€h†ÓðQ³WsêÅ?ƒ6p9£=M™lÜCÓl€'R{(u—:OõBFbc8Jy­¬ zÂM]– Kˆ=ÛÆœKìn ##ðoì34{“‘ÔNŽKè^î‰p[ŽÈ²Z C˜÷ôö87–NE¿!}ñBTÅö"-œç!7ÞƒHÃÿ%î±í½^_·³ø 5¹ŽyŽ÷XÛü×Y ­ÕeÙfN±÷räÚ‡€í·«y‚xLN$>9†ƒÛðh¥ M­H¨Ë_;×;ÖæÚ ÜB~$Æ‘{éMb„üR™çN–üü?l8kåPæ û+?“àëýr8ÿ¯4ǽHý]2q©œ™ï!&pû…íÅ·¿ðÇI ËG@‰î£ö±ý{ôŸÆüÕ°,wæ´ÁÞ!õ`¡mµù÷ Ðü?ÓéŒÓ–X𨵯ËXœQcØ™F'õJFÖg}ð£þPž²ª5Xß\kÉ)çã×&0ú1v·Õl6›FglÌ8g•M.½×`щ?³6á”±YÆîb u@‘>0alÄÜÈ›Úzh¹–qgg”6+þÇå|•&£ëô'£Z† Qa©/m{㢃sÂÿù.liðª óÁ‹Ã›G?+Š8÷5ruä;[&ß\n+wðx2Og/É"ñ:W”ÙAö˜:,à÷(‚¬*Y_¹²ñV@ÃZMwÌú;¨!n6ÖsÍ—é;îç{)%Û꓎jÎj^jÄ_ü·åV0ÖÍÇÿ#âáÚ 0ª6e*5€½¦?%ØÒø$Ožï}þC_×-.cû’à¥ðmÛCZhŽÞG+±ÁTŠ3Râ‚3Nã–{ÚÞ.8’óLØÎüéÝMî¡Óß@ÑâŒÄ´îp•Ä—Zç›xw&OÂF‡M€ÓÁ®›N °ìÏMb¬t¬gÏ6N‰×¿NÚ£ ò+d«Ûα6·là Éü²µ ¶ 1ö{DWv=):î‚$‘@í#»ø Í# å¤×›ÏÅ¿·”`=á.&Ù4 ³Øû·ÏN›50LDlT…ïÇ^C—m¬&]¯µ,HëL„–0™aô#bÓꪳó¶æÈQù$›lÕRU™¿e^S–2K%“¡‡ô1r]B¯á'Š>šâ›JcÜß‘»ˆ/`¡Ý£ýªY—Ñ)ݘ‘ ÇÆQ‹©íÐ2OÛC3Ølkçè‹ Eî0;\ÀÈ_ð-dÔ‰„‰öh®)ƒa#°Î.2I­ ïPí¨Ã´’«4(Tò#Wc®ÒÕ „Ó9› 'änYµãÒ¹÷b Ê<$ßã#l×à›˜@M&2lÕð5º»÷Û®$ÓÖ¹î#Áæ Ú¥šÚ·:­!Á¶Øù{ÃBB1P^ ÒB_ J‚žOWÉeR~cGÍ7†)_ÝKÔÇÒ<Â[ñ¿„iÎÐ/è¶Šȱx:<–ªY’~ʶÓ>Òh›ÖBÛd ד7P÷ànŽõ©MÒ~6}50ú÷¦¡à\G¬ígÛ*óis_Ë+®élþE©MîÅþ™Y¥Ì"û_¦:ËvÇPg¦â&„ ŠÛ•éìåêm>“žnè`h›ÖßXmY£ Š+Œ1%d'î°ïÏÚQñ¬|]ÖDþ¹%=vW|Cò“ÔÍé³2.QMóBJÃs©ëñ}»˜Îáñ`Ü«êójÆè°®‘_#–‡‡u EC _‘ýÓÏãÝ£‡>LLUxž¬­ÚUÕªúÄœõ%;<0>#Íøç¨­c×Mí~N?zU0mY‘µ¢Cþž‘Ø>jQÆb‰+çŠfí+¸–+qõŸ“÷éSíãÀBQÞVV¿-,Òˆ=Çi@ŠÚ>ÙpýîD?KY#yškÁº²ÀêEM ÿÈM‘÷‰^y¸ZîMÈn⯕5Â;r6ùšŒÌ&3ùABCæ±üô"ªÈ“µJÐ!‰ÀSb9R¥já6vÁeïqwµ”ÅIÛjcWqm™)äTB›‰`4ÜUÅ;Bƒßpm$S[OF|Â=ínl/ŸQx ¼_ÞÒXèu“ͦR)¨Óv%£ù±Ê ˆÃPXÝÅž!ß° H?æ69Òõ—s1þRmd3±#©G4myÈ<öþ_¼™û4¶Iê^Çiá–û„¡ô‡%¶Ä]–÷®‡¨“ÅýNÖc?ŠZú?ôŸ'ËpËÔ¥¦p¡pYÝ.ßåša,Àùè©ä'bC¸Òd©µ@²—ðò0n¶‚騽Ԛnð§U‹„£\r]ßÊÔÎñ™šuX*܆Þ$æ.PSù'îC°Œ²4³p¤OÜ&¦Ê\$UOþÃxè`j%µ•þÁ;­ôï9gª’b¹y˜í%pƒÎ çÛIŠ¢´ô¼È;s¹ç{½¸ºKö"÷L)Æ`è¢ÐϽA¬dŸAs]+è±âJ>;gÕ%ü§ÓÌ×”hªSΛþr\F»ï©ñlsn·Ÿ[ß‘÷$y'J4·’ß*UJko×_\&è…Êéyiî°;úcýÉ_‰(ò?ì´Ýž©_­é¥’ú›.RWmš¯ÄCØß¤>ÞϾsž=TƒÓgÚ©?h¸gHÓW›Ê\ =Ù|ÕYàPme®®ÎÑéݚĈ” rQÖ]pöHa zÝÆN¸ž¦TÄ%ǧh¬iãìMsÓ®ézho%o3îÿÿÿ—{S‡ÛƱÂÃm+Å Å uIš¤Ñ&iÓ&Mãzr$GrâiÒÆÚ¤©b+PdH¶aÃ:üg /0ÜaØÆËûžë~nùU?b&Ð%”™Ô>“5+:½æ¿ª]Îec8ÿr&pï°Êè')ï8*ðgx`]å{‘i˜ð¥UͰ1îP'PûåíÈíŸC§î¤Ûòd‘éú¬m™æ5NÏrcmûlÝlýÁÕÑ‘ Éõ¶š%¾kªœlÝÌÎ3ÿMùƒC°úˆZHVäZ¬´Få•×X-i³zó‡É®’ øH\³fP¬ÆwR·¿ð-ï{°$ázŽ}•WË5TíÙxΟœÛÀ ¨¢B:bfkš§ÌÿkàPè÷èçèO±+Ó›R¼9^kùu úuhpà°SA¶YXøv,# šã†{_9ÛÛ³bl…ýßq§½iÊHjÅë-ÕgÙSÛÈ€²f~x-¶ÔÔlNÄ7C…P?ã6ý$mwm±!ùl;êbÃlymqèki…O*çcî÷9cs®d©Sû&•%ϦnÓÞ‹Å"›}3ÝßáK‘ 4:/&®úÞ)0úΜ·´£¦MäJ¤ÎöK$©Ö\³Èƒè/7d¡)¤„AïíR³¦^ÕT?ï…Qz÷Y{S~dŒÑm·ìô®v¹&J}ÅU%µbØàtòw¬ ‹Ãzï‘ ±¿G0¸é_¦5;vgnZ—® uŽíªM¨­Š­ ÅÜלÓ*G’3»üˆ?;ðÑßZ…$±ÌXsÕoÞÞºþÔq¹êdð‰®«žåG Z_ 4ÄA—ÁúnêˆÎ®ì£Ök¨ŠÌÝ IÔîàŽäûŒBÛI|8êalÓ•½4üeVá#-mX–Ic< ÿInD R$ǵ::®â¹3Ù‰t5 5 6Àž£WŒÛ•Ç#ŠÓTŸ [Ñ1`¼XÛU6D”+?VYŠ­ÿ]ÔPØAéTw–~(l1¬Ã¶Áͺ„Bc\ÑDÃ,A•wu#‹uk ‘~¦‹f®‡¯ƒ×°Sööo1¦r¯@N€8)ÆwÚ_‡° 6œ‡7znEz†Ž!÷ôÅÕEùºwEq :{:rÏÝl?b£zVšKÌÛÁÁè tú-%R¯}‰–s@l,{£ß¥j“§kÛ€G`µi8´Òô½) aÚ߇FJ¢Šª ŽZhµö…´‡@͘À 7::“ÐnèdÙÅzÃÛtö&ÇC×cÇÍw¤:'º2í[?W½»'Ç}ε¸|—›êlr.ònö‹½Í–äfÅŠð˜ÛÒÝúÆü'” ÆBØ,ì>6Û K¡í*‚’Vsos›yz®W.‹+_:Y™¨úÄßĺËÙX@`…§ Û ÷K†·Ž'¨'à6Ü6^•½)~)u*Ž•A’岊R™(ÈšB»œïâ~ô./JÝfñ½’À{²½ü¶§ÉõÂ3À]Oƒo©F ¥ìËì ¬¡¬3L”ñ)Oè䟒ߓî‚5,-%;GŸûõ4:¿b\ø·àiÏ,¤Ee~¤+ª¼Rî>Èê›øXùÖuÓ#NÃ…MìåÞ§9rc¹¢œéIé¿ffå®§´äJ²×¦ŽM^š–ÍIô¥¯zQ¿Ê£ôkÎG߆çWåDV/÷èéŒYÌe‚|]ÃõÒr×µ(¸4çY]ÖÕ‰ßö¨Ç’¿„“|µeáŸ+»ßI>Îî>§h ÷ÀëÇCO#ñîÙ²þôfÞ9Qô&ß_CàÕý¡ÊQn`–ï¡·—7Ã}³²ªîKl|`PE{ð`ô@ìpíüzKdœßã;è{VùS…Ï—VáªH©x]Ù±ú‡Ú_VŒÛú¤©1°?4ù!^ÑÒÚº7ú®ÀFÏ/u2Ž'Èi°ü¶1Ê´ eǤ×uû ÎÈû²Sž¿±°ÙÐÙÙj=n1¸ ÐÓ*‘bŠ¢Ÿ.¬óh&é †µæÖÒb:ƒw¬LòêZíÕK°;&¡ôˆ|XƒŒ†vkÞI©Ò†1VùZ ÔåFžù/_(ð™ -ÎlÏ›&àÊ5¹¥bî î|õVÛnbš6‡ý„žÉ«)ðBËÐVà‰éª‰©~®JÓ—Y[î’kábU|ÖBÚ·YúadŒ]m04ÀpœI fk;yÇzÐìÄôd­ã¥5¬QÃÉàxÚ?9©b¹ÔÁ©Sµ­Øhí·Šßlë äÔÅLÇ›'a-¶AŽbW8RÛ„/þÑ®Tt6Âðm³Îˆš@0,‡@kì9ÁuUŽêo*§°n1°µXÀYÈÄx•è<÷hÞÞ×ú;¿ßáI¶öA¶¾ä1êÝM¶¹Äô=6Æ~ÈóÖQJRìR÷^ûD²Ä^í˜ïjvÿa+°Í"×_¬›ðóä\g:ÚÕpGg‡†A7LzpœŠÌA: 7áýp ¸\¿BIl¼ÏxP;[#/í#™/ld>¦`oà­,` vòÓøË «eíò×âÂ^ÅÕâ»ÒêÒDáRÎOJÉ9ÙS鸒é…"ÎɼæÔÏ)#²Ù¹<êi†œ;®h¼ü­â³*Y?ZlNA€ó¡äp[¼WÜÎB(÷¨E¬“Ì¿˜ÿæ[èçi¼ j'8ØZàÑ. šý*ûYÞ ~(tk­õÜÈ ÃÒ¼ŽyÙW¸/GÌâ€ÜgJA®¹xWa§åÓ¹‰yPº!}KÎÂÌÍiáÜŠüB×;]7_’:=ëýr'¶6¸Ú2Ër6ÐVc¨õD ‡ÅƒçGõFêï´ŽÂûì Ü%ÕeËãµç ‹Ç½ÎÕØ!óèŽÛ±Quë£ÍU—«…nyQ$O=¶X£ºˆ^«X]yÝ ‚íò6AœæªÑζ}ñ·†ÀPSxs8P•Xµ*p»â¤ïk„ã[âøÃ~žÊ3Ë«>­Ž«-‹:‚| w(?ô9œzí«¯Hóß ·ÆNµˆ6>ª»\Þ7ø¿JÐÜ@=Ö‰ÞNõàA¨RÁüvlBFáÃWåçÕÆr½HÒž/âIÙY’ë˜Gsvô>r¸aW4¨›õ£5yšÓ {K~´\Ä›±TüÖº¢}—k¥uS|è¹ü‘Ä¡Úfšœ5©5ÙlÅ&t–}ŽeðH{K øhVη_1&QhÇYÅ«ÝåœþŽ;@1`Ê{Âál6_$IÓ~)WôP¶¬ ý!žªL"2\ñŽ»ÀNÝsÄ•aýŽÈÇ|J34Òê‚v€]#D<2ÌÜíJ¸°è÷ø2â |Ð0Ç|ÀfCÏ›ÁÝ4¿òÙß2U+Tß*ÜF ;¦‹ž°a$6Å%w©œ³qtÆø±»®£R®\dX÷%p³F¢©ëjŒ×ûÌG‚Û£†pؾù:JÀz¡r¸Ü2“Ön¦g£}#ÑŠÉP±mmŸµ§eº¥ÁVj½HN&8ØLÒa{å~âXbµÛF;ÛLl¬#»”ûœ…î ¾÷uGØù›åwãsÓEðœST`e륅JBÁQ¬V¯Õþ\6=×þ OUÌW5k› Àà¡XóE û³çsòùÂdaDð–w”ý‚Ë>(jáâtbÓØ,Î~Î;ÖN@8»D)ØÇfò†ruôYsrÆç•ÒÀbT+jéo+s~r«lgL¥º]:=pø C? ]Q9ßz—臟†5®¥Þt[ÌrM\ð”Ù —€©h‘¢HÐIcÁBÖ¦¿e›ËÚ¥'åH‹=ÏX[ðk ãVIoÍ åТZÖ8õä„ᬼ„ý™iRU}åDkágñ Sº£pEÙoÆÏÖ8ÛëXd8xÐòÜ1¿o”šjŠõ§ñç0DlÆÞ£¹Pð"8s¢¥È@pމj ô·ä¹oØH²>¬;¢žTú›l½â’~¡>j^…ÞA^cƒ‰çh%´_Gþk¿î‚õ1ônÂnÓap$Ô†î"&‰¼F~G7gzoš³sË™ŽCÄh+&†ƒf».Sÿ‡r¢‚bò ¨½§[ä^lÅ0.Ž}måD’u¥ÍCœ ê±{DÔÙ/ÙæØFÛZl-öÎ;–¡ÄôÊ-¡óžÛ"kœµÎÑŽ¬DíQÛàgePíB¶àr¬ÔÑ´Vwˆ€À…P2b€£ðägä†.ªÚ§ÊTíd±yì ŽGü±Ü·ì0'©`¾ I8Gp‹[ÁbçÛ™·¹ Žl+Ðð[xYœñù꼌¼™TˆÚ‘>6?>ÿ[—û†ÏRÎÐd*PE»ÒÏÑL+™Ã+gŠí‘~K“ÿê; ¾È‚q =¥(W@»@gP;3Ët¼r¤¾°º't„û,/>翜§TkîUêöÔ2—¾æuI€Âøî§÷ãŽÕ÷·PLt]6­b@“¢¡2öÒ7ưž×ÊÓ‚¯R§å¾É½›¾nþ„ùŒÔ³é¯2¿Ëø…wŠìåo õ­<ïÛú¡¦´vnýŒº»±#¡qèdÉ\…Ø:³z,¾-8ʨ§]Ê»”¡f• .™Ý) Q›õßÏ¡Ä*gtLô“_eæìÈ-£ ¥?êTàË"rÔ`ê4•v¤™õA¯§|ˆ»Í:Ö\c–ùÂU¿„Ñü•”mÙ?«ïV?>ôr.ðk"c";ª—†ªümþA¡¢pm,¶6’zçßäTQRnõ¶††F×GIdŸUf]a›b_åëóššxýtýr}ž:Ç0ºbþ &ôh²¾ÒBœú°®„e9ki&ß9Þ[kÉ-–aär¢Úê°lAÚuˆ©3vŽg@2]’±š‡Œmú5ê¥ÊÚ¦«¸Å"ÇÌíD¦9 ¼nY £…køMùø”©Ø#¡¾¢Ød|nôðŸÑG0jòKe„b|%ÆIÕ\pÜ8ª¤’·ÛC–( ²+Ö0¥ìeÿ8 >ÌþÛ,ù𓱕È6˜0¦+‰F"Ç‘¡ØFxªq~K^†ƒ`ÀB¶¢ÐÎdÏ1‡¼„½'•¯wÍÅfKÕÆ—0­ÃêˆÓä&KØC?FOÜbÝNÞ°*¯òI¸Ín½o}i/6?—ï”R´ÿƒ3Éó–¥–}ÖDqÈvîë‹¡Æùàa Q³GtNÂP§áœlñ–ï,çÉxò¢Uè̲¿¶,Ç-g¿^™µ’ÿU‹¶®ß<ïñä(W™­:Ax½÷~`°Þ`âp¸=–Ù£oˆ×ÒñÏ>²ÂàZîøÁ~ŒòŽ£‡_áëSþ¢üšÇakF¶™Ò p[èÉ_Í6ñ?ñS †s¨ì&îDþðÂÇ¢C™üVîjNoðvékeX¾Ahf.¢Ë²g¥›©>Æßô̼îô{L’+å/\‘Ü–ý[– *yn©RÔÀ}ÍHžóïmˆ-&j%¶M%/òöÑdôÎÔ›ÙñY–,nþ[ &»Ã‰UªŸX,Š:—š÷šñ*¿cÞYítÿbi‹,•ç VeÎ¥˜!~»v¥«Wue´cݧ¦†¦÷ª‰Œ¿i•”]M[Rþžù"É:·oêÉÌHNWêRa½¬j[81p©"3p¶:·öVT[åº|ËÐOzWùš:¨~{ «9^¾JÔ/’¶>•ž¼~ÿÔ‘ó¶äòU»íjìUÍp<¤å¦áºá¼ª^òNyÉ4ÞlZŒ|¶)ñצj†¥“±™ˆ¯hv³É7†zé\âÛªX…U~"SG‘g¼Ï,¦ú‹+}nÍë5½qo¨cäf°±âh€NŽÕÆ~l xå!0˜ÈM®^󛋾5&j»*@‘£êÙÐ @ ^6í‡[Í9ˆ éÀ²}Ê~  ¸©‡œ³ÖZ¿¸y¾|çU<‡H³tÁº¢³‘VȼŠÀþà X:àzÀ©OÐÕÂ;Œ5êBåøRR¾Ö´ÌÙß=„n%›R?Sþ’àJªy#ú«9[µW3æ›j¿æ²?¯)ç%õ–பqÙ¨+tò$†¹–N¤G—.bI _ˆ |¬h¤+ÍYcYö•/•Ïðý…ý}nËÇèïÂæ7&¿®šTî÷<µž#¿ÇúÚ&Zo[3WÌS šµÖ÷ŽÅöuî ® ¹ ìj¼‹o òÁÆ}š¡&êHüg_„®Balâ5âF›_#­ú äx›É›î<èùìÈvh7½'¼äQÈkj7Î….áâ8ºï‡Í!ZO¬ 5Áðp ‰½4ehî¨Ò€ŒÏ!/9_»´Ö=–©VÀ¶ŽÜkQ‘3=£I‹âé$î|âN/—y×;ž«U]J·à)¿}:NÒ Ø…HÝïí÷2ï,¿ÐØË¿ÃÓ×qË)u>²³-q®‡¾´J¡7½|¯o‰w|ù×òÅvXÇ¢±7ˆy§Ùñù+òÝÜy|Yá.ÑÀ‚/ü¥_½(,9Pv]w ÎÖ¼á¼Í½”ž‘~(ï>s4m[înê+fkÁö7N yJŠûŠª § š(ï'ν‚e‘ý7DK0ïPþ¤C¬Zf#BIIkÎn,:à]½¨=: «ç(NqºQf ¨~Ž¿ •{›n¡Åø7€g öGÊ”oÒOSX|‰ «½Sש6¿†Z7ª¦ØsšVÖ›q–:2÷DÆ’¹/¦õœÚ>½_Ú˜¼%ìŽÂb]c¹¿ªWDr¥á~Q´–“V×»zF¢£kÃÙ&FíVcc4E·)½(eenvn,{XN~^W•ØÙ±ª|æ¿ØI>¿+²™Ðrù¨ÄÝßB€Œƒ¹€FT$i”¤¢3#õ IÕfßCÃUh8x—}JO›´¶Ûn¹å2ûOÓB³<¯±?çÈõvÅ뾪pZÆ#â/Ô‹+æÿwíJ×-[² wϾ:j/‘Œ-G?!ױю¿*ÿ-e+ĶbðkäcÒCzÉïH-q mÅKÉΧ¶˜}¡=ÙÅÇ)šÉI c±Ý ˆ¬T¡E>ƒc˜¸C*;{Œ6„]PôR_%Jìvt"4á+ 4âY–+–~ä5Û(Ç)ûb+êè^îtaHXñY0”·˜Õ–oÈïÁûOpSaÓ;L-zT|º°oÑjnOîî²R%**åÿÁãð‡ óúÐÓsJ³Ïæ,¤L Xi-¬6Ö;îáÞî'áÁÂ|%ÏÈyÌðqÆH³ÊØœßó ™§o¥]bêÙÙ¬/¹‡Ó¶e§ñÿF;º:§ÌT]ç‚‹¹÷3˜ymìZÎ+V6ó.S+0%öp.§{Æ®ù±4k¿1Ó‘ZAñª ê­‘¶Ê?0“ò ˆÅê—½7³‰"¡p2ñäéó{d$QSö1þ§“#*ʃSêV‡¿‹Õ…Ž7<ˆüC$Kœ¼`N%#8¦vøw0^Ù@@õRgË&`·Í ÑPÉ ”‰ÇÙ‹jîD¦š{•Ê‹Fpq“7ÏxÝ‘ï±bô­ÖHQ¤Wêú{ª××´å°‡ó™þ2§’bþ-¨ \̾BŸL¹OeÃJ_…-†¨Jšò³óŠó3µ#°lÛx§Ë–î1;Ù³ít¯jRäLÕÒŠÚŠèS«Ù hL·¥©?´YŒ«ÍgL>Ó;d$ºÚÜ×|Õxœ¦uÉæ ÕÖ8ïf×(â-Au ±'[Î:¾wÅåŽÎÄKÓMÝ^C/¤îv@ ÑÁdæ!ߘ!ðo F=ÑÀFú›ÊJ»¨¦‘Zë:Hî2,X³D㸧)þ5R€Q†÷“¾‹á'g¥—b¿€ÎUâC¢¾òmª]ô‡ÔÂFÁ$æHù÷²Ù»Å uK~v¬”wA{Zö:?ºOâ!äøÒ¸ìmÿ•Ühšm‚†M€,2±áÈoè¨Y'ÕðIDoÈ€¿³˜ñÏXβ<°-´-ÐÖTêªLá¾âžüé%S¬[É~xGü[O8˜Î¾^ÁÖ°:ØPUäØº¨gË26ñÖ<Ã8XeŠ!s¡ÏP12š¬'›T n¥yú¹s¬qóZ:9Γlb£ÿšïáQ²„„-ã-ãHÜ1Þ½ßòWãáÇà¸Ëǵw³?ÅSño,#\ƒ­ýTýô'*ËÃCœÓVeZQC©OŸ5éNæÍÉj¬RãLî¯3OÀߣÑ™`¹‘¦îjãÀ-ûoöŸ-[€&³Ö6æBµÈ7Hgp–mŸî²Þ ±ÀRcTÉþ²v¯Ù÷n}Ô¾‰›NW-²(áf”‚êt£ònÛHiùÀ7þ9¥ë-_Õgmä $Ozž½‹f=ço*ôâ")è|ägô ™@~CæQ!Ÿz°å%=—¹IáVb•£8Vøƒrˆä_!?¯Fð‘u2©-+EÓ‚·¹ö»çÐíg”O ,¦‡È;ú[¯Ñý»kŽó–ûoï#ÏC`‡X,nÌ]“ûJ8WÜO;x¯Ý›{8g¥˜'Ú—£+Œ6hiWñHh]Á”ÌÛoɇˆã%û„çÒ&ÇžNðrX’e¢a“æªL'Ü üKÌÍ?)‹–ŒÊ$ø&‹—}/÷¦rôÂùÈÇ óŸr‡d¶g%ó99&ÁÀ¨6=˜ñ”µ3} 'Q$ŽˆÎg-ânçì]Üñí¼> vÁÂè™àÛêk«jB™¡æê¶êªþñh +òYòc¹E߈úˆwŠ-9Zå×—8½LqLå”ê‰5+;•íöÆÓ1ø@¢Ú&l¶l-«¨n®8SyºöUí]_bþÝô¤s{ÝŠFí-Ën÷ïn^q—`lMÔÂ~sF‰™ D\6Tè2¢;Û*ÆTÙ\ßÎÀü¼%vßÛp¦qgÚÃØŽR­ošê"oMMç6ç^Í©€6òû$2¼Í1磀˜3œi9wtWóliÜôQ¬r ²±ÞH~“GîMÐNôÎG9„ŠÉþ®3tšc ÓìIa.›?™WØÆ7Œ5©Ú•Æ ht!¢É`?øo<@~øØŽmñ¯ Üót ç —ô Ô[ŒË`ðÙÛ|ØnÿÁ¸Ý"n‡‹mÌX>ËŸ²Z8/¹†øô.˜f: !ý˜ìez±‹ïëN¬Å|ö9¥Øèú›< î1Œ(:É-âÿ#Z/Z¢>m.÷k²|‡Î&ÆÒv‹V÷ª %?O§7ë©{h&Ò‰0oÑÖŸÄ×»üß£ÑÆ }³‰¯›¯ülNDoÛÊÌ~’í>K·b•è$ÄWé5t“«Ñ³„æÚçUÕ¿²‚ÈA6ã=\6ÿÞà‰ªÅ•+*S+ÖçÍyY[úl &yÏâ=€;Äggr—¾H{ÕpÆRŠ_DPûcë‹xlÎ3ס ÇŒŒ€v㕌 D|G.vN`nùj½!z(‘†=‚O`#uŠŠ;z:çxì†6Â1öù@Wd4î£W0í4€ëèˆÈ:ïJM@®Ðʺ5œ&ãEçÙåYÍ™C¹oÓþ{a܆HwV  wÛ½B*eo1kõePƒwaÉýÀwÞ&ÇLÑ z:SÛá›Ú9E„4^xP Ì9š+—¢Ò†ÜLñe~wñã¼cj6Çù­¥¯ø¦°&›# !…_³® >ri)šÔ홃•yîIÕ[܉¬¶Œ?{³gO“ÌE±JF5J1›[ÛÚ´¢ä”e4{oR;g=¯£xtÎ/™ãRE¿ŸiM^˃¸ÑéDÄ“Õ.\%Ê\J²?ü$ËwÔ½ؤ9iXèS™X“U³¹úcզЍð¨²ÅH»}.4X‹r¤SüÑŠ«Ô¨Æ— :ÍéÞ°¼vi5XÓ>U®šÒzÇâgl“ºÂÏùã ¼ZGõÖšáÈŠçÄûìÖÇù#kŽ-r¢È+ï‹ ·êF¨S}ßÁ_8HE쓸RA¡¬¿~7šCø|{ÊW×> í·O*Ú½¼ÄqgíÍ·å;5ýY»¤¿Ñ3ê_6|ã’è@ÉÁ6ëSG'b·Y£j2lĆÒ› ùYéwÓYªfšv>0þ. ë¡iÌJä‹¡J¯×.2—÷°Uà<‚k 1ÌÍX#}ÕÙ›1‘éyø!ësk¤  ÅxEŸr«EàPÈ`»n÷ÛùÐØ'ÚGÙ?Y~7%#=‘e*6Tíõ­µ5©?j8àð±õ)`ñ` ‡…Š©Þ÷‹¾®^þYp»æµfUÁ]´§»ç$t^;[›~ëØ„µØ^)ü‚½Æ{dwÛdÃsz#öHµW4§(8..tݵ Àƒø¦zf*UN–…óã,ãñLšrè xûDÓkm3ô%ð8ؘ„ýŠýJél¤­#¶ÀYƒL0¦ÛÍôb·Ã3•ñK±ZDF|ÅúÛ÷A/ŠI¢c‹‡†üL rÅöÂzœ>æù;t·\_®mxÜx¯bSÅweÛŠw{†Ã—aïnÙê²€Oéè‡WcQäzì\?„çÃ/m~ýÛWj[`¥ßoדï‘+èÔ‚Ô çc:@ï#£ˆŸ 1è´/ñ?ÚáT¨¾Ðº¬‡&cë %Žî:Ì ÇÓ®ï‚ÿöÈ*ú¡«oÉã šº¡È)*ê*OOf•°FðÞ Þª&BL·ÅÓ@NU},Z›3ØÚÃãOr¶R_\ÍÞòba¹­‚ïÛm{R4/Û-)‘fJ?K‚9'ò‡ÈOK cø]yJþ©K¾M:^´+ónfPØ_x›%ÉÈà­J½3+³[ÚÒ°ªyƒ/5gkgæáʬÄÌbÑ{COb´òI¶ R•ª*Z%÷窸ˤ)–wò6Ö½¤ªd}Êgöx^kFvFOöî,áh)»Î9)~"ß xüïª&–·½‘t•1Îrí©Ø>^ÿ®qt"ÐŽ§½Jµ‰_Çý¹è/§©®ª¡¶&¶¶°ªÕJj¢ÃŸªÛ+Ï”o-¥]-àSC¾æ{Ë1fYñÈÊäêä𑺥á?}MßBÝ«éT\M>s5T~©º\ØìÞPó2MÇÍ‘ÍWYÌ‘ð"gbùÓú,÷iöôDŸ©ï²~'µen¬;2S—„å:?Rm4.D¶Ë˜aæ‚f!é±<¥b?ð„Âßú! ´ÇŸï1pºîš¼AùÙpÁ˜ž{Dó¨¸G@`ëÎç±S>AN2?úß»yð'âŽsžw!qF5Vþ6?SÛ {Oñ—ÆeÊkª:Í¿€›JpÿêªÁÕ”P€£‘w1ó5 #ž¦ê{ÎÄY>¨®VŽQÚå̪œ¨&8^xJuD@kŽ0‡ ØÒ¢Ð‹šü:aå¼êóå;K¯zæÿSÖˆÆ`ÓƒÙuìÆ£CKf¸®ºW8Ÿ99ÌT¬ ²n]kž ­‡Ïj;ç­S\3¯7•êzj.)ïÚ?‹ÉRÇÇmÚî&qüyaõ\s¼ ®#…ñYô.—Öû—?Ó½›Ž ~qy»øÚ|óÝ]¯¨xòCÆ;®;Íå[ l ›"^tBÊ2¾¿þ²ÿˆ¨Š˜3À­³‡™›@½ƒ÷B;Ú½‹ƒë+OøSqÔ òû2T¡×öÑMSž-LRÞQe«Îæþ*\"øïÕòš´M†»º îˆOþ'È~¢Ç¢Ý–¬I"‡P#|›Ù®ÂÈ'žÅ ›üùâbî~9mFVº¬n-¢Ø#ó0oË_–‹LlnvÆjÖ5NžX§˜?‘E&ŽËHå.çP™ZnŸäÓÑœ&‘9'+«$»Jº9ÅBç†ümi'“šSõÙ«Ðù¾ ãÃ3ëž”`Iðhz¹ÓCÆcûà(§¤jd±jVÅ™*Q»úßšôZiíþðÈð¶šIÕCƒ!b¢ù±m'¾ÍõK)ÐôfiѼøš…åê`7¼-»´ Ì.ÀK¹ŠÃ²ÓIj‡ÛH=±\/áõÉŠ“½6þ… dSlæ‹;V­šY÷oÖ¡èª ú©zoíÄðŸþÑtÿÆÐÃà$¯ßs‘,çÊvIáó”‹ Üä—œ!ŽNkÇÍÊ ê5ó­‘ñØ<ê; (9õ™ØLœÀYx´ ÙŠ @7€˜ï¾d´„áãZgè:¤´ÃKÑçØ9l°Å«°Ú>;Ç“­ÏM[,Q¶ù€ô˜gf?Èè•Ñ“wT;™\Tv¢&Ù÷Ô kXzÂp8Bí=‰{ ºSçÌ)ËöD3$cÊ5ˆŒ L?˜d–8õwï²$Ï>GÈóÎXdž×T”¦VW¬& Z¤fÁv]‚wKq2|Zp\=ßöÐap¥8¿sݦîá8Åòž ¢öXïªîšÙà'°Ÿ]f{'¿ <¬¾lÏÂoõÈT§€lƒ‰¶B{=6ŽúHÍpдÑ馦¸úz˜ýAÞß¹r‹²ÉtÃ:§Ñ‰Ô1*@ ðäJËaå_ÄçlZ`{à–{‘§¾Žqmí’>¿(ä8TC5ÛUL,Ñk¬‘–³äk²#öÞì1ÏÕLe¦é…^Aj"Elt>RDYO«ˆVæ43ÝùÎÙ1 )ó¹tBYAõšú5Q¾ÓôNº§ãŽc“óŽk³ÿ@îro½o{ñ ’-ÎËøNìWtEÝ·Gú­Ù¢‹Pž7®$Üx›nŽAZ‘¼xhé`m2¡'cíQÖ':cÁXík·éÏçöËïŸû¨G^7•Þ67N5<3k•…¢aü¶,vN†ì²³µ~ aº=ÙÂ;ÙÇ%JñápÑ?Ò·ù9y%Ù‘zÌ7}Žv]zcp%3%½{Æ`vlú©¤# XbkêcQ,¾¨üZɯÊã©I ³RV¿*«œÛžQƉÊlMËÏqq¦¦…RZÓǤoÊÍÿ‰ÝSp‰  Žsÿ¤6±Ô‰ïcK’¥Ù|Ú¾òÞ1#¹lš«9(æ "sF(ZtÛ)Ç”Ò3UÍ•»j7Åžœºø§tbò¡TZl_mMÔM°×Ö0u»ë»µ$,Uº.%lŒéÅq±b’?þ¹cÊdîÌÀKççÌòŒïGg {íô8žM3´ŠžMD«àÙÈ3Ø^!Z(¹†,ƒµàybQh\Ép|†5lÜbã Çð…øP|>9×êî(—þ·ùPáÆÜ‹E¯ñ hæ‹m¢ty±–«}bÚoáhúçû ¶£–š¹*ÆÜ =!7ÚîÕwYÿlÎØÊIÎèZ“U;Ì€¨:h~Ñ;-9êÝʆÑúÓ†ÃÖº‚Ú?‘¹—´"Ùbö ÎdÑsåXÈl檿5 ôu(kýÏ P\B]Á–Âw±X îõÌ[ø ôByBµLY%U ºÉÄôÏž0xœ©˜¡¼¤ÁåvÓ]¸ø 8eÛŽû™±Äª…žéiG¢í#¬Ç¡"è)ÔÅ·Î÷†Ì$.âQDñ7¾–YïÛhÿ«ðt’˜M—Ãl?™JÅÈxâ%d-ú(Z”ÉW¿î¯ïÜt·¦ r—»«¡\÷ÖV~´G€›Á…¶§òÞÒ˜ÜãR~Φ\uþ¹#O¨„Ó°-8—x@´8V–u¨Z¼]v®bcx=X×·úE啪Ț@õ¶Še•«*Êîyö{¨ªüƒ3þr ³™ÁÏu¿Ö½- G˜ã͇´¿eIËI’§–óväMÐQ¡9³U*ð%3=įž–ÌW{p ¬Šå4ÄÕ¥çá}M_—Ú_> çTŽ Q©¥ùE{0.<-7ùs¹Y‹gωz:¹Ã w‚øî‰Ë²KŒI¦’Â;Êk†¥ÖmÙx"s„ú žæ §áXˆr„™ý®H'A'ó˜}Á¦@–e/±õÇÀ_ðdrñþºß’f†,Ömöz‹V¿Y±TÖ®Ü RØ>Ë]}•e4ð?½ÙÄ3^/âË»+ëp·ê©feº”×^xɶÙùÕ··w™‰H(Éo˜?˜®B“á¡Ö/ª©ê‰JoÞóœÞ|a?s¤Y–‡[wJÕ!ÁðìUâÉÀ¬G9­HŸ=ï»wз?xV¹_“ï¡íšíyûkÅ>;³9k‡Œlµ_ÇÎ{£ze¾cŽVàãíBYQ½,d8ŽÆÁëõÑÓÄn [Ö`ÕÎÝN#Õˆ¦µ´Á æ¬ã ¹ì áßá8øÈÕÇ~Мle _ƒÒ²†Ácîž3 G3Xü.·7òÙ›Tñ,<¢ah]s@êüP[fÙNÃXtÕºS?S[xT¤½—ü^4DÛfh7^†˜JæÙQ2iNê|‰§¸”z#Ë¢+×éË—Ñp~]Ç\rž¥¯0Wœ 3Íépܦ¼Äûÿ´3 q¦dëDBb¿—KÜÓ‡¬,ÇŒÒÝ0´ÎšNöƺÏ’Süв¤¯d5ÚÍÚDÉÖ™Ô[œÕP|H\Ÿ£É9-h•½Ñ5Ø£¡žöÅv1.÷:7*íKúýÌ]ùG¥é âÚ|aኜIkÖëÌÃÂs}ÎéÌTv/Á»:ó]z’êfIϪÜÀÞàŠàmõwÉb®&ü“¿#Ʋ4{¾Æù?U"«kÚÍcrmÚ¹äqñÜÄ]\‰ýDÉ+÷©¢VNÇ‘¦M»ÌÞÆ9ŸV•,Hù‰sBßÞ, ±–³X™QYË…ù²2_ž¥–þ0wµtYðMË`Ke‰Á¦Ï°îw8Ê •û*§ÔL¨Ú_u³znyZÙÂò„ðžðÞ¸jzE‡jSÙJ×j²ý7˜r€8ù¥vqK°cåþŠ¿Šgz>’ý顨3KõœçLr%×ð÷êÕZVævöÚ<ž]Ç{'ßö³·WãbÞÎXnÜú8û.7À2±QQŒù ]ož•=ˆ× Ò¦ô‰ÏLJKìš`‹ß“@Ä„b6ÇF' NÛ®>‹¾Ö·s§§ð)ѶÂrÓMhÚ|Ž#ß‘¦ZFüŸìžyîM‹|Iô"Löûv6Nö`, y‹D‹Ðþø;0Õ®±N71?1Wk¹¶õT=óéj-4¬05Ì3\3ÚumŠÜgÞ9í'“è‰÷¶–Ëâkš°1¬Çf0Í´Ìå;Þc±“ÄBØG÷&NZ?ék‹òŒBN­—@,iô,Þ Èïü× à{¥B¿öÌt®ð|r’Ì3ï+W× j þ2,o©s…ý—}³]Cœ?‚G ÍšwªÖ"…ä“°Fq ˆöP§H‰ VÑ—©KæX•YÇÖÇiÿ2ì³ÍFÜT,y†¸ÄH‹9žŽÈ0h~Â’n}gï`Ûð19Y¸ ç,v 8rÓŒ0xˆ Æ” Á÷i6Š4Ò½Ê϶4Ÿ'ø´l\.¨øÃ;Ä ;"fb3°úë‡÷§/k7h‚†Vsš9 Àû Ç¨¡ÁÊ÷u‘Ô%([jéà~Qî¨ëÔ¬­ü›´BÁ8ª t9¤ðŒeþphÓ=ï=mÎîÙXñòh6œ±ž1ktƒ4ïŠÜy¿jž"#-zUSîNûfÒ‡ô•¨ÂC¸“½mnÒ“ì¸G›”O3×d6gíá?àµñGæ—ïVq4å«ðø™Vµì-wQÆr^µ`’\!{ɽ̾ úSÞXÐEþBlËz³ZAè>kúÊ«òz‰ös‡°<™Éê¿õSŒÃ]ë˜Ã2gbK´5mczŸtSÊ•ÄÓ飯ÓÅÈÊz•“94ý\R§¸)³6¥œÎ\m,ÙçhSoç׳¼¬Ã½¨^Xßb K´òèØ$$—§Ýæî¾+¼PôUúŠ?SŸ5E±K[lp;˜ÙÖþ¶Ù–Xëgh5µÈ…úäÅe%K;—邪ҡuá­µQá!5»*³Ë©’ ̳µp°¸èº·s8P^q8´ lMhahTym©ŠŒ´¶èü²!é=ã‰_“ž£Ù¤þWÒ[|VrS7šOß'Ò…û±nVòÀ9 ñ¬çÂEü‘¬Ü>œÞœ'”JÜ‹_È^—P‘Ð=©ÛÌ ?ÎHt%uMÙ”´"‘•°6}¯uªuažÕE{Y})'!?Îú34> 4áïÑRh‘ñ0#u-upuö¦RkÐÙp+€[çÙž¡À^è<@ aXõ˜œ€­°3?Um‘gèÆ"?ø>ù=·œ£-ç”ïŠÊõ,}¢N¬_¦½]ØKr?—eZ–`sL©©Vk|f¹fÞ`¥@‚øÞQÁÀh26™ we&8P貺óâzán›Å;šv;+Ô2¹PWX¿*µðˆí¢×í:Ê@ô6ÇH×uÚ áo ¾¡¤p¾ñ#:Œüä]î ú¥¾Ýfyª×^¨¾PÑæS‚$+…Zq¼|›ý–zhXŨêSá.ULhXð­æMä[3æ¦ c­“ê¬)6PëÉéÂ5ñ Š ¦ÎV‰nì«)TÏ~7uo|@¼H¹×+qtÆÑ¬i¼ä´oXÅ™%CùE¬ÏY?±ÆvŽŽŽý!ùhjפ¬„³OÅë8;ØoS;Ên"aÜm ý†~ÅS1ŒÒ_ˆ ùˆHw–3KèaÌ/P™u¼í¶½ÔÚÉÚÍžg«¶±¨l½­=¡hø)ò8ho±þWšÒg\¾´™ºå#=‡ױdž)ùpÁº‚ÕšÇêíúæ™ÆÕtu[?d ØÇô²àLî×üK¦Çøk@{E—g~oÿŠž†ÚÖÙN[ÿ² °Œ+±A¦œ™‹9Ú1£ò|q3 ›§T)Ž%ç=uõc¸¥°-MÇ:$XS()$ ùì¿hm{ }jÞ;ÒVž\”S8Ÿw®Ðm îÕÆ¤»D¨hBaœÒkæÛ†€åvwxZ° œ&£™ ±MÐF}BQcÁq^¾vÔ¨jf¬¡6pòÙ‹ówfÍG¹žWÝ7½1mqÎIÊLN+ýrGŸŒ/gÇ¥Éý븲­a‹èwžˆ•ºȾÃ~*;C¨cÿ”Æ‚/í׬¥ï¨Ïsº²Ž°n1T¼™’)…C(m2W¦ïÍàSu‡Ô Ïw²=ψixµ£½c"ÖžƒÖ:‰â•o+V/œ¼°¡]CÝ4é4K퇊_¼1Y¶^=ÈÐbL7ÍC®i_×mòëZJiYpº³ŒIwðçò¨ó¸'´SìclÅ’~̉Œ\N®à*­:ÿ ‰›Ñ5í U!úƘ™Æ¡œ-J4íÍ¡%PÅœ«Âü%‚æTÁgÉSÃ{ôé iÕḗ2²?§ H³¥ŒK;›¹4ã´'¬$ý½óýæàþèÎö—|ŒÕ•r½áà‹À wª{>:쉼·=AX°œ®·Œ‹-2h+~ ­@GÃgáÑÐ~Ý)ÅIOnœ²°ÚúhPIÝJÝ­0_4N~Þ4ƒ0ábËBdþ7þiÑVKêY}¹¶ìò 9 ȶŒjÛ€ôS“zºÄÿÔþQôL~Zòö gÓPÈb–¤¸3*VVþS94<ÈÆEa¨ønè—±„æ_BL ïõq=;ÝgMS}Á}ŠÐ^xú¹fø¶ùŒÞ©îGx’£ÌˆmóÝ´¹~f¡SüG¯¢2Xo$¥«¸h—ÈrëÜó™'Ytà>À# '•}(x–dd—ë<‡229FQX|Œw›ÓÄü‹fä’Gå¾'7’K©Zf;Q_ŲI=V¸B ‘F”{Ÿ¤ʘH/žˆŸ.žb[G¨.¨@ãVäœõ£º]ƒûUÝ~4ýf:áºNºÑ)Ô$=ô!Tœ|Ÿ6œ›ÌI/%¯4/ë k r‡Îi]cq#^Žůakàsæ Û½=2«låÔš%³æL¾S·©vd¡ü÷°±ÜxÒ‰?:C×íI1oÕ¯S¼³h«Æm8Ö°QšÇ•‘]=ÿ%õ„&ѹÙnS+ÙUìÅ…Ó…E¢ì*–˜õiYþhm_ï U»üUÔlµ JžU›»‹ño²è/”—šwR³3z>’mJ£¶Íš›s;§]Fö¤Ži¼4(o6iw~6}IQwÓaûP7Œ­/åWî©©)­¾NUE†û~w$ã<û2,èäyÜ®(ÞŒlƒ—X€'¬«ÑYè\ÛÁŸûæ°-Åÿ³¼18Ä3™U¬üŽú2,úáÒ©¢€ú†y.a­íCì pqªi¼ ¯Cµ?ë>M·~„öÁæ9Km,³%ì+m¼åÒä:/»{ºû åF³ÿçÌsŒ2ûô[¯ aqÀô À²7 «ñD] æÂEÐæâf¿Ë›æŒá·¡ÕúÁêLs½óÝ ûCë-b“—L<&ª;[P™h¾¹<ëøë$pœêì.vVù¶.®g»¯Ò[ùb_gViŽ8·y;bõæU†~À:˜ …ó¸{ óDÏ$=Œ=¸g˜ç ²Á¾?ÆF„¢ˆÙ|h?†Xò¨|§ë]í°Š×%‘²g«ºW·«s—½uO6ÙL½€iÎÊð¬Ð{×EèåVÝÖ;¾bœªã;áçHº¡ì¦QÉ‚å[k45êW·»wûL¸ç½žæÿà2iŽäÐ/å#JOÚj Ù6!8Rr¥^m¶W>§m ôfn¡ªóPZJA³‚lG}w‚Ó==…'…͹öOA€ñÙšWŧñºó“y {"ËÁYÊèMÉZÉâ‡[ùÅ/KÃ9Ï úKëå%·z©¨•¢y¼èë: {Šo©ºXüàC`šá ö¡´HuÝ ì ¢rÛV çÅ„2îI†™‘Ä9À_Ï2sVB3ÂÉ•¯‰4–4ûlN5Ls1ž0~ãgêçézò¨”ÛyzºWû8Öº¿† ü}[K2k7”$©®ç ÊnÎÚ‘ñ#ÎÃYU;-=îæDô”½[o+²Ñ ·e¡±¯Y¹pg„íSŽ×‹*Ž—ÆUR&¿œüg8Ï**p¦ù6/Ô ­=Õ%íë°š7}§ài†SjSmã¬Q#cJzw;rÕ}IOgYfSáéKþ8öGú êBJO5žh!4³i¬ô‡)ßSã’ç’!ã"ûÖ@hg‹˜Màù@ ¸¹E:‘¡K½”õ4çßÌœŒÕioó¯PZ³»hvx¯ëÜg¿À½è¦RYYßh·x•,®¶„g£«‰„ñ§yI<$÷'bÚ:eª7¸Ìp,†‡X2 )žÃÎ2„©šÂêÍVŠ^šì;2~fTªÂÚO–uÈ5真l» æ½ IA+ÅxË6ì_àŒa+¸Ï"ôv—«§ã03ÚG£óíÂ^¼¼Ëá»ÛÍcµQYgãj¤Q#×ÍOä=äsѱÁ/†kœœjößL˜WŠ[Tî‚‚I¦5>®÷®wž·‘à‰¦.æwhº >ƒý‹± ;µ…Ú»ÇE^·<ûú Ñ:÷%Ç@^ì¢o¥ý¹É\4GO‹¿:ªèòýʵzÀ0ØyеÊGÆ8FA· O ÅôœÜ ÕtÍsá@)j +M×l!Пm¡bnrm þ —ª{æ~~U™T“X%¯ýTú½lúË•ÿŽÚŠÛ^`1ZÛØæè+”Ÿt2ËyÃuM;ÝKíËh“¡“êµ6A¯@Ó£ÂZæäŒ)+§ô/ûÍõ›=…îÍ¡ï^®c¥ƒ‚®r¶ *Ýá]M´±{maëYä•c§ÿ/×sÝ{ÆYòWV§ž<”¬%‡¨7 ·ƒ]=ó­\Ç*ayÙC„M‚cÜZáqñLÑüIüN{ÆRÊú#ÆVîBŽYévþ† •úYŒ¢œ¥ù­þ69¤Yªú&ÚÀ[Ø];J£·‘eÉiƒ:¦»fyž"›5ç?½‰þ6á T.üÌžË[ZpA0{—ÅgMf/¢ )ɦw¡‘%¯”·¼—÷›¨O¼ÏyYH²Ä[ çR7¤7O¼BWè*,ÓC×>jØ<;QIÃZýñŒWÙEùä*s;Q¶±+‹ÚƒÀ åQýZ"ß›ô3õ16삊¡3ðZk@­¶”ôCiKeŸºþ Šš}îtÐϳÔJFÑó—é[ûcô‚óXÍéiÁêQhwsL ©XG'MNW°Æ/ëÙ8í4ãã3µ’ô˜šE¹žO¢o¥k;+ëyµ29µ)ýzÊïÉHþÿ ;B¿TÍ({æ@ xÊ¥ô®ÛfŒ¹”Þ#ïBv×ü$js֒܉äuŸä¼;5<Ç3õ2ä+«­h¬¶UŒLw7GΖ߉¶µeE¬‹Ñ­0f½ƒv&º8ŒÄÇFó}å+a©¢/ÔB0–1ÛDG®!ÀCžæ‚|Šö?¤·sñ·Ùmƒ½±a¶X®û>bI†[òu´ÎœÓ¼Š,"ìˆ{ntFØç;¼RÎ GAs+ëtÛw8½ã²‚qêv½ kÁ|C9r[—l³Ùô’Yt¤/Œénrc$–.ž–è\‹?B*nhþ;8’]‹ý/=‰Î(Ñ©êô[tÏM{!*ºÌ\Öø*cKŽEI˜R˜šmµ„.Ü5|?GÛFºÙkdb»f€Až0]äšXYÂ7æ¿æÈ¶°¥¢m£‡åÞ¦5‹{®™‡V«L‘$\-Õņ¿Ö8 `é¡ÑWžæ5ªÏr²:*ÔT¶¤òJùÑD_7`™È—59?ÌÚÂY#¾¯3:uTßÖþaíöîë‡Á ô­#Zœ3ù¿º µÔ)`ÅF¯ êaã:¾lß:b'¾Ë1Ã|ÊŒù™¥Ýb-áIöÞˆ=çéžtÂ?kèï²cŸ –…Óÿ"MÉ{BÏá]U-”iiSùÜ/¬é¬q¼Ëü?Ù¹w÷¥¿*§ '°&äa¤‹ÌÝÜÜî[+/ ¹5ö9®öðîtJ.û°„)ÿRØÂÛ&ØÎma¬§©‰´él¹üUÕvÙZC&~Ê´5é6kþÀ‘òÀ ›[ÝKÒPОÿ¶à€8ž¿šÑ“´$·3óUÑ”@Çâëð Á*écDZM$`nggš©¡Þî3àXcgOÎò–‚ëúXBq·ºE3j–ZVL¯ÜJ3N˜Ÿd³ŸftÍÎn+\«Ûjª’læŒ5}ö*݉x+´ë„Ëìåö,ÛJÍkÆåÛVq¶*X««‹¯ÞUîoÆ_ÙÚÉ1*‡¾³è½y­–ª^ÔV}Õ÷9,‘B€)&G0ãÆ¢‘¢Ã†O&»ö%wcv)¹6«4ec.ĽÃqYœZÚ3ê"UÍÖäùÕÏò>ÀŸX–* z»íyÚ^¶´zk…ß7ÄôCIKa5²ÿ`Ýg‘9™Š{–LËD಩Õ^ÓÞ7è»_Ã_ijµ¨{Ws½DëGƒkýMáÁQ;Ñݶ_“L«puL\*¨pEá]l"l›ã„ó¹u†>µ°…;¡(QGp¿0†1qú`Úö–‚’‚YÌ«LFA@r™—Ê¢pϱg2œrI²7Î×üÍfPnлrDì<ÒV'û"ït›}¼Kæønð HUòÝ¢tÎLÖÈùÊöspûr™Â… mÑ Ùfþ"ñ"Ý.ó]Ã;}ä ´*„XŽ5ÀiÑj^/ƒ7–+gÊ)£ò®_Ò§±Êýºf)Åp¸,«Nj=Bi›¥äõ ê|…A%åÎg¼ÅÌtA¡v?Äs õ*=3ýÒªã3–S©Ó2ÓHdÊgR1y}#ߢX^4H>†SÃuéò±Ûx"ÕÕÏã÷ÔyüNGªy¡*ºõTö¨k®UáªT”ÿr¹úêôük¼ÿéš g@‹kÎ.a´ÕŸ†jnתåãð+ÑW«ÄÓ3hrÄ»9žÜ³ú3Ïim'¬RA^öì¯x˜gRùn˜O­IáoŸº…PŸÁ/…ÿá9…¡l§]*xœÞ=Íž­M?‘2(§Ž‘I:9>/ó5µ¹6ýRÊr–~´÷`ñðŠ”Šuå7ÊJœCÖp/”g‹-ѹÈ}ÐVj±YìE÷Š*,éxÚcùÓ°¡¨XB(Â@ ´L¶™÷ÂRÕýDëek.´øç¿÷<Øe®sþ]¾(¼KÿYd+x'íË]­<äèî9êùáì eØîznÍ–ÿYO"?¬ãÕMæî®VžhxH3K9‡ã Sõ…‡új"`·º7¼>‹‘ìeÀÕô¢1æcžáçQÓ~ÝR”æ?¹®ð${¦û…—{íŽÇpW EËÁæßqv°[q²¯Ü˜¯¼¡â_mg<ý=€ûoo{ÿz7æ×ïD~ñž‡±àÏ“¼à¤áîÛÁMîÇðI[)|ÄŒ‹÷Jâd•M|¹p1 jAº±N¹Or™x*¡A·§5•¦·ö¥îϾp¨½w­ã*¾€¸ï8éü+8¸Øà…ãÉW(“ öð•‚^oízà„"x[îцàŒH‡’çD/Û&¼»3.ü¢jWmeMZ³²0¶9ú2K‹/†}X8 <À_/ÿœrœ\´ÜòÎúYÿFz»@\@¡qȳ å²ÏÑ­œ+ìzÆ6f.?[ô@˜ I÷kš;›V ö³5¬ÿ zId‡òªÚÃ×3ç1¦±Ó¸Çsè;yßåa‘X7Èýw¬ŸŸc É& ⹇9©Ü¯œ|Îßì<ö`î{áNi™l˜òˆâ£äƒ‚_¹Øîή^à\“š ôV¤ó»°¶Sî“OÒiŒ't#õÙFÓæ/ÏOcæM7í¶F©5§õpîËI¤ú§áÍåê?Lé`3*Ù¥œÝʳönM»f§Gž å§fÐÎÓãÅ;ì»}£!–²‡ð¤Ð¯HÑ'@^|!±ÁnÃNÍžOnØAÅü¶oÄÍpϪç5gjÏTm«Z‘Š_³Ê5ÖPj‚|u‰é†%Á±5uZ,ßÑÅpÕ®ª?ŠYN+ïÙžø®E¦†mÁ?‚§‰zn|RGÎcÇÐòhÕ ÒpŠÙDÛajˆxÑœ¯ù3'lŸO-}v ^%6Áø¾e æa~f2-ýRFarxüæ´nó²ú'?3«=uXæ˜dJ’!å{n/¾F|¥ˆ¢bëwªÀ}<‹ÜdO­§Æù »„$Ã<$ÑYFY+¡4dÑÖ7Ð)†ËLgäNéEC:Ô•[Ž™ æ[ÀÍ ½Ý´ÎLÑ"Ê m®þ­&^Q¡¹lîê+ót·.•Ð6ýk|®Ý`ë=7° pØ Ù ~…@{5¾Ä²DÕÛú‡w›ã_[{¸“~ƒ|'È|Aa?†l¶>6e($µ—>,¹g1À7ªöx|ŸñÓ 4Áß;24¸!ÐÏ ýˆŒ‹¬öÄþEP£å!ÜÇà0Ì@VDÌÝcÙ‚ùb“c†/ճƹØ}×=×¹Æÿ:êH ¼öLDF¸­¯—°u¶eZ+]Mˆ×HÇé^+åÒ%bý ÍÖñµq¦çzÀCÞ¹Äc°‡i„@ë˼pà¿ðÀ@/wÀÝè9â~á•tþßÝs4}èèピótK,T¸§®§¨·øï²¼Ÿ¥p\¾OÒÚ´Þé@ J“~ fuvó=‰t®üVÝX³°ìXñ—ðÈà W^hR±ÝûÌ| 4!‰ö'ÁéѽÎáèY¸ $™«Ïr&ÓvR2s>¤/¤ÐYÙnfö-º‚~‚ú=_öXÚ"j®‹à !*¾W¦æ¼úTûTI˜ÿ £o¥ÝaŒe2§2gÒQ\¤vì^Ú:¼ÐÕ h+ô2Yôƒ ?cý$µ‘4†Ò–ù•PôV¶LyHþ^Zª$ÃÁðÙè:¢»þ‹T*?T ¦Ÿ¢`Óé(ÅÆˆcôegóY Î!î'æ>Îyà8|ÕܾlgÌÌ)Ì<•y=É—ã²|+–•ËoñüÎ 'YauÜ.«r«ÎD)º=Œñì¡|#ã4e7»—t–Jò¦ì6¬£“jŽö`…³‹w^ŽK,Ûi[‹ìï’ª5õÚš•}«ûUŒ tþ La-äl·>w¸Ñ ° [îèGô²Oó /_žÓ@} êìpñå©“bPpD˜nôâÚEyÛó6q¤êÏx¸jK…À¸'˘W¢ñ™vÉ®2ôiGGsG_YT'ÿËåvað °h£ìífR,¥[–+HnžäÏ왪LùžUÄXÃ(ÊÛ›ÉÌ §mMÍK_’Ý)ï0)žDËÞåá#+lLc†n¿å‚6Ñ®Ò6©U¶‡Ž|¯7r»EÐW`;TŠàB÷ϨMÝ,«n°Å¿˜’åÇyÛe÷Å7dµÀL fÙˆ¬A~ÒïWb-CèÚ÷Ö®Zd†× %Ü‹)À‹¦·3Ð3Љxc}þª?(>(¥èH¼u4 Ó­=d>9.|É*±žu6Z»™ÙáÜh±Šû»û/ïßè;ÓÃöÏövz‰îìP 0ß}ÍÞδ]g˜cà›Ú›¾IuÊ“`<Ô_Q)‚)ö•k"¨Ä0gWçsŒ¦$Û;°}¤ç øTwÓ¾Úíó=‰Ø [¿BüŠ?€ûˆ3ßK‘dÙ®r˘ڊýR§â­îþ2îØçþ¥›0C/k=>‚ˆ‚£ÌsÀHW¬ÞÅuݵɽÃQìêãûn9PÔV[€ ‹«¶DA•¥‡å\Ë5 W‡ÝeñLi½“d6ÄÁúy¬Aaim•¨&¯L¬ |ˆ<½}k©ÞÐßÜbçïêɶæéïÌÍú?Uã 2d”Õ”Q”[ä¡äÿ1@އž˜{2GFŽp« ˆ¼RøóˆdŸå²ÔGf°&Kãô7ÎHêû zvõ9=HsÓ;3R†fÝø!õû¾ä?é1v??CyHIzJEÍ¢l$ÅQeü8éXù(y²d©l²!×öŠiÈÿÓt4;Õ·ÈÓÉ¥L/ùpî?¤m´ã>»§‘Íãõ--iѱ,¢S—q&_gŠ3Få›3e žôì¨h ÕHÇç (î‚¡Äæª_c­‘ ¾5çS~€c€>¡þzê±ÄöÞ³/¨ð,€.‰S™PÁbn2·P} ª üØo¶8ïb§0^ì<h]Íi^Wy¾ü·’øb8² ©”ÄkÜá_ËD‘ÛÑøH“ƒbù KÄÊ<ì3 ‡'*ëP’RO+íÑuž»ÄQ€ 'lIщ ɽ,K˃0?ùÛ¤v¼í¾*"û5ïT²iüÛñÛ2¾J®•µDv:*µ›©+ÙAöæÌ£¤|ËÌÈù7gKn0%wâãŠ+œž9ÃsÖçÛsÑô±ééãäŽ)R~ 5ùNÚúBOm7,Ý4sÌU0”@Su‡µ¨õöƱÊ÷eoîEá—žèꟀL<Á.ñ|Žd»âOcµÏÕ\=aá‚iæÛÐvûJ¼½?þ Y ~О0ýéàñŸ(wkúbiÄA×pGbÖÎÔ©ñBL ãà9Í%ͰÊ4ÿnŸ¨T îJŸi{hfñxÚß­É’‰Ö‰%‘0Ãç÷Æ|ß=÷}gb´GT¼áe:ˆôôüT ÷WÇvëcY–„£>è,7-Ï` ÀuÖuF´Á¹Ö¨ù_  ¶­ô,ÄêKŠÒM©¦ W,øÅ bœ×o ¶×9Ãö‡ç·¦r[´a½fªsœ­Ü4qSÁ=þVÁFñåTh&˜,?l{°mvDÿF®•þ©=”#Ùx¦“êøÓÆ„é¨.5÷G´vCl{Ð×ÖwÍ1ëv²”냚ácÖ$ùE†‡êå:{ÑîøðÝHz±­JVó,ÒÏ÷Ì7ÓÍr_ Ä…ŽŽ–™f=¼QÚþÿÿ —gXS…µZW]­ãsï8d„ì° =ïÍÝÙ;BTÜVEœU[­¶îMµ¸¥Ö…µÚÖ½'¿þ>?Ο÷yÎ{¶!ÑP7P¬ùRÅ’ÿ™ŸÀÎ{È?Ãþ™¢'ïaÞg®$ÿ<†užËL#…éS·83Ùñ\=3–D¦Jùg²¿gµS'Qf02Ùk˜ŸhmÔz#ŸÑB/#ƒä]¼åYY‚>OðƒPÇ¿ËKâçLf\b cÏa¦IXoyCó€ü¢Ñ܉üa/ ×j‹Çk¦Z÷8ÃÚK½ü&Vif&5¤i2“³)Lf ÷3{£=;#xxõh×8úöÄ8 ›RÑ‘®£/V7ÚØúnƪÌÿ±)ìýÝ$hÏãû$:²ÇµÒ½ •—Ä>#ï±>ò4»¯[ºûÙ;…Œ|=÷;ý$ÞJsG[ú ‘D1ވܱ낳*ãÂxXz* pm?è#ÒMºèjÓ…ÀÞÅHø¢~‰ì€†6©B’y2 ®ÂUx¶q„ÛîKs”[Û}ó+¾ô|_Ò’zhAVJ„¥³Ž)½ª)6“™l›|€O_zˆ£[˜s|n]Êýâ©VܱÁt*’ }Μÿ9N¿˜9žÌËø2Užb¢À†³¼ªÔŤrbò¸ôFr¯äøØÓqÏæ.3}Àë*Á„;ªÝ?sÀŽKæ(L‹¯†*¾æ/ÍÝH"\Ga?@TÃltˆI† 3dÄÅúFÔdlô­°Öé½êˆÖ¯y®mï « QH/³Ü0’‰b Sù¯üxÒ’lûiÒÇ!_yŸ„Æy7ØÄŽÀMm½¡]󫎲6X„„ûºú[;[bÞ¦ë“ûR?V{—qGºµ”ï,¶Õ8@³×ù :¨:m¼l×›À;4¿À½Ü:¿ÈÓåŠ5]𝡀¡»JÀA Ø øÁ™`¼r`qß‚LÉ,íW/R %¡O¡¡àdì;+Ç»Ì3À Øçã4cÀ6Ö ÕN?ⓚuO 6Šˆ_²>æÒá²ó*´ä7Å6ÝßÐ8gÀ¡'øH·I`–Û• ,¤Ð^(œå!l²|£¦ýI¿¤ §¡À™Ó:Ø­öÝ _õ‹‰8Y¢ˆ(¼£x¡^£Wkwæ>÷‡©ÛfÙç9íõ†®"Þ}Ž6Sjcßæb;¿‡[`XjzáÉ `Ýf5¬2”üV°6;E0žó3{<»‰‘JßÅ`ÒûdŠ˜ï…ÛD§&jŒè~¾\‘)¥­¼(%3k7k7‹É40.ðKÅSsíÜ ŒÇô0‹ Ï$÷P©ÌÜ:Å,¼D·T}uaç5¶ü±¹s„V:“zÑŸUÄiáÆñ? B‚ßXk((S&Úœ}¹p¯Jíê)íBªGZqq-›I{’Y”‘N*ÎH&[™8“¸òɾ‘çIªDC©73.3º9‰Ì·™HÏK¦3œ>Éf¶‰â6›åg¨‡Ò–’0f, ÔÍÌœf…çrù¦²…îóÆ?tgJ2Š‚y386a³8 ófc q ™‚3P‡aôÐÙYáŠhj–EvVÿ[…­ÞNìgùÖ0Ùc{¢íÍŽa×dö©†‚Mð(¼ËÌÑxòß3í³]WlÝ¡ÚFzM™3œs†3ë&eœ{´ïŽ-k+pI×WlŽ4ÎÑÇn_Ð2kAÆlq§Qánt·Á ™Wb”q®Ô.Rtf+iRÊùØ™ñí”/ÅÑšõÌkó¿JœŸÉI·dÌ#93î$hckb˜Ðhp¯nŒeëÁ !Æ9ÓÛ×®² 0±ãH•1šØ ^óÿãæ¾éeª3–IûI5¹û¤Ôa¨×•©“ { £ðˆ ;Ž3¾6{­r¬/®3´iÿ–"ä¼^†ü×`X±µfx>Vi ”èfÝÜÜG’$Ëq›ÌxËx_3SÒ¢!Á~j,€åÿ!Ø­}¢ŸÊéÎÙ†˜l§³Ì+‰– @çC…Ã5q²Ÿ„­Y§e_Yèås|,W'‘bîeKF£ ©¦<¢ ­QWj/é>¹ES¨ì]¸½¨IqR/WOÖæb<ÝcþÛšf}gJÃWiJ$8ˆ||òœPø?Y‚¼Iâ"^š´ºýêÿ)g<i§"‡ð\û+Ç&3~¼€/uðlzì%ñ/±zi‰ŸEòq2ìv… Z_Ùrœ­Ž¶Öþ¶÷þñå:g™¡G˜Èß"Tä~ÞQÜTRUl=aúÇœL„Ñ^ö¿½{ý…ŽÕø:›ÒQà:ç„ìÛLˆuºc‡ùw¢¡´·”-3æu²ö 'ˆÎ Ï pn˜®¤Íg8ØëÙqL=sE&1]°š{:3š¡’ˆU~¼ü¤­ŸŒÆ½JŸÇ×K'ôD§ù 6°x"ÛO_FżÁ„3ú¥^¥ ôYmÚõª›Zƒù¦ûðgv´ð"/¤ f ea;ÙηœLÖRêoä[ôNß)Ôt±Ž:ûwÀeXbï üó¥ƱL.kÛÆù7UôQñƒîë‚~,;ÃÇxK2?æŠJèé;…RïúÐ0´‚›@ªOÿ‰öVFñóæ‹¥ÌDEAÙykh/Wà UPe(`,½îJ†ÏªçéK `‡\ ˜‰ðùøH¼ Ÿoºlî…uã‰æ²m‘Õÿ«jÑúžZsä‘uÉXS÷:¡0ã;òÊú`Ö.Q)º\(ÀÐ9伿.8ÅÔeÎ3nʶB/t!D‹¥@]† ;µçt¶&Kø€â‰´Az]ÿ-a‡[47;§åõÚÉæb3f™Bøð§˜•ÃgáQðI]»ŽNLG/#ïà[ØvÓ`Ë 'ÏïÎ_=·áOd)üD²…w±Èkl²Œëpù}jç© RÞÏä÷aü„¢õÅÕ¹}µñhûï–VK»u¡.XòI<ù? ÷A¸xp.f_e‹7BoÃN]¥Ž‚?5«i¶ág`s+Ú¢Z#çªëˆ"½[³Ép/‡¶!cmcì#hüË0X¸-¯ ˜‚|r­³uý·ºë$ ù£0÷9Övê{àß‘7ºÍ%· â8•P^iû(çê ô`f@‡™\­§ðÊF¨þØ|8„ÿäypnûϺå®>VÂü°Vs ÎÖ½ËþEp]rN‘œß7W  _¶‰£ØCXñÌYŒ§Œá,”žÅŠÊvç®Éáf3XzÆ!aWá¾ìóì#ì~!OÈ,/XälwSÿD)^ø*} í$%K<}g›è®Š.o1¯PÜ×áúyÃøÚ>uÕµ±¡þ¥zKØÛ²ªtœ¿ÃZGtIhÐp¿‰³ÐÉÖr³‘½JÿˆkV߉ôÔÆÕÖ”†æ<)üEs^·NœÈëκȲÐÅÔOÂ\›3ô t<‘³mµþY¶!ðϲvÖiòDOs:Xà›ÒسSt™q¡zÀɪ >Êèšó2б 1é~F<épR0¹‰Í‚3ƒãàèTRÌþt*¥;î÷¤Qäm±o–ÓvÐ/’_.̘›¹ g‘DMéCÚD>»”5Fö®¨ãÀƒ Nè:%éÈÈ 4–B Ãøi¨·¦ ¼Ê‰×ø&CŽüšæ4°{½NëtÝédÍÆ?0°JwO÷LsYŸgV˜O˜¾À¾ƒPáŠ~-ôLÖæªÀè3"³Dðñ@*ÀòMzÜ8´¥¤t/ ªÙ‰q=Ò¥§/‚¼{ »4ƒsIþBsJý¢ðwÉâ!ü¥y#5å!Ý)ã~W»½$°šòqAû{j|@ä.>ÏPü£:Un+VêäÄ_ÆÛ¶!Ž£¨>­‚B…T]pH\¥:¢IüP‘ Ó1°ñD–ÉFÜrœ1Ñœ$ã"ý?@>&À¿¶2R1·•„Ø$yùvq²a,¾}gšèxmñ:šöKÍùÉÅ@]5¸­ö«&ª¾×ºÁ ºwòfå9K½WóTw ZæÂkÐE Û9Ìö“c¦·Ó}ÀI&¶jë5\ð}·âȆ•tæý.ù[Ž6ÍûϽŸ†YFYå¶)Ö§D•q¥ã”·¿¯Ë¶ÉÌ´å;‡í“mKü«¦97fa|²¨•#g½e†©ñä>é›H›[y'¸ÏX÷¸yç“é·IµgꀚÝ4<¬ì#LV¤)Ú êø;Xt˜´…~…Ëä'‰… ÷5m¹5SIvP®enLö¤÷eüÅ}̧ðn³ZØ!šã~VñÆÒëIiäAŒ ìSogó(} +%cÔñÖw"ï˜lk‰_(ãŒàlâÍ‘xYÍœd®€5”Ñ_ô 8mýGŠ[8o¹¨¥`vH –ÝÈ>ÁrÎ-ÞÞÄl&ÞñÔ-ô÷çT…ì:iñuy_o[Åù`G廪™¡ezŸÛ³Ä·¨bL §Zl±I`ÑìxbßlíãnðæÙºðt|—e~àFh|9\P:Õ¼W¯@[¾³­$¦Iîf%± Ôä”6Îÿàþ>^°È¶L€Q¨JqãêEœ®´Õ1·Ë¥ËÖ©¦¥ Sþ¥7_ІòNfAüQÉ™‹¼ Í)#IÚE⸠é§˰¹îÉúÒ¡ähîCÚ׉ýè¿PCqûbޤÜMI“D¬"ÚÀx¹•3)ë”êe x ¥zV G!7a·þxÁJ5Þ‚7B×Q‘e\Cº‡ðmÛ%$W1L¾ð N”0G˜>¡.êÖ ÆÙèSPÿ+xZþŠvw± èøŽ @—c§ÐáZ+@rL!îTü4¬P[ `%ôÞü ] x²Wú ‚Ö™ž $h5XnÒg+KÜC|yæU½ “÷ÊÛXR­$X”?9èš`¤Tzû®\T-Ô¤»*9VÂU ¶®×$£á&La|cþÖqÚuÃår91ûžm—Ð ‡Ê‚¿éN@󰃢™lzuêhð0b¹iZcªµ°­r’¬Ïñ8øb‡>Ú•GÔÙ(j ûŒ•‹ª;*¾ *¢BO‚-úÝ€”ˆ³´˜¡$C/p:mHÑFɦk¥ÐrbþØoù†(P¥HÿVškê$åIísp;bÀG¹7¸èV޵Ã2Ññ1ø"¼Üœ„íW÷Ûî8È@kÉ ]­iŸ\Š¸ïØ ]S}-¾9žs޶XGƒíœµÆ>Áœîå\5 Š„_d•³;itê¾ô…éI7˜;„ñùäSNWÞ‹ô'ïªóXýŠú˜HïêË57"~¨¿]u%ëÉ‘î!5ðïH¿•ÌÈÉË qÞRÆd(3ˆôÊô^ä-”Œiœ7œ66™YÆ|È“ ¬ÜÕüþyz‰Eïâ¹3ù\AfÖ.‘ý s1õZJŸL£ L=V½°hYN´ ÂÞÇy_|A~ÿ€ö”>–ÓÎÏúVT Ð 7´]ÉÍãgÉšÃÖÓI¢‘|„Ð&ª(LÍm—Ï1ýjê­²IX·ŸQÊÕ&²$<ÏÝ`}%¥òIËÛCÏ#‘‚H{í«úÍu¬Ð×Û×eS‚þà–pRõ°òáÄtE±ÚAÜóŒ |]ÖQ)¬ºå ±Ê¥úõê^Òf–8µ#…–šÌúUµÜ±4¨©V79"Üö"›5M3ƒ»–ÖŸdK©(ìå+IΛŒÉi#%êÜÛd5ù¿SÌÎßBkKU¤IhcéÈ”¤ÞñÿK¤«\­³]Éö¥Ð<3Õò‰ˆ€?êÓ$+²'‹nçlP.S„÷¥Š@ø~èÉèM˦yØD>Bø‡á‘u¿ÅAÃÙwFþ 2üëR}•÷cÉŸˆˆHCVÃËmWü 8µè€ò-²  8Ýx¼é ²ƒå)¨] ù WхƃРÙÃw›Ãô蟀‰†×°S?Y[Ô›.¹ ô'MµÂüЬè_³Ï› ÉUè&a=h=ê:ædДød*]µfÍ,‹%kEG5wðôsñpxxu¸²³|‰ã¥ñ>q¨±0‘2‰ˬO\7ü¸‡0çÂMàp ÐGq“éžPõE¾DúÁë”òiÒ™p:²Búcvt§N„QŒWˆ¥–‡î·>¶‡kN6¬úïÆC¹†euxR݆ Í;jÇGª#í‘q§:äZ8–|óNbŒ9ÊÜdj€>«GHÇ©ÞjÁsMk™ùZ©Ê/©/(MÊEÃrÐËJÕ mѾ‹îkN«»º,¥òhð½{Œ'ÉÔŽåzgV¸mÊ)….WøfpkÙA÷A'æ¹á~ãÙG8šì]¶–]Øê²Ò5k¸…ÂãÂñ|!ý ÊfÊtÊ>Ò:ê}Ú—Ìy?w4ÃÏXÅ©ä8øî"MÙˆÅu³kÞW˜fN “ÞËggþ˜ù™{ ‡%Qòº0[<+ïî[æŒÌÒ8題ïi{™5ô/˜¬*Æ@ÚÍÌ1t7‰w–kçþA#gî¢SXL&˜Äid¦”Škùrò ´et´ @º]Ô-Çÿ…=‡ñ™–N¿‘þ u(¥’™ÉYÄ&ø“ Dùûó¦*QýOÒÙY¯¸ræêìÁÒ´°eœŠLßø²—þÚ>¹9‡þ“m•y®rŒŸ¨gÖ½®Ü]:®Ô\ÞN¨;W°&ªvtݦºÂ^Yœã„kF®x!j£++MÓ$¥¢os¹š^Æå¶>Áì†!U§ñyZÖ&N¡øQ“a'fOÏI2ܶÔb mܦïï̈nyÑ+îmÊ9îbqêUÞòÚ7²Â‰ Ï$¸•ñ-é¶àH1.›]èen n¤Ù¨êsêæ·l«ø/ÆôÉ™àÛpUL¬†çW©¶V.í!ÍO¾ªòÿåг: éYãÙªæÐ‰HnÕnè_‚Ý" ÐXpšÞ‡õÃoÁ1è{Ã4ǸÆ{å£JŽèHàY9#+C|Ó¸Ä1½tÍî™æÍÊC%W”ká(¤ÓX/"ôx'±?b„—ͺcp<Ò©ý¢x·ºŸs¥C…-CÁý E†KÀ`6ÄÕ]Òu¤3”¿ƒ}õ›ödÕ½å›Ygu$ËtÙÕn+&f«ê¤„*ÆÈEïêÿ´ÞÄz€WÊeÅ;%Ýöí¾-¥bÛ~£ÂÓêîÆÆ`«1§ Ï‘ÞøÛ‹×¼ ±è" ÕðBõmÎB3·ö[k—õ±W—!Ý:ä¶TÕci‚¢µ–dËËeû]÷2ßE«Út»„èôï÷ê;Ê.ÿ_uµM3ë'×t„‹+»+ÞŒãênæ‰ošj ˜Y+¬~óy8Y3Na–sr‹r„p?ë8+Œe÷¡s†¹ŠÒ®ÁI|ÿ¡{$y®–•¯øÏxhþ× ^øPï2G¬»§ì¸£û¹Ä€-ð´ú¦ºû;þu!NÈöñÝe‰qt¿µ­´­0¯±¦á­¼BAó«–uƒžMÙBúƒò‰6žö–z!cQ:ƒ¼€U |ŠukW4/T¬xìñu© æÒÔãi‹R£S~æÌÌñdËsî T-å/æý"ü–ù4½-m,9À qc¹Û™ZjNÆœÔK©ÓÈô?8‰‚Ž‹Þ˜ñ1%H›È×ð^³žÐ41ë”à¼Á~–êIžÄý!ß=˜ŸÄ¼¹:¹wlö¢Û‰¿fl¦=g´0öuAŠ 9÷†þ(ö½ª€ŸÉ}/è-~oµF€À½ÀŒÆH£"Tª|ðuëOJæH«‹ÃêhsBhWc̪»$­hõîÀ… 9|52ª~ií‰*i¤=L«hóowÝò}.[Rñ<²®F¼cüCÿ¥fMöè’“ðA¤ÀZTÊn\Üt('W$­(¢™gÖ‹^qõÿ¿¨ÛÚp6ëe#ë÷r¶PŽñŽ Wp®}pL0¾r@ÅKC˜9öŒþ/9ö3§6{yáõ|9ÏMݘüg¬26—Ž݈i |×J²^²¨}=Õ‘_§\\ÿ¯cF‹ì+Üþ±ùdžÍ9·Ÿ×?ªZ0[6›{ßCk11jHᯇ‚ À~Ã_¯ƒûÁ{€I±<¿=íüÑ4؇{\Ï =ªÚÃ&¤úGžªx %v˜!|;A'!1ð#°S›®Ø§šoÙï–ND´z…r¹Z¬ÿ¬¿ªæ+wCÓ0<!Ùzù¢–Üw×s²´%5Û±½§û޵Ê4Úªï©)…[…Ó 3ì¼_9îknæÿ.›÷„Ek™U[mŸ¬WœX,žŠË±2lµöíeôc|eÐB7¿ô«jqgáwŠž’jà¶e°Õi½lÞ´ø‰=ŽD >†ÆSÌu¦Mó7f¾‰gž`±Xàò¾Á5ÀÅœTs~uTãôÚeaQåÚŠ±ÁÖ°Ø;D½Ñ+— nAï™yf«í£ÝabBà–®KÖqùý¤½M£]·,p>Üv;!/:\ðôb§Œ=ŽAUÕ°ðÍÀ¦²þ¾N¦gXù“R¡7ìŽöqœ»‘k@.±)€#4ð9*ÿÏ&‹M£h¬ÙñÞÏßáÿ«,+4ÂY l+œ¡ÐÉn– ™ÙE«Y{(šÌÛÔÌVã5—ü8­4í™ ¯õ‡ÐüH$ò&⪞R[ë™"'¸Ø.ÊÛ´4êÆ% ‰ßXñ¬!/4Q[Â>Ä5r嬻Ԗ´A)H·èƒ >¥ì§FS"-!} à¾àg°'{“lô/Ø£Ø+X$Æ:ú/ ?g›€Ey—þ"SCm¦y9Éjô*w/=›*&Õ¥¾IëMÁ®e¤²Fò®p[ù­9¥²Ô’&>ÀíÅsŽ´´_1]õ÷ª¸6[Þ©¡þÁ³¾8kŒ¦­¸D¶þÑs=µ©gçî%ǪWlªØYy¥º¦®½¶º*¶â^ùýÀ(ÿ/)8£†×ˆÔ냉BÕQú Ê`yþî6Åv¢Á¹oYƒš¿–-†ûfÃza++‹ÅL3˜|ËüŸAuA ËGÎå݃_âôâg‚éÙ= Íiqдpýbz6em½àœ¨ƒÒFr1©9 õUÂèy:«Œoï_#Z7“;‚D`+Š@³‰·ØWâQú_ý÷B¿™•3"1Õ D}u$­|Zi*ö‚K´{5=š©àg8z#—¡»à\D E!àOÀ,Þ°OSlüÛQmÉÃû[g/,Æ0†øÚc®=Z|W–æAKôoœ.&›XH Õ}ÐøÕ]êtׇjM%£ø9§“[¿PwM_ ¥è¾AJ«¼÷ªC ÆÐ”"»z,29L,°=wå–¾ô?¡°£äðÙ¾€÷}5ÎTÿËùZ6É~ªš¹áDMÑ ›'±Xb%ÄÒî‡né—]Èd)8 è–_–í.È–µhZ•é JΡ'œ|Çl› ÏÐ]Õejõ Õ°ûêÛ %Ô¢`xŠ1)® Í¡%Ѫ«œäTàeÍßÕÇBŽàÓRÈÓãÛe?®©É[%Þ`0ÛØ·ØwÚÿ²|D~U:—~‰.JÂ-NDJ¼¼“­\Ë[—y!¨.’(G‚d£Üµ­ÔZñºê‹HnèbˆìS¦óÿxU>²l›7¿|tiTÙ»raYoû'BŒMD`…Ö4û~[•q8>Œ¨·J­Í–©æ\«ÑIz •²&érQ“ðfîs¡ƒ3“5‚q0ó%}._+LeÇP¼dMúœìÞH†{W™ªrX 6¶µŠ‹9ÃòGqF¤U¦•eœd­n”«#ͦ¹,y:‹²„žÃ2P'ǤþLQ“hci·hQÔ]¤é$úî0)kŠ`%{åqš†4…6’yŒ±Y̲7s”šzÒ9òwÜ`½ñ*ë’é$wêÒä!Ôé¬Ý¬IÌ &ƒ{‹;€½}‚3¥f“ùkYoXÿ.(çî‘_Wuä—?\[‰¶9þ ®ò­Àäºÿÿÿ —õw“…q†ËÇpÝp)”RËO%mÓ6mÜ_»{ªH±ánÎ`¸ËðA 6œ ®>þ{î÷Üç<ß©ç!õeh^zl#Þøº¶ Õz¬øšÚ®MMŸk%rSÊÚ¿ã“‚#b¢TIÃáéObБêáêñ’:T½‡ã{ýÛërM Œ Ù}™Ùgä¶z/—ôcþ‰¬q¤ÒJa¹è@;HŽp—C÷‚ÆÐOª'¬ŸŸÀ}ºâ-Ì㹦<±’y_0ƒ}‚Ò™ZÕ•öàaâDYU¼té ÅL±Pî‡CúWïç\eÑD]ÔYÚ-¶¢µñP|tÀè—FFÔ­¨û518Ñ;®MLÇ×A£¡×j¾’'YX3XñQÛ€œEÛ£YÖNæ—–÷øop>ä7a–Ͷßì=ë-ÐØ~ü¥¹“á…ñWô¡Ÿ¶w@Hw5ö7¼sÀéØ |&:ZVþVY­í.î§ëN‡<壙9Ü«2¥¡ÑŒ@~Òï3ÿPoXüÏH«³p¡Œ•&‡`·Â¾Ö»Ü·Æü©ê ÷¬H c>Ÿ1¤0­VÃÚiFžÄ$ïì½Ë nqÌU•j(/ufá{ eàHp*ôØø´Dþ¨ì\ñ^žm“_´ØVáoÅîIÝXGƒå3\J #!•‚11&#ÓÁðR賦C•E–ÐõÃþg}ç¯ UA¤K;R¾ëþ/îù¦EˆÖòÅÝè;hîƒ3ÔÁ{ߺ„ú¾÷¬u Cþ6בôI½T”u©Þï7ý„ràÍØb¸3ôj…аt#¶Î}>òsr~*ôEî¯~wžôt‰¬ Ÿwô´ÞG××fÔŽ>ö¼tõpý씺a·ÀÿÂ?×±ýçÀ«ô›e ^É¢ŠÕ•gÊÂ(7Î[Ä[Í¡p¸ŒÕ”nÀCá÷…›ÊCò9àTŽí èâ/ìDMÌ9dn+¡ ·]ç#?È æßf†Áµgk@(}˜Nû@È¢ìg¤ÏÌÏÌ%ܾœNÀ;ÊuÂ7„*Â^j'V>oºp‰¨¼ø!÷ik~5¥ŽVÏprO ¦ øÜQ,.sОo’n-~VföV^“ZåÎ$wîC€ Ü‹‚1¼ýœ[M¡‘Û­äŒâ5 ê 'ˆZÄwä;µ$*~=+M#²ÜÅJIk]†©Áôê`8¨zs‚·bã™écuëê7×­c¥öÄŽ%Þ§¶§ñôÀÔõô¬zRòhxnâUZR¿¬qWb ÞÖðÀdªê@ÁÙ—eŸ|于)ÝXtˆ£a-¾ÑÅ y®ÜEY#¦ä„©;)k©6ÆkH÷ÜrÛüY»Q”+,“|’Õ—é²¼ âTfàp3Ç‘nSÿf=ùDÙ…%HÉ;‡ÝC¸@GÅ™Îâ t ¦Ñ­dhI—FeLSPX•ƒ5ßcwÍæ?"w“¯£OC¾èÅèÑhÿvÏÔ“`Ý]R°ŒPvD½Áô[ ÷ƒ P“Õª„èð3´µõ¸{Ÿë€ëªm¿¥ÀÜ ©bËø9ÛK¤3ÚÁ:ÉÜ ^ÒûtòBy¶'™æšÒ|µAµ»r|M3FÖ¹ÅL uñTØýî*KËwÍj¼2비Ç:,fh¬Éæfûl¼î³Â!ðŠ©Â¸S¦ÿa…¾©ñœ0ªwW|€‡y'c°¾ ö=ªWÓ™¥©²8¦ûs•¾³¦×èfØDÊŒ/Šfåü`á_eùi÷æäøøbø÷" ·û#° Ùxi´Ìç1ÒOƒF@w´tYûÒšáìü\5A×»>3~„Úb¡ªA5$åS¬8ñ>íûÝ~°þ…ãr ]üDŒÿœèŒ"c‘•ÐAU¥ž«¼WsCFÔx ÈUS;€›'99ÖCÕ5´•¶ÿ… â„X:0,ò÷ò–%Üéµñöáù¶·®‡Á{‘M‘QA¢O¡G¶z·û‡Ä–Fö8Æ[†@1µªü#edN>u‰à¤hcÉ­’QEO€m*m£™âDl^a™²DÈ ³'ÐE”? WBÒôÝ‘ôíÈrÏP³EsV|‚õ’9hªh·í …R¹èOâ¼\&;\g è•lŒýs«™3˜½‡Ö5oöÔ]ÙýÉ%äÛÔ4àQy ß±Õ¤'„™´hMd*c±àFÑ?üÉÀZ -·oÑB°Y >ËJ´Lù˜·‚Æe^,ƒŠ„üBKÉô¢‘¼8gœà­`½`ˆt *¶\s¯ÌÁþ×0ÙœÛ$F+£ÒËÚÍú9Æpã8xŒ§[,’\Wû¶áHƒbúÐé¥õŒTÿd]|CÌ‘ì–^^7¸qyì½7+ѪÑÚ°¸qoâ•]oïG"ÑÊíÌ¥×Ícüp–~%’­?$§«ú 9zÐ&'‹~Î!ò)ûh›è0ç,«üI:\´LÒyˆãÕ ¯''-€jº“7 Äħ ºsûù:Zc ;‡cf÷äïäODJH†V®«¨ÀÒÝÞh_뉈¤Os‰Ä±Ùý28c§eüšû{îHÒPa{üZèTx”s¼¯&@ò \ ·¸®à×-Nÿ=Û%M[Ùíj\ivø")û*·£½áä¤ù'WGW±=ñØ>ÑÜ ‰KEÅÏÁ¨}ã´õ”•dnL„a E¶CqVÕMtµöe{X1<ÜxA]­€´5芛[2ý8§!äUß¹Gûÿ .JZ|öÒþOÜ™hVíËF¸©6m´­ÑlCºÎ8YsµR£Þmœ÷³Ë´oñ`â§ø(CbVfÈVÅXÝ+CîÓ± Ñ¡<dJC†B3Ñäm w .VϬÇjúà"׿»rÊï‹[›çz#>±ý0zݶÕ=Å ;V[þ‚²»ŒguнI®õѨZñ4Ïš@‡ªXÊžÚµZަ·òOU‘¿1q7ÊöOǪ SÖ‡Þç~vìûTŸTM ¿m¾õw+YfekÆŸ› ¯Wh¹è>i†í4[]ˆ§H%5?köXk‚ÚÈìî›êœš™J5q§ïmx“Xç'86Ù—ØÃvßNŒÌÌÔ}eŸ8&p¹mY–Õ5-¼q@)s?/§¬¦äNé‹òƒ›ÏÒþ|^1ÛÈžÍY¼Tà]Úi¸¿‚9É. {k;% þÅ–ŽÆŠÊ8¿#ŸËùåÜL¦™ê%Ü)`Ь_8½ 7ñÙÀ6Jc0wÿ¥(X¹³d*‡A e&2‹èÚ>úæ,¦˜Ý{’p>°1T$rÞŒ‚ÿ1±¥¬³¬}ì›Y”×>²TŒý¤­Ä“Ô{Ô,Zš>†1 `c¸Q!I°‘g$Ž‹y†ç5¤,7Ì”Pë诬ŒþQÞ«âUÉiñ8Õ'd¸+Ïw×ÙʺÎb÷¡‰×±£±¢úÛ`覲†ïÒéÌt¯´5}5•ìjŠ¥‘ºËužÔþ(¿Î¿âÜ-1MaWNiÍ[ôWLc ÚwÂW$vÝD÷5ócÁïôl`-÷_zòræ|v;ñM?ݗʧ¥ øPìsBiÀ Ò»Šs«¬ìKLГ±¹¬ZyREãü#TQNiÎ_)_˜)Í´XÅqÍ8 iÆi–'Ž:÷ÐZþ¢0øUSöfÏNNm˜¸nÂ6úf=‡±{6{t%¾Ç-œ5*ÅwZúE'ÅÜÖ$Zl ;’6žÖõ®J¨ÎB/!-\ 7˜ÏÃ ÞØ3Í>Ý!öšÁËÕbý@Œ‚®Â{[AKj4Š 7t°5jмÇÛßy.|]Žöhó!½‰¬ž^¹É:¡”X.ù[…gBŽ]V²½SyN¶®ÂÉ©,}®fx¿IíoÀƒµÒ©òM¦WŽ(~]ûQYƒ··ßqH=ŸíÏçä[÷íšyÂ%]ª¨Åþ2îyK^ˆ€Ÿ!¥ª«†©-À¢x©òNõÉê;²oª}•Á8¾Ô^µ©N*û";Íë\cÝ<`š ÝÚàL£L)ž¬^Œ,p?s¼BähÚ »èØJ­)òSM_I {­ÏÄn:"¸ÒÍ\ö ß þXã%2C£„ôÞ43²È·ÙUáÛï<äã]ì°#àæbÏ Ïiûü Ékéh`‹5;j$ò¶8îÊôØœiËZ÷·aj,”úP<%Ž<wöµ677[l ­Ó¼†`ytN¼sdUòIø”Ín¬®X)Èã=¡÷¤Gyãÿ _$ÜMìO¬+ôîŒëäÚ¹Ró/0 ¼a^'Ù f´ü‘ÚÓp:uu2Õ»ªl’§‚(ç/Î,þ,Î @|OÏ(Ú_$æ°™#XgÙýù„ ü)ká£B/GDü!ÇHîÁY/\%€™×ˆ~’”¶ (à¶ðˆ|o ‹DÞ•ýMþU ¼å]cõ$O¤Á¬ÚdòpÊ"âbš<œñ'Ðv¿à×ü9Äe+ýgÎ>þNÁhÁ=ÎNf_¥*£\Îï©æÌ1 –>ç´ã¯ ,óȆAyžÙ±öiNLìœNƯG6'þŒ}“š¶Õ/Ÿ±¨‘›Ø'Ö•6ÜNMN+c7Ÿ¼±ÄŠäO©WÉXzÀò×Û5ÏðÎ4®O/^ÇUAuÌ ìßAð˜ý„9£ÒHl¡àí`Ÿ¥Ø{Í’aØ$ÌZ¹H²:P?Ã^[e”R@¾q9hãN¦”¬T=·üãìjôuLÊ›Ÿ N¶’ŸÃÙùì2n·êè0£h&ÚlŠ9‡b½•ì3ôÆÜŒ¬^ÄZâFÂÁü–Ü^ÄŒ®”?©na¶ø ø¢C×+p$Zæ×7XV˜–»½¾Öve2W‹«n*þQUÛÓ !ʓʽêVWZÊC½˜DÂË \ìl±å€/t ù¦bûΘ¬ÞvÝ Ð=&´q³1NÔw@¢Êwœšíƒ÷‘¿Ò%†æU³JàN¯¼ ¶µªá‘²³2¿kÑKƒÑ5]ŽÍ•Ï%ØÝËG”-­h¯ûFY.r‘BÜdíÌ&ÏOìQâÅúµ¿‰>ójyûdË\ÿ…ÇøŠ`Wõ eWðGó÷f«n™zôçÒ늿àzOÌg@äM²#˜èøžù®€h²ÚZÕ«âѼެz!¿æ/ãj|•q8 áë±ÑP“z•+ŸhþÀÆ ë5 Ô³ñsÞùÞí–æFgÜÿÀ{Þó(lIt©__Û:µ>ñM|[¤§û#×Qéxƒn‡‡šå®¥îWgÇŸ¸é‡.„¾Ñ¶®>"+„AK³y7Öš?ÍNùâê0æbwŒãeÖOÂ{ÌyÈþ·gU¤%9;²ËbwÞˆ•ztb.ûæ,VF"ü@¾ÉöóFòþbe&ÖV Ž¶‡Þž}‚Ã*˜hBÚÖþö ÒJGÞ&ô@ôÏt¹±á¨qŽrŸðwFi5-ÆBk ݤØ }MzLoNóo‹ÆsVG ! ¢cìüå|)ëk„ðïÂù¼æ#Ê%JwZ˜åáîå­æÏáxŸijÊ5*“aâÜ£„7Y4B_ÒÄ,ñ7Ûv¸ûrCþþœ!ôvüZþ &™=£Ti\dÓXXþFãØëLTªZZù‚™T”…Ò»ÐèfºœÚ‹Éí?mtî·¹¹s^CGõT½Ð0Nê‡),…åVa=o?miDg+Ÿ)hökGŠÕ½Õ—e/¥êçºÅðkÇT‹ y„åÃ-]yv­±ƒæ™±Ñ2Æv{«] Ùmj㻦 ]¢ I£Þn-ÑËA9®²²Ü²¸ IQ@<»f‹j™v4”ßÒÑÜwcýÒu¯)[¡ZŒ^ðð•!u¥ÇS-W‘O`.z~&V}=¯ØÂß"`lAú£aÃYÝÔNQÔ¹š-Y×[ÿnŒ‚CÆmÐô„ÀsÀdÇtx/Ë6ÓKϵعº@­MMl–šŽBmá×Ú¥ ºJ]Ä•n“ç¼eôI³[»DçÒ˜äe<ÃóÆzB_ИwµŸ¸é³ššXYŽd0¶ÿã{+N¶ Ì ÿ/Z,26(ûà~lžèKºÁšOnÉ P9ü¸ÐÁLïÅhz°w3N“g]YÓèO('¨¤óôñüÙ<›Ä8G*éÛ"p¦“Ôž–k8*bÝ”‰™S ã(fjí<¹±`-e47Ì;ÍðQÁ]à]ÞÒ Å䬬×Äáûб…÷X{§;çw!·Ãq·úóI‚zÁ*kk"pŸ>“¹“Î)dͯ&ÌÌÛó&oWn]þQz’3ë¡-Ë«"¾§$&—QùÜÿÊ–Çó¼œïÝ@çQÅù‡³Àüa´bÖJÞ >vªv¤¿ ûG}³Â[¾Aö& Hª}\ë¨5¤µÉªð"ÞÞǘ±¦ádý¥ÚÜøãèæèÁXeì´óoDjþÃÜÅ:2ü0B 8mð±‘`“}æìYmRq¬\^RÑTÓ•µ&çWÒ(öÆBÚsÞlÑQ ˆ¬×l®UÑ,~¯T~â‚*I¾´BÜQ¸];Ù¾T×C´±(b5ÑÔmÂlÉnŽ=O@yXºv…~µú̇Ìsà;ƧF¹>SÿT—f@™†ŒÓ´ †ŸöPð¿zïÔØÄŽ“K²ŽN>:Í>å[ë°›!®Ÿ  )Ò5 å ¨Î0G÷c;þs·0Î0ôƒ†ƒDð=hÕjd:*ÝYóFÛ„µ·ÿn^€T𦹿;ÏA"ù~å&<‚ö2MÐÓjVâ=§ Sr›l4É´PRkÍ0²Tz@)ÑdVšô“Ôå*+ËeÑM“ÿ ¾67!ŠbŒD HyYà¦7öŸš#¾„-·ýíÜ\¯ ™ÃǃgΙ^ˆ¿æ‹+9&±a¶ú‚&ÀŸS´U_ê;‚µ¥fÔé¢ò¿ð×ÌqF½¶zJELõ h@ƒ3Ô¹èÇUÏ· ž1œ”/–ÈÐÁ. >Õ-ÅŒ¿w¯ƒO¢ƒµ—D? ov“o=íe¸æšÇ¢»ŒÁLjÎW ÓRÍoÌ+ÓtX`yë4Ø>Y¾³:Àе†)nm„n¶E®FrBO"u)wꤷ6–ªeðBeªV ÑÍÌS…kE~'`PÀîÅÛÇ…™TÆ~jWDŸD{NîØÄÆïÈëÂúî+—xKªo¾ÑmUƒo¡"åKÞiŠ˜D&3hRà,ó!Ífä̧ÙßpÆ)Fo~ŸÂ¿ b §ï´Á ± £ð9«™6ù çi©X·Lr”Ëâ<æLæôÜ-ZQ¸‰·•ݑ՚ѕ‰²±„€„ùµŠx‘@!ß ¤)5Ô#ÀÊa¢dç÷"ºèoYÛÙÙÜ_Šö”KJ·]᱉ÀvŒ·„Ãè¬gÀ@ÚAê*žúÁ3Å> 4‹e'4V¸²Ûc}î{œØœFRªº’†þ³ÚϘ'ª¨Íkz;ãVm¥w€çV´cª.” _ÒUÃunï¥ÈÀPç -¸,6)Öõžùjö¯3×',¦FS±‹ð ý­k7×Ç=ÆXúBMQ}(=ÍÝ åçhtÆ{Æ5æX_ÝíIÍse«ª¼[tYÊÈ¢Ì,¸L8ËÔ0wX§…i¥Q£gðƒÈf¨—‘buôs YÕôü+ùcØŸxëÙ¥”ÔË”v¹§²þÈÞ1¹rÊÊ‚¾ùo\sA‰öšñØVïT~RkÁ­ð}ãPl‡í7ç-«ùñYb Xµu·¹=´Pÿ̘©y©pjŸ™»˜´Pø ^gßáø^®¸U£ÂA÷$ß²‚¢KX¯RTNFé¦Gú!°ÉúÒzM·Z÷HwKÍÔµ­®‘TêTÙpE’c’»¼¶¥¦AÕzÉrE£¸§p1ÿT_þÎ ]oÖKΊ_L¿$2ë_%~ˆ,á嚅ب¿üMe~áJÉíq$$Ò ¥­ÌkU3•;Ìë"›‡¯ŠFóΖ‰DÕãT÷Oð’›ê»oÒ¢Jm_ÝåU˜ïUUWm}œe¦­†Õ Ú¿mNKü°Œ¨èÑ^ÖõcáóæR›È2ë`dmtàuÖ _L½ì€ó£{pðz,–<^«L®õζ]0¿C2Õ7%×ÅÏ £?únzÄö~è$ãXßÖ7ª(#FÓd±B €yæÏŽ'ΕîLû0kR+O÷‰ïRyq’ß–¤qóSRÏV_˜Î!ÓD'èQò[æ"vW ‚Íá긋y=¹ÇéƒùÀoÀZà{z_úFÆ€Ÿuy™qˆi`«¹+ÊÙêñPÒGí5‹ù›¨g(÷ -d1ç2GÌHRZH Â|Ê[R¼ 7•˽]ÌÈ™]©(é(ñ5¥m¹ð€g—©Ù¨†`ÑjnoîDÎPîÂLá*N>ðž*¢¿¶T%2Q ô7ž•öˆì¦½¡ï¦>£¾¡h¨è4¦ˆþˆœ¢`ô`9¯´´CÕêJ[Åñ—â6…Ÿ wŠ’ååK ×ð2ï“…,E…OùQáSâ†}Ø×E¯.X«ÁûæºèâÚÕuoRëÓ‰Øn3×>(öm JåÄvzŠóð¹ÔOsÏjqÈŸËÖX‡EúÄ8Ñ—±HÊñÕò¤©M¤YŠt~Xt^ußrÁæ3Ñt’KÖ‹(!Ʃҫ•÷„+øXÉéXôK@Y»´nN䙥‡9îZÝÂyÎxMðåÊÒdùR;à_ú£]>JOÉRÐ(ÝSè1ö#nÅ­Æ™F±î^Tß“\*)î…“Š&7gtËÆizN1åøH§ÿ~¸ìvips-8.2.2/test/images/WFPC2u5780205r_c0fx.fits0000664000175000017500000252670012541717402015444 00000000000000SIMPLE = T / file does conform to FITS standard BITPIX = -32 / number of bits per data pixel NAXIS = 3 / number of data axes NAXIS1 = 200 / length of data axis 1 NAXIS2 = 200 / length of data axis 2 NAXIS3 = 4 / length of data axis 3 EXTEND = T / FITS dataset may contain extensions COMMENT FITS (Flexible Image Transport System) format is defined in 'AstronomyCOMMENT and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H BSCALE = 1.0E0 / REAL = TAPE*BSCALE + BZERO BZERO = 0.0E0 / OPSIZE = 2112 / PSIZE of original image ORIGIN = 'STScI-STSDAS' / Fitsio version 21-Feb-1996 FITSDATE= '2004-01-09' / Date FITS file was created FILENAME= 'u5780205r_cvt.c0h' / Original filename ALLG-MAX= 3.777701E3 / Data max in all groups ALLG-MIN= -7.319537E1 / Data min in all groups ODATTYPE= 'FLOATING' / Original datatype: Single precision real SDASMGNU= 4 / Number of groups in original image CRVAL1 = 182.6311886308 CRVAL2 = 39.39633673411 CRPIX1 = 420. CRPIX2 = 424.5 CD1_1 = -1.067040E-6 CD1_2 = -1.259580E-5 CD2_1 = -1.260160E-5 CD2_2 = 1.066550E-6 DATAMIN = -7.319537E1 / DATA MIN DATAMAX = 3.777701E3 / DATA MAX MIR_REVR= T ORIENTAT= -85.16 FILLCNT = 0 ERRCNT = 0 FPKTTIME= 51229.798574 LPKTTIME= 51229.798742 CTYPE1 = 'RA---TAN' CTYPE2 = 'DEC--TAN' DETECTOR= 1 DEZERO = 316.6452 BIASEVEN= 316.6715 BIASODD = 316.6189 GOODMIN = -5.064006 GOODMAX = 2552.17 DATAMEAN= 0.4182382 GPIXELS = 632387 SOFTERRS= 0 CALIBDEF= 1466 STATICD = 0 ATODSAT = 16 DATALOST= 0 BADPIXEL= 0 OVERLAP = 0 PHOTMODE= 'WFPC2,1,A2D7,LRF#4877.0,,CAL' PHOTFLAM= 3.447460E-16 PHOTZPT = -21.1 PHOTPLAM= 4884.258 PHOTBW = 20.20996 MEDIAN = -0.175651 MEDSHADO= -0.121681 HISTWIDE= 1.033711 SKEWNESS= -1.983727 MEANC10 = 0.12958 MEANC25 = 0.3129676 MEANC50 = 0.4577668 MEANC100= 0.3916293 MEANC200= 0.3115222 MEANC300= 0.3295493 BACKGRND= -0.3676353 ORIGIN = 'NOAO-IRAF FITS Image Kernel December 2001' / FITS file originator DATE = '2004-01-09T03:26:36' IRAF-TLM= '03:26:36 (09/01/2004)' FILETYPE= 'SCI ' / type of data found in data file TELESCOP= 'HST' / telescope used to acquire data INSTRUME= 'WFPC2 ' / identifier for instrument used to acquire data EQUINOX = 2000.0 / equinox of celestial coord. system / WFPC-II DATA DESCRIPTOR KEYWORDS ROOTNAME= 'u5780205r' / rootname of the observation set PROCTIME= 5.301314019676E+04 / Pipeline processing time (MJD) OPUS_VER= 'OPUS 14.5a ' / OPUS software system version number CAL_VER = ' ' / CALWP2 code version / SCIENCE INSTRUMENT CONFIGURATION MODE = 'FULL' / instr. mode: FULL (full res.), AREA (area int.)SERIALS = 'OFF' / serial clocks: ON, OFF / IMAGE TYPE CHARACTERISTICS IMAGETYP= 'EXT ' / DARK/BIAS/IFLAT/UFLAT/VFLAT/KSPOT/EXT/ECAL CDBSFILE= 'NO ' / GENERIC/BIAS/DARK/PREF/FLAT/MASK/ATOD/NO PKTFMT = 96 / packet format code / FILTER CONFIGURATION FILTNAM1= 'FR533P15' / first filter name FILTNAM2= ' ' / second filter name FILTER1 = 69 / first filter number (0-48) FILTER2 = 0 / second filter number (0-48) FILTROT = 15.0 / partial filter rotation angle (degrees) LRFWAVE = 4877.000000 / linear ramp filter wavelength / INSTRUMENT STATUS USED IN DATA PROCESSING UCH1CJTM= -88.2569 / TEC cold junction #1 temperature (Celsius) UCH2CJTM= -88.6697 / TEC cold junction #2 temperature (Celsius) UCH3CJTM= -88.3028 / TEC cold junction #3 temperature (Celsius) UCH4CJTM= -88.7671 / TEC cold junction #4 temperature (Celsius) UBAY3TMP= 13.2302 / bay 3 A1 temperature (deg C) KSPOTS = 'OFF' / Status of Kelsall spot lamps: ON, OFF SHUTTER = 'A' / Shutter in place at beginning of the exposure ATODGAIN= 7.0 / Analog to Digital Gain (Electrons/DN) / RSDP CONTROL KEYWORDS MASKCORR= 'COMPLETE' / Do mask correction: PERFORM, OMIT, COMPLETE ATODCORR= 'COMPLETE' / Do A-to-D correction: PERFORM, OMIT, COMPLETE BLEVCORR= 'COMPLETE' / Do bias level correction BIASCORR= 'COMPLETE' / Do bias correction: PERFORM, OMIT, COMPLETE DARKCORR= 'COMPLETE' / Do dark correction: PERFORM, OMIT, COMPLETE FLATCORR= 'SKIPPED ' / Do flat field correction SHADCORR= 'OMIT ' / Do shaded shutter correction DOSATMAP= 'OMIT ' / Output saturated pixel map DOPHOTOM= 'COMPLETE' / Fill photometry keywords DOHISTOS= 'OMIT ' / Make histograms: PERFORM, OMIT, COMPLETE OUTDTYPE= 'REAL ' / Output image datatype: REAL, LONG, SHORT / CALIBRATION REFERENCE FILES MASKFILE= 'uref$f8213081u.r0h ' / name of the input DQF of known bad pixels ATODFILE= 'uref$dbu1405iu.r1h' / name of the A-to-D conversion file BLEVFILE= 'ucal$u5780205r.x0h ' / Engineering file with extended register daBLEVDFIL= 'ucal$u5780205r.q1h ' / Engineering file DQF BIASFILE= 'uref$j9a1612mu.r2h' / name of the bias frame reference file BIASDFIL= 'uref$j9a1612mu.b2h' / name of the bias frame reference DQF DARKFILE= 'uref$j2g1549cu.r3h' / name of the dark reference file DARKDFIL= 'uref$j2g1549cu.b3h' / name of the dark reference DQF FLATFILE= 'uref$f4i1559cu.r4h' / name of the flat field reference file FLATDFIL= 'uref$f4i1559cu.b4h' / name of the flat field reference DQF SHADFILE= 'uref$e371355eu.r5h' / name of the reference file for shutter shaPHOTTAB = 'u5780205r_c3t.fits' / name of the photometry calibration table GRAPHTAB= 'mtab$n9i1408hm_tmg.fits' / the HST graph table COMPTAB = 'mtab$nc809508m_tmc.fits' / the HST components table / DEFAULT KEYWORDS SET BY STSCI SATURATE= 4095 / Data value at which saturation occurs USCALE = 1.0 / Scale factor for output image UZERO = 0.0 / Zero point for output image / READOUT DURATION INFORMATION READTIME= 464 / Length of time for CCD readout in clock ticks / PLANETARY SCIENCE KEYWORDS PA_V3 = 49.936909 / position angle of V3-axis of HST (deg) RA_SUN = 3.337194516616E+02 / right ascension of the sun (deg) DEC_SUN = -1.086675160382E+01 / declination of the sun (deg) EQNX_SUN= 2000.0 / equinox of the sun MTFLAG = F / moving target flag; T if it is a moving target EQRADTRG= 0.000000 / equatorial radius of target (km) FLATNTRG= 0.000000 / flattening of target NPDECTRG= 0.000000 / north pole declination of target (deg) NPRATRG = 0.000000 / north pole right ascension of target (deg) ROTRTTRG= 0.000000 / rotation rate of target LONGPMER= 0.000000 / longitude of prime meridian (deg) EPLONGPM= 0.000000 / epoch of longitude of prime meridian (sec) SURFLATD= 0.000000 / surface feature latitude (deg) SURFLONG= 0.000000 / surface feature longitude (deg) SURFALTD= 0.000000 / surface feature altitude (km) / PODPS FILL VALUES PODPSFF = 0 / 0=(no podps fill); 1=(podps fill present) STDCFFF = 0 / 0=(no st dcf fill); 1=(st dcf fill present) STDCFFP = '0x5569' / st dcf fill pattern (hex) RSDPFILL= -100 / bad data fill value for calibrated images / EXPOSURE TIME AND RELATED INFORMATION UEXPODUR= 300 / commanded duration of exposure (sec) NSHUTA17= 1 / Number of AP17 shutter B closes DARKTIME= 3.000000000000E+02 / Dark time (seconds) UEXPOTIM= 16880 / Major frame pulse time preceding exposure startPSTRTIME= '1999.051:19:08:37 ' / predicted obs. start time (yyyy.ddd:hh:mm:ss) PSTPTIME= '1999.051:19:16:37 ' / predicted obs. stop time (yyyy.ddd:hh:mm:ss) / EXPOSURE INFORMATION SUNANGLE= 141.618347 / angle between sun and V1 axis MOONANGL= 126.698997 / angle between moon and V1 axis SUN_ALT = -31.523479 / altitude of the sun above Earth's limb FGSLOCK = 'FINE ' / commanded FGS lock (FINE,COARSE,GYROS,UNKNOWN) DATE-OBS= '1999-02-20' / UT date of start of observation (yyyy-mm-dd) TIME-OBS= '19:03:13' / UT time of start of observation (hh:mm:ss) EXPSTART= 5.122979390428E+04 / exposure start time (Modified Julian Date) EXPEND = 5.122979737650E+04 / exposure end time (Modified Julian Date) EXPTIME = 3.000000000000E+02 / exposure duration (seconds)--calculated EXPFLAG = 'NORMAL ' / Exposure interruption indicator / TARGET & PROPOSAL ID TARGNAME= 'NGC4151 ' / proposer's target name RA_TARG = 1.826355000000E+02 / right ascension of the target (deg) (J2000) DEC_TARG= 3.940576666667E+01 / declination of the target (deg) (J2000) ECL_LONG= 164.096619 / ecliptic longitude of the target (deg) (J2000) ECL_LAT = 36.623709 / ecliptic latitude of the target (deg) (J2000) GAL_LONG= 155.079532 / galactic longitude of the target (deg) (J2000) GAL_LAT = 75.062679 / galactic latitude of the target (deg) (J2000) PROPOSID= 8019 / PEP proposal identifier PEP_EXPO= '02-030 ' / PEP exposure identifier including sequence LINENUM = '02.030 ' / PEP proposal line number SEQLINE = ' ' / PEP line number of defined sequence SEQNAME = ' ' / PEP define/use sequence name HISTORY MASKFILE=uref$f8213081u.r0h MASKCORR=COMPLETED HISTORY PEDIGREE=INFLIGHT 01/01/1994 - 15/05/1995 HISTORY DESCRIP=STATIC MASK - INCLUDES CHARGE TRANSFER TRAPS HISTORY BIASFILE=uref$j9a1612mu.r2h BIASCORR=COMPLETED HISTORY PEDIGREE=INFLIGHT 29/08/98 - 21/08/99 HISTORY DESCRIP=not significantly different from j6e16008u. HISTORY DARKFILE=uref$j2g1549cu.r3h DARKCORR=COMPLETED HISTORY PEDIGREE=INFLIGHT 16/02/1999 - 16/02/1999 HISTORY DESCRIP=Pipeline dark: 120 frame superdark with hotpixels from HISTORY 16/02/99 HISTORY FLATFILE=uref$f4i1559cu.r4h FLATCORR=SKIPPED HISTORY PEDIGREE=DUMMY 18/04/1995 HISTORY DESCRIP=All pixels set to value of 1. Not flat-fielded. HISTORY PC1: bias jump level ~0.100 DN. HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqepc1_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7pc1_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatpc1_003_syn.fits HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqewfc2_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7wf2_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatwf2_003_syn.fits HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqewfc3_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7wf3_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatwf3_003_syn.fits HISTORY The following throughput tables were used: HISTORY crotacomp$hst_ota_007_syn.fits, crwfpc2comp$wfpc2_optics_006_syn.fits,HISTORY crwfpc2comp$wfpc2_lrf_004_syn.fits[wave#], HISTORY crwfpc2comp$wfpc2_dqewfc4_005_syn.fits, HISTORY crwfpc2comp$wfpc2_a2d7wf4_004_syn.fits, HISTORY crwfpc2comp$wfpc2_flatwf4_003_syn.fits CTYPE3 = 'GROUP_NUMBER' / Extra dimension axis name CD3_3 = 1 / CD3_1 = 0 / CD1_3 = 0 / CD2_3 = 0 / CD3_2 = 0 / END ¿Å«”?j»þ½Ã›ª?]WO?€‡›?[Ù®?`Î ¿‰É‘¿nÒ]?OaÀ¿ƒ¬ø?y˜à¿Š×Ü?WH’?Yëc?LÌ?C>¾?XÇP½º‹H?rsÄ¿ƒí±¿†j¿‚t#¾ Kš¾!yû?ƒ1¼Ñw¾Aç ?[þ<¾Atë?rù0?@À˜¾îx?c,º¾°¾½·(þ?NXç?ú /¾sô{¾lü€?/®`¾!]?Ä¡¾ãò?!E¸½ÿœ½û.`½ìÿ•ºé €?Û?öDô?3á?N¾&¿ˆÒʽ!n¼¾ `?Pcõ½º;®¾ ˆ?Jù€?[2?Yüð½Â³¾ ‡¡?gýÃ?RɽÀʿׅU?]+=¾F¿“w"¿å¿’òš¾5½v¾“`ò¾Vjl¾1¯ª½¹ŠT¿÷×v?ê¼´¾šÆ?UD¾%¹ò¾9Æ¿–#t¿§o!?O«À êŠ?K*L½íû8?f•t@ŒÎ?åÑ¿ª^:¿«ÎD¿ƒN©?6|p¾cF²½OóX¿ŠsÀ¿… Õ¿’?;O–?_«²?a+3¿à-?!Û=¾|(š¾úü¾eËÞ?\0俎ò{?@³Æ?+R׿v¾m”2?bÍk¾7J©¾¡Ÿ=Eh?W>²¾–Žº?ï¶-¾$¯n?G>ÿ?@ÆZ¿™èî>¢L¾Äm’¾e½°.Ü¿•ªæ?TX›¾%¸J¿‚f2?q”z?R>”¿F¾ ~™¾:ri?8^h?"3?ç¢È¾)%è½æ‘È?H~|?QéD?5s;¾Rؾ©k§?Û‚Š¾F½Ã?Aº¾o¡¸¾#°¾fW>­ìì¾9YѼ‡ë?LÃŒ¾até¾–×¾’c½T¾]¢®@ï\¾%R'À¬Å¿Ì¹?«N?SÑJ¾bu¼?,½ñ?[òB¾‘8?4A–¿jø¾“3D?Xîä?3G½žÚ2?6?Š?O:Õ¾D…¾!wÏ?4m¾3ºt?à†ç¾8ƒÿ¾d—¹¾M5z¾Ân¾k:?:/ú?ZH–?V?0×V¾ˆå¿aç¿‹Ôt?rÛc½¢~Ü?u€ò?^Öº¾_Fä?r…q¿3ÿ¾Jù?Æ„ ¿Ÿ>ï½-¾ŠœP?eŒJ@:<6¾;)D¿ËÔ?iHa="à?\äŽ?-#\½èïü¾Q؈½§VÖ¾pÈé¾_Tw¿‰jû?‚°„?äm6½ÚkâÀZÀ¾ÝŽÍ?2¯?Rl½âÈ¿‡7¦¾"mƾdÓ¾[¨Å¾&Û‰?WXÆ¿–?¿™¥E?Ig^?Hs?18ß?Có0?YE’¿¨ÿ¿|óʾn½ø¾šÌ¾|W¾UfÂ?Xsú?J4³?jf?õß|¾7˜ì?Ff¾KU†½Ÿß>?PÚß¼ÌV?ïb½“„ð¾9ç?îÅ¿–ܶ?KuU¾I:? †?Y_(¿+Ô?L[Ü?Y¡~?î`?3Q@¾²fÖ½u/@¾fÈ?[@0?Vi¾[§È?"ÚÁ?BE8?:ˆ®¿‹Ñ¬½z'à¿~ì ??K ?PjØ?@[ܾ/Zˆ?!Zy=é.?áeÆ?@˜Z?Böý¾†4’?4¦b¿­Ó&?:¶’?Yªè¿‹•ˆ¾G¬Æ¾em†¾YƒQ¾÷h¿©U9½Ó¤¿Mz¿’;?COÓ¾ÇÆ?6¼ ¾~iʾz=¾¯©ß?Js?O«G?Žv?”øÀ¿µý?NÀÞ¾wüÛ¿–Ž?ý¯á¿‹ÈŸ¾£ Ç¿šOè?IV¾ƒHƾRÊw¾P?Cç¾?vG ¾bº†?Só0½Û¹@¿ži?=ëÔ>øÉ¿ŒØ‹¿˜Ñÿ¿vïô?8ñ ?ï™"?15?S^?+”¿‡}ú¾›M¿ˆŠ|¿°ŠO¾U‚?'Û ¾7¯¨?:{ÿ½„ýê?0s?qæ?.›¾`:˜¾•ÈD?E²}¾˜ˆ?2 t?Dß ¿™@Ó?BK”?Gÿܾ¿´¦¾‹í.?õ¬5½ï!æ?“C¿Œ©³¿–à1¿Š¸ž¾Dž£¾¤c¿‡®=?X®p¾ŒÁ`?è5r¾~òÅ>õ!¾œ³¾H .?#|5?NšU¾g|?Bjn¾!?dLD¿¥À3û ¾KBx¾V°²?LÏ—¿˜Ò?k<ö¿ÆD¿t”ý¾‹×C?Ö~7¿†WJ½|æÀ?‹¾Až¾g¾lƒ°?IJ?Àd̼ÙÒ¾tܾNHC?G³É?Zf?Tå?p¹È¿˜[?€rx?ZÒ½ªŒ–?P($ö¿–§R¾!ÎF?.>˜½–Ì?<‹Ž½Ì‰ ?(oV¿•Ý;¾žzÔ?\|ÿ¿¡”+¿Žâ˜ÀÆw½“KÔ?6غ¿ïa?-)˜¾ml¾mEß?7æl?^]\?-Ë?`Õ°¾onE¾qÖ4½»x¶?Enྣ7j?cU«?2Úô¾š+o½„’¾§õ´?í;”?5Çv?à0e¾szw?0WU?ù"¾" ò??Ü>¾YÚ¼¿'¨‰?IE0?3Ðî?òûž¾Ž«ŽÀ ƒ?`^ê¾ÝC¾ä$×?ZËq¾4锾)T·¿Š,?I®#¾6@‚¾cÁo?Lð?dp¢?I ä¿}ÜÊ?`¨¾_@ۿܯ?ì}¤?Fö?6›O¾’ ¾lŽc?;WÞ?VŽÀøÁ?5Gþ¿“%{¿—Ô?,€|?g’[½Ê‡Ú¾ai@9 d¾×YQ¿Œ‹xÀ‰ ? â†?/XÈ?3«-¾Y’¾“ ¾44Ö¾eÚ¾V6“?Bl½àv?/Z¾\ˆl?2þ¾-2’¾ƒ&?ä’?÷?Væ¾}L¤¾Ye¦>îÀÑ?VÖx¾_cï?+;¾zoY?,`X¿(ž?Bn̾g^¿¾×?ñu‚½»,^¿š-B¾ðì_?¯=•?ë ž¾`ÞP¿‹O?äoß?XqϾ¢™R?Dá–½êj½Ú]ü?wz³¾ˆ?ZÔ8¾P©>?mõ´¿ Bü½±VÞ¿qêÿ¿†ø“¾a%/?rïD?i½¯ʾc?@aÄ?ø ?h·?Ù‰]>ìxœ?Q@ˆ½»UŠ?_¦ñ?¬Åƒ?4`­½…žx¾„¹e?C«E?7Áó¾ŠÞæ?q…°¿5\¾+‹P½G˜?+=ؽú>J?BäL¼Â°8¼¶o¸¾ž`¾N8Ò½‘{¶?P“N» Ú@¾˜ƒÍ?#Ѿì⾎pá¿‘Î@,L˜?M~Þ¾Hú¿ýp5¿“§¿hº.?W¿r?5$¾uÊ|½‘¡j¾‹®¥?6Wl¾:º+?PúÎ??1)¾?Kat?mÂÚ¾^\—¿ŒÊb?=õ ¿ŠKP¾µÁ³¾1† ¾;Û鿈 ?6×뿘Öj¾]ƒê¾n½•¾1T¿˜ÉŸ¾sý¿’uD?á=Q½lY°?S!¿¿,[< Ò ¾0¾è‚?W"4¾oØS?61€¾±?GÿS?d (?R¤Ò?Kù$?Er”¿¢„?^µÆ?8ü4?L󳿓’…¾b£½¤a,¾ó?:\ÿ?A¦¾B_¿‚Û•¾ó½±Î?BX¿ƒ¯Ú¾¨t¾äú?8 €¾•Ý¥?óÐC½Ât¾.h«?ié+?LØk½©Äˆ¾‰¿šŸ?N辜m ?;¹¿?ñ¦=?7c<¿‘>?{s=¾ƒgî¾ 3B¿ˆr1¾xlŸ¾”ÔÁ?@?9Û‚?7^*?îJ¾M‡~½Àº:¿–•Ñ?'î¤?-XÆ?èù°?3-ó?~þD¾V?6eÔ?E¹¾¯“?é;b¾ÊB¾¢˜B?â,\¾Ôf«¾:¡?@žØ¾m1¤?*L>¾]¦F¾7Yʾï| ¾ªÎî¿fE?2Hü¿k7¿ ™¿nA¿l„¾H&¾¯aÅ¿‰eÀ@El¾¾`ß¿–T±½¬ªþ?ô¦?Lîõ¾VÔ¿„´Ž?KT ¾'¾Gö¾¾,”Ð?è̽ž‚Â?^:0¾hµ¼ï-€¾<ñ¿­‰”¿‘Ûb¾šáB¾;ñοŒã×?ZÀþB¿‹ú®¾VøK¿ú.?!î\¾M„þ'‡Ô¾Û¶¾/¥?Vú€¾s ¾°ñú¿™ÕO¾ öû?øµ?B¾ οp•Q?4T¤¾a’Å?ænª¾s›?JGÓ½¢sê¾R2$?8c”½§\¿—a¾b†?7îÀ?=í¿ŽŒö?Ô7_?6»é¾zd??Ò?<‚ö¾·?ßñjÀ ~{¾ ¼¾¥ã˜?B\?Fžu¾{:?rô„¾gM1¾:rý¾z‹ê?MLf?Uå\?RåZ¾ˆI¾+YV¾<{Y¾]X¾-q*;Ý €?O ¾…B ?+Âë¾s6?C›‰¾3Ê¿ˆÍ´¿‹~#¾Vë½Èx?8Zƒ¾‡ú•?=ÈP¿‡7Ž?1Œ¾o”r?r*@¾¨º2?LÑm¿½Ú?##Ò½ hT¾Î?=–¾Ç:½˜ñ*?Üîb¾0¡ ?g-×?3eª¿‡˜?X£ƒ¾5´ë¿…=½ñ:?;FX?)¸¤¿€¬y¾ÇÀN?ØR¿ƒ½§?:†ò¿zô¾DÜ?¸¸?G‡o¾…_?7š0¾Ýš3¾Š#?H[¾ž ¾Ç@?Ô"c½¢Á‚?àï¿‘V‰?1à:?ÝÚ?2 Ø?"­¾OŠ?R¶¾Q„p=Q¿–ëõ¾ Ìå?D„Õ¾£ °?_aü?[­è?`¼¿€‚R¾¯²X¾°8¾~ì_¿‘nŸ¾“WÄ¿•ùê¾™#Ú¾"“R?5 Œ¿ŽAt¾J­[¿”%Š?<¤š½·Œ?-Ùn¿› 澋¹–?C1?0J{¿I¾ß¼|?ØÄŠ?zK¼ºmè¾pd?p™ä¿•邾¡OG¾hǾJíe?BȽÈú¿˜?GÛÙ>ü{ü?apпû%¾ AŒ?XÛ¿”˜v?]@½’À¿š¾™½ÅÍú?8E&?RAÿ?5:{?P¾V¾I‡Y?_ßÀ?S%¤¾I¦¾/r¿x]¾”v¿M„?Fo=½ñMÞ¿swH?ØÇG?Sr?6ím¾®|ö¿ˆì?>­€½WY¿yÊ?ó…?>½ö?ê3À ±ê?>!¢?C6&½›8¿–« ¾Mg„¾,ü|¿›_¾¬¼?¿¾²öÆ?EŒ­¾½ð•>¿€Ó?aÑľ¥¡Ö¿®xâ¾¶<¿‘6_?DϾQ¹¾KÕ×¿Ž„d¾!œ5¿‡e²?ÓB?:l׿ƒmоBè?f5¿ ê–?d^¿•j°?Òº1¾QC?C䛿ŸkV¾™ˆÕ¾s]‚?EºÞ¾Ç&Û?jp¿‘j6??ðŽ?b\¢? â?Tuz¾{ؾì3%?/nü?:¹6?9d–?E´¾›º>?ؽÅ?I:Øf¤?x ¿œnï?k¾Õ°?÷n¿?W(??‹Y¿žî?5RŸ¾Iq˜¾a+¨?=ª?¿˜â“¿…¢? Á?<à?MÆ ½åÞâ¾Aû1¾+eƾrY’?´Ê?'e'?D8ú¾,ìÆ?a†½?ïtˆ¿Å_?ê6K?^‹%¾žp?:í¸½S‹|¾ÑC¾\¶¿“S½á]ä¾ Á·¿—ÍĽ«´ž?Fh¾e¿¿Ÿ<ϼV7€½Ó f?EÙe½˜A¼¾¬½}óô?@ÛH¾€EH¾b˰¾g_ ?N¨?ãÞ%¾ ­¾A齬 Ê?PH?H… ¿—·á?NÇŽ?5²?Eg¹¿—Ú?KнÒèº?Dü?äp¿-x¾—É>¾fëS?¦Sæ<›y8?/<@@xɾ6ð³½ÉJ?Q¾lÇ?êh¿~½¢?XæF½ÿ€Ð¿¨V¸?Oྯ%?.è˜?5–·?ó?¾ëB?gq?Éä¾ øœ¾Œé²?_$`?Hu¾‚'(?Ex¿‘Ç?1ß¶¿–H·¾%A½Ô^À¾yN?H¡§¿J/½½«6¾‚Ü}¿ój¿‰êŠ?%ûϾ百Nk?¿L4¿¤r]¾¶3¿©þ¹¾Ñµ;?Rm¾_0¿œ@I?Oï⾬H¾¬" ?;š??1m¾ ¤?I›A¿™2v½Ú…f?G*f?R‡.?I‚¿¥ë?[_?è2ª¾“Z¾§¬F¾™õÕ¾&½à¾¨¿š}æ?ܨp¾UÒ¥¾¼Î\¾.ð¿‘ÅÒ?Û9œ?;⛿­¿À¾^@z ¾‹4À yò¾‚Éì¾P9˜¿B¾)ìµ?LI¸?H)÷¾›Þ^¾k@ó?T^,?+(i¿6?+mN?·?å?Xš¾¤ÁŒ?/ßÖ?Ù“8½ìa@?Aô²?T!;¾x ?Ø©€¾Òie?f¾Ôƒ]¾˜Ò?CÛ‹¾l|?Ô]f¿“¯¾Ÿ›&?=ö¿˜Q‹¾X›>¾44ä¿4#¾F%¸¾>ö÷?-‘¾wäù?çG¿ ôw¾©ž?O2•¾‡*?P›?UÀ?´H>?¡J?4pá½¾Á¾*1(¿›)ž¾·W`?ñ¬?FÏP?HŒT?8²Æ>íp¿"݇¾¬{?G2 ¾·̾éw¾šZz¾$Å!?/;?=Á‘¾e.¿¿15|¾°©’½úm¾ZXê?Þ?)ƒŒ¿q ª½ô(®½‚Õú?5úè?\Û|½êÔ²¸»½ —<¿‰$Å¿潜7P?aÊ*?|+À?H¡î@ûU½í'A¿yâ?=ØE¿Œ|è¾G¿‹ù½Züä¾,\¤<‚0ˆ?Rí?GËÆ¾/½½¾c¾’Á?E2¿‚/Ü?J2À 1Õ?9P¾jv4¾6#S¾«ª­¾R2”½ë­š¿—X½ïˆ¸¾cC¨¾i?>·Ý=ʺV? %…?iÝP¾ª—¾a7¢?SÒ‚¾ »i?#껾P´å¿6Ó¼™p`?]B¿’5½¢¦ä¿Œ:‹?WIì½Äd?YµÞ¾:ó¾W뎽ø¦>¾FÚ¾t:Ö?FöØ¿šOÛ¾X×¾wDؾ @-¾”!¾ÂLʾ°]R?îN¸¾2¿©?0"?<&N¿™ñ侇‘J¹±~?rcO¾¬B¾uÞS¾[8ð½Ç ¿›Ùl?b½˜¾3 ¿™”{¿¨Ðü¿ˆÇU¿šï?0ƒ¿£µ6¾HÕˆ½•îÄ?EÈ„?)ää¾+ Ú¾ÓŸ¾)..?7Êt½Ûû.¿”í(¾—оˆ¶»??뇾žìá¿ —x¾wOË¿Šéi¾/ñm¿œyÚ¿³>¾R×ᅫJq¾s^»¾^€Î?E€Ã¾sÍm¿•>[¾•P’¾Š¹õ¾‰ø?E„´¿‰wë¾&ñá?6s,¾¦±ú¾hq’¾«>1¿–•I?<Þ?¡Ûß¿Œyø?À N¿—?$ûþ¾„‾‚¼²½r>?[Ë"?C´Ü?+1̾M?3 ¿’{f¾ºW…?+K|¾+”že ù¾†â?AÅ¿/Tú¿ÄH{?é ¿Å ¿¤h ?W÷ª¿™M“¾î›?˜+¾1¹i?9y?JB?Lò¯?Z#?,„D¾v°ü¾”ƾ´N¾s`Ý¿ŸH\¾±ƒ¤¾œg?@¾š¿×>Äe¾?B¾ ?)yt?^³Þ¾½SžV¯Œ>ø.¾‰â¶¿‹Ý±¾¥Õ:?íÝ ½à÷ê¾t†&?äìL?9Ô=¸½x?Mì`?ATâ½+âÐ?1uV¾,ƒ?ˆeo?çÿµ?GsÄ¿Š¾À+:¿•·¾œÑ½à#0¿— D½Ÿ¯ˆ½’Œ²¾¹Œ?l4?AÚf?eB?Ió8?XvÀ³M?B¿¡¾…°æ¾­q¾|‘–?7þ ¾‘Ô‚?S}þ?ä6Ö?ú/K¾3[„<‰np¿¡‚ê¾÷lL?Ý ¾DÌ?ÞÈ?Oú?gN¿)¥\¾ßÀ¿’ b?.›P¿£+µ¿†Ó ¾z ¾ #¿‰wë?¡3½‹Bð?:|?Z¥+¿ëK½ãô¼½›û¸¾4Ä?¿tæ¼¾T©¿’𯾅ëú¾¶ï<<0¼±(<ü/À¾ Ⱦ_¾pЮ@FˆÊ¾µ¿‘¨Î¾rA¢¼«§¸?U­Q?l†l¾6•û?mP¿‘[2¾4¾€z½¯‚Î?M}¸?gí´¾q¨ª¿Ê2¾·W?ÒÀ¦¿–oh¾¬A5¿ VŒ½Ìg‚¾xN¦½Õ°”¾uT¾^ê? Z½Ü+Ê?L’y?é Y?ñ¾š_Ã?GgоjI¬¾;Î^½¯Ã¬¾C+ʼjÒ0¾„ëæ¿‚fd¾©ÿd¾9C‘?Es,½%Qh¿¯Ýi¿“]?á*ò½Üà ¿‹{¿>ÇŸ¿›Á„?_Á¨¿Œ¬,?SÂù¾” Ö¾T‚¾‰“j½þ16¾“žX¾€[ m?T:8¾5";é à?W?_¾<&÷¾”·Ì¾¡¥8?wªö¾êf<ð¨?`¾Tî›?C\?bÐs?8ξmÕ¾ 3þ{8?>䳿’’.?áЄ?J%æ¾?Üt½ïKÀ¾†áä¾.ú¾zw¿¦ÅÀýí¿ˆ`b?6)N¾©_?@>.?=øc¾žÛ"½ýÚx?¶¾ª™¾¡¾´n½år¾UËÈ?ì€Ú?µ$¾zO¾·ò?/Éú?WŸÔ½ñÝô¾ %d¾…X¾{Á&?Û¾Â(¿“‚?;¿?ùZO¿…‰{?^‚Ä?>b7¾ Ö»¾=ñ»¾Äî¿”w?hUõ¾©6?ò¾¤?Zý4?N˜¿Ñr?"é^¾¶¾Äb?Py«¾KÀ”?Tqb@¾ Í?QØ©?[=D?À7À?E+p¾Jø¾+¿€$.¿‡õ?1©*?êq¾Ä&ξ…mý?Ö±r¾•[¾VÒv¾LÔ¾d¿ëÕ?À»ý¿ˆÍS¾ÀÓÄ?Æ´¾§‡m¾Ä=Byà¾!Ô¢¿qÚ4?"ta½½8´¿œËº¿„'=¾oï±?î‡Ó¾67¿Œmå¾à>?Ùó̾z:DTàáDoQFCLóºA1}F?i?Qd)?L€?:K"?MÙë?N¾= ¾01ª¿”0‘¿[ ?ì¸{¾Eâ¿”ïZ¾e­?;lj¾¨Û¿š+c?Prп‹«â¾H鸾…ìš¿™Øü½êˆ‚¾ºÏŒÀgš?PŒ¯@@MȾpDÇ¿˜hè>=Q&¾j2¾ZP½›Ž?Hß?F Õ¿'ÏF?g,D¾†Ü«¾zƒ¸?4ȾvV?gÉ”½²™†¾‰§›½Ñ½Úyˆ¾)ö ¾kð2¾d×^?Ep?4ò¾Ûû;? ¤?E™{¿L?(µŠ¾‚Þ,?8å?ûíf¿ª4?// ?#±ª¾!”?8Í,?ð‰@?5 G¾cš{?'sô?eú¾Ðy#?6m¤¾…xG?ì—c¾Œ„²?TÒÖ¾¤gs?/Œz¿B¾è»½ú„½ä«~¾$£??m龬â>¾@᤿¦U¿! ¾Ž'Ö¿¨›³?B3è¾qÕå?,hB?<;&¾g Z?­"¿¢(‹?,¾8? ª$¿‘€¬¾…f?í»‹¾B@½¿’¥F¾¹©ø½¼yø??Sľ[Æ¿ 6?6ö¾&¿šû¾¾FÃ_¾n ?C/‚¾.ÀÁ¾ñï?VHâ¾\-œ¿-I*?3BC?;;>¿°?Jªx?BDÓ?>H ¾kné?Mп¾?qyÝ¿§s¿½«ëÀ½ò­f¾2ž³?«5?K^à?X2?.®¯?ô—E¾Qª?Ó½‰Ì¶?Eà ½íÖè¾GjÚ?H•†¾.‘]?Z%%½Þ&ø¾?ä=¿,e@ŸàBÄ?@~}?[¤¾m4X¿•ŠB?3j@?Ί¾73T¾©ãÌ>ƒp¿˜ݾ™17¾‰Òa¾Th9?%¤ ?0 5¾Må‚>žØH¿—ø ½éÿ辕ûö¿—©¾*ÎŒ½B¿”W¼›X¨¾£•¾%Z•¾³y¾#|D?[uJ¾Lx›½^¢½òx0¿˜$¿•;®½©’è½Ú(²¾·«?gŠ«?>ÒP?o-­¿zø5?LÖ¶¿ƒoB ¿C¸óËC cA/ÕÎ@+o¾”&Y¾Hš¿‡U`¿–g̾nœN¿–Q¾q_¿~²=?M±î? x—¿C?H[ÿ¾Ž¶&¾ubؾ©£?BH?XX?dEH¿?TRƒ¾Œ–,¾…»Ð?-LD?EJ}?@¦/?å"é?G-?EÕÀ½Õú?€'±¾Œ-¾IQˆ¿”Ù5?)æx¼¤ྠW¾PJz¾3ˆa?îåÐ?]æ”?S?¿•6\?å2È¿–ôX¾Îv?SÄ?/Ùp¾7h?BIo?8N¢¾ƒ[ª¾r?8d>½Ï n?Ë4¾G ¿’ÖÞ¿¤ F¾H%(¾Ÿ¾‹YN½Îõˆ¾#™Â¿ˆb¼¿—DF¾o v?KÈÙ?H„?TP¼â ¸?A:?åam¾3+ͽâ ½ëQÄ>·rì?-ö:¾X#о”£4¿†,¾c¬ÅD¾6Å`?@~4¾“V?ù/??€\¾–¬0?I¡w¾&¾±¾(, ?;—?Tï¾`¯¬¾$\?L( ¿¤rZ¾M)š?Gi‘?FC™?^%ɽ®Gn?ë$ļºÛÈ¿•¾¿ÇZ¾qºÌ¾Wi€¾¦Rð?;oæ?BEø?S!Ó¾˜‚Ì?GFò¾uvº?7¥?GÝ(?ñŽM?7 r¾d¾?PkW¿›ƒ+?4°m¿Ïz?Ò„?Y¿£*#?â\M?0†Ô¿‹AA?¦ ¾#ìô¾Œ r¾oÍJ?D>”¿Žhx?è@(?F^?D 쿊*¾O%†¾ƒÆ¿˜J¾²ÅÒ?#q?8µ@» ¾ªöj¿™‰©¾²ƒŒ?8Ѿ‘д?âZv?]êð¿©Å@™?äcê¾\sú¾Ë æ?/Òë?doƾê:?ñP$¿ˆ¾’§ ¿…$š?]Éì¿tJ?@Üù¿}k ¿¶½ä½_TÈ¿“üF?âµQ¾‡Ö<ò“0¾#7Ö?X¢^¾ß“=§¿‘ØÜ¿ˆ¦™?(:Å?li½¶?\ÿ¾i_?úîy¾'zu¿•šH?Äú?z 5@ îa?Uô½øîö?õz¤¾‰«š¾€v™½óFü½ÈûÆ?`e7¿„.“?D'z¿’¹é¾ön¾'ï?4ˆ‚¾Fù€¾ßY¾»q]¾™TK¾*†Ÿ?œs&?Wk?@V?OØ¿™nA?v.ï¾à Õ¿•v¿œ¬Ï¿OÌ?LC¿>Ψ¾\]V¾˜%¾pÜX¾A N¾¥œ ¿‰F¬¾Y–@½‚Vž¾¢ZŒ¾riâ?+„¶¾’KB?d¤½éÂ?%RT¾´j?2”•¾XiJ¾¹\¾(¡9?D¢Z?%­¾¿­ ¾“p?Þ5Ö½éÔ¾œî¿‘ho?`ñª?±?DY,¾ˆ,±¾m\?>Jw¾y%ø¾‚¿”m=¾[Ž?> f>÷Î?4ØÊ?í™?K]š?éÕ?:(ξ‚r£¾”ÿø¾' ?Øõ¿ŠZ¾O€ï?P•п•.í?ùÖÖ?5 ²¾ET{?4Nh¾'£Å¿Œs¾­ïd¾fÚ?*¼ ¾——¬?N#ľyZ¾ ¾£Bž?I ?:Á¿jÞ?'ªœ?G°¾? ³¾›GŠ?Úg¾º›?+Œ…¾nÿz¿¦yö¾Aa¾ÃÆõ?Xc¾›Ùq?3ÞÇPf??3+?I/0?6À¿•Øì?[å¾±ÍØ¾PÕ¿˜*h?PU¾¥º¤¼üJ¾h±¾ôö¿¡ü›>X(j?"¸€?C±›?8J¿žÉ2?n?A¢?IV’?í—I¾OÔ>û‰¾XD?¾i뾕ð?-›ð¾‡§¿‹?0Êò¾¼±Ù¾r¾‰Öß>ï6¾m“,¾½`ܽ¼Dn?¤6?I÷Z?1_Š?Ä?Pë÷½Ì3˜¾'Ã'?Oº?zp?XÀä?fH§¿—=⾓h±¾¶O¿‹½Î?}#Œ?CäF½žFâ¿–7|¾O½¬¿—Þ¿‹£ ¾„]@¾J.‘¾,ð~?j/P?Y`3½ÚNâ¾t´&¾ßt?LSä?ègõ?Gf¾"VÖ?È„¾½Ï?k|y½›bz¾d+Ç¿‰|é?C+_¾ r @º2½ ¿ ¾kþ‰¿ŒÆýÀ¬s¼{Ú?1•ä¾RÐ?QG¿'›?.\ó?xTU¿Š É¾2!j?&9­? {?kÜc¿‰9?ñ}'?C¾œ R¿¥%W¼›˜¾J(à¾[ǽáûò¿—~8?€P4¿ŠQk¿GiU?.#ì½×€&¾“ç?4‰?¿ˆÇ~?.U ¿6‚œ?[ÿ`?DŽ2?-Å„¾ç™^?WÀ>¿’çžT¾r¾¶;¾Qü?Sí¾—Ôð¾5Ü•½˜é¾)Hg?Fd,?Þz ¾Å>ìh¬¾ =X?2Òç¾! w¾H??N<Ï?"å&?‚ ?!é¿?@ä¿ ´.>ïྐྵ¶ ¾ˆ¤ã?Û®ø?D?f¾@bK?Vñò¾„œ·?å[©¾¼ò"?@—?TÎs¿‹U¾¾ƒÿà?+å+¾ .žÛå ¿‡Ò»?Gzb¿€òõ¾Ïfƒ¾ˆG?ë­¾¾b,ƒ¾®´¤¾Gxþ¾¨Ú¬¿–9|?3¿ž-|¾~þ?_ø?E®ð¿­ûü?Þ8g?㫱??/¼¾ˆËM¾’X¹¾cf?; =¾qFô?-°y?>'<@0*Ä?ÝT̾¶F?ÒBÞ¾‰ªô¾KÎý?!¿üݨ¾·5`?ªL0?L¨¾/gD¾…ÏO¾óÅ˾¨±Ä¾ ª„¾íÃ?Zöì?$k"¾²6¨?A*Ò¿µ`§¾Ÿ¤ú?iH¾Û‚"¾VÿÛ>á‚G?;¬Ž¾*2 ¾‹;þ£Èt¾=²`?,¤Ò¾ß ¾_×Ò¾SšA?<7¾gb¾‚óL¾´â?ì[¾t(p¾X;?9±¼¾[!L?LâA¾h‚Ö¿’/Œ?*ü?Ùï%¾’¥‰?1›ä¾:KÈ¿|Û¿pNª½€l¾Ïtâ¾Õ^¾—äÏ?OM?VË+¾:Ä`¿Šsç¾rÙ¾Fû¥?^­®¿‡ŒŒ¿‹n¾!›6?€E½ëQŒ?®?Aø¾‚Æ ¾@Éð?g±à?NÜä½ÂôR?_’À¿ƒÉ?D½ˆ½î—4?c[?T‡¾#¸Ï¿•¾}Âá¿nl½´¨¿ŒI—¿’yÞ?]ÞY?^Æ^À¶R¾G3¾*^Q?öóƾ"¿ =±?]IR?ŒÐ¾…_,¿„U=*æè¿‰ö? )Ø?=$?Kd9?aÒÓ¾‡†??Ê?/ân?`‡½¹¦¿•Ôg¾\ׂ¿‘x2¾ €¾u?=iü?U\½‚Ëþ?W¤•¾Oßâ?;#“?C3‰¾#p>ðU£¾:þ¿Ÿ(í?N K¾Q³¾•‡ ?]¹D¾vþ¾×ô¾ ë×?iiq?&eÆ?D|6¿‰ì½×†>¾›P±¾êÓ¾}ް©Æ?Vô?Dß‚?甾­¾ÿæ”?q:@¾gæ¾×t>º ¿‰Âu?Fܱ?$ºN?U|¤¾u].?A$??œM¾‡¼¿™áM?7«? TP¾v I?;(í?=Ðâ½-ð€?D”ê>“©s?—¾&þ¤?N}?ÚÆ+?=Z;?P f?h4¿€]?.f¶¾«Æ?þ¿•–ò?5½¹?$ ¾:B?3‘@¿”ÚÞ¾‡ؽ•ë@¿±%‘?3°½ã¼d?;¾£Nm¾Ì:›¿†!ä?$ãLB” C‰…?@ÅVx¾s²ò?Yøó¾g!5¾":ÿ¾YÞø?ï €¾ yE½Ãôž?KB0¾mïÀ?Fs½Jgt¿’'ä?Råù¿e¿¿:í*¾v—†?<#‚>üC?<ô¿Œ\Ú¾)¬&?.~O?^ÚR¾‰Kf½±½Ä?Íí'¾lɾøj«¾£œ`¾§•=æ¸(?@œ¿‰ïô?'È?Hüø¾~Èâ¾yb?%¼a?AªP?@Î?†æ¾pÜ?æk ½])p?qµÂ?9w㾎eÒ¿ªmÀ¿õP¾O6©?O°¾«âؾI’ö¾Ç•?YP¼?\TÐ?ü¾õã￈Ît?XPV¾Gþ¾%B¿†/4¿žO“¾€”&¾¦ºv?-^Ì?8™À¾ZåR?#Z=>ÍŽ?pÒx?Uj¾C{N?vä¾}¡½©jÚ½]C´?>?ø`½wh?;ˆ?W³F½½âÒ?;˜°¾•’l¾8£Ê¾vL˜?C ¾_²;¿Œ‡6¾0pž¾ê;˾ƒ@õ¾‡ý:¼žl?Xí$?,ù°¿ ‰Š¾·Óv¿ƒ0¸¾á4¨¿-O¿§Ðÿ?Y[²¾t×¾‚v|¿—8Ç½ÄØ\ÀOZ¾CÚ¿œ2?L ?F ¾!Ë“?ñÐ?Q•‹?+'6¾¦ð&?:v,¾I±a¾—ö?7pš?/u(?f¿Õ¾Ü?BSǾÊ’¿ •?:Ýh½‚†Ú?3£5?Bô¾…%´¾FàÖ¾{ ~?N)ö¾@ñó?O.¾Êz¾px$¾®œh¿–_Z¾¦6п©j¾ø}?]µX¾`†:?Pöb?5`%¾cÔ?>O¸¾?`²j?;•L?KV;¾>±Ú?$WÔ?.ù?׆f¾Wîo¼,€ðANì>ïÁ!¾H@¾|b?C¨Ø½ã»â?[öb¾E³B?ÙX¾)½×ò,¾ÌH’¾Ž¦O½jPl?EZ ¿•;{¾f€ª?7Ë?GÇ>’ v¾\Úl?FÛš?6ù ?†ð?NT?Kw“?X*?[$q¾2dU¾Žß°?>0P¾7?>ù*¾'„šA^ŽB’€@<É¿‰‡?%긿¨ÑÉ?.4?E«¾„—?6H¾vª¾D©R?çâq¾“c¾‘yÖ?7‰B¾¾&ì½Ì ž¾ 3-?1`"?Ô”¿ðÀ¾gÕ¾?Iž[½½St¾,¼÷¾¦d@?àn&¾’ª¾}*"?4Öþ¾[àæ¾¨^f½±,¾l·†?;ƽÛo¾*(?ë¢×?áHå¾b6J?ãVN¿‘4˜?Šl¾£"¾¬\̽q® ¿¨®Š¾©ô¾˜N?]ü>Ýd?D±l¿ŠYð?[m¤¾''¸?DÑl?2^x¿ò?N¾A¯@½Xœd¿’+î?d£á?P@ú?L¦4¾ýÀ?>Mç¿–Ž:?B„h¾8¿“ø”¾£È¾½­ÿN?[u«½Þ¬ò¾qšÚ¾¡£?õwã?IZö¾³}ó?ïõb¾qœ¾h(¾£8ô?EÁ¾h ?ö\Æ¿’€ ?Pu›¾RKé?Sß§¿™¡¾Dg½ÉL¦¾á?bo]½ç‘ì?Jë¾8I^¾=¼ÓfP¾¾£?]˪?L×¾“³?6i¸¾Ll¾2È"¾s¿??Š/¿ˆ,H?&ðR¾ž{Ø?>;s‹¾I¢î?X˜¾s¸8?Ã}ê¾/«´¿„‰t¾O¥1¾0$µ¿…ÖC¾ÊK¾ø)w?a[†¾¿Ãx?xÊj?N~âÀªˆ¾•ÈÆ¿8(¾˜$Á?H?p¾Œоb'ô?,M?pÖ?!º2¾Pº4¿Ž¾Vp¾!ȾœÎƾ±/Àÿ>¾¤:â?¦ÿ?LÏ£=Œq¬¿¦S×½¸L|¾zØ¿‰•??5î?Z¿¾8[3¾H‹Ó¾q^ž¾³]D½ó¤?õÁ¿¡¸¿·x?ìq¿/B7¿•º‚?9L0? @=Z`¿ —¾½À8¾Å$¾2¿¸?,Å)¾z§¢¿šAù¾‚”’?!¾æD?Û-É?]È̾ô¾Š¬;?Af•?ß®?3}b½±j¾›nÓ?O”?'ŸÝ¾ÛG˜@8?W88?'ï|?84v¾¯2̽ãÿÜÀ`a?G£¾ŽÌV?B®?Y;>¾$…2?¤¾7ƒÎ?Ûÿ¶?1{¿4˜??ßÁ¾_&¸?M´Íæ@Sô¾#7J?Y(V?éȉ¾¾ qb?74 ¿’¬>?F¾UC}¿­íR¿œµê?4É›>Ò«Õ¿™-Á?Lø¿–C?4ç`½Ó¡.?,áö¿£Ån¿”u8¾%çÚ?<-ϾÄD)¾ Ð…¿Œ“7¾„½X/À¾®©”¾h²É¾’+ ¾Šç2¾X3?=æÖÀ½€?:ô¿šKq?5;f?èök¾u꾦î¼?NY¹¾ÙdÒ?7–h? ½Ñæ?6–ü¾•Ñò?T¿¾oñ?MNÕ¾wõʾR*º?]è¾dµ¿˜aV¿ Õ.¾kP¦¾ŽI¾9ï@?ÛÕý¿›ˆ™?ß+ ¾|˜¾N–9¾&I? ,?0ª¾?0õü?ðé¾mÎ?JâŒ?3á|?5ô¾†»y¿’=ž9ϳ?D&ú?)ûj?îÑ~¿“ûG?O ß?ë³0¾E¯?2£V?C[?,Å„?C[áÀ jC¾MÄØ¾(¾Þ¿uOm¾³QìA¡¨’C˜t‰@ÁÖ?î¾3ÿ¾¸B\¾Uk¾\‡g?3^¢¾iîʽ†Ö¾A‹L?Wª?勬¿òi†?8ž;üâÀ¿„~l¿€œÏ½¾"æ½YJ´¿d‡3¼åÛH?M‡Ë½-Q?? ¾S†¿˜{?I¡Y?é94¾V<æ½ñ3®?rH•¾:Æ¿“¡c¿œ-Æ¿|ô? ÷˜?1¶ª½ÁÔ¤?g5œ¿¥g‹?C¥?@?½¼¿^è½Ê‚ø?:A–¾Hš?.̾ñ£¾FI?H¤?(¹„¾O?˜Ä?éTY½ñ„¦¾4&¾Bë¿ €¾¦?Nƒö¿‹ŸŒ¾7ð?<R?>ªÀ?dhÂ?)þ ¿Ÿóƒ¾ƒ*u½¾¸D¿˜ÞÐ?=F?L{¾QSó¿ŠX?|?ã·ñ?6Óq?4Û„?1g'½Œ^l¾ÍÖ?ïÏ-¾T„ê?QÿC¿¢uѾ»ËÆ¿˜\»?=YD?à¼×wð?-e¾¡ø·¾¬dô?B§F?8 £¾“Ðʾœ¾;¾‘¾è…E¿˜\|?34ùÀ‘X?D®¾Í‹Ñ¾‰h¿„â/?뤞½ñeF?Ì俚 ¾…cy?^Ä`½èû2¿£Þh¿¡í ¾Û5]?Jì!¾<ýš?ÙÑå¾v¸ ?9錾ŠSÓ¾Ž Ê?'SÆ?TϾ"z ¾åg¾¾df?×R?W®œ¾_>!¾‚?×?L¤?Kßf?8¬¾Y0Œ?5Dä?K Ï?††¾T—Ö¾<ž?ùÞrÀé…¾VDAÀ ?sdi¾6^l? ›õ¾ˆè.¿˜~h¾Oe?X3ܾM@5¾ÎD? ¥ˆ¾‹¯Z¾Ÿ)?0ÿN¿’ ?=ü?1NÊ¿ªl$?`Ñ#¾¸¾¡Äè?:l`?#ì?-³«?ðÑ|¾lQƾD>3PØ?6I¾h^Ú¾(ÿ´?.˜Ï?àü뿟v˜¿ƒ D?Bñ¬¾%Ü@¿—+?|о>l?òŸS?>·7?<Ž¿”DÉ?Le?J‹@?L«#¾¬Wʽì¤?íìx¸?ÙDˆ?eº?K¼ó¾pI`?J?`vÄ?êåÖ¾K:À`4¾´=A¾ è>?8åž¾¢ô侕7Z¾×\r?X°Æ¾=Q¾&¸¿ŸÏP?GÄþ¾§Ÿ}¿œ ,¾À÷4?OåK¿‘‹"¾( ƒ?Gоá…Ä¿“¬Ð¾ppP?GOK¾Ck½-Çø¾<[9?:U×¾àµF?Hø ¿™è¾;8È?j,¾9?Û`£¾…q°¾j!d¿›ð ¿™É?I¿¾Œ??f.?ß´¾h€é?O5…¾"k;?>/³¾-·¾m@¾‡j¿šVk?î)¬?l㾤žì¾+¾Áž?—@¾"„?ÝL?äÅñ?:”¿‘R*¿ž£Ð?V²6?ñaL?2š|¾#b(?(6c¾®à¿šÑ-?óƒö?94ï¾'2Ò¾J¾>ƒ2¾‹½˜?90-¾¼y¾%‘¿–R7¾… 8½È4?8â.¾Küx¾ ýÿ¾SžEÒ?z§ª@WI¸?çžBÏý?ïŠ?KVÖ?U»?/&~?2¤Â¾¨ã´?gø¾¶  ?5Ù´? vô?)E0?A2„¿†N¾6…Ò¿ŠU¾?-Ø?rF?Gd¼Øy@?æo´½Õ£¨?IwоRQ¹¾Y•¿ŽÑÌ?^¹ ½<ÑȾ³¦ˆ¾/ðD¾'Ê ¼a`?<Ô8?L’º¿…ö½ç}r¾ƒ ½7êô?7ZÙ¿“¾ xÛ?¶â¬?^Œ?R×ÿ?G®‡¾•º?Kž ”ù?ÓBi?!`Þ?F„þG•¯¾cÎú¾xºF?6ݾb·Ö¾ð“½ÜÚz¾ˆÌ´¿‡C9¾?´«?\¾‘2&¾lê¾§ÿ;:­È¾†²¾Ÿ¦½õ'(¾,‰•¾¸+@¾öw?S^俚¿?;>!¾K¯Ô¾©Ã_?29Ö¾3K¾1Ô¿›«¾,T°¾‘ðW¾zn‘?;E?^T°?K6Y½ìºž¾V;Û¾l)±?E{ø¿‘“?K²@+޾§ Z?K˜¾›Ø`»Ë{à?j%¾@s?4}¾™"ô?=·1?y*´¿†Wõ?ð`>¿¡½‘½áܾ›b~¾m:â¿°$1¾$7Å?í8¾‡s½|w¤¾":æ¾€kU?ëÚb?9:á>ñÈb¿”ÜÒ?ôü¾Éú¿•㕾?äÊȾ;ø6¾®5“¾„–?Mœf?K“ì¾mwd¾º>?߬A¾±L½ã\(¾q}W?Hv¾—®@>HŸŠ?ãÈ8¾(+?™¾Îï,¿¥ßk¾K ľO.?A \>½G0¾„:¾·: ?n‰?8v?:Áƒ¾mó¾pÓU?Þ7î?LQ>?Ù×õ?D ?PÖ'¾Šýh¾Å_­?C¢1¾ ×?FÕ›?T£¨¿ž"y¾£8i?6\'¾~—È¿’?S¿€?F ®>‡m?CɾÁéû?DVT¾˜ÅÜ??ø‘¾–¿¨?6x¼¾ƒÚ±¾­‡G¿ÀÎ-¾[;¾®_ò?TàS¾@“ؾ‚û ¿†Œ?Xôm¾ºet?få꿉ÿtÀ?¿š?/³L?!ô½øAÞ?MIm¾Aà?÷.k¾P:§¾×ã?+ ¾¨“¤?ä^ÿ¾swr?/Ò¾Âu>?ë•?¿¡z.¾ ¿?=”οƒÌÇ?G?º¾ uZ?ãD2=CËоHUÓ?\](?ñÏd¾L|Œ½Éw ?=Ì3?FV‡¿—y¾H—¿…Bû>þ¾]b?nzɾÀ¼??ü¾–A°?f :?YŒ½ë²¾&||¾+íª?ŠêK¾aòº¾b?,ò¤¾IÍ?L俾/{¿›3?=‡=?ô"X?H„¤¾[(¿—›Û½î«˜¿‡Én¾²?”?Pð³¾Ïª?Sœ¾u§½ÛÙ¾‡™¢¿~m ¾M d¾K¾K„A?qµj?Pú?ÙÆí?4ãH>ßš|¾`›“¾,I³?5l¾xK?¿–4¿ 8Ú¾œÏѾ„ 8?6à½õäü??.ú?d8®¾©"?`=?ÜMü¾¬O?¢8€?A# ?&Ð?=|Ó?9ÝQ?_´+¾¥Ïz¾O0¸¾„Õ²¾‹‰h?P8è?7ÖH¾@[í¿šé?õœ½Ò`Ú¾K·O?Vî?ïký?'ÿ¾`„¾”Äœ¾|€J¿\r¾­õª¿’Ì?AÑ2¾”5§?2gο—ƒ_?v¶?@…¿?;'”?ØŒ¾®ìð?=/š?A‰ä¾Ÿñ¿ žO¾O‰ü¾[O?ëÀ ?#>˾i;?,˜²?=Pоé‡f?LÍ¿úf™ø¾"¿¹± ?4ᾉվ W?×?<[?IVÄ?T;ì?Ñ ®¾%(Å?75!¾œâ?8­®¾Ufù?A‰¾¾€D}>þˆ¿H¾i\¾:?F9Ü¿ ã*¾Ÿ@窿…5y¿v¬~¿¡c¿ƒ c½ãÒ?R¿¾¹½Ò‹T?Kçß½tqt?„„É?{ݤ½ÆÓ6?g]Î?Q~?E1à¾)°?G?ž¿Œ 3?‹wì¿• C½íýø¿›Kõ¾¾À?ýèɶ?þ™p¿ Ä?H#:¿|€Ž?Y‰n¾ Þ¸?Qš ¾ çí¿’¨u?U·9¾Â¿c¿L¿ ).¿yƒv?I¥Œ¿ƒjb¿’ãz½° Ô¾N ½ƒa˜?RP½õX&¾=ä??hó¿•øþ?ä“Ô?;u2¾† ¾Z«¾ošF?4Ñ6½Ÿm¾$úÀ?<·/?BBD¿ª(¾˜ù,¾1ýÀ?L›ì¿sÑ­¿•Òœ?´Rt?˜Þ-?AÖþ¿*?ž–½¹:X½Öi¬?+V¿–[2?&£?ZI<¾ ¼¬½÷v?Oy?BÁô¿•Cì?5¼¿ž×ÊÀ…?Hre¾/"Z?RMW¿€ºm¾|û½¯ ¾Àí”?&“¦?þ>Ñ`?Q2Ó?kX²¾Na/?9ƒ¾i–*¾ÙÉ?S'ʾ$ Ò¿”šï?B¾u?eÇ÷?EuC¾Ê‚@¾Ž‘¼¿ŒçG?*2“½‘ò¾¾?çr?áƒd½p]Ü?(%Z?=¹ú?ë¾×ˆF½â`,¾Sû–?H8è¿‘j™?2ïV?M@U?'ʽÄñr?)ûx¾!ª¿’¾JxM?BÇÝ?,†Þ¾C ¾EØ¿ÌU¾ÈÈ?\;¾;ª¾Z£:?_Tb?.ɾ¯H¿›su¿‰s¦¾r­ì¾e*о'ýR¿“û¬?Ô©§À˜l?3Î?åö?Ê¥?Rœ¿ ù„¾g*¾Pß࿚Ú?æxÉ?Xð8?AL¾+;¾•Ž?A¢¾}®¾ 6p¾`³"¾ƒ=3?š¾`Ðh¾¦B²?Q=2?Hr•?ð›D?+R¿¢:¾Qv¹?=Âr?K0™¾÷â¾15g¾aº†?5?é¬"?2×’¾ÿ¤?9à¾4„z¾‹Á=¾-[¾O™+?ã5À¾ Ì¿ƒ‹°¾MTõ½«N¿—3¤=d„=@B@Ì?u[ö¿}wݾ}6?[Õ€?ip²¾M)U½šØ?W&§½;´?nf?MÿJ;ßÖ`?YlM?Ú¥#¾2EÀú½bX€½É/N¾†E®<£ ð¾(¿‚Àê?XwÅ?Jº´¾1ë²?iï*¾E’B?N¦(¾Œ)v?}ô¾£×½×Û¾SB¾q߼߶?L¥Ñ¾•;OÝx¾”—#¿“«¾˜?S6 ?(µ½ò”öËý¿“™±¾g\"¿™à¿§{?O¶D¾ºÀ Ê?>Q@¾ðÖ?;“¸¾œOê½ú8¾e%|¿—{¶?&àÓ=½ ¾!<¾f˜«¿~\7¾\‚¿'Óº¾2þ¾žÉ̽í½‹8,½Ä]˜?2 t¿ùù9¾0[¿aŒ©À .¸¾Qœº?I!(?c(<¾Sd?FhY¾ 9L¿]ug<¥Mø?iiÄ?[ƒ"?…‰Ò?ì7¾AÎ?e_€¾?}$? ’Ó¾[¦Ý½þ¯P?m¿?<žD¾'yϾTÂ¥½Ðnš?_¾mü”¾±'â½€µ¸¾³™¨½%2˜?3¸r?I]W¿—¢?Jî¾òå¾Ò?*Ù"?¹'?P­¯¼M‹?å9@ãûþBçÍk?÷E¾³?òƒ?åãž¿„¾_Þ)½þ´¼?ô¨¼¹`p?T¾Œ„µ?*E¾I¸Ú=ª‹®?GÙW?k­`?;[Ò?<å`?D ´?\ñ¾?IþB?B5)¾Ü+h¿–¦¾¤Äè?Få ½£rž½ù¯ÐÀÝß½Ö6?-Ñš?RGXÀ§æ¾Z)9?EïĽ÷öä?^ªÄ¾rôí?P¨Ú¾-Vw¾bà,¾x(ø¾è6?ú>½Å–”¿¤#ɾaX¹?§¼?LBN¾;¢ ?_˜¾ç%ƒ>ø *¾7ÈV?/¤ž¿™ t½§ˆ?@° ½ÊŒ?HMj¿™0¾5?¿È²¾%´V¿Š®?K ʾk(E¾!Wæ¾ûæ?£ï?ܦ¾´ç/¾k £?> ׿ÿ¾i?ÇÐö¾½XǾ*ü=¾\­'¿‘”ü?E%ó?JŠ?^ÿÀ?80‹?R¯^?2íð?IG(?Dµ^@7Nš¾:ùN>¯˜?+)²¾nÔ¿’¡‘¾rûê?GÚ¾ Xï?gÕæ¾Û ¶¾Q?@íˆ?G4#½ù±Š?eíÿ?äc¾€@¾y¹k? @ο‘ýQ?éÒ‰¾s¹½’µD¿‡šB½ásn?2Ô,?W/оQù:?/²Ý¾sP`½J*ȾXäØ?`N·>áÕø¿ša ?@°??GÚ½¾‡Ú¿€W?5Ü¿–¨¾B¯ˆ?fJl¾äÓ½£¬T½Ê[Ö¿ŽO?2)ؾ91å¾òT¾­Å¾.(ê?AqM¾¯UÇ;'O€<º[P½¸k¸¿šGk?OÚà?"9Š?$¯ì¾\xǽà÷¼¿Ž-¿‰ÇA½¯ö(¿ŒÎÇ?š°¾`²Â¾Ž |>î$¾5 @¾RʾCA¾óE?F ¾SnؾAý?4O]?lî$¾­E¾£TǾ?ÙÁÚ½"L¾ZA+¾¢wf½"‰ôAþG$Bh6º?;Åt>ÜòN¾lÚè?Mâí¿Žv?¿¤ëù¾@nî?}ºü¿“'W?Ù?N¾á)¯?OƒÁ??(L?F>6?ðÂ?=||?C ¾ƒŸ`?à%ž¾b‰¾~½Æ¾‚俜º?X οŸ(¿Š‡N?C\`¾Ÿ ?BˆO¿‘äå¿‘Þ™?1æò¾U@?A]²¾ +?OŸ;¾Š—ʽ7ä?L¼?eÔɾ¬hè?Unоò*?=` ¾†ñU?S2|?9B´?=«7?A×Â?:€½È˜È?ðöò¾D™3¿†Å3?Rîã?Ñq:¾Ã`¦¾ƒ ?õ»¨?ûQ¶¾Oq²½9T쾚Aü¾‰™S¾Q¬·½ôáB¾•/¶?ÂL½Æ= ¾)O ¾¸É®?@C”¾]|³À¨l¿˜™¾*O¾?@Þå?æ~¾µÄ½ÆF¾4ù ?Gi´¾—i½¾•LоXŒ ?Iùn¾'Š?Dä>¾eŸˆ¿‰Ô¾D‘¾ê¯?¡ ?å'ò¾—¦?TÛ-?ZÏ]?O~¾­¾ˆ¬º¾†-?KD$?"¶5½¾;iš¿†ñ;JÊ?ì2«½©ól½ûCê?RRµ¾°æ?Qº¿Ín?eµì?\p?õ(¿‘–‚?6ˆ-¾z¤¤¾æ•¾K¾‡?Kë½¼ ¾< ?>©±?ídE?9%o¾6sv?dRξCo½òˆ’¿–áI¿¡û?hÌq¾€×¾œÜ¶¾>¦?bW¾%˜?VJF¿my¾xŠ@‰¾de½ÛK,¿™ ä½[Rl¿…W¸?X‡œ½™Xʾ J+?«V=¦1ä¿‚+Ø?KGY?D»¾QS ¾W{,¿…|뾌Õr½Ë22¿‹ÜÚ¾”Š¿¤*F?VöοŠDï½Sp¼¿Œ€|¾Xß=¿ˆbÚ?k}?:ˆä¾3 &½éö`½˜ãο§ ƒ¾& ¿ŒÝö?÷DO¾F‰ì?ëç̾½¿“?E??K¾Ð¾f×À?UVæ¾y˾<Ïɾ„ê?¼¢P´¿¦Eé?xÂH?ÜÓ¾·? w;?iÿ©¾pö¿ž?’?%«Q?÷D?Ç0¾·QÖ?8¶ ?LؾL2…¾ )¨¾…©’¾Z¾Â1’½Õ0˜¾†ô¾L·<¾3D"½„¨¾e¿?C(ѽž¸n¾@Í¿”å?Q ¿–ú ¾¨3Ü?0ò…¾hµú¾âpq¾J)þ¿šù ?RÛr?Q$^¾d‹Š?ëÎÙ¿Œ³?# h¾UÅ`?Ùxú?;H ¾ns'¿“rÏ?7š¾ÇZ'?=Gܾ™'|¾4?Oê??qåê¿õ¤¾Ê3=?#M>šÓn?+¯µ?BæZ¾^)S?(?^¾ov?5@¾Ä¶¾[E’¾…T¿?èk\?0®?b½G?vþL‘m?ÄÁ¾LT?:¸ëÀï¾3ü¾•—d¾fu’¿¶i®¿˜5r¾QæØ?6t/¾-0½?9ÛR¾ƒ*K¿™ïÞ½¸Í˜?p€­¾ŠÐ$?B&l¾ª%@¿—øõ¾,­¾êjã=cp½—÷˜¿‹¥ƒ??ôm½¥¾Qî#?íÞv¿•Ã6<‘S¿‘óC½üø?[{Ž?Tèd¾)øÿ?Y‚¿‰5?Hæ6¾¸Q`¾¯¾GLu¾L^½‘D†¿cãÇ?|ð?K< ½¤ü½îßb¾?¿¯J¾€Ý+?=µ?l÷ê?E‰ë?ß>?5ëž?TÄr¿ƒQ´¿•cK¾ƒ¬º?1w>&é½Ò^¿¥C?Xqß¿='¾ 3¾,L­?F¶$¾j¨²?ü»M½í,^¾¥Â澞‘½Þ‚8?E^Â?V†¿µ9ö¾TÀ2¾d/,¾ÆL¥¿¤ßP?Kèß½ÿ2b?6|B?2Ѿ¥Îó?ù€¤¾¹ô¼¿}„¶?6“b½ñ±F¿_ݾ[ŸN¾œ?QjG?;KÔ¾-ùÙ¾IÖí?`$@¾Æêp¾ Ör¿šBp?O×m?8B ¿lྠÒ?7Ó¾–È?b¾ò¾Mmn¾x&?\и¿Š;?,Vª¾¦$¿ûú>©g*¾7ÚO?2|R?+"?MŽ“¿¡qç¾²?FÞ¾–YØ? ‡l?:|?ðÖ?=²?(è?Qެ>íuè½ò7Ø?!¸%¿Ä%¿¡”7>ä‚¿?:¡?=U?ʆ¿—æ¾?'Ã?f½Ð?è¾Æw}?1¾g½ëž¾¤‰á¾¾Æ‡ô?G}?àâÒ¾g¸¾œ­¾ãm¾j™W?Y•Þ¾3ž¿¾‹Å¾Gà`?Tnᾆ²¾aU*¿á ?4­‚½]Ì?%6¾¸?Éü¿”¨&?G³?Í}U¾Uã"¾,—¥¾³¹?1:v?Ak¿k k?7ˆ¸?)hB¾MI=¾‹.B¾) ¾¤ ? 0?•¶?"¿‡g?>†¾Ø&°?Dl¿ RÔ¾Cìg?0™?,‹¾Ãö²¿›¡ã¿¡(¾ø¢?3.4?+ð?#2O?°¾¡¥ê¾ Þ?çjŒ?MeÄ?9M­¾‘Uæ¿›š{¿”²¾IH7?ZúŒ¾âz¾3ƒ¿žß£?7°@?5¸F?_³¤>žº¿ƒÒ¼?^ нð7F?dvâ?cÈé?~A"½nià¿“¨t¿k:¾KÈ?¦7C½í0´¾I@¿wÕ2½*·„½ÈˆP½Èê´¾/潘ê¾Wºž¾D«%?T¥o¾åFŒ¼³|ˆ¾uC?A¡,?v… ?Q@Q?T佤s@?n°s¿”ð½Ñ}j¿“•ñ?væ?\­-¾Gò±?b?Yxæ?:€§½wÀ(?ëà¶¾_í¨?J_ ?ûr‰½Ñþ„;$ùÀ?YKû?Xå÷?@uѾr?UÏØ¾8ü®¾®¾D8½À.ª=Úƒ?=ѽ"ÄX?)!ã½ÝÒ ¾‡ø?^ål?Aâè?q;?YžL-?çZ˜?]E\?A7‚½f¾OH¾ œ?c<Ô¾S8À?7«¦?=è¾Tf×½ë "?=ê"½ÛÀ?`㥾7-"?BÞ:¾F#¶¿“Ê’¾›B?1¿`¾yò‚?PàžœM­¿ˆÃ#½ ?U¯×½ùìL¾¨º¾|;?ñ’"¿¨ß‚¾¥/\? ¦Æ?@Íоšéà¿’{†¾Oši¾#?_¾GK²¾—›‘¿˜,¾ƒ.„?ýL¿¨Ãö?Uxl>–`t¿‘Ü‹¾¦ð‹?[剾ôÔ?DXy?ã??_ç‹?$Ђ?ëÇQ¾¬jæ? ‡?JF¾D%˜?)õw¾ 5?å5Ú¾%»é?ü™>¿˜âÈ?+Љ?1vè?\® ?Qœ¾ÊòC¿’+„¾P?/e_>¨ÏÒ¾L(Ö?,i1À ež¾ˆ—?N³¬¾jÑ?ñT¾£1?fœ¾õ[¢¾‘†?4âp¾‘Ø'¾™Ö¾/h½=l?O ¢¾£s/¿¤9?æ8Ø¿`?CQ†¾N¥^?0¹^¾™z?@Y=½r ¾Hã,¿‰–2¾M2?Wü¯¾†=l¿Œ€Í?$õ8?W9ë¾vgp¾€Z½ÉÛ¿ƒ ?O^3?=ã;?8ø?BÙ?>Ⱦ?à£ì?\?÷bp?C÷›?;}F?8õ–?h2œ?A¯?6#®¾¦Œ"?&q¶¾‰j½?S¹N?b³?“±l?g¿?f·d¿Fù=U œ¾±¾!*¾5W‚½™EÀ?ÝÚÿ¿f"õ½Áo¦½ƒê?å‘?¿‡êª½áæä¾òü?âƒÄ¿CCè?K „¾#¾·?è=(¾gC?a¦ö¿|„ ¾—ÖÃ?2/?9ŠW¿zk?5±¶½HõÄ@;‘ã½/Oؾ† *¿€/L?äS¬¾2º¾À7†¾.†Ð?Kß4¿‘Çø?Rî2½–1Ö¾†&á?&RP?Tñä¾H.Ú?W}?e’¼?/ú¥½’”¾8ꃾb?R³?Aµ¢?(ï`¿û;¼ÒåØ?Qz—??І?ýŽÔ¾™ÞF?ë 2½âÐ\½´ï迎Ð#¾6yj¾DjÀ?y»’¢ ¿žˆš?U à@EÌ?C¬"¾7麾œ®¿’Ç>?0#ä?Ú£ª½èÚ?^ ?^7L½˜³@?Bο‰Cr¾Ÿ²&?P—ñ¾§Þ¾¾q&Â?=Ôv> S¾&O?Uœ„?A¢t?ëp¿õW¾oß;?1¿¿„_¾GŒt¾£‚(¼ßäp¾;Sa¾œ»¾nŠ„?b ¿ÒÞ¿¯Uš¾ ´Ô?KÖà¿z¬™½vÎ(¾S&}¾ƒ¤N¾„»½ÁÅ:¿‘±¯¾wÔ?J½ùUR¾Èx¾×K¥¿’r?EŸ¾;î?1ƒš?<Œ“¾çžDl?9©?K—r9hؾG3T?U—¸¾Ì0?R2²?ç²—?`¨>¿‹Ïq¾e“Q¾f?_{²¾by¿…š¾ŸŸI½‘n?0]–?F ¤?2ÚV¾-ÇѾMº{½¿ˆú?ܦ?Yü8?8ƒ>¾¸´ô¿¥ë;Lö,¾a.0¾&L?%®+>Y ?9+‚¾㕾R×¾L£“¿Ÿ²½ ž½Ë|4?99p¿ŠåÔ?XXQ¾=[¿„@î¾*®1?[ß¾¯–'¿•βÀg8¾T°?'£»?Em¿…{¨½ßWô?]TÔ¾"Ñ?YÝ ?Vì8?VŸç?[ž‘¾[Sk?1,¾‡é½Ö2\?AŸ?…1Œ¾cËh¾I&¾Èšˆ?pb#?TvH?lGϽƒ»ü?^¹r?D‰"?W¸€¾‡Ø.¾©(Ù¿†_š?…’¾šúì¾c ¾ŠÑð?Ezï?P?N”¿{s<üœ½Elø?fã¿—Á¾WNê¾Aô¾ &§?Qþï¾>owA…5Ò¾æ˜û?áWH?Z2¤¾µf¾|ã&?H‹o?LÆ?rÂÎ?â¿™­»¾–¹f¾›²¿‚OݾP꨽Z@œ¾??Nò|¿¸e¾ÄŸ?FŒŠ?Lc¯?1áý¾ë.¿«*®¾N¿”sô¾\1?6ö—¿¥?B¾]?ì²v½÷Ž~¾ KÜ?!оÿ‡¿¦aØ?>“æ?=¥®?J:»¾B㾇¾‘ñ?¼À½Ý”?BAb?;ón¾ƒ¨‡¿œ”M?4¨¾ùù¾t»¿™Ê¿”a;?@ù¿½•Xæ?Þ}¶½;ˆ¿ší–¿—¨Û¿‹þv¾~¼B¾»;ò?RèY¿Õ?IÛß¾’gÆ¿}›¯?WÞe¿¡õ*ÀÁ¹¾N®`¾j’?֟⾑¯Ð?Ö…”¿  ?G`ø¾‰q¼¿’’á¿ ¶b„?N¬¾“çy?çÕi¾ˆzx>øÿ¿€8¾_œ¾mjÕ¾Z¦Ú?A–Ò?C3¾(@Ø?JÃL?ƒT?KÈA¾C¹´?4¤¾›¾‡?†×–¾ß?IŸ?KÀÀ?lä–?ãL¬¾„ï½»„ý½á™ž?òþؽ˜?¾œÈÅ;éÎð¾u—a½ÌÎ4?CA!¾Iß‹¾‰?m:Æ¿Œˆ~¾‚ßG¾&b\¾)×?k°F½ãÚÔ?9ýÛ¾!ÿ¿•GÒ¾NÄÚ¿‘Ú?U¾í¾2*a?"Žû¾„¡n¿—ù®¾£¾i›§? 8=?K/u?{É5¿ì€À¦Þ¾Pr¾%›ð?d‹¿Œ¨h?@I<¿©y;¾—ÎÒ¾E]‚¾“|*¿Žˆ¥¿‹€¼?Se4¾QO_?;P¾@¢ ¿˜‹¿ŸmÍ¿5£?6õÀ¾€G¾§º½¨?4{6¾“U?M=¿€èO¾'k9¾k7¿„ºZ¾?'Ó?6Û¾HD ¿ –ñ¾€ê¾`±¦¿™ùw¾ÜÝf¾th ½é´?:·å?7ñÚ?G——¾2¾±E¥¿¡ð0¿š.¾S¸I¿óú¿•e3=5Ô?\¾PÖʾW9Ž?_Ὴá.?HÞs¿Še†¾>ÉI¾j–È?3AE??†ó?9+¾!JóÀðÅ?3ù„?O+3?"ëò¾ç?!Fˆ?ZŒN?C%Ó? ¿7Þ㾑U¢¾dæ?[ðü?2(T¾¹Èf?)0®¾C¶Ä?,ð ¾;x+¾†24¾K¾“¾  V¾8z½?*ý?OܾŠÄ?_5e?5˾§B·¾Ÿó°?ï ¾ƒE©¾Že¾p?–?Eð@?85Ê?íþ¾ÀŠÆ¿ ¬a¾V>¾XØH¾Øóa?SúÔ¾£M,?C°¦¾ss_¾yO?÷r«¾+e?/`?OŽF?S4¾¸1?C%Ô½ô¿T>Àÿ?ÙqÒ¾¦?û¾t­â¾4ž¾‰lÀ¾‘ÈÅ¿ª4¿•M?3x?E‹¾ˆj³¿¡ê¿ëc¾%®¾*Î ?úu¬¾óË?>ÉÖ?<†&¾1[ü?AS1¾Èn ¾XŽC@‡œ¿—W»?9P(¾Á¢C?Oˆã¾a6Õ>¾­Š?üô¾,Sݾ‰«½¦Ô?6aL¿£¾~>â´;¿1å?b>Ä¿ˆ›“?P@í?dW½0ØP?u´³?FEž?G¯`¾-‰¾4A?çeB¾ ?ob?½Ð~ ¾•B%?êÿݾÂ.?€cʾû[}¿w¾Wp?[# ?Wâľ$_ ¿”?# ½¢‡p¾És?а?<6¾l!¾A5h¾NÙp¾¹Í¯¾U¹¾T˜Š?^K޾âÕÞ?V[—?ö“?,Ëj¾"¡½:1Ø?ñ&ñ?M1š?O¬¾m4¾€È˽QZH¾B}€¾[²¸¾–Š¢?Mf ¾WP?8-{¾­Ù ¿=ξá›ÕÀùà¿’u¿‡ÇC?<£á½Î1ʾ‹}y½Çßœ¿‘²ˆ?E@×¾•|„½ºK,¾z>å¾¢(²¾ äË?QlT?áÈ4¾‹>h0 ¾€×&¾^2!¾F'¾l ¿œǾJ‹2?0ó`¾3 ?àƒç¾Ÿ´?\a¿¾ì3½üqü?Xt¿‘cà>Èાz­Õ¿‹*–¾²ës¿¢T¾JŠQ?\Ц¾–O?8˜¿–­(¾l»#<îP¾š(L¾‡á(¾&ö½Ù¿F¾•*u?ÑP>¾ñ:î¾ÓÒ?7Øà½©†N¾ ©?E3Ú¿—h?:Çü¾¢ü›¿—Ý™¾\Ô­?,Þ¿§Š*?7ôƾ_¿Œ¿˜å‚?9Ð?I[›¾@Ç?ð7†¾%ܾ“)”½ëîV?Ù}¾«©è¾¿8?h¦ô¾‚‚°¾í¾!-z¾uò5¾vs?"?Úí°¾‡§‚¾=0&¾ÑY¾Û31?MV\?Þo¾HB¯?Y‚½ò¿ÁÙH½·_@¿”ÞÛ?6¾Šwܾ¹n´¿¡ol?D¬“¿˜<@ƒ¾i@B΀?+ÃO?Tìâ¿•Ô?aúŸ½øéZ?J'È¿üF?I!Ľå‡ð?h8?b,¿¡¾EA¾IÑ…?j´_?Fý*¾jäœ?A¾ª?C=˾¡4h?(Ú(¾¡Ò¼¾mV~?"áí¾ªW¾‘]ÀªC¿—¿ÿ?E×?Ó¨ô?OqÏ?$Ú ¾xÁ­¾,ÑW¿dz¿„ˆv?+šf½‰Ú¾)ª½ÖIx¼Óõø½‡Ð¾.‡÷?Z“Ë?ê4ð¾o'q?D¢D?^U^?R5<¾ †½½¡Œ?]Ó&¿‹XŠ¿Žû›½ÉrT½ßcþ?Q2?ASI?EÌl¾-"š¿“óC?6é2¾Þ}¾–œÖ¾D²Ð¿ŠªŽ¾›!Ö¾¨ð¿’¶¿Š¾¾/­[¿‘»ª?PÐb¾jO‰¾“@ê¾q?b¾"!¾¿…¦î¾¢—Œ¿­÷¾Æâ4¾AGS¾l¨u?êî†?à ?<«(?àkL¾0¹]?77¿˜ó_¾—È?hÛ’?;Ú¾phƾ:ê©¿Ú£?KÛ*?IU=¾o¾eCk½ÞÅľ 6?2ä}¾lþ2¾e_á?)QD?쾈–ã¾éBl?önÄ¿•ŠÀ?Ô@¾ƒè¾D9º¾„z?u5¾Û¿¦ ì?$Œ¶¾¥Ë4?*AÕ?%.¾3DŒ¾_bB¿— Œ?'G?,¾!à?UA”¾€X³½ÁÅÜ¿›,o¿—6M¾¡Ûò¿—Ë྄Së¿’zÀ¾<à¾Ým¹?Oè*¾Ôq6¿–Þ̽Ôwh>†!T¾¡À6¾“£¼¾‹¾Š"¾‡›J¾jш¼÷‹¿®¼‡¾d\F?+ój½ý±D¾6Ï¿šx•¾ª ¾š9>×'ŠBªUAµŠö?ICZ¾É¾5¿›uÎ?"*ý½žéˆ¿–<|?æŸ4¾p #¾ z¾ ¼î?&v”?å|1?<«?á’J¾E®¿Ÿ$`¾~ô ?:a¶¾1옾ÕðÅ¿Ž—¾V1½.-(?Gúò¼ŽŠP¾‰Ñí?áµ ¾‹µ#¾•O®?黾 @¾±Q&?,qd¾^UÑ¿yw¾˜W.½B T¿|@¦¼J¾§Nž?E0ˆ?j]«¾.­¹?柲<àE ?Rçê?|½/?j€ã¾:Ú¾¬Wð¾ aÌ?s‰.:ŽO?l+j½{À>Vˆ?@j|¿Œc€¾S±ˆ¿zñ9¿’çä?`lg?De»?j-?è•Ò?uÌF¾9ʾWì¾,Ϻ¿¨dâ?fI*?8jŠ¿°G®?F€½ûR ¿“Š”?UBÇ?[4¾DÒ¾>ú¾ €2¾]fj?S9Œ?FÂO¾2£9?4¾?S6?åFp¾Iþê¾T¡È¾°?9ÇV½Ñb2?ãIº¾ º—¿™á?,Yß?.`j¿…·¾€­Š¾´£º¾‹$?H>?;w%?r1|?Gˆ€?JÀ.?DI^?BІ?ÕÒ¾3 ®¾^²b¾hv𾂂ò?T´t¿ŽÞ¿‰tŠ?F\*?;‰ì?NS轿? ø½‰àh¾–¾lŽÏ?AcO?~Hü?íêê½Ó Ø¿ƒ^ľw/:½µž¾‰ J?P ?Zß?MåÒ¿ö@¾4½ÚGn¿¤íç¾ì¾ó.¾z?Y?½ã料?fÀÝ·??u?B£¿©½Ï¤î¾®µ`?P=ƒ?Gôˆ?B¬(?I[ ?cüؾXÇ ?P®N?\¾?eíß?$’×?<_Ø¿•2Ò¾4a¿–è?>ȶ¾Ÿ–¾ŠÒ~¾Wâ½àw?IR{¾tJ侫™þ?a0?/š¾ù ¿¤ƒà?6|¦¾:ö¾d™~?☊¾>ÏÓ?=µ¥¾!Œ—¾ˆ´]¿¿6è?ãcá¾FS ?ß{?7~`½±Å?úég¿ÿÆ¿î?ƒô?PÌ?>EAˆ@Ù7©?Üw¨¾7aÂ?àνÍLL¾\ªg¿‡ï6¾cžî¾"¾ýê>¡•Š?ãÈ?7Z¾`¬?J§Ä?óf¶¾+­?,(¾ÄùϾ¦Ø´?Q-¾~!t?Õª”? {®¾ È¾±>¾.¹>¿“ß©¾…d©?H]x¾ ¯#¾QÅÅ¿’量³“Ç>Þ†¸?"ö¿‚- ?ö('@¼è?T·?:_¾*v?_q¾m5^½‘{b?Mö?¾O쓾¶õ•»žÀ¾ŽÝv¾Ý Ù¿œ­±½(Úø¾>ô'½€Aο”Kg½Q—°½È‹´½ÑR ¼ŽË@¿™*/½Á+(?[ ?8ék¾: .?BЪ?O¬`?4ÎC?+,?>í½áŒÜ?eD’¾6šB¾Ÿç?= Ï?Ý#´½ßZv¾Y&Ë?8gI?Tñ??ZO?Ý<—¿Œý?ô™ª¿u¯½’Ö¬¿‰Hô½ÙA¬?FWO¾Ê?o\?JC>¿œnô?7n"Àº_?IvÆ?:Â1?Y·¿›½€?#Ò¿•?A"ó¾|]¾§l9¾‡iÊ?hï´?Fº¾ÔA$@>›n¾˜.?_*?F쓽öm”¾o듾5vH¾²ù¿Ÿ}O?æ~#?8•"?H¾bQˆÀNÌ?VL”¿“˜\?Mc„¾¶N‰¾–hX¾‰–Ž¿‘ ò¾aŒ!¾JV¾%Û.?c—!¾Étw?Së¸?<:²?^f½¾‰EÖ¾Mõ`?ér¾ˆõ ¾C½–—¾4v̾‹Bx½˜Ðü?L(M?-Hä¿¥BB?c§¦¿:[¾2%¿Š&·?AР¾‡çI?zq/?FË¿ªÞ¾cUó?+°8¿ˆ(?,©¶¾)G¿£–¿›X€?J í?‡Á?èAÔ¾¦Ø®½Ñ½ì¾wÈœ¾gæ ¾Cº¾Yó¾+4H?6…ÿ?=êt?NC ¾,ò¾ƒ$¾Ž‘5?Pf2>ä$?R2¼?sM®½ô>8½‘Ú¸¿úEý?`qJ?Y‘T¼ŠœH¾7 ¿¥™¾G½f](¾v¿‘§Ö?B$ˆ¿‡µ¾Asu?>í>¿"…Z?hp?ym@?o˜ÿÀ÷Ú? p¾gö ?p8ê¾Pt?D\b¾qt9?Eò×?óY?Oºã¾Ôß¿šbõ?PÚ9?X%‡?=`¾)ܾœh¶¾F!×¾W^¾`ˆž¾•9¿nݾ‹Ô|¿”´?9M4¾÷w?@%Š?E ¿–£ê¾;¾¯¶ô?<®†¾Ê48¾žôZ?[®:¾AŒ†?;‚ô@Cë?Hw¿©9V¾³¢ã?X£Î?N¨ð½ÿn¾‰‚?Ë;ß¾Eìd¾zìF??XÒ?>h¾?ËÌ¿›¡?òJ,¾‡Jä¾û%?Q—<¾ ¾•ð¿¦Tñ¿ t?QSï?M†?EE½—BÈ¿Œ&È?A;Š?8½´`½òz½›?[>a¾[•ª?(¿ ¾|(ä¾6$Ú?4{í¾ž¾n ?O±ì?"Û™?Y;—¿ˆ‘&¾iò}?!W¾¶\¿°°È?æZ„?I"¿†š ?%é*½Àwö¾3EѽÞ;\½µþz¾œ!¿ƒsþ¾s].¾Õù¾Cý¾³¾E¡`¿—½ß„ ¿ï€¾8jø?4¿Z¾t¶¡½¸ã˜¾)Q?Dª[?X*„¾1ʶ¼‰+H?[މ½è®¾Œ5¾P¾¨ÇR¿ƒ³œ?*+˜¾"¸Þ¾m3r½‚V?*~h¿Švk¾d–¾1X_¿™Pl½Ééª?Xm¾:ñ¿•áy>7y¨?Q«ˆ¾D·|¾V«Ä¾–^¾:B?[ÀO¿žH½š¤Ô¾‹ˆ?][Ø?òýé¾sêî¾thm¾Sü¾}Y¿‹–¾‚®¾Yß;6Ög¾7\¾¸]¾0õ’¿”ØŠ¾<‹/¿§rC¿‘< ½)­»DG@¾Û¾ ¿ç\¾™1 ?WJÓ¾‡q½´¢,¾¢j ¾f‚"¾:.¹?)ª¿&¾x´ä¿«êË?UÎr¿ƒ8Ѿ{æf?Rh¾Î?]7p¾A²`?SåK¾D`¾JL ¾@dÅ?"?E¡¢¿¡—À?ëŒI¿Ÿ’¾L—¾_¤Ñ??Ô*?:Ò:¿—á†?GœÅ¾U[ľ‚Ï?ïà?>ó˜>ÿJ?g K?ZÒº?QŸ8?IOö¿–²¾+ñ»?ééѾ/ ¾¬×€?.lF¾|ßH½Ç¼x¿Ÿþ?^³¾^‘¾qt¿)´Ö?:Óô¾°dç¾þs¿<$`¿«Žl¾­¬>¾a¾¾°äL?7{Q¾¬Ì˜?4“¾?ZN?Kšê¿œŽ‰¿þL¾v¹¾5¸Æ?AÆ3¿Œy·¾ßÄJ¾aóò?Y¶_¿ðf?[.S¾Azツ›ÍÀ Á¿?Fþ?U}Ô?I?w?5b꾯_‰¾hø†¾`Ÿ1¾sòå?Bâµ?,(?ÒÔ?×ý?&~0?(X™?'V˾›Š ?+@M¾†p¸¾]€ˆ¾¹?Gˆ2?^?k¿Œà¿£Ð ¾¬¾i¾D?…¾±£Ç¾‹6ð?J”ç?0Þ?9Ð]¾‰—¾N½1?’ð¾Á¾Šr÷¾Ìÿ{¾¤ëz¾aNR½ôÎð¿Ÿ2¨¿Mœ¾‰%¿w[Á?«Ž*>¿îó?Dán?ex·¾)m;Ëìw¾ Ý ¾`o¾š÷½ñÚ\?Hލ?Uï¾\¹v¿æà¿Ž“ ½,†ð¾›c¾oÿ¿ŠœO¾”Èð?n?p©¨¿—"½Ëz?=÷?T• ?Tºš½“#´¾5/½Ð²Þ¾.ô½)G`½:H?Luí¾¡/^?q(…¾¿R?\R?Ân?I_Œ¾¥¾?N‹¼åB`?@:è½ý­Ž?a½àÀ?Y¶¾e Ô?‘;°—µ?/OX½'G¾ÿ?<4¾¦?OIL¾ºY{?K‹æ?Il¾d:ñ¾Åëà?Iæñ¾A‰?Q[$?K-¾l·?×|C?ÛÖ5¾æiú¿Ž¸Ö¿£K‚½Û®b¾“–½ìÏ?Òd–¾®½øJx¾Œ@Ê¿~F?*(¾i}?0t3¾ŠI¹¿©V?=M{¼ºÆà¿¹Ë¾5³ý¿žCí¾—È¿?@êX¿ž ?:I¾¤¤w¾gÆÙ½…¿‘xþ¿Œ‹Ó?OÃ?ñ»à¾sö“?S©¨?<Ú½Ãñ¢¿¥úf??7à??Ñ?FX?V]?òty?6§§¾a‚¾µñ&¿‚óξnò9¾0Ø ¾"¾ŽùɾNC·¾ZâN?'s̾Tn¾ÂK­?êŠæ¾ª¯"?XÒ¾ÏÄ6?º¦¾9ƾ˜‹7?Ÿ¾SåÆ¿ À;i<Ç?·&¾"O?Jž„¾¡ê²?1?Q–?³€¾N¬¾tF?.a𾈹ï¾s¤ô?Ù.!½ÿz”¾Pôä¾QY$?ãð?;ªç?"d¾F‚"¾†z?;Ÿò?Eî•¿˜*ÿ¿i¢??wð?8>À‹¾Ç§¿Ÿo?RŠJ?î<¾žÑì?((?Yˆ?:‡¾°?3;?DÍô¾ V¥¾qa4?Q÷œ¾“V¾‹°‡?Iο¡¨\?'_}?J°“?~Â?-Ðø¿˜yÄ?>ŽÖ¾¢w†À Í|?6g•¾3¤? vµ?•ö¾ kÅ?CCâ¿Ç3R?Mœœ?3¿l¸Ì¿äD?B¿‰¸½~d¸¾ânÞ¿O¾.lh½²Ñ"¿“Ê›½€öô?Vž¼¢Œø?P¦­>¬f¼¯„¾BK&½!,¾7,ÿ?BMz½«:ò?aW?8Û=¾Y:Ž=(ð¾T ‚¿ƒÏ¾"Â¥¿ž§“¾VŒ¦¾/íc¾¨ÃØ?\1‚¾ãj¡¾²¾Wî‡?@…¾öéù¿˜x0?Û¹?-Ö²?7ÌR¾&7°¿–ྪ¾Â?FV7¿‘€v¾{Ê5À,¾4ò†?Q6´?E¯õ¾"9\?XE?5Ÿé¿˜EÃ??+z>æ^s?ä+?e)ª¾µŸ¾iè¾a9>¾ ¾C´.?º½G?à„¾bF¿—^¢¾U™H¾’të¾*ý¸¿“ÿ½Ó½ø?GU.¾.þF?iÙ½¯1,¾~?/*¿˜Ú£?A¹R¿Ž ¡?y4ª?:]3?Až?Qyþ?^ %¾Æí?b-ø¾Û‰¿’\b¾Š–ú¾l3p¾Š1¿’àá?Yi‚¿o(u?Nò¼¾?É¿—tL?a&ÀT¦?AqŒ?ö±?CØv?6¬`?IØð?,Zž½¹È|¿š0ù?'B¾ƒÏ¼½Ýæ?õˆ­?6!@O?àøT¾nåÒ? û?: È¿œ~œ¾¨ T¾¬;ø?:Y¼?,Yh¾YÝ¡?+Q‚¾"M¨¾üÊ?Hù|¾˜¨ª?HF8?¸¾nµJ¾•^8?¶Ä?H~K?H­Œ¿™Œ~?,a!?`¡6?û7?OyB¾ ôr¾9Á½Øen?9³Þ¾”"$¾9ÄÖ?î–¿›è’¿>ø¾Š=?S¡˜¾Ž´¿ñ-¼¾kå?Y…(Aá B§@:ÓѽƚؿŒëý½íFÒ?Hæ°¾…’¾cȯ?]ä¿Sž¿€­´¿”`7?9R¾B0ª½T­Œ¾yw¾™)E½#˜à?í—?E¼ˆ¿‹x~?@¨?Ⱦ¸×Ô½Cϸ¼í€Ð?-š?Dãé?Q“&?8Y\¿“K¾¨FÂ?+§ ?ÞÙ<½»u:?4ž¿‹š¾fZP@@×C Ë×B ÕU½ì‰¾U,¾Vrõ?çÿ‹?êV[?/ä?1=¬¾M±²¾º÷x¿œQ¾£+Z¿ö^¾2 ÛÀ ‹è?Df°?O]ò?,î¿•´¼¿šþ†¿”ª¾‘¦?a¶V¿˜n§¾ò%†¾¤ØN?Üb5?I ”¾oŠ4¾dÒ¾¦&„½Ûyľ—¾¡¦2?“Ö>±'d¾Ròw¾zæY½ëjÜ¿¢,w½ö÷’¾À¿XX¿ŽÕμI࿚÷v¾ÖCY¾Òݼ?a“™¿ˆôÐ?;A¾›Ùo¾œQ(?7‰â½Êº?<–|?deܾ¢2Ò¾­Ùˆ?/øD?9@ù?O–‡?6åµ?¨¾Dâ¿–…Á½ç'@?GúV¾•8?CÓu¾œ’Ø?%ÕŒ?Eðr¾žˆð??™à¾~¿4Âà?]"ƾéÒ¾I = Ü?>Žr?kIóBcåÇD§v€AmgR?® æ?Ad¢?R³„?:n:¾ÉÏ?Uéâ?ÀT3¿œLq¿ˆE|¿„s¨¾)xÃ?UR`>øÊ?1^?ùƒh¾Sòs¿¡¾?;…¾€9<¾€K\¿zn¾¤(£?,~¥ ¾ïœ?GVÊ?I!Š?7…Á¾Ä;•=6ÁP?+.оVmf?ôŸÑ¿‡×z½üÈÊ@A'ˆ?Ibô½Â¼?Uô¿›«ÎÞ'¿æ?6Iº¾ m¥?\n¡>è“f?Tø²?ãýýæŒL¾®ÿ^?Õ£PA¿Ô‡A!½â/à?//¤?]Yž@BH‹?:Ô?Ÿ¨?e袾o?Ž¿—+˜½ÓRö¾sF¤¾…ÔG¾m‰U?<4!¾UÅñ¾v±w½Ì)ä¾q1k¾ã¾ 4?6‹¬¾bnr½Ì™Æ?\â©?8âW?\vü¾†¢¾€ ?0…¾Ps?':ü¾*¥Ê¾$¥ý?4Ä,?NÑD?[Z¼¿’¸½Æ6¾€óJ?`‡Ã¾#¡g?0D?WÚl?mÛ?(£ë?iÂ?Y«¾­ þ®`²¾ÚO?=9b?&èT¾›¤„½ŸS$??ª.¿—¶Þ?H®?-4½þ´n?ÕÕì¾acœ?LŸ|?)È?Rõ¾ T£?Úq?9x¾D¶G¾€®„¾œm¹½ØV?OO?%š„¾|Ð?Lá´¿pL8¾kÞ ¿ƒ¦R¾ECø?„!нûç¾?J¼Ä@þþdA¸¨›@>Q?4œÂ?!“C½ÑšŒ¾øÛ½5fd?*tu½ÊÅÂ@KŸû?OQø?B®;?NVݾb¬ ?Y½i?@ªÖ½ûò¾k¨û¾¶ØÕ¾9¨?4w.¾J¬¾¨@ç?Bç;¾o$쿘gù??:?[Å¿m§P¾Œgî?:¢?GðϾ¢`å½á^¿‘¦È¿—#ä?: æ¾- H¾…v¾ÈƒÆ¾-h¶¾ž¥–?Gá?G"ʾA u¿Ôu¾wÌ¥¾0¾&˜Ü¿½Ž¿ƒÚš? q?Sïü?Hß‚?Bʼn¿žïä½ÌV¾X»â¾j5é¾cé6?Lľ-˜¨¾ž– ¾sž%½¾(Ù¡?#ê¾t½?€5Ì?9Sâ¾Þ¬?÷‘??ðˆ¾–Ô}¾„`v¾)2n?dr!¾8ƾ&b?Kˆ¾@ò>Ó2ï?6t(¾°~U?eê«?58h¾žÝŒ?4B¾*J¾³¼×¾Œ¦Œ¿gÀ¾˜ú°¾=D‘¾ÊÐä?!AJ¾yü0¿Žˆx¾f©½¾{†”¾‹†‘¾ È›¾•!=?Ü#ž¾•¯³?Þím¾w±?16¾¬?j?;–Œ¾Œ‚^?^ v?Úÿ?Ø~?.¬Ê/?2tž¾–jA?04Ž¿/r¾g6¾ÑÞm¾™Š¶?%↽Ÿd¾XzÓ?Jƒ1¿“‹Á¿AIÖ¾ôü¿ŒÛ‹¾o,¾"2Ž?We\¿nùR¿yŒ†½íü½°œ¶½§W÷±à?U޾'6?@-Z¿”R ½¢ ¾:ª%¿…³Î¾.#"?ü¾Ê­?*&8¿Œã?O?Kr”½ÀúV>ÅX´¾„:¾K>’½ø¥Ä¾F>¾pd¹¾z‹2¾†¯ì¾/i‚¾|j¾®×v¾mV"?GkL>ú€??O¾.áƒ?0e?Kv=¾_$Ñ?Nü§?=$&?0<¾ŠF¾°‹¾ -š¾§P>ÓB?L4¿‡õ ¿™Þ¶¾¹{¾ºí\¾fËf¾BDÕ?[®[?IÅÎ?Ò`¾2•¾Ÿ@4¾¨ÔX¾Uqw?Ôw2¾PyP?3Hœ¾Š@оŒ¹&?æ™?W’?Ffɿֶ?A$”?0<º?üé:?À蘾MK.¾T>š¿åŠ?6ÊP¼=4@ó?ϾÓê?H$?SÈ?,ãA¾}6D?%1D?5/Õ?b‘J¿÷ä?Ñî¾ÖÖܾ{9Ú¿¹]>B@?|þľɷϿ™H¾a¢…?à•ì¾íF¾˜äоĆ+¾Ã'¾\V4¾œ&³¿‘'о¯›¿ŽÀ¸½ö_¾/=?,:¾†È¿‡bë¾A¾R¾…ðæ?;~?-¾Ÿ§ü¾¯•?1º ½ºƒ¿]¡¾…·P?$y–B¹z2Bdé?ã”Ü?÷å7?8ñí¾z‡ì¾W¸é¾_ï¾ÞýQ?Rì>?(Ѽ¾"°¯?D¦…?ƒ@¼?ÎrÀ?KUȾ›ê!½²^¼¾š­³¿¤ˆÑ?E_,¿ ñ1¾¡¯â?@Á¾Í{¾lž®?Õ´`¾†N‹¾±l?àh°?ɸ?/†`¿°¶,¾X8P¿•›Ñ¾zД¾Í¿ ¾‡ìÀ?!ôh¾ W(¾•#\?äI0ÀÛá¾—9L?%6i¾ˆè?6½ ¿9k¥¾5Ñ;àr@½WØ@¿±?m``½-pø¾vt¤¾çBó¾,¶¨Lª¿óÝ?DRÔ¾I¾“…Â?Qɳ?:«Ü¾ÉÕ†¿žw¼?꺾?1"¿•Å?B¿•¿†Á¾¾~ «¾ d?9¶½èΊ¿‘AÏ?ïð´?=ú|¾œŽÓ?îò?J™X¾31¾æ~?EΜ¾…FÈ?á?¤°ì?0h¾WÁ–?0*?$(L¾Oøì½ãV¢¾ÆÞ¾>·¿Ž,?¦B?ÛóÙ¿’??. ¿šº?CÇ¿‹O?:Pï¾xÒ­¿Ÿõn?SFƒ?2›¿Œ­î¾¨ý¼¿9o?(äh?Tˆ’¿£µ¾ªrr¾Žw(¿›Ø²¿™}ò?2tоÒ)l¿‘c€?0Þ ?æ? Ê?BÌ&?äTh?ñК?ÏB½³k>? ò°?+f¾|sb¾‰Í˾€çü??]?Q’¹À ..?Aý°¿©<Ò?6*Ñ?ê9È?=0Ê¿•!.¾õÐ?<ú˾›Û·?MÅL?TB6?L5M>ŽºÒ?ò?e¾ŒÁv?6òn?æxF¾cÓ¿CÕé¾qá¾€éh¿l¬~?1±ª¾Y”?6’¿›”w?æÛõ¾XLx?»"?Ü_?()0?M„—?9Ll¿“û‹?(hp¿…ML¾„4·¿ƒ ½tH½ , ½†ùT?[†n?TjA¿ŠY޾–;j¿‚ñÛ?Gö?U™??a¼Ã?Y§ ¿—†½ü½®¾U¹i¾¹'¾Aο ÷õ¾mµ?P’¾/‚#½ŸÔ4?@<„?]=?EMW¾»«s?¹Y?pšv¾¶Ñ?d2n?6Wš»Y?YŠÔ¾/Vy¾ÍX³»ÙYÀ¾†×´½Ïö*?"Dª?CG†¾¨®¾7#_¾H8?2húÀ*û¼ÿ¼Ð½ëؾHR?à×J?û ¾\¾F[Ѿ Óš¿„¸é¾º F¾‰Ù©¾…m1?M¤K?36ï¿£yÞ¿¤}A?_Cß?ƒþ¿€¡}½r‡ä<Й0¿“Xë¾?o?=ÇŽ¿–˜l¾¡¬¸¿«Êœ?)s?Q: ¾¾Ó?M€à¿¥Ž¿¡™?+R¾‡ <¾/Z?GoŽ¿®ŸM¾Š½œßø?GÒr?J͈¾??ùj? ¥Y?NϘ¿‰ ‡¾‘](?E,þ¾“h"?íÀ{¾‘Ü?E§d?HŒŒ?ɯ¾v¦¿¯¾Œãä?]?Sê?Q1ò¾d¤€?8ë|?OŒ‚¾ ñÙ?:»ë?;=î?±?R)p¾-*)½ýÑ*¾§êF¿ŸA较^?4q±¾] Z?1-þ?Å0î¾Ï*¾ußÄ?1SH?V¨ò¿˜$½ðØz?Nĉ?%û¿“Tô?ÉȾ†ôP¾Y±Â? Fì??ô^¾‚‹¾h2U?@W¤?+X”?BýÊ?3V8¾D Ò¾{ ?VQœ¾–¨¿'Ù6¾¥s?P°?1*?L0Ã?,OP?E§g¿‘OÝ¿b ò¾”Ló?C‚J?CUο’°¶¾AþL»#¿¢Ÿ—½“¾?'¾ÛY¾¶ó¾,·í?Xr¼¾Z^?BóB¾×·¾­+?^€û?B=î¾vš?/ÿ©;0a€¾æuH¾dò%¾Ù.Û?ìYÌ?%>~¿¢¾?-¾Û¾‚ææ¾™j²?;2h?Ô?’?HËŠ½÷õ˜¿ ôóÀyâ?aw©?Ú¿’Ôë¾Zp ½¹f?(Ÿ?\ö?FÁ¾07¾&½Q¾Yð¾r@Å?ýóÿ?«»?÷£S¾sÓ½ê-P¾`ïI?Vù%¾;ŸÝ?SG¾OÓ?:BD½ðd¾}¨¾¡‡>¾ow¢¾j%?M¡Ø¾U¾ëRß¾‘&;'??_Ý̾WÉ?Vh?gL?76Ò>G‰Ø¾–ê‚?Þ¤¿¤Ü¾qi¥?Lã`?R©¿•\k?Lh–¿¢{ð?ï·E¾¾<¹¡¾Žç}¾e-ù?ék¬?2ñ¾NÞ?}4ß¾²Ñ?I?3¾ìµ|¿§oæ¾Zïݽ¸ÎØ?J¬?ïÉ~¿˜4?0õÆ? 7¨?O Ô¾^¿­À2?K«F¾ƒ‰½Eú½âì¾™m?Sr?]ž¾Å5í¿“–?F¢…¿Ÿ}„?P޾šAÊ?IŸ‡A2˜¿ð$¾¥¯>¾ô¾ˆ~x?.5?àbr¾f÷¼?èÑ侃qd¾ÆR½ãz ?):ƾZËÅ?IÅ’¾C:¾ƒii?CÅä¾àtá½}¬d¾V"¾·,¿ŸW?F掾½­Þ?^:C?b¾™¶˜?F˜¼¿•BK>ä? ½ßgª¿›‹Ò¾jå²?퟼?2”?8ÌhA¿8AKÛÌ?êÄŒ??ð¾s?1F¾Áð„½ÍÇH?0 v½õê¿¥¥×¿•»?FX9¾+£?P·1?'¼?)ˆ½?QW޾ ,É?'B‚?Eív¿”^â?6'q?/»„¾‡²«¾‚ýÖ?Ö¨ˆ?PmO?5•?'²¾ÅUÀ¿—s?íb¸?CÎì¾…7¾'cǾ‘ÓL?¼ÌI¾F ~?/³ª¾a8¾¥±?^ØZ?:†h¿¤a¾œN¾×C?;V꾺¶õ?aø|¾…«X?QïJ?ÿ¾ ª¿¡è¹?.|–¾£­Ì?fUÐ?7PL?mâ¾W"z¾sV/¿Ž­[¾‹ì,¾‰D!?d¿‡v?J?\¿áy¾â¾þ´½ÛÞ6?A'5¾ú©ñ¾Hg?uE¼¾†på¾É T?m½è¡$?:¾ò?N©[?8%¢?¡Z?šV¿cÊ?C7*?3•ܾ’aP¾3ǾÂÂ?SPÿ?@E`¾#§ ¾Ô%k¾£r¾¬f¿¾8·Z>Ïyt?S¸ƒ¾5-L?R=·¿¤Q$½£3¦¾¾Kk?=+¼>éHž¤?/yT?›æÛ¿0J?S­Æ?Y«¹¿—Ý?>X?+„¶¾G®ç½_±?Jƒæ?Yh¾BÑx¿ŸÔÇ>Ä>ö¾­&?‘ׯ?I¶?ÎC¾K¾D¾+÷?EÊæ?í=¾…ht¾=C¿–©[¾‘ðž?)"6¿š%ؾØW{?(» ½õdŒ¾œ»¿ æ¾›#½¨'N¾tý~?HÅ ¾‰o„¾\0Ö?3\ξ~ ò¾!Î?ª¸?äÞdB6C?zÊ@8„É?Q7?Gs¢¾vñ?Có5¾ÀU›¾´ e?/y‘?N®K?ïÇD¾›ä5?6??‘ú¾ŠÀH?V&8¾”f[¾vW¿“^¾ƒ.^?0ÆÂ?3-G¾!-¿—98¾(-?BôƾƒSÀ¿†©²¾Í?Á¿¯“d>å†C?/‡¿’¶?¥©x?#©Ù? ¢¾²F¿ Gx¾—ñV¾%澋Ëx?$¼?徑bY¾wì¿•ŒÜ?Rî?ôh\?7è?)Zú½„ÝN¾”“œ?HŒ„?U þ?Sº~¿¤“M¾–n?è;ß¾½Wª¾ Kn?D ̾¢Œ?,èÚ¾`þ?Hؾ<Éž‰’„¾½)ì¾op•¾:àN¾tQ¾Š´c¿¼^¾ži ?:âŠ?3d?/辿„ w¾eD*<<À@Ø?IÆ?TÔ†½ë$t?R¸q¾^|f?;âZ?J«h¾4‹¼¿–Žù‚¿” x?2>½#X?7?Es?ëñ—?[:²¿Ä¸¾Ol?Yîh?[ß÷?Q‚ñ?Wá&?@½ÐEÒ¾É?dn’?1v¾ÃÀ®?L ^¾8¯v¾I·¶?uÌ¿¡Î!?72οŽÁ?bY¾ŽTO½ÞdN?SPˆ¾Gà+?:˜¿’ÙY?(Õ¶¿ƒÀC¾|[à¾QN¸?p²M? ~‰¾©yX?ü$¾Výu?atD?!ü?VK€¾‘¬,¾hŸ¿–Fª¼{ ¾”ÀǼÒ??´š¾NQ¾RP¾Knv¾6bä?êM¾7€3?è>?SSŠ¿ŒÓ ¾X<>°ëÚ¿™°[¾$ö4¿‘9??)T¾Æ‹L?T‡ò¾H¨o¾NÛ¾@ö|?Y¬”?~¸Ì¾&v?ÕK¾’¾¾ªjx¾²ý¾·¾¿”å¾ @¾oÁM>ÅFܾ›Ãä¾ÁŽS¾Lµ?6ŠD¿¢Ë\¿ •]½èS½¿GF¾­o„¾ügJ?>î1¾¾*®?h ¸?1ûø¿œTÏ¿’¹¾QGç¾Û $?4V¾íˆ¾ô¨¿–…š¾w½ˆ¾«.?ïi?Žü?IÔ%¿6F?ó¾Ž,?IÑþ?/ߘ¿Ÿ…~¿–0v¾-èI?>ž%¿G.ô?5Nö?Þÿ?,0N?7!²¾‰ÄØ? *¤?9¾cx ?'d¢?Gõ`¾K¾N¾D’-¾%È©¾`e‹¾M¿?8OÔ¿Ÿ(¾!UO?*lÇ?“Î?TüÛ?:žt¾”Ë¿›,¾‘~׿Œ`¾ˆx”¾6ˆ¿¢¼'¾ªË?ARn¾„3J¾§òU¾·Nê?âýÿ¾g_F?,Á ?æ?Ø?-™8?<-›?'ÿh¾„Ü–?@¸¸¾Ž®?BP?*·W¾‡ï{?BA?<öà?*|§¾T*=?{v?G:还 ¿ë·?=¸"?8a­?)޾‰Ìx¿¡V¾y¤?@xž?3ØÆ? Æ?›L?ÑþÊ>jÆø¾mä ?f u?k(¾h¬¾Z\`½Úª=%% ?O²”¾± ¦¾·–¾ åê?Dii¿F¶w?멾“ä½32ô¾RÎ?5nÚ¾uc÷½íÓ½Á ?Rep½åœ.½à\޾u¾«Ô?S '?5Æu?nu¬?g8a¾4üÖ¾h‘û?C/\¿…¿i¿˜îº¾¾3zì?81Õ¾T°Ü½&t¾™ ¿ñA¾Ÿ ?3ˆ¶?- ?<+?)÷†?Oô`–¾$ß¿š!º¾W˜º¾¨ ?äxʾk:??˜ç¾7.?9ê ¾“àù¾O"®½ðñª¾•‹-¿ŽÔ¾¾¥ ?5^¼¾záÏ?Bo7¾v²•¿•x×?Tän?Xž?j?ñ?Û¾_ì–?3„¾¯Î>¿Žör¾gêd?Pô8?Hzß?4?¸?Zø2?A:¾–¿0¾lD3¾"ó?7÷!Àœâ?O ¾ŠŒt½cŒ¼?ã¿¿Á)?;!¾¿¾¡.U¾ÂÇÀ¾4z?lý4¾2¢¼¾,ôd¾À»ù¿Šo¥¾$Ù°?KÔ¾:ÖE?3$q¿—ʾ8xø¾£Eå?!ò³?2=¥?]¾¦9¾ê¿Î 5¾†# ¾‘sÜ?ZJZ¾€ýܽê@¾¢Só¾Ó?0@~?6`?·á¿’¥%?.NƾK n¿°¸?B#ø?JÕn¾N¸Å?\Íž¾#Ó„?1þ²?50V¾‚ò÷¿Ã°¾v €?NÜ(¿¨øf¾LŠ?ßཚÄ6?)Ïi?Raä?!ͤ¾!¡Î¾W`¾°§ƒ?/§ ?*Øà?)9ú¾;¯¾O÷?EÁÊè¾hѽ*”„?=e4¾"³Î?9/?^À„?E.0?oòD?%ŸÅ¾6ý¾.æ½öî½’œ?I?[N¾à¾%³¿†?e§?[Á½ë%:?ò-%½®÷¿‹Ý ¾ ®ò?H =¸¯Þ?9Lw?EQ¦?m(¾ˆ-ê¾Ôµ¾/?qß,¾á#·?o´h¿ŠÍ6?oÔx¾‚ ?d?à<š°?dó™½çР?^¥Â?3Ó¾jª‚¿’ƒ'¿ŒH<¾sgн´ç2¾6:¢¾Ð’¿“9v¾¥¶?†¨¾§êç?Ec¯¾4Ie?>¶ø?Qˆ@½¹sf¿ ¨ì?6õh?[n¾ÖRȾ6ºì?3ÄH¾Œ ?óZÝ¿š¢?ó#ò¾ ¾Šîz¾’¶s?6/¾%A?,u½áˆ‚?K·§¾­ü&¾RÁ¾}—M?9“¾ Çj¾FŸè¿›`u¾š×Ö?aÔ¿“—Ò?Dá]¾S¯Â¾*â;n¹6¾;¯©¾†Âнå"½²Æ½á¨?WÆB?T® ¾¾kãt¾„Çš¾}8¿Šé ;ûÇ ?Ò?≴¾Ê½&ZD¿–ö¾m´ª¾SÚ ¾³û¾|Š8¾ô’?“æp?MpÀ‹©¿¦?ƽÑÌཷ'¢¾îO¿Ž¯¿—{^?2˜Ø?D¼™¾!d½ÉÀ?GÑÞ?\¼?H®î?L”í¿ò¼?h•µ?Q޾˜:a?=ë"?B™B¾¶²¸?b©¾¾…üŽ?X¾¼Zu?,™€¾5”g?Aͨ¾ÅÓ?' ?%`þ½{¼4¾Ê¦ä¿š!/?2’Ô?ܧe¾È‹‹?È$¾¥ñ™¾²?3fã¿“<¾€6мØì½.Ü?-k´¿¢sk?22¿šn¼¾ZI¾ÈJç?ÞÑ:?4´'¾Sy¹¿™(†?ò5(¿¢E ¾?]‰?D,–¾›ñо›·:?D}²¿·¼x?m‹¾Ñüõ¾M”"¾«¾R¯?æ ‡¿œ‘¾¸ö?V‘m?ÞŸ£¾[yö¾§þ??Éð¾…͘¿ƒÍ¾òÀ¿€¦-½ãLô?dKœÀ Z¾8,?IH|½-ðL?Z ²½2·°¾Pts½Zmè¿#=¾ ¨é¿—l´½¬”¾žƒ½`’ì¾Iä»?cÜÐ?=âè¾Â6y½û½Ì¾Xz?†Z9¾¸zɾ:¦ï¿Øµ¿Œà?ûdt?ci½Øq?°[?cÃ5¾…Ðö?8½¹pò?5èÚ?<‘V½ùó8¾öÉ_¾>ß°¾@ž¾NB.¾6¬û¾—¾)]?"«¦?98µ?c#Í?’í?˜?RØÜ?]$ª?PþÁ?<î(?å»Q¾XžŽ¾àŽ?1ÊJ¿–ÒHÀ÷£?EXš¾!¸N¾˜b?J$¾ßÖ?1Tú?M•¡?Aj½B$,¾—ao¾ƒÅr¾Éœí¾ºо+¸¾iÈÊ?8¾']?9| ¾A?J©,¾]T(¾Ý˜¾´³â¿Ž=e?Vd­¾“l¾j:?<¥Í¾°aM>ØÂ?ãéÞ¾ÅU ¾A)ù¿‹&-¾ª‰Ý?G×_¾¼xf¿†?[q1?QÜ¡?B.ë¾%cö?>̱¾IeÔ? -¢?ÚÖü¿É¾5èï¾—¶[¾ž>à?b©9¾OJ½]ýX¾©Ý ?§!ì¾ùîð¾ŽÁÉ?5O´?S_¾O¨Æ?@¤Ð?Jžf庾´À¾•›>ðŸû?)>¾Š2?=d?<…¾q ¾Hy?n_Œ¿œ;¿¾&ha¾‰$“¾yoô?JBM¾¨L>ý¾ã¾;\A¾oÉí?I&@?$-½}Å$?2¼ ¾Gì?GGë?$Rq¾ŽxH?÷)4¾„ˆ?62 ¾‹&-¿ª%›¾‚1‚?Ih~¿•kU?fnn>”bÎ?4"?E`4¾5Wn?R„â¾!¶ú¿“E8¿˜ÊÔ?+ÑØ?A…;?ÈϾ?¾ˆ`½Vóp¿›Áp¾{Œ.¿šh˜?T¨?V<0»Á”¼.P¿&¶½|À¾fóD¾vS¿•´³?MÛT¿×¾3ø\¿”Sž?Lâ¿‚ k¾,E4?=Jœ?Mb?N¾Ó½ê_Ò¾£k ?Q&w½¯[¾’½÷½Ì®ì¾hE¾œ¾a q?eüi?7‰‘?M”H?R®¾ž?Jn ¿¢ÞÛ¾(2?cþ¹¿ÊN½àêŽ?>z ¿‘Î$?,à·¾Iic¾ERB?bmF¿˜1É?D%¾¼‘?J-â¾+?uÔf¾CÅ?gýe¾Šyž½ßÊÒ?3LD½ÅF¿š9€¾!äí?(ê?AË¢¾€¯¾’÷¾d.±¾¥x²¾Ã̬¾:l!?0¶´¾@Ñ¡?"‚¾•yW?]8¨¿ŒŠ«¾(M ?èìE?"ä2?MCz¾¥,øº1c¾ˆ½?AÑL?IùD¾¼Ÿ~?Bq†½ÂxÀ?Bz¬?/ÌyÀ Úa¾@>ß¿ŸRs?,󢾑(?9ì¾U>c¾£ù̾èQ¾›ù¾4œ?õÄ>Òs¿° <¾À²¾PÆÕ¾^ÐY?+¾?T„ú?7hÝ??®ð?êäû¾+!1¿ž2¬¾?A꾆`?7|à?,p辋|D?@Õ?Qõ©¿|ñ¾…pú¿©%s¾K¸Š¿”¨ ¿¡¿¡6𾋠î½ÈÞ¿‘W{?<ò¿‚ê`¾š\?Szœ?FÁT@83D?äâý?(¤Z?äõè¾ÜÛ.¾}L8¾¤:É>ëž?O)H¾¹#ó?Sê¾Á{†¾Žy8¾h+h?)Åp¾É¨L¾¼ï??7u¾U%׿š·¿Ÿ„Ý?ïl¿“VÐ?6ÄJ?R‰ä¾n¦?c^޾býȾ:Mi?­¸¾š=&½Ý–œ¾ŠÝ¾” ¾]½¾¨ôX¾ å ¿¹ò&?2⿚Z¾0@¾š¾Ìr?>ßž?ÙQ!¿´¾à˜?3ÜY?Z¾w¯:?+0–¾Ž™Ë?H _½‰'Â?Suؾr õ¿”Šu?æjÕ?B²–¾¬ø•½¬è¾BÿW¿±zr¾(­Z?7l½Ó†?o¸€¾‡zÀ$:¾œb¤¾DDO¾*›¾y—¡?bž?l¾ c?ñ]²?E,?B_]?<æ4?\2\¾™”z¾‘,ä¾2½¥äо׿„íÒ¿Œ4¾‹8¾h?,ÉF?LH?U— ¾°A?7™4¾4)¿“Vx¿Œ,x¿ž¯–??Ç›¾5b–¾’&Y¾j ¾!O¿Š¡¾—Í¿že×?ßG½?Gö׿¨IŒ¾)‰+?]‹ä½ÝBˆ?:ë?A>£¾ÛUL?JmO¾^½„¢ð?Õ¿¾ñø¾ˆéJ¾ÄúZ¿–¦ú?_[ ¾M½ŽþØ¿ŸÈß½ø`²?%ç¾ 3E?;0û?>R&¾Š÷½ÆVؾp™â¿›uw?(Ô ?\~n?M›ö¿›Þ½—( ¾ ¼¾[ºü¾_ þFOÔ’¿’O”¾JQ@¾ ñU?,¶¾' æ¿Ì >ã”ò¾xúð¾P=g¾8Û¥?<¾±!¾k ¾róW¼ÿ3оF¿Îò?9ƒ&?A×v?(‡¾£G¾NÂ?Þ°?Émɾj6ÿ¾d‰6¾nMn¾àts?kÀ¿A·¾‚‡3?æ÷&À @¾§o?oѾ1^¿Šü’¿¢.º½å¶¾ˆl?QÝ?+<8¾‰ôå¾SؽÈRà? ¢¾¾‹+?Ýn9?R%©¾¿"?Sí¾ùI>áD$¾®"Ö¾¬Ö"?}¾#>¢¾–:Ì?A7¾ƒkú?)÷,¿š~¾¶Žä¿ hs¾X‡?%Ö?ë?ƾoª¾¢Õ?/vN¿åv¾]‡0¿Ÿ@t?'¶¬?çÄç?,ÏR¾}5-¿—Žò?j¾‰È?6ú?4‘(?èç¾Nrà?E=k¿Œ}È?ZÈF¾×Ê?ª(?>ü­¾µšá¾8ç?9z·?.0¾®J'?81N?C!? @H?äjR?)Z¾1£þ¾‡ú"¾·Çâ?%.v?5²¨¾®L¿±&?MTß¾r—?`2Ⱦ12¿†Ÿc¾¢¬ñ¾Cé6¾7¾9Yç¾;a>½Ûl?S0_?ô"™?\À–?K4½ªÍD?j8ë?HÖ¾*툽{üd¾2¸…¿xv¼½áç?½Ø¾œG•?R/ü?ZTP?+¾$ë¶¾2ÅM?ô29¾,§Å¾ÇÇ?0Zæ¾CÔǾ!²þ¾ ñ°¾νû“p½Š~$¾>¹¾4”Œ¾lV¾Ðy½tØ?<›œ¾-=?!¤½½TR?8–Æ?V_o?âWÚ?S1Š?)Î?n«¿Ž•ç??÷x¾QĽçkr½YÀ¿‘µ½¼8Ò¿„w¡?à‡Â=1°¾OjÄ?]j¾[4俇Ԓ¾«È7¿ºe?0±½¿{•à?îÀ¨¿‡ýf¾Eùï?[È©¾•|t¿Š‘[¾Z h¾ù ?ëöõ¾ `^›¾"ga?VÍ ¾“¤~¾$\²¿‡Ì÷½Û½B?LÑE?1X¾–Ñ(¾v{°¾œŸ?MXú?XÃ"¾Žd$¾=Lp?â õ¾u&§?Mòv¾¯¶?7.?ÜR¿£´Ú?9$¿ ã¾rDB¾’ôN?H3ð?ÿ|¾XA?1,¾~ÜT?;jÁ¾\Ì¡?)οz°l?JOˆ¾¥<ľ“¿šGæ¿“¥¾½ß>?VÍX¾y=B¾ÍßB?:è‹?ë9j¾€Ã?Õ*°?"‹¾šÉ]¾`äÀ¾J5?@A8¾ò×?èÞD¿¡Šø¾hŒì¾¶€É¾{ï¿›ç)?TS»¾|n¶¾Ÿjñ?/ð ?2ÕÕ¾«Ký?c?.ôl¾JýŸ?(ÁD¾Èľhð?V?KÖ<¾ìŠ?-õL¿“Ÿ‘?Y„?0Ãr?5•š¾‚1Œ¿”$H?c¸‚?FÚ¿ ¸ƒ?:õí¾ ‘3?/ÑÀ¾ ^ì¿“{?IÚÌ¿ŽN¾:ï?8ä¾€j˜¾Wgr¾2e ¾{õ†?x÷¾ü^¾‚)¾f2½…Wn?æH¿•b¾ÀîÐ?G^¢¿”¤\¿0=Ü?9Èz¾/œa¾#Šj¾xA? ­´¾nzʾdW”¿Š‘ú?N½?ñõ¾IÎ?Z·b?Z×N¾dôö½˜iö¾_].¾îÞ?OøÍ¾|}.?OL®½¸)Ü?:¦ ¾YåŽ?]-Š¿ì8¾$?+xÁ?ïõN¾dã†?6c†¾`¬Ñ¾.s?ØQl¾½¯?#±0¾L½-¾9I¾X‚0¾‘Ú‰¾6,?(ez¿’š/?>½ê?"]&?WŽ??è?TÁñ¾¢)s¿”ê->è³?'‘¾y£ó?DEÕ¾)¨¿‹ç¾¿é4¾’rŒ?9ï?Óí?6¯²?gåÇ?(«÷¾ržN¾»ì‚¾¦è£¾µ¾sq.?o0’½»dÂ?FÁ,¾Y%ž¾nô~¾ŒG€¾4¾W,C¾…îŽ?íZÁ¿›ìÔ¾qØ$?D'Z½¥Iž¾t¥´¾Zh¶¾œUL¾…Nø¾ºÝt¾|Ýz?ÓѾ:侯¾®@¦?GÚe?Eò?7ƒF¾Bø¬?,ÈͽË5b¿–ãÏ?XM!?JŽ,¾{ ¾ÅÑ¿·'­¾§“f¿ŒÖ†¾‘¤®¾Pt;¾™áz?âã£?LÞà¾ú.¾0¼L?Bn)?NÇA¾ˆú¡>ñ¥?BDö¾§êú?%"?ùåÉ?8̰?dËÊ¿ZÀ¾³äf>æ ¾¡¹Ø¾Hë^¾c=F?F¡ò½ëÆ¿·vî?9úê½Ã¥â?ÖÔÑ¿–+(¾z§¾$_r¾ªèNÀ‹C¿@C¿•¹¦?EN?)Š??#Òο’•ù?Úø^?n›P?A »½ÿ"¾`¿ˆ¨¾q$ó?CŠa?$â`¾öMš¾4ȾKUS¾—f?7[¾ž4f¾¨ ,¿”쥾›Š¾‰Þ»¾|Ú¸?ßB`¾¦.1?ìöÔ¿Ž„¾;(=‹Ér¾G.?nf̽Òtl½óšœ¾¯¼ÖȾO¾Yj–?cf½Êf¾s—L¾dÇ£¾+´¦½s%ä¿Îj›?Ë4½ÍÔr¿•@¾hW3¿œM†¿— ?_y$¾¼Ì¿—ëº?YȽ½µ??Ï?FC5¾G2´¾ñP¿’Þ¿“8G¾š÷½¾’ ¾6Ëý?}¹?å&C¾È×%¿œ^e¾lp®¾Ù6=¾²êž¾xõ>Öxì¾\Nê¾ ?Be¨?<¡?Êä½–¿†?AÚ?3‰ß¾¡ãÒ?à™¾)±?W ›¾Ö‘ÿ¾š0?KNy¾•蘾î#½Ï„Œ?&¢)¾N>À ˆ¾™Dï¾}ô?/þ¾c .¾Ëå¿ï?/£U>õ­_¿8Ò>öZ‰¾rʾsV¾éÈ¿šE°¾bxk?^ýÍ¿—ùC¿›r¾Jj`?S<¾0?澱 ¿›¤?9†¾håE¾Ío?ï0޾ kŠ?9z?*J|?!hN?7㿚`6¾Ú¿ø?<Õ¾l@¿¤‹D¾53?¾“X¾¨žŠ¿ªÒ)?ÚVœ¾‹zƒ¾•€?Uø?Hƒ{¾pG?A׊¾Â;ã¿­aè?>û?E­?>·,?D?U<Ä?7fV?$=¥¿pEÒ¾—±‚?3“œ¾¦¾ÇTg?D‘û¾ìd¾„3l?> Ô?YÀX?9à?)ã°¾â!ó?*Ò³À2ü¾J+Ô?ç²E?%Òü¿ ÈÞ?Gއ¾ÛϬ¾&u@6»Õ?2L$?>ÿê¾|ÜÐ?&žÎ?!¶À¾«`’¾ )-?I1t?ò]8¾cú¸?ÙÑš?ä[‘¾~Yø?&{¿”E—?ßv¥?/Çð¾›Ú¼?Ö{ô¾³?YS>ÿ©?aSQ?9/Ú?3ëJ¾Ðù¾tæf½ÿVŽ?E^従^ξ†`†?Ik»»Y4?S"›½ÜŽ^¾Î¾’¿Š ç½ùÅL½Tp<…0¿–ÐN½²M¾7ùs?%ÍX?ï4 ?Us?ZöÞ¾(@º?òoÆ?©…?GZ¾?K`ä¾4Ü{¿OÖ¾ 5½Â®h¿‘„´¾1?2ÒÔ½„Ÿl¿Œ½Ÿ?J„k¾BË0?i,Z?#ÿº¾•èË?6Ò¹?Yœ¾Äf@?!‘j?(;¿šü ?<æI?P%b¿ˆ+X¾D¿£?_@Ó?E[¾ÑF½z$¿§|t¾›cT¾&è?l‰°¾½¦ð?D_Z¾rm0?9g[¾t’:¾5ü(?$"²?Þ,?J섾Èþ€?Mer¾4Z¥¿¢Ý?Bˆ?;‚Ó?N}è?@®&¾vvè?; Y¿w¥¾§º¾—sоÒ=¢??Ò¾]+e¾Îr?OT*¿‡—;?÷v¢?årœ?<¾}f½€¸¾g?°?"E?^rÀ?5WV¾¢D—? þþ¾³ ¾6¾”'E½Ü’¨?.â?:ˆÄ¿Žª?ç*пŒz?Rfü?3š?6ã”?0C’?9d¾t]侃ÓʾqV?‘>¿I½¾àý*?9ëä>Òÿõ?*_q?4Æe?CQî½ëd†¾& Æ¾u?”¾ªÂ?@î|¾ŒŸ ?6(½¾Yçe?^¿šý–¾Ç.­?9Þ¾©“?,fN?7=?.ªª¾–ÿÊ?*˜¾‹‰g?EqÓ¿ž[È¿b¤?CÚ¾+? @1?V@Æ?AG&?0i¾¤ñì?Hi^?8Tˆ¾¶W†?UHš?j¾+Å?9?c?;™ê?* ʾØÌe¾¦È ¾ÎU©¾qB̾uâb?8øÚ¾¬?)þF¿„&:¾¾ÎE?_ïã? 6ß?A¯Á?6„¿ž‰ˆ¾‘ÛZ¾]Ř?;|Ô?Od¾nÉ@¿”w?,ÍÒ½ïØ?Ïåü¾µw?AÅp¾¢%%¿¨ ÷¾£¨¿©#€?.&›¾ŸÑK¿ ?ZH¾£å?6È?@ݾ“AÕ¿T€¾yg ¾{zV?+Jð¾6ÿ¾‡éƒ½RÃð½þvV¾M˜¾¥é¿~&¦½­Š¿†j¸½«é?@k7?Q¡à?X…ý¾?—n½È,Z¾4‘¿?V±1¾S}9½à˜N¾¿è?_`¦½«R?@˜Š¼Ãkx¾^ò޼ɸh½«Êº?c€ñ¿…p?Q¸b¾Ãþ?ß<Ô¿†2ð¾Ã0)¼ç@€¾Tôo½–¡?7Ž(<Å×ð¾Œ@?`ÌŒ?=¯x½øï¼¾S«¥¾ð½¾.1.?m쿾9«¤¾R˜¼¾Ãº?ì+ ¾W^¾_«a¾‹é¾¶t[¾õĽÎ>’¾CÄI?6Wó?ìǾšÒô¾†ú¾eü¾ ÁC?ðMä?G7¦¾>?.‘^½ÿ𬾠n®¿Ž¶ˆ¾fv£¾HW?EP(??CX¾»ƒô½×ŽŠ½N?žÒz¿˜¬Æ?7f¾Ûô¥¿ x?–¿‘Nâ?ð?Gªë?ìÿ%¾7»*¾ª ¾‘7]?B½*¾fa?>ßá?5wâ¾¾e?N­P¾¤'?Þf¾i,’¾šK{?,'<­þX?E†k¾Wýº¾™š¹?J݉¾Çßë?Sø*¾\\¾ÅŒÀ ?¿‘Y_¾‰¢æ¾oØÍ?7î¿“e?. €¾!*¿?Gš?F->¿¦4?ÕÈŠ¾‡ð¿•Ù°?ék„?9ø¾He´?4mÿ?]ÿ©?H#g½Ý쾄ù½¾Öõ¾p4@?G­ô?8†`¾®§ú?2Ò?=c*>÷öo?L(¾©—L?Pz?×ê?XìN¾¯8Ö¿B¼?9 Z?G%,¾Ÿú¿¾C¬w?Þ,u¾Z¼'¿”iÐ?$iܾ¤ß¤¿—àw¾—Ly?42¦?B ¿–5è>ê3 ¾š<¾³Èp½èÖJ¿—i‰?ßYf?4ñϾŒ¶¾¤û ½ïpð¾šoº¾VN÷?OÀf¿¬Z¾´¿Á¾Yx¾JZ}½ïyD?,t?2²j¾ºrÞ?D½N?'p–¾‚Ÿ4?'ë*?äNj¾–UF?98¾«êŠ?n|ľ0“™¿€Q¶?iõ¿ƒø‹½Ía¿‡\H»Ï‹À¾S€Ø?À_p;UÏ€½^ø¿‹ñA¿š=»¿|už@{¡?S;»>ûÞо©Ù¸?Zíz¾š }?8ì¾ìFZ½®V"?WµÁ¾ŠðJ½ñª½Ò‡¾fþB‹u?Cxv?E„?h]„?L•t¿‰(è?µ¿È‚¾iÌò¿„ ?|¿‡OD?D<œ¿€¯?K꿆xä¾'¾yµ¾RŠ’¾C¾dZ½Qk„?ó—²¾=Œð?\ ?9 ½O[è?Q^ö?< V¾^~Ê?\Ž­¾MR?8J?,P?ùaô¾, 翟Ͼábû¾2ù¦¾+¼Ú¾»Y¿›—?!¢¾r˜¾­·f¾GÄ?AüW¾dìP¾·±ê?Iºó¾”&F¿ g¶¿œ\¾ÁZ?Có½¾LLˆ?2­“?D·0?Bò%¾gn?mù)¿X~?XƾU5?í˜:?GÁz?J¾ü¾|(ª¾¡3ù½È@Š?%–¿”²Ü?>«‰?Ga¿‡±v¾M2?$»j¾>„¿–O?Zœ½”,¤¾vPʾ˜10?L×`¾åûÙ¾…¾¾‚Ô¾CnÒ?Œv¿‰ÂϾIñ¿ Î?½¸¾¨2x¿œ×¼À?D„p?E6N¾waоŽ9 ¾ Ö?+8î?èZî¿¢:n¾3°T?*‚V?Asv½Ö¡º?)À{?' ¾€ö›¾‘ä¿¿”`B¿”•¾?ê­¿™¤«?B̬>ÿ*Ë??†N¾=˾XÇо†·µ?.­D¾œ©¸¾¹ð¾Ýô¿¡q?$Ð7¾p¿¡ °?<éA¾Bq?à—¤¿“bz¿Ÿœ ¾)Ù„¾ŸÚ!?F9Ñ?.›¿©áð?çÀ¾›£½¾wk¶¿x[?§¾»ña¾sü¾|;²ØK??kk¾ØFŸ¾9š8¾ˆ+¤?G!?C…L?ëG¾¾‰û?!†3¾¬{U¿›‚È?ÄcË¿£¿?(*¾­Ð ?!î?R¤¾)þ?1Ü$?GH5¾[Ó‚?Ä4¿…¿X?*ú쾤’?W2G¾)г¾ž–n?o89¾o{T?bn1¿y´?3¦>½K¨¾5¾€„¾öþ¾Ÿiô?Kê?'Æ4¾_L*¾¦ŽV¿?¾N¶¾.;¬¿·ž{?@`о;¥¾¾ˆ‚¾—a˾RÎ>ýÿ¬?6•‚¾Ž?Aû¨?ÿ@¾_3¿‘ ¼9õ€¾Wš$?#§q¾%›¾×øÎ¿Si¾–þü¿¨Á?æš2¾5B?lš¿žãë¾F†Ò¿Š…)?@§?J_H??u|?0X¾³ý¹?&Ó†¾U(u¾ãÿã?U™¿‘XU»ä@¾³ãØ¿¡éÅ?O†3¿ ·*¾>ó(¾æ‚?ÕIm?X ¿œ“º¾¼¶¯?IB¼vÇ>«­\¾%+G¾tž~¿‘B]?/r?;ʾ}àl?HÕ⾇'?/£[¿› ú¾„¦†¾VºÀ¾\ÿô?[ªµ?D‡V?"¼¾æE?E¾ž¡é¿²©ë?Fe¾Z`ã¾r}?Øí?zÐA?SÍÂ? G? +.½ë›ä?Lð”½'ß¾’^Œ?ER¾Ù%¾¿£™¢¿”š½¹›$¿¢[N¾„Úž.äv?伿 ¥n?1š?[R¾8`m?iq?1¿ˆy¿.u¿ˆê\¿—IH¾Ðõ‡?'ª ¾?ht?Û6¾—“ó½øïn¿˜Þ{½± ¾:`¾¼Ÿ$¾{-2½«¨?Dèì¾&¾¶k2¾\Æb¾®2‹¾~dš?1î0¾¸|?\ù¾lZè?iB?+D0?F·V¿Žy?Eb¿‘Wm¾¿*d¿›¦’?ET¿±â¼¾Ä¿q=…?QðÊ?î0d?I›æ¾n9h¿¢±¿¨g1¾µ¨ ¾šVc¿˜¨¾¹¾_Ó?8OÊ¿“i>½ƒο§‚#?ã¹%¾"…h¿ ˆH¾OÄA?e;(¾ÁA¡>»’–¾§¤3¿•á`?+íÀ?;qê?ذO¾…Æ|¾ƒ\f¾Ù/¾¥&x? –¿J6¾³PŸ?M#^¾Š(û?òÀõ¾6{?#‡?BK¾fh‰>Âʱ¿“­ì¾7=P¾#8¨¾"’ʽÜi0?g¹m¾ Ùò?PP*?`¹þ¾Ðò¾MR®?4–×?Y.¾y¨?!dþÑ‚¸¿ŒèÞ?2.ؾEm6¾¨ã=?D@_?G?\Ïž¾lsl¾ƒ×î¿JT¾iëÂ?H¶¡¾­^?!7½$:´¾üV¾¦Œ¾`oš¾:5æ¾³Šä½è'Ø?ð#g?`³p¿¢Tš¾+;B?8îê?N±k¾,V2?çäã¾¢§”?3®¿¨Ü¾$±º?BaÂ?7 ¾^ˆJ¾7\–¾­¬!?PdW¾#h˜¾_I;¾Iî¾x¨²¿ Ò?.~¾?+d½‹*?>ƒ¹¾f§o¾Æ$`¾fÓv?ãí¾h’¶¾•gž¿Ÿ¾5˜³¾¶E”?'®h?'T±¾rC?%/¯¾q¾¸½³%(¾º#¿”yµ¾« î?>+€?93̾±X¾o}\¾1;õ?Ð^ª¿–»°?µ~?Gä ?RR-¾I2‘¿@p?\†?B¾M2?+ö ¿£3¾‹ Û¿•ÐÔ¾È<½Ûü?+E¤?Syª¿L°?L4¿°›@?FÏÌ¿‘é¾|,î?oH?9çº?Û¸¢?YÙU?+þÓ¾oVè¿ ª–¾©Áø? .8?'“?KÆ?GTÇ?g5¾(Í?$æ?EÕ5¾¢B.?w·¿©:½³Z?>&7¿•u¾L¾<)Ø?à†ó?D£Œ¾D„n¾k±à?ãq|?6 –?4Åv¾“QY?&²?&Vâ?9ªÖ?:3¢¾|ê\¾?·ö¿ ´U?Hüþ¿¥ò¿}z¾5ÈV¾Æ;½Èæ¿•FD?ô?Fäó¾ÇH?fuÂ?I ¾ÍVV¾+ Àb¦?båÆ?Z´ÿ?aÿl¿‡N¾sQg?Io¿–’½Ú><¿™Rɾž£N¿—@¿r¥¿Š‡?`{·¾?ð?DÃ2¾¼K‚?/ûT?k„ð?cì¾~…½ïdF?Af+¾RX}?3ñÑ¿ßý¿Vÿ¾…î?E9:¿˜Á3¾ ¶{?K}é¾^¦÷¾ÚcT?&)’¾…íc?B©l?õü辂¦d¿ƒåh¾J…5¾LJ¾8èǾ‰|¾¸¾*~¸?DâɾƒŽ"?èáó?X…|¾h¸¾Ó ^?YØ~?h?(°¢¾_.ž?2^ܾ†L³¾É`¿”4¾|U=¾d£Å¾«¶¾‰†?Atò¾igˆ?Fc¾`Z6¾fÒæ¾>‹¾¹˜J¾¶"™?ÔP7?/¢??k+¾š®Y?V¾MпŽX'¿‰Me¾ ‰?Fï€?Åvнîl®?B¯Ð¾f¹¾s?\†­¾fF¾ƒ)¿–Ãn¾2•%?5¯¸?-7P?/\ü¾™5Ž?.wE¿©ER?9›‚¾V¡¾”_¾) }?I/ü¿›??$\Ô¾V)¶¿i?I ¿ª…ȾBìr¾¿èx¾ÌÜ»?+¯œ¾ÛêÞ¾taª?Þ„ð¾žk¾” ?,É?@òû?A1f?*È?I.¬??†G¾{R4¾Ã庾xX ¾†Ÿ7¾¡:“?ÔL8½Þ;.¾c\‡?Ljæ¾Ø#ƒ?mÙ½“×8½i›Ð?@û¿¤àð?JÒ¹?+–ú¾`Ú1¾s…=?êïѾ5оó I¿š„¾=5s¾|üF¿ž•ú¾ÈO¾?AG?ëj¿ Þ±¾½y¾¢˜´¾£{¾”´@¾€Q?!X„?.(F¾‹§¿˜¿^?Øæ¾H~¦?(µ?ã%?ÝþS½ð,¾°ô¨?ãxÿ¿•;|¾|Jn?3Óë¾I„?#–¿‘ªÍ¾6Ì’?[ ï¿_yU½ÆÑÞ?8P?Uj¾g†Ë½?¸¾E^$¿ƒî¢¾.zº¾Eh?ûSܾ¡Œñ¾t#à¾OA¿Æ´¿yyI¿£°â?[Õâ¿‘n³¾yw¾”tN¾o¬´¾g·½è$â¾®¨Q?Óx™¾‚7€?`r“?C~c?FTl?V×%?O±¿”ù¾€Œ†?$­^¾^§æ?8À¾þ4¾mgž?íÂ??{k¾qÃ^¾Yj?R?û¿ (°?@ü¾=À¿’1[¾6¿˜T¾R4?[¸˜¿§¦½ãß6¿› x¾¤Ð¾’M¾LàW¾³î„¾ž Ô?>|T?;am¾~ÜB?OdV@Î×?--?D(?å’þ¾LQ ¾Â§À¿šZ¾b,Ä?.ÇÆ¿ ÎØ?$Kd¿»¬¿“ÿ?$˜Ø¾ÈÛp¾¯P0¿¿…C??¤À[¿ŸÛÁ?=.¾–œ!¿‚°Ì?^d#?AC?,骾Çf¾D_¿œÞD¿“À?Û¬¿£¾½¾AX¾²©‘¾Wµ¿™‚ö?S¸ ¿°û˜?"„£?Ò „¿—¬`¾˜[?+©¾ùF?G'þ¿¥¸?8µ~? š?Ci©¾¥vt?Neþl?A Ô¾ˆ>?;To¾Ük羈¥ë?7Ü|?1æ¾£ Ó¾)T™¾¥¡¾WªÂ¾Gd?C ç¾î×ï¾y¹=¾Æ ¾?2>?Š,?=T]?V&Œ¾¬Â¿?f`?^¡˜?BÂá¾+Hþ¿œ°¾l4`¿±ˆ4?!úT?Ù?C b?=l?6 {¾§á³¾™OÔ?)™H?60]¾¦’0?Hê>?:ý¼?:ÇÑ¿œ*?܅ǾYpþ¾M.@?#}X¾±‚?Üí ?;f¾›‹„?<Ù¾–3…¾¯u¿1ã?[«w¾³Ÿ?5&ö¾Øß:?ß>Ê?ð†­¾+WÊ?щR?žÆ¿¢-L?AoX?ß“¿ŸÉÍ?:à¿s¡R¿¤ÖB¿£c?uxf= [„?çÙ‹½Í¢x»?À½,Öà¾Yó²½€¡4¿mI¿yf¿‰’Žøô4?ïÓ ?íûa¿ˆ¢µ¿…³Q?Y²?½üjºÚy€?fî¾0 ¾Ÿ“®¾w‘y¿”=[?J|M¾@à>Ë¼Ž¾6Y?]oZ?T).?h7 ¾Ž¢¾L”G?Q &¾KÀ?Fì?|I𿇄\¾E“?vo®¾I!;RƒP¾¾—x¾T[Ÿ?DÖ¿›[É?WЗ?c¸?, ¾(ä®ÀJœª¾F ?9Ê¿‰èy?Jú?DuBÀ ±¾ZS?HyÁ?LXŒ¾c#˜?E¤¾L“¾¦¨¾$;˾T÷?V¾QB†¾Q/?>n¿’~è?Iʳ½Ïåº?GÌx¾ƒð*?íßA¿‰¤0?Q%­¾B|¿‹øÒ¿¤´¾x£¾;Ås?Ë©e¾€B¾”´¾˜,ü½ÏÄF¾‹}?7ºÌ¿¡ã¹?_ˆ½¿éJ?XÁ?Eô®;Sü€¿›8¢½ /²?8O½Ù[,¿«~Ÿ¾–ä?G§…?&k§¾œ¯¾ƒ)û¾Pµz¾)ß¾ŠX|¾àn¾¶c…½Ø¥¾?Ù<©?dW?;/?@;¡??ñº?¾X?-%6¾÷lÐ?ýˆ¾u0?-”+¾¼ï¿§$À%¾¤·?0z¿¨kµ?JƬ»}Ô?(§Õ¿¯Œì¾% ?4—¾X"À¥£¿¤]À¾¯+À¾‹Óµ¾} >¾i`Š?#D¿šÐª¾’iB??;1Á¿Š¥Ò?;'m¿ŠÍÆ?K™6?KÃf?'–‘?Lo¦½mtÄ?,®ž?X§t?ãíT¾Öa.¾5U¿‰¾–¿•ðP¾„ô?+?V²µ?èá:?:œÜ¾‡Jæ?Pò¾|”·?R°é¾Çž&öõ¾6iÍ?>®½Ðùœ½ì7~¾T¾n½ÑÌ\?|:¿”<8?@s8¾x)‡¾mBÓ¾yæÉ?@ˆ0½¼Nt¾è­†?Cºc@qľgø8¿’&m¿…uü¾+F¿ˆË€¾?“¾Nõ螾Gÿ ¾%0­?×a(¿Šµ»¿„]Ö?y=ê¿,&?J¦2¾Pöc¿˜›z?ñ®@¾‰fN¾=\¾ƒž¼J ¿›.{?`+&¾ªÅξ|'ŽÀ‚Œ¾A¾r¾Rt¾F˜ >ßYÅ?E«Ö¾Œ¤Î?8$º?ã”B:ü¾?,¿™¶?6/F½ÚØl¾•»Ä?û¸½•[d?eUÛ?ð ¾6à¾N€Z½éú:¿˜gd?S&Î?I“Œ¿žøá?ÓðP?âD€¾‰Cü¾’oÍ? ÏP?K:¾<Øc¾‹ľ•“á?FX?<¡Z¿—ä[?8ö÷½èÄ6?-Úf?Q1y¾ùù¾ÛFH¾fç¾—vn¿¦m?*Ú–¾6Ô>´ºC>3&x?G³G¾ë?¾œ{?Ò–?&tæ¿™Wm?@UŠ?@\º¾2¾º´K¿Œ¬¨¾žf?æa¾‚¡ñ¾D?.r(¾v„‰?N¥?ÎjÒ¾kmξ2¾[†~?No¾?é4?4àŠ¾‚CQ¾A)e¿“þ?ôø¦¾\4¾iâð?1“¾ƒ{¹¿ î|?K[I?Øú¾Xy¾Ÿ»¾1°º¾ ›b?,¾À¾ˆûk?%ùþ¿™Rž?TlÚ¾ ª?;ë?¿²ê8¾f@?T%¾ÅçL?ɲ$¿n÷?6Úâ?F,9½ÚH½¾ŽÀ¾óç?f Þ?8²F¿x8¾o¾¸¿•Ú²¾žeÐ?A!À ¾)ÀK¾_O¾WF½¹@t?kS¢?+úƾ´Æ¾vK¿‰:ä?>4‚¾† †?Z<¼—tp¾o(< N¾SˆÑ¾ˆ(¾! ¾ŽŽi¾Ž£¿~b¾V4–¿¡ ˾K¾ŸO¾>ÒE?9nî?Ú@½ªáô¾—¨n¾`²?å5¾JÁ,?CÛ>?œWŽ?5ºx¾‘º?3cf¾¬°n¾ î6¾‚¼9¾+>b>Ó.ö¾Tº±¾*@ +¾¯¡µ½:¾¤ú$¾>¸¸?XõÔ¾¨DÞ?+15¾[F™?çü꾤 NÀ7@?OåÉ?ÞíL?Câ8¾O„u?2ò¾ŠÌ ¾f…ì¾EäG¾H¼î¾TýÞ¿‘ïÕ¿ŸC¡¿£¬˜?aD½úUp¾¬â??©/¾†"»½ÑVò¿”ÅÍ?LˆÎ?*PL?)¯ŠC´aCz?B!Œ¾BÆŒ¾‰’½Å+ȾÁQ=¾|ù¾Ø¯?Ahæ?&DÀ fž?gA¾t¢?à•F¾Kåv? †É?Eœº?ð?K8v¾Ïæf¿š>2¾‚îH¾‘¾_2½ž%œ¾p2¾·¦7?3¨?fdT?>ã?Zs?¿Ò?MùÁ?V±…¾‹>?ݨ‚?Ow¢?0;¿[(¾»}Ç?Ûw›?$Ã?Ojä?8i½à)2¿¨:-?Ì´›¾^–C¾Í\²?Ç÷Œ¾«C'¾r´v?E°2¾!§½õ‡ú?4Ûª?(g?0<ƾ¦C5?(œn¾8}?¤È?çT?n©¾½@?%[ö¾gB¾ŠXL½Ú™?BE ?$‡°?#ùQ¾‹3¾™é?ï-?S…?9P@¾ãf?> ¾ž=í?$Ïû¾˜Ÿ¬¾Z–ô?,9V¾Îª>¿“0Ô?&¾¾°h?2-B?Ôk¿”€ ¾Å<&¾X?'é<‚F ?:M—¾(˜n¾5Ù½ß>t¾KkŽ?Xüí¾Wá½M¤4?M„ö?B¾>¾ŒÒ?Î?ù4ê¿–™Ž¿‡žÉ?I#†¾|’§¿‘-|½†½ÿô?‹ñ/¾…y^¾_B¾h C¾ea¾›?T¾¡¶ê½ê’|?Rr¥?Pä`?äZ¾’š?÷ʾ/°Ê>§M<¾UÈ„?9`g½÷Äž¾‡ôæ?J›8½ßH޾ˆî,¾L㨾¤×½âŠf?Eè?EœQ?< a?7ËX¿£ºL½ä>¤¾y]Ú?E\¾’dÈ?ðKM¾›â¾׿¾;¾X?cÙоlÿö?JÙN?F…g¾Q’?HöF¾ch¾²u®¾ŽK•?@êÞ¾ã÷N?*›?Fæ¾}îѾGŸ?4®¾:$ ¾šÒ?KbJ¾‹? ?äîª?.ó¨À?q¾³;³¾ Û󾿬¾n?î?'6¿xîö?-ê@S"¿0?Ö ¾Ž4e¿ Tü?,…’?/œÆ@4.d?ÝŠ$?Eiæ?…è¾Ç1?1—6C±‰„C”—s@3ò9¾”¦*?â2²¾{*¸?7˜Q?N|¿¾¿ #?éw¾Ÿs<¿¡õ®¾2Ïh¾ÆÓ?×t¾[¡V?û¬?Û†º?àòa¾"9`?§ô¾_F¦¾ÕVz?"²|?7Ý?:ø²¾¥×?âŒW¿´ß;›ÀÀ?:*¿‘«5¿›@?)ùô¾š.2<£y€?83?Ñ\? 1¿–(.¾|µ¯?CV¾¬/^?yåú½vöܾ2„?´P?-ƪ¾“§?&¶¾Óóš¿yU¾‘æc?;bß¾Ÿ¾OϾŒGb?G5t¾=¾\?ϾöW¿š°p¾x °¾µ;íÀýÀ¾E¿’8L?Le?2´~¾ˆÍ¾‚é³?8üž?D­Ø¿ž5J?3úu?<Üþ¿šý ¾“ÒÅ?8Ì?c¿¢6ê?ݰ+¾‚û¶¾–ο°¯w¾ãŠœ?Ù¿~?ÕË?m(?/4×¾™=Î?4§`¾¦S޾~Ƙ?I·¾h˜¾©@3H¾\ë ½»,–?SÌ;¿f¹?9šP?E²À¾‘{K?N`ž¾(JÄ?k­„?#¸Ó?gB?/ýû½ P¿£ë`¾ˆy‹¾”ƒ¶?>›Ì@¤;¿˜Ê ¿ˆî-?WÌØ?Qo·¾-WÐ?n¯Ò¾¯õš¾®0ê¿‘‘—?Un?äN&?7sÚ??Iœ¾‚ļ‹“°¿…wÒ¿’¬¿Ò³A(ÔÄ>÷™§?ÝI¾$³´¾‰’оv9ð>Ú“I¾ff?D™?,%j¿ë,?"(÷?J9ʾqi@¾“¿?B ¾°?Y¾F¾´¬¾¡w¤¾Vô¿©Ÿ£¾~›ì¾¯öä?,ÿο˜œ¿œ·¾ÕG¿Ÿ¾¿˜/L?T1¶¾qå¾&íè¿Â ?ÁJ¢?)Ͼ“OÐ?)’P¾Ï|~?/Ü ?°•ô?ñ)ø¾Á€?NJ„?G±¸¾ 6Ú¾UlZ¾vùʾ•м?7ľcKX¾Xù@?Ú^j?W¾±¾x¦??Ÿ:?.  ?!É‚?Ø+¸¾Œ€Ô¾™½Z? YR¾‡™é¾(?!eÝ4?1_¾™º³¾nªõ¾‡õÄ?-˜˜@9Bô¾³ƒˆ?!? 츾ÜÓ¾µÃ)¿¬×,?†?oྈ¤ì?7ÐZ?8E‘¾Íu•¿”(•¾za}¾?ñô¾!»[?T¾³œ¦?®Á ¿¦p$?ì²0¿ŸRqÀÏ>½i¯l?¾¾?ïG)??w ¾üðG?7Ⱥ?;uŸ?!Æf?L–|¾§^ ?#Aa¾Ëÿ¦?Êò?R>ã¿£¯b?'§n¾€‡í?ÙöH?™>­5†?^]?Z꘿…Ôx½°å¸?f“H¾ ¯?•eÙ¾qQ5?FgÕ¾ŠÀ?AÑ0¾)MD¾‚™Ü¿—í?éhY?S^¾#¾E!t¾Ü?i?cÊž¾¦Ææ¾- ¤¾Uk‰?,6ç?jbtÖ>Š<å½ñÚ¬¿€ã"¾ãÆ¿’¾C¿‘I®¿— ?8/…¾L"e¿¢Jt¾;…å?mK?QªŽ?îb?1b„¾‹Œ?TÌ ¿ð?-V¤?MT?:C¿žÙW¾Ø{K?-¡—¾½^¹¾I𾏧¿˜‘­¾Š¤?1RF?;¾”jþ?,”–?T!n¿Œ[«?0•¬¾º‡"¾£Àµ¾ÇÕô??!9?9c¯?-8î?.$?M,\¾ªiG¿¡A¨@>IÊ@ÀM @ŸC¬?0F?RP¾Xç{¿“!¾‹.¾‘"¾—-b?,ˆ%?U °?¿K¸?SjÀ?”‘¯¾r¾¦é±?wž¿ pg¾Œþø?"ÓȾv¾ŸF?&N½Û{n?F‹$¾¤d°¾Šþ?PÙÇ?:ºH?‘ ?:”?!iª?!ƒ?PÌ;¾Âÿg?&ö¾I[Ÿ?ÀX¼’þà¾Àµ¿ŽS@¾ì[¾’Kù¾Â'¾¶™¤¾R6å¿OÉ¥¾Ëþ[?0yD¿—N>®™®¾Ÿ0º?="º¿™òB¾„01¾–­ê?_´?2kľeÓ ¾mæÂ<ÓéÀ?2dÁ¾ˆ-¾¡«½¾‘øx?(WÎ?H§ø?àõ­?>%Á?od¾£M?;¹‘¾n{š¿¤Z8¿²nÕ?/æ:?MÁ€¿Ÿ’?>¥æ?BÇ=?/­4?!2¾„û&?/´«??àÀ?H£[¾J&9¾‚.?:ã^?YI¸¾¹;Ý>Їd?>þ?F“ɾ`Dо¼M!;Ô€¿šµz¿pŠÐ¿ƒ‡Û?.D¾7ĺ?Y­C¿u7?\ä`¿û¿cáξT_H?ݹ8½‚ô<ƒ/¾-“?äÇg¿}º ¾C–é¾3z¾Jþ¿‘>¨?tÊw¾ ?Cð~½î4(?û–?TÜá?Tèl¾- Ù¿Lþ¾9ú?Z{n¾|s‚¾¬µë¾;œ¾#+?}¤t9È?øYX¾ û¾•e˜?NDνÈÒò¿‰»Œ¾l%N?ò ¾q9¾¼ÙÁ¾y?Pt޾&§¿“_½ÙÍÖ?=ÞÄ?u¤?Dç×?"˜¾-æþ>äþ¾ƒDÞ? ¾G˜.?ð¹¾d å¾2qI¾Ò?R Ž½ 4?Vü쾇‡?Uû뾊/6¾`ľTKÔ?Wbn?;Ön¾й¾^Oæ?bÑd¿¢^é¿™Ëý?8(Ä?JF?ë|¾Žj%?@ä¾6$[¿™!?5Tà¾5×[?9k%¾ILù¾M>?JÓÙ¿™#¢?!£­¾…«ß¾UI¾7I@?æÞâ?:ö#B7C”œpAï¬?ÚWE¾°x¾²=?O¥­üZ?<⣾egL¾m¸V¾©ÃÆ?sݾ#0?[nž?:Ïü¾ºA†¾@Ý?=¾V)°?X¾¾‹O¾™R}?&¾¦>ò˜u¿žLz?D4è?PK€¾}‡Œ?ru?BªÒ¾M?˜¾´ô?ÒÖP¾n&8¾¦àã?3Šñ¾L昿¡+2¾OåÚ?I!~?D î¿°Ú:¾Ž ?AXõ¾¶ã˾”K[¾ÏÉC?%À¾²Ä˾­Í¦¾„°˜¾‚ñG¾&ûA?@Vœ¿}éU?gæ¶¿„õ¾3ÑÉ?fù¼¾i;?x‰?Sú“¾_q¿œÐI½øÉ@?é‰{¼ùŒ`½¦±"?Ulª?aîÄ?Z¸;¾¨«?ˆzî¾^š>¾‹öu¾aB6?Sš ?Ý8×½Ÿ¶?R¬¾,õZ?6BÍ?jn¾w”j¿¦.¾×Ëï?mi7¾^šØ?Bïó?;ب?@|±?¨/ô¾‰Î?씈¾^¾P?¿ŽWU?>ˆ¼?NŨ@(ŠÀ¿¤~æ?#ÔØ¿‹}¾Ä !?MU?]ýƒ?bú`?Eëh?V9g?+èú¾µ+¾Èœ{?ž ¿Œ»ý?VpB?lGâ¾p¶?ùb§¾ãŸ?&ž|?Y0é??’l?JÌø? ìE¿˜•?:ŽŒ?.Ÿ?¿õƾ©?Á:¿”?Jg޾‡·ô¿’¨¿šød?IkB¾³Ì=¿®¾±e¹?ód¿ÓÏ?BÇ1?9=Þ¿¡ü^¾7о1«Ø?7Cj½W꾡´”¾›¿ð¾Ž@¾?<â¦Àrº?:yM?=ùC¾NNB2ëD´K B™™1?$o?áFK?9ÔD¾Bœ?E“ɾ¬B¾Ø.S?# /¾\ ®¾š_?^î¿é¨¿žm¿•ch¾ P¾n–-¾É»>ˆU¾A¾2?%aÀ¿ßú?ù¹¾2’¾“¥~?_‹Æ?Úc½Ö% ¿˜)¨?Iû]?µô?J?‘¾OÈ8?1€è?7”?AÏ:¾zšÏÀߺ?6l¾\[B?<º?%Ä’?GR?•f¾Âé?A½I¾¸'´¾etã¾Cª?VÕn?Lgʾe@Ü¿˜XÜ?WLº?á9㾊7@?6º¿¿•Òl¾ ¥ò?<|<@;q¾…™¿—VÊ?Vî¾7‹ü¿–øï?!KÁ¾‹‹¾Ó%N? ¢Ç?Hÿ¾Œ*¾Ž¾Á%?,Â8?,w´¿¢Öø¾W¬l¿ŽD?7º$¾–Àmýã¯~¾?»¿©Ú›¿”ºt¾Ä0??¹?X½Ð¾›#n¾Ú}Œ¾š±‰?X¾vl ?×5Ñ¿·¹>?`!£¾`¿Œ¾€,/½ÕtŒ?c°Ü½+X?B ä?W¼.?;R®½þ•?‹³I¾‡ì|¿ŸŽ?Vók?ó’þ?J¡®?O®D¾†p ? ™[¿~sË?q7D?.>?F(›?C,?K¨’?9š½ lô?OÄ7¾bó¿¢X¾¸­¿‰ Ô¿¨»¾gÜþ•.¾†ÈJ½·D?GÞ?Üáb¾Rp¿‘çé?e¾§W?.ùñ?N—龘È¿z ?ç«~?3ö1?ð| ?<<2¾…úN?ãIí¾”kþ?9ãF¾¯z¾M²¾ˆÃJ¾°å­¾ÇÃ#?fjD¿¦þÙ?2‰Þ¿šu¹?L9¾µS¾J8…?@¡¾¾³—©?N>ƾ’0„?BÊâ¾–k<¾Ë`.¾¾+¾+Æ6?<ëÀ?£f¿±V¾Ÿ€ô¾fÂU¾^8´?*`?Máñ¼óoØ?Ü{ø?S¹Ã?.-K?Ö ¾Æœ•?Ò…¾ÂaÅ?QÎö¿´Nÿ?ëžE?ë)s¿™™û¿ Š¨¾¤Á ¿²,ü?+<Ì@<&ÓCÎlC-¼?Bªð¿šÿY?H¶H>ìð»?(9о‹7ä?kÝ"?'7Ô¾œ@?Q0Ò¿’À ?.\Z¾@ê¾pÀ?ègµ¾…?&Ð?ù ¾£¿¥¾®:¿‰kž?c ³?çÍ“¾ÄÕa¿”"h?Ñ'¡¿ŽºJ¾ÈøÒ¾¥¾IEW¾„&’?)¿‡²¾L‚¾°#ž·8$¾§ÛÞ¾¬·C¾)Öf¾r,辬 ¾Ò“Ÿ¾££½„"ž?F§H¾ƒ"4?)‹|¾½$?bÓi¿ª’?] K¿ à¾­Ñ¾¦N‹¿›>²?"ºq?ŠZ¾¨AÛ?V¨¾Úðp?UÒz?,Cx¾¤?1Ñì?–˜?&àξ—·ì?:³ À1?Ó)Y¾½®¾g뿚⠾ˆ¨ ?+)­?*ú5?-Ä˾€A?uÐ?oýò?(Õø?íÆü¾¯éß¾«£Ð?Ù¯ý?J3î¿”¨¾µè¡?"³ˆÀãâ?ÞÙƒ¾Ë”°¾ÄùÆ>³î)¿Œø?Z“ô?V?P””À  6¿iÅ ?7•î¾~å?8)Ë?G^Ò?T•¾(®4¾`Z?MŒú½t¨¾B¥½q>?šç¿Š¯½??‡f¿“Þƒ?Uf¾…­Î¾F`³?+ýؾ•é?¾f„¾1ký¾”ª?½ž)¾|?L ¿“†ï¿šƒO?§Š?2Áp?"'(=Ár?2š~?.ލ?9?LZ®?=QνúǾ³Ëº¾V#a?H/?5Á+¾“þL¿“ö’¾™Œ¾8»¾€Ü?A5À?5f¾i™ƒ¾Jb¿…6>ñ]=¾rp?:9?5“½þ¡¾` ü¾V"r¿ˆ_î¾Ãï ¿“Ü.?Dé&¾q¾P¿Œ®T¿Å ?2¨Ö¾Ç ¾ Õ¿‡K:¿™?åIf?:è¦?%.?#Z¼¾c¾?C·? †T¾1}>¾ˆ@¾®›X?IXˆ¾i§÷¿Ž°Æ?ý¾f/>?ók?>æÌ?&ŽH?0¤?D} ¾<Úõ¾—/”½Á‹ ¾ÃÙT¾V|(?.›Ø@5ß?Sn¾^å ¿¤U@¿Ûà>V¾`?@Ð??%­0?/¶?=ˆÏ?>“¾ÜG-¿˜@°?tß?Cü*¾ö0#?WWû¿Ð?7ÆÔ?2îp?^^‰> oD?90˜¿‘Zü½óvê¾Æ£ì?.äL?@S#¾¨ú¾¬*‹?D2R?<åýàôº? Bb?I¾\§q¿µ8B>3:X?ùð?Øë?AÌ?à?5%@¾U9Œ¿›Ž–?Va¾|¦þ¾Ñ¢"?F–d¾½󿎺ӿžÝt?2 æ?³"?/³¾e?Oá?Ñh?àR? —¿Œf6¾‹@¿¾ñ<¾§En?1TX¾»ÌŽ¿•Dä¾–A:¾–@´?àØ?î{*?¢·?Ý`¯? E.?B|ô¾Î|¸?Yæ?>q?ã×n¾.9Í?#Ù̾Í,ë¾Pgˆ¾]¡¿3€¾»®Q¾Eõž¿Ÿb*¾`Á ?[¿ž½Ú?î?QäÊ? ½ú¾sëX?*Äœ¿µ¹?$ù¿£šH½Ä^H?bq>ß…r?%q®¾…Çv¾Ò·¾ ƒ¾[0m?ýæŠ?XL<>çºr¿Žpî?_·k¾}Œ¾J¥œ¿™ÁÀ¿”A¾h{?/‹7?=Ì?h&ü¾8ã’¿@„æ?±É½îB²?'zþ?F®œ?V¬æ?AHI??®Ø?Q?¾2«?d·ª¿£Ð?_d¶?1WÚ¿“‡®¾8`¾é?<@ ¾Ma?.!t¿–uŒ¾Ê{¾°Pk¾Ó¨?T j¿™PϾé½?Fƒ9¾À¿šxѽξ¬?Ók’?J蕾d]|¾5ð¾,¾£º¾—ß¾•¤¾Šež>Ñ”V¿–êÒ?+Ør¾jv¸¾–B–?:/2¿–ᾨQ?4]?¢V?5àv?ã j?耂?96¨?B¿’¾@]H¾(Q?0†¾ÆdB¾‡§È?O½‡€ì¿ˆô“?wb¾< J¾.0ÿ? î¾x O¾yÏ.¾—β¾$ò¾(ý¾¨®¾ž½”¿ìHJ?§¾„bÔ?CÍÅ?9cû¾ºØ6?GS?Ýk ¾.u·?WîT¾*gN¿¤b"?O/x?Ég,?+Ü'¾²¥Î?8}?._?ê릾–û?T‘x?åM5¾j†?RÑb¾u€?;;㾨Í? P¿”ܳ¿•»,¿˜Á9¾ž¤¾©ñ"?(}?>’?>÷Ù¾ÍU‹?Bñˆ?ä|ç?~¾*ÜѾeîп™x?á?2 î¾`»·¾Žü3?? V?_9|¾=MÁ¾eÓ¾Ëûw¾œû*¾à…y¾ƒ1¨¿ŸP«¾™Òr?2¨È?iÛ]¿ž”?åš´? ö?2þ¾Çó?,G2¿—ÀÕ¾ÏI½¾·ƒ ¾bÝ\¿—Uá½É¶t¾Pβ?(“H¾Ð®u?1à•¾Vøò¾U«Ë¿}x?t¾ˆk(¾¶¿U¾¹ô=¾PÁ¿‘ßd¾³ôß¾“Ä˾]°à?Õl?B L?8ž¼¾²s¼?A¡Ó¿šò?ân¿§è?* ->ýï¾Îù?r=½ž`?H}E?Vx?UÂé?îÚÔ?axT?bFæ¿„”?!F¾–Ür?f‡R¿–Y½Ûnà¾}™Ð?îBÏ¿…ô¾8…¾Qt¾O {¾¨Œ½Ô[„¿|^¿™.¿—Á{¼î»?ìÕ½ôrŽ?V¼?D4ÿ¿‘4R¾Ö¿`½q×´?}¹S¾,åD¾,J¾,RÁ¿ˆ× ?!ç¿“:?7!ð¿•2+¾ñî½Êy?^Î?òоOp¾LÇݾâÙ¹?Ax‹¿’f¸?èZG¾Ç2Ÿ?ìã€?åÏ?Vv°?@Hà¾/é?<Èò?:ø¾¾3ñi¾U4½äö¦¾ õ]¾¬mì½Âfr?7š|½à{Z?é+°¿›ʾ)}ƒ?4™x½ÛS¤¾+Q¾*î¿e3?+ˉ¾ªeÍ?a+Þ½ëèf?O®Ž¾E)õ?wüF¾€Ëý?L•B¿»9–¿¨–r¾~æ„?&>n¿ŒÕl¾G—ÿ¾n*¾žë¾Ãæp?H’?¢º?@ñì'?Hvˆ?^]LÀ Š?5追¿z„?÷²T?E¤Š?7cä¾=?îì.¿8}¿sƽì4,?¦ïˆ¾§†¶?9t\?fu¾maÆ?ç¨?!¥:¿¦cô?<[«¾+s?8¾)¼¿¡ZY¾ÀÀ?;hh?ßïù?Y¨?Cо‡H*?-†œ?5̦½êþb?)³2¾·Ä©?:R˜¾M5î¾Àek¾{$¢¾ÕlÙ¾Ÿ0˾çî¿‘uC?7…Ã?3_Ÿ¾ªÏѾZ¢?N@—¾yœô¾œ?19%?? “¾‰b¤¾ÉÐ÷?1µU?Êš¾Q’@?>Lš¿¤¡¾ËÀ,?8(x¾Ÿz;?-ñ®¾õ¥‡¾ìǘ¿¤õq?PÇu¾¶'?ã4r?e¾½×ž<¾}~俞Kâ?T:¶?5ÒÌ?=•Q?%Ü'?‘¾b˜p?×`4¾+)?Þ¨¥¾¦…¶¾p12¾xÂð¾­¿T÷:¿¨å²?6 6?e&ÿ¾REƒ?6û«½ñc$¿†yº?/3˜?Nüñ¾Ÿ8^¿ò(?&Ù¤¿Éþ?2ðÿ½¨ÈÆ?Oñ½º”ž?UË?SнèÁT?KsϾ hC¿}µy?5Ž?Q{P¾‡-ú¿€iп˜=U¿ž”G?K¡“½±Hº?߃Ø?P.æ?]9»?L‘½ÌÚ†?}·?S10?UBŽ?Tb`¾ §?E¢½P½@¿˜Tl¿£"?PÁÁ¾žä>Ók¿™Ͼµt—¾²q¿ >¨¾Š¾†?'¼6?.b?/h¿`ð‚¾Š$º¾,X©¾ ¿›?g…’¾JÜG?6«þ¾Ž^î?T¬À ?<™á?$‹3?HzÓ¾–Ó?>uè¾yt?i¿³êÀ²? M?Beý¾›ÿ½Î÷v??z¾PÜ?=$¾Oˆ¾ÁÂ^¾a„æ¾a|¾¾™sï¿”:ð¾Ìؾ¹ap½ý8J? Sʾq•Ú?;_¾^ð4?*ÂQ¾5¶¾[€?2Äì¾N¾¡âl?0 ľ†rt?ä݈?(Ì?D­’¾@)ú?"Éì¿™E¿š d?ئ\¿£S½ñBP¿«¿‚?7ˆÐ¾;H‰½4 ?eа?.ïh¾‚e¢¾Ï®h¿ŽÜ¹?OΆ?3ª€À ÒÐ?=Iò¾’$¾ÎEñ?9Ô*?V¬£?asŠ?Wž®¾‚Ýü?¬¾ˆB1?+ª¾‰²l?X|ä¾Sêʾ·uÕ?T!d¾PP ?5È?ä⾇‡t?¨b?áVð¾QH%¾CÌU¾ˆé(¿¤ —¾Nð¾'JC>õP¾i—^¾¢9 ½Þ߸¿’¯ÿ?Sé¿?4t¾gØ¿ŒܾyT¾Å¾áä¾Ùö¾•Ò†?9ĺ?;ŒB¾ÄŠ?1©6?ä꾆¨æ¾š8ؾ£De?£›ð?i€>þ¿¾¸>å?;â¾]íÛ¾'¨?4Û·?-R ¾¥îξBm|¿¤ÀH?ë¬>è‹Ô¾Wß.¾‡ ?+aÆ?-wѾ‚NB?B`ø»þ?Øaþ¾Tlྠ”?8O¿¡ ‡¿›Fx¾”?%…2?6¬8¿‘:»¾^yR?1¡~?%^ ?*¾ø?=eš?8è2¿q濃ñ'½áïN¾4âæ¾¿¿¾–^¾'—n¿›¿½³àš?HVl½LÎP?õÍ–= )ô?Xw¾MH¾4¥¾ŠTX¾¶tq½ÙèÒ¿†œ?óO¾˜z¿šr½ïvð½Å`–¾¿¿’Û˜?> ·?)|¸¾‰^¾Ž¨m?Ò¬5¾ßÀ?Lv? &>¸?d¾… Ä?@‡R¿™´ô?J€¿”ô½·‹.??O/¾‡Þ?,è¾b‹Ù¾1Ìì?DöQ¾~ƒÍ?;°G?"TE¾x¾Ÿ­¾†Et¿¯,u¾‡T¼¾up¾\'L¿Û"¾ù1?)¶R?7ÍÈ?0A[?A+?Q§*?85W?1áÞ?@Cè?Å®ž?3Ý+?Iª½Ôɼ¿©) ¾hWŽ¾È‰-¾e«È¿NÖâ¾›x¿Ã½¾¤à?:?Fnþ?Ø?^ÝÉ?>æ??Eľ?€¾#Ï྄Pο•ÖU?¯ ?4Rª¾¥Ò0?Jò?*?’¾{£Í?SÊ×¾hã0¾¢‡¥¾Ù¾ŸÔ¾Š’]¾—2ˆ½Þ6®?æÊØ¿'Ò¾Ž¡Þ?˜¾ªˆ1¾qÓŠ?B V¾œuo>ܘо¼i¾·þ/¾¨ D?F`¿Œ¾¦rï?ÒÞ¹?4õ]?<~³¾N¿˜ßB¾‹(‹?T*_¾±¾?ÅÀ¿™–A?P‹¾µ“?^?àr8¿Š{Á?< þ?Fêò¾Úb@¿›¾¾° ?)Ž"?.i¾žþʾ§Sܽˆ&꿦ñW¾GY?BÙ¿«ˆ'?æwª?//·?:ýÀ¿ŸíæÀå½Ú™Ú?X­¢?7ëÆ¾¦¾yij¾€ÒÖ?\Àˆ¾Ž‹÷?7;R¾Ä™¯¾õÕ¾Œib¾+$^?:¢¿œÅ ¾¡KP?@ü»¾©m¿ ÇH?6{ô>í›Ô¾¥°ú?×—¾y Û?A%˜¾´î~>Ó¾¾‡`²?FÛ(?5c›½åF¾@뉾1ý©?}°¼ÚÈ¿œ=޽¡K>?EÓi?aN«¾Teʾ 8 ?H˜k¾bE¿„£?Zz›?<Ï…?œ0?/6€½ÛÇÀ¾hšl¿‹þݾ•:è?J»ª¿Ÿn¿Eñ€?,+¾´?ÜD¾¿²Ü ?Pù޾=Í?F’H¾ ¥?<(¿”…Á½' ´?¦Ùà¾d®~¿’Ç¿¢aÖ½ê%V??Ÿö¿rc?9‚°¿|ƒ¸½B࿈*¾fÐ?õV¥¾A‘D¾ \?7­"?5(4¾Ž°¡¾†´?4¬¾j;³½è†Ð?6€$¾p$ä¾%É‹>Ëâ¾)ÌV¿Žkm?H¿›(O¾¼9¾3Ê/¾‡¾$¾Ÿ´8¾GÇ?5!%¾ÆP]¾Š¾1¾†}¿ž‹¿¡«¿Ÿ†:¿.”?N?$?8§“¾„ h?Ýo俎ë?D¶”?8Àt¾z5ì¾!þû?)?Óð¾L6ž?'ŒÚ?R¿¯?=)\?E×̽—ìà?Mܸ¾v}‚¾dS(¿–ýT¾q¡b¾f¨d¿ª­â¿—°ð¿§F?òs¾µÙÐ?EŒ¦¾v ê?XWÀ? Þ? è¿‹¾w€¾œ·P?(1q?!ÊÓ¾sQ…?!Lh? ˆ?Ÿ|?G’c¾±—e?hÀ¾—£¾¾£ß·¾Ïy¾£!w?}š¿›7¾-½â놾«xù¾˜ØÏ?%5?ßõ³¾b¹s¾.B¿ŽOÔ?!:&¾`œ<¾P”ã?;äÒ?6:¦<‹{€¿©!1?ò‚?:-8?Z±†¿‡ÀË?cel¾ÓÅÀo0?ìÄ|?!*¾\h½ká\¾äV?êpì¿…K—<‘ÃнÒ(¿ŒÊò?\+ÒÀ yh?]0j? ä?õƒ?õÉ ¿‘Qf?3hŽ?Iò"?QDÜ?Méü¾¶Œ¾ˆ?ò?íÎÂ?X $¾H=9?/‚6?[¿±¾^Ø"?oX¾M– ¿œêH?`Ä ¿«c?*Oÿ¿“]¿­½Ú?G)\?<}¿‘í½Â"V?F壾™Hp?1lŸ¾œ¾ÚX?KŽÈ¾–_Ô?QlϾž¼y?6¡º¾C€C¾?6X¾Xmò»†ðÀ¾„ ±¾•Q¿©ð?C-?-¾¦ÔI¾aB·?&u ¿‘^-?ãw©?påf¾fB÷?HØŸ½èÄ\¾T Ž¿”/=¿¨²"?.b?4¼Û?=wâ?@¯D?ZUº¾NO"?EÖÀˆá?–ù¾=辋%”?@$4¿¦«X¾¬&¥¿è¾i¿¾“§H¾“ôD??}¿š—}¿º«Ú¾„ØAÀѾW™?/ìn¿—¬´?„¥¿Î‚?§3¾ ¶O¿­ûϾl¥¾ º¾ÍÚ™¾2>ü?&£M>ÀÚŒ?Úî¶¾4æ°¿“×V¿¥-Â?ñ?Íz^¾›ñK?72+¾YŒ¾îµ2¾wº?*y3¾V¾«™¿œ'î¾ÇvÚ?5 h?»~¿œ Å?5ÛI¾hož?5HD?cú*¾’ÉK?&? .¿ ý2?5ü–¿œñº¾•¾Š¡¾œx2?=ýn¾UT?"3ù?)æ?ôv¾¸&+?DL¾¼\P¾†%о¶3½£G–¾Àݾƒ«*?5¾‰¼ì¾’þ«?;Ó?K ¿‹Ú¾ž¾˜£è¾Ò²y?*ûÔ¾ªV¾¾Ã•R?=¦?ß´§?ÚíY?ü.Â?ÚàC?+š?9Ý ?ær?9ªê?$F¨¾Îž¾—Þ¾lB?ð¯î¾žŠ«¾¸ä¿§î¾s³Z?Û(›¾ÝÿšÈý>Ðdk?B ?»14¾“ɾ!i&¿‹í}¾&Ͼo¶F¾zéD?Gäû½œ¶Ä?*~T½Ï7ä¾ )v?t¥ç¾uå¾ÄÍ¿¥)¾¤¿•šö¾Ýé?"ñl¾•Êo?V˜?Ô†n?!ƒ?M q?\M½q:”¾>RR¾6n§¿‚,?/Ï>¾’z7À «¿˜ ?q??í½ÒÂD?Xx³?Õ•i¿¦¡?7K¿¿‰y—¾?ŽJ¿šÚ3½ß…ü¾Š!ç¾hF¾VÆÖ¿š{™?F£¿“f¦?@°{?A1û?K2\¾œ¹¾;}u?T¼P?ØD?èŽl?'ŠJ¿•zɾ]>¾“˜L?HÍ¿*憾œ :?Tɹ?/¦Ê¿†þ?9z?3‡È¿¦@v¾6fþ¾Íp@?ës”¾)1?¾ ÷ã¾=ó?óÂ?G„û¾ÙI?Uu…¾KŠ1?. ã?c<Ê¿ þS?E#˜¿¨®€½ÒÎx?>£/¿“Cؾmf?4gç?-|•@1*D? >¾oÊ?,æ‚?ô®b¿˜A6?OAľ[p¾ˆ?–„¾4-:?Aùb?;Á¾  I¿—¾õ?z(?@ š?hã‹?qà¾Ì±T?N\˜¿šý¿•ª¦¾¹'®?89$¾wW¿‰¯-?4é—?#XÙ¾r ¤?ç%7¾¶w?ç¨Þ?Q§¸¾±#R¾ßí?[j ¿¦?/›¢¾¥n¿•ÆÙ?1l£?,µ"¾^« ¾ Ï_¾Ø½A?>øJ¿ u8@.?i¾‘^ɾò?Dûº>à˜Å¾°s]¿œ⾎€s?3Äz¾š6Ⱦ›¾¿E¬?*À>¾ßš¾ÅtË>üE®¾¡Š½Ð܆¾!0¾½F¾zŒÀ %Ô¾Y÷t?#\Ⱦ>ç(¾K·ï?2˜x?:O|¾Šl]¾hVX¾nÝI¾õ´á?1—.?7I?4¾‹ì3¾ƒ+?'Ѐ?00^¾Ï€p¿›ÛJ?&þ&¾>va¾°n¿™ê?!ù–¾â½!¿¦´œ¾«”?‰V¾h¤?Ê[¾ªíÂ?7h ¿¢k%¿›>ùTQ?63°>Ìæ¤¾w༶…(?Bä.¿‚dµ½Ïˆ¿š@??ÁÔ¾wæ?ÐÌ?h9^¿ é¿‹í¾%P¤½šc4¾êSq?I­q¿•l«½é.¿‘¤Ë¿—´¿°%¾J¨Ä?Gõ?^iþ¿™[Ô?aû(?3]Ì¿(Q ¾y, ?,@?ò F?õV‰?BK¾ µÃ½êP?OSÚ?鎿ŒP¾–8ï?>"—¾)¾ˆä¾us¾ÀÆÖ¾UzŸ¿fi¾¨°Þ?@¶ó?Þ>[M8¾ v{¾9õì?$ú¾†±??1,+¾¼ F¾” :?7è@?ZîL¾ P¾VŒ~?÷&Û?äKe?6…J?:Ôw¾ƒ‘¾%„?7ÛG¿š`£¾„¡Ú¾ µ¸¾^Þs??;y?9ç*½Ì„š¾ª5ʾ3e‚?m¡õ¾„:¿¤Þ¨¿”z?"Ø?M‰ž?Ih¬¾…²5¿z?:e¾? µ¦>֮鿞Ñ÷¾Àg?5ðR?ß§XAbA,¥tA§1@ÀÔ?>“ ?7A.?(†­?9À´À o•?>{î? 2¸¿–Ì<¿0Œ&¾‡á?8°2¿K>? Æ?ØgM¾T.^¿¦Ie?`¾ˆ¾€›¾K¦Ö¾1/?YUš¾Âµ¾„&¾~³¿²‰}¾Z¿z?µ?7鿟ê¿açâ½ô¸¼¾V¥Ô¾uÙc¾Ç˜î½ ;¤¾›Ô¾Tû€¾tƒL¾J#0?¾¾,Òÿ¾vBj?9¬¾JdY¾‰Ÿ#¾Çîß¾—»¾t¼ ?åm"?ìH¾%S?#Ä ¿‰–m¾vŸ?,òô?D1?D¨‚?Wú(¿~z¿ª ¿ld¿…:»?! þ¾Š=o?Yß ¾8?Òâa¾DZü¾Hmë¾y?é­+?UÕš?³´À?3Þ=ì?@ÂÂ?Š"D?Œæ>’›ø½ËÎÒ?VÜ´¾­Må@kx?bÖ?5„½Jy˜?g¼˜?3dž?uâ¾H;v½lZ¾6šm¾Ž·a¾½EÓ?S¶Æ?Ozâ¾,"?Iòå¾fŠŽ¾Œ$1À ¾d­½¾üD,?7ãc¾KWõ¾¬éŒ¾|H?ìÛÖ??w9?;¡l¾˜Ð¾b¾Ÿéˆ¿™§¾®ÔÏ?E@dÀ ø˜?Êæ?)ØJ¾Í‡’¿•ç¼¾ŸË¸>ñÄÄ?×é?ˆ[¿„=‹¾|+?Uh¾¾ (¾¿¤,¾lýœ>N‹?Àv¾Ø™¿•—È?@¤þ?Q›¸¾‚&H¾ ‰T?3Ÿ]¾<¯•¾ŒÃ?6´²¾YH?¶˜?8œð?$Ž{?F.Í¿š¡åBB³4BîƒB½ŠÔAÆ9°@û·?í ´¾’¢²¾K·˜?.þYP²¾‡Wê¾Rµ?7*Ǿ%Pa?3Ǿv?.C¾ì(Q¾ŒÈØ?¹2?2³?+¼.¾‡‡?(HE¾Å{9¾¨ne¾Ÿèì¾­f ?EÕ4?3€?ê‡Y?ÊûL?0ã/¾Õ¡«?>_â>Ɉ¾3T¼¾…Î?ó¾GU¥?Ô ¾i/â½êõr¾lr¾gãs¾Áã6¾©ÜþžK¾¤uY?FÆÅ?îªu?åÛ?Oït?+¦¿¥4¾?:ph?èíܾQÈÙ¾šK¾ñ›?Þ2?4 ?=»û?,&˜¾‹F¾ Q…¾ƒ˜?G5j¾¦f¾º{¾T´,¾H´ ?:÷?ºó‚?8³V? ?WªF¿¨"=ƒÕ˜?<ËÆ½ÈRî?Tið¾QLh¾tÀh½È;Ä¿‘uÙ¾௿Š?Xe?0ð²?Bî4¾hc!8åP?Wû~¿ xK¾ÐÚ¾h|é¾+šN¿Åµ¾‘Æä¾_[ ¾\^?mã“?E޾¾N¯?%˾Œ&/?IbÑ?!ü¾ƒµb?>ÿ¾¬¬?aúb¾8ª?X–)?I0¹?8B+?-y¿$„?Ýî|¾Ã+ä?;¨¾*v¿‰Â¾@ù¾vq?@XԾݢ˜?3>ˆ¾™My?.t?‘Õú¾<)?纾0x[?"75?0^(¾[©Ç¿‹†˜¾…¡z½ÝÌr?áÌÔ¾_x­¾¡‹*¾@µ?2Ù^¾h»t?v™?=F&¾K´ŒÀ 7Ø?YK >uL?:©î¿=j?!cV¾!Î?Wí?ägú¾Œ.„¾b;Ú¾Eª¾pA AO¥8>ðVŸ?C?*Ç$¾â媾“€¾ßð¾¦X¯¾ˆ ¾­Üi?9î?;ø ¾œýî¾LOœ¾”¥ò¿†ž?äKB¾JÅœ¾“š@?×fÝ?>”æ¾téF¿¨¥h¾¤º¾gtÁ?3Æö¿™¸‰?JÙ?(AV?85´¾Ž?+´¾˜‡|¾’J“¾Œù–B ÊBñÛ¥BÅôwB6Ün@ÀçN@?þq¾˜‚š¾ ‰¨?%"~¾Äýö>È_Æ¿§GÉ?ä ÀšN?C­¬?69Ò¾eм?E2?M®^¾¨]?!–¾¾î侈íã?2gª¾gzf½Ë0¾q'Ⱦ–'¾=“l?Fmp¾zà?—s?;Èr?0ؾ¨6†?,îÉ¿ž€X?ß.¾|Zd?ä·¿¾ÅU?"i?†t¾Ð¬B¾ŽÔ¾ê‚M¾<}^?BV?Jب¾ÕWy¾Ž ?ILN¾=ôh¾À¬/¾ž6]¾žÿÚ¾«w¾–¸½¾“ø¾­?%!â>²(”¿” Ž¿˜¹0?Ã?ÊÛ8¿:…¾˜$†>ýôD?3”ú¾±¾Ï„R¿›£?o¾‘“>ç­ß¾s*¶?+Z¾‘Ôì?•*¾ô/?×è[?vçÁ¿ŒÁh?>R¡¾2½ˆ½&¿!d½žDÈ?-*¾;ØÈ¾ '°½’kè¿{4å?c]˜¿ŒŽè½ÆD¼¾Ÿº ¾n ¾%™?1ÕŠ?Ec¸¿ˆÆâ¾ŽÓ ½Pò|¿•Œ<¿’Ї¾‹‰\¾f´¿—êr?|xY½Ã­*¾<¾‹ ?7ü˜¾ã¢{?Q÷ž?ê?jS¿¿4Ø¿ŸF$¿–¬Ö¾M-?:=ó'†¾s3@9R_?K‚z?ÿ¡j?'îì¿ ê¿¶©?2㾿£ä?9ž"¾’¶'¿œ+n¾ÍŒ*¿¥ó{?Üt? 7ì¾aML¾ÁúL¿¤aX?$¤j?Hྯ¾¿™Š[?(ˆ¾­,š¿¤ec?6 ˜¿¨ Ê?>Û~¾}~–¾ŸRÍ?þ¾‘Òæ¿­`/?Y×p?¦÷ã¾ÊÞ)?î ¾xr¾©B|?-y¿‘‘¾¥œ?-Ø¿Ÿê¿—p?UQ ¾‚ðw¾¾²{¾œóË?FIl¿œ¶Ð¾„¾¯¾Y†ü¿–ª«¾Z÷A¾D>4? þ@?ä?©?:‰T?!ð½¾-`?$jN¿¥Ø¿½>?ÿ°¿ Ã޾¹ºÕ?cÖ¾á ?Ž–¿˜èü¾‚ ¾Ò¾{wྊz?-=?Eó¾›;¿²^?2d ¾zñ2¿Ïá½ÇÀ~¿S;½4kľ%>[¿vëM¿t§ ?Vð¾Yx8¾%ˆ‚¿ˆÌ?èt‘½®¹h¾íÏ?qcV?\ ¥¾];¾ŸKë?;T?UZ?A÷ľ)6?ÇýÕ¾?1êð¾œ?H„‘¾¢ü¿™ô ½óõü?#sÞ¾F=¿šÎô½ò$²?>Õ½àôd?=¶?I›.¾yl?g ? Ü|?W_—½úÄĽsˆ¾n‹¾Â¾\ö>¢N¬¿›,¿‡L´¾Svؽ”ž’?[ª†¾†÷É?N¬$¾s?MK}¾—È?棾ŽJã?ñÆç¾Mô¬?$ì?ZxìC?F×Ð>èúú?^÷™?OŒ«¾r%¾Jà¯?M"È?+Ö6?&ÿ¿ž?®?JA\¿ V??çê¿“Ô ?¡¾{Í¿˜â¾Gþ?EåÄ¿—y“?39?/MH¾ÇM7¿—³ ¾v`:¾+´â?én¿ŽÁX¿§¥9?áÆ=¾Ùk?èøŽ?=¦?'¾ˆ¾¸î޾®Á¤?3 D?Flm¾WÝæ?*ÑR¾7R¿´q­?ÖOæ¾¢@?æ^Ý¿£Üó?7즾î…Õ¿v–¾¶S¾ÓþV¾‰û¤?[…1¿žiQ>ö± ¾§ò"¾Dq6¾¿#¿?>'ú?I°?nêp? o¼?FT¾`r¾žÄ!¿¥$ܾ`ã¾Ï™¨?Ž>£>ö¾ÅHÈ¿¸z8¾„ r¿²áœ¾=f?2€¿”?FÜ ?1óC¿R.¾œfÊÀWZ¾™§¾¬œb>02p?=³¾…«´?û¾¥1O¾™X?ç6?E¸é?áë0?/㩾Æ©¾ä‡â?<`?)|?ýÎ?b¾–½¿L¾&ð>óeÇ¿ wN?N™+?<‰(¾ªM?“Ø¿¤i?KǾez†¾ˆ½_?I¿—+*> Ý?òç¯A +íBK‘?S™4?+•«?Dg´¾Y~?2Ͼ‘åü?=ú¹?‹YÐ?C÷€½Í¸f?ùšß¾sHì¾ ÝŠ¾êT?F€¼½žÝZ?w†½£Ç?[¤)¾t¹k¾Ÿ<À?ý[¾H˾~w½ì•’:üR€¿¸Èò¾S®N¿¢—ì¾_6?2r?!ܾó–¾Ù{°¿•šf¼Ü²8??™ ¾¾Ê€¾s·?1O?ZÞ;?àÁ÷?] ¾w‚?FÍî?m*£?*£˜½íZü?‚ö™½zpH?0« ¾Mlô¿¨áR½y`?BŒB¾; ¨¾íL?^bp?AǺ¾o7¢¾É¢½`5о8?HlŒ=Õɘ?%qâ?4æ¿¢œè½ƒ¬À¾X•«¾¸aP¾uœº¾B„2¿“9¶¾DcË?âø?/b¿šõ¾3°?WØL?~Ü?D3 ¾µã¾L;¾+ÃA½ëC2?E/¼?=JB?L[]?3¼©¾ny >í'§¿œ@9? ì¸?Df0? l™> ˜@¿¤‰*?BO‡¾NÜ¿›Ž?Ç4?A –?Ø1?=»L?&Ôñ½î5š¾ÐY?j'×?ΫÆ?éŸO?V—k?rß¾7g¾FF?SWŠ¿¥}±¾í̾Þ¿œF´?Cw7?ßh´?C^ò?47P¾ƒK¾K>‘«ð¾šñ?)ʯ?B4å¾€:è?§@Š?<{*?VÔø¾Š¾5¨S¾‹Àb¾8'¾-ÿP¾°ÎÔÀá¿‘µš¾H?1¾Ži…¾uøx¾J6b¿¥V:¾`ù"¾—Χ¾®ƒ#½„™$?ÒS=?æŒ4¾ÁP(?(Ef¾¦sm¿¢o£?ߟ™?&š.¾¦¾?ÊL¿ª™@?.¹‘? Þ?Üø??ëÀ]4¾ÜZ¾ˆ:%¾–gß?;N¾É±?FP¾Z=Û¾…2?»;?ç>¾™q@>~Q?H#ö¾‰ÅF¾œè£?M_”¾*\l?Só¾`xf¾úú¾Îî@?0ƒ·¿š« ?^PÔ¿†y5½¹…´?Nö^?EFÀ U¿˜²q?Y÷¾;Ïî¾a¿¾-’¿æ+?%ª?;b8½éÑ¢¾q‡¿ƒPT?AYª¿œ‘€?SfX?ðqú¾À•¹?éAÑÀ¬Ã¿˜„h¾”pŒ?$¾ž?'º+À e'¾½°B?Pþj¾j龉3ò?QÖ‚¾ªÔ¾ÇŠf¾È2?AJ9¾«=.¿˜±š¾8'å?.Y4¾Äø?ªçL?í¶¿¥:b?>¾q?APÄ¿‰äE?ûî¿’Jÿ¾ɾޣ!?<è?3ÿZ? è^¾–§ ¾Èt½{ÿX?0Þ?D9¾lÐÆ?(Ñš¾¡`@:Mj?4cÁ¾[ à¾ÌYk¾/‘:?àÚf¾œù¾Ñ•ƒ¾A?An¿˜¨J¾”˜Ê¿«Ü9¿›DľËD?OìD?3Ï>?gM¾±ŒÑ¾°ø6¾V+ó?é~¿#¸ì¾]ÿH?T7¬?;¢"¾CŸD¾Wk¾Œn)?Á˜¾Eq¾çq°¾c‘#¾#7®?E龡¥?CË]?,Ùl¾i€¾D”¦?æ©~¾‡á(¿ ™”À‘„?Hǰ¾‡%ž?醾@Qï?1 ›?HeŒ½èŸ¾1ŒÇ?Ûì@1†h¾:yœ?à俘’¾¹Ð‹¿”q$?Ôäž¾xúÅ?-³Â¿–4j¾›ÀY¾VR†¾º[¶½å¬^¾ŠXø?6 ¾GJ¿§k¾?DÞ ?LŒÞ¾påD¾Ž>©?#Ö\?Oô¾µ?¾­K*¾[ÛA?d‡¢?)ª®¾1…¾ïe@¾‘LO?RÛ¾á?âBù?&)â¿–<®?!v¾ˆhy¾—…7¾rÉJ¾uª?%9Ï?ܽ>Óðྫྷ?þž·ý¼?à±³¾¿Œü½Âp?੾,d?B h<€–¾yn¾Gð?CM ¾,xa¾›µ¸= ²Ô?Nƒ‡?K®ì=®ÀZ¾)Ñ“?°¼Ë¾` ¾K±³?>Âþ¾{ȧ?‚ce?4Êz¿žÈˆ¾¢ÀwD?&¾‘函ðD¬?hæš¾q¼¥¿˜‡~?78Ç?ac†¾y\^¾.E8¿›]$?MŒj?A0¯¿§;¦R¾ ñ¾¿©dê¿–ý?a˜@BþŠ?&³9?S‡¬¾¨˜—¾LZ½øv¾2Þ¾rä¾<¤'? .¿›¦^¾bȪ?F‰¿Ÿ,ª?:Oœ?OP!?3q‡¾¤†¢¾‘þ@?>•Ë?Cº½¨=ú¿§3®¾‰$ ¿¦W¾<î¿ú?-×o¾‡/¿·¥j?Eá±?LŽ ¿»…¾­+¾•Uß¿úK¾wÊN¾¿è?;ƾ©Gu¾Ç¾¹ž—?%ʾ¸¨¾??×?6&Ò¾® ò¿‹ m¾“ëî¾`Põ¾§v`¾GãÞ¾Ôë,? žè?mè?.»®?⾂O¾y¾?!ì?=¶ô¼²Ê0À¾„o࿤32?U%$¾²?%Ϲ?#©¾Ì¤Þ¾ÉÞ?ãú¾ÿ0?:·ˆ?+†¾´xú¾Éû¾:ó¾Â§©¾l!R¿¬Ú?><¾œú?à—”?KÜå?S¾šÔ?÷¿—Ñ]?&ãý¾¢0;¾H\¾”½%?:r–?@0?Pw?2Çï?ØÝK?¨°?IÁ~?†¾1"¥¾µXj¾ž»?'© ¿¦…¿—x6?¢$¾ÒZj?*=?7Ïܾ¡¾×c]>Èñò¾(?(r?]Ê¿‡N6¿‡,š½å˜¿‰i©?WèÕ½í/ª¿ŽŠ\?Y¦O?\+2½¸ÐÄ?<‰Ž¾fLL?L{ ¾‘ðº?3d¾ƒ:<¼ê?l'p¾—g¸?Ós¿ªŠ?CñÕ?9–@?@_:¿£"³?3®d?Bb¾ƒf”¿‹Åú?E:U¾8-À¿—‘Û?Ka¾Tä?"„$¾¢˜t¾%3¾H±†?Q7R¾¹?8šî¾fë̾@­ ?>(\?C[ê¾9Õ½Ž¡4¾y€T¾ŒiÔ¾itž¿—ˆJ¿’E¾2 ¾yÔº?/Nº¾aÜ”?A¹¾•,?61†¾¹ÖÕ¾¶]?QóZ¾oãZ½š;òÀ#j?4z2¿³0Z¿†0£¿ŽÏ?Aܺ¾–òô?Q–BTR—BÊBŸ—MB¬ ¼B5j@àr¿?1g¾œÍ†?1gû¾²à)¾ ÿ„?,| ?‘õ¾ašh?=`Ò¾܈¿”~¾œ¸/¾:pÃ?Ŷ¾§d#¾ŠQú¾‰„Š?]J‘¾5Á^¾¦±ð?Ý!?‘Ð?éP¾ô?@¾;€? ØÀ$‘T?‚¾-§¾¾¡æÓ¿£ð?µ?<:¾±Ÿ\?â1À¾¥ON¾‚­È?ñýŠ?.1Ä? m‹¾¼¾ªáD¾” 1¾pœ¾—à¾ÚA??"Ó°¿™°¯¾–L¾Òf¾ƒìÁ¾¥ö¾²â?&OH¾«Iñ¾Ž'õ¿Š¬j?L:‰¾!èB¾·ñ?æ*?L×?=ˆO¾Îüc¾sÆž¾Äù¦¾¶OI¿£‚y¿^{°¾ª¾ágð¾wbš>ýj÷¾àQœ?7h?ßÂÂ?)rõ¾òZ¾½%¾/õ? —Ì?=*É? 92?@ø¬¾àü¾p1Z¾_Ù­¾1¾d¾˜|JÀÊ}¾@Ì¿¤ø@?Yxø?)Üà¿tŽ¿°ÏȾ†í>t x¾ß°?3ƒj¾¹@?0o]?Ñê.¾„Ê?51æ?$ÙH¿  ¨¿œf½?ú?)vN¾ž²n?R¸?Ôfƒ¿’Øj??€—¾Øj¾ Uþ?P¼?3Ð?+…æÀ‰¾¾àľhdʾ„áò½±Ê?TsÊ?vˆ½Úû2¾^tü?o.þ¾ Žƒ?mj$¾`ÎÀ?iq°½¨Ã½ÃŽô¾k‚ ?Lˆ¬?Høƒ¿„è¾R-)¿ˆ£2¾!HŠ?K…†¾_ký>¿ô¿–[Í>©-:?)d’¿z?Ѥ¿}õ£?VŸB?8[¿•Zô¾Ê¾­å¾q›2¾/+™¾¥Ñ¾ßžÛ¾­^Ý¿’(潪I6¿‰©?è–û½ì`˜?-¿Šæ¾Z-™¿}@¾5з¾?÷‚?4-q½ÒR¾5=X¾V°]?X„¿”Äã¾X“„?/—ˆ¾]U|¾qܬ¾4`¿¬½°È ¾cÝ ?"¢-?/Þ>?%2Ž¿˜ƒ=!Ÿ >×"ïA"(âAŽBPAú ”?c5?8ÐR¾CϾjœ¾¨½ÔÀΰ?3tŒ¿—_Ó¿¢øÃ¿“$Ò?Yvf¾s·¿¡,?/ó¾Z1¢¾›ØA¾:`ð?I-ʾ)/?.Å)?28Z¾±jY>®ðj?:;¯?-¢¤¾¼‘ö?,(˜?#Éa¾­%ï¿”Mš½¨œJ¾ f1¾‘à½?kY¿¨Rž†WD¾! a¾¯ÎI¿¤yN½šN¾‹å¿£ ø¾NE¾²Ü¾`·º@‚°Ç?"¶o?D†~?+ò辯@¯¾rð?%;J¾­8Õ? –È?ôP:¾–»¤¾šãÔ?غF¾¡˜¿¢¶ ¾¤e¿—2P?×I§¾¦ÊÃ?ç“Í?b¾l˜Ð¾¯§º¿œ]ž¾é ¿PŠ¿›„ó¿Œm?¾„Ù­?OʾÙY)>ù²¾}Sæ¾­¼(?7ÖÒ?Ë œ¾bؾcæÚ¾›p€¾VǾŒÒ쾚㺿¦¿²¾óÌ?Ạ¾Xiz?ÜŒÖ?`h¾ É˾ƒ@;ÀK?çÊ›¾˜0-¿¨ç ¾L—_?ßõ«¿¬€Ç?I§î?àGо’1)?,?BŒ¾TÜx¾O¤Àö¼º??Pé?hÕ?¾3Ç“¾Gzö¾Z¨«?WûD¾7PÓ¾ 9B¡Ë`?ŒÊȾ™A ?c‘ ?DªÌ¿‘²Ë?î#k½y­Ä¿¦VM?Mâξ«X&¼£‰ÐÀJui¾¢Ð¾?.1h?ñf?C·Š? X?hÎ?>¾F¾·¢ó¾\ãG¿ ?V `¾Åƒr?!È`¿ˆéí¾7hR¾¬*÷>"_D¾€@Ͼ4xì?'Ñ ¾™ V?.3&¾b2î¾5ž5¾ ݾ?çý¾p Æ¿´«¿—Zñ½ä`Ü?*§¢?8Å×¾¥é¿ª?µ?(®¾„ù¾?>Yµ?è„?5Œ?NTÀ?;hw¾i‰ß¾WI¾ŒKо|>Ò?HØ?ÜJ®3?ìÑ£?0„©¾tN¿˜ì¾½3'?)¨?; ¿«~!?×о(3î?àP¾'Ïèú¾¨ž"?AÆ@¾¢H’>í7t?&?¢?*­T¾¨­Ë¾×[™À ÚY¾Øls?8'Ú?V­l¾’’y?'l¾/Aq?°?Ûp¾¯Ó?'±Ö?å£P¿˜,½¿œrM¿™T?¥0¿¡Q㿞M?ådF?¾±¾¡l™?„r¾CL?2£ê¾O!þ¾ ŸS?¿°¦c¾Š¼÷¾¿3;?!—n¾u(¾Äý·¿¢“®¿™¸?H ;¿y >4£D?HÀf?a{?M“§?=¤½L ´¾ %?'îˆ?¢?Z¬Î?6¢À?kn¼?C<†¾_¾Òq¾EÓµ½ Áº?*Ç,?Øs²>qð¾ªAÀuy?)† ½Aï?瑾ˆ4„?Eó¾ :¾Bòì?A{1??Ú½?8¾WÇÍ?÷’½?R$¨¾^Øç¾0Ƚ?¶¾PÖ¾…³¾•™ ?Vñ¾oоÐû¾¼-?p®º?JE×¾4—4¿£Ñâ?UòÀ¾Äǽ^”¾’%齲섾\öܽÛÞ$¾™!Ð?1Ë¢¾A‚ë?ꌻ¾9+ª?ëé¾0f”¿¨Ç𾘦\?~H,?È ¿ƒ[¾ûÔu?TL¾`ï¿‹Px¾¿Ë?âMü?VÙð?Cm‚?&?¶½×t’?ô¸²?/fÂ? úL?&,„¾¿²?5€Ô¾£¦?ëj?Dõ?9¤?sH?ð¤à?F2?8¾»8?.€.?0g“?A±¬¾6i‘¾„=§¾Ø?ٰ𾇩ˆ¿–놾.E_¿J;¥án¾~ ­?%Þ¾¾{ܾ´ Y¿’³ø¾”9N¾5R(¾`æú?mf>àÏy?C/t?ÏXŠ?3…d¾5#¾Z¤®¾¼÷6@8Òõ?ÙÿŠ?Q71?߯”@œh@-@À»~?äÿ?Ú'3¿ð&? ×?I}R?S ÜB……¹B‡äw?å•»?Í7à?7¬á¾D—`¿’ªô?A‹F¾lÇ?Qy¨¾Š?éÚ¾ÕØT?2ú¿§‘7¿2ì¾PÈÖ?;Œ?A›²¾¨ü]?`:¿—œd?ñ8À?+¼¾9ó¿¥-¿?A‘Ó?(‘¾?Aɾ¥[_¾}‘%?ïIx?ÉÄÀE$¾’ny¿œ _?"⎽0?&¸“?ñš¿‹Ý?7ä%½ó Ô¾5׸? ¾¿šåà?ÞÒZ?I‰d>«ý†?.¿¤z¶¾™ >ÊÊ3¾ƒÑ(¾Ã𮿛¢?!+B¾Ž¨e¾¦e¾rBÞ¾ }¾¢¿Â?!ž-?@24?Þbl½“Tè?<r??äÁ¾^¾N |¾rûÉ?\!º?óÛJ¾“1 ¾ ͈½}?]:¾qÀ?QA#?9 :¾u/Â?=æl?/_?;–ο”ïî½÷ó~½¹Âª?K®Ö¾<>;¿{f?mko¿‰l¾OGÀCú¾iüÿ¾R3æ½ß)à?Mžª¾pëé?Q.š¾ƒâ€?Tß7¾‡ax¾kË0¿Š¢ç¿—‡¿˜|?JŽ?Kûx¾y®à?;ÀV¾¯Ý?å´—¾I¼^¾R{j¿’•Q¾f=“¿£å<¾‰ˆ>…Y?‘Ò¿‚^¾¸?34?3F1¾È¹@?Ïpä¾@¾77P¿™®.?.Ïð¾–à?SEÕ?Iÿ˜C¾F+¨¾ššZ¾7k¾F%?Ö ¾p#ž¿°úã¾½,¾¯Œ?´A?D ¾+é쉿¡6¾uCº¾‘)1¾ˆf8¾¸6¾­§w?ÝÚ ¾·ýྔ\¾U$¿–Ô¾†d¦¾ª ©¿”!? À¾Ç‘?'þæ¾æ¢ ¾As¾3›¾^êT?,¿žPF¾Ð)t?äé@‚f @àj•A–´ìB†B¤BèÜCû¯C1À'B­ßB+·~?"¯‚?S…оô±@Ýj+B­Ý|?í7×?Óœ¿¤³(>û̾¾Ü³W¾à(x¾kØ?- `×?NN¾½HÔ½Õ’¾±€a?T ò¾Ñ˜?Yn¾×b>о»R¾•9?N‡>{,H? û@„Èr¾€ï†¾›g¾Ê¿¡?f?ÓËʾ¹û?+‡¾Œ¶-¾v L¿¾9j¾6‘-¾FKš¿ ‚Å?7KÆ¿£“]¿·?‘?5x¿Û˜?!~E?7åî?°Î¾±æˆ?4Ku¾ƒž°?3ž†?!Y^¿—hî¾rg6¿Á°O?èÅn? §¾•H¾K+?+‚H¾½‚e¿¢—(¾d‹Ê½#R¿¬¬l¾¤tÂ>þB#¾>%·¿‹{f¾z¾KB¾>翊˜Õ½Ù÷v¾;Ãõ½ðJ"?ã.?]L¾†#»¾Zˆ?ôsÝ?g ê¾Ù½ª°¬¿IÏ>¥gT?B&À¿”e÷¿—y¾'ed¿‹b¾Z”ؾÉ⨾a¾N翈ûb¾€’ì?‡ø¼ªÈ`¿—Ÿq?Þ]U¿†è¾Oµ?âot¾ )8?Xx&¾sí?F^ÿ?Q}ª?')©?Þk¾ž#Í¿ž6A?R¡µ?Ü0@@ž£ÊAßnA<×È@Ùz{?çM? Ⱦ¾ý³¾ÛmÕ¾diè¾—<+?=˜Àæ»?>°ô¾–(v?7ii?&ˆ?AŒ$¾¿Ø®¾€Õ†?2ô@Cä?š²¾¹@ù?B ?èåE¾µ·À—¡¾!ù?=Ȱ¾°L»¾K ¿¢·±¾MMd¿©e?+|¿¢ÂN?-pì¾|ú^?Ñ«¾aSf¾šÌ ? H?¿šM¢?âµ? À¾Uý>?] ¿µÑ?)Î?[ÖU?UÑø?Ù‹‘¿£iB¾¬@¾N±­¿£ö?b‡¾®|¾§B(¾—l¤¾šX¿—$D>„ÊŠ¾å¨¦¿£â­?Qdn¾ˆ®Ò¾S¸È?(¾…/??8?â¨V¾§Ìƒ¿”Â?S‹?‡äû¾©V¿Ž’?¾’pÒ?h·H¿uò8¿¤²„?Gä ¿Žÿ©?êݰ¿…Á¾cr½¢$r¾o2ú¾+e̾£÷ó½: Œ?86D?T_†¿ì¯¾sé4½·!Š¿†Ôü?àŒ?dA‘¿’Pp?Gpö¾OS ¾1Á¾iUÉ?â¾/À áá?k `¾~1+?E¬È¾wEg½ôп ºÔ¿˜2»¾Gg¾¿ì¾­gؾHC¾_¾61¾ŽÉÌ¿Ž˜R?4–†?eø@¾ª|$?ç ?>âŽL½7Eà?!§É?"Ú/?Vu,?ä)—¾7k»½Þ¥Ü¿¡æ7¾EóY¾± ?kØÞ¿“ ½§„?9¥¾Mÿ ¿§¡W¾_“P?K‡Z¿…Ï6¾*Hɾ«og¿º’¾pÀ ±€¿Ÿ^Î?/s¾VÐN?7‰ ?@jB?©|?N ~>×ö|Àu/¾¶í‡Àj¾£×?cþ¾ZPY¾¨þº¤?e¹r?.Üþ?5v ?낾y¾EŒû¾Fði¾œzv¿?¾T &?-²Î??c§?*’?&.?ìøo¿ <Õ?&ßš?›L¾Èf? OŸ½ëe~?%É«?(E ??“¶$?<*??pƾµ{?÷1¾¯¤2?Kn¾¤Ë>?G=?is?óár¾)‚¾hj?9¿•9¬¾» "?24?G¾z÷|?1N|¾’ß`¾…,?Wô¤?Â&>á7Ø»¸½T 8?mu?K›L?F«¾LŠ6?rN¿žúê¾¾…©?êÔg½€82?G°ß¾Xp[½ÊØ0½|¾S#¾PÙ¾5ËÓ¾R?> „?6¾ËX¿˜v¾¿• <=¤°?mê\¾ 1¢¿•9^¾¥¥¥¿‘|î?dHܾ\ P½èP8?CH¾²7Ç?î¯è½ï:о¾€-½½ ²¾„Œ¿“8̾N¸²¾#ñL?·(è¾hݾgl×¾‡½Á?ç¾±3\¾!¬¦¾ž ÷¿ˆ2k¾Q™?IÃ??Ѷª?-çT?âì?SÓ?ôz¨?äg¾9Uƾ@"“¿™ÚP?1(¿ŸFM¾ùè?Û À?N‰ì¾]QŒÀÛ™?AǾ¦ ⾯ƾu玿‹M&>f ?/œE¾xEf?3áy¾£Æø¾›·˜¾†°Õ¿“¬¬¾Ð’?0Kj¾Æ‹?ûÚ >æ2;šð¾´gÑ?I®ý¿˜‘c? ^¾ŽNw?HËð¾‘75?5ý¾d,¾kpÌ?,gâ¾K¾?2ñB¾ŠÂœ¾â wÀ °.¿¤z ?Rþ?æ´‚? P*?,J ?èÎÊ?%/?Nhv? ì\¾‘_ü?IóO¿Šã?4åi¾‡§b¾í§¿§‰?#Éô¾ƒ¾Û p>â`™?MÁ?3¿t¾¶Ž¢¿¤E2¾*ÄT¾î?cÒP?$˜½ä¿Ÿ>X?ÐÿB?*‡¿ŒT? Q½¾ƒ/¾Î·Š¾†÷x¾´ç?UªÌ?Sd6?=v¾ºZ{¾Rƒª?>äJ?]°Ð¾­¬‘¾ »b¾Qˆ®½Ý®¤? {r¾¥Ú?"lÀ¿¾&ú?*"L?!À'¾‡¾£—ã?ñÇã?8 ¦?D̾£9.¾´¬Ø?%àb?ÍH¾¯Â‡?@ 8¾ä¬‰¾Éç¾c³ƒ¾š0(¿­Í³¾Ldf¾¥Åf?%&·¾4xý¿œ!,¿¦0¾A);?)Ô½hC¾(:û¿‘3?[”4?ñBV¾£%½ñ߈?}U¿o$¥¿ Ö?ú7M¾<ôr¾¢Ñz¾ÖÔ½òv.¿í¼¾èƾvëq¾uøH¾Ž¶«¾š>+¾‡?DUœ?QtV½“?ê?Yó€¾LÒ»¾®(?D?VŽÒ¾'ðb¾eåö?9Ar¾lx?CdK?Eµ½ü’?G“E¿—¡D?!þC½6/À¾$­²?Q3¿ž5/?b;G¾5õæ?Uî*?6F޽í΂?ìàØ¿‘Ïž>¼ïÒ¾œþ_‰'¾Anâ?8Y¾¾tÙh?8½L¿ŒT羫¸`?î¾j¾XÈ?eK¾r‰“¾2?k;&?B&o¾ ” >qn??,¿“¤¹¾…õš½Ìl‚?kÐù?´ƒ ¿—ðÄ¿›ÛO?çÈ׿Ÿ_8?Ò¼?2@t¾xQš¾L|?"O𿓤ê?'°1¾I<¾!…2¾-ã`¾¬þȾ#6ü?HÎÈ?;|?<?l¾—꽿˜Ù÷¾*z¾³c?R¹ ¿‘ ¾Onã?49f¾™KÄ?0øþ?6÷à?î=3¾²T¾†d¾Eùƒ¾?\G¿•@d?'9|?é¥?ê·/¾Y?Ýn4@5M‰¾2·?M|¿˜nI?µ~?9ŽZ¾7‰Æ¾Ì¸ ?//N?QÇ¿ ø*¿¢2å¾°Àø?1e¾}­p?70~¾ÀÀ¾ˆq¿ª5°¾–ôÍ?:ľ¤´b¾¥ö…¾#—®¾l.'¾6IÔ?6¢?ý3ª?à2®?;bø¾™Å˜¾„1¤?$I+?A?È7õ¿œ(e¾Ú’«¾¬?¿ß¶¿!?´î¾g<¿©T¾„O_?a§¹?*D´¾‰šî?5n?Ý€¾ŒLr?8ªv¾VʾÀë´¾Ôï€ÀÚâ¾½l?Øã?:Úk¾›ù^¿šF ?2–_¾J‡$¾tŒ¦¾r±r¿›ÊÖ¾Ÿ…„?5‘ù?0 œ¾»qÚ?Cô›¾ŽÒS?.,×¾³F`?#?=Dè¾ç“}?!g&¾ÂÂ>ñÞÞ¿„>?&­ƒ¾•Ä‚¾.+½+оŠw‚½èÑ?5ª×?îô?>?t?TZ?ÞFÝ?Fb.½ò„°¾0Âí¾US´¾Bƒ ?aÏ&¿Ÿ?=/n¿‡¸??üݾ{Oà?*Ð½Š L¾D½è¾„4%?\ ?ÖN€¿Gz?åÈ?kÒ¿ˆSῌìɾ‚°ò¾ó3?b³$¾QxT¿‘íy¿”n_¾ÍŸ:?G¼Àw.?:üe¾®ù2?8æ¿…$S¿œAè¾±+¿–¢j?Õ舾ÂS¾„lï?/>Œ?cmϾŽ`<¾|æ}¾¶•U¾Ú œ¾œÒ?Ht¾±Çö¾\Eê?ì¾ÃAè?b‘¿™å²?R'°?B˜¯?UrÞ?<í ¾|<3?]ÿ?ü>µH ?EJ¾²¿Î¾”²î?(ôë¾â"S?hT?)I¾X¥þ?»äþ¾YÅ ¿ç?Ô|ò? '¢¾%[¾‘ô.¾_¿­ëú¾gL¾âÿ¼?(ìx?B]ٿпšXd¾ ÎI¾•ÝW¾\xD¾¬zd¾>Z~¾Á3¿¢‹ì?S«Ä¾³ÖL¾ÀÞx¾s4¸? ÁX?;b¾Üö?n&¾oj:¾bQ,?æ€>??b>?*Yª¾mï¾~”@6B¥@7œ&¾ ->t?(Rå¾Îõý?M2d¾Ëðñ?V1ˆ¿žB»¿Ž•Ù¾Hz6¿›4 ? üî¾’:0¾WñK¿•×§¿œ54¾%ö?4ž¾V)0?ñ†¾…¿“M?+¶R¾e=Ö¿²ÑÊ?Y°«¾¼”~¾o¶?²?J|j¿›Ù,¾5sç?/|Ò?íüf>ú+¿š°¬¾8ÒN¾‹E#¿¤Ãœ?%Uª¿—£:?Ïè?)ˆ?<œ×?Aè?>gÚ¿¨ÖÍ?+@ ¾´uN¿¡éÖ¾Â^¾‘çØ?Z×?ã³¿Ž€ö?=:¢¿¥+X?"u?ð?=ö¾Òí?f¤Ô¾öJ¾e%Ø¿’Çã?òU¿Žä~?[Öl? Ⱦ6ÜÒ¾5á ¾2ß¿sI??+@?&Ã/½»6Ò?ö²ª¾m¢?“ME¾:q–¾*Žˆ¾>‹#?Ù­É?H‘T¾]«­¾É@ù? B>ýF˾DoH?Wþ¾ZöW¾xÔª½j*¾{4޾^›?)z?&{„¾(ÇÄ?¨¿{Št¾Šßº?y2ξ”°>¾Dr?1©¬¿‚É$?꨾MÖÊ?Ü4N¾n¶¾ƒRK¾ƒÏQ?KX ¾iÔоEµ«¿¾Ûq¾ìÛ?4Ë?Oiè?KÒ ?*ëÀ ¾ƒd*>ü6?7°õ¾‰Œª¾Â4??°Î?/ô½ö,>½ð‚¿œ{&¾‹$K?».¾.Õ¢?Ü€¥¾cМ¾q ¾©ÓÁ¾àl5¾r‚V?9\1¾ª ­¾d\¾a#®?߈?Ïc?ÖŽ¾ž,£¾p!½—¾Kj¿”ðú?'ºl¾ê æ?!Õl¾;Lо¸mc?á¾s¨Ž¾¼A†¿¯K?ž|¿–à ¿£|Ë?69¿žÎ>¾dbŸ¿™L.?&¾®O.¾—3>?=þf¿¦i£?Jo¬?Nyä?äªt?SÇ~CKí§C%ÁA@;JÚ?_±Ü?Ü‚¾ Ø?N¨è¾^Aú?èù¾›1¾p7š¾°ÿ°?)—y?<3? ,º¾‚ݽ?BB­?D v¾¬6Ù¿ºð¾"S?(~c¾¡ p¾¡{?! T?@z¾½Ê?ð½¾µ+€¾T_P¾Ž’¿¥Ìë?××r¿M‹ ¾Õu¾p7—­?E#Ä?SVÊ>Ä‹M¾~õ·½îóŠ?î ½Åf`¿•1ê?1BO¿‡½Ñ?4û®¾=GN¾Ã`a¾X”Þ¾¶2<½ØÎò?L޾^©N¿‡æÚ¾X‡â¿šén¾ Ë??Îv?j‚?T.?;˜A¾# V?+o½™[À¿Ä?IC[¾w~¿Ÿë?íO¿Š2Ê?HMÂ?M_?(¿•f¦¾#瑾¶Šˆ>ðJ¥¿9\?µH¿¥§P?W£T¿›çŠ¿R±¬?L|ËlË?H~v?$^Œ¿ŠWÁ?6)ß?à~¾Žd’½Ö]¾®i¡¾´ü¿¤îµ¾Û‚¾Î?Q"¾’!¾4Ï©?åϾ›+`¾rÈú?Z‘è?:ÎT¾zFH¾+˜¥¿¢¥¸¾ŒÆd¾)­A¾l\Ï??Xé?+J¿¬0é¾QÝ>S{|¾déÿ¾q Å?#ƒ”@¢1V¾Tö?Aù?qN?0á¬>æÜ$¿•Ë?%aÔ?IØ€¾œ"J?/ï.?:ØR¿^á¾n¨?7±ƒ¾©æc½Ã"ö¾£Z§?5y??a²¾Ì¢¾¾åʤ¾é0?8—†¾‘µ?-æ”?.oþ¿§ Ì?0MR?lî?7oz?'Wľ81¾Üê3BPVB ba@;.x¾UØ5?°{@0þ?A ì?Düǘ?0¼ž?7©??Ò\¾¹Œ¾«9ä?àÈ,¾¨sH¾–澪à?oY¾P1…¾¤X¾%}å?%‰”?,ƒâ?è?,¾Z¾ê¶ˆ¿•År?#¨?a“X?ºܾÜ1? ìľ†É`¿ó*¾E&¿­ÂH?ob?¢?ÆÈ™¾Ï[?â}í¾¯´¾,1ú¾”Ù°¾/m¾¹h¾O©¾À`j?ß>—?Ïdc¿ª}Ä?èí^?èÜ?&מ¿+¿m=p¿'³ô?>èÆ¾E`:¾mdJ?bv¼¿t0ä?9´û¿›v¾%B\?6¥¾lÚ?,ìý?S;?-. ?^2¾ŒuH¿’·f¾JQü?]n¨¿„î$?ö˜¾tx<¾ˆÇ•¾À5L¿†$«?W©[>dü? b?/¨z¾¡µÔ?Q¾3 ?d&C¾G.ß?A2¦¾làl¾MÖ¾×ñ!¾£Ðž¾Lãr¿š/´¿–cƒ?Q]Ë?:C̾=9?î¾$ø²½&l¿H?´¿’§ ?/G¾Ë¦?Hcö?µï?´?<É›¾J[¿‘Z¾)NG?H'?j#–?MT°?-€t¾®mX?L*8?T¥¾Xx"¾[t?¿¨Õ¸¾f+Ì?6À?åÙ¾DÛ?&»Š½É ?NôÖ¾?0÷â?4§„?$h[¾=¾i?=![¾3p•¾pÚ¾¸§±¾¶²Æ¾Ãáß??7€?'ùv¾;(N½Ð§X½½}ü?/aä½þiŒ¾4‡ó¾•Pô?ÚqÒ?,M`?/d•?EØK?GÊþ?,yÞ¾À*¾Ð×õ¾°9M@?¬)?-…v?J¤g¿¦Ïé?É?êØ¾¯÷?ßpi¾Îܾ¾Ñ­?<9¬?%½?8½ž¾_ýŒ¿¢Ž? yø¾¿÷¯?D—ò¾]ÆQ¿’W•¾“|U¾Ž‡æ?:¦n?6þmn¾¥n•>ø·¦¾•ç?9mE?NÂ}¾¤Þe¾íKo¾™º†?PþM?)” ¾"”î?F¾¦ïÜ¾× Í?%×·¾òR¾æ¾Å,?)[V¾ÓÐW¿Âþ¿ŠQ,½ýÃh¾s¿‡À™?›©¾–T¤¾dø'½Å¡?m?Bâ?N'@¾y¨?@“£?>W–?Sw¯¾yå.¾ …Y¾ë‡Ã?ÛÓú¾ 'ó?æQ?¾ù?7;ð?*ƾ}¢ê?OÑI¾…Š‚?æuh?1’¾zv?-&J?VĘ?õÀ¾p¾²'Ö?'ñξÕ9¾}Üç?v0¾{z@¾M ?-í&¾ªû?XÌ¿¡ò?J Â¾A濆@?,ÈÁ¾Yö?Ö´?CÔ­¿³™$?$«¿Æ5*¾*ݾ‚L¤¾EO¦?63¾0!?Lv€¿„™·?ž?4ì¢?1†¿ž0q?Åô?öïê½Ë÷ò?à\ó?$ˆF¾HÇ ¿¶–Ø¿»2?!˜b>Ñ#V?8SÒ¾?£à¾†9Á?Yê—?/s’?OF¨?Rü¾Yw¾???[oľ¬˜ô?ì'4¿¥ÜÊ?OÖ¾¾Þ–>¡GÂ?+÷Á?-wǾºåÙ?2Y澉Á9¾B…¾Ê‹>¾h|?;$¾}u¤¾›a.?)ü±¾W9R¾Lݦ¾’¯=?"zÙ?*n¾ˆÐ?%?å?H=ú¿¡Q¾b8¾¤¾«¥D¾»U?XÄf¾™‡D¿›Ø?3í¾¾Zþ<¾¥ K¾˜&H¾ÃØ?@ß辡y?ÚાŸ-¾'b¾|/?I:•?+©Š¿š£Œ¾•ÿŽ?AýX?!•£¾}O꾦rþœV/?,¥–>õ³>ëz?? V?Â/ ¾lÀçL¾\¤N¾˜*b>{+ܾ«µ¿â?5Óª¾3¢R?H)?J·/¾ ‚¿¤¨¾®qV?V/·¿Ÿ%¾ßù?YM4¾"ó?T×@?~“©?J;8?HǾgCC¾¾nœ?RÕö½ÐúX¾.c²¾9}Â??È=½­A²¾8 t?9x?ó÷ؾ{ø¾'8`?Dqý½Õ8Ž¿›# ?5쉾­ú¡¾£—¿’A4¾1\®¾Žþá¾|Ì“?èì¾Ì¿¾R{j¾¢ 5?R—.½é¸&¿£A¿Õ,¾]Ç¿’uã?à:?MV8?Dê¾^ƒ‰À ù¿¢d.?-ÉV?Šn¾fˆ?(rç¾Øµ¿™É²½þ!Z¾YØú?Â*¿Þˆ¾ž™EÀñ¸¾{v°?4PÔ?Fã¾BM²?/nM?ãÀ:¾’l?X V¾¦Y3¾*TL?‹ ¾’`?!kÆ?뤾Àׯ¾†W¾nÔø¾W넾¶*?9x$?$aô?#±¾tÿ½¨A?yY¾mG†¾Žh‘?D$1¾xlâ?dU´?Iœ? .è?Êšò?Ö.׾׸.¿•モÌÖ¾¦þn¾’,?Ù7?0ò?QÚž¿‹Ï?Jþ®¾ôÜ#¾¼ÓÀ?E°ò¾G8?¾¡f+¾¸?@¾Ôyª?K²¾†ŠÆ?°ç¿K¿¾Â/ö?OŠŽ¾‹j†¿ÅÚ«?70’¾ßõ„¿ª«ò¾­‹?¦¿©¨$>ýÄ>ðë¾––?˾·Þ`=Ô]’?5¨Î¾°3¾§†+?#÷Î>È™¾?SG ¾£$õ¿‹êÛ?D¬Û?<<¾«cç?;NK?ÛÜ£¿˜/¡?'R.¾1€ >÷i¾®ü[?9LI¾Q‰è¾G?Ešj¾¦º¾µ¿Ÿâú½—rÖ6²?âŠu¿¬J‹?H|’¾‡Fؾ®=¦¾]ùÀ¾–¡œ¾k^¾©©ÿ¿žTÏ¿Š¿‘ÐÏ?U;?*X½ý*Î?J޽?TR¼¾W|?Óõ?Lö-;©L ¾PS1?Kr‘¼ûœx?0ÎS¾-e¾) C¾P½û^ ¿ ~¾“² ¾_0]¾kì{? Ö)¿‡ôV¾’ G?>DA?6Ê}¿jW4?CÈ˾¢2þ¿•4 ½Û>’¾#†§?é×׾͔c¾˜OO?PT¾›\¾ÁѤ¿•ͨ?F*·¾J”$¾Oôƾ‡+¾‡b§?-[~?‚ºœ¾–p ¿ìT¾”[?öо¤ö¾?Ë–¾hº¾³Œo¾€Ì?Ö+Ê¿Æ?:ºí¾·Õ±¾‰Û ¿œ "¾"̾¦Æ?NáH?L²Ü¾G¿¥v½¾ƒ¡í¾uŒ†¾œ-(¾‰~V?3¯Ü?.¶¾0/Ï¿¦Œ¾– L¾;€¿¦)ä?^b??+X¾­iü?=âQ¿‚Ÿ1?þ¾`à¿´Æú¿W¿&?êýǾ E¾É?ÜК¾y!ª¾oWP½nó,¾ÂQݾ}+ü¾•œ˜½àj¸>äÍ?KEè?Ã8¾çV?0?J¡¾½ì÷?Q!¾½‚ˆ?èX¿çø¿’)œ?é‰;¾œUýÀ#…?CBR¿¡»‰¾ZÏz?&Šž¾l^J?Ú“g?Kg"¿¢Pš?Ì?&6?@•>å½8?6jL¿¨à¾$ú¾Yr?C¹?,iÎ?8¾Ž?(¦D¿Ž4¿”&?,Uá?S­p¾ÄÒ?Pĸ¾=*¾º¿¦¯ì¾’@¾Ù8?%³?m¿û侕¹y¾‡s¾¢êˆ½¶ü2¾‰„æ¾g·?vÞ?/L´¿ŸmÁ?-å3¾µÎ ¾Vƒp¾Òí'¾‘;«¿—tî¾oÅ ¾)Ê?<t¾¨Y ?1A°?㿈ól¾ÄQÀ¾“í¾Ð*ÉÀa¾°#?=vô?.ŒL¿ž'å>à÷š¾ÈŒ¾ª–ñ¾š=è¾qí8?à§b¾šè ¾m½? e5¾èB¾§Þƒ¿±p¾¾½Us?P¾?=¤f¾Ñ_?Á¼F?ÒÔ¿¨é˜¾©d´¾Žä–¾ 2½«Çú½Ø(è¿¶]“½¤£”?NLK¾&Éz¾pd{½÷8Z½ð ?QÌ®¾³ôؽáÞx?=:.¾VD‰¾hVP¼© ¾šƒ4º„Ð?BåT?ã6?G,¾ZJ ¾žêº¾?øH?.µ ?i&п#1?9¿$¾’‚½?/о\ø`¾î²¾ºP5½üÄ>·ø¾©Á1?èo*¾Ë\?&?‹¾œ¾lÒŒ½…Ô\¾Ç H¾:d¨?Âç÷¿žŒ¨¾{ü(¾ˆÎ§¿®€¾‡š¿š}ö?E°,¾•Ýt¾C>¾@Wi?K¤£¾A&è¾YK?T±÷¿£—Ø?è3“¾]|½ªÌ ?ð¿–Jl?> €?a­Ü¾‹ô½Ýg°¾Y*V?:(?®À¾PÌŠ¾kiô¿ ÂM¾’¾Ê,A?3"¿¾#¾ÚÌ|¾‘“?'ã<¿Œ]þ½á/6?/¸Ô¾âš¾Ûa,¿¥¥ç¾Ç:4¾ýÉ&¾d£?# _?\-¹ÄE?LJ.?aæ¾ÊƼ¾ÙŽô?ôs?×f<¾‹y¾w 1¿ˆ08?7k†¾%¥ÀÖ?.ðú¾¬ò¿˜yB? ÒÀ?æ Í?&H?76辇Ãk¾³÷¸¾™Š,?RmM?)º”¾Bh?0ÿ‰¾hÍš?6iF?4$Ò¿œ?!T2¿Žz->þP¿« ¿?î^¾ý¡F?W‰’½Vp¾±t‚?Èà¿°û?;•f¾—P^?ÍU¾.õî>®9L?,ãÜ? OÖ¾n)q¾£œ¯?F8&¾ç×À¾}ÓܾÇö.?^A?tè?é>?=¾ŸyÚ? lî¾z¼æ?'𭾓¾ÚQg¾¿¸Ã?*{*>´´?E޾†¢ë¾É ?Ü¿µ´?rô¾Z-?tŠ?k9l>ŸM†¾<›B¿nãÜ?T:¬¾4ú©¾ªàt?ÔÌ?>øâ?TzV¾wy¿„ú.¾“i?Rå÷¾Xj¾¥Ë?É?Y?U¸¾]?E2:?X\p¾.ˆs½ó㬾‹`‰¿˜ Ø¾Ö¾2o ?=ÿ‰?04p?cñA-¾€ï?=ÀÛ¿A'?aò?W$?7a?ã "¾ºbýï|?:ÈP¾·ûÞ?8Þ¾I<\?@+?V޶?J†h½Ž¥ž?Ot¿£ *?4 Ö>æ=Ü?à&¿™ðy¾ ξҖ.¾·?9¿\?pî¾r€º½ÅÒ¾„´þ¾0DQ?De?Ú –¾e„9¾g-Š?OKö?ZTo¾§ô,?-5¼¾}5¾¢M?f”ؾéA¾‘gA?<ò?Wÿ?\¾O–¿¡ÄV¾²ªè?,köÀE÷¿¦Îs?(Œ¿²¿šÀ´¾Â®Û¾Õ®i¾Î0>??xÀ?)a¶¾`¨,¾¤8×?I컾vÞZ¾¬ z? à§¿’~Ÿ>ûk{¾Œ6?Qïë¾§Ož?3ʾ]Ól¿šÒB¾‡w¾©›j¾%ã“?r­¾Ë‹ ?B?.©!¾h—B? Š?Õ0?F²R?$Ế©¿§¾³­Ä?DÁõ¾¶Í¾ƒò*?,è?꿣ƿª×ð¾¯P”?>¾ @l ?ôþ¸úÑ?6¯š¾¯Vä?æ÷ZÀ0¾5‡?<&ß?–ZM¾[È"¾Ÿr”?üB¾¦Ø>üŸ¾ ÏÍ?3>?:þ¹¾Ê°Á¾Ÿ©?Í?*‰r¾Ÿ; ?=ÅÀ? L6¾,¡?6Ñf?0Ó‹¾ªaÿ¾«ï¾Z½s?N𣿣šq?ëéw>ÎäÌ?4½¼?F—ƒ¿‡¯€¾@öÕ¾M°Ù¾ö’½ð¿”¾Ï¿“£Õ¾ £à?O€?T¬¾Íl?iÞム•À¿–Ű?[*„¾‰M?\7?GèÀ¾VA?.v¾ƒÁ޾̓濗 à?H?C98¾eÏü½ó2¿•£é?ABU?O©J=x3ð¾ž`¾ŒA¾2Ì$¿‰_œ=ÖN˜¿“gP¾‚8(¾Y~Ö??4z?\žZ¾3?LË’?3¥¾£Öù¾ ˆ­¾I”¿±¾—Ì¿›¦¢?b¾;¸¾€©…?"x³?`´j¾q›Ž¾žÄ‰½õì¿Òl¾t5’?íR?Üe¾&´Š?·²?4²Ñ¾Eºn¾®"6½À8Œ¾–·;?à‹ ?>*¾¹¼š¾n~¾´µà?)#?HÁ?Büê?Jšë¿š"›¾–©=¾l›à¾«£„?SS'?W2<½®8Þ¾`1оÙ3¾¯¾sC¶?3«P¾ŒH ¿¦H?7ê¶¾©²Û¿ª Ã?5\8?éJ·À&©¿ ê’?,¶T¾Ž<Þ¾ðç?-$?K$J?Cá?á?ý¾8µ ?ëо¾¼¾yòz¾¦y?¢? »ÿ¾›xÕ?$¾6àç?FÔ¾O8ø¾¨'Û¿™Ð2¾`¢l?ôNi?3øl?U^_?IÞ@¾Ãá}?9?2Ë??s?!Tx?í:>¶¾æ?>Ö>ïà@?A8<¾T¾y—4?çÀ?2W¦¾‘#¬¾;¿ü?-¸?“ä?à?M‹¹¾±;ú½¦Îl¾gdn??Q˜¾Œx¿’ø¾Ñ€®¾Oо£¤¿™ˆš?'+N¿˜ìØ?á}¿ ú¾Dp¾ˆ!\?$?H b¾`ȾŸ%?Mx¾eèf?Ùã¾¢ú?¾Ž ¾§We?'r?!GÔ¾° ?3x޾¯¦’?Üç¿¡Dx¾ã[Œ¾¢W?$Ý¿•¥W¾R0~¾È Ž¿”Ž?!¦V?$›0¾Ú¾™æ¾wÃL¿™Ùù¿¢ˆ£¾uTv?ÚL²¿œþ*?JzI?( ?£F¾¦š·¿¢vP¿›^ˆ¿×NY¿™‹ª¿“S/?A‡0¾–c~?`sV¿z^<€b8>‡-ø?RO,¾5¯U?[XÛ¾›Ã¹?% ¹¾´û¾£Åî¾zÉ'½Þ§º¾°ô„¾/®.?ZI¦¾^оMC¿— Ü?>;g?kÈå??Ò?B›¾ž„Z¿¿É?B~Â?m‰Ø?èkÊ?XýC?ò±V½ë# ?Kõå¿‘µ¾uL~¾¡?4Á¾©Lh¿˜x¾C©Ž¾^¡Ù?_üì½ÆÃŽ¿†¹¾íƒ¾ ­??÷辡¾ö?¤?;UA¿’`˜?.áš¿›¦¯½ÜBl?Ö±?\þØ>ðí—?3aÚ¾:ª¿•ö’¾€tt¾³ëï¾ÊDľ_ľi²?5Y„¾Y¯?aêì¾‘Õ ?.ž?>‘0¾W7¾šgR¿”Ó`?µè¾n̾QŽq½ï7Š?(sî?JAÓ¾—´Ç?Eëb¾žËÄ?>’¾“Ež?J?Sj:?`rs?2¾#¿‘Õ¦¾õv“¿ P?<ö??W’?*¾fD¿ª›Ú¾G¯<¾ÎÀ{¾²cʾ¡º½÷dH?àò¢¿©z¾yF²¾Ã’ ?æ.p?Cÿ¢?LAe?G1í¾€pj?ÜÆÞ?;*x?ç7Å?# «¾Ÿ#™¾A ¾¦g?¾šïð?僾ÆD¾˜À?Ÿr¾ºüy?2)`¾‚´¾¦jÙ½ôˆR¾«UP¾-Cú¿œè¯¾¥õ[?-d¿+¾WÎܾFY¾¥"Æ?æùÓ¾“o;?ûœ ?1F¿Ž3Þ¾³f¿—ô¿–±‚?AÀ7?Æj??ëÿǾ9ãO?Cg¶?KS¾:Ö¾«˜#¾z õ¾Òܾ—b.? ‰¾·æ¾i½Áé ?::‚¿†˜V¾}ð˽ÓÌ?}Õ½™Â¾¨S@¿‹e]¾i¥¾?;âp¿•­¾Sÿ¿™N¾§èê½ÁJž?æÅæ?7× ?Q8ð?:ÔÔ?NÈ?]%£¾Xù?!¾C¿‚¨™?J¥Ô?çòß¿¥H ½ïû8?4ëö?'vä?õd?6gϾŠR¼¾ë½ê¾‚9Ú¿™G!¾•d‡¾I©¬¾tb¾Yp.¿•¶¾÷¢?2Àä¾T@>½ñæ?2„‚¾¸Ža?Jw¡?"A/¾xµ£¿Ÿ¤D¾UJ¾\—¨?Lp›¿›ÂŒ¾N%l¿ v¾]æj?'À?3쾆ðP¾…´À Ÿä?;(Õ? N¾¾ªZ¾’ÉM?!JÎ?ž*¿–¶ü¾‹Àľ­z¾ ¡¾¦ºK¾Ä.Ì¿‰²Œ¿¦Õľ `p¾´8×¾@ÈÆ¾JÅ?%<¦¾–Y??úÖ¾»ŸÂ?Z-?rH¾`꾑—B¿—=c?2 ç?(PŠ?¿Z?D×Ô¾oü?È †¾Ã¼)¾Iæ¿I×?dWx?Etk?%Q«?2¾Â´Û¾×P?Æä?äl?5£Ý¾›}ƾŽï=¾”]â?Jèk¾ÈâŒ?Ùˆ¿×L¾£…å?º˜?)}Œ?Å ?E"¾¢œ ¾T ž¾3Gü½ûù2?Ýu¾„GW¾:}?Eºü?Øh还æÌ¾¡°¨¾ƒ U?¨?=G“¾ÓÌ‹? V’?5R†?.èP¾¨P¦¾‹¥ >¤bXÀ yV¾aé?ö0þ?ˆ@? :@¿¶ER¾ºÂr¾Êe?BÒ¾ÉÆà¾Xwˆ¾ }7?+àÀ?ßí¾_÷>¾´×_?1"™¾În,¿‘̾;n¬?7æâ?-ù!¾W¡ª¾a,¾ëmð?*(?1¢¿ ­F¾aË"?*I±>Ƀ¾óÂʾ§¾Ã’/?! š¾ÚÂ?ãÞl?2c¾¥_Í?J¸¨?-ÖQ¾¿´ˆ?<± ?$×¾*¾Ô–¿{{š½®B„¿‹¬?3|-¿,4¿“ò¾9Ÿ1¿ — ?s'v¾˜Ü6½ñÙ–¾„Œ­?7Öá¾`ûM½üÒ¨?/œV?ZÂw¾†r¾{²W?C‹z¿†K½06Ø?Pæ¾0\¿Ž6ü?H¼°¾-¹]¾;Y²?T\?î:¾}k*À›?=H¾®r»¾E'?K«£¾0wü¿¢|0?<ñÀ42¿™ù¾“Õ=?SQ&?(3¾³o¾PQ¾™¡û¿”5ª¾0%ø¿˜á¾ ǘ?ÞÏÖ¿ŠÚÎ>Ñ.¾åP@¾×+¹¾x—¾„Ü9ÀÎS¾sÞÞ¾|ñ¿ƒëx?H‚¾MÇ0?Nst¾’õ¿¾ô;¾»…-?HÒY¾…5þ¾<É`¾.ÑU¾fRo? ³s¾…A!?3⊾CÎŠ?\Žè¾SRç?Gö~¾Ÿ9X?މ¾žb>žN~?9 À,ã?8p­¾È?2®s¾zÄã? W?Úìl¾|vP¾ X½?$Ö_?$v(>Åwð¾ßo¾…éw¾OíH¾ì›¯?Z]?v`¾šg%?(Ô?+Ys¾ˆ¯¾è¬„?\±ä?/\¾›wŽ?3”Ó?.™º¾6<8?×2?[_.¿£ld?6‘¬?îÞ?-ÇV¾†àß?_5ž?”.?3‰ú¾¦â(>çôð?Bå£?"×w¾Ó*¾^Ä¿–Iœ?Ej^?Znª?V[¿®8I¾ ¦r¿ŸŠo?[kß?*ö¾Vð¾¨u¾y?;|g¿ž(ž¨*¾f$ò¿©ã?/:徊ÎÖ¾”“¾?×낾‡„¾Æ@¿¾ù™?A! ¾¦>¿(îÖ¾V¿•ƒ=>ëyo@1k=¿¢wË?̧#¿•!C¿¸ ¸¾käþ¾¼`½?ÞS0¾–„¿™ºì?5eZ¿©å†>å2y?=™¾™¦'¾Oë|?Ö|Â? å~¾³[?=‡ ?>œ?¾dP?Û¼¾œ¬‘?3Oø¾ŒC?)Ø¿™ä5¿‘T¾‡H¾ÖdÕ¾¯?ë]?âx?)ñþ?.K›?+ÕÒ½ºØ˜¾‹õÖ¿†o¿§bÁ?.}¾zñǽÎÔ@?à*³½©ˆ ¾‹@#½ìµt?.'¤¿‰b¾qÅ=¾-Å?P'!?=l?O›»?R–¿ŽG¾½uh?:ì3½³ ¾£$O?8Æí?H Ã?ɶ(¾§9w¾Eý¿šê„¾âºè¾Á¶¿‹1d>ñ¸,¾ˆ?«~?shÂ>¾\§=?Ú?iþ”¾eO翤”"?@•?CI²¿Šjå¾”x¿šÉ¿ƒú—¾3ž¾O£?" Ò¾Op¾ ®¾À/¾º^¡¾…÷f?Toº¿”ŒS?÷¾nYо-é￘Œü?)b¾Šnü¾hr¿Q¾¨¥Â¿Š¡?V( ?$É?0ܺ¾ajA?]µï?VÜ¿ŽÊ¾€ÐD?5§?e0ʾX龚ȧ¾¼?*Þ?G•&¿©1¦?@ÚJ?9·T¾a=b¾9^ξk„¾ >L¾±ú?îÅ?;펾vP¿¡rì¾/ŒÀ¾Ôö¿¾mŽì?µÄ¾Ÿ¯F?R0`?ú4<¾¬€]?L¥m?âš¾Jéè¿šË ?0\¹?™‡¾i‘¿™ë¿™À:?ô̾†V˾?î¾·jÉ¿,ñ‚¾u´œ?4¼?3¾°k?:T¾‚W£¾‰®|?Hë?æPù¾•z‰œ¬?77®?? t¾b}%?*C?9¼?' ¾‡¢g¾„_¿õ¾ËT?0M¾¼l‘?= ܾ™ýs¿»€¾‡¥ì?D6Á?Jʾå6F¾Åd†¾BâV>öõã¾ýe¾ÑÅ»?*ßâ¾¢à(>·àT¾ðL¿™zõ¾†ãǾ–b²¿«2>¶H¾¿ïu?Hvx¾µÇ3?ä§?%]h¾!v®?'Yè¾…<‡?!#n? îþ?u¦¾ÉÔ㾃Ž`?15Ã?$˜1¾©®¾ÑǾ¦¦¿4ê?:žL?$ÝѾ˜’m?Ûó½ ˆ°¾#Ø^¾Jp?„²yÀ6R?c‹£¿ˆTß¾>wy¿„Ô¬;ç ¿7‡½­Œb½µf¾Hä¾1üB¾’vú¾!㘾Þ¿”8¿Œ²â?Uã¾8W?X‰·¿˜D?D²¾i&@¾H2ž?1.м,d ?5ÛŒ¿“T*¾¿]Í?¡?bR?zo¢¾…`¾lýV?RE‘¾b©Ï¿›ëp¾Yjƾ†']¾z&V¿¬ù÷½Šñº¾¬¾€#¾¾t¼½Ý}ƾBƒ_¾8šØ¿¸íJ½šf ¾hè?-´…?DT_@(Oö>ßÔ¾Ø?F0½Õ1?[{Þ¾WѲ?EBÛ¾(T]?;Ú’?S냿¡©Ž?æbW?`§X½ý…8¾³T¾‘L4¾níÆ¾­º•¿’k¾K:®¾ ÷¾žµ;?_ľۛ¾xô¼¿’b¾‚Ìg? ÐŒ? ?ô¿”ßE??ÈC¾‘Bþ¾¶?$Vp¿•lV?1ó¾Ne½¾*ä̾{‘„?N>>ÃÙ)?Ø/V?Mp¿©¢^?8'½A@ÚBclŠ?S¾]ko?1«i¾Ë}õ¾°7ƾv]¿£ŸÚ?Ñ@¾ˆ_›¿›Þ?G>(?#ëÆ?7ÅË¿ˆ–¾•ˆ?1¾Y?-:?%ä¾£¬2¾Hô ?Ì»Œ¿žôü¾ê— ¾f×?Ô¿¢|¾`8?7 ?<ÜD¾“¹ë¾ŠÍìåI?Øl"?l;¿ ¢?Õá?èÓÕ¾¶Ú? ,̾¥Ág¾¯Z¾¡lt¾‘ú|¿—kö?"=ß?1‘?KÙ3?Å%?1X˜¾!ô(¾yKA¾—ì"¾<Ï"¾¹ã¿›:¾!Ü­¾/ã?2›²?G¾¹ã"?c,|?<ú?ìlQ? è¿Ùtü¾–g¾bZ ¾ÉôÆ?@†4¾”<.¿”׿ŸÓ?öª½?Çà˜¾pÌÊ¿ ¯L¾Ç¥‰?:q¾†ìð¾‡ã„¾ºPõ?WÙ¾×|p?1_c¾št¾¯5ˆ¾‘ã‹?%‹¼¿ˆ!Z?;:Î?HÜ]¾¦4B½éË?&*X?[*Y?2y\¿‹»S¾ Z¿<Ï?(pl¿z”g?ç Œ¾?¾¯?0Y/¾ñY?O2½¿Ž%M¿–Ë^¾}ÕI½ûöz½ø,¾×, ?Ò?<ŠÔ?^œ^¿‘Ö‹¼ØY¾šÀˆ¿”J̾zËÒ?êc¾x‘å?%&¾iøà?'à>¾‘w½pÚ|¾Ü#U¾y‘ƾ±€-¿˜ä¡¿§Îá?0D¾| ’¾0–Æ¿u}¿äZ?5ÕO¾5®‡¾2À`u¾¼ ¾> ä?<àa¾Uu,¾1.ª?I3#¾¤P¿™þ.?7^à?L±€¾)µÏ?X¶[=­7ؾbD¿œ x¾B^è?9À­?a1p??™?=þÙ¾sãý?–5@¾)$¾V,|?E°¿­·“¾% š>ÂXf?À¾)0£¾›:Ö?/sü¿‘³)¾¨0ú¾JœÄ¿¡‘¾YÿT¾—%é?N'?"þè¾Åô‡? ý{¿¡D˜?J7¿¢v«?1B?@æà¾ò¯¾“9V@C¾@h¾BZV¾s[Ç?Kº*?ý¢_?.ýê¾Ê_?F‹Ï¾¡cm¾FO‰¿˜xP¿Œ1¾E«?6;s¿1¾?ÒBÒ¾¡´B¾Yu¾…1ÿ¾Œòº¾G¢¾JqF¾€ø¾½Ö°¾¦y¨¾¥â\¾±üŸ?<¾DÀXZ?J¾2?Cåþ?>Œ>¾o8¿’¼Z¾b^ý?2ªÛ?ÙËð?F*©¿¸Õ?ó°¾aȾ’Tõ¿¸®¾‡On¾zDZ?èñ??KH?E;n?+gÒ¾aWê?K,ÀX3¿ÆúÖ¾nùR¿­©R¿s§g¾™ €¿—eœ¾=ô«¾¹}·¿š2r?$\¿žz±¿¿l¾ z]¿¢ð~¾‘½V?4»L?󛿇X¾µä?*wÁ¾±® ?l<¿”!?^©¾7#?T:b¾y»?:GV?Ö?X¾Ž/?3`‡¾¢Ã?#Ì?Ø­?5b¿­²r¿«Gü?EÌ¢=‰K0¾~?0ý¿«ï`¾ºÐä?+úò¾Ã|þ¾§X¾wsƾ7[l¿„,^½™kܾn3?ÇBà?R†ž?G´Ú¾ŒÎ ?iã‹?Uòö? W±¾h­Z¾‚ª-¾\oÀ Ô¼?/u ¿•'*?ÎB?I¬¼?5ã¬?Aºã?- ¿˜]m?8°†½ÿ â¿•ûY¾b¾š¾s˜ª¾‡á¿4=¾…¤¾`ƨ?Mr,¾s¢f¿…›o?oág¾jt¼¾:­¼âÆØ¾©½j‰¨?H´¿¾ƒ°§¾pèS?CN€¾}Š*??Ehê?@R{¾X\ì?'²p¾G¾xËD½~; ?Iû¾C<?=º¥¿¡e?4rÈ?UIS¿§äk?O о«¢Ú?+Ôˆ?EÿÈ?ùk8¾ªQñ¿ ¤ ?Ëþ¿Š”X?6šÉ¾‹YQ¾ËUè?¸r¾»˜ó¾cÁ?äÊ:¾áf¾ƒy¾¨,:¾bW¾ã·µ¾wÄ?MF€?§Ú?>„â?)bÏ?bä¾YÚ´?Ýz¾‡\<¾Î\Ö¾@%?+\>ÿŠÎ?EI_¿—­‘?@¾]N½îÉ¿…é2?'ÙB?4 ’¾Â½þ?2q…½ªl¾õ'¾ d?'Ñú?^‡¾´ë¾–,°¾®îÝ?4„"¾;Q¾ž»²¿™ì[¾¡mD?C¦P¿”ÂŒ¾¼¾´ß#¿©{Ø?ë8¾JF¤?˜è?’Š¿£»L¾ H?8±¼¾›{Z?2èä¿j]¾¾w¬?UªL¿¥Ø*½ß…¾Œˆ€?'É ¾hV?1–¾É²a¾ƒ…5¾Þõ¾+jt¿È2¾°®,?F!7?ÐÝ?4È?2~®>ÛG¨?9U¼¾¯?B ¾¾å!¿£ÕÃ?DÓ?5ìj?*lZ½½»œ?/%W¾j®„¾Dë_¾“O?ÜÛf¿’t¨¾{ƒ¾:2ž” 1¾ŒÂо±G¸?.ÄP?'ln¿‡È'¾žiY¾oÅ ¾gM“¾/o¾ ×½…¼¾5é–½±0t¾=’6?]ðb¿ö; ø¾`KÎ?SUð¾@½gI¨¾p€?á4¿’Gî?:ù²½ÿµF?I¡T?Gæ–<¸Ãp¾ö ÿ¾ ¾ ¢¾Ì?d¼Ð¿‰ðc¾€3÷@=h@9*‘À2>¥[ ¾ó®R?G«q?2ß\¾«B¦?8ul?c!!¾¯Aº? t¾”/Ì¿†ùP¾Jº?ô K¾!æ ¾„!ó¾~¯+¾´ðì?J|ö@"c?÷,¾w»$¾…?NûJ¾¥ €?)ï¾/,辡)|¾o¿•í:?C‚ž)7œ¾-à¡¿¤ ¿ˆûµ¾’•‰¾[.?=è?Tt*¾W·ƒ¿Ÿz~?åÊ¿ž?8¶ ¿˜1 ?1¼?âç¼?2cò?°à¾ ¾aÏ侘R??tX?&Ž2?Déæ?*E€¾Ná`¿¬´ø¾€ž¾x\¤¾gâp¿«-Ç¿Žäо¹¦Ç?Cê¿?$Bþ?‡­?%Û8¾–ݾT>¿–€ô?“Ⱦ‘²3?)ˆ¦¾Sž¿“º¾ò¿–š2?0J¾ªN8¾¤O¾"·¾?#fê¿’Â?äO*¾w÷ö¾ì¾§ã ?*® ?æÝ§¾÷!9?BëÆ?9°¾‰k»¾°yp¾©Ye¾ÏÉå¾…4‹¾Ô}s?'²”>刾¶[è?CÁO?+Š¿»Î¸¾±º?5¾n?ÜmÊ?–”¿–o.¾Æ!—>ê? Wª¾bEš¾ò@è¾K>ê?-1º?7Ý?ÂS?塾¼}¾²œ¾Žb>¾È{V¿¸"­?A;?в?O>¿©*?04°¾K%¦?7Ñ?!(?*°t¾|ü>øÅ,¾š7i¾µr?Ü{à?†E¼>ôøñ½°8@?!Nf¿•7ò¿{+¾Š{6½”~H?T¾Ã¾~Õ”¿ˆQ!¼˜4¾m½J¼P¾¶•½Ï˾g¿•õw¾Ýí?9e™?Q4æ¾GËοˆÃ¨½÷ë ¾' /½×"ô?Bҽֆ½ â¾^¢?S£ ¾jó9?U=¿¾ŠR´@`BÆ .A…®¾Z³€?û˜Ñ¾\ñ›?E º?Jÿ¦?Qo=?ZØN¿ ;(¾/}ü¾ž7>¾@]V¾‡v¾‚<Õ¾€Ò›¿¤¢‘¾;j¾(ê²?¿^¾?®¾Žâ?[Ù”?l³?RÁ8¾6æ½Ý©Ð¿›x?%ªD¾%€ ?D¡N?;ö?9I/?3¨¶½è/ˆ¾JI™¾F»B¿ ›b¿Œľ›Gh¾œA½¾­'@?H™œ¾-q²¾—?;Ú?Ot­?ÏÀN¾Ip?;פ¿—¢>?#†ü?Oå5¾‹éî?ö ?4'H¾n[J?Ia¾g60?+gF¾ƒpÝ¿¦Á®¾V±¸¿©;/?&‘œ¾ã_Ñ¿—ùv?*ªb¾ƒ3n¿ |¾ß,?ì¿­]i¾'´?åp(?LÅv¿•1]¾¾>?•ؾrû¾S}<¾o¾¾?a”?$Ü”½ÿÆz¿­ ñ¿—TU¾¦é9¿—Ÿ¡?ù4>oȆ?2:d?Ipb¿–Ê?ñwô¾wç?7Ãx?"t¶½€ìø¾ù¢¾¼z?/»|?'ìÌ?#±–?&.l¾½~ð>ä|­? E©?B?-€ù?Œ¾†£)¾ìª1¾‡gƒ¾Öcé¾g­$¾SÕ¿‡Á7¿Éɹ¾˜Ê¿”J`¾È¨ ¾«˜¿°c®¾¬¬s>êI™¿_yK¾åMz¾”ŒN?!™Ò¾Nï$?"T¸¾a¢ü>ðV÷? ‡0¿ž[<¾_ ™?EŠô¾žzžÖÜ;s÷¾n,3½¨ò¤ÀM(½í˜¸?ÞW¿Š1¾Ž’¾³B&¿ ¾[¿˜*?#Wx¾‰,û?*=w¾…7N¿ÃÙa¾Œ¹ ¿¦üw¾—ç]¾ÅÚE?"Ò¾ =¿Hˆ¾M’¨?2J?“ؾ .…¿… ²>ÜBÜ?1ܲ<êLà½ÏÁ:¾2/½Q‘Œ¿>Á?^ö)?cJ¾ODí¾×¾Å`?(8?FÕ‰¾/¾M?M¾¾p#û½€wì?K@S¿…g·¿‹ Ä?âP½û—’?5·_½ñ ½‹26?_¡{?V<Â?-2x?9¿´?x£n?ï8â@D?Pó>¿æ?NØû½„¸?åƒ?E`´¾_²¢¾>þ¾oŒr?(®\¿›Nš¾…@|?IÄ¥½.ª`¾yëž¾€5¾o!ê?bêÑ?(Àè¿n˜v¾¦³:?G¾ 6=?>?O?5Ûc=l¼¾×ïù?7C?= ¿—†h?¤ä½Ðû†?Q?6ý ¾=,?B#?9@'?/⾊V}?;¯H¾‘?VîÛ?4çj¾#¤?)ÜB¿šŸÌ¿”âȾÖ_}ž?“†Àw ?2§Ó¾qbn?KÂx?8¨¿¤-a¾­›>Ýù¨?šà¾EŒv?)X"¾T-p¾vâä?ÍGo¾Ç¯Ö¾µ¯ ¾´§X?'Îܾ„F¾@à¾j³¾xç$?ɸ¶¾$èK¾—¨7?&•º?;h:?ÒWɾ¿u6?4‹7?×¼•CN΃@¸Ó¨?B€ ?‡?T¦¾ºÎ½¾9z»¾|§Ø?<Ö¾‹BŠ?Hc½?W¸¾Vž’ö¾†¶¢?¾·Þ¾9”п¡w#?(©Ø?)-î¾Y58¾³ö¾•I#¾ÆGK¾‡#u¾ÊH ¿“5…¾¼vA?:ƒ±?ˆYv?<‹â¿ž²R¾¥=®¾ïÎ?[ ?6ˆú¾ 7¾¤™"¿²§Å?:w¿„ø™¿^X¾¨µ¾#Y¾X£|¿˜ƒl¾¼o¾’ZP¾$ë ¾†¦>Á°ì?r?O)¾…'¾'¶7¿¬"û?7ƒ¿¢ ¾Ž¾$dÅ?6Z?VDѾ3?G/Á¾D®Ó?R €¾t^L¾OE³?IŠZ¾†‹ß½ß¿Ê¾3fƒ¾Mù?G(Ò¾…”?+Þ¾.|¿“°Î½àc¿ŒœÎ¿6¾s{°¿—!·?MbJ¾‡†ö¾uÜ?H»ô½ûÓî?Dø?_i¼¾7,—?@2ì>®<¾ûÕ?6ôA¾„CÓ¾¢;¢¾±Ñ‰À -&¾ŠˆÃ½†®”¿›1*?+™¾ŽS ¾= ü¾n)p¾LwÁ?K4?0ÿ»½ù~’¾Áq2?D ´¾JE›À Ãv½ƒ§¼¿—ù>?]0¿©ƒJ¿Žþ ?g•¾a·€¿‡•ª¾pË(¾Twì½ÝŸì¾ZPh¾oˆT? ’¦¾7¼¿•dQ¾• ï>ôÅ?0ål?5Ú€½× ®¾‚\Þ??lÿ¿‘¨{?1C?;©Í?3–>À…¾sœ…??3À¾ž@A Û¾ˆ#ø¾Œ—Â?G¼?Rqp?'¾G¬,¾BI?⦉?äa?!Hv¾öU¾*?ýh¿¬¢º¾Ao?Pþ¾ºÿT¾uŽ˜?ÞXAç&@¾<›?<¦^?Í(’?&»¾•ß¿§"¾•Å鿎Ê2¾"?I¥ˆ¾œÏœ¿Ÿ‘±?/3þ?U„„¾¶ûÚ¾ŸFî½ã°¾›óå?<4¾†Z?:„˜¿¨òˆ¿ôî¾Û8š¾ri‚¾—XÊ¿–“c< ?'Œ¾€8K?;fœ¾d<¶?0¹Ö?,À?Êr[?9oÃ?¿’ºÛ¿‰Ð2?TAª?$f²¿§Æ™?o>¾ËÄs¾¨—?M¿¦¿©¬?^G?'^¿¤ÊŸ¿¯# ¿¡ŸJ?!±(¿ :á?Ñ©F¿󾀃dÀ ô?6˜0¿tPt¿­ž@Κ¿¢ý?áÿ*¾wMÃ?>ò•?'\?(Üì?Và)?Ed?é¡F½žE ¾¨TN¿‹ø ¾Úµ¾$ÑŽ¾Ÿ ¨¾¤‡]?fÕQ¿‹ »?MRè?(Ó¨¾$=Ó?eé?楑¾)¶¦?M;fÂ?;ÈÀ¿"¨¾£lç¾Ql…¾ˆô½¿Ô>?;Á÷¾`Æå¾{ ¿£-ß?L?N¦Å?_p½¾M:è½Ñ ¾Äb¿®Á´¾xz??±¨?@[R¾wÅ¿¦>?"g¾‡vp½ü°?(¾1d@?-`E¾Fà?Ag\½î0,¿’wU¾“ãý¾ˆÞÆ?+–<¾‹­(¾C`ø¾e%Õ¾£Y?%á ¾²(Ñ?H8%?1à¶>ì}¿”¼!¾J˲¾w5þ?ÒnH½V÷(?Ü ø?ð|ƒ¿‰[³¾ÀâR?#TN?;ÔǾŸ±t?<69?&¾ë¬Ä¾ƒ[-¾°‹¿¥J–¾Œ´¿—Ø ¾„•s?Jum¿¢¯"¾Èi%?Cÿ©¾pିyd¿šÁ?¾ùr…¾¨´á¾ŽÕÊ¾š˜ ¾Bä<¾w¬|?UÔÿ¾É€Š¾vt†¾Lj?=zV?Fí¾…üï¾9>?Iç?¥:¾œL•¾l0?=$¾E :?;%ç?ãÕ=¾“q[?;]{¿*,¾{²B?E¼¾›“⾨¤¸¾Šíº¾ü4?!ï˜?4ƒ²?ξV×?9´¿‘1~?=Yþ?M²þ?çñ¿¾}g¾“¸ùÀ­`¿¯PÜ?EŒž¾¼Îg>о€­RÀ3®¾Žç¾C^¾n¡¦?*]P?0èØ¾¶~>þE›?)Q ? £ñ?aíy¿+p®?H¹ê¾9^|?äçd¾­…Œ?,(Þ¾£” ¿È4?'¶V?ë&u¿ ‡?6Â?4¢ì?=n¾žÙä? ޾\õ{?(r¾j p?HP–¾jØà?6,a¿ž¡¿–H­?#šR? é¿–ºW¾nо¢Íº?Cú¿©M?Qé¢? Çï½ÆJ6¿­XO?â_à>ƒ”ؾ]¡¾š|z?4@˜?" 1?HO—¾£D¾‚€Ñ?<ÝS¾N3´? g¾OÇf¾–—¿ž+B¾o{±½ìè¾±Âú?d‘ö¾Tò¾ ö¾i4±¾#<€¾ŸÓî½7(?1b£?g•†¾ á¾&›?Gʾ?ê^F?OÕ$¾‚Sò?H‡£¾-®?E¦ ½—ã¶?:v?Q™?NfI¾p$¯¿žya¿’š ¾ˆËš¿‘®o?>Ï¿£ó½ö±œ¾G޾HÓľ†)Æ¿©0?=q?è â?ïÌš¾¢g%¾ï¾·÷–¾‡¸°¾bkˆ¿§°n¿Ì7 ¾ÓÎf>ñäâ¾…Z?æ à¾F?MT ?7en¿«†j?Çä¾PcL¾™W—¾…±í?BY?4¡?&y¾?¤#??€Í?>¬û¾–?5 ¤¾š?̾’R+?$j,¾òÕ¿’‡¢¿‘©[?F·9¾)4¾G/ž¾´0»½ôȾƒ›i¾Á˾”º«¿Š0¿¤ùº?lP\¾N7¾{Wv?$3Ò?7à·?œ¾8‘ƾ8â¾k¶ ¾sFû¿‰¸¾ Ž5?] ?;b¾ˆ·f?$ö?7Š™?K"?ïà„¿¯õê¿~𤾀C?Cž?X‡²?BK]¾„áf?b€?Œì¾/"¿Š„ê¿¡|‡¾’ ƒ?!À?L)]?Ò†¿œÃ¿‘ð¾¤2?*V?Ö3¯?TŽæ?)r?2=7¿©çj?f'’¾…ù¿?θò¾‰Áо^ð„¾ÜHŠÀ ô¾ƒ𾬠ø¾©>?*ad¾Sÿ¿]ˆ?6Hj?,–O?@ɾS ¨?&ÅÔ?D”ô¾½ÖÚ?õ¾ª%¾h^½@ç?@(I?2qË?Do@¾¸ž…@q?MkU¾iYr¾¹ƒ¤?=sp¾™Ã¾"Á˜?†?Gî¬? ]?G‰¾» r¿#v?C‚¾„â÷?B®8?=®‚¿’åâ?l_¾èþ ?Xоp¢?"†?;*M¾>ÿ©O?$ÿ±¿œ]D?%ê¶¾¢ܾw˜Ð?Oø×?>œç¾–Gß¿ž~·¿¸ªÖ¿–¡›?E£Ø¿”~Ú?.Œ®¾«ì‹¾çO?Kÿ™¾—+î¾µFéÀ€£¾Á¡c?Ú=¾½?6’œ¿£xâ=0[ø¾;M>ß(¾ïZÃÀ§¿°e¬?H?Ú”×?&Or¾‡í¾¥}¾ãѾÐÌo?9o?1Ø ?64ª¾ÙÔ|¾‰ÎÁ¾åœ?åb‹¾»ïI?7AT>€ó(?%“Õ?*÷̾4¶v?-Èʾ}c"¾­ØŠ?C릿–ûо;î??F‡Ü?*èà¾Z´'?V®?5O±?  ¿•÷(?ÓØ?91\¾‡Ø¨¾…SÕ¿ŸÖŽ¿¢å?Ã@?é4P?:â?äõ1¾Á/ ?AUª¾8?·»¿«XÆ¿†©Àjš¿”¯n¿‹•ò?d€ª¿‚ßÚ¾šœË?\´¾þÞ?PÄÔ½™ÂÖ½ÙT¿Œº¡?Oš‘¾'D?P¿“éê?Hv¾ ¾k¥¿‡²4¾ês?^æ?J…£?bÉÞ?a0‚¾ˆb?G˜:½²z½Sæ?X`?I}{¿‡˜è¾¹Ä.¾lø¾â2?OSÒ¾ŽW¼½¸‡<¾™o˜¿‘!ü?*çà?A¢A?Ù¿å¾æ4¾˜N®?Sçö¾wÐɽú¡¸¾{E¨?øÈ)?C¬?W~ó¾U9–¾#Ç¥½ÅØ?0B@¾ÃÍã¿©´?(ªÀ?5¶ð?òl?: ¾¿C{¾1d¾1È?¿•Õ¾#A¾°*¾ežð¿Œ÷|?FÞB?í«r¿žàû¿¥ûQ¾…µ*?Bg¾‹¬¾ºË¾Ü·F?H¼Ÿ¾ä¬‰?BíоdÃ^À #¾·w¿‰ ¾Þ’|¾­¬¿¯öh¿§;B¿š>B?(¬¾•Àô?3z0?0¥ö¾"û¾Hm>øðq¾Œ~|?ãÌÞ¾¤ª¿¦Æq?#…å?>]ê¾ÑAß¿’Øÿ¾Kª~??Fp?¸A¿—ö?›f¾¯A>¿±«~?9uš?.‹C¾• ¿Á^输о”Ô+¾‚•,?,o:¾‡šÿ¾šÞÙ¾‰f“>ø"¡?8 ??õl¾ƒso¾—ˆí¿•LJ>çXG¿˜¾¦?¹Ù?%?C?hÛ0?/¼¾M¯à¾±ë›¿§× ¾[Ú?t‘?<ÀŸ¾¸â?T¸Ò>³ý?$X›?Ôj#¿¦,}¿¤„~¾1–â?BÞ“>Á~>?åžÓ¾­xì¾K†¿¨Y²?9^©?Pø?%?S3?1öÌ¿°®¾·p„?çdº?^Jì¾!¡š¾Æ>«¿›_u¿®c¾ÂM ¾Ò g?==b¾ð¬×¾¥Ï?)w¾Üúm¾­äÂ?6šÀ?@ý¾}ïð?Ý­¡?-ø¾àã?-•Ý¿–hž¿§í4¾W?&·p?¾‰Ý§?A˜?Ò^2¿¯ C¿¢•Ó?ο¢ãÀ¾ˆWé?ÞUý¾ƒÑüÀ$<テ?R x?i-¶¾êÓ¿Žª¾ Ú?Yn¾ªJ‚?ôm"?7çú¾ ž½f ¿™¯?v;€??B½ô\˜?"µr¿ŠV¤?@p7½ñÂV¿—^M?MP„¼¹ƒ`?Q¾Î?=]Î?Sh?JÝ¢¾•±ƒ¿•îQ½ó~`?Pt0?B¤‹¾amî?Ã?õÒ¹¾6Æz?7r¾ ôϾL˜R>ÒŽ2?2ö?m¹?8ùÄÀ ϯ¾Dõƒ½ûrÈ?SÌH¿§Ó"¾Â7?G?Qç+½ƒPœ?Ï•(¿Ž¸=¾‰Ž¾¤8‰¾ˆ^ì½Í¨?@:Æ?HÔö?CQ¹¾C6½Ñ.À¾lVÊ¿›vR?/- ?T݈?„¾R4À¾©Ô&¿©½q¾¶“<ÀÄ?1ÒQ?+x̽—EÆ¿¡ÖŒ>ñ‡fÀs”¾½™Õ¿y;?2ã?Ïú?(|?)#>?¶€?SZ?êl¿¢?2úL¾¸6¾sX–¿”‹Ô??Ê\?Ò‘Å?NÔV¿ŸP5¾–M?'Öª?Õbž†t¾jýľœC0?G”?0eŽ?* B¾ŽN¾ß>h?*zV¾\T¿šC¾[L¿ŸS翨ì¿?y½”4œ¿hÛF¾Œ,§¾š+n?Õƒ?3ž¼À ,>?RN¾³{:?²r¾†B6¿žiº¾LÞ\¾{a ¾s§¬?:Ø¿'^?ã#?F;g¿œi9¾é«?Z†¿¤¡9?,Nô?ø+¾¾S?ì?x¿¥“ξ/%n?+àØ?<ÐŒ?0:T?9qr?!û(? –p¾²’¬?=µ|¿­Eÿ¾œ§?:^ö?2¦â¾­¾µØ?â¨ôÀÈ@¿®§¾I£d¿/¾¥²¾Å‚¿«[9¾Ÿ¸?¨È?.‘>?YÛˆ?Ùä’¾£:¾©î?mƽ?öGC¿¡»~¾±Pæ¾=i>9°R¿€k/¾™žU?V—¤¾š  ¿¦¡?^y¾¥»?[!È?`áŒ?0`¿©ZP?= °?^+ʾÊZ(¿¡|¾‡»#¾K©?Nqr¿b?(ÞÚ?F3¿‘;Ü?"w¶¾a?]ëÖ¿œ×˜?KžY¾–­Ò¾gö?êã¾F!?=Š[¾Šf‰¾”HD¾0Í/?SÜ?Jº?=þœ¾ˆº¬¾RZž¾¾?@qp¿”Ù8¾6µS¿~Q¾Uð¾=3ö?;¹¡?x.?!V:?'¤¸?9Ú¾±®¶?B‘¿–©x¾ºz©?UÓ¾0¾b’?'ž¤!î¿­½ÉZò?+°K?H“¾ˆ§r¿›Jt¾AUS?:$о ŠÞ?ÌWj?Bj±¾šìÎ?– ¾|÷?DÈ?@hP¾ÃÁ–?IÁ¾¹ûÙ¾Y„©¾ê¾G¾€b^¾, ¾Êÿ?.¦Y¿ ¾‡cW¿™ð1?:Do?pT¾DIà?*¾¾Mµ?<^G?¶q¿Œ±?þð¾¤aõ¾ñnm¿£RŸ?-ÔI?E¾ý??GD¿“8¿"_$?"Ââ?C¿k¾µq6¾šu?Ïÿß½î(? Š|¾H<’?;ÿÙ?Ceî¾®6Ǿݾ+ìš?E9??R¾³–¥?7,Z¿p¿”–½òHN¾‡Ëÿ¾5ñ ½þV´¾ˆ*~?ÜQù¿ À€¿·R*¾€OÓ?H„ü¾ƒL?çÒ?F*T?~§ ?Ülº?Aº¾Ò%}¾ÍLÑ?+¨½ï‚\?Ü~~¿–„¾½|¿N¾–?¡¢?+r?(ý:?I´Ø¿“L?í²Ó?ï}¿¤¢:?ê u¿•–¾oFhÀ¯ì¿¡ö¾’ô>§Â?#…6¾˜翆d¾ÆX´¾—?4‘Î?5Ìü?Q6<¾7TL¾ÖE”¾ÂäоG?V¾¿¥§œ¾*[Â?A¾&y?$òÄ?n>ˆ?>^¾®Cû?K54?32ξž?¨¿žiþ¾Ãvý¿Ÿ@ ¾B²¥¾‡ÃÒ?µ¾9Û¿†Æh?mM¾…÷Ô?]>j¾L d¾@p'¿¤=ʽëß ¾?N?I?.ôX?^¬²?'ü ¾‡¾pí.¾1©ä?ÍG?Q‡?A-²½Ø.ª¾È‰¾n×¹¾/\?g«Ì¾a‚|?FZž=ª.Ì@ýû…¾©\º?Úw¿¾…\“¾ P?DVZ?SÒB?âǾH4Ⱦ œŽ¾ Ë ¾Ÿ¼?Bÿ\¿æ‚½Íqü?I¾!–?áòû¿”æÞ¿P?ðMi¿¼‚? f?l¾ŠñŒ?9Ú¼¾ Q¾©©P¾‚v‰¾† Á?I¸¿¦n?ëῤÉQ¾J„ž¾‰Å#¾3„¾N,?E;®?'"f¿”ÛŠ?½è½žp>¾‚Q%¾¸;Î? `°?í.?=ɾ¿œ­Ÿ¾a¾ˆ¾»1;¾«¹]¿¢î×?>·“?L¢k¾Îí°ÀI¨¾7ó‘¾]㊿­¹Ð¾Œ¬Œ?M\?„?$•\¾¦ø?:»?>‚V¾à`?cvÛ¾ÃðT¿¢è)¿¶¤D?Mº]¾¨ñ`? ¦¾Í³ ¾*µ?!±Z¿‰!ù?"¸Ð¿Žoÿ¾¤ ?[ë¿z¿¢}›¾dž†Aë>¨À¦¿† ³¾€o¾¤ÀjÀç­¾®½w¿¥:¯¾{š2?!&1¾› Ç¿¨Û¾Žê«¾±t¡?2Ѧ¾”ü¯¿Ÿ«^¾`»½¾™Kg¿£0÷?3æˆ?)ÞÀ>ö ;¾ûe ¾€P¬?àž¾z‚?+Î\?_ô?,E˜? l?6$¼¾•½?*®ä¾·2ï? M˜¿&š.¾\vI¾¥Ë?ñ¡r¿«t’?EÁ¿Su¿­M«¿©I?ź?áXÞÀäl¾o—î¾wm¬?vº?0¾¿Û¿œf^À (B¿“†•¿ š˜?(S¾”'®?BÓý?VË2¿Ÿï¿ØN? h¾¯Af?!Ð{? ‘ ?3iš¾@ZÛ?EQš¾qdu?=ï8?1’?Ef¹¾¥±¾EN.?rw?2K­¾Þš>¿’¿—"¾ÜŠË>›–;?DÇ™?ùо|?:›¾vo¾”L"?\xœ¾B…ð¿‰Y¿•jÒ½ýÊØ?faå?GÆ1¾ FܾC/翉X:¾#ã3½¬}Ð?D⨿¾~?\Èj¾†@N¾pMð¾ û³?cô†¾–->¿Ð€?<µÈ½í©?9Y0¾KÍ_>Õ ¬?pæí?AOp¾ÛPõ?VÚ¿¿‰…s?Rôœ?;$r?3®Y¾l­ô¾È²C¾‚˾£­·¿‡·"¾ƒ1™¾zÀæ¾T¾ŽB ¿—bc¾kA?iÐ?0Ë?UÒ*¾³t{?,«º¿©l(?Eþ?ï(¼;‚ ?J¥¤¿›Æ3?2n ?â„›¾bu?:ؾ©Ð ?Gä?Im澈ï¿á¦¾–1’¿žiÓ¾ñP¾Ís?+Å3?1Öb?áî?ADì?æô¾Å{¾«‘Ó¾…Iþ¾7ó?3Ð&¿§i¾á¾\·Z?A¥~?è¿ ?HÊ|?8O¾¸'ß?Qbv¾ø³¾„ý±?5û•?îu$?*§Þ?qÃ+?Ùï8?-ä?O8ûÀ w¾·¬b¿¤Ù™¾|¥ô¾h¿ü¾¸\f¾Mcn¾YÎÒ¾•e?.õ?(g.??Î?I?-0¾9Œ>?àQ~¾iº½‹Ø?)Q¾¼Iû¾…×"¾ Ù¾§†P¾­—÷¾ž“?àä?DN"¾‰®?ME¾{F¾vJ„?.ª¿¥óI¾yÉB¾Eû¿¥»þ?3«\?*Â?%#,¾Ä¬–¾žŸ”?(%¾Ÿ°a¾µÁ¸¾i*?䪀?.+0¾Qž¾C\3¾Å«L¾~tH¾¤ã ¾Pl?2wƾ=$¾ÅÑʾ¸ÌG?0¯î¾gíö¾±òC¾•ˆË?8[ô?ç?ÉÖ¿œ’¾¸?AÚ8¾ím9¾²b™¿¯iT?D*¿š[ß¿¡[¾‰<à¿¥h¾íÈ7?âb’½èz$¾¢ïj¾”Òù¾œòq¾áš?νŒ¾«n¾i˜¾? L?m‡¿»n¾Ìî?!ý?²;¾n•?Õv??4)¿??aò¾˜Ž¿— r?&𾈃®¾´‡k¿ýká?Hþ>ºN†?!Dh¾Ÿj ?g•½DIо¨Ók½Ø ¾Ó ½Š$”?>ƒR½²jl½÷|¿—Gâ?. %¾8&f¾­^̾òÅ?8GؾDßû?+.¾O2©¿kʾž[?*XϾ•dȾ.¶¾No/?8¢y¾ƒò´½)¾¨?"â?!µŒ¿ˆd¾q÷Ü?C³ì¿£i¿˜kæ¾T5¾”Ú¾#ø¾Fâ/?8º¨¿ˆ¥¾ „{?f¥R¾"RA?5á ?²À ð_?&ôº?O?'G×¾X¾S{?ÚzF¾ÈÆ?î¸?1Ú\?LݾÝѧ¾c”N?-±S¾pþÂ1Q?DÚŽ?ÚZ?q–¿¤96¿’¹"?4¶2ÀÛ-¾©“ç¾xŒª?Aë¿?UÒ7¾bÕ‚¿Qd¾Æ4‹¾Œ5¡?7*0¾®x ¿‰ x¾ˆ/É??BZ¿—hN?U¢¤?D¸?:fƒ¿˜Ë‡?$Eæ?׎W?@yø¿‹žà?"=9?=Pö?O `¾š·i¾¾v2ì?@˜s?º¦¾McȾ¦áT¿H¬Ñ?F4¾‚l>ôy"¿âï?Ly?ëh?¡Q¾QPd?#€•?KÑ8¾L·ù?,·B?Kù†??åH¾öÕV¾ lú?!V¢¿ç¾¦‚>¾ Š‡¾Ô?Q?@nN¾¤¬¹¾È}‚¾½Ñ?& ¿‰Ðâ¾¹üç?D|?;Ž?U´ö¾©U¾ëH?.&¾W]ë¾Ð¦X¾Yh¾®x´?ËY?×ʾx̰¾Ê4?9,Ú¾Ö‘Ï?+íξ§pè¾Ì‚j¿šÝ;??Ò¥?%˜B¿˜kþ¾Ð=½¾‰ë¿š!¾†Áæ?A¾æ¿‘ãß¾ŽÒ ?<°¾§9 À ’ü¿š–?N H¾r³?.ÄÔ?Ú|æ¾î ?Bê'¾`ÖQ¾»€æ¾š:m?J‹˜¾´ëÔ?@‰Ä¿÷æ?;(꾑±%?+'H¾ó]=¾ºýŠ?æOo?>Ô?PV>ïν‡Ð=-¼$>´Tz½ÑB4¿’ƒ‰>7¿‘ú ¿‹/‚?e ⽕ðÈ@2Êl?#@f¾=‚¿• .¾©Rν« Ì¾$€8¿”ÜÕ¾'‰î¾L=4¿Œn×¾ ¿‘½¶?Lú1¿†(¤?0<÷¾<ùµ½Ób¾¿šû°?ZÒÌ¿U£Â¾ 2¾vÄÌ¿ §™¾¦ž*¾@{¯?•¾?Ý…¾Ó?A‰â½²ñŠ?F‰£¾$¡z¾u<*¾p¾•yk¿“êX?Y8ƾ?¬&?ôþÓ¾¯¾7`D¾gf¾Fwz?e_?4ÝH?>"¾¦d¾S³Á¾â•3?$[ ¿Rà¿#D¾ œ? D ¾€J‚?7â=¾—E¡¾q{–?! ¾gO ?-©”¾X?gÞ?Hº?Nÿ½­ºf?6âÂ?D(¾—d¶¾L´ä?<àî>¾+¨¾‹½¬?l¯T¿›?=P?%T¾7‹¾Å™²?Gll?>#È¿¤ä¾­“ÞÀîe?6x¾—Pl?Ì~¿žÛH?8,Á?.dº?Q1û?3P·?+Ô¿›¸†¾ˆTi?Ù”ú¾…&Ô¾oK¼?Þ­¸?,p ?(Š`¾'²?>¢È¿ÄÈ¿šˆ¿”vä¾Á”,?JÛý¿¤r®?1ý¾?6¾¼™ç¿ å?µh¾š|¾²]6¾˜™g¿¤Û?Åñ?3ˆV?üÞ¾œ¾ªë?8a¾{ª|¾ö¦ë¿ Îx?NF†¾šux¿–H¬¾up¾Å¾…š–?å?Ì £¾VNè¾…i½?Ó¸?-âü¿J\¿‘d?áÆ¾É¬’¾kô?4D?Ü8¾†¤”?ê¼µ?R?8ß?X1&?<çø¾ÚT+¾vþ¾•Íà?5庿š¤ê?öòB?ÉÈf¾KÃz¿¦F©¾«bb?"ó?Aÿ?.8$?>bؾ½sJ¾¸¨¾¾­#? þ?G¿d¾‘57¾žNô?8Úœ¾í¸C?ý?&C0?èê¾É~ƒ?>[n? öî>v0,?Ñ·.?.^¾¸]À °Z?e´?•h­?9Äg¿Ž¼)@¾›èBk2?NoQ?ô·½÷‘&¾A‡l½Çõˆ¿‡ª½ŒIÜ=lùD¾tÄ¿|k§¾Û?R‘?P— ½š;l¾9 ¾ ä?í“¢¾½ÖE¾W7À?SÐM>ë’¿‚ë„?<#!½X>¾ŒSì¿„æ:¿œC?G3 ¾ Ÿ¿†Ô/?:Žr¾R­ž¾ f¾¾"›¿š˜u½– ½ìŠ.?&AW¿˜.3?9¾\¾˜©ð¾¬Úš¿ŠNؾ…=¨?< Ä?\™À PξUÚæ¿™ñl¾uŒw¾¤¡›¾Þ5†¾®g>ö^1?OS?¤wÆ=è[8¾“yD¿—ïÉ?ú𾋽ê{?Eøt¾— ¿¾ŒJD?Bjf?ŸÊ¾¥Á¾%2>ÈǾÁw¹¾6Ô?`ð1?:±¿¢¹°¾‡éô¾Lsƒ¾‘ ,¾ô¿¡Z ¿¤Vš?#™™½__<¿ #j?T€©¾–c™¾ˆ7¿¡Ÿ¿¥²W?WÂþ?K¡(?* @2?N\ì¿‹3ð¾´­Ê?D𔾾_¿œ4¿‘¥ª?H쾩Æ?3P6¾O&¿‘G¾h\@¿’##¿¢Öʽ¾Í×¾µ¾ü?=DÆ¿˜`;Ÿöñ¿•0ý¾Nãæ¾š2¾;?¯?!â?ãqÚ¾¹M¿‘’à¿¡›ž¾€éL¾Á3D¿¤¯¦?ÓÁ½ÿ¡ú?J(¿št3?0F̾xÚ¾”¯¿¾€l?#:6?=ÈhÀ }?å¥E¾°Y¾‚ìL?K¾‚f‚?5`ã¾¼Þ¾?Ùh¾°ë¿?2ÇÔ¿ R¾+>²?־Ⱦ*"µ¿~—Ö¾{u?QŒë¿“–S¿‰Ù>¾šz5¾Œyo??J?;Úì?ê‹ù¾’Å?c9?bÝÓ½ÔÖ¾›5Š?/3X¿™¤|?Óž>?£kо›¯?!nö?,°œ>ܟɾÁ_†¿‡ÂB?âRŽA™Ï›?G£½–?^?8ßz¾}±V=½Ykx¿—*´¾’÷½£ÿp¾(³?LKÿ¾7.®¿—¥4¾¹q?/ôj?:󿿘€(¾/Ú°?OB¿ˆúµ¾ ©¿–E¾;öÒ?Ú¾Kñs?3Ø´¾•<½õëR¾Bvß?B½Â?4^Ð?b+*¿’̵?7z¨¾Z¾C >84¾y<A;œ)B ¥@v ¶¾žo}½Û÷¨¾…<ª?Ÿÿ[¾„?5zr¿‰Ð=?l¢¾nÖ‹?-”?9â\?dÞ¿¥‰‚?7Ò¾€#7?R?N‡é?9s¢¾;Am"¾ƒûM?È…7?K(V?3Š8¾;•L¾Lx^½Ø̾EÇÐAð¾¸62¾›¢:>ÂŽ¾Ò8b¾§a´¿Ÿûf¿Ž»ð¾¢x¶?:§¶? ‹¾Ž*¾Íû?O°?"N¾Z‚¿î6?$Ê ¾-z¾ªÆ¾Ó¹â?Th>?â&õ¾Ï)o? j?ê«§¾y^,?ãJ?1%¾ \ > ¤8¾²Ôܾ’^>?L: ?2òX¾’¬*¾ˆ0)?$ ¾]^O¿+¿‚¾‰r¾½¤??Þ¾‡¾m?äÖ?ñï¾2¿žfȾ”/?"S?<ëÞ@:2þU+ê¾µi¾Žξž1¦¿™j¾$¨K?*r¿¾±?$І¾‚Šñ¾??Ϙ?6±¾Çž?E³»?.^û?éò¦? é¿ wà?(Ê"??;]¾q œ?îæj¾¤àö¾*Ãl¾ŠÓ¿šˆä?ç “?9 ¾GŽO¾,I@¾æŠ¾^Î࿜[?P<¿œô¿‘ªM½ëW¨¾4‘‚?оgãL¾š6¾+éô?/Ü{? s$¿™.†¾ÊO?4ë¾2Ö¾©›µ¾,Ûä?6gÈ?+&½÷s`?/…â¿~H?2¼r¾žØÛ?<n¾ÈEX¾›”P?B2¼¾§Ç?7¸¿­=ξ´)? <꿲Ԩ¾Óz:¾=2:?Œ­æ¾Bè¾Ê¾ |H¾7À³¿Žk€?ònξhî-?Lñã?]S>ôþ±?bŽ?uÊ?éÙ%¾g½¿¢R©¾u6?âËh?€–?M¼c½þÿò¾Û[†¾ŒÆµ¾ ÿ!?]yξ0&ß¾?N–¾#?Jàò?%Z½Ã‘\¾!¯N¿†ä‰¾¹à¿·¶0?9“@Bž}>µÒ%¾wk A¨IaBåÌå@¡&Ê?%‡?#§¢¾åE?;Ûh?å ¾¦¢¼¿•¬¿Ñõk¾²êŒ?T3z½¡ä®?2ý‡¾_) ¾¤Î}¾V¦ß?*JB¾Aœ6?;ÔL¿¸-?' ð¾zþž¿•]¿™~F?,Ü€¾Ršà¾‡Q9¾«Ú ¿ ø;¾Ôp? Z¿Žžh?ë ?_Òľ‡ã¿ÚÙ?Î `¾iÖt¾–UÝ??Ô¾­âo?;Òl¾Ape?aú¾€ÿW?çX?5Kü?< ¾¾·Í¿’)¾€ú’¾ûò?/ªœ?:ßÄ?Â&¾AW¿œÐã?+øð¾—图6«¦>åHj?oÚ½È|¾–Ã-ÀÐ?Ýž?¾Ï\w?&Væ¾ÅIŽ?*9™¾@bC¾f²¿—KO¾Ì¾Kéw¾Ÿ¥ö>ÎHc?7ð4¾«v˜¿?)Ëm?.æì?߯8¿ì¸¾‹së¾¥x•¾ÿ󬾶½¤¾Ñ\Ð?Ý0?#¾|;¿¯Ãö?/…Þ¾«I?OÅ"?KÜ|¾›â¿µañÿ^¾@’±?!Þê¿ÝN?Ú V?2¤„¿¦]¾èG£?Ù—ó?; ÷¾¥²×?òj¾ºÑ¿’w?ÄJѾŒRŠ?åŒ\¿˜p¾–¿g?*ô€?6ľ•~?z|¾²n?OiD¾Vv=¾§¾Ò°B?ôÄ7¾À*Q¿…+ =§jr?4°ò?AQô?ìçF½Ü„?J•¿¿§†¬¾B¦‚½ìmT?Iä?bz0?]™–?^aÊ?îl¾©âƒ¾Š´­½ÞÄľŸŽ ¾’ò?`»š?9²q¾æÖ?yè¾eü¿ŽµØ?DZ­?UYj?kÉý¾Šá?Š"?:Lœ¾ëš¾ˆâ¿›¡R?-"Ÿ?9(™¾‘mÒ¿ž¾ ¾}¾€Ü¾¥ƒ?HÙ <Æt°?:yN¾¨è'¾>'Â?&þ¾ôÚ¿?h«Å¾;oQ¾Ô«¾|o~?Lׯ¿’'n?Ûß_¾—ø?ñÜ¡¾ƒ;²¾w‹ù¿ (¾§â?Is^>O% ¿“ôj?05ê¾%Ó ¾±Ð±½Ÿš@.ÿk?8êF¾¥2A¾}—n?ßë´¿¡n¾ ø(?#Ù¾…:оª’¾¬K?àû´¾Snÿ¾Œü ¿˜ùY?X$Ÿ?&Ï.¾Ù °¾›?k?CõB?196¾¤I?ÉB?@ùN¾|§È¿¡¸¿+¿r¾\6¾,ysÀ –¾ÓK$¾R°°¾ŸSd¾›rƾ“q4?I/¾Á’Ô¾€n`¾µ…Ó¾€¿¦?ܸ¤¾ˆ?5<-›€¾¨sX¾Áe”¾³a ¾´ù¾s"ò?QDV¿®o¿ù'¾z¾¾™Ê½ê¦?߇{¾¬¬Ú?ÿì¾|¶?2–??BäV¾Í—?Z 5>õ3F?,‰ø¿f¶?Nt¿šµk>úľ¦>ƒ¾Â+Œ¾³©[>ÿܾ‘[ò¾Â¦¾–ñ¾'õ¾C4¾|ó?Z>¾C>ô>` ¬?  Š¾‡´ô?4Zê?!°¾›;¾: X?GDD?2¾Šà²?$Kç¾ <ï?næ¿¡¾Éqè?Áj¾rpn¿›´œ¾²—Ⱦ›п”·¾¥s ?/rB?^ξþÚ!¾ð¥¿±”’¾£ù2?¢ÈM½ 0?Ѥ¢?%1•¿¢P¾›?¿¥s"?<渿ä¿70?Ünø¾TFG¿þw¾†¿¬¿¾6‘?GÌj¾?²¾…‹a?&ˆ0¾ @¾D‘½á ¿ž#?GÝ?dÒ¶¾Y³™¾28ñ?IèP?÷¬?IOº¾­H¾x¢Ô¾¢Èè¾Ü]¼:eP¿¾Û?EÌ‹?MÀð¾¸\e?Zæa¿¢$¿–±‚¿Rò?Eÿ¾Wûʾ Á??a½+?EÊ?kòn¾Hºæ¿Œu-½,?{£#¾i.4?@™å¾³ƒ¾q&?M|…?;±;?C½´¾™tÖ?ò̾¼¾nR<ž+0¾hÍ?Yr¯¿–/í¾¡°?3÷ú?sp?B?>.6?Y‡¾H{"¾¡%w¾ ‘¥¾‹0~½ð,¬¾ ~å¾ü!¾ Þš¾  6½9àоО꽎rà¾,t\?=r?:üX?A*ž?K|8?>Ÿ¿ ˜ð¿ˆEÒ?8°ü>¥ØÊ¿Â 6À Ë|¾‰?µ¾¹de?Û””¾S¾Ö¾Œ3ˆ¾OPŽ?!~b?I7ú?&~*¾Ü«d?AíV?>CÕ?·‚¾‹3î¾]‹°¿“Fž?MБ¾)" ?3g¾±›?!¼X¾Š‰Æ¾|ø¿ U?8@?0CëÀ â³¾†Á?4Øà?3}†¾5öƾ÷s¾^9U?.œg? Ó̾[3‚?K„¾zŸ¿¤ÍR¾A#t¿™‰v?"œ\?(º¨¿’±n?>Fj?é1z¾¦ï£¾¦wí¾/õ.¿¦-?@Çl?:êº?82ê?ö̾ñ¼&¿ÈƒR? ƒ¦ÀrÚ¿¡LÜ?ϾQ£á?7Q9¾©ŸP? o¿¦Bm?Ⱦj¾ X¿’×|¾œg¿—õ&¾„«™¿°ñí¾£s?2D¾^z†? ½ ? I”¿«vj?7Œ"¿¦ß¾„[ƒ¿¤Mz¾\i’?;fH?%ß¿z¾Hß6?ñ?h8¾…ÏÓ¾‡²¾”*¾”>r?•r¿—Ì¿¾zMÔ?èÛ”? ¾"¿£,? Õ¾2b¦?ñ8?5й? lõ¾žàm¾ÑS?Rà8? Ú‡¾š‘j¾ƒ\G¿©Çf?Oš¾ƒ¡¾£lŒ> g*?F§Ð?O3¾a­½¿‹v¿—ag¾ K®½Ž ?söt¾^’À 5½½¤¾R_ó¿‘L®?gŒ)¾ S{¿ƒ™O¾M?LxÄ?Uä×?LT…¾¡j½ã¿,¾F¾s0+?T;¿–½´¾iâz?>މ¾•»b¾²½Öu$?ZÌT?Gïû¾N‘æ?W¤ ¿‰7–¿?@R‡¾{¸½» À¾Sýé¾ J¾µÃm¿¨Šƒ¾›¨€¿­U\¾Œ8˜¾s9Ö¾G÷Õ¾“s·?íR?3€y>öv¿‚ ×¾½=?)¤î½ÚªÈ¾¥Wz¾ŽhØ¿”g?¿¤æ ?çôÚ¿¸d×? ô6?BP?álξ–õ»¿ D¸¾&Dõ¾À¬:¾L@—¾-Jä¾ï¾¦„Ý?+pɾ¨žŸ?-l¾¼”?&å鿆Ùþ½…–†?ߪL¿Ž/¨¾œïÝ¿ŽÇr¾j5ƒ¿žuZ¾¥!§¾"Ö*?H齓u.¾‡è¿¢pt?+_Ü?S@¾‰j¾¼l¾| <¿‰Ÿ¿•¦"¾ƒäX? ;¾ë€Å?%Ö?+­š¾ìê–¾²™À¾À¸&?"{Y?5´]¾_¯´?,.b¾z㾜‰¾f•?’?XíH¾t¾Ñ© ¾ºƒ–?_À¾`"¿¢,a?L8~¾ÈàW?.oB?O®ù¿”²á¾>{¶¾…Ó?ã$Á?d–¾MR`?É=²?K¿ª>øJ¢¾?µÂ¾’¿p¿–®D¾°Z©¾kz¾¾ÜÏ쿨Â?¾¾ŒN+>Æû²¿—"F?à¸Ô¾SîX?1s†¾¡>"¿ pô¾†.>¾ÓÕ?áòŸ?%7<¿‡ºô¾‡o¾=‡ü¾·­Q¾¸¾d¾¾‰^‡¾ÄÛÔ¾”fy?ܾ”ØÀæ8¾Éäâ>²¾?Á½g>õb?D-¬?a @%?´¾r=ò¾’UŒ?I0œ>ïß2?>ÃT¾³½ñ?;Å”? û2¾¤âù?&Ú¦¾óñ)?:­¶¾[@œ¾õÿ(?FÙ ¾Â~^¾µÎ›?r½?t?$Ý¿§ŠA¾é½Ú?WwH¿œb•?Ø¿œ¿“W]?@\^?g$O?bd¿†ñ ½¬?d´¿)g¾A›œ?% ¡¾GJ¿ý7@¿ŽåŸ¾zÄÕ¿qk¾V88¾Cí«¾#5???ëå½ü{†¿„œŠ¾§ñ­½ü0Œ¿Ap¿ˆâ¨¾Œœ¾Ð8?8º??>Ö²?U}Þ¾sßL?iDr?#æô?eô¾¾ ©ˆ¾SU|?QZ×?8·¿É„‚?9§ ¾q'¾}y?=¾YÜj¾žO羫]?L??‚t¿†v¾.r¾Aý½ü[ê¾…p|?4zª?9ƒ¾&…¾¢C<½µq<>¬$Ⱦmv¿•œ??FľÚ͉¾º–?9ˆ™¾H5ムí,¾{B¾›|«¾ß#5?¡‡?L– ?*–?;`<¾ã3e?LåÒ?ò¾%º¶?4,¾E§j?2¥¨?&X²¾„Åú?ET¶¾“)ð?ߦ?+t¤¾¸ÇŸ?'¯6¾(B¾ÐÐ?A¾„??ª?tÿ¾c6?&g°¾ ?8›b¾F6i¾#¦¿©Rq¿—Pç¾HAÄ¿9b¾N¿¾?Kú¾­º7¾²† ?Ýmô¾Ó$^¾³º,¾Bˆ?%Ö%?'Ю?Ž@¾U±ž¾Ï_?Eåf¾«´:¿™×о>¿ ˜?:aÞ¾’=´¾™ŒÈ?ì,ª¾¦¾€òˆ¾¡h ¾ÅrÄ?8­¾yžœ?6‰5¾CÕ„?ó ¾áÚº¾uðX¾Hnõ?AŒŒ?1zz?Ë>ž¾Œ„v¿¤º‰?5„“? ·¾c%&?*Ìô¾J°¾ÄZA¾°¥&¿ŸKÂ?8{-¾…pl?+Ž+?3?-—U?òuÔ¾‘ܼ? l?>!P¾´þ?R™¾”Â?3‰$?áa'¾¯˜P¿¬?(?€ˆ¾«Œ3¾}‡t? )t? ü?×F¾¿œy?$‹Ð¾‘5„¾5{ ¾wz¼?0"p?HȾZÐ?D²7¿™Hª?%š‡¿•€?ðtš¾I`· à?GP¿üæ?4[¾—«-?Cà6?9ƾ °Ã¾#“·¾ŠÎk@cb?ÃR@†l¾ –?HÖ?=ê"¿“šo¿–è¾@¾?J…ê¾pÐ? uŒ¿˜Öˆ¾œ)¾#D¬?<¾Iº?G%TÀ9‚¿ŒË¾~ª¾Ê4N?FC£?.®ç¾(I'¾ÞL?e÷¶¾M{ÿ¿—ꤾ9ûA?Sz-¿€I›¿•¾¾ A۽ϾÉáN¾†0?å{¿‰|‘¾HÓA¾?DB¾Š[Ü¿‰Â€¾69¦¾„•L?ìÃT¾®87¾+ý¾Mþ)¾Žlñ¿•BÆ?Jy]?JA°¾«ã?PÚÞ?á¾­~½‡I̾yö(¾Ë²E?5Ë¥?ɬ;À)¾/&‚¾!Þu¿–Xh¾|d¶À[¾¡P¿Ÿßñ½Í¬?1m?Ýè¾D,?ðO®¾·3>Þ˜ž¿  ?Ë(?è¼P¾+ƒp¿– \¿‹'?Qyù?X²N¾g ö?PMD?9fP¿˜ ?Ø]Š??‘!?9Óˆ?3V0¾Á¾7,Í?‘?8ͦ¿¶gÙ¿–…¿«E"?Kñµ¾“êÚ>Çí²À:ž?! ¾¶þT¿i!¿ ¿ú¾Õbª¾²õï?*Âé¾(ì>å•È?4B$?(Ìî¾`ʾÞå]?&@¾"j?3Bì¾í„¿¨g?ãfÕ¿‘µD?æß¦?™ö?(én?Tz;º‘'¾_ŒT¿²Öž¿«X”>¥H¾’|¾¾rz¶?!Ár¾f„*¾˜Ø™¾¤4u?Q Àõ“?;£?Er¿ŸY.¾ŒC¿«쾂<ç¾o;Ü?Ô?54?&¾«|¾³Ç€¾Š¾ˆ½«ƒ¸?ºi?*Ô0¾)£?A—ܽª8N?3½8¾œÐÔ¿¥•´??øT¾É —¾šzq¾¸‡J?PË\¾¡rý?O8 ¾´Õ?~ì?ºþ¿¤S?;{Í?3œS?a?NIú¾°yÆ?D˜Í? óC¾Rzr¾Å†¥¾Š^¾¶Ø¾ºÖF¿—(.¿Ž`/? ‡V¿ŸÝ¾¶Y9¾‹Íì>#¼¿û ¾¦+|¾N ¾ ??Tî;…¿·?¯ 8¾.Ï¿Ž ?XKZ?c>†¿˜Ãï¾$ˆJ¾Žj¥¾ã’¿’©î½¸}Ö¾¦l€¿Žäˆ¿–D§?FGšÀ×Ù¾>Sä¾™@¿”Ö¶?>X ¾Ïè?m'6?Dåï¾±²<¿ƒ)?,œ¦¿CŸ?Jöè¾oK>îÔ4¾t?8¶ ¾b>?<÷?=Ùœ?¿›Á¾¶âÆ?é῾M?¢?íêÖ¾l¾’]Ù?)c#¾\rB¾F ¾ˆ⾨ ?C4¾¤(V¾îhb¾Tb?<…W¿”ìê?:uõ?7û¾Š£R?61Š?cGà?L—[?_ÖÝ?/ÿÊ?º¾Ãn1¾d:?÷—B¾pïN?96¹??ª–¾GyÖ¾Ç ¿¡ ¦?(õi¾¾¬¾ÆŸ?*Eˆ?Þò®?T’Ò?/œò?+ž?*íþ¾¡…›?)ö2¿¨*z?DŠ?(ʾ‚¿ý¿‘ -?Uóí?¡q?×Y>úW_¾áŸ»¾À󔾘éO? }x¾´+E?EMѾxÎP? ßR@·&¾ç\u?c‘Æ?o–?*&l?>ÈÊ?6˾@¯Ü?) ]¾{M”¾â‹?+>5¾z0º¿4‚¾–ß ¾új?#Ÿ>¾Ë"ʾq…¾ O¾¶É>¾|Þ´?-ܾ¤À;¿œÕ?áËh¾iá¿©0?Ô‡D?²r?K˜?0úA?6áŒ?:\¾D\¾ít‡¾]¿­ˆÒ?5³¸¿¡fÒ¾ŒZ[¿¥Ä¶¿ž'¡¾«Ît¿–ÁX?'Ó ¿œÈà?8Vc¾€ì×¾õ',? u²?â¾›˜Y?Ñî¼¾Cò¾­r? =ØÀ tÏ?ìS¾Œßk¾Ч¿œþf¿‹J꾋…¾01B?/Ff?/,Ý?JlF?FV ?8ëø¿˜Öî?"6¾BÂŒ?û?M¾$„¾¹Ê¾hû¾Ñ?Ò›÷?8ÄM?+Ú ?åÿù¾ttj¾ÞNa¾ê°?'Þ?+kŒ?#Áõ?.¨¿²ßø?½1¾u¿^•? 3?ÕÂE¾»¾¾‡UZ¾”·@¿”Ìœ@rÛD¾—ë?kÙÊ>9 ½Ébü¿’‘«¿‚hä?V“¿‰q?M¨‘½és®¾¢­?ƒqú¿“7€¾°"F?h³ˆ¿˜Z|½ðš4?Låk¾h™Ø?ý'„½áBÞ¿Ñ‹½Ä¼¿‡(uÀ ¿q¿‘Ôh¿–cü½9X¾¥è¾TŒ@?Q°ô¾o.@½ P ?Tlá?Ý[\¿š]T¾]oú¾ m¾f.¤¾œE1?@œ0?LÔ?9¹N?ëi¦¾xMK?xy1?5]¾òþ?HEƒ?KÛÆÀk÷?é»Ð¿¦•?'¡ä?Sˆ9¿‰°K?Þù¶?àG“?L)ô¾I¿¥<Å?x¥Ö?-]??[Ç2?Û¨³>7¾rC¾a{R?4ü?M9?:ë-¿‘„ê?8b«¾·ua¾ ×¾Cï"¾gͶ¿™=}¾«¸ ?G¶²¾S>§¾EÊs?T|¾¦\Ú¿¤ø¾6ó˾—¶¾4‹~¾·Ú?9ºÎ?7áÒ¾ˆßÌ¿¤,¥?#ाšÅ€?mxB¾¥ƒ¾t—?й¿P0¾€89¾í¿¾Ùب?$f(¾^ó ¾‡“‹¾¨ï?ר›¾æð¸¾€<¾l·?AÓì¾p8?Gpö¾s9¬??ˆ­¾ÜQ„¾·¿¤Bó¾Z[“?*I:?#F:¾Sq”?4…þ?5–ú¾/¤z?"´?*Àu?Ýó'?FvB¿ÌÀ?D ƾŠ~W¾7’f?ÎÎ6¾«Fä?!-0?3•€¾{Ùö?Mj³? }p¿•䡾h†Ì?0‡¤?HÁ?5ö꿞Ȩ?A[ ¾Ë  ?Hæn¾Þ#ï?G¿µFk?é{ß¾¾Úm¾¸ö¾Ð5<¾,·Z¿®ú#?>À?/Ëü¿˜q徯"À¾¼«,¾qËê¿3ˆ¿¬E˜¾‡‰~?´Ì>ªr€¿ª—°?Fål?ãªA?$RX¾°ç ¾†¿¾Þcª¾·¡%?Ñ:¾oÁ„¾…d^¾‰«Ô¿¢)¾ž‰¢¾d±Ò?Û8r? u:?/¾Â?Di¿ŸÇÙ¿”™k¾’…¨¾ž]Ö¿‹gÑ¿¨¨ð?a‘D?&àx¾“4Ò¿°í²@ÑŠk¾ ÃíÀa¾œ^@½Ë³h= Þ\?ì¬?iݰ¿Œy_?@öŒ?@[¾Y‚¿{i¾†Ÿ?WĦ¾G°½Ùl&?T<?+¾Ií}?Gô?6Oƾò¿˜Û¾¾~ H¾{>?õ=p¿ˆúu¾:ü¾/Ƀ½–Gn?Vñؽ’sÎ?_d¢ì¾ã´¾?²¹½ç–F¾9Óa?o­Q?$P:?=vò?^ÐX¿–i¼?D4B¾‹ç鿎îÒ?l‡¾ˆ­­?ýk̾+© ?û'@5ÂAÀå^@¢•À¿’<#¾ƒ‚@àeÍ@ಾ™Ê¸½Ña.?k÷û¾Î¾T˶¿ž´E¾e™¹¾§‡U¿ƒ?&¿ž‹ç?qg¾— L?^ñZ?3Iu?߬}¾W§ô¿ªP]?Dz¾&¾¥à@ƒå?1&¾4ø½ê 8¿ž>[¾”¬p?>eþ?@eâ?l/*¾ƒt1¿l’? ¥¯?‚6“¿ ´?9,X¾kÐ3¾¸ ¹¾š³?HèÂ?Ï8À¾]ÛÐ?à^?Rʦ¿äS¾9 ¾ÕÕc¾móȾ­¿¸¾ßº–?¾µ¾ÊT?0Ïh?óå¾je´¾°‹ë?âì?á½¹?;PľJ>¾Äª¿ Þ?ÛrÇ?9R¼?'þ¿?(v¾žùF¾ŸÒ?4]Â?7®Ô¾hžp?ÙŒ¾vi¶¾Ìîñ¾‡¡a¾:—0¿’à¾á}o?X?@ãÜ?A5~¿”O¾‹yG½båÄ?@mF¾4A?3¨¾¦‘Y? {ž¾ÍEà¾Û ?4¿œiü¾¢cG¿¡j>úÄé½ôNž?8|Ѿ¦ >öØ;?Lçp?-4¾­^E?'>^á\?_¢¿›âÔ¾Š[¾ '¾°K–?L7‘?Yoà?; ?œÕ¿žU^?ÆÀ¾Ž“ʾ­!?Æ`E¿¨~r?67í??o‡?>ô⿪š(¾”øò?8¢ô¾•rª¾sû?.­†?û>¾î$¾Ïê²¾m‹¾©¡ï?D5ö?âAEÌ/?d]˽#̾9»R½§?P’¼l&п„tx?ãÐæ?7‰0?;œÁ¾hû¾Äa˜½Ò] ¿‚ÀM¾[¾“ȾjÅ3?LYö?B¸>èt?éK½ËT¾壿“­¨?J¯W¿‚*¾p½h¾R¨a?,»º¾ˆ¢?B6?¨&x¾oá¹¾ÅÉ¾Ôø£¾ª Ò¾±Œf¿ˆ).?Wû„¾%>¾d‘¾a\z?f~¾Ð*7?AÎ ¿š™Ê?P¥v?ç$n¾_-²¾ 1 ?7xj¿@uÖ¾(^’¾Þz»?*k¾0!÷¾êÐøB®A{ú?RË ? ËBo˜ßA© p½õvf¿?•?/yú¿˜d澇¾XÕZ¾9îë¾´ÜP¾¢0¿¡F‹?ߥ£¾©¯¾ÏR¾´v¾^*&¿¨]z?2¢,¾š}?Eù¿¨U¨¾tþ¾Ìbó¾J©¿˜J?A¿ó?¯Ò¾oËt¾¾½{§X?o¢¿‚¦¬?á¿U¾åߌ¾”bî¾°µ†¿Ÿ•À¾¯#^¾|ø€¾.ö¾‘C¾tÛj¾}Ðæ¾dx.¾°‘Š?N;€¾gQl¾Nù‡À3Š?+«5¿“%Â?Iæ®?3½Ð?0æ¾ ¦Y¾Tëü??î¾Ëƒ|?â:—?à¾m¿‘D?.I?éä¾–h[¾¬1ï¾u\t¾N?¿§FÑ?%½é?Ú´¾Õù~½þù¸?6²?=W—¿œiø?:°Ì¾^x´:X?>f?æ/¾ˆÏ7?,Œ·¾m³?⎲?ò¥ô¿ç„¿®Cå¾ÌÕË¿™­Y?Ý>•?' ²?8»ý?'¬>¾J¬þ?Íè`¾’ħ¾„UK¿×2¾zòØ?¼?(ó¢?AÎ(¾Íf¿—Æ ¾²h?=¤*?ÞÇ=¾ä,•¾åè÷?Yvl¿ž¹¿“û‚¿¢ó„?(Úô¾ef™¾£œ¾žÕZ¾)M¾nk?âü&¾²²?*Ñù¾Æ³¿ ξ–£¾¦²¾¯L ½Ÿ’2¿³rI?<;¼¾k¹¾•³ô?0+n?íL¸¿Ÿpb¾ä}¢¿¶«aAAÓ§¾ ¾Q¥?M ¿˜Zc?:ê€?s¤‚?!á,¿”G–¿„;Q?p<h¾Š²f=ÖŠ€?a­¾BϾg£¾„,?A ³¾%Éä?1Т?[²¾†lÜ¿…ú+?Eð¾5^¾‰£; @?ó´?Všá?*¾j¾:¾…Ù½¹ùú¾g,ÿ¾¶Ó?$?ž°€¾b[ú?RØr?2ÜȾw×µ¾ÌóÜ?)¹Ž?·’?*^ì¿§M”½íè<¾_õ$?HÀ»¾ŽiU¾„J¾ºœÊ@B˜m?ïÎ(?CãÁ?;ÞD?ëÈ@6¤Ø¾ ¾ DÜ?0?/–?Ų?£á¾”3ö¾?ø¾À§w?$ª¾ˆÛb?68?K{ྣÚ÷¾Úd’¾ŠÏ澊fU¿Š‡‚¿Ÿí®?0ö¿”&x?>4â¿zj¾Ãtº?ò]þ£6ø¿¥j¾ô: ¾+}¾MA?ñI&¿È7?#›2?Óꤾ"¤i¾Æ о‡Âq¾ÂÑV?'èt¾®Âp¾¨¾T¾uÙ?-<澤ªØ?bõ­?¨Ì?V¾¨¥®?IË~¿Ãš[¾ø_¿6¾Ù\9?EP?K”•¾œ ?2tƾGÃ?<Òú¾iJð?N³P?Cù?(¨~?!x8?4e€?/튾˜õæ'*?•Î?é¼¾‚¾µcj?IùÛ¾¨²‡¿ž;ó\w¿Îù¾£.?¾}£@{±o?5.ľ¯n“?bmò?ÂXd¾Þ›Ý? 6¿šš`¿¯ÇK¾k/?4·Ù?‰ƒ¾ƒ ý?Þ„Ú¾/S¿?Ÿþ¾)µå? "R¿­¯d?ý¾„Ѿ¾Ïó¾Fï:¾†Â¾š5¸?=^Þ¾ÀY ¾Ž&?2²{¾ulª¾¥ré¿’¿¾¨¸º?<ýØ?=¤¾¬¾¬?/AV¾Ô7:A¹'?”ç?VEæ¾°¿§^¦?a„?j6¥?DZ|¿Úu?áo¾ñ„¾‘U2¿~ó®¾€ª¾€2ð¾r—’?mUl¾6z¨?>[>?W7°¾%ºE?,Pd¾ý¿•:?&»¬?A¾%>3¾˜t¦¾#ËQ?Qg:¾73à?6 X¾<µQ¾‘é´¿p’?x÷?IÍd?]¢¶¾(p?+»÷?J”„¾Ÿ'|¾(î¾”åq¿¢±ì¾ŒÚd¾Ô‰n¾*ŒŸ¾Aax¾´y?f*š¾¼¾Í?^󘾡Žp?@d?"mâ¾)£—?€Ä¿šˆŸ?4[æ½Ý™Ô?Ò?:A‚¾žUp¿‹–«?FŸÊ?Nð¢?2Æ7?)‘Z?9¯Å¾°°Z?".b¾´\0?3†g?&)^¾ãW½¿˜Î±¾¥“m?5¤ã¾ŸÙ¬¿„mK?-é¿¿.ž¾Á{ܾ^K&?,¡#?’¾¢ò?CÂÙ?5ŒÖ?/¾£zH?Jîþ?PÚb?Jƒ¾êÀüÈ>Ò†¿Ž27¾œÉA¿žEï¿°nD¿ľ´õ?<ÎÅ?Æûþ¾€P·¾ïÞ‘?'„,¾cëC?$¶h¿‡W?4% ¿Ö£?%Š?<~?ݘþ?04¦?Mà,?,4~?P;b? L?IÒä¾xg2?6gê¿)ÔZ¿©šá¾rž?›²©?Ltp?À$Ç?ÖÀÖ¾°€ê?F<¿«â“?±V¾¯*¿¹»ä¾‹Úà? [L?éÅî¾W¸º?)Œ ¾}gª¾[x6?4£C¾Q/¾ÓYD?ãþ¿šcž¾Î°¾šY ¾ß-Ì?/¸x?I€¾¥¤,¾¼r‰@;›«BáxÆ@½Ï¾’ö/¾¬æ?)t?Ür¾Œ4ؾ²úb?Ù¬D¾Ý€?.¶?Q¸^?‹®¾‡C?(RÝ¿¤œ¤?ÞQP?7&N?;~¾@Õò¾¤òF?Ûæ|?-fS¾G x¿`‚¿Šf–?~¾Ã:Ò?4bª¾­‡_?F½?&ý/¾Œü:¾yë6¾Ò¢ô?U»°¾˜‚H¾h?h¾°”@Ew?@{²?_€ ¾œ½Ö\l¾u/?N€\¾d·¾¦Ja¾fÍc¿ƒÐS?:Ŷ¾s/v¾lK´?/¹¾örC½è•¾[²™?UN¥¾€4A¿•Œm?÷î?.g¾v…à¾;JÛ?:i¿Ža¾5{/¾Pçò?+˜½µôV¾P’ë½€Á8¾jTN¿˜j¾5Þd?RI$¾ƒ«Ä¾‰/t?"°j¾(?¤¿œÕ¦¾†îýn?<™Ï¿…ª¿s>¾XêÇ?D»U?@Ï®?Q›?Ë}L¾w¾^(!¾b\¾\¼?-Þ²¾_Kƒ½Úwb¾¤ξ&]ð¾§•;?%û3¾µ›¾øH¾”[„?*F»¿½Ñ?8BоÞЧ?W ¾£æ?)²ö?EC?9’u¿¥Œy?(K«?4pb¿¯f“¾ãXC¾B d?ŒðÀ /?F>¾šôϾ„Á?@Èõ?ƾ˜ô›?%èý? ?ÛJ4?߀¾•…{¾Qò–¾Ÿ><¾Qt2¾BBö?A ?ñj¿š&÷>þcú¾œ'?2â¾›ëŸ??žÎ¾—ൾ£zÕ?GFî?ÞÇžT®¾š"?:q¾€#¿Ÿy¾v›¾ #¾«5‚¾±ãÁ¾…ùó¿¤ìI¿°h^? ”^¾Îû¾…6á¾}G|¾™ŸÓ?Gj?EMÄ?!4?`½Û¨h?dí?=?3®·?B³‡?O¬Þ¾õg}¿7íƒ?êì>ÙR?Z4¾oV\¿“x¾ÀÜ6¿š®ð?H0;¿ˆT¿™´î@7=;?ä?Ï4?*ÞÚ?¡´?o ¾Ö1ÅÀ é½¾„u ?ÛC$@Cá—?\ij?'ª)¾ŒlÚ?Gô´?2u^¾]U¾æŸ¾K8¾ŽÖ¿ S¾jëØ¾nwÀ¿¡_ö?>¿~¿¯ª ?Cõë¾¢é;ƒ¥õ¾³E¶?’Œ>üìh¿–¡?&R¾”/_?Æe®?<¡V?8ÂF>žpP¾©{¾ÖeK?Ö¬>Ÿä¨?%çf?8:ʾÊíË?1øX¿¬$ê@†Óº?D°±½¾†ª¾p_¿‘«6½˜:Ô½ÃAv?b Å¿†æÝ¿ŠêW?s»c¶À¾¿¼¾¢Wª¿‰”?óeœ?U0û¾Aú?k]Ì?AJ3¿áÛ?&&6¿œW6?7Õ…?,È ?Aøø¾#dê?*¹¯?hOC¾®óL¾o@”?HIC?M”0?DR?KA¢?*ù?G=ù?Uô=?UV,¾žMô?LÏξk¶o½t€¾¨ä¾Ó«þ?E¡D¾%ß?G?\ÔÎ?6оŒžÚ?d–h½ô*z¾m» ¾X¡¶?2(ø¾…¨è¿–Xƽ}”¬¾³¸?S¾Òß¾R|`?;ù_¾a]t¿ž·ê¾^¾WÄA?]Ú—¾ ñ?FÂn¾A@þîß¿¾•+Š?.ú¨>¹À¾R?Ôõß¾ª }¾Á4?$æ´¾ƒJ ?¿¤^¾L; =É?=ݸ?4Þ°? ,å?ÝÃØ¾É8?0‰¾Õa¡?/.¾j•оpゾ±Uz?EYí?2^l¿ G.? ¬¾2}?@㾡Ø¿£ÜR¾wÞà¾Ôù?Eh¾šz ¾{-¾´kŽ¿0ûb?C?"P¾j±Ù¾UûR?Q5T¾tFN?+Lv?$ER¾¨±¾ë¾†âѾ›YJ¾«šN¾¿ºB¡"Î@7ùQ¾ª e?Bsµ?:g¾‘e°¾j§Ä? 4?Ý”¾| ?5s:?¹H¾°d¾–b?:ú>Ì×Ù?=0¾r¦¶¿²7ˆ?.?'¸¸¾=@?5¦Á?|Þ¿›1:¾hâH?@–†@#Ì@¾ƒ>޾EYz?d ¾ .²¾I[¾é›?(Å•¿ùa¾¦|A½¹É¾˜P¾1/¾'vâ?èý¾6â½?IˆÉ¾« h½ðóò½xô¾CÔV¿’¨â¾P¿¾flÿ?>¹É¾ŒºÞ¾HdÍ¿€³à?7÷¾ QÔ¾ùõ¾]õ¾bAè¾t|¡?&䊾d.l¿ž£¤?Hû ?–¿œ¤x?I˜_¿ŽˆÅ?2]¾A?F¤b?—Cb?âñ.¾÷|i>§s¤?.gð?XK‚?Ds¾¾­v>æÕü>òt?-·ø?[ø>™ÙǾöÀª?3‚ð!?Ïà?Zn˜?%h­¾’QÇ¿”˜?æ‹4?·l?C›Ï?Ít‡¾¢%¾Ò{&?3†ˆÀ ?ò!?68&¾M¤,¾¾Zß¾ ]v?1ì?Q8%¾’«P¿ 5¿•üì¿—­î¾¥IA¿‘¬¾¤P„?S‰¸?#™?×Ü%¿ ­o?K‡¾¿ª{8¾Y‡5¿ž‰U¿—ö¥¿¡Ï÷¿œQ2¾¦’?ÛyÖ?šÏ@?UÚH¿+´ó¾ŸH{?%x‡¾bu˜¾XÁÒ¾´Á¾Ð&?07è¿–B? %?2Yr?!n€¾„s×¾à?2”Ⱦk§\¿U^¾àž«U6¾‹Æ¶?Fz’?7>?%\®¿šIò¾ˆå¾Žâ¨?æ•c¾ð¥¿›7F¾C¼Î¾˜¬°?W ú?6ƒ„?4>?оž¯¶?>v¿›ÿâ?$žœ¾…-}¾ÝjP¾4rj?? Â>ù;c?Jпør?É1A?ââ@7ê¤?W˜R?.¦Ž¿•¤h?.‘?[àl?2×å¾%²¶¾’ ¾D>^¾ÄêG?ð%¬¾ß9¹¾9¡D??.â?&CÔ¿¯wü¿¨z¾†³¾‚ÝW¾_œ8½Ç)v¾ØÅϾTGý¾°Gì?æ§?àQµ¾”'G¾¥ @¾~ÖR¿¶œx?/ˆŽ?Ú[V?ìÏ?qÂ? Þô?7Ⱦ.M0?.¶N¾Ÿ…¢¾¤Û ?4òc¾dZ[¾{¨?/¸¾²8¾ƒÚ‚¾ƒ Q¾d ½n³À¾8°·¾Yõ?]ʾ ž?‘h?EWÄ¿R8¿…̽¾?OD¸¾<)3?…Ûœ½OE¿–±³?¢§+¾‘⊿“ þ2Û¾£À¾¾¶Ú¾.Ú{¾pý¾4‡>àT¸?(Y¾ '?'v6¾ky—¿ƒŠ¾ þ¬¿Œh,½ñÑ6?(ëý¾&Vl¿‹´?:½¿„ Ã?]õ¾QÝÁ¾_(¨¿ è„¾5üW>T›?@’?]”Õ¾2m㿌 þ¾0nöa0¾u5¿›Ö¿­Í>û½?Þ–_?,r/¾Æzm¾ µÇ?,?Xe>äô°?Fª8¾îv¾„ ¾t•²¿šîÇ?&é\?.@"¾ú¾4‹¼?t‚¿Ž†ƒ¾˜Ý½·Ù ?6L?Af¾¾â¨¸¾¤oW¾Ö’Àྀ¦p¾U§|?•ä?/U÷?TJľš[?ݾu?U¾‡¾N«°¾Üƒk¿”?U@„¾Ì4+¿™Ûæ?FÅŠ¾‡7g?Öàj?Ne­¾ÈÊM¾€ª‰¾âN8?;À¾qún¿“ö?19v?p¾ßx¾°­àÀ Ëù?H-®¿³ÂJ¿žšo?<ø?$t™az?Ϋ?=âU>ù;qo ?—¨¾Œh}¾nf?Hlz?1)7¾adr?Òjõ¾ q?õi3>ïg¾ B½ÝZȾ‹eT½"£d?BàÕ?TÌÑ?RJž¿–í¾kùd¾vÖ¿$L‚¾‡be¾qzY?7V2½ãМ½æåú?n(ª?VAR¿an¾-ôÝ?>E\?Uœ¿ýè¾q?I¨0?|¡Å¾°à¾JD?#æ‚?Ü©¾Æ½ê&¸½ñ3ؾÕ¾«§¾aÿ,?4“ê?R×¾„È¿—Ü)¾q@ ¾q•”¾i†ú¿†CŽ?@ëS?ßÊ‚?J‹ê¾jJ¬¾Sbj¾(zû¾€Î¾&æ¿“)¾?¾:¾4ØÊ½‡úÔ?A w¿”פ¾ðľ”|ø¾©W?Aq&¿«8¾6¬Z?2ò¿™¿¾”6¾£ ?+‹ð¾«ö¾ˆ {??D²¾ÆýM¾© ?-Âz?U¾JóÛ¾Ž¹Ë¾–(¾ã?ëœú¾¼Æt¿œ è?1Kè¾»fÕ?<<8¿¯ld?G3ï?4ÿľÑt¾ÆFû?H¢’¾³ôm¾J'D?'ìð?>²¶¾K$R?3vÏ?£Ð¿¬S.?fVÀ üb¾µ×¾Ìܳ¿«Ú>ø¾®>;?}®?0#?%<â?Æ¿‘„–¿¯@= ¾ÃÀ­¿–ƒ ?´b®?'³ÿ¾‰n¬?EÜI¾´S[¿”÷ϾÅ•?*fô¾Ok#¾t²ê¿“"‡¿é:?-g\¾ƒ!i¾öEÔ?T°¡¾ŸêÈ¿¡¾ÉØÙ¾_`¾šõ£¾‡?!‡š¾¡x:¾‡”6¾½½á@ƒ˜Î? yD?¸°¾ÉdȾ³Û¾ŸÍâ¾’8I¾>ã|¾Æç?GvJ?M6w¿§ v>”[¾Î>>¤<½Üƒ6¿ñ>Øš}?;äN?<<ô¾¸ C?(¤E¾—ƒr¿šÛ?.@æ>ÿ}¼¾P¥‰¿—ˆ¾@H?î´@?dª¾ ùY?#º¾ þ!¿°­v?9›r¾‰0p¿9å¾Ó®U?$Éî¿”54?GàB?>ˆ€¾d@꿊ؾ|Û¾¯§?QÕ(¾fÂ??NÕ?Sëá?Xu(¿“÷g?ë*¼?PÃ.?tX³¾¨¾ô¾gX¾àÿx¤¡?8V«½ö¡€¾­@ø½‚å?6”º?ÔîL¿–Ö0½Y«ô¿‰ ¨>¡C4¾rÜ)?X£ø¾5üI¾T¾„?r¾@ƒf¿!)?WË\?E'+¿‹>.¾”ýоÌ{)¿£6̾ù¾;—¹?Dh¾›R\?Oî·¾• I¾‘|°¾ S±¾5h¿>ô‹s?B˾—4…?ìþy¾¢ÈÉ?^Få½W§Ø¿ŠT¾«€Ã¾¢œf¾A§?+8h¿A¾”{¾Y>Q¾=?*né?`(ü?ÌxÒ¿:O®?°?–»¾”Ü ?I‹»¾€ëH?W¾f?€Ì¾¨v>?ÝWb¾£gV¿ #*?Dcu?-º¦¾‹uô¿¯ˆÐ¾KA¾´æ?Sz?æÃ?5c¾È`Ú¾öŽÀ H?%ó´¾ÈŸ™¾=]l¾¸Ë¿’Z¾ï¾“J˜¾ž“x¾¡ÔX?:޾¤Y¾„ª®¾ÛCX?(Ç ??—2¿œžž?7M–¾7À¾˜g•?*ªÌ?*ʾÈv§¾4ù—?6 ¸¿œà?$ûE?3Lj?åÖI¾‚=¾švÔ¾šk6?"Uè?2ú¾·äü¾0¾¾Ïtu? §Ž?58¾0®¾¶sŽ? ä–¾¡ Ë¿ Ú‘¾”­q?¡$¿˜t.¾žTB¾å¾Ž)Ä¿¨á™¾”îö?.`‹¿ò2?"{ÈÀI›¾ŽÐ¿¾µá¾ôPš?9ù(¿.N¿ªß\?'ò¾“ ¾Žª¾’w=¿ 3-¾‚r?Îù¿­[z¾¹˜¤¾QH¿ @›¿¦¢D?#¸F¿‘È?)nT¾ž?ÊQ?;Zˆ¾Éå­¾ÂÅ“¿—~¾•ø¤¾Ì?8M˜?}连Ÿ¾Ò  ¿›²’¾˜!ؾ€– ¾ô8á?ÛÑj?:©¾NÞ˜¾ìùÍ¿¤di¾­z¬?öò¾÷¶?.@¬¾—§ö?¬’¾¶cí¾Y¼?B••½>'”¿Œ\„¾#½½9©ü¿’•¾?Yˆ?f½l½ÅýîZÀÌü¿—þì?H¸©¾¬Œ¿œå½;'´¿–©é?KAǾ[m½S\¼?Õ³Ù¾†/ÀU3¾¿Ñ¾“ï¾N%þvãR¾ Ô¯¾1Âñ?!±!?L½Ú?î¼Î?:;¾vjâ?2FÃ?N…4¾¼ä¾#è¿~˜?`°`?ò‚H½}‹Ô¾k:?;˜\¾¿ÎX¾ ä¿¿¥5p>ëæ&¾Ý´ô¾Oaì¿¡\ç?M5Ü>íê¬?-ѹ¿½ ?+O,?Fˆ‚¾n%F¾€#¶¿Žl¯?,Î×¾Ò°#?0v•¿…ôè¾7½¾ª¦?Eôä?(¹ì¾¨ƒ?8€à¾†ùC? m¿˜T#¾§s¾¿›%^?'¿¼?E陾^ÓÖ¿‘ݾ–ú?ªp?1ór?F¾Ã)?$’?+ÑX¾Ç»¾>JV¾‰9¿—µ¶¾á3D¾”¯É>Õ³¾-Ar¾kîr?Áo¤?3À¾šQ¿ .b¾òK? I"¾’¸]¿«oÖ?µj? ꂾ6¿‚?;%Œ¾I˜?F¿ªNw¾mË:¾{n?2†?ä✾g£¾‚4œ¾ µ?'úþ?—¬?K¸? ½¶? fø¿žâz?(4æ?ÒªŸ?Nöоgb¿©Lô?%©¾… ƒ¿±ËX¾¦2•¾XȾ‰Ä¾—a¡¾«ØZ>ûL̽î7¿ªç¾µµÞ?/v¾ÌL@3Ψ?,2Ⱦ«”i¿Dx?!E5¾d?n¾Ÿ^y?Õ³|¿nãm?v?ÑWì¾’VÈ>ëUx?"bª¿§íþ?CVÅ?Ï ¯¿«Ö¯?ÁÆk¾¿ÿj¿€—”¾NX½ŠÒè? ê^?Ü#ã¾E´?¿Ÿ_†? ?VŽ„¾Åqú¾®¦„¿¥Àˆ?)³p?8J¾-¾€™á¾”GοÈöö¾ï¯À?¡À?E¤J¿©ƒ˜?@@/>ôÇÌ?-CÜ?Ù;èFb?ˆ¼¾bQ ?ßP¿”‘(>ñ™¾qÊ?ÖÐ]½ûí(?'Ú>¢\¿–º?S^¾—­¿€N´?HéL¿žD÷½½Éª?ö¦¾OØ1?dBà?FË6?"Io½á¨?G6^¿¢DZ?f“°¾¾LR¾€ÃÚ¾`Áœ½¥ór¿£"U¿‡ÿ¿¾B)¿”c½l±Ô¾d4Ö¿:Øí?îŠ:¾Á?PŠ|¾'¾C1ƒ¾Ÿcß¾A!Ò¿€¨3?TX?@ôv?K‘T?Y7ù¾¤˜I¿˜?XËm¾Bá?Tn¾rº¿«!¨¾“ˆµ?:;ô?'ú¾?9Å8?BØo¿’.ԾȜÆ@0oÔ¾Iâ?[Ÿê?g^?U/ü¾”0§? Š?Ñÿè?(¶¾ˆFU¾‚°%¾^Z¶¾Ä0n¿”S ?=,H¾ƒkd¿¤2p¾Ê« ¾O~ª¿–Å{¾z/|? :¾Š¤¾ž4¶¾Æ@ô¾uK*¿¤°Š?3¶`@>ŽŠ?1'x¾‘Ͼ°_O??(¿•„&? ¾“Z@ybêA˜Ï?׸¾˜äÞ¿ù¿¢þ¯?=Eô¾n1p¾‚¹â¾‰è¾d“ ?.GV¾“|D¾º³¿Ÿ©S>å—’?%X°¾•<•¾åÙ>?#(¾%?0J’¿œ@4¿ xY¾ûѽö󊾬.Ž?9»z¾€Q—?C¶í¾ Û??/#D?Ù ??(3£¾–8/¾™3ξ¬­y?9ô¾¡p?G,è?)-x¾³˜t¾COd¾”ü)¿¶~"?GCr?±š¿+¦¾bu?Gšè?×B¾›~L?&/t?=ßÖ?뎾4'L¾Åv>îÝ1<+A@¿Ÿõÿ?Ú~?´I¾Bœ›?(Xx¿©\n¾'@?Nj¾B7ð¾Ðî-¿Žï¤À 5¾˜Q ¾"Œ§¾cM4¾Rl¿Üë¾ÉÞ?Wúß¾“H¾{^¸¾üõ¾å·¿š €¾cÇ?8)T¿‚õ?>v¿˜ò†?[Öd?Þ@r¾F5#½b¥p¾ª‘ô?$?9-¾/¨?Be?LyÐ?Dò¿†“?F)F?Kg¾‰¿œîоkZ¾e¾A™¿–‡? iŒ?A(?9Ï-¾š—>?Mi)?!§ÓÀ 佽賲¿‘¾_zľ)Y[¾H¾{?6ó¾ U¡¿“¹ô?<×Z?#)F¾°å ?šø¾8%Ü?ô"?ÝY¿•Àª¾½Ù¶?/-S?DÎú¿Ÿ=M¾ŠÑ3¾w2g¾4˜¿› Á¿‡7€¾P,æ¾SÕÖ¾Ï7ý¿Š»ö¾¼P_?+w.¾n¯þ¾1cê?*‘Ô?'`Ÿ?"ä?Úgƒ¾VJî¿•XÔ¿¤Mq¾g!”¾ù¿–Åä¾— ½àÖ¾§$î?ðw6¾„¿m†¾k)Ë?* ¾,Z‹?I¦ê?çê¾ $œ?ëN¾“ºz¾Ž‘¿•bÄ?ÓÖ½¾¡ ü¾U Ë>÷zr¾†Îö?â¥Ø¿§h9?O¾TƵ¾^?2°´¾*sп»h?tâ¾ 3Õ¾&°g?翺¾¦¡e¾ˆk¾ŠŽO?J¸?<„¾÷-˜¾òj™?¾öSA泬CAÄïB|¾f;é¾HÎâ¿¥úξ¢#™¿{”?1îx>Û§¦?(Û ?/Ob?bÈ?L¾G?Pcç¿’§?-ëL?D0?Ii¾ƒŠ¾CeU?[Y0¾§Ø¢¾ËN1?#w’?Mš‰?l†¿¡/*?$<¾›1 ¿™š¿@ò¾¸Õ²¿’êó>á3(¾—dE?èõê¿kÚ¾ft¾ˆv0¾Ì(¾ ™å¿œ½u?0r?ç²!¾„®X¾£оÞ-c¾¾_q¾ðH†?·¦¾cÚ¾vÁP¿˜¹ý?@L?/x¾¬9¿—.ø¿že’?\о—\4¿“÷P?Â×¾9?1?$FI¾‹º­¾¹•‚¼‰ä࿟,S?Ažš¿¤ýÈ$<&­ ½²œ¨¾UÒ?9Ë2?ULé?WeÚ?Múû¾ˆоb!Õ¿ŽÕk¿–½i¾,¦ë¾[ûi½0ú½Ö³H¾2‰c?j¨?å'¥¾?§½ÉEN?>Q6>ð1¤¾iAž¾Eø¾k£¯¿‹e«?2¿—:Z¾Æ®i¿“ æ¾ j;X¢Ž¾‘ ?S“ ¾»¾,?SÑû¾[PFÀ2æ?åx¾kºv½êšŠ?e?Ƚ÷«|¾JV?7C¿›Ù¦¾·»¿›MŒ¾ŽÆÛ?G`??áp?GØÐ?/þ¾¬3a?[¶×?ýŸ?:uu¿œDm¾æ€¯¾»徬tõ?]|¾œ¥ù¾%$t¾Œ‰L?ë‰#¿™q:¾w¥P¾½¶¸?Pû°?@q¾ ð龨û¿Ÿ4K¿™Q©¾Ë9 ?6jŒ¾‡Ü?&ÿÕ?ãt?ú¿ž i¾±Þ«?\¥À¾¶ß=¾_j¾dX?RüP¾…$¾?ès¾{€?éNf¿¦Íø¾_z?0®?~.¿©²ª¾‹¦?Z?êä0¾„'¾¯f ?7b ¿‘ Ç¿§ðÙ¿”98?=@?uÜñ¾¼{©¿œ`?.ž¾úho??U?'鯿ŸâX¾±<ê¿¡j¾Ÿî(?õM ¿›þ?-î¾J¼ß¾‰—¿±o?3ѯAARBÎXBWœK?Ûá‘?ãZz?G(Æ?ÞÁ?á:É?3 ‘?íŘ¾/ß¾\0¾j뿞()?ÜˆŽ¾‘€Ý¾·0õ>ð'>È2?9Ò¾‰;¤?"³û?6k´?,÷ô¿´`Ô¿˜¾×jN¾‹™'¾7?CS–¾ k…¾CËÚ?Qd¿©¼*?O¾n!N?ÜP鿪á"¾ë&7?rð¾Žøº?-ºŠ?FŰ?&w´?a澤’Ð?,4¾rØ?5ãT?-xžÔ¾@±0?õ]Š?¯¿²a–???)Bξ>eê?#ž–?/hP?0`†¿¡x?Íp(¾[v.?9ß¾Áä¾Ïˆ2¾ŒÎ?>‹Ô¿Én¿žÓ­?Mž„¾ÝR¾H™?;ï¹½ÿâ ?VŸ`?Þž¤½ó *¾Þý?;G¼?l’¶¾57™¾3„–?ÙåÛ¾ƒlÓ?QÞ¦¾x?C\”?Z¬?Q^?Ti*?* ¿˜}I?ë?}(?A~¿’Sœ? ñÙ¿’IÃ?ëþ:¿¤ìµ?W>¤¾F)S¾é ½Úð¿!$Ò¾‹Ç&?iQξ‰HD¿œW0¿¾–´?Z!$?:{C¾pä6¿­.M¾5»?+Ä? ì¿–5å¾±Fß¾\ÄÌ?'n½•‹¾\n?@³?PÜB?‡ä¾º8Ò?-YS?% Œ?ESÇ?M͆½æÄè¾R¸¿ŽÌÔ¾U ?BÅ}¿”mR¾0X¾Ø° ¾0ð?7B ¿˜Í¾M•¿’9L?=¹X¾eT¿§ó8¾Ã_[?&é,>  D?4;ª?Iz=¿"ò²¾yµH?'À¾i%ÿ¿”倾º C¾¯¦|?Kêz¾›©¾¬„H?!ã%?漿™:|¿Ÿc‹¾Fû?Hò‚¾–Ö`¾©·{?\«ô¿™õþ?›x?+ þ¾ÂÔ?Bî½¾–ê¾ØY`¿™¥°??‚þ¾‡$0>ò5f¿š¥²¾¤Š†?<í¼?*w6¾‰T?;‡ ¿¥YX?)«v¾sÍÚ?M‘¼¾ žh¿§æœ¾o­I?U7?9^?PØ\@šµ‘A=Ý?ÞØŒ¾‡å+¾Ã}ÿ¿¡–²? BÐ?2=¾›\¾U\ܾð 6¾­Þ¾³%㾎Sï>ü¼(?ç ½¾•ĸ?>5q?8H?OÍ^¾XÉ2¾\H¥¾uZl¾¯ÌE?>?;r¾Ä;?!ƾžù¾þD?%+l?"Ù¼?Ý‚þÀû;»’¾Ð‘O¿¨Ž¬?Sò¾ªÕK?&¼æ?Øé?)dr¾¬n(¿œ辫¶­¾¾t¾ÝG‘¾€³N¾å}í¾˜á¼? ³´¾Ù“;?f¢ï¾žL޾Ÿœƒ? -—¾œ‰Ç?,µ`?>Ý?8d[?5†>fþþ‚q¿†¨å?Ntq¾€¾K4.¿Œ¨¾nÞM¾™}*¿ý¢?P°¿¬r?N+¾Ká7¿uÇj½x"xºL<?9ý¾QÏKÀÎX¾:Ú£¿¡N¾ µ9¾¼SC?cµ±¾Ì(ê?N’‹?@#X¿ŽŸŠ?A\¾ƒ^?H&¾;Mc¿Ÿè?cö?i+ ?SñF¾#Ià?MÞ~¾ž4?G: ?B¥p?AÝb¾°ßؾ…×½¾=z¤¿²ç5¿“¿•ªÖ¿³©m?uå>¿¡-Ã?B1°¾^F¾€ït¾—¦c¾ïŠà¾qŒ|¿ª#4¿#€æ¾Ä9›¾…ëŽ?T-X¾Ù N?Æ´¾­µ“?- ޾¿‰K¿‰`Ô¿™*¿‡[À æ¾ w¾œŽ$ê¾y50?PcÅ?<.¡¾˜+?1×¾x ˜?=^ï?4 x¾¦`W¾½Öo¾nTL?&\B¾¥½??2 *?ìsÍ?A!ê?Äö¾fº7¿ª ñ¾xø€?D©‚¿§'¹¿’Òø?¾qØ\¾š¼µ¿˜€U? {¾"C)¾%ò?F¶!¿›Õô?*§?YÍ?#Ê¿¿¢lè¾ù¢? ¿U¾g t?ø‡¾³5J?.âN¿¤z ¾ÆB¾Óõ¦?7¢¾£úô¾µuÝ¿‘7?I™¾{µ?Bó?**@¾<ã¾?ï.¾žÞ€? E?Í¢ü?+Õ.?8ó®?&gd¾¦¡Ð?TE ¾¿ÿ‹¾³Íq?T°¾Üõ¹¾¯­Š?1ñì?˜Š¿¨ ?6u¾·ÿ.¾A޾`ÂÔ??㮿˜¾„¾µB9?Ž+?J'?>¹ø?.Ëà?Úg/?#…&?<šî¾¨Ç?7A·¾¥EI>_`¾Õõe?ÝÑÀ¾dÞ¾¨F!¾‹Ëœ¾mø²¾Ú¬>Oð¾ÁÍ ?0—ð¿€Ï?l÷¾u Ö¾¯ È¾Ç ƒ¾¬T§?"¥¯A-ÒíBÅýz?Ò‹°¿Ç·?:2¶?4-¾à’p?»=”ö¾¬»L¾šð¾“;_À?C[¿˜K’¾Âg–?6áÔ?Q®¾§ym¾ŽÉæ¿»­p?îW¤½Âн•s¾Q%¿“ßï¾CŽ™¿‘zU½È…¿“^r¾r)¾Òá?Y7R?PÀ+s¿óš¿W¶¾¾*E¾š\ ?`¿?R)«½UÙ¾Š¬>?K6¿tÐß¾R&v?6Œ½³îZ?õ_4?`Y?ê•”?Að¨?,tœ¾EÄ3¾.wd½pä\¾a'ú¿šu¾¢„x¿„Ñ¿‹`ƾ~Ù/¿ƒ+î½ó|t?&Yê?CN¿ŸA뽯Êh¿¥#>‹6ƾ s™¾o}§¾4?\éÙ¿Œp?=Ï~?Õ’?FÅ?1u?ÀÞ¾´à†?K̵¾F;µ??Õ¿¾ºÏ4?JŒ$?,ñË?œüϾÿo¾!Nº¾‰+ä?_pr>ÆÐV?ç@Ü?$÷¿’v?n,Û¿‘q4?Hdñ¾w0ˆ?N~ ?ñM¡>¸Mˆ?êµl?à¦s¾iÖ?:ó!¾RBÚ¿™c5¾\‰Ø¿€?B–r?5å*?ÝõV¾J»¾‰Ð½®K¿)ìV?#åh¾;?$sU¾š¥@¾ÝÚ¾_Ì?-¾1z¿—œ??¢ž½7<½«D<¾®ˆ¾Œ¶¶¾GöÏ¿ŽnÅ?Vw>¾1”¾ ÿ®¾\/t¾V.¾h¤p¿•?`ZÈ¿£³‚¿B a¾C…Ô¿ƒâŽþœþ½ÄzÜ¿¢=]½ÿ´à¾üÙ?<@±?5y#¾&$5¾…÷O¾[ÄÆ¾‹0j¾=tú¾³…K¾F¿^q¾s(¾’ø~¾GÀ@¾Ví?-YȾƒk¿µye¾¡»>ܾàE?Bk[Àn×¾Ãø¨?0tŽ?2ìb¾{O"?˜>̆~?I‡9¾›Òñ¾™;p?å¾ãS¾œ^À Ae?æÞ?PÄ?"D¿¤W×?lÚ¿wBŠ¿àv ¾Îòs¿ªó¾>™B?&®?8vT¾··L?3T³¿ „é?ÇÅÙ¾÷:?^ ?.T?^©¾†¹J¿Šˆ¾rŒ<¿®¯‚¿­ã¾‰ËÛ?MA²¾–Žî¾¡àÆ?, È? 7¾GL•¾¨0¿’º˜¾yk?Kt)?æÀѾµ­·¾ÚõQ¿^¬?9?ìeÖ?cø¾„?Í?2ìF?J®?Eƾ1§¾D›?*]¯¿ŸPO?9£¾9) ¾˜ƒ¾y½P¾IR¾û7¾Ràv¿ ½ù¾åf<¾ŠõY?:Ù$?Oaµ¾ >¾bì¾Õý¾”Ó㾃Iþ”ݯ?&–?Ú|C¾G¿ü¾…öù¿‘ ¸?º6?'K>À¿Çˆ? $?SÂ?ÓÆ&?^¨t¾±û-?Göj?æNt¾€—Û?*«¯>ùè¾Õn@<*î@=äL¿š¢?K¬,¾…ÚÈ?S¸?í·ß¿%ä?@Ÿö¾€ªû?%u¾´±Z?*ûŽ?K×[¾vÏ?Ó‡g¾©?"¾†“?@Eÿ¾‹¤ð¿ó ¾«çè¿„Ê-½Êc>¿ƒþ¦?_‚½fè?=«Q½ÿkо1à?@ä‘¿™‡?J#¾ʽâÅ´?FŒ‘?M€7¾CξÅ|?OÁŒ¾X¤o?.YJ?\Jľ|º?¿“šC¾V’ü?062¾Š2?-LÐ?,Š.?B^?7Y6?.ž¾.ˆ?3²^?&¥z?\R6¾‹|d¾7jÏ?= À¿-P¾*ò[¾†ÑT¾·Þ¾ÒàV?6M?@ ¾¡\?KLì¿”Íf¾äò?0â ?UCȾ¿Šã½ãgV?DVè?ëe?#_n¾5Lù¾™¤ ? xÈ??§¬?6 ¡?ÜGW?](ö¾ªC%¿‡Z?Uþœ]7¾¨ @¾OsB¾g$ô¾‹<û¾¦Ÿƒ?K%¾¿§µ¾\\¾•>Ä?FË…?,˜.?D— ¿—h¾M™S¾š6|¾’ˆé¿Ðù?ŒÞ?Ûè@¾¥>¯¾‘Âo¿.Ÿ¾Žó`¿¾F¾Äk„¾äM?Qpö¾¬Ç1?%ξ€o‰¾­¢ˆ¾½Î(??ŠZ?â"ìÀ t6?F-¾?5“¾¤ ¾ƒüS¾)Æ ?5¸?ÿ,?)…”?ÔÂä?æ¿?8 ¾ÐìG¾³J¾Žäõ¾«T¾”]ª?AxR?nÖ?*?+JÎ?›ó¾pCÊÀ p¼¾q0J¿!¿–{„¾ÊÀ¾¡¿.hÔ?ó¬?!´¿?0÷?0À?UzK¾àüɾvê?iƾé?ì¾l’h?.d¾?†¾¢&c¾\•ä?!g¾¾ eÀ¿®i¾| l?Ú$꾆¶>?[ˆ?No8¿–p¾^úz>‘~•¾ÇU?û޾EQ¾Öõ¿9?6Èã?3¸Àé{?YMÚ¿™¤AÀ ˆX¾?®®¾7#â½ð=ì¿?7gå?L§Ø?K’\¿’ Š?"ZÞ?s’?eYŸ?x0A?6:À¾t¢ ¾MõÙ¾÷²FÀ¿˜÷Û?;+þ¾"Ä?B]”¾„=C¾’ã"?3Éi¾\Ì8¾Êš?aj~?(q{½ÂÔ¬¾ÀùÃ?/àȾI¥¾‹"æ?1“Œ?Nj¨?1R?B—ˆ?Dp?Bp¿™™?A뾬Kû¿´Å*?0V?B´ò¿îX?›J?G;Ü¿øö?&Ôô¾p'a?Üϼ?UG`¾»!-¾AÑ?'V¾–R?,*J¿¤m?&¬¾Wð¾‹Ë¶?.å=?F‚<¾4;"¾Ñ´¨¾ŒØ?p1¾( ]¾§e7¾Cƾ?<(@¾Ÿ Ⱦ¶%o?Uv¾3eé¿!s¦¾³o€¿Ø¾«ø2¾Œ|"?1Ò¦¿œŠ ?ë¯?;°€¾·•…?"ê>¾±Á™¾†Á'?È•Ø?)å2?€J¿–Ç?'¿œlÄ¿²Ê’?*¯¾“ˆR¾ºþâ>}”¿¨ Ê?Ìæ6>ê©°¾¶œþ¾ŠÇ·?Üý¿1ö¦¾²¤¾Ù\¤½à‹"½ô+¾œ Õ¿”J`¾Ð¼Á?#“‚>Ap0¾É1ð¾Ù€}?7¿å®?Ö`?Ó¾ŽÃ]¿X¢?àg¨¿__Tr?7‡/¿­)ð?@R¢¿¢‰Â?/f«¾‹-ë?(¾?–z¾² D?îìÛ?:Ó¾É×ÔÀP¾§×€¿²z?“X¾Ž¯A¿Æ?K "?¿œ¾Ñüd?Ú°¿$·?FKz¾¿æ¿’mo¾œkÉÀàl¾¬¼¾r¤Ã¾¡<–?R*ð¾0‹·½b(x¾¯4ä?BsÌ?Y?,Åf?SÔ°¿¤Lº?*Û´?Dve¾€ôd?R/?9^Ò?=”X¾=°Ÿ?öAì¾Õ”]¾¢Z¾ Ñ¾ƒ/Ó¾ƒÄY?zS¾Ìñß?bE?êò¾¾m ¾•/n½‰v¶?ýø¾§É‚¾#ùÚ¿†T‚¿¥ó ?R²?-Á]¾sÛU¾‘m?,;q¾›t¾)0ô?Gâû¾—ú¿¨êƒ¾+ È?~û?@©¾6+*¾”ç]¾Êþ¾2õ>¾U03¿ˆçA¾sö?BQ;?$Ý1¿–P¹¿–çô¿=‚>uœÔ?ëi¾¤@?¥f¾»6£?\’Ž?/½¤M¾«w?í/ù¾­¢â¾nÕ(?Uí1¾Œ&a?,‰’¾nž5¾SF–¿”À‹¿«—)¿žd‘¾Ëºˆ?7Â4?#à ?0x¾œºp¾Ep’¾ #©?Ä‚¾´‡o?BC>ý½Ð¾-Às¾·ž€¾½Dí¿W5¾‘ᆿ¥^8¾ºÐ=?)¯¾–Cî?%ðf¾¤ž¾ÅçR¾† º?2 @Ü}@>ÖŒ¨¾ŠÎÉ?_(?DÓ>èÆ3¿¬¶?<€?¾H?Ép¾¼Ä¾©•¾¦bƒ¾Š”0¾Í’c¾­Z? ›’?4HÔ¿“)ù¾ý_6?T”¾´K?0†(¾®0ñ?.T©¿¯Zž?IÏr?#«P¾“<¬¾e¾ž¯¾Èú¿™`N? Ž4¿¤ÃH?½‘?=³(¾”f{?%yV¾†€¨¿•z?I°?Wp¾Ð×Ä¿¼´&¾˜D]?OL¾¼;{¿šã¾—¦¾ìi>û÷å½~‚,?)Ø?6x¹?@”0?¥Ê?æe&?%6?Ø?ìåY¾Í;¹áƒ¾ÀÖ¾ÿÉ?Ú-,?.Ý:?+¡6¾Z/‚¾£?Q{Ø>ôc?ÞÛî?7a—?*ºb¾n® ¾p¶ä?'ì¾y5¾®®ª¿žv±¿'ë¾6-¾Â÷x?XŽ6Àþ˜¾uVZ?nØ¾ÊÆû¿“.‡?4öm¾îÈk¿‰-ö?Yˆ¿ˆó¿—G(?X×Àgñ¾\ßà¿–gÙ¿ˆ›?"÷‹½4Žx¾fܾ.멾~s?U±ü¾H_a?(ãr?>D¿Žˆ¾U[˜¿ˆâ&?NúL½ä,¾°“?Drh?7À¾ ¹?Xj¾¾BÝò?Vv¾T ؽ°Êr?2N?0Ç@¾œÈl?@£~½ä+ª½t¯0¾³I%¾FÄw?Řú¿Ӿ̻°½œJX¾º3:¾6 7¾eÇ|¾aÛ:¾=†ñ¾¶Ü¾ŒRß¾mÐÀ¾rÉ¿€¸,??Ž?6F@?b‹Â¾ŠŒ×¾°¼K¾€C¾Ž[?0좾ÊÓ ¾ˆ,?8?Á¿œ™Ð?8¾)©Í?5!?7q¿©—ͽç‘2¾R«ò¾,B¾vÜÚ¾Ÿ¤¤¾’þ¾êÁs?ãTܽóì¾¶ø ¾[ ê?Ræ–?ÚSá?7™Å¾›YN?Ú%Ò?.qŸ?éT?dRþ¾£¡À?;Ÿ0?5¢¿¨ô?t?Lu²?U羇­¬¾Õœ?D œ¿ªV„? 1P?Cþ¾Í½y?1î쾌€¿’¿;>¾gƒ?0³æ?,Ï4¾¾A•? +&¾–‰c?B•¾Ðä?0Î?AÔ??—??d6?d{?9‘ú¿©—Ë?Ú´X?UD;?Äü?<§l?êõV¾~r¾?ë ‰¾¯á/>űF¾Åö?C¾†d?$…^¾¡«{?ì&š?º¢¾›åY¾]ãZ½^þ?E‘6¾qÆ?1Ô@<0 @¼ ßA…åL@2 ?Ùξ¾ 4?Ë{¾¾¤Ò¾±p?OD¾n̾ż®¿œä?*”ü?4-:¾™zZ¾¼¾É.?^õr¾Âü»?#’?@›ª¾H‹¾–<è¾Glú?9Ì쾄I´??2R¾î˯¾­™¾•h¾Ás¾Šr=¿¾(&?Ef¾–EÙ?-Íú?EB|¾|J2¾¥øa¾ˆ×*¿¤$?(‰q¾î„@¾š¿¾j½ ¾§š{¾†š½ñÇÆ?*-‚¾žî˜?ëÆY¾©Ô?zíÀ%Û?Tt过…õ¾.Ùì½ì¾û6¾V»‚?2¾4¿…Fé>Ëù¬?r˘¾lüÁ½¬,4¾A÷£?KÂ?p%¶¾)Òs¿œG€¿¡¼Ÿ?>ý#?EÞŽ¾PŽ`?KƒI¾ -½ò…°?3Àø?'›Š½Œ‘°¾³˜o¾½½ãtx½W¥¿¡‡{?H~Û¿‰÷¾¦¨Ä¾&%¿›ó¹¾†}¾"ˆ ¾)긾‡3P¾’Û¾gô? é{¾/ì?PßD?+šR? &?-¤Ä¿ªR¼¿Ò€¿›I¿†›?9!!?j¦U¿zN|¾¦aツQ]¿š2Ò?H3¿ŸŸ#?-U›?# ò?= ¾º Æ?Q»f¾â缿§x¾–Â{¾‡3?ÝvE?GÖ¢? .¾f@ñ?,ÚO󿪌*?_¼¾æ¹§?SyÔ¾«Ú¹¿›t徿社pæS? ´Æ¾“-f?Ø h¾òv½?)[>?áXœ?w‚?o?):†¾–õ®?ô+ü¾‹.¿’a ?)2ƒ¾ëN‡¾w®?jG?%\^?$ê?&ú^¾”z¾ŒW?Þ ô¾r°â?”¾µ6€?”ò¾í˜T¾cÁt¾Â×0?ß”è¾pœ?.àÒ?$füò ¿„ÔQ¾28¾‹P½x࿇Z?BÏM¾ qÊ?(GR¾¬pþ??/|¾^5?×2|?ço¿‰$k½,oô¾H†j?)JO¾rÀ¾^6¸¾×?óõè?!Ûú¾†Ú¾©»å?GŽÿ¾/Ü?'RÁ¾?¶é¾]« ¾Ï2‹¾/l™¾-è¾cG?HØë¿ ?Eð´?.Ðݾ„ŸÈ?+õ“¾=º¾5ë*?3©Ó?6ñ*¾²&€¾—'?C;L¾áç?+/¿oÒ¾ö¾Ûô÷?â-˜¾‚ú?E­É¾…V޾ÇÒ¾‹qn¿™^û¿Ÿ"^¾k¾—œº?T²Ó¾WÒÜ¿P‚¾˜çS?1ÿZ¾L6 ?xð¾ý \¿¨Y¿˜Úº?,÷ö?c¥á>6<¿œ¸Ú?7kŽ?6 ¾Åk?C„ò?â¾u¿‹æ4¾‡³J?F× ?â"¾Àˆ¾–÷•?Dx¿¤\‚¾t`¾ãR ?.å?g&¾ 3Ó¿¶ÖG¾”/?7Œ"?8vV¾ºö¿‰¥?p¾P7Z¾‰ƒ˜¾§?n¿™†¾)4Y¾ÊŠÒ¾Qlc?Í¿ë?¯²¾Wsž¿œn˾Ra¡¾B|¾uB”?!ìP>Bë$?]}V¾à©°>û[¾©{g?EÌi?§V?߈"¾²ÉܾÈH¹?Ò³mÀ–?á:D¾Ê¨×?*dÐ>úŠÅ¾¾¹M?# Ø¿šo>ý—±?Ê—Â?"4Ú¿™Ý?ãr–¿šÔ¾Þ¢?$:V¾st»?PÝü¿¢©Ä¾É@@Ô#?1¡²@+Ÿ¾›@$?AÐ?&&?5Õ ¾FŽ.¾ÀÆ‘?¼\X?Ù ¾qð¤¾ÓrÃ?-J?-m¤¾ŽBœ?7¦?/V¾ K?6ø¾à^Û¿> ?Ãù?*ºO¾¼p?+Üx¾dÒç¾1²¾rù^¾g¶¾Âˆ?F¾·f¾“/S?2ì?Û¦ï¾V/í¾yvº¾ÚÄ#¾Ònö?ähY?ên¾¿µù7?W¬6?&š'¾rÂî?=H?;0 ¾ù1-¾Ž§?!UؾSaZ?Õëî?JD"?TF¾æW?G;Á½&ê|¾f‘ ½¿4?_ü?hR?@ãu¾U—5¾Dµ«?>^ξhî¾#Õj¾â/¿xSØ¿£Bq¾åLÍ¿ K•?6^?Tüû?1ˆ?<³ ?JhоYÓ§?=¹®¾c˜Ï¾c*"?Îï¾"¿Ž'd?R¾%W,½ü¾tÕþ½ü¬ò¾¸ ’¾…ö\¿—õ ?6n…¾F¹?J°?Øß ?1¡Ð?è°;¾…ïf>ß¿½š¾É(¾?ë¹ÿ?88?0²?ûŸF¿ƒà?=">ˆ'?(jH¾6‹Ù½êœ¾|wÎ?*ˆ>?6B¿)W(¿­Ôã?뢱Àâ?"PV?Ù†o?@a?4\Ú?~M¿¥õ¿‹OÌ¿£¹i¿˜DÀ?9²¾.bè¾/{6¾²p3¾®ÍE¾˜¥¾fJ¾?Ò]¾¿ë–?0SM?,i ¾‘Íï¾9<¾ŒÞ‚¾Š–¾í»°¾aº?)Ÿø?î;5?Rþ¿¾Rv?)ªø?=yѾàm½ÇPš?*Ý¿¾»•Q?JmF¾»ˆ1?6ÐÖ? ³è?6®?’6¾…j?7"¾ž•x¾T ø¾hy?'~Ê?Qv~¾ÿŸ¾Åò¾«uõ?\¾?? ;¾ŽŸ¿‡Æ¾©“Y¾,CÀ‡Š?#‡Š¾ø¿Ÿ®?Ýë?RÜ¿«üÚ¿•är¿¯Íú¾\Ôv¿>+:? 3¾J§¬¾¨I=¾…¥I¾‘†?0ø±¾”šV?ê?2¾pí?ÖÝ9?é·¢?Bø¾šÊx¿¥=±¾('?2°¶?[,¿°?>ÁA?íñÁ¾]ï\? å,?ÛË–?&X?,¾×e½?E¿ú¾VŽ=¾®~è¾»J¾jl*¾ÁÐÚ¾d>>Î׋?I’R¾–+ ¿‰¥Ã?D®.¾ÊÒ7¾„"¿z0?;}¦?/n?[‰ ?ØÌ½??Iè?8~9¾ÓÎ?/ŸÉ¾¢ˆ6?=¢¾·[v¾Ä€W? 2¾¯áH¾°ž>ûf£¾o]è?êD&¿B`¾|?ß+û?;df¾Þ89¿ûר?K.ª¿jE¦¿—¯Ç½h¾„N ?Lýú?dðó¾«Å¾ù½üìÒ¿¯IG?R½Ñ9–?P[å?d¯\?PY?3V(?6Ÿ1?FÌnÀæ¼?7c‚¾L@M?M²š¾\¹’?8ì©?OÝU?;‚ž¿šÇð¾ðz¿ŸŸì?2¢(?P–f?E­ˆ¾K!º¾“ýÙ¾±’Q¿¦1?B+ؾM+f?GKX?F;Q½Ùi*?%÷˜?çbƒ?Jƒö¿34?¿‚uÖ?P$?Oݾ…6?3œn?8“ß¾™‘•?7‡ê¿©«¾¦ÞJ?JN¢?2ºž¾uÞ ¾/ª¿ g?~D?S0¾‚*¿®'¿¿¯ˆÔ½Ñ@?'sü¹?ôA&½öv¾±øÒ?%‘?4?B’×?ZÕƒ¾ðžÉ¾­4?+(?Z?/Tò¿’iD?áÅÁ?PLí?6–è¾MU¾$Ì0?/~\¾8à®?Jz†?ÉR^?)Zè?0IǾ:Ò?ÕV?Î÷À¾Îsþ¢€?Å'¾‘ÊŒ?%?@6—¾álC¿¹»–?/­¾d ? =ûÆP¾ØÐ–¾Œ÷ᅥ§Û¾s&í¿ª>6?Gbm¿šÉ’¿— ?3?2Aè¿«†{?ü©?ÔÓ’¿œdm¾ça6¾pµ.¾Mú`?åûg?ؾŽ~E?H—~?>K¥¾›M¾Ÿ©§?(—e?,ià?5{?,™ä¿­» ¾ºSl¾Pë¾®CW¾¦>–?@ ?5™ À õÙ¾¦¨?Üâ辤T2?A…n¾•œ? ò? }º¾¾¦–?ˆW¾¦¤?E5ž?>ðn?Ñ€¾¥¿‹¾ª$¾Ä¹¹?Rƒ??Ãú¾É—Àâ?Ý8¿ª_w>öÞÿ¾¯Ïü?í …?L–¾¥NÉ¿Æ#¾Bà{¾Ÿš?Múô?1'Ú¾Ààܾá(A?)Lƒ¾c7HÀ ¥=? ¸¾J{Ö¿¡éZ¿¢Âe¾3^S?-t? OÇ?â´p?×@Ô¿›þ°¾±ik¾þE?1çÁ¿›r<¾œ¯ê?]ä=?>‡:??h‘æ>ïU¼¾€ë¿kÍÇ?éØá?ü²A?î2…¿Àˆ¿—€hÀ…¾9?}¾ ür?\^¿ˆó—?,6¬¾=O’?dåK?] `?QÕ/¿‹•¾O¿üǾa„?>u_¾nX´?R‚¨?zߣ¾ÔÈG¿ŽÙ§¾‹ž©¾þ½á5b¿–ú¡¾…ËØ¾¹T·¾”£¾Œ–¾Wr⿈– ?‚D?F¦a¾=v|¾ñC?R½¾UšB¾(T¢?Qž×?DHؾn7š?V¿ü?N›Y?*á½?ÙÕ?N d?<…¾b¾ *³¾Ã쿊³`¾\Š?;^?BU?8 ›?Xí?|?=\ܾgؾ ŒP?—œ¾bN?á¾[› >ð‚ ¾G¦’?Ðý¾ˆUÖ¾¨¹!¾Hôm?èRÉ?&È?@ò¾Içd? ¯¥>úœ¾\g×?1T`?"Y²¾6¬Î?õÜ?#–N¾ž¦>ù¾UZ¾ᾇªs?1åL>n± ?=è/¾¥œ?B¤ú¾ŒO¸?Zj´¾¼Îs¾¬ÊK¿ªiz¾D¯¾¾§˜Ú¿¦ÆK¾›+£?Z©¾¯Áœ? ‰¦¾¡»Y?:6?ë+?ßW°¿¦8¿¥Ý/¾Ãн¾£gI¾ò”¾Ÿ7ç¾xq‚¾ 8?/D™?)"î¾X Œ? ¬? ’¾(sN¾‡Z°?>ï¾°am¾“ýj¾–<ù¿ 2?"ÃP¿“ï?+ØÌ¾.¬ø?È{À ¯]¿¡7u?ÍZB¾Ê)t?6ö?» ¾Ò›5¾¾O´?ìø?Ò$4>ñyª¾ÕS¾Ê`I¿•VÀ qî¾£ ¾¾v¾ë¸ù?C`Ø>ßNV¿œ»Ñ¾ò]›?P¤¿/꿜§Ã?â¶¾yö¾²t.?VP>¾¡CV?&$À?ß¾|S„>ø§ž¾dÀf¾´¾m~¾¾H? Ùø?àµj?*ÑL?+\¾G˜?1Œ†?!Œ?5]L¿£Ö¾Ÿïu¾¨ˆr?7½í?1×?=¥n¾³Ð”¾«¶¿–v,¿›§~¾g=œ¾ ô?Y5œ¾ ùR¿˜Ðá¾Ð?[FŽ@A§ž?P’??¿H¾yh¬¿ŽÇÑ?Má ¾s¹ ?`‰¾F{1½¶wØ?;h¾2¯¾¬‘mÀ‘ >Ö‘ê¾]^?A(?[¿ ?=T‚¾UžW¾tåî½ ªd¾Lb?>Žð¾À±s¾£‹(?åÔ.?`qt¾X‰¶?àz¿¢‹*¿†‚º¾Ï·8¾œvÜ?K ʾ0¸’?@­ß?9!R?7v¿¢¶½¾o¿Ž1;¾9ÍÀ¾Šq¿–/A¿¬Ã¨?ñúоfAÜ?3ÌÅ¿uu¾c±"?Öµ$¾˜Ñ¾óB¾± Ô¾RR¢?í@„¿‡´ë¾2*¾h²¿Œ1 ¿Ÿ6b¾?X«?CÞë?Kêâ¿‹N0?BW?F Ž? KÄ¿œ+d? ¬¢¿ŒH¾¥W«½á­ö>þSa¾<”C¿‘°¿Ž½z?à£\?@æÞ?«·¾¤-¾ ó鿚1ƾÐhʾ¡lX¾–?ý¾‚?2€_¿•«¾¿ÝK?aM"¾¸)y?=qr? ’޾€ÿ!?"jj¿®NÉ? ¾˜þ]w¾… Œ¾·¨¿ƒ£¾”Ðw¿£â­¾À¾Q“>¿ü<¾’Î??­í?ïI?+ö??׿œ‘X?DN?-uº¾‚'¾¶ñ+?/¼¬¿¢)D¿šè?=䢾­—(¾©LÞ¾Ì>è>Ò Ä>ß°*?A’G¾Á~Ž?ðj6¾‚ºÙ¾ªžJ?$e?ÊŸJ?AŸ"?˜À?>e?*B?âT¦?ÛL?³•?)†?$p¾Ö°X?,çœ?Ó¯·¾åyb¿šŠK¾b{`¾’§¾Åƒu>î‰t¿«Ì¾?!ü¾½¾ˆV¦?2É¿‘áÀ?_à¾Ê4Ó¾ƒ:Õ¿š‘?2íоˆqW?9Ñš¾©Mð? Êš¾Ò|Ⱦ)à¾æ&5¾GÛ¸?ã¾" Ô?>b¾Œ,?'Tñ¿’Ë ?2?%©?+㢾t¯š¾ì>Ì®J?"¶?Úóh?Ø#¾ŒÃ?Gv¾l°?1R¯¾Äjâ?Ô[ˆ¾?+h?C¼éʸ½Öâà<º¾TØ`?Pö¾ tú¾3=¾mû¾6 ³¾Q„>¾¥ ¾Ô]ê?eN¸?VÇO½íá¾7w?A;³¿‘­­¾æ)M¿žd¾³Ú½À*ô?P-g?1eñ¾M% ¾Bh½öüb?HaȾ e¥?Ch½î¿ª?LÞì?åk-?ì½á/¿ Ù¾©—¾¢dj?H¬¿:)p? æÀ?Cú˜¿³ˆÈ¾]ã]¿ÙO¿œ½æ?'d? ­?VÅ?^9L¾y=?9½¾©ª?BnN½’ÿB¿¨fò¾{êð½ì~J¾Œ¼=-H¾¯Å%¾™cÙ¾Ü~á?Be¾”@Ô?ãï´?T j¿˜Q¾ˆ÷a?+ X¿‹H7¾E#?¾g&W¾Q³~?×1…?) ¸¾°µí? ¾¾?6X?2­2¾”Œ?B¨¾„Še?&šr¿¡r&¾ŠRs¾§×ó? ü\?Öãš?èêù¾ŸZE?%V¸?!‘ä¾®ì$¿©x$¿¦Ñ½¾8 >âD¬¾›/A?<²?%­ú?MؾÍ_­¾gÿh¾À˜°@‚ÑœA-´h?AL¿žòS?7]z?S«?6¾¶í»?œ6¾”Hx?ëØ?FXz¾gQ>¾[¿?'œ½sãX?M;&¾Ô V¾9h(?0¦?9¸r?â,È?)žJ¾õãÞ?< ¾f¤?.IA¾Dç?Ã"ž?6Rê?~Ⱦ‰U?2žè?à4j¿¸+¾ê¾ƒ=8¿”—ú¾!=d¿È€ò¾µRì¾Ê¯Ü¿t¾7©ý¾¬Ñ?ø?ë/¢À;nب?F¹˜?îR?, Z¾´–?Aõ’?ÿª?Sü¾Z²n¾í½??#t&¾Qnª?š(¾/¿—4ç?õ*¾ ,I?17r¾YÔÚ?,©L¾‰¯Ç?UÂ?=u¬¾†°û?Ø9ò¾°ñ¾¤E‡¾§±ë¾â²1? ;?ä¸j¾ 6 ?×Q{¿” F¾È±‘¾f™ê?×¾tÂ?‹Hg¾©ß|?n¾„[?5ÿ“P†?aê ?Z°Î?La¶½°\Ⱦœ’I¾2Ù¯¾¼€¾ŸxȾIÄ¿yË*½ûR®?Q2X¾{#D?_Qš¾H«Ø¿|?3Ö¿ƒ ¾Ð€P?Rà$¾ax?EA/¾Ëñ¿í?A/ª½Î¦¾•×¾V¾¾=‹?O »¾z*R?ZQM?>½ø¾xQp¿³Ÿ?LºÝ?+÷Ó?L|ìÀ CÔ¿›‡§¾+ÉÔ¾ô˜?Þ?1<¿š5M¾]¶¦½ðü8?BÄþ¾©:{?Eâ“¿œÍºÀ W¿¢Žæ?䩾¾3q?cq¾‹ÃZ?&çU¾Ø¯´¾ {°¾nx¾Ž·g¾­ˆ¾H¤? ò½¸p¾”.R¾u\œ¾™f?QC]¾æÁ'¿˜šT?2®ä¾aw¬¿+’J?,¹?#Êâ?6Øì¾Š¥?&—?FDF¾§O„¾£(¿Ž©±¾xU ?ß6¾ŒIg¿™’­?Ñw{?PB£¿ ·«¾NΪ¾i¾TQJ¾Ð±ä?=•?~¿¢š¾f¦B?@L°?:¾J´?']¸?/Ðf¾޾®Wí¾’¶îA<˜oC!†}@>Î@?ØÇS?Ǿ£ƒÎ¾Š‚,?2A¾‰úô¿2¿18?×L?ä?GHò¾¯_?ºC?>d†?:+·¾ž¾R=R?4 4?ã"?7aX¾šÿî?U¾±ý¿¾l~ê¾™”(¾¨wÚ? ÁH¾…%§¾É(“?+Ó:¾wt¸¾8DZ¾ä‰¾¤?*Jø¾‹Å²?)!x? µ¾™oo¿£O¯¾ËBõ¾î«¾Ï)_¿¢(Ï?4û~¾”D@?ߨľ¥t?nh?㣄¿Ÿßp¿£Y辈*­¾ã[?*X¿¦0Ô¾¹„ʾj ?… ¾¼±Ô?´X?£Ï?cô¾%±?@¾7``¾Ÿ?J—¾ñK¿œ»E?÷B?J쾡æõ?*±>õRk?ZŽ ¾¬O¿^5¿œ|E¾¬©,¾Ù£?ž¾¾)7¾•ì@?C"?Ïý¾¹Lì?5M-?ã1‰>±@*¾Œ@2¾&ù>¾cVŒ¾To¢¾+¦a?=í?.P¿ŠsÀ?=4Ì¿„|¾_<Õ¾¸Nʾ~œK?5ºv¾¹ü¾Y€¾€Æd¾'ÎO?m2š¿µ“×?Øèà?Bw¤¿š#Ÿ¾_Š¿–÷0?Sz ¾V¤`?I£ˆ¾µ0¾s)¾.­x¾Š8x?8p±½ñ÷ü¾B—@??‡™¾R{1¾Ë̾!þ¾]Öf?šŠ?9¤Ò¾šfȾw?>¨m?òU@?-ž4?è>¾«¬"?+s:?1C?8œç¾–›Å¿”çh?!{|½ÛNt? "¹¾¤b¾‚â¾—ô0?$”Þ?¿ò¾Îƒæ¿¤b쾫Y?«˜?7%Ò¾—?DΨ¿Ž«¾äœ0¾oÜB¾F%¾³‚¾ž‹Ù?=cÓ?Ö*Ö¾]ó`¾…A6¾2uâ?Ï6P¿§Eö¾„-´?€Ô¾r\¢>õ˜ó¾ÄU¾Š?EUÖ?èâé? ¾Ÿ8º¾Í!¾a¬¹¾¿«ÎÀ üƒ?Ö¬O?5ľ®¾5´Æ¾¼wB¾§Ë¢?,§†¾.貿©¦”?÷‡¾¶Œ=?Ñ(ë?Ôµ6¾Ç>fä¬?LJ¾ŽY1?é¹À?2]4=¥tP?Âe¾Éb¿¾„¡¿¬‡–¿·C¸?ä]%?/^š¾un?輿¾†~'¾ºËÀó??>sÖ¿—Ï·>úvý?'JÙ¿¨Ä¾¢€ù?Þ™¿¾`´æ>«"È?-¾ï¾‡r¾üI¾„b ¾¼B>?Ør@¿“¡ê¿˜ã>¾ˆóµ?Üc­¾s?ÈξÆÒl¾™ŒÅ?3.>×'?Gœ???ÿ9¿Œi¾? 8?Õß¾¢Ä?8¾™4Œ¾Ú¿¬—²>ŸØ-?Cgÿ¿ŸÖš?ÒUÔ?,@V>Ö‰¿£˜@¾Î¶B¾†¶K¾7€B?Û›§?Ažò?$ûx¿Šÿz¿ž>—¾‘ƒ?Eo¾„aq¾Q+?2Ò ?êD“?.p>Õãä?DÞ?~¾žô¾½]Ë?ØÏ?ع¾E޾ÛÊp?K—…¿§ü¾²S'?LR½g`?対N½èsÊ¿‰‘‹?]ÈÎ?Z+Â?;éI?öÄö¾“0Ê?6mܾpSR¿“Ę¼Æ–Ƚõ>޾¦¼,?J§ ¾Žõó?:K¾LȾGÕ?ò¾x¥?7L¾?gŒ½¾E®%¾„½š¾”È?9iÖ??fþ¾,¾-D½ä±ª?Q§ ¾Ǿ“‡¿™;¢¾~Ïì¾7²B¾~Úi?VÑS?&Ÿ™½‘;,¾­ˆ?ZE»¿Jˆ«? ÿ&¾¦á¬¾…\ë¾´I ¾$Ÿ{¾w|?&à2?⨾fçè¾v‰Æ¾*Kw?EñA¿—C¾/Üá¾8Í6?OäȾVr¾°o ¾rK?/ ¿ ‘?Jü?;¨½ØG¶?Pìj?0¨[?SOÙ?*æð?7í2¿”·¿?-Ž?7€(¾+j‹¿ªϾª ¾þû¯?ò‰>¾Îs·¾¬˜>»LM¾ i±¾™ö?'Q¾‚õ?#“Ž?0üô¾@ÄÚ¾3@¿š¥l?(:¾¨Æf?A™5¾KC¦?âi÷?ATf¾ÃÐ*?H¤0¾•4ª?Ѓd¿˜MX?×–?&Dk?)ã*¾šÁâ¾rXó\ò?Jyξ—ˆ›?ºÞ? š†¿œ­ ¾¦%?!¼¾¾ÉßR?ÛR»?F¾,Ê >û y?;™q?Û°‰¾qµv?( ,?ɉ?D!?꽜¾§\'? †?ÛC7?;%¶¿›çB¾ž¬E?%Æ$¾l¾©[G¾‘hQ¾Ÿ.:¾¹¡ô?Bn¾…¾Ú;Œ˜r?âUO?R§¾¸ºø?Z›¾‚¹F?WÔ²¾ät ¾È—?²z¿Rª·¿¨õª¿™›Ñ>Ѭë¾Ù#ý¾ŽX†>‡†½?8!¿~œ›À®1@ƒÀ¾ùÞ¿î¾ =p¾‰fì¾Z±r?5á6¾cz5?õLJ¾¹™ ¾:¤$À cw¿—ľ M@?5ȾG„8½¿‰²½á н叴¾w“H½gt½ä?æ9Å¿’Ù„?KÏ-?Pؽ+Z¾µZœ¿‘ç࿊‘>?[J ?=G@?9r¾DU‡?^¨¿“*ò¾‹µŸ¿Š”Œ¾!Œ¾lÖ¿y8~¾›:?Dæê¾lm¶¿Ê?CPû?Q`¾ÉGB?WžN¾ä8š¾ #N??Pœ½Ë¡Î¾[kŠ?Bxä¾\ö•¾M©ü¾2om?PK¾£§Æ?t¦Í?¸?-¦Ø¾›º¿™8-¾1ý¾Žƒ·? ½×¿r?$à,¾‡ì¹¿¡V¾XuÚ¾®TD½øÞV?SS/¿ˆoT¿—Ô9¾8hj¾=%¾ù½6¿…è¼¾²†·?;Jô¿’%á?H“*¾5KÎ?e'†?F®r¾§µ¿–8´¾µ/;>õÔ ¿¾*š?%K?&B¾·D?ð]辈㴾Ü:„¾Ž]m?Iîm¾¢mº¿<Ä?4̾©@4¼æ!À?0«Š¾¹]ó¾]>¯?(Û¾Sz¶?3£?=¢¾®¹L¿¬ã_?"£T¾¯Ú¾†q ¿3­¾Ó¿…¾±†'?1Þ??Oô½Ùà ¾‹³„¿˜®Ü¾‡y¾@ø~?Èãá?mÀ??›¬¾‹…3?Ø8¿ªo¾@Ѿ‘]ˆ¾Â½d¾Er?: ¸?< ”¾ä!D¿¥Þ¿šñ~¿§Œ¿±“\?&m€?ä l?:ð¾“f»?>(¿¬t?Q¼<¿£À¾n”^?%üÞ?EÏ"?3m޾˜9о¡uL?æ…?0ÜC¿˜9P?#R.?9X¾¯2Ž?Ñš¾ƒü6¿”g?N¾-¿¡ :¿yB¾¡?ݪ¾Ø!+?!Ñø?<æ¿•c2¾ÅkR¾·¥Ï?/¢m? ¢¾®$ ?¯l?63À¾¿ ¹¾×$ ?È®¾«èå¾ßpƾñ‰Ã¿¡<¾’Y÷¿±R'¿¦¨¾±Ôu¿rÎ3¾Åuξyð¾e¿à? ‘¢¿¨N½#F˜½šO*¿”R?JíÓ¿Žo­?.©?O Œ?IËxº?,ònA ?×ôj¾@¿ŒÍؾyB?Úô꽺ÄD¾—²4¾o}Ò¾>u ¾*á—¿‘m"¾}žr¾«u¿>š½Ýû0¿žÿ]?æì¾‡oO?3”¾i‰“?)ûß¿˜Äþ¾Ì@¾û«=?îjþ¿¯T¾¥#½?Œ¾Å!þ?>ÚÁ¿ŒC½oÇ<¾ÐD?"Ú¾nxC¾s÷F?Ræ¿‘t¾ŸLˆ½ýj*¾‘Ué?-€¾xz%¾b°×¾F_D@àŒ?ÚK¾‹È&¾Š;Ó?,ZË?Eß–?@öÔ¾u¡¾zÖ¿›$¹¿ŽÁ#?<Üྋ±`¾™h¸¾²Ÿ=¾Lsó¾æm‡?;»î?GSz?EŽ?I1ˆ?0ÄÕ?¤é?¯OÄ¿”¶1?ý)¾8$ö¾J²¾r! À ?:D\? 'Z¿”€â¾Yª¨¾n‹œ¾ÂŸõ¿¬@‚¾†‚?̉³¾P ½?(à?4§N½½Ýô¾Ì%?38®?^L?õ@¾¡Ä¼¾Ž%$?I[.?/Æâ?7ø˜¾¬5Z¾Ÿ·ò?½Þ? ¢*?>&ê¾Y7¿¢–>¿–3g?!ˆ¿£°&¾º‡„?8!—À¯?Ó'G?4~^?BïRÀ´Ê¿¬Œ7?Qy?!jP?7fð?3®¾`ÎJ¾Îvp¾b^? o8¾_~Ô?/ƪ?<ã9?.Ñ? Cv?$†¤¾YÏÖ?%Z˜??|6¿«q?F¥q?Csù?@"O?I„?%b>·ð¾"Ø>T¥ü?@?Bô¾Y¶”¾›‰ ¾>su¾Â…Ÿ¾˜GQ?Þ§¥¾mír?-d¾^"´?#V4¾gˆ”¿›4„¾.^¾^ô?8É0?à™–¿™6¿¢¾ŸI?4⪾K¨¦¾‘æÑ¿ž3¾~<ø?KFˆ¾m!Ⱦ?-n?àOJ?Ю?% Ô¿¡àÞ?2:u¾é&¾¯¢ý¾†mí¾ÁEP??ö?"MB¾ºa¿¡<¿Þn¾½4нÇÿ ¾;Eå?=ïú¾”®½ÚV俾.ð¾„p½…6h¾8…?l˜m¿{çF?W^jB‡íãBák@¤J=¾]-?MŠ?<¸A?îÈž¾¾?K4?fIÏ?eÎ]¾¥­{?0Lݾy\½ÎKÌ?:5|?Þœ®?I ?-æÚ¾fC‰¾zÁ‚½ÑJ¿Í:¾qÓ`¾¦ 4½£î¾­ ^¾IŠ£¾L-?]kt¾kŒ‡¾g?B?-+¼?á9è<•¾o5?ÅŽ¾·¢E¿ÇÊ4¾©p?*K4¾¼V3?7)E?Šü¾‚D꿘V¾ÄUËÀf&¾¹t¾œº“¾~If? ô¬¾–×?4&¿¡ôh?!D3?,¸¿š1Ⱦ&¾•<¿£³Í?<µç¾'(?î’¾ S›>Øœ{¿ ?â¹7¾¦ÀU¾–î¿¢#½?Ðͪ?J\?6¿ ?1‘Ú¾®Ãâ?I?@ñð? Q¿™Øz¿™jØ¿œľ¤)´?"⾃£y?-^Ù¾¤q×>úB¾¾ê*?%Ü?!Ûb¿•úF¾|¿*>µ¦<¾’"?è6澡ÚÛ¾¾Ÿö¾¬Ñ?Ø4?×ßF?&Ýø½ŒI?Ôû?3‹:?!¾H¾Ýh?Ùé~¾À]2¾¨“8¾ =¾˜þ;'MC>ööt?Ú¬¿®‡¾„Ì]¾ˆ¾8¼#?-Ãr¾™‰T?äš¾$¦ð¾X©¾Õ²¾—DZ?O7ï¾2““¾Œ-4¾˜} ?Ò?ä?ëϼ?Dr?Ì®?è ¨@;=õ¿¡Y„¿§£©?1T ?!x?-±Ž¾„é ?< ¾ªÍ ¾nÍ.?à|X?C•¾‚¾Jž?æðJ¿¨¨¾lC/¾7'¿¡¯?$Û¾¢ôᾈƒý¿¤‰½?J6?8’I¾€ f¿£€¡?ñÌ?^ë¿åþ¿‘f{?ݓ־Oݽ¦3:»_°@¾9œÿ¾K=X¿‹ïv½ý¡Š?Tìp?æ¹9@€Q-?íKô½ÀÕÚ½¯N½í6?Dä¾9SÀ¾cZ£½àˆ¾mÓ?{À3¾±š¼Ú¡?Qh:?MDÞ¾ ½?Y\?]ÍܾŠ5—?A»?bx÷?( ¨?ô‡?5e¾¾ca®? q¿‡Þå¾O ¾«‰¾–‰¼?"2y?ªš!?/¥¾àa?SH¾‡èS¿®²P?L†?H™ß?=,?*0r?+0Ž?D翾Z¦¢¾´TÆ?à7³¾¹×«¾´ýƒ¿’Ùj¾±“b?"1z?>6¾ ¦4?8Àæ¾€7¾n瘾,šF¿zEP?ܬ¾œ ×?Mêþ?'i¢¾A=ï? ÈX?6ö5À `¿¨õ¿šF|¿»ßF¾èK&¿—Õ¾§âY¾Ö@Á¾ÅÑR"? ÈF¾uË¿¾½ ˾4¿¹t¾›Nn¿švä¾&èð¾ÂY¾‰8 ?%Gľ³L?;,œ¾ª×š¿–¡?4mœ?M ¦¿©Ž2?@ÈD?J6õ¿¦ýz?)󦿡Âb¾¬t-?'h’?LD¾ù&Õ?-?þB¾´ÔQ¿¯½è¾ò;å?*–µ¿§·¹?7’¼¿‘ê¾°#¾óÅN¾m2>˜3¾º‚Ä?:B?©¢¿² ‚?%|Š¾Øº¾Ñ)ì¾’\Å>ö¤?9Ÿž¿­Œ¶?I4X?^.?%į¾µ­#¾‹¨C?9xȾOå^?DÃä¿ OB?3Ðu¾‚AX?K<¢¾¶ƒ?ã^¢?E56¾V@ª½f½4?T•J?ZU¨?O§>?¾~Àv¾±ÅÓ?ôlо‡Ü¾¨)½¿Žc.:ƒû?(XÒ¾’Pl¾>Ò[?Cºû¾T®¡¾G \¾T•…¼oÉp¾gC\?"`9¾WE?Z"¾oQc¿šºX¾ž@澋M¾N â?^’À??±5¾²9?àSÞ?>–µ?@ Ë¾5[¾”™?8Wð?=+‹?H&¡¿§Ü꿎fP?Rõ^¾Tcý¾m| ?GÈ?Ó›D¾3Û¾¤tæ½ôp¾&þ®¾Û?@¶š¾çþ¾Pµó?,°?ó ?8OÔ¾¥Ì€¾²Ÿ‡?è?æ™Ì¾‘2"?HA¼?EÂ’¾£t…¿¬ƒa?FÓ~?Âʾ¢ó]¾•ù¾ºÄÖ¾¦&㿞©O¿³ñÀ?#{l¿–¾ÿ¾}'Š¿£z’¾ll\¾¦ü?äüÿ?F$¿žø«¿¯U¾ÂJ^¾‹ßÖ¾4þ=¾ÙËÏ?ì’o¾´Á?(1?1cd?4Öv?@À? Ý®¾Â Ÿ¾âÀ Nù¾C¦e¾©6¬¿¡¯?<:?*‚“¾Ä@É?$Wê¾°S4?Õÿ ¾×P0¾‚¥ð¿¡ó¾pàð¾°Q¼¿—È?Ž[?$¢¿ž‚G?èrÈ¿¨„¾?Õb?/6¾•¬?>÷Ç?-C¿¾"< ?íú?'{?;—é>êAC?ÞšO¾Å.¾£|?"Ú&?Ikܾ“Q?B‡¾AؾŠüؾB²¿¢³ ?=(?Üù ?>ľŒŽ¾ÿOݾ˜ÐJ>̉ò?C›¤?b¾±Ò?@3 ¾¿«Ä ?5 œ¾ýÆý¾š¬¾Qõä?Cb™>Ã!D?<š$?àÊ̾ Ç?/‚Ñ?'>r½Á5H¾± ¾V¿^?Vw€¾ ”›¿‹qˆ¾~ѽÚW–?/[޾K¬b?ù¯(?\é]¾Y¬¿ƒã1½;ľ‚D@B|X¿já?‹8¸?) T¾’¿µ“¾k ?NHé¾­p¾SÈ3?7á?Ol%?­Üf?C¸¬¾*1–¿‡h?44ø? ª|¾ l?N'?/Ml¾4©j¿‹¶Y¿Õf?¢?MM\?:#?RH·¾³#œ?c[F?Féо¾B¾z¬¿¨¢ù?DU§¾L%2¾lØÏ¾Xb¾ª¦"½T?)_Ô?Pÿ¾Áûj¾¦Œð?7%œ?RA¨¿›Çp¾NGæ¾_̾˜o¼¾îN¾—wM½îs¿‹nF¾Nò~?óT5¾\4Ô¾Zyž¿¨r?R‘‹¾5q*¾Ÿû‰¿¢ê‡?',‹¾‘[˜¾•¯ß¿Dþ¾Pçž¾ºÚ[?%*º?8ƾR¸,?@Þ¾rlоžbj¾Š»¦¾µZ]?(ô?¿×J?󳿇ˆ¾‡éc?AaÒ?1$B¾±kš¿™C¨?4o¿ªá?%»¾»n¾R•?Z¾ !¾îù¾—›?+¦ ¾Ïò¬?ìZý¿¥+í¾FV?$)¾Ü0‡¿¥úÖ¿¦8?-¾¥:Ý¿œÆ®>­m¼>ò˲¾Ñš??,/þ?¹`¿{¾¾àí¿œê?ÃäP¾MdX>éf?B)Ⱦƒ˜5¾—{K¿µ=·¾ï¾®ô¾d>?n½ûV˜?2J?/B¾]!³¾±IV¾ó¼©?@Wf¿§ÁK¾j†N?[k<‰^ð?jz?,™`?AÈò?Aû?"\Z¾”Úb¾Bôí¾sþ?ú|¾Ê€­?Ë÷¸?ª]?3 ¿¡Ìž®à6ÀP—¾‰»À¾©AžÐü¦¾”@¾¦C?ì¾âMû?ÓÒ´¾–Áh?BËf?l¿˜ƒ.?Ζ?GÒ?6gú¾î!Ý¿§iõ¾¸¦¿Ò?Z”? 8?K‘‡¾ o ¾»Xg¾¡)?'Mø¾Þ~½‘G¾ÑŠ‹¾¡)6=‚Œû?n ¾Ú 3½øíž¼÷žà¾^µÕ¿§^ÿ½»ò?á¤û½õÖ¿„K'@ã¾™ÜØ¿“žú?ð²È?A+?^mP¾"‹À>Õ›P?H0?<˜¢?VW?iT]?$fü¿•Ö–¾€ Â¾R¾9µ~¿±à;¾6Q?Mhø¿œxâ?-j?\×W¾}  ¾ù¥?'ÔÈ?Ffo?B@ø?2[ÿ¾›Þ¢?AIý?nöð>á8¾ÅiÚ?G ¾¾‹¼Ò?Ts¾^é9¾m%H?:ï½Æ'æ¾EÀ€?%{¨¿’T?8at½Ïiˆ¾ x½Áü”¾‰Ñþ{ñR?13Ì?bAоg_=?a?l¾Á2<¾Ó:ľ¼½?êN¾™,оÌ?3 ¾Á‰?P¼À´Ÿ?,Q`¿”ùû>æ¯ê?0¡¾‡Þq¾{Ý*¾„¤ï¾vÔ÷¾ñ÷U¾Ju¾¾šŸ¾¬ƾHôQ¾9c¾’±)¾Šsp¿‘z{¾I?¾,S俬>¾êaí?&›H?0—Ͼ7?ÖP?c…ü?=‹4?|&¿¢c2?1§y¾»³¾M¿}'?í±c¾Š ‹?Smd¾–4?(¶ú¾–PŸ¾‘Cq¾ÊV¾Òðå>ľ†$T¾{âî¾EcÌ¿’z¿šy“½ò4˜?O¹õ¾£±:¾?!«?GW¾< )?1¨¾bé„>*oê¾_e\¾¸E„¿“ëø?8N‚¿›ëà¾×§O?HˆÙ¾(®u?>©M?_Yн¥V¤?1d?OÎ÷¾ŠÁ?3/Ý?ëíÒ¿”:õ?(<à?$ª¾G—ð?Y«c¾vF¿¡½¦¾„¾ò÷¾©õ½?õV ¾Œ'{¿¥Æ¿¤*ó¾Lf¤¿¯ù·?GR™¾—VH¾ZQ?h·?4|P¿–Oï??½¾³5¿–¯ª¾&6½Ê•¾Nm7?'š?C¸T¾§U?A(„¾›Õ*?OBÁ?4 ½¾rt¿˜4:?ú“ê?Ò#½ðº?׸¾‹ãÂ?àVŒ¿8¾Ì¶&¾–ò?UkÂ?BZ,?VÔ½ÿùª?ÀÂ?ÞÜ¡?Þ0’?+º?×ꈾº?é? ¼¾\|N¿ß ?)ˆ?@ò¿¹B¶?·¦?"JØ?1·m?ñ‡†½è.”?#¿r?.`Ð?)L¾«}³¾Å#!¾X†4¾’öw¾Né¨?X±ý¾#¾K˜¾ Øm¾‰±È?Û4N¾Œ(ß?7œù?—¾æàª¿Ÿm@¿œ T?Ö辆¶r?5Jo¿ŠI ?#I2¾ðº!?T¸Ö¾UÀ?’¢?T›q¾IN’¾fµP¾´jÖ¾¾•¸¿“iW¾3×¾ª]õ?7Ê¿šÒ®¾BÖŒ¾—uê¿—¬‰¾”³¿“LH¾?ÁW?~T?ŠH¾‡üؾ¸RÏ@9 L?@?(?Üpˆ?/¦P¾vI´¿žÁG?PR¦¾(`ç?î’?1.£¾QÀà¾Ð.?äB¾àJ”¾s¢Ð?2Pؾ0Ky?:öe?.,|¾²ÕŽ¿™qľˆ?á=^¾{~ì>ó¤ú¾~y¾yÛP?Û_´?UI?$ñ|¾'[0?3šR¾‚0#½›·ˆ?-¾–}t¾0N½?5´3¾}[3¾ ~Š¿¦Ã >+¥?]ˆ¾?Óu½ç‰6¾¬¢?B)"¿šì7¾o²º¾S ¿„?ª?Ù<$?EÔ?F’Š?@¡Ú¾‚?ëðÍ?éÆY¾ ¨?%”¾6ë÷¾±'d¾‘P?!™¾J¦ö?C€$¾G•p¿šà°½±‘¾”—¾•%s¾YŸ?ä]t¾„?HÜè¿,–?Fáx?ßV ?PE¾ÂÔû?=“Ê¿’Ì6¾&ý7?=Cò?TŒï»­Î@¿’ÁK¾ˆ»}¾{ß?ê?;šHà?JE?cÆD¾Š Ü¿¢Ù?"®Ã¾ˆ4Þ¾¿´U?ð+=?+¨(?+ Ü?A`½óª¾¤`?:Yš¾“e½Ø °¾²ò¿¯ó¤¾Èᢾ)Ò ¾‡‡G?`m¢¾ii?.– ½Ýw`¾Y„?8Ü–¾‹A?D4?FÞ"¾Æù×¾šKü?4`T¾~-¿œ¤?H¾…2¾Å÷n?䲩?Bk ¾¿I7?"ºF?+”1¿Ÿ£E¾·±¬¾Šx¿²th?FŒN¾®\s?=oš½ÑÂ,¿œ>5?ãÕ8?QC°¾¥@?×v¾?#ÒÚ?*¡J?9§š¾sQ«?½À?.?¿Îö¾Ý ݾ¸vÈ?]­?/µæ¾¯}(¾Œ?¾ždß?h8?M)Æ?#¾æ¾´Gõ?#ùÞ¿™x?&¾”¢Î¾0a¾ +Ⱦ®sË?B8¾£ ó? ÅV¾r(Ú¾_ˆ¢¾««Î?&Lþ½ô•È?>ªH>ô0Ó?­T?í9m¿±ÌÒ?é†?<Ýû?ä4¿ú4?>§¿¡†¿Ÿ´‡¿¬ár¾Óa±?!Èe¾¡(¾« ´¾±P¾ÌǾӿxh?(’É?/?Ì¿˜›“?Ý?$¸›?X¤?J¼8¿iv?+“¾E¢?PM¬?*& ¾¤d¾‹g¾©˜“¾ÙA«¾©=?à¿–+l¾1·a¾’]¾ŠÆ`?!H?Þ‹Ö¿’Ĺ?Ù%6?C â?Ú$í¾Ö¨û?¸¾ãªS¾Ž–T=î ¿–w?cÒl>¿-|¾ ö˜¿¦½r?nlÊ@­‡?]&?~?W—†?&´¾/?]!¾+¯¿•=Û¿—WÛ¾¼Îì¾²£ã¾I­¤?-Í?8@°?R¦Ú¾>^??´Û¾§Y¤¿’iྦãï¾>‹¿¡gc?5¿&?6°¾‡&?JР?ßgD?F¾0C ?ÞEe¿ŠpA¾wÊÈ?CU‚?t@?A¾‡®3?À¼¿‘›£?9ïÆ>€æ?J¶a¾­je¿cT¾p¡½ÌŒ~?4ý!¾Ot?;Vt?Fؾ·ø¾>úž?2ñ?Bfì?!kX¾&?"Fƾœ­?éa¾ƒÜ+?8¾K *¾k7ø?KÂÝ?_)²?WÖ?+꿦Ä?9ûé?-JC¿¯ªº¿™Ü"¾ü3«¾ƒNv¿® Æ¾ªàœ¾ÃG1¾Û꿾ÁŠó¾y‡^¿›´?!Q?5v¾§Ðb?%…¾o,ä?Ò¿—T¾ègW¾Š¾4¿žœ?Ы7¾Ä*µ?á¶Ì¾¼à5¾¤ÔN¾vãO¿œY¾Øæ…¿’w`?)ûè?6N¾ðƒŠ?ÎY޾“Ý"?9P ?.'t¾Žñ?0@Z¿¿Z2¾Ë¦Û¾R‰?ÇVý¿ž#¬¿»wb? @¿«üÀ@'0˜¾Ã‚¥?"?ö¤? J¾£,A¿¼i¾¶ëT?4Šv¾—å¶=Ä\L¾–XE?Q¬„¾ÌÏ;¾µ½ ? °î?+ø?\ä¾{;­y´?)Ñr¾~Ær¿®ìÐ?)Nx?) ¾Ñ@O¾“¬¾Tñᆱ:\¿¡*z¾—f»?+¿D?–ò?>€@?4‚¾™Yˆ¾¾E¹?»8?;õÄ?$æœ?úh¿›º¾‡O$¾I8>ùk¨¾²+¹? z‹¾?”ð>~vp¿’ÏÀ3x?ù¾¡’:¿’㢿S¿#n? ô*¾ÞE²¾ÏèA??Ŧ¾áã?9ºØ?ÔÒ?H¬€?&¸s¾·a>û–)¿¥.&?,'¤?¹?'À¾ºþØ?-¤´¾ƒ± ¾„TL¾;@¾=· ¾]B?2®ƒ?mïh¿Ác½ z¿ŒÐË!¾}¢¾'^)?=g¿Ù¾e?/õ[¾…uX?Dz¢?D½b¾¤ÈÂ?¾N?e+ž¿K¾£=ˆ?ß]Ô¿¤%p¾›r¿“àY¾‰Ú¹?çþ?ÃÆö¾n±‚¾ÂÕÓ¾™F“¾–Ó¿™ÅÖ¾nV¾†} ¾fÿD¾‡…$?Î"¿ LŒ?'Wd?s€`¾·Žp¾#H\¾ÌÏ@;Ž}¾£„¾–²Ò?28?àU“¾Á¾‰´¯¾Æ*z¾0±Ð?/.$¾¦bx?1·?O¯x¾ÂNW?Î($>ç¢?Ó ý>± ¼¾”ñÀ¾ÇXC¾~ª0?Ͼ¿Q?æþ|?8øâ¾ŸPù¾R(?=ý@¾’—?ÙkV¾¬l7¾}4P¾¶¾+¾Ú¼Ù¿©`¤¾sþ1¾–…R?HaJ¾\‹è¾¹»¾¢'ì¾\µ>ÜŽ„>Û›¾–]õ?s?å:k¾Ç»¬¿•?îz¿§§X¾†^%?4ã ?@è¾ÀÁŽ>ψ?,ƒú¾ƒ×Ñ?=ξ̊о]ì¾E`?Ö0¾`MÒ?9÷?hÌ?&$о¥Œu¾i9‚¿ª‚œÀ+¾§Àp¾¬é˾Ï5Ó¾p'?ð†?5̸¾`Aû>ž&¾§[à?Ѩ¾€Ͼ³\?"Ʋ?"”¾Ñ‘Œ?ƒÈË?0öª¿­Kê?$óT¾…¾æÁ£¿¦Æ-¾ž;?>]¿§nÔ¿¤? Hò?“ª?-¬h¾ò·ƒ¾ÃÌð¾GÕW¾˜’è¾³¡¾U(½—<˜¾PN¿‰0¾¿Šª½d(?Ýt¾¡ð¾ZÜ@¾;dü?ë:?û¥*¾w&p>åP¿Ž\оŽ?\¼è¾2禾Šk¯¾iÑ¿‹ž¾OF?Z @¾9üL¿…Lñn¾Y/ª?%:¾„˾ŒA“?>ÌÌ¿šZ½ú¿–?#i®¾(ÈB¾[,v?ò“ø?0|Ö¾m)¾1ï9¿Ÿ6ÿ?K<Ô¾oìT¾z7?]½â¾±Dv¾<É ¾ Ø?-é§?gYP¿˜K?.“Á>¼Š–¾Âa$¾æ©Ÿ?@F¾¦BܾY.0?S7¾ |V¿¢€Š¾pñ˜¾‚Åô¾BFÖ?Qªæ¾xl"¾¹z?SäQ¾u‹z¾6·ø?Q¬?"vˆ¾X ˜¾cQÊ?ÏÉ´¾.ÜL?/BD¿œ?Ý›ñ¾c¾:¿š²d?anT>üS¿’‹´?2 ú¾7£¾SÁI¾8Ýο›y?(¾ ?9”?Ô®¾ªNi?.ïþ¸žŸ¾× Ã?È:F?è›°?!½b¿£#R¾»-Q?ëÐ?6é?7†¿ t¾‡lê¾qn¾¹g°?Ñsª¾Ód ¾Ï¡?£Ø?<~?20[¾ÏŸq?+ÚT¾3?Èþ÷¾‚Ôö¾ ;¦??Ý辈eØ?Õ~?(Wª?( (¾£h¾¼OÜ?/_?¨y@¾9 ‚¿£¿Š0²¾ƒ÷¢¾DÙ¢?3¾]‹À¾†–¡?<®? ¶r¾Ðœ¾„?J‚v¾tì?/C<¾Aä«?'Î?Ñ?(cp?ßHž¿–Nq?#1оl_6?Ü›_¾¸–þ?%ž¾­½)?Aò ¾T-Ì?¿“œ¾n¾à€¿—ŽA?gÀ¾‡²P¾¾™^F?%Ï*¿¦¸¿š8,?'~Á?2¿ƒd">ñ4†¾\‰¸¾¸.š¿–í?6fÊ¿4^¾V.¾…T¡¾¦ ¾¡«³¿ýǾ»7U¾™’ƒ?1(È?>(0?2'a?f?@s¥?é=E½¢éø¾…¹¾ ˜?B¿h?S¢$?Nà¿”Š1¿…æ3¾ÃZ¾šý?q/ò?â(3?Hg¤?_/ø?GTÌ?$~B¾'Æs¾Úª`¾阾—Ù¼?WÛþ?2.þ?WÈý¾Ô ¾;l¿”5b½Ï¬È¿£ã»?Ýqb¾q¿Õˆ¿£a¾)ÝO?OÎ?HßV?:gä?8»Q?2Àf?Ri¨¾„;¡[½ÿr¿œ±Q?Mž¾“Mx¿˜J¥¾u?Gè²¾!ǾZ¾ Š"¾¥lð¾m x¾ ¿‰%?.§²¾…é%¾t?;°?3ÀJ´¿ K¾—3ç¾÷i?J_£¾°½g¾Á¹b?8Oؾ•V¿?<_¾Èêá¾£¿•>!¾Ä–û½ùhV?D ª¾9à4?Eàt¾ˆAØ¿‰Ç‚¿¨s ¾œ¯?F–Á¾‹‚½ÃaZ¿§g”¾a&¸¾—S@?.,?×å´¾O44¾4ñ[¾Ým!¾_sL¾°¼¬¾¤hÆ¿«.¾“7¿ª–?-°f¿©…À¾x¾NÍ:@øX>£Ö‹¾É?=µ¯¾k`¦¾Op^?ð^¾’V˜?2ÞÖ¾}Ôþ¿®ðŒ¾½ÖM?Ý(‘¾VÅX¾1¾»+?+ ?ðKò?Kʽ{ż¾…´½Ï†X?)^†¾Eçr¿×,¾àÙ"?+k¦¾™¼•¾¦qg¾€ÑÍ?>Ⱦ Þ¾xwØ?2þ©¾UßP¾ŠA½?46Ͻ«c¿(¾Ü?ÉÄ侽᧾ä À?PêV?P1>¾Š¨W? ‹r>>]¶À½¾~¸P?2¤Ò?85¿¶‚?7_,¿é¿•[o@=¹%¾y‚$¾*ð`?'p¼¾| `?@š®¾}ÆJ?!Ú?HJ꾃µ´¾§I¡¿˜Á@½ÐdÞ¾™P쾟=”?Jš\¾Ñ<¿˜Ïr¾‰3Ž?+€¿¨1¶¾I£ð?*¹G?Já‚?Óï¿‘#?V¿ eÜ¿ ß,?IV¾¯-·¿”Ò­¾É&?A4Ü¿¬²2?C&æ?3 ?/0r¾IÈ4¿—óå¾M¸?¿¡èP?1Ûh¿šxª¾Våa¾¡×£?.³Æ?GMï?GY}?Jd¾6:?èêÑ?MŽ’?÷·j?CÊÒ¾‡NJ¾IáW?G]¾rŸ+ÀNÑý¿“Me?òÜœ?;*t¾Š Ö??£#¿‰ «¿œ‡*¾6¾DgÐ?cj¾ h¾,•¸¾˜µ`?~‘?$æò½«t¤¿–P.?Ki¾´Ö¿¾&¹š?0t9¿—Ð]¿“˜.¾€óÚ¿˜B¾ú$?! x¾¾Èê†?mÌr¾ž“•?+Ó¾¬Ã¿˜ïƒ¾8—Q?|¥x¿Ž@K?H[H¾‡E¿£c?–´¿¦@ß¾‹ ?¾:¢¾¾?: ¿œ…2?2)¿¯â0¿“¦¼¾¢·?Y Õ¾„Ú ?4+r?.|Ð¾š£¾‡A?¾¦³¡¾@@¾µˆš¾݃?D?dU?PeR¿¡Et?EM? øP¾…“»?Sª˜?8ù‚¾©~Ѿ3~ê?~:¾ÞB?]o˜¾…f¾yŸÞ?µGõ¿‘j ?Daò¿RŒ¾†0s¾¢iž¾‚$?ÇȾ”KŒ¾åçU¾o\¾¾Ì°¾}²¾©I?&–¦¾×è?U4¿˜Õ)¾vé ?Ͼ@þ¾”R\¾:îŒ?C´Á¾•U¾]îÒ¿(ÀÐ?'ª¾Wßä¿°ìÔ?-kM½¡©? jˆ¿²ñV?¦?Ë$R?M¤z?!wÞ¾‚¶»?A¾ÿÛ¿¡Œà¾†Ìj¿”F(?<±¾Çˆ¾ªÿǾ€«G?çì¾¶y¾?êæM¾(ë?8c¾¾ }¾vu ?µ@¾ˆ§£¾}Ïü¾XÄ¿Œ‰¾ƒÿ¾ÅÐ;?×’¾n Ⱦ*®²¿¨?H¾q>J¾«|*?<¿¾0¾Î¾¥•¾z?[ ¿¥:a?2Ñ…?'-´?!Kó¾Ÿ&Ô¾Óó?5¡È¿™QV?gÚ@¾¼Í?CK¬¾”o¼¿›³Æ?áœñ¾/Bz?Y¾¾Êžc¾È%¿˜%2?É©¾ÒH¦?ß 4¿¯·?*'Ë;r¾¹:ʾ­®$?B\ü@O8?ïK3ÀоƒÅ„¾Žq>³J:¾¶½À¾Uë?O˰¿ƒÌ辤 Œ?à˜`¾Íº?=Ÿ¾¹#p¾¯E½?L¤¾·*¾³¥–?E(È?Ó~ä¾Ý‡/¾¦J?(úξª_Ê?@²Š?"ˆ^¿–R%¾Ë·¾€ð¾¯µŒ¾_?7a ?'®ê?줾`Æ¿’ÙV¾*»]¾pË ?ß|O?Óa¾]rä?|Š¿¤[¾ÿ{?.ÿT¾v¦Ó¿”„É?C‡$¾´–4?ÑL¾»Ž¾ét‡¾™7}¾™é¿’ôò?ãÆó?ê<¾«s¾²òW¾§D$?!ñž?È;B¾|1ð?¥ý¿¶È!?ˆÅ¾‚[?FÅG?'”?&È ¾¥b?©ˆ¿š¸±½öƒ¬?/ñ(>¬"¥¾Ôä}¿8IJ?Ù„¿’D¾y$n?º"?#‰¿©´”?ؓ⾑WF?Üu(¾`é¾JÒ¿£Žm?9‡?4`¢?+оšKò?E×Ã?-²¾^ÁŠ?-Æ@?È‘d?âɾ­c?hÔ¾[ß?I‡'¾n`P¾û{¢¿›½Þ?¹d??ùƒ?3°?*sÕ¿¥­€¾•¼®¿Ž¿ªv¾½e{?,³Â?&,4?-š¸?A?3x•¾üK¾—¶2¾Éi¿¾{¦ð?Øç¿?+2T?Sâ¾—G³¾³¬û¾£"º?ÖÊ¿•Ä;¾›H?ÅD?è¿§8?¼²¾n–ˆ¾Àø¾¾s24? »ê?&H>ï«?J¹ô? aؾ³çš¾nŽ¿mLÕ¿ßþMê²½Þé>?ïèé¾? >ê“¶?F \½ðÎl?Ymw¾(ù2?@²½Ó6ì?Óľ˜÷?UÒ¾‡‹Å?L-å?<Ö½ü÷à@r½½¼Eb?C%_?`{ò½h ¤¾–•€¾šŠ«?ÿËå?L8ܾÁ8q¾8oµ¾¢`¾ŽýŒ?_ è¾£x(¾?xi?VoK>Ìüú?MQá¿£Êð¾e(¾†¨¾a³¿  ?KF^>æx¾A®? á;¿¢Û¾¾¾Ÿö¿„ÝVA×&¤BÝʾ~a?M_ì¾½l>¿“Úa?BòQ?[ø¾¡%j½ðɪ¾u㾊̳¾5?b?#xt¿™¦Ö¾›íp?2+R¾µQ翚ɾz’î¾rY¾µ,ž¾Ãp?"H5¿¡Ѿ:i“½BØ@?R—¾¥ÿÜ?g྆o侫%¾ˆ†¾½Rq?˜ë¾•òÿ?5Ùô?åßø¾?0¹?3Ï-¾@ãI¾¯N°¿©®Ñ¾XÛ&¾Êøh¾eXd?µ;¾Œµ? Î? IÔ¿¡¿Ý¿šõ¿©H²¾|¢?%]ξ§ëÿ¾š¸½¾¦b.¾Ž‹ÀjƒÀk¾¿sH?%‘?YBŠ?(À°?$Ö¢?nä¾®öž?5¿¾¼¡¾›‡<¾©0`¾Ž€¾Ú“‘>ïîS?6êô¾ÎSm?à?Ǿ“íF?/*¿Ÿ„*¾£Œ®¾hûf¿šÒú¾P¦„¾´Åû?HZz?Öß?I`j¾±ľ†ys¾¹;Œ¾€ðè?!LF¾ˆ@?¾´‰Ù?0?æ G¿wó¾°W ?Dç~¿ *?÷à¾ZV¾E8~¾˜Vk?N•¾¾®Ð'?Bz¾„*ü¾®¤¿¤ÓŽ? ±z¾ØAµ?1cT¾Ãü?>*?8t¶½¿®*?!w¾Pë¾?YeÂ? 3Þ?>¤->gl„¾—Pq?96 ? }¼¿¬Ìø?}B¾µëË¿X侦J“¾¢*6?Fn¾‚yñ¾³‰<¾ÃÅþ>ã‹£?f뾎6E¾´ö,¿¡±¾žê{¾„–¾=¶g¼Ÿò¾ýæ½z´x¾ZqR½³†~¾TH`?bÖ ?‹~í?Sn ¾áñ¿ŒÁú¾=ÍL¾ +Ó¾e¡ä¼6p0¿|ȉ¾ ²­?¢Ä®¿ +¿ð{½,F,?CÿÄ¿’jc?LPÒ¿Š(o?\©‚½ÝïØ¿œu‡ÀF¾¤k_>Ä*‚?E§ü¾Yë×¾>Z_?LãO¿'ß¾Œ¾©?JÉÍ?c¢î?í·Q½‹‹–¾ä9ß¾*`¾ «s?Qw¾”ÝÔÀ¡?V]ξe«L¿’¾?P©R?=o?ízŽ? v ¿€u¾¾4 ¿™$.¿Œ <¿T¾®æ§¾ _¸¾BÑœ¾^'œ?$B>?KÜÀ¿«}@?ô‘í?;ïö¾±¤¿—õ¾’?(œ@¾åt’?5D?=µ4¾•‰Š¾PÒ?Fh¾?5ƒ*¾É˜-¾¦œ?/ ¾¨#ó¾²jÊ?¦ª?)ê俉þH?Nö¾@- ¾U½®?]ò„U¾¯á¾Ã'_?FÄ¿£Þƒ?J¾Å†?@{˜¾·†œ?3*¿³?z¾‚Ú;?7{P?#П?Γ?4ƒÌ?-ÂK¾†œÚ?(ਿš]n¿§Ë}?9&¾\|«?8R‚?%£¥¾¯X;¿¢Ym?4úµ¾¶â¾y#‚?(<ô¾gÀ¬?±?E*ö¾Ÿg?)Ș>ì’î¾Êƾlð>ùŒ ?#|¾W¿r¾Ô§Ì¾$a¾Í¾Ž¤?¾âO˾´ô_¾ÓL?uË\¾xø¿…`w?4hì¾w˜á?6Š¿| ¾Èÿ?2B¾V¾¾…¬¯¿” )½9¨¾>¸Â¿–óо«3?L<̾–Ž¿‘"’¿›à2¿•ÛQ¾|™ž¾Ä?*£?]a?B?$UN¾w±¾’J¾aã¥?á÷¤¾ÀÕð?cÈ¿“1ξD®Ø?N÷y¾ÀÖ*¾ Ç¿—<?UÒ?) à½Ü´þ½¡_꾉†A?Z¨0?Pª´¿“Ͻ¾¡}Ê¿Æâ¾Ž>?B·ü?!š›?á2²¾Kež¾l¶ ¾ (½ À¿‘Û±?(9Ú>£Ÿ ¾%þ¾€€ì¾½í¿¥3ܾ‚ƒ?œ"?BÓb¿šJ®¾‹‡À‡’?I[˾j´$¾Šl»¾g+TÀ оž,¾[÷X¾§P¿’‚?7ÏH¾‹OR¾m+!?QìG¾bÿè¾5+?A‹¶¾‡w¨¾«@)¾œíI?JQì?2ß ?BIð?[ Àr¥?Rò?Ì„¾”ÜH¿¢$8?+‚½?Jó?2s¿†ÙF?ça›?,'×¾8;á¿§;?YP¨?,¬Ê¿‘s¾>ù?侚7?3”оÈ\‚¾>¾ö»N?=‡`¾¶æ¾Š¾¸0Z?AÓ0¾ª±?÷ᾡHä?—ö?@ ?5©õ¾®y¶?.$¿wÀ 5?Yx¿°` ¾ø„¿ªõl¾D5¾vr”¾…2¾¼µh?"Éj?Ï/ѾBˆa¾{ .?=@¾~Ý´?A¿ ?;¦â¾Žµ{¿šKÁ?ÖqK?C¹Ô?MY¾«•å??-Ú?;T@?BÉ\¾“8ؾ˜_–?YÊ?nj¾!is¿›3Ǿ QʾË8_?<âl¾|<£b?Ä5Á¾¤L?È0?Õ1¾c> ¾SL?.ÄO?T½†¿ƒô?ž4¿£¦f?0çE¾“šL¿—³Ø¾uÖŽ?G¾ŸT??¬4¾¤B\¾}ä¤?Ø®?ä~£¾Aâ7? zr?µ«?F~¾äàÒ¾‡Ú?äÆd¾Òÿ÷¾Âqå¾Rƾ«h¾&¬?’E¾[ê¾N¨c¿†D¾?HŒr¾(5ʾÕùÑ¿–ì£?1üR?h%ƾmŽ6?95½½_˾¡ýÏ?H˾B‘B¾¼=Ã>†0¾~q#½¼Ú½ŠW2?=Î3¾)A¾ŠH¾É8¿‹"˜½ø®?q漿‚Îå¾hIî?5r¿¤ÛC¾YŽ¡¾0ìu¾“¾™?Ng4?;$a¾?a?;S¿žÌH¿“ƾ¯ú”?"y½Ø ?æ̾¶ïM?-©j¾æÀ¾IônÀ»Î¿¨ãÌ?W?$+Ò¾ƒþÜ¿—ô?9‡‹?.Ž ?3ÔÀ?$*¨?ìY?A´4¾N_Z?@>¿˜wi¾}·Ô?:„?5à?;3 ?Q0ö¾’–R?6àо¡¨n¾”f?!?9¿›Jz?0«Ä¿ Gû?%wì¾}_ξ·òÂ?]亾¯ 2¾•ù¿7?6Çv??޾}Z?@åK¾Š¶ö?>1¿¢ƒð¿¤q`?]î´¾¾–·?1ëû>”)?ؒؿôÙf?TÆ ?$™Ö?Þ¾_gF¾x³¾Ä?˾Tÿ ?Ó=‰¾’úP¾ÜÎÿ¨ûÔ¾›œz¾µœ¾ß3Z¿–ÚÚ¿¡뾇xý?/ùÇ?ä—??/­¼¾V‹?(±¾D侬rŽ?3 |?"ö ?F4„?ç࿤9\¾X·?$P6¾K|? $¾ÇÛ@¾ƒhè?Fë,¿‘ñ0¾ÅaI¿“ò±?’*¾¡;̗=¾§ o¾Òî7?K–)?//¿ÇGZ?0š¾¡ÎI¾¢sï¿’€¿§?Vêç@6Œš¿—ê?5­“>û¹¸¾«Cྡྷ7n? "¾FOï?Úî ¾–_?Ñý?±…¾—°j¾µúÛ¾|&Œ¾‰¾Œ™=?'Ô>?ð>?é>†?$› ¾µˆ¾Ò‹Ü¾aP.¾pá侑i¾Ç³?Wôz?Qžû?$‚οŠ4f?@о,/Ô?8Þ?BÍþ¿‰%ê?`{`¾”Tä¾NP‰¿aw½þ¬,¿:6¿E?9µÀ¾$J¿”É@¾!ïÞ¿‘ÿ½R«ð½äfz?7ñ¾±lµ½Ã¾¾GP?PÂZ?šs¾7¶»???N—ð?vÇ?æwý¾6 ?U?óÊ™¾_Þ?C¾LÜ×¾˜0?U“p¾ÄK ¾µjŸ¾Â‘N?@Õø?g¾%¾À’°¿Œ9¾­cë? Æ?ùx¿­¥Ý¾ŽÁ?Hç]¾Ç’Û¾Át¿žœÜ¾ïÉ)¾Å侩—›¿j»? çþ??[P¾°nŒ¿•{õ>¨3?7f~?DMÏ¿®¶Í?î)|?+޾)òë?5y¿§ ¿§ß#¾½öƾ5/-?Bº?[Eô?⌜¾LOu¿›®#?òŠ>ø‚>¾ÅÀÛ?)ºÜ?ùÛ¿}F? ß\¿›ŽR¾—ÃÁ¾hEr?šº¾“/¿—TÕ?êà⾞ì¾Õ'¬¿‰´?Ñ[²¾™ì$¿‰>%?»V?W‘ê?u^¿¨l¬?ÇG¾{<¾Gb ¾=f”¿ªÙz?ß0ž¿£ ê¾;¹è?Dƒa¾©þ½”. ?0òÁ@ü;”Bcç$?Ý‚¿¦Éñ¾³á/?>쀾]Gü¾£º¼? §@?{ú¿œŒ¾«&¸¾˜ºÄ¾~ª2?"òú?âÅÑ¿£rx¾£™?+p“?4Q´¿¥“? ,D¿¦8ö¿¥É¤?€¾JgR¾°aX¿‹!›¿ü5¾ÉÀâ?*x6?5›Ç¿ªDœ?5=±¾ÊK¿¾>›Ò4?*Ð ¾€õ¸¾¦|u?Ⱦ© ?-vÇ?>, ?Ù)Æ¿Çоò?Ýʳ¾—J!¾†7?Âe¾lêš¾øP!?Aͬ?Umê¾ÉÍ?Óš¡?6Ðà?((¿¡ ?9¹6¾s¾À΂¿‹ <¿›”½»³ø¿°ø®?;?;¡i¾:Í×?BcB?ÚRN@@al¿‘6 ¿«ÍI¾[‚?,qm?ïMz½žV¾Êæ?8u¶¿Ùô?JR?>Â?ôü?.ù?Y¾1›ž¿–¦|?YÚß?÷?LÇm¿ŽU¡¾¼â¼èÌx¾Ê'÷?Õq?Wü ? ML¾›è¾Ë&¾XA@¾¾öÙ¾tS`?.ª>?Q;›¾ɾ‹Ù¾Nt‹?ìhb?X… ?Uì*?3Á¾C_?†*¿‰=¾ˆ€¿Žå¾X*¾cµô¾ W?nMÀ}@?-Mb?$ž#?éM¿¥0?Cú¢¾~û?7Ï÷¿“o"? rܾ”1?êЦ?«næ¾ø?§ô?V²U¾¾ßµÒ? †Š?%c¿’.Ò?+ßP¾Š&.¾wÕz¾‹[®? -ˆ¿®ž¾V£>ý,¾£=O?Ï£!¿ž‚¬¾ÁHÔ¿°ã‚¿u4¾ˆ¾³WI?Üq?+¯¤?'vZ¿šfn¾’ d?%“¿¢P?Ö]Ͼ‘÷º?0Œ¾²P¾·ü¥?Cç?V𾓅Ã?A‚½× ö¾ƒJ ¾±á¤?Ø¿©Ã¼¾­û%¾©¿‚?7ùŽ?a·:¿¹¯Ù?Os‚¾§Ð(¾¡8þ?D 4¾ž¾¹g7¾aý¹¾Ó‹Ø¾u$¿ª¨¸¾Ÿ*ý¾àžö?$"l¿©¦¾A·½PB”@C1N¾uÇC¾¦6s?Mâµ¾w˜¾–„ ¾“2? ì|¿@¿¿¦6'?*ÒÜ¿Ž)#¾æö£?:í¾Ëß??ªƒ¾°˾ÀçʾÆúM¿–+€?*+õ?)>Û¾¤Z¾|w.¾±‡a¿ 8öÀsþ?+E¸?Ÿñ?!·¿ v¾Ȇ? F‚¾£LÀ?ÓŒû¾¤ã’¾¸¸?0RZ?DÐò¾¾Õ˜¿‰y‰>éùø¾“0‘¾P‚Ð?ç9о˜&¬?Uƒt?8Ñô? w ?" J¾ÀÓŠ¾€9´¾tª|¾oüœ?Rt?'ž¾´è¿«wÖ?åØ?CÏú¿ â?4ßà¾[åV¿Å+¸¾ ¸¿Šf7?W?bQ¾~ž?,±f¿Š÷d¿Ë¬¾8ÓÀ¤¾%,¿‚­ð½¿WX¿½±¾IC™?TªŸÀ(½ (¾?"þ¾RÞ ¾R«°¾«,©¾^ê¿—zù½ú ¿“Û“½ì]ú?+ r¾[å,?-¾ª?TR…?3ò6>ëbé?äP?B?C½®¿š¸ÿ?ß'³¿Ž“à?A2¾j_^?3Õ§¾:uœ¾¥Š³½…Þ¾Z-T¾T̾÷/?8Q‡?,Ϋ¾Ö¸h¿™|Î?*7(¾ˆ”H? ¾e”P¾žé4¿Žÿâ¾Ñt¿¡4ó¿°ïN¿‰™¾ŠÆ¿¥>P¾´¿r? þž¾ÅÃÆ¾¤P˜?“n¾–?CØ4?5Ûz¾¼˜®¾µ˜Ù¾fýL¾—“‚¾›—Ⱦ¨ô%¾³wξ£Ùb¾r¾¤¿´¾Ú¿-?^ξÏN?à ¾¾œiõ?åfq¾Ø‰Ç¿™P¾¤F;?Ü]㾞à?D”0¾Ï»„¾Ö«s¾©¡v?2ü?_œ?H¼¡¾Î}T?CW²>ü0…?0Xf?Þ}a?FÍ ?ÚÈE¾–ú̾]]^¾5l?S:¤?|Ѿd$¿ŸÉB¿–´?5Ö¿¤ò9?*j¿¡~¾e>T¿«9l?D«;?Ðê’¾Ÿ>Å?‹_¾tÞª¾ãx"¾¢L¿™Ã@?JNÚ¾šóʾ”â‹?1h§¾•È%?/=¾#¤¹¾©õx¿¡lM¾‡ª¿œN¢¿©ò¾šèk¿Ÿ±Ç? 5‹¾›Ûb¾)¾mz?¾?(ÍX?Ùe@8EC¾¹‘>þX¾9§8¾™“°¾Ÿ¬¤¾È³j¿«÷? Ú¾Œ¾ÔªÍ?¾Ò¾“†¿§ Ô¾ˆ*‹¿ºÝä?-·?Fp¾Í—‚ÀZ^¾‹?B›û¾O4ö¾\OÉ?Ydø¾R( ?Q$i¾=׿½å;ž½·(¾_‹¾4 ¾L̾Q…?MO‘?YíÒ?:œÜ?hª¨¾€C?CUƾ ù½Ñõz¾Æ$½³ôž?󶥿(¿–$Œ¿ƒ#J?8Q#½Ž$À?x†¼. ¾>ßû?"j¾2¸?pëÜ?3RŸ¿þ6¿Ÿ¬?B'r?+Ó˜¿V˜?e`¾!†¾Z@T??PÄ×¾7Ö´?E{J¾É†?<]j?:]D?Bp?ëŸ2¾„Ã?¹á,¾ö^?æÎ_¾)$ɾI+¾U®¾q1(?6Îì¾ †!?5œø?dæø?O·(¾= H¿¢n;¾P¤Ú¿ª(O?S²¿§F®¿””?ޛ꽒2&¾ ¾{S’?#@W½ÚŒÌ¾¥Êz?Mˆ<¾¶i‚¾ ä[¾Œ„&¾­( ¿— ©¿Ÿ†r¾±ä¾UF¾=*K¾FWò?HfξwT?I¾³>ü¿²† ?àID¿¦;‚?:'¤?F=.>Ç1h¾šHð?(«5?5@;À³ç?<ª2?)<ô?4Vú¾Â.Ç?Ü€Š?è¬?8 ?+ƨ?s5?IÃT¾~Î?Ý)²¾¤Äµ¾¯uû¿ Gi¿¢å¿UG¾·µà¾ˆwg?ß?!1æ¿ 4ÿ¿›²l?ïw?ß`?õ2@¾ƒ¬P?1?Üîì?Tô¿—}?W_¾aœ’?+ø?¾Ò›s¿”_ð¾-Kv¾£e¾ª ×?ù’·?ZÌ¿‡ë?Mº[¿’(¾ž±9?éµ¾÷Ø?=÷÷¾|«æ¿´¾ŒàÃ?$F4?ßö¿ŒÆÍ?E*2¾µ“1¾‚)7?T™]?G¤š¾ÖU±¿ R§?7Ü„?Q¹J?E•A¿›û¾ 6¿‘«?8.ò?Mñ?6!??2»8?8n:¿–?h¾›Án?´õ?î¢Z?6³¦?ËOx?{+@§p>êW[¾Ïô?™î?.wÀ?é~¾ÈXó?;©„?-”ÇÀ,‡Ô¾½*&?û—+¿™ྠ&Ò¾?&?h޾*ßÄ?vï^¾ƒ×ô¿y¦R¿œðì?aSÃ?`ó?!^潺ñŽ¿ÎL¾’kD?U¶¾Ûð?öñ8½Û9 ?PØÏ?@œ"¾šI¾‰&¿›„Ä?:÷w?SL ?8Q ¾›¶Ì¿¢J¾?ME¾’[f¼õÑо¶ñL¾œïÙ¿˜Õ¼ë‹`½õ5À¿ Ⱦ„)*¾6p}?ìY¿‘Æ ¿¦Ï¾@Ó¾I+?&;Z¿ šð¿}§°?Mf¾›nž¾Dƒ¾¹Œ?MÏå¾~@ž¿‘i¦??šÞ¾¾µ9¾ }¾‹b^?Ù;¼/8?Z½R¾`í^¾! 0¾€Íx¾Y¥š?/K侜Æ?*ð?2²¿¨†f¾h‡Û?<×À? ºß?ÇŽ??Ùj¾Ñ'l¿¢í?2‡9¾;OŸ¿¦¿ˆQP¾”i?:³d?>Ží¾*@?!Ž6¾+?èâ¾’®Ô¾´L¿°|¿^õ?C±?Es¾‚Ç‘¿‘ 8¾_¨è?j ï¾kÀ`¿£ÖN?AÙ¥?598?ôn¨¾¬/o¾f²¾®¤c¿œ2¾qº|¾™Å¿ª1ܾŒmõ?A‘J¿£á¾TY ¾”ç!¾Ýë9¾ËŒá?S2꾉hF?-”°¾ãßÿ¾Çà7¾ÐÇ€? —¢?=“¦?)j¨¾’Ìò¿¬«?2]5¾Œ­¿?×ú¿?Ué¾Ç7 ¾_>:¾šö¤¾qöm?@fN?Aé?À¿›Í%?AZî?( P?„ø¾sât¾nf?BÇÕ¾ˆ(¿©ï ?â‹o¾n‡Ð?8®j¾½=x?z@:™X¾HŸ?àg¾_5Ⱦ£äR¿¤%¢?]¾¡l?1m?A¿½^? .d¿™ÛX?F‘Ž?Xa¿¢Ü?0|Œ¿‰–?7¾‚¿Œí²¾Ò‰`¾¢J?MR̾{vx¾¡øZ¿ À»?+çD¾L—€¿‹2z¿°º¿œO‹¿b>Ÿü?0áÌ¿¢î¾1²¿¯Ko?VW0¾Q$y¾ièV¾ºfó¿îc澌S½pd¬¾7)$?`QË¿Š‡6½ª+4¾yȽù]¾[T½Áê¿—ð­¾6Øæ¾N‡¾ŠåŠ?X=Ú¾“?8\ˆ¾ƒ¶ ¼­“€@ÝÊuAÈzª?MF ?.ZX¾hFæ¿`è?V…̾Wæ‚À aq?#úN½ð ?UcR¾¸P¾º>?2¡?2™è¿…÷¬¿šF?T<(¾ 8¿™%’?9ýŠ?Gãz¿V¿©Z¾H㌾ŽÕ÷?îXüBÙѽ@€‡¿† ^¾uôؾTð>À¾ƒv?1šã¾U`Ü?B÷~¾E8¾…]I¾|#¾?N\?,ì?©P¾ž“g¾¶?/¨½½è¾6ž(¿•·Ÿ¾~³?N¿ /Ÿ¿½o?>Vˆ¿•0ƾ4¾Q-y¿‹Ly?áEU¾º|^¿“Ã¥?7óÆ?à|?H—D?¸þH?ò&?0ùª?‹? æ¾è?1¾w@?*öþ¾¦ÒھûÀr6?Ø|?D{ÂÀ 。Ä6?3ËÔ¾˜„ª?Ô…BÀ Ç‚¾RÐc?='H?.L—?½©L¿œ´¬¾Œr›¾€ÃŒ¾rŒX¿ žn¿£u*¾Ïé?+߉¿«>¾¤˜g?!bL?''Í¿Km{?tw¾‰co¾’²eÀ4:¾¹-î¾–È­?'™¾Ru…?$5BA rL?¢¾«š£?&·Z?ñ8?<=–?&Åò¾C*¾Ø£$?èz<“CÀ¾£ïM¾“S¾Ãð^?ÑPj?6 ?=0?GfJ?#ƒæ¿§Ï¾Ìš¼>ü:¾½„¾òÄ?.xľŒL?>ïØç¾’5ξåw¿²fd¾¼Ü.?ãfù¾£å«¿›•¾ƒ}¿ž§°?ä@¾í¬?-Þb??}$¿²h¾¥®‘?IQ?#iW¾›®=¿©.?Ö\?:iˆ¿±q¾™r³?1Bf?;cÀ?Þ…æ?PÒ­?­ø? ¹¿›‚¾n^?ß ¾ëX¾Ï0E¾Cå–?Èý?oÈ¿©`¾ n¿)°H¾ÁæO¾î¬^¿O5,?d"¢¾Féæ?H À?oLã?vòl¿—g‚¾’ûX¾™¥è½í.½·yª¾NÁO?3 »¿—D¿Ÿ’q?1?´½×ež¾+¨g?SÙ®¾G‘¬AçSB?+ˆ?êÚY?0fý¾‚ü>ÞÞ‹¾v¯À&Ž¿|v…½ªÑ¬?Cì¾€¢ä¿ fÔ? #½$ò¾`>˜¾·¿ •¦¾…”?Hœ?Ciè?DDj??‹`¾… 뽎y˜¾ ¤Ó?åò@ýâ\Cvå@¡ä?èõ¾sÂ#?Hø¶?$»p?4ö¡¾¢› ?>sZ¾¥ì¸?IR@¾¹ùI¾W—˜?DnB?HÏ·¾´ë¤¿ ç¾Œ´y¿™h?Qñì?`Ø8¾Ç¿0y¾¾ñ}ÿ¢¤&¿› y¿ˆ‹7?í}–¾^¹Ð¾²Iˆ¾|oB?äUó¿–fn?Ž?/÷?"ûZ¾”ÕF¿‘ ü¿”¦Ï¾±â!¿”p:>âÀ¾¥–²¾¦ ¾†3x¾± °¾+;?ë:¾Êùœ?@j¿¡-¨¾€Ë¾™qÅ?Å~?`Ÿ»¾‡¥½§†?ß4F¾£b?pø>Ý4'?BNÖ¿””‚?'Ö°¾¢Â?£G?2 ®¿í¾5.ì?º)?0¯"¿¨R¿˜™?'‘ê?.ŠÐ¾—1û¿‘>G? ’¾¾‚çØ¿œ+Ž?89¯?"®A…á\C>B@Ÿ¦ñ¾2=?0I?4ô\¾ØÔ?  ¿–k4¿ši?>Ä¿0¾²ˆ?0ïÀ¾ž­¾•)¿§‹I??}‚¾Â¹”?±.¾/*¶D¾Ô•U?ÓÔ‚¿œZÂ>|€>žMX¾[?•¾Õê¹¾¤¯?;¹¾Íñ¿‰¤1¾¢¿¾†Å,¿œØ? Å¿¾a+œ?!$À¾àê&¿Ÿ(?àø?Ü{¾Žüé½Û±f¾H?5–q?'^?Y~œ¾?Q-¿¢•I¿ŸÑ2¾!`Ž? nÈ?28³¾±@W¿˜€Ñ¿«ßn¾bñ8?cò?$*¾8-ϼߵ¿›—?W· ?; €¿‘^3?t¨ ?tE*?akµ?xA ?L«ô¾TºF¾ÎÌ6?2qf¾ ‡Ú¾š->¾…†¯?AOá¿›Ðæ¾?NS¾EÐj?]A?[W?gH@¾U½‘¾’±¿–Ö|?@ u?X‚„¾H7¾:™µ?Ç7¾£¤?K¤:¾z‡:?à‡¾‘‚˜¿¤½þ—L?7}{¿”=½çz?=.¾mù2¾“ïû?WJ­¾‚óB¿ ¶Ç¾(?ë2Ò?Nο‘¼x¿§Cõ¾R%¾Dþ6¾(XQ¾j¢–?Øœ¾š&Ò?V³í¿¢A¾Q™?Aˆ"¾`F¾$è‹?5¤ä¿˜PÒ?Z×’¾ ø¾T ì¾g½Ü?T‚½„š°¿•/¥¿£î¾e2?J⨾"ì½òÿü¿‹²ÙBRª@hÖÀ ³®¾”<è?3¡¾#T ¾QVƾeœ/?0$í?&‡”?`n’?àR¿Œ+…¾obç?Mf&@ô1AY4¾} ?.‡ô?Aq2?Ô¢?C}¬¾d@?W2Ú¾£Y*?W½ö?PìA¿e>¾¡v¾- D?6Z©¾(?;'Z?#?á¿Dx¾}u¸¾ÀC¾€¨÷?CʾÔ!æ??üð?Ú~q¾{ÏÇ?.üh¾Dÿ|¾=rb¿™MÑ?M 6¾Kh¾”«o?.÷x?[bt?ä û?1D°¾SçJ¾´üT¾[ý?V‚†¾œ¯F¾›š™¾GH?9Ç?aæ’?; O?:¯‡?3[Õ?HŽZ¾\/ç?9²¿¢ŽX?)l6¿ ;†½Öêľ]Bî¾÷xþ¾¬ù?TqÞ?æ¾¼ÒÊ?B? ¾y„¾rr,?Gù¾ |¿Œåt¾µ‰¾š¾ʾ‰y¸¿Ÿt£¾ÞuѾDô|?𽿌D޾‚,|¾±kô?Ù…å?Rê¥?az½P_࿟:W¾Bbd?EÍ ¾?l½ùÖ$¾•õ¿•T?-£d¾‡–?VŒU¾•ˆþ?M½é=ºú?Rá+?L?Ýg”?F™ø¾¯lÔ¾b«Ü?,¾‹á½|ÚØ?.L*¾¶n ?Òå-¾_ p¾¸R^¾žñè?7'ë?k°¾q º¿cêU¾br¾£n~?1+ݽûoö?/êì¾ „u¾>– ¾Œ…j?eä°?,²Á¿¼W¾Mmñ¿ŒÓ¾yú¾e?i”ð¾cìo¾lq>?AGP?8;…¾¨©Z½k{¾äã¾"%X?6¾™WÔ¾™‡à¾]€ ?WÑÆ¾†•r¾*«ä¾C7¾?Ë´¾<·î¾²0 ?N‡<¾Ê@>¾‘J7½ºgè?N¡0¿¦Mܾpp޾šTé½ñ2¾ÄÚÛ¾þâ?0ÀÒ‹¾£qÚ?²¸6¿¦fº¾ÆqD?ÝÎC¾Î"?9Å¿?ÛYa¾6*?9K"¾kD¿3ý¾ˆï,?A˜'?*Ðm?HÀ?(E¿¥f?8 ´?ð´AäŒÑ?Ã?¼½Õþ¾J ¾ˆ:.?.Y'?Bé¾UÑ|¾û'¾Ÿ â?2÷½º#Ö?LÒ?aíA7.LCb¨,A¬½¾ŽI%?<ÙE?M¹8¾4cº¾–x¡¾Y"¾½wå¾ßʘ?‹Æ8?7¾u?NË×?C•ê¾u ³¾˜8Ó@)vÔ?;šI?OOß¾¤Ø¿Œ–?ØöV>ói2¿”ÿq?;È›¿®°Ñ¾Vf?*y6¿©çc?¼(ª>,zb¾]Þ?L†‰??Ö€¿Ÿ:Ѿ¹þ¾=†L?N'Z?tºø¾’(ñ¾¯i6>ý@9¾PâÕ>ºsr?\+ù?¡ÃA¾KïB¾Ç¿­ÅÅö¾¼ëV?lKû?Ljô¾cž¿– ?]¦¿³YP¾‡o ¾t‰?@«‚¾dn\?Ü´,¾Ù>¿›ø¥¿¢wU?F«¿-Ö?Iû¾\„¾/@†¾ryº¾3@£¾ åI¾Y¯è¾a\_¿¾ª¾{˜×¾¶†z¾œ”¾;Ÿc?,dº¾fW㾡ØO?nýw?Sþ¿§t‘¾µ˜¾?]È?b­±?_×å¾ÇпžRÌ>à*h¾â`¾†Ýü?"Dû¾ÂM0¾„')?/˜Ò¾¡Òо8Oà¿£Õu?]ô¾=pl¾c€¾–Du¿“ ö¿Š8˾Œs>4ŸH?ÎÑ-¾/‘p¾“—†¾˜Ñð¾\'²½ÿj?<ùÕ¾iÀM½«.¾“Ḿ—L’¿ŽÃž>×½¿±É¿š¡p¾8ù¿²­š¾ŒÇ˾‚a…?>T4A¼´ÒB‡PR?ðR•¾ŒX†?(D~?W4h¾¤¦t¿¥%S¾º¼?5T¾¾¥G¾™»0>Îgâ¾z©«?LË8½ Qx?4øT?5/¢¿ef?B±w¾¶=¾–ô྘óá½ñ ü¾JG_¾Tï%?/?AÓ?Tç(¾;gš¾¸aî¾ï¾ôÿ¾6¾ˆ×÷?6W?2„ ?5}¾•ñ“¿¬e¶?H'ï¾h ¾ˆ©ƒ¿¶2#? -à?5Æ!¾‡Ç?:÷¾h|¾Œ‘¾n_¿ —ê¾JPb¾—>Õ?Ø_Y¾Bq?7M?ÆÀ¿´(;cn$?Dϸ?& #¾Ý蕾šë"?#Õ¾¢ ?ͶŸ?Pô޾7¾©è¿ §~>X¾Ñµv¾Z¢—?$˜Þ¾¼¾hÞJ¾CØ?4ÁC¾yx ?6Àx¾° ?/ߌ?=)t?Ö¶ß?ÓоŠ6à¾v™Z?KìÑ?ÎJT¿¢†¿¡CS??{b?1çB¾Uæ\Àvn¿ž·¾j^À T'¾E¾Mç/¾Î…Æ¿ Ø?Êî¾Mî?Äù@¾‘ÀY?5²S?KÙŠ½{n6¾˜’˽Gµô?W„8¾š‡Ô?>»,¾šAs¾[TH½#T?[Ψ¿¢§¾Žjœ½ó·?%ê ?Qš(?F| ¾1ú†¾Ä᫾1if¾Õ,?P2?Kv?Me ¾³Œ¾ÚÁd?Ø—%¿Hã?Ò›~¾B<½ÈÏ´?ÂH¸¾­Ûy¾r#¾¤èо¦¾uƒ¾aw¾w›ë?DÝW¾šB)¾¿Ð¾7¹¾>ø¾²~R¾‘z>éá¾aýξ™¿?îE,¾¢õؾ&ʾjÿ¦¾$çŒ?B#¬¾”iÞ?9úa¾±ï¾^ Àî¹? ¡õ¿|P?Zn?9¾ˆG¿ s~¾¯E ?3”¦¾ˆî¾sý¾¡ò?Ye¿˜Ìï?V^ì¾—ë’?rÄ;¾$¦?El?Ùü’¾ÃÃÞ¿šá徆²?<ºÑ?L *¾‘CJ?RJ€¾‚v=?_½!?ù±¾=”¾^Ìë?[NÇ?åû?Ffò?ß?¥¾•®d?G 8¿³À¾ºI¿l§?2{p¿•4¾µ¾‰E:?,-²¾y¦?ÖCá¾ÁA"½Š]®?5ßw?DÀ¾o¸?UB%¾Rœ¾Aè¾8v?Nóx¿¥Ó ¿ ¨É½ý<#¾wáÀ^!?Z—Ú¾ç®?B¿Ê›?W?¾‡?QÔ¾ãº?\…Â?6}f¾K=›½çËù¿®Êó?JÃÈ?DЙ¿9 ?,(B?;)\¾»N¾kìž¾j[p?Õµ¾àþ®¾¢Cʾ)Sh¾ºÌ?s¬ò?[Þ±¾¡áª>†i©¾M(…¾{@¾£9ˆ>›×²?$aE¾{+J?.˜3?HÔ>á{x?^.X?ÉB?G 꾘O†?&Œà¾j4¾l†?JL?$S×¾•Ô¾?p^?2×ã¾Gg¾3rö¾²Ü/?ÖTS?Ãã¾H¹¾+¹F?4T»?,OѾ› ¾( ƒ¾D ?r¢Y?:×ǾÁ”¾MT9¾™«Ä¾¨Ì¿£ãB?+¬³¾tn¿?(Ó×½ÙŽI¾…ç¿—B¼¾¥¿€¾¯žŽ½îš<ÀÀ´?ES¾ˆ"f?'C‡?²9 ?È{€¾Eòà?7uð?Ðc¾G¾¸õn?8é¾)^ã@Åv?h½Û¿„¯ ?[8¿šÂ†¾‰Ìå?7Üß?O‰ ?7Z ¾•S€¾f@R?W.¾ RƾóÝξ.¡¾{Ô»¾), ¾qÅê¾z 迦„ ¾Ñ&ù?Ó·?C‹Í??ðÆ¿ªö~¾¬ª\¿‘/¡?=¯¾h¡´?hÄ„¾‡Ù'¿–Ÿ¯?RÎk?LV ¿¯GG¾ ÷6¾yÄ¥¾_%ª¾b㦾³‹å¾c^ ¾“6¾¬??bo8?7È?ÜÌî¾xYk¾”0¸¾nèX¾/¹l¾§Rÿ?_¶¾ZpI¿²’C¾myZ¾pœ6?Æí¾|2*?› !¿˜g?AÓ?O:¹¾g‘,½Åõƒ¾½dx¿•hÛ¿’Á¾’—é¾Ù+Ù?P–{¾šuj¿Š„¶¾Í—¿†(9? ?7Ï5¿³ÜI¿¨³Ü?nE ¿™ùʾ§3~?Qßí?K·?&‡Ý¾ë›š¾‹]ÿ¾N{M?DPr¾ÆÝ¤¾|´XÀˆ½%“”¾©(ܾ!O¾œX¤¾³ãA¾€ç¾[ˆ?LÐ?V†Õ¿¨Êi¾”d?Øk*¾-˜¿¥ÜÚ?)P¬?Nf™@–ïæDp:C´C@3‡¶½•~ô?.þÒ?4œ¶¿’²¿Ô?a~$½Æ3 ?X¾eJ>³Tþ?8¨µ?×’¾»o¾–HR¼¿’t¾~y–?oå1½“Œ—=ÐÛ`?B¨‘½³T¿ ;\¾hu¡¿ s¬?T»×¾¤¯:½ûmu¾»‚?YÖŠ?:ˆÁ¾4¦ì?\Ÿ¿§P~?,ϾZ½î˜¿¬†?\.?âÒ¾!9¿†ÆŸ¾Qô¾—а½ò‚<¾±-⾯aœ¾#ö¾´·ü¾¶ý”¾‡â?6Ô”¾r¥J?Õ5€¾[U¾<-MÀ価S¾2F ¾ƒÃ? s¾¶aõ¾¸ôX?A^(¾ªx‰¾9¸î¾ÖÓ¿žÜ?ß±Á¾½X?K\¿¾¡Å¾þ?R¹@¾^i\¿œì¾•ý?GÚü?AJ/¾«MF¿¡à¢¿AF?e"V½ÀwD¾@Çÿ¿¤ò¤¾^p¿­Ä“¿‘Æ¿˜wu¾‰о„|â¾±yt?Aóæ¿ ¾g¾|êÒ¾œ@?'Lj?a@µ÷?L'?"y½Æ<¾šÏ§¾3‘D? 3¾k4?& s¾/f]¾<Ìy?X[ï?o.¾”B ¾ÛÇ?<[«??þc¾"ûè¾4O"?e ù¿X㾆⾈³Ù¾y$?9. ?\ƒ¾-ÝÖ?&Æê¿©Vû?XVc?UnG¾)f¾¤¬¾VñX¾µD ¾¤gf¿¸í¾w*¿§Á”¾¡ Ò¾Ï @¿šûä?ת¾L½D¾Ûq0¾cÿû?Bj?,R„?C`ƒ¿£Ö¾À©¾VÕϾ°’ª¿£3¾›à࿨X?,¢b?5õN?#õÕ=€T¿ Ñ?ô[?JÄÙ?ì§®¾ÌuA¾‚[D¾ieÓ?2ྔ¹à¿˜!®¾£ ?*ëÒ>4ùð¾d:œ¿²_ò¾?/¾ª¹Ÿ¿–ni¿¦½6?R¶B¾¿Ùú¾ª²Ñ?¶ºa?18¬¾«"о¢Ì¾ÁÙ„?6ð?7Þ7¾[[¼¾‚Ð?ãfÝ¿›eœ¿¢“û¾„>?Kΰ?<Ú¨¾¶˜f?!î¿—.œ½ªr¾“*?B&›?J‚E¿÷‚¾Tc"?:µ•¿‘g?9Å7¾ªö?´ó̾‚xø¾™)¬¾ÈÕg¾¢ª?X|µ?J8,?2ت¿žÁ9?>Úy?âqá?`±¾{6”¾é¸¾ÿÍ\¿—½¸¾N&ô¾nïn?"ž¾f21¾_9À¾­ÕO¾£Ø?:Ži¾¢þ¤?80m¾ZKž?4÷q?D¶¨¾¥×ü?n¾P$?.æ¬?7M?àÆ¹?M€Ë?„⾡G=¾Å<}?F@ë?L<о—\¾sLv¾}±Z?iÏÉ?ÒŽÿ¾¤ê–¾A¾š¾œ¾»¤ú?¹¾m¿3ùV¾Γ¿¥å|¾ƒ}U?F#R?O¯¾ä`¬¾}ý™?ådK¿·“ê¾°c}?ð¾:¾¹š?ë2q??žè?4YA?!¾á, ¿ ŒÖ¾š‘¾¥®8?ÎSо—‘5¾’*4?@Sî¾¾¾ÄêN¾Jƒx¾‹;µ¾•äù?)¹;?;Ȫ¾+®ó?˯Á¾W#q¿¦Ä8?Ü×3¿§Žç?C¢:¿›)¾pèl¾‰‹M?P꾓ðZ?Z‡¿´]?âb¿¢ñn?6›¿Œ*[¿–þ…•ì?_|R?9Þ˜¾Õ?N?Yo­?,Ñ:¾YSç?6ô¾º9@¾–K¿˜m÷¾h(¸¾LÅæ?./¾2ÚÀ¿è(n¿žÍ&¾Šÿr?Z Ä?8‰?8F??%]?UŽ…¾g¥?]ÃÒ?5cš¾lÂ?M ¾‚>?ßz„¾¥ Ð?;ßÄ?>~¿š ¾„€?3‚˾q7à?·‡™¾z(Ⱦe†?Býö¾”R¾›!B?R\оF© ?:ô ¾¥Ip¾§>Àf¾Bƒi¿›–¾Kâ|¾]‰Ð¾£M> è¸?'—?4ؾ^ƒ? sI¾öªÚ¿æü¾?©—¾u¨è¾f˪¾g5¿ª¸ó¾;’¾wj$?ð:Àp ¿™ù?:(t¾Ž¾¾Œ“\¿âé¾Ú?4l|¾mqb¾œí ¾Z ±?tuƒ¾k‰>¿¤ƒº¿¦åƾÑ?å?@„¾©ÿ¾¿å>¾¥´Ü? íÚ?A]ᾜ'?#,6¾}¤¾7ot¾t8X?$"â½Qï<¾× ¾Y¬¿›,·¾¢\ ?Bذ?ª^¾biƾz€¾5#W?ÛÂù¾“¡¾ÓÁµ?:b;¾vX?Xì¾¼}¾•@®¿¨ø,¾¿~?2Su>øI„?Íâ¾ÁµŽ¾#ÿ?#F8?SW?@–ó¾¡ß¦?7ÔV¿žm?J  ¾U‡¾ŸÏ¾º˜¾zsľNL?*Ñf?à¶¾žh¾šå?8RÙ¾¡ɾ™z¾…µä¾˜zŒ? c™¿¨EP¿¡RÍ?$‰:?]ù¿š6¾¾ Ìg¾y‹¾S¨~¾g徎»b½Þ-?'´?;ï°¾šˆ¼¾Ã{þ¾Zp÷¾û˾²ª¬?>8»¾*Ab¾“¿ ?D‰o¾Ì~ƾ' Œ¿¬»¦?Âi¾½ñ¿’üh?'“’¾¶,Ì?-¬X¿é?WI³¾Y½?¢ ?;j¬?[¬f¿“9¾bÑ™?WŸà?+˜?1zi?% ò?IÂæ¾¥Û ¾\Ž¿—?;yؾ^辿¢?= ¿¾sû?Ve‡>Ýý:?Â}?<ß¾GTÀ?b¶¾¿ŠÌ>K³€A´´ C¾ÍŽ@g( ?ZÑ ¿›rZ¾v¸z?Ôf‡¾[T¾†Ä¾.Q¼?3tsæh¾F0?G’g¾,eÌ¿šâ?Wj<¾9%r¾ŒOZ¾¡Xž¿…à¡?1Þ7?=‘r?Ñ+€¾8PÂ?θ¾bN¿–`Ú?Þ¤.?B -¾_¨?¿¨‹m¾}ŽÚ¾‰>u½Ýj¾Ð}æ¾l”˜?@»Z?R2P¾:û!¾±ŠÚ¾¢ò™¾VÔ™¾«êÆ?'9`¾ƒå>?>µ¸¿¢Ìu?Mò?2%µ¿”yŒ¾zÂ??­ÿ?Z…¿µË+¾ Ü*¾Rm[¾`Ƚýžø¾Ñðd¾²L¹¾R†×¾ˆ„ܾ˜“ü?+m?/¨l?Ö@‹?FEH¾T„†¾ñá¾!á¤?2;¨>É®ª?KÁ+¾ñoj¾3õŽ?Xþ¾?悬¿Ÿ ?=€¹?Óvz>–D澟,i þ¾@m¾`ïJ?JÔ¿² {?TM„¾Èì?<¾Ú¢¿ ¨€¾÷g¾ŠL•¾ò­Ì¾‚&ñ¾9n7¿JÐY¾ ¾“õ ?C×)¾šh¾?0Zð,¾1fξº«¾eƾ¶ðâ¾6Fá¾ÜM·?#€Ÿ?Je¾=µÆ?Pïš?ó†Ž?ÛϾC–¾¼Uà¿&õ¾|÷,¾Ÿý´?Umd½ßÀ?°:¾TÜ×?Uèy¾;¿1¾­Ãœ?1¿±.Ù?};äV@þX—?!ï·¾¤¶¾M!8?R;‰¾j%Â?à¼I¾¬! ¾:SÝ?,…[¿–½¾lqp>×í?;íž?U¸`>ù–¬¿áHT?0°–¾‘Äñ¿£?W?à,h?hÒν8rF¾{+¾¾Ÿz?Và1?Hv¿ž.¡¾0¹z?Ëtz?Q=Q¾›´³¾UpN?Úk÷¾`Vì¾µ?6d¾¼A7?UEÁ¾Hï?=“¾¯Tv?48?*ôè½èÊȾ‡cy¾Ù!Ù?œ*¾7ÒE?)üG¿šcý¾§¦¾†Û–?GÇj¾x™?Oë侸„?Ýsx?YÔ|¾ƒ@(¾c97?9™‚?UI¼?: ¿žV-?(Ѿ¬õ±¾mÀ¾©´<¾˜ˆt¿²ð@>ó¿¾"‡Ü?Bi¿­Z+¾Ž7½ð.Ä¿£ÒL¾W?«¿’4ó?9i6¿´—=¿ó¤¾–Þ?VW\¾X/Ò¾ž’`?æ®;¾Œßr¾¾ô?n¥ç¾'}”¾¦Ä>¾Kˆ€¾-©~?Þ^?Z€¾ºeؾ>Ú´¾Ý‹ì¾¿:V¿–ßè¾”“¿Øý¿”~³?aZƾ’†2¾pÝÆ¾"¾¾¿‚?R@¾¾0Ìî¾GzÏ?n÷ϾA.¾­’V?8µ¿¥ì÷¾¢|b?˜?T>Ö6Õ?,÷¾á)¶?!ø¾ƒÛØ?!Éí¾t±8>þû4¿¾y ¾i#‡?ÝGß?2ú¾•¤¾z¿˜œ¾/Ó:¾Å\í¾v"?T3\½muŠ?IF·¾gŸ0?Q6/?4)õ¾hÿÀ?cª¾ÄJÀ¾ "쾃˾¸DØ>ã–>¾mºÄ¾£pC¾|8ú¾Ëá?ã¾Â?'ü6?[ü¾]ÉŒ¾F¨¯?ѹ?ÜP¨?BÅ‹?:.Ü?R;§¾Ö «?<ô?iÜ?/A(uøB¡Y@ +Q¾ÀÒÎ?NR¨?<ž¿ îO>Ë¡ß?5:¾¬à ¾°¢Ý?Øí ¿Ÿ‹¶¾³¡Ž¿¡š?Z"$?2æn¾{€Ê¾@Š?/§Z¾Wyg¾Ÿ­è¿úŠ?×Õ¾d6Š?'/~?S‚??ì|¾¾n?.U°¾–ó/?])¿¢%]¾£N?d§ø?:x¾˜»†¾„׋?Až ¾“W'¾ŸJv¾$4«¾e,'?þ¦¾×;\?1²ª¾F#¾–â¾vñŒ?4ùF¾m®b¾Ì-Ú¾Ñm®?æ6>‡å­?.œL¿³¾ŸÊ?3-1?Óξ?ÙÀe?9ð™¨`¾‡å¾R'¾9Œj¾tõ¼¾\o?-À%¾¶»˜¾Ã~?1KQÀZN¾š2¾¹\ø¾ƒFæ½Ö˜¾›ˆ¾—®¸?>Õö¿£ÊG¾ŸìÂ?.Lh?=À!¾:³†¾wH(¾P ?9Z»¾´”¾™í¾?¡.?QzÆ?LWP¿’¼¾ƒÆ?6òÅ?S•L¾‰ñ¶¾tDʾàTÀ?ÜÕÂ@Ðx¾¥Ëê¾ßѾAè'?†ø¾‘¡V¾žº’?@S’?QZv¿™´“¾†¡¿ª!@¿§ø¾:ìD¾‚¿–;u¾ ÷á?OÚu¿ ²?*"r?×Ï“¾”\u¾ž–þL‹?Dµ?Z/®¾ÊÙÔ¾˜´L¾J@½¿œŠ~?4¡½ëˆH?Ù?GÔ?7Êý?N#.¿Ÿx¾™õ?GO¬¾g1ƒ?ßn¡¿›§Ò¾À˾_”¾‡„Ò¿Ÿ¦¹?%q£¾•D¾{ )¿Ÿ'-?KPÞ>êÔv>õ^0¾•Ê®?"°?àé®?aBï¾”,þ¾V4¢¾CI¾Æ«à?æ½Õ¾‹¶¾]›´¾æ“”¾¯Ð¿¯Þü?#¾œ›V¾ b¾»KK¾ƒó€? Åľ`ƾ›&B¾8Ø@?6Ðv¾`?4A)?6``¾꿜[ß¾éÐ ?824¾¨†G¾Ëbš¿«9b¾³áÝ?µÒ?.#p¾qÞ«¾–ľäí¨?X=™¿—‚*¿«>²¾Vmè½óf(¿Jv¾;b¾NZ¾²I¾¯+—¾ºI±¾œur¾ŠÅú¾Í×ß¾Dô˜¾f žåÀ¾¦É ?7õÂ?6òp¾Ïs??ïu¿¨:̾~:)?EêY?7ú^?˨?0rÔ?8\¾-’¿¾†âD?..?X¬g>Ý€¾?D]ö¾rœ¾— «¾YZ}¾¤š÷¾(;?V¨ç¾¬Ô¦¿?³&¾”6\?2ˆÀ¾¢Õ¾I0Ó? cT?2â¾~Äõ¾Ž–s¾p¾oö·¾±óÆ?GÞ1¾¹vÁ¾ŠÅ%?+ ¿žP?ZZÕ¾ˆ'n¾>ê"¿¦BR¾*§Ê=Ö›x? …Ó¾‘ "?)‹?;“Z?HÝŠ?7EÀ¿§[?'[1?Dúº?è™`?I‹?^_,¾Àù~¾©ù¾É¾f\+?Ôgy?,I?´¶¾©ÑN¾ˆ >¾q±Ø¾Ü[ž?PÐ?)þÒ¿¤@š¾{d¾OР?6Ãï¾°Ý,¾…Vò¾Šï¾Eæ/?6æ\¾¥²›¿žÅX¾¾¾Ô¾Fh ?Cؘ?ß(t¾ª|­?d¸¾µQj¾Ë ¾„‘î?9 >á÷?AR­¾“|F¾‚yؾƒ¤K?&À¿šx?CЍ¾i¤ù¿ž¾Â¿.n¾…¢¥>ÛÈ4?-q~¾˜s„¾‘þ?@oe?3ÿÈ?Ûæ¥¾N¡z?Ë‹¿³Y?.\_¾ôÿõ?0?6ݰ¿¯·þ¾dcM¾Á̤¾iÊ™¾©_Ú¿‰ÅÓ?>2?L¬#¾] ¾™ ?NwÚ¾8³¾ºg¿òW?<¹ö¾žb‡?'‚[¿¦q;?‰6¿¬4žn;Þ?@u+?$¾©&r? Ÿ'¾?j¾Ö²Þ¾¶?0Ÿ£¾°£?1§¾‹Ö2?2–û¾C¨ª¾»èF?â%…¿«M4½ô¥¢¾µ ’¾KÖÛ¾mq?&E? l¾V8¾m=&?/9Ð?"”¾B~¿ŸA?Mh?D†4¾Ù9b¾˜7m¾¯k.?K.ð¿Ѧ?°ã={ ¾©®~¾t >Ò’¥¿¢Ã¸?ß̾c>¾(O?Mg²?3Ô-?Ï]¿©B»?EI¿§”N?²U¾*Õx?b+?`À½û¿g²?D)ü¾\) ?D±Ö?\Ò¾T'>ÑN?,§þ?=2¿¤À¢¾××^?DÃ?ç‡Ò¿¡Ñµ¾¬ò¾‘g¯¿—×¾SâW¿¦h&¾hì¾ÁN?;Ž~¿¤¢¿˜Ã:?:›"?L>b?Zݱ¿ž,¾¥°a¾ÊbZ¾—GD>œœ ¾\Úܾ±H:?ÎT?ç?*Ñ¿¾¢N?Bê¦?9E’¿ 褾‹’W¾\‰Ì?á‰Z¿™§ˆ?Gü¿ *€?-qM?4Ñ¿ æ:?.ÕÅ¿yêi?@о¦|â¾oð¾ß$ˆ?5ã?HÍ?\‡¿’Ê8?R§_¾ ´?aÅb<ùP¾i’p?á‰Á¾¥ð¿šj’¿”ž§¾?+€Ë??}¾TÄF?6/Ÿ?6ÕU?B{¿®Êb¾t}ò?J8?3¨¡¾Ž@¬¾°Qd?å;?í„?ÎØu¾fÚ:¾onP?Ú!a¾¡¾¯?X Â?/#à¾&&>¾Óa?á{?I޼?E꡾‰$à?C¾`{–??pϾ*(¿™ê ¾1Âv¾rW3?Et(¿ŸZ!¾—fß?p^R?>U+?Fð$¿‘Âg¾Ú"?_ è½¯Êq¿™£ë¾¼/Y¾£2侑VR¾m÷z¾a^?= B½Éj?^,{?Ö?7¨¿$¨’?.G†? às¿­OÕ¿ª¸‹¾~ø¾  Z¿ìÜõ¾‡f~¾„Ù¾Ž¾¾q–…?5P²¾k·c¾]Í࿃™í¾ke¾{ô9?s˜Ö¾Jñd¿§è̾Úç?håW@0@ϾÁµI>ªq˾tj? ®Q¾¾?@«Ä¾ƒ.-?=ZG?QUR?!„(¿¬Ú¾–û?DkZ?a¼¾‡¬Â?&*w¾r8a??ÍÄAGLk?Bx,À"Q¾5n?C)•?L-޾‹p?ö„l?N ¿«ƒ‰¾2`è¾Ï¡H?>R­?5rõ?&ué¾&R¾¾ŠÖ4?5a¾'@?I¤ü¾Ë&?`Æ€¾h0о þ:¿xb¾GB?/Ƹ¿™ ¸?(Öì@VU˜¿:H?3Ý€?=ïz?Ôí­¾Å*_?à-{?Gfy¾u^c¿¢e'¾|O~¾²šh¿‘ßY¾¤¾ìšä¾!ÃN?Ñï´¾»Õ!?P#Ð??ó¿–±>Ó£Ò¾¬ ‡?=ÂÈ¿§­–¿¥I ?@¯Ø¾2½T¿—‹?=T˜¾‹»Ø¾˜ƒ?M‡‚?o@¾³"¿Çú¾•oÎ?ÚÙ^¾CÔ¾¸¡¾ˆ¿ªÙ¾©‹?1ƒÌ¾»Ê“?EG ?ß•¾©×¦?x’h¾U’?s†s½ûw¾„¦°¾a·»@pÛHB…¨A³ü6?B+L??èľ/Ö¾P̾gç?*x?_Òt?&9g?8C¾;þU¾Ìf¾](v¾emL?3V˜¿êý?ç'?4Rö¾Çà ¾Àà‡¾‰EI¾¨7½¾•ؾ__í¾“Ž'?éöÿ¿/Û?nF¾=¹?xи¾ŽÛ?CZÔ¾\‰6¾®h¿¡§¾a¾@¿¡nl?coó¾_±O¾‡IȽöì^¾™ø>¾‚„T?aAâ¾æ0?L_¾I%?]d>?Tᅵó§?/r ¾g#ÿ¾Éü™?>âZ¾zS–¾±1À?BF?6œd?]ɾgé?:önÀU:?9·D½º®¿¦Fp¾%¾ .?-àm¿ÕÓ¶¾ü<¿ Á»>ØÎྔSw¾mB ?>ÚÁ>ƒ ô?!5Ù¾Œ‰¾Ÿ¢?6.×¾Ù ¾Š°‘¾¾Bv?)H>?·×¾‰Oä¾­Ô˜¾Œ«y¿I‘?xj?-¤ò¿”0ž¾“—¦¾ã|?b/‘?8—¦¾J ¿•p.?=Ô‘¾¬'O¾‡῎©ë¿ñ‚¾¤µÚ¿—@¼?`Xý?[õÈ¿£¼3¾„'z¾VÓ¾\{¡¾Z<’¾µ«@ÏíB§E ?W”Œ>½Ë¾Ã2?Üž¿šy¿ž«û?LçZ=“Ùx@ €¿Ÿ¿ƒ?JC>É¡Ú¾…ê¼¾OoÊ?(¦v?5@É?9§–?Glܾ;Ý?/5c?N”ò¾ ´¿=Ⱦ›ÜG¾|—¿çþ¾°ù›?âЯ?äÓ$¿©„¾e_¿¾øl¾ŽÉ@¿¯û€?V>¹¾½MÝ?ãM¾ÏC?¥?”’¾˜éì?U^¯¾^†·¾i¤Y?V˾|µæ¿ ÌL¾:«§¾˜-?O×§?::L¾6`Ä¿¹½¾Å£T¾±,¾(´??dü¿¡~?;Ó“?2Ê?wò«?<Õ?4â¾° Â?WZ¾£_¿¢›Õ¾µ™š¾È=U¿…›¾‰T¾œ/c¾®nœ?6s>·œ¿>4¼;7€?=pX?, S¾<Ú@¾$Ó€?Gæ¯@¸m?Ý‘¹?P­Þ¾\z€?-eȾ‚5þ¿n?TÛÖ¿«(í¾3W&¾‘›Ì¾ ˜î¾nõ*?)4¾¦BQ¿µMê¿ µ¿]H¾‹—;?(w?C&)?AƒÕ?0_Œ>È"„¾Lr`¾±s?$‰°¾›°0?M…à¾>>¿D޾¥±Æ¾l9_½ÜÖõ?2Yh¾KA˜¾´z”¿­ìl¾\ L½÷r'¾Þ5½ò|9¿Æ?Gõ÷?Ìë¾IØ¡?Dà¾òØ? ;¸¿˜Ø?9rξ’´È¾†uz?) ?ÉÊ?3h§¿•a?0ÇоÝNº?࿜Ž^¿yR¾ƒð?½þ ?Ä®—¾6š¾|C?ßEP?³ ?Fm™¾…¨|?Zñº¾‹©¿§¡Á?SŒ(?H¨?=`¾Vо¹þp¾Êç8?;õ—?02^?5`Z¾ÆÌš¾Ö­†¾í¡¾iT«¾{(]?Ú†?[¿“™Á?Ö¤Ó?cz¬?4~y¾£Y‹?Wè¾£ó¾®Z¾‡¢¿•]?£Û?5{? &•¾‹ò¼¾íOd¿š•¿¢E¸?1+¾yR<¾­k¾_)k¾‚Õ¬¿¥Ë ¾À'¾‚ç?B B?0E¾÷ <£Lô¾š`¾oê¾?ég;ã·?9?AF?Ÿ°¿¤•¿—F?®f¾ŠQ?%xü¾IQ£?Ú;¤¾Œ+¾àw€?^võ?2]Ö?B€È¾s³í?RÉì?³°†?8 ¿–¹@¾X7@¾^Ù?Gs¾?cç0½ô?ˆ¿òŸ?Îà(?L¡Ë¾6Î(¿™{Ú¿©Xn¾K¾§Â/>÷~?™G?[Bô¿µ3À?\»!¾‚F?:~¾è”ø¾&®â¿©Å´¾Šœ¾¯Æ?NÄw¿¿¾{tã¾’½‚?VúX¾—6#¾\—j?+N¾€72?:ðr?NMˆ¿¢ro?#iÔ?9³¾áhƾ‡•ã¾4Й?6òƒ?K¼?Ÿ,¾“E½?(j×¾ ù•¾2¬Ô>ªd?5Ëü?^:~¾RÜ?ÙµÀ&¾ÀòW¾›.ܾùB,¾ŒóÒ¾¨X¾_1’¿†??8Ü;=ØI¨¾œ ˾ˆ÷–¾ ó>?GöÌ¿ Xj¾Ah~¾·7g?I*K?­F>õÅ?.ò ?]·ð¾ ?f?Ó0]¿ƒ~?R ä¿–s=¾,Ú?y€p¾ …¿¾»:¾¤O–? ¼¾— ¾¶YÊ¿š’&?&âã¾kõº¾ƒô¢¾RMJ?F0?#Ìý¾© ª¾•”š?φ?Ìè¿«çT¾a ‹¾ƒ¤¿¥D¾Œ(?]ܾQʾ¥T>ÓW¦?=Ù¿]¿&7f¾›“¾F’?Bî¶¿ €ˆ?Ȩ¿žê¾’ ?øü?.¹t?TSZ¿ lZ½ø¼d?.4½?FÍ÷¾¬É°½ç¼?Ð Ž?ƒ’¿µ]Ü¿œÙ; HB¾çª?0äs?Hæb?5È?G–-?Et9À±¾§fê¾3Ãþ?+͉¾ø¾²<6¾yý`¾ˆLP¾ˆÆê?@î?ÎÖ@?]ï¿S ¿ª ?Lkî?A }¾QB“¾® '¾ˆÐ0¾™k^¿×ʾÀåí¾˜C€?&×徿…’??"‹¾lÍ]¾œ¦¾ª¬~?NÆ¿¾––6?BjI?GN ?EÀý¾Ç‹¨½ÂÀz¾[¾Éí¥?E ˜¾‰h¨?Uä¹¾¯Ùa¾¹(ú?<Ô‰>‰þ‘¾Ëo[¿˜Ö©?>œ”?«?Iï…?CZG¿¢¸·¾Pº‘¾ÄûÞ¿­v0?Ò$ü?)Œ„ö?j¾Mꀿ©sÈ?YSH?/ †?H(¿š§à¾4¼¾ˆ^«?,3~¾Ò¾œ`¯?&˜>>³·­?v§?\K޾“C·¾{&O?JW–¿r¨?Y¿¤—?%—W¾“C`?á!¿žNš¾pR¾‘ô¾¦J?3¦í¿›c?Gð:?Bêâ¾+Z?8 K?PðW¾¾ô¶¾"Ii?/ÅÄ?Kg@.[T¾Ž5>¾ŽL´ÀjÞ¾wÞ¢¿ˆõ8?XÉ×?r›¾Œ@¬?F0>_N¿•©?UR~¿¯—e¾+“±?7!¿¼¦?5=…¾{‚;¾·†¿Œ_9¾ÆÂ?A« ?BÓ¾;&Ž?Ü:¾b'†?A¦\¾,‹0¾Š×侎üž½ÝrÀ¾"¬„¾N7¾È}z¿—¥¡¿˜‡*¿˜0Z??Ça¾.Ñá?HŠH¾ÍmÇ?-‹¡¾Ž3¾Þ¾? „¾ÆêH¾¢h“¾wä¾—²*¾— A¾µâÓ¿ŠÛæ¾¶𾂕0?E­0?åó¾U¹?K³ô¾“×j>­t¾½ì&>ºô^¿ 2¨?M×r?*Nؾ„žï¿ „»¾Ÿ7{¾ñø?:Eú¾‘î ¾¼bµ¾ðüľәu¾‰÷§¾HE¬?6‰1?æyÄ¿¬ýƒ?,Ðn¿–Áï>}¡P¾ÓíN¿¤aP?2r¾ÞK ?@d¾q~¾À?%Ñ´¾f¯?g`¾¾£.?˜Ü†>Áñ>¾…yb?ÇA¶?Î_&?9ö?â¨?H§ú¾~Á¢¾{¹ ¾nœ¾b´Š?.§¸¾•Ì×¾}Ô’¾ë ?1X¦?+D2¾¢ˆŒ¿¬Ì*¿«od¾mö¤¾‘æ¾ùg¾µ9æ¾u{h¾K¾Ê?;"ϾfTï?5,>¾ˆûI?TA®¾uW½¶Sô½Åb2¿cåh?OV?Ô¢…¾GÜ´¾.ÐC?á]k??Êk>žÝ\¾F¬f¾§Ÿ¾ŠÀ&?E»e¾õƒn¾§NÖ¾“8?x,¾>êæ¾½ù¬?:X¾¾¿ðS¿çª?Mì›?3M„¾šÂî?E×x?.˜,¾AS¾Ô•š?7=%?Fhh¿•%¾ O(?&ã(¾V¼µ¿­‰¾Ós'¿©&?8Ï"¾btn?"Ï·¾‡'J?-b>•àÒ?>eO¾¢ñ–¾âI¿«=µ?7‡?D¬¾gá¾Ä!¾ÄÌv¾W¢K¾ƒïS>÷‡'?MÁ޾^å¾ ä„?/>ñ?Jcþ¾nr>D@ì?3_N?)¾Hê ?Üt¬¾ HÕ¾›=ú?7³ ?6šv¿•M·?XâW¾¡3B¾bä5?[Ð=?PŸk¾m‘P¿·?1D§¾H½¾†t¾vÀˆ¾šš%¾‡P¦¿ª¥¾à׾̘“¿“âÊÀL‡?2 “¾†_±¾1c¾P¼ ? s?yÈ?éx&?ÞÖP¿€Å<¾±þ?!£?Xß?JãÔ¿¦!Ò?û¾‚"0¾x¤Ú?-cL?Trƒ¿ö?2Z9¿˜4{?Dßl¾ž–?/ß? â¾g@µ¾c2Š¿”å>?*ê?/|h¾³R?(M?È –¾f?A¡-¾ª¹j=÷ ¬¾†*«¿¶_•?;P”?M›.?G<8¿–‘o?£è¾§—M¾[‰Æ?Tت?O»?ܾ²?1z¼?5ËŠ?2¢Ž?¹¨¾N¾Ö9‰¾"¢?F_*¿œ5?ÂÇÕ?+2/¾‘Mz¾Â}v¿·—’?ÝXu?Sù¾³Èš?I28?Gp¾šH¾K=нý!>?/x€¿Ÿ©ó¾1^?'b̾ÿC•?B£¿­=9¾Ú¶þ¾`x,¾†‡†¾¦Øý¿¤Áh?5޾ÎÓ¾?A1¾€É ?9ÞᅵØ{?3ž?%-«>³¾—e9?IT¾vÅÔ¾Ø&~?äOî?JÃÄ?A ¾™m„¿£B¾¯c>¿–†?=¾Þ¾j÷S¾¯æ~?5n3¾£öò¿’Á@¾˜3³¾‰:ø¾´-F¾º"§¾z™Š?]$¶¾Vuh?O­ë¿¦¤Û¾S¯0?:ÅÒ?E”¾¸S?"ëe¾‰;­?wÖ¾œqþoK¾™k辤³?Ce?(0õ>çÅ%>ÃÁÌ?7ct¾e·Ð¿s½æ›ø¿©«?^Àn?Çåj?¯o¾ZAô?Eåõ?SÖR¿–<§?ñÂ\?Tyø¾0Ñí¾;ä¾Q0“?këÁ¾¥âX¾o)3?G¦A¾^2?1ç¿ <µ¾”ór¾¿ly¾\ÌÆ¾«í¾’C‡?ó¬¾[%ž¤b@¾·0;PLð?Eú¯?;^Ñ?jo?M!;‡¹X?J V¿¹¾œýˆ¿¤-V¾‡Jt?:¯?9íÒ>ôõN>‹äâ?R…¹¾S«Ý¾¯Ö#>¶Ó|¾~ð?>+3¾Q4¥¾¿õz¾ °¢¾Œã¼¾Ÿ’´¾žÜ¾R¾v…Ç?.w0¿¢hÌ?Kœ??à‚¾n:?¾eqŒ¾vL¾¦|?9;‘?9.¹¾ë~?u¿(z¾c:µ¾PM6?N1ž&?\?AçÍ?#Nc¾…‘D<‚º?(Kx¾†Q·¾Vܾºî¾Ÿaо­'¤?>Á²¾Sfã?ÍGd¿¦þH?A½¾]‹{¾¨v,¿·lǾƒ¢ý¾´´¾ÀwF¾¤ 9À D?T¸“?[d-¾¼Ø“¾?÷$?#OŽ?Ür?ã i?-ÿ–¿5lV¿³a¿¢a\¾|²?0"?’0Ï?NN|¾QÝR?'®2?Æ?ÓÁÚ¾ 7u?5$?"Í?$ªù?D‹¾Q¿³±å?%޾7Ý?:‹Š¾d™x¿"꿞½´¾™¢Z?iwо‹ìT¿•¬­?;R7¿™º+?ÕoM¾’ûŒ¾·†x¾–]?3íª¿ÈV?J±Š¾†jõ?<| ?>6¾±¨Ì?q?,Ž?e”ž?&¤?*³W¿§’²?"¾â?+ø¾©ÎI¿¤Ø¿—¾¢Ž‰¾¶©*¾œ¹J¾^&¾“‰ì?°´¾’¡°¾iç$?Å}p?Ór¾‘u¾=Ò¿Ëíb¾Ëè+¾%+?zп‘k?:%€¾Á‰?;UR?"¿Ö¾R|¾wíi¾2àfÀ1T?Ì$P?ÎJŒ¾¡£ü¾œ¾bÜM?9Á?7½,?7¶?XÇÖ?ß n?_†¿¶F½&k0¿˜±÷?oÕ?\äV¾h±ž¾Ãñr¾8/?㫾çGϾŠëd¾IA”?U:—?hãá¾B6¾ëq? žñ¾Cº!?Rž1?nuÂ?TžÄ?%¿÷¾4¶8¿™-¿?åÊ[½ÊŒ¥¾Óðоxþb¾—cy?(É.?¿¬¾jƒÆ¾ :¾®Q¼?ÍV?QÙ?®¾ˆ¼6¾õ*꾿…|?CZ¾ ¯ü?Af½?J©B¾S?sF??ʾ¾•B? ¾Ù?J-ü¾Ü¢¾‰æk?7ܾgj¾Òl?g“‹?/¹&?<:Ú¾VÌ?Å¡?D?Ⱦ™€€¾º??½c?R¢¾–2?1¦‘¾М¾T·˜½ªX¾€,¾¾*›?gÞ§?0ö„?=)*¾öb<¾?&>¿™‚´?3ß ¾Vªe¾Z?Eð>¾”UÚ¾ ©2¾“Ü*¾‚!B¾Ä*¾›¥±?Ó@¾÷žB?IÙ=øÀ?›ÿ¾lä?•?WXv?_µ‘¿–m÷¾]€?JŸ—¾sÉ?+Ô?ArÁ¾a~о\’Ü? ˆ¾›|¦¾l^T¾Íä¾sôª?Mb¾˜J¾"!¿ég¾¨Ð?Tõz?B¸³¾wʨ?E •¾Š¤ü¾¯øl?ßpÞ¿š ¡¾6Ñ£?ØÏl?&ÔI?5Èó?5ÁL?Pgå¿£&l?Oø0¾—^?æIf?ÙÀ¯»?*Öü¾“]ó¾œý¢¾Íš€?(†?è2î¾Ì¹€¾waî?KÝ:?U >¾dûÔ?0:¾‚-4?-v¿¡?3€[?Ýq?tn?§?8'&¾Âl¾ìüû¾nì“?SÚG¾käû¾{ìx¾Pÿþ¤4?9ã¾à%¾’¾Tw"¾™H0¾mÚQ?>õj?;˜ð¾d7¾•”®?OQ¾r|(¾„]U¿œ–?á,¾›Î˜?!{¯¾Ž¹½Þg¾y÷w>™o¾g7¾Ø‰X?EiB¾Ëµ ¾oð€¾º·†?Z¬¿¬_K¾š—3?B¨Q¾ÖÛÁ¿“K«¾±»a?C(οk¿œÊš¾Ô‡E?HMÑ¿‘`§?ÜJ?ÚA)?5û¾;q€¾³†H?=÷¯¾ËäI¿ wŒ¿¶È?^Š?GsH¾‹ÒξÖv½ÿ'¾¥= ¾ŠBú>¸÷I¾„B¦?Šyg¾ãð¾˜tw¾“ÞF?%`à¾ÐV?ÏLH¾rä÷?>¤?R÷¾^ß?Ù¼¿Ÿ<¾Çñ¿ ê¾z”»?*Ì ¾ÏšÀ¾˜xT?D“?CÊc¾"Å?.ÿ¨¾Mú¨?·Ú¾†ÅÌ?<0¾ª¬¿vZ?Hîé¿ ñ¾Bn־ͮ<¾ºt㿘&þ¾7X\¿¼ÜÈ?=?è?èξõ`y¿ÃÊþð|(¾ÔfÛ¾s±f?i(é¾wξˆý€?7‚°?*OŽ?(G¶?Ï䮿ð¿“Îü¾«08?áe>ÏòE?*ˆú¾„ ¾@áö?’]l?ñ¾sZоsͳ?C7?C:S?@Ó_?>>?H.꾕6࿪Ì>˜‰„¾z¯ä?1º¿²ÓS¾?½6?>žæ¾ƒ€Y?!â?.ÍZ?ÛïL?5ô?À¾Â‰x¾®i¿¡ì•¾\µø?" ¾¢t´¾üáH¾ âj¾‡†6¾…L¾œ* ?5 »?,Ûܾœv¾µV@ò*BëÃ?3²f??‹ ¾¹¨ ¾£›1¾¬Ú¿ªNó?DÔZ?%»Y¿–ÿu?À5+?G©?d¾È b?M¸Í¾µgÉ¿*OŠ¿¦5¾bñ?à*$¾Óõr¾ˆ%ˆ¿»Ͼ®¦¾Ì­ž?n¢3¾[̦?1_#?D#Ò?Jœ¾«wz½¢Gs?QHN?-®Ã¾çš?Ncľ½^®¾{ÿ?,õÔ¾:lF¾yÎ?.?r¾…—ʾO2‚¾î/¾­î?Þ;‘—*¿³7?Øþ°æ°ÀÄ2?Èö„?:wÞ¾µ&"¿™L¾Á\h>å[ä? ܤ¾:½¿•€Y?áš?0$¾œÄ2¾Àl9¿|v¾E?*?¾4˜>@Ÿð?lhà?E×|¾Wsf?.r?ÜvX?6r?¾` ¾‚;¿€t?Ê$•?Žq¾„ø?ó³? qD¾ƒË˜¾Ä|¾~@ã?kS?$m¾è#ï¾’ž¾¹Ú?=ܹ?PMJ¿¦Ïð¾B…7¾Ž‰X?KŸ¿§áÄ?,œÜ¿Ù?:éù?@ôœ<Ó„P¿=øô¾¹ÝÔ?;Yq?B课‘W.¾›Ù4À ×¾Èöt¿ ­?Dù?ʾ6¿G¾x†³¾wg¾©hžÎË ¾Oh¾zE7¾EX?;Yg¾-«O?2Ü¿œ<ý?'?F_å?A²Ý?%Jª¾Œ L¿™ÿÅ?®Ê?7l?ð>¾‚¾ô¿¤m!¾ùÒè?Ï Ì¿|¾ÑÙœ>¾™nõ¾Xy÷¾”äx?4*Å?#0ô?4Ü?)Ôf?Z¶‰¾‹Lt?ã @³ò¾±6?”ɾ…Òl¾¸¾‹ê~?z¿–Wž?* ý¾kl¾¶Qœ¾Ù»ó¿¢ÿ¾§œ”¾Ïâ?àfC¿¥”À¾•‘;Á_p?ߦ¯qW?*nZ¾n³Ç¿™ªD?- `¾A'—?8êø>Ÿó?BôΈƒ?_Š”?åP~?DV‰¾ªNo¾Ë€ð¾ãÍ?:ÖÊ?<£=W±°?iéD?+l¾]É?QÊ뾈—?WH¬¿”‹¶¾¿?]d§¾u@r¾e4?AiÈ?e±?:,¿“Ó0¾@_°¾àÒ?z¬¾…rà?'úU½à ¿ŸkÀ¾}ò*¾ÔaH?åÉd?*Ù=ÙÀ?S´ª¾`*Ë?;ë?^ú?@S>· ´?3ÑÖ¾ƒž€¾&Èó>éZ¾§í•¿¨ò?G.¾$¹¾D–n¾¯¾„ëð¾ÂH >Ø7g?Ùëþ¾€% ¿ŸÔ?/Å8?ìé<¾‚ô=?H2¾¥2¾˜/(?0øß?:üK?1Æ»¾«ð ?GyQ¾4($?%ŽL¿’>À?f¶¾§Vy?"íê?Rèl?+ZD?U…¾»bW¾“x¨?.K¾LÆF?KÁo¾3èV?/e_¾ ƒ?30¾|z„¾„ž‡óç¾­Æ?NÎ?FU?2…&¾Äm’?L¶ô?>1?+Ú1¿§+t¾·Òô?$ß">®é½¾LÏW?'¿t¾‹{ž?1Fß¾ss?¾r?Ù†¹?CÃJ¾ÁGÛ?3tž˩k¾›Rò?ZꜾˆÆL¾{¬Vü?,`\¿¤H°?2çžktX¾i)x?W¾¦ˆ­¾›”\¾‘>àVV?Í͹¾ˆæ¿§=?7ô¿›Èf¾$¾•“? ìö¾¥ô¾-¥?R@?¯L?E`k? §-¾Å„¾š®6>®4Ò?<Ä>?"£º¾r±é?-HÙ¿g¾´ty¿®rè?;n¾¸Ø½¾®R?Fk¾¡5¿¤¡š?\Ц¾œ ¾Ó=6?:þ? ¼ëþaj¿Ö{?2õ½øj?Ù)ö? z…¾«šb?B%4¾Œ-+¾°/’¾­MH¾CÞ€¾˜Q”¾ˆÅ7?`4š¾ óÆ?7j?õwÕ?0Ôj?5u0¾…€¿Ÿ~½ÃhÚ?CÑî¿¡æ‡?@öÌ?HÁ“¾…¢M¿¬ðy¾Mܾzñ¡?e ¾2mÏ?M–¿¿®?l#?K,ï?l›á¿ å?éÛ"?+¿‰?^m%?<ཾ;6¾SµÒ?=삾mÆ–¾Ãn¸>ŽVê¿wA¿£`.¾¡9?æuä¾9 †¾”¾!’Ú?93¾xÛܾ·L”¾{¾¹›4¾—fö¾}zž¾ ¾ }Z¾ ‡L¾›à6½¥„3¾ˆ d¾ˆ!b?R~C¾§Ç¾zŠD¾o¹ð¿£øî?@·'?+£³¾Š6è¾l?d–Ò¾‰®¾–uÓ?/b>¾eq¿‘?{¾_ek?$ÓŸ?UÙF¾•øä¿œ&?*P¶?RÄœ¾\:¢¾‚о’ü?=ÊD¿Íz¾0€ŽÀ^¿¤íË?ê°.¾rF?Í‹û?Ña]¿£žä¿¤L]¾hH@?ÖÖ•¾˜çn?9é½?=!?ãÒ ?! Ò¿‹õ¢¿¥ÿξ樿–75¾„%N¾sê¾2‹ ¾}S?ÉÅí¿­‚?A­z?[ ܾ=b?BB•?H6?-¡r¾‹†d?A@¾–;¾±®¾`Ôã?˾?5 ¾Ñ,¾iøO¾„\¾£ñ­¾ˆ{?¡n?3ÒW¾¼¤?:1~¾ãoÛ?]F¾ºâJ¾nR?M¬Ð?4¾^ã¾?H—7¾©¾ÐŠì¾mx~?RUŠ?ÛZ?H<¾2ѧ?—¾„ ª¾ŒD?@ Y¾Œn?~?¯?Ù?`œZ?[ôl?Ìâk?ÅÀ¾¿¤d¾ƒÞ’?!:?É÷¾¡–¨¾Ïʾ B¿¢Ää?2ã%¾üZ?Ý2À? c?$Ó\¾$î\?ؾq‾¹(¾Ü.?Ô<]¾NôŠ?1næ¿¥¢ñ¾–>±?/Š:¿žfk¾³$¨?¨IH?4F¾ý³t¾þ¬Ü¿›d˜¾P¾:aÓ¿—†à?ÄÂí¾-®¾ƒMe¾’K”¾Ã—h?,±ê?l:2½yßì?]ªq¾IÍ0¾m,>¾:'¿¾i­ ½èÄ£¿”Pt?#=Ä?âÂ?sB@¾¹‰‰¿©4÷½Ûªë¾–ùc>Ø]Û¾»Eo?OªB?4À¾µ¤*¾†·Ô¾‚ë¯?Æ‹¿°m ¾T¤.¾X6ò¿úÒ¾sGö¾Ì¾v᱿’z㾪â¾Òbr?)±¿¥*J¾À*§?åÒ“?8cb¾ƒhä?@D·?K=n¾˜µ ¿›3@¾¡äû¾Ùï? ö޾oC¾Ðn&¾láQ¾Œ¿J¾éïÕ¿Ÿé8¾¶cü@Ô°?/M?9Ðã?]äȾSÕÒ¾{~¾o›¶¾|¶Æ?:ÿ)?%y?=lk?ÎF‘¾’çÀ¾-Æ??5Ù½†`Ö??Y¥?"†ã?2·¾6. ?ãY«¾‡³¾hƒH¾é7]¿¦Ô¾2M¾Wj½¾@ü¾0¤¾9¤ ¿F†ü¾‚µ¶?7éÿ¾¦BJ?×L¿¬Ÿò¾D÷Ò¾!ì­?R(Þ?ÙOÝ¿¶åп¢ľ~bʾ³/ö¾«.b?[!Ä?Ó_6?#&U?4šÄ¾¤Fʾl@k?Iö0¾¶‰p?=9¾·#½?A†œ½ ¥ß¾¦¤ ¾38ñ? <¾Ì–‘?HÁ¾&Iþ‚Å?Eá`¾³ôT¾¡›?J‘¾|ô¿£ÚŒ?`&?\2s?NR?#}ù¾h4¹¾uJ¿’ip?F.x¾ªÁd¾ÄºB?QÙ”¾‰Õ?gÚ¹¾†5X¾a³?3£Z?f°?:×´¾#A辺ÏÕ?¿&0?=sè?\ú?`Ÿõ@%Á±¿¡ó”¾\ÝúAZÞšBf…ö¾r@¾˜-µ?äñ¨¿ÁN¾8´ö¾% ¾¾¹ç‰¾‰Ò|?>·Æ?]D%¿‘ÃÆ¿=?KÎù¿¡È·?BS¾Å'L¾’©Y¿¼!ݾñ¾?˜.ç¾gQž¾}¡½žÜ?-𾾄~2¿GL?& ´?@"¾7Í®¾ˆ×D?=rá¾i×U¾›sã¾Þeî?)|­¾j– ?.×\Àu¾Œ%l¾×¾“ß…?.ÂÍ?ò?)~??á?ÒŒ?FCˆ?;(d¾}þ¦¾ ]¾§5L?%@Â?@Ö¾…ý?&T?:;:¾Ök®?<ÆŽ?³P¾Œ)@=ÌB°¾¥ð@?={?Qg!¾•d¾–Í)?c2H¾(Ñ¿*DÌ?i×™?Y"0¾?Þ?#ÿ?NPó¿¯:q¾›­>þÖ$¾ÑŒ¾é)˜¾Ã&´¾¨[ø?]Ï•¾FýÈ?4OŸ¾É¾§d†? Z5?9÷?7q2?UB~¿¦Ð6?P#O?>tÇ?5H?9€?Z·?+q¿“lø¾ Ö?Ú,?á=?;ðÄ?Ÿ ??#3?±:¾œªÒ?/M0¾@i/¾ªêÐ?&%I¾µ8¿¤ö%>óèâ?R/ó?7'?=Tp¿¶n›?$¾ŠpÆ¿±Û6¾§kò?ZWS@-a?6 ¾?2܉¾]ˈ>Τ¾Œ6¾¸ø¾N…ú?C•‚¾Ü©‘¾á ¾L°¾ƒo߾Ɨñ¾j?>1?Tb¨?WF™?&͉?GÏj¾ â¾_¾žž\¾æR¾¡?$eI¾<¾:»?<‘M?T°?0G‰?ð1 ?2"‚?7s•¿š`I?\’@¾Çh?PN2?Ê–b?$Z?” ?VÍT¾$B¾—Œò¾+âH½+q€?3£ò¿›ªž?»^¾®³J¾`•«¾‰j?Á¿?×n7?Cì~¾#Vï¿´¹ ¾…’~?Íìܾ )?"Iº?4å8¾˜ó“¾ƒí’¾8EW¾‹=f¾€Û¾h«)?Ï:¿y†¾“sp¾ ÆM?@¿Ÿ~¾Š?^ÒB…'šC¨ê?Nze¾K„¾?@ëž?6ßL?HëS¾¢Nc?hξQ†{¿–Pÿ?MJµ?4îó¿¯5?Fxó¿†Å<¿ ˜È?+V?>)¾Ž]þ¾¢Y½‘u¾©âJ¾Ÿv~¾Úܾ©²¦?1í¿{¬ð?)ëD¾ÁœÖ¿¡î?Ýaz?0œä¾]ƒ=¿È`?Öæ¾›˜º¾Ïп—=?Iº¸?%¾Qýû?Ù¶»¾…~Š?`”ˆ¾¢!å?2£¿Äûվĕœ?55F?Øo}¾žÜô¾Œ ö?Cý×?ÓLm?Uö?(ë–?Ú8¹¾z!;?;%¾ 'D¾¹,€¾–Y¾ˆ6´¾¢ºÆ¿­æ?2§¾‰L¾¡´?䛀¾vb>ÉJ+?&šŒ¾•¸Î¾Î̾ÐR¾—zK¾Ç %?.*!¾¸Ø‰—?=ý¯??´|¿›70?ã¾› ¿Žî?®Û¾_]¾&Ÿ¾po„?Ռˆ:¾àÚ¦¾ó@¾ÉÔ‹?ÔOi>;¾>龑Œ#¾²ID?"öA'£ÌA޾D³¾zÀ(?3æJ¾c%’¾jLT¿¦lë¾Ün?#µ¾e°Þ¿››N?DR5?8¯â¾—öº¾hµ¾‡ b?D*÷¾<$?‘?HÇ.¿¡t¿¡?XÅ0¾• ¶??Äb¾Ÿ’?¥¢¾/‰¸¾†O?J‹ª¾8¬?<@;¾ ˜(¿žwe¾º—>¾Œ&ˆ?1b>ÀX?ÊË\?n”¯¿£¤?*ȶ¾“©¾‘²a@µó @"ÓL¾Ó[ø?éo"¿œ#c?@Ž„¾vò¾<1?9>Á¿™3ú¾ˆ7ö¾ƒ'?¬Ø?DÚྦྷøc¿—c”¾Þ»Û?K/õ?(%»?6ʾ4¿ž¾’¨¾TÐ?2nx¿–DÙ½ÿTØ?F»¯?[bd¿ŸÎ¼G¼H¾±ßK?I×½—ûò¾9ž?=Jº¿®Ö:?ÍI“¾ÀzT?A¬(¾8 ¾;Óï¿©åÚ?”ì?.²M¾£ór?äo?ReM¾–¤?@Þ̾¨K”¾z@æ?7Þ,¿“ B¿3î¿?1G?Ó¡þ¾‹³?-nª?ʇ ¾cm°¾³Ì¾¿˜œÐ?G@/¾¼\ä?å$â?1D¾[y¾¶, ¾Uà)?Bý†?/’¾˜í¾•7$?:м¾‰ý8?5pÒ?ÝÞ¾ºÐ|¿¶í?Mu@?/u@¾”,.¾Jð?ZÆï¿ˆ'?•¾¾ ;V?Ò ¾¦ß¸?ê´Ô? ¾> V¾¥²f¾5 ¾ÈQˆ¾råN¾±åu¾Vöc>ùç¾}t½¾¹—§?`ùj¾¢U*¿ªÖé?3=Í?0V?#ål?._>èár¾¡²Ò? }ã?PX?KH‰?ÊŽþ¾³w^?0Ú"¾©’´¾|ÑG?ÅоÔÚ¾Üö–½óÀ3¾Z°¿?ÕÃ@µŠS@,/D¿¡xž¿©ð+¾-g?AbÝ?Ö8í¾…¨? ð’?Bi–?&ÂÚ¾v-¿°c¾Dat¾©Ê?Weɾ09ê¾½C¾È=È?M‘£?+¾z£“?_õ¹?1¥ß¾»W.¾ÅÿF½±. ¾$¾„>Õ¾t’œ¾~ñq¿‘x ?B±¾”hu¾}>à ?%ÑH¿«9b?(}²?IUf½–‘¿­K¾ÎLü?e¿¡*ø?\=V¾xÁ¾¬Í:?P`¾¯­Þ¾¢«¾6J:¾€<?'Ý?% ?Yô!¾Üš¾º](¾°é?Êë?ŽFt¾ò¯0¾O ¾¡†!?:i0?©¾¾q²à¾x[.¾¿tH?(¯¾“÷<¾n¡á?%m?;4很ßè?M€œ¾¦ªw¿5oE?4¹a?)ï«¿“\޾´ ?1ꋾŠܾ[C¿¾‘•?9X2¾˜Ü›?3@¾hh†?4ä{=ø‰Ð?/( ?4ÊÉ?6ç¾V º¾Cà†¾Ófп¬e ¾Ë_"¾.\ù?Ò²Í>ס­?8ùR?Èľœ¤‚?¾Å:¾Rf?M¡¡?;Eõ¾É˜&?PC¾Üˆˆ¾p»Ý?Rjk¿£Ï˜?:(¾®xæ?Aõ€¾“'º¿›ÍW?8û×?>¿§9«¾ï[¨?Ù?ô¾•Öñ¾Fƒ’?-¶`½ñƒ ?-ëv?'‚¾ä;ì¾¥T¾ËËD¿œzÖ?íñ6¾Š²ª¾eM]?*Ú¨¾œÆä¾}¡?7ƒJ?Cùý¿?Þ?*v£@NG¤¾WUN¾»ˆ@- €¾”Ëú¾Bh¼¿–&|?-Éw?"ë?7¾|bý¾ìˆü¾.Q¿­:×¾d8ˆ?Þ:t?4Z®?HÛ >ddP¿¨Í!>×~¾•”¥¾ö¸^¾)™¾Ÿd¸¾Ì+п²M¾¥ÿ¨¾q^è¾æ×?1O¾uÎt?EîÔ½ÒÎs¿¥+?,.N?Õ?²âr¾¥ÞÙ¾voc¾78W¾´˜¾Lп¢e|?Hª¾¯ë}¿—J•¾Æwï¾¾ÐÒ¾Ž³+¾‘v¾3}”?ôì¿©†ì¾‡Qé?îÅ´¾‘_оAp¾[‡Š¾>ò¯¾ƒ¾@# ¿’Hz¾—6¿ݾ`¸¿ $§¿‚wÆÀT쿎õP?¿¾q°Ñ?6ˆ}¾-êö>çÇ8¾Œü¿­Aº¾+Aо%C¾?ãšÎ¾»t»¾iep?ãRj?7ªê?á>q¾MHþ?@àZ?;x¾–‡?/T[?ÍÅÆ¾N‘‹?R›¾˜H˜?C~y?JzǾ€â¿™&t@‘¹×A(t‘?. ?W¹§¾€3¾ ‰4¾£Šð?Uï?ÙŒ?6I°¿Ÿxm?HL3¾z¾®Áh?A[¦¾aÂt¿£šm¾3äy¾F’œ?L¡õ¾Øª?%¨?&ÂÚ¾=¥Ÿ¾DÊš?h¾»é?Ri4¾œØ?6Ìj¾À–ľ7ÕG¾§úð¿¡.i¾Y¾„«j¾„ßä¾j#ø?Cò?6¨æ¾·¸:¾ÇZ7?DÙ?ËYU?€Ð?à„4¾ 8V?iBL¾¢–'?¨È?J8¿®&¿¾M×Ù¾PÌ?DP¾†U{?Aúª¾±±4¾mkÖ¾ª™Ó¾Søã¾”7ニZÞ?,™º¾…_ÿN“b¾ˆSR?×ýľÙ;³¾E¶¾H¬2¾¶Yk¾^X¾«HľTÞö?;î½çC¾ƒ/¾ô=ݾ‘b†?74¿«'¾¤ƒ¾Y©Å¾f¦¾;á²?6+ ¾Â‚È?9 ¿•$ý¿ ì?:j5?Aà?(q¸¾ÖÙ¶¾È²–?GÞ?*& ?2;â¿™‰?7°>?Nù^?7ò¾/ß¾ŽÈÌ@hÓ?Ó˜?Fä¾ÔdÂ? $V?F#«¾¨š?ÛÜŠ?9K?0•̾.Áë¾í1l@`á¾¢¾–Û™¾õl@¾›âv?ׄ2¾ù‘(¾©É¸¾±tÛ¾R#¾È«¾³Ï ?©t2?0Ô?Fº¿>É¿7¾¸3R?F"ô?R;…?I½.¾›zþ¾·ŸÛ>œ1§¾¿æ˜¾N¾,Oª?L¬ ?>Çä?P…?({¤¾<Ÿt¾z?LÒ+??}¾•/쾿‚½?f?Q}û¾Q)f=Ÿ– >/ãP¾µ[€¾‹ |?-~¾ƒÀ'¿¸¾—?M>½Ø=f¾k线­b¹¾Qü¾Vr¸?EÐÿ¾«H?I@ɾÏÒ¾YY@¾•”°<Ä~,?é¾??çܾf²-?\~ã¾5¤H?Pó™¾@YÒ¾¤M‰?_i¢¾¬æZ¾wt¿©ò`¾»žh¾rŠ:?<è ¿ z)?d}¾Ð>ʾ¯UJ¾Žóf¾ƒQ㾚ï.¾Žü|¾»€>AüÓgAZ5ã¾Ãä.?F0]¾Ìdþ¾‹•¾Xª¿\ ~?+Ê?3h?º„*¾8ˆ?=w¾IW:¾u±}?9iD?=4?Ôc^¾oß;©Ï]?·%‹?2@¾·š ¾Ûú@¿jã>À³±?ZYa¾’÷Å?K—‘¾;Ïù? r²¾­Õ¾¾¯`³¿¬%¿¢û¤¾yeç?@Do¾«Þ½?…Î?4L§?:eX?1û¾´\L?T#Œ?@4-?:P;V”?⯿™©x¾KÎÆ¾³CÓ? “ý¾p¿Á?KÚ¾7 ?I•<¿­€d?0k¾«'†¾»¢“¾œ/¿­U¿›Q? 5¬¾\ξ°D»¾ž¿¹¿’ß¾fªÚ?åêÿ¾¸p?QÄ˾:Úû? ÒA½ìKC¾—à¾_(Ê¿ªÅd¾]An¾ˆ>¾—È6?Pö?1‚¿¤™3¾‚4¿“‰¿ˆÉ?PoK¾£ê?-%Ü¿›¸Ö¾…“À?%Ã@?8J<¾bj?Gáé?/ÛV??pU?ÈF¾¦?<¾Æ4á?¯â?%ïÇ?7Ho¾ë\tAº?Ä<è¾Ó‰´¾Ì3²¾·v™¿©#"?3TQ?ÅþÓ?ÛÏ?Õ’“?9( ? ¾S÷Ù?,¦?GŽ[¾¼—ø¾±µd¾œ¼ø½ßп’&M¾…½W¾ïõ«¾Ÿ´ý¿£j?W¸?#KE?L¶±?S©¾oß??,è?.7b¾‘÷¿¾!Т¾¼‚Ò¾Nl°?0ó¡?:„¿¸½,?> M¿§œ¿›Ÿh¾‡–?MR¿ 侜¹ ¾‰È?-†é¾R:Ò?>¢;?.æ¾”?Ú¿Š,þ?I­ ¾x p¾_ÚÖ?4ü¥¾E\¿\³P?Oƒ¾~–„?ïg¾Dš?-õ÷?,Pm?m§&½×¯ ?õD¾ªÚ#?3a?N[¾©•6¾fľK¾Ù@¾fê¾^9A>±$¿ŸøN? q¼¾)L¾Åõ.?1À¥¾²´\?.—®?3®Á¾¹E3¾Ÿá?0’—¾‘D>?MÖ4?:¾Áwˆ¿m$?c¡¿ `"¾¬Ï?Uñx¾’‚?F€ž?áðN? tJ¾Æ®d?åRr?/€œ¾Ã¨¿ Æ?6ÞJ¾Ê?ܾl¿¥‰&?6ÓÝ@&”Û?Q?¿ '~?EfÊ?F#F¾;ž¾”Ÿr?ÖU¾@h+¾†££?Q ?I1D?8{`?§O?1T*¾ŸÂ¾ž¾¾¯P,?ÒÍ?XNN¾‚öŸ¾vžp¾oDŠ?2Ö.¾pæ”?_Ù€¾˜äÆ?9ýG?6Ê€¿£´ÿ?)šB?'äQ¾¿uÔ¾Lº?"vc¾³꾯½ ¿¯ƒÔ?ãg¼¾“Q"?ˆ7º¾Õ ?P?0âf?Ó ¿3p?Ðh¿¦¡ ¾à•H?H"Â?(?!¾ÐB¾’7¢¾‹wT?Ï‘!Ajwª?;ï¾q" ?$jÒ¿9¾?Dqt¾Ñ€ˆ?/%Þ?4w¸¾µ.¾°¹:¾¦8ñ?â`¾[¾?>?ÎwI?*¬¾t½c¾¯rÿ?$ù§¾.÷9?CÏ/¾1‡?ga?NÊ¾Ê ¾Cˆ¦¾ý ”?6)?>[&¾œpľ¬_޾°šü¾QØ–¼Ö¢`?Aæ½Í²æ¾¶©´½ x`¾˜¤P?^¶Å?âLr?ذŒ¾´v ?Ïêù?,û ¿¢ž4¾·WÁ?HU¿–O?3&ξoÛR¾¢x´¾‰'W¾áÿ¾šÛ?:Æþ¾ŽŽ ?;Íÿ¾v ¿°;¾¶??´Zi¾¡Ø[?8L|¼ßq¾‹Å?ØÄS¿ò;?3°l?à#?%É,¾«ðп¥5e?B`?¬J&½è!(?<'M?Oã%?S‘K¾£‹‡?E ¾³¼v¾lðM¿Œî5¾¹¹?ض¾<+¾R¾Œnæ¾T“R?BŽŠ?ÕÁ¡?)€€¿¬Ãš¿´ ¿¨mâ¾Ö2’?HØD¾0qœ?,ƾY—¿˜X“?@cÚ¾°#à?/é¾¾H¾U@†?.Ѿ©ô?Dl¾µE¾£ؾ¯H;$vñ¾:à°?*Bß?£îǾ–˜Æ¾î*d?!˾?2ž§?§?OÀ ?rÙ“>ú±l?+3:¿—Á?-?S¸Ü?Vá?+‡ê¾ŸÝ¤?!è¶?:ìõ¾UuT?)𫾱5?Uv ?#“?C?L¾ý㸾ð?'¶¿¦ ¾Ó!¾¾š(Ò¾Œw?#Hì¾ùð¿œAð?%l"¾ÏN7?G?-d‚¾Z€Ä@„J?AÐ(¾Z7L¾pšb?' (¾¶ãô¾a<æ?É¿›”¾÷Kz¾•Ô¦¾XáÂ>ûl¨¾ºt>ŸE¿¬Œ"¿«Ov? «f¾¯>p?ÿæ6¿ŸO³?B÷¾¤¬2>üŸN¾¸©ô?ý:¾Kݦ¾èÒs¾‡ç”?ÜX濘Û¾®÷¿?+2Ø?W©³¿Ž8ø?,q?9ÚK?J+Z?OU¸?5w”¿žÕ¾¶°?È“K¾tä̾“âR?$ù¾°ÒÜ?:Õ(¿©Á¾±ò¾…À”?Mžf?4?J¾z;«#2?YŽÀˆ¾¬±^¾Á迚Gu¾•/¾Ç*²¾¹??¬?*µ‡¾dr‰?»’ó?0»¾óŒ,¾ŠÈ*>Õ›'¾«ÇH¾œÎ?ám?."”¾f?/3?Ôœþ?JŒÒ?Ìqо›¶‚¾ú¹÷¾ÏWP?a’ˆ?(~{¾´Øv¾Ê#2?+¯Œ?L£¾¤×ƒ¾u8¾–Õ ?¾mëy?"o¾Ëô¾êIô?C龦GX¾â= ¾§’ª¾S°5¿­íÄ¿œ!Õ?Ö¿ŽÌ}?t!¾Áñ•?4M’?×ʾ{”ݾºlž?-a©¾LJ5?$‰O?C‹ü?7Œõ¾{ò¿ ~à?:?+îÒ¾ƒÉh¾®r?$X?zÛ¾“ñ¼¾Ú/y¾®Xª?&?-îl?%ˆ‡¾”&6¾‹¸´?ÝÎ?Aâ„?%Òh¾cw[?.AŸ?ѵv?1X³^e¾_Æb¾E,>¾ˆ”¾²l ?D[Ý?Ad¾ªÚ(¿‘P~¾rl|¾QF¿¤¥¾³Ÿª?@DO¾H%³?ZK/?έ?)›¾µ*È?A }¾ûú½åRk?FàÛ?RS¾·)¦?!wœ?M3Ò¾±–É?3Û¾Fj¾‹¾š¾™‘X?ß›:¾­P¿œ²¾•½¸>â­0¿¦¢?Dòj?͉? ˆë?(¤i¿©*¾ —?·¶+?D§Ñ¾”PØ½Î¸Ä¾Ž N?<äi?NL?<¤ä?cÒ¾¹Ž÷½ì¦˜¾Ï®@¾I@?øR¾—à?¤¾‹è?@•¾¯i¸¾™Ïb¿¤Ê ¿1¾œÀ?7¿l?Mp[¾Í×´¾­ s¿¯vÁ¿…n?åy¾¨i¾dp?õx¾@,ô?,(ò?;…?Ò¸¾má?´9?L8?Ú½u?1즿ªH?:î|?\d‡¾æêi¾{nò?Ì„¾Ðo?'¥¾@+Œ0@f |?¶¬í¾¬ ?_^ð?J™ý¾›§¿£ëd¾¿h¿«³t?³¢™¿¦^?8$¾`ï?6×Ã?£Ø$?G~¿ Å?aä¾·Éd¾šðx?*ú¾È¥4¾™u$¾ ïâ?6®?@‹½¾¢z7¾›Ä?AØ”?MZB?­¾6}?A·É?"2¾åÉx¾Y ¾µtí¾ŸüŒ?@·-?"® ¿˜Sç?:6È?5¨?T½\?=!¿’öQ¾aì^?:R—?ê(¿Ûv?Jô6¾Ú<¾›WA¾c2¾$åš?D¹¾Ç8|¾q¹)?TU?à<Ò¾ø¥Z¿­`¾b%ê>¸Ù¾†ÿϾ… ß?nÁj¾ˆcH¾‹U`¿"i¿²wV¿®n2¾É#ê¾&º?=+c¾¦@྇RÓ¾pˆì?4H¿?3JÑ?:u»¾ .8??vÍ<–‡Ð¾›Ï=?.W¾Ì÷`¾³NH¾[Û¾‡¡d¾Û$~?·¬¾Æ^|¿ Ò?>¼Z?0”¹?Ku ¾É»-?»¾L΄?=Þz¾A¾¿¨Fä?AQ÷¾™1?*‚Ó¿¤…?Ï|d¾Ð*4¾[¾4¹Ì¿2оéd ¾Ÿ|ã?#¦¾ß!?´¼?'åÆ?A㔾V|?9ˆ¾!wU¾ž‡(¾ue?3T¾‚µž??e¦¾¹–Š?Fl{?,u¾¨É̾¨^y?ÙÎ?C ƒ?-ˆ|¾º»´?)ö—¾¢ùÝ?7œ¬¿õ2¾¾žŽ¾uÚ¾_‘ð?0ÁE¾}à{?=jW?É*+?˜¦¾§2æ¿!ñ0¾ªÓ¾REJ¾=3?¾-?Mþ¾‹D­¾–®’¾/:¶¾–DP¾…¡?`п•œ<¾Ö‚¿§…O¾”¡½¾?-¾¢P?hɵ?#i‘¾Ý¨¾É¸2¾ANy?%¨$?D…d¿žMF¿ ï%?*uò?%ëL¾½&?~q¾Œ£t¾µ‚¬¾­sʾŸæ¾³ž4%€?%î{¾“ˆä¾È?ØHæ? :?O €?9—?4y¾„¿¢M?&Øé¾u `?GîÖ@)Ñk?·³?-ÅÌ?9¾DÍ&¿¯¿¥LÇ¿”ó£?&’â¿¢cÖ?ÚVæ¾J޾œòx?»?Kgî¾Ôî\¾ÀfÓ¾!µ¾Ø¼¾ŽyǾàk`¾Ø`ÿ¾†@s¿¨õé?AÉV¾.îv?Ѹ?'÷辯…l?U 8¾HÆŒ?3Ðu?,›¿<•º?[9¼?(³~?EËÀ¾¯F?±R?âͺ? Nˆ?ÐB?!_D¾•Q(¾k«ø?Mº¾°SB¾qœN¾ÂÀÏ?VÀ?+ð¾{ôæ¾®c½¾ÏM†¾ªY¾*¾±lC?M X?Óý˜¾RÀB?<=?:À?¶`?ÞÌ?\ëp¾ATñ?ì?S¡ø¿)3Ë?,av¾ÜÔv¾UÁ<¾¶-?3‡?w¢@,迦q#?%oÖ?]»3?[=ݾ’}¾t4? ¥5?XP¾?Bý½ëŒ ¾“Jì?æÍ¾¾³…¾çCµ?"ç>?5Óª?Ⱥ¿¾s‡½¾Ö×T¾¥Î?þ°?ݾ[ƒÌ?4¥ ?!>?5Y9? ­?;l®¾{i3¾°0?:dú?$rù?m¢¾¶ H¿—!¨¾‘/'?-Û˜¾bd ?ߢ?Cõ?ÏÝè?ì Í?-:?B î¾ .B½ëÐ?7nû¾l±T¾‰‚?Ù¡á¾Obß?FYC?4^R¾u$¾kZ?e«G¿ÃÐR¾aÉù¾]¤¾s` ¾­ÇÑ¿µì@?Nì;¾¶ëN¾éœÞ?Lâ¾½õ¾£ü?àd°?܈Å?%•¾»Ø¸¾m¶ú½Óiù?<µ=¾¶; ¾Óy÷¾O¤ ¾hG?Czæ?;=3¾O1ľ¶f?&M¼¾ƒS2?@Êξ=Ê´¾¬£?^ûó?]!¢¿˜‚¾à—¤¾B€j>ûn3?+1?6+<¾ˆ U?mÞ>#ˆÐ¿srì¾,w¾¿‡ï?I ?+k¿˜üO?Yl澩º¾o‘?9‘=¾WôT¿ª‘¾¡×8¾T8)?Kñ¿¥à ?ÙÔU¾:ø>?œ¾•’´¾®Ý¬¾£¢¾”†z?N-ü¿ŸéA?°â¾î‘2¾\3F¿§Âô¾œ@v?K(f¾ƒŸÖ¾½Gb?HVÆ¿?$I¯¾“?:ɾNΨ¾´”à?Ùÿ%?×6…?ñô(?3®€?'iT¾†+F?Ab¾´”˜?2ÈØ?ÿ˜?=^(?Ý`??Jäö? ?I¡ª@ ûR?-·µ?(íû¾Ê|¾Û¼¿“†’¾¡^Y?Ð: ¾•VF¾•ö§?/Ž@?<™Ü?*/¾²Uľ›? ?7vV¾=^?™?ÂÚ¾“ V?<ò?Ø‹´¾Ã4?8í;¤òÂ?Ôƒ¾–*ú¾ˆËV¿¢K.¾ P'¾¬N¾anõ?ÇXV¤?im¾ŠLV¾À¼>¾©Z¾r²Ò?FȾã_P¾•Üœ?(³’¾«æV?5‹?I_“¾¹B,?o?CDÂ?Íjd?4ÒØ¾¼IæÀ–0¿¡”²¿©Ö´?<­•?×Ô6¾¢®5¾éÅ?'£?,0¾ÔÍž?5T¾­Sì¾Ô@¾Š¹V?À?è@/[~¾m¶”¿¨ˆ?C"Õ¾±¸n?#Þ?ó¾˜È?Gº³¿‹>s¿@„¾PM¿?Tký¾¤^?+-ξMÓ¤¾Âüo¾ Й¾ƒ`B?3Oü¾gÇÙ¾Œ‘%? )¾†÷z¿T\?;6,?@-–¾‡Œþ?Êž?5ýG¾¾¾Äe?1׫¾®k迟 p¾”>V?QÐ%¾‹}?(›^¾¿28¾ `°¾Åm¬¾¾ßø¿ŒN?-Ë)?Þád¾ît›?FM?%^?'{œ>g€¨¾Mö>ب?/Ñ2?]7?@m^??º¼?.bS?*ê9?Åñ? ³6¾y w? ‡Ò¾Mv?,ý~¾¯oy?36¾¯Ú¾Ÿ¬L¾±ó˜?Ðâ>ü€?þýÞ?àI§?B¤?Lî¿­äØ¾¯s?Uɾ(Óò¾‘‹R?GÛ­¾œÓB¾É)¿  ž¾0p??Ls¾aƒ'¿¶ˆ?Ae ¿?‡º¾ŒH¾¿µî¿·í„¾[‚¿¡^A?>U? ¾¡V¾¯tÐ?M"¥¿‹Ѿz̤¾t …¾åÜ=?Jà…¾e?u?I挾†² ?J½¿•p`¿ m¾©Õd¾^ªµ¾?IÜw?ÜsË?ˆ?5‘î¾Ý í¾^ؾÐS@¾d(†?©B¾n é¿0ž¾(ò?Ú¡"¾=K½¿¥'¾’Š?P£Æ¾¡ƒ¼¿¡§¥?;<¨?¾xÈÛ?¨Þ—?4dæ?|¾Ý‡s¾QC\¾‘±Æ¾W+¶>”ýG¾ÌNî½ó›>?Uó/¿œ°Ó?Aµw?Bn¿¬a¾s€?-_ò¾£n˜?)ÿ?B±¾Ä.뾉j,? ü}?]¼¾l¯¾TÏÔ¿/gL¾V¹:¾Á)½¿3Í¿¥÷ð¿À‚¾ž¬¥¾²Lj¾¶ø¾‚Yö¾¨[ɾsõ ?6e»¾m_·?2Iþ¿•/!?Käø?ÖPZ?&ì?3T(¾µµÌ?.xû¿£žÓ?6S?A¢¾ƒlZ?ʾ‹?L¥h¾f!”?Uî?%„«¾ƒâÕ¾ª?àE!¾5¾¾TÄ”¾™ƒÍ½îç¾vÍ£?Hôñ¾´e¾.Óž?? ¾„®?c\ž?ÖYW¾†4ƾi%Â?5 ›¾¥ö¾‹®»?/Çx¾Ã ¾¡±L¾•a³¿¡²@¾Š»¾¿š½†¾™Œê¾™¹ò¾†ß¾ï3d>ªŒa?áþ”?1!¾¥4z?Ú{¾ÌHÆ?RõL?yçù?6öý?%Ü4¾‘Ù`?@v?Ì?8Ö?®ò?$Ñö?-d€?2ýR¾‘8§>óõ¦¾»„¾ÆÕ?:0¿?*u±?1¶R?]ö?3ñg¾Ï[ƾŠ/4½Ðã?+Þ¿•ïj?Ó™?@¥¾U/°¾S !?îÄ¿Î?ZÐ??™Ÿ?ò»¿šè›?K¾À ¸¾¶i¼½¤MÇ?ci”¾Ée¾¿« ù¾“Þ3¾ | ¾ H¾œ¯Å¾t {¾ÌêÆ¾YÊl¾sk¾Ì¹¾[e=?;׉¾” Z?Irá¾Ehü?I›O?ÖYf¾¯C•¾°&ñ¿ž¿¦u¾m‘õ?WŸ3?OœÒ?Þñq?,o)¾„&¾…?9ô?GØç?Vf?2¾À’ì?`+ö?9dá?2áh¾»Óú¾Z®¾Œœm?B‚(¾þ"?Pzn?)g¾¸/ú¾š—¾iR‚?1:??¾ÒwÚ¾©?Tä¾Z~{¿Ÿ„²¿”ÿt¿¢J&¾¬«‚¾Ÿ•’¾Q ö¾‘Õì¾°ÍR¾Ìcø¾œÿ?-d¿¡˜c?Üྫྷhš?IŒ?Õ²?1˜:¿¦¶á?%|¾˜KÝ?7†Ë¾Ps†¿_A<¾’—æ¾9$¿ªþN??+ï?2¥H?>À?*}¼¾ª;$¾–¥Á?ÌÍq¾Ž®ù¾*h¾ŠR ?•Ѿ¢ch¾Ää?:A¾)+½¾Ì«Æ?,ãã?;†¾¯.+?CÁø?A¿ò?Wu4?&d¾t‘à¿­HZ?6õÊ?…V>¿­t>?¾y1º?.?Á™¾²l8¾­PD?<î ¾èÛl¾…(þ¾….œ>øW`?RßU?öð?Î{B?Ci¾ß~¾´¦?OX‚¾¹Ÿ°?@G侚 ?ÝF ¿,w•?3l¾Î?)æv¾r¿¹?Úhƒ¾¸Øî¾³E?) ÿ?;AO?.B‚¾„­?Ê5ó¾^õ¾7¤Ê? ¾…Ôã?;ï-?T=Ð?kú7¾¯ ¾‹W?FÄ?-)/¾×¼ ?.oǾ%Ñ?'‘ ¾ëï'?DVÆ?:Yv?2¼å¾L<Û?Ì!–¾+N®?EH™?Ñ&:¾¿à&¾Õ,I?'©¾¾£‡¾žiŽ? ¹}@$î4£”¾‰]ã?/ c?9 þdn[¾;g´¾¹¢±¿¢Ñ¾«•ª?'<?Sã ?Ú=Ú?ÛÀ3?@Äo¾÷~?< ë>‚w޾{n˜¾t ¾—Íe¾5´Ì?ÕŸ¸??C“?ÖII?O‹ú?Üïè¾?Èø¾˜L¾v¤¾ûâ&¿P[¾Œè˜¾G»;?;’µ¾€Ru?ÙC?JB×?áèu¾wFÊ?5Çú?LE¾Sòa¾To?Tµ¾‘C[?8T?Ü^?:Ó;¿–¨u?B#à?WS/>ûíø?9AÚ?Ôž}¾“^¶?Í5÷¿¬Ëñ?&Ó›¾mD×?7K5?NÛ꾿­Ÿ¿‹a2¾Íh5?WÀ2?ÔôȾc2?-(ú¾ºj?Ë2½?*ÿâ¾æCj¾‚íX¿K8¾Â›”¾« &?jš?Ê5‚?C¶?G¢?øN? r?Êñk¿°€È?4jB¾EƒÔ?Jp?D²Ç¾§è³?D:G¾£lJ¿¡•Q?Cµ‘? d?=¡¿¦5u?„꾊„.?,k?Mž¾íf¾ÁW«?*¸¾¾a¥·?NÉ„¾ ¡:¾¤"?búã¾d”+?I5U?O÷?5÷?DÞš¾ ¼?Ю>ó玿¸;_¾±šÉ?&þñ¿ÁL¾‹sÓ?2{x?B¾=QF¿¨¯b¾À’‹?4†*?8M¾a?88`¾ÙõÌ?ã=®?DÁE>顿¾«¢Ì¾Þ$?HOL?O3?C¨G?0tù¾·Ö8¾ÌË?R¾/Û´¾„ö?Ae]¾x[?C⾕À¾”ì?Ié‡?763¿ Ü¿¤92?7ϰ¾²ËÕ¿¥¡¹? ?/¾©£Ê?J9!?-(°¾uí?VÁz?ü0|?®óW?¾_?:ùÏ>ÞR«¾VK§¾ÊUF¿©¾84¾¨Ìô¾‘ô¡?008¾ï*¾’Ÿ¸¾b¤?“s?+Æ™¾šD¦¿’¹æ??Éâ?ì@`?+ä価º¿õe¿˜&¿2˜¾¤Ÿ?& Ù?@ßb¾ë§õ¾yÌ+¾C@*¾"•¾ ö¾+ÿ ?î¿F÷¿¡óò½æØ&?J°?B¢¿œä?4.¾š’¾$–ñ¾“üs¾sCI¾½¼Â?Ó`¾†.º¾:Ï‹¾ÔòD¾ŽB?ØŽå?/‚í¿´^>¾l¾¾·‰²¿¤hI?”¾XÂ(õ¾»u?$œZ¾´'§¾€¥I?¯ ¾Ë^Ô?ÂÂ&?@ ¾Æ•Þ?3[?8ô¾¿cÌ? *𾜓h?"eÀ>ðåR?*sr¾—˜g?5Ïξd6õ¿¯°ü?B¤¿žSо¬ž4¾>Æ?3&¾•¬x¾¦ƾŸÜ(?ô? ªÞ?»Ëì?=õ?0$ò?3b¿”$A¾Ý „?=oØ?8úV¾Áÿ:¿¤¬¾‡YH?ZO¾:ö8? ±M¾®Që¿ ßÀ¾âWw¾­»k¾g?Nc½¾…ƒR?[bå¿–Ò?ÖbJ?>ÉÐ?åý¾”o&¾…Û?K²x?Vñ¾¤p>û•e?'¾Ç\D?ä? &b¾Q”>?%Ç¿Ž>­¾à-È?7{¡?è?7ÁX?-õ¾…;$?ê?G”¾eš7?C‚¾Ìú»?)‘þ?Ï~$¾`2¿žÙw?‚š“?γ*¾Ì#Ù ¿¢té?9–ù¾ ‘n?PȺ¼ï<`¾‹Â>?C3D¾è´?=žA?+;㾚ÏV¾rˆÐ¿£[0¾—‰ ¿Œë5¾£jx¾æZ¾Q&³¾ž²?9ÍY?IWF>Ý(M¿§,à?$gð¾…ex?4ð€¾‚@¼¿¡<¾‘éX¾ŠB¾‹˜f?/vÖ¾¦¼Ò? ?!wà?ANܾúEN¾R\-?É=T¾¾†,n?4âÙ¾’ôè¾qÁ ?\f¿¯$‘?G8ª¾Ž´¨¾çw€?ÌV¿ŸË±?GÐþ¾ö̳?¹£¾‡6^¾¸–À?" ?K‰-¾Z_–?5 ?Z‘¹?%ÊÅ>ó÷j¾ÐýV?JßZ¾Ÿ€¾‡'?ï>á0ô?Ò z?#/.?ЖåC ¨_@jçѾBòb¾•¦¾-}?"ÙV?ço ¾ÁY”¾:y?ˈ?Õ³ž¿µ<@$~³¿˜ùå?-l?´O?Ó<€?.7?<£w?-  ?Yh1¾ÐQ¬¾Ž®Æ¾~U™¾~ÆÎ¾L‹‹?+[ɾƜ5?:|4¾¯¥}?ÜEÆ?#™?=xh?3i7¾$G²?ãX¦?CÊŽ¿9‰V½çÔ±?Ê—î?¯¾Çmm?«?.,#¾²*¾?0¹—¾}âZ¿¤6\?ˆÑ?Ë´ò¾k^M? t¾»Šº?(˜¨¿¥¿S?4ý ¿³?)¼? x5?ü.¾¯º?/¨¿§¶%?MIŽ?3…?,A¿³??âX¿˜ˆº?JiÛ¾l-@¾º¤0?;«¾²ùt?%ã/¾‘ è¾FÔ}¾›Ý?4ãG¾Šáu¾U²fÀ;¾_Æ}¾“w<¾±—(¿¨ee? {ú?÷°¿¢Â¢?Dêr¾£LØ?FL?BŒ:¿¥0Ï¿^…¾ÑÏ?9Éb?(å,¿‹Jv¾z]¸¾Ëïü?ܾ®‚¾É%?=³½Ûp¿“øò?;¨ƒ¾²ªÒ?L$¾oÒ½¾šým¾:Òk?Ìé­?Õ^’?,/á?ØõÕ? „å¾{ýð?(gV¾¨¢E?W´?)´ö¾‹gñ¾Œé´¾Wux?Ðl?E”Ò?fþ?A¬¹?+û??¸?BÙ¿¾#CþÀBû?)ó¾ƒY?-Ü?ߟ|¾òôN?=3–¾Ì œ¾„××?4Kî?1Xc?322¾BZŒ?Kƒn¿Žè¿ìd?ˆþ¾ùÙË?Ôn¿£L¶?PhH¾Q¾©²ï¾Û£ö¾»¶?R?1¯1?_/?En@YÑBr–?@(¬r=€f¾‡"Ù¾•W?@¸Ò¾“;¤?ß4? ül?6Ò1¾Ï7p?ÏZg¾qê¿¢»ë?C¦Š?(b?¿¨{²? Q&¾žÀ¾krg¾¢Ï?.w?窎@'Ía¾‘C†½»ò¡?l”¾ÄzÂ?šé£?Ìj‘¿¬«,¿ ÊR?@°¾• “?An¾Ô=@?"œš?Ô¼?øÛ¾·!ô?U¥?-šl?ýì¿®:Ⱦ­¾ß‹õ?3LŠ?îV¾‡í?0Ãß¾“i¿Ÿ$L¾¦ô¾Ü(?=åÑ?!;¾Ö¹æ¾¤ˆÒ?<Ù?$õb??[Ò¾¼ïÄ?P‡k¾z‚¥¾$¥µ¾º‰ú¿¤fྩ ¾}X¾¨@?'<Š?8oǾ¯ 8?,ƒ“¾¥5„?!¾‹˜?, "AGŒ0@°òü¾¼;0?19˜?Hh„¾ž»~?.^B?C‡8?;.?+±ø?+H?Nëw?-f㾊V¾S¨?ÐK‰¾˜gÇ?2Sñ?&GV¾Ì ¨¾Ôý’¾ÊÇ%¾}Fœ¾çëÄ?@ Ò?/?'¾”|?ÔþB?0ƒ¿¬­?Ûå?ÛWÀ^Ú?Iœ=?7’Þ¾ŠÈ½Î ¥¾hqæ?Wzm¿•ïñ¾µÿB?L9ã?i8è¾ä½!½õ‡?IÑ ¾’z>ÿÖ¾Ŷ¾4„ ¾ªú¾h½H>ɬӾÅ]p¾OÂÎ?<*ì?H¬~¿‚¾qáB¿™L]??ûÕ¾ÔÓ¾X&? ‹¾»)Ø?$Zê?T¾×gj?Ê6¾Æ‰Ï¾qü¬¿°*,¾—7¶¾œÇܽ‘:™¿˜Ô˜?vay¾†ÒÖ¾|³²¾±\ª¾’¾¾½°Â¾yà*¾¾±‚¾‚KX?(,?8ñ™¾yn~?,ÈE??Zº¾²»Æ¾[ü¾2žV?ÐLR?/ᾕß8?AÒ?C|¢?>%+?S[P¾o× ?%³œ¿®‚w?$"²¾CVd¿«+À") ?*=´¾€y¿šÓë¾j-,¿©wÖ½ûb>?[ÌÞ??Rr?4,¾ƒŸt¾Åç+?'ÅÒ¾^Àè?30¾v\å?>d?/ž?É{Ž?( û¾ˆo¾Ò´Õ¾º´ø¾ÚYn¾|nn¿¦G?Ï0ª¾«z5?B\Ǿ²N?'·?mv¾¨‚5?—€N?Ê?P³‘?.¾±[þ?Þ¼F¾s ²¾°@¶¾±¦=¾8î¾”@4¾Šô?‚É`?²Æ¾, ?E¾?9›+>¹?(l¾Ë«Œ¿$?v?Ôå¼?-º\?Hu&?9¤¾äÐB¾‹`?àkö¾[ê½?)2Ê?%áM?Ìå³Aù½DÍ¥C]Ô†A >Z?w⾪ýè?×Û¾¯9š?°Ù?2²u¿±*?ÔÖW?!ÕÇ?ܬ?¥?Ü"X¾lâÃ?:ï?¹ÞS¿­ùº¾‹Þ¿‰Ýä?3®â¾^??X(?H² ? š¾57¿«7?DÏ?¾¤\ ?Ó6?0œr½ÑuÀ¾’Wt?:§¾žU£¿”w?8¿e¾F#²¿šð/?$:Ö¿÷œ¿§5¾>Ò?]ó³>Òõ»?ÕÇ}¾™÷;¾K}ì¾aᵾ?Næ¾¹t?MŸ*?> –?LºÛ?8¤®¾0Ɔ?B=²¿³¾\KD?E‘ ¾œd°>ñp˜¿¬#V¾ÌV°¿œÓ¿©|¬¾¶~Ç¿›0¿£!(?4ë¾°{µ¾¸Ça¾ˆ×辞ѷ?JP?;ß·?"û?=š?@`<¾m6,?:ó@¾I¹T¾†gÖ¾îì?A7½¿§šÿ¾–HŒ>ûѾ“ìV? _Ó?Uýe?>N‡?ñÌ÷?/˜?:’H?5Ay¾3rD¿¡ÌS?;™?.OÎ?=Va¾†aD¾3º??̳¾·ª¾P‹€¾?Ät?Wtf¿‡Sý¾½kæ?Û9¾¡6È¿bë?SÆV?7‹¸?>ŠÝ¾9r?N"-?b@ã¾ÃS?¿3qù?û ¾ÀÅr?8¦?:…?0:'?@B¾k\…¿¡%i?İò¾‚­¢¾aÃé?V.¿¤a:¿‘ýò?Jj°?è`¾´%"?5:Û¾Á^m¿” >ž (?l¸#¾¦`¾SŽº¾äß?“w?R¿¢¢?(Õ¾ÏÚ¾WC ?%‰Ô?À„&¾—Xn¿¤9=?Ž”¾ÜT?- Ø??~ƒ?Iu¾¢Z¿”‡¾°¬¾ÈS?4Åü?G ä¾c_½îî>?Yq¦¾ÎL󾮆n>ǵó?J¾J$?לµ?Ì1œ@%§¾Ð¿Î¿¯âi¾…Åt¾»–$¾…öœ¿¬•$¾„?Qj¿¥0¾¹PÞ¾Ã⾯ Ø@ï@ÔCY³…C¥HBRM@%« ?Õš?Ei´¾¿çº?7qR?¶sP¾Ð¥˜?IB¾L+ ¾w¹ö¾¼³¾µç6¾¨ªf?ÝwØ?1æF?MÀˆ¾Ô³T¾\úÂ?,Ô?%]“?Dáh?Cm7?#nR?"â÷?ÚJ>ír@¾™Ë~¾Åºy¾Å6¼ŸÈ@?:ÌH¾0B}¾sµu?_âz¾h½Ð¾#K¾ É}¾¯Z¾Á†K¾¤m¾åsã?4p¾¬oÐ½Èø¾g¶?TÐ?Íi¾i Ǿ{ÅÑ?QY¾D‚_?á1?<Æ\¾eN²¾Äo°?7‰:¾¦œ%¿À© ?/VÈ?$ `?5Bw¿ªF>(Ï ??¼‘?;0â?/ù”?Ñž2¿¡ C¿¸ Å?Èõ‰½©O¥¾Q!H¾¾Âí¾i›?”Œ¾†"v?+Â"?"ÚH?^øH¾›ö˾^$ž?úrQ¾“¼?3›@¾©ô?G¯ê>›N?1' ¿ Ì‹?ÜÙ¾«×оVÅW?%-w¾¡—¿ :¸?ãA? o¦?Z3¾h©„?@ Z¾g0.?ãØ¿ ðH>Ƶm?ï¾°µŒ?Fsþ¾Œâ? {¿Ìæ¡?³³@¿"é¿À¤¾z}Í>ùE2?R§¾5Ø??H?o?öî¿«~¬¾-û¾—«ž¾ƒz¾âØÒ¾—È@«?пžà$?=d£?"Àa?J!?'‹–¾§W?;1D¾:_?ÕÕ¾À¦?ª¿¥· ?ºÈ¾Î²â¾pÛÀ¾QzŒ¾Þ¾ŽÉ4?vU‚¾úÀä¾–‰p?9Õ¾¿?µh£½É'X¿?™?5œš?ã î¾’X¸¾‚ò¾z=Ò?ÏØÁ¾sýؾesÃ?K$À8\¾Í;Ù¾«™?@í¾ÛÕླ–¾€f?2iÊ?U ™¿•T•?&ãJ@6?W÷;?!Æ„?^AÒ?5Fç@•°A̤@rÓ¸?Ç5&?@- ?!ú¾™Ö^?FŒ‡¾¯j?"ç™?Ó&m¾°÷쾤X>þü¾L9K?h+?*Î@’‡¤BíÔ? Ržl„]?2ì„?5(?) –¾šò~?)âì?\–¾c #?âW¾©¯>?8cž?œå/¾b¿•?+Þ6¾‰­z¾Ålb¾Æ¼¾Óoê?0…K?Gl¾•O§?=2?³Ê¸¾Ý•µ?>-.¾}„&¿¨ R?D&z?Sc¿¬Ig¾QúK¾‚%d¿¦.â¾ðØr¿™r¯¾€^¥?£4¾z¿k?@:f¾ˆ½×¿œMm¾€ ¿¤k¨?E«¤?,yœ?:!‘¾ÃV㾆³¾¨ñ|¾¹°ã¾‚T¾©„c?7´‚?\R¿žX¾ƒ·§¾.ûÁ?<’s?6Ö¾n†¾€ t¾ÓDÈ¿Ÿ5E¾ËÂ?3ŒÌ¾ˆçƾàQ¾»ž§?#v^?0Ê?;&?_!¾½Ô¾fö? ß ?ÿ\¾ƒV¿ÿt¾KÈ…¾™ùÕ?3Ö¿˜·â?0Q1½»N°?-’¦?ÍY¾>bP ¾Ã2=? ;»¿€Ü?Ù%1?Z›¾š €¾oºJ¿¢@ý?¦­¾kàŒ¾ì;R¾­[@!½ ¾aˆ¾ªú¾È†F?:Ó¾4å?!P?(¤¿˜·¿m¾§Ê‚¾·‘Ì?0‚?P—ò¾±$&?®S¾¦ï>¾èEƒ¾àÁf?B??í¸¾á)?Sp„?*[žšI9?Gº??4¾  ¿ýˆ>Þjå?.Ô&¿œ*?:ûÐ?6)x¾³ÖP¾—Ô ¾Ä*Ž?6ȾÅJ?9%T¾N¾êl?0¾”hß?7ˆ ?L]®¾ï¾?àv?/@Z¾j\˾ãô⿟Xš¾4M¿¥-?ÇlÍ?:¶ù¾c9Ò?ä°²?ÅÝþ¾À§P¿®œ¾¾ ö¨¾˜qÛ¿™Î+?%ä—?&@?(K¾6v†?1ؾ~Ê^?ðÞ?$‚¾Ç?ÏŒ?¡•ë?E–t?,ßt¾q1¾‘“ÑA¸rBöÁAÃe~@ΤÉ?Tノ{„¾áv>ô,?Öë?0ˆ?Ha¿­j?ç6¾¹9f¾“‘á?-¶>?<|¾ã§U¾žÂ‹?ø?!§?AÛÂ?(j ?ÌdE¾~ô:?±^¾äÊ?'´¾¡Ì>Ž/^¾hܾ¨:侂­¾¦ãؿ쾰T“¾Y ¾Åá”?©4¾Òþ?!#¨?Ù"\?Û¸ç>¼ÕÒ¾>;¾­‚Ø¿‘AY>øAî?j?„f?½¥ª¾ˆõ,¾›Õ¾ÁL¾7iœ?&þî¾ÜeŽ?SÄè¾=vÄ?%`ž?ò¾ÁÏš¾KT˜¾k$t?' ?8¦S¾¡…¾¥¶Œ¾e/€?U§à?M|Å?HÊß@ˆ£À?5K¾¿•8¾žw¾f}—?-?¾ØÝ?²…¿ŒüƾÁÍ‹¾©¥ª?Yذ¾àÅÊ辜£†?42ˆ¾sr…¾ óæ¾±A¿“þ?Õ³È>ñÉþ¾)í¾­W¢¾|†Õ¾K›g?#·o¾åÅò¾“fä¿¥‘¾ƒs?B²B¾„G…¾ØÁ¾½d(¾²û?9ÝŽ?5[? q^?«û$Ï?J¾†EÁ?>¤t¾â=:¿R:?WûY?ÀÑT¿Ý«¿ñJ>ìýÔ¾Ž7†¾'÷±¿‘I^?;þ?Hw?Ý¡@¾¨›¾“R@? ^¿«k?<ƒº? ?5ÂO?/)P½çí,?7ž?5µJ?8°X¾É¾¾…Á%¿h3?=~œ¾2ŽI?£=?ÒÅD?%ê÷?Þ¸?ÎÕÚ¾fxŒ¾ef?(zÌ?+>^?@¾^¾ÑhA½ƒÐ¾¾F 1¾t¾Átø¾”D ¾áùÖ?Eh"?5W?åÊ?W?á|p¾¶Í×?@‚¾Ò]¾¬5 ¾§¬®¾‹‘ô¾”»™¿È?3uD¿ .³?9$¿¡ô?=Ë?4‹]¾Ë#z>X?¿?Nõú¾EE­?5$›¿•_›?î‘¿¤ú?Yã ¾¤²?I9‘?0:!?0@í? \|?Cv?7>©?è|?A‘?:æn?AQ¾€Ö¾<ƈ?6Õd?=þ??M˜¿3ä?Vtÿ?/¾g/¨¾x²¾°wϾã1?ä=쾯/í¾t޲¾šc쾋¾£Â^¾¡‚ܾí;>?1 ;?<‚”¾ƒAï¿“-¿¬1¾…“%¾’+B¾I?Ï]é?0Rz?ɰž¾‡J ¾ˆ¡>vz"?M‡!?Ó–¸¾¢íb?¶Ú|¾„ÈÕ¾·Cð??BR?4s+¾¶qÐ?Zq¾á­¿Q­Ì¿ž€–¾Y°?,J8?YБ¾¬}¾sýR¾^Î?~ƾ«‘ξž½Ä¾·y"?+w2¾5p’?$ü?<98>éh? Ф?‹¨?Ò"¿¢"R?AK2?HÕÌ>ü?L¾á®–¾Ï ö?‘Å?Mš¾Ç¾+€²¾†­p?yâ¾îÐ?@:m?8<?(Å?99¬?)·?;Þ¾¯ÓR½¦J|¾ª&/?3Äv¾Žðã¾4T:¾§(à?6×”?_¾‰Qj¾õcÕ?Q]D¾vxB?SVÂ?Äw¿©Vé¾Ä¬p¿ŸÛ'?K¯?6Í(¾¸¢Ü?dC¤¾ù~¾™Á ?]>ø ú? &?ÿÖ?DÇz¾âµ´¾Ã#ð¿®a¬?"`N¿¥1”¾ƒú¿;x?O ð¾Ü›Ø¾·Óܾ¦ò?¾¾€ZA'ÀúC}?BÂÛýAZœ?Ól>?? ?8Ö4?=Àú¿­»x?<ð?-??Q¡*¾ÛŒ|?à3¡¾«5¾¢ãâ?<ï¦@àÄ>Ä¿š3÷?3¯y¾í™œ?Itf?E±?Én?H‡™?ò,?•úF¾ƒ1¾i»H?Ô½²?.Õw¾³Fs¾‰×½?0n%¾›¡?ë‘>—A¾ÐóÁ¾ºÇr¾Ylh¾‚ˆ?2:\?O‹)?›m¾B“оƜҽë¼Ý?æŸ?6Îù¾?ªô?@uþ¾@ŽÖ¿¬®ü?1¤¾¬Eq¬?]?8þ¿•›#¿š ß?XfË?¿z6¾™m¾‡Dd?5ö¾Â•¿™Št?1‚¾Ñ©¿§Ù?Sž¾ÁÝ%?7 ??Éi¿›“)¾¥-?8” ¾@"D?/µû¾nÐ?¾ ó'¾Š=Ô¿™{‘¾Ö•r?) Û?*3¿”‰i½‰Ôb¾êý@>?î8?AW?G}"?'¾ù&¾«‚¬¾_󲾟P㾕wp?Cãš¾ cÛ>ý}¾Hß¾¨Ìö?N¹¾¿ï"?N;S¾¡ü?I‹?)¤?bÒ?1$ ?.õ^?EjоOçÖ¾°è’?Fµf?B¥Œ?ÔcÑ?+`Í?<-?(Œ?-°’?Aɸ>㿼? •Ž?RN"¾É´?Ým?@N?= Û¾Æ­I¾•ÏJ¾{•¾˜§†¾¦?V¨ß?*‰.¾ÿN‹?PUP?A/t?6 –?2áR??ùk?G?J? x¢¾¯qо¿¨À¾^*ö?AoN¾‡ÜJ¿º¾¼•¾ãüÌ?Ò©?=’A?,°?:>ø¾§MÌ?R5L?A8=?9ʾ2Ü£?&½ ¾Ib?´?Ì?J€?Üj?Òͯ?'x? Óœ¾ƒ;¾¾¯A?U»…?þ#¾Õ–š?*|'Aä¢$B®ýQBj¨–@ïÔö?FC¾Š"N?>ľ‚]+?57ñ?+?B¸V?a‘?OEb?R0a¾y~?@tO?VI?¸i?3ÊN>‚âz¾Š ¾Àeæ?-Ëî?%/F¾•)쾿ʢ?Ù*¿¥B?;M‹¾³f?J ¾‚Ÿö¿"Ä"?- ‹¾ä‹q¾¹»¾½3ò?=Ûz?Gïß?€Ì?H۾ձľ§WW?8ZD¿¤ ±?*k+?ç˜a¾žÍÞ¿ Oz?ߌG?ߟ„?Âÿ ¾„¬?ÇŽ¼Ä ¾zØÄ¾jj¿›àý?'…¿™½ò½Å H?$ò̾¸ï6?¯¾k"?B¼?æ£?DCó?(_¾™í>½Û€–?;-}¾™çä¾Ý)|¾(i×¾¾LG¾˜Å£¾  Ú?PÀ?@lt?#î¿£4Ú½ââã=A`¾‹…¾cÖ%¾˜*¾€mæ?Žs¾¢'©¾½™P¾€ê#?=Q3¿¤|¿¨‹=¿¨ÈE?o´¾²¢û¿Ÿly¾Å‚Ž?$yß¾ÔÄ¢?Ép'¾ÅâY¿±[‹?'™´?E4¾@•¸?Tß?;ݨ?º¦Ð?2u‚?M:Í?⌾§z¸?A~¿k2?N?:ºâ¾O*Î?h$Ê¿¡¨?J]R¾™‡ö?I¤Ä¾¼¡¿¯[h?6Û ¾¼:¾°ÀМ?0 ¾Š,â?2'Ÿ¾œà?Ûq¾X2 ?^Å‹?$?}¾–ËF?R`Ä?.ñà¾T_„?0^Ü?ApϾzâ½11̾´óJ¾¨”n¾O ¾ˆR*¿©Ø?³ïÀ?ߟœ?4Õ¾‘¸N?¦?&û)¾R ¾´"Ê??jà?#ãÉ?.„ž¾º!Ú½ý•ê¾äþ(¾®Å4¾ºî¾ó2s?zå¾o­?'ãb¿š¦2?X?a÷Â?=-Ñ?-»w¿¥T¾YQ«¾ÆÍy¾^pá¾¼i*¾¸>?. ?Nk̾”+x?I]?þœ¾‚¼ý¾µ'*¾$ ê¿_d?3ï¾v5p¾Êj¿ 9?3w¹¾Ðq£@‘žýB§qB¶õ¬AGë‡?Ðo­¾ÏNâ¾5ÿ¾¹-š?0:B¾Ãä?QµÇ?4e„?*ÙZ?Êg0?Fñˆ?ã ?HNÖ?Ÿʾ§‰…?$Ìú?AÞÖ¾Ÿ¤Õ¾Ä/ð?Äí?F¶g½áÖR? s¾¡M ¾±,?2åÔ?# ‡½×º~¾šÉ¾í’޾˜a辕•‘?9ƒÏ?*öS¾†~ê¿”ú¾ÀÀ¾—R? À??~?Mj·?Ià ¾^Ãá¾h?8y ¾VÝM?#õ†?ß=¾rÒʾ¡Ç?/$3=ïÍ ?>¸½¿—V?C€ä?=3D¾T^@?b°º¾ª£?*æ?Û%z¿—ÆØ¾¨ù¿¯ê6¿ ¾-gw¾“ å?Ƈ9¿ž.­¾X³?¡¿¦ë¾ê2?RC=¾„Û0¾G¯¾h ú¾!ë´»Æ@¾z“¸?FE`>¡¾Gsœ¾ ½E?0_ã?%u¤?.B$?ÒÅ?=ò@¾ÃA¾‚Ò¿fù¾•>¿¸ö¾¨C^? €B¾Ñá§¾ŽzN¾³øâ?Ù?*¾“ÝÚ¾´´?)e^?IþŸ?8]±¾bð8¾­´ê¿*?-a?)ᄌ+¿š´m¿³þp¾4Ⱦ~å@¿´¬Í?J`'¿’Šž? ŠÜ??¿›3x?¸˜¿¨yo?6-¾i ?féª?% =?,tN¿£Ð ¾•€¾€Ã¸¾ÎY›¾œT¼½~é0?9"8?V¾¨Bø¾åí¾UÐ+?B =?Ï??AsP?ÓE޽ûF£¾v¤ð?ÜuÅ¿©HZ¾®² ?,»0¾¡‡N¾Ø¿ž??>G?M¤3?3ÕHy?ñô>ÐÖʾ©J€?Ït¾ƒ°n¾gLÁ?O# >å.ú¿ ÎÚ?äÚA? ¾xâ€?Asw?B=¾˜Á\?2a‹¾¯L侨_å?-F?Öv€¿I¾×#\¿ŸÖ‡<ÌÌ@¾©v®?Rc}?<´>öUµ?Mrj?)hþ¾³,<¿—m0¾˜¾ìö…?$²…?/t¾ƒ+¾e°L?Ú§¦¾·˜?4TT¾Fö(½ù¯¾SÀ¾e­«?mݾk{-¾šÂ¶?ȯ³¾ô.?;Gõ½þÌ’¾¹ý!¿‘óF¾µÀc¾“ p¾˜¸?;å>?I\ž¸D9¾j/V¿‘ù ¾Ú?ó¾s–<·?V‡? P?8£Í¾ôâ ¾z/®¾£<¾qß¾¹¤–¾Ó$î?QŒT¾ƒín?!Dÿ?*Ž?’š?Ü??'·¾×æ?5M ¾¢wz?’P¾¡¬?M-%¾º´?*€u¾+Gh?4öï?Üg©?+ï?.Àg?Ê ¿dL?kÌ?\=ö¾f¼?Ã쾇_»?â?澎\{¿ªÓ ?4ôоžUÿ¾´ñè¾SÐ?2X¾žñV¾µ•f?Eµ³?(÷˜?;6L?¢¾•¿¾?J¸9?O±f?Ôç¾Óµ¾ÌY¤?V¤¿/ö^¾^ñ?^^i? 8¬?.¦ˆ?*ä#¿¬Rü¾›¦4?<œ?(]2?Ìç«?HÃÜ>þÉ ?;š4?_Û¾œ?+m+? xƾÅõð¾©[m¾Ì­k?$†?I^¾¿™?PžŠ?3Õ¼?D~û¾œœÆ¾Ád¿ž&x¾ºy¾˜Ó6¾B¦?,ª@öX²Bå=X@í˜ó¾ñ™§?ÍQ?Γ®?(÷ž?,ÒŽ?<·^@•Û?A²ùvA…¿@–Í©¾W‹ì?+¶2¾w´?1*¼¾‹öp¿«…˜F ¾Æ¾OÉ/?.P¾ø6¿F?1å±?,1$?Æ ¾œã ?ã³ø¾ªäš?;qÇ¿•‹¿¾…Õž>×”+¾Ÿ²¼¾˜iÔ?M:?* ¤¾uÅP?û,¶¾—’½?)Zs¾À½â?LP¾­³¿¯ëT?HV<¿‘â¾Æ@¡?<ÿ,¾±¤¾Œ»$?¥’?*†¾95]¿™í‚>ëxŠ?H۽篾wc¿˜VÚ¾‡&̾Šüë¾™©¿¯‚A¾s»*?HW7?kÂ.¾¿2g¾¾FG¾,ÝX?M©‘?6à¿›áY?4æñ¾²lk?K¿K?#¶¿ ¾¤ ?9äì½èÙ;ðpb?V»?Dr±?>{ ?%\Ò¿’<•¾Û¢?/›¶?œhÜ?c?Vµ¾›RÆ?!—ÿ¿™¸¿¢3ß¿¥Ë?%}Ͼ•V??¸W?$ì€?9²÷?26+¾U9?/G¾³la?Ó£b¿mp?8¨?Qd5?;ô^¾°j¾j¬?‹? y~?.Ïq?FZ?µe?&e›¿°é_¿ľ”“û¾g q¾¥\r¾´!¾Tà? ·?áÔ¾ÎØÂ??Ÿ?P#¥¾ðgd?M ¦¾›î¾“º‡?:±ð?RÍ=¾‘Öf?%¦ ¾¯Û²?/†ô¿ž~q@ S%C {ú@s35¾Q ?(?8DÒ¿µOÄ?O±¥?Î:@¸$•@—˜?+¦?+àk¾Ì!†½°á¾MØû¾UE¢¾OT…¾Ò[q?áf ¾ö¥^>ð…¾7gò¾ˆÉH¾ŒèV¾¢ÿK?8øR½×7°¾‘û¼?ÛV¾¬¥ú?Bëä?<‹ª>Ò„>£ëz@gÏ¿º_Æ?2W­¾šø ¾‚&©¿ Eˆ¾±Þ?2åX?0¢? ?9ˆv¾lΚ¾*“¾ž\æ¾;ÿî?@®¾DÈ?+c뿟J𾑠?"+r?GÑú?Ù™(?8”H?4C«¾‰OÊ? ø?$¶ñ?¥z¾’|?¬Ú?8Æ¿w0?ë?¼½®¼¾s€ ?.‡µ½×í7?&xƾ'’?Gc=>°?u< ?k?³¾‡Îо‚Kæ?)“®?N£æ¾Ÿö?2H;¿—œý?hñ?IÓ?>k¿Yg?:¯¾¥GX? é¿ [þ?4™±¾Ppˆ?C¹¿¾Áÿ?Qu?Q…¦¾u[~¾•¶·?CË??šù¾ofL¾©mF?Q¾hèD¿”\­¾§Z`?ið¿C6¾€ÿß¿”ûr?CÄ’¾|@"?*c´¾…±à?O(ó¾”È ¿žo&¾Šs?Äoš½´ô;¿žÇ?1ü¾‹־ͽÊ?5ç:¾’#ú¾NÀ¿¢ê>¬Þo¾œ`¾š)À?戶?¨ä¾²W!¾½^´?U¤?4*?:Ú&?¿Ø¾¨z?2|ê?0%'?‚8?/•̾2¯»¾Êåé¾–Sì¿¥nÚ¿¬ (?ÃÈŽ?*÷¾’L§?Ò'¾Üön¾³½Ý¾¨;Ã?UKˆ?X¶¾ ´?ô1??¶Š?ÍÕÞ¾ ÆG¿«5B?9¸ö?;¿<¾Iœ5¾Ž{(?ל3?卑¾œH@?:£‹¾¤~D?7á‘?-Õ|¿ždV¾.Œõ?;#ú?=Ë?5ö_?&)¾-#ã?.@ƾu4?Kܾ:T¢>‰®x¾/Tã?ßÄ?I„$¾ëþ°¾‹oÖ?4Õ?ؼ@%ð¾} <¾°q\¿ªlò?Ïž?7NP?; F?}Î?‰n¶¾ŽÜ?O;SÙ?;§>?ËôÔ?3¨»¿Ÿ'˜¾G\ì?;8«?#ON¾·¿f¾ ãœ¿ž±þ?.W{¿ŸÀÿ¾@Wq¾T<š?#”t?@úù¾Qþ¿£1B?ÂqÙ?0»â?7ëR¾¾z>JxÓ?ÐL´?+^¾cf?%X®?8¾ˆ‰ú¿ªdý¾iœÞ¿¡ H?;|¾ Az?âú]?%ÿÉ?-ü¾±Ô¬?J3Ᾱ؃?3~?Ó²t?9ïÓ¾™© >¸¹C¾°Ä¾PgM¿„¨V¾£lˆ¾„y?4êÊ?Hày>¿*¾(þ¾wŒý¿’Õí¾Á1 ?aïп›ú¾Žì6¿ yò¾WY«?j³³¿¦Ú‰¾= ?.:2¾¬y¾Ä´?4–ò?@ d?"³?Rž!¾œÃ¼¾ö8à¾9¥Ò?O\x¾ w§?L‹Ä¾t–¾‹:f?>‚‡?1Š¿Ÿmr?XŸv¾«¿b?= ?Nî?=Ý’¾—¦"?@¿Ø¾±¨t?E„U¾¨A¾´ÍR?7ö?Ç ¾2é¾åöä?Iß¾©ã¾f n?в}¿‹Ù¦¾–s¾¤c½¾¦<˾Rbø¾¡h¨¾Ò‡ª?Û3?Bc²¾’ÉB¾övø¾EHð¾]c?#X¾?‹w?¦ $¾YĬ¾‚$ ¾;Ä&?FâS¾É2¾­‹ü¾UËè?ÂÔW?\…9?,ö ¾o[¾ G`?P5&¾‘l?2Ý€¾ÝÇZ?däO¾·ñþ¾…bd?Mrõ¾waê¾²v8¾{fÕ?ŧ¾¶,¾Å6n¾yÝg?)¾ò?½Ö?Ç O¾6R>?Ô–?×ÊÉÀ 0û?8iÏ?è$"?Y\A¿§Ͼ…ð?&«?'Lü¾d<¾hgw¿­ ú?0¦ø?Mfw¾jµn¾–]¾™Eê?Hü‚¾¿'¦?5'P¾0*ú¾È :¾Opæ?5b‚?Nk:?|Ò?OH>Èz?Z%,?È)?Õ6W?Öú€¾L„?Rþ¿ k³½©w‘¾”bá¾ ‰œ?ß@ ?âåi¿—º¾š®b?2(¿»}L?@¿ô¾˜ Ÿ¿£od?-);Ó0J¾›o?F¾Í i?I¸[¿PÒ?4ß½?æáœ¾j'¦¾ý„4?F%¼¾žª¾£cÖ?9y¿›ö­¿©Ñø¾Ÿ0?à|¾Þ§‹¿§†?¥l²?P¿®Šè¿—Ф¿°„F¾oðn?å…+¾v‹ž¾äsò¾€!ξÖ#?ç¾lMž¾¸Ô¿¸ w?n¿ õ?RK?2Þ¿é ¾CâÔ¾“3ó?1ú¾€5­¿s’l?óè?Ûç?E`/¾»ñx?5[¸?(Á"?B§¿çt¾•8¾u¯‚?Ø€‡¾Vé~?:¡M?Bk ?GU¿œ~?ת¾ƒjÖ¾’Ër¿’Ú?<3‘?(¾¾¶ì9?9\µ¾rʃ¾Ç2þ¾º’x¾Úø?䊂¾_éE¾Ž±þ¾AB×?0Aˆ?5.w¾–»(¾…Ø ??Ëœ¿áؾl±¾£_?=B‚¾Œüª>ˣݾ‹õ$??`?P9û¾Ÿ¡ô¾9bÀˆÀ,–u¾Ÿ±}?[Ûy¾ÏCy¾-³i?‹"?@²D¿©nè?K“ȾèMO?®ö? ºÖ¾‡uÜ?Aà8?°Y?? ?•m?.¿à¾?±Ì¾¯&"?@Uh¾4m³?QÅg?=´h¾‚êY¾„¯„>¾1ɾå`¸?!‚á?A'^¾Ëg‚?"í¡¿š ‘¾›À$?3vV?þÆ?&Jw¾ _þHúO¾|°P¾´îF?FJ\¾©®„¾¨‚¾Å,¶¾«ÿ4@ÎÚlA ô%?Á§ú? ~ö¾µ¾Ä¾0Õí?þò?ÚØ ?9¼Ì¾‘ÎŽ?=î¾Q~È?b€¾ñ´¾“sý?ÎÂC?3w¡¿¢ÖH¾™ið¿” Ñ?S¾¾Óì&¾ÈƒH¾æ´?:Øå¾‚sƾƒÕk¾‰Wƒ¾d­„?é©k¾‹6¾¿’?+°?ÈÙ缸À?º’>òóp?=²?¾…~¿h0¾V¾‘¾ Ö? œ¾ÛM?‹ ˆ¾ùÒ¢¾Æd—?êæ¾àè‘?âg€???d?X¾¿¡²¿¥ò¾Ê™ú¾#¤?4¨¾ à¦¾P„$?5‡F¾›­¶?=Âô¾ãR?¿f±?E㪾ťô?Xb¾&|Ò¿®„•¾‹Û?K‘¸?΂?.”B ÏBr?„?€ô?·$?#‡È¾™©Ô¿w„?--P>º§D¾0¸ø?8o—?Bny¿—¡‹?0,x¿š—+¾²ï¾52{?5N¿Üó¾‰y<¾ ïÊ?)´½?J,оÍG¾7eì?'Ü^?‡Ž6?+Yr?2Üê¾”-Ü?D`¾ÌäH¾"µ£›”?8¾·æ¼?Ü–Ž?Éò¾oâ»?è°?;€—¾¨¾òàŒ¿™õ¤?³„ú¾_·ê?ÓB ?C­ ¾ÊS?C,¾Ûò!¿Ÿ 0?gÁ?R®„¿ÂæÙ?=ü¾„¶0?JÙ¿œ±±¾Ô ~¾·Ál?LIé¾à¨¢?C@?85^¾—"ä¾°0×?7u[¾ãìV¾`3¢¾ª©˜¾¤›ð¿ª'å¿•·¸¾Ì=¾¬?ô¾Äö¾Ÿ2í?f9¾E5?8H¾œ„D¿™¡Ä¾R?B[=¾—H¾¥é£? M? úë¾›QC¾lH ¾‰ÁJ>º‡¼?9”&¾aÿ¾‹¨Å¿ü/?ÏUd?-î^¾½?O’?\¡?Œc¾u”ɾ›‰v? Úº?ÌÕAm0B~ý¹AHÕÎ?TOž?&/L>¿Ä-¾èZܾ¾äÐ?6u~?"¦¾¾CQ?-Äð¾ªÚ𾍅š¾…<º¾}ãf¾Êêñ¾‚±?—?6 e?¥Ô?èo?1©d¾£qª¾¿F?#æQ¾¶ÙÌ?)‚e?ØTa?M¶&?MÉP¾Áµ?+Ï™¾Ç»3?D‰ñ>k˜? |¾¾†þ¾ÞF?Et/¾…Íx¾4\¾š‰¿Àt?9 ¾¥õâ?&žf±¾áã?§°?7f?/„R?Œ,?å=.¾«°? ò?9g¦uŸ?5»ý?‡?95ð¾óÞݾ©;b¾ñä¿—¬º?GtÁ?@¦]¾‹y?ä ¾:Ô;?EÛû?Q†&?¶ÝCnzCšÌã?àw£¾È龿˜¾˜X?4œÆ¿¨Þ°?;0¬?8hã¾Í0¬¿¦p´>¦`Ô?9l3¿”Û ¿Éɨ?Õ¿¡r6?GaÖ¾,¦†?Jr;¾ %e½Jqð¾ƒè̾Š"æ?0ÜÀÝ¿§ù¼?SÁL?/©>¾‡$Â?Ü6½É¦6¾©&„?F¬\¾z¤ª¿›3?-uv¾y·¾0 z¾¯æg¾ƒÝR?Nf`¿—î¾³¥¾Ÿ#µÀ "{¾]šÆ?i?Fð½íq.¿ª?8$?Eð!?Md¾bÉp?)(K?Ð&Ë?C¨e?2-󾂑ƾ²¤«?¨…½ã;¡"¾ÇÿV¾›dœ¾·óÀ?;;?Q‹¾aûü¾¯"k¾Ï'?ÓŒg½ìŒt?žS¾Œ K¿¥þ½¾¦úŽ¾Ì»®¾Ç!$?x¾€T?ôÐ?Tr뾇‚¿?I<¿§…¾—kü¾³½¼¾†rÎ?3<©?D ¿®­9¿“̘?Ä Ï?//{? „Ú¾Dy+?,–2?'ÄÜ?Gܾ¾Q«Ï¿•œ?áô¾õ[?;'R¾‰_ü?&o]?R¿±2¹¾‡„6?^h?4}œ¾‹çb¿›l¾·×N? >>¾i†¾N«"?%·I?@Nú¾€6A¾ºî¾Ÿ/ê?éêB°Ý‘B"|¾ŒŸ†?¢?ëO[¾ÞƒJ¾XkK?É®¡?*õœ?Á¥¾˜þÜ?KEÕ?Hyð¾«hú?7ˆ?¾°оeN¾”O…?#ôÚ?8Õ¾:wü¿•ª?PŒ§?ÕоFòð¾›m&?Ö#?×;¾g(¾=5¾¤d¾|G\¾”ÇØ¾Ý-ˆ?c`?Ó4„¿–<"?Kg¾1ìÚ¾Ò-˜?áAI?Až ¾ƒf*¿«_ö¾s ?<k??õ0?"ž¾£Ⱦƒ²H?=ùÖ?7B’?Ϋ?Cª?ëê?ãžo?IQU¾†ëJ?'µ˜¾*„T¾Ÿ­–¿˜_¾£ºÌ?7 Þ¿‚q¾€UɽÕã¾_qT?,{|¾‘Ãm¾U»_¾EÐC¾Uú¿°ÑÍAk8÷C‡u7?<ëØ¾œè¾R¤6?._f?UR¡¿¥¦µ¿›ã)¾ƒ„¾Z*Ü??ݾЈÚ?×’÷¾½Ò¾™ó¾3ô ?4hØ¿œç…¾!·b¿—œf¿¬Ei¾_¹x½ðë¾&¼ ¿¤»s¾œÖ̾SÕŒ¾Ÿ´è¾¢hÙ?B_ξ¹Þ¤¾zìë?6xG¿ŠOÒ¾a(¿”&ɾx¤«¾zV?ÓyS?=²©?MÝT?Gô0¿šx½œµÓ?-䵿ž š?0uî?L5¾#焾Wp?"Ùž¾¡7Ï?+Z•¾n]Ó¾ w¾‹>–?*µ¾½Ç̾[šf?äŠ?_2˜?θ¾´–4?ØË¿®ô1?×êø¾«c¿¨¾}??Ì$ ?EßE½òØ¿ fœ?ßÎú?G¾¤’à?+BоÁ²¾§šN?P÷€¾Ë²¿ŠÙô?l·?Ž;>ÏDÐ?Åü?Ýô”?9 r¾¤É?û›¾½”á?H¬ý¾‚Ô¥?ݮٿ·ú ?„ô?*bŽ?vEÒ>ø%¾%倿%{?Gå,?Ÿ ¿vξXC,¾ÔçÔ?<Ê\¾]Û’¿•‰?ÓåÁ?&޾‹k‚?¿y‹¾Ÿ%Ô?CI̾Œñ2¾¯žÕ?/0ھɰ&¾?p¾0z½ÿý(?6öBµÈ?ÕÏZ¾‰wî¾ÐÆ?:P¾½¾·œ<¾_T$¾ÜãÚ¾„ó`¿ j?2rî¿•—c¾Ëؾ‡Ò¿¨ù¾»1P¾…'<@)D¾?´ ?#¾žní?y÷?"œI¾Ùæ&À)ç?β®?U¹¾s­Ü?-D@(>=¾|Í3¾²æ*¾˜4ç¾³žå¾l|Ÿ¾®¥¢?E@p?&nž¿n舿½~W¿›¸ü¿§‰Ö?àk?@,,¾ZUM¾E–㾃M¾¤—?*ߊCôØb?L¾˜’¾os@¿¦ß¾`ؾ¦²Ì¾i4«?¥¾-¾‘5b?' æ?²´é?߳῜cP¾ë„r¾eEÚ?I§¾?k㯾ž‚¾þDz?J /¿ ð¿žB¾Ç^Û¿Ÿ8x¾h¾‘ľôPt¾’£¾t?EN!¿šN³?E/K¾S‰ž?ú¾Æžj?IX}¾¡­?#{a¾üj¾*ôš?Ï?u¾w·¸¾‹’¾¦§z?ð뾋y¾²ÞE¾•ᬾˆ0€?#×î¾J`-?;Ìf?é/l? Ëê¾ Øv?,Úµ¾­Œ?Ûùy¾9c5>¡;\¿ ¾v/Ò¾Ù…)?OÁz¾(¹Ê?13û?2º¿Ÿ‰¾Ò8d¾¶ºv¾7L¾§?Z?FÔ(?:dS?0ò¾?5[??qÆ?+)Ǿ#°Ü?(¹?ÔÃ?$â?dHÞ¾’ìü¿n”¾†Ý©?4Ò¾î!í?N m?8‰¾Ÿzü?'6£¿É¿¢tï?G"/?2®?18±¾b)V¾‘®¾™A®?üd?T?Ã7,¾‹î¾¹ø¾c??i§A¾‚U¾Épº?FB²?D+¨¾’xʾ¿Øu?°J?Mÿ~?Ræø?]Íë?8p?Ij+?K™?8†h¾Àÿ ¾^ÛÍAYß2¾=ñ»?#´ì¾hű?â*ª?L²„?,9ì¾ è?:;?SåS¾ÃÒ´?ë¬?2NÑ?Bþ°?'<¾•ÛÌ?+å?5¦Ð=¹2¾‹_ ?ÈÿV?)t)?7J¾Háí¾“k@,Û0¾«?§¾ª›l?<˜¾¿´v¿¯Aþ>÷Ló¾ÿÚ?1Ì_?=¯Ÿ¿œÊ¾Ÿib¾rú¹?2Ù?(Ôƒ¾›¶¿®3?ZÍD?ßp…?&Ðæ?<?.“«?'ïî¿—E´>èb ?L¾ÿ?©ú? óF?؉?ظD¿¤—š?4Ø7¾¨„z?1f¬?EeÍ?4—?¤ð¾°–?ο‰4?%N¸¾yD?3»¾ßT?Lɾ Ÿè?A|ò¾ÉÀü¾o,ª¾‹ãœC¹fÏ?Þ©„?)›0¾›Ø¾eÁ¾rÙÔ¾•õ À‹6?*¤¾”EX¾WV?Q©¦¾”Ym¿—ÚÀ?5M¾ß?K¨€?h£¾;5ð¾z&T?Dz@ÉL¾™‡i?"zr¾l¾‚8?W.<¾°`°¾…Ÿ$?AÍ?Jƒ¾±fH?Gþg?9ºA¿¬åM¾Àù‚>öо3»ä¾­ú´¾!?’?K°?4R¾‘np¿‹‹S¾eÇ?Jݾ,íÿ¾¥¦*?—¾Oq ?òq¾­b0¿Ÿdî?Ksß?*=3?X~”¾Éj´?2î¾ÕU2?%ŸU?4'È?=–¾Á¡V¾4\P¾‡©Û¿žŒ—¾’‚7?/õº?99s¾°ÿL¾º®.¾¥j²¾’Ìô?.¼?,ò?%NÞ?\ U¿¢»&¾Åé¾ ˆ7¾â,x¾ÀD¾›Gq¾Ôp¾ŠÀ ?0m¾ªö‰¾Ð(¾S ?@´??↾TØ @,s¹?ÑA?KN?_eN¾½ľ°?D?F{Ö?@Xƒ?Gî–¾¯Š8¾Ä ¾§ñÎ?W|¢?FE„?=Eý?Qîï?]¿h¾²¡*¾YZ4?I¾»:?ËY>?Ò>?(GÝ¿¦{‹?C»ê?S3„?7gX¾“‚ ¾‹g†¾¨¾oÒ?' ¾gh?2K’?*ãÅ¿» ?*ç¶=bá0?® Ü?.Ò¾?1œ¾—&%?Nº\?0äi?)y?, ’?ÛS뾘k8? z?à»§?"®ƒ¾%%t?9]ß?1â?8B¿’­r¾bü®¾ªØ„?>œç?,7µ?'Ac?GÒœ?Õˆ? ç;OÑÝ?é§²?7Ȭ¿™#ˆ?"̓?2~W¿ª¾‡0|¾ ¢ü¾„zÀ¾ipÅ?DX#? ò?y޾¹a(¾Ã3,¾º#‚¾ b?5ñ¾Ffæ?ÓŒ:>Ù^è?#/x¿<‚l?!¨‰¾ËJè?&ŒÎ?]NB¾¾0À¾ž( ¾ÁZü?e†?æû¾µÄö?*Ql¾’‚w? E2¾˜²4¾Ðùl¿ƒüÒ¾¶—´?DþÁ¿¤´¾žFp¾¢g³?:Mf?B-Ð?ÅÜí¾ˆ€œ?Òÿ¬?Õ¡ ?C(J?JF¾¤¨ ¾€ó¢¾_eq¾zìÜ?Vt¾·v–?'H¾˜¸Ñ?ƒ¬?JØ¢?;¥P¾žÎ?DÇæ¾‚þ?X²¹?E}¿¥hç¾ØMξ§[&>¤ÞÍ?ÊÔ½?ÑIÙ?d°þ?Ðõ¿§§t?T­À§c¿¬®Y½Ö>_¾¦j“?>x9??a²¾Ÿõü¾¾HV¾ÈS,?޾Ÿì"¿­ëD?ÑK‰¾’޾A°¾Ÿå龑ï¾µÏ ?S¿˜¾œŸD?YâÏ?9vô¿£°Ó¾?ßî?* õ¾[Xk¾+ò÷½ö•?(²¿š¤B?\$ž?y@?J†Œ¾¶p¾Žù¾’Ì&¾oià?-º¿™f¾Ô¬8¾£‹¾hí?6Cð?5h¾¥—æ¿®Ú—?,'¾ÜD®¾Š5B?.¨š¾›<¨?Õ<.?:%?)ǾqÒ¾¥|b?Ì5Ö?P„/?ÒŸã?Ræ“¿ Kø?ªÚ¾Vëâ¿”Xû¾ о—½X?=*–¾®C8?:æ$?“P¿ Ú”?YrL?ï·~?/I¾N\ì¾ŸŠ ¾©Ú¥?*Ͼ”zÞ?¼ã¾ž]?+YÅ¿¤Q¡?!m¹¾½N¥¾Ç¬…?5öe¾Î6¨¾„¥ñ¾Ç²?FX?&eÁ¾ÑF¿¾%T@!Ýr?,8ä¾~Dv?D~¿¿¢7%?:{? ™”?ÐÓ¨?/b®¾¶„W¿¥üt¾J¿©¾0?> S¾—̾¥“:¾’ùÀ?OÑ뾓Yn?BˆZ¿¦9ù?3éH¾¶`À?$ƒ?׿t¿’\? 9$?+·?D(l¿¯^?/•V@ ¦ƒ¾›0¾¢dd?\ ¹?= ?Ò¹™¾Á{$>¤çx?ÚÒD¾´Íé>; L>Ø4È?%þ¾Xýj?!y྆2?4rM¾Í5D¾Ì¿í@¿@þì¾Qv¾‹¨?LÇ@¾•ô?6sª?Ðy½óu?á8?·¢z?öÁB¾ŸçʾÒK?E:–¾,œ?Q]U¾+“¿”ù³?^Zp¾ND?j.¾‚Z¾ÎkJ?-jŸ¾†~ݾ âÐ?XD¾vÿX¾¬xX¾È¾Y\ñ¾CŒ?@)/¿¬‡B?H楾Qí¿H™Ê?81?J [>á­'¾°q>?IŸ¾aS¤?Iã¾}Ø!?3£f?/½ó¾¦$¨?½%¬?RÅ?Ⱥ? {ؾŒ±‹¾³RR?$w?u*?e6?4λ>ã?<*.?­<¾ÉR!¿”NÞ?P–F?Éq@?NÇ…?Úåï¾¥[¾4Ê¿¢`‡?·,?-SÌ?Òc?'öŸ¿‹ã?1¯®¿¢ÆÀ?FYü?@ê1?©Î?Y²¾¨:8?8;6¾²p¢¿ã\¾œZÁ¾Ä9<¾‘g‰¾Œ}?Düá¾Àé?°ßQ¾› ð?=Hø?)è¾§ ^?Ûû£¾”P?1оÊF@¾Ò5Í¿ª E¾´ÒL?Tíä?&òl¾q馾Í]?I­’>Âw¼?"ò?+HF¾7‰¾”Ó?TÅð?K(:?Wãì?@áù¾D4?Æ›H¿¯š8¾Ž°¥¾sÊd¾±"H¾ãì$¾†$¹¿¡Y¯¾Ù(U¾Ä 3¾¦b¾º~¾‘f¾À):¾¢¾ÔŒ+¾á‘Ë?À?ýоmV1?= ,¿›!£¿Ÿ­0¾lú,?F˜(¾3læ¾ÏNξS)¢?K;¶¾'ó&?=ÆÒ¾>ÚP?^›š?¤¦?)Íô¾5C®¾šÍœ?[R‘?è×¾dâ´?OD5¾DÖ¾½¿¾M«%¾@H4?N+d¾°¼‘¾1ù¿¢Ó?EÓ?¾¼»]¾•Âx½2ºN¿t/¾•Ÿ¾›YþoD˜?8ÔL?=*s?Dn~¾¸õ¾?S‰9¾”/¾®•Ó¾rt?Ý-¨?4„? L?'’V¿‹j?OêÛ¾¤UX¾¶<¾¤Š|?._†¾#¤É¾n­M?б5¾š=V¾wO/?Ð,4?=cø¾½É ?GYø@'åO? `ä¾ SK¾?¿¿Fö¿·À ×?7ò¾Ÿt1?@àz?ž ¾–ß¾=Yö?*¿¤Ò,¾ˆÿ?0 '¾‰¬¾¶;×?^>„9€6?HMÒ?9û[?BÞ2¾,¦ ?",¾»‘¾Ãá6¾Š®ª¿Ÿò|¿´W6?D›*?7mF?)G?RáO¾A¸?/áY¾l²¿¯äü¾€å¾²2¾–šª¾—A™?2Ó?®Æ?Ü;›0o?4°5?bk?0»„?L‰¾?îc¿š*l?ì8¿³;l¾Ý,9¾Ñ‚ƒ?9yJ?J1?/ü¾¯4T?Тb=º%¸?4zÛ¾nîò?ÔÆ‘¾Ì1-?71b?7Èå¾w¬¿mB¾ºvÐ¿Š²e¾iøx¾o8?bNj?Ýð?1,l?É,¿£/Ÿ¿¢0^?'¢¾|¼˜¿¨²¾¸?Y¨¾ˆDÖ?7(~¾†”@½Û€€¾•%T¾«€Ý¾-‹œ?62·¾–(@?;=¾„Ö?¾X?Öà(¾S‘½â°Í?'½æ?ð8¾|ƒ?) n?AÝ>AHAGX ¾@˜†?ç%=?Ÿf?+ÿ¾‹*•?/P¿¥è?KŒ??'U?)Ã)¾¡0­?åw?8s#?+ué?=µï?GÆ^?9¿²¶?=Bо±ôµ?æþG?>TR¾´¥n?Û‚Š¿¬ÕÍ?K¥û?&|ö?(í ¿”N?9gÔ?®>?N—e¾ºË`¾žûí¾‹è¿—À\?Ùvð?FIÓ¾‡ ®?KR2¾Fe??®¿¬1?C J¿Ÿ=ê?6:=?=Ù¾’J¶¾¡þ°¿—õm? ¾«p:?&L—¾§z¾™~O?4X¾·~º? î¿¢¼•¾§ ¾£é>¾Ô²m>øÇ?=Cæ¾=–?Jq&¿ÀXé?L\ ½Á)D?6©Ö?$ö‹?Ñ?MÝò¾ÐÖ”?-ß¿¥ªV¾eŒ¾¸9¾Rh?!;?"@#‡-?Û¤Ÿ¾B.¿¤è?ÌxÕ¾ªºå¾¤2h¿œäþ¾†?W#G?X×¾“t.?Z{À¿¨®¿«J´¾ßѺ¾Þ)Í?àêY¾ƒÅþ?$Þ?!¥Æ¾¸Fâ?Õ1ß?ÍCÒ½ ”.¿™Fh?.8¾iúD¾®ÝÖ¾]kâ?/оPÜ<¿ª˜û¾w5°?Kò.?ÍîL?׌¾‡{ ¾§kW¿¢.f¾­FÕ?GG?Ý°Ê¾â­Ø¾§a?Äe¿¬,Ë?I‚F?-¤œ¿  ö¿®&\¾·’¾²Ó¯>KN8¾’=?´+¾„{-?ÐV ¾ší…¾ u|>m§`¾ˆ=æ¿¥$þ?<®?ÛŠ[¾Âåö?:ïп›–ܾ™¸¢?2̃?ƒq¾¿K~¾­>^=¾e@¾õ²¿šX¢¿ŽŸT½£hç?V;è¾D$@¾p6¾H ¾«$¿ž‘J¿Ÿ&ß??‰'?K¼:?=øŠ?.ì?Cä,¾“ ¿Qn?,·v¾›Ï3¾_ ‚¿ ¯ ?HÃu?ª? Œ?1^žÇgõ?ßÓï?Q†X¾¥-ë¾–Ç?7ww?&cÜ?;GÓ¾˜èó¿©È]?eY²??µ¾¡÷k¾!H?$í~?ÛÖBÃ% CˆYžt⳿£xŠ?Tg4@T}ð?:vb?;Úö?[c5?;#оrn ¿| ¾ª"¯¾|Ñ?=-î¾¶²V?fye?F¶Å??u?AÖe¾­ô¾“˜P?B˜š?ÐkÐ?Oo‘?-î¾w;è¾í-µ¾û¬ÀÛF?Y3¾¢èü¾¾¾‘…¾eO=¾Å`Ö¾_]徺゚?9?(¾Ê?ʾ½¿ Õ?Gœ?5#¾˜̾–PY¿´N÷¾¥¯ø?9 þ>ß&¾ÏPÖ¾ÁWa¾t§a¾_òÖ¾ºìT?j8¾·Õ¾Íõ?0|Ô¾²Rœ¾¦#{¾¹Ç|?6¢N¿™ \?WÙÿ¾uË·? [–¾r+ ?=³’?Nlˆ?U@è¾ôS¾Ûyˆ?2?–Æ?Dúé¾³ ?2p?Cx?3\™¾¢[?̈?Y´ì?1ÎÆ>L²¾§Žª?¼Ö¾—%„¾æ*í>±¾ÂG!?ùP¿µŸ?áRê?:ñ8¾Gâ?Ðøƒ?FæÔ@Œ@#ln¿Y£?K´?ð¹U¾{£i? ÙC™¾ÂÈ‚¿˜£i<ÉèP?7Æ?8~ñ?Ìb ?Å']?2]Ú¾éÄ’¾ŒÙZ?âBv¾K|ʾ´½œ>áˆN¾•Í‹?M ?-¥û¾šÕ??龤l÷?Ebä?9R¾ÖÚì?%ù×¾ºúk?( ž½ûqÁ?#E?9Ë$¾›Þt¾â?<¯\?G»¿£€¾€2+¾€´ ¿çŽ? ÷J¾°¾bù(¾¾9”¾«@¾Ë£ú¾¬—@¾‰-x?1Ô©?. à>µjR?=ã¾—Îþ¾üÁ? ÄD?Øõ¿¯°4¾ˆÕ†?.}ò¿Ÿí'¾Ú’š¿¨e¦?@6]¾=¼‰¾‚ü.?-ZM¾»?Ky?^¡"?%Ì5¾šÛì?+¾¥Ø}?)nÊ?WØÂ?3x\?;c•¾šâ§¾¥R ?:³:¿Ÿ‡ˆ¾¸x¿›Éà¿Ú†¾¬rP?-TŽ?.Ô°¿´ê.?Þ¯ý?Jb ¿­Ìi?ÒâÝ?3œT?.h?ØJ¼¾—Æ„¾…ð.?@}Þ¾•ù2¾x3{¾]ƾÍð„?ë ?’8¿¾âMÖ?4YÒ?P >?=[оØé?=vš?&'?7zý¾ÙK}¾¿¸¾»6¾b?0š¹?3I¾—†r?*³?Îlå¾§ÿ¦¿® ?@d¿&óê?£–?Ö4¾m?Šq?½¬¾Ëi˜?=b”¾µèf¾‹I¾¾S›ð¾™¾~øD?ÊÓr?.m›¾\_t>Çaq¾«Öè¾Ã÷ܾy½r?p?:œT¿šÜÂ?D]'?< £¾\E¯?’É?JïY?7{?:4"¿£iª>5Õ ¾Ôó¾°Î@¿C?MÔ¦½Ø¾™¾ÆÈÓ?¤|ؾ_ކ?D?.…j¾%yQ¾–ô¾e­-?N¹¾–ju¾±Ø¾´–@?5bp?Ê?U…¹¿ Ï¾jµý¾·1j¾—š¸¾f-{¾´ÄÚ¿¦Ð&¾¥wð¾o‘?8bz?<3¾¿Žòȼ®¥Ä¾èò?VÖ˾œ»d?¿’d?gö ¿¸%?8;?c¿?%xõ¾¦.¹¾¡v?C¯&?JÌ ?:'“?Ü,S?{?5U?44¿¿‰?!?Fx?!þ ¾—J?-p¼?+îÀ?*d´¾ÌK6?U?":¾¿ÈŽ¿¥½>Øš?ÎÅg?χ?D/¾–ãܾ·œì?Ïn\?冿?/\?WîW¾®Õ¸¾þg?/;Ã?>6é¾®ˆò¾ª”F¿²G½†Â¾Î4=?ÅV¾ç”޾‡¾Åû€¾Üô?ŸF?%~¿¬ê?4Ð?+ª¾°·Ê?1c¢?2Î;¾¦š?=®?ÎÛN?×=¡¾„Ïî¾£‰1?)ôL?QÿƾÂÚ?46ˆ?Ò“_?JY™¾ÓÊâ?Ì’?+P¸¾µ›¾±3à?ÑA¾ Á?rŒ?ºµb?à¿B¾’úœ?K¹ý?JÃr?$ET?à¢Î¾Á¸P? Xk¾ ç¾Áš ¾âDà?-'?1^w¾»‚B?‘9¿§Öヌý’@"Û‘? é?Õx?!Ó2¿ŸìÇ-?Ef?/U•½óVJ¾ÜGâ?CA¾™†?6E¾?áùp¿¸6¾¨Ñ÷?:±?DØ?૨?'È&>ù$¾Xn? áî¾éÇ*?m¿›’x?&ú^¾ãÎG¾1ÏO?)6æ>ñk®? àî?-Ž&?'©«¿Ÿ—í?Æ.Þ¾ŠL?æ_ä?Küý?'Ǻ?+»B?×J&? ±‰?7yݾ¯>?@5<¾ãu|¾Xº»?7Yå¾¶P?åö?cÖò¾Ê¥Ì?D­·?8G?Cþ…¾¤9Ÿ?AÏQ?46¾ÜL[?"é§¾£²ô?,§ò¿©m#?9 ˜>H®€¾àw¿ž_v¿¤Ûw?d—¯¾A#-?@^§¾É’÷¾l;¾wÉ ?GÛv?b‘u?Ôð¶¾²5F?D$¾w—Œ¾zU¾%îý?4mŽ?9l¾–áP¾šH#¾’óv?,従d{¾nT7¾LÞe?Õù*?‰¦?Dfѽñ;N?7Û&¾·f?:T¾|ê?+‡¼¾—*¾†õ¿£¥½¾cýˆ¾†ó¾6Ö(?3†¾€âÔ¾Þ[¾‡¾)a¾VÛú?Îñ£¾­Ê?0M?Ø æ½ë¬~¿»­K¿Þ›?;‡¾£3@¿£Z?<]¾«ê”¾Ô&ö?âɺ?TA? A¬>õã¼¾-g¾P–¾ÈË¿’2 ¾´<«¾„lú¾‚Ï·?æ¿«y¦?&¤Y¿¥e ¾´ù¿±3¾¬Â°¾‹SŠ?4‚w¾—Fì¾j;|¾;H?Q=‡>±Œv?9¦?3;È?1Ü^?4…?.¾¾‹Ãk¾©Ãö¾¢Åä?;Az@.¹U?2?̾ªžÑ?4 ¾®ú\¾‹l?Ú€0?/vß?2`V?&Íö¾ƒü¾|q¤¾£ãb?-…à?$Æ™¾Zþ®?év¾±b”¾­Úо§ø>¿?ó¾™À?$Œ¾Œê”¾µ›¾–¾?'‚®?$z­?<ßV?<êÍ?0¤K¾ªùÒ?9†î?ݪi?0©@¾+š+?-4t?%<1?/*x?4`.?HÜ8?3ØF¾ÄÓÎ@Z¨¾›V¿«vå¾í¾ŽŠt¿­zJ?â¡? :@>SÿX?-µâ?âÉ?Û™¾ÎLú¾tÖJ¿œ?(I7¿µ¸?&Á ?9Ä(¾÷7D¾h5Ù?5ÃÆ?;G>¿£|s¾ý?@–¾‹C¨¾Ëçm?Õ?W¾”Xß?Àõ¾³~?a/ʾ¨nп¹?:¾?ÍÁ ?Ý3>¿§Úð?'Ê?0ëŽ?ξ?>9^¾€??·E¾ øê?W??5<8¾ha¾ÌSè¾AÍ?1Û\¾|mº?ò¹??^"¾mPp¾y#†¿Îi‚?0€·¾·²Î¾¯Ë¼?@?ïI?Õ8â?PÊÖ? êl¾±wö¾ØÄ?6‹¾Uú濎?D^Å¿œï†½òÁó?JYŽ?:Ùf?'xV¾´B»¾P*Ù¾]g¾"  ?NW=?4夾2“À¿­à¾Þ=*?Kð¾kŠV¾3\?2Xe?%X ?¡”¾ %¾°d"?Lf?<}Ⱦ=n‰¾vÏØ¾ªì¾®½R?ÂÊ+?C¤1?A@}¾n[¾ºÕ^½Ù0‡?.T?D?À?;å©?-êð?_Ô®¿¥Ø·¾ÈÓ.>´»“¾â:¿¡2Ì?J޾ýº'?Sº?;‡„¾…þ?R‚Š?/Œú?Qëé¾q"?3 q¾¦r¾“RH?'Bì@&Âî¾ð`4?âɾfpã½éò¾9Ä„?Aì>ï²À?/®'?I…†?Ý›’?Kf˾”ÝÒ¾Mk\¾*[o?#·ý¾Žf”?"Õ"¿£Z5? ƒë¾ƒ-”?"1H¾¿¶¾Wø?åêÖ?3"ô?8ü@#¦¾ŠW ¿ ˆœ?? Ml?s ?š¿h¾ ©%¾¯—4¾ÑÙ¾®í,@%P¾Šàš?0j¾œ?02:¾„x¾g!]¾w®¾Ø :?Dt©?Cý§¾W㎾€ö&?Yò?7ê¾\ó?´¾?Dç?>V¾ÏÙ†¿¤ëÙ¾PÄ@?2-h?4xþ?Љ?;û|?Ác? ¾®¨¥¾/c‘¾AI?:€½Ó¨t¾Áˆ›?*e´@+ä|?¡—?©`¾¢™Æ?:—¾‹pì¿»¾§‡p?9¾“è?OèØ¾ÈŨ¿®[e¾ˆ?/“ñ?CNY¾°ë?=÷´?Þe%¾‹bÚ¾~dÞ¾¾†¾ª…J?O¾§ `¿ª¿|?3pî?8ª\?%çö?Œò?%êÔ¾û’#¾)ëæ?(ì<¿—Ìì?3?EEß?4о‘³Ð?ÉG ¾oF쿱D›?;#§¾2>¬H ?X ?Jºç?ÐÓâ¾¼Ð?)d¯¾®O–¾§'Û?"Ê8¾Ÿ;Q?L4 ?.ÆR?H "¿ ‚d=Ò©`¾»h?Ñ+Ú¾) ‰¾Iôk¾ƒšÊ¾'š[¾g[ª¾“™÷»×‚ ¾™Q“?M5¶?#÷ò?B¾Í°?4eg?0(r¿–è ?c¶¾i$¾Œ-6¿¾ ?AE¾Ëîk¾±-*?;#̾.…Ú¾È(º?;Ué?N†¸¾½R¿¢Ÿª?9«:¾²Ð¿ *ü?ÌŒs?0Ù?;¦ü?\Âþ¾H§Ú¾“Ì‹?)°?Ù–Œ¾©×ò¾¡Oá¾–„Q?Õšm¾\ôç?4?8]¾‹Ké¿îÊ?Iœé¾¾A¿?‹?Dª¾¿7?%´?PÇ?OÑ?˜? [.?² ¾™êŠ?ê_?#w? _™?*ª«¾Ï÷??Ï`?=E澑Œ.¾uÁD¾LÙ?ÃÖ?7© ¾¬l¾¾¯h?$ÁľqÑi?<¿¡‡Ñ?ா¾’>ðÞ1¾•=¾É}¾¤•«¾¾Ñ,¾Æg¾åj?U—¾yÔ*?I=¾ÚHB¾Â‹¾¯4€?Šœ¾ÑA¾˜¶¾?·­˜?$R¾˜n¯¾n$ú¿©1?9zÛ¾´Dx¾žË ¾À•¾¦¾ž¾'?›î?¾”p½¾mc~??=Á¾‹2h? 侂ˉ? \8¿®À?H£?@¶¿²~ ?P@¾™z^¿¢¥A?Kì?1 c?Ž>¿—Þ?? t¿›Ç?É›P?:Dä?+Aj¾ÁÔæ?2” ¾žS˜¾··7?#ªÄ?2¹ê?6Ö!?528?0öœ¾€Èð¾‘? FT¾‡}ô?ÊB¿¢øÞ?9:H?' H?V)¾Aå„?âð¿®ùr?> 8?9¡?9b‚¾™°?$Ýô?C,”¾Æÿ¿-®¾¸Gç?;r¾¥(|?Ä9s?i”¾È{¤¿ß£?-“?+/:?EÈÚ¾’ ¾3û‚¾•Wš?) ¾†þ¿—:Í?@ÿg?AؾÔ&ú?Ô\ ¾é°»¾¶¨[?9t? 2j?ÈcV¾4¾òŸ¾FÚ?9=?ý8?ª?LÌL¾“[u¿£ÄÔ?è¿È!3?àN?Ù[â½í<”½äæL?U¿j•Ä?K‚œ?T*ô¾Oí³¾ªð²?I(\¾Ø=¾ð{ ?9õ–¿§¨?$B(?Õcí¾cÅv¾»É ¾ž×@¿Dá ¿¨œé?!2?#ºv¾Âò(¿* ö?>§1>”º¸¾ŒAß?3Á†?$Yb¾X­Ú?$3…¾”{8?<äP??i˜?1É?(Iþ¦.?Š.¾Õæz?;¥H¿­Å¾¤(J??-ä?8‹Ù?ËýÐ?3h¢?à|?7A¦?DøÂ?Q¤p¾À„ì?\' ?‘j?Ù@¾m_Ÿ?JªŽ?Ûm?ÒŒ?¼FË?6Vh¾ÎºF¿©qq?=–¾…„?8Gº¾“ù™¾¸Æ±¾±oʾ•ˆ’¿­­Ì¾ê?2à:?àŠ>ñO­¿¥ྮ™½¾µ({?* ¾ ªî?á=E?Ö¦?Â4?0€è?Ôù'?>A!¾…„;?2Wœ¾eˆ?­ö¿µ(?#ô?I1Ö¿§¬Î?HY^?%¼T¾ªp@¾¦C‹¾ÇwÆ?ù?4ºø¾ºï?ªÍ?àRä?6Ãè?ËåC¾å84?›¤¿›"ˆ?Ó"¾Ÿ„†¾Þy=?Eª ¾;‚¾Õ²/¿ $ß¾ŸŠ¡?#ã8?D(ÿ¾§Ïx?!Š€?&Æ…¾|5w?6„¸¾£ùà¾ÛùÊ?Eœó¿¢El¾ÆÍW?%Ý?¿žÅ‰@g"ê?6’¾‡Ñ¾ˆ4M?!Ü"?-/¾ªÃh¾Wk>Ênz?%Ä`¾ ì>?Fÿ¶¾®ù¾¤­>Œ¿—¾‹ín?0à’¾Ê1¼?,ž?ÒõϾ«­?ȯJ¾´˜? 1¿­uê?.ó—¿ 'g¾U+4¾¢ëÙ?0C¢?ÚpT¾Ë¹®?0gj?6ÿh?;eü?W—ñ¿±‡°?!;?Ýœ˜?àÖi>ö»"¾»Ãù¿”/ ?Ýÿù?.†×¾hÕ‹?C®‚?"÷»?0㊾ï•¿«8¾n¦Å?Ìæ?Õݾµ[¾•©¤¿²Õ¾¡”<¾+z¥?ãü ?G¢û?UXؾ³£¸¾•‘?;ò9¾¢3¾7Ì#¿‰Ól¾ˆÿª¾fºî?)ܾÁϾD®\?>s¿¦ƒ¤¾x“྇?b¾ƒmb?EUò?J†ó¾µxÜ¿M?Iw¾ÀV?Nש¾$ƒÛ¾h=è¾w&Y¾ÔÌÒ?!"¾—àÝ¿ªÝ?,|ÿ¿©¾–?Aò½ÐUö?H<®¾ŽÄ?L±d¾„¾ÎâR¾dŸ™?y/?ñ?@iN¿•¤t¿¨¼G¾¢’¾²Ðš?Tk ¾m?Ôˆ¾†-(¾8¤)?+̶¾™?=j?33>¾‘¤š¿[¿?Zèh?EIµ¾Õe¼½éñF? D–¾›3ø?1‡?<ÿ2e¿’%Ð?ÜÖ?9çR¾Œn€¾ÄöI¾¹:õ?/:„¿©µ—¾K§T¾¯  ? Jê?#õ·?F²Ñ?«F?ÈèG¾Â3?:V?(,8?D‹°?.¨?³U¾„;Ýã.>çjG¿”ê_?B|6?EܾÎù¸¾LîÍ¿œ¡¾¾Ž¡Â¾Ž‘?2‡?×4ò?.²6?σ?=‹Ò?Õ¥@?»Y?Þо’›`?!.? jU¾NÃg¾TŸ•¾Ê>?𔿾ÇËþ?2`õ=ÓØ0¾·Û¿›è`?#ýh¿Èd?ŸÉ?é?Ñij@"À«¾¹:–>Ýã¾d? ÌÛ¾‹Nº?*RT?A-¾Ï~¿²â¥¾—·¾«C@@*¾õ?E7›¿˜?LX¾O¤ˆ?)vÔ¾«aÈ?AAÆ?+W¦?âÁ±?6ç¾¼J¾Fô¸¾·M¯¾¨[¾š Ž?<õ¾ï€?³w¾}ÍF¾îrj¾/<=äæ>ûÞ¬?²z¾VÔ\?@¡Ñ?Jó?É)™¾¡²:?&´aAG\ C_@f/?3T?J«e?6«¾»,à??ú;¾y$d?I~?J ?F;x¿½ºî?+DÒ¾Ÿxþ¾›¨¿œ0¯¾Õpˆ?*ú”¾°F—¾IY‘?!t“?8šô?Å¿ò?@$!?:s¬¾ƒ@?)ð¤?Y 1?C×?1ç¾¼ÿL?3óP¾c†?ßVÞ?Û8F?!ì ¾vÃ?@f¹?Ø­Š¾“¾Æ·û?2¡ ¿–—Æ?-Z?9![?ÁÒº?à¤Ü>ºX쾂‡Z¾¦…–?UÒ,¿¦ýá?>àè?CßÔBöCL¥£?Õ{¾šŠg¾­í€¾—]?L§T¿¡§ ¾ §¾^z€?4zC?*\D?ÈÚ|¾¥5º?Kß?Õ"?ÕŽ‚¾ŽFK¿¨–]?ÚeѾλ\¾‰±P?ÄêC?-E:¾˜ ¾™ª>ïh?ÝS?Am¤?4àÉ?²à¶>óA? ç¾¶Bп¨™?Õè¾¾ív>À…”¾Q¤¿©™¾Ã´¾žŠ¿×è:?Õ"œ@$Ç‚AEC«¾°ód?(ì6?IŒä?Bj¾x)¿·p?N†/?2@‹¾Ž˜¾Ÿ[1?,Š.?+"?Ýö­‘?ÑN¸?(<¾¤ï¤¿Œâþ¿ ø"¾fi¾…U¿–H´¾/Ã?Oº<>ï0¸¾ˆW.¾#@¾—>¾6î?.ê¾j%J¾IÈY¾˜<¦¾P¸å¾”Û¨?`§V?»®?y¿v¿ˆ!\?A¹¾„|À¾Ô¾˜÷¢¿¡—T¾iºE½»H4¾€æ?" ê?Hܾ ‹f¾ŸwȾr#¤¾FA¾G‚~¾Êõ¿›0¾T ¾6Zí¾Œ Z¾€%\?Dœ9¾ü î¾0†?5j?i4¾És¿˜j¤?O<ƒ?<ž…¿¢$•>ÿ}¾6QC¾Q:3?€¬¢?@Ҿ׊"?9u? ÑY?A¤Y?Ǧ¾œæÚ¾‘t?B ï?hÙ?;LÝ?*€¾²*¾™™þ½Yd¿­ò†¾ŸË¾¯K{?cC?ÕŽK?&]l?Ö?@Ø¿±|‹?Ø?%'¾¹†õ??”Þ¾±:j?= ¾˜'³¾nïÁ?4 T¾¾ùâ¾Ï? ‡î¾K '¾àƒ¾²D‘¾a’ç?*Ï(¾¡Ü?4^ ?@š*?ç²?$]ª?ç˾«b´¾¸#?F¾h§`?Ðõ?3˜g¾Ú1𾤠O¾'ýо¢Ö¯¾¿ç(Ay%iA$ø?%Šœ¾jÛs¾}?Â?784¾î@ú?"¿/¾±“,¾ˆ£B?8àž¾Á?-oÔ¾™Ñ@¾¦ô¸¾È‘Õ?F' ¾´b¾¢œä¾ÉØ$¾Œп·?=Ûl¾ÆŸØ?Ó/d¿¡’?G°?4þ??a?H‘\¾¤·¾­ë?B×à?0X?u¬?¼óZ`ô¾”Œ¶>Ú,|¾ië±?2𨾡‹¿´0à?§ÝaÀ«À5F?MûT¾’:Ú¾M&¾In?K«¬?)€¿¥œ†¾Qz¾ac ¾‡¼[?-ý?G{?E—¾¾‘9\?8ôS?gñ\¿”ç$?à*7??ÿ!¾y™¾Äªh¿Ÿ³Ò¾…H޾Xæ¾¾k²¿ŠLº¾€Ì?iÙ¾òŒÊ¾Qö¶¿¬’ô¿§ºæ¿GÇŒ¾Tú¶?ÑZC½øxn¾mü±¾µ¥b¾—n›?.&¾êv0?Ä Ã?.ÁÔ¾¯ˆ?+n–?eÁM?Og¾NW^¾¨.ò?ÝTà¾rj}¾Î¯?%–?Ïû¤?ÖNÄ¿&¿¥T‚¾`4À?E°v¾­x’?Ú›o?Õx¾¶Sâ?0Ö,¾›e?7²Ê?ë2¾ƒá}?¥c?¥¿óË?<Û^?íj?Cþl?8Þ²?ˆ,?9ÑV?ÚS?U<ú?hâ=?2"ü¾%Ý3?£ˆ?K,¾™¨?9Ã:?Ô2¾‚j†?-óu?"éR¾™»x?Ó¹ ¾²®T?(ˆÞ?ÛÈÜ?B'j¾žt?3+¹¾Ÿûо—Z¿¨Ï¨¾Óß¾°øÛŸ¾˜ h?"Â7? ¨?ç?M-Æ?Ùjê¾Y{?;6¾0ꄽ¡ÄŒ?ÕÒ@?=Õ­?;¯ã¾Ž”d?[å”?ExÑ?4H?Óc!? ¤¾±EÊ?-a ?Ã`q?áQ ?ÓžJ?TÚä?† ¿™iBq§ÝBëM±?ÎÓ«¾ Ôb?•?6æE¾š‡ ?äh[?Ê,l¾Ég¾Š†y?F´Ò¾ªÀŠ¿èÂ?)Ð|?>éô?&[™Àš?Ö„~¾(þ¼hä@+〾š]Ö¿”ñŽ?,½Ï¿‘‘¾³I•?JǦ¾{µ¾òç(¾(Gt?ÆB|¾¤gØ?ÔC°?i¿•4¿é¾Ö`Ö?KïÌ?ÒL1?; Š¾”öp¾`Û¾¢¤¿¥€?6¯¾°ýÿ?Cëö¾¾¬¨¾ , ¾âªo¿Þ$K¾« &¿œ‹Ä¾|î¿¢A?Fuµ?P™é?/ªè?ûu?HE…¾³jÌ¿¦Œƒ?fØÐ¿³ƒÏ¿•f¾2’?(3€¾º?5æŽ?ÐV;¾—ê??…ƾZ‚›@ Y°¾s´¾ˆxå¾¹7¾èŠð>úƒù?8–Ò?C¯¾¡ò¿£kƒ¾›©}¾$=?5àè?QŽ:?.T8? ?Ñ;Ž?6ìx¾¢…F¾m÷/¿u™–¾û¾¸Zv?°q? ií¾€`¾°ÿ)?¦„?lé¾RÚ?ÅÒ?Ý:Ú¾Îák¾«+ ?Bô¾…V¾·æ’?;¹`?!ÌɾÁ ヌ£ñ¾‹¸Ø?{ˆ?: ¾ð'’¾˜f?Ån?!ÜJ¾° â¿´ƒy?>ª¿¾cÝM?*Zó?+ž@¾±¾w†?, ?0Üë?;W¶?64?·ž¾ªq™?çq?: `>»q‹¿ Gw?øâ>ÓôD?Ūú?JÀ˜? Â? é|?§‡º¾‡Ix¾Ï¢¶¿²p3?Dª´¿™P9?7†t¾X$2?)~¾ñùc¾d–G?*PÆ?w÷¾…1¢@ïH¦B‹Jÿ?$t¿“žÒÝz¾¬L¹¾Ðr ?.Ùù¾û2.?Ƕ??.Jî?I®t¾¸7K?4„v?-š-¾©N€¾×¡H¾Ø ?ͤ{¾®ÑÀ?Ȥp¾šë?@Êî?6?¨d?8\§¾NŽN?2Ðx?ÔCù¾»ª2¾„©€¾•W>¾œŸj?#ç?D’?B †¾ã#Ö¾•, ?7ß¿¥8ì¿4ô½?#ÕX¿˜+.?&‰x¾ìÉ=?7P'?:Ñþ‚;Ô?BpZ?1A6>#õ0¿i?NšÉ?ÕõË¾ÍÆ¾`œÔ?.¬€?%ŸÙ?Ešõ?×w?R_!¾baê?8$¾Bp¾«ÇC?7$~¾n15?Óiï?ÛuÄ?YÿH?àú$¾1²®¿š™Ž¾7«²¾îÊQ?6£¨¾³jÁ?;8Ú¾†¾g##¿›G ¾‘ƒb?RH?>/¨¿˜~Y?\SÏ¿ž¡¿‘’‘?¥¾SF¾¢òŸ¿¢æ¹?6=“¾íª¾¿%ä¾m)3¾³"š?'”ñ?¯š¾@KÂ?57¾8ÌÏ¿ŸÈ´?N n¾‡þ?1ª¿ ñè¿B¾À?` ?“-¾ieç?J•e¾Óö ?–÷¾«¦–?1«‹¾‹>i?$n?Õ&?,?:hÞ?õ?ßž6?z澞§?2»³¾¸b&¾´R¨?/}Á?&–†?0ÏA¿£§®?I¿¾¨q[?:M¼??<?X?9èレœ ¿¡ö¾m.I?ª1¾Ûºj¾ÍÁL?)öÀ?½9¿ #u?=Ÿ'?$mV?*‚?*É7?ᑽ.à?,"g?"«Ä¾–²H¾žç??‹Ø?D#t>¬Û„¾•çf?:l¾–°f¿©•Ó?A|F?1»¸¾üÊ0¾‡­6¾µr?+??VÛ?!??Ó-m>êÐè?Cí>öpL¾¬3\¾¡’¾­P¾?:¢Ÿ¿ŸÏÒ¾ºŽ?A¥!>äMоµwB?Aù?åZp½Ñ2è¾Î°?0ʾ£c*??Ÿ^?EË©?@>P?: ?0S;?Ô ,?ÇÕ ¾‚Éξ°ç¢?:,ƾ²•u?Íc?.ï¾mË"?-è‹?I??Bš¾ñd?à@¾‡[B¾Áf’¾‘ê$?Kóš?Ce*¾ÁD?6˜…?8y3¾žV澊ãd?Í5Q?ÙY&??E¾¾°¹?!2¾»"z?A=x¿£–ž¾­ñÀ>Ñ7¾­½ˆ¾u¶½¾¾ìÒ¾ñLd?ãо½K*?LLù>Ñ™®?8A¾öØ?-‹â? Þà¾å„&?J½û¾æÄ?)q9? #?wœ?• ‘?F‚¿Mü¾pmé?&ùK¾˜?ÜÄ&¾Ýj¾›{$¾¼†2?@ÕÔ¾“Vc¿š ¸¿¦lƾnk6?+uq½ËXµ¾×9?DŸ6¾EW‹¾b‡Ç?AZ¾t®¾BVŠ¿˜FM?`Òè¾qÄ0¿žˆz?=Å??qŸÀ¾èÞ?HäÐ?Êu¾^úÜ?Eø~¿Ó#? n˾xƒ#¾ƒk+¾¯ræ?é¾ßLö¾Z¥:¾Ùl?AÎ"¾GžB?¼jD?Íöy?Øì€¾Œêó?Tü¼¾¥á!?³G侫á^¿­U®?ÏŸš?HÞ̾O²?COi¾†I?>B†¾Ó|?&?O .¾æ¾Y£‘@#Èð¾Ø>?,.ÿ¾"ò–¾6¤¤?"ä§>ûL?C¤1¾€• ¾Âà{¿é À¾›¿4?Ä'¾4„h?fI?Ú×W?C—S?"1n¾‡êƾã|?#m¾’¿É¾žñc¾ž]”?ɇ}?Û ¾z`?Jì?ÙÜ?&Ä?òr¾‰ß™?0QR?ÚÉ©?23@?Í/Ê?;Oh?H|Ö¾y³î?3™D?üf¾‹p? (¿¢„/¾€¨<¾¼Š$¾·G’?"r?N辚ý+¾mhÚ¾F\£?9z—>¾ªT¾^“?;w?-DX? Ù‰?.O¾â?ËŠ°?ËŠ?Á7†?Øyˆ?ƤI?ÒE+?/J8¿û¦?GÆ2¾S?Ê?%âž?á?7+X?-Z辇Œ¿§¶¾ÈÍP¾Ú}¬¾’ÎD?^­ó¾²šÀ¾”à?Aòm?DMñ?Þ5¢¿j~È?6Ãß¾l®m?Ék¬? ¼¿¢#&??6¾ßÕ?)r@/ž?,uÀ?CfÜ¿¢ï?@¿·À¤î¾Ó¯Ø?7M£?8k?Ïîo? Ýu?$|¾=°U¿ŸØq?Ù?8?Ƚ?Í­?9¡À¾àä0?$â¾J42¾¦P´?&)x?#tÄ?OÐH?-˜C¾ªq?@QÅ?Õa}?ãÑ?k0¾ªa‹¾p²H?Ù]‡?Þô?Oqª¿­“L?0i ¿ËÊ?F? k*¾`ÁÒ?Kú?+½#¿˜‹À%K¿m`¾a?(‰í¿–ùã¾:ïÐ?0›¾¤vȾÈb¾`·¨¿’\Z¿šÁç?@·8?4!„¾£òq¾Æ-¾Ä0?[,W¾Hþ©¾U»Ž@?^¾-Žç¾ÛWξ*·¾‘†0?B¿F¾^Zˆ¼Ù{¤?0±¾?𔾉µÑ¾wi ?Dé?>‡*?7f{?RäÓ¾Îß?3i´?4yž™ j?#¾<Å”?.šœ¾•ö2¾Ž_Ò¾©†è?<µ ¾’Å&>ïR³¾‰Ð¢¿ 2¥¿¨?ÒŸ>*‚H¿žq:?/R…? x¾ ¦Û? Ñ9¾sž?Gä)?%²¾g¾KÚw?ÉâݾpvF?Á’Œ¾¬ÛÀ?;x?@ü^?ªw„¾…ñ’¿ž à?4þ¾D¸^¼üü@?BÎ,?)³Ê¾žcX½÷¦j¿’h“¿§BT¾¶ ¿­oª¾Ï¿£¥3?Bà¿›7{?H›?D?@ù„¾›9¿­>S¾›õÌ¾× ¾¸ ?ÏUQ?Ò†?Û×?1³Ÿ¾¹ÕO¿ŸS½¾†ÕO¾ùr7?͵W?(ÄK¿?Ò"¾ªÀ?Úxˆ>úr?*UI¾mb4@V¸?(Œ?9Œ>¿¶¾wN?£*?í+@&_ᄌ ?Å®?`V?Æs[¾Fqµ?G?Am¶@#Ä·?ÌB?)Øn¾½¾üª¸?$q ?4Öx?ào¾™å?D\?>{?1 ¾?:Ä:¾dpq¾Uùb¾ÇA¾J¼?UZ>?MÊ1¾™¢‚?ÕV§¾b†z?Û‚x??Ò&?=`?M†—¾š}ð¾‡v%?QÜ‚?2b?á'š¾Ã¤–?77I¿šëÿ§™Þ¾£ö²?59ô?F´¿žu¾’Îp?Çõz¾ ƒÖ¾oG? dľ©¹,¾È_\¾§Òt?Ñ€Ã?÷¸??áˆ?Ó5±?ÌLî?(xL@#Jï¾£XV?ãtv?E®#?/Xê¾’‹¨¾ã“>ôȈ?5Ù¾·rð¾«Ýi¾´}?7ò¾ŠS¾Š®(¾k?7zÖ?\8¾ÓˆD?X[%?%¬“?.Ë€?Ã/¾ÃOо‰Á¾:¥w¾„+y?Eâ >|4P¾v¸%¾hlj?+{¾«3Ž?5ŽI¾²Ç¹?Ýö ¿­1´?/fh¾•üaâ¾›½¾9!„?3ÚÏ?¼”Ò¾¸$P¾ü_ؾ•ß.?Æø?:½€?C ?Eèû¾›'ð? B¾±+u¾ž6b?2N¿¸ZD?.þ¯?VxnAä¦?:Nf?Q‹ˆ@æ‰?(Ö>?$Â?ø?Qc×?$.d¿¥ç?Aôľ¼%"¾65 ?2…´?êד?._žgx«?]ÎÖ¾¿}ø¾~¯í¿™W?Eè™?0ž½?1·?Cv?]æ(?Õ³¾_Àÿ¾ýf`¾sȇ¾Lz?B£¸? ¾R°? Œ¾–\¿©6?^qJ¿¶0¾GÊŠ?D“˜?8 T?®à¿šþ[¾‘u%¾—ú?4k?@>è?&C¾„J”?ѾhKÙ?.à?%}†¾Ç—Ì?OÝÔ¾¥î?Ra¾àƒ ?ßóL¾¯â¿žh?ú'?E¶?!«ð?G‘ª¾*ú?ï›ä¾…2À??¯Ô?Já¾ËŒØ?-†|?艿ÿÖ?DH”?XdG?(€¾è¾eо³]@¾ªaŠ?(mÀ¾Ezt?É€?7%¿ N½ÏÆ}?1e ?8ŒR¾¢î?ÙÀç?37¾’F8? ¶d?)¢¾hhá?ÙÓÖ?3`ø¾››?&©°¾’¾›>ÆËz?(©ð?(/ø?;6¾Y'e?DE¿h_˜>¦„2¾9•3??DÌ? ?¾¿§?Oaª?'gË¿™ãÄ?Lb§¾#ùt¾Þ°¾€Œà¾Tbx¾>&0?Ž-®½îà?8´½ÜP?Û'£¾¨Ñ;¾‹Á4?2Ü"¾U%£¾ˆ/ÍÀ¶¿‘k5¿X¾ˆA?ID¤?³Ì?áTœ?»ʾڧÌ?­3ø?Ò ¾z×п˜‘®?öö¡?0Ì ¾n#Ò¿‘+o¾ÈO?>rF¾ès&¾¯È]?Àú$¾晾 AK?Ê@Ò¾¨¾‘¤è?*7¨¾²¾ 8?(׬¾*íû?9㵾γƒ¿ªV[?s^¾Au&? .¬?Pkˆ?Ëô¾ž?ÓÑ×?) ×?`æ?Ê?>Þ±?Y¿™dŒ?y?àÒ«¾Òüô¾Ï<¾¤/?¼Ö?/iZ?1ºÎ??[L·?A¾Þ¾¢±N?^:¿œ‡Á=Êì¾î;i?È÷辜Èv¾Ç”d¾Áui?_ÕF?k?PÓçÀ1?å„?Áñº¿´îw¾ÃÞÖ?8d±½êyd>vP?Q ?/ª?M"v¾³Ï˜¾§ø^?×YP?JÓò?¼A¾‹mL?&ÇÝ?)”?ͼÕ??F*?C?&€?$#›¿¾)Ù?Ç,?Iù¼?Ó*¾ƒ¬¾–p¾?,0x¾{=.?È Ä¾’TØ?Úæ?MUA^†?2t¸¾Íã`?Y³î?/»?+ä¾Ä|¨¾”éÖ?Ôyh?JH@?¸YI?Z¼¾?B>¾U+W¿¤è?*??:)?¹/¾íӾ˙-?9˜C¾›t¾‘º?( ó@,ö^?-Ø?Q?¾» ¾È-ô?8Kb?V€W¾¨×?1Eº?Ñwi?:Xj¾´x?Äðf?X 8¾£¾°ž*¿¬m ?D8ʾ‰ÁJ?üN¾›nš?.óN?%½¸çø?Øô?é|t¿©?K|è¾+tÀ(.?œê¡Á?àëØ¾—@z?Ø?×¾µ{W¾9¾‚åñ?Q–h¾•ÿõ¾š±l¾‡ «¿—È}¾^•¾tsÍ?.?Ö¾X6c?(H&¿”Ë:?FéA¾Ÿú€¾• ¿?Aýx¾€»å?_ô¶?3‡"¾;jz¾Ï¾?cuc¾—p¾ ¯0?Ö\?+è­? w¯>Ó…?1T³?{J?)d¤¾ºr ¾¢®?I2µ?OX"?“‰¾…Û¾‰µ³?£ú?·œ?Ò~?%¸.¾&6á?-„œ?´×Ô¿³(?#yŠ?Itf¿’X*?C›¾¬fD?g‘?Øk~??ÚÒ?4§¢?^^ǾŸÖ޾·I?Éž?1r¿§¶)¾½Ad¾×½²?V/?;꾫ËÊ?L€E?ê t?Rž?;V®?ã?+åM?ø?ßÓ¾³°B?ÕoG?,äþ?Q ?Ù§W?Ï[+¾Á3?)h ¿«_?4j=¾ªD¾’ L?!þã?3hü?x¾˜êS¾ÓJ¾³„¾°Ä4?Piˆ¾¶±ü¾ä?"ó$?®k?9bì?þî¿¥…€¾¨Šy? ùW¾–UP?µ i?xq”¾°TF?µÎ?*Þg¾Ž\í?Uï?“Î?Oî?6Ö›?#‹4?Gú†?> á¾6ÈÚ?;Æ?)ge¾Š(g¿¦Ie¾Éõ?áb¡?ÌOh¾§:?Ó ¾‡­æ¾ž³¨?àW?֗ľÍ?Я.¾‘Î?5³–¾½Ê?&ºö?ËD>?3Gä?-G?¿ŸžY?G€¿>낾˜çs¾ˆ÷Ô?"™R?4Ï¥>>?ÆÙu?*°&?Týp?.°A¾kmŠ¾ÍŒ¨?7ûš?EO×@%·Ú¾•‹~?X4A?Õ$ä?,x—¿²+¾¾¦™¬?©ö¾Õ¢à@¶æ?§Â¾²›º?,öÙ¿–ßÐ?*—Ì?ÍâR?)Ÿ°?+¿0?†Ô¾œ…q¿©ï¾Qkê?ÅSm?"¾ƒcz¾ -q¿¡Fþ?0‘Ÿ?0“|¿Š ? W?Ùö¾e%¦?ØA¾‚,Œ?òu¾µÐ—¾Æ‡M¾¢ø¡¾j$~? ? ÿ†¾jBB¾îG’?9ÙÔ?-?pr¾´Zb?$­ã?,7¾ÁsU?1ÿh?ר ?>ؾLl?%2=¾ZÅ?C‚{?R§i¿'8?9ó辤ßò>Õ蘾GÇ,¾ #t?"0Ò?PJ@?×Y¢??„ì¾³P?;Œ¾¼ä¾Ö‹Ï¾½Ãô¾fa¾‘¾o?Ëb«?Õz侬Èx?±Ñ?A¤?È:ݾ€0É?2V?F¬&¾ÌÃü¾vúµ?Ý4¾¡v]?ˆÉ¾¯}ì?ÍO2¿;?#ý>)? £&?Ùvd?.ÏC¿ K¾·Ýa¾Ÿ¡l?”ÝŽ?4ÔJ¿˜¬¾Ê?7”¾Ž[h?Ëܾ”TÒ¿o‰d?BcоèU?19Ž?ÈÆá?5w¾®•¾Œ:°¾’b¾‡Çg?¯3S¾®¢@+ø¾ºð?Ä„?!Ï^?'?B‹å?¢B?ÖU?#Ö?-OT>Ç6~?-â¿?˜î¾¦¾ú?œ?,ï§?Y~?!,ò?Ù88¾Ÿ|$?-› ?²Ÿæ?&w×?:-°¾¿hp?æ¸?'¾p:¾Ôëî¾ÜÐú¾»ñ|?-7€?5˜J?%;?9f ?Ñ™-?F1¾Ij¾ê§p?à¹?!çž?AZ8?9µŸ?UÚ9@ÅI¾ÒËT?]+¾ÌÁd¾ò®É¾ƒzÜ?±R¸?]½?ÅÖ†?:ÝÝ?¡Ì?=r…¾á40?<^ø¾ª†¿“º7?Ö:?+â¾Á9H¾Šœ0¾b¸?6®¾É²D?hG¾«1\¾Ž=<¾ë¦¿¿E‚¾²ú¨¿ |º?¿_?=ˆâ?/ay?Vt¿”®_?D‰È?³ê¿‘—Á¾j$¿žøª¾´Œt?PËv¾kmô?Më¾½¼P¾YJp?)B?GuF?fq¾¼µ?"Eã¾’ìv?DíÅ?SS¾Ý¶?,;Y¾‘­?+h¾F`c¾{Ø?Ö·I?DEe¾Ðò¿•N?1C?ÝÛ¿š©Ÿ?O¨‚¾ŒJå?>´?VUv¾gè&?+Ðø¾˜4¾³õG?!ª"?ÃQü¾ÎhÖ?"!¸¾ƒØÆ?B—ü?%y¿ª  ¾¶è?;ζ?0üæ?Άf¾¬·v?0SÚ?8l[¾ßÌ?ãÊf¾Ð:¾zYê? oØ?YpŸ>åÓ¾7I?+[^@.50¾•|ľ¥ç¾?6)¾—zÓ?G°¾ åT¾P¾¾|s?ý™?LÕô?àÞZ?.âu¿ É‚?T?Æx ¾Æ´?Á?3Ý ?9p¿c6?&m‡?T¾¾éÆ¿IR¾¹”?'Ä㾚øì¾¤<4?Þö?4ïǾŸI? h‡>ÜáÛ?2µ‘?'b¡¾“Š ?6Â?,¾›ÞK¾¦¶¾‰‘Ñ?Û ¾e^?*¾]³?+]!?/_Ç?o޾½‡&?'ˆ¾³/@)?9³?ÏkÞ¾• ö¾ÉZ_¾Ð|j?3÷0?4¼¾|Ⱦ—Îg¾°J?.`?ˆÙ¾‘õö?%ì?Lž4?ÚöÁ?ÚOí? ºÕ?*B?,í*¾µ=š??3¶?JÃR?@0,¾²2?%i¾È~ ¾²á¼?Bo“¾¦òr¾p¨¾…K¾þ¼a¾˜Í¿#‘¾ŸïG?Þ1‘?ÝÉ?N¢˜?Ó„B¾rC¾¾¤r?#*¾©#?>1ü?ÆFä>’>?'«ä¾Ÿ2?"ú¾«‹>ì!”¿«n¾·™2¿²€´?:¥¾Ñòæ?-Zp¿‰Ð»?8¿“‹n¾îê¶¾e8¿°‹Ô¾|¾„Zz?Xg°¾†í辡Ö?_,#?MtÂ>Ðg&?Í›h?J‡I?Y¾x¾ˆPv¾o²-¾Ê?ü¾OÄÿ?~D?kï¾ ±r¾Ho;¾ !?NÙW?D Ð?Gj ¾{Þ?+ÍŒ¾³b*¿‚e`?.N¬>Ò!›¾@ò?A®Ì¾§ôú½Â¤ô¾p |¾sã6¾èœ?SàÞ¿œ«6¾“©¾?:ª¾`]?Ö’¾ ,À?,Ǩ¾×c*?:¨D¾¢×¾?9óK?<À¾læ@èI?׎ð?<˜¾nŠ¿5å?1“Y?Hؾ#ùÀ¾‡:e?Aó?>œ²À¯á?¸¾{iH?ÑÚ?B° ¿ c9?Î"c¾7£.?Ö• ?Q~_?!/Þ?|D?@­\?É.t¿Žûo?bw¾Ó1B?3;?à¢$?[†¾» ?&µ€>ýß‚??,’?ÅY澋LT?.Uð?:©q¿­1 ?c3|?Ëb¿—£è?$ X¿—åº?-ü ?8Põ¾¨V?*o×?²Z­¿`ß?A 6¿¤Ì¹A"9Ÿ½ïªá?Ñ^¾#¸œ>ÿÜà?*¢¿¨ ½¿¡ŽA¾¶Aª?J(·>íüÝ¿› ?/„?S›>ûAò¾Ëü?2 ð¿žþ¾µ¾Ûc*?\J¾=>–?;¾ò?8÷^¾«;b?,’?6>¾¢\¾®A½»…оР ?G–:?d9?0ñ¸>êa`¾^°?Kä?˜Ã?-‡H?Éí?Ò\0?.ãT?Tßø?Us¬?@á¶?-ê=?-©2¾·CN?=/ ?Kœ$?Tèx¾*!?!BX?: %½|O`?P1Ö¾7e¾·c˜¿¡K¾Ôš"¾\éÄ?8ý¾H²?î7¾[Ë ?N1µ?Huÿ¾vøê¾iØ?ËíV¾‹Ü7?HB”½%T?Mì‚?D1ô¾°^Š?¡¢¾«­L¾Öx¾°Æ*?<^?+³Ž¾ˆß*¾œÐ?)û?Ê¢3¾Ž[L¾® ޾CK¿—F¿¶I¾jn?Zð?-¾Ç˜?ø›¿ã?"vî¾Tì„?4“?(œm?a;?/SU?뿯鿾«]†?œ§?:?BU?6Ô“?ÕH£?0Ù×?Mþ·?/1á?>­ë?.ÛÙ?çà쾋H¾‰¦“¾³Õm¾T¨?E³ª¿™}¿¨Ÿä?.c¡¾¬Ö¾¦¸_¾—êÍ¿³]¾‘Œ?Ntñ¾¼ç…?5Ì‚?Füm?ĺ¿ zr?9.;¾ù´?3NÄ?2«¿©­ ?Fqœ¾;?.wè?D6?,­Z?@6?´Â?|??M/??¹[?Ù;¾‘÷o?ÓFï?@«¾¾/0?GÞÁ¾æàÀ¿£ì?;4?ãÂô?Uç_?A4–?Ùj¯?::¾ÏÒ&?$rˆ¾’´<¾' ?8·¾ŠÅD¾·áY?ÖY?E?ã£Í?/ºÜ¾Åú?Í¡ž¾•#侤œž¿§³¾„Š?8š?¾»ß„@k7¶¾ÏE/?Êœ?Ór6?Ij–¾|‰–?Eï½>Òmø?ÖÃ]?æm?5¶Ö¿“fÛ¾UO¹?5 ò¾^8ÿ?¤Ô¾‡KÙ¾ÿ?53¾~ô ¾[x¸¿™kÖ?ÝŸ`?%ó:?HdX¾z´Ì¾ Ç„¾>b?iy¾Âà ¾'k?Ø/«¾7T¾…-¿”xž?å º?$„¼?4óÁ¾‘ªí?(*ß¾¯øÞ?(€?S t?C½ß¿šëu¾“ÏÔ¾·ê¾|“—?> ?@}†?çÏg¾Æ ®?*>£?žU¿¡Mï?­?J±P¾¹#L?'J?6ö\¾o™¾¨q¾d?0(?:ªX¿ îÔ?-û?9Kû¾¼ç~?)ƒ¾UI?VÛ¾2ãE?Ì6?<\–¿­sª¿Ÿ?nøþ?Q5¦?>¢Ò?S÷P?6Bâ¾´0`¾¶£&?D3á?;.ݾtÄ8¿˜íC¾WÁ辋UB?C$Ã?Ò½¾”RŠ?9ÊÞ?Y\¾Š•ª¾¢xý4x?Öf=¾ªe6? T? ¦Q¾žr®?6\ʾçŠU¾Ý…R?2/Ü?ßé?1’¿®@S?8$¼¾®¤À?;d?å³>ïäï>¸‚ž?Çcô¾ÎU¾™ˆð¾œ?Ý´í¾Ó©º?=‘Ú?("v?×h?+?:Šs?9?"ÉÛ¾é-~?Jë?¼¾Ž~оk ç?@çx? Õ¿¬ì,?š¾<¤±?Ͻã?ã®?à¸?"6’?Þ ¾²Z#?'u¾‰Îª?:ÂÍ?6«é·\?åG¾¹D¾oÅ-?Db ?§ú¾Ñ Õ?32?Ú¾°?7 ®¿IVº¾†b¨??#ᾯ4?͵Y?à ?7r‘¾«`¶¾¨ªr¾†'?0CÅ?8è^?#ð¡?"H ?K`¾ƒR¨?3ʾ•9ê?4¹º?Þ¸¾“†?7Ò¤¾i:? ‰E?˜?ØAb?2<¦ @?@~D¾«@ ¾œåü?C½v¾•çi¾YÙC¾Q¼?'Ä_¾–õ¾–&ª¿õ?-c2? `b¾sâ¾eŸ#¾¡ÿH?5RŽ?G‡—¾Â“?ld?De€¾—O6?7SÂ?Lg¿—d¡¾)©?&8ݾ°4O?› ¾ÓáÆ¾„þž¾7Íâ?+ŠH½ï!¿Ê%?"X¿«‘g?Göƒ¾ˆ?*¢7?3®?HK?Aú}?O¡ ?5_¾È¤=*6p?0õ¿?:YÒ?:¾Ó?"£2¾iñü?Þˆ?N¾´ú ?;S‹>ö—I¾Vàé¾»£>¾zm(¾Êÿæ½<4࿚‰^¾?GJ? øÎ?=)¾®€&?-‘¿–Ò¾Ô\¿¤a‹?Iß?6!Ѿ¿Ý(?) Þ¾®B¾Ã,¸?0ûÕ?19D¾Ñ{z¿©Pv?¬·@-$M?+œA?9Hr?"Hµ¾¿äš¾¦ƒG¾¾’˜?Q‚i¾…Ó\? ˆ$¾EB¾où>AQ8¾­+j¿.Í;¾‰¦?l—¾žzü?+4¾A (¿¦¬¢?C-¿ê~¾•º¾ìô̾ÁÊn?DË꾪<õ?Û;?ÏÖÖ¾¢:´¾‚Ý‚¾ÆŸª¾ ³—?Jv?#"æ?&Ã7?Çþö?Í)?C {¾­…”?;µ4?;E´¿·JÛ?lF>ë7?1fû?Þ`ë?Òcm?ã@¾öj?$ñ;¾¶3ê?æq¾¶›¾ßHâ¾vùe?Ôó>‰àù?%F꾨¹Œ?,}x?#㒾ݱ?7šN?”¶6?:D?©¾µÃ ¾pÖ?@ë?K"]¾…œ?Ëd‚¾·X?Ù$<¾Ç÷.¾¦Ä†?Ö츾Z‡›?ÌÉX?Î'?¿Ü¾Ìµ ¾Ðž?2 ê?Ðh±¾o£ø¾¬ƒ&?³Þ?!g‘?† ?ÂÞ?ÐÒñ?VÙµÀÛ뾕{N?%^¾Ÿ<É?ÑzW¿¶?" ¾&bþ¾Ô R?;ÝV¾­· ?%+?6œž?Í徬þZ?´¬ð?»¹D¿ :¾žÙ¾i¿šBó?Wé+¾ƒáú¿œ~Ä?#û¾~–œ?8Jë¾¾¸Ñ?I¨¾yŒ:¾w¢}?ܶ¾x›b?.[¶?ñ%<¾†Ò$¿¶ÕÝ¿ŸŒÓ?F-?:9 ¾‹ýÔ?J/&¾,á5¾lç俬:³?0¹Ì¾‰·v?7:’?F)?íOϾ¸3J¿ª Ǿ7È2¾´Ÿ1?1D ¾Sᆾ29t¾¨Å„¾‰M6?~§¿¯W›@»Ë?'zP¾i‘ô?¶À?<Ä’¾¡ù:?Ñ,:¾¯.ܾ/i¾u²M?>*=ØœÈ?=³2¾’äT¾´W¸¾€Ž?&Øø¾Ðfá??G^?F…¤?7Ð ?DnL?ÐòY¾Žzü? ãs¾¤«(¾ƒ'¾VŠ?Ð/U?Úö~?!¾?ç:?+ä>ë|¿¨ÿ ¾ÏfD?)¸,? )À¿ªa¾q„/>¥Ž$>ôY×¾•'F?DhP?, …¾`cÿ¾é[F?Ymd¾†>Å?,¥r?0M„¾‹Ã^?*§Ø?&‘?Jœ?¿¡¾=à˜?3ïC?%±P@(µh?Ñe>΄?A l¿Ÿ Ô?Ön7?\Ør@-¢|¿³/C?!”€¾q5Ê?Lÿ¾×„t?ÍC|?1E¾Â±ô¾§Ÿ?-«??"4¾’×U¾5ʾʰ|? ª|?$/8?N}—? ‘Ö?Í>¥{?ãªI¾Ú2?ÏjM?)X—?6ßn¾ŸJ)@Ê?IÞ¾CîÒ?—‰ ?R³ú?Am?¼? Ì?Q? ¾´®Ê¾v€5?  Ô¾ùVj?Ӵ̾—cƒ?9,§?ÓØƒ?Ͳ¾È3?èü?%õÖ¾¬|?(r?G¼?óÀ>ù'¾šL¾µš‚?Gó ?&Ã[?HûºÊ?*©`¾Y\D?=h¿žúN#¾¬*Ö¾—e¾+c¾†ä?gý¾M–Î?E“k?1KB?I˜F?#“¹¾\2ì¾G…¿²¼„?=™F?Ì”+?2kH?5! ¾·ü¾–R¾·ãì¾!¾ž—†? 1Ï¿«L¾¾F?¿²\Í?PÒÿ¿­>œ¾Ufü?:Lp?Dij¿ª7?8Ro¾z瘾P÷”¿µ½0¾i¶Ï?Ü7ξ}—?<;?<;¼>øÆ ¾> ¾·6#?.„¾Öo ¿°›†¾©ã^?3Jó?42?J‡T¾‡³Ö¾Çó?·xǾ-\_¾åiæ¿£²H¾ÜÏK¿¢€m?ľ¾l[À¾rÂ4¾iIæ?æ•-?@Úm¾‡uÁ]?3æ\¾I@?Ñ9¶?K4¾<Ö?Ô¹ž@%â7?§6ü¾£ýÞ?ø¸?FÓt¾™<¼?8tç?›—:¾žP¦¾Ÿ¾Ïå¾sTü?UF?Ææß?â™#¾shNÎ>Å ??²û?3vˆ¾ÑH†¿°cc?Ð`¯?EÓ?!ú¾šÛå¾…3;¾ÒÏ ?GI²?!=?ß=?-jã¾ôÔ¿”×?'ò¾®\¾¯Ê-?7(à?Z§\? ¾ÉV*?7?é%<Ƽ@¿¾´n«?B´u¾›×®¾È´¾LH†¾ttò¾ƒ¬¥¾§m9?H²N?Bêi¾žì°?7û?9ÚM?.ÑB?PŒ¾E ²¾t@¬?=4v?7’?0Ûf¾§Æû¿¤ñ]¾F–?ÑàI?9?ò¾…C ?"e0¾ý¢f¾¦ú°¾Œè°¾³‰>¾ Õ“?Mâ?0Ѭ?Z;¾´p¾œÁ ¾u3Ü?h·¾ÈR¹¾ÀÁ'¾°‚"?ÅÙ"?/zê?"Ý?3ò²¾'œ­? —â?'‹x¾Ø[?9w?Ãgö¾ Â?Ñ~½>h¢À?äˆ?)N®?ÇS¿½ó(п¤Œü?ÆÁÇ?&ôª?äx8?U7ã?2 î¾–.Ø?ì(?lð?“ÁT?5±´?8¸¨?ÉöC?ÕòO?7ˆ¾‡­`¾†N?JÈϾtÄP?5p#?;S¾hf?ô*?R¥>C“Œ@–·Ü¾ævI¾qé¶¾ßv"¾‰}R¾Áî?+‚¿?Ì¢³¾œ‘î¾2¤?@Ûœ¾ÕV¾pf½?,i`¿œÅÁ?×öо¾c˜?'o‘?3W¾?Ü•í@%  ¾º+ˆ?)¯p?¿M¿¢oò?Ñò¯¿ŸîÁ¿š×¢¾ÜHÖ?&X ¾{“^¾YY¾‹èÖ>’dà?uA?(ôÅ? ¾±Ê?(eÜ?8~l¾8E[?AX˜?.ì >ú“¼?:Lw?á•?2?1g„?þ’¾wßH?0a&?(¼´¿i¹ø¾¨ó¾¡†?*ª???4C¤¾gž¾–e}¾„cú?5à˜=ÍTÔ?;al¾@UŒ?L°¿¡¾P@?9ÉJ¾‚w¿¤Ð)?ÊÊ?<Î/¾Ì!±?+ð?/—µ¾u¾f¾š‚㾺©É¿ŸÄ¯?xW?÷ô?HnÚ?(åp¾å6`?%¬”?Jœ<¾‘†ü¾&9[¾¢¯ß¾gü?&f?4Ѿ‹žœ¾Eî9?»ùþ?;8從‰¦¿¦ì_¿¡w¾¾Ãµ4@ m5?L©}?+}(¿Äƒ?º¡¢?àÜI¾®w ?ðÐR?4Éb?þ¬¾»áR¿©(?2é¾W¾v¾G³¨?5}_?N-=[p¾L¼Ñ¾zw­¾– ÿ?Fny?\É?2‡x¾ÑF?9ûl?(_J¾Én[?D9?ÓZ¢¿±pI?Azü?Rµ|¿dÕÜ?>/,?ÔŸ>G„œ¾¼¿‹¿¡Ó ?:Œ{?Õ3Ñ>Às“?{;?-fÒ¾žIX?ä;>ó”‚?:²~?Jä0¾·N+¾ˆlz?7â>”Áv?B ›?Ê4?Öd?Bé&?@¡¡?д/?4D ?Þ4˜?4ª8?Ò=?âGÕ¿/ýV?èÄ´¾¬U?Ï[/?Ë0s½šÊ¾á+ˆ?Àt?co?ÛX¿›¸?ÄSÁ¾¬h?×Ö4?„f>þ >Û›H?¶LË?Ôâ·¾› 8?*ËZ¾–Iv?H†Õ?öI¾ÉÂÞ?tò¾‡î´¾ÏðÎ?%@«?1œ¾Ãîp¾¢£v¾³¡Æ?$¯È? Ô?1ô?%ö¾Mïì?0œâ?Ù¾b\Æ?*j¾Ìzྵ̮¾”ê¾´|¿ÒXI¾‹02¾š«š?’T0?6«?&MŒ¾—0¾Èœ_?Ö`$>êJ)¾HÁ? 4 ?DÏÚ?ÖÞ²?Rwè?Ï á¾˜™6?ÏÎ1¾©2?,¡Þ>Ý Ÿ¾ÛN?­¸?.`æ>ä?Ò?AO¾o̾ي½÷9¨¾¤„^¾W\?+¿g¾r«¾‚’\?6¾‡l??{€?ÙC)½Ù+ï¾Äsξ?K|¾XÙŒ¾nŒz¾‰¿¿ Ãп”;&? xó¾wú¾<èC¾…¨R¾g‡?-U¾¥ÎÃ??Ö@”Ü?Ûö?8Û?;7–¾MœN?UI¾¯þ?! š½‚0¾² œ?,¤E?.¤¾Y‘œ¾AÞ?ÕÓ0¾ í¿¾½¹ß?ÖP¾’F¿¦$?;'´¾{–:¾Ó,¾ç¹@?Cî|?Æÿa¾{¯Ä>…–¾¯ßf¾›+×¾‹¢H?9Ì:?*?Ù¦Ï?._k?5úå?7Mi¾P?@¾¶‰d¾«©ü¾öf»¾Õª?Ôèe?(x¾w¡(¾ÚE¨?2ÂÜ?$ún?8ìÇ?6œŒ?;u辇fx?Õû?2H„?6}Ô?碾•É?#8®?7ÎοœK ?;Î?oŒ?6Iv¾g®¾ˆb ¾ð”¤?çÛ?Õßë¾€ñý?*’¿3´?5ì¾¥œ¾Šž?5ñQ¾ÍR4?:¹JA#–@j\’?sx?$Šø?ä€n¾`ÊŸ>ò“æ?5:ì?3D? n¿°?™l? ð¡¿­3¿o?It¿Gzà?J˜?4ƾ¶Óì>ÿÀJ?C]¾˜Ö±?)} ¾‘¨º?'H®¾¦ ²?6õœ?*?"Aê?9{;>Úû¾Ä88¾®þ¦?3S#?4ëV?Ó"ê?J"¨?Åä?"U ?8L?ÛGØ?ÝR??fà¾lÒo¾¬Žë?.àe?4|í? s ?'jξ¦Oö¾l¬t?¿ ¾9¯£¾Ž§3¾˜z¦¾‚8Gñ¿Z¾´'®¾Ç–ë¾²4Ô?D˜?Þò)?J9?(Ö'¾j…©¾´¹€¾êξ_ÌÚ?<ôy?,§‹?bûdBFKXD<½C«¢¾xv¾â>3?+|(¾¥™•?ìf? ß¾p¬z¾ƒÿ¾vD¡?.V(¾µ‡l?*($?·×?Yf¾¤T:?B[¾y9D>öQš¾±g2?P"?/¡´¾¡Á$¿› ø?Ý™@ ²6?%“¿«Êi?èD?μ²@"«Ó?3?8¡¾И¾³<ؾbZ­?WHd¾\BÄ?6³„?*é.¿—«Ò¾»;s¾®K–¾´ož¾–Ò ¾“­¾>j>þ3¾ÕË;¾Çìl?G¯V¾v—c¾fÜ0¾sü¾xr­¾«b?L•]¾©8H¾¡¬ ¾†>쿬V¿±È?¼pF?ØŒ?1E–¾Ë€¾Èÿ¾`,??J:?8w?ÈÙ<¾J ¾AÓ¶¾æQ?!$ ?4ÕgCn®B»?#b/? Á¾ È>AhB§¢?Ëη?)`¾Áâ|?Gü?F®4?$˜¡?1£0¾Å¸¿†Mö?Ç™O?/~é?G»„?€?4€L?Ù"à?#Â!?Ð.i¾Ï[?O¢Ô¾ÝíZ?Þµ?Ö¬?ɘÚ?°ÿ¾Ú?@Ü•@&ó\¾”´ñ¾]‡5@!í˜>‚ä>í”=?=¾?Nf#¾zc¬?7Ô†?0匾Ôú?JLv¾¸X˾T-}¾GӾйú¿±og?Õ¾Ò?y?“µ?þÛ?Ðо¤&v?+å??¿™Æ×?>òI?ߨ?0TÊ?!d´?3-À?FXÓ?>úI¾ûÌ`¿­ƒÞ¾£Y??+éæ?D«>K¢È?5nÇ>åÝ”¾¡t¡? @?"á¾”U¾´|¾§¸¾¨­ò?? õ?7â²?, v?3Äü?Ë4¢¾uFx?)œƒ¾¶AÕ?}¸å¿‰—×?4ù¿?ÛÜ!¾ÞÔ1?"›Î?)‡=±rн÷W+¾ºö¾ŒÂX?6ñ¾¿"y¾o„’½ßÔVA-¿ ¿š ?g“Ê¿r¾2U3?1õ¾{¼¾;X¿¨ß¾†Ò¾?è[?Ðbû?5n?Ñ+±¿†Gº?Þä¢?&Þ>A´0‰C#¯üB‡æ¾l¾W_x¾Ÿ÷þ¾„˜ ¾]é¾µ@n¾ŸÝ°?;ÑÒ?1®ö?:îP¾ˆ&¾ƒ¾×öξ“¼¾M/V¾¹}¿˜4¿¾Á앾Tcm¾s²q?<ü¾¸Ó¾ƒ¬?)ô|?:¬a?›œ¾…¤ö? ª¾š|ü?_í?Hêj¾x迪)R¾¡/¢?@Œ¾Õš@¾¨[ ?;Y?߃E¾„A޾³ ?I?4˜Z??bé¾þß$?923¾Ÿ ®?0õ¾mp?=Rd¾a…ˆ¾³Õ?ÐŒF?(î“?3d ?Úâ^¿zs´?Ö¢­?0ëm?N4L@ ÷{?¤ô2? å0?‡r?#‚ù½î“v?t1¾…?6 †? è]?+Q?:ãÁ¾Ãå9?+Õ¾¸¶A'¡D@жá¾ÊvÛ¾<ÊŠ?+ Ú?Û=å@&£>š¨?BûÞ¾¢ ê¾ rà?<T¾œqþ?»»¶?ÌžÒ?u÷p>éî?0žŒ?%Á€?â›F¾²gš¾#|Ø?@å¾?Â6?Ŷ;?51¾ŒÜØ?F m¾…´?;Eï¾—6?ïÎ\?Mnœ¾š‡½?Õz˾/V?#šŠ¿µ¾­v?ÍŒ'?J@"Ó¿ò?Qç?,Óø¾›(¿#{l¾eîË?7sоŠ#?Ém?A¿?Ñ׎?Cì¾—´ô?ÔZ¾…ðf¾œî?0ø?ÜYw¾“…æ¾{ü?0ºF?ÀW뿜u!¾·{ü? ¾“Š?ÃÎ?%Ã#?é˜?LS4?^­?-~Y?Æ6[¾©V¿8Ð?έ³¾ÅH~?/D¾š×F?!F¶?©?Oå«?¶¨?-ê?Úè}?1eÞ¾Ò J?Ý "¾§eº?+ëƒ?Òªq?Õ™>±ê°?NÀ˜?‡Z?‚%¿$¾fD¾„vR?(:w?_t¿?¾z9D¾êT‰¾&æ¾€è0¾•[¾¾¥FZ¿]ì¾a$¿¨ì?C.ˆ¾(ÄW½Òªï¾ãÎS¾ªÏð¾óÚJ?*Ö ?0Æx¾ƒ'>ý?ؾYB–??üw¾&x#¾VÑ®?ÏJ¾íWˆ??ƒò¾¥.§?A=?0ú´¿£»†¾qw‰¾›è¾ø³?;ëо¥<¾š›¦¾”ò޾fç÷¿’®r¾¿íÚ?Oµ¾\f?&,‰¾Çl¾¾¾Ú¯Ü¾Ÿiؾ¸¹ ?2ad?Gr?(÷¿©~?)èp?- &?f9*?Eá¾ÃÚ¿°Þ¾è ?4õネ{ù?ÇjE¾ÑÅ?¬Áq?SÍ¥?"ʺ?Ï_/¾‚Å‹?+ú„¾Xlê¾ÒZ¹?^+÷¾83‘¾ÒH¾»+R?+ð?)x?Ï–¬?7@Ÿ¾V‰p?ÁT¾÷T@#-×??í’¾¨6ô¾ŽœÄ¾¬4¾Œ<¼?”Ù?<»B?)¿?) ë?ãö¥¿NJ¸¾,ÄÙ?æx?"ù?Ú·ê?5®‡¿¾h?Ý?ÇFÌ?OѾµn~>üg5½Ùw?Τ¨¾M^Z?¤è¿¾€Ê ?ÏZ?ïѳ¾ìÆ,?Ü<6?#zª¾ÓxÊ?Ú­x?Qж?+¨ù?4CH@&Ác¿Ž×M?#ëL?4X(?Bq¢>ÜfD?ɉL?`Ž"¾9$?0râ?0˜H?(†d¾pHÜ?Ýx'¾æÖ?üX?(gY¿§þ$¾áâ>êí£?β³?6XX??,Û?/¥º?Kõ? O?-ƒN¾ÇÂ>?F$&?ÕS¾Ãì~?Ôí8?3ø­?-óz?Aä>¾øHÓ?N0f?G'ê×@Pо¥ß%?1Ó¼?ͯ?f×?ÇöÈ?,ùØ?ÚŽf¾R R¾ÿ7ž?b‚?`0{?Û–?²AÃ??7˜¾Sa.?ÙL:¾š Ö?.W4¾½Þ¦¾ƒ+?4ã?IRn¾Óël?:¥š? 4X?Æ¡¾?)V¾¡D¿˜iÒ?"³´¾ïj?*(V?(à<¨À¾‹„š¾Q´æ½ìb¥¿«n¾}³Ú¾¸t¾—,i¾[Tñ_z¿¦çÞ¾¨ R?Ä ?Äw¾Ær´?Ûe|?ÇÀÎ=ˆIð?±­Æ¾ƒ@¾ÜëǾšú,?}¿´RÄ?:¨À¾Tá¾Ñ ú¿+`À?Ý5?۔ʾ ˜¹?Ì澩©Û?Õ ´?Ös¿ã[?†¾«©æ>ÑD8?%´ó?ؼ¶¾¸x¾ìšÖ?WÀ?È®È@!o>â´È¾j‘%?&1¾2ãe?â8^?!›…?#;»?J{?}Ž?C=i¾ŸK0?7& ¾šh»?EM¾Æ„F?_Ú?˜˜Y?3G ¾bä?â‡?R²w?Ö ¾ºQ/?%¥À?dn?[œz?V ? ¯?¼c?ß¾??ßÕf¾°^Â?Ï*7¾‹‡?5ÛR¾ %Ö*P?Vú@-÷N?Ý¥ ?/8?'ƒ ¾¯¥œ?fÝ¿¿]¬¿¡]4?†ªl?O\¾—ƒ¾ƒƒY?ž‘?.T¾Yð˾~åX¿™û¾È2¾P>É?Õµ¦?PÚ ?,k¾‰L¾™R¾ŠæÄ?&–¾£5?*ôN¿S,?@â¼¾haF¿z½¶eø¾€Wî?O÷¾ŒÊ¿­ˆ½?7€þ?>°ä?ÍP?%#?1’T?B°&¾“Í8¾¹¢¬?%º¾ˆ.¢¾¤uÒ¾C¦D¾ÆÎ$?8¨Æ>åó ¾lN¿Hƒ¾Ó4Ô?"?Az«?,Ër?^p>%.¸? 5>¨<“?:07?Ù˜Â?-Æ?9é•?2¼í¾²VÌ¿¨Ò`?åœ5?Ü‚k¾ïoO?6âB?)ÝJ¾g ?Ó¹P¿•p¾Á×?¦Z¿!Ü\?ÏP¹?Óˆ>ľL¿šµ‚>ôzŽ?#?þ¾¹Šè¿¨„l?Aúp?(èQ?Èx¾Ë†¾¨^&? ?G¤@"DÁ?.ÌY?.X¾ëÇ;¾×Ò?û0?Ú￳ !? 9Ï?4.Œ@ òà¾ÈX¡?òâ¾Á#*¾m-¿P>?4¸Ñ¾Ðþ,?ËÙ>?/ó)¿¦¾Ô“ö?JÍ7¾Óæ?%e©¾4ÜÀ¾È»˜?X&濟Ik?(a_¿´'?ÒÈg¾Ö¦â?.9?)yP¾Á\?|$¾êÁ–?ÝK*¾Xb‹?5òH?×@?PµÀ¾Ì4?L”¾´¢*?ÉU¾…#¾ïK–?ÓÆ«?!ùç?OEp?¼›Z?8· ¿¥0?÷p¾„ ¸?õj?Ì×?1pL¾‰ @¾ ‹?5Ýã¾ÌB.¿ ¼¿?ÒŒÀ?œ¾Ýx¾µ??ÑÝ#?Ê;.¾ÁO‚?Ì~.¾”Ä@@%8?Ï$Õ¾§FF?)%½?¹)Í?$À¾´q”?Þ7¹?Ë¡I?àÕý?0«þ?Ü?8¥ê?Ù'w?Í9ˆ>ìßÌÀ%¬ù?Ä9²¾Ç]Ï¿Œ»?K†¾PF¿—`¾ú?@{ʾ&1€¿ªß9?`ê¾büè?0¿â?ø*?#6~?K²B¿“Sa¿¨T>?UãÚ¿¢ƒÃ¾‘îr¿§×2¿“¥µ¿™–‚¾t˜¾“8侜”½¾KÉ!½µbô¾à¨Ò¾vd­?Xž´?44N¾Û©ô¿JÁ¾þ¹«¾ºÈ…?;TT¾ƒT#¾¥Ñ¯¾Üô´?I`Î?Öþ¾¨ÒJ¾ŒöQ?1¶¾ÄIÒ?G@I¾´¾žÙD?81<¿¹_¾@-à?*0?,Xý?$!?ʹ?+ŸQ?3)?9?Ð'µ?ÈV?®â?"l?Ù:¾–OŸ¾tž¦ ¥?M??^ôX¾‰Ä¿¸ä ?ˆº?:-ú¾Þkÿ?ØMо™¥„¾¨ç ?Ɇs¾‰°T?@’Ø?1mÄ?>v‰¾»›²¾—R×¾‘ÇÐ?ÖËÉ?Ç.¾²¨? LÄ?Xþ§¾¾Ü`B?Çz ?Ø9¾Äï?*E“?É0^?Ý–Ô?%Ê8?Í;Ì?< ?/~­¾¢ÂD¿3´¾ˆÁÊ?ß[”?>q¿¬ÑÒ¾¤"4¾•„?&M¿µÝ?,þ@?Љ¾¡Àì?Þ]ê>“+?Jçt?Ì¿?_i¾£dn?;f?ñj?¸¹6?)t¬?85Q¾XFá?‰Ÿ?-Cƒ¾Æ”Ž?ÔÔ˜¿”ă¾uYâ?7¾?FÒê? [n¾Zݲ¾œÌð?·tø@5 V¾ëØ?­é?Ö*Y?JÌV?(Š¿ më¾öÍ€?0¡?ÊÀ¹¾¶bN?Ö(½?B˾¹ìX?1¾™à?µÿ`¾µ¢‚¾¬'ò¾¹ú$?&[š?1¦ü??°n?/‘á?Öí§¾ÁWq¾…?ò?p¯?A¥Í?>°?¶@?¬¾1‰'?7'G¾YÞG?.¿¤F¾7?¾¹Õœ?9Ð">k ?æ_È??#¾ l¶¾“/Œ¾Ä\†?\Ú@Û›?Ò<?ݹ¿ …º?1 ü?Æ+?/äÒ?7¸˜?*?ç£Ò?ÆÀÊ?-Él>àÑn¿û2¾kV¡?[Œ?4Í˾]O?-ÿx¾a!?JÖ0¾tÔ?t&¿’¾žb”¾™¸Ü¾LMM¾„sH¿™¯|¾ßg?D÷¤=sà?G—Ê?a,‚¾b?&qO¾N¾ÀðJ¾rÝä¿£úľ¡Øp?&ýi¾•ÕË?â(?3ݰ¿‡! ?ðæ?UÀ¾$+£?Aò?Üv¾užԔö?Ô€Ì?_žd¾š²…?-Ñ?#Iö?ذŽ?/0”¾Ÿe¹¾í à?»A? 7?Zâ?,Þ˜?$ f?2>Æ?1#‰>æ=x??Â?9¾¾—ù-?Ã$‚?+Zü¾Z@6?›ò?­Ÿ¿?Ï÷?áâÆ? •?$Ÿ8?SS˾œ-/?$yÍ?%¾ §²??å1¼àÐX?'£Á¾‡éu¾Ã¢T?6?3È(>¶ã¶?ƒÑ?<òÄ?Úñ!?ÊOn?È£P¾–G¾oZ¾|iQ¾‚lŒ?;†5¾ºžº?FÂH¿ª½=¾°â²¾§÷׿–`~?1¿?¨ò?ʬ?Ò‹À?®½¾ *®¾ ö$?.I¸¾‹W²¾µÁt?ÃHy?2[y?1@æ?!à >2ø? µá?=Tœ¾G´.¾sC¾÷w÷? •¾¤ð>øl¾˜÷@?CÁð¾¬vº? äa?ýÙ¾Œ9y¾’ºÍ¾‰º?Ôü?Õ¨?<Òb?$æ?+ œ?Bœ˜?ãðɾÒ_ ¾¤Šd¾x³? o¬@O¹¾µçÖ¾±^–?Úߨ?Ò2?×kľ‹t©?Ã@?/¾¾¹Ÿ>ÿùd¾²“[?)Œx?<û~?a?ÜPû?Ü™¨?ì¾²§ ¾K“¿†5¾‚2á?&(¾SúÜ?5]0?C„š?" ÷¾Õ~¾ª¢v½[Þâ?áü&¾É.¡¾‰ŸN?<¥”¿šàÛ¾_M¾bê¾O2?â³H?æÙ¾z¤a¿­Ö¼?7¹¸¾s*¿¯ò¿‹ê\¾á“¾Ãõ‰¾†6c?BüR¾I¹/?O‡µ?7l? ý?Vˆ¾¶4?ÛD3¾oo©¾Ä.º¾›G¿RŸ¾,”ð?"ʆ¿¤;š¾RK?E’¾?Ðq¿¢ÚÔ?0õ1¾Š,ľ‡Þ2?él”¾£Ùû?4µ?ß³$>þ?ƫ⾊¥?5%­¾³:ˆ¾çO¸?U¡Š?>/?Es?,¨Î?6Í?,b¾C½?-A†>A:˜?×´…?iËC¾êKˆ¾®ò ?N’Ò?bÏ,?7€??ŠÄ?½¯9?ç}°?Ù0N¾³ÿø¾›Æ?Jú¾?Ôåæ?&üt¿–F2¾ƒÌÞ¿¯5œ¿œ±??ÿ?ÙÍ?1ºR@'7¿¯†©¿«9†@îû¾T¶?.Ÿ¾½®¾†F?O[@2Üæ??±¾?+¯³?@ n?,(?,¤N?Et0?ÜšK¾Æ“–?>Ð÷¾*4??L?â$è?#0ê?=Ò´_>üÏ ?š.?Q6?Dré¾§eU?'ø„¾sÄY?,õ ?æê–?ÌÏT¿Íå(? 2?#Y ¾™÷×¾ÒÔ¾QâÈ?Öp¥?x>¬…¾°C`¾…`n¿£Á?3æ?DJµ¿«èp¿¯w¾µ¾ˆ5ª?FÃ;%œ5?0"ƒ¾²³T¾„:“¾Ìx?"D™?=.?.šÎ?Ï„!¾«%6¾;«¿¤™ò¿¥OŽ¿¥œ‡¿¦X³?<þj¾À¾›‡«¾Vžb?' ¬?3; ¿/ñÒ?Fs̾Z“>¾u=\¾¶/´?(s¾Ål¾ÀùV¾Q3p¾È“|?l(¿ºøx¾w7‚?¥˜?!®¾Ý}©¾°ß¯?ÐU–¾Žÿ¾µN?,ü¢? 3¾°öß¾Œ‚4?Ïé‘?:ÎJ¿ àj?7$Ð?ËR?B7ø?Úx¾Å‘„¾¤(3>ÄšÖ?Á Ô? ª­?Pd3?Ú ,?;S4¾ªa2¾ºV°?Gu¡?Cp¼¾¾? RÇ?Oq½¾Œ×6?AøÓ¾¾¿ª?$ój?H]'¾É)¾ü¾?õƾqä?Ùn?8ú1¾Ô ´?»ñ€>ô†?Ï$N?Rè¿F?)Æ?GóŒ¾iôÔ?P>‹?Æ?¾Ê§?2Þ@?!ê?J©@(¯?Ýö?+Tœ?Hi?½¯? íö¾ÚŒ?)^D?6ÖU?Ê9ʾŽo¾0C·¾vO?6o‚¿Àl?Ô1G?ê€!?44J¾©%6?hº¾Ã˜”¾¤çž?<7}?Çlª?#Ó ¿¤ ?>`{¿ê”?Ðð%—?Aºu?"ïB½ƒïœ¾µ#e?“Z@$©¿¦5о™®Š?;Æ,?£JÛ¾IŠ4?QNò¾›óæ?=9m?¾ª™c¾Gò™¾Íª—?MÁ?Øs?ÒY¾¾ ‚?.G¾ƒ¾Ž$'?ñp¾z°?(ÿ*?K'¾õé¾ÏÂî?6 T¾†ÆH?0ü8?æ™?6?·óB?.+]¾”kõ?À°,?MD'¾ÛJ?$¤^?¥B¾t¿å?ËR?SYœ¾”î?Öül?ÈÒD¾Qí„?œ4¿A@¾ŽÉ¾ÃæF¾f»F¿0¼ü?5â?‘$l¾¬½0¾Š ã?!=ã¾+u£?9&?\šÚ¾|ö¾0p ¾ˆ-?A«Ò¾«¾S¾-,±?9Ç ¿¡Ó ¾qAx¿¥·Ä¾³I¦¿®ƒ\¾$¦?8Q?3Ɔ¾‚Âô?;Ñ6¾Ñ†¾™”Þ¾Q0̾‰P¶¾“Ìÿ¿ô‚¾¶Cξ­Û‚¾Kßñ?1ËD¾”6L¾ˆ:ø¾¶KA¾cñ{¾‹n¢?)+Û?|Z¾—h[¾Ç6>¾¿˜˜?Ú';?Ò›¿Ÿ™?Ÿ²p¾&ÏÏ?Eí? l¾‘@&?RÂ0? .@¾”ϰ¿®t‹?5Lã?I–¾UµO?,\.¾ei+¾£·P?H³¿Þ꾌Öv>U!,¾ß·ª?à€?@i¸?Ì ¥¾”¾r?-þc¾7QÛ?» 0¾Í·;¾’îŒ?:š?ÃcF?F|®¾£À?+D×?QÓú@§»?É,{¿œÑ¾¥:)?ἆ?^M¬?!L#?TIØ?"Ö ? @?Õ²9?/"?âÖ¾žÁÙ¾¦(d?-£¬¾Ž¾Ð? ÿÃ?+–º¾„š`¾¾ª¼¾!…G@¯ö?Þ“¼¾¨>о§‚¾›m×?µ¹¾ŒÎ¹?ÎR¾“©ž? ‘?â­Ö¾|¼P?+ÚS?U«S?¹]}?ÕXc¾W¼)¾J/û¾ªöñ¾¬:Ⱦ¨Ë6¾Óª?}-7?×Cn¾V´E¾§v¾Ô§¾Ì)ü?Õ¶?ÊŸt¾¡¸Ð¾¥(Õ?ö‡?ßy~?²U3?Ùwƒ¾Þ¦„?åv¾Ã¬?ÚÆ ¾¸ž?;hÍ?Ø÷<¿›ˆ¾¡H¿¶É?0  ?<¾¤Ü ?+zò?Îòƒ?!€V?1Åh?"ø¾­î?H0¾ë ?ĺX?+¿8>í h?2G…¾oJ?PNó>)V?<È?Isì?þŒ?3ê!¿“©¾Š…•¾šÕ¾,®²¾ÜS?? a¾QÇÃ?=Û×¾™Ö?b³¾ª4?Br¿´ÿv?a{¾©b:¾ŸL¿ªA?G#·?:úG¾¥oÞ>õVÚ¾yÞ`¿,KP¾ƒ›¾ÈÓð¾À¯x?tq¿¤32?Më[?[Rù?Jç?6¶[¾æöÞ@(h–?J¯¶¾‚žæàV?Ü!?ëÆô¾± h¾¤÷û¾ËòD¾„À~?2/+¿ -E?¯ö?ì¿?_e?£ý¾°­p?Ò…ÀI˜?8†ã?×d‹¾M]?1ðc¿ 6ˆ?Njü? 8‚?áŠ,¿Ðm¿¦8Þ?η?+Ü@¾…%N?EJ?+-¾ÄC“?#¦¼¿¢Gº?,A™¿£¿j¾Ô_l¾^Û^?%°"¾Àñ¦?×ÆÂ¿œçQ¾ÀŒ?.E¾ EÞ?ÝOÆ@o忯à#¾Pù»¾œ2>?$‚¿Æ?ÏÓ¯? Z­?·à?Ò¦@?@’y¾åÅz?*öI?H1?'?¾@¸¾˜™@+ÿ¸?vì?¢¿•çÂ?4v™?Õa¾¾•Áz?AôÃ?þY?¹u˜?1’?ÍÀE?)Þú??b'?3*Þ?15í¾V Ä?d‘¾x ?/—è? Åß?7‚?Î]%¾kÝt¾»¹4¾Ö·Ü¾ž'9?25í¿˜`*?ÂL°?â77?PÞ?ÑÊ?*%î?Å%Á?#8å?ËS?ÃvT¾ûdž?ÆÇS¾~K½ü(¼?µ… ?Ý3Ð?Úü–¾²ÑܾÅ?à?ÔK¾Ñ3о“I2?%ÄÖ¾»¾•Û?¡’?%¦¨¿œ~–?&ªØ?Ò¥?9yg? „? 9?9¯ð?LTé?EžÐB">ß‘?濱[e¾M¢M?:/j?!¼d?ÁÈB¾•¾F?45Ý?Ùî½¾áO?0G¾Ðù±<»Ä ?侚ي¿¬AÁ?!…Œ?5í·¾¢nÞ?Š?ÆG„?»½L>›:?=¦ð?i•–?E5?,)¿¦&ý¿§U6¾iËo½¹”Ÿ¾ªn¾7X–?ÆÃ¾•Xʾr Ÿ¾¯âq¾S¾—ì„?r-ã¾pÏ¿¥tš¿¾{>¥?áÁ"¿5+|¾ñ®p¾Ùô=?@îÇ¿¨™ˆ?3æÙ¾"u?cø&¾ƒõ¾ ;T¾G‚ä¾Rª–¿™¯Û¾¤×¿ŸO¿¤/f?é?;€&?D™Œ¾\!£¾± =¿ã7¾ÇÆt?@ˆÈ¾ƒ¿µ+L¾§ð(¾–Ó?2X'¾gÊ"¾¯¢ö¾Ø$¾ƒ$Ç?’ó??À?&ìľ‘ä®?⑾ˆ‘¾r…ë¾Ãž¾>ß™?%:¾» P¾²^¡??©Û¾XŠÌ¾ŠãQ¿¬F§?ç?o¾ wö?2¬0?9Ê7?À—5>î×õ?ÝËÿ¾¢¿¬?Iåö> i’??,¾êZ?1"–?'i¿?^ôÂ?Øú?œ?Ⱦ s¿®?+m:¾^ø ?)s†?=wî?0¾¹G?<¤ç?ß×NAjì™C1ø"?%h"¿š=Ô?&N<¾êå™?Mz½×î?=£s?!­ç¾Òñ¾?_rz¾W'#¾dôf¾Ð't¾{š­?GŸÛ?@m±?5%t?rQ£¾ŒÙ?G°0?ÒX9¾‘ܾ?C±Ž?G9ᆰç1¾Ÿô?Ê»E?Q^È?Ï+A?Ü–?˜(@!¡)?@{±?Iž¡?.KǾ)°è¾ãáæ¾E„?ÏJG?8âþ?áÂö??œù?,°@¾ŒìL?Ðuô¾—-*?0}=>Ià?Ó!?ÛòS¾Ïú¾¼˜t?ÓèA¿‘¼?Óv¾lYè?d(?4^?ÅÕ?Ôܾ¼¡?âm¾§À?MR›¾¬‰f?)Úõ?á:¾’Á÷?<Å?.Çľõ«[@US¾®£f?Ýt%¾¯u?~?¶ûÌ?ÈÄ?á=ª@-?Â?цr?@í¤?Æ^T¾«í`¾œ©‚?5™É?.–?=ø?Èw?‹HÂ?5[¾Rˆ¾àa>ûÿn¾ÆGr¾Žˆ6?0^ð?ÝNy¿j?VúÝ?hU?Kд? â?A³?Øí?2t?<ë?Ýô?Ðt?Ð 1=ñ¤¨¾»«È?_?1âÖ¾Ð䨾§Ì?4‹¾ÍTl¿@ô?Ìnì?–Ïv?ÖMé?Åt?1Bp¾`-ú?ÃQn?V'?½?3¶w?#U ?(Ñ"¿³M¼ÝB€?NÖ?T$ü¾8ܾî„H¾)8´¾4XÈ?R2Ë?J¾¾‘•¿›+d?ò©K¾—³œ¾zÙ¾¾¼§Š?ÓY™?6œ´¾„tp¾‹=û¿¥H–¾%(¾.úè?6C6¾ÀõÔ¾Œm®¾½p?@s{¾Cî¾:œ?Úi@Ó @Ïö“¿9Á¾`Ï9?Òl?P{6?EØ?µu¾˜¨.?7sM¾«¬n?F-;]¥¾º}“¾­Ò?e•2?^z?Ð =¾±« ?0…m?G ë?RJý?2ê@?&À>¾ {–?'0¦¾‡-?/¦Ä?ÒVW?<êX¾œú?@'?G*²?à›`?̓o?Ýúš¿­ça?/£¸?Û¶¾?H¡E??Ôâ??î¾Êå?62¾”Ѱ¿ÓE¾àäÊ?ãìD¾¬s²¾Î.Ì?š?×¼Þ?Fdz?/¯?Ò³’??Í,?Ôš×?QØË@&/›¾hêþrÀ?B^‡?AQ(?Ú>?U?ϵ2?-J¾¶m2¾‰Ñè?6ê`¾{r‚?K P¾â_ú?8ÊÇ?m ?;•:?70¾Tø?ÁÌÞ¾_Ò"? ‚‚¾²è‘?)?LûÔ?h?/Û?̾I‘6?Ï& ?× ¾É{?Ì?:ä¾"²/?ƒÁ¾Æf2?é0¾ñ¨Œ?&’^?H ¾©‹H¾†5¦¾ÕƒÂ?Üþ¾ä–.?;oD¾ZÅ“?„'§?Ó8ž?2R?1?Ú¿áÐ?&ý¾‡¾Š¿¢Û ¿®$.¾ŒÈz?.‰¾‡Ã²¾ ;ÀÖæ¿¢¸“¾™&X¾wH¾š{°?8¾† 1?G_¾«RÎ?8+,@gà×?ê—Ú¾²ò ¾‚ >ýý£¾=mÀ?)̾qXn?3];?F¦.?;/?G— ¾´ˆ&¾¦š?.5¾z|?êa ¿–VÖ?'(å¾{Pä¾R‘ ¿¯¿ž¾@y¾Fþ׿Ÿ??+8 ¾½ÆŽ¿­ýC?2Õ?+ä®?-ù-?%±°¾±X¨?Em_¾¾æ?0‹Q¿ Ýð¾`Kù¾µ.Š??w,¾Ã¹½ýª¾g"j?# ö¾ äœ¾‰¼¤¾‡Û~¾9c?ħ<¾Üµ?ÌÁ ¾©Ê¿?/ã²¾„|¾N-?;^ø?<½/¿¢}0¾—Ô?1ÎT¾:Ì?Äl?>ª|@"î?¨‰?áÔa¾|•i¾SÉ›?É'P? X€?%ŒÉ?Np|¿ W„¾·p­¾þ?L]a?,~Ü?ÃÊÆ?¬ªJ?!e–?B84¾Ä»v¾Àöˆ¾nw?Ìq(?Éßl?#D¯¾„i³?0D¾Š??)'¬¾AIB¾Ø®ˆ?΂­?Ð ¾¿2|?4Ü׾؇×>ÁC?W4?Èr̾¨¸.?=%‚¾Š€ @  Â¾G‡?d?=DT?Û$“?+E§¾¦l ¾ƒk¾ªZÀ?À?4ž‹?+ÊɾěN¾]¯ö?¬??+WS¾ýæ¨?4q¿À??0éê?)Ÿü?;Öª¾¢(h?5VE?àŠ¾¹´ö?,õš?) ¨f?G3î¾Íq ?-⾇¤Ò?¾qê¾~ÿ? Š¿X‚?‹ô?+v¾­4¾>”Ü?Zââ¾ÒWh?+† ?澦ŸÎ>Ø”/?;ÂÎ?C@?F¬Þ?SA??¢?.«\?Ñèb¾±‰m?7?i?)à¥>ø#¾ÃÑd?H}Ö¿ÃL?>¶?a-?èÅ×¾,~¾‰³¹?#?(¾eWª¿–7˜¾°Ò`¾œ£¾Pÿ?%®¾Ó*¾b»–¾„àd?ÛRO?HÓ™¾šls?âëU?3Žõ= £À¾¢ï*¿š¤å¾œ# ?6Rо[Òš¾˜°X? ›¾N2¾æ5Ú?E#"?Ù¤´¾Ë÷ྦ€¿?–.¿›Î‹?Hù¾³J×¾ŸTm¾®Ï$?ý¾Ò¤¾´Ñ|?º)¾àHa¾šé¾¤Ì~?&Sâ¿<|)?GJ9?9 ê?œ^?/|?)kÇ?$Ãb?÷¿£?;÷S?ÅÊÀ?'ã?ÍùŒ?5U¾œt¾ßr¾×¿Ÿ'…?Áu?)|*¾®…@?ÝR¤?Íz¾«®˜¾Þ­Ó¿Ÿ*»? „ë@(ÓC?;ÈѾ†¢?KõÜ?@$ó?5]¤?û̾º½Ü?ÁÚ?Ï4Ⱦ’ó?v°?,ÿu?#yk?Ór¾‹"f?+ûþ?F_?Ï…P? +è?¾?=0§?6Õ©?6$Ÿ?S˜'?(µ-¾ÉX„¾uªê?áò?ÈQ ¾vÂç?S²¨¾»>?S¸â?Æ¿Dõ?"¿ªX*?-ƒL?žqË?7Òæ?Ë3@¿ Ãn¿ $>É…¤?<½ä?3n@?8Ë’?*¾¬ç?B’¾µ ¬?ãZÃ?+†´¿/¾nоaš¯?Wy$¾t*½ï-±?9P²¾á$¾Lâ±¾”׿?Ýe¾™æî¿›U”¾r2¿+~¾j¾"¾¶Ñ.¾…׊?ÏÂ?ë7¾9áH¾{‘¾U`¾>`J¾®ÂŽ?@w¾Œº<¾³{n?:—U¾¥T;??€ñ?A„m?B˪¿¨üˆ?; ¿›Â.¾‹-Ü¿ŸHw¾žª·? |¾ø¨?ÖÙ%?!©!¾´Â˜>«9$?0§G>®;W?)J‡?Ú›r¾§:¾Î4¾¿¶¾ªuƒ¾u!ö¾±0Z?)~õ?Fƈ?Pw€>ðÓz?@®¦?FŸ¾$àj¾Ùiå¾È-Û?:½?/<¾lp¾˜8^?E æ?–â?A°¾Ö~¾¿¤l?0»[¾Çľ‡pä?×{?Ff?Lº?*ô̾Â*„¾«¥Ú?1ë¿?J“¦? ±?,3#?ç4¾æ£c¾™²æ?FÔ,¾ƒ.¾ÈÚJ?2eà?($?ÈÆý?$=j?RÊr?$º@$ó8?7P¾¿à$¾—:n?̾fG?Äéò?tè?¿G¾´1æ¾Ý%ò?Ýš¸?0< ? Õ??X‘?2V?Î L¾•’޾­Äà?5„ ¾€^|?ÕKÅ?-ýN?Ø„„?-Q‹¾¡Á°?5J–¾”f>ø ;[.ü?1ï‡?9+]?4êâ>ö2Î?.f?Br‡??¹`¾³ ?3ai¿ §?D¨º"? J’?1”6?#×¾û-R?ßJ)¾”Ñ—? ¬m?P5Õ@)?Ú8`¾–"?C”ê@TmñC?Öð@¯‡Ÿ¾ö3?Úê¨?,Ð?"§¥?ÕÝ@)×?0T>üÌj?+¨??Pþ¿˜Ùj?Ê_ò?Í·ò?!,?>ݸ¾¦6¾Ñ~¾ ¹?ÔÖÔ¾äq&¾”K@?ÞÁî¾¢f?Rľí¶V¾ ú?Ò(?*§Ú?.RÏ?Òéy?Ðæ¾²‚y?Db?3ÿ,?LZ˜?$ @*ej?ÆP?ªà¾Õo÷>ÍÃ,?#Ã;©p?&áÖ>õÒj¾†‡Å¾fƒâ?J°¾8;®¾©ï$?r©¯?*“ؾ¡È(¾.l¿¯Pø¾j„û¾½ðÔ¿¨HÖ¾„J¬?:K¾bŠ^¾ž‰¾{& ¾"np¾Ž…?©Þ?8ô?DŠy¾Fª ?Êt¾«T?,f€¾Žúƾ¹wÄ¿ŸR©?.?6%‰¾•¦Þ¾´™¾iå¾°Aà@Jê?azo?ÉáÒ>å ç?ÕvH?Û»:?Óhì¾ ä¾v)þ>éRO?¥±G?櫹?Ò¾¿š¿¾“5?DÁ¾¥ÒD?-ì–?J84?<¼Î?V§†?4L˜¾ ¿’Ù ¾‹Õx?2Üx¾†*D?öü?Óàß¾Œ³ø?ǹH?Ää?<ça¾¢r?š @.Ë?H®ô¿B’ÿ¾lt—?DÖÔ¿µã˾£ö>?<Ý¿Ÿ}>ðË?-…?36龃ÿa?52þ?QÈ?>1X¾ì1r¾}ÉS¾ši"¾Ùé^@)Ô?.Ì?Ô†?ã‚Ö?Úhñ¾²ÓL¿¥^L¾§¥ã¾„<Ó?3´¹?K‘ô@'5î?¸Ô¾h0¾>^b¾ÒÔv?4ƒ?Û#˾‡´?ß¡Û?BÝ:?ÏB?4üŒ?ݱ6¾£÷x?Z3•?=},¾™ïb?0˜k?ÐŬ@/„´¾½<8¾Qi?#›E¾¨2¸?º^ã¾ÓÌ ?ÜÝ>?.00¾èçž¾ô²Š?Ï‚g?.“?Œé?4èŽ?Å‚?,4t¾¾$v?I’¾¶}À?AU‚?5¦b¿4Ô?/‚@¾¯ïÖ¾–”?Úb¦?çÒ?BB?a º¾Ð*ê@ŠXÄB˜·@!{ü?Gý:¿®¨ú?ÌWÔ¿nü?;ØL¾ªíˆ@#~?Ïñ?¼‘Š?•¿ð¾t!¾¬Ç4?EOg¾ËL2?.x/@%˜â?'/Æ>þ±$?×Åh¾¾õ̾>>¾šíò¾”ñ¿§¼?ê«?7¥æ¾È ¾WÃp?<&¾‡q3?(&×¾¶Þv?3Z^¾°ÃÚ?:yþ?Ì—?ÛZ’?MIð?Ñ6ò?Ï¥?[1¾¤«@'Šþ?«½)P¾d`??>\X¾»¾_¾±kv¾ÐŠW¾!'l¿©é¾¥!È?-üî¾¢¶>¾Ê(¾Iã…¾mUg¾f/ÿ‘©~¿¢I‘?ß  ?Av¾—ÉV¿³¹¾y!~?I“˜?¿þ¿™ i¾‘7+¾–öx?#¡~¾¢if¿¤(ç¾§‡¾I0„¾o í?4éÈ¿¡k¿¨Cd¿ Ñ3¿b¿—Ë•¾‡ôœ¾Fñc?<"ξ‹¿ž&X?-{¶¾¸.P¾¥£‡?&™ ?Fþó?(§h¿h<¾¦ã¾.²?Ú¿¨ƒâ¾~Ñ?8£R?9óX¾æÉ ¾Çz¾fº¬¾ÎÕÎ?;ß®¾¨ü¾«4Ý?Öç?RÓ_?‡$¾\Â4¾ƒƒ,? #?K澇ª¨¿™1M¾‚d|?Éè“>ñ#Q¾š¾@?ÏñZ@%<î?Ë? óg??{’?TW@K’¿›þR¾B¢1?:?H‡Â?^ú»¿¥7kC1ÎBí>øB6§ì@µÌù?D~¿eà?Ь÷?AÃã?>ËK¾GÝo?)¾?/†ÿ¾¨T¾Ž8@#€?1žÕ?ÍY—?a|?3Ί¾¡…0¿¡Bò¿ˆª?T|¾©ô?&ðæ¾‰©?Ñ¢j?ÜõÞ@ $ã?Þ?ÚR¾‘Gо߆ ?;¦Ç?"~€¿.ù?6Ëþ?:z¾Â:6?Єá?Ö´+?ZßÎ?:³Ý?H^š?5€å@(¹É¾¶zn?H‘þ¾Ôèp¾åœ¶?‘l?5É?;¾÷¾Ò^ð?-Ôh?*¯?@š÷?Kû€¾ç•S?8ft¾fÈ(¾Å¹ü?>Òò?= ¾ŠUç¾™ia¾—3z¿£sO?0Pj¾l /?Iä,?»æ~¾·E?4óC½Ìª˜?Ójä¾6ì?Hãý¾«?ú¬¾3•Ê¿¤ìT¿¬|‰?+mϾšÅN¾?¹¾¥)k¾±Çä?44¾‡oz¿£ï-¾ñ.Ü¿¥¸)=¤H¾‘Óú¾–™f¾8ü ?*¨®?7˜B?=ÆÆ^¾­À¾v£h¾©Çg?2>Ë?=È"?>Ùx?PíÛ?4Œâ?,Tľ½J^?Òíx?ÌQV¾uýb¿¾ñë?¾,t¾Á¤Á¾@T÷?ت8?‹u?K9x?Nm>÷.K¾Kð?62w¾¤\¾z ™?JC?FÙ?Ê_#@?`ïAŒ¦ÆB>ŠEA¥p@êŽ?@ (¾“Ö]?Nî¦?3ËÛ?£Â¾4Ž~?ÓÚU?à ?I&á>ëྜaæ?6:?Ⱦ©Ð ?2‡þ?ÉùξOú=¾«ç~?Ì,Ž?ß@%@ @$í€?ZLj¾”qÅ?;V?,l>?Ù¤R?/¥¾6G¾û‚;¢tô? q¿¨|P¾¦)Ì?8Φ?,eT?7€°?'Ëð=Š˜?×¾{ ¥?EPÞ>©¼L?»ô¯?;T½?7‹Ã?R(È=²I?Îy@‡¹?'ø*¾ÐAy¾¨=¤?Ä9?C’¡? LX¾zv¾À„Ô?ª0Ó?ØŠ¿¬ýÜ¿¤7À?Ú¬?ÛÓh?CÙ¾| @o\?„^¾²žæ?#á?8 ?ÈòÔ¾-Ê|¾¥‚?3ªŒ?-Z¾²ð?ÉæH¾U,–¾³ÅN?>O{?ßÐë¾rAt¾Ï‰h¾¨ܾД¾´Íî@) „¾dȲ?zG?èx¼?ä!/?ÐGj? Ãd?(pM?ؘ‰?J†t?.èa?.?Ë+)?.lV¾…å$?Øð?;j…>'Û|>Y7¾S­“¿§ŠU¾Q¼V?5±?/¬?:ý-¿¢Šh?>¾Óõl¿ áƾÃÔä¿¥†¾„,è¿–2¬¾ X¿i¥¾Šr-¿‘¶z¾¡j]>âð¾·›l¾çsr?Cj÷?ÙÃ?W#?@ r¾ª„ª?<œë¿Kàé?2II?"‚⾸»ù¾¸©»>蛚¾±ˆ°¾‡0ð?W v?ùíè?/Dµ¿˜·¾¢ t>—NÔ¾qÄÖ?BÊû¾…šê?-]k?Ü€®¿µÎê¾Ïá„?&$>?VmÇ¿£œà¾˜{Z¾á™?H`?+×>õW¾£{?‡ø?ÚCO¾Ðö?-¤é¾myP? \ª?Êf?8HÝ?)2ʾµÚ©¾ÃÔª?/0Z¾qË??!ð(¾©ƒ?¨I¾&–? «Â?Jø¯¾EM9?ÆKs?ßî˜?Öl?7¢¾Å›V?;?HÜ?'¡¢¿£ˆ¿¨˜C@.üó¾«ÿ¢¾5eZ@*¶B?È£X?3?àäš?I§z?-n"¾»ÿÙ?uM¾‹iÔ?/5?Ûݾ?¾ÇØv¾Y@?-D`?IG¾•Šª?E??ýp>š¾Ø?-¡D?Gd4¾‡9`¾Úéw?0G?)…"?ÚÈ?/Lþ°zˆ?,5Þ>Ú{M?·K¾ÛP$?+­à?@že?Ó\?6(?>C?Ë,¢?,Wz?F¿U‡ü?×áK?&h˜¾Ð6T?À—è?=B¡¾&3ú?Ú?2j¿?'x?CI ?3AJ?@µÉ@%6z?¿ÇZ?ÈËR¾È’È?'ON¾x¶?1n?)Ô?5Њ?N ¿¡k¾Ëp"?M9¸?Èh®?A? ÊÜ?3?`¬>äðK?=ž­?%?çÜH?0K‘?,Ž?2?ƒ>›œ?Ò¯?fòÄ?Ôë?Í#J¾Á$Å?CE¾±p&?Ôï|?ÝÊ̾ »à¾¢r?¶Ô«?ÝÐh¾†ÖØ¿‚!?@¶Ú¾Ø®˜?P•’¾Èãj?>ún¾aq¾‚8G?Ø}Ÿ?Fä¤?›Q¾Š–¾höϾ$H¸¾HQ%¾\Åa?SÒB?2BŒ¿ m?=¸õ?ð8¾`³?%€E¿’´B¾¥0f¾‘>?1·²¾Á°n¿¨Â\?ESi?1)¾´JP¾xú?"cn¿ ¯ú?Fõ¿«|?`²?:ü¼?ÕóX?,.Ô¿™ÂØ¿(Œ?#q¾™ê¾àý¼?%~¢?ár¾”©À?’é¾€h™?+2?Ø+,¾¼Q£¿£V¾[6D?5=‰?ß@á¾Vs<¿§ P¾ÏÝ?NŠ!?N €¿;œ¿™u¾œsо¿Yg?Ö@>¬AB??¿µÐù?ô¾žíì¾éÙ >î6 ?X>@? `?Ýæ¯¾K§›¾fξÔé?1æM?Ç‘¿•4û?$0ß?Ø¡?̪!?Ãh¾‘ÄV¿ª0Ä?»u"?'Ôé?@ÍÜ?Öx;|s?|ˆ³?¾íƒ¾ßË,?Ôê??1†¾F¡z?"~?>ÁŽ?a—?=\è¾Ã&c?;`¶¾kM?Qƒ?'g̾¥%¾™âD?%‘Ⱦº)¦¾ ˜>½y@'–ü?{r?ß,ª?Õ 4?PÏŽ?ØÁ?Õí“?Ò^?¥Â¿¡0^?#Cg?'뢾r ?V+Ŀ˾Ƭv?êÕ¾“L¬¾©Ôr?¸ ¾ÕlO¾Ää?Â&?T–¼?=,?ÛŒ<¾ÉÓ?9ô'?VX?¹”?Øgß?.^r?BíÒ?NÜ4¾Çfð?ÚÌä?83A¾ˆÐ?¾Ó¥¿Ä?TÒ? ŒR? ±¾ÌÚ*¾þL?Ë„¾ˆ¨ë¾ºl¾ÙH¾}à?%ÌZ?ÎZY?‘¾œ2‰¾TØc?åˆd?#‹¾’fؾ¯™Ô?>…n?G$?Ñ4ƾÓB>éAÄ?Þõ®¾°bh?ÖáÉ?Ò¹$?Ͻ ?3¦•?6ƒ?ȸµ?!¾¯¾£åZ?3¨v?OÐÆ?7þw?ÖI:?·¤`?!M¤?η3?¹„?-ão¾¶5¾ ’?+Û)? ]f¾´Ê÷¾u3H¾ã F?9º?Ær ?!¿g¾¦XI?ÐúñÀxZ¿¬`²?3v\¿žV¾À4j?ô¾¦*¾FYg>®m¿°Ëa?6à:¾•°è¾ð¾Îi¨¾Œ¶.?h¬Æ¾±Ú½òÃ%?A –>W·??nò½ÊL¾ž'¾xñí¾[1â¾;¬9?:‡X¾WÁà¾ÌE¾À¢ê¾Çg?o%ñ?=i?6Š?7ù?gȾ€€¾È/}¾k%5¾W˜t¾†Eì¾®æ`¾¼z¾Ìʰ¾¢Ì¾Šž©¾•Õ¥¾¤zý?,ÆÑ?ÃF~?)r¿§³?.]??à½?)´?â¥?1M~Bi ?Öm’¾Œtž?K6?,“¾°ƾ™ê¾9ú@¾“V?ÞÜ?Äëf¾†ë¼?:˜¾Ž|*?Ö'V?9Ë@¾1I?ꣿ²š£¾·à?*5T?'±«?&þ?$­?Íu™¿¬9C¾–NP?ÛŠã?@C ?á?[?]ŸÅ?àS?2À?/>ä?"r9¾U$?'¾Î¾•Ϊ?Áš*?|š¾¯f¾ ®C?Ö[?-éí? \n?/@¾Žt¤?+‹E?€‚?d0?9½?0å?¾ŸÃ?Ù2k¾¸œ6?°eÖ¾¯T&¾“ïy?Köt¾²!×>Ú{ï@" ?ꀾç·N@ }b?T¼ý¾0«ú?-ò?Cç¶¾—Ô£¿™÷ì?3ˆ3>³´q?4pؾ¾1\>åñ¾šœ‘?$¢¾²c¿—ãn¾ÌÊx@"ÃË?)ûé?-…?ÓW™?Ð?%¯°?‡p¾°Úò?Ò ?ÀÀ?9–?-eh¾¯°¿’n @7ÉQ?/@¾Ý¬¹=½xð¿°ý!¾Ù£¾æ}"¾‰DԾˋä¾+N?2öݾltè¾ø8ª¿¢eP¿¢Ÿ?à€m?aUß¾:Ø?=‹?ð¾©.+?-?H `?4´w>rÞ?FsŒ?'§æ½ÍG¿¥¨ª¾K4É?O‘Z¾ŒŠô¾†&?GÅ„?Õbƒ?aס¾P?8à?!Ò>?BT%?àÆ ¾ œ?;A¹?êX?,ar¾«ð¹?¾­ô¾Ô I?\^„¾‰$&?T¶Þ¾›…®¾‡¬-?,ûò?8Ö¢?¾õ>QyÜ@+PwBçA%œ¾¥ØÔ¾°,ª¾fE‡¾§­†¾Ì§?DƒD?,§G¾ÑóÛ¾”þÚ?=“r¾Ošj¾ýž‚?6hŒ?׉Ÿ¾Œ)ð¿Ÿî?ÛÎ-¾©Äª?Úýú¾‘˜à?U¡?!¤Ì?ÛPN¾©É ?Ja¾±m¨¾òH¶À½;¾KP?KÒý?ÈŠ²¾Ìâé?×µ¼?2ݶ?Õ @%å|?8И?¹Î?HŠç¾¥™¬¿ À"¾Ãë¯>ö’q?ú¾è„?#,¾¾?6ãÕ¾ið£¾Ù¥¾?A§Ž?ÑÝK¾«*T¾­ö£?Q Ä?ž¿¾PÙ°?ÊH¢?0÷žÙÙ~?&1K?Frz?Mšq?Iœ¿ŸÊÌ?ä·=k>ôñ#?ÙtV¾¤Îâ?.š™?+?vº¾k~¾¦òý?¯¾wÓ?-±:?8)ð?Ô@0?7Èܾ]ƒÍ¾T¿?,>¿?Õg[?*@?NB@'A>¾ƒ$E?¡Ú?ߊ¬?¿ ?ßBd?+A{¿ž ?Á*?Ö·h?Ìfô?›Ë?2•¾³ëÜ¿·!û¾¯¤.¾~tü@'q?<Æ›?Už?Ö˜p?Àû¾Àë?V³h?Þÿ?_;¾WPN?K±?Bx”?ÖLù?:(¢?å]?IgᾜSÞ¾ät?È>±>"!¨?ÎÒ¾}Q¦¾›Å¶?3Ír¾u??þß¾ÏF¿Š#ž¾àø?2ú¿›=°?Ä‘¾Nï0?8Ôj¾Á*m?ÉjØ?#$N¾Ã# ?³Í??&|¾†Ôª?C £¾Qï¾µ»¾?J}«?4Hz?5Iá?C?3Ä¿¤ 4¾ºg¿¦yÔ?Lºì?À"?z)1?BºÛ?Tœü¾yj!?ÕË¥?Fƒ ½R56¾wÐ^?B 3?@m™>òÛ>?5î ?ÈR?“”¾ÿÿ4¾ìÓ/¾6ïL½÷€?9„y?2ñ¿¸Â?Ìç•?ë% ¿©Bj?ËM9¾×«5˜?aý@?!?¿dÀ¾¬#?Ý2Ú?,û?EÜ…>NhP?Ò¿?6³ø?Ê„z?5§5?LO¾”è¾¾ç?¸¾®¾¿¯„ª?)-?0•4?Ú_Ä?Bñp¾Ò¼´?MÍk¿½rX??þº¾ØÌ?ËH?6ÿç?Ü6é¾Z½?B¢?&/о¢µ°?Hz?ÑëW?Ìd¾”ö?èp?4'ò¿ùH¾¶Æú?ÕàD?<´¼>«!A?4\˜@îž?ßF¾Ì‰7?#gÒ¾Ç7~?ѶP?%x¾·ï?Õò#¾–NÔ?ÚÙª?7ð ?ÛFM?Э?M§/?Ü:Z?D×Ö¾‰Z¾>XP¾Ð¹Ñ¾£w^?@°B?>4–@%!u¾Â{â?ÑÓ?A Ã@/h?Ò‚?K:?5Î×?!zý?.ip??ZG?mvt?àƒ?ãª?0X?6PÐ?;”Ð?ÍÕ]¾pêX?$bо\o¶¾Î½?Îñ¡?4 Þ¾RÈ{?Ëk?D÷ò?Cc¾u¸í¾¹+Ž?Õ??Hèè¾·2¾ì…¿¾‡â3?CV?G>?ÔõB¾Ÿ?Ü¿¸}?E/k?¶\—?Óa¿®jr?)£:¾¼"?B”D¿Ÿs¿¾³C?Ý t?Û¶4?-ìD¾Vö¾ÓYð¾×7?3—¸?@«Ò?))>%¾”&^?;…ˆ?9 ¿¨¿¾‘¯¾zÂh¾ŽKž?>S¹?=­Ó¾‘{éÆà¿°¾’ñ¶¾É‰0¾¶©Ù?++~?Ah;? ,?.†T?[‰|¾–̆? .*¾ð?ØŽM?LGJ¾• Ô?1©"?@Ñt¿›¾Ðx?4ïD¾}jj?ᆲ”n¾·´Ó?ÞYð¾†ç¼?9?Eñ>?1òË>ûJ>?"éy¾9ÍE?S¼á¾øf?EÎ ¿¥§€¾wT¦¾Ž’?,8¾¬Æ ¾´‹œ>õ´?dt¿ŸÏu¾`Ï—?(¾ª?H?óÕ?ºŒç?[©?¯I¿£ç¾¼í~?ÛÐð?,÷/?+§?àN¯¾u©7?v¾¤rÔ?D‚E?ä0Ô?wž?M!Y?Òñ„¾¤sµ?×à~?FŽ’¾Ðü ?9s.¿´¡F¾Ñ©?7K?+ã›?3¾ŸU?HEø?=û ?$'’?äG?Ô¿²XŸ¾ÂW?3ß¾A“F¾žZ?&±H¾`Â?á­Q?c×°@+-a?Ѓ?-‰>÷î§¾­÷¾fñÈ@G@?B´¬?/ðó?:.¦?Ò;?*%Ï¿¦Õž˜²÷?%lÇ?CÖ?Ý;龘qŽ?Ø&?8ˆ>ùœ?â¾6T?à˺? ¶?Ï„?O? ‡™¾¸yÛ?%£?=ý?Jü'?êˆË?H(¾Šlô?í`?%YÖ?AX?%)º?ã­?ÚF5¾^‘I?ÌÌ6¾›Qµ@$.ã?'-Ñ¿24â?Ïh ¾ŸÙ?›„´?Ïxv¾ÏÔ‰?:¦Ÿ¿T­Ç? y?Ò e¾Âï?7±Ø?>T ¾Ÿ¹¾Ìh<¾òš¾ ;Ô?Ó¾ÎÏœ¾ÍÑÃ?š¦>ì‹8¿KÙº¾‹zb¾ˆ-:¾«*¾Va|¾*ÁR¾M¾¾žõ`?!j,?;õ7?6r?И¾]d?DÅf?MøÚ¿²Ô¿› ¾¬n¾›™þ?5âZ?>™•¾à`¾´^¾/"?NØP?>Aý?1Ö ?ËøÍ?9Ò¦?<.޾º³´¾v?:ì’?5ã(?+¿õ?N€¯½´Û?Å0¾‘ß#¿® ¾¡• ?wú¾™ñ ?+Ñ’¿—¿ ¾®óì¾S?8Ï¢¾q§? 1¾îýõ¾œ3\?9Æ?*”‡?>ƒê?@&l?Ø:¯?<Þì?Á¤a? Ëa¾ËÕz? r°¾­Í|?¯/]?9ìx¾©>¾F?ÖÕ¡?d¾¡4?JŒ8?Aõü?௾Äß ?ÍU?5ÿ#?8‰?4Ðþ¾QJ˜?º¢?ál×?Öá†?B#È?+e{¾¤A~?Ø„÷?0«À? Qk>ûMs¾Æz?Î0<¾¿>x¾¼P?ÓãŒ?Áž´Ø?â²A?¿Cl?BPŒ?Òô`?6@ ¿¨™™?Vw·?Ê ƒ?(¼é¾ê÷–?*mì? oW¾‘t$¾n,?Î4¥¾¹) >ëÇ?Ez‡?Ûþ?@?$€†?Î1¤?ÂŒë¾Å¯ò?Ý73¾¥n?N@º¾Þ³"?Úó@%×»??(?«?AS·?'«?>Çw¾ˆí?Ô¦?_ P?-?(ÓL?Ü»,>ûŒ;>¨.\??7¾ù¥„¾— ?ãZ\¾G|Å?Ö€?&¬ù?# ë?-r¾“üª?‚y?mþ@,•¾ïw¿¤Ô?ÑùZ?3FH?“1¾”nÈ?"•F¿ mJ@$(*¾ ®5?ÌÌý?Û –?[x­?<ä ¾v`ù?Ù’?Ñ×¾?]Á?1Ù‚¾…ðù¾¥[Ã?T¾9¸¿×`¾©`¾ºþV¾Ò&¿šš˜?,áÐ?&Óò>¥Ï龦Jl?Ñ~Ѿ®KÑ?Å_?=9k¾±¾î?/µ"?%¨¸¾®Ž?Ýþ¿¥š¾“h?2HÌ?hO¾âHÒ¾ÅÖÕ?'h?G˱?62S¾«¾˜þ¾j@¾ÛX¾Ï)¿­•½?:”Ó¾UQ½¾ «¾ã³¾ŸX?$ýq?P¸ƒ¾L˜ç¾àX˜¾~”Ê¿œEú?OíÖ¾]A}?>é$¾Æë¢?U) ¾=¥T?Lú¾Íྸr?KSþ?7>?3{i¾’s‚¿š?W‘b?3 ¾?Aý¨?ÝÞ?í”?"ΰ¾ö?C2?26å?45¾¸ä?Û¢…?34‚¿¥»¯?u?%¾‰õ&?1W$?6èÜ?Ø%”?"¬¾Ì¥=?Ð<¢?A?Ûk&?Ï­?0 C?ÑV ?Ø1˜?àA…?,8E¿™– ¾AËl>îÕ†?0Ðï?$p°¾r6B?Ód'?uº?Œ:?:D?(ïÀ?šÔl?EYY?4y?,pD?;/¾ŠŽF?Ô¾¾è}?8ée?Ò0‹¾ÿi?Cø¾ƒ¤µ¾®Ô^¾ªLÊ?86ɾÈ0°?ç¾Ì‘B?2g?;̃?4e–?Û€¾¬óÀ?¼Øò?ÎP?Ñ5Þ¿«áF¾‘0?34i?TÒ ?0Te¾ÅŸ(¾ j?5#°¾Æw?3 5?M¨K@'Ë@'À¸??ÆM?ËñE?äôß¾ÀŒð¾¤uè?H¿6?ÖHq?:¿‚?EÆÕ?#æœ?-Ðø¾é¬¾Þˆ?Þí?ܦ?áˆï¾ÈÈ?;ξrG?ÍKì?W,¾ÄNÞ?%ãÄ?.÷’?Bl? Þ>¥T”¾³&®?K‘o?,_?+×?ÍK£?&Ž…?Øx3@ؾ‘AJ?šá?Uê?-8? -Ð??¿–?ÿÒ¿ËÛƒ?7Œ¾“•º¾½Ø,¾lÐ ?÷¾Õv¾¿§†7?ÞJþ¾k§þ¾‡A6?ÔÐ/¾«7??½ú?Ó›p¾·÷¸?4ߘ?’´g¿žwˆ¾¥åN?Z?l£>?Pû<¿ ¸ >ó€&?D>½¾fÈ~?,¯’?P§)¾÷H¾Ð ¬¾¯ž¾TÛ¾’?T?˜X¾2ìþ¿œ½B¾luD?Óð?V—Ð?]ž%¾œ1?)êÈ?BjÎ?8¢>¿¦#U?;}.¾ŠÔW¾µj¿Q¬?B£ ¾„!Ò¾ú’»¾©h†?<Õ?Hȃ?G¾‚l¿´‰?ñŠ¿£Ùj½Û\¾f¾ê?äŸ?8ll¾…H>?ݸ?ߣо02?31ù>í?mBz?Yj@(ì ?n ¾–þ+¾¶«? fD¾ûr?L£¾à„?XŽð>„­¶¾‹‹Œ¾zgš¾ŒÒ¸?$ý:¾?:¦?5ä¾`‹æ?#$¹¿š2?5­¦?4R?ÂÉx?GÙ;«0M?a¿Å¾£ÁJ?T™x?Mßæ¿“Çš?Å-¾“’¾?έ¥>¾2…¾…¦?ÖX"?LîØ?Ô÷f?—˜¿—¾Êóa?Ý>¾”ÅÀ¾WMg?%¾µ$?Ûjj?;ÒT?7Rá¾86Ÿ?Òq ?Öã¯?©µ?2Ò>?/»š?Æà¾žNV¾$ß/?@?ÞÀn?Îj?×J?8'?]ˆ¾ оŒ¿Œ?-“`¾›²„?Ò/â?+{ò?âèû?2á°?w5¾O0ƾ®ûœ¾å‹?.;}¾ž~(@dü¾Ó³Â¾§Ò?Í?¾‘rš?3ßí?5@?`?Ó$ä?ÁÆ?"+&@/®s?ãI¿-ƒ†?3œâ?=×@&Y7?9Ud¾Û$v?PA@¾£??G³ð?¢¾Ãžò¿£ì*?,W–?%øl?8Ô?a×¾×%ä¾›±6?8­¾Šl:?á^¶?#“?Å|¿³Ë?/íy?-óñ?92€?[¬?Ï™Ë?3&,¿Ã3?<`î>ÞΠ¾”nI¾©ü¾Ê1†¾Y·?×a¾–h$?#Ä„¾›”›>A ?(A̾Wv?Ê~C?ÚZ?&I‰?&LN¾}ù¾•ÏÈ?ØV @%¯?;¸? u’¿‹Ÿ?Et¾m?¾*ÿ°?E}ˆ¿´5|¾y–¾Ãõ+?Èoó¾T•c¾<Ã>Πľ„ Š¿¬j¾ƒ*4?ÍF¶¾ÉÐ?R/õ?)FÊ?1º˜¾±;Ð?9n?\—I¾™ê7?%rî¾–—Z?Dó!?Öœt?Ì™‡¾•;Q¾T»?Éå¾ýý¾¯éC¾"ÂÓ?ìd¾ƒn¿˜}?.û—>Üù¾jÖü¾yû¾£Rª??忤Ër?5?ÜS?C®u¾[?¶ô¿ª‰P¿¤^^¾v ?9i0?IÐ&?Êä?—Ò?Uì?O²?Ñn)?PcÊ?1G¿žÂ-?6m[¾©â ¾³‰æ¾¨J¿ ä?;Ž‘¾ŠA?$à€¾¨\l¾¢?,±á?ÚñY?ÔÂê?¡p•?;²ú¿ oö?å?Cº¨?=r?!̾˜ZB?+ ì? ˆ‹¿@äü?$g^?*Bê?3¯¼? X?Å[™?=?î?-4x¾ã¾Èy?'U?qÄ?ׄÎ?ߨ¾¸)Ù? à?HÂh?ÙÝÔ?7|d¿?L/¾‘kX¿®„é¿$Ø.??¾¸6ø¾´õa?1³|?Ò»¾†Žü?AÉH?Ñ%ûõ@%-?=’¾Ôç¾ÆÞξ­¨Þ½Ó¨4?1H|¾¢d?ç[¾¿Å™?KpB¾¤Z?6Ï?áД?.lÞ¾š° ¾ú}?(‰¾Ëµš?¤Í?'j̾Pr×?Þòf?1øH¾¶?,ÕB¾ÂCœ?ÕF?4}«?õ? ÷Ž?c­`¾ž†U?y?Óß³¾b @ ±@¾Ø¹¾’0??W?@Wø?4hF?$Hy?*Š?6 +¾ªî&¾ƒ4X?T‚þf”Ͼ¤s½?.Þ„¾˜€¾ŠÒk¿£)¸?H-ý¾ë¿Õ¿²Íè¾cs¾¦ t¿›r?(]x?Aê™>ç§?0ËÚ?Jh°?,Æü¿ô?3Ö??"Žý¾ß1?Cç÷¾ªÃ¾•¥“¾Âð,¾ó2¼?»à>U¬¾¦£À?:¾‡¯/¾šf?¸¢ ¾3¾cW¦?,ù>¾Ö• ?ÖÆZ?@O¾¹³ä?Au1?¹Ç`¾MñQ?*I?7Óž¾ØÅ?Ù1>Ó€¾Êeþ?\t¾ƒVc?Î?F)æ?.xY?$h.¾¸Ñ¾‘·¾Oõ ?>®˜?"ƒî½§Œr?ßI¯?& ?$X¾m†?Ëྞ~·¾“×Ð?Dw?/éF¾¡Kk?Sj¾˜˜Ò?ÏGë?B¥Û?-Îヌ""?Ö °?ÝÃz¾N;#?YÍõL¾+R¾³X?¼S¤@bî ¿¢•&?AŽg@)lí?9îŽ?ïéÌ?$Q›?Ém?¯Ͼ봞?Ôg¯?Å;p>¬í!?Ø0˜>þ G¾qå^¾á ´¾y1?Úy©?7ð>?ìó?Ïô¾Ïø(?ÎBH?Ρõ?Õ¿¤¾‹øj?Æ1¿µÙ³?A…?—*?J Á?Ž”R?gñ?Õ[ ¾¨dÿ?2 ñ¾ÁË(¿Ãæé?D¡.?,h€?¤¡$?(x? r¨¾‡÷$?Ò µ?., ?-ê?¸½?>–Û?5|n?3N—¿ŒØß?Ú©P¿›®ò?BÇN?4"¿¥Ú3¾ ”H?:Gy¾RW̾ÅhÌ?KZ??«z?J˸¿š_?„¾„¥¾xÕï?W»ì?WUK?Eÿ¿¦(Ñ??þ¾jïò¿žÎ$¾@¨I¿— µ?Lð?@8ǾEL‹?Íý˜¾p—V>‚^¾PuS¾¾tx?Iî ¾hUR?,Ò#?#?!å,¿¬Ê„?PʾƒRÚ¾«8+?/„S?ͺ·?:ú¾š!®?0•\?<ðì¾ T?'¾›Yl¾Š³?'¬ƒ¾”{P¿ å?-ê¹?55©¿­%?b?wÃe¾ªÇ„?>0¾„Aþ½ ê?5©N>åó?(h? N‘@)™¾¶¾z?ƒt?(oä?Ìø?*Dè¾í/?Ì[\?/eò?å/?Û²Å?n!ξ•s¿šb @Ç.?@5t¾»=?]ã¾­Eä?&O˜?Z­?É?Z¾ÅˆÕ?+]f?>®ô?@S?W¢¾£ž ?‹_p?ÛGH¾ñÀ.?Îæ»?sÑ?Ö5‚?D¾w²˜?Õ}¾‘>@?…¾“+/¾¥#?ÎRæ??ï±?Eh¾'!?n£¾éA²?ÈÂô?Þx?vë¿)m¼?:|¡?Ý ?6_°?Ë$?L= ?7°4?Äe\?TÓî?B2f?ËŽo?Ô*Ÿ?Ó¹D?L7?< Ô?(?OæH@"†W? Öt?îZ?Ö9? xv?"3>?>U¢? ?ÂØ0?=*±>ð€?'gŠ?2c?ÔO¯¾¥/?%{ñ¾cJ?BZ®?-øï>²Áɾl-/?2䦾ã³è>çÓ†¾³–¬¾€tj¾”î?ßÎ,¿w¿©ç>¾äø¾©&)¾ÀÛÌ?ËY3?®œ?Ê5„? -?<]5?6'Â?—?;«N?3Š?·Ð? Pؾ}zž¾£KÁ?'?°?Ô«J¾Àã‘?Öº[¾¾“T?>×ú¾˜ƒ‚?* ƒ?%œÆ¾Œƒ\¿ y?*ËÂ>Ud?×¾pN?2îì¾®u@?» ¾–Ïk?:e?X˜ >å‡&¿ '^?-«²?2eV?%oN?оۘº?, ¾¢g¬¾—Ýb¾ápÍ?PSÓ?ݪ¹?Ðî?Э¤?<48¿¥D±¾¤~辿ƒ¶?$ûª?<&í¾¢§®¾ËS(¾¬}`¾}£y?iH?ÄëT¾˜”b?+C?0éM¾§6¬?'$?Nªç?=Î?%ðè?4׬?>ÓȾ®ü°?#_g¼û@?.! ?Ë©\?È?4 ?kF?È™4?5u;?;»‘¾¥þz?Fn?&à¿¡ò?4Ùô¾Öœ•¾ë¹?Éñݾ¨>\¾R?Mœ¨?:Ç?Õõ÷¾†ÿR?Í®?Ù(.?Ë/,¾a²=?'óÍ?܈­¿§EŽ?2²r@'g?>äC¾—Ú2?M /?®à¾ñã8?ð ?‰¾› ·¾ëæ?ÜŽ>Å^¾ìHt?5Ë”?Gà?1\¾—t[?"ßj?4¨¢?4hh?-ñó?2a¬?2Ý0?<ÇÍ?Ã)R?,ýº?;,Î??§Æ?̹S?µ… ?áå?»?¿£3¾š;Ü?ô?3™\?:ýÇ@+ÈÐ?Î}È?<]P?â)?—B¾Ša¾?7ºa? cX?&F?Ô­h¾„‘o? +Ž?_ª?8’¾t8Œ?Ë?ç¾¼xí?¡?:À¾‡ ,?ÿ€¾¦á?£h?Ùþ?€§?<±&?˜¦?7‹¿¯@à?/Λ¾Ñvª?#Á?5 .?¶r?ÂgÞ?@°/?-¾ÓÌ;?,â?Ýè?LSm¾”Í?Hж?¤ëŠ? Ì?Ny¾Ë¥?Ø¿¾Î-4¾ d?&k?À_ó?;wRc? þæ¾¹Ì?ãÂ?%Gò?Ä~e>üö.?C½?æþ?Õó¾É`v?v:Ò?:Ó¾“A€??áT¾P»Œ¿»_â?;úm¾¤ä¾(;H¾ Üã¾æˆ?Œ’_¾yJw¾Nƒ©¾Ê“ο Ô/¾<ã#?±î¾Àšü??Vw¾Fã—¿œH?7þ¾]PÁ¾8¾¤À|?&\s?$ƒ×¾øx¾è¨â¾‘±?*O¢¾Ä$X?0&º?dø?Uj¾—¾ˆ¶ ¿žè–¾¿>›?=Ù‰¾œ‚š¾º6²¾³Mb?R>P¾`c̾¤\¾ˆ%?,Lj¾©fš¿œ0k?‹w?àÊ?¿ï?ç€Ö¾£J6?Û(þ¾¨0I?ð^?ÓºT¾xò¾Ý‹§?OðZ¾˜ž?;Ç?ö2½ÙÓj?C‘z?}&?Á…ò?Þ…¾¬–­?5ªÜ¾½t@1ïÛ?ÜÌÕ?KœG?ä@K?:ø¾?•ë?Î<þ?-Hd¾k¦?Ýï¡?ÞÔ?ÜÞV?2ïü¿¶°?Îܾ¶z4?ÍG³¾ž•ú?¨÷?*pš¾—‹À¾·x’?×ü(?>ä¾!ò?#àO?¿ìØ?}þ¾ÄȾžù?ãˆû?FjÆ¿™f¾?tŒ¾]«?ÉŠk?·œ ?"°Ö?3U?çÕt?!Z?Ð/X?4Ïd¾ø¾¼d?Ì_„?ÖÉ?@L?à.?ÄÁ¾ÿT{¾«c ?JZv?ÝCS?2FH?Ð q?í M@(ÿv?ÚVÖ¾ÆUh¿Ê?á@/¡[?È0{?Á ‡?EÑG¾—Œ€?/ã?5)†?×&?Ö?ÞÌ‚?û·­>ºCû?)pZ?Øãó?:ð?'þ?>ó×?3#ì?/Í´?$­ü?ݾǭ¾œØ¾“^?DfÜ?4çP? »_?O5¾¥üö?ñ?.]?M~‰?Ùμ¼@¾³O½Èª¼¾>r¾£\ǾƒN½?C^¾rd£¾#u~¾‡µÕ?-±Í¾‡ h?øT‘?$çñ¿©kH¿ž1 ?`޾ŽÂ~¾`¿¥<…¾§ãö?OwÂ?Oô?F·ä¾Žå0¾½’&?7–‚¾cÑ©À¿¯?æU’¾r†®?&B¿¢e¾¬#~¾hZ¾pmѾ§Ë?&Yn¾¨ƒ ?Å«ä?.œn¾¤h޾X×?åÿ{?;e¾ˆ)?8VŠ>Õ%?2Ü^¾eZæ¾oÌ»?;Á,?õÊ?;NÑ?Í–¨?b:b?ÐêV?Qi?@:о¯ â?S¨T¾·Aw¾MÇÐ>꾆$?Þ"?;6ù¾ŠhH?Q§¢?+?JÛú¾É³?.i¿Òw¾]*:?Qh??¦¼?0­ð?%°œ?E<®?û4?·ŒÐ?B{Ì?Ø‘¥?GBš¾˜äß?åþ»?ŠÛÄ?@ö?:ýó¾@üÔ?<Ìy?Dô?ÕG¼??¸¬?Ýð?-$8?B€ú¾Žh]?^µ¾tvû?:-Q?á;D¿§jx¾.àÒ?Ëh?%hÓ¾‡Áª?3ÖÌ?מ\?%Jw?Ôô]?Ðg&¾ÓÄ:?Ú\œ?-, ?=N?d¾sÏ?Ù©M¾¯?–?13h?1S³?\P¾Ò˜¶?Ðò¿˜È?Å£?4¼¾ËbÆB¤AË„†?Õl?"ƒi?8MA?-÷?Ð>y?)B­¿3â¶¾¼9x?âÜ¿¨·R¾*Ñî<dž ?6)`?JX?Ö0?Ð΄¾eÂ?Ê©c?$tÜ?Ô;x?Fö2?Ú†?C¤^? ?(p?Єü?KõÂ?#ï.?CI?v^?ã:Ž?+Hp?CʾÚ:ª?;36¿¤È¹¾2¾œü>@.¾Ünm?0ô#?F$Õ?CÍz?ŠS?ÝO®?sn¾}±¾¯y!¾+ø:?[Rm?Ñ/z?(¬ ¾p³¶@-xp¾.„"¿6~¯¾§¤D?˶Ï?GdÔ?Óxp?Wo¾|7L?áÅH?Úeã?R¡µ?ÙK”?Óø@w¿¥W?G6Ý¿šè¾¢N?G.¾¤W?Ïa¾ÃΈ¿®ß¿§¿¶¸¿¨Ì'½é~?7Ū¿ž“(?{Y¾Ž=·¾rf¾˜Ü?*Ë^?AªS?Ö\׿¥ÊI?Q¸Þ¾A¿’ŒŠ¿žë?¾Äxü¾“¤? x•?1Ù'¿¡óÛ¿æ©?.½?ÞŒw? ®ù¾2$É?9'a¾jÁÊ?7o?²4?&ýd?Nû1¿®X¹?9ê¤?!L²?Nê?9A*¾•Ê?.«‡?<\T=uXì?Që?:ξ¤n¿¯~ž?ÜöE¿0¥@×¾›¾C¾ :¼¿¨r¾–7o¾Û½]¾}©?%Ž¥?½äJ?:þM¿Ã¦?C¿´"¼?âÌG?¾ÆP>ô+è?.„#?#·Ô?t ?Û9羉ѿ?,²¾¡²?º|?Û!?Ö"y?'`¾´…„¾Òýx?ñ`@%ì:>Íta?ZM?Ê9?78@ ¾¾Z?:ëÕ?86n¾«ù÷?µLÁ?#|â?>`&>æ¢%?ØBL?.±?ÛÅ6¾ÅÒ?ÏÚz¾­Ô?OOÍÀkÉ ¾žï?K¥?Ñ´(@ ­ö?5©¤â;ÊPÛ?3è•?R•Ú¾ku ?$á"¾‚è³?Òд?&™@'jj?ÓÌ>ýÕ!?8Þm?3Ãw¾Gëî¾ (A¾Y´?Øò¾?6vß?ßœÛ?5Ô’?Û³¤?0cy?ÑÆ?Ó+Ô¾W¸ò?zµ?ä):¾¨f ¾ÛnŒ¾F?­„³¾f…C¿ˆÖ»?ê„¿Ÿoy¿– •¾Š"?3n×?5“[?ݸ¾‰f^¾†Yt¾)›:¾~•#?åËî?Ý>w¾ÐL°¾t3/?6Ò1¾8>¦?9"P¾žâ¤¾Ä^(?, ?-¿–…?WGp¾¸ç½ûÙö¾·?â⾩$ú¾©B¾¹ðî?Ç2d¾–'¾˜{ú?OvŸ¾Ç9D?1ò’¾”…f¾Ùø?ãÕ ?!{Ⱦ¦Ñ ¾Qò?3®¾By¾¿Í±¾À·?0 Ê¾€??Hξ?3«_?ºÏ¾·.t?!—Ü?ja?6݈?b<\?!O*¾É`Ø?(ÐྚÿB?=Ì?#'l¾ïÁ[?'AG?3í`?û©??gN?0Ú>õc”?%¢?.qŸ?&bK?Öq8¾†§º?ÚF-?†æ¿¡;?'—?|y?Î$P?Ý%î?8‡¥@?ª?Ð?Ì*¾³È¸?;9u?Æü2?Nç¿/«¾­´J>™÷Ò¿¸žT?Óˆ¿§¦º?°>ö6a?%iâ?`¨8¾¸ÏU>ïQÌ?š?îØ?CÜ|?3„H?ÊÛÔ?ÎfÐ?Ïzð?#íÆ?!D?ÆGq?Ëf ?W40?ÔŠ?-ͨ¿½†”¾É¤?1ì?Ø¿]?Û˜??8/¾–ô ? ;rÖ»?! ?%ÎE?$>˜?ÍÉ?@Üa?£F?^²?Ûj?*¯Z?¡¾ˆª¾£‘оŠ4>ýAj¾ž¼ ?ÜÛ¾+w­?ÒÍ.>ÖýØ?„•?Wú?Ò·¾¥Ð¶?Á?JâÒ>õ¾x?/fN?§ é?=]?´?Ëô?ÂqÁ?6ÉJ?ÓŽ€?Å}?Î2.?޲?Ê?ÔB¬?2‘ >«¥ª¾V¨?Ëò?+õt?4L?CíJ?@¾÷6¨?ݬ¾?jÎ?ÚÑ\@ 18?7œ²?7à?݃?&?./Ÿ?™9]?,¾ù?ä—?Ä¥N?X8¿¿?üí?()?Ø-4?àí>ß'ø¾³8m¾¡•ž¾mûÝ¾ÐÆX?É侦b¿§ÅÂ?;$?=W½?/Ûì¾W凾H}n¾‘À¨?>ÂS?Dœ;¾±Eá?OZ¾|“š?[k†¾ÇöŽ?P¿f¿ªÊü?.ò(?N¶d¾Tô¿˜c!¿™޾ùz=¾K‘¿—é~¾4rÆ¿9?ÛÆö?+oO¿Ê’>¼‘/¾Šc"¿˜Ó‰¾ƒh¾_Üh?Ô!5?Ä'œ?/€¢¾Ž ?7ŽJ¾µH￟&—¾¸ä??6†C¾ŒÏx¾—ng¾M Û¾žxä¾¶—²¾–f ?J ?6˜Ž?¿?>ݾÅ?%n¾”Iš?A/?í×¾îï¾¹\¾?× =>ùV?:çh¾ÎÓ*?Xµ?,x'?>¿Ê?#ô¾qÊŽ?¾œ£g?H”ô?Óë€?Âe¾›qŒ¾Ï"@¾w«ö?Íá?о¥Ql¿)þ?ß2?;û >ýÚ"?NÒÖÖ–?(#Ÿ?Õ—ø@š ?Î:Y¾Éç>¿šäq¾¨qF>¦è?ܦ¾?%ì{?,2N?7ÇO?"®¤¾Õûʾ”¡:?yJ¾¼Q´?Ôܲ?6=??Ù¦?*G’?>Ò?çè4?ÁÇ0?-4À?ÞZí?Nîˆ?/à ?2p|?&Uè?7ŽD?Úe?Aµ2>ÿ°d¾Ï÷^?ùk¾t?$É‘¾‰®Š?Ü‚¿?FÈ?Æð?ç…??Uƒ?'°è?Üæ?:FÉ?5s=?Ï\`?Læ ¿)ž¾¬8ð?«¹P@eƆ?ß` ?*Ó;»œ?%?m?ÂKË@*í?fÎ?ɪw¾¢„„?׿~?ÌVã?Àù½ÕÙ ¾Ì]?ÎŒ?G<7?E.?La¾&Ф?ÕGF¾Í¬¾û9ѾÀtÛ?ÇÂc¾ã1{?žÓI?*\9?Òæn? Ëh¿ û?D¿¯§î?Ê5?1žð?@“¬?5Œž?R„¾ÀÐ6¾ºkð@ð×?Nø¯¾Òz@?2u>¾°ÌÚ?4e[?Òž?çz¿¦k?$3“? d®¾p¾­1 ?’¬¾…& ?»–»¾ŸÄh¾>“ê¾Wâ¾½Þ?Aéõ¾ƒnB?32&¾yœÎ¿ª¿F¾†!¾·Ø½øŠÕ?*ùs?8í辇™Þ?0¾r$û?2³¾š”4?%àh¾ J ¾”n¾óÆw¿¢ u?;l¿¡/Ú¿š×ó??º»¾­ß޾´Õ¾Î@¾ˆÎ¿§^t¾`i?¾(A¦¿±Ë ?Õ-æ?3ÖL¾ÆO…¾®²¿•)¦¾€N«?"¿ž*·?/‘?'(?¿Ò?,ŸG?(£l¾\´„?8~¾¦¨I?y@¾·Ÿ¾†ª(?>u?*sQ¿0W˜?).¾Jù:¾D‘,?$ƒ?BÆr¾–ìǾ°{†@•ËF?, ?>Џ?Ûa?6Êì?‹;(@1ñÿ?B@I¿°ƒ ?*1Ð?Gig¾?j >ÉPP?Û+>¿ 3?Fñ¾R¨¿?.O”¾–®8?¦b€?©(@&>š?HA<¾ÚM}?» Ù? ¡T¾!&¨?ÑG ?#^?ßõ¾£š?ÖÔé¾Å4Þ¾î?%«X?O=ƒ?0ÜÔ?°YÜ?Öô¨¾°/1¾‚²#?8C?[™Á?3_F?FþÌ@"ÖÅ?Ù¸š?&œ*¾±è?á[B?3+¿±…x?}?.}?%Ú?Eb¾ŠÄö¾ ã­¾žȾKÔß¾€›,¾ŒbÞ¾u®?Gت¾mCp¿±=f½å`J¿—ór¾™Æ|?H¾±?WrD?3˽î—P¾`Ä?S8ê?Io¾^iX?L¾‘䬾<]¾bLY?3\½›•C¾‚Ó ½¢Ûl¾‘`¾Å‚ê?Ó?S?8Œ²?Ex¸¾,Z?*¦=?@Gú?A›£¿¦ëz¾¾L{?WÈ ¾¡t¢@&kQ¿¢á¾€Yʾ‚D¾O?^¾Ÿ<¹?7 S?E‹’¿ >?ŸuX¾kPÊ?2Îp?×´?@Æ?º È?ã#?q¶f¾3§»?RºX?B¤Ž?_å˜?Ï•»¾wÕ™¾y.B¾H˜?£K¾Š ʾ±'à¾cAÙ?Yw?Î~G?,;Õ?-ã ?ÐÜy??ì?:!P?âs²?)†¿¡ùð?Ï v?Fx¾ÜXB¾íL?B£¡?/è½¾Y=¾Š«$?¿\?:Ò¾À¾F?VEH?ÈÆs?ÞÉC?&lb¾U¾‹s?Ñô1?-û^¾LÝ\?ϳÂ?â0ô?$J´?.ˆð¾µÚ¾Kå,¾Å .¾¤V`>úl–¾Âžé?Åhe?Ó %?Ìe? ÷^?HQm?ÑA‹?4€O¿S!?C­?,¾Í¾mÁâ?á‚O?ËG?Tcª?—¿¨#¯?VsÀG”¾Ó W¾TEZ¾kj?Ý`›??à"?ÈòÂ?4f>?;W^@#=P?Ò‹€¾ÝGÜ?#Ê8?@¼À@&Êä?öà?VH? +i?ð-?,(5?:eB?ÅC.?$[ô?CëÄ?+ØÞ? #N@%‘‰?6êC¾µ `?P…ê¾=Ok?eÖ"@(D?ø²?"Ô?0)Ò?ÑË޾ş?ÎAˆ?&ð(?àVý?L“3?ãýl?^]?(˜ã¿B‡²?GM?Þ¥î?F€¾”¾ÔJ¼?Öz¦?Ú¯õ?áW@(c…?ž$$Ó¾°”I?&¤?,L?Ø{?#rý¾Ê8?Fåh?'Ü?r?²¾zƒŽ¾­|j?$µþ?²(?^°Ý¿“䨾…ìƒ?4N¿­8G¾‡ƒº¾pèî?1²4¿ÔS¾µæ¾ÑqN?P忟ê?§Çî?=lõ¿¡·ü¾›Ój?N%™¾£X‚¾ic>{Y ¾Œ¾‘Wƾ޲?#IÔ?YgÌ?;°‰¾,Ÿr¾ï¾k¿¾…™?â…š¾µäú¾=¬D¾Û…ª¾ƒ_ ¾}¢‹¾mÞ¾¥Ýü?:¸F?<䢾Œ[¾ŽÍ¾¨ ç¾fHå¾=?Ùʸ¾>D¾–1ñ?–¦¿¨Y?+h*?ÓÑu?Pdt?E©?9Jä?Ë´p¾±Øa?UÇ?,†?åÐ? 7h?;,–?;¿;?”?I3? ð¾§9Ö?7®¦?JƒÄ?Þó¾¤{¾ÄBŸ?"ÂK?‰×.?bUO¾ïø?7h-?ÉMú>ü¼õ?9‹¨¾Pjù?H´¾­¾mP_?"Ô¬?zj?D×ö?†?ÌQò?"?Õ†ÿ?%ò‡?# ¾àíÓ?(˜»?B¹k?€‹ž?A¼?0 Ì?Òô4?(Áù?M×'?PÈ?=¿?w,7¾²c.¾ X¬?3Yô?-¢ˆ?Â|>?éi?1™¾|ßO?l ¾‹›?ƒ‹?2ËD?‹?Gºp?q²?9)ê¾>M›?6¾=¾¯ºH?æ]8?Ú_Î?Ž«™¾`iâ¾72×?6 ?âç~?»¾Ñå„>»™?ÔÀ@@ξáj?5cð?µ4?Ö™*¾ˆ?_©¶?)ÉÈ?Èáè?Ûv?Ëî«?<ò$@ø„¾c$P¾“žN?Ï&3?ÌsÌ?%!~¾½\q?I%?-‘ ?KÍÐ?æ?i¾;?!=@?M’·?6T`?IŠw?ÞÛ?äx?1½¾„øÀ?/÷?Ëæ?Ónà?30¾å2z?7QÓ? x?œ¯?0†’¾•G?Öt?Pd1¿Þ ?8ý­?Bxh?DÍg>ÿ”Ö??Ø?Oœî?%9¾Ò²?Üm@?%qŒ?O¶?ú­?R€½¾ÐïØ¾ ˜ï?Ô¥p¾µ!€¿²šÚ¾ìm,?4Œò¾Q©q¿ PÔ¿¬µk¾ožž¾Í¿¢y–?=¡¬¿§Û§¾l±i¾w ç¾C(Ç?LÐR>¦\?8½é¾©4ð?*c:¾õ ?*Nj¾¨P¾‚4»¾^˜½ªœ^?@jð?Ⱦ:3:¾nð¾§CϾ®ê¾” ¿¦^¸¾tÙÀ¾Pû´¿–Ø}¿¤˜4¾´è‚?ì—?`RÄ?Þø3¾ª©~¾ïÊv¿°xÍ?Ñ=7¿³ç&?"[Ø?æš?(üŒ¾ŸuÎ?â¾"?#Ð?H±¶¾ÀR4¾°ÐÐ?0™ô?=Px¾·Ô?“n?)¼7?À?Äó{@+T…?%ÞŒ?5´ë¾†;à?ã%”¾Í[?E«d¾‰t?K‡O?Ѥž¾œf?ÙQ>ù?)¾?Ìé@?ˆ¾'?:eà?7‚n?ÂCm?Iä¾¹À ?+;?:ð ¿TÛ?;8ò?8r|?"O8?ÔU?8|?èí†?%õ¾?WpL?Jrž¾b‹?¦¼Ñ?q³?z>?ÐìM¿ý&@$’«¾û†?ʵ9?-Ã?Yø?EH?>à©?C"ò?É(Å?ÓKL?>/w¾rqu»?çÏì?ÛýT?5ø%?* ?-üó?£Yª¾ÞV?6Ë…?ª‡?ÛW?åÄw?âY©?>aŸ¾’F^?ÑU‰¾G”É?Gût?5¤ ?+ØD¾cït¾¬Üê>êÊ|@$õY@gÞ†? S?Ùx?5Dú?'cD@+ã¿Á\¾¥ì ?ÎIö?ÅC'?Ñ6E¾°0:?C­?‘Œ?5KK?ÖüX@0‘ƒ?*ª?×!o?)Ûµ?‡ž?Œ? *?ÚÖL?×| ?¸m?,í†?¯ì¾v9È?Êt(¾ÜœÞ?.¶N?#†?%ñ>ñ[t?*~‚?%Ij?*PL@!β¾–ØF?*•`?ü$¾Ñu!?ÍË?À=Œ¾€~¹?#¾´ ?"ˆ ? ¾ˆx@(UÅ?Æ×?$0&?¸î?ß;S‰`¾å¯ ?3úc¾_Bù¿˜Ò“¾j|¾ßë꿘Sª¾_¬–¾°8?<Øt?]®¥?-v¾t$¾ÇïÌ?MÕØ?B¯?&$¿˜:?J©W¾›ëµ¾‘ä¶?54?#*b¾ÀM?4|V>®Á£¾[ œ¾gÁ4?)*¶?(󳾯Sä?Ó\I¿¨¸T¿••ƒ>ýä]?,ý¾³Ù§¾¦¡¾Ñ)ø?'_\¾¤ú¸?&Ã¾š¢œ¾ãü„¿¼ó ?К¾qÙ:¿®%®?  ¾Õ“Ò?<ãË?ãO&?ìân¾­,A¾´10?ûÏ?Øiî¾™_4?9ûä?Gò‹?Úg?,úL?×E ?>¢¾»Ëš?Øc¾bkd?('¡?U¶½¾­ýÙ?Òÿñ?9Éï?Ø/?0oF?«Û¾ñ ¯¿¶)4?ºz?Û:?Ïg)?ÑÐ?3„Á¾Žf?Ë‘p?Ý˾¦À?ÍÀ ?ܨ?ÞÚ?!"þ?äz©?ËöÄ?(©|”? ?®ú??Ót?1éi?% ¦¾¶ ¤¿Þ?›p¾¤B?¶±§?ľžbf?àê«?Ç]Ú?,¦¾³ÕÔ? ]?Þæt?HÎÃ?áv-?(;ȾÇPt?Dx?ÃEy?Úäy?1û?A×í¾à@?JËØ?~?Û ø?*¶¹?Ùß?)L`?ÙŒþ¾qÃ?/0?*‹B?Ŷ¬?Y?=fç@$µ;¿ªFl?&ûë?)¯Ø@ Ú?>»R?×¢?(ú?9C‰?Æ^ú? †·?Öê?ÓŒ£?D”¯?:Ð?È©í@,|^?HQæ?(§\?Ù°b?ÄÕ…?%ûõ?Öh?9¦´¿½¥?è?F?(í¾”Tú?ÆÂö¾Nãþw?ÙÊò¾Ã/`?KÒt?.S?³Ô?ÐÐÒ?E,y?ÓãÆ?Pô?¦¾Ê\?6æ¿,Ð?._?Á” ?¼‹?HúJ@üÜ?Î>??½Š?ãL?(2g?6¿´«¾Šú4?¿—G?ÝB(?O¼Ñ?4P?ÎZ|¿•Ó~?Ö1?Br?06H?¢ã?Gë’¾ªþ,¾ ¨¾e!¶¾‘'Ò?D$?W02?N7`¿žü¿ô¿IG¾Q¶)?ÅLÎ?è}K?Aþê¿’ñ!¿ž~?Þ[u?'ïD¿ŸxM?Rd ¾Ÿ è¾në]¿ Vþ?<5÷¾®Ô¾k±ŽÀn;¾SÔ¾B\Ž?îÒ¡¾ù޲¾ ?IÍÆ¿™l†?Dùó¾9j ¾½b*¾£Gª¾´L¾¢(|¾=çý¾Žk*?çǾü3¿¤:?N‚–¿¾‡p?#Ðð¾ýÕ%?1z¾¾Ì4?C‰?>>»zO>ø:'?y,á?*iÆ?2)™¾©„„¾¥°¾®`?Üâ¾gR7?«8?*ê ?X⿦Ⱦ“hV?ë<Ó?0v?A1õ?ÀÐ?(ëì-‚?ð³?R|ø?Û~t?Ë4;¾Ÿi·?Gý]?Õð?ݱe@,Ð=?Lê¾a?,õ´?7k?2Pž?ÃÆ}A;± ¾‹b¦?=N2¾žÇX?Ø‘ð¾­*¾0±Ü?%†b?åÅZ?6Ë?T¤n¾§)?(о”ûå?Úáh?tK@(i±?Õ‚>穼?+â?áŽ?Þz˜?²Ž@*¯6?$×¾Á¼?/μ¾j¯?ãVȾ…/ø?ä‚??ÛëÅ?ÚÖ?ÞgJ?Ú!K?¦'Â?ÌKr¾­§á?NÓ#? ãŠ?+8|?Ȳ—?ÖOP??ÓÓ?Þá‹?×?Öö±¾Î~ª?Gx/?Jz?â+?K´?.‚,?ãyh?8Øs?ÍT®?ߟô?Ö±d?Ô?"]`?Ô›Ì?ÆÊ ?q?/cç?Õºÿ?ÖÂP?xí>ýD¾¿-¤?=ô¾¢åb?äó?(Ù?Ð…?Ôé?L'ø?áH'¾„ªV?)Û{? þ@(˜Ä¿³è¾¤>î¾m»D¾Ú æ?1©¡?*ŽË?*¬F?ãÅ´?4Ô?2[f?(ã"?(I‚?Xꈿµ Ë?-ï?L#ð¾Ëc?8 #?LïI?-Hã¾…ph¾šÒ<¿’$¾¢+`¾Ú{:?Fd+?Mîɾ€By¾X,=?>]¾‘–¾Q”?ko¿«è¾$ŽÓ¾nåW¾.?æU|¾_Ÿ¥? –?YG’¿˜|J¾Ä?È¿‘ ྪÖq??“¾uõ?Ф¿?+#6¾)Ž?3HÜ?D"Ú¿¬Lɽ×É?CÐ?@'?,9¸?M*ä¾ÅI²¿’¾=½%¿NŽò¾{'ç?@e?5à,¾W·–?/’¾/¥ ?–‚¾¡˜o¾˜Vœ¿\p?´¾¦l¾£#ú¾©òè¾ä0)?ÑÀ¾Ñž”ͦ?ß¶C?ÎH ?4«O¾« h¾ÄYj¾ƒý$¿‡â´¾*°:?L7–¾1à?,±É?Ûªë?N}”?)²A?#€¾Ù8J?/5?I~•?(Ÿ ¾›æ„?:┾¾ù¾ –Ø?Éú{?¡-?Bó¸?±¿Æ¾žÌž?ÅI?(Ã6?³9š?Ö…ê?Æç~?EÝV?ß¹?džS@"{?ÌÁ?!þ,?½‚@l?fê?Ë=\?Þ»°?$¸?ጃ>ÞÜq?AÚ>J©~?Ww¾·­›?)‰ê?¥ˆ?JzÏ?å™F@)Ð|?\RM?×ø¨?&“¬?:dì¾—2h¾“yƒ?0Ʀ¾Ïê?+?e?$~?*b?5?Ž?Qn¾z=t?A(¿¡ö?ÕÓc?@•?QÍ?.}j@" º?EL?ÕÛ‚?àh¡?E£ ?ÛØF?.æŽ?æ$^?v+?̧m?Ï•5¾É”?¾1ê?,ÃN@!µ½?-6?%Z?Äø?1ʾ»ìw?7ñO@"û‰?#˜?â@h–?Å™Ó?FŒÑ?Ú¹?9V?Õg¾‡±?$Œƒ?FáྡR?ãy=?-L?„Ï?A'V@%í?ÕÉÕ?J̇¾†p?7ŒB?(4¤?ÉÊh?ÍÍ ?Øc›?=°?0ªY?À3¶?ÙPÏ?Ú›À¾ M$?È]Ê?ûØ?&r? L?¾“}¾«®Ú?B÷ ? «R?Z-O?Ù…ö¾Þ´4¾á–¾Œ=»¾F羘?Imp¾rÃ?3j½Á?/–ľ‘Ì?ØzÇ?,„†?1Ò¾@ƒÀ‰M¾š ˜¾ïBq¾o0K¾“?IfW¾¨P–¾¨åš?AÛM?EßT¾Ù‚2¾†4c?Ï…¾^ä¿?!ŒÐ¾g’¾i©&¾«çÐ?BFÞ?.{ç? úX?‰:?A&b>¡r?Ñ’/?0&÷?6L^¾RÜ?ÍÊ?4¤?àÅD¾á !?Í—r¾U-ñ?8˜Æ?+í+¾½ ¾‘w?a‹?/ Õ? ?x?,-оšKÞ?QÛÅ?Õ”=?Ê£¬?Bc©@#\Œ¾T†º?Ød?=擾¯õ/¾…¢ô¾¶‡^?9™à?AÉ©?^ù%¾Ÿ7?8¡Ú?Ì›Ù?IëÐ>×ôR?¾9`?Ò@¥?\—r?(ë?Ó84@*3¿@-Iª?J«$?Ø À¾«°H?Ó¢H¾Êgb?/6˜¾‹­~?Dü„?Ûª??ÙÃÊ?Õ'ì?؉S? !¾¨ì?ç©@#øR?Áé?b¥ ?ÔC?ÕŠ”?åË?0Â?&DÔ?J?Ø6†¾n4î?PõÂ?Iuˆ?.¸?c?÷bd?&¸?Ñ×8?>6?H~? 4?,®“¾“•Ä?Ñô?/o?ÙÝÊ?M'°?ÆàJ¾£8¾œÍH?%B\?чQ?Õ[ò?%Ü&¾µ»‰?%\ì¾Z%Y?©í0?K´*@dwž?Î6U?Ä?ä{¡¿òQ?@œ?ÔJž??/æ@ QÖ?Dý¾‰1?Å€ê>ç®'?(Ÿ|?âR’@$ª?Ý9Q¾žŽî@(MF?HŠÚ¾Òc®¾/8~¿œ~¦?0@ ¹¾?>Èõ¾Ü¼Ê?6¸?ÎpÄ?+i$?%Q?MT¬?,¡E¾W¨ï?4iœ?ÉÞ¾Ù¯8¾`Îx?PuX¾Ôól¾¶‘Ø?t.¿¦]?M¾B?@ËJ¾¯‘?=Y÷¾Ÿê侊© ¾X%5?"éB¾ˆð6¾»¥È?d僾óð{?>o™¾éñ¾X ~?B¼0¾gšn¾¼r$>þÞP?=m¾_¾ÐÖ¿„e?(¿5¾€—†¾›‰?/è.¾ °Æ?,˜%¾–‡é¾….ò?SÞ?/‰?>ø;?vð?-!A??Ae?Çø¾ƒch?JÂ?tF?Ôã¾Zó?Z½ÀŒ=?Jt°¾j‘¾uÎ?5Cd?“²?K?,cÜ?:¸?rD¾ÈRT¾ÉìÞ?ÍàC?àä?ÉwÇ?9êô>eµÌ¿© U@(í»?*˜&¾˜C ¾Ž³¦?Ï'M¾ƒi`?0¼ã?&¼Ú¿¯:ö?%2?ßÉ$?A{…>ñ D¾N)¾¾>ÅU?†¦¾¥½?2.’?ñq)?Âýã?ÖM”?ÓZU¾‘ã?4"Ê?Õâ‚?Ä6?%+‚?D4?â~h¿¥E?þ¶? ±ª?3‚?’¾£n?½tX¾àcL¾ ¶~¾Ò§0?,a6?0r¤@(s?’¼?)ƒÁ?4f¾Åý.?8Þ?1’l@#Ñ6?ÉÕ¼?Ú/?6ÃR¾»bw¾y°ë?5B&?кL?ó‚?ùÛ? 87@/Þ@!^?Ú»ý¾ý0?Ñî’¾~`T?ËPZ?[È?;5x¾Æåê¾ã;?0;ø?SÇ‹¿¤/$?#ÙÝ?A6¡?3F?Îv4?*€@4‚?÷ü¸?ÕÃx@%Ñ?âò?.?Fv@\V?6öæ?"pœ¾±r†>ØÊ6?à•z?Þ¸†?/´?Ðãæ?¾`?2"Z?4©?Óä@¥C?$ÿí?,#î?ÏåZ?ÉŽþ?;´½?Þz?Öœë¾Ø(®?/×§?±d¾ÂÓA?#À ?Aĉ?Tœ0?.©„¾§rü?7L?=ðÂ?#x¾“¤l?´Ft?Ô;ھŮ¾¤Rê?Cæ`?/&¾†º¿ô?Óûç?2*R? ·?8ûö?W5D?:?8Ý:?È¢6?1p\¾5Qï?R%)?-ª ?A™Ñ½’ J¾‚— ¾~G3¾ŽJ¾‡ô®?<Êr¿"¾œ ó¾¿×?CF¾°2ñ¿³\? }¾É󞾴ニµÁ?'¬¼?Ù|Š?(ÈŠ?Eè?_¤¾@ÍG¾Ž>T>ÿA?Ï&ë?Xµˆ?'‹ä3[@ÍQ¾k±*>(”$¾×ú ¿¹–|?Ê¿³?Ü"¯¾ªdr?ÎS—¾¢û?®…¿Z•‡¾æ!=?]ô¿¡9¸?I?ÖÐî?5ZÌ?åfƒ?ÈÊÙ?*0?2tý@*?79D@èÓ?;B¾Ýžô?-  ?@2?›U?ÎØ°?Ïø¾êü?@øÆ¾•Ű?ÚÃj?,q+?l–?½>@ H¾‹?HÙŠ?Ð]?ËS?Ï Ò¾¸¥?´9U?κ}?Ú‹6?ÔmW?Ô5Y?Ë«S¾*Ø>?<Û.?Ý1Ÿ@#ö ?Ù8Õ?Oz?Èá)?8þ›?*$?6?-ƒ?-âR>²=¼?Ñ«w@% |?Ï®B¾³w²? TF?׋@?7rJ?Cù ?"–O?F9ß?†{?êd?Õ^K>Ñ Ý¾Å¶Z¾­°¼?Ä&1?‡2¾&ŠP¿He€?CÁe?U̹¾Cç¾K;ô¿Ÿ_–?Í¿©!C?AÈ¿¤.Ã?QŠ?4¾ºh½?!(1?C騾»až>i0€¾¹mû¾…Á°¿ Ð¤?¥d?5®V¾FÃ.¾x%é?@ÿþ¾¥Ï™¾¨?CÏt¾˜©H¾Û²?hDE?%¹¹?K“¾ƒÒ^?$¾pͧ¾¸ŠÜ?Ý@¾¦qJ? &?!tò¾´f~¾jí¾!¾1ɇ?BX·¿«z?&À°¾®$&?#Ûg?(4€?L§$¾q•|¾’Nà?!V)?Äe¡?×jz¾Ÿ9&?I‡ñ>¾ëº?EÝ$¾Ÿ…¾+–¹?!¼?.„?ÕQ–?è\?(…?(c†?#˜é¾™V¸¾®sú¾ú˜`¾_òT?ÛÁ‘?ÀJ?;œ'¾¦Ñ’?ؽ«?!©d?ÚY¡?hÿÀ?Ë€¾Úøm?×?$?Ü?IÌ}?6Ûj?8)é¾S}Á¾Ô ?ψ>½1C?×´ˆ¾º†J¾²”?ÏÙ¿§Å¿?Ù­?®ÓÑ?6†÷?¦??,Y?6x¿+t?T@?è –?ɯz¿z¾«HN?"ét?%,¾—ù?WKÁ¾©©?#fô?*?Š>üž&?Ø„?HK?&ƹ?Ó{u?Ð]?$.Œ?]eè¾î-¥¾Ã–¾œR?R}?ʵ¹¾ªR‡?tü?Æd‚@"ϾR²¬?Úþ–@%D€?Ïyô>°¯?‘?#â‹?à_?ÖO?/O?Á¯?½bD@À?ž?5;@'i·?6Ü?Ì4†?9XV?N«?ÝÊ?(úH?Ôrf?ÖN°¾ìDþ¾r ?±jN?MÐÔ?Êbd?2±¶?Ùf·?)¨Í?—ó?Ü‘Ö?NP–?+Ig¾àn¾©#@?>̘?5¶i?DŽ ?6á?$ý9¾«ú?¨Ð ¾YùT¾†t?9§¿Âા·6¾ZÄR?ÛÖl?VdÙ?Iùʽƒ í½Õ¿¿x_&¾Ø[¿ž‰¾¥Ùd>}D¿ Að¾·…ÿ?6é?T4Ý?3l¡?76‡¾éT ¾*'¿šÛ?L V?3ºÖ¾(¨?ÎÜ?8”ô? b`?CG?/!”?[c˜?=½!?O7Z¾¤Ä?3Q2?EºÞ?4ó ?*Mf?7Àâ½ß-.?0JľÎWž¾àô"?/hÖ?(B&?ÓØ¾Te?"€3¾™ŠÄ¾¥®h?Ût4?Ö­?>ÛŠ¾†hI?QM¾¤Cr¾–¿ y?Lf€?ÍD¾/ Ê?*‘¾ªÜM?0/B?\æÀ¾_?n?ñ;?Õ¾ ?-»¾>-€¾ØÓ’?k6@&ûI?F?ÚP½?áñ(†?Ô‰ª?ß½Â?/ƒÄ?éÔ:?C?m?äÛ³¾­ Ð?<ßA¾ž©L@"Ze½ý|^?ëD†?>.F¾´Àp?WÇ)?´Ó¾Š'¾  È¾˜§?8Ö?Ò)?ÑÀ¾\¹J?éxÅ?ÞÖp?8 &?ÒÚ@+aÜ?Í]Ó¾ÑÇÖ?3\¢?ÆZ‰?//Ž¾È‘ù?ä"?$íž?ÉÝÕ?þ6?5Êî¾OU?"Ô?Õw?Øã³?Ï·w?Ó²¯?3pZ?>þÒ?là?øÈ?I?×® ?ØÛo? È.?åk ?Ù_¿?ÃJ?+?,Èø?ÈÚx??Ð2Å?¢ôJ@$eÍ?ÎÉ=¾º9²¾±©e?Õ|”¾¼¾lº©?Êc‚?ÎK†?>B†?'[Y¾Š¿i¦>˲N?Åòå?Ï2Â?Æ?Ñ”?5Öë?Õ›Ì?12ù¾>EO?%?2¢¯¿°ç?(åt¾Ç’$?ÆMˆ?HÐÁ?&W¿q¯¾Ë ¿¢D¬¾†rT¿›á|¾ÝU0?b³º¿¯-@$ Õ¾®ªl¾™Þ„?C§i¾šñžMϾ\ãY¾ñ$E?(c}¾Âo¾M>¾)K¾…º¿¥jž¿£¸?E;±¾“E7¾sg?Hœß¾¹Dà¾v®¾”*®?-9¾×sv?LIÐ?;@š¿›o?KN¾ˆ×¾§Ã:¾¢ë¨¾[ì?Lb§¾™±Ö?'éR?8ý¾âB£¾Ÿ<†¾‡5,? #’¿Mž‚? å~?;„”?ß6?2M!¾Èßí?(5l@²R¾0‰¾­.U?6½…?JMy?Ú4þ¾™…Î?*t¹?®U~@.-?:ÿ¿?Ó8 ?5t·¾…5p¿¯é?%Äã?à3"?Ñ£p¾Žm§? ²¬?Ô²ƒ¾ ñÙ?Úu9?ÆÐš?J5?Ö}W???Dò$?©Í?-a‰?NgM?âl©@%ðÑ?â¥5¾ÀዾšâǾÕÙP?¡ÕÌ?ÖX”?>—Ú?O Ç?@¾§?·Ú?Måê?6GÞ-?Ô1?&£+¿œ%è?ÚÒÔ¾ØË¥?/ýÒ?;¤v?Ù½?+iï?)Ã?4?ÊJ8?áü?Àó?Ðâ?w°?1ºj?3 ‰¾Øoþ?6X?6»ñ?&žM?A.€@W^Ö?¥ö??üð¾“MÚ?9—a?DÍF¾û]b?×hí@#sœ?Q_g¾}›?Ú ?&8ë?/R?Ó¼‹?ÝÆA?dH?Ó6?Ì­A?$”$? ¤æ?âñÇ?&‰#¾D '?6ç‹?Ùûý?•@+›¤?P÷X?;¹É?Ëÿ\?êk3?ÜËd@$Lu?:õ…?Ù Q?-‹5@?±¶@ Gl?ÈæX¾¹¶º?Ûîˆ?¬«¤?4³½?Ö´•??6ºü?_Bã¾Î‹h?õÇ ¾‘Üž«ؾz¶"?¸n?3þ?C¤T?®º¾“[à?Ö×M?V¹•¾ˆÉM?Û?"ó@>ùáz¿ -d?Ú@;”­˜?->5?ÛIÅ?6?*2x?8׿:ö¾?92ä?Sº?9ƒ¾ûP¿³m?Iª>¿Ÿ1ô?Öýž?Ÿ?H䀾ž[ؾ· I¾¶Å‚¿¥¾¦q¼?•g¾¶ƾ‘Iæ¾Z=¾–ä˾¨G쿤4Q?%5±?6}ª?³Í¾3ë¾Nº±¾7«?¥¾o º>×N,¾˜¨ú¿žq ¾¯ Ì?(*¾ŠÀ?Sç¾›¾ ?!à0¾3Ž(¿]ɾŸž¿¤¯ ¾¬ ¿¥¹¾Œ?Ú?ôE?'Â|? ˜?ɶê?! ^?;À¾°"ྵ+3?Sʾ–Ed@,0E¾™l°?á%Š?àqT?C1ç?ð7­?ÐàÑ?CK2¾$‹u?µD¾üËÔ?ËS4¾½ïŸ¾ÁùÓ¿«¶?q(>?>õ“?(Ü@ ‰?j{!?Öú?D!Ü?-û?Ê«i?äž)?Í.?)ä¨?LeC@$9Ç?']P?APn?Ai%¾]øú?C°Ò? ªõ?×Þ?Ê!ï?]%쿳+ú?9ˆâ?Ë”\?A^\¾¸¿N¾Çô·@ Ü?-ÏF@%¬?%!U¾€×M¾‡¨¾‘oÂ?,Vv?Òyª?"*º¿ K‹?7mľW‡ö?(WÒ?×6¾®V¤?Ù¶?}…?Ñ?ÑéÑ?(ž£?Eíæ?Ï¿U?Ñz^¾§Ò4?Þ3r?/­â@l€·¾†æÀ?Ý '?ßä,?ÐÓ‡?)ÑÎ@,l9? X¥@-rÞ?Ütľ«W¿?Ú´8?9ñ5?äï¾`ã©?׿þ?1¿ ?ܗľË)¼¾Ÿ¸¾y#Ž@"ÐÙ?ÈXµ?8a–?ßÐ@¾¯öã?3Ƕ?%4*¿—…³@%œÚ¾¿‘‡?/k?Èž?ß¶4>Јà¾Ç!L?G5ì?ÓŽ?"ià?/…x?ÐõÃ?Ó4³?Ñ÷†?*ïñ?J,ß?Ùoô?Q1¦@#/8?Äžm?åÚ?º™?6Òµ?FCì?B™ ¾©˜¥¾hÊç?ØØ?ÝŒ?1:,¾¬©„?SþÞ?>”ÿ?!@b ¿ ºa?.q?Bç§?<»e¾‡ ê¾F™¯?о§&¾C‡\?0s¬¾ ;¿³©?-÷²?7"½XÏ ?H‡¾¿©†k?0Ns¿‘¼Æ¾~ ?Û¿%í“?Cp­¿¡Ã?AÒ¶?=¶ý?$`L?VÏâ?)E¬¿—㈾‰—¹?##"?Išà¾ƒ§0?J¢t?•Úè¾2 ?@ľ[ÝA¾ï=о}¼¾ñL¾êíÆ¾ä¾¥?Ìë¾xÛ¾ØØä¿¬$x¿¯(ؾÅÖL¾²æ?)†¸À±´¾ø¾®:¿›õ.?ôn?àh?6îH?#@$?Öç??G ?ÌV¹?én‘¾ÎÑ?ê徕4„?BÜ[? ö?Þ ?Ö?à&g?àšö¾’9j?&êR?ß•>ÿí־ǰf@'xÎ?ÌÏ ?WMH¾˜ã9?#a¤¾~ÿï?ÇÝ@,?Ž]?îg>ÐZà¾Nb?]b?Mµ9?Þõɾgí?Îiˆ?Ñ8?Íȉ?Îa;?Vÿ?=϶?"eî?&DH? ” ?V ²¿ H?3Pi?F[t@+bn?èÊ?6à|¾ão¦?» ?)¸<¾‰/&?46?É)@v?rC?Ít%?8¶~¾±7à?6aÿ?ÁVc?,oÀ?>“3?ÓÀ?Íî?Êw˜>ãa¹?ÉŽ?-*–?áŒA?ÉøR@Ü^?È‘1?Ð4n?È?áë©?-jÕ?ÝB@^žO@&¿?ý8?ЃR¾¸h?4š›?ËH#@%Ö?5K®?j')?Ïâ-?Ê3Z?Ö8Z?;?×"Õ¾¡ù(?"¸?$ñJ?$¼Ü?É Ã? Å&?*ß×? 8F?'8¨¾ÇÃ?R¹U?ï’?GY@ÁN¾ lG?0?:9Ñ?/ÉŸ?6‡˜?OÅz¿¹‘?ÈAè?€¶J¿Ÿ¡¿?0¢ú?Iåó?9; ŒÁ¾Z½¾°ÏÛ¾)I_¿ŸtÊ?.ÃʾÁMŽ?>‚F?+.d¿Œ8¾;M§?^8¾…-{?>¨$¾€ô3¾œšv?ÕÔ¶?wG>µ×m¾ÛÜ?;߯?8xú¾774¾dÍ`?7®X? ª!¾¬õľ‘̆½Ío«¾–ˆd?5Ç—?N¨M¿¢p¿¾~‰¿¿¡R¬¾ÂOL¿‡¸?,Žã>ÇÀ‚?Ó,M¾~<™?7s$¾ƒb¿¡¥”?µQ?γ?ÏÐ?@3ľåM ¾;˾ŠÈù?5Q†?:I¢¿§8ó?AíD?>ïÑ?9Á¯?=’Œ?'¾2¾H?&Õå?7 ~¾)*ÿ¿¡v?Ýeå?ÒÒ?é…¨?]Ô?'‚®¾ÆÃî¾ç½ª?2¸$@$(?%y?Ô#?Û+™?0~s? þ?Øl¿®çØ?$?¾kãl?ãã$?A Ì@7½¾u ? M@% j?Ñ…®?3­@?A‡?+Ï´?± ¾™øø¾ë²¾´8q¾øgø?Ò´?àˆµ¾ Ît?;Ô@/«Ä?ׯ´?¾”|?ÊŸÕ?Ï/ø¿×@$q?QZ£?É•@#™?ºÆ?áD@$Á¸?1?Õ9?Å ?Ö›q¾>hÍ?Ï~ë?¿}Š?ÏBî?Ô@??0Sæ?áGH?ÈTÕ?ÛM¬?Ù¸‘@(¶ ¾þÖ¾˜µ/?àÖ?@“J?ܵ‡?üo?ÓÙ@$o?ÿ°?)ê?×’?â›Ü?ÖæG?Û“?<ÂR¾Ó‹ô?3'ò?ÛB?1a“?Û\È?Éþ|?ص ? ¦ù¾½Å0?ÎÆÝ@¡Ò?ÆV?GB ?+cN?ê?¤?¸•F@+R½ÊÖ0¾»:ÿ?J?Ä’”?%í˾ÚN%>å¨?0èd?çÎ?×x?iÜ€?1dž¿ŽÔÇ?+™<½š"N?8&·¾“¾5™V?iÚi¿«¥Ø?@X•¾xµ¹?HJ/¾,ž¿›ì?@ƒò¾Tº¾ñP*¾´Gâ¾ÃÊ?=n¾–¤³?W…½?ˆÃ?B ¾Ä(“½ƒ¢¾_ýݾI’¾x,?¾£È¾”N‚?>½å?28P?R“?Hm°¾ªgN?4êÚ¾¤ÔÜ?S;B¿«o?3À´?!cã?$*<¾QýX¾µ[C¾— ë?/Ôâ?/5?8„¾‚Ùf?7g\?*é¤?ÒvÔ¾ƒtd?2×?Bx_?L&Œ¾jlé?0y¶?Õã?ÆÓ?Cˆ}?⋽?" O¾À¡ü?4¼ß?Ì…Ÿ? ”l?\×Å?@vÄ??ñ„?Çñ?Ò# ?Ûf<¾Í±¾°Šå?ÅUr?êU¿§Ó?4EÔ?˜‚?2!¸¾àÖ?Ÿ-?à½A?Ë©?l¨?ÝŒs?Íͳ?;»4?ßX@?áÀ»¾áªÇ?_;/?K ?áÊJ?×ýˆ?ØŽ‘?ê°®?áäz?s?ÅØ¢?*á#½­2ð??Ýû?þŽ®?Ç1?C-Ò@m媾p…¢@!<~@ P¤?®ŸÓ?I ª@$ p?2Ê/@!èD?Kÿ?¸=…¾snA@Mî?#˜Ö@‚®@*¿?#¨ ?R½€?%;v?Ûº?!Ã,@Cc6?0nò@#°?Ó¯Ú?(Q@s?Q? ?Ç?3!‘? u’¾Õ)’¾ÁÁì?*™ ?(…žò ì?"áê?HÅç?"ô?ÝÜ?@ €?ÕXæ? ?<Â?Å9‚¾­,â?ÍÈá?'¼]@\p¿œ»6¾ÅBD?Jak¾ä[õ?5åo¾·«q¾˜_ñ¾ 4í¾]¾‰ac?Dü¿‹€f?Od­>÷0-¾§™0?;"?úE?AÙ(¾…ü¾„óý?(} ¾¬”?;&¿$º?ë¾¾ÄHd?C€¾aUJ?<–j¾Ÿ×–¾ŒÄ̾ߌ?3R¾~ÉÂ? Öÿ¿‹”×?RÞ¼¿›ÿÿ¾¬¸?9ľ²bV?·±¶¾½’о€BÝ?©s¾°Áj?8[¿‘E ?/ÖŠ¾€DÑ?1…ý?2&4?,¾8“ï?k`:?V=¾ƒð¾)Û4?-¿ò?1”ý?<𾍏 ?Öd:¾I&?ÙÙ?Ûãî?×¹¯À­?F"Í?Çœm?DÄ?Gzç?#^¾Š?Cq†?Ù›i?¨œ¾‚>à?$É?àœ³?ÇÚå?Ô @ц?%(ò?$À?ß?ƒç>ù>f¾Ìw€?´ÍƾÞ?^?öî?"¸‚?È!¾’Ò¨@' ?án¾À[:?ª;?Ë%¼?®/ð?Û˜?Ìg¾?Ùž¬?ÉÑù?䦘¿³ˆ*¾’) ?:þÆ¿¡8®?ºR¶@(??éG?8Úè?ÕQ¡?¦?Èͦ?Û˜m?ÒqØ?ÕŽJ?ÁÈ?*@~?xú?R?í§Ø¾v“?Èfˆ?Ô+S?¹>º@Æ @"CY?àî“?×H?ép?¿È”?×ÌÄ?Ñ*X?Ñ3û@+C>]ÐÜ@#–ì?ÅÜÊ?ÂUš@-z?ÕôŠ?2¸‡?'G?,‚Ù?Üçw?Ú„ ¾@ÖŠ?Ç@ú?)=®?R7ƒ?È™N¾£­æ?60j?O+Å?&RÞ?Ùå?#p?âPC@*­? ö?1Œƒ?;þ2?Їÿ?Aûô?Ø‚Å?2å?ôÃ?!È?Ô“ ?;Þ¦?×¾^?Ç3Ê?³f?Ù®´?(¸?.-@#1¡¾!ˆö?TRô>ØÕë?Ì/?.‡œ?ÑÉ‚?Ùñç¾Ë$B¾Ã´¹?ÖF¾…¾`?Ôž?⡾ÄB¾­Ö?άT?ÔÔ?%@7Ͼ¥ A?K¯-?$Ë?¿Ð?µ¼?T“/¿±\?=:¦?5Þ¾Kª5¾ÂÉ?;[ö¾¨¤¾•Çá¾¢¨¨?5aG?Aþ¾Ty3?n­¾D²"?1úÍ?D˾J5%¾ {?=®?2P>ò×ù¿³®¾ŠS¾OòŒ¾Î€¾)?>þ$¿¡}¾u]é?+‹ž?k¾¾d}ð¿ óz¾žP ?¥è¿‘¿  Q¾–Á¤?ï?Oðš¾ãi$¾=¾?ÌZÿ?H Ó?6c·?D³S?*éB?:¯G¾Ïä¶?º '¾” 2?3)G?7þF?Ìð¡@' ?*Ñ׿û¤?ýÜ?=ú÷?BÄ>¾Qá˜?#50?ãÒ ?3¨>M¹¾‘N?2?/üÌ?À–?#($?/¾?87Ø?Íyü?/ç!@.ÓP?IÉ ?J„ ?FOµ?Ç'8¾…‰º?Ĩ¿•í@%c?Ýðt?&+M?ؘ?χ±@+bÐ?ÒÕ¾g-¾£ÐÙ?0˜#? K?K^>û‰€¾Šoü?)`­?Ÿo?Ü3v¾—ê1¾‰–Ç?ðp?Èš?Õtá?ú²¾/Úu@(Åž?Ûël?'Æ@'HP¾²Õr@(–H?ÐÏ-?ÛLO?ʈ•?Ñ!^@)ºÆ@*ó?Õä²@'!ö?ØÒçÚ?IÙ?Õ¡j?áÓZ?.ýï?ÐEw?Þ„Ã? ?—.?K{¾Ê…K?ïŽ?Åîx?ÒÄo?Újj? g–?Ïþk@#2…¾ã7|?7Lé?Ò»>ç6?Ò„U?*ð?A¾½.?3c•¾¢8’?-½¹?2Me@™Ù²¾÷ÓÛ?Yß ¾ŽÙA¿ r¾ÃJý?1F®?3‹N¾®¥é¾’»Õ?9jb¿ nÒ¾eIf¾^ù3?G),¿ªËÚ¾ÂÐì¾}èe¾aý?HÛZ¾#âp¾½çˆ¾‰*¬?Fœ˜¿«˜?V,å¼íi¾­Xþµ@’¾z´?4þ´¾W ¬½ÿÚZ>ã¿O?òÙR?çÝñ¾IxG?Ù û?8¤u?#/澨³ø?m?'.}?U!?ă ?é¼?Üè¼¾¦f?A ¤¾ÚNV?Ò|k?#Æ`?Ù?ÏQ>?>PÅ?GT†?â÷ô?Õ @找Tt´?½)ž?ÈÛ…?l ¾˜Cú¾ØZ?ת€?/*h?#):?0¢#?Ü;œ¾w|æ?$°? °? ѵ?$þœ?9?7(®¾â0À?ÝP?Gp?<ó?Ñ\ß>þö0?Ä {?Vy–?,8¶>ãé?oN@!óÁ?”ƒ¾ :¾?-b?½—”@þŒ?D œ? o@?<¦¾ìø?/°F?ÍÄ¥@.)?DJp?ŽÝ@$Þµ?\”?-Õ;?α7?݉6?ÝXž?0›%?Ÿ8f?2Ÿô?ï >õ¼2?Ò¹Þ@)æ]??>h>ûÄ¿ˆþ¾¡ˆ~?àiV¾ŠÈF?ß:œ? ³I?Ø!W?ÒØ?×’¢?Áèö@%?¨s?Ðö„¿ÚP?CË5?Ìë?äÕó¾Í8®?5"j?%Ëx>ÏÃŒ?ÎA?Ëvà?fm¾¬ÐÀ?ÉJ?+à8? ú?¤îÒ??Ëb.?3Ho?"Õ5? ”?âëú?'?à?16o¾Öè ?ÌŽv¾Œ¤.¾‡¡r?) ?‘D¾Î9ø¾4y¾‘×–?$Zê¿ )x?Ç-?ë?9P?¿*¾–ñ¾Ä@@¾0Ç~?ÐxB¿Ž?Ç€F?B«ƒ?Ïܾ‰þf¾G~Ü?âÈ? ]'?&”ø¾®÷d?"Ú°?ڦ辨/¾§Pv¾¤¹T@)ÿûÁ?"?j"?çÏU?¼Ü?Ù†ö?ËÝo?ÖS¯?Ìå–@k:"?çýø?8?P¼? ?×ß¶¾˜ðÆ@&Ú1?Ë …@(Ú?1š‚?Æ÷¾@&!8@*ò?ÒK?!Ÿ@!°-¾«t"?×-þ?(•©?ª?è'¾ê¶°? D?:Öa?Ð\@'Qª?0 r¾ÃdT@.|徚 ?#ÇÐ?:ؾÙ,?Ï4ô?Üb0¾Ö=?(ŒÑ@#@_???ÎÚæ?&n@(|?ØMý?÷¨?)%Ö¾¼9™>ÞÞ? à4? 3N¾§À?-ð¬?8€Ø?-ˆ¾×X ¾­¾x?Ó(?%T³?Ú®µ?àê4?Îr¦?#Óÿ¿¡fî?F¤?Õô€?Æ_@+ît¾–Ȇ¾ÁQO?Huë?5%>õ˜è?<_?:Ô?6¶Ð?EÜf?ÒzßB‰¡Î¾}«¾$Äm?.OŸ?‚ú?Co:¾/l¾bæ?UÓ?Ð#¥?Wƒ³¾z4¾‹lþ?0wà?LJ­¾“rÐ?M?¾`-å?K7Ö?8O­?c|Á¾¦Ú?;3E?ãeŠ¿1ä?ÆäG¾¶‡$¾¦Ä??=?s ¾†$8¾Šµÿ¾5›@?9÷0¾–¹æ¾ŒMé¿ a¡?5¦©¾ƒ¡Ð¾ŸÕ¸?6˜;¾:'Ú?"Q¾€oµ?D͘¾¥Z5¾J¦ ¿±†¾†pª?9Þ¿ ¾?:¡;?XU>Ñ|¾OE ?9Fœ½²rž?8âª?L=o?!¾?Bdt¾ÆÍ?*u"?+ˆf?F>R¾°';?zH?ã@¾Üºò¾‘,f?Þô;?3ݾ o¡?Ô€•?,Éø?0ö¾R“ ?Óç?B‡w¾²M@?´ŒŒ@,⾜?Ôh¿?ÖI7?òJØ?3¥?Ùáà?UåÌ@'·ý@‰ß?&²Æ??0«ø?88 ?&c?ãÛc?ä‰G?Ý G?DuP?ß¡?ÈÐd¾™y?ÐH?Ù¤P@.1ô?é§»?.›W?8o^?A,±¾§ž?Ñ?:ªÔ? d?&°?ÖMü¾½FÇ?Üøâ?17K?Ç?Ý•n?¸™U@+ݸ¾Ç*Š?Êùb?L¹Ñ>¶j¤¾9‚?9oà@"Ü?7$J?%Ñf?á.è>§TÄ?ÌEV? i"?Û‘Ý?%—?Ù%³?7x8?Ùa\?Ãoþ@!?4@%3N?*ø„?Ì™–@a:?Òá?Ãtý?0W?@P|¾Œ™…?ÚÆÊ?Ë È@^ªV?Z?Ü×5?ÕS?.ïù@|?ØÐè?Ö P?æâ?É™á?2¦…?ƒ?0ôÐ?Ìh-?ÖÄ@ßK¾¨¶Ð?Ö‹é?×O?ç @%4×? ?1|ï¾»†¿·ˆ«?Ú³=?!nZ?ÇI?éò?Öé\?/¿A>áæ?àŒÂ¾±|?2@k?Ò Š?Ð×Á¾€ø@?Ñ༾›[:?"”?ÌYU?(Z?'CѾÏ(\?)$=CQã;?-à…½8Öž¾º«?D‘”¾•3r½ñbÚ¾‚M8¾²kä¾Vù=¾råÝ?SgÕ¾]߇?D›‘¾‘o,?S‡#¾és?K¬Æ¾±ÏÔ¾n÷?Qc¿¾ °r¾MF¾ÿK?.¼¾ž}¼¿¬ö?°N¾QÚ ¾“q¾b2‡?CP¾;b²¾ÒAZ?_ò¾|¿Œ?¼??¨¾¯ß|?Ý\°¾ÍTª?5Û"?ÖBоµº:?fdU? °Þ¾x‘¤¾–[y¾‰oà?HO“¾˜z?Fcâ?ÞÐ6?åµ¾ Ê;?!½U?ÒW ?&®x?Ó¬?Åå&¾rèx?,’ ?ÖÅ(?Füo¿“5?>Ä=¾m?ÎÚ¡¾™Àª?JË爾 &¸?5o½(ßZ¾~ ¾A¿˜P?DSq?FÔ|¾xm¥¾Ã#€¾°‚оÈwª?%Œ?º¼¾jñi?×úæ?>©¾rW’¿™žÆ¾±¢B¾ ÷>¾Xõ»>Ù®^¾¥ù¾…É0¾°bƒ?ô¾ ½˜?½ò¾¯åñ?Ø7Ø?0Ë ?EB?¸NྋÉ@?"Ñ@'“Y?Öq4?冉?lw??š¹?Ò¾À°Ö?,ç&¾˜.…>ç÷;¾†?Þé ?Ôs¾“\î?:ÀŒ¿¬)‚¾V#,?˾¾Öv’¿®:w¾(k¢?- ë?J)Z?˦Îv?"9+¾ƒhB?ÅK5?X…ã?*PÏ?Ï`–?ÏT?ÄBÖ?9TÅ@"ß?Jð?*È´?2˾?â¸@(fù?Iû¯?ñ@@%@@CB?ÚQ ? )È?E?ªT?Ïd©?Jäc?×ÜV@&ô?Edô?9Ëú@‡^?Ð…5?Ï%?¨A?æu½?Öî@,¯¤?ÅD¾xìÚ?*Vœ¿š"?àáô?Ô6Ô?Osþ¾•©ú@±?Øx ?JÇ@)¤@"¥?—Æb? ×?ØßÖ?×ã6?ïe"? Áû?RIò?ÏPÃ?C@c?Ð|?ܨl?*?¿°O?‚?ÇÌ¡?2È@jù?T¾û”?σd¾nÜ?,*F?@Ö?ÕˆÀ¾«V^?9ß ?·¤?.÷€¾Ž)N?!iN?ãF̾ȵµ?ÑâN@/Úm?<»?MÖ?©\?É]²¾£x?/ަ?T«¾‰/]?7Yï?/ü±?àÒe??ä´ABQ"¾ŸêY¾„­¨?Ké?<è˾Õl ?° ™?Ý™¾¨#›¿¢V¾š.¾zÎd¾µÇe?0XоЍÂ?P‚¥?FB¾³Â?@ØV¾¢Ž„¾·8ø?\ð̾¡ ƾð.–¾KÐM?:L_?r‚u?ÍÇ2¾keø¿é¿?;‡¾” V¾Î‚¾”A¡?˶¾eMÊ?$O?Bžv¾ºî^?'íp?ÇF“?,ȾŽP?|.¾®‹?*ó?X¦¾‰Ì-?>­L?ÍÈ•?,Îl¾šlS?ç=·? ¾¥a¢?#Ý3?8þƒ?¹¾Åfð?Òn…?ÑÔ¾”’|¾¼]¾ç¸¨?7Øð?‡J?9iÓ¾¾Ù6?â›u?d®?@#iå@$c¹?Nî?5%3¾–¶–?®±Þ¾£+¨¾Ë ˜?Ò…Í?>ò¹?@— ?Aø@*¾)?+ä?-¢X?[¶N?M¹>ÿùx?C†„?wÈ@/F?µ¥x@%i©¾¥J‚?+L?+ÕV?4PF?#¿T?%#¸?AÒo?)Gò?óò?ÕI@d×?✡¾ìì@jÁ?Ø£?Ù‚?à޾â"z¾¹e?æô¸?!Ï*?Ó&¡?ß%u?#V™@#Þ™@²ÊN@"ÐÐ?×ÎØ?Dp1@%1Ó?D†B?$Û?Á{@)ä ?Õ6?ÞÎ?.†Ë?Ùý?3<†@)Š??'U}?Ñeµ@&8?Ó „?-"N?Ùø@::@1i?ÝYÕ@+£“@e[@l†?Ózd?Ûƒ®?Êex@!ý@?3˜¾Ù ö?Œ-@+Ãv?¾…>ëV¼@$þ¾‡ÿ? Ÿf?$®å?æžÆ?ÖÒ?ÊÇÈ?È;@'kk@"u¡?Èþ˜?Ýn¾ŸÅI>RX8?$mÞ?ä4¾ËbÖ?BÚÇ?ÝN?3‡?'Œ >é0Z?Ì?Ä?ÜfÇ?ÔÿN?ÙO?½¤q?)r ?¶øW?Õ!??Ñ`o?&Ý–?/f?,i@?¼à?7X@¾¦{È¾Ž¡~¾œ¿¾¥‚â?Iø? ›¾?,2@vMоÐi‚¾°Œ:>îX¾\0È?:Ψ?ËÎd?DÖɾ€7v=1¬ä?'4¾¹È?@OÍ¿¤•?GØ?Aü½¾b®¾ka—¾I³;?ÜΖ?/ û?O`¿¾ÍÀ ¿ª´E?Ýñ ¾)wƾm?=ÒK¾¨`0¾°öd¾~òÒ¾²z¾lõQ?C„?N8U¾_Ûó¾¶ ?DêÛ?×^,¾“j¬?ÁaF?/0 ?<Á¾Íf›?Ù¡ž@χA…O@'¸ ¾rW(¾Ÿà?%Ò¶?*6¿¢>"?8ŒR¾7?>Xo?M†d¾›aU@&‰Ì?áË?Éuâ?ÕâÜ?àŸ?Á‘Ñ?'ãà?ÈÇý?/}Æ>ÿÄx¾¿3?×…Ó¾½^,?4¢ì¾¨hp?!Ó?Üü¾¾ì–¾`Ã'?Ë`? ½?Í£?Û£À¾“Jñ?(¯u¾ýP]¾g¦?@Ü?!ÔÌ?ÌJç?Ù!Û?Žî?æý,?ÀfP?Nž&?Ûe¡?F ­@$¸n?4oêJ¶?Ï.Û¾¾¢ª¾Àé€?(£?l€Z? ¾x?¡ö?ÇÂ-¾nš3?Le§>ÕjŽ?Bdû?`Ô?ÕRr?°IÙ?*Z´?èz@e»?âq³?Î]q?Ôÿ{?ËZ?e@õ§?Ï@ü@#òŸ@*@»?&]?ßö@#5X?¿%·?ÞöÁ?Ö›?÷@&ä&?Ý7?6õ?žAj@¥A‹FY@'@/ˆ¼@) p?«<ñ?¾|•?1)ç?Ò‡ ?¾Ý­>Ñë3?Fºè?'™2?¹ÅÆ@+@&çð@.ÓV?&§@“?%ª²?Ðtá?Õõp?´{€¾Í…â?¼t&?Ô?27?éÕ]¾Žé¿§„k¿–.F¾®šB¿— ?7¬v?H¿¾… Ú¾³e±¾„Zœ?8n®?Ø!]¾¤Xh?$HH@¯z@)åd¾—–¶¾f¯Œ?L<¾Æ›è¾‡à¿£ã?0†²?:°Æ¾ƒÇ?ávŒ?ái£?0&Æ@3¾Bm©ËB>÷#¾§S?ÝÁ/?$ÃÄ?Lå ?Jt¾¦n?0×o¾€è†¾ j?Ñ*3?Ì^p?.«©?#À¾ÈÁ§?8‰ì?4ÌÓ¾_)¾Œz$?Êö{@iÐ…?:ç1?A‚?>…_?;;Ü?Ó9?̉x?BJT?ºé½¾ïöê?A‡H?2 @¿©¹Ý@"Ë©@,œ“?É¿û?4më7+?È„â?GŽÈ@%j§?ÇÖÄ@'‘ƒ?ËY?;I\?Þÿy?Hß;?"ìd?Ìèˆ@"w®?7"?-úZ¾Ÿà?NI4¾ÜºT@'?Ì?ÒùÏ@%jì¾BC? â$?.á;¾ò­¶?ÚrU@%q=?9æþ?º(ü?Ëxe?1õd?ÚÆ@#Ô§?DJ?=>¯?ã>L?'A?< Æ?ö[?!פ¿(:?)„¾­’M?%—ø¾þ5?=Á¾Þ쌿²‘Ò?ÏÉ9?ÒY¾ÆÜ?Ðæî?Ýs¾-üÐ?( S@(þ¾ÐÓF?‚h²?F/?#0¾Ájj?->¤¾~o¾šl%?Ng?¸½W?PI_?3PÈ?8¾~}®?6Ðq?*>ê?N–?¡õ?™.H¾˜hQ?Êôû?:]¢¾¬³â?¼#ä?4põ?6¬¬¾§ôê?T¤?sf?hÍe@(à-¾ŒÙ2?=Æš¾kAÂ?ì]¾”+z?׊¾À|f?Òúù?ãJX?4Š‚?5³ò?DJW?Ë~?-¦?ÑáD?*}N?Õ½?FC~?Dl*?åYý?Nt@)Ç?ô³?(yø?+ÊM?$g¶?9:^?9p¼?R‰è@##3¾ $?Ú.T?/÷†¾å—…>ÎÕf?/cs@'yÙ@*zF¾½ûµ?%~0?# †@MÄs?WN?ÅùZ? ´C?ÝÑ@ðöBضÔBjžAFï@!0 @*Œ]?S½¦?âëõ?àg@?-oë?Ù™´?Ó?1N??ΰ•@@˜‚?ÔÄÊ?Ôê8?ØrŽ@%~x?ÓO'?Ø„5@*Âb?ÕÏ-?Ø‚?áD@#H¦¾¬J? (¾»uË@$r?Õ*ÿ@&Êy?Ðþ ? ò@o5?ܨÁ?Æãž?(è¦?ÞÂÈ?Õ6$?â‰@'lµ?&ï‹>øB?Ït½@gÝ‘@\"?Ñk¹?Ëè?3OÎ@)„ß?ÌE?Ú¿²–D?Mª„?U> ¿å™?GlI?ÌCK?6ÎmØ@,È?Éáæ?=Aç?Ú3ð?9¬$¾‚Ž£?6w?Öƒ]¾´[‘¾µ^Z=Y!€?ÒÍË>ÿ€›?Ï©?×àµ@.cA?DL¾—Ås?(CO?G!˜?^Ô¾ž·¼¿Z+ã?!9¿ŽzҾȺ"¾#{Ⱦ‚VÀ¾: ½?7Eh?F¡¾¾ÌR¾³ŸF?ÝÒʾš¥q¾7èª?4ã.?-?Ëø]¾ŸAà?ÛÈ ?<ƒ:¾PZ?5‡Ò¾œ±?)«Ž¾mîà?1sÜ?C,®?ÎÜÖ?Cû¾¾h8¾‘߃¾«wô¾GŸƒ¾˜ž©¾«@?NÆy?ÓR¶¾‚€ ¿›á‰?(±¿–˜î?+«Ã¾¡fl¾Ñ7„?N?:ë?!ÿi?”Çß?:ܾŽC,?öñ?G§$¾áŒ? -ë?+¥Î?Ç`?-4¾’Ò¾‹­.¾›Ðõ¾éÏ+?ãˆ6@$ý?Ïb(¾WjÉ?6ït?жT?:kñ?5w?ÏMÝ?Òt}?ÛeY?&Ý?â¦?1]®?Ýx¾dè?"ë?â8Ï?3où?Ö™¥?Öy?6äŸ?'ýv?)dV?Ý È?ó?9@/̬>"9|¾È ¼?2ß?04;?#ÈÏ?,ñ @iÃ?Bòa¾‚'?ÕóX?Ò‡Â@n%h?©?"@%Àè¾µµÔ?3P?ߢü¾¤K1?ß½Ú?ÕVJ?΂ì?Ò9?ÐÃÉ@$¸?ßi¿BB˜C/Ä‘A…Nf?ßä?ËŠ?Çç~?É13@!ø?×-j@)`Ê?ÜoÌ?3§Õ@*3@ˆU ?¾ÿœ@BÓ?Ñ„%?è¥Ú@b ?Æ9œ?AôX@&´„@)4h?å @`h@aäª?!„D@'x©?è`@.?ÝK¤?í8È?±Ï/?AÕ—?'š?Ð’:¾¦_T@)’ì@"/­2?5P`?1Á?ÙÄQ? ˜ß?Fz ?!¤0?Ø4'?FS?ÑQf¾¸7*¿Iå•>ÎFÔ?H´ü¾ê?¾Gb¾¸ †¾¡Í#¿£T,@%H ¿_È?Pþ3¾‚â¾ –t?JåS; ?J¢¾…æò?BM˜?0òt¾¡²à¿© V½ý- ¾žÂ*¾«oÆ?Ëú·¿‘~n¾)v<¾“̾dS8¾ Ç?C^¿²å ?K¾ŒVþ?:„?A1辪V³¾nNt¾|1 ½”/ ¾¶oÄ?B¬+>¹.È¿šVؾ }k?WG<¾üŒ¾u÷1¾ºÙ¶¾føã?BŽ?Eñç?5ÙÂ?C|U?N¿§w$¾§Z]?¶?E…´?)¥¼?Ï×à?ËÂ'?"Ò‰?Cøï?7ù¶?9E¾À0m?>­1?"° ?NèW?*<‘¿7侫oä?ÛÇö??Ò).?2¸V?7¨4¾MœØ¾“åh?å?GDâ¾Qð‚?ML·¾«æê? ©ó?3Jl?V…«@$Br?1g¾ªöN?F@%9p?Ýç£? Qú?>ÿª?z3¾Œ†ª¾»/î?Îý? -?”È?ÙŸð?Ý—í¾ž”?@ž?Ò (?!˜ñ?ƳW?æíÞ>üY?ÛãQ@"Ô?Û\ø?ÜLÔ?ع_?HP’¾€µj?Û»?Òfu?à’?×ÿ/?#@0&»BÐÀÇ@¯NQ@giÅ?à°@*J?Û7@+h§? V?Ù}ž?ÀËÅ@ |?Ó>‚?ßOT?Ïøú?%ƒk@)ŸS?E}J@(´ ?ÔvÏ?׳?1 ¦?¿ã?=D?I4]@%7@.!'@.„ê@.‡~?#ˆ_?ÎZ†?fÊ??{]@)hg@,ó²?Ô`‡@,¯Ð?Èk{¾@‹ ?+`,@,VD?"eÌ?-ÞT?ÀœÞ@l 7?à*.?×n˜?ãô?Ó£?àE?üF?Ø>?Õ[z?3@F?Ý"‰?6°t?K`7?KX…?Ôצ?ўþ¦+?5‘Ö?9?4×s?-œª?ÄT‰?3Ñÿ?.ÓÚ?+¾?#+€¾“»š?=ðs?ËJ?ÕÇÿ?ܳÜ?Å ß@*mÉ?",È?ÜÓû¾¾ á?;Åâ?Ñ]í¾¤Bì?Ý,9?)ø?,e¿mÂú?6˜$?uCû¾ŠÓ¾¼j¾~Ul¿­êᾯD?R”M?Ü](¾E”"¿¤L8¿›¡¸¾›Áæ¾s¼Q?=³”?;h?Jœ¤¾°e,?(›çÿ¾ÂŸ¿¡Jܾ•͸?VË€¾]¼1¿˜B)¾vJˆ?¾G;E¾`„ ?2s?9v«?,)ù¾UßG?X?en? t?=Ö¿©Ð:?Ùq ¾¯ '¾Ëký¿¢2Û¾Í5î?,qé¾…82¾Åäw?1d²¾¼9—¾Œñ§¾žà‘¾­Cö¿¦?4ÞȾ“ÿÄ?ß ?<îq?;Ô¾?ã±:?#¼¾Ø?4I?ÓŠû?Í™¾½œæ?Eù\?Z^¾Ž2Ž?4ãZ?3ˆò?*€D?ß Í¾…E?Ný?£’?HgY?B>ùTå?Ñs?Ј@#‘ @(·;?ÌÏ©?Èî ?Æh?ÔGÞ@(YÉ?Ýf?ÏÎ?Ïx²@&à?Ës?ur?Ö[r?ÔÁ‰?Õˆ³?§žL@$µF@%j»@lÎ?Çi‚?ȼé?Ò·m@)If?I¤Þ?×D/?ʶj?Ñaë@'›§?Ä),?²y?S¸‹?Õñ?Ñ) ?=}F?Ö‘ú?àˆŠ?Dp?'r@.«?5M†?&ïr?Ò@'Å¥?Û‡‰?Ñõ—?] 1?˶P?É{í?5]-?Íj“¾òÂÀ?²Ä¾?ÌŸ?Ð-±?ÁÎÌ?@Þ…?Ì7¾”·?Ìþ;?îþ*?.¶q?-L­?Âzï¾¶ßÀ?]†é¾~:µ?>žª¾–¦J¾E-?2É'¾ µ!?×O?? ?>ïò?lT;ɱ¾M=B¿Cë¿™:1¾­Ì`¾FŽ?Zw¾„v¿¨ä°?ÔË´?-µB¾¥}??s~?P"?0ž’Rw?IÕ ¾¢«?2ql¾_B?'e?#æÇ?4[s¾•ËÜ?&,(¾¾S»??¥¾X‘-ÀDG¾§ý¾5”?D[!¾Š7?I¶k?E亿ŸÝ]¿³²"?5Eh¾H‹2? 6?.Fæ?L†?A@ü¾É¡V??Ç¢?¦Zº?ÊñU?8G?0ë`?Ò«€?˜FO?ÐD\?@Ü?Pì?ô?Ë…?Taª?J²H?+D¾•­ý?Ç;~?6?OI$?ÍX‰?]ê? ˆç?LêO?æê?ÏhË?æÎ@1½Œ?Ô €?;åÿ¾Lh£?ÓÀ¾a8à?ÙK·¾¦È@$Ÿà?ÒçT?~?Û ?ÝRu?Ö;S?p*?M3?ÇlÔ@"÷@+{Ù@lI@$©?%)–@&bð?Ñyå?×–Ä@)øè?Ì“`?Ëb?Ü‚?ØÙô?Ó‘?Ü0“?E‘@'@,’?Ø­…?ÎÔ5¾…V’?ÐÌF?ð¦º@g´z?¾³­@-“?Èâ„@)ºÆ@b›!?%fp@dÙÌ?Ã@?œª]?عØ?ÌÐ|@!ý?Î H? . @+ì€?ßô@!Z?HŽ ?'¢?Óš?ÐfG?ÜX•?Ø>9@”šñ?+ϾŠÎ°@0Y@P?)™ý?#]É?Lz@Vï†? š?$²?âu—@(~|?1d˜¾ãP¤?E?ÚÝÈ?Ç-à?É1¾?ÚH~@-8?ÒxÕ?ÓFV¾­°?!­ì?Úâ¥?Ü£ù?Ó!B¾ÀÛr¾¶VP?0Ÿ¨¾‘›Æ?2ÂJ?ä£6?žá?×*?6Ö0>òxx¾¨l"?H[l?¤Ô??ü?b?SNè@ ?=BÞ¾—´p¾Ôq¦¿±!‹¾Ñ‚ï?0€X?-÷¡?×,´?|®¾®¿¾.÷@½ùÞ¾»ß¿­;u? ÇN>¾"¸¿™ê‰¾ÇåD¾i×ú¾!ûj?QÄÈ¿¦î8¾•Àœ?I[©¾y¾|Û¾¢)›¾‰很8ò¾оˆŽý¾›ìϾEFI¾ÝH׿§Ì ¾û†ÿ¾›Í0¾¡ Ô?*NT½®»?Iï~¾ƒ-ñ¾f»@¿‘;s?Ó…°¿±g¿¯bk?7a¼¾p Í¾§£â?<¢f? †?;#’¾©Û ?<ˆˆ¾€Ê5¾’~R?àUØ?)Øç¿¬ªŠ?Còõ¿§Ï3?S˜3?ÂL?T“·?fb?™A§?x¾lZÌ?`[V<5?8Ê?h„\?×¥€¾¯r?Òî?>F ?€¾tä?á×?J«½>ænË?ËŽ@)Ÿë?6¹ð?>©Ã?Ý,¯?85w?F:¯?Ɉ¾ Ü?ÝBd?Ä$Z?¸ÌÔ@)ì?Cþ?"ö?/ˆ±?Ú{ã?ÌÍ?IŠ@%N§@ m?ä‰ ?FHh>Êw]? |?]?ÑöH?Ÿ¦?Öòu?Ëû‘?6B?=«ß?Úi?äò¢@eù?ܦ>?ØÖ"¾_Æa@.{e?@G%?ÕÞ½¢ ?ËÊá?® ?Ý·¶@(¢:@,Ÿ“@#ú‚?ÐàÍ@,ë!?%áx?îD@i±—@Bá@gE@'ŒS@/$ ?ßp;@aUÌ?ÜÛç@*ô’@gU?Að?Ùÿò?Ð!ü@&e??߀U?ËR:?ÐcQ@(×§@)ÄÙ?©­B@m{N?<&œ?×ÝU?ÖˆM?B¥÷@'µ·?NLg?ÐÙ@+’@%›@(´ì?Öß"¾”†f?-­L?Ú,@á?Õy?á*é?Üp?2«˜¾‚›F?8–?ן=‹?è?%õ ?Ø,â?Þ—¦?Фo?Ç (?Õ¦þ?O:T?ÊzB¿˜‹³?Fb?¯q?$H¢?Ô½Š?ˆf?(>û1”?Ë?Ød뾫ã»?_]m? \‡¾Ð›Ê?<"t?(𺿹짾ã·¾¶)¾œÛ®?ÑnÌ?9h©?&Õß¿¥„?áÔ¾˜¤ ¾¿§Q?· ø¾ á¾Iº¾ &X??ÎJ¿žFè¿+5n?H Ö?.pÿ¿±4¼¾¯d&¿,ˆ?/–¾@T\¾œÉV¾Ï¶?3å,¾WËy¾ž–L?RœÍ¾s1¾ ÉR¿ŸÃü¿˜m?%÷9¾ÓÓ¾‹°Ù?CŸþ?/4b?Iæ°¾Îàܾª$¿œ³Ò¾¡6?3¦¾[“õ¾r×—¾¾@Ô¾‰°¿£.¾Ÿ(N¿Š?BRÇ?2K?n±¿¢9Ó¾»îþ?Õl¾†?XÑì?1dO¾•c,?s?ëî|@!:6?3žB? /ð¾åqÃ?2ä?ÜaQ?K<?ö;?e&?BR`¿¯|¾±=>ñ‡µ?*̆?5}¾ÒվІb?ØOð?#‹¤¾„ Å?+?1ß¾Qy^?9´g@#$˜¾ÆCª?á¤)¾£S*?Þ[\¾¦vØ?Ƽa?݉ñ@J½?±Ý?Û«A?N=é@fÏ?H†(?:¨Ž?î @ ÊÀ@*²(@-V…?Ùs¬?ÉЙ@)zg?,âÆ@*%j?Ë™Ö?Ñåû?ÞlT?ß^?Ëë@o°9?$è?Û™ƒ@!ÑŽ?¢¥?Üò?ÎD?×¥t?ˆB?39?ÎW@'ÒJ?à;Æ>èC¤@•­˜?Í ]?ÖB˜?ÏÃŽ@c¹{@ku@(çï?Òyï@[.}?Úâ@l©i?<1Ç?ØfY@'(,?Õ´ ?&ªn@'•e@,DP@+ss?× ‚?5&6@*$?Ú?ÎËò@iaÔ?ËÉ?ÜZw?Îjë@à½?¯@)¿M?€A?ï´}@)ŸæaÈ?2n’@ hé? ¾d?S'H?/l¾«Ý@)žï??c¾ã–¾Þ2þ¾ÒÚ>ÌÛt?ÝÆR¿š??ZÑ?M¨=™]? ´?7°B¾ÈÛ²?2ò6?:æ?†ž½Ç  ¿²*q¾›*¾ sо>¾Dãþ¾‚ ‰¾ªk¹¿pO?/›B?åtf?@q¾ÞËA?=ñȾPË ¾i/©¾¿8(¾Dع¾‡x¾/T¿’¬µ¾™,ª¿”Xؾ–a¾Œè#?+`0¾œZp¾¸c˜¾$9?'kÊ¿ å?åÞ‘¾«"ä¾Éh迟žö?)ðÚ?B W?@®¾rÒ>¿xÀq¾µsÎ@$mn?&ã'¾'ên¾³)`?. #?ìh¾J—Œ¿·M?'2ò?$ä¿'?Í?]ç?ãFû¾Jín?LdJ?D7ç?È^*?(d@/?3¾X? (¾‹{Ë?Nþ?Çš?ß \?\®¾“þ?+|¸?2FÍ>Ü^ò¿À1?ÃV?0Œ.?Ä£]¾Vƒ?ž‘˜¾‹_˜¾~S?;È?KÀ?Ñ @¾ËÒù?8÷ä?—Þ?Ëž?âÕ?$õú@3ì¦?ÂP4?#Z?´`§?Ü]?.ýÙ@ 0?Lv?ÞÍ?É?Õå9?éwž?ÄíD?ß(`?×R`?ãØ`@)zý?Þ˜¾šö?æD…@#àl?Ôñ9?Ù÷L?Óq‹@S!6¾WyÇ?ÐÐ?Õˆ?#"¢?ÑÉè?$¼õ@!ë=¾Ñgg?:@"q¤?ASD?BL?ã2@)a­@*wî@.†@*˜f@flÏ?Æ–-?Ù¤?@$Eg@(Éî?ç<$@Zy?Ïë!@&ñÕ?Ë5õ@797?ÕñF¾¯ŸH?'“£?Ó0¾d{@!½ý?•;h@%¹E? ý?ÓÕ@+:>¾ÀG? ýL¾Þ7X?-sô?Ö<?PDi@!¥~@'7w?ÕÌ?Rò?.c ?.Æ?,ýô?Lœ?Í@¾,4?-æ=?ÏA?Tüê¾ÜÇ?IµH?â£&?‡s?Àù?'óÄ?ËÍ;??t(¾kF3?Ñž?ÅæÊ?3¯?ÜÞ?w‡?Í冾©› ?B?<{â¾é_?3¦?Ë}?½·Ž?=²s¾bjv?+ü½ÿË8¿9¾z¾¨q¨?Uò0?F½¡¾¹(ؾ޾.L6?;È(¾Öÿ<¾}𑾤?)5ª¾£›¾šo‹?=Ô¾œõþ?6Û?"¯¤¿²Åî¾WžŒ?OD?,M‚¾„S)?É€?C—“¾ÆÀ?QŸ¾ÀF¾/Є?;üt?E’H¾Œ4?$¹g¾Ôuz¾°k?*–ç¾ïÉȾŒɾ3dc?Ÿš?*<•¾Á 6¾”à&?ÔÊï?Ò´‹¿¦…:?Vpþ¬EG?ÒLs?³¬9¾É+?*E0?/…Ÿ?"#0?U꾊{ˆ?Òצ?Ĉ˜?Bÿµ?-?=YN¾”—¶?!rV?,Ò¾¦’]?A©?8ïý?ÚWl?%[¿¬»?;_&?8º3¿MÛ?/”;æÑÒ¾´?Û1»@%Ø?æ/¾“\Ú?ØO$?(3?2*Ð?Ęûý‡?.d¾¿£?3æ‚?2ˆÖ?ÚŠ@(ó??Fí?ÏjJ?FLñ?+ë²?&A?Õ _?]¿pÎ?&:_¾Âp–?Õþ¶?-Þ¾CAR?Р ?ÍXÇ?4??Öɘ?<?¤?Ê”X??Zž?ÎÙ³¾Ž7¶¾õj2?°?Ô¬a¾sh¿¤í¾ƒ¥Ò?@€¾žŽ¿—˜b¾‚oD¾œˆ?Ý(–¾, ×¾¼…s?#ÝŽ¿›|»¿›&–?cmM?TÎ[½ì䢾 ³¶¾¤D8¾ƒH¦¾qM¾?Q§õ?RîK?ÓíÁ¾Jó¿µlŸ¾^z?ÊF¿”m>?Úö¾~Iš?WÇí?PÕˆ¾¼¯¤?GÃS¾–pÊ?:Œ¾¬œs?B¾M¢ ¾†»B¾¥u¿«¿¬Ï¦¾§ƒ ?äàM¿7™ö¾¼Œ¾\d‘?Ý„Ú?×¥Ð?ÕÆ+? Ÿœ@'ŸÍC›ÖZB i?>ô?È*¾µ†¾äaž¾©Ÿ?D`ª¾®ö?-.’?8´Ž?Ë€x?6ø>é”?Ù^?Ñ¡?Hnæ?3.$?I;@.V@¤³?÷?Ö˜(?ËTë?Ýye@n²œ¾ÿÏ?Ô‡ô?ÑX?K”?ÙM?Æí©>»ë€¾´ÎD?ègÞ@d-@aäM?Áµµ?H[1?ÓÐm?æiP?Û u?ÙYÇ?Ù°a@î%@ˆ©?ªæ@iª«@kYŽ@&p@52é?Ût-@mÑû@!Áû@klâ?Ú2@’x‡@^¢@*Ïø@¾k@01R@'ê ?¬,ø@)Å¥?*?€?оÑ@( Ø@ §‚?ßb?Ô4’?þï-?(ÅÖ¾=’?ÙE?Ï‹b@'Á?/ÏA?Æ–Ï?8›¦?ÇÝ?Ý’²?+n@?é¯?ⓞÄÈ@cÚÕ?-è ?í‹?×Â0?+¡Œ?^n?Éç`?áæ?¸( ¾Åލ?ÔÅœ?Û­0¾ÙW€¾Rwa@&›?år?ÐN?2ƒp?Çöc?Kå?=N3?ÙÂ?.úî? ?Ïhü?)Qâ?Ö?R‡\?F]Š?Úz¾šbË?sC¾Rä2¿ !¿— ¿“ˆ?Jξ±oM¾¢¹P¾s/å¿°ü?Ëܽï]º¿’j³?6¶ ¾_$ؾ¼øp?Oy"¾ùK?,¤®¾6%y?X›¿¡¿µÌà?7;¾£Ð꾃¾–?seÔ¾^DÀ¾ kf>•0¿¨ò&¾žúX¿—|B?LQp¾va~?’?A2f¾£¯Œ?oq¿–r¾h•h¾“Äà¿¡]Ù¾ßs?Óu ¾»ÎJ?pû`?ß6;¾tj??Ù:Þ¾ÔùN¾¤|î?:j@(G?3 ?2r³@*kH>R”?ĺ?}A¡?Ðè¼?Hè4@(ëô@'d5?dò@†ö5@$sm@!è–@$±ë?ÈÒ±?Òå?Íéº?ÑCä@$¶±?Þ&@i—)?Ù%!?Üî²?Î]¸@gÜG@%sO?Î/ê@cÁ(@†tÎ?Íè1@³ü³@$1j@f{?à“0@h ?Òû$@Л?ÙÏä@!ãŒ@*CQ@)Œþ@.y”@f¬@l?×ô©@ מ@-Õ@#¾þ@bj?Ñbö@(bž?ЬÔ?ÓÎ@ç@eþO?Á$Ž?-:f@'J5@`oì@2»~?Эñ@ÁÆ?Ëjw@$—¡?Æ.¾/t?Iñ?×eë?ËŒn?lb@(?‘? ï¬?-m¦?Øâ¥?ËÍž?çÛ#? ¨†?¸Ç@(;?R¼ˆ?È€?1‹´?®²?À.о¼Lô?%÷˜?Fh±?Üð ?ElÊ?Õjˆ?À-?7 >ïʾw‘>¾ºý‡¾ÅYb?Ò5f? ô?Ûbê?4åY¾Ô¼˜@-g4? Ÿò¾Éߢ¾³I¨?C]¾¬Æ<¿ŽúQ>õ˜°¿œ ?AhW?JÒ?94˾Z•⾯I¾uW¾N?QYØ?IëM¾…«˜¾J­¾£Á`¾+?2!о¬œÌ?KlH¿¬%\?B@9?&[V¿£6Ö¾ùU»¿¤êj¾iü¾M[¾v!?L ß¾”KÂ?¾c?/Îì¾mϾÄھ˔{¾÷ʼn¾œ]¾¾îõ”?È»¾»ÚX¿’{¾ÀŠ¿¡îì¾ îÏ?R˜ˆ¾œp ??òt?Qv*¾}…‘?(ÁY¾’»6?“Ä[?0ü¾¥?5ÿ}?"¿ êU?Åtq@,Sr?¢Q?(ù?×6å?Qç>?¯dœ?I/è?tM@”ìH¾¬€?!Mh?ÎÈü¿¤¨ö?Õ=!?×¹×?¼â…?%2_?ïè@''”?ZB¾¡ ¤¾m~ë?Þjt?,ŽB¾w{¥¾“*†?Œ«?Îâæ?I0~?Ü/v?MOÊ?>p ¾›ù?dÊ?#0¥?Ål°?âv?Öx–?Ó0?ÎØŽ@(ýƒ?.…@&©¿?à ?7ö¶@Y®æ@k:ô?ʵá?ÊÆ%¾ŒŸf?Dæ[@m7'?ÂËÑ@ É @`5s@0ê?ÜD~@–(µ¾ÊS@Û@,Ž@^²@%„@h.ó@–=>?3Ì=@e`Ñ@cw%@qIn@%ú{@šÞ£@$?ã?ØU.@•n@i•@gœþ@2…8@*<@•èE@d˜@lØý@X¹V?ÜØ‚@dïw@6@ZÏL@^,;@²@Y¯ ?Ðÿ‘@›:2@`ã?Ù&J@$hT@–H/@8ý@kUÞ@'G@fô‰@!9?Í7)?Ìëç?Ð|L?Ыª@&3¡?–&?ѱ®?ã(?Ý ¦?áRü?=@?.›*?2Áç?4pŠ?OÎÊ? 辕0Z?ÅŽ?@(Q¾Æþª?P@?¼^ü@CEË?ѾÚÞ/?CÉÿ?Î3?*ò ?××@8|¾„åâ?Ͻä?×¼}?×5é@)d+¿‹?6 î?µó?5ó?Ñ\¾—4?$¦7¾1è¿Çà’?;ô†¾®èØ?O±•?Dü:¿ (l¾#P|¾0u?$ë¾ÎÚ†¾JýX¾Š]¥?ÍþµøØ¾»ê¾·À€?‚,d?:¿?;ɬ?4县ö!¿™›Y>ÿä ¿¯÷µ>ì×ʾîŸô?.ྯšÂ?!ó¾ÅSk¾Ÿ(ܾòõ›¾ÂY¢?<˼?#VÿW鱿¥ò󾟛_¾Ð•¾ø6¾·Xs?>ë8>xg¾_–?-Ê?3: ¾¼àË?I°E?ò?æÌ¾;ÝD?,²ò? ÁF?áXL?9æŸ?3<æ??¹v?5D÷¾Ã¶‘¾„±0¾ƒ`?Û>ì?76|?Dþ?«? >ãJ¾Åì$?ÝYª?Ђ?8@V¾®—è?ÜÙ9?PÉ?ÈN5?.Wø?(r?êk8?8{?éÛF?éûV?Ëv?ÏÓ?Õ¥Ñ=ÉÃŒ@-G¨?ι?عp?ñ²?=œ.?Ø+¤?iÊ?Dn?Ãúy?Û±P??¹k@#@z@&†M?ÝÉé@_ï;?×Ö?'ÛT?ÀP:@Œ¼ñ@"ƒe?×Ã=?E38?,ë>õ ¤¾”@"ëG@ °5?Êœï?Ιç?Ølj@,>@,ïž@aÜ@-‹©@dlñ@eµ°@aŽŒ@0é8@%â¯?ã*y@b«l@cL§?ÊÈš@hП@#S@@$ÈÞ@l@lüá@j ø@U@eR@“߬@d®1@_t—@$‡@_wÁ@gÉy@!D<@d²™@+3ñ@du?Î:‘@#-Â@”Ò@í@+ãD@ ½@',\?æð`?-­]@"Æd@i­ÿ@_ø©?ã}á@#¼.?Ü„Ë?Õö?JH¾?Ê÷¥?ÈeÕ?ËÂw?Ù7ȾöÿO¾Æ-¬¾%L†?ߎ¾äQª¾Œ@/ •?×ñt?9Eî?ÎÞª?Øs±?ѡ뾷“‚?³›ß?dìÇ?%’ë?Bæ ?? è¾âØ?ÆÓ”?Óçà?ØK7?S)?>*`?µ¾By¿®¥ø>ù&Û?»ž?ÌKû?+!?çö_?£P¿t?(ÍO½êÔ4?޾1À ¾lk•¾,»Y¾¨[%¿£#ᾨ"\¾P½%¾U‰4¾fÊ?YaT¿›Â ?2꿦Í5?Å/í?ì)7¿˜Í»¾Ò=?*mx¾ÖUJ¾•±î¾€Ù9¾S;Z¿– #¾¨ù[¿•1k¾!Gª¿ q*¾ºÌ¿¥îоœß:½Ž*Á?‹¦¾£¾Ï?ɹx??ýG¾ÙðZ?JÌÐ?/œÜ? ?;VJ?0ž,2?½6t?0AO¾\A¾§¬s¾Ãúâ? í ?.[?Ôƒ—?/ÚL¾éA?Ô¸”¾Ïf?9wܾ¶ä?Îý8>ø7?&+¥?ÊÔe¾ƒÏ¾¾cY?ÄHñ?Ô¹Ð>¸bD?NFù?*9?rÖ?Z/¾cÏR?'Ü?)[Û?×·í?<ÿ¥??C2?& ò?¥>úMø?LVâ?_T?§GQ?GQ•?Ö î?â}7?2)?Ô‰#?Û"?!³¾¾}î&?{¶@Ž_?Ô8Q?Õ ?דh?ß/f?ÈNˆ?1™Û@-"Ç@(Ì«@&"Ñ@hÐ?ÏÀ©@$†ã?Ñ1@+:@"äÃ@(2¨?3…O@&ßl?ËNT@'©&@Ã@dì?ÐËL@Zs@[Á@‘Êñ@©B@!fÄ@U-?ÕKÕ@)º^?¾Oþ?Ûh"@a+„@mº?ÍË@˜@b9@±_ê@h´@&˜ô@jL@)óŸ@±®=@b*ö@“©A @-^?Ñæ¬@W¹Á@Y²å@ÉÁ@б@jÎ?"x@-h—@loË?Ïet>±m@+±@d4%?4ûß?ÓÓO?ßt“?ÖÁ€?ìIç@íì@'„Ã?à6¿”{Œ?Äß ?Ú%Š?ÑÉ¿½¥Æ~@&^Ô?Á#?#¿Œ?@?)?;Ôƒ?Õ°”?ÚQ³@.eù¾ÚÁ•?5€,?ãfý?¯Ù¿ /?@ߥ?Ã+;¾žÌ£?Ô"¾–Ã1?%a?Àó?Ä?¾á‘%¾¡D%¾ƒÓb?̈è?äê\¾¡>€?Îëí?­¦(?"9ü¾Ï޾>þ*Ã?@ =?ÿ‚¾‘Ÿ?%6Õ¾š7”¾8ÎjÀ¿™BZ¿7ê¾ ò>Ÿb|?Õ@¾àÃ9¾q±a¾“ó¾>ª¾›t£?@9j¿¡rÌ¿_àØ?@ðE¾žIA?#óK¾wÁ“¿ìÀ?3½Ÿ›¿ŸšF?"ü¾Ô’î¾™EA?NYÚ?J¾§uƒ¾ëœL¾ÅS3?@K?/ˆ3?%‹ÿ¾µü¾…ŒA?MÂ?(Ù?ã!¥?$ɾLƾµwB?T|¾‡‡?U÷? Ê?Ê-?àǯ¾q*?•±Ç¾·Gˆ¾p›Ï?d8?9'œ?>•7?þ£¾‘é¨?/†Ä?,ÖA?? п¨ËG?»ˆ‡?_ Ì?& ˆ?ÕW&¾­õt¾ñ(¿?Ûá˜?õ?AÇ”?àó¾À/=?ÖTö¿]Ò?2ˆ?!h.?>Ê;?½˜F?ZöÎ?ݰn@'¯˜?Õªí?6Ñ?Õ1”?Ý¿?÷?Ü`µ?ÂsÆ?F]¾;¾£@&Px?-/_>äk? '5?΢?¨J?ÅÍ@ ‚K?ë5¯@ÐO\@–z}@'Å?ÑbÆ@Zëâ?Õ×ç?ºDr@e!÷@f–^@h@J%@j#@d¢Ò@ež@-A@e{w@jñç@“ÁQ?̬-@a®@gãô@±\|@3^B‹_è@ÄXÿ@’N¹@Žq¦@•š7@•Ú'@´pÔ@$}s@f6ñ@“¬×@°ß@!Æ@‘n@²£µ@gœ<@]Þ‹@O@ÌpÒ@ï<^@Îåi@dã+@Ðp!@ w@a±$?¸N@&ð?Ä*+?ÚŸÞ@'É?«@*"º@3ˆ1@-<?ÔeÏ?ÑOˆ???#e=@+êë¾ÖÝx? [?CL­?áz?ÏöW?Ù¢V?'`?_õ?Ñ•ª?Î0?Ú—¾¢ â¾»ë!@ ¨á?Ë?à„?;¡ª¾¿—Y? _×?0dR?5°”?Ïâ¾O¾Ù@(+¦¾´@þ?Ñ£?Í|?Îp8¾ø‘Z?ÞD¾·mˆ?Ðb«?66?Ë^ ?%馾ØÉ^¾q´=Zg@¾. 0?fÕ¾9³Ò¿ž¾IŸÇ¿¦²’¾Kþ?3dz¾<ü??Ô¼¾XM¦¿‡â¾”%i¾€{ü?;à ?5£.¿èd?2á¾Ì“°¾”=F?lÌ辆«š¿푾n’l?½?;ž¾ †¾ÞZt?Gâk¾¾ºâæ¾µíè?,²>8EX?C–?5j'¾›Âä?!ŒÄ¿ ËÒ¿´L?2ÐJ¾’¤Ê?CÏ8?㺀?Òï?H’?ÙMv?AQ?ìëm?ÔI\?LÆ?Ϩã?ÎFÄ@.ز?Bø?å>?;$”?¾Ò1?2$Ã?CAž?Ø~Ö?Ú‘@l@Ú?"ÇÁ@ë?%‘k?*w”?$ƒN?3MÊ?Gk»?2D„>Õ| ?5¾D?ÎCê@/¼?ÏľÌV?;ø?¾( ?#ÿÕ?±™?6sÌ?Ú?@Í¿’¯W?@ Ó?F£¼?¿8n?q´?"þРÐ?Â@?ÄV?7„? S«Íl¾_êð¾–Þ¾r¯?S 3¾O6€¿ª|?f0¾w¾ˆ?|¾‰ˆ€?0÷½¾™@ä?Se×¾½¾I˪¾4B?:3–¾ËÞˆ¾¾¤¾"d»?*ÑI?&‰¾?Œ?B"¾³4#?NР?TF@Ìú ?Hÿ.?þ¾²A8?.£ ?6{`?(ž:¾¡â…?ÑvJ?·°?¿¹Íƒ¾Ï ž¾Y ±?DòÏ¾Ž› ?:é&¾’J^¾²:?1[?0“Ì?C$ê?9ªü?@4R?CZC?ªþ2?Óaž?=£?k’?7ˆ£?0?"?ÕÒW?[3‹?à³¾ÚïJ?IÙ¾?_4¾dù¼?4êB?î“Y?ß~„>ºwÑ?>iD@ÌmBËAiѾ€ú¥?M¢0?Ï}~?Ê©2?Ôn?¸|?à3]?8¡k?Üë&?N€@*p??#?ä­j?Ñí(@]^³?Órm?âß@&?é?ÀŸ\@"?:Ó„?Ëì?î?ÔÆ@fð?Ì!q?Ôäz@fO]@lQ@³þiA Ð@“¼ç?Ø®>Òö?Çu@+ÞÈ?Öâ(@eRî@e ?Ûšó@`ŒÐ@´ë@(YN@]¦D@[Y@‘>r@´¿j@‘ÂŽA”˜~Bv úA¿x@®/s?5°€¾k^Œ¾Ÿ=˜?ãáP?ÈÙоˆox¾sÄh¾{™¾¾›Aѽù#¾?D›:½ìº¾&ˬ?]œ?.BÀ¸N?D¢Ë¾ëž(#^?>y¢¾Éj2¿Øú?2"¾´¬?$%¾O´?&‡Q¾‡.A¾ËF}?L>ê¾ƒßæ¿¶¥?à⿬r‹?S?$Mè?o|r?Öàx?4ˆ`¾ŒÙÖ¾RQË?O^¿›I!Àgm¾Œð§¿ Œ€?Oÿ?á®T¾¹œv?;®¬?3æ%?ô?9iå¾Ä‘b?.62¾ß/S?Ôæ¾Ù®È¾e?¶?1ÉξÔç?¶J¾#’Ö?D,Ô?×fÔ¾ª¬¾Ú©’?Ö9Ô?3gä?Þa¾Ÿ§ú?Mù„?Õ+,¾rô¤?ÓÀ¨?2jä¾å@Ô?0 *@$YÆB”CfŽ ?äÜV?Þ^?æ;Þ?L?à°â?Öd&@fGv?tJ?Ù’Ã?RÔô¾ ëv?¸º¢?Þ©`?ÒÞi?ÖbE?à,ý?%¼»?Ñ­Ÿ@e„"@f…Ê?·c?Õ¨@%ˆ@%äž@1e¯?ÎÜè@$°Ì@.yã?Û]”@%ÆOAÕó@k4@#]á?ËR @“TÀ@cx@(â@$ðI@hR@r~ï@ov´@•à‚@Ñ»B@ò4«@`­@e–@•+î@ð @ð–ø@ñ‘@èHä@ë!/@¶Ú@Žxj@Ó¥@Ñó@°F@îahA'çä@Ê_HAk÷©AkÜ@Ô /@ÐÓ¶@쪜Aa@î©ä@ï8é@³š@“kà@µ²!@i1 @hh‡@#èIg?ˆÂœ¾lµˆ?@Û¾´ÅÌ?6Ë,?g ?Õ¿«m ?A‡å¾…ÝĨ¾£´¾`X¾“t¾Â†›?a?¾šiZ¾Bà?8b¿œç@?!=k?CJ7?Dr?9àý¾éä?-vc¾q¤š¾‘•6ÀüÛ¾19ð?*þw¾Að¿"Šš?- ±?*¸¾—¶¾©”P¾]f9?Óæ?+‰?óà?ÍVL¾Â7œ¾—ÃE¾¦d¿œÎŸ¿—AÒ?7„ð¾qÔô¾¨Þ¥?¹Â“¾Âç~¾µ_Ǿv‘õ?(³¥¾z"?„–?/‘ ?Íí0?ÕœO?BÞ?J•F?ØÉ >ç}r?Ç+^?Rw¾‹Fò?;˜Ü?FÜãí@'êÛ?Øíƒ?Õ™%?Ø‚3?ÜWÆ@!ïÛ@ØÎ@äê?%º%@t}È?Ý(Ò@c1¦@¢®@&R~@µMLAe‹@ë‰:@’]ì@&Þ"@“Éâ@cq«@–L?@( ®@’_@¶w@ì/@ðÀž@”kD@Í~¬@/úí@‘*Ž@ïrÞ@ó_E@Ïm @Ò©u@ï‡@ì+ AùìA' ÂA»²A%íãA5›AhŠAWÀAÙáA&=AѳA'9[@ñ™æ@µP~A&œD@¯×@±œÁ@‘–û@gÖî@—*ç@mv@ ”.@Žv?ÔS?Ðn?Ëi'?&Š@" ,@•Kœ?Pª´¿§Ç?ÒRà?Ý)V?>L?Ó-¢>ÖB£?/ÇÚ?Ý¥˜?×]ü?¥?-(Ž?Âæî?'Gy?ÌÛ3?Õ÷c?'zø>â-˾¬¦`?!{~?=9Ã?!šO?3æ?S[v?M)ã¾Ö—?ÊþÖ?FÉP¾‰Úä?næ?;¨¿?Ó[¤?DUb>ˆèÚ?,³±¿õ?Qâö¾²+¾¬'¾Æûê¾Y¬x?à?V°N?[¾¾Y¯¾¤­¤?Ò.k¾ƒçU¾<<ê?2ÑϾî³¾(è?=`ƾ”y>§Íð¾Y·C¿Žü‘¾¢a¾†`?5pT?B±z¾ggÀ¿¥pu¾’ýy¾™®a¾˜R¬¾êR}¿±’¾Å8¾(/ܾ û¿*G¿—ÝÙ¾¿RÊ? uŽ?1¾Ï¿™Iß¿¥FZ¿®½Ù?;Lé½ú>¾–‚•¾±8•¾º¾K¾œXV?8O†?+ð'¾½n¤?"Ó¾Éä§?å!ô? Ë„?(âE?—T¾Šã7?ØÁj¾jÄE¾Í~à?3*´?17´?%©«¾‹Û?Þ|¿ªJ‰@,ƒú¿ ‹Ê¾9¯?Q ?Bm°¾cy|?6 z?tïÂ?DH?$t?#Y÷?#Ìh@%;Û?ê?/¢?ز?(ÝÈ?Ë||?5#"?Íâ?ß’C?GÕ¾;·!>ë ³?Ïæl?Ïaä?Ú­¼@!Æ×?3Î]@¸ø?È>A?Öê§?ÍâÆ@ ¦W?/a@]²ù?Õß3@)-°@#€@;ã@)4s?ÝŽ?Ï5ý?Ëa@hI`@‘ÿ¸@òaD@Êì @²cj@ÐØr?Ù¦g@“_o@²ãí@Qeš@’mB@²Gë@í"ÄAxA~¥@Ï, @³­q@±¼d@ë^Ö@­Áà@•®ð@ñ_RA¹HAÛA&£*A57ÃAHRSAŒÓ¨A…VêAx“òA”qµA”aèA6:é@Èo*@±Ù´@p.@•­,@®np@³•@)ï@ahÓ@³8@h>9@i©P@f1,@#ã @_ó@cjç?d²@I^õ¾®»£?­ @'Ù»?<Æ©??Ç<±?/¹Þ?ÐUû?Êf¿ ,?3`? âÚ? €†?ÑØ?ÛÌ0?až¾Œd@Nãš?ÏÞ??kx?9¸î¾nëÎ?àó¾—-m?Ó› ?ÆÀ̾zJ>ÿ¡Ö¾õ/\?7˜s?š]?´K?9 w>Æ’?Ðvg?ÉÅ ?F#ü?Ix¾®í‚¾ÚhÂ?2B??榾‘bÑ?5°¾ª¨ä¿’U¿¢¨J¿¼þ@¾—Ö?QxÆ?ÍÏ¿¢’h? Bp?)‹î¾…C ¾€ìþ¾¥J3¾¾P¿§°¾‘Oª?Aâ?M³V?VQ‰?eh´¾3$a?B‘ô?V¾UÆÇ¾¦Í¨?Eó/¿ Þ)¾™ðø¾U0³?E*´¾}Wø¿¡õE?+.̾á…P?0{F¾Nòݾ_$¾¦©?3±l¿£k0?"ܾ—)¾?8 ð¾zS¿Èj?Ìú¿¸Ð>Vᔾ«$?D`Ü?/Æ>?ÁÚ\¾Ç*?O~*>ü5V?Ü‹Ë?(‚?0¿Â?Ö2v?¼hÝ@)Ë>?)7ï¾bÍ$?J:¤?=Ù¾Ó’¥>ðÀÌ?Âé,?òÐQ¾½A7?8†˜?Èë¾·éx?SB?7μ?.4?%²°?$¨\@%#ä?NXü?Ûó³?ST™?èQÑ@hH?D(+? NÀ?Býv?л^?Öë?ÜYоŒ6è@a &?Þõ@gÐF@/(G?ÛîA@iØD?Ï»[@häÞ@dÑ3@"ñH@juü?×¾¦@Ñaþ@Ó÷D@ë ÀAÆÜ@®ˆÉ@Žq@²ÁÕ@“#Ï@Bé@±6N@hƒ¦@^¹@Ð݆AR@ïÁcA«sAq*ACìAƒ@@±[ïA*A§AYÓÜAZpcA›`+A:A†Z³A…‘üAŒ¤„A´¼‡A…]ôA9dA&\d@”´^@²™@}@!þ”@Z0Ñ@–Ä@jpˆ@îÊ@o‹@´’¡@–ö/@)F-?+4 ?Е¹@e£b?Ä™­?&'›?Â\@-üÄ?Øž‘@"D4?Ù›Û?€M?#°"?ÎP–?Ô"¾`“¿¨ó[¾¡l`?Õ!Ò?'q_?zz?.¸ ?1à?Óa}?áb?6ŸF?×éÿ?07+¾¤KL?Ûh?/›?ÏÜÌ>ÉH徴ݲ?ÕfÚ?@µr@ÌW?Jä7?,Ä;?ÜZÎ?"?(?A`×?Çô¾¾‘d?Òº±?ß M¾úT¾n ð¾]4¾·h1?#¹¾š‡0?MÌ¿ ua¾¨& ?Í(¾léP?@z}?L8\¾éF¾Q ?7Xè?Mu‹¿žZ˜?Bµ¨¿¡±è?!›¾~$¾g,!¾|žž²L¾¾ü?1[2?`‹¾ÎÇ´¾¬ŒÔ¿©©´¾‹oÙ?Æo ¾D’྇QX?@F‹¾c>¾•ÕÕ¿•Çè¿vQ_¾€£\?*ž?i0Õ?ã“k?8ᅳp4?Ü`˜¿•ÔU¿µÖ¾¦L?3e·?«Æ+?ãXa?(–€¾©z2?ÔÑ?CŠ ?(˜u?¿æÛ?Zû–¾©Çš?ÁÎϾ«?\·?Ø´%?Ø5p?Úü?/¾—¦¥?Í¯Ž¾{®«¾ÚÑ?Äı?BzÏ>©»É?.˜þ?‚@'’j??X?áK@%/@( î?Å~V?Ê`Ž???®¢º?-9?×­>¿žZ«¾’çH?Í/?Ö ?É¥?Î$ò?*KÓ?Úk @)8ú@&¢B?ÆþP@{@]Ä@*Ô4@c ?Åt¥?Ì~@²ri@‘YÑ?éÉ@!GO@dÈ1@’šø@´Þ@¯ "@ÔH @ñKñ@ïv2@¾+@fív@fÌZ@m[@®âž@ì_AŒÃA}È@ìÝ@°L”Aæ·AÊAR«A  NA(®XA\]AYàAj²A”ŽþAŽ&lAYUAjtÐAZ@äA¼>A%õÆA4ØALU@Ûì@˜ÿß@” @±°£@!_¹@•…@€}@/ A@eÿµ@1†@iãp@*­ÿ@'pX@&o¾?Õ¬?Ú†?ÙM?Ó¯~?ØCN@&¶.?Ñ8(@{¢?#’g?Ͱ!¾QAÖ?Û\ë?DbŽ@">q ?2™X?Ñ¢ó?Ãk?Öçš?Ò`4?ÕÖ?B®ú?#D?@Æ?ÝLC?¯L?6X‘?Ì?æ ? éÝ?Æ™?"Œ€?Æ×*¾¼½2?羨?t?(\¾¹ÿe?2:S?#VŠ?:KN?Úçƒ>샢?F9{¾@8ü¾°~O¿˜f,¾›J¾¾Þ¯?S,¾œÀ.?¸_¾zÙˆ¾tL(¾ óɾ‡™ç¾ZS¾­x0?9Z¡?j?ëÒ?*‹&?Ѿ’YŠ?.µö¾Šòu?a´c?=ÈÖ>†ÍV¾`¿ö¾­˜‡? 7—¾ÛÚ¾Ëý©¾d8µ¾Àoú?/Âð?”†¾§<¾²o¡¿ l¾Æªê¿˜yç¿”nÛ?K¾Ñ?.D;?.R¶¾ºêŠ??¶–¾s2>?'; ?=AŸ¾Òàj?Õìî?E<¿¾¹µ6¾º¿¢·g?P?Þ"î?Ì*¾Þ¯¿—a³?*.¾Ó<̾´~F?uè?cÙ꿞„1?Îa¾Ö·L@'|ü?']Z¾•‚¾¢ M?>_«¾×ª‰?ß×?¹Ü?Ïßp?08x?Iz#?ÄÙè?×±h¾‡ó’?Ä¥@äÞ?2tû?ÝÞ@0hï??çv@+jR?Ð X?ή;@Ò?»»ª?P¨?*Ž?æ&o?Ê…Ð@+k)?;;?ÓĤ>éµ-@Šû@¡@B¾?בÇ@–0K?Ôak@,´x?Ç’p@]å×@Ç@‘Ó@—G:@°ñ@îîDAvË@¯Ó¿@•zˆ@«úq@°Œ_@Îv@óÁAУA&w @Ð\X@ñ™@ï¡A gAʼA}2AYÝA{ÕAilàA ALA…nAFŸAGSúA…\†Am80AäðAX@Ñä@Ì›Š@ðþ‚@¯«ã@±“\@n s@û*@dTk@“e%@Xnò@eii@"ÄY@Œü@-:’@)_…@)[á@0ÉÎ@D®?Έ–@#=Þ?BvÔ?=¢[? Ã?¹âT?Ä Ö?)‡¾_{(?;®z?О ?¹Ó¾m\?J6Í?ж%?Aµ>ìs?4Ì*?Ò?ÊJ&@!ú›?U_‰? é?7@”?Cþ¢?,õ4@j­?©*ü?Ö­A¾²‹L¾ÆëÎ@*éû¾Ùu2?8w?Ð*ç›U¾¬.•¾ÁR4?¦T?&—̾®M~¾ñ‚ú?&Ú¾f³Þ?:[Y¿£)ã?Ö²c¾jœ?!Ùp¾‘-о¶z¾³­Ø¾ŽÛZ?9Ó?+‹÷¾¡!â¿§¦X?EYJ?"tz¿›²?,Š’½Ê²r?Ά±¾—9é?0=}?Ídh? –¾Áv ¾åöð?=“¾è]¸@Ÿ?Uâ?Ô-(?Ì[î?ÙyÜ@,}à?! ¾?Ƈk?¹6ö?»ò?Û¼?Ø =?ÕVp¾Š~¾‚æ¿Ð?ÐÞU?E½8¿Æ´?4Üä?ÈÖg>þý¬?'²@f,ƒ?5|ù?Ýsb?ÔŸ?Âj@1y ?NT@`0 ?ÎR¸@)ÇÝ@"kã?0'?ÍQ‡?$[ê@`äW@›á@0^í?Ðä@W×û@¡A@®ï±@gýØ@\pŒ@”Õ'AŸA&'£A Ž@ð»[@·?‚@Ò˜@·%@ÐéåA$»VA6õõAZöÎA8°AM_AZ×ìAG´»A…JA•Ayß´Aª ÀAmAW‚AjmA4d6AˆÑhAœÛÄAV…AÓS@Îq‘@í¯’@ñ¼é@ÑÌÜ@ÑÚÁ@’€ @˜or@f‘â@òñ@gý@}UK@“5+@.¥Æ@]Âm?¾«ø?Ï@–b?Ôc¹?Ù‡î@e£J?Îld?Ñ“@&ç‹@%Ý?Ù˜i¾ %V@X“?àÐà@&#?9D.¾ç0N¼zÀ?* K?ÞúÑ¾ŠƒP?%ZN?8–ä¾¢?Ô?ຈ?2ÿ?Ö‘?-Ow?V4§¾Ç,æ?Ò¸Ê?vâ?*\??B?;ã|?TëØ?Óñ?Ø_Ô¾¨G³? JX?—U\?7žö?ßF?×…?Äë§?á—?Ì k@*ß'@h?Ëÿ’?ÆÓ‚@(6w@f¯@dë@]Ê@ÎÛ>@’3:@‘’z@`"€@±öˆ@’М@²A5€žA…E‘A…õAYAÀrA6›³A¯ˆA8"ðAwårAZð…AW§âA‹ùuA¼I6A»êDAÌ ¾AÃ2¸AÓiAÜ^öAÙ‡5AÓa A¸A”/mAk=A…AI2·AUÕAôµ@³yß@‘K@“«š@fž(@¶ €@’à>@1&Æ@¯üo@” `@)Ln@áö@}z@cò_@(Q@`Š,?Ôxû?=7ï? ŽÏ?ßK@õA?Ûph?(áV?Óm?¢J?Dp+?Ò÷?Ù'Û?  ?à ߾¢¨À?ÕÛ“?4:?=×8?ÆÖ$?Ù˜ù?"?CÚù?!ùš¾Ù)?Ò(̾rgJ¾¥úy?Õ¯%? öõ?C¿2?ÂÅ ?>É­¾“ê?óf?´|@)ʹ?$‘>>ó´s¾…+¸@"µH?-\?$ê?œ¿¾çw¾¯yí?=Åv¾®|.?Ùác¾ Š?fóê¾”ÚR¾ØX¾ºj´¾¸;V¾é)ž?Hs€¾²ë6¿©–T?)z\¿fS?X=N?Ù²†¿ ¶Ý¾Œ†5¾¯Â5?5¿L? g¾y[+¾£–ù?B™2?J=Ø?M®O?29­¿’*É?*ºÒ?\ .¾Æ°‚?å+«?,³ó?@{Ý?H¢±¾†þj¾™k(¾œT¾?G0B¿¨ è?F‚ì?Øßq>»N¿¡žšä?Ñi¾¨[ï¾-³?‘ô?U!¾½[M?ÙÒ9?ÈN ?M5ú¾µOÜ?R_v?6»Î?ËoP? À‡?.*?Û(n?ãZ3>àOÔ?ÅÆ?Ô“?%íŽ?èU?Eè}??݉ï@^î¾CuY?Èv£?æ¯è?Óê×?ÆRf@-úé?»WE>°­Ú¾lì?Òa2?í¼Á?̓\??Pú?ãR¤@+Ëy@';¥?À¶d?ÔÕ?Íé@$k¾?ʾS?$ó›?Ήð?Ü{V?Ø9?ʵ@'dž@*ܰ?OZ¿@%ƒ@)ú@#¦|@ÓG“@Ž¡g@og@ßã~@¶‡¦@¬¼@®˜/@µÁÈ@Õþ@ðÎA'ÕrAG»$A»ÞNA»Œ©AVAG¯IAjAkw†AFJ\AYs/A›ÿAœËAäÂÀAýxeB5½B>–/BNø B9¦B“§Aãà@AõSPAÓGB Ð)AüîÌAœ‚A5üý@ð0 @ò@‰@µ ¤@Éö‡@cb @]1²@l y@)eO@+•©?Òe@³I?Èö¶@jo?1Ó1?Óµ‡@*•@-ŠZ¾†gq?Óðo?×ß@ó?Ïy?Ó )?ÄÜ@)Ú­?ÔÂ`?;Ö0?Ìô[¾¬¯?źp?úÉ?;nX?/aÖ>Ô5Ç?Îþ‰?¿¾n?GÝ?Чu? ô¾¾.?ÜÚü?/ž ?hùy?.³¾h4c?ÏWG?ß?'I9¾ã~ᄎR?/(ü?*­$?9Îâ?FP?9#Œ?ß…]?'®?ƒ ½ÌL¾¤à¾fr¾§×ë?Ltu¾Ñ€¾>þ7¾‚¤¾ˆ`?$;¶¾mÔü¾µ#¾{¢Ý¾©^S?ÉÔV¾xÂ?Ê!Ó¾ªX¾lA:Á¾¦ùK¾­$ì¾A>4?+Ö¾#p¾èξ¾j??ÔÁ¬?.§Ž¾Š«D¾Ä±ë¾ÄÚ¾„ˆ¥¾¬¬ï?4ž«?5¾Á?à[w¾’›¾…jø¾Óê?=Ž4¾‹©|?à \??0¿Èô>§/ó¾Ý2Ù¾œ$ª¾4he¾ƒy?U -?™ý?º?²¾Ìx5?…`?fo?)üÿ?|¾o„ ?(†N?Yì?¿§X@’ìŽBΆRA Õg@´{@,»W¾ßÑȾóÝ?%Õ¨?JYí?#9Þ?:ä?Õþ?¾`?Þ¬`?̰ð?5¾®?×b¬?Àðs@#û3?$Ÿv?ÖK‘?nœ?.{š?Ö~?ÒÚÎ@1N$¾“.@._B?Ù´†@,¼¸¾œ¸@?Ûåò¾º“q?Ü@g‰@­f@,m?N@,J?Ò†?=Í)?–¿@dÕ ?(œ@¶7(@‘cc@`×è@’D½@gz7@Ì›X@ò‚š@±Áâ@´òqA(TîAG¯4A„ˆÍB i¨BetACÊAG'SAjÐAªŠA^ïA»ïÍAʈèBöùAÌ’¨Aõ°¥BYB1ÆaBYØ¡B%“ AüyøB|ïB‚ðBåxB1^GB;ÔA³ÈA5ñAã¦@ÒµR@k“¡@Ðj@®­{@Ít@–.|@c2€@-´@"M»@mgm?ׇ9@/?%@i_¢@Ž¢í?Û9Ò@i+h?$ìË?Ôp?£?ÖÎÚ?Ð./?ÅHÒ?ï9—?0 f?Ð*?Ù¹˜?ÊÏ?+ä?Ó\¾¥‹ˆ?"|? ζ?Tœ?½“V?¯4?.. @,H¿– ?$©Ø?ã?ÏB‘?$ù¶?";Â?LyŠ?Ô‚3¾¸/*? ´¾ª6r?¶Ê?-”?Öµ@+ÕË@*…?HÀš?[,H?Îø¾Î–À¿JÌ¿š§:Ô¾—W’¾ÃSÆ¿,޾“Pv?¤†¿¹§P¿Å V¿‰¸’>ý¾XŒ?=]¾Ÿ”ؾª÷?*¥i¾‹Í(¾®öä@ö¿š ?8¡f?ÝÔѾ:§ñ?=[;?Ý⾫ù?)p¤? F©¿C.?“m¾®Cš¾Î^Ç?GÕ0>»¸R?0ðp¾ÛEg?6q?6‰Ú?Óß'?=-?÷¿ (¾©;M¾® š?@P¾•Ò.½kb¿ÀÓ¾¿æ¾A‚÷¾Kú??ËÊ?2õ7¾‡c=?$ü*?Bû‡?¿ø¢¿ŸÆÈ>ðõ?/Ø#?«Û?R÷ÖB1±3BÚõtBùpBÑ,’AÔx"@-î·?Bmf?ØY¦? Ì=@+-·? „ô?ä*Ó?ñ¶@˜û?ãz­?#O?Óî)?ÑÂ>ðíé?Ûûô?+@)óä?\î?,âx@af·@YÇÒ@#ÇŽ@$Èü@‘É&@d—s@#–?Ì›A@aÇ¿@Nid@²¬ð@‘kð@Ñ)€@ÕÝ:@ðÌÙAVAê…@ÐEAî„A3JA|vAAåA´}A´ýjAýwuAý–”AËhšBÜŸAѧÅBã¬BMÁB7cB,çÁB"RîB)9B:‡òB ëùB YfBž·B÷>BónBFÏÛBe¨Až@©A8Ã&@ïìÄ@¯±B@“ç¿@Ïìº@ÓvK@²²ú@&¶ä?Ä.a@³h?å@-D™?ÒÏ4@,Ų?Ü÷³@p©k@)Îó?Û¾@d4ì?Ю8@,b‘?Ö/I?Íøª?ÒÂ?8<õ?Ú+`¾jËO?h³?ÏÊr?"ús?Î4é?K‘>?9%p?Ø–^?Õ´v¾¯_?F¬š¾7Ú?<¹h?0( ??à¼?=ƒ?7Á?;&(¾Ÿ9=@’`@1k ¾=¤©?Ùÿ?Tü?ÔI>¾€[?C ?D.Ô¾¼…'@/¯ï¾Íì„?n=?v>·C??ˆ¿¸—¨?ä '¾5(D?4õ?iî.¾ŒÍx>åø½ìöÚ¾„´g?àjš?ä´#¾¤@?BP`¿œ]Û¿ ?.44¾/’†?AÅS¾>ðr¾©F4¾¬Rx¾—}’?Üêò¾•ÔX?ÃÊ=(œ@¿¨ûA?@é˾¨†‹¾¸#ƾx¾€ ¾l銾”Ç[?6¾®?0î̾AvÚ?5.?BÖÏ?e#F¾¥Ë?ß?D;º?&5p?Ó¡ü¾˜ ?é:¾3Ö?>¨6?Rl–?G=‰?á3 ¿¯qe?íŸ?Óý¿™—W??Q»ß?Åç*@mÚÇA6Æ€Bi—AÓf’@Ñ\F¾+[¾?Õ]x?…¾?VS?ȧ?Ó‰¾s„d¾;ß¾²æ@*q@&¥¦?Çáp?Ùmö?àBa?Û°\@)×¢@)¬Z?Þ \?áãÎ?Ö¼î?Ó±?Ñru?9&¾@1’?α…@jéW?Ê|?ÎãÂ@í?è`æ?Ù½@n&d?ØŸÖ?ÛtP?Ôyj@b/é@´¿ @m€é@´>7@’tâ@±‘%@´Ò@ïßÁ@Ô›@®M•@ïõÅ@ë³ÝA&ÞýAG AkûAw¿ÞB2 ¢BŸ3ByBBòUB†NB]þÄB&;ËB!<ÇB“ÈA¼kzAjo6A&ß|AÕ!@Ñ'@Òih@ôêõ@ʼ@‘¯£@fÙC@^F@¯ñº@™*?ÓÎN@./Ã?Õ€—@%?Öå,?ÛB@dˆ?ÌTÎ?Ý+Á@)K‡?Û C@%¬@*Î?"AE@f¤?Äèî?NÅÒ¾¾µt?ÞH¾€%À@(s?ÌE¤?ÕØ¾…]¶@,þ?$Ͼ·R?Ô È?=Í @+eÏ?FœZ?'¾w’!?3àÞ@í2”AÃxÜ?ʤî?9?ߨ×?Ú>Æ™¼?.2`¾Ýd??,¾¬?Ì?,+¶¾žŽ?ÛX)¾©Œ¾\¢?`L‡?BÁº¾{9¿«±1?X£è¾xgD¾>â?4ß ¾hM¾ü7t?Õ©¹¿«ý?J»%¾¿;½¾Œ€?,$ؾ²â(¾al‡¾°HÒÀmF¾‰ä®¾³ÉúÀ Ä?Ap¾ tT@2¿)ú?6Úç?4^¿§4\?,O!?,@…¾2žj¾¡«¾’¨˜?¿Ïšž>à;T?)í.?'Yn?ãšÊ¾¹»æ¾¢ô|¾­Î?^è²?^ìA?:Ð8¾¡Æ?‘fÆ?Ê@k?ÛJǾš½?IÍV<|c?CƯ¾¡•£?Å¿?Î8$?=Ÿ„?ݲ?<4[?áµÙ?2|?ÄdÆ@*÷?Ö”±?^4È?½µå??¼?g«3?CôP?Ðäv@0ø?5”o?ÛÄœ?(£}?Öy¡?Ö\´@ ¥=@#»‰?Ý·? Äù?0ö­¾µÚ?¹Év?åS9?l>@(6@'†?Ïg??K¡—?ÕÞ@gàŒ?Ñ£ê?Ýoˆ?Óy @*#$?õ@+›4?ä">@’y¬@^,Þ@$À(@”½…@bÐ!@dU@Ò@,@×@ÏŒx@ì=@ìR @ïMA7}5A&ø:A7`ŽAW* @î˜ÑAy¿B¿BRSŒB)­Bf'BÖÙMBºpËB´ÏþBÇ•B¶Æ°B õÌB¸ßB‘øBiQBRü”B|Bq}ôBMàBƒtAÛ IAxíÕAF[´@ðD@Ñ}}@Íâ…@fCÆ@uM@l?š@co(@hù?Åfº@+´á@)*U?ˈË?ØÓ1@YÔ?ÔÅ@då@*ªc?¬ºØ?ЕR@ Ã}@†<@™·?ÀDå?W^Ñ?ÔíX?Bì,?<ê@*‰j?ÔÓ?/‡.?>¼4?½~_?Ú,=?:™@,9?Ìì”?.@/?1ô¾ ºú?ÀO°¾Fö?3Î?̪¹?7 ??@ô?É‘VB +‘¾Æzæ?ÙX¿î”?%ã?C¶*?ÊŠ–¾ª8ž?Ö»¾‰Q¬?&ØE¾µÙÀ¾°M<šÀ?_Z¾:/­¾¥sv¿ …¬?澑i‰¾}6g¾—¼.?ƒÕ?/vê¾–C^¾eè¿®ôJ?aBÖ¾šð?P|‰?ÚN¿ :5¿,`'¿˜'¾õІ¾¹‘¾Ë x¾¨ìå>ïö^¿™I¸>ó•?Gâ.¾cŠ’?v¹?Ö?W‚ ?_)?èëá?Iì^¾Ž²?â.¿‘ü?)é{?g¾š¨ƒ¾p!?6ú?;ãË?.HÖ?XMľ¾¬ø¾ž¥˜?¯ÔÙ?-Â??ÞY?Ò‰Ý?Ö†ì?Üz¢¿¢\ô¾¥ª?ä[оµÚA?4ñf¾®ö?áÃÏ¿š5 @PÕ+?"¶Ú¾Z— ?:sq?®·?2ê?\Ã?Já?ÎE™?#ì¾”;Ä?Ü%—?Üuè@,êa?ЯÁ¾+s?Ñ ¾E\?E­?K¹^?Ðjg?ãÖô¾¿TØ?ÛT!¾ÔÝ‘@&‰3?ܨN¾Šÿ¾¥ØŠ?Äwn¾Á? x? Ú¿pq?*õ¤¿,¹¿ê:¾J¿˜¿°Ë°¾ ò ¾KÒ?O¨?Ý?Ñ9s?Î8?A¯*¾ˆª8¾_þl¾Œû¯¾Z?(T6ÀÑ<>š©Ž?Š ¾Ù ¦?+Œ?áØN? Vn?#ÿQ¾¥d–¾Q§¿”¡ª?-R¿˜­ð?Ú–¾ãÉ?.ÜI?Ú.¿²R÷¾¹+F?3÷ɾ‚:t?1¶¾¿²ú¾¸n¾©ðľì¾Ò? × ?Ô®?HùÄ?@¾¶?&ðо!Ǿ·n–?0 ?Óf@34‰¾ááh?;u?èº÷?·vŠ¿— »?Í3?ØFV?/ƒ¤??è.?F¬à?¾ÌK¿/.?@Šß?Ð"?ÝWs¿–ᾜÈx?)1J>Æ¥?Þj+¾y0°?Ö À?'Eë?8(C@, ¹?ë?=3Æ?ÔÇ0?à#?Ńè?×@/ú‰?Õ%ä?4*^?#?H?ÉŒ†?¶F?qú@±@&Û©@%’?ÛÁ²?Eæ°@)ã˜@(ŠX@$â@:$?Õ5Ú@\S}@k N@²/mB¢Ó4@•{[@î(@”å@”S@‘ù7@óVw@Ò¶@±(\A%÷ A7lA%õ—AX==AF~PA{/wA³`iAÜ]ýBBàÚBÏàC6˜àC’ÝÜD5{8CÚ×C»Ë=C.ȤBÁB‘_B%ÙÿB>ËAüü÷BÙàAÜA@:A{¶ŒAZêA6Ô»@ÖÌ@ð+†@” t@í(¢@´ò@^´x@\;,@O@ކ@cî±@‘!ƒ@eÖG@j×»@aRM?ÚV(@.!g@d×¢@.3l?ºRå@'Òµ?â2L@+Ïp?Û…Á?à&?PIÀ?P ?Йr?Öå㾌„ª?,"ü?Ü­3?;‡?Fê±¾ËÖc?Æ´í?,¡U@*˜v?a?Ô¨Ï?Ó÷?',£?èƒ?)›â¾²ÐÒ¾—†ä?*ä?-&?ˆ¾š ?Þ >¾iî>îÍ?>€I¾õÅì?ÀÌ:¾(޾˟û?ãiq? g`?+óÝ>ìæ¾Ž3@¾¤…˜¾zš"¾¸?)ÎT¾œÙM¿›/?JV¤¿2Ÿ,¾Z/d¾WJ ¾Fª ¾³^(¾„¾?¿´î?¥®?>Ò ¾­v¢¾3'ä?1˜˜?9Ö¾¬AÆ?,¾©<€¾®?OÛ<¿˜^‰¿¦¾¾hŸy?8ƒ?9ŒD?(žw¾fô.¾8¾_gÚ¾Ïx¾VhØ?=T•?'îi?I°¾Æ,C?*1Û?:ÓU?6Ëš¾¡ß྄.&?Õ/}?‹—?õ•?ͽ?à{·¾Êe?Q„¾`¿Ä¾Æ»ý?7›½?ÜJÕ?Ô?ÜâI?jt¿¨0J>øfE?O'ˆ¾œÄ£½µ›?Ø*Ë?°µq@/°?Úº–?é“Ê?àMȾÏü`?¡øv?Õ#À?Ð8?Ð>é@,A0?Cðð?ÔH @' y?ä„?5?¬¾3m ?ÖpP?ÖûØ?ÉŸ#?ÝAí? j@ !€?ÉÆ?Ìj?¾¶òÚ@j;¢?ŽÜ?Ìí½?ÈVÅ@“ž˜?Ìž@i™ÿ@dÏ?;Õ@§ÛA…eÔ@±É²@ít»@ÍS_@·$½@îMjA ‰@Ë»ó@îĦA%ê\AG#•AHLQA6ÖAZ ?A«í©Aä×.Aö2ÛBuŒÖB²ãC¢clD£ 4EiÄEiÆšD§CLC´_ClWBÌÇ\BavÀBn B:BˆAÂþ+A•QÁAk!AyÁaAä-@ò%ù@ò+H@ÐÉâ@Ë<’@¶rÅ@as`@fèŠ@P5@l­Q@j ß@”ÇÜ@0¾b@,±°@¶¤?Ò¦E@&@+:h@%¯½?©˜@’Õ¬@jÙI@(–n?¾h(@l¯f?Ec?*Å?5N8?É=Çò?.&€?±æ?jF@(À?Ç¥?5P¾—Ã2¾®“ ½ñSà?+éj¿¢#¾æV¾´š¾y»?A‡ä?áv?Tȧ>ÂÄ|¿ ã¿ª#F¾y‰÷?+H¤¿¢É¾@äh¾ þ'¾¢eL?6k-¿¤ ?%Í”?l„¾š¾@?; ¾,’?1z¾‘hý¾ °¾¼zš¾Í+²¾C¨«?dS•?'u’¾¿)?Öß?7dP?'6x¾r–5¾Ÿ×I?*(Ê¿š»¦¾(œ¾’G,?2–æ?0¾È0¾‹º¾“k ?5Õg?T’¾¹Gñ?5®Å¾ß[G?GÉ?Ar?!?Y¾•Dz?;‹¼?=š?ä 2?%·>í÷S¿ `?Û³Z?3½ù?. ? °ž?äZó?Ô¶Ï?7?'"<¾s:[?ÄÜE?Û‰?>硾¾KÁ?È2 ?ÞZ¾Œ­Ô¾esX?Ä`Â?Ö¨æ@+oö?'÷I?ž?Ì$ý?Í1ö?BÐP@0¶È@ièQ?®ö,?`È?ÒÕI@Z@(.>@&ùœ@%Ý@#ÉK@g02@e‚@gxŠ@ +@]@`”'@²=<@Œý…@ïÄø@Ò/±@Òm‡@íÎâA ~AX†òkÜ?޽?×¢¿?Üø??lI¾µ ? ´ ?"£–>ß‹¾c¿@?4¦¾œ&A¾›KÔ¾µ”è¾·%–¾XI?AÍ‚¾¿R?)\1¾`%¢¾@.z¿«Öç?7ò¾Hì>?Ae–¾…àÒ?~y¾fŽþ¾nq½?>&Y?4ö†¿ì?5³5?N¬«?@'€?åå$?!©º¾p¦?1+,?#Ñ›? ÿ¿¾‰ßË?²¸?:ƒ©?Ï_?ÔÜÄ?å§å?:e?4ñî? ?)y¾C+6¾éÞ?6rß?(ùÝ?à»&?"a•¾ð”?x?Q`”¾ùjŒ¾\G?/pÚ?ÒÇ ?<|b?.Yî?Ùpì¾³%É?+sõ?5gN¾×‘6?"½¸@%¬²?Ã1M?šð·?ß–Ö?æC¾B´¾ Ó;?Ûû„?#ÙÂ?áÇ @( œ?º˜?ÄhÍ@ ¬°@"e@&ò?êõÊ@#ÞÄ@"4,@$ãì@’n@&¯@#Ö8@(¦c@#Ü@]_ª@ŽõÉ@cŽ@“y^@”ÿ&As”@Ï@ÏÖ(@Ðð°A)˜ÉAi…¾Az DAœØvA»|WAÓl¢AÌRDAäƒ BFQB‡BÔS}BìwfC¤V\DÛž±EiÇœEiÈ5D(zÁCnè­C ŠBÔžBKíB-×ÊB”)B w;BZeAÃRA¼OJAˆ­AWšAr¦@Î)ô@±™@Ô(/@”ÿ2@bÔ@h•õ@ôz@jé/@’Me@p÷@)x@g²8?´:?Ä¥§?¾j}@^^?ÅÁè@-g@$M/?5Z©@@ ×S?ƶä?ßdX@h ç@!ø¬?Þé3@-€j?ͯ]?âò?;¨4¿U“?ʬ2?=‘v?̦Ê?ÏÆ?É.”?Ǥ1?Ùµú?S5Ó?íg…?Øí:?|?Cžm?-Ï?(Ù¬?ÈK²?òZ?<Ö?à@»?Í{?/ [?É®?ÕÝ?¼?$œd?&E¾ãkr>æ­ ¿ ÷x> '>&a¿aŒB=–(>|?•{Ó?”¢›>bMì>†8>’L=Á‘Z<þÙˆ¿>)w?€'AmÕA•0?‘•E¿HŒ2?’ZÙ>Rfh> ±Ñ?’_?Š"K¼©­¨>3l>,v<ù{P¿F£¼H7¿‡üL=½Fˆ=Arà¿x\>)=M>+¬¿wé=· J=–¿Zˆ£=s÷ø?ˆ#6=>”=ô‰b¼ª”€¾x"R¼òr =d@?ŽŸ:>CE?ÆC>,IÀãþ½ñ\¸?ƒ[>»_€¿†#{=ÑÓø;Võ€¿`á_>9ÍÖ¿vÝò¾nrª?i¬>?‡]C=hël>’Ñ¿Zoï¿h¾¿Z–Ú=âZî>Sßø=f}?pñ¿t©÷½½êâ?ä½Îœà=¹DZ¿XpÕ¾hv4½ï"´¿ð뛿ƒC¹hH=Ǭ¸½ðf ?Šàÿ?…sv¿O/¿Š!¿W°">;HB>"¿ní5=ãWl?Ħk=³ür?˜a>¿m 2¿S~ì¼;h>B€e?ü¯ =øÙò¼yßð?Jôì¾ ˆR>JÜ?R½jÃà?Š`þ¿ð}6¿V È=›!?ŽD§?{>>Œ¸¿}=7¿Xé¿é®º=iá(>}ö€¿]À¾P=Ùø¿}=`>4fD=j¦¿j&½Ã¤<¿_ø?Šð¿yA¤>>r‡?¼¤>Uöì@/¿©®=}T>9ÿZž¿Y‡?àÁÛ¿ƒ _=ŸÜ\>I´´¿iv—?iP¿C) ¿†'ž<Õ¸è¿=¯l?uñÞ>qK€½/ëÀ>"UA?‰ý»¿otB=Ó*à=³ô†¾œÍ>·õ?gÀ>4€¿jg~?‡¯²?Œô³¿.¿T;¯>w6é=>ò4¿há¢?vþ>'dD¼‘+ð¿_JZË>4ÿ|¿ƒ=Þ=Ã9D¿c¼»?’áÔ=âÞ¿Nïø>g·_¿eÓÈ;æ@=Ãà¨?ˆ# ?˜E;>.îL¿s<†¾áR>,´?ÈB@<»=ÆÀ®<¼_¨¿hX²¿æ7d¿zF?Ûf>m}¶?–žS¿SjA>g”>ij>)_e>7Q³¿gil>]5a¿›˜?Ž—ƒ¿'sN¿@ÞK> ²¯>#ì¶¿]½¡¿T¬>i½)Ø¿LËk½ûÀ»ö€?Eü>wVþ=t¾À¿_ÖÀ?”&5=öBx=_0¿m –>-9?‰—¸½At?–j‚±>à ?ß^[?Ý“<…€?‡à>o_º?—Í¿\\¬¿fÄ>8ýÏ¿j– ?’/8?„ 9¾æâ#="î<=ËH¿aTÉ=˜Ãˆ?Žƒ|½«ò¿kk6?‘~LÀP`¾º1¢=¬½†Ûx?šÈ¿XNV=•5|>-ž¼8Qð¿UtH=£nt=¤CÞ;·Ç =G¡ô?t©¿Ž1?i@½L|>›nÖ?ƒun?ŒþŽ¿e=”?‹…?=Í&Ð>4â=íõ.?gx¿…vÔ=м;ñR=;=è¿t &=ÙÎT?X}?íL>2Äy=©¼¿Uü=”B½û®H½L® =;?–*=ܼ’;¶¤À¿t:a¿`W¿xƒž?‰ 0>1cD>N‹ý>8 {?†'†>‡2d=Û<¿dOf=ªæ?h[¤?¿´<ÄD¿M0:=&ˆ½]´X?hº\?|8¼=p=ÍoÎ<’æ = ‚X>f`=é±@¿R>.=’.N»®â ¿`8=˜ 8¿.z½»|¿W@÷=×ód=¨…º¿v†¨¼2à½.î¨?‡‘f½fÐ>)H4¿m¥Î?„Žž<ËH¼ Û€;—<5î@?‡2=zgÜ¿gÑR¿aY<ÎB(½¿6´?ƒ}€> û²»¿@`¿sæð?†Mî½6:à¿w:ô?ˆ“.¿|+¿€((<"Ü€¿„sD¿[‘¥¿têÆ<Ö“ˆ¿XÜ^?Œè¤¿u Ü¿Xí7>#N?“Ö^¿]âK=Gæà¿s?\?„s&¿p)å¿>mã¿VG—¿e^ª¿^EA>PÌ(>™yR=V¸À¿A‰˜?‡¨–?“î³?™Ö¾kF¿ä¬±<ЃÀ¿HC¿ç¶¹?Œ ž?{a®¿Pøo?‚p>GÆ¿DU¿L ž¿YÁ›¿ò+ö>>î¢? Â«=ÅÃH=ø ¨=µµ”?”*B¿oÁ¿V•ÿ¿ŽS4> l=uåð>+8>8A¿\:=.Y´>l–?9 „?‹á¹=óȼ=ÑxP½×•h¿mÆu>H·J>5ή?‰€Ñ>"Ä¿bŠ8> uö=Çzh=Ë›?„hÅ¿Ys¸=¨Gê=K“p=ƒfš?v÷è>)½ œô?Ssá=âºZ?„a¼˜¬à¿ZHö?ÖÒ¿{¸œ¿Slà?\Þ?ˆz€¿rK_¿V ¨¿lRâ?’±G¿f$࿎xµ¿h¡Ü?—è¿Jƾh<«” =Çø&?zi=aK4=RļE@P¿k.¾ˆtW>gr½·4>°Ý¿[N=öœJ¿ð¨ ¿¤U¿]Âì¿zP?ὑür=”^À=µô?VŤ?¹¿?^³8=k œ¿kr+=™bN¿eCá>݇¿`‘ô=!t=s] d¿c«*@’#¿gÕž;;Ú@»‡`¿í­Ò¿eDí?pµ>Ðý‚Á¬?r=¿–ÉQ¿txç?|Ûµ¿‰@¼ŠþÀ¿g‰@½ è¿‚æ >°#J>¹=µ/˜¿^ ¾Æà¿d¾>sâ‹<öû ?„Öé¼ÑZ >p<ý;Á: ¿„ì¿‹3v>uöu»ð-€>š> k°¿—Nô>=T¿Ï+¿Τ¿rü½`ˆP?]»k?€¥X=+âT>  ?u*¼CÙð½˜'½Hyؾ ࿌(ò¿~ f?’³3¿vë ¿o½.u€½bÄ(=µÛ=¢¨f½n 何3$<’ê¸?xÐX?€÷¿j3—¾Ž€²=ô{¿~A¿t3,=µËþ=¡<ˆ=<;?š¾™D¿EBN¿Jô¿jáŒ>Çö>z¬]>L e>C$1¿g›š= ˜>wbd>†…R>n¨,?—å>’#§>…ž¿Vð&¾;†>¾& ?‘ðž¿æÏx>Fß¾ `h¿d¡T¿q)û¿Msy?ðq¿AÒ*=˜Èž>>hæ>Gv ?­d´¿{$3>EÑ2?tF>+ÕÁ¿J_F>s¶?kðá>(æ¿Q7¸=ÏÍâ¿B©>@¡Ñ¿x:¸>Z-?Ÿ¿GÂ~<©J(>4®Ø?Ÿ%i=æZò>­ÀU˜=©'®¿ƒÀ >/=ðr¦>‚Vå>S^”=a¥`=ÒrÈ<Zà?’È?’ý?†˜¾¿Yê>>ÏÈ¿ih=©%2>=W=[eŒ<˜å°>z¬¾‹ëÙ?‰™=ö:>IY ¿BË=¯]d?lëQ>6弌ˆ@?‰vª>œ>jÒ?…¯ï=¥Ãv¿Spà¿fƒ%¿o•.?t*¾¿oT=Æ™Ø> ^v=©yƼ+8 ¼l > ä1=¢ç»£ëà?ƒ T=ì ž0EZ¼±^à?r?’ÛØ?+J@¿†™×¿X…¿¿`U´;°þ@¿‚ J?†ÊÜ=ßÞ>0cÑ?‡ÒI½­76>êÆ>Pí0=›Öº=›õŠ=•B¶¿ø›l¿Mð³=å¾$¿éE#;Ç©`¿‚>á=“±¿TDN>*š¿Uï>@t¿ƒ —?о/Šÿ¿X%(»çj ½eS°?xóοOc´=àñF½ X>B°/?‹;¿{ž=ÅNØ>±x?r{ ½SÀ=Vì?‡r„¿½Ä¿ø+`<¿«à»jÔ»qÅ€¿n t=Ϥ?i´ˆ¾äj½à¸?~%;¿sÛª¾~¨=ù>"^a¿,?„W…=4€¿Vé4?ˆ°±<óBØ?Šƒ¡=ÎR2?s{Z@=޾`0<¼žHà¿q¶‚?k1ß=“è?L¯p?“> ¾Cl$½„Ñ*>;Ž®¿X4=콦äÄ?ö½¿ä v=îè?ƒaz¿ˆ^¿a ¿iÍ·¿|N”¿´Ñˆ=—W¿s¹£>°â=Íš>‡t+>ÁÏ¿J´´½ª¾X=Òqb¿ðpV¿ŸÕ¡¾iJn;¯¢À¿;4ó>wÖ¸¿W4³=Õ{¨½ñ©è¿wÈ2¿Þó>-â=÷Ð?…¢>$˜?WÙ®=†ÈÌ?w÷…¿rt8>Qƒ?Š¼â½Ÿ0,¿|i>SŒ?j…ä=Õ!¿jÚZ¿u=>]Ìl¿[_>èb¿YçB>4»T×À¿uì¶¿i&Š¿fÒ?ŽÄ¿p}´¿g^*>0'~>„a‘¿m­à>6 ¿w¯Ý=¼’>ƒ-p?‘YÒ?|²m¿‰pM?þ%=À£`?‡-Ú¿_œ‡?’•>*a½=äxž=Ýr¾V]ð=·©¨¼Òe0?ŒV?€E >pUø>Œr;¿P侃ì'>|†Æ>XRÄ¿neO=ÀJè=*Í¿„í®¿M¾Û¿ŠZo¿Oå>#¥>ˆß¸?h­K¿T =ä#ì¿G¢&¾Jz?”…*>^8–>ÎH=ȶd¿ì罿^Zî¿J?=Qx=÷ô”¿t¡Ñ>B7¿Zé‰?_=þþž>ëR?–²>}Ë¿‘¨‹=¾Vš=„jò¿g0=ú¿0?¤ë<è}°?‘B?‘㜿÷>«>V ¥¿Yšd? UÕ>èZ¾rsº=¶z?xÿ> 7X=¥üd<…à¿Já ¿g³ð=:ˆ`?j=ß/ú>t_¯¿x%ð>¹¿o1”¿sr¿M$æ¾BV¾†³’>cZÚ¼àï`=¥IŒ=‚x@6ïõ¿mAy¿^wu= P¼ÊO ¿i›Ø?Ó¿‚X¥=⢎=ŸX¿l:>=ˆµ>$ ¿vÿ~> ¯Ï?‚Dµ=Â’¤¾Ð¿_ÞÆ=5tP=¬R¿H€–?¦?‡ƒÀ= ØJ¿m4>$v£@’’d½JŒP¿‚]£¿GÜÎ=åÝ ¿UV¿rÛ¨½#ä ?}ÏÀ¿s"°¿iÁø?{­F¿‹­d¾?7пìu*¿[H¿aQâ¼,"¼‡À¾Oߦ¿t ;˜;à<¶·X>Cû =y¿m3¶¿¶j–>¿·=õ›¿JZæ>{ü=hü¸>)èÿ>cžã¿€[a>Q¥¿hö”=¥Ö>>?ÝË>V»À¿üß´¿Mv|>2?W8=jnŒ?…ÜοMþB=–b¢½YT¿lÖH¾±ïÁ=Ò2,½†è¿~Ru¿]Ó¹À]> ½gúl=ùîø?õ@À¿DAÌ¿_©F¿VŸê=„û¿JYû¿_iò?Q„G¿RÉâ>?ÖÅ¿Kgz=Å¿> ¯¿Uæ¿^Ìõ>@íã¿ùÑ„¿RFä?„Õ=×}¸¿yFÖ?Ьö>=aŸè;t@=±ž¿î<>=…+v¿o~¿Ð=ó.T?†sì<óÇ€½ÈÒˆ¿kw^¿ê>5–¿‰I @Í´>CÊC?‰F¼$0>\t¥¿hKT>1‚@>*»¿Rd½ãÅÄ»’# <Ü=P<ùcX¿½‘¦¿¤?m¾z>Ô¼½G >d‹Ä¿Z–|=ÂÀØ¿ms“?ðR¿|/~>KÆ5¿è…S?’Åp?ú?„Ã7=MId=¦¾?’z¢>Ÿú=—$x¿\S?gLÙ=“Ä> <¡?:=ˆØœ?¢iÙ¿bŽ¿o³ƒ?‡ï}>¡‚=ðBl»UÝÀ¿øþ?b_È?Œó,=¶ðοcMŸ>©¬¿…C¢¿\}­¾ Š¿võ;?’ŠH>/š—¿]`ì¿bÑÔ=뫨½råb¯=¤dнqŠP¿ufž½+…,¿}á?†Eg¿zÔì=7‘ø¿b ˆ½±f$>Ù²>DY½6ƒØ¿t¬¦=˜2¢¿mÇÂ=~˜=…žÀ?–+ó?”C¼g;`?;~?Ü¿z’Ô¾ˆª¼—?×u´¿qk<ñä°>T{½åx4¿å¨v>³±Š¿=o-¿YøÒ>’Ö…?ìŒ>8‰¿ca>1ˆ>=6A>wj´>G»}=ýÙf<¼À¼õÐ?‰^y¿@$ÿ?$?’_1>yl>>c<žº ºÞ»?Š1\>]'l=¹P0¿ü‚=¿S¢?šƒr?Šª¼ƒX@ü-?•]«¿‡T=“/ö>,ÃY¿•>>Tvc¿q½ƒ=΄>^6ê>uÕÏ>â`j?ŒoV?.Ä?ƒnú?}#¤¿xò‚¿„õþ>Ev¹¿[Ýå=)rL> q¿l 1>Ì¿JCŠ¿WÇ>opð=ä–þ<0jð=Æë¦?“8ž¿…å«¿w4~¾´Ýö?€\ñ¿†Õ-¿Rü =Öœò?ŒòÖ>>½<¤z`=Ì…¸¿t¹’=VuÄ¿V¤f=Ü‘|¿c“Ú?œ7p?x¦à=b<Îá8=0½ §,>mBƒ¿bí?ƒ¸=¤/ݺš¯?–à}=ý(?ŠÆó¿Uòü¿ûö =ü@L¾ÿ˜>-+¯=ªap¿cxn?«ÿn?š:¤?ƒtñ¿^Þ.?Š^±=Ž9ö¿lùÖ=ø™v¿f35?ŠyÒ?m ->¯?…¼çzø<ÇB`?ŠàŠ=ÔðØ> "Ó=a[„=ÎhN¿|¡è>)ð¨=¸¦$=4h ¼*p>yU½F¼=×±F½,Æx=çö9ɼ?|§{¼²@?4-,½•{X¿–7`=TÔ?˜.0¼ Ë0>H2•ˆ?ÈU=·«ì?`–è>;?ŽsÉ>Y8äÀÏ3¿JÜ⽆Ud<<)À¿û-¿UJþ¿‰ûo?„Ô?b>8ͽ—q¿ÇN½}8¿j5T¿„½\=ꤿ‰õS=’ÖF?Sh¤<»º0¿[<µ¿_9¿aù¬»‘üÀ?šÝ°<¬Sp¿d &¿b¿îº´¿^dÏ¿Cùë=bøx?xÕ¥>ü/(½âçF?liQ?ŒÜ>¼³¾x½ŸGd?Š ¼ @@B¿q6=®D½ùUŽ¿„Ý=Hc>Y´ç>D½Èep¿r>< =« |=xãà>²–8>CI¼í¤È>>n•¿?Õè>ö ?¨>\>¿â¿wxP>*™8=éÓ(½iA½6Wð=¥>>0Ư?…bпàüª=¡£è¿\\x>" Ú>#àè=03´¿c[=0%Ì>„ `=añ>2ßv¿N.¿êž¡¿8)¿M8@>!$ç¿K¼‹>ZŽŽ=¶P>”„l<¶– >;‡?”Ù?•p,¿FLå>•¦´¾À¬¿sõ”>ê.=ð…Ø>L=‚>Da\¿^b¢=‰óL¿Aø¾Åf>,s¾%AÔ¿hò=·›Ò?…è&?Šòj¿d»Z?‹O?Œ%¿SÆô¿§J<6Pð=gV¸¿V4§=Ïáö>„>ʰ¿ç=½—g¢½!à¿u^æ=ðsP>F í=Y(>4M¼¿d½>ûÏ? ÿ>‡hl½‹?|<²1¸?ƒ^¾>=Ì6> ¿g; >‘¯>W‡‹¿C* ?n{z=¡§¼½³÷п€ðÊ¿gwú> ÚV?‡›V¿a[>`Hs>'PÎ=Î8?‡Òο^Ae¿d3=§DŒ¿bmÐ<ô@=Lð ¿] Ù= ˆ;æ§à¿m¯=ZÌœ¿€rW¿a/æ¿gT?z³˜¾)Ê=<úd@æm?yˆÚ½¥(½¶4ô?‰ú“?Žjn¿”Àu¼ßM=ÏT?lþ0?uÌð>/7”=†¤¤½ãÂ@=Þ,¾>[i>f¦›¿oF>:Â>j¯?‹7~>°³ ¿nˆ<”Ü =ÃÐ^?[)@=£lt?US)¿ˆÞ=–@ø>Kßš¿Rß;½œ¸¿YðàÚè¿}sä=G¶ ¿v=ƒ©¾·n–>UÓ=€F?áeƒ½áM,?‹jÿ¾ÜŒÓ>—L>t“¾ûó„@&¹<¾( ¿ˆ}¨=1lÀ=…0¦>O±?(4=Î~¿“ȸ¿‡@[¿ƒn?|w½ƒ ’=Ò/P½ïXB;“ó ?†gU>SÚg¿ýHm½X¡à?‚ÈU¿W à½ÀXl=fð,½ žÐ¿G[’=ˆõ`¿rj¿â2Å<®P½Á•¸? ‚¿u½¾>h_a>P0>Ę?4€ô>¡C.?ŒŠ‘>žñª>}.y¼àOh>‹EÀE×=Eˆ?ú¿p\D>4?=éôn¿YÂË=Ó+ö>Á*?gÿ‡=ð>J=ÑÂ<ò¶Ð¿]²Î=Õ·<¿f˜¡¿^šÚ¿çàÝ>IV>D¬`>ÜéÑ>«ÁU¿îüÖ?”i|¿SÙÐ>Nm®?—ÈÛ?ó‹>|uƒ<20¼ôÈP?´=½‰?Œ%<>Œ¡¿zC>‚¤>„=>I»¿_›ó>e•¿uW¿Z…e=Òü´=,µ´¿hkæ>V²b¿yb¤=«òŠ?…Ø…?ÞK?….?’Ð’¿ëúÄ¿ws=ÇÐô>Yþ=Kö>Càÿ>n!Ú?šù¿+q.>1Zÿ¿Y­Ø>JÄ >QÏá>8ø<¸Gp¿gz&?†àO¿oûÔ¿}pŽ>æ~½C”H?–±<>&Êm½?`ä=‹rä>CÐ>qþ=\ÔÜ¿i™<Ĉ@>ãž@-@½=…Ø=åÞ¾Ž®ä¿×>8ò¿[Æš=Õsôºº¿eþ‚¿Xz=«²î¿}ÅZ@B†?f€¿f²¿]â?y h¿x®Í¿SÖ2½ Ÿ†=® ì<’~˜>²÷¼Ëp€» p@¿UDP>}^L>Áí¿‰€_?7î½±çH=|°ô¿Œî}=æÐÄ= ý8» T€=î<ùx?š?~%Ù¾ˆ#ñ=æS:?vŸ?‘ ¿}(“=Øv6½ßyæ?lg=ªur¿€©F¼ÿú ¿Ì5?Uq=?z;7€¿lC¿„»x=´<⨠=-¯T‘§¾86T>T ¿<=“@V?Œ;_=‚Ð$=þJÚ½îýp=¸n»2¦À>(´=ñ•¨¿a?)ç=Úÿ=}^?tH<îAx>Áfh=Á¸t¿üôK=—’¾?(õð¿e…ª¿<¶Ë¿@iµ>²–?™Ð>@N?Їc?P§T¾AÊ?ˆ‰=ç»ä¿b…©>w¨=ÙöÂ?“˜h=ð´P>~ò¿q²> ú<×}0¿UŠ ½[ô¾&j=°ÁŒ=­Æp¾%Ô>Uù>´|>U̾¿ZD|<Ñ' >àÉ=Ûrî=þü =CŸ¼?•Ÿ>ßö¿]:t=Æà®¿†׿z}%?t ð>c4X?“«¿nšà?Šà€?Žê>JL{¿o‚Å¿QdP>CâH¿€™ë¿ª0Ì¿‡£Æ>&ù:½jNˆ?“"¿R w½ 1À?’w€?kÈY=þÆ?Q‹y= ¿kÄ>>{lпZÃW?’~¿TP1?•›5¿oþ>.'¿oHÑ?Ž€¹=üÊz¿•[» V@¿›‹Û> ô•¿ˆZ->™X??g)?‘µD¿WHg?£O2>@ß&>†k˜=Î!=•ü=A÷x> T =¦4=±+(?z¬>…¯>>f ¿jUJ>6â=«x=ÿÖ?“–ü¿fÆ->3¼¿[ß,¿n«l¿RfP¼ÒŠP>II=žÝD¿ì?ŒÖG¿cx~>-ö¼ÕÒ°¼QO <ŸbØ¿k3Ž¿Yň¿ƒ`Ó?b%N<â8?zäh»¯`¿wB_¿cp?ŠðG=¶œ¿kxÖ¿^7D?“^2<&„0¿‹„;?B·>x½ã¿hù>=òI*?n5Ð?l˜>—L?“\Æ¿ kÜ?`¿as¨> u価ø£?^ºþ.¡> ¿eyó?‚ð¿iG;?ƒoö¿!Ô>(’­=k¯Ø¼úˆ>ÇŽÊ>NBÔ?€©Ù?ƒ…B¿eY]<§­à¿kB:?ÓÎ<íÀ¼ô >ÆS¿a*:½h-à>I&¿WkR=‹³¾=Y¼¿p=ö?7?„c¯?&D>'Â×=4R<>3‹Ç?s¬‘¿ê¥l>‡ò=™7ú¿Je?›(X?’ :=¬Ì?‘ M¿iÊ ?‚iš?–[°¾²÷¿V`à>¬u¿bY0¿oÆj=¾¬ô?t’Š>Yv=T$¿Hž½ÕŸ¿‹ 0=¥p=¥ÀÄ>{*<šË8?‰ ¿]ã?™ÇB>¨4¿IL>ÙÁØ=ϵ0¿dÕª?‰<”8(¿„{>Lã‡>8lc;pó¿n«ç=­×š¿uÊv¿q"t>7Ix¿»$¿tðò=×§ž¿åQ¿î€?‰±>ÖQ?w-¾¿hoX>CZ¯?‹ã˾ÖaË=º>|ŠM?‚ õ½bWHL¿xª¿H/cºÿq¿jö"¿f]¬=•ft=»q>²?’ªŽ=ÙP?‡ »¿SÂÐ=–©?‡Ñ?‘|Ó¼ã­Ð?“/‡?–Å=&«¸¿“Î?‹÷X½iâнÒ½±¨4¿…”Ù½i P¿“˜>^—5¿r°§¿ˆ{5?ÊÀ?“„>7ˆ©>C?b“K=9ùؼ• >i!‚<$¿X ç=½è¾X­"¿w¥É=–‡Ê¿n°?pì†;7³?€Á ½G4ø=móð?€>+vº?‚õ¼¼a˜=ØRè¿ö…¾?‘V¿xœ ?…Y˜¿õ[G¿‚¨Ú?š=ç>"Hο€a¿}~©>¾l¿LÅ¿sKU=*ûð?r±f¿‚ÿô= » ¾Cò¾Rü¼ÅmØ=õ=†¿Š+ =’ö´½³õ0=âàx?„¡p=ÌÎ?LØ=µzœ=¦"ð>:º½µ´@¿}ð¿q\<ؤ?cp¿p7/="U<˜¦È=ä- ¿}Æ£¿zbϼˆ>™¿<ª?~¿®q¿ön|¿vE½ùœ?Øz>>¼'¿z’|¿>_Š¿K|?ÀX>Pañ¿aÁ¿f¹G»yE€=…wÞ>A9=hR¸¿‚{±>$¾L¿A==d࿃p>Ö‚¿‡Ñ¾P£¶?­X¥=œSþ>Uh¿žiÍ>EºÈ¼Ã¦€=ºq¿Ybw>|3¿J#>l:¿kË÷>ÔX¾ahªÀb=õ̼éÀ?˜ñÞ>(eð=úv(¾p½H½ ¿)-g>/DT¾b z¼ñr˜>–)>X\º¾€·?=‚Z¾¿ë\à>!¿^úé>\C®=%±Ð=ç¿ot€=†r>ž=„Î.=guˆ¿’+=ó\‚;~~¿hMa=Ö«r?CÆ?“k¼&i=— ?ƒÞU>PÀ¬=[?ˆk\>&­ô¿kΪ>OŽŠ=M[ܽ¡œÈ@ ]Á¿tg¶=“Æ0>0$¿p¾¬¿]%º@HA¦‡ü?¼p•=\ш>^“> âÔ¾{Nο^ÃF>¨)ô?†Q>ͪ>7Yì>'(þ?ƒ ><>Î ?72?‡^â<ú< >|Ë>9XO=ôˆÖ>][x½Ÿ@?w° ?‹!ï?jÓ|¿‚øè?” =Å[\¿vñ¿kUœ½‘]d=‡wn=­þ?\P¿j=Ô AQ$T/½Åh¿‹Äç=ÔAä=ý[Ü?Œ^¿LL­>7õ½–ʸ?õC½×ÎÞ?–=&)ì> <»P=¨£ ½6ôÄ¿x¿½9ðÈ=ß¿†>Šê¿ î½,þÄ¿w•>+`=Æ*¸<Ž€È?„%«?ƒ?>8´¼  ?Õ´¼èÌx¿Js?¬?† >÷úŠ¿R‘½Ñ¿œ?†© =ˆZ;õ6à½>¹¿HË>@p¿ÐÃö½V„Ü¿~Æå>ÂF=Óü<ÔË>SÆ<À|0¿~ =š%H?ke1=’ÒÜ=¢7p¿z7Ì»¾ ¿wv½}žà>ú =6P¿er¿Y'ô=¸¿eϼ?Xp =“b~=õ<†>3ã¿q’=* h¿N#í¿Qœ£;ÁÑ€¿mO×?P"Ü?nß7<¢@?—<¿r¥D=«Ðú¿5 €>¬Ýt¾5+h¿~¹!?|/­½Š.,¿óÕ?“Þø¿bÒ¿]Ý >DÑ=Ý_þ¿J³þ>5(«>9ƒ>…¦,<ãp0¿o®Æ¿dóU>Ö5¿„þ¾¨RÇ=êwê=èýò?z{Ý?‹½½­ä?;Ö<# ¿<É><-½Ï~Þ?›=>€¿mq¿å½ÓôÊ>Yæn=Ç=?Š5/½l¬È¿eߨ¾€Z~¿äâ©>'D> }=oã ¿il,¿d”0>Zî¾=µØì<ÄùH½CÄ\¿ÍÝ?š5=üäB<«©|>ãe=6q˜?‡cª?lYÄ>9.3?{7=;o½˜{ܾŠFY@=ÚjBÄ<2A!Üd>R×=”aZ<¸À¾ìÒB¿ƒ$›½œVš?ƒ³×=í ¿Z6h¿e·è@ k?ŠÍ¿™†¼¨O€=ÞX¿ ®>Pl=gÊ„=á æ>Xަ= O>=ÿüð>!„Ç¿pÑn<ÿ`½Ìèl¿Q¢´½ËÏ¿V0?ƒŽÖ=îÄ¢=;‚¼¿â©>¾£$C)âêB b@fË¿]CF¿wD>Òp?x¥N¿tœ¿×Ó>1«þ½H³à?„dÞ@˜?UFî½ T¿fPM=‘É¿zºc>A/ =Ÿ˜ª¿Xò¨?}Ü_¿ph?l©þ<Ò@>K=ž9n?T2(=o\<‘÷0?’q=‹l^¼Øj˜?‡’¿uoŠ?6!¾2YŽ?wäê9âT¿ŽÒ:¿þñ=Þ˜â=££`?~è1¿Œ¹?¿'=’Áê>i~d?„¸[¿…R¿×Â>kú> .,?‡‘¦>®!`¿iÔ^='Äø¿ó¥c>j*á=€š<°ç0?tÒ?hß”=Þ;É¢€>)ÙÑ?ƒð»¿`ùI¿c²x=ªêà>Aæå?{à =î' ¼ôò ?ÿÝX¿}‘è¿ó!°<©ú0;Q怽éˆ>R\¿ŠÐ=ù—¶¿jÆä¼ÿ·h=q=“•B;‡ùÀ?ˆËÛ½_Ÿ>2pF¿ƒ #?‹•ˆ¾L±Žº/™¿ƒ×[>]íE=Ÿî`=ÎÞл:À¾’ðê=  =HÃØ¾‘ Ë?“¸??S=è9>hÓ¼=®c">kaè>HÑÞ=ë:~>4ò>‡=ïÐŽ>9Î ?‘Hù½Aq(>HÔ‹¿Y^?”z?€ø5>+ã¾€>h>PB =îž?„º¼=Ó˜˜?ù|q¿ŠM£¿_ŸD> èg>R&=«H‚¿ca]>$–´¿a™x¿QX»¿ƒëœ?S=¸=p®À?˜%ö¿YZ¿E&´=ŠOâ=ô¬`>ŠF>3›1?Ñ'¿Og"¿hR>i>B¢?ƒ×!@X¹?Š Ž¿9¢¿JÒê> =à`>Qz_<Æ0;'&€B˜/ðA ¤¡?uZ¿Oæì=pÚÄ> ¤¿dèÈ¿„Ìȼlý=œN®?÷œ}=¨ˆ>í·½òø¼˜€>=x>K]E½¤W;¿˜@=œ7,¿fÒž=,€0=Ò¾§‰¿È>}¤¿OI]¿k8–>?ï*¾ÅÓŸ¼ªÐð½sê¿§.&¿k@›=½’Þ¿“ØÎA˪Bc¹ˆ?úÒI=ì=ží¿^b<÷ò<šÃÈ?¹?ü¬ß>(Ûb¿]ýˆ·Ù€?… ">0ìA>KnÏ=ÃZ¢>Håñ>­©?‹³ú<ˆ˜¿[:à>Uˆ:½$Jl?¡›>Bß?zm???›\k?€ˆ¿‚Ý¿yá%¿wÛf¿Oº¾¿G3“¿gìl=ö¾=)Z ¿oÖ>e~0¿G½k=¤ZV=^<¿~Ät=†¼?ŒôC¿ùãú=»¹6=€Rt¿í-½Ó„?eÍh><ŸÛ¿Œ"8?õ»=/M`>&ˆÑ<ªQÀ¿ñ®¼¡µ(=‘]|?ÂG¿gÔq½ƒ †¿?M9¿:8¿‹&=Á(¿fM =ÏŽ=žá’¿gø˜=O0 ¿&l?ú]?9p=m®P=à n>•¿†h<–"ˆ¿Œwú=â X¿Ö=^›¬?zõu¿jô=—bb?ƒøÊ¿y©ò=ïZ½H;°¿d3À¿vJ?C¡=˜ÆP¿h¹Ø¿’ci¼ºÓÀ=ÜL˜=͇N>/÷x¿1ì>p6ß?ˆr´> &Æ?›6QC&ÓK@¢ãÀ›æ¿UÝæ¿c`ö¾ì»«?“f>œí>rþ ?—à^½1º€¿{›Š¿GÆþ?7ùÅ¿X·n¿DÙ??…~?ÆtX¿xN>3é¿nœS=-À=äEŽ?üò{?ŽƒÂ?‚ŽT?…}`>éþñ¿<ØŒ>%²(?™ìP>l_¢>yeö?ãF>%¨š>a '=èϰ@î¿w­~=ÞÞL?ˆú}¹‡€¿}ó,¿n¢#¿^e?‚0œ>>á)>%[´>bÄ1>ü¼¾s¿,?}:>j¡Ô>j¯~¿kt¿ò¢ö=ô8²=Ú¥2:Þ‚>R«=¦«¤¿K°ô=irT>zT<މ€='`P?Ž?©½1¬½0_@„¾¡~#¿u a¿{¥Å=Ž®:?‹=ü>˜\”¿\çd>"r¿}⼉‹€¿O{¨=Ú£p¼§üp¿üÛ·¿`ª|»8G€¿VÚ?‰n¸?’v8¿`²õ=ºu(>y¿z’=ïð>Bl>[ç¢?„Q¿=òº=w)\¿[Ch¾*Ì¿EB¾©P­>*© ¿l 2=³î¿‚.%> ªÑ¿ð¼ð’H½‡]@?m´Z=Ürj?\o.?~C6?…ªc!¬U½³r?ƒu2»Gý€=G$>{?•7£=²Û>?|X¬=ª–¿zá¿>O¿þgò¿f?ôû >[«=w¸>ÄË=•¿M*æ¿tU?‡XØ>8å?š©€?hn¼RûÀÀ’J=¦]~=ùº=‡ìX?…w‘?zÍ"?Š=²\¿d¿^­x¿dR“¿lJù=^‹ ¿xÓº½æ”>>ìß=–eæ=Z¸X>„´=X›è¿pN&?‹Ôô=+Ì?‰ˆ=–±T=D+T¾ŒrÆ=ÃN@!da¿f¿=h¼0?ά?h¿•ì>~Y=çé¿l+n?\¬³¿q§½T•@¿[d=ºEÌ=@„¬¿‚! ¼…¯¸»Ê÷¾¼`Õ>XÚ>ò?xt¿WÚÓ>*º–=€ªÞ¿rª=èj¢> oPBÄ<‰B¼Š?Œ!¿€fø=Ž˜²?‹àê?„*›>\cŸ>Tû?¿rS?¿GwÆ=GÜÔ=è}¾¿Dg¨¿PÒÇ=@ÿŒ?™pF>‚ø>2D<¬O <2dпY‘”¿s8t?kCƒ>¬½ÏÃ\¿N ½>K€p¿n?Y>n¼o>ž<Ø<âëÀ= ±$>Êl?øÉ¿paM>3#ÿ¿—Ú›;©&€¿ï¹>%ª?¥^=¢s8¿r¿Šf=Ïf;mMÀ¿S¢&¿kWÃ=&hH=P ”>¨à?wsa=ý愾:0¾9¸¢? -ç½ú;ä¿•–?ŒÔU=ÇŽ€¿}°N>/K =Åq¨=@€?suâ¿fcå¿›ƒ ¿€¿æ™á¥•¿T‰l?‰MÛ=òj=°¯Š¿Wy¡½wOp>…t"¿tŸ>=Ľ”<êÝp>eØÂ¿[{¬¼*Ð?„O¾,Ãæ?‹wä¿Lέ?Œ]“¿l‹‚½Ó´?qš‰>‰qÀ>L‰L¼¤Šø>ún=¼v(½£y,<0– ?Žþq?&§Z?…1H=ÈÆ=ÃpX;lBÀ¿MªÒ?gif¿mŽ£¿{–Ó>p&ê¿V³´?Œ1ä=*Òd¿fî¦>CÞ >AR²?‰E*@7Þ?Фö½$P½•|¾ |¿IÛ?~b¼Kbð>U®†¿¬”¿}>¿>V<¿vº½?vŠ ?}ÒZ¿RðJ¼"Ê€¿~Sr? â–=@(>HÁI>SxÔ¿}K¿†Ä@V>G%¼lœ`>:YØ?t>$Rj½X–Ð?”Q¿r.¿\ÿ<=³h?–ÚN>ì„Ò¿M*†?¨¿^&Œ¿v.A>;ëx¾‡~^¿XýÌ¿Àñø?‰„½A,p¼¶ið¿b5E>&8Ô¿_̈?’†¿fì#?^Ñ\½wÞ¿ò 7=h´0¿c…¬>`ض=ýÿÆ=Æd>a÷=ƒC¿€Ú¼Ë@?’â·¿b¸>ßÛ?†D³¿n뢾#D>^•å>mú=®–Î=ߢ¢>(;Í>f‰¾†*>¢$?Šž¸@ƒ@z@àPg?‹ž*>¨,!=˜´B=üJ?‰ï?@>?«:=åMØ= -œ<°´ ¿q)=Ö±¿\.í?Žîk=òÔô<ß„ ?‹îò>#Å•¿éÝ+¿[i¬?…§†¾;e>5Ù[¿Œ‚>]OÅ<ý ¿]Å¿‚¿š?Áx?й†>iDh¿jI¹¿E„Ø¿n¡o¿1€³=­‡?ˆ;ë=À4¹ü=ìåÖ=¿}ê=°’H½,›<=o¬P>.•O¿DÈÒ?ýÂÚ¿™Z—>ûÈj?…ÉÔ¿Z†Ó¼¦ÑÐ>Eâ–=Ÿ¡”¿h6=Á¬>Üê?‰ÒH=¸Ne=©.Ö<ƒ¦?ƒ%š=µ—b<§È?üpb¿a¤‚=ÜO–?™m>Ü?>½5=ºìÄ¿~æ¾µ´¼ˆ È?þÁB=…¯D<¨x0>.,¸?Šs?~Št¿vHÊ;%!€=ÈÏ®¾,Ç=Ó‚0¿ó6¼ùçð?‹Ç£>!÷R?h*?†|ý½²ôh>*Ê—?nÊx¿a^¦¼I ?y30> %2>0Äç=™_\>7ðÉ»—c?‰è`»Ê€=…Ëš> _»>Qw=Ë&D>J8D>#t?‰uú¿k¬ç¸;¿’1D¿WÇ?tY ½Ÿ+p¿k_X?‹k¬¿EÐ?‡î?{Rm?ƒw=fÂØ¿z—¿{kd?—Fˆ?Œ•6=E|¿Oü¿cm­?$€!¹·r?I‚z½9z(¾]Ú<=ÖÝB?Ž?õó¿l;ì?*©½u5ø¾‡ý¿‡¿¿?•Tƒ»Nd@>{Ú$<ãk@;eÜÀ?‚d@¿zuâ=Ç‹p?ˆ—Ù¿|Pè=cŒ°<­U¼ÖüÀ¿l[ü?Œí ?[Qj½¢fº½FT¿lW´¿m£$¿m&¿ »’=Ä}> 'š?ÿ–«<i¼|dp>=ê§>Šž@ nF¾øßk¼Í. @€ž¿}¹ >‚F^?´„&>JùZ<ìxÀ¿Iß=BœØ<]Ð>óŸ?zÞL>n&¿UX‰?…7 ¿U»¿ˆ|2=Ý—ˆ=ÄyD¿ìD?œg=Ž9,?„x„=ñK€?Œ³ ¿óv¨=Ùî.¿kÝ¿B€?Š[¿`E%¿bKa;vˆ¿PÀ¿ˆÛ”¿Hÿ?Š'c¿i¦´¿Uúö?s¬N=˜Óà>¡N¿vö§¿bk¿Œ´—?yr“=½Šú=$¬`¿ŽL?ˆ…®?†$7¿|áZ¿rŒô>Y6+<¯ XÀ’Ï¿€«¨=” =;'H>Zæ?Š%—>ê%¿šæ}=ö§L>H¨¯>P=U?q u¿Ro2=sdH¿oú>…¸x>*&=-8>6Û ¾j™">-ž<ªl€>‰6å>ÚL?.®»ÓÞ€><<2ó ¿OôšÀ¸ž?Y¢<#kP¿X‰\?dû®¿E0?|G¼?Ø«¿hÂL¿ø‚½f>Uq‘=¹L®=,ä¿ZÄ>þ·.?†a¾?¸Ó¿¸Š¾‡|пh‰=·Gp¿”š<Ä+ˆ?Ç?{¹k¿#5¿Z·]"ùe<@¨<©"?‰HÌ?êÖ?ýñ:?Qâ?uN?€…î?{_Ü<–! <8ç`?qŽ<=_p=Ûl<³t=«fü>U+ë¿r‹,<íYx?Z Ø=$Ž>57V>Žg¿w :?O8=4«X?„󊼃²€={à?‰XÖ>›=*vH?‰,`¿ATø?‘úå?…3¾!' ?…2{=ˬN?XW¢>»h?pÐO?fæ~¿—g¨¾?À4?w=¿oAm»ÉÀ=ß3載C@=úÚp?u L>0äÖºÐ>Qá™=ÔßB?u“ö?u‚Á=6˜ø=köȻɠà?ˆÍ±>TÚ <¼X>, ¿uÆÑ?pØ‚?¬ÍÉ?ˆ(¿gRô?ØþÎ>šøê>&ýù>kô=¶ ¿G[P>`ñ>«ÞC?™:>—o{=ïX¤=A­À?ŠËª>0>M"={—,>‡?}’Ž>^êÒ½ÚÚ4=Â/8?’:á¿`ù“>sàr>ÊõÍ=ø4> «³>Žñ¸<Šƒ>„v¿bÝ–?Ó <¿gs€>@Ó>™¬=}+$=µïŽ¿j»@<šfØ?‡Ü¿o|â¿jÏf>NÎ?”õ¿ƒÉ=ƒUL=¸k?‰UJ>›ïš?’1&=tºh¼¥Dè½+2=]Íp=¥Ú(½ŽŸ’>sÅ¿n`Ô?ž¿e‡}<• ˆ¿_R>©2½ó»ò€=ɾ=/8=aÉd>4==Ž ˜¿cÑj=ød¿>ãÇ¿…=U¿çðÄ¿l 0¿´˜Ë¾5‚ÿ¿_œQ¾×ùï?’µ¾’É?oÐæ¿‚ür½2S=ŠkÒ¿W£è¿„­¤>¥TÈ¿_ù4?¸=ØÊ¾¿•’>™>k?’<<+à=‰ø =uˆ¿‡ëÁ?€Èi¿f)Å;»Ï€=€ï~=˜Å\½k‹L½D¿à=µÝÖ=—£º¿i ‡¿mµÁ?rq\=ꌪ¿uö¿Yëp¿vi>s(„¼%ò`¿Œ®¿vãÄ>2•¿u[?†…\?^=y?BE=¨³Ô>vºj¾Þi?ˆËk¿zâ¿oÐM>u³½fÚ?þ#> Bi¿U†>%š¿mxò¿Nš…¼Ÿ²€¿s›½-#8=½ôÔ?‚aê=7Wô?…*?‚3C»ä]à½J¨¿û^I>MMx¼Œ¢8?~ÿp¿g@¨¿Œ¿ =²c^¿mþû¿ô:>¿wŒ¾·r¿‰Å[¿jÒ>S»0?v™.= =¡á6¿aÈ­>·æB? ø=0¬¿ipb¿„ÿH¿›f]¿ƒ´o¿Mp¿sXY¿c¦ð=è2ì<˜¿m³Ð¿R´R> )Ÿ¿ï¼î?ŽÑǽwûh?P¿=ÌU²¿zß‹<¤Hà?O"¾¿j­¤¿}Ú<¿à<ñc¼ÿ°°=Iü¼|ç ?‘žÀ½ x¨½?%Ø?}u<½ÑÉ=Ã&4½?è?{j¶?ŸÁÿ>ˆ°÷>”ô¡¿ôÓ®¿um¤>¢lœ=ÞÛð=ñΖ¿fWâ>ƒAº>+Y¦>n]b?¤’ñ> Í =øÓv?š©0¿Vð\> ë>LnÇ>V`?ŒAd=Uè>óe¿å¿c2 >@=¤?‡«>P]9>.œÒ>¹ ®¿P%á¿Pt&> o^?˜§Ö=l ¿û ¡=È»(?¡ Ê>k¹=Ô0 ¿};¿IÛ¿bpê?’%Ý>Ø@zŸ=ĺú=ò¿TxÎ=¬æ¿U¿;‹`>s±¿o—s=eÝì?”ê³=ûò¿>øt¿rFs=쪌=Ý l> &‚=Þtn¿R=‘f=~>ûï¿ðÔ?Ž5?ic?ˆr¿By|º_>-Q¿iì2>èw¾hÊ¿_M=Ú$>`\=)z€;Œ­ &Ÿ¿P-ç;ºY@=ºf<ê”À>/β=¿,8¼9z`¿|ß¿fÉ"¿h™>{¾ü=µ>6<ü5 ?Šû½=‰K^¿‹:Y¿b3’¿y¿T>• R½Èl>[¶÷=²N¿Q˜Ž=§œî»¹Ò >sH’¿aÔ=?“n=¢0> ¥?}ÄC«ª?“-°>5™ ¿ý6O=âX>2eª¿÷&¹?ˆ%€?Nƒ½ŸÌª=§\¿‚Oý¼µ=a8=wh¬>L¾¿yõé=fjP9¢R?„Xd>4yÒ¿„±8¼¸UÈ;ï€>_¯½?Ýì=s‹è¿Q#&º•<ÅuÀ¿7˜i¿Jmq¿P=›«V=“ñò=©%¾ ›Ü½íE˜¿h=Ž»j@=Êþ€»×5À?ˆ©é¿gg?“³û=DC>BÛ<ßQ`> ™î=¼yd¿•œ=:ýä¿z¯¨¿b¯?]R?u,ø=º$¿iÆõ¾yä<ç³À¿€+R?›7H@ý¥¿v^®º;=Í=]€Ô¿\b¼W-0;â×à?sz©;»é`?‹Á>gg?†Îp=…²\?2X.?ŠxŒÀ„%>pº?i`¿|Å¿5Ó>¿Ob=Ævì½_È¿s¯h?“Æ=Ú¼¿SŠU=¢Q4=|‘ ¿a‘>W¢z>˜È>Sðê=ß."¿bž?,ž¿IÄ¿?“8õ?}B¿p`_?‹ â=útf¿nñì?”;û¿;ó­<”)ø>=R¿v–?ˆ»=åÆ@ÿï>CBí@{Q†<ï0=ê­à> ]@=‹ ">_IP=âxö=‚MŠ>Z~?ÄÆ¾;z> ˜>=í¿]X(?²g¿r'Ù=q›˜¿^òv=àí¸¼6À¿nal==¸4?pÌh¿aï¾ 6Ù¾6€ö>‡cŸ¿~Ø>•-¼àªX¿nN¤?|C?‰@P>Ó£¿„ê¯=5<Ð>8 ?vO1>Yæ?Må>1Ó`< ­¿p T=\ÌÀ?ˆI–?u =½¯V=½ùP>¬ð;ŒÇ༠Âp?rDü?szí=ˆP^>UŒ]?€7<«Š=-´ü¿cŽˆ¿~h>‘¾p¾Û”Ž>Ÿä=Òm4¿W¸Ü?‹U…=‚¤¨=Ïü¤?ƒâ`?©“¼ž‰=„;f>+–^=ø¨Z?4¼´-H>y™ë=̼¿D_>?Xž>nî =™¿J<\¤@> õh?Š«AÖçAoÕd?‹ìN=Ž9¾¿wJ>s„b?p¢²¿V+¿‚¼ =ò‹ª?Bjº¾#Ïë¿vrZ¿é³ ?~?¤r£?†N=“Rн¡‡’>=I(=æÀ?{–D?“ñ¹>IÞ.½oÙX¿q7­?úøŸ>.é[¿i‰Î¿ý¹è>­ƒJ>L}v<è7€=é'º¼¥>@=çó?El=â¹è=z?‘]æ=¿Ò6¿ò«¿u¿\ÆÉ=#1 =œ> µ¾ vº¿[MR?Qq=²ÃÀ¿{$Õ¾4=Z>œ‹*?ŠÒm=¦¢=«J<¿f—?•$h?k½¿ku9;?sh?a«e½²N;,Ç> ‚½i ¿xv¥¿[P8ÍP=l¡>) !¿’ý?Šƒî<–ÍÐ=Èy(> ¬Ý?p?ø8=ál¶¿p(¿‘,`¿Vš¿bÈâ¾ ö=Þ¬¢¿dG>¿k9>A}ì¿c ‘?]Ÿ±=ÃÉ>oû`½øŽ`>Š”F> ¿¿.>=l¿\ùÆ>•`¼>…Á^> ç}>yÆV??ô¤=rop>7¿]¯>„+Ê<£X¿xå¾>zAÑC EÞ@]6>4€=û%†?ó“x¿O»?¢<%=‘×$= =ý¸J<ì ˆ½ÕQ˜?è¦.½Èt\>9 Ì¼G%€<¸Þ`:AÀ¼Â°@?%=ÝÌ|¿yãP?U‡i=ç( ¿èu¬=§$¾=åm =°jØ?ŠjQ¿Nb¿_`¡;É*À=âìD?’™5>¨îg=M:=“•=øm¢>vÌ¿UR”¿‹Û—=š!L¾4P¿]ÜÏ¿pRg¿}?7¿è}…=³U^¿TÇx=ÃSÔ?}ó!?g@D¿@>Š?“«ø¿mÁÖ?w³²=ÂNî<*p?‹Oò=‰cD>—Ã=µ„?‰¥u½ä?Tv¼]Q@¿NÔ=Ö°ö¼üÂÀ¼6¿y(¿l¾Ï>)¤¤=¯’´>;?Žö6<}sà¾N8=å_°> ¥#½3ªÄ@ÄF@ò=œX<”ª¨?rø0½²s\?Š”‡¿uü}=x2¤=Ýͼ?w~¿Lµä?HÆ<¤0?Ša$½É®¿[)A=Wéì½Ü%@=Q9ô=˜çp¼Cà?}“ > w¼ž¦€?cuH=•ê?qÇt=üƒ¸?~í'?Ÿx[<’à¿n†¹½³µø¿¤ ÷?’\î?†4Ž=â—,?w:ݽ™é®? ¼#@@¿b‡ü¼þ ¿wiÔ?ŽƒÑ?Z =[id¿s¾õ@„†>¤‡?ý4?~1›;–í?‡µÀ=c)伨 =0´¿òR{¿c'&?‚Ä>C>##¿ñs,¿uy—<™4 >‘­¿œ/?‰ Ã=u ø=ê½z¿OО=½»ö<¾KÈ?‰Wœ?Œ«©=a@?„è¾¥"¨>¿z¿p_ã<í¤ ¾Ñ7¿tö¿QzŽ>€d>UÆ>`p=¨ï8>X^?Žº.>~½ > IÈ>ŸZ>D¨¿Zd>‚¢@ Æ¿l‰=©sö<0?„[0=Óç|=töx=G Œ¿_Sâ>!šµ½³ô=c =¶‰W¿Pg¿r*ô¿h?U=ÅÇ´@d¿ië"<Ó#X= '¨=`ex?”ƒ4>?”ç/ºÁk¿u%A¿ãé½@Å?††> }¿ì,6>78Ú=ÕH¿`ñ¿if½€æ*=ÖŸl?6â?›'X¿RvN?@ò=?”P¾q龿ov?m÷]=Ì%˜?él>²á¾=Jk¼íÇ >‘.¿i_¿s¾a?‹Á¤?|vN=Ò|=ÜW0=´˜=mo> ì?‘Pˆ¿s%J¿’|%?K½?l $=ÿR¨?Žæ!=áôP½µô&?¸?l¡Ù?¦?M]ü?‰ä¯?ñY±¼±’P?KR>”³¿`³=ˆø*=§–À=¾ è?vy\?…•d>B7 ?–Xù><¤Õ>’ìÜ?‡Ý0>ˆn?Œ»F=©ºr¿~Ì?läe?¬½=ª×ö?xe¨¿ƒˆV¿|}ê?ˆû=¢®x¼ÜÍÀ?…濃 ë=zì?œl¼^+@»ç‚@>|t»X@?w¯Ž?“ñн=·p=-dœ;Ô@?üu€=1ªx?„X"AˆL@¡Î½Î¾}aÈ¿rRü=”©Ö¿M-c=ÃaT?iÃ=¨½û¨?“];º^à>P\;K!@=5¼–!ˆ=‚„¼ø@¿›8½x˜ =K·?ó$¿Yè¿eÿ¿kÉ=?‚¾HZõ¿u:¡>õ5¿ut½!L¿‡Aµ?Ë?u{H?õuQ=¹>”=«®z?ˆÙv¿f‘Ô¿tE¿jxÒ¿{¦²¿ƒ™š>®î=ò®.>Œèä?‹åÀ>`ù¿A©¿lÙO>eôØ=Ï Ö¿R+†=Ç™8>+X1=çã`¿Q“æ:ªÎ>šò¿i†‚=nÍH<ÏÃ=U”?“0¨=ˆƒ>¸Ê?„lN¿ox¤=¨°¿gcï>,Ò?>)¬|>H—(?‘3c:³M?…DÓ?=ÎYü?ŒhJ<2’ =Ö˜¿RŽÍ>m‘¨½·Z=±Ï6¿’¬Þ=õ<”¿&½?‹ÌZ>s> W=÷°j=ˆƒ¼:¹p€?|ãò>^(~<¤²0?,D<94ð¿[y¿iR¸<ï¨;åÀ>À>aq<‡d=¶˜¿t >?œ/?Œ Ë<å\H>&Þ2¿4æ:™l?Z@¿j•½¿eÁw¿ÀG,=pà?–O›½ˆ“à=â±N>ò2<}V ¿eF¿aˆÆ¼Àp°¾Iߪ=U;l>ô5>ˆ+AP/mAÏnd=»Œ|?’=Á Î?û‹?€7›¿6½'_Ø?ÙãÃ?nGŒ¿éU=¿µ¢½kØ8¿€á0?‡å¬¿MV”>e->‚«Í¿€„> Ê¿‰«v?Ú—¿qYÌ=ÚoZ¿B¦¿p”=M0¿V8ó¾ML¶½!é ¿_ø=”;Ì?oµ¦?íÛÅ>*>Ïj޾_[F??®c=¿ü?ƒÊô=ø>3u[¿t1¿i­z<©ãX¿]pT¿p»l?…p¥?‹¿ã?Þ B§¶@¹*H?ʽÉ/ @8Îv=ÿÎV>J5œ¿jã*?Gø?}kb?„lP¿^5¿zaà>8ô¿y”=Ö£¿p´6?…’É>0÷»äRÀ=èð?‰ÿÝ¿†‡¡?Œ—¾jò¿sÑA»ã_€½¤Œ?j1ÿ?mæ>¿•=ÍØ?f¸¡¿y.¿€™º<¢wð=¾WÄ<ð(=$Ö>(‰·½ ä¿ð8¿qr“¿?^¾Âµ°?€ñk?] ;?fâ}?‡$Ê>7|½Åé½lƒ€¿“u?î=?Š=¿xîu>±Ì=䳿àì=jÄÈ?†f=¾”Þ>.©S>…u>\ô¿é"H¿Wæ?“ôC¿gµ?œš¿l€>˰>Dw:¿EÖ=†ÐV>_'¤?˜9?‘ÎÐ>h÷‚?”à=èÑ¿fÂÆ?…ýL>_V–¿€ø¿¿1SB¿t'’?|fž¿k“¾½B_¼FÐÐ?ˆ¡¿W­q?I¼°1`> $?„5,¿?z¹p>Ü¢>È5>;k5¾/™=¦ßÐ>B)A=Y­Ä¿w߉¿6Y>"ÿ¿=©Í?f„<Ï+X>o7?ˆ‡<ûhø¿nì¿wÿù=T`¤?…ày=ÀØ>.B¿šú¾€ X¿dtP¿^|?ƒ˜>:‰º=ÌGä>ªŠ>?„Ó?€°>¨S¿kyœ=à-þ<#Ù€¿tÇd¿ì¸>¿Y­`?p°y=ó<À?Ž—i?ˆˆ?Eÿ¾0±j¿mz\¾H‹= Là?”[à?Šƒ†B3B±Z=D!€¿ï°½úæt>{¶Y>%‰»¾ä ½9Ü>+™Ã¾…¦?0¦ ¿o+æ?[¡ˆ½DcÈ>®D½Vjè¿Qûy>±HL?ƒŒÎ¿jJã=»*?nÂ9¿y¯¿aóн¦Œ=¾¨^=ÕiR½‚—:=Y¶d?¬¿o£¿Pøþ¿rD?”©ô=»Œ?o†¾(½Lh¼ÝÇ€¼˜8?z» =ÔÆ¢¿sï4¿hLl½£§|¿¬Š¿w£¶¼ à¿r[e?…Ò=BD\¿t\Ê?ïÛv=ï¿{°ô¿ëáè¿f$9=êÚÎ=O>è¿{»Z?…E=o×\>.K‘=ëè=R$¼×ÌȽ׃°<þïà¿ucj< J?_¿»¿{A=Di¿k&Š>,q¿Š7Þ?„~=Wüœ=-©t<@[ ?éô?ƒcÄ¿€Ô¿‚]û> ² ¿Y>¿…’—;´@=ñ/†<žèØ¿fHó¿€_½æŽ¿lýA¿‘þê?vÛZ¿ƒ¬=?žÂj?ôÓ=ÐÇH?xÅ´?‚“ú?|+î> >{¿s`<=¼_r=Ùâ¿í™6¿[€ì>|z¿iý†¿aTr?|=αš>X§Î¿p·?‘9?¶Y¿^à?ˆÉ®>6Í?¡`>(ݯ<È8>Hˆ¦>jD?ÉÊË>‘ ¿9Þ =ê?–>6ɽó\#‡7> Ü ?w©A=ô9¿w’7»Ûv@>…‘Ä¿iVð¿ež?>!4Œ?—¾¤¿†Ó`>Q?|5x=êÚ´?7h?”Ô¸?Šnô¼=þ€=¾Ìš=.4X?޳á¿[7<ëø>P¬t •t¿d™À?×p¿CO ¿‹W›¿{â ?œ£å>& ¿j•¤?o³à?|÷=ñÅä>9¾n¿_”#¾Ϫ=ÆŸ²=ó)t>…¡=ß´¿p,ì¿~Þ¥¿„ö<„=ø>MeÏ>=a·=¿“6?ê»Þ@ ¬>IúÝ> }½½‘t¿G¹ª> T‰=ÖW‚½ù˜=êT¶>0œ¿^ï½Ä‰€=ù¨¿c'À½)!?•ª=Ÿ†ª?ŒkÿU5°>9ê¿zA_¿^E=ä=¤¿PZ=Ù †?‚'N¿vfq=ê•ÀVÄ> Ÿø¿Wc?>! Ë¿{R†¿=X¿/ÊÐ>l–>¿C¿çYõ?‹ô¿_÷€¾ƒè´¼$€>oþ¿}#œ=Èør>I?{ÿ˜¿y5>”Ä=Ö¡d¾Ø~ž¿b£Y?€#>Lq=M©`@Ää?Š.¿[_ž?‘/Ì¿i©$=>a”=ýC¨=X× †?„¿P6L¿Tì¿}ÔÆ¿é†=1$¿j¸>…á¿_+‚¿Uã¾K!?zÔA½áŒ?~Š@¾Xº?{1þ?G¿eÚ<¿Y.׿]ѯ?v¶?€7f?ø‘+=‰…Ô½d¼?…ê#>4 =ú¼=E¨=ζ¿TÞ¿ï.à?v¼> œ ?v=ˆ¼F@½[Ü=q¥œ?q†:¼6¿KŒ¿Yi¿V <«‰¸¿÷ V¿•ìö¿@n€>)ê¤>\$¿YR]=Àæ–>>ñ ½¦¿=ÉS¿cÞ^?™<øTø¿Xw;¿T¾¿Td=¾õ¼>6ÿ=¼P¿syE:†€¿sa>ùÒ¿f»Ø¿Zh3¿g÷¾?{Ô?„™¿R¤¿¿kIÐ>?Y+¿P6=Tã=ßЮ?Œó ?’1H?Y?…²Ô?q2¿]Šø¿i¯ó?‚–õ¿lI(=N‹@^V¿²»å¿ º?… 8>+ì>'ýº>1ß¿^·I?wuç¿Q6æ>Q¿€~@>1_¿ë™á¿|²¼¿ùæ< … ?‰„¢=ö€d<´Mà=Ìö?‚åh>I`v?m)°?“½Ò=½*=§äB?³ï¿XÅ?y»>'"=5:p=À;f¾idò?ƒ£à=·qf¿r’]¿u}â¿‚ ½Î>2= À=Èè¿lö¶=³Ü”<øˆp=ð8”?07¼ÁP¼éÅà¿fvQ¿€ W¿‡€¼=ö–=·R?’WP¾@`Z?9è>6.Ü=¸[Z?i«ƒ>*T¢=‚<ú?‘…ú>!Ò=éò?ˆÛÃ>0oº?Š+ÿvd ¿r“ˆ>n¿‹2ð<Ͼ€<çs8?*Ž?€q,>q\¿yR÷¿eãÔ½Y‡`Cn\?‚IH=‚±½‘dÈ¿dÑj=Ç<åc`>PN­¿tÞ$?ˆ?Ob"?ެZ¿a©°>¸9r¿ï@ˆ?mé¯>7ö‘?~ ¿[Ê?„Ú*=ò(?uu›¿oí•¿§2`>x?hÚ=öY¦¿T ø>\Q½§3h>%Ôº¿O¿è¿TÚ½Ðx=ßOR½”l¼ ?€>i<ÃÇ ?•Pë=¸”¦¿ewó<Á>ŸŽ?‹A¬¿a¤'½È×t=­ä=ƒfp> »h?†~ ?Œº‚=¬zj·½·ƒ|?x¿Ð>?ãü1?“Âa¿`[ ¿Bì¢=”¢æ>»[>,˜?…m^>Ǧ=òaè>?·=Ÿ*Ø=ýˆ¿;ù¿b=Ô¿bº>—Ó=¸ž¿q>Ô?%{=Îðœ=« Ä=ŸD=›_´>4>Ù=™–¿Q¢N=¿E®?Þ@=è‹–>ŒX¿³ª¼tÇ ?„Ø\¿ðv©?zðü¿kyz?Œ::=½'b¿Xs¾ž¢†?á=Êäz>­†¿g%F=ÁL¾<6ˆ?r…s>ŽV=7%„¿wØÜ¿mƒR¿H–=†Ë‚=Tú ¿ƒÀh½ìÅ>¿xKC¿OÐ=ˆ€>)©©¿“Vª?vä@=h? ¿t·=Üá?…Ðì¿ré>¿x ý<Ë h>Ä<ÁÝ`<®¡p¼7´À>Wêc=ÄÄ?ˆP=¡ß|¿€œ¯¿|B¿’’?v_Ê¿çæw¿þà¿¿[ºÞ¿JWŽ=öê‚=iì½ôIØ7X¦?vÓõ=2c =–­ˆ?¯Y¼&P¾î¿†^½¸€=6€Ü¼ž½?B¿Yþ[>fù?j7ª¿{Å\¾&×Â=Tƒ8=ûH@?Œ%²?ƒi¹=§p&¼#„ ¿‹G8¿|ÐÂ?~zÂ= $.?L¦ƒ@”Û¿]®ý?o_0¿kJ/¿«§d=1H¼/÷ ?Š«<ÏŒà¿j¿ac ?ôi¹¿\C›=ÀH=‚¨¿{ ¿`LO=tÉØ½˜-r=½Ö¾¿‡ãó¿W ˆ¿Š• ¿s<šnX;mû€¿sÓV?‰b ¿räj¿tIÜ¿yiò¼Â¿˜¾EÛ8>üº<¦Ö0¿=[ð?LÆÌ=ˆl¿?Œð?„Ê„?„£{?TxS> 8£?l§¾’-¥=’(¿ŽN‡?Œ ¾¿b†„½ÌÆP?‚q#¼a±?zá½j©8>=zþпpºN=ÎÒ²¿QÐ=fl¿mS<0¿Šƒÿ½ˆ<×^¿tˆ¿ùˆ^<‹)x=ˆ;?öry?aù8¿vu2?‡‘Œ<ôÁ?ty¼äÀ?‚"_¿µ>Ï¿/Ó8>öŠ=ÝÍ(¿Pˆ?{Ö±=m0Ü>h¿Fl‚¿SôÁ?Õ ?s,>|3*¿H{¥=.?ÂIÄ?Š5¾"Ø?“j¿ë‚`=Åû¼º‹@?Œñv¿t2¡¿‡ ª<™ïð=Œ*Z?ŒFÚ>r¾Ü=že=8+”¿HÚ=˜L´¾»Ü=.?U“º?§¼µT¿OÝÑ¿yŸ>'ü?‡¯–?•Aœ=¿§@=‚«N¿ól?oñ$½0H?naB?‡“Î=^O0?‰Ó>rDÅ=ºÞ²¿[ª»¢ à¿yEÕ>"ƒv¿‚õ¡=ØäT?] Ñ¿fÐX¿TU;σ=¨õB>€¢y½Šø?k&ˆ=Û²î>Ëæ¼Œ`¾ ³„¿f[?,¾þ-¾#=ØfR=¸¬¸¿pÛÞ¿c{ë?|w*?|âi+Ê ¿q¥¦>#Ý>cÚ?Vþ:=Œd0?›éÀ ês?{4?‘¶÷=ø# =¨°Î¿[g?…–L=Îbn=Ñvº=5Š =Tl=—fð½¸5T>?ý3?ˆŒ`=j€¿ƒ ¿d‰?~¨ö=°d¼›q>õ ?c ±=8d¿`Ý¿S É¿” ¿i##½ß>"¼òÛ°½›ö=ƒ¯d½w—=’l¼“) ¿‚^s=Ê ð¿mÀ‹>}g¿5Ÿ ?†’Õ¼w¨?Y¨@9>¾m¿oS=nÎl¿sí§<ÂŽX=,Z>9À¿„Ù¼å{=nl¼Zð`=±ML=T¿L«î>'1>áÔ?+>eãн™s8>Sn5?uª–<ƒ¿j{$>Ä;=Ë:?‘@Ÿ¿‚"‘½ÄS¾ŒË"½ËŬ?ƒÕ4>D˜»-Ä€=îu~¿l•œ¿tù½[à=3‘¬¿o"Æ>‘ò¿þ^í¿a‡=Ý0.;pH€<ˆ'¨½­€8¿Ë=¿rŠ\¼Ÿ è¿V¤‡=¦¡D?qî¤>s =$¶Ühz²=J€¿Tj<¿6¯>XÔÁ¿MÏ¿PïX> ìK?‘7¾µ8ô¿32 ¿o×(=Íߨ¿LqÚ½<¼¿ƒÇ*)Aú?‚¾‡=—\`>&r¸=ûÜ>†Lt>Û.¿mêß=âo`?‘+‰o?ŠÏ:>4yt>ZÛ=¿{ãÞ>`|=¦àÒ>#Ö—?Œÿ?¦G׿sFF=:Mˆ:%€¿cÚÒ?¯ô=5AÀ¿ëã¨>qû>µ'¼É\?mÒ¾,GË=ÝîJ¾@‰p=m¥H½o$?xÙ¿^ü„>.(º=ƒÁÖ¿zÙ…¿‚Ä8k€?çœÌ=»¼r>/rÕ=¬\è?€Ò=»èÖ:b<8ò0½/x@=D› =¤Ò=sDø½ç¸,¾^Ú=­\?ô •=¢¿m"¡¾2 l¿ƒÙˆ?–ì <0™°¾äz:‘a½k³<>†¸=õøÚ¼ Ê˜?…`;‚“à=éí‚=vQ?ŽÐ=KÉÔ=U¬½’€½¢= ·|>P{?ƒ ¿x‹@Ë=È@z¿tXº?‚ˆ½>UBâ¿…7½.Ì>Ìý»aÀ=Ü=ÁÑX=븾8¸<¿Ž÷2?A•O¿€£¹¿aM‚¿…hµ?èÕ<;S=EðL<Ú@(½7+ø=Ù¶t=ßÍÂ?‘æ#=§ô®=†¤Ž½¦ <á=x½™¿Ú=\#¬>Bªæ?x!`½ x=à#´»Š@=QÈ¿s5L½Û³?‰²‰?€g<±D(¿sË=»zÀ>(´A¿ #?|N¦?ƒàn?sh >OE`=öú&½©Ž8=mP¿‡/<¤RÀ=° t¼P?0= óØ=RO¼€s¿†cÕ=ʰº><=ì[¿†àª½¼𽂮’<·‹?z^¿ˆQÖ¾Uú?€ÛD¿_¿?h4?;Ýh=û)B@¸y¿Zx¿ÿ\h¿rR*¿µÖ½ËŸh>⣿t\¬?‡á?tW´¿<Â\=ÍAÀ>É¿CÖ¨?…Õš¿Gù”<Áž°>ƒ™‘>´¶>=Fº¿hª>ú¼«?¶¬¿YÓ=¿@ås=x^`½õ”=y>Tjˆ=¶Ãà>X?ȾK¿DÖ>OJþ?Œû¿U`w>Žd´?„±Ø>nóµ= @J>-m?Ë—>]¯-?{Ĺ?,<¿Ø=ñîÂ=rp@>13¿Iß >r¤H=‡ö>Ì r?3ZD¿a¯Ã=Û¾4¿@t7;w€?—L?6s¿\ÿh»ÜºÀ¿M ©=ÂϪ>Pë?$Ä>¿KËH<¹jP>ô>=ß¿Aäï=õçæ¾]0‰¿k>—(B=«×2¿A`Ý?a‰M>‡hؼéšÀ=×t˜=†=>pí?‚w¿¿Œü¿}ͧ>†(¿_ìZ¿dßæ¿… 8?c{×?Ž‚u¿T^Ø?m…¿yÁ8¿WÉ^?~*=èã8?XS¿qZë>R§¦>v>¿­Zj?—Й¿U¡?ŒçÊ?Žg"?ƒdr=¨öp¿]ø{¿w£‹¿‚@^¿eN¿t( ?~Ĉ¿wüÄ¿aF=™—Ì>5k½0lˆ?Z¯¿u²¿hÿÝ¿_)?U Ü=[gL¿g9°½Á¿[è?†ƒ4¿x„ú>&X>+^>>PØï=„áN¹mX?“$->M«>P¡ºï»¿sh¿Qx?‡¨„=1Ê€=ñ‘\<‹ È=pí´¿€Ÿ¬=JÒ=|µ ?˜R(?€J8> ü?La?q~Y¿nË÷>Õþ=ügà>1£X½°)Œ=Œ Æ=©ÇÖ¿K¿…Hò¿aÐò?zÛ¥=*?Ššˆ=ŸJ¿‰_$Î5;6,@ô ?òãG?…a\=Žëú?vκ=¿$š?wO‡=²ë¿\Ý<ŸRx¿qî¢?ˆ]²=vy¼?‘c¿{ؾ¿ç8?l¦?*@?‰õU½xP°>;§¿„»o½EJü¿“o>\Ð(>+=‘O濟ó§?ˆÔ=UШ>­ŽŠ¿‚N—?›–=™(¬¿Q<`?bwz¿ZŒÄÀˆi>Vço¿T'?…³Ô?xla=ð¯F½vô¾råx¿b÷¯¿„NË=Sà?r<=ËDè¿DuÒ=n­8¿tÿ9"2¿S¼¦¿q>^>6ªy¿QÕ>3qŒ>Nig>)´d?w„ª=N®Ô¿˜½©¿]ê=Írj¼¸Y(¿í‘>Z·:¿e:‰¿yS?¶²?_=¾F>*ÒZ=p„?;Bõ?|±ð?I µ?H>ALÁ>uR?…Sy@³R?†B…=ð„=¤¯8?“Ìñ>C1¿[s=û6è=r§´>ED¿…ñê?zÈ<€h¿Ôê=Š«>ãv¿dÛÀ?ZáῈ»¿@ó¤?ùg½¤+L=¹’Ä=ca¸?颼šßÐ=†,ž?ž³m=—| ?‹ ¾&äN=‹l?|z÷?….ý> ¥¿Wô¿Wcb¿„wª> •ÿ¿‹#î¾ÂìZ½?T¿aFì?~hü.!d?r0‰?m›À<ć𽩜<ãv ?ºÄ½>L¿xùž?yê•>•ü¿ØP@sä¿rx¿j–v?p ¬½º‡ð>#Fä½Êûì¿hŠL?±Î?‡Q1?€qb=Œ#Ì=„渿uô>rÉ¿nÏ>R=©®X?™K> šƒ=öºˆ?ç¨i¿cH‚¿_ ™>0E™¿QB§?ÿ>½üi?†Ò?}@¼b¿OK¦¿  =8=L-¸?eëB=ˤ8¼U¿^¡q?•Jc¿ñY¾!0ð¿€I?1Tå?„M,Gé =ò‚ª>^‰¿`²,¿}†¬=ß0z=û °¿S¨¹>­¥¿tlÊ>µiæ=ßP~½æìÔ<´¨½W¡˜?‚•ã¿cÉj¼ïP¿{ D=戽ë{À=M¦?Œ…Š?|Û,»ò8@?{€â=v´<_„½Å ˜>ïÛ;7¥€=¯2 >2S¬¿ZwT=_‰ø>e¶£>>2m¢¿x1Õ=©ŠÌ>‰Fù?“çÂ>5’?€”?›ôy>!ø¿nSi¿ßcî=µˆÈ=˜¤Ø?„Yy>ë¿„Gj¿Y¼‰¿Sr¿Ew"=Œh=Å+þ=›3 ¿p×¢<¨jh@<Ï?‚Cd>:ðí?ríÐ>FÕ=z#ô=”$š?Žþ޽i0?lÏÂ?‰_>?‡.¿yû?‹^:¿”à=-l¿psò<ýq<€H>'ƒ~=æJP¿X‰û>Òž=¥„L>U½®>N'i¼›<(=¸ñ8½†D¸=³ìê=óRL>1X<ªž=›Ñþ?‰o;¼êâ@@7I(¿…_¿[nß=çÓ¿Bw×?è/¼‡ÑÀ=ŽлÀ[À>&²o¿>íº¾s&„¿ƒŒŽ¿€\K¼šâø?“–%=“Éê?e€ï¿|à‚>0>Wa·¿hRó=bØ¿_¾¿‡ß÷=øÊJ?€F®=|:`=T”>j?HVÚ½q+¤?ŽÕ?çò½‹"?v)ñ<˜LP?`ˆ¤¿òD>C®+¿‹ì½?OÚš»è¦ ¿S,¿r­·¼qð?üý©¿øÎŒ¿aGÞ=Cg=„=)m$>>Ê’=}å0<Áû8?ˆZ?™ˆ{?ãÚ?hót?x¢ù¾ê.=Ñ2=\H>æ/?„'= 1¨½§ôô?„ºê¿8Ó¿ø¶Ö?‹Ø0?¿Z¿hø<>SN†?œ¶t>¼@¿Š¶x?†¦]?n¦.¿OºD>Aâõ?~ŽH¿mÛ½e¬L?„½_¾~Zœ¿ˆç¿v\2?l(¿`O?u-?g¿ý<áð¿E|¿*l‚>Æ}=P)Ì;㊠¿`þ<Éìx> òÊ=(Ÿ(¿jè=ŠTà¿ú“<=ë„¿pl~?o{?ƒŠ "ž¼Þ~?xÝd»©@=a ¿†0j¿`/Û> ÿ9¾3ž¾Ût`?<Ù¾.‚4>4?lÝE Î=mf¿u%“?qˆ?g¤¿†ÉQ½ð}=ïxܾ>(D¿[+x¿j\¶?’ƒ+¿P;¿A¿hð:¿X#i¿ äv?‰#˜>:D•=xÕL¿Râm¿RÒ ¿Aæo>=[¾yhT¿]"r=I ?‰Ê̾‚M>I¢?ŠÇÀ=€F$=È‚¿_oG?„šû>¥>‰Œ ¿eŒˆ>1Û‡>aµ?•3Ï?—Ç«?iI?|ƒÄ=– l=ùÐÆ?’çâ?Ðl¿dHW>3´ü=ÖáR½¾=%3T¼¼c?„1¿WZô=ö‹Z=ËÜV¿uƶ=“v<>ª§=®öv»í ½6&ä¿\׿‚:¢¿va¾=0x”=€Ú <:¸ > T,¿|,<ºD˜¼µü?ž>> … ½,<¸?7Ø>>ØÓ=¡8 >!øø= ¾`?TO2¾:st=g¶=–Œ=”ÊZ>zš=þ.€>¼5> G>G­¿år?˜t=ûɶ?áò?{BÃ=íN><¯û0?ÜI=ó&¿qŒŠ¼§=˜¿‰_à>¾ç?UÂ<7HP<ÿ×°=’=°}”?†Œ¾¿tÍ!>HW½Ìó𼃖p=Q*$¿vÚ¿jãξ!>@?þÿX@Ž^¼ÿ¨0¿a ¿kÖ®>2æ¿qÕÁ? ®¿}ƒÔ?}èç½)xȽaäx= ÎÄ¿g"þ¿q¦²>"nw>ܺ?ˆG=³ÛÐ?nç7¿`ÆË¿^F¿|Sù¿[úÔ<Îïp¿P^Ì;ìa ?j!½6¼¿ƒDT=š"½Ìø4¿l¤C½jàT?†š¿Z‹=\*p?„<€¿X°¿~90<ÔŸ˜½Eï8@áà=ù =›® ?ˆE»=à:2=™d:> Œ¿tŒ=Z·¼¦ê0¿zƒP?ˆfv¾ñk)=2¿ƒÃÚ=§h<µs0<„!Ø?~j­¿DN>G³ò½‘5,¿^ ¿zV/¿‚Ðý¿p¾F?ˆIâ¾½Òð=jÌ=»-z¼Ñ7X¾¥:?‘|4¿‡DV¼Ià=ú»Ø?ˆ¹?|GC=”rH¿S—=Ä8~>1“z?8`\¿wl?½\b ?£R?‚tÙ> ¿bFy> a >5¼>R’¸¿ü(Ú=fŒh>ÎT¿a»ª=¢3|?…‚ý>CK?jS£?"&¼Ìßp={„¿u.y½ÏŽ$¿”3==þ;ä?xR>i»¿_Y³=µÚê>’Û>9i>R-I=†úX?‘}¾n!~½-°¨=`³Ô?¡ =¡¼?” R¿B«¿jý¿P;¦¼Cž?’;¯¼À>7J?‚L³?š—=áë¬;:–¿‘ä>j…6?~ð =5®?…o¿vpò¿jÏ8?”Òœ¿‡µq?rÆ ¿d¿r¨=ÌÌ¿kw2?{›>#†›?€À›=k°ì¿eéÕ?\8¿k˜¿L=9?‡T¿zÚÈ=‡E"?ù0ð?‰>*9»f >«²?Šh<žp»x¯À»O€¤×¿uŽF?5$“>¾[x=¾Þ°¿t¡†=Ï9¬=¨п|Cæ¿qŒ¿t¦¾©v??™Å¿‚™>)ñn=Ž6=‚¥¦¿…ë|?†ËD¾ °.¿wh$¾H>L¿8q¿N׿a¢½@+8¾‚œy>¼½¨ÚÜ¿í“伩©¿[ùÉ?‚¤l=z†?w‹.¿‰õ?p!ï¿u¯¾¢|ì¿[µ=â^z¿h@l¼¢¾ ¿r±=ÝVä¿û…¿o‹=o+”=¬¢¿‰œÛ¾1–ð¿0Ÿ<Í)¿u•Y¿ »¥?“K»Ê3@¿Yuì¾»åò=sÏP?Í ¿[{…¿s‹Ú½~°¨»Ÿ@?~–½\‡H¿{ùû¿… ¿js©?|ÖŒ=¤>`¿qaÐ> vê=•2J?аf¿ƒ v?“û0¿…oü½†©P½”“Ø=™dˆ<ï?máH=_aÜ=Èš=²¢?–8=˜‚r¿}uð¼¨28?j®¿yÁ´=‰¼‹(½°!b?»ÕX<å—8?u0š¿·ˆû½Èµø?‡fþ?Œ(ë=®è=èó|¿„äC½&@¿yA@<×Õ¨=óGÐ?‚/Ð=´Ý”?}ƒt¿z“Õ¿ º°=]™L½«Æ¬>o¼¿ã¿Ak&=%Yl¿X =Ì Â¿Is >_¹->,q ?†\’¿Kœ¿H®Î>0·›¿n¿>rè>þg>DÈ¿p ë¿g›J¿ˆÝâ>@ÿ> ä¿m±o<‰8>}ò¿oú¿Df^¿Aÿ>3½¦¿Pd꽡»€?oÖH>ц¿}f¿MóÚ=h:¬¿Aš¶?’B ¿|£j:šF?–¿nl>[Ïð?‡ÖB¿a*ó?uÆà:¿ €¿pµZ>.…ó=@šH?‹$É¿ZßN¿„>11?=z=ÖÛV?~+=7²4¿XÌ‚?èä?‘Ї>07y?‡®Q?‰ùx¿{ÿ¹¿jË|¿rÿ¹?„q;¼—ø¿gÊG?òI=ëC过ÿTºfÀE}u»½Hà?†`¹8?ˆ›v½]ì¿_:h¼·p¿}6>¾ÒL¿`å<=‡+@0Q<£ =Ÿ¹â=ê:â¿÷o=¬¿*¾Z²¿“`º¿1÷E>`t?¯æ½Q?Çt>Lö¿mäë½:=èãÚ;üè€=‚wL¿jὊt¾níž¿‰n›$¾¶¾ „¿ƒY·=­‹~?qƒ|>AåûJV¿rCÙ<¶Là¿‚ý?‡Åò»óÛÀ?Œ%Û?‡ŠÈ¿ƒEN½ÍŽ@=§Ÿ*º"Ú?\Ì=¬V?4nûSC¿|¬¾=eÐ`¾!ê²?ˆNa>éR¿i¢ =¨±ê?‹ ׿wÃ7;þ¸à¿ù[®¿ðT–=X€=„”=¯õT¿Eª¿ƒM;¼…˜¿k=€ÎH½E¥¤;öHà?qX0>¢<²µè>è€Ø¿’ÿ¶¼ÆSø?ƒ»p=ÃL¿?…?kïJ?ƒ·À=¿ž.=¹°Â¿™På=Ö¿f¿yƒÂ¿J#6?o‡H¾CD@?HlP?ŠÇ?8Uð=„P´¿j.Ö¿i½=³'Œ¿^ ã=áóÚ>16¿cÕ«¾Ž¾­¿{d3?‹ðÂ?ˆdq>7Y?„ÿ¿¿vg¿fäØ¿ò$ÿ?ƒÁ>U0< ‡=é½:= =«ºŽ> °¿x‚¿p.î¿e”|¿aBã¾¢œ€½¥†¿lKÐ=Š\>Ù+½£ä ¿[ý¨?L¯ª¿íÊ‹½Uãœ»Šžà¿u™ ¿í>~=ž!=Ï|¦¿í†ª=̘¿Š¼ð¿‹ ?‡õ=/Åd?¥¿gÉå<Ñ›X¿ìk;?èO?Œ º=5`¿…ë%=›ðÄ¿… â<‘À¿cA5¿ˆ ¿H¿3?•Þî=ø}?Ž@<>"m[?ˆ¾¯¿k=̾[^x¿Véb=^t”=øq¤½(¨=‚À®=ah´¿qiB?¶¿\¾È>"ª/¿‹<¡?=‘½yœ=†$à=W¢p=!8¼>^à>½¿e¥ò=L=¸ˆ¿3JÀ=º±$¾Ž?—©=h„=Îüj?l'@qÌ¿lr¸½L”Ü¿lŸ™¿ž:ͽÄ¿T–ñ¿u¨?¡iv?€“×=FÜ>MÎ=ð&|?xoÐ>-/r?‚»œ½‰âˆ?ú›u¿e-z?…Ùs?›r¤¿†‘T>t+ï=Ù?€>)>?‚4•¼á9¨?‘Zɾù×¶={Ht>Eþ¬NA?‚qô¿pÈ?ƒ7h¿ƒÁ1¿e¡¿{Öá¿iÇv¿…ά?þ—û=Ž(=ñ–„?¡\Ñ¿‰æ>‘-¿R=z<Äx=€¼ÀV?‰{p=SÛ8?–ÈM½™:=…(h>r%=Tå$½¸û?„ØÀ?€5W?m¼^½ïW¿„qæ=÷(Š?•éÉ2´â="^,=öº¿nÍÎ?Mg?‰=ú^Â=VÜð=ã¨R¿Žà¬>µN¿8ú?X|>¦;?mËò>Œšj=Þ ”½Æ#(¿qÊÒ=X =´O">Ë…¿v4=úàÜ?òȲ¿_û†>.[x=Šœè¿A¿=è=°R¤?Œj>ïÜ¿n]?‰6㼚V°=ÿÃ?†ƒR¿€•Ÿ>#æ>.½Ú+\>¬@—¿L&Z=û¬¿H#È=½~¿c´ä¿˜(0>Œ[>7äê>`šÅ=ÌUð¿fØK¿ƒ_?‰ô ¿‘^>¿}à¨=`§Ä¿^’é¿_4¾?‰[I¿Qåœ>‚¼ô?†:ä=.Žt¿Š¡*¿~‡Ï¿Œ©¿QŒÈ½jüÜ¿jÜo¾"•N= rh?‚¿ŠÄY?UÒ?&ç¿wD>#|>9?ô ½Wž@=ŠËB@ Ú?‡¯‹?€|¿by¿‡{w> ôp=¹qø½H8=”ä,¿_O&½KÊ?ãz¼<¢p¿bU¹¿ŠMV?«ž> 0U¿‚à^¾S 8¿jÏâ&H6¿eãR¿Q\H=Q¿ál?„W ?Œ€ª=Ë6D>_L¾ ìú?ˆì.¿Ÿkü=eÄ>/¡¹=á®ð?‡Uu@%l>Oó^>qLl?z+(¿ôËÖ¿ƒÂ[¿žH}= Œ?g¸D<´"пw8R>6æ`>*Û>Vñô?vg激̬¾¼R©¿‚“Ó?Á˜=¹ƒZ?… <ç7Ð?”X,¿ye¿‹óÕ»H“¿uæí¿f7 ¿}Pƒ¿|ì¨?jEL¿»¼2¼=LÈ¿ù ù¿‚ š¸ï`= zæ?ˆ¸}¿vê>.9O?ƒR׿šô?Hww»´â€?Ÿ¿…)´?€äQ¿õ•D¿iæ>Û¿}B;¿PÌ?‰ä¼ó€p=ÞÏH¿kmó=n°<ÜÀ¿uÆð¿e÷Ð<ömð?ø4> Q¬?‹‡û?‚}J?ˆl•?ýǨ<ÌË?€ýñ?ƒb?OɈ¿Lê$?އ=Ð N?b2=¿/˜±¿«ÐN¿?à)¾s8è> NÕ?~µ> d¿¿C=¦Lê=§­œ>0a•¿z¨ë¿[5F=øÚò>4;¬?—PÖ>+*=õ| ¿Eò—?rQ?†Y¿ˆ¥³?”㿊„<»;„€=„gä<%¯`?Šâ¿tWê¿~¿EµÇ=ëê=õcf½·ø?j—¿Hwó¿'ì¿e‰°= žx?Ù‘>.J=bƾ`=Üü·=YWD¼–©Ð>Q·N¼šÐ= RX<|g°?O†¶=ƒã´=Ê Ø=‹ó>$:X=YYl=nT>;@@=Íø<ꌈ=ùïÀ<Ìâ(¿N¾032=Ãb6<¨ ?‡4$?“„Û=Pä`¿‚=>¡÷=rœ¿r爿‡¦â?Š 8?qv=ͺ®»œ" ?£%ø?‚©Õ=wÜ<¿@ê{¿'= ‡|=¢Åt?ÅX¾ãN=ŠØV<à ?+=¼=Ðúø¿‡§¿X;?_3µ?‡Z©>$Çm¿XdÐ?ˆéÜ>W!@ËÕ¾M,> Îð@l‰¿u w>FŒê¼€ŒÀ¾¿;M¼&É@?{µù?Žjv¼‰5 ?‚—›¼Žà€?‰ÉS=#`p»(@;{<À<„`м¹p?üÉb?“E= Nx½†¨Œ=¹Ùê?wîHº²W½€?}’S¿`2½cÉ=Ã=½m`¿”L˜=òXŒ¾ÑB?f†Ê?†7Ë¿f±<¹î8=Êp@~ð¿‡+l¾! Þ?x Œ¼‡‰½-qÐ?vô<¶S¸?|àÌ»Àà¿XF¿kl¶? Ì=ñd¶=š»’?ôÓ=, ¾C•<=ꢾù°?†æQ¿^oÇ¿{©þ?uHö<Ä=MúL=yYÔ?†Í¹» º€>sóþ=µ¼ƒ@è¾Jp<í4 ½€0.¿€ÔÒ¿yÕ=oÛ(½­x¿"s¿~æÀ=-ì¤?v€´¾/®˜¼÷m`=É•f?{Gì?SòÎ?„4 @>Í=Œ`€<ážÈ=·¦?“/Ï¿~=íH˜=nƒ˜>X =‹°?ëÁ¿S~0=ŒÎ >wà…?_Ú¿I¬™?…%R>Ò‹‚¿c\¿uA¿Hwƒ½„Ü=\Š¿}Ã>Wq(=…‚¿^â£>Ïõ=<ž?‹*Ë>‘•5>>Cê¿›ñ;=ä€?qxÄ?†?>W=°X>‚C¿S ø?“r®>%•U¿_– =—oh¿oÀÉ=ÆÞ&¿aã…> ±?™h=¦1¬¿a¦;–QÀ¿K‹‰¿é_=ýР¿Y¿ª>àæ;¸ =×Õ$»K²€C6È@1•=/#ĽÖ! >U?]=’¸Þ¿bü}¾£æÓ¿Y¡Q¿aݺ¿}§¿†ƒ'¿dɽj´>„ð?‘Šv?†º¿nÚ`=ÿ.࿆ÑÇ:Z^½c½8Ûl¼è0p<§˜?ŽkM¿€žà½êd=y² ?ˆû.?…ÜÐ> G¾ÐI½6õä¿… ¿€Ý=¬~n¿_ª ?l\¬=ârh½²wn?wa=ð~X>^‰?—Ñ&> wì?ƒ!å> â®< Äp¿uÖØ=ØÜr=õNà=enp½Øv¿s¶Õ?qôN>bä ¿…,Œ=ÞGä½/h?…ë$>9ò8=—»½\t>*½E½@=Á± ?‰ˆµ=Â3¶?„`¡=ëÈ ?fSö¿‚„Ö?‹äz<®‘p¿‰KÒ»ìì½òê„¿‡~Ë?{nø?'>=Žî€¿`qS¿©ˆø=='¸>1[*?˜¦Ö?“ ‚>Av=3¨=ópv>&¾[ò&¾ç·„¿‚¿‰Š@ú÷èBN`@>G¶<Ã{?„]¶¿œö=Ü›X½uº?“Tb?‡_0= ð=ÞÅè> ?}ÅL<¸²Ð¼Å:¨½™ùê¿s)¼¸Aø?R¢<|â?€Ü?ü¿I?‚‡ß= þ\»¨@?Š©º<•þ¾x=ð¿hnß?ˆß >*a=/¸¾Yت?”ƒŽ¿…c*< ¿}:º=:>M”¿þH?…3@"2Ô?‚>?Us†?k‘?‘€õ?€¿{‘¿Ž+[¿‡¶³?‡æ½~?=õ¼®?;õ>޼r¿S~¿hã9>½C> ½‰¿ kT>"ûO?fVb>›V·> !">E>4N¿BßÁ> :¿fv?¶&¼º¿hl¿goO¾5!¸?‘~”?žx¿_7é½sFà¿gÄ=Q>4©¨>W¬—>Kª>-w¿iƒÒ¾œ6¿[êv=ÛÇ0=Ò…Ìh¿ì–d=…>j>°??Žì!=jÀ=1éX¿`ý|¿h¦&>òœ=¦ß$¿ü™¾‡ˆŸ¿W¸T¿¹Ša>*æ@¿pXã?=Á¾“‘è?˜“¦=Jex?…ë>¿‰=ÊD?õ|j?dº)<õíè¿Tî>Rˆ?þŸ¸¼(Ž€¿k¸½JŒ½Ë(Ü?s‘ç>1…Q?”Óˆ?ŽèÃ?ôƒ`¿j˜¿vü³=í<ÐÀà¼Xã`?“v„¿Åê@Õª¼6¥Ð½~x¨=Ï ?‡'$?e~•=ÛPP@™–?Bvú?0³<ž.P=í% =”D`?ð1}?d# ¿m—N7Ÿà¿òÊé>q¬×¿v󽆭ü>‰Á?AP=âŽ?_†e?z"c>SR_> ®3=Êdœ=’õ²¾@Y†=}"¿lØ‹¿Š¨c<-qÐ>Dw^¿Ä=L€?ùÔ@?‰;<!à½óè<è{¨?{>)SY>-KO¼~m`A=ÞdCÑ@}Ðj¾"z¿fsø=ÇŒ¿f¥R¿‹„9>ËÞ¿oæ0¼ßwp¿Sè<¼šü ?„j=ÒSà?]Ž<˜ip?ú.£?„c­¿lîà?Gý¼ª` ?oÈt>n+¿XH°={Ó4>£gA> Öô?€³+?w.>¿ƒ×¡=>p>Ié= 7J?Š…´½©*Ø¿šäv=T?œ®=r½À?t_¥> €¿ƒFÒ¾ôü¾­p;µ‡» ¿‚k;Gû@=Ë] ¿^ác=ØmÈ>k’½³u´=žæD>T´¨> G=Œ¿_p¿lÏõ>r7>³ô¿dY<Åš > Ñl¿Y5ù¿hÎÕ; >“J?„¸<¬d@¿~Ž-¿d׊¿f&Ü>(”µ¿w >D€¿eåø¿u–P¿e»0¿l¸‘>'ž‚>vy`;Å€?†Ý*?‰J=„Øv=Bœ?™œØ¾ÆÝ?‰-¿_͹>8ç+>6h}¿w¬T¿£Ø:¿U,ì?ùÔ@~#=ðfz=®…R>4?> 4u¿sl©@L¨˜>–¶@=°×š¿nóÃ<,ù ¿Ž¼¿€¥v>eÖ¹>}Õ»òÿÀ=«4Î=7Р>1ür=‹YJ>kyÛ¿~š=v³N> ^­=‰Ÿ>>¾Ä¿r•Ï?mÌD<Â9 ¿|3?‰ŠÆ@3['>8—?‰¤T=d¬¿iIâ>OIh>nPõ?‹†D?€‹?x"ˆ>ƒ²=ÉP>¤B>B`= (>Ÿ:œ¾‡—‹>‡3L>:Ù¿eä?ˆé^?ã n>9Y½™ž*<Ìz(>!¶V=Æž=…k®?ñ·S>Æ•½ì"¬= ¼¿fW¿=>x„=¨¾¾?•®²=éÌŠ¿_Ÿ=í—=MWÈ¿ÐQ¼‚õ ?– ?ŸÀ’1>zx=Ò=÷i>½*þ™ˆ=Üá ?”úɼ¿I ?SK„¿g¯ž>Zip¿zm>† »¿i¡¬=òó½v´X?g…=¹¿¸=#¸Ô¼@)õ=¢œ>!³Ê¿ˆÀ”>ExÄ?€A€¿ƒ.?ôD"¿}W\<½è=Á=æ½F=ùw½KŒ˜¿W;Þ>³ñ> º½«t½00¿{Âg>@€Œ?ŒÏT¿Zð=‹5ˆ?…Ÿ?‘ô¿s?F½?u·Ù=“yò>uœ½®t?ƒr?*ð*=è,?ˆ6*¿„Âr¿ì*¯<ì@=M{h?ƒ¿î<§Ö¨<1ˆ½Šßä?fÒæ¼Òµ°¿€€ì=XDp<Ç2ð¿“òŠ=án¨=ß`<“»H¿¢ÿÔ<®À>ÔxÄ>e»³>nÞ¿Z‚È¿Ry =ù6¼?’x&=ˆü?‰˜&>ú¹¿€9°?‡€ý>"Ù2?~³¿_×¾¿[˜j>„8>"ó¾€C½Å ¾ˆÐÀ> Ï,¿rbà¿elú=@˜¿[Dª¼)E=š_D>º-½Û3ì¿Wê>/_T=â¹,=}xø=ˆ.;È‘À=º¤Ì½'Ä¿‚(i<- ¿t¯z¿x<¿b.q?öž ?pêÞ> O=jy¬>Ù˜=°îþ> ød¿g5§>äñ¾T¸¨¼ö] ¿‰±K¿€%y¿Á’¾?|Hn¿Tð÷¿`µ4=>ˆ¿q¼?—ª“=»ðx?†ú@?{𡽿0=¯Z†?VÁ;Ý…À?àqh½ƒSR¿„=?†Mí=˜ =÷ü¿{µÈ=—Ÿ=ʤ¿^¹>t@B=Õ»n¾}tÀ½‘l¿sdº<»(½!¸¿hã¼à `½#à?€ÂÆ¿ó=#Iì?zL?…á8½+«°=š¬¶;Æ* ½©`=•Ï?rXý¿âÕ;“Š>¹›?iËY>,\œ¿ŠAÝ=—÷z<½È¿vI?iÄ>bˆ?WûؽgõļA=íD¶=<¥´?yИ=uö¼=Ý•¶L¼?-7ȺE¦?rt@=I(<½Ï˜=ßé?uï«?ƒv ¿kL¸?‚éë>' ¿L¿\ý^=„%H?_o^?lã‚?~ÏM?‰ò0=üø†=+tP½‘çâ=©)î>îÏ=W¬?€så=ˆ–0=uU$?úç¢> %s>p×<½¥§hº£)?•ÃA=êìÒ¿Üf<ývÀ¿o­n>Rf¼?ùw"¿Ud?}(?{à½Q|=é쿇¹?yTÒ=hý23)?ŒNä¿“`=I÷8<é#(> åL=b`½,G =“0¿g>)¿b¨¦>B¸¦¿XMÎ>}ÇJ>Rª¾ -\=Ôy ¿‰õ›=$f,>·ü>[$Ç¿pˆô>%Ä>T¿Z ?Uˆ?n׌<è­¸=ʦ?¡’= [t¿K€¨=¥,Ü?QJ~> ço=º8<¸!ˆ<'9<%Zp¿[úJ¿ƒ%=É|N¿yá,?‰Î=ÀX=çÊ@=yΘ=Ÿ¡f=æc¾N½½Ód?ø×‘=Q'@@iG@oT?GŠ?“Uœ¿V)š¿oÏJ?™ÑŠ¿ùÓ¿Qé—¿„gW?“ .@÷G½²œ½DÊø?}88¿‡%š>T_L>D¡­½@ø<£‹@>$F%¿ÿ|¿fþ=D?(¿WU-¿`%¢=€ô=Û0?výØ=8¯à=öT?Іu?ƒð÷?Y½˜?€µ¾=™y ¿tʶ:ñø€?ƒ?‰{ê=µ‹^¿‡Ö(¿y3=ÁÆ4=:å¨?u<>WÈ<×å8=]g¾à=ááh<®@ˆ?yèÇ?=‰èܽʾ侃§Q<òð¿‚Ô‘> Ó4¿£æP¿…¬Ô¿cƽA‰„½!ØP¾¨[x=rkè¿KÊÿ¿Ì–=ô¤n¿Š…€?v6¿‘ª¼?lêÒ?j?Ü>‰M|>hZ?;("?vä?䨼à=ã*=?Â=ðÌ@=5H?Š è?ô`t½Ùqü?x^L@_ð¾ƒÙù¿†;¿>K ¿”‡½ÔGÐ=Ä>=£z`?sÑ®>F{y?w­x=/×d?ŒdÓ¾q›<šŽà½-<@¿ >,ÉÆ=±v½“$=“*H=ÛØ>päo>-ºŸ¿u±Ÿ¿€³E?ˆü(<ÁÀ?‚ÛÖ¿n\´?7(Ò>O¥Æ>/,ê½!¡P=¨…J?iåɾ¨Ð¿=?@Ä?†\=Ïz¤?‚e?†ä=žn~?%ª‚¿ƒ o=y¥ ?lG,?å=[~è¿^úO=RBh=š×Ü?ñR=Ó+J¿rS>½Ùl@?‡ƒ,<®œà?áŽü¿…vH=†‚6=Üñz={‰ ?Šÿ4<„ýð@õÏ= ƒ=Ä> ?-Ú¿_qÜ¿rì>©ï=mŽD<ÜÏ ¿Es½ ¿<!=©ãè?ö)V¿Y®ñ?Š˜¾=±lú=矰>g¥z>-ç¿yhv»&«?‹Œ>Vz÷=[ì¿tOH?<×Ï=aÇ4=ÒØ®¿†Œú¿xë¿éÃ=Ä¿\ e=¡×:<9ZÀ>-I¿YþÆ¿h‹á¿ú¸>³¿è”§?z Š>(LW>—!¼ý¢ð¼¢5(=ù*¼Ôõ>5伊„¿TOd?ŽËÍ=Ž^n?“2ï?ˆ.”?¡~?ƒî<=_áȼ%y¿l‹?š)p½3­¤?‹n6<îî ¼½Õð½É‡X¿P¦b=¯ù²¿ƒx™= Š4?pM»óÅ@¿`_¯À­9?†éx?€½å§œ=–j=‚Õ|¿„ˆê=» ô¿bº8¿uñú½–CR<ꀿrß™?wNú½C{(½mò¸?m>Ö?ì¦?Œ´»¿qÔÒ¿Œ7?ˆç¿|@?† >%mÅ?{‡?„4ý¿5Š¿‡új>ý ¿3?kU»*¹@> âÐ?FBó¿…-‰?€\¿‚% ¿‰B´¼±Ñ°?†A"<ϵhÀ(¿k€†¿hd“1lÞ>5=(Ü?€zx?§{ò»Kã¿`¡ä=Z ¿TL™<áU¸?ŠOk?^V=ŠÄ(¾´þ€¿”0¿<€Ý;Úü`½ßð=€Zº¬l?› Û=Ô»è?‚®H>CÙa¿`Y¯»Äœ =9ê@?ƒ0¿‰kÈ¿x}½µ¿ŠÄ?vxÆ¿pÏ÷?eb·½æL=Á+=¼ÖÐ=lT<——h=Äø¿søP?‚Ê™½°O¼<Ê.¼Çæ€?€’ ¼: =–iÈ¿‰z=™—<ÜÑx¿‚5n=Öš¾C÷È?\¤€>v‡¿bW>^á?tØß=w° ¿n«\?‡öö½PN?‚5Êß=ßÔ?Gk¼.0¿ýµ=zi\?y#±¿qPÏ=&¨=ŠÕ4¾¬CR=õRz½ï ü½}Kd@ì¿ñ;ù½œä´?zW ?t8Ê>”¯Ú>~äþ>0,¤>%~}¿U*-¿hâs>Už6¿›+Ä=ˆ½`?ž>¡¾áe=¶6$>~Z×=P…4?bL=….ª>B­¯?Š—> >>$==¶F¿VÆ´>"Jâ=Û¬Œ=¥W4¿YÑø¿LÚ=?‹Ý¿e|-?ŽÚ„=Þ%J<¥N¿ñ¾>?Ч¿l0¿r-x=ž0”¿VŠs¿|˜¼½#ÁD¿ƒ²¹?_ Ã?’¯À>Ž?¼>KÈ=¶âŠ=†1Þ¿q ˜?{ì6=ûžv?^É= ܼ‰X¿t¡ë¾;ˆ¢@ØQ?‡ ?_MZ=ërŠ?‹µ‹?†t›?уè=Ã}ž>2Ç«¿ ¿{&p?ƒ,;=ºJê=¼ì:º6Þ=Tt½ÏX‚?B`?lñâ=ç[Þ=d „?’Bh?vó7¿7{a½¢’=PØ ?Œ“½”­¸?‚Dz?‘&¿¿|‡n¿l„¦½×Ì>S•?å¹”?ƒÅc¿€fì=·qà?†(~¾þ"?‡Ñ)¿ð96?MÔ¼²¿,¹¿‹ª?…}É?„¥¿{ˆ?¢Šû¼œÂX?<µ="®¼¿j½]¿b›Y=’‘ª?ù ѽ‹J¼?ê]Ÿ¿pz0?O=Ü=ó; =u,?ŒÌ ½@z¸?–ìµ>ÿ>ÇWJ=y˜Ì=·³à=`4Œ?o3Ð?0·€¿gi?Ší¤>I’4=ÁN¿†<$?—{[?ˆ!Ž?lsH=íUd¿`òa?zº*wô¿g®U=e+x=§ç¼=»çô?sqÂÀsE¿”[bÀAâ:ׇ¿uÈ×½\Ÿ¤?‰œÿ=/Áè¿{†b=†òð½C¦ð½†¬>5/I<@`?”ß±?s_¬½D”H?mŒ®¿}¤< ,˜¿`zç¾3X¿ýn\=0?qÓh¾ \༿^˜²?™Ó= œ½(l¾JOú=”²?„l =uœ?öi@?¤M=¯Èì=ÄïØ½ü¾h?þd½»òd?Y!»çÀ?II6½Op¿wî@À5=åÓê¿Z1½Ü“Ø?i,=Šº¿6Ú±¿qL¼è‡`=+Lð> ”=Y¬„¾T Ü¿•\o¿n)r;hU€>ÂR?‡c¨?…Š'?”?ž×Z¾ÕÙ¥=n%¿u]¿UH,> .Â<†Ð?Ÿüu¿õ¢ >náÊ>¿Jú+¿l¸¿<†¿â¥>iók<+!Ð> ŸÔ¾mÞx¿f"?”n¾kX=õ˜´>X³=âÆ¿gÀ´=Ó^Z¿s¶S>FM?šŸÝ;Žc >yï?yx6¿Zd*?šš¿hdü<¸C8¿e=$=™Hz¿aQ»Üj¿nÌ?Vêr;Åü@½³”>Ø8?\œ¾=Þ—Œ?Ž6>7 ¨½…œ ?ŒÍ×?€Ç>c>ë<¯ç=,¦p¿ŠÌ?‰gÄ¿mœ?½?mª= =,ØX=«Ë¾=¤óz?i•i¿xôÄ>I„¿GC¥<•È<‘v¸?®¤t¿pù„?ŠöR¿Zx =A½+¤¿zÓº=FÜP?  <†¶˜¿J‰Ì¼ÆH> ð»=ª.î>Èl¾.Už?@ó.?lA?课2Õ´¿zLÔ?R«”¿x¾¼_u<ñ À=ç1Ö¿ï\.=çø ¿m²f<§1@>Ÿ<œ“x>hB>ëq?q!?~¾ó?]‘6=ŒÞ=øß†?vqÞ¼)çÀ?u@?ù²á½D?‡vº?ƒçx>3e?†”ö¾ÆSò¿tóÇ?‚ð=¶ö?lºÛ>  Ñ=çøt?XÌw?Uן½•ƒ†?Ž»¾¡<ƒ?Š-·¿ˆxæ>0ÿ<¾@=Xn,¿køØ?ÿlN¿}¥þ=p6¨=‹Xâ¿_á?ƒ† ?Œ§.?uòy?ûc¦?? ½„“¸> T@±#½—!¼½Ç\?ñÓüÎP?‰Dl=̹š=¦?‰æÙ=\¿‡|þ>íÓ¿Š’“:ŸQ?gâ?ýJ­?K8”¼–ˆ¿eð½qh=#/=ŠB¤>‡6¿ˆöP¿Y *¿eHÊ»—¡@?ƒð×<º#Ø?‡Î?@éЋ¿gµ>NÚ=÷²º>f¶¿f¦Ò>J¨z?{ ?„Ú?¡›H>d¬º=Òâ†=¦>Ö?Œ ¼¿ù‚>'#‡¿ƒ=<Ô €>ëH¿\r©?¦³ =ì#X=Áöü¿}:=Æ´=ÉÎT¿lh ?‡­Ô=ù׊¿^ â>J²¿]ð¾=´iP¿iʽWD¸?b&ˆ=ëN>Ð’=°Û¨¿ƒˆ¯¿àh»ï/@?cmn>Àî>0â<•î°¼êÀ ?kú½hÔØ¿SíÖ¿÷4I>a·=r#À¼¨uÈ¿oë<õ½é@=Ó˜¿~1…=Wî$¼%0`>@»?z™>0ôú?ï=ö¿’CÄ=ÐÊö=NÔä¿~x&¾Qèt<Ä:¨»Ýë ?M¼½#E°>+Ñ}?ˆnû=à©„¿g¡e½šZ8?ôÚ”¿a¸i?ûs&½÷uÔ?^é=àOü?lÊ<¯À=¥ä¿bÝ¿ú•»Á'@?ÓÚá=˜"J?‚_…¿zUÖ=R{T? ”a?~¶“?‡+:<•Ö@?ˆLÞ¿w×·=Šúº>!n¿=ï6?h[l¿”:?‰$¶<ˆˆ?W{À>`—,½‚´>!)5¿r}2¿‚Öt>'§§¿nN—=ËMŽ?D¹ê=.ð>3ˆÏ?’€Ç=Vsˆ?ù]s?žò”=a°>3Fk¼B ¿ë?„Õ>?^^@<ñ8=aÐ>´Ã?‚rÀ¿øÝ=Fa<¿ü¹-?‡Û9¾ >?„•÷?‚ ü¿~^?†¦½?rzô>8˜>‹ë>ŒM0¼ê >H@u?‚ÒL¿Q@Ñ;øì>]¼á:WA¿K7R¿pðâ=Ut`?rFL?Œè=ÔÖt»ÅoÀ?z¦Ï?‹„Ö@ kö?ãÉ<©Ð=I ¸=†ŸÖ?8&¿qŠr¿ƒZ:=^ùì=Ú0–¼ß¨=² Š<ÓÉh=Òjмw ?€¶>=³ââ?xéH?\Kr»ô{ ½Êä`=âEš=·§ì?¿Ù¿n:N<Åð?ˆQt¾l<¼NÈ<ŸR(?{) í>BL›¿oœ½>RmÈ?™†7?‘ÐÉ»vÀ>XMÀ¿q©=ƒï¬=|*0¿[bò?‹¤€¿‚{Û¿8ör>^}¹¿e(¦>RNV?‘`?²ë@tv@¦¯¿s“É=T ¤?w(þ¿õÆ=Á„r/i†¿e¸¿WnN½&”@G ?òï>&Î*¿¹Ýo>9×M=Ò5$=ÝLÐ=KÈ?Œ´}?wºÆ¿WH;¿_K ==qél?j[;¿„p ?‹'\?O2,¿i¾?„ä½WL¿{f+¿tÔI=vØ=ó~<{0À=ææ=‹õœ>[r ¼œËð<¡"?‚P?+õ=a*¿€JX¿ñ8?]Ș?…,|>HX>PI @ jý¿„*È?Ï1p?dȽ¿oÃÔ¿{ƒm>Ÿ~?Šß…?„ÙP¿m9b¼~À@<ð?€?úäN?€P?‰s?²þ>ÛJ?æþs?‚)À?‡Lß=ø¢?s5?|Ê$¿†“ú?zŒˆ¿&=ô€=ª¼ê>ïK|» À>I‹ð=Qå࿌…Û½ >Ú·¾F; =Ò;ì=I8¿£Ý˜¾Y¡ê?g&½V”H<ʱˆ½­:Ô¿c-a¿‰M?‚9Ø?r÷Ä?ƒ ?…+x=jнÍð=3r?oŸá>TáÈ?k!>CÍ¿_ã?}¡°?,¤=¬¥Â?~3^?ÀÅ¿wSë?€Î?q^f>¨j½ÃQ*?–©T=\"ð?ºÔ¿}¿î¦Ç=g.»©k€?qéf= Ð= {4=èÖZ?†ù>'uœ¿wìÕ¿ˆŸ<ø´¼wÚ°¼æÇh=Á. <¶9@=Hãh¿†§2=pL,¼Ñôà?…$n?Žær?”ï»E8=Ž+(½AyT=gaü>Ÿì?qb?aV?}ÕÄA‰ß¿Lˆv¿è²><¥Æp¿]·m>1=‹ö¿fÈÐ<ð =^Æ0>d.¿h‡\?Eµø¿`н?žÕý=¿ì¾0 @¿O› ¼É† =¥OÀ=ËýJ¿i<µÁ@>5^~½‰Y¿Þ}>EÝd¿çTç= ¤Ô=„¬(¿Fñ×½¦‚=b $¾)2ø¿#¿}vô¿iÁ<Ð <<Š`?b—ã¿„N?‹î¿n)¡½˜=•ŠR?‚:¾PŒ¿{ˆ@ü†GA˜`Í@ç”?‚.*?v>ûùÌ<ú¹Ð?‹@=.éì>@è¼< P¼½äˆ?}Ý~¿£)¼‡ŒØ?\N†?‘ñt¿k%=½<=:㘾?,?‰u>%¿Ø?q*²¿M’=ºü?ƒ\”?‡)(?†^¿†¶:>6 ¾Ó‰”¼×r ;€¸@¼B÷0>µ+;fÒÀ?‡%½ù†?aŠ¿z´=Ô¬=YŸ„¿‚ŠE=)ü¿|¹s¼HAP¾#?X¼þ°¿Oû3>ðT? -*Ç?„J =c2´?k²?a|¿‡cœ?ƒTœ>þƒž¼ŸËÀ?†&k=̤<‘Û€=þ[?}ã?‡K=yÇÐ?‰ÿ‚<몽¶¤<½åð?÷€<äv?ƒÝÀ>-Œ”¿‰mj?“ëÀ?u?Dê=¬S?cgb?IÕÀ<“€?}up?‡o˜?Iµ?£5?gÇ?q­V?t¬Ä?‘ȱ¼ Š ?yТ¿cÖP¿œ«<£u =Š5þ?ùe¼?|M¼½çP?Ší ¾¯=­r¿‚šË?ˆ ¾/ô½ÊÉB½4½²ïh>XŸ?j£®?‡Ú?hp6?€! ?pÞ.¼ôip?Yó?uˆ¢?ñ^š?4`?|0‹?…oO=žôAuF?wÎ=-×\=ˆ]Ì¿L±"¿Jý<¿sË”>`»u=œ2Ê?ˆª”¼á‹X=6ÜÜ?‡œ|=œ>3B ?çnS¿‚?p>/-h¿oÚ¢¿XM?‚ ç> Ï×?‹¦½?e«==›À=£ ?[$¨>m¿_qÖ>Gh>G?˜œ· ¿O\> ?š> ØÝ¿[-9?‘æ~=žoò¿w#9>/'ò?¤?€í¿_d«?_}ú>¨+«?|‹"ä=®h¿$O¿…Ï;¿aj.?ŽêÎ?t¢½ó’”¿pÂK¼Í)=ÀÄö½%ˆ½Ù @¼G  ¿Œ|>*§~?“Â?Q ó?}׿l4ê>Q•?’0f;—€?Œ ú=¸œü>0Š?<°Õ?}ÓÎ?‰ïÔ=Ø$޽ÎÎ>?òÊ>_Ø?€xA¾êÑ>'›?|F‹½Z¤½ÛT;Û`?|›è¾I¾ÆVò<Ž!ˆ¿ƒ½˜ââ½Â1d¿‰Ú¿xó—¿rä0¿t‹=…~¿…0f?fi=Zä4<çD€?‡FÐ<ƒjÐ<â« ?w¬{?©M¿oX¿y‚a?ÿ¡0>MN?ˆ‘½z  ¿€úË¿r²¢?{tÚ=½¬T<0§ð?mEZ>O l¿€³Ô>=kÀ—³?bfô¼W% ½€û€@ ª^¼µÎX¿…¾¬¿„:3¿‰˜î<É ?Uìw?wþ ?u#Å?ƒÍ?ƒÚ?ö$?V?læ>'0=ÌçÆ½VÔ„@i6¾;¶.?y\A¾vM”?]Ç`?ƒÎA?‰ø?íÀ*<–R0?„¤¼»Î½E†d?ŒÌ]?ƒy=ß7†¿ee^?p =ܘ=£<à=Ú_ ?9P?^ìk?ˆ2(?c‰œ½;¢Ì@v¿nZä?gÀ¿xzQ¾ºÖu> ›½Hj°?w˜~?‚¡P?ö›^?z`=ŀ̽´îB<‡ÇH?x±D=r¶T?‡±á¿‹§½=‘ºš?{.f½)[(=ɺ?…–ê?øÁ@¥`;¨ €¿O©¨>{µØ>0s>%8?‡¤¾è“é?¿LuX¿ŒKG=ËFz¿ãƒÔ=È_Ì>HÛ?¯ç¢¾Õª?ž¿kŸ¿ij>:£i¿PPG¿C>Ó¿EŽ&?€OË¿_å{¿Vƒâ=°…|>4¡ÿ>t#Ä¿û£6>“ÿ¨?y¯>` )>?{Y=Ȧ >«8î>>R‚?Û¨?Šÿ_¿g>V>A…>²\@üa¼¬¾X¿äÔ@?ü?ôÿ€>ˆô<º1È?…x!?92Œ¿G ú@üŠ?~åý=D˜Ä¿ƒ½ÜqŒ?ŒhZ><§L>=Í>…ð–<î Ø¾ˆY#>!–Í=¸UÈ?ƒ†ö?–ùð½y‚„> ¶?ú„=á‡è?–žz=‡¿Æ>7q"¿\ò=e±= Uj?†%L½Ä¸ ¿]𷿆€¿|??†qE?’ÝÞ=Ò.(=çö?'šÓ?tw0=Ò(?ƒÈh?ý]?Ž‚?û:®>Q&d?ŒfJ=¦Èð=­0aY?{xK=mÎ8=Zs=Åaì¿x =öø?;’¾®=?]è>Ái¼îTX<’Px½R4\?dÝÉ=¤$@¿pë+‰à?áV?‚'H=» ?XGn=ÖBd¿^*ç?| ½…KÂ?å;è=«•(>9  ½»Ìοò9ï½6áÜ¿‡ûZ?€¶u½gÚœ½‰ô?jz¾Áéó?l>=ßPÐ;¨Ù€½žÀ?w(`½\€ð?æ°?zà<¿{+P?i\S?–ޝ<ïpeO”½…~T¿¿nÕŽ?o((½‰|\¼%_<Ž«ˆ?…$ó?†=•z¼=& ľi–>û^=WP½—t½u¿QHw>FÙ}¿u5½4оR#¬?ûоE´?ùs?Ý£¿†”1?[W‚?^ê@òz=l†Ì½ôÿØ?†i½•ø$?ñWo?„oT?x€´=âq*?|ú3=ʧØ@†fl=&ú$=žö?’õŒ?+S8¾ ü¿w¿‘>ï¾ò¿C³¼½Å”¿|ß=Ü—À>&¿e1s¿Qmž¾ W`>:f¿†è’»ˆ2@<€Õø=ïIô= àœ¼JP>@0·½»»½¼=#YÜ= &¿ñ¤š?‰Ó(¼ðñØ;°º`=ÀPH?…ˆ¿}¯F?Š.ð?+ò?‡6¿Šé¾3€à?ŽR½ÜŸP¼óDØ?—Ö¶<¼pà¿V=wTX¼ú:@?‚îZ¼|·@>(™ö¾wF¿[4ê¿gIH¿Þ¦½!и¿ZiT?Š>b¿U.ý;í¾ ¿Z\½…Æv½¥áÈ?{‹ô=åŽ ¿€Aë¿{1ï?MM!>fHŽ¿„ïÀ¿Ÿ"p=èH¿ô‹?ý•û=zù˜¿g+t½t1@¼¸pð?€+y?‰æ> û2¿W|e¿i¤=F‹x?„ªz¼Ñ3(¿W¿)>ûã=ª >?;=è1ú½T·¿`?2Õ?F麽\¿kA ¿i“¿ƒ½ø»øf@¿pj–?ƒ‚t=b€¨¿‚ý3=‚Bâ?ƒð´?Fsÿ=->t=îÖ„>  =äĽÈj¹v¿‡!×¾Wø¿‚ØÛ?úå=ñý¦>ëü¿þö=$ÆÔ?Ä8=u¨ ?[,b¿hê> ¹’?|0©?·‡?× =z)ð¿fB•?0»É=“Ä> hj¿…3 ¼”:º3§@‡ý¿^½x>.á@•=½DãX?r~=tZü?Œ˜•?ošH>,>? Ö¿yÕ=þýH?eÉ[?ž¯[<þp¿[tË?LÐÐ=©RÖ¾ÐÚ¶?pÒÕ½6­P½–<¿‚¹?[|<ˆÚ¿‹>¿ƒ°=¸Uð?‘Ju;î³`¼¥ = “P¿fN¹?ƒ—6=œsæ= & ?‡7G=ÆSt¿ 5>ÓÖ?€¯¿wÒ»¤1 =YbH¿pÊ4?€ ü½••œ?ˆíV¿l†ã?k]>#.¡¼o ½¢À=¥?„V<€Ö¸?Xð.¿`Þ@½½™áR?† ¦¾nJ.>é‰=ÀXh¿[—ê>F=€3â<¼}¿C³=Š‹6?vÓS¿P\>A=¼îà=Çÿí=Оð@¿P>[—ú=á¬D?©7º>yýx>–¿uÜR¾Vn¿YQ8<¬@>j;¿WüÈ>Auê¿XK;?h—=‡‘B=È †>V_:¿yµ ¿tÚ-?za?w9 >±°?ˆC^>/‰e¿­¿xsD¿](À=„`?€°d?‚C²?“==á±8@Ê?l¤=Úz¿t_ó8™;Ô@½Éqp¿k4¿cŽØ?…㈿˜N ?‡r¿õcºÊÙ€¿|¡ô½r’Œ?„Rd<Á7Ð?Zu?ƒÕ1?ŠÒ°¿€•b¿i&½\ˆ»«"€?ŒV#¿Ô2>ž½¤Øà>\[¿€„0<=Þ=ÙM?_£½[¦<>?…qd>'Ù°¿_hå¿hj?‚D0?€õõ?yÖÖ½®“ˆ?S??yìÆ;èà ½Z8?‚œ:?}¼Ü½ºÛ¨=UDt=å.l?nÁ=ñl=˜ù˜¿‰8>ÌÆ=¬¿‚3Õ>°¾Úä¿_hܼ‰'=#Ë켞wˆ=|øè=jú?•À«?}ÎË?Ê¢½ZHH?÷PÜ¿‡v=Æû?€«×?ˆX4¿uiw?ŽŒ½Úd½šž>m^ƒ>*U>jG=>x¾»?‰?‚ÀP=áÌð¿ƒ9ø?sô?Œ1Q>!‚~EjG¿P¯.?€ÿ:@,ð?=Š ½¬?y4¸=³Ç"¼‚ƒ=É0¿€=b½$Ž”»£j¿p`¿}T ?—„­½‡ÿ0¿cŒß¾ ?Ìî ?þ¾v?RØ–?…²?”%?e×À¼nT =-øÈ>4?ZÇf?Žƒq¼ÑdпjI4?s!=m®0?jBῃƒ=Pϼõ­ ?x~=ܰ¶=¤=³ Â?ùR`¿†Äl=‘¬Š¼,/?cy>`óò?f¸>YsοyÉ ¿hÛ?¢‘µ?€y>8Fc=é(@ôô?l«Ž> Îø<Õ\H?‡ªš><Ìs¿÷3l¿e°ò=Ç&V>Äã=‘f”>e¿f¡F=.}üBˆ à@ƒ0 ?hÇì?.ò=TGt?‘‡x<ìÏм€øØ¿‚±<Å®¨=ÛN:‚ü¿U‡ ¿ríØ¿‡‡6½Yà? f6?}¹ú?ï¿=?±½IËH>bZF>C§½ ¥H?Éš?vúD¿_°Œ>by[¿[cÃ=••^?Ž©ƒ=!1½õ…?J”ù<€=¦¿o–¯¿l™å@;ëB#q"@}Xd½â`;e@>*Õ?st’=òÀJ½€±8¿{H½1Æô¿|#p¿¼Õ?u@fó?ƒd×VT=Ø„¿u&Þ½5_¸=í]¿X¢"¿€¨>…¤æ?|úÙ?…•á?P¥k?lç =–R?fN?‡ÿ¤=‡nè=ô©2?e2=9ä?}ˆ¸?ŠÜ_?nV¾ ?@¼~°½}i=<È=5© ?€{X¿…7ö=²Cz¿vâL¿væ~=Ìž"¿‰"Å?}ã=~œ<çRÀ½ØV½b¤8=jÑ`=VKŒ½¦D¿yŽB¿F=•L0?r~i?hZʾ"0s='Û4?q¸ˆ?m{#?¾ÿ¼¡âp=ö@»ÐØ@¿J/?€>!?KÇ?sí~½¢ÀV½Y=M|?h¤?ŒÕç¿‹ð½ ÊÐ=Πê?î#@<Âð?~Åä=9d=Èg‚?d¾=ÙÝ’?ô87=¥)H?ÞZ?Œ\'?M쫽f{ð¾t¿„÷,?‡Å ?õ3j=o#4?‚½lŸ=à@.?£ûò>j>Ê(¿[í)>¦”?€È/=Èÿº>ÓoL>î>)–ú=d è¿J8¿FÐ?~B¿T»Ì<Øáè¿nÓ¤?‹Câ¿t5Õ¿VFÂA,Y?ŽìØmÁ=®ƒ¨=C(=ëm ¿_ö?¼² ¿}Rá=ÿ8?`ð¿v·Ñ¿ü=Ü»¦<– à>©5¿«?s£–¿….l¿hC¿+tà>aŸ>@ôœ½uI¿šå½²;Ú<‘> JöEcü=Š ¼öÀ=šP(¿‘t¿x´Ä?òWê?æø> ì?“£Ç=¸­Ô=ÍTÔ¿cÑŽ=èÎBœI`?‘(Ó;îZà=?`= LP¿}¢?WZ>=£=TD=†ªê?i†?jÌ>:™9¾/~Æ=ÿøx=@©x?Ú´f½ìúÚ=CëÜ¿VYF¿Rbð?÷Ú™?z8¼ªX@]·¿†²½Dô8=±˜¿uh¼”0?‚ö?ýÆÌ?“Õb?„!Ù?ˆlÎ=‚:¿n^‹:ð<ý/°?8ä=­Ì=¯„F¿„B ¿ke=?=¡(F½ŽðH?‡ª¼þ ½¬¸°?‚(Õ¿pM”> Ø ?„ëJ?€ù<¿„O?:h?|ä¿c6?JÝ?‹ Ï?ê#è¼n¾?p+ž=Â8„¿qù<é@Æ”?Iiñ?{é¥?ï ?” `?ˆuÜ?wXx¾¨·ª?ŒÞn:Þ߀@ŒS¾!! ¼A_°¿ýC¶='mü¼Ç@>µM&?x<1=™?{Õ&?pk?‹ m»o€¿n4…;ø€¾F<Í¢0?‡ý?0ˆí>ÌÈ?ƒÑ:=1»˜?‰G¼hf ½ü«ô½¶yÀ½où¤½[™l=Ï ²?’dP?=zLX¾ÕPä¿}ʈ?oH©?uL4?•š~>Ÿ·Æ½5+¾NC¿k Ø>¥¿0>“?“h¿ü¯>EV=Δ4>•gä¿âp?š)ê=ÊÐð=n/x¿Z”•¿Q~޼ó¿Q•À¿œ=lÑ\¿tÍR?•R=¼2ê<Ôý(>z~ë?†5œ=“˜?—Pà¿g=?‡‚–?wÆ ÈP¿p µ¿L™?ŽM¥¿„ÞÞ¿Mo>D?‡ô«¿~8g>Ú~à<Ö»À=Â/;…À?`W?ŠšÕ>:_U?㫽ªU~=›²â?l.?D¤Õ?†Ê =sŸ¨?j›o>#p?–‰˜?rç“?‰}¨>Š¢ò>î]¿y’é?cŒº>ç”:>(v~¿^Þ`>$Ï]?}è¡>B‡=ˆ:ú=3 $¼µy¼% ¾Y€¶=íü¾-TŠ<ݶ<  ?U¯¾=´`_?ðп=§Mö?Šˆ¼¿].j?‡Q=4<Ó!8=Ÿ¯”¿p=U¿qT,½VÁ„=þÁxº‰?B'¶?yœl=¦”‚¿Yôz¿†»4=ËÅŠ?ï­>¾£Ž¿gÔ˜? ôL6Ù½®ºz?‹0³>θ:÷Á?k`½=ˆ¿{ä–¿€,U>²§½Ï»L?0p¿}a–<؆˜=vr@›ÜȾI='?ô?W_Ö¿n]ð?ö®M?€vn¿‹ /=Ç2°¿\!G<­Œ?T<œ@9Ô=d=µ· ?}Ó—?”©æ=e0=Áy$?ûfz½ó°?0 ?f]¶?÷ür¾]>ò?ì Š»Yç<ã-`=Lêh½h¡|?øx?alÀ?qµ€?V*?€Êû¿…¨ ?ù‚¿yA ?³Û=€Âà?gŠ6@"ÑV?ô±F>05?òŽŠ¼»ø½r\ü?’a?‚ƒX¾[Õþ½+¹ ?dÄ=íHD½=d˜?€q>¸<¤ØH?õç¨=›]v¿_=§aÆ>/3׿NE> Ÿ=HÞœ¿pZ>RÓ >Ÿà>…HQ=5]˜>až?}0>äC=íïP=ø?T>Iñ ¿zË`?fÞ>Áê>ŠyÕ=ÈZ¿uø->вV?’ ¿|>,6±¿L@¾l6â½›r,?‰xÜ?‘¤°?”(?–ˆÇ?í©è=Œ-®?~»Š>=ãeÎ>Mr#?Œòº¿tÎÖ?Œ Ô¼ãüø=Xac÷?ýS5¾P1É¿‡Fà>#-ª¿‚cy½b{p¾ݪ?A7¿{aa<ÜU8;c]€=³ò¿|ó½vÊ@¿\u¿¿þ{?‚r+¿=òß?“?~Š> L8¿q"=^=Ãõ"=ïe„?Ī?“¯æ=œÂ¿‹Â?z‹¿i¬ô>x¤Ú½Ó˜=D{H9¸=üÏì¿@ ñ>Rx>Ù®?@.½"«P=Ð6b=„ƒ=È'n?|uG?‚¦<<«ð?‰c®>Ë¿wϺ>7¸>¥=Á6¿mô>1K> ßr?‡­þ?‡øA¼ÂØX>s:Ò¢?Žë|¿LH»=Ã× ¿õÌš?†gß=Ãâê?u^‡?‘»…?fÊ?xF½Ž¥$<®ì¨\|¿~ñ>P¿¶?‡¾<òäà?…ÿ ?x>í?ƒÑ*?Œ!?ƒ¼T¾"B¿xб=‚ ½ÐW?qB†¿œ;q?ÇaŸ=J%P?óU?ø«ü?zJ"?€°§>1Ç?„øs?•6¢½.ð>¿–½Ù÷¬=ÇÀ<{” @>Y?Žíö¿z”?Œ\R½@-À?ù&à?Šuo>$ÿ¤?†@H=FÕH@Tr?s$)?x¬?…+ؽ4{è?úÒw;Œã€@)Ç¿ƒšî@ü??ƒp?ÓæR¿nÞ½tb¸=ž{=ºSX?€<á;ïù€¿„•æ¿…[?gó‡½>­@‚ƒÈát¿L¨€¿oxŸ>QÜ=^VŒ¿Güf?ˆ×•> ™d¾vX;BL@=‰Y6=\–ð>·n¿G">)û>ŸÛV>A>Ÿº¿R¾c¿¿\;14H¿nJ>-½¶@ˆb¿]{Ø?ŠÐ8¿l•Þ=Â骿ˆ*Ü>]}%=â $¼Íø½úÛØ?²­¿¿€{ý¿}Þ¶>Èb¦¿nOv=i®X¿kzî?ƒµ?‹.=Z¨<þ†¼FÞp>md= ì>NŽ"?‚Oþ½¯‡¢½ð“È?¢n¿’7ɽø?h¿j:¬>:eÖ= GÜ<¾Âx¿O¬ˆ?daÌ;ÈT?ÚÈp¿]pØ¿Zñ:=ί?r×Z?v9}?|ÅN½*¨½P@<¿wp佉ûä=e <€È0?‚JÎ>s鸿’Ý?lø¼½‚½ä¶¶?Sð½3<Þ€¿‡á¿=ì§?yÖŒ?€Ô ?yoú?kp?¢?Š<Z€¿d‘2?xÍ>?jgÚ½¦/B½>Ô=çT&?z;vZ?u=Ž?l.½™z¼?Kãü ´?wž´=›/|?d¦!?#=—W¤=–$Ü?éC?…t<‚@?‡-x?p+¤=ð:?€År¼¾uà?›èì== =¤‡|?ˆ÷\>%Oñ>08ü¿i2¿‘Ó?”|2¿X˜Ê=¢º¨>n å>BΤ¿h±>EÉÜ>Såf=œð¿=êÞ> ‚ŽÂl=ž=ã5€?Œ³¿R“Ð?Š®3=¦œ= |’½¶ÇÐ=ó6¿Rá?{°¿xpú=TØ=°*<Ï|0<ö‹ø?ÐØ¿`=»C6>ͽU >"t=ŒL=R"=؇˜>%§Ò?wz1=«…Z<ß” ¿S*L¿[>B>G½N,¿w¾Þ¾v?„Ü;?}'ˆ>MÁ'=“ož=h ¿g:¼?‚}?ˆ—Ä=œR¿€‚L¿nwM=°ȼžžÀ½È æ½uä=h³D=rô»%ZÀ¿}?ЍŸ>@éŽ?u <0[п}35¿rÞŠ½ç"L>ò¡¿’Å´¿m‚‡?„_=wƒÜ?È=|L¿5–½œ?‰tZ>Ä <Æ¢H½ù!T¿”¶íþ?e[O¿3¿‚£=g0`;Êñ€?õæo?YŠ;çs@?q5¾>%¡ ?.§<§9H?€sb½¤Þ ?Ü-ã?–ؘ½óðà?IP=µ<ò>¡ó½‚V4¿%b¼=Ic ?æû=¦sÄ?o»v>$tÑ@¾¿†ËÏ¿‚Ñ´@o?—k½Ž»g4€?XI?}$Ã=i¡<½âò>=²iܽ㗔?n½Cˆ½ƒñ¨?UÚ?œ)k?íT?‡¿ :ðš€=áT¿sì)¾m¼'<À?~sY=) ì?–I_½ŒËŒ?T¡f?mÛϾþ?kØ=Œ ?‚},½î¬$½x®d?ƒ,¼/ ?JÎf>±DÚ¿a0ð>To¿7äþ¿s€â¾¢òõ>.|]=ïu:=b#T=C¦$¿dÄS=›r„¿Ví³?˜½?$Ç>=½Î?Žò=ò&¦?Ž^ë¿X°¿v‘?gë†?Љ¿{ð1?sä¿io>tƒÂ>ó¿h„d>¿Ií¾W–4=0à>6õ¼¿x©?†¦=;õ,>Q:ü=ùðò½hkü?uÎ?úÕY=Н¢?†ùU=¬‹”¼Kf°?ƒ­Ú½I?4½fø¿n-C¿’¨á?çÒ?Œ/>>kÎ×»™5`¿—}`¿M̽”ÄL?„ÐL=ŒÎ¿ðâ<‘>½h¦Ð¿ƒ#?ÍdÖ¿Ö]>x©.½UD ?Ž¢R¿Uyx>I ò>)Ñ?z!Ì¿lø> (¨?€ ª?eo_;Ç\À¼Pº@¿÷á›=c>+ÂC¼yaÐ?‚‘f½Ø(š¼@àð¼Iõ ¿ƒäH¿v¹Á¿ó¶¡¿Œs =é_=Õh=†Ol?‡W–?r l¿yn?gÑ÷>I!ù¿l(<Ÿ²à¿w¥d¿j_Å¿€C?il<7ø@?0>ÎŽ?0î?Œ•?ú1L:!Ü¿œ6~?‚© <Îðºì€?‹DÈ?’›}¼Fx=õ™Ê=VX=…?vžE<¶½H½ÑüοM?ësQ¿lÐF> Â>ã쿆mœ=Årž<ýdh¿Š˜¼Ös0=\?oÌv¿†3ö¿‡q@¿|>,?TD?s¿?¼~ž ? ˜“?2˜?8¥X?†tŠ»»©À¿]#«?îø;îΠ?tûŽ]Ø»«G`?gÌȻԘ@<.Ã?q™?|¤¿‚¤–¾…I ¿„{*=V ?†ÆÀ ½¯?‹TȾ½æ¼…À?CÛ=!à°½‚³â½ÕX»-—€?Š~=€]><¡#x¿lh;«ä ?‘ð?ôa? ¼Ñ&H?ƒºÆ½»\?ƒxa?½0?‘< =ZôD½e•?tžÞ=ªá¼¾*Q2@½ÐB¸?Ä?‡ l¼“%p=2±h<}|`¾Î9h½‡cÐ>oˆe¿k®?K“„>“¿U¯¸>…?;¿bÝV>HWZ=€,d½æ$=îȤ¿AsP¿whþ¿c*\¿„ )=·Ãl=#{œ>#¿Swž>Ÿä>&~g=úöô¼Ù 8=€½4=ÿÚÀ4ù=d©œ>(Ù¿€çl<ܞȿ[ Ö¿Frï=:´?ây?’gf¿Aûñ¿„Ü?{*¯?†Ø¿€Wm|¨?W§=œ"?†bš> GZ¼?MÐ?„?r³?Œ¿pR&?Õ¸?€_@?ùÝé?‡Y=VƼ=º7ö½²ö$@=º¿ˆ%œ?`¿?‡)½XžÌ¿‡‹V½Ye?—‡â?Ž~=MÛh?‡£:?hžÄ:Â^€¿qoh½{?„Ø“¼É¸?†ÔÕ¾ {¼=¬—$?bsw?…ê㾊\=äv ?o÷È=ÑS.<>™`¾e'ø=ípz?{û&¿~SÔ<3¾0´|¼¡@<÷‹˜?μ½»@>ßU¿Ê|¾)Ót?Q’­¿†DÄ=s„<òL:©ÿ=ÅÌ?’®P=øvJ?‚ßî¿f0Ø= Q,¿Žt9¿v“†»·÷€=ÊÔ;í] ?{Úœ@Jô¾¦Îè¾Þ*>Ó=>E@?s¹Ã?j²j=–¨ú½tC”»ºo€¿j[À?]38?† ÉÀ &u?ò&Œ?eP9?aŸà<’¹˜?}Ðé¿Ì<Ë h…¾Ð|?tÑ;=_V辺c= ü?whS?LÂ’¿w–¬?ü~‹?|FK¿xit?có¬=´Î½Òø?œ@†¿Š‰H?|ì—?ØŠŒ?p@8J?ƒŠ›?eñ>,Â?gA…;Ùj@½RøÈ?h¸¿z’·½ûoÌÀ ñÚ¼âi@>KK¿ÿƒ—>Q¹˜>fÁ½?Šä =ð¸>h=®Ö>]®Ä¿e´ð>á‹¿zœà¿sK>¦=ûôr¿ti\¼™À?Ÿ>qÔ>YÖ?ûÜ¿Dw>”°È> Èï=€ŸÄ>¡(H¾«Çã=ÔßH= eà@ŸÃ=²l¿[jý?~¾&>gŸb=¡¨¿Q;ž=ÉÛ6¿`¾8¿ˆ¦>PÜ«¿Z)?‘1?“:¿[Ï?æ ´½0Íè<”¤@?p=™w®> GU½âX?ŽÌ?†ª¿je =Gœ¿X9f½’Î<> +?Q”?hF&?w¿Ñ=Üêb>»¾ 2?ç©é>"u»?Š;½S мHæ@» µÀ=Fv$¿vAÍ?s±…?} >0~¾ ž¾?Ë‹?Œéb?…]>=­‰Ž=Æ™À?Š @> äV=u*>KU¿fI?‘­?ÖŸ½d]ä¼_ß`?8ª?Œ¹ú½NÛ ?ìG®?|˾q><=G@`½g3d;d@=íȸ=NØØ?ñ?oÓ#?{îM?v)í=“??½¡Yd¼ás @´y?ýk?„‡†¿ÿ3ó¿’ÜZ=³"Ö> $r?eo{¿q <=áÅ^=ÿ¯¬<ØÓ¨¿lC]?Š»Ï=5TÔ;Ç@?7ˆ½‹`¨>A(p?Œ1Ü<Å‹?y¢=¹1::',=§ØÆ»µá >†û?•›X>#=}fL½@™<¿zž7<ö7à¾Þ…?zI·?p“~=At¼ P?‡DÑ?‰=<˜@=•õ ¿lú×<]+€¿£4»=0@Ñl?Žý=o_ ?ƒç??ê`z?‡¯ö>Vë;³}À=sV¤½ÀèH?n|~=ÜÁ?bà?çõà=1²°¿Èî¿S$>?aÄö?Pð?ùÜ>&³$¿hi…?ü,r=†&Æ?€Â<±0X?U¦=‰´<Ô`?yòP=”T¾&hÖ?„ˆÐ½U„?oØ?|Œ½Òà¿z‰×?q«Ø?aJ¸;“a€?†Tí?i[¿§¿d<'að@f¿[¢‰¿g#*¿šôp?“bô>oN>Ryä>}¶=¼ º€=¼ ¬¿eJ]=£~<è•@<]ðp<Üä ¿SZ÷?kí¬?˜¬>]/>(Ž0¼.ð¿n›^¿cæÖ?™[]¿ph5>ŽN<¸N`@&?…>ü½»¯è>c·?gö?$Õ=ÏcÆ> s¼?€CÅ?\ŠÜ½ï‰0=[b\?íØj¼êZà> Œó?x'm¿‚­Â=D¤=d6ˆ=U<>ª¿€*5>@€0?V•?{ðÕ¿„ô=> 6=%tØ>gH-=”ïJ¿i¢ˆ¿x,ø=âJ?gXã?‰ŒÞ=:`=Î/ˆ¿„>‹½˜\½lH?ûg¿i™M¿lø™?‰”?vI =Š2?US%¿‹¼o°?ƒÔú?T2=/³„>Y=²~à=>?ð?€}&=ÿ¾ =J£ô½¤8Ò?h‰Þ?‰ #?󧿃Ÿ"=¼¹"¿MI1?<f>¥ž5=°×=-x?~`Î?j ?†ªF?‹›‰Y>w?‹Ú >éôp> [?$q›=‚ ¼F\ð?WÛ¿‹ÅP>Tê2¿sž´?sf)>þˆ?ƒOB>ý!?wl^?t¶=ž:?Å—Ú½÷0¿1ý>¾<­S`?„>ž½œx|¿X:™=œvN?è9\>=?‰[Û?„Ý…?š‚Å=ð¿bEf<[Ô?‹Qn?}^k@ª¼â¤¿þF}?r¸®?{Ñt?ÿEþ?!Ý¿ZY?šR¬?‰¬;?øB*¼¡€=E'à?%†~=‡Ë>>1ø:Ô…;Þ€?‹?ÉÐ@ E„;é~@? <¼ö ¿Rü¼1S?s<”?„±¢?ŠV´¼—#°>7ÈD?ûS´<¿0?n½`= \?zw¤>.!¿€­ç=˜=27\½‹Õ¼è <KÀ½Lß?€‰‘¿yµ=Y„,¿QC$¼q?{.û"½€?‚Õ>?Uï–¾nò8?uœË¿m|¿ò콨ؾq¼0?u¾=•Æž¿Mü>·ª½¶Þ ¿ƒMo¿c¢L?ƒ‘ð¿ã =<?|*Ê=£Gš?žq?”J.> ßá¿m"=¥š¼°Þ€?‰BÅ> )h¼†p=7=°>3è½ô\¿_葽x?•hj¿d=ÝÔ@5g>\?Ž)£>ôñ¸¿`ë´=ä£=±4„<[£¿g@'¿€'.¿ƒlÇ<ûH= 'x=?kø?­¾eÒ<Ú$P¼wU½Nô¼š€?²b¿Š›Ö=Sót¿€„j½1Ê`¿ˆ•n¿„ÐÜ='¯?ýçŸ>:!Y? >“R=Ì®Ø=µ¬?‰HÀ?ý´n¾›ä>$ôÌ?Ü׿š^p¼^áð?‰¸S?x6½˜Jl½S(?…bß<Â… =,žð?ð”š?zªÑ?†W6½8Üè¿vVª>+RJ>P¡°=ád"?|6j¿^Q¼~GÀ?–e}¾Å”>†î?‚çÎ=’ã”?…úõ?’Ñš¿€´¿¸H?tŒ(¿iÂà?ùì ?lK0=y0?€8ò?W¢â?EŽ?w æ¿x`˜>}¿?Žk#?r_-=’S¶?s¦=[˜è¼±'€¿½=¿……è?ù¶c¼åË(>}:R?~uó>~>G¾ô¾Qîõ=«õL=¨aÐ?zÚ§?‡Œ@?ï=¿-eX>F?ŠÙÉ?wV_=Œ½G逼äP?TÊ?ñ¿Ÿ½¨Ïè?LÃ࿃š¿t·±?d5¢=²ß½˜³<ç„ð?t­?ådK»ëÏÀ¼ÂÐ=„?¤?' ?}‹X@µ“¾+ëÜ»¥…ྛ¦^?î ¿ŠG&>ÓÐ?~Él=Xu=É€?}0½¼™ ?ý>¼ss ¿q%B;!€@ª½¼7*¾’½Ô?pR¼³îø?s4@:³¿oZW?u„ó?€î¡»³Û`><ówмS}¿‚\¼¢Í(<­á༊‹Ð?Gê¤?Ú½V‰¬¾› ?t¢;·7À?v5ë?jt?ýÐà¿v®¹?_Ζ?€®²¿©SÓ<æDH>ˆp¡¿NL’¿LƼ?†m׿t·w=îi ¼ÕÃ8> ŠÎ¾‰…}>q> š> WÆ¿]+M=à \>CÍà> ¬i=êrþ>£$¿pÌ¿R y=|h½:Äø=œ¿nýõ?ŒØÖ>')¯>™¦?¢a¿j‹ç>CXf=¬õx=Š.‚=kíp¼È*x»¬¼ Q…?§H>Ešh=Hµ”<Þ²x=‘š,¼í’¸>Gº?Š’G?Žw/»,x¾ý½?sƒá=º²¿„ôî¼®@»ù” ?½}=/"нND=øß²¿„C?–u®¿{U=ïi:½ Z`>üm?Š€ÿ¿¡¨t½âý½—4?pq?‹¹:?n¨?t ?q¯j?i|®?tŠ¿lsµ¿‚é¹=ê_è?lA>)ÄB=n¬0?ÊV¿ˆÝ>V•¿‰ÿí»Yp@?0g0<¾c< <èX¸?s`1?†œ’<…ÿ0=S€?‹Nð¿fö^>-$•?Œ¹p?|Í >^Ä=¢ø¼¦ÜÀ;ÿZ@?“X–¿tŽ?k×h?Y$¿k5=Ü7ì?I|o?`õ8?y º?ƒ”¶¿m*R=¢ ½4là=¨ë˜=Ò˜;äÙ`¾×½ØyF=`x?‚´ù¼op?Q¿ul™?ŠrŸ?ŒÂÑ?z/"?ˆÖð?v©•?ïf_=AÕ?u2É=³L,½­ù<¾_`¿Š¸?ý·¨?*Ð?‚U¯?$`î?X]0?xš<…Ép>&ð?Gpî>[¿h3}?rfÜ?•fþ?i~4=´´ç?€ûn?p¡ê½ú0=Pö>—H=†vr<~ý =̼¾J©4½$,?ttš?a)ê?þ%Á?¢¤?‡‘?#¿†"’=mú =ˆ+¼?yèí?G߈½†ŒqMü¿ƒà?tØ=™sè>\ïR¿[˜_>>:+¿x’a¿v±¿e¹¿Gˆ“¿lÞ‘=QÍÄ¿;»>%Te=Cµ@¿~¶¿cèÄ= ˜>C†>?ÃO¿]°É>>óª¿usö½ˆ›à=ཋ”½0>=*lÈ><½?^+>~öy¿]Ï+;ôÉ ?qiD½‚®`>#Ix=YÇ=¥ùœ>1¹s=µ®¸=¯T(=á:(?•»1¿k¦8=o“h?Ž×½Úù®<­ïø½¯ 8<¹Æ¨>Cö?‚b¿hh'<¢è(?…lÏ<ŽxÀ?šÏ´=Þ|½:)0=,cH?’sÁ>‘œ½0‚@¿]ãv=Ï£–?L{Î?sŽ =`|t?Ž]$¼ÀŽH¿jûÂA é‰AŽdb@´R¿wúÚ=¿ŸŒ¼ëµ(¿€~Ù¿r-„?`¨ç?‚l|?‡à ?hÒ¼°,¨¿Œ…>%¬¾ì#ý¿bj¼¼‰>È¿ŽçŠ=žX¨>˜o½ÆO>϶?~ÃÈ?ƒÕ²?1¡^?w°=¥?}b =q±À¿pOÄ¿ln= " =·Ÿ ?ŒmN=Bn¼é ¿l{¶<»÷°½jå ½IX,½ˆÀ¢=ª':>{·‹?©ê=§0?ˆ6=©ëȽffd>ð©¿€ˆó¿po?q­´¿€ßt>•ä?†·ì?tªÂ?ïQT?wp.?…G&==p¬?‡ãO¿f°Ö¼¥Sè9¾ž„<¾ÂD?’=¶ä½Ll=ŒRR;¤¿Œiʽ)l½,=,?…*½?€üñ?õò>$fy¿ŠVp¼9³?ts¿d•À=kõ0?j?ƒÔݾ§±«½bÞ@¼ú,¾妽ôÑ\?ý‚Û?r¼žÇð?jŽ?‚#¿†‹Z¼Ç5p?ºñ¼TÊ?€3Œ?‡ém?]Ëâ½¥Ú`?Ùæ™=$(½Äl=¥Û*?ä¡¿„¬é?–¤¿>Ó?,p?$¢d‘¾×”à>Ž F>:/ =t ”=›·8>u÷>€Þ?‘ é¿dÏæ¿[¤¿^å/¿TÄæ=ÛéÈ?“+D½Ès =ë*>> x>—ˆ$=ÑË>v`é=áÇ\¿í|£¿øëºëÝ=—©†?”€?€b8¿äîf>[?š?ƒ>%Ê¿òz¿l+½¿Tت=‡)J?Œb,¿Q)‡>FÙ?Œa¿V >5Ñö=ë²&¿îµ¸¿b|Œ=Œ€|?dØ=uÄ:†<;˜p?‹ÿÈ?‘¿ž;<Ñ·x=¿nã§>CŸ¶?%Þ½–õì?ð Ø?_ Ƚ’8=Ã>à=ênL>£Ö¼Î?pžr=áX >P-?’éù¿gC™?4/š=ÉnʽGzä¼”àÀAo†ÛBѸL@™´ÀS˜=ã]Ä<B`¿sl¨?ÿ !=cÀ<)p@ÐP=O ¿‚ ÿWzâ>9… >ÎØ¿K8Ò»»ª?Œå%hÏ?sÝ?v–ß¿|þ?ðPà²È<°zÐ> y,½t¿…½E¾Æ@…ú¿†o¡?vs=Ô„?‹Ÿ=ö1à?€L™X>Pk;¸°@?ôòy<‡ÞX?rx?‹ l¿€%Ò?dÓ3»£”@¿ jŠ¿ãT¿z¬¿yô¿\õ¿ciÀ?õK?OcØ?qBs?vÛ½‚,п€¨?o~D?C ?†Š¿…ë©?„^‹=H‘¼?ð¹&¼ƒ?åZ~½ÀÀ¼?tŸæ>oA½ÕS˜¼{¢=è‚¿l•¦†¿T™¢¿Š\ê?€•C¿{B¿_#??·1¿dLC?ƒ÷¾>sm[=ý­ =©¤¿dô:=¢§`?~íì¿b:Û=@ü¿ynZ=Š¿Mao¿OhE?GÀ¿€R¹å¼ݟH?íÑ4=S²D>@qC¼P]Ð=ؤð?ˆÔ ¿Lɼ¼9è¿f]Ž?)óÄ?†l_?_e=Òrʼ<…‰0?äÍÚ>Œ}¿w¿iRž?RY?¥º¿þ®?‹ã¢?†·.@>Ö?‚K‚¿r{Þ¿‰=’ét=ò¤?ÇÙ=<5@ ½?ˆß{>V}'½RÍô:\d¿†Ìo¼Ä?oË“¾€!k?po?^C¾@ê”=o'h¿ßA?—¥\?%@½t¿…~÷>,8£?‰Û?'oö?Jq>µ>5 ¼?g,G?€™2=Þ*?€÷±?~Vä=}p@S¿x©¿XE°¼‰w?î)=ªA¾?™Ï>A2¼¼ùæÈ? b?{þ ?€‰Ž¿eú½@2¨?o«¥¿pDÖ?† œ¿m1˜;¦£ ¿‚|Þ?Þ>”_¼Û8?ŽMJ?„ç>?‡l=™œ‚¿ƒC«<­ž?‰è>;Xø?‡Ha?ƒÈa½hÕÌ¿‚M'?^9¬=㋸½Âpˆ?Ú<ÕF? ‡¿ùø¿eÔ½ÙT$=­Ùâ¿g?üÇl=¯Ä¿mø¿ˆ™‡?…–¹?ë(K?qù"=4nä¼òÈ¿Š’n?€ã-½pÄ@¿ƒÞ¿~v<Ðñh={9H?…ß%½œK\?Ž>v?Œ^°¿m¦<¿pì?=Én?e¥ð;Kí¼ÇÈ>!æ?si•?x£?ƒÑ¹@Ÿ==fÀ4¿véÝ?ÃHj¿yFú<<=?k€ê?>‘¿‹qè¼”\°?iô ?‡l›?whL½¿ü¿wÓµ>4?ëdÏ=†ñÎ?†Þ1?o)R<ã"»´G࿌zk=OÛè?Té?4¡œ?X ?×hˆ?ò[=ëÞ@=Ùµ^½m; ¿eŸO?y [?ÿ ›?qö½Ö ¼=Å.@>a«6?~n´?ˆ:ß:÷â>|¿yü©=U5˜¿d>¿æ^H¿v"°=üˆ>?|%¿lç>f³¿HÓ½!€<Þ8 ¿\Žd?…ór>9×õ?‹®½;@À=饮=ú½²ž@;Ék€=¶ìâ>1.l> ë±=Uîô¿}fÚ=mâü=V¼ü¾F>²>^ÿÞ½‘v=*â=u€?†~Z<óŽX n=¥%„:[&=dÛ@=«j=¤¬¾?„6<Ìн(h>^­:?ŽÈÒ?ƒüÆ=‘(ü?™Ÿ»»¿i?‡Ž?‡ñ¿ÿöS½EKÈ>.Tl?‰Õ?ýË>¾%!ÔNx?k¼¦?Žì¾?PÓŽ½V?¸Â:¿²<Ö& =ªÐ=ׄ”=®T=žv°¿V×µ?…8f=žŒž¼µ:=rg@?xÉ ?|;b¿ˆ™ž=œ}Ú=½»T?fòþ¿ƒ‘©?Œ)3½…sd?ŽÃ=¦¿süš?ÆV"?T옽½}4½¿Ëd¿~¹H=ˆ=ùö=ÙÇÊ?d1ž¿„}n¿h¸>¶G¾I«î@!ø?V$ª?†‡L?Y)\¿zOÔ¿ˆÛâ?öz?Ž,~?ƒÄ ?nʽ§µˆ?‚÷÷>Ž®?uÉv¿‚í.¼å˜=j­œ» ¤`?|˜º½˜Û;æ”à¿‚ëº?•°=Ó_4½j©8<öØ>ü)=×µ ?f9þ<0 ?{I=ú¬?Fž=2Úà?ù?s^.=Òæ=0jè=;?vré?wçþ?…§½®A ¿WǤ?V/è?ƒ©?Œ`”?J#à>äýä?€„?‚Á"=·ä½CLÈ=³Lf?zÑÀ<û?ˆµS¿~(Œ<Újh=Ù?‘G@=8œ¤¿…—?†…®?‡’I?Qd5?•?‰ú·?‚~† p1=(J\½‰¸;–/?…X࿅Ε>{å¿q!>Ï =œ ?æR&=‡’пb#o>v+Š?”°c?ˆU3=½Éª>-ä²=Ûˆ>)ÕÊ¿k=8?‡{½< =›æì@^‰¿W]”?¢”4¿uyÁ¾}*¿u¡½;e =B¬¬=Œ€¿SOõ@"¿o­Ã½ÎÚ6>:7ë=öJZ> 4Y?–J?“6ˆ½„w”>Nj\?øIg¿g;+?ƒÙZ¾¿ä¿8ºÄ¿m ¡¿sSš=Ir„@S3Ô?{Lè?ê?>:òÐ=ôËV>Bßm¿‚m=Ç¡š=^°x?~É‹?ˆ‹´¿eS<¾ ­> ”=— »©é?}–°=ÎÖ2¾:†D>ECŸ½&³´?èù^?ƒÊ¥=ÝlN½#¤@¼þ¿…„‡>©Y¿zed¿{\}¾—F=˜™’½Þ´ =N×ü>Ò?ŸÇX¾hÀ>>5[¿zе¿y*š¿jLÑ=u(?G@¿oœþ?f1Ú<‰Xà¿u²=>L?zhô=Ý5Æ?еÁ¾°$¿yLS¿eÜB¾Ä«=5å´?{Ôn¾#>¿]¼`J€= ½Ð¿a¤¯@þ½í:¿ŒHü?t¾ˆ½F’P=ƒ’„?6óÇ@6’Ö¼äÓ=ŠÚž?Uޏ;­s?™LÕ¿pÝG?DÙl=è¾”Ì?¯?ûù¦?îöþ=G ô?SH¿”<Ž࿆ª?Š‡Ñ½Àh¿[Êê?l+f?€ë¡½Â³œ=+¾è?Ê¡0;n¼€½JT=Õ;º¼‰µH=‹Ÿª½Ê5¾|—2¾•Ò= ?hÿ|½™Ô®?c—Œ?òåõ?sr‰@ÅÙ?õÎ?Ž9›<Îù€=§ú¿†ÒÎ?”KÈ>½H&=¯Õ°?ž?|Î<žÅè=©¥P?›–_?‹âN¿Š±€=øû,¿iœí¿V_©¿jæH=›˜"?í=g{Ô?†O±=œÇî=ºr°?ÐG<6Ù0¿…‰¦?“%Í<6뀽ð@â?Ú1=³×@‡b>›=bï>V¿pÊÈ>xÖ½Ř=Á›Ž> EÄ<‚1 ?<þ> J;?‚Ò1¿‰ÿ?‚]¿kR> xC>P<¸î¾Ù€?‹ 5¿vp<¿a…=?oëØ¿[à¼NL?ƒõ¿„mç<ûsÀ=ø$˜¿VƵ?ˆÍ‹½'p€>r?{Uê¿fÀU> PO?{%ž=.ÞØ>Wó?W±¼çް¿l¥5¾òþ?„Ö?y¨;=‡Ñ@¼¹*€?‹;ß=éпA’ï=l¿‰Ej?Œ§³?‰Þ}>,‚<Û¾€?‚ôï¿ðaÓ=Qà<Ç"ཬ ¸>7¡¨=ˆ± ½í9T½ß0½§´ü?oYC?庿 ?fð$¿†jŸ?{Å@?„ûÐ?ˆ0$½TT?eþ9°2?F(=keì?ƒT,½T?„š?<´Ï<Äšè?=®è’?ê­ »rëÀ?…Z<ºð?WeR=ż¨¿zZ»õ¡€?|ý‚?†'‚¿qKî=˜"ð¾«g[?byݾô?~ÀP?;a¬¿šJ=>]ü¿vîð=†5=„Ùn¼Ö3è¿y‹Z¿v’?ˆŒz=êñοœ?h]D?‡OŽ?ø`)?v•µ½®¡Ê?aÊê=v5T=OL ?~Íz?ÙÙ›½Á^?,l={qè¿¥|Ô½¸”>?rH?…¼¶¿̇?r~S? ™?nuÀ?|çê= í ¿bùç?wÒ??~•T¼kÚP?mè4¿‘¿i¹Ü½ç·ä=ÛÌô½†ò"?„-7?xƸ?|Ù6½ ¥ô»þó€?Ãÿ½•w ¿tÝ´¿_²=ÜĽÈ <½«5¤?…øž?ô×?|çŽ?„>¥@;Ûh?{­h?ˆ·î=œH„¿oã½1›h?‘K&=êdÌ>¿5ì¿ÝS¿h„%¿]ô½x• ½å¥˜¿t >>8B]?sa=Óñ¿M»Ð¿MN¿¿l(_¿d›1¿kM=ñ0=eN>gu>nqü¿~k>‰Ù?v´?Ò¼²ˆ?jÝ|½½Žð>\ñ¿Kà >Jý¿WÖâ>9±?‹ñ°>~û¿vÞè¿QV=¨¼h»v‹¿n~ˆ>L0¾qz½Š@>Ùã>¥?‡»d?Ô*?€@y=êú.º=êo‚?‡[ì?|F;‘À¿ó~Í=w&P¿Œ@l?Ì=ò†<Ϳ?‚yÿ¾íù‰=Ÿú~>!'é= þ=d >Dw<Åf`=ÒHX½“OÔ?IðÈ=ô Æ?ˆÌ–?k~¼?ˆ¾|?a =¹Ž?ˆô<- P¿wD>|0?ŠÊ(?XÛò½0?ð<ÄÉø¿}®'=Š|½ü¨?‰(Ÿ>OÅð½N¬¿ƒ˜?mÝ|?U~â½¥8?ld¿UFÉEÄä¼"äp¿”’2¿ˆWȽ–W@=@ÄH½–°œ=ê= ¿òâ?Š© ¿tÂï?:v¿•ÊÔ=&º°?u/?ö¦÷?q x<ÚtH@ª>=Æã²>íÔ=ችóÒ=ÑOv½Ž>¦=¾S:=`Ü?医¿’ã@½Ç×ä¿z6Ì=?´?BÒ<¤å8½Žr`?ƒeÄ¿øÉ¥?Oo =[‹Ð?Œ~b½†Ö>¿t¨×?ž=Ä`=E ?‚==ú)½†‘Â<þø`½'x¿Š\¿b-à?^S°¾5½‡½È?‰Ü9?glH@BÈd?vùÐ<¥’`?årÓ¾ Pž>É„?.9¿|Üø?mÇ0=U0?ƒ±H¾ä+ ºÀ€=¤ˆ< VP>,ûd½žÃT=Ÿ<Ú=TÅ?y­ ?}‹-?}/·: ¿uõ¹?Zl‰=:w\¼´0>m®?ã\ç¾M|Þ?—_ë?òÕ½½tš?}@@¿’ù.½§–ȼÂÂÐ?}:›?hñ輚0¿a‚?~;V¾®ø=ÕÊZ=åT¤½>Êà>-c™>_]q=_п†îS¿g m¿gŸÐ?‰3ô> m?“|x¿o=ñYx¿~·¿p°?Œ‚\?–ê‘¿{Ó–> Z5¿qD¢?‚ݼ¿nŽæ=Ä8¾íˆK?ާ=Éçö>9Ž>2)½®¡B¿^äØ?•¢ö<úCà?‘½Ú?ˆþë?#ÊB?ii¿>Ó¿u_\=Û¨È>c­=Y—Ô=,´@`«?]šÃ?dN/õ<ô$ð=€µZ?‹È¿ãv£>KL=[cÜ?†Œt@ þ> Ü»¿x@> ^?ûú¼jà½ÆnN¿ƒ¾+ ¶>!Î=„¿eSÊ¿‚Ý¿>EOŠ>.¿€ž=] ½¶ÜØ:ÜD=ÓS ¿i²¿fË=P5ø?„k?g*?‘Ô?HÓ@¿[ü¿€XF> dñ=Žêb¾|š€?Š +?¾à½TJ8?Ø–¿|£¼?‡†O¿w%™>Hg=ë@;|G@?–Þ¿qå?ë:.¿y‹,œ?7Žˆ?pT„@`?†C¾X꿇ª/¿‰ûF=û¼=-:¨?x¹Ü?Œ½þ?€-9?ƒ ×?eY>ã9t½|:¨¾k`¾8‚;`^€¿l è?>ÉÝ?}%ð?r»à?y:z?lŒÞ?"ÌÔ>:p?Žr;Üîà?_l?nœ?oúZ?6ø=;¦¸¿-¶ì;ݾ =ãñî=ŠÔ¬>7?”=²p>P~¿jµ?‹ä>,ËØ<5(ð?{k¥>:Ъ¿Sp=y^è>Q1À=Á[Z¿c5Ô=s£˜?Sh½@z¿zÙ7½ ¼¿AƵ> D?p“O¿}óc?lY=¢ à@ó=c=ä<ÞŰ?„õ¿sÐÆ¿æ·«?sÐð<B0?T¦|¿7è´=ш?•}6=°ÿp=jëœ=À濄:?‡äw¿HÒÇ=ÀoÒ=+>Œ¿lû0¾¤<¼b0ð<Üt½zx=Ô7R;8œ¼CK¿s@¡?„¿…˜œ>" ›?h ú=ï?X=¸Ú?un¿q‡H?…kÎ?lÆw?ˆÌ¦?bÙ\?ŠQµ?„íнïú$>o4?x4¿„¯”¿ïìó?€N)?‹’–?ÿÎi?ŠäؼK̰=—þ?{ý<=‚ɪ?Šöž¿vÙž= ä?2¿´™±½=î<áeð¿g ¼ƒ½è@«Q¼c:TZ¿’X¥?wÌØ=z Ð?;bH½[p=ÙÖ ?„S?‡©ë=†Jî?d‡Õ?yY€¼‡ÔÀ?r6 ?ŒÛt?•ʦ=Cˆ?çòv@=S¿rnN¿z1†=)(D<Ð(à=•e"?u¹T¿f‡¥=IQ°¾¾N©?|…¶?ui]¿]†»?õ§]?økC?ƒ•9¾Îó$?mÄ’¿‚5˜?^¡¤¼ÂÐ?ùðØ@€òÌ?„Ñ?q6N¿^õÒ½¼(¼wp?ˆÆ¯?‰õ=Zv4?†¤?€a¿p9Ô> }=å”?t¸ò=î˜F@˜º¬¾/ê½õÌ?öP,¿iú¼£X>ˆ–<¼ ?”°µ?·x½â@¿ƒ—ñ>ƒ³–¿w~=øØv=Æt0?—Í™<Ñ}˜=”¾X`¸?Ot ?}£à?™Ã‚?‹†V> ÐU> ܼ‡,X=5ŽØ=š9¨¾^s¢¿ebÐ?‚B^;.À?<ù(?<¼ŽîÀ½ƒ«ô?Bç8¿pÝd½A°¿\@>&S?|¿ê³U¿o3 ¿]wþ¿]Y_@Oî>C‚è=ºÔ:>$ƒù¿^î?‹ž =dë=Q½@¿nûW>8M?2·¹€?/ÿ?žM+?‡zG=ÆÂÞ½¡¬Ú=ÉH&¼ðO¨=è½묿Eæ?e6οTó&½ÊX>¯»?7‘¾¯C?}mm=(#h>Làá?(½$SX=”Jd¿yh6?“þA¿z$ê<ö¤¿{#8¼¡@?‹Ý¼¼à½&B?„Ö ¼Õ¾O%Ú?ts.?‡N¿°©Þ=ááÖ¿eXÚ=ЕÂ?ÿ¬I¿-퟿ð³=Æv¿Dˆ¿{J=Z¡= ›h?yíé¾»þ¼ÿå<ã¸@NÆ=Ÿ©Ú<×ø?öu&=¶/Ò=™p$=<÷ô> Ô\<à%Ð=…q¿^s:?…l¿‚ƒi¿‰j?¤a>)¿eGg»â@€?‡^Î?zµœ=þýv¼µ—¨;Øo`¼+À?мä^H>%Èâ?†g)@¸,½;?¾6v¨=­Wˆ;Óe€½«Ÿ~½I ä=—V̽ ít½â‹ @‹?w1ò½‘ ¬½ÇU|=@L¬=‚X†?ø¸y=$(h?„¤›¼·˜?ˆLÐ?Tz¾)w`?tP¨=´u$=¢á.<ªßÀ= iˆ¼Ry€=VXh?w¾er½°Å¿…Ü>óœ½ü?k ¿”$_»ý% ¿Rb=pIP?ˆ ²?XX ¾![š=þÞ¾OÌ?ì£ ?|S•¾žŽ¨½t T½"«\¿€ôH¿“´i=%ô\=J’à½&ü=x¬=¦+f<`ð`¼“×À¿sE\?dàN?~烻_oÀ½¨;}@?hº¹çØ¿=K&¿}B:?ƒÚ3=Ñlî?ø±å?)ýõ?íg_?Td«=Ô^È?PÛä?…´#¿OJ@û2h=¸4r>O‡¾¿V[É=Ñ`J¿SòF?†Wt¿Y÷°¼h]p?‹•²½”$,¿n½x¿‚/¿vµÀ=ºì?‰Î‚=ÛÑ‚¿k€Â<è¨=aºÄ¿v*q?—6Ù=Å)»ˆž€¿T´D¿}ÍÜ?ƒª'=êGb?‰ã¡=gäè>Q®> z9=ƒ_n=&Ü¿iÔ½'À8?t¬c½šøÀ;N{=†OÚ>*¾Øà?*d?b¶4=¼Û˜?l£ ?‚_F=Òúö?F¸r?>ßa<Óp>ÿG¸¿…p”>/¶?pÞÚ?‰}Ÿ=ªi¿w‘ ¼)áà<ÜY˜=ö¶Z½úA\<%“ð>¿)ª½là ?ÿé=‡Ä>ä“d>Ù> ç¿]å^½ÜÑH=žŠj¼Û0(?„ H`¿ˆµ‚?{ç!?Œw¢?å“à;‘o ?bj]?~ C¿wn?L4d»¼ =WÐ?eÁB=óäÐ?`¿zó½80?=H´¿n ?„Ý)=&Ù”?s0˜?1æ?øyC?†°A¼ëfð<  ?òË,À¿qiÀ=†„?dŒ¿i€½ u?ïÇç?„²¡¾ˆ&½ü´½ñd=Ú‚Ú?ˆí6;Ù€=œ”=+O?zÞž¿eû½™(Ø?P[Î@´Æ?aM¬?f( ?‰üª½—È?}é\¿âÃ?bC½=õ€=¿•\¿•?‚­4?OV?r¼ª½˜?uG ?{û¿?…¥&½BRø¼J`½(?‚Œ¨=nÀx?q–:?†Á?Ûí?XÁ?ç÷³¿w÷†?Ö©]?ƒf@.¼e¿~(y?ë…t?ò†?WTY<õ˜?r¦?ž¿Šs’½Á>ÅN…>?µ¼ÓKx½Ìk@âh?ƒ}$¿ŠW¾=¶ÿž¾‚¿b©ü?žP¿ŽŠ>¬À?’xÄ>Êë=@üL=çpü¿]Ýq=è†}?­.î>"¿hê¸=Òp¿ãfí¾Ø@S=Ù­¶¿á+¬¿[ Ô=6v|?‘ì >J}½>y>(N(=ËãT?”Ëå?ˆ­¨?‚vþ>,ü ?z©!=ón\¿eR>7=ˆä»O?‚ï¼¼î`>lä¿ñÌ®½p¨?ŒÐ¼S¹?fæ©¿]}l>(Å&¿tת¿P¿l»å¥`¼ßu˜¿xX½Å=×(?‰2=d8ؽ¶ ˆ?`No?„#?ŽCw?‰–À<“~=5yÜ?“@¸¾;‹=âL8¼w󰽿J𽪘¿†K<=Gé(<ÞèØ?‹ún?2ê_¿LJ=ËÕ†?Ž$j?‰ßc;Ž¥À½…7¿{8|?†k ¾æ1=1E½½°?÷ÎÝ@="»?ä‡u¿±~‡¿Z¡R=£`½ãØð;B‚=…±æ½þ(„¿€¿în¼¿vÂ+?ë2¨?gç˜>ûؽ’f`?_¢9?ig»<öd ¿à¤?†œ4?zÄU=¦Ý½@ªx?pŽ»¢½à= r=Ævˆ=Õ¯Î?ˆÊ«?kD.¾aÜ?Rx޽F¾P¿X=¾¡=m:¿t²Œ>Çz½w4>žþ¼5¼ÿÓ?÷ >ü¤?ùÏ¿…žnS?|]õ?Ó}„?éuš=R’ü?Lþ=È ?¨‚½«½eøh> J~½ }d<Ãà?öÜ£¿}ý_¾Ã<½ð$?V7@LŠi?m‰O¼÷qÀ?o a<9”?€xò?ulª?VÜ}?{¼½O 8¿gbë=îˬ@Kb="PT>Ùn?„Œ¼¾?F¿q7½˜š0?‡l?y˘½Œ…ü¿³z»)7½yÛ¿‹0=˪„?„³u=¸­B?ñ­?õâ<ʵà=ü‚¿|¹6?OmC?v2#?BqH?öþM¿yiEÉ ¿OöÛ¿q‰†?€¬š='˜¿oÃõ¿ì¾\¿î¹¿t§4=æ¥ ¿‘V‚=þb¾ô‚>²c²¿m\=Y3Ì=ÝÊ>¥%>aýÉ?e¿j?‡§\<û+¿fШ?•2¼Í×ð¿oJ<ÌÒ°½~>ßU<ýê¿g¼¿gÇO?‚8è>f ½ÄOпm=Ýä>lTÇ¿nò\¿@MÄ½ŽæÂ¿{Ê?áç7=ÇÒR?qº6¿dûö¿‚;³¿q …?‡ÿ¶> ÞZ=¬ñ‚=h¿u?ŒÉ*>ຼ§è¿„7­?}=ÊIº>ö?ôNW<˜Ø=®™Ø½ïÙ¨?œY?‹Ià=ƒZ¿i£‚¿^z@?tL½Ã N='FØ=›ôø=0=úi?€w“¼˜*p¿€:›¿a©j>FþO?Z(¬BåômAO#(¼´dð=œ¿?…ê÷>âÕÀ<å4à=‹À.?…Ÿ-½Ä>!?ü¿qzÀ¿™;ѽÃ$ž?÷=»F?KR>=#D¿«½¦?ih=ÈzN?ƒl‹?zû<»á@½˜ðt<²E0=æ%;€?s,Ê=½‘:=º%(?ÞÖ;¯0à>=œ½Ž*H¿lžþ=œ³½2Q8=&Î?_:Î=†–ü? ö¿o´?Tê?v>É>]Ï¿ÈØ=Ýl?‰¨¢=kFD= ^$=;8?ˆ>»Õ§À?šÁç½ÊȾ i€¿jC¡<½T0¼ÄÖˆ¿g]Â=K½?Œuô>‘:¦?ƒi ¿- ?Ë9ǽñ¬ô?oƒ^¼ ½Ž“¢¼Éð½ƒÏz½¿lºT½åW†½–ÿ¼½)t¾ ÿR¿qTc?úŽƒ?zÉ?Þ‘¡?G¼ú?ŸG½Qþ`=£ú<0ð=¥bZ:¼acP<@=òœ€@Çp?ƒ‘a?_Õà?‡ƒë¼‘x>®½ñ¨t?cd?ò#=4Ðü?u’€@iE?‘ì=Æ:î½® °?d)þ=çiÌ?mÜ?9²?…ŒY?޶½ Òx¿Œ½’¿Õ.æ¿h§Œ>@V=â~J=“h¿\æ<>.–¿ˆ›> m€?—º»¼5+@¿`G>×|>*¸?Êš¿POR¿†ÔÁ=@{t=N l>V4‹>:]¼­Ð=þ§ð="ãð?vuy>Ox?ÍŠ¿wYº¿k60= 6è=À"ä=òzÌ=ë¤=‘DÚ?€t?˜°?k2d==Äè=eú=¤þ¢?~4l=˜2¤=qu¿ih=oa0?Ž,c?#?x`þ=4ò ¿„^Y¿t²?‚⺿Qå,½IÌ¿ŠòT=Žst?„7۽Ķ<º¾5_P=¤G =Ç€–=4Ÿt?„r‡¿V7b>þ)>Ä?íÍî?ey=¿[¼Ÿ00?v% @ÆS?‰iÁ?d× ½,ï0?€;*¿]î§¿ll²?lƒª¿„¿‚!œ>E£å=Le?€Ï•=¬Žä=Ê€?€þÈ=ƒÖ$¿”2ö?wzæ=z9x=;à¾"Ø?‹]‹?‹ ¿lJš½=Ñÿ$<[æ@=†kˆ¾¹´<Ï ø=€|@B¼¿ŠE8?Šg‹¿@ç=›4–?Hxê=œ$½Ð¸=± Ì?g¢¬@o@‚»;½¸T~¥!½“”4>Aè#<Ý8(=èþ?‹o@òؽ<¾¿kÕ×?j²P¼ ½À=ŽŸ˜@'¹>1<ã?€Z²?dvN<¥Ò@?|Ì£¿zÂ|?‰ßνLBø¼úʘ=¥¯?Ìc¸=ÏÝÞ?t' ½ƒ£‚?„|?‡g?îRC¿ìûHá?‘ü¿ˆû‡?ooƒ½ ?´Ý>7èù¼Y €?óé?ý,?ˆo‚=y£¼?T$t?€o ?nlQ¿tEa?ü]¸?xtæ½¼¦Ø½à @ =Õ³v?€0™?‹o½“°>#=8 Owø>„Ék¾Þ=›ë"¿Oj½çû€¿q%»¯@¿–¥(¿q&ä?ޝ <×Ð?‰F?*‰Ü¿è$ˆ=g6ô=ôÛ*½Y`¿]56>56Ò?™<=È9´>µj>i’~¿‰}j?Aj?/W>$h¿òÀ =c>¡½YÜ=yõ,?ˆ > 3ÿ=¼Î”@ ùƒ?kÛмŨ=·ç*½žàL¾Uâ?‰¤œ=¡ì<© 0¾ŽÅv=cä=–¿¸?ë†ç<·Ç€=úñn¿Nqí>ôp=üð?•ƒw»¬€>„l?ˆ#]½.0¼â Ð¾('p½î?‰ Ë;gšÀ=~v½H l?œôh<ßK= |X½ÔH?}Ö½½R%˜¿s_?~¸È¿dÓ¿hϽÝå½k%Ä?zÃÛ?J¿ä=‡&=±¨P?ðÌù¿tT$»òVà¿_°;?…lx?‚ ¼T˽š°¼U¶ð½„Ãö?rMv=>À?a:j½ëÍ,½“Ÿb¼ ç@ÀK&?xõJ?]ÿ¡?A±¼½ù?ЇÁ¾ïfc½¥œ¢½åÍp¼ÁÄ(½pñ¤>(ƒr?õ7y?‚{ô<¼B‡žæBZôd@5Äi?†•5:rú=Ø<Îè?s×ò½®<¿rºq=T@ ¼©ÙÀ?I¡š¾j@?Ÿ#×½ƒdl<—í<åð½v]@?tù?Mq¹?ßH=b’T>6´ò?€ý†?{Üz=‘;Ì>MÞ?ŒÙ³?iD?}ÐZ<@p½‹ P¿W@b=‹yP?‚Ji¼çŸ¿måÆ?aQh?q_”?T"½º?„Íš=ÚŒŒ½å ?X×-?d&í?iþÔ?xa ¾(8?m˜v?c"†@ªŠ½E?s‘?p$ÿ¿ƒ.ô¼æð?ròt=„ <ûà?r¤À?oü?K4?‚³“?o3¿y"ò?zÍJ?.É¿‰*´¾2÷Â>‚¸¿bÛA¹–’?nö>A:•¿j•Ç=Ó„¿Gk_¿kfü?”æ®=ßhÜ?ˆF=H©H?“c>_UÌ=ÖñV?‹â=ÐdË·=²?ò¿W­¿x@ë<¶à=}l?ù,‰¿ƒ R?€ 0?™ ¿t/š=ðÉ–¿i¬¿†êr?€íx?gK=ˆÉF¿Uá¢?€Ä”?“£7=å)ø=Šs?}š?ŽÜ=£ˆ=ËN¿aؽ»qô¼m ¿2h½Am‡4¾N&Ž?}Ì^¾+îó¿‰^?dih?¿5=»Þ½Ïv콨Mô=ãyø?ë¼:Ù€?„™?ƒ¨¿llÌ?…mq?(UN>9î 7P¿‰ˆ#?ê =ÈÚ=Ät<ïWà=Â?†Do¿‹ô¿?tr ?9—?Ž&Í?Œyµ?q9¸?ü––@œ¥¼É*?zÙ¿^9Ã?uŽ »ÓÈ?bJg?ƒ ½vè”=É옽ǰ?°= Œ¿Qîw¿®í¾õ <H ¿{´»?…å?^f¨?nJ÷½2–h»PH=VIT?@¿L¾õC?~‡Š?çS¬?”€Ö?©à?8E?fÀ?JÑR?¾'ôC?pQô?Ž•X?t™*¿…–%?òü½óp?kõx?P#œ¿‡hQ?‚­?{ªi?—û+?ƒÆí<Ô–P?PdÌ?k^„=cÄ(¼ëOØ=»H’½ÆxÀ¾X¿}?3B?q¡Ú?ŸŸƒ?ƒDü>åë?X>²v>wC¢=¾(†?‰J~=ÉÀÒ>¡¼¿n[Ÿ¿[Õà=d†°>Àš¿òõa¿ŽQ ?€2?s¾J?‹ÿ?‚Æ >DàS=Ôò<½'‚>d:¿|:R?w¤Ú¿€w¿>S>}-š¿t€G¿DÁn=x´?ŠÚ ¼°¿YЃ>)S ?A°–>*˜¾¿wÿ?qŒ¿€J?‰ü}?‰K~<—©X? ¢>,§Ì?€Éß= Ò0?~øx?‰šì>M˜¿Zä+?• >±Ù=ví =ä÷N¿mû‚¿;{½j¨Ô¿i°y=‰½ª¿€‘_=•.>2Ê®=¯Ó0¿’•½”¬²<P¿‰#<÷—¿ˆ,¿o»?†Û…¿yùÞ=4 |?Z–Ä?tô±=0ë`½ŽÌp=Ã:²;ì  ?¾“¿~Ÿ"<ãçx¼ûà¿u2ê>h =‘²?„Ê*>*.¼iР>® B¿ãb¿‹:?Q8;=Û.F<ï‹à?N½/X€¿nÂ-=WVØ?ƒð½×èŒP´?q$‰:™¿=0LÈ?ý¡À?‚¼z¾%ÚÚ=5†?€¢®¿‰k½Eí@?ƒö¼Ù…€;öÖ ?ývJ?çûÕ=d½²^°=1Eð?g‹i=BY0½È·ô?‚mŠÛ=ÔñR¿Iì=rûx¾#¡È=áµB>\VR½Æ $¿HæU>6áW>op<¿b°¿qu½>iÚ&>H”ÛÀ‡´=÷8 ?ƒºê?ƒª¼“5>-LO?`–%¿Ž,]=«$Î?bE]¾,¥½B8¨¼Ñ|p>=!ò½Õp?ý”Ÿ?S¿{µñ>mŸ=«(L?|7q>œË$¿ƒáÐ?Uÿo?tí‹¿eíÌ<ýµÀ?8öõÀ?–Ÿ¬=lzt¿Zrf=Ñ6@?gv;=ytè=Iª”¿c¿e~=èà?’Îe?‡z›?…ö<¿wÓç=V½0>µ5>E÷¿‚ä¿{‘’?rå×?øB;?e”h> Ãù?V³Ü?_58½£¼ˆà¼ £ ?›U ¿fx?‚‡„¿zB=i]€?äì?£Ú?„‡?Š…S¼úSÐ>ßÏ?w‡â¿w£$?{r¿U·ð>kì?†æ~½-¬½‹½Ì?~l=?Ý´;úJ€>è9D?UEâ?‰l=rÀ?ý(ƒ=aà ¿„b>q¾6+z½Sœ½ß+´?‰,?€Ñù¼UÃP½ZD8¾µ‚ƒ?HÓZ=ëØ¬?}r?yF?ý&$¿Œ˜è?ÿR3=K\?ð^§?U0¤¼K½Š=D?”M¿w p:£Ó?üWØ¿Ž_¾Ó?‡˜†?v/?n?Ì?iÓu?^Ž?ã´¿„|®?~Þ¾2)ª?j³õ=øt ¿Q9>alØ¿„¡æ?­ö?¿šj½ûqˆ?Y*?n»3>4v=Rð=¬;^¼ýpð?ò:?Qˆû?X=Ò½cº¬?ЉÒ?-[½=¼w% ?ýþÀ?€ÑÍ?Ú?x¹f¿|©â>x?ƒÝý¼™,h?rç$?Y²<Ø~¸¿vµ½Ý3Ž=O>`>²à;7›€?ƒ/¼¸ÊP?FOð¾ ø?u$Þ?¡Ç>¶?“ùÐ<.Ì <7°=ù[ˆ=J爿y#Á>Ä‘>í´>VD>+Tõ=Ñ„²>tf=ÅÀ>.s\¿‡;M>Aw¿c"Õ¿d ?ƒÂ(?… Ò<~-°?’d½]L´>e¡”?€ÿÀ¾V°=Ô=÷ó[?ƒH=ú«¼¿W; ?Žb >\}c¼¶Ñ8>=P¿~ùB½d:?„‡Ÿ=f.0?ˆËÇ<1sP;ã@?í.“? ƒd¿’yQ¼‰^ø?{?I›â¼/±@?TçX;&Š@=†!r¿d‘Ê;·t¿…ï<Ÿ§ø½ä«Ê<_^€¿ƒUá?‘YJ=Î)¨¿†á›?zàW=¼ ˜>”Ÿ|¿uß¿†˜w¿-¸½UD¾ÐZ3?”ÏX¿pF$>“D¼Ôh@?‡ûø?dô¾}²¼Í ?ƒ¢¸?ŒJÛ?ŠŒw=þWP½•X?uµ= ïŠ?túp;íÁ`¼€É`¿Qm¬¼tî ?ˆ(ý?/ºS?‹Ø*¿d©:>d&ù<³0>y©?öÕ\>o?v¿_/˜@êj¿l`8¿ˆ"=öM¼ [½èüL¿†ÃA>IÿN¤;½¥?„=·O̼· °°i?…Û²=/^H¿H¸5¿f(P?j‡¼¡ ?~§¿‰Ø?ó=œ¿„Ç:?jøŽ?¾?†%Õ<%â`?RM%=/ÏÄ¿g7 ¾W°?h_=ÎJ;š@½=†ôÀ(X?q×S?ñ@C?C…¤¼| 0?€ßp?8ž>½ô z½Yà¨?b¾´½ ²<ã¤p½IL¼¼9?•¬?„aw?yÑL=NšŒ?‰òˆ@G¹î?ŒÑ?–º…>H;†¿_“ ½=è=ºWr?s=-=ñ‹ ¿_ =?d0=íòd>8çY¿O§¿s¤v=ÂþÞ¿u½Í`ô=‡Fè>'¿\>Ÿp=XÞ”?œ„˜¿ŽWv?Õ~t=É„^=ë8=®ÚŒ? Ào?‚ë«¿[—®>)½q”ø>2 ¿P!Î?¢=;½®&>5Þü=L½);Ð?…1>)aÞ¿0²>yÆa<¬4@?ÈHO>Õ¡?…¨¥?í¾Ð=ËJ>ë¿‹Qæ=Sé?„ö5½J¸¿M·¤?¶Q>ü=œ[æ?†¥G?_Ãà=e­X?…>Ý?ió/¿Âï?ƒ™T¼Â@à?„Ë`>»Ü¾ø¾¿o?~³¾g/B¾íg>lR?÷rß¾ø]޾×p»Ãõà=®ú2?“ ç¿q…¾a¼½m1T¿h =×Õ|¿ŠS =ÅÆ¶¿€í„=Šd®»Ú¢@=¼b>ÓÐ>3­(<z€¿bL>?‹^;ã `?P>f=Kˆ=ÕÍ\?aù$¿~׉=§±8<°7€?l#“=ì˜è¿}ú`?tpH¿|˜Z8?ŽÌ@?޽¸?nI£½5Ú˜¿Iuœ¾AŪ=Ñ£=߈½¬ü0?‡jí=¡ÌŠ¿xN½"g(½ùŽ|?„ÿ?xç°?ˆ][¾%óмÃ`?ŠÌ=µ'È¿¦Ð ½¦ÀX=½Ið¿ŒCÓ¿gó²½¢=‚ü½Žx¸½'àÌ?æðL=ûÌ¿é6½‹z?e¾J¾:¿’9ô?†´¤½{Qð?‹D.¿SF9¿ƒ`ˆ?‡û ¿mÊ@?lJ =%äl9I¿i¼ŽÀ!Ï=¶Ïp?k…q?±Û?€ˆú=ý(ˆ½Û,J?‡U³½ºçÂ?‚gÄ?|Íá?•öª?_š½(= o,¿[ÍÖ?{üð>Ý`½Á0?Œ¹i½Ÿ>þ¿ýD ?…¿sþ½¼r(?•Å»$ÿ=røþ¿qq¼>2Ö¿Z‹³¿t0¿x¡?‹,\¿R§> h ?ƒ¿f s>™=úŒ=ý—Ê=RŒ$¿nKÁ½¢£œ¿ƒT>=kxœ¿ƒ9F¿i<0vÀ?Š›È?¡ ?‹MH¿hª3?€ßË»Fõ½œ…Œ¿Z. ?ò?@>ˆz9>Y>/ö°?^N?_¦¿Y˜?‚‡p=ÎÜ>vÕþ.0&¿{ûÒ=ü4=ö6ê<«y ¼•œp¿‹èê?&Ä?òaÀäý¿aeR½¼h?qã½úD=Õêʽqñ8?m²"?ƒ7 ¿Z&Æ>ÇË?„8®=‚&Ľ~à¿uî=†jò<ˆ£Ð?r銾#¾êÄ ¿rü®ßà=iÜ?OQÖ?M[ ¿^„?}¦?hXx¿š~Á?xE=·(¾?r/t¿.m«?‰‚D> í4?cÇ?ôZ±<øà@½iäè?ŒZé=¡SÔ<Úçè?€ î¿lN—=7l=s¿ˆ>—o=Æfp?š@V=cãH¾ å?“ÝE¿„®[¿fh¿…x?mJ;?‚Ø«?wú@³N<òñh?Ìk¾Ž¨µ?ìš=Ï¡ì½ÁdÀ?p‘;¶€?‡ÂG¿kw$<ŸP˜?f¡æ½h·˜¿~O7?‹{%=îñL?l7°?€ÞÌ?‚M??Œ°®=×ôÌ?h:°¿Œ¤;÷p`=wqŒ?^×Ã=EÈ?‚o¿uEݽÀ&R¿‘ ”=5è轊õ¼«00¿‚ «¾*‹Ý½/ª˜¿x^¥?tÀ?7»¼N¢ =ˆå𾺮Ë?ü‚"?}/–?ìõn=üú?³ón½•œ¿†ÚÜ=†O@=_ëh¿}¢6?†(¿‡áò¿‡ë˜?„¾Ù?Ü.=?…‰ì¿‡ =¿ð¼Z­À?•kQ?`v—?W8Ö>¤ ¼ÈZp?w6@0³?Ò6<Õª?}Âü@âæ?gV¦½Ï®Ì½ N4=Jô@?b˜½4—˜¿ü‘?ÿ…ê@鉛=l7ô=F÷ >jt‘¿ƒ.5?ŒAw¿t…Ê>?¶­¿ps5¿háò?“¦?Œw?™4W=½n¢?³f>*~­¿wq=ó>V=kzÌ>+î?´ ¿l@–>[²¿hLÄ=†<à¿eB> 3 >ùv=“IP>*ËÏ?Ÿw;?Œ€{½H`à=†ò> cˆ?‹1q½ty¿yB†?“M¾À.*?vä¥=἞ùÀ?„ZE?Ci¶?‘Ù½ÓâP?‚,p¿2v>å=T?‡oÅ?{ä#¿pc?c}¼ û =Ç¡=•ø?wT?lç=Å&¿y?œ<¡‘(?€Æ?NP¸?Œ&ú?tò^=ÒÆŽ¿í“?Dò˜?‚¦?w=Ð(¾?‡}V>ZêH¼œPh?€l‡¿Ÿ$ê½TȽíÑ=… >mŠ¡?‰¤Y¿‰`Å»nÜ»‹V`¿…™ñ½i =£·b>Þ?‡Îo=¸0ä=ÉQÂ?Šä€?xý=w‚=挽V˨¿]®ò=¹È?p&†¼—Ü=ÊÀ¼ÜKð>ò=ö,=È d¼ü&p¼”p?’2Â?k…<‚V0?†÷;¦>À?bŒ=°§<>$€ß½æÀH= - ?‚fm=ך?L¦ ?„ée?Œ¿=q¤(¼,r ?{ù­¼ìäp?g»=$üÐ?Œ÷D;½ä ?ˆ0Ì»?‰Y7½pÑè?[L?ûI2?‹o[¿•‘%;5Ö@?(ž4<&€?‡¨'¾3lz½‘¥Ò½¬`?s/¾l0À;hÚ€?iå=€è¾ x.¼ñÄ0=ã¿–=€y\¼Ê;°¾H¨€?]À?€¥™?Y"æ?d·?dTÌ?óUœ:®¿ŠŸ…AWÂS?›>&f¿W‘|=Y$l>ù>=ú=>G0Ÿ?ŒóÌ>ˆG†¿âŠ…?†¯;¿¨^z¿Ž R?|ãü=ÓýÊ¿O8F=Ú$š?ª>UÕQ¿Æ<>gy)=×ÎR=çž¿k|ý?Œ‚°?‹Ýñ?œÊ½0Ƽ>$°=Ø5¿uƒ$?}¶=7â=·Ö>VS&>uj¿ÿnÑ@8}â=ÑïÔ>‘Âý?‚c?öy“=„À¿lÁ!< ¼=æ©h=À­ =Ń>=d)ü½1®H" œ<}Ž ?Ýöê; ¹€¿lÝ÷><,ò?…”/?S‰8¿è*> :_>2ÁM?=—½Òs,½xöd>=ã¼”²`½g?‰ùä=äèZ¿j‘Ã?…‰X>4¨»Àg€=°Œê=¤ä?4¹ ¾ù.?‹ò>lþ›?ZuÓ?zac?ƒÓÕ>]ü*=D1Ì;¯@¿š 0=‰\¶?„`?ƒªÀDR=ß3æ¼Ò€¿mÇ=–1t¿‡^¿¿lH‰?-2X?h7À>4±1?`ÜØ¼€:h=ðNŠ?uÿº¿l}%?~¯X=οz ?c\:?I‰´@FO¿Œ3½£¿²½>z@¼Z– Àç=¥Ò@?KÔv¼Öð?ƒåJ=ˆ*–?t2)??{rY=q¬Ô?¯?T›t=ölæ?}r¿y~?yåD?ìL?ˆ[?#X½ªº`?„C¾\ÔD½”bо†_<<®Òx?}ü,?€Yï¿òÍß?r—c<‡Ëh?é»?u.ò=©K ?qɘ?x§½«ÿ<¿i»ø¾Kóx? J¾^¿â=Jû(?|Þ½#Tx¼üÊð="¼?‰ñ?ƒåg=S2t=‰•J¼¥ÿà¿~i~½,U`¾•ߦ?V2_=&Ý”?~*º¿Žûl¿8Ž@ ð?x¾ˆŠ!?kUú?޽½-ëÌ¿~ÈH?ŒJ`¿„‹$?†iª=„p(¿G Á=SÄœ=ƒÇ®¾2Õ>>d2t¿oï:=ø0(<>WÐ>°0:?Ÿæ ¾*Œ´8Í@?‘êB»À¸à?˜_ý¿W”Ⱦ‰0‡>ZÃ>_nè¿ñLŠ><–Û¿aO?‹ƒX=‰<ø>k?=…„>5ÿ&?x?Žn½¼ó×xB˜ |AÖ7Ó¿x›=ƒª,>ã…?ÄK<¾/x?‹%¡>Z‹j@Ö¿…Ñ^?ˆÆï?‹­= †<=fúì?‡ô"?]|Í?o ô=žõò?^–Î?*É?…ng>.Üö>*÷]<Ù°»íÞ`=ý£$?%¿a½Î?ƒCp<Þj=ûíÒ¼c˜Ð¿|Î?}²æ=ûsX=ÃŒ?v¿z©H?~S@=¥ÝÎ=ØT?t^Ô¿Øø¿s½Ð<æÄÈ?L>ŽKë?ƒZ¿mô =²/D¿l)Ù<¦¥ð> Ìr»K•€>IÊ0?†½‚?eÞͽœÙ^>EÉ?K?R?,É?ƒô ?mp?’?…‘ƒ¿ý ´?…'?ˆ»Ý=G h?‡ž¾?|Ó'¿ƒ d?Èb?Š ?_¨¬?‹¼¼“?‚Ãø½¼H¿xu2?Íþ?„H×?…Ìc<Ø×H½*轕 ˆ;`4@=g£À?ŽÅའ1h¿gN?ˆö‹<Î^ˆ;úF?r¹W?y]v¿‹Y6?lÊF¾ fN¿” ¬?žÙνL„¼>…Ã=É¡Š;Á€?‹i6;Tð@»H€?f)½®K¢=´¶Ú?ûX£?…Ïž=ËØ¾V—¢?í(a»ÑÀ=Ò"½}È?}œî=)Tȼò ½¢Ø?ˆr[<ÛQÈ¿Œ‰?‚# ?û?Óì ? Ȼ뀀¿ñ®§¼à)Ð=¸-Ä<‚­½Ÿãp=…£Š?ôl?ƒŒð0e†½D#0¿ä ½»jȽKƒ¨?wš= þp?¦s¾\TtBÄL¼«­Ð¿ŒÍâAòz}>&7.?ˆã?|‚å?€á1¿„\?‚ÿ.=·É=Ô£€=ìþ¢=>oD=\›<å (¿M^+=¯,x=³ü\Aè[ˆA¾’ƒ¼”>^G½=A"(>"+‘?…Û=r̤=µÙÌ=Ü­~=“òÈ??©×=Ñ>@=ú&¿mWº¿h‚¶¿e›S>º3ø¿Wí¥½MÝ=|ØÌ¿Ó~?/Ò¿_31@ºF­?‡?^ÿù=\ä=¿r6?‹w:>ÝX¿t>‚oË?[=Þ%T¿ˆÞ=ˆ´d?Ž8>p†½ºÞ(>R÷ ?Ž2u¼ˆ;à¿ åä>>[=)H¿på>OÚ?\¿>¼ú¼Åç ½9Ô=Ø¿N˜`?qGB¾gb>fu><¿pð?T9Í¿\5Š?š@ê¼úx`=Á¼‚ €¾Ž£?béâ<ÄÐ=Âؽ…¥ð½(´¼’à<ÜÔ =µ î=“†>G©Ï>B×> E¡?ˆ¤Ž¿[K?{`H¿^Ã3?{Î2¿ZÖ„½ÝBˆºÙ:€=°=aé´?sœC½ÿè¿…p?[”X?÷?q<Ï¿‹%R=ç&¿ƒ¡"> ãs?…^O¹Ñü½6Ä€¾! Å»±¯@½³p¿dä=uÖü?€¬‚=Kô?ßÚ=‚1T?o9¾;ÕÌ?…ÈD½\è?šÚ>¼¾%P½X?;¸¼Tq°?V¿?•Hâ?‡0æ>Uë?z •¾‰pý¾`Qn?€ó}½ª(¿jáä½µ~V¼({À=T<ÖÒp=v¬»’`?€à¾ °ä=…ßR=¼ŒY®´¼¢ =Å«˜½À=®_J< ¯à=(VŒ<6TP¼©Ù¾V½j<^U?ÿô¸¿ C>0å‘> Þ¼‹4`=Ôf,>?“z¿d!^?ƒåí?Œ«6?x,bA…»ÃBÂ[7?€ÿ6¿Š5¤B >ý=PÑ0¿Pð¿=¿î?«2|¿zŒn>`#¿€!:<=Ù@=,‹`=ÊT*=’L¿pèN>ʬ=¤º?’~Þ>KÉÛ¿ƒ¡g¿ˆô,¿U™h?z2 ?_²D=”Ö?pu^?XBÒ>WÂo½—ª=Œ_:¿[óÍ?ìj¿|Ò–=ÙÀ¤<ÚØ¿rÈú>&j?ƒnæ¿]ë2?•¿ƒ%`¿nÑU=P÷Ô<ù¢0=¦ö½C_=Ó|„=äÐ=GÄ»’?¿Nø‡?Ž­D>•J<ùlH=× ¼îM(>K•8?qÿe¿QnÖ?*;y@¾O×B‹jBï伪ø½ç°¦>-Ó©?m<—c<ª°=u,?m É?y3`¿_^÷¼ü  ?ËÙ¿mê¢?@µ<¿_×ñ¾fd¬<_x@¿s$‹?0Ö?ˆMæ?yäŒ?`°¾<‹&¼B÷p¿g>èÑt?p}ê=,ü ¾–¿y*¿xÛv> ®EJË?™Ï½½+Št>;´x?ˆ½}Õ8¿vË“=þe†¿k=+&ÞŠ?vQ=RÐ?Y—?vP¼ä\@?t'¤?óv=ÌAn?ù8ѽ/ X¾¦ˆ½þål<•°?”ep¿†ùt=|É”?P)0?„öë¿pà®?ülR?hÉŸ=H¶ ½xöØ=X< ¿dyV=±ÙT=:ÀX>µ?^mÌ?€·ê?dÖ> ÁÕ¼ø±> ð¾¼%:´ ?bÝ?€4É?|bT?f4,?xß?uÚ¹½Ä¸ô=—t®¾„)¿ÿ;µ?Z<6?iû¾ͽ=j6°?¶<]¿ ÏX>=\æ?“Kø½ ½ËUT;Ý4`=eÑt>aüò¿_¤é;¡²@=½µ<à¿zß|?•h>{ƒ?m°Î?o“¿nù?†¯z=ÝãN?ˆ S¾.¢–>Fm<Æœ?ŒÎz?eg¿s*=Ôõ$»£€¿aŽ?ŒÀF=˜}Ä¿†Á¬=µéÈ=•l>!=“­ ½v¸>1´¿z#¦@J8<Ï(༿‰€=ù^P> [\<µˆ>G¿|©Í=z«AÉ?ŒPh<<Ð=c"L?€ô¿‡Û@?Î?‚ €?‰ ¿?…ˆ¾-§ð½ ?‡·= Ø´?„N?…`Ü?šú=žT¸?p#Â½ÞØ¬= D<¾¦à¼m°?}`h<Ÿ°?e"„½¹ç¿„°b={ = ¨?ƒíî?Z¯S?cM‚¿‚$á¼¥b(½€è=©—Ƚ ؽ¤o>?Ï÷½-±8½åbؼMΠ¿r5°?‡{j¿~>`¼Ä̘?¢É»âîÀ?M#?zTr½Á»B½žŠ?gNv¼¢¿P?Zª<±¸ð=” ¼¯ÇP»I€?n¸Q<Ë@X<ÆÀ?_‰ä?é"¿w9»¢åà?¢ó¿|oh½¬Õ€?Ce½“¨P?q6p?_ ¾l`¾ Ƚ§²¿™ê›?CVd½“.0¾/’8¿‚:.¿o-Å?|¾Ê½^P½?H?nÌ¿yã±< Ü@½˜¨ ?N°C=‡]eˆ<;€¿‰ÁÒ=ØØ¿r"|?zƒd?üÆ?ŒVν£¤?a–=”¼î½©œ@!¯?mLk?Š:ë½PÈX?öÜK¿|Sž?r€hBA5ú=#4„¿M  =Íš(?¤$¿w+&>9 ¿]‹è?ŽàØ¿g–ž¿iÑY¾‡{3?/ºiC> (å>waü?óò[?ˆ@>ñ ¿_‘ ?wµ—?’/¿ZyF=à-È¿½h¿TÆ<Ñ8P?”ËÞ>déô>%ÝÉ=Õ†æ<:ð=Õä;þ( ¿kZ?÷;?‚fã?ˆÕ¹>d¿=ó.=†¥\>&²¹?Ž.Ä?…ʽ^Õà>Æ<‹y¨=åø=¾4^>3ÎM?‡&ó¿Ëó?Ýݱ?ÿÁw=ɬ=ñæ"»×À=£(Š¿[VY>A&‘½õRø?wNò= /X=ÝHø==Ç4<̃à½Á„ø=ŠHv¿”1”¿mµ½§p½{~À¼†¸>.ú«»wV<ÚÁÀ=«…>¿~)º¿Š–¦?‚ó¼â(X¿yU¿Š=¤¡$?x² ?ŒOØ»þ  ¿xÕê=´™R¼˜P?x <©°?<Ã=ëÇ¢½ÁL½µ%\¾áän¿ƒ*2;Äc`=3=\'Ð=ÎÆÄ½y3t?Žï>/iD=Áš¼½Öc=Šd=dÄ ?Y;¾=YP?cÅG¼B‡À¿—²I½xp>DŽè= ¡(¿~šË?ô®=»êF¿_°ž?mÉÂ=?}´;‚Ç ?ôÉàºî~=µê–?î­Á?Œb1<€d?蹘?‡Ó¿@ô> Òüþ"¿}ƒÄ?t§ˆ?„eµ?`G$?h¸ï½÷n,½9¾?ƒsŠ> à?\Yv¿ƒîô¿•Öè=˜À ñÚ ?†|¿€(¾qä>eÄí?‚ø?_n?‹nÈ?€â¤½µÎ\½Â@?‡¬=ANP»™À¿juä?{4˜<²¼0¾dœË=³Ä=&q(?r'?þ­„>9µ—?ƒ =–`¾'|p¿quí?ûs½1}ˆ¿À>?nˆÛ¿<ÅÞ¿tΠ=Íçd?F;ˆ¿}Lš?x·?/Ò½‡½”?rÜ~¿mq¿ˆ,½ªXÔ?ƒ.¨¼‰ì ?t¿k¿t<Ó>ñ|pÀ0È=c;8BXsu?•ò0½5=ªM¢>T-î¾llZ>t\>)žî?€fº>Aª=OgØ?•j3¾Kò¿zÑî=Ôò>>P„‰¿|¤=Ší޽®p,¿Cew¿fõ°¿[ :»m>"Ù?‰äÁ½‹§Æ¿‡w¤¿]Æ©>ck¿zÂI¿gh7¿{ÃÕ¿]ú=j¿>Â0=Uœ=ßõz>">‹=kv =‘­Ò¿ha°=Õç¬=ªå>°ê=ý­Ô?‰BV?cs ?‰Ö­=Cø=(—ü?”eq=Qè> ¿…>Z¿v†z?’6=…Øz¾>²f¿^B= ú¿qn¿j{¶=F¦4?ƒ9?iÓ–=)?†½p¿\Å*=“´¨A€Œf?p/Ù¾¿£!¿p€>D>É•¿ìÁ̽‰M¾=Õý’=ñ?þ>02?„@f¼¡Ÿ˜½á;‚?“ƒ«½IfØ¿I'ë¿wÄæ> _\>2ðP=D§x?k =€ßP< ¯p¿{•8= èô<“f`¿os=üQ°?…*®?}¤¼e- @9|ìAKÖƒCAÛu?Ħ»ñö@½<9?SÉ‚?O‹¿‹½)?q+ ¿> ?Wê?†g\½OÏT=òèš?[]™?u+~<áqh<ß/°½¶oì?„›©=‚ ¿g§ê¾ ˆÊ¿—:ÿ;±z=Sè$?ûÔ|?‚â•=‹ƾ!»½]i`=7/P¼úh¾e¿ivU=[‚>ƒ\=ìµþ: •?…%–½¦ðð=bn˜¿’“2=Ñ:’½Áw|?o­ï½•<$¾€Ëx?4:ƒ?„¸ =è–¨=Qf¿z¥É½€€°¼}¾ ¿rõõ=d?n‘q¿¼?’\ß=Ÿœ~½–åt½þüø½Âü?¨g =¼Tº¿àè?QÓ?¿h¿Q=kP½ |?m²g¿|Tj?}†o½™ï@;‚H@?2ð<å¼€¥ð=äÐ?„S¾O¦?8¸?‡|»?þt¦=f[T?YÐ?u:’¿ŒTÁ½„R4¿l±Z@2øå¾Œþl=ø´<é…0¾ UÜ?{¨d=XÄB JO=´j>ï»?qT`»‹â@¿k©4½#½ˆ=ÿň?FÑ=„€”=íê¿t<›?n‡ÿ¿YÃ:?‚ò%>ÿ‘=ø>'VÑ»¸À½)ÿH½ô¨> 1ã:¬å€/)?Žªt½ëì>sf¤?‚Z»¿€n‚¼Oç =?1˜¼–ÒX=â箽͡¼=Ÿ-t=žÊ@>3•‚?{œ;kÔ@=ļ@¾^^P¿oÔE=º*L¿g”;³ ¿oS2?yáM>Xn?€ôx½i¸¿ll=°f¼º'è?¨T=mØÀ£ó—?‹¸£;ò€?ˆÐ?v‹½ò\½Rè°?ŽÎY?Š„·?zÒ?fh> %.¼jðBc¡É?Bñ ¿qÃÛ¿€#j> Ð<ÐÀ½²&Ü<Û>˜¼!0<Þi(?—4æ=kI@?f¡¾¿Ü‚¿dÔ¨¿†õ¨> ™J?Œ)ž>«Ô#[ý?…BÆ¿\_¿ý—H½ 0¿ƒ¿š?yæ5@:¯B×ACƒýÃB뺟Bt'A?Ûmî¿«‚?lÜ<¼ÇóØ?W K¼¬0?X[<©>P?îŽ6?Ò·¿ˆ¤=ã1?x´×¼ïý ½\Ü ;â5à>Ç¿Sü‹=š†Ž?Vñ?AN^=,~d½ ¯èu:Ù?\?ò¶³?‰P?;Ç à¿nTd½Þq ?†U¶½‡GÖ=’`¿qõø?ôº½9ÀL<¾Kè?…·Š?‘Ÿ?}f&=#ò<@¹ø?ŒÊþ…’ž?’9¿Ž^Ó?`û?Š;?Œä½?MðÔ=6BX?]>ç¾CÒ=*°¼~pÀ?i±¾=xØ<ÕÐ=‘aÄ?ƒ¯¿„?WΜ?ŠÒ¾`¾=¦=DÕ„=£Ã@¼+¥0=R1p?Œ¡L=E¾Ù}¿T?`M{»ñ7?;’l?l<€@š§·?çÝ<å*=Ъ¼AÙ >%?½b€½ì¡T=ãjB?]Œ¿l_Í¿‰8;¨À@?™g>JŽò¾ c|>+½Ï¿{9¿XLË¿‡)[<žÃ€¿bØk>á?— Å=—¡ö¿sV¿ê'Ú½—/R¿bN¿P€°=R*P¿^‹D=­Ð<ù/8¿QWÝ¿a…^?õ§¿|{¦;/!€?yÆþ?ëÞð¿ø6„½gl ?ŠÜ.¼÷@@¿U"O¿ëôR?‡C+=¶Q(?qv™?†„ª?‹©z¿ëB=ó•î>*·²¿†m¶¼Dý¿÷k?~$¿‚l"=Cá\¿M¸?‡¢?j8Ø?‹Ý='Ü#O¿‰.?ŽõX?ŠÌn¿‚Lõ?šµ=ŸÁì=…!Ì?z®¹¿c·j=÷ d¿~ö½–¯f=¬€.>tµ =^°>§=Ÿ½‚¥ø¿‰›ˆ?WÚp¸¤À¿€7?‰vº¿p;Ü@ 7Cíu¶DpœoANŽ?†Hùº§¥€>2×h½ŒvÎ<ê&@¿Ž?»1?Œ;Å=ø4N½àŒ?‘Û¾Ö Ÿ?„Yh='ƒ”<à§`¼áJ ¿†e^?Šü?Cc?E?‡Ä~¿nÄ8?€D½úƽì?"·¿p_t½¢J?öŽþ?j8ë¿_ ¼‚C˜?}«?j­ ?‰¡é?rP=äƒfÀ Å?‡ø­=›Q¸?†"v¿sˆ½„þ`?@ðê?zõ´<ÅhX½¨ðd@þ]?u×"¾Ö¯u?lâø½ãG¼ÕI ¾,½À8?x5>.õ}½húÀ¼ˆ ½†Ú?„ <= nì?‘Ù›?u`?†ÿl=¨È>£(½B!€¿†×·?ië&±*?e¾ ?€@9=¯Ùª?a‚пuô'= îнQtð@=;RCÝçA—4¢·¾ 3 ?—´h½ ‰¼Û=È=âÍ=ŠMr½F{0>¾û¿_\¿vŒh=¤ù¬=Ä·`=†¶š=…©‚?…ĽÄh¿†+Ô@ž=dÛ|¿L¸=8±4=žú<.]€?çq½!AÐ=Åh>YÁ!?Ž6:=1 @¿s2ž¾Ohh½ÒÇÀ=ذÐ?…k~=¢*.½ÈÐ=§=Šm¸?‚`Ø?æÌ=#†?Žh©¿Yè¿t§¹¿úMнRp0À9*?tŒØ=ùÌF?ˆÓ?Šíå?ŒP;>QÅÚ;Œcà>\ž—¾-· ?}Â>Vœ‡?tp¦=9``>@?FÁ?xпeL¼¦Ç0»L®@?Â?Œã{»¶y€½®)h?}¨J½yeؽ,ßè½Ölh?wb#¿ƒT¯?w¡?‚«A?x×O?€ˆ¤¼ÀÐA÷Ý4B ’Ø@1çË?…¦·?-ð¿l.×½†ÑÜ?‰.G>³=f¨?‡m¸<„à?ƒB ¼ ²à?dËϾ÷Ai>.Ý…=ù½Ú¼Œ¼­æh½Uñ°¿™(‚?iâ<Àнª¾*ûÄ¿}è=ƪì?s™°½/Âì¹ìÜ¿‰Xä?ƒã?Õ·½gÛ€¿f?ü@5£½†ÙÌ=jçÄ=v?rÝ <ŸA°½YéÈ¿ª‚<:úÀ?Y+¿£|½:‡=¼Ü?yg8<+ip¼sÙ ¿€ÚÏ¿“tE?~>f?s¢=—èh?†¿j+ ?$¤?‚g,=¿sZ¼#v?z@Ã>çQ=\ˆ?ˆ‚Y=t1¤?cóX½>˜€¿+G„¿t’Í¿íå>ˆXª=ÏÈ<=KT>"'Ø=w0Ä?‹6¢¿`«.=Õ¥X?„Çå½\üX>iÖ?Jï;?Š—«>'ùî=ÎÞ=w x»5À?‰Ì´?h™§¿€Çµ?‰"?OÇð¾ø¿yÙR?š‘f=]²<åa¨¿~{/=¹8z=é\=øÖš¾°bVkj?„ÈÈ<ÌW¨=«ø?‹¤Ô;*OÀ=^FT?€?h=œ@SŠ¿~,Ì¿€›Ú¼j×ð¿§WQ?†“ñ<šO ¿mÖ@•ºç„?ø?d©â¿pEC>Q#¼ðHð>Otºl<߉¨¿c9νO?†¯|?ë½·\¿‰‹ ?-;=ë·¼½B?‰»×w ?v‘F<Ã?H?ßH¼…?ð½5ü ?n8à='Ê”=Q¿kúÛ?íó?¼Yª¿Z‰I¿„½JÂh¿‰.S¿‰’?.æ¿J’Ø¿g’‹=¤9=ÔÈö¿kSN=†,x=­_€¾;S>½#°?fY¿_§½/|<Íp¿bqa¿n”A?^g?\Û><’±0?jÙþ¿‹£j@@HI¼Ï€?ñžå@?\lÛ?嬲=§[$?¿ˆˆ>u?…¬´?çݳ?Œµ=Wû(½·uü¿q†F½4ÁD½½¸?f}É½â¢æ=ü‘ú»Å¶€?rŸ˜¾>}ö?„¯ˆ=(Իέ€¿st=;¹¼ñ0¸¾.L?VÚ<é‚@¼6?týç?Y?aKs?„‘^¾B±¿_•Û?…ô?¤?fÐ/?R ?l@¼9‘`?b:D¿Ž¸¿?I7Ô<Þ“`½ÍX^Ìœ>8=Κô?þ>f+Î> ´~=IÀ ?w¡=Û3ä??é?<ÃQ€>–=2=E}ˆ?Rè¿qm>ª¿Xpù?#“Ø>(r= Cx?šæi¿ëKé>7Ÿ¿bŸ9½}+À?†*Ï=}ç?d¤½;ü¾uß*=ïm=§øh¿lô9>zE>Å“?v­Ç=Ê…P=žX²?“P½¬à¾™S¿n{Æ=Åd="Ô0?º¿vÊä½Ürj=S˜ ¿…V˜?‹>Ǽ¶Ð:G=©|®¿waˆ¿^“¿~8^½nTÜ?…œ¿P¯5?p¿\+"¾—…½lá8¹¾Þ¿•ᔿ]Ë=÷ñ^=70ô=}Ǿ©Ep=2Ì¿íç|?‹C¿ƒ½B<žÈ?oÅh=‰´?g†ò¿ZëÅ>£?†[Y¾r :?ƒpL¿g^T?‡'?‚´¨?¨Lݰ¿‘¯£?©@=T?¬£Ã¾‡yö¿ˆ{³?aTü@ f†?sª<~þÐ»Š¨?‰…ˆ=<»Øª€½ŸÌ=š´?^Àr?€$¿?eÄ@¿…‚?_ÝÌ?bY¾3Lì?†þ¸?o´f½üò?QÔI?õªÈ½Â÷(?“·Ô?€>ƽ‹²¼³5@½Ž¶¿‚|ª¿_J9?xi`>'Ô;4¥€?'ìº+?î1 9L?~Ñ ½Œ]Â=š ”¿€ßß¿µ=íÔŽ½Õ?|º?ß¶ƒ½…W\½jÓ´?y¸B=ÆÃŠ¿YY@3Ò?yóN=„†ÖÀ*ªÎ?”\W?m?¼žß?dF!¹¹ä¾"e>?Ly¾z佪€¼@½@6>te¿ôd >Tû¿eb#>%wÚ¿a•¤> ¤=±Æ|>_ú?Šˆ=s¶1Û¨?ˆgº=yfÄ='Mä?‚Ъ¿c?m<Ñc >©Î¿tp0¿vÈH¼ùê0?À=˜Uœ¿k޶?‰S­½µ>%\½Áj¸?—"p¿G!ü¿w›b>)Zû=S"p>,=K H¿„ÔP¿W’ @F´¾7ª”= 0 ½±‰"¾p±8¿tÚK¿|õD?‰qt?ŽŸn¿d¿¾[Ø¿†ßh?€Z”¾//\?…Y3¼öø½ŽÔ¿¿?Ž{?zQ¾¾ ¬¿gš??Yð?’Ü>Ê=XL=®{D=TR¿|€±¿Š&ؼ<¤:J&?A6V¿ƒx= ªH¿ñÖã@>µ*¾+j?ŒJÁ?ŒÑ-¿‡“•½ÍÞ¼ZÔ€¼èÀ?ˆÉ >C?}ïz?|—¼¿ƒX=áøÎ¿‡žò:¶¼¿!÷=è~.= >*ÀS=‰"d?kvâ¿[i¾>N«ä=“l|?e½¿tUÒ?‡)‚=Ôý(?dÖ¿Š`8={ïì¾$cø¿c£%?zQ5=7½°”¿}6×?†‰½½Ëkä½Ô½S @ÓÓ¾å’?;*G¿„u€?fùT=Lp?mÓè?r™ =÷•˜½ø´H?ŠÛä¿ÎOºÁu=,­¬¿}œr=Õ€½s:È¿bÿú¾‚?hFØ¼Ž À½âР?‚Ó;ÙÁ ½§æ?‰% @?}_¿g‘¦½7a=Aæx=CD@¶Ü½U_”?‚›¿‘ã\?ºB½’—ð½­ B<QÐ<͸?€c ?¶ƒ?mô½ô6|?ȼ±>WbA½ƒ»È¼¬ŒÐ½uU˜?™vĽÛּܿ¿‰f¼=›h„?‚t½Üð?Hôû?f=4È=zv¨À Ö¼–I°?qeI@4Ø?&ê_½§ƒ¼½Ùj|?ŽÁ®¾¿Z¾.ýâ@¤¹è?<ù=¦Sú> ù¤?†@=ë-0>*îG=¾„ª¿kØ^> ì?Â>ä¿M|—¿xO¼¿}*É?ûM ?•pÇ=ØPX?u¦¡?—9Á½—½V=VµÌ=>4ñR>S•»Àª@¿‡~¼” ˆ>ñr?—ä彇ðP¼Ø ˜?Š×š=ÒÈÌ=^uð¾!¡f>t®>MQ_º¤ò¼Èox¿TU=¨µÈ??Ê?Žr{¿‰ê÷=¬ö?yò@<¯1ð?ˆúz?–õx=ˆ?3¦»Ð9 ;sbÀ¿p^µ> °ò?„õ±=…ú6½JÀ¿Ž¤è=Ê{€<û•`=œ˜<ÿfh=`˜Ü¿b’?qÄü?L›Ú?„¤S=/?bÉ¿u ¢=ÂVš?6£â?‡-Ò¿e˜=¼õš¿‡WB>5Ø7?™Q¿ˆ"ý?v n¿W &?†xù=ýÒ„½_1@=|C`¾PaÀ¼¡°?uîÍ¿YľÝÝÑ<Â@`Àxê¿€€^?röá½Å~@½cÔ¿uG;?‰6¿}ø?y¥~¿hÄ<¿¶ð¿Ÿ¡>¿l ö=íaÍ9½§Áä=ž~R=ÇÈ:¿ˆ<<³œÀ½C3h=¤Y¿Ž!=…ðò¿zéT<¼—€¾=޶?‚Àô?A²†?rÃZ>2 B=¤¼ä=î?‰Cá¿ËÝ>¿˜ƒ.»>@=ÑT^=/ ˜¿†Y?}“t=µ4¾Ý(Œ½©¢°?P欽 Óè¾Bñ<í$½º ?’ì¯;æá`¿¬¥©?U#Ž»¿\¼ =LC¾XNš?й׽ç?„ ¨@ Ö4?uçJ>Eºù>›v¿Ub¦<·<(½©ê=Cl>_°&¿\¨’¿oþþ?‘Ôb?ƒWË>e¯â?zV?÷±f<åW@?‰ 8¾R}´?F·?‰¸€¿Z·ì¿d¿[6|¼Áƒ¨=yž¤¼Ø:H=¦ìø¿{gÎ>+Þl=†?‚,ž¿hLô>/ÌF½mJÜ=ï›P¼Ÿõ@>`Ã~?~?D]?wŠa@Jª=…ðh¿m¡h¿\Û>¿wº…¿€^ä<¶èؽϾ?ã;?}>ÙT¾„ˆk¿øïK¾yš6<„ŠÀÞ{½¤$¿t¿g?”Ä.=ÊÆ¿XØ?åˆ?fN½ßÜš½@ˆ½t¿ˆ?º²?ck©?ÏÊ=q™P?ˆf@æÛ?ˆðì=¨Öø?‰é7= T4½nôؼì&p¼ ü=€Z=§%ä?pÒ÷?ïµC=§* =j±=x(½‚ˆ¾Ö†4=0h?ƒs!¿‚A†?†Tª½˜´=V☿xìÓ?êÁÅ?p¹ž?Þ#=ÄWÒ?ñÕ;u¼±9¨?~‘¼0>ª{Õ?†O^½™<>°7â=Æ…P?Š8–?‘’ =íͦ½?Àð?`²¦=˜3ð?n@S>Kq½ú¸^?€˜½á߸ðå½@8?YJ?ïËì?dzÐ?ƒ$~¼M¼P½?}˜½²V°<“3¼€;0¿€µ¶?aAŠ=oÕÜ?rE_?RÑ?òÝQ=`Ö˜¿/ = óî½ê}6?þó÷½ÐÀ=<°<Ù‚0<‚>P½|ð쿆$ö¿uÞŽ>a- ¾¦€½^'?¶2¿² =Âv¼‚X<‡˜0?|"*?‡†¼‰ÒÀ¿–Ýš?rp¬=WOH?„â½ ê>©ˆ?E–=Ä5$¿kâ>Lê•@ ÐO>Rý<œ¦p¿~v2¿òââ?‡Æ×=…Ó®½ÑôÀ=¯Ét¿lÒÒ;’B@?|ål¾¤Qu>)ÿ>¿ƒ€m?iš½_¨D>qo¿gƒà½'-„=ÿÄà¼oŽP¿_¡=`é ¿‡{¶¿€¨T?Œ‰Ô?uç.>ó=®W\=s–|>A=µl?˜ón?ùð?%\¿u Ü¿„Q$>?F>26¿UàN¼ ˜¿l0v=¦Ç¬?†ã¿†M<øç<˜Q˜?oL&;ÿÕÀ?„#a?ˆáw¼“é˜<‡?à?ƒ‘¿ŠÇ¶>.°>½ú¿s¼7=ç8À?ø)ã?‡xe?„Òº•·€?tT•¾~?Ò=Šˆ½†Q¼¿òié=ÁE¶=Ò@¿€b =¬úà¼tÔ =šL¿ƒÏ ¿ü¢µ½¯m0½ ‘â¾ ™R?’ ¿€d³½°T?ŽRý<þà¿}ɵ?Œ#V=¡¬?Œ}h½`±¸¿äÝ?Žr=ï2ªÀí-=Ëõ¿˜PĽ¦kì¿z7‚¿2 ½óì?C@½êáÔ?VÏ¿‚¼µ?wpÙ;Á轔ä?L>²<…Àè>f?†êŸ¿ƒt–?öC²<À˾– '?q¯-¼Ò ?w²>¸M>¾1>‚’l?ûc]½)(?S½?ô"¯=¨¡ö¼ó `>õ <¦ß@½È8=Uʼ?‚ó&@€5>5†Á?„qú?t꿉nª½šR?jý}=ÖŒ–?†e?y ?ƒq‰?/Å=#bœ¾I‘Ú½ßH@l¾D=X Ð?Å/¿æc:?ï=ׇb?…¿C^ý= eŽ>2མø¿`_z?Œrš¼Ô{ˆ?œ°ô¿Oá}¿K+„¿cÛ?ÚŽ¡>46-=¥ÇÔ&k[¿Y…~?qÞ]?’e“¼.p¿hV¼g­ =î½V¿QLÆ=WŽD?‡è?Š1:ŠÐ?ˆÍÖ=ŽO ¿ëò¹?Œt©?“hÝ=é-F=æAì>Ø=ñFÆ?ÑB¿LŒ¿?~pž?kª@½Ï©L=$òè=²Š6=Õ<’¿kÇ?wì¿_=72”»tÊ@?|¤$½vø=EÓd?h'ž?óo4?]˜Ê¿‚)£¾'Z¦?ƒì…?‡y´»‡€€>oÿ=pœ½6œ¸¿x8*?[U—>…?÷i¿¿à¿ƒ_Œ>cò ¼i¯P¿€}˽›²R=žx¿†#ì?‚G…¿cÃl<ôUð¿rïà?”‡ß?X²I="ót»¾ö =_?u¹ç½~©P?^JC¿b¶»¿‹>=ýŸ=©ž?juD¼†À½Í‹?}˜÷¿xž À2>¾•\>\LÂ?.þz<îý>"n²»g]?‚h6¿†%»ð ?r°z¼¦€?zž‡¼|`? k½¾5½á ¬?}L®½é9ºÀÝ¡½ÀÅö=‹^<¼x?^x ?wÒ¿xRɽ«T6¿ë˜=ãE ?úŸé¿ŠU¿…·–;ë¬ =½6ο¯Ý=„–Ƚ"h¾PÓ>Íš?ca½#½PR?yf–=<ؽÔö–?{ïb?rñ?ŸP¼;ðà=ó4½ï¹$¿Š`°½g,p¿³kl¿ƒ`q\=†ŸÎ>OÃN;À >Mq>=ºµ¿€Ã;¿v>D{¼ðÜ¿ƒ®l>he>(#N=îšê=Ü̼õÄx½øÜŒ>N ;n @=˜%ö>kŸÏ½Ÿ\=×GK?¿mȼWø ½iÈ,?uà>a.Áa˜ =&?rì> ‘=ÅŽ¶?p΂¿~¡[¿ñS?ƒ˜¿#¸¿dP#=r»x?U $?ï™C=Óæ0½iq=ï–>-m—=˜,»Èš`?„¤Ô?ŠÃ‘?‰­b?›÷ÿ>Þ6Ÿj>$$?q2”=§l=¯Eè¾g$œ?Âuø<Œ…è?‰•¶¿íÄ=>Ã^?„a»‡_`= Ê\¿„›b¿Š=/ÜÀ ?å1ä?‹¿>?g`¼u ¿÷®=D3˜½µÃ´¿l§\=нӇL=€‚à?˜!9½RO1O¾ ú¢¿…‘?|Ð\=µš >ëÊ@?€ð?ñu¨=êYB?Œ‚€½I|¿uÄ!=k+ü>¡Õ½Ë8ä¾;P„¾³BÔ<À˜»0•€¿€Ìå=„qˆ¼³úP½è=o¼ì?„º:¼\ºà¼§¶ ;潓Bô?iBö¿€Q¿¼t\`?ƒ,1½òx?€tu½‰ö=Þyè¿KÌš½îèœ?dºý½µû²?íÈd@ƒ¡«½€ô~>"xk¿I%[?£šˆ>v?‹%#>6ù¿‹Ãü¼àw0¿BGÕ?‰ÝÖ¿hÑ–¿ˆ¡V?•àx¿‚Þ÷=ª –½ãè=ˆŽÖ<9¯`¿eú=>g ï?Œw = ÀÄ¿“Þ?ƒs?‚Ÿ¿d†?=ظ<°÷à?y¡‡»2=w¾¸½.Z?‘Ý6¾¥¤ž¿s¶Ó¿cjT?…ÖŒ +½ž. ¼Þ,Ð?‹³»<( ࿉Ó¿oH¯»~Î=¼÷¼Šáð=Ý]ú>>ú>HÌà½öÌ?w±7¿cx=³óî=F¨H?] Ö=4(?ó?‡µÜ=—\>^oF=Þ>V?~[U¿ZÄò?€+ð?d%/?pwà?p†;ªõ@?¥‚^¿y¬?‚~`=*Ý”=ÛD< úÀ¼‚oH½øƒ=yê¾§xó?’C˽†ðØ?¦ä?xd¿v—ì½£Öp=Y ¤½I.¸¼‚)°½¾*?w×P¿„ì%?øt¸¾‡¢?ˆ”õ¿„zä?‡à¿m+j? Üæ¾‘J¶?‚çp½Áü½¼>œ?ql÷½”…Ì<õïxÀѾ@™2=¤þÈ¿q~%¿s@´¿xñ…@&=UÀ¼Ðñ¿o ±?‡œÀ¾!8Þ½·Œ4?€=¤mî?ƒk¿‚S†¿Œ™½µP¾ pɼøš°?jb?û‰ð?‡—´½fò¿nZb?åìÄ¿fh=ø«,=3ì\=Íåê@>ìC?h¾]½ è??ýà?bοz1U½‹+Ö<…Ű½{+h¿u&Z?}ç‘=ô»P=‹—j?úuÁ?ôÆø¿‘Ô=KÑ<>ú¼=Î0¿†ß•¼”l=K›p¿ïî=Ò2?xVÂ?Á¾¿¨¼¹?rÃó½ eà=U?T?‰™%¿ü­ê=+øÀ=ˆhˆ?š>=¿‚Š­=ö‹ˆ¿úá­½Ó¨?€”,@yÅ?†Ï=@=*åØ=?„h>Ø?Œ÷¤=`~½¾Àæ?ñók<# >;ö@±¥˜<÷  ?y*p=êžä¿ZBñ>X2¿‹V>‘>K¬¿S—0½’d>2TR¿~_˜½‰æ¿ftü?†àë> |A?xIμ7«@¾ð…¥¿it©=¹UL>^Ç`?û¸§=5 =ª3Ü¿úY >mK=¥=c¨È¿o(2?Ž“¿ç<‘kH¾¥Í½ ˼=˜Aà=ÔP¾=™õ<½‡×`=£=íLª?ˆÛ¿[ü<…´h?S>w+?oãŠ?)û¯=øÕ¬?ž?m’.¿†¥H½ëæè¼›qP=Œä>Ô=.ˆ¼º?ø¿F¤¿…–?l•X=¦ó–¿ðQ¾;óû ¾"?ÈÒ»i€½fch?Ȳv?„o^<òH?_óî?„b©?{Ys=T¿‚hŒ½(RÔ?zp¿vT¼‡8¿ŠgA¾ÇÕ?=ùˆÆ½š{"¿ng»½J"ì=§\:­ú€=¥îþ½yÔ¿j}?’Ê¿þ4?†›?ú(½æÔ ¾êh‡¾3Æð?ò_K½zHœ=ÝûÄ¿ob=?ûä¿bM?й ?…Fp?×í=N,½“A?=Íö?mÄ‚?T{Ý9§¿Ÿ¾®õT?Wç?… 8¾‚Ä[¿zÜó?P¾½š½´Œ?P:нrÿH?`|Ä¿‚ír?^^|?vÊ; i€¿RÒ?v=ȼ³l0½C:ü¼õl=0ŽÈ=Ó$–?rÝæ?M6•¿ƒŠ!?¤1ä¿? ?r¡ž?–· ?f÷¾*ᆼãX=tZÀ?m¿S½PXä¿…Ûù?ïN¿‘¹U=œ€¬½Çg¾F3V?àr?fÄ<˜ @?ƒ&¿o/+?vŒ?yÃ4½¿®Ð½‚ž=… Ƚœ ?†ó=$ü?ÉÙ<Òý€?Žž[?ö7õ?ßul½°öŒ?tOŒ?‡È¿lYö?Q4¼ïM0=}‡H=È•Ä?…¥õ?‡Fä½m཮Œ?Y¢¼Y0`¿zãE½©-t?è¸b?]÷;=5$à½ÛB`¼Qià½g¬?eUν"¨½ Öà=kWÜ@ä5Ï¿ub鼩$;âô€>0ê¤?rÔd½·ì¿R(=’5ì>+ú»=1 =˜.2¿…Ñ=Ü=v‹€>Ø~?–Ú?‘|?e±Ô?—àà>'³V¿KT>=¨—J>||ž>ü>'²¢?¦e=ãýÀ½ö¤$>4_Õ<Ý£?’xx¿–2¼?’iþ?‚C¤?™À ¼¾|P>(ÍÇ?>6=üÔ?ŠÖ=(Þ@ið=Hô¤=`„>’½ P> ßO† ?PÕF½ 0 ½¹Ô?žÚ=-rˆ<¯Óh?…”³?Œ÷Þ?Šd½IêD½´ ½½P´¼¾“x?Šª:?†¼¼½sÿÈ?+&?… Á½¡ð¿i¶?„|^½Êý?‰šz?x#£=Xkà½B“H¿Š…?‚¶¿‚>4¿~-\>zἿTÊV?`ÿJ½Oø9¿ò<’¨½»SÌ=·Þ¬º©+?rŸî¼õ÷¨=TEh¼á0½ º–!¿â¹f?{G–?x:¬> ê/¿€¡•?k.ô¿€nb?†¾B;±˜à?ˆé2¾„q2?„Z¥?t¯Š?ˆá?zÚt½Â5ø½00?ZVO?…NP?hßî=Âa=û±:Žª€?n5ˆ¿k'<¤•˜?vo?zâ–= Éä=Ùž=•E†½~½_Ĩ?mݤ?y5:†,?†nê¿+’?ù¾=)ßø?‡Ã+½gC@¿h{ô½ÎÔ½Žˆ¿‡-Ô?øC?y ?Žzô¿ˆa?aø=½¤‹»#€?wÚ;Àg@½Úwl?• ?ô¢?]7#?j3’<¹™?vX¿ŠaH¿‰U`¿}‹„?qп€ãs¾tãö¿…eô½¬”¿‡,Û¿cp=×ôú[¨>tR¢>_»±¿c¶ð?yD«¿Z8Ñ¿WP=¨r&>2¸=Ã’¿õ =Ë)ª¿=};¿f<Þ¿Kå?=®=Ò0,¿xØÄ=—0‚¿‚±¹?“z,¿iZ> V»¿€²> ïî>ÿk> ¹ë¾’¥¾>?é?y¾½k¨=£Ä¿NÕм¸@¿Z ͼ½O¤Ø>‡>>2®H»¦Ï ?ƒjÑ=§þV?ƒ˜“?\#ú@Bµ…¿Qûâ?ƒ¸?‘Ç>¿‹³?ic]=§ñ¸¿¥¾¦¿…“!½~6=÷@ ½™0€?†i`¾JÎ@>Z½»·&@?{ûp>(ˆm»€¿‡Oè?…îs?j¶½•5ì¼ê ?•Vw½Þv¾RE¾ç{z½Ê0¸¿þÍ{¿ÿŒ=ý.’=dxp;“€À½N`8¿eê=ô½º¾<À ?kÙѼÍ4(<Ø00?ãìH=Û´@<è=ŠOX?çî½9ìð<©˜?¯½šÄ(?ˆ5?_Üu@•¿½%áˆ>ó—@?cÎÆ?‰åÓ½Gƒ,¿„V=©Ïþ½Þ¬?o‰â¾ ̬½»ø¼¿uRæ½¾c\½g}°½^²È?Pëz?kÕ =¦h?€=<À#(15½1è?ˆ°¿ᬼsþà¿‘¯|?xŠk¾5Π¿•nò?p¨€¿‰{j½þÜ?c“\½öˆ¿‘ð½ª=T»æÿ ?\ýn?‰¾¿[£Œ?tjð¼)C¿nèV?c l<R ½‘áD@ú&¿}ÒÙ?è9è½²nø?‚€¾L~4¿vêN¿€HZ>'†ô?r <=¾› ½q\À=±OÔ¿k¿~†?yç$?xîȼé =ƒ±°?‹3¦¿zú.<2P¿|[ý?T’À¹h=H³Ô=£ØŠ=Rîü½äU½ó4¼¡¼½Œ— ?UÁJ¾ ½@½ö ¿zb½q =²l>1[?[Ä⿆Ôп‰¢ú¿|ß½¢$½pÈ?7Ù ¾  ¶=³ò =_øAˆY=ð™z¿ÍØ?xÉ=ÝÛn¼ ³ ¿OÇj>%Y2¿ùS:½4í =¼Òè¿e£æ=BCP?v~úÀ>mq?™•X=ÌgT?ˆ´û¿q#À¿*­Í½7<¿|²:@ðø¿b ˜>Ý<¿_&¿bú=´óü?H‚Ò<Š@`?ƒ<|?{O?oË=Aà=}ÒÔ>^…C¿mø?þ_><*dÀ¿€m•?uÒ°¿…#â<¶@>YWš½é‚Ä?îS=ц;E?ƒC1¿t¯ð>(½U´¿†8È?™+C=ÛL>GY?“B-¿w¤]=1?ý=þ=q7¸=»Nœ?í0Ò»shÀ¼ß¢8?kñ¿çb|=°Þп`mÄ?“ö©¼³ (¿p•P¼ºþ8¾ÉÅÕ¼Ùj`=φ=ô¨?Œƒ¼¸öð¿Tz¾?’¤?ŒÁn¼€¼l´€¿jk'À¬É?vhÁ¿¶‰> -ð½4µ|¿ƒ@ã?‹²?}[)>K@k>¾>b+=ûî¾û?u v?† ?WmD=ËÞÈ¿p§½„Šº¿€ÃR¿Qgn¼>1`@'m=Ñ»Lv½À`°½ÿÕü?[Š,½-M8=Œçn?ýnK¿˜g•¿xÌ?‰Èc=ɬV¿Žg…?x/=A†´½QØx»¬Ê ¿O&¿‚ˆ?p.÷½5ð½BUð> w=oM°?”C=°Á†=Ì»¼?û²¿€õ录ZÀ<žR`=¾}ؽ7ŒÐ½UFмk¼î@?{$?†§½¿…Nb> '‡¼ý$˜=¡#Ž?ñ5Š?QY =¶õþ¿Œ·¹½.ð¿œ×?òþ ¿”‚l=à€<°?ŠSê?ýã0¾"a¾R¢<õ=p½E@p@›ãÚ??V(¼«`½Ó¸¾Ý/H?€¼Ã¾ Úª»3ɾ£c¿”`&¿‡Á?ü“¸» ÷@½Þ¼(?m±¤?q‹~½9P?€å¿…›©?÷1¥¿oQ²?U§")Þ~½_ç>d¡=à3 =èlF?‚ú>=’8ú>$ø¿x=?-<¼Ì`,0"½Ðʈ½˜Ø¿vÜ =‰«Â¼Î ½ÿؾ¸á]>€MÞ¿Wô&?{Ïñ?t”L?‡(R½>Òмɀ࿛ݼÕޏ?ƒ¡¦>­?^í¿R?I~>ñ¾>fd¼› ?‚±Î?@Ù¿. ?‹˺6d?‡‡²½®˜¿dÂ’?‰È¿‘OD<óM(>+ø>*·“=ÏR¿eè@©?= K¤¿Š¦?vL,?i™º¼—ˆh½4X¼gø ?€¾?}Ÿà?u_¨<äÜh¼£Š ?pÍ6½¤¬¿zèx?M`?…F„?‹Õå?‰˜¿HJ?‘ŠÐ?‰¼<>oùå?{uK¾;Êd?w$Ü?й¿¼“[¸?‘*è?ry?l·è¿wy?v]Á¿uéi?aâм‘FØ?Ž—Ô?‚Å=7BD=þ n?q„¿Ý½-Ì¿`Šm¾ãê»ç&?k}â=¹“h>i¥H=Žë,=Ažd=Ê#l?~€r½BÑð=¾¼âŠ?…Jè¿d?Ö>°7?p¢Z?€[ë?•1¶?„À¢=6"¼/7 ¼ÐÌp?wJß¿‡±£?`J´=¦vÊ?‡å\½Íè=²Ðf?[ȶ¿ŒˆÄ¾+U‚¿ý¼›)@?kM¢?dûš¿‡²ù½9„½È2À?u`9>Lã?z?t” ?w 4?vn¿¯Â¿¦Ü¿i‹¸?v¦z;à`à?1”?޾ ¾Î˜ã9r€?tò½•t <4È ?mßp?‡‚ç;ÕCÀ½Œ« ?€#‡?S{.¼œÕ`¿Heâ@2l?{MÔ¿[’d¼ý‹p¿„²øB#fŸ=„Ü?ŽL¿ˆ¿W<;û½Ü”H?”Êð=ÔMÈ¿}p=Ù˜=ç§ì>B+Y=xŒ´=Rt¨=8c=ÈÃr½33h=ðpÐ?¹>ƒZ.>SL=¶2Œ?ˆê¦?€⿆Ò½ÈÁ0=ãÎð¿kÇÓ?u¼>5öE¿‰kÑ?€XÐ<•p¿bùb½~.d=Þƒ=Ú_Æ?á:?Z½Æ<îX=5Û>wd§½½U¾–=¿u‘<=AL?ƒ´ñ=Cæ8=) x¿lÿ2½”?hÔ»ã?„v!?|zD¹ú=‰ºv?’e¬=ã‡J?…ö¾?øŒ?m˜(<¢ø=eY<¼q°=ò1Ê¿w}>Ú£:¿‡ÌD¼ù; ?.Ѹ> Û¿yLè?î?€½Ì¥´=R1à=ÁS\=7‰¤?}¶Å=:€p=¹‡¶½0 È<¹*¼º@½ô H¿xÝ´½Ø °=¶>,»D[>Hý> }½‡;P¼R?dk@zfçB/W¤Aˆ?”rÃ?OQ¿uÏ´?Pì»X|€½‚Ôž¼f•€½¹@@~=¢*¾ÜÔ?„\û¿z1ǽ¡X8?Yç?{E ?mo¾‘Ρ½ÂU½®åü?c`2¿‡’Z=™s&½írˆ?‡¬ñ?oŒH¿sŸO?s>/½Ò…?gÎ?ü—q¾P@½´H|¼Ás€¿€t½R¸@ Ø?:º»¬ ?l{ï>Ð> ÎM¿‚O ¿‹fÿ¿kžš<ñ¥ð?iaÎ?ƒÙ¾½¶]¿ya†¿¤(?sZ?ñ“ý½Ÿ]r»‘¢€½Ùõ<›È?rC{¿†n? Kâ<äüH¿¸Œ¿[Šp?„I ¿€Mù¾˜5¿•¿Æ?J?¼†8`?†@Ÿ?úŸ¿{P.;v¶?]á^<ø˜°?C¢l=稂¿~óÍ?hÁo¿mÈ?…™Í¾™Á?b½R?lEû?~Ø´?½U,?\ƒÜ?^Ë)?^ ¿¤@‰¨¾(<ô>äC½>?`?…X^> Á}>n\½±SÄ¿z‰¼ƒ®Ð?…!Ó?_ËÌ¿v³BT =¼,n>9¢²=:¥¿{8æ??øfÛ¾4½Ê¿{ç§?‘”•?Ž?ŒÚ÷=Ä\=‡ŽB¿_õ¬>…=e´?}F'¿€2ç¿mtb=þ¤=òT½•Üh?›Eo>íB<¦ ¿íY‰=óG¸=åeš?ŽyI¿uç=Ím’?‚üö¿&PÐ< @?-&?zj“?€ñ‰½ZÀ?‰°ú¿wàD½2·t½“D @¹Ï=MŒ?f2÷?„O¿xÙ?Š~;=™´¿v¼’?Žw—=bCÔ¿ŠŸŽ?‹¡½yMà@"Þ=bÍì> Ö?‹ "> --¼i) ?tXˆ?râ2¿f8¼­E0º¬ó€¿„FK?ˆ?7h?‹bË?ôµíû¼Ÿ}H=ƒ‡è<î~мt´P?†Šœ¿!—s?S:Ò=Éj=Öê?„ [?ŽC?‹¾½Œá<ùÁP¿|ÑÙ=åH€@6„ÌBà/¦C+ÔÃ?´4ç?mR"?k—?8B?ty«?ýþü¿}ÂÕ?ZÖ=½9Mˆ=Ì丿l*?¿Ã?y¨ö=½©´=h©Œ=£Vú?qüå?MÍ(?öŒÑ=@ã»TG?Œ1ɽ’øP¿‰(N;ÊY€¾8µ²=ä,°½Â%?VX¼="@¿^ê¼Mž€À8…>Q”?s"—¼“~(¾ ½¼•£¿¥?ÔD>¿€ËÍ?ê(<ŸEÐB—* =ðë?†šg>*-ˆ¿C1@¤¼“¿—nþ¿•`c¿ Ñ-=ª´=T›> Ö=-8¿Úƒ¿mšù¿~ª'¼l»=²K”=Ë(t=¨ò0¿ß/t¿Sá”>sdš=Ò;о€}½¥¾’¾RóD¿|Ù¼w( =J–øb =74=ª=?W€¿cÐ?Œèø¿|«¼?"¿~â2¼!EÀ=è?…n°¿Œ{>O?x+2¼¸Š`?Š"!½~ød½[z¼l_пuñD¿ƒÞ ¿n ?A7?üñ=ŸWŽ?C‘>W(X?v ’;z?ƒª<“Â`=Ðãb¿_ <]üP@ªÖ¿cb!?„•Ê¿ŠÎo½a€= f?~ÿë?ƒ1¿…£„¿xÞk¼äì¿„f/?v#ˆ¿‹›O¿qÎ?û^?d§¿oíf?w–?j‚ÆÀ½|=ŠÕd½-x½“<¶½Cø¾8‹¿ƒ3¿oܾ$²h¿‰½º?ëÔ?i}½¿}v¿‹G=‰h.?DF̾'J4?z)?ÀùÜ¿Š¾D?iæŒ?ú|%?ˆ}¥?ÃðØ=÷þ†?>ж>1º?_lR<Æb?ù’‰»À½JØ¿ýh¾Œg;=™j¢?k$Ó¼°¢€?mì?‹þ¿yö ?‚^ ¹Ö¤¿‰x¶¿‡å²¾Ž=—?ÈyÒ¾ Öš?di¦½Çºð¿{×k?j”’¿£8¿„“?»ã?vâ<ÓsÐ?uŒ ¿|n?lÒû¿Š¾D5?~Ž>?‘Éþ½õƒº¿Ž½!?|˜W¾ &<©p¾cj>w?w‡ =X*=Uq¨?¨Šî¿‹-0¿n ʽ´?QðÒ¿sçá?t(Ò?Kêg?R‡§?ic7¿tȾ’²?r#?myž?M©%BÛwC=”ÂF¿^€m>7- =ç—V>YÙÝ?‹ôô>?èE¿d;¿Eçr?€N¿b¬è¿Í>?ŽMš=‡ïÖ?›Í> \X¿T›|>ð8>$q±½g+X?‰”‡?€Íò=(À?‹wc>à>W²6¿rZ¿rÇ¿ˆAツ$>O;G=£Õ°>ÑŠ?9~|¿ì?‹Y;>+öI<ÏòÐ?ˆTo½®EÔ¼@c½­ȾB¼½k1пj¾¨&ûN?k`L=½?—=^?… §½zÑܼæ0¿÷ú=‘ÙÒ?/¿=KÆÀ¿Nb×?M)­?¤¾ h†@Â?}Ñ}=2SÄ=dØ>MÓæ@í¼±„ ¿kH½Æjô¿`Í’> µ‹=€´¿° ?ÿö´=~nh?X†¦?s“/¾X¿^ÙÔ¿qd½Gì軽…@> ’¼Ê9 ¿DŽ]"L< ¨¿jÆ?Šçx?A„<§t@½|(½Švd?oAŠ>‚0œ¼ˆép?@˜<%‹Ð=Qd¿q9>#&¹?~ÕC=¶|?p˜¼í¨>7D¬?-}½êŒ?uÎ=]=œÅ^½Gû0="h ½ÐA¼>:5?fbZ>?¿†¦a»*@¼_¿s2é½™{?im?½‹£?x'=Î p<£»@??kô?kF<=[Z?L\¦½5¢8?—Ïù½¹<ø<ÅÙ˜¿¡E8>wÅ?g>!ƒB¿yÿ=¼Í 0½s1ä?h{¾=å@<«°¿R¿[£—¿ ]¾HF?t+T»D@?ÚM¿a‡Ø?<Þ\½Ÿ°<¾È.?ýT«½t8»˜ ?t‘a¿†œ??‹™Ð¿sý¶¿m?sÓr¼X @2X¿ƒ„>ÿоÊ@4ãæ?€’MºÃ½—´h¼×P¿à=5~Ø=R °=o·à¿Ãø?\;Û=¨¸½•¹ ¿Ž´Ý½f?i÷¹?{»î=ˆ¯(<Ì’p>u¿„¬1=†|„º´™=¶¸?ƒTË?l|ÎBö¯â¾¯µe?zÿÒ>ŠU4?…Ý+>%ÜG=ÄÃ<²7ð>by÷>–Ô¿VU>Ô®Ž?tûÕ<@?”û«¿j‰.¿xÚA?{‘^?Ÿàš?‹p”¿óHö¿P.ó=KäP=?$l¿…e%=tB?‹‘¿i ò?†ab=¥Ä=¡yV?^‘6?ue ?Áü¼00 ¿kÒ¿[õ±¿s-_?}›h¿UaP=ië0?‹f?€9;½˜Ž=(öH?À=–¯r?y\D?éÎ@>3è>¿N¸¼„u°½*M̾нÐ1<É?Œâ?„{¿fö¾ˆð•¿eõÀ>=¦ê¿z?‰=zú,?‰íî?[\<°¼?‹u°?}üí=š—Ú½S…ä¿Y/0?{é0?†pê> ?(?j;x¿w®l<¼rP?‘#;Ö_ ?G:¿:J;-½?ŒÅ\½ÌÂè¿^°R?…ð8>,v!¿zéZ?t¿+G¿h ?sÅD½Ùgp?‚Ôï> x¦?bг> b¤?€_Ó=~ðT½^l;@w@?ø¦Ø?<…?‚ÝIº¦³¿i\‹?%4Û?B°> Ñ ½«p°¿vü[;M¿²«¿qp>*4œ?jo¿_*¿=A?:öú¿s¶=>QL=3ÆÀ?AÔP<•>Ô?ø¶ò½LÀ½•[¸=Ö"ø¾ÒÈ…¿ñq½û¥L=®²d¿†.x?€cP½â£˜½ “¼ëìð>³Œ½üdؾêØ+?T¶Ë?†?ë–Å¿t?[¾°ÚÜ=†:þ?oô½|ŽX@C"w=Åð¿js¾?u¹‚< €=Àø¿‡3¿…G¿Ž=z©˜½–— ½ÂD¼âÙÀ¾].Ò½ÂÄ?‚ ½¹L?“i½ú?så&?в?lK¿ü˜Þ½Ž“=6Yì=¶sP=f„¿…3y<‡É½~@Bí¹E?~SJ?‚z¡>…=œë„=œT¿‚Az=eF´¿i¾î¿Cð[¿~®=Šîà=ŠH¾¿uKQ\ ®-¿aZJ?“¼½&(½Jà=Ïí¸=ôü¿JR.<šÐ?ŒëL¿“áÈ?x¨¿`áÊ=‚‘ȽOÕ ;ò ½æ˜†¿‚U¿R§¿ú™>žVˆ=—²>3qs<¨=kFp?z©>…dp¿__V? Ä-?‘rî= Ö=²¤?g%]¿jî:÷m€¿‹$$?•’ª?vÕÌ?Ž· ¾Ű?‚ˆ¾(!U¿Áe?w{B=€KN?ŠJ½ ’H½rÅX?ÁD¼·ˆ?U?}Ì6½-Þ¤=­°½OÌØ?·º:bH½Hâ ¿…¦Å¿y¾>¿d•¼<zð?ƒL?g©?Šh$¿Œ%¿uý+¿…xª<€Õ輕 ¿w«¦?oø=Þ2>Ô<Û¿mZ|=¡J¼Nk ¿c}Ô<,Á€½A„<Ö° ?…u½?càÀ¼¡½~È?P¾6¾tYV¿:b?‡; =Mþ8½­¥\=LnÔ»tâ=·½„!Bº‘ =+¦Ð=9z?Îܽ²¼=¤SؼÃ(½(¾>&è¾S ´¿‚g´>’?fgÜ?l„ĽøµÐ>´®»/MÀ=‰C^½R¨<@ÐÀ?vüÂ?:Ìì½Ð¿ˆ#Ñ?…‹ ¾x½)à?ŒÒ꿇KC??Ș.¿ˆuy=»H¿uô¿úòã¿8<ý ¾n'æ==æ?aŒŸ¿­Ÿä¼›ØÀ=(æ8ÀÏ=¬©„¼»mx¿`ÁS¿^f?€¸›½QØ=]œÈ=ºŸ6½ày,?eíNˆ½¼ý.8== 0È¿oçÅx÷¼•M¸=ô1\?‚jQ<® ¿xJ =cÓ(?“@>#d¼É«¨?†w‘?w?Ä¿¢¼z?}Ê¿€¨6=ï©Ð?…â¼§íH?bGð?jË?Š™/<» =(À?q$d?„T @œÇBñë®?içÎ=c¦˜=‘‰Ô¾Œh?~1->;õŸ=YÒT>ki½§… ¿]!ü?uP=¿‰ð?h4B=ªš,?^‹C?qø¾ƒL°¿^Cÿ?t?Ô@dû?r¦½?…­?u˜§?Œ>Î;ïÍ ¼ä±`½gF¸=X¾ü?Gg:‰S€?ã—ø?uê*¿Šp¿‚›%?P#¤?E¤<¥s8?qW½Ž2Ø?bÜk¾ Û-½|=0¼9Ò°?¸(¿VM$¿Mï;÷o ¾=¾€‰}½ñõØ¿‹§T¿sõi=;4€?×T*½\¾0X¾""V=”‰²¼xyÀ?`~޼Ím°¼¦  =â¿ü濆§Ð¿…À¼²(¼oæ ¿‹íÎ?ƒ™¬?x±°¾fÕJ?{ä°<Ðöˆ½º«Ä¼ ’`½‚Šœ?€:$?X”Q¿nœ?Fö¶½ð£`¿ˆõ¸?R½ä€¤?‚Zù½pWÜ>ƒb¾­&?p:»éE¾ï¼ëÚ˜¼!``;g,@¼ðrP?cvê¿lj>½àT?3¿kíê>Ƀ8¿€‘X¿‚ ,¿ˆ¤L<È`;—$€?puÂ?n‰6½tG¼ú«¾¢,¾;,¼µö?j@"?úZ½OžX¾]¸<™à?oØ<äà?@Ѫ?_±z=,s=™ïØ=´œÜ?…_gBˆY¿c'^¼CÏ=ØÂ ?Žmš>ì?~Úª¿`ÚÏ?˜kg>a À¿zxÄ¿øwV?€±[?dÁÓ¿Oè[>Så?„°¸=f¿u©˜¿‰@=û>=< ,>h µ=ÂÆL<Èï0¿qÕv¿g*c?ƒ¶ >=¦<†¤X¿xµ2?6=iA(¼÷%½B¨¼Ž`@žP½ ¿éˆ¬¿u¼êà¿gJ¼ë P?õÁ?ˆ?‚kë@:ã9A=GØ?÷¸?*ÉF?ó„¿æRð½ýŽV?ƒœf¿f¾€=?Ó=ŽQf?0G½¸p޽•²0¾*ç*?g¶¨½GØ?ŒÔ½u6P?0俈&Ö<‡‚x=$…X=Çn¾?à:Û<Ïe?ùï*=n¨½ >x<ÏMx½4‘$½_è¿’‚É¿rH<@Ž=ƒf=5˜½–h=xˆ;è ¿ˆZ=^] ;ââÀ½ßf?o<?g‚¢½5{€?UÁì?l›*¾Q§²½¿7H<œŸ`½Š à¿rEø<š‘0¾q­"=q@´¼p9 =_˜ˆ<¼ð¿y«”?s0©?p¾½­9¸:¹†?d6º¿’üͽµh½˜d~½ôìŽ?|?W;ü/à¾(dL<ÌêP;µÏ ?f ²?å¿vëÞ?xÃ?€µN½™"p=¤oâ?Ù¢’?‡…Z¿Û?‚¥„¿„µÈ½#¤°?~ôð;Í#@½²Áð?f8½×Šx?Žú2½_µ<²¹?=X-?útj¿o™Ý:Àž¼Ÿ+@½“l°=~ ?…Ѽ…pP?{U?€‰=niÀ¿„x¿¢Áë?^š¿ˆš”?pn,?Wéš¿‹ ¿$\=Ï¢¶¾°gT»·– ¿€ A¿€|B<U ?jq&?t‚?{˜?{Y¿=G H½£ÿt½¨Ä?„jæ½=ô0>y,‹Ïr>ÏG>jú=²tx¿lÛÔ> îx>•5?‹ ò¿:ô6?ië½–êx¾°X=©=<=èw€> ¢Ù?†*{>~­.<ô•¨¿cZ½ƒL>Qοp–]>9•›?wÌ?¾>c†Ó> Qµ?…çÀ?š"r?~I‘?ˆ1ô?rJ=ò#˜¾vgs?jm¾S~I>ý=ޏ?„Yª?}—==êG®?‚µ?h~?ìt=Ù=Ø?†.Ö¿^NX='u„=ÿ•f¿ƒpv»r1À=ÇÝ‚?†„L¿z3Œ¿iÔê½ðÝ`?ÃX¿q²q?“¬½ô`h?ƒö='F„?ƒ«>Œ5=ß-Ø?`€Œ>–N»àЀ?€<{?dKY¼x†P?`Ò½¿ ?ˆ‡ƒ¿m ,<ÙñØ=Î*–½Ä\¼ƒs¿³L?_ê;TN@?zZò¾U34?sÞ\¾#½«@¼ÔÞ0?~¬7¿m'¿’äu?„b£=ïZ(¿iú¼;¹ ½®^¶½ä|?ë‚Â>Ž\ ?obè?t¡ó¼œfh?uጽæ%¸¾!=€ðˆ½1ò€¼IùÐ>"pO¿ej½DÜ?aÞš=B§h¼WNp=*ˆ=5ê\?P» ¿Œ–$?€|½‹(¿aü®¾0J‰?\rL<%ð½ì½H'T¿Œ`4¾-5¬½¿q¨?wDÀ?‚&É¿v,¿½©ŒÈ½‰Éh=¾Fn?…©?e›u½¤½UH8?iмo<¾)˜?y´½‹Ð°¿hmn=ÀÁ ¿x,P¿‘3ð½ßX?}Å«<âŽà?V/~¿})3¿‡Ä¸½—¯$?æ+«½Õ4<¿w᣿‚‰¼Ú`¿n0¯¼Ús0?\Ðî?d½>Ê<ˆù°;ªî`?O1£¼Ëã˜=o»?t}l?F¾úʽÁõ¬¿{ª¼ÌÓà½äÀ?hJ™?t&¿uîé>ß1ý?}ïý½sV¿¡\?GŸZ?ëHm¿¦Š>73?ö º?OV¼C•ོ|DBÝ‚?Œ©^> G <ô<=Ž|B>ɱ¿|M4¿MÊe?™Çî¿we8¿åÑÄ=-×D=’,¨?†#o?PÉ$¿räT¿vÃ=ü¡@=Г?…ÀM¿sÁc?û:Y@Ó€>7¡Æ>·M¼•V?‚¶Ó<ØW>7¿iY?Éú0=’™B?”Ö~¾ þ=펆¿kÿ->$¨=Sd0>+Ëø¿øÁ"¿ ?î4R¿yK=…~.=ƒ¡Ä¿cl½?m?†v½;Qä¼EпhPØ?8$ò=†PP=Z§ š“?ô`>J˾C…ò?‰"=Š@¿|ô=¤‹º=ßX¿uHž¿(½h°<ë±°?/e>?‹S» Ý >:F¾:ž¿±.f=±Uœ¼J¯ ¿V¬>IÖ»0P?‚­f=ÁÈ=‘꽩l>­£¿{uø?~y6?2É?»è¡=ÈP=™ ä>Œä>tÄ[<–xø¿‚y£<§}h?€è=ˆÕ<ð±p¿[¦¿ˆÁ?OE>% t?ˆUd:<¿ƒ/É=lŽ=#uܽ9 ¾.'Š¿€-±?u±j;tOÀ?€|@ t<½Í#(?÷|³=‡šF=­§ú¿‰_]½; ?qm^¿sD[¿†›Â¼“K ¾Ñ0¯?i'<Êi¸½Dl<Ñð¼ô€ ¼’¨ ?dÑx?j*Ž<ò¨?T5 ½µü:ö¾ØÝ¨¿O¹N?„ZÊ?Üþ½΄?hÁœ?gJ/=Ky¿õ›¿ˆ¥—¿„?{_½~GÜ?€Î£¿ŽŽš¼ X ?cë?sÚX=™(¾5µ=JÅH=æÏ<=Ȭ$={4t=$â$?p×Ú=p%ؼ&ÜÀ½òtÀ¿‰5·½Ç¤¬?‰h½ëCh=–àþ?sö?õ9¾?®« ?s5¿“w½YÉ?Áò¾Qø¼­ ?ïë?`h=®ó°?w]Ì¿y®@¾†¼ €¾Ym¦½´YÊ¿‡©j¿…·>¿ŽÔ;æÀ½—zԽǴ¿öôŽ¿p&>AŠ˜”>y}>(ã¼>E•=ª4À?ˆd¿öΓ>„Åž>%L?€,¿~:è=ÈÚH?Z[=¾š¸¿Zý*½äêH¿féó¿oõ°?zÆý>3­¿ZœÕ=øEʾÑ<<í`;´fà¿Uð½nN࿇Ú¿yJ¼Ë{½MÐT>!_!; ˜`=²Š= ºÐ¿<³~?ˆIê="$è¿ ">¿sÎo¿{%X?>¥þ=[aпmEa¿€0[>I ¿€˜=l\ø?xB=ñ§°¿t® ¿‰§È¿cCë>%Êh?m›Ø¿` â?†A‚=ƒzÀ0_?wøc¿uÅ¿€ži¾iá,=JDô= 4ä;²® ?E?<äþÀ=gfT¿Š@¿~g2¼Kƒp½ƒqü=Ð,Â?|îJ(½»b¬?r ½ç­”<•°=„ºlºøœ¾•¬¿‹©Å=`u„?‡?×þ?‚ƒ ?ˆ|½Ô…ˆ<ÃÁ¨?v­À¿W˜ö¿l,¿ƒš;'c?€x=¤äÔ¿‡%½ˆ9l½›0>WR?íõ?=–ßì¿|3†½eà¼ÈÉð=8ö ?lÞø;ÒÆ@¿u_ =Ù릿üÛ=f¤¿q > >,?‰Ê½ªÛ½QÕ8?qG=¾+óX=€$†¿‘Ï=Xì@?kÉt½†rü»¸@`<3(@Æž?W“ž=©S¦?w´.½* ¼Ï¿˜¿#k?¾Uð¿}9]½Ø´Ä½I,°½Ç¯T<¶a°¾ †=—ø0?zÆ¿h¤ Mu?`9@½ Á<ÙBÐ=b§h¾n?u#È?›•_¼"®à½ä;4¿Žûª?„² ¾<œT> Ÿ=¿—î=*¤Ü½íqÔ¿Ø?jð!?‚N-?TáF½ž½ä?d%¢dY?rŒ½ ÏhAg¸=œõ\=ÊmÎ?Œô¿Å ¿VÌ¿b¥‰?ƒó= –>Wûå=ô¾Ö?sÒÄ¿0ÿ(¿j×/?ˆ Å>Bý³¿h¾¿XÈj>3°Þ<‘>x!æ¿e˜½³¤=ó Àþª¿VþÓ<Ê@¨?~JžÀtô½ù€¼²Ìx¿No¿€Ž³=Í|î¿MrF¿ufž=§¨ ¿} ¿‘²>¿Qt>¿d¿v×B;êo`¼Ç?H¿ˆég½FTh½úžÈ?ckÀ?ƒí˜?€FJ¾Š«%=ÿÝ,?s»>–—?€´>Aǽ]Ì<–©ø<3À?üaξPú¿UDο‹CŒ½§@<]; >zÀ>-0¿p|¸>z©»ù€?aŸ¿xå%¿^­äºÒx€¼†²°»ì@?f½=©ÄØ;_@=Cš´?…Ù(=FY(?meÚ=U> ?_Ý?…ŠÐ=€²ä¿zý.?rs>½]„¼Åà¾a²<Àx?h\K¼žz`?ƒô”½óý¸?p~ ¿„^½Ÿn¬?\®f?rAÆ?j§/¿‰½¿†Üˆ?޳¿‡~ê¾H?3`®?•£±¾IG¨¿}úà¿€È/À[h?k@T?g-Œ?ÖP„<Æ” ?H€¿u:¿–ä/> œÜ¿šn=îÿž?^C¿q?_'½–ý?lGÜ?ø™¿p»Å¿‰@æ¾ >?]Ô›?…ê"?ä˜?€íZ<Ðnø½BX¿2M½Ç´¬½®>Ä?l98¿s9’?鮽kÆ”:°;€?Ù”¿qŸ¿yÉ_½ =Ñ?Yp†?7’¨?S¡I?Š¡[¿z3Þ½©“˜?ftÆ?€W¾nÑ=Þ©,?ty%?MÐR¾¿0¿`¥ð¿ú!½'uh½¼=j?+ã?mË$?w)i?lk¿f½{¿ö(±¾6^Ú?x(´½å&Ƚó‰4½:à½Ü¸à?;V¼ú·@¿…A@–>[¹Û?=Ä¿m-0=þ¥h?–#K?Žöž?œá3»ˆ@>Ç®>0â™?Ü•Y=‹Þ =ËÇ–=ž=ÙÁ\=Ð’°?–bê=mФ¿Ø‰;ݪ >7"ÿŒ‹@©š?øSÌ?ˆ¶Œ>ä_\¿dã˜?•J ;š• ½i?Œ¿nؾ šð½½Æ ?‚|£¿pÑ}?=Œ>®¢=…±Î¿pµ(¼áôX¿–‚¾B;¾ <šñh¼Ô‘ø¾ Ϙ=׬¿‡d¼½»8?‰ã»>^˜½ofô;ÑÿàÀž?Ôõ=Ä”E®?RÉò=‹>*¼0?•“0¿…ÔÒ=¥²ü<½ˆ€¿-\:Úñ€> cD?d`¿„Iw½«VF¿w©¿m“û¿‚¢¿ƒÝÐ?ƒ˜$»†<%°¾9Ïþ¿õ?yÀ?n/=½^p=Ppð?€ ”¿0[¼Ë1À½6ÚH<ê˜P=&¿„0¿yV´½³§P?„{ª¼ðu=•å´?VUÚ?8i> ?ð“•?wÉÀ=(ÿ»°€?ƒ]Æ?tûT<&ë@?h×”?füh<¬{p?†Ã?‡ç»»Ã|à<ûdp¼†žX¼`Ä`?uì¿Î 迉†¼½Rõ8¿‚a?[dÒ<c`?»n<œgÐ?G<º¿ˆ¸¬½™-$½$¨?Rtj½ÚMà?aì6¿Úæ¿“¿»´¾:8¿‡ ؽ𘼲ý¿ˆò€?k-[½†X¿…‡¿†»à¿•r¼ÁžÐ=Íáx?}hn?d¤AokßA_¬a?;ò´¿l]F¿‰þk?ƒZf¿ý¾•ùÄ?ÌñÄ¿mÁ¹?X…L½©U€?}çâ=…³¸¼…H¿Œ?î¶/¾Š!§¾Ô4@3 v?ª†?7^–¿|ü?aF2»%@?‘ôß½¾ÌÆ;Ý0À¿qÞ¼u¶€¿qx¾eÄ:¿yQ\>‡?é"?oè®?r5Â>/üX½$ªÄ½]Ƹ½¼_?‚ª½'}h½É´?p¢¢@W¿ŽâH<ŽÌà@Ýp;=_Dx?’Y=·åŠ¿lÒ;=ø<Š<Çh<ºwX>³>€Qˆ?ƒîÔ?ŠÃç=ÔP¿_DÀ¿W&Ä¿mt†>r=êU?–|¤>"|˜>žñÀ<ÔL>üp<¸ˆA׆ÑC=«@¿ ]¿Rp†=Bu°@•=A|½F:Œ¿l X»®ì@?‰ºÏ¿cï?ÁS?#s¿wöнê0¿Š…?‰j?lƒ?g½ž< Œ€»ñL€?ƒQ0?‹žZ¾­¬½E‘ ?z=潡X½PX¿Ü=¿š?|yä@_G?ÕôÅ@·‹ù?k´ë¿rå%>•%?‡Kì½€PÈ?d7û½c5½„ä®?bàƒ=Á <м‹ø=Z¤h?i•v>3!F?‰F?o{y½”ÃJ?‰ ¥¼“Õ°?P/Ž?þ_Ø¿jV=Fz ¿{–æ?ļt?e÷œ¿ƒŠæ¿}d <0ö ½5 (¿p(Ù¿{}l?÷ô;åxÀ?zÿ =¤¤¿ŒWº=^œÀ?a| ½&†Ô?ˆÓ?€Ï>§X¿z7?jð¾?›*†?‡”½†£½HgÈ?E9½š}?{¦~ FÀ½Aô?ccþ½ñ¡P?R}ôºD¿‹åj½`«h=%•p?‡ ¾ D¾g£(¿3;D½>?‚$H¿‹¨Ä¼ŒSØ>Bó¿‡dø?vZ½{Íh?_Ðo¾ ³?bi¤=o¿rA<+jÀ¼ó¨0?ÿP >¹=n?ãã?Šei¼:ì`¿c2P¿lÁž½‚MÀ? „BkLSB—Çs>OÿÀ?e¸~?K$®?n)=½nÜÀ?w Ž?ˆ•½Í@¸¿‚›Ä?j„*?Ú²Y½¨œ¿y2u?|<-¿ƒ{!?rο„Òï¿’û*=ì?hw¸¼Is0?RÚv½y„ì?rØ¡?N»k¾÷"?q­¿…¹7¼•Ï`?t¯4¼ÿhð=ðì´êà<ý.8¿‚~Ì¿e=ú4Ê>Zkò¿1¿\?hV®¿U‘Z¿Kœ·¿Lþ»?t%H=èlX>:¨>¿m±õ>FDý=Ôæ¶>Q¿€‰J>hà@~|A,Ý#@p±¿c4=^/D¿g×J=¶ùx?ýX¿e ë=¶{,»úÝ`>$±¿=á‡>A½¿dH>>N~?ˆÔø@Óôž2>qZº¿îÊÌ¿p…r½™hA4•Cò$@/<½’Q\?~ZY=ïÏX>²t¿j ¿àÚ?e7è>K%ǽ²’p¿M´²½W‹Ô¿‡Ò¹¾ ’=Ù1ü¿y\?›à=¤Rh½˜‹d¼´¹ =ò¸î@T,`>Å”?uó=Î*ĸÿ€= 8ºI·?"œ>üQÙ=ž@?„²"?w@=Ëñ4?•F?Ô3À¾47ô@^m½ÂØ¿|;¼´À¿yFÿ½Ï”?v1¼?ŒôN=,G8?‡mn¼¢Ñ`@¶†¿lå‚?vQy¿äÍ>tþ›¿f‡¿”+¿t‘?=ÙÔ?w9þ>[>\&>tÌL?MÑ=¢Ô?H¶º¿gŒº½êpì½(£4¿küj¿L<Ü<8?`x?h`¤»y(€?›‚?ü#À¼ó ð¿…š?S‰Þ>Kš=-³?´òN¿Ž„Ž¿„p?„yé¾0„= qè½àP^?ìY8¿Ÿ¦,?y19=_D BÊ0CôI?m“Y=á'¨¿‚• ½¢gÀ>¿€ ¿zZ?uF¿†m¹¿Žн”|½YÂ=EÆLˆ&Ë?‘G=ï-=ÄŽº?ˆŒé>U#¾ ½ˆ=Íì¿f š<¤`½&s€=ª“^>È@Ø?lhÄ¿OÝœ>!X*>X„‘¿nÝÿ=ÔZ€?‹Ž¿‰çu½V<´·@?q+é¿M•¶¿cÔ¿b%™=¡d=ÿm$?}á =ƪf¿‚” ?t¦¢¿U$š?…”Ç;¼í`ð?г½¸m´=°<Ž<+¿eÖ=¢)´=$½t­ä=-„¿”²"?‚„Ë<þ‡ ¿ŒáÞ¿‡—<Ï[È?‰å‚¿‹/@@ê+@ž!|@ù>Z"£=4?{¶þ½„D*?ˆ3c=W*H¿dÚë?WçÀ§¿r9-¼vp½Ì?å¿Æ?ŠD=®0 ¿u¥O½œíŽ?|U}¿züp?qš?`H_=;ŒÌ½ph:1dž¿nâ^½H¿Ô%¾O§²?g>¿t[¾ºúz¿ŠIT<«Ûh½ ¿Nð = X?„9U¿jîп‚VV½©ô¾½óO=é©x¼·X=žÈô<ã^`?K{ä?TDÆ=õ™¨=Šü=â©ò¿zv0½2\?ô¾Ÿ<Ô?‹£G>„Ý?e?}Â'?‚R?‡•=?­5¼·Âi=ÌnL¿u[R?<Ò?j$R?t¹¿ˆl€?[5ν³[l¿O-9?%å¿„ñ ¾9ýÄ?+‹½‚]0¿vä?~jD?yi“?žØ!=šk|¿‡¢s?kÿ?b]y?‰[„@6rC/M½7–ˆ>ŸÏ<ó)à<ü¹?ƒýj?Úž¿uÆ~?aDÍ¿•k?ñ·N?‘ ­?ƒü=’;d»½·À?aÑL=Õ‘€¼Â" ¾K>Í ?ƒÕí¿{Q¿¨=«o=’­?y?Oòè?[(©¿o†«¿±¸=ƒXÞ¼Ês0»Í¤`½g@‹ã½µÒp=¿ŠÏx?>—\?‚ˆ¢½&ؽàP=JD<Þ`?ˆ8°?Œ×c?˜îï½#bF ã¿fè@?‹iT¿uüC¿L,¿€‡œ?Ô=…Ù<¿wôh=¡ót¿UÇc<–ÈÀ¿m°Ü> >Ù¿ó;ø?é=<¿eß—½«<²?%¾¿{ÃÀ˜<¿ø9‚?‡ð•>“'?’?ƒÏE>håj?ˆ_Þ?£¸?‹ÀÖ?ñ*\;)¡€?m<¿ƒÎí=¡ÒH=oŠ$?‰þ¿Y’<´à¿mï+¿ëþë?BÊ¿v+t¿qâ ¿o›©?Z—\¿{.½n"P¿‰m½ñǼ½œþF=¤’æ½:=†ÐÊ?cfn;è辦ý&?~`?•¶=žN€¿Ž……¿Šmܽâ‚$½F?Œk車Û@½ÄÝ|Ž¢=d´¹Ì0?‡¨¨½ßÚ?†7ý<•h?q{³?^®J?”k{?eŽç¾Fép?Y¾Fpd½€­Dºï€¿…v³<2<þð?Ž­ë½¦ŸÌ=¸_‚>03½æc̾Q錼µ¬P>b¼ïßè?kfò=Q;Í…?„š>?^‡m¿„ò­¿†¨u?Œ˜<¿ö4¿tt«¿)¿ƒé“¿tñ¿W“.¿™Kê½# ¾±æ?vh„?n&ã> ª?‰¿>œ=¾wÆ¿ü?Œ*=„ó¸?z®b?Ì=;%ˆ=f4?j82C¦=?DdÎ@Ji¾$X¾¼Ý_ ?i6î?g4½ ©,½¯ð¾Dùº½á ܽéu=¹&|=ù–p¿ˆt_?iQÑ?Œø.¿s=è?r¹ ?†+ê?€6i¾>„X?‡a½,x=©b<¾›ü˜?øü½î»à?i¡¨¿vº_~?…kø=õ¡~½K(¿Š—¢=ÆHºí¼=à<ùK<ùyp¿€îý<òcÀ¿„Èv?{Hì>!ƒ=ÑwP?vpèU”È¿m·î?ƒ¼¿jÎ7>~ý¿T3Ü¿[j =~¨ >„Ì?“Iß>4pð¿Ù¿xea?‰æÝ¿\\w¿Yhâ=©Èˆ>)š×½8Ðx>1¿{å=kÒ?sY…=à¦=vÜè>/@ç=¤=¦µf?`‡µ?Êý¿slT>(àh?jÀ@Ìæ=ws?—¢ä>~@Í= lŽ¿‰%=T 8p¿€Í¿fUW>8?…áÈ=‹€½æ¹Ü?Xê?ž˜¿uEí?\L?“¯=¿t<ë¼ã¬è»ºô ?‡Vþ½ˆ}€¿n=¼ªÈ?lñæ>0ÿö5¿Îzè?‘Þ~¿qñ0¿raö¼:`?†ÑÚ¿Š®×?^Ü·¿o±’=Óî°¿r,>;½¿7l=žñø¿ˆå?Ž=M?`Hì=i9Zdæ¾[0À?‚èó?yÖ$?iïþÙì?pš¾5ä¾¶–<˜ ?i³˜=(wœ¼¢Ê?ƒŸp=3&l?qÜú?eöö?WýX®e?ƒqß¾6½Ø¿ŽÀ¬¼wÿ?0ü?VKºǹ?gæ=Ì\;Ñ5À?‹ÙB?€˜?{%нÁ]Ô9§=»ŽL?Œë=óTÆ?„âü3ØB@X¿!Ù?v(þ?rö$½V˜@@á»Æ2?57`¿Š· ='4`½…¯è=àˆ?hlü¿~䔿X¬©¿•. <í}p½‘å:?àÙõ?kÍÙ?€—4<Šxà@Ó†¿}%ö½£9œ8¼s% ?i’ȽÆ@½Ÿf=¤©ˆ¾moF¾Ywœ?‚Ôæ½KöX¾ W"?†‚¿{ ”;¼›À?bX?yŽZ?~ F;$å€?‚_ˆ?†cJ½C½H½õù?òë6>P®?ŽÁ°;ýc="°¿uš(=Ñoì>äÞ>hM¿r‰¿¶x>!j0>Å> Ci¿Z-z=2¨4¼q.€=ª’=eöä¿hŽE½'©œ¿|\ž=`æ¬>œ¿VÜ9@m©?†ƒ?…(ê`‚¿]\´¿…³„½>Ól?‘5@¿^¬=?\m½ð?‘ä½Cç¨?wƒc=¶Š=iÞp¼ý|¸¿y­ô½Ñv<> _¿›³+>Gâú½…úø¿uº.¿x³==a§l?ðm^¿Yi=¿sŒ?…NÁ?xÉv¿ìU=7\=»Tx>JE@ñ$=–L?mºj:Á}> ¦¸>­½=¹Û޾ /€¼‚ ¸?„ Ò=Œ‡?juP¿m<Î?„A?{Lp?c×l?‚Èо:\=ŒÅ༫¿‚ÞÂ=ó D9ì=/jh?}Q=´À`?Pž?«å?‰áx?}#è¿q_Z?nF=Œon?€ÿ"@½L?€¯×=°¤?E´º¿g¹?uúÛ<ä@p=(úŒ?|¡Ð=w_|?Ãû¿” )?}»ò?mþØ?pÊ|?}x«¿ÅP½¾D<¾)×?k ?€qa½–¨`=˜ŒZ¼‚Ð=‰¥½½1,>±F½Y¶¸½ÎÆ=m®¨½ÑÅØ¾Tܾ!?ÿó»ÒR@ÜWA úW?uD>¿Y¡Ò?n«¿ƒ;L¿xÍŠ?ˆóJ½M”Ð?eç6¿‰=^¿…Vï¿… E½ˆ?}=Ô?{¦?t"è½è'0½!6è½u|¿‘Dº?aÍv?8l?N u?}t¢?8s¾\a¨¿‰Ôº½½b?T&c¾‘D«=*µô=V<½-h¾x„¾7hS¼ýšp=£(?n@=ZØD?f?‹¢?M² ¿c-<Èäp=›ñ?ès¿¾œ&v?mã€?{ú!?‚´»;®?…ƒ&?êü0¼×‚ø¸ ¨¿tô>+3<Œ=¿J±ß>K—>™ÚZ¼Ph€¿i™¿Tì =ä ø=d˜?(f½1ø>£º˜{>&»<=ô'È?Þ¥¿v ½‚ðø¿‚´ö=#£à=ÙXê¿ÍÖ¿ô”ñ=Voø¼–2ˆ>î=‚],½ƒ`=UD=6/ø?Œ¥©<ô—h?mêQ> fŒ@y¿eÝ?Šƒ0=ŽZP=óô=f9„=b~(¿-!¾P”=å¶¼–þ=1Â=½~F<éø°?gR€¿k±å¿€ºÆ?—¯?k–œ=Ù´ü¿j:5?‘x?†ü½Ü :=$G€?‹oˆ¿{Û0?‡˜k=†\=›K¿w6)?qËὊœ?ˆ6<¾ x¿qá|;£?¿r „=lt?c½j½Gà½âÀ=ù²(¾Ì=|[ü=’µÐ?ÂÝ¿k.>8{™=iä¿u¬^=?eÔ=Ïs¼> )q½½3~¿„ÂÏ=w¯À¾§Ö±?n›>=å1ü=þŸÒ?„Ž­?‘äÀ½Ž…–¿{0K?x–?‡ëß?…t´=&H=&ˆü?ø¸Ò½ ?”5=c¤>G?u5¡¸Ïð?ÖÉ>2ï ?maŽ¿YÚb:º¹?q­'¼1‹?ƒcj¾$ýz?s6²?ê+Þ?ï øAÍìB™ág?µÝÂ=N´,¿‚wm?…vþ?u ¿p`ò?^­Ë?”Eù½NÊ=Äo&½ï‘п‚¯L½óÌ?…2‰?nÛ=¸«°?#WN?aíh?jÿ¼¿¨?h™h?ƒO=ˆcÀ¾&¦Z?Ì{?Y5~¿Š¶¿íiÕ?`áì?tüм¡ëмq(À½9ú8?,w0½ (¼ÏŠ¿„Bz¿;5?z¨Ü¿}/¿ƒÂ=·Åœ½"¸½Êm,?yø?w±­¿Œü~?f{p?P‚ð?…an¿pVŽ?ì¼<åïн8³8¿Æs> r‡?‰v»?døî?jz=ks?êX¿x©«½0|P?h%?Zk@?pê"@;ªb?‡iY¿K5.¿e‘t=ÔßÂ>šÿ?xÀ½dÅ8=®Wb?Œ®='˽+ÍÈ?‡Sd?’––?…‚Œ=wâØ»©4€=±ú쿆‘¢?ju=*D¾ƒù¿k²@=žWÈ:ì=¿µ?‹¦¢?s©}¼^ýP¿5ÑÔ>î ¿˜K¨=Z‚h½È6 ?‰Yοh€r¿s¡¼Já°?€Â_?€.b?Ind?kÌÜ:ŠŒ€>žì<Ô„p?å¹?ùé-»Õo ?l¾Ü>òÌ?eh4?U[Ê?Úœ?‡,=P T¿hÛh<\>€=•Ç8=ßD?‚e©»½N€={Y°?Œm ¼P;Å2 ?ƒ5¤=_±Ä¿Š_1¼ÞLà¿tDE?e&g?šA=Aô=¹¤;w>]ñ~¿€ˆ> Ø>^)<Ö–ø¼Œ P¾S¶Š?fÇX¿{á ¼3`@¿”wž¿›¯Ë>(¯%¿U’´;…@?zN‰¿Bð?‰ä¿y¹Y¼ôà¿gò½™@´»õú=ŸØÈ=ß­$½ˆ'Ƚ {,?‹Áy?m¿µ?q‚ÿ½_lÌ¿…Ò¤¿‚4?$?ƒ%8»öë ?{÷ ¾Ëì?˜d<ÃJ>.³‡<½Ò€?ì¥8¾ub¿]ï¤?p·d¿‡®ø½¥À ¿x@è@>ºj¿ÇÞ¿!º¼…oпZ_\=/}@¼aeÀ½r >TVª=¥ì ¾Þ}¿ƒ°½ÿö ?]Ç?ƒ1¼„Fð=(½€WØ?úÈá?.,„½øH?oBŒ=—lÚ¾ ?{O鿃#;¯þ@?„Êv=TñÈ?|†§?r%d½pãX?IºŠ=ìé@B½óØ?{ÐÂ=ð.¿uet¿†Ñ='(`¾2 ='Ƚ?Õ8?r›g½M•X?„mÊ;L®€?n6ë½1œX=»`½‡â„?þ-ý@“–=k—è¼\ÆP?‡¥R=â—T?’™?e $½ÙÂŒ½û†(=™Ôè¼ÎÙ¸?7?i-n¿iÌ?‹?Z=~>™¸?ŠÆë¿ý§”¿E¾Þ?Šd=+ ¿U6¤@ a¾>)É€?‰¯L¿|ùÿ¿„Þ?ú¦¿MO«?xÁJ¿]1m=Å @>!&Λ?hœD½ë©ô¿yš8¿|A0?”u¼§ P?œf½}˜Ð¼ 0¿lÐÑ?N‰À?ŠÎ=G =½´4=Ý;Ö>Ô¿‘59¼»D@½³äÈ=}Ƽ¿f³Ù=$ç°=ˆ$½§hÒ¿ŒÉ=7Ø=Å€ê¾h[\>,F=¬ú=ŽÈæ?Ay¯¼‰×?oq½UÞ8=2êœ?†Žµ?Vª˜?ú=s%ô?/z½ëæ*?€†?xë–½#¯ ?)T>?Ÿë=T=ÑG0<‹oпƒâõ¿`ˆå?‹k]?U騽c¬à½Ž§€¿@Ùø=Ù½©‹À;\?÷ò8½ê[X=åúì¾?w¿|d¡¿ˆU¾¿Åô¿)¼D_à?kþ¼?OJ(¿søþ½j˜¼Ä‘€¿íL¿+|¿uóå¿_<ö¾å;ï½ í@¿‚ ö?ƒGz¿ž {?r5?~fÈ:Á €<«i€?f)[?…ý½aÑX=‰¬¾”ÍÞ¿i+•<ØPÀ=äh½ÿW ;Ü/¿X¢?#~r¾Mï>½Þ¿…Ö¿‰æ½ÚI„=³zÔ=¨ú´<šà?uÕ~¿í?g,º<éš ?€4?Žyø½)òT?v±ž¾ñ|á? f¾};"<å‘À<êK@?E-=€?_æ„?f¿»½£H?„ï½÷È?‰ŠS?Ž×?éä½ofP¿ˆ¶=„ú°?}#Š?ˆ©N={\0?û„>,¥ ¾á$¾bíÆ¿u£.¼åèh=æ.=5h½Êíô½á±2¿S—¿v—༶p>žf=оL?J<úæ<µ¨à¿ƒL(?qÞ½óT½¶÷?j¡©>[¤¯=’5¾<н ûä¿Q/ý=Sh¿wÍì¿‚eC>_¤õ=€‡–¿\s=ˆn?†)ª¿|Ó½á¯\¿y›=šWÄ>MôB?„Œ9½½°À¼J`À?‰Í•=\9¨½´?p =5 X½3¿Š½ö?‡µŽ?w`£?_¹[¼K·0¿B{¿Rœ@ 4=ÍL½³÷œ½Þ> …ú?véD?ƒ .?ˆÅ¿um뽤»ø¾MvÜ¿jB¿m'’¿’$?€¶?„\ ½ŸÔ?l¤’¾=Óö=¹ÈŒ½ y(>/¾н(Õ$=ÇIð?çþ¿ˆ™¿hµ£=¦F»&x€?‡¹È¼LÉ ?a¬½½µÜ<[è?_òM¿~ ¦?€€5½´õ~?n‰È@*?‚Ûß<ÏD(?u³·?¸V½8+h@@¡ë¿]QAÀH|¿‡ç<ïG€½Ö0˜¼åÀ¾€˜|=n¼(¿‡®¹¿‰¶¿xšú¾†ê¾:¿ƒN†?†ôc?jp–½‹C¿‡×½µs°¿‚D,?}˜?q1Ò½*0¿—õ.=|Ax¼Dþ?ˆ"´¾ªW0?kø4½vHH?hRH<¯]=—¶4=}:8¼¦oP¿ŒÔÃ?„_`?A{À=eQÔ?2æô¾àb?f b?k¬a?ê²ô¼9F ?X¼ª?O#T?k.?‡Ëä»cù='à?}_ν l<€X¼§€?~³}½Âì?4Ýà¿h?Yƒº=©ñv¾S)½B丼ú?rÉ?ö[¿?‚4S¾kÆ=§è½÷ít=½ÈÄ?™¾˜?dO¼)2 ?;§’¿‚Kt?sÛ¿yUY>9ç¦?mÅ¿€%ž?nˆî¿ƒ&½±r ½¸¬»À>rà”=œà¿ŠÁ½|Hà?‚F@?¸?s*×?KÚ&½ ȼ²Ï0?ÃCÄ̯=“º½@Z€?†Á?R¿íAç¿æZV¿kž->Æ=ø¿à=ÌÌŽ¾h«f¿vÑ>×=^Zü=ŸL?Ц½zÚì?ƒRu¿…¤œ=ûÜ=ž|ê=¦øÈ>yõÂ={ÒdÔ?•¸<™¿qìb¿I}ǽ¿ ¿tœg?yÍ:?{Öß=:c8¿­?Œ­¯?yË.=˜„ž=¿ø?]™4=fó(¾t¼>ç§¿ä^¿‰L³?‡Ï;è ¿bâ.=›dœ½¼­ú=}Óp> ºO¿xHE=wº?wø?qâ§ã-?/ ^¿›b¿z G=Aý½Å7ü?h·™¿px$?xZ>¿g²%=p P½ä:ËJ€?…ï"?Wì¯>ùì@Ÿ?ù*u½ŠÕÎ?„%Ò?êÌ¿va?v Õ?rô˜@/µ½> |?„ÜN?öhÄ¿@¢?gô¿†vT=Ÿ³¨=£…?ôsÒ¿X­å?~>ž¾`=ôE~?qM^?2"¿‡ ç½²jÌ=æk˜>ø?xv?rð?núR?’П¼ü¼@=eÔ?~Ÿ¿’’„¼íå0¾pr¾ Žà¿|X°¿'à̽»EĽ²™´?mnf¼¾˜0=¤ML¿®`>¾zÖ½Id¿…+轌qp¥Ýü¾;ž?f˜Ò<9`?€/?oɘ<`÷`?zN½äÐØ?›Q‹½¨ª<¾º½Zsx=ýL>`¬e?l0W?ts*;L@?t‘¿?vß¶?n_ž¿Œ`ä?a Ð=Q¤?rik?Tî0¿ƒ[ß¿‘©Õ=Ó˜?u¬=î.ˆ<ƒGh=ÝöÊ¿‡Û<Ð@¿ Ï <üf ?¦§½6N¾\š>”±¼U³p¼§t¿`=©=ºãv¿mê?–­?6â>&›=¢(¬?E¿gîð>@åª?¦îì¿c=>= ó¼=Řè=¦óš?‚ ?”¾š¾‚$¾¿2I?|§?cr=XT>Y$Ä?~Y¯@+i¿zTŽ?Œÿò=>›<=aX¿D%ú?ƒ¼?•2u=Éšê?ô#{?‡½>ê?…ÿò?rÇ–=3ÐÀ¾ɶ¿hÄ›¿’é =üŸn¿m^=Á³Ì½îÈ=UÐè=› x¾,uF=:¼?‹È>?N²Œ½ì4t@ÌE¿_uÊ=JFh?•><å"pº§s?~·¿Ž—‚?~àM½Ÿ¥ ½Ãˆ”»ðŽ =é`p>ƒA»ŠZ€»ví@¾"è>hÅË¿cèL=ÖJd?ñÿÊ¿ûh¬½ÃÕl?ó…·=¯¢Ä¿l±º=\"½± ¿ÿx4?s[?}_~=ðØ&½HÁ@=˜t >ÉH=ÇST½Þêl?|¡=æØ\?‡øp=\=8|°>@s¿…1?‹FÖ¾cˆ”=@¬=–°Æ¿u×¾GR=i ½„==L?vƒô@W?}Þ¿j'n< ,@?‡ŒÀ?èÇè=ɡĽÙpd½>’¸>ÞÃ4½g¸?fÂ=wf8¿kV-=Ÿ_<=·ß=Ø>/¹²¿ˆ$¡¿ž‹½yh|¿aÑ&¿«å”¿h) ?Žc}@ÔBÂ@B$¿oåç=ЍÎ=ßäš?SkK=‘±,=3N=ºs6¿}èñ¿SnÂ<̧¨>jÃÕ¼$Ép>@“?¿h—¿|È=5|?„€Ô¿w?Ž¿Tb%¿S0¥?“ª&?ZÂ/?(²?‚ô ¿Z€=´~@¦¼Æ+H>6n?Š$>¿ø¿¤x=&U ?SK—¿†’¿ˆË›>#Ÿ|=É<¬½–rü¼Øð>%¾V¼ãËÈ?…2 ?wÂB=ÃÁ =‚j>ŽbŠ¿x¤Ý?ŠU@½@D=¹©Î¿û¤L=èJ?xÛ`=Õšt=šÔ¾ÒØ=Sx>Am9¿„x±?÷°`?MÜ6¿Ž®®¿ŽJö¿œ^ò=‹Ü?wd¨?d{"¼Ü4P?†^¶?voŽ>^?ŠœS@¿Ê=¨Å¬?ae®?|Î|>MRQ¿ƒZü?k§¤=b[`=Ä¿‚kø=Oà>_Hc?w_¡?o7Ø<­Ý`=B3L¼b-?г¿‚Á <³I°¿|¾.>G½^?v¨=Ôò?€%V=™;Þ¼ÓÀ½ÖD”½A­$¿w(]>*c_=¼ñÄ=òsÌ?z·š?Hçž?=™à?xÌù¼¯fÐ?uª9=<> xR¿\Ž¡<…|€¿já.?z­?…°Š?Ï)¿u²»?d›Z?µ°½¥¤Ü=]?UZ=R¾bPZ=V~`¾lÒ?‰¾D?‰hÖ?r…˜¿šŒ]=ÂØJ? ™Š½‚)Ô@\Ý>>½ ¾?V+_?ˆDb¿ƒó}=£ƒ¬?‡yj½ðü?k²½Èá˜?TŠ´&Ñ¢½ŠTô?K¡y½.­°¾îD½¦-â?™p<½›ÏȾ65ô¼t?ü¿úÆ?\\k?p’È¿~ïOl?vÑ¢?kŸl=ψ´?îêt?ð“GÀ»½üÈ?62?‰2;><|¡=ëÜP¿t>®¿<'=>k‘?=á´ø>&Ø—>Bâ>äè=É‘ >o¿êj•@:T9C‹“‡A×Aì=­^ä=ÿV¿l˜€¿`›R=©U¢>7¿Žj?Ž„=‡ü¨¿y{ ¿€ô”?“~?˜qN=Ò+–?qäb?€5A?úC½ª¢0?ûÊ>=Ö.Ì=*!p=KL”¿WË¿Œ|­?ˆ:j?ºä½I@h?f>ì=øù¿¢¿q3=]Ê?‡´ƒ¿!8»Vä?ˆ4< ¸=ÏPâ>e0¿hÿÈ¿pŒ<ð³à¿€/è?t,-<ݰ<Á¥à=2¿ŽæÍ?‡ 5½Èü¾ rë?qdd¾Wxê=®ÕÈ<(Í@%kþ¾°t?z…¥¿€—1Ê„¾Ýž¿µT’?oça½J¨¿“re¿sî轃 h?—àã¾ Ä?t7½ìT0Õõ?€·V=¹=»ZØ?‡;Õ=ཎ>ä¿x§b?[“Ì=DÏÜ?qjJ¾-?w/ï¿VÐ;<ˆ…Ð?Y€j?—î?vŽ©?‹.¿?~ÚÈ¿^¬¾#ö´=äƒ?wû¿t$8?˜R|?k|K¾´>܈?^îË?ÑI=À‘ž?ú5=k[8?„6{¿ƒè¿la?}ñ¿?v«¤»–€>Ÿ?¿vj=W@¿ynÖ;† ¾7²={,Œ;=€?…’¾]¼ã ½Â¾Ð½Øò½ÁÓ€=Ù¤4?Z§¦=$(¿pé>Gº½=}± ?q`]?Gh~=ð£ô?Š È¿÷a%> ÎAPŽB@~b£¿ˆ!D¿LJ::»^?A8ƒ¿qÇg¿i®¿^¹¿rz>ì¿€p•¿\ËC¿k(‹¿f“s¾³Z'¿pB?gãÜ=¯Í½Æ0´¿d±r?ŠÿV½ó¿N®¿‹¨.8¶=êð?€ç ¿vT+=ZŠ€¿†»r=äd¼¿|Èz=-ét?vQ¦>¿×@?³=”<;æT€¿p€š¿ˆ‰E;½à=ËF<F =­‘¸¿xc ?‚ Ú¿…­`<ÑjH¿‰= ò´?rYþ½Õx¿ƒv>:Žï=¼”?wäë¿‘Ž><»{¿Yv»ï逿<7¼xX<Žø?ˆAɽª¦x¿Z ·?‚?;=œÏV?A<¡¿f;Ó½Jhl½?,”»¢ó =×ür?X³?T¤“¿zÀ˜½÷U¸¿„£Ý»Ô½îA¼<ª=mšø>%ªÀ=¤7`?ˆßï¿rA?i¨À?ò?Œ•Y½ŽA佬Õ2¿þuH?k¯+¿zô;L€¿¼`¿i]‚?oøý¾riÐ?q%l=%/`¾¤Î³<Ï#¿‚оcÀuí½ Ö¬?kR?‰Ül¾82>N#½§˜> ø(½2^H?ƒ—@½Hð ¾KÚ½W ?n«w½\ˆ;Œ9@=Ðb¾,r`@4ƒè?zÓ¿Š¡?|ÿ‚?´ ½‚Ƭ½lr¿Œ X¿ù·:¿X+$=µ8Ú=ÈyŽ=çØL¾¤m‹?iØ‚¿ ?ƒ€Á=Ô ¼rƒ¼ùÛ°¿6??b£?…Á½&˜¿³¾Î p?ð¯.=O0¿ˆ˜A½iö¨=xgü=̡佂lö=|T¿‚ÚY?‰Ï€?¯š¿’ž¼Ï°¾¾=³¿‹·€?‰,½+À½!ñŒ?¢ß;nl€¿óÔ½OÔÜ?wíÆ¿ùRK¿ux?‡ =ÆX®¿Q{Z<—Žà¿î?K?t=)L?ˆ©É?…¹—=œn$?‚Äú¿zM6=ˆ„v¾¨x²=Áù¿°¡¿léÚ=/ö\=— v¿†"g?„è?Š.Ô¿z_V?ê¸B¿[#·<ýX¿vÔ…=a« ¿SÕ¾¯Âï?‰A.?~øØ?‚V\¿~Qä»›wàw—"Àä~;|ê€<¾š?xE.=¢”x¿r² ½¸õ8¿px#½‡‚È»9‹@¿síÂ<øp?‡óg=&Ìн÷s¬½ôKȾ>s꿌ҙ½³rè?†"=¬H=Irì¿|Ö$¾YGè½Tà?^M =²ÿö==fP?wÒÝ>E–¿xùw¿pø@½ŠUÀ<Ñ—¸?pÌ󽤟è?h¡¼æ ?o€c= ˆ½žÄ?€³(½€!࿌½^ݬÀ—‚;OmÀ½‚<¿}·´¼³‡°>Š'¼ˆ³ø½¸¼æÀJB¿–aË;Ùà=€€’½•!¨¿Œ‹P?e!†<ê!À½VÔ¿“Ó,¼×x?:°þ?ƒz½‚=¹„ä¾mûh»œ`¿„À<}§€¾Qrž<&0½î¿ž?|œr½T„?^h9¿ŠA¿m´‘?ÔÆ‚½ã-?pÃÆ½rrè½÷?f¼°½÷–½–Ñh½ëú¤½ŸUÜ?b¤Ø?z\ê¾s&?‰¾"ý$½µ¨?øà :Æq?ØQ?n˾üˆ?og¥¿z?h:–?Qý6?[–½¥:4?„7‡=ðƒ:¾‡z¿‡B6?ì"-?õìÙ<«¨€¿kе½9<¾tွb?]ôö¿g6½~.@=s˜=,ø?Qï6?š²û=i„?IF?_ºw?,E¤¾t¼¾é´?k̽ûQ¤½¬}¨?Y‡÷¼rö¿’ga=0 h?€Ëq?zPÌ>¶gŒ?Š!ç=ëeþ=ïrþ¿}‰4=…WÀ?…C—¼nÖ ¼SÍ=°Ž¦?†â2=2d=¿ÿÚ?Xq=‡ë¢>°Œ=5´,=¢çp=ljt>+ÄŽ?”ͼ¼L¦@¿hʾT`¾Î?ˆ‰#¿u”@¿M8~?…Ñ‚=èëÔ?ùºê?Œ5ê¿í({¼Ñ=±!ú=L è?~ór?î¦î¿l“J¿J-w=ë\=ˆ‹Ä=‰0ü=¹°r?:ôˆ¿dGâ=Nô<¢Ýà=*½·“ »3@>n-5=à±=Òò?€± <8=?Š^¿g¾ö=ým”?Só´½½m6=÷Ç”?ŒÆ<…'P?m·²?h=¶¼É5P¼’÷H=–bð¼èÈ="8>Ñw?‘8¼/§à?öÝ¿ŠÊ)½·t?R =ÛÃä½W¿fqʽ^è¾\ž´;$á?ør¢?‡]=˜¿cd½¾€H¼9Ì ?釾¼¼n =Ú2â?tV?)hÝ?|üï=`2¿}_?û$¿…øO¿˜L?Ž'ë½ÂŽ ¿ù…Ù¿uK ?û_?P°F?{˜R½‡ó¬=Ž ü¼é ¿‚‡z¿‡‰I¿Œ?‚©(?~~?…s=Äò?Šöà¾MM®»or€¿™ƼÉ0?j¼»6?fbV< ?ˆd?Ú?…Cö?ðoa?bq?i4¦¿s|šÝÊ> E€>5>LC@?°õ=9Œ€¿V$v?‘<¿mù¤>TÙ5¿\£P>Vp=Ä6¿N±"¿m‰ý=tâ”>pÉ¿i.‘=H= I(=[È >:ï6¿tÁ[>J–Ÿ½+Ú ?s¯¿~V?–s¾<ÁÕ€=Á˜X>oÓ’={ =@:t¿l:’=ih8¿g¬¿}_X?„ø×¿q'?ª>eg¼è>9#¤<¸Ãp<‰›@?“ „=Ò3 ¿†ÿ—?„–‚@¦£¾L[è>-Þr?ˆ’Œ?†«i?cŠü>P ¼½õ¸½ï›Ø?`<>³•?~rä><áP<­ ¼™z¿…Š(?ïÐö¿iÏê?‹ |=’ ½ ¥ ?•¾]È=¬ïò¼³_`?ˆ?n#k=+†à½3Á¿pf==Œ»6½Djì?„[<‡å ?„Yc<îÍ =eéh¿zÜ;ZD€=g.T¼~F¿|¬c>\x`<øî¸¿{àD¼-¿‡tݽ_WÀ?cV¿ƒÌ”?nk8¿+¼üð?„½6?A²<=ØÞN¿jHc½Öù°=Ý ®?k:;Æ@<›°p?ggÚ¾>~ž½©÷X<¾ýX?ÿ%\=×(?xñâ?3r¤?† ½ R0½Tð?“WP¾<訽¦±,?…”„¼$F=¯êâ½¹ËÜ?yrå¿…g>RH`>Î=ø¾ Ò?w²$¿f0=6W€?|K=»ï¼€0P?|’4?r"?ö=S?‚ô»öi¼íj?ßÂü?‚õV?Gwˆ½ÙZH?ƒ,ß¿xøW?ã'gÀÄ;VÍ€½„ŠÔ½%„H?•A\?3Š›¿UX½nÆ»ÄW@¿“¿~?q„?ÕJ½n”?† æ=×[6?3)½iuˆ=œ¼¶Ùp¾ á¿©1h¿‚÷)½wÈ8½×X¼jÈ ¾g^¼e›`=¨s9… =ûY¿sI½?:yè¾+G=ÓÏνex»û¶À½—ñ?fÒ5¿.èj?ƒH¿G¶¼H <$ ð?p§ú?v¿à?kâ¿ /£ø?ß’¡?ŽÃ?”ßã>$ܼiÀ?€ˆ>9ö=dì>äÿ¿k‘>&0/>g²=êb=+Éü<a@?~¹ö?€Dr½\=äØ?rBh¿‚)7?4¾¿ÿO`>G{¼=î‘:¿U;H¼m'`¿‰nö=Z¯$?…Ø ?ˆ™F=1›¨¿{+½1ˆ8=$\Ð?ƒ•à=ûZX?‰5˜¾‹ ?lð?}1€¼æQ=G¿h ½/A¨=š࿳¿e+¦?}(¿m•?w{ñ?‰~”¿€  ¿‰I*=“ ?€ M¿Ô?tú„?†s°?röh?o(þ> |¾$Þ¤¿©w&¾.AÆ¿ˆË¡<4°¿XˆÁ=Ô¦½ L¾ê½³ÓL?5ì?‚û}¼Zǰ=Š1:¿ƒÍõ?p§?yÝiÀ\x¿Š¯/<àÒ?2¯Ž=Æö ½Ì÷l=W½ Qà¿i^¹½¤1Ú=ÿh?q.ö?Œk?ƒw5?ySL=|QŒ½Ðop½5Ép¿^Ú=ñ½D;ªHà=}¸¿tr*=%‹|=²Þ½2T?öñ½Äv<Ü¡ˆ½IéÀ½Én”¼gp=.P¿ƒø¿u>’?‚7›½=LH>ÓT?ñô½½ês¾Áº< P02?{7!¿€Åé?Í?„·ÿ=6s?TÚþ¼ÈìÀ? ¿¿Vðè¿sY£¼+;à?$>>ëy;Á¬?…Sâ?p.ú»Å®€=ÅLð< «h?p(¸?yLV?_^ö=àïT?ŒÌj½f:0½v€¿r¸º=Fd°¿‡®½2ž?Y“c?ü>¿‡?\=°Ä–½—꨽è/ì¿•Ù¿rü†?w©·¿zâU?p¯§»¹ñ =Gü@?UÇ–¿xrµ;S€½?M½§Ý"¾Izä=Ê9¸¼¢4?‡Jæ¿~þZ¾OaD=ªàn@7gð¿HÌW?>ý?‘¥=°/œ¿mUD?{<à¿iËÝ=X¨>Ü\>2©W¿EAÊ?@È¿Ždú=¿J=[ì8?™r=·X†?}åô=±´\?˜?}¿‰=Ï""=¬4œ>˜Ä=‡Ü=–³‚>ƒö¿‘§è=´­Â»†»À?~À†=û›6ÀÓ<S€=;ZX¿weä¿xh?õ»c¿g'?ƒÛù¿k]¬==u>ÖÏ¢?ƒ£”?‘Õ¬=V Ü<âཀ|f?qW¿«ð¦?gwz=½Ñпo~¿V^¤=‰®r¿ÿË?~Ê&?ˆÀ0=@eP¿t7¿}³@$õ&?y˜¿„Ñþ¾Gº4@h«½7¥ð½½A€¾U}?zU7½QÆX=x+ ¿Œ¿ ½…=É,¼<ûW@¿‰ÜȽ!¶d?€‡;¤Å ¾mD;(Z€?Pž=¾¤:¿‹o½;h¿ˆdÕ?zÒ½ôw?ç^Í¿„ci=EîÀÜJ½±¤¾<‹¿|›?o?{§ë?Á;½²“”;¢<À?„_ä=$xØ?kn>V˜?Š„÷?õQíØp?†¹Ž¿zi6½çÛ?x%V?zNÙ?’¢Ã?ZÎÔ?féÊ<ÚØ¾kg>>½‘̽øñ¨=Ê¥,¿ò«¼˜àà? Ò=FX¸½¹Úô=bÂ躡]< €?‚›½Ë ¾"’>?H‡×?{.K:;Ä»@C¾["¾J{~?Yë¾?KœW¿uq2?dzc¼Kò =++=Éx@\x<·“?n`d?‰¥À¿F¨\ÀKÒ¼æ~¿|ì!;Æ`=—¬€=õ³Æ¿Z¼–¿ZÔð> $Z=õu(=ŽlÂ?{‰¿r®>o×ó¿e½î‘=Ÿfl½„kî=ú#Ì¿cmT¿TÚ=ƒj†<ì¥¿Ž— ?sÉV?n–j=¼¦|=gj¿m§)¿‚Bî?qeJ¿YÃ?<5J¿‹øè?ŠÊA¿|ì8=’=`P?às=ßÎÆ>Z°†¿…uA=•!v½…Ô=ä4ò?¼½?š|}=@öP?H ¿{I½½)ÖH¿ö]-=ŠäŒ=¶¾¿| ZÙ½†‰l=Å‘½Ü& ?h¹ ¿™Ç?stë½Ú4<•W°¼ ¦`?…–?ˆLí?N ¿u¡è¿mÛà??®¿só¸;¸€¿púl¼8N ½c`¿À~?ƒe’?UÔ„?wϼéÐ?Œ  <•„p?Ë/=[½[ =:h=87 ½³Œ?‚þ‚?D†\¼Â·X=¡-(=K—ø¾Ÿ?ˆZq=, ˜<Àà½=kÔ> Þ?ç“Õ½~!ä?j©=È9¿‹A¸=µ,Æ;Š =)ùh¿“nÑ¿a ª?í­=ÖH¿Œv«½ÞÑ ¿p1M?mJ‹=Y,=áK(¿…¿?†Bß½íè<Ò¯`½¢D?‹X?M? ½?ycÊ=‰¿…Qû¾Uá?ult½äÜ?ƒà“A[0¼@}ø¿}ŸÆ?t­Ž<æT@½`H?…*¦?\óÌ¿u¿§?xGä½Ò½h¿uÉ[= Ž¿{+J½ôà¸?ÞÜ+½“p<ÚSÀ?yVL½ x?n º»ä#½š\?_žC¿xØ6?€¹|?``>ÀÁ"?‡ <þ¶ ¿‘±>ó4=C›x½ìÆ?‹ÄÆ¿vó½ ¥`?†hC¿ƒÊn?nµ¾?\ø2?lê¾C†¾‹h?ŒŠG?gMȾ»Ð¾2ˆ<~Ù`?OJżÿõ¸>¸h?d‡ô@R™t¿p¡”>”ö¿`óÌ¿^‚-¼™wð?•)5>N`?—lÊ¿I !=d@~¿^S½¥ÙмРx?‘¯†=œ§t¿v à?Šü4>¦¾»K8=¾ 8¼M€€¿TY¢='Ä=«ßX¼ÿKH½‡Ð¿Qà>=õÒZ=VpÐ=씽ƒfÔ=çäX¿ýâD>=¥>¹Ð@6ν ˜¿p|¾?\~¿o¥Ö½‘Ž>„©¿‚o–>(6j=“!È=Á>½yà¿q ?{ŒT¿Zûå=îunó¿q·¿‹®~?p Æ=J‡ »†Å@½†Î=¦#Ü=¥î†=ª¾Þ»¸* =ó°=6Š>2&c½ Õ`¾ÁÚ?H¢¾‚ÿ¿Ñò¿†o ?E(;½Q½¾„?¢?S3ˆ=%Ö˜¼ U @qâ¼ïJмÖDˆ½<„€>*l½¨äÞ>›ž|<‰p½¸˜¼ˆÅh;ƒÀ`¿W’<¾o§¿•¯Y¿‚L¿uq¿yÔÌ¿ée¼à½øô|?tüž¿ˆ}½÷®Œ¼ `?„6œ=‡e8=Q8ô?NZÔ<Ùa ?qÜÔ½>À=›g*¾*ú”¿‡kOºè[€½êu¸=¦M ½(°>—Ø?eSпŠù¤=ꌿ[m¾C»ô=)5à¿y\À=VŸ,=®b½œvì½óZ?Ž{8»ö*À?ƒª¬?MhF=’J¿‡½¼¸`p¿–F½»¯À¼Ÿ?lÎ'=ŒCª¼™æ@?îm‚?~ª¼@0XfB×™Aç¿é?‹a?D2=¶Á´ NÐ?Z"?=á>¼E˜=£ë,?PÅ5½*˜>\Ž¼Í•€? P?IîÚ?Q³Æ¾*–Þ>þÌØ½&t?Z?[ î¿”«Ú?IÊ¿›å?nì‰?B ¼Z^¾Pkæ½Ä°@”ƒÝ?u…v?P\€>HÐv¿Rƒ¿\êü=ÏH˜>Ÿºð@ÿZ¿h¥ˆ>‚&€>¢æ<=–Ý–¿êœÊ¿ƒ¸V>. X½“î ¿bˆ¿pXH?ƒvf¿O g?e¢?q¦±¿ažã=”©Ì>W¤=àRT>gLô<ú}>2Û¯=Èã¿]¹:¾œ¾ì?Œ_f>R>°¿y¯ý=Jm0?fÿ~; (€=–æ=5v =ûºh¿ö˜é?[ "=Äп'5¿xö¿ˆ¨—?j¬=ìaæ?;î¸?àÞ=Póü?‚_2=Ž(€=ºp‚=$½€=Ê8>W?}³!¿~»Z¿…o×?pv=ÿÞ¼‡^€¿k ª¾§Â˜¼Ê¿,\”?„èõ¼Kä ½Êô,=q"=½„N¿~ ?fÆ¿zxÐ>yo=¯ñ¾Std¿|¼¦<À?(?3Ñ>ë›Ð?\ñ=š½Â>ô@-¿Íõ½©90¼×Z°¿UÔc=˜áì¾çο~Æ€»(b?}ŸŸ?gOļ… =,´¿‹ŽÒ<ß—p?x³J?‘<¿» ¿ðRu?„ƒ—¿x,~½¦ŽÔ¼мˆWz„¿ƒt“¿x¿.¼‹ ½HX`?&d7=N[8=[¬È=ªõ’?c:¾=âkÂ=Pâ¬?l+R¼<œ€?€u?ã9½Úiª;œ¢ ½üû4?çνºˆ½ò>ì=WOH½áv,=„äè½¥@?[]¾§ª?‡P¿ˆÄ?…ß@?vÛ=ëÔ=«ü:=¹…½¼ˆ.¿Ža‰¿~"½² b>[å?idŽ?_SB½hÀ躽X½ 0¿”œ¾Q ½ À€¾?¬^½¶¾Ie̾Ë/½Ü^L?ná^¿Ž~L½6à=²È¿‰Ü"½;«t¿nÓ…¿<É¿]Ÿâ¼¿ ¨?J–F@Ô}¾(5€<ÓÇ?{Ãt=ÃðÈ=†¬²¿_f‰>;8m?öÁþ¼\P =uÉØ>òÿ¿hŸ\=¸Ì=sò”=/Ý(=% ¤<Ž30¿\Å?âô½Õd=¥†Æ?Œžº>(Íñ=‹—H?ÃÃÚ=£<^?#I>îéF=g{(i-=Íâ?x¦A<åÈ<ŠÂh<Þ‰»ïb =ÅK*¿dÀ=òvˆ½Šæ?ctP½$<+µ=ìzÜ@–½a °?l =Çýd¿ÇX½™o¾¿pÙ–¿ƒ>¿jSL½´T¿z±½¥wÄ?ƒîG½wú=øÆZ½'h¿€í†> vb?ÍJ=Á1Æ=žzT¾O¬>Hªl>ý4¿ˆýq¿{†?W½¯„9ù$¿sYq?y‰š¼‡wH=Ò¡b¿€^E=Ž£$?r%Ø=Ïüâ½”•ú=áÕX?‡ŒÑ?q*½?¾=€?{–Z>Æ—?ƒÅ?‹—À¾“ =žÎ˜=¤è?yk”=ô8?SN½Q=ð?YC¿†zô=ȶ=€¼?wÿ‘¼ðj`½€dÌ?™¬?€èÓ¼í¥ð¾|©J½‡kÔ¿ŒðŒ?öfÜ?b|¿‹er>ֽĉ@:¶ €>Ü ?i2ž?ÊWº?|¢ô¿‚P=öã8¼¯Þ°½#&à¿{‰,?€šÈ?íöÚ?}ûý½vö½¯,?^a?†Ä¿‡y™=Jð½ñR!B†?•8K¿/à=‰óæ½^kØ?pi=ù÷T½X3¬¿€n½Ç¸x¾¯é-=—¸½‡|ȾYð?L:þ¾qf¿Œšg?d)a?[@?i+¬¾2‹š?aŒŒ½–ÅŒ¾!(d<´tà½ÀXd¾)·Ú¾6+Ê¿~Úâ?^³/¿¼¡{@?ébþ½G™H¿„-­?Yq"<Ñf€<K ½k7Ð=+$Ƚ 0h¾(¬„?o9uAo?޶N>eµæ>Œ¾f=Šøx¿ƒ•R<€=jH€<¨@x?”ÂD¿rÿ@¿MN?=¬H?ƒT =»v€@\#=t;t¿;-¼¤ŸÈ?ÌO<¿^Úv¿ò¯Ã>#a×>dXñ=Öh>œ¸=”@?…¾ûá?‰Üê¿p›ñ¾}?‰¾<¦ ¿‚l¨=ñBú½Wà¿ùÜZ?Sj>i>!-־½„¸;($€?a*U>Ð-¿y|i>„Ñ»0mÀ=/ÝÈ?ƒ®¿>IÌk½bÛ0¿þ¢¿‹¯ =Þpœ=DDн9•°?ÿá?'D¿¿ª‡<Ü2P?\÷¥=öpò?Å+¿|5(½¾C4=•?”¼´°¿hq½¾Ûª{¿–áY?hÏZ=q£&ŽÙ¾ùýï=» ¦½*Ò ?tX¼Dw>91ͽ…«ô?`ßd¼äm¿YiÕ½ú„¤¿ª¬?ze‘?@îF¿ˆøF¿vSj¿5Ž=z½JX¨½XÛˆ¿“lܾžr=¢Œ(½¦&è?<ÉT¾àˆ¿ H?^ÙȽþØx?qÂç¿–"?‡—`½;àØ?dFg?ˆw¿½C¨¿‹"ؽ¨TÎ?Œð¸?öˆp<P<©P=_Ø4¾g\V=£©?{g̼%p¾›X¿zÚ?bJ½–X\ÀÜÓ=Ò÷l?Ÿmø?Î7)=T7ø?|h<4€½Û‹°?\…|¿–@.¼¨Á8¿rj½®W ¿…y¾ùâ¾­ºf< <ô0½È¿sø¿‡¨v=µ¾¼ýD€?€ &?@và?€IܼÅ =4 ½p(¿{0½27ü½”„ø<ÔnÀ¼x­à<^Þà?nè?_]³?…³i¼¿^`=z4ð@;>Eo?ýê[Z¡ò?*Ä%?…Ç&?{Çæ<œK=4 ô¿S#Ó>D†=6Ö˜=H°>7W½FS¸?E@>%f¸=1ï¸> ©<>ñ=¨ ¿ñÒ=VëP¾<Á=ë€?†…Ö¼AP¿L[?‚=­?hsz¿€¨^?l¥|?ˆ:>(‹?fÙ4?nN“=‘L6=¯­°?Œv¦>8î?ƒ™=_¸ä?ŽTØ= ¤d¼J†0¼“¬¸?ŽH¿rû½"Æ@?}¢â¾>=– ü½‚ܽе°>3¯Î<§vÀ(£¾ 2?ö Q?wë?‡v³=­¤¾Ç?Š=¯f?û¿@¿W †<¼Dпq,ĽYY?†ÉÞ¾Œw¿‰"÷¿HÛ¿ˆuà?lM¿ŠŸ£=3Š€»€¿wŒ?hÿ|‘ =² ¾„²Ø?omÈ¿kCP?mñÖ¿”%?†ó~½Åó|¿mÚ™?wd ?z³š¿…Õ==Bh½â,ä?e¹4¹{ø?eÞr?}cd¿x!R¾cý0¿Žbå?†7˜¿lÉ><¿{Ž…?o¿‚%¼‡EÀ½c:оBx>­=Ð8ð@5zD¿“¬/?bLÚ=ë?d£^<ƒuÐ?˜ÝÓ¤>¿ƒvX½PEˆ?l8Ó?q8E<´ÿ=F+°=Íå¾¶à½{šH?xHÀ½ë6?sÄZ½Înø?ôßl¼Þϰ¼ÙÀ¼rA ¾)ÃJ?zª9½ËÏT?l~̽[](?µ_¼zkà=8wÜ?Wê^=Æôä?d„ž@Ù>¾"Â&½,ÄP»>‰€?:”¼zÐ=¨£?xú”=š¿ÁȽÌÅ8½Ž¢¿Ù¿?[€Ë@Ÿ=hÆ8?…Atªž¿q!™?ŸÚf?Ž6 ¿vb’?ŠIŒ>Ô¿i(V¼,Ð>9K>¿„äù?Š\“=ÿcH?Ž#0=hH=Úœ¤?…Ô»¿gŒ¿aÄ`?ˆÌö?Œ=„=ݤŽ?n•Ò=.œ?Žm=;‘+à=¨æœ¿g¦s=™…ê=§3ö»¨0=àÍ€=…=†ž¨?E¸ ¿db˜<öñ˜¿qN=³„¿€cß=ŒÀ?E°?ãF罤VX:éÁ¾j𿆭 < ?ó>Þ¾”R.¼­ª =d`¨?·Ð¿˜œ…¼²›P?†÷©¿¨á;?æéµ?r®B?þ¸o?‹!¸¾dš¿_RP½ ?ƒÎÞ¿t³6?ua =í¼ »?h?‹5T½×S =‡‹â¿v®¿z𼜡P?„ë½Вp=NI´@4=%Ìl½¤¤>1ü¾JR?\&¬¾ ¼¿z<¼Rà?}¼Ç…8<–”p¿i« >^þÔ¾•†¼É·0?qË£?‹Òë=Íx=Á]Ø¿OZ¦>aÄ?t»¦?ûªè?ê¬j?mj½cë°¾N¤?ÓQ6½‰¸ ?r´=«Ø¼½¬è¼ø´€½§B°¿ù¸°?iR$¼…ÿð=H¢¤?lUò½šz‚?Ž'j¿‡Âò?x8j?Xë+¿Š= úø?« ¾c˜”;ßE?€:¿ˆ F?DžJ=˜;è<áe¾w¸¼C@?aó1½ã ¼H`¿ƒV¾LfØ=oi ½âÏÐ?`Ž0¼ûÞà?sýd?ƒLÒ?b0L?yx«½ ë®?[Ûž½ÿBP?÷ÝÜ=ÃÏX¿zD?g¿¸½ü"à¾@Bv=%`?_j`=‘#´¼³£p?ƒUc½Åà8;À?·Î?Ê_»?ì?—·;¬Ð€½…œ¼¾.à? ûÐ<áо ©š½ïè?|«=½ Í`¿v—•½w’¿…+¾ £ê¾‡ê¾ð?…\/¾!2F?Z²&?\Åx¿ˆ ×¿ƒ/¿rÏŒ?XC½—û”¿zµ¿»†¤à½¾ûú½-± ?_ïj»öy@AuÀ =ä9¤?t@¿TÌ.?ˆ3N¿]F?±ø¿w.>\Vƒ>˜uÕ>0øð>–©>mµ¡?z·¬?øv›¿Odì>ì`¿’< >)î¿a¿zÜf=EZÄ=£¢2=ˆÄz¿„s?<°¾†â¡?Á½:°¿jì&?‹ ^¿e0>=æ•n=ëN=šsâ?d׿=ñÇ6=ÝÕN¿omF>€"¿[h”?eß½±ü¿a§Œ=Ù$ä¿« ö=b8>PÒ”¿uE=¦eÆ¿‚0ÞÀ¤.¿it€¿u(?~•V?vW7=C?Xf?MAy?†jÔ¿ƒo ¿Hp½ÿÖˆ?xôƒ¿€D*>^¨‹?a§ž?Ýa¦=‡[¾½pò =]š=^­À=mˆ»—Ê?j½UÈ?‡^l¿r‚A¿]à‘¿ƒo§¿{Å>¿€6Ü=W<=Û­”¿y3L¿‡2p?ŠX¼5Áà¿—¿Š½긿pK´¿™M¥<“3`=‹âü¼›ž¿ap›¾µös½ƒl8>Èí⼺û½ 2È?„Š5=Œlh»£g ¼>ÓÀ=Nð=+â½.˜?{-=Œ¶¿l5J¾Y[¾?q©>+´Í?biî½Ã2¿‚¨Z=~N=ôïV½kŸP=]¹x?cÃÏ?f==Xï¸?ä¶â¾M¼Ѱ`Àöb½ªë½«‘ ¿ƒƒ?®Ð=&=@½2È=0q4?½§½ß‚? Å¿“k½|¦°<±“`?ú)û¾ÅÜ€»¬K ?\¹~¿ö€s¿Žâ~?XžÄ½~ݽi`?^âL½šˆ?ƒûÈ?ˆÔ¿‰n»c½¹›ˆ?‚Ò{¿‚É¿ÁÉ?•Ü?]Ç÷½¨Vì=&ñ°¾"Æ¿C?]ˆ <9†€:ï+½ÇزK¿o³ ¿v³ä?{‡=ñ6t=цv¿Fp+,”¿ñ0à>öp=ú ò?tzÂ=d) >r¼Ù?€øS?„³?Ý2>·á¾Xqh¿V\d>‘É=÷ä°;Ô9À=G9˜a?‘ƒÎ?‰Ëñ¿OÒN¿|½3?rñ¿lZ²=ràtU8?m`µ?pŸU?|IN½²©&?#l½§ÖÔ»~?ƒ¦z<Îð¿qëü¿†''=˜C(?nào?s¾¼™'`> Ä1¿`ðr?‹\y<=Ï0?†ÖÊ?Ê?ºs¡?pü?ŠÀ„?}Í–=ý ½Ñ|>a£ö?…Sš?|F ½Ö‚@=(ï8<§\?Y q¼ÈÙ ¿|8¯¾ 6È<   ?=ß`=žËX¿–]V½Ž3€?ZI¿w¶U?t—$¿__¿y8T¿õ2ã=$½ ¼š)(?ÚY”¿rPÔ?^…¼¿p°½ôñ¸½z `>­wØ¿„Qõ¼·0½µ®Ü¿‡Ñ8À?Œê“¿† á:C?uÎÂ?¸ÉV?åê?j|&¼P­ð½·€°½¯Ê„½­V¬¾V!Â?P¸ó½.ä?€u?c ½fIȼ|‰à=4Y¬?w½¿=”v¦½ÛBè½+пŽJ??b(*¿‹ìó?PÝ¿‡¿‡F½È½Z½ ?_ßG½D—`¿…〿‹Fû>ië=±xð;O¿¶T@:gîA’£?dñ?{r§?Œö¿~ì–½êØ:Íè?† Š=E{½—ñÂ<ø8 ?®„@8W©½•‰¤A¨µ=»i\À¼å—¸?z9¾G—0<ÀÉ?pyö?UJJ¿™XP¿J[=Ü<=൮?Ž:Ç=˜)~?„s—=,¬Œ>0&l>F‚h<“fx¿v:I>šœ½/&?…ií?£4ú¿„N>?”z-?:á¿gÒ°¿cê=> >ÁMŽ¿:e»©m ?Ë?s+?=lÔ»Ý> ?ëùí?‚¦Õ=·—À¼Îx`¿|f¿«Ø¿ê›Á½ "> X?_Ót¿|Åñ@èÈ¿ùýá¿r½¿p—=§â¿?`¹Þ¼ó9à=§ ?Ë ø?[~ú¼âaˆ=Ž‘6?ŒH…¾)9ó?_2<@â@=« è?|‡L?ˆ²ÜBx'0BÀ&õ?ôɬ?g€ä¾+u?dÊb?^ëB>{;€A¿{È6?hs¸?ùFñ?v[?“Ík=–t2?zçZ?G@½Ýg´=,¥¿i½dâD<ÿH8?ƒb&¿…¦ó>Y¿†*?+`A»ÑA`> oA=¤eú½À·@?ýÏ?Z5<îeP?„?uD½°†?„„J¿€š ¿‚©½ä¿’q?í.{?†Bd?m–r=¡ Ò»Ãð€=…)D?ö”R¾ Ú\?{`>”'=,}<¿s43>Ó:¿†½¿†²&¼eº`?zÏl¿qJ½dŽ,?i¯<½Ú?Rìj¿sfB½ãiè?HŒt?ë½I˜>H0u>CÐ? ¥¸=U‘p<‚»0?ùs›¿hÖ£?ýäÔ?‹¨R?Ì?~Æ~½`­¬?åKë?TX½^,(¿SH>®s½1OÀ<Œ\X¼®?‘ =€TÔ¿‰-<%´à¿&ѽŸO`>Žý?r} =*?z–ºÛĽ{l=®7*?gÝ.?xú>À¿iÒ?o°²¿{‹½³‰Ô¼í0?|ÌØ=dh?z˜X½c!?aU<ãËмà;ÑV½ñè?9Ó<þµx½(»0¾ß2½Ž/´=ÏÙÜ=òðpAþž=¹Ê=™ v?ŒDš=·6j¾$S¿õEð¿NÁŒ=Ŷ?‹„|=Bã¼?‚ 3?|±=õ`¿oZ—?‚ó°=¨Lмˆ€=ÚÌ¿k¸>8pÁ=tUܼÛð>5J¿ÖC=6-¬?Šý,¿è¼|;Ó>w9ú¿G¤4<öÒ`<ÌØ>š ?z¶¸¾qN„=Œ˜$?‚°Þ?Tþºé`€¼øD=Mû¨½Üæf¼æV¾Q&è?Š‘½̰¿‰ŒS?ƒmH¿b=¿=[¤=§?Œ=ûéÂ?‰$-=пŒmྎªÄ?Œ•¨½†ÅÊ>J D?Œk¿kô½ìà¿zÇX½Þlx?î1¿‰>¼y@w£½A û¿€ö¿‰a?nÀ ½x[À?X_0=Ýö?­ðd¿c§@«Ö»¥‹`¼Ï€ø=;J\¾+Ã2?‚y°?|èÖ>Ÿ½òH>½•Ö€¾ˆH½‚÷¬¿ŽŠî?ì.ô¿÷Aå=ó/–¼: <&OÀ½1uH¾g½‡÷|¼“v`½»b¼^Šð½”¬?†ƒ >=†ez°=•¿H¿{XB?èÇŠ?m©@雽6ñ°¿Š»¼?}v²=ý=Š;Gî<ž*`½¿òŒ½mk½šZ¤=ç?K\’?„´=ªT¿wò>à÷t?dÁν² ?umã¿vMþ?…n?—éç?mn=»‹,?tiÞ½Å7¾`/½6z ¾Qô?Yg½Ž?I`N¿„¤ï?¶ ?rnë¾xÂ?4b@1[^¿›?czkÀß…?‚C˾|¾jwæ½§«P½UËÀ?†õœ?Z!껟€¾G“¦¿ú¼=1>ð¾8Ÿø¿tâÀšm¿‘Ëò¿n[½¶€œ?üÚA?ˆ ?Œƒ›¼ÿ“p?O£d½ ô?îÔ±¿‹ÝB=¨(½•KÜ@’Œ½=þ½dvh?`n†¼Hl Aúò=àDR== @>¶O?yW=3h?„‡ >EÔ?„2¿jF=I¡(>&s=»ø¿x&Ð=ðm–¿‚h:<‚íp>"z1>ÊÚ¿?ñØ¿¢ˆ=Ê(Ð?^ D>`à=ç–þ¿ô«?s™P= Å ?"æ?{Ly?‹ÕÕ½-Ú¨?€ØŽ?ƒæî½¡%¾}7n?jd?„KN¾0Äx?oñR?[LüÐx¿±±>¼íe ¿j ½˜Ã˜¾q¼½ŠÇT?dö0¿T³¿€s=° =í}\¼ñ«¸¿‘*ö¿†Ì„¾š¦Ÿ?;ÿ㽓‡¿i“‚?ƒeë?Ì‹?O¸e½ÖÅ.¼û5?†ó¥<¢#p¾ (޼³Wp?…Þ==Þz?a¾\½„*½æ]À¿‚Ç¿‡ÔϼÛãP?Oä:¿€é”½dû€¿ˆ”<«D¿†kï=J^˜?q×%¿‡¬•?ˆU¼âJè?Qj^> 64=…§¼¿,ä4?tÕ€?½„¿xÄ=¶ç?Yo=T{P¼Of >)Ž½Æ€½X ¼¨ÁP½z·?Öø„?T;Ü=ÙÉ⿎)Â?e¬Ö¼ÈÀ¾¼1ý½§ŽX=?¾°?6¾Oú*?ˆÉ¼ìçð?p.J¾Ì(޼ ¿o ­½D1@¼ÅeP<¦cX= º½²ÖÌ¿ M>ýȀP½ª7= r?_@É<Û ¿t…=ê9¿XÄb?C•ô?âõ=Îíº?i2y?ø€T?è2d?‡ ݾ½Âf?’ÉͽDµÄ?€˜/¾…*ø?Xtn½›ýÐ?ÞŒ›¿’ëš¿4J?U-H?c“úAUˆ³=8Ó>íô>"ïÝ=M[ì>0«?°Í¿wÙƒ¿jοr¶É?”8?Œî=ÌTh=å=¿Pz¿kÙ¿|e^¿ïRjÀÊ<†h?ˆÜ=œMÀ>WWö¿Y§¿i¸<󧸿w©>‚s)=°Æ=TÖ¿þ…A½’l¾<ˆ¥¸?Hm¿‚ïf=&1ȼf0¾qŽä¿}ë<Ô࿃X*>bų¿‚£B=žÿ‚¿]Ð!¿’R¶?‹Žo¿s‹K?Œñ*¿ƒÏÁ=‹Ñ~?‘mÇ=…íì=1Ëì> W¿p†³=Ö<<½l0X;‹l>TjW¿\ª(½SÂ`<‹S€¿Š<†¼Oâ ?l»¼|€½Ã4D=Ñ>”?OX€>®ª¿†*F=¢ ¾>1Yz?ŽD‹¿sO«=3lÐ?mÑW½‹ê ½Í‘Š¿&Š=†‰V½…¿Z¼a  ;Óbà>_(=‰¾=£L¸¾+&´?Œ(?‡¡½2®X¿Œ¹?f&+;¯¦À?ˆì=\¨¿šÉ?[<œ¾ ¼?o„?X$h?:l= g ?eø•?'‘þ¿Œ]p?uìˆ:×&¿ˆLì¼¥¹¨½àδ½MÓLº.€?DÃn?SÜ?¸?yX2?ˆKk¿‘²?ƒ¿ À‘=pÃl?ˆóò?mX½'Œ(¿zLé½Ci`¾ˆ³?ºÔq¿‰ÿä?a•à¼ê0?N=~êLÙï=…Ÿª?mûÑ>´è¿s§Î>mod½o¨¿qÎ;¿^ëë> ¾g?uID¿t.^>…t€?ŒnR?’>JD=«Ï´>~x½#Ö@¿X’->äG>/^x@än?kt_=IVT=Õz˜½X¿[¿SY¤=Úìf=f,½ùŒ=Âßâ>gb2=1 ={ã>!;=Ç*¿v?z;É_ < ¼+?}?Œ“¿†%†?„俊Ee?…•œ=`Ìð=ÎÊ=”$â¡=¿ù:¿zl§¾IòD?‹Û÷?|q‰<ÂP?6À¼=D ½¦º6:;¿¿&=—:P=œo?öÍn?]Y%?{[(> ¡B?† '?Ú¿†H—¿XJÈ?“˜?oÒÆ=¸³~?‘¿}`x?rBÐ=êüB=«½–Ðú»‡l |çÙ¾œx¿pŸ¿‰Á>3¦¿’â{¿…þ+½wÈ=»†H=¡€?“.ã½5Ę@HÄ=<¿¸?ƒùÁ¼¤i@?vŒ=z?e™æ¿xðŒ=ð´¸»Ë ¿Œ@v?+w¿WVc¿x º?uÛ?j¾è½!нO ?V•a¿ƒ©‘=vn½D È?ƼÝF@=xe?v×P¿†ß^¿Œ9˜½«Jœ?øhU>¾¸¿ª?SAÙ½!öp? Yq¾4?{½þ¾ë*¿u±¿€ÎF=Ddà½yÖX?zK¦¾¾ Ù쿞õ]<ê_À¼Ë¸€¿g£Æ¼¾ÿ0½ÃÆæ?ö!Z½j½è½<´l?Rßó½Ú%Ð>·.<§£¿€2Ò¿zÀÚ¿q‘;?†¾ª?Ts½Šà?€rX»Û)€@ì6?öÕ?v8l?läľ"Vá?‰o(¾Ró?n È=Œûx?N©?l¼$?Œ(?Œp ©޾ÿ©Ð>4©Û>‡þ?޽Ò=Ñ2B=§Äæ={ÓØ¿hÉ#?ˆSà¿oÏ«=÷PÚ¿mR=ŒL>$Œq=óz¢=OíD¼%9p¿Zßm=•@=ü¿F>ì2:cr¿Ša™?ìÿ?MÒ=† 0? @=ó5p¾V/8½?ƒ8*=¼ýB½»Ô½0½P‚p¿I¼¼Ê`=]6,=×™ê?ˆú ¿€Mö¿ø@=œ¹°¿~zN½™šÒ¿?…Êó?„[־ݚT?ŽÆA=Îø¿Zýú?i蔽~лKH€?«=H `$01?|¥ ?rS½¼˜e@¿dÌÌ?aäÍ?wôô¼Ëzp:<Æ=”{v?ŒT¿€wy¿|^޽N@L?€ƒ?f‰k?úáò?f ë<¦p<ü80?‚–=° \=¾£Š=‰ìÒ<‰Œ=Åö½fsп„ØÐ¿øb?oç½±¦?fy»¼aC¾0¦Þ?h!¿‹+Î<.t€¿`¡<€hx>:l?‰š`?t;C@Ûö¼ €?‘—½…0>/Ǽn¿`»oQ¿ŒØ¦¿sWb½Í<@=)ؽKÍ0=.¤°@ \,¼ @½m÷¸¿‡7=(½Iap¿ŒJê=Û¬V= |?…5c@ ‚¿sÍi?á?ô£&>,j?mÙ‡?k¤i¾inP¿…$¬¿‚ÀP<-­`¾Np:?v =†½Œ¾ Çd¼ø¸°<Ž90?õjk=ÏܾIû\>?|=†¨(¼D$`¾Cl½IŒ?wu^=D†x ú¿\B.=„!¾¿i k¼aïP>ˆùÄ>Z¦=â`=¬CD¿‚Ï'?Žàm?†Tj½\Ø„?ý¤¬¿ën¿ÒòÀ?äš?„<È}x¿nRâ=µ™Ð?=ôŒ6>?;„?0äc»°ê@<¿j1>5¬Y¿\~Ò>ˆEÒ½Ùœ=ÍB?p|-¾ ºè;÷£ =%Ül?¼¢>Oã¯?„–ë=Ÿ¼ª¼×„Ø>&5‘?—ùè?~Õú<·@H¼ªMÈ?ÃÎ<»äH¾%ÃN¾F‰ =Á1ò?ƒÑÚ?m.ò½´Û¼ì­¸¿‰Íµ»øZ€½òÅ ?fH†?aÓ=t$D?}$Û¿€dî?‡~¡?ù:= yÚ¿‹·À'‘¿ï=5Œ¨?à7½0÷ ?sWJ¼¦ëX¿Yg½?Nç>"˵?tËð?[>Ô=‘Åz¿‚[6¿†Ï©À7f¼¶ 车nÔ?‚® £V?oß?;40?{‘?LÔ ½fíØ?d€x?ƒÞ2¿†Ÿ°=ªJð½rð`¿‰H•=ÍT=ÐÄ=¸S|=Æ `<]Àºý2=#òÐ?`ª¶½_E¿‰-¿r.W¿Å½+\𿇋e<:l=‚†Ô<1t€=ËÏ‚?ŠØG½r?|Ý?ƒÓÜ¿v}?ƒÌ=?…É5?~É`>_7 ¿ƒÆü?Û†Í?{ŸN?wóݼ ºà¼ÞËP?n±ó?Ž7>nÚ<7 ¾+ó‡¿xuž¿‚<#Ü@¾%©t?䙯¾kˆ¿ƒf?åÿ?}s®?gg½¨T="¹¬=TŽŒ½ŠF¾M€¾©ú=¼öÀ½¬?Œ?\óê½þ«L=ƒl¼˜äp¿•#C?|ß>nÆt¿uÑ?ç…A@vñ‚AŸÃÒAÍöA§v„@Þ[þ¿ét¿qmŽ<Mà¿twî¿_…¥¿n8Ø>E˜?–rR¿:ň¿iÛÊ¿vÍÎ>0°8= ;È>c}¿dŸÜ¼³¾‰q¡?U†®>:O7;W³¿y»½=NgH¿l@r?†ô>åP½Ïù@=oTT?¡F= O˜=³øä¾M<º¼°¼à?h:}?FŸ¿q.4¿kûn;í@?<‹=âTŒ¼§¿€?k_û½žð¬½o!d=¯@?h r½Škl¿îˆ?|ø^¾¾w’;ˆµ`=é£è½±Þ?Œe¿Œnç?0é½óç$¿}éé?æ°l¿‰R==%YÐ?‰Ñ >T°¿ŠJ¿ÅR;¬Ž?÷@È:{º?hù̾Z¤R=%P¿t~Ž?fxn=Y¯0?ˆe½Fßà?AHç?| Ao9¬B¯À}¿p$’=§¦h½Î?3b­?ñèh<ó0<çèÀ?lkF?t_£? š½¾ËP¿kg>?a|<¼ÍÈ?f^?K<`=…Ì¿€ºž?n8v>:4^À*‚½¦Fƾ5þ?jï°½°Z ?‡/È<ÈÇ`?y„î<Ø´h=€Ç"¿€óV¿aê?Fë×½¹´¿‘I”¿xóÍ?vÁ34¼Ÿ_À?€n¶?^Gf»¶-?o¨=¯9ð¿„B-½KÎ`¿}ð=¨Cü?hk¨¼ÚÁX½eª¸?vA ½@ ?[‹R½Wd@…ߎ?‹Ãn½\×D=œI ?ꢿ%$•¿zËç=·Ðê=­Ë¨?Ÿ[i¿YÚü?’n>¶=¥³Š>GŠ*¿Xb»Å‡ ?’íy=[Ÿ„¿Uæ=–š=­^=y¨¿[D¿…ua?6‘þ¿cã¿r›R¿m†È>.sÁ¿f§Ã¿ƒÚv?ƒ¿0<ÌB𿄪¤¿ w2?zN?JÒ®¿œ8"?X‘¬¿y0ù?d«î½+±H=FãH¿wÅè¿f„5¹Êº>s¾º†r€?…Tο…ãVG£¿u5V?h‡M¿a,Ï>–p~=¸‚L=ÈçÄ¿†ž¬?ìpê?fµæ?dÉÞÀ=>¿v@N>u4?fÅ^½Šµ¨½¥g”¿sßi?VHÐ?zDž?ˆù„=¯´–<{ð¼™Ö½×È=8À@¾@¹¦½"¿ô?€Bn?|‚ò<,¤@¿øv?~ud@+?vJ½€AX<Åúx=Žx?rÉ¿…X>¼º|ð½ùJØ?l*<¾op¾ Ï)¿|Rä¾RŽB¿÷q$?Xö¼˜€½˜4?ZØF¼Ûï?èH+¿ˆ †¿e‘3?Rm7<Ÿµ¾þî?r·:ËW?{þ¿„Ü¿‚%f½»ð¤½–º|¿zšc?€‘F¿[N€=i|@?:¤Ó¾•Ž<š†@<¨ä?lܺ½»0¬¾/Sþ?jÆ?p½¸½ìÓ8=~4¾[ͼ?Rà?„)À½”úØ?‘`j¿ƒª½?ƒj%=“¯8¼„Ȩ¿›iB?79ļÉe =éˆ8ºWD?a7*?yÃA½ûÚ˜?e‹¡?瀽´5à=y(=Œlx½öÙØ¾PD½š×¿”“?Œñ Ø?i ¿k¦?xê?€‰Ê?tlt¼š`¿|Iu½úž0?kåY?!Ÿ;[À¼L²Ð?­h¿é?~…<¿†®K¾Oˆê=Œ÷Ø<ïð¿Š|c=´†R?‘“q=áÅê¿yóÂ;Äò ¾2>Ô?¾@Œw…¿QY\?FÈ¿¡äâ¿xe?‰[¯»R¨€¿w„¿b*¾>¤>¯ô½&P=” <\ʼTC€>c¡d¿~>²¿ŽÎ?‹^0<¸œØ¿óZÐ?ˆš/¿w»¿vˆÒ?“ ʽ¬è0¾R€æ?˜—Ô?{®ø¿ƒõ›>y´<¿mSÆ?}ÁE¿|ãu>hÇV¿s¿«=M¼?yz=·›Œ=¨j¢·£@÷ä¿a=|?’H&=DGì¿{¸á<ßp`>Ò>À*=`Yd¿¸R>t.¿ï4t>QI=˜ôÔ=NØ?~~?Šô较?^ˆ>>øŒ=ì¥Ú¼ºÛ€?Ä~»hiÀ=§ÑÄ?|ûÁ?ogà½sAÈ=¸âÈ<ñzX;ñ¶€=~±h¿œN­½å×0?n—¨?ƒ„U?>ñ¹¿z;Pº—P€=EQp¿~8k½ öð¿€+.¿‰9 ½l©p@‰1?×7=€7B?Ìç½Ïu>ÖÔÎ<èå¸>òH?y³–¿u©3¾!?½Œ(?íÕ\¼ªR€?ä䛿iïÙ» À=V(˜?qÝ_?ޝc=…Ä?‚g⿊>y5¾Öè=Qÿh<‚ è½;ÉT¿þê>ÖG¤½IC(?g,u¿Òv¿`!Þ¿šß¦=Á€½ŒNr@=Lg¾~™Ì©ì¼[r¿h…i=ÉÞ˜¼¨Èà?“E?qo?Úƒ?‡Ò…?},ä>k˜¿y4F;l‹@=àí=§¼µh?‡ <À݈=7ªx?ƒ)à?„ß=?v%Ö=^®ø=¾ˆŽ<‹R8¿pP?‚¯ð?Q U¾ë_ú><>¶=•Ýx½°˜´=Á¬¿‘Ü<òÈ=Ó6è?… Í=’æ$=Ú¦?…:¤<²ª`=ÈÇ\¾'Ò¼¼6"`Àa¼¿ˆ#¨=¯¢=¸ž>._~¾÷ S>!F?ˆ‰d>@½ Í0< >eô¿p©Ö?nÄ´>$«­¿f¬?d–—¿y¡‚¿Œ‡f?ô»Z>¥@?W+‚¿…%g¿nÆþ<΀»õ¶à½²¨?ˆt¼'u@=¾¨ >“=Mì¿{¹Ø=5Lð>)Ì?„¹7½z> kÒ½i´@¼…ÿ`?ÿ{Þ?içe¿€¡ =‰å=»Ýj¿n´O½‹+4=†^x=òp¾?À¼ÆGH=šö4¼Çè;\ꀽ“bè?€b7» €=.ꈽª‘Ì=ªÒ`½ÿt8?ŠCz> !Ö¿y¸à?€ÍÉ?€ =x×ü¿&(¼±8¿Oÿ}{==ŽM¸?dÕ¿ËÈ=~ð(?bÎ/½ò@h6Wß¿}éƒ?˜Ë?RQ?“ü¬½ Ô=Éf*½âú„¼Jñ°=fQ¿P?´´>.z/>!5> ûƒ>YŠx=Ó¢*?‹Ïû= Z¸½™x?‚|K=Ñò¿^‡!¿ˆ*Ø¿qlV½®Åœ?š?rí½œßd=ü’²»‡Ö`¾4‰X<¼@¿*n½ ü¼±|ˆ»Øõ@¿ †¿x@þ¿ùø?yéÇ=°=ÅÿDAé?t™·¿hÑ¿h7½˜¨„½'d€?lù¹¼‡À=X¿\9ƽÆL¼³1P½Ó½D?Œ?˜¼¬š°=x=‰ò¿‚@ç?iHr¾=‡»¼  ½HåØ=^Ù?^O¿‹@ =¡Ð¼÷Rh=Tið>ÊÍ0½L ½Tõ¿Ͼ{Ш?Ò‚?‚jð=˜·*?GY=©}=“,?ˆ­Õ½‰˜b=—Zì?‚J½®Œ>3ÿ¿‡‚{?‚.=Žˆ@¿—©½k„H½cÁ`=çI¼¼]j?í©=º"¼Ù^`¿ví?]6’½G0@Žl=“bÎ?dÚ¶½»^ä¿‚¼—½Èe,@Ï"¿{ì+@o?^/h<@k`½_‚ð½-N”½Ît8?…¶m?aÌ<ÁÒ€?…º8?xô¿va¿˜?o¸ô=0Øt¾žþ¿x:`¾¶YÂ?H Ä==Ã?tÖ=<\?‚Ëý¿LPJ¾+F½ë´?óã—?‰Œl= ¿\œ?s†¨=À`=¢’<ðƒ€<š­È>$’¿ˆI˜>FÅØ<ôSˆ½ªiÔ¿z¤=¹˜¿‘Y?24+?wjF?†Ñ?b/‰½§æ¸?6¾Á?v*?ÊàÖ½Dì`¾ 1¿w Ö»¨€=G|¿zsä¾+3?„Ç¥@e„¿…bj?q´#<<òà=Úl½hh?÷@~?ú‡?_*%@^­æ?’ØQ¾l¾ëv=”®¿ˆÕ¿‡4®>J?žzG=Ê V¿oµà= ñP=\P¿»:ª=™/þ?ŠRrêc?–*T¿`§ =X‚¼=³¡¿…Î|>òH;f<=Üuô?*+˜½?|˜¿p°í¿o້P@=¬ 0?èâ¬?*Aå½ÝD?`¾Ž?Y—°=>°¿r‚š½ƒF=ŒSH?Ð>Yj>¹o¼„§?3ó=T?£¿|"Þ?‹¥¾$½˜¿ˆV)½ˆxò¿†/ë¾%'è?…ç-½Q*$=îwƼwü?€?¼¿}²?ƒ}}¿¤1ü=˜Üj½æ!L½Ç8Â?Œn_?Or¹¿ýF?…x¿wd/?Íè¹?ZvS¾ NÌ¿‡\¯½Ÿ$¼±ùP?e¾—x?N¶¤?ór¨?U(ª=γ¾=¤Öz¾¬0½B.0¿nŸ2?a:>¿†?mÌ?…i2½}Ü?‚¥ñ>nd=îò ¿‘x@<ßÏØ¾ÖEb¼Sù¿uez¿sj”?‰íŽ?[ñè<Ýlx½ú>0<Ì20=ÌŒ?l(½ªRT½°›’=äã2½³²p?{ @œS?b€\=‚5:¿…7¿ˆÐŒ?q¿\øF?É %»íí¾C|?d-M¿wz¿SôP¾¦äú=¦:ª¿Ûã=\‡¨?w)J¹DŒ¿~[Õ= `=˜út?‰Û—½I&ð@i¶½¬Ch¾ Þ¿—„(¿i"½H‹è½Ë†˜¼ˆˆÚ[?L.=FI4>?wé½V-L=Åx>"sp¿ ·>Xç=а>g+ ?• ¿ƒi>g‰Ë¿n»¿vøJ½ªA*ºþý?„xŒ>¥,¿tp¼Kµ`= U¼=Ùc¼?jùù> Íœ=õË”?zÊÎ:3\;®&À=ü}è¿—J#=ÍEÊ=üâú?“”|½6-”»s@¼: =¨!¸½©ú?_h’¿S4›=çýt¿Q *½­VH?þ65¾ýa<ã£Ð?{q¿{Bú?mµ¿iv =~Ð=Ñ!ô½Ç’F¾=¶?‚äV¿rw=„§=«ûܼGé`> âp>Eš¬=æ@ؾPê@Nê?[þ)¿tÝ>ÒWœ=ŠzF¿¥;?€·$>b¤”½¢è¾ÔVò¼ÞÍH½\–?~™÷?t"ö¿lC<Œ0?hÿ“¾H¼ó`P=Jn¸¿ˆz´?g•ƒ½»W¤="íô=¯†n½äî¿qõ?üëÜ?Pí?a^=HE\<צ8?|½€¾PÞr¿„>ž¿¼¦<ŹÀ¾ ¼à¿1å<÷²`½›Þ¼?zEν¢ûæ?Œ5z=sÄ;œ½Ñ×è½ø–„<Ïiо**½Û¾ŽȽÚ <Óèп„.Z?s¡{¿»Xü?pŸr?ˆº€¿€ˆ­¿f©*¿ZËo>œŠl<õ X?]̽æáοëôQ>þ櫽³Õ¤=½¯ð½XX?^¸¿‚Eõ¼dC =næ½öÝX»ñ5?v—^½†CÌ?ò=xi?fM2?ƒÞ<4p=’ܽxؼ;°<í÷à;Ô:@=‘7Ö=ý°2½@?ðпõýN?hG_¿†Ý„?SƽÓ½kl?m’?z<²½À[,¾Ñì¼h ¿ÅÄ=Ë?p³R¼vÈ ='{¿…(*½^k ¿kÔ»¿Š‹Ä¾5;N½O@=‘ ?ô/ܽÖûð½NvÄ?—À‘?Ž$?íà?ƒò½?vÀ¼˜æ?r,>¿rdî¿*è¼:O ¿PØì>!m<¿T*=‡ÞD?•¡¿¿T\š>]w§¿NÒë>Ufj¿{ r>"Yo?b02?òÌþ>`i?ßU¿u[=äz>S_¿d(ì?b„’¿‹õ©?Š^œ¿ftÚ@I¿ø^$?oň<’а¾Û´?nlO¿‹%¿qãH?ZÔ¼?€¼l>/#¿€½Qn=Llø¿‰DJ?€!ì<¶˜?’â=ÕhÚ¿ƒf¼ñ™ø?:9?‰02?„?pÒÀ=énöÊ?|¬·?ps½úd?õs½¾TK=R`?¦@ö?f»}×€¿yÇy>‡@>ºÞ”=¼…@¿o#{?yÒ=ä}(½Õ8=‹NÆ¿[È>ˆ±=[d¿]Ôñ=Æ×v?‹Ó¿|•1<å?=6øt?t ¿n3M?l†’<”ä¿r¹|?‡hG?qG>ˆ¨?‚Ai?NŸ>3¹?e|r¿sÓÊ¿exÆ=°¸=¼÷Ú?ˆd¿_¢¾=¥ƒ.=â ?ºz?~[á¿R$ö¿dê?‹<5¾Âà?`Éa½JœÜ=@¼l=ì½Z½¼v4½Ïœ=°ä?É?xQý¿QÔ¿yz÷¼ÈF=Iód=,M?s*¸>»æ?|­¹>eÕ¼yu ½’´¼¿gFJ?‡(Kh?ƒúB=ß„–?Y¤f¿‚w1?w޼¿i8H=xÜ=WTˆ¼Wbp>—<°¿í½óà?a¥=:«„€¿†€R½n6ì¿^2Ð?P0k¾!Nä?5Ž^?ü‰ß¿Ž"¿…âö?n޾¿uŠV¿QÎÅ?ƒFz?~ h½ßwì¿Õ¢?[à=Û¶Ä?p<ÒÆ =®NR?¿¾0ž=KɽÆöä½4<½| ?sç½O.?|µ<À»Ð?x»¬½˜x?‡Å¾j㔾£ë?ç Æ¿“ŽÖ½ËÇà?ùaŠ=?ú¤>y?sÜy¾€Ý)?q{Z?ŽØ?håw?gÁ`>uÔ¿€0]>2Yè¼Ïˆ¿`ëÔ<î3à?|e?kÓ®¿kùˆ¿fbÈ¿V¦¬¿Šq?‘;e?„·“?r${½2–è>®,¿…ì ¿'.8=QV,¿iï”?‰ûC¼‰ÀÀ=#³¤=.D?ŠE¿w|é<ªRø¿iŒk?|­ ?ðãa@ž?b…`¾·…Û>+l¿…–?Œ±¿‡‚"<È ?’5¼ÅÀ¨?…ó8?“³þ½…H ?`ˆˆ?€éw?€¨ô=Šªj=†l*¿‹Bâ¿|î<½æL¼ÂÍX¾èÊ‘?‡Xæ>›¿\þN?ûÞÝ”ƾ-“@½À ø?‰÷ô?…cÀ÷É?y„å<¶(¨>ýb?|ü«¼•j?GB/=°V¹óP= ÃH=Àzò?‚Ü6?ëpc½äTÚ?{úø¿y/Ù?üS&<€À¼D^ =êÀ¼Þ¶½Ü†x?_~ý¿‡Q¾?t3ü=ÿÙh?h2¼ê·ˆ½—°890(¿‘ž«?oj$=…<¼ì±À?ëÚÚ¿õ”Ä?q‡½²€H½à°4½†ÿð>Â8æ¾Þ²?lF`?á|Ö?‹RÍ?–(9½“‹ž¿y謿}¹–¿ƒ£¸¾Ñ~Š?g×Ä@ö.?dþ¾=¤Žx?„Úv> Ö4½Ýsô¿~á ¾UP?îõ¿‚ ô=ª`ê=5JD¿‡wŽ?$Ê:?‹cD½Ó†T?z8†¾‘¼·+H¿†¥´¿2ƒ=ÄjÜ?cŸ>%[î<þY¸¿\gr?øSê¿‚Sʽк=“ê ½—4 <“ÙP?[j»6„?~,q?ò»¼™R >KT?`~¼Ñh?€)×=œ~½ò ?uã¾B*?‘ÁB¿Š…i¹“f¼Ì²?…Üݽ’/½)(@½Ÿ p¾ת¿w¶Þ=.± ¾PÌü¾¥†@¿5Ú<5€q­º>¾‰?…þª¿p±?®P?!<;Ü`¿g˜A?ƒX²¿Žy²¿Œ =‰Íž?ˆ_‰¼G¶€¾VËr?³Ê½ƒØ?ží?_SÅ=òâÀ¿ƒ†¿m)~¿€A,?‰öÉ¿ct=ÄÎ|½=¬¾ n=F΄?‹Vn¿yc‘¿{Ô.=WW¿·¬=©7z?úd>n=ˆ<”i¿up¿}$<À@ ¿gzн3+ð=’C6?e:L= ÞÈ» ü€=ÄxÐ?h“,?®?ªT¿qþf>/´Q= J˜½NÉô=SÓä> Êó> ¤`¿-?q‘¼?x`>¿f<¼mÅпlËÖ=x¾h?}Ãl?‚¬Ž?_Ò¾Nª=#`?‡+=©øÐ=mw <€?‡7&½"-п˜C<Ï?$yB;óW࿱#Ë¿t¿gõË¿‰ Ñ?‡žÔ?gÀè;æBÀ¾¡<î<†z°=Á5ܾ$V=sÀ¾[0¶?c”¿€z0¿`i?sÇ¿Ž/®½Û¦Ô?tø½!b¼=³t8>Gÿ¿}|õ?c·%?{m½^˜?d¢ˆ?\*‘<èù€?]P½v‘°¼Ž¸?DÜx?M+ö½¬qh¼€ì𼦳¿…Æ—=GÀÜ?P˜=\ሿ=ÔT¾ê?VÆh¼Ýk°¿yNo¿€1*½W0@?ƒcF?Z1½ p迉B‘<ƒ0ð½Ö¢<½„€?o`ž¼‹KÐ=ìߪ?‡YÓ<˜ =ž7¾½f€à¿ „½º¸Ô¿—›Š?Ѝ?IÄX¿X1´¿”Þ6=OŽÌ½>™?w¾?Oo»<Ìpp?ëW=¹ê¿†fé?lþ¾r®4¿ŽÜ?s˜æ½Ú¾”¾'G(?r<–½>ˆ(=áH?J69¿{‡¾/ÁÔ;-޼Ë|?~'¾§þD½§&ü?I£è¿kDÆ?ûn?pÎH=‚3Ì?…6G?|Ãö=L’ ½>Áð@·ø¾öø¿†±V?cG‚=Lø@/R>4úa>)»D>$Ø?‹‡Ø»šrÀ¼þC? åÓ?ˆœî=ÎB?U.µ>H¶=Ly¿d]j¿h¼©q >/,Ç¿~¢Ñ¿‚}X=©Wð>'Íß@ð¦?wÆE¿IÁ¨½LÀ<¹¿Œ:.>ë=ϲ=€b =¶h´¾ f;/Y€?Štµ=À¤?î©…½Ìx=i2p= FZ¾‚÷нç‰n¿rAy½l¦X»Þ7`@= ;;¤¿{ =ìŽÞ¼à½h=¼²¿ˆvM=ä-j¿æ=m¬8?Od¼Ð À?M~¼JXоò¾¾?V (¾—Ò‹*|¹¾p/È¿M,½.Àä=Ñvž½§6½ÀÆZ=ùJð¿%_=Jl?ƒKÞ¿ƒ5D¼)İ<ý¨?‡½É=D=Ìkæ?Gô?x|§½8?!íO¿u=¼îÞ?€¬ñ¾1O*?déC½‚׌?]Ž­?MOÇ?l*ë=¶ä=ØÀè½’ÕR?xÒô?bµÔ?e¥=˸;J$@½k•d¾ 6?fà?y¬¾«á?aa®¾_yÒ?Óƒj¿…W,?Aÿ¨?߬*½B¦(?Fin½ÔBØ@eÖ?=²:Š¿ó¾V?˜¼õ¿[{ÿ=â¢æ<±5˜¿R ¡?  ¿S|?ŒD|>k/‡=+ð࿪%¿_º?Œ^·=Û³ž?ƒ“r¿qï¢=¼šº=¹Sz¿mÃ=7«X=ýyÌ=.ž=Hò,;…µ½¸à¿y.*>#Íl?~ãè¿}¶Ÿ¿ŒbH¼õû ¿I˜;=ݨ?t˼A]@¼„Ò =éøö=Ì|†;Í ?ÓZ?úo¹K˜?ƒ¶½eÏ?‘†˜¿zX¸=¶?{Ê?zË–= vh¿~Hð>ul¿w€¿ Œ?oÁZS™¾G}f?÷2мbOÀ¿B|¼.Ü ¿†É¶½‘Œ¤?dï?€5?|3D¿oLb=i$¸?a‰1½•¹”¼‘ù=Þœ¸<ן?ƒñ=/0?wLf=)5࿎¢q?C Ù¾â=›Ä¿Uiº¾]¥h¿…Hï?SÇ>¦½²¿¸â?f3Ô<Á?xõ¡?ƒF,?„/y¿†Y¿†€Š¿s <¨è=p>”:ßj?xöŽ?NzÊ=¥qÜ?lϽ°^b?‡‘?rÿ¼¿ƒ´u?vÕX½Ú«ø=(ß`¿»Œ?J¬½¬Uà¿xìa?XM<  ½™üÈ?VˆØì<0à=î´?]Ü@¿|?ú’=wˆ=嚪@0½ï½x¿‡ôÅ?”R=òGJ?¬‰¾&Â<…ÝÀ½è†¾8ˆ»ld½ûƒh½’ ?glF½3؈=$ÆP?}/¿{õ)?õ£?¿‰Í'¼Àݰ¿—Qv¼±+ˆ?9–ν·Aœ?)cb½š½ûiØ?cAc?ƒáÝ¿Œi·¿¶õ½x ¾ôÚ?d=OSä<¢ˆ¼nhp?Èf˜¿˜2b?€¸Ì½,À½Ó1Z@ šA¯*`¿ñ>|8‡¿tÀa=ÄNl=¯ª?£T1?oÜÞ>A˜j¿_”?™w?„âô=Ám:>cp=t´@=bè?‰ñ]=ŽEL¾ó®u<цh>= ”>$û>b=?ˆÎZ¿_°p>#97¿hH?熻l€>~ñ>C#<ž2à¿lÀ}=løl?3|?C>EÛh>}Ž¿[b4¿Ž‡©=žœb½1þd?Š2羞z¿wi?ŠvV>8¼Äp><èÐ?N ö>5kÃ;½Ù@<¦ðØ=;e̽°mæ¼âx>º©=…½0¿r÷8?ƒË{>n‰±¼úJ€?‡ ?zh >Ì¢¿j œ=2è?iÇ\¿ðrO=Áßl?€œ›?sϧ==D?ˆž=Í,®¾¦q?úL>9¿‚E˜=K>¤=äú½æ#?ˆ!?v•<à ˜?Œh?wßk?Aü=ð·`¿y—ì½Vž?^PÚ?sT<›ž¿Œˆ§=¹ùÒ?ú‹½‘r´?s=‡½©Û®=êF?p|Ë?‰tÐ;˜à¼ÛY`>܈¿ƒ’;ßü@»©L@>ÿ0=""è=¹x軾™€¾yZ6=Òfˆ=&@̽´îø¿‹úg¿”Q?jû®?‚wq>+.¾¿†ÚI½Ðžô?»È?~¾‰Â?M×ü?å/²À°m?]PF?WÇö=b€°>¶á½·ä?qâ¶?ew½¸c`¿wœ½¶»l½ƒ•T¾ ±h¿TP–¾o{ô¿¡‚B½VÙø?w€†?oPÜ?_<¾?X†Ú?sQ@G»]¯½¹Ùž½Óó ??çr?…¬£¼H1 ½’<8?…µÐ=Ö-l=2èØ¿Š„?‚!`<”_¸¾zÒ쿹e¼×sH?wGª½àóL?L6ɽ·¬?‚[ ;Í ¼‹ÔнCÏ8?Aªd¿‘C2?P‚̽el?ÛW <‘$@½ Ò,<¢ ½ðH½§öD¿j+Î=,Xp=SH?ûø?YY½”¬„?dÐ’?hQ̽Ç(¤?{?ú¿’ ?æÜ-?û³2@%@Ì¿{m²=.ú >;e½¡6è=p?ˆæ»=Ïʽ~ú> Ûž>,ô"?Œ³¿T*|>-N>a8»=9ÇàA ŽëA:c¿}ê¾=Ïé|=|?ƒUÙ?‡©°>!ƒ¾è,}»Ôo@½ÜÃø>S®÷?c—ö=¶&H¿„ÏÃ=¹®=± ²¿iL§<Ð…€;¸| ?l<­?€A>‘ù>!OÀCfŽ?oL?ƒú=¾K$¼UúÀ?ŠOå¼Í¸è>$œv=ÒGP=êùô=)$?ƒ/>ÙV? «¿rã½é=àÃ\=‘e´¾^P¼ÖI`¿‘œ>=tK ¿‚o=Óh½YÙX¿S£´=“Ll=÷øv?9¤J?ï2»wÙ€¿b3i¿o¼¯¾gg½¢:¬¿j“ò¼‚/H?”ä¤?b)=I˜€¿h©[?~³(¿lú²>&48¿µ0¿Œ#_>;ðÄ¿gxнÃH¿Žì¨<–s¨=ôÞ=•Þ:½)\ð¿k(¿A(|½Ñ6Ú?„Kî?*;Ò½½ß ?cÆÝ½ÉyÌ?~y¦½:ÀwͼD¦ð?z;Í=€¿Â?vKò½™»˜="CD=ˆ?€Éx<¯P ?j=»˜ö@;%½½`?ƒô¼ôVà?„ —¿rL<ÞÌÀ=Å(= |`?€õ<ùnà?kW|?€??·:½¯À ?} ½­ ;tŠ?Ë4Œ=Àn(<³bð½ 8?yº·½,ͨ¿Û'¿p—è?‚ÊÑ?Y">?|,½hÕ°?dýª? R¿‘D޶¿|V@½³£Ü=vï8½ˆÁÌ?~†c¿Š¹å?€òx½æ`Ð?9F¿„ðp½Û„?r¸t½¬5L»äR€?ˆÕ¿p¬»?jz;¾Mqæ?hó>½Ó°?Ä`›‡Ê?…R0¿^#X» +@¿XË=a¡ì>eäI<Ö¨ð?‹ÉW=ÝÍ2?J·AQ„tB)Wοl 3=¹6?ø³^?‡¨h?y“½ûò=о´>®à:þ³€½ó ¿sîH½­¬¢?hg?‚ >i%=‡r$?ŽôÂ;¦o€¾p¿÷Ÿ>=A[Ä¿zÄ`?‘´<\N»­ó ?vf?Lðº›Î?C½ט?€‹k?ƒ6¹?nXf½(£H?hQνÀê»5aÀ½¬®|= |=uý\¾ Hl¿ðtŸ¿R…,½¢x¿•Ñ?b[ý½¹¹H<¡Ox?g™ó½Ð÷Â?qaF> I?üË–=‰AØ?„ ±?†§|¾$?UgË?ki»Og?|Šý¿hmm<0‰?tMà¿‚Šƒ?‹ë½Àd¯=‰Dþ½ãñD½}–`½æ-Œ>ŽÚ½9W?í6¿˜§Ê?_°Ð¿yè?mÞ=ÌÔ€=®W^?k±8½¬l½²P=ƒ±h½¼*ä»êÀ¿†4š@2îÔ<‹ =X2¸¾’ÐÏ¿^Ä¿€ôö¿µ,à?ôgÊ?nø‹½ ¡h?€5?_à ½8?G2¿õâ$?YK¦=)`; @À¿|Ö?‰òi½€O,½¨s€¼ÛÿÐ<éæ¼Ó¶€½­˜<Ó²À?Dº0?…f?õÊy= Õ?>Ô¸?NÓ_?„–‘¼‡H@;9W¼Ž=Û^Ê?O¸=t?wM¶<.È¿wyk@·j>“îŽ;ûõÀ¿r_<ÿ.ð>mõÉ¿íž>lÆq=é3†½>|<†Êp¼ÅY>€{î?k¡v½9Ÿ¿žf ?‰¥}A}MB eCZCðÖ@:ÛÔ?„éz>;C>»ŽGÀ>h=í?ƒíZ½aÕ´=QNè?|¶>¾.à=–Ƚ¨xž¿gâ(ÀÖµ?iÖ×?Œzs?›Hš?\x¿jps?‡A}?ø%ÿd.F=3Á”?‚^?p%@½úKd½‹À>u‰=ö²®?“t?bfà?y‡=Žqr¿6Ê@3™;O@¿r¢½Dø,¿å6º«„?re?y2(¿XAZ½bÔÐ?~Ë^=­ã@¿s=?ª•=‚õ¾?{s:½ØÖ0=›/6¿•+?€ù¿¾J†ó½Ù `»';Á| ½—¥ð=‘>´¿4R½ãÀ½\ ¨=ç~Î;Â)€¾¡”½HXì@3¹M¾gp(?‡{Ê?‡ïD?TÑo? =á€J¿†ã?ƒ¬?^Þ‰½6é`<¼…`?†©—½ÇËÀ?Y[¤?VÆ­?ˆÎË¿‡ú½?iP´½: ?y¡½-–è¿“«\¿…4®½µhÜ¿‹D¯?mLP?hUd?‡6½5ZÈ¿ƒ0 ¼Øe½æ,½ Ùà?€¤7?Wáe?þ¡?yv¸?ùaÐ?|Z=¼ˆ[@»Ûf@½ öœ½\=ê*n½>.ð<Ò48¼ª” ?^þ…»à8€<µK€¼îQP?cæF½–ç?s–j½*öŒ?g1ª½@M0?}¾”»L½Sú€¿ˆp±¼Xz ¼ätH?Rò)¼6€üR¿oÀQ?õެ@>~ÄAÓeB[ºì>^•í¿n6©=xxÌÀSã=HĽ’Ç"=x L¿p‹¿…ó…?`Eô=‰Äè?ŠÒ½†ø¾3^=éP>éw>8¢><Î*|þ½h=ú\?rÞ1?—Ê”<9¯ =™>¼LŽp½Tíh¿‡Ìˆ¿~+¦?‚¦¿|¼d=Ž’&= X¤½¡7R¿–X®?‚K½´9H?@¾¾Ì¨Ò½¿º8=ÉÔJ½4à¾Wy?g¥£?v1“½-E¼¿tè ½ûœ¿xŽŠ½¡…¬¿†W?Vün½]µ,¿€˜<¿{Rú=d>΢À=ìØ¿vÀ¿†.¾.ŸÚ½i—È<˜&¨;„བ‚$?\!a?ŒŽœ½#È€½+A >;>|P?kÔ¿ˆÆÒ½îY?ùïh¿¨ý<þñP?N â½,(=/,?e»G¼ÚXP?†—µ?Cìä<éü(½ñŒ?X@à»´A€;ÚE?ï3˜À h¼‹Ò°=ê2ª¾ 2ð¿ŽF?*}n?xÞ¡?íd?æ@Nê¼DÔ`?ûÿ¿Š‘7?x@þ¼·î ½¯hB½˜Èˆ¼Åн²‹:<ªx°?iW÷?ml¿Xm½Âå½Ò1x¿þôè=]š\?†Ø*½;ᬼdJð?R¶|½š3´¿Œ8÷¿†Q\¿!Ô?}ò7º¯R?]¸d?r"\½&WÜ¿…-Ÿ½+Q¸?gý½ç¤¿!þ?{›jÀ†¯?;E”?i-½wað½Ç:H¿„žÊ¿ŒIο…9.?†²c½J?‹ž½X=¦š?ñÚ?… L½·†D?rX<„H?i¹"½­‚”»õë¿M£Ž½èЈ½Ëg„½L?‰_Æ¿…+×?…m?û"<>¼3=àf`>0{e?êÂ>b²Õ¿ˆUÖ=°R¿Wž=ªˆ¿k©Ü?ƒž@¿Šç> ,€?Œî<ÀmÈ?ùŒ?\÷Ú=‹1?‰b?“è¿Q’¨¿kÔœ?ˆŽG=UÝl>)&Í<äžX¿KåÆ?ï?…ùû¼˜˜?†$¾~>°¿†@> “<ø 0¿vÞ ¿Z¡=îKž?hßx<á=x?„×-?…ÿ~@Öë?†”>E£‰<ñ-ˆ=#-¤>Ä¡?ŠEK¿|R<µ{h¼5 ?Š¿giÄ?’aÂ=ê8¨?{@Œ>Ét?{ÙQ?T=Ú?ƒõ|?‡V¹=5ÿÈ¿R{·?E¯¿Š¥¿h´@ ð¿më=?ó/Ý;p=¢f@½X(>ÇȽ¹Æx9ƒ”½%ˆ?lX½‰³?bk<¿Šü¼ªÀ=¦ è¼E+P½ˆi<=0€Ä<ÜT ¾]Ù<=N#@?Ï ¿…|¿† ¦½ª €¿P<½à>4 ³?]8Ä»ùÕ€¿’ ‘?z0àGa:Ÿ_€½¬“x½@¿z„‘¿;Q½†·X?E£ö<+¡p?\Àk¾Û?z`=;Lú?L?½X²è={© ?DRX½Î–$Ç>=°´ø?Z¾]¿¨?}­Á<¯ì?ú¤õ?ãNé?ŠÅ2¿lo ?yðA¿bŠÐ>;T<ŒÅÀ?‡ ¼=œò=4¼‡ì=Þø®?`¹Ý?‹åq¾s1ê?Ôz?‚;V¿jØÀ?X“½D?wÀ =ÞEd¾ €w¿ñÝP=Çg>u"Ù>B©¥½U¥ü=ѾT= \Þ<ÂX>9{Ì¿ƒò=.öÀ?…m=?…Od?Š;t¾K¨¤¿Šy%<ÒD˜>=¿Ë¿}$öн¸<øäà?Tz¬=š}?x2?–‡÷=·@¿Tˆ_<¿ì=õÂ&¼IŸ0¿ƒG¿ìYp?ŠKû¾ZX¿s~õ>¼<@Ž×?iŸÌ¿\ýżŒ¶€<æp?w=„8„¿|›D=»l½„%ì?Ì~=@Xì¾IO =8=.“0½~¸¿€˜¿ˆ/R?_F?r)x=é:.¾̬<Q€=ÈÃò?…1¨?p#.¼W <öpØ=Ž’p=sä½–oº<«¸=“H½#$?y>qV>;µ=ˆÏH»ú‡€?‡Þw½ Ÿà½®²ä¿z $=7¬h?‘…Œ?ìÃ=±=«Á½"C¸¿‡XD<‰fp½Ó§|;N@=~½k °¼Øº ¿Uc?úH´?| €=e8°¼åüx¿våá;Ÿ2½´â|½öœ8=н@?lÔð¿wè=ž‚:?RºD¿TŠ,?M|ð½p?m&Ü?†¤±¿oµó?’èô=F/ =þ”?fø?aÁM¿‰Þº½„*?…L ?|0–?ƒê?|º8=¡82½`° ?x°´@û¤¾W B=Ûì¿[k=á댽îU¤¼[Ð>g¥¿‡Ê¼½6Ê ¿‚?¿?ˆÝ?\m²>Høl=Ðoô?‚ßH¾h]¿^&¶<®0¿ZÙ”¼“.°?„E‰¿gà >n˜z=É`¿q¬n<»@¿ng½‹¾Ì½>¯”¿gB=Ýݰ¿_¼ö¿ =B¿}(õ¿AF½¥äà¿bÈÐ=A]¨¿„f>C5¿y¯è?€°?fá=½æ=Œ‚?‡¥=*¬?Zå˜>ôå?†óþ?~ø˜?qgº=Vdx?n›²¿‚åV¼Å>@=“¼Ì®P=…A"<`w`½1¨ ?‰fÙ¼Õ…º‰Ò¿û3´?„¹›¿sP£=#êh½¡Î =ËÚø?…ŠÌ¿wù½+Ë>=ì¿|™P¿Yv¿™Fp?sÙ½¿WýP½*hˆ>àú¿‚YÐ?~¼:¿’’¾½ ∾.f?md¹@P=¨²=@À?_G½CõH?QM¿ûs½ˆ' ?„ðx¼¼:?úL?[Öi?f;Š=?¸>;‰¼‰à?p#==Í™¤?t(?Vƒø?}án@×Ä:B†'N?q …?5¾:[¢=ÁW ¾ÍÁ¿Œ%Ç?†p?…tš?XŒÌ?f\;"Ó¿†"V<ì˜ð<à ¿‰öß½„ =뻘½2)X¾+À¨½I¹¹€¿‘éÊ=µÈ¾ªä?-r…?vؽ!y?w‰¿uüµ=”’D?óÖ*¾5„2¿™M<æŸð?ñÄֽǂ ?›*¿l®–¿œ— ¿rÞ×?ö—?üYº½?¸è½Öü¼òBø=9~<¿{nþ?‘Âý?|A=h¸Ü?™S'=Úú½¥Ä¿Š&„=Mt½n~˜?‚~=¾ƒ>ê;óðÀ?†;ã>eî?rM ?Š¢0¿eQŠ?Ý—d¿WÐ=E›=Çp?DéN?aï~?mÀ¹åD=á ;µš€¿€·¿~Ò‹½¯€ÚÇh¾ Ú~=L=h?~§~¼Kšà?í©ê=Zœ˜=¢.?ïïG?Š.`½7ï0?xÍD= ià?~¦d?lÉ?Š4)½Y¾=ý´=Z©Ì¿s_ô¿ì7C=Œ\?z*z=â÷‚?‚¸P?úþ˜?… ½¿Q¾!” ½è½Ut¼—]=à f?W ½·x¿€¡h¾| ?U r?]´µ¿€PÞ½ýÓ迆±h=v!ô?cP¢<Ñn8½gˆ½r0? Cô? ©‡½Î@¨¿‚3>o¨½PØØ?v–ÜBþúB_wÎ<ÄWX=@÷H?l•Wà@;91?ì÷>¾EÔì?wþÌ?}Æ ½Ö&Ö½ºÖ\¿‡R^½ýï´½\R=¨/½0Äè½6Xt?8ÆÄ¿„Ë=rH°?‰}^½Â‰ø?_7¼ÅÔP=` `½©Ô¤¿x–ý¾#ôJ½ãLð;{¢@?q7_¿…á^½¯+,?#óª½t£?SK±¾P=½¬1¸?‚ž½À½ë`œ¿‚5?„³Ä?C?êæ¶?Wñ$< ˜ ½‚[p?Pïx» H€?†3D¾”U|<_<;“À¾¡¿ =tAl¿oØ5¾®?d^M¾>-è¼°)½æ¹ ¾|L`½¼S¸?ûÎ ?õ8Q=—Ð?„£&¿“d?`%ä?té÷=$Î ¿C¾À¿˜r?¾vD??Ù ¿….Œ?=uô?y¬7½ÅÔü¼ÍÜH¾ (¿…Èy?-¿<|¾yp8?­'Ì»@Ž¿dŸÜ½‚EÌ=8>Ašõ¿d™è<ãð=K³à?gó>^MCdÿ¾‰ž¿‹· =< =èêÖ¿„Ô…¿t­ô>c¥u?‘+­?s ¨> ï>¾z¹B=òv¹—´¿LèK½J<Ê×=QÊð½‡vp;ks¿tà8½ ã ?~Ùä?`b?p=¡½ñÌH?@˜?o憿„È?i}.?Š$9?e]Ÿ¼È¿¼ÈØ?SZœ?o¢¿l^ç½÷l–¼©@¾²==«Pì½"¿•Qˆ<æx=š&½@¸¿pò½ Ü?ó÷è½D?„òH¾*ž½´–?yW¨¿€?ƒ’e?‚–¸?UF?bØœ?O½c½¸mÔ½È"¤¿‚»÷½˜¡.?6<=›C<>(&9½ÙØ=U¨=É">=¹Üx¾Ï¿…ÇZ<ª‹?ŽŒ©½ž#ü=Š,<@2¥ïAÕ—-@y?A=¸=YU@»tJ€<†=ê=0fø?€%RÒ§<ÞeÐ=¨×ž½°¿?ŽÇÁ?‰x=Ç5n> ï/?%j¿\ãž=1_8> ±+>0R³¾œ¸Å>Z¿¿ý5¾ ¯f?•¦Ã?‡œ¶<¼ß`>;ô¯¿‚B»ß1à¿p¼à½ëN¿ZñV>b—¿m~#¿~¡ó¿V—s<  <@2°=œý¼¿aôŠ=¼‘ž¾€q>lؼÃà¿G¿»¾äð=¨#ô<þ•@¿€Ü,¾Ýc}?ja_¿€ñ¿n]½dÈ?w ½;BT¿\e´¼Ô\Ø?ht=÷ ö=Q½è»Ïk€¿qAß¿¬¾=‹¶D¿„Å¿Žßz¼õŠ`½bû6Æ=€6R½4Cè½iX¿„-?ˆ¥½‹l»šE@?Qðn>]ô+<¼x?Ÿ²<‹œ0?|_Y=ƒ«Ì?o™¾¿ˆ<Ü €½ÐbB?ƒ¶J;ñ± =PÚÈ?-$¿?‰¢Á½ßé¸?Iúì?H°¼]G`?n$<¿vaƒ?€w­½§ ¿˜u¿‡‰=HK?TºÎ?yÎÒ¿“²½P\¿~'Æ?†=CšÔ:•F½ív½ÊwÀ½g%˜?Yž =iüô;äÇ@?v’X?u'c==¦´?>CØ?f¾PÜT¾1î4¿ˆL¾›:f½Jîì<Ýq€:d£=€›F¿„_˜=g×Ü¿u™x½1ã`?¾¤?ñ7H=82p?få ?||Z½³!¢½VéH¿„š½Ix?A¾¿S¨@ ƒ'½L‰¿]†¾€<ð?V½x»‰´<¤$X¾¦·>?@ `¿b+º½/Œ¾od¾].¼´–?iã–?‰už?Z³?iÜG?f0ž¿„鿉µ¤?Ñ…?\zƾAŒÔ?_¤V½PõؽÜ$Œ½%H?T}Y¿êc½â„T¿‘5ˆ?‰îO¾IE”=Áпx"3?Z}Ô¾3éh½Þ4½©í¬¿ˆ„Q?~ðâ¿YJª¿N4©¿pù0=¶¦ä¿be×=j€˜=g™@?}÷e=Ã8¿áÄ{?‚ëÜ?ˆµ¿‹£î?›f_>C±®>ff4<7<Ð?Œ@§<­L =¤Zœ=af€>Zy>R’?Œ‡Œ?eô"=Å8¿qnË>C‹>'m=²€\¿õ{À¿dkY½†«°?zM¦>Î?ù2:¿ƒ-È=éþÞ<¦€¨=à—¢?zó„=u¶€¿‚ Ç D÷¿]o»ÿ’À=ñˆ@Ôz>2³5?+ð?€“ ¿ˆäÈ¿ $¿ ª¿ƒq¿eïÞ¿gäN=ˆ—ˆ¿r÷?år†¿„7•>jq°=2~˜¿aµŒ?}Á’Zp?l“D?~áJ>(1ð>ì> >v½”OX¿nòf=gTl¼%’¿„®¦¿b#†?hˆ¿xùs=íbì?z-’½­r’¼2!`½d5=‰÷(>;0z¼e{À¿‚õ ¼“ò°¼·ð=­jH¼ÖDÀ¼ë±h½°_Š=T=Y^ˆ?'i¼JÇ ;ý2À?‡9M=L§8?ï–ù=§$=ÝYx=m¬4?‘~½?uTÜ¿hù¼ÏÙཚGh·å½ÿ$¨½ n|½²*?‚Üâ¿w]"?‘'d?wp»µ"?…% ?üê¶¿…Þ¦?ù῾.¦j½.Î?W–»5ÖÀ¿‚UÛ?iÜh?à‰=Œ<Š¢`?yán=t‹D<’?À¾"¼FëÀ;Ö]@=1Ëx?Al?{Ò^?lÅ?Œ¢æ½æö?ŠÕº?1ˆØ=Æïž=qï°?mú½œ ?a:†¾°Ï=Kt`?pGz½Àˆ”¾lA’?€Àíî=> ˜[ =‡½«/Ô>+ì=s>.  C`BLb½ÐCð¿w¥J=T% <ƒßø¾Ð{]?o“¿m“Ô?…{½=Ü3V¿aƲ=c=P?x¾D¼‚]0¿H©ì½³8>M>*ª>¿T:> ³¿g®?e€ï=$ŽP¿sƒW¿êË<¹yX¿^yÙ¿cŸ!>2Ý|¿u~¾¿|˜<×È=è‰p¾BÖ¿tïä=Ô°²½›Y¤¿wÓ6=7ò0?{ Å=èJ´?zhø=òðJ?‡µ…=ô*æ<¥‰x¼ î ºôz€=‘‡Ê¹3¤>3ö‚?€™v¿|[Ú=Ô³„?Š™Ä?gCl¿rç=?æu–<‹PX<¥P?ä~;l<@@[…@€¥¾r*<6;0¿„{¤½ÇÞ4¾ x"?…Eó?óBV¿ƒ!X?‰O0¿Žk4?l•?^'œ=9‡<çd`=n\è¼.ÿ0<Ǭ@¿uò¢?—Œ÷?@2¿–=‚=ZèŒkƒ¡=;¸?á¼Ñ¦?s—]¿uo[½…Cð¾Hz\¾?Õ¿Cæ?ñ$?ÿWå<¦»À=z^Ü¿‡Ý>(ù¿ÿ²(¿—Lò?e@„=Ö–à?ƒ}R>ÀÖ?a…¾^P?ÄV?‚¨Â=A´Ð=ž?\“L?‡E¡½ô³Ð¾ St<Æ?qõô¿l_²?ùÕ—¿Šúì?‚B¾1Óò¿dŒ½äÜ=3B?|€¤?†Ëk?}]6½ `B= b\?p<»uŸ€¿ö‘ß¾ ¡°?pu¾Zš¼Ò¦°=‡8 T<¿Cc?h$?ÐÅANäÙB*às@?F¡@ là=Èí<¿awÑ?+™>:¦?=šÅ>ò ¿s ¦¿a.¸¿i¬]¿bÁü½®Ä(='±˜:ͳ=žG½ãÃØ¿q™n=\œP¿~;Ú> ×á=öÍJ¼–È?†|?nI ¿dqj= D¿‚I8=ÞÂ(?fXƒ=–ÂÚ½XÈø=‡N?ˆXò>,5軽[à½m> ¿W¨“½Ñ-ð½NZ°¾lÓú>$窾t8¾v †¿€ìj¾å~½c⃼X¨¾#Rä¿‚2?åÈ?{ðø½YÊ|?Ksz=½¹¶<ùr0½Å8¿iÎ.?]ܽÝB¾Lj¬¿‚Ɔ½˜ü¼!Q@¼Ýà°?W®?lðJ¿ ½ºkp?eÊê?tÛ_½âx?ƒò@?ägd=¢°¼¿ýÀ¿lfH¿{ ±½ .è=ǵX?ks|?}S¾Ÿ|9?\5>?ÛE–=]œ=I·¨?‘äl?„jF¼Gà?wM?l‘<? =‰¨8=9ªP?xfB¼wËP½Œø4<¨FØ¿mf,=ot?¢1½ø¤À=·çÀ?u5w»_?€On=®kl¿…m?‡%ñ?ƒ:6?ph|¼û¹¸¾–ŸC¼@¾M‘æ¼§h»Âl@¾$Gh½©Ø<¾³ƒ,¿€Ôi½ñut?]üÞ?jÍä?i¨ÔY ¿  ¿Hî¾ &¤;Ÿý?QhÕ½œÐ½©мç‡È¾† ô=ÆH6?_a+?‚®½\;ˆ= ¸”?‡9,¿‰J?gEÎ?…N<Óôà½'th¾T™ú¾hÐ:þ-½+ý BÀÓB*°-?vªV½&Lp?q•"¼ÂqP¿üÆ<Ã=à?–HÚ>Oƒi=Ž<Ê=ˆ³0=z0ˆ¼¢lP?„ip>â`<áîè=Îo?!L >+h?ƒ•2?gø¿kÞh?|¿L>?€ïÄ=ˆî?“ÁB>f•œ<´èh½©ÂÈ?ƒ ö=˜?¨¿U|¿‚±Ù½,øô¿‰ö|=B8¨¿mfL¿læi?=Å?c»[¿n¦€<Ðá°?‡³Í½ ì?JïX?ƒ»Ð>Ÿo=ôÚö¿…ém¼½)@<»Ô¿Ø<=™È=®hø?a­==lçd>;´‘?v©Ø?ðÞ<Œâp½TŒ¿†Sµ¾£Ÿa¿^Ä„=µ°¿‘3d½›Kò?…˜M¾o›Ê½=Wè½Å“r<ö'€½3È=ëU¦<Ú`È¿gu~¾3n&?tRI?õ=¾cvBx* Bº½?Zª ½ ÊD¿ž¦5¿m<(û°?“'†<ê~¸¾,28¼Sv=8ä?{༜0°?e?è?‡’^?Hµ½õ@`½Ñ»?.‹P< À¼Ïvx<(à½êt˜¼ÜAx?y¨¤@$½ð`j¾âüô?qÍY?|2Ù¾?¬»²' ¾2Þ½Ÿí½š=7T¾nÕÐ?aL=‹@ü¿•”\?€zi?d ƒ=nL˜=,P?[ê$¿d…Ü?uÀ<Œè¾\¼=öä?iý㿊x.½‹Ýx½†ê|¿‰&_½ÀbX½ªt=ä=e/È=©¶¿ná(….> ”$>Fs<®0(¾ r>Bâ?„ÑÂ>!žH?‹­ ¿UHÉ=ÂEp=ãöB==w ?žž,¿]?á?‹˜ã>!Y?…í¦> ) >®=öE€¾ü]m> Ë¿a3¡z¿f L=Á¡Ö=‚{h¿X7Z¿l+”=9:$=`]È¿ejB=·˜Š<áh€>ɺ=h ¿ƒð±?…ŠV>7|2>Ó׿Ws>_p9ž"?†'<ÿ„0=²t?ñÎ?‚pÖ=¢=Ö½ ä=àG0½Cý0½ î=œ1F@¿¦»´Ë¿ÅØ<üò¼¶÷°;Û@¿¿‰’Å?†+ˆ?…&È?„h=‰ d<®Õð¿lÈ?ŒW%=É ¨¼ù' ?$üêBBWt‰=&L?€@ =t#8¿\>ŽCD?”El¿“Ý-¿ve™¿Švœ?mYß¿y5N<×B ?åÇT=‚,¸?oÔμ”Äð?<¶£º7ˆ¾7y"= š½W7Ð@+?z‹â?u¿d¼žP¼´"X½Ã‘h=}ô½¥ŒD½+ݰ½?ŽØ¿pžŽ½†ï.¼™ð0¿³&¿¢Q¿lnÁ=†lü½Üнä‡Ô=”±î¿Žîx¿… :=„ܼΞ`?}«`<Êã?WŸJ?€‹;¡ú ¿¢!l¿|8\¾ƒØ?ËÃê?yõT?qyn¿2®<“‚Ø=Åõ€¼„ò`¿”zh=UX½øè½/Áh½–‡ ¾@6?…9;dH@=²¾¼2¾x@;pd¾—7¨?}v°¾é?Fµ¯=ÏÐ½ÒÆT=56È<ófx¼Ðò0¿w0O=™Q¾?„œ+=¹WF?Œ!\¿‰Ö¤½bçˆ?(ÑL·Þ =dš0?fóS<é†@?â½o=´á?†ß½Ãˆ¼ÙøÀ?fÏ<¡B€?_”½ xx¾ 8Œ¿QÑAÝÇÅCø‘?ú@=?þKK½4?ˆ½ò±?Ó¹¿]Á=ú¦¿û–?(š=¯¼$?œ;à?•ÀÙ?djx=[”¿N§…=¸ùø=Ô=Àú~=Ü?=—[p>KûÜ=Îû<ñP¿´>!Ù¶;qÀ>E‹=§Ã`=Cp,¿yc°?w)„=k¢?‹t³>9]S>ÅN¿‹:é<20="mä¿V)f=S!=ËàÖ?†ÁU¿f¢|¿cWÙ?Š*¿dÛ»õ~ ?ƒ‹=åÙè¾zè?tÅÝ?…ô=áì¾*r2½lɰ=¸ ¿ö ®¿y .¼k€`?n\B=õ ?}$>p奄g¿^DB?wÍ{½ƒÌ=™ ð=•Uv¿^EL>ô-?b,ô¿RÆ¥?JÞ>>ò?WØ–?„»È¿vÒK»MŒÀ=Iœ¾á@ºÿ@üÀ½`,Ø?E®4?tn”?oÞø¼˜# <ˆ#?Qº¾“€½OãÀ¾ój%¿‹æl½™ 4<•€<ŸÝP½êµ> w€½êg¨?}„%?Xâš¿‡th=ˆ±t=-®H¾O*¿v-ö¿‚ Æ?ˆ9A>úX¿‚*8¿‡«A?uçl?q=Õð½nxˆ?f×2¾2î =ï¿“$Œ=¸¤N?O"¿‚ Ƚ-¿um¿€ë¿ZÈ=AÜ¿‡_ú»ˆ €½0¿:¼?_¿„?]bè¿xN¦?P‰°?%U?8=˜Æ½é¼¤?q/k¿‡sæ?réb?bä$(?~ ̼Ž<ð?g‹Î¿Š9Y¼‘úà?y¼ò¼rà=.zÀ¿†8°½Ic0¾2Zô½Âpž?|ƒ½ ŽÐ=U–4?{ÖQ¿v$¥=°‚º¿’ˆ?Ú½ò›@¼Ô =KüÄÎ?]Å„¿‡Ox<‚bø¾jʺ½Þ©\?RéŽ?yÁ> ¾"?É6<¥ X½‚nv=j<?J‰×½]˜?gð$?cg¼¿øæ¨¿ˆmܾ…˜û<Íp?o B?e$P?r‰À?ƒ¨F=jùX½g@½t^?ê ö=±B¡äqA¿ˆI¿ØT<ƒ½ ?€¨=[éDA¾ê>Û\ ¿vâm>3#O?#©=µ 0=ñÞ¸>1.ó=¥þJ?Ž*>²\=Ú÷Â>’¥=^s=©Ø¢¿j¯Ø=H¿€Y¿r¶F¿•´>#ì;@=m‚˜=Ž\Œ?„ «> +!?2@ø=žÖØ¿tîS¿Z¥®¿O0>@³Ð>‘«oM'½%›°=ÔŠ=¶”z>P|ª=óP¿{¢c½m €¿t\¥¼ð\€?o–„¿d ?€Õ­=Æ;Úïí=æI<¾GÜ¿ˆyl¿‚™õ½è¿Zä¿d¸ü¿c—B½Ad\?zƒ’¾Sh=Å…?úþ ?b´ ?Œúõ½ZÎ8=нïXܼÑp=‡š ?€^M<ãMར8¿kN¿„˜n?[ª¿~Í•=®Rè¿nŸB?‡k? ,Ô=Oå˜=C ø?s$J;äÜÀ?ìxK@*S¿ŒpË¿ˆTn=l58?k{p?c;Ƚ:èˆ?â'M=ªd?T*ο\§?v4¼«Æ@¿=¡¿eb”?„qú?€÷5@)²é?×ÚÆ?x*³»õ¥à@.ßúCz½î+ø½ú´ô½&ÌX¿_ºõ>-Šå¿cL<—4ˆ=/¦l?šÅh>[ ¿ŠH=bå$?‡åå=ù‰"½A°½öß’¾&"œ=®¾ž¾¦¤<¹O=”õê¿dj?¡Ñï;‡$ ?i!~¿£š=Z?8=cLØ<ËR(¿si7?€2Z¿g&¨>* «?‡³?pi·¿´1`=„ZL¿îÏõ<Ê8€=²R½í ½ÈóèºíR€?„æ=‡Uؽ”ô=Ú‚?‰+d?RàP<eÀ¿„àý?}Ïr¼™Šp?Š¿=fH@‰%¼‰D°¿zÎ=ãÏÒ?hÛÐ?ƒú½”¢È½±ù=Mµ >"Ž/Å€¾ð^>k¸Þ=*Ǭ¿}í?dº:½ñ转~è¿lJ,=@ñP?5“õ?€ì—?é¼;¦"à=.D¿…—H½V p=+–?røô?_%0=}¦¤?x=¦ù,¿…:Ä9ÝȽ¿!Š=Ü€¿sÓþ?ƒÌl??&þ?iÙj¼³/ =©–„?N[ß?qB.¿‰T‚?q%ê?ƒe=#|¿{!?€æ¸¿ƒçæ=6#”½ÀåD½©Wü¼mÀ=M`?vÆ(?ƒ½?t”Y½9ž ¿’yº?`~¿ª©E? a;?s¤’?ÉÐ9½9J˜>Ù ?b™¿¿ƒEW½jm`¿}v¦¾Á ¼&Å=2ð¨=)X¸½ªÜx?†›ô?håÂ@4ª?äÆ=h¿lþ7¿{r=Í=ÞíмÁ `?ƒ+½Î(¿ˆÓ¤¿ŒL?†J?[9%?{ ä?pô¼ ã`?Šè½‡w(ç ¿z|þ½’?‚Å=?W;¬?NÕ$?iÏG?yÀy½š»ø;ù‡À?eXŒ¢=Áü²½“=|½¾¨¿|µ¿’ô¨¿„b‡¿ˆ€ô>a™÷?ö'â¾J¿¼ú=RÕ<¿d­ˆ?nÞܽƮô?{4h=.i¸¿„md¿‰_a?låÚ=19d¿…뇾w˜H?öø—½´¾%‡„?…¦ê?U…¸A‚VBWiw?ö==X»¡L¿qØŸ½¿]8=aóÔ?÷©>†ñ>©³>QñÁ=Ü`¿„ ¿_E ¾ƒ›·=[ýP=ÖÂþ¿Hée?ûÌr=f¸¿fH:>8»t=‹–b»²¦€>?¼H5 =éžä>Æ5¿g`=¥©¼<Á?ïà> Ô0¿êb ¿ïYf½Š³$½%VØ=¤=ÃÏŠ=S#,¿}î¼<†ð<ç7P?y3÷=Yp¬=ÀUº=ˆP=)7d¿q½†L ?‰7?ä“Ä?uû ½×h?†9ë>ÆÆ?$Çø?…Åþ¿¼ú½ûÃ?…Ìr»RLÀ<"èÀ»ìþÀ?°¿–.å=¤š”=«bü¿b2L=Çô=x¿ƒƒ½¿s?¢?{òž¿sƒµ=zÇÀ¼sÊp?Wðè<Žú˜½P@¼Ñˆà¿V¶¾â=æJ¶?Yñ¿†û®?|â=U‡è?‡#¿ï4‰¿Ê€?t1 ½îô°¿ˆ¸/¾aì0= –X?n_?ˆ¥‚?{a¸¿„¾`?_ý¹‰<¾”J=žC?}|C¿†øË¼õ P?輘=Ë\¿†>´¾ùd?nÈÀ¾=^D¼SåÀ¿rµ¥¿r¹??9¹?ez‹¿Œ³Í=¨( =è¾u2?` ¿„-?N}k=SÊü?w¦=íò°?Šb?]Áh=Š þ¿z+k½¬O€½‚Æ?Sy?wXr?O0?|9.¿“D ºiP@e?kŽø¾yRß¼ÇÍ?<* ¿†Œ?†T=Žñ¼™Ž€¾‚Ú¶?I4¼/›¿‡N?ðp?Õ·?ïÜ¿ŠÖ¿‘TŠ?6¤¼ÞËh?n÷ĽvGؽÕä¾K‚?‚Z?ƒA®@,]5¿‹°â=1x¸?fýf?†·Á?ŠÑ⿉Á„¿_r¿z¤Q?u\:½ÿH¿ch¢?tÿ<«Á ¿–µó½ß§z¾Cˬ?~-t?t_0¾@Kø½—’t?XJç¿uI…?DrÏéQ¿KBξAH<“·Ø¿nç´?h =‰=ç­*9±À?VfØ=ÀK`<³¿”<=ÎÆŠ<·rH?ÿþ>ɼ>O =Ò¹ä>7*K=âïL;ÅKÀ?Y¿r»'?V‘¾5ûD>#zÔ¿‹–Ÿ=uŸô?~j>?ŽJ–?y¸˜?|Ž£©Œ?z%¿‰?n³z=™„¿}PƽÅfd=š à?ˆSLP*V¿pT¿~Ú »0B€¿]}ü?NCν¼ÑÐ¿Ž¬‚ºqX=šÃ6¿†.¿‡óB¼ì >S?„•龡4µ½«âæ?úòˆ½ÒÙô>S'?aN?Qn ?„"”¿„«y?y¿†Sν­kh½Á‰x¿`H¾%æ>0Z?tW¶<à`= §Ø¿ŠXÕ½ê=?_²ë?4RÕ= Ș?…8Û¾4¨j?0-´½ Àø½º¤=º¨?|¦â¿„4È¿|í>"„§=¢ü<¿ˆо64R¾Lßö½­YÚ?l9¨¿¤<Y@¾úî?~ Ž?_wr¿†§¿€d¿{Sæ=¶Ä=× ¾˜¿B¼¿’ƒ]=Ä›¬½fî°=’¯ü¾7Âú¾ È¿ŒIô=Lª¨?^½t/ȼÜýð?k% ¼3EÀ½¦ó¼?}Fn¾`(?i…?„ˆ?‚z?lâ?kÓ?î¯?}»œ¿…å<´áпj稾,а½Vý ½ä¶´¿„gÌ¿‚]Œ¿„õ*½Ì&Ð?uB?`„ý?O¤â½º«¤@m²½ –Ð?nCº?~ö–½Ó…|½= ?†vz?†æ’> cR?;%½ŸÜ”½‡Ï;ª$`=«L?„[$¿€6è>™MÜ>!u¯¿T“(¿i<=R<¢ø˜@±«>L 8¿T„k>ÙV¿ˆC’>&d?Æ ¿mnõ>8[˜¿pC >sæÔ=Æ>/áz?’´>FŒë½žÛ?x7<™¾À¿q8N¿S¬3>jë„=â…"¼0нãbØ>dŠ=€bR?ì¦Ì?‚= †\¿["v?€¾þ¼¢Â°=; h?ƒv‡>€i>)Ý?û¿d>{]¿‚Í <.¸ =ƒX¨=¡$¨¾æ0< ?o†¿ˆÕx=–J?‡†¿mðž> ˜>é¥>Jh½ÉÜ?=­¿k€ˆ½1Qp½‚cx?öË?M¿€d?Tœª?úüL<Ïèо æ¤?{F=æKì=|^ྚ?û»ˆ?sí?ˆVß¿€*Q½Ón<òÕ =yÄ> V\?ˆÖ?~Ò]?jV”¿‚Éë¿m¥¿‰Ú';€?oÄÞ½­V¼=I'`?o—8¼2: ¿™»ø¿ Ä?5…»Š¥`?‚g`»‡Š¿s@½³?Ð=Üì<”ª@¿‰~¼º$è=¡VP>­?q¬>?cêÐ?|=¸ÌÚ¼”/ˆ?Joh?s¯?ŠY?hqÖ¿|8ɽžèè(T¼jB ¿†/ ?GÊ@IîP¿_(g=Çʈ¿‡ø(¿‚ø<î—0½dÖ¿p7A=£u&=ÊÚF?J5´=߆d¿iµ½¿K¥¿ûÞZ=ì]`=àg =æP¿‚U“½åC =Ðö0¿T¨Q?]Ö˜={l¬¿Yé¾,Ö¿]Ö±?tן<¶Žh¼ÑQ =æ‹¢¿i7¦¿x˶½yÆh?…½¿Uå?x^4=,@?oc?‹}l¿}œÈ¿je=¡Œ ¾†.¼çï?–¹< ç ¿gÓª¼,`=[0=É1|¾+Ô–?„&é?ý˜b=QfÈ<á;à¿xAå?‡ÙÖ?Œ¨n?A¬R=ÌX?óB¾)¾Ú>E(‰¿eü<þ„È=ž?ä¾#‚D=UL?t!2=Žït¿…<¿¤.ó?–—n½šÖX¿†r´½ÙL\=€»€½!½?…¬<Ð~Ð=ßH?‚}9¿}ûü¾/§z½G•?{§µ= ¾` ¼2l½£‹Ä¼lÀ¾J¹Z?^(¾0ðA?gî[;ÍoÀ¼œ—ø;™Ž¼°qh?|jO?‹.¾(2Ľ‡{¼?Gê=PདÄ?cpU?gù=䄼¾›À=‹yt¿‹É?q6=ND>!7[¼¡6<ã›°?ÿÄ¿z¶½2Mˆ?>‚&?_ü¿x)k?ïÜ0?}OE?|”¬¿Ï’½ˆ_î>Zâ9½Ñõ´¾E?Ô¨ú½ø0¿l‰m¿`‹½iLü?x" =m-?ƒ¤û?𖪿€ŒÆ?q“(?‰éí½3‘À½8Ę¿†È½]½‰®D?y¿K½66à¾óf½“´?u)?„c„¿†)à½@®À¼ŸP¿k›Q?h†ô?\–ü½6Ûð?ß༂”À<ß³à?H½0ô¾5š¾™Ä=ìÍž¾ ¤¨?v+­¿‰3J?ú­¼¾î˜½©¬€?hRd¾ ä~?aÚ¤=©(½?éÌ>IØ?`“?Šh=Jp°½uŠP?åZp»¹@?‚h«?S±M¿„ñ‚?dÚG?e¾Y¿wh"=d¥À?„TξWœ|= ±X¿Œ©&>¼¼ÍðH?ž€Š?iƒ¢=˜¿¬½™e|¼³ÛX=ñ]j?†PH¿Uâm½ p8¼Jê°¿‚_B?¤ä?t>ö?v€j>I€¾é‰u¿å±=[‹0?#%(¿j‡á¿jØf?•!æ¿4aú=¶N<†4È¿í%o?‹/a=8ª°?Š9†½Œ.V>"‘C¼õõ@?{­¨½Õ>ùn½}æÔ=ãÞô=þÁ0¿ZÉJ?v&É?„̽y%ø=*þø<ùtÈ=Yå@¼šKð¿c€¾ €?t§:?k²*?Oþ½hœL½¾Cì?`˜4¼”¦<ņ°=Ïçæ¿q3¾=¿ V=Õý¾¿kí†>qÑ%b?qô?t–Y=¨}h¾ÂÞÁ¼Úyx?vìØ;œ`½Ü}¨?Rõ(¼ÒD0?n—³¼ÓNð=°ïP:Z6?^“N½‘²p¼Ý"€=¿… ;}•€½`½ ¬¿ü½÷¿¼@6šž:·Ö¿ |…=)ž˜¿‰?<6 0¾\¡B¿m¶¨?޹ë=ôê¼ø/°?x¬Â?öåE¿ÂÝ;U€> g¢ƒT?k¯½?pP¢¿_?þkA˜3AuÜ=Qœ?q~´¿„7d½´‚轫hF¿ŽC?k?š]?¿†?hþ> ”¿_Â-:ª¾Z`½ØSp=¡›Þ¿7m¾M4¼Â7°<ñî=vl=«‡Ì¿ƒ…}?~±½¥û⿇»¡<õäà¼*5À?|¼b¸p¿r ê?‡£¿‹dª=D! ?¹B¿€«p??óŽ?ñ?€H@¼½€?dyö»âsÀ<І ?†0?Zj½O8;š”@=-¹ ½nYè<3À½ÂÝ*¿¥·.9ïÀÕ÷¼!ù¿““O>s¼?jÁÌ>O-x?cÒ½Ž9æ?TÊ¿†ÿn?ƒœ&¾7C’?¥928?~õ®=×1T?SÌ$½U,¿n£È?ò÷W¿NÍ“?—±ù=¶.à=æC&?‘"?O?‰ýà;ây@?‰W󽡌ȿr“⾎Ëj?y|®?‹F¿[ö:¿‰-Ë=óuÔ½N™=WÔ°?‰Rz?ü5¿_9Œ¿v£ï½`>>o<µKH=ö ”¿Wx#<©ð迊§>ˆ\<…?aÌ<¸‘?kÕ:<å%໬âÀ=y^ä¾ ª±?ƒ»§?—À¿h—*¿]’K½w¡ä¿‰ÜŠ?jïT½¾ª@½=e࿃af¿†”?zL-@é¾È?Š^q¿€i¿‚釺iK?v[?{Ľ•‚¾ Aê½ÅÙ€½^î̾‰aÕ¿˜§2?žüÉ=q4?e¿p„v?|ª¿‚Õh?~¸?8d½°)¿p!¼Í-h¿D?O©‘?\Þ?ˆ"þ?Š(¿òCT½ü`D>Äs½®Ÿ¿ŽXܽœvà½ÂÐ<  ?x­F?j?€[è½á;¾>b&½µØ¨=/bx¿q¥Ý»˜Š`¿Èx½Ô>ä=‡NR9v¬½ fè¿„Š<|…?0`¡¾!+`¿ô»Vƾ!y<½šø¾K?R§¤»³¤@?\@¶¾l˜¿¼»¿‘_…¿1.BnýC&Ì^A†àν©£ü?UÉ«?c|L? ¦†=ب?~æC==qÔÀ ´=pÔ½WM½[ðx¿ˆ–F?m‘½H?~,\¿™)£?Z °?n¾*?bX–ÀKƒ¼k?`½°Õ|¼‰j¿™+è½ì¶½ËÔ4<ø~迆³¾"QH?frN?|Ex¿ŠW\?|z¾ _¶¼¿º ¿y‚Ž?ƒ›%¼³Œ<Îq€½³À<¥<¸¼(¢ ¿y«Ï¾*‡^¿ƒ`Ä<Á;?€ÇP½`íнžß¤?mæ½`@;·üÀ¿‡‰¾j4=Zt?W¡ô¿hf¦¿–Fž¼.;à>äE¾ƒà?pøÊ½™5X?~¿?qê ?]À¨?J±¤¿Ž•5?ˆÊ=Ü6ƼP?xÆ6<Ëþ°½«×¿Þ?Å;–?™•¢?n§Ž?ˆ„]¿cW‚¿;+Ê='dà>D Ë=(ª¬?‰Ôù?~“¤>Pâd=fŠ¿[]¿€q´>ÍF?x€3=ÙGè=ø¨®=!†t¿ƒÁ½4?tVÈ?Xr¿ˆÑ”?tàZ@A‘¶?å¬?ˆ?=í¦º¿ú}z=F²ø½„ãl?•ã¶?Š™o½GÛŒ?šWè=æ%¨¿}z¿„¼,»Ï ?ƒæç¿váü?u+ ¿{Õ?=Ž=«Uò;ëû`?_º¿a2ˆ=lè½o¾`¿j–h;(?|Öõ=ŸÊœ?ÊïG?sjë»cBÀ¿yç#?€Äó=º)l¿‡1(¿WV翌 3¿x½Ê? ê½ÄZp<ý°°¿‚Þ?v´=q\½„¨?c¯«?vÞ»?=ËÙÌ?€ƽÐKð¾8B»Oæ@?„ê==u•\¿~/ê¿‚†¢¿‚Sh¿†Øq?€–´¿‚`H½Rþ¼??¦ü?„×~½Pd0»?潟¬½§Ýø¾>gd?pRâ?x?qѹ?VQé¼±Á¸¿…Ö ˆÝ¿–I,?c¹ð½‰^¿Š>e?o vß>dœ?_•D?þY˽·Q ¼ý ¾ˆLž=‚x¾‚Ï:ÍA?̯½_xp½àÒ<õÇ?;Òt?S6¼Î ?Pm€¾J»Ï†`¾=}¿skÄ¿Ž ~½Ó„½Ù.¾M#½+Ú˜¼ù~À?SÕ @Ÿú?)Ù½©d½œ¹l?QÈ?/3Þ¿{U ?hõÁ=˜=p;ªc¼Ùʰ¾œý%¿„ ƒ¿‡' ?ô³Þ?ç§t¼I ¾W°º?‚å ½Õ~ƽèæ~¾ ?Hоl¤È¿„% ¾tƒž?ð¸0½ï¶¿ˆ€¼xÈà=–Íl?_ο…xľþN¿bl¿7¼Dh ¾$ °½ ­d¿„p¡¿{F€¿†ø=?sÔÓ?U¸P¿y?9et¿x‚*¿–Ø<,Ð(¿† ;?„¦:¿øp?ä ‹¿Ž?s†È¾w³½VÌl¿˜ÃÁ= °H¼Çð¿‰-оø˜?Q¾Î¿–¼˜»™Y`½Ç:l¾KKؾ0 ?jÎè¾~JÒ=¥ä?Aÿ´¿“Q,¿Îk<§Uˆ½Žz²?ƒ_~½È8Ä@?Ëÿ‘£‡½!À¿‚ó¿¿]о$Uº½ 0?À<.½+ˆp¿Ž!̽åȺ?L^ο„’½ÍÄÕ¾_Dõ?Ní¿•,f¿k¦¿nLz¾9…n> M½¬š.½GÜ?L—È<É(?`Ä€?iô5¾Bn¿wÑv¾ ìU½…¾b¿Î¦?€oоt‹o½ÞŒ ?1(ð¿cÑ?Þ͆¾ÎÆ<ßž¸½Ió?2¹|?iïÅ»lc€»Ì“À¿†W,¼É8?O-$< B`½«‹ž?#eÒ¾–&’@•»»’‹ ?l90¾X0?c6Á½åDø¾Ñöã½Ñˆ|=B@€¾E¡ž=¹lä¿‰Ç ¿‰ø|??³i¾O”=±¤¿ùåº<ûÅÈ?q±?f•Õ?[MÒ½·„=ŠÔª½f <޽½Šþè?x€¾‚|Œ?;À?uÒ¹=-9 ?LNÀ‰?&C =˜9²²<õôà½åž=‡Kª¿ž /½¦Hž½ô(¼el`¿…(Ñ>°n¾4ÔG?~í¿‹Bø½}Þ4½t¸(½”%p? Ÿl¿oŒÈ¿‰êÐ?ŒO;«W?aƒý?'/Ä?â6>¿©¨ˆ?`é¿Â¿ŽF/½ilÔ½ùî?â<‘¼ß€> ßä?jD?<„°?5áä¿´5~¿®'B¿Ž ?]Ó?=-z¿yŽ¿vYB¾\Ô>á·ì?yè?OE½½Ò0?YøÕ¾I¯¾w¼¯¢@?bšý¿…–½½·³Þ?EÒ¿Ÿ?Ö¯û?[c£?8§È=¿ä?h’=êд¿—²¨:vŽ”žŒ?îcÚ½Ž3R?s ?N-¾¾ >@¾áîE?NÈ^½Õâä?ù>¿™Ûb?M7 ½ã•½%ü½È=Ú?qŽž?H&Ô?`±×¿—ÜW¼F{p?LÚË¿„K»¾w +½ ˆà½ŒX?`|ÂÀ ¢¡¿|޾=­|~?J(.½½lÚ¿|‹š½Ëô`¿vÄ?QŽ:½kg|?Þµ¾¿„5Ò=VÒt?V ¿–ær?ã€?_Ä?Wq¾n±á?^Ø"¿v¾BI¿ƒû¿˜ž ?E ؽá¤ô¼åÒȽµ"\=8 ÀŸU½›†"¿ŒØœ½Á·X¾,qß»]߀½›„?1ƒê¿œ$1¿yMJ?L<ÄABL¿Œr?D¼Ü?ƒ_¿}‘ó¿ŽÔx?…¾{'ß¿?ûu½û†>³Z?ÿg³>0cؾ"º=ÿÞ.¼b4=´/¦<Á>%Àš¼*/(¿~4á¼½@è=Û¦Û?î=¢àª?_a¿Vì9¾wöð?qiè½²µ˜=£× ¿‡Åt?üM¿}¾?{÷b¿ á›?O'`¿…“è¿ËÔ?ÅPˆ¿yÑ‹¿rŽ?(¿ˆ÷x?V¿}½‡ÐŒ¿‡1¾á}¼´X°¾'Ïò=¢F½î“bð?zT¿‰ûN¾9oã½MÐ`¿ZD½³h?nÄ:¿lпM_x?bP³¿[ŒÔ½øV¿z…Y½fàp½¿eÖ;©~à½ß˜?9Q}?p=¸¾‹?\Øp½ÈÚ ¿Xn^¿‹³?JTÔ½Þ}ü½†gr¾u9§¼Ñ¨¿dë¼’ËP½.z¸?i \½ñû¢=Ö¨R¾~Ð?\Ï?8•a<Ü¿?-Æ$¿x¢>9Š~½˜ú,¿Žv°=äœ|?>¨×½3 À¾v4±¼'º¿–<†?uÇn?ë¨'¼%´0¾yœu¾¾¼?HÐ<¹!@½Ž”p½#y”?òؾ3ؾÍZ<°\à¿[B= Œ¬?H?\Ü®?Cìð?Nà&½¸ ?U—/½M€?€6w½¤H= > ?d[þ<‡À˜=C‰d½ph¿–å¿wž½ýb†½²cÖ?YËâ?†ç=¾™r¿³¦Ÿ¼«v°?w²½#S\½¸…0¾"o4¿L¦^??{O?b¨.?/¥¶¿ìÒ¾.~}»‘<½;é¿F'A¿ˆÙx½–²?ൿŠýŽ¿‘o*¾\ŒÀ Š»Úw€½šÁܼS!`½Ü1ô¾EEx?2p§?ng^¾´H­½½Fø?Qb¿{%¾?B_½…'®?ER?A³#?I£Þ¿'{¾Öô2½Á™€¿ƒ6¿VÉ´?_× ?d¿’¾;¯à¾Ìð›?UéÖ?E!]½œðt¾ €;¾ú8?Ù²jÀN?`‡‘½‘À²?bñ¢¼PÛð¾U®¤B.?_4”?Ê0?`Ö·¾î§(?aæØ?uƒ/?fñâ?n8c¼éå¨?JÕª¾ èü¿YþŒ¿„Èé¿ÿý¼Õ”¨¼‚ïȽ‘€?=ŒSn¾&FA?{K#½Í† ?‡#î½'ôX?k˜î»¬~@?lå°=¯ʽÏãT¿~i¶?B3=Ô_;ão?N¶=‡ºº½ºŽ„=«Uî¾È׿k¹¾x¸›½Hµ”¿ðQŽ?sН¿‡7¿7<¼ è=Q콿n½ücÌ¿’T?ƒ!â¿…y=è1ý?YZ=§õ½ûý<½rú„¾Mý=…†?M3‰¼Ë&@?@d¯<€¸(?Óª†?'}?ëÝé¾$¶¿…¹ß=Òë–¾;M¯=8X¾3cž½ËÌ?0b^?ì4a?fXY?G>à½á%@?%®è="•´¾%=•~w¿Ž Ͻ²öÚ?4J´¼„] ¾µí?tºÔ¾.ˆ?Sx£¿‡°Â=yp?k£P½@[Ð=»¨?tËl?@ÅÈ?^ñ ?‚Šc?l¥Ú¾Àh?mçX?ÕÙ¢¿mù4?æ¼]=À[–¿— €=¥¿HÉ?_—+¾ƒÔ[=-r4?AÅŒ?nD ½ŽÆ½¬½ü?¯=¦bz½Ô~®¿uä ¿‡'½"ù½°r†?y.~?i w?GEV?ck¿zf?:KZ?R|0?\dI¿4 ¿yVú¼¤:´qÀ=s׸?û‚¿p-S?½$;›À½ ö˜?Yˆ?c¼3=”Ûv¿[=´[ʾ$O¿B*X¾:(XšnÍ?P‘€¼à¢À¾G»8½]Á0¾[b⽊Ð?+ÛN½¤éð½ðtì¿€u»?#;¡½úÃÚ½41?cõf½tdä?…dæ?(Ϻº9E¾V9;ÚÒ°?N楼ܽè¾0 ¡¿r§–½Ô‡f?yúf?[`G>é‘Ô¾ÀD¿~ÐI½HÐ=ÒEt¿‹Ì;¿s2ô½Ë_†¼;Ò ¼à@=ɠ޾8V·½É`J?Dm0?l ˆ½î˜ˆ=°¨Ê¾$ÂÈ=W- ¾›â¦=ˆû ?ß6b?Î2¿†Æ¿yLö?>]=[ÿˆ¾5=ù={“F¾2!Ú¾g{?ܱ±¿´¾TÝh½£z€?ð;T€¾.Û€?`ü¾h™€=ûƒŽ?VwÔ¾¦?fõÌ?ÍÞ¾v’¿wc:?m¶Î>Ñmœ?OþA¿bz?MdJ=™§¼?G‡Ï»Ý€½ù· =ÞȽÖ½L˜¼½ë|fe´6¾¹˜¯?gÞ?'=]4¿ŒçF=ô_⿆3‘;£€?íË÷½â¤Æ?Lχ¿÷_¿Œ=A8˜¾0-½»¶h½Åïd?e Ù?f–?|使yt›½Ò $?X¨+?y›ü¿”°¥Bþ¬B‡sÂ@sãæ?VÓX¿P9p?p€á¼×QX½ÿ¾=ea½ô3οb¦t¿‡.ø?ÎM¾Ù*¿]<¾ æ=Ô?É?ubl?iw?t)¶?PÔἌ¶À¾TUŽ {Ù¾›|½Ý T?QMµ<·d¸¿8L]=†M¶½ÀŽH¼´ë¾)X¿‘°8¾HÁ@Ÿ¿?Wuü?n¤f¾(*½˜–È?BõA> ¾Á©>^½ZJ½‡¨¾~ˆ?TÍ0¾m¾ð½ÅGn¾á0?n*ä¾ÏL+?b\n¾cøê?UÂ$¿Yú¿’ í¾f÷:?^¶/¿\?vw~¾g;­?9‚¾-b½P'ü?OÐ?uä<¥Áø½ð Ô?½ú~¼œŸð¾4Ĭ<µ@¿š¦ð¾æÒ?6e•<¸sØ?7˜¿{¹`¾˜£²?a,?S~¢½ÉÉì?8bw¿‰Ù ?X*?m5½¿ o¿‚ûg½«@½´Nx¾‡}b½:u¾?HyI<‹ì¿Q2À~î¾Å² =ê~=½®D¿EŬ??ñ=v|¸½µæ½HŽð?MûÏ¿€Ã¯½Õż<à?Tª´=œšê¿|-ð¿qøD¿„€¿y"?LÐ=–˜è?\”?O.®¾5Á˜A¯4­AŽ}?ÜÝN¿ˆ#Ó?‰¯J½£µ"½ˆ¯¾¨?4§‚½ò¼¬=ŽÐæ»òsà=Ì} ½éÕæ?‚·¾Nj½¢–ü?3Àë<• ?{—‘¿eÍg?IÈŠ>7%¾# X=S?ܘn?nŽ?A伬¥ ¿ž"½ $ª¾P×½ÜÜ,½¨éD¼§DX¾£_°=äo¿•[s½œ¿€üw?\|¾Œ@L?…‘Z?BM¾€>˜?Tš½f\?=ä½huP¾oîØ½š¥¾‡!¿}Áë¾'§¿]u¯?²³?m_Œ¾d'ý¿ˆ‚É¿ƒÔ$>ºÁ¿Ž—½ÆT„¼¸+ð?yÊþ¤½âÜn?ot–?ë¦=?t¿?: d=¯âB½Å¢f½…±€¾j+#?R4x¿‡Ž?TŠZ¾º[¾V00¾1«¿ä®?<øn¿“1n¾wõo½›Æ½ðé¿t?DA ½êÄ?Kmf¾-¿(?;¿.¾ Ƹ=ÔÔ¿‹½2;Ú|€¿™•>i½/먽Í‚½”Jz?= Ô¿¢(/?OÇ«½yfD¾`:R=xQ,¾™kÆ¿“5½º0Ž=-ƒ@?UW<;ËüÀ½ùF¢?oe?J.?þŠ¿€´²¿´Bh½ýa ?J|Ò¾~‡¼ª\¨?á’¨?u!%¾i’V?l¾yô‰?„µ½ÞbP½iV˜½¶ÊL½žt.?7-ì?Wä6?â¬ÇºêÛ€?[ä.?]Éo¾¥>h¾*TM¾Š«!=`{Ô?4i.½­[Ô¿“MY?C? ö?á¨p¿œíÍ¿P…D½Ð&¦?‰à?G¤p=¡_R?_rv>,¾ lÝ¿Y•?-JÆ?~ ¾—ÚX=ëÅ ?¾›¿QóC¿cWJ?„aÒ?|€¿yMð=ÆMx>Ó½ªù?Fà>1š<þèx?i,W¿E"¶¿ S =–ºž¿„¼â(°¿’q€?lÙj½óöþ@u?@A»@ƽʆì¿u'*½< T=°?WÚ°¿Tž¿Ÿ91¿q ?W¡p½®÷—¿™Æ«¿p¨¾k7½>G€>½@•ݾ,L?vÈ¿»Ar<÷¡H¾3Ð7@oÙ?K2?dŸ?Y|½p5€¾‰Å¿ÅÄ?*s¾GE?-)œ?ˆ¾ƒ?#r?‹<¥¾ `9<Ù~`?Xu?xꔾ3‚¼Y· ?qÖ1¿t*¾¶¾kàÀÁâ?kâB½GºX?c>á:?D@;UˆÀ¾•úÐ<Ùk¾q¶ ½o”¸½Þ"^¾ºŽ¾Eœ¿‰ä¿Ìõ¿u\N?Nnž¾*Œ?^¢?…Ý1?M2r»A@?3Àì;«s@½èçâ?ŒŽÖ?_À?j¼n?E><©‚¸?+Ýô=áŽÒ¾í,¿dê?g¢^½v (?:ßx¿ˆƒe¾|F?bC>„|b¿ˆÓ}¾$H¾Ôó?N:Ú=D輇X?#Q??3Ó?V䢽̢Z½‰·¾$ÿr¾8„½óÖò¿…0#½â":¿o8²?Qé¿oÄæ?V³N¿qR½Æ„¼½ëËX¿Å^?Esx¾_¿…ÐC¾~lÀ¼¡ºð¾†RO¿v@о/¤l?~€ß½Þe¼ô@?*“x½Ð><ÏÈ>õ`ß¾hžé¿p(¬¾™Ö¾ru¾~=Ú¿OϽ1¤˜¼8)€?4¿ì;c€¼í40?vÛ¤¾^A¿…J"¾)¤?l&¿ˆ8=·'¾ ßÐ< ‰¾ƒÉB¿vö¾5F†<äŸ0?K ÷¿Š™$¾>â<ò&P¿—¦’?þH¼Öy<=‹I&=Šä¿eA ?r|=×aô?jʈ=ug<½J“<>=uÄ?^­¼=¸#"½v<=!H>Ý€ ?]Ýÿ?yÇ=/A?k Ô<ÂMX?î=ÍÊ? åà½ÐOb?ìFü?i3à?Wõj¼«M¿‹ë?ˆÊÞ¿ G=?ˆ?Yf-?а½×Ö»âà¾!D ¿‚‚Ü¿–îã¾A{µ??õ~¼Þeà¾QÕ=ÈĽ¾K‚š?k\ž?CVK¼Ô нt¿}¥¾;?u|ù?9›B3ž8B Iã=-– <½óP?xØf¾<7ܽ:¿qB¶¿:ì?Qé?Su=½»õP=z¶,?1¶0?Xc:¿vuV=³=®?40[=˜nÈ?I|?ƒÉ¬?Qؾ!Ž¿‘†"½æl?As4À ½4´Œ¼Ì4x½£m–?YOô?cšµ½;T?-[?pÞ¿u;?€õ½’/F> ˜P?0ÿæ?wœü½ôû|¾>uò½›Þt?~³í¾‚½Í"?U´Q=dÁ,?VÙ½ u?A·ª=¬ôb¾¯ûj¿vÃ¥¿€Îݾˆ?î¸á¿Ó^¾‹D‹:z½‡K$?QñA?à”?aðÒ¿{óÄ<ŸŽ€¿€š¿«p¾LÖ¼?êTu>¬p¿y7´¾ö¬¿†Ã?5H¼?K ¿‡¹¢½ ºÐ¿€-U½žØ€¼í¯h½âdT?-¡Êò䀼“(¾‰´=î$f½NÔ¼?M(?`à¶?c§ ½Ð[Œ½ü˜?]…&½ÎóF? U"?f¾º¿ùR¿Œd½­Vˆ?g<È»4ªÀ¾$à;âÅÀ½Ãœ=ÂZ>¾.c¿ˆ€.½Zõˆ>Ýê?\Óÿ?odD?ZÇ~=’øæ?g¶=†ý½™ Ž>ŠÀ?í0=¿‰f½ 5À?ò$t¾ ô*@?ïð<+Šh?SÀ?*Ú¿ró½zç”<”Kм–¬ø¿W显E–„½þ¸?\Mš<ÙT?øå?e)n½i~p=à>âò?6º?bo =ô_¿ŠK¾“º½¬Úv½÷(P½ãcÖ?eùø½j}ô<öÈ0¾6Oq?o?ð½¸ñ‚?vAY?wgѾpe¾¾G£/?Nõc?bu A†ÕCɳ½eøˆ?Eªú>÷ð ¾ñýå<©0??=²?õ¾:_Î=‹¨~½ùØh?[½·è¼2 ?Z:½OMh?TÙʽrWð½øºX½‚Hd¿‡ ¸¼œô@?Aã”?j¥œ?p?wú½˜ä?q ¿–Åq=œôš¿xû@½¼ž"?lœÃ?ì8‚? *¿qº¾øð¢?Zf=–Ý¿g⦾:Äx?ƒñ?MÃ=fé0¿sæ=IT½øF¿ ¾Ç•?S¶š¿Ž¿ayb¿WL?lðë¾jDŒ¼“ç¨?AÓ”?rVÛ?ìäã¿Pùi¾’[÷½˜ÞÜ?â 1¿†;律kp=„wÐ?UBÞ>/`?*D?a@b=aT=w`ì¿™×=cö?Jìl?‹=&H½.wÔ¾`„O<²˜¿ Ô‘?‡}®?0kÓ¼ Ú0½ó§Z?q»?CŸ¿aKÛ?Zް?XÐ#¿Š…i¼Î|ø¿•Ÿ½2rô½âcÜ¿ ë½ÄÀ¿t2»¾Ô ¾ Zä½Óܸ¾g½¯ÁB¿†ÑÏ?@Z–½òùÔ?G_?âÜ?.7j<ýÌ8¿‡ñ¿xÉO?os³=b(t?Mߦ½áœˆ¿•{r?†{?O|Ø¿“"k¾œqF½q“Œ?K&†?‡Þ¾gw¾CÚ¾ü2?'„ù½ÓT8¾R:¦¾7 m=ÿö?†Ø¿l Ü¿Š†Ó?,?%׊?‰®?2==Õýð¾Ä38¿wÿJ¾äϾ+Ëæ¾n!Ô¾u¿“+§?xkU¾ÉR¾ê¸þ?Mö=6^?cÖ>A€?^Ã\½K=P¿‘›i¿}´6¾úœ½uOÜ¿ˆÆÂ=Ú”ú¿ŽhY?e©f?Aý"¾…Ú ?eŒî=1ネg?Y/¾…|ý=?¼P?MRì=›ë$=S¥L;kú€?´Ø¼¿†”*?Ü’a¿šH½c#¦=‰V´½$T?e$Å?Gü§¿_‡®?% f=×®?4èq½‡…‚¾#Û<ÆâD?t)&¿it?T?ð½·}¾ò¼k½YÜà?lÜ = ‹ ?L‘Ö?xæû?X½ÑMH?D­®¿u#?>'å¿dqã½Íêz¿€…k¾n s¾DúÎ>3# ?fkœ?HÊþ˜Ã’¾*F5¼¾„ؾ"\¾$½Úƒt¿z¿³¾>B¦½»W^¿•è-¿…Ç ½É@l½ÏÉð?R˜úÀäÈ<ž¡°½+ñ@¾Ûߟ½k%à?c$ç¾­¨?ZÃ7¾žƒ¼>§Ç„?8ú`?o‘´½ë‹r½æ–½^4¿j¾}¿ÚN¿fÓ¾#Ä)½Ÿ»’?HŒM?JΞ½ØÌF¿—:¾…-¾L(ƒ?âQr?D`\9'°½ì¨½ˆ¢j¼ì H¾ÇÏ=5ðD¼ÏR8?è÷-?M8–½7³è?FÄ@¦9`?0$p½¹‚?V…ì?÷õ+¿ ¾ oÀ?4(ü?Oýò½‹ï?p'€¾X c?a¿z?IÖ^¼GUÐ<ñ—?/vò¼µÐ¿{úL?+C_?娗>ÿ.¿†¯ý?Y`‹½ˆIê¿€D´¿‰V~½÷Üt?@r<ÞXÀ½¼Yþ½¯k.?7‚þ?„ä?EDʼõ.ø½ãÚ¾½ÑJ(¼ëÙ˜¿£+ž½ª °¼Ÿ ü<áh?q-®¿{Ñ?St§¼¯ì;à??3¿ƒ8‹¿†çҰ¿ˆUL¿jÊx½èXD½áŠž?RR?<™p?íÚ$?ºV¿Œå¢<Ä_Ü<¿¸¨?ˆ¾ ¾T»=v)ä½c?JT{½ƒ„!=Y†?:mÊ¿Â\???¼*ˆð=¶>¸=v ¿3d¿|Üx?=ʼñ`¿œÊg¿[?t=8½nT?ͱ=Û,?tz½¶ n¿×sA?^ÕÈ?äa?`'4¿^AS¿\´6?^Œa?sü¾S°=ó´,¾ ?M?ƾ.¼°½1 ¾fÌ¿ƒ™4?T[Ö?iLf<µþh¿aKÒ?~ZT?HKZ@/½%¼ò·(¿•g½˜m^?u6V=Dv¨¼à_@½Ÿ^˜¿Ž¡¿‹1%?º?FHú¿—v×½ôÓ´¾lE¾ET‚½üpj?u[\½Ø¢È½n ½¦c¼Ç฽‹~.Ààľ)2³?áÝ0?4 …½Ÿ ¾mc=m»4¾J®¼¸vè?á&?ˆË¿—ã½i·œ¾j„¾G΃?=ä½+0?R]¾­d?8=@?K°?Pò¦½×%>¾I}+½ÊÔ ?CJ#½ ½Äà¼ÀH(¾z–?/нç–?,št?sA=LEˆ¾‹Ì?K̽‹n?*ºs?Êÿˆ¤F?2׿o…É? d ¿zøW¿ŒXL¿„9!¿'F@<¦³?3µD¾"8n¿Ž@—¿Œàᅧö½·Ù®?IÞV2?Þ'0:9R¾­u|<>@?,Øy?p³Û¾c^½Ò޾uˆ<=©ð¾%ÏÆ¿!¿œ¯?iœ¿ŠÑ±¾ê¾п¿¤ ¾ŠÃ¿„û? ©_¾Cœ,?B¦à?_™D=Ñ$Ø¿œ±½}z?iUi= ˆê¿z=p?rfª½Ø?]c?4‰¶¿u¢Ì¿‡·=Em8¼¡²°?u·Q?JZ¤»­^P?J?a=íI¸?4©S½`©0?H~ü¿†4¨¾4«?d¾2½ª½Qkˆ¾>æ?{Ï+¾åh?‚憾S|>7¾=ë)?}œ¾DˆR?Yó$¾…¥?~£^¾q?÷¹É¾JÌ™¾y‹¾”$8¿{Gò?Uoº< N ½“ô޾ªÛd½”Úä¾?û¾1Ê\½è…4<~× ¿“ù?c À½gŒ¿q>忞+¬¿xÔ8¿ «Z¿€S׿‘QÚ?^Tl¿ƒ¯½B‹¾[aì¿it鿃MU¼ ¿’}?wiÛ¾±ƒ¼Ã£à?>J]?|;½Àêì½\hø?ßp?=áľ~H¿gá?_ýh?“,¢¼IôÀ½ãm½¿N¿YH¿c¹@û ?Rlš=…¸¿OÎ?e<é¾Bñ?^éD¿˜,޽{æ?ÚF¾ ÍB¾A`0?Wö¾mØ ½RÀؾg½Øûò??¿½°Ô¨¾Å¿ˆ¾/ƒ½‚|½ïHÜ?8䆿DP?\“@1x)?4$'¿.?à†;«ª`¿•;¿=Ѓp?/eÕ>‚?*®p¾‡šÖ¾"oˆ?êðã?"ó’<üËè¿„ÿ™?ø&v¾Kb¿tÅÄ?@Ò½WuŒ½«ýü½žuÚ¾xÀ¾Y*@¿™N?N¢½qãø½+œ¼RZ0½o˜”¾]®¿xÃõ¾^ÊP?i‡f¿Šéó?Sb,¾ZøÕ=˜±ò?F ¾bÊ¿Î?èº9?&ð8;—Eà?G-i>­ù?F‹Ó?ƒ#ˆ¼±k½Û¨¿‡0‰?_¥U¿ŸŒ½FóĽ’D$?Ú¿ž[>Wq|?0s ?/³œ?1²„¼Tp?FðO?q*é½ÖÒ¾M  ¾ìî?A"_½ÑÊš¿z‘¸?KÇ=;hø?^2›¿¢1X?.%(½¡:À½ã›0?E¾0?E?Š?ë´I?IP¹Œþ¾››Ç=»¥€?|Ö=€nO¾7ļ©Ö¿'É?Šó’¿…Bœ>IæÀ¿‹¶?Š$Þ¾»=ÔRø½çžš>S}J½ J ?ÓÈ¿‚£?”-½®‡€½t”?k(ã?}õ`½†ò2?YZø¾jdÀ=RšD?ñ~~?wc¿²Cª@Žj?8¬}¿I4½×4b¼Ì.¾sgz=ë󼙀={”?lƺ?p=ù½Àó8=Íç>½ò^è½^L8?æ=šèĽᘿ”¨‚¿‡§¼gнôY?vz#½’@¿q„G¼w 0=ŸF¦¿%@>äg½«…½Þu𿎂6½0ô¿†˜Q?h£½¾º"¿bs=>ða—½…€¾R/“?hØ‘¾CåB¿]µ|¾c1µ½µ„?¼÷ <ÀS ¾˜=V?çrÈ?u£ª¾¨“ ?tn½Iž”½àð½°Nþ½…¸Î¿‡e?w?N¶I<¼„è??¥P¿yöÌ¿•n¿?c錿˜ŒM¿xP½Û ž>Jñ¿yð=Z–„?=+°¿j´[¾V“È?n:®¾*ä¦=F»ô¿„œ?y—n=/â?„†?eöÏ¿„‰†¾t<¦¾I>e?)L2½ic0¿€ô¥?=û?S­½Áy½ì?n¬¾/Ͻæì?Ý<»½zA|?ƒ¤»Œ»€¾M{¼§‡?çqQ<÷ÀH;¬ÜÀ?JCÖ¾°u'=D•>ò‚?fŸ6¾w>¶=mT?ZО¾Z‘,?4»®½$\$¾†Í\¿yç¾­1 ½[T?3 O?‚ŽÇ¾¥3Û¾b=¿†Ò,½A·4¿ üŒ¾9†?=Ö½G鈾ŠP¿ƒmƾ%ÿm<¨ÿ½=q\=Ŗʽ®÷?kW&?5ëä<ý0?JZì¿aW ¿†¾å?áÈò?V9?qoµ?=ÿ?CˆH¿‰t!¿n<¹½ën½º¬Ö?P›ª¿v¹@4ÃÊ¿dØ?OL²¿`9š?.Þë¿ƒÕ ¾Xúd;ªn@?Ë>¿xþ¾DFo?åí¾dñ?gpÉ?âD?i Z?•»?k‡õ¾*h?~F½5Äj=Øð=ø¾F¼b¤Ð?”„ž?+￞Js¿~žV¾@Ô?*Iæ?eåÍ?.%?NL¿Œ¾¿j¼Ë˜¼µƒØ¾5À?cÛ1¿ƒi¿‰T¾.¾Å¿@?TR=#̽Ÿ³r?r}¿‘ú ?_°Í¿‹ôÀ½ .ì=_>ª½×Ÿ={Ï4½ÊÌ ½¥þÚ?f0c¾bzܽd³¼=Û‘¿ha½E ¿‹ì¸?lº¾„Šç?^0öBÂnB8NÉ>šŠ¿‚±X¾Cjx¿kYó?5Œ¼ñ¤`?8Êp?v_x?D¾I?‚*?J¥\?{ˆ¿™u¿Çß¾" (½drȽ?rê¨?Xcp>&¾ƒáÔ¿€z„¾$R<о8¾4‚”?!=¿’Q=ŽY8¿†»Ð=D#¾Éo=Ø8¾6©î?YÒ@?2 ø¿‘º¿‘ûW¿\w’½žR¢¾sŸ¾Ú¿‚ò¼ûLX?ll½˜¼¼?`RÞ?Nq½ÖvÖÀ¶?y¸À?*h|¿õE²¿‹‹?õ?F:½L „¾ð“>pF½Êè¶?xP2?M=œ¼Z_0½i!´»Án ½«£D¾J?Z+½ßq|¾9ͽ6ˆ>ÝŠz?‰ø¨?¿º7?¿Pþ¿—R5½1§ ?Sžª¿rè̾NŽÑã²¾j’½²/€?-»Ó½®'¾¾!*õ<Eà?=kÒ¿¬Ý¾O˜ú¾!¡1¾;»I?s˜õ½ìüb¼Ø‚P?N«è>Ø=&®0¾1j€?NªT½›êø?C¨½?~;Þ»¦¯ ½:˼==ñt=ªQ?5L‚¾pí¿u 9½ÖËt¾Ÿ¥:?óA?j߈?Pcí¾O³½Ïuü?R›ð?n/f?ȳ4½™c„?/ë½5Û\¾;÷h>y¹n¿…÷”¿õeb?lм÷ø½uÈP?†C½íî^>|½õ:˜=u‚Ð?b±½™}Ú¾>ö0¿€b¾½j‘Ì¿eżQ\h?F‰¾CVÑ?xs½Éãâ?ƒ…L¾\Tº‘·€¿ƒo;³6¾ÕØ¿›uÒ<œ@¨¾‰|¿Z•=Ƽf¿Ç^?i郾LãC½‡Ô<â ¾mÅ”?K*ô?qo¾`kt½¯´º½´s‚=ÜJ¦?s·¿í_¿~$¾2‡4¿&£¼[BP?$= ‘˜?ñ»½õ¿<•²ø?Ð+»ªÊདྷ…ƾ§J@2ܾ'¾Ô?ç?SÍ6=âÛ:?K=ø¿–™¾ƒL~½¦>ä?07 ?wÃÞ¿•i:»ßÿ@?AÀ´¾XÀ@ø| ANª?i‰½1ª$¾sª?g$þ½¦ŸŒ½•¨?M¤œ<€®p¾åñ½«yȾ) N½D`¾Ýé¼zI0?!`?uNP¾%‰?Ig¾Sü°=Æ"ò<øïP?c§™¾dr翃Ÿu¾£ñ?‚¯¸½¹Jœ;јÀ¿~mV¾˜^?GŒä¿‡§3½›˜È©´=ÛÒÆ½ìøø;α½À¡ú@Q A.ˆÐAÍš¿‰Ï®¿×£¿ Ü½¶¶n?OpØ?ikÁ?LC]?cå,¾€Vš=O›8?,¿zäÆ?Ô:¼¼¦j?T{å¿‹uK??'†?‡!¤?TŒ´½.±”?ÌxÛ?XÆ ¾¹´?YQ1¿–"1?|·–?Hx(;è}?E¹Ü?KºF?G¼ä?e¨„¾{íÐ=¡@?A Œ¼pÆ ¾«`ÿ¿wŒÐ?-_¨>t}?)Œ>Mr¾5Þ½¾ü@\ˆ¿dȼq>S¸Î?26?e9?`¨¼?d4¾6ûw?+Í-?ï©R½Mô?]߬½þ²ž?jƒ8½eƒ?I(º¿g/ù¿t`=2óü¾Ø,˜=94?Þ}<­¸¾8®\¿Žy^½ß–Ž?j;†?^U=Ü¢½ÊX‚<økè½…¥Œ?bc„=/÷œ?jGa?N–Ø>?Ié?DƒI?mWŽ?n¸‘½ur0¿ŒŸ¾=3l¼ËÚ¿ŒŽ¿?2<.?{b?F™ =ä¿–C4¿]ïÐ?C¤Ä?W5X¾€±=¤À¾2î²=ï_8?SE¾÷÷s?E =ÖáÌ?QMò=LÒð?Wâ´¾]¸A¾‡< ?Cçî¾3ž½ˆ h½Z¯ø¼Ê@?Zšä=ÚÆŽ?BV<˜½®ÆR¿m@z?X/Ñ? lh¿l»ˆ="Œ½œÄº¿Ž†?,­C=\f€?ÎA>Õ ¾¾^ÓI¾å?ââ¸?n<€<‰zÀ¾VoºØ¾”|O»$‚€¾6 &?iÄ?+„š¿~R<¿Ÿ(v¾Ç ¾„e?_¶?4³¿?GËn¾k½ ¿€}n½¦*>?nêK?Nff½úö?<–B½¾å¶¾úk¿ƒ À½ŠÏ@?c$Ò¾ ?Yu˾ÈUÚ½šßf½–ü,?€Ø¶½Ô¤Ú¿|Y&¾1Òbºce?=c¾œëj?KGD>“‘‚?<F¿‹V¾?H¬½´J?>Q„¿”¥V¾HO >Ÿ¶¾¬­Ï?HÄ“?ÝP½Áë?A¢Ò?|75?%‡\¿ƒ1Š?&>½ÛVBe B<Œ?fz¾¿½¤Àè=Aü¾ t =ƒ‡¾UC̾ û~?Qšv= æÌ¾Hòó¿7j½ ‹d?xKÙ¿‹ñ©?å<¾TШ?rL?:R=Ô¼¾—D=wc¬½É¶:?kòô½Ï·8¾'×r?Þ v½x¤d¾ÒsM?p M¾´,e¿ˆ }¾C/½‰0?énÛ=Ñ„¾i ½ÀMÊ?\yW¾Þ ¾~äÜ>$¹A¾W¼+½þv|?P,> HV¾ ÃD=üJ?TÈ?‘oP?d®?i);eÄ׿fÖ½áš?ܾd¾ñi> …¿aÒ¬=éÔ¾?xçx¿iÞνÜN¿€Ep½Þ¥Ö=à÷À ªÍ?Žö¾=†¿ukʽAuà»Ì:À?=84¿[ª¿¥tD¼2`@?K˜†?j˜l¿‰ÊE?|4ú¿“ùl½µ‚J?YiÖ¿FãG½Ä£>ó1?Z̽´´Ì?\!Z?zÊ„=:D?Nw·¾_¨?xï½ÿ—ø½ßïþ?Fˆ¿ºAw½ý\¿g€Á¾á><êÒ(?UÓ¿xô•¿¦?7kl?Y(¼=æ”V?)‹Ð;§à?mFᅥø\¾lÅ(=¢yz?rÖ€½¯aÖ¿‘}нɌ¿LK?=4¾„öL?dkÇ¿ˆ/l?fÑ7?Tá ¿0=½ÆÎ?f©?`K„½µî˜½5K⿱¾J+?€n›¿†qŒ¾ aD?Ûtá½ (?A…j¾b…h?aðv=óOœ?Ýa?Eå>?Omb¿u¦h¾Â-?D&X¾=̃>ZP˜?&Ä|?^¼¾½äÞŒ¾AP8?ÔåÄ?M‡“?:$’=€t¿Ž(Ô½Ld¿‰¥9½“L¾'ÃO=8?db½Ên.?7šJ?7{ž½r­˜½ í½¸c¿‚CJ¾;Ãü?ƒ|¾6s½9Þ|Àc¾ 8ò?XìX?h~Ê?F~C¿€ä¿ˆÌ}¾u.¾OÌ‘?<ž„¾¦6H?UÀξ ㊽™ñ¿§R½ÔéÔ?[k=mE°¾G¾¤¾Ëfˆ?Ùál¿ˆ­=i$¾ž’?uo½¤‰°?yÏu¾Åƾþ?ä31¿„æ;?ç¦=½å츿¦æ¿‡D™¹Þ¿n{²>ÒO?nêL¾·œ¼¿Ž°½îxª½PÖð¿‰r2?ÓÝ.À$q½‰â^¾þ­?z2:?Úàx½ð¸½u|»ƒ¤ ?9¯¿ˆv ¾KúÍ?(o¾†r>žj`¾ú> 8À>,\?xÂ?bQJ¿cûì¾#uW¿i´¿w£=RÚ¿‰¨?=‘Î~¿”>$㘿ŽÒ¿½º¾k>¦u<&và½@Ø<z@s³¾#†û=yú.½±~Ô?‚Øí?A¿½ÕB?ki¼9k0?àå?rx\¿„Ó³¿q"Š?RþÑ¿o¦ó=NL¾-pP?Tõh¼ªÅ0<¦·½>p¾Hp¤?|É¿yB½cd¬¿h Z¿T¼™ø@¿y¾eÃ&=y ½6}t?o¬¹?d¶Ô½¶5˜»¹œ =o˜8?U“Â?^Èš½¦0Ð?ëj‹;­``¿i޽)mô=Sbx½¾Ed¼ °¾ü-¿…˽í3?tš&¿„—r?G­B?SÔy½·QÂ?FYž½˜®\?A¤ª=YÓ(=´½AŠT¾3\³¿†Ÿ?IGè¾åF½þ;澓@¾;"½oô¾G¥¼ï̾4ÄG¿„¦?9BD¼…¾h?ïÎöGA¦FA…×í½þÏ2¿†6?HlB?=t¿šc¿Žµh¾šâ›¼t½Œ…d?è,½*RÜ=ÑÜ¿~¬?a¼Àõæ¾Nq?Vwî¾H¶G½@#¾Xx¾$Æö¾9µv?B¶±½Å®l?éNz?Pyˆ=´DÞ?S>w¿ñÖI¾j1¦¿ƒ$þ?Ifl½pÃ$¾\CN?õ¾l?_8?¿>¸?Œª¿Œ»_¿‚C-¾'Œ„¼5-Ð?Y6ú½rÖľwz ¿…©¾¦6?V¹¿…Ä(¾É¿Š–¼¿y<¿‹Ø´¼±G8½G„¾~¿†›P?òy3¿‡“à?g¬T½Õ5l¿?EU–½Û(ô=.&0½í' ½'̾@þпCÐú?-¶Ö¿~1 ?;³é¿[g?ta¿…DØ¿|ν¿zç@?[où?jÙ2¾b®=0rм¬œ€=°ËÞ½Ìên?wg¨?§Y?}j7?c€<½u-?I`ì½w4 ?SQÆ=‘£¢¿„½/¿k0?;˜a¿\h¿Š;¿Uа?Ojø¿s»½}?W¢É?Bœô¿P¹<“0?½çÃÒ–¿p®†¾EPA½š¨P?UȾ,«Š½²@=8u¤¾oC^¾;ö̾…“‡½WN¿¶Ú¬¿H$3¾‘£;½7ø¿›ž¸½ðX?K-F¿\; ¿“åþ¾¿^?NÁ¢?~7ž?)bX½˜ÃÂ?Nð?ƒuê½×7̾2{?5DØ?X?‡¾6X­½d/p½â¦È?ñD‹<ɺt> ðѽßÀ¸¿sy˜¾,r<ü…¸?FTÔ?URY½M—Ð?x?cû=èѦ?H?k&¿‚®”?ˆÖÞ½Ä|Ô?\þ¾Í??\ßW¾Oò½%$¾ia‹¿…X–>Ä81?N…󿉦|?k#´?Òв¿oÝ꿌¡}?-N¾’T¿üb?n+°B¢ C&Äi@> ( Û¿~‡Õ=Ì+?^1ß½§b*?_µâ?}ªG?}õÔ>'“½šÑŠ=w3è?p¢=NP½‚©?wUp½îáè?Z5?Dá˼I@?$Êù¾ø:?.õ?9&ø?Kü’?]ÒŠ¾db¾7›ð¿&ß?á|/?!c™=D‚?LòŸ?fKq¾’åz>œY?*ܼ<Ð??Œ8¼ØÐ ¾Weó?Aiô¾&´”?U÷þ èà:{?¾H¿m\½0L¿s L?Q彇¦~¾N;è¿…¢•¿ŸKÂ?`˜ò¿–`|¾Âø=UPè?Z¿·½¯IÊ=žì¿”#¾ O¿?V?S;˜¾vÒ?DüÎ?6Ï?bÀ´¾jè|¼X ¾'Ø?‡‚R½žµæ?yÕr??bø;;²@¾¼¼¡SÈ?X¶à?é×þ¾qþÁ½á¼b¾”¤¿WØH?Dw½Ë-˜½Ñœ?j@꽚ä¿r…á?`?ë 7¾ù¹•?‡Ñj¾t´?/F¾Ï™>yc ?F-´<•*?\ ?æ~ç¼Îˆ½…@Ê=H2t?ELã= ?¾Ûn?W9^@G2à¾?N¼¾(ú¾ï?ètܾìg½«&”?N/Ž¿†¾z¥Ê=VL?T¨=3k ?eÝ0?e>ê?H¢u?†Ñª?>ËY¾ 1~¾ 8 ?%º?FŽÁ<ìþ¿‰,Ê?vŠî?U‘´½¯D~¿||¼X ½ˆðâ¾3oܽŒ-”?Z «?[‘\h?YÁÌ>Ã,ð?ORÀ½L&Ô¾j?ƒ\9?Mu/;<³@¾ˆ—?S;ª?EAì¿p‚ä?rà ?TÇ8?£m¿’;徟‚’¼SÀ½ÛUÚ?0gã?4¹½&ëô¾)·š¿‰O¡?EÈW=5ÛD>1Dx=:Ä ¾Àªy?‡;¬?@^þ¼“ö€?$ x?_üí¾>N{¾À?Ìé(@6¿G]ʽÑÌ?%xu@ #ç¾6ï¿Z¾_?Y!µ½ÿM²½dWà?æÁã=þtâ?F–¤?rM¾?)°¿…õ?iB¼åÐ?H¸|¿oL?UŸœ?‹€«¿Œm¦?h¶ ¾û¾¿D8h¼ÄT¸?¡0¾T ½?Šnî¾<’ê¿qðÐ?sRË?‚ö`¿“KD¿cy^?ñûê¿oNŽ?3§r¿™†9jl?y¿‰½Lkð¿rô?^J?z,ë½5þ½Ç*¸½Ò["=x†?PQ×?{¯°?Wpü?Tˆ)¾ñÅĽÁëÀ?O2¤<°ø@¾£V÷½þø?D<?jž"?Y~X?‡ª½Þ韽/ô°¿ŽÖ¿÷ô8? Et½r©ø¿”–×?rÂ&?̘¾=î9æ?¤Ó¼’{¿–Ê(>í誾@S?MxÞ?hjܽÕ9˜½þ­†=…é½ú¹î¼Àð¾.Zœ¿zþ•¾œdW¾/Ì»?U³ê½V“ð½sãd½ö°è?a 0;ÃU€¾D—?d`X?0Ÿ=÷é–?â¡â¿p ¿}†{= X¾s,Û?s×¾½ZÈ,¾³aÙ?]…`½öpF?Q½$¿n‚E?QÇ?YÏM?k{û?nVç¿“uã?biT¾_¯Þ¾†û ?Fð¿j§À¿y ?ä ?Agò=™ƒD¾”J½\,¾³Ú ¿cÞ*¿5Õ½ùô ¿‰—D?j˜æ¾éH¼ÇؾÓQ?IнuÔ?HÂ(¿q ʽnŒ¾ÂÂ’¿‹é¹¾ ¬ó¾/2¿ŽH–?oP?4A?tüM¾;æ ?aÎ=Ò ¨¾Ä{?%óW??&Ø?0´½–ÆÐ¿ŒæE¿뤾ˆ1M½MCØ?LþJ?w¾ ?9w/½‹YŒ¾³t?jK½¬°à?í x?Me˜?|ré½–œ½È¶?cÎT>Ä.B¾‘Â?ZÆ_¾y;B¾+J[¾GTû¿’s¾…½‰8¾Žœ“<Ó(¾ #;ùo`?KCÒ¾€Â”¾¨"¿L7¾—ø]½¬ì@?.4Ƚevp¿„‚½öí·¾á/=g¼ø?=xx=§<ü<û ?ÍÀ­¼¿‹: н¿`¶?C⥾ ½1?hÇÛ?F‹#¬¾·½ ‘(?78¿yO@¿˜Ú2=Ÿ§<¿Š,?s;ö¿€E`ûíš¿q7‚¾êW.¼†ˆ?X—?z#©¿~€Â=Yo ½­Ä²¼ô@?S:˜>¦N½Y,½bð?m ¿s³¢½Ìa.?T/ª¾úì?fË?`l¼½!‚例§?s`]¿‡@m½àP¬?DV=µ4}?8Ò†¼HÊÀ¾X^d=íh½íl?…œá¿vuy>:<¯?c·þ?è=ç¿…úØ?\ÏK?@ñD<ÈŠ½ðúÒ¾ue!¿¯ ½ÄÂÀ¿Š©A?t•ä¾R1Ò?æSÀ¿Œª«¿ƒÒv¾³Ší½… ü¿+b¯¼Åh½úè¾^±¾Þ.Þ½›@ž¾?Ä?s=ˆ¿u"K½®&ܾ$>?`ÿ»?Dä:C¯>µVž¾AÓ2¾<¿eXL¿‡¢!¾s¶¿wŒï½L¼¿¢³S¼ÿæð½ªŽB¿vy]?;êÅ=6?ü›½µ`¦¾;HE?gàË¿< ¿à¾¾=×Õ½ÿí„¿€ä =‘P˜?T<¿ú¼C?8pÚ¿‹C˜¾0'~ÀÝW?­å?Oæ«?Kýj? `¾‚ß=.‚¾L²ª¼.ð?3§°?é‘?:½pö@¾D¥È½æŒ„<çRÐ?PdL?B‹È?šO?Ù8q¿yCS¾ —Í¿‡–ö¾•\t½Þfž¾bTj¿[Pî? d”<‰¨?8¬¼¦о#Á›=zd?/¥Ï?BGÜ??p"¿}Uù¾`Mƒ¿qõN½›F<ÏO¾P¿¨w6??Òj¿ˆº¾‘´?cÙ/¾Žm¿F—¾Ž‚t¿T ?::¯½ °¿—Ë’¿Œô¾‡QP¿‡¡Ú?Nƒ*?RrÛ?<°¢?aE¾vG¸½ëÔ¾ÍÜâ>%÷+¾W¼t `¾”fÚ=åÖì?)á—¿{ƒ0¿Ÿ´ô¾6,ƾS¯½9è?=Œ’½„ ¿“a(¾ÀÙ忉]¼þ;`?MMU=cü½»8¿ƒéܾcY¾7–¾J¼?U:T?ÞÐ鿎t?LÞ/½*P?5ßÝ?L¿‡HļV ¾_CM¿y•æ@+¨-½¦<š¾o=ø?ž^¿q;ú=Òû½Ñ°¨¾@Ÿ¿ˆÐâ=œ_j½–þ¼ðؽöÐL<‡÷à?7R =ëz\½:Pœ<:¦?9¾?ru?D9n?M`¿~¿^œˆ?V£è¿Z‹Þ¿…¾—¼é]˜?UÇj=£Fì¼ʼ֕ؽܱ”?‰;~?h€Ð¿uö¿-ºa=ó,á:¿‡§Q<£ä½'ß(½í8ľhÝ[½ó'0ÀõØ¿¯Ù?d>0=öø¾EKª¾ÛÖØ¾@›4¾ þ ¬·»,C€½à)´¿}< ¼’€ì?eÏ–¾6{½ƒ¬¾¼zÀ‡ ¾2ÀÆ»Œà?Ôk+½ƒSº?';û¿€ï4½1a¼½Çx¾+“Ž‚½Öxº?ô{W>J,`¿Ši¿“Z1?\&L?@_?U”¿‹×;¿‹d?#ô½Ð£(½g3Œ:ž—½V÷D¿‡@í¾46 =ˆ®½‡âÈ=•Ü,½ãŽ?SM?:|%¿ƒœ`???9£ø¾M=ó¿‚þä¿“¦&>Ü*÷?' ¡?{°¿x‰Û>TjÖ?Ua¦?‚zÈ¿Hg=Gÿ¾Ï©¼¶ ¾¤o¿DS?Qì²=?`?\Šì=‹¤Ã½â¿ =™h¼?fè'¿yD?PD¿OŒÅ¾TÒ6=¢¾2½ ¾š?O¡?™¨7?F¸÷½ÎÑʽÁ Ô¿“ƒ}?ƒ1r¾Ÿ@«<é”H?0Ô?U!B?Žv?‚è§¾{aà½/¨¾8Ï1Î?q\•¿w~¤¾ ?JÕÿ·j½”\Þ; €½q( »ƒý`?8eî=ðδ?LÅé¾®ó¾c;‹½~ñ„¾jš¿k¾5šL?lß¿”Y;¿gJL¾i¾²= 举?ê=.Sˆ?\¥ð¾FÈö¾ÓP?A«„¿åf?KòÎ?¶j<;‡@¾G±=ªˆ½ºqÀ?…üR?Q›½%Š¿qª9½¶ÏP=! |?,|x<®KØ?TX&=UÐð¾;»Ã=·e?2jÂ?muQ¿¥VÀ¼@ã¿’¯c¼X=?K7?&™˜¾hÅt=!}ؾÔ¿’v˜½ôq¾M)¾)£?¿Å/?:l¿Yp.?IŠÎ?âGÖ½¹/?]/¾£j¥¾SE?:7(?3‰\¾‹ƒz½Í´¼ðV>œn€?JÇÓ¾{‚1¾ Y*>”o¾j†?u5R½]§Ì=—»ž¼ 9Ü`?Rãy?f2k½{¥ ?]¯{¾$]%?M“Õ¿qFi¾Â ±½¦­?T|ý¾ —¦¿uÝ=½Àl ¾¯ñ¿‘Þ¿há÷¿‡Õ[¿–&R½¤ŠÔ?c›a½¢ª*?m7齯z½¼ ð?"zæ½›Dž¿“äk¿w×?g¿ò?x›X½¯s?j„?MÞ˜¿ƒ”<»h½ùK¶?1j³?F7¾7 =Úð?`áÿ¼› è¿díÕ?@ãì¿‘;. €?æÍŽ¿l¿[¿‹86»òkà¾DÔ»2ê½îŸª=¥…Ä¿¤Ê¿lꉿ‚G¾¿Y¹G¾"9?T†?CÌÑ>V䌾)ô¿kÚ•?ǽØÔ ¿ÿñZ½›Tž>PQà¾^콈Þ¾š$ô=–«Ô?ƪ…½ÊO½‚gñ?rH¦½út¿{x¾6™<i`¿†‹U½ŽŒ½òÐ`?Ùƒ?`°¿i-¸?G¦<–‡pÀ¾Û½îQô¾Kb¾ ²Û?\>?yøö¿t ·=fȾH¥X?gq}?î ¿#‰?M··?a÷J¾u±¾] h½ª!ľ±j¦¿‡sü?aäÚ½?®<&ù?yØ¿‚2¦¾‡X÷¼Ïå?T¼=Šd?Yç<½c®x?dþ?l>I¾Mº¼­[x¾ô0½…Wl½‹ÃÊ=lP¿ Âã?8‚Œ½µ©&?t=X¾¢½VÌн÷±Ð?xE¾‚X¶?x‰¢¾1yо†ûø¾”ÏÀ=ëZ?1þJ?p&Àéç=‡áп† 5=0~´¾Zʘ¿Lk¾p«?b;ß½ðúr>9È¿ Y¿ü½³¾ Ÿ™=æc’?O*.½Q辬 ½GÅè½Á[?Yµw¾i…¿z˜?Y÷â?dóˆ?ã¿y.Œ¾'²¿c¹ð¾Zß‹?lí^¾‰¤p½(ü>æàÜ=z>ˆ¿’a>8_š¿˜ L¿b!P?sU)?x‹s?R пi¶+½m†=žž¼?jF;>7b?O…¼÷‰ð¾ r¼‘ËܾŒ>6=ƒv–¾]T?/Ýâ?<Ð0?cS?+¹ä¿mP ¿}mc¿|º+¾¯½Ê;ãU@¾4'Q¿Wí?xd=¤ž8¿„î5¾\]¿†v½¼¼l¾2.…½¢\½À˜Z=n÷L¾nÁh?92¿ƒ‰U=œÈ=´[ä¾Vç"?E×ü¿‡º?æ'´½Û"Ú?4ô ?³ˆF¾“æ?é’#¾B˜?fÍ:?.ûÊ¿Œ\¾÷¾½1õà¿”&þ?[ªX¿’¥û?;‘ɾ* ¥?]Ò=?W!g=_ ¼É“P¼®Ü?DÒ$¾b¥¾…×°?]‰–?ýà=™€¾Äf?€'4>úÈ¿bÐ~¼ð—¿‘S¢? û*¿’ ?:×6Àé?M¾;ôР?4 ª;‡Î€?E7?3V¾Xa¬½âݼ?RQ<¸¨¾‚rü¿z¿~?'¢|½Oè?åÈó?gþ7?2¡?4]㿎O¿ØÓ¾^P¿‘¨U¾Š¿Š;º½k¤ì½Óµš?Cé€?dP¾¾0)¼íã ¾]Jþ?î’?I6?[N¾N· ½¢âª?9ŠÊ=­s„?/©J?zL^¾@i;½“Ãè?C¤‘¾!Ž?E©K?‚ïÔ½´QØ=yûÀ¾yoŒ=Ë)í¼æ>C¿‘ m<£7”?ê?Lô½‰ÜÈ<ÃÞ¸¿Ÿüx¾dì?)ì?‰™½Ø ?fŒÚ?á>½ÍC¸?q o=ã­J¿†æ¶¼¹™`½ýv?ñ¨¿½€F¾¿~u¾‡2=ÄØ?tð†?qÉF¾u|¼®1H¾Wb[¾H£Ø¼­À<Ì x¿€î޾ˆ–¼)ÑP¿tÁœÀ "¨½åiR?YÕª<®¿œÙZ¿~ú)?V&ñ?g¿¼¾|ª?t‡Â¾\ä÷½äM?%7?vŠä½ÿ½ü=Gã ½…aò?U+›¾©@1?V5¿žCW?YLÆ¿¤;Ç¿‚öÄ?}’e¾A…ξB áÀ•V¾I¸é¿„L7¾q\Ò½ÃÝð?Hà(½Ø ¾A{=?U€û¾±É¿“jö?ªù=ò/ö¾˜n|»4Ç€½ñŽâ¿\ó ¿ˆ8=_t¾Pð=M¿‚CI¿}û“?«Å=—貾τ=Ñ;º¾3eé?\§z¾º?D¿¸?:â¾t˜¿ ªÈ¾ot¿Š!Ü?Hh~¿™øÈ?pÛ¾Q³¾{pÌ?Të¿€å?,!"?ƒ7D?r¿kv1¿Üš¾ ”ò¾)ë¦?g·9¾Q䩽&Dˆ¿§„ǾD½Dz?7#½ëk,¾-S=Æ@P?瀽¾Né<^®°¾lZ=\L$¾P½æ×о6îX¿‰z(?3n0½{?Nxµ?h¤Ð¿‰,!½W€ø?!Ç‹¾Cˆ÷?ÖÄä¾ «x½Ñ–´¿hÜ?;’F¾ ݬ¿£ö²>L‹2¾%.¿iÞ¥?o&•;¥À ¾A•S¼´Õð½úh=›gþ¾¤¾eÛ? ˜?o 0?Cð2¼~ÿ`?y?U¿rF¨¿ñ?Rwä?Lé=?D†Ü¼rQ€?a„c½PY¨¿€ e½º¿“À^½-{\?r„ ?Q³’?c?>½§¢D½É5R;ʪ ¾Cs¾M¥?Fë<]“À?%Ýx¾N³6¾BêÌ?ÛÖ7¾Wrz?fhÓ¿µïÿ?`ã!¾W‘?V–0½ý}¬½ê¾ Ú?YPg¾BÕE?VÌ¿‹Š¿”K˾W‘¾¼ç¯è?Y,“?j)^¾ftf?NµX¾+¼‰½SÝ„½™ƒÔ½qï?À¾YÚ¾?7 ]¿ˆÏV¼næ?i×6¿ŒK¿c¾€j?i╾8kƒ½`×ð¿IÀ?\㘿’b?¾hˆ©?0Ø$>‚3¾ð)½¦³ò½À傼¶sP?(Ìp?U?00ì¿¶gO¾l]¾Þh¿Œ`ô½üñ¶?BàY?oH?7§©½å¯²¾«ì?HG<½ø„d?ª?4ºŸ¼ÀÈx¾\øK½‹t¾VÚf?X¥w½ÀþP?æ)2?2„l½Øö꾄Ã?ɇ?A_a¿Œï‚¾–f>?W¦Ë¾sgØ<–X?=vy½•4BJæ¡Cò‘@ #ä½¼£4¾8@?)Õ]Àåv?,¦Ð?Q»ö?V Ž_¾µÔ^?é<“?Êöâ»ú] ?BÄ¿r꨿‡[¼òh½Äê?ì…Ú¾1µG?Xö¾m ­¾7 ¾£§9?6¾iýL¿l¨¼ðLø¿†e@¾³¿—ì½ÈÎR¾aƒv?2Ò~À¸I¾,i}¿…@?,Eῃ½š0?ðD̾b;?5Ö«¿Žç.¼ç’H¾âç¯?á ì¾z|ñ?W!h?E3b? |D?n-Ÿ¼u€?0·J?¿ ¾„¥¿gP?G«>=¨PÔ?7™é?xrÊ¿Š‰õ½ÇÕ^¾0܃=5\°½x¨d¿†€É¿„§>¿V‚V={ŠÜ¿Qy”À¸Ö=®$Œ?Rã?ùe"¿Äz¿íý]?Z—Þ¿`V6?DB*¿W|l¾–>)N–¿ˆq¼±M˜¿“º¼Èáh?xb=¤HF¾ëq=m(P¿kK.¿_!¨ÀÒê<ùU¸¿‚Ò~½oì?\bU† ½éd’?7é´¿tÙ|¾üi?Sî =7?e½O$?M¾½Åtz?'6°¿oÕ¼Æ0¼? ½-‡H½Ž¹²½½ŸP;¹@À?j.¿y)C?Ry>=W½Ìn=Üèn?Uÿz=ö㾈éà¿mOé¿‚Ýí¿fe ¼±c(<ß0¼éÏ¿r°½¶ë|?oä¾:Ø=¿ƒt!½³r0»l†€>!<à¾ÝU?p‡Í?S=?vS ?Þ¿‡àµ»Ä€¿k¹æ½¤F=E3¼¿€²=ÑzT?M?I®Y¿,;¿ìy>?Bô$?ùN¾”ZH=¶¨s¾F ®?ŒÈe½€>€¿tàz?+í¿†0p¿8ؼDûà?k#²½Ïu<½]µœ¿l†>4´»Ûà?`xÜ¿u5·½€¶ž?f¦D?O?”¼Í à¿‘í¼6áà¾=–?iS/¾#ð¿‹Îy¾Mb¿e„¾œã¿~1 ¾Cڻؖ@?2½Ô½Ñ$ˆ>ï`r?ui*¿‘›f¼Ö ½Õ¯Þ½G– ½–¦=P?@Oä½´„h¿€£º¼ëq°?WÇÅ:ù*½!š0¿uü¿ˆNJ<Îv¨?âRž@6½‡»ž?{±Ô¿_ ?oV¾ì[¿–Ùr¿¤æ!¾Cþ?-Šÿ¼@TоSP=J¾ä¾™r¿‹L½ö8?ƒ;O?n<ö¾°+Ò?SG÷?hz <†2Ø<Ö|8½òÜ?Iˆ¼Þ¹€??µ`¼FŸà?a<¿k„?NB?2ò½»¡ø=4›¤½«ƒ?a‰?LÔ*½.²,¿‹‹?:Í­¾\ ”½åt0?M`= °è?’÷?]žD?0ÝY?Yù뽸î"?e{?4 ^½Ç'b?Ê8 @LÄ[¿‘2ï¿Qã¸?Jš;=š¸‹?b©í?qR–?WF ¿jJ¾F]å¿€÷“½t?D¿e„º½à-T= |½Åt‚¼vµ@¼ðà<ü7@½›ºP¿Š9¶¿ˆÍ4¿‚èç¾Í‚½6ê ?B:1¿db„¿«é°¿‚%B='T>*¼¾8¦ =ÕÙ¾€_&?zN¾9@.¼”CȾF·½àfŠ? :b?O€7¾lâ?tc?ö¶†?Pâ)>7µ8½¤B?DWò¾"ö#¾~ˆŠ¾îÆÏ¾P(Ì= Ùʽ±çÚ¿zG-¾,V˾v™¾{¾-½¦<æ?FôO@˜à¾gyÕ¿rªf?pñ÷?f΄?>'§¿oV_?cá!½5Y´¾?Iç¿ç›½µ}=Fh„?CN¿„¦v¿’År¾¼4 ?dÔ?P M>¬V¿tQª½é»¦Àì?@i˾+©Ø¿‰.o<¦@½®¬n¾"'•¾ H?>=<¾3‘¾‚¿’_Õ¾O­¾q”Ø¿Y³¾7ä–¬¿o›ž½€ À½ØÕ@½u;4¿m…á?0<§¿†»4?éL̽Ž˜½†¢½ Jè?ÎÊ&?}(½ÍY@<%ð¿Žúp?ƒ) ½”¶¾S­Ô¾9j’½©^?eCã½ñ!$¾!WŸ¿‹Æ¾5 9=,bL¿¢ñ¿‚Øz¿”\¼ÒÞ¾I[«¿E„*?kZ}<‡°Ð?.)V½ä0?*ò@:î4½Õ{ú?Eºý?gS…¿…K¿…âv¼‚šX?&CB¼ƒ¢€¾CÛ?åš®¿’‰Ø?\ì_¾=÷?l±?MÆC<Ç ½ì†½¹+ª½±Ž0?zh¾ES[½ô0?C(`¿‚Év?¢5;Ùtà?MÜcBë÷‚A[°„=-Ø?犓¼q¶À¿…«¹½È¨¿Â È¿û“?ú£¿ƒ#Ú¿š_j¿3 Ü¿‹ê´¿oã ?½l…˜?Yä½–Z¿zèI¿RÌJ¾"ž!¿Vм½*ô¿‰j¾yË=©¾G½¢ò¾,÷¢?^θ½ŒáÚ¾5oÂ?~P²¿ƒ'½}z,¿ŠZì½$?jÀƒ=™˜Ö¾sÌ0½†Z^¾wè½–v`?€, ¼‹Ê8?hu5;¤³à½@J>?Kˆk¾ŽϽƱt¾3K?hñê¾|P¾T?]†œ= /¤½:Üh=ÏB^?ä ½Öv¾ ëC?2v)?W¸¬¼Yô@?1©;”HÀ¾p^T?üœ§½½#¤<½¿–æ?UŽ’¾ùÆ?gM³¾%:¸½Mÿ|½ cL¿Ô+?t†Ë¿“q”½CŒ¿…<·¾¼ß?CÈô?2«W¿ˆ©j?<œ?M ^>±ÊP?ož6?EØ?^jľ„&j¾ZR¾—îÆ½£¨¾U×*?:hS¿"í?\0è¾2Öl¿I0p¾"!9½ñù¿SÀ?N‰ý?P`½[¤?Td¾½Æоa?‘举ï³!BåðJA¥ÚÛ¿‹eÁ¾RB?Ùæ©?L#¾;`޾qßm¾{V?Ù$?Zy?—6½ÝVx¾vxž¼½¾ƒÊ?U’Q¾r»?u´ ?Øï5?%&¤½²”½F¸?5cH¾òú¾sž0?Ok̾ŠW°¿seø¿›ÏX?o§v¾&M¿‰$â½àn¿×ª¾™½F¾ ˆÑ¿ˆr¸¾ Ín?@®ô?]‘c?Mñ½êÜĽóò.=4=,¾yOö½©|?*¹.¿‚’?Çí¢¾éŠÝ¾eI ¿qÁ¿?åÆåBƒ®ßAµ<ƒ?ڪ㿋ß.¿yå½Uý ½õÉÔ>ÛR <¢£¾£rè?w9½`o`>%9º½Ù•í½8"ík¾(qt?nã?>ÓN¾5½‰8(?õ¨À¾0Ö½Ç`„½ºð˜¾7ãµ<|Z°?E8ä¾Û!¾´¿ŠKI¼>E0?V‘€?L¯Ï?q¶r¾t9„<1à?Û_·¿‹ù§¿•a+½j.°½™Ræ¼2ʽÛàd¿v?꽉`j?;‰œ¿õ’¾…£?:Äò¿wh쾂èE¿¦2}?Kn¾ä¾7[Ú?Ý ¾’>x?VŠý½êéì=Ì^¾Qν« |¾zâì?T{뽫'æ½ô¯Ò¾2>›?ñä]?Úd=⬌?R.?9-¾+V{¾Dþ¿q9?¿y8’¿“ë[½1ïì?=âÐ>² b½~¸œ¿Y=过I ¿€ý”?UÔ²=WŽØ½ ˜<"о쉕¿ór?eÈù?g·#¿‹n¿yD,½Hܸ<¹8¿Š¬Í=¯Xˆ¾Oœ¼?tJ?r¶A?DæŒ?kZ^¾RŽh?8Ø]¼ÔØð<©Ò?wt@ –¾î{¾i„á?l&¿’%ë¾,–Ì?,´H½¦¹ˆ<ÄP¿U±h½Jæô=Ÿ3»§þ`¿€!Ñ¿‡d-=6¥ô?mð½¿UŸ¿†°¸?k#о§VP½É[(½h@¸¿^ûÎ?`t ?ògR¿qŠ|¿B½ŠÜ¨?Lyþ¾´½ž{Ô?eý·?gAY½Ÿ7¼•í0?/3h<%G࿇Lç½Iˆ°¾4\'?am¨?Qx¼ï¿€?[#7=ž•6?U=|½×ß ?>,Ú¿€Uä¾Oû?jrx½´¯R½þN¾!’D?ùAÓ½}‚<¾ µ¿æO?v(H¾ ~Ê?Iy¾¿œÃ ½×R¾ 8Ü=ŠXø?8¶?qAf¾Œ™?„Šì??i½¾PN½âŽ ½“¡ž¿†Ÿo=&•L?]W@?¥¶¾Môg¿”/”?6-?îÒ<¾ )¼°?Ø3„¿‹ø?š¿?Qá5¿eTæ¼€ˆ?v}?1#>?IKË?7L²:ö/¾ݪ½!yô?*kÛ¿o‹Á¾ò¤?VŸð¿vø2?wRï?Ré?GŒ¦=ܽ¥–T?MEŠ¿nŸ¾Jv6?ç4?E›Ê=¨„?é D¿†b¾c—¾.:Ê?&€=<€H?`ð^?{Ί¿™À?^µ¾,Ûx¼ùxP¾® %?MCK? he?]„¿^Už¼;ø½ú7ü?X°?Rü¿˜‘=Šü¨½zŠŒ=Âèx¾Eص=Æ?à?EBÞ>âÿ•Š?Tíh¾2 ¿‰ÂÖ¿‰ä0Àvì?‚v~?}fí?qOþ?k¨¾£ú?oÕŒ¾møQ?Šgn¿€½¬ºN®À·í¿iì—?Uk?uNÁ¾>Ÿà<Ì(½ô§ü<áо‰8> X=?C½ä?%’?&D=’袾üe<›(h¿©›Ë?bÑ?0E?ÿcð?4ä¿B¥ž?*þ|¾@E¾ˆÃ¹¾S4@¾)rþ?xñ1?YÌž¾·m½ó/ ?l¨¿…Å?uç7¾D£ @%æ¾§¿tF¨¾ß½µ8 ¾ÚO>¿k²ð?Hÿ:¿m±æ¿ˆe¿€‚W¿ŒG¯½Žo`½…±<ž 0¿†¬y½Sª¤?-ÌV=UCP?J=€Ôî¾='„¾I˜?6Ìð¼¢bð?^‹ì?wj©<%v`½½ÇX¾†,á?‹Áï?\¼’½dµp¾‹kD?lP—?ZPî@[Î?S˜M½Ól¸?0ò?åâÿ¾—¿ma8?ži½é"?Ϻ½€¢ ¾`ë?…†þ? ?j?ýã¦<"€?jÛÔ¿’h¾óJ?Ñ(½´°¦5f?3™é?WÖª¿=W?m%³?ëx½î2?H쿉ƪ½~ˆ½ÅHš?*ßb?dÕ¾}r-=kMø¾?o¯¿’7õ¾DHǼœ&x?.ø7?bV?=H]¼Óå`¿’€¼½Û€?¨ö¾DÞø¾bàB:·Ú?Ieü¾[2ß½Ìâö??#@¿™Ë>BÄ®?Ñ„ =Æß-¿¶?[›[¿šC=uÓ`½¿ë®½X·½Î˼=¸Ït?N ?eaH½¾óz¿l|ì½*ð@8N†?»E?qV¦¾5æR¿msŠ?j9«?W‹4?I~¿€„»½ž…Ø=?nÀ?L*ž¿z‚ÍZ¶?!?¿Šu`½óS?JM>?)%¿’*½@Äà¿,K¾\'ú»í@?SMF=€Õp½Än=VÚ¾vI½RTP¼îÑð¼–+ˆ¾)µ¬»ú±À½¼‚¿u;½K·@?å< Ïà¼Æ À¿Š0=¸ð¾–¿l£ÅÀŽ5¥ ½Á´=V½¥9Â=PâØ?oDÕ½qx¾F¿ê½ÚÛê¿‹åï?l‚Ä=nÀ´?Y°¾?=Ô½4¿ˆ œ½5dȾ+Ãã¾" .A@¡B–#@•ö*?rܾ#8^?MEt¿–Q?u¢\?Pöþ¿q 9?;~<æìˆ¿–.?aŠ¿ˆxh?v—½šÕ> Á6?=¡¿‚Ì/½°›T<¬hð?VO=%µ ¿Œ"οƒõ”?N÷i¿ÛH¿Š¶?`¿å?,X{v ¿Š›#¿iò˜½û:Ò?O¬?o—.Vê?f2Y¿’u ¾M—¾ ¼“?a-ƒ¾ÙKâ?ö«©¾9õ%?èd ?5^v¿ƒmo?Tð:¾ A¡?Pò›½2¾Ð?;ð¿‚²¾wç;Ŧ@¾·Ê³?Ts⿆ý½žòà½`0?9/A¶”A§5¦?S ‚½¾PƘ?jGS¾V¼C?(Ô¿‰Oò¼%Ûp¿„6Õ¿pf½³¬=Ïì¾Ó¾˜_?`‰|¾¶‰ù¿¯V¸½Ò¦Ö½‘_N?i¥`¿‘®š;ýpÀ?%T½¹Ô®?:†¾ ßɾTP½­1X¾ÌÐp½Ù‰à¾“fZ?ï¯Z?Ùc ½†z?P“N½‹D?͢忄Ç\¾6+¿Œë8¾_æ><˜Z?LÑ—?LàÄ¿—J2½9UD¿’ëÏ¿_l?T¢?al†?Hv~¼q70?7³=Y‹¸½p©Ì¾RNX¾Œ¼©Œ€?eÞà¿$eü¿’ô;?ZFÄ¿« ¿u«‘?[K?ŽU;¼¦Pø@8¶?/4?eÕü¾R×4=Ã6?Fþƒ½«ô?@u”¿‚— ?a ?k§¿¡½ù?›"f¿„[ü‡uà½þ]„?n©ª?ì•‹¼÷,x<5å`;¹Kà?¢¢?{6¾;9ò>Ȫ½ÄÃþ=­¦û=6ü=™d½‹ð=ë9 ¾¡á½Š¿š„F¼nÛ @3ü‚=^¾W7Ì¿|’B?b„Ç?ljS?^|k¾*·ˆ¾ÏY;‘M`¾GâF=NÈ?-Þf¿†1¤¾–.½âä?åq'½îƶ¾”ùÀ`3?$k¿—œã½Ñ߀=›¶V?Êâ¿p[(?æý¾®˜ø¿È¥É?]!¥¿’–?k ·?<ì*?qì¾ ~t½7n`?TÑè¿x¨ó¾,9½»™‡À?…Át?Eè¦?C4Nb7Þ¾:¬²¾%õp?)Ë9½pt¾ èM¾‰û@0|º½ù&ˆ?;ˆŽ¾¦?R]ª¾;À ¦½ù0¿¡T=|U„¾a;½ü,¾ËȾ¨$¾<P=Y\¾›Ô¼6À?VX±=!g@?0´X?ip¨¾' ½Tœ¿‹õ¿€»j?Êr<¿‡š˜?N]½Øñ"?T¿°¾Y¿”·&¾g@ ¾_‹Ä½ÕW@#îU?z\.¾>¸?Aœ¿“ºe¿yv¿’L¾˜Ê?E§7½-V¤½· ¾ U¾Fbœ¿pdI¾X¿9?P/|?Lþò¼Œ÷¾^3¾G:?9Ì <¤µ½ÜJˆ½b¿ê¿Ž‘l¿¥mØ¿ ¦&•½ÀS@?g´H?Ke&=X˜¾zé=¾|½æ*N¿uD ¾†RŒ¿mÚ¿¡‹ºã¾4Dá*Û?‚“Ó¿‡‹v¾DÜ?8Ø??Üé?3 ½¾Q°¿¬Ý´?ãœv¾Oà3¾#W=?0N?M¶¾——½áN¿›[?Wê¾`¬q½ßö¤¾’¼@½2L=gx¼¿„÷¼?$Bp?D5Ñ?íî?q©¾L¿ƒ«¾°6¿‡}<áãˆ?>ûß?:¬?T¤ ¾)÷›¾8?ää+?UP ¾Np¿sDA¿Xl?zª-¾vþð¾(ë­¾¬²>²ŸÐ?R ½<4¿‚7Ô>î6?/"ß?|Æ?Côí¾º¾gc ¿vö\¾f™ƒ?IÝþ‚¶=É ½½ÞB?nv”½Œ¥z=•p®¼ã‘½ÈL¿‹l¡¿jkš¿’¾Q¿ H?SY˽@Ø@? $&?Ÿ„?Ü4“=ê?CB?ðÞ¾awJ½á6&¾P=U=ÂÂú¾ž>=4,?ØX(½`‚h¿ˆÞ¬?T2¦>ð¼Ô¿v¾Þ?Dk¶¼x÷ð¾%Í¿y!Ö½Nßd¾Õ$@?W¥=³/>?ŠqR½ô³6?Sí¿“'÷½ò²=ß.½©¡Ö=-½¨½z-?Ñ.¿]M³¿:Ù¿“¢£¿‡ê6¾72ò¼; ¿{¡L?mQ½ nA¿ù´¾b˾½œN?Ne†¾|p>?o'0¾¯N¼z¾ôª¿`uŸ¿‘c}½ˆ¤¨?@(Y¼-ê°¾"Dñ¼Æ2?Pm"?Z, ½°´¿‰ à?åµú½¢áº¾%;½QP̽bM¬¿Ø ½³`½Ç:î@0é&BöU.?bUG?5Á ?2X"?Pð½\D>÷È4<Õ À¼Ïô ½µ X¼íR(¾8d?MÛœ¼®MÀ?µоfGš¼à‹è?ï¦9?L 6¾%Y+»¨O ?J*>?mßÖ¿™ s?~ß½È,ø=•þr?:þj½$`?à†‚<ëh¿=?¿Ò?F ^¾âñn>ªÀ[½š¬N¾‹Ð®¾CPK?Q›Ä½±yè¿”¬¬½Zïx¾*t«?m•ù¾æ5i¿¡™|?Ic¾;-É¿’:W?苾:bÑ?aœ2?]Ðõ?iqÈ?Fqɼ¸6>׆¾2¾´?6My½æ= ¿—m½÷×8½èÍ𿆹ÿ¾Už¾cxN>»Z±¾ƒt°½ÿg/ðª?‚O¿xrˆ¿w_ã¿sí½ÓÑ6=£jI?uZ~=¡„¿ž3¼õ1P?Q´¿mÚ:½ô#?6ôÙ?T©ô¿ªf?LYæ?fwv?  o»„tà?^þd?XŸi@$“ž?U.Ž?9‘½œ<?ïÆ³½™ оjœ?U…½>ûo=ã…{P¾£¬8?5#ò½ž‡8½ö 4½R 0¼´¾ =½Ô‹°¼£8€?dP´:…€¾ s³¾˜46?a}q?YâL½÷]È¿ˆ ¾#ê¶¿‰¤¿‰nØ?xþ+?fÉ?Z×ß>%8ÿ?v,Ž½Í®ä½ï]l¾ñv?:>=œ>?JCì¿Bïˆ^<ü=?x¾Nx‡½âÉ?^À½ÞÏ2¾y.}?|f½mŒ€?UaQ½‰£À=³ ¾‚f<´ÿ8?Të‚¿pã¾¾r)»;“ª¿†¿´;J €¾ï ?FH?9ç.¿†)³¾(ãH?y^Ò¼‹> ºê?N)H?Y¾=pÀ½m„¿¦Êu¾ó?8¼Êó°¾­ÚÜ?u¸e?Uí2½Xô8¾’.»D ¾žÐÊ¿]V´¾BÄæ½sL¤?eꀾ!;^u¨½0\`¾üX¼ƒdØÀ›Æ¿ks\½‚Xº;©‘ ?TÛø?T2ë?3Cü?Oñ©?:ª?>ªÏ?c&ž=-4´¾ˆ ¿ŠÔ?CCÐ?t`e¾\e.½ÓûØ?OlV>#ïa?-æi?3ݾ¨Þñ?sÝ—¾4~‡?`Ã?G§Š?öÿ;¾²Î½ ¤¤¾­m™;ò§à?!Ǭ½ è ¾b¹¿]±¾;»]¿‰†,¾V#¼?^L¾/ά?*pd¾-ã¼»2p??*Ù?z“ ¿‡|¾¿{4¾`pC¿ƒy?3» >]V¼¿›|Ð>"mÌ¿ŠoB?\ ÿ>”¼¿Œ·½—Ÿ…»3¬@¿}í½3ä¾&ŒË¿m4¾Þ8¿e4<«Xx@ç¾ôÞ„¿”™¾iþF¾*0<·Sð<ļ?bd‹½·-’¿•$ˆ¼³ž@½æo6?t>?SÜ^½j~¾Òs ¿”Ž-¾ x5;¸l ¾ešà¿1ؾ('q?+Cì¾ÿ—?oÖ¿©Q»?_<à?TÐ4?doǾ›•½m%Ⱦ79¿Œê¾4Ëê»z€¿ª}Î?Be0¾f(l½tx¾!z¿?r”Õ½§º0?gˆÊ¿‹?_Sa½ž‰P¿kÀ¦½º½;¡¼¿‡nE¼« 8¿Ž½¶?g´¾X?š¾+±¿’A¿Š~Ë¿]?\â¿‹K<÷.@¶7ÂB訽¥ÿ¦?ïÄô¿|1Ò½úД¼¥£è<T0?F:ì?r8¾8»5?rû"¾œO½#Ð?=/Ô?’P½º Ľ&6࿳ÚH?B¸Î?áù?ú¼Ù_¾©°E½Öwt¿ æ³?vÔŠ?BÜнª¹½Æ.n;9•€¿ž ?^—ˆ¿{+=±ÓÖ¿œ8 ¾žŸ4½×‹N¼“hп{Q½'?Keü¿M„Õ?PkD?I3z¾À·¿ƒÛ‚¾–©?gÇ⿊¿€T–?è°|¿‡ï;¾bõµ<ø0¾ˆŠ¯=6h¾Gm¿SQ°¿•âÅ?UË?L÷?ê·´?V4¿Þ¾)lØ¿iÝ¿‘—=Vä?.ƽ짜¿‡rb@c?½ûT¾?xÏÒ¾³¾‚7?Rvë¿sœ¾8!€¼·:¿œŽ•?_y>Àý;  ?KJú¿g{~¾oÑ$½‰¨Ø¾(Ùü¾3‡h?)½„<Ô?Gª‘¿s¹¼?'4ß¿r²¶?b¤–?„À„?8TR?\3¾dQ?p_­¿—l½l“ȽÒ]J=¡~½¨QV¿m‰Î¿…³Z={OD¿„§7?:sᅢÕ¿w”³¿w¡s½…3p?*âÒ¿S²½ô`½&€¿:1G½h¹ˆ?< v=7µt½ü@r½’î?dBø=¸îÿ?bÍ·;ÔtÀ?Fx•>Òj`¾lŸû?]µÍ¿.´?~§ø?-p¿w¶¾÷Àñ¿‰¿• ?l Ü?3F¸¿l¦ë¾‹¾½ª÷¦¾§>z=.Éd½éÀ?qgl¾A=½|ä¾B5¿Ô½&ŽÜ;ŽdÀ?>F?eYÚ;•A€¼‹ è¾¢ÓŸ½¼5¤?`·Ú¾*¡F?8$a¿†€Â½+¼Êm€¾m{½•Qð¾(,3?€£|?Rž¦½FÒ@¿›]™½–š½²­¤½R÷,@üâBKU?4…M¿€–ô½VÔì=“˜R?)Œ¿…jݾÉÁ?\ü󼣘?hdH?LâÞ>"½° è¾%J??Ñž¿{û¿Ž•½{Ct?"¿¸½'p´?Hô3¿‚i?p1!¾&ºê¾ˆx»±… ?:1Þ½Ýé?$ Q¿ƒ±’?½Áýt¿„˜l?E9~½µ$R@÷¾CU(?>Ûu¾sÆ®?Oå~?E~Þ?Z (¾ÑV"?5µÊ¾ ‹¾EÙ¾¾Rr¼??Z¾¢@²¿”Ýr¿š1n½šòx?[Rˆ¼?«0?e­ <ý/¾r?eȶ?[öˆ¼uýÀ¾#—ª?ØÅÖ?<û½Âbò¾´Î¾Sí¿Ùu¾X;'?(B%½ØaX?L6t¼qÀ¾±†L½¡p ¾„qª¾”Æ®¾nõh?pʃ¿ŽÇ”½ÌÎø¾tä ½j·à¾YÔZ?Vöœ¿„?ï h@5—è:5?Ùs?MÒ¾ N´=$3l¾ž‚½ËÕ´?CŠ…?WÅ5¿˜u{¾­Ÿn¿“™Š¾#Èö¾` /½7P?2µh¿~Év¿›“'¿q©+¾cÚ¯¾¸V¾Vÿ?1¾°½î+P¾ ³ú¾ Ý¥?Rg?4­*¿J ?"˺¿–´„é½Âˆ?GŸ{=ø¸?ðïÛ?mŸ€½+áx?z|k?[{á=f蘽¢÷©½'É ¿¯œ¾ÓU½ßq,=¡î¸¿oB?_io½ÝÁ8?ÏÜ=d‚D¿…’?W>?x7y¼[?^b¾y£â=t¾X$Ê¿hÚ?QÕÎ?€G? ò€¿†p꾊–¿j°>¾1.<$6€¾§$Ï:½¦?Wr:?[­Á½ÄTþ?%7`¿ÀŠ?a´V<£ïp½r¦0½¢uÚ?:}¿ˆì½È¹Ö¿y_·¿†å½O™`¾MvÛ¿‘È[?G8ó¿”Ú†½Ð^À?ë;u?1ã?GW#¾˜ ½î*Ø?4Þý?ih¤¾áï½¢&à¿’Éœ?Pr³¿‰&>ã)¿’}¿n±?š³?sgÒ?_³¿{øv¾~6¼•M ¾ ö²?IÀ_¿‚n­¿…óV¾“~½¾¶P¿“§r¿ŽæÝ?6d¾eS$¿˜濇Of?W4H?`—{»]>€¿Z¸?$žJ@:e÷AžqS@»Øâ?ô q?_­8¾oÿ­?awÄ?Mæ?ïY?á?r?ô¾‚4?faë½öD?E›>×êÀ¿q\¾t‘ ½ÿÅ”½ªuð¼‚8?4 ï?Lñà¾Xj¡¿‡Á¨?* œ<Þyð¿RR¿€‘?< ¾,ؾGHª½wât?b±M½k ´¿šl?XÊð¿‹ï-½#•€¿”ý¹?ä½t?Ôë?gt¿? zÐ?@ÁN?ã¡Þ¿rÖõ?3Rü¾O.h¿‰e†=–8?Wwû?MIÞ?1rb½ñ€>Ã฽và?ß•¿~µ¯>0\侘Z޾HRÕ¾ †¾@3g¿‘Á«¾Iëݽ¯øZ?ëŠ;<áûP¾2¿l‡;?äL°=ú?AÿP?M_¶?œ?b€¾…ËÍ¿~!¿W|=_ô¾u‹è¾âõ¿œË>ÒÖ?tÈ?„^4¾hÔ6¿„ç?L ¿bHÿ¿Ö¬¿kVˆ¿€’Â?ˆ–O¿€@_=‘þ?a=¹óB?E–(?dò°¿}®Î?rr6?ôĽ²ˆÆ¾S«=ô¬?hæŽ>AÇ:¾K(¼d\ ¿†d?oWm?1â‡=¦¯à?xR<6ä¼Ý¾ð¼á帽È?xà^¾1ö‰½•“ò?4x…=®G½âñÞ?_7ä½(÷„?}™C?CÐ.¿> ”?Hh;‰÷a??ƒù¾±þ½: T½½Ö¨`¾JÝ_=(€@3Ç»¿—8:¾*º,?jcÓ?%qs=Ûê¿|©g=Êw0¾7í?oü¾0£?duZ¾'â{<Ș½Û=T¿c¥`¿…<¾s0?Ô§¬<¹EÈ¿¢…F?—ý&¾Š=Œ‡.½“1Â?`%¬¾Aì:½æPº½Ö &¿fVp½çT½‚pB? ~ð½ÙL½¸é ?S˜¾¨n¥<­Á0À Š˜½Ï|^¿½I?,êU¿…ÊÙ¿•¬=™N^¿•õ‡<¦ô0½óƒÜ¼•怿•©s?MØ·¾ Žª?b0µ¾6Òñ½sX?1p/=îœâ@üpÜBhfÙB?@V@q÷E¾<@¾9W%?ÒAæ¾ù¾iç=Ÿ`¾[”O¼œ-p?Ç’(¼ßÎP¾ƒùR;4(€?&ùz¾‚è.¾jÛ¾c>àÎ?×b–½“oZ½´?G^°¾w–¾¡½­½2?"VZ?eåN¾€Ò?P2¾)¿‡n¾2Ó¿Ž¦N¾cþ÷¾4#ª¾é@È;`tÀ¾Arv½u‘?þ½ÚÊ ¾R?IÓÝ¿Šï?\$æ?Ef½%3„¿™x½põľ_¸‘?Qù¶?Iƒ ?ŠÂ¾4ý¾¢²A?mà¾,Il¿Ž¾VèN¾;ö¿’ä]>«ˆ;=0²¾¯zx¼ýƒX?¿»±<Ö’È¿¼û«¾^ÏT?ØÅ)?KdD?ækÎ?Ér?#Ùô¼ª¨ˆ¾võè=w¨¾(±,¿{’¿…Ä_¼Õ×8?KøÐ½óëh?ÚŸ<=œ‡^¿˜^ø=ÍÀ?êÞȽ˜Þ¶¾oùV=žPð½¢Tr¿wÕ¿€o¼éÀ@?TÁF?yp¾BÏ ¿v ½Åâš?oç.¾@ÆÞ¿r”¯?>p}=¯‚?Név=±à´½ŸN~?Àо¾º½TT0¾B×¾Ÿ·Ì¾°#?Y6‘>—?p?^Ü¿ý¶¿|c.¿Ÿj¥?mQî¾A½¤|?ò?m+¨¾…F†¼·x ?+Dæ¾ø¾‰çÈ?€Ò‘?R8p½çØž?B…ˆ?e~¾w`J¾±²?Ü*qAq”éBÜ,B,\@Öel¿{ ¾?¾àP?f«?_=?3®f>%ï´¾)™)¼ë騾hèë?\ì¾[Û¾èM‹¾¥>¿?3=Ä?rÜ¿†š¿”v¹=ÈÑP½ˆ‡½;¾e¯$¾}À?5Bž½³Ææ¾­Ú?믃¾:]"?UGÍ?LÂò½Ã1P¾gÙ÷½%\¨¾¯”½ñù ?=¤\*¾+D€½Ôºš?ãä?m4î¾at!?…²Â?.:é½K›?A´¾8£ž½u¨¾ÓA?<ο„G½d‰|?ì§Å?DXd½Ë{¿­)»“@€¾.o,¼µŠ`¾keŽ¿w \?F/"?K‡l¿†#?`B¤¾6ë»ØU?Özª½ÈDR¾7<ˆ¿’Ûã¾0òõ¿•_c½—*²¿s8H¿„ƒC;(À½ÁÔ?_‰„¿”N¦=³ø½äÃ?œn?N·¿€-O½™)|½ð º»N7à¿K)F¿‡ªÁ<϶¾ 4d½‡Yt½.Ф?fò¾fö;í ?Nj»4µÀÓ½ò/V¿’"VP½êá4:Rä¾OŒ= ä;ðš€<á§Ø¿…nØ?€v&¿‡Œô=ƒHÆ¿†øú¾öL?ãÉ?hÊê?bU2?c8Œ¾OÖL=ƒP¿ïº¿€È½nÆ8?€о(½—¼­}h¾Z4½M¿BÎ?Yª¿’Z?:û”¾ƒKʽ€ø`¾IþQ=GªH?HJ™¼×@¾­¿}€Ô?×Ð|¾ixú? ô½àqt¾×¿½°/þ¿–À[¾<®¦?]EO¾!Íý?%ƒÊ<ÅÞØ½Ú9.?KÛ}?`¦8¾v¤Ž?Ü&¹?;¦”¿Ÿ,¿ŠÇC½ÇUF½ËN¿Ž¿û½Ê5h½ô/Æ?j¹"?EªZ½—¾r?S?ó£Ò½®Êj½yU`?@‰0?~/?YóS½·1¨¾t.=crh¿„l?k>î¾`Ûô½úw@¾®±½¤Ð?È(åº+€A¶@Co&úBw£@vÒB¾}+ò½UÁü?.ˆÙ?i’f¿ŒX?ÜX?@¢?>]®¾{¢½BOð¾1M¿M‹?[v=„þ?^¾6?SžŒ?lпZkø¼Š«½Oϰ½c5ܽÛÞ¾º-·?»W¾ƒÓY¼õ‡@¼öB¿c8 ?DÓ¾ùx?X(ž½ŽP¾WŽ=O@°>øT?lzy½ü j=®;8?àá3½„*Ä?OFÜ?„¯?ê"œ»Ý{ ¾9ü¦¾5Ò?5`s½(¾°Ù‰¿ÏJ¿ûµ½#†„½@Ž`¿ƒî¾ö‚¿Šb_¿“†L?[qb¾7B@¿¥@$¿¢¹û¿†gp?fO? X??h$¾ çB?E&ƒ=n§,¾‘æ¼=J?=bt<܈p¿œam½ú»À¾Ø9›ª?èí¼‘}x?<Ë^?ç.£>`÷€¼ `¿ïf?,Ù`?_c2¿z}|;£P ¼ Ä?Q¤ð?N2J¾*¶=WD?U¼½1¹½¼Ò¼À¾>"½}½(?oz½Œ–½öØ?9÷?0š ¿}æ\¿”¢¿‹­ê¾/콆0à?a5?|ØÄ½!i°?ukå½Ô§º¿w;î¿­?å(½%½w¸¾¾û¿x娿‘G_½“fè?:Úо_ê¾9á¢S¿µŠ½„b¿–ïÈ¿‚¨R?\…©¿y[¬½«gà=0ÅH?EŸó¿š¿¿m~¾’¿?Û¿„*â?.¥?NHŠ?ZrŠ@!Ï?cwš¾ïâ¾_cn?ƒ[¸¾ožJ¾"G? ñ,¾2tÞ?9œø¾V¿”Æì½[h„¾1HQ¿}xÒ¿‡^¦½’ÛF¾•š½bd¾†üà½qt˜?Ýü±?9”&>¢N½´ðX¾’¿?oÔ.¾4¬þ=c"H?2¼ü½l$Ü?O~:½Êëú¾rÌ=zAܾW?Lƒ{½ôsš¿‹ Ê?ßë¿?ƒ6鿌B³¿¾l§É?EhC?:›¾*C%?dlí>õ‹\?Rj?dÁ½&@Ø?5þØ?fÝI½÷#à<Ú#˜¾!˜?@ø¿šZ?b9ƽ·ûÞ½sØ¿ƒâ“¿hI?cÃ3?{ÃZ¾‚$Þ?bϾ ÊF?tÜA¿Ž¹£½ì´½´&°=Ÿ ¾Y嵿„ Ç=€(À’¸?)Æû?}ýÈnû=µ~P½Y¼>­(¾póÀ½Ü>p¿ŠÝ†>®y½Ÿ…ò?h¸,?lÑC¾(ÎÄ?äõ¼Àîp¾¡£m?M\0?LBÜ¿‚yf¾¹ ˜?Xrª?N‚>>Â÷¾?‘½§k~¿ƒ¾™¾ˆI?R`4½}ä½I2<¾œ?CÄþ½ãצ¿Š­?V¢?QŒç¿wL½`Rœº”ð¾ŠÝ?8å¾ B¿‚d¬?Fßh=«D?Ao¼о߻½ïÔ®¾}Üh=Ç–¿”g);@?CÒ?T—:¿…ª=èD¾6=2??®·½ëÝø?B¼{¾Uý†?sù¼¾¿˜'þ¾ Ý¨½¾Wp?FʾÈ?,‘5?JÁؾ ÄV?gªÉ¿‹c²=¶¸?:Íª¿–õ“?SHi?äz«¾êš¿‰Ìð?^ð¾,”N?<¤Ê¾>”?PÚ¤¾}þø¾ÃÑQ½Âô°?BTk¿‹W&½¾Ó¤?m„.¾Xö6?7Äã?+`'=%¯´½±CJ?]‡ ¾xY—?^¤?2Ȫ½€l»F?W[Ó;†·à?9óO¿ ó¼Î›¾}¡½h;\¾3KW¾)PÍ?0«?FÖx¾ ®¿ÿ(?H6F?z©Ï¿‘ñK½uÛ¬¾nõð¿w™`?d˜¿?Hµì?(Õᾩ5¬¾iö?Šs–½ê8Ô½€òR?DlW??î"Õ¿“=¾¼¾?/˜=‹Æ?4é?|êc¾Ab¶=ïZ¿‡ÉW>6s?„~¿o2$¿”2½ ¬X½¿#j?\¨¾Ã•$?ë'ý?"1i?iÌl?dƒ5¿gs½€5œ½éu&½í¢?+¿„À,>ßœ¬½ºó\?Rö?z“L¿o=ˆ¼Ù|ˆ?Fo”¿kè¾u/1?v–â?T=l?l~Í?iN ¼÷‘¿ ‰þ?mß?Yê½g ¾®q]¼mk0?ÛÒÂ?{¸o?Dë=’¾8ßË?dn¾U/O?^ð°?û:âI€?0ð'¾(„?1-À¿ŸÜª¿¨½Y½Ù¦”½ý`p?[Øž¾‹£~?ëÕr½Í?î?I”H¾Q3=h5¤?=Š; q?3°½"D¾’/e½þ ¿#´ù¾R·Æ?7ô@¾:qW?%┿w›¥?ß?.)å?³ <äª?#q¿‹b!?Aì´½ûÁ̽‹ü¾in¾™Mð¿§œK?Û90½Ž&6¾žŽ?M†Ð?,+Z½;Ðܾ%©^¾* Î?JYÂ<}p¾uÓ¾Ÿ_]??Îô?[¹á=¶óZ¼¢P?,Ü£¾´þ¾œ*½Ðj´¾ocؽþ¦’¿#œ®?O÷ᾂÆ\¿Ž7ó?1rË?a¿é¾¼|%?mMO??¯¡»|V@¾˜H½.œ?H¯ó¾)»t¿ǽÿƒî?âП½Æ(¾?g,)½É—„¾ KÀ Áp¾s§=ŠX¾ˆ7ì½ôÚ?$z?ly‰?;¸î?IJØ?9l²¿‚*ô¾”‡<Åð¾ÿ ?NHø¾6¾,’"½ÌÄ¿‡8$?WwÚ¾1¯ø¾XùU?ds–¾‹—ù>èéŠ?Ï ’?Fо$ò?\Ew½‹ÿî¾ujS½ÍØ.¼;¥@¾vxä?mIà?Òx-?2m¿£*¾ªz?z¢>u;é¾aTø½‚-¼¾bß6½êßÄ¿š*r½»…ú½ÖAl¿ª±#¿ŒýÞ¿hÚf¿tý‰=L,?{ö(½rgˆ=&À¼„Ÿ¤½’š¾Uïü»€"пd±P¿~[è?rŸ/¿¬‚¿€o¦=¿æ <Öüp?Y¾Ÿ>)v6?Tí»ïf@½‹6|?z5è¿pðì¿h·§¾ óÂ<2i0¿”v÷?{\ʽF¼Z?„‹”½ë>½Ä?;§¿l^º¿sµ@¿}Ä?çÜ?]½I ؽ5TÄ?9<®?…={¿”è`¿a¬¿—˜Í½”UÐ??¯Ž¿‚në¾'ñº=¸-¬¾¬ïS¾AQ?7@Ú?u¬Ú??|à?Yõ¥?RÑP=9‘Œ¾šÝý?\쉾4/:½“ãÌ?"VR¿‘o¼¿™Ì5½‚‰®¿ªªø?S#¾h„Z½è;À=«¥?J¸b?9Qã?z1¡?d@;Ú*>ÄD̽“š¾¾KZW?oqõ?;q}¼ê°¾U‚ø?p ã¿rü=ô°?,£?dý?%]·½ì¸Ž?33¿aïо™%P½à¾ø¾aóŽ?~#;Où=$&T¿1û?‡¿E?T’ñ¾Ž|o¾˼øH¿Œ‡¿‰ó—¿–ø¿Ž—?D_œ?oÒ™¿”Ù=u¨½ËuP¼s¤@¾ð½À¾)¸w¾JC¾PÇS?X‹ ¿ˆ†ù=mä?D¯á?{âZ½™½?Q¾eLÛ¿ƒAw?bš?i¼´¿Šß<‘¼¨¿\¬=çÄ?F½HMȾÙR=Õî?[#ì¿nœá¿&³½]ïà?NvN?Niª¾nô@ÛG¿ˆÃ??Lø?g¼Ò?]ºK?+Ó`=K¡L?<”F?>dI¾6-‰?<Ìl?9]"?Vú¿–€û¾ê½ãM6½ˆè>¾i.?]‡›¾}ÉË> Ç+¾Xí¿"¼X?Bú¸N?"m´=Ù4¾¨L?rŒ|½Z*L¾:{$¾ ^½BŒ¿’jÝ?tR´¿€NÖ¿€|…>ëTO?eöÓ?F@T½Éçx½Å2*¿S5¿˜¿4¾j¾Å>?…B¾¾öÑP½«°6¾£ø¾4<[¾>dÒ=ê\T¾Uü?w'Î?67°½„4¦¾–Ü?Òã?#E6½û£¿Œî¼dÀ?66?c¿R??ç?ÒS˜?1v°½ÁО?I2‡½OÎl¾Ô¼¤,X?? !½ /?s¾X¼»ÒP½»ê=.Vô¾lµó½˜}F¾lR?Hq˜¿95¿u >Ê \½®,¿…ÖÆ?UªJ?QÙÁ< AP¾*ž¾(z¡¿«ú2?BEæ?c ò½ìJĽÁl&¾9ø¾ Ò½4¸¾XÓž¾8 p¿¦aa½F{ ¾ö=m½¹KŒ¿~Ú?ld?!mt¾L-C¿u= p@-K3@L¢¾‚!½Êµ¾Çt¾-°?7Cн‹X|¿–»9=%–ì¿—’ý¿k؃¾šú¾œ¡¯¾lJ+?nºv¾z”E?ì€?'w¨¿zZ~¾¶ :?þq¿• Ø?àL§?B s¿Žð(½èøÎ?ÓѾ;Ê¿t„»¿qé?€N8?<‹•?UM?C·¸< À?2Ò¦½Nçt½`r„?i„ÔÀ O$¿€­Ý?]I¹<¯Êà¾,÷ ?vhø½S²T½Þ8Ú¿˜ ?i¢A?7úÜ¿‡>&? ?}&¯¿›¦>ó©6¿©„å?Zæ˜?Iº¿~2¾*FT?†Éá¾BR„@n; @— ?Y"×½”ˆ?}IX¾5Šà? qq?QŸ½ ½ÝU¿‰d:½¼E‚?D"+½¿¸?b¸À ww?GŒ‰?z„°½5§¿ž[Þ¿‘°¬?wj ¾gG¿b›®¿…ªØ?Zçf?J­³¿‚…?K?;DÆ?CQg?ñÀ ¾zBE¾ þÐ?Üfô¿šLN¿¦E®?kèz?=ÆÀ?iQg¾œ¼Ú (?9&ؾ6m?Tòd?[À@A>§B´G@ûõ¾?káø?O廽åÉ?;ëû¾ X†?2ÄÝ?Q[Ô½ƒÊ?e¹c?* 2¹þ¤?9›½)¦$¾ÚW=:ÞH¾;Á ?z+æ¾é?f ƒ?à\½Mˆ?ÝÒˆ?X ¿‹%6¿€˜^¾ ~L?T :Ú?E—|¿¬¿Ä>ÁÃ侸™Ë?fbð¾‰Q?g±¿+ò?ö#¾_¿„ ¾AG½~ÕÌ?\ã.½¢Zº?_!’¿oÌü?L ?Z? ¼Èúø¼hN ¾µ =1b?Rº2? 6¾-!2½Ñ(6¿†€O½QW¬½tº8½Ö ¾Eg¬¼=¿ö<üx¾%Sš=¹I˜¾÷½Ãß?L &?W꾕àî?ˆNw¾$(>A L˜B@ÿ+?×F ?…ë#?G«¾¿˜}É¿…®¿Œ^ÿ¿xñm½ d½j?IY¿z…?Wî»?`5Þ¾r`ã¿…lD?GÃð¾0ؾòmh?nª.?UG&¾9ã*?âÿ®ðŠÂ¿ 6 ¾˜wÚ¾Õ¾mÆ}=nâü?9þª?Q¾£¹”:õ€?=&¸¿”ñ?+G\½œŽš?82½µIÀ¾‚¡^?pÛ-¾À39Èø? ºê?ê¯î¾€¾“Ñ?0¾ À¾/åÚ½¹óv¾1è¾¶d?`¥M½±ä²¾§†¢?[¤T=³:˜¿„Âð½“Þº<¢»à¿:{H½Úóоº 7?Xæš¾‰ ¿‚e@+öý¿oZ¿—ŠË?Í{0¿c™9<ÃT`¿Ý°?9Â0¾‰™4½S¶l¿‘¹<¾mB ¾X9¼&Vp¾>8K¾ "?;\®¼¦x?#k<¿’{°½ªfj?å›?8¬l?gÕÜ?EœO?N8s?3px¾2ÃÛ?Aw¾>ø9¾'ÑŸ½Ø2P¾ ¨q?Uæ¾6…½æù|¿—o ¼ñwˆ¾ŽRB½ýؾ¥í½Ýp?ôDðB/¡B­Žo½ýg?æK=¿f¦R?\=V¾E3?Ó4¾á’¾$.D½@*Ô½åÒ–½½¯"?EÌ?HŠ…¾ª+¿Ÿ½€B®?‚[L½Êή<ï€?7˜p?\S;¦±Š?¿wÀ¬Ù?4’Œ?Ç ¿Tk?;O–?Wàm¿¦>?ó4?(oD½Ã¦´?‚‚¼2tp¾ W¾U<¾KP‚?sX2¿žŒ@¿`5*#ƒ¥=P„½£ë4¿Œ‹á>[~à?0»¼)ï ½#èH=ßø¿•ÓÐ=\Ô¾2µ'¿z Ó½ÇFF¿‡%p?x˜?0 ¾y-½H#¸½­ç&=—`@?Oî<Žÿ?WzÚ¿†Šù¾"\¯½ãm¾¿‹÷ª?=‡ ¾ðZ¨ì=¦¥¼?>&B¾ã¾)=â¿}k/¼¤³@>ñí¾m/?|ŒY¾£Sa?nã¼½áË~?cÏe?KÍŽ¿{ÿ»¾gõ¬½[?”t¼ëx`½'<¿9¾‹¹ÿ?]Íf¾kåw½·-„¾;Ï)?•g?éS&?pýؾQ ½ÇöÔ½ˆŒ6?7V=¾™ì¼åW@¾Žð]½Ñ>?=Õ?>æˆ?Sís½Z.€?HBN?”羆Õ¾Ìæ¾³S®¿Š¤¬¿’¨½¦P¾]85¼¨:?,ð~½|l¼?Í{L¼1-¾mª ?PªV¾C9r?àÇ¿v?]–´?$¥¿]ùR?1îо3±? • ?l7J¾žd¾½¤<¿ž$?¾)8È?S\l?V¯r¿“ž?Q/Ä?@¦D=tDX¾dú½?ZW ?Mh/¾Ì-?A³(½ã˜ô¾AØï½¶ßP¾_“–?àõ1¾­È?"PÞ½P÷°;r?€?=FÇ?jKH¾ [S¾@y?5‘|>4¿,½W#L?Š+í¼ôúø=’ø½Ñ¼»ÅÀ?a©*½_y¾>Ôv½ƒy\½‰R½jD@À´‡;“Ï@?M8?Ð]?_ß?y@½ÉÜ–>9ö`¾ Ö=ásü½×?²<ݶh¿…ÕŒ¿Œùì¾§ª¿üß,¾»ë§>Ru¾£ôj¿R´D?#+Ø¿hö?ê²@¿S¬m?ÔEX@6Éj¾sŒÃ=†©4¾²öº??*6?ƒA?Ú3Ì?jÚ?Næ[<Ú ½¥¼~<„XH½÷¼‹ëh½°s˜>çô½Ÿ ¿ZÆs½¢;Ê?ij®?G¹I¼÷-оÈ1½¦²?Vkˆ?t›“?f䜿m6I½´p¼Àþ8À|œ?oþ³?e<*¾"e?FÑ?~#@=…i´?òõI¾"6™?ƒÄ?ç ?j˜L¾“t(½¡’?5a=!¾ƒðü¼‰+È?Z‰Þ?Tr‰¿›:N¿nY~¾5Ù˜¿ƒkQ¾•¤ã?Y Å?G¿ è?T5ܽG¬Ü¾˜¼±?vcâ¾V`7?á.ȽÐà½øéø¾÷心y¾uùM?ì¼5?{ÄL½ÈZ¬¾3g¾F¾ ùL¾H4ù¿ƒ¿¿o~¾h›ß¼©öÀ¾"ðÀ‹ê¾$µ¥?†K¡¿pÎV?\Td¾™ôÙ?c·Œ?'.P?d)Ø?Éà3¾ k¾_¾%²I¾seÏ¿²¾9Öa½X¼¾-§7?Q}¢½í’€¾3 °¾ Á¿‰Ã£¾S•½±t*¾&ë7<£Fо|ã^¿‚Xa?1”,?\­:¾&Ï,?d3¾{þ?\\¯¿öÞ?R¦·?Ñí_¾’-×?ž?_cA¾6ؽ¬¶º¾}Ÿ~¾Œëï½Ã@Ô=³eü?9†<½Ç@À?5œ9¿¨'¾i‘½íZ?«“?aÁÙ?!éz¾0Éö¿ŽVó¿ŠP"¾F°²½½N|?Lõn?ÝÞ?ÒüS?{."¾±ÈÉ??»?, ˜¿Š®? ¼Ä?eÞÅ?^”¿ŽOF?%ßÒºë?_(è?w½|7´?H@??Å ¿¦@á¾+n„=I·X½»€Î¾"r€¾0ÖŠ¿YË©?T6?¿p‡Q?Mi½?si+?[:=¸…˜½ÛÓÎ?ƒDì?¥?oªô;ª² ¿€¢N¿m¿à¼?QÀ?\fô?mÙt?dMå<Ÿyȼï?kµŸ¿‹aJ?H"<„`¿›…B¼ˆ½ðîò½cdè¾ÓC¾1Ã?L“e¾¨½Ú”¿¢IÙ½ 8ˆ¾#Î1½(ͬ?Kö)½¢Ö<¾‚O‰¼–[ø¿æÜ9Ý’¾w;‰J€¾Vº¿`-L¾D#‰¿‚©w¾•š¿XÊ*?ÜRÀ?m‹I¾»µ˜?ú§£¾%Ì?}>Õ¿iJ½²°½Æ0?xB?<0>=­qü?ŸD?FÈi¾˜÷Ͻ½ý~¾‚ ;r*€?VÀ¿ye[¿›,Ͼ>Ô美ي?öËÚ?:Ó’>ïLT¿"w!?fNâ¾ê-= ²(¿•kK?×Îî¾1ƽòcÖ?_õ½»àÉ`¾™T½üí?0‡>¾%¾¤?Ôñk½€¹:?BqR½ŸÕ@¿žÒÞ?ÚS¾N¨(?W³m¾q¨È½t8?3å?v4%?Gxo?é,ü?)ÂN?eœ¾sFh¿pd¾«ØM»ÆÀ?u(½ã¬¾šÃð?~ý ¾hxë?¬lw?íQ<ÕÛè?GÄ<áH˜¿–%>½­Ñ.¿–v/?Ó ½³'ô?a5ª¾O*¨< Þ°¾fV?Q F?/Ò?Mah?Ør?¿".¿™wô?e2B<ô„€½;n½êÎÖ?f€?b¿­ï?b’l?/̲?U|æ¾’ã?ó“|¾'ÕÖ?^½#¿‡3¿]oL?Ìö¾-Ø0?F¨s?Lï}?F…Œ¾&Ñ¿ŽGt=1¬ì?Ü\þ¿ˆç¥¾!û½ zä¾§)'?ÙÅ`¿—î8¼öÿ ?2MÂ?eM¬¾|ã ¿…þÒ¾Ž®º¿‡¹;½Ø`$½©qR¾<?Pl;¾qý??b†d½ðä4½¾ Ž¾‡+þ¿u ¾]³º< å°?A¾9?H;½®@ ¾MÏw?blˆ¾§æË¿@»ì¾3ÏS?hä??½œÕh¾QT¯¿Œ{?QGÓ¿h¿9?6ìS?:àÚ¿{ôоCý8ç`? )|@1¥?$ˆ?<“¡8?1=ƒ¾ Rö¾’Œ/½²b?J¡¿}E†¾??ŠŠŒ¿7›€½ßzb½áÞ½R°?\â§?O¤¢?.T ?n£Ð? ì&?5 -?&åd=ŠÊ¨?êL ¿ŠCý¾R1Ö?Gnp¿€/ž?g½˜¾|„ž½{@h?Vt?}Ð2¿ºN³?n/î?(hª½¨I€½úü?DÞ¿†Jõ¿xÐÞ¿š¦?[,½°¬¾‘\Ì?/…?lPk?7e<½”í¾¼?O}õ½ôÎ?XßBÇž@v—?3Ì=9$¾,±h½Çÿ¬½÷Bô?Þ†?<8æ?Q#À¾é¾sß½×­l=¾¦ˆ¾ckÆ?4©X=ξ0%G½ é ??a¾€'¾­Š?j€I½æ@h?H¸,¾vã|<>žð?QcN¾®ü?yª&½¼|è½Ù0æ½îýZ?CÍ~½ÊHü?8ó8¾Ã¨ ¾H ?v ¾6'=úB?`—V¼?•@?7.¨½M4?Wy?r«¢?M¨°=—¨¾ùh¸¿re¼½Ë8=Tªü½BØ9V ?Nr½?[/ȽáÇÌ=Z Ð="`?þG2¾¯sú=œì·½™'œ¿“hú¾n ã=æcê¾ Òe½˜¿,¿–çå=Ap<µX¿fþ¡½¿²Ö?òÆt¾J„Â= Y¿†x‚?[ñ˜?jT½ãqò?FKÆ¿¦ ?àßE?rÃî¿„‹Ì@W¢?.”7;H·½ôº?P0¾» <À!x¾mɈ=L[x?A+$?‚‡½Ø§ð½4M\¾¡æl½®ö¨?Ã($?\„Ì?&¬3¾„‚¿‘8¤½´Ô?7^à¾hÅ¿’„M=íô?Þc ?è¬'¾·»¿‹‡f¿“td½¾Þ¾„0|=3 ”½Í)P?w}"¿˜çð½5Ô¾ñú?GËæ¾YqÕº—Ö¿šb¿ƒL ¾‰’@?r©¼¿ž°?rµ¿‡6?^?y? ^G¿zÆî?@E‹?o‹¾€"¦½ÿøV?7¼¾¢'Ý?B&–¿xŒô¿Ü¿‹an¾LÊó¿…Õ‡¿” ?eQ«?8`Q½íõf¾Š™e¾±¸?I"Æ<¡ÆP?9 ±¾ dM½‰{¤<Æp8¾\c†=~#ô?: <{„ð¾Ÿù¿ƒ„¿Œ£›?H)0¾†ˆA½–ÐP?q?s4¿+h¿“^¿¨Ày½ÂžÊ¾ÚÉ?K¤ü?%Ô8¼ÇÒp?W%\½Ž ½Ö«p¾$j“?=¸¿ƒbñ¿…¥ò?0Dc¾É;–?ò¨1?@н­Lp?:d°½©ü>áã×¾¨ß?éj?_FfBÁW¥Bñêo@Vm¿’»˜¾¥äV½„?Ò1Ÿ¾Qcº?Fˆ?¿Ÿо`䕾€ä??z_»«ó?:°A¿~¸–¾-2þ?EÙ¾?-“?<<½½6?]d?A*$?<¨\?(6 ¿Š‰$¾¨jÂ?A—ö?>Q<±^ð¾¶¼YL`¾©N¼g 0¾Ÿ‡°¾oG½çÒ ?7 ɾ Ì?xDñ¾ öþ=xËä¿“ÖÚ½wZ½žQ$?òj@¿‰¿v†d¿j³8¿gC‘¿…­¿p¦¿— a?f;o?[2G¼U¿”f¼ñ0½é[,¿sм™D€?hP¥¾‘6|¾#ó(¾a¥¿ƒl¾-Ô?ùf;¿Š™+=˜>z½–Ž¿•>??9}P¿sÓ½õU’?_@¾h©°< žà?4X”½MÓ ?â\v¾´gó?-ž½õnÄ?+:?^)?70—?|b?B%¨¼¸½¾P¿»=`i$½8œ½ÚÒÊ¿“‚_?#V¾ ÿ ¿¡?CY?]?F0=ÒØ½è?YX?Oò¾<*¾~?U½L¾ EN½rœH½þz½ã>¿š÷½¿{Êi?-gº¾ƒ¿½ò¿ ¾&T%¾6¼Ýi0½ìkt¿w“?¢ ½NÀ¾f’{¼û}è@*¬½’¾Ø¿»1¾¾±¾l:Ô¼0

VIPS_ABS, macro in util
vips_abs, function in arithmetic
VipsAccess, enum in VipsImage
vips_acos, function in arithmetic
vips_add, function in arithmetic
vips_add_option_entries, function in vips
vips_affine, function in resample
VipsAlign, enum in conversion
vips_allocate_input_array, function in generate
vips_amiMSBfirst, function in util
vips_analyzeload, function in VipsForeignSave
vips_andimage, function in arithmetic
vips_andimage_const, function in arithmetic
vips_andimage_const1, function in arithmetic
VipsAngle, enum in conversion
VipsAngle45, enum in conversion
vips_area_copy, function in type
vips_area_get_data, function in type
vips_area_new, function in type
vips_area_new_array, function in type
vips_area_new_array_object, function in type
vips_area_unref, function in type
VipsArgument, struct in VipsObject
VipsArgumentClass, struct in VipsObject
VipsArgumentClassMapFn, user_function in VipsObject
VipsArgumentFlags, enum in VipsObject
VipsArgumentInstance, struct in VipsObject
VipsArgumentMapFn, user_function in VipsObject
VipsArgumentTable, typedef in VipsObject
vips_argument_class_map, function in VipsObject
vips_argument_class_needsstring, function in VipsObject
VIPS_ARGUMENT_COLLECT_END, macro in VipsObject
VIPS_ARGUMENT_COLLECT_GET, macro in VipsObject
VIPS_ARGUMENT_COLLECT_SET, macro in VipsObject
VIPS_ARGUMENT_FOR_ALL, macro in VipsObject
vips_argument_map, function in VipsObject
VIPS_ARGUMENT_OPTIONAL_INPUT, macro in VipsObject
VIPS_ARGUMENT_OPTIONAL_OUTPUT, macro in VipsObject
VIPS_ARGUMENT_REQUIRED_INPUT, macro in VipsObject
VIPS_ARGUMENT_REQUIRED_OUTPUT, macro in VipsObject
VIPS_ARG_BOOL, macro in VipsObject
VIPS_ARG_BOXED, macro in VipsObject
VIPS_ARG_DOUBLE, macro in VipsObject
VIPS_ARG_ENUM, macro in VipsObject
VIPS_ARG_FLAGS, macro in VipsObject
VIPS_ARG_IMAGE, macro in VipsObject
VIPS_ARG_INT, macro in VipsObject
VIPS_ARG_INTERPOLATE, macro in VipsObject
VIPS_ARG_POINTER, macro in VipsObject
VIPS_ARG_STRING, macro in VipsObject
VIPS_ARG_UINT64, macro in VipsObject
VIPS_ARRAY, macro in memory
vips_arrayjoin, function in conversion
VIPS_ARRAY_ADDR, macro in type
vips_array_double_get, function in type
vips_array_double_new, function in type
vips_array_double_newv, function in type
vips_array_image_append, function in VipsImage
vips_array_image_empty, function in VipsImage
vips_array_image_get, function in VipsImage
vips_array_image_new, function in VipsImage
vips_array_image_newv, function in VipsImage
vips_array_int_get, function in type
vips_array_int_new, function in type
vips_array_int_newv, function in type
vips_asin, function in arithmetic
vips_atan, function in arithmetic
vips_autorot, function in conversion
vips_autorot_get_angle, function in conversion
vips_avg, function in arithmetic
VIPS_A_X0, macro in colour
VIPS_A_Y0, macro in colour
VIPS_A_Z0, macro in colour

B

vips_bandand, function in conversion
vips_bandbool, function in conversion
vips_bandeor, function in conversion
vips_bandfold, function in conversion
VipsBandFormat, enum in VipsImage
vips_bandjoin, function in conversion
vips_bandjoin2, function in conversion
vips_bandjoin_const, function in conversion
vips_bandjoin_const1, function in conversion
vips_bandmean, function in conversion
vips_bandor, function in conversion
vips_bandrank, function in conversion
vips_bandunfold, function in conversion
vips_band_format_is8bit, function in VipsImage
vips_band_format_iscomplex, function in VipsImage
vips_band_format_isfloat, function in VipsImage
vips_band_format_isint, function in VipsImage
vips_band_format_isuint, function in VipsImage
vips_black, function in create
vips_blob_copy, function in type
vips_blob_get, function in type
vips_blob_new, function in type
vips_boolean, function in arithmetic
vips_boolean_const, function in arithmetic
vips_boolean_const1, function in arithmetic
vips_break_token, function in util
VipsBuf, struct in buf
vips_buf_all, function in buf
vips_buf_appendc, function in buf
vips_buf_appendd, function in buf
vips_buf_appendf, function in buf
vips_buf_appendg, function in buf
vips_buf_appendgv, function in buf
vips_buf_appendns, function in buf
vips_buf_appends, function in buf
vips_buf_appendsc, function in buf
vips_buf_append_size, function in buf
vips_buf_change, function in buf
vips_buf_destroy, function in buf
vips_buf_firstline, function in buf
vips_buf_init, function in buf
vips_buf_init_dynamic, function in buf
vips_buf_init_static, function in buf
vips_buf_is_empty, function in buf
vips_buf_is_full, function in buf
vips_buf_len, function in buf
vips_buf_removec, function in buf
vips_buf_rewind, function in buf
vips_buf_set_dynamic, function in buf
vips_buf_set_static, function in buf
VIPS_BUF_STATIC, macro in buf
vips_buf_vappendf, function in buf
vips_buildlut, function in create
vips_byteswap, function in conversion
VIPS_B_X0, macro in colour
VIPS_B_Y0, macro in colour
VIPS_B_Z0, macro in colour

C

vips_cache, function in conversion
vips_cache_drop_all, function in VipsOperation
vips_cache_get_max, function in VipsOperation
vips_cache_get_max_files, function in VipsOperation
vips_cache_get_max_mem, function in VipsOperation
vips_cache_get_size, function in VipsOperation
vips_cache_operation_add, function in VipsOperation
vips_cache_operation_build, function in VipsOperation
vips_cache_operation_buildp, function in VipsOperation
vips_cache_operation_lookup, function in VipsOperation
vips_cache_print, function in VipsOperation
vips_cache_set_dump, function in VipsOperation
vips_cache_set_max, function in VipsOperation
vips_cache_set_max_files, function in VipsOperation
vips_cache_set_max_mem, function in VipsOperation
vips_cache_set_trace, function in VipsOperation
vips_call, function in VipsOperation
VipsCallbackFn, user_function in basic
vips_call_argv, function in VipsOperation
vips_call_options, function in VipsOperation
vips_call_required_optional, function in VipsOperation
vips_call_split, function in VipsOperation
vips_call_split_option_string, function in VipsOperation
vips_cast, function in conversion
vips_cast_char, function in conversion
vips_cast_complex, function in conversion
vips_cast_double, function in conversion
vips_cast_dpcomplex, function in conversion
vips_cast_float, function in conversion
vips_cast_int, function in conversion
vips_cast_short, function in conversion
vips_cast_uchar, function in conversion
vips_cast_uint, function in conversion
vips_cast_ushort, function in conversion
VIPS_CEIL, macro in util
vips_ceil, function in arithmetic
vips_check_8or16, function in error
vips_check_bandno, function in error
vips_check_bands, function in error
vips_check_bands_1or3, function in error
vips_check_bands_1orn, function in error
vips_check_bands_1orn_unary, function in error
vips_check_bands_atleast, function in error
vips_check_bands_same, function in error
vips_check_coding, function in error
vips_check_coding_known, function in error
vips_check_coding_noneorlabq, function in error
vips_check_coding_same, function in error
vips_check_complex, function in error
vips_check_format, function in error
vips_check_format_same, function in error
vips_check_hist, function in error
vips_check_int, function in error
vips_check_matrix, function in error
vips_check_mono, function in error
vips_check_noncomplex, function in error
vips_check_oddsquare, function in error
vips_check_precision_intfloat, function in error
vips_check_separable, function in error
vips_check_size_same, function in error
vips_check_twocomponents, function in error
vips_check_u8or16, function in error
vips_check_u8or16orf, function in error
vips_check_uint, function in error
vips_check_uintorf, function in error
vips_check_uncoded, function in error
vips_check_vector, function in error
vips_check_vector_length, function in error
VipsClassMapFn, user_function in VipsObject
vips_class_find, function in VipsObject
vips_class_map_all, function in VipsObject
VIPS_CLIP, macro in util
VIPS_CLIP_CHAR, macro in util
VIPS_CLIP_NONE, macro in util
VIPS_CLIP_SHORT, macro in util
VIPS_CLIP_UCHAR, macro in util
VIPS_CLIP_UINT, macro in util
VIPS_CLIP_USHORT, macro in util
vips_CMC2LCh, function in colour
vips_CMC2XYZ, function in colour
VipsCoding, enum in VipsImage
vips_colourspace, function in colour
vips_colourspace_issupported, function in colour
vips_col_ab2Ch, function in colour
vips_col_ab2h, function in colour
vips_col_C2Ccmc, function in colour
vips_col_Ccmc2C, function in colour
vips_col_Ch2ab, function in colour
vips_col_Ch2hcmc, function in colour
vips_col_Chcmc2h, function in colour
vips_col_dE00, function in colour
vips_col_L2Lcmc, function in colour
vips_col_Lab2XYZ, function in colour
vips_col_Lcmc2L, function in colour
vips_col_make_tables_CMC, function in colour
vips_col_scRGB2BW_16, function in colour
vips_col_scRGB2BW_8, function in colour
vips_col_scRGB2sRGB_16, function in colour
vips_col_scRGB2sRGB_8, function in colour
vips_col_scRGB2XYZ, function in colour
vips_col_sRGB2scRGB_16, function in colour
vips_col_sRGB2scRGB_8, function in colour
vips_col_XYZ2Lab, function in colour
vips_col_XYZ2scRGB, function in colour
VipsCombine, enum in convolution
VipsCombineMode, enum in draw
vips_compass, function in convolution
vips_complex, function in arithmetic
vips_complex2, function in arithmetic
vips_complexform, function in arithmetic
vips_complexget, function in arithmetic
vips_concurrency_get, function in VipsThreadState
vips_concurrency_set, function in VipsThreadState
vips_conj, function in arithmetic
vips_conv, function in convolution
vips_convsep, function in convolution
vips_copy, function in conversion
vips_copy_file, function in conversion
vips_cos, function in arithmetic
vips_countlines, function in morphology
vips_crop, function in conversion
vips_cross_phase, function in arithmetic
vips_csvload, function in VipsForeignSave
vips_csvsave, function in VipsForeignSave
VIPS_C_X0, macro in colour
VIPS_C_Y0, macro in colour
VIPS_C_Z0, macro in colour

D

VIPS_D3250_X0, macro in colour
VIPS_D3250_Y0, macro in colour
VIPS_D3250_Z0, macro in colour
VIPS_D50_X0, macro in colour
VIPS_D50_Y0, macro in colour
VIPS_D50_Z0, macro in colour
VIPS_D55_X0, macro in colour
VIPS_D55_Y0, macro in colour
VIPS_D55_Z0, macro in colour
VIPS_D65_X0, macro in colour
VIPS_D65_Y0, macro in colour
VIPS_D65_Z0, macro in colour
VIPS_D75_X0, macro in colour
VIPS_D75_Y0, macro in colour
VIPS_D75_Z0, macro in colour
VIPS_D93_X0, macro in colour
VIPS_D93_Y0, macro in colour
VIPS_D93_Z0, macro in colour
vips_dE00, function in colour
vips_dE76, function in colour
VIPS_DEBUG_MSG, macro in debug
VIPS_DEBUG_MSG_AMBER, macro in debug
VIPS_DEBUG_MSG_GREEN, macro in debug
VIPS_DEBUG_MSG_RED, macro in debug
vips_dECMC, function in colour
VIPS_DEG, macro in util
VipsDemandStyle, enum in VipsImage
vips_deviate, function in arithmetic
VipsDirection, enum in conversion
vips_divide, function in arithmetic
vips_draw_circle, function in draw
vips_draw_circle1, function in draw
vips_draw_flood, function in draw
vips_draw_flood1, function in draw
vips_draw_image, function in draw
vips_draw_line, function in draw
vips_draw_line1, function in draw
vips_draw_mask, function in draw
vips_draw_mask1, function in draw
vips_draw_point, function in draw
vips_draw_point1, function in draw
vips_draw_rect, function in draw
vips_draw_rect1, function in draw
vips_draw_smudge, function in draw
vips_dzsave, function in VipsForeignSave

E

vips_embed, function in conversion
VIPS_ENABLE_DEPRECATED, macro in version
vips_enum_from_nick, function in util
vips_enum_nick, function in util
vips_enum_string, function in util
vips_eorimage, function in arithmetic
vips_eorimage_const, function in arithmetic
vips_eorimage_const1, function in arithmetic
vips_equal, function in arithmetic
vips_equal_const, function in arithmetic
vips_equal_const1, function in arithmetic
vips_error, function in error
vips_error_buffer, function in error
vips_error_clear, function in error
vips_error_exit, function in error
vips_error_freeze, function in error
vips_error_g, function in error
vips_error_system, function in error
vips_error_thaw, function in error
VipsExecutor, struct in vector
vips_executor_run, function in vector
vips_executor_set_array, function in vector
vips_executor_set_destination, function in vector
vips_executor_set_program, function in vector
vips_executor_set_scanline, function in vector
VIPS_EXEEXT, macro in version
vips_existsf, function in util
vips_exp, function in arithmetic
vips_exp10, function in arithmetic
VipsExtend, enum in conversion
vips_extract_area, function in conversion
vips_extract_band, function in conversion
vips_eye, function in create
VIPS_E_X0, macro in colour
VIPS_E_Y0, macro in colour
VIPS_E_Z0, macro in colour

F

VIPS_FABS, macro in util
vips_falsecolour, function in conversion
vips_fastcor, function in convolution
VIPS_FCLIP, macro in util
vips_filename_get_filename, function in VipsImage
vips_filename_get_options, function in VipsImage
vips_filename_suffix_match, function in util
vips_file_length, function in util
vips_fitsload, function in VipsForeignSave
vips_fitssave, function in VipsForeignSave
vips_flags_from_nick, function in util
vips_flatten, function in conversion
vips_flip, function in conversion
vips_float2rad, function in colour
VIPS_FLOOR, macro in util
vips_floor, function in arithmetic
VIPS_FMAX, macro in util
VIPS_FMIN, macro in util
VipsForeignDzContainer, enum in VipsForeignSave
VipsForeignDzDepth, enum in VipsForeignSave
VipsForeignDzLayout, enum in VipsForeignSave
VipsForeignFlags, enum in VipsForeignSave
VipsForeignPngFilter, enum in VipsForeignSave
VipsForeignTiffCompression, enum in VipsForeignSave
VipsForeignTiffPredictor, enum in VipsForeignSave
VipsForeignTiffResunit, enum in VipsForeignSave
vips_foreign_find_load, function in VipsForeignSave
vips_foreign_find_load_buffer, function in VipsForeignSave
vips_foreign_find_save, function in VipsForeignSave
vips_foreign_find_save_buffer, function in VipsForeignSave
vips_foreign_flags, function in VipsForeignSave
vips_foreign_is_a, function in VipsForeignSave
vips_foreign_is_a_buffer, function in VipsForeignSave
vips_foreign_map, function in VipsForeignSave
vips_format_sizeof, function in header
vips_fractsurf, function in create
VIPS_FREE, macro in memory
vips_free, function in memory
VIPS_FREEF, macro in memory
vips_freqmult, function in freqfilt
vips_fwfft, function in freqfilt

G

vips_gamma, function in conversion
VIPS_GATE_FREE, macro in gate
VIPS_GATE_MALLOC, macro in gate
VIPS_GATE_START, macro in gate
VIPS_GATE_STOP, macro in gate
vips_gaussblur, function in convolution
vips_gaussmat, function in create
vips_gaussnoise, function in create
VipsGenerateFn, user_function in VipsImage
vips_getpoint, function in arithmetic
vips_get_argv0, function in vips
vips_get_disc_threshold, function in VipsImage
vips_get_tile_size, function in VipsThreadState
vips_globalbalance, function in mosaicing
vips_grey, function in create
vips_grid, function in conversion
vips_guess_libdir, function in vips
vips_guess_prefix, function in vips
vips_g_error, function in error

H

vips_hash_table_map, function in util
vips_hist_cum, function in histogram
vips_hist_entropy, function in histogram
vips_hist_equal, function in histogram
vips_hist_find, function in arithmetic
vips_hist_find_indexed, function in arithmetic
vips_hist_find_ndim, function in arithmetic
vips_hist_ismonotonic, function in histogram
vips_hist_local, function in histogram
vips_hist_match, function in histogram
vips_hist_norm, function in histogram
vips_hist_plot, function in histogram
vips_hough_circle, function in arithmetic
vips_hough_line, function in arithmetic
vips_HSV2sRGB, function in colour

I

vips_icc_ac2rc, function in colour
vips_icc_export, function in colour
vips_icc_import, function in colour
vips_icc_present, function in colour
vips_icc_transform, function in colour
vips_identity, function in create
vips_ifthenelse, function in conversion
vips_imag, function in arithmetic
VipsImageMapFn, user_function in header
VipsImageType, enum in VipsImage
VIPS_IMAGE_ADDR, macro in VipsImage
vips_image_copy_memory, function in VipsImage
vips_image_decode, function in VipsImage
vips_image_decode_predict, function in VipsImage
vips_image_encode, function in VipsImage
vips_image_generate, function in generate
vips_image_get, function in header
vips_image_get_area, function in header
vips_image_get_as_string, function in header
vips_image_get_bands, function in header
vips_image_get_blob, function in header
vips_image_get_coding, function in header
vips_image_get_data, function in header
vips_image_get_double, function in header
vips_image_get_filename, function in header
vips_image_get_format, function in header
vips_image_get_height, function in header
vips_image_get_history, function in header
vips_image_get_int, function in header
vips_image_get_interpretation, function in header
vips_image_get_mode, function in header
vips_image_get_offset, function in header
vips_image_get_scale, function in header
vips_image_get_string, function in header
vips_image_get_typeof, function in header
vips_image_get_width, function in header
vips_image_get_xoffset, function in header
vips_image_get_xres, function in header
vips_image_get_yoffset, function in header
vips_image_get_yres, function in header
vips_image_guess_interpretation, function in header
vips_image_history_args, function in header
vips_image_history_printf, function in header
vips_image_init_fields, function in header
vips_image_inplace, function in VipsImage
vips_image_invalidate_all, function in VipsImage
vips_image_isfile, function in VipsImage
vips_image_isMSBfirst, function in VipsImage
vips_image_ispartial, function in VipsImage
vips_image_map, function in header
vips_image_matrix_from_array, function in VipsImage
vips_image_memory, function in VipsImage
vips_image_minimise_all, function in VipsImage
vips_image_new, function in VipsImage
vips_image_new_from_buffer, function in VipsImage
vips_image_new_from_file, function in VipsImage
vips_image_new_from_file_raw, function in VipsImage
vips_image_new_from_file_RW, function in VipsImage
vips_image_new_from_memory, function in VipsImage
vips_image_new_from_memory_copy, function in VipsImage
vips_image_new_matrix, function in VipsImage
vips_image_new_matrixv, function in VipsImage
vips_image_new_matrix_from_array, function in VipsImage
vips_image_new_memory, function in VipsImage
vips_image_new_temp_file, function in VipsImage
VIPS_IMAGE_N_ELEMENTS, macro in VipsImage
VIPS_IMAGE_N_PELS, macro in VipsImage
vips_image_pio_input, function in VipsImage
vips_image_pio_output, function in VipsImage
vips_image_pipelinev, function in generate
vips_image_pipeline_array, function in generate
vips_image_remove, function in header
vips_image_set, function in header
vips_image_set_area, function in header
vips_image_set_blob, function in header
vips_image_set_delete_on_close, function in VipsImage
vips_image_set_double, function in header
vips_image_set_int, function in header
vips_image_set_progress, function in VipsImage
vips_image_set_string, function in header
VIPS_IMAGE_SIZEOF_ELEMENT, macro in VipsImage
VIPS_IMAGE_SIZEOF_LINE, macro in VipsImage
VIPS_IMAGE_SIZEOF_PEL, macro in VipsImage
vips_image_wio_input, function in VipsImage
vips_image_write, function in VipsImage
vips_image_write_line, function in VipsImage
vips_image_write_prepare, function in VipsImage
vips_image_write_to_buffer, function in VipsImage
vips_image_write_to_file, function in VipsImage
vips_image_write_to_memory, function in VipsImage
vips_info, function in error
vips_info_set, function in error
VIPS_INIT, macro in vips
vips_init, function in vips
vips_insert, function in conversion
VipsIntent, enum in colour
vips_interpolate, function in VipsInterpolate
VipsInterpolateMethod, user_function in VipsInterpolate
vips_interpolate_bilinear_static, function in VipsInterpolate
vips_interpolate_get_method, function in VipsInterpolate
vips_interpolate_get_window_offset, function in VipsInterpolate
vips_interpolate_get_window_size, function in VipsInterpolate
vips_interpolate_nearest_static, function in VipsInterpolate
vips_interpolate_new, function in VipsInterpolate
VIPS_INTERPOLATE_SCALE, macro in VipsInterpolate
VIPS_INTERPOLATE_SHIFT, macro in VipsInterpolate
VipsInterpretation, enum in VipsImage
vips_invert, function in arithmetic
vips_invertlut, function in create
vips_invfft, function in freqfilt
VIPS_ISINF, macro in util
VIPS_ISNAN, macro in util
vips_ispostfix, function in util
vips_ispoweroftwo, function in util
vips_isprefix, function in util

J

vips_join, function in conversion
vips_jpegload, function in VipsForeignSave
vips_jpegload_buffer, function in VipsForeignSave
vips_jpegsave, function in VipsForeignSave
vips_jpegsave_buffer, function in VipsForeignSave
vips_jpegsave_mime, function in VipsForeignSave

L

vips_Lab2LabQ, function in colour
vips_Lab2LabS, function in colour
vips_Lab2LCh, function in colour
vips_Lab2XYZ, function in colour
vips_labelregions, function in morphology
vips_LabQ2Lab, function in colour
vips_LabQ2LabS, function in colour
vips_LabQ2sRGB, function in colour
vips_LabS2Lab, function in colour
vips_LabS2LabQ, function in colour
vips_LCh2CMC, function in colour
vips_LCh2Lab, function in colour
vips_leak_set, function in vips
vips_less, function in arithmetic
vips_lesseq, function in arithmetic
vips_lesseq_const, function in arithmetic
vips_lesseq_const1, function in arithmetic
vips_less_const, function in arithmetic
vips_less_const1, function in arithmetic
vips_linear, function in arithmetic
vips_linear1, function in arithmetic
vips_linecache, function in conversion
vips_log, function in arithmetic
vips_log10, function in arithmetic
vips_logmat, function in create
vips_lshift, function in arithmetic
vips_lshift_const, function in arithmetic
vips_lshift_const1, function in arithmetic

M

vips_magickload, function in VipsForeignSave
vips_magickload_buffer, function in VipsForeignSave
VIPS_MAGIC_INTEL, macro in VipsImage
VIPS_MAGIC_SPARC, macro in VipsImage
VIPS_MAJOR_VERSION, macro in version
vips_malloc, function in memory
vips_mapim, function in resample
vips_maplut, function in histogram
vips_map_equal, function in util
vips_mask_butterworth, function in create
vips_mask_butterworth_band, function in create
vips_mask_butterworth_ring, function in create
vips_mask_fractal, function in create
vips_mask_gaussian, function in create
vips_mask_gaussian_band, function in create
vips_mask_gaussian_ring, function in create
vips_mask_ideal, function in create
vips_mask_ideal_band, function in create
vips_mask_ideal_ring, function in create
vips_match, function in mosaicing
vips_math, function in arithmetic
vips_math2, function in arithmetic
vips_math2_const, function in arithmetic
vips_math2_const1, function in arithmetic
vips_matload, function in VipsForeignSave
VIPS_MATRIX, macro in VipsImage
vips_matrixload, function in VipsForeignSave
vips_matrixprint, function in VipsForeignSave
vips_matrixsave, function in VipsForeignSave
VIPS_MAX, macro in util
vips_max, function in arithmetic
VIPS_MAX_COORD, macro in VipsImage
vips_measure, function in arithmetic
vips_median, function in morphology
vips_merge, function in mosaicing
VIPS_META_EXIF_NAME, macro in header
VIPS_META_ICC_NAME, macro in header
VIPS_META_IMAGEDESCRIPTION, macro in header
VIPS_META_IPCT_NAME, macro in header
VIPS_META_LOADER, macro in header
VIPS_META_PHOTOSHOP_NAME, macro in header
VIPS_META_RESOLUTION_UNIT, macro in header
VIPS_META_XML, macro in header
VIPS_META_XMP_NAME, macro in header
VIPS_MICRO_VERSION, macro in version
VIPS_MIN, macro in util
vips_min, function in arithmetic
VIPS_MINOR_VERSION, macro in version
vips_mkdirf, function in util
vips_more, function in arithmetic
vips_moreeq, function in arithmetic
vips_moreeq_const, function in arithmetic
vips_moreeq_const1, function in arithmetic
vips_more_const, function in arithmetic
vips_more_const1, function in arithmetic
vips_morph, function in morphology
vips_mosaic, function in mosaicing
vips_mosaic1, function in mosaicing
vips_msb, function in conversion
vips_multiply, function in arithmetic

N

VIPS_NEW, macro in memory
vips_nickname_find, function in VipsObject
vips_notequal, function in arithmetic
vips_notequal_const, function in arithmetic
vips_notequal_const1, function in arithmetic
VIPS_NUMBER, macro in util

O

VipsObjectSetArguments, user_function in VipsObject
vips_object_argument_isset, function in VipsObject
vips_object_argument_needsstring, function in VipsObject
vips_object_build, function in VipsObject
vips_object_class_install_argument, function in VipsObject
vips_object_dump, function in VipsObject
vips_object_get_argument, function in VipsObject
vips_object_get_argument_flags, function in VipsObject
vips_object_get_argument_priority, function in VipsObject
vips_object_get_argument_to_string, function in VipsObject
vips_object_get_description, function in VipsObject
vips_object_get_property, function in VipsObject
vips_object_local, macro in VipsObject
vips_object_local_array, function in VipsObject
vips_object_local_cb, function in VipsObject
vips_object_map, function in VipsObject
vips_object_new, function in VipsObject
vips_object_new_from_string, function in VipsObject
vips_object_preclose, function in VipsObject
vips_object_print_all, function in VipsObject
vips_object_print_dump, function in VipsObject
vips_object_print_name, function in VipsObject
vips_object_print_summary, function in VipsObject
vips_object_print_summary_class, function in VipsObject
vips_object_rewind, function in VipsObject
vips_object_sanity, function in VipsObject
vips_object_sanity_all, function in VipsObject
vips_object_set, function in VipsObject
vips_object_set_argument_from_string, function in VipsObject
vips_object_set_from_string, function in VipsObject
vips_object_set_property, function in VipsObject
vips_object_set_required, function in VipsObject
vips_object_set_static, function in VipsObject
vips_object_set_valist, function in VipsObject
vips_object_summary, function in VipsObject
vips_object_summary_class, function in VipsObject
vips_object_to_string, function in VipsObject
vips_object_unref_outputs, function in VipsObject
vips_openexrload, function in VipsForeignSave
vips_openslideload, function in VipsForeignSave
VipsOperationBoolean, enum in arithmetic
VipsOperationBuildFn, user_function in VipsOperation
VipsOperationComplex, enum in arithmetic
VipsOperationComplex2, enum in arithmetic
VipsOperationComplexget, enum in arithmetic
VipsOperationFlags, enum in VipsOperation
VipsOperationMath, enum in arithmetic
VipsOperationMath2, enum in arithmetic
VipsOperationMorphology, enum in morphology
VipsOperationRelational, enum in arithmetic
VipsOperationRound, enum in arithmetic
vips_operation_call_valist, function in VipsOperation
vips_operation_class_print_usage, function in VipsOperation
vips_operation_get_flags, function in VipsOperation
vips_operation_invalidate, function in VipsOperation
vips_operation_new, function in VipsOperation
vips_orimage, function in arithmetic
vips_orimage_const, function in arithmetic
vips_orimage_const1, function in arithmetic

P

vips_path_filename7, function in basic
VIPS_PATH_MAX, macro in util
vips_path_mode7, function in basic
VipsPCS, enum in colour
VipsPel, typedef in basic
vips_percent, function in histogram
vips_phasecor, function in freqfilt
VIPS_PI, macro in util
vips_pngload, function in VipsForeignSave
vips_pngload_buffer, function in VipsForeignSave
vips_pngsave, function in VipsForeignSave
vips_pngsave_buffer, function in VipsForeignSave
vips_polar, function in arithmetic
vips_popenf, function in util
vips_pow, function in arithmetic
vips_pow_const, function in arithmetic
vips_pow_const1, function in arithmetic
vips_ppmload, function in VipsForeignSave
vips_ppmsave, function in VipsForeignSave
VipsPrecision, enum in basic
vips_premultiply, function in conversion
vips_profile, function in arithmetic
vips_profile_set, function in gate
VipsProgress, struct in VipsImage
vips_progress_set, function in VipsImage
vips_project, function in arithmetic
vips_pythagoras, function in colour

Q

vips_quadratic, function in resample

R

VIPS_RAD, macro in util
vips_rad2float, function in colour
vips_radload, function in VipsForeignSave
vips_radsave, function in VipsForeignSave
vips_rank, function in morphology
vips_rawload, function in VipsForeignSave
vips_rawsave, function in VipsForeignSave
vips_rawsave_fd, function in VipsForeignSave
vips_real, function in arithmetic
vips_recomb, function in conversion
VipsRect, struct in rect
vips_rect, function in arithmetic
VIPS_RECT_BOTTOM, macro in rect
vips_rect_dup, function in rect
vips_rect_equalsrect, function in rect
VIPS_RECT_HCENTRE, macro in rect
vips_rect_includespoint, function in rect
vips_rect_includesrect, function in rect
vips_rect_intersectrect, function in rect
vips_rect_isempty, function in rect
vips_rect_marginadjust, function in rect
vips_rect_normalise, function in rect
VIPS_RECT_RIGHT, macro in rect
vips_rect_unionrect, function in rect
VIPS_RECT_VCENTRE, macro in rect
vips_ref_string_get, function in type
vips_ref_string_new, function in type
VipsRegionWrite, user_function in generate
VIPS_REGION_ADDR, macro in VipsRegion
VIPS_REGION_ADDR_TOPLEFT, macro in VipsRegion
vips_region_black, function in VipsRegion
vips_region_buffer, function in VipsRegion
vips_region_copy, function in VipsRegion
vips_region_dump_all, function in VipsRegion
vips_region_equalsregion, function in VipsRegion
vips_region_image, function in VipsRegion
vips_region_invalidate, function in VipsRegion
VIPS_REGION_LSKIP, macro in VipsRegion
vips_region_new, function in VipsRegion
VIPS_REGION_N_ELEMENTS, macro in VipsRegion
vips_region_paint, function in VipsRegion
vips_region_paint_pel, function in VipsRegion
vips_region_position, function in VipsRegion
vips_region_prepare, function in VipsRegion
vips_region_prepare_many, function in VipsRegion
vips_region_prepare_to, function in VipsRegion
vips_region_region, function in VipsRegion
vips_region_shrink, function in VipsRegion
VIPS_REGION_SIZEOF_LINE, macro in VipsRegion
vips_relational, function in arithmetic
vips_relational_const, function in arithmetic
vips_relational_const1, function in arithmetic
vips_remainder, function in arithmetic
vips_remainder_const, function in arithmetic
vips_remainder_const1, function in arithmetic
vips_remosaic, function in mosaicing
vips_rename, function in util
vips_replicate, function in conversion
vips_resize, function in resample
VIPS_RINT, macro in util
vips_rint, function in arithmetic
vips_rmdirf, function in util
vips_rot, function in conversion
vips_rot45, function in conversion
vips_round, function in arithmetic
vips_rshift, function in arithmetic
vips_rshift_const, function in arithmetic
vips_rshift_const1, function in arithmetic

S

VipsSaveable, enum in VipsForeignSave
vips_scale, function in conversion
vips_scRGB2BW, function in colour
vips_scRGB2sRGB, function in colour
vips_scRGB2XYZ, function in colour
VipsSemaphore, struct in semaphore
vips_semaphore_destroy, function in semaphore
vips_semaphore_down, function in semaphore
vips_semaphore_downn, function in semaphore
vips_semaphore_init, function in semaphore
vips_semaphore_up, function in semaphore
vips_semaphore_upn, function in semaphore
vips_sequential, function in conversion
VIPS_SETSTR, macro in memory
vips_sharpen, function in convolution
vips_shrink, function in resample
vips_shrink2, function in resample
vips_shrinkh, function in resample
vips_shrinkv, function in resample
shrink_region_uncoded, function in dzsave
vips_shutdown, function in vips
vips_sign, function in arithmetic
vips_similarity, function in resample
vips_sin, function in arithmetic
vips_sines, function in create
vips_sink, function in generate
VipsSinkNotify, user_function in generate
vips_sink_disc, function in generate
vips_sink_memory, function in generate
vips_sink_screen, function in generate
vips_sink_tile, function in generate
VipsSListFold2Fn, user_function in basic
VipsSListMap2Fn, user_function in basic
VipsSListMap4Fn, user_function in basic
vips_slist_equal, function in util
vips_slist_filter, function in util
vips_slist_fold2, function in util
vips_slist_free_all, function in util
vips_slist_map2, function in util
vips_slist_map2_rev, function in util
vips_slist_map4, function in util
vips_snprintf, function in util
vips_spcor, function in convolution
vips_spectrum, function in freqfilt
vips_sRGB2HSV, function in colour
vips_sRGB2scRGB, function in colour
VipsStartFn, user_function in VipsImage
vips_start_many, function in generate
vips_start_one, function in generate
vips_stats, function in arithmetic
vips_stdif, function in histogram
VipsStopFn, user_function in VipsImage
vips_stop_many, function in generate
vips_stop_one, function in generate
vips_strdup, function in memory
vips_strncpy, function in util
vips_strrstr, function in util
vips_subsample, function in conversion
vips_subtract, function in arithmetic
vips_sum, function in arithmetic
VIPS_SWAP, macro in util
vips_system, function in VipsImage

T

vips_tan, function in arithmetic
vips_text, function in create
vips_thing_new, function in type
VipsThreadpoolAllocateFn, user_function in VipsThreadState
VipsThreadpoolProgressFn, user_function in VipsThreadState
VipsThreadpoolWorkFn, user_function in VipsThreadState
vips_threadpool_run, function in VipsThreadState
VipsThreadStartFn, user_function in VipsThreadState
vips_thread_shutdown, function in vips
vips_thread_state_new, function in VipsThreadState
vips_thread_state_set, function in VipsThreadState
vips_tiffload, function in VipsForeignSave
vips_tiffload_buffer, function in VipsForeignSave
vips_tiffsave, function in VipsForeignSave
vips_tilecache, function in conversion
VipsToken, enum in util
vips_tonelut, function in create
vips_tracked_close, function in memory
vips_tracked_free, function in memory
vips_tracked_get_allocs, function in memory
vips_tracked_get_files, function in memory
vips_tracked_get_mem, function in memory
vips_tracked_get_mem_highwater, function in memory
vips_tracked_malloc, function in memory
vips_tracked_open, function in memory
VipsTransformation, struct in transform
VIPS_TRANSFORM_SCALE, macro in VipsInterpolate
VIPS_TRANSFORM_SHIFT, macro in VipsInterpolate
VipsTypeMap2Fn, user_function in VipsObject
VipsTypeMapFn, user_function in VipsObject
vips_type_depth, function in VipsObject
vips_type_find, function in VipsObject
vips_type_map, function in VipsObject
vips_type_map_all, function in VipsObject

U

vips_unpremultiply, function in conversion
VIPS_UNREF, macro in VipsObject
VIPS_UNROLL, macro in util

V

vips_value_get_area, function in type
vips_value_get_array, function in type
vips_value_get_array_double, function in type
vips_value_get_array_image, function in VipsImage
vips_value_get_array_int, function in type
vips_value_get_array_object, function in type
vips_value_get_blob, function in type
vips_value_get_ref_string, function in type
vips_value_get_save_string, function in type
vips_value_is_null, function in VipsObject
vips_value_set_area, function in type
vips_value_set_array, function in type
vips_value_set_array_double, function in type
vips_value_set_array_image, function in VipsImage
vips_value_set_array_int, function in type
vips_value_set_array_object, function in type
vips_value_set_blob, function in type
vips_value_set_ref_string, function in type
vips_value_set_save_string, function in type
vips_value_set_save_stringf, function in type
VipsVector, struct in vector
vips_vector_asm2, function in vector
vips_vector_asm3, function in vector
vips_vector_compile, function in vector
vips_vector_constant, function in vector
vips_vector_free, function in vector
vips_vector_full, function in vector
vips_vector_init, function in vector
vips_vector_isenabled, function in vector
vips_vector_new, function in vector
vips_vector_print, function in vector
vips_vector_set_enabled, function in vector
VIPS_VECTOR_SOURCE_MAX, macro in vector
vips_vector_source_name, function in vector
vips_vector_source_scanline, function in vector
vips_vector_temporary, function in vector
vips_verror, function in error
vips_verror_system, function in error
VIPS_VERSION, macro in version
vips_version, function in vips
VIPS_VERSION_STRING, macro in version
vips_version_string, function in vips
vips_vinfo, function in error
vips_vipsload, function in VipsForeignSave
vips_vipssave, function in VipsForeignSave
vips_vsnprintf, function in util
vips_vwarn, function in error

W

vips_warn, function in error
vips_webpload, function in VipsForeignSave
vips_webpload_buffer, function in VipsForeignSave
vips_webpsave, function in VipsForeignSave
vips_webpsave_buffer, function in VipsForeignSave
vips_webpsave_mime, function in VipsForeignSave
vips_wop, function in arithmetic
vips_wop_const, function in arithmetic
vips_wop_const1, function in arithmetic
vips_wrap, function in conversion

X

vips_xyz, function in create
vips_XYZ2Lab, function in colour
vips_XYZ2scRGB, function in colour
vips_XYZ2Yxy, function in colour

Y

vips_Yxy2Lab, function in colour
vips_Yxy2XYZ, function in colour

Z

vips_zone, function in create
vips_zoom, function in conversion

_

vips__affine, function in transform
vips__argument_get_instance, function in VipsObject
vips__argument_table_lookup, function in VipsObject
vips__change_suffix, function in util
vips__chomp, function in util
vips__fgetc, function in util
vips__filename_split8, function in util
vips__file_open_read, function in util
vips__file_open_write, function in util
vips__file_read, function in util
vips__file_read_name, function in util
vips__file_write, function in util
vips__find_rightmost_brackets, function in util
vips__ftruncate, function in util
vips__get_bytes, function in util
vips__gslist_gvalue_copy, function in util
vips__gslist_gvalue_free, function in util
vips__gslist_gvalue_get, function in util
vips__gslist_gvalue_merge, function in util
vips__gvalue_ref_string_new, function in util
vips__hypot, macro in inlines
vips__object_set_member, function in VipsObject
vips__seek, function in util
vips__temp_name, function in util
vips__thread_gate_start, function in gate
vips__thread_gate_stop, function in gate
vips__thread_malloc_free, function in gate
vips__thread_profile, variable in gate
vips__thread_profile_attach, function in gate
vips__thread_profile_detach, function in gate
vips__thread_profile_stop, function in gate
vips__token_get, function in util
vips__token_must, function in util
vips__token_need, function in util
vips__transform_add, function in transform
vips__transform_calc_inverse, function in transform
vips__transform_forward_point, function in transform
vips__transform_forward_rect, function in transform
vips__transform_init, function in transform
vips__transform_invert_point, function in transform
vips__transform_invert_rect, function in transform
vips__transform_isidentity, function in transform
vips__transform_print, function in transform
vips__transform_set_area, function in transform
vips__vector_enabled, variable in vector
vips__write, function in util

I

VIPS_INIT, macro in vips
vips-8.2.2/doc/html/ch03.html0000664000175000017500000000747712651721507012610 00000000000000 VIPS operation API by section: VIPS Reference Manual

VIPS operation API by section

arithmetic — operations which perform pixel arithmetic, trig, log, statistics
colour — colour operators
conversion — convert images in some way: change band format, change header, insert, extract, join
convolution — convolve and correlate images
VipsForeignSave — load and save images in a variety of formats
freqfilt — fourier transforms and frequency-domin filters
histogram — find, manipulate and apply histograms and lookup tables
draw — drawing operations: flood, paste, line, circle
VipsInterpolate — various interpolators: nearest, bilinear, and some non-linear
morphology — morphological operators, rank filters and related image analysis
mosaicing — build image mosaics
create — create images in various ways
resample
vips-8.2.2/doc/html/libvips-resample.html0000664000175000017500000010531412651721507015316 00000000000000 resample: VIPS Reference Manual

resample

resample

Functions

int vips_shrink ()
int vips_shrinkh ()
int vips_shrinkv ()
int vips_shrink2 ()
int vips_similarity ()
int vips_affine ()
int vips_resize ()
int vips_mapim ()
int vips_quadratic ()

Description

Functions

vips_shrink ()

int
vips_shrink (VipsImage *in,
             VipsImage **out,
             double xshrink,
             double yshrink,
             ...);

Shrink in by a pair of factors with a simple box filter. For non-integer factors, vips_shrink() will first shrink by the integer part with a box filter, then use vips_affine() plus bilinear interpolation to shrink by the remaining fractional part.

This is a very low-level operation: see vips_resize() for a more convenient way to resize images.

This operation does not change xres or yres. The image resolution needs to be updated by the application.

See also: vips_resize(), vips_affine().

Parameters

in

input image

 

out

output image

 

xshrink

horizontal shrink

 

yshrink

vertical shrink

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_shrinkh ()

int
vips_shrinkh (VipsImage *in,
              VipsImage **out,
              int xshrink,
              ...);

Shrink in horizontally by an integer factor. Each pixel in the output is the average of the corresponding line of xshrink pixels in the input.

This is a very low-level operation: see vips_resize() for a more convenient way to resize images.

This operation does not change xres or yres. The image resolution needs to be updated by the application.

See also: vips_shrinkv(), vips_shrink(), vips_resize(), vips_affine().

Parameters

in

input image

 

out

output image

 

xshrink

horizontal shrink

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_shrinkv ()

int
vips_shrinkv (VipsImage *in,
              VipsImage **out,
              int yshrink,
              ...);

Shrink in vertically by an integer factor. Each pixel in the output is the average of the corresponding column of yshrink pixels in the input.

You will get aliasing for non-integer shrinks. In this case, shrink with this function to the nearest integer size above the target shrink, then downsample to the exact size with vips_affine() and your choice of interpolator. See vips_resize() for a convenient way to do this.

This operation does not change xres or yres. The image resolution needs to be updated by the application.

See also: vips_shrinkh(), vips_shrink(), vips_resize(), vips_affine().

Parameters

in

input image

 

out

output image

 

yshrink

vertical shrink

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_shrink2 ()

int
vips_shrink2 (VipsImage *in,
              VipsImage **out,
              double xshrink,
              double yshrink,
              ...);

Shrink in by a pair of factors with a simple box filter.

This is an old version of vips_shrink() kept around for testing. Use vips_shrink() in preference.

See also: vips_resize(), vips_affine().

Parameters

in

input image

 

out

output image

 

xshrink

horizontal shrink

 

yshrink

vertical shrink

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_similarity ()

int
vips_similarity (VipsImage *in,
                 VipsImage **out,
                 ...);

Optional arguments:

scale : scale by this factor angle : rotate by this many degrees anticlockwise interpolate : interpolate pixels with this idx : input horizontal offset idy : input vertical offset odx : output horizontal offset ody : output vertical offset

This operator calls vips_affine() for you, calculating the matrix for the affine transform from scale and angle . Other parameters are passed on to vips_affine() unaltered.

See also: vips_affine(), VipsInterpolate.

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_affine ()

int
vips_affine (VipsImage *in,
             VipsImage **out,
             double a,
             double b,
             double c,
             double d,
             ...);

Optional arguments:

interpolate : interpolate pixels with this oarea : output rectangle idx : input horizontal offset idy : input vertical offset odx : output horizontal offset ody : output vertical offset

This operator performs an affine transform on an image using interpolate .

The transform is:

X = a * (x + idx ) + b * (y + idy ) + odx Y = c * (x + idx ) + d * (y + idy ) + doy

x and y are the coordinates in input image. X and Y are the coordinates in output image. (0,0) is the upper left corner.

The section of the output space defined by oarea is written to out . oarea is a four-element int array of left, top, width, height. By default oarea is just large enough to cover the whole of the transformed input image.

interpolate defaults to bilinear.

idx , idy , odx , ody default to zero.

This operation does not change xres or yres. The image resolution needs to be updated by the application.

See also: vips_shrink(), vips_resize(), VipsInterpolate.

Parameters

in

input image

 

out

output image

 

a

transformation matrix coefficient

 

b

transformation matrix coefficient

 

c

transformation matrix coefficient

 

d

transformation matrix coefficient

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_resize ()

int
vips_resize (VipsImage *in,
             VipsImage **out,
             double scale,
             ...);

Optional arguments:

vscale : vertical scale factor interpolate : interpolate pixels with this idx : input horizontal offset idy : input vertical offset

Resize an image. When upsizing (scale > 1), the image is simply resized with vips_affine() and the supplied interpolate . When downsizing, the image is block-shrunk with vips_shrink() to roughly half the interpolator window size above the target size, then blurred with an anti-alias filter, then resampled with vips_affine() and the supplied interpolator, then sharpened.

vips_resize() normally maintains the image apect ratio. If you set vscale , that factor is used for the vertical scale and scale for the horizontal.

interpolate defaults to bicubic.

idx , idy default to zero. Set them to 0.5 to get pixel-centre sampling.

This operation does not change xres or yres. The image resolution needs to be updated by the application.

See also: vips_shrink(), vips_affine(), VipsInterpolate.

Parameters

in

input image

 

out

output image

 

scale

scale factor

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_mapim ()

int
vips_mapim (VipsImage *in,
            VipsImage **out,
            VipsImage *index,
            ...);

Optional arguments:

interpolate : interpolate pixels with this

This operator resamples in using index to look up pixels. out is the same size as index , with each pixel being fetched from that position in in . That is:

out[x, y] = in[index[x, y]]

If index has one band, that band must be complex. Otherwise, index must have two bands of any format. Coordinates in index are in pixels, with (0, 0) being the top-left corner of in , and with y increasing down the image. Use vips_xyz() to build index images.

interpolate defaults to bilinear.

This operation does not change xres or yres. The image resolution needs to be updated by the application.

See vips_maplut() for a 1D equivalent of this operation.

See also: vips_xyz(), vips_affine(), vips_resize(), vips_maplut(), VipsInterpolate.

Parameters

in

input image

 

out

output image

 

index

index image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_quadratic ()

int
vips_quadratic (VipsImage *in,
                VipsImage **out,
                VipsImage *coeff,
                ...);

Optional arguments:

interpolate : use this interpolator (default bilinear)

This operation is unfinished and unusable, sorry.

See also: vips_affine().

Parameters

in

input image

 

out

output image

 

coeff

horizontal quadratic

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error

Types and Values

vips-8.2.2/doc/html/libvips-conversion.html0000664000175000017500000054566112651721507015710 00000000000000 conversion: VIPS Reference Manual

conversion

conversion — convert images in some way: change band format, change header, insert, extract, join

Stability Level

Stable, unless otherwise indicated

Functions

int vips_copy ()
int vips_tilecache ()
int vips_linecache ()
int vips_sequential ()
int vips_cache ()
int vips_copy_file ()
int vips_embed ()
int vips_flip ()
int vips_insert ()
int vips_join ()
int vips_arrayjoin ()
int vips_extract_area ()
int vips_crop ()
int vips_extract_band ()
int vips_replicate ()
int vips_grid ()
int vips_wrap ()
int vips_rot ()
int vips_rot45 ()
VipsAngle vips_autorot_get_angle ()
int vips_autorot ()
int vips_zoom ()
int vips_subsample ()
int vips_cast ()
int vips_cast_uchar ()
int vips_cast_char ()
int vips_cast_ushort ()
int vips_cast_short ()
int vips_cast_uint ()
int vips_cast_int ()
int vips_cast_float ()
int vips_cast_double ()
int vips_cast_complex ()
int vips_cast_dpcomplex ()
int vips_scale ()
int vips_msb ()
int vips_byteswap ()
int vips_bandjoin ()
int vips_bandjoin2 ()
int vips_bandjoin_const ()
int vips_bandjoin_const1 ()
int vips_bandrank ()
int vips_bandfold ()
int vips_bandunfold ()
int vips_bandbool ()
int vips_bandand ()
int vips_bandor ()
int vips_bandeor ()
int vips_bandmean ()
int vips_recomb ()
int vips_ifthenelse ()
int vips_flatten ()
int vips_premultiply ()
int vips_unpremultiply ()
int vips_falsecolour ()
int vips_gamma ()

Types and Values

Includes

#include <vips/vips.h>

Description

These operations convert an image in some way. They can be split into a two main groups.

The first set of operations change an image's format in some way. You can change the band format (for example, cast to 32-bit unsigned int), form complex images from real images, convert images to matrices and back, change header fields, and a few others.

The second group move pixels about in some way. You can flip, rotate, extract, insert and join pairs of images in various ways.

Functions

vips_copy ()

int
vips_copy (VipsImage *in,
           VipsImage **out,
           ...);

Optional arguments:

width : set image width height : set image height bands : set image bands format : set image format coding : set image coding interpretation : set image interpretation xres : set image xres yres : set image yres xoffset : set image xoffset yoffset : set image yoffset

Copy an image, optionally modifying the header. VIPS copies images by copying pointers, so this operation is instant, even for very large images.

You can optionally change any or all header fields during the copy. You can make any change which does not change the size of a pel, so for example you can turn a 4-band uchar image into a 2-band ushort image, but you cannot change a 100 x 100 RGB image into a 300 x 100 mono image.

See also: vips_byteswap(), vips_bandfold(), vips_bandunfold().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_tilecache ()

int
vips_tilecache (VipsImage *in,
                VipsImage **out,
                ...);

Optional arguments:

tile_width : width of tiles in cache tile_height : height of tiles in cache max_tiles : maximum number of tiles to cache access : hint expected access pattern VipsAccess threaded : allow many threads persistent : don't drop cache at end of computation

This operation behaves rather like vips_copy() between images in and out , except that it keeps a cache of computed pixels. This cache is made of up to max_tiles tiles (a value of -1 means any number of tiles), and each tile is of size tile_width by tile_height pixels.

Each cache tile is made with a single call to vips_region_prepare().

When the cache fills, a tile is chosen for reuse. If access is VIPS_ACCESS_RANDOM, then the least-recently-used tile is reused. If access is VIPS_ACCESS_SEQUENTIAL or VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, the top-most tile is reused.

By default, tile_width and tile_height are 128 pixels, and the operation will cache up to 1,000 tiles. access defaults to VIPS_ACCESS_RANDOM.

Normally, only a single thread at once is allowed to calculate tiles. If you set threaded to TRUE, vips_tilecache() will allow many threads to calculate tiles at once, and share the cache between them.

Normally the cache is dropped when computation finishes. Set persistent to TRUE to keep the cache between computations.

See also: vips_cache(), vips_linecache().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_linecache ()

int
vips_linecache (VipsImage *in,
                VipsImage **out,
                ...);

Optional arguments:

access : hint expected access pattern VipsAccess tile_height : height of tiles in cache threaded : allow many threads

This operation behaves rather like vips_copy() between images in and out , except that it keeps a cache of computed scanlines.

The number of lines cached is enough for a small amount of non-local access. If you know you will not be making any non-local access, you can save some memory and set access to VIPS_ACCESS_SEQUENTIAL_UNBUFFERED.

Each cache tile is made with a single call to vips_region_prepare().

When the cache fills, a tile is chosen for reuse. If access is VIPS_ACCESS_RANDOM, then the least-recently-used tile is reused. If access is VIPS_ACCESS_SEQUENTIAL or VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, the top-most tile is reused. access defaults to VIPS_ACCESS_RANDOM.

tile_height can be used to set the size of the strips that vips_linecache() uses. The default is 1 (a single scanline).

Normally, only a single thread at once is allowed to calculate tiles. If you set threaded to TRUE, vips_linecache() will allow many threads to calculate tiles at once and share the cache between them.

See also: vips_cache(), vips_tilecache().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_sequential ()

int
vips_sequential (VipsImage *in,
                 VipsImage **out,
                 ...);

Optional arguments:

trace : trace requests strip_height : height of cache strips access : access pattern

This operation behaves rather like vips_copy() between images in and out , except that it checks that pixels are only requested top-to-bottom. If a thread makes an out of order request, it is stalled until the pack catches up.

This operation is useful for loading file formats which are strictly top-to-bottom, like PNG.

If trace is true, the operation will print diagnostic messages for each block of pixels which are processed. This can help find the cause of non-sequential accesses.

strip_height can be used to set the size of the tiles that vips_sequential() uses. The default value is 1.

access can be set to VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, meaning don't keep a large cache behind the read point. This can save some memory.

See also: vips_cache(), vips_linecache(), vips_tilecache().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_cache ()

int
vips_cache (VipsImage *in,
            VipsImage **out,
            ...);

Optional arguments:

tile_width : width of tiles in cache tile_height : height of tiles in cache max_tiles : maximum number of tiles to cache

This operation behaves rather like vips_copy() between images in and out , except that it keeps a cache of computed pixels. This cache is made of up to max_tiles tiles (a value of -1 means any number of tiles), and each tile is of size tile_width by tile_height pixels. By default it will cache 250 128 x 128 pixel tiles, enough for two 1920 x 1080 images.

This operation is a thin wrapper over vips_sink_screen(), see the documentation for that operation for details.

It uses a set of background threads to calculate pixels and the various active cache operations coordinate so as not to overwhelm your system. When a request is made for an area of pixels, the operation will block until all of those pixels have been calculated. Pixels are calculated with a set of threads.

See also: vips_tilecache().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_copy_file ()

int
vips_copy_file (VipsImage *in,
                VipsImage **out,
                ...);

A simple convenience function to copy an image to a file, then copy again to output. If the image is already a file, just copy straight through.

The file is allocated with vips_image_new_temp_file(). The file is automatically deleted when out is closed.

See also: vips_copy(), vips_image_new_temp_file().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_embed ()

int
vips_embed (VipsImage *in,
            VipsImage **out,
            int x,
            int y,
            int width,
            int height,
            ...);

Optional arguments:

extend : VipsExtend to generate the edge pixels (default: black) background : VipsArrayDouble colour for edge pixels

The opposite of vips_extract_area(): embed in within an image of size width by height at position x , y .

extend controls what appears in the new pels, see VipsExtend.

See also: vips_extract_area(), vips_insert().

Parameters

in

input image

 

out

output image

 

x

place in at this x position in out

 

y

place in at this y position in out

 

width

out should be this many pixels across

 

height

out should be this many pixels down

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_flip ()

int
vips_flip (VipsImage *in,
           VipsImage **out,
           VipsDirection direction,
           ...);

Flips an image left-right or up-down.

See also: vips_rot().

Parameters

in

input image

 

out

output image

 

direction

flip horizontally or vertically

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_insert ()

int
vips_insert (VipsImage *main,
             VipsImage *sub,
             VipsImage **out,
             int x,
             int y,
             ...);

Optional arguments:

expand : expand output to hold whole of both images background : colour for new pixels

Insert sub into main at position x , y .

Normally out shows the whole of main . If expand is TRUE then out is made large enough to hold all of main and sub . Any areas of out not coming from either main or sub are set to background (default 0).

If sub overlaps main , sub will appear on top of main .

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common type (see table Smallest common format in

arithmetic).

See also: vips_join(), vips_embed(), vips_extract_area().

Parameters

main

big image

 

sub

small image

 

out

output image

 

x

left position of sub

 

y

top position of sub

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_join ()

int
vips_join (VipsImage *in1,
           VipsImage *in2,
           VipsImage **out,
           VipsDirection direction,
           ...);

Optional arguments:

expand : TRUE to expand the output image to hold all of the input pixels shim : space between images, in pixels background : background ink colour align : low, centre or high alignment

Join in1 and in2 together, left-right or up-down depending on the value of direction .

If one is taller or wider than the other, out will be has high as the smaller. If expand is TRUE, then the output will be expanded to contain all of the input pixels.

Use align to set the edge that the images align on. By default, they align on the edge with the lower value coordinate.

Use background to set the colour of any pixels in out which are not present in either in1 or in2 .

Use shim to set the spacing between the images. By default this is 0.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common type (see table Smallest common format in

arithmetic).

If you are going to be joining many thousands of images in a regular grid, vips_arrayjoin() is a better choice.

See also: vips_arrayjoin(), vips_insert().

Parameters

in1

first input image

 

in2

second input image

 

out

output image

 

direction

join horizontally or vertically

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_arrayjoin ()

int
vips_arrayjoin (VipsImage **in,
                VipsImage **out,
                int n,
                ...);

Optional arguments:

across : number of images per row shim : space between images, in pixels background : background ink colour halign : low, centre or high alignment valign : low, centre or high alignment hspacing : horizontal distance between images vspacing : vertical distance between images

Lay out the images in in in a grid. The grid is across images across and however high is necessary to use up all of in . Images are set down left-to-right and top-to-bottom. across defaults to n .

Each input image is placed with a box of size hspacing by vspacing pixels and cropped. These default to the largest width and largest height of the input images.

Space between images is filled with background . This defaults to 0 (black).

Images are positioned within their hspacing by vspacing box at low, centre or high coordinate values, controlled by halign and valign . These default to left-top.

Boxes are joined and separated by shim pixels. This defaults to 0.

If the number of bands in the input images differs, all but one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the n-band images are operated upon.

The input images are cast up to the smallest common type (see table Smallest common format in

arithmetic).

See also: vips_join(), vips_insert().

Parameters

in

array of input images.

[array length=n][transfer none]

out

output image

 

n

number of input images

 

Returns

0 on success, -1 on error


vips_extract_area ()

int
vips_extract_area (VipsImage *in,
                   VipsImage **out,
                   int left,
                   int top,
                   int width,
                   int height,
                   ...);

Extract an area from an image. The area must fit within in .

See also: vips_extract_bands().

Parameters

in

input image

 

out

output image

 

left

left edge of area to extract

 

top

top edge of area to extract

 

width

width of area to extract

 

height

height of area to extract

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_crop ()

int
vips_crop (VipsImage *in,
           VipsImage **out,
           int left,
           int top,
           int width,
           int height,
           ...);

A synonym for vips_extract_area().

See also: vips_extract_bands().

Parameters

in

input image

 

out

output image

 

left

left edge of area to extract

 

top

top edge of area to extract

 

width

width of area to extract

 

height

height of area to extract

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_extract_band ()

int
vips_extract_band (VipsImage *in,
                   VipsImage **out,
                   int band,
                   ...);

Optional arguments:

n : number of bands to extract

Extract a band or bands from an image. Extracting out of range is an error.

See also: vips_extract_area().

Parameters

in

input image

 

out

output image

 

band

band to extract

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_replicate ()

int
vips_replicate (VipsImage *in,
                VipsImage **out,
                int across,
                int down,
                ...);

Repeats an image many times.

See also: vips_extract_area().

Parameters

in

input image

 

out

output image

 

across

repeat input this many times across

 

down

repeat input this many times down

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_grid ()

int
vips_grid (VipsImage *in,
           VipsImage **out,
           int tile_height,
           int across,
           int down,
           ...);

Chop a tall thin image up into a set of tiles, lay the tiles out in a grid.

The input image should be a very tall, thin image containing a list of smaller images. Volumetric or time-sequence images are often laid out like this. This image is chopped into a series of tiles, each tile_height pixels high and the width of in . The tiles are then rearranged into a grid across tiles across and down tiles down in row-major order.

Supplying tile_height , across and down is not strictly necessary, we only really need two of these. Requiring three is a double-check that the image has the expected geometry.

See also: vips_embed(), vips_insert(), vips_join().

Parameters

in

input image

 

out

output image

 

tile_height

chop into tiles this high

 

across

tiles across

 

down

tiles down

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_wrap ()

int
vips_wrap (VipsImage *in,
           VipsImage **out,
           ...);

Optional arguments:

x : horizontal displacement y : vertical displacement

Slice an image up and move the segments about so that the pixel that was at 0, 0 is now at x , y . If x and y are not set, they default to the centre of the image.

See also: vips_embed(), vips_replicate().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_rot ()

int
vips_rot (VipsImage *in,
          VipsImage **out,
          VipsAngle angle,
          ...);

Rotate in by a multiple of 90 degrees.

See also: vips_flip().

Parameters

in

input image

 

out

output image

 

angle

rotation angle

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_rot45 ()

int
vips_rot45 (VipsImage *in,
            VipsImage **out,
            ...);

Optional arguments:

angle : rotation angle

Rotate in by a multiple of 45 degrees. Odd-length sides and square images only.

See also: vips_rot().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_autorot_get_angle ()

VipsAngle
vips_autorot_get_angle (VipsImage *im);

Examine the metadata on im and return the VipsAngle to rotate by to turn the image upright.

See also: vips_autorot().

Parameters

im

image to fetch orientation from

 

Returns

the VipsAngle to rotate by to make the image upright.


vips_autorot ()

int
vips_autorot (VipsImage *in,
              VipsImage **out,
              ...);

Optional arguments:

angle : output VipsAngle the image was rotated by

Look at the exif tags and rotate the image to make it upright. The orientation tag is removed from out to prevent accidental double rotation.

Read angle to find the amount the image was rotated by.

See also: vips_rot().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_zoom ()

int
vips_zoom (VipsImage *in,
           VipsImage **out,
           int xfac,
           int yfac,
           ...);

Zoom an image by repeating pixels. This is fast nearest-neighbour zoom.

See also: vips_affine(), vips_subsample().

Parameters

in

input image

 

out

output image

 

xfac

horizontal scale factor

 

yfac

vertical scale factor

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_subsample ()

int
vips_subsample (VipsImage *in,
                VipsImage **out,
                int xfac,
                int yfac,
                ...);

Optional arguments:

point : turn on point sample mode

Subsample an image by an integer fraction. This is fast, nearest-neighbour shrink.

For small horizontal shrinks, this operation will fetch lines of pixels from in and then subsample that line. For large shrinks it will fetch single pixels.

If point is set, in will always be sampled in points. This can be faster if the previous operations in the pipeline are very slow.

See also: vips_affine(), vips_shrink(), vips_zoom().

Parameters

in

input image

 

out

output image

 

xfac

horizontal shrink factor

 

yfac

vertical shrink factor

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_cast ()

int
vips_cast (VipsImage *in,
           VipsImage **out,
           VipsBandFormat format,
           ...);

Optional arguments:

shift : integer values are shifted

Convert in to format . You can convert between any pair of formats. Floats are truncated (not rounded). Out of range values are clipped.

Casting from complex to real returns the real part.

If shift is TRUE, integer values are shifted up and down. For example, casting from unsigned 8 bit to unsigned 16 bit would shift every value left by 8 bits. The bottom bit is copied into the new bits, so 255 would become 65535.

See also: vips_scale(), vips_complexform(), vips_real(), vips_imag(), vips_cast_uchar(), vips_msb().

Parameters

in

input image

 

out

output image

 

format

format to convert to

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_uchar ()

int
vips_cast_uchar (VipsImage *in,
                 VipsImage **out,
                 ...);

Convert in to VIPS_FORMAT_UCHAR. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_char ()

int
vips_cast_char (VipsImage *in,
                VipsImage **out,
                ...);

Convert in to VIPS_FORMAT_CHAR. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_ushort ()

int
vips_cast_ushort (VipsImage *in,
                  VipsImage **out,
                  ...);

Convert in to VIPS_FORMAT_USHORT. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_short ()

int
vips_cast_short (VipsImage *in,
                 VipsImage **out,
                 ...);

Convert in to VIPS_FORMAT_SHORT. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_uint ()

int
vips_cast_uint (VipsImage *in,
                VipsImage **out,
                ...);

Convert in to VIPS_FORMAT_UINT. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_int ()

int
vips_cast_int (VipsImage *in,
               VipsImage **out,
               ...);

Convert in to VIPS_FORMAT_INT. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_float ()

int
vips_cast_float (VipsImage *in,
                 VipsImage **out,
                 ...);

Convert in to VIPS_FORMAT_FLOAT. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_double ()

int
vips_cast_double (VipsImage *in,
                  VipsImage **out,
                  ...);

Convert in to VIPS_FORMAT_DOUBLE. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_complex ()

int
vips_cast_complex (VipsImage *in,
                   VipsImage **out,
                   ...);

Convert in to VIPS_FORMAT_COMPLEX. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cast_dpcomplex ()

int
vips_cast_dpcomplex (VipsImage *in,
                     VipsImage **out,
                     ...);

Convert in to VIPS_FORMAT_DPCOMPLEX. See vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_scale ()

int
vips_scale (VipsImage *in,
            VipsImage **out,
            ...);

Optional arguments:

log : log scale pixels exp : exponent for log scale

Search the image for the maximum and minimum value, then return the image as unsigned 8-bit, scaled so that the maximum value is 255 and the minimum is zero.

If log is set, transform with log10(1.0 + pow(x, exp )) + .5, then scale so max == 255. By default, exp is 0.25.

See also: vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_msb ()

int
vips_msb (VipsImage *in,
          VipsImage **out,
          ...);

Optional arguments:

band : msb just this band

Turn any integer image to 8-bit unsigned char by discarding all but the most significant byte. Signed values are converted to unsigned by adding 128.

Use band to make a one-band 8-bit image.

This operator also works for LABQ coding.

See also: vips_scale(), vips_cast().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_byteswap ()

int
vips_byteswap (VipsImage *in,
               VipsImage **out,
               ...);

Swap the byte order in an image.

See also: vips_rawload().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_bandjoin ()

int
vips_bandjoin (VipsImage **in,
               VipsImage **out,
               int n,
               ...);

Join a set of images together, bandwise.

If the images have n and m bands, then the output image will have n + m bands, with the first n coming from the first image and the last m from the second.

If the images differ in size, the smaller images are enlarged to match the larger by adding zero pixels along the bottom and right.

The input images are cast up to the smallest common type (see table Smallest common format in

arithmetic).

See also: vips_insert().

Parameters

in

array of input images.

[array length=n][transfer none]

out

output image

 

n

number of input images

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_bandjoin2 ()

int
vips_bandjoin2 (VipsImage *in1,
                VipsImage *in2,
                VipsImage **out,
                ...);

Join a pair of images together, bandwise. See vips_bandjoin().

Parameters

in1

first input image

 

in2

second input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_bandjoin_const ()

int
vips_bandjoin_const (VipsImage *in,
                     VipsImage **out,
                     double *c,
                     int n,
                     ...);

Append a set of constant bands to an image.

See also: vips_bandjoin().

Parameters

in

array of input images.

[array length=n][transfer none]

out

output image

 

c

array of constants to append.

[array length=n]

n

number of constants

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_bandjoin_const1 ()

int
vips_bandjoin_const1 (VipsImage *in,
                      VipsImage **out,
                      double c,
                      ...);

Append a single constant band to an image.

Parameters

in

input image

 

out

output image

 

c

constant to append

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_bandrank ()

int
vips_bandrank (VipsImage **in,
               VipsImage **out,
               int n,
               ...);

Optional arguments:

index : pick this index from list of sorted values

Sorts the images in band-element-wise, then outputs an image in which each band element is selected from the sorted list by the index parameter. For example, if index is zero, then each output band element will be the minimum of all the corresponding input band elements.

By default, index is -1, meaning pick the median value.

It works for any uncoded, non-complex image type. Images are cast up to the smallest common-format.

Any image can have either 1 band or n bands, where n is the same for all the non-1-band images. Single band images are then effectively copied to make n-band images.

Smaller input images are expanded by adding black pixels.

See also: vips_rank().

Parameters

in

array of input images

 

out

output image

 

n

number of input images

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_bandfold ()

int
vips_bandfold (VipsImage *in,
               VipsImage **out,
               ...);

Optional arguments:

factor : fold by this factor

Fold up an image horizontally: width is collapsed into bands. Use factor to set how much to fold by: factor 3, for example, will make the output image three times narrower than the input, and with three times as many bands. By default the whole of the input width is folded up.

See also: vips_csvload(), vips_bandunfold().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_bandunfold ()

int
vips_bandunfold (VipsImage *in,
                 VipsImage **out,
                 ...);

Optional arguments:

factor : unfold by this factor

Unfold image bands into x axis. Use factor to set how much to unfold by: factor 3, for example, will make the output image three times wider than the input, and with one third as many bands. By default, all bands are unfolded.

See also: vips_csvload(), vips_bandfold().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_bandbool ()

int
vips_bandbool (VipsImage *in,
               VipsImage **out,
               VipsOperationBoolean boolean,
               ...);

Perform various boolean operations across the bands of an image. For example, a three-band uchar image operated on with VIPS_OPERATION_BOOLEAN_AND will produce a one-band uchar image where each pixel is the bitwise and of the band elements of the corresponding pixel in the input image.

The output image is the same format as the input image for integer types. Float types are cast to int before processing. Complex types are not supported.

The output image always has one band.

This operation is useful in conjuction with vips_relational(). You can use it to see if all image bands match exactly.

See also: vips_boolean_const().

Parameters

in

left-hand input VipsImage

 

out

output VipsImage

 

boolean

boolean operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_bandand ()

int
vips_bandand (VipsImage *in,
              VipsImage **out,
              ...);

Perform VIPS_OPERATION_BOOLEAN_AND on an image. See vips_bandbool().

Parameters

in

left-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_bandor ()

int
vips_bandor (VipsImage *in,
             VipsImage **out,
             ...);

Perform VIPS_OPERATION_BOOLEAN_OR on an image. See vips_bandbool().

Parameters

in

left-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_bandeor ()

int
vips_bandeor (VipsImage *in,
              VipsImage **out,
              ...);

Perform VIPS_OPERATION_BOOLEAN_EOR on an image. See vips_bandbool().

Parameters

in

left-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_bandmean ()

int
vips_bandmean (VipsImage *in,
               VipsImage **out,
               ...);

This operation writes a one-band image where each pixel is the average of the bands for that pixel in the input image. The output band format is the same as the input band format. Integer types use round-to-nearest averaging.

See also: vips_add(), vips_avg(), vips_recomb()

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_recomb ()

int
vips_recomb (VipsImage *in,
             VipsImage **out,
             VipsImage *m,
             ...);

This operation recombines an image's bands. Each pixel in in is treated as an n-element vector, where n is the number of bands in in , and multipled by the n x m matrix m to produce the m-band image out .

out is always float, unless in is double, in which case out is double too. No complex images allowed.

It's useful for various sorts of colour space conversions.

See also: vips_bandmean().

Parameters

in

input image

 

out

output image

 

m

recombination matrix

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_ifthenelse ()

int
vips_ifthenelse (VipsImage *cond,
                 VipsImage *in1,
                 VipsImage *in2,
                 VipsImage **out,
                 ...);

Optional arguments:

blend : blend smoothly between in1 and in2

This operation scans the condition image cond and uses it to select pixels from either the then image in1 or the else image in2 . Non-zero means in1 , 0 means in2 .

Any image can have either 1 band or n bands, where n is the same for all the non-1-band images. Single band images are then effectively copied to make n-band images.

Images in1 and in2 are cast up to the smallest common format. cond is cast to uchar.

If the images differ in size, the smaller images are enlarged to match the largest by adding zero pixels along the bottom and right.

If blend is TRUE, then values in out are smoothly blended between in1 and in2 using the formula:

out = (cond / 255) * in1 + (1 - cond / 255) * in2

See also: vips_equal().

Parameters

cond

condition VipsImage

 

in1

then VipsImage

 

in2

else VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_flatten ()

int
vips_flatten (VipsImage *in,
              VipsImage **out,
              ...);

Optional arguments:

background : VipsArrayDouble colour for new pixels max_alpha : gdouble, maximum value for alpha

Take the last band of in as an alpha and use it to blend the remaining channels with background .

The alpha channel is 0 - max_alpha , where 1 means 100% image and 0 means 100% background. Non-complex images only. background defaults to zero (black).

max_alpha has the default value 255. You will need to set this to 65535 for images with a 16-bit alpha, or perhaps 1.0 for images with a float alpha.

Useful for flattening PNG images to RGB.

See also: vips_premultiply(), vips_pngload().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_premultiply ()

int
vips_premultiply (VipsImage *in,
                  VipsImage **out,
                  ...);

Optional arguments:

max_alpha : gdouble, maximum value for alpha

Premultiplies any alpha channel. The final band is taken to be the alpha and the bands are transformed as:

  alpha = clip( 0, in[in.bands - 1], @max_alpha ); 
  norm = alpha / @max_alpha; 
  out = [in[0] * norm, ..., in[in.bands - 1] * norm, alpha];
|]

So for an N-band image, the first N - 1 bands are multiplied by the clipped 
and normalised final band, the final band is clipped. 
If there is only a single band, 
the image is passed through unaltered.

The result is
#VIPS_FORMAT_FLOAT unless the input format is #VIPS_FORMAT_DOUBLE, in which
case the output is double as well.

@max_alpha has the default value 255. You will need to set this to 65535
for images with a 16-bit alpha, or perhaps 1.0 for images with a float
alpha. 

Non-complex images only.

See also: vips_unpremultiply(), vips_flatten().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_unpremultiply ()

int
vips_unpremultiply (VipsImage *in,
                    VipsImage **out,
                    ...);

Optional arguments:

max_alpha : gdouble, maximum value for alpha

Unpremultiplies any alpha channel. The final band is taken to be the alpha and the bands are transformed as:

  alpha = (int) clip( 0, in[in.bands - 1], @max_alpha ); 
  norm = (double) alpha / @max_alpha; 
  if( alpha == 0 )
  	out = [0, ..., 0, alpha];
  else
  	out = [in[0] / norm, ..., in[in.bands - 1] / norm, alpha];
|]

So for an N-band image, the first N - 1 bands are divided by the clipped 
and normalised final band, the final band is clipped. 
If there is only a single band, 
the image is passed through unaltered.

The result is
#VIPS_FORMAT_FLOAT unless the input format is #VIPS_FORMAT_DOUBLE, in which
case the output is double as well.

@max_alpha has the default value 255. You will need to set this to 65535
for images with a 16-bit alpha, or perhaps 1.0 for images with a float
alpha. 

Non-complex images only.

See also: vips_premultiply(), vips_flatten().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_falsecolour ()

int
vips_falsecolour (VipsImage *in,
                  VipsImage **out,
                  ...);

Force in to 1 band, 8-bit, then transform to a 3-band 8-bit image with a false colour map. The map is supposed to make small differences in brightness more obvious.

See also: vips_maplut().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_gamma ()

int
vips_gamma (VipsImage *in,
            VipsImage **out,
            ...);

Optional arguments:

exponent : gamma, default 1.0 / 2.4

Calculate in ** (1 / exponent ), normalising to the maximum range of the input type. For float types use 1.0 as the maximum.

See also: vips_identity(), vips_pow_const1(), vips_maplut()

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error

Types and Values

enum VipsExtend

See vips_embed(), vips_conv(), vips_affine() and so on.

When the edges of an image are extended, you can specify how you want the extension done.

VIPS_EXTEND_BLACK --- new pixels are black, ie. all bits are zero.

VIPS_EXTEND_COPY --- each new pixel takes the value of the nearest edge pixel

VIPS_EXTEND_REPEAT --- the image is tiled to fill the new area

VIPS_EXTEND_MIRROR --- the image is reflected and tiled to reduce hash edges

VIPS_EXTEND_WHITE --- new pixels are white, ie. all bits are set

VIPS_EXTEND_BACKGROUND --- colour set from the background property

We have to specify the exact value of each enum member since we have to keep these frozen for back compat with vips7.

See also: vips_embed().

Members

VIPS_EXTEND_BLACK

extend with black (all 0) pixels

 

VIPS_EXTEND_COPY

copy the image edges

 

VIPS_EXTEND_REPEAT

repeat the whole image

 

VIPS_EXTEND_MIRROR

mirror the whole image

 

VIPS_EXTEND_WHITE

extend with white (all bits set) pixels

 

VIPS_EXTEND_BACKGROUND

extend with colour from the background property

 

VIPS_EXTEND_LAST

   

enum VipsDirection

See vips_flip(), vips_join() and so on.

Operations like vips_flip() need to be told whether to flip left-right or top-bottom.

See also: vips_flip(), vips_join().

Members

VIPS_DIRECTION_HORIZONTAL

left-right

 

VIPS_DIRECTION_VERTICAL

top-bottom

 

VIPS_DIRECTION_LAST

   

enum VipsAlign

See vips_join() and so on.

Operations like vips_join() need to be told whether to align images on the low or high coordinate edge, or centre.

See also: vips_join().

Members

VIPS_ALIGN_LOW

align low coordinate edge

 

VIPS_ALIGN_CENTRE

align centre

 

VIPS_ALIGN_HIGH

align high coordinate edge

 

VIPS_ALIGN_LAST

   

enum VipsAngle

See vips_rot() and so on.

Fixed rotate angles.

See also: vips_rot().

Members

VIPS_ANGLE_D0

no rotate

 

VIPS_ANGLE_D90

90 degrees clockwise

 

VIPS_ANGLE_D180

180 degree rotate

 

VIPS_ANGLE_D270

90 degrees anti-clockwise

 

VIPS_ANGLE_LAST

   

enum VipsAngle45

See vips_rot45() and so on.

Fixed rotate angles.

See also: vips_rot45().

Members

VIPS_ANGLE45_D0

no rotate

 

VIPS_ANGLE45_D45

45 degrees clockwise

 

VIPS_ANGLE45_D90

90 degrees clockwise

 

VIPS_ANGLE45_D135

135 degrees clockwise

 

VIPS_ANGLE45_D180

180 degrees

 

VIPS_ANGLE45_D225

135 degrees anti-clockwise

 

VIPS_ANGLE45_D270

90 degrees anti-clockwise

 

VIPS_ANGLE45_D315

45 degrees anti-clockwise

 

VIPS_ANGLE45_LAST

   

See Also

resample
vips-8.2.2/doc/html/libvips-arithmetic.html0000664000175000017500000117073212651721507015646 00000000000000 arithmetic: VIPS Reference Manual

arithmetic

arithmetic — operations which perform pixel arithmetic, trig, log, statistics

Stability Level

Stable, unless otherwise indicated

Functions

int vips_add ()
int vips_sum ()
int vips_subtract ()
int vips_multiply ()
int vips_divide ()
int vips_linear ()
int vips_linear1 ()
int vips_remainder ()
int vips_remainder_const ()
int vips_remainder_const1 ()
int vips_invert ()
int vips_abs ()
int vips_sign ()
int vips_round ()
int vips_floor ()
int vips_ceil ()
int vips_rint ()
int vips_math ()
int vips_sin ()
int vips_cos ()
int vips_tan ()
int vips_asin ()
int vips_acos ()
int vips_atan ()
int vips_exp ()
int vips_exp10 ()
int vips_log ()
int vips_log10 ()
int vips_complex ()
int vips_polar ()
int vips_rect ()
int vips_conj ()
int vips_complex2 ()
int vips_cross_phase ()
int vips_complexget ()
int vips_real ()
int vips_imag ()
int vips_complexform ()
int vips_relational ()
int vips_equal ()
int vips_notequal ()
int vips_less ()
int vips_lesseq ()
int vips_more ()
int vips_moreeq ()
int vips_relational_const ()
int vips_equal_const ()
int vips_notequal_const ()
int vips_less_const ()
int vips_lesseq_const ()
int vips_more_const ()
int vips_moreeq_const ()
int vips_relational_const1 ()
int vips_equal_const1 ()
int vips_notequal_const1 ()
int vips_less_const1 ()
int vips_lesseq_const1 ()
int vips_more_const1 ()
int vips_moreeq_const1 ()
int vips_boolean ()
int vips_andimage ()
int vips_orimage ()
int vips_eorimage ()
int vips_lshift ()
int vips_rshift ()
int vips_boolean_const ()
int vips_andimage_const ()
int vips_orimage_const ()
int vips_eorimage_const ()
int vips_lshift_const ()
int vips_rshift_const ()
int vips_boolean_const1 ()
int vips_andimage_const1 ()
int vips_orimage_const1 ()
int vips_eorimage_const1 ()
int vips_lshift_const1 ()
int vips_rshift_const1 ()
int vips_math2 ()
int vips_pow ()
int vips_wop ()
int vips_math2_const ()
int vips_pow_const ()
int vips_wop_const ()
int vips_math2_const1 ()
int vips_pow_const1 ()
int vips_wop_const1 ()
int vips_avg ()
int vips_deviate ()
int vips_min ()
int vips_max ()
int vips_stats ()
int vips_measure ()
int vips_getpoint ()
int vips_hist_find ()
int vips_hist_find_ndim ()
int vips_hist_find_indexed ()
int vips_hough_line ()
int vips_hough_circle ()
int vips_project ()
int vips_profile ()

Includes

#include <vips/vips.h>

Description

These operations perform pixel arithmetic, that is, they perform an arithmetic operation, such as addition, on every pixel in an image or a pair of images. All (except in a few cases noted below) will work with images of any type or any mixture of types, of any size and of any number of bands.

For binary operations, if the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

In the same way, for operations that take an array constant, such as vips_remainder_const(), you can mix single-element arrays or single-band images freely.

Arithmetic operations try to preserve precision by increasing the number of bits in the output image when necessary. Generally, this follows the ANSI C conventions for type promotion, so multiplying two VIPS_FORMAT_UCHAR images together, for example, produces a VIPS_FORMAT_USHORT image, and taking the vips_cos() of a VIPS_FORMAT_USHORT image produces VIPS_FORMAT_FLOAT image.

For binary arithmetic operations, type promotion occurs in two stages. First, the two input images are cast up to the smallest common format, that is, the type with the smallest range that can represent the full range of both inputs. This conversion can be represented as a table:

Table 3. Smallest common format

in2/in1 uchar char ushort short uint int float double complex double complex
uchar ushort short ushort short uint int float double complex double complex
char short short short short int int float double complex double complex
ushort ushort short ushort short uint int float double complex double complex
short short short short short int int float double complex double complex
uint uint int uint int uint int float double complex double complex
int int int int int int int float double complex double complex
float float float float float float float float double complex double complex
double double double double double double double double double double complex double complex
complex complex complex complex complex complex complex complex double complex complex double complex
double complex double complex double complex double complex double complex double complex double complex double complex double complex double complex double complex

In the second stage, the operation is performed between the two identical types to form the output. The details vary between operations, but generally the principle is that the output type should be large enough to represent the whole range of possible values, except that int never becomes float.

Functions

vips_add ()

int
vips_add (VipsImage *left,
          VipsImage *right,
          VipsImage **out,
          ...);

This operation calculates in1 + in2 and writes the result to out .

If the images differ in size, the smaller image is enlarged to match the larger by adding zero pixels along the bottom and right.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common format (see table Smallest common format in

arithmetic), then the

following table is used to determine the output type:

Table 4. VipsAdd type promotion

input type output type
uchar ushort
char short
ushort uint
short int
uint uint
int int
float float
double double
complex complex
double complex double complex

In other words, the output type is just large enough to hold the whole range of possible values.

Operations on integer images are performed using the processor's vector unit, if possible. Disable this with --vips-novector or IM_NOVECTOR.

See also: vips_subtract(), vips_linear().

Parameters

left

input image

 

right

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_sum ()

int
vips_sum (VipsImage **in,
          VipsImage **out,
          int n,
          ...);

This operation sums all images in in and writes the result to out .

If the images differ in size, the smaller images are enlarged to match the largest by adding zero pixels along the bottom and right.

If the number of bands differs, all but one of the images must have one band. In this case, n-band images are formed from the one-band images by joining n copies of the one-band images together, and then the n-band images are operated upon.

The input images are cast up to the smallest common format (see table Smallest common format in

arithmetic), then the

following table is used to determine the output type:

Table 5. VipsSum type promotion

input type output type
uchar uint
char int
ushort uint
short int
uint uint
int int
float float
double double
complex complex
double complex double complex

In other words, the output type is just large enough to hold the whole range of possible values.

See also: vips_add().

Parameters

in

array of input images

 

out

output image

 

n

number of input images

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_subtract ()

int
vips_subtract (VipsImage *in1,
               VipsImage *in2,
               VipsImage **out,
               ...);

This operation calculates in1 - in2 and writes the result to out .

If the images differ in size, the smaller image is enlarged to match the larger by adding zero pixels along the bottom and right.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common format (see table Smallest common format in

arithmetic), then the

following table is used to determine the output type:

Table 6. VipsSubtract type promotion

input type output type
uchar short
char short
ushort int
short int
uint int
int int
float float
double double
complex complex
double complex double complex

In other words, the output type is just large enough to hold the whole range of possible values.

See also: vips_add(), vips_linear().

Parameters

in1

input image

 

in2

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_multiply ()

int
vips_multiply (VipsImage *left,
               VipsImage *right,
               VipsImage **out,
               ...);

This operation calculates left * right and writes the result to out .

If the images differ in size, the smaller image is enlarged to match the larger by adding zero pixels along the bottom and right.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common format (see table Smallest common format in

arithmetic), then the

following table is used to determine the output type:

Table 7. VipsMultiply type promotion

input type output type
uchar ushort
char short
ushort uint
short int
uint uint
int int
float float
double double
complex complex
double complex double complex

In other words, the output type is just large enough to hold the whole range of possible values.

See also: vips_add(), vips_linear().

Parameters

left

left-hand image

 

right

right-hand image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_divide ()

int
vips_divide (VipsImage *left,
             VipsImage *right,
             VipsImage **out,
             ...);

This operation calculates in1 / in2 and writes the result to out . If any pixels in in2 are zero, the corresponding pixel in out is also zero.

If the images differ in size, the smaller image is enlarged to match the larger by adding zero pixels along the bottom and right.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common format (see table Smallest common format in

arithmetic), then the

following table is used to determine the output type:

Table 8. vips_divide() type promotion

input type output type
uchar float
char float
ushort float
short float
uint float
int float
float float
double double
complex complex
double complex double complex

In other words, the output type is just large enough to hold the whole range of possible values.

See also: vips_multiply(), vips_linear(), vips_pow().

Parameters

left

input image

 

right

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_linear ()

int
vips_linear (VipsImage *in,
             VipsImage **out,
             double *a,
             double *b,
             int n,
             ...);

Optional arguments:

uchar : output uchar pixels

Pass an image through a linear transform, ie. (out = in * a + b ). Output is float for integer input, double for double input, complex for complex input and double complex for double complex input. Set uchar to output uchar pixels.

If the arrays of constants have just one element, that constant is used for all image bands. If the arrays have more than one element and they have the same number of elements as there are bands in the image, then one array element is used for each band. If the arrays have more than one element and the image only has a single band, the result is a many-band image where each band corresponds to one array element.

See also: vips_linear1(), vips_add().

Parameters

in

image to transform

 

out

output image

 

a

array of constants for multiplication.

[array length=n]

b

array of constants for addition.

[array length=n]

n

length of constant arrays

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_linear1 ()

int
vips_linear1 (VipsImage *in,
              VipsImage **out,
              double a,
              double b,
              ...);

Optional arguments:

uchar : output uchar pixels

Run vips_linear() with a single constant.

See also: vips_linear().

Parameters

in

image to transform

 

out

output image

 

a

constant for multiplication

 

b

constant for addition

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_remainder ()

int
vips_remainder (VipsImage *left,
                VipsImage *right,
                VipsImage **out,
                ...);

This operation calculates left % right (remainder after integer division) and writes the result to out . The images may have any non-complex format. For float formats, vips_remainder() calculates in1 - in2 * floor (in1 / in2 ).

If the images differ in size, the smaller image is enlarged to match the larger by adding zero pixels along the bottom and right.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common format (see table Smallest common format in

arithmetic), and that format is the

result type.

See also: vips_remainder_const(), vips_divide(), vips_round().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_remainder_const ()

int
vips_remainder_const (VipsImage *in,
                      VipsImage **out,
                      double *c,
                      int n,
                      ...);

This operation calculates in % c (remainder after division by an array of constants) and writes the result to out . The image may have any non-complex format. For float formats, vips_remainder_const() calculates in - c * floor (in / c ).

If the array of constants has just one element, that constant is used for all image bands. If the array has more than one element and they have the same number of elements as there are bands in the image, then one array element is used for each band. If the arrays have more than one element and the image only has a single band, the result is a many-band image where each band corresponds to one array element.

See also: vips_remainder(), vips_divide(), vips_round().

Parameters

in

input image

 

out

output image

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_remainder_const1 ()

int
vips_remainder_const1 (VipsImage *in,
                       VipsImage **out,
                       double c,
                       ...);

This operation calculates in % c (remainder after division by a constant) and writes the result to out . The image may have any non-complex format. For float formats, vips_remainder_const() calculates in - c * floor (in / c ).

If the array of constants has just one element, that constant is used for all image bands. If the array has more than one element and they have the same number of elements as there are bands in the image, then one array element is used for each band. If the arrays have more than one element and the image only has a single band, the result is a many-band image where each band corresponds to one array element.

See also: vips_remainder(), vips_divide(), vips_round().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_invert ()

int
vips_invert (VipsImage *in,
             VipsImage **out,
             ...);

For unsigned formats, this operation calculates (max - in ), eg. (255 - in ) for uchar. For signed and float formats, this operation calculates (-1 in ).

For complex images, only the real part is inverted. See also vips_conj().

See also: vips_linear().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_abs ()

int
vips_abs (VipsImage *in,
          VipsImage **out,
          ...);

This operation finds the absolute value of an image. It does a copy for unsigned integer types, negate for negative values in signed integer types, fabs(3) for float types, and calculates modulus for complex types.

See also: vips_sign().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_sign ()

int
vips_sign (VipsImage *in,
           VipsImage **out,
           ...);

Finds the unit vector in the direction of the pixel value. For non-complex images, it returns a signed char image with values -1, 0, and 1 for negative, zero and positive pixels. For complex images, it returns a complex normalised to length 1.

See also: vips_abs().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_round ()

int
vips_round (VipsImage *in,
            VipsImage **out,
            VipsOperationRound round,
            ...);

Round to an integral value.

Copy for integer types, round float and complex types.

The format of out is always the same as in , so you may wish to cast to an integer format afterwards.

See also: vips_cast()

Parameters

in

input VipsImage

 

out

output VipsImage

 

round

VipsOperationRound rounding operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_floor ()

int
vips_floor (VipsImage *in,
            VipsImage **out,
            ...);

Round to an integral value with VIPS_OPERATION_ROUND_FLOOR. See vips_round().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_ceil ()

int
vips_ceil (VipsImage *in,
           VipsImage **out,
           ...);

Round to an integral value with VIPS_OPERATION_ROUND_CEIL. See vips_round().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_rint ()

int
vips_rint (VipsImage *in,
           VipsImage **out,
           ...);

Round to an integral value with VIPS_OPERATION_ROUND_RINT. See vips_round().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_math ()

int
vips_math (VipsImage *in,
           VipsImage **out,
           VipsOperationMath math,
           ...);

Perform various functions in -lm, the maths library, on images.

Angles are expressed in degrees. The output type is float unless the input is double, in which case the output is double.

Non-complex images only.

See also: vips_math2().

Parameters

in

input VipsImage

 

out

output VipsImage

 

math

math operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_sin ()

int
vips_sin (VipsImage *in,
          VipsImage **out,
          ...);

Perform VIPS_OPERATION_MATH_SIN on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cos ()

int
vips_cos (VipsImage *in,
          VipsImage **out,
          ...);

Perform VIPS_OPERATION_MATH_COS on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_tan ()

int
vips_tan (VipsImage *in,
          VipsImage **out,
          ...);

Perform VIPS_OPERATION_MATH_TAN on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_asin ()

int
vips_asin (VipsImage *in,
           VipsImage **out,
           ...);

Perform VIPS_OPERATION_MATH_ASIN on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_acos ()

int
vips_acos (VipsImage *in,
           VipsImage **out,
           ...);

Perform VIPS_OPERATION_MATH_ACOS on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_atan ()

int
vips_atan (VipsImage *in,
           VipsImage **out,
           ...);

Perform VIPS_OPERATION_MATH_ATAN on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_exp ()

int
vips_exp (VipsImage *in,
          VipsImage **out,
          ...);

Perform VIPS_OPERATION_MATH_EXP on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_exp10 ()

int
vips_exp10 (VipsImage *in,
            VipsImage **out,
            ...);

Perform VIPS_OPERATION_MATH_EXP10 on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_log ()

int
vips_log (VipsImage *in,
          VipsImage **out,
          ...);

Perform VIPS_OPERATION_MATH_LOG on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_log10 ()

int
vips_log10 (VipsImage *in,
            VipsImage **out,
            ...);

Perform VIPS_OPERATION_MATH_LOG10 on an image. See vips_math().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_complex ()

int
vips_complex (VipsImage *in,
              VipsImage **out,
              VipsOperationComplex cmplx,
              ...);

Perform various operations on complex images.

Angles are expressed in degrees. The output type is complex unless the input is double or dpcomplex, in which case the output is dpcomplex.

Parameters

in

input VipsImage

 

out

output VipsImage

 

cmplx

complex operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_polar ()

int
vips_polar (VipsImage *in,
            VipsImage **out,
            ...);

Perform VIPS_OPERATION_COMPLEX_POLAR on an image. See vips_complex().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_rect ()

int
vips_rect (VipsImage *in,
           VipsImage **out,
           ...);

Perform VIPS_OPERATION_COMPLEX_RECT on an image. See vips_complex().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_conj ()

int
vips_conj (VipsImage *in,
           VipsImage **out,
           ...);

Perform VIPS_OPERATION_COMPLEX_CONJ on an image. See vips_complex().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_complex2 ()

int
vips_complex2 (VipsImage *left,
               VipsImage *right,
               VipsImage **out,
               VipsOperationComplex2 cmplx,
               ...);

Perform various binary operations on complex images.

Angles are expressed in degrees. The output type is complex unless the input is double or dpcomplex, in which case the output is dpcomplex.

Parameters

left

input VipsImage

 

right

input VipsImage

 

out

output VipsImage

 

cmplx

complex2 operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_cross_phase ()

int
vips_cross_phase (VipsImage *left,
                  VipsImage *right,
                  VipsImage **out,
                  ...);

Perform VIPS_OPERATION_COMPLEX2_CROSS_PHASE on an image. See vips_complex2().

Parameters

left

input VipsImage

 

right

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_complexget ()

int
vips_complexget (VipsImage *in,
                 VipsImage **out,
                 VipsOperationComplexget get,
                 ...);

Get components of complex images.

The output type is the same as the input type, except VIPS_FORMAT_COMPLEX becomes VIPS_FORMAT_FLOAT and VIPS_FORMAT_DPCOMPLEX becomes VIPS_FORMAT_DOUBLE.

Parameters

in

input VipsImage

 

out

output VipsImage

 

get

complex operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_real ()

int
vips_real (VipsImage *in,
           VipsImage **out,
           ...);

Perform VIPS_OPERATION_COMPLEXGET_REAL on an image. See vips_complexget().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_imag ()

int
vips_imag (VipsImage *in,
           VipsImage **out,
           ...);

Perform VIPS_OPERATION_COMPLEXGET_IMAG on an image. See vips_complexget().

Parameters

in

input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_complexform ()

int
vips_complexform (VipsImage *left,
                  VipsImage *right,
                  VipsImage **out,
                  ...);

Compose two real images to make a complex image. If either left or right are VIPS_FORMAT_DOUBLE, out is VIPS_FORMAT_DPCOMPLEX. Otherwise out is VIPS_FORMAT_COMPLEX. left becomes the real component of out and right the imaginary.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

See also: vips_complexget().

Parameters

left

input image

 

right

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_relational ()

int
vips_relational (VipsImage *left,
                 VipsImage *right,
                 VipsImage **out,
                 VipsOperationRelational relational,
                 ...);

Perform various relational operations on pairs of images.

The output type is always uchar, with 0 for FALSE and 255 for TRUE.

Less-than and greater-than for complex images compare the modulus.

If the images differ in size, the smaller image is enlarged to match the larger by adding zero pixels along the bottom and right.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common format (see table Smallest common format in

arithmetic).

To decide if pixels match exactly, that is have the same value in every band, use vips_bandbool() after this operation to AND or OR image bands together.

See also: vips_boolean(), vips_bandbool(), vips_relational_const().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

relational

relational operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_equal ()

int
vips_equal (VipsImage *left,
            VipsImage *right,
            VipsImage **out,
            ...);

Perform VIPS_OPERATION_RELATIONAL_EQUAL on a pair of images. See vips_relational().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_notequal ()

int
vips_notequal (VipsImage *left,
               VipsImage *right,
               VipsImage **out,
               ...);

Perform VIPS_OPERATION_RELATIONAL_NOTEQ on a pair of images. See vips_relational().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_less ()

int
vips_less (VipsImage *left,
           VipsImage *right,
           VipsImage **out,
           ...);

Perform VIPS_OPERATION_RELATIONAL_LESS on a pair of images. See vips_relational().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_lesseq ()

int
vips_lesseq (VipsImage *left,
             VipsImage *right,
             VipsImage **out,
             ...);

Perform VIPS_OPERATION_RELATIONAL_LESSEQ on a pair of images. See vips_relational().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_more ()

int
vips_more (VipsImage *left,
           VipsImage *right,
           VipsImage **out,
           ...);

Perform VIPS_OPERATION_RELATIONAL_MORE on a pair of images. See vips_relational().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_moreeq ()

int
vips_moreeq (VipsImage *left,
             VipsImage *right,
             VipsImage **out,
             ...);

Perform VIPS_OPERATION_RELATIONAL_MOREEQ on a pair of images. See vips_relational().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_relational_const ()

int
vips_relational_const (VipsImage *in,
                       VipsImage **out,
                       VipsOperationRelational relational,
                       double *c,
                       int n,
                       ...);

Perform various relational operations on an image and an array of constants.

The output type is always uchar, with 0 for FALSE and 255 for TRUE.

If the array of constants has just one element, that constant is used for all image bands. If the array has more than one element and they have the same number of elements as there are bands in the image, then one array element is used for each band. If the arrays have more than one element and the image only has a single band, the result is a many-band image where each band corresponds to one array element.

See also: vips_boolean(), vips_relational().

Parameters

in

input image

 

out

output image

 

relational

relational operation to perform

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_equal_const ()

int
vips_equal_const (VipsImage *in,
                  VipsImage **out,
                  double *c,
                  int n,
                  ...);

Perform VIPS_OPERATION_RELATIONAL_EQUAL on an image and a constant. See vips_relational_const().

Parameters

in

input VipsImage

 

out

output VipsImage

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_notequal_const ()

int
vips_notequal_const (VipsImage *in,
                     VipsImage **out,
                     double *c,
                     int n,
                     ...);

Perform VIPS_OPERATION_RELATIONAL_NOTEQ on an image and a constant. See vips_relational_const().

Parameters

in

input VipsImage

 

out

output VipsImage

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_less_const ()

int
vips_less_const (VipsImage *in,
                 VipsImage **out,
                 double *c,
                 int n,
                 ...);

Perform VIPS_OPERATION_RELATIONAL_LESS on an image and a constant. See vips_relational_const().

Parameters

in

input VipsImage

 

out

output VipsImage

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_lesseq_const ()

int
vips_lesseq_const (VipsImage *in,
                   VipsImage **out,
                   double *c,
                   int n,
                   ...);

Perform VIPS_OPERATION_RELATIONAL_LESSEQ on an image and a constant. See vips_relational_const().

Parameters

in

input VipsImage

 

out

output VipsImage

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_more_const ()

int
vips_more_const (VipsImage *in,
                 VipsImage **out,
                 double *c,
                 int n,
                 ...);

Perform VIPS_OPERATION_RELATIONAL_MORE on an image and a constant. See vips_relational_const().

Parameters

in

input VipsImage

 

out

output VipsImage

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_moreeq_const ()

int
vips_moreeq_const (VipsImage *in,
                   VipsImage **out,
                   double *c,
                   int n,
                   ...);

Perform VIPS_OPERATION_RELATIONAL_MOREEQ on an image and a constant. See vips_relational_const().

Parameters

in

input VipsImage

 

out

output VipsImage

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_relational_const1 ()

int
vips_relational_const1 (VipsImage *in,
                        VipsImage **out,
                        VipsOperationRelational relational,
                        double c,
                        ...);

Perform various relational operations on an image and a constant. See vips_relational_const().

See also: vips_boolean(), vips_relational().

Parameters

in

input image

 

out

output image

 

relational

relational operation to perform

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_equal_const1 ()

int
vips_equal_const1 (VipsImage *in,
                   VipsImage **out,
                   double c,
                   ...);

Perform VIPS_OPERATION_RELATIONAL_EQUAL on an image and a constant. See vips_relational_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_notequal_const1 ()

int
vips_notequal_const1 (VipsImage *in,
                      VipsImage **out,
                      double c,
                      ...);

Perform VIPS_OPERATION_RELATIONAL_NOTEQ on an image and a constant. See vips_relational_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_less_const1 ()

int
vips_less_const1 (VipsImage *in,
                  VipsImage **out,
                  double c,
                  ...);

Perform VIPS_OPERATION_RELATIONAL_LESS on an image and a constant. See vips_relational_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_lesseq_const1 ()

int
vips_lesseq_const1 (VipsImage *in,
                    VipsImage **out,
                    double c,
                    ...);

Perform VIPS_OPERATION_RELATIONAL_LESSEQ on an image and a constant. See vips_relational_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_more_const1 ()

int
vips_more_const1 (VipsImage *in,
                  VipsImage **out,
                  double c,
                  ...);

Perform VIPS_OPERATION_RELATIONAL_MORE on an image and a constant. See vips_relational_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_moreeq_const1 ()

int
vips_moreeq_const1 (VipsImage *in,
                    VipsImage **out,
                    double c,
                    ...);

Perform VIPS_OPERATION_RELATIONAL_MOREEQ on an image and a constant. See vips_relational_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_boolean ()

int
vips_boolean (VipsImage *left,
              VipsImage *right,
              VipsImage **out,
              VipsOperationBoolean boolean,
              ...);

Perform various boolean operations on pairs of images.

The output image is the same format as the upcast input images for integer types. Float types are cast to int before processing. Complex types are not supported.

If the images differ in size, the smaller image is enlarged to match the larger by adding zero pixels along the bottom and right.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common format (see table Smallest common format in

arithmetic).

See also: vips_boolean_const().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

boolean

boolean operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_andimage ()

int
vips_andimage (VipsImage *left,
               VipsImage *right,
               VipsImage **out,
               ...);

Perform VIPS_OPERATION_BOOLEAN_AND on a pair of images. See vips_boolean().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_orimage ()

int
vips_orimage (VipsImage *left,
              VipsImage *right,
              VipsImage **out,
              ...);

Perform VIPS_OPERATION_BOOLEAN_OR on a pair of images. See vips_boolean().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_eorimage ()

int
vips_eorimage (VipsImage *left,
               VipsImage *right,
               VipsImage **out,
               ...);

Perform VIPS_OPERATION_BOOLEAN_EOR on a pair of images. See vips_boolean().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_lshift ()

int
vips_lshift (VipsImage *left,
             VipsImage *right,
             VipsImage **out,
             ...);

Perform VIPS_OPERATION_BOOLEAN_LSHIFT on a pair of images. See vips_boolean().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_rshift ()

int
vips_rshift (VipsImage *left,
             VipsImage *right,
             VipsImage **out,
             ...);

Perform VIPS_OPERATION_BOOLEAN_RSHIFT on a pair of images. See vips_boolean().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_boolean_const ()

int
vips_boolean_const (VipsImage *in,
                    VipsImage **out,
                    VipsOperationBoolean boolean,
                    double *c,
                    int n,
                    ...);

Perform various boolean operations on an image against an array of constants.

The output type is always uchar, with 0 for FALSE and 255 for TRUE.

If the array of constants has just one element, that constant is used for all image bands. If the array has more than one element and they have the same number of elements as there are bands in the image, then one array element is used for each band. If the arrays have more than one element and the image only has a single band, the result is a many-band image where each band corresponds to one array element.

See also: vips_boolean(), vips_boolean_const1().

Parameters

in

input image

 

out

output image

 

boolean

boolean operation to perform

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_andimage_const ()

int
vips_andimage_const (VipsImage *in,
                     VipsImage **out,
                     double *c,
                     int n,
                     ...);

Perform VIPS_OPERATION_BOOLEAN_AND on an image and an array of constants. See vips_boolean_const().

See also: vips_boolean(), vips_boolean_const1().

Parameters

in

input image

 

out

output image

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_orimage_const ()

int
vips_orimage_const (VipsImage *in,
                    VipsImage **out,
                    double *c,
                    int n,
                    ...);

Perform VIPS_OPERATION_BOOLEAN_OR on an image and an array of constants. See vips_boolean_const().

See also: vips_boolean(), vips_boolean_const1().

Parameters

in

input image

 

out

output image

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_eorimage_const ()

int
vips_eorimage_const (VipsImage *in,
                     VipsImage **out,
                     double *c,
                     int n,
                     ...);

Perform VIPS_OPERATION_BOOLEAN_EOR on an image and an array of constants. See vips_boolean_const().

See also: vips_boolean(), vips_boolean_const1().

Parameters

in

input image

 

out

output image

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_lshift_const ()

int
vips_lshift_const (VipsImage *in,
                   VipsImage **out,
                   double *c,
                   int n,
                   ...);

Perform VIPS_OPERATION_BOOLEAN_LSHIFT on an image and an array of constants. See vips_boolean_const().

See also: vips_boolean(), vips_boolean_const1().

Parameters

in

input image

 

out

output image

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_rshift_const ()

int
vips_rshift_const (VipsImage *in,
                   VipsImage **out,
                   double *c,
                   int n,
                   ...);

Perform VIPS_OPERATION_BOOLEAN_LSHIFT on an image and an array of constants. See vips_boolean_const().

See also: vips_boolean(), vips_boolean_const1().

Parameters

in

input image

 

out

output image

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_boolean_const1 ()

int
vips_boolean_const1 (VipsImage *in,
                     VipsImage **out,
                     VipsOperationBoolean boolean,
                     double c,
                     ...);

Perform various boolean operations on an image with a single constant. See vips_boolean_const().

See also: vips_boolean(), vips_boolean_const().

Parameters

in

input image

 

out

output image

 

boolean

boolean operation to perform

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_andimage_const1 ()

int
vips_andimage_const1 (VipsImage *in,
                      VipsImage **out,
                      double c,
                      ...);

Perform VIPS_OPERATION_BOOLEAN_AND on an image and a constant. See vips_boolean_const1().

See also: vips_boolean(), vips_boolean_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_orimage_const1 ()

int
vips_orimage_const1 (VipsImage *in,
                     VipsImage **out,
                     double c,
                     ...);

Perform VIPS_OPERATION_BOOLEAN_OR on an image and a constant. See vips_boolean_const1().

See also: vips_boolean(), vips_boolean_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_eorimage_const1 ()

int
vips_eorimage_const1 (VipsImage *in,
                      VipsImage **out,
                      double c,
                      ...);

Perform VIPS_OPERATION_BOOLEAN_EOR on an image and a constant. See vips_boolean_const1().

See also: vips_boolean(), vips_boolean_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_lshift_const1 ()

int
vips_lshift_const1 (VipsImage *in,
                    VipsImage **out,
                    double c,
                    ...);

Perform VIPS_OPERATION_BOOLEAN_LSHIFT on an image and a constant. See vips_boolean_const1().

See also: vips_boolean(), vips_boolean_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_rshift_const1 ()

int
vips_rshift_const1 (VipsImage *in,
                    VipsImage **out,
                    double c,
                    ...);

Perform VIPS_OPERATION_BOOLEAN_RSHIFT on an image and a constant. See vips_boolean_const1().

See also: vips_boolean(), vips_boolean_const().

Parameters

in

input image

 

out

output image

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_math2 ()

int
vips_math2 (VipsImage *left,
            VipsImage *right,
            VipsImage **out,
            VipsOperationMath2 math2,
            ...);

This operation calculates a 2-ary maths operation on a pair of images and writes the result to out . The images may have any non-complex format. out is float except in the case that either of left or right are double, in which case out is also double.

It detects division by zero, setting those pixels to zero in the output. Beware: it does this silently!

If the images differ in size, the smaller image is enlarged to match the larger by adding zero pixels along the bottom and right.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The two input images are cast up to the smallest common format (see table Smallest common format in

arithmetic), and that format is the

result type.

See also: vips_math2_const().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

math2

math operation to perform

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_pow ()

int
vips_pow (VipsImage *left,
          VipsImage *right,
          VipsImage **out,
          ...);

Perform VIPS_OPERATION_MATH2_POW on a pair of images. See vips_math2().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_wop ()

int
vips_wop (VipsImage *left,
          VipsImage *right,
          VipsImage **out,
          ...);

Perform VIPS_OPERATION_MATH2_WOP on a pair of images. See vips_math2().

Parameters

left

left-hand input VipsImage

 

right

right-hand input VipsImage

 

out

output VipsImage

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_math2_const ()

int
vips_math2_const (VipsImage *in,
                  VipsImage **out,
                  VipsOperationMath2 math2,
                  double *c,
                  int n,
                  ...);

This operation calculates various 2-ary maths operations on an image and an array of constants and writes the result to out . The image may have any non-complex format. out is float except in the case that in is double, in which case out is also double.

It detects division by zero, setting those pixels to zero in the output. Beware: it does this silently!

If the array of constants has just one element, that constant is used for all image bands. If the array has more than one element and they have the same number of elements as there are bands in the image, then one array element is used for each band. If the arrays have more than one element and the image only has a single band, the result is a many-band image where each band corresponds to one array element.

See also: vips_math2(), vips_math().

Parameters

in

input image

 

out

output image

 

math2

math operation to perform

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_pow_const ()

int
vips_pow_const (VipsImage *in,
                VipsImage **out,
                double *c,
                int n,
                ...);

Perform VIPS_OPERATION_MATH2_POW on an image and a constant. See vips_math2_const().

Parameters

in

left-hand input VipsImage

 

out

output VipsImage

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_wop_const ()

int
vips_wop_const (VipsImage *in,
                VipsImage **out,
                double *c,
                int n,
                ...);

Perform VIPS_OPERATION_MATH2_WOP on an image and a constant. See vips_math2_const().

Parameters

in

left-hand input VipsImage

 

out

output VipsImage

 

c

array of constants

 

n

number of constants in c

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_math2_const1 ()

int
vips_math2_const1 (VipsImage *in,
                   VipsImage **out,
                   VipsOperationMath2 math2,
                   double c,
                   ...);

This operation calculates various 2-ary maths operations on an image and a constant. See vips_math2_const().

Parameters

in

input image

 

out

output image

 

math2

math operation to perform

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_pow_const1 ()

int
vips_pow_const1 (VipsImage *in,
                 VipsImage **out,
                 double c,
                 ...);

Perform VIPS_OPERATION_MATH2_POW on an image and a constant. See vips_math2_const().

Parameters

in

left-hand input VipsImage

 

out

output VipsImage

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_wop_const1 ()

int
vips_wop_const1 (VipsImage *in,
                 VipsImage **out,
                 double c,
                 ...);

Perform VIPS_OPERATION_MATH2_WOP on an image and a constant. See vips_math2_const().

Parameters

in

left-hand input VipsImage

 

out

output VipsImage

 

c

constant

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_avg ()

int
vips_avg (VipsImage *in,
          double *out,
          ...);

This operation finds the average value in an image. It operates on all bands of the input image: use vips_stats() if you need to calculate an average for each band. For complex images, return the average modulus.

See also: vips_stats(), vips_bandmean(), vips_deviate(), vips_rank()

Parameters

in

input VipsImage

 

out

output pixel average

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_deviate ()

int
vips_deviate (VipsImage *in,
              double *out,
              ...);

This operation finds the standard deviation of all pixels in in . It operates on all bands of the input image: use vips_stats() if you need to calculate an average for each band.

Non-complex images only.

See also: vips_avg(), vips_stats()..

Parameters

in

input VipsImage

 

out

output pixel standard deviation

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_min ()

int
vips_min (VipsImage *in,
          double *out,
          ...);

Optional arguments:

x : horizontal position of minimum y : vertical position of minimum size : number of minima to find out_array : return array of minimum values x_array : corresponding horizontal positions y_array : corresponding vertical positions

This operation finds the minimum value in an image.

By default it finds the single smallest value. If size is set >1, it will find the size smallest values. It will stop searching early if has found enough values.

It operates on all bands of the input image: use vips_stats() if you need to find an minimum for each band.

For complex images, this operation finds the minimum modulus.

You can read out the position of the minimum with x and y . You can read out arrays of the values and positions of the top size minima with out_array , x_array and y_array . These values are returned sorted from smallest to largest.

See also: vips_min(), vips_stats().

Parameters

in

input VipsImage

 

out

output pixel minimum

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_max ()

int
vips_max (VipsImage *in,
          double *out,
          ...);

Optional arguments:

x : horizontal position of maximum y : vertical position of maximum size : number of maxima to find out_array : return array of maximum values x_array : corresponding horizontal positions y_array : corresponding vertical positions

This operation finds the maximum value in an image.

By default it finds the single largest value. If size is set >1, it will find the size largest values. It will stop searching early if has found enough values.

It operates on all bands of the input image: use vips_stats() if you need to find an maximum for each band.

For complex images, this operation finds the maximum modulus.

You can read out the position of the maximum with x and y . You can read out arrays of the values and positions of the top size maxima with out_array , x_array and y_array . These values are returned sorted from largest to smallest.

See also: vips_min(), vips_stats().

Parameters

in

input VipsImage

 

out

output pixel maximum

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_stats ()

int
vips_stats (VipsImage *in,
            VipsImage **out,
            ...);

Find many image statistics in a single pass through the data. out is a one-band VIPS_FORMAT_DOUBLE image of at least 10 columns by n + 1 (where n is number of bands in image in ) rows. Columns are statistics, and are, in order: minimum, maximum, sum, sum of squares, mean, standard deviation, x coordinate of minimum, y coordinate of minimum, x coordinate of maximum, y coordinate of maximum. Later versions of vips_stats() may add more columns.

Row 0 has statistics for all bands together, row 1 has stats for band 1, and so on.

See also: vips_avg(), vips_min().

Parameters

in

image to scan

 

out

image of statistics

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_measure ()

int
vips_measure (VipsImage *in,
              VipsImage **out,
              int h,
              int v,
              ...);

Optional arguments:

left : area of image containing chart top : area of image containing chart width : area of image containing chart height : area of image containing chart

Analyse a grid of colour patches, producing an array of patch averages. The mask has a row for each measured patch and a column for each image band. The operations issues a warning if any patch has a deviation more than 20% of the mean. Only the central 50% of each patch is averaged.

If the chart does not fill the whole image, use the optional left , top , width , height arguments to indicate the position of the chart.

See also: vips_avg(), vips_deviate().

Parameters

in

image to measure

 

out

array of measurements

 

h

patches across chart

 

v

patches down chart

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_getpoint ()

int
vips_getpoint (VipsImage *in,
               double **vector,
               int *n,
               int x,
               int y,
               ...);

Reads a single pixel on an image.

The pixel values are returned in vector , the length of the array in n . You must free the array with g_free() when you are done with it.

See also: vips_draw_point().

Parameters

in

image to read from

 

vector

array length=n: output pixel value here

 

n

length of output vector

 

x

position to read

 

y

position to read

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, or -1 on error.


vips_hist_find ()

int
vips_hist_find (VipsImage *in,
                VipsImage **out,
                ...);

Optional arguments:

band : band to equalise

Find the histogram of in . Find the histogram for band band (producing a one-band histogram), or for all bands (producing an n-band histogram) if band is -1.

in is cast to u8 or u16. out is always u32.

See also: vips_hist_find_ndim(), vips_hist_find_indexed().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_find_ndim ()

int
vips_hist_find_ndim (VipsImage *in,
                     VipsImage **out,
                     ...);

Optional arguments:

bins : number of bins to make on each axis

Make a one, two or three dimensional histogram of a 1, 2 or 3 band image. Divide each axis into bins bins .. ie. output is 1 x bins, bins x bins, or bins x bins x bins bands. bins defaults to 10.

Images are cast to uchar or ushort before histogramming.

See also: vips_hist_find(), vips_hist_find_indexed().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hist_find_indexed ()

int
vips_hist_find_indexed (VipsImage *in,
                        VipsImage *index,
                        VipsImage **out,
                        ...);

Make a histogram of in , but use image index to pick the bins. In other words, element zero in out contains the sum of all the pixels in in whose corresponding pixel in index is zero.

index must have just one band and be u8 or u16. in must be non-complex. out always has the same size and format as in .

This operation is useful in conjunction with vips_labelregions(). You can use it to find the centre of gravity of blobs in an image, for example.

See also: vips_hist_find(), vips_labelregions().

Parameters

in

input image

 

index

input index image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hough_line ()

int
vips_hough_line (VipsImage *in,
                 VipsImage **out,
                 ...);

Optional arguments:

width : horizontal size of parameter space height : vertical size of parameter space

Find the line Hough transform for in . in must have one band. out has one band, with pixels being the number of votes for that line. The X dimension of out is the line angle, the Y dimension is the distance of the line from the origin.

Use width height to set the size of the parameter space image (out ), that is, how accurate the line determination should be.

See also: vips_hough_circle().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_hough_circle ()

int
vips_hough_circle (VipsImage *in,
                   VipsImage **out,
                   ...);

Optional arguments:

scale : scale down dimensions by this much min_radius : smallest radius to search for max_radius : largest radius to search for

Find the circular Hough transform of an image. in must be one band, with non-zero pixels for image edges. out is three-band, with the third channel representing the detected circle radius. The operation scales the number of votes by circle circumference so circles of differing size are given equal weight.

Use max_radius and min_radius to set the range of radii to search for.

Use scale to set how in coordinates are scaled to out coordinates. A scale of 3, for example, will make out 1/3rd of the width and height of in , and reduce the number of radii tested (and hence the number of bands int out ) by a factor of three as well.

See also: vips_hough_line().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_project ()

int
vips_project (VipsImage *in,
              VipsImage **columns,
              VipsImage **rows,
              ...);

Find the horizontal and vertical projections of an image, ie. the sum of every row of pixels, and the sum of every column of pixels. The output format is uint, int or double, depending on the input format.

Non-complex images only.

See also: vips_hist_find(), vips_profile().

Parameters

in

input image

 

columns

sums of columns

 

rows

sums of rows

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_profile ()

int
vips_profile (VipsImage *in,
              VipsImage **columns,
              VipsImage **rows,
              ...);

vips_profile() searches inward from the edge of in and finds the first non-zero pixel. Pixels in columns have the distance from the top edge to the first non-zero pixel in that column, rows has the distance from the left edge to the first non-zero pixel in that row.

See also: vips_project(), vips_hist_find().

Parameters

in

input image

 

columns

distances from top edge

 

rows

distances from left edge

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error

Types and Values

enum VipsOperationMath

See also: vips_math().

Members

VIPS_OPERATION_MATH_SIN

sin(), angles in degrees

 

VIPS_OPERATION_MATH_COS

cos(), angles in degrees

 

VIPS_OPERATION_MATH_TAN

tan(), angles in degrees

 

VIPS_OPERATION_MATH_ASIN

asin(), angles in degrees

 

VIPS_OPERATION_MATH_ACOS

acos(), angles in degrees

 

VIPS_OPERATION_MATH_ATAN

atan(), angles in degrees

 

VIPS_OPERATION_MATH_LOG

log base e

 

VIPS_OPERATION_MATH_LOG10

log base 10

 

VIPS_OPERATION_MATH_EXP

e to the something

 

VIPS_OPERATION_MATH_EXP10

10 to the something

 

VIPS_OPERATION_MATH_LAST

   

enum VipsOperationMath2

See also: vips_math().

Members

VIPS_OPERATION_MATH2_POW

pow( left, right )

 

VIPS_OPERATION_MATH2_WOP

pow( right, left )

 

VIPS_OPERATION_MATH2_LAST

   

enum VipsOperationRound

See also: vips_round().

Members

VIPS_OPERATION_ROUND_RINT

round to nearest

 

VIPS_OPERATION_ROUND_CEIL

the smallest integral value not less than

 

VIPS_OPERATION_ROUND_FLOOR

largest integral value not greater than

 

VIPS_OPERATION_ROUND_LAST

   

enum VipsOperationRelational

See also: vips_relational().

Members

VIPS_OPERATION_RELATIONAL_EQUAL

==

 

VIPS_OPERATION_RELATIONAL_NOTEQ

!=

 

VIPS_OPERATION_RELATIONAL_LESS

<

 

VIPS_OPERATION_RELATIONAL_LESSEQ

<=

 

VIPS_OPERATION_RELATIONAL_MORE

 

VIPS_OPERATION_RELATIONAL_MOREEQ

=

 

VIPS_OPERATION_RELATIONAL_LAST

   

enum VipsOperationBoolean

See also: vips_boolean().

Members

VIPS_OPERATION_BOOLEAN_AND

&

 

VIPS_OPERATION_BOOLEAN_OR

|

 

VIPS_OPERATION_BOOLEAN_EOR

^

 

VIPS_OPERATION_BOOLEAN_LSHIFT

>

 

VIPS_OPERATION_BOOLEAN_RSHIFT

<<

 

VIPS_OPERATION_BOOLEAN_LAST

   

enum VipsOperationComplex

See also: vips_complex().

Members

VIPS_OPERATION_COMPLEX_POLAR

convert to polar coordinates

 

VIPS_OPERATION_COMPLEX_RECT

convert to rectangular coordinates

 

VIPS_OPERATION_COMPLEX_CONJ

complex conjugate

 

VIPS_OPERATION_COMPLEX_LAST

   

enum VipsOperationComplex2

See also: vips_complex2().

Members

VIPS_OPERATION_COMPLEX2_CROSS_PHASE

convert to polar coordinates

 

VIPS_OPERATION_COMPLEX2_LAST

   

enum VipsOperationComplexget

See also: vips_complexget().

Members

VIPS_OPERATION_COMPLEXGET_REAL

get real component

 

VIPS_OPERATION_COMPLEXGET_IMAG

get imaginary component

 

VIPS_OPERATION_COMPLEXGET_LAST

   
vips-8.2.2/doc/html/right-insensitive.png0000644000175000017500000000035112651721507015324 00000000000000‰PNG  IHDRóÿa°IDATxc|`ß¾}ÿøðÞ½{¥É2¨ñÔû÷ï× Ù€;v\5äýž={lI6dÛ¶mì@Í+¡†üâ`’ Yµj3Ð “¡†üz-•¬0’4à/ÿÒ@N¬äA ø2€›Y€fC½ð ÈŽ%ZóæÍ›¹€š6@5æC´æC‡‰5„j~Äæ¤Ú)¨æ@g‘•”o RaÁ‚”¡Ë³øIEND®B`‚vips-8.2.2/doc/html/libvips-freqfilt.html0000664000175000017500000004020312651721507015315 00000000000000 freqfilt: VIPS Reference Manual

freqfilt

freqfilt — fourier transforms and frequency-domin filters

Stability Level

Stable, unless otherwise indicated

Functions

int vips_fwfft ()
int vips_invfft ()
int vips_freqmult ()
int vips_spectrum ()
int vips_phasecor ()

Includes

#include <vips/vips.h>

Description

To and from Fourier space, filter in Fourier space, convert Fourier-space images to a displayable form.

Functions

vips_fwfft ()

int
vips_fwfft (VipsImage *in,
            VipsImage **out,
            ...);

Transform an image to Fourier space.

VIPS uses the fftw Fourier Transform library. If this library was not available when VIPS was configured, these functions will fail.

See also: vips_invfft().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_invfft ()

int
vips_invfft (VipsImage *in,
             VipsImage **out,
             ...);

Optional arguments:

real : only output the real part

Transform an image from Fourier space to real space. The result is complex. If you are OK with a real result, set real , it's quicker.

VIPS uses the fftw Fourier Transform library. If this library was not available when VIPS was configured, these functions will fail.

See also: vips_fwfft().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_freqmult ()

int
vips_freqmult (VipsImage *in,
               VipsImage *mask,
               VipsImage **out,
               ...);

Multiply in by mask in Fourier space.

in is transformed to Fourier space, multipled with mask , then transformed back to real space. If in is already a complex image, just multiply then inverse transform.

See also: vips_invfft(), vips_mask_ideal().

Parameters

in

input image

 

mask

mask image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_spectrum ()

int
vips_spectrum (VipsImage *in,
               VipsImage **out,
               ...);

Make a displayable (ie. 8-bit unsigned int) power spectrum.

If in is non-complex, it is transformed to Fourier space. Then the absolute value is passed through vips_scale() in log mode, and vips_wrap().

See also: vips_fwfft(), vips_scale(), vips_wrap().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_phasecor ()

int
vips_phasecor (VipsImage *in1,
               VipsImage *in2,
               VipsImage **out,
               ...);

Convert the two input images to Fourier space, calculate phase-correlation, back to real space.

See also: vips_fwfft(), vips_cross_phase(),

Parameters

in1

first input image

 

in2

second input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.

Types and Values

See Also

image
vips-8.2.2/doc/html/up.png0000644000175000017500000000027312651721507012300 00000000000000‰PNG  IHDRóÿa‚IDATxc FA37‘«9ˆÿCq©š}ø7ÿƒâß`1"+ÿ„Úœ Åÿ¡b®„4ñG¨†.$ñn¨ØG°@ˆŸA.øÿÿ?#LÊ^bBÕ(`3àTÁA æ@—„Š‚ª9…°Þñ1 ÄåD¨ÜI¨ZvˆÐ(̵*ö$ØIEND®B`‚vips-8.2.2/doc/html/annotation-glossary.html0000664000175000017500000001102612651721507016047 00000000000000 Annotation Glossary: VIPS Reference Manual

Annotation Glossary

A

allow-none

NULL is OK, both for passing and for returning.

array

Parameter points to an array of items.

E

element-type

Generics and defining elements of containers and arrays.

O

out

Parameter for returning results. Default is transfer full.

out caller-allocates

Out parameter, where caller must allocate storage.

S

scope async

The callback is valid until first called.

scope call

The callback is valid only during the call to the method.

skip

Exposed in C code, not necessarily available in other languages.

Stable

The intention of a Stable interface is to enable arbitrary third parties to develop applications to these interfaces, release them, and have confidence that they will run on all minor releases of the product (after the one in which the interface was introduced, and within the same major release). Even at a major release, incompatible changes are expected to be rare, and to have strong justifications.

T

transfer full

Free data after the code is done.

transfer none

Don't free data after the code is done.

vips-8.2.2/doc/html/libvips-convolution.html0000664000175000017500000007073712651721507016077 00000000000000 convolution: VIPS Reference Manual

convolution

convolution — convolve and correlate images

Stability Level

Stable, unless otherwise indicated

Functions

int vips_conv ()
int vips_compass ()
int vips_convsep ()
int vips_sharpen ()
int vips_gaussblur ()
int vips_spcor ()
int vips_fastcor ()

Types and Values

Includes

#include <vips/vips.h>

Description

These operations convolve an image in some way, or are operations based on simple convolution, or are useful with convolution.

Functions

vips_conv ()

int
vips_conv (VipsImage *in,
           VipsImage **out,
           VipsImage *mask,
           ...);

Optional arguments:

precision : calculation accuracy layers : number of layers for approximation cluster : cluster lines closer than this distance

Convolution.

Perform a convolution of in with mask . Each output pixel is calculated as sigma[i]{pixel[i] * mask[i]} / scale + offset, where scale and offset are part of mask .

If precision is VIPS_PRECISION_INTEGER then the convolution is performed with integer arithmetic and the output image always has the same VipsBandFormat as the input image.

Convolutions on unsigned 8-bit images are calculated with the processor's vector unit, if possible. Disable this with --vips-novector or IM_NOVECTOR.

If precision is VIPS_PRECISION_FLOAT then the convolution is performed with floating-point arithmetic. The output image is always VIPS_FORMAT_FLOAT unless in is VIPS_FORMAT_DOUBLE, in which case out is also VIPS_FORMAT_DOUBLE.

If precision is VIPS_PRECISION_APPROXIMATE then the output image always has the same VipsBandFormat as the input image.

Larger values for layers give more accurate results, but are slower. As layers approaches the mask radius, the accuracy will become close to exact convolution and the speed will drop to match. For many large masks, such as Gaussian, n_layers need be only 10% of this value and accuracy will still be good.

Smaller values of cluster will give more accurate results, but be slower and use more memory. 10% of the mask radius is a good rule of thumb.

Parameters

in

input image

 

out

output image

 

mask

convolve with this mask

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_compass ()

int
vips_compass (VipsImage *in,
              VipsImage **out,
              VipsImage *mask,
              ...);

vips_convsep ()

int
vips_convsep (VipsImage *in,
              VipsImage **out,
              VipsImage *mask,
              ...);

Optional arguments:

precision : calculation accuracy layers : number of layers for approximation cluster : cluster lines closer than this distance

Perform a separable convolution of in with mask . See vips_conv() for a detailed description.

The mask must be 1xn or nx1 elements.

The image is convolved twice: once with mask and then again with mask rotated by 90 degrees. This is much faster for certain types of mask (gaussian blur, for example) than doing a full 2D convolution.

See also: vips_conv(), vips_gaussmat().

Parameters

in

input image

 

out

output image

 

mask

convolution mask

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_sharpen ()

int
vips_sharpen (VipsImage *in,
              VipsImage **out,
              ...);

Optional arguments:

radius : how large a mask to use x1 : flat/jaggy threshold y2 : maximum amount of brightening y3 : maximum amount of darkening m1 : slope for flat areas m2 : slope for jaggy areas

Selectively sharpen the L channel of a LAB image. The input image is transformed to VIPS_INTERPRETATION_LABS.

The operation performs a gaussian blur of radius radius and subtracts from in to generate a high-frequency signal. This signal is passed through a lookup table formed from the five parameters and added back to in .

The lookup table is formed like this:

                     ^
                  y2 |- - - - - -----------
                     |         / 
                     |        / slope m2
                     |    .../    
             -x1     | ...   |    
 -------------------...---------------------->
             |   ... |      x1           
             |... slope m1
             /       |
            / m2     |
           /         |
          /          |
         /           |
        /            |
 ______/ _ _ _ _ _ _ | -y3
                     |

For printing, we recommend the following settings (the defaults):

  radius == 3
  x1 == 1.5
  y2 == 20         (don't brighten by more than 20 L*)
  y3 == 50         (can darken by up to 50 L*)

  m1 == 1          (some sharpening in flat areas)
  m2 == 2          (more sharpening in jaggy areas)

If you want more or less sharpening, we suggest you just change the m1 and m2 parameters.

The radius parameter changes the width of the fringe and can be adjusted according to the output printing resolution. As an approximate guideline, use 1 for 4 pixels/mm (CRT display resolution), 2 for 8 pixels/mm, 3 for 12 pixels/mm and 4 for 16 pixels/mm (300 dpi == 12 pixels/mm). These figures refer to the image raster, not the half-tone resolution.

See also: vips_conv().

Parameters

in

input image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_gaussblur ()

int
vips_gaussblur (VipsImage *in,
                VipsImage **out,
                double sigma,
                ...);

Optional arguments:

precision : VipsPrecision for blur, default VIPS_PRECISION_INTEGER min_ampl : minimum amplitude, default 0.2

This operator runs vips_gaussmat() and vips_convsep() for you on an image. Set min_ampl smaller to generate a larger, more accurate mask. Set sigma larger to make the blur more blurry.

See also: vips_gaussmat(), vips_convsep().

Parameters

in

input image

 

out

output image

 

sigma

how large a mask to use

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error.


vips_spcor ()

int
vips_spcor (VipsImage *in,
            VipsImage *ref,
            VipsImage **out,
            ...);

Calculate a correlation surface.

ref is placed at every position in in and the correlation coefficient calculated. The output image is always float.

The output image is the same size as the input. Extra input edge pixels are made by copying the existing edges outwards.

The correlation coefficient is calculated as:

         sumij (ref(i,j)-mean(ref))(inkl(i,j)-mean(inkl))
c(k,l) = ------------------------------------------------
         sqrt(sumij (ref(i,j)-mean(ref))^2) *
                     sqrt(sumij (inkl(i,j)-mean(inkl))^2)

where inkl is the area of in centred at position (k,l).

from Niblack "An Introduction to Digital Image Processing", Prentice/Hall, pp 138.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The output image is always float, unless either of the two inputs is double, in which case the output is also double.

See also: vips_fastcor().

Parameters

in

input image

 

ref

reference image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error


vips_fastcor ()

int
vips_fastcor (VipsImage *in,
              VipsImage *ref,
              VipsImage **out,
              ...);

Calculate a fast correlation surface.

ref is placed at every position in in and the sum of squares of differences calculated.

The output image is the same size as the input. Extra input edge pixels are made by copying the existing edges outwards.

If the number of bands differs, one of the images must have one band. In this case, an n-band image is formed from the one-band image by joining n copies of the one-band image together, and then the two n-band images are operated upon.

The output type is uint if both inputs are integer, float if both are float or complex, and double if either is double or double complex. In other words, the output type is just large enough to hold the whole range of possible values.

See also: vips_spcor().

Parameters

in

input image

 

ref

reference image

 

out

output image

 

...

NULL-terminated list of optional named arguments

 

Returns

0 on success, -1 on error

Types and Values

enum VipsCombine

How to combine values.

Members

VIPS_COMBINE_MAX

take the maximum of the possible values

 

VIPS_COMBINE_SUM

sum all the values

 

VIPS_COMBINE_LAST

   
vips-8.2.2/doc/html/extending.html0000664000175000017500000005351112651721507014026 00000000000000 Extending VIPS: VIPS Reference Manual

Extending VIPS

Extending — How to add operations to VIPS

Introduction

This section runs quickly through adding a simple operator to VIPS. For more information, see VipsOperation and VipsRegion. A good starting point for a new operation is a similar one in the VIPS library.

All VIPS operations are subclasses of VipsOperation, which in turn subclasses VipsObject and then GObject. You add an operation to VIPS by defining a new subclass of VipsOperation and arranging for its class_init() to be called, perhaps by calling its get_type() function.

The class and object structures

First you need to define a new object struct and a new class struct.

typedef struct _Negative {
  VipsOperation parent_instance;

  VipsImage *in;
  VipsImage *out;

  int image_max;

} Negative;

typedef struct _NegativeClass {
  VipsOperationClass parent_class;

  /* No new class members needed for this op.
   */

} NegativeClass;

This operation will find the photographic negative of an unsigned 8-bit image, optionally letting you specify the value which the pixels "pivot" about. It doesn't need any class members (ie. values common to all operations of this type), so the second struct is empty. See the source to vips_invert() for a more complete version of this operation that's actually in the library.

GObject has a handy macro to write some of the boilerplate for you.

G_DEFINE_TYPE( Negative, negative, VIPS_TYPE_OPERATION );

G_DEFINE_TYPE() defines a function called negative_get_type(), which registers this new class and returns its GType (a pointer-sized integer). negative_get_type() in turn needs two functions, negative_init(), to initialise a new instance, and negative_class_init(), to initialise a new class.

Class and object initialisation

negative_init() is very simple, it just sets the default value for our optional parameter.

static void
negative_init( Negative *negative )
{
  negative->image_max = 255;
}

negative_class_init() is more complicated: it has to set various fields in various superclasses and define the operation's parameters.

static void
negative_class_init( NegativeClass *class )
{
  GObjectClass *gobject_class = G_OBJECT_CLASS( class );
  VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class );

  gobject_class->set_property = vips_object_set_property;
  gobject_class->get_property = vips_object_get_property;

  object_class->nickname = "negative";
  object_class->description = "photographic negative";
  object_class->build = negative_build;

  VIPS_ARG_IMAGE( class, "in", 1, 
    "Input", 
    "Input image",
    VIPS_ARGUMENT_REQUIRED_INPUT,
    G_STRUCT_OFFSET( Negative, in ) );

  VIPS_ARG_IMAGE( class, "out", 2, 
    "Output", 
    "Output image",
    VIPS_ARGUMENT_REQUIRED_OUTPUT, 
    G_STRUCT_OFFSET( Negative, out ) );

  VIPS_ARG_INT( class, "image_max", 4, 
    "Image maximum", 
    "Maximum value in image: pivot about this",
    VIPS_ARGUMENT_OPTIONAL_INPUT,
    G_STRUCT_OFFSET( Negative, image_max ),
    0, 255, 255 );
}

In GObject, it needs to set the getters and setters for this class. vips has a generic get/set system, so any subclass of VipsObject needs to use the vips ones.

In VipsObject, it needs to set the operation nickname and description, and set a build function (see below). nickname is used to refer to this operation in the API, description is used to explain this operation to users and will be translated into their language.

Finally, it needs to define the arguments the constructor for this class takes. There are a set of handy macros for doing this, see VIPS_ARG_INT() and friends.

The first few parameters are always the same and mean: class pointer for argument, argument name, argument priority (bindings expect required arguments in order of priority), long argument name (this one is internationalised and displayed to users), description (again, users can see this), some flags describing the argument, and finally the position of the member in the struct.

Integer arguments take three more values: the minimum, maximum and default value for the argument.

The build() function

The build function is the thing VipsObject calls during object construction, after all arguments have been supplied and before the object is used. It has two roles: to verify that arguments are correct, and then to construct the object. After build(), the object is expected to be ready for use.

static int
negative_build( VipsObject *object )
{
  VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object );
  Negative *negative = (Negative *) object;

  if( VIPS_OBJECT_CLASS( negative_parent_class )->build( object ) )
    return( -1 );

  if( vips_check_uncoded( class->nickname, negative->in ) ||
    vips_check_format( class->nickname, negative->in, VIPS_FORMAT_UCHAR ) )
    return( -1 );

  g_object_set( object, "out", vips_image_new(), NULL ); 

  if( vips_image_pipelinev( negative->out, 
    VIPS_DEMAND_STYLE_THINSTRIP, negative->in, NULL ) )
    return( -1 );

  if( vips_image_generate( negative->out, 
    vips_start_one, 
    negative_generate, 
    vips_stop_one, 
    negative->in, negative ) )
    return( -1 );

  return( 0 );
}

negative_build() first chains up to the superclass: this will check that all input arguments have been supplied and are sane.

Next, it adds its own checks. This is a demo operation, so we just work for uncoded, unsigned 8-bit images. There are a lot of convenience functions like vips_check_format(), see the docs.

Next, it creates the output image. This needs to be set with g_object_set() so that vips can see that it has been assigned. vips will also handle the reference counting for you.

vips_image_pipelinev() links our new image onto the input image and notes that this operation prefers to work in lines. You can request other input geometries, see VipsDemandStyle.

The geometry hint is just a hint, an operation needs to be able to supply any size VipsRegion on request. If you must have a certain size request, you can put a cache in the pipeline after your operation, see vips_linecache() and vips_tilecache(). You can also make requests to your operation ordered, see vips_sequential().

Finally, vips_image_generate() attaches a set of callbacks to the output image to generate chunks of it on request. vips_start_one() and vips_stop_one() are convenience functions that make the input region for you, see below.

The generate() function

The generate() function does the actual image processing. negative_generate() (of type VipsGenerateFn, supplied to vips_image_generate() above) is called whenever some pixels of our output image are required.

static int
negative_generate( VipsRegion *or, 
  void *vseq, void *a, void *b, gboolean *stop )
{
  /* The area of the output region we have been asked to make.
   */
  VipsRect *r = &or->valid;

  /* The sequence value ... the thing returned by vips_start_one().
   */
  VipsRegion *ir = (VipsRegion *) vseq;

  VipsImage *in = (VipsImage *) a;
  Negative *negative = (Negative *) b;
  int line_size = r->width * negative->in->Bands; 

  int x, y;

  /* Request matching part of input region.
   */
  if( vips_region_prepare( ir, r ) )
    return( -1 );

  for( y = 0; y < r->height; y++ ) {
    unsigned char *p = (unsigned char *)
      VIPS_REGION_ADDR( ir, r->left, r->top + y ); 
    unsigned char *q = (unsigned char *)
      VIPS_REGION_ADDR( or, r->left, r->top + y ); 

    for( x = 0; x < line_size; x++ ) 
      q[x] = negative->image_max - p[x];
  }

  return( 0 );
}

This has to calculate a section of the output image. The output VipsRegion, or, contains a VipsRect called valid which is the area needing calculation. This call to negative_generate() must somehow make this part of or contain pixel data.

vseq is the sequence value. This is the per-thread state for this generate, created (in this example) by vips_start_one(). In this simple case it's just a VipsRegion defined on the input image. If you need more per-thread state you can write your own start and stop functions and have a struct you create and pass as a sequence value. There are plenty of examples in the VIPS source code, see vips_rank().

a and b are the last two arguments to vips_image_generate() above. stop is a bool pointer you can set to stop computation early. vips_min() on an unsigned int image, for example, will set stop as soon as it sees a zero, and will not scan the entire image.

The first thing negative_generate() does is use vips_region_prepare() to ask for the corresponding pixels from the input image. Operations which do coordinate transforms or which need an area of input for each output point will need to calculate a new rect before calling vips_region_prepare().

Finally, it can calculate some pixels. negative_generate() loops over the valid area of the output and calls VIPS_REGION_ADDR() for each line. This macro is reasonaly quick, but it's best not to call it for each pixel. Once per line is fine though.

Adding to VIPS

To add the operation to vips, just call negative_get_type(). You can include the source in your program, or use GModule to make a binary plugin that will be loaded by libvips at startup. There are some example plugins available.

You can then use negative from any of the vips interfaces. For example, in Python you'd use it like this:

out = in.negative(image_max = 128)

From the command-line it'd look like this:

$ vips negative in.png out.tif --image-max 128

And from C like this:

VipsImage *in;
VipsImage *out;
if( vips_call( "negative", in, &out, "image_max", 128, NULL ) )
  ... error

Unfortunately that will do almost no compile-time type checking, so all vips operations have a tiny extra wrapper to add a bit of safety. For example:

static int 
negative( VipsImage *in, VipsImage **out, ... )
{
  va_list ap;
  int result;

  va_start( ap, out );
  result = vips_call_split( "negative", ap, in, out );
  va_end( ap );

  return( result );
}

And now you can write:

if( negative( in, &out, "image_max", 128, NULL ) )
  ... error

and it's at least a bit safer.

Other types of operation

Change the _build() function to make other types of operation.

Use vips_image_generate() with vips_start_many() to make operations which demand pixels from more than one image at once, such as image plus image.

Use vips_sink() instead of vips_image_generate() to loop over an image and calculate a value. vips uses this for the statistics operations, like vips_avg().

Use vips_image_wio_input() to get an entire image into memory so you can read it with a pointer. This will obviously not scale well to very large images, but some operations, like FFTs or flood-fill, need the whole image to be available at once.

Make area operations, like filters, by enlarging the VipsRect that _generate() is given before calling vips_region_prepare(). You can enlarge the input image, so that the output image is the same size as the original input, by using vips_embed() within the _build() function.

Make things like flips and rotates by making larger changes to the VipsRect in _generate().

Make zero-copy operations, like vips_insert(), with vips_region_region().

vips-8.2.2/doc/html/libvips-VipsOperation.html0000664000175000017500000014163312651721507016314 00000000000000 VipsOperation: VIPS Reference Manual

VipsOperation

VipsOperation — the VIPS operation base object class

Stability Level

Stable, unless otherwise indicated

Types and Values

Includes

#include <vips/vips.h>

Description

The VipsOperation class and associated types and macros.

VipsOperation is the base class for all operations in libvips. It builds on VipsObject to provide the introspection and command-line interface to libvips.

It also maintains a cache of recent operations. See below.

vips_call(), vips_call_split() and vips_call_split_option_string() are used by vips to implement the C API. They can execute any VipsOperation, passing in a set of required and optional arguments. Normally you would not use these functions directly: every operation has a tiny wrapper function which provides type-safety for the required arguments. For example, vips_embed() is defined as:

int
vips_embed( VipsImage *in, VipsImage **out, 
  int x, int y, int width, int height, ... )
{
  va_list ap;
  int result;

  va_start( ap, height );
  result = vips_call_split( "embed", ap, in, out, x, y, width, height );
  va_end( ap );

  return( result );
}

Use vips_call_argv() to run any vips operation from a command-line style argc/argv array. This is the thing used by the vips main program to implement the vips command-line interface.

VipsOperation and reference counting

After calling a VipsOperation you are responsible for unreffing any output objects. For example, consider:

VipsImage *im = ...;
VipsImage *t1; 

if (vips_invert (im, &t1, NULL)) 
  error ..

This will invert im and return a new VipsImage, t1 . As the caller of vips_invert(), you are responsible for t1 and must unref it when you no longer need it. If vips_invert() fails, no t1 is returned and you don't need to do anything.

If you don't need to use im for another operation, you can unref im immediately after the call. If im is needed to calculate t1 , vips_invert() will add a ref to im and automatically drop it when t1 is unreffed.

Consider running two operations, one after the other. You could write:

VipsImage *im = ...;
VipsImage *t1, *t2;

if (vips_invert (im, &t1, NULL)) {
  g_object_unref (im);
  return -1;
}
g_object_unref (im);

if (vips_flip (t1, &t2, VIPS_DIRECTION_HORIZONTAL, NULL)) {
  g_object_unref (t1);
  return -1;
}
g_object_unref (t1);

This is correct, but rather long-winded. libvips provides a handy thing to make a vector of auto-freeing object references. You can write this as:

VipsObject *parent = ...;
VipsImage *im = ...;
VipsImage *t = (VipsImage **) vips_object_local_array (parent, 2);

if (vips_invert (im, &t[0], NULL) ||
  vips_flip (t[0], &t[1], VIPS_DIRECTION_HORIZONTAL, NULL))
  return -1;

where parent is some enclosing object which will be unreffed when this task is complete. vips_object_local_array() makes an array of VipsObject (or VipsImage, in this case) where when parent is freed, all non-NULL VipsObject in the array are also unreffed.

The VipsOperation cache

Because all VipsObject are immutable, they can be cached. The cache is very simple to use: instead of calling vips_object_build(), call vips_cache_operation_build(). This function calculates a hash from the operations's input arguments and looks it up in table of all recent operations. If there's a hit, the new operation is unreffed, the old operation reffed, and the old operation returned in place of the new one.

The cache size is controlled with vips_cache_set_max() and friends.

Functions

VipsOperationBuildFn ()

gboolean
(*VipsOperationBuildFn) (VipsObject *object);

vips_operation_get_flags ()

VipsOperationFlags
vips_operation_get_flags (VipsOperation *operation);

Returns the set of flags for this operation.

Parameters

operation

operation to fetch flags from

 

Returns

0 on success, or -1 on error.


vips_operation_class_print_usage ()

void
vips_operation_class_print_usage (VipsOperationClass *operation_class);

Print a usage message for the operation to stdout.

[skip]

Parameters

operation_class

class to print usage for

 

vips_operation_invalidate ()

void
vips_operation_invalidate (VipsOperation *operation);

vips_operation_call_valist ()

int
vips_operation_call_valist (VipsOperation *operation,
                            va_list ap);

vips_operation_new ()

VipsOperation *
vips_operation_new (const char *name);

Return a new VipsOperation with the specified nickname. Useful for language bindings.

You'll need to set any arguments and build the operation before you can use it. See vips_call() for a higher-level way to make new operations.

Parameters

name

nickname of operation to create

 

Returns

the new operation.

[transfer full]


vips_call_required_optional ()

int
vips_call_required_optional (VipsOperation **operation,
                             va_list required,
                             va_list optional);

This is the main entry point for the C and C++ varargs APIs. operation is executed, supplying required and optional arguments.

Beware, this can change operation to point at an old, cached one.

Parameters

operation

the operation to execute

 

required

va_list of required arguments

 

optional

NULL-terminated va_list of name / value pairs

 

Returns

0 on success, -1 on error


vips_call ()

int
vips_call (const char *operation_name,
           ...);

vips_call() calls the named operation, passing in required arguments and then setting any optional ones from the remainder of the arguments as a set of name/value pairs.

For example, vips_embed() takes six required arguments, in , out , x , y , width , height , and has two optional arguments, extend and background . You can run it with vips_call() like this:

VipsImage *in = ...
VipsImage *out;

if( vips_call( "embed", in, &out, 10, 10, 100, 100,
	"extend", VIPS_EXTEND_COPY,
	NULL ) )
	... error

Normally of course you'd just use the vips_embed() wrapper function and get type-safety for the required arguments.

See also: vips_call_split(), vips_call_options().

Parameters

operation_name

name of operation to call

 

...

required args, then a NULL-terminated list of argument/value pairs

 

Returns

0 on success, -1 on error


vips_call_split ()

int
vips_call_split (const char *operation_name,
                 va_list optional,
                 ...);

vips_call_split_option_string ()

int
vips_call_split_option_string (const char *operation_name,
                               const char *option_string,
                               va_list optional,
                               ...);

vips_call_options ()

void
vips_call_options (GOptionGroup *group,
                   VipsOperation *operation);

vips_call_argv ()

int
vips_call_argv (VipsOperation *operation,
                int argc,
                char **argv);

vips_cache_drop_all ()

void
vips_cache_drop_all (void);

Drop the whole operation cache, handy for leak tracking. Also called automatically on vips_shutdown().


vips_cache_operation_lookup ()

VipsOperation *
vips_cache_operation_lookup (VipsOperation *operation);

Look up an unbuilt operation in the cache. If we get a hit, ref and return the old operation. If there's no hit, return NULL.

Parameters

operation

pointer to operation to lookup.

[transfer none]

Returns

the cache hit, if any.

[transfer full]


vips_cache_operation_add ()

void
vips_cache_operation_add (VipsOperation *operation);

Add a built operation to the cache. The cache will ref the operation.

Parameters

operation

pointer to operation to add.

[transfer none]

vips_cache_operation_buildp ()

int
vips_cache_operation_buildp (VipsOperation **operation);

Look up operation in the cache. If we get a hit, unref operation , ref the old one and return that through the argument pointer.

If we miss, build and add operation .

[skip]

Parameters

operation

pointer to operation to lookup

 

Returns

0 on success, or -1 on error.


vips_cache_operation_build ()

VipsOperation *
vips_cache_operation_build (VipsOperation *operation);

A binding-friendly version of vips_cache_operation_buildp().

After calling this, operation has the same ref count as when it went in, and the result must be freed with vips_object_unref_outputs() and g_object_unref().

Parameters

operation

operation to lookup.

[transfer none]

Returns

The built operation.

[transfer full]


vips_cache_print ()

void
vips_cache_print (void);

Print the whole operation cache to stdout. Handy for debugging.


vips_cache_set_max ()

void
vips_cache_set_max (int max);

Set the maximum number of operations we keep in cache.

Parameters

max

maximum number of operation to cache

 

vips_cache_set_max_mem ()

void
vips_cache_set_max_mem (size_t max_mem);

Set the maximum amount of tracked memory we allow before we start dropping cached operations. See vips_tracked_get_mem().

See also: vips_tracked_get_mem().

Parameters

max_mem

maximum amount of tracked memory we use

 

vips_cache_get_max ()

int
vips_cache_get_max (void);

Get the maximum number of operations we keep in cache.

Returns

the maximum number of operations we keep in cache


vips_cache_get_size ()

int
vips_cache_get_size (void);

Get the current number of operations in cache.

Returns

get the current number of operations in cache.


vips_cache_get_max_mem ()

size_t
vips_cache_get_max_mem (void);

Get the maximum amount of tracked memory we allow before we start dropping cached operations. See vips_tracked_get_mem().

See also: vips_tracked_get_mem().

Returns

the maximum amount of tracked memory we allow


vips_cache_get_max_files ()

int
vips_cache_get_max_files (void);

Get the maximum number of tracked files we allow before we start dropping cached operations. See vips_tracked_get_files().

See also: vips_tracked_get_files().

Returns

the maximum number of tracked files we allow


vips_cache_set_max_files ()

void
vips_cache_set_max_files (int max_files);

Set the maximum number of tracked files we allow before we start dropping cached operations. See vips_tracked_get_files().

See also: vips_tracked_get_files().

Parameters

max_files

max open files we allow

 

vips_cache_set_dump ()

void
vips_cache_set_dump (gboolean dump);

Handy for debugging. Print the operation cache to stdout just before exit.

See also: vips_cache_set_trace().

Parameters

dump

if TRUE, dump the operation cache on exit

 

vips_cache_set_trace ()

void
vips_cache_set_trace (gboolean trace);

Handy for debugging. Print operation cache actions to stdout as we run.

See also: vips_cache_set_dump().

Parameters

trace

if TRUE, trace the operation cache

 

Types and Values

enum VipsOperationFlags

Flags we associate with an operation.

VIPS_OPERATION_SEQUENTIAL means that the operation works like vips_conv(): it can process images top-to-bottom with only small non-local references.

Every scan-line must be requested, you are not allowed to skip ahead, but as a special case, the very first request can be for a region not at the top of the image. In this case, the first part of the image will be read and discarded

VIPS_OPERATION_SEQUENTIAL_UNBUFFERED means that the operation works like vips_copy(): it can process images top-to-bottom and makes no non-local references.

Every scan-line must be requested, you are not allowed to skip ahead, but as a special case, the very first request can be for a region not at the top of the image. In this case, the first part of the image will be read and discarded

VIPS_OPERATION_NOCACHE means that the operation must not be cached by vips.

VIPS_OPERATION_DEPRECATED means this is an old operation kept in vips for compatibility only and should be hidden from users.

Members

VIPS_OPERATION_NONE

no flags

 

VIPS_OPERATION_SEQUENTIAL

can work sequentially with a small buffer

 

VIPS_OPERATION_SEQUENTIAL_UNBUFFERED

can work sequentially with no buffer

 

VIPS_OPERATION_NOCACHE

must not be cached

 

VIPS_OPERATION_DEPRECATED

a compatibility thing

 

See Also

object
vips-8.2.2/doc/html/home.png0000644000175000017500000000025112651721507012600 00000000000000‰PNG  IHDRóÿapIDATxc¦àÿÿÿŒ@*ˆoñ NbfbõÛñY9hø&ûàӨěAŠ àÝ@¬¬‘ˆ;€ø\aü ˆg±È€s A2ñ{É4ä¯E |’0: ¤`„p%Õa‚;(òÔfªt6ñ¯œçIEND®B`‚vips-8.2.2/doc/using-threads.xml0000664000175000017500000001373712530402247013505 00000000000000 VIPS and threads 3 VIPS Library Using VIPS VIPS and threading Introduction This section tries to summarise the rules for threaded programs using libvips. Generally, libvips is threaded and thread-safe, with a few exceptions. Images On startup, you need to call VIPS_INIT() single-threaded. After that, you can freely create images in any thread and read them in any other thread. See the example at the end of this chapter. Note that results can also be shared between threads for you by the vips operation cache. The exception is the drawing operators, such as vips_draw_circle(). These operations modify their image argument so you can't call them on the same image from more than one thread. Reading from an image while another thread is writing to it with one of the draw operations will obviously also fail. When libvips calculates an image, by default it will use as many threads as you have CPU cores. Use vips_concurrency_set() to change this. Error handling libvips has a single error code (-1 or %NULL) returned by all functions on error. Error messages are not returned, instead they are logged in a single global error buffer shared by all threads, see vips_error_buffer(). This makes error handling very simple but the obvious downside is that because error returns and error messages are separate when you detect an error return you can't be sure that what's in the error buffer is the message that matches your error. The simplest way to handle this is to present the whole error log to the user on the next interaction and leave it to them to decide what action caused the failure. Using #VipsRegion between threads #VipsImage objects are immutable and can be shared between threads very simply. However the lower-level #VipsRegion object used to implement #VipsImage (see Extending VIPS) is mutable and you can only use a #VipsRegion from one thread at once. In fact it's worse than that: to reduce locking, #VipsRegion keeps a lot of state in per-thread storage. If you want to create a region in one thread and use it in another, you have to first tag the region as unowned from the creating thread with vips__region_no_ownership(), then in the recieving thread take ownership with vips__region_take_ownership(). See the source for operations like vips_tilecache() if you're curious how this works. libvips includes a set of sanity checks for region ownership and will fail if you don't pass ownership correctly. Example This example runs many vips_resize() in parallel from many threads. VIPS and threads example /* Read from many threads. * * Compile with: * * gcc -g -Wall soak.c `pkg-config vips --cflags --libs` * * Run with: * * rm -rf x * mkdir x * for i in {0..10}; do ./a.out ~/pics/k2.jpg; done * */ #include <stdio.h> #include <glib.h> #include <vips/vips.h> /* How many pings we run at once. */ #define NUM_IN_PARALLEL (50) /* Number of tests we do in total. */ #define TOTAL_TESTS (NUM_IN_PARALLEL * 20) /* Workers queue up on this. */ GMutex allocation_lock; /* Our set of threads. */ GThread *workers[NUM_IN_PARALLEL]; /* Number of calls so far. */ int n_calls = 0; /* Our test function. This is called by NUM_IN_PARALLEL threads a total of * TOTAL_TESTS times. */ static int test (const char *filename) { VipsImage *im, *x; char output_file[256]; snprintf (output_file, 256, "x/tmp-%p.jpg", g_thread_self ()); if (!(im = vips_image_new_from_file (filename, "access", VIPS_ACCESS_SEQUENTIAL_UNBUFFERED, NULL))) return (-1); if (vips_resize (im, &x, 0.1, NULL)) { g_object_unref (im); return (-1); } g_object_unref (im); im = x; if (vips_image_write_to_file (im, output_file, NULL)) { g_object_unref (im); return (-1); } g_object_unref (im); return (0); } /* What we run as a thread. */ static void * worker (void *data) { const char *filename = (const char *) data; for (;;) { gboolean done; done = FALSE; g_mutex_lock (&allocation_lock); n_calls += 1; if (n_calls > TOTAL_TESTS) done = TRUE; g_mutex_unlock (&allocation_lock); if (done) break; if (test (filename)) vips_error_exit (NULL); } return (NULL); } int main (int argc, char **argv) { int i; if (VIPS_INIT (argv[0])) vips_error_exit (NULL); g_mutex_init (&allocation_lock); for (i = 0; i < NUM_IN_PARALLEL; i++) workers[i] = g_thread_new (NULL, (GThreadFunc) worker, argv[1]); for (i = 0; i < NUM_IN_PARALLEL; i++) g_thread_join (workers[i]); return (0); } vips-8.2.2/doc/libvips-docs.xml0000664000175000017500000000712312651721175013326 00000000000000 ]> VIPS Reference Manual For VIPS 8.2.2. The latest version of this documentation can be found on the VIPS website. VIPS Overview VIPS is a free image processing system. It is good with large images (images larger than the amount of RAM you have available), with many CPUs (speed scales linearly to at least 32 threads), for working with colour, for scientific analysis and for general research and development. As well as JPEG, TIFF and PNG images, it also supports scientific formats like FITS, Matlab, Analyze, PFM, Radiance and OpenSlide. It works on many UNIX-like platforms, as well as Windows and OS X. VIPS is released under the GNU Library General Public License (GNU LGPL). Core VIPS API VIPS operation API by section Other API (no gtkdoc comments yet) Object Hierarchy API Index vips-8.2.2/doc/libvips-sections.txt0000664000175000017500000005233212651721507014245 00000000000000
arithmetic VipsOperationMath VipsOperationMath2 VipsOperationRound VipsOperationRelational VipsOperationBoolean VipsOperationComplex VipsOperationComplex2 VipsOperationComplexget vips_add vips_sum vips_subtract vips_multiply vips_divide vips_linear vips_linear1 vips_remainder vips_remainder_const vips_remainder_const1 vips_invert vips_abs vips_sign vips_round vips_floor vips_ceil vips_rint vips_math vips_sin vips_cos vips_tan vips_asin vips_acos vips_atan vips_exp vips_exp10 vips_log vips_log10 vips_complex vips_polar vips_rect vips_conj vips_complex2 vips_cross_phase vips_complexget vips_real vips_imag vips_complexform vips_relational vips_equal vips_notequal vips_less vips_lesseq vips_more vips_moreeq vips_relational_const vips_equal_const vips_notequal_const vips_less_const vips_lesseq_const vips_more_const vips_moreeq_const vips_relational_const1 vips_equal_const1 vips_notequal_const1 vips_less_const1 vips_lesseq_const1 vips_more_const1 vips_moreeq_const1 vips_boolean vips_andimage vips_orimage vips_eorimage vips_lshift vips_rshift vips_boolean_const vips_andimage_const vips_orimage_const vips_eorimage_const vips_lshift_const vips_rshift_const vips_boolean_const1 vips_andimage_const1 vips_orimage_const1 vips_eorimage_const1 vips_lshift_const1 vips_rshift_const1 vips_math2 vips_pow vips_wop vips_math2_const vips_pow_const vips_wop_const vips_math2_const1 vips_pow_const1 vips_wop_const1 vips_avg vips_deviate vips_min vips_max vips_stats vips_measure vips_getpoint vips_hist_find vips_hist_find_ndim vips_hist_find_indexed vips_hough_line vips_hough_circle vips_project vips_profile
basic VipsPel VipsCallbackFn VipsSListMap2Fn VipsSListMap4Fn VipsSListFold2Fn VipsPrecision vips_path_filename7 vips_path_mode7
buf VipsBuf VIPS_BUF_STATIC vips_buf_rewind vips_buf_destroy vips_buf_init vips_buf_set_static vips_buf_set_dynamic vips_buf_init_static vips_buf_init_dynamic vips_buf_appendns vips_buf_appends vips_buf_appendf vips_buf_vappendf vips_buf_appendc vips_buf_appendsc vips_buf_appendgv vips_buf_append_size vips_buf_removec vips_buf_change vips_buf_is_empty vips_buf_is_full vips_buf_all vips_buf_firstline vips_buf_appendg vips_buf_appendd vips_buf_len
colour VIPS_D93_X0 VIPS_D93_Y0 VIPS_D93_Z0 VIPS_D75_X0 VIPS_D75_Y0 VIPS_D75_Z0 VIPS_D65_X0 VIPS_D65_Y0 VIPS_D65_Z0 VIPS_D55_X0 VIPS_D55_Y0 VIPS_D55_Z0 VIPS_D50_X0 VIPS_D50_Y0 VIPS_D50_Z0 VIPS_A_X0 VIPS_A_Y0 VIPS_A_Z0 VIPS_B_X0 VIPS_B_Y0 VIPS_B_Z0 VIPS_C_X0 VIPS_C_Y0 VIPS_C_Z0 VIPS_E_X0 VIPS_E_Y0 VIPS_E_Z0 VIPS_D3250_X0 VIPS_D3250_Y0 VIPS_D3250_Z0 VipsIntent VipsPCS vips_colourspace_issupported vips_colourspace vips_LabQ2sRGB vips_rad2float vips_float2rad vips_LabS2LabQ vips_LabQ2LabS vips_LabQ2Lab vips_Lab2LabQ vips_LCh2Lab vips_Lab2LCh vips_Yxy2Lab vips_CMC2XYZ vips_Lab2XYZ vips_XYZ2Lab vips_XYZ2scRGB vips_scRGB2sRGB vips_scRGB2BW vips_sRGB2scRGB vips_scRGB2XYZ vips_HSV2sRGB vips_sRGB2HSV vips_LCh2CMC vips_CMC2LCh vips_XYZ2Yxy vips_Yxy2XYZ vips_LabS2Lab vips_Lab2LabS vips_icc_present vips_icc_transform vips_icc_import vips_icc_export vips_icc_ac2rc vips_dE76 vips_dE00 vips_dECMC vips_col_Lab2XYZ vips_col_XYZ2Lab vips_col_ab2h vips_col_ab2Ch vips_col_Ch2ab vips_col_L2Lcmc vips_col_C2Ccmc vips_col_Ch2hcmc vips_col_make_tables_CMC vips_col_Lcmc2L vips_col_Ccmc2C vips_col_Chcmc2h vips_col_sRGB2scRGB_8 vips_col_sRGB2scRGB_16 vips_col_scRGB2XYZ vips_col_XYZ2scRGB vips_col_scRGB2sRGB_8 vips_col_scRGB2sRGB_16 vips_col_scRGB2BW_16 vips_col_scRGB2BW_8 vips_pythagoras vips_col_dE00
conversion VipsExtend VipsDirection VipsAlign VipsAngle VipsAngle45 vips_copy vips_tilecache vips_linecache vips_sequential vips_cache vips_copy_file vips_embed vips_flip vips_insert vips_join vips_arrayjoin vips_extract_area vips_crop vips_extract_band vips_replicate vips_grid vips_wrap vips_rot vips_rot45 vips_autorot_get_angle vips_autorot vips_zoom vips_subsample vips_cast vips_cast_uchar vips_cast_char vips_cast_ushort vips_cast_short vips_cast_uint vips_cast_int vips_cast_float vips_cast_double vips_cast_complex vips_cast_dpcomplex vips_scale vips_msb vips_byteswap vips_bandjoin vips_bandjoin2 vips_bandjoin_const vips_bandjoin_const1 vips_bandrank vips_bandfold vips_bandunfold vips_bandbool vips_bandand vips_bandor vips_bandeor vips_bandmean vips_recomb vips_ifthenelse vips_flatten vips_premultiply vips_unpremultiply vips_falsecolour vips_gamma
convolution VipsCombine vips_conv vips_compass vips_convsep vips_sharpen vips_gaussblur vips_spcor vips_fastcor
create vips_black vips_xyz vips_grey vips_gaussmat vips_logmat vips_text vips_gaussnoise vips_eye vips_sines vips_zone vips_identity vips_buildlut vips_invertlut vips_tonelut vips_mask_ideal vips_mask_ideal_ring vips_mask_ideal_band vips_mask_butterworth vips_mask_butterworth_ring vips_mask_butterworth_band vips_mask_gaussian vips_mask_gaussian_ring vips_mask_gaussian_band vips_mask_fractal vips_fractsurf
debug VIPS_DEBUG_MSG VIPS_DEBUG_MSG_RED VIPS_DEBUG_MSG_AMBER VIPS_DEBUG_MSG_GREEN
draw VipsCombineMode vips_draw_rect vips_draw_rect1 vips_draw_point vips_draw_point1 vips_draw_image vips_draw_mask vips_draw_mask1 vips_draw_line vips_draw_line1 vips_draw_circle vips_draw_circle1 vips_draw_flood vips_draw_flood1 vips_draw_smudge
dzsave shrink_region_uncoded
error vips_error_buffer vips_error_clear vips_error_freeze vips_error_thaw vips_error vips_verror vips_error_system vips_verror_system vips_error_g vips_g_error vips_warn vips_vwarn vips_info_set vips_info vips_vinfo vips_error_exit vips_check_uncoded vips_check_coding vips_check_coding_known vips_check_coding_noneorlabq vips_check_coding_same vips_check_mono vips_check_bands vips_check_bands_1or3 vips_check_bands_atleast vips_check_bands_1orn vips_check_bands_1orn_unary vips_check_bands_same vips_check_bandno vips_check_int vips_check_uint vips_check_uintorf vips_check_noncomplex vips_check_complex vips_check_twocomponents vips_check_format vips_check_u8or16 vips_check_8or16 vips_check_u8or16orf vips_check_format_same vips_check_size_same vips_check_oddsquare vips_check_vector_length vips_check_vector vips_check_hist vips_check_matrix vips_check_separable vips_check_precision_intfloat
foreign VipsForeignSave vips_foreign_map VipsForeignFlags vips_foreign_find_load vips_foreign_find_load_buffer vips_foreign_flags vips_foreign_is_a vips_foreign_is_a_buffer VipsSaveable vips_foreign_find_save vips_foreign_find_save_buffer vips_vipsload vips_vipssave vips_openslideload vips_jpegload vips_jpegload_buffer vips_jpegsave vips_jpegsave_buffer vips_jpegsave_mime vips_webpload vips_webpload_buffer vips_webpsave vips_webpsave_buffer vips_webpsave_mime VipsForeignTiffCompression VipsForeignTiffPredictor VipsForeignTiffResunit vips_tiffload vips_tiffload_buffer vips_tiffsave vips_openexrload vips_fitsload vips_fitssave vips_analyzeload vips_rawload vips_rawsave vips_rawsave_fd vips_csvload vips_csvsave vips_matrixload vips_matrixsave vips_matrixprint vips_magickload vips_magickload_buffer VipsForeignPngFilter vips_pngload vips_pngload_buffer vips_pngsave vips_pngsave_buffer vips_ppmload vips_ppmsave vips_matload vips_radload vips_radsave VipsForeignDzLayout VipsForeignDzDepth VipsForeignDzContainer vips_dzsave VIPS_FOREIGN VIPS_FOREIGN_CLASS VIPS_FOREIGN_GET_CLASS VIPS_FOREIGN_LOAD VIPS_FOREIGN_LOAD_CLASS VIPS_FOREIGN_LOAD_GET_CLASS VIPS_FOREIGN_SAVE VIPS_FOREIGN_SAVE_CLASS VIPS_FOREIGN_SAVE_GET_CLASS VIPS_IS_FOREIGN VIPS_IS_FOREIGN_CLASS VIPS_IS_FOREIGN_LOAD VIPS_IS_FOREIGN_LOAD_CLASS VIPS_IS_FOREIGN_SAVE VIPS_IS_FOREIGN_SAVE_CLASS VIPS_TYPE_FOREIGN VIPS_TYPE_FOREIGN_LOAD VIPS_TYPE_FOREIGN_SAVE VipsForeign VipsForeignClass VipsForeignLoad VipsForeignLoadClass VipsForeignSave VipsForeignSaveClass vips_foreign_get_type vips_foreign_load_get_type vips_foreign_save_get_type
freqfilt vips_fwfft vips_invfft vips_freqmult vips_spectrum vips_phasecor
gate VIPS_GATE_START VIPS_GATE_STOP VIPS_GATE_MALLOC VIPS_GATE_FREE vips__thread_profile vips_profile_set vips__thread_profile_attach vips__thread_profile_detach vips__thread_profile_stop vips__thread_gate_start vips__thread_gate_stop vips__thread_malloc_free
generate VipsRegionWrite vips_sink_disc vips_sink vips_sink_tile VipsSinkNotify vips_sink_screen vips_sink_memory vips_start_one vips_stop_one vips_start_many vips_stop_many vips_allocate_input_array vips_image_generate vips_image_pipeline_array vips_image_pipelinev
header VIPS_META_EXIF_NAME VIPS_META_XMP_NAME VIPS_META_IPCT_NAME VIPS_META_PHOTOSHOP_NAME VIPS_META_ICC_NAME VIPS_META_XML VIPS_META_IMAGEDESCRIPTION VIPS_META_RESOLUTION_UNIT VIPS_META_LOADER vips_format_sizeof vips_image_get_width vips_image_get_height vips_image_get_bands vips_image_get_format vips_image_get_coding vips_image_get_interpretation vips_image_guess_interpretation vips_image_get_xres vips_image_get_yres vips_image_get_xoffset vips_image_get_yoffset vips_image_get_filename vips_image_get_mode vips_image_get_scale vips_image_get_offset vips_image_get_data vips_image_init_fields vips_image_set vips_image_get vips_image_get_as_string vips_image_get_typeof vips_image_remove VipsImageMapFn vips_image_map vips_image_set_area vips_image_get_area vips_image_set_blob vips_image_get_blob vips_image_get_int vips_image_set_int vips_image_get_double vips_image_set_double vips_image_get_string vips_image_set_string vips_image_history_printf vips_image_history_args vips_image_get_history
histogram vips_maplut vips_percent vips_stdif vips_hist_cum vips_hist_norm vips_hist_equal vips_hist_plot vips_hist_match vips_hist_local vips_hist_ismonotonic vips_hist_entropy
image VipsImage VIPS_MAGIC_INTEL VIPS_MAGIC_SPARC VIPS_MAX_COORD VipsDemandStyle VipsImageType VipsInterpretation VipsBandFormat VipsCoding VipsAccess VipsStartFn VipsGenerateFn VipsStopFn VipsProgress VIPS_IMAGE_SIZEOF_ELEMENT VIPS_IMAGE_SIZEOF_PEL VIPS_IMAGE_SIZEOF_LINE VIPS_IMAGE_N_ELEMENTS VIPS_IMAGE_N_PELS VIPS_IMAGE_ADDR VIPS_MATRIX vips_progress_set vips_image_invalidate_all vips_image_minimise_all vips_image_set_progress vips_filename_get_filename vips_filename_get_options vips_image_new vips_image_new_memory vips_image_memory vips_image_new_from_file vips_image_new_from_file_RW vips_image_new_from_file_raw vips_image_new_from_memory vips_image_new_from_memory_copy vips_image_new_from_buffer vips_image_new_matrix vips_image_new_matrixv vips_image_new_matrix_from_array vips_image_matrix_from_array vips_image_set_delete_on_close vips_get_disc_threshold vips_image_new_temp_file vips_image_write vips_image_write_to_file vips_image_write_to_buffer vips_image_write_to_memory vips_image_decode_predict vips_image_decode vips_image_encode vips_image_isMSBfirst vips_image_isfile vips_image_ispartial vips_image_copy_memory vips_image_wio_input vips_image_pio_input vips_image_pio_output vips_image_inplace vips_image_write_prepare vips_image_write_line vips_band_format_isint vips_band_format_isuint vips_band_format_is8bit vips_band_format_isfloat vips_band_format_iscomplex vips_system vips_array_image_new vips_array_image_newv vips_array_image_empty vips_array_image_append vips_array_image_get vips_value_get_array_image vips_value_set_array_image VIPS_IMAGE VIPS_IMAGE_CLASS VIPS_IMAGE_GET_CLASS VIPS_IMAGE_SIZEOF_IMAGE VIPS_IS_IMAGE VIPS_IS_IMAGE_CLASS VIPS_TYPE_IMAGE VipsImage VipsImageClass vips_image_get_type
inlines vips__hypot
interpolate VipsInterpolate VipsInterpolateMethod vips_interpolate vips_interpolate_get_method vips_interpolate_get_window_size vips_interpolate_get_window_offset VIPS_TRANSFORM_SHIFT VIPS_TRANSFORM_SCALE VIPS_INTERPOLATE_SHIFT VIPS_INTERPOLATE_SCALE vips_interpolate_nearest_static vips_interpolate_bilinear_static vips_interpolate_new VIPS_INTERPOLATE VIPS_INTERPOLATE_CLASS VIPS_INTERPOLATE_GET_CLASS VIPS_IS_INTERPOLATE VIPS_IS_INTERPOLATE_CLASS VIPS_TYPE_INTERPOLATE VipsInterpolate VipsInterpolateClass vips_interpolate_get_type
memory VIPS_FREEF VIPS_FREE VIPS_SETSTR VIPS_NEW VIPS_ARRAY vips_malloc vips_strdup vips_free vips_tracked_free vips_tracked_malloc vips_tracked_get_mem vips_tracked_get_mem_highwater vips_tracked_get_allocs vips_tracked_open vips_tracked_close vips_tracked_get_files
morphology VipsOperationMorphology vips_morph vips_rank vips_median vips_countlines vips_labelregions
mosaicing vips_merge vips_mosaic vips_mosaic1 vips_match vips_globalbalance vips_remosaic
object VipsObject VIPS_UNREF VipsArgumentFlags VIPS_ARGUMENT_REQUIRED_INPUT VIPS_ARGUMENT_OPTIONAL_INPUT VIPS_ARGUMENT_REQUIRED_OUTPUT VIPS_ARGUMENT_OPTIONAL_OUTPUT VIPS_ARG_IMAGE VIPS_ARG_INTERPOLATE VIPS_ARG_BOOL VIPS_ARG_DOUBLE VIPS_ARG_BOXED VIPS_ARG_INT VIPS_ARG_UINT64 VIPS_ARG_ENUM VIPS_ARG_FLAGS VIPS_ARG_STRING VIPS_ARG_POINTER VipsArgument VipsArgumentClass VipsArgumentInstance VipsArgumentTable vips__argument_get_instance vips__argument_table_lookup vips__object_set_member VipsArgumentMapFn vips_argument_map VipsArgumentClassMapFn vips_argument_class_map vips_argument_class_needsstring vips_object_get_argument vips_object_argument_isset vips_object_get_argument_flags vips_object_get_argument_priority VIPS_ARGUMENT_FOR_ALL VIPS_ARGUMENT_COLLECT_SET VIPS_ARGUMENT_COLLECT_GET VIPS_ARGUMENT_COLLECT_END vips_value_is_null vips_object_set_property vips_object_get_property vips_object_preclose vips_object_build vips_object_summary_class vips_object_summary vips_object_dump vips_object_print_summary_class vips_object_print_summary vips_object_print_dump vips_object_print_name vips_object_sanity vips_object_class_install_argument vips_object_set_argument_from_string vips_object_argument_needsstring vips_object_get_argument_to_string vips_object_set_required VipsObjectSetArguments vips_object_new vips_object_set_valist vips_object_set vips_object_set_from_string vips_object_new_from_string vips_object_to_string vips_object_map VipsTypeMapFn VipsTypeMap2Fn VipsClassMapFn vips_type_map vips_type_map_all vips_type_depth vips_type_find vips_nickname_find vips_class_map_all vips_class_find vips_object_local_array vips_object_local_cb vips_object_local vips_object_set_static vips_object_print_all vips_object_sanity_all vips_object_rewind vips_object_unref_outputs vips_object_get_description VIPS_IS_OBJECT VIPS_IS_OBJECT_CLASS VIPS_OBJECT VIPS_OBJECT_CLASS VIPS_OBJECT_GET_CLASS VIPS_TYPE_OBJECT VipsObject VipsObjectClass vips_object_get_type
operation VipsOperation VipsOperationFlags VipsOperationBuildFn vips_operation_get_flags vips_operation_class_print_usage vips_operation_invalidate vips_operation_call_valist vips_operation_new vips_call_required_optional vips_call vips_call_split vips_call_split_option_string vips_call_options vips_call_argv vips_cache_drop_all vips_cache_operation_lookup vips_cache_operation_add vips_cache_operation_buildp vips_cache_operation_build vips_cache_print vips_cache_set_max vips_cache_set_max_mem vips_cache_get_max vips_cache_get_size vips_cache_get_max_mem vips_cache_get_max_files vips_cache_set_max_files vips_cache_set_dump vips_cache_set_trace VIPS_IS_OPERATION VIPS_IS_OPERATION_CLASS VIPS_OPERATION VIPS_OPERATION_CLASS VIPS_OPERATION_GET_CLASS VIPS_TYPE_OPERATION VipsOperation VipsOperationClass vips_operation_get_type
rect VipsRect VIPS_RECT_RIGHT VIPS_RECT_BOTTOM VIPS_RECT_HCENTRE VIPS_RECT_VCENTRE vips_rect_isempty vips_rect_includespoint vips_rect_includesrect vips_rect_equalsrect vips_rect_marginadjust vips_rect_intersectrect vips_rect_unionrect vips_rect_dup vips_rect_normalise
region VipsRegion vips_region_new vips_region_buffer vips_region_image vips_region_region vips_region_equalsregion vips_region_position vips_region_paint vips_region_paint_pel vips_region_black vips_region_copy vips_region_shrink vips_region_prepare vips_region_prepare_to vips_region_prepare_many vips_region_invalidate vips_region_dump_all VIPS_REGION_LSKIP VIPS_REGION_N_ELEMENTS VIPS_REGION_SIZEOF_LINE VIPS_REGION_ADDR VIPS_REGION_ADDR_TOPLEFT VIPS_IS_REGION VIPS_IS_REGION_CLASS VIPS_REGION VIPS_REGION_CLASS VIPS_REGION_GET_CLASS VIPS_TYPE_REGION VipsRegion VipsRegionClass vips_region_get_type
resample vips_shrink vips_shrinkh vips_shrinkv vips_shrink2 vips_similarity vips_affine vips_resize vips_mapim vips_quadratic
semaphore VipsSemaphore vips_semaphore_up vips_semaphore_down vips_semaphore_upn vips_semaphore_downn vips_semaphore_destroy vips_semaphore_init
threadpool VipsThreadState vips_thread_state_set vips_thread_state_new VipsThreadStartFn VipsThreadpoolAllocateFn VipsThreadpoolWorkFn VipsThreadpoolProgressFn vips_threadpool_run vips_get_tile_size vips_concurrency_set vips_concurrency_get VIPS_IS_THREAD_STATE VIPS_IS_THREAD_STATE_CLASS VIPS_THREAD_STATE VIPS_THREAD_STATE_CLASS VIPS_THREAD_STATE_GET_CLASS VIPS_TYPE_THREAD_STATE VipsThreadState VipsThreadStateClass vips_thread_state_get_type
transform VipsTransformation vips__transform_init vips__transform_calc_inverse vips__transform_isidentity vips__transform_add vips__transform_print vips__transform_forward_point vips__transform_invert_point vips__transform_forward_rect vips__transform_invert_rect vips__transform_set_area vips__affine
type vips_thing_new vips_area_copy vips_area_unref vips_area_new vips_area_new_array vips_area_new_array_object vips_area_get_data VIPS_ARRAY_ADDR vips_ref_string_new vips_ref_string_get vips_blob_new vips_blob_copy vips_blob_get vips_array_double_new vips_array_double_newv vips_array_double_get vips_array_int_new vips_array_int_newv vips_array_int_get vips_value_set_area vips_value_get_area vips_value_get_save_string vips_value_set_save_string vips_value_set_save_stringf vips_value_get_ref_string vips_value_set_ref_string vips_value_get_blob vips_value_set_blob vips_value_set_array vips_value_get_array vips_value_get_array_double vips_value_set_array_double vips_value_get_array_int vips_value_set_array_int vips_value_get_array_object vips_value_set_array_object VIPS_AREA VIPS_TYPE_AREA VIPS_TYPE_ARRAY_DOUBLE VIPS_TYPE_ARRAY_IMAGE VIPS_TYPE_ARRAY_INT VIPS_TYPE_BLOB VIPS_TYPE_REF_STRING VIPS_TYPE_SAVE_STRING VIPS_TYPE_THING VipsArea VipsArrayDouble VipsArrayImage VipsArrayInt VipsBlob VipsRefString VipsThing vips_area_get_type vips_array_double_get_type vips_array_image_get_type vips_array_int_get_type vips_blob_get_type vips_ref_string_get_type vips_save_string_get_type vips_thing_get_type
util VIPS_PI VIPS_RAD VIPS_DEG VIPS_MAX VIPS_MIN VIPS_ABS VIPS_CLIP VIPS_NUMBER VIPS_ISNAN VIPS_ISINF VIPS_FLOOR VIPS_CEIL VIPS_RINT VIPS_FABS VIPS_FMAX VIPS_FMIN VIPS_FCLIP VIPS_SWAP VIPS_UNROLL VIPS_CLIP_UCHAR VIPS_CLIP_CHAR VIPS_CLIP_USHORT VIPS_CLIP_SHORT VIPS_CLIP_UINT VIPS_CLIP_NONE VIPS_PATH_MAX vips_enum_string vips_enum_nick vips_enum_from_nick vips_flags_from_nick vips_slist_equal vips_slist_map2 vips_slist_map2_rev vips_slist_map4 vips_slist_fold2 vips_slist_filter vips_slist_free_all vips_map_equal vips_hash_table_map vips_strncpy vips_strrstr vips_ispostfix vips_isprefix vips_break_token vips__chomp vips_vsnprintf vips_snprintf vips_filename_suffix_match vips_file_length vips__write vips__file_open_read vips__file_open_write vips__file_read vips__file_read_name vips__file_write vips__get_bytes vips__fgetc vips__gvalue_ref_string_new vips__gslist_gvalue_free vips__gslist_gvalue_copy vips__gslist_gvalue_merge vips__gslist_gvalue_get vips__seek vips__ftruncate vips_existsf vips_mkdirf vips_rmdirf vips_rename vips_popenf VipsToken vips__token_get vips__token_must vips__token_need vips__find_rightmost_brackets vips__filename_split8 vips_ispoweroftwo vips_amiMSBfirst vips__temp_name vips__change_suffix
vector VIPS_VECTOR_SOURCE_MAX VipsVector VipsExecutor vips__vector_enabled vips_vector_init vips_vector_isenabled vips_vector_set_enabled vips_vector_free vips_vector_new vips_vector_constant vips_vector_source_name vips_vector_source_scanline vips_vector_temporary vips_vector_asm2 vips_vector_asm3 vips_vector_full vips_vector_compile vips_vector_print vips_executor_set_program vips_executor_set_scanline vips_executor_set_destination vips_executor_set_array vips_executor_run
version VIPS_VERSION VIPS_VERSION_STRING VIPS_MAJOR_VERSION VIPS_MINOR_VERSION VIPS_MICRO_VERSION VIPS_EXEEXT VIPS_ENABLE_DEPRECATED
vips VIPS_INIT vips_init vips_get_argv0 vips_shutdown vips_thread_shutdown vips_add_option_entries vips_leak_set vips_version_string vips_version vips_guess_prefix vips_guess_libdir
vips-8.2.2/doc/binding.xml0000664000175000017500000000633712530402247012340 00000000000000 Writing bindings for libvips 3 VIPS Library Binding How to write bindings for libvips Binding and gobject-introspection The C source code to libvips has been marked up with special comments describing the interface in a standard way. These comments are read by gobject-introspection when libvips is compiled and used to generate a typelib, a description of how to call the library. Many languages have gobject-introspection packages: all you need to do to call libvips from your favorite language is to start g-o-i, load the libvips typelib, and you should have the whole library available. For example, from Python it's as simple as: from gi.repository import Vips libvips used in this way is likely to be rather bare-bones. For Python, we wrote a set of overrides which layer a more Pythonesque interface on top of the one provided for libvips by pygobject. These overrides are simply a set of Python classes. To call a vips operation, you'll need to make a new operation with vips_operation_new() (all it does is look up the operation by name with vips_type_find(), then call g_object_new() for you), then use vips_argument_map() and friends to loop over the operation's arguments setting them. Once you have set all arguments, use vips_cache_operation_build() to look up the operation in the cache and either build or dup it. If something goes wrong, you'll need to use vips_object_unref_outputs() and g_object_unref() to free the partially-built object. The Python binding uses this technique to implement a function which can call any vips operation, turning optional vips arguments into Python keyword arguments. If your language does not have a gobject-introspection package, you'll need to write something in C or C++ doing approximately the same thing. The C++ API takes this route. You can generate searchable docs from a .gir (the thing that is built from scanning libvips and which in turn turn the typelib is made from) with g-ir-doc-tool, for example: $ g-ir-doc-tool --language=Python -o ~/mydocs Vips-8.0.gir Then to view them, either: $ yelp ~/mydocs Or perhaps $ cd ~/mydocs $ yelp-build html . To make HTML docs. This is an easy way to see what you can call in the library. vips-8.2.2/doc/using-C.xml0000664000175000017500000001671212651365275012246 00000000000000 VIPS from C 3 VIPS Library Using VIPS How to use the VIPS library from C Introduction VIPS comes with a convenient, high-level C API. You should read the API docs for full details, but this section will try to give a brief overview. Library startup When your program starts, use VIPS_INIT() to start up the VIPS library. You should pass it the name of your program, usually argv[0]. Use vips_shutdown() when you exit. VIPS_INIT() is a macro to let it check that the libvips library you have linked to matches the libvips headers you included. You can add the VIPS flags to your %GObject command-line processing with vips_add_option_entries(). The #VipsImage class The basic data object is the #VipsImage. You can create an image from a file on disc or from an area of memory, either as a C-style array, or as a formatted object, like JPEG. See vips_image_new_from_file() and friends. Loading an image is fast: VIPS read just enough of the image to be able to get the various properties, such as width, but no decoding occurs until pixel values are really needed. Once you have an image, you can get properties from it in the usual way. You can use projection functions, like vips_image_get_width() or g_object_get(), to get %GObject properties. All VIPS objects are immutable, meaning you can only get properties, you can't set them. See VIPS Header to read about image properties. Reference counting VIPS is based on the %GObject library and is therefore reference counted. vips_image_new_from_file() returns an object with a count of 1. When you are done with an image, use g_object_unref() to dispose of it. If you pass an image to an operation and that operation needs to keep a copy of the image, it will ref it. So you can unref an image as soon as you no longer need it, you don't need to hang on to it in case anyone else is still using it. See #VipsOperation for more detail on VIPS reference counting conventions. VIPS operations Use things like vips_embed() to manipulate your images. You use it from C like this: const char *filename; VipsImage *in = vips_image_new_from_file (filename, NULL); const int x = 10; const int y = 10; const int width = 1000; const int height = 1000; VipsImage *out; if (vips_embed (in, &out, x, y, width, height, NULL)) error_handling(); Now out will hold a reference to a 1000 by 1000 pixel image, with in pasted 10 right and 10 down from the top left-hand corner. The remainder of the image will be black. If in is too large, it will be clipped at the image edges. Operations can take options. You give these as a set of NULL-terminated name-value pairs at the end of the call. For example, you can write: if (vips_embed (in, &out, x, y, width, height, "extend", VIPS_EXTEND_COPY, NULL)) error_handling(); And now the new edge pixels, which were black, will be filled with a copy of the edge pixels of in. Operation options are listed at the top of each operation's entry in the docs. Alternatively, the vips program is handy for getting a summary of an operation's parameters. For example: $ vips embed embed an image in a larger image usage: embed in out x y width height where: in - Input image, input VipsImage out - Output image, output VipsImage x - Left edge of input in output, input gint default: 0 min: -1000000000, max: 1000000000 y - Top edge of input in output, input gint default: 0 min: -1000000000, max: 1000000000 width - Image width in pixels, input gint default: 1 min: 1, max: 1000000000 height - Image height in pixels, input gint default: 1 min: 1, max: 1000000000 optional arguments: extend - How to generate the extra pixels, input VipsExtend default: black allowed: black, copy, repeat, mirror, white, background background - Colour for background pixels, input VipsArrayDouble operation flags: sequential-unbuffered See #VipsOperation for more information on running operations on images. When you are done, you can write the final image to a disc file, to a formatted memory buffer, or to C-style memory array. See vips_image_write_to_file() and friends. Getting pixels Use #VipsRegion to read pixels out of images. You can use VIPS_IMAGE_ADDR() as well, but this can need a large amount of memory to work. See extending for an introduction to writing your own operations. Error handling VIPS keeps a log of error message, see VIPS Error to find out how to get and clear the error log. Example VIPS from C example /* compile with: * * gcc -g -Wall try211.c `pkg-config vips --cflags --libs` */ #include <stdio.h> #include <vips/vips.h> int main( int argc, char **argv ) { VipsImage *in; double mean; VipsImage *out; if( VIPS_INIT( argv[0] ) ) vips_error_exit( NULL ); if( argc != 3 ) vips_error_exit( "usage: %s infile outfile", argv[0] ); if( !(in = vips_image_new_from_file( argv[1], NULL )) ) vips_error_exit( NULL ); printf( "image width = %d\n", vips_image_get_width( in ) ); if( vips_avg( in, &mean, NULL ) ) vips_error_exit( NULL ); printf( "mean pixel value = %g\n", mean ); if( vips_invert( in, &out, NULL ) ) vips_error_exit( NULL ); g_object_unref( in ); if( vips_image_write_to_file( out, argv[2], NULL ) ) vips_error_exit( NULL ); g_object_unref( out ); return( 0 ); } vips-8.2.2/doc/Makefile.am0000664000175000017500000001162512530402247012234 00000000000000## Process this file with automake to produce Makefile.in # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE=libvips # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level XML file (SGML in the past). You can change this if you want to. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR=$(top_srcdir)/libvips # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS=--rebuild-types # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS=--xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS= # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS= # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB=$(top_srcdir)/libvips/include/vips/*.h CFILE_GLOB=$(top_srcdir)/libvips/*/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES= # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_VIPS_INCLUDE = \ almostdeprecated.h \ cimg_funcs.h \ deprecated.h \ vips7compat.h \ dispatch.h \ enumtypes.h \ internal.h \ thread.h \ intl.h \ format.h \ mask.h \ private.h \ video.h # ignore all .h files in libvips/*, these are internal IGNORE_VIPS_C = \ binary.h \ hough.h \ nary.h \ parithmetic.h \ statistic.h \ unaryconst.h \ unary.h \ CImg.h \ pcolour.h \ bandary.h \ pconversion.h \ correlation.h \ pconvolution.h \ pcreate.h \ pmask.h \ point.h \ drawink.h \ pdraw.h \ analyze2vips.h \ csv.h \ dbh.h \ fits.h \ jpeg.h \ magick.h \ matlab.h \ openexr2vips.h \ openslide2vips.h \ ppm.h \ radiance.h \ tiff.h \ vipsjpeg.h \ vipspng.h \ webp.h \ pfreqfilt.h \ hist_unary.h \ phistogram.h \ base64.h \ sink.h \ vipsmarshal.h \ pmorphology.h \ global_balance.h \ pmosaicing.h \ presample.h \ templates.h IGNORE_HFILES = $(IGNORE_VIPS_INCLUDE) $(IGNORE_VIPS_C) # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = \ $(top_srcdir)/doc/images/interconvert.png # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files = \ using-command-line.xml \ using-C.xml \ using-threads.xml \ using-python.xml \ using-cpp.xml \ extending.xml \ function-list.xml \ file-format.xml \ binding.xml # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files = \ using-command-line.xml \ using-C.xml \ using-threads.xml \ using-python.xml \ using-cpp.xml \ extending.xml \ function-list.xml \ file-format.xml \ binding.xml # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS = @VIPS_CFLAGS@ @VIPS_INCLUDES@ GTKDOC_LIBS = @VIPS_CFLAGS@ ${top_builddir}/libvips/libvips.la @VIPS_LIBS@ # This includes the standard gtk-doc make rules, copied by gtkdocize. include gtk-doc.make # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST += \ images \ gen-function-list.py # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt DISTCLEANFILES = libvips.types # Comment this out if you want 'make check' to test you doc status # and run some sanity checks if ENABLE_GTK_DOC TESTS_ENVIRONMENT = \ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) #TESTS = $(GTKDOC_CHECK) endif -include $(top_srcdir)/git.mk vips-8.2.2/doc/Makefile.in0000664000175000017500000007475612651721156012272 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = libvips-docs.xml CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gtk-doc.make \ $(srcdir)/libvips-docs.xml.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE = libvips # Uncomment for versioned docs and specify the version of the module, e.g. '2'. #DOC_MODULE_VERSION=2 # The top-level XML file (SGML in the past). You can change this if you want to. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml # Directories containing the source code. # gtk-doc will search all .c and .h files beneath these paths # for inline comments documenting functions and macros. # e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk DOC_SOURCE_DIR = $(top_srcdir)/libvips # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS = # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS = --rebuild-types # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--xml-mode --output-format=xml MKDB_OPTIONS = --xml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS = # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS = # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS = # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB = $(top_srcdir)/libvips/include/vips/*.h CFILE_GLOB = $(top_srcdir)/libvips/*/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES = # Header files or dirs to ignore when scanning. Use base file/dir names # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code IGNORE_VIPS_INCLUDE = \ almostdeprecated.h \ cimg_funcs.h \ deprecated.h \ vips7compat.h \ dispatch.h \ enumtypes.h \ internal.h \ thread.h \ intl.h \ format.h \ mask.h \ private.h \ video.h # ignore all .h files in libvips/*, these are internal IGNORE_VIPS_C = \ binary.h \ hough.h \ nary.h \ parithmetic.h \ statistic.h \ unaryconst.h \ unary.h \ CImg.h \ pcolour.h \ bandary.h \ pconversion.h \ correlation.h \ pconvolution.h \ pcreate.h \ pmask.h \ point.h \ drawink.h \ pdraw.h \ analyze2vips.h \ csv.h \ dbh.h \ fits.h \ jpeg.h \ magick.h \ matlab.h \ openexr2vips.h \ openslide2vips.h \ ppm.h \ radiance.h \ tiff.h \ vipsjpeg.h \ vipspng.h \ webp.h \ pfreqfilt.h \ hist_unary.h \ phistogram.h \ base64.h \ sink.h \ vipsmarshal.h \ pmorphology.h \ global_balance.h \ pmosaicing.h \ presample.h \ templates.h IGNORE_HFILES = $(IGNORE_VIPS_INCLUDE) $(IGNORE_VIPS_C) # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = \ $(top_srcdir)/doc/images/interconvert.png # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files = \ using-command-line.xml \ using-C.xml \ using-threads.xml \ using-python.xml \ using-cpp.xml \ extending.xml \ function-list.xml \ file-format.xml \ binding.xml # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files = \ using-command-line.xml \ using-C.xml \ using-threads.xml \ using-python.xml \ using-cpp.xml \ extending.xml \ function-list.xml \ file-format.xml \ binding.xml # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS = @VIPS_CFLAGS@ @VIPS_INCLUDES@ GTKDOC_LIBS = @VIPS_CFLAGS@ ${top_builddir}/libvips/libvips.la @VIPS_LIBS@ @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(expand_content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt # This includes the standard gtk-doc make rules, copied by gtkdocize. # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) images gen-function-list.py DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test @GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = @GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp #### setup #### GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; #### scan #### GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; #### xml #### GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XML_0 = @echo " DOC Building XML"; #### html #### GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; #### pdf #### GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt DISTCLEANFILES = libvips.types # Comment this out if you want 'make check' to test you doc status # and run some sanity checks @ENABLE_GTK_DOC_TRUE@TESTS_ENVIRONMENT = \ @ENABLE_GTK_DOC_TRUE@ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ @ENABLE_GTK_DOC_TRUE@ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/gtk-doc.make $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(srcdir)/gtk-doc.make $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): libvips-docs.xml: $(top_builddir)/config.status $(srcdir)/libvips-docs.xml.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am @ENABLE_GTK_DOC_FALSE@all-local: all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am dist-hook \ distclean distclean-generic distclean-libtool distclean-local \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-data-local \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile gtkdoc-check.test: Makefile $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ chmod +x $@ all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) .PHONY: all-gtk-doc @ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ destdir=`dirname $(abs_builddir)/$$file`; \ test -d "$$destdir" || mkdir -p "$$destdir"; \ test -f $(abs_srcdir)/$$file && \ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ done; \ fi; \ fi $(AM_V_at)touch setup-build.stamp scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi $(AM_V_at)touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$$?" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) $(AM_V_at)touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ rm -f $(DOC_MODULE).types; \ fi @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ rm -f $(DOC_MODULE)-sections.txt; \ fi distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ fi maintainer-clean-local: @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # @HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs @HAVE_GTK_DOC_FALSE@dist-check-gtkdoc: @HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***" @HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***" @HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***" @HAVE_GTK_DOC_FALSE@ @false dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local @mkdir $(distdir)/html @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs #TESTS = $(GTKDOC_CHECK) -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/doc/extending.xml0000664000175000017500000003373012530402247012710 00000000000000 Extending VIPS 3 VIPS Library Extending How to add operations to VIPS Introduction This section runs quickly through adding a simple operator to VIPS. For more information, see #VipsOperation and #VipsRegion. A good starting point for a new operation is a similar one in the VIPS library. All VIPS operations are subclasses of #VipsOperation, which in turn subclasses #VipsObject and then %GObject. You add an operation to VIPS by defining a new subclass of #VipsOperation and arranging for its class_init() to be called, perhaps by calling its get_type() function. The class and object structures First you need to define a new object struct and a new class struct. typedef struct _Negative { VipsOperation parent_instance; VipsImage *in; VipsImage *out; int image_max; } Negative; typedef struct _NegativeClass { VipsOperationClass parent_class; /* No new class members needed for this op. */ } NegativeClass; This operation will find the photographic negative of an unsigned 8-bit image, optionally letting you specify the value which the pixels "pivot" about. It doesn't need any class members (ie. values common to all operations of this type), so the second struct is empty. See the source to vips_invert() for a more complete version of this operation that's actually in the library. %GObject has a handy macro to write some of the boilerplate for you. G_DEFINE_TYPE( Negative, negative, VIPS_TYPE_OPERATION ); G_DEFINE_TYPE() defines a function called negative_get_type(), which registers this new class and returns its %GType (a pointer-sized integer). negative_get_type() in turn needs two functions, negative_init(), to initialise a new instance, and negative_class_init(), to initialise a new class. Class and object initialisation negative_init() is very simple, it just sets the default value for our optional parameter. static void negative_init( Negative *negative ) { negative->image_max = 255; } negative_class_init() is more complicated: it has to set various fields in various superclasses and define the operation's parameters. static void negative_class_init( NegativeClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = VIPS_OBJECT_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; object_class->nickname = "negative"; object_class->description = "photographic negative"; object_class->build = negative_build; VIPS_ARG_IMAGE( class, "in", 1, "Input", "Input image", VIPS_ARGUMENT_REQUIRED_INPUT, G_STRUCT_OFFSET( Negative, in ) ); VIPS_ARG_IMAGE( class, "out", 2, "Output", "Output image", VIPS_ARGUMENT_REQUIRED_OUTPUT, G_STRUCT_OFFSET( Negative, out ) ); VIPS_ARG_INT( class, "image_max", 4, "Image maximum", "Maximum value in image: pivot about this", VIPS_ARGUMENT_OPTIONAL_INPUT, G_STRUCT_OFFSET( Negative, image_max ), 0, 255, 255 ); } In %GObject, it needs to set the getters and setters for this class. vips has a generic get/set system, so any subclass of #VipsObject needs to use the vips ones. In #VipsObject, it needs to set the operation @nickname and @description, and set a build function (see below). @nickname is used to refer to this operation in the API, @description is used to explain this operation to users and will be translated into their language. Finally, it needs to define the arguments the constructor for this class takes. There are a set of handy macros for doing this, see VIPS_ARG_INT() and friends. The first few parameters are always the same and mean: class pointer for argument, argument name, argument priority (bindings expect required arguments in order of priority), long argument name (this one is internationalised and displayed to users), description (again, users can see this), some flags describing the argument, and finally the position of the member in the struct. Integer arguments take three more values: the minimum, maximum and default value for the argument. The build() function The build function is the thing #VipsObject calls during object construction, after all arguments have been supplied and before the object is used. It has two roles: to verify that arguments are correct, and then to construct the object. After build(), the object is expected to be ready for use. static int negative_build( VipsObject *object ) { VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object ); Negative *negative = (Negative *) object; if( VIPS_OBJECT_CLASS( negative_parent_class )->build( object ) ) return( -1 ); if( vips_check_uncoded( class->nickname, negative->in ) || vips_check_format( class->nickname, negative->in, VIPS_FORMAT_UCHAR ) ) return( -1 ); g_object_set( object, "out", vips_image_new(), NULL ); if( vips_image_pipelinev( negative->out, VIPS_DEMAND_STYLE_THINSTRIP, negative->in, NULL ) ) return( -1 ); if( vips_image_generate( negative->out, vips_start_one, negative_generate, vips_stop_one, negative->in, negative ) ) return( -1 ); return( 0 ); } negative_build() first chains up to the superclass: this will check that all input arguments have been supplied and are sane. Next, it adds its own checks. This is a demo operation, so we just work for uncoded, unsigned 8-bit images. There are a lot of convenience functions like vips_check_format(), see the docs. Next, it creates the output image. This needs to be set with g_object_set() so that vips can see that it has been assigned. vips will also handle the reference counting for you. vips_image_pipelinev() links our new image onto the input image and notes that this operation prefers to work in lines. You can request other input geometries, see #VipsDemandStyle. The geometry hint is just a hint, an operation needs to be able to supply any size #VipsRegion on request. If you must have a certain size request, you can put a cache in the pipeline after your operation, see vips_linecache() and vips_tilecache(). You can also make requests to your operation ordered, see vips_sequential(). Finally, vips_image_generate() attaches a set of callbacks to the output image to generate chunks of it on request. vips_start_one() and vips_stop_one() are convenience functions that make the input region for you, see below. The generate() function The generate() function does the actual image processing. negative_generate() (of type #VipsGenerateFn, supplied to vips_image_generate() above) is called whenever some pixels of our output image are required. static int negative_generate( VipsRegion *or, void *vseq, void *a, void *b, gboolean *stop ) { /* The area of the output region we have been asked to make. */ VipsRect *r = &or->valid; /* The sequence value ... the thing returned by vips_start_one(). */ VipsRegion *ir = (VipsRegion *) vseq; VipsImage *in = (VipsImage *) a; Negative *negative = (Negative *) b; int line_size = r->width * negative->in->Bands; int x, y; /* Request matching part of input region. */ if( vips_region_prepare( ir, r ) ) return( -1 ); for( y = 0; y < r->height; y++ ) { unsigned char *p = (unsigned char *) VIPS_REGION_ADDR( ir, r->left, r->top + y ); unsigned char *q = (unsigned char *) VIPS_REGION_ADDR( or, r->left, r->top + y ); for( x = 0; x < line_size; x++ ) q[x] = negative->image_max - p[x]; } return( 0 ); } This has to calculate a section of the output image. The output #VipsRegion, @or, contains a #VipsRect called @valid which is the area needing calculation. This call to negative_generate() must somehow make this part of @or contain pixel data. @vseq is the sequence value. This is the per-thread state for this generate, created (in this example) by vips_start_one(). In this simple case it's just a #VipsRegion defined on the input image. If you need more per-thread state you can write your own start and stop functions and have a struct you create and pass as a sequence value. There are plenty of examples in the VIPS source code, see vips_rank(). @a and @b are the last two arguments to vips_image_generate() above. @stop is a bool pointer you can set to stop computation early. vips_min() on an unsigned int image, for example, will set @stop as soon as it sees a zero, and will not scan the entire image. The first thing negative_generate() does is use vips_region_prepare() to ask for the corresponding pixels from the input image. Operations which do coordinate transforms or which need an area of input for each output point will need to calculate a new rect before calling vips_region_prepare(). Finally, it can calculate some pixels. negative_generate() loops over the valid area of the output and calls VIPS_REGION_ADDR() for each line. This macro is reasonaly quick, but it's best not to call it for each pixel. Once per line is fine though. Adding to VIPS To add the operation to vips, just call negative_get_type(). You can include the source in your program, or use %GModule to make a binary plugin that will be loaded by libvips at startup. There are some example plugins available. You can then use @negative from any of the vips interfaces. For example, in Python you'd use it like this: out = in.negative(image_max = 128) From the command-line it'd look like this: $ vips negative in.png out.tif --image-max 128 And from C like this: VipsImage *in; VipsImage *out; if( vips_call( "negative", in, &out, "image_max", 128, NULL ) ) ... error Unfortunately that will do almost no compile-time type checking, so all vips operations have a tiny extra wrapper to add a bit of safety. For example: static int negative( VipsImage *in, VipsImage **out, ... ) { va_list ap; int result; va_start( ap, out ); result = vips_call_split( "negative", ap, in, out ); va_end( ap ); return( result ); } And now you can write: if( negative( in, &out, "image_max", 128, NULL ) ) ... error and it's at least a bit safer. Other types of operation Change the _build() function to make other types of operation. Use vips_image_generate() with vips_start_many() to make operations which demand pixels from more than one image at once, such as image plus image. Use vips_sink() instead of vips_image_generate() to loop over an image and calculate a value. vips uses this for the statistics operations, like vips_avg(). Use vips_image_wio_input() to get an entire image into memory so you can read it with a pointer. This will obviously not scale well to very large images, but some operations, like FFTs or flood-fill, need the whole image to be available at once. Make area operations, like filters, by enlarging the #VipsRect that _generate() is given before calling vips_region_prepare(). You can enlarge the input image, so that the output image is the same size as the original input, by using vips_embed() within the _build() function. Make things like flips and rotates by making larger changes to the #VipsRect in _generate(). Make zero-copy operations, like vips_insert(), with vips_region_region(). vips-8.2.2/doc/gtk-doc.make0000644000175000017500000002246712651721147012402 00000000000000# -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### if GTK_DOC_USE_LIBTOOL GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = $(LIBTOOL) --mode=execute else GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = endif # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) SETUP_FILES = \ $(content_files) \ $(expand_content_files) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt EXTRA_DIST = \ $(HTML_IMAGES) \ $(SETUP_FILES) DOC_STAMPS=setup-build.stamp scan-build.stamp sgml-build.stamp \ html-build.stamp pdf-build.stamp \ sgml.stamp html.stamp pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt gtkdoc-check.test: Makefile $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ chmod +x $@ CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test if GTK_DOC_BUILD_HTML HTML_BUILD_STAMP=html-build.stamp else HTML_BUILD_STAMP= endif if GTK_DOC_BUILD_PDF PDF_BUILD_STAMP=pdf-build.stamp else PDF_BUILD_STAMP= endif all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) .PHONY: all-gtk-doc if ENABLE_GTK_DOC all-local: all-gtk-doc endif docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### setup #### GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; setup-build.stamp: -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ destdir=`dirname $(abs_builddir)/$$file`; \ test -d "$$destdir" || mkdir -p "$$destdir"; \ test -f $(abs_srcdir)/$$file && \ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ done; \ fi; \ fi $(AM_V_at)touch setup-build.stamp #### scan #### GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ scanobj_options="--verbose"; \ fi; \ fi; \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ else \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi $(AM_V_at)touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### xml #### GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XML_0=@echo " DOC Building XML"; sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) $(AM_V_at)touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkhtml_options="$$mkhtml_options --verbose"; \ fi; \ fi; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$$?" = "0"; then \ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ fi; \ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -@test "x$(HTML_IMAGES)" = "x" || \ for file in $(HTML_IMAGES) ; do \ if test -f $(abs_srcdir)/$$file ; then \ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ fi; \ if test -f $(abs_builddir)/$$file ; then \ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) $(AM_V_at)touch html-build.stamp #### pdf #### GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$$?" = "0"; then \ if test "x$(V)" = "x1"; then \ mkpdf_options="$$mkpdf_options --verbose"; \ fi; \ fi; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ fi; \ done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) $(AM_V_at)touch pdf-build.stamp ############## clean-local: @rm -f *~ *.bak @rm -rf .libs @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ rm -f $(DOC_MODULE).types; \ fi @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ rm -f $(DOC_MODULE)-sections.txt; \ fi distclean-local: @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ fi maintainer-clean-local: @rm -rf xml html install-data-local: @installfiles=`echo $(builddir)/html/*`; \ if test "$$installfiles" = '$(builddir)/html/*'; \ then echo 1>&2 'Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo ' $(INSTALL_DATA) '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # if HAVE_GTK_DOC dist-check-gtkdoc: docs else dist-check-gtkdoc: @echo "*** gtk-doc is needed to run 'make dist'. ***" @echo "*** gtk-doc was not found when 'configure' ran. ***" @echo "*** please install gtk-doc and rerun 'configure'. ***" @false endif dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local @mkdir $(distdir)/html @cp ./html/* $(distdir)/html @-cp ./$(DOC_MODULE).pdf $(distdir)/ @-cp ./$(DOC_MODULE).types $(distdir)/ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ @cd $(distdir) && rm -f $(DISTCLEANFILES) @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs vips-8.2.2/doc/libvips-docs.xml.in0000664000175000017500000000713412530402247013725 00000000000000 ]> VIPS Reference Manual For VIPS @VIPS_VERSION@. The latest version of this documentation can be found on the VIPS website. VIPS Overview VIPS is a free image processing system. It is good with large images (images larger than the amount of RAM you have available), with many CPUs (speed scales linearly to at least 32 threads), for working with colour, for scientific analysis and for general research and development. As well as JPEG, TIFF and PNG images, it also supports scientific formats like FITS, Matlab, Analyze, PFM, Radiance and OpenSlide. It works on many UNIX-like platforms, as well as Windows and OS X. VIPS is released under the GNU Library General Public License (GNU LGPL). Core VIPS API VIPS operation API by section Other API (no gtkdoc comments yet) Object Hierarchy API Index vips-8.2.2/depcomp0000755000175000017500000005601612651721156011020 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: vips-8.2.2/swig/0000775000175000017500000000000012651721507010466 500000000000000vips-8.2.2/swig/vipsCC/0000775000175000017500000000000012651721507011655 500000000000000vips-8.2.2/swig/vipsCC/VDisplay.i0000664000175000017500000000035312530402247013474 00000000000000/* SWIG interface file for VDisplay. */ %module VDisplay %{ #include %} %import "VError.i" /* Need to override assignment to get refcounting working. */ %rename(__assign__) *::operator=; %include vips/VDisplay.h vips-8.2.2/swig/vipsCC/vimagemodule.cxx0000664000175000017500000455565012651721401015014 00000000000000/* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). * Version 2.0.12 * * This file is not intended to be easily readable and contains a number of * coding conventions designed to improve portability and efficiency. Do not make * changes to this file unless you know what you are doing--modify the SWIG * interface file instead. * ----------------------------------------------------------------------------- */ #define SWIGPYTHON #define SWIG_PYTHON_DIRECTOR_NO_VTABLE #ifdef __cplusplus /* SwigValueWrapper is described in swig.swg */ template class SwigValueWrapper { struct SwigMovePointer { T *ptr; SwigMovePointer(T *p) : ptr(p) { } ~SwigMovePointer() { delete ptr; } SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } } pointer; SwigValueWrapper& operator=(const SwigValueWrapper& rhs); SwigValueWrapper(const SwigValueWrapper& rhs); public: SwigValueWrapper() : pointer(0) { } SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } operator T&() const { return *pointer.ptr; } T *operator&() { return pointer.ptr; } }; template T SwigValueInit() { return T(); } #endif /* ----------------------------------------------------------------------------- * This section contains generic SWIG labels for method/variable * declarations/attributes, and other compiler dependent labels. * ----------------------------------------------------------------------------- */ /* template workaround for compilers that cannot correctly implement the C++ standard */ #ifndef SWIGTEMPLATEDISAMBIGUATOR # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) # define SWIGTEMPLATEDISAMBIGUATOR template # elif defined(__HP_aCC) /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ # define SWIGTEMPLATEDISAMBIGUATOR template # else # define SWIGTEMPLATEDISAMBIGUATOR # endif #endif /* inline attribute */ #ifndef SWIGINLINE # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) # define SWIGINLINE inline # else # define SWIGINLINE # endif #endif /* attribute recognised by some compilers to avoid 'unused' warnings */ #ifndef SWIGUNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define SWIGUNUSED __attribute__ ((__unused__)) # else # define SWIGUNUSED # endif # elif defined(__ICC) # define SWIGUNUSED __attribute__ ((__unused__)) # else # define SWIGUNUSED # endif #endif #ifndef SWIG_MSC_UNSUPPRESS_4505 # if defined(_MSC_VER) # pragma warning(disable : 4505) /* unreferenced local function has been removed */ # endif #endif #ifndef SWIGUNUSEDPARM # ifdef __cplusplus # define SWIGUNUSEDPARM(p) # else # define SWIGUNUSEDPARM(p) p SWIGUNUSED # endif #endif /* internal SWIG method */ #ifndef SWIGINTERN # define SWIGINTERN static SWIGUNUSED #endif /* internal inline SWIG method */ #ifndef SWIGINTERNINLINE # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE #endif /* exporting methods */ #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # ifndef GCC_HASCLASSVISIBILITY # define GCC_HASCLASSVISIBILITY # endif #endif #ifndef SWIGEXPORT # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # if defined(STATIC_LINKED) # define SWIGEXPORT # else # define SWIGEXPORT __declspec(dllexport) # endif # else # if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) # define SWIGEXPORT __attribute__ ((visibility("default"))) # else # define SWIGEXPORT # endif # endif #endif /* calling conventions for Windows */ #ifndef SWIGSTDCALL # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # define SWIGSTDCALL __stdcall # else # define SWIGSTDCALL # endif #endif /* Deal with Microsoft's attempt at deprecating C standard runtime functions */ #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) # define _CRT_SECURE_NO_DEPRECATE #endif /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) # define _SCL_SECURE_NO_DEPRECATE #endif #if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) /* Use debug wrappers with the Python release dll */ # undef _DEBUG # include # define _DEBUG #else # include #endif /* ----------------------------------------------------------------------------- * swigrun.swg * * This file contains generic C API SWIG runtime support for pointer * type checking. * ----------------------------------------------------------------------------- */ /* This should only be incremented when either the layout of swig_type_info changes, or for whatever reason, the runtime changes incompatibly */ #define SWIG_RUNTIME_VERSION "4" /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ #ifdef SWIG_TYPE_TABLE # define SWIG_QUOTE_STRING(x) #x # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) #else # define SWIG_TYPE_TABLE_NAME #endif /* You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for creating a static or dynamic library from the SWIG runtime code. In 99.9% of the cases, SWIG just needs to declare them as 'static'. But only do this if strictly necessary, ie, if you have problems with your compiler or suchlike. */ #ifndef SWIGRUNTIME # define SWIGRUNTIME SWIGINTERN #endif #ifndef SWIGRUNTIMEINLINE # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE #endif /* Generic buffer size */ #ifndef SWIG_BUFFER_SIZE # define SWIG_BUFFER_SIZE 1024 #endif /* Flags for pointer conversions */ #define SWIG_POINTER_DISOWN 0x1 #define SWIG_CAST_NEW_MEMORY 0x2 /* Flags for new pointer objects */ #define SWIG_POINTER_OWN 0x1 /* Flags/methods for returning states. The SWIG conversion methods, as ConvertPtr, return an integer that tells if the conversion was successful or not. And if not, an error code can be returned (see swigerrors.swg for the codes). Use the following macros/flags to set or process the returning states. In old versions of SWIG, code such as the following was usually written: if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { // success code } else { //fail code } Now you can be more explicit: int res = SWIG_ConvertPtr(obj,vptr,ty.flags); if (SWIG_IsOK(res)) { // success code } else { // fail code } which is the same really, but now you can also do Type *ptr; int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); if (SWIG_IsOK(res)) { // success code if (SWIG_IsNewObj(res) { ... delete *ptr; } else { ... } } else { // fail code } I.e., now SWIG_ConvertPtr can return new objects and you can identify the case and take care of the deallocation. Of course that also requires SWIG_ConvertPtr to return new result values, such as int SWIG_ConvertPtr(obj, ptr,...) { if () { if () { *ptr = ; return SWIG_NEWOBJ; } else { *ptr = ; return SWIG_OLDOBJ; } } else { return SWIG_BADOBJ; } } Of course, returning the plain '0(success)/-1(fail)' still works, but you can be more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the SWIG errors code. Finally, if the SWIG_CASTRANK_MODE is enabled, the result code allows to return the 'cast rank', for example, if you have this int food(double) int fooi(int); and you call food(1) // cast rank '1' (1 -> 1.0) fooi(1) // cast rank '0' just use the SWIG_AddCast()/SWIG_CheckState() */ #define SWIG_OK (0) #define SWIG_ERROR (-1) #define SWIG_IsOK(r) (r >= 0) #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) /* The CastRankLimit says how many bits are used for the cast rank */ #define SWIG_CASTRANKLIMIT (1 << 8) /* The NewMask denotes the object was created (using new/malloc) */ #define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) /* The TmpMask is for in/out typemaps that use temporal objects */ #define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) /* Simple returning values */ #define SWIG_BADOBJ (SWIG_ERROR) #define SWIG_OLDOBJ (SWIG_OK) #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) /* Check, add and del mask methods */ #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) #define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) /* Cast-Rank Mode */ #if defined(SWIG_CASTRANK_MODE) # ifndef SWIG_TypeRank # define SWIG_TypeRank unsigned long # endif # ifndef SWIG_MAXCASTRANK /* Default cast allowed */ # define SWIG_MAXCASTRANK (2) # endif # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) SWIGINTERNINLINE int SWIG_AddCast(int r) { return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; } SWIGINTERNINLINE int SWIG_CheckState(int r) { return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; } #else /* no cast-rank mode */ # define SWIG_AddCast(r) (r) # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) #endif #include #ifdef __cplusplus extern "C" { #endif typedef void *(*swig_converter_func)(void *, int *); typedef struct swig_type_info *(*swig_dycast_func)(void **); /* Structure to store information on one type */ typedef struct swig_type_info { const char *name; /* mangled name of this type */ const char *str; /* human readable name of this type */ swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ struct swig_cast_info *cast; /* linked list of types that can cast into this type */ void *clientdata; /* language specific type data */ int owndata; /* flag if the structure owns the clientdata */ } swig_type_info; /* Structure to store a type and conversion function used for casting */ typedef struct swig_cast_info { swig_type_info *type; /* pointer to type that is equivalent to this type */ swig_converter_func converter; /* function to cast the void pointers */ struct swig_cast_info *next; /* pointer to next cast in linked list */ struct swig_cast_info *prev; /* pointer to the previous cast */ } swig_cast_info; /* Structure used to store module information * Each module generates one structure like this, and the runtime collects * all of these structures and stores them in a circularly linked list.*/ typedef struct swig_module_info { swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ size_t size; /* Number of types in this module */ struct swig_module_info *next; /* Pointer to next element in circularly linked list */ swig_type_info **type_initial; /* Array of initially generated type structures */ swig_cast_info **cast_initial; /* Array of initially generated casting structures */ void *clientdata; /* Language specific module data */ } swig_module_info; /* Compare two type names skipping the space characters, therefore "char*" == "char *" and "Class" == "Class", etc. Return 0 when the two name types are equivalent, as in strncmp, but skipping ' '. */ SWIGRUNTIME int SWIG_TypeNameComp(const char *f1, const char *l1, const char *f2, const char *l2) { for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { while ((*f1 == ' ') && (f1 != l1)) ++f1; while ((*f2 == ' ') && (f2 != l2)) ++f2; if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; } return (int)((l1 - f1) - (l2 - f2)); } /* Check type equivalence in a name list like ||... Return 0 if equal, -1 if nb < tb, 1 if nb > tb */ SWIGRUNTIME int SWIG_TypeCmp(const char *nb, const char *tb) { int equiv = 1; const char* te = tb + strlen(tb); const char* ne = nb; while (equiv != 0 && *ne) { for (nb = ne; *ne; ++ne) { if (*ne == '|') break; } equiv = SWIG_TypeNameComp(nb, ne, tb, te); if (*ne) ++ne; } return equiv; } /* Check type equivalence in a name list like ||... Return 0 if not equal, 1 if equal */ SWIGRUNTIME int SWIG_TypeEquiv(const char *nb, const char *tb) { return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0; } /* Check the typename */ SWIGRUNTIME swig_cast_info * SWIG_TypeCheck(const char *c, swig_type_info *ty) { if (ty) { swig_cast_info *iter = ty->cast; while (iter) { if (strcmp(iter->type->name, c) == 0) { if (iter == ty->cast) return iter; /* Move iter to the top of the linked list */ iter->prev->next = iter->next; if (iter->next) iter->next->prev = iter->prev; iter->next = ty->cast; iter->prev = 0; if (ty->cast) ty->cast->prev = iter; ty->cast = iter; return iter; } iter = iter->next; } } return 0; } /* Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison */ SWIGRUNTIME swig_cast_info * SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { if (ty) { swig_cast_info *iter = ty->cast; while (iter) { if (iter->type == from) { if (iter == ty->cast) return iter; /* Move iter to the top of the linked list */ iter->prev->next = iter->next; if (iter->next) iter->next->prev = iter->prev; iter->next = ty->cast; iter->prev = 0; if (ty->cast) ty->cast->prev = iter; ty->cast = iter; return iter; } iter = iter->next; } } return 0; } /* Cast a pointer up an inheritance hierarchy */ SWIGRUNTIMEINLINE void * SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); } /* Dynamic pointer casting. Down an inheritance hierarchy */ SWIGRUNTIME swig_type_info * SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { swig_type_info *lastty = ty; if (!ty || !ty->dcast) return ty; while (ty && (ty->dcast)) { ty = (*ty->dcast)(ptr); if (ty) lastty = ty; } return lastty; } /* Return the name associated with this type */ SWIGRUNTIMEINLINE const char * SWIG_TypeName(const swig_type_info *ty) { return ty->name; } /* Return the pretty name associated with this type, that is an unmangled type name in a form presentable to the user. */ SWIGRUNTIME const char * SWIG_TypePrettyName(const swig_type_info *type) { /* The "str" field contains the equivalent pretty names of the type, separated by vertical-bar characters. We choose to print the last name, as it is often (?) the most specific. */ if (!type) return NULL; if (type->str != NULL) { const char *last_name = type->str; const char *s; for (s = type->str; *s; s++) if (*s == '|') last_name = s+1; return last_name; } else return type->name; } /* Set the clientdata field for a type */ SWIGRUNTIME void SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { swig_cast_info *cast = ti->cast; /* if (ti->clientdata == clientdata) return; */ ti->clientdata = clientdata; while (cast) { if (!cast->converter) { swig_type_info *tc = cast->type; if (!tc->clientdata) { SWIG_TypeClientData(tc, clientdata); } } cast = cast->next; } } SWIGRUNTIME void SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { SWIG_TypeClientData(ti, clientdata); ti->owndata = 1; } /* Search for a swig_type_info structure only by mangled name Search is a O(log #types) We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list. */ SWIGRUNTIME swig_type_info * SWIG_MangledTypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name) { swig_module_info *iter = start; do { if (iter->size) { register size_t l = 0; register size_t r = iter->size - 1; do { /* since l+r >= 0, we can (>> 1) instead (/ 2) */ register size_t i = (l + r) >> 1; const char *iname = iter->types[i]->name; if (iname) { register int compare = strcmp(name, iname); if (compare == 0) { return iter->types[i]; } else if (compare < 0) { if (i) { r = i - 1; } else { break; } } else if (compare > 0) { l = i + 1; } } else { break; /* should never happen */ } } while (l <= r); } iter = iter->next; } while (iter != end); return 0; } /* Search for a swig_type_info structure for either a mangled name or a human readable name. It first searches the mangled names of the types, which is a O(log #types) If a type is not found it then searches the human readable names, which is O(#types). We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list. */ SWIGRUNTIME swig_type_info * SWIG_TypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name) { /* STEP 1: Search the name field using binary search */ swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); if (ret) { return ret; } else { /* STEP 2: If the type hasn't been found, do a complete search of the str field (the human readable name) */ swig_module_info *iter = start; do { register size_t i = 0; for (; i < iter->size; ++i) { if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) return iter->types[i]; } iter = iter->next; } while (iter != end); } /* neither found a match */ return 0; } /* Pack binary data into a string */ SWIGRUNTIME char * SWIG_PackData(char *c, void *ptr, size_t sz) { static const char hex[17] = "0123456789abcdef"; register const unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register unsigned char uu = *u; *(c++) = hex[(uu & 0xf0) >> 4]; *(c++) = hex[uu & 0xf]; } return c; } /* Unpack binary data from a string */ SWIGRUNTIME const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) { register unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register char d = *(c++); register unsigned char uu; if ((d >= '0') && (d <= '9')) uu = ((d - '0') << 4); else if ((d >= 'a') && (d <= 'f')) uu = ((d - ('a'-10)) << 4); else return (char *) 0; d = *(c++); if ((d >= '0') && (d <= '9')) uu |= (d - '0'); else if ((d >= 'a') && (d <= 'f')) uu |= (d - ('a'-10)); else return (char *) 0; *u = uu; } return c; } /* Pack 'void *' into a string buffer. */ SWIGRUNTIME char * SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { char *r = buff; if ((2*sizeof(void *) + 2) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,&ptr,sizeof(void *)); if (strlen(name) + 1 > (bsz - (r - buff))) return 0; strcpy(r,name); return buff; } SWIGRUNTIME const char * SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { *ptr = (void *) 0; return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sizeof(void *)); } SWIGRUNTIME char * SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { char *r = buff; size_t lname = (name ? strlen(name) : 0); if ((2*sz + 2 + lname) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,ptr,sz); if (lname) { strncpy(r,name,lname+1); } else { *r = 0; } return buff; } SWIGRUNTIME const char * SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { memset(ptr,0,sz); return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sz); } #ifdef __cplusplus } #endif /* Errors in SWIG */ #define SWIG_UnknownError -1 #define SWIG_IOError -2 #define SWIG_RuntimeError -3 #define SWIG_IndexError -4 #define SWIG_TypeError -5 #define SWIG_DivisionByZero -6 #define SWIG_OverflowError -7 #define SWIG_SyntaxError -8 #define SWIG_ValueError -9 #define SWIG_SystemError -10 #define SWIG_AttributeError -11 #define SWIG_MemoryError -12 #define SWIG_NullReferenceError -13 /* Compatibility macros for Python 3 */ #if PY_VERSION_HEX >= 0x03000000 #define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type) #define PyInt_Check(x) PyLong_Check(x) #define PyInt_AsLong(x) PyLong_AsLong(x) #define PyInt_FromLong(x) PyLong_FromLong(x) #define PyInt_FromSize_t(x) PyLong_FromSize_t(x) #define PyString_Check(name) PyBytes_Check(name) #define PyString_FromString(x) PyUnicode_FromString(x) #define PyString_Format(fmt, args) PyUnicode_Format(fmt, args) #define PyString_AsString(str) PyBytes_AsString(str) #define PyString_Size(str) PyBytes_Size(str) #define PyString_InternFromString(key) PyUnicode_InternFromString(key) #define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE #define PyString_AS_STRING(x) PyUnicode_AS_STRING(x) #define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x) #endif #ifndef Py_TYPE # define Py_TYPE(op) ((op)->ob_type) #endif /* SWIG APIs for compatibility of both Python 2 & 3 */ #if PY_VERSION_HEX >= 0x03000000 # define SWIG_Python_str_FromFormat PyUnicode_FromFormat #else # define SWIG_Python_str_FromFormat PyString_FromFormat #endif /* Warning: This function will allocate a new string in Python 3, * so please call SWIG_Python_str_DelForPy3(x) to free the space. */ SWIGINTERN char* SWIG_Python_str_AsChar(PyObject *str) { #if PY_VERSION_HEX >= 0x03000000 char *cstr; char *newstr; Py_ssize_t len; str = PyUnicode_AsUTF8String(str); PyBytes_AsStringAndSize(str, &cstr, &len); newstr = (char *) malloc(len+1); memcpy(newstr, cstr, len+1); Py_XDECREF(str); return newstr; #else return PyString_AsString(str); #endif } #if PY_VERSION_HEX >= 0x03000000 # define SWIG_Python_str_DelForPy3(x) free( (void*) (x) ) #else # define SWIG_Python_str_DelForPy3(x) #endif SWIGINTERN PyObject* SWIG_Python_str_FromChar(const char *c) { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_FromString(c); #else return PyString_FromString(c); #endif } /* Add PyOS_snprintf for old Pythons */ #if PY_VERSION_HEX < 0x02020000 # if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM) # define PyOS_snprintf _snprintf # else # define PyOS_snprintf snprintf # endif #endif /* A crude PyString_FromFormat implementation for old Pythons */ #if PY_VERSION_HEX < 0x02020000 #ifndef SWIG_PYBUFFER_SIZE # define SWIG_PYBUFFER_SIZE 1024 #endif static PyObject * PyString_FromFormat(const char *fmt, ...) { va_list ap; char buf[SWIG_PYBUFFER_SIZE * 2]; int res; va_start(ap, fmt); res = vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf); } #endif /* Add PyObject_Del for old Pythons */ #if PY_VERSION_HEX < 0x01060000 # define PyObject_Del(op) PyMem_DEL((op)) #endif #ifndef PyObject_DEL # define PyObject_DEL PyObject_Del #endif /* A crude PyExc_StopIteration exception for old Pythons */ #if PY_VERSION_HEX < 0x02020000 # ifndef PyExc_StopIteration # define PyExc_StopIteration PyExc_RuntimeError # endif # ifndef PyObject_GenericGetAttr # define PyObject_GenericGetAttr 0 # endif #endif /* Py_NotImplemented is defined in 2.1 and up. */ #if PY_VERSION_HEX < 0x02010000 # ifndef Py_NotImplemented # define Py_NotImplemented PyExc_RuntimeError # endif #endif /* A crude PyString_AsStringAndSize implementation for old Pythons */ #if PY_VERSION_HEX < 0x02010000 # ifndef PyString_AsStringAndSize # define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;} # endif #endif /* PySequence_Size for old Pythons */ #if PY_VERSION_HEX < 0x02000000 # ifndef PySequence_Size # define PySequence_Size PySequence_Length # endif #endif /* PyBool_FromLong for old Pythons */ #if PY_VERSION_HEX < 0x02030000 static PyObject *PyBool_FromLong(long ok) { PyObject *result = ok ? Py_True : Py_False; Py_INCREF(result); return result; } #endif /* Py_ssize_t for old Pythons */ /* This code is as recommended by: */ /* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */ #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) typedef int Py_ssize_t; # define PY_SSIZE_T_MAX INT_MAX # define PY_SSIZE_T_MIN INT_MIN typedef inquiry lenfunc; typedef intargfunc ssizeargfunc; typedef intintargfunc ssizessizeargfunc; typedef intobjargproc ssizeobjargproc; typedef intintobjargproc ssizessizeobjargproc; typedef getreadbufferproc readbufferproc; typedef getwritebufferproc writebufferproc; typedef getsegcountproc segcountproc; typedef getcharbufferproc charbufferproc; static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc)) { long result = 0; PyObject *i = PyNumber_Int(x); if (i) { result = PyInt_AsLong(i); Py_DECREF(i); } return result; } #endif #if PY_VERSION_HEX < 0x02050000 #define PyInt_FromSize_t(x) PyInt_FromLong((long)x) #endif #if PY_VERSION_HEX < 0x02040000 #define Py_VISIT(op) \ do { \ if (op) { \ int vret = visit((op), arg); \ if (vret) \ return vret; \ } \ } while (0) #endif #if PY_VERSION_HEX < 0x02030000 typedef struct { PyTypeObject type; PyNumberMethods as_number; PyMappingMethods as_mapping; PySequenceMethods as_sequence; PyBufferProcs as_buffer; PyObject *name, *slots; } PyHeapTypeObject; #endif #if PY_VERSION_HEX < 0x02030000 typedef destructor freefunc; #endif #if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \ (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \ (PY_MAJOR_VERSION > 3)) # define SWIGPY_USE_CAPSULE # define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME) #endif #if PY_VERSION_HEX < 0x03020000 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) #endif /* ----------------------------------------------------------------------------- * error manipulation * ----------------------------------------------------------------------------- */ SWIGRUNTIME PyObject* SWIG_Python_ErrorType(int code) { PyObject* type = 0; switch(code) { case SWIG_MemoryError: type = PyExc_MemoryError; break; case SWIG_IOError: type = PyExc_IOError; break; case SWIG_RuntimeError: type = PyExc_RuntimeError; break; case SWIG_IndexError: type = PyExc_IndexError; break; case SWIG_TypeError: type = PyExc_TypeError; break; case SWIG_DivisionByZero: type = PyExc_ZeroDivisionError; break; case SWIG_OverflowError: type = PyExc_OverflowError; break; case SWIG_SyntaxError: type = PyExc_SyntaxError; break; case SWIG_ValueError: type = PyExc_ValueError; break; case SWIG_SystemError: type = PyExc_SystemError; break; case SWIG_AttributeError: type = PyExc_AttributeError; break; default: type = PyExc_RuntimeError; } return type; } SWIGRUNTIME void SWIG_Python_AddErrorMsg(const char* mesg) { PyObject *type = 0; PyObject *value = 0; PyObject *traceback = 0; if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback); if (value) { char *tmp; PyObject *old_str = PyObject_Str(value); PyErr_Clear(); Py_XINCREF(type); PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); SWIG_Python_str_DelForPy3(tmp); Py_DECREF(old_str); Py_DECREF(value); } else { PyErr_SetString(PyExc_RuntimeError, mesg); } } #if defined(SWIG_PYTHON_NO_THREADS) # if defined(SWIG_PYTHON_THREADS) # undef SWIG_PYTHON_THREADS # endif #endif #if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ # if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) # if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */ # define SWIG_PYTHON_USE_GIL # endif # endif # if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ # ifndef SWIG_PYTHON_INITIALIZE_THREADS # define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() # endif # ifdef __cplusplus /* C++ code */ class SWIG_Python_Thread_Block { bool status; PyGILState_STATE state; public: void end() { if (status) { PyGILState_Release(state); status = false;} } SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} ~SWIG_Python_Thread_Block() { end(); } }; class SWIG_Python_Thread_Allow { bool status; PyThreadState *save; public: void end() { if (status) { PyEval_RestoreThread(save); status = false; }} SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} ~SWIG_Python_Thread_Allow() { end(); } }; # define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block # define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() # define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow # define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() # else /* C code */ # define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() # define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) # define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() # define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) # endif # else /* Old thread way, not implemented, user must provide it */ # if !defined(SWIG_PYTHON_INITIALIZE_THREADS) # define SWIG_PYTHON_INITIALIZE_THREADS # endif # if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) # define SWIG_PYTHON_THREAD_BEGIN_BLOCK # endif # if !defined(SWIG_PYTHON_THREAD_END_BLOCK) # define SWIG_PYTHON_THREAD_END_BLOCK # endif # if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) # define SWIG_PYTHON_THREAD_BEGIN_ALLOW # endif # if !defined(SWIG_PYTHON_THREAD_END_ALLOW) # define SWIG_PYTHON_THREAD_END_ALLOW # endif # endif #else /* No thread support */ # define SWIG_PYTHON_INITIALIZE_THREADS # define SWIG_PYTHON_THREAD_BEGIN_BLOCK # define SWIG_PYTHON_THREAD_END_BLOCK # define SWIG_PYTHON_THREAD_BEGIN_ALLOW # define SWIG_PYTHON_THREAD_END_ALLOW #endif /* ----------------------------------------------------------------------------- * Python API portion that goes into the runtime * ----------------------------------------------------------------------------- */ #ifdef __cplusplus extern "C" { #endif /* ----------------------------------------------------------------------------- * Constant declarations * ----------------------------------------------------------------------------- */ /* Constant Types */ #define SWIG_PY_POINTER 4 #define SWIG_PY_BINARY 5 /* Constant information structure */ typedef struct swig_const_info { int type; char *name; long lvalue; double dvalue; void *pvalue; swig_type_info **ptype; } swig_const_info; /* ----------------------------------------------------------------------------- * Wrapper of PyInstanceMethod_New() used in Python 3 * It is exported to the generated module, used for -fastproxy * ----------------------------------------------------------------------------- */ #if PY_VERSION_HEX >= 0x03000000 SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) { return PyInstanceMethod_New(func); } #else SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(func)) { return NULL; } #endif #ifdef __cplusplus } #endif /* ----------------------------------------------------------------------------- * pyrun.swg * * This file contains the runtime support for Python modules * and includes code for managing global variables and pointer * type checking. * * ----------------------------------------------------------------------------- */ /* Common SWIG API */ /* for raw pointers */ #define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) #define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) #define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) #ifdef SWIGPYTHON_BUILTIN #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(self, ptr, type, flags) #else #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) #endif #define SWIG_InternalNewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) #define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) #define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) #define swig_owntype int /* for raw packed data */ #define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) /* for class or struct pointers */ #define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) #define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) /* for C or C++ function pointers */ #define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) #define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(NULL, ptr, type, 0) /* for C++ member pointers, ie, member methods */ #define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) /* Runtime API */ #define SWIG_GetModule(clientdata) SWIG_Python_GetModule(clientdata) #define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) #define SWIG_NewClientData(obj) SwigPyClientData_New(obj) #define SWIG_SetErrorObj SWIG_Python_SetErrorObj #define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg #define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) #define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) #define SWIG_fail goto fail /* Runtime API implementation */ /* Error manipulation */ SWIGINTERN void SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { SWIG_PYTHON_THREAD_BEGIN_BLOCK; PyErr_SetObject(errtype, obj); Py_DECREF(obj); SWIG_PYTHON_THREAD_END_BLOCK; } SWIGINTERN void SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { SWIG_PYTHON_THREAD_BEGIN_BLOCK; PyErr_SetString(errtype, msg); SWIG_PYTHON_THREAD_END_BLOCK; } #define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) /* Set a constant value */ #if defined(SWIGPYTHON_BUILTIN) SWIGINTERN void SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) { PyObject *s = PyString_InternFromString(key); PyList_Append(seq, s); Py_DECREF(s); } SWIGINTERN void SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) { #if PY_VERSION_HEX < 0x02030000 PyDict_SetItemString(d, (char *)name, obj); #else PyDict_SetItemString(d, name, obj); #endif Py_DECREF(obj); if (public_interface) SwigPyBuiltin_AddPublicSymbol(public_interface, name); } #else SWIGINTERN void SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { #if PY_VERSION_HEX < 0x02030000 PyDict_SetItemString(d, (char *)name, obj); #else PyDict_SetItemString(d, name, obj); #endif Py_DECREF(obj); } #endif /* Append a value to the result obj */ SWIGINTERN PyObject* SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { #if !defined(SWIG_PYTHON_OUTPUT_TUPLE) if (!result) { result = obj; } else if (result == Py_None) { Py_DECREF(result); result = obj; } else { if (!PyList_Check(result)) { PyObject *o2 = result; result = PyList_New(1); PyList_SetItem(result, 0, o2); } PyList_Append(result,obj); Py_DECREF(obj); } return result; #else PyObject* o2; PyObject* o3; if (!result) { result = obj; } else if (result == Py_None) { Py_DECREF(result); result = obj; } else { if (!PyTuple_Check(result)) { o2 = result; result = PyTuple_New(1); PyTuple_SET_ITEM(result, 0, o2); } o3 = PyTuple_New(1); PyTuple_SET_ITEM(o3, 0, obj); o2 = result; result = PySequence_Concat(o2, o3); Py_DECREF(o2); Py_DECREF(o3); } return result; #endif } /* Unpack the argument tuple */ SWIGINTERN int SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) { if (!args) { if (!min && !max) { return 1; } else { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", name, (min == max ? "" : "at least "), (int)min); return 0; } } if (!PyTuple_Check(args)) { if (min <= 1 && max >= 1) { register int i; objs[0] = args; for (i = 1; i < max; ++i) { objs[i] = 0; } return 2; } PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); return 0; } else { register Py_ssize_t l = PyTuple_GET_SIZE(args); if (l < min) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", name, (min == max ? "" : "at least "), (int)min, (int)l); return 0; } else if (l > max) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", name, (min == max ? "" : "at most "), (int)max, (int)l); return 0; } else { register int i; for (i = 0; i < l; ++i) { objs[i] = PyTuple_GET_ITEM(args, i); } for (; l < max; ++l) { objs[l] = 0; } return i + 1; } } } /* A functor is a function object with one single object argument */ #if PY_VERSION_HEX >= 0x02020000 #define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); #else #define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, "O", obj); #endif /* Helper for static pointer initialization for both C and C++ code, for example static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); */ #ifdef __cplusplus #define SWIG_STATIC_POINTER(var) var #else #define SWIG_STATIC_POINTER(var) var = 0; if (!var) var #endif /* ----------------------------------------------------------------------------- * Pointer declarations * ----------------------------------------------------------------------------- */ /* Flags for new pointer objects */ #define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) #define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) #define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) #define SWIG_BUILTIN_TP_INIT (SWIG_POINTER_OWN << 2) #define SWIG_BUILTIN_INIT (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN) #ifdef __cplusplus extern "C" { #endif /* How to access Py_None */ #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # ifndef SWIG_PYTHON_NO_BUILD_NONE # ifndef SWIG_PYTHON_BUILD_NONE # define SWIG_PYTHON_BUILD_NONE # endif # endif #endif #ifdef SWIG_PYTHON_BUILD_NONE # ifdef Py_None # undef Py_None # define Py_None SWIG_Py_None() # endif SWIGRUNTIMEINLINE PyObject * _SWIG_Py_None(void) { PyObject *none = Py_BuildValue((char*)""); Py_DECREF(none); return none; } SWIGRUNTIME PyObject * SWIG_Py_None(void) { static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None(); return none; } #endif /* The python void return value */ SWIGRUNTIMEINLINE PyObject * SWIG_Py_Void(void) { PyObject *none = Py_None; Py_INCREF(none); return none; } /* SwigPyClientData */ typedef struct { PyObject *klass; PyObject *newraw; PyObject *newargs; PyObject *destroy; int delargs; int implicitconv; PyTypeObject *pytype; } SwigPyClientData; SWIGRUNTIMEINLINE int SWIG_Python_CheckImplicit(swig_type_info *ty) { SwigPyClientData *data = (SwigPyClientData *)ty->clientdata; return data ? data->implicitconv : 0; } SWIGRUNTIMEINLINE PyObject * SWIG_Python_ExceptionType(swig_type_info *desc) { SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0; PyObject *klass = data ? data->klass : 0; return (klass ? klass : PyExc_RuntimeError); } SWIGRUNTIME SwigPyClientData * SwigPyClientData_New(PyObject* obj) { if (!obj) { return 0; } else { SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData)); /* the klass element */ data->klass = obj; Py_INCREF(data->klass); /* the newraw method and newargs arguments used to create a new raw instance */ if (PyClass_Check(obj)) { data->newraw = 0; data->newargs = obj; Py_INCREF(obj); } else { #if (PY_VERSION_HEX < 0x02020000) data->newraw = 0; #else data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__"); #endif if (data->newraw) { Py_INCREF(data->newraw); data->newargs = PyTuple_New(1); PyTuple_SetItem(data->newargs, 0, obj); } else { data->newargs = obj; } Py_INCREF(data->newargs); } /* the destroy method, aka as the C++ delete method */ data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__"); if (PyErr_Occurred()) { PyErr_Clear(); data->destroy = 0; } if (data->destroy) { int flags; Py_INCREF(data->destroy); flags = PyCFunction_GET_FLAGS(data->destroy); #ifdef METH_O data->delargs = !(flags & (METH_O)); #else data->delargs = 0; #endif } else { data->delargs = 0; } data->implicitconv = 0; data->pytype = 0; return data; } } SWIGRUNTIME void SwigPyClientData_Del(SwigPyClientData *data) { Py_XDECREF(data->newraw); Py_XDECREF(data->newargs); Py_XDECREF(data->destroy); } /* =============== SwigPyObject =====================*/ typedef struct { PyObject_HEAD void *ptr; swig_type_info *ty; int own; PyObject *next; #ifdef SWIGPYTHON_BUILTIN PyObject *dict; #endif } SwigPyObject; SWIGRUNTIME PyObject * SwigPyObject_long(SwigPyObject *v) { return PyLong_FromVoidPtr(v->ptr); } SWIGRUNTIME PyObject * SwigPyObject_format(const char* fmt, SwigPyObject *v) { PyObject *res = NULL; PyObject *args = PyTuple_New(1); if (args) { if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) { PyObject *ofmt = SWIG_Python_str_FromChar(fmt); if (ofmt) { #if PY_VERSION_HEX >= 0x03000000 res = PyUnicode_Format(ofmt,args); #else res = PyString_Format(ofmt,args); #endif Py_DECREF(ofmt); } Py_DECREF(args); } } return res; } SWIGRUNTIME PyObject * SwigPyObject_oct(SwigPyObject *v) { return SwigPyObject_format("%o",v); } SWIGRUNTIME PyObject * SwigPyObject_hex(SwigPyObject *v) { return SwigPyObject_format("%x",v); } SWIGRUNTIME PyObject * #ifdef METH_NOARGS SwigPyObject_repr(SwigPyObject *v) #else SwigPyObject_repr(SwigPyObject *v, PyObject *args) #endif { const char *name = SWIG_TypePrettyName(v->ty); PyObject *repr = SWIG_Python_str_FromFormat("", (name ? name : "unknown"), (void *)v); if (v->next) { # ifdef METH_NOARGS PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); # else PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args); # endif # if PY_VERSION_HEX >= 0x03000000 PyObject *joined = PyUnicode_Concat(repr, nrep); Py_DecRef(repr); Py_DecRef(nrep); repr = joined; # else PyString_ConcatAndDel(&repr,nrep); # endif } return repr; } SWIGRUNTIME int SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) { void *i = v->ptr; void *j = w->ptr; return (i < j) ? -1 : ((i > j) ? 1 : 0); } /* Added for Python 3.x, would it also be useful for Python 2.x? */ SWIGRUNTIME PyObject* SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op) { PyObject* res; if( op != Py_EQ && op != Py_NE ) { Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0); return res; } SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void); #ifdef SWIGPYTHON_BUILTIN static swig_type_info *SwigPyObject_stype = 0; SWIGRUNTIME PyTypeObject* SwigPyObject_type(void) { SwigPyClientData *cd; assert(SwigPyObject_stype); cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; assert(cd); assert(cd->pytype); return cd->pytype; } #else SWIGRUNTIME PyTypeObject* SwigPyObject_type(void) { static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce(); return type; } #endif SWIGRUNTIMEINLINE int SwigPyObject_Check(PyObject *op) { #ifdef SWIGPYTHON_BUILTIN PyTypeObject *target_tp = SwigPyObject_type(); if (PyType_IsSubtype(op->ob_type, target_tp)) return 1; return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0); #else return (Py_TYPE(op) == SwigPyObject_type()) || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0); #endif } SWIGRUNTIME PyObject * SwigPyObject_New(void *ptr, swig_type_info *ty, int own); SWIGRUNTIME void SwigPyObject_dealloc(PyObject *v) { SwigPyObject *sobj = (SwigPyObject *) v; PyObject *next = sobj->next; if (sobj->own == SWIG_POINTER_OWN) { swig_type_info *ty = sobj->ty; SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; PyObject *destroy = data ? data->destroy : 0; if (destroy) { /* destroy is always a VARARGS method */ PyObject *res; if (data->delargs) { /* we need to create a temporary object to carry the destroy operation */ PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0); res = SWIG_Python_CallFunctor(destroy, tmp); Py_DECREF(tmp); } else { PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); PyObject *mself = PyCFunction_GET_SELF(destroy); res = ((*meth)(mself, v)); } Py_XDECREF(res); } #if !defined(SWIG_PYTHON_SILENT_MEMLEAK) else { const char *name = SWIG_TypePrettyName(ty); printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); } #endif } Py_XDECREF(next); PyObject_DEL(v); } SWIGRUNTIME PyObject* SwigPyObject_append(PyObject* v, PyObject* next) { SwigPyObject *sobj = (SwigPyObject *) v; #ifndef METH_O PyObject *tmp = 0; if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL; next = tmp; #endif if (!SwigPyObject_Check(next)) { return NULL; } sobj->next = next; Py_INCREF(next); return SWIG_Py_Void(); } SWIGRUNTIME PyObject* #ifdef METH_NOARGS SwigPyObject_next(PyObject* v) #else SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *) v; if (sobj->next) { Py_INCREF(sobj->next); return sobj->next; } else { return SWIG_Py_Void(); } } SWIGINTERN PyObject* #ifdef METH_NOARGS SwigPyObject_disown(PyObject *v) #else SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *)v; sobj->own = 0; return SWIG_Py_Void(); } SWIGINTERN PyObject* #ifdef METH_NOARGS SwigPyObject_acquire(PyObject *v) #else SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *)v; sobj->own = SWIG_POINTER_OWN; return SWIG_Py_Void(); } SWIGINTERN PyObject* SwigPyObject_own(PyObject *v, PyObject *args) { PyObject *val = 0; #if (PY_VERSION_HEX < 0x02020000) if (!PyArg_ParseTuple(args,(char *)"|O:own",&val)) #elif (PY_VERSION_HEX < 0x02050000) if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) #else if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) #endif { return NULL; } else { SwigPyObject *sobj = (SwigPyObject *)v; PyObject *obj = PyBool_FromLong(sobj->own); if (val) { #ifdef METH_NOARGS if (PyObject_IsTrue(val)) { SwigPyObject_acquire(v); } else { SwigPyObject_disown(v); } #else if (PyObject_IsTrue(val)) { SwigPyObject_acquire(v,args); } else { SwigPyObject_disown(v,args); } #endif } return obj; } } #ifdef METH_O static PyMethodDef swigobject_methods[] = { {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"acquires ownership of the pointer"}, {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"}, {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"}, {0, 0, 0, 0} }; #else static PyMethodDef swigobject_methods[] = { {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_VARARGS, (char *)"releases ownership of the pointer"}, {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_VARARGS, (char *)"aquires ownership of the pointer"}, {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, {0, 0, 0, 0} }; #endif #if PY_VERSION_HEX < 0x02020000 SWIGINTERN PyObject * SwigPyObject_getattr(SwigPyObject *sobj,char *name) { return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name); } #endif SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void) { static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; static PyNumberMethods SwigPyObject_as_number = { (binaryfunc)0, /*nb_add*/ (binaryfunc)0, /*nb_subtract*/ (binaryfunc)0, /*nb_multiply*/ /* nb_divide removed in Python 3 */ #if PY_VERSION_HEX < 0x03000000 (binaryfunc)0, /*nb_divide*/ #endif (binaryfunc)0, /*nb_remainder*/ (binaryfunc)0, /*nb_divmod*/ (ternaryfunc)0,/*nb_power*/ (unaryfunc)0, /*nb_negative*/ (unaryfunc)0, /*nb_positive*/ (unaryfunc)0, /*nb_absolute*/ (inquiry)0, /*nb_nonzero*/ 0, /*nb_invert*/ 0, /*nb_lshift*/ 0, /*nb_rshift*/ 0, /*nb_and*/ 0, /*nb_xor*/ 0, /*nb_or*/ #if PY_VERSION_HEX < 0x03000000 0, /*nb_coerce*/ #endif (unaryfunc)SwigPyObject_long, /*nb_int*/ #if PY_VERSION_HEX < 0x03000000 (unaryfunc)SwigPyObject_long, /*nb_long*/ #else 0, /*nb_reserved*/ #endif (unaryfunc)0, /*nb_float*/ #if PY_VERSION_HEX < 0x03000000 (unaryfunc)SwigPyObject_oct, /*nb_oct*/ (unaryfunc)SwigPyObject_hex, /*nb_hex*/ #endif #if PY_VERSION_HEX >= 0x03000000 /* 3.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */ #elif PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ #elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ #elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */ 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ #endif }; static PyTypeObject swigpyobject_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX >= 0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"SwigPyObject", /* tp_name */ sizeof(SwigPyObject), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)SwigPyObject_dealloc, /* tp_dealloc */ 0, /* tp_print */ #if PY_VERSION_HEX < 0x02020000 (getattrfunc)SwigPyObject_getattr, /* tp_getattr */ #else (getattrfunc)0, /* tp_getattr */ #endif (setattrfunc)0, /* tp_setattr */ #if PY_VERSION_HEX >= 0x03000000 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */ #else (cmpfunc)SwigPyObject_compare, /* tp_compare */ #endif (reprfunc)SwigPyObject_repr, /* tp_repr */ &SwigPyObject_as_number, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)0, /* tp_hash */ (ternaryfunc)0, /* tp_call */ 0, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ swigobject_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0, /* tp_iter */ 0, /* tp_iternext */ swigobject_methods, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; swigpyobject_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 swigpyobject_type.ob_type = &PyType_Type; #else if (PyType_Ready(&swigpyobject_type) < 0) return NULL; #endif } return &swigpyobject_type; } SWIGRUNTIME PyObject * SwigPyObject_New(void *ptr, swig_type_info *ty, int own) { SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type()); if (sobj) { sobj->ptr = ptr; sobj->ty = ty; sobj->own = own; sobj->next = 0; } return (PyObject *)sobj; } /* ----------------------------------------------------------------------------- * Implements a simple Swig Packed type, and use it instead of string * ----------------------------------------------------------------------------- */ typedef struct { PyObject_HEAD void *pack; swig_type_info *ty; size_t size; } SwigPyPacked; SWIGRUNTIME int SwigPyPacked_print(SwigPyPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { char result[SWIG_BUFFER_SIZE]; fputs("pack, v->size, 0, sizeof(result))) { fputs("at ", fp); fputs(result, fp); } fputs(v->ty->name,fp); fputs(">", fp); return 0; } SWIGRUNTIME PyObject * SwigPyPacked_repr(SwigPyPacked *v) { char result[SWIG_BUFFER_SIZE]; if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { return SWIG_Python_str_FromFormat("", result, v->ty->name); } else { return SWIG_Python_str_FromFormat("", v->ty->name); } } SWIGRUNTIME PyObject * SwigPyPacked_str(SwigPyPacked *v) { char result[SWIG_BUFFER_SIZE]; if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name); } else { return SWIG_Python_str_FromChar(v->ty->name); } } SWIGRUNTIME int SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w) { size_t i = v->size; size_t j = w->size; int s = (i < j) ? -1 : ((i > j) ? 1 : 0); return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size); } SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void); SWIGRUNTIME PyTypeObject* SwigPyPacked_type(void) { static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce(); return type; } SWIGRUNTIMEINLINE int SwigPyPacked_Check(PyObject *op) { return ((op)->ob_type == SwigPyPacked_TypeOnce()) || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0); } SWIGRUNTIME void SwigPyPacked_dealloc(PyObject *v) { if (SwigPyPacked_Check(v)) { SwigPyPacked *sobj = (SwigPyPacked *) v; free(sobj->pack); } PyObject_DEL(v); } SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void) { static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; static PyTypeObject swigpypacked_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX>=0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"SwigPyPacked", /* tp_name */ sizeof(SwigPyPacked), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ (printfunc)SwigPyPacked_print, /* tp_print */ (getattrfunc)0, /* tp_getattr */ (setattrfunc)0, /* tp_setattr */ #if PY_VERSION_HEX>=0x03000000 0, /* tp_reserved in 3.0.1 */ #else (cmpfunc)SwigPyPacked_compare, /* tp_compare */ #endif (reprfunc)SwigPyPacked_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)0, /* tp_hash */ (ternaryfunc)0, /* tp_call */ (reprfunc)SwigPyPacked_str, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ swigpacked_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; swigpypacked_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 swigpypacked_type.ob_type = &PyType_Type; #else if (PyType_Ready(&swigpypacked_type) < 0) return NULL; #endif } return &swigpypacked_type; } SWIGRUNTIME PyObject * SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty) { SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type()); if (sobj) { void *pack = malloc(size); if (pack) { memcpy(pack, ptr, size); sobj->pack = pack; sobj->ty = ty; sobj->size = size; } else { PyObject_DEL((PyObject *) sobj); sobj = 0; } } return (PyObject *) sobj; } SWIGRUNTIME swig_type_info * SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size) { if (SwigPyPacked_Check(obj)) { SwigPyPacked *sobj = (SwigPyPacked *)obj; if (sobj->size != size) return 0; memcpy(ptr, sobj->pack, size); return sobj->ty; } else { return 0; } } /* ----------------------------------------------------------------------------- * pointers/data manipulation * ----------------------------------------------------------------------------- */ SWIGRUNTIMEINLINE PyObject * _SWIG_This(void) { return SWIG_Python_str_FromChar("this"); } static PyObject *swig_this = NULL; SWIGRUNTIME PyObject * SWIG_This(void) { if (swig_this == NULL) swig_this = _SWIG_This(); return swig_this; } /* #define SWIG_PYTHON_SLOW_GETSET_THIS */ /* TODO: I don't know how to implement the fast getset in Python 3 right now */ #if PY_VERSION_HEX>=0x03000000 #define SWIG_PYTHON_SLOW_GETSET_THIS #endif SWIGRUNTIME SwigPyObject * SWIG_Python_GetSwigThis(PyObject *pyobj) { PyObject *obj; if (SwigPyObject_Check(pyobj)) return (SwigPyObject *) pyobj; #ifdef SWIGPYTHON_BUILTIN (void)obj; # ifdef PyWeakref_CheckProxy if (PyWeakref_CheckProxy(pyobj)) { pyobj = PyWeakref_GET_OBJECT(pyobj); if (pyobj && SwigPyObject_Check(pyobj)) return (SwigPyObject*) pyobj; } # endif return NULL; #else obj = 0; #if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000)) if (PyInstance_Check(pyobj)) { obj = _PyInstance_Lookup(pyobj, SWIG_This()); } else { PyObject **dictptr = _PyObject_GetDictPtr(pyobj); if (dictptr != NULL) { PyObject *dict = *dictptr; obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; } else { #ifdef PyWeakref_CheckProxy if (PyWeakref_CheckProxy(pyobj)) { PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; } #endif obj = PyObject_GetAttr(pyobj,SWIG_This()); if (obj) { Py_DECREF(obj); } else { if (PyErr_Occurred()) PyErr_Clear(); return 0; } } } #else obj = PyObject_GetAttr(pyobj,SWIG_This()); if (obj) { Py_DECREF(obj); } else { if (PyErr_Occurred()) PyErr_Clear(); return 0; } #endif if (obj && !SwigPyObject_Check(obj)) { /* a PyObject is called 'this', try to get the 'real this' SwigPyObject from it */ return SWIG_Python_GetSwigThis(obj); } return (SwigPyObject *)obj; #endif } /* Acquire a pointer value */ SWIGRUNTIME int SWIG_Python_AcquirePtr(PyObject *obj, int own) { if (own == SWIG_POINTER_OWN) { SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); if (sobj) { int oldown = sobj->own; sobj->own = own; return oldown; } } return 0; } /* Convert a pointer value */ SWIGRUNTIME int SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { int res; SwigPyObject *sobj; int implicit_conv = (flags & SWIG_POINTER_IMPLICIT_CONV) != 0; if (!obj) return SWIG_ERROR; if (obj == Py_None && !implicit_conv) { if (ptr) *ptr = 0; return SWIG_OK; } res = SWIG_ERROR; sobj = SWIG_Python_GetSwigThis(obj); if (own) *own = 0; while (sobj) { void *vptr = sobj->ptr; if (ty) { swig_type_info *to = sobj->ty; if (to == ty) { /* no type cast needed */ if (ptr) *ptr = vptr; break; } else { swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); if (!tc) { sobj = (SwigPyObject *)sobj->next; } else { if (ptr) { int newmemory = 0; *ptr = SWIG_TypeCast(tc,vptr,&newmemory); if (newmemory == SWIG_CAST_NEW_MEMORY) { assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ if (own) *own = *own | SWIG_CAST_NEW_MEMORY; } } break; } } } else { if (ptr) *ptr = vptr; break; } } if (sobj) { if (own) *own = *own | sobj->own; if (flags & SWIG_POINTER_DISOWN) { sobj->own = 0; } res = SWIG_OK; } else { if (implicit_conv) { SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; if (data && !data->implicitconv) { PyObject *klass = data->klass; if (klass) { PyObject *impconv; data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ impconv = SWIG_Python_CallFunctor(klass, obj); data->implicitconv = 0; if (PyErr_Occurred()) { PyErr_Clear(); impconv = 0; } if (impconv) { SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv); if (iobj) { void *vptr; res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); if (SWIG_IsOK(res)) { if (ptr) { *ptr = vptr; /* transfer the ownership to 'ptr' */ iobj->own = 0; res = SWIG_AddCast(res); res = SWIG_AddNewMask(res); } else { res = SWIG_AddCast(res); } } } Py_DECREF(impconv); } } } } if (!SWIG_IsOK(res) && obj == Py_None) { if (ptr) *ptr = 0; if (PyErr_Occurred()) PyErr_Clear(); res = SWIG_OK; } } return res; } /* Convert a function ptr value */ SWIGRUNTIME int SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { if (!PyCFunction_Check(obj)) { return SWIG_ConvertPtr(obj, ptr, ty, 0); } else { void *vptr = 0; /* here we get the method pointer for callbacks */ const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; if (desc) desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; if (!desc) return SWIG_ERROR; if (ty) { swig_cast_info *tc = SWIG_TypeCheck(desc,ty); if (tc) { int newmemory = 0; *ptr = SWIG_TypeCast(tc,vptr,&newmemory); assert(!newmemory); /* newmemory handling not yet implemented */ } else { return SWIG_ERROR; } } else { *ptr = vptr; } return SWIG_OK; } } /* Convert a packed value value */ SWIGRUNTIME int SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz); if (!to) return SWIG_ERROR; if (ty) { if (to != ty) { /* check type cast? */ swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); if (!tc) return SWIG_ERROR; } } return SWIG_OK; } /* ----------------------------------------------------------------------------- * Create a new pointer object * ----------------------------------------------------------------------------- */ /* Create a new instance object, without calling __init__, and set the 'this' attribute. */ SWIGRUNTIME PyObject* SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this) { #if (PY_VERSION_HEX >= 0x02020000) PyObject *inst = 0; PyObject *newraw = data->newraw; if (newraw) { inst = PyObject_Call(newraw, data->newargs, NULL); if (inst) { #if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) PyObject **dictptr = _PyObject_GetDictPtr(inst); if (dictptr != NULL) { PyObject *dict = *dictptr; if (dict == NULL) { dict = PyDict_New(); *dictptr = dict; PyDict_SetItem(dict, SWIG_This(), swig_this); } } #else PyObject *key = SWIG_This(); PyObject_SetAttr(inst, key, swig_this); #endif } } else { #if PY_VERSION_HEX >= 0x03000000 inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None); if (inst) { PyObject_SetAttr(inst, SWIG_This(), swig_this); Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG; } #else PyObject *dict = PyDict_New(); if (dict) { PyDict_SetItem(dict, SWIG_This(), swig_this); inst = PyInstance_NewRaw(data->newargs, dict); Py_DECREF(dict); } #endif } return inst; #else #if (PY_VERSION_HEX >= 0x02010000) PyObject *inst = 0; PyObject *dict = PyDict_New(); if (dict) { PyDict_SetItem(dict, SWIG_This(), swig_this); inst = PyInstance_NewRaw(data->newargs, dict); Py_DECREF(dict); } return (PyObject *) inst; #else PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type); if (inst == NULL) { return NULL; } inst->in_class = (PyClassObject *)data->newargs; Py_INCREF(inst->in_class); inst->in_dict = PyDict_New(); if (inst->in_dict == NULL) { Py_DECREF(inst); return NULL; } #ifdef Py_TPFLAGS_HAVE_WEAKREFS inst->in_weakreflist = NULL; #endif #ifdef Py_TPFLAGS_GC PyObject_GC_Init(inst); #endif PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this); return (PyObject *) inst; #endif #endif } SWIGRUNTIME void SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) { PyObject *dict; #if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS) PyObject **dictptr = _PyObject_GetDictPtr(inst); if (dictptr != NULL) { dict = *dictptr; if (dict == NULL) { dict = PyDict_New(); *dictptr = dict; } PyDict_SetItem(dict, SWIG_This(), swig_this); return; } #endif dict = PyObject_GetAttrString(inst, (char*)"__dict__"); PyDict_SetItem(dict, SWIG_This(), swig_this); Py_DECREF(dict); } SWIGINTERN PyObject * SWIG_Python_InitShadowInstance(PyObject *args) { PyObject *obj[2]; if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) { return NULL; } else { SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]); if (sthis) { SwigPyObject_append((PyObject*) sthis, obj[1]); } else { SWIG_Python_SetSwigThis(obj[0], obj[1]); } return SWIG_Py_Void(); } } /* Create a new pointer object */ SWIGRUNTIME PyObject * SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) { SwigPyClientData *clientdata; PyObject * robj; int own; if (!ptr) return SWIG_Py_Void(); clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0; own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; if (clientdata && clientdata->pytype) { SwigPyObject *newobj; if (flags & SWIG_BUILTIN_TP_INIT) { newobj = (SwigPyObject*) self; if (newobj->ptr) { PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0); while (newobj->next) newobj = (SwigPyObject *) newobj->next; newobj->next = next_self; newobj = (SwigPyObject *)next_self; } } else { newobj = PyObject_New(SwigPyObject, clientdata->pytype); } if (newobj) { newobj->ptr = ptr; newobj->ty = type; newobj->own = own; newobj->next = 0; #ifdef SWIGPYTHON_BUILTIN newobj->dict = 0; #endif return (PyObject*) newobj; } return SWIG_Py_Void(); } assert(!(flags & SWIG_BUILTIN_TP_INIT)); robj = SwigPyObject_New(ptr, type, own); if (robj && clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); Py_DECREF(robj); robj = inst; } return robj; } /* Create a new packed object */ SWIGRUNTIMEINLINE PyObject * SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); } /* -----------------------------------------------------------------------------* * Get type list * -----------------------------------------------------------------------------*/ #ifdef SWIG_LINK_RUNTIME void *SWIG_ReturnGlobalTypeList(void *); #endif SWIGRUNTIME swig_module_info * SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { static void *type_pointer = (void *)0; /* first check if module already created */ if (!type_pointer) { #ifdef SWIG_LINK_RUNTIME type_pointer = SWIG_ReturnGlobalTypeList((void *)0); #else # ifdef SWIGPY_USE_CAPSULE type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); # else type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME); # endif if (PyErr_Occurred()) { PyErr_Clear(); type_pointer = (void *)0; } #endif } return (swig_module_info *) type_pointer; } #if PY_MAJOR_VERSION < 2 /* PyModule_AddObject function was introduced in Python 2.0. The following function is copied out of Python/modsupport.c in python version 2.3.4 */ SWIGINTERN int PyModule_AddObject(PyObject *m, char *name, PyObject *o) { PyObject *dict; if (!PyModule_Check(m)) { PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs module as first arg"); return SWIG_ERROR; } if (!o) { PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs non-NULL value"); return SWIG_ERROR; } dict = PyModule_GetDict(m); if (dict == NULL) { /* Internal error -- modules must have a dict! */ PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__", PyModule_GetName(m)); return SWIG_ERROR; } if (PyDict_SetItemString(dict, name, o)) return SWIG_ERROR; Py_DECREF(o); return SWIG_OK; } #endif SWIGRUNTIME void #ifdef SWIGPY_USE_CAPSULE SWIG_Python_DestroyModule(PyObject *obj) #else SWIG_Python_DestroyModule(void *vptr) #endif { #ifdef SWIGPY_USE_CAPSULE swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME); #else swig_module_info *swig_module = (swig_module_info *) vptr; #endif swig_type_info **types = swig_module->types; size_t i; for (i =0; i < swig_module->size; ++i) { swig_type_info *ty = types[i]; if (ty->owndata) { SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; if (data) SwigPyClientData_Del(data); } } Py_DECREF(SWIG_This()); swig_this = NULL; } SWIGRUNTIME void SWIG_Python_SetModule(swig_module_info *swig_module) { #if PY_VERSION_HEX >= 0x03000000 /* Add a dummy module object into sys.modules */ PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION); #else static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table); #endif #ifdef SWIGPY_USE_CAPSULE PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); if (pointer && module) { PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer); } else { Py_XDECREF(pointer); } #else PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule); if (pointer && module) { PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer); } else { Py_XDECREF(pointer); } #endif } /* The python cached type query */ SWIGRUNTIME PyObject * SWIG_Python_TypeCache(void) { static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); return cache; } SWIGRUNTIME swig_type_info * SWIG_Python_TypeQuery(const char *type) { PyObject *cache = SWIG_Python_TypeCache(); PyObject *key = SWIG_Python_str_FromChar(type); PyObject *obj = PyDict_GetItem(cache, key); swig_type_info *descriptor; if (obj) { #ifdef SWIGPY_USE_CAPSULE descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL); #else descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj); #endif } else { swig_module_info *swig_module = SWIG_GetModule(0); descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); if (descriptor) { #ifdef SWIGPY_USE_CAPSULE obj = PyCapsule_New((void*) descriptor, NULL, NULL); #else obj = PyCObject_FromVoidPtr(descriptor, NULL); #endif PyDict_SetItem(cache, key, obj); Py_DECREF(obj); } } Py_DECREF(key); return descriptor; } /* For backward compatibility only */ #define SWIG_POINTER_EXCEPTION 0 #define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) #define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) SWIGRUNTIME int SWIG_Python_AddErrMesg(const char* mesg, int infront) { if (PyErr_Occurred()) { PyObject *type = 0; PyObject *value = 0; PyObject *traceback = 0; PyErr_Fetch(&type, &value, &traceback); if (value) { char *tmp; PyObject *old_str = PyObject_Str(value); Py_XINCREF(type); PyErr_Clear(); if (infront) { PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str)); } else { PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); } SWIG_Python_str_DelForPy3(tmp); Py_DECREF(old_str); } return 1; } else { return 0; } } SWIGRUNTIME int SWIG_Python_ArgFail(int argnum) { if (PyErr_Occurred()) { /* add information about failing argument */ char mesg[256]; PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); return SWIG_Python_AddErrMesg(mesg, 1); } else { return 0; } } SWIGRUNTIMEINLINE const char * SwigPyObject_GetDesc(PyObject *self) { SwigPyObject *v = (SwigPyObject *)self; swig_type_info *ty = v ? v->ty : 0; return ty ? ty->str : ""; } SWIGRUNTIME void SWIG_Python_TypeError(const char *type, PyObject *obj) { if (type) { #if defined(SWIG_COBJECT_TYPES) if (obj && SwigPyObject_Check(obj)) { const char *otype = (const char *) SwigPyObject_GetDesc(obj); if (otype) { PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received", type, otype); return; } } else #endif { const char *otype = (obj ? obj->ob_type->tp_name : 0); if (otype) { PyObject *str = PyObject_Str(obj); const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0; if (cstr) { PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", type, otype, cstr); SWIG_Python_str_DelForPy3(cstr); } else { PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", type, otype); } Py_XDECREF(str); return; } } PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); } else { PyErr_Format(PyExc_TypeError, "unexpected type is received"); } } /* Convert a pointer value, signal an exception on a type mismatch */ SWIGRUNTIME void * SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) { void *result; if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { PyErr_Clear(); #if SWIG_POINTER_EXCEPTION if (flags) { SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); SWIG_Python_ArgFail(argnum); } #endif } return result; } #ifdef SWIGPYTHON_BUILTIN SWIGRUNTIME int SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) { PyTypeObject *tp = obj->ob_type; PyObject *descr; PyObject *encoded_name; descrsetfunc f; int res = -1; # ifdef Py_USING_UNICODE if (PyString_Check(name)) { name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL); if (!name) return -1; } else if (!PyUnicode_Check(name)) # else if (!PyString_Check(name)) # endif { PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name); return -1; } else { Py_INCREF(name); } if (!tp->tp_dict) { if (PyType_Ready(tp) < 0) goto done; } descr = _PyType_Lookup(tp, name); f = NULL; if (descr != NULL) f = descr->ob_type->tp_descr_set; if (!f) { if (PyString_Check(name)) { encoded_name = name; Py_INCREF(name); } else { encoded_name = PyUnicode_AsUTF8String(name); } PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name)); Py_DECREF(encoded_name); } else { res = f(descr, obj, value); } done: Py_DECREF(name); return res; } #endif #ifdef __cplusplus } #endif #define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else #define SWIG_exception(code, msg) do { SWIG_Error(code, msg); SWIG_fail;; } while(0) /* -------- TYPES TABLE (BEGIN) -------- */ #define SWIGTYPE_p_GType swig_types[0] #define SWIGTYPE_p_VBuffer swig_types[1] #define SWIGTYPE_p__VipsImage swig_types[2] #define SWIGTYPE_p_allocator_type swig_types[3] #define SWIGTYPE_p_char swig_types[4] #define SWIGTYPE_p_difference_type swig_types[5] #define SWIGTYPE_p_double swig_types[6] #define SWIGTYPE_p_float swig_types[7] #define SWIGTYPE_p_gboolean swig_types[8] #define SWIGTYPE_p_int swig_types[9] #define SWIGTYPE_p_matrix swig_types[10] #define SWIGTYPE_p_p_PyObject swig_types[11] #define SWIGTYPE_p_p_char swig_types[12] #define SWIGTYPE_p_size_t swig_types[13] #define SWIGTYPE_p_size_type swig_types[14] #define SWIGTYPE_p_std__allocatorT_double_t swig_types[15] #define SWIGTYPE_p_std__allocatorT_int_t swig_types[16] #define SWIGTYPE_p_std__allocatorT_vips__VImage_t swig_types[17] #define SWIGTYPE_p_std__invalid_argument swig_types[18] #define SWIGTYPE_p_std__vectorT__Tp__Alloc_t swig_types[19] #define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[20] #define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[21] #define SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t swig_types[22] #define SWIGTYPE_p_swig__SwigPyIterator swig_types[23] #define SWIGTYPE_p_value_type swig_types[24] #define SWIGTYPE_p_vips__VDMask swig_types[25] #define SWIGTYPE_p_vips__VDisplay swig_types[26] #define SWIGTYPE_p_vips__VError swig_types[27] #define SWIGTYPE_p_vips__VIMask swig_types[28] #define SWIGTYPE_p_vips__VImage swig_types[29] #define SWIGTYPE_p_void swig_types[30] static swig_type_info *swig_types[32]; static swig_module_info swig_module = {swig_types, 31, 0, 0, 0, 0}; #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) /* -------- TYPES TABLE (END) -------- */ #if (PY_VERSION_HEX <= 0x02000000) # if !defined(SWIG_PYTHON_CLASSIC) # error "This python version requires swig to be run with the '-classic' option" # endif #endif /*----------------------------------------------- @(target):= vimagemodule.so ------------------------------------------------*/ #if PY_VERSION_HEX >= 0x03000000 # define SWIG_init PyInit_vimagemodule #else # define SWIG_init initvimagemodule #endif #define SWIG_name "vimagemodule" #define SWIGVERSION 0x020012 #define SWIG_VERSION SWIGVERSION #define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a)) #include namespace swig { class SwigPtr_PyObject { protected: PyObject *_obj; public: SwigPtr_PyObject() :_obj(0) { } SwigPtr_PyObject(const SwigPtr_PyObject& item) : _obj(item._obj) { Py_XINCREF(_obj); } SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj) { if (initial_ref) { Py_XINCREF(_obj); } } SwigPtr_PyObject & operator=(const SwigPtr_PyObject& item) { Py_XINCREF(item._obj); Py_XDECREF(_obj); _obj = item._obj; return *this; } ~SwigPtr_PyObject() { Py_XDECREF(_obj); } operator PyObject *() const { return _obj; } PyObject *operator->() const { return _obj; } }; } namespace swig { struct SwigVar_PyObject : SwigPtr_PyObject { SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { } SwigVar_PyObject & operator = (PyObject* obj) { Py_XDECREF(_obj); _obj = obj; return *this; } }; } #include /* We need the C API too for the args init and some of the * frombuffer/tobuffer stuff. */ #include #include #if PY_VERSION_HEX >= 0x03020000 # define SWIGPY_SLICE_ARG(obj) ((PyObject*) (obj)) #else # define SWIGPY_SLICE_ARG(obj) ((PySliceObject*) (obj)) #endif #include #if defined(__GNUC__) # if __GNUC__ == 2 && __GNUC_MINOR <= 96 # define SWIG_STD_NOMODERN_STL # endif #endif #include #include #include #include namespace swig { struct stop_iteration { }; struct SwigPyIterator { private: SwigPtr_PyObject _seq; protected: SwigPyIterator(PyObject *seq) : _seq(seq) { } public: virtual ~SwigPyIterator() {} // Access iterator method, required by Python virtual PyObject *value() const = 0; // Forward iterator method, required by Python virtual SwigPyIterator *incr(size_t n = 1) = 0; // Backward iterator method, very common in C++, but not required in Python virtual SwigPyIterator *decr(size_t /*n*/ = 1) { throw stop_iteration(); } // Random access iterator methods, but not required in Python virtual ptrdiff_t distance(const SwigPyIterator &/*x*/) const { throw std::invalid_argument("operation not supported"); } virtual bool equal (const SwigPyIterator &/*x*/) const { throw std::invalid_argument("operation not supported"); } // C++ common/needed methods virtual SwigPyIterator *copy() const = 0; PyObject *next() { SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads PyObject *obj = value(); incr(); SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads return obj; } /* Make an alias for Python 3.x */ PyObject *__next__() { return next(); } PyObject *previous() { SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads decr(); PyObject *obj = value(); SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads return obj; } SwigPyIterator *advance(ptrdiff_t n) { return (n > 0) ? incr(n) : decr(-n); } bool operator == (const SwigPyIterator& x) const { return equal(x); } bool operator != (const SwigPyIterator& x) const { return ! operator==(x); } SwigPyIterator& operator += (ptrdiff_t n) { return *advance(n); } SwigPyIterator& operator -= (ptrdiff_t n) { return *advance(-n); } SwigPyIterator* operator + (ptrdiff_t n) const { return copy()->advance(n); } SwigPyIterator* operator - (ptrdiff_t n) const { return copy()->advance(-n); } ptrdiff_t operator - (const SwigPyIterator& x) const { return x.distance(*this); } static swig_type_info* descriptor() { static int init = 0; static swig_type_info* desc = 0; if (!init) { desc = SWIG_TypeQuery("swig::SwigPyIterator *"); init = 1; } return desc; } }; #if defined(SWIGPYTHON_BUILTIN) inline PyObject* make_output_iterator_builtin (PyObject *pyself) { Py_INCREF(pyself); return pyself; } #endif } SWIGINTERN int SWIG_AsVal_double (PyObject *obj, double *val) { int res = SWIG_TypeError; if (PyFloat_Check(obj)) { if (val) *val = PyFloat_AsDouble(obj); return SWIG_OK; } else if (PyInt_Check(obj)) { if (val) *val = PyInt_AsLong(obj); return SWIG_OK; } else if (PyLong_Check(obj)) { double v = PyLong_AsDouble(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_OK; } else { PyErr_Clear(); } } #ifdef SWIG_PYTHON_CAST_MODE { int dispatch = 0; double d = PyFloat_AsDouble(obj); if (!PyErr_Occurred()) { if (val) *val = d; return SWIG_AddCast(SWIG_OK); } else { PyErr_Clear(); } if (!dispatch) { long v = PyLong_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); } else { PyErr_Clear(); } } } #endif return res; } #include #include SWIGINTERNINLINE int SWIG_CanCastAsInteger(double *d, double min, double max) { double x = *d; if ((min <= x && x <= max)) { double fx = floor(x); double cx = ceil(x); double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ if ((errno == EDOM) || (errno == ERANGE)) { errno = 0; } else { double summ, reps, diff; if (rd < x) { diff = x - rd; } else if (rd > x) { diff = rd - x; } else { return 1; } summ = rd + x; reps = diff/summ; if (reps < 8*DBL_EPSILON) { *d = rd; return 1; } } } return 0; } SWIGINTERN int SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) { #if PY_VERSION_HEX < 0x03000000 if (PyInt_Check(obj)) { long v = PyInt_AsLong(obj); if (v >= 0) { if (val) *val = v; return SWIG_OK; } else { return SWIG_OverflowError; } } else #endif if (PyLong_Check(obj)) { unsigned long v = PyLong_AsUnsignedLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_OK; } else { PyErr_Clear(); #if PY_VERSION_HEX >= 0x03000000 { long v = PyLong_AsLong(obj); if (!PyErr_Occurred()) { if (v < 0) { return SWIG_OverflowError; } } else { PyErr_Clear(); } } #endif } } #ifdef SWIG_PYTHON_CAST_MODE { int dispatch = 0; unsigned long v = PyLong_AsUnsignedLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_AddCast(SWIG_OK); } else { PyErr_Clear(); } if (!dispatch) { double d; int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { if (val) *val = (unsigned long)(d); return res; } } } #endif return SWIG_TypeError; } SWIGINTERNINLINE int SWIG_AsVal_size_t (PyObject * obj, size_t *val) { unsigned long v; int res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0); if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v); return res; } #define SWIG_From_long PyLong_FromLong SWIGINTERNINLINE PyObject * SWIG_From_ptrdiff_t (ptrdiff_t value) { return SWIG_From_long (static_cast< long >(value)); } SWIGINTERNINLINE PyObject* SWIG_From_bool (bool value) { return PyBool_FromLong(value ? 1 : 0); } SWIGINTERN int SWIG_AsVal_long (PyObject *obj, long* val) { if (PyInt_Check(obj)) { if (val) *val = PyInt_AsLong(obj); return SWIG_OK; } else if (PyLong_Check(obj)) { long v = PyLong_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_OK; } else { PyErr_Clear(); } } #ifdef SWIG_PYTHON_CAST_MODE { int dispatch = 0; long v = PyInt_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_AddCast(SWIG_OK); } else { PyErr_Clear(); } if (!dispatch) { double d; int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { if (val) *val = (long)(d); return res; } } } #endif return SWIG_TypeError; } SWIGINTERNINLINE int SWIG_AsVal_ptrdiff_t (PyObject * obj, ptrdiff_t *val) { long v; int res = SWIG_AsVal_long (obj, val ? &v : 0); if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v); return res; } #include #include #include #include #include #include namespace swig { template struct noconst_traits { typedef Type noconst_type; }; template struct noconst_traits { typedef Type noconst_type; }; /* type categories */ struct pointer_category { }; struct value_category { }; /* General traits that provides type_name and type_info */ template struct traits { }; template inline const char* type_name() { return traits::noconst_type >::type_name(); } template struct traits_info { static swig_type_info *type_query(std::string name) { name += " *"; return SWIG_TypeQuery(name.c_str()); } static swig_type_info *type_info() { static swig_type_info *info = type_query(type_name()); return info; } }; template inline swig_type_info *type_info() { return traits_info::type_info(); } /* Partial specialization for pointers */ template struct traits { typedef pointer_category category; static std::string make_ptr_name(const char* name) { std::string ptrname = name; ptrname += " *"; return ptrname; } static const char* type_name() { static std::string name = make_ptr_name(swig::type_name()); return name.c_str(); } }; template struct traits_as { }; template struct traits_check { }; } namespace swig { /* Traits that provides the from method */ template struct traits_from_ptr { static PyObject *from(Type *val, int owner = 0) { return SWIG_InternalNewPointerObj(val, type_info(), owner); } }; template struct traits_from { static PyObject *from(const Type& val) { return traits_from_ptr::from(new Type(val), 1); } }; template struct traits_from { static PyObject *from(Type* val) { return traits_from_ptr::from(val, 0); } }; template struct traits_from { static PyObject *from(const Type* val) { return traits_from_ptr::from(const_cast(val), 0); } }; template inline PyObject *from(const Type& val) { return traits_from::from(val); } template inline PyObject *from_ptr(Type* val, int owner) { return traits_from_ptr::from(val, owner); } /* Traits that provides the asval/as/check method */ template struct traits_asptr { static int asptr(PyObject *obj, Type **val) { Type *p; int res = SWIG_ConvertPtr(obj, (void**)&p, type_info(), 0); if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; template inline int asptr(PyObject *obj, Type **vptr) { return traits_asptr::asptr(obj, vptr); } template struct traits_asval { static int asval(PyObject *obj, Type *val) { if (val) { Type *p = 0; int res = traits_asptr::asptr(obj, &p); if (!SWIG_IsOK(res)) return res; if (p) { typedef typename noconst_traits::noconst_type noconst_type; *(const_cast(val)) = *p; if (SWIG_IsNewObj(res)){ delete p; res = SWIG_DelNewMask(res); } return res; } else { return SWIG_ERROR; } } else { return traits_asptr::asptr(obj, (Type **)(0)); } } }; template struct traits_asval { static int asval(PyObject *obj, Type **val) { if (val) { typedef typename noconst_traits::noconst_type noconst_type; noconst_type *p = 0; int res = traits_asptr::asptr(obj, &p); if (SWIG_IsOK(res)) { *(const_cast(val)) = p; } return res; } else { return traits_asptr::asptr(obj, (Type **)(0)); } } }; template inline int asval(PyObject *obj, Type *val) { return traits_asval::asval(obj, val); } template struct traits_as { static Type as(PyObject *obj, bool throw_error) { Type v; int res = asval(obj, &v); if (!obj || !SWIG_IsOK(res)) { if (!PyErr_Occurred()) { ::SWIG_Error(SWIG_TypeError, swig::type_name()); } if (throw_error) throw std::invalid_argument("bad type"); } return v; } }; template struct traits_as { static Type as(PyObject *obj, bool throw_error) { Type *v = 0; int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); if (SWIG_IsOK(res) && v) { if (SWIG_IsNewObj(res)) { Type r(*v); delete v; return r; } else { return *v; } } else { // Uninitialized return value, no Type() constructor required. static Type *v_def = (Type*) malloc(sizeof(Type)); if (!PyErr_Occurred()) { SWIG_Error(SWIG_TypeError, swig::type_name()); } if (throw_error) throw std::invalid_argument("bad type"); memset(v_def,0,sizeof(Type)); return *v_def; } } }; template struct traits_as { static Type* as(PyObject *obj, bool throw_error) { Type *v = 0; int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); if (SWIG_IsOK(res)) { return v; } else { if (!PyErr_Occurred()) { SWIG_Error(SWIG_TypeError, swig::type_name()); } if (throw_error) throw std::invalid_argument("bad type"); return 0; } } }; template inline Type as(PyObject *obj, bool te = false) { return traits_as::category>::as(obj, te); } template struct traits_check { static bool check(PyObject *obj) { int res = obj ? asval(obj, (Type *)(0)) : SWIG_ERROR; return SWIG_IsOK(res) ? true : false; } }; template struct traits_check { static bool check(PyObject *obj) { int res = obj ? asptr(obj, (Type **)(0)) : SWIG_ERROR; return SWIG_IsOK(res) ? true : false; } }; template inline bool check(PyObject *obj) { return traits_check::category>::check(obj); } } #include namespace std { template <> struct less : public binary_function { bool operator()(PyObject * v, PyObject *w) const { bool res; SWIG_PYTHON_THREAD_BEGIN_BLOCK; res = PyObject_RichCompareBool(v, w, Py_LT) ? true : false; /* This may fall into a case of inconsistent eg. ObjA > ObjX > ObjB but ObjA < ObjB */ if( PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_TypeError) ) { /* Objects can't be compared, this mostly occurred in Python 3.0 */ /* Compare their ptr directly for a workaround */ res = (v < w); PyErr_Clear(); } SWIG_PYTHON_THREAD_END_BLOCK; return res; } }; template <> struct less : public binary_function { bool operator()(const swig::SwigPtr_PyObject& v, const swig::SwigPtr_PyObject& w) const { return std::less()(v, w); } }; template <> struct less : public binary_function { bool operator()(const swig::SwigVar_PyObject& v, const swig::SwigVar_PyObject& w) const { return std::less()(v, w); } }; } namespace swig { template <> struct traits { typedef value_category category; static const char* type_name() { return "PyObject *"; } }; template <> struct traits_asval { typedef PyObject * value_type; static int asval(PyObject *obj, value_type *val) { if (val) *val = obj; return SWIG_OK; } }; template <> struct traits_check { static bool check(PyObject *) { return true; } }; template <> struct traits_from { typedef PyObject * value_type; static PyObject *from(const value_type& val) { Py_XINCREF(val); return val; } }; } namespace swig { template inline size_t check_index(Difference i, size_t size, bool insert = false) { if ( i < 0 ) { if ((size_t) (-i) <= size) return (size_t) (i + size); } else if ( (size_t) i < size ) { return (size_t) i; } else if (insert && ((size_t) i == size)) { return size; } throw std::out_of_range("index out of range"); } template void slice_adjust(Difference i, Difference j, Py_ssize_t step, size_t size, Difference &ii, Difference &jj, bool insert = false) { if (step == 0) { throw std::invalid_argument("slice step cannot be zero"); } else if (step > 0) { // Required range: 0 <= i < size, 0 <= j < size if (i < 0) { ii = 0; } else if (i < (Difference)size) { ii = i; } else if (insert && (i >= (Difference)size)) { ii = (Difference)size; } if ( j < 0 ) { jj = 0; } else { jj = (j < (Difference)size) ? j : (Difference)size; } } else { // Required range: -1 <= i < size-1, -1 <= j < size-1 if (i < -1) { ii = -1; } else if (i < (Difference) size) { ii = i; } else if (i >= (Difference)(size-1)) { ii = (Difference)(size-1); } if (j < -1) { jj = -1; } else { jj = (j < (Difference)size ) ? j : (Difference)(size-1); } } } template inline typename Sequence::iterator getpos(Sequence* self, Difference i) { typename Sequence::iterator pos = self->begin(); std::advance(pos, check_index(i,self->size())); return pos; } template inline typename Sequence::const_iterator cgetpos(const Sequence* self, Difference i) { typename Sequence::const_iterator pos = self->begin(); std::advance(pos, check_index(i,self->size())); return pos; } template inline Sequence* getslice(const Sequence* self, Difference i, Difference j, Py_ssize_t step) { typename Sequence::size_type size = self->size(); Difference ii = 0; Difference jj = 0; swig::slice_adjust(i, j, step, size, ii, jj); if (step > 0) { typename Sequence::const_iterator sb = self->begin(); typename Sequence::const_iterator se = self->begin(); std::advance(sb,ii); std::advance(se,jj); if (step == 1) { return new Sequence(sb, se); } else { Sequence *sequence = new Sequence(); typename Sequence::const_iterator it = sb; while (it!=se) { sequence->push_back(*it); for (Py_ssize_t c=0; c jj) { typename Sequence::const_reverse_iterator sb = self->rbegin(); typename Sequence::const_reverse_iterator se = self->rbegin(); std::advance(sb,size-ii-1); std::advance(se,size-jj-1); typename Sequence::const_reverse_iterator it = sb; while (it!=se) { sequence->push_back(*it); for (Py_ssize_t c=0; c<-step && it!=se; ++c) it++; } } return sequence; } } template inline void setslice(Sequence* self, Difference i, Difference j, Py_ssize_t step, const InputSeq& is = InputSeq()) { typename Sequence::size_type size = self->size(); Difference ii = 0; Difference jj = 0; swig::slice_adjust(i, j, step, size, ii, jj, true); if (step > 0) { if (jj < ii) jj = ii; if (step == 1) { size_t ssize = jj - ii; if (ssize <= is.size()) { // expanding/staying the same size typename Sequence::iterator sb = self->begin(); typename InputSeq::const_iterator isit = is.begin(); std::advance(sb,ii); std::advance(isit, jj - ii); self->insert(std::copy(is.begin(), isit, sb), isit, is.end()); } else { // shrinking typename Sequence::iterator sb = self->begin(); typename Sequence::iterator se = self->begin(); std::advance(sb,ii); std::advance(se,jj); self->erase(sb,se); sb = self->begin(); std::advance(sb,ii); self->insert(sb, is.begin(), is.end()); } } else { size_t replacecount = (jj - ii + step - 1) / step; if (is.size() != replacecount) { char msg[1024]; sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); throw std::invalid_argument(msg); } typename Sequence::const_iterator isit = is.begin(); typename Sequence::iterator it = self->begin(); std::advance(it,ii); for (size_t rc=0; rcend(); ++c) it++; } } } else { if (jj > ii) jj = ii; size_t replacecount = (ii - jj - step - 1) / -step; if (is.size() != replacecount) { char msg[1024]; sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); throw std::invalid_argument(msg); } typename Sequence::const_iterator isit = is.begin(); typename Sequence::reverse_iterator it = self->rbegin(); std::advance(it,size-ii-1); for (size_t rc=0; rcrend(); ++c) it++; } } } template inline void delslice(Sequence* self, Difference i, Difference j, Py_ssize_t step) { typename Sequence::size_type size = self->size(); Difference ii = 0; Difference jj = 0; swig::slice_adjust(i, j, step, size, ii, jj, true); if (step > 0) { if (jj > ii) { typename Sequence::iterator sb = self->begin(); std::advance(sb,ii); if (step == 1) { typename Sequence::iterator se = self->begin(); std::advance(se,jj); self->erase(sb,se); } else { typename Sequence::iterator it = sb; size_t delcount = (jj - ii + step - 1) / step; while (delcount) { it = self->erase(it); for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) it++; delcount--; } } } } else { if (ii > jj) { typename Sequence::reverse_iterator sb = self->rbegin(); std::advance(sb,size-ii-1); typename Sequence::reverse_iterator it = sb; size_t delcount = (ii - jj - step - 1) / -step; while (delcount) { it = typename Sequence::reverse_iterator(self->erase((++it).base())); for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) it++; delcount--; } } } } } #if defined(__SUNPRO_CC) && defined(_RWSTD_VER) # if !defined(SWIG_NO_STD_NOITERATOR_TRAITS_STL) # define SWIG_STD_NOITERATOR_TRAITS_STL # endif #endif #if !defined(SWIG_STD_NOITERATOR_TRAITS_STL) #include #else namespace std { template struct iterator_traits { typedef ptrdiff_t difference_type; typedef typename Iterator::value_type value_type; }; template struct iterator_traits<__reverse_bi_iterator > { typedef Distance difference_type; typedef T value_type; }; template struct iterator_traits { typedef T value_type; typedef ptrdiff_t difference_type; }; template inline typename iterator_traits<_InputIterator>::difference_type distance(_InputIterator __first, _InputIterator __last) { typename iterator_traits<_InputIterator>::difference_type __n = 0; while (__first != __last) { ++__first; ++__n; } return __n; } } #endif namespace swig { template class SwigPyIterator_T : public SwigPyIterator { public: typedef OutIterator out_iterator; typedef typename std::iterator_traits::value_type value_type; typedef SwigPyIterator_T self_type; SwigPyIterator_T(out_iterator curr, PyObject *seq) : SwigPyIterator(seq), current(curr) { } const out_iterator& get_current() const { return current; } bool equal (const SwigPyIterator &iter) const { const self_type *iters = dynamic_cast(&iter); if (iters) { return (current == iters->get_current()); } else { throw std::invalid_argument("bad iterator type"); } } ptrdiff_t distance(const SwigPyIterator &iter) const { const self_type *iters = dynamic_cast(&iter); if (iters) { return std::distance(current, iters->get_current()); } else { throw std::invalid_argument("bad iterator type"); } } protected: out_iterator current; }; template struct from_oper { typedef const ValueType& argument_type; typedef PyObject *result_type; result_type operator()(argument_type v) const { return swig::from(v); } }; template::value_type, typename FromOper = from_oper > class SwigPyIteratorOpen_T : public SwigPyIterator_T { public: FromOper from; typedef OutIterator out_iterator; typedef ValueType value_type; typedef SwigPyIterator_T base; typedef SwigPyIteratorOpen_T self_type; SwigPyIteratorOpen_T(out_iterator curr, PyObject *seq) : SwigPyIterator_T(curr, seq) { } PyObject *value() const { return from(static_cast(*(base::current))); } SwigPyIterator *copy() const { return new self_type(*this); } SwigPyIterator *incr(size_t n = 1) { while (n--) { ++base::current; } return this; } SwigPyIterator *decr(size_t n = 1) { while (n--) { --base::current; } return this; } }; template::value_type, typename FromOper = from_oper > class SwigPyIteratorClosed_T : public SwigPyIterator_T { public: FromOper from; typedef OutIterator out_iterator; typedef ValueType value_type; typedef SwigPyIterator_T base; typedef SwigPyIteratorClosed_T self_type; SwigPyIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq) : SwigPyIterator_T(curr, seq), begin(first), end(last) { } PyObject *value() const { if (base::current == end) { throw stop_iteration(); } else { return from(static_cast(*(base::current))); } } SwigPyIterator *copy() const { return new self_type(*this); } SwigPyIterator *incr(size_t n = 1) { while (n--) { if (base::current == end) { throw stop_iteration(); } else { ++base::current; } } return this; } SwigPyIterator *decr(size_t n = 1) { while (n--) { if (base::current == begin) { throw stop_iteration(); } else { --base::current; } } return this; } private: out_iterator begin; out_iterator end; }; template inline SwigPyIterator* make_output_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, PyObject *seq = 0) { return new SwigPyIteratorClosed_T(current, begin, end, seq); } template inline SwigPyIterator* make_output_iterator(const OutIter& current, PyObject *seq = 0) { return new SwigPyIteratorOpen_T(current, seq); } } namespace swig { template struct SwigPySequence_Ref { SwigPySequence_Ref(PyObject* seq, int index) : _seq(seq), _index(index) { } operator T () const { swig::SwigVar_PyObject item = PySequence_GetItem(_seq, _index); try { return swig::as(item, true); } catch (std::exception& e) { char msg[1024]; sprintf(msg, "in sequence element %d ", _index); if (!PyErr_Occurred()) { ::SWIG_Error(SWIG_TypeError, swig::type_name()); } SWIG_Python_AddErrorMsg(msg); SWIG_Python_AddErrorMsg(e.what()); throw; } } SwigPySequence_Ref& operator=(const T& v) { PySequence_SetItem(_seq, _index, swig::from(v)); return *this; } private: PyObject* _seq; int _index; }; template struct SwigPySequence_ArrowProxy { SwigPySequence_ArrowProxy(const T& x): m_value(x) {} const T* operator->() const { return &m_value; } operator const T*() const { return &m_value; } T m_value; }; template struct SwigPySequence_InputIterator { typedef SwigPySequence_InputIterator self; typedef std::random_access_iterator_tag iterator_category; typedef Reference reference; typedef T value_type; typedef T* pointer; typedef int difference_type; SwigPySequence_InputIterator() { } SwigPySequence_InputIterator(PyObject* seq, int index) : _seq(seq), _index(index) { } reference operator*() const { return reference(_seq, _index); } SwigPySequence_ArrowProxy operator->() const { return SwigPySequence_ArrowProxy(operator*()); } bool operator==(const self& ri) const { return (_index == ri._index) && (_seq == ri._seq); } bool operator!=(const self& ri) const { return !(operator==(ri)); } self& operator ++ () { ++_index; return *this; } self& operator -- () { --_index; return *this; } self& operator += (difference_type n) { _index += n; return *this; } self operator +(difference_type n) const { return self(_seq, _index + n); } self& operator -= (difference_type n) { _index -= n; return *this; } self operator -(difference_type n) const { return self(_seq, _index - n); } difference_type operator - (const self& ri) const { return _index - ri._index; } bool operator < (const self& ri) const { return _index < ri._index; } reference operator[](difference_type n) const { return reference(_seq, _index + n); } private: PyObject* _seq; difference_type _index; }; template struct SwigPySequence_Cont { typedef SwigPySequence_Ref reference; typedef const SwigPySequence_Ref const_reference; typedef T value_type; typedef T* pointer; typedef int difference_type; typedef int size_type; typedef const pointer const_pointer; typedef SwigPySequence_InputIterator iterator; typedef SwigPySequence_InputIterator const_iterator; SwigPySequence_Cont(PyObject* seq) : _seq(0) { if (!PySequence_Check(seq)) { throw std::invalid_argument("a sequence is expected"); } _seq = seq; Py_INCREF(_seq); } ~SwigPySequence_Cont() { Py_XDECREF(_seq); } size_type size() const { return static_cast(PySequence_Size(_seq)); } bool empty() const { return size() == 0; } iterator begin() { return iterator(_seq, 0); } const_iterator begin() const { return const_iterator(_seq, 0); } iterator end() { return iterator(_seq, size()); } const_iterator end() const { return const_iterator(_seq, size()); } reference operator[](difference_type n) { return reference(_seq, n); } const_reference operator[](difference_type n) const { return const_reference(_seq, n); } bool check(bool set_err = true) const { int s = size(); for (int i = 0; i < s; ++i) { swig::SwigVar_PyObject item = PySequence_GetItem(_seq, i); if (!swig::check(item)) { if (set_err) { char msg[1024]; sprintf(msg, "in sequence element %d", i); SWIG_Error(SWIG_RuntimeError, msg); } return false; } } return true; } private: PyObject* _seq; }; } #include #if !defined(SWIG_NO_LLONG_MAX) # if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) # define LLONG_MAX __LONG_LONG_MAX__ # define LLONG_MIN (-LLONG_MAX - 1LL) # define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) # endif #endif SWIGINTERN int SWIG_AsVal_int (PyObject * obj, int *val) { long v; int res = SWIG_AsVal_long (obj, &v); if (SWIG_IsOK(res)) { if ((v < INT_MIN || v > INT_MAX)) { return SWIG_OverflowError; } else { if (val) *val = static_cast< int >(v); } } return res; } SWIGINTERNINLINE PyObject* SWIG_From_int (int value) { return PyInt_FromLong((long) value); } namespace swig { template <> struct traits { typedef value_category category; static const char* type_name() { return"int"; } }; template <> struct traits_asval { typedef int value_type; static int asval(PyObject *obj, value_type *val) { return SWIG_AsVal_int (obj, val); } }; template <> struct traits_from { typedef int value_type; static PyObject *from(const value_type& val) { return SWIG_From_int (val); } }; } namespace swig { template inline void assign(const SwigPySeq& swigpyseq, Seq* seq) { // seq->assign(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented typedef typename SwigPySeq::value_type value_type; typename SwigPySeq::const_iterator it = swigpyseq.begin(); for (;it != swigpyseq.end(); ++it) { seq->insert(seq->end(),(value_type)(*it)); } } template struct traits_asptr_stdseq { typedef Seq sequence; typedef T value_type; static int asptr(PyObject *obj, sequence **seq) { if (obj == Py_None || SWIG_Python_GetSwigThis(obj)) { sequence *p; if (::SWIG_ConvertPtr(obj,(void**)&p, swig::type_info(),0) == SWIG_OK) { if (seq) *seq = p; return SWIG_OLDOBJ; } } else if (PySequence_Check(obj)) { try { SwigPySequence_Cont swigpyseq(obj); if (seq) { sequence *pseq = new sequence(); assign(swigpyseq, pseq); *seq = pseq; return SWIG_NEWOBJ; } else { return swigpyseq.check() ? SWIG_OK : SWIG_ERROR; } } catch (std::exception& e) { if (seq) { if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, e.what()); } } return SWIG_ERROR; } } return SWIG_ERROR; } }; template struct traits_from_stdseq { typedef Seq sequence; typedef T value_type; typedef typename Seq::size_type size_type; typedef typename sequence::const_iterator const_iterator; static PyObject *from(const sequence& seq) { #ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS swig_type_info *desc = swig::type_info(); if (desc && desc->clientdata) { return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN); } #endif size_type size = seq.size(); if (size <= (size_type)INT_MAX) { PyObject *obj = PyTuple_New((int)size); int i = 0; for (const_iterator it = seq.begin(); it != seq.end(); ++it, ++i) { PyTuple_SetItem(obj,i,swig::from(*it)); } return obj; } else { PyErr_SetString(PyExc_OverflowError,"sequence size not valid in python"); return NULL; } } }; } namespace swig { template struct traits_asptr > { static int asptr(PyObject *obj, std::vector **vec) { return traits_asptr_stdseq >::asptr(obj, vec); } }; template struct traits_from > { static PyObject *from(const std::vector& vec) { return traits_from_stdseq >::from(vec); } }; } namespace swig { template <> struct traits > > { typedef pointer_category category; static const char* type_name() { return "std::vector<" "int" "," "std::allocator< int >" " >"; } }; } SWIGINTERN swig::SwigPyIterator *std_vector_Sl_int_Sg__iterator(std::vector< int > *self,PyObject **PYTHON_SELF){ return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); } SWIGINTERN bool std_vector_Sl_int_Sg____nonzero__(std::vector< int > const *self){ return !(self->empty()); } SWIGINTERN bool std_vector_Sl_int_Sg____bool__(std::vector< int > const *self){ return !(self->empty()); } SWIGINTERN std::vector< int >::size_type std_vector_Sl_int_Sg____len__(std::vector< int > const *self){ return self->size(); } SWIGINTERNINLINE PyObject* SWIG_From_unsigned_SS_long (unsigned long value) { return (value > LONG_MAX) ? PyLong_FromUnsignedLong(value) : PyLong_FromLong(static_cast< long >(value)); } SWIGINTERNINLINE PyObject * SWIG_From_size_t (size_t value) { return SWIG_From_unsigned_SS_long (static_cast< unsigned long >(value)); } SWIGINTERN std::vector< int >::value_type std_vector_Sl_int_Sg__pop(std::vector< int > *self){ if (self->size() == 0) throw std::out_of_range("pop from empty container"); std::vector >::value_type x = self->back(); self->pop_back(); return x; } SWIGINTERN std::vector< int,std::allocator< int > > *std_vector_Sl_int_Sg____getslice__(std::vector< int > *self,std::vector< int >::difference_type i,std::vector< int >::difference_type j){ return swig::getslice(self, i, j, 1); } SWIGINTERN void std_vector_Sl_int_Sg____setslice____SWIG_0(std::vector< int > *self,std::vector< int >::difference_type i,std::vector< int >::difference_type j,std::vector< int,std::allocator< int > > const &v=std::vector< int,std::allocator< int > >()){ swig::setslice(self, i, j, 1, v); } SWIGINTERN void std_vector_Sl_int_Sg____delslice__(std::vector< int > *self,std::vector< int >::difference_type i,std::vector< int >::difference_type j){ swig::delslice(self, i, j, 1); } SWIGINTERN void std_vector_Sl_int_Sg____delitem____SWIG_0(std::vector< int > *self,std::vector< int >::difference_type i){ self->erase(swig::getpos(self,i)); } SWIGINTERN std::vector< int,std::allocator< int > > *std_vector_Sl_int_Sg____getitem____SWIG_0(std::vector< int > *self,PySliceObject *slice){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return NULL; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; return swig::getslice(self, id, jd, step); } SWIGINTERN void std_vector_Sl_int_Sg____setitem____SWIG_0(std::vector< int > *self,PySliceObject *slice,std::vector< int,std::allocator< int > > const &v){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; swig::setslice(self, id, jd, step, v); } SWIGINTERN void std_vector_Sl_int_Sg____setitem____SWIG_1(std::vector< int > *self,PySliceObject *slice){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; swig::delslice(self, id, jd, step); } SWIGINTERN void std_vector_Sl_int_Sg____delitem____SWIG_1(std::vector< int > *self,PySliceObject *slice){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; swig::delslice(self, id, jd, step); } SWIGINTERN std::vector< int >::value_type const &std_vector_Sl_int_Sg____getitem____SWIG_1(std::vector< int > const *self,std::vector< int >::difference_type i){ return *(swig::cgetpos(self, i)); } SWIGINTERN void std_vector_Sl_int_Sg____setitem____SWIG_2(std::vector< int > *self,std::vector< int >::difference_type i,std::vector< int >::value_type const &x){ *(swig::getpos(self,i)) = x; } SWIGINTERN void std_vector_Sl_int_Sg__append(std::vector< int > *self,std::vector< int >::value_type const &x){ self->push_back(x); } SWIGINTERN std::vector< int >::iterator std_vector_Sl_int_Sg__erase__SWIG_0(std::vector< int > *self,std::vector< int >::iterator pos){ return self->erase(pos); } SWIGINTERN std::vector< int >::iterator std_vector_Sl_int_Sg__erase__SWIG_1(std::vector< int > *self,std::vector< int >::iterator first,std::vector< int >::iterator last){ return self->erase(first, last); } SWIGINTERN std::vector< int >::iterator std_vector_Sl_int_Sg__insert__SWIG_0(std::vector< int > *self,std::vector< int >::iterator pos,std::vector< int >::value_type const &x){ return self->insert(pos, x); } SWIGINTERN void std_vector_Sl_int_Sg__insert__SWIG_1(std::vector< int > *self,std::vector< int >::iterator pos,std::vector< int >::size_type n,std::vector< int >::value_type const &x){ self->insert(pos, n, x); } #define SWIG_From_double PyFloat_FromDouble namespace swig { template <> struct traits { typedef value_category category; static const char* type_name() { return"double"; } }; template <> struct traits_asval { typedef double value_type; static int asval(PyObject *obj, value_type *val) { return SWIG_AsVal_double (obj, val); } }; template <> struct traits_from { typedef double value_type; static PyObject *from(const value_type& val) { return SWIG_From_double (val); } }; } namespace swig { template <> struct traits > > { typedef pointer_category category; static const char* type_name() { return "std::vector<" "double" "," "std::allocator< double >" " >"; } }; } SWIGINTERN swig::SwigPyIterator *std_vector_Sl_double_Sg__iterator(std::vector< double > *self,PyObject **PYTHON_SELF){ return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); } SWIGINTERN bool std_vector_Sl_double_Sg____nonzero__(std::vector< double > const *self){ return !(self->empty()); } SWIGINTERN bool std_vector_Sl_double_Sg____bool__(std::vector< double > const *self){ return !(self->empty()); } SWIGINTERN std::vector< double >::size_type std_vector_Sl_double_Sg____len__(std::vector< double > const *self){ return self->size(); } SWIGINTERN std::vector< double >::value_type std_vector_Sl_double_Sg__pop(std::vector< double > *self){ if (self->size() == 0) throw std::out_of_range("pop from empty container"); std::vector >::value_type x = self->back(); self->pop_back(); return x; } SWIGINTERN std::vector< double,std::allocator< double > > *std_vector_Sl_double_Sg____getslice__(std::vector< double > *self,std::vector< double >::difference_type i,std::vector< double >::difference_type j){ return swig::getslice(self, i, j, 1); } SWIGINTERN void std_vector_Sl_double_Sg____setslice____SWIG_0(std::vector< double > *self,std::vector< double >::difference_type i,std::vector< double >::difference_type j,std::vector< double,std::allocator< double > > const &v=std::vector< double,std::allocator< double > >()){ swig::setslice(self, i, j, 1, v); } SWIGINTERN void std_vector_Sl_double_Sg____delslice__(std::vector< double > *self,std::vector< double >::difference_type i,std::vector< double >::difference_type j){ swig::delslice(self, i, j, 1); } SWIGINTERN void std_vector_Sl_double_Sg____delitem____SWIG_0(std::vector< double > *self,std::vector< double >::difference_type i){ self->erase(swig::getpos(self,i)); } SWIGINTERN std::vector< double,std::allocator< double > > *std_vector_Sl_double_Sg____getitem____SWIG_0(std::vector< double > *self,PySliceObject *slice){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return NULL; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; return swig::getslice(self, id, jd, step); } SWIGINTERN void std_vector_Sl_double_Sg____setitem____SWIG_0(std::vector< double > *self,PySliceObject *slice,std::vector< double,std::allocator< double > > const &v){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; swig::setslice(self, id, jd, step, v); } SWIGINTERN void std_vector_Sl_double_Sg____setitem____SWIG_1(std::vector< double > *self,PySliceObject *slice){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; swig::delslice(self, id, jd, step); } SWIGINTERN void std_vector_Sl_double_Sg____delitem____SWIG_1(std::vector< double > *self,PySliceObject *slice){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; swig::delslice(self, id, jd, step); } SWIGINTERN std::vector< double >::value_type const &std_vector_Sl_double_Sg____getitem____SWIG_1(std::vector< double > const *self,std::vector< double >::difference_type i){ return *(swig::cgetpos(self, i)); } SWIGINTERN void std_vector_Sl_double_Sg____setitem____SWIG_2(std::vector< double > *self,std::vector< double >::difference_type i,std::vector< double >::value_type const &x){ *(swig::getpos(self,i)) = x; } SWIGINTERN void std_vector_Sl_double_Sg__append(std::vector< double > *self,std::vector< double >::value_type const &x){ self->push_back(x); } SWIGINTERN std::vector< double >::iterator std_vector_Sl_double_Sg__erase__SWIG_0(std::vector< double > *self,std::vector< double >::iterator pos){ return self->erase(pos); } SWIGINTERN std::vector< double >::iterator std_vector_Sl_double_Sg__erase__SWIG_1(std::vector< double > *self,std::vector< double >::iterator first,std::vector< double >::iterator last){ return self->erase(first, last); } SWIGINTERN std::vector< double >::iterator std_vector_Sl_double_Sg__insert__SWIG_0(std::vector< double > *self,std::vector< double >::iterator pos,std::vector< double >::value_type const &x){ return self->insert(pos, x); } SWIGINTERN void std_vector_Sl_double_Sg__insert__SWIG_1(std::vector< double > *self,std::vector< double >::iterator pos,std::vector< double >::size_type n,std::vector< double >::value_type const &x){ self->insert(pos, n, x); } namespace swig { template <> struct traits { typedef pointer_category category; static const char* type_name() { return"vips::VImage"; } }; } namespace swig { template <> struct traits > > { typedef pointer_category category; static const char* type_name() { return "std::vector<" "vips::VImage" "," "std::allocator< vips::VImage >" " >"; } }; } SWIGINTERN swig::SwigPyIterator *std_vector_Sl_vips_VImage_Sg__iterator(std::vector< vips::VImage > *self,PyObject **PYTHON_SELF){ return swig::make_output_iterator(self->begin(), self->begin(), self->end(), *PYTHON_SELF); } SWIGINTERN bool std_vector_Sl_vips_VImage_Sg____nonzero__(std::vector< vips::VImage > const *self){ return !(self->empty()); } SWIGINTERN bool std_vector_Sl_vips_VImage_Sg____bool__(std::vector< vips::VImage > const *self){ return !(self->empty()); } SWIGINTERN std::vector< vips::VImage >::size_type std_vector_Sl_vips_VImage_Sg____len__(std::vector< vips::VImage > const *self){ return self->size(); } SWIGINTERN std::vector< vips::VImage >::value_type std_vector_Sl_vips_VImage_Sg__pop(std::vector< vips::VImage > *self){ if (self->size() == 0) throw std::out_of_range("pop from empty container"); std::vector >::value_type x = self->back(); self->pop_back(); return x; } SWIGINTERN std::vector< vips::VImage,std::allocator< vips::VImage > > *std_vector_Sl_vips_VImage_Sg____getslice__(std::vector< vips::VImage > *self,std::vector< vips::VImage >::difference_type i,std::vector< vips::VImage >::difference_type j){ return swig::getslice(self, i, j, 1); } SWIGINTERN void std_vector_Sl_vips_VImage_Sg____setslice____SWIG_0(std::vector< vips::VImage > *self,std::vector< vips::VImage >::difference_type i,std::vector< vips::VImage >::difference_type j,std::vector< vips::VImage,std::allocator< vips::VImage > > const &v=std::vector< vips::VImage,std::allocator< vips::VImage > >()){ swig::setslice(self, i, j, 1, v); } SWIGINTERN void std_vector_Sl_vips_VImage_Sg____delslice__(std::vector< vips::VImage > *self,std::vector< vips::VImage >::difference_type i,std::vector< vips::VImage >::difference_type j){ swig::delslice(self, i, j, 1); } SWIGINTERN void std_vector_Sl_vips_VImage_Sg____delitem____SWIG_0(std::vector< vips::VImage > *self,std::vector< vips::VImage >::difference_type i){ self->erase(swig::getpos(self,i)); } SWIGINTERN std::vector< vips::VImage,std::allocator< vips::VImage > > *std_vector_Sl_vips_VImage_Sg____getitem____SWIG_0(std::vector< vips::VImage > *self,PySliceObject *slice){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return NULL; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; return swig::getslice(self, id, jd, step); } SWIGINTERN void std_vector_Sl_vips_VImage_Sg____setitem____SWIG_0(std::vector< vips::VImage > *self,PySliceObject *slice,std::vector< vips::VImage,std::allocator< vips::VImage > > const &v){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; swig::setslice(self, id, jd, step, v); } SWIGINTERN void std_vector_Sl_vips_VImage_Sg____setitem____SWIG_1(std::vector< vips::VImage > *self,PySliceObject *slice){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; swig::delslice(self, id, jd, step); } SWIGINTERN void std_vector_Sl_vips_VImage_Sg____delitem____SWIG_1(std::vector< vips::VImage > *self,PySliceObject *slice){ Py_ssize_t i, j, step; if( !PySlice_Check(slice) ) { SWIG_Error(SWIG_TypeError, "Slice object expected."); return; } PySlice_GetIndices(SWIGPY_SLICE_ARG(slice), (Py_ssize_t)self->size(), &i, &j, &step); std::vector >::difference_type id = i; std::vector >::difference_type jd = j; swig::delslice(self, id, jd, step); } SWIGINTERN std::vector< vips::VImage >::value_type const &std_vector_Sl_vips_VImage_Sg____getitem____SWIG_1(std::vector< vips::VImage > const *self,std::vector< vips::VImage >::difference_type i){ return *(swig::cgetpos(self, i)); } SWIGINTERN void std_vector_Sl_vips_VImage_Sg____setitem____SWIG_2(std::vector< vips::VImage > *self,std::vector< vips::VImage >::difference_type i,std::vector< vips::VImage >::value_type const &x){ *(swig::getpos(self,i)) = x; } SWIGINTERN void std_vector_Sl_vips_VImage_Sg__append(std::vector< vips::VImage > *self,std::vector< vips::VImage >::value_type const &x){ self->push_back(x); } SWIGINTERN std::vector< vips::VImage >::iterator std_vector_Sl_vips_VImage_Sg__erase__SWIG_0(std::vector< vips::VImage > *self,std::vector< vips::VImage >::iterator pos){ return self->erase(pos); } SWIGINTERN std::vector< vips::VImage >::iterator std_vector_Sl_vips_VImage_Sg__erase__SWIG_1(std::vector< vips::VImage > *self,std::vector< vips::VImage >::iterator first,std::vector< vips::VImage >::iterator last){ return self->erase(first, last); } SWIGINTERN std::vector< vips::VImage >::iterator std_vector_Sl_vips_VImage_Sg__insert__SWIG_0(std::vector< vips::VImage > *self,std::vector< vips::VImage >::iterator pos,std::vector< vips::VImage >::value_type const &x){ return self->insert(pos, x); } SWIGINTERN void std_vector_Sl_vips_VImage_Sg__insert__SWIG_1(std::vector< vips::VImage > *self,std::vector< vips::VImage >::iterator pos,std::vector< vips::VImage >::size_type n,std::vector< vips::VImage >::value_type const &x){ self->insert(pos, n, x); } struct VBuffer { void *data; size_t size; }; SWIGINTERN swig_type_info* SWIG_pchar_descriptor(void) { static int init = 0; static swig_type_info* info = 0; if (!init) { info = SWIG_TypeQuery("_p_char"); init = 1; } return info; } SWIGINTERN int SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) { #if PY_VERSION_HEX>=0x03000000 if (PyUnicode_Check(obj)) #else if (PyString_Check(obj)) #endif { char *cstr; Py_ssize_t len; #if PY_VERSION_HEX>=0x03000000 if (!alloc && cptr) { /* We can't allow converting without allocation, since the internal representation of string in Python 3 is UCS-2/UCS-4 but we require a UTF-8 representation. TODO(bhy) More detailed explanation */ return SWIG_RuntimeError; } obj = PyUnicode_AsUTF8String(obj); PyBytes_AsStringAndSize(obj, &cstr, &len); if(alloc) *alloc = SWIG_NEWOBJ; #else PyString_AsStringAndSize(obj, &cstr, &len); #endif if (cptr) { if (alloc) { /* In python the user should not be able to modify the inner string representation. To warranty that, if you define SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string buffer is always returned. The default behavior is just to return the pointer value, so, be careful. */ #if defined(SWIG_PYTHON_SAFE_CSTRINGS) if (*alloc != SWIG_OLDOBJ) #else if (*alloc == SWIG_NEWOBJ) #endif { *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1))); *alloc = SWIG_NEWOBJ; } else { *cptr = cstr; *alloc = SWIG_OLDOBJ; } } else { #if PY_VERSION_HEX>=0x03000000 assert(0); /* Should never reach here in Python 3 */ #endif *cptr = SWIG_Python_str_AsChar(obj); } } if (psize) *psize = len + 1; #if PY_VERSION_HEX>=0x03000000 Py_XDECREF(obj); #endif return SWIG_OK; } else { swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); if (pchar_descriptor) { void* vptr = 0; if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { if (cptr) *cptr = (char *) vptr; if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; if (alloc) *alloc = SWIG_OLDOBJ; return SWIG_OK; } } } return SWIG_TypeError; } SWIGINTERNINLINE PyObject * SWIG_From_float (float value) { return SWIG_From_double (value); } SWIGINTERNINLINE PyObject * SWIG_From_short (short value) { return SWIG_From_long (value); } SWIGINTERNINLINE PyObject * SWIG_FromCharPtrAndSize(const char* carray, size_t size) { if (carray) { if (size > INT_MAX) { swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); return pchar_descriptor ? SWIG_InternalNewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void(); } else { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_FromStringAndSize(carray, static_cast< int >(size)); #else return PyString_FromStringAndSize(carray, static_cast< int >(size)); #endif } } else { return SWIG_Py_Void(); } } SWIGINTERNINLINE PyObject * SWIG_FromCharPtr(const char *cptr) { return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); } /* Getting isfinite working pre C99 across multiple platforms is non-trivial. Users can provide SWIG_isfinite on older platforms. */ #ifndef SWIG_isfinite # if defined(isfinite) # define SWIG_isfinite(X) (isfinite(X)) # elif defined(_MSC_VER) # define SWIG_isfinite(X) (_finite(X)) # elif defined(__sun) && defined(__SVR4) # include # define SWIG_isfinite(X) (finite(X)) # endif #endif /* Accept infinite as a valid float value unless we are unable to check if a value is finite */ #ifdef SWIG_isfinite # define SWIG_Float_Overflow_Check(X) ((X < -FLT_MAX || X > FLT_MAX) && SWIG_isfinite(X)) #else # define SWIG_Float_Overflow_Check(X) ((X < -FLT_MAX || X > FLT_MAX)) #endif SWIGINTERN int SWIG_AsVal_float (PyObject * obj, float *val) { double v; int res = SWIG_AsVal_double (obj, &v); if (SWIG_IsOK(res)) { if (SWIG_Float_Overflow_Check(v)) { return SWIG_OverflowError; } else { if (val) *val = static_cast< float >(v); } } return res; } SWIGINTERNINLINE PyObject* SWIG_From_std_complex_Sl_double_Sg_ (/*@SWIG:/usr/share/swig2.0/typemaps/swigmacros.swg,104,%ifcplusplus@*/ const std::complex& /*@SWIG@*/ c) { return PyComplex_FromDoubles(std::real(c), std::imag(c)); } SWIGINTERN VBuffer vips_VImage_tobuffer(vips::VImage *self){ VBuffer buffer; buffer.data = self->data (); buffer.size = (size_t) self->Xsize () * self->Ysize () * IM_IMAGE_SIZEOF_PEL (self->image ()); return buffer; } SWIGINTERN vips::VImage vips_VImage_frombuffer(VBuffer buffer,int width,int height,int bands,vips::VImage::TBandFmt format){ return VImage (buffer.data, width, height, bands, format); } SWIGINTERN void vips_VImage_tostring(vips::VImage *self,char **buffer,int *buffer_len){ void *vips_memory; /* Eval the vips image first. This may throw an exception and we want to * make sure we do this before we try to malloc() space for the copy. */ vips_memory = self->data (); /* We have to copy the image data to make a string that Python can * manage. Use frombuffer() / tobuffer () if you want to avoid the copy * and manage memory lifetime yourself. */ *buffer_len = (size_t) self->Xsize () * self->Ysize () * IM_IMAGE_SIZEOF_PEL (self->image ()); if (!(*buffer = (char *) im_malloc (NULL, *buffer_len))) verror ("Unable to allocate memory for image copy."); memcpy (*buffer, vips_memory, *buffer_len); } SWIGINTERN int SWIG_AsPtr_std_string (PyObject * obj, std::string **val) { char* buf = 0 ; size_t size = 0; int alloc = SWIG_OLDOBJ; if (SWIG_IsOK((SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc)))) { if (buf) { if (val) *val = new std::string(buf, size - 1); if (alloc == SWIG_NEWOBJ) delete[] buf; return SWIG_NEWOBJ; } else { if (val) *val = 0; return SWIG_OLDOBJ; } } else { static int init = 0; static swig_type_info* descriptor = 0; if (!init) { descriptor = SWIG_TypeQuery("std::string" " *"); init = 1; } if (descriptor) { std::string *vptr; int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0); if (SWIG_IsOK(res) && val) *val = vptr; return res; } } return SWIG_ERROR; } SWIGINTERN vips::VImage vips_VImage_fromstring(std::string buffer,int width,int height,int bands,vips::VImage::TBandFmt format){ void *vips_memory; VImage result; /* We have to copy the string, then add a callback to the VImage to free * it when we free the VImage. Use frombuffer() / tobuffer () if you want * to avoid the copy and manage memory lifetime yourself. */ if (!(vips_memory = im_malloc (NULL, buffer.length ()))) verror ("Unable to allocate memory for image copy."); /* We have to use .c_str () since the string may not be contiguous. */ memcpy (vips_memory, buffer.c_str (), buffer.length ()); result = VImage (vips_memory, width, height, bands, format); if (im_add_close_callback (result.image (), (im_callback_fn) im_free, vips_memory, NULL)) verror (); return result; } /* Turn on to print args. #define DEBUG */ /* Command-line args during parse. */ typedef struct _Args { /* The n strings we alloc when we get from Python. */ int n; char **str; /* argc/argv as processed by us. */ int argc; char **argv; } Args; #ifdef DEBUG static void args_print (Args *args) { int i; printf ("args_print: argc = %d\n", args->argc); // +1 so we print the trailing NULL too for (i = 0; i < args->argc + 1; i++) printf ("\t%2d)\t%s\n", i, args->argv[i]); } #endif /*DEBUG*/ static void args_free (Args *args) { int i; for (i = 0; i < args->n; i++) IM_FREE (args->str[i]); args->n = 0; args->argc = 0; IM_FREE (args->str); IM_FREE (args->argv); IM_FREE (args); } /* Get argv/argc from python. */ static Args * args_new (void) { Args *args; PyObject *av; int i; int n; args = g_new (Args, 1); args->n = 0; args->str = NULL; args->argc = 0; args->argv = NULL; if (!(av = PySys_GetObject ((char *) "argv"))) return (args); if (!PyList_Check (av)) { PyErr_Warn (PyExc_Warning, "ignoring sys.argv: " "it must be a list of strings"); return args; } n = PyList_Size (av); args->str = g_new (char *, n); for (i = 0; i < n; i++) args->str[i] = g_strdup (PyString_AsString (PyList_GetItem (av, i))); args->n = n; /* +1 for NULL termination. */ args->argc = n; args->argv = g_new (char *, n + 1); for (i = 0; i < n; i++) args->argv[i] = args->str[i]; args->argv[i] = NULL; return args; } static void vips_fatal (const char *msg) { char buf[256]; im_snprintf (buf, 256, "%s\n%s", msg, im_error_buffer()); im_error_clear (); Py_FatalError (buf); } #ifdef __cplusplus extern "C" { #endif SWIGINTERN PyObject *_wrap_delete_SwigPyIterator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_SwigPyIterator",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_SwigPyIterator" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:SwigPyIterator_value",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_value" "', argument " "1"" of type '" "swig::SwigPyIterator const *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); try { result = (PyObject *)((swig::SwigPyIterator const *)arg1)->value(); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = result; return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_incr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; size_t arg2 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator_incr",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_incr" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SwigPyIterator_incr" "', argument " "2"" of type '" "size_t""'"); } arg2 = static_cast< size_t >(val2); try { result = (swig::SwigPyIterator *)(arg1)->incr(arg2); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_incr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:SwigPyIterator_incr",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_incr" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); try { result = (swig::SwigPyIterator *)(arg1)->incr(); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_incr(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 1) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_swig__SwigPyIterator, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_SwigPyIterator_incr__SWIG_1(self, args); } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_swig__SwigPyIterator, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_size_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_SwigPyIterator_incr__SWIG_0(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'SwigPyIterator_incr'.\n" " Possible C/C++ prototypes are:\n" " swig::SwigPyIterator::incr(size_t)\n" " swig::SwigPyIterator::incr()\n"); return 0; } SWIGINTERN PyObject *_wrap_SwigPyIterator_decr__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; size_t arg2 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator_decr",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_decr" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SwigPyIterator_decr" "', argument " "2"" of type '" "size_t""'"); } arg2 = static_cast< size_t >(val2); try { result = (swig::SwigPyIterator *)(arg1)->decr(arg2); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_decr__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:SwigPyIterator_decr",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_decr" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); try { result = (swig::SwigPyIterator *)(arg1)->decr(); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_decr(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 1) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_swig__SwigPyIterator, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_SwigPyIterator_decr__SWIG_1(self, args); } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_swig__SwigPyIterator, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_size_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_SwigPyIterator_decr__SWIG_0(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'SwigPyIterator_decr'.\n" " Possible C/C++ prototypes are:\n" " swig::SwigPyIterator::decr(size_t)\n" " swig::SwigPyIterator::decr()\n"); return 0; } SWIGINTERN PyObject *_wrap_SwigPyIterator_distance(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; swig::SwigPyIterator *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; ptrdiff_t result; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator_distance",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_distance" "', argument " "1"" of type '" "swig::SwigPyIterator const *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_swig__SwigPyIterator, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SwigPyIterator_distance" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SwigPyIterator_distance" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } arg2 = reinterpret_cast< swig::SwigPyIterator * >(argp2); try { result = ((swig::SwigPyIterator const *)arg1)->distance((swig::SwigPyIterator const &)*arg2); } catch(std::invalid_argument &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new std::invalid_argument(static_cast< const std::invalid_argument& >(_e))),SWIGTYPE_p_std__invalid_argument,SWIG_POINTER_OWN), "std::invalid_argument", SWIGTYPE_p_std__invalid_argument); SWIG_fail; } resultobj = SWIG_From_ptrdiff_t(static_cast< ptrdiff_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_equal(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; swig::SwigPyIterator *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator_equal",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_equal" "', argument " "1"" of type '" "swig::SwigPyIterator const *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_swig__SwigPyIterator, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SwigPyIterator_equal" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SwigPyIterator_equal" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } arg2 = reinterpret_cast< swig::SwigPyIterator * >(argp2); try { result = (bool)((swig::SwigPyIterator const *)arg1)->equal((swig::SwigPyIterator const &)*arg2); } catch(std::invalid_argument &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new std::invalid_argument(static_cast< const std::invalid_argument& >(_e))),SWIGTYPE_p_std__invalid_argument,SWIG_POINTER_OWN), "std::invalid_argument", SWIGTYPE_p_std__invalid_argument); SWIG_fail; } resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_copy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:SwigPyIterator_copy",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_copy" "', argument " "1"" of type '" "swig::SwigPyIterator const *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); result = (swig::SwigPyIterator *)((swig::SwigPyIterator const *)arg1)->copy(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_next(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:SwigPyIterator_next",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_next" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); try { result = (PyObject *)(arg1)->next(); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = result; return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator___next__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:SwigPyIterator___next__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator___next__" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); try { result = (PyObject *)(arg1)->__next__(); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = result; return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_previous(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:SwigPyIterator_previous",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_previous" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); try { result = (PyObject *)(arg1)->previous(); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = result; return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator_advance(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; ptrdiff_t arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator_advance",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator_advance" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SwigPyIterator_advance" "', argument " "2"" of type '" "ptrdiff_t""'"); } arg2 = static_cast< ptrdiff_t >(val2); try { result = (swig::SwigPyIterator *)(arg1)->advance(arg2); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator___eq__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; swig::SwigPyIterator *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator___eq__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator___eq__" "', argument " "1"" of type '" "swig::SwigPyIterator const *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_swig__SwigPyIterator, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SwigPyIterator___eq__" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SwigPyIterator___eq__" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } arg2 = reinterpret_cast< swig::SwigPyIterator * >(argp2); result = (bool)((swig::SwigPyIterator const *)arg1)->operator ==((swig::SwigPyIterator const &)*arg2); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator___ne__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; swig::SwigPyIterator *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator___ne__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator___ne__" "', argument " "1"" of type '" "swig::SwigPyIterator const *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_swig__SwigPyIterator, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SwigPyIterator___ne__" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SwigPyIterator___ne__" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } arg2 = reinterpret_cast< swig::SwigPyIterator * >(argp2); result = (bool)((swig::SwigPyIterator const *)arg1)->operator !=((swig::SwigPyIterator const &)*arg2); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator___iadd__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; ptrdiff_t arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator___iadd__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator___iadd__" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SwigPyIterator___iadd__" "', argument " "2"" of type '" "ptrdiff_t""'"); } arg2 = static_cast< ptrdiff_t >(val2); try { result = (swig::SwigPyIterator *) &(arg1)->operator +=(arg2); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator___isub__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; ptrdiff_t arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator___isub__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator___isub__" "', argument " "1"" of type '" "swig::SwigPyIterator *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SwigPyIterator___isub__" "', argument " "2"" of type '" "ptrdiff_t""'"); } arg2 = static_cast< ptrdiff_t >(val2); try { result = (swig::SwigPyIterator *) &(arg1)->operator -=(arg2); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator___add__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; ptrdiff_t arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator___add__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator___add__" "', argument " "1"" of type '" "swig::SwigPyIterator const *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SwigPyIterator___add__" "', argument " "2"" of type '" "ptrdiff_t""'"); } arg2 = static_cast< ptrdiff_t >(val2); try { result = (swig::SwigPyIterator *)((swig::SwigPyIterator const *)arg1)->operator +(arg2); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator___sub____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; ptrdiff_t arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; swig::SwigPyIterator *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator___sub__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator___sub__" "', argument " "1"" of type '" "swig::SwigPyIterator const *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SwigPyIterator___sub__" "', argument " "2"" of type '" "ptrdiff_t""'"); } arg2 = static_cast< ptrdiff_t >(val2); try { result = (swig::SwigPyIterator *)((swig::SwigPyIterator const *)arg1)->operator -(arg2); } catch(swig::stop_iteration &_e) { { (void)_e; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator___sub____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; swig::SwigPyIterator *arg1 = (swig::SwigPyIterator *) 0 ; swig::SwigPyIterator *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; ptrdiff_t result; if (!PyArg_ParseTuple(args,(char *)"OO:SwigPyIterator___sub__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_swig__SwigPyIterator, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SwigPyIterator___sub__" "', argument " "1"" of type '" "swig::SwigPyIterator const *""'"); } arg1 = reinterpret_cast< swig::SwigPyIterator * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_swig__SwigPyIterator, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SwigPyIterator___sub__" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SwigPyIterator___sub__" "', argument " "2"" of type '" "swig::SwigPyIterator const &""'"); } arg2 = reinterpret_cast< swig::SwigPyIterator * >(argp2); result = ((swig::SwigPyIterator const *)arg1)->operator -((swig::SwigPyIterator const &)*arg2); resultobj = SWIG_From_ptrdiff_t(static_cast< ptrdiff_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_SwigPyIterator___sub__(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_swig__SwigPyIterator, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_swig__SwigPyIterator, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_SwigPyIterator___sub____SWIG_1(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_swig__SwigPyIterator, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_SwigPyIterator___sub____SWIG_0(self, args); } } } fail: Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } SWIGINTERN PyObject *SwigPyIterator_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_swig__SwigPyIterator, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } SWIGINTERN PyObject *_wrap_IntVector_iterator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; PyObject **arg2 = (PyObject **) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; swig::SwigPyIterator *result = 0 ; arg2 = &obj0; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_iterator",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_iterator" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (swig::SwigPyIterator *)std_vector_Sl_int_Sg__iterator(arg1,arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___nonzero__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector___nonzero__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___nonzero__" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (bool)std_vector_Sl_int_Sg____nonzero__((std::vector< int > const *)arg1); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___bool__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector___bool__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___bool__" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (bool)std_vector_Sl_int_Sg____bool__((std::vector< int > const *)arg1); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___len__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::size_type result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector___len__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___len__" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = std_vector_Sl_int_Sg____len__((std::vector< int > const *)arg1); resultobj = SWIG_From_size_t(static_cast< size_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_pop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::value_type result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_pop",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_pop" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); try { result = (std::vector< int >::value_type)std_vector_Sl_int_Sg__pop(arg1); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___getslice__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::difference_type arg2 ; std::vector< int >::difference_type arg3 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; std::vector< int,std::allocator< int > > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:IntVector___getslice__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___getslice__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector___getslice__" "', argument " "2"" of type '" "std::vector< int >::difference_type""'"); } arg2 = static_cast< std::vector< int >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IntVector___getslice__" "', argument " "3"" of type '" "std::vector< int >::difference_type""'"); } arg3 = static_cast< std::vector< int >::difference_type >(val3); try { result = (std::vector< int,std::allocator< int > > *)std_vector_Sl_int_Sg____getslice__(arg1,arg2,arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___setslice____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::difference_type arg2 ; std::vector< int >::difference_type arg3 ; std::vector< int,std::allocator< int > > *arg4 = 0 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; int res4 = SWIG_OLDOBJ ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:IntVector___setslice__",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___setslice__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector___setslice__" "', argument " "2"" of type '" "std::vector< int >::difference_type""'"); } arg2 = static_cast< std::vector< int >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IntVector___setslice__" "', argument " "3"" of type '" "std::vector< int >::difference_type""'"); } arg3 = static_cast< std::vector< int >::difference_type >(val3); { std::vector > *ptr = (std::vector > *)0; res4 = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "IntVector___setslice__" "', argument " "4"" of type '" "std::vector< int,std::allocator< int > > const &""'"); } if (!ptr) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IntVector___setslice__" "', argument " "4"" of type '" "std::vector< int,std::allocator< int > > const &""'"); } arg4 = ptr; } try { std_vector_Sl_int_Sg____setslice____SWIG_0(arg1,arg2,arg3,(std::vector< int,std::allocator< int > > const &)*arg4); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); if (SWIG_IsNewObj(res4)) delete arg4; return resultobj; fail: if (SWIG_IsNewObj(res4)) delete arg4; return NULL; } SWIGINTERN PyObject *_wrap_IntVector___setslice____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::difference_type arg2 ; std::vector< int >::difference_type arg3 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:IntVector___setslice__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___setslice__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector___setslice__" "', argument " "2"" of type '" "std::vector< int >::difference_type""'"); } arg2 = static_cast< std::vector< int >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IntVector___setslice__" "', argument " "3"" of type '" "std::vector< int >::difference_type""'"); } arg3 = static_cast< std::vector< int >::difference_type >(val3); try { std_vector_Sl_int_Sg____setslice____SWIG_0(arg1,arg2,arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___setslice__(PyObject *self, PyObject *args) { int argc; PyObject *argv[5]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 4) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_IntVector___setslice____SWIG_1(self, args); } } } } if (argc == 4) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { int res = swig::asptr(argv[3], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_IntVector___setslice____SWIG_0(self, args); } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IntVector___setslice__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< int >::__setslice__(std::vector< int >::difference_type,std::vector< int >::difference_type,std::vector< int,std::allocator< int > > const &)\n" " std::vector< int >::__setslice__(std::vector< int >::difference_type,std::vector< int >::difference_type)\n"); return 0; } SWIGINTERN PyObject *_wrap_IntVector___delslice__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::difference_type arg2 ; std::vector< int >::difference_type arg3 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:IntVector___delslice__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___delslice__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector___delslice__" "', argument " "2"" of type '" "std::vector< int >::difference_type""'"); } arg2 = static_cast< std::vector< int >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IntVector___delslice__" "', argument " "3"" of type '" "std::vector< int >::difference_type""'"); } arg3 = static_cast< std::vector< int >::difference_type >(val3); try { std_vector_Sl_int_Sg____delslice__(arg1,arg2,arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___delitem____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::difference_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector___delitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___delitem__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector___delitem__" "', argument " "2"" of type '" "std::vector< int >::difference_type""'"); } arg2 = static_cast< std::vector< int >::difference_type >(val2); try { std_vector_Sl_int_Sg____delitem____SWIG_0(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___getitem____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< int,std::allocator< int > > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector___getitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___getitem__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector___getitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } try { result = (std::vector< int,std::allocator< int > > *)std_vector_Sl_int_Sg____getitem____SWIG_0(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___setitem____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; std::vector< int,std::allocator< int > > *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; int res3 = SWIG_OLDOBJ ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:IntVector___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___setitem__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector___setitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } { std::vector > *ptr = (std::vector > *)0; res3 = swig::asptr(obj2, &ptr); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "IntVector___setitem__" "', argument " "3"" of type '" "std::vector< int,std::allocator< int > > const &""'"); } if (!ptr) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IntVector___setitem__" "', argument " "3"" of type '" "std::vector< int,std::allocator< int > > const &""'"); } arg3 = ptr; } try { std_vector_Sl_int_Sg____setitem____SWIG_0(arg1,arg2,(std::vector< int,std::allocator< int > > const &)*arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); if (SWIG_IsNewObj(res3)) delete arg3; return resultobj; fail: if (SWIG_IsNewObj(res3)) delete arg3; return NULL; } SWIGINTERN PyObject *_wrap_IntVector___setitem____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector___setitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___setitem__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector___setitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } try { std_vector_Sl_int_Sg____setitem____SWIG_1(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___delitem____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector___delitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___delitem__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector___delitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } try { std_vector_Sl_int_Sg____delitem____SWIG_1(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___delitem__(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { return _wrap_IntVector___delitem____SWIG_1(self, args); } } } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_IntVector___delitem____SWIG_0(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IntVector___delitem__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< int >::__delitem__(std::vector< int >::difference_type)\n" " std::vector< int >::__delitem__(PySliceObject *)\n"); return 0; } SWIGINTERN PyObject *_wrap_IntVector___getitem____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::difference_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< int >::value_type *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector___getitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___getitem__" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector___getitem__" "', argument " "2"" of type '" "std::vector< int >::difference_type""'"); } arg2 = static_cast< std::vector< int >::difference_type >(val2); try { result = (std::vector< int >::value_type *) &std_vector_Sl_int_Sg____getitem____SWIG_1((std::vector< int > const *)arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_From_int(static_cast< int >(*result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___getitem__(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { return _wrap_IntVector___getitem____SWIG_0(self, args); } } } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_IntVector___getitem____SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IntVector___getitem__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< int >::__getitem__(PySliceObject *)\n" " std::vector< int >::__getitem__(std::vector< int >::difference_type) const\n"); return 0; } SWIGINTERN PyObject *_wrap_IntVector___setitem____SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::difference_type arg2 ; std::vector< int >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; std::vector< int >::value_type temp3 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:IntVector___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector___setitem__" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector___setitem__" "', argument " "2"" of type '" "std::vector< int >::difference_type""'"); } arg2 = static_cast< std::vector< int >::difference_type >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IntVector___setitem__" "', argument " "3"" of type '" "std::vector< int >::value_type""'"); } temp3 = static_cast< std::vector< int >::value_type >(val3); arg3 = &temp3; try { std_vector_Sl_int_Sg____setitem____SWIG_2(arg1,arg2,(int const &)*arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector___setitem__(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { return _wrap_IntVector___setitem____SWIG_1(self, args); } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { int res = swig::asptr(argv[2], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_IntVector___setitem____SWIG_0(self, args); } } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_IntVector___setitem____SWIG_2(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IntVector___setitem__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< int >::__setitem__(PySliceObject *,std::vector< int,std::allocator< int > > const &)\n" " std::vector< int >::__setitem__(PySliceObject *)\n" " std::vector< int >::__setitem__(std::vector< int >::difference_type,std::vector< int >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_IntVector_append(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::value_type *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; std::vector< int >::value_type temp2 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector_append",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_append" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector_append" "', argument " "2"" of type '" "std::vector< int >::value_type""'"); } temp2 = static_cast< std::vector< int >::value_type >(val2); arg2 = &temp2; std_vector_Sl_int_Sg__append(arg1,(int const &)*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_IntVector__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_IntVector")) SWIG_fail; result = (std::vector< int > *)new std::vector< int >(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_IntVector__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = 0 ; int res1 = SWIG_OLDOBJ ; PyObject * obj0 = 0 ; std::vector< int > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_IntVector",&obj0)) SWIG_fail; { std::vector > *ptr = (std::vector > *)0; res1 = swig::asptr(obj0, &ptr); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_IntVector" "', argument " "1"" of type '" "std::vector< int > const &""'"); } if (!ptr) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_IntVector" "', argument " "1"" of type '" "std::vector< int > const &""'"); } arg1 = ptr; } result = (std::vector< int > *)new std::vector< int >((std::vector< int > const &)*arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_POINTER_NEW | 0 ); if (SWIG_IsNewObj(res1)) delete arg1; return resultobj; fail: if (SWIG_IsNewObj(res1)) delete arg1; return NULL; } SWIGINTERN PyObject *_wrap_IntVector_empty(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_empty",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_empty" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (bool)((std::vector< int > const *)arg1)->empty(); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::size_type result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_size",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_size" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = ((std::vector< int > const *)arg1)->size(); resultobj = SWIG_From_size_t(static_cast< size_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_clear(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_clear",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_clear" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); (arg1)->clear(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_swap(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int > *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector_swap",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_swap" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IntVector_swap" "', argument " "2"" of type '" "std::vector< int > &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IntVector_swap" "', argument " "2"" of type '" "std::vector< int > &""'"); } arg2 = reinterpret_cast< std::vector< int > * >(argp2); (arg1)->swap(*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_get_allocator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; SwigValueWrapper< std::allocator< int > > result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_get_allocator",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_get_allocator" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = ((std::vector< int > const *)arg1)->get_allocator(); resultobj = SWIG_NewPointerObj((new std::vector< int >::allocator_type(static_cast< const std::vector< int >::allocator_type& >(result))), SWIGTYPE_p_std__allocatorT_int_t, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_begin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::iterator result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_begin",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_begin" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (arg1)->begin(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< int >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_end(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::iterator result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_end",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_end" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (arg1)->end(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< int >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_rbegin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::reverse_iterator result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_rbegin",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_rbegin" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (arg1)->rbegin(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< int >::reverse_iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_rend(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::reverse_iterator result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_rend",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_rend" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (arg1)->rend(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< int >::reverse_iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_IntVector__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int >::size_type arg1 ; size_t val1 ; int ecode1 = 0 ; PyObject * obj0 = 0 ; std::vector< int > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_IntVector",&obj0)) SWIG_fail; ecode1 = SWIG_AsVal_size_t(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_IntVector" "', argument " "1"" of type '" "std::vector< int >::size_type""'"); } arg1 = static_cast< std::vector< int >::size_type >(val1); result = (std::vector< int > *)new std::vector< int >(arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_pop_back(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_pop_back",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_pop_back" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); (arg1)->pop_back(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_resize__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::size_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector_resize",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_resize" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector_resize" "', argument " "2"" of type '" "std::vector< int >::size_type""'"); } arg2 = static_cast< std::vector< int >::size_type >(val2); (arg1)->resize(arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_erase__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::iterator arg2 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< int >::iterator result; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector_erase",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_erase" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_erase" "', argument " "2"" of type '" "std::vector< int >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_erase" "', argument " "2"" of type '" "std::vector< int >::iterator""'"); } } result = std_vector_Sl_int_Sg__erase__SWIG_0(arg1,arg2); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< int >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_erase__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::iterator arg2 ; std::vector< int >::iterator arg3 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; swig::SwigPyIterator *iter3 = 0 ; int res3 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; std::vector< int >::iterator result; if (!PyArg_ParseTuple(args,(char *)"OOO:IntVector_erase",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_erase" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_erase" "', argument " "2"" of type '" "std::vector< int >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_erase" "', argument " "2"" of type '" "std::vector< int >::iterator""'"); } } res3 = SWIG_ConvertPtr(obj2, SWIG_as_voidptrptr(&iter3), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res3) || !iter3) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_erase" "', argument " "3"" of type '" "std::vector< int >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter3); if (iter_t) { arg3 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_erase" "', argument " "3"" of type '" "std::vector< int >::iterator""'"); } } result = std_vector_Sl_int_Sg__erase__SWIG_1(arg1,arg2,arg3); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< int >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_erase(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { return _wrap_IntVector_erase__SWIG_0(self, args); } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[2], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { return _wrap_IntVector_erase__SWIG_1(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IntVector_erase'.\n" " Possible C/C++ prototypes are:\n" " std::vector< int >::erase(std::vector< int >::iterator)\n" " std::vector< int >::erase(std::vector< int >::iterator,std::vector< int >::iterator)\n"); return 0; } SWIGINTERN PyObject *_wrap_new_IntVector__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int >::size_type arg1 ; std::vector< int >::value_type *arg2 = 0 ; size_t val1 ; int ecode1 = 0 ; std::vector< int >::value_type temp2 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< int > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:new_IntVector",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_size_t(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_IntVector" "', argument " "1"" of type '" "std::vector< int >::size_type""'"); } arg1 = static_cast< std::vector< int >::size_type >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_IntVector" "', argument " "2"" of type '" "std::vector< int >::value_type""'"); } temp2 = static_cast< std::vector< int >::value_type >(val2); arg2 = &temp2; result = (std::vector< int > *)new std::vector< int >(arg1,(std::vector< int >::value_type const &)*arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_IntVector(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_new_IntVector__SWIG_0(self, args); } if (argc == 1) { int _v; { int res = SWIG_AsVal_size_t(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_new_IntVector__SWIG_2(self, args); } } if (argc == 1) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_IntVector__SWIG_1(self, args); } } if (argc == 2) { int _v; { int res = SWIG_AsVal_size_t(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_new_IntVector__SWIG_3(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_IntVector'.\n" " Possible C/C++ prototypes are:\n" " std::vector< int >::vector()\n" " std::vector< int >::vector(std::vector< int > const &)\n" " std::vector< int >::vector(std::vector< int >::size_type)\n" " std::vector< int >::vector(std::vector< int >::size_type,std::vector< int >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_IntVector_push_back(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::value_type *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; std::vector< int >::value_type temp2 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector_push_back",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_push_back" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector_push_back" "', argument " "2"" of type '" "std::vector< int >::value_type""'"); } temp2 = static_cast< std::vector< int >::value_type >(val2); arg2 = &temp2; (arg1)->push_back((std::vector< int >::value_type const &)*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_front(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::value_type *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_front",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_front" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (std::vector< int >::value_type *) &((std::vector< int > const *)arg1)->front(); resultobj = SWIG_From_int(static_cast< int >(*result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_back(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::value_type *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_back",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_back" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = (std::vector< int >::value_type *) &((std::vector< int > const *)arg1)->back(); resultobj = SWIG_From_int(static_cast< int >(*result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::size_type arg2 ; std::vector< int >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; std::vector< int >::value_type temp3 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:IntVector_assign",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_assign" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector_assign" "', argument " "2"" of type '" "std::vector< int >::size_type""'"); } arg2 = static_cast< std::vector< int >::size_type >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IntVector_assign" "', argument " "3"" of type '" "std::vector< int >::value_type""'"); } temp3 = static_cast< std::vector< int >::value_type >(val3); arg3 = &temp3; (arg1)->assign(arg2,(std::vector< int >::value_type const &)*arg3); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_resize__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::size_type arg2 ; std::vector< int >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; std::vector< int >::value_type temp3 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:IntVector_resize",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_resize" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector_resize" "', argument " "2"" of type '" "std::vector< int >::size_type""'"); } arg2 = static_cast< std::vector< int >::size_type >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IntVector_resize" "', argument " "3"" of type '" "std::vector< int >::value_type""'"); } temp3 = static_cast< std::vector< int >::value_type >(val3); arg3 = &temp3; (arg1)->resize(arg2,(std::vector< int >::value_type const &)*arg3); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_resize(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_size_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_IntVector_resize__SWIG_0(self, args); } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_size_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_IntVector_resize__SWIG_1(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IntVector_resize'.\n" " Possible C/C++ prototypes are:\n" " std::vector< int >::resize(std::vector< int >::size_type)\n" " std::vector< int >::resize(std::vector< int >::size_type,std::vector< int >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_IntVector_insert__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::iterator arg2 ; std::vector< int >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; std::vector< int >::value_type temp3 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; std::vector< int >::iterator result; if (!PyArg_ParseTuple(args,(char *)"OOO:IntVector_insert",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_insert" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_insert" "', argument " "2"" of type '" "std::vector< int >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_insert" "', argument " "2"" of type '" "std::vector< int >::iterator""'"); } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IntVector_insert" "', argument " "3"" of type '" "std::vector< int >::value_type""'"); } temp3 = static_cast< std::vector< int >::value_type >(val3); arg3 = &temp3; result = std_vector_Sl_int_Sg__insert__SWIG_0(arg1,arg2,(int const &)*arg3); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< int >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_insert__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::iterator arg2 ; std::vector< int >::size_type arg3 ; std::vector< int >::value_type *arg4 = 0 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; size_t val3 ; int ecode3 = 0 ; std::vector< int >::value_type temp4 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:IntVector_insert",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_insert" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_insert" "', argument " "2"" of type '" "std::vector< int >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "IntVector_insert" "', argument " "2"" of type '" "std::vector< int >::iterator""'"); } } ecode3 = SWIG_AsVal_size_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "IntVector_insert" "', argument " "3"" of type '" "std::vector< int >::size_type""'"); } arg3 = static_cast< std::vector< int >::size_type >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "IntVector_insert" "', argument " "4"" of type '" "std::vector< int >::value_type""'"); } temp4 = static_cast< std::vector< int >::value_type >(val4); arg4 = &temp4; std_vector_Sl_int_Sg__insert__SWIG_1(arg1,arg2,arg3,(int const &)*arg4); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_insert(PyObject *self, PyObject *args) { int argc; PyObject *argv[5]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 4) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_IntVector_insert__SWIG_0(self, args); } } } } if (argc == 4) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { { int res = SWIG_AsVal_size_t(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_IntVector_insert__SWIG_1(self, args); } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IntVector_insert'.\n" " Possible C/C++ prototypes are:\n" " std::vector< int >::insert(std::vector< int >::iterator,std::vector< int >::value_type const &)\n" " std::vector< int >::insert(std::vector< int >::iterator,std::vector< int >::size_type,std::vector< int >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_IntVector_reserve(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; std::vector< int >::size_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector_reserve",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_reserve" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IntVector_reserve" "', argument " "2"" of type '" "std::vector< int >::size_type""'"); } arg2 = static_cast< std::vector< int >::size_type >(val2); (arg1)->reserve(arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_IntVector_capacity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< int >::size_type result; if (!PyArg_ParseTuple(args,(char *)"O:IntVector_capacity",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_capacity" "', argument " "1"" of type '" "std::vector< int > const *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); result = ((std::vector< int > const *)arg1)->capacity(); resultobj = SWIG_From_size_t(static_cast< size_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_delete_IntVector(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< int > *arg1 = (std::vector< int > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_IntVector",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_IntVector" "', argument " "1"" of type '" "std::vector< int > *""'"); } arg1 = reinterpret_cast< std::vector< int > * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *IntVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } SWIGINTERN PyObject *_wrap_DoubleVector_iterator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; PyObject **arg2 = (PyObject **) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; swig::SwigPyIterator *result = 0 ; arg2 = &obj0; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_iterator",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_iterator" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (swig::SwigPyIterator *)std_vector_Sl_double_Sg__iterator(arg1,arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___nonzero__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector___nonzero__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___nonzero__" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (bool)std_vector_Sl_double_Sg____nonzero__((std::vector< double > const *)arg1); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___bool__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector___bool__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___bool__" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (bool)std_vector_Sl_double_Sg____bool__((std::vector< double > const *)arg1); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___len__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::size_type result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector___len__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___len__" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = std_vector_Sl_double_Sg____len__((std::vector< double > const *)arg1); resultobj = SWIG_From_size_t(static_cast< size_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_pop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::value_type result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_pop",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_pop" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); try { result = (std::vector< double >::value_type)std_vector_Sl_double_Sg__pop(arg1); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___getslice__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::difference_type arg2 ; std::vector< double >::difference_type arg3 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; std::vector< double,std::allocator< double > > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:DoubleVector___getslice__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___getslice__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector___getslice__" "', argument " "2"" of type '" "std::vector< double >::difference_type""'"); } arg2 = static_cast< std::vector< double >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DoubleVector___getslice__" "', argument " "3"" of type '" "std::vector< double >::difference_type""'"); } arg3 = static_cast< std::vector< double >::difference_type >(val3); try { result = (std::vector< double,std::allocator< double > > *)std_vector_Sl_double_Sg____getslice__(arg1,arg2,arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___setslice____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::difference_type arg2 ; std::vector< double >::difference_type arg3 ; std::vector< double,std::allocator< double > > *arg4 = 0 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; int res4 = SWIG_OLDOBJ ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:DoubleVector___setslice__",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___setslice__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector___setslice__" "', argument " "2"" of type '" "std::vector< double >::difference_type""'"); } arg2 = static_cast< std::vector< double >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DoubleVector___setslice__" "', argument " "3"" of type '" "std::vector< double >::difference_type""'"); } arg3 = static_cast< std::vector< double >::difference_type >(val3); { std::vector > *ptr = (std::vector > *)0; res4 = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "DoubleVector___setslice__" "', argument " "4"" of type '" "std::vector< double,std::allocator< double > > const &""'"); } if (!ptr) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DoubleVector___setslice__" "', argument " "4"" of type '" "std::vector< double,std::allocator< double > > const &""'"); } arg4 = ptr; } try { std_vector_Sl_double_Sg____setslice____SWIG_0(arg1,arg2,arg3,(std::vector< double,std::allocator< double > > const &)*arg4); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); if (SWIG_IsNewObj(res4)) delete arg4; return resultobj; fail: if (SWIG_IsNewObj(res4)) delete arg4; return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___setslice____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::difference_type arg2 ; std::vector< double >::difference_type arg3 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:DoubleVector___setslice__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___setslice__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector___setslice__" "', argument " "2"" of type '" "std::vector< double >::difference_type""'"); } arg2 = static_cast< std::vector< double >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DoubleVector___setslice__" "', argument " "3"" of type '" "std::vector< double >::difference_type""'"); } arg3 = static_cast< std::vector< double >::difference_type >(val3); try { std_vector_Sl_double_Sg____setslice____SWIG_0(arg1,arg2,arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___setslice__(PyObject *self, PyObject *args) { int argc; PyObject *argv[5]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 4) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_DoubleVector___setslice____SWIG_1(self, args); } } } } if (argc == 4) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { int res = swig::asptr(argv[3], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_DoubleVector___setslice____SWIG_0(self, args); } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'DoubleVector___setslice__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< double >::__setslice__(std::vector< double >::difference_type,std::vector< double >::difference_type,std::vector< double,std::allocator< double > > const &)\n" " std::vector< double >::__setslice__(std::vector< double >::difference_type,std::vector< double >::difference_type)\n"); return 0; } SWIGINTERN PyObject *_wrap_DoubleVector___delslice__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::difference_type arg2 ; std::vector< double >::difference_type arg3 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:DoubleVector___delslice__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___delslice__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector___delslice__" "', argument " "2"" of type '" "std::vector< double >::difference_type""'"); } arg2 = static_cast< std::vector< double >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DoubleVector___delslice__" "', argument " "3"" of type '" "std::vector< double >::difference_type""'"); } arg3 = static_cast< std::vector< double >::difference_type >(val3); try { std_vector_Sl_double_Sg____delslice__(arg1,arg2,arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___delitem____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::difference_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector___delitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___delitem__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector___delitem__" "', argument " "2"" of type '" "std::vector< double >::difference_type""'"); } arg2 = static_cast< std::vector< double >::difference_type >(val2); try { std_vector_Sl_double_Sg____delitem____SWIG_0(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___getitem____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< double,std::allocator< double > > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector___getitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___getitem__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector___getitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } try { result = (std::vector< double,std::allocator< double > > *)std_vector_Sl_double_Sg____getitem____SWIG_0(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___setitem____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; std::vector< double,std::allocator< double > > *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; int res3 = SWIG_OLDOBJ ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:DoubleVector___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___setitem__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector___setitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } { std::vector > *ptr = (std::vector > *)0; res3 = swig::asptr(obj2, &ptr); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "DoubleVector___setitem__" "', argument " "3"" of type '" "std::vector< double,std::allocator< double > > const &""'"); } if (!ptr) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DoubleVector___setitem__" "', argument " "3"" of type '" "std::vector< double,std::allocator< double > > const &""'"); } arg3 = ptr; } try { std_vector_Sl_double_Sg____setitem____SWIG_0(arg1,arg2,(std::vector< double,std::allocator< double > > const &)*arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); if (SWIG_IsNewObj(res3)) delete arg3; return resultobj; fail: if (SWIG_IsNewObj(res3)) delete arg3; return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___setitem____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector___setitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___setitem__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector___setitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } try { std_vector_Sl_double_Sg____setitem____SWIG_1(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___delitem____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector___delitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___delitem__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector___delitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } try { std_vector_Sl_double_Sg____delitem____SWIG_1(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___delitem__(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { return _wrap_DoubleVector___delitem____SWIG_1(self, args); } } } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_DoubleVector___delitem____SWIG_0(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'DoubleVector___delitem__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< double >::__delitem__(std::vector< double >::difference_type)\n" " std::vector< double >::__delitem__(PySliceObject *)\n"); return 0; } SWIGINTERN PyObject *_wrap_DoubleVector___getitem____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::difference_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< double >::value_type *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector___getitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___getitem__" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector___getitem__" "', argument " "2"" of type '" "std::vector< double >::difference_type""'"); } arg2 = static_cast< std::vector< double >::difference_type >(val2); try { result = (std::vector< double >::value_type *) &std_vector_Sl_double_Sg____getitem____SWIG_1((std::vector< double > const *)arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_From_double(static_cast< double >(*result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___getitem__(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { return _wrap_DoubleVector___getitem____SWIG_0(self, args); } } } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_DoubleVector___getitem____SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'DoubleVector___getitem__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< double >::__getitem__(PySliceObject *)\n" " std::vector< double >::__getitem__(std::vector< double >::difference_type) const\n"); return 0; } SWIGINTERN PyObject *_wrap_DoubleVector___setitem____SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::difference_type arg2 ; std::vector< double >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; std::vector< double >::value_type temp3 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:DoubleVector___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector___setitem__" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector___setitem__" "', argument " "2"" of type '" "std::vector< double >::difference_type""'"); } arg2 = static_cast< std::vector< double >::difference_type >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DoubleVector___setitem__" "', argument " "3"" of type '" "std::vector< double >::value_type""'"); } temp3 = static_cast< std::vector< double >::value_type >(val3); arg3 = &temp3; try { std_vector_Sl_double_Sg____setitem____SWIG_2(arg1,arg2,(double const &)*arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector___setitem__(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { return _wrap_DoubleVector___setitem____SWIG_1(self, args); } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { int res = swig::asptr(argv[2], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_DoubleVector___setitem____SWIG_0(self, args); } } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_double(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_DoubleVector___setitem____SWIG_2(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'DoubleVector___setitem__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< double >::__setitem__(PySliceObject *,std::vector< double,std::allocator< double > > const &)\n" " std::vector< double >::__setitem__(PySliceObject *)\n" " std::vector< double >::__setitem__(std::vector< double >::difference_type,std::vector< double >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_DoubleVector_append(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::value_type *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; std::vector< double >::value_type temp2 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector_append",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_append" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector_append" "', argument " "2"" of type '" "std::vector< double >::value_type""'"); } temp2 = static_cast< std::vector< double >::value_type >(val2); arg2 = &temp2; std_vector_Sl_double_Sg__append(arg1,(double const &)*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_DoubleVector__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_DoubleVector")) SWIG_fail; result = (std::vector< double > *)new std::vector< double >(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_DoubleVector__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = 0 ; int res1 = SWIG_OLDOBJ ; PyObject * obj0 = 0 ; std::vector< double > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_DoubleVector",&obj0)) SWIG_fail; { std::vector > *ptr = (std::vector > *)0; res1 = swig::asptr(obj0, &ptr); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_DoubleVector" "', argument " "1"" of type '" "std::vector< double > const &""'"); } if (!ptr) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_DoubleVector" "', argument " "1"" of type '" "std::vector< double > const &""'"); } arg1 = ptr; } result = (std::vector< double > *)new std::vector< double >((std::vector< double > const &)*arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_POINTER_NEW | 0 ); if (SWIG_IsNewObj(res1)) delete arg1; return resultobj; fail: if (SWIG_IsNewObj(res1)) delete arg1; return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_empty(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_empty",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_empty" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (bool)((std::vector< double > const *)arg1)->empty(); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::size_type result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_size",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_size" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = ((std::vector< double > const *)arg1)->size(); resultobj = SWIG_From_size_t(static_cast< size_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_clear(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_clear",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_clear" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); (arg1)->clear(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_swap(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double > *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector_swap",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_swap" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DoubleVector_swap" "', argument " "2"" of type '" "std::vector< double > &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DoubleVector_swap" "', argument " "2"" of type '" "std::vector< double > &""'"); } arg2 = reinterpret_cast< std::vector< double > * >(argp2); (arg1)->swap(*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_get_allocator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; SwigValueWrapper< std::allocator< double > > result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_get_allocator",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_get_allocator" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = ((std::vector< double > const *)arg1)->get_allocator(); resultobj = SWIG_NewPointerObj((new std::vector< double >::allocator_type(static_cast< const std::vector< double >::allocator_type& >(result))), SWIGTYPE_p_std__allocatorT_double_t, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_begin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::iterator result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_begin",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_begin" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (arg1)->begin(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< double >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_end(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::iterator result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_end",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_end" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (arg1)->end(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< double >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_rbegin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::reverse_iterator result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_rbegin",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_rbegin" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (arg1)->rbegin(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< double >::reverse_iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_rend(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::reverse_iterator result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_rend",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_rend" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (arg1)->rend(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< double >::reverse_iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_DoubleVector__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double >::size_type arg1 ; size_t val1 ; int ecode1 = 0 ; PyObject * obj0 = 0 ; std::vector< double > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_DoubleVector",&obj0)) SWIG_fail; ecode1 = SWIG_AsVal_size_t(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_DoubleVector" "', argument " "1"" of type '" "std::vector< double >::size_type""'"); } arg1 = static_cast< std::vector< double >::size_type >(val1); result = (std::vector< double > *)new std::vector< double >(arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_pop_back(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_pop_back",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_pop_back" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); (arg1)->pop_back(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_resize__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::size_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector_resize",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_resize" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector_resize" "', argument " "2"" of type '" "std::vector< double >::size_type""'"); } arg2 = static_cast< std::vector< double >::size_type >(val2); (arg1)->resize(arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_erase__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::iterator arg2 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< double >::iterator result; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector_erase",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_erase" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_erase" "', argument " "2"" of type '" "std::vector< double >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_erase" "', argument " "2"" of type '" "std::vector< double >::iterator""'"); } } result = std_vector_Sl_double_Sg__erase__SWIG_0(arg1,arg2); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< double >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_erase__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::iterator arg2 ; std::vector< double >::iterator arg3 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; swig::SwigPyIterator *iter3 = 0 ; int res3 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; std::vector< double >::iterator result; if (!PyArg_ParseTuple(args,(char *)"OOO:DoubleVector_erase",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_erase" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_erase" "', argument " "2"" of type '" "std::vector< double >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_erase" "', argument " "2"" of type '" "std::vector< double >::iterator""'"); } } res3 = SWIG_ConvertPtr(obj2, SWIG_as_voidptrptr(&iter3), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res3) || !iter3) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_erase" "', argument " "3"" of type '" "std::vector< double >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter3); if (iter_t) { arg3 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_erase" "', argument " "3"" of type '" "std::vector< double >::iterator""'"); } } result = std_vector_Sl_double_Sg__erase__SWIG_1(arg1,arg2,arg3); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< double >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_erase(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { return _wrap_DoubleVector_erase__SWIG_0(self, args); } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[2], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { return _wrap_DoubleVector_erase__SWIG_1(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'DoubleVector_erase'.\n" " Possible C/C++ prototypes are:\n" " std::vector< double >::erase(std::vector< double >::iterator)\n" " std::vector< double >::erase(std::vector< double >::iterator,std::vector< double >::iterator)\n"); return 0; } SWIGINTERN PyObject *_wrap_new_DoubleVector__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double >::size_type arg1 ; std::vector< double >::value_type *arg2 = 0 ; size_t val1 ; int ecode1 = 0 ; std::vector< double >::value_type temp2 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< double > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:new_DoubleVector",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_size_t(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_DoubleVector" "', argument " "1"" of type '" "std::vector< double >::size_type""'"); } arg1 = static_cast< std::vector< double >::size_type >(val1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_DoubleVector" "', argument " "2"" of type '" "std::vector< double >::value_type""'"); } temp2 = static_cast< std::vector< double >::value_type >(val2); arg2 = &temp2; result = (std::vector< double > *)new std::vector< double >(arg1,(std::vector< double >::value_type const &)*arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_DoubleVector(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_new_DoubleVector__SWIG_0(self, args); } if (argc == 1) { int _v; { int res = SWIG_AsVal_size_t(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_new_DoubleVector__SWIG_2(self, args); } } if (argc == 1) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_DoubleVector__SWIG_1(self, args); } } if (argc == 2) { int _v; { int res = SWIG_AsVal_size_t(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_new_DoubleVector__SWIG_3(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_DoubleVector'.\n" " Possible C/C++ prototypes are:\n" " std::vector< double >::vector()\n" " std::vector< double >::vector(std::vector< double > const &)\n" " std::vector< double >::vector(std::vector< double >::size_type)\n" " std::vector< double >::vector(std::vector< double >::size_type,std::vector< double >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_DoubleVector_push_back(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::value_type *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; std::vector< double >::value_type temp2 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector_push_back",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_push_back" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector_push_back" "', argument " "2"" of type '" "std::vector< double >::value_type""'"); } temp2 = static_cast< std::vector< double >::value_type >(val2); arg2 = &temp2; (arg1)->push_back((std::vector< double >::value_type const &)*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_front(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::value_type *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_front",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_front" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (std::vector< double >::value_type *) &((std::vector< double > const *)arg1)->front(); resultobj = SWIG_From_double(static_cast< double >(*result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_back(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::value_type *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_back",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_back" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = (std::vector< double >::value_type *) &((std::vector< double > const *)arg1)->back(); resultobj = SWIG_From_double(static_cast< double >(*result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::size_type arg2 ; std::vector< double >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; std::vector< double >::value_type temp3 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:DoubleVector_assign",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_assign" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector_assign" "', argument " "2"" of type '" "std::vector< double >::size_type""'"); } arg2 = static_cast< std::vector< double >::size_type >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DoubleVector_assign" "', argument " "3"" of type '" "std::vector< double >::value_type""'"); } temp3 = static_cast< std::vector< double >::value_type >(val3); arg3 = &temp3; (arg1)->assign(arg2,(std::vector< double >::value_type const &)*arg3); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_resize__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::size_type arg2 ; std::vector< double >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; std::vector< double >::value_type temp3 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:DoubleVector_resize",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_resize" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector_resize" "', argument " "2"" of type '" "std::vector< double >::size_type""'"); } arg2 = static_cast< std::vector< double >::size_type >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DoubleVector_resize" "', argument " "3"" of type '" "std::vector< double >::value_type""'"); } temp3 = static_cast< std::vector< double >::value_type >(val3); arg3 = &temp3; (arg1)->resize(arg2,(std::vector< double >::value_type const &)*arg3); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_resize(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_size_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_DoubleVector_resize__SWIG_0(self, args); } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_size_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_double(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_DoubleVector_resize__SWIG_1(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'DoubleVector_resize'.\n" " Possible C/C++ prototypes are:\n" " std::vector< double >::resize(std::vector< double >::size_type)\n" " std::vector< double >::resize(std::vector< double >::size_type,std::vector< double >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_DoubleVector_insert__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::iterator arg2 ; std::vector< double >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; std::vector< double >::value_type temp3 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; std::vector< double >::iterator result; if (!PyArg_ParseTuple(args,(char *)"OOO:DoubleVector_insert",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_insert" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_insert" "', argument " "2"" of type '" "std::vector< double >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_insert" "', argument " "2"" of type '" "std::vector< double >::iterator""'"); } } ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DoubleVector_insert" "', argument " "3"" of type '" "std::vector< double >::value_type""'"); } temp3 = static_cast< std::vector< double >::value_type >(val3); arg3 = &temp3; result = std_vector_Sl_double_Sg__insert__SWIG_0(arg1,arg2,(double const &)*arg3); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< double >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_insert__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::iterator arg2 ; std::vector< double >::size_type arg3 ; std::vector< double >::value_type *arg4 = 0 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; size_t val3 ; int ecode3 = 0 ; std::vector< double >::value_type temp4 ; double val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:DoubleVector_insert",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_insert" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_insert" "', argument " "2"" of type '" "std::vector< double >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "DoubleVector_insert" "', argument " "2"" of type '" "std::vector< double >::iterator""'"); } } ecode3 = SWIG_AsVal_size_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "DoubleVector_insert" "', argument " "3"" of type '" "std::vector< double >::size_type""'"); } arg3 = static_cast< std::vector< double >::size_type >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "DoubleVector_insert" "', argument " "4"" of type '" "std::vector< double >::value_type""'"); } temp4 = static_cast< std::vector< double >::value_type >(val4); arg4 = &temp4; std_vector_Sl_double_Sg__insert__SWIG_1(arg1,arg2,arg3,(double const &)*arg4); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_insert(PyObject *self, PyObject *args) { int argc; PyObject *argv[5]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 4) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { { int res = SWIG_AsVal_double(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_DoubleVector_insert__SWIG_0(self, args); } } } } if (argc == 4) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { { int res = SWIG_AsVal_size_t(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_double(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_DoubleVector_insert__SWIG_1(self, args); } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'DoubleVector_insert'.\n" " Possible C/C++ prototypes are:\n" " std::vector< double >::insert(std::vector< double >::iterator,std::vector< double >::value_type const &)\n" " std::vector< double >::insert(std::vector< double >::iterator,std::vector< double >::size_type,std::vector< double >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_DoubleVector_reserve(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; std::vector< double >::size_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:DoubleVector_reserve",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_reserve" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "DoubleVector_reserve" "', argument " "2"" of type '" "std::vector< double >::size_type""'"); } arg2 = static_cast< std::vector< double >::size_type >(val2); (arg1)->reserve(arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_DoubleVector_capacity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< double >::size_type result; if (!PyArg_ParseTuple(args,(char *)"O:DoubleVector_capacity",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DoubleVector_capacity" "', argument " "1"" of type '" "std::vector< double > const *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); result = ((std::vector< double > const *)arg1)->capacity(); resultobj = SWIG_From_size_t(static_cast< size_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_delete_DoubleVector(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< double > *arg1 = (std::vector< double > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_DoubleVector",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_DoubleVector" "', argument " "1"" of type '" "std::vector< double > *""'"); } arg1 = reinterpret_cast< std::vector< double > * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *DoubleVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } SWIGINTERN PyObject *_wrap_ImageVector_iterator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; PyObject **arg2 = (PyObject **) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; swig::SwigPyIterator *result = 0 ; arg2 = &obj0; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_iterator",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_iterator" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (swig::SwigPyIterator *)std_vector_Sl_vips_VImage_Sg__iterator(arg1,arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_swig__SwigPyIterator, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___nonzero__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector___nonzero__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___nonzero__" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (bool)std_vector_Sl_vips_VImage_Sg____nonzero__((std::vector< vips::VImage > const *)arg1); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___bool__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector___bool__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___bool__" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (bool)std_vector_Sl_vips_VImage_Sg____bool__((std::vector< vips::VImage > const *)arg1); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___len__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::size_type result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector___len__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___len__" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = std_vector_Sl_vips_VImage_Sg____len__((std::vector< vips::VImage > const *)arg1); resultobj = SWIG_From_size_t(static_cast< size_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_pop(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::value_type result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_pop",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_pop" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); try { result = std_vector_Sl_vips_VImage_Sg__pop(arg1); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_NewPointerObj((new std::vector< vips::VImage >::value_type(static_cast< const std::vector< vips::VImage >::value_type& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___getslice__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::difference_type arg2 ; std::vector< vips::VImage >::difference_type arg3 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; std::vector< vips::VImage,std::allocator< vips::VImage > > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:ImageVector___getslice__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___getslice__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector___getslice__" "', argument " "2"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ImageVector___getslice__" "', argument " "3"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg3 = static_cast< std::vector< vips::VImage >::difference_type >(val3); try { result = (std::vector< vips::VImage,std::allocator< vips::VImage > > *)std_vector_Sl_vips_VImage_Sg____getslice__(arg1,arg2,arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___setslice____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::difference_type arg2 ; std::vector< vips::VImage >::difference_type arg3 ; std::vector< vips::VImage,std::allocator< vips::VImage > > *arg4 = 0 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; int res4 = SWIG_OLDOBJ ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:ImageVector___setslice__",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___setslice__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector___setslice__" "', argument " "2"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ImageVector___setslice__" "', argument " "3"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg3 = static_cast< std::vector< vips::VImage >::difference_type >(val3); { std::vector > *ptr = (std::vector > *)0; res4 = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ImageVector___setslice__" "', argument " "4"" of type '" "std::vector< vips::VImage,std::allocator< vips::VImage > > const &""'"); } if (!ptr) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector___setslice__" "', argument " "4"" of type '" "std::vector< vips::VImage,std::allocator< vips::VImage > > const &""'"); } arg4 = ptr; } try { std_vector_Sl_vips_VImage_Sg____setslice____SWIG_0(arg1,arg2,arg3,(std::vector< vips::VImage,std::allocator< vips::VImage > > const &)*arg4); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); if (SWIG_IsNewObj(res4)) delete arg4; return resultobj; fail: if (SWIG_IsNewObj(res4)) delete arg4; return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___setslice____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::difference_type arg2 ; std::vector< vips::VImage >::difference_type arg3 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:ImageVector___setslice__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___setslice__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector___setslice__" "', argument " "2"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ImageVector___setslice__" "', argument " "3"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg3 = static_cast< std::vector< vips::VImage >::difference_type >(val3); try { std_vector_Sl_vips_VImage_Sg____setslice____SWIG_0(arg1,arg2,arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___setslice__(PyObject *self, PyObject *args) { int argc; PyObject *argv[5]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 4) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_ImageVector___setslice____SWIG_1(self, args); } } } } if (argc == 4) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { int res = swig::asptr(argv[3], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_ImageVector___setslice____SWIG_0(self, args); } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'ImageVector___setslice__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< vips::VImage >::__setslice__(std::vector< vips::VImage >::difference_type,std::vector< vips::VImage >::difference_type,std::vector< vips::VImage,std::allocator< vips::VImage > > const &)\n" " std::vector< vips::VImage >::__setslice__(std::vector< vips::VImage >::difference_type,std::vector< vips::VImage >::difference_type)\n"); return 0; } SWIGINTERN PyObject *_wrap_ImageVector___delslice__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::difference_type arg2 ; std::vector< vips::VImage >::difference_type arg3 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; ptrdiff_t val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:ImageVector___delslice__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___delslice__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector___delslice__" "', argument " "2"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::difference_type >(val2); ecode3 = SWIG_AsVal_ptrdiff_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ImageVector___delslice__" "', argument " "3"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg3 = static_cast< std::vector< vips::VImage >::difference_type >(val3); try { std_vector_Sl_vips_VImage_Sg____delslice__(arg1,arg2,arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___delitem____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::difference_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector___delitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___delitem__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector___delitem__" "', argument " "2"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::difference_type >(val2); try { std_vector_Sl_vips_VImage_Sg____delitem____SWIG_0(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___getitem____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< vips::VImage,std::allocator< vips::VImage > > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector___getitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___getitem__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector___getitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } try { result = (std::vector< vips::VImage,std::allocator< vips::VImage > > *)std_vector_Sl_vips_VImage_Sg____getitem____SWIG_0(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___setitem____SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; std::vector< vips::VImage,std::allocator< vips::VImage > > *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; int res3 = SWIG_OLDOBJ ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:ImageVector___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___setitem__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector___setitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } { std::vector > *ptr = (std::vector > *)0; res3 = swig::asptr(obj2, &ptr); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ImageVector___setitem__" "', argument " "3"" of type '" "std::vector< vips::VImage,std::allocator< vips::VImage > > const &""'"); } if (!ptr) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector___setitem__" "', argument " "3"" of type '" "std::vector< vips::VImage,std::allocator< vips::VImage > > const &""'"); } arg3 = ptr; } try { std_vector_Sl_vips_VImage_Sg____setitem____SWIG_0(arg1,arg2,(std::vector< vips::VImage,std::allocator< vips::VImage > > const &)*arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); if (SWIG_IsNewObj(res3)) delete arg3; return resultobj; fail: if (SWIG_IsNewObj(res3)) delete arg3; return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___setitem____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector___setitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___setitem__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector___setitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } try { std_vector_Sl_vips_VImage_Sg____setitem____SWIG_1(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___delitem____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; PySliceObject *arg2 = (PySliceObject *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector___delitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___delitem__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); { if (!PySlice_Check(obj1)) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector___delitem__" "', argument " "2"" of type '" "PySliceObject *""'"); } arg2 = (PySliceObject *) obj1; } try { std_vector_Sl_vips_VImage_Sg____delitem____SWIG_1(arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } catch(std::invalid_argument &_e) { SWIG_exception_fail(SWIG_ValueError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___delitem__(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { return _wrap_ImageVector___delitem____SWIG_1(self, args); } } } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_ImageVector___delitem____SWIG_0(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'ImageVector___delitem__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< vips::VImage >::__delitem__(std::vector< vips::VImage >::difference_type)\n" " std::vector< vips::VImage >::__delitem__(PySliceObject *)\n"); return 0; } SWIGINTERN PyObject *_wrap_ImageVector___getitem____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::difference_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< vips::VImage >::value_type *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector___getitem__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___getitem__" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector___getitem__" "', argument " "2"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::difference_type >(val2); try { result = (std::vector< vips::VImage >::value_type *) &std_vector_Sl_vips_VImage_Sg____getitem____SWIG_1((std::vector< vips::VImage > const *)arg1,arg2); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___getitem__(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { return _wrap_ImageVector___getitem____SWIG_0(self, args); } } } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_ImageVector___getitem____SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'ImageVector___getitem__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< vips::VImage >::__getitem__(PySliceObject *)\n" " std::vector< vips::VImage >::__getitem__(std::vector< vips::VImage >::difference_type) const\n"); return 0; } SWIGINTERN PyObject *_wrap_ImageVector___setitem____SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::difference_type arg2 ; std::vector< vips::VImage >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; ptrdiff_t val2 ; int ecode2 = 0 ; void *argp3 = 0 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:ImageVector___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector___setitem__" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_ptrdiff_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector___setitem__" "', argument " "2"" of type '" "std::vector< vips::VImage >::difference_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::difference_type >(val2); res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ImageVector___setitem__" "', argument " "3"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector___setitem__" "', argument " "3"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } arg3 = reinterpret_cast< std::vector< vips::VImage >::value_type * >(argp3); try { std_vector_Sl_vips_VImage_Sg____setitem____SWIG_2(arg1,arg2,(vips::VImage const &)*arg3); } catch(std::out_of_range &_e) { SWIG_exception_fail(SWIG_IndexError, (&_e)->what()); } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector___setitem__(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { return _wrap_ImageVector___setitem____SWIG_1(self, args); } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { _v = PySlice_Check(argv[1]); } if (_v) { int res = swig::asptr(argv[2], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_ImageVector___setitem____SWIG_0(self, args); } } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_ptrdiff_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_ImageVector___setitem____SWIG_2(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'ImageVector___setitem__'.\n" " Possible C/C++ prototypes are:\n" " std::vector< vips::VImage >::__setitem__(PySliceObject *,std::vector< vips::VImage,std::allocator< vips::VImage > > const &)\n" " std::vector< vips::VImage >::__setitem__(PySliceObject *)\n" " std::vector< vips::VImage >::__setitem__(std::vector< vips::VImage >::difference_type,std::vector< vips::VImage >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_ImageVector_append(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::value_type *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector_append",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_append" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ImageVector_append" "', argument " "2"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector_append" "', argument " "2"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } arg2 = reinterpret_cast< std::vector< vips::VImage >::value_type * >(argp2); std_vector_Sl_vips_VImage_Sg__append(arg1,(vips::VImage const &)*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_ImageVector__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_ImageVector")) SWIG_fail; result = (std::vector< vips::VImage > *)new std::vector< vips::VImage >(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_ImageVector__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = 0 ; int res1 = SWIG_OLDOBJ ; PyObject * obj0 = 0 ; std::vector< vips::VImage > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_ImageVector",&obj0)) SWIG_fail; { std::vector > *ptr = (std::vector > *)0; res1 = swig::asptr(obj0, &ptr); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_ImageVector" "', argument " "1"" of type '" "std::vector< vips::VImage > const &""'"); } if (!ptr) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ImageVector" "', argument " "1"" of type '" "std::vector< vips::VImage > const &""'"); } arg1 = ptr; } result = (std::vector< vips::VImage > *)new std::vector< vips::VImage >((std::vector< vips::VImage > const &)*arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, SWIG_POINTER_NEW | 0 ); if (SWIG_IsNewObj(res1)) delete arg1; return resultobj; fail: if (SWIG_IsNewObj(res1)) delete arg1; return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_empty(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_empty",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_empty" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (bool)((std::vector< vips::VImage > const *)arg1)->empty(); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::size_type result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_size",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_size" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = ((std::vector< vips::VImage > const *)arg1)->size(); resultobj = SWIG_From_size_t(static_cast< size_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_clear(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_clear",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_clear" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); (arg1)->clear(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_swap(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage > *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector_swap",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_swap" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ImageVector_swap" "', argument " "2"" of type '" "std::vector< vips::VImage > &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector_swap" "', argument " "2"" of type '" "std::vector< vips::VImage > &""'"); } arg2 = reinterpret_cast< std::vector< vips::VImage > * >(argp2); (arg1)->swap(*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_get_allocator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; SwigValueWrapper< std::allocator< vips::VImage > > result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_get_allocator",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_get_allocator" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = ((std::vector< vips::VImage > const *)arg1)->get_allocator(); resultobj = SWIG_NewPointerObj((new std::vector< vips::VImage >::allocator_type(static_cast< const std::vector< vips::VImage >::allocator_type& >(result))), SWIGTYPE_p_std__allocatorT_vips__VImage_t, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_begin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::iterator result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_begin",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_begin" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (arg1)->begin(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< vips::VImage >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_end(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::iterator result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_end",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_end" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (arg1)->end(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< vips::VImage >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_rbegin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::reverse_iterator result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_rbegin",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_rbegin" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (arg1)->rbegin(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< vips::VImage >::reverse_iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_rend(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::reverse_iterator result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_rend",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_rend" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (arg1)->rend(); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< vips::VImage >::reverse_iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_ImageVector__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage >::size_type arg1 ; size_t val1 ; int ecode1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_ImageVector",&obj0)) SWIG_fail; ecode1 = SWIG_AsVal_size_t(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_ImageVector" "', argument " "1"" of type '" "std::vector< vips::VImage >::size_type""'"); } arg1 = static_cast< std::vector< vips::VImage >::size_type >(val1); result = (std::vector< vips::VImage > *)new std::vector< vips::VImage >(arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_pop_back(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_pop_back",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_pop_back" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); (arg1)->pop_back(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_resize__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::size_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector_resize",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_resize" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector_resize" "', argument " "2"" of type '" "std::vector< vips::VImage >::size_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::size_type >(val2); (arg1)->resize(arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_erase__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::iterator arg2 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< vips::VImage >::iterator result; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector_erase",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_erase" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_erase" "', argument " "2"" of type '" "std::vector< vips::VImage >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_erase" "', argument " "2"" of type '" "std::vector< vips::VImage >::iterator""'"); } } result = std_vector_Sl_vips_VImage_Sg__erase__SWIG_0(arg1,arg2); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< vips::VImage >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_erase__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::iterator arg2 ; std::vector< vips::VImage >::iterator arg3 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; swig::SwigPyIterator *iter3 = 0 ; int res3 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; std::vector< vips::VImage >::iterator result; if (!PyArg_ParseTuple(args,(char *)"OOO:ImageVector_erase",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_erase" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_erase" "', argument " "2"" of type '" "std::vector< vips::VImage >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_erase" "', argument " "2"" of type '" "std::vector< vips::VImage >::iterator""'"); } } res3 = SWIG_ConvertPtr(obj2, SWIG_as_voidptrptr(&iter3), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res3) || !iter3) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_erase" "', argument " "3"" of type '" "std::vector< vips::VImage >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter3); if (iter_t) { arg3 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_erase" "', argument " "3"" of type '" "std::vector< vips::VImage >::iterator""'"); } } result = std_vector_Sl_vips_VImage_Sg__erase__SWIG_1(arg1,arg2,arg3); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< vips::VImage >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_erase(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { return _wrap_ImageVector_erase__SWIG_0(self, args); } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[2], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { return _wrap_ImageVector_erase__SWIG_1(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'ImageVector_erase'.\n" " Possible C/C++ prototypes are:\n" " std::vector< vips::VImage >::erase(std::vector< vips::VImage >::iterator)\n" " std::vector< vips::VImage >::erase(std::vector< vips::VImage >::iterator,std::vector< vips::VImage >::iterator)\n"); return 0; } SWIGINTERN PyObject *_wrap_new_ImageVector__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage >::size_type arg1 ; std::vector< vips::VImage >::value_type *arg2 = 0 ; size_t val1 ; int ecode1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::vector< vips::VImage > *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:new_ImageVector",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_size_t(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_ImageVector" "', argument " "1"" of type '" "std::vector< vips::VImage >::size_type""'"); } arg1 = static_cast< std::vector< vips::VImage >::size_type >(val1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_ImageVector" "', argument " "2"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_ImageVector" "', argument " "2"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } arg2 = reinterpret_cast< std::vector< vips::VImage >::value_type * >(argp2); result = (std::vector< vips::VImage > *)new std::vector< vips::VImage >(arg1,(std::vector< vips::VImage >::value_type const &)*arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_ImageVector(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_new_ImageVector__SWIG_0(self, args); } if (argc == 1) { int _v; { int res = SWIG_AsVal_size_t(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_new_ImageVector__SWIG_2(self, args); } } if (argc == 1) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_ImageVector__SWIG_1(self, args); } } if (argc == 2) { int _v; { int res = SWIG_AsVal_size_t(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_ImageVector__SWIG_3(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_ImageVector'.\n" " Possible C/C++ prototypes are:\n" " std::vector< vips::VImage >::vector()\n" " std::vector< vips::VImage >::vector(std::vector< vips::VImage > const &)\n" " std::vector< vips::VImage >::vector(std::vector< vips::VImage >::size_type)\n" " std::vector< vips::VImage >::vector(std::vector< vips::VImage >::size_type,std::vector< vips::VImage >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_ImageVector_push_back(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::value_type *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector_push_back",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_push_back" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ImageVector_push_back" "', argument " "2"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector_push_back" "', argument " "2"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } arg2 = reinterpret_cast< std::vector< vips::VImage >::value_type * >(argp2); (arg1)->push_back((std::vector< vips::VImage >::value_type const &)*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_front(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::value_type *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_front",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_front" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (std::vector< vips::VImage >::value_type *) &((std::vector< vips::VImage > const *)arg1)->front(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_back(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::value_type *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_back",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_back" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = (std::vector< vips::VImage >::value_type *) &((std::vector< vips::VImage > const *)arg1)->back(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_assign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::size_type arg2 ; std::vector< vips::VImage >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; void *argp3 = 0 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:ImageVector_assign",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_assign" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector_assign" "', argument " "2"" of type '" "std::vector< vips::VImage >::size_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::size_type >(val2); res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ImageVector_assign" "', argument " "3"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector_assign" "', argument " "3"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } arg3 = reinterpret_cast< std::vector< vips::VImage >::value_type * >(argp3); (arg1)->assign(arg2,(std::vector< vips::VImage >::value_type const &)*arg3); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_resize__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::size_type arg2 ; std::vector< vips::VImage >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; void *argp3 = 0 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:ImageVector_resize",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_resize" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector_resize" "', argument " "2"" of type '" "std::vector< vips::VImage >::size_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::size_type >(val2); res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ImageVector_resize" "', argument " "3"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector_resize" "', argument " "3"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } arg3 = reinterpret_cast< std::vector< vips::VImage >::value_type * >(argp3); (arg1)->resize(arg2,(std::vector< vips::VImage >::value_type const &)*arg3); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_resize(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_size_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_ImageVector_resize__SWIG_0(self, args); } } } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_size_t(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_ImageVector_resize__SWIG_1(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'ImageVector_resize'.\n" " Possible C/C++ prototypes are:\n" " std::vector< vips::VImage >::resize(std::vector< vips::VImage >::size_type)\n" " std::vector< vips::VImage >::resize(std::vector< vips::VImage >::size_type,std::vector< vips::VImage >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_ImageVector_insert__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::iterator arg2 ; std::vector< vips::VImage >::value_type *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; void *argp3 = 0 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; std::vector< vips::VImage >::iterator result; if (!PyArg_ParseTuple(args,(char *)"OOO:ImageVector_insert",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_insert" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_insert" "', argument " "2"" of type '" "std::vector< vips::VImage >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_insert" "', argument " "2"" of type '" "std::vector< vips::VImage >::iterator""'"); } } res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "ImageVector_insert" "', argument " "3"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector_insert" "', argument " "3"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } arg3 = reinterpret_cast< std::vector< vips::VImage >::value_type * >(argp3); result = std_vector_Sl_vips_VImage_Sg__insert__SWIG_0(arg1,arg2,(vips::VImage const &)*arg3); resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::vector< vips::VImage >::iterator & >(result)), swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_insert__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::iterator arg2 ; std::vector< vips::VImage >::size_type arg3 ; std::vector< vips::VImage >::value_type *arg4 = 0 ; void *argp1 = 0 ; int res1 = 0 ; swig::SwigPyIterator *iter2 = 0 ; int res2 ; size_t val3 ; int ecode3 = 0 ; void *argp4 = 0 ; int res4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:ImageVector_insert",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_insert" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::SwigPyIterator::descriptor(), 0); if (!SWIG_IsOK(res2) || !iter2) { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_insert" "', argument " "2"" of type '" "std::vector< vips::VImage >::iterator""'"); } else { swig::SwigPyIterator_T::iterator > *iter_t = dynamic_cast::iterator > *>(iter2); if (iter_t) { arg2 = iter_t->get_current(); } else { SWIG_exception_fail(SWIG_ArgError(SWIG_TypeError), "in method '" "ImageVector_insert" "', argument " "2"" of type '" "std::vector< vips::VImage >::iterator""'"); } } ecode3 = SWIG_AsVal_size_t(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ImageVector_insert" "', argument " "3"" of type '" "std::vector< vips::VImage >::size_type""'"); } arg3 = static_cast< std::vector< vips::VImage >::size_type >(val3); res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "ImageVector_insert" "', argument " "4"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } if (!argp4) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ImageVector_insert" "', argument " "4"" of type '" "std::vector< vips::VImage >::value_type const &""'"); } arg4 = reinterpret_cast< std::vector< vips::VImage >::value_type * >(argp4); std_vector_Sl_vips_VImage_Sg__insert__SWIG_1(arg1,arg2,arg3,(vips::VImage const &)*arg4); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_insert(PyObject *self, PyObject *args) { int argc; PyObject *argv[5]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 4) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 3) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_ImageVector_insert__SWIG_0(self, args); } } } } if (argc == 4) { int _v; int res = swig::asptr(argv[0], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { swig::SwigPyIterator *iter = 0; int res = SWIG_ConvertPtr(argv[1], SWIG_as_voidptrptr(&iter), swig::SwigPyIterator::descriptor(), 0); _v = (SWIG_IsOK(res) && iter && (dynamic_cast::iterator > *>(iter) != 0)); if (_v) { { int res = SWIG_AsVal_size_t(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { int res = SWIG_ConvertPtr(argv[3], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_ImageVector_insert__SWIG_1(self, args); } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'ImageVector_insert'.\n" " Possible C/C++ prototypes are:\n" " std::vector< vips::VImage >::insert(std::vector< vips::VImage >::iterator,std::vector< vips::VImage >::value_type const &)\n" " std::vector< vips::VImage >::insert(std::vector< vips::VImage >::iterator,std::vector< vips::VImage >::size_type,std::vector< vips::VImage >::value_type const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_ImageVector_reserve(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; std::vector< vips::VImage >::size_type arg2 ; void *argp1 = 0 ; int res1 = 0 ; size_t val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:ImageVector_reserve",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_reserve" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); ecode2 = SWIG_AsVal_size_t(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ImageVector_reserve" "', argument " "2"" of type '" "std::vector< vips::VImage >::size_type""'"); } arg2 = static_cast< std::vector< vips::VImage >::size_type >(val2); (arg1)->reserve(arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_ImageVector_capacity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::vector< vips::VImage >::size_type result; if (!PyArg_ParseTuple(args,(char *)"O:ImageVector_capacity",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ImageVector_capacity" "', argument " "1"" of type '" "std::vector< vips::VImage > const *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); result = ((std::vector< vips::VImage > const *)arg1)->capacity(); resultobj = SWIG_From_size_t(static_cast< size_t >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_delete_ImageVector(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage > *arg1 = (std::vector< vips::VImage > *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_ImageVector",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ImageVector" "', argument " "1"" of type '" "std::vector< vips::VImage > *""'"); } arg1 = reinterpret_cast< std::vector< vips::VImage > * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *ImageVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } SWIGINTERN PyObject *_wrap_init__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"O:init",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "init" "', argument " "1"" of type '" "char const *""'"); } arg1 = reinterpret_cast< char * >(buf1); result = (bool)vips::init((char const *)arg1); resultobj = SWIG_From_bool(static_cast< bool >(result)); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_init__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; bool result; if (!PyArg_ParseTuple(args,(char *)":init")) SWIG_fail; result = (bool)vips::init(); resultobj = SWIG_From_bool(static_cast< bool >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_init(PyObject *self, PyObject *args) { int argc; PyObject *argv[2]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 1) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_init__SWIG_1(self, args); } if (argc == 1) { int _v; int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_init__SWIG_0(self, args); } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'init'.\n" " Possible C/C++ prototypes are:\n" " vips::init(char const *)\n" " vips::init()\n"); return 0; } SWIGINTERN PyObject *_wrap_thread_shutdown(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; if (!PyArg_ParseTuple(args,(char *)":thread_shutdown")) SWIG_fail; vips::thread_shutdown(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_shutdown(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; if (!PyArg_ParseTuple(args,(char *)":shutdown")) SWIG_fail; vips::shutdown(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_print_all(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; if (!PyArg_ParseTuple(args,(char *)":VImage_print_all")) SWIG_fail; vips::VImage::print_all(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VImage__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; char *arg2 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:new_VImage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VImage" "', argument " "1"" of type '" "char const *""'"); } arg1 = reinterpret_cast< char * >(buf1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "new_VImage" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (vips::VImage *)new vips::VImage((char const *)arg1,(char const *)arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, SWIG_POINTER_NEW | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_new_VImage__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_VImage",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VImage" "', argument " "1"" of type '" "char const *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = (vips::VImage *)new vips::VImage((char const *)arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, SWIG_POINTER_NEW | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_new_VImage__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; void *arg1 = (void *) 0 ; int arg2 ; int arg3 ; int arg4 ; vips::VImage::TBandFmt arg5 ; int res1 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOO:new_VImage",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VImage" "', argument " "1"" of type '" "void *""'"); } ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_VImage" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_VImage" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_VImage" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "new_VImage" "', argument " "5"" of type '" "vips::VImage::TBandFmt""'"); } arg5 = static_cast< vips::VImage::TBandFmt >(val5); try { result = (vips::VImage *)new vips::VImage(arg1,arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VImage__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; _VipsImage *arg1 = (_VipsImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_VImage",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p__VipsImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VImage" "', argument " "1"" of type '" "_VipsImage *""'"); } arg1 = reinterpret_cast< _VipsImage * >(argp1); result = (vips::VImage *)new vips::VImage(arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VImage__SWIG_4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_VImage")) SWIG_fail; try { result = (vips::VImage *)new vips::VImage(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_convert2disc(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; char *arg2 = (char *) 0 ; char *arg3 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; int res3 ; char *buf3 = 0 ; int alloc3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_convert2disc",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_convert2disc" "', argument " "1"" of type '" "char const *""'"); } arg1 = reinterpret_cast< char * >(buf1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_convert2disc" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_convert2disc" "', argument " "3"" of type '" "char const *""'"); } arg3 = reinterpret_cast< char * >(buf3); try { result = vips::VImage::convert2disc((char const *)arg1,(char const *)arg2,(char const *)arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return NULL; } SWIGINTERN PyObject *_wrap_new_VImage__SWIG_5(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_VImage",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VImage" "', argument " "1"" of type '" "vips::VImage const &""'"); } if (!argp1) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_VImage" "', argument " "1"" of type '" "vips::VImage const &""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (vips::VImage *)new vips::VImage((vips::VImage const &)*arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VImage(PyObject *self, PyObject *args) { int argc; PyObject *argv[6]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 5) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_new_VImage__SWIG_4(self, args); } if (argc == 1) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p__VipsImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VImage__SWIG_3(self, args); } } if (argc == 1) { int _v; int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VImage__SWIG_5(self, args); } } if (argc == 1) { int _v; int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VImage__SWIG_1(self, args); } } if (argc == 2) { int _v; int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_AsCharPtrAndSize(argv[1], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VImage__SWIG_0(self, args); } } } if (argc == 5) { int _v; void *ptr = 0; int res = SWIG_ConvertPtr(argv[0], &ptr, 0, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[4], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_new_VImage__SWIG_2(self, args); } } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_VImage'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::VImage(char const *,char const *)\n" " vips::VImage::VImage(char const *)\n" " vips::VImage::VImage(void *,int,int,int,vips::VImage::TBandFmt)\n" " vips::VImage::VImage(_VipsImage *)\n" " vips::VImage::VImage()\n" " vips::VImage::VImage(vips::VImage const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage___assign__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage___assign__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage___assign__" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage___assign__" "', argument " "2"" of type '" "vips::VImage const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage___assign__" "', argument " "2"" of type '" "vips::VImage const &""'"); } arg2 = reinterpret_cast< vips::VImage * >(argp2); try { result = (vips::VImage *) &(arg1)->operator =((vips::VImage const &)*arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VImage, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_delete_VImage(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_VImage",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_VImage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_image(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; _VipsImage *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VImage_image",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_image" "', argument " "1"" of type '" "vips::VImage const *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (_VipsImage *)((vips::VImage const *)arg1)->image(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p__VipsImage, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_data(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; void *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VImage_data",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_data" "', argument " "1"" of type '" "vips::VImage const *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (void *)((vips::VImage const *)arg1)->data(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_write__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_write",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_write" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_write" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_write" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->write(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_write__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_write",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_write" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_write" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (arg1)->write((char const *)arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_write__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_write",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_write" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->write(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_write(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 1) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_write__SWIG_2(self, args); } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_write__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_AsCharPtrAndSize(argv[1], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_write__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_write'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::write(vips::VImage)\n" " vips::VImage::write(char const *)\n" " vips::VImage::write()\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_debug_print(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VImage_debug_print",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_debug_print" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); (arg1)->debug_print(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Xsize(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Xsize",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Xsize" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (int)(arg1)->Xsize(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Ysize(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Ysize",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Ysize" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (int)(arg1)->Ysize(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Bands(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Bands",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Bands" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (int)(arg1)->Bands(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_BandFmt(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage::TBandFmt result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_BandFmt",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_BandFmt" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (vips::VImage::TBandFmt)(arg1)->BandFmt(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Coding(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage::TCoding result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Coding",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Coding" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (vips::VImage::TCoding)(arg1)->Coding(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage::TType result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Type",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Type" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (vips::VImage::TType)(arg1)->Type(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Xres(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; float result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Xres",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Xres" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (float)(arg1)->Xres(); resultobj = SWIG_From_float(static_cast< float >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Yres(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; float result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Yres",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Yres" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (float)(arg1)->Yres(); resultobj = SWIG_From_float(static_cast< float >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Length(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Length",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Length" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (int)(arg1)->Length(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Compression(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage::TCompression result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Compression",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Compression" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (vips::VImage::TCompression)(arg1)->Compression(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; short result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Level",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Level" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (short)(arg1)->Level(); resultobj = SWIG_From_short(static_cast< short >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Xoffset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Xoffset",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Xoffset" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (int)(arg1)->Xoffset(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Yoffset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Yoffset",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Yoffset" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (int)(arg1)->Yoffset(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_filename(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VImage_filename",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_filename" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (char *)(arg1)->filename(); resultobj = SWIG_FromCharPtr((const char *)result); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Hist(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Hist",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Hist" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); result = (char *)(arg1)->Hist(); resultobj = SWIG_FromCharPtr((const char *)result); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_hough_circle(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_hough_circle",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_hough_circle" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_hough_circle" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_hough_circle" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_hough_circle" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->hough_circle(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_remove(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; gboolean result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_meta_remove",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_remove" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_remove" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); result = (arg1)->meta_remove((char const *)arg2); resultobj = SWIG_NewPointerObj((new gboolean(static_cast< const gboolean& >(result))), SWIGTYPE_p_gboolean, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_get_typeof(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; GType result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_meta_get_typeof",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_get_typeof" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_get_typeof" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); result = (arg1)->meta_get_typeof((char const *)arg2); resultobj = SWIG_NewPointerObj((new GType(static_cast< const GType& >(result))), SWIGTYPE_p_GType, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_get_int(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_meta_get_int",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_get_int" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_get_int" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (int)(arg1)->meta_get_int((char const *)arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_get_double(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_meta_get_double",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_get_double" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_get_double" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (double)(arg1)->meta_get_double((char const *)arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_get_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_meta_get_string",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_get_string" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_get_string" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (char *)(arg1)->meta_get_string((char const *)arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_FromCharPtr((const char *)result); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_get_area(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; void *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_meta_get_area",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_get_area" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_get_area" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (void *)(arg1)->meta_get_area((char const *)arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_get_blob(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; size_t *arg3 = (size_t *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; void *argp3 = 0 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; void *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_meta_get_blob",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_get_blob" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_get_blob" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_size_t, 0 | 0 ); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_meta_get_blob" "', argument " "3"" of type '" "size_t *""'"); } arg3 = reinterpret_cast< size_t * >(argp3); try { result = (void *)(arg1)->meta_get_blob((char const *)arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_set__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_meta_set",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_set" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_set" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_meta_set" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { (arg1)->meta_set((char const *)arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_set__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; double arg3 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_meta_set",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_set" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_set" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_meta_set" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); try { (arg1)->meta_set((char const *)arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_set__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; char *arg3 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; int res3 ; char *buf3 = 0 ; int alloc3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_meta_set",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_meta_set" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_meta_set" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_meta_set" "', argument " "3"" of type '" "char const *""'"); } arg3 = reinterpret_cast< char * >(buf3); try { (arg1)->meta_set((char const *)arg2,(char const *)arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return NULL; } SWIGINTERN PyObject *_wrap_VImage_meta_set(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 3) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_AsCharPtrAndSize(argv[1], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_meta_set__SWIG_0(self, args); } } } } if (argc == 3) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_AsCharPtrAndSize(argv[1], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_meta_set__SWIG_1(self, args); } } } } if (argc == 3) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_AsCharPtrAndSize(argv[1], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_AsCharPtrAndSize(argv[2], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_meta_set__SWIG_2(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_meta_set'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::meta_set(char const *,int)\n" " vips::VImage::meta_set(char const *,double)\n" " vips::VImage::meta_set(char const *,char const *)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_initdesc__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; vips::VImage::TBandFmt arg5 ; vips::VImage::TCoding arg6 ; vips::VImage::TType arg7 ; float arg8 ; float arg9 ; int arg10 ; int arg11 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; float val8 ; int ecode8 = 0 ; float val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOO:VImage_initdesc",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_initdesc" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_initdesc" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_initdesc" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_initdesc" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_initdesc" "', argument " "5"" of type '" "vips::VImage::TBandFmt""'"); } arg5 = static_cast< vips::VImage::TBandFmt >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_initdesc" "', argument " "6"" of type '" "vips::VImage::TCoding""'"); } arg6 = static_cast< vips::VImage::TCoding >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_initdesc" "', argument " "7"" of type '" "vips::VImage::TType""'"); } arg7 = static_cast< vips::VImage::TType >(val7); ecode8 = SWIG_AsVal_float(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_initdesc" "', argument " "8"" of type '" "float""'"); } arg8 = static_cast< float >(val8); ecode9 = SWIG_AsVal_float(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_initdesc" "', argument " "9"" of type '" "float""'"); } arg9 = static_cast< float >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_initdesc" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_initdesc" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); try { (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_initdesc__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; vips::VImage::TBandFmt arg5 ; vips::VImage::TCoding arg6 ; vips::VImage::TType arg7 ; float arg8 ; float arg9 ; int arg10 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; float val8 ; int ecode8 = 0 ; float val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOO:VImage_initdesc",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_initdesc" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_initdesc" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_initdesc" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_initdesc" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_initdesc" "', argument " "5"" of type '" "vips::VImage::TBandFmt""'"); } arg5 = static_cast< vips::VImage::TBandFmt >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_initdesc" "', argument " "6"" of type '" "vips::VImage::TCoding""'"); } arg6 = static_cast< vips::VImage::TCoding >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_initdesc" "', argument " "7"" of type '" "vips::VImage::TType""'"); } arg7 = static_cast< vips::VImage::TType >(val7); ecode8 = SWIG_AsVal_float(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_initdesc" "', argument " "8"" of type '" "float""'"); } arg8 = static_cast< float >(val8); ecode9 = SWIG_AsVal_float(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_initdesc" "', argument " "9"" of type '" "float""'"); } arg9 = static_cast< float >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_initdesc" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); try { (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_initdesc__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; vips::VImage::TBandFmt arg5 ; vips::VImage::TCoding arg6 ; vips::VImage::TType arg7 ; float arg8 ; float arg9 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; float val8 ; int ecode8 = 0 ; float val9 ; int ecode9 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:VImage_initdesc",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_initdesc" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_initdesc" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_initdesc" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_initdesc" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_initdesc" "', argument " "5"" of type '" "vips::VImage::TBandFmt""'"); } arg5 = static_cast< vips::VImage::TBandFmt >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_initdesc" "', argument " "6"" of type '" "vips::VImage::TCoding""'"); } arg6 = static_cast< vips::VImage::TCoding >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_initdesc" "', argument " "7"" of type '" "vips::VImage::TType""'"); } arg7 = static_cast< vips::VImage::TType >(val7); ecode8 = SWIG_AsVal_float(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_initdesc" "', argument " "8"" of type '" "float""'"); } arg8 = static_cast< float >(val8); ecode9 = SWIG_AsVal_float(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_initdesc" "', argument " "9"" of type '" "float""'"); } arg9 = static_cast< float >(val9); try { (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_initdesc__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; vips::VImage::TBandFmt arg5 ; vips::VImage::TCoding arg6 ; vips::VImage::TType arg7 ; float arg8 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; float val8 ; int ecode8 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:VImage_initdesc",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_initdesc" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_initdesc" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_initdesc" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_initdesc" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_initdesc" "', argument " "5"" of type '" "vips::VImage::TBandFmt""'"); } arg5 = static_cast< vips::VImage::TBandFmt >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_initdesc" "', argument " "6"" of type '" "vips::VImage::TCoding""'"); } arg6 = static_cast< vips::VImage::TCoding >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_initdesc" "', argument " "7"" of type '" "vips::VImage::TType""'"); } arg7 = static_cast< vips::VImage::TType >(val7); ecode8 = SWIG_AsVal_float(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_initdesc" "', argument " "8"" of type '" "float""'"); } arg8 = static_cast< float >(val8); try { (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7,arg8); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_initdesc__SWIG_4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; vips::VImage::TBandFmt arg5 ; vips::VImage::TCoding arg6 ; vips::VImage::TType arg7 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_initdesc",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_initdesc" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_initdesc" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_initdesc" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_initdesc" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_initdesc" "', argument " "5"" of type '" "vips::VImage::TBandFmt""'"); } arg5 = static_cast< vips::VImage::TBandFmt >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_initdesc" "', argument " "6"" of type '" "vips::VImage::TCoding""'"); } arg6 = static_cast< vips::VImage::TCoding >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_initdesc" "', argument " "7"" of type '" "vips::VImage::TType""'"); } arg7 = static_cast< vips::VImage::TType >(val7); try { (arg1)->initdesc(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_initdesc(PyObject *self, PyObject *args) { int argc; PyObject *argv[12]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 11) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 7) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[4], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[5], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[6], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_initdesc__SWIG_4(self, args); } } } } } } } } if (argc == 8) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[4], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[5], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[6], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_float(argv[7], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_initdesc__SWIG_3(self, args); } } } } } } } } } if (argc == 9) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[4], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[5], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[6], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_float(argv[7], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_float(argv[8], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_initdesc__SWIG_2(self, args); } } } } } } } } } } if (argc == 10) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[4], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[5], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[6], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_float(argv[7], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_float(argv[8], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[9], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_initdesc__SWIG_1(self, args); } } } } } } } } } } } if (argc == 11) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[4], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[5], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[6], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_float(argv[7], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_float(argv[8], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[9], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[10], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_initdesc__SWIG_0(self, args); } } } } } } } } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_initdesc'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::initdesc(int,int,int,vips::VImage::TBandFmt,vips::VImage::TCoding,vips::VImage::TType,float,float,int,int)\n" " vips::VImage::initdesc(int,int,int,vips::VImage::TBandFmt,vips::VImage::TCoding,vips::VImage::TType,float,float,int)\n" " vips::VImage::initdesc(int,int,int,vips::VImage::TBandFmt,vips::VImage::TCoding,vips::VImage::TType,float,float)\n" " vips::VImage::initdesc(int,int,int,vips::VImage::TBandFmt,vips::VImage::TCoding,vips::VImage::TType,float)\n" " vips::VImage::initdesc(int,int,int,vips::VImage::TBandFmt,vips::VImage::TCoding,vips::VImage::TType)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_abs(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_abs",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_abs" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->abs(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_acos(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_acos",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_acos" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->acos(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_add(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_add",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_add" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_add" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_add" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->add(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_asin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_asin",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_asin" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->asin(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_atan(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_atan",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_atan" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->atan(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_avg",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_avg" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (double)(arg1)->avg(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_point(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; double arg3 ; double arg4 ; int arg5 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_point",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_point" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_point" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_point" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_point" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_point" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { result = (double)(arg1)->point(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_point_bilinear(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_point_bilinear",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_point_bilinear" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_point_bilinear" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_point_bilinear" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_point_bilinear" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (double)(arg1)->point_bilinear(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_bandmean(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_bandmean",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_bandmean" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->bandmean(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_ceil(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_ceil",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_ceil" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->ceil(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_cos(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_cos",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_cos" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->cos(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_cross_phase(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_cross_phase",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_cross_phase" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_cross_phase" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_cross_phase" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->cross_phase(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_deviate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_deviate",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_deviate" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (double)(arg1)->deviate(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_divide(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_divide",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_divide" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_divide" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_divide" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->divide(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_exp10(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_exp10",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_exp10" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->exp10(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_expn__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_expn",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_expn" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_expn" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->expn(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_expn__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_expn",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_expn" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_expn" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->expn(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_expn(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_expn__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_expn__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_expn'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::expn(double)\n" " vips::VImage::expn(std::vector< double,std::allocator< double > >)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_exp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_exp",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_exp" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->exp(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_floor(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_floor",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_floor" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->floor(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_invert(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_invert",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_invert" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->invert(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lin__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_lin",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lin" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_lin" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_lin" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); try { result = (arg1)->lin(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_linreg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage,std::allocator< vips::VImage > > arg1 ; std::vector< double,std::allocator< double > > arg2 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_linreg",&obj0,&obj1)) SWIG_fail; { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj0, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_linreg" "', argument " "1"" of type '" "std::vector< vips::VImage,std::allocator< vips::VImage > >""'"); } arg1 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_linreg" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = vips::VImage::linreg(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lin__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; std::vector< double,std::allocator< double > > arg3 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_lin",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lin" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_lin" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj2, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_lin" "', argument " "3"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg3 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->lin(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lin(PyObject *self, PyObject *args) { int argc; PyObject *argv[4]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 3) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 3) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_double(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_lin__SWIG_0(self, args); } } } } if (argc == 3) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[2], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_lin__SWIG_1(self, args); } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_lin'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::lin(double,double)\n" " vips::VImage::lin(std::vector< double,std::allocator< double > >,std::vector< double,std::allocator< double > >)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_log10(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_log10",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_log10" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->log10(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_log(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_log",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_log" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->log(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_max(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_max",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_max" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (double)(arg1)->max(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_maxpos(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::complex< double > result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_maxpos",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_maxpos" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->maxpos(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_maxpos_avg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double *arg2 = 0 ; double *arg3 = 0 ; void *argp1 = 0 ; int res1 = 0 ; double temp2 ; int res2 = SWIG_TMPOBJ ; double temp3 ; int res3 = SWIG_TMPOBJ ; PyObject * obj0 = 0 ; double result; arg2 = &temp2; arg3 = &temp3; if (!PyArg_ParseTuple(args,(char *)"O:VImage_maxpos_avg",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_maxpos_avg" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (double)(arg1)->maxpos_avg(*arg2,*arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); if (SWIG_IsTmpObj(res2)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg2))); } else { int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_double, new_flags)); } if (SWIG_IsTmpObj(res3)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg3))); } else { int new_flags = SWIG_IsNewObj(res3) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg3), SWIGTYPE_p_double, new_flags)); } return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_measure(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_measure",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_measure" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_measure" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_measure" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_measure" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_measure" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_measure" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_measure" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); try { result = (arg1)->measure(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_min(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_min",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_min" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (double)(arg1)->min(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_minpos(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; std::complex< double > result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_minpos",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_minpos" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->minpos(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_multiply(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_multiply",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_multiply" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_multiply" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_multiply" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->multiply(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_pow__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_pow",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_pow" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_pow" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->pow(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_pow__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_pow",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_pow" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_pow" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->pow(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_pow(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_pow__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_pow__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_pow'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::pow(double)\n" " vips::VImage::pow(std::vector< double,std::allocator< double > >)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_recomb(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_recomb",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_recomb" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_recomb" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_recomb" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->recomb(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_remainder__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_remainder",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_remainder" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_remainder" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_remainder" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->remainder(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_remainder__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_remainder",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_remainder" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_remainder" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->remainder(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_remainder__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_remainder",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_remainder" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_remainder" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->remainder(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_remainder(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_remainder__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_remainder__SWIG_1(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_remainder__SWIG_2(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_remainder'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::remainder(vips::VImage)\n" " vips::VImage::remainder(double)\n" " vips::VImage::remainder(std::vector< double,std::allocator< double > >)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_rint(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_rint",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_rint" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->rint(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_sign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_sign",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_sign" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->sign(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_sin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_sin",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_sin" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->sin(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_stats(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_stats",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_stats" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->stats(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_subtract(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_subtract",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_subtract" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_subtract" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_subtract" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->subtract(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_tan(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_tan",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tan" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->tan(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_greyc(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; double arg8 ; double arg9 ; double arg10 ; int arg11 ; int arg12 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; double val8 ; int ecode8 = 0 ; double val9 ; int ecode9 = 0 ; double val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; int val12 ; int ecode12 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; PyObject * obj11 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOOO:VImage_greyc",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10,&obj11)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_greyc" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_greyc" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_greyc" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_greyc" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_greyc" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_greyc" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_greyc" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); ecode8 = SWIG_AsVal_double(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_greyc" "', argument " "8"" of type '" "double""'"); } arg8 = static_cast< double >(val8); ecode9 = SWIG_AsVal_double(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_greyc" "', argument " "9"" of type '" "double""'"); } arg9 = static_cast< double >(val9); ecode10 = SWIG_AsVal_double(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_greyc" "', argument " "10"" of type '" "double""'"); } arg10 = static_cast< double >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_greyc" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); ecode12 = SWIG_AsVal_int(obj11, &val12); if (!SWIG_IsOK(ecode12)) { SWIG_exception_fail(SWIG_ArgError(ecode12), "in method '" "VImage_greyc" "', argument " "12"" of type '" "int""'"); } arg12 = static_cast< int >(val12); try { result = (arg1)->greyc(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_greyc_mask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; double arg8 ; double arg9 ; double arg10 ; double arg11 ; int arg12 ; int arg13 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; double val8 ; int ecode8 = 0 ; double val9 ; int ecode9 = 0 ; double val10 ; int ecode10 = 0 ; double val11 ; int ecode11 = 0 ; int val12 ; int ecode12 = 0 ; int val13 ; int ecode13 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; PyObject * obj11 = 0 ; PyObject * obj12 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOOOO:VImage_greyc_mask",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10,&obj11,&obj12)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_greyc_mask" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_greyc_mask" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_greyc_mask" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_greyc_mask" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_greyc_mask" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_greyc_mask" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_greyc_mask" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_greyc_mask" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); ecode8 = SWIG_AsVal_double(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_greyc_mask" "', argument " "8"" of type '" "double""'"); } arg8 = static_cast< double >(val8); ecode9 = SWIG_AsVal_double(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_greyc_mask" "', argument " "9"" of type '" "double""'"); } arg9 = static_cast< double >(val9); ecode10 = SWIG_AsVal_double(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_greyc_mask" "', argument " "10"" of type '" "double""'"); } arg10 = static_cast< double >(val10); ecode11 = SWIG_AsVal_double(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_greyc_mask" "', argument " "11"" of type '" "double""'"); } arg11 = static_cast< double >(val11); ecode12 = SWIG_AsVal_int(obj11, &val12); if (!SWIG_IsOK(ecode12)) { SWIG_exception_fail(SWIG_ArgError(ecode12), "in method '" "VImage_greyc_mask" "', argument " "12"" of type '" "int""'"); } arg12 = static_cast< int >(val12); ecode13 = SWIG_AsVal_int(obj12, &val13); if (!SWIG_IsOK(ecode13)) { SWIG_exception_fail(SWIG_ArgError(ecode13), "in method '" "VImage_greyc_mask" "', argument " "13"" of type '" "int""'"); } arg13 = static_cast< int >(val13); try { result = (arg1)->greyc_mask(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_LCh2Lab(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_LCh2Lab",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_LCh2Lab" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->LCh2Lab(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_LCh2UCS(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_LCh2UCS",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_LCh2UCS" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->LCh2UCS(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Lab2LCh(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Lab2LCh",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Lab2LCh" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->Lab2LCh(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Lab2LabQ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Lab2LabQ",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Lab2LabQ" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->Lab2LabQ(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Lab2LabS(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Lab2LabS",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Lab2LabS" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->Lab2LabS(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Lab2UCS(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Lab2UCS",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Lab2UCS" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->Lab2UCS(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Lab2XYZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Lab2XYZ",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Lab2XYZ" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->Lab2XYZ(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Lab2XYZ_temp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; double arg4 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_Lab2XYZ_temp",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Lab2XYZ_temp" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_Lab2XYZ_temp" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_Lab2XYZ_temp" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_Lab2XYZ_temp" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); try { result = (arg1)->Lab2XYZ_temp(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Lab2disp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDisplay arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_Lab2disp",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Lab2disp" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDisplay, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_Lab2disp" "', argument " "2"" of type '" "vips::VDisplay""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_Lab2disp" "', argument " "2"" of type '" "vips::VDisplay""'"); } else { vips::VDisplay * temp = reinterpret_cast< vips::VDisplay * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->Lab2disp(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_LabQ2LabS(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_LabQ2LabS",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_LabQ2LabS" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->LabQ2LabS(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_LabQ2Lab(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_LabQ2Lab",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_LabQ2Lab" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->LabQ2Lab(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_LabQ2XYZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_LabQ2XYZ",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_LabQ2XYZ" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->LabQ2XYZ(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_LabQ2disp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDisplay arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_LabQ2disp",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_LabQ2disp" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDisplay, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_LabQ2disp" "', argument " "2"" of type '" "vips::VDisplay""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_LabQ2disp" "', argument " "2"" of type '" "vips::VDisplay""'"); } else { vips::VDisplay * temp = reinterpret_cast< vips::VDisplay * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->LabQ2disp(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_LabS2LabQ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_LabS2LabQ",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_LabS2LabQ" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->LabS2LabQ(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_LabS2Lab(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_LabS2Lab",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_LabS2Lab" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->LabS2Lab(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_UCS2LCh(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_UCS2LCh",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_UCS2LCh" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->UCS2LCh(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_UCS2Lab(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_UCS2Lab",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_UCS2Lab" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->UCS2Lab(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_UCS2XYZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_UCS2XYZ",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_UCS2XYZ" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->UCS2XYZ(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_XYZ2Lab(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_XYZ2Lab",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_XYZ2Lab" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->XYZ2Lab(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_XYZ2Lab_temp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; double arg4 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_XYZ2Lab_temp",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_XYZ2Lab_temp" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_XYZ2Lab_temp" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_XYZ2Lab_temp" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_XYZ2Lab_temp" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); try { result = (arg1)->XYZ2Lab_temp(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_XYZ2UCS(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_XYZ2UCS",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_XYZ2UCS" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->XYZ2UCS(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_XYZ2Yxy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_XYZ2Yxy",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_XYZ2Yxy" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->XYZ2Yxy(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_XYZ2disp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDisplay arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_XYZ2disp",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_XYZ2disp" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDisplay, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_XYZ2disp" "', argument " "2"" of type '" "vips::VDisplay""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_XYZ2disp" "', argument " "2"" of type '" "vips::VDisplay""'"); } else { vips::VDisplay * temp = reinterpret_cast< vips::VDisplay * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->XYZ2disp(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_XYZ2sRGB(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_XYZ2sRGB",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_XYZ2sRGB" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->XYZ2sRGB(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_Yxy2XYZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_Yxy2XYZ",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_Yxy2XYZ" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->Yxy2XYZ(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_dE00_fromLab(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_dE00_fromLab",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_dE00_fromLab" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_dE00_fromLab" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dE00_fromLab" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->dE00_fromLab(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_dECMC_fromLab(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_dECMC_fromLab",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_dECMC_fromLab" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_dECMC_fromLab" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dECMC_fromLab" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->dECMC_fromLab(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_dECMC_fromdisp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; vips::VDisplay arg3 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; void *argp3 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_dECMC_fromdisp",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_dECMC_fromdisp" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_dECMC_fromdisp" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dECMC_fromdisp" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } { res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VDisplay, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_dECMC_fromdisp" "', argument " "3"" of type '" "vips::VDisplay""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dECMC_fromdisp" "', argument " "3"" of type '" "vips::VDisplay""'"); } else { vips::VDisplay * temp = reinterpret_cast< vips::VDisplay * >(argp3); arg3 = *temp; if (SWIG_IsNewObj(res3)) delete temp; } } try { result = (arg1)->dECMC_fromdisp(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_dE_fromLab(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_dE_fromLab",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_dE_fromLab" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_dE_fromLab" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dE_fromLab" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->dE_fromLab(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_dE_fromXYZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_dE_fromXYZ",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_dE_fromXYZ" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_dE_fromXYZ" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dE_fromXYZ" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->dE_fromXYZ(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_dE_fromdisp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; vips::VDisplay arg3 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; void *argp3 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_dE_fromdisp",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_dE_fromdisp" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_dE_fromdisp" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dE_fromdisp" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } { res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VDisplay, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_dE_fromdisp" "', argument " "3"" of type '" "vips::VDisplay""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dE_fromdisp" "', argument " "3"" of type '" "vips::VDisplay""'"); } else { vips::VDisplay * temp = reinterpret_cast< vips::VDisplay * >(argp3); arg3 = *temp; if (SWIG_IsNewObj(res3)) delete temp; } } try { result = (arg1)->dE_fromdisp(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_disp2Lab(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDisplay arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_disp2Lab",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_disp2Lab" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDisplay, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_disp2Lab" "', argument " "2"" of type '" "vips::VDisplay""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_disp2Lab" "', argument " "2"" of type '" "vips::VDisplay""'"); } else { vips::VDisplay * temp = reinterpret_cast< vips::VDisplay * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->disp2Lab(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_disp2XYZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDisplay arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_disp2XYZ",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_disp2XYZ" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDisplay, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_disp2XYZ" "', argument " "2"" of type '" "vips::VDisplay""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_disp2XYZ" "', argument " "2"" of type '" "vips::VDisplay""'"); } else { vips::VDisplay * temp = reinterpret_cast< vips::VDisplay * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->disp2XYZ(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_float2rad(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_float2rad",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_float2rad" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->float2rad(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_icc_ac2rc(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_icc_ac2rc",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_icc_ac2rc" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_icc_ac2rc" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (arg1)->icc_ac2rc(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_icc_export_depth(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; char *arg3 = (char *) 0 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int res3 ; char *buf3 = 0 ; int alloc3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_icc_export_depth",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_icc_export_depth" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_icc_export_depth" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_icc_export_depth" "', argument " "3"" of type '" "char *""'"); } arg3 = reinterpret_cast< char * >(buf3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_icc_export_depth" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->icc_export_depth(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return resultobj; fail: if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return NULL; } SWIGINTERN PyObject *_wrap_VImage_icc_import(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_icc_import",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_icc_import" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_icc_import" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_icc_import" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->icc_import(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_icc_import_embedded(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_icc_import_embedded",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_icc_import_embedded" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_icc_import_embedded" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->icc_import_embedded(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_icc_transform(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; char *arg3 = (char *) 0 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; int res3 ; char *buf3 = 0 ; int alloc3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_icc_transform",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_icc_transform" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_icc_transform" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_icc_transform" "', argument " "3"" of type '" "char *""'"); } arg3 = reinterpret_cast< char * >(buf3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_icc_transform" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->icc_transform(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return NULL; } SWIGINTERN PyObject *_wrap_VImage_lab_morph(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOO:VImage_lab_morph",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lab_morph" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_lab_morph" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_lab_morph" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_lab_morph" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_lab_morph" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_lab_morph" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_lab_morph" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); try { result = (arg1)->lab_morph(arg2,arg3,arg4,arg5,arg6); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_rad2float(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_rad2float",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_rad2float" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->rad2float(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_sRGB2XYZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_sRGB2XYZ",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_sRGB2XYZ" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->sRGB2XYZ(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_gaussnoise(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; double arg3 ; double arg4 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_gaussnoise",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_gaussnoise" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_gaussnoise" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_gaussnoise" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_gaussnoise" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); try { result = vips::VImage::gaussnoise(arg1,arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_bandjoin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_bandjoin",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_bandjoin" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_bandjoin" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_bandjoin" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->bandjoin(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_black(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int arg3 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_black",&obj0,&obj1,&obj2)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_black" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_black" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_black" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = vips::VImage::black(arg1,arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_c2amph(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_c2amph",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_c2amph" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->c2amph(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_c2imag(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_c2imag",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_c2imag" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->c2imag(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_c2real(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_c2real",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_c2real" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->c2real(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_c2rect(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_c2rect",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_c2rect" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->c2rect(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2fmt(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_clip2fmt",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2fmt" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_clip2fmt" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->clip2fmt(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_copy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_copy",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_copy" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->copy(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_copy_file(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_copy_file",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_copy_file" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->copy_file(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_copy_morph(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_copy_morph",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_copy_morph" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_copy_morph" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_copy_morph" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_copy_morph" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->copy_morph(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_copy_swap(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_copy_swap",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_copy_swap" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->copy_swap(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_copy_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; double arg3 ; double arg4 ; int arg5 ; int arg6 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOO:VImage_copy_set",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_copy_set" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_copy_set" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_copy_set" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_copy_set" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_copy_set" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_copy_set" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); try { result = (arg1)->copy_set(arg2,arg3,arg4,arg5,arg6); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_extract_area(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_extract_area",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_extract_area" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_extract_area" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_extract_area" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_extract_area" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_extract_area" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { result = (arg1)->extract_area(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_extract_areabands(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_extract_areabands",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_extract_areabands" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_extract_areabands" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_extract_areabands" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_extract_areabands" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_extract_areabands" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_extract_areabands" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_extract_areabands" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); try { result = (arg1)->extract_areabands(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_extract_band(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_extract_band",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_extract_band" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_extract_band" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->extract_band(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_extract_bands(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_extract_bands",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_extract_bands" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_extract_bands" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_extract_bands" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->extract_bands(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_extract(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOO:VImage_extract",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_extract" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_extract" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_extract" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_extract" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_extract" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_extract" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); try { result = (arg1)->extract(arg2,arg3,arg4,arg5,arg6); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_falsecolour(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_falsecolour",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_falsecolour" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->falsecolour(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_fliphor(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_fliphor",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_fliphor" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->fliphor(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_flipver(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_flipver",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_flipver" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->flipver(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_gbandjoin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage,std::allocator< vips::VImage > > arg1 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_gbandjoin",&obj0)) SWIG_fail; { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj0, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_gbandjoin" "', argument " "1"" of type '" "std::vector< vips::VImage,std::allocator< vips::VImage > >""'"); } arg1 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = vips::VImage::gbandjoin(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_grid(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_grid",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_grid" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_grid" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_grid" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_grid" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->grid(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_insert__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_insert",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_insert" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_insert" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_insert" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_insert" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_insert" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->insert(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_insert__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; std::vector< int,std::allocator< int > > arg3 ; std::vector< int,std::allocator< int > > arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_insert",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_insert" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_insert" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_insert" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj2, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_insert" "', argument " "3"" of type '" "std::vector< int,std::allocator< int > >""'"); } arg3 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_insert" "', argument " "4"" of type '" "std::vector< int,std::allocator< int > >""'"); } arg4 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->insert(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_insert(PyObject *self, PyObject *args) { int argc; PyObject *argv[5]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 4) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 4) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_insert__SWIG_0(self, args); } } } } } if (argc == 4) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[2], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[3], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_insert__SWIG_1(self, args); } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_insert'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::insert(vips::VImage,int,int)\n" " vips::VImage::insert(vips::VImage,std::vector< int,std::allocator< int > >,std::vector< int,std::allocator< int > >)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_insert_noexpand(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_insert_noexpand",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_insert_noexpand" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_insert_noexpand" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_insert_noexpand" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_insert_noexpand" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_insert_noexpand" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->insert_noexpand(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_embed(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOO:VImage_embed",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_embed" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_embed" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_embed" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_embed" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_embed" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_embed" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); try { result = (arg1)->embed(arg2,arg3,arg4,arg5,arg6); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lrjoin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_lrjoin",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lrjoin" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_lrjoin" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_lrjoin" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->lrjoin(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_msb(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_msb",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_msb" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->msb(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_msb_band(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_msb_band",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_msb_band" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_msb_band" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->msb_band(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_replicate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_replicate",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_replicate" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_replicate" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_replicate" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->replicate(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_ri2c(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_ri2c",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_ri2c" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_ri2c" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_ri2c" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->ri2c(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_rot180(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_rot180",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_rot180" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->rot180(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_rot270(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_rot270",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_rot270" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->rot270(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_rot90(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_rot90",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_rot90" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->rot90(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_scale(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_scale",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_scale" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->scale(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_scaleps(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_scaleps",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_scaleps" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->scaleps(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_subsample(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_subsample",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_subsample" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_subsample" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_subsample" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->subsample(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_system(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_system",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_system" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_system" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (char *)(arg1)->system(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_FromCharPtr((const char *)result); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_system_image(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; char *arg3 = (char *) 0 ; char *arg4 = (char *) 0 ; char **arg5 = 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; int res3 ; char *buf3 = 0 ; int alloc3 = 0 ; int res4 ; char *buf4 = 0 ; int alloc4 = 0 ; void *argp5 = 0 ; int res5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_system_image",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_system_image" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_system_image" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_system_image" "', argument " "3"" of type '" "char *""'"); } arg3 = reinterpret_cast< char * >(buf3); res4 = SWIG_AsCharPtrAndSize(obj3, &buf4, NULL, &alloc4); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "VImage_system_image" "', argument " "4"" of type '" "char *""'"); } arg4 = reinterpret_cast< char * >(buf4); res5 = SWIG_ConvertPtr(obj4, &argp5, SWIGTYPE_p_p_char, 0 ); if (!SWIG_IsOK(res5)) { SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "VImage_system_image" "', argument " "5"" of type '" "char *&""'"); } if (!argp5) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_system_image" "', argument " "5"" of type '" "char *&""'"); } arg5 = reinterpret_cast< char ** >(argp5); try { result = (arg1)->system_image(arg2,arg3,arg4,*arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; if (alloc4 == SWIG_NEWOBJ) delete[] buf4; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; if (alloc4 == SWIG_NEWOBJ) delete[] buf4; return NULL; } SWIGINTERN PyObject *_wrap_VImage_tbjoin(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_tbjoin",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tbjoin" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_tbjoin" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_tbjoin" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->tbjoin(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_text(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; char *arg2 = (char *) 0 ; int arg3 ; int arg4 ; int arg5 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_text",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_text" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_text" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_text" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_text" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_text" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { result = vips::VImage::text(arg1,arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_wrap(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_wrap",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_wrap" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_wrap" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_wrap" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->wrap(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_zoom(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_zoom",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_zoom" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_zoom" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_zoom" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->zoom(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_aconvsep(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_aconvsep",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_aconvsep" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_aconvsep" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_aconvsep" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_aconvsep" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->aconvsep(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_aconv(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_aconv",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_aconv" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_aconv" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_aconv" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_aconv" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_aconv" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->aconv(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_addgnoise(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_addgnoise",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_addgnoise" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_addgnoise" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->addgnoise(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_compass(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_compass",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_compass" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_compass" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_compass" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->compass(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_contrast_surface(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_contrast_surface",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_contrast_surface" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_contrast_surface" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_contrast_surface" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->contrast_surface(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_conv__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_conv",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_conv" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_conv" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_conv" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->conv(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_conv__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_conv",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_conv" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_conv" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_conv" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->conv(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_conv(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VIMask, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_conv__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VDMask, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_conv__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_conv'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::conv(vips::VIMask)\n" " vips::VImage::conv(vips::VDMask)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_convsep__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_convsep",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_convsep" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_convsep" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_convsep" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->convsep(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_convsep__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_convsep",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_convsep" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_convsep" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_convsep" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->convsep(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_convsep(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VIMask, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_convsep__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VDMask, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_convsep__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_convsep'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::convsep(vips::VIMask)\n" " vips::VImage::convsep(vips::VDMask)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_fastcor(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_fastcor",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_fastcor" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_fastcor" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_fastcor" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->fastcor(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_gradcor(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_gradcor",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_gradcor" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_gradcor" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_gradcor" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->gradcor(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_gradient(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_gradient",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_gradient" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_gradient" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_gradient" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->gradient(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_grad_x(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_grad_x",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_grad_x" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->grad_x(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_grad_y(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_grad_y",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_grad_y" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->grad_y(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lindetect(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_lindetect",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lindetect" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_lindetect" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_lindetect" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->lindetect(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_sharpen(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_sharpen",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_sharpen" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_sharpen" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_sharpen" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_sharpen" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_sharpen" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_sharpen" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_sharpen" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); try { result = (arg1)->sharpen(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_spcor(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_spcor",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_spcor" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_spcor" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_spcor" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->spcor(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_argb2rgba(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_argb2rgba",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_argb2rgba" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->argb2rgba(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_flood_copy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; std::vector< double,std::allocator< double > > arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_flood_copy",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_flood_copy" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_flood_copy" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_flood_copy" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_flood_copy" "', argument " "4"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg4 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->flood_copy(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_flood_blob_copy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; std::vector< double,std::allocator< double > > arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_flood_blob_copy",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_flood_blob_copy" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_flood_blob_copy" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_flood_blob_copy" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_flood_blob_copy" "', argument " "4"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg4 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->flood_blob_copy(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_flood_other_copy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_flood_other_copy",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_flood_other_copy" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_flood_other_copy" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_flood_other_copy" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_flood_other_copy" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_flood_other_copy" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_flood_other_copy" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { result = (arg1)->flood_other_copy(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_c2ps(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_c2ps",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_c2ps" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->c2ps(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_resize_linear(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_resize_linear",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_resize_linear" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_resize_linear" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_resize_linear" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->resize_linear(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_cmulnorm(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_cmulnorm",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_cmulnorm" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_cmulnorm" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_cmulnorm" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->cmulnorm(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_fav4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; vips::VImage arg3 ; vips::VImage arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; void *argp3 ; int res3 = 0 ; void *argp4 ; int res4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_fav4",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_fav4" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_fav4" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_fav4" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } { res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_fav4" "', argument " "3"" of type '" "vips::VImage""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_fav4" "', argument " "3"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp3); arg3 = *temp; if (SWIG_IsNewObj(res3)) delete temp; } } { res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "VImage_fav4" "', argument " "4"" of type '" "vips::VImage""'"); } if (!argp4) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_fav4" "', argument " "4"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp4); arg4 = *temp; if (SWIG_IsNewObj(res4)) delete temp; } } try { result = (arg1)->fav4(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_gadd(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; vips::VImage arg4 ; double arg5 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; void *argp4 ; int res4 = 0 ; double val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_gadd",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_gadd" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_gadd" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_gadd" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); { res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "VImage_gadd" "', argument " "4"" of type '" "vips::VImage""'"); } if (!argp4) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_gadd" "', argument " "4"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp4); arg4 = *temp; if (SWIG_IsNewObj(res4)) delete temp; } } ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_gadd" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); try { result = (arg1)->gadd(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_icc_export(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_icc_export",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_icc_export" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_icc_export" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_icc_export" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->icc_export(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_litecor(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; double arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_litecor",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_litecor" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_litecor" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_litecor" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_litecor" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_litecor" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); try { result = (arg1)->litecor(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_affine(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; int arg8 ; int arg9 ; int arg10 ; int arg11 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOO:VImage_affine",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_affine" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_affine" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_affine" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_affine" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_affine" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_affine" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_affine" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_affine" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_affine" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_affine" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_affine" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); try { result = (arg1)->affine(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2c(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip2c",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2c" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip2c(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2cm(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip2cm",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2cm" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip2cm(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2d(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip2d",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2d" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip2d(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2dcm(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip2dcm",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2dcm" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip2dcm(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2f(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip2f",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2f" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip2f(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2i(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip2i",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2i" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip2i(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_convsub(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_convsub",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_convsub" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_convsub" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_convsub" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_convsub" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_convsub" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->convsub(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_convf(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_convf",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_convf" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_convf" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_convf" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->convf(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_convsepf(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_convsepf",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_convsepf" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_convsepf" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_convsepf" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->convsepf(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2s(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip2s",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2s" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip2s(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2ui(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip2ui",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2ui" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip2ui(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_insertplace__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; std::vector< int,std::allocator< int > > arg3 ; std::vector< int,std::allocator< int > > arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_insertplace",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_insertplace" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_insertplace" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_insertplace" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj2, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_insertplace" "', argument " "3"" of type '" "std::vector< int,std::allocator< int > >""'"); } arg3 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_insertplace" "', argument " "4"" of type '" "std::vector< int,std::allocator< int > >""'"); } arg4 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->insertplace(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_clip2us(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_clip2us",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_clip2us" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->clip2us(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_slice(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_slice",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_slice" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_slice" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_slice" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); try { result = (arg1)->slice(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_segment(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; int temp2 ; int res2 = SWIG_TMPOBJ ; PyObject * obj0 = 0 ; vips::VImage result; arg2 = &temp2; if (!PyArg_ParseTuple(args,(char *)"O:VImage_segment",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_segment" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->segment(*arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (SWIG_IsTmpObj(res2)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg2))); } else { int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, new_flags)); } return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_line__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOO:VImage_line",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_line" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_line" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_line" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_line" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_line" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_line" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); try { (arg1)->line(arg2,arg3,arg4,arg5,arg6); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_thresh(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_thresh",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_thresh" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_thresh" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->thresh(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_convf_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_convf_raw",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_convf_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_convf_raw" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_convf_raw" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->convf_raw(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_conv_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_conv_raw",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_conv_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_conv_raw" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_conv_raw" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->conv_raw(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_contrast_surface_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_contrast_surface_raw",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_contrast_surface_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_contrast_surface_raw" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_contrast_surface_raw" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->contrast_surface_raw(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_convsepf_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_convsepf_raw",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_convsepf_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_convsepf_raw" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_convsepf_raw" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->convsepf_raw(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_convsep_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_convsep_raw",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_convsep_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_convsep_raw" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_convsep_raw" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->convsep_raw(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_fastcor_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_fastcor_raw",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_fastcor_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_fastcor_raw" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_fastcor_raw" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->fastcor_raw(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_gradcor_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_gradcor_raw",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_gradcor_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_gradcor_raw" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_gradcor_raw" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->gradcor_raw(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_spcor_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_spcor_raw",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_spcor_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_spcor_raw" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_spcor_raw" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->spcor_raw(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lhisteq_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_lhisteq_raw",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lhisteq_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_lhisteq_raw" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_lhisteq_raw" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->lhisteq_raw(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_stdif_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; double arg4 ; double arg5 ; int arg6 ; int arg7 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_stdif_raw",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_stdif_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_stdif_raw" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_stdif_raw" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_stdif_raw" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_stdif_raw" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_stdif_raw" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_stdif_raw" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); try { result = (arg1)->stdif_raw(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_rank_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_rank_raw",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_rank_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_rank_raw" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_rank_raw" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_rank_raw" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->rank_raw(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_dilate_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_dilate_raw",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_dilate_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_dilate_raw" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dilate_raw" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->dilate_raw(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_erode_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_erode_raw",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_erode_raw" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_erode_raw" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_erode_raw" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->erode_raw(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_similarity_area(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; double arg4 ; double arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:VImage_similarity_area",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_similarity_area" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_similarity_area" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_similarity_area" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_similarity_area" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_similarity_area" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_similarity_area" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_similarity_area" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_similarity_area" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_similarity_area" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); try { result = (arg1)->similarity_area(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_similarity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; double arg4 ; double arg5 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_similarity",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_similarity" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_similarity" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_similarity" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_similarity" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_similarity" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); try { result = (arg1)->similarity(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_mask2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask arg1 ; void *argp1 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_mask2vips",&obj0)) SWIG_fail; { res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_mask2vips" "', argument " "1"" of type '" "vips::VDMask""'"); } if (!argp1) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_mask2vips" "', argument " "1"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp1); arg1 = *temp; if (SWIG_IsNewObj(res1)) delete temp; } } try { result = vips::VImage::mask2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_vips2mask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_vips2mask",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_vips2mask" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->vips2mask(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_insertplace__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_insertplace",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_insertplace" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_insertplace" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_insertplace" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_insertplace" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_insertplace" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { (arg1)->insertplace(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_insertplace(PyObject *self, PyObject *args) { int argc; PyObject *argv[5]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 4) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 4) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_insertplace__SWIG_1(self, args); } } } } } if (argc == 4) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[2], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[3], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_insertplace__SWIG_0(self, args); } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_insertplace'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::insertplace(vips::VImage,std::vector< int,std::allocator< int > >,std::vector< int,std::allocator< int > >)\n" " vips::VImage::insertplace(vips::VImage,int,int)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_circle(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_circle",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_circle" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_circle" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_circle" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_circle" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_circle" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { (arg1)->circle(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_andimage__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_andimage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_andimage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_andimage" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_andimage" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->andimage(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_andimage__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_andimage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_andimage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_andimage" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->andimage(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_andimage__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_andimage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_andimage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_andimage" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->andimage(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_andimage(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_andimage__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_andimage__SWIG_1(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_andimage__SWIG_2(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_andimage'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::andimage(vips::VImage)\n" " vips::VImage::andimage(int)\n" " vips::VImage::andimage(std::vector< double,std::allocator< double > >)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_orimage__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_orimage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_orimage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_orimage" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_orimage" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->orimage(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_orimage__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_orimage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_orimage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_orimage" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->orimage(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_orimage__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_orimage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_orimage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_orimage" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->orimage(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_orimage(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_orimage__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_orimage__SWIG_1(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_orimage__SWIG_2(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_orimage'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::orimage(vips::VImage)\n" " vips::VImage::orimage(int)\n" " vips::VImage::orimage(std::vector< double,std::allocator< double > >)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_eorimage__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_eorimage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_eorimage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_eorimage" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_eorimage" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->eorimage(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_eorimage__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_eorimage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_eorimage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_eorimage" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->eorimage(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_eorimage__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_eorimage",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_eorimage" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_eorimage" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->eorimage(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_eorimage(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_eorimage__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_eorimage__SWIG_1(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_eorimage__SWIG_2(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_eorimage'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::eorimage(vips::VImage)\n" " vips::VImage::eorimage(int)\n" " vips::VImage::eorimage(std::vector< double,std::allocator< double > >)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_shiftleft__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_shiftleft",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_shiftleft" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_shiftleft" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->shiftleft(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_shiftleft__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_shiftleft",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_shiftleft" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_shiftleft" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->shiftleft(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_shiftleft(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_shiftleft__SWIG_1(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_shiftleft__SWIG_0(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_shiftleft'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::shiftleft(std::vector< double,std::allocator< double > >)\n" " vips::VImage::shiftleft(int)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_shiftright__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_shiftright",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_shiftright" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_shiftright" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->shiftright(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_shiftright__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_shiftright",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_shiftright" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_shiftright" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->shiftright(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_shiftright(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_shiftright__SWIG_1(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_shiftright__SWIG_0(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_shiftright'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::shiftright(std::vector< double,std::allocator< double > >)\n" " vips::VImage::shiftright(int)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_blend(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; vips::VImage arg3 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; void *argp3 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_blend",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_blend" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_blend" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_blend" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } { res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_blend" "', argument " "3"" of type '" "vips::VImage""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_blend" "', argument " "3"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp3); arg3 = *temp; if (SWIG_IsNewObj(res3)) delete temp; } } try { result = (arg1)->blend(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_equal__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_equal",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_equal" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_equal" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_equal" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->equal(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_equal__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_equal",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_equal" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_equal" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->equal(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_equal__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_equal",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_equal" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_equal" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->equal(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_equal(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_equal__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_equal__SWIG_2(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_equal__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_equal'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::equal(vips::VImage)\n" " vips::VImage::equal(std::vector< double,std::allocator< double > >)\n" " vips::VImage::equal(double)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_ifthenelse(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; vips::VImage arg3 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; void *argp3 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_ifthenelse",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_ifthenelse" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_ifthenelse" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_ifthenelse" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } { res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_ifthenelse" "', argument " "3"" of type '" "vips::VImage""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_ifthenelse" "', argument " "3"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp3); arg3 = *temp; if (SWIG_IsNewObj(res3)) delete temp; } } try { result = (arg1)->ifthenelse(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_less__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_less",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_less" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_less" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_less" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->less(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_less__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_less",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_less" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_less" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->less(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_less__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_less",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_less" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_less" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->less(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_less(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_less__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_less__SWIG_2(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_less__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_less'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::less(vips::VImage)\n" " vips::VImage::less(std::vector< double,std::allocator< double > >)\n" " vips::VImage::less(double)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_lesseq__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_lesseq",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lesseq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_lesseq" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_lesseq" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->lesseq(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lesseq__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_lesseq",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lesseq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_lesseq" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->lesseq(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lesseq__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_lesseq",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lesseq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_lesseq" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->lesseq(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lesseq(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_lesseq__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_lesseq__SWIG_2(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_lesseq__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_lesseq'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::lesseq(vips::VImage)\n" " vips::VImage::lesseq(std::vector< double,std::allocator< double > >)\n" " vips::VImage::lesseq(double)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_more__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_more",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_more" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_more" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_more" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->more(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_more__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_more",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_more" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_more" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->more(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_more__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_more",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_more" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_more" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->more(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_more(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_more__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_more__SWIG_2(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_more__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_more'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::more(vips::VImage)\n" " vips::VImage::more(std::vector< double,std::allocator< double > >)\n" " vips::VImage::more(double)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_moreeq__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_moreeq",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_moreeq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_moreeq" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_moreeq" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->moreeq(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_moreeq__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_moreeq",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_moreeq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_moreeq" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->moreeq(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_moreeq__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_moreeq",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_moreeq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_moreeq" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->moreeq(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_moreeq(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_moreeq__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_moreeq__SWIG_2(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_moreeq__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_moreeq'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::moreeq(vips::VImage)\n" " vips::VImage::moreeq(std::vector< double,std::allocator< double > >)\n" " vips::VImage::moreeq(double)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_notequal__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_notequal",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_notequal" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_notequal" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_notequal" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->notequal(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_notequal__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; std::vector< double,std::allocator< double > > arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_notequal",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_notequal" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_notequal" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->notequal(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_notequal__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_notequal",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_notequal" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_notequal" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->notequal(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_notequal(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_notequal__SWIG_0(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_double(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_notequal__SWIG_2(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[1], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_notequal__SWIG_1(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_notequal'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::notequal(vips::VImage)\n" " vips::VImage::notequal(std::vector< double,std::allocator< double > >)\n" " vips::VImage::notequal(double)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_quadratic(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_quadratic",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_quadratic" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_quadratic" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_quadratic" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->quadratic(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_csv2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_csv2vips",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_csv2vips" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = vips::VImage::csv2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_fits2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_fits2vips",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_fits2vips" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = vips::VImage::fits2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_jpeg2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_jpeg2vips",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_jpeg2vips" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = vips::VImage::jpeg2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_magick2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_magick2vips",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_magick2vips" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = vips::VImage::magick2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_png2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_png2vips",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_png2vips" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = vips::VImage::png2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_exr2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_exr2vips",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_exr2vips" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = vips::VImage::exr2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_ppm2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_ppm2vips",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_ppm2vips" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = vips::VImage::ppm2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_analyze2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_analyze2vips",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_analyze2vips" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = vips::VImage::analyze2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_tiff2vips(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_tiff2vips",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tiff2vips" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = vips::VImage::tiff2vips(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_vips2csv(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_vips2csv",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_vips2csv" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_vips2csv" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { (arg1)->vips2csv(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_vips2dz(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_vips2dz",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_vips2dz" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_vips2dz" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { (arg1)->vips2dz(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_vips2jpeg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_vips2jpeg",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_vips2jpeg" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_vips2jpeg" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { (arg1)->vips2jpeg(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_vips2mimejpeg(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_vips2mimejpeg",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_vips2mimejpeg" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_vips2mimejpeg" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { (arg1)->vips2mimejpeg(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_vips2png(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_vips2png",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_vips2png" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_vips2png" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { (arg1)->vips2png(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_vips2ppm(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_vips2ppm",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_vips2ppm" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_vips2ppm" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { (arg1)->vips2ppm(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_vips2tiff(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_vips2tiff",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_vips2tiff" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_vips2tiff" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { (arg1)->vips2tiff(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_create_fmask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; double arg8 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; double val8 ; int ecode8 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:VImage_create_fmask",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_create_fmask" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_create_fmask" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_create_fmask" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_create_fmask" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_create_fmask" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_create_fmask" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_create_fmask" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); ecode8 = SWIG_AsVal_double(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_create_fmask" "', argument " "8"" of type '" "double""'"); } arg8 = static_cast< double >(val8); try { result = vips::VImage::create_fmask(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_disp_ps(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_disp_ps",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_disp_ps" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->disp_ps(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_flt_image_freq(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_flt_image_freq",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_flt_image_freq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_flt_image_freq" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_flt_image_freq" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_flt_image_freq" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_flt_image_freq" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_flt_image_freq" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_flt_image_freq" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); try { result = (arg1)->flt_image_freq(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_fractsurf(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; double arg2 ; int val1 ; int ecode1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_fractsurf",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_fractsurf" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_fractsurf" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = vips::VImage::fractsurf(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_freqflt(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_freqflt",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_freqflt" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_freqflt" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_freqflt" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->freqflt(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_fwfft(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_fwfft",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_fwfft" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->fwfft(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_rotquad(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_rotquad",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_rotquad" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->rotquad(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_invfft(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_invfft",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_invfft" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->invfft(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_phasecor_fft(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_phasecor_fft",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_phasecor_fft" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_phasecor_fft" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_phasecor_fft" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->phasecor_fft(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_invfftr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_invfftr",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_invfftr" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->invfftr(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_gammacorrect(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_gammacorrect",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_gammacorrect" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_gammacorrect" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->gammacorrect(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_heq(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_heq",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_heq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_heq" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->heq(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_hist(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_hist",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_hist" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_hist" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->hist(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_histcum(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_histcum",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_histcum" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->histcum(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_histeq(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_histeq",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_histeq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->histeq(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_hist_indexed(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_hist_indexed",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_hist_indexed" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_hist_indexed" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_hist_indexed" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->hist_indexed(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_histgr(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_histgr",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_histgr" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_histgr" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->histgr(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_histnD(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_histnD",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_histnD" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_histnD" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->histnD(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_histnorm(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_histnorm",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_histnorm" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->histnorm(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_histplot(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_histplot",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_histplot" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->histplot(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_histspec(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_histspec",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_histspec" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_histspec" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_histspec" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->histspec(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_hsp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_hsp",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_hsp" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_hsp" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_hsp" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->hsp(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_identity(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int val1 ; int ecode1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_identity",&obj0)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_identity" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); try { result = vips::VImage::identity(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_identity_ushort(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_identity_ushort",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_identity_ushort" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_identity_ushort" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = vips::VImage::identity_ushort(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_ismonotonic(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_ismonotonic",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_ismonotonic" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (int)(arg1)->ismonotonic(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lhisteq(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_lhisteq",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lhisteq" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_lhisteq" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_lhisteq" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (arg1)->lhisteq(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_mpercent(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_mpercent",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_mpercent" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_mpercent" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (int)(arg1)->mpercent(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_invertlut(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask arg1 ; int arg2 ; void *argp1 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_invertlut",&obj0,&obj1)) SWIG_fail; { res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_invertlut" "', argument " "1"" of type '" "vips::VDMask""'"); } if (!argp1) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_invertlut" "', argument " "1"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp1); arg1 = *temp; if (SWIG_IsNewObj(res1)) delete temp; } } ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_invertlut" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = vips::VImage::invertlut(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_buildlut(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask arg1 ; void *argp1 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_buildlut",&obj0)) SWIG_fail; { res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_buildlut" "', argument " "1"" of type '" "vips::VDMask""'"); } if (!argp1) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_buildlut" "', argument " "1"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp1); arg1 = *temp; if (SWIG_IsNewObj(res1)) delete temp; } } try { result = vips::VImage::buildlut(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_maplut(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_maplut",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_maplut" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_maplut" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_maplut" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->maplut(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_project(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_project",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_project" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_project" "', argument " "2"" of type '" "vips::VImage &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_project" "', argument " "2"" of type '" "vips::VImage &""'"); } arg2 = reinterpret_cast< vips::VImage * >(argp2); try { result = (arg1)->project(*arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_stdif(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; double arg4 ; double arg5 ; int arg6 ; int arg7 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_stdif",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_stdif" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_stdif" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_stdif" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_stdif" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_stdif" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_stdif" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_stdif" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); try { result = (arg1)->stdif(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_tone_analyse(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_tone_analyse",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tone_analyse" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_tone_analyse" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_tone_analyse" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_tone_analyse" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_tone_analyse" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_tone_analyse" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_tone_analyse" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); try { result = (arg1)->tone_analyse(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_tone_build(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; double arg1 ; double arg2 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; double arg8 ; double val1 ; int ecode1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; double val8 ; int ecode8 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:VImage_tone_build",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail; ecode1 = SWIG_AsVal_double(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_tone_build" "', argument " "1"" of type '" "double""'"); } arg1 = static_cast< double >(val1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_tone_build" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_tone_build" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_tone_build" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_tone_build" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_tone_build" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_tone_build" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); ecode8 = SWIG_AsVal_double(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_tone_build" "', argument " "8"" of type '" "double""'"); } arg8 = static_cast< double >(val8); try { result = vips::VImage::tone_build(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_tone_build_range(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; double arg8 ; double arg9 ; double arg10 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; double val8 ; int ecode8 = 0 ; double val9 ; int ecode9 = 0 ; double val10 ; int ecode10 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOO:VImage_tone_build_range",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_tone_build_range" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_tone_build_range" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_tone_build_range" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_tone_build_range" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_tone_build_range" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_tone_build_range" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_tone_build_range" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); ecode8 = SWIG_AsVal_double(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_tone_build_range" "', argument " "8"" of type '" "double""'"); } arg8 = static_cast< double >(val8); ecode9 = SWIG_AsVal_double(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_tone_build_range" "', argument " "9"" of type '" "double""'"); } arg9 = static_cast< double >(val9); ecode10 = SWIG_AsVal_double(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_tone_build_range" "', argument " "10"" of type '" "double""'"); } arg10 = static_cast< double >(val10); try { result = vips::VImage::tone_build_range(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_tone_map(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_tone_map",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tone_map" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_tone_map" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_tone_map" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->tone_map(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_circle(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; std::vector< double,std::allocator< double > > arg6 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOO:VImage_draw_circle",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_circle" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_draw_circle" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_circle" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_draw_circle" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_draw_circle" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj5, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_draw_circle" "', argument " "6"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg6 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { (arg1)->draw_circle(arg2,arg3,arg4,arg5,arg6); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_rect(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; std::vector< double,std::allocator< double > > arg7 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_draw_rect",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_rect" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_draw_rect" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_rect" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_draw_rect" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_draw_rect" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_draw_rect" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj6, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_draw_rect" "', argument " "7"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg7 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { (arg1)->draw_rect(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_line(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; std::vector< double,std::allocator< double > > arg6 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOO:VImage_draw_line",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_line" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_draw_line" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_line" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_draw_line" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_draw_line" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj5, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_draw_line" "', argument " "6"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg6 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { (arg1)->draw_line(arg2,arg3,arg4,arg5,arg6); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_point(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; std::vector< double,std::allocator< double > > arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_draw_point",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_point" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_draw_point" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_point" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_draw_point" "', argument " "4"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg4 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { (arg1)->draw_point(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_smudge(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_draw_smudge",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_smudge" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_draw_smudge" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_smudge" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_draw_smudge" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_draw_smudge" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { (arg1)->draw_smudge(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_flood(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; std::vector< double,std::allocator< double > > arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_draw_flood",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_flood" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_draw_flood" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_flood" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_draw_flood" "', argument " "4"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg4 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { (arg1)->draw_flood(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_flood_blob(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; std::vector< double,std::allocator< double > > arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_draw_flood_blob",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_flood_blob" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_draw_flood_blob" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_flood_blob" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_draw_flood_blob" "', argument " "4"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg4 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { (arg1)->draw_flood_blob(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_flood_other(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_draw_flood_other",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_flood_other" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_draw_flood_other" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_draw_flood_other" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_flood_other" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_draw_flood_other" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_draw_flood_other" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { (arg1)->draw_flood_other(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_image(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_draw_image",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_image" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_draw_image" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_draw_image" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_image" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_draw_image" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { (arg1)->draw_image(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_draw_mask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; std::vector< double,std::allocator< double > > arg5 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_draw_mask",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_draw_mask" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_draw_mask" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_draw_mask" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_draw_mask" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_draw_mask" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj4, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_draw_mask" "', argument " "5"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg5 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { (arg1)->draw_mask(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_line__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; vips::VImage arg3 ; std::vector< int,std::allocator< int > > arg4 ; std::vector< int,std::allocator< int > > arg5 ; std::vector< int,std::allocator< int > > arg6 ; std::vector< int,std::allocator< int > > arg7 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; void *argp3 ; int res3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_line",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_line" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_line" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_line" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } { res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_line" "', argument " "3"" of type '" "vips::VImage""'"); } if (!argp3) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_line" "', argument " "3"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp3); arg3 = *temp; if (SWIG_IsNewObj(res3)) delete temp; } } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj3, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_line" "', argument " "4"" of type '" "std::vector< int,std::allocator< int > >""'"); } arg4 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj4, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_line" "', argument " "5"" of type '" "std::vector< int,std::allocator< int > >""'"); } arg5 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj5, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_line" "', argument " "6"" of type '" "std::vector< int,std::allocator< int > >""'"); } arg6 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj6, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_line" "', argument " "7"" of type '" "std::vector< int,std::allocator< int > >""'"); } arg7 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = (arg1)->line(arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_line(PyObject *self, PyObject *args) { int argc; PyObject *argv[8]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 7) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 6) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[4], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[5], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VImage_line__SWIG_0(self, args); } } } } } } } if (argc == 7) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[2], 0, SWIGTYPE_p_vips__VImage, 0); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[3], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[4], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[5], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { int res = swig::asptr(argv[6], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VImage_line__SWIG_1(self, args); } } } } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VImage_line'.\n" " Possible C/C++ prototypes are:\n" " vips::VImage::line(int,int,int,int,int)\n" " vips::VImage::line(vips::VImage,vips::VImage,std::vector< int,std::allocator< int > >,std::vector< int,std::allocator< int > >,std::vector< int,std::allocator< int > >,std::vector< int,std::allocator< int > >)\n"); return 0; } SWIGINTERN PyObject *_wrap_VImage_binfile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_binfile",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_binfile" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_binfile" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_binfile" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_binfile" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_binfile" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { result = vips::VImage::binfile(arg1,arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_cache(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_cache",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_cache" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_cache" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_cache" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_cache" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->cache(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_getext(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VImage_getext",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_getext" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (char *)(arg1)->getext(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_FromCharPtr((const char *)result); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_header_get_typeof(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_header_get_typeof",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_header_get_typeof" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_header_get_typeof" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (int)(arg1)->header_get_typeof(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_header_int(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_header_int",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_header_int" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_header_int" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (int)(arg1)->header_int(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_header_double(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_header_double",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_header_double" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_header_double" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (double)(arg1)->header_double(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_header_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_header_string",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_header_string" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_header_string" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); try { result = (char *)(arg1)->header_string(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_FromCharPtr((const char *)result); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_history_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VImage_history_get",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_history_get" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (char *)(arg1)->history_get(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_FromCharPtr((const char *)result); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_printdesc(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VImage_printdesc",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_printdesc" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { (arg1)->printdesc(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_cntlines(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_cntlines",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_cntlines" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_cntlines" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (double)(arg1)->cntlines(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_dilate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_dilate",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_dilate" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_dilate" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_dilate" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->dilate(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_rank(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_rank",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_rank" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_rank" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_rank" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_rank" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->rank(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_rank_image(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage,std::allocator< vips::VImage > > arg1 ; int arg2 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_rank_image",&obj0,&obj1)) SWIG_fail; { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj0, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_rank_image" "', argument " "1"" of type '" "std::vector< vips::VImage,std::allocator< vips::VImage > >""'"); } arg1 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_rank_image" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = vips::VImage::rank_image(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_maxvalue(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::vector< vips::VImage,std::allocator< vips::VImage > > arg1 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_maxvalue",&obj0)) SWIG_fail; { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj0, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_maxvalue" "', argument " "1"" of type '" "std::vector< vips::VImage,std::allocator< vips::VImage > >""'"); } arg1 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { result = vips::VImage::maxvalue(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_label_regions(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; int temp2 ; int res2 = SWIG_TMPOBJ ; PyObject * obj0 = 0 ; vips::VImage result; arg2 = &temp2; if (!PyArg_ParseTuple(args,(char *)"O:VImage_label_regions",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_label_regions" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->label_regions(*arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (SWIG_IsTmpObj(res2)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg2))); } else { int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, new_flags)); } return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_zerox(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_zerox",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_zerox" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_zerox" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->zerox(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_erode(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VIMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_erode",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_erode" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VIMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_erode" "', argument " "2"" of type '" "vips::VIMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_erode" "', argument " "2"" of type '" "vips::VIMask""'"); } else { vips::VIMask * temp = reinterpret_cast< vips::VIMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->erode(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_profile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_profile",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_profile" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_profile" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->profile(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_align_bands(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_align_bands",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_align_bands" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->align_bands(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_correl(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int *arg9 = 0 ; int *arg10 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int temp9 ; int res9 = SWIG_TMPOBJ ; int temp10 ; int res10 = SWIG_TMPOBJ ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; double result; arg9 = &temp9; arg10 = &temp10; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:VImage_correl",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_correl" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_correl" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_correl" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_correl" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_correl" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_correl" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_correl" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_correl" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_correl" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); try { result = (double)(arg1)->correl(arg2,arg3,arg4,arg5,arg6,arg7,arg8,*arg9,*arg10); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); if (SWIG_IsTmpObj(res9)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg9))); } else { int new_flags = SWIG_IsNewObj(res9) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg9), SWIGTYPE_p_int, new_flags)); } if (SWIG_IsTmpObj(res10)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg10))); } else { int new_flags = SWIG_IsNewObj(res10) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg10), SWIGTYPE_p_int, new_flags)); } return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage__find_lroverlap(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int *arg10 = 0 ; double *arg11 = 0 ; double *arg12 = 0 ; double *arg13 = 0 ; double *arg14 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int temp10 ; int res10 = SWIG_TMPOBJ ; double temp11 ; int res11 = SWIG_TMPOBJ ; double temp12 ; int res12 = SWIG_TMPOBJ ; double temp13 ; int res13 = SWIG_TMPOBJ ; double temp14 ; int res14 = SWIG_TMPOBJ ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; int result; arg10 = &temp10; arg11 = &temp11; arg12 = &temp12; arg13 = &temp13; arg14 = &temp14; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:VImage__find_lroverlap",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage__find_lroverlap" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage__find_lroverlap" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage__find_lroverlap" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage__find_lroverlap" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage__find_lroverlap" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage__find_lroverlap" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage__find_lroverlap" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage__find_lroverlap" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage__find_lroverlap" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage__find_lroverlap" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); try { result = (int)(arg1)->_find_lroverlap(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,*arg10,*arg11,*arg12,*arg13,*arg14); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); if (SWIG_IsTmpObj(res10)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg10))); } else { int new_flags = SWIG_IsNewObj(res10) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg10), SWIGTYPE_p_int, new_flags)); } if (SWIG_IsTmpObj(res11)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg11))); } else { int new_flags = SWIG_IsNewObj(res11) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg11), SWIGTYPE_p_double, new_flags)); } if (SWIG_IsTmpObj(res12)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg12))); } else { int new_flags = SWIG_IsNewObj(res12) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg12), SWIGTYPE_p_double, new_flags)); } if (SWIG_IsTmpObj(res13)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg13))); } else { int new_flags = SWIG_IsNewObj(res13) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg13), SWIGTYPE_p_double, new_flags)); } if (SWIG_IsTmpObj(res14)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg14))); } else { int new_flags = SWIG_IsNewObj(res14) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg14), SWIGTYPE_p_double, new_flags)); } return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage__find_tboverlap(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int *arg10 = 0 ; double *arg11 = 0 ; double *arg12 = 0 ; double *arg13 = 0 ; double *arg14 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int temp10 ; int res10 = SWIG_TMPOBJ ; double temp11 ; int res11 = SWIG_TMPOBJ ; double temp12 ; int res12 = SWIG_TMPOBJ ; double temp13 ; int res13 = SWIG_TMPOBJ ; double temp14 ; int res14 = SWIG_TMPOBJ ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; int result; arg10 = &temp10; arg11 = &temp11; arg12 = &temp12; arg13 = &temp13; arg14 = &temp14; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:VImage__find_tboverlap",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage__find_tboverlap" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage__find_tboverlap" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage__find_tboverlap" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage__find_tboverlap" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage__find_tboverlap" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage__find_tboverlap" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage__find_tboverlap" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage__find_tboverlap" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage__find_tboverlap" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage__find_tboverlap" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); try { result = (int)(arg1)->_find_tboverlap(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,*arg10,*arg11,*arg12,*arg13,*arg14); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); if (SWIG_IsTmpObj(res10)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg10))); } else { int new_flags = SWIG_IsNewObj(res10) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg10), SWIGTYPE_p_int, new_flags)); } if (SWIG_IsTmpObj(res11)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg11))); } else { int new_flags = SWIG_IsNewObj(res11) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg11), SWIGTYPE_p_double, new_flags)); } if (SWIG_IsTmpObj(res12)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg12))); } else { int new_flags = SWIG_IsNewObj(res12) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg12), SWIGTYPE_p_double, new_flags)); } if (SWIG_IsTmpObj(res13)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg13))); } else { int new_flags = SWIG_IsNewObj(res13) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg13), SWIGTYPE_p_double, new_flags)); } if (SWIG_IsTmpObj(res14)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg14))); } else { int new_flags = SWIG_IsNewObj(res14) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg14), SWIGTYPE_p_double, new_flags)); } return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_global_balance(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_global_balance",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_global_balance" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_global_balance" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->global_balance(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_global_balancef(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_global_balancef",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_global_balancef" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_global_balancef" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = (arg1)->global_balancef(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lrmerge(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_lrmerge",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lrmerge" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_lrmerge" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_lrmerge" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_lrmerge" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_lrmerge" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_lrmerge" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { result = (arg1)->lrmerge(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lrmerge1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int arg10 ; int arg11 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOO:VImage_lrmerge1",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lrmerge1" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_lrmerge1" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_lrmerge1" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_lrmerge1" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_lrmerge1" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_lrmerge1" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_lrmerge1" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_lrmerge1" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_lrmerge1" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_lrmerge1" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_lrmerge1" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_lrmerge1" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); try { result = (arg1)->lrmerge1(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lrmosaic(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int arg10 ; int arg11 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOO:VImage_lrmosaic",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lrmosaic" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_lrmosaic" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_lrmosaic" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_lrmosaic" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_lrmosaic" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_lrmosaic" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_lrmosaic" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_lrmosaic" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_lrmosaic" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_lrmosaic" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_lrmosaic" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_lrmosaic" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); try { result = (arg1)->lrmosaic(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_lrmosaic1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int arg10 ; int arg11 ; int arg12 ; int arg13 ; int arg14 ; int arg15 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; int val12 ; int ecode12 = 0 ; int val13 ; int ecode13 = 0 ; int val14 ; int ecode14 = 0 ; int val15 ; int ecode15 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; PyObject * obj11 = 0 ; PyObject * obj12 = 0 ; PyObject * obj13 = 0 ; PyObject * obj14 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOOOOOO:VImage_lrmosaic1",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10,&obj11,&obj12,&obj13,&obj14)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_lrmosaic1" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_lrmosaic1" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_lrmosaic1" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_lrmosaic1" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_lrmosaic1" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_lrmosaic1" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_lrmosaic1" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_lrmosaic1" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_lrmosaic1" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_lrmosaic1" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_lrmosaic1" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_lrmosaic1" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); ecode12 = SWIG_AsVal_int(obj11, &val12); if (!SWIG_IsOK(ecode12)) { SWIG_exception_fail(SWIG_ArgError(ecode12), "in method '" "VImage_lrmosaic1" "', argument " "12"" of type '" "int""'"); } arg12 = static_cast< int >(val12); ecode13 = SWIG_AsVal_int(obj12, &val13); if (!SWIG_IsOK(ecode13)) { SWIG_exception_fail(SWIG_ArgError(ecode13), "in method '" "VImage_lrmosaic1" "', argument " "13"" of type '" "int""'"); } arg13 = static_cast< int >(val13); ecode14 = SWIG_AsVal_int(obj13, &val14); if (!SWIG_IsOK(ecode14)) { SWIG_exception_fail(SWIG_ArgError(ecode14), "in method '" "VImage_lrmosaic1" "', argument " "14"" of type '" "int""'"); } arg14 = static_cast< int >(val14); ecode15 = SWIG_AsVal_int(obj14, &val15); if (!SWIG_IsOK(ecode15)) { SWIG_exception_fail(SWIG_ArgError(ecode15), "in method '" "VImage_lrmosaic1" "', argument " "15"" of type '" "int""'"); } arg15 = static_cast< int >(val15); try { result = (arg1)->lrmosaic1(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_match_linear(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int arg10 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOO:VImage_match_linear",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_match_linear" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_match_linear" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_match_linear" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_match_linear" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_match_linear" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_match_linear" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_match_linear" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_match_linear" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_match_linear" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_match_linear" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_match_linear" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); try { result = (arg1)->match_linear(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_match_linear_search(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int arg10 ; int arg11 ; int arg12 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; int val12 ; int ecode12 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; PyObject * obj11 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOOO:VImage_match_linear_search",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10,&obj11)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_match_linear_search" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_match_linear_search" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_match_linear_search" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_match_linear_search" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_match_linear_search" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_match_linear_search" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_match_linear_search" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_match_linear_search" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_match_linear_search" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_match_linear_search" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_match_linear_search" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_match_linear_search" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); ecode12 = SWIG_AsVal_int(obj11, &val12); if (!SWIG_IsOK(ecode12)) { SWIG_exception_fail(SWIG_ArgError(ecode12), "in method '" "VImage_match_linear_search" "', argument " "12"" of type '" "int""'"); } arg12 = static_cast< int >(val12); try { result = (arg1)->match_linear_search(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_maxpos_subpel(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; double temp2 ; int res2 = SWIG_TMPOBJ ; PyObject * obj0 = 0 ; double result; arg2 = &temp2; if (!PyArg_ParseTuple(args,(char *)"O:VImage_maxpos_subpel",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_maxpos_subpel" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (double)(arg1)->maxpos_subpel(*arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); if (SWIG_IsTmpObj(res2)) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_double((*arg2))); } else { int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN | 0 ) : 0 ; resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_double, new_flags)); } return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_remosaic(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; char *arg3 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; int res3 ; char *buf3 = 0 ; int alloc3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_remosaic",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_remosaic" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_remosaic" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); if (!SWIG_IsOK(res3)) { SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "VImage_remosaic" "', argument " "3"" of type '" "char *""'"); } arg3 = reinterpret_cast< char * >(buf3); try { result = (arg1)->remosaic(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; if (alloc3 == SWIG_NEWOBJ) delete[] buf3; return NULL; } SWIGINTERN PyObject *_wrap_VImage_tbmerge(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_tbmerge",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tbmerge" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_tbmerge" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_tbmerge" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_tbmerge" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_tbmerge" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_tbmerge" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); try { result = (arg1)->tbmerge(arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_tbmerge1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int arg10 ; int arg11 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOO:VImage_tbmerge1",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tbmerge1" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_tbmerge1" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_tbmerge1" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_tbmerge1" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_tbmerge1" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_tbmerge1" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_tbmerge1" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_tbmerge1" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_tbmerge1" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_tbmerge1" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_tbmerge1" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_tbmerge1" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); try { result = (arg1)->tbmerge1(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_tbmosaic(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int arg10 ; int arg11 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOO:VImage_tbmosaic",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tbmosaic" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_tbmosaic" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_tbmosaic" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_tbmosaic" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_tbmosaic" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_tbmosaic" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_tbmosaic" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_tbmosaic" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_tbmosaic" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_tbmosaic" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_tbmosaic" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_tbmosaic" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); try { result = (arg1)->tbmosaic(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_tbmosaic1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; vips::VImage arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int arg8 ; int arg9 ; int arg10 ; int arg11 ; int arg12 ; int arg13 ; int arg14 ; int arg15 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; int val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; int val12 ; int ecode12 = 0 ; int val13 ; int ecode13 = 0 ; int val14 ; int ecode14 = 0 ; int val15 ; int ecode15 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; PyObject * obj11 = 0 ; PyObject * obj12 = 0 ; PyObject * obj13 = 0 ; PyObject * obj14 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOOOOOO:VImage_tbmosaic1",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10,&obj11,&obj12,&obj13,&obj14)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tbmosaic1" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VImage, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_tbmosaic1" "', argument " "2"" of type '" "vips::VImage""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VImage_tbmosaic1" "', argument " "2"" of type '" "vips::VImage""'"); } else { vips::VImage * temp = reinterpret_cast< vips::VImage * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_tbmosaic1" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_tbmosaic1" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_tbmosaic1" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_tbmosaic1" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_tbmosaic1" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); ecode8 = SWIG_AsVal_int(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_tbmosaic1" "', argument " "8"" of type '" "int""'"); } arg8 = static_cast< int >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_tbmosaic1" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_tbmosaic1" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_tbmosaic1" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); ecode12 = SWIG_AsVal_int(obj11, &val12); if (!SWIG_IsOK(ecode12)) { SWIG_exception_fail(SWIG_ArgError(ecode12), "in method '" "VImage_tbmosaic1" "', argument " "12"" of type '" "int""'"); } arg12 = static_cast< int >(val12); ecode13 = SWIG_AsVal_int(obj12, &val13); if (!SWIG_IsOK(ecode13)) { SWIG_exception_fail(SWIG_ArgError(ecode13), "in method '" "VImage_tbmosaic1" "', argument " "13"" of type '" "int""'"); } arg13 = static_cast< int >(val13); ecode14 = SWIG_AsVal_int(obj13, &val14); if (!SWIG_IsOK(ecode14)) { SWIG_exception_fail(SWIG_ArgError(ecode14), "in method '" "VImage_tbmosaic1" "', argument " "14"" of type '" "int""'"); } arg14 = static_cast< int >(val14); ecode15 = SWIG_AsVal_int(obj14, &val15); if (!SWIG_IsOK(ecode15)) { SWIG_exception_fail(SWIG_ArgError(ecode15), "in method '" "VImage_tbmosaic1" "', argument " "15"" of type '" "int""'"); } arg15 = static_cast< int >(val15); try { result = (arg1)->tbmosaic1(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12,arg13,arg14,arg15); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_benchmark(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_benchmark",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_benchmark" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (arg1)->benchmark(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_benchmark2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_benchmark2",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_benchmark2" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = (double)(arg1)->benchmark2(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_benchmarkn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_benchmarkn",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_benchmarkn" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_benchmarkn" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (arg1)->benchmarkn(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_eye(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; double arg3 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_eye",&obj0,&obj1,&obj2)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_eye" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_eye" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_eye" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); try { result = vips::VImage::eye(arg1,arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_grey(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_grey",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_grey" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_grey" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = vips::VImage::grey(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_feye(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; double arg3 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_feye",&obj0,&obj1,&obj2)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_feye" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_feye" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_feye" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); try { result = vips::VImage::feye(arg1,arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_fgrey(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_fgrey",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_fgrey" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_fgrey" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = vips::VImage::fgrey(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_fzone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int val1 ; int ecode1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_fzone",&obj0)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_fzone" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); try { result = vips::VImage::fzone(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_make_xy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_make_xy",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_make_xy" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_make_xy" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = vips::VImage::make_xy(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_sines(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; double arg3 ; double arg4 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_sines",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_sines" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_sines" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_sines" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_sines" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); try { result = vips::VImage::sines(arg1,arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_zone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int val1 ; int ecode1 = 0 ; PyObject * obj0 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_zone",&obj0)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_zone" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); try { result = vips::VImage::zone(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_rightshift_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; int arg2 ; int arg3 ; int arg4 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOO:VImage_rightshift_size",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_rightshift_size" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_rightshift_size" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_rightshift_size" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_rightshift_size" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); try { result = (arg1)->rightshift_size(arg2,arg3,arg4); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_shrink(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_shrink",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_shrink" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_shrink" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_shrink" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); try { result = (arg1)->shrink(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_stretch3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; double arg2 ; double arg3 ; void *argp1 = 0 ; int res1 = 0 ; double val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOO:VImage_stretch3",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_stretch3" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_stretch3" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_stretch3" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); try { result = (arg1)->stretch3(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_affinei(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; double arg8 ; int arg9 ; int arg10 ; int arg11 ; int arg12 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; double val8 ; int ecode8 = 0 ; int val9 ; int ecode9 = 0 ; int val10 ; int ecode10 = 0 ; int val11 ; int ecode11 = 0 ; int val12 ; int ecode12 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; PyObject * obj8 = 0 ; PyObject * obj9 = 0 ; PyObject * obj10 = 0 ; PyObject * obj11 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOOOOO:VImage_affinei",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8,&obj9,&obj10,&obj11)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_affinei" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_affinei" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_affinei" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_affinei" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_affinei" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_affinei" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_affinei" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); ecode8 = SWIG_AsVal_double(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_affinei" "', argument " "8"" of type '" "double""'"); } arg8 = static_cast< double >(val8); ecode9 = SWIG_AsVal_int(obj8, &val9); if (!SWIG_IsOK(ecode9)) { SWIG_exception_fail(SWIG_ArgError(ecode9), "in method '" "VImage_affinei" "', argument " "9"" of type '" "int""'"); } arg9 = static_cast< int >(val9); ecode10 = SWIG_AsVal_int(obj9, &val10); if (!SWIG_IsOK(ecode10)) { SWIG_exception_fail(SWIG_ArgError(ecode10), "in method '" "VImage_affinei" "', argument " "10"" of type '" "int""'"); } arg10 = static_cast< int >(val10); ecode11 = SWIG_AsVal_int(obj10, &val11); if (!SWIG_IsOK(ecode11)) { SWIG_exception_fail(SWIG_ArgError(ecode11), "in method '" "VImage_affinei" "', argument " "11"" of type '" "int""'"); } arg11 = static_cast< int >(val11); ecode12 = SWIG_AsVal_int(obj11, &val12); if (!SWIG_IsOK(ecode12)) { SWIG_exception_fail(SWIG_ArgError(ecode12), "in method '" "VImage_affinei" "', argument " "12"" of type '" "int""'"); } arg12 = static_cast< int >(val12); try { result = (arg1)->affinei(arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_affinei_all(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char *arg2 = (char *) 0 ; double arg3 ; double arg4 ; double arg5 ; double arg6 ; double arg7 ; double arg8 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; double val5 ; int ecode5 = 0 ; double val6 ; int ecode6 = 0 ; double val7 ; int ecode7 = 0 ; double val8 ; int ecode8 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; PyObject * obj7 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOOO:VImage_affinei_all",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_affinei_all" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VImage_affinei_all" "', argument " "2"" of type '" "char *""'"); } arg2 = reinterpret_cast< char * >(buf2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_affinei_all" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_affinei_all" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); ecode5 = SWIG_AsVal_double(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_affinei_all" "', argument " "5"" of type '" "double""'"); } arg5 = static_cast< double >(val5); ecode6 = SWIG_AsVal_double(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_affinei_all" "', argument " "6"" of type '" "double""'"); } arg6 = static_cast< double >(val6); ecode7 = SWIG_AsVal_double(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_affinei_all" "', argument " "7"" of type '" "double""'"); } arg7 = static_cast< double >(val7); ecode8 = SWIG_AsVal_double(obj7, &val8); if (!SWIG_IsOK(ecode8)) { SWIG_exception_fail(SWIG_ArgError(ecode8), "in method '" "VImage_affinei_all" "', argument " "8"" of type '" "double""'"); } arg8 = static_cast< double >(val8); try { result = (arg1)->affinei_all(arg2,arg3,arg4,arg5,arg6,arg7,arg8); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VImage_video_test(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OO:VImage_video_test",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VImage_video_test" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_video_test" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = vips::VImage::video_test(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_video_v4l1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int arg2 ; int arg3 ; int arg4 ; int arg5 ; int arg6 ; int arg7 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; int val6 ; int ecode6 = 0 ; int val7 ; int ecode7 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; PyObject * obj6 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOOOO:VImage_video_v4l1",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_video_v4l1" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_video_v4l1" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_video_v4l1" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_video_v4l1" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_video_v4l1" "', argument " "5"" of type '" "int""'"); } arg5 = static_cast< int >(val5); ecode6 = SWIG_AsVal_int(obj5, &val6); if (!SWIG_IsOK(ecode6)) { SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "VImage_video_v4l1" "', argument " "6"" of type '" "int""'"); } arg6 = static_cast< int >(val6); ecode7 = SWIG_AsVal_int(obj6, &val7); if (!SWIG_IsOK(ecode7)) { SWIG_exception_fail(SWIG_ArgError(ecode7), "in method '" "VImage_video_v4l1" "', argument " "7"" of type '" "int""'"); } arg7 = static_cast< int >(val7); try { result = vips::VImage::video_v4l1(arg1,arg2,arg3,arg4,arg5,arg6,arg7); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_VImage_tobuffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; VBuffer result; if (!PyArg_ParseTuple(args,(char *)"O:VImage_tobuffer",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tobuffer" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { result = vips_VImage_tobuffer(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } { resultobj = PyBuffer_FromMemory ((&result)->data, (&result)->size); } return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_frombuffer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; VBuffer arg1 ; int arg2 ; int arg3 ; int arg4 ; vips::VImage::TBandFmt arg5 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_frombuffer",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; { const char *buffer; Py_ssize_t buffer_len; if (PyObject_AsCharBuffer (obj0, &buffer, &buffer_len) == -1) { PyErr_SetString (PyExc_TypeError,"Type error. Unable to get char pointer from buffer"); return NULL; } (&arg1)->data = (void *) buffer; (&arg1)->size = buffer_len; } ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_frombuffer" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_frombuffer" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_frombuffer" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_frombuffer" "', argument " "5"" of type '" "vips::VImage::TBandFmt""'"); } arg5 = static_cast< vips::VImage::TBandFmt >(val5); try { result = vips_VImage_frombuffer(arg1,arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_tostring(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VImage *arg1 = (vips::VImage *) 0 ; char **arg2 = (char **) 0 ; int *arg3 = (int *) 0 ; void *argp1 = 0 ; int res1 = 0 ; char *temp2 = 0 ; int tempn2 ; PyObject * obj0 = 0 ; arg2 = &temp2; arg3 = &tempn2; if (!PyArg_ParseTuple(args,(char *)"O:VImage_tostring",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VImage, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VImage_tostring" "', argument " "1"" of type '" "vips::VImage *""'"); } arg1 = reinterpret_cast< vips::VImage * >(argp1); try { vips_VImage_tostring(arg1,arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); if (*arg2) { resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtrAndSize(*arg2,*arg3)); im_free (*arg2); } return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VImage_fromstring(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string arg1 ; int arg2 ; int arg3 ; int arg4 ; vips::VImage::TBandFmt arg5 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; int val5 ; int ecode5 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VImage result; if (!PyArg_ParseTuple(args,(char *)"OOOOO:VImage_fromstring",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; { std::string *ptr = (std::string *)0; int res = SWIG_AsPtr_std_string(obj0, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VImage_fromstring" "', argument " "1"" of type '" "std::string""'"); } arg1 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VImage_fromstring" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VImage_fromstring" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "VImage_fromstring" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); ecode5 = SWIG_AsVal_int(obj4, &val5); if (!SWIG_IsOK(ecode5)) { SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "VImage_fromstring" "', argument " "5"" of type '" "vips::VImage::TBandFmt""'"); } arg5 = static_cast< vips::VImage::TBandFmt >(val5); try { result = vips_VImage_fromstring(arg1,arg2,arg3,arg4,arg5); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VImage(static_cast< const vips::VImage& >(result))), SWIGTYPE_p_vips__VImage, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *VImage_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_vips__VImage, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } SWIGINTERN PyObject *_wrap_im_init_world(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:im_init_world",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "im_init_world" "', argument " "1"" of type '" "char const *""'"); } arg1 = reinterpret_cast< char * >(buf1); result = (int)im_init_world((char const *)arg1); resultobj = SWIG_From_int(static_cast< int >(result)); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_vips_thread_shutdown(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; if (!PyArg_ParseTuple(args,(char *)":vips_thread_shutdown")) SWIG_fail; vips_thread_shutdown(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_im__print_all(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; if (!PyArg_ParseTuple(args,(char *)":im__print_all")) SWIG_fail; im__print_all(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_im_col_Lab2XYZ(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; float arg1 ; float arg2 ; float arg3 ; float *arg4 = (float *) 0 ; float *arg5 = (float *) 0 ; float *arg6 = (float *) 0 ; float val1 ; int ecode1 = 0 ; float val2 ; int ecode2 = 0 ; float val3 ; int ecode3 = 0 ; void *argp4 = 0 ; int res4 = 0 ; void *argp5 = 0 ; int res5 = 0 ; void *argp6 = 0 ; int res6 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; PyObject * obj5 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOOO:im_col_Lab2XYZ",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; ecode1 = SWIG_AsVal_float(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "im_col_Lab2XYZ" "', argument " "1"" of type '" "float""'"); } arg1 = static_cast< float >(val1); ecode2 = SWIG_AsVal_float(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "im_col_Lab2XYZ" "', argument " "2"" of type '" "float""'"); } arg2 = static_cast< float >(val2); ecode3 = SWIG_AsVal_float(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "im_col_Lab2XYZ" "', argument " "3"" of type '" "float""'"); } arg3 = static_cast< float >(val3); res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_float, 0 | 0 ); if (!SWIG_IsOK(res4)) { SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "im_col_Lab2XYZ" "', argument " "4"" of type '" "float *""'"); } arg4 = reinterpret_cast< float * >(argp4); res5 = SWIG_ConvertPtr(obj4, &argp5,SWIGTYPE_p_float, 0 | 0 ); if (!SWIG_IsOK(res5)) { SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "im_col_Lab2XYZ" "', argument " "5"" of type '" "float *""'"); } arg5 = reinterpret_cast< float * >(argp5); res6 = SWIG_ConvertPtr(obj5, &argp6,SWIGTYPE_p_float, 0 | 0 ); if (!SWIG_IsOK(res6)) { SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "im_col_Lab2XYZ" "', argument " "6"" of type '" "float *""'"); } arg6 = reinterpret_cast< float * >(argp6); im_col_Lab2XYZ(arg1,arg2,arg3,arg4,arg5,arg6); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } static PyMethodDef SwigMethods[] = { { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL}, { (char *)"delete_SwigPyIterator", _wrap_delete_SwigPyIterator, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_value", _wrap_SwigPyIterator_value, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_incr", _wrap_SwigPyIterator_incr, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_decr", _wrap_SwigPyIterator_decr, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_distance", _wrap_SwigPyIterator_distance, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_equal", _wrap_SwigPyIterator_equal, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_copy", _wrap_SwigPyIterator_copy, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_next", _wrap_SwigPyIterator_next, METH_VARARGS, NULL}, { (char *)"SwigPyIterator___next__", _wrap_SwigPyIterator___next__, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_previous", _wrap_SwigPyIterator_previous, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_advance", _wrap_SwigPyIterator_advance, METH_VARARGS, NULL}, { (char *)"SwigPyIterator___eq__", _wrap_SwigPyIterator___eq__, METH_VARARGS, NULL}, { (char *)"SwigPyIterator___ne__", _wrap_SwigPyIterator___ne__, METH_VARARGS, NULL}, { (char *)"SwigPyIterator___iadd__", _wrap_SwigPyIterator___iadd__, METH_VARARGS, NULL}, { (char *)"SwigPyIterator___isub__", _wrap_SwigPyIterator___isub__, METH_VARARGS, NULL}, { (char *)"SwigPyIterator___add__", _wrap_SwigPyIterator___add__, METH_VARARGS, NULL}, { (char *)"SwigPyIterator___sub__", _wrap_SwigPyIterator___sub__, METH_VARARGS, NULL}, { (char *)"SwigPyIterator_swigregister", SwigPyIterator_swigregister, METH_VARARGS, NULL}, { (char *)"IntVector_iterator", _wrap_IntVector_iterator, METH_VARARGS, NULL}, { (char *)"IntVector___nonzero__", _wrap_IntVector___nonzero__, METH_VARARGS, NULL}, { (char *)"IntVector___bool__", _wrap_IntVector___bool__, METH_VARARGS, NULL}, { (char *)"IntVector___len__", _wrap_IntVector___len__, METH_VARARGS, NULL}, { (char *)"IntVector_pop", _wrap_IntVector_pop, METH_VARARGS, NULL}, { (char *)"IntVector___getslice__", _wrap_IntVector___getslice__, METH_VARARGS, NULL}, { (char *)"IntVector___setslice__", _wrap_IntVector___setslice__, METH_VARARGS, NULL}, { (char *)"IntVector___delslice__", _wrap_IntVector___delslice__, METH_VARARGS, NULL}, { (char *)"IntVector___delitem__", _wrap_IntVector___delitem__, METH_VARARGS, NULL}, { (char *)"IntVector___getitem__", _wrap_IntVector___getitem__, METH_VARARGS, NULL}, { (char *)"IntVector___setitem__", _wrap_IntVector___setitem__, METH_VARARGS, NULL}, { (char *)"IntVector_append", _wrap_IntVector_append, METH_VARARGS, NULL}, { (char *)"IntVector_empty", _wrap_IntVector_empty, METH_VARARGS, NULL}, { (char *)"IntVector_size", _wrap_IntVector_size, METH_VARARGS, NULL}, { (char *)"IntVector_clear", _wrap_IntVector_clear, METH_VARARGS, NULL}, { (char *)"IntVector_swap", _wrap_IntVector_swap, METH_VARARGS, NULL}, { (char *)"IntVector_get_allocator", _wrap_IntVector_get_allocator, METH_VARARGS, NULL}, { (char *)"IntVector_begin", _wrap_IntVector_begin, METH_VARARGS, NULL}, { (char *)"IntVector_end", _wrap_IntVector_end, METH_VARARGS, NULL}, { (char *)"IntVector_rbegin", _wrap_IntVector_rbegin, METH_VARARGS, NULL}, { (char *)"IntVector_rend", _wrap_IntVector_rend, METH_VARARGS, NULL}, { (char *)"IntVector_pop_back", _wrap_IntVector_pop_back, METH_VARARGS, NULL}, { (char *)"IntVector_erase", _wrap_IntVector_erase, METH_VARARGS, NULL}, { (char *)"new_IntVector", _wrap_new_IntVector, METH_VARARGS, NULL}, { (char *)"IntVector_push_back", _wrap_IntVector_push_back, METH_VARARGS, NULL}, { (char *)"IntVector_front", _wrap_IntVector_front, METH_VARARGS, NULL}, { (char *)"IntVector_back", _wrap_IntVector_back, METH_VARARGS, NULL}, { (char *)"IntVector_assign", _wrap_IntVector_assign, METH_VARARGS, NULL}, { (char *)"IntVector_resize", _wrap_IntVector_resize, METH_VARARGS, NULL}, { (char *)"IntVector_insert", _wrap_IntVector_insert, METH_VARARGS, NULL}, { (char *)"IntVector_reserve", _wrap_IntVector_reserve, METH_VARARGS, NULL}, { (char *)"IntVector_capacity", _wrap_IntVector_capacity, METH_VARARGS, NULL}, { (char *)"delete_IntVector", _wrap_delete_IntVector, METH_VARARGS, NULL}, { (char *)"IntVector_swigregister", IntVector_swigregister, METH_VARARGS, NULL}, { (char *)"DoubleVector_iterator", _wrap_DoubleVector_iterator, METH_VARARGS, NULL}, { (char *)"DoubleVector___nonzero__", _wrap_DoubleVector___nonzero__, METH_VARARGS, NULL}, { (char *)"DoubleVector___bool__", _wrap_DoubleVector___bool__, METH_VARARGS, NULL}, { (char *)"DoubleVector___len__", _wrap_DoubleVector___len__, METH_VARARGS, NULL}, { (char *)"DoubleVector_pop", _wrap_DoubleVector_pop, METH_VARARGS, NULL}, { (char *)"DoubleVector___getslice__", _wrap_DoubleVector___getslice__, METH_VARARGS, NULL}, { (char *)"DoubleVector___setslice__", _wrap_DoubleVector___setslice__, METH_VARARGS, NULL}, { (char *)"DoubleVector___delslice__", _wrap_DoubleVector___delslice__, METH_VARARGS, NULL}, { (char *)"DoubleVector___delitem__", _wrap_DoubleVector___delitem__, METH_VARARGS, NULL}, { (char *)"DoubleVector___getitem__", _wrap_DoubleVector___getitem__, METH_VARARGS, NULL}, { (char *)"DoubleVector___setitem__", _wrap_DoubleVector___setitem__, METH_VARARGS, NULL}, { (char *)"DoubleVector_append", _wrap_DoubleVector_append, METH_VARARGS, NULL}, { (char *)"DoubleVector_empty", _wrap_DoubleVector_empty, METH_VARARGS, NULL}, { (char *)"DoubleVector_size", _wrap_DoubleVector_size, METH_VARARGS, NULL}, { (char *)"DoubleVector_clear", _wrap_DoubleVector_clear, METH_VARARGS, NULL}, { (char *)"DoubleVector_swap", _wrap_DoubleVector_swap, METH_VARARGS, NULL}, { (char *)"DoubleVector_get_allocator", _wrap_DoubleVector_get_allocator, METH_VARARGS, NULL}, { (char *)"DoubleVector_begin", _wrap_DoubleVector_begin, METH_VARARGS, NULL}, { (char *)"DoubleVector_end", _wrap_DoubleVector_end, METH_VARARGS, NULL}, { (char *)"DoubleVector_rbegin", _wrap_DoubleVector_rbegin, METH_VARARGS, NULL}, { (char *)"DoubleVector_rend", _wrap_DoubleVector_rend, METH_VARARGS, NULL}, { (char *)"DoubleVector_pop_back", _wrap_DoubleVector_pop_back, METH_VARARGS, NULL}, { (char *)"DoubleVector_erase", _wrap_DoubleVector_erase, METH_VARARGS, NULL}, { (char *)"new_DoubleVector", _wrap_new_DoubleVector, METH_VARARGS, NULL}, { (char *)"DoubleVector_push_back", _wrap_DoubleVector_push_back, METH_VARARGS, NULL}, { (char *)"DoubleVector_front", _wrap_DoubleVector_front, METH_VARARGS, NULL}, { (char *)"DoubleVector_back", _wrap_DoubleVector_back, METH_VARARGS, NULL}, { (char *)"DoubleVector_assign", _wrap_DoubleVector_assign, METH_VARARGS, NULL}, { (char *)"DoubleVector_resize", _wrap_DoubleVector_resize, METH_VARARGS, NULL}, { (char *)"DoubleVector_insert", _wrap_DoubleVector_insert, METH_VARARGS, NULL}, { (char *)"DoubleVector_reserve", _wrap_DoubleVector_reserve, METH_VARARGS, NULL}, { (char *)"DoubleVector_capacity", _wrap_DoubleVector_capacity, METH_VARARGS, NULL}, { (char *)"delete_DoubleVector", _wrap_delete_DoubleVector, METH_VARARGS, NULL}, { (char *)"DoubleVector_swigregister", DoubleVector_swigregister, METH_VARARGS, NULL}, { (char *)"ImageVector_iterator", _wrap_ImageVector_iterator, METH_VARARGS, NULL}, { (char *)"ImageVector___nonzero__", _wrap_ImageVector___nonzero__, METH_VARARGS, NULL}, { (char *)"ImageVector___bool__", _wrap_ImageVector___bool__, METH_VARARGS, NULL}, { (char *)"ImageVector___len__", _wrap_ImageVector___len__, METH_VARARGS, NULL}, { (char *)"ImageVector_pop", _wrap_ImageVector_pop, METH_VARARGS, NULL}, { (char *)"ImageVector___getslice__", _wrap_ImageVector___getslice__, METH_VARARGS, NULL}, { (char *)"ImageVector___setslice__", _wrap_ImageVector___setslice__, METH_VARARGS, NULL}, { (char *)"ImageVector___delslice__", _wrap_ImageVector___delslice__, METH_VARARGS, NULL}, { (char *)"ImageVector___delitem__", _wrap_ImageVector___delitem__, METH_VARARGS, NULL}, { (char *)"ImageVector___getitem__", _wrap_ImageVector___getitem__, METH_VARARGS, NULL}, { (char *)"ImageVector___setitem__", _wrap_ImageVector___setitem__, METH_VARARGS, NULL}, { (char *)"ImageVector_append", _wrap_ImageVector_append, METH_VARARGS, NULL}, { (char *)"ImageVector_empty", _wrap_ImageVector_empty, METH_VARARGS, NULL}, { (char *)"ImageVector_size", _wrap_ImageVector_size, METH_VARARGS, NULL}, { (char *)"ImageVector_clear", _wrap_ImageVector_clear, METH_VARARGS, NULL}, { (char *)"ImageVector_swap", _wrap_ImageVector_swap, METH_VARARGS, NULL}, { (char *)"ImageVector_get_allocator", _wrap_ImageVector_get_allocator, METH_VARARGS, NULL}, { (char *)"ImageVector_begin", _wrap_ImageVector_begin, METH_VARARGS, NULL}, { (char *)"ImageVector_end", _wrap_ImageVector_end, METH_VARARGS, NULL}, { (char *)"ImageVector_rbegin", _wrap_ImageVector_rbegin, METH_VARARGS, NULL}, { (char *)"ImageVector_rend", _wrap_ImageVector_rend, METH_VARARGS, NULL}, { (char *)"ImageVector_pop_back", _wrap_ImageVector_pop_back, METH_VARARGS, NULL}, { (char *)"ImageVector_erase", _wrap_ImageVector_erase, METH_VARARGS, NULL}, { (char *)"new_ImageVector", _wrap_new_ImageVector, METH_VARARGS, NULL}, { (char *)"ImageVector_push_back", _wrap_ImageVector_push_back, METH_VARARGS, NULL}, { (char *)"ImageVector_front", _wrap_ImageVector_front, METH_VARARGS, NULL}, { (char *)"ImageVector_back", _wrap_ImageVector_back, METH_VARARGS, NULL}, { (char *)"ImageVector_assign", _wrap_ImageVector_assign, METH_VARARGS, NULL}, { (char *)"ImageVector_resize", _wrap_ImageVector_resize, METH_VARARGS, NULL}, { (char *)"ImageVector_insert", _wrap_ImageVector_insert, METH_VARARGS, NULL}, { (char *)"ImageVector_reserve", _wrap_ImageVector_reserve, METH_VARARGS, NULL}, { (char *)"ImageVector_capacity", _wrap_ImageVector_capacity, METH_VARARGS, NULL}, { (char *)"delete_ImageVector", _wrap_delete_ImageVector, METH_VARARGS, NULL}, { (char *)"ImageVector_swigregister", ImageVector_swigregister, METH_VARARGS, NULL}, { (char *)"init", _wrap_init, METH_VARARGS, NULL}, { (char *)"thread_shutdown", _wrap_thread_shutdown, METH_VARARGS, NULL}, { (char *)"shutdown", _wrap_shutdown, METH_VARARGS, NULL}, { (char *)"VImage_print_all", _wrap_VImage_print_all, METH_VARARGS, NULL}, { (char *)"VImage_convert2disc", _wrap_VImage_convert2disc, METH_VARARGS, NULL}, { (char *)"new_VImage", _wrap_new_VImage, METH_VARARGS, NULL}, { (char *)"VImage___assign__", _wrap_VImage___assign__, METH_VARARGS, NULL}, { (char *)"delete_VImage", _wrap_delete_VImage, METH_VARARGS, NULL}, { (char *)"VImage_image", _wrap_VImage_image, METH_VARARGS, NULL}, { (char *)"VImage_data", _wrap_VImage_data, METH_VARARGS, NULL}, { (char *)"VImage_write", _wrap_VImage_write, METH_VARARGS, NULL}, { (char *)"VImage_debug_print", _wrap_VImage_debug_print, METH_VARARGS, NULL}, { (char *)"VImage_Xsize", _wrap_VImage_Xsize, METH_VARARGS, NULL}, { (char *)"VImage_Ysize", _wrap_VImage_Ysize, METH_VARARGS, NULL}, { (char *)"VImage_Bands", _wrap_VImage_Bands, METH_VARARGS, NULL}, { (char *)"VImage_BandFmt", _wrap_VImage_BandFmt, METH_VARARGS, NULL}, { (char *)"VImage_Coding", _wrap_VImage_Coding, METH_VARARGS, NULL}, { (char *)"VImage_Type", _wrap_VImage_Type, METH_VARARGS, NULL}, { (char *)"VImage_Xres", _wrap_VImage_Xres, METH_VARARGS, NULL}, { (char *)"VImage_Yres", _wrap_VImage_Yres, METH_VARARGS, NULL}, { (char *)"VImage_Length", _wrap_VImage_Length, METH_VARARGS, NULL}, { (char *)"VImage_Compression", _wrap_VImage_Compression, METH_VARARGS, NULL}, { (char *)"VImage_Level", _wrap_VImage_Level, METH_VARARGS, NULL}, { (char *)"VImage_Xoffset", _wrap_VImage_Xoffset, METH_VARARGS, NULL}, { (char *)"VImage_Yoffset", _wrap_VImage_Yoffset, METH_VARARGS, NULL}, { (char *)"VImage_filename", _wrap_VImage_filename, METH_VARARGS, NULL}, { (char *)"VImage_Hist", _wrap_VImage_Hist, METH_VARARGS, NULL}, { (char *)"VImage_hough_circle", _wrap_VImage_hough_circle, METH_VARARGS, NULL}, { (char *)"VImage_meta_remove", _wrap_VImage_meta_remove, METH_VARARGS, NULL}, { (char *)"VImage_meta_get_typeof", _wrap_VImage_meta_get_typeof, METH_VARARGS, NULL}, { (char *)"VImage_meta_get_int", _wrap_VImage_meta_get_int, METH_VARARGS, NULL}, { (char *)"VImage_meta_get_double", _wrap_VImage_meta_get_double, METH_VARARGS, NULL}, { (char *)"VImage_meta_get_string", _wrap_VImage_meta_get_string, METH_VARARGS, NULL}, { (char *)"VImage_meta_get_area", _wrap_VImage_meta_get_area, METH_VARARGS, NULL}, { (char *)"VImage_meta_get_blob", _wrap_VImage_meta_get_blob, METH_VARARGS, NULL}, { (char *)"VImage_meta_set", _wrap_VImage_meta_set, METH_VARARGS, NULL}, { (char *)"VImage_initdesc", _wrap_VImage_initdesc, METH_VARARGS, NULL}, { (char *)"VImage_abs", _wrap_VImage_abs, METH_VARARGS, NULL}, { (char *)"VImage_acos", _wrap_VImage_acos, METH_VARARGS, NULL}, { (char *)"VImage_add", _wrap_VImage_add, METH_VARARGS, NULL}, { (char *)"VImage_asin", _wrap_VImage_asin, METH_VARARGS, NULL}, { (char *)"VImage_atan", _wrap_VImage_atan, METH_VARARGS, NULL}, { (char *)"VImage_avg", _wrap_VImage_avg, METH_VARARGS, NULL}, { (char *)"VImage_point", _wrap_VImage_point, METH_VARARGS, NULL}, { (char *)"VImage_point_bilinear", _wrap_VImage_point_bilinear, METH_VARARGS, NULL}, { (char *)"VImage_bandmean", _wrap_VImage_bandmean, METH_VARARGS, NULL}, { (char *)"VImage_ceil", _wrap_VImage_ceil, METH_VARARGS, NULL}, { (char *)"VImage_cos", _wrap_VImage_cos, METH_VARARGS, NULL}, { (char *)"VImage_cross_phase", _wrap_VImage_cross_phase, METH_VARARGS, NULL}, { (char *)"VImage_deviate", _wrap_VImage_deviate, METH_VARARGS, NULL}, { (char *)"VImage_divide", _wrap_VImage_divide, METH_VARARGS, NULL}, { (char *)"VImage_exp10", _wrap_VImage_exp10, METH_VARARGS, NULL}, { (char *)"VImage_expn", _wrap_VImage_expn, METH_VARARGS, NULL}, { (char *)"VImage_exp", _wrap_VImage_exp, METH_VARARGS, NULL}, { (char *)"VImage_floor", _wrap_VImage_floor, METH_VARARGS, NULL}, { (char *)"VImage_invert", _wrap_VImage_invert, METH_VARARGS, NULL}, { (char *)"VImage_linreg", _wrap_VImage_linreg, METH_VARARGS, NULL}, { (char *)"VImage_lin", _wrap_VImage_lin, METH_VARARGS, NULL}, { (char *)"VImage_log10", _wrap_VImage_log10, METH_VARARGS, NULL}, { (char *)"VImage_log", _wrap_VImage_log, METH_VARARGS, NULL}, { (char *)"VImage_max", _wrap_VImage_max, METH_VARARGS, NULL}, { (char *)"VImage_maxpos", _wrap_VImage_maxpos, METH_VARARGS, NULL}, { (char *)"VImage_maxpos_avg", _wrap_VImage_maxpos_avg, METH_VARARGS, NULL}, { (char *)"VImage_measure", _wrap_VImage_measure, METH_VARARGS, NULL}, { (char *)"VImage_min", _wrap_VImage_min, METH_VARARGS, NULL}, { (char *)"VImage_minpos", _wrap_VImage_minpos, METH_VARARGS, NULL}, { (char *)"VImage_multiply", _wrap_VImage_multiply, METH_VARARGS, NULL}, { (char *)"VImage_pow", _wrap_VImage_pow, METH_VARARGS, NULL}, { (char *)"VImage_recomb", _wrap_VImage_recomb, METH_VARARGS, NULL}, { (char *)"VImage_remainder", _wrap_VImage_remainder, METH_VARARGS, NULL}, { (char *)"VImage_rint", _wrap_VImage_rint, METH_VARARGS, NULL}, { (char *)"VImage_sign", _wrap_VImage_sign, METH_VARARGS, NULL}, { (char *)"VImage_sin", _wrap_VImage_sin, METH_VARARGS, NULL}, { (char *)"VImage_stats", _wrap_VImage_stats, METH_VARARGS, NULL}, { (char *)"VImage_subtract", _wrap_VImage_subtract, METH_VARARGS, NULL}, { (char *)"VImage_tan", _wrap_VImage_tan, METH_VARARGS, NULL}, { (char *)"VImage_greyc", _wrap_VImage_greyc, METH_VARARGS, NULL}, { (char *)"VImage_greyc_mask", _wrap_VImage_greyc_mask, METH_VARARGS, NULL}, { (char *)"VImage_LCh2Lab", _wrap_VImage_LCh2Lab, METH_VARARGS, NULL}, { (char *)"VImage_LCh2UCS", _wrap_VImage_LCh2UCS, METH_VARARGS, NULL}, { (char *)"VImage_Lab2LCh", _wrap_VImage_Lab2LCh, METH_VARARGS, NULL}, { (char *)"VImage_Lab2LabQ", _wrap_VImage_Lab2LabQ, METH_VARARGS, NULL}, { (char *)"VImage_Lab2LabS", _wrap_VImage_Lab2LabS, METH_VARARGS, NULL}, { (char *)"VImage_Lab2UCS", _wrap_VImage_Lab2UCS, METH_VARARGS, NULL}, { (char *)"VImage_Lab2XYZ", _wrap_VImage_Lab2XYZ, METH_VARARGS, NULL}, { (char *)"VImage_Lab2XYZ_temp", _wrap_VImage_Lab2XYZ_temp, METH_VARARGS, NULL}, { (char *)"VImage_Lab2disp", _wrap_VImage_Lab2disp, METH_VARARGS, NULL}, { (char *)"VImage_LabQ2LabS", _wrap_VImage_LabQ2LabS, METH_VARARGS, NULL}, { (char *)"VImage_LabQ2Lab", _wrap_VImage_LabQ2Lab, METH_VARARGS, NULL}, { (char *)"VImage_LabQ2XYZ", _wrap_VImage_LabQ2XYZ, METH_VARARGS, NULL}, { (char *)"VImage_LabQ2disp", _wrap_VImage_LabQ2disp, METH_VARARGS, NULL}, { (char *)"VImage_LabS2LabQ", _wrap_VImage_LabS2LabQ, METH_VARARGS, NULL}, { (char *)"VImage_LabS2Lab", _wrap_VImage_LabS2Lab, METH_VARARGS, NULL}, { (char *)"VImage_UCS2LCh", _wrap_VImage_UCS2LCh, METH_VARARGS, NULL}, { (char *)"VImage_UCS2Lab", _wrap_VImage_UCS2Lab, METH_VARARGS, NULL}, { (char *)"VImage_UCS2XYZ", _wrap_VImage_UCS2XYZ, METH_VARARGS, NULL}, { (char *)"VImage_XYZ2Lab", _wrap_VImage_XYZ2Lab, METH_VARARGS, NULL}, { (char *)"VImage_XYZ2Lab_temp", _wrap_VImage_XYZ2Lab_temp, METH_VARARGS, NULL}, { (char *)"VImage_XYZ2UCS", _wrap_VImage_XYZ2UCS, METH_VARARGS, NULL}, { (char *)"VImage_XYZ2Yxy", _wrap_VImage_XYZ2Yxy, METH_VARARGS, NULL}, { (char *)"VImage_XYZ2disp", _wrap_VImage_XYZ2disp, METH_VARARGS, NULL}, { (char *)"VImage_XYZ2sRGB", _wrap_VImage_XYZ2sRGB, METH_VARARGS, NULL}, { (char *)"VImage_Yxy2XYZ", _wrap_VImage_Yxy2XYZ, METH_VARARGS, NULL}, { (char *)"VImage_dE00_fromLab", _wrap_VImage_dE00_fromLab, METH_VARARGS, NULL}, { (char *)"VImage_dECMC_fromLab", _wrap_VImage_dECMC_fromLab, METH_VARARGS, NULL}, { (char *)"VImage_dECMC_fromdisp", _wrap_VImage_dECMC_fromdisp, METH_VARARGS, NULL}, { (char *)"VImage_dE_fromLab", _wrap_VImage_dE_fromLab, METH_VARARGS, NULL}, { (char *)"VImage_dE_fromXYZ", _wrap_VImage_dE_fromXYZ, METH_VARARGS, NULL}, { (char *)"VImage_dE_fromdisp", _wrap_VImage_dE_fromdisp, METH_VARARGS, NULL}, { (char *)"VImage_disp2Lab", _wrap_VImage_disp2Lab, METH_VARARGS, NULL}, { (char *)"VImage_disp2XYZ", _wrap_VImage_disp2XYZ, METH_VARARGS, NULL}, { (char *)"VImage_float2rad", _wrap_VImage_float2rad, METH_VARARGS, NULL}, { (char *)"VImage_icc_ac2rc", _wrap_VImage_icc_ac2rc, METH_VARARGS, NULL}, { (char *)"VImage_icc_export_depth", _wrap_VImage_icc_export_depth, METH_VARARGS, NULL}, { (char *)"VImage_icc_import", _wrap_VImage_icc_import, METH_VARARGS, NULL}, { (char *)"VImage_icc_import_embedded", _wrap_VImage_icc_import_embedded, METH_VARARGS, NULL}, { (char *)"VImage_icc_transform", _wrap_VImage_icc_transform, METH_VARARGS, NULL}, { (char *)"VImage_lab_morph", _wrap_VImage_lab_morph, METH_VARARGS, NULL}, { (char *)"VImage_rad2float", _wrap_VImage_rad2float, METH_VARARGS, NULL}, { (char *)"VImage_sRGB2XYZ", _wrap_VImage_sRGB2XYZ, METH_VARARGS, NULL}, { (char *)"VImage_gaussnoise", _wrap_VImage_gaussnoise, METH_VARARGS, NULL}, { (char *)"VImage_bandjoin", _wrap_VImage_bandjoin, METH_VARARGS, NULL}, { (char *)"VImage_black", _wrap_VImage_black, METH_VARARGS, NULL}, { (char *)"VImage_c2amph", _wrap_VImage_c2amph, METH_VARARGS, NULL}, { (char *)"VImage_c2imag", _wrap_VImage_c2imag, METH_VARARGS, NULL}, { (char *)"VImage_c2real", _wrap_VImage_c2real, METH_VARARGS, NULL}, { (char *)"VImage_c2rect", _wrap_VImage_c2rect, METH_VARARGS, NULL}, { (char *)"VImage_clip2fmt", _wrap_VImage_clip2fmt, METH_VARARGS, NULL}, { (char *)"VImage_copy", _wrap_VImage_copy, METH_VARARGS, NULL}, { (char *)"VImage_copy_file", _wrap_VImage_copy_file, METH_VARARGS, NULL}, { (char *)"VImage_copy_morph", _wrap_VImage_copy_morph, METH_VARARGS, NULL}, { (char *)"VImage_copy_swap", _wrap_VImage_copy_swap, METH_VARARGS, NULL}, { (char *)"VImage_copy_set", _wrap_VImage_copy_set, METH_VARARGS, NULL}, { (char *)"VImage_extract_area", _wrap_VImage_extract_area, METH_VARARGS, NULL}, { (char *)"VImage_extract_areabands", _wrap_VImage_extract_areabands, METH_VARARGS, NULL}, { (char *)"VImage_extract_band", _wrap_VImage_extract_band, METH_VARARGS, NULL}, { (char *)"VImage_extract_bands", _wrap_VImage_extract_bands, METH_VARARGS, NULL}, { (char *)"VImage_extract", _wrap_VImage_extract, METH_VARARGS, NULL}, { (char *)"VImage_falsecolour", _wrap_VImage_falsecolour, METH_VARARGS, NULL}, { (char *)"VImage_fliphor", _wrap_VImage_fliphor, METH_VARARGS, NULL}, { (char *)"VImage_flipver", _wrap_VImage_flipver, METH_VARARGS, NULL}, { (char *)"VImage_gbandjoin", _wrap_VImage_gbandjoin, METH_VARARGS, NULL}, { (char *)"VImage_grid", _wrap_VImage_grid, METH_VARARGS, NULL}, { (char *)"VImage_insert", _wrap_VImage_insert, METH_VARARGS, NULL}, { (char *)"VImage_insert_noexpand", _wrap_VImage_insert_noexpand, METH_VARARGS, NULL}, { (char *)"VImage_embed", _wrap_VImage_embed, METH_VARARGS, NULL}, { (char *)"VImage_lrjoin", _wrap_VImage_lrjoin, METH_VARARGS, NULL}, { (char *)"VImage_msb", _wrap_VImage_msb, METH_VARARGS, NULL}, { (char *)"VImage_msb_band", _wrap_VImage_msb_band, METH_VARARGS, NULL}, { (char *)"VImage_replicate", _wrap_VImage_replicate, METH_VARARGS, NULL}, { (char *)"VImage_ri2c", _wrap_VImage_ri2c, METH_VARARGS, NULL}, { (char *)"VImage_rot180", _wrap_VImage_rot180, METH_VARARGS, NULL}, { (char *)"VImage_rot270", _wrap_VImage_rot270, METH_VARARGS, NULL}, { (char *)"VImage_rot90", _wrap_VImage_rot90, METH_VARARGS, NULL}, { (char *)"VImage_scale", _wrap_VImage_scale, METH_VARARGS, NULL}, { (char *)"VImage_scaleps", _wrap_VImage_scaleps, METH_VARARGS, NULL}, { (char *)"VImage_subsample", _wrap_VImage_subsample, METH_VARARGS, NULL}, { (char *)"VImage_system", _wrap_VImage_system, METH_VARARGS, NULL}, { (char *)"VImage_system_image", _wrap_VImage_system_image, METH_VARARGS, NULL}, { (char *)"VImage_tbjoin", _wrap_VImage_tbjoin, METH_VARARGS, NULL}, { (char *)"VImage_text", _wrap_VImage_text, METH_VARARGS, NULL}, { (char *)"VImage_wrap", _wrap_VImage_wrap, METH_VARARGS, NULL}, { (char *)"VImage_zoom", _wrap_VImage_zoom, METH_VARARGS, NULL}, { (char *)"VImage_aconvsep", _wrap_VImage_aconvsep, METH_VARARGS, NULL}, { (char *)"VImage_aconv", _wrap_VImage_aconv, METH_VARARGS, NULL}, { (char *)"VImage_addgnoise", _wrap_VImage_addgnoise, METH_VARARGS, NULL}, { (char *)"VImage_compass", _wrap_VImage_compass, METH_VARARGS, NULL}, { (char *)"VImage_contrast_surface", _wrap_VImage_contrast_surface, METH_VARARGS, NULL}, { (char *)"VImage_conv", _wrap_VImage_conv, METH_VARARGS, NULL}, { (char *)"VImage_convsep", _wrap_VImage_convsep, METH_VARARGS, NULL}, { (char *)"VImage_fastcor", _wrap_VImage_fastcor, METH_VARARGS, NULL}, { (char *)"VImage_gradcor", _wrap_VImage_gradcor, METH_VARARGS, NULL}, { (char *)"VImage_gradient", _wrap_VImage_gradient, METH_VARARGS, NULL}, { (char *)"VImage_grad_x", _wrap_VImage_grad_x, METH_VARARGS, NULL}, { (char *)"VImage_grad_y", _wrap_VImage_grad_y, METH_VARARGS, NULL}, { (char *)"VImage_lindetect", _wrap_VImage_lindetect, METH_VARARGS, NULL}, { (char *)"VImage_sharpen", _wrap_VImage_sharpen, METH_VARARGS, NULL}, { (char *)"VImage_spcor", _wrap_VImage_spcor, METH_VARARGS, NULL}, { (char *)"VImage_argb2rgba", _wrap_VImage_argb2rgba, METH_VARARGS, NULL}, { (char *)"VImage_flood_copy", _wrap_VImage_flood_copy, METH_VARARGS, NULL}, { (char *)"VImage_flood_blob_copy", _wrap_VImage_flood_blob_copy, METH_VARARGS, NULL}, { (char *)"VImage_flood_other_copy", _wrap_VImage_flood_other_copy, METH_VARARGS, NULL}, { (char *)"VImage_clip", _wrap_VImage_clip, METH_VARARGS, NULL}, { (char *)"VImage_c2ps", _wrap_VImage_c2ps, METH_VARARGS, NULL}, { (char *)"VImage_resize_linear", _wrap_VImage_resize_linear, METH_VARARGS, NULL}, { (char *)"VImage_cmulnorm", _wrap_VImage_cmulnorm, METH_VARARGS, NULL}, { (char *)"VImage_fav4", _wrap_VImage_fav4, METH_VARARGS, NULL}, { (char *)"VImage_gadd", _wrap_VImage_gadd, METH_VARARGS, NULL}, { (char *)"VImage_icc_export", _wrap_VImage_icc_export, METH_VARARGS, NULL}, { (char *)"VImage_litecor", _wrap_VImage_litecor, METH_VARARGS, NULL}, { (char *)"VImage_affine", _wrap_VImage_affine, METH_VARARGS, NULL}, { (char *)"VImage_clip2c", _wrap_VImage_clip2c, METH_VARARGS, NULL}, { (char *)"VImage_clip2cm", _wrap_VImage_clip2cm, METH_VARARGS, NULL}, { (char *)"VImage_clip2d", _wrap_VImage_clip2d, METH_VARARGS, NULL}, { (char *)"VImage_clip2dcm", _wrap_VImage_clip2dcm, METH_VARARGS, NULL}, { (char *)"VImage_clip2f", _wrap_VImage_clip2f, METH_VARARGS, NULL}, { (char *)"VImage_clip2i", _wrap_VImage_clip2i, METH_VARARGS, NULL}, { (char *)"VImage_convsub", _wrap_VImage_convsub, METH_VARARGS, NULL}, { (char *)"VImage_convf", _wrap_VImage_convf, METH_VARARGS, NULL}, { (char *)"VImage_convsepf", _wrap_VImage_convsepf, METH_VARARGS, NULL}, { (char *)"VImage_clip2s", _wrap_VImage_clip2s, METH_VARARGS, NULL}, { (char *)"VImage_clip2ui", _wrap_VImage_clip2ui, METH_VARARGS, NULL}, { (char *)"VImage_clip2us", _wrap_VImage_clip2us, METH_VARARGS, NULL}, { (char *)"VImage_slice", _wrap_VImage_slice, METH_VARARGS, NULL}, { (char *)"VImage_segment", _wrap_VImage_segment, METH_VARARGS, NULL}, { (char *)"VImage_thresh", _wrap_VImage_thresh, METH_VARARGS, NULL}, { (char *)"VImage_convf_raw", _wrap_VImage_convf_raw, METH_VARARGS, NULL}, { (char *)"VImage_conv_raw", _wrap_VImage_conv_raw, METH_VARARGS, NULL}, { (char *)"VImage_contrast_surface_raw", _wrap_VImage_contrast_surface_raw, METH_VARARGS, NULL}, { (char *)"VImage_convsepf_raw", _wrap_VImage_convsepf_raw, METH_VARARGS, NULL}, { (char *)"VImage_convsep_raw", _wrap_VImage_convsep_raw, METH_VARARGS, NULL}, { (char *)"VImage_fastcor_raw", _wrap_VImage_fastcor_raw, METH_VARARGS, NULL}, { (char *)"VImage_gradcor_raw", _wrap_VImage_gradcor_raw, METH_VARARGS, NULL}, { (char *)"VImage_spcor_raw", _wrap_VImage_spcor_raw, METH_VARARGS, NULL}, { (char *)"VImage_lhisteq_raw", _wrap_VImage_lhisteq_raw, METH_VARARGS, NULL}, { (char *)"VImage_stdif_raw", _wrap_VImage_stdif_raw, METH_VARARGS, NULL}, { (char *)"VImage_rank_raw", _wrap_VImage_rank_raw, METH_VARARGS, NULL}, { (char *)"VImage_dilate_raw", _wrap_VImage_dilate_raw, METH_VARARGS, NULL}, { (char *)"VImage_erode_raw", _wrap_VImage_erode_raw, METH_VARARGS, NULL}, { (char *)"VImage_similarity_area", _wrap_VImage_similarity_area, METH_VARARGS, NULL}, { (char *)"VImage_similarity", _wrap_VImage_similarity, METH_VARARGS, NULL}, { (char *)"VImage_mask2vips", _wrap_VImage_mask2vips, METH_VARARGS, NULL}, { (char *)"VImage_vips2mask", _wrap_VImage_vips2mask, METH_VARARGS, NULL}, { (char *)"VImage_insertplace", _wrap_VImage_insertplace, METH_VARARGS, NULL}, { (char *)"VImage_circle", _wrap_VImage_circle, METH_VARARGS, NULL}, { (char *)"VImage_andimage", _wrap_VImage_andimage, METH_VARARGS, NULL}, { (char *)"VImage_orimage", _wrap_VImage_orimage, METH_VARARGS, NULL}, { (char *)"VImage_eorimage", _wrap_VImage_eorimage, METH_VARARGS, NULL}, { (char *)"VImage_shiftleft", _wrap_VImage_shiftleft, METH_VARARGS, NULL}, { (char *)"VImage_shiftright", _wrap_VImage_shiftright, METH_VARARGS, NULL}, { (char *)"VImage_blend", _wrap_VImage_blend, METH_VARARGS, NULL}, { (char *)"VImage_equal", _wrap_VImage_equal, METH_VARARGS, NULL}, { (char *)"VImage_ifthenelse", _wrap_VImage_ifthenelse, METH_VARARGS, NULL}, { (char *)"VImage_less", _wrap_VImage_less, METH_VARARGS, NULL}, { (char *)"VImage_lesseq", _wrap_VImage_lesseq, METH_VARARGS, NULL}, { (char *)"VImage_more", _wrap_VImage_more, METH_VARARGS, NULL}, { (char *)"VImage_moreeq", _wrap_VImage_moreeq, METH_VARARGS, NULL}, { (char *)"VImage_notequal", _wrap_VImage_notequal, METH_VARARGS, NULL}, { (char *)"VImage_quadratic", _wrap_VImage_quadratic, METH_VARARGS, NULL}, { (char *)"VImage_csv2vips", _wrap_VImage_csv2vips, METH_VARARGS, NULL}, { (char *)"VImage_fits2vips", _wrap_VImage_fits2vips, METH_VARARGS, NULL}, { (char *)"VImage_jpeg2vips", _wrap_VImage_jpeg2vips, METH_VARARGS, NULL}, { (char *)"VImage_magick2vips", _wrap_VImage_magick2vips, METH_VARARGS, NULL}, { (char *)"VImage_png2vips", _wrap_VImage_png2vips, METH_VARARGS, NULL}, { (char *)"VImage_exr2vips", _wrap_VImage_exr2vips, METH_VARARGS, NULL}, { (char *)"VImage_ppm2vips", _wrap_VImage_ppm2vips, METH_VARARGS, NULL}, { (char *)"VImage_analyze2vips", _wrap_VImage_analyze2vips, METH_VARARGS, NULL}, { (char *)"VImage_tiff2vips", _wrap_VImage_tiff2vips, METH_VARARGS, NULL}, { (char *)"VImage_vips2csv", _wrap_VImage_vips2csv, METH_VARARGS, NULL}, { (char *)"VImage_vips2dz", _wrap_VImage_vips2dz, METH_VARARGS, NULL}, { (char *)"VImage_vips2jpeg", _wrap_VImage_vips2jpeg, METH_VARARGS, NULL}, { (char *)"VImage_vips2mimejpeg", _wrap_VImage_vips2mimejpeg, METH_VARARGS, NULL}, { (char *)"VImage_vips2png", _wrap_VImage_vips2png, METH_VARARGS, NULL}, { (char *)"VImage_vips2ppm", _wrap_VImage_vips2ppm, METH_VARARGS, NULL}, { (char *)"VImage_vips2tiff", _wrap_VImage_vips2tiff, METH_VARARGS, NULL}, { (char *)"VImage_create_fmask", _wrap_VImage_create_fmask, METH_VARARGS, NULL}, { (char *)"VImage_disp_ps", _wrap_VImage_disp_ps, METH_VARARGS, NULL}, { (char *)"VImage_flt_image_freq", _wrap_VImage_flt_image_freq, METH_VARARGS, NULL}, { (char *)"VImage_fractsurf", _wrap_VImage_fractsurf, METH_VARARGS, NULL}, { (char *)"VImage_freqflt", _wrap_VImage_freqflt, METH_VARARGS, NULL}, { (char *)"VImage_fwfft", _wrap_VImage_fwfft, METH_VARARGS, NULL}, { (char *)"VImage_rotquad", _wrap_VImage_rotquad, METH_VARARGS, NULL}, { (char *)"VImage_invfft", _wrap_VImage_invfft, METH_VARARGS, NULL}, { (char *)"VImage_phasecor_fft", _wrap_VImage_phasecor_fft, METH_VARARGS, NULL}, { (char *)"VImage_invfftr", _wrap_VImage_invfftr, METH_VARARGS, NULL}, { (char *)"VImage_gammacorrect", _wrap_VImage_gammacorrect, METH_VARARGS, NULL}, { (char *)"VImage_heq", _wrap_VImage_heq, METH_VARARGS, NULL}, { (char *)"VImage_hist", _wrap_VImage_hist, METH_VARARGS, NULL}, { (char *)"VImage_histcum", _wrap_VImage_histcum, METH_VARARGS, NULL}, { (char *)"VImage_histeq", _wrap_VImage_histeq, METH_VARARGS, NULL}, { (char *)"VImage_hist_indexed", _wrap_VImage_hist_indexed, METH_VARARGS, NULL}, { (char *)"VImage_histgr", _wrap_VImage_histgr, METH_VARARGS, NULL}, { (char *)"VImage_histnD", _wrap_VImage_histnD, METH_VARARGS, NULL}, { (char *)"VImage_histnorm", _wrap_VImage_histnorm, METH_VARARGS, NULL}, { (char *)"VImage_histplot", _wrap_VImage_histplot, METH_VARARGS, NULL}, { (char *)"VImage_histspec", _wrap_VImage_histspec, METH_VARARGS, NULL}, { (char *)"VImage_hsp", _wrap_VImage_hsp, METH_VARARGS, NULL}, { (char *)"VImage_identity", _wrap_VImage_identity, METH_VARARGS, NULL}, { (char *)"VImage_identity_ushort", _wrap_VImage_identity_ushort, METH_VARARGS, NULL}, { (char *)"VImage_ismonotonic", _wrap_VImage_ismonotonic, METH_VARARGS, NULL}, { (char *)"VImage_lhisteq", _wrap_VImage_lhisteq, METH_VARARGS, NULL}, { (char *)"VImage_mpercent", _wrap_VImage_mpercent, METH_VARARGS, NULL}, { (char *)"VImage_invertlut", _wrap_VImage_invertlut, METH_VARARGS, NULL}, { (char *)"VImage_buildlut", _wrap_VImage_buildlut, METH_VARARGS, NULL}, { (char *)"VImage_maplut", _wrap_VImage_maplut, METH_VARARGS, NULL}, { (char *)"VImage_project", _wrap_VImage_project, METH_VARARGS, NULL}, { (char *)"VImage_stdif", _wrap_VImage_stdif, METH_VARARGS, NULL}, { (char *)"VImage_tone_analyse", _wrap_VImage_tone_analyse, METH_VARARGS, NULL}, { (char *)"VImage_tone_build", _wrap_VImage_tone_build, METH_VARARGS, NULL}, { (char *)"VImage_tone_build_range", _wrap_VImage_tone_build_range, METH_VARARGS, NULL}, { (char *)"VImage_tone_map", _wrap_VImage_tone_map, METH_VARARGS, NULL}, { (char *)"VImage_draw_circle", _wrap_VImage_draw_circle, METH_VARARGS, NULL}, { (char *)"VImage_draw_rect", _wrap_VImage_draw_rect, METH_VARARGS, NULL}, { (char *)"VImage_draw_line", _wrap_VImage_draw_line, METH_VARARGS, NULL}, { (char *)"VImage_draw_point", _wrap_VImage_draw_point, METH_VARARGS, NULL}, { (char *)"VImage_draw_smudge", _wrap_VImage_draw_smudge, METH_VARARGS, NULL}, { (char *)"VImage_draw_flood", _wrap_VImage_draw_flood, METH_VARARGS, NULL}, { (char *)"VImage_draw_flood_blob", _wrap_VImage_draw_flood_blob, METH_VARARGS, NULL}, { (char *)"VImage_draw_flood_other", _wrap_VImage_draw_flood_other, METH_VARARGS, NULL}, { (char *)"VImage_draw_image", _wrap_VImage_draw_image, METH_VARARGS, NULL}, { (char *)"VImage_draw_mask", _wrap_VImage_draw_mask, METH_VARARGS, NULL}, { (char *)"VImage_line", _wrap_VImage_line, METH_VARARGS, NULL}, { (char *)"VImage_binfile", _wrap_VImage_binfile, METH_VARARGS, NULL}, { (char *)"VImage_cache", _wrap_VImage_cache, METH_VARARGS, NULL}, { (char *)"VImage_getext", _wrap_VImage_getext, METH_VARARGS, NULL}, { (char *)"VImage_header_get_typeof", _wrap_VImage_header_get_typeof, METH_VARARGS, NULL}, { (char *)"VImage_header_int", _wrap_VImage_header_int, METH_VARARGS, NULL}, { (char *)"VImage_header_double", _wrap_VImage_header_double, METH_VARARGS, NULL}, { (char *)"VImage_header_string", _wrap_VImage_header_string, METH_VARARGS, NULL}, { (char *)"VImage_history_get", _wrap_VImage_history_get, METH_VARARGS, NULL}, { (char *)"VImage_printdesc", _wrap_VImage_printdesc, METH_VARARGS, NULL}, { (char *)"VImage_cntlines", _wrap_VImage_cntlines, METH_VARARGS, NULL}, { (char *)"VImage_dilate", _wrap_VImage_dilate, METH_VARARGS, NULL}, { (char *)"VImage_rank", _wrap_VImage_rank, METH_VARARGS, NULL}, { (char *)"VImage_rank_image", _wrap_VImage_rank_image, METH_VARARGS, NULL}, { (char *)"VImage_maxvalue", _wrap_VImage_maxvalue, METH_VARARGS, NULL}, { (char *)"VImage_label_regions", _wrap_VImage_label_regions, METH_VARARGS, NULL}, { (char *)"VImage_zerox", _wrap_VImage_zerox, METH_VARARGS, NULL}, { (char *)"VImage_erode", _wrap_VImage_erode, METH_VARARGS, NULL}, { (char *)"VImage_profile", _wrap_VImage_profile, METH_VARARGS, NULL}, { (char *)"VImage_align_bands", _wrap_VImage_align_bands, METH_VARARGS, NULL}, { (char *)"VImage_correl", _wrap_VImage_correl, METH_VARARGS, NULL}, { (char *)"VImage__find_lroverlap", _wrap_VImage__find_lroverlap, METH_VARARGS, NULL}, { (char *)"VImage__find_tboverlap", _wrap_VImage__find_tboverlap, METH_VARARGS, NULL}, { (char *)"VImage_global_balance", _wrap_VImage_global_balance, METH_VARARGS, NULL}, { (char *)"VImage_global_balancef", _wrap_VImage_global_balancef, METH_VARARGS, NULL}, { (char *)"VImage_lrmerge", _wrap_VImage_lrmerge, METH_VARARGS, NULL}, { (char *)"VImage_lrmerge1", _wrap_VImage_lrmerge1, METH_VARARGS, NULL}, { (char *)"VImage_lrmosaic", _wrap_VImage_lrmosaic, METH_VARARGS, NULL}, { (char *)"VImage_lrmosaic1", _wrap_VImage_lrmosaic1, METH_VARARGS, NULL}, { (char *)"VImage_match_linear", _wrap_VImage_match_linear, METH_VARARGS, NULL}, { (char *)"VImage_match_linear_search", _wrap_VImage_match_linear_search, METH_VARARGS, NULL}, { (char *)"VImage_maxpos_subpel", _wrap_VImage_maxpos_subpel, METH_VARARGS, NULL}, { (char *)"VImage_remosaic", _wrap_VImage_remosaic, METH_VARARGS, NULL}, { (char *)"VImage_tbmerge", _wrap_VImage_tbmerge, METH_VARARGS, NULL}, { (char *)"VImage_tbmerge1", _wrap_VImage_tbmerge1, METH_VARARGS, NULL}, { (char *)"VImage_tbmosaic", _wrap_VImage_tbmosaic, METH_VARARGS, NULL}, { (char *)"VImage_tbmosaic1", _wrap_VImage_tbmosaic1, METH_VARARGS, NULL}, { (char *)"VImage_benchmark", _wrap_VImage_benchmark, METH_VARARGS, NULL}, { (char *)"VImage_benchmark2", _wrap_VImage_benchmark2, METH_VARARGS, NULL}, { (char *)"VImage_benchmarkn", _wrap_VImage_benchmarkn, METH_VARARGS, NULL}, { (char *)"VImage_eye", _wrap_VImage_eye, METH_VARARGS, NULL}, { (char *)"VImage_grey", _wrap_VImage_grey, METH_VARARGS, NULL}, { (char *)"VImage_feye", _wrap_VImage_feye, METH_VARARGS, NULL}, { (char *)"VImage_fgrey", _wrap_VImage_fgrey, METH_VARARGS, NULL}, { (char *)"VImage_fzone", _wrap_VImage_fzone, METH_VARARGS, NULL}, { (char *)"VImage_make_xy", _wrap_VImage_make_xy, METH_VARARGS, NULL}, { (char *)"VImage_sines", _wrap_VImage_sines, METH_VARARGS, NULL}, { (char *)"VImage_zone", _wrap_VImage_zone, METH_VARARGS, NULL}, { (char *)"VImage_rightshift_size", _wrap_VImage_rightshift_size, METH_VARARGS, NULL}, { (char *)"VImage_shrink", _wrap_VImage_shrink, METH_VARARGS, NULL}, { (char *)"VImage_stretch3", _wrap_VImage_stretch3, METH_VARARGS, NULL}, { (char *)"VImage_affinei", _wrap_VImage_affinei, METH_VARARGS, NULL}, { (char *)"VImage_affinei_all", _wrap_VImage_affinei_all, METH_VARARGS, NULL}, { (char *)"VImage_video_test", _wrap_VImage_video_test, METH_VARARGS, NULL}, { (char *)"VImage_video_v4l1", _wrap_VImage_video_v4l1, METH_VARARGS, NULL}, { (char *)"VImage_tobuffer", _wrap_VImage_tobuffer, METH_VARARGS, NULL}, { (char *)"VImage_frombuffer", _wrap_VImage_frombuffer, METH_VARARGS, NULL}, { (char *)"VImage_tostring", _wrap_VImage_tostring, METH_VARARGS, NULL}, { (char *)"VImage_fromstring", _wrap_VImage_fromstring, METH_VARARGS, NULL}, { (char *)"VImage_swigregister", VImage_swigregister, METH_VARARGS, NULL}, { (char *)"im_init_world", _wrap_im_init_world, METH_VARARGS, NULL}, { (char *)"vips_thread_shutdown", _wrap_vips_thread_shutdown, METH_VARARGS, NULL}, { (char *)"im__print_all", _wrap_im__print_all, METH_VARARGS, NULL}, { (char *)"im_col_Lab2XYZ", _wrap_im_col_Lab2XYZ, METH_VARARGS, NULL}, { NULL, NULL, 0, NULL } }; /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ static swig_type_info _swigt__p_GType = {"_p_GType", "GType *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_VBuffer = {"_p_VBuffer", "VBuffer *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p__VipsImage = {"_p__VipsImage", "_VipsImage *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_allocator_type = {"_p_allocator_type", "allocator_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_difference_type = {"_p_difference_type", "difference_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_double = {"_p_double", "double *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_float = {"_p_float", "float *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_gboolean = {"_p_gboolean", "gboolean *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_matrix = {"_p_matrix", "matrix *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_p_PyObject = {"_p_p_PyObject", "PyObject **", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_size_t = {"_p_size_t", "size_t *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_size_type = {"_p_size_type", "size_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__allocatorT_double_t = {"_p_std__allocatorT_double_t", "std::vector< double >::allocator_type *|std::allocator< double > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__allocatorT_int_t = {"_p_std__allocatorT_int_t", "std::vector< int >::allocator_type *|std::allocator< int > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__allocatorT_vips__VImage_t = {"_p_std__allocatorT_vips__VImage_t", "std::vector< vips::VImage >::allocator_type *|std::allocator< vips::VImage > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__invalid_argument = {"_p_std__invalid_argument", "std::invalid_argument *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__vectorT__Tp__Alloc_t = {"_p_std__vectorT__Tp__Alloc_t", "std::vector< _Tp,_Alloc > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__vectorT_double_std__allocatorT_double_t_t = {"_p_std__vectorT_double_std__allocatorT_double_t_t", "std::vector< double,std::allocator< double > > *|std::vector< double > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__vectorT_int_std__allocatorT_int_t_t = {"_p_std__vectorT_int_std__allocatorT_int_t_t", "std::vector< int,std::allocator< int > > *|std::vector< int > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t = {"_p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t", "std::vector< vips::VImage > *|std::vector< vips::VImage,std::allocator< vips::VImage > > *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_swig__SwigPyIterator = {"_p_swig__SwigPyIterator", "swig::SwigPyIterator *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_value_type = {"_p_value_type", "value_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VDMask = {"_p_vips__VDMask", "vips::VDMask *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VDisplay = {"_p_vips__VDisplay", "vips::VDisplay *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VError = {"_p_vips__VError", "vips::VError *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VIMask = {"_p_vips__VIMask", "vips::VIMask *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VImage = {"_p_vips__VImage", "vips::VImage *|std::vector< vips::VImage >::value_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0}; static swig_type_info *swig_type_initial[] = { &_swigt__p_GType, &_swigt__p_VBuffer, &_swigt__p__VipsImage, &_swigt__p_allocator_type, &_swigt__p_char, &_swigt__p_difference_type, &_swigt__p_double, &_swigt__p_float, &_swigt__p_gboolean, &_swigt__p_int, &_swigt__p_matrix, &_swigt__p_p_PyObject, &_swigt__p_p_char, &_swigt__p_size_t, &_swigt__p_size_type, &_swigt__p_std__allocatorT_double_t, &_swigt__p_std__allocatorT_int_t, &_swigt__p_std__allocatorT_vips__VImage_t, &_swigt__p_std__invalid_argument, &_swigt__p_std__vectorT__Tp__Alloc_t, &_swigt__p_std__vectorT_double_std__allocatorT_double_t_t, &_swigt__p_std__vectorT_int_std__allocatorT_int_t_t, &_swigt__p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, &_swigt__p_swig__SwigPyIterator, &_swigt__p_value_type, &_swigt__p_vips__VDMask, &_swigt__p_vips__VDisplay, &_swigt__p_vips__VError, &_swigt__p_vips__VIMask, &_swigt__p_vips__VImage, &_swigt__p_void, }; static swig_cast_info _swigc__p_GType[] = { {&_swigt__p_GType, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_VBuffer[] = { {&_swigt__p_VBuffer, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p__VipsImage[] = { {&_swigt__p__VipsImage, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_allocator_type[] = { {&_swigt__p_allocator_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_difference_type[] = { {&_swigt__p_difference_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_double[] = { {&_swigt__p_double, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_float[] = { {&_swigt__p_float, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_gboolean[] = { {&_swigt__p_gboolean, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_matrix[] = { {&_swigt__p_matrix, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_p_PyObject[] = { {&_swigt__p_p_PyObject, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_p_char[] = { {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_size_t[] = { {&_swigt__p_size_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_size_type[] = { {&_swigt__p_size_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__allocatorT_double_t[] = { {&_swigt__p_std__allocatorT_double_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__allocatorT_int_t[] = { {&_swigt__p_std__allocatorT_int_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__allocatorT_vips__VImage_t[] = { {&_swigt__p_std__allocatorT_vips__VImage_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__invalid_argument[] = { {&_swigt__p_std__invalid_argument, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__vectorT__Tp__Alloc_t[] = { {&_swigt__p_std__vectorT__Tp__Alloc_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__vectorT_double_std__allocatorT_double_t_t[] = { {&_swigt__p_std__vectorT_double_std__allocatorT_double_t_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__vectorT_int_std__allocatorT_int_t_t[] = { {&_swigt__p_std__vectorT_int_std__allocatorT_int_t_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t[] = { {&_swigt__p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_swig__SwigPyIterator[] = { {&_swigt__p_swig__SwigPyIterator, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_value_type[] = { {&_swigt__p_value_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VDMask[] = { {&_swigt__p_vips__VDMask, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VDisplay[] = { {&_swigt__p_vips__VDisplay, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VError[] = { {&_swigt__p_vips__VError, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VIMask[] = { {&_swigt__p_vips__VIMask, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VImage[] = { {&_swigt__p_vips__VImage, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info *swig_cast_initial[] = { _swigc__p_GType, _swigc__p_VBuffer, _swigc__p__VipsImage, _swigc__p_allocator_type, _swigc__p_char, _swigc__p_difference_type, _swigc__p_double, _swigc__p_float, _swigc__p_gboolean, _swigc__p_int, _swigc__p_matrix, _swigc__p_p_PyObject, _swigc__p_p_char, _swigc__p_size_t, _swigc__p_size_type, _swigc__p_std__allocatorT_double_t, _swigc__p_std__allocatorT_int_t, _swigc__p_std__allocatorT_vips__VImage_t, _swigc__p_std__invalid_argument, _swigc__p_std__vectorT__Tp__Alloc_t, _swigc__p_std__vectorT_double_std__allocatorT_double_t_t, _swigc__p_std__vectorT_int_std__allocatorT_int_t_t, _swigc__p_std__vectorT_vips__VImage_std__allocatorT_vips__VImage_t_t, _swigc__p_swig__SwigPyIterator, _swigc__p_value_type, _swigc__p_vips__VDMask, _swigc__p_vips__VDisplay, _swigc__p_vips__VError, _swigc__p_vips__VIMask, _swigc__p_vips__VImage, _swigc__p_void, }; /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ static swig_const_info swig_const_table[] = { {0, 0, 0, 0.0, 0, 0}}; #ifdef __cplusplus } #endif /* ----------------------------------------------------------------------------- * Type initialization: * This problem is tough by the requirement that no dynamic * memory is used. Also, since swig_type_info structures store pointers to * swig_cast_info structures and swig_cast_info structures store pointers back * to swig_type_info structures, we need some lookup code at initialization. * The idea is that swig generates all the structures that are needed. * The runtime then collects these partially filled structures. * The SWIG_InitializeModule function takes these initial arrays out of * swig_module, and does all the lookup, filling in the swig_module.types * array with the correct data and linking the correct swig_cast_info * structures together. * * The generated swig_type_info structures are assigned staticly to an initial * array. We just loop through that array, and handle each type individually. * First we lookup if this type has been already loaded, and if so, use the * loaded structure instead of the generated one. Then we have to fill in the * cast linked list. The cast data is initially stored in something like a * two-dimensional array. Each row corresponds to a type (there are the same * number of rows as there are in the swig_type_initial array). Each entry in * a column is one of the swig_cast_info structures for that type. * The cast_initial array is actually an array of arrays, because each row has * a variable number of columns. So to actually build the cast linked list, * we find the array of casts associated with the type, and loop through it * adding the casts to the list. The one last trick we need to do is making * sure the type pointer in the swig_cast_info struct is correct. * * First off, we lookup the cast->type name to see if it is already loaded. * There are three cases to handle: * 1) If the cast->type has already been loaded AND the type we are adding * casting info to has not been loaded (it is in this module), THEN we * replace the cast->type pointer with the type pointer that has already * been loaded. * 2) If BOTH types (the one we are adding casting info to, and the * cast->type) are loaded, THEN the cast info has already been loaded by * the previous module so we just ignore it. * 3) Finally, if cast->type has not already been loaded, then we add that * swig_cast_info to the linked list (because the cast->type) pointer will * be correct. * ----------------------------------------------------------------------------- */ #ifdef __cplusplus extern "C" { #if 0 } /* c-mode */ #endif #endif #if 0 #define SWIGRUNTIME_DEBUG #endif SWIGRUNTIME void SWIG_InitializeModule(void *clientdata) { size_t i; swig_module_info *module_head, *iter; int found, init; /* check to see if the circular list has been setup, if not, set it up */ if (swig_module.next==0) { /* Initialize the swig_module */ swig_module.type_initial = swig_type_initial; swig_module.cast_initial = swig_cast_initial; swig_module.next = &swig_module; init = 1; } else { init = 0; } /* Try and load any already created modules */ module_head = SWIG_GetModule(clientdata); if (!module_head) { /* This is the first module loaded for this interpreter */ /* so set the swig module into the interpreter */ SWIG_SetModule(clientdata, &swig_module); module_head = &swig_module; } else { /* the interpreter has loaded a SWIG module, but has it loaded this one? */ found=0; iter=module_head; do { if (iter==&swig_module) { found=1; break; } iter=iter->next; } while (iter!= module_head); /* if the is found in the list, then all is done and we may leave */ if (found) return; /* otherwise we must add out module into the list */ swig_module.next = module_head->next; module_head->next = &swig_module; } /* When multiple interpreters are used, a module could have already been initialized in a different interpreter, but not yet have a pointer in this interpreter. In this case, we do not want to continue adding types... everything should be set up already */ if (init == 0) return; /* Now work on filling in swig_module.types */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: size %d\n", swig_module.size); #endif for (i = 0; i < swig_module.size; ++i) { swig_type_info *type = 0; swig_type_info *ret; swig_cast_info *cast; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); #endif /* if there is another module already loaded */ if (swig_module.next != &swig_module) { type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); } if (type) { /* Overwrite clientdata field */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: found type %s\n", type->name); #endif if (swig_module.type_initial[i]->clientdata) { type->clientdata = swig_module.type_initial[i]->clientdata; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); #endif } } else { type = swig_module.type_initial[i]; } /* Insert casting types */ cast = swig_module.cast_initial[i]; while (cast->type) { /* Don't need to add information already in the list */ ret = 0; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); #endif if (swig_module.next != &swig_module) { ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); #ifdef SWIGRUNTIME_DEBUG if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); #endif } if (ret) { if (type == swig_module.type_initial[i]) { #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: skip old type %s\n", ret->name); #endif cast->type = ret; ret = 0; } else { /* Check for casting already in the list */ swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); #ifdef SWIGRUNTIME_DEBUG if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); #endif if (!ocast) ret = 0; } } if (!ret) { #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); #endif if (type->cast) { type->cast->prev = cast; cast->next = type->cast; } type->cast = cast; } cast++; } /* Set entry in modules->types array equal to the type */ swig_module.types[i] = type; } swig_module.types[i] = 0; #ifdef SWIGRUNTIME_DEBUG printf("**** SWIG_InitializeModule: Cast List ******\n"); for (i = 0; i < swig_module.size; ++i) { int j = 0; swig_cast_info *cast = swig_module.cast_initial[i]; printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); while (cast->type) { printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); cast++; ++j; } printf("---- Total casts: %d\n",j); } printf("**** SWIG_InitializeModule: Cast List ******\n"); #endif } /* This function will propagate the clientdata field of type to * any new swig_type_info structures that have been added into the list * of equivalent types. It is like calling * SWIG_TypeClientData(type, clientdata) a second time. */ SWIGRUNTIME void SWIG_PropagateClientData(void) { size_t i; swig_cast_info *equiv; static int init_run = 0; if (init_run) return; init_run = 1; for (i = 0; i < swig_module.size; i++) { if (swig_module.types[i]->clientdata) { equiv = swig_module.types[i]->cast; while (equiv) { if (!equiv->converter) { if (equiv->type && !equiv->type->clientdata) SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); } equiv = equiv->next; } } } } #ifdef __cplusplus #if 0 { /* c-mode */ #endif } #endif #ifdef __cplusplus extern "C" { #endif /* Python-specific SWIG API */ #define SWIG_newvarlink() SWIG_Python_newvarlink() #define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) #define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) /* ----------------------------------------------------------------------------- * global variable support code. * ----------------------------------------------------------------------------- */ typedef struct swig_globalvar { char *name; /* Name of global variable */ PyObject *(*get_attr)(void); /* Return the current value */ int (*set_attr)(PyObject *); /* Set the value */ struct swig_globalvar *next; } swig_globalvar; typedef struct swig_varlinkobject { PyObject_HEAD swig_globalvar *vars; } swig_varlinkobject; SWIGINTERN PyObject * swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_InternFromString(""); #else return PyString_FromString(""); #endif } SWIGINTERN PyObject * swig_varlink_str(swig_varlinkobject *v) { #if PY_VERSION_HEX >= 0x03000000 PyObject *str = PyUnicode_InternFromString("("); PyObject *tail; PyObject *joined; swig_globalvar *var; for (var = v->vars; var; var=var->next) { tail = PyUnicode_FromString(var->name); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; if (var->next) { tail = PyUnicode_InternFromString(", "); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; } } tail = PyUnicode_InternFromString(")"); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; #else PyObject *str = PyString_FromString("("); swig_globalvar *var; for (var = v->vars; var; var=var->next) { PyString_ConcatAndDel(&str,PyString_FromString(var->name)); if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); } PyString_ConcatAndDel(&str,PyString_FromString(")")); #endif return str; } SWIGINTERN int swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { char *tmp; PyObject *str = swig_varlink_str(v); fprintf(fp,"Swig global variables "); fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str)); SWIG_Python_str_DelForPy3(tmp); Py_DECREF(str); return 0; } SWIGINTERN void swig_varlink_dealloc(swig_varlinkobject *v) { swig_globalvar *var = v->vars; while (var) { swig_globalvar *n = var->next; free(var->name); free(var); var = n; } } SWIGINTERN PyObject * swig_varlink_getattr(swig_varlinkobject *v, char *n) { PyObject *res = NULL; swig_globalvar *var = v->vars; while (var) { if (strcmp(var->name,n) == 0) { res = (*var->get_attr)(); break; } var = var->next; } if (res == NULL && !PyErr_Occurred()) { PyErr_SetString(PyExc_NameError,"Unknown C global variable"); } return res; } SWIGINTERN int swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { int res = 1; swig_globalvar *var = v->vars; while (var) { if (strcmp(var->name,n) == 0) { res = (*var->set_attr)(p); break; } var = var->next; } if (res == 1 && !PyErr_Occurred()) { PyErr_SetString(PyExc_NameError,"Unknown C global variable"); } return res; } SWIGINTERN PyTypeObject* swig_varlink_type(void) { static char varlink__doc__[] = "Swig var link object"; static PyTypeObject varlink_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX >= 0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"swigvarlink", /* tp_name */ sizeof(swig_varlinkobject), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor) swig_varlink_dealloc, /* tp_dealloc */ (printfunc) swig_varlink_print, /* tp_print */ (getattrfunc) swig_varlink_getattr, /* tp_getattr */ (setattrfunc) swig_varlink_setattr, /* tp_setattr */ 0, /* tp_compare */ (reprfunc) swig_varlink_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ (reprfunc) swig_varlink_str, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ 0, /* tp_flags */ varlink__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; varlink_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 varlink_type.ob_type = &PyType_Type; #else if (PyType_Ready(&varlink_type) < 0) return NULL; #endif } return &varlink_type; } /* Create a variable linking object for use later */ SWIGINTERN PyObject * SWIG_Python_newvarlink(void) { swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); if (result) { result->vars = 0; } return ((PyObject*) result); } SWIGINTERN void SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { swig_varlinkobject *v = (swig_varlinkobject *) p; swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); if (gv) { size_t size = strlen(name)+1; gv->name = (char *)malloc(size); if (gv->name) { strncpy(gv->name,name,size); gv->get_attr = get_attr; gv->set_attr = set_attr; gv->next = v->vars; } } v->vars = gv; } SWIGINTERN PyObject * SWIG_globals(void) { static PyObject *_SWIG_globals = 0; if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink(); return _SWIG_globals; } /* ----------------------------------------------------------------------------- * constants/methods manipulation * ----------------------------------------------------------------------------- */ /* Install Constants */ SWIGINTERN void SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { PyObject *obj = 0; size_t i; for (i = 0; constants[i].type; ++i) { switch(constants[i].type) { case SWIG_PY_POINTER: obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); break; case SWIG_PY_BINARY: obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); break; default: obj = 0; break; } if (obj) { PyDict_SetItemString(d, constants[i].name, obj); Py_DECREF(obj); } } } /* -----------------------------------------------------------------------------*/ /* Fix SwigMethods to carry the callback ptrs when needed */ /* -----------------------------------------------------------------------------*/ SWIGINTERN void SWIG_Python_FixMethods(PyMethodDef *methods, swig_const_info *const_table, swig_type_info **types, swig_type_info **types_initial) { size_t i; for (i = 0; methods[i].ml_name; ++i) { const char *c = methods[i].ml_doc; if (c && (c = strstr(c, "swig_ptr: "))) { int j; swig_const_info *ci = 0; const char *name = c + 10; for (j = 0; const_table[j].type; ++j) { if (strncmp(const_table[j].name, name, strlen(const_table[j].name)) == 0) { ci = &(const_table[j]); break; } } if (ci) { void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; if (ptr) { size_t shift = (ci->ptype) - types; swig_type_info *ty = types_initial[shift]; size_t ldoc = (c - methods[i].ml_doc); size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; char *ndoc = (char*)malloc(ldoc + lptr + 10); if (ndoc) { char *buff = ndoc; strncpy(buff, methods[i].ml_doc, ldoc); buff += ldoc; strncpy(buff, "swig_ptr: ", 10); buff += 10; SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); methods[i].ml_doc = ndoc; } } } } } } #ifdef __cplusplus } #endif /* -----------------------------------------------------------------------------* * Partial Init method * -----------------------------------------------------------------------------*/ #ifdef __cplusplus extern "C" #endif SWIGEXPORT #if PY_VERSION_HEX >= 0x03000000 PyObject* #else void #endif SWIG_init(void) { PyObject *m, *d, *md; #if PY_VERSION_HEX >= 0x03000000 static struct PyModuleDef SWIG_module = { # if PY_VERSION_HEX >= 0x03020000 PyModuleDef_HEAD_INIT, # else { PyObject_HEAD_INIT(NULL) NULL, /* m_init */ 0, /* m_index */ NULL, /* m_copy */ }, # endif (char *) SWIG_name, NULL, -1, SwigMethods, NULL, NULL, NULL, NULL }; #endif #if defined(SWIGPYTHON_BUILTIN) static SwigPyClientData SwigPyObject_clientdata = { 0, 0, 0, 0, 0, 0, 0 }; static PyGetSetDef this_getset_def = { (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL }; static SwigPyGetSet thisown_getset_closure = { (PyCFunction) SwigPyObject_own, (PyCFunction) SwigPyObject_own }; static PyGetSetDef thisown_getset_def = { (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure }; PyObject *metatype_args; PyTypeObject *builtin_pytype; int builtin_base_count; swig_type_info *builtin_basetype; PyObject *tuple; PyGetSetDescrObject *static_getset; PyTypeObject *metatype; SwigPyClientData *cd; PyObject *public_interface, *public_symbol; PyObject *this_descr; PyObject *thisown_descr; int i; (void)builtin_pytype; (void)builtin_base_count; (void)builtin_basetype; (void)tuple; (void)static_getset; /* metatype is used to implement static member variables. */ metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type); assert(metatype_args); metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL); assert(metatype); Py_DECREF(metatype_args); metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro; assert(PyType_Ready(metatype) >= 0); #endif /* Fix SwigMethods to carry the callback ptrs when needed */ SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); #if PY_VERSION_HEX >= 0x03000000 m = PyModule_Create(&SWIG_module); #else m = Py_InitModule((char *) SWIG_name, SwigMethods); #endif md = d = PyModule_GetDict(m); (void)md; SWIG_InitializeModule(0); #ifdef SWIGPYTHON_BUILTIN SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject"); assert(SwigPyObject_stype); cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; if (!cd) { SwigPyObject_stype->clientdata = &SwigPyObject_clientdata; SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce(); } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) { PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules."); # if PY_VERSION_HEX >= 0x03000000 return NULL; # else return; # endif } /* All objects have a 'this' attribute */ this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def); (void)this_descr; /* All objects have a 'thisown' attribute */ thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def); (void)thisown_descr; public_interface = PyList_New(0); public_symbol = 0; (void)public_symbol; PyDict_SetItemString(md, "__all__", public_interface); Py_DECREF(public_interface); for (i = 0; SwigMethods[i].ml_name != NULL; ++i) SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name); for (i = 0; swig_const_table[i].name != 0; ++i) SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name); #endif SWIG_InstallConstants(d,swig_const_table); SWIG_Python_SetConstant(d, "VImage_MULTIBAND",SWIG_From_int(static_cast< int >(vips::VImage::MULTIBAND))); SWIG_Python_SetConstant(d, "VImage_B_W",SWIG_From_int(static_cast< int >(vips::VImage::B_W))); SWIG_Python_SetConstant(d, "VImage_LUMINACE",SWIG_From_int(static_cast< int >(vips::VImage::LUMINACE))); SWIG_Python_SetConstant(d, "VImage_XRAY",SWIG_From_int(static_cast< int >(vips::VImage::XRAY))); SWIG_Python_SetConstant(d, "VImage_IR",SWIG_From_int(static_cast< int >(vips::VImage::IR))); SWIG_Python_SetConstant(d, "VImage_YUV",SWIG_From_int(static_cast< int >(vips::VImage::YUV))); SWIG_Python_SetConstant(d, "VImage_RED_ONLY",SWIG_From_int(static_cast< int >(vips::VImage::RED_ONLY))); SWIG_Python_SetConstant(d, "VImage_GREEN_ONLY",SWIG_From_int(static_cast< int >(vips::VImage::GREEN_ONLY))); SWIG_Python_SetConstant(d, "VImage_BLUE_ONLY",SWIG_From_int(static_cast< int >(vips::VImage::BLUE_ONLY))); SWIG_Python_SetConstant(d, "VImage_POWER_SPECTRUM",SWIG_From_int(static_cast< int >(vips::VImage::POWER_SPECTRUM))); SWIG_Python_SetConstant(d, "VImage_HISTOGRAM",SWIG_From_int(static_cast< int >(vips::VImage::HISTOGRAM))); SWIG_Python_SetConstant(d, "VImage_LUT",SWIG_From_int(static_cast< int >(vips::VImage::LUT))); SWIG_Python_SetConstant(d, "VImage_XYZ",SWIG_From_int(static_cast< int >(vips::VImage::XYZ))); SWIG_Python_SetConstant(d, "VImage_LAB",SWIG_From_int(static_cast< int >(vips::VImage::LAB))); SWIG_Python_SetConstant(d, "VImage_CMC",SWIG_From_int(static_cast< int >(vips::VImage::CMC))); SWIG_Python_SetConstant(d, "VImage_CMYK",SWIG_From_int(static_cast< int >(vips::VImage::CMYK))); SWIG_Python_SetConstant(d, "VImage_LABQ",SWIG_From_int(static_cast< int >(vips::VImage::LABQ))); SWIG_Python_SetConstant(d, "VImage_RGB",SWIG_From_int(static_cast< int >(vips::VImage::RGB))); SWIG_Python_SetConstant(d, "VImage_UCS",SWIG_From_int(static_cast< int >(vips::VImage::UCS))); SWIG_Python_SetConstant(d, "VImage_LCH",SWIG_From_int(static_cast< int >(vips::VImage::LCH))); SWIG_Python_SetConstant(d, "VImage_LABS",SWIG_From_int(static_cast< int >(vips::VImage::LABS))); SWIG_Python_SetConstant(d, "VImage_sRGB",SWIG_From_int(static_cast< int >(vips::VImage::sRGB))); SWIG_Python_SetConstant(d, "VImage_YXY",SWIG_From_int(static_cast< int >(vips::VImage::YXY))); SWIG_Python_SetConstant(d, "VImage_FOURIER",SWIG_From_int(static_cast< int >(vips::VImage::FOURIER))); SWIG_Python_SetConstant(d, "VImage_RGB16",SWIG_From_int(static_cast< int >(vips::VImage::RGB16))); SWIG_Python_SetConstant(d, "VImage_GREY16",SWIG_From_int(static_cast< int >(vips::VImage::GREY16))); SWIG_Python_SetConstant(d, "VImage_FMTNOTSET",SWIG_From_int(static_cast< int >(vips::VImage::FMTNOTSET))); SWIG_Python_SetConstant(d, "VImage_FMTUCHAR",SWIG_From_int(static_cast< int >(vips::VImage::FMTUCHAR))); SWIG_Python_SetConstant(d, "VImage_FMTCHAR",SWIG_From_int(static_cast< int >(vips::VImage::FMTCHAR))); SWIG_Python_SetConstant(d, "VImage_FMTUSHORT",SWIG_From_int(static_cast< int >(vips::VImage::FMTUSHORT))); SWIG_Python_SetConstant(d, "VImage_FMTSHORT",SWIG_From_int(static_cast< int >(vips::VImage::FMTSHORT))); SWIG_Python_SetConstant(d, "VImage_FMTUINT",SWIG_From_int(static_cast< int >(vips::VImage::FMTUINT))); SWIG_Python_SetConstant(d, "VImage_FMTINT",SWIG_From_int(static_cast< int >(vips::VImage::FMTINT))); SWIG_Python_SetConstant(d, "VImage_FMTFLOAT",SWIG_From_int(static_cast< int >(vips::VImage::FMTFLOAT))); SWIG_Python_SetConstant(d, "VImage_FMTCOMPLEX",SWIG_From_int(static_cast< int >(vips::VImage::FMTCOMPLEX))); SWIG_Python_SetConstant(d, "VImage_FMTDOUBLE",SWIG_From_int(static_cast< int >(vips::VImage::FMTDOUBLE))); SWIG_Python_SetConstant(d, "VImage_FMTDPCOMPLEX",SWIG_From_int(static_cast< int >(vips::VImage::FMTDPCOMPLEX))); SWIG_Python_SetConstant(d, "VImage_NOCODING",SWIG_From_int(static_cast< int >(vips::VImage::NOCODING))); SWIG_Python_SetConstant(d, "VImage_COLQUANT",SWIG_From_int(static_cast< int >(vips::VImage::COLQUANT))); SWIG_Python_SetConstant(d, "VImage_LABPACK",SWIG_From_int(static_cast< int >(vips::VImage::LABPACK))); SWIG_Python_SetConstant(d, "VImage_LABPACK_COMPRESSED",SWIG_From_int(static_cast< int >(vips::VImage::LABPACK_COMPRESSED))); SWIG_Python_SetConstant(d, "VImage_RGB_COMPRESSED",SWIG_From_int(static_cast< int >(vips::VImage::RGB_COMPRESSED))); SWIG_Python_SetConstant(d, "VImage_LUM_COMPRESSED",SWIG_From_int(static_cast< int >(vips::VImage::LUM_COMPRESSED))); SWIG_Python_SetConstant(d, "VImage_RAD",SWIG_From_int(static_cast< int >(vips::VImage::RAD))); SWIG_Python_SetConstant(d, "VImage_NO_COMPRESSION",SWIG_From_int(static_cast< int >(vips::VImage::NO_COMPRESSION))); SWIG_Python_SetConstant(d, "VImage_TCSF_COMPRESSION",SWIG_From_int(static_cast< int >(vips::VImage::TCSF_COMPRESSION))); SWIG_Python_SetConstant(d, "VImage_JPEG_COMPRESSION",SWIG_From_int(static_cast< int >(vips::VImage::JPEG_COMPRESSION))); { Args *args; args = args_new (); #ifdef DEBUG printf ("on startup:\n"); args_print (args); #endif /*DEBUG*/ if (im_init_world (args->argv[0])) { args_free (args); vips_fatal ("can't initialise module vips"); } /* Now parse any GOptions. */ GError *error = NULL; GOptionContext *context; context = g_option_context_new ("- vips"); g_option_context_add_group (context, im_get_option_group()); g_option_context_set_ignore_unknown_options (context, TRUE); if (!g_option_context_parse (context, &args->argc, &args->argv, &error)) { g_option_context_free (context); args_free (args); im_error ("vipsmodule", "%s", error->message); g_error_free (error); vips_fatal ("can't initialise module vips"); } g_option_context_free (context); #ifdef DEBUG printf ("after parse:\n"); args_print (args); #endif /*DEBUG*/ // Write (possibly) modified argc/argv back again. if (args->argv) PySys_SetArgv (args->argc, args->argv); args_free (args); } #if PY_VERSION_HEX >= 0x03000000 return m; #else return; #endif } vips-8.2.2/swig/vipsCC/VImage.py0000664000175000017500000014616512651721401013325 00000000000000# This file was automatically generated by SWIG (http://www.swig.org). # Version 2.0.12 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. from sys import version_info if version_info >= (2,6,0): def swig_import_helper(): from os.path import dirname import imp fp = None try: fp, pathname, description = imp.find_module('vimagemodule', [dirname(__file__)]) except ImportError: import vimagemodule return vimagemodule if fp is not None: try: _mod = imp.load_module('vimagemodule', fp, pathname, description) finally: fp.close() return _mod vimagemodule = swig_import_helper() del swig_import_helper else: import vimagemodule del version_info try: _swig_property = property except NameError: pass # Python < 2.2 doesn't have 'property'. def _swig_setattr_nondynamic(self,class_type,name,value,static=1): if (name == "thisown"): return self.this.own(value) if (name == "this"): if type(value).__name__ == 'SwigPyObject': self.__dict__[name] = value return method = class_type.__swig_setmethods__.get(name,None) if method: return method(self,value) if (not static): self.__dict__[name] = value else: raise AttributeError("You cannot add attributes to %s" % self) def _swig_setattr(self,class_type,name,value): return _swig_setattr_nondynamic(self,class_type,name,value,0) def _swig_getattr(self,class_type,name): if (name == "thisown"): return self.this.own() method = class_type.__swig_getmethods__.get(name,None) if method: return method(self) raise AttributeError(name) def _swig_repr(self): try: strthis = "proxy of " + self.this.__repr__() except: strthis = "" return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) try: _object = object _newclass = 1 except AttributeError: class _object : pass _newclass = 0 class SwigPyIterator(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name) def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined - class is abstract") __repr__ = _swig_repr __swig_destroy__ = vimagemodule.delete_SwigPyIterator __del__ = lambda self : None; def value(self): return vimagemodule.SwigPyIterator_value(self) def incr(self, n=1): return vimagemodule.SwigPyIterator_incr(self, n) def decr(self, n=1): return vimagemodule.SwigPyIterator_decr(self, n) def distance(self, *args): return vimagemodule.SwigPyIterator_distance(self, *args) def equal(self, *args): return vimagemodule.SwigPyIterator_equal(self, *args) def copy(self): return vimagemodule.SwigPyIterator_copy(self) def next(self): return vimagemodule.SwigPyIterator_next(self) def __next__(self): return vimagemodule.SwigPyIterator___next__(self) def previous(self): return vimagemodule.SwigPyIterator_previous(self) def advance(self, *args): return vimagemodule.SwigPyIterator_advance(self, *args) def __eq__(self, *args): return vimagemodule.SwigPyIterator___eq__(self, *args) def __ne__(self, *args): return vimagemodule.SwigPyIterator___ne__(self, *args) def __iadd__(self, *args): return vimagemodule.SwigPyIterator___iadd__(self, *args) def __isub__(self, *args): return vimagemodule.SwigPyIterator___isub__(self, *args) def __add__(self, *args): return vimagemodule.SwigPyIterator___add__(self, *args) def __sub__(self, *args): return vimagemodule.SwigPyIterator___sub__(self, *args) def __iter__(self): return self SwigPyIterator_swigregister = vimagemodule.SwigPyIterator_swigregister SwigPyIterator_swigregister(SwigPyIterator) import VError import VMask import VDisplay class IntVector(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, IntVector, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, IntVector, name) __repr__ = _swig_repr def iterator(self): return vimagemodule.IntVector_iterator(self) def __iter__(self): return self.iterator() def __nonzero__(self): return vimagemodule.IntVector___nonzero__(self) def __bool__(self): return vimagemodule.IntVector___bool__(self) def __len__(self): return vimagemodule.IntVector___len__(self) def pop(self): return vimagemodule.IntVector_pop(self) def __getslice__(self, *args): return vimagemodule.IntVector___getslice__(self, *args) def __setslice__(self, *args): return vimagemodule.IntVector___setslice__(self, *args) def __delslice__(self, *args): return vimagemodule.IntVector___delslice__(self, *args) def __delitem__(self, *args): return vimagemodule.IntVector___delitem__(self, *args) def __getitem__(self, *args): return vimagemodule.IntVector___getitem__(self, *args) def __setitem__(self, *args): return vimagemodule.IntVector___setitem__(self, *args) def append(self, *args): return vimagemodule.IntVector_append(self, *args) def empty(self): return vimagemodule.IntVector_empty(self) def size(self): return vimagemodule.IntVector_size(self) def clear(self): return vimagemodule.IntVector_clear(self) def swap(self, *args): return vimagemodule.IntVector_swap(self, *args) def get_allocator(self): return vimagemodule.IntVector_get_allocator(self) def begin(self): return vimagemodule.IntVector_begin(self) def end(self): return vimagemodule.IntVector_end(self) def rbegin(self): return vimagemodule.IntVector_rbegin(self) def rend(self): return vimagemodule.IntVector_rend(self) def pop_back(self): return vimagemodule.IntVector_pop_back(self) def erase(self, *args): return vimagemodule.IntVector_erase(self, *args) def __init__(self, *args): this = vimagemodule.new_IntVector(*args) try: self.this.append(this) except: self.this = this def push_back(self, *args): return vimagemodule.IntVector_push_back(self, *args) def front(self): return vimagemodule.IntVector_front(self) def back(self): return vimagemodule.IntVector_back(self) def assign(self, *args): return vimagemodule.IntVector_assign(self, *args) def resize(self, *args): return vimagemodule.IntVector_resize(self, *args) def insert(self, *args): return vimagemodule.IntVector_insert(self, *args) def reserve(self, *args): return vimagemodule.IntVector_reserve(self, *args) def capacity(self): return vimagemodule.IntVector_capacity(self) __swig_destroy__ = vimagemodule.delete_IntVector __del__ = lambda self : None; IntVector_swigregister = vimagemodule.IntVector_swigregister IntVector_swigregister(IntVector) class DoubleVector(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, DoubleVector, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, DoubleVector, name) __repr__ = _swig_repr def iterator(self): return vimagemodule.DoubleVector_iterator(self) def __iter__(self): return self.iterator() def __nonzero__(self): return vimagemodule.DoubleVector___nonzero__(self) def __bool__(self): return vimagemodule.DoubleVector___bool__(self) def __len__(self): return vimagemodule.DoubleVector___len__(self) def pop(self): return vimagemodule.DoubleVector_pop(self) def __getslice__(self, *args): return vimagemodule.DoubleVector___getslice__(self, *args) def __setslice__(self, *args): return vimagemodule.DoubleVector___setslice__(self, *args) def __delslice__(self, *args): return vimagemodule.DoubleVector___delslice__(self, *args) def __delitem__(self, *args): return vimagemodule.DoubleVector___delitem__(self, *args) def __getitem__(self, *args): return vimagemodule.DoubleVector___getitem__(self, *args) def __setitem__(self, *args): return vimagemodule.DoubleVector___setitem__(self, *args) def append(self, *args): return vimagemodule.DoubleVector_append(self, *args) def empty(self): return vimagemodule.DoubleVector_empty(self) def size(self): return vimagemodule.DoubleVector_size(self) def clear(self): return vimagemodule.DoubleVector_clear(self) def swap(self, *args): return vimagemodule.DoubleVector_swap(self, *args) def get_allocator(self): return vimagemodule.DoubleVector_get_allocator(self) def begin(self): return vimagemodule.DoubleVector_begin(self) def end(self): return vimagemodule.DoubleVector_end(self) def rbegin(self): return vimagemodule.DoubleVector_rbegin(self) def rend(self): return vimagemodule.DoubleVector_rend(self) def pop_back(self): return vimagemodule.DoubleVector_pop_back(self) def erase(self, *args): return vimagemodule.DoubleVector_erase(self, *args) def __init__(self, *args): this = vimagemodule.new_DoubleVector(*args) try: self.this.append(this) except: self.this = this def push_back(self, *args): return vimagemodule.DoubleVector_push_back(self, *args) def front(self): return vimagemodule.DoubleVector_front(self) def back(self): return vimagemodule.DoubleVector_back(self) def assign(self, *args): return vimagemodule.DoubleVector_assign(self, *args) def resize(self, *args): return vimagemodule.DoubleVector_resize(self, *args) def insert(self, *args): return vimagemodule.DoubleVector_insert(self, *args) def reserve(self, *args): return vimagemodule.DoubleVector_reserve(self, *args) def capacity(self): return vimagemodule.DoubleVector_capacity(self) __swig_destroy__ = vimagemodule.delete_DoubleVector __del__ = lambda self : None; DoubleVector_swigregister = vimagemodule.DoubleVector_swigregister DoubleVector_swigregister(DoubleVector) class ImageVector(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, ImageVector, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, ImageVector, name) __repr__ = _swig_repr def iterator(self): return vimagemodule.ImageVector_iterator(self) def __iter__(self): return self.iterator() def __nonzero__(self): return vimagemodule.ImageVector___nonzero__(self) def __bool__(self): return vimagemodule.ImageVector___bool__(self) def __len__(self): return vimagemodule.ImageVector___len__(self) def pop(self): return vimagemodule.ImageVector_pop(self) def __getslice__(self, *args): return vimagemodule.ImageVector___getslice__(self, *args) def __setslice__(self, *args): return vimagemodule.ImageVector___setslice__(self, *args) def __delslice__(self, *args): return vimagemodule.ImageVector___delslice__(self, *args) def __delitem__(self, *args): return vimagemodule.ImageVector___delitem__(self, *args) def __getitem__(self, *args): return vimagemodule.ImageVector___getitem__(self, *args) def __setitem__(self, *args): return vimagemodule.ImageVector___setitem__(self, *args) def append(self, *args): return vimagemodule.ImageVector_append(self, *args) def empty(self): return vimagemodule.ImageVector_empty(self) def size(self): return vimagemodule.ImageVector_size(self) def clear(self): return vimagemodule.ImageVector_clear(self) def swap(self, *args): return vimagemodule.ImageVector_swap(self, *args) def get_allocator(self): return vimagemodule.ImageVector_get_allocator(self) def begin(self): return vimagemodule.ImageVector_begin(self) def end(self): return vimagemodule.ImageVector_end(self) def rbegin(self): return vimagemodule.ImageVector_rbegin(self) def rend(self): return vimagemodule.ImageVector_rend(self) def pop_back(self): return vimagemodule.ImageVector_pop_back(self) def erase(self, *args): return vimagemodule.ImageVector_erase(self, *args) def __init__(self, *args): this = vimagemodule.new_ImageVector(*args) try: self.this.append(this) except: self.this = this def push_back(self, *args): return vimagemodule.ImageVector_push_back(self, *args) def front(self): return vimagemodule.ImageVector_front(self) def back(self): return vimagemodule.ImageVector_back(self) def assign(self, *args): return vimagemodule.ImageVector_assign(self, *args) def resize(self, *args): return vimagemodule.ImageVector_resize(self, *args) def insert(self, *args): return vimagemodule.ImageVector_insert(self, *args) def reserve(self, *args): return vimagemodule.ImageVector_reserve(self, *args) def capacity(self): return vimagemodule.ImageVector_capacity(self) __swig_destroy__ = vimagemodule.delete_ImageVector __del__ = lambda self : None; ImageVector_swigregister = vimagemodule.ImageVector_swigregister ImageVector_swigregister(ImageVector) def init(argv0="nothing"): return vimagemodule.init(argv0) init = vimagemodule.init def thread_shutdown(): return vimagemodule.thread_shutdown() thread_shutdown = vimagemodule.thread_shutdown def shutdown(): return vimagemodule.shutdown() shutdown = vimagemodule.shutdown class VImage(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, VImage, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, VImage, name) __repr__ = _swig_repr __swig_getmethods__["print_all"] = lambda x: vimagemodule.VImage_print_all if _newclass:print_all = staticmethod(vimagemodule.VImage_print_all) MULTIBAND = vimagemodule.VImage_MULTIBAND B_W = vimagemodule.VImage_B_W LUMINACE = vimagemodule.VImage_LUMINACE XRAY = vimagemodule.VImage_XRAY IR = vimagemodule.VImage_IR YUV = vimagemodule.VImage_YUV RED_ONLY = vimagemodule.VImage_RED_ONLY GREEN_ONLY = vimagemodule.VImage_GREEN_ONLY BLUE_ONLY = vimagemodule.VImage_BLUE_ONLY POWER_SPECTRUM = vimagemodule.VImage_POWER_SPECTRUM HISTOGRAM = vimagemodule.VImage_HISTOGRAM LUT = vimagemodule.VImage_LUT XYZ = vimagemodule.VImage_XYZ LAB = vimagemodule.VImage_LAB CMC = vimagemodule.VImage_CMC CMYK = vimagemodule.VImage_CMYK LABQ = vimagemodule.VImage_LABQ RGB = vimagemodule.VImage_RGB UCS = vimagemodule.VImage_UCS LCH = vimagemodule.VImage_LCH LABS = vimagemodule.VImage_LABS sRGB = vimagemodule.VImage_sRGB YXY = vimagemodule.VImage_YXY FOURIER = vimagemodule.VImage_FOURIER RGB16 = vimagemodule.VImage_RGB16 GREY16 = vimagemodule.VImage_GREY16 FMTNOTSET = vimagemodule.VImage_FMTNOTSET FMTUCHAR = vimagemodule.VImage_FMTUCHAR FMTCHAR = vimagemodule.VImage_FMTCHAR FMTUSHORT = vimagemodule.VImage_FMTUSHORT FMTSHORT = vimagemodule.VImage_FMTSHORT FMTUINT = vimagemodule.VImage_FMTUINT FMTINT = vimagemodule.VImage_FMTINT FMTFLOAT = vimagemodule.VImage_FMTFLOAT FMTCOMPLEX = vimagemodule.VImage_FMTCOMPLEX FMTDOUBLE = vimagemodule.VImage_FMTDOUBLE FMTDPCOMPLEX = vimagemodule.VImage_FMTDPCOMPLEX NOCODING = vimagemodule.VImage_NOCODING COLQUANT = vimagemodule.VImage_COLQUANT LABPACK = vimagemodule.VImage_LABPACK LABPACK_COMPRESSED = vimagemodule.VImage_LABPACK_COMPRESSED RGB_COMPRESSED = vimagemodule.VImage_RGB_COMPRESSED LUM_COMPRESSED = vimagemodule.VImage_LUM_COMPRESSED RAD = vimagemodule.VImage_RAD NO_COMPRESSION = vimagemodule.VImage_NO_COMPRESSION TCSF_COMPRESSION = vimagemodule.VImage_TCSF_COMPRESSION JPEG_COMPRESSION = vimagemodule.VImage_JPEG_COMPRESSION __swig_getmethods__["convert2disc"] = lambda x: vimagemodule.VImage_convert2disc if _newclass:convert2disc = staticmethod(vimagemodule.VImage_convert2disc) def __init__(self, *args): this = vimagemodule.new_VImage(*args) try: self.this.append(this) except: self.this = this def __assign__(self, *args): return vimagemodule.VImage___assign__(self, *args) __swig_destroy__ = vimagemodule.delete_VImage __del__ = lambda self : None; def image(self): return vimagemodule.VImage_image(self) def data(self): return vimagemodule.VImage_data(self) def write(self, *args): return vimagemodule.VImage_write(self, *args) def debug_print(self): return vimagemodule.VImage_debug_print(self) def Xsize(self): return vimagemodule.VImage_Xsize(self) def Ysize(self): return vimagemodule.VImage_Ysize(self) def Bands(self): return vimagemodule.VImage_Bands(self) def BandFmt(self): return vimagemodule.VImage_BandFmt(self) def Coding(self): return vimagemodule.VImage_Coding(self) def Type(self): return vimagemodule.VImage_Type(self) def Xres(self): return vimagemodule.VImage_Xres(self) def Yres(self): return vimagemodule.VImage_Yres(self) def Length(self): return vimagemodule.VImage_Length(self) def Compression(self): return vimagemodule.VImage_Compression(self) def Level(self): return vimagemodule.VImage_Level(self) def Xoffset(self): return vimagemodule.VImage_Xoffset(self) def Yoffset(self): return vimagemodule.VImage_Yoffset(self) def filename(self): return vimagemodule.VImage_filename(self) def Hist(self): return vimagemodule.VImage_Hist(self) def hough_circle(self, *args): return vimagemodule.VImage_hough_circle(self, *args) def meta_remove(self, *args): return vimagemodule.VImage_meta_remove(self, *args) def meta_get_typeof(self, *args): return vimagemodule.VImage_meta_get_typeof(self, *args) def meta_get_int(self, *args): return vimagemodule.VImage_meta_get_int(self, *args) def meta_get_double(self, *args): return vimagemodule.VImage_meta_get_double(self, *args) def meta_get_string(self, *args): return vimagemodule.VImage_meta_get_string(self, *args) def meta_get_area(self, *args): return vimagemodule.VImage_meta_get_area(self, *args) def meta_get_blob(self, *args): return vimagemodule.VImage_meta_get_blob(self, *args) def meta_set(self, *args): return vimagemodule.VImage_meta_set(self, *args) def initdesc(self, *args): return vimagemodule.VImage_initdesc(self, *args) def abs(self): return vimagemodule.VImage_abs(self) def acos(self): return vimagemodule.VImage_acos(self) def add(self, *args): return vimagemodule.VImage_add(self, *args) def asin(self): return vimagemodule.VImage_asin(self) def atan(self): return vimagemodule.VImage_atan(self) def avg(self): return vimagemodule.VImage_avg(self) def point(self, *args): return vimagemodule.VImage_point(self, *args) def point_bilinear(self, *args): return vimagemodule.VImage_point_bilinear(self, *args) def bandmean(self): return vimagemodule.VImage_bandmean(self) def ceil(self): return vimagemodule.VImage_ceil(self) def cos(self): return vimagemodule.VImage_cos(self) def cross_phase(self, *args): return vimagemodule.VImage_cross_phase(self, *args) def deviate(self): return vimagemodule.VImage_deviate(self) def divide(self, *args): return vimagemodule.VImage_divide(self, *args) def exp10(self): return vimagemodule.VImage_exp10(self) def expn(self, *args): return vimagemodule.VImage_expn(self, *args) def exp(self): return vimagemodule.VImage_exp(self) def floor(self): return vimagemodule.VImage_floor(self) def invert(self): return vimagemodule.VImage_invert(self) __swig_getmethods__["linreg"] = lambda x: vimagemodule.VImage_linreg if _newclass:linreg = staticmethod(vimagemodule.VImage_linreg) def lin(self, *args): return vimagemodule.VImage_lin(self, *args) def log10(self): return vimagemodule.VImage_log10(self) def log(self): return vimagemodule.VImage_log(self) def max(self): return vimagemodule.VImage_max(self) def maxpos(self): return vimagemodule.VImage_maxpos(self) def maxpos_avg(self): return vimagemodule.VImage_maxpos_avg(self) def measure(self, *args): return vimagemodule.VImage_measure(self, *args) def min(self): return vimagemodule.VImage_min(self) def minpos(self): return vimagemodule.VImage_minpos(self) def multiply(self, *args): return vimagemodule.VImage_multiply(self, *args) def pow(self, *args): return vimagemodule.VImage_pow(self, *args) def recomb(self, *args): return vimagemodule.VImage_recomb(self, *args) def remainder(self, *args): return vimagemodule.VImage_remainder(self, *args) def rint(self): return vimagemodule.VImage_rint(self) def sign(self): return vimagemodule.VImage_sign(self) def sin(self): return vimagemodule.VImage_sin(self) def stats(self): return vimagemodule.VImage_stats(self) def subtract(self, *args): return vimagemodule.VImage_subtract(self, *args) def tan(self): return vimagemodule.VImage_tan(self) def greyc(self, *args): return vimagemodule.VImage_greyc(self, *args) def greyc_mask(self, *args): return vimagemodule.VImage_greyc_mask(self, *args) def LCh2Lab(self): return vimagemodule.VImage_LCh2Lab(self) def LCh2UCS(self): return vimagemodule.VImage_LCh2UCS(self) def Lab2LCh(self): return vimagemodule.VImage_Lab2LCh(self) def Lab2LabQ(self): return vimagemodule.VImage_Lab2LabQ(self) def Lab2LabS(self): return vimagemodule.VImage_Lab2LabS(self) def Lab2UCS(self): return vimagemodule.VImage_Lab2UCS(self) def Lab2XYZ(self): return vimagemodule.VImage_Lab2XYZ(self) def Lab2XYZ_temp(self, *args): return vimagemodule.VImage_Lab2XYZ_temp(self, *args) def Lab2disp(self, *args): return vimagemodule.VImage_Lab2disp(self, *args) def LabQ2LabS(self): return vimagemodule.VImage_LabQ2LabS(self) def LabQ2Lab(self): return vimagemodule.VImage_LabQ2Lab(self) def LabQ2XYZ(self): return vimagemodule.VImage_LabQ2XYZ(self) def LabQ2disp(self, *args): return vimagemodule.VImage_LabQ2disp(self, *args) def LabS2LabQ(self): return vimagemodule.VImage_LabS2LabQ(self) def LabS2Lab(self): return vimagemodule.VImage_LabS2Lab(self) def UCS2LCh(self): return vimagemodule.VImage_UCS2LCh(self) def UCS2Lab(self): return vimagemodule.VImage_UCS2Lab(self) def UCS2XYZ(self): return vimagemodule.VImage_UCS2XYZ(self) def XYZ2Lab(self): return vimagemodule.VImage_XYZ2Lab(self) def XYZ2Lab_temp(self, *args): return vimagemodule.VImage_XYZ2Lab_temp(self, *args) def XYZ2UCS(self): return vimagemodule.VImage_XYZ2UCS(self) def XYZ2Yxy(self): return vimagemodule.VImage_XYZ2Yxy(self) def XYZ2disp(self, *args): return vimagemodule.VImage_XYZ2disp(self, *args) def XYZ2sRGB(self): return vimagemodule.VImage_XYZ2sRGB(self) def Yxy2XYZ(self): return vimagemodule.VImage_Yxy2XYZ(self) def dE00_fromLab(self, *args): return vimagemodule.VImage_dE00_fromLab(self, *args) def dECMC_fromLab(self, *args): return vimagemodule.VImage_dECMC_fromLab(self, *args) def dECMC_fromdisp(self, *args): return vimagemodule.VImage_dECMC_fromdisp(self, *args) def dE_fromLab(self, *args): return vimagemodule.VImage_dE_fromLab(self, *args) def dE_fromXYZ(self, *args): return vimagemodule.VImage_dE_fromXYZ(self, *args) def dE_fromdisp(self, *args): return vimagemodule.VImage_dE_fromdisp(self, *args) def disp2Lab(self, *args): return vimagemodule.VImage_disp2Lab(self, *args) def disp2XYZ(self, *args): return vimagemodule.VImage_disp2XYZ(self, *args) def float2rad(self): return vimagemodule.VImage_float2rad(self) def icc_ac2rc(self, *args): return vimagemodule.VImage_icc_ac2rc(self, *args) def icc_export_depth(self, *args): return vimagemodule.VImage_icc_export_depth(self, *args) def icc_import(self, *args): return vimagemodule.VImage_icc_import(self, *args) def icc_import_embedded(self, *args): return vimagemodule.VImage_icc_import_embedded(self, *args) def icc_transform(self, *args): return vimagemodule.VImage_icc_transform(self, *args) def lab_morph(self, *args): return vimagemodule.VImage_lab_morph(self, *args) def rad2float(self): return vimagemodule.VImage_rad2float(self) def sRGB2XYZ(self): return vimagemodule.VImage_sRGB2XYZ(self) __swig_getmethods__["gaussnoise"] = lambda x: vimagemodule.VImage_gaussnoise if _newclass:gaussnoise = staticmethod(vimagemodule.VImage_gaussnoise) def bandjoin(self, *args): return vimagemodule.VImage_bandjoin(self, *args) __swig_getmethods__["black"] = lambda x: vimagemodule.VImage_black if _newclass:black = staticmethod(vimagemodule.VImage_black) def c2amph(self): return vimagemodule.VImage_c2amph(self) def c2imag(self): return vimagemodule.VImage_c2imag(self) def c2real(self): return vimagemodule.VImage_c2real(self) def c2rect(self): return vimagemodule.VImage_c2rect(self) def clip2fmt(self, *args): return vimagemodule.VImage_clip2fmt(self, *args) def copy(self): return vimagemodule.VImage_copy(self) def copy_file(self): return vimagemodule.VImage_copy_file(self) def copy_morph(self, *args): return vimagemodule.VImage_copy_morph(self, *args) def copy_swap(self): return vimagemodule.VImage_copy_swap(self) def copy_set(self, *args): return vimagemodule.VImage_copy_set(self, *args) def extract_area(self, *args): return vimagemodule.VImage_extract_area(self, *args) def extract_areabands(self, *args): return vimagemodule.VImage_extract_areabands(self, *args) def extract_band(self, *args): return vimagemodule.VImage_extract_band(self, *args) def extract_bands(self, *args): return vimagemodule.VImage_extract_bands(self, *args) def extract(self, *args): return vimagemodule.VImage_extract(self, *args) def falsecolour(self): return vimagemodule.VImage_falsecolour(self) def fliphor(self): return vimagemodule.VImage_fliphor(self) def flipver(self): return vimagemodule.VImage_flipver(self) __swig_getmethods__["gbandjoin"] = lambda x: vimagemodule.VImage_gbandjoin if _newclass:gbandjoin = staticmethod(vimagemodule.VImage_gbandjoin) def grid(self, *args): return vimagemodule.VImage_grid(self, *args) def insert(self, *args): return vimagemodule.VImage_insert(self, *args) def insert_noexpand(self, *args): return vimagemodule.VImage_insert_noexpand(self, *args) def embed(self, *args): return vimagemodule.VImage_embed(self, *args) def lrjoin(self, *args): return vimagemodule.VImage_lrjoin(self, *args) def msb(self): return vimagemodule.VImage_msb(self) def msb_band(self, *args): return vimagemodule.VImage_msb_band(self, *args) def replicate(self, *args): return vimagemodule.VImage_replicate(self, *args) def ri2c(self, *args): return vimagemodule.VImage_ri2c(self, *args) def rot180(self): return vimagemodule.VImage_rot180(self) def rot270(self): return vimagemodule.VImage_rot270(self) def rot90(self): return vimagemodule.VImage_rot90(self) def scale(self): return vimagemodule.VImage_scale(self) def scaleps(self): return vimagemodule.VImage_scaleps(self) def subsample(self, *args): return vimagemodule.VImage_subsample(self, *args) def system(self, *args): return vimagemodule.VImage_system(self, *args) def system_image(self, *args): return vimagemodule.VImage_system_image(self, *args) def tbjoin(self, *args): return vimagemodule.VImage_tbjoin(self, *args) __swig_getmethods__["text"] = lambda x: vimagemodule.VImage_text if _newclass:text = staticmethod(vimagemodule.VImage_text) def wrap(self, *args): return vimagemodule.VImage_wrap(self, *args) def zoom(self, *args): return vimagemodule.VImage_zoom(self, *args) def aconvsep(self, *args): return vimagemodule.VImage_aconvsep(self, *args) def aconv(self, *args): return vimagemodule.VImage_aconv(self, *args) def addgnoise(self, *args): return vimagemodule.VImage_addgnoise(self, *args) def compass(self, *args): return vimagemodule.VImage_compass(self, *args) def contrast_surface(self, *args): return vimagemodule.VImage_contrast_surface(self, *args) def conv(self, *args): return vimagemodule.VImage_conv(self, *args) def convsep(self, *args): return vimagemodule.VImage_convsep(self, *args) def fastcor(self, *args): return vimagemodule.VImage_fastcor(self, *args) def gradcor(self, *args): return vimagemodule.VImage_gradcor(self, *args) def gradient(self, *args): return vimagemodule.VImage_gradient(self, *args) def grad_x(self): return vimagemodule.VImage_grad_x(self) def grad_y(self): return vimagemodule.VImage_grad_y(self) def lindetect(self, *args): return vimagemodule.VImage_lindetect(self, *args) def sharpen(self, *args): return vimagemodule.VImage_sharpen(self, *args) def spcor(self, *args): return vimagemodule.VImage_spcor(self, *args) def argb2rgba(self): return vimagemodule.VImage_argb2rgba(self) def flood_copy(self, *args): return vimagemodule.VImage_flood_copy(self, *args) def flood_blob_copy(self, *args): return vimagemodule.VImage_flood_blob_copy(self, *args) def flood_other_copy(self, *args): return vimagemodule.VImage_flood_other_copy(self, *args) def clip(self): return vimagemodule.VImage_clip(self) def c2ps(self): return vimagemodule.VImage_c2ps(self) def resize_linear(self, *args): return vimagemodule.VImage_resize_linear(self, *args) def cmulnorm(self, *args): return vimagemodule.VImage_cmulnorm(self, *args) def fav4(self, *args): return vimagemodule.VImage_fav4(self, *args) def gadd(self, *args): return vimagemodule.VImage_gadd(self, *args) def icc_export(self, *args): return vimagemodule.VImage_icc_export(self, *args) def litecor(self, *args): return vimagemodule.VImage_litecor(self, *args) def affine(self, *args): return vimagemodule.VImage_affine(self, *args) def clip2c(self): return vimagemodule.VImage_clip2c(self) def clip2cm(self): return vimagemodule.VImage_clip2cm(self) def clip2d(self): return vimagemodule.VImage_clip2d(self) def clip2dcm(self): return vimagemodule.VImage_clip2dcm(self) def clip2f(self): return vimagemodule.VImage_clip2f(self) def clip2i(self): return vimagemodule.VImage_clip2i(self) def convsub(self, *args): return vimagemodule.VImage_convsub(self, *args) def convf(self, *args): return vimagemodule.VImage_convf(self, *args) def convsepf(self, *args): return vimagemodule.VImage_convsepf(self, *args) def clip2s(self): return vimagemodule.VImage_clip2s(self) def clip2ui(self): return vimagemodule.VImage_clip2ui(self) def clip2us(self): return vimagemodule.VImage_clip2us(self) def slice(self, *args): return vimagemodule.VImage_slice(self, *args) def segment(self): return vimagemodule.VImage_segment(self) def thresh(self, *args): return vimagemodule.VImage_thresh(self, *args) def convf_raw(self, *args): return vimagemodule.VImage_convf_raw(self, *args) def conv_raw(self, *args): return vimagemodule.VImage_conv_raw(self, *args) def contrast_surface_raw(self, *args): return vimagemodule.VImage_contrast_surface_raw(self, *args) def convsepf_raw(self, *args): return vimagemodule.VImage_convsepf_raw(self, *args) def convsep_raw(self, *args): return vimagemodule.VImage_convsep_raw(self, *args) def fastcor_raw(self, *args): return vimagemodule.VImage_fastcor_raw(self, *args) def gradcor_raw(self, *args): return vimagemodule.VImage_gradcor_raw(self, *args) def spcor_raw(self, *args): return vimagemodule.VImage_spcor_raw(self, *args) def lhisteq_raw(self, *args): return vimagemodule.VImage_lhisteq_raw(self, *args) def stdif_raw(self, *args): return vimagemodule.VImage_stdif_raw(self, *args) def rank_raw(self, *args): return vimagemodule.VImage_rank_raw(self, *args) def dilate_raw(self, *args): return vimagemodule.VImage_dilate_raw(self, *args) def erode_raw(self, *args): return vimagemodule.VImage_erode_raw(self, *args) def similarity_area(self, *args): return vimagemodule.VImage_similarity_area(self, *args) def similarity(self, *args): return vimagemodule.VImage_similarity(self, *args) __swig_getmethods__["mask2vips"] = lambda x: vimagemodule.VImage_mask2vips if _newclass:mask2vips = staticmethod(vimagemodule.VImage_mask2vips) def vips2mask(self): return vimagemodule.VImage_vips2mask(self) def insertplace(self, *args): return vimagemodule.VImage_insertplace(self, *args) def circle(self, *args): return vimagemodule.VImage_circle(self, *args) def andimage(self, *args): return vimagemodule.VImage_andimage(self, *args) def orimage(self, *args): return vimagemodule.VImage_orimage(self, *args) def eorimage(self, *args): return vimagemodule.VImage_eorimage(self, *args) def shiftleft(self, *args): return vimagemodule.VImage_shiftleft(self, *args) def shiftright(self, *args): return vimagemodule.VImage_shiftright(self, *args) def blend(self, *args): return vimagemodule.VImage_blend(self, *args) def equal(self, *args): return vimagemodule.VImage_equal(self, *args) def ifthenelse(self, *args): return vimagemodule.VImage_ifthenelse(self, *args) def less(self, *args): return vimagemodule.VImage_less(self, *args) def lesseq(self, *args): return vimagemodule.VImage_lesseq(self, *args) def more(self, *args): return vimagemodule.VImage_more(self, *args) def moreeq(self, *args): return vimagemodule.VImage_moreeq(self, *args) def notequal(self, *args): return vimagemodule.VImage_notequal(self, *args) def quadratic(self, *args): return vimagemodule.VImage_quadratic(self, *args) __swig_getmethods__["csv2vips"] = lambda x: vimagemodule.VImage_csv2vips if _newclass:csv2vips = staticmethod(vimagemodule.VImage_csv2vips) __swig_getmethods__["fits2vips"] = lambda x: vimagemodule.VImage_fits2vips if _newclass:fits2vips = staticmethod(vimagemodule.VImage_fits2vips) __swig_getmethods__["jpeg2vips"] = lambda x: vimagemodule.VImage_jpeg2vips if _newclass:jpeg2vips = staticmethod(vimagemodule.VImage_jpeg2vips) __swig_getmethods__["magick2vips"] = lambda x: vimagemodule.VImage_magick2vips if _newclass:magick2vips = staticmethod(vimagemodule.VImage_magick2vips) __swig_getmethods__["png2vips"] = lambda x: vimagemodule.VImage_png2vips if _newclass:png2vips = staticmethod(vimagemodule.VImage_png2vips) __swig_getmethods__["exr2vips"] = lambda x: vimagemodule.VImage_exr2vips if _newclass:exr2vips = staticmethod(vimagemodule.VImage_exr2vips) __swig_getmethods__["ppm2vips"] = lambda x: vimagemodule.VImage_ppm2vips if _newclass:ppm2vips = staticmethod(vimagemodule.VImage_ppm2vips) __swig_getmethods__["analyze2vips"] = lambda x: vimagemodule.VImage_analyze2vips if _newclass:analyze2vips = staticmethod(vimagemodule.VImage_analyze2vips) __swig_getmethods__["tiff2vips"] = lambda x: vimagemodule.VImage_tiff2vips if _newclass:tiff2vips = staticmethod(vimagemodule.VImage_tiff2vips) def vips2csv(self, *args): return vimagemodule.VImage_vips2csv(self, *args) def vips2dz(self, *args): return vimagemodule.VImage_vips2dz(self, *args) def vips2jpeg(self, *args): return vimagemodule.VImage_vips2jpeg(self, *args) def vips2mimejpeg(self, *args): return vimagemodule.VImage_vips2mimejpeg(self, *args) def vips2png(self, *args): return vimagemodule.VImage_vips2png(self, *args) def vips2ppm(self, *args): return vimagemodule.VImage_vips2ppm(self, *args) def vips2tiff(self, *args): return vimagemodule.VImage_vips2tiff(self, *args) __swig_getmethods__["create_fmask"] = lambda x: vimagemodule.VImage_create_fmask if _newclass:create_fmask = staticmethod(vimagemodule.VImage_create_fmask) def disp_ps(self): return vimagemodule.VImage_disp_ps(self) def flt_image_freq(self, *args): return vimagemodule.VImage_flt_image_freq(self, *args) __swig_getmethods__["fractsurf"] = lambda x: vimagemodule.VImage_fractsurf if _newclass:fractsurf = staticmethod(vimagemodule.VImage_fractsurf) def freqflt(self, *args): return vimagemodule.VImage_freqflt(self, *args) def fwfft(self): return vimagemodule.VImage_fwfft(self) def rotquad(self): return vimagemodule.VImage_rotquad(self) def invfft(self): return vimagemodule.VImage_invfft(self) def phasecor_fft(self, *args): return vimagemodule.VImage_phasecor_fft(self, *args) def invfftr(self): return vimagemodule.VImage_invfftr(self) def gammacorrect(self, *args): return vimagemodule.VImage_gammacorrect(self, *args) def heq(self, *args): return vimagemodule.VImage_heq(self, *args) def hist(self, *args): return vimagemodule.VImage_hist(self, *args) def histcum(self): return vimagemodule.VImage_histcum(self) def histeq(self): return vimagemodule.VImage_histeq(self) def hist_indexed(self, *args): return vimagemodule.VImage_hist_indexed(self, *args) def histgr(self, *args): return vimagemodule.VImage_histgr(self, *args) def histnD(self, *args): return vimagemodule.VImage_histnD(self, *args) def histnorm(self): return vimagemodule.VImage_histnorm(self) def histplot(self): return vimagemodule.VImage_histplot(self) def histspec(self, *args): return vimagemodule.VImage_histspec(self, *args) def hsp(self, *args): return vimagemodule.VImage_hsp(self, *args) __swig_getmethods__["identity"] = lambda x: vimagemodule.VImage_identity if _newclass:identity = staticmethod(vimagemodule.VImage_identity) __swig_getmethods__["identity_ushort"] = lambda x: vimagemodule.VImage_identity_ushort if _newclass:identity_ushort = staticmethod(vimagemodule.VImage_identity_ushort) def ismonotonic(self): return vimagemodule.VImage_ismonotonic(self) def lhisteq(self, *args): return vimagemodule.VImage_lhisteq(self, *args) def mpercent(self, *args): return vimagemodule.VImage_mpercent(self, *args) __swig_getmethods__["invertlut"] = lambda x: vimagemodule.VImage_invertlut if _newclass:invertlut = staticmethod(vimagemodule.VImage_invertlut) __swig_getmethods__["buildlut"] = lambda x: vimagemodule.VImage_buildlut if _newclass:buildlut = staticmethod(vimagemodule.VImage_buildlut) def maplut(self, *args): return vimagemodule.VImage_maplut(self, *args) def project(self, *args): return vimagemodule.VImage_project(self, *args) def stdif(self, *args): return vimagemodule.VImage_stdif(self, *args) def tone_analyse(self, *args): return vimagemodule.VImage_tone_analyse(self, *args) __swig_getmethods__["tone_build"] = lambda x: vimagemodule.VImage_tone_build if _newclass:tone_build = staticmethod(vimagemodule.VImage_tone_build) __swig_getmethods__["tone_build_range"] = lambda x: vimagemodule.VImage_tone_build_range if _newclass:tone_build_range = staticmethod(vimagemodule.VImage_tone_build_range) def tone_map(self, *args): return vimagemodule.VImage_tone_map(self, *args) def draw_circle(self, *args): return vimagemodule.VImage_draw_circle(self, *args) def draw_rect(self, *args): return vimagemodule.VImage_draw_rect(self, *args) def draw_line(self, *args): return vimagemodule.VImage_draw_line(self, *args) def draw_point(self, *args): return vimagemodule.VImage_draw_point(self, *args) def draw_smudge(self, *args): return vimagemodule.VImage_draw_smudge(self, *args) def draw_flood(self, *args): return vimagemodule.VImage_draw_flood(self, *args) def draw_flood_blob(self, *args): return vimagemodule.VImage_draw_flood_blob(self, *args) def draw_flood_other(self, *args): return vimagemodule.VImage_draw_flood_other(self, *args) def draw_image(self, *args): return vimagemodule.VImage_draw_image(self, *args) def draw_mask(self, *args): return vimagemodule.VImage_draw_mask(self, *args) def line(self, *args): return vimagemodule.VImage_line(self, *args) __swig_getmethods__["binfile"] = lambda x: vimagemodule.VImage_binfile if _newclass:binfile = staticmethod(vimagemodule.VImage_binfile) def cache(self, *args): return vimagemodule.VImage_cache(self, *args) def getext(self): return vimagemodule.VImage_getext(self) def header_get_typeof(self, *args): return vimagemodule.VImage_header_get_typeof(self, *args) def header_int(self, *args): return vimagemodule.VImage_header_int(self, *args) def header_double(self, *args): return vimagemodule.VImage_header_double(self, *args) def header_string(self, *args): return vimagemodule.VImage_header_string(self, *args) def history_get(self): return vimagemodule.VImage_history_get(self) def printdesc(self): return vimagemodule.VImage_printdesc(self) def cntlines(self, *args): return vimagemodule.VImage_cntlines(self, *args) def dilate(self, *args): return vimagemodule.VImage_dilate(self, *args) def rank(self, *args): return vimagemodule.VImage_rank(self, *args) __swig_getmethods__["rank_image"] = lambda x: vimagemodule.VImage_rank_image if _newclass:rank_image = staticmethod(vimagemodule.VImage_rank_image) __swig_getmethods__["maxvalue"] = lambda x: vimagemodule.VImage_maxvalue if _newclass:maxvalue = staticmethod(vimagemodule.VImage_maxvalue) def label_regions(self): return vimagemodule.VImage_label_regions(self) def zerox(self, *args): return vimagemodule.VImage_zerox(self, *args) def erode(self, *args): return vimagemodule.VImage_erode(self, *args) def profile(self, *args): return vimagemodule.VImage_profile(self, *args) def align_bands(self): return vimagemodule.VImage_align_bands(self) def correl(self, *args): return vimagemodule.VImage_correl(self, *args) def _find_lroverlap(self, *args): return vimagemodule.VImage__find_lroverlap(self, *args) def _find_tboverlap(self, *args): return vimagemodule.VImage__find_tboverlap(self, *args) def global_balance(self, *args): return vimagemodule.VImage_global_balance(self, *args) def global_balancef(self, *args): return vimagemodule.VImage_global_balancef(self, *args) def lrmerge(self, *args): return vimagemodule.VImage_lrmerge(self, *args) def lrmerge1(self, *args): return vimagemodule.VImage_lrmerge1(self, *args) def lrmosaic(self, *args): return vimagemodule.VImage_lrmosaic(self, *args) def lrmosaic1(self, *args): return vimagemodule.VImage_lrmosaic1(self, *args) def match_linear(self, *args): return vimagemodule.VImage_match_linear(self, *args) def match_linear_search(self, *args): return vimagemodule.VImage_match_linear_search(self, *args) def maxpos_subpel(self): return vimagemodule.VImage_maxpos_subpel(self) def remosaic(self, *args): return vimagemodule.VImage_remosaic(self, *args) def tbmerge(self, *args): return vimagemodule.VImage_tbmerge(self, *args) def tbmerge1(self, *args): return vimagemodule.VImage_tbmerge1(self, *args) def tbmosaic(self, *args): return vimagemodule.VImage_tbmosaic(self, *args) def tbmosaic1(self, *args): return vimagemodule.VImage_tbmosaic1(self, *args) def benchmark(self): return vimagemodule.VImage_benchmark(self) def benchmark2(self): return vimagemodule.VImage_benchmark2(self) def benchmarkn(self, *args): return vimagemodule.VImage_benchmarkn(self, *args) __swig_getmethods__["eye"] = lambda x: vimagemodule.VImage_eye if _newclass:eye = staticmethod(vimagemodule.VImage_eye) __swig_getmethods__["grey"] = lambda x: vimagemodule.VImage_grey if _newclass:grey = staticmethod(vimagemodule.VImage_grey) __swig_getmethods__["feye"] = lambda x: vimagemodule.VImage_feye if _newclass:feye = staticmethod(vimagemodule.VImage_feye) __swig_getmethods__["fgrey"] = lambda x: vimagemodule.VImage_fgrey if _newclass:fgrey = staticmethod(vimagemodule.VImage_fgrey) __swig_getmethods__["fzone"] = lambda x: vimagemodule.VImage_fzone if _newclass:fzone = staticmethod(vimagemodule.VImage_fzone) __swig_getmethods__["make_xy"] = lambda x: vimagemodule.VImage_make_xy if _newclass:make_xy = staticmethod(vimagemodule.VImage_make_xy) __swig_getmethods__["sines"] = lambda x: vimagemodule.VImage_sines if _newclass:sines = staticmethod(vimagemodule.VImage_sines) __swig_getmethods__["zone"] = lambda x: vimagemodule.VImage_zone if _newclass:zone = staticmethod(vimagemodule.VImage_zone) def rightshift_size(self, *args): return vimagemodule.VImage_rightshift_size(self, *args) def shrink(self, *args): return vimagemodule.VImage_shrink(self, *args) def stretch3(self, *args): return vimagemodule.VImage_stretch3(self, *args) def affinei(self, *args): return vimagemodule.VImage_affinei(self, *args) def affinei_all(self, *args): return vimagemodule.VImage_affinei_all(self, *args) __swig_getmethods__["video_test"] = lambda x: vimagemodule.VImage_video_test if _newclass:video_test = staticmethod(vimagemodule.VImage_video_test) __swig_getmethods__["video_v4l1"] = lambda x: vimagemodule.VImage_video_v4l1 if _newclass:video_v4l1 = staticmethod(vimagemodule.VImage_video_v4l1) def tobuffer(self): return vimagemodule.VImage_tobuffer(self) __swig_getmethods__["frombuffer"] = lambda x: vimagemodule.VImage_frombuffer if _newclass:frombuffer = staticmethod(vimagemodule.VImage_frombuffer) def tostring(self): return vimagemodule.VImage_tostring(self) __swig_getmethods__["fromstring"] = lambda x: vimagemodule.VImage_fromstring if _newclass:fromstring = staticmethod(vimagemodule.VImage_fromstring) VImage_swigregister = vimagemodule.VImage_swigregister VImage_swigregister(VImage) def VImage_print_all(): return vimagemodule.VImage_print_all() VImage_print_all = vimagemodule.VImage_print_all def VImage_convert2disc(*args): return vimagemodule.VImage_convert2disc(*args) VImage_convert2disc = vimagemodule.VImage_convert2disc def VImage_linreg(*args): return vimagemodule.VImage_linreg(*args) VImage_linreg = vimagemodule.VImage_linreg def VImage_gaussnoise(*args): return vimagemodule.VImage_gaussnoise(*args) VImage_gaussnoise = vimagemodule.VImage_gaussnoise def VImage_black(*args): return vimagemodule.VImage_black(*args) VImage_black = vimagemodule.VImage_black def VImage_gbandjoin(*args): return vimagemodule.VImage_gbandjoin(*args) VImage_gbandjoin = vimagemodule.VImage_gbandjoin def VImage_text(*args): return vimagemodule.VImage_text(*args) VImage_text = vimagemodule.VImage_text def VImage_mask2vips(*args): return vimagemodule.VImage_mask2vips(*args) VImage_mask2vips = vimagemodule.VImage_mask2vips def VImage_csv2vips(*args): return vimagemodule.VImage_csv2vips(*args) VImage_csv2vips = vimagemodule.VImage_csv2vips def VImage_fits2vips(*args): return vimagemodule.VImage_fits2vips(*args) VImage_fits2vips = vimagemodule.VImage_fits2vips def VImage_jpeg2vips(*args): return vimagemodule.VImage_jpeg2vips(*args) VImage_jpeg2vips = vimagemodule.VImage_jpeg2vips def VImage_magick2vips(*args): return vimagemodule.VImage_magick2vips(*args) VImage_magick2vips = vimagemodule.VImage_magick2vips def VImage_png2vips(*args): return vimagemodule.VImage_png2vips(*args) VImage_png2vips = vimagemodule.VImage_png2vips def VImage_exr2vips(*args): return vimagemodule.VImage_exr2vips(*args) VImage_exr2vips = vimagemodule.VImage_exr2vips def VImage_ppm2vips(*args): return vimagemodule.VImage_ppm2vips(*args) VImage_ppm2vips = vimagemodule.VImage_ppm2vips def VImage_analyze2vips(*args): return vimagemodule.VImage_analyze2vips(*args) VImage_analyze2vips = vimagemodule.VImage_analyze2vips def VImage_tiff2vips(*args): return vimagemodule.VImage_tiff2vips(*args) VImage_tiff2vips = vimagemodule.VImage_tiff2vips def VImage_create_fmask(*args): return vimagemodule.VImage_create_fmask(*args) VImage_create_fmask = vimagemodule.VImage_create_fmask def VImage_fractsurf(*args): return vimagemodule.VImage_fractsurf(*args) VImage_fractsurf = vimagemodule.VImage_fractsurf def VImage_identity(*args): return vimagemodule.VImage_identity(*args) VImage_identity = vimagemodule.VImage_identity def VImage_identity_ushort(*args): return vimagemodule.VImage_identity_ushort(*args) VImage_identity_ushort = vimagemodule.VImage_identity_ushort def VImage_invertlut(*args): return vimagemodule.VImage_invertlut(*args) VImage_invertlut = vimagemodule.VImage_invertlut def VImage_buildlut(*args): return vimagemodule.VImage_buildlut(*args) VImage_buildlut = vimagemodule.VImage_buildlut def VImage_tone_build(*args): return vimagemodule.VImage_tone_build(*args) VImage_tone_build = vimagemodule.VImage_tone_build def VImage_tone_build_range(*args): return vimagemodule.VImage_tone_build_range(*args) VImage_tone_build_range = vimagemodule.VImage_tone_build_range def VImage_binfile(*args): return vimagemodule.VImage_binfile(*args) VImage_binfile = vimagemodule.VImage_binfile def VImage_rank_image(*args): return vimagemodule.VImage_rank_image(*args) VImage_rank_image = vimagemodule.VImage_rank_image def VImage_maxvalue(*args): return vimagemodule.VImage_maxvalue(*args) VImage_maxvalue = vimagemodule.VImage_maxvalue def VImage_eye(*args): return vimagemodule.VImage_eye(*args) VImage_eye = vimagemodule.VImage_eye def VImage_grey(*args): return vimagemodule.VImage_grey(*args) VImage_grey = vimagemodule.VImage_grey def VImage_feye(*args): return vimagemodule.VImage_feye(*args) VImage_feye = vimagemodule.VImage_feye def VImage_fgrey(*args): return vimagemodule.VImage_fgrey(*args) VImage_fgrey = vimagemodule.VImage_fgrey def VImage_fzone(*args): return vimagemodule.VImage_fzone(*args) VImage_fzone = vimagemodule.VImage_fzone def VImage_make_xy(*args): return vimagemodule.VImage_make_xy(*args) VImage_make_xy = vimagemodule.VImage_make_xy def VImage_sines(*args): return vimagemodule.VImage_sines(*args) VImage_sines = vimagemodule.VImage_sines def VImage_zone(*args): return vimagemodule.VImage_zone(*args) VImage_zone = vimagemodule.VImage_zone def VImage_video_test(*args): return vimagemodule.VImage_video_test(*args) VImage_video_test = vimagemodule.VImage_video_test def VImage_video_v4l1(*args): return vimagemodule.VImage_video_v4l1(*args) VImage_video_v4l1 = vimagemodule.VImage_video_v4l1 def VImage_frombuffer(*args): return vimagemodule.VImage_frombuffer(*args) VImage_frombuffer = vimagemodule.VImage_frombuffer def VImage_fromstring(*args): return vimagemodule.VImage_fromstring(*args) VImage_fromstring = vimagemodule.VImage_fromstring def im_init_world(*args): return vimagemodule.im_init_world(*args) im_init_world = vimagemodule.im_init_world def vips_thread_shutdown(): return vimagemodule.vips_thread_shutdown() vips_thread_shutdown = vimagemodule.vips_thread_shutdown def im__print_all(): return vimagemodule.im__print_all() im__print_all = vimagemodule.im__print_all def im_col_Lab2XYZ(*args): return vimagemodule.im_col_Lab2XYZ(*args) im_col_Lab2XYZ = vimagemodule.im_col_Lab2XYZ # try to guess a PIL mode string from a VIPS image def PIL_mode_from_vips (vim): if vim.Bands () == 3 and vim.BandFmt () == VImage.FMTUCHAR: return 'RGB' elif vim.Bands () == 4 and vim.BandFmt () == VImage.FMTUCHAR and vim.Type () == VImage.RGB: return 'RGBA' elif vim.Bands () == 4 and vim.BandFmt () == VImage.FMTUCHAR and vim.Type () == VImage.CMYK: return 'CMYK' elif vim.Bands () == 1 and vim.BandFmt () == VImage.FMTUCHAR: return 'L' elif vim.Bands () == 1 and vim.BandFmt () == VImage.FMTINT: return 'I' elif vim.Bands () == 1 and vim.BandFmt () == VImage.FMTFLOAT: return 'F' elif vim.Bands () == 2 and vim.BandFmt () == VImage.FMTUCHAR: return 'LA' else: raise ValueError ('unsupported vips -> pil image') # return vips (bands, format, type) for a PIL mode def vips_from_PIL_mode (mode): if mode == 'RGB': return (3, VImage.FMTUCHAR, VImage.RGB) elif mode == 'RGBA': return (4, VImage.FMTUCHAR, VImage.RGB) elif mode == 'CMYK': return (4, VImage.FMTUCHAR, VImage.CMYK) elif mode == 'L': return (1, VImage.FMTUCHAR, VImage.B_W) elif mode == 'I': return (1, VImage.FMTINT, VImage.B_W) elif mode == 'F': return (1, VImage.FMTFLOAT, VImage.B_W) elif mode == 'LA': return (2, VImage.FMTUCHAR, VImage.B_W) else: raise ValueError ('unsupported pil -> vips image') # This file is compatible with both classic and new-style classes. vips-8.2.2/swig/vipsCC/__init__.py0000664000175000017500000000005712530402247013701 00000000000000__all__=["VImage","VMask","VError","VDisplay"] vips-8.2.2/swig/vipsCC/VDisplay.py0000664000175000017500000000604112651721412013676 00000000000000# This file was automatically generated by SWIG (http://www.swig.org). # Version 2.0.12 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. from sys import version_info if version_info >= (2,6,0): def swig_import_helper(): from os.path import dirname import imp fp = None try: fp, pathname, description = imp.find_module('vdisplaymodule', [dirname(__file__)]) except ImportError: import vdisplaymodule return vdisplaymodule if fp is not None: try: _mod = imp.load_module('vdisplaymodule', fp, pathname, description) finally: fp.close() return _mod vdisplaymodule = swig_import_helper() del swig_import_helper else: import vdisplaymodule del version_info try: _swig_property = property except NameError: pass # Python < 2.2 doesn't have 'property'. def _swig_setattr_nondynamic(self,class_type,name,value,static=1): if (name == "thisown"): return self.this.own(value) if (name == "this"): if type(value).__name__ == 'SwigPyObject': self.__dict__[name] = value return method = class_type.__swig_setmethods__.get(name,None) if method: return method(self,value) if (not static): self.__dict__[name] = value else: raise AttributeError("You cannot add attributes to %s" % self) def _swig_setattr(self,class_type,name,value): return _swig_setattr_nondynamic(self,class_type,name,value,0) def _swig_getattr(self,class_type,name): if (name == "thisown"): return self.this.own() method = class_type.__swig_getmethods__.get(name,None) if method: return method(self) raise AttributeError(name) def _swig_repr(self): try: strthis = "proxy of " + self.this.__repr__() except: strthis = "" return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) try: _object = object _newclass = 1 except AttributeError: class _object : pass _newclass = 0 import VError class VDisplay(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, VDisplay, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, VDisplay, name) __repr__ = _swig_repr BARCO = vdisplaymodule.VDisplay_BARCO DUMB = vdisplaymodule.VDisplay_DUMB def __init__(self, *args): this = vdisplaymodule.new_VDisplay(*args) try: self.this.append(this) except: self.this = this def __assign__(self, *args): return vdisplaymodule.VDisplay___assign__(self, *args) __swig_destroy__ = vdisplaymodule.delete_VDisplay __del__ = lambda self : None; def disp(self): return vdisplaymodule.VDisplay_disp(self) def luts(self): return vdisplaymodule.VDisplay_luts(self) VDisplay_swigregister = vdisplaymodule.VDisplay_swigregister VDisplay_swigregister(VDisplay) # This file is compatible with both classic and new-style classes. vips-8.2.2/swig/vipsCC/vdisplaymodule.cxx0000664000175000017500000035747612651721412015403 00000000000000/* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). * Version 2.0.12 * * This file is not intended to be easily readable and contains a number of * coding conventions designed to improve portability and efficiency. Do not make * changes to this file unless you know what you are doing--modify the SWIG * interface file instead. * ----------------------------------------------------------------------------- */ #define SWIGPYTHON #define SWIG_PYTHON_DIRECTOR_NO_VTABLE #ifdef __cplusplus /* SwigValueWrapper is described in swig.swg */ template class SwigValueWrapper { struct SwigMovePointer { T *ptr; SwigMovePointer(T *p) : ptr(p) { } ~SwigMovePointer() { delete ptr; } SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } } pointer; SwigValueWrapper& operator=(const SwigValueWrapper& rhs); SwigValueWrapper(const SwigValueWrapper& rhs); public: SwigValueWrapper() : pointer(0) { } SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } operator T&() const { return *pointer.ptr; } T *operator&() { return pointer.ptr; } }; template T SwigValueInit() { return T(); } #endif /* ----------------------------------------------------------------------------- * This section contains generic SWIG labels for method/variable * declarations/attributes, and other compiler dependent labels. * ----------------------------------------------------------------------------- */ /* template workaround for compilers that cannot correctly implement the C++ standard */ #ifndef SWIGTEMPLATEDISAMBIGUATOR # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) # define SWIGTEMPLATEDISAMBIGUATOR template # elif defined(__HP_aCC) /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ # define SWIGTEMPLATEDISAMBIGUATOR template # else # define SWIGTEMPLATEDISAMBIGUATOR # endif #endif /* inline attribute */ #ifndef SWIGINLINE # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) # define SWIGINLINE inline # else # define SWIGINLINE # endif #endif /* attribute recognised by some compilers to avoid 'unused' warnings */ #ifndef SWIGUNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define SWIGUNUSED __attribute__ ((__unused__)) # else # define SWIGUNUSED # endif # elif defined(__ICC) # define SWIGUNUSED __attribute__ ((__unused__)) # else # define SWIGUNUSED # endif #endif #ifndef SWIG_MSC_UNSUPPRESS_4505 # if defined(_MSC_VER) # pragma warning(disable : 4505) /* unreferenced local function has been removed */ # endif #endif #ifndef SWIGUNUSEDPARM # ifdef __cplusplus # define SWIGUNUSEDPARM(p) # else # define SWIGUNUSEDPARM(p) p SWIGUNUSED # endif #endif /* internal SWIG method */ #ifndef SWIGINTERN # define SWIGINTERN static SWIGUNUSED #endif /* internal inline SWIG method */ #ifndef SWIGINTERNINLINE # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE #endif /* exporting methods */ #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # ifndef GCC_HASCLASSVISIBILITY # define GCC_HASCLASSVISIBILITY # endif #endif #ifndef SWIGEXPORT # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # if defined(STATIC_LINKED) # define SWIGEXPORT # else # define SWIGEXPORT __declspec(dllexport) # endif # else # if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) # define SWIGEXPORT __attribute__ ((visibility("default"))) # else # define SWIGEXPORT # endif # endif #endif /* calling conventions for Windows */ #ifndef SWIGSTDCALL # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # define SWIGSTDCALL __stdcall # else # define SWIGSTDCALL # endif #endif /* Deal with Microsoft's attempt at deprecating C standard runtime functions */ #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) # define _CRT_SECURE_NO_DEPRECATE #endif /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) # define _SCL_SECURE_NO_DEPRECATE #endif #if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) /* Use debug wrappers with the Python release dll */ # undef _DEBUG # include # define _DEBUG #else # include #endif /* ----------------------------------------------------------------------------- * swigrun.swg * * This file contains generic C API SWIG runtime support for pointer * type checking. * ----------------------------------------------------------------------------- */ /* This should only be incremented when either the layout of swig_type_info changes, or for whatever reason, the runtime changes incompatibly */ #define SWIG_RUNTIME_VERSION "4" /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ #ifdef SWIG_TYPE_TABLE # define SWIG_QUOTE_STRING(x) #x # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) #else # define SWIG_TYPE_TABLE_NAME #endif /* You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for creating a static or dynamic library from the SWIG runtime code. In 99.9% of the cases, SWIG just needs to declare them as 'static'. But only do this if strictly necessary, ie, if you have problems with your compiler or suchlike. */ #ifndef SWIGRUNTIME # define SWIGRUNTIME SWIGINTERN #endif #ifndef SWIGRUNTIMEINLINE # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE #endif /* Generic buffer size */ #ifndef SWIG_BUFFER_SIZE # define SWIG_BUFFER_SIZE 1024 #endif /* Flags for pointer conversions */ #define SWIG_POINTER_DISOWN 0x1 #define SWIG_CAST_NEW_MEMORY 0x2 /* Flags for new pointer objects */ #define SWIG_POINTER_OWN 0x1 /* Flags/methods for returning states. The SWIG conversion methods, as ConvertPtr, return an integer that tells if the conversion was successful or not. And if not, an error code can be returned (see swigerrors.swg for the codes). Use the following macros/flags to set or process the returning states. In old versions of SWIG, code such as the following was usually written: if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { // success code } else { //fail code } Now you can be more explicit: int res = SWIG_ConvertPtr(obj,vptr,ty.flags); if (SWIG_IsOK(res)) { // success code } else { // fail code } which is the same really, but now you can also do Type *ptr; int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); if (SWIG_IsOK(res)) { // success code if (SWIG_IsNewObj(res) { ... delete *ptr; } else { ... } } else { // fail code } I.e., now SWIG_ConvertPtr can return new objects and you can identify the case and take care of the deallocation. Of course that also requires SWIG_ConvertPtr to return new result values, such as int SWIG_ConvertPtr(obj, ptr,...) { if () { if () { *ptr = ; return SWIG_NEWOBJ; } else { *ptr = ; return SWIG_OLDOBJ; } } else { return SWIG_BADOBJ; } } Of course, returning the plain '0(success)/-1(fail)' still works, but you can be more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the SWIG errors code. Finally, if the SWIG_CASTRANK_MODE is enabled, the result code allows to return the 'cast rank', for example, if you have this int food(double) int fooi(int); and you call food(1) // cast rank '1' (1 -> 1.0) fooi(1) // cast rank '0' just use the SWIG_AddCast()/SWIG_CheckState() */ #define SWIG_OK (0) #define SWIG_ERROR (-1) #define SWIG_IsOK(r) (r >= 0) #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) /* The CastRankLimit says how many bits are used for the cast rank */ #define SWIG_CASTRANKLIMIT (1 << 8) /* The NewMask denotes the object was created (using new/malloc) */ #define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) /* The TmpMask is for in/out typemaps that use temporal objects */ #define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) /* Simple returning values */ #define SWIG_BADOBJ (SWIG_ERROR) #define SWIG_OLDOBJ (SWIG_OK) #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) /* Check, add and del mask methods */ #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) #define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) /* Cast-Rank Mode */ #if defined(SWIG_CASTRANK_MODE) # ifndef SWIG_TypeRank # define SWIG_TypeRank unsigned long # endif # ifndef SWIG_MAXCASTRANK /* Default cast allowed */ # define SWIG_MAXCASTRANK (2) # endif # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) SWIGINTERNINLINE int SWIG_AddCast(int r) { return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; } SWIGINTERNINLINE int SWIG_CheckState(int r) { return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; } #else /* no cast-rank mode */ # define SWIG_AddCast(r) (r) # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) #endif #include #ifdef __cplusplus extern "C" { #endif typedef void *(*swig_converter_func)(void *, int *); typedef struct swig_type_info *(*swig_dycast_func)(void **); /* Structure to store information on one type */ typedef struct swig_type_info { const char *name; /* mangled name of this type */ const char *str; /* human readable name of this type */ swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ struct swig_cast_info *cast; /* linked list of types that can cast into this type */ void *clientdata; /* language specific type data */ int owndata; /* flag if the structure owns the clientdata */ } swig_type_info; /* Structure to store a type and conversion function used for casting */ typedef struct swig_cast_info { swig_type_info *type; /* pointer to type that is equivalent to this type */ swig_converter_func converter; /* function to cast the void pointers */ struct swig_cast_info *next; /* pointer to next cast in linked list */ struct swig_cast_info *prev; /* pointer to the previous cast */ } swig_cast_info; /* Structure used to store module information * Each module generates one structure like this, and the runtime collects * all of these structures and stores them in a circularly linked list.*/ typedef struct swig_module_info { swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ size_t size; /* Number of types in this module */ struct swig_module_info *next; /* Pointer to next element in circularly linked list */ swig_type_info **type_initial; /* Array of initially generated type structures */ swig_cast_info **cast_initial; /* Array of initially generated casting structures */ void *clientdata; /* Language specific module data */ } swig_module_info; /* Compare two type names skipping the space characters, therefore "char*" == "char *" and "Class" == "Class", etc. Return 0 when the two name types are equivalent, as in strncmp, but skipping ' '. */ SWIGRUNTIME int SWIG_TypeNameComp(const char *f1, const char *l1, const char *f2, const char *l2) { for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { while ((*f1 == ' ') && (f1 != l1)) ++f1; while ((*f2 == ' ') && (f2 != l2)) ++f2; if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; } return (int)((l1 - f1) - (l2 - f2)); } /* Check type equivalence in a name list like ||... Return 0 if equal, -1 if nb < tb, 1 if nb > tb */ SWIGRUNTIME int SWIG_TypeCmp(const char *nb, const char *tb) { int equiv = 1; const char* te = tb + strlen(tb); const char* ne = nb; while (equiv != 0 && *ne) { for (nb = ne; *ne; ++ne) { if (*ne == '|') break; } equiv = SWIG_TypeNameComp(nb, ne, tb, te); if (*ne) ++ne; } return equiv; } /* Check type equivalence in a name list like ||... Return 0 if not equal, 1 if equal */ SWIGRUNTIME int SWIG_TypeEquiv(const char *nb, const char *tb) { return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0; } /* Check the typename */ SWIGRUNTIME swig_cast_info * SWIG_TypeCheck(const char *c, swig_type_info *ty) { if (ty) { swig_cast_info *iter = ty->cast; while (iter) { if (strcmp(iter->type->name, c) == 0) { if (iter == ty->cast) return iter; /* Move iter to the top of the linked list */ iter->prev->next = iter->next; if (iter->next) iter->next->prev = iter->prev; iter->next = ty->cast; iter->prev = 0; if (ty->cast) ty->cast->prev = iter; ty->cast = iter; return iter; } iter = iter->next; } } return 0; } /* Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison */ SWIGRUNTIME swig_cast_info * SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { if (ty) { swig_cast_info *iter = ty->cast; while (iter) { if (iter->type == from) { if (iter == ty->cast) return iter; /* Move iter to the top of the linked list */ iter->prev->next = iter->next; if (iter->next) iter->next->prev = iter->prev; iter->next = ty->cast; iter->prev = 0; if (ty->cast) ty->cast->prev = iter; ty->cast = iter; return iter; } iter = iter->next; } } return 0; } /* Cast a pointer up an inheritance hierarchy */ SWIGRUNTIMEINLINE void * SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); } /* Dynamic pointer casting. Down an inheritance hierarchy */ SWIGRUNTIME swig_type_info * SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { swig_type_info *lastty = ty; if (!ty || !ty->dcast) return ty; while (ty && (ty->dcast)) { ty = (*ty->dcast)(ptr); if (ty) lastty = ty; } return lastty; } /* Return the name associated with this type */ SWIGRUNTIMEINLINE const char * SWIG_TypeName(const swig_type_info *ty) { return ty->name; } /* Return the pretty name associated with this type, that is an unmangled type name in a form presentable to the user. */ SWIGRUNTIME const char * SWIG_TypePrettyName(const swig_type_info *type) { /* The "str" field contains the equivalent pretty names of the type, separated by vertical-bar characters. We choose to print the last name, as it is often (?) the most specific. */ if (!type) return NULL; if (type->str != NULL) { const char *last_name = type->str; const char *s; for (s = type->str; *s; s++) if (*s == '|') last_name = s+1; return last_name; } else return type->name; } /* Set the clientdata field for a type */ SWIGRUNTIME void SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { swig_cast_info *cast = ti->cast; /* if (ti->clientdata == clientdata) return; */ ti->clientdata = clientdata; while (cast) { if (!cast->converter) { swig_type_info *tc = cast->type; if (!tc->clientdata) { SWIG_TypeClientData(tc, clientdata); } } cast = cast->next; } } SWIGRUNTIME void SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { SWIG_TypeClientData(ti, clientdata); ti->owndata = 1; } /* Search for a swig_type_info structure only by mangled name Search is a O(log #types) We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list. */ SWIGRUNTIME swig_type_info * SWIG_MangledTypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name) { swig_module_info *iter = start; do { if (iter->size) { register size_t l = 0; register size_t r = iter->size - 1; do { /* since l+r >= 0, we can (>> 1) instead (/ 2) */ register size_t i = (l + r) >> 1; const char *iname = iter->types[i]->name; if (iname) { register int compare = strcmp(name, iname); if (compare == 0) { return iter->types[i]; } else if (compare < 0) { if (i) { r = i - 1; } else { break; } } else if (compare > 0) { l = i + 1; } } else { break; /* should never happen */ } } while (l <= r); } iter = iter->next; } while (iter != end); return 0; } /* Search for a swig_type_info structure for either a mangled name or a human readable name. It first searches the mangled names of the types, which is a O(log #types) If a type is not found it then searches the human readable names, which is O(#types). We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list. */ SWIGRUNTIME swig_type_info * SWIG_TypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name) { /* STEP 1: Search the name field using binary search */ swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); if (ret) { return ret; } else { /* STEP 2: If the type hasn't been found, do a complete search of the str field (the human readable name) */ swig_module_info *iter = start; do { register size_t i = 0; for (; i < iter->size; ++i) { if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) return iter->types[i]; } iter = iter->next; } while (iter != end); } /* neither found a match */ return 0; } /* Pack binary data into a string */ SWIGRUNTIME char * SWIG_PackData(char *c, void *ptr, size_t sz) { static const char hex[17] = "0123456789abcdef"; register const unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register unsigned char uu = *u; *(c++) = hex[(uu & 0xf0) >> 4]; *(c++) = hex[uu & 0xf]; } return c; } /* Unpack binary data from a string */ SWIGRUNTIME const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) { register unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register char d = *(c++); register unsigned char uu; if ((d >= '0') && (d <= '9')) uu = ((d - '0') << 4); else if ((d >= 'a') && (d <= 'f')) uu = ((d - ('a'-10)) << 4); else return (char *) 0; d = *(c++); if ((d >= '0') && (d <= '9')) uu |= (d - '0'); else if ((d >= 'a') && (d <= 'f')) uu |= (d - ('a'-10)); else return (char *) 0; *u = uu; } return c; } /* Pack 'void *' into a string buffer. */ SWIGRUNTIME char * SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { char *r = buff; if ((2*sizeof(void *) + 2) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,&ptr,sizeof(void *)); if (strlen(name) + 1 > (bsz - (r - buff))) return 0; strcpy(r,name); return buff; } SWIGRUNTIME const char * SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { *ptr = (void *) 0; return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sizeof(void *)); } SWIGRUNTIME char * SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { char *r = buff; size_t lname = (name ? strlen(name) : 0); if ((2*sz + 2 + lname) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,ptr,sz); if (lname) { strncpy(r,name,lname+1); } else { *r = 0; } return buff; } SWIGRUNTIME const char * SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { memset(ptr,0,sz); return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sz); } #ifdef __cplusplus } #endif /* Errors in SWIG */ #define SWIG_UnknownError -1 #define SWIG_IOError -2 #define SWIG_RuntimeError -3 #define SWIG_IndexError -4 #define SWIG_TypeError -5 #define SWIG_DivisionByZero -6 #define SWIG_OverflowError -7 #define SWIG_SyntaxError -8 #define SWIG_ValueError -9 #define SWIG_SystemError -10 #define SWIG_AttributeError -11 #define SWIG_MemoryError -12 #define SWIG_NullReferenceError -13 /* Compatibility macros for Python 3 */ #if PY_VERSION_HEX >= 0x03000000 #define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type) #define PyInt_Check(x) PyLong_Check(x) #define PyInt_AsLong(x) PyLong_AsLong(x) #define PyInt_FromLong(x) PyLong_FromLong(x) #define PyInt_FromSize_t(x) PyLong_FromSize_t(x) #define PyString_Check(name) PyBytes_Check(name) #define PyString_FromString(x) PyUnicode_FromString(x) #define PyString_Format(fmt, args) PyUnicode_Format(fmt, args) #define PyString_AsString(str) PyBytes_AsString(str) #define PyString_Size(str) PyBytes_Size(str) #define PyString_InternFromString(key) PyUnicode_InternFromString(key) #define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE #define PyString_AS_STRING(x) PyUnicode_AS_STRING(x) #define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x) #endif #ifndef Py_TYPE # define Py_TYPE(op) ((op)->ob_type) #endif /* SWIG APIs for compatibility of both Python 2 & 3 */ #if PY_VERSION_HEX >= 0x03000000 # define SWIG_Python_str_FromFormat PyUnicode_FromFormat #else # define SWIG_Python_str_FromFormat PyString_FromFormat #endif /* Warning: This function will allocate a new string in Python 3, * so please call SWIG_Python_str_DelForPy3(x) to free the space. */ SWIGINTERN char* SWIG_Python_str_AsChar(PyObject *str) { #if PY_VERSION_HEX >= 0x03000000 char *cstr; char *newstr; Py_ssize_t len; str = PyUnicode_AsUTF8String(str); PyBytes_AsStringAndSize(str, &cstr, &len); newstr = (char *) malloc(len+1); memcpy(newstr, cstr, len+1); Py_XDECREF(str); return newstr; #else return PyString_AsString(str); #endif } #if PY_VERSION_HEX >= 0x03000000 # define SWIG_Python_str_DelForPy3(x) free( (void*) (x) ) #else # define SWIG_Python_str_DelForPy3(x) #endif SWIGINTERN PyObject* SWIG_Python_str_FromChar(const char *c) { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_FromString(c); #else return PyString_FromString(c); #endif } /* Add PyOS_snprintf for old Pythons */ #if PY_VERSION_HEX < 0x02020000 # if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM) # define PyOS_snprintf _snprintf # else # define PyOS_snprintf snprintf # endif #endif /* A crude PyString_FromFormat implementation for old Pythons */ #if PY_VERSION_HEX < 0x02020000 #ifndef SWIG_PYBUFFER_SIZE # define SWIG_PYBUFFER_SIZE 1024 #endif static PyObject * PyString_FromFormat(const char *fmt, ...) { va_list ap; char buf[SWIG_PYBUFFER_SIZE * 2]; int res; va_start(ap, fmt); res = vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf); } #endif /* Add PyObject_Del for old Pythons */ #if PY_VERSION_HEX < 0x01060000 # define PyObject_Del(op) PyMem_DEL((op)) #endif #ifndef PyObject_DEL # define PyObject_DEL PyObject_Del #endif /* A crude PyExc_StopIteration exception for old Pythons */ #if PY_VERSION_HEX < 0x02020000 # ifndef PyExc_StopIteration # define PyExc_StopIteration PyExc_RuntimeError # endif # ifndef PyObject_GenericGetAttr # define PyObject_GenericGetAttr 0 # endif #endif /* Py_NotImplemented is defined in 2.1 and up. */ #if PY_VERSION_HEX < 0x02010000 # ifndef Py_NotImplemented # define Py_NotImplemented PyExc_RuntimeError # endif #endif /* A crude PyString_AsStringAndSize implementation for old Pythons */ #if PY_VERSION_HEX < 0x02010000 # ifndef PyString_AsStringAndSize # define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;} # endif #endif /* PySequence_Size for old Pythons */ #if PY_VERSION_HEX < 0x02000000 # ifndef PySequence_Size # define PySequence_Size PySequence_Length # endif #endif /* PyBool_FromLong for old Pythons */ #if PY_VERSION_HEX < 0x02030000 static PyObject *PyBool_FromLong(long ok) { PyObject *result = ok ? Py_True : Py_False; Py_INCREF(result); return result; } #endif /* Py_ssize_t for old Pythons */ /* This code is as recommended by: */ /* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */ #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) typedef int Py_ssize_t; # define PY_SSIZE_T_MAX INT_MAX # define PY_SSIZE_T_MIN INT_MIN typedef inquiry lenfunc; typedef intargfunc ssizeargfunc; typedef intintargfunc ssizessizeargfunc; typedef intobjargproc ssizeobjargproc; typedef intintobjargproc ssizessizeobjargproc; typedef getreadbufferproc readbufferproc; typedef getwritebufferproc writebufferproc; typedef getsegcountproc segcountproc; typedef getcharbufferproc charbufferproc; static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc)) { long result = 0; PyObject *i = PyNumber_Int(x); if (i) { result = PyInt_AsLong(i); Py_DECREF(i); } return result; } #endif #if PY_VERSION_HEX < 0x02050000 #define PyInt_FromSize_t(x) PyInt_FromLong((long)x) #endif #if PY_VERSION_HEX < 0x02040000 #define Py_VISIT(op) \ do { \ if (op) { \ int vret = visit((op), arg); \ if (vret) \ return vret; \ } \ } while (0) #endif #if PY_VERSION_HEX < 0x02030000 typedef struct { PyTypeObject type; PyNumberMethods as_number; PyMappingMethods as_mapping; PySequenceMethods as_sequence; PyBufferProcs as_buffer; PyObject *name, *slots; } PyHeapTypeObject; #endif #if PY_VERSION_HEX < 0x02030000 typedef destructor freefunc; #endif #if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \ (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \ (PY_MAJOR_VERSION > 3)) # define SWIGPY_USE_CAPSULE # define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME) #endif #if PY_VERSION_HEX < 0x03020000 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) #endif /* ----------------------------------------------------------------------------- * error manipulation * ----------------------------------------------------------------------------- */ SWIGRUNTIME PyObject* SWIG_Python_ErrorType(int code) { PyObject* type = 0; switch(code) { case SWIG_MemoryError: type = PyExc_MemoryError; break; case SWIG_IOError: type = PyExc_IOError; break; case SWIG_RuntimeError: type = PyExc_RuntimeError; break; case SWIG_IndexError: type = PyExc_IndexError; break; case SWIG_TypeError: type = PyExc_TypeError; break; case SWIG_DivisionByZero: type = PyExc_ZeroDivisionError; break; case SWIG_OverflowError: type = PyExc_OverflowError; break; case SWIG_SyntaxError: type = PyExc_SyntaxError; break; case SWIG_ValueError: type = PyExc_ValueError; break; case SWIG_SystemError: type = PyExc_SystemError; break; case SWIG_AttributeError: type = PyExc_AttributeError; break; default: type = PyExc_RuntimeError; } return type; } SWIGRUNTIME void SWIG_Python_AddErrorMsg(const char* mesg) { PyObject *type = 0; PyObject *value = 0; PyObject *traceback = 0; if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback); if (value) { char *tmp; PyObject *old_str = PyObject_Str(value); PyErr_Clear(); Py_XINCREF(type); PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); SWIG_Python_str_DelForPy3(tmp); Py_DECREF(old_str); Py_DECREF(value); } else { PyErr_SetString(PyExc_RuntimeError, mesg); } } #if defined(SWIG_PYTHON_NO_THREADS) # if defined(SWIG_PYTHON_THREADS) # undef SWIG_PYTHON_THREADS # endif #endif #if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ # if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) # if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */ # define SWIG_PYTHON_USE_GIL # endif # endif # if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ # ifndef SWIG_PYTHON_INITIALIZE_THREADS # define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() # endif # ifdef __cplusplus /* C++ code */ class SWIG_Python_Thread_Block { bool status; PyGILState_STATE state; public: void end() { if (status) { PyGILState_Release(state); status = false;} } SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} ~SWIG_Python_Thread_Block() { end(); } }; class SWIG_Python_Thread_Allow { bool status; PyThreadState *save; public: void end() { if (status) { PyEval_RestoreThread(save); status = false; }} SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} ~SWIG_Python_Thread_Allow() { end(); } }; # define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block # define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() # define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow # define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() # else /* C code */ # define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() # define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) # define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() # define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) # endif # else /* Old thread way, not implemented, user must provide it */ # if !defined(SWIG_PYTHON_INITIALIZE_THREADS) # define SWIG_PYTHON_INITIALIZE_THREADS # endif # if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) # define SWIG_PYTHON_THREAD_BEGIN_BLOCK # endif # if !defined(SWIG_PYTHON_THREAD_END_BLOCK) # define SWIG_PYTHON_THREAD_END_BLOCK # endif # if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) # define SWIG_PYTHON_THREAD_BEGIN_ALLOW # endif # if !defined(SWIG_PYTHON_THREAD_END_ALLOW) # define SWIG_PYTHON_THREAD_END_ALLOW # endif # endif #else /* No thread support */ # define SWIG_PYTHON_INITIALIZE_THREADS # define SWIG_PYTHON_THREAD_BEGIN_BLOCK # define SWIG_PYTHON_THREAD_END_BLOCK # define SWIG_PYTHON_THREAD_BEGIN_ALLOW # define SWIG_PYTHON_THREAD_END_ALLOW #endif /* ----------------------------------------------------------------------------- * Python API portion that goes into the runtime * ----------------------------------------------------------------------------- */ #ifdef __cplusplus extern "C" { #endif /* ----------------------------------------------------------------------------- * Constant declarations * ----------------------------------------------------------------------------- */ /* Constant Types */ #define SWIG_PY_POINTER 4 #define SWIG_PY_BINARY 5 /* Constant information structure */ typedef struct swig_const_info { int type; char *name; long lvalue; double dvalue; void *pvalue; swig_type_info **ptype; } swig_const_info; /* ----------------------------------------------------------------------------- * Wrapper of PyInstanceMethod_New() used in Python 3 * It is exported to the generated module, used for -fastproxy * ----------------------------------------------------------------------------- */ #if PY_VERSION_HEX >= 0x03000000 SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) { return PyInstanceMethod_New(func); } #else SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(func)) { return NULL; } #endif #ifdef __cplusplus } #endif /* ----------------------------------------------------------------------------- * pyrun.swg * * This file contains the runtime support for Python modules * and includes code for managing global variables and pointer * type checking. * * ----------------------------------------------------------------------------- */ /* Common SWIG API */ /* for raw pointers */ #define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) #define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) #define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) #ifdef SWIGPYTHON_BUILTIN #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(self, ptr, type, flags) #else #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) #endif #define SWIG_InternalNewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) #define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) #define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) #define swig_owntype int /* for raw packed data */ #define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) /* for class or struct pointers */ #define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) #define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) /* for C or C++ function pointers */ #define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) #define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(NULL, ptr, type, 0) /* for C++ member pointers, ie, member methods */ #define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) /* Runtime API */ #define SWIG_GetModule(clientdata) SWIG_Python_GetModule(clientdata) #define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) #define SWIG_NewClientData(obj) SwigPyClientData_New(obj) #define SWIG_SetErrorObj SWIG_Python_SetErrorObj #define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg #define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) #define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) #define SWIG_fail goto fail /* Runtime API implementation */ /* Error manipulation */ SWIGINTERN void SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { SWIG_PYTHON_THREAD_BEGIN_BLOCK; PyErr_SetObject(errtype, obj); Py_DECREF(obj); SWIG_PYTHON_THREAD_END_BLOCK; } SWIGINTERN void SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { SWIG_PYTHON_THREAD_BEGIN_BLOCK; PyErr_SetString(errtype, msg); SWIG_PYTHON_THREAD_END_BLOCK; } #define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) /* Set a constant value */ #if defined(SWIGPYTHON_BUILTIN) SWIGINTERN void SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) { PyObject *s = PyString_InternFromString(key); PyList_Append(seq, s); Py_DECREF(s); } SWIGINTERN void SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) { #if PY_VERSION_HEX < 0x02030000 PyDict_SetItemString(d, (char *)name, obj); #else PyDict_SetItemString(d, name, obj); #endif Py_DECREF(obj); if (public_interface) SwigPyBuiltin_AddPublicSymbol(public_interface, name); } #else SWIGINTERN void SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { #if PY_VERSION_HEX < 0x02030000 PyDict_SetItemString(d, (char *)name, obj); #else PyDict_SetItemString(d, name, obj); #endif Py_DECREF(obj); } #endif /* Append a value to the result obj */ SWIGINTERN PyObject* SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { #if !defined(SWIG_PYTHON_OUTPUT_TUPLE) if (!result) { result = obj; } else if (result == Py_None) { Py_DECREF(result); result = obj; } else { if (!PyList_Check(result)) { PyObject *o2 = result; result = PyList_New(1); PyList_SetItem(result, 0, o2); } PyList_Append(result,obj); Py_DECREF(obj); } return result; #else PyObject* o2; PyObject* o3; if (!result) { result = obj; } else if (result == Py_None) { Py_DECREF(result); result = obj; } else { if (!PyTuple_Check(result)) { o2 = result; result = PyTuple_New(1); PyTuple_SET_ITEM(result, 0, o2); } o3 = PyTuple_New(1); PyTuple_SET_ITEM(o3, 0, obj); o2 = result; result = PySequence_Concat(o2, o3); Py_DECREF(o2); Py_DECREF(o3); } return result; #endif } /* Unpack the argument tuple */ SWIGINTERN int SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) { if (!args) { if (!min && !max) { return 1; } else { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", name, (min == max ? "" : "at least "), (int)min); return 0; } } if (!PyTuple_Check(args)) { if (min <= 1 && max >= 1) { register int i; objs[0] = args; for (i = 1; i < max; ++i) { objs[i] = 0; } return 2; } PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); return 0; } else { register Py_ssize_t l = PyTuple_GET_SIZE(args); if (l < min) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", name, (min == max ? "" : "at least "), (int)min, (int)l); return 0; } else if (l > max) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", name, (min == max ? "" : "at most "), (int)max, (int)l); return 0; } else { register int i; for (i = 0; i < l; ++i) { objs[i] = PyTuple_GET_ITEM(args, i); } for (; l < max; ++l) { objs[l] = 0; } return i + 1; } } } /* A functor is a function object with one single object argument */ #if PY_VERSION_HEX >= 0x02020000 #define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); #else #define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, "O", obj); #endif /* Helper for static pointer initialization for both C and C++ code, for example static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); */ #ifdef __cplusplus #define SWIG_STATIC_POINTER(var) var #else #define SWIG_STATIC_POINTER(var) var = 0; if (!var) var #endif /* ----------------------------------------------------------------------------- * Pointer declarations * ----------------------------------------------------------------------------- */ /* Flags for new pointer objects */ #define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) #define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) #define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) #define SWIG_BUILTIN_TP_INIT (SWIG_POINTER_OWN << 2) #define SWIG_BUILTIN_INIT (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN) #ifdef __cplusplus extern "C" { #endif /* How to access Py_None */ #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # ifndef SWIG_PYTHON_NO_BUILD_NONE # ifndef SWIG_PYTHON_BUILD_NONE # define SWIG_PYTHON_BUILD_NONE # endif # endif #endif #ifdef SWIG_PYTHON_BUILD_NONE # ifdef Py_None # undef Py_None # define Py_None SWIG_Py_None() # endif SWIGRUNTIMEINLINE PyObject * _SWIG_Py_None(void) { PyObject *none = Py_BuildValue((char*)""); Py_DECREF(none); return none; } SWIGRUNTIME PyObject * SWIG_Py_None(void) { static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None(); return none; } #endif /* The python void return value */ SWIGRUNTIMEINLINE PyObject * SWIG_Py_Void(void) { PyObject *none = Py_None; Py_INCREF(none); return none; } /* SwigPyClientData */ typedef struct { PyObject *klass; PyObject *newraw; PyObject *newargs; PyObject *destroy; int delargs; int implicitconv; PyTypeObject *pytype; } SwigPyClientData; SWIGRUNTIMEINLINE int SWIG_Python_CheckImplicit(swig_type_info *ty) { SwigPyClientData *data = (SwigPyClientData *)ty->clientdata; return data ? data->implicitconv : 0; } SWIGRUNTIMEINLINE PyObject * SWIG_Python_ExceptionType(swig_type_info *desc) { SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0; PyObject *klass = data ? data->klass : 0; return (klass ? klass : PyExc_RuntimeError); } SWIGRUNTIME SwigPyClientData * SwigPyClientData_New(PyObject* obj) { if (!obj) { return 0; } else { SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData)); /* the klass element */ data->klass = obj; Py_INCREF(data->klass); /* the newraw method and newargs arguments used to create a new raw instance */ if (PyClass_Check(obj)) { data->newraw = 0; data->newargs = obj; Py_INCREF(obj); } else { #if (PY_VERSION_HEX < 0x02020000) data->newraw = 0; #else data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__"); #endif if (data->newraw) { Py_INCREF(data->newraw); data->newargs = PyTuple_New(1); PyTuple_SetItem(data->newargs, 0, obj); } else { data->newargs = obj; } Py_INCREF(data->newargs); } /* the destroy method, aka as the C++ delete method */ data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__"); if (PyErr_Occurred()) { PyErr_Clear(); data->destroy = 0; } if (data->destroy) { int flags; Py_INCREF(data->destroy); flags = PyCFunction_GET_FLAGS(data->destroy); #ifdef METH_O data->delargs = !(flags & (METH_O)); #else data->delargs = 0; #endif } else { data->delargs = 0; } data->implicitconv = 0; data->pytype = 0; return data; } } SWIGRUNTIME void SwigPyClientData_Del(SwigPyClientData *data) { Py_XDECREF(data->newraw); Py_XDECREF(data->newargs); Py_XDECREF(data->destroy); } /* =============== SwigPyObject =====================*/ typedef struct { PyObject_HEAD void *ptr; swig_type_info *ty; int own; PyObject *next; #ifdef SWIGPYTHON_BUILTIN PyObject *dict; #endif } SwigPyObject; SWIGRUNTIME PyObject * SwigPyObject_long(SwigPyObject *v) { return PyLong_FromVoidPtr(v->ptr); } SWIGRUNTIME PyObject * SwigPyObject_format(const char* fmt, SwigPyObject *v) { PyObject *res = NULL; PyObject *args = PyTuple_New(1); if (args) { if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) { PyObject *ofmt = SWIG_Python_str_FromChar(fmt); if (ofmt) { #if PY_VERSION_HEX >= 0x03000000 res = PyUnicode_Format(ofmt,args); #else res = PyString_Format(ofmt,args); #endif Py_DECREF(ofmt); } Py_DECREF(args); } } return res; } SWIGRUNTIME PyObject * SwigPyObject_oct(SwigPyObject *v) { return SwigPyObject_format("%o",v); } SWIGRUNTIME PyObject * SwigPyObject_hex(SwigPyObject *v) { return SwigPyObject_format("%x",v); } SWIGRUNTIME PyObject * #ifdef METH_NOARGS SwigPyObject_repr(SwigPyObject *v) #else SwigPyObject_repr(SwigPyObject *v, PyObject *args) #endif { const char *name = SWIG_TypePrettyName(v->ty); PyObject *repr = SWIG_Python_str_FromFormat("", (name ? name : "unknown"), (void *)v); if (v->next) { # ifdef METH_NOARGS PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); # else PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args); # endif # if PY_VERSION_HEX >= 0x03000000 PyObject *joined = PyUnicode_Concat(repr, nrep); Py_DecRef(repr); Py_DecRef(nrep); repr = joined; # else PyString_ConcatAndDel(&repr,nrep); # endif } return repr; } SWIGRUNTIME int SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) { void *i = v->ptr; void *j = w->ptr; return (i < j) ? -1 : ((i > j) ? 1 : 0); } /* Added for Python 3.x, would it also be useful for Python 2.x? */ SWIGRUNTIME PyObject* SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op) { PyObject* res; if( op != Py_EQ && op != Py_NE ) { Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0); return res; } SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void); #ifdef SWIGPYTHON_BUILTIN static swig_type_info *SwigPyObject_stype = 0; SWIGRUNTIME PyTypeObject* SwigPyObject_type(void) { SwigPyClientData *cd; assert(SwigPyObject_stype); cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; assert(cd); assert(cd->pytype); return cd->pytype; } #else SWIGRUNTIME PyTypeObject* SwigPyObject_type(void) { static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce(); return type; } #endif SWIGRUNTIMEINLINE int SwigPyObject_Check(PyObject *op) { #ifdef SWIGPYTHON_BUILTIN PyTypeObject *target_tp = SwigPyObject_type(); if (PyType_IsSubtype(op->ob_type, target_tp)) return 1; return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0); #else return (Py_TYPE(op) == SwigPyObject_type()) || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0); #endif } SWIGRUNTIME PyObject * SwigPyObject_New(void *ptr, swig_type_info *ty, int own); SWIGRUNTIME void SwigPyObject_dealloc(PyObject *v) { SwigPyObject *sobj = (SwigPyObject *) v; PyObject *next = sobj->next; if (sobj->own == SWIG_POINTER_OWN) { swig_type_info *ty = sobj->ty; SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; PyObject *destroy = data ? data->destroy : 0; if (destroy) { /* destroy is always a VARARGS method */ PyObject *res; if (data->delargs) { /* we need to create a temporary object to carry the destroy operation */ PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0); res = SWIG_Python_CallFunctor(destroy, tmp); Py_DECREF(tmp); } else { PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); PyObject *mself = PyCFunction_GET_SELF(destroy); res = ((*meth)(mself, v)); } Py_XDECREF(res); } #if !defined(SWIG_PYTHON_SILENT_MEMLEAK) else { const char *name = SWIG_TypePrettyName(ty); printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); } #endif } Py_XDECREF(next); PyObject_DEL(v); } SWIGRUNTIME PyObject* SwigPyObject_append(PyObject* v, PyObject* next) { SwigPyObject *sobj = (SwigPyObject *) v; #ifndef METH_O PyObject *tmp = 0; if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL; next = tmp; #endif if (!SwigPyObject_Check(next)) { return NULL; } sobj->next = next; Py_INCREF(next); return SWIG_Py_Void(); } SWIGRUNTIME PyObject* #ifdef METH_NOARGS SwigPyObject_next(PyObject* v) #else SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *) v; if (sobj->next) { Py_INCREF(sobj->next); return sobj->next; } else { return SWIG_Py_Void(); } } SWIGINTERN PyObject* #ifdef METH_NOARGS SwigPyObject_disown(PyObject *v) #else SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *)v; sobj->own = 0; return SWIG_Py_Void(); } SWIGINTERN PyObject* #ifdef METH_NOARGS SwigPyObject_acquire(PyObject *v) #else SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *)v; sobj->own = SWIG_POINTER_OWN; return SWIG_Py_Void(); } SWIGINTERN PyObject* SwigPyObject_own(PyObject *v, PyObject *args) { PyObject *val = 0; #if (PY_VERSION_HEX < 0x02020000) if (!PyArg_ParseTuple(args,(char *)"|O:own",&val)) #elif (PY_VERSION_HEX < 0x02050000) if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) #else if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) #endif { return NULL; } else { SwigPyObject *sobj = (SwigPyObject *)v; PyObject *obj = PyBool_FromLong(sobj->own); if (val) { #ifdef METH_NOARGS if (PyObject_IsTrue(val)) { SwigPyObject_acquire(v); } else { SwigPyObject_disown(v); } #else if (PyObject_IsTrue(val)) { SwigPyObject_acquire(v,args); } else { SwigPyObject_disown(v,args); } #endif } return obj; } } #ifdef METH_O static PyMethodDef swigobject_methods[] = { {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"acquires ownership of the pointer"}, {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"}, {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"}, {0, 0, 0, 0} }; #else static PyMethodDef swigobject_methods[] = { {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_VARARGS, (char *)"releases ownership of the pointer"}, {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_VARARGS, (char *)"aquires ownership of the pointer"}, {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, {0, 0, 0, 0} }; #endif #if PY_VERSION_HEX < 0x02020000 SWIGINTERN PyObject * SwigPyObject_getattr(SwigPyObject *sobj,char *name) { return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name); } #endif SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void) { static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; static PyNumberMethods SwigPyObject_as_number = { (binaryfunc)0, /*nb_add*/ (binaryfunc)0, /*nb_subtract*/ (binaryfunc)0, /*nb_multiply*/ /* nb_divide removed in Python 3 */ #if PY_VERSION_HEX < 0x03000000 (binaryfunc)0, /*nb_divide*/ #endif (binaryfunc)0, /*nb_remainder*/ (binaryfunc)0, /*nb_divmod*/ (ternaryfunc)0,/*nb_power*/ (unaryfunc)0, /*nb_negative*/ (unaryfunc)0, /*nb_positive*/ (unaryfunc)0, /*nb_absolute*/ (inquiry)0, /*nb_nonzero*/ 0, /*nb_invert*/ 0, /*nb_lshift*/ 0, /*nb_rshift*/ 0, /*nb_and*/ 0, /*nb_xor*/ 0, /*nb_or*/ #if PY_VERSION_HEX < 0x03000000 0, /*nb_coerce*/ #endif (unaryfunc)SwigPyObject_long, /*nb_int*/ #if PY_VERSION_HEX < 0x03000000 (unaryfunc)SwigPyObject_long, /*nb_long*/ #else 0, /*nb_reserved*/ #endif (unaryfunc)0, /*nb_float*/ #if PY_VERSION_HEX < 0x03000000 (unaryfunc)SwigPyObject_oct, /*nb_oct*/ (unaryfunc)SwigPyObject_hex, /*nb_hex*/ #endif #if PY_VERSION_HEX >= 0x03000000 /* 3.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */ #elif PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ #elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ #elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */ 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ #endif }; static PyTypeObject swigpyobject_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX >= 0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"SwigPyObject", /* tp_name */ sizeof(SwigPyObject), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)SwigPyObject_dealloc, /* tp_dealloc */ 0, /* tp_print */ #if PY_VERSION_HEX < 0x02020000 (getattrfunc)SwigPyObject_getattr, /* tp_getattr */ #else (getattrfunc)0, /* tp_getattr */ #endif (setattrfunc)0, /* tp_setattr */ #if PY_VERSION_HEX >= 0x03000000 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */ #else (cmpfunc)SwigPyObject_compare, /* tp_compare */ #endif (reprfunc)SwigPyObject_repr, /* tp_repr */ &SwigPyObject_as_number, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)0, /* tp_hash */ (ternaryfunc)0, /* tp_call */ 0, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ swigobject_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0, /* tp_iter */ 0, /* tp_iternext */ swigobject_methods, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; swigpyobject_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 swigpyobject_type.ob_type = &PyType_Type; #else if (PyType_Ready(&swigpyobject_type) < 0) return NULL; #endif } return &swigpyobject_type; } SWIGRUNTIME PyObject * SwigPyObject_New(void *ptr, swig_type_info *ty, int own) { SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type()); if (sobj) { sobj->ptr = ptr; sobj->ty = ty; sobj->own = own; sobj->next = 0; } return (PyObject *)sobj; } /* ----------------------------------------------------------------------------- * Implements a simple Swig Packed type, and use it instead of string * ----------------------------------------------------------------------------- */ typedef struct { PyObject_HEAD void *pack; swig_type_info *ty; size_t size; } SwigPyPacked; SWIGRUNTIME int SwigPyPacked_print(SwigPyPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { char result[SWIG_BUFFER_SIZE]; fputs("pack, v->size, 0, sizeof(result))) { fputs("at ", fp); fputs(result, fp); } fputs(v->ty->name,fp); fputs(">", fp); return 0; } SWIGRUNTIME PyObject * SwigPyPacked_repr(SwigPyPacked *v) { char result[SWIG_BUFFER_SIZE]; if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { return SWIG_Python_str_FromFormat("", result, v->ty->name); } else { return SWIG_Python_str_FromFormat("", v->ty->name); } } SWIGRUNTIME PyObject * SwigPyPacked_str(SwigPyPacked *v) { char result[SWIG_BUFFER_SIZE]; if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name); } else { return SWIG_Python_str_FromChar(v->ty->name); } } SWIGRUNTIME int SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w) { size_t i = v->size; size_t j = w->size; int s = (i < j) ? -1 : ((i > j) ? 1 : 0); return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size); } SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void); SWIGRUNTIME PyTypeObject* SwigPyPacked_type(void) { static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce(); return type; } SWIGRUNTIMEINLINE int SwigPyPacked_Check(PyObject *op) { return ((op)->ob_type == SwigPyPacked_TypeOnce()) || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0); } SWIGRUNTIME void SwigPyPacked_dealloc(PyObject *v) { if (SwigPyPacked_Check(v)) { SwigPyPacked *sobj = (SwigPyPacked *) v; free(sobj->pack); } PyObject_DEL(v); } SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void) { static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; static PyTypeObject swigpypacked_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX>=0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"SwigPyPacked", /* tp_name */ sizeof(SwigPyPacked), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ (printfunc)SwigPyPacked_print, /* tp_print */ (getattrfunc)0, /* tp_getattr */ (setattrfunc)0, /* tp_setattr */ #if PY_VERSION_HEX>=0x03000000 0, /* tp_reserved in 3.0.1 */ #else (cmpfunc)SwigPyPacked_compare, /* tp_compare */ #endif (reprfunc)SwigPyPacked_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)0, /* tp_hash */ (ternaryfunc)0, /* tp_call */ (reprfunc)SwigPyPacked_str, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ swigpacked_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; swigpypacked_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 swigpypacked_type.ob_type = &PyType_Type; #else if (PyType_Ready(&swigpypacked_type) < 0) return NULL; #endif } return &swigpypacked_type; } SWIGRUNTIME PyObject * SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty) { SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type()); if (sobj) { void *pack = malloc(size); if (pack) { memcpy(pack, ptr, size); sobj->pack = pack; sobj->ty = ty; sobj->size = size; } else { PyObject_DEL((PyObject *) sobj); sobj = 0; } } return (PyObject *) sobj; } SWIGRUNTIME swig_type_info * SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size) { if (SwigPyPacked_Check(obj)) { SwigPyPacked *sobj = (SwigPyPacked *)obj; if (sobj->size != size) return 0; memcpy(ptr, sobj->pack, size); return sobj->ty; } else { return 0; } } /* ----------------------------------------------------------------------------- * pointers/data manipulation * ----------------------------------------------------------------------------- */ SWIGRUNTIMEINLINE PyObject * _SWIG_This(void) { return SWIG_Python_str_FromChar("this"); } static PyObject *swig_this = NULL; SWIGRUNTIME PyObject * SWIG_This(void) { if (swig_this == NULL) swig_this = _SWIG_This(); return swig_this; } /* #define SWIG_PYTHON_SLOW_GETSET_THIS */ /* TODO: I don't know how to implement the fast getset in Python 3 right now */ #if PY_VERSION_HEX>=0x03000000 #define SWIG_PYTHON_SLOW_GETSET_THIS #endif SWIGRUNTIME SwigPyObject * SWIG_Python_GetSwigThis(PyObject *pyobj) { PyObject *obj; if (SwigPyObject_Check(pyobj)) return (SwigPyObject *) pyobj; #ifdef SWIGPYTHON_BUILTIN (void)obj; # ifdef PyWeakref_CheckProxy if (PyWeakref_CheckProxy(pyobj)) { pyobj = PyWeakref_GET_OBJECT(pyobj); if (pyobj && SwigPyObject_Check(pyobj)) return (SwigPyObject*) pyobj; } # endif return NULL; #else obj = 0; #if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000)) if (PyInstance_Check(pyobj)) { obj = _PyInstance_Lookup(pyobj, SWIG_This()); } else { PyObject **dictptr = _PyObject_GetDictPtr(pyobj); if (dictptr != NULL) { PyObject *dict = *dictptr; obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; } else { #ifdef PyWeakref_CheckProxy if (PyWeakref_CheckProxy(pyobj)) { PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; } #endif obj = PyObject_GetAttr(pyobj,SWIG_This()); if (obj) { Py_DECREF(obj); } else { if (PyErr_Occurred()) PyErr_Clear(); return 0; } } } #else obj = PyObject_GetAttr(pyobj,SWIG_This()); if (obj) { Py_DECREF(obj); } else { if (PyErr_Occurred()) PyErr_Clear(); return 0; } #endif if (obj && !SwigPyObject_Check(obj)) { /* a PyObject is called 'this', try to get the 'real this' SwigPyObject from it */ return SWIG_Python_GetSwigThis(obj); } return (SwigPyObject *)obj; #endif } /* Acquire a pointer value */ SWIGRUNTIME int SWIG_Python_AcquirePtr(PyObject *obj, int own) { if (own == SWIG_POINTER_OWN) { SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); if (sobj) { int oldown = sobj->own; sobj->own = own; return oldown; } } return 0; } /* Convert a pointer value */ SWIGRUNTIME int SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { int res; SwigPyObject *sobj; int implicit_conv = (flags & SWIG_POINTER_IMPLICIT_CONV) != 0; if (!obj) return SWIG_ERROR; if (obj == Py_None && !implicit_conv) { if (ptr) *ptr = 0; return SWIG_OK; } res = SWIG_ERROR; sobj = SWIG_Python_GetSwigThis(obj); if (own) *own = 0; while (sobj) { void *vptr = sobj->ptr; if (ty) { swig_type_info *to = sobj->ty; if (to == ty) { /* no type cast needed */ if (ptr) *ptr = vptr; break; } else { swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); if (!tc) { sobj = (SwigPyObject *)sobj->next; } else { if (ptr) { int newmemory = 0; *ptr = SWIG_TypeCast(tc,vptr,&newmemory); if (newmemory == SWIG_CAST_NEW_MEMORY) { assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ if (own) *own = *own | SWIG_CAST_NEW_MEMORY; } } break; } } } else { if (ptr) *ptr = vptr; break; } } if (sobj) { if (own) *own = *own | sobj->own; if (flags & SWIG_POINTER_DISOWN) { sobj->own = 0; } res = SWIG_OK; } else { if (implicit_conv) { SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; if (data && !data->implicitconv) { PyObject *klass = data->klass; if (klass) { PyObject *impconv; data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ impconv = SWIG_Python_CallFunctor(klass, obj); data->implicitconv = 0; if (PyErr_Occurred()) { PyErr_Clear(); impconv = 0; } if (impconv) { SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv); if (iobj) { void *vptr; res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); if (SWIG_IsOK(res)) { if (ptr) { *ptr = vptr; /* transfer the ownership to 'ptr' */ iobj->own = 0; res = SWIG_AddCast(res); res = SWIG_AddNewMask(res); } else { res = SWIG_AddCast(res); } } } Py_DECREF(impconv); } } } } if (!SWIG_IsOK(res) && obj == Py_None) { if (ptr) *ptr = 0; if (PyErr_Occurred()) PyErr_Clear(); res = SWIG_OK; } } return res; } /* Convert a function ptr value */ SWIGRUNTIME int SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { if (!PyCFunction_Check(obj)) { return SWIG_ConvertPtr(obj, ptr, ty, 0); } else { void *vptr = 0; /* here we get the method pointer for callbacks */ const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; if (desc) desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; if (!desc) return SWIG_ERROR; if (ty) { swig_cast_info *tc = SWIG_TypeCheck(desc,ty); if (tc) { int newmemory = 0; *ptr = SWIG_TypeCast(tc,vptr,&newmemory); assert(!newmemory); /* newmemory handling not yet implemented */ } else { return SWIG_ERROR; } } else { *ptr = vptr; } return SWIG_OK; } } /* Convert a packed value value */ SWIGRUNTIME int SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz); if (!to) return SWIG_ERROR; if (ty) { if (to != ty) { /* check type cast? */ swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); if (!tc) return SWIG_ERROR; } } return SWIG_OK; } /* ----------------------------------------------------------------------------- * Create a new pointer object * ----------------------------------------------------------------------------- */ /* Create a new instance object, without calling __init__, and set the 'this' attribute. */ SWIGRUNTIME PyObject* SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this) { #if (PY_VERSION_HEX >= 0x02020000) PyObject *inst = 0; PyObject *newraw = data->newraw; if (newraw) { inst = PyObject_Call(newraw, data->newargs, NULL); if (inst) { #if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) PyObject **dictptr = _PyObject_GetDictPtr(inst); if (dictptr != NULL) { PyObject *dict = *dictptr; if (dict == NULL) { dict = PyDict_New(); *dictptr = dict; PyDict_SetItem(dict, SWIG_This(), swig_this); } } #else PyObject *key = SWIG_This(); PyObject_SetAttr(inst, key, swig_this); #endif } } else { #if PY_VERSION_HEX >= 0x03000000 inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None); if (inst) { PyObject_SetAttr(inst, SWIG_This(), swig_this); Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG; } #else PyObject *dict = PyDict_New(); if (dict) { PyDict_SetItem(dict, SWIG_This(), swig_this); inst = PyInstance_NewRaw(data->newargs, dict); Py_DECREF(dict); } #endif } return inst; #else #if (PY_VERSION_HEX >= 0x02010000) PyObject *inst = 0; PyObject *dict = PyDict_New(); if (dict) { PyDict_SetItem(dict, SWIG_This(), swig_this); inst = PyInstance_NewRaw(data->newargs, dict); Py_DECREF(dict); } return (PyObject *) inst; #else PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type); if (inst == NULL) { return NULL; } inst->in_class = (PyClassObject *)data->newargs; Py_INCREF(inst->in_class); inst->in_dict = PyDict_New(); if (inst->in_dict == NULL) { Py_DECREF(inst); return NULL; } #ifdef Py_TPFLAGS_HAVE_WEAKREFS inst->in_weakreflist = NULL; #endif #ifdef Py_TPFLAGS_GC PyObject_GC_Init(inst); #endif PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this); return (PyObject *) inst; #endif #endif } SWIGRUNTIME void SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) { PyObject *dict; #if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS) PyObject **dictptr = _PyObject_GetDictPtr(inst); if (dictptr != NULL) { dict = *dictptr; if (dict == NULL) { dict = PyDict_New(); *dictptr = dict; } PyDict_SetItem(dict, SWIG_This(), swig_this); return; } #endif dict = PyObject_GetAttrString(inst, (char*)"__dict__"); PyDict_SetItem(dict, SWIG_This(), swig_this); Py_DECREF(dict); } SWIGINTERN PyObject * SWIG_Python_InitShadowInstance(PyObject *args) { PyObject *obj[2]; if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) { return NULL; } else { SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]); if (sthis) { SwigPyObject_append((PyObject*) sthis, obj[1]); } else { SWIG_Python_SetSwigThis(obj[0], obj[1]); } return SWIG_Py_Void(); } } /* Create a new pointer object */ SWIGRUNTIME PyObject * SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) { SwigPyClientData *clientdata; PyObject * robj; int own; if (!ptr) return SWIG_Py_Void(); clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0; own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; if (clientdata && clientdata->pytype) { SwigPyObject *newobj; if (flags & SWIG_BUILTIN_TP_INIT) { newobj = (SwigPyObject*) self; if (newobj->ptr) { PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0); while (newobj->next) newobj = (SwigPyObject *) newobj->next; newobj->next = next_self; newobj = (SwigPyObject *)next_self; } } else { newobj = PyObject_New(SwigPyObject, clientdata->pytype); } if (newobj) { newobj->ptr = ptr; newobj->ty = type; newobj->own = own; newobj->next = 0; #ifdef SWIGPYTHON_BUILTIN newobj->dict = 0; #endif return (PyObject*) newobj; } return SWIG_Py_Void(); } assert(!(flags & SWIG_BUILTIN_TP_INIT)); robj = SwigPyObject_New(ptr, type, own); if (robj && clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); Py_DECREF(robj); robj = inst; } return robj; } /* Create a new packed object */ SWIGRUNTIMEINLINE PyObject * SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); } /* -----------------------------------------------------------------------------* * Get type list * -----------------------------------------------------------------------------*/ #ifdef SWIG_LINK_RUNTIME void *SWIG_ReturnGlobalTypeList(void *); #endif SWIGRUNTIME swig_module_info * SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { static void *type_pointer = (void *)0; /* first check if module already created */ if (!type_pointer) { #ifdef SWIG_LINK_RUNTIME type_pointer = SWIG_ReturnGlobalTypeList((void *)0); #else # ifdef SWIGPY_USE_CAPSULE type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); # else type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME); # endif if (PyErr_Occurred()) { PyErr_Clear(); type_pointer = (void *)0; } #endif } return (swig_module_info *) type_pointer; } #if PY_MAJOR_VERSION < 2 /* PyModule_AddObject function was introduced in Python 2.0. The following function is copied out of Python/modsupport.c in python version 2.3.4 */ SWIGINTERN int PyModule_AddObject(PyObject *m, char *name, PyObject *o) { PyObject *dict; if (!PyModule_Check(m)) { PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs module as first arg"); return SWIG_ERROR; } if (!o) { PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs non-NULL value"); return SWIG_ERROR; } dict = PyModule_GetDict(m); if (dict == NULL) { /* Internal error -- modules must have a dict! */ PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__", PyModule_GetName(m)); return SWIG_ERROR; } if (PyDict_SetItemString(dict, name, o)) return SWIG_ERROR; Py_DECREF(o); return SWIG_OK; } #endif SWIGRUNTIME void #ifdef SWIGPY_USE_CAPSULE SWIG_Python_DestroyModule(PyObject *obj) #else SWIG_Python_DestroyModule(void *vptr) #endif { #ifdef SWIGPY_USE_CAPSULE swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME); #else swig_module_info *swig_module = (swig_module_info *) vptr; #endif swig_type_info **types = swig_module->types; size_t i; for (i =0; i < swig_module->size; ++i) { swig_type_info *ty = types[i]; if (ty->owndata) { SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; if (data) SwigPyClientData_Del(data); } } Py_DECREF(SWIG_This()); swig_this = NULL; } SWIGRUNTIME void SWIG_Python_SetModule(swig_module_info *swig_module) { #if PY_VERSION_HEX >= 0x03000000 /* Add a dummy module object into sys.modules */ PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION); #else static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table); #endif #ifdef SWIGPY_USE_CAPSULE PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); if (pointer && module) { PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer); } else { Py_XDECREF(pointer); } #else PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule); if (pointer && module) { PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer); } else { Py_XDECREF(pointer); } #endif } /* The python cached type query */ SWIGRUNTIME PyObject * SWIG_Python_TypeCache(void) { static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); return cache; } SWIGRUNTIME swig_type_info * SWIG_Python_TypeQuery(const char *type) { PyObject *cache = SWIG_Python_TypeCache(); PyObject *key = SWIG_Python_str_FromChar(type); PyObject *obj = PyDict_GetItem(cache, key); swig_type_info *descriptor; if (obj) { #ifdef SWIGPY_USE_CAPSULE descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL); #else descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj); #endif } else { swig_module_info *swig_module = SWIG_GetModule(0); descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); if (descriptor) { #ifdef SWIGPY_USE_CAPSULE obj = PyCapsule_New((void*) descriptor, NULL, NULL); #else obj = PyCObject_FromVoidPtr(descriptor, NULL); #endif PyDict_SetItem(cache, key, obj); Py_DECREF(obj); } } Py_DECREF(key); return descriptor; } /* For backward compatibility only */ #define SWIG_POINTER_EXCEPTION 0 #define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) #define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) SWIGRUNTIME int SWIG_Python_AddErrMesg(const char* mesg, int infront) { if (PyErr_Occurred()) { PyObject *type = 0; PyObject *value = 0; PyObject *traceback = 0; PyErr_Fetch(&type, &value, &traceback); if (value) { char *tmp; PyObject *old_str = PyObject_Str(value); Py_XINCREF(type); PyErr_Clear(); if (infront) { PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str)); } else { PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); } SWIG_Python_str_DelForPy3(tmp); Py_DECREF(old_str); } return 1; } else { return 0; } } SWIGRUNTIME int SWIG_Python_ArgFail(int argnum) { if (PyErr_Occurred()) { /* add information about failing argument */ char mesg[256]; PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); return SWIG_Python_AddErrMesg(mesg, 1); } else { return 0; } } SWIGRUNTIMEINLINE const char * SwigPyObject_GetDesc(PyObject *self) { SwigPyObject *v = (SwigPyObject *)self; swig_type_info *ty = v ? v->ty : 0; return ty ? ty->str : ""; } SWIGRUNTIME void SWIG_Python_TypeError(const char *type, PyObject *obj) { if (type) { #if defined(SWIG_COBJECT_TYPES) if (obj && SwigPyObject_Check(obj)) { const char *otype = (const char *) SwigPyObject_GetDesc(obj); if (otype) { PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received", type, otype); return; } } else #endif { const char *otype = (obj ? obj->ob_type->tp_name : 0); if (otype) { PyObject *str = PyObject_Str(obj); const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0; if (cstr) { PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", type, otype, cstr); SWIG_Python_str_DelForPy3(cstr); } else { PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", type, otype); } Py_XDECREF(str); return; } } PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); } else { PyErr_Format(PyExc_TypeError, "unexpected type is received"); } } /* Convert a pointer value, signal an exception on a type mismatch */ SWIGRUNTIME void * SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) { void *result; if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { PyErr_Clear(); #if SWIG_POINTER_EXCEPTION if (flags) { SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); SWIG_Python_ArgFail(argnum); } #endif } return result; } #ifdef SWIGPYTHON_BUILTIN SWIGRUNTIME int SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) { PyTypeObject *tp = obj->ob_type; PyObject *descr; PyObject *encoded_name; descrsetfunc f; int res = -1; # ifdef Py_USING_UNICODE if (PyString_Check(name)) { name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL); if (!name) return -1; } else if (!PyUnicode_Check(name)) # else if (!PyString_Check(name)) # endif { PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name); return -1; } else { Py_INCREF(name); } if (!tp->tp_dict) { if (PyType_Ready(tp) < 0) goto done; } descr = _PyType_Lookup(tp, name); f = NULL; if (descr != NULL) f = descr->ob_type->tp_descr_set; if (!f) { if (PyString_Check(name)) { encoded_name = name; Py_INCREF(name); } else { encoded_name = PyUnicode_AsUTF8String(name); } PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name)); Py_DECREF(encoded_name); } else { res = f(descr, obj, value); } done: Py_DECREF(name); return res; } #endif #ifdef __cplusplus } #endif #define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else /* -------- TYPES TABLE (BEGIN) -------- */ #define SWIGTYPE_p_char swig_types[0] #define SWIGTYPE_p_im_col_tab_disp swig_types[1] #define SWIGTYPE_p_matrix swig_types[2] #define SWIGTYPE_p_vips__VDisplay swig_types[3] #define SWIGTYPE_p_vips__VError swig_types[4] #define SWIGTYPE_p_void swig_types[5] static swig_type_info *swig_types[7]; static swig_module_info swig_module = {swig_types, 6, 0, 0, 0, 0}; #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) /* -------- TYPES TABLE (END) -------- */ #if (PY_VERSION_HEX <= 0x02000000) # if !defined(SWIG_PYTHON_CLASSIC) # error "This python version requires swig to be run with the '-classic' option" # endif #endif /*----------------------------------------------- @(target):= vdisplaymodule.so ------------------------------------------------*/ #if PY_VERSION_HEX >= 0x03000000 # define SWIG_init PyInit_vdisplaymodule #else # define SWIG_init initvdisplaymodule #endif #define SWIG_name "vdisplaymodule" #define SWIGVERSION 0x020012 #define SWIG_VERSION SWIGVERSION #define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a)) #include namespace swig { class SwigPtr_PyObject { protected: PyObject *_obj; public: SwigPtr_PyObject() :_obj(0) { } SwigPtr_PyObject(const SwigPtr_PyObject& item) : _obj(item._obj) { Py_XINCREF(_obj); } SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj) { if (initial_ref) { Py_XINCREF(_obj); } } SwigPtr_PyObject & operator=(const SwigPtr_PyObject& item) { Py_XINCREF(item._obj); Py_XDECREF(_obj); _obj = item._obj; return *this; } ~SwigPtr_PyObject() { Py_XDECREF(_obj); } operator PyObject *() const { return _obj; } PyObject *operator->() const { return _obj; } }; } namespace swig { struct SwigVar_PyObject : SwigPtr_PyObject { SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { } SwigVar_PyObject & operator = (PyObject* obj) { Py_XDECREF(_obj); _obj = obj; return *this; } }; } #include SWIGINTERNINLINE PyObject* SWIG_From_int (int value) { return PyInt_FromLong((long) value); } SWIGINTERN swig_type_info* SWIG_pchar_descriptor(void) { static int init = 0; static swig_type_info* info = 0; if (!init) { info = SWIG_TypeQuery("_p_char"); init = 1; } return info; } SWIGINTERN int SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) { #if PY_VERSION_HEX>=0x03000000 if (PyUnicode_Check(obj)) #else if (PyString_Check(obj)) #endif { char *cstr; Py_ssize_t len; #if PY_VERSION_HEX>=0x03000000 if (!alloc && cptr) { /* We can't allow converting without allocation, since the internal representation of string in Python 3 is UCS-2/UCS-4 but we require a UTF-8 representation. TODO(bhy) More detailed explanation */ return SWIG_RuntimeError; } obj = PyUnicode_AsUTF8String(obj); PyBytes_AsStringAndSize(obj, &cstr, &len); if(alloc) *alloc = SWIG_NEWOBJ; #else PyString_AsStringAndSize(obj, &cstr, &len); #endif if (cptr) { if (alloc) { /* In python the user should not be able to modify the inner string representation. To warranty that, if you define SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string buffer is always returned. The default behavior is just to return the pointer value, so, be careful. */ #if defined(SWIG_PYTHON_SAFE_CSTRINGS) if (*alloc != SWIG_OLDOBJ) #else if (*alloc == SWIG_NEWOBJ) #endif { *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1))); *alloc = SWIG_NEWOBJ; } else { *cptr = cstr; *alloc = SWIG_OLDOBJ; } } else { #if PY_VERSION_HEX>=0x03000000 assert(0); /* Should never reach here in Python 3 */ #endif *cptr = SWIG_Python_str_AsChar(obj); } } if (psize) *psize = len + 1; #if PY_VERSION_HEX>=0x03000000 Py_XDECREF(obj); #endif return SWIG_OK; } else { swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); if (pchar_descriptor) { void* vptr = 0; if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { if (cptr) *cptr = (char *) vptr; if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; if (alloc) *alloc = SWIG_OLDOBJ; return SWIG_OK; } } } return SWIG_TypeError; } #ifdef __cplusplus extern "C" { #endif SWIGINTERN PyObject *_wrap_new_VDisplay__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VDisplay *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_VDisplay",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VDisplay" "', argument " "1"" of type '" "char const *""'"); } arg1 = reinterpret_cast< char * >(buf1); try { result = (vips::VDisplay *)new vips::VDisplay((char const *)arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VDisplay, SWIG_POINTER_NEW | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_new_VDisplay__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDisplay *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_VDisplay")) SWIG_fail; result = (vips::VDisplay *)new vips::VDisplay(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VDisplay, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VDisplay__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDisplay *arg1 = 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VDisplay *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_VDisplay",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_vips__VDisplay, 0 | 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VDisplay" "', argument " "1"" of type '" "vips::VDisplay const &""'"); } if (!argp1) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_VDisplay" "', argument " "1"" of type '" "vips::VDisplay const &""'"); } arg1 = reinterpret_cast< vips::VDisplay * >(argp1); result = (vips::VDisplay *)new vips::VDisplay((vips::VDisplay const &)*arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VDisplay, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VDisplay(PyObject *self, PyObject *args) { int argc; PyObject *argv[2]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 1) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_new_VDisplay__SWIG_1(self, args); } if (argc == 1) { int _v; int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_vips__VDisplay, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VDisplay__SWIG_2(self, args); } } if (argc == 1) { int _v; int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VDisplay__SWIG_0(self, args); } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_VDisplay'.\n" " Possible C/C++ prototypes are:\n" " vips::VDisplay::VDisplay(char const *)\n" " vips::VDisplay::VDisplay()\n" " vips::VDisplay::VDisplay(vips::VDisplay const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_VDisplay___assign__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDisplay *arg1 = (vips::VDisplay *) 0 ; vips::VDisplay *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VDisplay *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VDisplay___assign__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDisplay, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDisplay___assign__" "', argument " "1"" of type '" "vips::VDisplay *""'"); } arg1 = reinterpret_cast< vips::VDisplay * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDisplay, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VDisplay___assign__" "', argument " "2"" of type '" "vips::VDisplay const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VDisplay___assign__" "', argument " "2"" of type '" "vips::VDisplay const &""'"); } arg2 = reinterpret_cast< vips::VDisplay * >(argp2); result = (vips::VDisplay *) &(arg1)->operator =((vips::VDisplay const &)*arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VDisplay, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_delete_VDisplay(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDisplay *arg1 = (vips::VDisplay *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_VDisplay",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDisplay, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_VDisplay" "', argument " "1"" of type '" "vips::VDisplay *""'"); } arg1 = reinterpret_cast< vips::VDisplay * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDisplay_disp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDisplay *arg1 = (vips::VDisplay *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; void *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VDisplay_disp",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDisplay, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDisplay_disp" "', argument " "1"" of type '" "vips::VDisplay const *""'"); } arg1 = reinterpret_cast< vips::VDisplay * >(argp1); result = (void *)((vips::VDisplay const *)arg1)->disp(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDisplay_luts(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDisplay *arg1 = (vips::VDisplay *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; im_col_tab_disp *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VDisplay_luts",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDisplay, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDisplay_luts" "', argument " "1"" of type '" "vips::VDisplay const *""'"); } arg1 = reinterpret_cast< vips::VDisplay * >(argp1); try { result = (im_col_tab_disp *)((vips::VDisplay const *)arg1)->luts(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_im_col_tab_disp, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *VDisplay_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_vips__VDisplay, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } static PyMethodDef SwigMethods[] = { { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL}, { (char *)"new_VDisplay", _wrap_new_VDisplay, METH_VARARGS, NULL}, { (char *)"VDisplay___assign__", _wrap_VDisplay___assign__, METH_VARARGS, NULL}, { (char *)"delete_VDisplay", _wrap_delete_VDisplay, METH_VARARGS, NULL}, { (char *)"VDisplay_disp", _wrap_VDisplay_disp, METH_VARARGS, NULL}, { (char *)"VDisplay_luts", _wrap_VDisplay_luts, METH_VARARGS, NULL}, { (char *)"VDisplay_swigregister", VDisplay_swigregister, METH_VARARGS, NULL}, { NULL, NULL, 0, NULL } }; /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_im_col_tab_disp = {"_p_im_col_tab_disp", "im_col_tab_disp *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_matrix = {"_p_matrix", "matrix *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VDisplay = {"_p_vips__VDisplay", "vips::VDisplay *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VError = {"_p_vips__VError", "vips::VError *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0}; static swig_type_info *swig_type_initial[] = { &_swigt__p_char, &_swigt__p_im_col_tab_disp, &_swigt__p_matrix, &_swigt__p_vips__VDisplay, &_swigt__p_vips__VError, &_swigt__p_void, }; static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_im_col_tab_disp[] = { {&_swigt__p_im_col_tab_disp, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_matrix[] = { {&_swigt__p_matrix, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VDisplay[] = { {&_swigt__p_vips__VDisplay, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VError[] = { {&_swigt__p_vips__VError, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info *swig_cast_initial[] = { _swigc__p_char, _swigc__p_im_col_tab_disp, _swigc__p_matrix, _swigc__p_vips__VDisplay, _swigc__p_vips__VError, _swigc__p_void, }; /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ static swig_const_info swig_const_table[] = { {0, 0, 0, 0.0, 0, 0}}; #ifdef __cplusplus } #endif /* ----------------------------------------------------------------------------- * Type initialization: * This problem is tough by the requirement that no dynamic * memory is used. Also, since swig_type_info structures store pointers to * swig_cast_info structures and swig_cast_info structures store pointers back * to swig_type_info structures, we need some lookup code at initialization. * The idea is that swig generates all the structures that are needed. * The runtime then collects these partially filled structures. * The SWIG_InitializeModule function takes these initial arrays out of * swig_module, and does all the lookup, filling in the swig_module.types * array with the correct data and linking the correct swig_cast_info * structures together. * * The generated swig_type_info structures are assigned staticly to an initial * array. We just loop through that array, and handle each type individually. * First we lookup if this type has been already loaded, and if so, use the * loaded structure instead of the generated one. Then we have to fill in the * cast linked list. The cast data is initially stored in something like a * two-dimensional array. Each row corresponds to a type (there are the same * number of rows as there are in the swig_type_initial array). Each entry in * a column is one of the swig_cast_info structures for that type. * The cast_initial array is actually an array of arrays, because each row has * a variable number of columns. So to actually build the cast linked list, * we find the array of casts associated with the type, and loop through it * adding the casts to the list. The one last trick we need to do is making * sure the type pointer in the swig_cast_info struct is correct. * * First off, we lookup the cast->type name to see if it is already loaded. * There are three cases to handle: * 1) If the cast->type has already been loaded AND the type we are adding * casting info to has not been loaded (it is in this module), THEN we * replace the cast->type pointer with the type pointer that has already * been loaded. * 2) If BOTH types (the one we are adding casting info to, and the * cast->type) are loaded, THEN the cast info has already been loaded by * the previous module so we just ignore it. * 3) Finally, if cast->type has not already been loaded, then we add that * swig_cast_info to the linked list (because the cast->type) pointer will * be correct. * ----------------------------------------------------------------------------- */ #ifdef __cplusplus extern "C" { #if 0 } /* c-mode */ #endif #endif #if 0 #define SWIGRUNTIME_DEBUG #endif SWIGRUNTIME void SWIG_InitializeModule(void *clientdata) { size_t i; swig_module_info *module_head, *iter; int found, init; /* check to see if the circular list has been setup, if not, set it up */ if (swig_module.next==0) { /* Initialize the swig_module */ swig_module.type_initial = swig_type_initial; swig_module.cast_initial = swig_cast_initial; swig_module.next = &swig_module; init = 1; } else { init = 0; } /* Try and load any already created modules */ module_head = SWIG_GetModule(clientdata); if (!module_head) { /* This is the first module loaded for this interpreter */ /* so set the swig module into the interpreter */ SWIG_SetModule(clientdata, &swig_module); module_head = &swig_module; } else { /* the interpreter has loaded a SWIG module, but has it loaded this one? */ found=0; iter=module_head; do { if (iter==&swig_module) { found=1; break; } iter=iter->next; } while (iter!= module_head); /* if the is found in the list, then all is done and we may leave */ if (found) return; /* otherwise we must add out module into the list */ swig_module.next = module_head->next; module_head->next = &swig_module; } /* When multiple interpreters are used, a module could have already been initialized in a different interpreter, but not yet have a pointer in this interpreter. In this case, we do not want to continue adding types... everything should be set up already */ if (init == 0) return; /* Now work on filling in swig_module.types */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: size %d\n", swig_module.size); #endif for (i = 0; i < swig_module.size; ++i) { swig_type_info *type = 0; swig_type_info *ret; swig_cast_info *cast; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); #endif /* if there is another module already loaded */ if (swig_module.next != &swig_module) { type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); } if (type) { /* Overwrite clientdata field */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: found type %s\n", type->name); #endif if (swig_module.type_initial[i]->clientdata) { type->clientdata = swig_module.type_initial[i]->clientdata; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); #endif } } else { type = swig_module.type_initial[i]; } /* Insert casting types */ cast = swig_module.cast_initial[i]; while (cast->type) { /* Don't need to add information already in the list */ ret = 0; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); #endif if (swig_module.next != &swig_module) { ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); #ifdef SWIGRUNTIME_DEBUG if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); #endif } if (ret) { if (type == swig_module.type_initial[i]) { #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: skip old type %s\n", ret->name); #endif cast->type = ret; ret = 0; } else { /* Check for casting already in the list */ swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); #ifdef SWIGRUNTIME_DEBUG if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); #endif if (!ocast) ret = 0; } } if (!ret) { #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); #endif if (type->cast) { type->cast->prev = cast; cast->next = type->cast; } type->cast = cast; } cast++; } /* Set entry in modules->types array equal to the type */ swig_module.types[i] = type; } swig_module.types[i] = 0; #ifdef SWIGRUNTIME_DEBUG printf("**** SWIG_InitializeModule: Cast List ******\n"); for (i = 0; i < swig_module.size; ++i) { int j = 0; swig_cast_info *cast = swig_module.cast_initial[i]; printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); while (cast->type) { printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); cast++; ++j; } printf("---- Total casts: %d\n",j); } printf("**** SWIG_InitializeModule: Cast List ******\n"); #endif } /* This function will propagate the clientdata field of type to * any new swig_type_info structures that have been added into the list * of equivalent types. It is like calling * SWIG_TypeClientData(type, clientdata) a second time. */ SWIGRUNTIME void SWIG_PropagateClientData(void) { size_t i; swig_cast_info *equiv; static int init_run = 0; if (init_run) return; init_run = 1; for (i = 0; i < swig_module.size; i++) { if (swig_module.types[i]->clientdata) { equiv = swig_module.types[i]->cast; while (equiv) { if (!equiv->converter) { if (equiv->type && !equiv->type->clientdata) SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); } equiv = equiv->next; } } } } #ifdef __cplusplus #if 0 { /* c-mode */ #endif } #endif #ifdef __cplusplus extern "C" { #endif /* Python-specific SWIG API */ #define SWIG_newvarlink() SWIG_Python_newvarlink() #define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) #define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) /* ----------------------------------------------------------------------------- * global variable support code. * ----------------------------------------------------------------------------- */ typedef struct swig_globalvar { char *name; /* Name of global variable */ PyObject *(*get_attr)(void); /* Return the current value */ int (*set_attr)(PyObject *); /* Set the value */ struct swig_globalvar *next; } swig_globalvar; typedef struct swig_varlinkobject { PyObject_HEAD swig_globalvar *vars; } swig_varlinkobject; SWIGINTERN PyObject * swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_InternFromString(""); #else return PyString_FromString(""); #endif } SWIGINTERN PyObject * swig_varlink_str(swig_varlinkobject *v) { #if PY_VERSION_HEX >= 0x03000000 PyObject *str = PyUnicode_InternFromString("("); PyObject *tail; PyObject *joined; swig_globalvar *var; for (var = v->vars; var; var=var->next) { tail = PyUnicode_FromString(var->name); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; if (var->next) { tail = PyUnicode_InternFromString(", "); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; } } tail = PyUnicode_InternFromString(")"); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; #else PyObject *str = PyString_FromString("("); swig_globalvar *var; for (var = v->vars; var; var=var->next) { PyString_ConcatAndDel(&str,PyString_FromString(var->name)); if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); } PyString_ConcatAndDel(&str,PyString_FromString(")")); #endif return str; } SWIGINTERN int swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { char *tmp; PyObject *str = swig_varlink_str(v); fprintf(fp,"Swig global variables "); fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str)); SWIG_Python_str_DelForPy3(tmp); Py_DECREF(str); return 0; } SWIGINTERN void swig_varlink_dealloc(swig_varlinkobject *v) { swig_globalvar *var = v->vars; while (var) { swig_globalvar *n = var->next; free(var->name); free(var); var = n; } } SWIGINTERN PyObject * swig_varlink_getattr(swig_varlinkobject *v, char *n) { PyObject *res = NULL; swig_globalvar *var = v->vars; while (var) { if (strcmp(var->name,n) == 0) { res = (*var->get_attr)(); break; } var = var->next; } if (res == NULL && !PyErr_Occurred()) { PyErr_SetString(PyExc_NameError,"Unknown C global variable"); } return res; } SWIGINTERN int swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { int res = 1; swig_globalvar *var = v->vars; while (var) { if (strcmp(var->name,n) == 0) { res = (*var->set_attr)(p); break; } var = var->next; } if (res == 1 && !PyErr_Occurred()) { PyErr_SetString(PyExc_NameError,"Unknown C global variable"); } return res; } SWIGINTERN PyTypeObject* swig_varlink_type(void) { static char varlink__doc__[] = "Swig var link object"; static PyTypeObject varlink_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX >= 0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"swigvarlink", /* tp_name */ sizeof(swig_varlinkobject), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor) swig_varlink_dealloc, /* tp_dealloc */ (printfunc) swig_varlink_print, /* tp_print */ (getattrfunc) swig_varlink_getattr, /* tp_getattr */ (setattrfunc) swig_varlink_setattr, /* tp_setattr */ 0, /* tp_compare */ (reprfunc) swig_varlink_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ (reprfunc) swig_varlink_str, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ 0, /* tp_flags */ varlink__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; varlink_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 varlink_type.ob_type = &PyType_Type; #else if (PyType_Ready(&varlink_type) < 0) return NULL; #endif } return &varlink_type; } /* Create a variable linking object for use later */ SWIGINTERN PyObject * SWIG_Python_newvarlink(void) { swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); if (result) { result->vars = 0; } return ((PyObject*) result); } SWIGINTERN void SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { swig_varlinkobject *v = (swig_varlinkobject *) p; swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); if (gv) { size_t size = strlen(name)+1; gv->name = (char *)malloc(size); if (gv->name) { strncpy(gv->name,name,size); gv->get_attr = get_attr; gv->set_attr = set_attr; gv->next = v->vars; } } v->vars = gv; } SWIGINTERN PyObject * SWIG_globals(void) { static PyObject *_SWIG_globals = 0; if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink(); return _SWIG_globals; } /* ----------------------------------------------------------------------------- * constants/methods manipulation * ----------------------------------------------------------------------------- */ /* Install Constants */ SWIGINTERN void SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { PyObject *obj = 0; size_t i; for (i = 0; constants[i].type; ++i) { switch(constants[i].type) { case SWIG_PY_POINTER: obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); break; case SWIG_PY_BINARY: obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); break; default: obj = 0; break; } if (obj) { PyDict_SetItemString(d, constants[i].name, obj); Py_DECREF(obj); } } } /* -----------------------------------------------------------------------------*/ /* Fix SwigMethods to carry the callback ptrs when needed */ /* -----------------------------------------------------------------------------*/ SWIGINTERN void SWIG_Python_FixMethods(PyMethodDef *methods, swig_const_info *const_table, swig_type_info **types, swig_type_info **types_initial) { size_t i; for (i = 0; methods[i].ml_name; ++i) { const char *c = methods[i].ml_doc; if (c && (c = strstr(c, "swig_ptr: "))) { int j; swig_const_info *ci = 0; const char *name = c + 10; for (j = 0; const_table[j].type; ++j) { if (strncmp(const_table[j].name, name, strlen(const_table[j].name)) == 0) { ci = &(const_table[j]); break; } } if (ci) { void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; if (ptr) { size_t shift = (ci->ptype) - types; swig_type_info *ty = types_initial[shift]; size_t ldoc = (c - methods[i].ml_doc); size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; char *ndoc = (char*)malloc(ldoc + lptr + 10); if (ndoc) { char *buff = ndoc; strncpy(buff, methods[i].ml_doc, ldoc); buff += ldoc; strncpy(buff, "swig_ptr: ", 10); buff += 10; SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); methods[i].ml_doc = ndoc; } } } } } } #ifdef __cplusplus } #endif /* -----------------------------------------------------------------------------* * Partial Init method * -----------------------------------------------------------------------------*/ #ifdef __cplusplus extern "C" #endif SWIGEXPORT #if PY_VERSION_HEX >= 0x03000000 PyObject* #else void #endif SWIG_init(void) { PyObject *m, *d, *md; #if PY_VERSION_HEX >= 0x03000000 static struct PyModuleDef SWIG_module = { # if PY_VERSION_HEX >= 0x03020000 PyModuleDef_HEAD_INIT, # else { PyObject_HEAD_INIT(NULL) NULL, /* m_init */ 0, /* m_index */ NULL, /* m_copy */ }, # endif (char *) SWIG_name, NULL, -1, SwigMethods, NULL, NULL, NULL, NULL }; #endif #if defined(SWIGPYTHON_BUILTIN) static SwigPyClientData SwigPyObject_clientdata = { 0, 0, 0, 0, 0, 0, 0 }; static PyGetSetDef this_getset_def = { (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL }; static SwigPyGetSet thisown_getset_closure = { (PyCFunction) SwigPyObject_own, (PyCFunction) SwigPyObject_own }; static PyGetSetDef thisown_getset_def = { (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure }; PyObject *metatype_args; PyTypeObject *builtin_pytype; int builtin_base_count; swig_type_info *builtin_basetype; PyObject *tuple; PyGetSetDescrObject *static_getset; PyTypeObject *metatype; SwigPyClientData *cd; PyObject *public_interface, *public_symbol; PyObject *this_descr; PyObject *thisown_descr; int i; (void)builtin_pytype; (void)builtin_base_count; (void)builtin_basetype; (void)tuple; (void)static_getset; /* metatype is used to implement static member variables. */ metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type); assert(metatype_args); metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL); assert(metatype); Py_DECREF(metatype_args); metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro; assert(PyType_Ready(metatype) >= 0); #endif /* Fix SwigMethods to carry the callback ptrs when needed */ SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); #if PY_VERSION_HEX >= 0x03000000 m = PyModule_Create(&SWIG_module); #else m = Py_InitModule((char *) SWIG_name, SwigMethods); #endif md = d = PyModule_GetDict(m); (void)md; SWIG_InitializeModule(0); #ifdef SWIGPYTHON_BUILTIN SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject"); assert(SwigPyObject_stype); cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; if (!cd) { SwigPyObject_stype->clientdata = &SwigPyObject_clientdata; SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce(); } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) { PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules."); # if PY_VERSION_HEX >= 0x03000000 return NULL; # else return; # endif } /* All objects have a 'this' attribute */ this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def); (void)this_descr; /* All objects have a 'thisown' attribute */ thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def); (void)thisown_descr; public_interface = PyList_New(0); public_symbol = 0; (void)public_symbol; PyDict_SetItemString(md, "__all__", public_interface); Py_DECREF(public_interface); for (i = 0; SwigMethods[i].ml_name != NULL; ++i) SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name); for (i = 0; swig_const_table[i].name != 0; ++i) SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name); #endif SWIG_InstallConstants(d,swig_const_table); SWIG_Python_SetConstant(d, "VDisplay_BARCO",SWIG_From_int(static_cast< int >(vips::VDisplay::BARCO))); SWIG_Python_SetConstant(d, "VDisplay_DUMB",SWIG_From_int(static_cast< int >(vips::VDisplay::DUMB))); #if PY_VERSION_HEX >= 0x03000000 return m; #else return; #endif } vips-8.2.2/swig/vipsCC/vmaskmodule.cxx0000664000175000017500000066661512651721415014672 00000000000000/* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). * Version 2.0.12 * * This file is not intended to be easily readable and contains a number of * coding conventions designed to improve portability and efficiency. Do not make * changes to this file unless you know what you are doing--modify the SWIG * interface file instead. * ----------------------------------------------------------------------------- */ #define SWIGPYTHON #define SWIG_PYTHON_DIRECTOR_NO_VTABLE #ifdef __cplusplus /* SwigValueWrapper is described in swig.swg */ template class SwigValueWrapper { struct SwigMovePointer { T *ptr; SwigMovePointer(T *p) : ptr(p) { } ~SwigMovePointer() { delete ptr; } SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } } pointer; SwigValueWrapper& operator=(const SwigValueWrapper& rhs); SwigValueWrapper(const SwigValueWrapper& rhs); public: SwigValueWrapper() : pointer(0) { } SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } operator T&() const { return *pointer.ptr; } T *operator&() { return pointer.ptr; } }; template T SwigValueInit() { return T(); } #endif /* ----------------------------------------------------------------------------- * This section contains generic SWIG labels for method/variable * declarations/attributes, and other compiler dependent labels. * ----------------------------------------------------------------------------- */ /* template workaround for compilers that cannot correctly implement the C++ standard */ #ifndef SWIGTEMPLATEDISAMBIGUATOR # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) # define SWIGTEMPLATEDISAMBIGUATOR template # elif defined(__HP_aCC) /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ # define SWIGTEMPLATEDISAMBIGUATOR template # else # define SWIGTEMPLATEDISAMBIGUATOR # endif #endif /* inline attribute */ #ifndef SWIGINLINE # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) # define SWIGINLINE inline # else # define SWIGINLINE # endif #endif /* attribute recognised by some compilers to avoid 'unused' warnings */ #ifndef SWIGUNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define SWIGUNUSED __attribute__ ((__unused__)) # else # define SWIGUNUSED # endif # elif defined(__ICC) # define SWIGUNUSED __attribute__ ((__unused__)) # else # define SWIGUNUSED # endif #endif #ifndef SWIG_MSC_UNSUPPRESS_4505 # if defined(_MSC_VER) # pragma warning(disable : 4505) /* unreferenced local function has been removed */ # endif #endif #ifndef SWIGUNUSEDPARM # ifdef __cplusplus # define SWIGUNUSEDPARM(p) # else # define SWIGUNUSEDPARM(p) p SWIGUNUSED # endif #endif /* internal SWIG method */ #ifndef SWIGINTERN # define SWIGINTERN static SWIGUNUSED #endif /* internal inline SWIG method */ #ifndef SWIGINTERNINLINE # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE #endif /* exporting methods */ #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # ifndef GCC_HASCLASSVISIBILITY # define GCC_HASCLASSVISIBILITY # endif #endif #ifndef SWIGEXPORT # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # if defined(STATIC_LINKED) # define SWIGEXPORT # else # define SWIGEXPORT __declspec(dllexport) # endif # else # if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) # define SWIGEXPORT __attribute__ ((visibility("default"))) # else # define SWIGEXPORT # endif # endif #endif /* calling conventions for Windows */ #ifndef SWIGSTDCALL # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # define SWIGSTDCALL __stdcall # else # define SWIGSTDCALL # endif #endif /* Deal with Microsoft's attempt at deprecating C standard runtime functions */ #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) # define _CRT_SECURE_NO_DEPRECATE #endif /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) # define _SCL_SECURE_NO_DEPRECATE #endif #if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) /* Use debug wrappers with the Python release dll */ # undef _DEBUG # include # define _DEBUG #else # include #endif /* ----------------------------------------------------------------------------- * swigrun.swg * * This file contains generic C API SWIG runtime support for pointer * type checking. * ----------------------------------------------------------------------------- */ /* This should only be incremented when either the layout of swig_type_info changes, or for whatever reason, the runtime changes incompatibly */ #define SWIG_RUNTIME_VERSION "4" /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ #ifdef SWIG_TYPE_TABLE # define SWIG_QUOTE_STRING(x) #x # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) #else # define SWIG_TYPE_TABLE_NAME #endif /* You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for creating a static or dynamic library from the SWIG runtime code. In 99.9% of the cases, SWIG just needs to declare them as 'static'. But only do this if strictly necessary, ie, if you have problems with your compiler or suchlike. */ #ifndef SWIGRUNTIME # define SWIGRUNTIME SWIGINTERN #endif #ifndef SWIGRUNTIMEINLINE # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE #endif /* Generic buffer size */ #ifndef SWIG_BUFFER_SIZE # define SWIG_BUFFER_SIZE 1024 #endif /* Flags for pointer conversions */ #define SWIG_POINTER_DISOWN 0x1 #define SWIG_CAST_NEW_MEMORY 0x2 /* Flags for new pointer objects */ #define SWIG_POINTER_OWN 0x1 /* Flags/methods for returning states. The SWIG conversion methods, as ConvertPtr, return an integer that tells if the conversion was successful or not. And if not, an error code can be returned (see swigerrors.swg for the codes). Use the following macros/flags to set or process the returning states. In old versions of SWIG, code such as the following was usually written: if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { // success code } else { //fail code } Now you can be more explicit: int res = SWIG_ConvertPtr(obj,vptr,ty.flags); if (SWIG_IsOK(res)) { // success code } else { // fail code } which is the same really, but now you can also do Type *ptr; int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); if (SWIG_IsOK(res)) { // success code if (SWIG_IsNewObj(res) { ... delete *ptr; } else { ... } } else { // fail code } I.e., now SWIG_ConvertPtr can return new objects and you can identify the case and take care of the deallocation. Of course that also requires SWIG_ConvertPtr to return new result values, such as int SWIG_ConvertPtr(obj, ptr,...) { if () { if () { *ptr = ; return SWIG_NEWOBJ; } else { *ptr = ; return SWIG_OLDOBJ; } } else { return SWIG_BADOBJ; } } Of course, returning the plain '0(success)/-1(fail)' still works, but you can be more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the SWIG errors code. Finally, if the SWIG_CASTRANK_MODE is enabled, the result code allows to return the 'cast rank', for example, if you have this int food(double) int fooi(int); and you call food(1) // cast rank '1' (1 -> 1.0) fooi(1) // cast rank '0' just use the SWIG_AddCast()/SWIG_CheckState() */ #define SWIG_OK (0) #define SWIG_ERROR (-1) #define SWIG_IsOK(r) (r >= 0) #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) /* The CastRankLimit says how many bits are used for the cast rank */ #define SWIG_CASTRANKLIMIT (1 << 8) /* The NewMask denotes the object was created (using new/malloc) */ #define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) /* The TmpMask is for in/out typemaps that use temporal objects */ #define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) /* Simple returning values */ #define SWIG_BADOBJ (SWIG_ERROR) #define SWIG_OLDOBJ (SWIG_OK) #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) /* Check, add and del mask methods */ #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) #define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) /* Cast-Rank Mode */ #if defined(SWIG_CASTRANK_MODE) # ifndef SWIG_TypeRank # define SWIG_TypeRank unsigned long # endif # ifndef SWIG_MAXCASTRANK /* Default cast allowed */ # define SWIG_MAXCASTRANK (2) # endif # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) SWIGINTERNINLINE int SWIG_AddCast(int r) { return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; } SWIGINTERNINLINE int SWIG_CheckState(int r) { return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; } #else /* no cast-rank mode */ # define SWIG_AddCast(r) (r) # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) #endif #include #ifdef __cplusplus extern "C" { #endif typedef void *(*swig_converter_func)(void *, int *); typedef struct swig_type_info *(*swig_dycast_func)(void **); /* Structure to store information on one type */ typedef struct swig_type_info { const char *name; /* mangled name of this type */ const char *str; /* human readable name of this type */ swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ struct swig_cast_info *cast; /* linked list of types that can cast into this type */ void *clientdata; /* language specific type data */ int owndata; /* flag if the structure owns the clientdata */ } swig_type_info; /* Structure to store a type and conversion function used for casting */ typedef struct swig_cast_info { swig_type_info *type; /* pointer to type that is equivalent to this type */ swig_converter_func converter; /* function to cast the void pointers */ struct swig_cast_info *next; /* pointer to next cast in linked list */ struct swig_cast_info *prev; /* pointer to the previous cast */ } swig_cast_info; /* Structure used to store module information * Each module generates one structure like this, and the runtime collects * all of these structures and stores them in a circularly linked list.*/ typedef struct swig_module_info { swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ size_t size; /* Number of types in this module */ struct swig_module_info *next; /* Pointer to next element in circularly linked list */ swig_type_info **type_initial; /* Array of initially generated type structures */ swig_cast_info **cast_initial; /* Array of initially generated casting structures */ void *clientdata; /* Language specific module data */ } swig_module_info; /* Compare two type names skipping the space characters, therefore "char*" == "char *" and "Class" == "Class", etc. Return 0 when the two name types are equivalent, as in strncmp, but skipping ' '. */ SWIGRUNTIME int SWIG_TypeNameComp(const char *f1, const char *l1, const char *f2, const char *l2) { for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { while ((*f1 == ' ') && (f1 != l1)) ++f1; while ((*f2 == ' ') && (f2 != l2)) ++f2; if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; } return (int)((l1 - f1) - (l2 - f2)); } /* Check type equivalence in a name list like ||... Return 0 if equal, -1 if nb < tb, 1 if nb > tb */ SWIGRUNTIME int SWIG_TypeCmp(const char *nb, const char *tb) { int equiv = 1; const char* te = tb + strlen(tb); const char* ne = nb; while (equiv != 0 && *ne) { for (nb = ne; *ne; ++ne) { if (*ne == '|') break; } equiv = SWIG_TypeNameComp(nb, ne, tb, te); if (*ne) ++ne; } return equiv; } /* Check type equivalence in a name list like ||... Return 0 if not equal, 1 if equal */ SWIGRUNTIME int SWIG_TypeEquiv(const char *nb, const char *tb) { return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0; } /* Check the typename */ SWIGRUNTIME swig_cast_info * SWIG_TypeCheck(const char *c, swig_type_info *ty) { if (ty) { swig_cast_info *iter = ty->cast; while (iter) { if (strcmp(iter->type->name, c) == 0) { if (iter == ty->cast) return iter; /* Move iter to the top of the linked list */ iter->prev->next = iter->next; if (iter->next) iter->next->prev = iter->prev; iter->next = ty->cast; iter->prev = 0; if (ty->cast) ty->cast->prev = iter; ty->cast = iter; return iter; } iter = iter->next; } } return 0; } /* Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison */ SWIGRUNTIME swig_cast_info * SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { if (ty) { swig_cast_info *iter = ty->cast; while (iter) { if (iter->type == from) { if (iter == ty->cast) return iter; /* Move iter to the top of the linked list */ iter->prev->next = iter->next; if (iter->next) iter->next->prev = iter->prev; iter->next = ty->cast; iter->prev = 0; if (ty->cast) ty->cast->prev = iter; ty->cast = iter; return iter; } iter = iter->next; } } return 0; } /* Cast a pointer up an inheritance hierarchy */ SWIGRUNTIMEINLINE void * SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); } /* Dynamic pointer casting. Down an inheritance hierarchy */ SWIGRUNTIME swig_type_info * SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { swig_type_info *lastty = ty; if (!ty || !ty->dcast) return ty; while (ty && (ty->dcast)) { ty = (*ty->dcast)(ptr); if (ty) lastty = ty; } return lastty; } /* Return the name associated with this type */ SWIGRUNTIMEINLINE const char * SWIG_TypeName(const swig_type_info *ty) { return ty->name; } /* Return the pretty name associated with this type, that is an unmangled type name in a form presentable to the user. */ SWIGRUNTIME const char * SWIG_TypePrettyName(const swig_type_info *type) { /* The "str" field contains the equivalent pretty names of the type, separated by vertical-bar characters. We choose to print the last name, as it is often (?) the most specific. */ if (!type) return NULL; if (type->str != NULL) { const char *last_name = type->str; const char *s; for (s = type->str; *s; s++) if (*s == '|') last_name = s+1; return last_name; } else return type->name; } /* Set the clientdata field for a type */ SWIGRUNTIME void SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { swig_cast_info *cast = ti->cast; /* if (ti->clientdata == clientdata) return; */ ti->clientdata = clientdata; while (cast) { if (!cast->converter) { swig_type_info *tc = cast->type; if (!tc->clientdata) { SWIG_TypeClientData(tc, clientdata); } } cast = cast->next; } } SWIGRUNTIME void SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { SWIG_TypeClientData(ti, clientdata); ti->owndata = 1; } /* Search for a swig_type_info structure only by mangled name Search is a O(log #types) We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list. */ SWIGRUNTIME swig_type_info * SWIG_MangledTypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name) { swig_module_info *iter = start; do { if (iter->size) { register size_t l = 0; register size_t r = iter->size - 1; do { /* since l+r >= 0, we can (>> 1) instead (/ 2) */ register size_t i = (l + r) >> 1; const char *iname = iter->types[i]->name; if (iname) { register int compare = strcmp(name, iname); if (compare == 0) { return iter->types[i]; } else if (compare < 0) { if (i) { r = i - 1; } else { break; } } else if (compare > 0) { l = i + 1; } } else { break; /* should never happen */ } } while (l <= r); } iter = iter->next; } while (iter != end); return 0; } /* Search for a swig_type_info structure for either a mangled name or a human readable name. It first searches the mangled names of the types, which is a O(log #types) If a type is not found it then searches the human readable names, which is O(#types). We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list. */ SWIGRUNTIME swig_type_info * SWIG_TypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name) { /* STEP 1: Search the name field using binary search */ swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); if (ret) { return ret; } else { /* STEP 2: If the type hasn't been found, do a complete search of the str field (the human readable name) */ swig_module_info *iter = start; do { register size_t i = 0; for (; i < iter->size; ++i) { if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) return iter->types[i]; } iter = iter->next; } while (iter != end); } /* neither found a match */ return 0; } /* Pack binary data into a string */ SWIGRUNTIME char * SWIG_PackData(char *c, void *ptr, size_t sz) { static const char hex[17] = "0123456789abcdef"; register const unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register unsigned char uu = *u; *(c++) = hex[(uu & 0xf0) >> 4]; *(c++) = hex[uu & 0xf]; } return c; } /* Unpack binary data from a string */ SWIGRUNTIME const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) { register unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register char d = *(c++); register unsigned char uu; if ((d >= '0') && (d <= '9')) uu = ((d - '0') << 4); else if ((d >= 'a') && (d <= 'f')) uu = ((d - ('a'-10)) << 4); else return (char *) 0; d = *(c++); if ((d >= '0') && (d <= '9')) uu |= (d - '0'); else if ((d >= 'a') && (d <= 'f')) uu |= (d - ('a'-10)); else return (char *) 0; *u = uu; } return c; } /* Pack 'void *' into a string buffer. */ SWIGRUNTIME char * SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { char *r = buff; if ((2*sizeof(void *) + 2) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,&ptr,sizeof(void *)); if (strlen(name) + 1 > (bsz - (r - buff))) return 0; strcpy(r,name); return buff; } SWIGRUNTIME const char * SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { *ptr = (void *) 0; return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sizeof(void *)); } SWIGRUNTIME char * SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { char *r = buff; size_t lname = (name ? strlen(name) : 0); if ((2*sz + 2 + lname) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,ptr,sz); if (lname) { strncpy(r,name,lname+1); } else { *r = 0; } return buff; } SWIGRUNTIME const char * SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { memset(ptr,0,sz); return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sz); } #ifdef __cplusplus } #endif /* Errors in SWIG */ #define SWIG_UnknownError -1 #define SWIG_IOError -2 #define SWIG_RuntimeError -3 #define SWIG_IndexError -4 #define SWIG_TypeError -5 #define SWIG_DivisionByZero -6 #define SWIG_OverflowError -7 #define SWIG_SyntaxError -8 #define SWIG_ValueError -9 #define SWIG_SystemError -10 #define SWIG_AttributeError -11 #define SWIG_MemoryError -12 #define SWIG_NullReferenceError -13 /* Compatibility macros for Python 3 */ #if PY_VERSION_HEX >= 0x03000000 #define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type) #define PyInt_Check(x) PyLong_Check(x) #define PyInt_AsLong(x) PyLong_AsLong(x) #define PyInt_FromLong(x) PyLong_FromLong(x) #define PyInt_FromSize_t(x) PyLong_FromSize_t(x) #define PyString_Check(name) PyBytes_Check(name) #define PyString_FromString(x) PyUnicode_FromString(x) #define PyString_Format(fmt, args) PyUnicode_Format(fmt, args) #define PyString_AsString(str) PyBytes_AsString(str) #define PyString_Size(str) PyBytes_Size(str) #define PyString_InternFromString(key) PyUnicode_InternFromString(key) #define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE #define PyString_AS_STRING(x) PyUnicode_AS_STRING(x) #define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x) #endif #ifndef Py_TYPE # define Py_TYPE(op) ((op)->ob_type) #endif /* SWIG APIs for compatibility of both Python 2 & 3 */ #if PY_VERSION_HEX >= 0x03000000 # define SWIG_Python_str_FromFormat PyUnicode_FromFormat #else # define SWIG_Python_str_FromFormat PyString_FromFormat #endif /* Warning: This function will allocate a new string in Python 3, * so please call SWIG_Python_str_DelForPy3(x) to free the space. */ SWIGINTERN char* SWIG_Python_str_AsChar(PyObject *str) { #if PY_VERSION_HEX >= 0x03000000 char *cstr; char *newstr; Py_ssize_t len; str = PyUnicode_AsUTF8String(str); PyBytes_AsStringAndSize(str, &cstr, &len); newstr = (char *) malloc(len+1); memcpy(newstr, cstr, len+1); Py_XDECREF(str); return newstr; #else return PyString_AsString(str); #endif } #if PY_VERSION_HEX >= 0x03000000 # define SWIG_Python_str_DelForPy3(x) free( (void*) (x) ) #else # define SWIG_Python_str_DelForPy3(x) #endif SWIGINTERN PyObject* SWIG_Python_str_FromChar(const char *c) { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_FromString(c); #else return PyString_FromString(c); #endif } /* Add PyOS_snprintf for old Pythons */ #if PY_VERSION_HEX < 0x02020000 # if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM) # define PyOS_snprintf _snprintf # else # define PyOS_snprintf snprintf # endif #endif /* A crude PyString_FromFormat implementation for old Pythons */ #if PY_VERSION_HEX < 0x02020000 #ifndef SWIG_PYBUFFER_SIZE # define SWIG_PYBUFFER_SIZE 1024 #endif static PyObject * PyString_FromFormat(const char *fmt, ...) { va_list ap; char buf[SWIG_PYBUFFER_SIZE * 2]; int res; va_start(ap, fmt); res = vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf); } #endif /* Add PyObject_Del for old Pythons */ #if PY_VERSION_HEX < 0x01060000 # define PyObject_Del(op) PyMem_DEL((op)) #endif #ifndef PyObject_DEL # define PyObject_DEL PyObject_Del #endif /* A crude PyExc_StopIteration exception for old Pythons */ #if PY_VERSION_HEX < 0x02020000 # ifndef PyExc_StopIteration # define PyExc_StopIteration PyExc_RuntimeError # endif # ifndef PyObject_GenericGetAttr # define PyObject_GenericGetAttr 0 # endif #endif /* Py_NotImplemented is defined in 2.1 and up. */ #if PY_VERSION_HEX < 0x02010000 # ifndef Py_NotImplemented # define Py_NotImplemented PyExc_RuntimeError # endif #endif /* A crude PyString_AsStringAndSize implementation for old Pythons */ #if PY_VERSION_HEX < 0x02010000 # ifndef PyString_AsStringAndSize # define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;} # endif #endif /* PySequence_Size for old Pythons */ #if PY_VERSION_HEX < 0x02000000 # ifndef PySequence_Size # define PySequence_Size PySequence_Length # endif #endif /* PyBool_FromLong for old Pythons */ #if PY_VERSION_HEX < 0x02030000 static PyObject *PyBool_FromLong(long ok) { PyObject *result = ok ? Py_True : Py_False; Py_INCREF(result); return result; } #endif /* Py_ssize_t for old Pythons */ /* This code is as recommended by: */ /* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */ #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) typedef int Py_ssize_t; # define PY_SSIZE_T_MAX INT_MAX # define PY_SSIZE_T_MIN INT_MIN typedef inquiry lenfunc; typedef intargfunc ssizeargfunc; typedef intintargfunc ssizessizeargfunc; typedef intobjargproc ssizeobjargproc; typedef intintobjargproc ssizessizeobjargproc; typedef getreadbufferproc readbufferproc; typedef getwritebufferproc writebufferproc; typedef getsegcountproc segcountproc; typedef getcharbufferproc charbufferproc; static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc)) { long result = 0; PyObject *i = PyNumber_Int(x); if (i) { result = PyInt_AsLong(i); Py_DECREF(i); } return result; } #endif #if PY_VERSION_HEX < 0x02050000 #define PyInt_FromSize_t(x) PyInt_FromLong((long)x) #endif #if PY_VERSION_HEX < 0x02040000 #define Py_VISIT(op) \ do { \ if (op) { \ int vret = visit((op), arg); \ if (vret) \ return vret; \ } \ } while (0) #endif #if PY_VERSION_HEX < 0x02030000 typedef struct { PyTypeObject type; PyNumberMethods as_number; PyMappingMethods as_mapping; PySequenceMethods as_sequence; PyBufferProcs as_buffer; PyObject *name, *slots; } PyHeapTypeObject; #endif #if PY_VERSION_HEX < 0x02030000 typedef destructor freefunc; #endif #if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \ (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \ (PY_MAJOR_VERSION > 3)) # define SWIGPY_USE_CAPSULE # define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME) #endif #if PY_VERSION_HEX < 0x03020000 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) #endif /* ----------------------------------------------------------------------------- * error manipulation * ----------------------------------------------------------------------------- */ SWIGRUNTIME PyObject* SWIG_Python_ErrorType(int code) { PyObject* type = 0; switch(code) { case SWIG_MemoryError: type = PyExc_MemoryError; break; case SWIG_IOError: type = PyExc_IOError; break; case SWIG_RuntimeError: type = PyExc_RuntimeError; break; case SWIG_IndexError: type = PyExc_IndexError; break; case SWIG_TypeError: type = PyExc_TypeError; break; case SWIG_DivisionByZero: type = PyExc_ZeroDivisionError; break; case SWIG_OverflowError: type = PyExc_OverflowError; break; case SWIG_SyntaxError: type = PyExc_SyntaxError; break; case SWIG_ValueError: type = PyExc_ValueError; break; case SWIG_SystemError: type = PyExc_SystemError; break; case SWIG_AttributeError: type = PyExc_AttributeError; break; default: type = PyExc_RuntimeError; } return type; } SWIGRUNTIME void SWIG_Python_AddErrorMsg(const char* mesg) { PyObject *type = 0; PyObject *value = 0; PyObject *traceback = 0; if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback); if (value) { char *tmp; PyObject *old_str = PyObject_Str(value); PyErr_Clear(); Py_XINCREF(type); PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); SWIG_Python_str_DelForPy3(tmp); Py_DECREF(old_str); Py_DECREF(value); } else { PyErr_SetString(PyExc_RuntimeError, mesg); } } #if defined(SWIG_PYTHON_NO_THREADS) # if defined(SWIG_PYTHON_THREADS) # undef SWIG_PYTHON_THREADS # endif #endif #if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ # if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) # if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */ # define SWIG_PYTHON_USE_GIL # endif # endif # if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ # ifndef SWIG_PYTHON_INITIALIZE_THREADS # define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() # endif # ifdef __cplusplus /* C++ code */ class SWIG_Python_Thread_Block { bool status; PyGILState_STATE state; public: void end() { if (status) { PyGILState_Release(state); status = false;} } SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} ~SWIG_Python_Thread_Block() { end(); } }; class SWIG_Python_Thread_Allow { bool status; PyThreadState *save; public: void end() { if (status) { PyEval_RestoreThread(save); status = false; }} SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} ~SWIG_Python_Thread_Allow() { end(); } }; # define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block # define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() # define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow # define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() # else /* C code */ # define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() # define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) # define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() # define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) # endif # else /* Old thread way, not implemented, user must provide it */ # if !defined(SWIG_PYTHON_INITIALIZE_THREADS) # define SWIG_PYTHON_INITIALIZE_THREADS # endif # if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) # define SWIG_PYTHON_THREAD_BEGIN_BLOCK # endif # if !defined(SWIG_PYTHON_THREAD_END_BLOCK) # define SWIG_PYTHON_THREAD_END_BLOCK # endif # if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) # define SWIG_PYTHON_THREAD_BEGIN_ALLOW # endif # if !defined(SWIG_PYTHON_THREAD_END_ALLOW) # define SWIG_PYTHON_THREAD_END_ALLOW # endif # endif #else /* No thread support */ # define SWIG_PYTHON_INITIALIZE_THREADS # define SWIG_PYTHON_THREAD_BEGIN_BLOCK # define SWIG_PYTHON_THREAD_END_BLOCK # define SWIG_PYTHON_THREAD_BEGIN_ALLOW # define SWIG_PYTHON_THREAD_END_ALLOW #endif /* ----------------------------------------------------------------------------- * Python API portion that goes into the runtime * ----------------------------------------------------------------------------- */ #ifdef __cplusplus extern "C" { #endif /* ----------------------------------------------------------------------------- * Constant declarations * ----------------------------------------------------------------------------- */ /* Constant Types */ #define SWIG_PY_POINTER 4 #define SWIG_PY_BINARY 5 /* Constant information structure */ typedef struct swig_const_info { int type; char *name; long lvalue; double dvalue; void *pvalue; swig_type_info **ptype; } swig_const_info; /* ----------------------------------------------------------------------------- * Wrapper of PyInstanceMethod_New() used in Python 3 * It is exported to the generated module, used for -fastproxy * ----------------------------------------------------------------------------- */ #if PY_VERSION_HEX >= 0x03000000 SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) { return PyInstanceMethod_New(func); } #else SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(func)) { return NULL; } #endif #ifdef __cplusplus } #endif /* ----------------------------------------------------------------------------- * pyrun.swg * * This file contains the runtime support for Python modules * and includes code for managing global variables and pointer * type checking. * * ----------------------------------------------------------------------------- */ /* Common SWIG API */ /* for raw pointers */ #define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) #define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) #define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) #ifdef SWIGPYTHON_BUILTIN #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(self, ptr, type, flags) #else #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) #endif #define SWIG_InternalNewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) #define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) #define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) #define swig_owntype int /* for raw packed data */ #define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) /* for class or struct pointers */ #define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) #define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) /* for C or C++ function pointers */ #define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) #define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(NULL, ptr, type, 0) /* for C++ member pointers, ie, member methods */ #define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) /* Runtime API */ #define SWIG_GetModule(clientdata) SWIG_Python_GetModule(clientdata) #define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) #define SWIG_NewClientData(obj) SwigPyClientData_New(obj) #define SWIG_SetErrorObj SWIG_Python_SetErrorObj #define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg #define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) #define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) #define SWIG_fail goto fail /* Runtime API implementation */ /* Error manipulation */ SWIGINTERN void SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { SWIG_PYTHON_THREAD_BEGIN_BLOCK; PyErr_SetObject(errtype, obj); Py_DECREF(obj); SWIG_PYTHON_THREAD_END_BLOCK; } SWIGINTERN void SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { SWIG_PYTHON_THREAD_BEGIN_BLOCK; PyErr_SetString(errtype, msg); SWIG_PYTHON_THREAD_END_BLOCK; } #define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) /* Set a constant value */ #if defined(SWIGPYTHON_BUILTIN) SWIGINTERN void SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) { PyObject *s = PyString_InternFromString(key); PyList_Append(seq, s); Py_DECREF(s); } SWIGINTERN void SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) { #if PY_VERSION_HEX < 0x02030000 PyDict_SetItemString(d, (char *)name, obj); #else PyDict_SetItemString(d, name, obj); #endif Py_DECREF(obj); if (public_interface) SwigPyBuiltin_AddPublicSymbol(public_interface, name); } #else SWIGINTERN void SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { #if PY_VERSION_HEX < 0x02030000 PyDict_SetItemString(d, (char *)name, obj); #else PyDict_SetItemString(d, name, obj); #endif Py_DECREF(obj); } #endif /* Append a value to the result obj */ SWIGINTERN PyObject* SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { #if !defined(SWIG_PYTHON_OUTPUT_TUPLE) if (!result) { result = obj; } else if (result == Py_None) { Py_DECREF(result); result = obj; } else { if (!PyList_Check(result)) { PyObject *o2 = result; result = PyList_New(1); PyList_SetItem(result, 0, o2); } PyList_Append(result,obj); Py_DECREF(obj); } return result; #else PyObject* o2; PyObject* o3; if (!result) { result = obj; } else if (result == Py_None) { Py_DECREF(result); result = obj; } else { if (!PyTuple_Check(result)) { o2 = result; result = PyTuple_New(1); PyTuple_SET_ITEM(result, 0, o2); } o3 = PyTuple_New(1); PyTuple_SET_ITEM(o3, 0, obj); o2 = result; result = PySequence_Concat(o2, o3); Py_DECREF(o2); Py_DECREF(o3); } return result; #endif } /* Unpack the argument tuple */ SWIGINTERN int SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) { if (!args) { if (!min && !max) { return 1; } else { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", name, (min == max ? "" : "at least "), (int)min); return 0; } } if (!PyTuple_Check(args)) { if (min <= 1 && max >= 1) { register int i; objs[0] = args; for (i = 1; i < max; ++i) { objs[i] = 0; } return 2; } PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); return 0; } else { register Py_ssize_t l = PyTuple_GET_SIZE(args); if (l < min) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", name, (min == max ? "" : "at least "), (int)min, (int)l); return 0; } else if (l > max) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", name, (min == max ? "" : "at most "), (int)max, (int)l); return 0; } else { register int i; for (i = 0; i < l; ++i) { objs[i] = PyTuple_GET_ITEM(args, i); } for (; l < max; ++l) { objs[l] = 0; } return i + 1; } } } /* A functor is a function object with one single object argument */ #if PY_VERSION_HEX >= 0x02020000 #define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); #else #define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, "O", obj); #endif /* Helper for static pointer initialization for both C and C++ code, for example static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); */ #ifdef __cplusplus #define SWIG_STATIC_POINTER(var) var #else #define SWIG_STATIC_POINTER(var) var = 0; if (!var) var #endif /* ----------------------------------------------------------------------------- * Pointer declarations * ----------------------------------------------------------------------------- */ /* Flags for new pointer objects */ #define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) #define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) #define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) #define SWIG_BUILTIN_TP_INIT (SWIG_POINTER_OWN << 2) #define SWIG_BUILTIN_INIT (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN) #ifdef __cplusplus extern "C" { #endif /* How to access Py_None */ #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # ifndef SWIG_PYTHON_NO_BUILD_NONE # ifndef SWIG_PYTHON_BUILD_NONE # define SWIG_PYTHON_BUILD_NONE # endif # endif #endif #ifdef SWIG_PYTHON_BUILD_NONE # ifdef Py_None # undef Py_None # define Py_None SWIG_Py_None() # endif SWIGRUNTIMEINLINE PyObject * _SWIG_Py_None(void) { PyObject *none = Py_BuildValue((char*)""); Py_DECREF(none); return none; } SWIGRUNTIME PyObject * SWIG_Py_None(void) { static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None(); return none; } #endif /* The python void return value */ SWIGRUNTIMEINLINE PyObject * SWIG_Py_Void(void) { PyObject *none = Py_None; Py_INCREF(none); return none; } /* SwigPyClientData */ typedef struct { PyObject *klass; PyObject *newraw; PyObject *newargs; PyObject *destroy; int delargs; int implicitconv; PyTypeObject *pytype; } SwigPyClientData; SWIGRUNTIMEINLINE int SWIG_Python_CheckImplicit(swig_type_info *ty) { SwigPyClientData *data = (SwigPyClientData *)ty->clientdata; return data ? data->implicitconv : 0; } SWIGRUNTIMEINLINE PyObject * SWIG_Python_ExceptionType(swig_type_info *desc) { SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0; PyObject *klass = data ? data->klass : 0; return (klass ? klass : PyExc_RuntimeError); } SWIGRUNTIME SwigPyClientData * SwigPyClientData_New(PyObject* obj) { if (!obj) { return 0; } else { SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData)); /* the klass element */ data->klass = obj; Py_INCREF(data->klass); /* the newraw method and newargs arguments used to create a new raw instance */ if (PyClass_Check(obj)) { data->newraw = 0; data->newargs = obj; Py_INCREF(obj); } else { #if (PY_VERSION_HEX < 0x02020000) data->newraw = 0; #else data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__"); #endif if (data->newraw) { Py_INCREF(data->newraw); data->newargs = PyTuple_New(1); PyTuple_SetItem(data->newargs, 0, obj); } else { data->newargs = obj; } Py_INCREF(data->newargs); } /* the destroy method, aka as the C++ delete method */ data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__"); if (PyErr_Occurred()) { PyErr_Clear(); data->destroy = 0; } if (data->destroy) { int flags; Py_INCREF(data->destroy); flags = PyCFunction_GET_FLAGS(data->destroy); #ifdef METH_O data->delargs = !(flags & (METH_O)); #else data->delargs = 0; #endif } else { data->delargs = 0; } data->implicitconv = 0; data->pytype = 0; return data; } } SWIGRUNTIME void SwigPyClientData_Del(SwigPyClientData *data) { Py_XDECREF(data->newraw); Py_XDECREF(data->newargs); Py_XDECREF(data->destroy); } /* =============== SwigPyObject =====================*/ typedef struct { PyObject_HEAD void *ptr; swig_type_info *ty; int own; PyObject *next; #ifdef SWIGPYTHON_BUILTIN PyObject *dict; #endif } SwigPyObject; SWIGRUNTIME PyObject * SwigPyObject_long(SwigPyObject *v) { return PyLong_FromVoidPtr(v->ptr); } SWIGRUNTIME PyObject * SwigPyObject_format(const char* fmt, SwigPyObject *v) { PyObject *res = NULL; PyObject *args = PyTuple_New(1); if (args) { if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) { PyObject *ofmt = SWIG_Python_str_FromChar(fmt); if (ofmt) { #if PY_VERSION_HEX >= 0x03000000 res = PyUnicode_Format(ofmt,args); #else res = PyString_Format(ofmt,args); #endif Py_DECREF(ofmt); } Py_DECREF(args); } } return res; } SWIGRUNTIME PyObject * SwigPyObject_oct(SwigPyObject *v) { return SwigPyObject_format("%o",v); } SWIGRUNTIME PyObject * SwigPyObject_hex(SwigPyObject *v) { return SwigPyObject_format("%x",v); } SWIGRUNTIME PyObject * #ifdef METH_NOARGS SwigPyObject_repr(SwigPyObject *v) #else SwigPyObject_repr(SwigPyObject *v, PyObject *args) #endif { const char *name = SWIG_TypePrettyName(v->ty); PyObject *repr = SWIG_Python_str_FromFormat("", (name ? name : "unknown"), (void *)v); if (v->next) { # ifdef METH_NOARGS PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); # else PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args); # endif # if PY_VERSION_HEX >= 0x03000000 PyObject *joined = PyUnicode_Concat(repr, nrep); Py_DecRef(repr); Py_DecRef(nrep); repr = joined; # else PyString_ConcatAndDel(&repr,nrep); # endif } return repr; } SWIGRUNTIME int SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) { void *i = v->ptr; void *j = w->ptr; return (i < j) ? -1 : ((i > j) ? 1 : 0); } /* Added for Python 3.x, would it also be useful for Python 2.x? */ SWIGRUNTIME PyObject* SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op) { PyObject* res; if( op != Py_EQ && op != Py_NE ) { Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0); return res; } SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void); #ifdef SWIGPYTHON_BUILTIN static swig_type_info *SwigPyObject_stype = 0; SWIGRUNTIME PyTypeObject* SwigPyObject_type(void) { SwigPyClientData *cd; assert(SwigPyObject_stype); cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; assert(cd); assert(cd->pytype); return cd->pytype; } #else SWIGRUNTIME PyTypeObject* SwigPyObject_type(void) { static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce(); return type; } #endif SWIGRUNTIMEINLINE int SwigPyObject_Check(PyObject *op) { #ifdef SWIGPYTHON_BUILTIN PyTypeObject *target_tp = SwigPyObject_type(); if (PyType_IsSubtype(op->ob_type, target_tp)) return 1; return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0); #else return (Py_TYPE(op) == SwigPyObject_type()) || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0); #endif } SWIGRUNTIME PyObject * SwigPyObject_New(void *ptr, swig_type_info *ty, int own); SWIGRUNTIME void SwigPyObject_dealloc(PyObject *v) { SwigPyObject *sobj = (SwigPyObject *) v; PyObject *next = sobj->next; if (sobj->own == SWIG_POINTER_OWN) { swig_type_info *ty = sobj->ty; SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; PyObject *destroy = data ? data->destroy : 0; if (destroy) { /* destroy is always a VARARGS method */ PyObject *res; if (data->delargs) { /* we need to create a temporary object to carry the destroy operation */ PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0); res = SWIG_Python_CallFunctor(destroy, tmp); Py_DECREF(tmp); } else { PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); PyObject *mself = PyCFunction_GET_SELF(destroy); res = ((*meth)(mself, v)); } Py_XDECREF(res); } #if !defined(SWIG_PYTHON_SILENT_MEMLEAK) else { const char *name = SWIG_TypePrettyName(ty); printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); } #endif } Py_XDECREF(next); PyObject_DEL(v); } SWIGRUNTIME PyObject* SwigPyObject_append(PyObject* v, PyObject* next) { SwigPyObject *sobj = (SwigPyObject *) v; #ifndef METH_O PyObject *tmp = 0; if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL; next = tmp; #endif if (!SwigPyObject_Check(next)) { return NULL; } sobj->next = next; Py_INCREF(next); return SWIG_Py_Void(); } SWIGRUNTIME PyObject* #ifdef METH_NOARGS SwigPyObject_next(PyObject* v) #else SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *) v; if (sobj->next) { Py_INCREF(sobj->next); return sobj->next; } else { return SWIG_Py_Void(); } } SWIGINTERN PyObject* #ifdef METH_NOARGS SwigPyObject_disown(PyObject *v) #else SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *)v; sobj->own = 0; return SWIG_Py_Void(); } SWIGINTERN PyObject* #ifdef METH_NOARGS SwigPyObject_acquire(PyObject *v) #else SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *)v; sobj->own = SWIG_POINTER_OWN; return SWIG_Py_Void(); } SWIGINTERN PyObject* SwigPyObject_own(PyObject *v, PyObject *args) { PyObject *val = 0; #if (PY_VERSION_HEX < 0x02020000) if (!PyArg_ParseTuple(args,(char *)"|O:own",&val)) #elif (PY_VERSION_HEX < 0x02050000) if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) #else if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) #endif { return NULL; } else { SwigPyObject *sobj = (SwigPyObject *)v; PyObject *obj = PyBool_FromLong(sobj->own); if (val) { #ifdef METH_NOARGS if (PyObject_IsTrue(val)) { SwigPyObject_acquire(v); } else { SwigPyObject_disown(v); } #else if (PyObject_IsTrue(val)) { SwigPyObject_acquire(v,args); } else { SwigPyObject_disown(v,args); } #endif } return obj; } } #ifdef METH_O static PyMethodDef swigobject_methods[] = { {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"acquires ownership of the pointer"}, {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"}, {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"}, {0, 0, 0, 0} }; #else static PyMethodDef swigobject_methods[] = { {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_VARARGS, (char *)"releases ownership of the pointer"}, {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_VARARGS, (char *)"aquires ownership of the pointer"}, {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, {0, 0, 0, 0} }; #endif #if PY_VERSION_HEX < 0x02020000 SWIGINTERN PyObject * SwigPyObject_getattr(SwigPyObject *sobj,char *name) { return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name); } #endif SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void) { static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; static PyNumberMethods SwigPyObject_as_number = { (binaryfunc)0, /*nb_add*/ (binaryfunc)0, /*nb_subtract*/ (binaryfunc)0, /*nb_multiply*/ /* nb_divide removed in Python 3 */ #if PY_VERSION_HEX < 0x03000000 (binaryfunc)0, /*nb_divide*/ #endif (binaryfunc)0, /*nb_remainder*/ (binaryfunc)0, /*nb_divmod*/ (ternaryfunc)0,/*nb_power*/ (unaryfunc)0, /*nb_negative*/ (unaryfunc)0, /*nb_positive*/ (unaryfunc)0, /*nb_absolute*/ (inquiry)0, /*nb_nonzero*/ 0, /*nb_invert*/ 0, /*nb_lshift*/ 0, /*nb_rshift*/ 0, /*nb_and*/ 0, /*nb_xor*/ 0, /*nb_or*/ #if PY_VERSION_HEX < 0x03000000 0, /*nb_coerce*/ #endif (unaryfunc)SwigPyObject_long, /*nb_int*/ #if PY_VERSION_HEX < 0x03000000 (unaryfunc)SwigPyObject_long, /*nb_long*/ #else 0, /*nb_reserved*/ #endif (unaryfunc)0, /*nb_float*/ #if PY_VERSION_HEX < 0x03000000 (unaryfunc)SwigPyObject_oct, /*nb_oct*/ (unaryfunc)SwigPyObject_hex, /*nb_hex*/ #endif #if PY_VERSION_HEX >= 0x03000000 /* 3.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */ #elif PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ #elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ #elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */ 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ #endif }; static PyTypeObject swigpyobject_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX >= 0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"SwigPyObject", /* tp_name */ sizeof(SwigPyObject), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)SwigPyObject_dealloc, /* tp_dealloc */ 0, /* tp_print */ #if PY_VERSION_HEX < 0x02020000 (getattrfunc)SwigPyObject_getattr, /* tp_getattr */ #else (getattrfunc)0, /* tp_getattr */ #endif (setattrfunc)0, /* tp_setattr */ #if PY_VERSION_HEX >= 0x03000000 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */ #else (cmpfunc)SwigPyObject_compare, /* tp_compare */ #endif (reprfunc)SwigPyObject_repr, /* tp_repr */ &SwigPyObject_as_number, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)0, /* tp_hash */ (ternaryfunc)0, /* tp_call */ 0, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ swigobject_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0, /* tp_iter */ 0, /* tp_iternext */ swigobject_methods, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; swigpyobject_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 swigpyobject_type.ob_type = &PyType_Type; #else if (PyType_Ready(&swigpyobject_type) < 0) return NULL; #endif } return &swigpyobject_type; } SWIGRUNTIME PyObject * SwigPyObject_New(void *ptr, swig_type_info *ty, int own) { SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type()); if (sobj) { sobj->ptr = ptr; sobj->ty = ty; sobj->own = own; sobj->next = 0; } return (PyObject *)sobj; } /* ----------------------------------------------------------------------------- * Implements a simple Swig Packed type, and use it instead of string * ----------------------------------------------------------------------------- */ typedef struct { PyObject_HEAD void *pack; swig_type_info *ty; size_t size; } SwigPyPacked; SWIGRUNTIME int SwigPyPacked_print(SwigPyPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { char result[SWIG_BUFFER_SIZE]; fputs("pack, v->size, 0, sizeof(result))) { fputs("at ", fp); fputs(result, fp); } fputs(v->ty->name,fp); fputs(">", fp); return 0; } SWIGRUNTIME PyObject * SwigPyPacked_repr(SwigPyPacked *v) { char result[SWIG_BUFFER_SIZE]; if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { return SWIG_Python_str_FromFormat("", result, v->ty->name); } else { return SWIG_Python_str_FromFormat("", v->ty->name); } } SWIGRUNTIME PyObject * SwigPyPacked_str(SwigPyPacked *v) { char result[SWIG_BUFFER_SIZE]; if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name); } else { return SWIG_Python_str_FromChar(v->ty->name); } } SWIGRUNTIME int SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w) { size_t i = v->size; size_t j = w->size; int s = (i < j) ? -1 : ((i > j) ? 1 : 0); return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size); } SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void); SWIGRUNTIME PyTypeObject* SwigPyPacked_type(void) { static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce(); return type; } SWIGRUNTIMEINLINE int SwigPyPacked_Check(PyObject *op) { return ((op)->ob_type == SwigPyPacked_TypeOnce()) || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0); } SWIGRUNTIME void SwigPyPacked_dealloc(PyObject *v) { if (SwigPyPacked_Check(v)) { SwigPyPacked *sobj = (SwigPyPacked *) v; free(sobj->pack); } PyObject_DEL(v); } SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void) { static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; static PyTypeObject swigpypacked_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX>=0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"SwigPyPacked", /* tp_name */ sizeof(SwigPyPacked), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ (printfunc)SwigPyPacked_print, /* tp_print */ (getattrfunc)0, /* tp_getattr */ (setattrfunc)0, /* tp_setattr */ #if PY_VERSION_HEX>=0x03000000 0, /* tp_reserved in 3.0.1 */ #else (cmpfunc)SwigPyPacked_compare, /* tp_compare */ #endif (reprfunc)SwigPyPacked_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)0, /* tp_hash */ (ternaryfunc)0, /* tp_call */ (reprfunc)SwigPyPacked_str, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ swigpacked_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; swigpypacked_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 swigpypacked_type.ob_type = &PyType_Type; #else if (PyType_Ready(&swigpypacked_type) < 0) return NULL; #endif } return &swigpypacked_type; } SWIGRUNTIME PyObject * SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty) { SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type()); if (sobj) { void *pack = malloc(size); if (pack) { memcpy(pack, ptr, size); sobj->pack = pack; sobj->ty = ty; sobj->size = size; } else { PyObject_DEL((PyObject *) sobj); sobj = 0; } } return (PyObject *) sobj; } SWIGRUNTIME swig_type_info * SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size) { if (SwigPyPacked_Check(obj)) { SwigPyPacked *sobj = (SwigPyPacked *)obj; if (sobj->size != size) return 0; memcpy(ptr, sobj->pack, size); return sobj->ty; } else { return 0; } } /* ----------------------------------------------------------------------------- * pointers/data manipulation * ----------------------------------------------------------------------------- */ SWIGRUNTIMEINLINE PyObject * _SWIG_This(void) { return SWIG_Python_str_FromChar("this"); } static PyObject *swig_this = NULL; SWIGRUNTIME PyObject * SWIG_This(void) { if (swig_this == NULL) swig_this = _SWIG_This(); return swig_this; } /* #define SWIG_PYTHON_SLOW_GETSET_THIS */ /* TODO: I don't know how to implement the fast getset in Python 3 right now */ #if PY_VERSION_HEX>=0x03000000 #define SWIG_PYTHON_SLOW_GETSET_THIS #endif SWIGRUNTIME SwigPyObject * SWIG_Python_GetSwigThis(PyObject *pyobj) { PyObject *obj; if (SwigPyObject_Check(pyobj)) return (SwigPyObject *) pyobj; #ifdef SWIGPYTHON_BUILTIN (void)obj; # ifdef PyWeakref_CheckProxy if (PyWeakref_CheckProxy(pyobj)) { pyobj = PyWeakref_GET_OBJECT(pyobj); if (pyobj && SwigPyObject_Check(pyobj)) return (SwigPyObject*) pyobj; } # endif return NULL; #else obj = 0; #if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000)) if (PyInstance_Check(pyobj)) { obj = _PyInstance_Lookup(pyobj, SWIG_This()); } else { PyObject **dictptr = _PyObject_GetDictPtr(pyobj); if (dictptr != NULL) { PyObject *dict = *dictptr; obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; } else { #ifdef PyWeakref_CheckProxy if (PyWeakref_CheckProxy(pyobj)) { PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; } #endif obj = PyObject_GetAttr(pyobj,SWIG_This()); if (obj) { Py_DECREF(obj); } else { if (PyErr_Occurred()) PyErr_Clear(); return 0; } } } #else obj = PyObject_GetAttr(pyobj,SWIG_This()); if (obj) { Py_DECREF(obj); } else { if (PyErr_Occurred()) PyErr_Clear(); return 0; } #endif if (obj && !SwigPyObject_Check(obj)) { /* a PyObject is called 'this', try to get the 'real this' SwigPyObject from it */ return SWIG_Python_GetSwigThis(obj); } return (SwigPyObject *)obj; #endif } /* Acquire a pointer value */ SWIGRUNTIME int SWIG_Python_AcquirePtr(PyObject *obj, int own) { if (own == SWIG_POINTER_OWN) { SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); if (sobj) { int oldown = sobj->own; sobj->own = own; return oldown; } } return 0; } /* Convert a pointer value */ SWIGRUNTIME int SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { int res; SwigPyObject *sobj; int implicit_conv = (flags & SWIG_POINTER_IMPLICIT_CONV) != 0; if (!obj) return SWIG_ERROR; if (obj == Py_None && !implicit_conv) { if (ptr) *ptr = 0; return SWIG_OK; } res = SWIG_ERROR; sobj = SWIG_Python_GetSwigThis(obj); if (own) *own = 0; while (sobj) { void *vptr = sobj->ptr; if (ty) { swig_type_info *to = sobj->ty; if (to == ty) { /* no type cast needed */ if (ptr) *ptr = vptr; break; } else { swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); if (!tc) { sobj = (SwigPyObject *)sobj->next; } else { if (ptr) { int newmemory = 0; *ptr = SWIG_TypeCast(tc,vptr,&newmemory); if (newmemory == SWIG_CAST_NEW_MEMORY) { assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ if (own) *own = *own | SWIG_CAST_NEW_MEMORY; } } break; } } } else { if (ptr) *ptr = vptr; break; } } if (sobj) { if (own) *own = *own | sobj->own; if (flags & SWIG_POINTER_DISOWN) { sobj->own = 0; } res = SWIG_OK; } else { if (implicit_conv) { SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; if (data && !data->implicitconv) { PyObject *klass = data->klass; if (klass) { PyObject *impconv; data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ impconv = SWIG_Python_CallFunctor(klass, obj); data->implicitconv = 0; if (PyErr_Occurred()) { PyErr_Clear(); impconv = 0; } if (impconv) { SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv); if (iobj) { void *vptr; res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); if (SWIG_IsOK(res)) { if (ptr) { *ptr = vptr; /* transfer the ownership to 'ptr' */ iobj->own = 0; res = SWIG_AddCast(res); res = SWIG_AddNewMask(res); } else { res = SWIG_AddCast(res); } } } Py_DECREF(impconv); } } } } if (!SWIG_IsOK(res) && obj == Py_None) { if (ptr) *ptr = 0; if (PyErr_Occurred()) PyErr_Clear(); res = SWIG_OK; } } return res; } /* Convert a function ptr value */ SWIGRUNTIME int SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { if (!PyCFunction_Check(obj)) { return SWIG_ConvertPtr(obj, ptr, ty, 0); } else { void *vptr = 0; /* here we get the method pointer for callbacks */ const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; if (desc) desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; if (!desc) return SWIG_ERROR; if (ty) { swig_cast_info *tc = SWIG_TypeCheck(desc,ty); if (tc) { int newmemory = 0; *ptr = SWIG_TypeCast(tc,vptr,&newmemory); assert(!newmemory); /* newmemory handling not yet implemented */ } else { return SWIG_ERROR; } } else { *ptr = vptr; } return SWIG_OK; } } /* Convert a packed value value */ SWIGRUNTIME int SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz); if (!to) return SWIG_ERROR; if (ty) { if (to != ty) { /* check type cast? */ swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); if (!tc) return SWIG_ERROR; } } return SWIG_OK; } /* ----------------------------------------------------------------------------- * Create a new pointer object * ----------------------------------------------------------------------------- */ /* Create a new instance object, without calling __init__, and set the 'this' attribute. */ SWIGRUNTIME PyObject* SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this) { #if (PY_VERSION_HEX >= 0x02020000) PyObject *inst = 0; PyObject *newraw = data->newraw; if (newraw) { inst = PyObject_Call(newraw, data->newargs, NULL); if (inst) { #if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) PyObject **dictptr = _PyObject_GetDictPtr(inst); if (dictptr != NULL) { PyObject *dict = *dictptr; if (dict == NULL) { dict = PyDict_New(); *dictptr = dict; PyDict_SetItem(dict, SWIG_This(), swig_this); } } #else PyObject *key = SWIG_This(); PyObject_SetAttr(inst, key, swig_this); #endif } } else { #if PY_VERSION_HEX >= 0x03000000 inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None); if (inst) { PyObject_SetAttr(inst, SWIG_This(), swig_this); Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG; } #else PyObject *dict = PyDict_New(); if (dict) { PyDict_SetItem(dict, SWIG_This(), swig_this); inst = PyInstance_NewRaw(data->newargs, dict); Py_DECREF(dict); } #endif } return inst; #else #if (PY_VERSION_HEX >= 0x02010000) PyObject *inst = 0; PyObject *dict = PyDict_New(); if (dict) { PyDict_SetItem(dict, SWIG_This(), swig_this); inst = PyInstance_NewRaw(data->newargs, dict); Py_DECREF(dict); } return (PyObject *) inst; #else PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type); if (inst == NULL) { return NULL; } inst->in_class = (PyClassObject *)data->newargs; Py_INCREF(inst->in_class); inst->in_dict = PyDict_New(); if (inst->in_dict == NULL) { Py_DECREF(inst); return NULL; } #ifdef Py_TPFLAGS_HAVE_WEAKREFS inst->in_weakreflist = NULL; #endif #ifdef Py_TPFLAGS_GC PyObject_GC_Init(inst); #endif PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this); return (PyObject *) inst; #endif #endif } SWIGRUNTIME void SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) { PyObject *dict; #if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS) PyObject **dictptr = _PyObject_GetDictPtr(inst); if (dictptr != NULL) { dict = *dictptr; if (dict == NULL) { dict = PyDict_New(); *dictptr = dict; } PyDict_SetItem(dict, SWIG_This(), swig_this); return; } #endif dict = PyObject_GetAttrString(inst, (char*)"__dict__"); PyDict_SetItem(dict, SWIG_This(), swig_this); Py_DECREF(dict); } SWIGINTERN PyObject * SWIG_Python_InitShadowInstance(PyObject *args) { PyObject *obj[2]; if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) { return NULL; } else { SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]); if (sthis) { SwigPyObject_append((PyObject*) sthis, obj[1]); } else { SWIG_Python_SetSwigThis(obj[0], obj[1]); } return SWIG_Py_Void(); } } /* Create a new pointer object */ SWIGRUNTIME PyObject * SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) { SwigPyClientData *clientdata; PyObject * robj; int own; if (!ptr) return SWIG_Py_Void(); clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0; own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; if (clientdata && clientdata->pytype) { SwigPyObject *newobj; if (flags & SWIG_BUILTIN_TP_INIT) { newobj = (SwigPyObject*) self; if (newobj->ptr) { PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0); while (newobj->next) newobj = (SwigPyObject *) newobj->next; newobj->next = next_self; newobj = (SwigPyObject *)next_self; } } else { newobj = PyObject_New(SwigPyObject, clientdata->pytype); } if (newobj) { newobj->ptr = ptr; newobj->ty = type; newobj->own = own; newobj->next = 0; #ifdef SWIGPYTHON_BUILTIN newobj->dict = 0; #endif return (PyObject*) newobj; } return SWIG_Py_Void(); } assert(!(flags & SWIG_BUILTIN_TP_INIT)); robj = SwigPyObject_New(ptr, type, own); if (robj && clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); Py_DECREF(robj); robj = inst; } return robj; } /* Create a new packed object */ SWIGRUNTIMEINLINE PyObject * SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); } /* -----------------------------------------------------------------------------* * Get type list * -----------------------------------------------------------------------------*/ #ifdef SWIG_LINK_RUNTIME void *SWIG_ReturnGlobalTypeList(void *); #endif SWIGRUNTIME swig_module_info * SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { static void *type_pointer = (void *)0; /* first check if module already created */ if (!type_pointer) { #ifdef SWIG_LINK_RUNTIME type_pointer = SWIG_ReturnGlobalTypeList((void *)0); #else # ifdef SWIGPY_USE_CAPSULE type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); # else type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME); # endif if (PyErr_Occurred()) { PyErr_Clear(); type_pointer = (void *)0; } #endif } return (swig_module_info *) type_pointer; } #if PY_MAJOR_VERSION < 2 /* PyModule_AddObject function was introduced in Python 2.0. The following function is copied out of Python/modsupport.c in python version 2.3.4 */ SWIGINTERN int PyModule_AddObject(PyObject *m, char *name, PyObject *o) { PyObject *dict; if (!PyModule_Check(m)) { PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs module as first arg"); return SWIG_ERROR; } if (!o) { PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs non-NULL value"); return SWIG_ERROR; } dict = PyModule_GetDict(m); if (dict == NULL) { /* Internal error -- modules must have a dict! */ PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__", PyModule_GetName(m)); return SWIG_ERROR; } if (PyDict_SetItemString(dict, name, o)) return SWIG_ERROR; Py_DECREF(o); return SWIG_OK; } #endif SWIGRUNTIME void #ifdef SWIGPY_USE_CAPSULE SWIG_Python_DestroyModule(PyObject *obj) #else SWIG_Python_DestroyModule(void *vptr) #endif { #ifdef SWIGPY_USE_CAPSULE swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME); #else swig_module_info *swig_module = (swig_module_info *) vptr; #endif swig_type_info **types = swig_module->types; size_t i; for (i =0; i < swig_module->size; ++i) { swig_type_info *ty = types[i]; if (ty->owndata) { SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; if (data) SwigPyClientData_Del(data); } } Py_DECREF(SWIG_This()); swig_this = NULL; } SWIGRUNTIME void SWIG_Python_SetModule(swig_module_info *swig_module) { #if PY_VERSION_HEX >= 0x03000000 /* Add a dummy module object into sys.modules */ PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION); #else static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table); #endif #ifdef SWIGPY_USE_CAPSULE PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); if (pointer && module) { PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer); } else { Py_XDECREF(pointer); } #else PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule); if (pointer && module) { PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer); } else { Py_XDECREF(pointer); } #endif } /* The python cached type query */ SWIGRUNTIME PyObject * SWIG_Python_TypeCache(void) { static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); return cache; } SWIGRUNTIME swig_type_info * SWIG_Python_TypeQuery(const char *type) { PyObject *cache = SWIG_Python_TypeCache(); PyObject *key = SWIG_Python_str_FromChar(type); PyObject *obj = PyDict_GetItem(cache, key); swig_type_info *descriptor; if (obj) { #ifdef SWIGPY_USE_CAPSULE descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL); #else descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj); #endif } else { swig_module_info *swig_module = SWIG_GetModule(0); descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); if (descriptor) { #ifdef SWIGPY_USE_CAPSULE obj = PyCapsule_New((void*) descriptor, NULL, NULL); #else obj = PyCObject_FromVoidPtr(descriptor, NULL); #endif PyDict_SetItem(cache, key, obj); Py_DECREF(obj); } } Py_DECREF(key); return descriptor; } /* For backward compatibility only */ #define SWIG_POINTER_EXCEPTION 0 #define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) #define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) SWIGRUNTIME int SWIG_Python_AddErrMesg(const char* mesg, int infront) { if (PyErr_Occurred()) { PyObject *type = 0; PyObject *value = 0; PyObject *traceback = 0; PyErr_Fetch(&type, &value, &traceback); if (value) { char *tmp; PyObject *old_str = PyObject_Str(value); Py_XINCREF(type); PyErr_Clear(); if (infront) { PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str)); } else { PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); } SWIG_Python_str_DelForPy3(tmp); Py_DECREF(old_str); } return 1; } else { return 0; } } SWIGRUNTIME int SWIG_Python_ArgFail(int argnum) { if (PyErr_Occurred()) { /* add information about failing argument */ char mesg[256]; PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); return SWIG_Python_AddErrMesg(mesg, 1); } else { return 0; } } SWIGRUNTIMEINLINE const char * SwigPyObject_GetDesc(PyObject *self) { SwigPyObject *v = (SwigPyObject *)self; swig_type_info *ty = v ? v->ty : 0; return ty ? ty->str : ""; } SWIGRUNTIME void SWIG_Python_TypeError(const char *type, PyObject *obj) { if (type) { #if defined(SWIG_COBJECT_TYPES) if (obj && SwigPyObject_Check(obj)) { const char *otype = (const char *) SwigPyObject_GetDesc(obj); if (otype) { PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received", type, otype); return; } } else #endif { const char *otype = (obj ? obj->ob_type->tp_name : 0); if (otype) { PyObject *str = PyObject_Str(obj); const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0; if (cstr) { PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", type, otype, cstr); SWIG_Python_str_DelForPy3(cstr); } else { PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", type, otype); } Py_XDECREF(str); return; } } PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); } else { PyErr_Format(PyExc_TypeError, "unexpected type is received"); } } /* Convert a pointer value, signal an exception on a type mismatch */ SWIGRUNTIME void * SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) { void *result; if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { PyErr_Clear(); #if SWIG_POINTER_EXCEPTION if (flags) { SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); SWIG_Python_ArgFail(argnum); } #endif } return result; } #ifdef SWIGPYTHON_BUILTIN SWIGRUNTIME int SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) { PyTypeObject *tp = obj->ob_type; PyObject *descr; PyObject *encoded_name; descrsetfunc f; int res = -1; # ifdef Py_USING_UNICODE if (PyString_Check(name)) { name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL); if (!name) return -1; } else if (!PyUnicode_Check(name)) # else if (!PyString_Check(name)) # endif { PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name); return -1; } else { Py_INCREF(name); } if (!tp->tp_dict) { if (PyType_Ready(tp) < 0) goto done; } descr = _PyType_Lookup(tp, name); f = NULL; if (descr != NULL) f = descr->ob_type->tp_descr_set; if (!f) { if (PyString_Check(name)) { encoded_name = name; Py_INCREF(name); } else { encoded_name = PyUnicode_AsUTF8String(name); } PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name)); Py_DECREF(encoded_name); } else { res = f(descr, obj, value); } done: Py_DECREF(name); return res; } #endif #ifdef __cplusplus } #endif #define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else /* -------- TYPES TABLE (BEGIN) -------- */ #define SWIGTYPE_p__private_detail__MASKUNION swig_types[0] #define SWIGTYPE_p__private_detail__VPMask__VMaskType swig_types[1] #define SWIGTYPE_p_allocator_type swig_types[2] #define SWIGTYPE_p_char swig_types[3] #define SWIGTYPE_p_difference_type swig_types[4] #define SWIGTYPE_p_double swig_types[5] #define SWIGTYPE_p_im__DOUBLEMASK swig_types[6] #define SWIGTYPE_p_im__INTMASK swig_types[7] #define SWIGTYPE_p_int swig_types[8] #define SWIGTYPE_p_matrix swig_types[9] #define SWIGTYPE_p_size_type swig_types[10] #define SWIGTYPE_p_std__ostream swig_types[11] #define SWIGTYPE_p_value_type swig_types[12] #define SWIGTYPE_p_vips__VDMask swig_types[13] #define SWIGTYPE_p_vips__VError swig_types[14] #define SWIGTYPE_p_vips__VIMask swig_types[15] #define SWIGTYPE_p_vips__VMask swig_types[16] static swig_type_info *swig_types[18]; static swig_module_info swig_module = {swig_types, 17, 0, 0, 0, 0}; #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) /* -------- TYPES TABLE (END) -------- */ #if (PY_VERSION_HEX <= 0x02000000) # if !defined(SWIG_PYTHON_CLASSIC) # error "This python version requires swig to be run with the '-classic' option" # endif #endif /*----------------------------------------------- @(target):= vmaskmodule.so ------------------------------------------------*/ #if PY_VERSION_HEX >= 0x03000000 # define SWIG_init PyInit_vmaskmodule #else # define SWIG_init initvmaskmodule #endif #define SWIG_name "vmaskmodule" #define SWIGVERSION 0x020012 #define SWIG_VERSION SWIGVERSION #define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a)) #include namespace swig { class SwigPtr_PyObject { protected: PyObject *_obj; public: SwigPtr_PyObject() :_obj(0) { } SwigPtr_PyObject(const SwigPtr_PyObject& item) : _obj(item._obj) { Py_XINCREF(_obj); } SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj) { if (initial_ref) { Py_XINCREF(_obj); } } SwigPtr_PyObject & operator=(const SwigPtr_PyObject& item) { Py_XINCREF(item._obj); Py_XDECREF(_obj); _obj = item._obj; return *this; } ~SwigPtr_PyObject() { Py_XDECREF(_obj); } operator PyObject *() const { return _obj; } PyObject *operator->() const { return _obj; } }; } namespace swig { struct SwigVar_PyObject : SwigPtr_PyObject { SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { } SwigVar_PyObject & operator = (PyObject* obj) { Py_XDECREF(_obj); _obj = obj; return *this; } }; } #include #include #include namespace swig { struct stop_iteration { }; struct SwigPyIterator { private: SwigPtr_PyObject _seq; protected: SwigPyIterator(PyObject *seq) : _seq(seq) { } public: virtual ~SwigPyIterator() {} // Access iterator method, required by Python virtual PyObject *value() const = 0; // Forward iterator method, required by Python virtual SwigPyIterator *incr(size_t n = 1) = 0; // Backward iterator method, very common in C++, but not required in Python virtual SwigPyIterator *decr(size_t /*n*/ = 1) { throw stop_iteration(); } // Random access iterator methods, but not required in Python virtual ptrdiff_t distance(const SwigPyIterator &/*x*/) const { throw std::invalid_argument("operation not supported"); } virtual bool equal (const SwigPyIterator &/*x*/) const { throw std::invalid_argument("operation not supported"); } // C++ common/needed methods virtual SwigPyIterator *copy() const = 0; PyObject *next() { SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads PyObject *obj = value(); incr(); SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads return obj; } /* Make an alias for Python 3.x */ PyObject *__next__() { return next(); } PyObject *previous() { SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads decr(); PyObject *obj = value(); SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads return obj; } SwigPyIterator *advance(ptrdiff_t n) { return (n > 0) ? incr(n) : decr(-n); } bool operator == (const SwigPyIterator& x) const { return equal(x); } bool operator != (const SwigPyIterator& x) const { return ! operator==(x); } SwigPyIterator& operator += (ptrdiff_t n) { return *advance(n); } SwigPyIterator& operator -= (ptrdiff_t n) { return *advance(-n); } SwigPyIterator* operator + (ptrdiff_t n) const { return copy()->advance(n); } SwigPyIterator* operator - (ptrdiff_t n) const { return copy()->advance(-n); } ptrdiff_t operator - (const SwigPyIterator& x) const { return x.distance(*this); } static swig_type_info* descriptor() { static int init = 0; static swig_type_info* desc = 0; if (!init) { desc = SWIG_TypeQuery("swig::SwigPyIterator *"); init = 1; } return desc; } }; #if defined(SWIGPYTHON_BUILTIN) inline PyObject* make_output_iterator_builtin (PyObject *pyself) { Py_INCREF(pyself); return pyself; } #endif } namespace swig { template struct noconst_traits { typedef Type noconst_type; }; template struct noconst_traits { typedef Type noconst_type; }; /* type categories */ struct pointer_category { }; struct value_category { }; /* General traits that provides type_name and type_info */ template struct traits { }; template inline const char* type_name() { return traits::noconst_type >::type_name(); } template struct traits_info { static swig_type_info *type_query(std::string name) { name += " *"; return SWIG_TypeQuery(name.c_str()); } static swig_type_info *type_info() { static swig_type_info *info = type_query(type_name()); return info; } }; template inline swig_type_info *type_info() { return traits_info::type_info(); } /* Partial specialization for pointers */ template struct traits { typedef pointer_category category; static std::string make_ptr_name(const char* name) { std::string ptrname = name; ptrname += " *"; return ptrname; } static const char* type_name() { static std::string name = make_ptr_name(swig::type_name()); return name.c_str(); } }; template struct traits_as { }; template struct traits_check { }; } namespace swig { /* Traits that provides the from method */ template struct traits_from_ptr { static PyObject *from(Type *val, int owner = 0) { return SWIG_InternalNewPointerObj(val, type_info(), owner); } }; template struct traits_from { static PyObject *from(const Type& val) { return traits_from_ptr::from(new Type(val), 1); } }; template struct traits_from { static PyObject *from(Type* val) { return traits_from_ptr::from(val, 0); } }; template struct traits_from { static PyObject *from(const Type* val) { return traits_from_ptr::from(const_cast(val), 0); } }; template inline PyObject *from(const Type& val) { return traits_from::from(val); } template inline PyObject *from_ptr(Type* val, int owner) { return traits_from_ptr::from(val, owner); } /* Traits that provides the asval/as/check method */ template struct traits_asptr { static int asptr(PyObject *obj, Type **val) { Type *p; int res = SWIG_ConvertPtr(obj, (void**)&p, type_info(), 0); if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; template inline int asptr(PyObject *obj, Type **vptr) { return traits_asptr::asptr(obj, vptr); } template struct traits_asval { static int asval(PyObject *obj, Type *val) { if (val) { Type *p = 0; int res = traits_asptr::asptr(obj, &p); if (!SWIG_IsOK(res)) return res; if (p) { typedef typename noconst_traits::noconst_type noconst_type; *(const_cast(val)) = *p; if (SWIG_IsNewObj(res)){ delete p; res = SWIG_DelNewMask(res); } return res; } else { return SWIG_ERROR; } } else { return traits_asptr::asptr(obj, (Type **)(0)); } } }; template struct traits_asval { static int asval(PyObject *obj, Type **val) { if (val) { typedef typename noconst_traits::noconst_type noconst_type; noconst_type *p = 0; int res = traits_asptr::asptr(obj, &p); if (SWIG_IsOK(res)) { *(const_cast(val)) = p; } return res; } else { return traits_asptr::asptr(obj, (Type **)(0)); } } }; template inline int asval(PyObject *obj, Type *val) { return traits_asval::asval(obj, val); } template struct traits_as { static Type as(PyObject *obj, bool throw_error) { Type v; int res = asval(obj, &v); if (!obj || !SWIG_IsOK(res)) { if (!PyErr_Occurred()) { ::SWIG_Error(SWIG_TypeError, swig::type_name()); } if (throw_error) throw std::invalid_argument("bad type"); } return v; } }; template struct traits_as { static Type as(PyObject *obj, bool throw_error) { Type *v = 0; int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); if (SWIG_IsOK(res) && v) { if (SWIG_IsNewObj(res)) { Type r(*v); delete v; return r; } else { return *v; } } else { // Uninitialized return value, no Type() constructor required. static Type *v_def = (Type*) malloc(sizeof(Type)); if (!PyErr_Occurred()) { SWIG_Error(SWIG_TypeError, swig::type_name()); } if (throw_error) throw std::invalid_argument("bad type"); memset(v_def,0,sizeof(Type)); return *v_def; } } }; template struct traits_as { static Type* as(PyObject *obj, bool throw_error) { Type *v = 0; int res = (obj ? traits_asptr::asptr(obj, &v) : SWIG_ERROR); if (SWIG_IsOK(res)) { return v; } else { if (!PyErr_Occurred()) { SWIG_Error(SWIG_TypeError, swig::type_name()); } if (throw_error) throw std::invalid_argument("bad type"); return 0; } } }; template inline Type as(PyObject *obj, bool te = false) { return traits_as::category>::as(obj, te); } template struct traits_check { static bool check(PyObject *obj) { int res = obj ? asval(obj, (Type *)(0)) : SWIG_ERROR; return SWIG_IsOK(res) ? true : false; } }; template struct traits_check { static bool check(PyObject *obj) { int res = obj ? asptr(obj, (Type **)(0)) : SWIG_ERROR; return SWIG_IsOK(res) ? true : false; } }; template inline bool check(PyObject *obj) { return traits_check::category>::check(obj); } } #include namespace std { template <> struct less : public binary_function { bool operator()(PyObject * v, PyObject *w) const { bool res; SWIG_PYTHON_THREAD_BEGIN_BLOCK; res = PyObject_RichCompareBool(v, w, Py_LT) ? true : false; /* This may fall into a case of inconsistent eg. ObjA > ObjX > ObjB but ObjA < ObjB */ if( PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_TypeError) ) { /* Objects can't be compared, this mostly occurred in Python 3.0 */ /* Compare their ptr directly for a workaround */ res = (v < w); PyErr_Clear(); } SWIG_PYTHON_THREAD_END_BLOCK; return res; } }; template <> struct less : public binary_function { bool operator()(const swig::SwigPtr_PyObject& v, const swig::SwigPtr_PyObject& w) const { return std::less()(v, w); } }; template <> struct less : public binary_function { bool operator()(const swig::SwigVar_PyObject& v, const swig::SwigVar_PyObject& w) const { return std::less()(v, w); } }; } namespace swig { template <> struct traits { typedef value_category category; static const char* type_name() { return "PyObject *"; } }; template <> struct traits_asval { typedef PyObject * value_type; static int asval(PyObject *obj, value_type *val) { if (val) *val = obj; return SWIG_OK; } }; template <> struct traits_check { static bool check(PyObject *) { return true; } }; template <> struct traits_from { typedef PyObject * value_type; static PyObject *from(const value_type& val) { Py_XINCREF(val); return val; } }; } namespace swig { template inline size_t check_index(Difference i, size_t size, bool insert = false) { if ( i < 0 ) { if ((size_t) (-i) <= size) return (size_t) (i + size); } else if ( (size_t) i < size ) { return (size_t) i; } else if (insert && ((size_t) i == size)) { return size; } throw std::out_of_range("index out of range"); } template void slice_adjust(Difference i, Difference j, Py_ssize_t step, size_t size, Difference &ii, Difference &jj, bool insert = false) { if (step == 0) { throw std::invalid_argument("slice step cannot be zero"); } else if (step > 0) { // Required range: 0 <= i < size, 0 <= j < size if (i < 0) { ii = 0; } else if (i < (Difference)size) { ii = i; } else if (insert && (i >= (Difference)size)) { ii = (Difference)size; } if ( j < 0 ) { jj = 0; } else { jj = (j < (Difference)size) ? j : (Difference)size; } } else { // Required range: -1 <= i < size-1, -1 <= j < size-1 if (i < -1) { ii = -1; } else if (i < (Difference) size) { ii = i; } else if (i >= (Difference)(size-1)) { ii = (Difference)(size-1); } if (j < -1) { jj = -1; } else { jj = (j < (Difference)size ) ? j : (Difference)(size-1); } } } template inline typename Sequence::iterator getpos(Sequence* self, Difference i) { typename Sequence::iterator pos = self->begin(); std::advance(pos, check_index(i,self->size())); return pos; } template inline typename Sequence::const_iterator cgetpos(const Sequence* self, Difference i) { typename Sequence::const_iterator pos = self->begin(); std::advance(pos, check_index(i,self->size())); return pos; } template inline Sequence* getslice(const Sequence* self, Difference i, Difference j, Py_ssize_t step) { typename Sequence::size_type size = self->size(); Difference ii = 0; Difference jj = 0; swig::slice_adjust(i, j, step, size, ii, jj); if (step > 0) { typename Sequence::const_iterator sb = self->begin(); typename Sequence::const_iterator se = self->begin(); std::advance(sb,ii); std::advance(se,jj); if (step == 1) { return new Sequence(sb, se); } else { Sequence *sequence = new Sequence(); typename Sequence::const_iterator it = sb; while (it!=se) { sequence->push_back(*it); for (Py_ssize_t c=0; c jj) { typename Sequence::const_reverse_iterator sb = self->rbegin(); typename Sequence::const_reverse_iterator se = self->rbegin(); std::advance(sb,size-ii-1); std::advance(se,size-jj-1); typename Sequence::const_reverse_iterator it = sb; while (it!=se) { sequence->push_back(*it); for (Py_ssize_t c=0; c<-step && it!=se; ++c) it++; } } return sequence; } } template inline void setslice(Sequence* self, Difference i, Difference j, Py_ssize_t step, const InputSeq& is = InputSeq()) { typename Sequence::size_type size = self->size(); Difference ii = 0; Difference jj = 0; swig::slice_adjust(i, j, step, size, ii, jj, true); if (step > 0) { if (jj < ii) jj = ii; if (step == 1) { size_t ssize = jj - ii; if (ssize <= is.size()) { // expanding/staying the same size typename Sequence::iterator sb = self->begin(); typename InputSeq::const_iterator isit = is.begin(); std::advance(sb,ii); std::advance(isit, jj - ii); self->insert(std::copy(is.begin(), isit, sb), isit, is.end()); } else { // shrinking typename Sequence::iterator sb = self->begin(); typename Sequence::iterator se = self->begin(); std::advance(sb,ii); std::advance(se,jj); self->erase(sb,se); sb = self->begin(); std::advance(sb,ii); self->insert(sb, is.begin(), is.end()); } } else { size_t replacecount = (jj - ii + step - 1) / step; if (is.size() != replacecount) { char msg[1024]; sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); throw std::invalid_argument(msg); } typename Sequence::const_iterator isit = is.begin(); typename Sequence::iterator it = self->begin(); std::advance(it,ii); for (size_t rc=0; rcend(); ++c) it++; } } } else { if (jj > ii) jj = ii; size_t replacecount = (ii - jj - step - 1) / -step; if (is.size() != replacecount) { char msg[1024]; sprintf(msg, "attempt to assign sequence of size %lu to extended slice of size %lu", (unsigned long)is.size(), (unsigned long)replacecount); throw std::invalid_argument(msg); } typename Sequence::const_iterator isit = is.begin(); typename Sequence::reverse_iterator it = self->rbegin(); std::advance(it,size-ii-1); for (size_t rc=0; rcrend(); ++c) it++; } } } template inline void delslice(Sequence* self, Difference i, Difference j, Py_ssize_t step) { typename Sequence::size_type size = self->size(); Difference ii = 0; Difference jj = 0; swig::slice_adjust(i, j, step, size, ii, jj, true); if (step > 0) { if (jj > ii) { typename Sequence::iterator sb = self->begin(); std::advance(sb,ii); if (step == 1) { typename Sequence::iterator se = self->begin(); std::advance(se,jj); self->erase(sb,se); } else { typename Sequence::iterator it = sb; size_t delcount = (jj - ii + step - 1) / step; while (delcount) { it = self->erase(it); for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c) it++; delcount--; } } } } else { if (ii > jj) { typename Sequence::reverse_iterator sb = self->rbegin(); std::advance(sb,size-ii-1); typename Sequence::reverse_iterator it = sb; size_t delcount = (ii - jj - step - 1) / -step; while (delcount) { it = typename Sequence::reverse_iterator(self->erase((++it).base())); for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c) it++; delcount--; } } } } } #if defined(__SUNPRO_CC) && defined(_RWSTD_VER) # if !defined(SWIG_NO_STD_NOITERATOR_TRAITS_STL) # define SWIG_STD_NOITERATOR_TRAITS_STL # endif #endif #if !defined(SWIG_STD_NOITERATOR_TRAITS_STL) #include #else namespace std { template struct iterator_traits { typedef ptrdiff_t difference_type; typedef typename Iterator::value_type value_type; }; template struct iterator_traits<__reverse_bi_iterator > { typedef Distance difference_type; typedef T value_type; }; template struct iterator_traits { typedef T value_type; typedef ptrdiff_t difference_type; }; template inline typename iterator_traits<_InputIterator>::difference_type distance(_InputIterator __first, _InputIterator __last) { typename iterator_traits<_InputIterator>::difference_type __n = 0; while (__first != __last) { ++__first; ++__n; } return __n; } } #endif namespace swig { template class SwigPyIterator_T : public SwigPyIterator { public: typedef OutIterator out_iterator; typedef typename std::iterator_traits::value_type value_type; typedef SwigPyIterator_T self_type; SwigPyIterator_T(out_iterator curr, PyObject *seq) : SwigPyIterator(seq), current(curr) { } const out_iterator& get_current() const { return current; } bool equal (const SwigPyIterator &iter) const { const self_type *iters = dynamic_cast(&iter); if (iters) { return (current == iters->get_current()); } else { throw std::invalid_argument("bad iterator type"); } } ptrdiff_t distance(const SwigPyIterator &iter) const { const self_type *iters = dynamic_cast(&iter); if (iters) { return std::distance(current, iters->get_current()); } else { throw std::invalid_argument("bad iterator type"); } } protected: out_iterator current; }; template struct from_oper { typedef const ValueType& argument_type; typedef PyObject *result_type; result_type operator()(argument_type v) const { return swig::from(v); } }; template::value_type, typename FromOper = from_oper > class SwigPyIteratorOpen_T : public SwigPyIterator_T { public: FromOper from; typedef OutIterator out_iterator; typedef ValueType value_type; typedef SwigPyIterator_T base; typedef SwigPyIteratorOpen_T self_type; SwigPyIteratorOpen_T(out_iterator curr, PyObject *seq) : SwigPyIterator_T(curr, seq) { } PyObject *value() const { return from(static_cast(*(base::current))); } SwigPyIterator *copy() const { return new self_type(*this); } SwigPyIterator *incr(size_t n = 1) { while (n--) { ++base::current; } return this; } SwigPyIterator *decr(size_t n = 1) { while (n--) { --base::current; } return this; } }; template::value_type, typename FromOper = from_oper > class SwigPyIteratorClosed_T : public SwigPyIterator_T { public: FromOper from; typedef OutIterator out_iterator; typedef ValueType value_type; typedef SwigPyIterator_T base; typedef SwigPyIteratorClosed_T self_type; SwigPyIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq) : SwigPyIterator_T(curr, seq), begin(first), end(last) { } PyObject *value() const { if (base::current == end) { throw stop_iteration(); } else { return from(static_cast(*(base::current))); } } SwigPyIterator *copy() const { return new self_type(*this); } SwigPyIterator *incr(size_t n = 1) { while (n--) { if (base::current == end) { throw stop_iteration(); } else { ++base::current; } } return this; } SwigPyIterator *decr(size_t n = 1) { while (n--) { if (base::current == begin) { throw stop_iteration(); } else { --base::current; } } return this; } private: out_iterator begin; out_iterator end; }; template inline SwigPyIterator* make_output_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, PyObject *seq = 0) { return new SwigPyIteratorClosed_T(current, begin, end, seq); } template inline SwigPyIterator* make_output_iterator(const OutIter& current, PyObject *seq = 0) { return new SwigPyIteratorOpen_T(current, seq); } } namespace swig { template struct SwigPySequence_Ref { SwigPySequence_Ref(PyObject* seq, int index) : _seq(seq), _index(index) { } operator T () const { swig::SwigVar_PyObject item = PySequence_GetItem(_seq, _index); try { return swig::as(item, true); } catch (std::exception& e) { char msg[1024]; sprintf(msg, "in sequence element %d ", _index); if (!PyErr_Occurred()) { ::SWIG_Error(SWIG_TypeError, swig::type_name()); } SWIG_Python_AddErrorMsg(msg); SWIG_Python_AddErrorMsg(e.what()); throw; } } SwigPySequence_Ref& operator=(const T& v) { PySequence_SetItem(_seq, _index, swig::from(v)); return *this; } private: PyObject* _seq; int _index; }; template struct SwigPySequence_ArrowProxy { SwigPySequence_ArrowProxy(const T& x): m_value(x) {} const T* operator->() const { return &m_value; } operator const T*() const { return &m_value; } T m_value; }; template struct SwigPySequence_InputIterator { typedef SwigPySequence_InputIterator self; typedef std::random_access_iterator_tag iterator_category; typedef Reference reference; typedef T value_type; typedef T* pointer; typedef int difference_type; SwigPySequence_InputIterator() { } SwigPySequence_InputIterator(PyObject* seq, int index) : _seq(seq), _index(index) { } reference operator*() const { return reference(_seq, _index); } SwigPySequence_ArrowProxy operator->() const { return SwigPySequence_ArrowProxy(operator*()); } bool operator==(const self& ri) const { return (_index == ri._index) && (_seq == ri._seq); } bool operator!=(const self& ri) const { return !(operator==(ri)); } self& operator ++ () { ++_index; return *this; } self& operator -- () { --_index; return *this; } self& operator += (difference_type n) { _index += n; return *this; } self operator +(difference_type n) const { return self(_seq, _index + n); } self& operator -= (difference_type n) { _index -= n; return *this; } self operator -(difference_type n) const { return self(_seq, _index - n); } difference_type operator - (const self& ri) const { return _index - ri._index; } bool operator < (const self& ri) const { return _index < ri._index; } reference operator[](difference_type n) const { return reference(_seq, _index + n); } private: PyObject* _seq; difference_type _index; }; template struct SwigPySequence_Cont { typedef SwigPySequence_Ref reference; typedef const SwigPySequence_Ref const_reference; typedef T value_type; typedef T* pointer; typedef int difference_type; typedef int size_type; typedef const pointer const_pointer; typedef SwigPySequence_InputIterator iterator; typedef SwigPySequence_InputIterator const_iterator; SwigPySequence_Cont(PyObject* seq) : _seq(0) { if (!PySequence_Check(seq)) { throw std::invalid_argument("a sequence is expected"); } _seq = seq; Py_INCREF(_seq); } ~SwigPySequence_Cont() { Py_XDECREF(_seq); } size_type size() const { return static_cast(PySequence_Size(_seq)); } bool empty() const { return size() == 0; } iterator begin() { return iterator(_seq, 0); } const_iterator begin() const { return const_iterator(_seq, 0); } iterator end() { return iterator(_seq, size()); } const_iterator end() const { return const_iterator(_seq, size()); } reference operator[](difference_type n) { return reference(_seq, n); } const_reference operator[](difference_type n) const { return const_reference(_seq, n); } bool check(bool set_err = true) const { int s = size(); for (int i = 0; i < s; ++i) { swig::SwigVar_PyObject item = PySequence_GetItem(_seq, i); if (!swig::check(item)) { if (set_err) { char msg[1024]; sprintf(msg, "in sequence element %d", i); SWIG_Error(SWIG_RuntimeError, msg); } return false; } } return true; } private: PyObject* _seq; }; } SWIGINTERNINLINE PyObject* SWIG_From_int (int value) { return PyInt_FromLong((long) value); } SWIGINTERN swig_type_info* SWIG_pchar_descriptor(void) { static int init = 0; static swig_type_info* info = 0; if (!init) { info = SWIG_TypeQuery("_p_char"); init = 1; } return info; } SWIGINTERNINLINE PyObject * SWIG_FromCharPtrAndSize(const char* carray, size_t size) { if (carray) { if (size > INT_MAX) { swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); return pchar_descriptor ? SWIG_InternalNewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void(); } else { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_FromStringAndSize(carray, static_cast< int >(size)); #else return PyString_FromStringAndSize(carray, static_cast< int >(size)); #endif } } else { return SWIG_Py_Void(); } } SWIGINTERNINLINE PyObject * SWIG_FromCharPtr(const char *cptr) { return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); } #include #if !defined(SWIG_NO_LLONG_MAX) # if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) # define LLONG_MAX __LONG_LONG_MAX__ # define LLONG_MIN (-LLONG_MAX - 1LL) # define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) # endif #endif SWIGINTERN int SWIG_AsVal_double (PyObject *obj, double *val) { int res = SWIG_TypeError; if (PyFloat_Check(obj)) { if (val) *val = PyFloat_AsDouble(obj); return SWIG_OK; } else if (PyInt_Check(obj)) { if (val) *val = PyInt_AsLong(obj); return SWIG_OK; } else if (PyLong_Check(obj)) { double v = PyLong_AsDouble(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_OK; } else { PyErr_Clear(); } } #ifdef SWIG_PYTHON_CAST_MODE { int dispatch = 0; double d = PyFloat_AsDouble(obj); if (!PyErr_Occurred()) { if (val) *val = d; return SWIG_AddCast(SWIG_OK); } else { PyErr_Clear(); } if (!dispatch) { long v = PyLong_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); } else { PyErr_Clear(); } } } #endif return res; } #include #include SWIGINTERNINLINE int SWIG_CanCastAsInteger(double *d, double min, double max) { double x = *d; if ((min <= x && x <= max)) { double fx = floor(x); double cx = ceil(x); double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ if ((errno == EDOM) || (errno == ERANGE)) { errno = 0; } else { double summ, reps, diff; if (rd < x) { diff = x - rd; } else if (rd > x) { diff = rd - x; } else { return 1; } summ = rd + x; reps = diff/summ; if (reps < 8*DBL_EPSILON) { *d = rd; return 1; } } } return 0; } SWIGINTERN int SWIG_AsVal_long (PyObject *obj, long* val) { if (PyInt_Check(obj)) { if (val) *val = PyInt_AsLong(obj); return SWIG_OK; } else if (PyLong_Check(obj)) { long v = PyLong_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_OK; } else { PyErr_Clear(); } } #ifdef SWIG_PYTHON_CAST_MODE { int dispatch = 0; long v = PyInt_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_AddCast(SWIG_OK); } else { PyErr_Clear(); } if (!dispatch) { double d; int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { if (val) *val = (long)(d); return res; } } } #endif return SWIG_TypeError; } SWIGINTERN int SWIG_AsVal_int (PyObject * obj, int *val) { long v; int res = SWIG_AsVal_long (obj, &v); if (SWIG_IsOK(res)) { if ((v < INT_MIN || v > INT_MAX)) { return SWIG_OverflowError; } else { if (val) *val = static_cast< int >(v); } } return res; } namespace swig { template <> struct traits { typedef value_category category; static const char* type_name() { return"int"; } }; template <> struct traits_asval { typedef int value_type; static int asval(PyObject *obj, value_type *val) { return SWIG_AsVal_int (obj, val); } }; template <> struct traits_from { typedef int value_type; static PyObject *from(const value_type& val) { return SWIG_From_int (val); } }; } namespace swig { template inline void assign(const SwigPySeq& swigpyseq, Seq* seq) { // seq->assign(swigpyseq.begin(), swigpyseq.end()); // not used as not always implemented typedef typename SwigPySeq::value_type value_type; typename SwigPySeq::const_iterator it = swigpyseq.begin(); for (;it != swigpyseq.end(); ++it) { seq->insert(seq->end(),(value_type)(*it)); } } template struct traits_asptr_stdseq { typedef Seq sequence; typedef T value_type; static int asptr(PyObject *obj, sequence **seq) { if (obj == Py_None || SWIG_Python_GetSwigThis(obj)) { sequence *p; if (::SWIG_ConvertPtr(obj,(void**)&p, swig::type_info(),0) == SWIG_OK) { if (seq) *seq = p; return SWIG_OLDOBJ; } } else if (PySequence_Check(obj)) { try { SwigPySequence_Cont swigpyseq(obj); if (seq) { sequence *pseq = new sequence(); assign(swigpyseq, pseq); *seq = pseq; return SWIG_NEWOBJ; } else { return swigpyseq.check() ? SWIG_OK : SWIG_ERROR; } } catch (std::exception& e) { if (seq) { if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, e.what()); } } return SWIG_ERROR; } } return SWIG_ERROR; } }; template struct traits_from_stdseq { typedef Seq sequence; typedef T value_type; typedef typename Seq::size_type size_type; typedef typename sequence::const_iterator const_iterator; static PyObject *from(const sequence& seq) { #ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS swig_type_info *desc = swig::type_info(); if (desc && desc->clientdata) { return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN); } #endif size_type size = seq.size(); if (size <= (size_type)INT_MAX) { PyObject *obj = PyTuple_New((int)size); int i = 0; for (const_iterator it = seq.begin(); it != seq.end(); ++it, ++i) { PyTuple_SetItem(obj,i,swig::from(*it)); } return obj; } else { PyErr_SetString(PyExc_OverflowError,"sequence size not valid in python"); return NULL; } } }; } namespace swig { template struct traits_asptr > { static int asptr(PyObject *obj, std::vector **vec) { return traits_asptr_stdseq >::asptr(obj, vec); } }; template struct traits_from > { static PyObject *from(const std::vector& vec) { return traits_from_stdseq >::from(vec); } }; } namespace swig { template <> struct traits > > { typedef pointer_category category; static const char* type_name() { return "std::vector<" "int" "," "std::allocator< int >" " >"; } }; } SWIGINTERN int SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) { #if PY_VERSION_HEX>=0x03000000 if (PyUnicode_Check(obj)) #else if (PyString_Check(obj)) #endif { char *cstr; Py_ssize_t len; #if PY_VERSION_HEX>=0x03000000 if (!alloc && cptr) { /* We can't allow converting without allocation, since the internal representation of string in Python 3 is UCS-2/UCS-4 but we require a UTF-8 representation. TODO(bhy) More detailed explanation */ return SWIG_RuntimeError; } obj = PyUnicode_AsUTF8String(obj); PyBytes_AsStringAndSize(obj, &cstr, &len); if(alloc) *alloc = SWIG_NEWOBJ; #else PyString_AsStringAndSize(obj, &cstr, &len); #endif if (cptr) { if (alloc) { /* In python the user should not be able to modify the inner string representation. To warranty that, if you define SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string buffer is always returned. The default behavior is just to return the pointer value, so, be careful. */ #if defined(SWIG_PYTHON_SAFE_CSTRINGS) if (*alloc != SWIG_OLDOBJ) #else if (*alloc == SWIG_NEWOBJ) #endif { *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1))); *alloc = SWIG_NEWOBJ; } else { *cptr = cstr; *alloc = SWIG_OLDOBJ; } } else { #if PY_VERSION_HEX>=0x03000000 assert(0); /* Should never reach here in Python 3 */ #endif *cptr = SWIG_Python_str_AsChar(obj); } } if (psize) *psize = len + 1; #if PY_VERSION_HEX>=0x03000000 Py_XDECREF(obj); #endif return SWIG_OK; } else { swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); if (pchar_descriptor) { void* vptr = 0; if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { if (cptr) *cptr = (char *) vptr; if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; if (alloc) *alloc = SWIG_OLDOBJ; return SWIG_OK; } } } return SWIG_TypeError; } #define SWIG_From_double PyFloat_FromDouble namespace swig { template <> struct traits { typedef value_category category; static const char* type_name() { return"double"; } }; template <> struct traits_asval { typedef double value_type; static int asval(PyObject *obj, value_type *val) { return SWIG_AsVal_double (obj, val); } }; template <> struct traits_from { typedef double value_type; static PyObject *from(const value_type& val) { return SWIG_From_double (val); } }; } namespace swig { template <> struct traits > > { typedef pointer_category category; static const char* type_name() { return "std::vector<" "double" "," "std::allocator< double >" " >"; } }; } #ifdef __cplusplus extern "C" { #endif SWIGINTERN PyObject *_wrap_new_VMask__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_VMask")) SWIG_fail; result = (vips::VMask *)new vips::VMask(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VMask, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VMask__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_VMask",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_vips__VMask, 0 | 0); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VMask" "', argument " "1"" of type '" "vips::VMask const &""'"); } if (!argp1) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_VMask" "', argument " "1"" of type '" "vips::VMask const &""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); result = (vips::VMask *)new vips::VMask((vips::VMask const &)*arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VMask, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VMask(PyObject *self, PyObject *args) { int argc; PyObject *argv[2]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 1) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_new_VMask__SWIG_0(self, args); } if (argc == 1) { int _v; int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_vips__VMask, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VMask__SWIG_1(self, args); } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_VMask'.\n" " Possible C/C++ prototypes are:\n" " vips::VMask::VMask()\n" " vips::VMask::VMask(vips::VMask const &)\n"); return 0; } SWIGINTERN PyObject *_wrap_VMask___assign__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = (vips::VMask *) 0 ; vips::VMask *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VMask___assign__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VMask___assign__" "', argument " "1"" of type '" "vips::VMask *""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VMask___assign__" "', argument " "2"" of type '" "vips::VMask const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VMask___assign__" "', argument " "2"" of type '" "vips::VMask const &""'"); } arg2 = reinterpret_cast< vips::VMask * >(argp2); result = (vips::VMask *) &(arg1)->operator =((vips::VMask const &)*arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VMask, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_delete_VMask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = (vips::VMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_VMask",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VMask, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_VMask" "', argument " "1"" of type '" "vips::VMask *""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VMask_xsize(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = (vips::VMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VMask_xsize",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VMask_xsize" "', argument " "1"" of type '" "vips::VMask const *""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); try { result = (int)((vips::VMask const *)arg1)->xsize(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VMask_ysize(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = (vips::VMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VMask_ysize",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VMask_ysize" "', argument " "1"" of type '" "vips::VMask const *""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); try { result = (int)((vips::VMask const *)arg1)->ysize(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VMask_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = (vips::VMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VMask_size",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VMask_size" "', argument " "1"" of type '" "vips::VMask const *""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); try { result = (int)((vips::VMask const *)arg1)->size(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VMask_filename(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = (vips::VMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VMask_filename",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VMask_filename" "', argument " "1"" of type '" "vips::VMask const *""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); try { result = (char *)((vips::VMask const *)arg1)->filename(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_FromCharPtr((const char *)result); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VMask_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = (vips::VMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; _private_detail::VPMask::VMaskType result; if (!PyArg_ParseTuple(args,(char *)"O:VMask_type",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VMask_type" "', argument " "1"" of type '" "vips::VMask const *""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); result = ((vips::VMask const *)arg1)->type(); resultobj = SWIG_NewPointerObj((new _private_detail::VPMask::VMaskType(static_cast< const _private_detail::VPMask::VMaskType& >(result))), SWIGTYPE_p__private_detail__VPMask__VMaskType, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VMask_mask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = (vips::VMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; _private_detail::MASKUNION result; if (!PyArg_ParseTuple(args,(char *)"O:VMask_mask",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VMask_mask" "', argument " "1"" of type '" "vips::VMask const *""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); result = ((vips::VMask const *)arg1)->mask(); resultobj = SWIG_NewPointerObj((new _private_detail::MASKUNION(static_cast< const _private_detail::MASKUNION& >(result))), SWIGTYPE_p__private_detail__MASKUNION, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VMask_ostream_print(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VMask *arg1 = (vips::VMask *) 0 ; std::ostream *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VMask_ostream_print",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VMask_ostream_print" "', argument " "1"" of type '" "vips::VMask const *""'"); } arg1 = reinterpret_cast< vips::VMask * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_std__ostream, 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VMask_ostream_print" "', argument " "2"" of type '" "std::ostream &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VMask_ostream_print" "', argument " "2"" of type '" "std::ostream &""'"); } arg2 = reinterpret_cast< std::ostream * >(argp2); ((vips::VMask const *)arg1)->ostream_print(*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *VMask_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_vips__VMask, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } SWIGINTERN PyObject *_wrap___lshift____SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::ostream *arg1 = 0 ; vips::VMask *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::ostream *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:__lshift__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_std__ostream, 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "__lshift__" "', argument " "1"" of type '" "std::ostream &""'"); } if (!argp1) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "__lshift__" "', argument " "1"" of type '" "std::ostream &""'"); } arg1 = reinterpret_cast< std::ostream * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "__lshift__" "', argument " "2"" of type '" "vips::VMask const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "__lshift__" "', argument " "2"" of type '" "vips::VMask const &""'"); } arg2 = reinterpret_cast< vips::VMask * >(argp2); result = (std::ostream *) &vips::operator <<(*arg1,(vips::VMask const &)*arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__ostream, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap___lshift__(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_std__ostream, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_ConvertPtr(argv[1], 0, SWIGTYPE_p_vips__VMask, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap___lshift____SWIG_1(self, args); } } } fail: Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } SWIGINTERN PyObject *_wrap_new_VIMask__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VIMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:new_VIMask",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_VIMask" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_VIMask" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); result = (vips::VIMask *)new vips::VIMask(arg1,arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VIMask__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int arg3 ; int arg4 ; std::vector< int,std::allocator< int > > arg5 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; int val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VIMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOO:new_VIMask",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_VIMask" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_VIMask" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_VIMask" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); ecode4 = SWIG_AsVal_int(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_VIMask" "', argument " "4"" of type '" "int""'"); } arg4 = static_cast< int >(val4); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj4, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_VIMask" "', argument " "5"" of type '" "std::vector< int,std::allocator< int > >""'"); } arg5 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } result = (vips::VIMask *)new vips::VIMask(arg1,arg2,arg3,arg4,arg5); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VIMask__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VIMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_VIMask",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VIMask" "', argument " "1"" of type '" "char const *""'"); } arg1 = reinterpret_cast< char * >(buf1); result = (vips::VIMask *)new vips::VIMask((char const *)arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_NEW | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_new_VIMask__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_VIMask")) SWIG_fail; result = (vips::VIMask *)new vips::VIMask(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VIMask(PyObject *self, PyObject *args) { int argc; PyObject *argv[6]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 5) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_new_VIMask__SWIG_3(self, args); } if (argc == 1) { int _v; int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VIMask__SWIG_2(self, args); } } if (argc == 2) { int _v; { int res = SWIG_AsVal_int(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_new_VIMask__SWIG_0(self, args); } } } if (argc == 5) { int _v; { int res = SWIG_AsVal_int(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { int res = swig::asptr(argv[4], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VIMask__SWIG_1(self, args); } } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_VIMask'.\n" " Possible C/C++ prototypes are:\n" " vips::VIMask::VIMask(int,int)\n" " vips::VIMask::VIMask(int,int,int,int,std::vector< int,std::allocator< int > >)\n" " vips::VIMask::VIMask(char const *)\n" " vips::VIMask::VIMask()\n"); return 0; } SWIGINTERN PyObject *_wrap_VIMask_scale(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VIMask_scale",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_scale" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); result = (int)(arg1)->scale(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_offset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"O:VIMask_offset",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_offset" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); result = (int)(arg1)->offset(); resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_embed(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; im__INTMASK *arg2 = (im__INTMASK *) 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VIMask_embed",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_embed" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_im__INTMASK, 0 | 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VIMask_embed" "', argument " "2"" of type '" "im__INTMASK *""'"); } arg2 = reinterpret_cast< im__INTMASK * >(argp2); try { (arg1)->embed(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask___index__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; int *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VIMask___index__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask___index__" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VIMask___index__" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (int *) &(arg1)->operator [](arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_int, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask___call__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; int *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:VIMask___call__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask___call__" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VIMask___call__" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VIMask___call__" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (int *) &(arg1)->operator ()(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_int, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; int result; if (!PyArg_ParseTuple(args,(char *)"OO:VIMask_get",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_get" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VIMask_get" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (int)(arg1)->get(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_int(static_cast< int >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; double arg1 ; double arg2 ; double val1 ; int ecode1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VIMask result; if (!PyArg_ParseTuple(args,(char *)"OO:VIMask_gauss",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_double(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VIMask_gauss" "', argument " "1"" of type '" "double""'"); } arg1 = static_cast< double >(val1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VIMask_gauss" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = vips::VIMask::gauss(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VIMask(static_cast< const vips::VIMask& >(result))), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_gauss_sep(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; double arg1 ; double arg2 ; double val1 ; int ecode1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VIMask result; if (!PyArg_ParseTuple(args,(char *)"OO:VIMask_gauss_sep",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_double(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VIMask_gauss_sep" "', argument " "1"" of type '" "double""'"); } arg1 = static_cast< double >(val1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VIMask_gauss_sep" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = vips::VIMask::gauss_sep(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VIMask(static_cast< const vips::VIMask& >(result))), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_log(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; double arg1 ; double arg2 ; double val1 ; int ecode1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VIMask result; if (!PyArg_ParseTuple(args,(char *)"OO:VIMask_log",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_double(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VIMask_log" "', argument " "1"" of type '" "double""'"); } arg1 = static_cast< double >(val1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VIMask_log" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = vips::VIMask::log(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VIMask(static_cast< const vips::VIMask& >(result))), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_rotate45(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VIMask result; if (!PyArg_ParseTuple(args,(char *)"O:VIMask_rotate45",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_rotate45" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); try { result = (arg1)->rotate45(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VIMask(static_cast< const vips::VIMask& >(result))), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_rotate90(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VIMask result; if (!PyArg_ParseTuple(args,(char *)"O:VIMask_rotate90",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_rotate90" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); try { result = (arg1)->rotate90(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VIMask(static_cast< const vips::VIMask& >(result))), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_trn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"O:VIMask_trn",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_trn" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); try { result = (arg1)->trn(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_inv(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"O:VIMask_inv",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_inv" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); try { result = (arg1)->inv(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_cat(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"OO:VIMask_cat",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_cat" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VIMask_cat" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VIMask_cat" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->cat(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VIMask_mul(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"OO:VIMask_mul",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VIMask_mul" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VIMask_mul" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VIMask_mul" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->mul(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_delete_VIMask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VIMask *arg1 = (vips::VIMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_VIMask",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VIMask, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_VIMask" "', argument " "1"" of type '" "vips::VIMask *""'"); } arg1 = reinterpret_cast< vips::VIMask * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *VIMask_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_vips__VIMask, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } SWIGINTERN PyObject *_wrap_new_VDMask__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VDMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:new_VDMask",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_VDMask" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_VDMask" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); result = (vips::VDMask *)new vips::VDMask(arg1,arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VDMask__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; int arg2 ; double arg3 ; double arg4 ; std::vector< double,std::allocator< double > > arg5 ; int val1 ; int ecode1 = 0 ; int val2 ; int ecode2 = 0 ; double val3 ; int ecode3 = 0 ; double val4 ; int ecode4 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; PyObject * obj3 = 0 ; PyObject * obj4 = 0 ; vips::VDMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOOOO:new_VDMask",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; ecode1 = SWIG_AsVal_int(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_VDMask" "', argument " "1"" of type '" "int""'"); } arg1 = static_cast< int >(val1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_VDMask" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_double(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_VDMask" "', argument " "3"" of type '" "double""'"); } arg3 = static_cast< double >(val3); ecode4 = SWIG_AsVal_double(obj3, &val4); if (!SWIG_IsOK(ecode4)) { SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_VDMask" "', argument " "4"" of type '" "double""'"); } arg4 = static_cast< double >(val4); { std::vector > *ptr = (std::vector > *)0; int res = swig::asptr(obj4, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_VDMask" "', argument " "5"" of type '" "std::vector< double,std::allocator< double > >""'"); } arg5 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } result = (vips::VDMask *)new vips::VDMask(arg1,arg2,arg3,arg4,arg5); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VDMask__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; char *arg1 = (char *) 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; PyObject * obj0 = 0 ; vips::VDMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_VDMask",&obj0)) SWIG_fail; res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_VDMask" "', argument " "1"" of type '" "char const *""'"); } arg1 = reinterpret_cast< char * >(buf1); result = (vips::VDMask *)new vips::VDMask((char const *)arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_NEW | 0 ); if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return resultobj; fail: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; return NULL; } SWIGINTERN PyObject *_wrap_new_VDMask__SWIG_3(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_VDMask")) SWIG_fail; result = (vips::VDMask *)new vips::VDMask(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VDMask(PyObject *self, PyObject *args) { int argc; PyObject *argv[6]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 5) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_new_VDMask__SWIG_3(self, args); } if (argc == 1) { int _v; int res = SWIG_AsCharPtrAndSize(argv[0], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VDMask__SWIG_2(self, args); } } if (argc == 2) { int _v; { int res = SWIG_AsVal_int(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_new_VDMask__SWIG_0(self, args); } } } if (argc == 5) { int _v; { int res = SWIG_AsVal_int(argv[0], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_double(argv[2], NULL); _v = SWIG_CheckState(res); } if (_v) { { int res = SWIG_AsVal_double(argv[3], NULL); _v = SWIG_CheckState(res); } if (_v) { int res = swig::asptr(argv[4], (std::vector >**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VDMask__SWIG_1(self, args); } } } } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_VDMask'.\n" " Possible C/C++ prototypes are:\n" " vips::VDMask::VDMask(int,int)\n" " vips::VDMask::VDMask(int,int,double,double,std::vector< double,std::allocator< double > >)\n" " vips::VDMask::VDMask(char const *)\n" " vips::VDMask::VDMask()\n"); return 0; } SWIGINTERN PyObject *_wrap_VDMask_embed(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; im__DOUBLEMASK *arg2 = (im__DOUBLEMASK *) 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VDMask_embed",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_embed" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_im__DOUBLEMASK, 0 | 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VDMask_embed" "', argument " "2"" of type '" "im__DOUBLEMASK *""'"); } arg2 = reinterpret_cast< im__DOUBLEMASK * >(argp2); try { (arg1)->embed(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_scale(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"O:VDMask_scale",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_scale" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); try { result = (double)(arg1)->scale(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_offset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"O:VDMask_offset",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_offset" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); try { result = (double)(arg1)->offset(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask___index__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; double *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VDMask___index__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask___index__" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VDMask___index__" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (double *) &(arg1)->operator [](arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_double, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask___call__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; int arg2 ; int arg3 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; int val3 ; int ecode3 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; PyObject * obj2 = 0 ; double *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OOO:VDMask___call__",&obj0,&obj1,&obj2)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask___call__" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VDMask___call__" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); ecode3 = SWIG_AsVal_int(obj2, &val3); if (!SWIG_IsOK(ecode3)) { SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "VDMask___call__" "', argument " "3"" of type '" "int""'"); } arg3 = static_cast< int >(val3); try { result = (double *) &(arg1)->operator ()(arg2,arg3); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_double, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; double result; if (!PyArg_ParseTuple(args,(char *)"OO:VDMask_get",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_get" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VDMask_get" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); try { result = (double)(arg1)->get(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_From_double(static_cast< double >(result)); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_gauss(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; double arg1 ; double arg2 ; double val1 ; int ecode1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"OO:VDMask_gauss",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_double(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VDMask_gauss" "', argument " "1"" of type '" "double""'"); } arg1 = static_cast< double >(val1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VDMask_gauss" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = vips::VDMask::gauss(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_log(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; double arg1 ; double arg2 ; double val1 ; int ecode1 = 0 ; double val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"OO:VDMask_log",&obj0,&obj1)) SWIG_fail; ecode1 = SWIG_AsVal_double(obj0, &val1); if (!SWIG_IsOK(ecode1)) { SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "VDMask_log" "', argument " "1"" of type '" "double""'"); } arg1 = static_cast< double >(val1); ecode2 = SWIG_AsVal_double(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VDMask_log" "', argument " "2"" of type '" "double""'"); } arg2 = static_cast< double >(val2); try { result = vips::VDMask::log(arg1,arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_rotate45(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"O:VDMask_rotate45",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_rotate45" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); try { result = (arg1)->rotate45(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_rotate90(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"O:VDMask_rotate90",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_rotate90" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); try { result = (arg1)->rotate90(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_scalei(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VIMask result; if (!PyArg_ParseTuple(args,(char *)"O:VDMask_scalei",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_scalei" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); try { result = (arg1)->scalei(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VIMask(static_cast< const vips::VIMask& >(result))), SWIGTYPE_p_vips__VIMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_trn(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"O:VDMask_trn",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_trn" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); try { result = (arg1)->trn(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_inv(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"O:VDMask_inv",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_inv" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); try { result = (arg1)->inv(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_cat(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"OO:VDMask_cat",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_cat" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VDMask_cat" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VDMask_cat" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->cat(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VDMask_mul(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; vips::VDMask arg2 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VDMask result; if (!PyArg_ParseTuple(args,(char *)"OO:VDMask_mul",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VDMask_mul" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); { res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VDMask, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VDMask_mul" "', argument " "2"" of type '" "vips::VDMask""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VDMask_mul" "', argument " "2"" of type '" "vips::VDMask""'"); } else { vips::VDMask * temp = reinterpret_cast< vips::VDMask * >(argp2); arg2 = *temp; if (SWIG_IsNewObj(res2)) delete temp; } } try { result = (arg1)->mul(arg2); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_NewPointerObj((new vips::VDMask(static_cast< const vips::VDMask& >(result))), SWIGTYPE_p_vips__VDMask, SWIG_POINTER_OWN | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_delete_VDMask(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VDMask *arg1 = (vips::VDMask *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_VDMask",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VDMask, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_VDMask" "', argument " "1"" of type '" "vips::VDMask *""'"); } arg1 = reinterpret_cast< vips::VDMask * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *VDMask_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_vips__VDMask, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } static PyMethodDef SwigMethods[] = { { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL}, { (char *)"new_VMask", _wrap_new_VMask, METH_VARARGS, NULL}, { (char *)"VMask___assign__", _wrap_VMask___assign__, METH_VARARGS, NULL}, { (char *)"delete_VMask", _wrap_delete_VMask, METH_VARARGS, NULL}, { (char *)"VMask_xsize", _wrap_VMask_xsize, METH_VARARGS, NULL}, { (char *)"VMask_ysize", _wrap_VMask_ysize, METH_VARARGS, NULL}, { (char *)"VMask_size", _wrap_VMask_size, METH_VARARGS, NULL}, { (char *)"VMask_filename", _wrap_VMask_filename, METH_VARARGS, NULL}, { (char *)"VMask_type", _wrap_VMask_type, METH_VARARGS, NULL}, { (char *)"VMask_mask", _wrap_VMask_mask, METH_VARARGS, NULL}, { (char *)"VMask_ostream_print", _wrap_VMask_ostream_print, METH_VARARGS, NULL}, { (char *)"VMask_swigregister", VMask_swigregister, METH_VARARGS, NULL}, { (char *)"__lshift__", _wrap___lshift__, METH_VARARGS, NULL}, { (char *)"new_VIMask", _wrap_new_VIMask, METH_VARARGS, NULL}, { (char *)"VIMask_scale", _wrap_VIMask_scale, METH_VARARGS, NULL}, { (char *)"VIMask_offset", _wrap_VIMask_offset, METH_VARARGS, NULL}, { (char *)"VIMask_embed", _wrap_VIMask_embed, METH_VARARGS, NULL}, { (char *)"VIMask___index__", _wrap_VIMask___index__, METH_VARARGS, NULL}, { (char *)"VIMask___call__", _wrap_VIMask___call__, METH_VARARGS, NULL}, { (char *)"VIMask_get", _wrap_VIMask_get, METH_VARARGS, NULL}, { (char *)"VIMask_gauss", _wrap_VIMask_gauss, METH_VARARGS, NULL}, { (char *)"VIMask_gauss_sep", _wrap_VIMask_gauss_sep, METH_VARARGS, NULL}, { (char *)"VIMask_log", _wrap_VIMask_log, METH_VARARGS, NULL}, { (char *)"VIMask_rotate45", _wrap_VIMask_rotate45, METH_VARARGS, NULL}, { (char *)"VIMask_rotate90", _wrap_VIMask_rotate90, METH_VARARGS, NULL}, { (char *)"VIMask_trn", _wrap_VIMask_trn, METH_VARARGS, NULL}, { (char *)"VIMask_inv", _wrap_VIMask_inv, METH_VARARGS, NULL}, { (char *)"VIMask_cat", _wrap_VIMask_cat, METH_VARARGS, NULL}, { (char *)"VIMask_mul", _wrap_VIMask_mul, METH_VARARGS, NULL}, { (char *)"delete_VIMask", _wrap_delete_VIMask, METH_VARARGS, NULL}, { (char *)"VIMask_swigregister", VIMask_swigregister, METH_VARARGS, NULL}, { (char *)"new_VDMask", _wrap_new_VDMask, METH_VARARGS, NULL}, { (char *)"VDMask_embed", _wrap_VDMask_embed, METH_VARARGS, NULL}, { (char *)"VDMask_scale", _wrap_VDMask_scale, METH_VARARGS, NULL}, { (char *)"VDMask_offset", _wrap_VDMask_offset, METH_VARARGS, NULL}, { (char *)"VDMask___index__", _wrap_VDMask___index__, METH_VARARGS, NULL}, { (char *)"VDMask___call__", _wrap_VDMask___call__, METH_VARARGS, NULL}, { (char *)"VDMask_get", _wrap_VDMask_get, METH_VARARGS, NULL}, { (char *)"VDMask_gauss", _wrap_VDMask_gauss, METH_VARARGS, NULL}, { (char *)"VDMask_log", _wrap_VDMask_log, METH_VARARGS, NULL}, { (char *)"VDMask_rotate45", _wrap_VDMask_rotate45, METH_VARARGS, NULL}, { (char *)"VDMask_rotate90", _wrap_VDMask_rotate90, METH_VARARGS, NULL}, { (char *)"VDMask_scalei", _wrap_VDMask_scalei, METH_VARARGS, NULL}, { (char *)"VDMask_trn", _wrap_VDMask_trn, METH_VARARGS, NULL}, { (char *)"VDMask_inv", _wrap_VDMask_inv, METH_VARARGS, NULL}, { (char *)"VDMask_cat", _wrap_VDMask_cat, METH_VARARGS, NULL}, { (char *)"VDMask_mul", _wrap_VDMask_mul, METH_VARARGS, NULL}, { (char *)"delete_VDMask", _wrap_delete_VDMask, METH_VARARGS, NULL}, { (char *)"VDMask_swigregister", VDMask_swigregister, METH_VARARGS, NULL}, { NULL, NULL, 0, NULL } }; /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ static void *_p_vips__VIMaskTo_p_vips__VMask(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((vips::VMask *) ((vips::VIMask *) x)); } static void *_p_vips__VDMaskTo_p_vips__VMask(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((vips::VMask *) ((vips::VDMask *) x)); } static swig_type_info _swigt__p__private_detail__MASKUNION = {"_p__private_detail__MASKUNION", "_private_detail::MASKUNION *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p__private_detail__VPMask__VMaskType = {"_p__private_detail__VPMask__VMaskType", "_private_detail::VPMask::VMaskType *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_allocator_type = {"_p_allocator_type", "allocator_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_difference_type = {"_p_difference_type", "difference_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_double = {"_p_double", "double *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_im__DOUBLEMASK = {"_p_im__DOUBLEMASK", "im__DOUBLEMASK *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_im__INTMASK = {"_p_im__INTMASK", "im__INTMASK *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_matrix = {"_p_matrix", "matrix *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_size_type = {"_p_size_type", "size_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__ostream = {"_p_std__ostream", "std::ostream *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_value_type = {"_p_value_type", "value_type *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VDMask = {"_p_vips__VDMask", "vips::VDMask *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VError = {"_p_vips__VError", "vips::VError *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VIMask = {"_p_vips__VIMask", "vips::VIMask *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VMask = {"_p_vips__VMask", "vips::VMask *", 0, 0, (void*)0, 0}; static swig_type_info *swig_type_initial[] = { &_swigt__p__private_detail__MASKUNION, &_swigt__p__private_detail__VPMask__VMaskType, &_swigt__p_allocator_type, &_swigt__p_char, &_swigt__p_difference_type, &_swigt__p_double, &_swigt__p_im__DOUBLEMASK, &_swigt__p_im__INTMASK, &_swigt__p_int, &_swigt__p_matrix, &_swigt__p_size_type, &_swigt__p_std__ostream, &_swigt__p_value_type, &_swigt__p_vips__VDMask, &_swigt__p_vips__VError, &_swigt__p_vips__VIMask, &_swigt__p_vips__VMask, }; static swig_cast_info _swigc__p__private_detail__MASKUNION[] = { {&_swigt__p__private_detail__MASKUNION, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p__private_detail__VPMask__VMaskType[] = { {&_swigt__p__private_detail__VPMask__VMaskType, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_allocator_type[] = { {&_swigt__p_allocator_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_difference_type[] = { {&_swigt__p_difference_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_double[] = { {&_swigt__p_double, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_im__DOUBLEMASK[] = { {&_swigt__p_im__DOUBLEMASK, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_im__INTMASK[] = { {&_swigt__p_im__INTMASK, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_matrix[] = { {&_swigt__p_matrix, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_size_type[] = { {&_swigt__p_size_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__ostream[] = { {&_swigt__p_std__ostream, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_value_type[] = { {&_swigt__p_value_type, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VDMask[] = { {&_swigt__p_vips__VDMask, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VError[] = { {&_swigt__p_vips__VError, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VIMask[] = { {&_swigt__p_vips__VIMask, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VMask[] = { {&_swigt__p_vips__VDMask, _p_vips__VDMaskTo_p_vips__VMask, 0, 0}, {&_swigt__p_vips__VMask, 0, 0, 0}, {&_swigt__p_vips__VIMask, _p_vips__VIMaskTo_p_vips__VMask, 0, 0},{0, 0, 0, 0}}; static swig_cast_info *swig_cast_initial[] = { _swigc__p__private_detail__MASKUNION, _swigc__p__private_detail__VPMask__VMaskType, _swigc__p_allocator_type, _swigc__p_char, _swigc__p_difference_type, _swigc__p_double, _swigc__p_im__DOUBLEMASK, _swigc__p_im__INTMASK, _swigc__p_int, _swigc__p_matrix, _swigc__p_size_type, _swigc__p_std__ostream, _swigc__p_value_type, _swigc__p_vips__VDMask, _swigc__p_vips__VError, _swigc__p_vips__VIMask, _swigc__p_vips__VMask, }; /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ static swig_const_info swig_const_table[] = { {0, 0, 0, 0.0, 0, 0}}; #ifdef __cplusplus } #endif /* ----------------------------------------------------------------------------- * Type initialization: * This problem is tough by the requirement that no dynamic * memory is used. Also, since swig_type_info structures store pointers to * swig_cast_info structures and swig_cast_info structures store pointers back * to swig_type_info structures, we need some lookup code at initialization. * The idea is that swig generates all the structures that are needed. * The runtime then collects these partially filled structures. * The SWIG_InitializeModule function takes these initial arrays out of * swig_module, and does all the lookup, filling in the swig_module.types * array with the correct data and linking the correct swig_cast_info * structures together. * * The generated swig_type_info structures are assigned staticly to an initial * array. We just loop through that array, and handle each type individually. * First we lookup if this type has been already loaded, and if so, use the * loaded structure instead of the generated one. Then we have to fill in the * cast linked list. The cast data is initially stored in something like a * two-dimensional array. Each row corresponds to a type (there are the same * number of rows as there are in the swig_type_initial array). Each entry in * a column is one of the swig_cast_info structures for that type. * The cast_initial array is actually an array of arrays, because each row has * a variable number of columns. So to actually build the cast linked list, * we find the array of casts associated with the type, and loop through it * adding the casts to the list. The one last trick we need to do is making * sure the type pointer in the swig_cast_info struct is correct. * * First off, we lookup the cast->type name to see if it is already loaded. * There are three cases to handle: * 1) If the cast->type has already been loaded AND the type we are adding * casting info to has not been loaded (it is in this module), THEN we * replace the cast->type pointer with the type pointer that has already * been loaded. * 2) If BOTH types (the one we are adding casting info to, and the * cast->type) are loaded, THEN the cast info has already been loaded by * the previous module so we just ignore it. * 3) Finally, if cast->type has not already been loaded, then we add that * swig_cast_info to the linked list (because the cast->type) pointer will * be correct. * ----------------------------------------------------------------------------- */ #ifdef __cplusplus extern "C" { #if 0 } /* c-mode */ #endif #endif #if 0 #define SWIGRUNTIME_DEBUG #endif SWIGRUNTIME void SWIG_InitializeModule(void *clientdata) { size_t i; swig_module_info *module_head, *iter; int found, init; /* check to see if the circular list has been setup, if not, set it up */ if (swig_module.next==0) { /* Initialize the swig_module */ swig_module.type_initial = swig_type_initial; swig_module.cast_initial = swig_cast_initial; swig_module.next = &swig_module; init = 1; } else { init = 0; } /* Try and load any already created modules */ module_head = SWIG_GetModule(clientdata); if (!module_head) { /* This is the first module loaded for this interpreter */ /* so set the swig module into the interpreter */ SWIG_SetModule(clientdata, &swig_module); module_head = &swig_module; } else { /* the interpreter has loaded a SWIG module, but has it loaded this one? */ found=0; iter=module_head; do { if (iter==&swig_module) { found=1; break; } iter=iter->next; } while (iter!= module_head); /* if the is found in the list, then all is done and we may leave */ if (found) return; /* otherwise we must add out module into the list */ swig_module.next = module_head->next; module_head->next = &swig_module; } /* When multiple interpreters are used, a module could have already been initialized in a different interpreter, but not yet have a pointer in this interpreter. In this case, we do not want to continue adding types... everything should be set up already */ if (init == 0) return; /* Now work on filling in swig_module.types */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: size %d\n", swig_module.size); #endif for (i = 0; i < swig_module.size; ++i) { swig_type_info *type = 0; swig_type_info *ret; swig_cast_info *cast; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); #endif /* if there is another module already loaded */ if (swig_module.next != &swig_module) { type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); } if (type) { /* Overwrite clientdata field */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: found type %s\n", type->name); #endif if (swig_module.type_initial[i]->clientdata) { type->clientdata = swig_module.type_initial[i]->clientdata; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); #endif } } else { type = swig_module.type_initial[i]; } /* Insert casting types */ cast = swig_module.cast_initial[i]; while (cast->type) { /* Don't need to add information already in the list */ ret = 0; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); #endif if (swig_module.next != &swig_module) { ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); #ifdef SWIGRUNTIME_DEBUG if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); #endif } if (ret) { if (type == swig_module.type_initial[i]) { #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: skip old type %s\n", ret->name); #endif cast->type = ret; ret = 0; } else { /* Check for casting already in the list */ swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); #ifdef SWIGRUNTIME_DEBUG if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); #endif if (!ocast) ret = 0; } } if (!ret) { #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); #endif if (type->cast) { type->cast->prev = cast; cast->next = type->cast; } type->cast = cast; } cast++; } /* Set entry in modules->types array equal to the type */ swig_module.types[i] = type; } swig_module.types[i] = 0; #ifdef SWIGRUNTIME_DEBUG printf("**** SWIG_InitializeModule: Cast List ******\n"); for (i = 0; i < swig_module.size; ++i) { int j = 0; swig_cast_info *cast = swig_module.cast_initial[i]; printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); while (cast->type) { printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); cast++; ++j; } printf("---- Total casts: %d\n",j); } printf("**** SWIG_InitializeModule: Cast List ******\n"); #endif } /* This function will propagate the clientdata field of type to * any new swig_type_info structures that have been added into the list * of equivalent types. It is like calling * SWIG_TypeClientData(type, clientdata) a second time. */ SWIGRUNTIME void SWIG_PropagateClientData(void) { size_t i; swig_cast_info *equiv; static int init_run = 0; if (init_run) return; init_run = 1; for (i = 0; i < swig_module.size; i++) { if (swig_module.types[i]->clientdata) { equiv = swig_module.types[i]->cast; while (equiv) { if (!equiv->converter) { if (equiv->type && !equiv->type->clientdata) SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); } equiv = equiv->next; } } } } #ifdef __cplusplus #if 0 { /* c-mode */ #endif } #endif #ifdef __cplusplus extern "C" { #endif /* Python-specific SWIG API */ #define SWIG_newvarlink() SWIG_Python_newvarlink() #define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) #define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) /* ----------------------------------------------------------------------------- * global variable support code. * ----------------------------------------------------------------------------- */ typedef struct swig_globalvar { char *name; /* Name of global variable */ PyObject *(*get_attr)(void); /* Return the current value */ int (*set_attr)(PyObject *); /* Set the value */ struct swig_globalvar *next; } swig_globalvar; typedef struct swig_varlinkobject { PyObject_HEAD swig_globalvar *vars; } swig_varlinkobject; SWIGINTERN PyObject * swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_InternFromString(""); #else return PyString_FromString(""); #endif } SWIGINTERN PyObject * swig_varlink_str(swig_varlinkobject *v) { #if PY_VERSION_HEX >= 0x03000000 PyObject *str = PyUnicode_InternFromString("("); PyObject *tail; PyObject *joined; swig_globalvar *var; for (var = v->vars; var; var=var->next) { tail = PyUnicode_FromString(var->name); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; if (var->next) { tail = PyUnicode_InternFromString(", "); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; } } tail = PyUnicode_InternFromString(")"); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; #else PyObject *str = PyString_FromString("("); swig_globalvar *var; for (var = v->vars; var; var=var->next) { PyString_ConcatAndDel(&str,PyString_FromString(var->name)); if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); } PyString_ConcatAndDel(&str,PyString_FromString(")")); #endif return str; } SWIGINTERN int swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { char *tmp; PyObject *str = swig_varlink_str(v); fprintf(fp,"Swig global variables "); fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str)); SWIG_Python_str_DelForPy3(tmp); Py_DECREF(str); return 0; } SWIGINTERN void swig_varlink_dealloc(swig_varlinkobject *v) { swig_globalvar *var = v->vars; while (var) { swig_globalvar *n = var->next; free(var->name); free(var); var = n; } } SWIGINTERN PyObject * swig_varlink_getattr(swig_varlinkobject *v, char *n) { PyObject *res = NULL; swig_globalvar *var = v->vars; while (var) { if (strcmp(var->name,n) == 0) { res = (*var->get_attr)(); break; } var = var->next; } if (res == NULL && !PyErr_Occurred()) { PyErr_SetString(PyExc_NameError,"Unknown C global variable"); } return res; } SWIGINTERN int swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { int res = 1; swig_globalvar *var = v->vars; while (var) { if (strcmp(var->name,n) == 0) { res = (*var->set_attr)(p); break; } var = var->next; } if (res == 1 && !PyErr_Occurred()) { PyErr_SetString(PyExc_NameError,"Unknown C global variable"); } return res; } SWIGINTERN PyTypeObject* swig_varlink_type(void) { static char varlink__doc__[] = "Swig var link object"; static PyTypeObject varlink_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX >= 0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"swigvarlink", /* tp_name */ sizeof(swig_varlinkobject), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor) swig_varlink_dealloc, /* tp_dealloc */ (printfunc) swig_varlink_print, /* tp_print */ (getattrfunc) swig_varlink_getattr, /* tp_getattr */ (setattrfunc) swig_varlink_setattr, /* tp_setattr */ 0, /* tp_compare */ (reprfunc) swig_varlink_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ (reprfunc) swig_varlink_str, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ 0, /* tp_flags */ varlink__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; varlink_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 varlink_type.ob_type = &PyType_Type; #else if (PyType_Ready(&varlink_type) < 0) return NULL; #endif } return &varlink_type; } /* Create a variable linking object for use later */ SWIGINTERN PyObject * SWIG_Python_newvarlink(void) { swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); if (result) { result->vars = 0; } return ((PyObject*) result); } SWIGINTERN void SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { swig_varlinkobject *v = (swig_varlinkobject *) p; swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); if (gv) { size_t size = strlen(name)+1; gv->name = (char *)malloc(size); if (gv->name) { strncpy(gv->name,name,size); gv->get_attr = get_attr; gv->set_attr = set_attr; gv->next = v->vars; } } v->vars = gv; } SWIGINTERN PyObject * SWIG_globals(void) { static PyObject *_SWIG_globals = 0; if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink(); return _SWIG_globals; } /* ----------------------------------------------------------------------------- * constants/methods manipulation * ----------------------------------------------------------------------------- */ /* Install Constants */ SWIGINTERN void SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { PyObject *obj = 0; size_t i; for (i = 0; constants[i].type; ++i) { switch(constants[i].type) { case SWIG_PY_POINTER: obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); break; case SWIG_PY_BINARY: obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); break; default: obj = 0; break; } if (obj) { PyDict_SetItemString(d, constants[i].name, obj); Py_DECREF(obj); } } } /* -----------------------------------------------------------------------------*/ /* Fix SwigMethods to carry the callback ptrs when needed */ /* -----------------------------------------------------------------------------*/ SWIGINTERN void SWIG_Python_FixMethods(PyMethodDef *methods, swig_const_info *const_table, swig_type_info **types, swig_type_info **types_initial) { size_t i; for (i = 0; methods[i].ml_name; ++i) { const char *c = methods[i].ml_doc; if (c && (c = strstr(c, "swig_ptr: "))) { int j; swig_const_info *ci = 0; const char *name = c + 10; for (j = 0; const_table[j].type; ++j) { if (strncmp(const_table[j].name, name, strlen(const_table[j].name)) == 0) { ci = &(const_table[j]); break; } } if (ci) { void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; if (ptr) { size_t shift = (ci->ptype) - types; swig_type_info *ty = types_initial[shift]; size_t ldoc = (c - methods[i].ml_doc); size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; char *ndoc = (char*)malloc(ldoc + lptr + 10); if (ndoc) { char *buff = ndoc; strncpy(buff, methods[i].ml_doc, ldoc); buff += ldoc; strncpy(buff, "swig_ptr: ", 10); buff += 10; SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); methods[i].ml_doc = ndoc; } } } } } } #ifdef __cplusplus } #endif /* -----------------------------------------------------------------------------* * Partial Init method * -----------------------------------------------------------------------------*/ #ifdef __cplusplus extern "C" #endif SWIGEXPORT #if PY_VERSION_HEX >= 0x03000000 PyObject* #else void #endif SWIG_init(void) { PyObject *m, *d, *md; #if PY_VERSION_HEX >= 0x03000000 static struct PyModuleDef SWIG_module = { # if PY_VERSION_HEX >= 0x03020000 PyModuleDef_HEAD_INIT, # else { PyObject_HEAD_INIT(NULL) NULL, /* m_init */ 0, /* m_index */ NULL, /* m_copy */ }, # endif (char *) SWIG_name, NULL, -1, SwigMethods, NULL, NULL, NULL, NULL }; #endif #if defined(SWIGPYTHON_BUILTIN) static SwigPyClientData SwigPyObject_clientdata = { 0, 0, 0, 0, 0, 0, 0 }; static PyGetSetDef this_getset_def = { (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL }; static SwigPyGetSet thisown_getset_closure = { (PyCFunction) SwigPyObject_own, (PyCFunction) SwigPyObject_own }; static PyGetSetDef thisown_getset_def = { (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure }; PyObject *metatype_args; PyTypeObject *builtin_pytype; int builtin_base_count; swig_type_info *builtin_basetype; PyObject *tuple; PyGetSetDescrObject *static_getset; PyTypeObject *metatype; SwigPyClientData *cd; PyObject *public_interface, *public_symbol; PyObject *this_descr; PyObject *thisown_descr; int i; (void)builtin_pytype; (void)builtin_base_count; (void)builtin_basetype; (void)tuple; (void)static_getset; /* metatype is used to implement static member variables. */ metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type); assert(metatype_args); metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL); assert(metatype); Py_DECREF(metatype_args); metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro; assert(PyType_Ready(metatype) >= 0); #endif /* Fix SwigMethods to carry the callback ptrs when needed */ SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); #if PY_VERSION_HEX >= 0x03000000 m = PyModule_Create(&SWIG_module); #else m = Py_InitModule((char *) SWIG_name, SwigMethods); #endif md = d = PyModule_GetDict(m); (void)md; SWIG_InitializeModule(0); #ifdef SWIGPYTHON_BUILTIN SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject"); assert(SwigPyObject_stype); cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; if (!cd) { SwigPyObject_stype->clientdata = &SwigPyObject_clientdata; SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce(); } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) { PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules."); # if PY_VERSION_HEX >= 0x03000000 return NULL; # else return; # endif } /* All objects have a 'this' attribute */ this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def); (void)this_descr; /* All objects have a 'thisown' attribute */ thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def); (void)thisown_descr; public_interface = PyList_New(0); public_symbol = 0; (void)public_symbol; PyDict_SetItemString(md, "__all__", public_interface); Py_DECREF(public_interface); for (i = 0; SwigMethods[i].ml_name != NULL; ++i) SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name); for (i = 0; swig_const_table[i].name != 0; ++i) SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name); #endif SWIG_InstallConstants(d,swig_const_table); #if PY_VERSION_HEX >= 0x03000000 return m; #else return; #endif } vips-8.2.2/swig/vipsCC/VMask.i0000664000175000017500000000150412530402247012761 00000000000000/* SWIG interface file for VMask. */ %module VMask %{ #include #include %} %import "VError.i" %import "VImage.i" /* Need to override assignment to get refcounting working. */ %rename(__assign__) *::operator=; /* [] is array subscript, as you'd expect. */ %rename(__index__) vips::VIMask::operator[]; %rename(__index__) vips::VDMask::operator[]; /* () is 2d array subscript, how odd! */ %rename(__call__) vips::VIMask::operator(); %rename(__call__) vips::VDMask::operator(); /* Type conversion operators renamed as functions. */ %rename(convert_VImage) vips::VIMask::operator vips::VImage; %rename(convert_VImage) vips::VDMask::operator vips::VImage; %rename(convert_VIMask) vips::VDMask::operator vips::VIMask; %rename(convert_VDMask) vips::VIMask::operator vips::VDMask; %include vips/VMask.h vips-8.2.2/swig/vipsCC/VImage.i0000664000175000017500000002513512530402247013116 00000000000000/* SWIG interface file for vipsCC7 * * 5/9/07 * - use g_option_context_set_ignore_unknown_options() so we don't fail * on unrecognied -args (thanks Simon) * 3/8/08 * - add .tobuffer() / .frombuffer (), .tostring (), .fromstring () * methods * - add PIL_mode_from_vips () and vips_from_PIL_mode () utility * functions * 6/11/09 * - arg, std::vector was missing the "vips::" */ %module VImage %{ #include /* We need the C API too for the args init and some of the * frombuffer/tobuffer stuff. */ #include %} /* Need to override assignment to get refcounting working. */ %rename(__assign__) vips::VImage::operator=; %include "std_list.i" %include "std_complex.i" %include "std_vector.i" %include "std_except.i" %include "std_string.i" %include "cstring.i" %include "typemaps.i" %import "VError.i" %import "VMask.i" %import "VDisplay.i" namespace std { %template(IntVector) vector; %template(DoubleVector) vector; %template(ImageVector) vector; } /* To get image data to and from VImage (eg. when interfacing with PIL) we * need to be able to import and export Python buffer() objects. Add new * methods to construct from and return pointer/length pairs, then wrap them * ourselves with a couple of typemaps. */ %{ struct VBuffer { void *data; size_t size; }; %} %typemap (out) VBuffer { $result = PyBuffer_FromMemory ($1.data, $1.size); } %typemap (in) VBuffer { const char *buffer; Py_ssize_t buffer_len; if (PyObject_AsCharBuffer ($input, &buffer, &buffer_len) == -1) { PyErr_SetString (PyExc_TypeError,"Type error. Unable to get char pointer from buffer"); return NULL; } $1.data = (void *) buffer; $1.size = buffer_len; } /* Functions which return extra values though their parameters need special * typemaps. */ // double maxpos_avg( double& maxpos_avg_y, double& maxpos_avg_out ) %apply double *OUTPUT { double & maxpos_avg_y }; %apply double *OUTPUT { double & maxpos_avg_out }; // VImage system_image( char* system_image_in_format, char* system_image_out_format, char* system_image_command, char*& system_image_log ) %cstring_output_allocate(char **system_image_log, g_free(*$1)); // VImage segment( int& segment_segments ) %apply int *OUTPUT { int & segment_segments }; // VImage project( VImage& project_vout ) throw( VError ); // nope ... not sure how to handle this one //%apply VImage *OUTPUT { VImage & project_vout }; // VImage label_regions( int& label_regions_segments ) %apply int *OUTPUT { int & label_regions_segments }; // double correl( VImage correl_sec, int correl_xref, int correl_yref, int correl_xsec, int correl_ysec, int correl_hwindowsize, int correl_hsearchsize, int& correl_x, int& correl_y ) %apply int *OUTPUT { int & correl_x }; %apply int *OUTPUT { int & correl_y }; // int _find_lroverlap( VImage _find_lroverlap_sec, int _find_lroverlap_bandno, int _find_lroverlap_xr, int _find_lroverlap_yr, int _find_lroverlap_xs, int _find_lroverlap_ys, int _find_lroverlap_halfcorrelation, int _find_lroverlap_halfarea, int& _find_lroverlap_dy0, double& _find_lroverlap_scale1, double& _find_lroverlap_angle1, double& _find_lroverlap_dx1, double& _find_lroverlap_dy1 ) %apply int *OUTPUT { int & _find_lroverlap_dy0 }; %apply double *OUTPUT { double & _find_lroverlap_scale1 }; %apply double *OUTPUT { double & _find_lroverlap_angle1 }; %apply double *OUTPUT { double & _find_lroverlap_dx1 }; %apply double *OUTPUT { double & _find_lroverlap_dy1 }; // int _find_tboverlap( VImage _find_tboverlap_sec, int _find_tboverlap_bandno, int _find_tboverlap_xr, int _find_tboverlap_yr, int _find_tboverlap_xs, int _find_tboverlap_ys, int _find_tboverlap_halfcorrelation, int _find_tboverlap_halfarea, int& _find_tboverlap_dy0, double& _find_tboverlap_scale1, double& _find_tboverlap_angle1, double& _find_tboverlap_dx1, double& _find_tboverlap_dy1 ) %apply int *OUTPUT { int & _find_tboverlap_dy0 }; %apply double *OUTPUT { double & _find_tboverlap_scale1 }; %apply double *OUTPUT { double & _find_tboverlap_angle1 }; %apply double *OUTPUT { double & _find_tboverlap_dx1 }; %apply double *OUTPUT { double & _find_tboverlap_dy1 }; // double maxpos_subpel( double& maxpos_subpel_y ) %apply double *OUTPUT { double & maxpos_subpel_y }; /* Need the expanded VImage.h in this directory, rather than the usual * vips/VImage.h. SWIG b0rks on #include inside class definitions. */ %include VImage.h %extend vips::VImage { public: VBuffer tobuffer () throw (VError) { VBuffer buffer; buffer.data = $self->data (); buffer.size = (size_t) $self->Xsize () * $self->Ysize () * IM_IMAGE_SIZEOF_PEL ($self->image ()); return buffer; } static VImage frombuffer (VBuffer buffer, int width, int height, int bands, TBandFmt format) throw (VError) { return VImage (buffer.data, width, height, bands, format); } %cstring_output_allocate_size (char **buffer, int *buffer_len, im_free (*$1)) void tostring (char **buffer, int *buffer_len) throw (VError) { void *vips_memory; /* Eval the vips image first. This may throw an exception and we want to * make sure we do this before we try to malloc() space for the copy. */ vips_memory = $self->data (); /* We have to copy the image data to make a string that Python can * manage. Use frombuffer() / tobuffer () if you want to avoid the copy * and manage memory lifetime yourself. */ *buffer_len = (size_t) $self->Xsize () * $self->Ysize () * IM_IMAGE_SIZEOF_PEL ($self->image ()); if (!(*buffer = (char *) im_malloc (NULL, *buffer_len))) verror ("Unable to allocate memory for image copy."); memcpy (*buffer, vips_memory, *buffer_len); } static VImage fromstring (std::string buffer, int width, int height, int bands, TBandFmt format) throw (VError) { void *vips_memory; VImage result; /* We have to copy the string, then add a callback to the VImage to free * it when we free the VImage. Use frombuffer() / tobuffer () if you want * to avoid the copy and manage memory lifetime yourself. */ if (!(vips_memory = im_malloc (NULL, buffer.length ()))) verror ("Unable to allocate memory for image copy."); /* We have to use .c_str () since the string may not be contiguous. */ memcpy (vips_memory, buffer.c_str (), buffer.length ()); result = VImage (vips_memory, width, height, bands, format); if (im_add_close_callback (result.image (), (im_callback_fn) im_free, vips_memory, NULL)) verror (); return result; } } %pythoncode %{ # try to guess a PIL mode string from a VIPS image def PIL_mode_from_vips (vim): if vim.Bands () == 3 and vim.BandFmt () == VImage.FMTUCHAR: return 'RGB' elif vim.Bands () == 4 and vim.BandFmt () == VImage.FMTUCHAR and vim.Type () == VImage.RGB: return 'RGBA' elif vim.Bands () == 4 and vim.BandFmt () == VImage.FMTUCHAR and vim.Type () == VImage.CMYK: return 'CMYK' elif vim.Bands () == 1 and vim.BandFmt () == VImage.FMTUCHAR: return 'L' elif vim.Bands () == 1 and vim.BandFmt () == VImage.FMTINT: return 'I' elif vim.Bands () == 1 and vim.BandFmt () == VImage.FMTFLOAT: return 'F' elif vim.Bands () == 2 and vim.BandFmt () == VImage.FMTUCHAR: return 'LA' else: raise ValueError ('unsupported vips -> pil image') # return vips (bands, format, type) for a PIL mode def vips_from_PIL_mode (mode): if mode == 'RGB': return (3, VImage.FMTUCHAR, VImage.RGB) elif mode == 'RGBA': return (4, VImage.FMTUCHAR, VImage.RGB) elif mode == 'CMYK': return (4, VImage.FMTUCHAR, VImage.CMYK) elif mode == 'L': return (1, VImage.FMTUCHAR, VImage.B_W) elif mode == 'I': return (1, VImage.FMTINT, VImage.B_W) elif mode == 'F': return (1, VImage.FMTFLOAT, VImage.B_W) elif mode == 'LA': return (2, VImage.FMTUCHAR, VImage.B_W) else: raise ValueError ('unsupported pil -> vips image') %} /* Helper code for vips_init(). */ %{ /* Turn on to print args. #define DEBUG */ /* Command-line args during parse. */ typedef struct _Args { /* The n strings we alloc when we get from Python. */ int n; char **str; /* argc/argv as processed by us. */ int argc; char **argv; } Args; #ifdef DEBUG static void args_print (Args *args) { int i; printf ("args_print: argc = %d\n", args->argc); // +1 so we print the trailing NULL too for (i = 0; i < args->argc + 1; i++) printf ("\t%2d)\t%s\n", i, args->argv[i]); } #endif /*DEBUG*/ static void args_free (Args *args) { int i; for (i = 0; i < args->n; i++) IM_FREE (args->str[i]); args->n = 0; args->argc = 0; IM_FREE (args->str); IM_FREE (args->argv); IM_FREE (args); } /* Get argv/argc from python. */ static Args * args_new (void) { Args *args; PyObject *av; int i; int n; args = g_new (Args, 1); args->n = 0; args->str = NULL; args->argc = 0; args->argv = NULL; if (!(av = PySys_GetObject ((char *) "argv"))) return (args); if (!PyList_Check (av)) { PyErr_Warn (PyExc_Warning, "ignoring sys.argv: " "it must be a list of strings"); return args; } n = PyList_Size (av); args->str = g_new (char *, n); for (i = 0; i < n; i++) args->str[i] = g_strdup (PyString_AsString (PyList_GetItem (av, i))); args->n = n; /* +1 for NULL termination. */ args->argc = n; args->argv = g_new (char *, n + 1); for (i = 0; i < n; i++) args->argv[i] = args->str[i]; args->argv[i] = NULL; return args; } static void vips_fatal (const char *msg) { char buf[256]; im_snprintf (buf, 256, "%s\n%s", msg, im_error_buffer()); im_error_clear (); Py_FatalError (buf); } %} %init %{ { Args *args; args = args_new (); #ifdef DEBUG printf ("on startup:\n"); args_print (args); #endif /*DEBUG*/ if (im_init_world (args->argv[0])) { args_free (args); vips_fatal ("can't initialise module vips"); } /* Now parse any GOptions. */ GError *error = NULL; GOptionContext *context; context = g_option_context_new ("- vips"); g_option_context_add_group (context, im_get_option_group()); g_option_context_set_ignore_unknown_options (context, TRUE); if (!g_option_context_parse (context, &args->argc, &args->argv, &error)) { g_option_context_free (context); args_free (args); im_error ("vipsmodule", "%s", error->message); g_error_free (error); vips_fatal ("can't initialise module vips"); } g_option_context_free (context); #ifdef DEBUG printf ("after parse:\n"); args_print (args); #endif /*DEBUG*/ // Write (possibly) modified argc/argv back again. if (args->argv) PySys_SetArgv (args->argc, args->argv); args_free (args); } %} vips-8.2.2/swig/vipsCC/Makefile.am0000664000175000017500000000444012530402247013624 00000000000000# Let make substitute the value of PYTHON_INCLUDES rather than auto* # this makes it easier to support multiple python installs AM_CPPFLAGS = \ -I${top_srcdir}/libvips/include \ -I${top_srcdir}/libvipsCC/include \ @VIPS_CFLAGS@ \ @VIPS_INCLUDES@ \ $(PYTHON_INCLUDES) # we install to a directory inside the python area, since we are a module vipsccdir = $(pyexecdir)/vipsCC vipscc_PYTHON = VImage.py VDisplay.py VError.py VMask.py __init__.py # I tried making a suffix rule for this (and defining SUFFIXES) but I couldn't # get it to work, how annoying # FIXME at some point # # need an expanded VImage.h ... SWIG's preprocessor b0rks on includes inside # class definitions vimagemodule.cxx: VImage.i cpp -DSWIG -E $(top_srcdir)/libvipsCC/include/vips/VImage.h > VImage.h swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $< vdisplaymodule.cxx: VDisplay.i swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $< verrormodule.cxx: VError.i swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $< vmaskmodule.cxx: VMask.i swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $< vipscc_LTLIBRARIES = vimagemodule.la vdisplaymodule.la verrormodule.la vmaskmodule.la # maybe there's a clever way to avoid repeating the link stuff 4 times # vimagemodule uses the C API as well, so it needs libvips too vimagemodule_la_LDFLAGS = -module -avoid-version vimagemodule_la_LIBADD = ../../libvipsCC/libvipsCC.la ../../libvips/libvips.la $(VIPS_LIBS) nodist_vimagemodule_la_SOURCES = vimagemodule.cxx vdisplaymodule_la_LDFLAGS = -module -avoid-version vdisplaymodule_la_LIBADD = ../../libvipsCC/libvipsCC.la $(VIPS_LIBS) nodist_vdisplaymodule_la_SOURCES = vdisplaymodule.cxx verrormodule_la_LDFLAGS = -module -avoid-version verrormodule_la_LIBADD = ../../libvipsCC/libvipsCC.la $(VIPS_LIBS) nodist_verrormodule_la_SOURCES = verrormodule.cxx vmaskmodule_la_LDFLAGS = -module -avoid-version vmaskmodule_la_LIBADD = ../../libvipsCC/libvipsCC.la $(VIPS_LIBS) nodist_vmaskmodule_la_SOURCES = vmaskmodule.cxx CLEANFILES = VImage.h EXTRA_DIST = \ VImage.i VDisplay.i VError.i VMask.i __init__.py \ vimagemodule.cxx \ verrormodule.cxx vdisplaymodule.cxx vmaskmodule.cxx \ VImage.py VDisplay.py VError.py VMask.py vips-8.2.2/swig/vipsCC/verrormodule.cxx0000664000175000017500000040771712651721413015062 00000000000000/* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). * Version 2.0.12 * * This file is not intended to be easily readable and contains a number of * coding conventions designed to improve portability and efficiency. Do not make * changes to this file unless you know what you are doing--modify the SWIG * interface file instead. * ----------------------------------------------------------------------------- */ #define SWIGPYTHON #define SWIG_PYTHON_DIRECTOR_NO_VTABLE #ifdef __cplusplus /* SwigValueWrapper is described in swig.swg */ template class SwigValueWrapper { struct SwigMovePointer { T *ptr; SwigMovePointer(T *p) : ptr(p) { } ~SwigMovePointer() { delete ptr; } SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } } pointer; SwigValueWrapper& operator=(const SwigValueWrapper& rhs); SwigValueWrapper(const SwigValueWrapper& rhs); public: SwigValueWrapper() : pointer(0) { } SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } operator T&() const { return *pointer.ptr; } T *operator&() { return pointer.ptr; } }; template T SwigValueInit() { return T(); } #endif /* ----------------------------------------------------------------------------- * This section contains generic SWIG labels for method/variable * declarations/attributes, and other compiler dependent labels. * ----------------------------------------------------------------------------- */ /* template workaround for compilers that cannot correctly implement the C++ standard */ #ifndef SWIGTEMPLATEDISAMBIGUATOR # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) # define SWIGTEMPLATEDISAMBIGUATOR template # elif defined(__HP_aCC) /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ # define SWIGTEMPLATEDISAMBIGUATOR template # else # define SWIGTEMPLATEDISAMBIGUATOR # endif #endif /* inline attribute */ #ifndef SWIGINLINE # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) # define SWIGINLINE inline # else # define SWIGINLINE # endif #endif /* attribute recognised by some compilers to avoid 'unused' warnings */ #ifndef SWIGUNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define SWIGUNUSED __attribute__ ((__unused__)) # else # define SWIGUNUSED # endif # elif defined(__ICC) # define SWIGUNUSED __attribute__ ((__unused__)) # else # define SWIGUNUSED # endif #endif #ifndef SWIG_MSC_UNSUPPRESS_4505 # if defined(_MSC_VER) # pragma warning(disable : 4505) /* unreferenced local function has been removed */ # endif #endif #ifndef SWIGUNUSEDPARM # ifdef __cplusplus # define SWIGUNUSEDPARM(p) # else # define SWIGUNUSEDPARM(p) p SWIGUNUSED # endif #endif /* internal SWIG method */ #ifndef SWIGINTERN # define SWIGINTERN static SWIGUNUSED #endif /* internal inline SWIG method */ #ifndef SWIGINTERNINLINE # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE #endif /* exporting methods */ #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) # ifndef GCC_HASCLASSVISIBILITY # define GCC_HASCLASSVISIBILITY # endif #endif #ifndef SWIGEXPORT # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # if defined(STATIC_LINKED) # define SWIGEXPORT # else # define SWIGEXPORT __declspec(dllexport) # endif # else # if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) # define SWIGEXPORT __attribute__ ((visibility("default"))) # else # define SWIGEXPORT # endif # endif #endif /* calling conventions for Windows */ #ifndef SWIGSTDCALL # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # define SWIGSTDCALL __stdcall # else # define SWIGSTDCALL # endif #endif /* Deal with Microsoft's attempt at deprecating C standard runtime functions */ #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) # define _CRT_SECURE_NO_DEPRECATE #endif /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) # define _SCL_SECURE_NO_DEPRECATE #endif #if defined(_DEBUG) && defined(SWIG_PYTHON_INTERPRETER_NO_DEBUG) /* Use debug wrappers with the Python release dll */ # undef _DEBUG # include # define _DEBUG #else # include #endif /* ----------------------------------------------------------------------------- * swigrun.swg * * This file contains generic C API SWIG runtime support for pointer * type checking. * ----------------------------------------------------------------------------- */ /* This should only be incremented when either the layout of swig_type_info changes, or for whatever reason, the runtime changes incompatibly */ #define SWIG_RUNTIME_VERSION "4" /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ #ifdef SWIG_TYPE_TABLE # define SWIG_QUOTE_STRING(x) #x # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) #else # define SWIG_TYPE_TABLE_NAME #endif /* You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for creating a static or dynamic library from the SWIG runtime code. In 99.9% of the cases, SWIG just needs to declare them as 'static'. But only do this if strictly necessary, ie, if you have problems with your compiler or suchlike. */ #ifndef SWIGRUNTIME # define SWIGRUNTIME SWIGINTERN #endif #ifndef SWIGRUNTIMEINLINE # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE #endif /* Generic buffer size */ #ifndef SWIG_BUFFER_SIZE # define SWIG_BUFFER_SIZE 1024 #endif /* Flags for pointer conversions */ #define SWIG_POINTER_DISOWN 0x1 #define SWIG_CAST_NEW_MEMORY 0x2 /* Flags for new pointer objects */ #define SWIG_POINTER_OWN 0x1 /* Flags/methods for returning states. The SWIG conversion methods, as ConvertPtr, return an integer that tells if the conversion was successful or not. And if not, an error code can be returned (see swigerrors.swg for the codes). Use the following macros/flags to set or process the returning states. In old versions of SWIG, code such as the following was usually written: if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { // success code } else { //fail code } Now you can be more explicit: int res = SWIG_ConvertPtr(obj,vptr,ty.flags); if (SWIG_IsOK(res)) { // success code } else { // fail code } which is the same really, but now you can also do Type *ptr; int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); if (SWIG_IsOK(res)) { // success code if (SWIG_IsNewObj(res) { ... delete *ptr; } else { ... } } else { // fail code } I.e., now SWIG_ConvertPtr can return new objects and you can identify the case and take care of the deallocation. Of course that also requires SWIG_ConvertPtr to return new result values, such as int SWIG_ConvertPtr(obj, ptr,...) { if () { if () { *ptr = ; return SWIG_NEWOBJ; } else { *ptr = ; return SWIG_OLDOBJ; } } else { return SWIG_BADOBJ; } } Of course, returning the plain '0(success)/-1(fail)' still works, but you can be more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the SWIG errors code. Finally, if the SWIG_CASTRANK_MODE is enabled, the result code allows to return the 'cast rank', for example, if you have this int food(double) int fooi(int); and you call food(1) // cast rank '1' (1 -> 1.0) fooi(1) // cast rank '0' just use the SWIG_AddCast()/SWIG_CheckState() */ #define SWIG_OK (0) #define SWIG_ERROR (-1) #define SWIG_IsOK(r) (r >= 0) #define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) /* The CastRankLimit says how many bits are used for the cast rank */ #define SWIG_CASTRANKLIMIT (1 << 8) /* The NewMask denotes the object was created (using new/malloc) */ #define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) /* The TmpMask is for in/out typemaps that use temporal objects */ #define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) /* Simple returning values */ #define SWIG_BADOBJ (SWIG_ERROR) #define SWIG_OLDOBJ (SWIG_OK) #define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) #define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) /* Check, add and del mask methods */ #define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) #define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) #define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) #define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) /* Cast-Rank Mode */ #if defined(SWIG_CASTRANK_MODE) # ifndef SWIG_TypeRank # define SWIG_TypeRank unsigned long # endif # ifndef SWIG_MAXCASTRANK /* Default cast allowed */ # define SWIG_MAXCASTRANK (2) # endif # define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) # define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) SWIGINTERNINLINE int SWIG_AddCast(int r) { return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; } SWIGINTERNINLINE int SWIG_CheckState(int r) { return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; } #else /* no cast-rank mode */ # define SWIG_AddCast(r) (r) # define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) #endif #include #ifdef __cplusplus extern "C" { #endif typedef void *(*swig_converter_func)(void *, int *); typedef struct swig_type_info *(*swig_dycast_func)(void **); /* Structure to store information on one type */ typedef struct swig_type_info { const char *name; /* mangled name of this type */ const char *str; /* human readable name of this type */ swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ struct swig_cast_info *cast; /* linked list of types that can cast into this type */ void *clientdata; /* language specific type data */ int owndata; /* flag if the structure owns the clientdata */ } swig_type_info; /* Structure to store a type and conversion function used for casting */ typedef struct swig_cast_info { swig_type_info *type; /* pointer to type that is equivalent to this type */ swig_converter_func converter; /* function to cast the void pointers */ struct swig_cast_info *next; /* pointer to next cast in linked list */ struct swig_cast_info *prev; /* pointer to the previous cast */ } swig_cast_info; /* Structure used to store module information * Each module generates one structure like this, and the runtime collects * all of these structures and stores them in a circularly linked list.*/ typedef struct swig_module_info { swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ size_t size; /* Number of types in this module */ struct swig_module_info *next; /* Pointer to next element in circularly linked list */ swig_type_info **type_initial; /* Array of initially generated type structures */ swig_cast_info **cast_initial; /* Array of initially generated casting structures */ void *clientdata; /* Language specific module data */ } swig_module_info; /* Compare two type names skipping the space characters, therefore "char*" == "char *" and "Class" == "Class", etc. Return 0 when the two name types are equivalent, as in strncmp, but skipping ' '. */ SWIGRUNTIME int SWIG_TypeNameComp(const char *f1, const char *l1, const char *f2, const char *l2) { for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { while ((*f1 == ' ') && (f1 != l1)) ++f1; while ((*f2 == ' ') && (f2 != l2)) ++f2; if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; } return (int)((l1 - f1) - (l2 - f2)); } /* Check type equivalence in a name list like ||... Return 0 if equal, -1 if nb < tb, 1 if nb > tb */ SWIGRUNTIME int SWIG_TypeCmp(const char *nb, const char *tb) { int equiv = 1; const char* te = tb + strlen(tb); const char* ne = nb; while (equiv != 0 && *ne) { for (nb = ne; *ne; ++ne) { if (*ne == '|') break; } equiv = SWIG_TypeNameComp(nb, ne, tb, te); if (*ne) ++ne; } return equiv; } /* Check type equivalence in a name list like ||... Return 0 if not equal, 1 if equal */ SWIGRUNTIME int SWIG_TypeEquiv(const char *nb, const char *tb) { return SWIG_TypeCmp(nb, tb) == 0 ? 1 : 0; } /* Check the typename */ SWIGRUNTIME swig_cast_info * SWIG_TypeCheck(const char *c, swig_type_info *ty) { if (ty) { swig_cast_info *iter = ty->cast; while (iter) { if (strcmp(iter->type->name, c) == 0) { if (iter == ty->cast) return iter; /* Move iter to the top of the linked list */ iter->prev->next = iter->next; if (iter->next) iter->next->prev = iter->prev; iter->next = ty->cast; iter->prev = 0; if (ty->cast) ty->cast->prev = iter; ty->cast = iter; return iter; } iter = iter->next; } } return 0; } /* Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison */ SWIGRUNTIME swig_cast_info * SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) { if (ty) { swig_cast_info *iter = ty->cast; while (iter) { if (iter->type == from) { if (iter == ty->cast) return iter; /* Move iter to the top of the linked list */ iter->prev->next = iter->next; if (iter->next) iter->next->prev = iter->prev; iter->next = ty->cast; iter->prev = 0; if (ty->cast) ty->cast->prev = iter; ty->cast = iter; return iter; } iter = iter->next; } } return 0; } /* Cast a pointer up an inheritance hierarchy */ SWIGRUNTIMEINLINE void * SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); } /* Dynamic pointer casting. Down an inheritance hierarchy */ SWIGRUNTIME swig_type_info * SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { swig_type_info *lastty = ty; if (!ty || !ty->dcast) return ty; while (ty && (ty->dcast)) { ty = (*ty->dcast)(ptr); if (ty) lastty = ty; } return lastty; } /* Return the name associated with this type */ SWIGRUNTIMEINLINE const char * SWIG_TypeName(const swig_type_info *ty) { return ty->name; } /* Return the pretty name associated with this type, that is an unmangled type name in a form presentable to the user. */ SWIGRUNTIME const char * SWIG_TypePrettyName(const swig_type_info *type) { /* The "str" field contains the equivalent pretty names of the type, separated by vertical-bar characters. We choose to print the last name, as it is often (?) the most specific. */ if (!type) return NULL; if (type->str != NULL) { const char *last_name = type->str; const char *s; for (s = type->str; *s; s++) if (*s == '|') last_name = s+1; return last_name; } else return type->name; } /* Set the clientdata field for a type */ SWIGRUNTIME void SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { swig_cast_info *cast = ti->cast; /* if (ti->clientdata == clientdata) return; */ ti->clientdata = clientdata; while (cast) { if (!cast->converter) { swig_type_info *tc = cast->type; if (!tc->clientdata) { SWIG_TypeClientData(tc, clientdata); } } cast = cast->next; } } SWIGRUNTIME void SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { SWIG_TypeClientData(ti, clientdata); ti->owndata = 1; } /* Search for a swig_type_info structure only by mangled name Search is a O(log #types) We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list. */ SWIGRUNTIME swig_type_info * SWIG_MangledTypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name) { swig_module_info *iter = start; do { if (iter->size) { register size_t l = 0; register size_t r = iter->size - 1; do { /* since l+r >= 0, we can (>> 1) instead (/ 2) */ register size_t i = (l + r) >> 1; const char *iname = iter->types[i]->name; if (iname) { register int compare = strcmp(name, iname); if (compare == 0) { return iter->types[i]; } else if (compare < 0) { if (i) { r = i - 1; } else { break; } } else if (compare > 0) { l = i + 1; } } else { break; /* should never happen */ } } while (l <= r); } iter = iter->next; } while (iter != end); return 0; } /* Search for a swig_type_info structure for either a mangled name or a human readable name. It first searches the mangled names of the types, which is a O(log #types) If a type is not found it then searches the human readable names, which is O(#types). We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list. */ SWIGRUNTIME swig_type_info * SWIG_TypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name) { /* STEP 1: Search the name field using binary search */ swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); if (ret) { return ret; } else { /* STEP 2: If the type hasn't been found, do a complete search of the str field (the human readable name) */ swig_module_info *iter = start; do { register size_t i = 0; for (; i < iter->size; ++i) { if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) return iter->types[i]; } iter = iter->next; } while (iter != end); } /* neither found a match */ return 0; } /* Pack binary data into a string */ SWIGRUNTIME char * SWIG_PackData(char *c, void *ptr, size_t sz) { static const char hex[17] = "0123456789abcdef"; register const unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register unsigned char uu = *u; *(c++) = hex[(uu & 0xf0) >> 4]; *(c++) = hex[uu & 0xf]; } return c; } /* Unpack binary data from a string */ SWIGRUNTIME const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) { register unsigned char *u = (unsigned char *) ptr; register const unsigned char *eu = u + sz; for (; u != eu; ++u) { register char d = *(c++); register unsigned char uu; if ((d >= '0') && (d <= '9')) uu = ((d - '0') << 4); else if ((d >= 'a') && (d <= 'f')) uu = ((d - ('a'-10)) << 4); else return (char *) 0; d = *(c++); if ((d >= '0') && (d <= '9')) uu |= (d - '0'); else if ((d >= 'a') && (d <= 'f')) uu |= (d - ('a'-10)); else return (char *) 0; *u = uu; } return c; } /* Pack 'void *' into a string buffer. */ SWIGRUNTIME char * SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { char *r = buff; if ((2*sizeof(void *) + 2) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,&ptr,sizeof(void *)); if (strlen(name) + 1 > (bsz - (r - buff))) return 0; strcpy(r,name); return buff; } SWIGRUNTIME const char * SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { *ptr = (void *) 0; return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sizeof(void *)); } SWIGRUNTIME char * SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { char *r = buff; size_t lname = (name ? strlen(name) : 0); if ((2*sz + 2 + lname) > bsz) return 0; *(r++) = '_'; r = SWIG_PackData(r,ptr,sz); if (lname) { strncpy(r,name,lname+1); } else { *r = 0; } return buff; } SWIGRUNTIME const char * SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { if (*c != '_') { if (strcmp(c,"NULL") == 0) { memset(ptr,0,sz); return name; } else { return 0; } } return SWIG_UnpackData(++c,ptr,sz); } #ifdef __cplusplus } #endif /* Errors in SWIG */ #define SWIG_UnknownError -1 #define SWIG_IOError -2 #define SWIG_RuntimeError -3 #define SWIG_IndexError -4 #define SWIG_TypeError -5 #define SWIG_DivisionByZero -6 #define SWIG_OverflowError -7 #define SWIG_SyntaxError -8 #define SWIG_ValueError -9 #define SWIG_SystemError -10 #define SWIG_AttributeError -11 #define SWIG_MemoryError -12 #define SWIG_NullReferenceError -13 /* Compatibility macros for Python 3 */ #if PY_VERSION_HEX >= 0x03000000 #define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type) #define PyInt_Check(x) PyLong_Check(x) #define PyInt_AsLong(x) PyLong_AsLong(x) #define PyInt_FromLong(x) PyLong_FromLong(x) #define PyInt_FromSize_t(x) PyLong_FromSize_t(x) #define PyString_Check(name) PyBytes_Check(name) #define PyString_FromString(x) PyUnicode_FromString(x) #define PyString_Format(fmt, args) PyUnicode_Format(fmt, args) #define PyString_AsString(str) PyBytes_AsString(str) #define PyString_Size(str) PyBytes_Size(str) #define PyString_InternFromString(key) PyUnicode_InternFromString(key) #define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE #define PyString_AS_STRING(x) PyUnicode_AS_STRING(x) #define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x) #endif #ifndef Py_TYPE # define Py_TYPE(op) ((op)->ob_type) #endif /* SWIG APIs for compatibility of both Python 2 & 3 */ #if PY_VERSION_HEX >= 0x03000000 # define SWIG_Python_str_FromFormat PyUnicode_FromFormat #else # define SWIG_Python_str_FromFormat PyString_FromFormat #endif /* Warning: This function will allocate a new string in Python 3, * so please call SWIG_Python_str_DelForPy3(x) to free the space. */ SWIGINTERN char* SWIG_Python_str_AsChar(PyObject *str) { #if PY_VERSION_HEX >= 0x03000000 char *cstr; char *newstr; Py_ssize_t len; str = PyUnicode_AsUTF8String(str); PyBytes_AsStringAndSize(str, &cstr, &len); newstr = (char *) malloc(len+1); memcpy(newstr, cstr, len+1); Py_XDECREF(str); return newstr; #else return PyString_AsString(str); #endif } #if PY_VERSION_HEX >= 0x03000000 # define SWIG_Python_str_DelForPy3(x) free( (void*) (x) ) #else # define SWIG_Python_str_DelForPy3(x) #endif SWIGINTERN PyObject* SWIG_Python_str_FromChar(const char *c) { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_FromString(c); #else return PyString_FromString(c); #endif } /* Add PyOS_snprintf for old Pythons */ #if PY_VERSION_HEX < 0x02020000 # if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM) # define PyOS_snprintf _snprintf # else # define PyOS_snprintf snprintf # endif #endif /* A crude PyString_FromFormat implementation for old Pythons */ #if PY_VERSION_HEX < 0x02020000 #ifndef SWIG_PYBUFFER_SIZE # define SWIG_PYBUFFER_SIZE 1024 #endif static PyObject * PyString_FromFormat(const char *fmt, ...) { va_list ap; char buf[SWIG_PYBUFFER_SIZE * 2]; int res; va_start(ap, fmt); res = vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf); } #endif /* Add PyObject_Del for old Pythons */ #if PY_VERSION_HEX < 0x01060000 # define PyObject_Del(op) PyMem_DEL((op)) #endif #ifndef PyObject_DEL # define PyObject_DEL PyObject_Del #endif /* A crude PyExc_StopIteration exception for old Pythons */ #if PY_VERSION_HEX < 0x02020000 # ifndef PyExc_StopIteration # define PyExc_StopIteration PyExc_RuntimeError # endif # ifndef PyObject_GenericGetAttr # define PyObject_GenericGetAttr 0 # endif #endif /* Py_NotImplemented is defined in 2.1 and up. */ #if PY_VERSION_HEX < 0x02010000 # ifndef Py_NotImplemented # define Py_NotImplemented PyExc_RuntimeError # endif #endif /* A crude PyString_AsStringAndSize implementation for old Pythons */ #if PY_VERSION_HEX < 0x02010000 # ifndef PyString_AsStringAndSize # define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;} # endif #endif /* PySequence_Size for old Pythons */ #if PY_VERSION_HEX < 0x02000000 # ifndef PySequence_Size # define PySequence_Size PySequence_Length # endif #endif /* PyBool_FromLong for old Pythons */ #if PY_VERSION_HEX < 0x02030000 static PyObject *PyBool_FromLong(long ok) { PyObject *result = ok ? Py_True : Py_False; Py_INCREF(result); return result; } #endif /* Py_ssize_t for old Pythons */ /* This code is as recommended by: */ /* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */ #if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN) typedef int Py_ssize_t; # define PY_SSIZE_T_MAX INT_MAX # define PY_SSIZE_T_MIN INT_MIN typedef inquiry lenfunc; typedef intargfunc ssizeargfunc; typedef intintargfunc ssizessizeargfunc; typedef intobjargproc ssizeobjargproc; typedef intintobjargproc ssizessizeobjargproc; typedef getreadbufferproc readbufferproc; typedef getwritebufferproc writebufferproc; typedef getsegcountproc segcountproc; typedef getcharbufferproc charbufferproc; static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc)) { long result = 0; PyObject *i = PyNumber_Int(x); if (i) { result = PyInt_AsLong(i); Py_DECREF(i); } return result; } #endif #if PY_VERSION_HEX < 0x02050000 #define PyInt_FromSize_t(x) PyInt_FromLong((long)x) #endif #if PY_VERSION_HEX < 0x02040000 #define Py_VISIT(op) \ do { \ if (op) { \ int vret = visit((op), arg); \ if (vret) \ return vret; \ } \ } while (0) #endif #if PY_VERSION_HEX < 0x02030000 typedef struct { PyTypeObject type; PyNumberMethods as_number; PyMappingMethods as_mapping; PySequenceMethods as_sequence; PyBufferProcs as_buffer; PyObject *name, *slots; } PyHeapTypeObject; #endif #if PY_VERSION_HEX < 0x02030000 typedef destructor freefunc; #endif #if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \ (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \ (PY_MAJOR_VERSION > 3)) # define SWIGPY_USE_CAPSULE # define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME) #endif #if PY_VERSION_HEX < 0x03020000 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type) #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name) #endif /* ----------------------------------------------------------------------------- * error manipulation * ----------------------------------------------------------------------------- */ SWIGRUNTIME PyObject* SWIG_Python_ErrorType(int code) { PyObject* type = 0; switch(code) { case SWIG_MemoryError: type = PyExc_MemoryError; break; case SWIG_IOError: type = PyExc_IOError; break; case SWIG_RuntimeError: type = PyExc_RuntimeError; break; case SWIG_IndexError: type = PyExc_IndexError; break; case SWIG_TypeError: type = PyExc_TypeError; break; case SWIG_DivisionByZero: type = PyExc_ZeroDivisionError; break; case SWIG_OverflowError: type = PyExc_OverflowError; break; case SWIG_SyntaxError: type = PyExc_SyntaxError; break; case SWIG_ValueError: type = PyExc_ValueError; break; case SWIG_SystemError: type = PyExc_SystemError; break; case SWIG_AttributeError: type = PyExc_AttributeError; break; default: type = PyExc_RuntimeError; } return type; } SWIGRUNTIME void SWIG_Python_AddErrorMsg(const char* mesg) { PyObject *type = 0; PyObject *value = 0; PyObject *traceback = 0; if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback); if (value) { char *tmp; PyObject *old_str = PyObject_Str(value); PyErr_Clear(); Py_XINCREF(type); PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); SWIG_Python_str_DelForPy3(tmp); Py_DECREF(old_str); Py_DECREF(value); } else { PyErr_SetString(PyExc_RuntimeError, mesg); } } #if defined(SWIG_PYTHON_NO_THREADS) # if defined(SWIG_PYTHON_THREADS) # undef SWIG_PYTHON_THREADS # endif #endif #if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ # if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) # if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */ # define SWIG_PYTHON_USE_GIL # endif # endif # if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ # ifndef SWIG_PYTHON_INITIALIZE_THREADS # define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() # endif # ifdef __cplusplus /* C++ code */ class SWIG_Python_Thread_Block { bool status; PyGILState_STATE state; public: void end() { if (status) { PyGILState_Release(state); status = false;} } SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} ~SWIG_Python_Thread_Block() { end(); } }; class SWIG_Python_Thread_Allow { bool status; PyThreadState *save; public: void end() { if (status) { PyEval_RestoreThread(save); status = false; }} SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} ~SWIG_Python_Thread_Allow() { end(); } }; # define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block # define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() # define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow # define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() # else /* C code */ # define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() # define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) # define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() # define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) # endif # else /* Old thread way, not implemented, user must provide it */ # if !defined(SWIG_PYTHON_INITIALIZE_THREADS) # define SWIG_PYTHON_INITIALIZE_THREADS # endif # if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) # define SWIG_PYTHON_THREAD_BEGIN_BLOCK # endif # if !defined(SWIG_PYTHON_THREAD_END_BLOCK) # define SWIG_PYTHON_THREAD_END_BLOCK # endif # if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) # define SWIG_PYTHON_THREAD_BEGIN_ALLOW # endif # if !defined(SWIG_PYTHON_THREAD_END_ALLOW) # define SWIG_PYTHON_THREAD_END_ALLOW # endif # endif #else /* No thread support */ # define SWIG_PYTHON_INITIALIZE_THREADS # define SWIG_PYTHON_THREAD_BEGIN_BLOCK # define SWIG_PYTHON_THREAD_END_BLOCK # define SWIG_PYTHON_THREAD_BEGIN_ALLOW # define SWIG_PYTHON_THREAD_END_ALLOW #endif /* ----------------------------------------------------------------------------- * Python API portion that goes into the runtime * ----------------------------------------------------------------------------- */ #ifdef __cplusplus extern "C" { #endif /* ----------------------------------------------------------------------------- * Constant declarations * ----------------------------------------------------------------------------- */ /* Constant Types */ #define SWIG_PY_POINTER 4 #define SWIG_PY_BINARY 5 /* Constant information structure */ typedef struct swig_const_info { int type; char *name; long lvalue; double dvalue; void *pvalue; swig_type_info **ptype; } swig_const_info; /* ----------------------------------------------------------------------------- * Wrapper of PyInstanceMethod_New() used in Python 3 * It is exported to the generated module, used for -fastproxy * ----------------------------------------------------------------------------- */ #if PY_VERSION_HEX >= 0x03000000 SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func) { return PyInstanceMethod_New(func); } #else SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(func)) { return NULL; } #endif #ifdef __cplusplus } #endif /* ----------------------------------------------------------------------------- * pyrun.swg * * This file contains the runtime support for Python modules * and includes code for managing global variables and pointer * type checking. * * ----------------------------------------------------------------------------- */ /* Common SWIG API */ /* for raw pointers */ #define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) #define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) #define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) #ifdef SWIGPYTHON_BUILTIN #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(self, ptr, type, flags) #else #define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) #endif #define SWIG_InternalNewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(NULL, ptr, type, flags) #define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) #define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) #define swig_owntype int /* for raw packed data */ #define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) /* for class or struct pointers */ #define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) #define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) /* for C or C++ function pointers */ #define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) #define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(NULL, ptr, type, 0) /* for C++ member pointers, ie, member methods */ #define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) /* Runtime API */ #define SWIG_GetModule(clientdata) SWIG_Python_GetModule(clientdata) #define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) #define SWIG_NewClientData(obj) SwigPyClientData_New(obj) #define SWIG_SetErrorObj SWIG_Python_SetErrorObj #define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg #define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) #define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) #define SWIG_fail goto fail /* Runtime API implementation */ /* Error manipulation */ SWIGINTERN void SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { SWIG_PYTHON_THREAD_BEGIN_BLOCK; PyErr_SetObject(errtype, obj); Py_DECREF(obj); SWIG_PYTHON_THREAD_END_BLOCK; } SWIGINTERN void SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { SWIG_PYTHON_THREAD_BEGIN_BLOCK; PyErr_SetString(errtype, msg); SWIG_PYTHON_THREAD_END_BLOCK; } #define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) /* Set a constant value */ #if defined(SWIGPYTHON_BUILTIN) SWIGINTERN void SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) { PyObject *s = PyString_InternFromString(key); PyList_Append(seq, s); Py_DECREF(s); } SWIGINTERN void SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) { #if PY_VERSION_HEX < 0x02030000 PyDict_SetItemString(d, (char *)name, obj); #else PyDict_SetItemString(d, name, obj); #endif Py_DECREF(obj); if (public_interface) SwigPyBuiltin_AddPublicSymbol(public_interface, name); } #else SWIGINTERN void SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { #if PY_VERSION_HEX < 0x02030000 PyDict_SetItemString(d, (char *)name, obj); #else PyDict_SetItemString(d, name, obj); #endif Py_DECREF(obj); } #endif /* Append a value to the result obj */ SWIGINTERN PyObject* SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { #if !defined(SWIG_PYTHON_OUTPUT_TUPLE) if (!result) { result = obj; } else if (result == Py_None) { Py_DECREF(result); result = obj; } else { if (!PyList_Check(result)) { PyObject *o2 = result; result = PyList_New(1); PyList_SetItem(result, 0, o2); } PyList_Append(result,obj); Py_DECREF(obj); } return result; #else PyObject* o2; PyObject* o3; if (!result) { result = obj; } else if (result == Py_None) { Py_DECREF(result); result = obj; } else { if (!PyTuple_Check(result)) { o2 = result; result = PyTuple_New(1); PyTuple_SET_ITEM(result, 0, o2); } o3 = PyTuple_New(1); PyTuple_SET_ITEM(o3, 0, obj); o2 = result; result = PySequence_Concat(o2, o3); Py_DECREF(o2); Py_DECREF(o3); } return result; #endif } /* Unpack the argument tuple */ SWIGINTERN int SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) { if (!args) { if (!min && !max) { return 1; } else { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", name, (min == max ? "" : "at least "), (int)min); return 0; } } if (!PyTuple_Check(args)) { if (min <= 1 && max >= 1) { register int i; objs[0] = args; for (i = 1; i < max; ++i) { objs[i] = 0; } return 2; } PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); return 0; } else { register Py_ssize_t l = PyTuple_GET_SIZE(args); if (l < min) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", name, (min == max ? "" : "at least "), (int)min, (int)l); return 0; } else if (l > max) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", name, (min == max ? "" : "at most "), (int)max, (int)l); return 0; } else { register int i; for (i = 0; i < l; ++i) { objs[i] = PyTuple_GET_ITEM(args, i); } for (; l < max; ++l) { objs[l] = 0; } return i + 1; } } } /* A functor is a function object with one single object argument */ #if PY_VERSION_HEX >= 0x02020000 #define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); #else #define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, "O", obj); #endif /* Helper for static pointer initialization for both C and C++ code, for example static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); */ #ifdef __cplusplus #define SWIG_STATIC_POINTER(var) var #else #define SWIG_STATIC_POINTER(var) var = 0; if (!var) var #endif /* ----------------------------------------------------------------------------- * Pointer declarations * ----------------------------------------------------------------------------- */ /* Flags for new pointer objects */ #define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) #define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) #define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) #define SWIG_BUILTIN_TP_INIT (SWIG_POINTER_OWN << 2) #define SWIG_BUILTIN_INIT (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN) #ifdef __cplusplus extern "C" { #endif /* How to access Py_None */ #if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) # ifndef SWIG_PYTHON_NO_BUILD_NONE # ifndef SWIG_PYTHON_BUILD_NONE # define SWIG_PYTHON_BUILD_NONE # endif # endif #endif #ifdef SWIG_PYTHON_BUILD_NONE # ifdef Py_None # undef Py_None # define Py_None SWIG_Py_None() # endif SWIGRUNTIMEINLINE PyObject * _SWIG_Py_None(void) { PyObject *none = Py_BuildValue((char*)""); Py_DECREF(none); return none; } SWIGRUNTIME PyObject * SWIG_Py_None(void) { static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None(); return none; } #endif /* The python void return value */ SWIGRUNTIMEINLINE PyObject * SWIG_Py_Void(void) { PyObject *none = Py_None; Py_INCREF(none); return none; } /* SwigPyClientData */ typedef struct { PyObject *klass; PyObject *newraw; PyObject *newargs; PyObject *destroy; int delargs; int implicitconv; PyTypeObject *pytype; } SwigPyClientData; SWIGRUNTIMEINLINE int SWIG_Python_CheckImplicit(swig_type_info *ty) { SwigPyClientData *data = (SwigPyClientData *)ty->clientdata; return data ? data->implicitconv : 0; } SWIGRUNTIMEINLINE PyObject * SWIG_Python_ExceptionType(swig_type_info *desc) { SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0; PyObject *klass = data ? data->klass : 0; return (klass ? klass : PyExc_RuntimeError); } SWIGRUNTIME SwigPyClientData * SwigPyClientData_New(PyObject* obj) { if (!obj) { return 0; } else { SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData)); /* the klass element */ data->klass = obj; Py_INCREF(data->klass); /* the newraw method and newargs arguments used to create a new raw instance */ if (PyClass_Check(obj)) { data->newraw = 0; data->newargs = obj; Py_INCREF(obj); } else { #if (PY_VERSION_HEX < 0x02020000) data->newraw = 0; #else data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__"); #endif if (data->newraw) { Py_INCREF(data->newraw); data->newargs = PyTuple_New(1); PyTuple_SetItem(data->newargs, 0, obj); } else { data->newargs = obj; } Py_INCREF(data->newargs); } /* the destroy method, aka as the C++ delete method */ data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__"); if (PyErr_Occurred()) { PyErr_Clear(); data->destroy = 0; } if (data->destroy) { int flags; Py_INCREF(data->destroy); flags = PyCFunction_GET_FLAGS(data->destroy); #ifdef METH_O data->delargs = !(flags & (METH_O)); #else data->delargs = 0; #endif } else { data->delargs = 0; } data->implicitconv = 0; data->pytype = 0; return data; } } SWIGRUNTIME void SwigPyClientData_Del(SwigPyClientData *data) { Py_XDECREF(data->newraw); Py_XDECREF(data->newargs); Py_XDECREF(data->destroy); } /* =============== SwigPyObject =====================*/ typedef struct { PyObject_HEAD void *ptr; swig_type_info *ty; int own; PyObject *next; #ifdef SWIGPYTHON_BUILTIN PyObject *dict; #endif } SwigPyObject; SWIGRUNTIME PyObject * SwigPyObject_long(SwigPyObject *v) { return PyLong_FromVoidPtr(v->ptr); } SWIGRUNTIME PyObject * SwigPyObject_format(const char* fmt, SwigPyObject *v) { PyObject *res = NULL; PyObject *args = PyTuple_New(1); if (args) { if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) { PyObject *ofmt = SWIG_Python_str_FromChar(fmt); if (ofmt) { #if PY_VERSION_HEX >= 0x03000000 res = PyUnicode_Format(ofmt,args); #else res = PyString_Format(ofmt,args); #endif Py_DECREF(ofmt); } Py_DECREF(args); } } return res; } SWIGRUNTIME PyObject * SwigPyObject_oct(SwigPyObject *v) { return SwigPyObject_format("%o",v); } SWIGRUNTIME PyObject * SwigPyObject_hex(SwigPyObject *v) { return SwigPyObject_format("%x",v); } SWIGRUNTIME PyObject * #ifdef METH_NOARGS SwigPyObject_repr(SwigPyObject *v) #else SwigPyObject_repr(SwigPyObject *v, PyObject *args) #endif { const char *name = SWIG_TypePrettyName(v->ty); PyObject *repr = SWIG_Python_str_FromFormat("", (name ? name : "unknown"), (void *)v); if (v->next) { # ifdef METH_NOARGS PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next); # else PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args); # endif # if PY_VERSION_HEX >= 0x03000000 PyObject *joined = PyUnicode_Concat(repr, nrep); Py_DecRef(repr); Py_DecRef(nrep); repr = joined; # else PyString_ConcatAndDel(&repr,nrep); # endif } return repr; } SWIGRUNTIME int SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w) { void *i = v->ptr; void *j = w->ptr; return (i < j) ? -1 : ((i > j) ? 1 : 0); } /* Added for Python 3.x, would it also be useful for Python 2.x? */ SWIGRUNTIME PyObject* SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op) { PyObject* res; if( op != Py_EQ && op != Py_NE ) { Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0); return res; } SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void); #ifdef SWIGPYTHON_BUILTIN static swig_type_info *SwigPyObject_stype = 0; SWIGRUNTIME PyTypeObject* SwigPyObject_type(void) { SwigPyClientData *cd; assert(SwigPyObject_stype); cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; assert(cd); assert(cd->pytype); return cd->pytype; } #else SWIGRUNTIME PyTypeObject* SwigPyObject_type(void) { static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce(); return type; } #endif SWIGRUNTIMEINLINE int SwigPyObject_Check(PyObject *op) { #ifdef SWIGPYTHON_BUILTIN PyTypeObject *target_tp = SwigPyObject_type(); if (PyType_IsSubtype(op->ob_type, target_tp)) return 1; return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0); #else return (Py_TYPE(op) == SwigPyObject_type()) || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0); #endif } SWIGRUNTIME PyObject * SwigPyObject_New(void *ptr, swig_type_info *ty, int own); SWIGRUNTIME void SwigPyObject_dealloc(PyObject *v) { SwigPyObject *sobj = (SwigPyObject *) v; PyObject *next = sobj->next; if (sobj->own == SWIG_POINTER_OWN) { swig_type_info *ty = sobj->ty; SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; PyObject *destroy = data ? data->destroy : 0; if (destroy) { /* destroy is always a VARARGS method */ PyObject *res; if (data->delargs) { /* we need to create a temporary object to carry the destroy operation */ PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0); res = SWIG_Python_CallFunctor(destroy, tmp); Py_DECREF(tmp); } else { PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); PyObject *mself = PyCFunction_GET_SELF(destroy); res = ((*meth)(mself, v)); } Py_XDECREF(res); } #if !defined(SWIG_PYTHON_SILENT_MEMLEAK) else { const char *name = SWIG_TypePrettyName(ty); printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); } #endif } Py_XDECREF(next); PyObject_DEL(v); } SWIGRUNTIME PyObject* SwigPyObject_append(PyObject* v, PyObject* next) { SwigPyObject *sobj = (SwigPyObject *) v; #ifndef METH_O PyObject *tmp = 0; if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL; next = tmp; #endif if (!SwigPyObject_Check(next)) { return NULL; } sobj->next = next; Py_INCREF(next); return SWIG_Py_Void(); } SWIGRUNTIME PyObject* #ifdef METH_NOARGS SwigPyObject_next(PyObject* v) #else SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *) v; if (sobj->next) { Py_INCREF(sobj->next); return sobj->next; } else { return SWIG_Py_Void(); } } SWIGINTERN PyObject* #ifdef METH_NOARGS SwigPyObject_disown(PyObject *v) #else SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *)v; sobj->own = 0; return SWIG_Py_Void(); } SWIGINTERN PyObject* #ifdef METH_NOARGS SwigPyObject_acquire(PyObject *v) #else SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) #endif { SwigPyObject *sobj = (SwigPyObject *)v; sobj->own = SWIG_POINTER_OWN; return SWIG_Py_Void(); } SWIGINTERN PyObject* SwigPyObject_own(PyObject *v, PyObject *args) { PyObject *val = 0; #if (PY_VERSION_HEX < 0x02020000) if (!PyArg_ParseTuple(args,(char *)"|O:own",&val)) #elif (PY_VERSION_HEX < 0x02050000) if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) #else if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) #endif { return NULL; } else { SwigPyObject *sobj = (SwigPyObject *)v; PyObject *obj = PyBool_FromLong(sobj->own); if (val) { #ifdef METH_NOARGS if (PyObject_IsTrue(val)) { SwigPyObject_acquire(v); } else { SwigPyObject_disown(v); } #else if (PyObject_IsTrue(val)) { SwigPyObject_acquire(v,args); } else { SwigPyObject_disown(v,args); } #endif } return obj; } } #ifdef METH_O static PyMethodDef swigobject_methods[] = { {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"acquires ownership of the pointer"}, {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"}, {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"}, {0, 0, 0, 0} }; #else static PyMethodDef swigobject_methods[] = { {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_VARARGS, (char *)"releases ownership of the pointer"}, {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_VARARGS, (char *)"aquires ownership of the pointer"}, {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"}, {0, 0, 0, 0} }; #endif #if PY_VERSION_HEX < 0x02020000 SWIGINTERN PyObject * SwigPyObject_getattr(SwigPyObject *sobj,char *name) { return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name); } #endif SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void) { static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; static PyNumberMethods SwigPyObject_as_number = { (binaryfunc)0, /*nb_add*/ (binaryfunc)0, /*nb_subtract*/ (binaryfunc)0, /*nb_multiply*/ /* nb_divide removed in Python 3 */ #if PY_VERSION_HEX < 0x03000000 (binaryfunc)0, /*nb_divide*/ #endif (binaryfunc)0, /*nb_remainder*/ (binaryfunc)0, /*nb_divmod*/ (ternaryfunc)0,/*nb_power*/ (unaryfunc)0, /*nb_negative*/ (unaryfunc)0, /*nb_positive*/ (unaryfunc)0, /*nb_absolute*/ (inquiry)0, /*nb_nonzero*/ 0, /*nb_invert*/ 0, /*nb_lshift*/ 0, /*nb_rshift*/ 0, /*nb_and*/ 0, /*nb_xor*/ 0, /*nb_or*/ #if PY_VERSION_HEX < 0x03000000 0, /*nb_coerce*/ #endif (unaryfunc)SwigPyObject_long, /*nb_int*/ #if PY_VERSION_HEX < 0x03000000 (unaryfunc)SwigPyObject_long, /*nb_long*/ #else 0, /*nb_reserved*/ #endif (unaryfunc)0, /*nb_float*/ #if PY_VERSION_HEX < 0x03000000 (unaryfunc)SwigPyObject_oct, /*nb_oct*/ (unaryfunc)SwigPyObject_hex, /*nb_hex*/ #endif #if PY_VERSION_HEX >= 0x03000000 /* 3.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */ #elif PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ #elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ #elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */ 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ #endif }; static PyTypeObject swigpyobject_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX >= 0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"SwigPyObject", /* tp_name */ sizeof(SwigPyObject), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)SwigPyObject_dealloc, /* tp_dealloc */ 0, /* tp_print */ #if PY_VERSION_HEX < 0x02020000 (getattrfunc)SwigPyObject_getattr, /* tp_getattr */ #else (getattrfunc)0, /* tp_getattr */ #endif (setattrfunc)0, /* tp_setattr */ #if PY_VERSION_HEX >= 0x03000000 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */ #else (cmpfunc)SwigPyObject_compare, /* tp_compare */ #endif (reprfunc)SwigPyObject_repr, /* tp_repr */ &SwigPyObject_as_number, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)0, /* tp_hash */ (ternaryfunc)0, /* tp_call */ 0, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ swigobject_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0, /* tp_iter */ 0, /* tp_iternext */ swigobject_methods, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; swigpyobject_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 swigpyobject_type.ob_type = &PyType_Type; #else if (PyType_Ready(&swigpyobject_type) < 0) return NULL; #endif } return &swigpyobject_type; } SWIGRUNTIME PyObject * SwigPyObject_New(void *ptr, swig_type_info *ty, int own) { SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type()); if (sobj) { sobj->ptr = ptr; sobj->ty = ty; sobj->own = own; sobj->next = 0; } return (PyObject *)sobj; } /* ----------------------------------------------------------------------------- * Implements a simple Swig Packed type, and use it instead of string * ----------------------------------------------------------------------------- */ typedef struct { PyObject_HEAD void *pack; swig_type_info *ty; size_t size; } SwigPyPacked; SWIGRUNTIME int SwigPyPacked_print(SwigPyPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { char result[SWIG_BUFFER_SIZE]; fputs("pack, v->size, 0, sizeof(result))) { fputs("at ", fp); fputs(result, fp); } fputs(v->ty->name,fp); fputs(">", fp); return 0; } SWIGRUNTIME PyObject * SwigPyPacked_repr(SwigPyPacked *v) { char result[SWIG_BUFFER_SIZE]; if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { return SWIG_Python_str_FromFormat("", result, v->ty->name); } else { return SWIG_Python_str_FromFormat("", v->ty->name); } } SWIGRUNTIME PyObject * SwigPyPacked_str(SwigPyPacked *v) { char result[SWIG_BUFFER_SIZE]; if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name); } else { return SWIG_Python_str_FromChar(v->ty->name); } } SWIGRUNTIME int SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w) { size_t i = v->size; size_t j = w->size; int s = (i < j) ? -1 : ((i > j) ? 1 : 0); return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size); } SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void); SWIGRUNTIME PyTypeObject* SwigPyPacked_type(void) { static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce(); return type; } SWIGRUNTIMEINLINE int SwigPyPacked_Check(PyObject *op) { return ((op)->ob_type == SwigPyPacked_TypeOnce()) || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0); } SWIGRUNTIME void SwigPyPacked_dealloc(PyObject *v) { if (SwigPyPacked_Check(v)) { SwigPyPacked *sobj = (SwigPyPacked *) v; free(sobj->pack); } PyObject_DEL(v); } SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void) { static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; static PyTypeObject swigpypacked_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX>=0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"SwigPyPacked", /* tp_name */ sizeof(SwigPyPacked), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor)SwigPyPacked_dealloc, /* tp_dealloc */ (printfunc)SwigPyPacked_print, /* tp_print */ (getattrfunc)0, /* tp_getattr */ (setattrfunc)0, /* tp_setattr */ #if PY_VERSION_HEX>=0x03000000 0, /* tp_reserved in 3.0.1 */ #else (cmpfunc)SwigPyPacked_compare, /* tp_compare */ #endif (reprfunc)SwigPyPacked_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)0, /* tp_hash */ (ternaryfunc)0, /* tp_call */ (reprfunc)SwigPyPacked_str, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ swigpacked_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ 0, /* tp_free */ 0, /* tp_is_gc */ 0, /* tp_bases */ 0, /* tp_mro */ 0, /* tp_cache */ 0, /* tp_subclasses */ 0, /* tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; swigpypacked_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 swigpypacked_type.ob_type = &PyType_Type; #else if (PyType_Ready(&swigpypacked_type) < 0) return NULL; #endif } return &swigpypacked_type; } SWIGRUNTIME PyObject * SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty) { SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type()); if (sobj) { void *pack = malloc(size); if (pack) { memcpy(pack, ptr, size); sobj->pack = pack; sobj->ty = ty; sobj->size = size; } else { PyObject_DEL((PyObject *) sobj); sobj = 0; } } return (PyObject *) sobj; } SWIGRUNTIME swig_type_info * SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size) { if (SwigPyPacked_Check(obj)) { SwigPyPacked *sobj = (SwigPyPacked *)obj; if (sobj->size != size) return 0; memcpy(ptr, sobj->pack, size); return sobj->ty; } else { return 0; } } /* ----------------------------------------------------------------------------- * pointers/data manipulation * ----------------------------------------------------------------------------- */ SWIGRUNTIMEINLINE PyObject * _SWIG_This(void) { return SWIG_Python_str_FromChar("this"); } static PyObject *swig_this = NULL; SWIGRUNTIME PyObject * SWIG_This(void) { if (swig_this == NULL) swig_this = _SWIG_This(); return swig_this; } /* #define SWIG_PYTHON_SLOW_GETSET_THIS */ /* TODO: I don't know how to implement the fast getset in Python 3 right now */ #if PY_VERSION_HEX>=0x03000000 #define SWIG_PYTHON_SLOW_GETSET_THIS #endif SWIGRUNTIME SwigPyObject * SWIG_Python_GetSwigThis(PyObject *pyobj) { PyObject *obj; if (SwigPyObject_Check(pyobj)) return (SwigPyObject *) pyobj; #ifdef SWIGPYTHON_BUILTIN (void)obj; # ifdef PyWeakref_CheckProxy if (PyWeakref_CheckProxy(pyobj)) { pyobj = PyWeakref_GET_OBJECT(pyobj); if (pyobj && SwigPyObject_Check(pyobj)) return (SwigPyObject*) pyobj; } # endif return NULL; #else obj = 0; #if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000)) if (PyInstance_Check(pyobj)) { obj = _PyInstance_Lookup(pyobj, SWIG_This()); } else { PyObject **dictptr = _PyObject_GetDictPtr(pyobj); if (dictptr != NULL) { PyObject *dict = *dictptr; obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; } else { #ifdef PyWeakref_CheckProxy if (PyWeakref_CheckProxy(pyobj)) { PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; } #endif obj = PyObject_GetAttr(pyobj,SWIG_This()); if (obj) { Py_DECREF(obj); } else { if (PyErr_Occurred()) PyErr_Clear(); return 0; } } } #else obj = PyObject_GetAttr(pyobj,SWIG_This()); if (obj) { Py_DECREF(obj); } else { if (PyErr_Occurred()) PyErr_Clear(); return 0; } #endif if (obj && !SwigPyObject_Check(obj)) { /* a PyObject is called 'this', try to get the 'real this' SwigPyObject from it */ return SWIG_Python_GetSwigThis(obj); } return (SwigPyObject *)obj; #endif } /* Acquire a pointer value */ SWIGRUNTIME int SWIG_Python_AcquirePtr(PyObject *obj, int own) { if (own == SWIG_POINTER_OWN) { SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj); if (sobj) { int oldown = sobj->own; sobj->own = own; return oldown; } } return 0; } /* Convert a pointer value */ SWIGRUNTIME int SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { int res; SwigPyObject *sobj; int implicit_conv = (flags & SWIG_POINTER_IMPLICIT_CONV) != 0; if (!obj) return SWIG_ERROR; if (obj == Py_None && !implicit_conv) { if (ptr) *ptr = 0; return SWIG_OK; } res = SWIG_ERROR; sobj = SWIG_Python_GetSwigThis(obj); if (own) *own = 0; while (sobj) { void *vptr = sobj->ptr; if (ty) { swig_type_info *to = sobj->ty; if (to == ty) { /* no type cast needed */ if (ptr) *ptr = vptr; break; } else { swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); if (!tc) { sobj = (SwigPyObject *)sobj->next; } else { if (ptr) { int newmemory = 0; *ptr = SWIG_TypeCast(tc,vptr,&newmemory); if (newmemory == SWIG_CAST_NEW_MEMORY) { assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */ if (own) *own = *own | SWIG_CAST_NEW_MEMORY; } } break; } } } else { if (ptr) *ptr = vptr; break; } } if (sobj) { if (own) *own = *own | sobj->own; if (flags & SWIG_POINTER_DISOWN) { sobj->own = 0; } res = SWIG_OK; } else { if (implicit_conv) { SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0; if (data && !data->implicitconv) { PyObject *klass = data->klass; if (klass) { PyObject *impconv; data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ impconv = SWIG_Python_CallFunctor(klass, obj); data->implicitconv = 0; if (PyErr_Occurred()) { PyErr_Clear(); impconv = 0; } if (impconv) { SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv); if (iobj) { void *vptr; res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); if (SWIG_IsOK(res)) { if (ptr) { *ptr = vptr; /* transfer the ownership to 'ptr' */ iobj->own = 0; res = SWIG_AddCast(res); res = SWIG_AddNewMask(res); } else { res = SWIG_AddCast(res); } } } Py_DECREF(impconv); } } } } if (!SWIG_IsOK(res) && obj == Py_None) { if (ptr) *ptr = 0; if (PyErr_Occurred()) PyErr_Clear(); res = SWIG_OK; } } return res; } /* Convert a function ptr value */ SWIGRUNTIME int SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { if (!PyCFunction_Check(obj)) { return SWIG_ConvertPtr(obj, ptr, ty, 0); } else { void *vptr = 0; /* here we get the method pointer for callbacks */ const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; if (desc) desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; if (!desc) return SWIG_ERROR; if (ty) { swig_cast_info *tc = SWIG_TypeCheck(desc,ty); if (tc) { int newmemory = 0; *ptr = SWIG_TypeCast(tc,vptr,&newmemory); assert(!newmemory); /* newmemory handling not yet implemented */ } else { return SWIG_ERROR; } } else { *ptr = vptr; } return SWIG_OK; } } /* Convert a packed value value */ SWIGRUNTIME int SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz); if (!to) return SWIG_ERROR; if (ty) { if (to != ty) { /* check type cast? */ swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); if (!tc) return SWIG_ERROR; } } return SWIG_OK; } /* ----------------------------------------------------------------------------- * Create a new pointer object * ----------------------------------------------------------------------------- */ /* Create a new instance object, without calling __init__, and set the 'this' attribute. */ SWIGRUNTIME PyObject* SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this) { #if (PY_VERSION_HEX >= 0x02020000) PyObject *inst = 0; PyObject *newraw = data->newraw; if (newraw) { inst = PyObject_Call(newraw, data->newargs, NULL); if (inst) { #if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) PyObject **dictptr = _PyObject_GetDictPtr(inst); if (dictptr != NULL) { PyObject *dict = *dictptr; if (dict == NULL) { dict = PyDict_New(); *dictptr = dict; PyDict_SetItem(dict, SWIG_This(), swig_this); } } #else PyObject *key = SWIG_This(); PyObject_SetAttr(inst, key, swig_this); #endif } } else { #if PY_VERSION_HEX >= 0x03000000 inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None); if (inst) { PyObject_SetAttr(inst, SWIG_This(), swig_this); Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG; } #else PyObject *dict = PyDict_New(); if (dict) { PyDict_SetItem(dict, SWIG_This(), swig_this); inst = PyInstance_NewRaw(data->newargs, dict); Py_DECREF(dict); } #endif } return inst; #else #if (PY_VERSION_HEX >= 0x02010000) PyObject *inst = 0; PyObject *dict = PyDict_New(); if (dict) { PyDict_SetItem(dict, SWIG_This(), swig_this); inst = PyInstance_NewRaw(data->newargs, dict); Py_DECREF(dict); } return (PyObject *) inst; #else PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type); if (inst == NULL) { return NULL; } inst->in_class = (PyClassObject *)data->newargs; Py_INCREF(inst->in_class); inst->in_dict = PyDict_New(); if (inst->in_dict == NULL) { Py_DECREF(inst); return NULL; } #ifdef Py_TPFLAGS_HAVE_WEAKREFS inst->in_weakreflist = NULL; #endif #ifdef Py_TPFLAGS_GC PyObject_GC_Init(inst); #endif PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this); return (PyObject *) inst; #endif #endif } SWIGRUNTIME void SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) { PyObject *dict; #if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS) PyObject **dictptr = _PyObject_GetDictPtr(inst); if (dictptr != NULL) { dict = *dictptr; if (dict == NULL) { dict = PyDict_New(); *dictptr = dict; } PyDict_SetItem(dict, SWIG_This(), swig_this); return; } #endif dict = PyObject_GetAttrString(inst, (char*)"__dict__"); PyDict_SetItem(dict, SWIG_This(), swig_this); Py_DECREF(dict); } SWIGINTERN PyObject * SWIG_Python_InitShadowInstance(PyObject *args) { PyObject *obj[2]; if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) { return NULL; } else { SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]); if (sthis) { SwigPyObject_append((PyObject*) sthis, obj[1]); } else { SWIG_Python_SetSwigThis(obj[0], obj[1]); } return SWIG_Py_Void(); } } /* Create a new pointer object */ SWIGRUNTIME PyObject * SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) { SwigPyClientData *clientdata; PyObject * robj; int own; if (!ptr) return SWIG_Py_Void(); clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0; own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; if (clientdata && clientdata->pytype) { SwigPyObject *newobj; if (flags & SWIG_BUILTIN_TP_INIT) { newobj = (SwigPyObject*) self; if (newobj->ptr) { PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0); while (newobj->next) newobj = (SwigPyObject *) newobj->next; newobj->next = next_self; newobj = (SwigPyObject *)next_self; } } else { newobj = PyObject_New(SwigPyObject, clientdata->pytype); } if (newobj) { newobj->ptr = ptr; newobj->ty = type; newobj->own = own; newobj->next = 0; #ifdef SWIGPYTHON_BUILTIN newobj->dict = 0; #endif return (PyObject*) newobj; } return SWIG_Py_Void(); } assert(!(flags & SWIG_BUILTIN_TP_INIT)); robj = SwigPyObject_New(ptr, type, own); if (robj && clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); Py_DECREF(robj); robj = inst; } return robj; } /* Create a new packed object */ SWIGRUNTIMEINLINE PyObject * SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); } /* -----------------------------------------------------------------------------* * Get type list * -----------------------------------------------------------------------------*/ #ifdef SWIG_LINK_RUNTIME void *SWIG_ReturnGlobalTypeList(void *); #endif SWIGRUNTIME swig_module_info * SWIG_Python_GetModule(void *SWIGUNUSEDPARM(clientdata)) { static void *type_pointer = (void *)0; /* first check if module already created */ if (!type_pointer) { #ifdef SWIG_LINK_RUNTIME type_pointer = SWIG_ReturnGlobalTypeList((void *)0); #else # ifdef SWIGPY_USE_CAPSULE type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0); # else type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME); # endif if (PyErr_Occurred()) { PyErr_Clear(); type_pointer = (void *)0; } #endif } return (swig_module_info *) type_pointer; } #if PY_MAJOR_VERSION < 2 /* PyModule_AddObject function was introduced in Python 2.0. The following function is copied out of Python/modsupport.c in python version 2.3.4 */ SWIGINTERN int PyModule_AddObject(PyObject *m, char *name, PyObject *o) { PyObject *dict; if (!PyModule_Check(m)) { PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs module as first arg"); return SWIG_ERROR; } if (!o) { PyErr_SetString(PyExc_TypeError, "PyModule_AddObject() needs non-NULL value"); return SWIG_ERROR; } dict = PyModule_GetDict(m); if (dict == NULL) { /* Internal error -- modules must have a dict! */ PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__", PyModule_GetName(m)); return SWIG_ERROR; } if (PyDict_SetItemString(dict, name, o)) return SWIG_ERROR; Py_DECREF(o); return SWIG_OK; } #endif SWIGRUNTIME void #ifdef SWIGPY_USE_CAPSULE SWIG_Python_DestroyModule(PyObject *obj) #else SWIG_Python_DestroyModule(void *vptr) #endif { #ifdef SWIGPY_USE_CAPSULE swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME); #else swig_module_info *swig_module = (swig_module_info *) vptr; #endif swig_type_info **types = swig_module->types; size_t i; for (i =0; i < swig_module->size; ++i) { swig_type_info *ty = types[i]; if (ty->owndata) { SwigPyClientData *data = (SwigPyClientData *) ty->clientdata; if (data) SwigPyClientData_Del(data); } } Py_DECREF(SWIG_This()); swig_this = NULL; } SWIGRUNTIME void SWIG_Python_SetModule(swig_module_info *swig_module) { #if PY_VERSION_HEX >= 0x03000000 /* Add a dummy module object into sys.modules */ PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION); #else static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */ PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table); #endif #ifdef SWIGPY_USE_CAPSULE PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule); if (pointer && module) { PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer); } else { Py_XDECREF(pointer); } #else PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule); if (pointer && module) { PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer); } else { Py_XDECREF(pointer); } #endif } /* The python cached type query */ SWIGRUNTIME PyObject * SWIG_Python_TypeCache(void) { static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); return cache; } SWIGRUNTIME swig_type_info * SWIG_Python_TypeQuery(const char *type) { PyObject *cache = SWIG_Python_TypeCache(); PyObject *key = SWIG_Python_str_FromChar(type); PyObject *obj = PyDict_GetItem(cache, key); swig_type_info *descriptor; if (obj) { #ifdef SWIGPY_USE_CAPSULE descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL); #else descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj); #endif } else { swig_module_info *swig_module = SWIG_GetModule(0); descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); if (descriptor) { #ifdef SWIGPY_USE_CAPSULE obj = PyCapsule_New((void*) descriptor, NULL, NULL); #else obj = PyCObject_FromVoidPtr(descriptor, NULL); #endif PyDict_SetItem(cache, key, obj); Py_DECREF(obj); } } Py_DECREF(key); return descriptor; } /* For backward compatibility only */ #define SWIG_POINTER_EXCEPTION 0 #define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) #define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) SWIGRUNTIME int SWIG_Python_AddErrMesg(const char* mesg, int infront) { if (PyErr_Occurred()) { PyObject *type = 0; PyObject *value = 0; PyObject *traceback = 0; PyErr_Fetch(&type, &value, &traceback); if (value) { char *tmp; PyObject *old_str = PyObject_Str(value); Py_XINCREF(type); PyErr_Clear(); if (infront) { PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str)); } else { PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg); } SWIG_Python_str_DelForPy3(tmp); Py_DECREF(old_str); } return 1; } else { return 0; } } SWIGRUNTIME int SWIG_Python_ArgFail(int argnum) { if (PyErr_Occurred()) { /* add information about failing argument */ char mesg[256]; PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); return SWIG_Python_AddErrMesg(mesg, 1); } else { return 0; } } SWIGRUNTIMEINLINE const char * SwigPyObject_GetDesc(PyObject *self) { SwigPyObject *v = (SwigPyObject *)self; swig_type_info *ty = v ? v->ty : 0; return ty ? ty->str : ""; } SWIGRUNTIME void SWIG_Python_TypeError(const char *type, PyObject *obj) { if (type) { #if defined(SWIG_COBJECT_TYPES) if (obj && SwigPyObject_Check(obj)) { const char *otype = (const char *) SwigPyObject_GetDesc(obj); if (otype) { PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received", type, otype); return; } } else #endif { const char *otype = (obj ? obj->ob_type->tp_name : 0); if (otype) { PyObject *str = PyObject_Str(obj); const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0; if (cstr) { PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", type, otype, cstr); SWIG_Python_str_DelForPy3(cstr); } else { PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", type, otype); } Py_XDECREF(str); return; } } PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); } else { PyErr_Format(PyExc_TypeError, "unexpected type is received"); } } /* Convert a pointer value, signal an exception on a type mismatch */ SWIGRUNTIME void * SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) { void *result; if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { PyErr_Clear(); #if SWIG_POINTER_EXCEPTION if (flags) { SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); SWIG_Python_ArgFail(argnum); } #endif } return result; } #ifdef SWIGPYTHON_BUILTIN SWIGRUNTIME int SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) { PyTypeObject *tp = obj->ob_type; PyObject *descr; PyObject *encoded_name; descrsetfunc f; int res = -1; # ifdef Py_USING_UNICODE if (PyString_Check(name)) { name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL); if (!name) return -1; } else if (!PyUnicode_Check(name)) # else if (!PyString_Check(name)) # endif { PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name); return -1; } else { Py_INCREF(name); } if (!tp->tp_dict) { if (PyType_Ready(tp) < 0) goto done; } descr = _PyType_Lookup(tp, name); f = NULL; if (descr != NULL) f = descr->ob_type->tp_descr_set; if (!f) { if (PyString_Check(name)) { encoded_name = name; Py_INCREF(name); } else { encoded_name = PyUnicode_AsUTF8String(name); } PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name)); Py_DECREF(encoded_name); } else { res = f(descr, obj, value); } done: Py_DECREF(name); return res; } #endif #ifdef __cplusplus } #endif #define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else /* -------- TYPES TABLE (BEGIN) -------- */ #define SWIGTYPE_p_char swig_types[0] #define SWIGTYPE_p_std__exception swig_types[1] #define SWIGTYPE_p_std__ostream swig_types[2] #define SWIGTYPE_p_vips__VError swig_types[3] static swig_type_info *swig_types[5]; static swig_module_info swig_module = {swig_types, 4, 0, 0, 0, 0}; #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) /* -------- TYPES TABLE (END) -------- */ #if (PY_VERSION_HEX <= 0x02000000) # if !defined(SWIG_PYTHON_CLASSIC) # error "This python version requires swig to be run with the '-classic' option" # endif #endif /*----------------------------------------------- @(target):= verrormodule.so ------------------------------------------------*/ #if PY_VERSION_HEX >= 0x03000000 # define SWIG_init PyInit_verrormodule #else # define SWIG_init initverrormodule #endif #define SWIG_name "verrormodule" #define SWIGVERSION 0x020012 #define SWIG_VERSION SWIGVERSION #define SWIG_as_voidptr(a) const_cast< void * >(static_cast< const void * >(a)) #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),reinterpret_cast< void** >(a)) #include namespace swig { class SwigPtr_PyObject { protected: PyObject *_obj; public: SwigPtr_PyObject() :_obj(0) { } SwigPtr_PyObject(const SwigPtr_PyObject& item) : _obj(item._obj) { Py_XINCREF(_obj); } SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj) { if (initial_ref) { Py_XINCREF(_obj); } } SwigPtr_PyObject & operator=(const SwigPtr_PyObject& item) { Py_XINCREF(item._obj); Py_XDECREF(_obj); _obj = item._obj; return *this; } ~SwigPtr_PyObject() { Py_XDECREF(_obj); } operator PyObject *() const { return _obj; } PyObject *operator->() const { return _obj; } }; } namespace swig { struct SwigVar_PyObject : SwigPtr_PyObject { SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { } SwigVar_PyObject & operator = (PyObject* obj) { Py_XDECREF(_obj); _obj = obj; return *this; } }; } #include #include #include SWIGINTERN swig_type_info* SWIG_pchar_descriptor(void) { static int init = 0; static swig_type_info* info = 0; if (!init) { info = SWIG_TypeQuery("_p_char"); init = 1; } return info; } SWIGINTERN int SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) { #if PY_VERSION_HEX>=0x03000000 if (PyUnicode_Check(obj)) #else if (PyString_Check(obj)) #endif { char *cstr; Py_ssize_t len; #if PY_VERSION_HEX>=0x03000000 if (!alloc && cptr) { /* We can't allow converting without allocation, since the internal representation of string in Python 3 is UCS-2/UCS-4 but we require a UTF-8 representation. TODO(bhy) More detailed explanation */ return SWIG_RuntimeError; } obj = PyUnicode_AsUTF8String(obj); PyBytes_AsStringAndSize(obj, &cstr, &len); if(alloc) *alloc = SWIG_NEWOBJ; #else PyString_AsStringAndSize(obj, &cstr, &len); #endif if (cptr) { if (alloc) { /* In python the user should not be able to modify the inner string representation. To warranty that, if you define SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string buffer is always returned. The default behavior is just to return the pointer value, so, be careful. */ #if defined(SWIG_PYTHON_SAFE_CSTRINGS) if (*alloc != SWIG_OLDOBJ) #else if (*alloc == SWIG_NEWOBJ) #endif { *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1))); *alloc = SWIG_NEWOBJ; } else { *cptr = cstr; *alloc = SWIG_OLDOBJ; } } else { #if PY_VERSION_HEX>=0x03000000 assert(0); /* Should never reach here in Python 3 */ #endif *cptr = SWIG_Python_str_AsChar(obj); } } if (psize) *psize = len + 1; #if PY_VERSION_HEX>=0x03000000 Py_XDECREF(obj); #endif return SWIG_OK; } else { swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); if (pchar_descriptor) { void* vptr = 0; if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { if (cptr) *cptr = (char *) vptr; if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; if (alloc) *alloc = SWIG_OLDOBJ; return SWIG_OK; } } } return SWIG_TypeError; } SWIGINTERN int SWIG_AsPtr_std_string (PyObject * obj, std::string **val) { char* buf = 0 ; size_t size = 0; int alloc = SWIG_OLDOBJ; if (SWIG_IsOK((SWIG_AsCharPtrAndSize(obj, &buf, &size, &alloc)))) { if (buf) { if (val) *val = new std::string(buf, size - 1); if (alloc == SWIG_NEWOBJ) delete[] buf; return SWIG_NEWOBJ; } else { if (val) *val = 0; return SWIG_OLDOBJ; } } else { static int init = 0; static swig_type_info* descriptor = 0; if (!init) { descriptor = SWIG_TypeQuery("std::string" " *"); init = 1; } if (descriptor) { std::string *vptr; int res = SWIG_ConvertPtr(obj, (void**)&vptr, descriptor, 0); if (SWIG_IsOK(res) && val) *val = vptr; return res; } } return SWIG_ERROR; } #include #if !defined(SWIG_NO_LLONG_MAX) # if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) # define LLONG_MAX __LONG_LONG_MAX__ # define LLONG_MIN (-LLONG_MAX - 1LL) # define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) # endif #endif SWIGINTERN int SWIG_AsVal_double (PyObject *obj, double *val) { int res = SWIG_TypeError; if (PyFloat_Check(obj)) { if (val) *val = PyFloat_AsDouble(obj); return SWIG_OK; } else if (PyInt_Check(obj)) { if (val) *val = PyInt_AsLong(obj); return SWIG_OK; } else if (PyLong_Check(obj)) { double v = PyLong_AsDouble(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_OK; } else { PyErr_Clear(); } } #ifdef SWIG_PYTHON_CAST_MODE { int dispatch = 0; double d = PyFloat_AsDouble(obj); if (!PyErr_Occurred()) { if (val) *val = d; return SWIG_AddCast(SWIG_OK); } else { PyErr_Clear(); } if (!dispatch) { long v = PyLong_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); } else { PyErr_Clear(); } } } #endif return res; } #include #include SWIGINTERNINLINE int SWIG_CanCastAsInteger(double *d, double min, double max) { double x = *d; if ((min <= x && x <= max)) { double fx = floor(x); double cx = ceil(x); double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ if ((errno == EDOM) || (errno == ERANGE)) { errno = 0; } else { double summ, reps, diff; if (rd < x) { diff = x - rd; } else if (rd > x) { diff = rd - x; } else { return 1; } summ = rd + x; reps = diff/summ; if (reps < 8*DBL_EPSILON) { *d = rd; return 1; } } } return 0; } SWIGINTERN int SWIG_AsVal_long (PyObject *obj, long* val) { if (PyInt_Check(obj)) { if (val) *val = PyInt_AsLong(obj); return SWIG_OK; } else if (PyLong_Check(obj)) { long v = PyLong_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_OK; } else { PyErr_Clear(); } } #ifdef SWIG_PYTHON_CAST_MODE { int dispatch = 0; long v = PyInt_AsLong(obj); if (!PyErr_Occurred()) { if (val) *val = v; return SWIG_AddCast(SWIG_OK); } else { PyErr_Clear(); } if (!dispatch) { double d; int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { if (val) *val = (long)(d); return res; } } } #endif return SWIG_TypeError; } SWIGINTERN int SWIG_AsVal_int (PyObject * obj, int *val) { long v; int res = SWIG_AsVal_long (obj, &v); if (SWIG_IsOK(res)) { if ((v < INT_MIN || v > INT_MAX)) { return SWIG_OverflowError; } else { if (val) *val = static_cast< int >(v); } } return res; } SWIGINTERNINLINE PyObject * SWIG_FromCharPtrAndSize(const char* carray, size_t size) { if (carray) { if (size > INT_MAX) { swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); return pchar_descriptor ? SWIG_InternalNewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void(); } else { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_FromStringAndSize(carray, static_cast< int >(size)); #else return PyString_FromStringAndSize(carray, static_cast< int >(size)); #endif } } else { return SWIG_Py_Void(); } } SWIGINTERNINLINE PyObject * SWIG_FromCharPtr(const char *cptr) { return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); } SWIGINTERN char const *vips_VError___str__(vips::VError *self){ return self->what (); } #ifdef __cplusplus extern "C" { #endif SWIGINTERN PyObject *_wrap_new_VError__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string arg1 ; PyObject * obj0 = 0 ; vips::VError *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:new_VError",&obj0)) SWIG_fail; { std::string *ptr = (std::string *)0; int res = SWIG_AsPtr_std_string(obj0, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_VError" "', argument " "1"" of type '" "std::string""'"); } arg1 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } result = (vips::VError *)new vips::VError(arg1); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VError, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VError__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VError *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_VError")) SWIG_fail; result = (vips::VError *)new vips::VError(); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VError, SWIG_POINTER_NEW | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_new_VError(PyObject *self, PyObject *args) { int argc; PyObject *argv[2]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 1) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_new_VError__SWIG_1(self, args); } if (argc == 1) { int _v; int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_new_VError__SWIG_0(self, args); } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_VError'.\n" " Possible C/C++ prototypes are:\n" " vips::VError::VError(std::string)\n" " vips::VError::VError()\n"); return 0; } SWIGINTERN PyObject *_wrap_delete_VError(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VError *arg1 = (vips::VError *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:delete_VError",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VError, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_VError" "', argument " "1"" of type '" "vips::VError *""'"); } arg1 = reinterpret_cast< vips::VError * >(argp1); delete arg1; resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VError_perror__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VError *arg1 = (vips::VError *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int res2 ; char *buf2 = 0 ; int alloc2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VError_perror",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VError, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VError_perror" "', argument " "1"" of type '" "vips::VError *""'"); } arg1 = reinterpret_cast< vips::VError * >(argp1); res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VError_perror" "', argument " "2"" of type '" "char const *""'"); } arg2 = reinterpret_cast< char * >(buf2); (arg1)->perror((char const *)arg2); resultobj = SWIG_Py_Void(); if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return resultobj; fail: if (alloc2 == SWIG_NEWOBJ) delete[] buf2; return NULL; } SWIGINTERN PyObject *_wrap_VError_perror__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VError *arg1 = (vips::VError *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VError_perror",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VError, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VError_perror" "', argument " "1"" of type '" "vips::VError *""'"); } arg1 = reinterpret_cast< vips::VError * >(argp1); (arg1)->perror(); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VError_perror(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 1) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VError, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VError_perror__SWIG_1(self, args); } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VError, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_AsCharPtrAndSize(argv[1], 0, NULL, 0); _v = SWIG_CheckState(res); if (_v) { return _wrap_VError_perror__SWIG_0(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VError_perror'.\n" " Possible C/C++ prototypes are:\n" " vips::VError::perror(char const *)\n" " vips::VError::perror()\n"); return 0; } SWIGINTERN PyObject *_wrap_VError_app__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VError *arg1 = (vips::VError *) 0 ; std::string arg2 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VError *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VError_app",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VError, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VError_app" "', argument " "1"" of type '" "vips::VError *""'"); } arg1 = reinterpret_cast< vips::VError * >(argp1); { std::string *ptr = (std::string *)0; int res = SWIG_AsPtr_std_string(obj1, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "VError_app" "', argument " "2"" of type '" "std::string""'"); } arg2 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } result = (vips::VError *) &(arg1)->app(arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VError, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VError_app__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VError *arg1 = (vips::VError *) 0 ; int arg2 ; void *argp1 = 0 ; int res1 = 0 ; int val2 ; int ecode2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; vips::VError *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VError_app",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VError, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VError_app" "', argument " "1"" of type '" "vips::VError *""'"); } arg1 = reinterpret_cast< vips::VError * >(argp1); ecode2 = SWIG_AsVal_int(obj1, &val2); if (!SWIG_IsOK(ecode2)) { SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "VError_app" "', argument " "2"" of type '" "int""'"); } arg2 = static_cast< int >(val2); result = (vips::VError *) &(arg1)->app(arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_vips__VError, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VError_app(PyObject *self, PyObject *args) { int argc; PyObject *argv[3]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 2) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VError, 0); _v = SWIG_CheckState(res); if (_v) { { int res = SWIG_AsVal_int(argv[1], NULL); _v = SWIG_CheckState(res); } if (_v) { return _wrap_VError_app__SWIG_1(self, args); } } } if (argc == 2) { int _v; void *vptr = 0; int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_vips__VError, 0); _v = SWIG_CheckState(res); if (_v) { int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_VError_app__SWIG_0(self, args); } } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'VError_app'.\n" " Possible C/C++ prototypes are:\n" " vips::VError::app(std::string)\n" " vips::VError::app(int const)\n"); return 0; } SWIGINTERN PyObject *_wrap_VError_what(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VError *arg1 = (vips::VError *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VError_what",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VError, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VError_what" "', argument " "1"" of type '" "vips::VError const *""'"); } arg1 = reinterpret_cast< vips::VError * >(argp1); result = (char *)((vips::VError const *)arg1)->what(); resultobj = SWIG_FromCharPtr((const char *)result); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VError_ostream_print(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VError *arg1 = (vips::VError *) 0 ; std::ostream *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:VError_ostream_print",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VError, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VError_ostream_print" "', argument " "1"" of type '" "vips::VError const *""'"); } arg1 = reinterpret_cast< vips::VError * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_std__ostream, 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "VError_ostream_print" "', argument " "2"" of type '" "std::ostream &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "VError_ostream_print" "', argument " "2"" of type '" "std::ostream &""'"); } arg2 = reinterpret_cast< std::ostream * >(argp2); ((vips::VError const *)arg1)->ostream_print(*arg2); resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_VError___str__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; vips::VError *arg1 = (vips::VError *) 0 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; char *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:VError___str__",&obj0)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_vips__VError, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "VError___str__" "', argument " "1"" of type '" "vips::VError *""'"); } arg1 = reinterpret_cast< vips::VError * >(argp1); result = (char *)vips_VError___str__(arg1); resultobj = SWIG_FromCharPtr((const char *)result); return resultobj; fail: return NULL; } SWIGINTERN PyObject *VError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_vips__VError, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } SWIGINTERN PyObject *_wrap___lshift__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::ostream *arg1 = 0 ; vips::VError *arg2 = 0 ; void *argp1 = 0 ; int res1 = 0 ; void *argp2 = 0 ; int res2 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; std::ostream *result = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:__lshift__",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_std__ostream, 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "__lshift__" "', argument " "1"" of type '" "std::ostream &""'"); } if (!argp1) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "__lshift__" "', argument " "1"" of type '" "std::ostream &""'"); } arg1 = reinterpret_cast< std::ostream * >(argp1); res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_vips__VError, 0 | 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "__lshift__" "', argument " "2"" of type '" "vips::VError const &""'"); } if (!argp2) { SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "__lshift__" "', argument " "2"" of type '" "vips::VError const &""'"); } arg2 = reinterpret_cast< vips::VError * >(argp2); result = (std::ostream *) &vips::operator <<(*arg1,(vips::VError const &)*arg2); resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_std__ostream, 0 | 0 ); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_verror__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; std::string arg1 ; PyObject * obj0 = 0 ; if (!PyArg_ParseTuple(args,(char *)"O:verror",&obj0)) SWIG_fail; { std::string *ptr = (std::string *)0; int res = SWIG_AsPtr_std_string(obj0, &ptr); if (!SWIG_IsOK(res) || !ptr) { SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "verror" "', argument " "1"" of type '" "std::string""'"); } arg1 = *ptr; if (SWIG_IsNewObj(res)) delete ptr; } try { vips::verror(arg1); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_verror__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; if (!PyArg_ParseTuple(args,(char *)":verror")) SWIG_fail; try { vips::verror(); } catch(vips::VError &_e) { SWIG_Python_Raise(SWIG_NewPointerObj((new vips::VError(static_cast< const vips::VError& >(_e))),SWIGTYPE_p_vips__VError,SWIG_POINTER_OWN), "vips::VError", SWIGTYPE_p_vips__VError); SWIG_fail; } resultobj = SWIG_Py_Void(); return resultobj; fail: return NULL; } SWIGINTERN PyObject *_wrap_verror(PyObject *self, PyObject *args) { int argc; PyObject *argv[2]; int ii; if (!PyTuple_Check(args)) SWIG_fail; argc = args ? (int)PyObject_Length(args) : 0; for (ii = 0; (ii < 1) && (ii < argc); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } if (argc == 0) { return _wrap_verror__SWIG_1(self, args); } if (argc == 1) { int _v; int res = SWIG_AsPtr_std_string(argv[0], (std::string**)(0)); _v = SWIG_CheckState(res); if (_v) { return _wrap_verror__SWIG_0(self, args); } } fail: SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'verror'.\n" " Possible C/C++ prototypes are:\n" " vips::verror(std::string)\n" " vips::verror()\n"); return 0; } static PyMethodDef SwigMethods[] = { { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL}, { (char *)"new_VError", _wrap_new_VError, METH_VARARGS, NULL}, { (char *)"delete_VError", _wrap_delete_VError, METH_VARARGS, NULL}, { (char *)"VError_perror", _wrap_VError_perror, METH_VARARGS, NULL}, { (char *)"VError_app", _wrap_VError_app, METH_VARARGS, NULL}, { (char *)"VError_what", _wrap_VError_what, METH_VARARGS, NULL}, { (char *)"VError_ostream_print", _wrap_VError_ostream_print, METH_VARARGS, NULL}, { (char *)"VError___str__", _wrap_VError___str__, METH_VARARGS, NULL}, { (char *)"VError_swigregister", VError_swigregister, METH_VARARGS, NULL}, { (char *)"__lshift__", _wrap___lshift__, METH_VARARGS, NULL}, { (char *)"verror", _wrap_verror, METH_VARARGS, NULL}, { NULL, NULL, 0, NULL } }; /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ static void *_p_vips__VErrorTo_p_std__exception(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((std::exception *) ((vips::VError *) x)); } static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__exception = {"_p_std__exception", "std::exception *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_std__ostream = {"_p_std__ostream", "std::ostream *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_vips__VError = {"_p_vips__VError", "vips::VError *", 0, 0, (void*)0, 0}; static swig_type_info *swig_type_initial[] = { &_swigt__p_char, &_swigt__p_std__exception, &_swigt__p_std__ostream, &_swigt__p_vips__VError, }; static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__exception[] = { {&_swigt__p_std__exception, 0, 0, 0}, {&_swigt__p_vips__VError, _p_vips__VErrorTo_p_std__exception, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_std__ostream[] = { {&_swigt__p_std__ostream, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_vips__VError[] = { {&_swigt__p_vips__VError, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info *swig_cast_initial[] = { _swigc__p_char, _swigc__p_std__exception, _swigc__p_std__ostream, _swigc__p_vips__VError, }; /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ static swig_const_info swig_const_table[] = { {0, 0, 0, 0.0, 0, 0}}; #ifdef __cplusplus } #endif /* ----------------------------------------------------------------------------- * Type initialization: * This problem is tough by the requirement that no dynamic * memory is used. Also, since swig_type_info structures store pointers to * swig_cast_info structures and swig_cast_info structures store pointers back * to swig_type_info structures, we need some lookup code at initialization. * The idea is that swig generates all the structures that are needed. * The runtime then collects these partially filled structures. * The SWIG_InitializeModule function takes these initial arrays out of * swig_module, and does all the lookup, filling in the swig_module.types * array with the correct data and linking the correct swig_cast_info * structures together. * * The generated swig_type_info structures are assigned staticly to an initial * array. We just loop through that array, and handle each type individually. * First we lookup if this type has been already loaded, and if so, use the * loaded structure instead of the generated one. Then we have to fill in the * cast linked list. The cast data is initially stored in something like a * two-dimensional array. Each row corresponds to a type (there are the same * number of rows as there are in the swig_type_initial array). Each entry in * a column is one of the swig_cast_info structures for that type. * The cast_initial array is actually an array of arrays, because each row has * a variable number of columns. So to actually build the cast linked list, * we find the array of casts associated with the type, and loop through it * adding the casts to the list. The one last trick we need to do is making * sure the type pointer in the swig_cast_info struct is correct. * * First off, we lookup the cast->type name to see if it is already loaded. * There are three cases to handle: * 1) If the cast->type has already been loaded AND the type we are adding * casting info to has not been loaded (it is in this module), THEN we * replace the cast->type pointer with the type pointer that has already * been loaded. * 2) If BOTH types (the one we are adding casting info to, and the * cast->type) are loaded, THEN the cast info has already been loaded by * the previous module so we just ignore it. * 3) Finally, if cast->type has not already been loaded, then we add that * swig_cast_info to the linked list (because the cast->type) pointer will * be correct. * ----------------------------------------------------------------------------- */ #ifdef __cplusplus extern "C" { #if 0 } /* c-mode */ #endif #endif #if 0 #define SWIGRUNTIME_DEBUG #endif SWIGRUNTIME void SWIG_InitializeModule(void *clientdata) { size_t i; swig_module_info *module_head, *iter; int found, init; /* check to see if the circular list has been setup, if not, set it up */ if (swig_module.next==0) { /* Initialize the swig_module */ swig_module.type_initial = swig_type_initial; swig_module.cast_initial = swig_cast_initial; swig_module.next = &swig_module; init = 1; } else { init = 0; } /* Try and load any already created modules */ module_head = SWIG_GetModule(clientdata); if (!module_head) { /* This is the first module loaded for this interpreter */ /* so set the swig module into the interpreter */ SWIG_SetModule(clientdata, &swig_module); module_head = &swig_module; } else { /* the interpreter has loaded a SWIG module, but has it loaded this one? */ found=0; iter=module_head; do { if (iter==&swig_module) { found=1; break; } iter=iter->next; } while (iter!= module_head); /* if the is found in the list, then all is done and we may leave */ if (found) return; /* otherwise we must add out module into the list */ swig_module.next = module_head->next; module_head->next = &swig_module; } /* When multiple interpreters are used, a module could have already been initialized in a different interpreter, but not yet have a pointer in this interpreter. In this case, we do not want to continue adding types... everything should be set up already */ if (init == 0) return; /* Now work on filling in swig_module.types */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: size %d\n", swig_module.size); #endif for (i = 0; i < swig_module.size; ++i) { swig_type_info *type = 0; swig_type_info *ret; swig_cast_info *cast; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); #endif /* if there is another module already loaded */ if (swig_module.next != &swig_module) { type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); } if (type) { /* Overwrite clientdata field */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: found type %s\n", type->name); #endif if (swig_module.type_initial[i]->clientdata) { type->clientdata = swig_module.type_initial[i]->clientdata; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); #endif } } else { type = swig_module.type_initial[i]; } /* Insert casting types */ cast = swig_module.cast_initial[i]; while (cast->type) { /* Don't need to add information already in the list */ ret = 0; #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); #endif if (swig_module.next != &swig_module) { ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); #ifdef SWIGRUNTIME_DEBUG if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); #endif } if (ret) { if (type == swig_module.type_initial[i]) { #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: skip old type %s\n", ret->name); #endif cast->type = ret; ret = 0; } else { /* Check for casting already in the list */ swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); #ifdef SWIGRUNTIME_DEBUG if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); #endif if (!ocast) ret = 0; } } if (!ret) { #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); #endif if (type->cast) { type->cast->prev = cast; cast->next = type->cast; } type->cast = cast; } cast++; } /* Set entry in modules->types array equal to the type */ swig_module.types[i] = type; } swig_module.types[i] = 0; #ifdef SWIGRUNTIME_DEBUG printf("**** SWIG_InitializeModule: Cast List ******\n"); for (i = 0; i < swig_module.size; ++i) { int j = 0; swig_cast_info *cast = swig_module.cast_initial[i]; printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); while (cast->type) { printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); cast++; ++j; } printf("---- Total casts: %d\n",j); } printf("**** SWIG_InitializeModule: Cast List ******\n"); #endif } /* This function will propagate the clientdata field of type to * any new swig_type_info structures that have been added into the list * of equivalent types. It is like calling * SWIG_TypeClientData(type, clientdata) a second time. */ SWIGRUNTIME void SWIG_PropagateClientData(void) { size_t i; swig_cast_info *equiv; static int init_run = 0; if (init_run) return; init_run = 1; for (i = 0; i < swig_module.size; i++) { if (swig_module.types[i]->clientdata) { equiv = swig_module.types[i]->cast; while (equiv) { if (!equiv->converter) { if (equiv->type && !equiv->type->clientdata) SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); } equiv = equiv->next; } } } } #ifdef __cplusplus #if 0 { /* c-mode */ #endif } #endif #ifdef __cplusplus extern "C" { #endif /* Python-specific SWIG API */ #define SWIG_newvarlink() SWIG_Python_newvarlink() #define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) #define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) /* ----------------------------------------------------------------------------- * global variable support code. * ----------------------------------------------------------------------------- */ typedef struct swig_globalvar { char *name; /* Name of global variable */ PyObject *(*get_attr)(void); /* Return the current value */ int (*set_attr)(PyObject *); /* Set the value */ struct swig_globalvar *next; } swig_globalvar; typedef struct swig_varlinkobject { PyObject_HEAD swig_globalvar *vars; } swig_varlinkobject; SWIGINTERN PyObject * swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { #if PY_VERSION_HEX >= 0x03000000 return PyUnicode_InternFromString(""); #else return PyString_FromString(""); #endif } SWIGINTERN PyObject * swig_varlink_str(swig_varlinkobject *v) { #if PY_VERSION_HEX >= 0x03000000 PyObject *str = PyUnicode_InternFromString("("); PyObject *tail; PyObject *joined; swig_globalvar *var; for (var = v->vars; var; var=var->next) { tail = PyUnicode_FromString(var->name); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; if (var->next) { tail = PyUnicode_InternFromString(", "); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; } } tail = PyUnicode_InternFromString(")"); joined = PyUnicode_Concat(str, tail); Py_DecRef(str); Py_DecRef(tail); str = joined; #else PyObject *str = PyString_FromString("("); swig_globalvar *var; for (var = v->vars; var; var=var->next) { PyString_ConcatAndDel(&str,PyString_FromString(var->name)); if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); } PyString_ConcatAndDel(&str,PyString_FromString(")")); #endif return str; } SWIGINTERN int swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { char *tmp; PyObject *str = swig_varlink_str(v); fprintf(fp,"Swig global variables "); fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str)); SWIG_Python_str_DelForPy3(tmp); Py_DECREF(str); return 0; } SWIGINTERN void swig_varlink_dealloc(swig_varlinkobject *v) { swig_globalvar *var = v->vars; while (var) { swig_globalvar *n = var->next; free(var->name); free(var); var = n; } } SWIGINTERN PyObject * swig_varlink_getattr(swig_varlinkobject *v, char *n) { PyObject *res = NULL; swig_globalvar *var = v->vars; while (var) { if (strcmp(var->name,n) == 0) { res = (*var->get_attr)(); break; } var = var->next; } if (res == NULL && !PyErr_Occurred()) { PyErr_SetString(PyExc_NameError,"Unknown C global variable"); } return res; } SWIGINTERN int swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { int res = 1; swig_globalvar *var = v->vars; while (var) { if (strcmp(var->name,n) == 0) { res = (*var->set_attr)(p); break; } var = var->next; } if (res == 1 && !PyErr_Occurred()) { PyErr_SetString(PyExc_NameError,"Unknown C global variable"); } return res; } SWIGINTERN PyTypeObject* swig_varlink_type(void) { static char varlink__doc__[] = "Swig var link object"; static PyTypeObject varlink_type; static int type_init = 0; if (!type_init) { const PyTypeObject tmp = { /* PyObject header changed in Python 3 */ #if PY_VERSION_HEX >= 0x03000000 PyVarObject_HEAD_INIT(NULL, 0) #else PyObject_HEAD_INIT(NULL) 0, /* ob_size */ #endif (char *)"swigvarlink", /* tp_name */ sizeof(swig_varlinkobject), /* tp_basicsize */ 0, /* tp_itemsize */ (destructor) swig_varlink_dealloc, /* tp_dealloc */ (printfunc) swig_varlink_print, /* tp_print */ (getattrfunc) swig_varlink_getattr, /* tp_getattr */ (setattrfunc) swig_varlink_setattr, /* tp_setattr */ 0, /* tp_compare */ (reprfunc) swig_varlink_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ (reprfunc) swig_varlink_str, /* tp_str */ 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ 0, /* tp_flags */ varlink__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ #if PY_VERSION_HEX >= 0x02020000 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ #endif #if PY_VERSION_HEX >= 0x02030000 0, /* tp_del */ #endif #if PY_VERSION_HEX >= 0x02060000 0, /* tp_version */ #endif #ifdef COUNT_ALLOCS 0,0,0,0 /* tp_alloc -> tp_next */ #endif }; varlink_type = tmp; type_init = 1; #if PY_VERSION_HEX < 0x02020000 varlink_type.ob_type = &PyType_Type; #else if (PyType_Ready(&varlink_type) < 0) return NULL; #endif } return &varlink_type; } /* Create a variable linking object for use later */ SWIGINTERN PyObject * SWIG_Python_newvarlink(void) { swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); if (result) { result->vars = 0; } return ((PyObject*) result); } SWIGINTERN void SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { swig_varlinkobject *v = (swig_varlinkobject *) p; swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); if (gv) { size_t size = strlen(name)+1; gv->name = (char *)malloc(size); if (gv->name) { strncpy(gv->name,name,size); gv->get_attr = get_attr; gv->set_attr = set_attr; gv->next = v->vars; } } v->vars = gv; } SWIGINTERN PyObject * SWIG_globals(void) { static PyObject *_SWIG_globals = 0; if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink(); return _SWIG_globals; } /* ----------------------------------------------------------------------------- * constants/methods manipulation * ----------------------------------------------------------------------------- */ /* Install Constants */ SWIGINTERN void SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { PyObject *obj = 0; size_t i; for (i = 0; constants[i].type; ++i) { switch(constants[i].type) { case SWIG_PY_POINTER: obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); break; case SWIG_PY_BINARY: obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); break; default: obj = 0; break; } if (obj) { PyDict_SetItemString(d, constants[i].name, obj); Py_DECREF(obj); } } } /* -----------------------------------------------------------------------------*/ /* Fix SwigMethods to carry the callback ptrs when needed */ /* -----------------------------------------------------------------------------*/ SWIGINTERN void SWIG_Python_FixMethods(PyMethodDef *methods, swig_const_info *const_table, swig_type_info **types, swig_type_info **types_initial) { size_t i; for (i = 0; methods[i].ml_name; ++i) { const char *c = methods[i].ml_doc; if (c && (c = strstr(c, "swig_ptr: "))) { int j; swig_const_info *ci = 0; const char *name = c + 10; for (j = 0; const_table[j].type; ++j) { if (strncmp(const_table[j].name, name, strlen(const_table[j].name)) == 0) { ci = &(const_table[j]); break; } } if (ci) { void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; if (ptr) { size_t shift = (ci->ptype) - types; swig_type_info *ty = types_initial[shift]; size_t ldoc = (c - methods[i].ml_doc); size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; char *ndoc = (char*)malloc(ldoc + lptr + 10); if (ndoc) { char *buff = ndoc; strncpy(buff, methods[i].ml_doc, ldoc); buff += ldoc; strncpy(buff, "swig_ptr: ", 10); buff += 10; SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); methods[i].ml_doc = ndoc; } } } } } } #ifdef __cplusplus } #endif /* -----------------------------------------------------------------------------* * Partial Init method * -----------------------------------------------------------------------------*/ #ifdef __cplusplus extern "C" #endif SWIGEXPORT #if PY_VERSION_HEX >= 0x03000000 PyObject* #else void #endif SWIG_init(void) { PyObject *m, *d, *md; #if PY_VERSION_HEX >= 0x03000000 static struct PyModuleDef SWIG_module = { # if PY_VERSION_HEX >= 0x03020000 PyModuleDef_HEAD_INIT, # else { PyObject_HEAD_INIT(NULL) NULL, /* m_init */ 0, /* m_index */ NULL, /* m_copy */ }, # endif (char *) SWIG_name, NULL, -1, SwigMethods, NULL, NULL, NULL, NULL }; #endif #if defined(SWIGPYTHON_BUILTIN) static SwigPyClientData SwigPyObject_clientdata = { 0, 0, 0, 0, 0, 0, 0 }; static PyGetSetDef this_getset_def = { (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL }; static SwigPyGetSet thisown_getset_closure = { (PyCFunction) SwigPyObject_own, (PyCFunction) SwigPyObject_own }; static PyGetSetDef thisown_getset_def = { (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure }; PyObject *metatype_args; PyTypeObject *builtin_pytype; int builtin_base_count; swig_type_info *builtin_basetype; PyObject *tuple; PyGetSetDescrObject *static_getset; PyTypeObject *metatype; SwigPyClientData *cd; PyObject *public_interface, *public_symbol; PyObject *this_descr; PyObject *thisown_descr; int i; (void)builtin_pytype; (void)builtin_base_count; (void)builtin_basetype; (void)tuple; (void)static_getset; /* metatype is used to implement static member variables. */ metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type); assert(metatype_args); metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL); assert(metatype); Py_DECREF(metatype_args); metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro; assert(PyType_Ready(metatype) >= 0); #endif /* Fix SwigMethods to carry the callback ptrs when needed */ SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); #if PY_VERSION_HEX >= 0x03000000 m = PyModule_Create(&SWIG_module); #else m = Py_InitModule((char *) SWIG_name, SwigMethods); #endif md = d = PyModule_GetDict(m); (void)md; SWIG_InitializeModule(0); #ifdef SWIGPYTHON_BUILTIN SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject"); assert(SwigPyObject_stype); cd = (SwigPyClientData*) SwigPyObject_stype->clientdata; if (!cd) { SwigPyObject_stype->clientdata = &SwigPyObject_clientdata; SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce(); } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) { PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules."); # if PY_VERSION_HEX >= 0x03000000 return NULL; # else return; # endif } /* All objects have a 'this' attribute */ this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def); (void)this_descr; /* All objects have a 'thisown' attribute */ thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def); (void)thisown_descr; public_interface = PyList_New(0); public_symbol = 0; (void)public_symbol; PyDict_SetItemString(md, "__all__", public_interface); Py_DECREF(public_interface); for (i = 0; SwigMethods[i].ml_name != NULL; ++i) SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name); for (i = 0; swig_const_table[i].name != 0; ++i) SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name); #endif SWIG_InstallConstants(d,swig_const_table); #if PY_VERSION_HEX >= 0x03000000 return m; #else return; #endif } vips-8.2.2/swig/vipsCC/VError.i0000664000175000017500000000041512530402247013157 00000000000000/* SWIG interface file for VError. */ %module VError %{ #include %} %include "std_except.i" %include "std_string.i" %include vips/VError.h %extend vips::VError { const char *__str__ () { return $self->what (); } } vips-8.2.2/swig/vipsCC/Makefile.in0000664000175000017500000007433612651721157013660 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = swig/vipsCC ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(vipscc_PYTHON) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(vipsccdir)" "$(DESTDIR)$(vipsccdir)" LTLIBRARIES = $(vipscc_LTLIBRARIES) am__DEPENDENCIES_1 = vdisplaymodule_la_DEPENDENCIES = ../../libvipsCC/libvipsCC.la \ $(am__DEPENDENCIES_1) nodist_vdisplaymodule_la_OBJECTS = vdisplaymodule.lo vdisplaymodule_la_OBJECTS = $(nodist_vdisplaymodule_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = vdisplaymodule_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(vdisplaymodule_la_LDFLAGS) \ $(LDFLAGS) -o $@ verrormodule_la_DEPENDENCIES = ../../libvipsCC/libvipsCC.la \ $(am__DEPENDENCIES_1) nodist_verrormodule_la_OBJECTS = verrormodule.lo verrormodule_la_OBJECTS = $(nodist_verrormodule_la_OBJECTS) verrormodule_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(verrormodule_la_LDFLAGS) \ $(LDFLAGS) -o $@ vimagemodule_la_DEPENDENCIES = ../../libvipsCC/libvipsCC.la \ ../../libvips/libvips.la $(am__DEPENDENCIES_1) nodist_vimagemodule_la_OBJECTS = vimagemodule.lo vimagemodule_la_OBJECTS = $(nodist_vimagemodule_la_OBJECTS) vimagemodule_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(vimagemodule_la_LDFLAGS) \ $(LDFLAGS) -o $@ vmaskmodule_la_DEPENDENCIES = ../../libvipsCC/libvipsCC.la \ $(am__DEPENDENCIES_1) nodist_vmaskmodule_la_OBJECTS = vmaskmodule.lo vmaskmodule_la_OBJECTS = $(nodist_vmaskmodule_la_OBJECTS) vmaskmodule_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(vmaskmodule_la_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(nodist_vdisplaymodule_la_SOURCES) \ $(nodist_verrormodule_la_SOURCES) \ $(nodist_vimagemodule_la_SOURCES) \ $(nodist_vmaskmodule_la_SOURCES) DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) am__pep3147_tweak = \ sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' py_compile = $(top_srcdir)/py-compile am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ $(top_srcdir)/py-compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ # Let make substitute the value of PYTHON_INCLUDES rather than auto* # this makes it easier to support multiple python installs AM_CPPFLAGS = \ -I${top_srcdir}/libvips/include \ -I${top_srcdir}/libvipsCC/include \ @VIPS_CFLAGS@ \ @VIPS_INCLUDES@ \ $(PYTHON_INCLUDES) # we install to a directory inside the python area, since we are a module vipsccdir = $(pyexecdir)/vipsCC vipscc_PYTHON = VImage.py VDisplay.py VError.py VMask.py __init__.py vipscc_LTLIBRARIES = vimagemodule.la vdisplaymodule.la verrormodule.la vmaskmodule.la # maybe there's a clever way to avoid repeating the link stuff 4 times # vimagemodule uses the C API as well, so it needs libvips too vimagemodule_la_LDFLAGS = -module -avoid-version vimagemodule_la_LIBADD = ../../libvipsCC/libvipsCC.la ../../libvips/libvips.la $(VIPS_LIBS) nodist_vimagemodule_la_SOURCES = vimagemodule.cxx vdisplaymodule_la_LDFLAGS = -module -avoid-version vdisplaymodule_la_LIBADD = ../../libvipsCC/libvipsCC.la $(VIPS_LIBS) nodist_vdisplaymodule_la_SOURCES = vdisplaymodule.cxx verrormodule_la_LDFLAGS = -module -avoid-version verrormodule_la_LIBADD = ../../libvipsCC/libvipsCC.la $(VIPS_LIBS) nodist_verrormodule_la_SOURCES = verrormodule.cxx vmaskmodule_la_LDFLAGS = -module -avoid-version vmaskmodule_la_LIBADD = ../../libvipsCC/libvipsCC.la $(VIPS_LIBS) nodist_vmaskmodule_la_SOURCES = vmaskmodule.cxx CLEANFILES = VImage.h EXTRA_DIST = \ VImage.i VDisplay.i VError.i VMask.i __init__.py \ vimagemodule.cxx \ verrormodule.cxx vdisplaymodule.cxx vmaskmodule.cxx \ VImage.py VDisplay.py VError.py VMask.py all: all-am .SUFFIXES: .SUFFIXES: .cxx .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign swig/vipsCC/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign swig/vipsCC/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-vipsccLTLIBRARIES: $(vipscc_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(vipscc_LTLIBRARIES)'; test -n "$(vipsccdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(vipsccdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(vipsccdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(vipsccdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(vipsccdir)"; \ } uninstall-vipsccLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(vipscc_LTLIBRARIES)'; test -n "$(vipsccdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(vipsccdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(vipsccdir)/$$f"; \ done clean-vipsccLTLIBRARIES: -test -z "$(vipscc_LTLIBRARIES)" || rm -f $(vipscc_LTLIBRARIES) @list='$(vipscc_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } vdisplaymodule.la: $(vdisplaymodule_la_OBJECTS) $(vdisplaymodule_la_DEPENDENCIES) $(EXTRA_vdisplaymodule_la_DEPENDENCIES) $(AM_V_CXXLD)$(vdisplaymodule_la_LINK) -rpath $(vipsccdir) $(vdisplaymodule_la_OBJECTS) $(vdisplaymodule_la_LIBADD) $(LIBS) verrormodule.la: $(verrormodule_la_OBJECTS) $(verrormodule_la_DEPENDENCIES) $(EXTRA_verrormodule_la_DEPENDENCIES) $(AM_V_CXXLD)$(verrormodule_la_LINK) -rpath $(vipsccdir) $(verrormodule_la_OBJECTS) $(verrormodule_la_LIBADD) $(LIBS) vimagemodule.la: $(vimagemodule_la_OBJECTS) $(vimagemodule_la_DEPENDENCIES) $(EXTRA_vimagemodule_la_DEPENDENCIES) $(AM_V_CXXLD)$(vimagemodule_la_LINK) -rpath $(vipsccdir) $(vimagemodule_la_OBJECTS) $(vimagemodule_la_LIBADD) $(LIBS) vmaskmodule.la: $(vmaskmodule_la_OBJECTS) $(vmaskmodule_la_DEPENDENCIES) $(EXTRA_vmaskmodule_la_DEPENDENCIES) $(AM_V_CXXLD)$(vmaskmodule_la_LINK) -rpath $(vipsccdir) $(vmaskmodule_la_OBJECTS) $(vmaskmodule_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdisplaymodule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/verrormodule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vimagemodule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vmaskmodule.Plo@am__quote@ .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cxx.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-vipsccPYTHON: $(vipscc_PYTHON) @$(NORMAL_INSTALL) @list='$(vipscc_PYTHON)'; dlist=; list2=; test -n "$(vipsccdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(vipsccdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(vipsccdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ $(am__strip_dir) \ dlist="$$dlist $$f"; \ list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ for file in $$list2; do echo $$file; done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(vipsccdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(vipsccdir)" || exit $$?; \ done || exit $$?; \ if test -n "$$dlist"; then \ $(am__py_compile) --destdir "$(DESTDIR)" \ --basedir "$(vipsccdir)" $$dlist; \ else :; fi uninstall-vipsccPYTHON: @$(NORMAL_UNINSTALL) @list='$(vipscc_PYTHON)'; test -n "$(vipsccdir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(vipsccdir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ echo "$$py_files_pep3147";\ pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ st=0; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ "$$pyc_files_pep3147" \ "$$pyo_files_pep3147" \ ; do \ $(am__uninstall_files_from_dir) || st=$$?; \ done; \ exit $$st ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(vipsccdir)" "$(DESTDIR)$(vipsccdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-vipsccLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-vipsccLTLIBRARIES install-vipsccPYTHON install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-vipsccLTLIBRARIES uninstall-vipsccPYTHON .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-vipsccLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip \ install-vipsccLTLIBRARIES install-vipsccPYTHON installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am \ uninstall-vipsccLTLIBRARIES uninstall-vipsccPYTHON .PRECIOUS: Makefile # I tried making a suffix rule for this (and defining SUFFIXES) but I couldn't # get it to work, how annoying # FIXME at some point # # need an expanded VImage.h ... SWIG's preprocessor b0rks on includes inside # class definitions vimagemodule.cxx: VImage.i cpp -DSWIG -E $(top_srcdir)/libvipsCC/include/vips/VImage.h > VImage.h swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $< vdisplaymodule.cxx: VDisplay.i swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $< verrormodule.cxx: VError.i swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $< vmaskmodule.cxx: VMask.i swig -python -c++ -interface $(@:.cxx=) -I$(top_srcdir)/libvipsCC/include -o $@ $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/swig/vipsCC/VError.py0000664000175000017500000000635212651721413013370 00000000000000# This file was automatically generated by SWIG (http://www.swig.org). # Version 2.0.12 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. from sys import version_info if version_info >= (2,6,0): def swig_import_helper(): from os.path import dirname import imp fp = None try: fp, pathname, description = imp.find_module('verrormodule', [dirname(__file__)]) except ImportError: import verrormodule return verrormodule if fp is not None: try: _mod = imp.load_module('verrormodule', fp, pathname, description) finally: fp.close() return _mod verrormodule = swig_import_helper() del swig_import_helper else: import verrormodule del version_info try: _swig_property = property except NameError: pass # Python < 2.2 doesn't have 'property'. def _swig_setattr_nondynamic(self,class_type,name,value,static=1): if (name == "thisown"): return self.this.own(value) if (name == "this"): if type(value).__name__ == 'SwigPyObject': self.__dict__[name] = value return method = class_type.__swig_setmethods__.get(name,None) if method: return method(self,value) if (not static): self.__dict__[name] = value else: raise AttributeError("You cannot add attributes to %s" % self) def _swig_setattr(self,class_type,name,value): return _swig_setattr_nondynamic(self,class_type,name,value,0) def _swig_getattr(self,class_type,name): if (name == "thisown"): return self.this.own() method = class_type.__swig_getmethods__.get(name,None) if method: return method(self) raise AttributeError(name) def _swig_repr(self): try: strthis = "proxy of " + self.this.__repr__() except: strthis = "" return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) try: _object = object _newclass = 1 except AttributeError: class _object : pass _newclass = 0 class VError(Exception): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, VError, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, VError, name) __repr__ = _swig_repr def __init__(self, *args): this = verrormodule.new_VError(*args) try: self.this.append(this) except: self.this = this __swig_destroy__ = verrormodule.delete_VError __del__ = lambda self : None; def perror(self, *args): return verrormodule.VError_perror(self, *args) def app(self, *args): return verrormodule.VError_app(self, *args) def what(self): return verrormodule.VError_what(self) def ostream_print(self, *args): return verrormodule.VError_ostream_print(self, *args) def __str__(self): return verrormodule.VError___str__(self) VError_swigregister = verrormodule.VError_swigregister VError_swigregister(VError) def __lshift__(*args): return verrormodule.__lshift__(*args) __lshift__ = verrormodule.__lshift__ def verror(str=""): return verrormodule.verror(str) verror = verrormodule.verror # This file is compatible with both classic and new-style classes. vips-8.2.2/swig/vipsCC/VMask.py0000664000175000017500000001713012651721415013170 00000000000000# This file was automatically generated by SWIG (http://www.swig.org). # Version 2.0.12 # # Do not make changes to this file unless you know what you are doing--modify # the SWIG interface file instead. from sys import version_info if version_info >= (2,6,0): def swig_import_helper(): from os.path import dirname import imp fp = None try: fp, pathname, description = imp.find_module('vmaskmodule', [dirname(__file__)]) except ImportError: import vmaskmodule return vmaskmodule if fp is not None: try: _mod = imp.load_module('vmaskmodule', fp, pathname, description) finally: fp.close() return _mod vmaskmodule = swig_import_helper() del swig_import_helper else: import vmaskmodule del version_info try: _swig_property = property except NameError: pass # Python < 2.2 doesn't have 'property'. def _swig_setattr_nondynamic(self,class_type,name,value,static=1): if (name == "thisown"): return self.this.own(value) if (name == "this"): if type(value).__name__ == 'SwigPyObject': self.__dict__[name] = value return method = class_type.__swig_setmethods__.get(name,None) if method: return method(self,value) if (not static): self.__dict__[name] = value else: raise AttributeError("You cannot add attributes to %s" % self) def _swig_setattr(self,class_type,name,value): return _swig_setattr_nondynamic(self,class_type,name,value,0) def _swig_getattr(self,class_type,name): if (name == "thisown"): return self.this.own() method = class_type.__swig_getmethods__.get(name,None) if method: return method(self) raise AttributeError(name) def _swig_repr(self): try: strthis = "proxy of " + self.this.__repr__() except: strthis = "" return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) try: _object = object _newclass = 1 except AttributeError: class _object : pass _newclass = 0 import VError import VImage import VDisplay class VMask(_object): __swig_setmethods__ = {} __setattr__ = lambda self, name, value: _swig_setattr(self, VMask, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, VMask, name) __repr__ = _swig_repr def __init__(self, *args): this = vmaskmodule.new_VMask(*args) try: self.this.append(this) except: self.this = this def __assign__(self, *args): return vmaskmodule.VMask___assign__(self, *args) __swig_destroy__ = vmaskmodule.delete_VMask __del__ = lambda self : None; def xsize(self): return vmaskmodule.VMask_xsize(self) def ysize(self): return vmaskmodule.VMask_ysize(self) def size(self): return vmaskmodule.VMask_size(self) def filename(self): return vmaskmodule.VMask_filename(self) def type(self): return vmaskmodule.VMask_type(self) def mask(self): return vmaskmodule.VMask_mask(self) def ostream_print(self, *args): return vmaskmodule.VMask_ostream_print(self, *args) VMask_swigregister = vmaskmodule.VMask_swigregister VMask_swigregister(VMask) def __lshift__(*args): return vmaskmodule.__lshift__(*args) __lshift__ = vmaskmodule.__lshift__ class VIMask(VMask): __swig_setmethods__ = {} for _s in [VMask]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{})) __setattr__ = lambda self, name, value: _swig_setattr(self, VIMask, name, value) __swig_getmethods__ = {} for _s in [VMask]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{})) __getattr__ = lambda self, name: _swig_getattr(self, VIMask, name) __repr__ = _swig_repr def __init__(self, *args): this = vmaskmodule.new_VIMask(*args) try: self.this.append(this) except: self.this = this def scale(self): return vmaskmodule.VIMask_scale(self) def offset(self): return vmaskmodule.VIMask_offset(self) def embed(self, *args): return vmaskmodule.VIMask_embed(self, *args) def __index__(self, *args): return vmaskmodule.VIMask___index__(self, *args) def __call__(self, *args): return vmaskmodule.VIMask___call__(self, *args) def get(self, *args): return vmaskmodule.VIMask_get(self, *args) __swig_getmethods__["gauss"] = lambda x: vmaskmodule.VIMask_gauss if _newclass:gauss = staticmethod(vmaskmodule.VIMask_gauss) __swig_getmethods__["gauss_sep"] = lambda x: vmaskmodule.VIMask_gauss_sep if _newclass:gauss_sep = staticmethod(vmaskmodule.VIMask_gauss_sep) __swig_getmethods__["log"] = lambda x: vmaskmodule.VIMask_log if _newclass:log = staticmethod(vmaskmodule.VIMask_log) def rotate45(self): return vmaskmodule.VIMask_rotate45(self) def rotate90(self): return vmaskmodule.VIMask_rotate90(self) def trn(self): return vmaskmodule.VIMask_trn(self) def inv(self): return vmaskmodule.VIMask_inv(self) def cat(self, *args): return vmaskmodule.VIMask_cat(self, *args) def mul(self, *args): return vmaskmodule.VIMask_mul(self, *args) __swig_destroy__ = vmaskmodule.delete_VIMask __del__ = lambda self : None; VIMask_swigregister = vmaskmodule.VIMask_swigregister VIMask_swigregister(VIMask) def VIMask_gauss(*args): return vmaskmodule.VIMask_gauss(*args) VIMask_gauss = vmaskmodule.VIMask_gauss def VIMask_gauss_sep(*args): return vmaskmodule.VIMask_gauss_sep(*args) VIMask_gauss_sep = vmaskmodule.VIMask_gauss_sep def VIMask_log(*args): return vmaskmodule.VIMask_log(*args) VIMask_log = vmaskmodule.VIMask_log class VDMask(VMask): __swig_setmethods__ = {} for _s in [VMask]: __swig_setmethods__.update(getattr(_s,'__swig_setmethods__',{})) __setattr__ = lambda self, name, value: _swig_setattr(self, VDMask, name, value) __swig_getmethods__ = {} for _s in [VMask]: __swig_getmethods__.update(getattr(_s,'__swig_getmethods__',{})) __getattr__ = lambda self, name: _swig_getattr(self, VDMask, name) __repr__ = _swig_repr def __init__(self, *args): this = vmaskmodule.new_VDMask(*args) try: self.this.append(this) except: self.this = this def embed(self, *args): return vmaskmodule.VDMask_embed(self, *args) def scale(self): return vmaskmodule.VDMask_scale(self) def offset(self): return vmaskmodule.VDMask_offset(self) def __index__(self, *args): return vmaskmodule.VDMask___index__(self, *args) def __call__(self, *args): return vmaskmodule.VDMask___call__(self, *args) def get(self, *args): return vmaskmodule.VDMask_get(self, *args) __swig_getmethods__["gauss"] = lambda x: vmaskmodule.VDMask_gauss if _newclass:gauss = staticmethod(vmaskmodule.VDMask_gauss) __swig_getmethods__["log"] = lambda x: vmaskmodule.VDMask_log if _newclass:log = staticmethod(vmaskmodule.VDMask_log) def rotate45(self): return vmaskmodule.VDMask_rotate45(self) def rotate90(self): return vmaskmodule.VDMask_rotate90(self) def scalei(self): return vmaskmodule.VDMask_scalei(self) def trn(self): return vmaskmodule.VDMask_trn(self) def inv(self): return vmaskmodule.VDMask_inv(self) def cat(self, *args): return vmaskmodule.VDMask_cat(self, *args) def mul(self, *args): return vmaskmodule.VDMask_mul(self, *args) __swig_destroy__ = vmaskmodule.delete_VDMask __del__ = lambda self : None; VDMask_swigregister = vmaskmodule.VDMask_swigregister VDMask_swigregister(VDMask) def VDMask_gauss(*args): return vmaskmodule.VDMask_gauss(*args) VDMask_gauss = vmaskmodule.VDMask_gauss def VDMask_log(*args): return vmaskmodule.VDMask_log(*args) VDMask_log = vmaskmodule.VDMask_log # This file is compatible with both classic and new-style classes. vips-8.2.2/swig/Makefile.am0000664000175000017500000000006112530402247012430 00000000000000SUBDIRS = \ vipsCC EXTRA_DIST = \ README.txt vips-8.2.2/swig/Makefile.in0000664000175000017500000005320412651721157012460 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = swig ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFITSIO_CFLAGS = @CFITSIO_CFLAGS@ CFITSIO_LIBS = @CFITSIO_LIBS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DLLWRAP = @DLLWRAP@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ EXIF_CFLAGS = @EXIF_CFLAGS@ EXIF_LIBS = @EXIF_LIBS@ EXTRA_LIBS_USED = @EXTRA_LIBS_USED@ FFTW_CFLAGS = @FFTW_CFLAGS@ FFTW_LIBS = @FFTW_LIBS@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GSF_CFLAGS = @GSF_CFLAGS@ GSF_LIBS = @GSF_LIBS@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ HTML_DIR = @HTML_DIR@ IMAGE_MAGICK_CFLAGS = @IMAGE_MAGICK_CFLAGS@ IMAGE_MAGICK_LIBS = @IMAGE_MAGICK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ JPEG_INCLUDES = @JPEG_INCLUDES@ JPEG_LIBS = @JPEG_LIBS@ LCMS_CFLAGS = @LCMS_CFLAGS@ LCMS_LIBS = @LCMS_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBWEBP_CFLAGS = @LIBWEBP_CFLAGS@ LIBWEBP_LIBS = @LIBWEBP_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAGICK_CFLAGS = @MAGICK_CFLAGS@ MAGICK_LIBS = @MAGICK_LIBS@ MAGICK_WAND_CFLAGS = @MAGICK_WAND_CFLAGS@ MAGICK_WAND_LIBS = @MAGICK_WAND_LIBS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MATIO_CFLAGS = @MATIO_CFLAGS@ MATIO_LIBS = @MATIO_LIBS@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MONOTONIC_CFLAGS = @MONOTONIC_CFLAGS@ MONOTONIC_LIBS = @MONOTONIC_LIBS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OPENEXR_CFLAGS = @OPENEXR_CFLAGS@ OPENEXR_LIBS = @OPENEXR_LIBS@ OPENSLIDE_CFLAGS = @OPENSLIDE_CFLAGS@ OPENSLIDE_LIBS = @OPENSLIDE_LIBS@ ORC_CFLAGS = @ORC_CFLAGS@ ORC_LIBS = @ORC_LIBS@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGES_USED = @PACKAGES_USED@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@ PANGOFT2_LIBS = @PANGOFT2_LIBS@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PNG_CFLAGS = @PNG_CFLAGS@ PNG_INCLUDES = @PNG_INCLUDES@ PNG_LIBS = @PNG_LIBS@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ PYGOBJECT_CFLAGS = @PYGOBJECT_CFLAGS@ PYGOBJECT_LIBS = @PYGOBJECT_LIBS@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_INCLUDES = @PYTHON_INCLUDES@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ REQUIRED_CFLAGS = @REQUIRED_CFLAGS@ REQUIRED_LIBS = @REQUIRED_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ THREADS_CFLAGS = @THREADS_CFLAGS@ THREADS_LIBS = @THREADS_LIBS@ TIFF_CFLAGS = @TIFF_CFLAGS@ TIFF_INCLUDES = @TIFF_INCLUDES@ TIFF_LIBS = @TIFF_LIBS@ TOP_SRCDIR = @TOP_SRCDIR@ TYPE_INIT_CFLAGS = @TYPE_INIT_CFLAGS@ TYPE_INIT_LIBS = @TYPE_INIT_LIBS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VIPS_CFLAGS = @VIPS_CFLAGS@ VIPS_ENABLE_DEPRECATED = @VIPS_ENABLE_DEPRECATED@ VIPS_EXEEXT = @VIPS_EXEEXT@ VIPS_INCLUDES = @VIPS_INCLUDES@ VIPS_LIBDIR = @VIPS_LIBDIR@ VIPS_LIBS = @VIPS_LIBS@ VIPS_MAJOR_VERSION = @VIPS_MAJOR_VERSION@ VIPS_MICRO_VERSION = @VIPS_MICRO_VERSION@ VIPS_MINOR_VERSION = @VIPS_MINOR_VERSION@ VIPS_VERSION = @VIPS_VERSION@ VIPS_VERSION_STRING = @VIPS_VERSION_STRING@ XGETTEXT = @XGETTEXT@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP_INCLUDES = @ZIP_INCLUDES@ ZIP_LIBS = @ZIP_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pyoverridesdir = @pyoverridesdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vips_introspection_sources = @vips_introspection_sources@ SUBDIRS = \ vipsCC EXTRA_DIST = \ README.txt all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign swig/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign swig/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: vips-8.2.2/swig/README.txt0000664000175000017500000000013212530402247012071 00000000000000This is the old vips7 Python binding. Use the vips8 one in preference for new projects.

ÑACÙF}IL¹PéV[G`CdýhÊl…oDr1sÚuouDurßq"l¿gQ_ÁXÇQIžAA8#/&@:´< ©Å^PfýhiÝjjãk±lÉmûn÷oppìq?q!oÿo2m(j¸fñcd^»YÞTNHB±>*9…5Ó2/¨-- ,,È,­,“,w,V,,,g- -w..P/Í1†5Ñ:âAØH~OsV\µc¾jHquŒy5zE{‡{${"yGwIrÅmÎfÏ_·X.PãJuDF?E9æ6D2ý21’2q33§3Á3¨3456ÿ8Ã:Ú<²?A‚EI NSFX·^bÔgbj÷n¡q-sætÙuosöråoik,dß^ÝXQÉJrB>9}0ú)¡"ÊU² î wfi¡k7l„m2m³n¹oâpóqŸrrMPFD?k:4P0Ë-½-:-.(.þ/¦/ì/Û/³/ü0©1ò3 45¾7Ý:3=çAÁFºK­Q>Vô\‡a÷f‚jèn:qëséuutÚt…qînàiÖdÔ^öYÇSkL%CÙ;¹45-9' ¦Î j{kùmAmônoºpèqÉr9rÃrÏsr'pón^lh/c°^YS‚MVFæ@—;B6-2•/",ã*W)'Ý(#(·)ã*Ö+d+Â++?*Î*œ*{*9)û)W)¸*'-N1U7ç>FE¨L³TP\udWl`qöv¢x5yÊyly’wàv,q³l–e]~U=M3EÙ>Œ8È2ç/„,´,m,U-O...¦.e.-ý.9.ê/s0Y12¸4Ã8L;ô@£EJTOÖU¾[°afj*nqpt tvtÜsqmCiXd‹`v[:U2MåF¢?8õ2®+î%OL9kAl¦mén›o=pq¢rKr€ssrýqˆoèlºi²dó_˜YCSŸM–Fß@T:5X0¹-Ò++)¶'Ï&ó&P''ø)‹+ ,,¬,o+ÿ+I*é*Ÿ*G)Í(Ð(—(c*Õ.4::HAÂHïPØY'aRiºoÜu$w>y1y yyxv‡r2m/e¾^ZV8NIFÎ?>92ó/n,,H,(- -­-ì-Å-,h+ê+¬+â,,ƒ,Ä./¬2Ü68:¸>ðDI~O¨Uõ\aàfÑkúo³sPt³uÊt¯sœpãnjHgHc$^RWûQ‡JÃD±>]7h0(q"iêj¤kôm8mün«oêpïqgq{r3r/qÄoÈmÚj5fv`ñ[TEN GÚ@î:©4Û0Ý,þ*í)(Z' &•&`'U(}*8, -@-þ-¨-,Y,,+Ï+;*)X(Ä*¥-42š8?EF7NV^!fmrÙu´xMx·y±x§wŽsœo h'aaYÁRCJæCa=6 2°/W.‰-ã._.¸.».C-9,-+Q*ª**z*Ó*ç+Ê,Ê/F2 6(:>íCùIüP%V›]bÚh¦mq súuãuˆu9sZqfn©l…iUe­`sZñTØOƒI–Bï;—3Û-”'Ëiêk3lˆmhn*olpTp p’qbqUp›nkägÆcE\îVcODHžB;5/°,z)[(''&d&c&ž'É)*ä,õ.C.â.R-œ,ô--5-1,z+)ê)*‘,”1V6=<ýC‹K"RäZèc:jpUsæw1xDyÕy=x‰tûpéjdZ]"UôN¡G+@ž:5¼1â0f//.ü.Ù.:-+¶*z)f(ï(¨(ß(Ð)O)¸+x-ž1C4¹9i>+DJ'PùX^ÅeCj€oñsJv%v©w(vtûs!qÉoƒlûhÕd9^»ZT†N*FÍ?8•2Žh•iÑk9lVmMnŽoWoœoˆpbp-o"l(i¤e_ÙXßQûJÊCÚ=_6|1,D)À'b&Ò&d&°&u&ª'(F)¦+j-n.•.î.G-²-n-ê.f.u-“,*Ê)û+D,Ù0ß5 ;AH9OŸW~_f€mqYudw=ygyPy"v6rçmNgÙaZ*RÒKqDÂ>!9O4Õ20I/¤/7/".£-¥,q+&)ù)R(â(ë(Ç(õ(á)Ú+:.0Ð4æ9 >DJÞR Y^`Qf>l`p¥t†vwpwvØu²tás5q‰ncj¯e÷b ]W\P…ILC%=cg;h_i×kElmÝnnÜnÇoªoEmâjbg€bq\yTàMªFq?B8Ô24-i) '!%z%’%³&G&C&&ô(0)´+ƒ-l.d.ˆ-õ-¹-õ.Ò/c/R./,’+R*+”,£/æ3g8ø>€EƒL¼T†\ScVj9o.sÛvHxÓy#y„wStÍoçkd”]ÛV_NíGýA;Ñ6¿3Â0æ/î/P/o/0.‹-¤,z+_*‰)Ü)‘)G)*(©(ã)y+h-90‚3à8å=íD˜KÇSŠZéa‰hUm}rWtîwLwÜx…xw¹v’u¹sšpÞlýiÑer`_Z SWM…HfOgDhµjgkømCmÙnKnHonUl¥h¸eb_ÙYWQsJ"C;Ñ5ž/+c'%ý$Ü%L%©&/&&!&m'ž)A+&,Ý-«-Î--Õ.}/‚/â/.<,¹+¤*û+º,R.Æ1x6K;.AÛHÏP†X_ fEkÛq&t7w:x yw’uäqÑmÕgÅaQY·R2KD>’9 5’20¦/Ä0 0/Ñ/S.ƒ-Ê,þ,+b*â*Š)Ô)Ž)~*r+F-†/ä48\>ŠE(LÉT+[BbphTnq¤tùvnxx9x?wawu¢s»p´n+juf:`Ö[UñQAeÎfgài´khlŒlöm†m›nFm>kUgc[]fVwN`G@8¸2±- )œ&5%$b%%‹%ú%Ð%Á%ê'(×*á,‰-T-œ-©.S/1050V/È.V,ê+î+F+¬+Ù-{/A36ú=C‡K3R–Yáa^gªm±q—uXvÚxxwÌwsèpóke_]¨VNëH&BŠ<Â8k3ö1Ï0ƒ0ç0ö1 0Ã02/Ý/+. ,Ü,+…*©*)f){)p*¶,/p2æ8†>}EèM?TÐ\nci n6rmt¸wAx"xwýxwdvKtr.o%kÑgtb¥^[Zve÷fƒg³iŒkHlDlŽmAmZmµl4je‰aFZßSµK¨DD=o6'0r+U(ˆ%£$Ì$f%%ˆ%Ê%Š%k%~&¡(j*~,,â-o-Ó.¼/—0n0T/².[- ,A++°+,r-A/ó2Ú8A>8EÅLùTi\ bßinIrÚtþvþv´vt>rQmÄhK`ÍYfR:K®F-@z;Ã6¦3§1©1´1Œ1½1ƒ1+100·/š.(-(,^+w*©)Â)@( ))ª,%.Î3°8Æ?šF}NUÈ\ødi‡nsqttÎvYwRwwKvÔv1t–rýp…n jÌgc´`Àff~g”iuk@l(lXm%m$mk hšc¿^àWõP†H{A:A3 -¶)&õ$œ$($#$ù%q%›%Y%9%F&c(2*B+£,m-.-î/00å0²0.Ü-Æ,î,P,+‘+—+D,Ð.Ù3Ñ9`@ÁG£O V´^ ejkpdsu'tøus–r¥o jcm\#T¿NH§CP>°9@5u2š21²21ü1Ù2!1Þ0î/n.C-/,(+)æ(Û'´'ƒ'Y)+/E3¦9÷@bGìOƒW^ße#j»ncr|t©v9v:vvCuøtÜsq¤oômÈkh£f¡f\f°gÒiÇk°l´lömðmÉmLjg´bc\ÌUUM¬Eª=õ770<+j'H%›#À# #Ù$¸%5%Y%!%%4&J'ù)É*á+‹,a-O.‰/r0!/ö/‘.°-ê-B,Ì,n+Å+]*„+-L27Q>bDòL#S•ZûbhnBqsrÇrßq¼qKn–jéd}]²V^O¤JE@Ð;’7i3Ð2k1„1Ó1§1®21ß1:/é.²-i,P+0)Ø('+&”&'*(Œ,/¸5P:ûBIEQ Y `fEj‘oMrtutäuXtÍtsšrPpªornkþj=hófffÂh j1lLmvmÑonÐmþjžgIah[S K!C;4O-);%~$2"½"Ü#A$&$ª$Ð$£$¥$ð& '”))Î*E+(,9-c.!.’.g.>-ã-©-g-7,Æ+õ+G*J+;,ä1r6M<ôCDJ[Q¤X÷`~f†lMo*qKqqEp\p mÝjÈe ^úWûQBK{FhB*=18þ4ë2Ç1G1\131y1Ù1Ì1b09.ÿ-—,{+J)Ù(U&¶%¼$É%[&(Ó+š0j5P<BÑJÁS*ZÝa·fÇl8o¶ræsØtysÑs¨rÊqroðonBlÊk™jêfcfËhDjŒlánTnõp„pGo-k.gW`ìY÷Q…I`AK8ö2&+¸'ý$¤#£""Ý#C$$$¦$y$}$á%ä'(3(´) )Ó*´+‡+ó,+ÿ,,,N,w,,]+Ç+‰+B,Ê.Æ337Ý>4DkKQR>Y`e¿k5np+ppFo]o lþjJeS`/YèS™M®HQCÐ? ;6Í4 1¸10£0ð1#10›/†.H,Ý+Ó*¶)S'À& $Ö#·#å$.&,( ,06L<ºDÁM8U_\Åb‘hlÅpÙrcs?rorFqYoÞnQmløk®j°j9fzfÜhtjÐm^o&p"rqßpqkÄgj`‚YP1GÈ?–6ð0%*&õ$#|"ä#_#¸$0$ƒ$‰$<$#$y%P&,&ò'i'É(v))„)£)¥)œ)µ**r*ß+++N+!+~,.0.4\8õ?0EcLRjX _:dÀj&m o>o0oQnndlÓjfLaä\5VuPJãEáA<ç85N20®/×0%0?0/¢.‚--+À*Î)Î(~&Ï$ê#`"!Ñ!¿# $L'`*“0K6p>›GOŸW†^ d¶iˆnwpqŸp«pŒo¡nlkòkšjxi iRf—fÎhTjŒm+o4p…rÊr|p¼kŒfÞ_ÁX OF>A5}.ä)8&½$T$$ $Å%!%e%¬%¬%\%/%j%þ&i&â'q'ê(S(t(|([(A(<(?(u(¶)%)z**Š+Ð-K/ú2b6;FAˆG³NSùY¥_Édûjl×nðnîo n]ndm8ktgØd0_LZqTüOiJ Dì@ƒ<8c4g1ú0Y0/·/F.ƒ-:+¼*L)c('K%¦#»" © O !!ž#ú&s+¼1°9ñBNJäSYûaf[lnœoÜnÍn¶mÖlWjãj\jhüh#gÏfÚfÐh(j"lµnßphrÕrppgjØeþ^ÈVáMÂE <Ò4-¬(g&s$n$$ð%ò&g&œ&ñ&ü&¼&~&£&è&Õ&ë'w'ö('Æ'†'E'''''4'š'ñ(ä)Þ+Ö-ú13Ë7ó<ÖCIO"UZ¢`†eKiÜlRnZn“nâncnbmnl+iwf½bÄ^ÉYÒTªO.IØDë@#;ë7:3ä1W0S/;.r-o, *ˆ)('>&$Ž"º!¶/µ#, à"ª'‡-F5“=ÐFqNµV]Yc$i~l¥nlòlçlj»imi hégñg,fåf¸fgg…i4kžmÇoWq®qnºhód\ëUL Cn;b2Î,Ô(&Œ$à%V&%'“([(Û)‹)÷*(*.*€*Ÿ*I**‘*ö*±)ó)i(÷(”(T( 'è'Ÿ'Ñ( )R*Æ-n0!3Á7 ;’@·FÊLŒRPX0]cgjílÝn„nÂo3nènÅmßléjøi fbç^¶ZpUdP=KFAT<884‹2e0G.Ó-H+É)ø(i'J&h%O#ø"b üÖP»×˜ë!<%¾+Q3˜;±D&ø&%#Í"^!$ 1¸õ{ U$u)×2:B•JÂR?Y¬_ùg5klÒkkŒjÝi´h›hEh'g^fÄfeTd¿e¶g i_k”mo)môjçd‹_3X,PH?Ò8X0C+ '@&Ú%ô'&(à+L,ð.^01©3>4d5œ5ò5±5*5 5¦4Ç3 1Æ0}/3.8-`,É+»+†+‡-x/Ò3ù8 =B G”MkS+X•]Bb eåi©l3náoïpKoÀoæoào´on4lÿlj~hÕf7cš_ä\W5R}M1G•B/=94þ1ì.ç,Ž)ø(&&²%Ü$ß#ë"¹!Â! ½ 0þŒ f ý$Ú*2Y:CBµJÕRWYÏ`S7&/]*•'['&ý(u*‹-V/H13O5”7ê9°;`;è;Ý;c;é;Û:é97e5»42Ã1Ž0µ/]/,/U1¸4v9=­CAHÀN©TÕZs_¯c¤g‹jRm&oq)qÜq±pÈp©pªppotn…mÉl¾k½ióheaä]sXîSOMkGTA€ëABBoBo<„:µ9.7³6¥5'55M7Ý:¬?PCêIOTë[`_e)hWk[mWoq.rås\sr6qçqÂq˜qCpÒp#o~n®nläkif²b¹^pX”R‡KíEŽ?•94„/§,((›&$Ï$;#›#["Ü""U"2!Æ!}!!À"%‘*º2ú:ÃC)KPSZ¸acimnßmkmAlOjêi|hœhAgšg‚g`|`JaËcÀf]ijNk½ide2^1X‹RK CŽ<&5˜.u*‚(C)J)h+O-Ú1:3Ç69Ç=]AD FâH3II0JIòIFGcExCJAX?±> <Æ;:Á:è=e@!D·IDNÈTIYù_õdÉhékWm»oZqirÒtt8t3s«sgs rrqÓqq*p£pYo–nµlÅkg~cS]$VèOÒHâB;54/…+'¤%#¿#C"¯"™"X"F"^"X!î!†!!£!Ï%O*p2·:ƒCKTS8[aÈiom‡oOm×m¦l—kijhRgïgfg”gå]¥]ò_øb‹e—h“iÍkhacî\ÚW9PéIøB¡;e5.?*œ(­)ú*S,m/ 2Ï5Ï9.<ëAEHHÛL%MôOmOÙPÖPÄP?NpLzJ1H7FDãC˜AçAzApC”FJ1NJSRXl]§cgLj¯lŠnp r,s¯tªt¾utÊt‡sósErÀr’rŠrJqìqÀq;p­o?n&k g.a ZøSÒLÇEŽ>%7˜1G,Ä(f& #ô#="M!þ!§!´!î"!ž!' –!-!b$ó*2f:=BáKnSŠ[‹bGiámào¦n3n lãki;gôg¡gFgÇh[ZÖ[¤^$aIdµgúi"j9g@b[kU×O¹HéA½:¬4›-ý*¡(û*…+ -J04$7°;¼?ÿD•I^M{QQSŸU¥VdW‹WrWU9S:P×NÉMK\JHzHGìIÊKüOÉSgWô\¿a®f¿jlmHn•oèqst½uÉuÖuôu~títIsÔs¦s‘s‡sHs srørÞrq£o"kÃeã`XôQìJeB¤;v4p/0*1'^$Û#Ë"a!Â!@!]!¥!Õ!}! z!!^%*62‘:nC*KãT2\_c#j¬n†p9nÀn¤mwk}ikhgÆg¢hviLVºXd[œ_c}g(h\i|faaŽZ[TÒNßH4A3:E4]-ó*Ì)Q++½.81,5…9ž>IBøGÝMQyU«XSZÂ[Ä]\ê\’ZåYV¹TªRöQGP4NûNßNæP“RŒUÔXÚ\Àae|iØlæo\pkqZr@v9²3ÿ-Õ*ô)¯+ ,¡/j27/;Â@÷F KHPÏU Z%]_æa'b‚bfb&`›^å\®Z™XØWV8UuUÔV.WÃY‹\N^Öb+fiçmVo—qrŸs~t=u—vÆw¯w¸w”vÅuÓu tÆt¿t_sýs¬s¯sÞt>t¬t¶us´qµmJhÁb“\°U™NF>87—1H-)&£#¯" º ¹ Ò!/! ù …!0!¨%w*´3:òCËL­U6]­d‹kðo”qKoåoånykÏigmgug˜hÜjLÏPœUš[f`e=fÄhBe`X¦S MRFò@X9¯4."+t*C,b-Æ0ü4\90>C›HñNPSýXÞ]h`ccRd²fe÷eèd¯cHaS_m]×\D[¶[t\M]^“`;bd—g9j`mRo·q:rÏsÊt¡uHvMwwÀwÎwßwVv…uŸu!tÖtPsês›s s²ttst£u sùrwnÉjåen`iY÷RÜJìC<5b0k+Û(³$ð"ž × « – ÿ!! Š!!‘%L*U2:RC3L Tœ])d!k…o2q"oÞoánjïg¼eÝeðfgTh£FúKÌQ­Xy^nc×eÉg´d´_ÑXgRØM/Fî@w9å4i.˜,*à-.à2}6 :ý@EÛKhPéV°[”`cf"g¥hõiiAh}gjeÇd:caÖa®aßcde…g#höjlFn_pAqÆr·s¿t^tÅu.v vâwvwŸwòw¥vãuäuJt÷tœtVsúsÅs”sÂtEt¯u,tMs oÌlOgwcA]‹VÿO9G›@f9M3º.¹*þ&u#m! ° z ù!! } Ú!6$¿)i1<8äAÇJ’S,[Õbõjin7pyolomuiËf&dd>d?ežg @{F+LÝT•[uaÃdtgd™`MY.SÂNGÕAe:É5F/-+¿.034L8#=?B HŠN6SžY>]Øbd×gÄi=j]jqjñj£iähžgxf³ff8f£gÀh»jkŽmn/¤7"@ H¶QGZaBh¹lo5nMnBk©gac#`·`©`Uažc9ù@‚GÿPŸXe_•cfcd{`ÚZTÔOHØBb;¯60d.,³/*1Ÿ61:]?ÉEžKÏQ›VÔ\C`‘d…giák@lll®l¿lIkQjqi÷i­jj«k§l~mƒn¯oÁp¾q±GBOÄX_égPk2nmCmiìdù`]2\î\H]ˆ_3ë;$CJL–U] ane—dsaÈ[“V{PoJDCÀ<ê7:1x/#-¹0S3%8H<çB¿IO˜U‰Z_¤cyfüi'kœl½mHmm¢mÐm…lÃlkšk€kþl~m5mËnwoCppÚq/q*pÌpŒppäq5pòpàqArKspt™u¼vuËu%uutÖt]sÚsksrüsssr}qâpmnÙlj³g]cv]PVÖO3G~@ƒ:5O.¬)l%O#À"J"!¡!_ j m •#–'!.5y>‡FýOXX#_of¡jIm7l5kjgKa‹[æXFWgVW Xq.6 >ØHÅQøZ»_Ód¹dKb‡\ÕWÙQ•KxDÿ>8Q2ƒ0,.œ1W4•:\?oE¨LƒSBY\^bÿfZiakm-nnmn*nŽnÂn¤nmkmmm¸n@nÜo_o×p\pÏqZq‚qrpôpUoîoõp?p1pEplq rsXt”u"ut¨tÂtàtÊtqtsžsr¯r‚r†rˆrar;q”pØonn~kçhæc#\©TL©EP>é8ú1™+—&Ï$»"¬"%!‘!k € ‘ È#Ç'5.5Ÿ>ÊG+O[X _XfQi·l²kdi×d ^W§SCQ¼O¥P9Qg)k1â;-ExO$XŠ^jddKc‡^jYRêLÈFQ?Y9x3ž1>/2R5ùšD›KuRéZ`µeyiùlRnno0p:p¡p÷póqpúpæpŽoøo…ojo¥oËoõpp)pp·p“posnån[n9nJn¶oovoÌp‚q‘rÀsÎtItvt8t;tsâs^rÆqùqptppoþpApÖq`q¥qXqšp-nrijc1[SÓL¥E©>|6A/P)Y&O#•"Ù!ñ!Ï þ!r"%y)<088A$IJQY¦`ˆgi³lbiÒeå]þUÞN3GÝD2?õ??!^*Ž4¶?ˆJ Tµ\.cdÆfb]`V O¦HõA³;¬5Ó3…1{4j8¶@)FM«U0\OcLh9lžnp{pòqq¾r&rVrqr=rq“qpžpSp/poÕo‡oqoÇoòo±nÞmÛml¥lçmAmÛn+nªoHp^qÂst!t}t¶tptQsàs]rˆqŸpªoÁon‹nYnnQnþo´poÎp>o+mÃi9c”\U}N—G@7à0â*–'8$s#¸"…"3!q"5#&Í*ç2 9ÚBÄJÒRqZÜarg¥iÆkôh{cGZ1Q‡I_B=7Ö6,5J¿'1–7û5x35Ò9êAœH¦P[Wå^ÐfkoLpñr¡rßsrïs@s‡sÀsrrÆqëquqp˜oùo]n³mßmWm!mAm|m>l^kEjgj\jÄk¯l.lØmŽnØpŠrPsÛtŸu6tütÆt sErGqmpioGnlxk’k+k¶lcm m>mm›ml.h»d‹^AXpQŒJgBÇ:ð4&-ˆ)’&Œ%Œ#¥# "¥$@%™)Ç.±6O>F¦N´V^%cÌii®j&d‹]RH—?˜6X/K(b%‹#O” +k6A)LïV_kc·h`fßcM[^T‚ME}?:8õ6&3•6$9òA“HÛPÞXm_t«u*u€u>u8tÊtEsCrHpÞo8m–lk@jækNk–llel¢ml»lˆiÖf-_îYâR¬K‘Dö5^*Î"\‚ýíâ2$æ/":E‰O­YX_Ke­fd€]©WOJH1B;x7È4™6h94@FåNóVŠ]„dµiönÈpÊr+qürvr’rœrQrBq”p‚n×mk¶jÊjliÓi‚ii[j!kLl7l·lêlúmimÜn-n/mÄmÛn’plÅmmemm!j¼g`ªZ’S?KùD<F«N˜W6^\eYh„kÅidù[*P¶D¤:!0O%_Šr  +-Û!3+5Â@ÞKTþ[ºb¬cÿcÕ^;XYPÃJ!D0=–9€5ß79-?iE„M-T¥[ÎbòhZmŸp q‡q,q‡q‚qq'p¾o¦nhl“j|h·gbfîf{fœftg hZj k¯lÖm¨n2ooÊpCpoxo@oÎqOrèt?uuBu u¤uÀuEtsOr]qBoþn§m1lQk·l l¥mzmÿn%n|nn3kµgÓaZéSjKÉC£;G3Ü,'Ú#Ï"ˆ!!™!›$ (t/¿7”@ŸHÎP—Y-_àf1hHjfªaV]K§?ä5?+e ¨ J uï tmQ&Ë1H;ûF-PˆX_”a×c$^êYâRLZF|?ó;„7g7Ú9t?"D‡KÅSZpaufôlŸoƒqOpéqp­pÎp[omÑli¸gUeFcKb{aýb³c?d²fih‰j…l,mŸn­oõp¿q_qJp¸p‡q!r™t uQvv vHv8v@uÈusôrúqÆp\om«mlÙmjnn½oo)o·o~o“lÐh½aÍ[qS°KžC:œ3*+—&·"¡!‘ H!3!^$â)¿1è9÷BÉKRÙ[Madfýgÿi>d+]!Q}F ;C0y&•ñ l¥% !ø,*6R@sK Sh[b^·a”_[•UO~I¦Ca>©9ú9o:5?ChIëPÂX^ád„j]mžoéoÁo»oo*nœm“kDh´e¸bü`­^\Ï[á\Å]Õ`/b‘ePgäj-lpn'oåp×q£q£qAq'qÁstvu‰v/vGv}v~v¥vhuüu trßqupAo*nènýoœpppp•p˜q=päpvmhºa£Z÷RìJ•Aþ9“2G*¦%Ó"!Z C!"U&˜,C4ºwAÝGºN UM\PbEh1kŸndn¡n¹mØmÄlùkìiSfbF_\bYˆWÜV0V³W¿Zë^LbCeÅhÏkínDp™q¯ryr)qŽq,qrŒs‘ttuuPuÄv5vÙwvàv u0t&s)rsqÌq¢qŸqär r6rmr|sr.qmhyaBZ$QÆI`@ï81M)Ÿ$í!s!7 4!Ì#^(}.Á7C>óFñOVñ^a©eVcúb0ZŽQlE{; 0Ó&›• ky£* °E!Ò*Þ4Ç?“I[RXB]ñ^Ò^ºZV[P’JúE¸?ì=;·>=@rETJ„Q&Wæ^cÍgEjEjÙkDjmjhûgûepb]ÑZ W0TORŽPhPkQ TmXP]Aa—eiˆl©oÍqUrlr qnpÜpûq¿rlss•ttÌu­vÃwUwwvÞvFušu&tÖtqt!sÐs¬s—s§sìsÇsÅrp0k¡f°_dWóO‚GS?K70(Ä$ !›!Ð!##O%ø+Ý2<:GAÐI‚QëXŒ^„`¬c"`y\åTJ‘?4â+ ˆ»´ »ÆØçÌ ýÔñ%c/!9áDKN5U(\^o`F]’ZcT²OeIÍC?À=>(?2BúF³L\R¢Xô^ßbŠe‰f$fÝf+e˜dbò`y]LY/U+QÒNÕM1K3K7KˆN™RJWš\…ayf~jœn«pÞrœr’rGq²qÂrAr¨ssmsìt™uŠv§wcw¸w{wVw vÜv…uýunt÷tËtÍtßu t}sïq o(j3dÚ]aUÊMxE€=º5u.™'ï$}!Ã">" $ù(À/R5¬=?DæL}T‚Z(__èa3]:WÔMçD 9.ö%kü ì€Wí 0Š W)Ô46>ðIwQ™YY]`¿_Î^XýT*N[H7Cœ?Å?#>ÙA>CPG‚LlRW­[p^?^Ï_¬_)^›][®YFVŒRéNûK„H~GEtE¾EÿH”K¦P¢U[`Âe¿j—mŸp@qqqkqær€rÿses®tt­uƒv|w?w½wÔx wîwÁw2vwuÈuTu=u^uGusØr‹o‚lpg(asYúR„J‹BÃ;Q3h-<'‡$ü"¨#”$Z(U,ö3Á:A'HõP.W2[C_^^&X¢Q´G>=3>)Ô2- #4÷6ï5R I:$‚.…9ŒD¼NVÍ[âa:aþaË]vYS MG¿B¤@5>ƒ?Ÿ@oCNFxJ÷OùSüVçWªX†X WÎViTàR6OvL HoE.B@p>ì?j?ûB³E›JMOTÀZµ`Ne¯iWl—no6o¹p¿q¢r[rËs%s–t2uv/w(wöxQx±x–x[wÖwWvòv»vžv¡vuŽs¦q mÁiÁcã]ÚV…O7Gv?8L0ö+Á&ê%#!$&+À0ü7Ð>;ESM^TYý\i_]\[SÔKk@‘6ç-D#R ˆ†hcûu2a K¢Œ(Þ3¹?IRRÉY_šaãc~`’](WLQÊL3FuB?ƒ? >Ñ@cAªDkH K˜N^ObP O…O“N“M,J}G¸DnA3>H;<9q7Ï8S9'<>îCNG¥M%SY^¹bÿf×ik4l¬nšpqcrr´sKtu'v^whxGx’xÄx|x,w¾wsw2wvvMu;t/q nÖj5em_"<š==>F@&BºE>F­GOFÏFîF>E`C"@=9¶6¶3Â2 0V0¤1C46Ê;/?vEK7Q¬Wì\óad gÃj9mo0pëq×r¼s‘t²uùwZxNxÿyxùx£xux)wÚwQvÆuïuXsîrvo@kœfE`ÿZÈTËN FÊ?ƒ892©-­+ 'ë'¢'¼+d/¹61<BƒIPVÆZÃ^ ]]ŠXQ®G7=‹3¡*É?#>–>c=»=B;³9ž63N0\-¯,(*†*˜*Ü-7/º48$=ÆCßJ£QJW \P`XdngÑk‰nMp©qòs.t&uwv·xx©xõx“x@wËwžw&vju3tr§qµoþnjaf`r[U?O†I0B#;‡5M1>-›,B*G+,³1b6=b _ÆZ—V3Q#LFúAX= 9Ä8'6(4Ô3…2ž1Æ0ç/Â.-y,Ÿ,+8)Û(&$##º#ø%©'T*Œ-±2´8+?FMSŽY^“c:h3l oâr sßt”uŒv v¤v©v|uÌuDt\sŠqþpm¦kžižgêeib”^(YNS›NIHúC—>|94ý1F/è.‘/Ð1?5 9>mC˜IsPU‘ZW\u^¹]ù]¬XÒRjH=â3m*%!Ù¢ .KɸªÕ$ø)Aåò± 7“B¥(2‡=bG¹OäW´\}aÒbæb°^~ZNTùP­KùFG@Ó< 8Ê5Ë3»1g/l-o+Å*#(Æ'?&/%g%$’$ #C" ""?"x#Õ%7(*À/T4M:õAÓIOÔUë[ÚafŸkoXqÇsÃtfucu¶vu§usÏrÊq\oømßkahfBd b_P\*W[QóKýF…AÍ=29l5>20010¾3Ù7;¶@E(JªPvV¸[ ^<^¥_ø^[õULŽAe72-‡$49 µR–èV»-ð/HÏÐpc Ù«!}*Ï5b@ I6QqW]“`£bõ`Ü]¼X¾UMQ{LùGÖBŠ>:W7¯4Ó2/,b*(X&V$Ò#O"À"Š# #d#Þ$$$´%K&±(,*Ã-6135};nA¯H€NüTûZÓ`e®j3n†pûrþs¢t¯tñu+tlsyqÒp_n}l j)g]doaë_”]}Z†W"R(L…FÂA¢=æ:l853£2I3®5ã:C>[BûGK°Q0VZ[J]¶_P^U^[\VùNHDÚ:0~'µÈ àOQ'´„&Ù<5€z7ʆø ãa#/-C8B]KmRY]ŽbZbæa®]\ZVMRçNÅIâDÅ@´<9“8'65²5¤8F;¤@•DëIvMñR—X \'_g_ê`{^‡]VX:QkG)=/3)¼!pŠx ô$}s]'ê¶_1BMÞ Ñ! ß™Šc%n/t9áCœK^R©Wî^IaYbó`À^oZüX´UÞR_MÜI+D®@ì=9”5­1¼.œ+Ð* ('&&‡'E)>+3-‘/¹1ç4 6O8_;>BCFùL|QÂVÒ[½`7dèhËl nÿq q¹r”rrlq…p—o mœk‘iwf¥c…`N]œ[XŒU-Q%LZGfCx@R>½<ù…5+÷"ó"# aA‚‚D:j°ý·¡ŠA&…oWc¿ —Ì¢®&a0’; DdLR¾YÏ^¡c3dcª`Ò^Ô\'Y¸V@R5MoHôDš@T¼@hAïD FVIK–NP|RÂTùWfZ\ì_®aÿde¿g~i;k@lõnko5oþp?p¥p^oûn³mxkChëe´bD^É[¯YV†T Q'NyKÒJ@HþIHúIöJÈLÚOGRÍV—Z]l^û`_D_][…VÇPéH? 5Í-ª&&Òb Mjº€qƒŠÀ晉Ÿ¼]nT'o,Ÿæ± ˜œP X)¾4[>îHO8VN\*c g‰kjÞjg™f côa‚]ãYÙUŠQ˜NfK5IFÊFEÂGHVJ[LNPRVT‹V½XèZü\ý_aLcse‹g hLijklTm›n´ojp!pspáp­pXo,n liÍfècóa^p\0ZWÏU?RÁP4N§MsM™M¼NçOÚQøT Wð[i]¡_-^—]À[¿ZÆX TÉN)FV<ý4™-%Ù` ‚MvJ™âÄêú½•¼¸Bs|A 9(]©C 2 ¾ÏW!k+69@·IqQW1^ndhjxmndlœkHigHd×b^}ZÌW`T+RP OOYP¢RTUêWçYõ\^_ëaØc™eBfÏhŠj k‚lSlálómmJmänÁoŒp$p¤pÎqpÖp‚ozntl²j¿hkf8db `7^N\:YæW¥U\SòR½RÚSTnUéXV[<]´_Æ_ä_q]s[úYvWƒRÜLÔD ;2q+'$áSý ‹O“™ˇ˜ôþØ¡‡·à¾6jŽv?B™S2œB ?Èa"º,´7=AISO´V\\Rcgh;kÕkÙkeimhQföe¢c`ò^#[‘Y÷X†XeXZYwZ¦\‚^R`LbEdeœfìhXiˆj¡kl}m7mïn(n4mámzmUm{nnºoWoÊo÷pBp$oêo$n^m&kÓj^igÖf‡dûclaƒ_i]F[&Y«XKXWÓXÍZ[Ð]Ê^—^­\æZ÷X:VoSSOäI_A`8/Ù)#!¼å ß Pgç8®ÀÞã°œ¯âöÄ-V‰¥†2ÿ÷PJÙO†d @##‹-7"@‹H6OTØ[—a+fi jÚj,i¥hƒgág&f 5‚-C&S ßCòÇ ¿r`š!ËÃï¹™©×ÿúÄ9Fm¬±aÿËÿþLòAÝq B n#_,_5Ô>aEµKP˜UXZÙ_bädKdýdudodÄe|fWføg2g1g)gAgèh·jk¯m.nxoodoLo}oooSn­mÝl¦knjHiBh‡g°gSg gyhi"j"k3lem"m~m]m`mWmlmemZlìlSkfj¿i¡h1fAdGb|`ó_Ù^Ü]Õ\±[Y9VìT×R%O¡K–G6@µ9„1¤*6$—îpf e}y+ž þ!H»‘ÀéùåÂRJY’¬Š8ÿÜÿÉ|‡ äÆ k¢Dõ"u*â3…;†A’FÕJËOMS¨XŽ\M_I`ŽaŽbXc½eÅhj!kÄl…mm\mán™o’p?p£pJoÈnûn~mÙm$kéjxh­fÞeVcûc:bpbIb b¹czdÐf)g•ii÷jgjSjpj¥jýk_kÆkÛk¾kQk:j‹i†g¦e»c{ax_G\ôZaW¼U)RÞPŒNK:GrAª;†4X-<&¢ }W) ›Ù°/Y ù6\Iì’„±ÔèãÎÂbTJb|jÿÎÿ¾@ÃÔ× Wcç«!(‰0L6Î<8?¬BØFJ}O@SÚWYvZå\ª_bBe‚hej k9kyllBlÁlœljÕiŠhfúeÊdƒbØ`ú^ó\ê[YYïYQX½XãXúYÄZ«\$]¸_O`àa¹bbb&b…ccÇd e>eŸe”eÜeVdƒbv`J]VZŽW\SðP’MUJÓHèFøEA!<55€.Þ(…"ØoE # &Ÿ2nZ ±€Ž½Å½·¹È\SBIYna.ÿïÿµÿ¼ÿëE2ÇŠòÔ Ø”yu% +[158N:ñ>9BoG:LP7SlVSXû\8_jb•dÊf”g_hfhÄiOh¯g”elcYa'_H]j[mY!VœT)QÈP(N³N3MÁN N2NþOßQ^STÏVrWYWÄWÛX7YZ.[¯]T^™_†_²`4_›^Ä\EYqUŒQÂMðJ,GDZB3@O=©:Ÿ5¼0 )Ç#ùå(× ©#7ûjÄ¥+ó÷6nl%Їœ²˜‹±ÜAD;@CC80ÿÖÿ¸ÿÈ7ªêC ? zƒF³t  &*~.;0È35é9š>iCfGúKæNØQëT‚WKYp[[\Š]è^Š_Q^²]‡[XËVCT QËOkLÌIõGZDßCNAèAA!AnA™BUCD…F*GäIxJfJÝK*K¾MN‰PƒR›T#UEUcUÐTöSëQMØI™ExAÐ>‰<3:38-5ï2}.—)ª$§âÅ Ú 9x-ÆâôuÐá/z{0Ø“‚•˜ŒaQt²á-,%7E?) ÿáÿÂÿ¸ÿÕÿì*;⪮¿ º=®Œ¥¸"±%ò(¬+C.1ï6L;7?ôDHKMÛO†QQÀR¸S3SîSRƒPLN*K¯IuGDªB?'<Œ: 8q76¢6J6§6ä7«8x9Ø;s=">«?›@@€A,B‡D*F%H*IˆJJ‹JËIÇH†E·B‰>¶;%85\2ó0y-u*&4"\…ÈGïŠ ³ –]‘"ÃÚ‹v¯ipA篗x`DM|³Ó4G@# ÿúÿéÿÞÿÇÿÆÿË6¦á¼ÌæF " ©;¯£» "$w'*$.92¿7‚<*?“B“CâEE0EE¿F6EâECDA‚?\=];-8í6~3ë1/=-·,X+ô+ ,,G--ä/80¼2O3Ä4²5D5²6Y7…8÷:™<1=0=õ=ß=ý= ;Õ9p6×3Ñ1.…,#)W&!"e„<û«- úüö8ˆV׋Jxølx+è¶°¶žwN>@c§«#++'ÿðÿÚÿÇÿÆÿÊÿã! 6~†ÍœM ‰ r ¦¥Ó-2Ç"ü&›*Ï/A36~8W9ì:>:±:{:9Á8Ž6†4£2{0k..+Û)q&õ$Ç" !B ¹~å $ ß!ª"ù$t&'k(`))‘*8+L,¥.//­0±1Š1­1õ1Q0ˆ. ,•)È'$!ÏEê¸g† ÿ  ßl/å!Ûºq[rÉ7g=๵½¹“^/&8b‚ˆ~!,"ÿôÿÖÿÌÿÖÿÝÿêÿùÿù gÑºÒ 7%æ N® àdîÚ#F&¾*,c.j/#/Ù//p.M,Ö*§(ª&„$o"7á‹-9V4(ê¿HæšÏ-¢õê¬Eìé!&"œ$ %& &[&Ê&q&$‹"Ø 2Û„‰` … Y ;ð!3eIxR)¼x`•å,K'è³»ÖÒ¯‚U1/>ZljZÿë  ÿÿÿþÿèÿÑÿÇÿÌÿÜÿðÿìÿÌÿ¤ÿŽÿ’ÿ‡ÿ±ÿópç„êÚë§ ÒÆwã)·5º¦!l"M#(#/#X"‡!j~²—‹Rµc‹ Ó Ô × X ¢ Ç W ÷ P¯ðîÉ„DGˆìI<:(¿1Vµå Q e–a4NWfJk´|^‹ˆaQp´öçÆ»ÔçÓ¢{]C?BRddRÿÙÿéÿ÷ÿñÿõÿÿÿáÿÄÿ¿ÿÒÿíÿøÿàÿÂÿÃÿÌÿÇÿ¶ÿŠÿŽÿÂ;©2oR‘ßt 7 Ÿz>™6_ Ý#‡1ŸJþGš¶ Å Ù àXý8a Èó‡ØÅÓ Í ¦ i Ù Æä1àfYnàNÌ ï — R›Dú`~†‰ð–¨·È±„[MMs¨ÓáÒÆÁÍÞïçÊ …viaSNY]JÿÕÿÑÿâÿý ÿôÿæÿû ÿâÿÅÿ¾ÿÑÿèÿîÿØÿ·ÿŽÿxÿ]ÿ'ÿþìÿÿLÿšÿ¦ÿö_õ« C ) 0 × F – z q œ Ú % , #è¨l'=ˆ+«`!3Ç1›–˜ £EÇ‹õ ; ðpõÏ|I‡ÿÊ€„ÿüÿ‰ÿŠÿË6rua@4Ig•ÄÝàÏÈÉÑÛâÛË²š‹Œ‰qSG<!ÿàÿÐÿÐÿä !ÿìÿ÷ ÿãÿÊÿÈÿÜÿüÿüÿËÿ‘ÿÿŠÿÿÿ{ÿ€ÿ¤ÿë+mÛNëÙ°uL±CÜ[æƒ:åràRÌ?ìÆÄ tC05Wr}|†¯à%aªþV¸êÕ¢M¸^Ó¢q%»QÿîÿÖÿä5™ÑÄK:Ft™·ÑÛáàææßÓÉÄÆÃ¯œ¢žP0ÿÿÿæÿÚÿÓÿÕÿé ÿûÿýÿàÿÑÿìÿïÿÀÿ™ÿ€ÿnÿxÿÿ«ÿ³ÿ¶ÿÂÿÓÿÜÿî,g±î2Ö3m˜…k ÊvBÚžpW32Nz—–ƒf^]cOÿåÿºÿ³ÿ¼ÿÚÿìÿý BRT3ÿÙÿÁÿÎÿæ%(ÿúÿÏÿ»ÿ¿ÿìLˆž’hNHIf¸ÜçâÔÕÝçã˶·Á¾´¹¦x>ÿôÿòÿîÿäÿ×ÿÙÿë#& ÿñÿëÿý*ÿáÿãÿ÷ÿôÿÎÿœÿhÿmÿ®ÿ÷ÿçÿÌÿÍÿô/]ns`I;0P}Ö<›÷ã‡Cý¯wSJ55@`†œžˆwjpiFÿøÿóÿþ&+)ÿñÿð/GB"ÿúÿÿ*j›¦Žƒxqplj]fˆ·ßìçÔÐÖæçÌ­¦®²¬¥…S# ÿ÷ÿçÿàÿãÿãÿð ÿ÷ÿû'" ÿøÿìÿêÿëÿîÿØÿ—ÿuÿšÿä ÿøÿôÿ÷ÿûÿõÿèÿÐÿ¼ÿ¨ÿÿ†ÿ|ÿ˜ÿ¼ tÉúìß²€YEHCGKXozw`K98+ÿÔÿ²ÿ²ÿÆÿäÿðÿéÿàÿËÿ¶ÿœÿƒÿoÿWÿQÿPÿpÿ¥ÿÕÿåÿáÿåÿô+_†ˆ•œ–„ojr“¹ØãáîøüõìÚÁ®¬¬¢ŠqP' ÿüÿéÿíÿ÷ÿëÿâÿì )1ÿñÿÒÿÐÿóÿÔÿŸÿ—ÿÅ6TBÿûÿíÿú4HWPB) B¦:`P9ôàÌ¿³ª¡”ƒp_SPBÿýÿçÿõ>RMJ3ÿõÿÕÿ»ÿ¡ÿ•ÿ†ÿ”ÿ¶ÿàÿô4;<FYf€³ÏÅœws‘ÅëöéÝùýÔ®ž’uN0ÿíÿñÿúÿíÿàÿàÿï#:4ÿèÿÓÿâÿùÿïÿÛÿÒÿßÿö9C5 ,JV@1>v»ü,20úßÈ»´±ªŸ”ˆ}qiX: 7XaK3ÿóÿÛÿÈÿ½ÿ«ÿ£ÿ›ÿ¬ÿÏÿóÿþ08EeŠ¥³Éȱ—Ÿ¸×ïø÷÷ × zsypW3ÿÿ ÿ÷ÿóÿ÷ÿðÿëÿëÿòÿú%.;.ÿëÿÔÿØÿê ÿùÿñ#7AQK5ÿôÿìÿêW˜´­¦§¼Þü ÿçÈ®¢¢«­«©£ž•Œ~jWA@Vga>ÿõÿßÿÝÿÞÿßÿÐÿÇÿÇÿÜÿü $0RÂàÙɯ˜˜­ÉÍÍØê òÉ’bG@B2ÿüÿÿ  ÿüÿöÿîÿðÿþ  %%)+/)ÿæÿÕÿÞÿÿ% (3??9,#>lŒ©µÍê'æÊ¹²³¯©£Ÿœ™•އ{fY`dW8ÿûÿðÿõÿúÿõÿßÿÌÿÆÿÖÿêÿÿ 2Ii–¶Ä»µ²¶Ã×àÑÇÛù 뱄^9! ÿüÿþÿþ  ÿüÿòÿø%!+77-% #ÿèÿØÿå,%&1@RWK;4BTyŸÉñ+5?5#ìØÉÀ¶¬ž•’””ŒpbaaWD. ÿþÿßÿÆÿ»ÿÇÿÒÿèÿú$?^y—””¦¿ÖÞÜ͸µÏêöؤjJ;&ÿóÿåÿë ·j¦ ã ä(ÝTám3x¥€Ð61´o€ÚUJ¢—S2ÅÝ!O¤@T")%}(.(R'z$B!yœT?Ÿh f ¯   À ­ ¬ É Û ë ù þ ü ú ø ( _ ¤ Û ù Å ‚ N c   ` © â#ráGÙlFDYZ'fšEÎ]Q¾añ&É‘\5 ó‚ÙÃ Š¦üE¬ “   ¿²q`ÈlH<kAé«BlKNRý¹èO^è ,ßÛ & ”!["Q# ##G$²&&Ð%è$¥!áL»³Á/ õ ü _ é  É © š ¯ È ë  & ( , = X € ´ Ë Ô œ > ã © Á S u { … ¡ Ë  V ½  Ï›æJðÉ þ¿hk¾|³²ºÞ%~ñ÷ÄãÞ¤¦ÀÐæáB øMKý×  íóËvÞv­œ?ß;•DZƒ³Ä _!|!»!t ó ê!f!ç"´#³$Y$l$B$É$ñ$¸#a"˜õ]{ÁM ( J È p › f G D r £ ß  5 H P ^ v — ³ Ð Ç ² n  Ç ˜ ± ì / E = > A F W _ ª J  ˜b¹P9ΡÇÓK8Ô@» €ò 0)ZpSu²ÿÛ‘w²ô ¯÷Sª·‚h+ uœFšßÞ,r!8!Ã!E 8 S ®   "f×±þ.}ë þ¥©XÑeKÕ¾°ø Z Å p $ò ëÕä T Ê ò  , G g x j I  Ü ¹ ¤ ¿ ï $ ? : 6  þ Ü · · – ¢ ? ´ƒ³¦¯ú9èûa­„zÿÈ\§ÿ ’z ´‘‹-Ë â˜ìë}NÒO-Õ+{§ïëÙ?§!Í#n#k"Ø! í X‹²àLÜI÷³PÃ*ÜR˜=ÜÞ™T ` õ i ’û  E 8 * > b q ˆ ³ ã   : L ^ ^ a I è ´ ™ ‰ œ ¸ Õ ä Ø É ª Š l Q C :  ÔŠvñF¶|ƒwQ‰¹g´ÅÌ€–”:ñcD^]UCw4Ž?åŒ~Í#è^^:+2VŒŽvæMDáB> Z!H!À î ̬ž˜ÀÿHp‘¿H˜Æ-ôª'¢ ð : ö  µ ÜÎ  $  þáÖê  5 O i x  € ‘ Ž r F    ; j ¦ š ` M G I F  - 4 ’ ØM’Às¸FŽJ2 í  > ‚ x6G*×â¢÷V†ñè0QE„ÿ1Ž@(‘ÝN…6ù׃)ÿ¬[,Å×hÇ]ÊK'!ânöE¡8 « P 6 ª ã û  <Ö¥´”{€tDüÆ”X,ý9HUmˆœ³ÚóðäÚþ<§  r § h - þùÔÆŸ  Þ w N*è -_ ³ ‹ ² Ì  à ; )]õåì—gºCð]´Œ=«k±C§êV[y|#ÝÒŽg¦‰ì­Iu"V®D\®ñÒd é ¼ Ê g  ú ± } w EñšX3'÷לbý}ýŸ^ÔºËßñèãñ<iÅØêúB¥Dú†èâÆ‚W<#"5 x ™ Ç Î > ‹ 1 Å I ¼ Q e ™  [ ß | ³íó¬Sã‘H¥@”Ñ× vRNŽ RÿQhn‡ ` . }$,ï£?uKVþ Æ & ¦ - S p Ä Wð™8¼’NPC<& õþÞ•‰Ê©t^`po_F8:Z}«Óñ+mÂ]Ïc•«}\2ùRÔ4º P Ô D r ž ƒ U  ¿ Ÿ ” Í  r º  Y á ” sO÷\¸KÑžv0ÖEÍ™éqRˆÁµMº†; § ã ÷ ¦ ¾ » ã Gl®À X ó Ù  ­ Q ¨u™ÊÌ`Ü@Øêý ô¯l&â¾Â»‚*Þ°“˜—¡±¯”jK?5D]|œª½Éò‡¸U±ïáÓ«xq‡ìXñ˜#ºÝÝíêѾ¹ã  o À  ‚ Ú  T Œ å l é ! R ­:Àk%å›-­, R ã Ð ô È Œ c ‹ w ñ " a   ‹ ( ¾ 2  Ö  x «ËQøÊª¯Œ7›_ b°Ê¬CçƒÙ´¬‹yy…ƒ…”››}Lûóâæø#7U}Æé0Ž ê'$" îèä!jÒŒ-.$E“ä<ŠÈý 1 h ²  g   œ h ] ® : ž å  M t Ä , ÑŠ@º Æ .  = "   A t ; — À &ëÀí 3 x © y ~ÃOè—c1ýÎr÷R§±xG¹ñ‡0Òo*ðïø)d‹’xq\; Û· ™‡…¨³Íõ+[…ªÑþ2s¬¢¤§³¶¡œ’ë_Xx‚³%·Xâ3h¬ð K   ï ú  œ ¿ = Ñ H † x d X ] ª  ¨ û !  ª ‘ ™ ¦ í  # ¼ m ê·šˆrX¢$Èy Ä´°†+ÎO·AøóöùÑ«¯·ªxBó RÿãÿØ M¡òà®n3ÿéÿÕÿ¸ÿ£ÿÿÿÿ ÿ£ÿ¾ÿí3u³í8J`cQGT~±ÔåÌv›‘þ;PWŸôà­@‡Ô\¯  S U +  ‹  c q y ^ = 2 A w ` 4 ÓÄá  ` S rÔOùÒ–e<íªTäz˜Xfr2²1Ëlu¼*rrRѧ|s‚œ¡ÉV£×þ̇> ÷ïíÔº¬©¤ •”žµÌßóòëÄ”U ëè?f‘?祫Ú.i„o…Äqv@ÃDœòI»%’¯tDzü q Ç  í ­ o T [¼›f33l§Æ€aÀ.«HÚ•hS>”Á˜xx—qéCÒÆÕ-žÖÂUå˜j©ý¨\«¢ö=C;õßÚÏ©„s{…‘“Žˆ{aM*ýÂVÒ €íWÿÖÿìÿñ 9YbH)ÿåÿãÿëFÎ7¶WêŠCäc·g'²³ÃDá U i >ï¡uw!õ½¦³ØßÄZëI¨ûF¹: ðò /CEúmç>£ig$Çxµ#@så<l r m ÷ Z ?  Ï ™ ‹ ” » Õ ï  # - 3 G T [ F 0 ù Ò h Ü Kn‘¥·ÇÍ÷'¥Bº}KJ[z—‚>ÿðÿ²ÿÅnµÜê0«RÉ:eªo7‘µýjz©d7I!ûñâÂ}8ÐlÜ4~ÅPý1%ïžv¢ÔÇr ²w˜æK|“§à½iµ1 ó ¢ 6a_u@ê<•Áê 9zÍ^w}q‚†zI$Æu š— ä * s¼W,ný‹N¯,ÿÓÿèUYÿªÿTÿ)ÿ_ÿ»%gvdx¶`GX~¥' ‰fƒpWTzáÆ½°y°g!×hÕBÀ}¥ÇÏ«‚t™óÔb /¥p³Ü +ü º ã2€°dèV‰ÊëåØ}  D | °!!i!¢!!Š!`!S!=! à ¼ Nâ˃ŒœLð'= w s   $ ‘ºµZè—_¿X\[.¾ÿhÿ!ÿ=ÿÆ:}|T)wF6²ÜRÀ+h“Î& FPT^‹#- ½aÌ›Z ¬_52áÎú5L/ÍÇ*.@Kÿ”1:b 5 2†¬â5tŽ|n[!^#S%K&û(¦)Ò*ò+~+ó,,,%,c,Ž,’,`,-+ï+¾+–+s+K+;*ß*z)b(+&-$*!—þ%3‘[ýB|— G< X±ådpq.tÿ©ÿÿÿVÿÖ>aÿüY¸@I•ùU‚qsÂC¯ø#9aekNÚ³–[ ú÷û  ôéã†ìðDPÙÏu À ³ Õ `…©ÿPvcCT ‰"›$ê'o*',Ü/T1Ä3 5u67i77Ë7¦77z7—7œ7p76»6i65í5Ô5Ì5Ñ5’5I4e3q1¿/ÿ-ž+A(u%‰"˜¤Y`ܲzËúƒ Ú [Ì|?rQ'ÿxÿÿhÿú{q0iô†ËØïq¡o13zÎïêä궈‡¢¼´M>^ޝ¢†tœÛYÕm·œê x å íµh} ×^ˆš!m#%'„*m-)03@6F9,;u=±?(@”AAAàAôBAàA¼A³AëBAãAo@ý@Œ@+?ü?ç?å?ß?ž?]>•=¹<1:™8w6d3ì1^.˜+Å)*&Ä$¶" «ÊÔäu×£8 òѱð,3ÿ+þ×ÿ ÿ¹'M&CÁI‹n/OrU ègþ}°ª' ÿçÿãÿÿ/^d<,g¢žÂÕ ±”Û E ÚúÛ’1 "6%'i)*¸,A-¹/û2Ð6Q9<¿@ BÕEzGBHúIæJÄK"K™KÅKâKÛKÒKôLhL¹L¹LFKÄKBJèJÌJÁJÀJ·JrJ;IyH’GElCkAu?H=:Ô8†6-3ð1.ý,P)¹':$â"\ÃŽ'A. t 莒‡mlæÿÌÿ ÿ\ÿÕ^k;FàS1À“Žœ¡dMƒþ€½¬ÿ”ÿ{ÿ}ÿ~ÿ—ÿ¹ÿâÿ÷ÿÎÿÄÿéT`Þª`± ÿ ‡Ò:É: Ÿ$'T*g-™032~485ù7Ã9t;ë?BEµHKˆNPRUTTüUæVqW)W˜WØWìX XbYY‡Y–YX†XW¼WÀWÇWÏW×W—WgV‚UbSwQ‘O6LÒJ\GøEÕCËAü@^>`<9 5ð2…/C+ó(ª%3!ÄèÛxÏ Î 'üBC»\ÿäÿHÿ9ÿÙN|.ÿìD·ÐŠ&ÿàÿð ÿøB¦æãÿŒÿzÿŠÿ¢ÿÇÿáÿö.€½Vá,¿  ¯cß›¨o!$¹(|,¢0Š46ï9Ò<>J@+B)D5FHyK]N]PßSUrW¬Yò[¾]b^s_z`:a2aÓb*bCb{bßc’ddc—c b‘b^b|b•b¹bìbÓbÄaã`½^²\´Z)W|TÆR-PN/LÖKÍJwHÇE÷B÷?;A72ü.ü+4'w#Ȇ»¯‘ ¼ ±N̵ ÿôÿç?¾ƒ*t‰0ÿÌÿÃÿö"KšÿQÿ/ÿ3ÿ:ÿXÿxÿ•ÿ£ÿ²ÿ»ÿøBßQe¢Ú0 J+˱6º#0'P+f/Ä4;8Ö<Ò@_C*F4H¹K LúOPôRÁTÌWBY½[Æ]±_òb.dgf grh9iiŸj{kkQkRkwk»l3lwlzlkkjåk k1kˆköl.ldkÓkiZgºeyc `w^ [ùYíXeW8U÷T{RO›KþH¼9³4Ô0X,:(#„T‘R¬ ¶ +u1+õÿçÿ¦9bOÿòÿ²ÿõE+ÿãÿºÿ¼ÿâÿñÿÛÿô"Oÿ…ÿhÿpÿqÿÿ¹ÿð:0ì,@1j ¦Ô¸ŠÅ$Á)|-þ2[6×;Ê@“E HÃLNÖQûTšVçX‘ZO[Ç]'^§`ub\cîe g¹iÎkÇmmõn=nnÉoFoo±o‘o‹o˜oÄoÚoÔo‡on¬nfn}n¦oo ppzpTp onl’jähõg0emcŒaÔ`d^ó]^[UYwV¦SŸO;J“E?:S5˜1W-9(‚##aæ ¤ ½¬cÆ–®òkÿÛÿÍ -(ÿôÿÂÿÏÿóÿïÿêÿøGÿ:ÿ5ÿ\ÿ|ÿ­ÿÖ2¬>pœt g “³®^5$€)Ë.û3ê8¶= B§GûLÖQVTãXg[D^h`¹bªcÎefghiljél#mno pˆqßr}rár¶rŽrmr–r¿r®rzrQrDrYrpryrAqÔqfqq1qWqÂr2r¢ss1sCrær†q¼pÖoÃnämålÇkjj2hŒf¡dXbm`]†Y×UãP¾KiEÎ@;ž72S-' ðbB‡5 j׫“%§œÿºÿ·ÿò.ÿÜÿ×ÿï 5¥ÞD¥CðÐËŸo 5ÙĈD$*/~4«9•>‡CzH›M–R’Vä[^ZaÍdyg*hÐj+jÁk{ll‰m@n>o_pHq(r>s"sëtt)sÂsPrørérürär½r’r‹r°rÜr÷rÊrkrqÃqÊqÜrrTr•rÝssrùrÔr{rq¡qbqp¼oûoEmÆkãig™eŽcž`û^+Z0VPôKãF©A¾<Æ7¼2E,Š&² Ë¿Gœ¡ ÞžÃkµ;mÿùÿë%" ÿõÿó870@cÔt°¥9„ä X 늒#c)/4ë:b?jD9I{N±SÐX\\Ë`ŽdngŽj§lÂnÅoÎpÂqq€q·qðrFrÌsYs¬tt£u?uÔuöuâu]tÅtOt$tcDJßP*TŠWØ[¤_+bõeÆgîi2jål*i-#1T5•:…?D.J PUáZN^ ` cºf=h¶j2k^kÚl®m m2làl£l6kàkPji¾hþh¤hQhªij?kžmyoxkxœxÝy&ysyÎyøzyÎy²yJxÌwìwuÝtœs qÏp(nGl i¶g£eÀd‡cVbÇaÿb3b¥dffži k llømmKlÊloj¢hd`‹[lVÅQ1KBDK=5í/K)"°—0" ß û‚ÐÜÿùÿÔÿþ T(ë+,—-Í.Ù0.1×35h8d< @žE2I³NÂTTY^da¹d»fwhyi’j‡j¯jãj–jai±hÄg­fàfeJdCc aê`á`w``šaEbãdŸfÒhÙjýmAodqys t„u`vvwAwçx‚xèyDypyžy³yÜyÓy´yJxùxY'^>b‘f‘hök2kólµlll)k;jeigŠeºcÞb4`Ø_«^T\è[WZXÔXkXXÖY¬[w]L_µb d«gbj&lçoNq¤s^tðvwpxxynyæzHzJzZz8z/yÖy]xwÇv–uxùwŸuVs3oõlTgëc|_k[ËXÚVSOŽL+IFüDñC¶B?AËA5B–D™H‡L|PúUY ](ahfjm_o0pôq¢r§r{rp'njÔhcê_(X¨RJÉCû<‰4v,#߹› «wGÍ¢uZ|\Ÿ^^ú_“`ba¥c:efugói¸kŠm_nªoÍpp²oïnºliŒeÑaÅ\ÖWÓSNÇK#G1Cÿ@â?=¯='x@ÉBÑEŒHPLYPêV5[1_ïd—hÔm&pâtËwlyªzV{z›zMxØwOt‚qÆm¶iFd^çZ4UÞRmOL#HÆEÓC(A5?6=Æ<;e:Ž;°=kA7EIËNRpV“Zû`d¶húkÙn„pqÀrts-rqqhom.iàfX`ØZáSÃMfF>,5^,}$Jf;C §¤êL`-b5c•d{eeÒfúhhiÓjËk»m nnooùp–pRpnUlcieía\•WQLÏH_Dª@Ž=e:~987Â76Z5„4ç454e4÷6€7ó9Û;j=É@FDdIN×TPYÍ_2dOiƒn"rùvNy(z{zœz_x¿ws¸p[kxfC`ZZUGPILFHFE#Aã?“=<.:Ž9&7‡6š5œ6\7˜:Å>BMFuJÃN¨RçWÀ\Âa›eˆi0k°n=oÒqžrrQqoÕm?jÔf‡aš[;U‰N¾Gˆ?6>-% G ™é[¶Eegh~ijiûjÜkûmPnko o‡p˜qbq¶qbqyposlÒj*f1bN]WqQPKwFsA¸=ô9ß6ó4I3291ý1`0¯/æ/F..›/0=1D2²3Õ5ö8/G›M½TZ.`fk¢qkuxxïz{IzÅzxœv¤rÆnËi bô\&U{OJ E©A=±:E8Y6ê6a5†4ž3]2o1z1ó2è5~8;Œ?0CAFàKO§TßZ$_ c¸g[jÖmXp"qÄsLs r¸pÀo-k×gébh]mW.PÀH°@6ë.-&\©GË L½mg ijk‹l9mFnmožp{qq\r8rŒrSqPpàoWmCiµf^aÑ]WPQ=KE@';u7ý4[2/Õ.û.Y.I-ð-‰-,œ,+ô,,Ì-I.'.Î0‡2=6):ÉA]GÕNÊUg[òb¿io±tcxryà{Bz«z\xJv2r m¸gt`ÚYxR1K¿EÄA<#853\2I2k2G21[0§/è0'0ã2Ã4_6Ó9r<Í?èCÍGóLðRWG\‹a6e¦i(lÍo^rss~r1q;n©kÉgfcA]ÐXwQ]I•@È8U0@(B!Ð÷) ¡]iŽk]lÍm¾nuo pÉqÍrhrÞssÂs­rüqLpDmðjåfcbT]-W¤Qq9˜5 1ö.¸,Ü+"*½**ö+!+,+'*å*~*'***!*y*™+Æ,Ü0U4•;4AÉIb8‘490F-Þ+6)ã(¶(Ú)1*!*ì+y+ë+Ë+t*Þ*v*8)ý)ô)™**{-?0À6ê="D¯KîS±[ÈcŠktq6vcxqz;y£y`wQugqPl×fL_¡XPgI7B.<¤7/3×0É/½.Î.÷//=/?/.”.b./-/‚0B0ü2º4¤7Û;.?€C“H–MùTZ_¤díimypAr¿sEsºr’qŽo#l•hÏe€`~ZÆS_L"DS<¹4é,¦%h)KklÇnXoopXqÃrîs§sît™tÂtìs¾r,o5l·hcÆ]§X%QïK D$=µ8s3/`,*m(d'''¶(y)Å+,,Ë,°,B+c*Å*N)ô)¢(Ø(­(k*-92æ8É@‚HP>X©`Ïi$otuHwëz%yÊyÎwðvd8L3Ó/1,Y)ë(î'„'4'*(,).* ,5-U.)-ò-e,y+ó++`*è)Ô)#(w)ù+õ0ì6;=®DÿM5Uq]’eôl°svsyVy•z0xËw†sìoÐiÑd]hVàPIB»<8•531à10=/¯/.r-­-,w,>,,#,,Ÿ-.Ì0à4_7ª<4@ÝFÈLòS«Ze`}fcjÙo[qët%twtósér°p^n‹khgèb—] VZPHùAI9k1k+V%™jAl*noŽp½rLsittKudu•u/rÖpylSh@bn\0TñNG?f8â3/_+d)F'';&w&£'(W)+,÷.7.ù.“-è- ,½, ,ƒ+Û*v)F(D)Y*Æ/ 3à:èAÑIÎQÅYäbPiopEtWwèx×zy):163p0è/Ô/.Û.n-â-,,r+Ò+g+$*Ì)ä)o)\*¢+è.¬1Q5Õ:ŸA]HƒPSWº^ƒeqjÿpos¯vœwix4w˜wu±tÅrwoxk gb\œVZOÐJYEhˆjkâmÝopÒq…r@r¬sÂsormnîk…e¹_dW®PqHûA2: 2Ù-Ü)…'¿& %Ö%•%È%€%¯&.'€(ÿ*¶,^-m..@.Ñ/r0L00=/-º,‚+x+¡+³-à0z5i:[@ûG®O;VÞ^2e”k4p\suÓvwˆvu;r/oˆkMfÎ`¢ZS LMF^@›;ý7"3ç0þ0/r/À/±/n/.Y-’,à,‹,$+4*f)Ì*5*¨,„.B1ó5î<B…JQyX±_ðf#lVp…tKuçw™w©wv„vt“rjnâk´gzbè]˜WùS:N®h–iæk“m›oDpRpÅq•r rér'pÛlõi b¤[§SŽL#DÉ<é5ø/6*ê'"%ñ$ò%A%Q%…%E%g%Ø'0(Ò*¬,J-Z..¦/ž0‹1†1¨1S0)/-ð,ê,·,h-Í/~3b7S=ACeJËR9YµaKgvm;p·tuVvÙvv sðrSnÅj§dc]ÆV PJD>œ8Ð4Ô1z0œ0(0È0ó0æ0Ò01/1.-–-,+)ô)˜)W*W++-ñ16v<-CƒJÕRˆZ-ahm2qÄt)vÆwwàw*w>vjurfoélshÖd_ð[úX:hÓièkmmpooêp.qqŒrp¥nüj­f_+WÏO¥H@ë9-2´,–) %à%#$¥%3%_%}%@%[%»'(®*, -..Ü0 1 1ô21Å0Õ/ÿ/.,-´-'-Õ.‘1W4N9›?6FqM¤U0\ÐciiÉn r sÌuŠu€uvtsfp˜lþfá`hYSSM)G,A‚;?6¨2Î1­11´1ê22G1Ò0Í/y.º.,ø+¾*d)~(¾) )*ó-1µ6€=ED)KêS“Zïb|ham pÇtJuØvÊvkvÀv;ugseqUnkÀh‘dûaì_hçiÂk%m,nÝoœoÅpÐq&q1o7m6h…cR[ØT0LD\=B5¦/¨*,'`$Ô$Š$‡%M%‘%›%c%t%»&è(‰*[+ž,“-£.Ì0A1h2Y2l2I1Œ0ï0&/P.•-½-˜-5.Ó0õ5Ù;BHûPrX_f k>oõrsÞsÖt sZsmqwn–hÔb[kU OAI˜D=Æ8­402…1•2Z2¤3 3’3^2100H/:-þ,t*º)H('Ÿ&í'ò)J-!1+7m=ÚEMT¼\Ðc†ikmKq¨sýuŸu¦v7uêuŠt#r}pHndlDi­g}e–hi>j™lªnzoMop²pçpŒmûkšfˆ`ºX×QIAK:H2û-›(º&‚$}$|$¯%q%°%¦%m%v%¬&¬()¢*+[,v-É/D0f1G1q1140ê0X/¾.û. -~,”-®/‰4E9H7Y0_+’'1%i#Ñ$ $f%%%c%M%%%U&4'f(›)()Ã*è,b-Ó.Ý/›/à0J0u0­0y0*/`.N-w,X-F/38&>ƒDÏKéSZaWfîlntpOpQp¹pwpìo«m¡hüd]ÂW‡QŒL6GQAÖ<Þ7À4³2€2ƒ2„3-3¥3š3A251@/Õ.n,Ÿ*”(¡&Ü%Æ$x$$°')|.K3O:&@àH¹Q'Y`!e„kOoros…tztts,q»po'nlm&l9k¢g)g¥ikJmXn^n¾pLpdo‚köhÓbô\S™KªCØ;Â4ð.e*?&[$ê#±$$_$õ%)%$Í$Ã$þ%¶&'a'·(:)I*š+¸,~--|. .º/W/‹/–/%.c.-—/1.5: @F'LðS±Z3`èfjïmQoBoroïo§oùn´l³hŽd|_ YYSiMñHìCÂ?: 6¥3ª2É2N2¹2Æ2y210 .¬-c+¸)É'Ø& $Ý#›#}#d%&É*Ã.ÿ5\;¹C’KåT[¬aÒh7l¥pØrs°s1s?rVpÑo,nOmÑlÊl kËf“føhzj®lÝnn±p‡poPk gya2YûQHI;FmNâVð]ádñjo#qXr½r$rLqtoçn@mxm(lPkÙk²ffRgÎiæl$m™nvp‡pjnÍjeè_ZWòO8G?C6ä0i*¿'ý%H$Å$|%"%q%¦%È%›%2$ã$î%A%]%§&&¼'t((L(„(î)š*U+%+Þ,Œ-)-î./ñ14O7;Y@EºKRPÿVx[´a]eÿjVl’nPnnn¸n~onPl²ilfŽb¡^YƒTGNÞI³E@jn©löl%k×kj˜jteŸe¬g hùk7lÙmïp(oçmøh·d9]kUÊLøD·<è4|.;(û&Õ$©$’$°%~%Ô%ø&/&%Î%|%%Ÿ%a%a%Ø&}&Ü&ù&î' 'k(#(Ç)‹*3+", -¤/1Q3¬7:;>ŸCxHüN$SCX|]bÑfòj¦lomön1n–n|nænFlñjjh`eib@]ÚY6SäN§I—DÑ@S; 7$402·0Ü/n.,±+@)å(¾'&$Z"!A ¥ky!R#R(D-é5ð=ÓFkNûVð^Õek|n¦pYozo­nÚmFk›jÖj¡iîi¢išd÷dÕfgÔjkÅlúo0n¸lf÷bG[jS¿JùBº;2²,º'Þ&.$c$‘$ñ%ì&e&º':'Š'£'”'¿'Æ'k'D'Ç(I(4'Á'_'M'|((o) )|*’+á.%0b3~6˜:>†CVH}MÈRŠW$\0`öeÎi;l/mcn|n¬o&o2oenÀm¯kéjªh¢fNb§^ðZUOŒJuEV?:±6±41>//-L+è*T(õ'·&%#«"$ ôõwÈÉ“ !& +—3§;{DLºTØ\ØcFj5mºo‡n‡n©mÊl3j“iÒi­ihâhñd?cþe2fÉhëjÃl n4m„k e>`^YyQÎI$@ù9g11+~'%Ê$S$¼%Y&‰'1'Æ(–)G)Ò* *V*C)Ô)Œ**`)Ë(±'Õ'u'T'´'ô(}(»)æ+m.`1a5z9‚>SC;H’NS,W¸[Ü`”d×ik¶nnéoqoRo½oèoôoRngm7l²kiýgd!_È[UaP JFCÞ> 9/5©1Þ/2,Ç+7)|(.&ý%é$§#V!ë Òü‡È…* )$S)‘1¤9lBJÐS[*aÕi6mo mîmÿm kniÒihühthYhtbþbÀcýe’g¸i°jüml iEcJ^OWŠPGž?¤8L0K*ä&×%ô$²%3%í'O(/)+*j+²,ì-´.^.u.R.0.Ø.õ.,ƒ+-*I)¤)œ)€)Ø)Ï*þ,¡03®8ž=€C,HýNÚT®Y›^ a§e¼i#ljnupvqq p‡pºpìpípmo§nÌnœmúléj–hqd»`Ÿ[U±OvH¿Bf<¸8C3Œ0,æ*é(Ñ'€&N%p$f#W" !2 “ >’>¿¥ V$:)T1k95AñJ¤RêZýa¹iImUoNnnmkOi¨hÖhºh;h6h^a®amb­d9ffhˆiækØj’goa1\UpNEù>07 /@*)&& %%’&`'ä(ë*B+î-Ø/Ç1.2K2§2æ2ý3Ð3Ö2è0ö/8-¿,…+ï+A+F*î,@.2?6s<:AýH~OUk[¡`pdÄg¼jümUo£qr“rërŽq¿q°qàqñq´q0pžpŽp9o©n li|eï`Œ[5TŸM©F¯@;:º4ü0˜,Ž*'„&&$ê$Y#±#"I!!; ü k … = ¦$O)X19IBJ¹S[aîiŸm¼o«nSn/mkAi‡h–hlgôh hI_Ã_§abÎe0g˜ijàiFeÅ_LZS¤LzD˜<ÿ6.ƒ)½&‰&`%‹&0'(º)è+¢-À0Y35/6í7Ñ8´9=:]:w9Æ7Ç5Ê3Æ20û/¹/Y.¾01þ6Q:¸@ÎFîMÀT¦[aIeÑiÓln‡p q¼rÈsõt(sÃrür¿rÖrørýrÅrdr>qèqŸpo˜lùiþe_÷YlR©KzD”>472Y-}*`'4%„#ø#z#"Ò"U!î!À!š!( Ô R þ!R$í)ý24:B¿KwSÉ[íb¹j`ndp\?]@ÖA@©>§ÿE7K|RiYg_¨eËiàmJnäpµqÚsOt/tßtÐt™t)sõsísésøt tsýsÅsÁsr‹p^mäiGdu]úW€P;HñAÀ:e4c.ä+J'–%„#’"ó"r"v"+!ý"!ô!’!6 ­!H!‹%*,2l:ö=u;¡:º9Ò:à<:@DIÔO¤V!\Çb¦hOkÕn§oÍq=rOsØtÓuNuutçt·t™t‹t¬tèuu"tþut®tVrŽpŽl~h&b\5U5MöFb>³8-23.)¥&ì$Y#I"_"?!Ú!¿!Ö!ß!…!' ™!6!‰%+*<2y:JC!LT„\Âc‡kopÒo]o&mÈk¥i‡h5hgÀhWiXíY¿\_'bžeÿg{h÷fkb[*UéOÙHãA_:'3Õ,â(ò&¸'q'A(_)¶,. 1/4œ8ý=¤AåE‡HJáLºNÏO/OL÷JyGEWC®Aœ@ˆ?¡@¤AÂE"HÕNCSœY²`eËk n?p¿q„rcsttuŽv#uñu½uQtâtÐuu¡vv*v.vv[vGv8tåsspl:fža:ZgS/KECQS#P«M¿KxI¶GFfE¶F×GÚJÆN RØW\òbëh8lïo¢rrÑsqsÖuvvÛvÅv`užtëtÔuZv#vrviv^vXvvµvÖuótür=o9jXe˜_0XoP«HÝAz:l4¦.¼*“&¹$Å"î"J!t!J!V!€!> ø r!!–%V*d2’:eCPLNTí]Sd)k°oŠqdpp n¿luj1hêhýhôiÛjØP³SOW3[ã`rd½flhe7`uY6SâNGP@92ô,s)'F(c(ˆ*+ß/2O6¥;@5EÃJöO¤SV¬X×[[B[+Y)VÏSåQ‚OŒMKüK’LîMïPtSHWy[ˆ`rf jçnÍpìs2tBu ugvRww°w›wBvu¶uku¿vVvkvMvLvhv¦vÏwv™vt qÙmÎiÆcÚ]§VN[F’? 8y1Ï,Ü(9%#" ú Ê È! ï Ð ^!!”%W*b2Š:\CFLžCúI¼OSôW€[%]D_S_˜_À^.\:Y•WXUiS R QàSXTWVXì\v_ädhálôoòqŠs™t×uÄv+väw^wÀw°w–wvXuÏuÊvuíuÎuÓuôvv+v†vavtžsoÝl‰gKaéZæS¥KÎD(= 5×0#*Ê'p$" é › y Ó Ú ß u!!%:*!2&9éBÇK—T\¡cšk nÈp³o~o˜n(kmh·gAgugh¬jD…I4NüUª[Õa¥dDfád\_¸XDRØMF”?¡8¡2°,€)z'Â)6*,°/P3k7Ÿ<ÒAæGƒMŠSX[¶_`acˆdd c¢b_À]Ï\YøYYZ_[;] _+bdÚh kËnñq9rstuu²uìv—wwjw`ww7v{uÉu›uÈuÈuÆu¿u»u£uÃvRvšv¢uˆtzqÕo jkeÆ_]X¡PàIEA¿:3“-Ÿ)%}#6!   d Þ!! §!!‚%)³1‚9)A÷JS[Ÿb±jmÏoÎn£n»mjgefe«e»gh™=ÉCRIôQŒX_Pb®fd_àX—S1MTFè@ 8ý2ü,Ó)ß( )¥*ñ.71[5ã:ˆ@EWKQ V‰[g^¿b*d)ff±g­gPfKdscaÈ`<_›_“`aDb·d†fèi kMmÜoýq®r¦sÜtkt~txuu×v;vVv®vuçu>u/uzu˜u“unuBuu;ußvNvcuvt¥r‚pCldhŽbî\ûUªNhF¹>¼7Â1l,Ø'ð$ä"*!k ï!^!{!‹ ù!F!“$ë)K0Ô8_A I“QàZwa˜hélƒn›mcm>kgecÌa»aÁaŠbÚds78=¡E!M U‡]aecŸ` X÷S•M“G6@d9B30-*H(s*:+å/½3^8^=‹CZHáN‚T¤Yì^—a¬dàf¶hOhüj)jUiÕh•g³fðeýe©e¾ffógði=jöl“no—p¶q¯rSs?sžsSs sŠtmu uruõuôuftãu#uu‚u/tãt½t¯tóu~uÉuºtútxs qn“k‘f®a‹Z±SÌKïC¨<5V0.*&½#~"x!ª!ì!è!é!>!l!£$Í(Û07”@RH•P¾Y\`gÆkJm„lEkåi"dÑ`]ë]] ^Z`1f8@ÊIøRŒZÁ_ƒdGcx`ÀZ#TÎN†H-Aa: 3ô-Ý+&)J+>-I1³5Ï;GAG.LåRUXE]aQcæf®h1iiiäjãk?kjhiíiŽi%i(ibiøjTjÿkÛmnWozpnp÷qgq¶r`r­rNqõr^ÝX6P?H@N9^3½-t)%=#Ó""…"E"8!!¸"%3) 0?7½@HŸP›Y1`Jg;jsl²k>jKf˜a}\cXØW¿V`WOX½+â3Î<ÃF›OÐX´^%c’cga…[]VO‚I7B~;-4í.Ò,)*<,_.Ó3Û8n>^D¿KNQFV‰\E`¡dTf_h±iÕj¦jÞkkñl kËk†kckgkÅl3lÅm3m·nFo ppßq¥qêqèq¹qòrqÇqq}qårir÷swsˆs%ráshsïsÁsDssrússps·s¶szs€s'rÖqipl£ibù\?SýKÝD6=47#0G+"&È$ê#("Ü"w"{!Ã""„%Ï)¹0Ì8`A)I/PüYˆ`xg ißljbhÊd ^BXYSäQìO£PQ2'l/ß9XC“MBVÊ\ÿccb¾]4XQ&JÚD"<½6c09-‹+x-»0•68;>AHdO>UˆZ¯`cÌfêh]jjÎk]kqkÄkôllkÓkÇkölzlúmn noo±plqqßr#rq¥qžq¯q¡qqtqqÜrBr r¥rEqór=r“rnrqìqÍqyqjq¾r8rfrjr¤rr}q†pÅnk$eN^‘VMN«Gn@z:2É-(.%×#´#<"¤"ª!ú"‡#K&ï+2N:BÅJ¼RYZÈaggxi·k²i}fêaZwSÌNHK$G²GYGÀ"Ó+Â5»@YJ“TÚ[ëb²cïd_ZRÎLqE§>7¤1l.Á,‡.ñ2H8ž> DÈKöSY¬^ÆcÝfÝidj=kEkll>lel}l³lälêm mcmçnXnÇo,op-p¬qq9qmqoqSq2q7qSq_qqq|q¯rror£rprq•qq¡qHp¸p@oæouoroÍpSpqp…pòq?qup÷pßnèl–g%`ŸX–Q›JÇCÏ<Ô51.ú)|&¼$b#Û#"ê"("é$(,s3¹;€D-L Su[Êb!g½itk=hŠdó]éV’O.H£DW?È>ž>CD(\2ž=UGéRÈZ²b%d*eha8\eTõN‚G‘?è9U3 0K-Þ0F3Ï:@tG]N›U«\™aÃf’ik!k—ll,l¦mm*m(m;m`m‰mËnnhn¦nÚnÿoPoèptpÊp·p|p7p%pRpŒpÓpòq#qmqêr•ss;rñr“rqóqŸpúpo@n¦n&nn4nonOnYnÓoWo¨oio¦n-lMgia…ZSÊM7F0>Ó7 0˜*±'•%$ˆ#]# "N#g$Ù)F.5‹=^EçM¼U])chAiYj­g6bzZIRQJRBÃ=L7µ5µ4u÷%;/Ê:’EmPÓYŒa¬dfàcq^àW-P§I˜AÕ;,4Ï1ü/`1·5M)l&{%z##"¦$¨&³+·1R99A)IxQfXu`6e9i|i>i D¡LUSqZaWfŸjïl›nQn‹nÂn•nÇnõo5nòn-mHlÓlÇlÄl¾l‚l4kÕkæl:mn@ooPnñn”n_nynço/o¥ppâqðrñs¹sþt3sÿsòsgr–qppo‚nrmXl k@jÑk k6kžllalÙlk.gâcü]úXEQ[J,Bž; 4ƒ.)ì&¯%t#W"ê"À%/'“- 3R;¥CžK¶SÄZÇbFfªjdiKhCaâYóOE‘;ÿ1¢) ï÷jÛ'V1x DfL1SPYöa f:j–l`nn[nÙnÖnìnÎnònzmxlj¹iîiƒii-ihÑiJj#kŽmnnÎnçonýooEoZo»pCq8r^sct't]t†tUtXsësAr'q0oþnŸmNlk[jôkk"kwll~lôl;k h…d“^EX@QIåBf:Æ4 -†)K%Ë$"ˆ"v"s%=(6.h5j>FMðV(]d&g®j¹h›f2^šUåJËA76,s#fõ©Øíð$<.8ÈDRN±Xl^”e%f1eÂ`ZR\KCDÐ=é9À677'8{=úDL S`Z:aHfcjâl¿nEn\nìnýon¢n|m¶l›jÕhÊg=fWfQff8ff©gîjlm¶nßo>o°oËoóoõoÄoäpUqOrisdttVtžt‘t t1s†rrqpnom¶l\kˆjàjéjýkl%l’lïlBli0e3^¢X„QCIãB+:L3j,¡(B$#)!k!¶!µ$À(j/{72@#H OÊXC_)eØh†jðgÝd[CQÑF„p’q€r„syt-t„tôu u%t³t sr:q3oönœmAlWk†k€k¼ldlòm7mlôlÑióe¶^ÈX}Q IQA<92 + &ž"Ï!´ U!!2$”)0ø9AÞIèQtYè`dfohi«e`^V”LÃA«7u-’"Ýõ¢ Ú ÜÓ%¹/ð:ªE+O™Wg_b"dÂaÛ]¬VzP\J#CX>T9Ä98ã<ßAQHtO§Vü]ÝchIk m=mvmâm‡mlÔk£ilgOd¦a©_\¦[Ú[‚\º]ž_¿bFe“hïk±no"p"pipápöp¼p·qrs6tLu(u™vvv'u²u&t.sSrpƒnómŒlÑl>lkl¼mLm§mÝnzn,nk fš_XXÅPúHÌ@d8)1)Ï%.!^ ‰p ‹ Þ$²* 2·:çC„K´S?[’ayfÑg‚hÏHÝR9X~_a!aö^MZ²TøOrI¨Ce?@;üh@ëEÏKFQ#VeZ!]Ì_^`±_ô_\ö[^X‚T÷PoK±HED)BÞCÏDãHéMÈTXZ`9e¤inm nÈpSpnpQpp8påq‡rcs4t,u¢FqMöUâ[E_ì`ya‹]dWÆM¸CÐ8å.²%,û LCšSÔ¯ }:ü(®34>.HáQqYÐ^abÇbla=\[WºQ›K;E–@G=Å;Û<ð=ÃAE%JYOQS)V…WéY[XàXUîT0Q^N;JEiA™>£=æ=>M?SBÜGMPSY³_Ÿd-h‡kmŒnwooGoípÈq’rks@t%uvvøwwÎwÀxwÍwNv5tûs×réršr«r¶r–q_p mjd©^ºVäOFÜ>Ø7’0*€%U#f!¾#C$Œ(Þ-Ö4ã;sBÏJÏRXü\Î`C_r^ÙY#Q÷GQ=o3(Ü‘ 5 Ka,,ÂÔ¥ CÎó#g-Œ8ËDMÈVÚ\†b„cådI`3\U®O‰IgC>ï;±;r:ý<õ?+C+GªKØOGPÍR=QÓQ_O_M^J3FüC>Å;=847P6†89p=.ADGMSIYn^‰cbfi˜klemnMo}pŽq€rtshtmulvww;wâxxƒxAw¥v…ust‘sßs”s’s9r¶pánúk=gka‹[^SµL D<4ù. )|%#Ë"o$',€29?¦FêO)U÷[Ü^`ˆ^y\ T›Kÿ@ò7-O"ñå, Š›y UæRðéŒ,©µ(,36>§I R©YP`ecNe‡bæ_ŸY}SåM©FûA®=!;a9Þ:–:í=3@aD"GbIJBIÃI™GýFBä?®<8T5Q2l1\0s1ð3¬7“;€@ÒF$LRWw\£`icýfBh^iökùm¿oQp„qºrÒtuvHw"wìx$x]wâw'vu7t|s×s@r×qÞpÒnbkÌgobî\×V¸O†H-@£8Ý2Œ,É)|%î%8$˜'‰+H1ˆ75=ÜD§KÂS›YN]ñ^š_Ê\DW´N·Ea:«0÷'œg÷ \ýíO‚Ôí&Mï —k "À-8÷DNhV)^4bƒf§eªcm]XOQåK#DÑ>Ÿ:ò8>7ó6ó7¼9+;å>Ñ@ÖAæAaA=?ú>¦< 95ƒ1ë/,ƒ+ž*²+ì-n1 4µ9Å>»DJPzV'Z«^èaýe gŽjjl»nºpqrÙtMu“vÝwœx7x+x$wœwv)ubtws‰ruq¥p.n¦k“h+c^WôQøK(CÝ<®5…0O+Ê)ž&¸&¤' +:/ü6¹<¦C:JhQMX]\§`=_ _vZ0SLH»>Ò4•*ä!ÎÑ b*ýôÓÌê„Ià ïß°'¾2ƒ=¯HkQ*YÈ_+dÞe»e5`c[öUÅO¿I]Bw=N9[7Û5÷5™576A8 9°:S9µ9=8$7^5§3g0P-*s(S'ª&Ó'¬(©+ .Ï3Œ8=´C¤IâOúUCZ<^4b1e“i:ln—p;qés;tÂuíww{w­w@vòvNu»tÁs«r2pºomÃkÖiÔfLbS\øWÃQæL0Eð? 8¹2Æ/+ç*ì)*,16J<ãCIePcVJ[ç^u`ø_!]UåMBB84.ª$÷*é Xä™kÛ ꆉ  Y™Ÿ!þ+ã6êBKÖU[„bˆe%f›c6_yYiT`_\ V±QZKŽEÔ@ 9Ð4±/þ- +p+›+b-ò1N7<‰BúI—OðVSZÌ^þ`a¦^‚Z7PõFç;„1°( Ç> Ü™2µï¸®ôXe<®L¢ âž%>/~:TDºN}UÙ]„a{ecÍa–\jX;RæM%Fê@l;€7»5Ç3K1¢0/6.X-s,1*ç)Ò)(}'¥&3$Š#"I!¿"_"â$Å&Í*Z-Î2Ö84>¿ESKíRRWî]aaöf¿j€n(pgrnsNtKt•tät­tysÚsfrBpàn¯l`iØg£ecc2`a]xYpU$OòJÄEg@;,62}/(.-#.œ0*48A=ôClIsPU”Z~]_Ò_”_©ZÚTaIÝ?”4ù+c"¯Q 0A¶©|•Âð3Mó %VÆ(>2¢=‰H P€X]¤c!dAd_î\V©QîLpF@:ö7k41”.ñ,Ý*Ò)D'·&|%$.#†#-"Ÿ"!ˆ!C!!f!µ#*$É'à*Ü/ƒ4{:ãAdHGOU0[-`Lei½m¾pr.rîsãsùsüsSr½q¬pËomjKgmd†aÿ_‰]ZVØRŠMÝH“C`>¤:6ˆ2­0k.H.±/†2Å6:·?-DšJoPkV¢Zç^*^ë`¿__]„V‘NB©8n.©%”} Éù@ÕC©ð ç6P×âgD ºŸ!‹*×5v@DI¬R%X^£a¿daö_ZVPQïLìGVA³<ö8è5ú2Þ0 -* (š'-%k$"Ã"?!ò"O"ž#"#n$$—&'º*”-B1Z5º;…AtGûNhT…Z_»eiå;:7á5­31ä0Ü2}4é9Y=hBFEK$PûVU[4]_"^l_\(g Û<C¨xõÐ@:…‹FÁdÏ ÇT#+-N8SBÕL)SZ:^¸c†dbû^¡[VÝSNrI7CÚ>ã:è7P490ˆ-I*i(h&Z$î#U"–!ÿ"ƒ#8$”%º'(M)þ+Ü.l0½47Á<ÑBH;NMTOZ<_{dÊhÙlÁoqqÖr¼ryqùpªo™nl«j\gžd`­]ZZnWT Q MH¡C÷?Ö< 9“7B64]4Q4š7o:õ?ßDHM$R WÑ\_:_•`)^r]™XÃRG¬=§3~*/!×ȃ Þ cóeL~ä°b4EZéµÿ È‘a%{/®:nDƒLTYP_«b¬dTb_d[nX¥UZQ~LÁGÅC+?^<874‘1.]+ð*d(§'¶&²&ò'‘)T+-!/ 1:3Œ68W;'>+BWFÅLQCVŽ[Î`|e"h·l9nbpsq4rqžqo¸nÂmel"iàg)c’` \Y}VoS:O{KYG5C1@7=Š<:š:99Ò;>mB)F¸J™N£S5W”\>^³` ^Î^n[ŽX‹Q¦IT>Ý5a,a#fƒW c)jn8,Wšò³ŸE2‘kEL³ ã­Â&š1<E³NT8[<_ìd|e"d‚a*^¤[‚X¼UPÌKùGCt?G;‰7È4Á1¸/¿-æ-4,i,É-N.é0†2Ò5 7¯:t=:?BD¹HK±OüTKX¼]+a'e hk9mLoOp%pòpŸpnûn1lòkÆixf²bæ_ [VWõT­Q/M|IzEýBÓ@â?>G={=¹=¾?DA!DµH„MQŒUÂZ1]P`0`²`ï^Æ]HXRÇI¼@j6-~%Dw# µ´Ãrœ+™ÎîÅ”¥`%*iaÝ0 \j‰§'ÿ2‚=F|MÃTãZQ`½d7fjdýcW`f^„[þXùTÚPŠLGàD:@Ÿ=:)7×5é5t5 5§6%7k8¬:»<ã?µB®E­HNJÁMyG°O­U¾\Ðbgh“h÷f§dòbg`5]#YªU`QLØIEæB~@=ä=:<Ê=¥>n?îA?C5EKHKNPÆS2U›XZ]!_¶bdnfdhCiÕk‡lînRo.p p)poan÷mîlöj®gãcû`\MXáUàR¼OãLàJ£H£G¼FÅFàGH@I0KZMãQ¡U¯YŽ];_`f_Ï_¶]Ö\BWrQH‡?b6 -×&_*Ù— ÁÃò¥Œ¼ Ü„ž¸[nW,s)œûµ ’—{ Ö*Œ5^?ÜHÙO›Vm\b¨fÕiái`hseüdlb[`1\óY&UQ[N\KNI"FØEùEoFiGIQJÒL´N«Q#SÌVŠY[K]_‹a³c­e¡g2h°iÇjÌk«l«m§n¯o{pOp‡pƒoìo•n©mÊk·i&e¤b6^î[ùYsVÛTwQãOÒMØLäL LSL·MöN×PÒSkVàZ“]-_^Û^A\[[ˆXÚU¨NïFï=R4®,ð%­ê„ ½‡¨j±ôˆÅäð±x’¼´;q~C='X¯4  §é¾"+ó6íA4I‹PÕV¢]™cEhàk/lQjŸiJg9eÌc¾a1]ÙZtW6TQêOÀON£O¯PØR»TVVIXTZ·]7_£aècÇe—gh¸jkclDm mcm¡mÞnKnùoÅpyqq5qpp,ocnšlÙj®gÕebŽ`9^"[öYØWŒU SÄRÖRRRRÁT)UkW†Z9\Å__„_v]Ê\ƒZXES³MÇDç;¸2·+$£¡É €]©µäÚš¥øøÍ•µà¹-i”y<?‘P. &âÞ#t-J7šAHÿOUl[a»fJiÈiïigËføeðdÖbö`¦]ÿ[tY¥XW›WRX8Y4Zè\y^g`ibˆd¨f€hEiƒj¨k`l*l²mEm†m²m•mTmAmhn n×o£pCphpnpoñopnêm¹lKjehœfÑe'cxa¼_Õ]½[ÎYòXÕWÏWÊWâXÖY×[:\ø]Ñ^ \ž[XVèSÖP‹J BA8é0n)J#r³ˆ œIhõKÄÑê Þ¦‘¨àö¾(Y”¬†4ÿûÿýEEÕ7fM /˜«Ô$-_7&@HG¯NUSËZ._’dðg³iŽihÄgÛgffÒf)ecÖb†a=`¯`M`ýaÐckdûfÛhÃjŠl:mwn½oWoÊo•obnÚnamÉm/l’kÎkxkXkölÈmÖn°oEoÕppUp;p#o™omùlçk•jUh÷g®fdMbn`—_]^W^!^^O^m^0]ý\ï[¦YeW^TFQpLwFÁ>Ì6P-ÿ&Ô!‘H T"3|ÒÏì± Ñû÷¾9M|¶´fÿÇÿóIõ/ш ‰‘#º,n5±>E2JlO¶TuZ^¢bšddçdrdˆdïeÇf‹fîf·fTeíe¥ff›g×ijƒkÝlëmángoonÍm½lk(iÄhgKfoeve3eeõfühni²jàlmmºnnSnRnfnmrltkjii‹hVfÏdícan`+_]^­]´\jZ€XŒVUTnROßLG¶A,: 2>*ï$± < ôÂ=V„þÿ&H ³‡”¸ãòß¾SSiž±’@ÿÛÿÁƒŸùõ ±›""c*ª36; A FNJ„OkT,YH]_ûa1bBcdjf"göijj™jûk!kkMkÑlqmm~m£m¿mšm·m2lYj¢h×f¾d¹bùaA`-_^ö_`>a“ccef•hDi‰j’kk—kØl=lHl-k©kjoj i4h f*d6b`^^ˆ\’Z!WhTŸR4OøN"K4GÂB,<4Û-Í'E!> ¤Á z–KÛ‰Mûö>fNï’~¨ÌãÜÆ¾aZVk€”rÿÉÿ¾ @¾Ù"ê‘ ruÕi ¿($/Ã6R;ã?ÉCŒGEKëP•UX#Z‚[á]|_jaìd{fæh7hühÞi ii7ihgÓgfFeËdÔc{aZ_$\ÆZƒXªVÌU½T³T×U/V£X.Z*[ý]¼_”`öbb³cPcµd¹=Ý==>=¤?@_B=DEþGîIvJ³K–L’M©NøP6QlRRpR,R:QMP M†J‰FôCª@Ñ>-<:7Ú5‚2 .6)i$}Æ«ù÷ xÂmæèëdÁÒju1×~“VJj¥×/1-<FA,ÿàÿÊÿ½ÿÓÿï($°iGSa hùT=† #“'E*E,¾/^2Û7;Ï@MCöGRI™LMiNŠNóOœOãPWOçOMIK~I^G–EmBô?û<å:7l5œ3É2÷2,2‡3 4w5Õ7¢9l;H=0>·?ó@ÚAàB÷DAEaFjFÖG$FËF²E¤DIAÃ>ú;ó9T752Ä0^-7)Ð%á" 7yù¡J ˆ £x¯4ÊØ‡u¬^e>ì²”ŒŒrV<HuªÎ!#<KF)ÿîÿâÿßÿÉÿÅÿÌÿü%„¶Ž‘©  }²æé ˆ#U%—'ô*Ü.È37s;Ž>gAB BËB¦BÊB·BãB}AÅ@J>Ñ<þ;e9a74k1ª/,´*ÿ)F(‚'Ð(;(Í*3+‹-=.ç0Ÿ2i3ß55ð6á7Â8Í9—:?:c:ƒ:#9ì8ï7§5’3i1./`-Ž+½)&"9Yæ·]Ê ß ¹aãî8\Ú‹K}ýpx)ìÀ¸º¢yK6:`ˆ¢«&.2,+!ÿîÿÜÿÈÿÄÿÆÿÙÿðÿïdr̯T"  ¤òKƒUì …#‘&û*Ë.º256ª7Þ7Ö7ø7‰7P6n5@3z1Ñ/û.R,Q* 'u$Ö"} C½7˜ tõ7x!"¨$M&'r(±)“*x+D,;--®-ï.--ÿ-ë-8,\*É)+'!%J"ÿ —‰/ѨMb Í Þ ¥2ýæÉ ѵpZrÇ4e:ß¼ºÂ¼–_*0]|‚}%2% ÿùÿÚÿÎÿÓÿÖÿÞÿäÿìÿçÿüméâôO|å8 ? ’¢ÐêŸøHÒ"Æ%È(Ð*Ý,Š,é-L,Ç,f+0)¶'¸%è$"e }Sì|bi$âiùN¦¦µ)”¤ü3î¯ ™!k"4"£#"ý# "ž"- ú«“sÉ>zW † P *×  Q4fC°q\Þ#?á±¼ØÔ±ƒT+%4ScaVÿé !ÿþÿþÿèÿÒÿÆÿÇÿÒÿÞÿØÿ½ÿŸÿÿ˜ÿ˜ÿÑ©D"Þ @P ¾ ®}ú*4J‡:µ J Õ ž ‹§ƒ¼>•¼²y/ 9 k K -Äd§à ª ˆ Ô ‹ö7_G&ñÞ«sØ& ÜjN( ô Û )‘iI[Z`Ej¯rUv~zVKk¯ñáÅ¿ÛíÛª€_@9<KZZKÿÙÿå ÿõÿìÿðÿüÿüÿáÿÅÿ¿ÿÌÿàÿçÿÑÿ¸ÿ»ÿÇÿÄÿ¾ÿÿ»¥I`;i‡ö ƒ ¶I¸Ãýúñ€Sñ\"êgp Ë  )‘"@Yü¨Ññ€. H D - î µ j1ÍgŸÀ|O¹ ï  É#èðoúnš›•ò–ª¶Ã«TEHq¤ÎÞÓÈÃÐåøòÖ«{j`OHQUDÿÚÿÒÿá ÿñÿåÿú ÿæÿÇÿ¼ÿÉÿÞÿåÿÒÿ·ÿ”ÿ|ÿgÿEÿ4ÿ&ÿOÿ˜ÿ÷dÇÓ0æwµÀ { Y Ì + h > ' Á Q ™ è  öÕì*¸4ð´½ÈUÉBÔfóvëjÓ3q¼ÎÍ…?ÄO©ç$rÁ¤€-Ÿÿ–ÿÿÐ>yxb>.Ad–ÃØÝÐÈÇÏÚäßÒ¸Œ‹†kMA8ÿéÿÖÿÓÿè""ÿðÿûÿäÿÇÿÄÿÙÿ÷ÿúÿÒÿ¡ÿŽÿœÿµÿÅÿ­ÿ ÿµÿô5y–Ð#ËyIÅWð#Âgí|ÅjìcìŠÕª›vV6*(7?KRe¨Ìð55%/,å¡^'2JKA·[ÿÿÿâÿê7žÙÌ„N;Al–»ÒØßÞâß×ÌÆÄÇ­™ž™xK-ÿÿÿëÿßÿÙÿÜÿð  ÿüÿùÿßÿÓÿèÿûÿòÿÏÿ¦ÿÿÿ¤ÿ´ÿ·ÿ©ÿÿ¥ÿºÿÈÿÖÿÕÿï q¸Ožú>uso0Ý|=©d>@2?[‚£¯°œŠp\?ÿôÿØÿÈÿ·ÿ«ÿ¥ÿ—ÿuÿWÿUÿTÿBÿþïþÙþÕÿ ÿUÿ¨ÿæÿöÿûÿäÿÌÿÅÿÍÿôO¦—kPJHd»ÞçãÕÕÛæåÒ½½Ã¾µ¸¥v=ÿõÿòÿïÿéÿáÿãÿð" ÿðÿëÿþ"ÿâÿÝÿìÿÿÿûÿÕÿ¥ÿÿÿÊÿàÿÁÿÆÿô3Y`_N@;3Q|Ó8œý’DðM0:29EbŒ¬¾¯–vi\B'ÿûÿîÿáÿØÿËÿËÿÛÿåÿÚÿÃÿ°ÿ³ÿÁÿæ/#ÿæÿêÿþ1v£ª†}smkl_g‡¸àïêØÑ×ëòÚº±´·°¦…T% ÿ÷ÿéÿçÿîÿêÿñ ÿúÿû ÿñÿáÿåÿïÿôÿãÿ°ÿ—ÿµÿïÿìÿëÿóÿõÿíÿàÿÎÿÂÿ¹ÿ¨ÿ£ÿÿ¹ÿÙ'ú%í²i8)=CLQ\u‰–ˆnL;'ÿßÿÇÿÁÿ½ÿ¾ÿ·ÿ³ÿ·ÿ½ÿÄÿ½ÿ¥ÿÿƒÿŒÿ”ÿªÿÐÿçÿÛÿÈÿÊÿç/hŽ“ˆ™£™‚lhqµÓàâðùûòìÝÆ´±¯¥ŒpM$ ÿþÿèÿñÿðÿãÿíÿù*ÿëÿÏÿÒÿøÿðÿÄÿ´ÿÒ6L6ÿîÿÞÿëÿù4Nb`YE"aÉD^CçÒÏǾ±¥œ–•‹x^O;ÿýÿíÿö".2.ÿüÿâÿÕÿÔÿÈÿÈÿØÿêÿåÿè'6=N`i¶ÖÊœtnоâîäÛøöͨ™›‘tM,  &ÿíÿóÿÿÿíÿÜÿÜÿð!ÿÿ5/ ÿæÿÒÿãÿøÿèÿæÿ÷29+ #:]mVG]™Ö.+óßÒù±¬¤ £žs`M3!'51# ÿòÿæÿÞÿÝÿØÿÞÿòÿõÿî(6Gk§²Ê˳•Šš±ÏæòôõÔžyt{rW2ÿûÿþ  'ÿùÿöÿúÿîÿäÿãÿïÿû * ,9- ÿêÿÒÿÛÿø ÿ÷ÿîÿý2>ME0ÿøÿôÿôc¦Â¾ÀÆÕéþåѾ© Ÿ§«¯¸µ¨}nbZNFJF4ÿùÿçÿâÿêÿíÿíÿåÿáÿæÿø ÿû1V’ÅáØÉ¯–”ªÇÈÅÒçÿêÄ“fMGI7ÿúÿý ÿýÿðÿíÿù "$#'+/( ÿéÿÝÿñ/0 *561'"#(M}¯ÃÒãñ ýïÛŶ­­««¯¯¨šŒ{mZQE0ÿþÿóÿø ÿúÿìÿéÿóÿþÿúÿø'Ei˜·Å½·²³¿ÕàÏÂÖ÷ 笀]8 ÿýÿüÿüÿÿ  ÿùÿü !"%/2+$"ÿöÿð/6) ':PYSIGVh¹ä#"øçÕű­¨¤¡›’ˆ…q_OB4*$)&ÿðÿæÿçÿåÿëÿîÿý0Vx‘˜––¨ÁÕÚÚ̶²Ëçó×£gF7! ÿïÿãÿèÿÿ µj© å ã*ä^ëu9 )}›l²öòüêýó:RýÖIiá,´]!Y"N%µ(o(´(%9"Áã%•-  (  ® ¦ ¨ Ë à ð ý  þ ù " Y £ ß ø Á } N f ¡  W ÖqãHÎVúŸ€Ù3Cñã5º`ø,#Ì”`;ø†ÜÆ¥§ùE®   À ´vj"Ô–sSFn1žpPñd5r/òn3KM×+ØÇË>Ïë!Z""í#Y$á&5&ú&-%,"Ä |PcÎL î ß   ² š ¨ À â   ' , 3 E ] ƒ ¹ Ò Ø › 7 Û § Æ  P m r { › Î  Z ´  ªj<ÍwYp·Ê‡UiÔ†$‡¸´¹Ý&ƒõúÈê걯ÆÚóé~@ òKKÿÙ $+÷ûÓ…í¦„ß±!W] IÄ{ŽQr²­Lï!"ª#ß$[$V$õ%$Ð#“"Œ y*ÆSÌ S   q Œ K ; B v ¦ ß  < R Y i € · Ô Ì ¶ n ¾ — º ô / @ 4 2 7 C Z h Ž ±  ’ L Ò Ê ËìSõoÔUXÛE¾‚ í /(ZqSr¬ÿÝw³ó©õS®Ár1€¯\§ö:ãûÇp‚Y ߨO‘ìPš7Àï¬ÀiÓ©Íòû( ^ t ¶ ÆùÑÊé . c ™ Ö   # 8 N i w ƒ n M  Ó ® ¡ Å ö $ : 0 (  ó × ½ º ¬ Ù ¨ / l ï¯cCrWþ4û`­…xúÅ[¥ü‹mú¥†üý‰/ È æòôˆVØX<ê9†Ê%Ǫ͢v!!w!P VÁ =g•”f$ ´#ÚJ@2•ŽKJ ª ï Þþãì . !  4 c u ‹ ¸ ì  + E S ` _ g P % å § ‡ { • ´ Ï Û Î ¾ Ÿ } _ J @ " . ( ´ Q ä »@<+UPĺÍg±ÃÉ}“‘7îaC\ZQ?t3Bè‚Ë%ïec@¤19fŸ¨²Á¡ìSE©d5Ä´ÈÎãOµá|õqµâ—öå î “ ‹ ú Cí»Ûþ  ëïõÛÐæ  < Y r | € — — x A û - ^ „ ™ Œ w Y E = 9 ; - 7 # ˜ 3 » |Ï}8g}ûˆd  B  t3G)Öã¦þ™ _÷ ð8TD†ù-ŒB)”àTŒC É©ä¿Uã[ÙÐ B4Ф£ÇâÚ¿¥}( ž = & “ Ü - t ¬ #̹‘yhP'ì¯yN3 ;O_sˆ–­ÙöòàÐò3¢  j ˜  \ +  øîèðÐ  g „ Ù ²Í7= ‰™ Õ ž ¹ Ð  Á 9 (`ù”èï›kºBí]º–A©j¦:£êV\}~+åÿB 3ÐàÓ¡ý»@þ{öÝ.—β? ¸ „ – C  ó ¨ t y { Cò¼•pM&üâ©Yß\å„J ëÐÖæùòíö1]–ÅØçô=§Kÿ‚Ú϶~eR+=>f’ ) è  G 3 à £ ' 2 U ¿ O h š  X Ü ~ ‡ºðõ«P݇=úŸAšÖךoMO”#QPlf´ ð\ag­t«i¸å‘ÿ› © 0 ¯  N t ¸ ;ÖŠ0· ‡OYB4*)0/ â†õk®lffnpgPA?Yu¡Ò÷_º^ÇU„˜pZ; þ^ ÷Hª ‡ ) ¥  í § , Ç ž Ï  s ¶  V ã — uQù_ºKÏw2ØFÊ—çsZ“ȶO¾‡> • ý r ¾ ~ÚVìðT’ × è ¼ »  Ä SÿŸ}¬°PÐöó4Öîù춇OâÕ·i œvu‚š¨¡qWH<GYx–«³·µÙ  ­G¡ÜΠxy’ðTÝoç9m¿ü 4 2 ÛÃä  q à  } Ò  S Š ä m î * \ ¶AÆp&ä›/«& O ä Ó  ø Ê Ž g ‘ } á % ¢ ½  Û » Ó ò 8 ‡ ‹Ë¤híÍ»¬r!’üN{d¹ÛÃc¹SÄ£nVXj^^„¥¦T*ôñø,I`wˆ¯Þ1ÿ{Õþäåî1xºbÒú;tÀKÇû 1 g °  b œ g [ ­ :   æ  H q Å . ÓŽDº ½ )  : $  $ D } E ‘ ³ (  D ² ç Ç 9§'íÁXèk3ûÕzî:–§dþô4°/®`™DùçßCnhQiqQäij®—‹ˆ¶Ýþ$Jw«ß 0b‡¡¦ª§¦¨¦··@Ë!ZŠÓGÎ\ß1g«í H Ÿ ñ þ Å œ ½ 9 Í C y h W S _ ° " ¬ ü  À ¬ ‘ ™ ™ · ù  * Å bûÞ®ž® gïkõ­wù¸‹(ÊI§-îòî嵘­°\ÐŽ< ÿó;Ìïæ´¢‚GÿñÿæÿÕÿÃÿ©ÿ™ÿÿžÿ³ÿÚÿû'Z˜Þ465.(8Y‡¯Çâסƒ“ïWÈ[€Ë8öÚ­EÛ]°  Y \ /    f n r Z > 8 F y œ \ 4 ØÉð 3 n V xÕJòÒ£‡[Ÿ%­KûŒTm}8®'¿_j¹+ma7åª{E0/Mb»WŸËýüè§k)俸õŸ‚x|‡™¡¬ÀÛý Û›Lþäï$IdŒ~@ã“…ŸøP•£½è†mwHÐQ£óG¼+šµxI†  Ñ   ì ¯ q T Y°–i64r±Í‚g¾"š?᱇Wòi휋z¥~îCÖÎÛ,˜È±<Ãc :[×dÄ^õmñ6_JBù½t-ìÖØñøùþüôîøúëɲn1÷†ýR™ÿÛÿêÿé 8ZgJ!ÿñÿ¼ÿºÿÖ$k¸è:±VëHæ]¯þn/¶³ŒÂGä W f =ñ¥wxë½¥¯ÖßÅ\òO£ë2±D,5C*ÒMìÖ ?UVrú\½kb"Àm‚¼Pm‚¦ÃÌ Þ ¶ Š ñ 6 #  ý ç À X (     . A E > #  å ¡ % ­ Kw³Ýþ þ$v·‰]`r‹z%ÿÔÿ£ÿ̇Æßç+§Q¿-a±w8Ž­ñ]üq¢|b9;ûñàÅ„>Òpà2v¹I?W/ÕqMˆÐÍyº~¡÷c¤ÀGàˆ–¶ ^ š · º à áS“‹káPo‘…yZ@& úôøõæ¢_È)'#à E ± 6ùÔáÜóOq¤ÉEÿêÿú!I?ÿüÿ¤ÿfÿJÿ€ÿÑ,gwe{¿hCS… ©+„ ‡c€ŠoYWxÛÿ±{*Âs%ÙkØE½‰|°é÷¼pMrÕ ÊY3¬x'œÃû^g›\  ÷ Ïoû,@6<‚æ‰=ÏNK 1 ˆ × Î Ð « Œ W ܪ„sh£Æô¥HaNî4® ˆ Ž ‹ _±&ˈÚYG6º5ÿ—ÿNÿZÿÍ:ƒ`:†G,­âZË8v Ù-£DOU`‡- ¾kÖ]±a CV;íµË&ÂÀ+6L\¼d†× Ç Ð;,…øV¼Y "$V&œ({*6+5,#,g,¦,v,H+ê+œ+<*Ò*n* )Ö)À)È)Ú)¡)<(d'²&s%"ü ²þMâ¨ýbÞ—G œ Ƨqˆ²Å/H`;—ÿÌÿ+ÿÿLÿÔ@e#U ´&IQœþZ‡uuÃD°ú)@eZe~O æÑ¼šc-õð"íÿT¼Éú7EÓÌr Æ É  ¤å4ª ''Ê]Ó!D#$ç'4)+ú.0â3L5 6š7Q8 8'8D7ó7›76£6&5˜544S4D4j4–4|4)3x32 0ò.û,Ú*#'j$µ""ðÆQÐ^¼2d Y5ô-§fDq5ÿmÿÿdÿøxo,]ðŒÖßðki+0€×úàßîÁ™ ½ÏÁ”dM^£ ”±Ø6œ/{i¶è C ¶ Á—`•:%ß> "b$1%ï'Ä)Ñ+ã.=0µ3=5­7î:7<4>C?¸AAœB@BaB|B7AòA€A%@§@?e>Ô>›>•>¼>Ù>¦>:=„=M@ŽBßDÿGHùK.MDO$PÃRmTU¼WlYZÀ\ˆ^'_¸`ÏaÎbLbÈbícc cb©bah`üaa[aËb0ba‡`n_™^(\‘Z%WdT‘RPCNÞMÚLµKI8F}C¥@<]8G4$0,-(X$| JTN } Y‡–ø×II¼ 6w‚(ÿÇÿ½ÿîQ‰Ÿÿ9ÿ!ÿ4ÿHÿrÿ ÿÃÿÏÿØÿá_ñFaÊMå '»Éu %$„([+÷/ó48x¡CGäL2P6SlV”YK\>^ÀabÞd eãghi?j‚kªl¶mØnÀo¡ppDp,pp$pOp–pÓpúqqq3qcq¦q§qZpðp£pÃqqÀrXr¶rârÉrâr§rTqjpCnîmÖlöl9kUjLh¿gecba ^Ô[.W"QÑLtFÉAE<57¡2ü-Ì( "FøH÷! YB¶ Ò*ÿ»ÿÃÿ÷. ÿ×ÿÓÿî:'?o¤Ò×ü"æÀŠQ 2 *;RG:$É*‡0E5Á:Ë?ËDI`MÙR@UîY{\b_faßdQf"gâijXk7kòl«m­nÁo»p~qCq¶r(r(rq™q3pðpÒpìqq$qq.qgq¶r rqåq‘q[qvq¾r7rŸrâs ss=s4sr‹qÒqp•pXpGoéoUmúlgjqhÒfõe-by_€[KWQàLG B=K8c3=-ë(p"ÄÁO—ž Ó Š`óJcÿúÿæÿèÿë=?8J^Åþ$AŒ½ò m ÿöÓ"þ(Ö/ 5V;@oE[J«OTsXm\6_Ab{eg¯i‡k@llm´n¡o†ppšqq¹r[rÖs/s¡sñtIt:sós[rÈr\rrr.rdrrr•rÝs3s‚sšs‰s[s9sMs„sãt:txt¤t¬tËt²tˆt sdr×rŠrŸrØrërÍrqFpnõmykýiµgNc÷`¹\tWâR MŠH^CP>6943Â-Ù'Ý"" q Íì½ò2úNÿãÿøÿõÿÜ:B<Jâ J Ž Ã ä Ý C ¾ J ÔéZ©"á'á-£4:r@_EyJaNüT9XÐ\ß_¸bd¸gTi[kllòm‹nKnãoloÌp+ppåq?qvqÑrks!sÛt&t$s¾sos/röss7sŽs½sït;tˆtÊtìuutótøuubu§uËuÜu¯u‹ut£s×rÛqùqMqpýqqpÚp»pYoûonlwjÆhyf^cm`I\WØRëNHûDU?=9Ã3Š-&Î!@R Ù œâáÂN:ÿÛÿï"6CYä•ô&Hpº|Jßû"\'V,Ù2V8€?LE¯K2O°TaXÇ]¶a˜dµfh|jkÒmmÑnnhnnÎnçnÿo"oUo—o¾p pZqr.satvtòutØtÊt·tŒtˆt¶uuuDu„uÖv!vev±vÙvÞvÙvöw#wUw^wUwvÀv.uœt¯srgq`p»p6oûo¢ovo^olo‡o}opnÛn'lËk„i‡gd›aŽ]iYTO†JkE>>þ80þ*o$’Ö[ ó ˜+Ö|¦Ÿ-ÿóÿãÿð?^€ºÄOÃ.!ܹÇ# 'ï-e2g7é=šCªJO¨TXWý\$_Ñc©f>h2ij;kkÒllkÄkÉk¥k6j²jQjAj=jj¸kel2m³oq[rýsçt†t¯u ubukuku¨uôvv7vwvÏwwpwÒxxwüx xxwÖwŽvövdut¢sbqÿpknÛm‡lRk‚j£j4iÆiïj8jþkîl®m:lýl›k‹j²i!gdÌa—].XùT O_I“C+;ó4ß.8(!"J ŽÙ þ³­û3Þˆÿü!Dpš t!Ó""ò#A#à% %â'î*_.Ž2ô8f=’C3INÞT¬YL]Q`Ac¯fThÓj"k7kukêkàk¿k8j¯jiŸhëgÃf•e°e`e e`e³fàh0jIl”níqrsÄt`u9u u·u«u÷vav¤vçw@w›wâx'xxÒxìx×xãxÄxx w¡vµu½tZrøqEo“m¤k‘išg³fjeFdÙdOd‹dÓfgµiµk—lÂmŽm‚m¯m,lÕk0i*e¢b(]YXSÐMàFÀ?v811ž+2$%FJ ¡ ÛgôÄÕÿÿÿôÿØ+Z€*Á,a-@-Ë.1.Ý013I5ù:(>FCRHzMìShX>\ä`Fcze‰gÊhýiójjHiôi‰h¤g¶fªeÉdædbãa3_›^e]ú]s]à^p`a»d7fài³ldn†puqÈsFt)t¶uu¨v^vùwswøxIx|xŽxÉxÞxÔx‹x`wäwRvPu\sïropsnfliîg§e3bç`”_]Þ]]-]˜]÷_Ža‘dhgEi°k°l¿mçn>n»nm$jÈhkd«`ô[ÝV°PkAAEaICNSEX…]la,dÄg i]jikZk*jêji]h)f¢dËc'a­`M^ø]¥\YêXVµVQUÒVkW(YZÄ]ˆ`¡dgYjl´nÊqrÔt3uvEw:xx¢y/y\yoyEyHy x¦wðw_vjuPsÃrMpkn…lisf‰c¼a^X[ÿY…WûV¸VªVˆWyXXZx\â`HcÍgá=D;Ò:¼:+9I939V:»<>ÌAÙE¹IMQVš[¿`²eniqm`p§t5vÇy&z zÆzHyéxªw—ufs$oQk eÊ`¼[ÆVíRšN;J«GJD¹B@=´<@;;:Ì;ò=8@=CªH%LOP«TÍY[^cgþjþmÊotqxr[s+rKq nnlFhåe^`(Z‰SãM÷G ?X6º.(&/C …ÍäEe›a’cÆe&eýfvgBh—jUl mno´qBr›s sPrŽrp9n$j¡g3b–]žX=S$N‰IïF%Be?®<û;m:J9ˆ8*6Ï5º4ö3Ö3ƒ3—4ß68<:ª>@ôDýIOT¯ZX_Ñd¹i‹mºr>u‹x‡y°z°z8yèx}wCt—qµmhb\_VÐQNLgGZC’@<><<;:¼8Ê7o6a6H66Ð7¤: <Ú@àDÃH÷LÃQV [5`#d$gßj‘mxo\qTq¹qÁp2nËl0iÕeÚaE[ZVO¯HÂ@‚7þ/‹'Š ¤¼^ \‘Â!fIh‹j jëkklOm¢oKp¿qˆr#sxt‡u%tÍt—sUrojl£hod5^ÏYS&MžHÄCÉ?Ñ<9~6ÿ5©4 3ú2Ö1®0·/î.Ë.W.V/V01Ã36ƒ9=#AÅGçNT‡Z´``eújüpjtpxypz²z4yáx7vÈsžp+j³dÚ^ W|QDK7Eï@Z3BFK PUhZÁ_«dzhKlnœq5qõr:påpm×kagcÔ^ÁY­RÄK/B¶:Ø3'+B#Í-÷ò Híjal€nnÝoip‚qÌss÷t§u%v/v†vVtçsÍqInfiÿeÑ`QZpSÂMFä@õ<730I.”,×,L+ñ,,+ï,+Þ+c*Ô*x*u*R*Ñ+b,û.71z5o;ÄBEIÁPäWü_!eÊlÖrvÓx´zHy‹xövãu@q½mÌg`÷Y>Q¬J‘C¿>844*0/,. .-. .D.x.³.³.ê/Y030ç2375V7§;<>ÝCˆH$M˜SQYA_+d1hìlGoåq±røryrEpËoSl{i›eNa>[CT|LeDè=5,ú$‘C%‘ gjÖlÜncoOoùq7rs„t™8©4Á1T0.½.›.M.o.™.Æ.¯.£.Ì/*/c/×01D2Ø5ã8ú=*AF.K¨RX—^ d-hXl·oiqÔrjrûr(q‹o–muiòfÎaÙ\)TóN3FÁ?07 .w&’Ø£çk2m;nêppÝrMs›twuuñvwvruªsOql÷h|b{\ÊV N¼GY@W:¢51)-L+(é(E'¼(^)*:+Q,9-1-X-,+G*˜*)Å)1)8(ñ*Î-K2Ï8®@…H,PmX¨`‡h­nútêw³yøy‹ySwyvrÊnõhøbÚ[«TM‘Fu@J:5ø2w1/§/E.·.’.w.g.%-Ú-«-‰-U-.,µ--Ó0)2£6s9ö>ÜDJ·Q¹X®_*dXi†mp©r[sÈs¨sÝr¶qOn’lJhLc¨]PWHP5IA 8n0'ä"Åj–lªnoðq r¡sìt·u7vZvëw"uìtËqðnõjdÙ^?WÚP¦HðA¤:Ì5±0»-¦*)4'¼'ª'Ã(Õ)Ü+5,ž-ª.¡.—.-,I+­+.*¢)©)(P)˜+\0;5=-D©LûU4]?e’lQrÉvEy5ygyÏxfwVtDp¸k;eÈ_ZYRhK‡E>›9ô5÷421 /á/D.À.~.!-¾-O,Ý,v,+f+B+7,.M1ˆ4Œ9 =ªCßJ‚Q¸X»^Ùd²im»p’s sÄtÁt;s}qeo±lzhÞc˜^lX Q¾JPBK::27,K&Éiýln+oÉqrÓttÖuPv¯wLw;uvtpžlÙgaYçRËK/C,<5}0þ,œ*<'é'/&`&Ð'd(À*+€-6.g/O/.|-{,ù,,+L)ï(Ð'¬(„)µ-ö2¶9é@üI$Q8YgaÞi oýt%wÅx£y°x·wðuqçlýh>b’\ÿVÁP2I£Bü=Î9B6—3Þ2G0†/‘.Å.s.-¡- ,_+Ò+;*i)Ñ))“*l,ò/`3i7s=8CWJŸRY_¦ej¬n¤r;såu¶uÍu«t$rôpymÝi¬e^_¯Z-SaKúD99EÍM_Uc]«el9pòu,v´xSwÙwƒu;r®n™j¿eÛ`û[TáNHGŸAö<Æ9.5Š3=0â/Ñ/ /.Ù..-L,­,+Q*–))1)8*Ø,ƒ/Ö38=>CûKR˜Y¥_ÞfDk.oÕr‚u1uêvquet„rƒp°m€je*`Z—T(M:F;@¬;`hÓj´l×nßp‡rs s³t1u°v ujr¡plkÖf]^èWìP2H @K8„2‰,ê)Ð&ý&#%.%I%0%ß&­(#)¨+Z-!.R//*/?/:/¤/ª/S.,,·+V**+*d--0|6>;éC J2RZ a~hänr´t¬vžv”vÈu=sup/m&häd–^íXëR5KEq?¯;F6Ì3ç10/…/õ0$0/ˆ.§-ß-,{+­*N)E(„)5* ,•/3d7°=êD¯LqSãZìbgÏmmqt°v#wavÑv9t¢sŒqSn¦j•fÁa¶\;VOÐJ§E»hÐjtlmn‰p:q‡r+rÕsPt–t„sŒpLm•hfb=ZQSKaC);‰45.õ)æ'j%_%'$³$ï$ä%o&!')2+,¨-Ì.°///Û0d1&1<0è/Ä.-^,+í+Á-Í0N55:@¯GKNÏV]ée[jßoÙr>t}tßu–tËsÐqbo2kgŸb\U5N•HaBM=B8 4–1U0p08141Æ1Û1–0®/Á.É.<-n+ú*†)?)#)6*ê,œ03r8ç>âFcMÎUR\Äc2i‰nrƒtÁvÖvÜvŸuPt¶s'qmÊj£fqaú\èW’S Nði#jlZnupqqWr rˆs‡róq”mÙj”dÏ^U²N7F–>B6á0+'%-#Ú$3$'$}$‹%%·'*(ï*à,-¬.²/‡0¢122·2m1X0b/S.--.b03å7Ò=²C²JÿRyZa“gƒlùoúr¾s¥tÕt§tirÙqžn’ke|_oXxQýK»E\?9Ž5b1¦0Ô0Ô2?33^3W2p1S0/j.‡,ø+,)x(±(#) )ß,i.ß38Û@ G|OvWQ^re…jåpsv v½vìuîuÍtás|pßnUjðg}c…_4[ŠXi|j¨l9n8o¹pap|qQqÍreq.omkDgTaYãQ‘JBŠ:`3-[)©%Ø$o#¡$6$G$‰$š%%¦'(¼*¡,-3.S/f0µ1É2×32ï2!1†0³/œ.è.J//É2¡5·; @‘GªNæVp]ýdEjDmôqKrsìsòts3rºpLmDg¶a²Z´T^N9GñAÿ;Ž6×21ˆ1l2÷3Ü4F4ƒ3Í2º1M0/j-Ã+Ï)ä(¶'Ç((*)Ó+o/c3Ì:ŠAtInQJXÔ`]fslGpsØuTv/u–u¾ut!roìm&jŠg dKaz^ìiŒjskÍmºo6oµoµp¬q q[o”m…húd^]}VMÐF&>Î6Æ0c*à'õ$Õ#î#ž$f$$¹$Ô%E%¿&ï(’*S+„,y-ž.ê0j1©2È33,2¨2`1Ã0Þ/þ/0/1.å0¨38=GD6K!R’Z`Îg|kõoäq_r¶rµsrÁróq2nÀircŽ\xVOõIôD)=¢8x3¦21Ï34l55¢5F4~32+0È.ð,µ*y(Ø'€'.&›'i("+F.è5';˜CtK*S[aÚhUlÕq|sÀuWu1uu*t¢s%qpoOmˆki7g8ei i½jölÕn_nçnùp!p‰pqn%kÌfäaœZCRÎJÅC ;Ò4 .b)'@$Ð$T$G$ÿ%%&%8%”%î&Ý(4)š*g+!,9-š/ 0B1Q1È2$22#1Ò1D0…/Ë/‡.È02L7L<[CIP¬Wæ^ªe™jun¥p&q^q1EyM\Uƒ\òcüi0ï1^1ã1è1«1 0_0/(0Q2{7U<B`H•OiVU\ôcÒhÄlýnœoöpp¬pÁq9oïn i¤dõ^ÖXÒRÍM;GùB@=+7Ä4ç3l4;4Ž55ƒ5b54$3A1”/ž--*²(­&ý& %$ï${&(+-2#97@!HPVXQ_ôeÿloásFtFuttrs€rp|onÖml¢lgvgíijëlm5mvoo^nÂkyhkb¯\-TL}DÛ<ì5ý/&*Í'%í$½$ô%4%³%Ë%²%›%ª%Í&E&ï'”'±()*~+›,ˆ-a.*//ï0¿1%1Y1G1$1h1^3!5±:s?DñJÇQW_]Zc›h,lm¶o,opp)p0p|o m0iAec`9ZëU)OžJIDä@:Ë7t5&4ñ4—4¶4‰43³2×1û0f.,B)é'ó&B%Y$_$)#Œ$Ÿ&*-.Ž5,;¾CªKÖT\&bæi–n rQsätçt4t's8q¬po n“mplºlof¼ghFjk¬lolÝn¬nïmêiöfj`PYgQ#IŽB:3G,ó)a&G%›$û%m%«%ï&%Þ%®%“%—%Ú&*&Š&Ÿ' 'õ))Ì*s+@,B-^.u/n000ß1Š2!3446}9a=ýB H'MŸS5X©]×cwgÊkŠm8n­næovohoÁnlÂi-eÝav\øW©R.L¬GlBÄ=Å:)75Ò4Å4s3Ä32_1p0u.ç-)+ (á&ý%?$2#2"ì"I##ï'A*Þ0ý7H?DGSOÇX7_¤fïlq9sUt}sžs¤rÁqo_n…nmllyeðf;gZhöj¢k›lKnTnplýhjdh^V÷N³G?©7‰0ÿ+,(L%º%n%;%Ó&&!&9&&%ò%Ä%¿%Þ%ß& &O&Û'Š(2(z(ã)¡*¼+Ê,ã-É.á0 1Ñ3j5›7¹:ë>aC GàM$R(Võ[²`3e0ilfmØoo'oxoHoŽn–lài¾fõc[_Ø[>VP{K$FMAs=9§7*54 2³1ž0ž/“.q,ó+V)|'š%ä$0#""!å!_!õ"„%.(-ª3¼;ÇCªL&TÅ\§d\joïr‚sÄr³r¾q×pnzB†GYLYQHU¹Yä^cb½gfjÅmznuo|o˜oâo¡ožn–m jŒhve»c_Z~TÔONIþDù@;Í8'53.15/ø.Þ-î,É+])Þ(1&$é#J"2!N! t ½ é"ú%-*G08&?ãHpQÅ:5×30P.È-y,+q*(Ç'T%Ö$k"ó!ï!' Ó ( ( !¸#a(-¦5¸=eFNâWd_¡f,mOpÊrJpïqpn\ljkRjÕiÛii¾cbùcõeJg.hâjLl±lYjd_»XôQvIAE9ä1¡+¢&é%…$$“%C&b&é'*'™'ß(((9(0'£'L'Ì(S('ˆ'9'W'—(?(Ç)¯*0,.Â37A<-@ðF?KãQ…W[“_Bb^fej'mÇoàqvqq¨qSq|qGpºonNmlkkyjsgÓd×_ÕZkTNQHwB!h2iÂl(kœi+c]^WÆPbH@Z8þ0Ã*ì&{%[$$Ž%O&‹'0'¬([))˜**•*Ñ*£*—+c+è+*Ž)ÿ)¿))£)¹*b*—,–/€4‚9T?D¼JÏQ+W%]aWdàgljÀm¢pfqðsCs@rèr3r.rqŽp›oŽn¶nwnm¤k®ive` Y©S»MYF“@-:5`0Ù.&+Ô*ª)#( '&D%S$M# "4!Ÿ!A v ‚ }!?%<*v2¢:XC(L8Tú]fdKloýq®p5p=o@mikaj$i¥hÏh¿i`•`Ša»c&eDgwi3k jÝhb ]VVOFê?&7Ç/•)ñ%Ö%#Ö$f%6&…'1'ß(Ù*+.,*--¦-î.H/|0/..-C,~+¨+/*¡*î*Í- 0c6A;ÑBnIOÛVá]#cUg„jål¾o-qrÍsÉtÒtÃts'ròrìr™rqNpÉp»p­pºonmâiíeb_YRDK"D=7h1Õ.=+")Š'“&l%t$þ$v#ç#"V!ï!¤ õ ~í ®!$Ò)õ239ìBÂKÐT™]dkîoóq£pp nùm jði–ihFhShµ^å_`kbdUfÍhjûiëfÖ`[[TÇM›Eš=ß6.z)%I$Â#µ$M%*&'H(B)¦+ˆ-s/40¼1Ñ2Ê3´5d65³42­18/Á.®--r- /d2â9>ÿFMTO[‹a¸gækÉnÖp q¥r«sÜt•u`uTt¹sâs s­s›srs'ràrËr±rërpámgidco]ÂWPH¹Ao:þ4—0,$)ä'@%»$k$#¬#}"ó"q"7"!€! –!F!š%;*W2˜:PC!L$Tá][dRlpq¨ppnßlßj°iAh¾h h™7ˆ2F-´*ï'¼%Õ$(#­#S#V"ö"Ÿ"Œ"k!î!‚ ð!‘!Û%s*ƒ2¾:vCKLQU ]{d^l oéq…oïoØn¬l›j^hàhfgÏh-hËZË[a]S_£b‡eg`irgºd]kX(Q»JžBÊ;>4A,'Œ$G$;#Œ$h%€'?(O*,?/j2³5ç8¿:ø=0>ùAbBLBJ@L>B;­9G75·5V4³6Æ9¶?xE"L3SdZ„a€fýlooRqIq‘ris#t9tëu-títËt®t¦t½tÃt÷u]u¼uèuÖv&u tór[ocjteŠ_OY(R$JÓC‡<:6p1R-Ú)ì'Y% $*#p#T"à"š""z"!•!!¨" %³*´2Õ:†C^LiU]€dKkÚo¨qPoØoØn¸l¥jhhôhh1hÁi‰XgYg[Ç^¡aìeEghþføc\LVÿP¥IŠAÃ:E3k+Ñ'$$<#¯$©%à'ë)c+ª.i2-69ü=†@\C3E\HIIFïDªA¹?<÷:ö:t9Ï;²>(CLHˆOAV \Ñc}h§m­p.qæqòrYrÅsÁtœu tít¼t€t_t¥uuÐvvvÜww wew vˆtaqÿmÄiyc¼^!W[P/H¥A$:Í5 0½+ö(©%¹$}#n#:"³"w"m"d!û! !!Ä"<%é*×2Ý:‚C\LjU!]d?kºo‹qHoüp%o$mjìiici+ièjÐTvVLYv]0adìfÏhÑf§b[®VLOõHÞA'9¯2ñ+‰'$:$$%%V&Å)F+X.Q15ß:S>½B×F IcK½N“O|OMaKHEZC0@þ@S?ÃA‡C“GûL˜R¡X¬^Êdöi¿n.pZrrArr¯s{t[uutÈtUttuPvMvíw,wkwvwÊwˆw)u|s·pZlìgòc\¥UçNnG@99Û4“.Ý*´'%?#Ÿ#"O"!è!ë!Ÿ!h í!Ÿ"&%Ï*¦2:'BýKþT®]cÙkJo!pÿoçp;oTmTk(ièiëiãjÊkØP RõW [·`C{HK¿O^QâTÙU¹UÄS„Q€8<1, (-%Û#¥"É!»!g!-!7¤@VH«PÞYX`ig¤kMm‚lŽl“jÌgÏdßc/cMc:d•fH6Â=†ElNUï]sa–eÝdšaIZT?MŠF²?‹8 1Æ+`( %‘&Ž'g*¬-û2à7º=UBÃHŒNÑTtY™]%`˜b¥dÉe½fÙf|e€c°bJa_Ë_?^ø_Ç`qb=dtgLi÷lEnloàqPrrÙràrhqþrPssis«sôt$t+tguuµuïußuèvv2vnv¼vÂv°v u˜trŠo:kÊfF`†YQ±I‰A9u2¬-È(s%J"Ê"Q!Ä!ê!Ñ!À!/!~!È$Õ(¦/¡6ù?¤G¿OÀX;_Zfyjl_kck#hÄe-a¤_o_?^Ú`3aø0ß8_AJXRê[!_ódédKaÍ[U7N?Gn@X8à2,2(ÿ&z'š(Ò,¬0t5Ò;GA=FÓLiR‰WÓ\‘_£b­d`f fÓgíh g©f—eÄedSdddœefWgôj lEno¤p†qhqÌrRrDqµq9q\q÷rqrÌrûs ssXt2tátÞt‚tqt¨u uou­uu[tÜt¦sÊrñpmØid] UàM­EE=š6š1,+4'b$a#Š"‹"g"!ù!Y!±" % (à/Æ7&?ÍGÁOX_eÜi!k€jQif5aÓ]sZWY^X1Y-Z¯+3d<ÉFÚPY^d?dUb´\\VŒODHvAp9æ3y-5*'m(§*D.Â38Ø>äE4JóPYV][R_¦b;dÜf=g„h!ii}i£iKhÿh­h`hfh‹iiŠjokwlånhoÐq$qÙrQrBrcr/q¶qEqqNqˆq»q¹q¦q…qÍr¢sZs`ss sHs›s÷tDtStEt tsÀs€qÕoþkâg›`æY­QlŸm4m­nBnïo¦pBpÞq©rCrªr¹rÐr»r¥r}rYr7r=rqmp¹p'p pNp”p`oçoro]ošp/p¾qpßpªpðq6qˆpÙp4m_j9d@]nUyN…GÍ@Ð9÷2Œ,Ý(%÷#î#V"o"4!o"=#`'g+Ð3:³CHKRrZ¬`ôf‹hYj:gºdG]›VâPIëE¸AK@ ?Æ\&£18<FÌQ¿ZbHefçb°]›UœNÌG?¨8Ç2@.Ï+<,].ï58:ÏAŸH’O^Uå[)`}cÚfÂgËh½ii­j7jžjåkHk¡k÷l)l4lUl°m1m}mön²op$p•qqXqÃrrtr™rr’r²rÖsrár;q\pÀp‚pp{o÷o/n[nnhoo†oƒonÁootoÚoeo l¨iådt^MWPÄJJC8;ñ4T.`)/&©$u#Ã""!f"£$4(´-4ÿ<ÓE]M9T{\ŽblgŒh¶jfÌb2ZORÍKACþ>š975¼#[.8æCÚOQXase!hd²`WøQ>I÷B;4Y0¬,À-´0K6Þ<ÈCÕJÄQXd]éc;fViiÜjljWjÍkEkœkÄkÚkülRlªlÃlåmLmµmÉmýn€oPp3pÐqqqqIq¦rr%r4rfrœrðrÞr_q¬qIqqpÄpon(mçnBnÄn±n1m–mXm©n=n·ntn[ldiþe_ºYSHLÁEx=Ñ60*s'ƒ%$9"”"!–#S%8*/?6ê>âGdOLVp^]cÙhij eù`FW-N×Fu> 7t0ä-þ+Á« ¹+]5Ý@ÌLsV<_®d4hBeðbZhSçL“DÌ=À6ä2Ü.¨/W1‘7ý>E>LR¥Y›_WdÀgÖjk?kÇk™käl*l{lqlk’kbkbk7kEkškùkålllm{nçppÉp¹pŒphp±q(q`qŒqÍrr‰r°r‚r&r rrq²pãoào n½nénûnVmplÁlªlïm‚n mðmîlï7G1!+K'ø%;$8"[!÷!Ó$&c+‹1C99AAI¡Q¤X°`Ve9iki=iYdJ]›S§J¬Až8@0ª)N%Â"Á×(m2ª=›InSÇ]®chGg!dA\êV“O G„@}9m50­1239^?œGM½T$[`Êf%ikžl.lÊl±lÚlðmTm+llk9jAi iii*iuiNiiükKmn oÃpoùoÄoÿpupÃq%qr$rÄssrÊr°r™r°r^qžpŒoŸonÂnpmŽl¢kùkêkÿl~m.mjml,j¶föb¿\V“OlGø@M8§2M,(^%A$" !Ô!ñ$­'S,ï3I;žC§KÏS÷Züb\fjDiIhwb_Z´O÷Fo<Æ2w)Ú!¦uëð%D/#9ñE¦PJZ‚`¸fîg eŠ_YQ‘JCCV<7X2Ç2ü4G:@(G·NaT¸[|afji\k«llèlûmläm#lªki·g¼fdÍdƒdpdãdÚeifMh(jVl…nfoGoºo¤oåp@p‰qqœrQssxs”sUs1ss4rür\qJpKoknÅn-mJlƒkÚk¶k­l&lómbm‘lXkZgôcÊ]MWO¡H3@8ä2O+â'ß$r#7!]!Œ!ä% (M.•5”>)F'NV`]Fd(g}jph€fc_+VÂK¿Aë7ý-=$'–*ø"+’6=AÒLÄWZ^kefÜfÂa4[ŒSÕLËEò>‡9V4‡4_5:`@;GõNßUt\:aµgj llOm#mImKlÒl¹kÝj«hVeybÔ`º`(` `Ç`Àa‚bÂeFh)km¨nýoÒoÖp2pwp¡póq~r4rîsZs‡sishsas•sZr³q™p¢oÃon]mhlk‘kJk[llômgm…lhkÛhÒd£]àWvO÷Hq@±8¾1æ+=' #P" u!!Ÿ%*).0H7ç@«H£P[Xì_½fhlj®gÐd`\RßG¡=ƒ3Z(BÏ÷ © ÖñŒ'™2 =IHUS;[bÎe-f¥b€]¨V"O‚H»AP;¼6‰5³5ž:&?2F‘MxTT[`“f+iHkqklal\lSk‰jÙiLgºea“^:[JZTZ0[s[Ñ]._ bOeöi–lÖnoÔoûp„pÅpÚqqur#rÕsWs¦s»sîttDsÿsUrBqcp™oío-n,m0lkÒllæm«mçmûlÞlRid•]rVÞO?Gn?i7G0f)µ%˜!ç æ­ ×!­%µ*Ÿ2s:ZBùJþR™["augh@išeµ`ÜWƒNBõ8¯.’#¸¨. q ‡æø#Ž-Í8¶CãO'WÉ_ÿcUf]c¼_ÛX¢RkK¥DB>P8¨76R:>9E K¿RÍY€_dúh€kkklk¢k’j~i f¤dOa ]5YuU«T5SôUêW"Y‚\_Óc÷h kàno‘oÊptpÍpýqAqÆr—sut3tÈuuOuUu{u)t“s“r¸q¿p»o°n‘mÀlùlímBmìn_njn²mÆmiwd”]VCNeF(=à5·.ü(B$/ ›å÷ Œ!¹&O,#4<œDûM+TÍ]8bñgÇgúh{c–]XSI4>Z3Ø)³€v ð­ …ñ8?)93¥>¾J/St\`HdÀcÜa‰[BU´OGûAÖ;±97y:!<ãBHANúUo[;a,eh:hòihÕh¼gme¥bt_H[hW^SœOrM¯M.OQrTàXK\¥aKeÃj'lÐn¦ooÌp6pŠpöq—r‰s‘tŠueuâvPvhv¡vduøutMs?r pÞo¸on”n®néo@oloHo¨n˜mEhÞc’[ÝT¨L~Có;¥3›-<&Á#ÿÎ-!(#(S.Ë7d?)GO^VÉ^‚cföfeY_LWãMC@8Ô.@$`wê Èå? üoë$¨.“9ŠENõWð]=ccïc>^Y!R…K÷E­?;=8: ;g?ÊDjJ±QW\Ú`Ãdeešfme›eicáb^Z°VQMÂIŠGµFÁHëKORSÉYH^ÉcÒhÚkîn6n¯ojo“o½p p™qrsªt²u†vTvÔwrwvw1v]u«tÅsÑrÚqàq2p˜popdpŽpÃp£pñolm[h;b¤ZÈSJˆAÚ9°1­+%B" › •!â$™*·1¬:1AºICQX»_—bÚeÙcía¿ZaQÑF°<×2Ý(<§yþÅ‘¢ä QÍ£þ)M3û?TIªS0Yš`ˆbÙd`S\vV/PIJC>R::ˆ:x=]@GEfKQVuZ3]Ô_T`‚_ì_§]ù\TXóTõPKTGnC‚Aé@ÆB•DcHÒMµTZ/_äeŠi/lm n n6#ì.^9“DqN©V@^&aÐdÍb®_ÌYÉTiNG+AŽ<Í;=9ð;n<…@EE.KPJSöWIXµZ3YôY¡W½VR·NöJ,E/A=;¿:à<»>HB`GMˆT0ZÅa/e i\jùl¦mWn%nÁopXq3r/s8tKulvQw7w~wtw vöv®vIuitKs$r"qµqqÆr q`p¬m¯j9d&]ôVMíEw=<5Ê-î(e#" ¨!ò"&D+*2Ÿ9œA*H·OÉWW\i`Òaa¯].WcM|C»9/G%üéÐ ¬›q½_Ëv vÍÝ(ö3»>ÖI©RSZÙ_d"c¾bK] XLRK~E?è<Ü:a:t9á<?jD}I-LÈO®PêRƒRŒRWPqNKPGýC½>ÿ:ê7%5þ57¢9&<½@«F®M&TZÔ_îdVfÎiYjálˆm³näoÚpÑqÃrÍsÑtÜu¢vZvœv·v—vÑv¥v0u s©rZq]q qq põo™n$j„f—`cYýR2JlB~:¢3«,O'#Á#("%#Õ%t*8/å7x>REqMSÎZ`]àa_õ^éXÛQ|Fë=3 ) °¼ ¤„:1½¨X àû#¾.9JD­NeWŠ]Dc^d³dØ`\IUúOÄIaBÒ>':Z97A89=]AxEVHOIµKKK_KwI·G‘D@Ÿ<»85 1z0W02S4J8;ÖA\GhN+TÜZM_b#e2gGiˆk3lÐno)p2q_r€s¢tuPuÄv3v]v¿v‰u÷tÁswr\qžqPq2p¬pmÿkÒgˆbì\iUÚNVFæ?e7£1*x&Ï$$*#‚%´(’.u4¢<BøIíQ°WØ]O_Aal_\>T|K¬@¥6Ì-2#!Uº ùÝŠTßSѵOÉ (Œ3‚>ðITRõY¡`Ãc¢e¬bã_§Y˜SýMFµ@î;Ú9#6X5÷5¶7Õ:­>*ABžCòCâD/BÄ@±=)9Å6;2É0,ñ+Ý+-¸/ù3ê7<‡AÜGúN5S¼XÀ\d_òb£e‰g×jk±m>noäq*rvs{ttuu±uäv&uµusÀr~qXp‡oÕo1mìl ièg bT]TVæP‘I Bª;Å4w.½)v'3%^&<&j)-“4#:ZATHNOV,[_<_­`ž\äX NÐEO:–0Ú'¢¯w ð p1a}Êê (Ë ’žb#-¬9D#NlV.^;b…fŒe‚ca]“XnQâKDX=§9 53Ç2=2ê46ƒ9:å<<7º1/,§(²'&}( )u-Â2Ú9Ç@FÍNTZ¸^a`K_æZ‡SHÙ>Ô4Œ*Ì!Î Š Ìf"óìÍÈ×l5äÝ'¾2d=}H*PêY‡^ïdeˆe,`ƒ\)UåOäI4AÞ;Ø6Ì4e21¡1 1×354«5n5C5B4Z3i1W.ß+ì)'%$©$M%–&å)Ð,È1+5™;@ÁF·L“QØVÛ[_‘c=fÔibkÂm^opwqúst!t‹táttls¥röqcoclÝj¦h€fd;aß^MZMU6PRJñE˜?æ9¹4:.ò+î)K)S)(+¯.3ß9g@ FWL±S±Y]Î_`aE_;\óUÆM.B8%.Š$Ê ®RðIvÓ錋£–% y®Ž!µ+p6]AeK/ThZåaûdÆf|cO_¶Y¡TƒN:Fø?Ý9;51Ô0£.Î.-Þ.B.v.W. -0,g+)¨'Ê%¹#ê"ÑEªLƒRïY4^Sc_gj£lÆn¾op_pjpqoÊoIm÷l‰jg˜d`3\XƒUgRWOfLŸI4E@ <95›2â/ñ.h,é-Ô/37F<ëBG•MSFYT]O`h`²aµ_]UýM9Aó7÷.m$Õ/ n¿*zÏ?¥ð!â5QÙíDæ Ê q)—4+>øHQ>Wj^Xa¸dNbZ_Z…V·R!LçG)Ai<µ8³5ë2î0^-+F)N'Ì&$‹"ÿ"0!²!à!è"8"t# #s$Å&[)9+ú04]:?ÏFZLìS0YK^UcRféjplwnXooäoÑo¬n«mÕlj fùcï` [ÕW’S·PkM.J/GTD?é;è8m63Ò20Í0s02G5,:2?&D‹INN5TY]Ê_Ïa:` _æ\QW¢NÅE:Q0ê(@â¼ ÿü’kïÑG@‰•@˜þ+ íRû!è+ÿ7A¶KIR|Yú^¶cÇdvc„_$[’W-S1NIKD?;[8 5R2/,G*%(!&©$í#à## #T$G%6&')+-¼0,3˜70<*AkG’MÀSÃY™^c^fíjhlenCnÖo…o&n¬m^lTjYh!dËa{]QXÝT[P=L¨IEÚB ?W;r8H5Ê4²33;2‰3R4]7Å;ÑAPFbKP¤UŠ[/_ aëaìb8_ÿ^ZXÈQ”G(=3)ù!̹Y °á?ÖO>xã±qALdæãg€  Ʊ_$o.ž9ˆCÝL6SîYd_ïcdÃbc_°[‘XžUAQ`LÄGßCˆ@ =F: 6Ú3}0Ã.r,ç+)ë(¤(j(g)*û-.¬0Ñ3I68y;J>BBTFµKðQ3Vc[j_³cög,j[lGn"n¸oInÀn!lÊkËiògÔdaK]X£TOÉL HQEA®>Â;9f7é7½7K7¥7¨9';>þCBHgMQÄVÔ[*_§a¡b `þ`L\îY,QšHÓ>O4Ò, #Ig _#eh3+ZŸﮘM 8‘]P &_"%ô0š;ºE­N7Tr[`HdäedÌaR^¢[mX¨U1QL‡HwDèAt>C:Ã7µ4Ñ2Û0ü0.ý.Û.°/«0ë357­:£=³@9B°E@H|KùP+TxXÍ\ü`™d)f÷iÒk¹m–nGnÜnXmÉlˆk¢iÔg¹daa \¶XSVNÙJóG Cë@Ù>¥³GÆO£U“\’a±f¤hh,eÂd a¼_É] ZVCRO K–HƒECBÔ@„?>ã?O?r@gAsCnEgHDK„NØQ²TVSXrZ˜\Ó_Da™cÅeŠg7h³jbkâmjnNo nèn´m¾m kQiJfb¤^…ZOV,R0NþKÝIÑGôFôE²E:DÙE‰F[HI’LNÊR¦Vü[%_a bma¦a;^ê]WèQ­Hx?5-6%͹£“ Ùç°Љ‡¶׋~—²`t\! bØŒ hfS Ö*£5i?±HyOU²[%ae˜h_gÀfÑd›cJa¥_Ü]+ZV—SNPaM{K=HÔG¦FÜGmGçIBJŽLN„Q*T+W6YÞ[ø^_Éaxbÿd¶f2g†h{iWj2kDltm»n¤omoloOnqmÍl6j_gkdV`º]&YÏV‘T Q›OþN}M…L:K™K!KÄL˜NDO”QÏTX[ì^¿`Ö`Š_å]½\ŽYxUýOFÈ<ö4%,[% ^°U ½£Ø•Ó”Îêõ´x¹²8n{?-Q› ˆË¾"+å6›@œH¨O»UQ\ahfªhÔiôh‰gqeËdÂcMa‰^ß[ëXÇUÕS˜QQPTO§PNPæRbS×UðXZ–]o`&b‹dFfg2hVi1j9júkœkãllFlÄm¦n¸oœpTpJpo>nŸmDk¶iEfªc¼`ó^n[ôYôWþVŽU-T-RîRIQ¼RLSTÚVwX»[i]å`M`ú`þ_3]Ç[XÚSóMÝDå;~2M*$ ‡t \]ºÔð£¨øöÌ–‚¸ä¿(aŠs9 6J#v ÎÄž#[,ë6ð@G½M†SXÛ_c|fôg_g0eÏeZdéd›coaš_\°ZÊYXWWÏX[X×Z5[ª]Á_Ób'd£f¾h•i j¥k kckpk¡k­k§k}k*k&kal9mLn[o1o_ofnãn”m½lÄkiXgHe^c‰a³`^X\Ý[[ZX¼WóW:W‚XY]ZÀ\E]ó^­_ ]Ç\DY®WÙT}PáJDBa90k)"©;% ]íGhûOÄÌáýЛ¬æýÈ/\“®‰.ÿîÿó?;Ç'W< œª¶#¶,¨6>ìFLJQ\WP\aËdÇfËf©f°f[f®fÒf°eÊd§c5aÆ`ì`K`§abScÊeÝgêi÷lmƒnÇooMn´nlìkðkj izh°hˆh˜iŠjµlmOnn¸nço.nýn¾mñmkÔjŸi7gÉfKdàclaÔ`]^ß]ü];]X]À^o^ÿ^ê^¥]q\HZ5XCUR LÏFâ>Ý6{.>&ð àÆ6ã ö)}ÿÖÖí¬ˆÕûÂIZ„¿»cÿüÿ¼ÿë<ãóÁ} ’í-# +i4e<{C@HLÿQŠW[Ê_äa°b¸bµcidhe¹fšgf’eîe5d²d×efgLhój“l m…n@nÙnZmÀl0j€hofsdÀcb#aa"acb¹d.f gºi3j kœl”lþmam6mlbk§j|iJgìf¹eZcÅb`q_;^?]×]¯]B\€ZÌXÐVuT°R€PeLzGÿAF: 2I+#$û5÷Å ¦‡Rƒ 7Y¿‹’·åòܹZXl£¶7ÿÓÿ½ÿü{~ ›ö ´ç8w!h)o1´95>àCÇGÐL¤Q‡VÅZ³]Â_,`›aÈce?fôgþhÀhËhÃhªh¹i2iÒj¸kšlUm!m=m B6FÄKO5R3TÛV¼XØZ¶\Æ^J_}``áaEa­ata`#_i^\ÄZsW×T{QMÕJ¾HIE¡D(BÚC]DGFH€JéMJO©R TVWVX‰Y0 ÿÉÿµÿÈ?§Íõ” ‚ AÌ`c#Î(¿-0=2ô5Á9>=™B[F–J(LPNMOªQiRäT5U.VWWWÅW‘WUÉT§RÛQNjKGûDrA+>;Ä9F7ø6Ð7U83:8<>6@uBÌEG+I%JKúLóNNÓO—O¼OÁON¦M]KìIsF§C—@Ê>—<¬;#9´7§5U1¹-å)$BNn‘ C°lãéìfÃÔm}?蜇–“„YKl§×373@E=&ÿÿÿÚÿÄÿ¾ÿÙÿö%‰1òß¼ âý¹âc!â%œ(­+4-Û1C5[9Þ>6A˜D”F\H=IIJ4J¸K~L L´LžLAJûIÒGæE÷C8@I<ã96]3Z1.£-q,p--ÿ/÷1¨3»5à8+:y<‰>ƒ?ýA_BXCyD)DËDÀD¦CÝC/A¹@=¶; 8˜6q4Ì3a1³/Ñ,Û)‚%p!“µÞHÚ‹ ã™^U +Ïæšƒ²[fCò·•‰ˆoV;Gv­Î%)ALD%ÿòÿéÿæÿÒÿÍÿÕÿýc^TM“ O —œé¿ºW""$e&¯)w--1W5l9-;—=¾>}???=?]?°?•?B>2=4;z9¯7'4|1w.~+»)&ä$®#£"Ð#}$l&D'Ù)¿+±-Ê/ñ1ä3Ã56\7%88†8á8ž8]7‰6»5S3Ç1×/Û.,¨+V* 'æ%O!¿úl€&· & Ö~­wMÝœdir*î¾°­“mB14Y†£ª.7:2,ÿþÿìÿÝÿËÿÆÿÊÿÚÿäÿñÿÚ RQ“Wä¤ @ |J—¿ƒùf"7%w),›/y23j4}4Ž4¿4w4Z3¸2é1‰0J.,¦*''|$”!ÄDÉïü v$µ1õ¸!¦#ª%'c(º)é*£+…,,m,T,<+£+)ì(Ì'P%Ô$*"¯ ÙäGgQPçù U R ¤†‡×ß³ lc€Ñ4^9æÃ½À·‘\)+Wx‚z .=/ÿìÿÓÿÉÿÏÿÕÿÝÿÝÿàÿßÿúiÛÊØ2cÇ þ G@S:µÎóB â#&'î))ú*n* )À(¿'›%ÿ$“"Ï!°%mЛyöZ¦¡Q¸¹{2ä-Jß t!!1!T! ±ôFáI£4Ô ò L  ö˜¹Çû;!ûè•]S‘à!<ç¼ÇàܸŒ\1'2N``Sÿê ($ ÿýÿøÿçÿÒÿÆÿÆÿÎÿÔÿÎÿ¹ÿ£ÿ–ÿ¢ÿ ÿÚ&ÇnJú<3  2¼ïå”j2 °P??‡¨5ß+}^ ” - 2 X¸ë_rt Á  r õFf5»]šÌŽW«Ïm’· Õ ý }!#&COO#?gPmmc?<i·ù éÍÅßñ߯…`?67GWYJÿÓÿæÿõÿíÿòÿéÿËÿÀÿÇÿÖÿÜÿÊÿ¸ÿ¾ÿÊÿÆÿÂÿ¬ÿØ.Ðjh0B(V š ‘ ï'èËlG•Rêèì‹7 Ž Å Üôcú ÿvþ%[ ±“±Û  ü ½ ‚ˆ²Ñ‹R © ÷ Å dàtoš(ÄGˆ™ž÷Œ–«Æ±~I36hªÞîÝÓÏ×åöðÖª‰saXIDPUEÿÚÿÖÿèÿïÿâÿø ÿìÿËÿºÿÃÿÙÿãÿ×ÿ¿ÿÿƒÿpÿXÿTÿRÿzÿ¹ e¶˜Â? ½©P  ¹ i Ó ) $ # Í q Í /]‹‚kLl±>²^ZŸ r÷…!µDßX¾ô8JSämïCŠàL÷·“h™ÿ¤ÿ–ÿÊ1r}h>'5TŠÂáæÓÎÎÒÛçæÖ¹œ‰‡ƒjLB9 ÿïÿÞÿÝÿñ #ÿéÿó ÿèÿÈÿÃÿØÿùÿÝÿ­ÿ–ÿ¢ÿÂÿÜÿËÿºÿÄÿö4tˆ¬ßfí¶o*µCuIþˆ¬Nò‰´Wð«}mP7 ùöû %Ae~žÔùôÿÿöÎc)4RR@û£Hÿûÿéÿî/ŒÅ½}J59b†ªÊØàÝáàØÏÐÑÑŰ¡›zM0ÿðÿãÿÜÿáÿõ  ÿû ÿøÿÜÿÑÿéÿúÿ×ÿªÿ“ÿžÿÀÿÖÿÕÿ¾ÿ§ÿ©ÿºÿÅÿÈÿ²ÿ¸ÿÝ/Ü0~ÔXdf!ÇUú¶kH9HHWm“ÁÞîÔ©uYD"ÿèÿÎÿ¥ÿˆÿƒÿƒÿgÿOÿUÿaÿYÿBÿ%ÿÿÿ8ÿƒÿÕ ÿäÿ¾ÿµÿÊÿýE™ŽfMF@X~®ÙëëÝÜßçåÖÅÀÁ¾·¶ r= ÿúÿôÿñÿéÿàÿãÿð"(ÿòÿñÿßÿÜÿîÿÔÿ¦ÿÿ¬ÿð#ÿðÿÉÿÈÿö/D;2)(5:Y€Ò;¤ ò}º`8)>CMTn Íêתta[D, ÿìÿÓÿËÿÎÿÂÿÃÿßÿøÿöÿåÿÝÿáÿç2M9 ÿêÿèÿñ"qª­‰}vnkkjUXx°áøùçßàïòÚ»¯±µ¯ |M$  ÿÿÿïÿéÿëÿçÿïÿùÿÿ ÿñÿäÿìÿøÿöÿáÿ»ÿ¯ÿÑ!ÿéÿíÿøÿñÿßÿÎÿÃÿÂÿÈÿÅÿÄÿ¼ÿÒÿöE¶+ÕM,'BR^^i‹­ÆµŠT?2ÿðÿÛÿÎÿµÿ¦ÿ¤ÿ­ÿ®ÿµÿÊÿÔÿÁÿªÿªÿ¸ÿºÿÉÿô ÿöÿÔÿÐÿéÿû"c’”€Ž™‘}kge~¦ÎáæøöòåÏ»¶²§nJ$ ÿóÿöÿýÿëÿÞÿçÿý ÿûÿý+ÿìÿØÿßÿü ÿöÿÕÿÇÿß:I0ÿòÿÛÿßÿê -NmrhO,8tÐ<H%þÙÉÊÇÁ±¥¦­µ©ˆ`O@ ÿ÷ÿøÿôÿú +% ÿïÿïÿöÿçÿáÿø ÿÿÿô *.2Iciw©È½”ql~«ÕëäÚöõÔ¶¨¦§™zP/  % ÿóÿôÿúÿéÿÚÿÛÿí" ÿü5+ÿèÿÜÿäÿü ÿù49-ÿüÿ÷ÿÿ2Oo|mbqŸÕÿåÖÏÇÀ´­­³¾·šs^O7# ÿ÷ÿþÿùÿó ÿù */=g“§«À쑉—§ÁÞñôõÔ¤„z|t[4ÿúÿü ÿøÿóÿôÿêÿäÿçÿôÿý '3 +2# ÿðÿÑÿ×1>) ÿü!8?<(ÿôÿù/s²ØÙÓÉÑàêêäÖɽ³­¨«´ÀÐ˲ŽxmbXL@8/%ÿôÿáÿæÿú  1)LÊãÓ«•”©ÂÀ¼Ìæ öË•iQE@1ÿóÿøÿÿ   ÿ÷ÿéÿèÿø ('!'-,$"ÿêÿØÿö(GD.%2-  '&5V„¯ÈÕÕàëõùûóçÖÉÀ´°³ºÅ¯–‡‚‚}nWC1!ÿôÿêÿù   )>_–½Æ¶­ª®¼Ð×¶Íó ì±[;' ÿÿÿúÿÿÿúÿù  ÿñÿó&.3.%,, ÿòÿñ ';?- 1M]\RJWu¢Éæ ðæÚǺ·»¼¶¨˜ŽŠ‹…v]D1#"44"ÿøÿõÿû3Qoœ–Žš²ÊÓÒÁ§¢¾ßðÕ¡dB4%ÿöÿäÿì  Âs® î ñ1çfýŒO4Ÿ2N¥á þÜü øí¢8þÆqðYÓs5õñ!µ$Õ'd'š&ð$ !~ãõ!³`  # ý © ¢ ¦ É à ð ú û ú ú ø & _ ª è   Ð Š U f  O ” ÏeÓ>ÍN)0âOëT°©g gÝqý/%Ï—`7ò„ßË¨Ž¦ùC« ‘   ÊÂo0ê¤zfc‘7Wüûç¡gS…âͱ%ò{ä|L!,"f"º"ï$2%I%ò%%$!ªIõL®h! ã Ò  ú ­ š Ž ¨ Á â ÿ  ) 4 J e Œ Â Û ã © I î ¶ Ì  N g i s ’ ¾  J ­  ¥z|>$O‹á{ƒôŒ†ÛŠ#‡»¹¿à&€òùÌñí±°ÉÙðì#~8 ëTU ç.3) ÒŸ‚ ¬¹Í_+µ`¼i&{niPæL´q^ Â"Š#Ã$)#Û$*$#±"|!jLᆛo 5  q … G 9 = n   Û  3 K X n Š « Æ ä Û Ä {  È › ¶ ë & 4 ( ( / 6 J ] Š §  ” ƒ YºeW‰ªö`IÕ<¸ ƒ ë ø'&\sSs¯üÝ”v«ì ¶_·Êš}:ÏŒ#®6ù¼Í™î¢%…þv®Ö †ì ²Ç7úi¿Ÿ·ûÂß•  e Ä #ÈòÊÄÞ  Y ” Ð ú  % @ \ z ‰ –  \  Ú ® ™ ¶ ä  '   ê Ë ¶ · ¥ Õ ÿ Î ½ ‚€ÒuÔXƒëêV©ƒtñ¼R™ïŠmû¤õúŠ,ÉêðøYÖTDIJ¬|3M2%ç]#äÏ#´‘›ËÚÏ·¢ž·•¾*cƒP<¤¤† À ` × Ù ÙÛ   + Y q Œ ¸ è  / N _ m k q Z / ð ± Œ z © Â É ¹ ® “ n M ; 6  (  Ú  =œ>0®kãÉ:a¡ þ\±ÄÇvŽ2å^Fa[O;o/Aæ‹}É$ë_^B«/1u¶æñç‚þˆ~‘B±:eÝó"”H/šD¦,Úh¢ÔcíKG4 ß c 2 ^ ó Lê®ÂÜûôãêðÝÖè  : \ y ƒ ‡ † š ™ } K    . Z | Š y f K 3 ' # *  / ¸ Ú <¤M§yø/ ú × õ 9 ƒ x3ˆF-×᨟\‰õ ñ7SB€ÿ1’G4ŸâP‡V k¿zÿ,×ï‹þG3U<èʉI¶eYÒu3 œ  Ö œ ,  Ï  eùÅÆžv`B×¢uH*1G]uŸ¶àû÷å×ø4œ  ^ ˆ o O " úåÝÙç³  Í i e²Ž}Ä_ ~ y ¦ Ê  À 2 Xöâíp»Aï`º’?ªh!±G²$ûcd‚w8ò‹d½Í±ðZ€»5®åjÀµ> ¨ e t 0 ­ W M Q !Ù¡uL0þå¦ZáWÚ~IÜÅÐÛèåéø=l¥Ðáíø=¢>îqÈÁ­x^F 3!S« ‹ } Î lƒ;¦ ™ ' & ± G d ™  M Ì o ~±èî¨RãŒ@ý¡?•ÒÖžvZ_¢,VDk`7xC=o8¶Å{Gôaí ß R Ó L w ½ 1È…:Åq;TH?70)" äˆó]ë£gZ_mhYF@C_­Ý#*g½Z¹DtŠdN,÷êOŠåHÉ 5 Õ Ì Œ  ½ ( ¨ š Ž Î  t ² ý K Ý • vP÷`¾NОw0ÔAÅ“ì~e˜ÈµRÄw/ z L •ÒzÃdÒöAž ò Ù Â ø ™ 2÷Ÿx…¥MÐóãÇíþ úÄ…Dòä¼fý¥{cs‘§¦ŒfRNFQd‚ ¶ÄÌÉç„ 4ŒÇ»­‰_`zÝDÖvùC  l » š 4餧  p Ç $ € Î  O ë s ð * \ µ>Äo'ä—'£. ^ õ à ü Î “ h ƒ i · 2 / í ò ¼ Š ä ó , ” - ¸ì!IòÙñs#”üKrüd¸ÜÑw ¸\Î`A5DEUx“M .E_z’ž¹Þ){æ^ºáÊÏ×`ñµfÎó,a¢Ý/s¾ö , g ±  Z ‘ ‘ b \ ° <   ä  F o  * Ά:² Ñ A   C /  * @ s 4 h ’ + b É 7 j ' Å %!ùÓ[×S+çŠû@˜¨eùë+©+¾j§XÞÒû,TXL^_Gزª´¥ž¥½Ñð;XwŸÉê>g‰“’Š–•£í‰KÜ1q âF¹=Å$_{¨é @ ’ á ï ¸ ” ¼ = Ï A y i V O X §  ¤ ö * Ñ ¸ ™   ¥ Ä ý   ¶û=ÕÚõÁdÞVçŸgü¯¥§%ËGœ×ÞßÓ–j~ªÁ¨{*Þ•L#ÿþ /p°Îѯž|KÿñÿÞÿÕÿÒÿ¼ÿ®ÿ­ÿÁÿÐÿðKzªâ $?g’³ÓÍ—|˜ÿjÙ3m‹É&Ýà?ÛX©  S T )  ( —  e m r Z < 4 B u š b = ÜÌø < o N lÂ;çåó÷Ø|™œ,ÖpFam)¡¸NS¦gSµ‹}`RJXe†¤Þ'wÁì ÊŠ?øÍ²­¡“zf]djz¥¾Ôò÷óÂ}.éÕÜ .P}Eí£š³ k¶ÄÑèw[oFÔV¦óF¼-™´W  € Ð   ð ² q Q V¸¢wA:w¶ÏY¥ ŠKÞ[ï^Þ†tm|—iäGàÕÜ'–Ǩ#“,ÿú-ZÖ[Å|.¿V¦ÞÑÌ¡€6ÒdÒ««­´ª™Š„Іp[9æ±F½kÿÿÿ»ÿÇÿÊÿó)VkR1ÿÐÿÍÿî=†Ëê/¥Rë‘Nê^ªøi)±µ”ÊKæ V Œ d ?õ¡mpþÓ¶¶ÙáÈ\ì?É!Ɔ}sY/ÒCàÏ CUDîo%(– zØÌ ©®×‚,-._–Î    ‘ ý   í Ñ ƒ  ¥ @ ø ² • ’ „ h M ,  é « >ÓB®e«àù0ƒ"º‰Y\o¦Š8ÿèÿ¸ÿß.’ÃÒÝ,§T¾$T¥l2°÷bst`; ö@)ýáÄ…=ÍhÑV©Z5Vuq>Üh<zÊÊt¬È4Ê=ÔYÚ|_7(    6 ŠèZÛ9Ôe}“U®Z«d2 ΈOÿ­…§É ± ‡ Q , )2Oby”°½ÛéVÿñ*YUÿ¿ÿ{ÿZÿ†ÿÉ^yg{ÁlDO‚ «0‹É^u‡rTHnÝÑйz-ÉrÌ_Á-²˜§èÑyD^Àý¾Pü0²¥Nç‡0LŸ U  ¨ÿïܤbOO¾?#*ï !0!!¿!ƒ!T ó   5ÀDÓjÿ ]õl—͸Ÿ.œìH槨 ¬ ¢ † )¾#hí“ä`TI,ÙPÿªÿTÿQÿ¿1‚†b<‰I.°çbØF£Ý4¡ÿBSSV€.6HÄ{,Þ’O›K"Jv„Vü¸Áø¿À"3K•¨Ó œ E d±ÿ<ÈýŸNkî!0#¯&O(*¾+û--]--(,Æ,'+š*ÿ*e)Ç)(Ž('Ê'¦'Y&Í%õ%I$Q#L!¿ öäækçŠ,§ . ¿l…­Æ4SvT«ÿÑÿ ÿÿ=ÿÐCi&ÿÿO®#FQ¨e‡y~ÇB°ý&7]w‰¢hþïÉ‘U êÞîFUL*ùQ½ÍFUÓÎt  l4æ©r²Í  ï!u"#,$k&_(d*ë-x0!2å5789 9(988«87N6™5â5+4w3ª32¥22x2G1È10 /ô/3-Ï,D*+(%Ñ#™!ya}°ò?1û9L I*õ/¬zb­ƒ9ÿgþûÿ_ÿút) Oã‚É×ù#wk37‘€ÑñëøÙ§²ÐѲ…Z6F~½ÌÃÁ×ï?¡9‡yÍ V Ó ã Z3H»!ƒ$A&R(C)*¼+Ï- .¦0\2u46Ú9&;o=×?ÅA†BtC`C€C…BûB{AÉA1@€?»>è>=h<ø<Ì<©­@BJDEÚGËIƒK$L,M*MlM†M#LÝLlLK~J¼IÝIHvHGèG®G8FƒE³E2DšCåBºAd?Ã>L<¹;K9Q741).)+U(­&%#k ‘(¢°€ ½ <ÿ"ñÅÿíÿ6ÿvÿñwq1NïfJÙ¬¢¦¢cP†ÿ|µ£ÿ—ÿ’ÿ ÿŸÿ¯ÿÖÿú ÿüÿßÿÆÿ´ÿÕj›GIÈ•( † +z¾!C ‡$'ß+š/82[5h7ì:}<>’@+AÀC+D¤F G—I+JÊL˜NbP^R‡T”VWèY&YYÔY‘YqYXÌX4WjV‰U¾UGU TðTÊTES}RoQ¦P¨OMúL(J9H‚GEóDŠBÖ@W=Ë: 7k3î0’-)“%î"p—qe ‚ üÓÉ ~ÿëÿKÿ8ÿÒ.NÿàJÇà•4ÿíÿóÿó?¡ÝÖÿ¨ÿ¢ÿ±ÿÁÿÛÿüÿý "xÀ€>̦  ¡fóù‚!¼$û(y,J0947n:µ=•@…C.EòH>JrKöMYNBO+PPÿRGS«UwW8YM[‘]Î_þa…bãcdcËcªc©cgc.b¥aëa`c` _ò` `_¾_]ô][ÝZŒX¦VxT>R@PÙOÅNÐM¬KçJGUDQ@dÓCGK“O/R$U6X[ ]Ì`ŽbÉdðfhgËhªi‘j6jßkpll˜m#msm”m®mënpooÊpUpšp½pÚq.qŽqõqüq¸q/p¬p‰p·q;q®qìqíqÉqðqâq¨pípnþn.m}lìljâi8g£eªcÜaK^¬Z´VXPðKF%@¾;Ê7K2Ç-Ã(Z"Ú¾Êãox Ô‘f®³’¿ÿ»ÿÎ5 ÿÔÿÓÿò -ËÂßöúAÂ÷õÄ Šlg‚[ó%,*Ç0ž6:;\@ZDáIM¿QîUHX]Z×]_òbFd:fBg×iOjNkBllðm¿n„o o‡o¿oþoðo¸olo7oPo–ppYpŽppÈq;qÆrFr_r.qÁqoqmq¡rrcr—r­rµrõsrírxqéq`qpìpõp–oðn„mki]g4eb ^·ZaV&Q6LF²A¾=8@3^.i))#…WÈúú, Ö™-.úOkÿó$ÿýÿèÿî 14/8I;KPYj+øš ; üʼn*Í$()Š/m5†;q@üFKDOôTŽX>[Ó^ŒaKche’g*hi½kl-mmÁnjoo´pPpÙq=q®qór@r*qÛqUpÝp°pµq qQq¡qËrr¢s9s¼sÞsÈssQsZs‚sÚt)trt±tÚuutétosçs†sXsws·s½s‹rÇrpÆoœmÖl iif™c_Î[¿WOR+M!H C><9”4h.—(‰"Å½ÍÆ l|2Jo#mÿöÿöÿá05/9 A 1 (  û ® 8 * cm»`÷>$).™4s:y@UE­JÐO‚TªXö\Æ_[aõcâfg—hçi€jjRjâkvkìlVlÐmIm±n'n£oUp2q qÔrr qÌqqq‘qèrDr¶s sqtt†tøuu"tútÛtØtêu(uou¸uÿvv'uÕuZts¸srƒrXr?r;rqÞqËqepëoºnol`j5g¤eub¯_§[˜WbR‰MºHåD‹?¿:w4S-å'¼"Gh%+ è þÍ$7Ü_";ÿáÿñ*4J×˪\@Ûëa¶•û$@(â-î3I9A?tEaJÕOTŠY]âa€dheògÁh÷j]kkik'jöj°jƒjj|j­jîkQk}l lÔn/o»q&rVrÌsrÛrãrþssYs¦ttWtºu:uºv/vkv“v‰vxvrv„v½wwBwww…wvŒut¡s¬rÖrGqÈqvqpÈp¼pÀp¸pPoÜnÈm†kØjrhf¿cî`ô\çX¬SìOŸJÔEï?å9623+À%ï AÁ8 ¥êK¼Á±/ÿôÿåÿñ3MnFM&Å´ÀÎée é%)¤.ÿ3¢8›>CñI¶NÍSoWg[Í_šcpeÓgŸhTCWHöNuS‰W¬[ª_bÄeh,iRjBjHjœjZiêhöhfõeÚd‰bôa®`¶``5`¯a bšd g“jm3owpÌrr¬s‰ttGt`tªuu—v,vÏwZwÐx xAxBx3xxxwöw»w‰vüvduFtrlpìoBm}k¿iùh­g€gf±fþgpursUt*u.vvõw¬xrxØyx÷xôx¤xCw‘vñuþtós¡rzpñoSm jˆg½e'bÅ`b^G[îZiY,Y@YtZ§[¬]€_gb!e%hDk=mTo,oòpÔp¸p¢o[nkZh„d;` ZmT–M›F£?;8$0¨(i ®š)» ¸|á§îHwCvCþD&D-DkD»EúGSIûLìPÈT{Xy\º`qcÓeýhijpj¾j¿i h”fÊe bµ`(]“[TY`WqUfSPÂNRL©KXK J¼KkLN-P„T8X1\o`:c‹fßiÙmo‘qès‹uCvww¦xay/yzy¢yVy-xšwôvÎuºtrFpnkÎi…f¹c«`l]IZ˜XVSÇReQ5Q€RSÅU\W¸Z]`Vcùgªj¼mŒo'p­qq–q p£n×lÓiGeÊ`ô\*UýOwH A@9ã2*"7…/W =Äž“ºÎNqOOWOrO¹PQPR½U:WÎ[^WaÄemh?jƒk“lám@m«lÚkÇi˜gŽdÀaÍ^t[XU`S(PÌNwKüI²GNEÄDšDnDD€DèFÏI LàPùU‘Y®] a»e«i°mp?r‰tØvawåxÃy·yÿzy©yWxŽwÃv\u rÔpDmjføcè`¥]:YÀV>S.PFNKŸJDIIzJLN QSùWœ[?_Dcwgdk@mópXqmr“r·sr*qnMk„glc£^SXuQZJ¢CJ;Ô3Ô+i#˜XŠ '  üWqXMX®XëYEYÁZù\g^€`rbße“hTklän4n€o>onlÄjégîdõa,]1YU6QûOLžJ G¼EqC~A_?û>ñ>©>>4>F?ßAÛE€IKMÊQßV;Zá_ dXhzltoƒrŒt­vÍxytyìz>yÄykxmwyu±sûq m£i`eYaK]LY„U¼RFNÆKÈHØF•D"BÊA¤BB}DbFCI]L¢P™TWX^\…`Àe/hÚl)n(ppýr#r&rpnn‹kOhwd._YKSLEb=Þ5ª-n%³m, ‚åÔôZ¼_øa a£bbŽc/dWe¶g[h¦j†AoD³HçLâQ#UKY´^~bùg6jMm.nöpôqçrïreqxolþišf#`ü[vTÉN±G‹?œ7/'£ S3t ÌÌý¯^dàf2ggÃh[i"j7kvl±mn|pq rÌssCrŒr pPnGjØg‡c^%XÂS”NÝJ6FtBÈ@!=Œ;Ì:8Ë785å4¹3è2Ç2h2:3s4Ñ7‹:;>A±F|K—QiW'\ÀbLgkÚo‡s6u¥xyz yÌy¶xKvÊs²p’kÕf¼`È[U„OÄJ³E¹B.?=;9”7–6T5h5Ã627¡8Ç;=ÃAŒEKIkM@QkUêZ __c~gXj0moqq©qèpo#lj,f;a·[ÌVpOèHË@È8î1M)Ò#Jœõ ã ÀpijµkâlÄmonSoZpƒquqôr~s¼tÁuEtát«s‚r]o×mhõdÝ_˜YõTNaIgD^@m<¬:57Ó6d53ù2½1£0š/Æ.¸.F..Ú/¨1ž3’6×:>àDJNP”Ví]b«h0l²qCtfwax±yóy·y³xvPrŸnÖi8cF\uUæO”I3CÀ>P:•7B5›43!1Ç1 0ƒ0ÿ1™2ï3û5Ú7ò;>ZB/EµI­MÊR“Wª\Âa¥e¨iŠlXoSpñrvr,q‘oˆnkgˆbƒ]ðXQÇJIBÂ:õ3b,$—Ø"ô  Øj^l0m”n“oEp=qArQs!s¢tu8uçvu2tråqm¡j6ef`wZ‡TbNDHuC>h:£7)5+372<1?0©/î/Q.À.9-ƒ- ,°,ó-!.B/h1ö48è=±DJQvX^Td–iîoVs"v¸xJy½yny]wu²q¾mœgƒa!YØR¿KþEM?´:6=2É1?/Ù/s.±.}.[.ê/”0µ1¦34Y6v8Â;Ù>ÕBxFJwONTÀZ+_(côg·k{np¶q™qîpoÊm k/gIc^wY6R¥KôD’=e5÷.K&Ü`1PL $kæmáobpjqr#s'ttÀuCu½vÆw7w uÔtÙrxoÈk€gUaÇ[ñUFNŽH7B)=98,4¥1a/¾.(-®-6-8---$-,­,+†+.*Ñ+<+ -t/G3@7¥>D™KûS&Z/aTgm¾rv*wæymxëx§v¡t°pžl@eÍ_W{OùHÕA½;÷662—/f.<-,õ,,¥,Ç-J-Í.€/ /è01½35O7Ì;C>B¿G>LÂRsXR^ c g­k nÉpÅr)qÈqÁplo l3iMdú`³[ U5NLGŽ@ 8O0B( Êè kím÷op¤q`rˆs“tbtôuv3w#wGwuVsØp©m!g÷c\ÆV&O H Aä;ö7y2ô0-V,7+-+F+c+û,v,ù-Ÿ-Ë-¤,ä,+M*£*’*Y+d,p/¶3d9m?žG+N¡VU^!ekÑpuCwXy"x§x^vNtqp„l9eì_~XPÈI£Bl<~6±3*0*/-à-‡----a-˜-Ò..B.[.Æ/0}2@5E8<?êEJSPwVÓ\¹b%f[jÚmÉpZq)rqq&o7miˆfam\¤V˜P–IrB":1²)õ"%ªln9oþqBr&s|tu?u©vpww®wWvÊt¬rªn»jcd\^•W®PJHÌA”;±62.@,"*)œ)F**«+¶,¸-š.š.Î.”-,o+U*m)é))M),/4§:B`J6R•ZôbwiÙo;t…w yfy)ywu/qBlõfÈ`Y‡R|KcD=ê7æ4/1/ï.‡-õ-F-,í,û,ô,Ô,¨,[+ö+±+:+»,›.õ1F4â8i=HBIH”OUV%\{a´gjÓnƒp{rcr¸s5rp¼mñk^g—cÔ^£YYR’KªC¨;B3/+q%™kdmŒoqr sŸtµuVu±v¥w0w~v‰uœrøp?kwf[_§Y"QÇJBž;•6O1@.4+3)ò(¯(Ú)(*P+],£-ú.ý/þ0/–.f-c,^+~*¹)ˆ)(Ä*”,­1¢6ô>F9NµW^ßfl¡ruæxéyHy¼xvar¤n—hêch]V·OúHðB(â+'-ƒ1i5:{@]GvN‡Ue[÷a‘gTkžoÀqçsõtsõrdpòn‘l‹i5e„`%ZÅTLúE²>Ÿ8á2÷i€k–m¶o–qrŸs¤tNtËv*v°v~ttrÏnõj†cã]OU•MÈEì=ø7c1%-5)w'ä&Z&a&['O(=)²+&,½.€/«0}0V0/]/'.¼.,í+]*%) )´*‡-ÿ1Ö8>yF5MàUÝ^ e=l@píuKvõxžwÏvïsõpËlkhxc¹^ÛXùR²L8EÛ@®;ò8§5(2à0¥/³///.ä.a-m,~+{*Š)¶(™(3'÷)E*Ê-é0Ë5b:Q@ÛGN¾U³\#b­gímp'røs–tsqçoðn}kíhïdh_òZBT6MÔGŒBS<òhÅj´lÒnáp…rrâs’tuŠuäugr×pÌlPfø_yXTPSH@8720,g)(&4%m$ %%^&a'c(ì*,S.%/[050R0q0j0Ó0Ç0O/-, *Ñ*ð+&-Ä0½6:;ÚC#J\R>Z]aÑi"nArüu wv¼v‰tnrn‡kggTc'] W QJ‡DÜ?Œ;„7G4|1Ñ0í0{0ü1Q160°/†.e-,,*+)•(o'h'Å(h*¯,¼0—4°:·@ÿH_O§Vß^dEj_nZqþs@tosÍsqop†n¯lThše `d[gUêPgK³Fçh¦jXlOnppq^qÿrÂsVt‘tzs pmûhÝbÍZÐScKhBð;&3¿.s):&—$d$7#å$v$Ç%¢&Š( )Ë+©-b.–/0 0Ë1j2i2Â2”1u0D/-Ç--j/E1O5Ì:AGGùOŸWv^ífSk¼p·suEunuÙt¢s/pvn j’fåa…[™TÓNKH\B«>9)5æ2á2!23 3·3¿3Z20Ü/i.C,ú+J)¿(>'á'Ç)3*j-p0£5ú;•BÌJQÄY_` fîk·prsås»sDqçqTpn'k&hRd¢`»\UWÉS×Oæhäjal/nPoðpÛq3r r¬s¬sqÙnCkeV^ V=NŽF™=ù6b/u*å&:$#""ö##°$$ñ%Õ'`)<+:,ð.0/P091A2T3Ç4…4­3Ë2í1Ï0›0/¶0ß1ø5O9 ?E-L«TX[öcˆiYnÄqŸt.t¿uœu t^rzp÷mñj«eO_ZXjQòKÞEÑ@‡:Ý7 3­3304“5z5¤5q402Í1 /¤.,<*e(ˆ'”&à'€'Ú)ü,J16=AD•L´T³\cªiAnTp×sasµsrrr?qvp+mÞk®hÛeüb²_'\Xïi4julnošp@plqgr r²q„oßkÑgòa¦Z RBJB³:73,Ú)%#k"a"ì# #›$$Ó%¢'(Ú*Â,G-q.ž/¼0ç2-3Ò4ä5t54›3Å2Î2;1Ý2Œ2ß598$=¢CGJ—R Y«aBgbm@pœsŠtNuAtát—sGrZoÁlÌg|a…ZŠT3N5H+B¤<œ8U4™3Î3Ò5E6.6z6‡54=2_0Å.ø-+)'Ó&Ñ&æ&¢()ƒ-š29@HBPBWþ_÷f0kÓnïr"ssQr|r…rq*ofm˜kYiEfõdQaù_´i*j-k”m‡ooo«pÍqjq·oöm÷i|dì^VÎNF§>û6¬0*'‚$.# "{#/#W#Á$,$ë%“&Ê(r*.+c,X-u.¼0 1’3i4È5½5Á5Æ534y3Ë3R3m2å4U6¤;ØA+HROˆW&^ÇeEk¨orásÀt¤tBt/s\ròpÜnaiDcY\>UØOãJD£>|9Ê5Š4Z4/5¿6´7;7—6è5ÿ472‚0e.A,)Ú(<&å&}%±&^'*.n5;àDKÞSÌ\ büi.lèpÆr9srvr­rjqòp»oWm²leki:g f%hœigj©l…nn£n×p,pÁpÅn†l9g_b+ZëSK’C±<.49.N)^'$v#À#y$$2$r$Ó%w%õ&Ü(2)Š*M*ô+æ-0.o/ø1È3Y4¦5)5š5a54‡4+43V46·;×@úGÔN³V ]jcåjbnqýræs²s5s"rvr/pdnAi‘d]KW Q4K¸Fš@Å;ö7R5t4µ5å677~76–5 3|17/,¾*d(¤'-&“%£%ð& (Ò,298@^GÛO·X_Zf jwnýqrrmrËr‰rNqfp/nÑmìmkÀj—i›gðhŒi²kmmŸmâohpoämAj®ek_”WæPˆH·@Æ9e1Ã,t(&q$†$A$>$Ø$ó%!%|&&f'( (ø)@)—*m+Ç,ô.r0*1ä3‰4—55©5³5c5(5 4?5H7mƒ9›75µ6^6¥7 736×6›5y3ö1¨/r-!*»(ä'V&—%˜%’%;'()°/25<°CäK¹T[½bôh'm[prWr±sKssrjqWp.ožo+n8mdlÌgg‘h«jdk÷l–lùn±oUo li c€]4UMMõF\>`7$/â+1'^&8$ç$ö%%x%›%Ê&&}&Ì'9'à(f(j(¡)`*š+,Ä.S0)23n4™5"5¡5ã6(6Ÿ6’8#:›?VCõIçOõVf\Ób€h0kÿoUp•qÆq¹qñqZpùoDmTi›e§`h['U“P2KEÛAH?BÙGM&RÈXx^bühkœnÆp q2qq'pp6nÀlåi€fa’]WÎRZLòGÍC`>µ;]8h75ü5¨544'301¶/”-š+)”'ð&j%‹$¥$x#ä$ú&h*/-5û<‘DULXTu\‡c3i m¸q¤st1sÒtskr=pípWoþontne¸fghƒjják–m¬n%mAi8et_0XKPCHøA®9¦2Á,>(»%ý%Ò%“&&&&9&`&Œ&¦&Â&ó'''+'Q'Â(T(þ)-)ò+c-ƒ/†182o3†4é6¹8:º<³?±CGÂL§RW,\ `øeCi¶lÈo~p}qeq(pÿpBoìnŸlÝiÚfúc3_‘ZÔU}OÀJiEÆA.=…9¹7E5<4`3n2Ï2A19/¸-¾+ù*E(†' %—$«#Ç#˜#$ %4(Ê,´2ô9@AHçQ$Y}`³g˜lCpðrét+s©sæs@qôpuo´oCnXm¹mbdàeeìgBhÒi×jÆmmUl%g¤c\óUÉM§FM?70k*U'l%5%w%§&[&x&u&¨&Ú&í&ð''&²&t&¡''t'Æ'¼(a)¶+Æ-£/R0ƒ1þ3ô6±9Q&Û'''ž'•'m'ë(ç*†+î-k.y0W2Ô6y9ï>BF¼K©PÚVZ£^°brgk n§p„qòrr‘rmrXqŽp›o m‡k¼jBh(fbY]ãWøR&LSFóAí,)*Ì)•(^'%ì$°#Î#"¾""d"à%s("-s37;BµK0Sð[öc•i6o+rs“r×s(rwqo?n-m•l²lGlbãbÐc³dïf¯h3i‰kßkÏj#e`„YÀRaJ+B«;~3m-1'Ö%Ô$<$ê%—&£''7''â(:(r(¼(Ÿ('’'á(M('º'v'Ã(Q)p*n+À, .¿1œ6:P?iDJOìU†Zý_VcfLjxmøpïrAs^sWsmssrgq`oàn…mMlkOiûfÁbç]'WVQK'ES>á9C4 0ä.--(,(+•*˜)(®'Ì&Ö%È$–#¡"ð"‘!Á!³!º#³%¹*ž0/8?ÄHhQ^YÆaÇgÞndq—sBrar­qêp`n}mGl¢kÇkyk[a½a²bµdeëg®i'k}k:iVd_pX´Q`I4A­:y2a,D'0%v#ø$ª%n&Ÿ'0'‚'î(w)))Í*f**N**œ+*¹*)£)ƒ)m)Ó*,+3+Ø.:1l6‘;}AeGWM¯T2Z_ÙdgŽj"m‡p0rhsatltwt:s¢sœsNr„qXpLo{o-ntmŸjég²b]\ÞVWP(I«B¸TDLK‰S Z·b6gðmopqËq×r§s?sát#t)t ttWtÅu4uWu„vvvÙvvvEtÆs orkËfN`‚YžRûLE >‚83..´+Ø(Í&þ%A$œ$/$##­#>#"Ü"V!ô!j"'"§&]+Y3g;CÝLÚU}]Öd‹káo–q[p p4o.mUkKiéi”iQiçjƒWðY[~^&a=dxf…hógˆd]hX QkJB3:»3Ê+í&°#"Æ!ý"Ù#ë%&j'¥(ý+™.ë2Í6.8û;Ã=ä@cAyB@¹>õ8I;¸A†G#NUg\¾dirnƒpºr4rrfr¦ssnsŽss–sÞtTuuŸvHw#w¶x$wÝw¾vwuqüojAe^œX~QÑJÙCò=7o22.w*‰'ÿ%˜$›#æ#Ï#H"á"²"‘" !Ø!a"+"Á&z+e3V:ñCºL³UM]“d3kwo.pþoàpo!mTkaj$jiüjÄk‹SÆUÏY\˜`QdfThægNc¢\©WPoIAA9Î2ú+G&J"õ"à":#.$Q&)'t)H+,.f2`6â:Ô>AyCþFÑGïH‹FþEBH?Ö=Ï;Y:Ã:Þ=Ê@ØEþKQdWþ^­ehjdnÐp¬r(r!r[r[ršrës8sksbs‘ttëuØvÂw˜xxšx‚xqw_v3sÉqˆm®igc±^=WßQjk²lèI¬MØS+XÍ^c!eàhøgLcs\V:OhH @L8Ê2*À&A#=#t#"$„%ý(*µ-º0³5:?‹DpHyL˜OR·SßT•RýQNK‰IAFaEsE”HhKOhS˜X¶^cpi'm9pJqarÈsBsÄs°s~s4ss;sqt tÆu™vAv¾w5wŸxWx”xnwŒvÔu‘tŠr_oækÑg¼b+\…U©N’G0?þ9ƒ2ì-å)7&y#Ö"š!D Ë _ e H [ý µ!]%)°1`8þAÈJzRÔ[aÖhþl°nµmÚn*m3k3i>hPhÄijWkÃC«HÖO'Uà\aîe!h¥gcX[åUðOG¦?÷8p1Î*§&R#C#u#K%&º)¡,M/è3n8D=ÜCÆIMeQ¼TÉXY?Z(XºVÆSÓQlOPLK˜K¦NT\V€Yø]gaZeHilîo®q÷rÆs™s‰slssrór r—rås˜t0tÒukuõvvîwvw”wgvçv·v@uÔtwrïp m-hÑd{^qWûPbHåAt9á3œ-Ý)ì%©#K!s!+ ¼ Ë « ¥ $ «!:$¤(Ö07Ž@BH“P¥Xù_Ùfäjnl”k¡kŠiÒgd}c cpcvdËf|6°=šEªN\VH]Îb*fÑfc|\ŽV•OMH@‚8ô2g+®'Ÿ$6$0$a&ô)M-0Æ5n9Ý?DElK†PùU&Yc\L_B`Ÿaõab`"^\©[†YèYFY!Z­\X_.beGh“kn|plr+rËsfs/rÇrKr=r^r.r2rxss¦tWu*uÊvv9vœvÙvëv¯v‡vu·tÀsÇqÂoÌlCh¢bú\ëU[MäF=ÿ70£,&ö$!ÿ!Â!)! Ö À . ¥!*$x(u/ƒ6ð?–G©O‰WÝ^Ìe¼i*kjjjjgËd|a]__|_"`hb$0È8hA4J§SM[`€eÉeÁd ]«WÄP7H÷Aˆ9ê3V,Â(Î%4%%’(­+j/œ3ã8ú=¾C+ISO.TWX)\^ÑabÌdcíc9aÞa`e_u_%_`%alc£eÑhekmto±qrXr¾s&rèrrqöqârqéqìrrsrês¦tŸuDuVu)upuÊvvuÌuCtÙt-s¡reqDnk©f}`óY’R/J%Aô:ž3Ô.(Ü%c"ô"„!š!H ã Æ & §!D$ª(¬/±7(?ÀG¥ORW¢^e,hMjŠiPhhe@a5]FZƒYªX}YYZË+3q=GCP¤YŠ_)eeªd×^îXÿQIÒBq:¼4-¦)Ï& %þ&Ñ*‹-¸2Y73<»AÓGEMqSWô[n_a”cüe)fSf^f%eyedádd¼dØe¬f¾hii÷kÂm¥onq?r^s6s@sQrûr¡rErqøq¬q}qcq§qür§s‰t&t9ttetÁtøtætÀtjt'sÌs™rðrrp€nciÓdÛ]–VM¶E>7 1J*Þ&¹#Ë#!Ð!U Ü È  Ÿ!Z$é)0 7’@ GàOaW²^{dÖg˜iÇhHfÁb¯]ëY3U…SÉQ±RS.&?/9'CÕMÊW_]ÍdmeÓf`ì[3SKÂDNT¤OÔLàI•I!I…!Z*…5 @J±U \jcÒfgƒc]®UHNFj>J780—,•('ß):.E2”8O>4DdJ'O“U€ZK^{`õcgdØfgxhhh=hMh]hœhòijjìkðm6n€ožpwq9rRsDt tCtSt"t ttsÞswrØr%q¿q¤qìr9rarDrqÑqÕrr>rprOqæqmq]q?q:p(o+kÇgÆaYçQûJüDV=\6ž/D)é%À$+"e!Å Þ œÒ Ê";&ª+p2Ð:–CJ×R(Zl`²f-gÎi|fêcx]V™P J1FA‹@8?̃&¥1Gû9V75£î#-À8©CÐOUXaŒeºiÂgc‡[qTL¹Di<Ý5Ø1:+Õ*ü+ý1ˆ6½=sC·JPdV[ì`cÝefÖg/h?hðiRih®hXh^h½hîiejjãk¢l®mùo]p¡qr_rástsÒt'tUt…t¦tëtçt´ts@r§rrÅr×r‘rqRp¯p–q q~qbp°oßoBo&oFonnÇn?k‡hbE\_U¯OÄIEA÷:f2»,ñ'ï%#p"§! ¡ <";$„)Å/c7=?GG¹O©VÔ^Êd=hÞiOjeû`TWhOEG>µ7ÿ14.+”0ô*‡5@ KÝUÝ_ed†iºh¬eÎ^PWÏO÷G×@>94.^-:-»38V?LEpK—RWî]ÆaÕe‚g h3hbi6i®j i—h«gªg/gm–o±q‚rQrÏr¾rãs!sˆsót[tftAsÆs7rãrñs0sUsr„qÄq'pãpýpôpeo‰nÏnin'nInÒn¹n_limd©_ÖY~SCLDm<Í53/1)ˆ&W#“"– à Ö!a$®'æ-ô4¯=(ENMiU•\vc“gkji0c[rPÏGj=Ò3Š*º"2œ¥Ï¿#Þ-8XD6OJYÂ`˜g¿hþh™b¯\óUMlEæ>78ƒ2¼1S0ä5f:±AøH MüTTZ_Ôc°fçh,ijj}jMjuiqg e b«a_à_î`aaÃcMe8gûjÛmŒpq~rjrmr—r¼s"s™tt-ts›srÕrÝssHsr¬qõqSpäp·p†pofnµnEmùn"nÆnÕnzlYjBeòa5ZTL‰E=…5à/˜)•&"í!ñ K â!Û%¾)§0Y7«@VHwPSX _Ae¬hkHiWg,_ùW˜L¦Bï9 .P% 0O&„ K)u4&?õKjVF]Þe¿hi#dP_VñO H-@R:L4z2Ü1Û5È:¸B HQNˆTåZ˜`„djgeheiãjLj›iòigóeÎb¸_p\òZþZá[\y]H_#azdæhwkÞopýrMrkrµrÁrþs:s‰sŽsVrÞrbr6rbrÇssršqëq^qpâp¯p9oznŒmýmÚnBnînñnl•kgSb¢[¶U M…F>j6‘/ì)‚%›""!'¸ Ò"&‚+82«:‡CNKjS[¬b#gàiŸkh±e;\ìSÐH–>…4\)B©”n Æ ¿Ip%/Š;FŒQ«YòbEe™hKe`žXÎQîJ˜BÐ<ˆ64P2 5¦9@GFdL×SXÌ^ècfföh^h˜hÙgÐf¶dLa²^DZxWlTÌTgTšV€WÇZK]BaYe™i§mŽoëq°rržr±rØrßs srÂrcrrr`rêsTsFrèrIqÛq¢qqwqpIoAn©n¹o:o®ognåm k°gÜbâ[£TèMcE½=ý6 /P(¿$Ç!D a õ"'y-5(=5EÇMíUŒ^d h÷i…j~f”a¼X|NüCç9Ÿ/x$—i¿ Ê : X„ ¥*è6A£MV^åc@g£f b°[4TÂMqEº? 8´5Ï3w5˜8M>(CêJ‚P§Vi\Àa7dŸe˜fÎf®fúe·cñ`“]2YBU*QÞNM¸M¸P&R4U¸Ye]üb¶g3kªn„p©qCrrbr³rÐss#srërËrðsWsÌt$ts¾s1rËr}rErq°q3p€pp:p…p poÁn l„hGbï[hT‡LæDõ=5$.'ë#æ wö!"ò(c.Ô7ˆ? GíP=Wæ`Ve°iÕiRikd^KTJD?X4Ì*˜ð< Kàe ¨-&0”<GQAZa_³e‰eºd]šWíPËIB×;ý8567*;‰@+FCKõQ¦WÊ\]`*azbœb=bœaU_[[‚W€SNÿKÑHQG2FØIiLPzTåZ_Dd"ilanòo×pñqhqùrRrÀss2sTs‡sßtYt¿uut¿tAsâs‰s+rÞr rfr qÍqÓqÃq”pÐpqnvl)gaPY¥R|J³B‘:Á3*-&Ì#. B :œ!ã$m*1‡:SB/J RnYàaeÐi gzfR`=XÝN3DR9Ñ/2%BLŸ N6f‹ 2àÆ!U+"6NAëL:U¶[ûce e_ç[T6MŸFê?ª:¼6Ý6²6f9P<®BGdLñR‚VÎZÌ\Œ]Õ]p]Å\}Z¿VêRƒMžI=FB¯A‘@ÁCE³JãP7Vo\oa×gXkn op3pzpöqLq¹rrRr¢ss·truu¤u´uut¶t†t[t=t)sös“s,srÓrªqËq1nŸk~e´_¤WãPHH6@ 815+‡%Ÿ"„ 8 ¶ H"Ü&8-4–=JDçL\TÏ[îbÌe²hecbÈ[[RÏGÇ=ä3Ò)%D© DßÂÑ w% 0_;ÀFtPTW_ubËd½ac]ÉWQÒKZD>H9–86‚7Ý9u=xAÌFáK¥O€SFUCVØV»VþU´T\PýLÉGØCX@*=*st tÜu¢uÐu¦u4u u utýtÛtnsÎs1ròr­r‡q[p,lÃhÕb\KT›L¾D³<á6/)å$Ê"‘ ÷!û"%()Š18œ@ÐHIO`Wo]—c/dŒe´a×]sT·Kv@¡6Ï--"Æ×ž Að]’T ôR *p5 @ÄK&SD[ï`Šd\bË`WZ‰U£OcH4A³<9D6“6„6=8£;ß@›EHºLNOàPPDNÈMjJEFAÙ=69Ê6Õ685”79­>yC§J‡QxX=^×cžgÞj lmn[o7pp“qq¨rnsYtNuu¯uËu uKuVuhu]ut‹sás/rµr°rvr)ptn¨j™f%_XóQ,I:Au:3Á-(J$"¿!"ã#x'j,á5<…D@KÚRÌZ`_gcÏcÂc»^ˆXCN4D`9Õ/ù&¡R ö³ålw. ±eï$ã/‡:ÁE”N™W±]@b£bíb].YSLxE¹?x;K7ž6;4M4ø6‰:P>5AâDÂFYHEHÀHúGuEçBÝ?¢;¤7U3ÿ10¬0~2º4Ö9=fC’J2Q7Wÿ]Qb!e!hiýl'm¡nðo½p”qWr@s ttšuu&utöuu t³sésr/qfpépâp\o‰mjfaTZ¾T L‡E=ê71k+D'[$7#×#$Ù&t+a1ƒ9¨@ôH;OéVm\î`Wc…b+`YóRG[=o3n)Š €  ׬T 5i¹}*%ùs)q4²?ÿJS¨Z2ac*c÷`2\ÐVæPÈIÒBÌ=&8E52Z1Œ1(3Ž6Ù:·=y? @ÚAeAí@ž>Û; 8{4ÿ1`.¤,+Ž+†-õ0s4·8´>2D?JüQœW;\d`c‡fhÞjäl¬mËooúq qùrésttYt¬tÆtüt±tsrGqwp¶oöo‹nWlÓi¯fa\2UuNÎGÒ@ß:f3Ý.©)[&$t$à$’&å)Ç/¹60>E;LITYí_/`ôc`Ÿ]rU=L@Æ6Ì-@#C†Ü Ú†SàîäöÎ ß÷Ë#Ö.¨9öD®NÁV/^aŸdbbP_÷ZlUNSGU@Ú:à6É2º0×.¿/t1p4º789÷:a;:68¡5”2”/‡,¯*¯(x('è*0,Ô14Ë9¢>ßDìK P¾V!ZR^Ja_dÅgeiÂkWmnAo€p|qrWs swtt6tBsšr¼qŠp£ožn†mkÔi½gvcÕ`>[U|NùHÉB¦)8E3=0|-4,],t.Y/õ1r22õ3£3-2W0-˜*Æ(;&‡$Ì$‹$a&3(c,$/ˆ4 8Ê>~DWJBPTþYƒ]-aÅ4K*q!‰÷ $»M áâÇ•YZ’‘ tŠ# -h8¦C†LÏUä\b„dee a)]aWjR KqCÇ<º6Ù38/`-~+Î+Ô,,õ-„-Å.-­-v,7*l(%»$"Â" "h#¨%( *ö/83’9>D’J­P=UQYœ^Lb&e³h1jÅlno-pƒqpr;rvrÒrwqõp£o[mekphØfc `C]YÜUÖQ·LÍG©B[=d8®3|/?+A)j'Ø(š),/‘51:ÎAMG’MñU Zt_`Da¥_7\×UÍMBB8.D$rÕ ÒsóBlÉüàwKîdIî~º„&î1î=GNPëX_þcÉfd8a+[uW#Q>IüB0;5Ò1K.Ë+ÿ*…)(Ë(¶(ã(¨(7( 'w&š%*#" Ò v 0!"$=&|*3. 3/8X>`D¥JÙP UÃ[1_¨cÃf´iÝkîm³n•o¯pCpÉpÒqp‰oÍmþl'imf¨cT`\„Y5U½R9NKJSEØAV8P^I.A¬;q6o3„0c.+_)¥(¦(T't&%Ò%0$ž#ß"â!Ð ¤ +  é! #b%(M+´0Š5R;.AQG»MÜSYQ^b„e·i>kwmEmÜnžn¿nçn¢n©mÓl´jDg±d1`¶\ìYAUžRN{JùG_CÂ?â;¾7»3È0Â-Ç,N*æ+[+£.`1À7@<ÀBÃH3M­TYU^6`Bb`–_ ZLS€I(?4®*ó"]Ä ý_ꉕ¼äIU¼˜Ú€ä —ú3$Ç/':GDüNVê] cÆeäf@bd_FZ`UÆOÁHÐB<%8$4¤2 .“+É)«(u'%Ì$z#]"@!… ó  üÅÏ ’!*"›$&Í)Ù.n2ù8Á>ÑEVK›Q€W\™aRdÁhzj°lllÑmsmdm]lÁlkki7fb¾^­ZµV“RN’J¨GC@0<£95h2[/{-à,L,3+ò-¡/…3·8l>^CÞIlOTPZ2^9aba®b™`]ZUöMAà7ã.O$™Ü´ +§5ˆÐ@¨ñÞBJ¥ž€P… YóQ(d3>GòQWÅ_jcTfd@b ]‡YøUAOàIçCò?<;8Ü5R2/.-*ò)F'l%¹#È"›!÷"#!ö"F"¹#Á$¨&:'½*b-31b5›;@ªF¿LRWÂ\›a8d—h!j&k¾l l lylSkrjÑhóf¥bø_GZûV×R“N>JEñBR>é;Ý8‚52“0¶/.â.Œ/„0@2é6,;A@hEñJùOÑU8YÀ^'`'a›`x`M\…W‡NiD©9ö0©(žad Hå%˜qôËO=sˆ*2 ¸X_!i+…6•AuKGRÞZÍ_áeeße‡aµ^TYÏU»QKêFñBœ? ;B7ì4ž1Ì.ê, *Œ(ä&Í%h$h$w$b%8&H'ô)_+$,Ú/G1Â5X9=åCHµNS+Xs]aqd²hiìkok lk”k*jiVgadïa]4X°TTOÈK"F¥B)>^:Ä7þ53 1)0š00í13œ59/=VB¦G«LÜR)W\+_\aÂa›aá_Â^"XlPéF<<2@)i!o\æ >ŠÏU=x ã­q?HxôÂþË` HˆF$G.w9~DL”TZ`›cÜf(dJa±]hZ^WS_O#JÌF¦BË?€K÷KÜL·M’OSQS°V¶Z"]Â`aöa]`i]u[V¼RHKBÔ9Z0ƒ(Í!®“  @‹ñ˜Ý•Éæó¯t’Á¸8tŠU Kjüú§ ‹ bo#­-+7F@ŸHNƒS¿Z_ad}f¸gífÛf?ed_ca_\PYiVÎT÷SRTQùRÒS„UVŠX¬ZÓ]8_§aÚcêetfþhhòiti÷j>j{jÁk k®l}mŠn°oupoÌoªn¾mÊkîiìg|* ÛÅ £4*ú#‰,5 =AC¸IpN4SíY^LaVcmc…cËcÊdjdÚdîd]c²bÙba¦avbb¸de•gyidk$lÛmÔn¥nˆnam€lŒkMj"ihgtfóg@g¥hÏj1k¬lämnWnxn†nmŠl¤k·jiLg÷fePd+bøa‹`^ª]Ï]7]b]¢^^©^’^G\µZÒX UØR«O­J$Cu:™1’)f"¥IA§ ˆF  ËÃÓã¡–Ïþú¼CR}ÁÇt ÿÏÿú=Ûø0Ñ€  ¿±"`*Z2¾:&@[DàI€MçS5W¹[±]˜^Ö_*` adbéd*eePeHe dýefeòghiijÑkÿm2m€m‘l„kiig©e—c—aö`F_z^Ü_d_ùaƒc;e@ghšjk kÕl lJlkåk1jai,gûf¹e­dmbÛa(_|^U]}]"\Ø\?[~YÓWéUKRÞP MÄIòE‰>6£.+&‰ ŠS·Ê ¬=«Údùö1\°~Œ±ßñݹ[Xm¬Ç¥JÿçÿÄÿåP[ùƒÒç šªÐ o'ã/w6o;»@SDH~M RUóY&ZÜ\p]Ñ_Ãaíd'e½fëgLgªgæh^hëiYi×j‡kkÆkjØhðfüdbaÎ_7\©ZœXmWvVÒW¹X±Z½\ß_Qa™c–e”fýhKhóiŸiÅiøi i*hFgjfje©dbô`ÿ_]k\ Z¶Y=WUUERãP³N;KýH«E5?³9ˆ1ó*J#U5bt÷ ¤ÄÚ"“µ,Öã1l[ñ…r£ÅÛ×úe^]|—§~%ÿÛÿ¼ÿü>Íàö„ ž¢¦;$À+›1ˆ6z9ç=#@šE IéNrQ¤TUšW—YÔ\{^Ë`³a©bbÓclc§cžc]c`cOcxb¹a{_ \šY±VÛT&QrOPLÿLKLÉNPyRÑUbWÑYø\#]Æ_X`?aa_a¼a£ax`é`d_ _]ì\`Z WéUœS“QqO L‰J GãFID\BT>j9Î3[,°& h/ Q ./+ô©döÛ!sl±s~±·®ª°Ã^ZNZi{f1ÿîÿ©ÿªÿâE3¶u©; ì D_„² u&E+¯/É3.6 9©=ÕBgF²J|MOPRVTËV¿XYÃZö[Ê\á]L]M\¢\1[uZÿY¡WÈTÛQ÷NºK…HŽEžCgA@?¥@îBID§FñI†L NmPÏRÂT¥UíWWÕX¯YYsYIY$X‚XV¾URGO|L‚IÆGKD»BŠ@•>Î=V:Æ7ª2­-F'#!KD(Ó í3 Œ9k××dy7Ɉ~‘ªŽtªÔEIBJKF3&ÿÁÿ ÿ·+‡µÏFÛ \z/0é!%)Ž,p/1ç5c9’=çAÓEmGÙJK]L¨MœNºOÃQ Q±QêQEPÃOÀNöMLK:HBE]B4?<9674Þ43¨4Ò68:#<…>åAHC©E¹GºI9J£K¦LÔM‹N'NNMbLÕK¡@*ADBˆC0C¬CfC7BOAv?¢=w:¡7Ë5B31w/ý.e,»*''L#iK -Ê ` ÚÏèOñÕüË«½üE];벓ˆ†lR8Dv¬È'.K[V8ÿéÿÙÿÈÿÌÿÓÿô G] ó»ªù ó ,jcËzõÌ!#S%Ò)B-f1Š5V7}9969m9<9_9X9-8µ8W7ž753»1(.²,)”'7$Á"â ô T !4"V$7%ÿ(*!,B.k0g2[3ä5]6[7y7ç87ž7A6A5:3n1\.ý,¿*ð)~(>&ö$ø" k±ác í 8,E×o‘øT^à°¬±˜n>+/Vƒž¢7AE=9.#ÿòÿÖÿÀÿ¾ÿÄÿÑÿÔÿÓÿ±ÿØÿ €×]µ — ¶™»ä¦ÿ©!ê%”)A+ß-ó./!.í.ô.-è,ò,+*(¡&Ì$Y!ò)Ý;ñÃjU1 %")$&'£)*+!+–+á+Š+X*Œ)ª( &q$ƒ"À!¥÷® Hµ‹ – Æ Ä=Cv²?v{Švv—Ü3S)׳¯»¸T!)Vwx;K:!ÿôÿÑÿ¾ÿÀÿÈÿÑÿÈÿÁÿ½ÿÙÿòK¥k`Žˆ•l  ¶É™À; m"ˆ# $¤$Ä$ü$k#¯"h!9åÆL‘`%êÌþ Î w ð È/”:Êy;ÍHŸ‡‡  Š ƒ ” …W…K’…Bÿ Ï =  , 9Ü$YZÀÕÎÈ}KV¥ý7GÚ®º×ص‚M'$2ObbWÿô85 ÿýÿéÿÉÿµÿ»ÿÉÿÅÿ¶ÿ£ÿ˜ÿ”ÿ¢ÿ ÿΚ¥ò´³’º " ,å¶«D¶‹a¨ýµL_}VJçd‡   · ÜL¹«˜S?숖¥ö 7 £ !®=”ÔÀ¾[é0ÏZBƒç Z ©è[³/¿4$b7Cˆ˜€D/bÁ åºÕìÝ­Y;78GY]OÿÙÿñ'% ÿûÿóÿãÿ¾ÿºÿÈÿÍÿÊÿ¼ÿµÿ½ÿËÿÌÿËÿºÿÔ€×:r  Q- û ^ — ? Ü+‘Ò&¼_ ® ü ö ç šJîb@€¸z\ÁÆnN+4Jl ‡ ‡ † S $ ¦6X þ ˜ бÉú ^-ÕK «š›¸Ä²†[?ZœßôáÒÈÍÝñï׬ŒucYGCRYFÿÚÿßÿ÷ &ÿûÿäÿûÿßÿÅÿºÿ·ÿÂÿÓÿÓÿ¼ÿ›ÿŒÿ†ÿuÿnÿkÿƒÿªÿÔÿÕÿó¶€¢ÐÍ”óU¹ÂÀˆJö²g²F¼/“ïbè”/ÿýÿ×ÿñ T“ðOÏYð{‚¸öØŠè=m–çQʵu+ÿæÿªÿ´ÿè7m~…s^X^†ÂïøâÖÏÎÖäæÚ½Ÿ‰ƒ~eLG>ÿíÿçÿìÿô%.ÿîÿùÿÿÿâÿÇÿ³ÿ½ÿäÿùÿÕÿ¥ÿ—ÿ­ÿÍÿêÿåÿàÿôD\RKLœÃQ¿/d’q>Öm ·‘{‚€}wiUGKJ9øãÛãâêñ&Kd„½æïàåãᾈD íÝéýô·d ÿºÿ¯ÿÍ#}ª lPLRpЬ×òþôñæÖËÌÑÔɱ˜—‘uN6 ÿýÿïÿïÿòÿìÿô2- ÿÿÿÓÿ»ÿÙÿþÿúÿØÿ´ÿ£ÿ«ÿÍÿðÿÿÿçÿÙÿÍÿÇÿºÿ™ÿ†ÿ‹ÿ²ÿÒ9iˆ‘£¡¡t&ÿÖÿ¡ÿžÿ ÿÄÿä +S‰¼ïùîÁxX<ÿíÿÑÿ§ÿ‰ÿ†ÿ†ÿhÿOÿSÿ]ÿVÿBÿ"ÿÿ*ÿcÿ¦ÿæ"!ÿÙÿ½ÿ±ÿÓCz‰|^Ya^k„­ÝùûèáÞâàÓÅÃľ³±œsB ÿöÿ÷ÿÿÿòÿî 5/ÿ÷ÿíÿý*ÿÿÿÏÿÐÿïÿäÿ¸ÿ›ÿµÿÿ<?ÿÚÿÉÿñ.J>#ÿìÿô2H}Õ?µÐ¡#ÁzD8+21BZ†Âçï̦i^O=,ÿñÿÖÿÍÿÑÿÆÿÇÿßÿôÿíÿÙÿÊÿÓÿïJ[Q/ 4cŠŸ–‰vil}‹|rªÚøúæÚØæëÖº°²´­ R)  ÿöÿòÿõ ÿöÿ÷ÿõÿáÿßÿìÿûÿþÿìÿÄÿºÿæ#H>ÿñÿóÿæÿÈÿ¸ÿÄÿßÿüÿôÿüvûVi&ì«yaORR^iƒ­ÈÍ®ŠaI7ÿëÿØÿ½ÿ­ÿªÿ´ÿ¸ÿ¾ÿÎÿÐÿ¼ÿ©ÿ¦ÿ¼ÿØÿú+ÿþ 5Yu„†‘“ˆ{w~‚“­ËàíöíÞÈ·µ³¦ŠlJ&  "ÿýÿúÿüÿñÿëÿñ ÿûÿ÷ÿàÿÏÿÛÿüÿýÿáÿà8^_8ÿúÿìÿñÿïÿþ3f~rO*<‡é'24ýáËÀ·µ±±·¸³žƒeP< ÿûÿùÿõÿý%((ÿõÿõ $1568DUt¡¸®vy‘ºÚêéê ýÓ¯ ¢§›yK)'ÿþÿúÿûÿðÿçÿæÿñÿý%ÿÿÿâÿÛÿë%<G>/ ÿÿÿúÿö 6e„‰yu”Éò ûâ˸³±µ·µµ§pZI4$ ÿùÿùÿý %,#9>F[zš°À¸¢‘¨¾Õæïõü" Ø¡|u}y`6ÿúÿü  ÿüÿøÿóÿóÿôÿùÿý!  &ÿôÿÞÿç 6E6"#6BG6ÿåÿí@·ÚàèåäçòúóÛ¾¦ ¥µ½¾Ã¹£…qf^VH:3* ÿðÿßÿÜÿêÿö 1:,$8BZ†´Üß˧—¶ØÝÕÖâù õË“bIBE9"ÿõÿùÿÿ ÿôÿëÿò ##$ ÿïÿâÿÿ0TXI,%7:-'Dcˆ°Îåêéèòþ ôØÀµ¶¾¿»¼´¡Œ~z|xgO>. ÿðÿæÿï #&"9Ke‡¤¼½¯ £¹ØèÜÌÔì ó·…Z4ÿüÿþÿúÿûÿü  ÿùÿïÿù" $1/!$ ÿóÿö<V`I'  &8LY]TYt¤Ôô ðÞÒËÉÆ¿¸¬‡…†€pWA0" +0' #7Sm|†Œ“£ºÌÔ̺±ÀØðâ²pI5 ÿïÿáÿèÿþ   Âw³ î ì0ëkþ‹L+ƒ¥q«åßðéÎÃæý(¢+Úƒ˜ €!ñÃËÛ!‡$¢'2'u&Þ$!|ßü5Ïz1  & ý ¨ ¢ ¦ Ê â ð ø ÷ ô ö ö  1 n ¹ ò  Ô P Y Ž õ A ‡ à [Ê8ÊYàëö÷ H–"Ç^ÙüÚ˜M+ õ„áΧ‹¥þJ± Ž   É ¼€v4è¤zXPƒG¤b;âm8L¹5t.I åˆú[üÅ Ì")"”"Ë$%%Ã% $!±KñSÅ‹D ä   ¯ š § ¾ Ü ö   , K r   Ù î ò ² P ï ¬ » ò > W [ g Š ´ ÿ I ²  ¥`%ÎA¥ç*w¾BéÄ¥_úJº¿Ò}óüÏòí°¬ÄÙóèu4 èTU å4<,Ó‹ý¯~ ا„xb¶QÎé˜Oi»×» /" #ˆ$ #¼#þ#Ø#‰"n!oW憵‘ U  x Š G 8 = o Ó / E S m ‘ » Û ú í Ñ „ ! Ï ˜ © Ù  !   " & ; W Ž ·  Œ - ± L½a×2”Ëœg „÷}èú.*ZrUr¬þÝr«éµb½Õ¤8¹o¬*núî) /:lñ¶Çç%1Mvñzc²Œ½*ÞC¨¢Å Ìæ,¬ 5 w Ì #ÅðÅ¿Ü ! V Ž Î ü  ( G h Ž ž © Œ d % ã · š ­ Ò ý  ö Ó ¶ « · ° Ö  ‰ â ª ÒÌJž‰`Z“œ8ªwuù¼Jšù…qþ¦‡ýü†,Êí¤ú›bÛYB÷.G¡‘¦þ‰øý÷ÒÅ;*^ÝnSG!<Ãõ§Í'QeX½¹– Ð p æ â ÓÓ    # V m ‡ µ é  - Q k † g 6 ò ² Œ s } § ± ¦ š  X : 1 5  & > £ å Ä % ´ûu Ž î  uL˰ŋ~-ñb?\^R;r2ˆ5߉yÌ)ñhhL´;=r«½­WJŽtiuݺ+{ó&ã»Ô$Êzr¾&Ì­lÅópêSeW ý ~ F i ø PÖõêÖàìÛÓæ  3 T w Œ š œ ¯ § „ L ÿ÷  = ` q d S 7    - * F £ Ø © —×PÆ è g D  \ = ­ `.“?Îì¬ü™]…ô ç%F<{9•›R>¨í[’Oû°ÏxÜ4|DMó‘Ü]:T•³ Ýå†X< ¾ - á ™ 5 ñ 9 ~ ÈÁ™uZ:ØŸnF. 4EYv–®Çîûç×ò%…ö F q Y ; ìááéØÝ÷ ; F Ô ö @ ) z í † — T Q  < é 2 ¦ - 0VÞ†ìîj º:íd¸‰7¥a*¹Lº/klˆ‚1é<½Ô<ü:( PÂ;kþ/X1 Á % ð  ÷ ÷ ¼ b I D 븇[8õÞ¥UÚWàHæÍÔàïçèü&N}±Öåñý>—*×]±©™f?')]£¬ø ¸ ƒ ë  b e  Ž   1 — ¾ û J ã s k«óîšLç‹7ýªD“ÑÖ¢{`i®7]  QjcÊ)Î H±BâXN¤Î4Is V ¤ , K vî–j.¿o-@?D=2-&çˆñ`ò£ˆd\\c`U?9EnšÊ÷'0k´CõŸ&W{]6 ô Kµ-k¯ : ¨ Æ ¹ ï  æ £ l s «  3 e ®  K Ë “ …RèZÄO Ï£r#ÎDÄ’ï…o£ÑºVÇ…5 ‹  — íhüÉß–Ñ ß \ û  ’ Ý‹nv‡‘>ÄèÛ¶×ñø¿†JòçÁjþ©~\dsŠ™‘{\CAFd‡«ÇÑÒÑÎëfåk¹¹›m\y‹âc‚éj¯¸ ÂâÙÊÈö A   Þ  ~ × A ý y å & d ¹;ÅpÍ‹)£- b û æ  þ Ò › s q Ò $ ³ å T &  u X ’ î < ½  #7GüäÒÁªa {ç<iüíQ°àØ,ÆfÑ¡cB9F>Gn•tH  4Qi|Ž›¥¹ÉVÊ<”æøéÇÄßä%Š,Óiõ+$D©]®í ( X  ¸  d Ž ‡ f n º 9   ë  D t Ê $ ¼{:­ Ò F !  A / ! 8 Q ~ ; … ¯ +   f Ø  ø qà[$ðsìŽX#ôÕzæ#rðŠVõç › 6/Ò€®VýÛÎö)QPAX`GÝ»©®¬µÀÕë(GbyŠ£Êù%Gjxvs‡ ¯Ð3²FÓ(/s•6Ò;„¡Ãö L Ÿ â é » ¢ Ç @ Ó G x f ] ] ]    ¢ î , Ô ¹ › ¤ « Î & ) ¿ aüá¶«»®{qì£q·¤žsÃB—ÂÃÇÆbn˜µ©‡;ó¦U%6v¶ÓÒ® Lÿõÿèÿ×ÿÓÿÏÿÖÿÞÿîÿû0Z†ªÅÒäéãÝÝöO”ÆâÕ¸­¹rÛ"K±#æ×¹a°ób³  N S / , # h m w c ? / > t — c = âÙ  I | [ vÔN÷Ú±›–t:Ä:¯F÷‡ITZ›!¿ZZ¤]N ­}lPIIZcyÀ ^ªÖý÷7ç²™˜„tjnt~€†¨Îìþñäµv.èÐÎÿ9m•„W ¸¦Ó+Wu‹ÂòŽv†dók¯úN¾*˜·€W•  † Ò   í ¬ l P Y¹¢wGE½Ö‰e¹šGóʵœt|ó¡{ydáFäÙÛy¢„ ÿëOÎ\ ¯GÞbóMŒˆ‡gW Îa󬂂vskks|‚~pkŒ†L›€ÙXÿîÿÙÿ× ?k€N ÿçÿâÿÎÿõC²ì?·_±hùh³ýk.¹º•ËNê [ c <ñœjpÿ×½¾ÝäÌeõK—à-¸YGNXCïeþë!JTJýy(/¡vÌÃ…ÁÁæŠ0*)ESX g P @ Ð ? N d N M  Ò ` î ‹ :  ò ã Ä ª œ ’ ‰ m > ï½uë`žÝôý [È—bs¡ÉËŽBÿíÿ‹ÿŠÿÞf´×ç BÇq-Ì0[ªwA–²ô`x¢v_7ð=,ëÍIÛoÔ!h²L #QjIðR‹ÕÏy ¹€Â>ìbº hÊVî°kA  ã Ð ³ Ç ùS»î¥5Z…c?勤=ì¨R½DòŽ® t ‹ £ § »ÀÆ¡VÐÜÕO&Gdl)ÿ©ÿ=ÿÿ`ÿ¾(o†}”ÕyQW…¶9É  au‚kL@fÚ×ÚÆ†9Ö„*Ò]Ç9¸Š~´õ ÜZmÊËa <­¦ž›Tõ? ½ q k‡<û—,â˜ÅíÓ¦`€Ò òß‘FÄ/†ñlâkû—5ÈYÉGyˆLÌ•bI ô f ”Ò=Ë‚êmcmPÚ,ÿ}ÿ:ÿKÿÌF•œvIR;·ç!hÞKƒ¥ß5£ÿ<IJQ{/;P(Ñ…3é W¦X#GdUÖÞ ,*×Ù:J[·èR   õnªÈñA¨3×þ, "h$Þ&ý(í*++=+j+*Ö*Y)ì)L(”'Á&ó&G%¯%C$Ò$z$ #Ò#—#8"Û"!~ö A_±ú, ! ô»r–Çæe}{1yÿ¬ÿþýÿ@ÿÚX‚8U ²%KY­g‰y}ÊF­ó5Y{¦q$ðË™_+úíò#/63)wÛî)iw÷û£ Y ·³¤É È!±"J"g"§#^$G%î'˜)Ý,E.Ù1z3}5;66Ò6à6è6r5þ5U4Æ43R2u1Š0Ñ0C/ö/—/W/.ö.÷.á.Í.'-W+Ì*E(*%ò#‚!CµlHÛ8L D&ô7®a1x^ ÿ[þ÷ÿc Ž7Sä…Óäÿ"vžk2<˜yÍñíýä´¼ÖÙ¼Ža?N€´´©²à eÉ]®¥ø3 +eÈðzL ð#õ&à(Ö*²+¬,v--¶.×01à3’57Æ:+?ª@UAA%A*@´@@??>p=±<Î;Ö; :v: 9­9]98ù999/8Ò8B6û5Æ3á1ã/K,¾)È&©# °!Æ.>Í/ Ô—{È.kQBÿ&þÔÿÿ×Ha&ÿý8ÆX¡‡Da}Vínýz°© /4b|oI[«¹ôi9øíÂR } øÁAN!'%7),¤/R1ð3µ5m67¨8£9¾;<\=Ö?;@ÏBzDRFOGøIaJ(KKDKgKJÊJQIîIXH§GÈFÚFEE$DªDICíC»CšC‹C˜CFB·AŸ@¨?1=¾;ˆ9<62¦.ì+^(<%v"ÅÕhàúÍ " Æ¿;)üJ ÿPÿ†>NõrRܰ¨¥bR„øx¶¤ÿ—ÿ˜ÿ©ÿªÿ¹ÿß ÿèÿÉÿ½ÿãhŒ5=˱K ¨ K›éJd‹ Ì$s(E,N0b47–:[=&?%A B?CjDAE!FFêHI=JÚLN§PêRöTÂUåWWŽWáW¨W‰W$VÊV&UfTzS„RÆR?QóQQ)PÄP_PO“OGN’ML'JéI‹HPFŸDçB/?.;G7O3B/Ž,([$¬!$W.êœ # ùd,fÂÿoÿHÿ×3X ÿàQÓè—7ÿñÿóÿòÿú3—ØÓÿªÿªÿ¿ÿÎÿå1Ìz)³” ´ ¡!ë%*(¤,t0u4P7÷;ž>ôBLE/H%JVL`M}NƒNïOROªP PïQ÷S®UoW©Z \N^Z_¾a#a½b(bba¾a{`à`&_=^N]¦]=]\ç\¤\Y[ä[uZËZ6YW°UðT`RùQ¾PuOAMFKG¦Cñ?s;$6·25. *:&§"îëª\èo   ÒÒ틼QPÁw?ƒŒ4ÿÒÿÀÿé:s†ÿ?ÿCÿ^ÿuÿ˜ÿÆÿçÿïÿîÿëXðV‡ù… 3 ‰%8å ’$ã(²,3/ÿ3ù8<?«CFÂJ=M´PªS©UÆW¼X¨YsYYÁYùZR[>\S]í_paBcB9|4þ1E-ë*<%Á ±°Si[ I mëKcâ_™ÿè+KBÿÇÿÚÿóÿáÿò:ÿìÿßÿìÿù,m¸]ÿ)Ü é@—W T%ß+†0ã5Ü:C>ÁCGƒKqNÿQåTÙW·Zã]Ù`¯bÕdëf8gkhhÆi5i—iéjCjÎk‰lClÅm'm•nn»o\ppVp\pBplp¼q q=qpžpo¦oœoîp%pgp£pÝq3qSq^pëpGobn³mïm/ljãi(gqebÁ_¦\XT4OIñDä?ô;¯7ï4-/î*ò%À yJåú• ’ÀðÏœÆ,ÿ¿ÿÊ>ÿÕÿØÿøÿþ+šmWL`D–Y†f : ùÒ´°pÿ%8*Ï0 68;Q@AD½IqM¡Q¾TüXZc\ð_m:h5ä1,+¶%Ù 5,𙢠(ÛP@ fsÿó-ÿúÿèÿð (+3½bçè£Ü¶ p #îª\ÙR$ˆ)Ò/¥5¤;x@ñEìKOÂTTWò[d]ø`¨b¬d¡eügEhHi€j}kUkÚlJlÄm†nLnãoHo£pp®q"qMqpÊp¥p¼q-q±r%rOrorÉs=s´sítsÉsxsBsCssÑt,tˆtÒuu&u8tüttsÐsÃsßsÅs€r”q¦oún2kÐi‰fÏd `Û]ÂZV8QçM¶IcE4@©<&6µ0°*>$”œ. ­¦Pl“1gÿóÿöÿâÿ÷'+2 \ Û ] ô Þ Œ ) h•ýª& P$÷)¬/4Í:¶@hEžJªOSTrX°\o^ãaRce1f•g¢gÞhhhii~iÉiÿjfkkØl‹mWn0o'pNqq—qŠqoqfq–rrÂsZs®sätDt¥uu-uFutÜt§t›tÔuupuÐvv)uýuÛu`t³súsms/ss r×r^rqoøn$lGjgÌevcU`á^T[ W¤SŠOwJîF©A•<%5¸.í(m"³¹em +YSÚd"8ÿäÿæ0C~éC¦y2 ’ g%)÷.Ç3à9›?¢EpJ¸O`T9X±]‰acñeYghibiàiði^CöI•N›SW[h_ÈCŽHãN+S&WJ[9^ŽbZeFgçi iñiÔjihÌgMeÔdbz`æ_0]õ\á\«\`]/^`LbÈeøikÞnzp4qÎr“sSs—sÏt tuuyuîvŠw*wÇxxTx6xwËw¶w°wŸwwmw"vËvuLtrÃqCoÓn¥m•lÖl kvjÈjjcj¶kkwkÌkólk÷l2lkÏjqhæeæbÎ^„Z†U0OpHmAD:3Š-&þÍ( ` <ƒú¶Ëÿûÿïÿ½ÿÛÿÿ;m1d0í0;/ˆ/Y/;0?193å7;”?ãD‹IMœR‡VìZÙ]àacšfWgìii ihdgÑfzdÖb¼`á^÷\øZþXÚWNUóU¸UqV†WÀZ_]1`¼d6gyjlüoDp£qér|r÷sWttÅuiv vÍwtxxUxƒxNxw¡wHvÓvVuµu,tYsnrp±ným?kzi¸hFfÙfe^e7dàdúe.eñfÀgëi'jNkLkõlÂmmAlkÞiðgêd„a%\^WƒQUJïCè=?6]/T( >€i ãT…¢Be<;²:ü:Q:!9ó:ì;è>¬B F˜J¼OS¥Wú\Q_²b±dºgh™jjRjWiLhgfÌe+bò`™^[ÅYW T¸RPP¯O5ONÞP'Q†TGW'Zë^ÃbœfJiHl.n;p>qƒr«s{t…ujv3vÒwŽxx˜x·xÒx{xwMv{uatFsrpÌocmxkmi%fädàböa~_Ü_^u^Í__ð`Ôb-cte,g"i/kl‡mïn—o*nênÌm®l‹jgRc-_Y¯T!MsF¾?u8j0è(µ! ™7 9ÿ_'f†d8_}FžF[E¾E,DüDÄE¦F¤IMLtP£TqXe\¢`Vc·e÷h)iajÆkkDjFiPghelbÊ`']PZWæUGRÂPM¹KhIùHžH}HlI¡JËM8OÀSkWS[•_˜c2f½i·l¸oqKrët¢uÍvÚwyx8xŸxÿxìxæxLw¦vItÌrËpËn¹läjïhÒfYcÀa^\]ZdXþWRVVVÙW¬YNZè\Ñ^ƒ`…bËeJgÉiákãm nn4nn+mãl]j›g`d*_¬[PUOmHIA‚:#2O*}"×`:t ^׳$€ÓþÜQ\QNPÐPSP"OîPÄQÇT=WZ§^a‡eEh5jœkÝmhmônnm£l·j¦h¯e¾b„^Ô[WXTéROL>IcGDÑC€BBB"B CC×EïH=KöOóTXÞ]aee`iYlšoÀrtUuÉw wÓx®yyUyxÛwøwuKsWpšmÍjÈhe<ä<Ÿ…6Ë/'º!;™E6 Ÿó‰ìÜaÉbˆbÄbÏbÈbÙc|dPeÅghÿk;možpÓq°q¦rq^p8mŸk.g‰c²^ùZUUQMOIjFBÍ@K=ë<$:.8Å7g6Ñ6C6–6½8'9Ë<ù@HD¶H÷NSTXè^Vc:hküoØr…uvˆxxÃyuy7yw³v rÿo·kAfÅaÔ]X@SHO"K_HÔFYD‘BŽA ?a>Î>?¥@±B³DºGaJ LîOžRyU]X³\^`cbf'hêkm_nÆp0po—m®l.iGf;aI[éUNOBHcA91a*""轸 < Î`išf%gRgüh]h{h¾iIiòjçk¨lân£pdqÑrarÞror;p»nâkšhzd$_wZ)TõP/K¹GèCÏ@€=o;e986g4ù3Œ2Ã2222;3S4{6ý9•=€AbFxKÓQÍW§]@bÐg‘lGoÉs/uJwdxWy[y=ySwÁußrmþh§cd]ªXRqL’G¿CY@¶>Y=;}:a98¡8ž9È:í<º>\@BÆEwHJåM“PÂTAX9\*_úc¹fêj&lunÒo´pJoRnlXjgf©bL\xW+PíJaBù;€4,¯%ýKÐV Ùñ+iþk„l„m!mXmÄnDnÐoloËp”rsdt@t=tesr»ppméiçeþ`Þ[aUzOÏJÌEüB=Ù:¿7ê6D4Ã3·2Q1 /Ä/.j.x.f/ /™1W346¡:?*DKQvWÝ^c—imFq‚tHvïxyQy1y`wªu—q,l‚fH`&YˆSL°F@Ã;Ã8Ñ6;53¿31ÿ1ä2%3~4ç6Á8L:<>{@ûCÌF\IjL›P­UYÎ^bÞgj0mco:pÿqpøolnRk“h;cS^ÑY>SL¹Ež>6¥/r(!T‹ ²÷k&lànnÒo o»pOpËq?q—rPs¨tÆuZtòtÕsyqån°klf±aæ\UíO½IÇD»?Ñ<8E5Ç3}2a1_0Ì/î/%.]-å-Ž-y-5-?-)./1Ó4Ž9B>NDëK›RŸYl_˜eÃjÏoàsLv‡wéyAyyw6u phksdÂ^%WO÷I?B[<È7z4N10`/.–-Î-å.@/”12Ã4'56ò8Å:Å=E?ŸByE4HúM+RXWž\ÊaÁeÁi¨lYo?pyq:p_oónkÕhdn_¦[UNÝG¶@Í9‰2*¸#q» xlŠnsoÕp±qqòr¢ssWs£tIuƒvfvÂuþus—q2lÿhëcb]¤VûP4I¯C^>K9^5ø20¯.ú.}..-Ø- -|-R-+,Å,+z*Æ*ñ+3-*/,3v8">ÏE”M Tƒ[˜bºh²n•rv7w¶yx xqv8s×oiÍbÅ[ÎT>L¼EŸ>\8«3O0W-Æ,í+Ó+u*Ý*ÿ+Y,u-­/00õ1Å2ô4J6b8“;p=øAŒE{JÃPPVF\aeÍiTmAo”qZqcq¾p²oŽlãjfbo]xXQwKC¶<54i,£%|<«Ml¨n©p-q$q±r½sŽsòt%t’uAvQvÞwuïur/nái´d¿^{WçPÁI¤C=<ü8X3ë1D.–-x,{,¡,Î-_-Æ..‹..k-¢,£+„*t*)·*à,/®3ª:@tH6OñWÇ_«filõq\užwlyx’x?uÖsan¢iŒbÀ\ T°MKF$>Ï93»0Ù.d-,_+Ô+)+ +?+ê,¦-h-ö.Q.//€0ä2–577:Î>EC0HkN—TàZ¾`"d{i1lzo_p†qÅqˆq`o©m¬jng˜c‰_-YdS©LÉEÀ>6i/'k!h¢mo0pærr´sñtÔu&u;uÃvhw-w@w1u t pql9f`IYQQñJbC<ß6â2à/-H+e+ *Ï+’,G-G.=.ù/Æ/Æ/w.C,ø+„*-)\(Z(³)+ù/450;eCtKT\’côkp uwTy{y-xýv‹t oYj_cÛ]‰V€OWH)@Â:¿5(1ø/@.1,Ç,+R+*ú+3+{+¸+Î+¡+S+*¿+N,=.j0c3˜6Ú;¢@šFæMˆT;Zv_Äe?iem[oœqÊrgs.rWq)n­li`eöa\UŽNôGp?à8R0‘*9$l™nÄpŸqærºtt÷uCuWvv¯w"vv8tqÌm%ha=Z¤S4KeCî<»7?1î.Ö+þ+ )ý*?*œ+À,Ñ./`0I10õ0u/,-þ,­+g*W(ÿ(³(s*,ô2N8?ðGêP‰Y `¾hWn sŸv¡yky˜yÚwºu„q(l˜f¶a&ZÝTbM„F_@:26U2ð12/*.,é,{,, ,+þ+À+/*‹)Ù(ÿ(Ó(Ý*1+….R105•9ò?ÎFM S¹YÕ_ßdÈi²m p@q»sMsržpºo%l|iØeÍaŸ[ñVO>HWAF:3ê-íkÃmöoóq`r[sÍtÁuu4v3vãwvugrµoŒißcõ\mUM!Dô=¦6¯1Ø-$*Û(×(¶(p)E*+Š,é.d0 11è1“0ü/Ç.à-Ì,Ÿ+K)Ÿ(¶'Û)?*å/¡4Ù<„D*L²U]e4k­qøu™xïyƒz1xnvŒr“njidB^³XæRoK°E[?<:»6¨41R/œ-ÿ-P,°,…,Z,+‘*Á)ð)'ô'D&”''‡)­+ù/ã3¥9 >ÙEÑLÁSœZB` eîj_n¤qs`sÄsær…q\o>mTj.f×aø\óVÉP‘JCM=„7Àj«lÀn¼pCqYr¾s§t tSuƒv&v*t s‘p¼FXMáUî^NeÅmq½uÒwx^w¦w"t×r1nPjàf—b5\§V±P9IÎDB?;S7h4æ2m1™161¿2521~0 . -+ë*¿)9'ó&•&”&÷)6+R/@3C9'?WF´NUN\žbÍhÛlãpÂrHs”rùrFpÇoßnFl]iOf9b7^.Y‘T­P.K®i‘k;mn¤oÔpÞqyrrs¸sÒs2p¡n§jd†\ªUGMDsï:Ú8.5r4ž4y5~6r6“5þ4&2=05.¯-K+˜)â'ß&ï&r'Ì),5/T4Š:ANHŸP_X^Øe‡jCnÓpôrÜr¦r-pÜpAo+mÁkri&f+c=_´[ÃXTOikl¬nNokp"pq8qÓrÔruqlnKkµfˆ`FWÿPVH'?]70s+¢&£$-":"h"ƒ#w$%&'¬)¨+Ë-¦.û0&11ú2÷4d55(4 31Ò0‡0#/Û1o3)72;gA¸H$OëWÿ_Þg±m;rtuñvvÇvtùr‘p€m=jdû_>X‡RL\FõB¾>U;T8?7X7M8©9û:L9É7—5+2€0€.Ë,ã*â(k&Ê%¥&4&Ÿ(í+7/â4ò<%C}K¨SÇ[;bhmFoîrkr˜rXq0pÝpAoTmµliûh eŒb_—\·ijjÈlPmæníobo˜p‚q3qëpöo…kÝhŠbÁ\SÌLD;W4-ˆ)%1#?!Õ":"d#2#Ê$½%¡')+,Á./C0X1x2°4V5b5â5T4½3Í2Ç2Z239427;:™@UF@MÐU¢]†edkFpˆs uUuÄv”vu]sqùo3lsg¯b[QUO“JqFJAÍ>q:ï9ª9h:Ä<ÔDhKËSW[/ci[o r4töu˜vquõuwtríp£nmiùdd]žWnR6M‘I½EVA™=“;Í;M<¥=Ø>5=Ì;²9d6z3ê1‡/I-*;(&Q%è%0&&ù*.5D<DCLTTY\„c%i[mpÍqýr’qØqÇqq?pŒožnvm®lšjÿiUgÝh@i9j|kûmmsm´o oÏp nl g~bÁ[àTÎL¸DÌ= 4Í.Š)L&Â#ð#"‰##?#¿$P%%¿&½(()–*|+=,;-ƒ.¿0L253Û5(5œ5ö5Ä5†5S595§5Š7X:?VD»KÁR×ZEaØhmöqPtPu uÓu7t¹slrhp^njyeE^ÒXãSòOÂLKH6DT?ï=~>G=À;ç:7•5#20M-õ+!(à'&†%£&%&)`,Ñ3 9zAjI(QYN`Vfûk[o·qƒrµrJrMqþqñq}p¨ošon:lèk”jgEhiAj¿kîlTl­nIo&oElïj”e–`-XÖQ¬IÇAÃ:2+,‚'×%õ#Û#|#F#Ü$$Ž%"%Û&e'$(A)B)ª**ô,F-l.ó0Ï2ª4Q5T6/6|6Ë6é6þ7Q78¶;M@pE€LR›Y–`¿fÇluoÖrêsÙtÆtStr×qÖoénCj»f(`EZªUÔQÇNsJ¸FéBG?8=”=ø>X>g=«;å:U835í3h1.¸+Þ)Œ'º'&&0&(&*Û0–6º>¡F,NVN]¯dÏiãnéqIs rçsr²rÖr—qÐpÖppoïnÙmÆmfRfõhi‘jÕkTkÖm±n™nŽkÊic¨]ÀV+OGV?@7¼01+2'%Á$D$<$$$¡$ï%m%÷&“'' (f))%)l*0+g,M-ž/S1I34„5¨6h7N88¡9_9¼;»>—C’HsNlTfZ¢af…kŸn»qŸr¥s­s_sqïpØnómXjFfyam\sWÃS˜P L‡HæDO@Ç>[=Ý=¥=r'¦((w(ˆ(Ú)˜*­+J,h.0=2H3ò5:6F7ª9:1;tËAÌF‘KaPõV][Éahf=S<î;±9ß8C6`4^2504.+¯)¢'ï'&,& %w&¨(&,¨1à9Q@cH7P"Wé_Ïf.I,þ+µ*“)ˆ(b'K&.%Z$”$@#›$$š'‹+17X?!F¿NçWh_f†k™p‰r[s/rbrÙr qqoåo'n±mÈml´bçbµctd€fg‚hêklk›je!`§ZRÕJÒC|:Œ511Ï.Õ-–,f+Â*±)º(ò(J'”&¿%½$Ô$#­"é# #%u(J-ü3ÿ;ÚCoKÂT|\•dii÷oq´r±qÊr@qòp¨nûnm—lÁl?kñba×b—c«ekghškkiQd(_•XöQØIßB{;E3,â'¿%ò$\$è%}&}&ã' 'Š((©)$)¡)¡))(¿))s)2(É(§(Ý(ÿ)•*%+z,s/L3%8¶=±CeISOµVI\4aõeãhøkn[qssátçtåtƒs§sZrÅq·pgoTn{mîml%i f¢a\@U×OËI_B€<+6 1Ú.#,k*Ð*(é('ƒ'+&Ð&8%O$[#¬#8"k"J"#Þ&+l1H9A@×IGR$Z€b›h‚nspìrq quqoªmèlêlxkÅk|kTaeaaÎbád¾fžhSjÖj˜h’c(^sW×PÀHËAM:1Í+¹&æ%j#ò$‚%3&U&Ý'7'³(X)&)ß*Š*¬*b**|*Î*s)Ñ)‰)p) )2)4*Y+D.¥3&9£?jEßL SšZ¯`»fªjXmnxpËrsåtvuhu~tés÷sÃsrçqøq"pkpoZnÐl¨je_çYKSLDË=×72 -¤+L)(#&Ï&$%ª%¢%©%l$»#Õ#>"Ï"!Ö!["Â$m)O/7>¬G*PX `÷g2m…p9qipNpªp+nªlÕkÆkej×jÈjË`(_é`Îbdf:h jj g³aü]VOnG?ö8£0p*„%ù$Â#f#ô$®%Ý&l&â'y(e)*¼+È,O,,’-H-±-~,À,>+¯*ð*Ž**í+Æ/x4I;AA|HjOµVý^"n#»(G-Ø5ö=…FNßWf_½fl˜oyp¼o—oçoWmÅkòjêj°jUj…jÀ^ñ^Â_Âa c[e¾g£jiAf`‹[{TÚM¿Eà>\7.ú);$û$"ß#t$5%Y%Ò&G&é()–+;,­-§._.î00µ0Ì/þ/A.0-,*+'+Ã,s074þ<"BžJQåYœafál—oxqNqir`ss±sÿtetztKtt`t t†t>t4tsÐsr³pønéjÇfv`VZ+RìK‰D)<à6Ï0ç,ì)B'E% $#^#‹#Ð#ù#"û"Ÿ"P!Ä!„!"#'E,©4Ã<Ì5µ-±(&$-#€"‚#%#æ%%~&&õ(”*“,Õ.Í0U1²2Õ4‚5n5Ö4ë3Û2:0Ÿ/u.!.‹/)2Å7=ÕD&K§S«[ubñham¨pqzqTrr“ssEs\sbs€sÍtEt¤t²t­uu5u1t‡trwp¡miJcÃ^ WOþH±Ai:ð4/Û+‚(Ó%ß$d#B#D#P#g#"w",!ñ!u!B Ú!à"Ñ&è,$4#;¬D3MUe]wcÁj†mÒoXnKn¥n loj³iÏiîiüj¨kXYàZ‡\j^ÅaÊdïfþiihd­^X‚QÂJ‰BÅ;X4Z,o'#m#"0"Ú#š$É%f&X'})œ,./1‡3‡5u79?:[:æ9¶8>642Ž0û1Z2 5 9˜?ïFM­U¼]|dÝiúnÎpºqùqœqÔqìrrLrjr“r¼s!s«t\tòu‚vDv vÈv1uÎtVr¸o’lxg—bk[¼UM¹F_?s8š3).*†&¦$|"Ø"°"‰"™"*!ª!k!O ù ì ª!¹"£&š+¸3š;CLKT—\„bÅi¢mnºm»n"m•ljaiœiêj&kkâU¤W(Yë]/`ßd—fÖilgådZ]iWµPàIšAß:n3‚+¹&›#%"ì"4"ô#¼%$&!'¬)U,/M2Õ5à8Y:Ò<Õ?W@A?š=È;.8Ë7*5o5Ì6¢:-=ÔC©IŠPÄXd_§f¡kMo|pûr/qäqàq›qvqqªqørrsssùtöuèvÒw>w›w6vÞu„tquok fº`´Z‹SjLLE8>,82F-À(Ö%Æ#i"Ô"-!ú!X Ù ‘ [ z V!o"e&R+]3&:•CK¨SÜ[»aÿhålonm!mŒmkniÕi'i™iëjëkûQNSÐW[Í`*dsfÛižgôd1\ôWP'HÖA%9®2×+6&T##"f#;$ %¯')5+^.«2Ž6¿:i=m@|BáEµFæG}EÐC¹@¾><::7;>­B#G™M3T[7aûhlàpSqRrrr`rmrqˆq2qqjq r;rÿtuuìvËwVxwêw˜vMurþqQnJjìe–_õYR9KCÒ= 61+,'N$?#.!ø!t š ¿Ä«äÉ Ú!È%«*«2q9æBYJìSZîa>h0kÆmyllíl_jÅi4hši1i›jÇlK‡O,T Yq^«c³fui—hdR\ùVóOïH•@ë9i2Ÿ+,&x#<#,"«#¸$©&¤(†+R. 1è6b;%?dBÞFgIKúM#MÑL&IûFàDB!?ë?ø@ÉDCGšL¿RXD^´d´jµnwqIqéràrésr£qøqLpÖqqVr4sttÙu|v7vÙw·wÚwˆvNu8s¬rpLm¼i&d$]©W|PœI{BQ;P5.”*&H$”"“!‡ gí~|`’a X!9%)ð1¤9#AŸJR*Z`ƒgojôl¯k°kþk:ihg¯gg gûiAjÑEŠJ0P V“\»b–eÊiVgÜdE\ÖV²O‹H"@{8ò27*ê&V#"ù"›#ë$þ'D)•-0K4Á9Ö?)CöGßKÛN·QÆRïSÇR1OëL¯IüHEìEäFIêMQþVý\³brg¤lép&rŽròsšsdsNr¼qþq;p|p}pçq÷rêsÓtƒu#uüvÅw´wÛw}vbu“t†sÔrplg¤aª\UN£G6?ê91ø,¸(n&%#V!¾ ` ™Ÿ}™P ) ù$¯)R0Ó8J@ÌI$QY_Ÿf‰jkÓjÓkjgøfeYffYg¼i†>ëDvKñF£O-W^‘bäg„fÓdG]TW,O¦H:@©92j+u'#u#%#%&¨)É-'1¶5ó;9A>GML»PûUXXU[N\‚]Å\ÅZ¿WãUâTËStS‘SøVIXÊ\¸`ºe"i‰m,p¤r‹t)tQt}sÓs%rDqpûp+oýpAq9rsttùu·v3vãwvðv:ušt·t r×q«o&lIgâc·^WíP—IJAº9À3E-è*b%û#I!{!8 Œ JïÞb  á$n(¡/¸7%?ŸG€OW.]Úd‚g¯i¡hƒh&fc`2^µ^ð^¨_ëaÅ2D9†BKPSó\afBf;dš^9X0PnI A…9Ü3%,Q($,#º#²&+(5+ä/Ý4ä9t>×E K#P”T¶Xò[Æ^Œ_¶a`S^¬\RZÄZY`YºZ[é]úa@d—hIlo qÏs2tgtrt‰sïsDrfq­qpXp p,pìq«rÀsõtåuqu«vBvˆv˜vuRtLs}rxq©oêmèjUfÙa‡[ÛTŸMYE=w6Ÿ0Æ,—'~$K"8!Ú â céÚN ô$£(Ü/ê7e?ÔG„NëW ]¯dfáhÍgxf‹c _Ë\OýM€JuIûJV!\*74Œ?{JTB[“bëeHgbë]±UCMêF=Ô6ˆ/§+@&p%œ&*>-Å38 >¸DAI¤OT·Y®]`Kb cåd«ege@dÞdWd d]dÝeêfÏh%i›kym~oRpÅqÜs:t?u&u^u_uutÈtfs³rßr*qq“qÛr‡ss€sßtt^tvt‘tPsýs@rRqrqpœp nFlªh˜cª\kUMvFv?ð902æ+ì'7$ #A!Ç! 5 7 P"&ä+Ù35:÷CdKRcZµ`äfgThÊf6bÂ\~V;PJ¶GBÉAo@ò%á0L;+F PìY;aVdµgÙd÷`“XUQ-I-@¾9'2 -X(&ü'`+É/Á5€;@AhGBL¾RfW,[â^÷a bçd‚e+e§ePdÌdKddxdÜeÌfºh(iœkvm”ompÍqªr¹s—tuuQu2uJu>u-tÊt=srÖr”rµs1s|sžs­s’shsZs¢s·sƒr¶q§p±p]poºn8làhócõ\ÃUÎN®H2AÌ:Ð4 ,Ü( $®#Ã"K!ˆ f e ÿ#K(›.5Ÿ=ƒEóMØU%]\cg»hQiUfatYëRÂKºE@$:É87!»,66òBM|VÀ_›dhfýct[nTŠLsCñ<4Æ/Â*((»-N1¾7ÿ=ØCöJO¸UOYÂ^D`øc cËee£eæeMdfc¶c›d;d¨eŽf‰gýiek5mNoFpñqþrüs•tHt²uu&uju{u~u#t§tsHss3sªsÛsÃssArórís\s†s!r qpMpoþoän£m†i±d›]uVðPDJCo<4ß-‘(È%N$H"Ï" ™ 3Ó!û$¨*L07í?òHbPkW²_ÍeiMiFiãeÛ`:WoOZG^?Œ9Y2ê/½-6å(h2³=ÇIfSm\îbph]heÁ^ZWáOÆGp?~7î2},~*°*4.u39¡?^EJKuQ3VÓ[,_‰aúcÒdFeNe‚e†d{bßa}`êaba¦b•c”e&f¡h©jûmroÙqŠrñs|sûttft£tÿuut§t!s‹rõrÚs,s¯sésÂstsrÙrãsKsOr§qp«p/pppnÿméj!e0^RX=Q¾KNDH<£5\.)_%Á$‡"è" ” l Ž#_&y,n2²:ËBÜK*SQZub)fÃj`i¡iud}]ßT+K_B©9Ú2ª+s' $I|Y$Ž.w9€EOPZ4`ÇhigíaZ÷RÈJžBœ:Å4é.¹,«+—/4K;@@ùF¿LëR²XT\`Úc*e eefeÙe§d@b_ß^^‡^œ_²`°bYcèf0hÔk½n—p«rpss¥s§sÒttvt½tÔt}tsvròrÚsss¬ss.rÈr…rsr£r‚qÕpåp6oâo¼oµpo1n$jyeé_zYÆSJL—E1=u67.ò*&1$ª"È!ê e “!0$ž(,.‹5l=ÙEëMûV>];dyhCkAi¸h¢b¦[P€G=Ä4+Ð#Í]V’ß Å*25 @½KçV€]þf,hsh¸bí]LU MUEm=g7+0ë.™,Û0 4e;1@¼FiLfRW³\`bide*e³dñdcbƒ_Ý]Z£YÎYcZ…[‹]‡_Wbe8h¹ln¬q r1ss/sTsbs¿tt sÕs`rØrkrar”rís!srÚrƒrHr rqÞqUp¦poÏo¬o¨poKn1j¸fÄ`Ú[97/Ä*˜&Y$w"?!g  Ç!Ò%Ð*0ù8iAI PÓY0_åfhikHhÒfu_ZVùLBg8¿.u%Âj¾o ¨_í%â0’<3GÂRÊ[ dg‡iKdš_nW-O¹Gï?À9)2ß0K-ô0a4:?öE­K‹QVÈ[^öa)c©dvdôc¼b¡`/]RZVÓUSïTüV-X°ZÉ]àaueilÉoÏqirÀrõs0ss6s5sr·r$q qBq\qªr&r…r–rvr,r qørqÑq[p°poµoÀoép:odn1jøg°bU\¸U›NŠFø?f890¸+.&‡$I!· ãÄ ô"N&Ë+Â3j;WDLSŸ\:bÃhjkˆh0d\SS:H>4)< k à P9(!–,7LBëN5W8`žeh_e@`þYR&JB|;¥512/80¯3&8š=~C!H°NS˜WÙ[]«`8aa¸`L^ª[¤X UFQOEMpN,OcRqTýX®\Îaƒf*jm½oÜq±r2rÀr¬r¼r~r7q»qp¶p{pÅq9qÔrWrrlr)rrr7rq¾q$p{p/plp©pÁo°n‚kƒhŠcE]_UèNÙGh?Ð8…0ò+@&Q#á!7 •¶!T"þ'ü-É6>&F›NŸV'^¾dÂi²jjˆf.a+WþN„C9>/.$m{#g è÷ R?'x2X>IœS\]-bg›f-bÿ[tUMŸE¢>|7´40ž1<2q6Î;$@­EäK PoT¨XWZZ\ ]H^\ŠZmV¼SDO°KôIsG GRH]KæO#S¾XŽ]Ìcgckœn,pYqrrJrrWrqžqpßpÕq7q¥r$r—rºr©rfrKr6r qöq·qvq4q.qˆq¢q|pVovlÇiÒd=]÷V.O G™?Â8F0¾+%ñ#U · X¤!#‰)/¾8š@½HíQX§afwj”iÉi^cû]‘SpIž>Ã4=*oÛê s"? dÏ!"ù-08DHNŸX­^ìeWe°d"]µX1PþIƒBE;6‡2Š2+1ö4à8<ýA FwKdOdSU%WWoX+VÔT°PÐMIDE¼Cx@û@þA¬E1HÂNS€YR_c×hƒkwmüop|qq·q½q±qpq3q;q~rr„rêsNs[s:rãr°r}r9rqáqçqúrrkrJrpËpmIiÕc£] U%M×FQ>W6ï/°*h%Y"ã ¬  ?"w%+C2|;oC\K&SmZÄbƒf¶iñh fu_áXFM¥CÂ9J.®$¼¬ ó"l˜Ùc€(3$>àIÌT[1bÑd×dû_Ö[9TXM…FD>­94V2æ1U2Ö4Ê8ó=A¹FI¥McO±QŸQÛRuQ"OIK–GCu?Í=ž;Z;d;¦>ÄB,GúN!Tó[s`ÔfiTlBmžo2oÚprpwp{pfpTp q/rrÇsYsèsõsºs=rôrÒr²r¶rÆrÞrèräs rØr©qvp‘mZiTb­[òTLqDº<É5±.¾)¾$Ç" ¾!R ï#r&Û-Ú5}>NFMsUÕ\äcÈf»i*ficb[~R½Gµ=Ê3µ)IÏܼ¹í {p<"ë-˜9DPNâV±^þb]d_a ]¨WdQ…JBó<„74X1£1¼24Ê8<-?½BíFiHÓJìKPK¹JbHúEßB.>':u8L6n6·6Ú9vàIÈR][C_Þc·b2_÷Z<¶;b96Ú4$0ó.¤,Ò->.0´2û6ß;@ËFÚM+S8X#\¦_ûcˆf7hÌj“lSm•nÐoúqrr¸sÔtYtÓtºt…tsàsurÞqêp×oÜon®nºn/mGj©gòcY^«XLQJ7Bõ¬HÏRoXé_¾aâbÐ_:[ïVPOIaB;Æ6L2².’,–+ ,-¡0123«5™6“736:4ò2¿0Ø.º,@*c(Ÿ(Í),=.®2d6:ë@;F)KûQ"UßY¶]¿adUf×iSk;mn¨pzqês-sÍtmttt(sØs rp¼onnGmRl‘l!jìiXf"bØ]õYRÃLKEr>È8¼2£-ã)&–$%$ù'p*F0&6²>¯FM)TçZÒ`bd]bH_ WÀNšC'9/p%Zl” UНòRØöëž i)µ"”-_8§CXMQT¥\``bÞa^ÝY¯TñN–G­@Ì:‡5Ô19.S+*5*=+ö-=.—/è0¤1g0î/ô.,Q*Œ(Â'o%å%Õ&I(¢+.1ï65:¾?üEFJcO2SvWÚ[¸_„b°eßhojðlíop rrÑs¢sÌsôs_r¶qepnVlÃk:iÉhOg ebÞ_X[½VÔQËKæEù?ö:4¶/,+I'»& %¯&þ'å+Y/s5ë<`C¹KQÚXð]{a4avb_;Z¸QGÏ<³2Ç)Œ¶yº ¶ØtÊÈÈžo w[<'p2x=§HPVXÚ]óbØbõb ]qYŽS¹MŠFo?%93Ù0W,)'«'å(W)‡*Q*Ó+k+W+)ú(²'%$s#M#K#%1&ó)ò,Ú0Ê4Î9¦>“CÌHçMÖRÉWK[º_clf”i§kûn_pqžrss\snsqr…q~oÉn+l%jgÉe€c+a^ž[ùXET\OxJ’E7?é:—5 0D+}(º&g&v&H(q*¸/…4Ã;šBIPŸW](`bYa"`Î[õUlJû@Î6*,?#SÞ ä QãäÁ±t[zD ƒ‰!ò,+7AAìK SøZ#`­bÚcÉ`]ˆXPSbLîE’>¥94ý0l-)³(@'(((8(,(( '½&å%~$"þ"-"?"J#R$J&ƒ(ï,™084Á9N>~C¿I5N¨SÈXÏ]1a™e1hÂk]mîo„qqÁr€r;qÕpinïlÉjÑhDebP_'\(YŠVàTPŒL³H,C¿?:5ñ1-)‰($&ú((Ú,/Ü5µ;kAôHaNåV![‚` ab_e]V{N`Cƒ9z/”%±%˜Ž +ô§ÀñÓšlù_‹ ßñš%á0¶;¤E¯OV@^&bHencÊaš\®XØSAL~E!>†9H4M0—,v)Ì'Ÿ&ñ&V& %g$Ö$·$¨$`#¤"¥!¨ × ¬ ™!F!Æ#P%(+/:3P8b=•CsIfOKUZ"_$c@gxj€mbnâpQpœq poo½mõl iqfàc•`\,XuU)R2OfL}IEnAQ=E9!4Ý0ü,ò*U( 'ã'ž)µ+÷0³5ðQ¡;¸8š5¥2Ø0.,˜+2+f+¦-Ñ0 4M8þ>ëDšJXOùU5[_ b;bnc,`N\øUDL€A©7Ó.M$ îÎ i¶›½ãÿ$àW]­ u6R „Âi'2==FÑOÄVÆ^Øc’g7f)de`,]XìThNÛHâCw?;7Í4Œ1h.î,s*ƒ(œ'%M$B#¬#Û#Á$$%_&$'l(ž*Ä-"0¥48’= BwGåM‰S.XG]7a)eCgðjOklk¦kji³g´dQ`÷\ÉX¦TOaJÕFYBÉ?¨=6:{7ç52ð1 0.ê.¾.Ž/Å14 7s#:Ô7n4Œ1‹/G-]+î)ü(™'‘''X'ú(»*+, .0H2 5Ô8ñ<îAEþJÚOÚTåYz]ïaƒe>g i¶jKjöj`iíh eàb`^òZ®VnQ²LÖHCR?‚<'9¬6Ò4™2[1H0”0å0Ú1­2ƒ4¿73;?7DHsM.RcWD\3_aQa ay_f]µW¸OÁDÑ:Î1B([ 6« ®¹ÝzB† %ß©†U[ŠÏþ¸1 ý$Ð#È-è8ëC]L TYZ‡a³ehGfµdr`’^0[AW˜RíNI‘EB>>ó<8à6w4ª3‚1Ö0w/*.·.^//û1–2ó4Â6Ÿ9;|>aADkGúL P TX7[ý_¦b­eàhiçjljõjEi²gÍe±b__"[ VíRCM~HÎD@\=:º86]4ã4Ñ566 7ë9Z<?;CNG?KXOS$X*\H_¿`s`}^Ž]èZÕW OAEÊ:ß1Ÿ)~!$–l aFöœî:›÷§–¤[2`¼u·õýv0-%ù0¸;üF7O Už\õbgkhµh[ebÒ`]tZ!VYQùMŸI¹F:C^@%=¨;:<8¯7¡6’605Ä6K7 8§:<2>kACÉF†IK«NˆQ®TËWú[>^Fa(c¢fXhKjj¢k-jiêgýeÛbƒ_?[(VüR[MªI.D«A5><<:9(89A9ö;Y)@JC€FÍJ¢NHRVZ^’abN`º_g\‹ZËVO»Eï;«1Œ)!þ -²äc7ÿýmÇöƃ›¦k1;yfÒé) ¾Þÿ#(«3>{HO@V[cb eåh=fâeTb”`Ó^Ä\ŠY@UTQ2M«JÑGÏEsC$A§@2?Œ>ü>ü>¿?%?´AB†DµG IÏL‘O(Q~S“UºWçZ\k^Ðac4e%gWijÈkl/k¬k+i@gcÅ`‡\’X‡T9OåKþHE[BìA³@A?ç?Ð@žA=BhCiESGœJÃMÎQTSW¥[y^{a€a¹`³]b[!WpSñMYE":ý1…)+!¢H0îìÒ{K_ÓèËŸ‡®”ƒN*0A–N„há ‰"!@*ç5Ð@gH÷PUp\4a„f’h,hŽfmdçc aë`]=Y|UÔRsORMJËI_GÙG;FØG1GUGûH¢IûKeMOÜRŒU=W©Yã[—];^™`anbôdyeàgOhúj|kìl­mzmlj˜hPdæa¤]ÜYýVRNÔKžI®HGˆF¸F£F²GkHI1JHL>NfQ~TÁXN[à^ºa§b¬c_ax_+ZþW²RGLCT9þ0”(:!L1> ÷ ”ßô @_¤úÛ–†–³hŠ|=1h.Q G=f^"ü,ˆ6î@bH#MÇSÔY+_Œc¸fšfFe˜cöc‚b®ad^Þ[ãX¦UÓSÏQôPÎO_NÇN‚O#O®P²Q™RóTbVQXSZ\Ø^Û`Ábc&cÔd‹ej5K,Ú%Y$zà ÏÕ©_Çøú¦¢èäÀ„ÀìÁ"c—ƒK0nü!ŸO ‡?(r#x+è4Î<ÄCkH~MìSY ]‘aIbQbÈbb.b1b1a¥`À_Ž^{]Ï]:]U]^^_`EawbídmeågLhpi«jckjæj’iÖi0h·hXh^hYhÔiojyk®l¯m’m‡mFlj­hØg&e\c~aÔ`8_#^6]µ]>\²[ÏZìZ-YêYªZZ|[§]+^Î`¤`ß`,]›[RX8UëQ±LœDœ;³2k*M#Ø·Nä ™êº2`âÞç÷Ä‘ˆ¬ìÄ&Y™¸—C v:®î ßC»!ÿ)è2(9¶?ÈECJO…T©Yý]__Ä`;`âa7añbËc¯dAd”d’ddµdûe«f[guh®jk~l’mƒmÝnKnm¡lmjÿiBgfqeme'dÚeLeÏfþhgiÒk k‰kßkmjëji6hRgifŽe¶eddc£bÛaÈ`—_‡^å^R^X^‹__¥_¢_r]Ë[¨X‹V-RÊOyIzB=9/É'·! ÙòŠ ¥ªÀ×*Ûê%ߘy•Ôú»CZ‹ÈÈ}ÿÔÿõ>åù-ð  š›Ú' !'X.ñ5Ö;Â@9D•HàN6SW6Y{[&[Ø\å^n`“b½d|elf-f€fïgwhhîiìjùll¥ml±lJjýižgteb`$^{]\¦\P\ü]¬_2`õbßde¬f­ggMg0g&fõfËf€f+eÄewed¢cÄbŸa"_²^|]g\¿\R[É[Y™WÊU7RÊOûMßJEv>5Á-%DY'¢Ê ¦þÁapÀLëî/Z¨q¯åôÙ³[^x¯ÄªVÿçÿ¹ÿâVWêŠÐ¾ õ˜k9#Ï*Ð1w6´;>£CG×LÿQATÝVàXyYè\+^Üa‚c¢e}f~gggÜhkhäiqiêj‡j§j¯i·h—fqdCah^i[uXV˜TÇTWTT÷UéWÑYõ\G^Y_×a6aüb¿c$c–cÕdd/dGBÃF‹IK›MO¯Q¤S¶UkVýX Y,YºZ/ZZYBX|VœTQsNpKG|DDA%?!=4<È<‡=©>Ç@ÛCE™GèIÄKuL¶NOP=Q5R/SSÓTsU1UzUâUSëQSNŽKDH3ElB®@‚>‘<ñ;•9J6Š1þ- ')!hD$Ì ýâ)‹BxÔÍ eƒDÑŠ{Š¥‘~‰«ÓIOINPSD0ÿºÿ˜ÿ¬ÿý0~ŠG^Ö µ KðŽq! %()*â-à1®6:y>!AcCZEF›;7ö4î31.0Å0|1u2h4?678€:¦<Š>I?¿ABB£DEPF¤GÂHÙI‘JaJ…J¾I§H/EZBV?;ö9Œ7Z5Ö4™31n.S*›%Ò!6ÌÄ' ` T;tR›¼t2γðJj;è—~Ї|XOq¨Ð574HUP7) ÿÓÿ«ÿ¦ÿÆÿæÿûÿÍÿê&Fª¼Ñ 1‚+X|!#Ì&Ä*B.25ü8å;f<©=è>ˆ?=?Ì@}AA°AÜB AM@s>y­?&?¶?‡?b>>)ÿþÿâÿÇÿ·ÿ­ÿ±ÿ»ÿ¾ÿ±ÿœÿŽÿŠÿzÿÿ¸kæ)ìï¾Âó í z ãH\eÆw{„)ÄùC± í + qÎq$Û¯6Êrrnž Ç  n Ë!Gl<`ʺ¬ü:Ë= Y Š ÖÑ¥€#¨êçÿS7K¦O4hË'æ½´Õòä¯~U63;N[YMÿáÿø*) ÿÿÿãÿÀÿ«ÿ¬ÿºÿÄÿµÿ§ÿ°ÿÇÿÜÿäÿÊÿÑnÀXì¯\  µ ô = m £ è @ › % 2 Õ | ´ Öª„S&_ M=M¦´hU=DP_ s [ : É W ‹ Â Ž Z ¢ Ú “&­Vq§RãˆjîŒ~¸ÇµgG^£ëòáÑÏÜøþ䲋q^XNNWXFÿàÿãÿø!+ÿÿÿêÿú ÿâÿ»ÿ¦ÿ¬ÿÅÿÓÿÑÿ¾ÿ®ÿ¾ÿËÿµÿžÿœÿ¸ÿÝ-¹!gr£²ÇæDezg]"Ö^ìlèp¯?ÿôÿ¾ÿ½ÿ¸ÿ×ÿî-vîmš0ÒR½ô7GVÚUÐ$gÃ:ùò y*ÿÞÿ¢ÿªÿÓ[z‡xlhg†ÅùîÞÑÉÒéô俇ƒmTI:ÿôÿéÿíÿý00ÿîÿòÿÞÿ¼ÿ°ÿÄÿìÿþÿÙÿ°ÿ¶ÿÖÿêÿóÿïÿð%WmS.&LÄû.l“©Ÿ–ƒwiPFRegac`WNVO,ûÕÁ¸¸ª¡˜¬Ñ3\’²¼´Ãù‹JÖÈÁÕòþúÄ{$ÿÎÿ¹ÿÑ k’fQTdƒ’ªÖùúðßËÄÏÛÚÇ­˜™–{R4ÿüÿûÿõÿóÿó!63ÿüÿòÿÉÿ¹ÿÛÿüÿÞÿÎÿÍÿÍÿàÿùÿõÿéÿÒÿ®ÿ‡ÿjÿTÿUÿTÿgÿ‚ÿ£ÿ·ÿÑÿü"KAÿÏÿ¯ÿ´ÿ´ÿÑÿù,Ry¯ÕðçÙº¢ƒa:ÿõÿïÿòÿäÿÒÿÈÿ»ÿœÿ‡ÿÿ–ÿƒÿZÿ#ÿ ÿÿKÿ’ÿÞ*2ÿñÿÒÿÁÿÛAkum[Zcft„§ÞðãÜÝßÙÐÊû²±žuD ÿúÿøÿø %?<ÿ÷ÿíÿýÿîÿÄÿËÿïÿ÷ÿÛÿ¼ÿÊNNÿðÿÞÿñ,'ÿüÿéÿèÿëR¬˜mÿ±yC67OZl…¥ËÝáÆ©„iR0! ÿúÿîÿó ÿêÿÅÿ¿ÿÏÿÿ1MJ./Y€–Žzd_lŠ|s}¥Ý ñáÛçï߯¸³±ª~S, ÿýÿüÿý(ÿõÿù ÿïÿßÿáÿíÿÝÿÈÿô4VJ)ÿôÿùÿþÿÿÿóÿèÿêÿù>ˆö>Jâ«u[Sdkx„–³Ãȱ”mR7ÿöÿíÿóÿîÿçÿàÿßÿâÿìÿäÿ¹ÿ¡ÿªÿ½ÿã$!6Uq€€ƒ~||‚ˆ™°Ìå÷  òéÞÏÁ»²¡†kN,&ÿùÿðÿô ÿþÿ÷ÿýÿäÿÔÿä, ÿèÿéEhmGÿñÿãÿòÿõ$ImyrX4?~Õ*ñÐÁÀ¼º¸µ´°­žˆjQ8ÿû "*1<CNAÿõÿåÿíÿðÿþ!*CF??IWp“§¢|ƒŸÇäðîï#òÉ«£©ª˜tI, *ÿþÿüÿöÿíÿéÿñÿþ ÿýÿô #ÿüÿâÿáÿþ%!4HXN0  (GiŒ–ƒtˆµÜùíÝÑľ¼»³ªª¡ŽpW?#0=?6.')# ÿøÿóÿûÿý&)DEG[z˜ª³ª—Œ”®ÆÜêòù%* Ï™{y‚z]2ÿþÿý %ÿúÿùÿ÷ÿøÿøÿûÿú  ÿõÿí!CSH2 &574=:$ ÿûAƒ»×ÒÐÊÉÒæõ÷êÞϾ¶ºÀº±´¯‚jXF?<BNPE+ ÿýÿþ !.%&<?R~°ÖÖ¾›†’µÙÞÓÒàüÎŽ_MHI;!ÿõÿûÿý%ÿ÷ÿïÿõÿý ÿüÿ÷9\cQ3(**-33'"/2Bd®ÁÏÑÐÓèüüóãÏÃÃÆ½²³°¡‹{qhd^YXN:  $ ÿÿ)BNa…¥¹´¡“˜³ØëÝÉÐê û¾…T2" ÿúÿùÿÿ $%ÿôÿú"&.)&(@]cM4 -G\^WR_vœÄàìíý ÿôãÕÐÎĺµ¯¡’ˆ‚yqldYI6'3B=% ÿýÿû  /E[n€‡†ƒ„“®Ç×Ѿ±ÀÙðá³qE-ÿôÿæÿî  Åz¶ õ ÷5íw¡Z1’´n“ÂÅêóÊ´á*'WЛd˜Û <Š"ߪ®É!z$¬'S'Ó'A%#˜!à F¡ L¶2)lÁÝÏ8 ò d õ ü å  & j ¶ ï   Ñ Š N Y ÷ C † ¾UÇ5ÅPö«÷32:@BxÌRÚWÕÕ—S+ñƒÞʦ‹¡õE± Š   Ê !ljG²}af¤c¨P"×oS} ­ÑÎÈ Ù-å/À «""g"§#ç%%ß%\$T"z! |Ç›1–ž üq¦`Å ?    = f ™ Ò ç í ° Q ó ³ Â ù B Z \ d „ ° ý C §   iAêt“ü6N•ì¬UñNŸ¹ÂÙyðûÍîê­§¼Óïæw7 éPR è8B: Ö «kûÚÉEW%€Ä?ÊF´ÈÖbOÞš° '"#g#ä#¡#ë#ä#À"Ý!Ì #Œºâ|ï2•ùë3Ë3 ` K V ¢ h / C X Š ¹ Û ù é Ë ~  Ê — « Ý  "    % ? W ˆ ­  — W ô ÈáéÅ ø8ß™a‚õ|êô*&WqTo§÷Õ†j£â²c¾Õ¦‰D‹ÑŒ#ªFjö¥”ñ?æS–òé¶ epòJÛ ng©}¬&åiý)DË> —1§@ × ó J  À   Ú È ê õ  < j – ¦ ® ‹ _  Õ © ¨ Ò þ    í Ò ¼ ° · © Ö  · N h ê]“Ò è`H"œ1¥tsö¹F“ð„qþ¤‚õó|ùÉð§ÿ ¦oégR L]äų‡rÌ$ + A bû² :|$þGÂî Ö@ˆäéÎ>vЋ¬ ² × ï 0 l ÿ µ ° š Ž f a ˆ Ï þ % S q ‹ ˆ Š g 3 î ª ƒ l { ’ ª ± ¢ “ v S 8 . 0   . É q Þ Å˜#\Ñe O ¿  {DƱÄ}Š'æ]A^\P;q1Š8Ü‚sÏ-õns\ÇMM.„³ÝìüŠYŽ{q»°-W‡<>˜Ü×¶ÊØ¯gÁþФÁ 0 ¯ — á ¦ A ù ±  D + + 5 , ÙÀÑ 1 U z ž Ÿ ¯ ¤ ‚ L ý÷  B e u e P 1    "   # ° T ¹ ‘PÃïËi «   e 5 « f.Ž?Êਚ Y‡öð2N>}8”ž[L¶ùc˜^HrTä½ù<Z ßRÓ7Œ0CŒ·‡ò4ÖÝ”a< ½ 4 ï ³ _ Ê  A qñ¨ª™‡m8靖rGìßî/Jl¯Êïÿ÷ãÒî$ˆú I t [ ; ðåßàÏÓÍ & ‰ ‘ w²´ º [    J â 1 ­ * %Sã‚ßè”i¹>í_·Œ7¡b(µHº4sp‰ƒ;ìJ¼µAग©}Î7N€…¦9`±Ô Ð  Ù ü ú  ¸ _ F B !ì³}O2 ê¨%ŒŸj"ñ÷¶Ä¾ÈäL€²ÑÝèò5“+Ú^±¨—fI5)=~³ D .  ­ Î ~ í W   = ½  F Õ m n¦æèžLã=úœ9ÆÉ  {cp·Af%Xu`ÙqcÞ+‰ý¦úUNv m Ð 5 < 8 WÕU¦õe&5-)ÿ .À ´žygTKB9" 1a”Çò %_¯Eú¢'TpP4ðõO§gÉ ` Ñ þ ï  Ä ‚ b ° ý 3 p ®  F Ð ‘ |Rñ\¾OÌ™p)Ë7½’óŽz®ÝÇcÓ•B † ù – ìTáW$ Ž   ¶ F b_pq›ÄÅ ´ÑãëȇO( °1ĉm€Ž˜•€jR84;\‚¥¿ÇÌÍÆáhë„f¦ ŒhNb|ß`…ÄÍ®¾Î¿¹Æÿ A — ß * Ñ F Ž ø ~ ó , ^ ·@Äm"Þ‘"ž+ d ê   à ¨ | } Ñ  Ò A   q Z › ý Q à @ 8;–ZöШ†@éaÒ/hòN¥Ì¶V®a,å«{^``r“Ÿ_2õù:Xo~‘Ÿ¢²ÅVÆ9ØåݹÊÍ{%Øw @;"EõV±õ + T ¾  ^ Š ` d ½ H ª ê L t Å ' Ç5ª Ï D   A 7 . B V … D ˆ « !  " } û 1  |ìk4újÛ‹j;Ï_»ûWé\ö(˜+¿k ©b! *Omukyj<ùÁ¢Œ”œ´Éáõ +H_r…¡ÆòAbpsr…–‡“´"°VóH\^1ÕE¤Äö H š á ê ² ” Ä K Ý K € o ^ V X    Ÿ ì - Ó µ ™ © ¸ Þ  , 2 È [ðÙ¹ºÐ½|ûtþ¸~°¨®‚¶&jᣵ¶­~[dƒš‰ḃA&ApªÝïòÔÁ–WÿôÿãÿËÿÅÿÇÿ×ÿäÿòÿø%Oy¼ÎäèÜÒÒïM”Ä×Ã¥¢¸í%A^²äÝÅm¶õ`±  R M #  / ¡ " i n v _ < / @ v — e ; ää  W ˆ c ~ÓEëÔµ¦žt1¾DËg˜Teq+¢ ´C@” C&ó¦vZ6' .4Oj©[¦ÅÜËÛg!Ú©’‹mVMUZ_\`lг×ïêé¼s×ÅÆú7l“S À²Ù+]ºêŒ}’pùn±ûNÂ/—±|V”  ‚ Í î ® q T X²™oGN‹ÃÛj¶CöÒ¾¢t…³œ|x›}úUæÏÆk™mí|2!H½Aé‚¢ŸçûíÍÅŸZÿ®}b^G829@GJHBFdur>¥rÈLÿæÿÕÿÑ:j…_%ÿþÿðÿÝD©ã>»f µlþk´ýl.¹¸”ÑWî W ‹ b 8ëšij òϽÃâåÎhùM”Ù&¶[O]hPökñ#@KR¨[bÑA« Æ^%AÑtj_ilY F ü ² @ / +   ÿ Æ o Þ ¨ † ` H / $   %  ×Ï¥aÜ_¥ÝæçðýSºƒPi™ÉÞ²j ÿ­ÿ£ÿå^«Öè BÇs0Ï1X§vD˜´sy sW,ÿì2& ñÕ–TæyÛ#f«F *[rKíZêÛ‚ çÄ"¾‰äD¦)¹mâÆ ¸ c A 2-*1Â%’­™ƒI¼fÀ{/ôÁ£”p1Í„ g „ § ¨ °¢–l-ì°³¬.ÿçN}ŒEÿÈÿWÿÿWÿ³&q‰~’ÐsPU¼:ŒÎ˜dxcHAb×ÙàÎGè—<ágÍ:¯{»ü Ó„Z~ì.ì~,{L‹Â¦{k ´ 4 ÎJqx8ÂQí¦«¸b°ñ¾n›¿ œn7ÊPÀ<ÁAÞ†X>âp R{L̇A ¹ : {¹õ¬eØmr€`ôGÿˆÿ3ÿCÿÍKœ¢w@‚L>·ã kÝF€¨á6¨?GLV{-<Q-Û“Cø«_ §U  RnWÚì'MJíñV—ñ°Dî … doÂ;X7F(›'Çel¡A ß"–$]%Ò')'â((¥(³(o(G'í'‰&ò&V%¨$ü$f#Ð#o#"ý"þ# #"Ì"‡!¿ àpø>S–Ý 7 ( ýÆ{£Þ…™£\’ÿ¯ÿÿÿHÿâcŠ5ÿýP ¯CW­h‹x{ÍL¯ð7Xv‰¡s-ùÓa*öåáþ">D;":ö6m†S a ‘ âvx”…k k"&"â#~#É$.$ö%Û'g) +1-+.ý0Ù2$3?3®4+4)43·3j2í2g1½10^/Ÿ.þ.g.-Ë-Ó-ó.4.t.u.p-Õ-%+¼*I(5&#š![$á§ŠTsz fK[Ïc›n,ÿiÿÿm«”4TÞyÇÞ'}£k.:šuÉîÿäõ ç½ÅÛàÄ’a<Go¡¬¯»æwÞrÁ¸ Y ¿ ŒÇ‰Õx;"Ü%Ê(*d+ö,À-ˆ.9/ 0<1‡3956Û8’:;‘<ž=}=Ò>B>E>&=Á=|=<­<;q:®9Þ9'8~8#7Ì7Ñ7ï8=8‡8­8Û8‹8!6ÿ5Ý3ÿ2/„-*!'$!*+pä< ãž‚Ý%Hx^Qÿ/þØÿÿâOb&ÿý4¾P›„DdXíoüx­¦ ,<iˆ}T%R¡µúr@þñÃP ƒ @$*uþ"ó'!*ó.{13z56b7I8J9_:‘;ö=X>Ø@lAäC4DPEFŠGcGÜHkH‘HˆH=H"GìG®G.FšEÔEDFC•C0BÕBÒBãCC6C>CaC#BÀAÉ@ß?e=õ;Ë9‘6|3'/t+ã(©%Ð#è\Æä³  ÇÑ1RG`ÿVÿ–‰€>MóoNÙ±«¨žcT‡ûv²£ÿƒÿ‹ÿ£ÿ¨ÿºÿå &ÿóÿÎÿ¾ÿâ e”EMÒ¢3 .…ØNhÑ!–%Ó* .42j69v<>™@EA·B–C™DŒEŒFœG–HÔJOKôMnNÚPiQÂSSÕT³U U8UUTóT³TS~R®QÞQ$PpP O»O·OÇOÐO³O]O*NŽM¼LtK=IÎH‰FØE'B‚?›;À7Æ3/Ë,(N$‡ ð)Ê’ 4 <¤h˜à(ÿoÿEÿØ4X ÿÜMÒì>ÿ÷ÿöÿÿÿñÿý6’ÍÌÿ˜ÿ ÿºÿÍÿé)3)8–Û–Tã¿%  ™Rá²­XÝYEY­Z:Z·[×]f_V`óbqd eufßgÛhÊi&i`i?iKihÞhZgÖg/fveÝeSe.e*eqeÃeëeóeedbáa9_¥^ \‹[ Y£WÎUöSOðK¯GpB}=U8G3Œ/}+ 'û$D Bwe ˜ Akß9ã_ħjÿùÿÆ cFÿöÿÄÿÀÿãÿìÿÑÿä5ÿ³ÿ¸ÿÒÿæI‡¡ØÄ]‘µè n ïH.ùf!@&'*œ.2c6G:‹>ðCJG-J¼MúQšTóX1Z ] ^^_e_»`?`µa.aàbŽcÂeUghSiPjdkLl@lëmm¿mÍmœm•mymUml²l1kkjœj›j¸k#k•kôlEl0lkdj‹i9‡5T1Ü.¥*ô&{!^TéõÒ ¡jxñŠe•ÿøÿæ2OAÿÑÿÝÿÿÿóÿæÿò7ÿúÿõIj¶þ Jt|^c —þ7)º ‰%Ö+E0R4Õ8ç=AA¡F*JKN%QdT›WŸZú]ì`©b„dTeFffhg gºhWhþi”jzkºmm÷n™oEoÍpgp×qFqhqbqAqPqdqpqNqp¶p1oÂoqo€o¦ppvpÝqCqiq‹q5p¹oào"n8mfl0jìhüfìdCa¼^­[ºWÚS‘NI“DÒ@R 70}*{$¡ü¶° V „+Xì ÿïHr*Ý*@)%'É&Ô&&º't*-"1Ê6„;Ã@žE€J¤O‘TcXt\W_„cegœhIhöhÙihlg†eçdLb˜a_¬^ \Æ[˜[:ZÅ[›\·_?aøeThk‚nTpˆrÍt;u„uçvvv3vƒvÒw.wŒwÛx!xJxŠxxAwÉwnwvÉvŒvpv8uãu7t“s‡rVpço{n:m'lFkx9xwovñvMu¥tðtasŸr¸qrp/n lýk>ishf½fe>dådd—dÂetfLg@gýhi)i²jgj¹jójOi gØfc`)[æWsQƒKUDg=Ü70 (µ Ä×ך Êu˜ ª"8Z@?p>D<ÿ<;&;£t÷u‘v,vªw1wŠwÒwíx3xw½vçv utrÙqÐp‡omIkjiBgdÜb¿a?_á_R^¿^ò_8``õb.crdÕf"gihÅiók#kÍl`l:l!k,j†=C<ÝÕ@¯D GœL-P„U]Z}_‚dPh@lnèq¤scuvww—xwÿx wUv“tÈrôoôl®hºd÷a.]kYÝV_S(OÂLóJ3H”GFáFŒG˜HõKiMÖPyRÿU&VçX¹Zø]¤`gbêe$f×h¡jk•lam)lˆk“i>g_cã_íZ!TQMqFÏ?s7ª/Ý(h!Ѳ… Ò ™àÈcDcøcöcžbðb?bIb¿d-eeghiÜlznãp\qpqªrpr#qpo'lóiIeW`u[•VØRjNJ˜G4CÎA0>È<ù:æ9U7â7*6W6y6¦8$9©<°?æD\H´MëSjY^c>g÷k›oqusÌu/v•wM<:38É6ù5e3â2þ222/3X4d6Â9L=GA=FwKùR Wø]~büg~kÚor,t*vvõwêxxMwkvsÒpßl)gAa…\V‹PÖK¦F‚BÂ?V=e;]:q9r9…9¢:Ûe@XB™DÿG[IYKlMžP€S¤WQZò^b!eNh€jömŽnËo®on‚l£jóghcJ]›X[RK¡DV<ý5š.a'ª Üð† ༵iákCllqlLlBl[l—m!monipqässksßsWrÝpðnÊk g[bB\»VÁQ$L)GKC5>ð;¸8¸6ð5e4L2¼1G/â/ .J.>./.Ö/B0ß2¶6<9Â>ÿD•K7QÇX(^ac¢hÇl¸p¿scuÓvçx x%x€w’v©s­pLjÎe^tXQµKAEv?™;\7ˆ5›3­32m2Ó3C4¬698F:<>B@„B“DÊFûIÑLÈPªTÉY]]æb fi<n‘p’píqo¾nÞlWiFdŽ`ZŠTðNHGg@ 8ú1â*#’Ñ. X >jülmwn nn_n™nÆo"olpZqôsst]tCtisRro-l9g²c]BW!PàJöEñ@ü= 976˜4+2õ1ë1H0DúKàRòYÃ_ËeÉjŸoŒrÕuØwx`x]xœw‰vžs…oîiúcÍ\„UvN‰G¬A•;J6±2†0†.§.W-Ý.l.û0Z1Ü3°5J6ë8Ž:]<'>K@nC*EÉI{M–R¡Wº\®a`eBi*lo"p“q†pÖpŽnÑlÖiGe³`ð\XV¨P³IòCz<}5-´&v •”lnJokp%p_pÞq/qDqiq¢r{sôu8uíuxuKsqsm‡iµdU^ÀXQJJ­D^?M:V6×3V1X/….ñ.}.m.-˜-L,ü,¢,+V*¡)À)Ó*,0.I2Ç7¸>¶EÇM~Tþ\chìn¹r‚vw^x¯xmx`vüuïr²nÞh~aÜZRcJøC®=Y6Â2$.,i*â*Ì*o*Ü+P,m-­/"0`1‰2˜3è5F7R9†ñB€FpK¨QVç\aTeìi‡m‹pqñrruqtpymükCgQcµ^ôYäS¸MÌFí?¬7å09)!®Æùmso(p[q&q~r,r•r™r¥røsØu'vv¦uÎurro^jge¥_€Y QäJ´D/=ç9A4Ë2/S.--->-Ô.8.s.À..--5,#*ö)±),(°)ì+4/3?9æ@®H®P—Xq`VfþmqÏuÞwˆyx¿x…väuÀrƒn¨hHa¯YÓR JC<–5Ô16-E+Ñ*x*k* *8*f++à,Ó-š.8.­/W01Œ3j6#8y;Ä??D.IvOžUÌ[†`Òe-iîmSpZqˆr¦rHr%pn kzh´dÜ`Í[…V_PIXAÏ:G2Ï+0$ܱn^pqgrQrÖsÂtMtIt;t®u‡v—wwZvt´qm g aTZlS KD=ã7ß3Ý0.6,F+Ñ+j,,â./E00Í00 .±-g+à*=) 'º'ÿ(j+†.û5B;ÇDL`Tî]sdÇkòpàuŸwÉyÆy‘yfw¯v…sFohibšZÑS#KcC³<Û5·0Ì,¤+()Í)Í)})“))Ò*:*®+++ +++Ó-/Q1V4ƒ7Å<ŸAÂH/NÒUm[“`Ýfhj©nÁpörãs5sÝsqòo™mœj¡gŽc(^ÅXäR¾KkD †8.1Øneoåq1r=st9têtætÚu¹v™w*v‘v.s¡p˜jðe]‚V.NWF4>ã7â3.P,*)ï)§*e*ý,a-ý02G3²4‰3ú3K2 1E0.‹,’*;(ë'ë)‡+[0P5²=sE(M¸V2^@felÓsv€y§z?zèy°xØuçrulög¥`ùZR˜K!Cö<‚6Ä1ž.ú,s+Õ+^+°+¯+±+½+“+Q*º*)K(D'‹&â'N'Å)à, 044P:@G!N$U [Õa­g¡kÖoqzs’sþt"rôqèp-nÇlfiÙe³aV[ˆUœOHxBrý935‹1à0/Æ0ˆ1 1¿2s2p20Ì/-ç,Q*¦(Ñ'l%ë%é&:(«+1/¥3þ:@œH2O»W^Ud(iœmpªr7strðr;qp§oçnÓl£jqg co^ðZUU¼Pïl{mcnWoypnq3q™qìr7s%sCrÕpŸnîjŒe ]#U¶M„Dø=5i/Ò*T'k$Ò$‡$\%U%ò''ø)´+î.12Ï44]4ð55•53í1Ð/¤-Ö,,,.Ø27à=–DåL8TQ\½dpkùp÷uPvæx~xfxÛwšuÝrBnôiýd¨^W\PkILC8=ˆ9Í5ó4m3|4R567+7R6õ5G3‹1I/6-#+)'&ÿ&%|'(±,b/Ý5_;PBÚJxR@Yõ`cf}j©nøqrãr£rpäp§pLo“nl©jYgßd|`ä]#YFkùlÎmºnèoÒpRp†qqrr2qÊpènkÂf¸`…X4P…H[?¨7ê0Ã+æ&ü$Ÿ"§"Ð"û$ $º%Ì&¿(*ö-Í0t2Y3Õ4Œ5†66´6=5'31/>-z-&,é/1¡6Ÿ;ŽBOI%Q&Yˆa‡ibn×sŸu wŽwÐx¥wêvÃsØq=lßha¼[XTœMæHB“>¬:ƒ8­7ž8Œ9U:;Å;í;…9q7+4,1g.É,L*'x%à$%[&;)'+Õ0Ò6Q=àEŒMÅUí]cÒh²m¦pHržr©r,qpüpùp’o¢nÖmjkçi“fóda#k?l lön%ooNojp*p®q*p*nÝk~hcbµ\SÁKùCõ;[4-)~%D#i!õ"S"’#‚$.%2& 'Æ*,ê/p1Q2ê3á55¼6‰635Q3ƒ1É0K.Î.Ž.n0N2S6:ßA,G–ObWŒ_…gSlürtŽvÞwcxWwÇvîtŒr‰nÒj¤dÅ^µXJRLÓGÀCê? =c<<ª=+>??>ž00 1’2ø6s:B@KFqNUü]ÖekYp×sÔv˜wVxKw»w u#s²p®m2gÌaù[´UÞQL‡HêDŒAÎ?ý@.@aAAÊA›A?<ß9p5¸2 /,‘)©'”%½%f%&h'+`/â7>?F‹N¹V‡^Nd‡jšnNqßrÒsr!rr/r+qäqˆpäplownl‡kii©jtkŠlml³løn@níomk(fäbZ[ŠT|LLDGcû^X¥TPL»H‘E‚C&BŠBBMBpB Af? =Ü:Ò7*3O00-µ*Õ(¾&à&F%&^&à*-â4˜;nCKtSM[Ibh®mqCrÊs“rêrçrßsrërqòq¢pòoÒn{mKgùhpi-j,k kRk½mUn'nkÁiŒdÏ_—XJQI@Þ91+g&¤$¸"¤"^";"ì#H#ç$¢%‚&' (|**ÿ+ã-.x/ç1 2 22Þ2Ú2Å2À2Å3T3å5a6—9 =IBýH¢OiVr]LcØhùnq-t+u1v$u†tÖsEr(pmÌiîe`\[UVóS'OûL/IFGDÙC¶CkC&B’A©?ç>_;«8+4Q14.­+Ï)±'Ô'&$&m&F(š+±1æ8o@ŒH@P)XP_ŸfÏkÝpÁrÐt's¼sÃs¦sísþs¤srîrqpeoygDg¥hVi5j jXjílÉm³m‘jÍh;c]XUÅN„F™>S6©.ÿ)ê%±$M"Ï"à"ß#}#é$Š%<%ü&Ž'@(>)1)¬*E+T,®-ë.í/Ê0h11¦2!2Â3t4š5¤7‡9R<½@©F-K•QÅX9^Rdh{lÖo™rPsbtgsçs5qŸpon–l¸i®fNaø]‰Y>UfRN¡K™HF?D1CBAAu@5>e<é:Š7h3ð1.»,*(\'’&ª&®&)'×*(/¾5ê=ùEMhU„]dÄj€oýrtpt?tJttRtdsås,sr©q¬p„o¥fæg5gÛh™iZi«j`lxmjmi×fÕa<[SLLD2;Ì46,Ø([$¶#å"ÿ#X#f#Þ$X$ú%Ž&&š'!'È(d(®);*C+Š,‹-_.0.ÿ/Ý0Î1œ2´3î5©749”<?ÛCýIJNT@Z_bdHgûkÃnQpårsr”qÈp9o*m¼lIiág6cŠ_¾[­WÂT@PüN JÎGâDèBæAˆ@š?,=\;Í9‰6š3t0á.Á,W*u(È'Ý&Û&ž%ß'(Ì-Ì3—;ŠBíJÛRëZÄbØi:oMrWtµt¬t¬t0t„t–sïsrír¢q¦p†o¹fÎfÿg—h9hôiWj&lWm5l±ie¶_ÍYbQ‰J>B‹:2£+Œ'$f$#ƒ#ø#ô$;$¸%X%Ë&-&›''e'Ï(+(Ô)Æ*Ð+,8--í.Í/Ï0¤23Ç6J8;¶?C†HMXR£Wä]aŒeÉhöl3n`p’qˆrurq)o¦n¢mrlMjihMe;b&^_ZgVnRâOLHuDAk?&=Í< :r8à6Ð411/V-™+Ÿ)þ(t'z&t&%^&c'¦,1q9&@dHWPJX:`ŠgdmïqntDtitdsµtts0r!qÜqp–oˆnÈf‘f—gg¤hgháiËl lÖl;hdd½^„WÅOÉH}@ñ8ƒ13*b&Ô$#$$$$Ž$$Ÿ%%³&&S&¹&û&ù''M'ï(§)r**­+€,†-m.‹/p1?3Ž6ï9ÿ=ïBGL1Q~VÎ[•`cÑgµj£mlo p˜q0rqºpùo~nIm"lLk iÀgmea]¶Y4UPúLàH†C?R;Þ9Û7Ò6o531f/+-f,*…)<'ô'&%’$¹%p&H*>/%6š=«EžMxUƒ^eGlDp?s˜sþts's}szr~q>pÓpo”n§mÿfeåfQfÕgµh]ifk¤lNk¡g°cæ]ˆV¤N™GK?Ù7y0[)Õ&¢$<$n$w%%%%%“&'&Š&Ò'>'a'&å' '°((†(ò)–*S+K,-E.,0\397x;Y@EJ—PCUÂ[*_cŽf²j^mohpnqlq«r>rqrpn½mƒlÛl2k]i™gÕd`Ý[îWQòMGìB!<ø8Q5u2ã1±0¥/¯.,E*ç)é(ã'û&ô&%1$±#Ï$E$Æ(A,¢3»:›B—JdR[biïncrGss"r,r†rwq`oýokonFmm eqeejeàfÚg±hák%k³jífÞb÷\…U’M‡F6>Ò6x/‹)Y&…$a$º$ñ%ª%É%å&I&Î'=''ø'÷'r''@'Ä'×'é((¨)8**î,<-1/³38<•B G»MâTYÏ_Tcogi²lõoWó_Ñgˆl~põr rJq5qqppBnÄnm¿m lƒl#d‹ddqdïf ghujÄk+j3eòaì[}T˜LE<=Î5s.·(Ý&a$f$Æ%%ä&,&i&Ð'X'ê(d(è(ò(~((g(Õ(±(n(j(²(â)|* +c,n/X3"8¼=äCñJFPëW—]cbüf×j?l]op©qÏr"rås srwr qDp(o&n­nYnlÇk}h}e=`Z•TMäGq@”:J4#/û,F*Ð)½){(}'•&í&“&V%æ%$#U"Ï!î!ì!¸$'L-œ4 j”o†póqWp(prp>nÿm}lÄlˆlk»k‹cócjcÈdFe€fÃhAj£jåi±e(`õZzS™K¢D#<œ45-¦(%ÿ$2$¢%%î&W&²'+'Æ(x))·)Ø)…)(){)¿)b(Ñ(–(—(f(œ(º*+%.¬3+9?rFMT3[?af¸jKm]n×pÁq±r=rRssQs r_rqÃq$p†pCoéo‡nTm5jwgƒbl\èVOvH‚AF:3æ/*¸(¶'2&Ý%Ü%2$¾$µ$Ü$»$#""r!ò!/! ³"¤%A+(1Š9ØA§J RÙ[c7hãn@o÷pxo,o_om¶l/knkRkkk b²bNbác˜ef„hjƒj‘i d$_±Y"R:JIBµ;'2À,a'(%X#º$2$›%ƒ%ò&a&ï'·(”)x*b*ã+ *þ+v+§+V*ª*H)é)F(ù(€)–*Ò.Þ3Í:»@ùGþOƒVô^1cäiul¬oQp1qwqér!r$r°s ràr{rprqrKrrqµq6oînâlki¼dö_ÉYR™KˆDF=U6k1+õ) &Ø%ù$}#­##7##–#"K!¶!M µ ³ S" $?)Ê08q@=HQ`Y’a°gvmoo¥nLnnnlžk"jqjŠj|jÎkaia%aìbådˆf-gµjiÜh bØ^)W‚P…HžA9›1H+&*$¤#<#Ã$2% %f%Ì&Y'<(2)X*”+Š,4,‰-1-e-?,•,+a*U)(–){*Ã/ 45;]AãITQeYA`Æfdkán°pËqq÷r;rTrGr‚rÎrússZs|svs[s“sdrîq¤p¥nXkÜg]b‚\UªNˆGH@8ß2è-)”&ª%\#q"v!É!ø"J"}"(!! ¾ B Dê!v#W(.·7#>ïGPPX4`8fkÖn nÇmlm…mk j5i˜ièj!jÂkJ^ˆ^¸` a›c±e³gEi¤i1g az\„UÀN©FÐ?V8/à)ç%E$"Í#[#Ä$…$Ð%=%Ô&ò(*)Ç+}- .`/D0X0Ç10k/Ø.¶-F,*Ë+Ž,ê1R6<òCiKS<[,bµhmEo¥qVq[qür:r`r^r`ržss´t&tVtbt`tÄtÆt{sPrdp:mêiÐez_’Y¹RãKìD¬=J6Ô0ˆ,K(´&°#þ"n!V!^!r!—!I Ê u Dê Ó!Z#(.6a>(F„O+W-^þd¿jµm,n l½lÝlijýiªi-i³j#kkÃ[K[ù]Þ`bªe'fåihhºf2`.ZêTLæE =²6Œ.y(»$t#"o"ò#O$$M$Ô%z&Û(q*–,Á.Ö0Ä293Õ4–5(4Ž3Ð2=0a.ã-K. /48w>÷EfM"Uj]HdµiÎn¡p¤rqìr$rr)rLrcrµs5sÖtUtÃué@8AA@g?3<Ó:O8Q6;6Ø8˜=AFÀL·SÚ[Cb)hæm5p¶qÌss%s%r²rbr?r1r‚rãsŽt4tôuÅvivïwwuwv“tùs]p»n6j€fÔa~[ÆTœMPEÓ>r822†-ì(o$‘!¤ Ëã¼>õ§¼æ{œ ê"#&]+È3Ö;…CÔLSÎ[aaohkVl©kokk!i¶hh`iPiÿk>lK5NðTYn^•cufoj4iaf&^ÚXÂQˆJ-Bz:Û3È+ü&ê#a# "˜#_#Å$Õ%Ý'»)ˆ,†0448;§?XB;ÊB‡FxKêQ™X*^æekHo"qþr£s»sÔsÝsZr×r]qérrrsPttÉuluávTv¢w=w)v«u0sÔqÇoçmj9e¢`Y¿RáKwD=j7=1ä+³''#–"3 ® -†Håç ’“ ·!Õ%ó++3:ËC+K]SZ¬`äg¡jôlhk.kAj†hÜg‰gGh7hÁjk…E0IçPV‘\µbxeöj>ifd^ìX¬QHIÖB:_3E+ˆ&Ž"ÿ"Ç"h#n#ë%9&¥)+y/347ôÃDWK[RêZ`§dÂišiLf©_pY6Q¡J%B]:Œ3b+·&À"ô"‘"C#’$5%Û'È*ç-Ø1ö6;³@ŒDíIƒLÌO¸PÐRQYOÃMJ—HçFúG„IMEQ!VF[”a.f±k^príuu^uÌuAt¯sÐs'r€qwqqirdss¢t?tèu¨vRw#w>våuÐusÍr·pÈnîkbg]a•[ØU!NaGj@¨:2Ò-&(ž&9#R!Ô ¸ †ùɲô¨ ›!»%À*1ü9žBJQ~YU_Áf]i‡k5ji¹h7eÃcÈc cåde/fÜ8U>ÕFÁOQWP^ÅcrhÐhâfÆ_ÑY™QÖJ\B›:¸3ˆ+þ'##"˜"O#×$™&˜),É0<4Ì9â?qD«I\N[QÛTÄUÄW/V™UR~PRNïM^M÷O_SV§[c`:e6jnqótuÔuüv=u—tÙsàs3r‘q‚qq2r r‘s:ttÐuvvvæw@w4vcuªt†sŽqüp“m·jued`GYåS„L}E‰>n6¬0n+a(k$Ì"Ê!t!< y Êñ‹ !¾%Ñ*m1·9VAÁI‚PÖX¼_,eƒhmj3i h’f‘c’a _ú`~`IaZbþ29IA÷KKT \Bagh6g`­ZŸR¬KCC‰;Ž4G,Ö'õ#½"÷"¨$i%R'±*§.ú2Ü7³=BËH!LãRUªXYxZÑZ]YVúU?TPSRTU^X‚[¨_Îcùh6lsoÆrêt†uåuùv!utëtsbr¸q¼q>q6qÚrPssûtÚuguÝvÄwJwuvÈv tÒsÄrYq-nílfh"c¶]»W´P®I¤BG:r3í.k*Ê&y#ñ"M!ó è DÌçp …"&V+2?9æBHIéQY_beBg¯ioh,g:df`¨]V[r[>ZJZí\3+£3«=*GKPÐYØ_ëfyg¾gwa±[¿SˆL&Dm;7›1±-U(K%/#("Ÿ!G uáým "K&à+¦2Û:‹BèJwQ–Y¨_æeTgBhüg‘fbX]ßYÂWUúT%T@U&.†8‰CM.Vð]Ùegh c0]¢UIMúF-=è6L.Ô)Ñ$ý#Ê#„%Ó'*$. 3b8=bCH¶MõRŒW¬[<^^Î_¢_ ^]]U\‹\’\Ä^ _Ta©d>g\jVmoÓqût?uzv^v4uþuzu\tút?s1r qdqqr ràs›tluGvww{wuv²vu tr¿qºp.nŸk±h®c©^7W OøHƒA;:É4“/)è&Y#ñ#9!¶ Ò  . ß"ò'ò-4T<DwLSF[lanf^g®i5gVdî`Z®U¥QÁO„LKÁKÔ Å)‹3ö>ÝI‰T[Ñc¬f‡h²dÍ_ºWJPH?ž7¿06+%Ô$M#ð&ƒ(+€/ì5½:ï@TEóKYPŒUYæ]%_Á`O`È`1_ _^Ä_3_Ëa9bd­giçlšnßpìr]sòtèuËuéuÇu[ubu2t®sÎrãr:q´qÞrEs st&tçu•v9viv}vu¹tØs«rGq`p5ol˜j/eŠ`,XýQàJ«Có=À7B1~+c'u$½#è"]!p ‚ a¡!!#–) .e5Ô=¯FMâU]Scg—hTi­gUcõ]ÉW‘Q›LŽIDãCCB€¬%X/Ï:¡E“P”Y3a©eph÷fTbYçRàJÆB&: 2c,ÿ'R%X$'(»,§1Y7f<îBjGßL÷R%V„[]×``<`G_e^™^]Ë^a_`–b dEfÃižlpnÂpÙrsRttéuJuTuu&utÍt3sŒrîrEr0r‰s8sŠsÐtHt¬tæt÷u=u)tòtråq•pÓoënúlÕjÉfZ`îYµRÖLE´?’8×2š,;('%>$["á!ÿ Ô ‘ì!×$¼*¨0h8 @HmPlW¯_Íe i"i:j gb…[SõMFÍB<Á:>8±!:+½6qAšMV}_ŠdBi+gÐd{\ƒU»M†DÔ<…4Á/)&Œ%5')b-½2Ÿ8Ø>»DgIÇN¢SÕX\m^»`†`:_Î^~]1\m\\Ò]“_:`Òc5eÏhÈk°n=pÎr`sƒsÚt‚tÍtætÒu utÖt:sœrýrEr$r’sDsvs|s³sìt t-t£t¯tJsDrêD­J NÔSÿX7\y^Ž`_?^\´ZµY>XMX×Yv[L]_½b”eàil(o‹qÑs_s¥t%t3t>t@t“tªtnsÈs!r‰qèqärjssBs$s,sHsms¤ttsqr`q¦qp™oìoem¹l%hb¥[’U^OH¡Aâ:“3Ò-$(ë%º$¬#'"P Ú È í$'°.@4Ý=EMbU´\Üdqh‘k†j:iÎdî^\TÆKÿCg:ä3ø,â(ö%{W+$n.h9tE0OÓYÛ`vgÝi#haC[#RÔJ‰B::3¹-7)ò'&(d*.Æ3:8þ>ÎDJNÍSæX\|^˜_Õ^®]Â[¦YVùURU‚VX3Z\ï_ôcƒfûjhn2pÔr²ss—s…sosks×t&ts›sr‡rqÿrrrùsrÄr¯r¯r·rÎsrør\q‹q)pÞproÈo‰n%lžhcS\vVwPITB::Þ40-t)%É$"ó" ¯ ô!•%@)Q0<7t?ôH PX…_‹f©iûlVj@hàbñ[aPùG“>K4Ä,Ï$î oJ‘á Ø*^59@ØKÖVA]²eõhch¸bç]BTþM#E<É6/t+å(r(ï*2.ˆ2Š7ã=@BÚHBM+RV#Z§\æ^\Ê[ËYpVœSäQgPôQ=SU‘X¸[ú_Ýc¶gk°n´qqõrÔrÐr®rrØs/s=rærtrq¤q¸r&rr¬rwrarKr7r%r0rq‚põpÃp—pAo¤on&lwhNcy\åVØPIAÒ:“4-d(ó%$K"x!µ †!O"j&›+22:GBóJüR¹[9aîhMjŒl4iEfŸ_‡W2LvB¹9.ü&x:‚ «h &0Ô4 ){ xéøO A06!Æ,D7~BøNW`udôh_eBaYR+JwBO;4>/ê+X*G*-)0]5$9q>RCœH›M$PžT©VªWæV†UR!OKÊH-FˆEÖHJtNR^V÷[¨`’e¼iàmˆohq9q™qÍq]q:pýpºp\oÙo’okoâp¶q•rrqýq¹q–q†qžqvpìpDoÜo¹oãoŸo?m]kPg>c\èV}O&HA 9õ3€,Í(Q$×#!¥!/ "G$)?/-7…?¯H PW` eëjšj—jÐf>`ÿW»N;CL9/$t¥]¡ &é ar'Á2¢>2I¥SO]#b›g±fGc[U6M¦E¤>72- +]*,1.É3=7;€@’E€IùM3PªR9S„RJP£M8IÇFmŠo±pWpòpËpÏppQoøo…oXoQoØp¡qiqåqáqÆquq?qqpßp{p,p#pBp‘p,o‰msk‡g•cA\ÆUîNGG*@:8ç2n+û'É$O"þ!3! ”"œ$Í*u1%9îBJ2RJY³bg5kiêiVcÜ]>RûI>U3Ú)Ç>ÁÚ f"7 _â]#T-–8îD|NºXÈ_eˆeâdQ]ÚXSQ IAÿ:…4ß/‘-%*¼+Ž- 0Â3ò8<¥A3EˆH˜K„L MÚLÊK,G¨Cï@4<²; 9™;<äAhFKÿQäWé^cgŸj`lëmþo"o~oñoúoüoÏo“o’oÂpVq q§rrqÜqzq+pép²p“p^p`p©pßqp_om[krgObr[bT:L…EK>a70À*Â' #µ"‚!!M!#l&?,3Ç<¢DLPT…[µcUgPj4hfY_¾WðM$C78Ô.E$gnÙ ÈùQ’×}aô(ˆ3™?7JTX[ucee%_ë[GTVM‚Eû>7–1ß.É+]*é+!.0Ì4É8°<²@ØCèFšG{HGtFB¾>Ê:±7 5a3ò5;6«:É?E^KÆR¡Yh_dCgŒj lmŽnn¸nßo o nüo.oœp_q-qÒr^r\r!qœq5püpÞpðp÷qqLqKqCpso¿m‰k\f«a+Y°RvJàCtR@æAÈB„At@}=º:'6220ð/º12A5É9h?ELRëXü^¶b¤fYhgjlkplm)mÉn-n~nøo²p£q•rGrñrör¬r q™qZq:q2qpápºpOoñnñn;kØicÊ]ÝV_ONH @±9à3-¼(%‹"»"!"­#&S*ÿ2Á:pBÀJwQ¯Y´_³e>fŒg¬cŸ^îUÇLA7-…# ï¯R#\ø  ùSZ(™3º?)J R¦[‹`càbE`Z9U1N_Fº?/8y3»/ ,n)p)I*3-[0"3,68O:¦;‘< ;:E8(5g2.Å-+Ø-%.•1ç4ð9˜>ŒDÔK`QÔW÷\¬acõfÝhÉjËlmcn2nïo§p¥q¥r•s's¸sªsQr©rHqïqq pvo×oenÖn\m-l.i]f`qZsS$LDð=Ì7k1,G'W$ "f"\"#s$O(m.-6‹>)EøMÆTÝ\rameÜeãf`ÓZqPEç;1'» ^×|Ð^»¯[ ËX£#i-î9LDhM¼Võ\|aØb$ae\¦XRLK|D=7|2e.þ*Ô)(f*Z,q/1'2´4œ55ç54l2Û1.¬+ÿ*\)4*T+ò/$1Ì5l9>C·IúP UGZ]Êaˆdugyi¶kÔm>nœo®pørsstsés£rþr˜qêqoàn§m„l°kÕki\g¸dV`ZçU(N[G{@´:+4.à*œ&5$""Ã#~#‚%m'M,c2Ð;-B˜IãQ X-^¬b!eid@bö\sT£I­?ƒ5C+E"!† ]µ&5€2¼|V('3a>ÀHäR…Y_Ûaÿbê_N\V,PHI5Aâ;X5¯1…,¨)§''B(_*Ã,J-v.Õ/Œ0/œ/-œ,.*z(™'b&6&è(H+H-ï1L4V8‚=EC HÝNVS`W…[²_>bëeçhÅjÝlénppqRr~s#sÕsësèsLrÈq±penÇmJkéjÉikg÷ec0_G[UHO…IBzSyMAF8?p9Ñ5v0,³(Ø&ë%²%ã%¼%Ä%‘%x%½%À%X$s#‡"É""9"ˆ#¥$Ž&L(+.!2u6ï¦D‹J_P‘VB\j_ôbda^a]>XµP"F·;Ô2(Ú"ˆ É]6Æü¢㌆óí½2 z­Œ·)õ4¿?TI PäY@^Éd;eda`W]{YT%MìGbA9;Þ7§3"/†+Ú)˜'ñ'%–$o#“#d#^#p#>"Ì"!!Ú" "Á##Ô$†&T(`+×/I48Û>¥DsJšP×V\5`´ePhPkkùml­lDj¼iNfódŠaJ]øZ!V1RaNýKºHD‚A5>:É74/1-–+J))œ)Ä+t,©/ä3á9Õ?âFK¦PÉV¾[{_íaKb_«]îXtQÃGß>3á*e!Ý·­ €é7ßÌîjzÒ›³,Y Í(#½.(90CLZTû[{båf(g d¬b ]©Z U%OcHóBß=·8ú561-à+<)‹'ƒ&$”#Í#"ë"â"õ"¥"‰"Ç#f#Æ$y% &¡(z+¼.û3„8'=ÅCgIvOŸUg[ _•d7g"i²jtkcjÍjh f bÿ_í\XFTO¾K¹H%DéAP=ô:Õ85G2Ã09.5+ç*ï*q+¹,è/1ö63;/AcG8LäRWq\ñ`AbÀba±^ZRûJ0?V5`+ý"©£J „´v¿œ·Ûú#ß_h¶¤k ,Ì>‚F'«2[<þFŽORV]^Ÿc¬gf¥dã`Î^!ZxVEP²J¡DÛ@vCzHøN RÙX \<`5alb _Ç^BYgS¢Jn@¼6Q,ç$v‰A =ùQƳô¦  ¿lY‡™! ´ EÊÐ ø+5Ô@WIËQYÿ` fXhhBdâbV^Ô[êWÁR”L¼GoBø>®;J7Ù52L0H.‰-P+¦*Ž)Ï)Ú)½*=*à+ÿ,ý.T/–1z3x6R9+<ê@ÔEYIÀN_SW°\N`$dfXhUh½iehžg¶eBb°^ö[2VôRðN¼JEEÿAò>‹;8g5©3à2$1Œ111¢2Æ4+7 :>+BFnJìOÇTàY^]`übÌaÅa"]è[TXLAW7<-¯$°à` ø[àæ‰KŠ!)媎Y[Ìó£ í/$.8°BÔKtS©YÿaLeHgþf”d½a^_Z\ˆXòTOJUFBÀ?y<Î9Ò7§5û4ø32w1q10Ä1P2 3q4¦6G7ò:<<>ÖA`DGÙKO>RûVËZŠ^Za¢dùghÛi3iµhÛgîeŒc_a[µWSÊOÇKwGGCØB|F«JOMìQœU¤Zu^Da˜aõa†^º]XøT3KÄB7[. %î„QÔ ¿ˆÁ®ð&E¤¹¢®a3dÂuÿ©ëø‹&10Ž;zE{N1TÐ\+a\fœh heRcr`Ñ^m[W3R©N%J6F¿DA5?=;Û:‹9Á8ù8±8F8œ9-:;Ô=½?ÅBm<Í;:›:m;]<3=¤>Ä@ÒC@FÌJNtQ¿UXÛ\¡`äbþcøaõ`\`Y¨SíL–BH7Ý-ø%~kW¹ ˆ¢4 xÍ÷Ê‹³s2?eÉÜ& Ñ.gn(›3(=ÊG3NRUZW`ÜdÒg~fœekbäa^_\]!Y¹U«Q~MÿKaH³F©D~CAäAˆAIAkA+AZA¿BöD/F-HMJØMWO½QùTVX+Z4\I^k`žbÚdþgEhòjtjìkrjµiðg¦ea[]±Y¾UþRSNtK G½E€ClBƒAˆA¢AóBýC½DÿF0H`JòNXQ»UWÖZ—^2ac«cob^N[ŽWR·K0B 7r-á%Æ<㉠pbKŠyChØé×¥Ÿ‡J*5@Iˆlú ß—l!S*£56?‘HOTGZã`AeŠgŠhYÊXgWçW¯WêW×WÔWÐXXZY>Z>\^*`œcddïeÇdc<`a]ÑY•UsNÂGH=À3ã*¶"¿xÌ2 9T °kÂ~’ÚÞ¼»ç½*i˜„I güø –L ÈÂ"s*›3D;%A·FÜLcQ³WÏ\Œ`šaåb{aµa©a¤aÒa‘`Þ_Ä^¯^]¿^9^Ø_È`fa.b%cad¤eãghiiÅjwj„jei¬hâhg)fßfÔgyhijk!l&l…låkýj…hz‹+¢ßí ¤Öúò ‡('0L7Å=éCxH\M÷SLXú\¦_1_‹_ö`!`óbcc¦cêcýdBdÖe’fefíg“h‚ij±kzl"lZl¥lulFkcjPh±fÿepcîcGbäcocædüf1g¢ij#kKkYjÑiqhMgEfmeËed{cÀc3bèb”aîa+`t`_Ä``taaêaáa_]>YãWOS­P I¸B38µ/8&ÛÄ[u< [oš˜°/ÖÚ Þšx“Ñÿ÷ºGY‡ÈÌ}ÿÖÿú@á÷%ão ;èɼl%ƒ-3ö9í>€BêG^MRVfX}YÒZ3[0\Î^ëa b¤c¥d°e|fogg‰gäh“iJiöj(j5i¥i#hg ebc…aJ_][XZªZ=Zå[v\Ä^*_ñaµcSeeëf3e£e@dÙd¥ddLcéc`bÍbƒb aG`;_2^X] ]>]\¯\3ZÀXöVVSëQNØJÙF>k5Ò,Ì$Å«G¼ü ^*ë0½gçD¦q~®åôÚ·^]r«Ã¨QÿãÿµÿÜKHÕw¨w h ³Âå“")/¾59T=AÁF¼K÷OúS/TÈV4W“Y§\*^Ž`°bÉdCe³fPf§f•fÛgg+fËfHecÖb `S^[ºY.V˜TžR»RQ¸R‹SPT×VjXUZ6\]ÿ_B` ``@`S`“`×aa(a `Ì`Û`…_Þ^˜]O[ÕZƒY!WÂVTOR8P9MúLIF@‰:82**"£6TV öÎ&\ÃgµNùû4gTè{e—ÄáÚÀ¹ha]tŠ£€ÿÃÿ¨ÿì"¢Êë’‰ y -Oüî%j+@/è3K6¿:‰?1CèHdKaM‹NÂPjRmT¸W:YÄ[¼]‡^>^®^n^v^,]ë]\ZuX¿V“T~ROŠMJyHªFïFvF6G%HIªK9MNÍPŠRkSÆTÆU1U¬VV«WOWüX{XØXôY[YXˆWUrSdQzOTMJÄH…F§EAC B >—:j4-p&… 6Ø ñß÷ â®sç0‚y¯ksª¸´­­Àe`RVbs3ÿàÿ›ÿœÿÉ 'ÛÜ¿ L —âuÉ o%Š)”-0F3Ó7Ûx@2A÷CÛEÚGHÖI¾J®K¦LÌN OUPNQ"QiQïQyP¬N¨LŒIâGVDÜBd@\>š=;×9 72’-¥'¶!ø¡¢Yè þO/¸e‘7òçp‡?È‚w‰£Œv‚§ÐRVLNOTH6ÿ¼ÿ–ÿ¥ÿò"o}3;SŒ [ ¸Ö`â­ 6$:'8)Ä,s/ì483;§>‘@5A®BÅDAEÉG`H…IwIÀJ2IÚIgGîFKCíA¤?<£9þ74Z1·/ý.e-ü-¬.\/0Z1‚34´6Ÿ8Ÿ:k;ó=)>a?°A7BÈD_ExFkF•FêF!EBÅ@n=Ä;997&5¾4¦391œ.Œ*í&7!ž*$ge „ iL…g·Ù‰?ÛÆ g€Bàˆt‹Š|VKo©Ò?A<MWT=/ ÿÍÿ¡ÿ›ÿ¾ÿÞÿõÿÍÿì&>œ£\š ॼÐG "%)(c,/Û3x68Q9‡:Ú;©<= =l=w=¼=|=";Ø:X85í3€15.É,')­'=%—$#¤#F#Û$%±&¸()œ+s-b/D0ô2f3Ñ5@6è8r9ô:Õ;˜;;‚:x9 6ø4Ó2®0Â/0-É,L*Ë(s%É"3~¦Ý« „ ÷âÿm/û#ñÊÑMgD𰌃…gK8K{¬Æ/47RbZ:#ÿßÿÃÿ±ÿ·ÿÀÿÓÿÚÿîÿÝ;Ñt5»± ¯ ‹äÊn§Ë!K$c'á+#./Ê1D1¢2 1Ô1›1<1 0Ñ0u/j.),D*a(H&L$J"* 11΋)ÓLÚá¾æ !¤#P%&º(0)“*â,c-§.Ø/e/Þ/˜/^.[-+i)Ò(_'-%ý$Ö"ü ÎΦƒ¾g, Ð .$’P)ﻯ bk*ê·°´šm8$2b‹Ÿ£/DIQKA1,ÿïÿÃÿ­ÿ®ÿ¯ÿµÿ¹ÿ°ÿ…ÿ‚ÿ•´³Ÿ×飦 ndRÜøö"½‚"G$Q&&É'm';&ÿ&W%à%$P#!–½ãð H{÷krœn;‘ùµR(ú14ÎN¨è [!˜"Å#^#ã#À#¤"è" Í«c:² ÍP²@L « . g\)i«A~†˜‹‘µõE_6çÀ·¿¹ŒO-^yzw&HRG/%$.#ÿ÷ÿÆÿ±ÿµÿµÿ¼ÿÂÿÇÿÅÿÈÿÄÿåx¹œWÖ× † 4|E• ¨‡R7OÂHOOàg®ø>†þ v P , ˜ # &  K ˆ ò K Ï I '/”ù[”½Kz1Ðáü$7Ön”’{ h æ Á aL°à5H¾ØÕЉ[l¾LV"æ¾ÈáܲzD!$6R^ZS!9=+ÿÿÿßÿÂÿ±ÿ©ÿ²ÿÂÿÉÿ»ÿ¥ÿ›ÿ›ÿÿ¢ÿÄjÚ¸¨Q- ² Þ ö Ý éàØˆ(i®–Š wb; Ê g þ”N+Æ{ˆ‚œ³Ýø;yäB » ê >l7ÇÍápõî Õ ] ã ZÍmÉPü†ÉÆà7"?‹ ‰RByÚ%8&òÏÊä÷ä¯|T99;IXZLÿäÿö+. ÿüÿùÿûÿÞÿ¾ÿªÿ°ÿÃÿÓÿÃÿ´ÿ¾ÿØÿîÿõÿÛÿßt¼ =Áz¥í!'±>m«Þ ) } Ú ð ð pÖä)1oÁm$9[Ñ]="")B /  „ ä Ê ¼ 5 i*ý*x+î¾nó]Ýwft¤½³fOn³øþé×Ûìÿûá´vd]MHW]Fÿåÿçÿü'.ÿìÿú ÿàÿ·ÿ¤ÿ²ÿÑÿàÿÜÿÉÿ¼ÿÌÿÛÿÊÿµÿ±ÿÇÿç tùž3†±¤«ª ¬Ð5PiU;ïœ-ÃXé”S-ÿûÿÖÿ¶ÿ©ÿ ÿÿŠÿ„ÿ~ÿªÿäWÐm°A«O{\;ÓbĈ Ó­¤eÿÙÿžÿ¢ÿÇJlvgbj“ÓüéÚÚäòò寣Ї†oTNBÿûÿóÿö24ÿúÿú ÿ×ÿ¶ÿ±ÿÍÿõÿâÿºÿ¿ÿáÿûÿþÿ÷+VgU55h°ä ;SWJQO9 -EC- þϪ”Šˆ~oYQRtœÙN_XfmpX2þ˰¢µÔéõÇxÿÆÿ¶ÿÎc‰ƒ^LOZx³âþíßÙÚÝßѱ–š›X;!ÿýÿþÿûÿüÿû#87 ÿüÿîÿÍÿÃÿäÿêÿ×ÿÓÿÙÿï ÿùÿëÿÞÿÅÿœÿ|ÿtÿ‚ÿ„ÿŽÿ ÿ´ÿµÿÊ?^Jÿúÿý'@\ƒµÒÛî“|lfZ@ ÿûÿòÿóÿüÿôÿÏÿ¦ÿšÿ˜ÿ‰ÿrÿOÿ>ÿ9ÿ_ÿ”ÿ×*; ÿóÿÊÿ¹ÿ×9bkaNQ__l…±ê ûìåêîâÑÍɼ®²¥{F!ÿûÿüÿü $=:ÿôÿíÿõÿÐÿÔÿóÿßÿÄÿÖNP#ÿôÿßÿù$4+#ÿöÿðÿÿÿÿ1• n|WÏ«~cPSTh„£¼À¿©‹rpp[A0(" ! ÿÿÿëÿÖÿÖÿá,GJ4$$NyŽ‚lVM[s…xp¯éøåßïøåƸ³¯§ …U( ÿüÿýÿý(ÿôÿø ÿøÿäÿâÿó  ÿçÿÖÿþ9]T0  7Œò4FÛ¬‡ppmx‰œ«««™}c`[; ÿáÿÅÿ¹ÿÅÿÐÿé  +Lkxuwupnr}‚”°Ñï úòèÔÁ¹±¡‡oQ) ,ÿýÿýÿùÿðÿ÷ÿúÿòÿúÿäÿØÿí4ÿùÿ÷PtuL#ÿêÿñÿý7SrweH,@{Ï,A-åË¿²±´´ªš’‡s_YM( ÿþ 6LW`YO7ÿþÿùÿÿ .B>46DQgŠ˜„t|–¿àò÷û+$þÖ¶©ª¨—vM0 0ÿþÿûÿ÷ÿíÿìÿõ  ÿûÿô*ÿèÿê*3+$'=TaT;2Ke}ƒun}ªÚ-2'èмµ··¦“މwd\R9$$8MXRG5& #1GA=Rt’¢©Ÿ…Œ¦½Õèö+,Ú¥ƒ}‚vX1ÿÿÿý  *ÿþÿýÿúÿúÿúÿýÿúÿÿ ' ÿýÿø .MVG6*.:??B;, ;r¥Ãý¸ÁÛÿí϶¯´¹«™—”…tlh^UKKW^Y?ÿü $/)$1C>It¨Ïϳ{Š­ÑÖÐÔæ ýÏ–hQJH4ÿ÷  *#ÿûÿôÿûÿú EbdU<0/0353-*.75@Y¢¸ÁÂÉÛý"ýßǼ½¿¯™—‚~{xpcY]]Q9  .CIX|Ÿµ¯—†Ž®ÒäØÈÓïþ»‡^;&ÿüÿýÿü  ))"ÿù# (&%* &IagS;%#6PaaVNYs›¼Õçô  íÚÏËȺªŸ™’ˆvh^]\SF948<7(  "0ASez„…€|ˆ¦ÃÓ̺°ÀÛ÷ê¸sK8$ÿöÿæÿë  Ë~¶ ó ò0êx¦]0¹‚³áÜþÛÁâ,+‹S€ u?YRc˜ä;Þ°ø#%²&™&{$æ#ò"!!dÊC…МĪìL ü g ô û â ý  _ § ß   Í ‡ S b — ú G Ž Ç _Ò9Ôso¥ßþ‰â«pÀ¸ÜWÔWØ ×™T+î€ÙœƒôD¬ þ „  ̽{Eÿ±{\a¡i»k>î…d‚ÒI.ø|(áÏÄ œ!) ò ô!÷#C$B$6#©"W!n 9Ò/²%yØ+þF·Û„ß Q {  1 Z Ç Þ ê ³ Q ñ · Ì ÿ B [ a i ˆ µ  ; ± #'n!øIQ0ª±ìÎì£RòR¡·¾Ótì÷Çæá¥ ¸ÏéÛ h, ãMLá7D= Øš¥º áÃ:J g³Mà§¡`  Í × *µ¼ +!!ð"T" !!½" ".!Ä!. ù†ü;’×Ho/eþS o T \ [ % @ T ƒ ´ Ö ð Ý Ç €  È ¸ ä  $    # > ? — î  y”üÞiJ…îŸ Ø‹Xÿ„ù~éýò(#SjMj¤øÑcŸßªþ_½Ù­I!ÒŠ*°@IµR=¨÷²D¹ N‘o>r$…j­/rì;óÓ«;¿¶~ë}ýwäHÅ %  ] ' Ä u  Ù ¿ Ü ð  B m ™ ¦ ¥ } V  Ó ¦ – ¶ Ù ý   ð Ð ¹ Š ½ ô  j,KcŒøß9o˜4«{zû»E’ñƒnü¥‡û÷}!üÀè ù ¦pèfPD]ÔCsÍMäPÍ  &o^O‚Q²´Î:æ”ç'›:Ð$c+µ==5 > O € ‘ ÿ ± ´ ‘ | ` j Š È þ . Z s Š ‚ Z - ñ ª  p ‡ — ¦ ´ ­ › y X <   %  P Š0—¸ £ÕE¦ 7 ±  }I˳ȋ}&æ[>[[R>t2ˆ4ÚƒuÉ%íejTÁHH({®ÏÖ¾ š—~…Ë>³·Ò€>Åæª“×E}˜–Ök1Þ1T É ½  × j  × ¢ N  7 & ßÕÞ  4 _ ~ Œ › ž ¦ ˜ ~ P øû $ E ` x q X 4 $ íïÞ † i @y©«<7ßÀ+ T õ þ  l = ® c.@ÇÞ¢ù– [ˆõ ç(F:|5Žš[N¸ûc˜Y8<šŠã–äA˜r„O†à½ s›i¾ënjíI ¼  ˜ W 2 ð w ê 8 t•m<晀yJ÷ôø1SoŠªÆãïïåÏè+˜ E z l F úîÆ¯ƒÒ G   °Mì# k ã   O ë 8 ¯ . *VãÝâd¶:é[³‡2ž_-´D¼=zw‘Š>ø?ud磷áßZmÚè¸j†-l ™ L x M  Ð q ( ìÆ¡xL,  ä¨)‰ø¢x,ôÎÅ·¹ºÎæFy£½Ñæî0ž@ä\º»¤hL4 ôÒú4ä Ä Ç Ì ; = ¿ ‰ 4 ¯ ? ö > ˜ È N Ü q o¦ää˜G߆5ö;ÇÉ ¡u]o»Ab)^xrÖ.ÓgÊ[§²R·ª¹k Î 6 – š Œ › ½+˜ä^ þû 2Ì3Œ¸¦zbXUA-$1[¿áô$_½\£/e€W4ÙÔÙ'¶ N ä   ½ ¿ Å Ÿ w [ v ¯  ; t ³  H Ï Ž wLì[¿M Ê™n#Ê:¼ê…t©Óº[Ô—C — o Æ ¢'¹’ºÅ+˜p Ê ; ; Ü n -‚r}Ž?ª·²ýœµÍÞ»|N3,ÎSÝ’nƒŒ“ˆkJ45<Y|œ®µÀËÈå|ö…q·­ŽY-=bßl!ÜcÓÙ±u{Ÿ¦³Âö @ ã * ƒ Ô C Š ô w í - e »>ÄmÓŽ&ž* a û å   Ü ­ ˆ ¥  à $ “ ª  ï Ø ? ) z û m  l VH eúÒ©~8óuØ"[øã8‘»¢Bø«Y!ñÔmb`uš’j7 óû8Qcsˆ¦¼ÕbË<˜çõ轚Ÿ¬ |4 ¹;FìjÑB£ê + [ † ¿  f “ Œ c h » C ª ñ # J w Ë ( Â:« Ó D   > 7 5 R i G “ ½ .   s á  ñ níyGtá•wH Õa·øaùŽKõï…ñ±b–K3Nerp|kDÇ ‰•¢ºÇÖé<ZvŽ©ÉðDk|€sjh\€¬3ó¶Py`;UÏ^¿:¯Îû Q ¦ ê î º Æ E Ú M ~ j ` _ ^    ¤ î 1 Í § Š   ³ Ý  2 2 Æ o îÉÂÌ´wþyÀ…¬£®Š&À)iã²Ìía\m~rL½z0Sˆ»èóôÖ¾’Z"ÿùÿäÿÌÿËÿÕÿæÿæÿæÿëÿÿ7m¦Òæöôíéï %Nz¹¾¨´ð[Æ +ŒÓÑ¿sÅ%i»  O N '  % œ # f g s a = . ? x — e . ÐØ N € \ }ÛV翦›t3ÁFÌr œLYm7¸3¼CB¢#T-û°xY@ADVa}™Õ)}¿ÕåÏ»‹TÔ¨€`MLRG;7?AYˆ·ÙÔ˘VÏ»¸äJ…Œf"óï5BR`¡Þ‰yŽv ¼UÁ(’®tKŽ  € Ç   è ¨ m R V­Š_=L‹ÂÚŽ$tÆ)§VѹžpˆÅ®p’}eíÆ²ñ`šnì|>W©GãŒ+´@ŸûöÝ»¡x?ú·†bO/ÿ  ʘü`ÿ÷ÿ¢ÿŸÿ£ÿã0y«¨l5ÿÍÿ܈Í1¯\ ÀzÀq2»µÌUí V Š _ 4ç–fgæÆºÇéì×t _¨ì9Ä`KR\@ìq 4FIU+¼jeÃ'íî¥<òe>2g‚Œ˜ q Q Ð 3 0 $ ø å Ø Ò ¼ š Z  È € F ìЧ›§«žh3Î^Å9†ÁÝò$eíwU=l­í!±2ÿ®ÿˆÿ¸3†½ÓüAÒ†Cà?h·Išµýn |¤uW*üéý( ëÑ”Uêã/t¼T(Uk@æˆm¬îÚƒ)÷×/ņ hÁcàhF2f ¯ è î Ä ¬…n%Á}»'JB<½Pãu»g-øÜÔ·‹ ˆ ³ Õ Ú ò (4AN_a†ž+ÿð*z¶Â_ÿÃÿ8þïÿ,ÿ’e}™ßƒ[\‰¶7Ê”hz€bD<]ÐÌκ}7Û5ÛbÎB½Œƒ¼ú Ï‚dö.ì‡BžAzºêÈŠd ‹ Þ b Ë$»ýó¸YûôÞ©!½E75ì“þjÇ(œ °p^Q)ûiº¡‚9þÇ–s [ 9  ¹I°õŽUÕƒ—§tî+ÿcÿÿ/ÿÄJž¦}M‘S:³á\ÓAyÛ5¨>FIQx,2?ÏŠ;ô©[¦Z "MhT ×úDlc‰æ^*½ S á §”µêÜ™ß'('î? ´"*#€$Ã%°&–'#'¶'î(!'÷'Ï'P&Â%þ%C$|#®"ý"G!î!Ä!â!ù!÷!ý!Ž ÷Ì¢¹í-…’† ­ ©„Yù.¯­–1^ÿ~þÐþÍÿÿÇV‰E\ ¯AM¢ [~qzËG¬ð3Yv}Œd)öÕ¢c*úîî %9<48Ÿ(X†ªSÈ  IByðé™(ë!u"g#r$Y%2&@'m)*Ë,¨.s/×1$1á2Œ2Ô363P3g3#2Ô221‰0¶/ì/.<-‚,Æ,,t,Â,þ-+-j-6,Ø+Ö*Ü)O'¶%¦#…!B,e£¢Šû6 ZkT¤·r§z$ÿUþóÿo%¼¯P"Zå„ÎÝøn–e.8”uÇëÜÝìÌ®µÉÖ‘`CX‰½ÅÁÆð ‰ÿœæÔ{  Ò–N~#Ö#S%ö(h)ç+<,<-~.×01Š34Ù6¯8T9Ý:Û;Â<-<”<Ã==1=9<ð<¨<;:Ò:958T7—6Õ6Œ6}6Í77C7“7ƒ7F6w5¶4p3(1M/d,ú*€'Ñ%9"± 9ÌuÓý»G þü_¡Ô à»ÿ˜ÿ=ÿmv66ÁQ™>YuRê mþu§¦ÿþÿøÿü$PyxQ$6vÄÖ|BúË/ P Ø*Pžº¡#'Ô+›.ô13+4f5…6¢8"9ã;‚= >Ç@[BCPDE+E¼FFcF·G(GfG~GHGFÀFdEÊEDHCuBÁBA¾A°AõB B>BoBEAòA'@e?L>E<Ñ;`9D6ÿ41B.*ö'Ý$ö"?Á$P ù áÿ†³£UŠ ÿþ;¨ŒFJìjMÚ­£¥¡cP‡þu­ ÿvÿrÿƒÿÿ®ÿÞ+!ÿöÿÍÿÈÿ÷p•91¬ò… 1 žà5åLþ!æ&-*„.Ê3,6²9×;Ý=ò?N@yA—C#DÐFDG˜HìJTKìMmNÓOÏP§QCRR¶SySëT8TT S²S\R¾R Q4PZO¢NåN£N­NúOONüNwMÍL¡KpJHºGSFDSBŠ@=›:O6¼2°.À+'z$5 ûþ;U 1 S¹P_V'ÿøÿ{ÿõAmÿäMÏì¢>ÿòÿøÿòÿþ:–ÐÏÿÿÿ¢ÿ¾ÿé8H=!'O´î5¬nà Á .µ} Ç$Y(i,ì1¯6D:R>_A{DXFUH‚JK6L$MuN¶O²P˜Q„RÑThV3WßY=Zq[g\†]z^q^û_l___P^ë^]ñ]K\‚[­ZýZNZ(Z_ZÌ[ZÐZ¥YåY W•VTPR®Q)OÄNYLøKIIFQBê>o9ß5S1-~*''-$/ Òá{· ª lép“AcàŽ=‹žAÿÖÿÈÿö  9m„ÿþöÿ ÿ,ÿjÿ¬ÿ×ÿÜÿØÿÚx&˜¹ƒþ âEð%U"&Z*T.‹378<àAXE?IZL¡O Q®SæUIV[WWùXäY“Zb[U\É^|`Maìc+dKe0fBg%gþhjhÇh«h~h gªg)f¤fe@d¨dddŠe.eŽe„eƒdîdAbòaŠ_Î^+\~ZÜY8W«UßT9QžN­JqEùA<:7æ3Á0X-8*/&ó"ûwâ¿i^ „ ФnÛ¹yÿþÿÁ_AÿñÿÇÿÉÿì ÿïÿÔÿê>ÿÿÿ¢ÿÃ;x–Ý6÷¹ù e ¯Ò„0hß$k( ,¥0›4ä9–>iC G*KNŸRšUêXÝZ¹\§]©^g^Â_i`%`´a“b©d4eãgyhÓiµj„kkÛltmm:mgm8lõlŽlKlk«k5jšj$i¼iêjqk2k±kàlkêk§jÏiáhƒg;e¨d b3`q^\²ZRWÛT\PžLG~Bß>C:`6ì41Z-ñ)Ø$ØÖ!è;\ ´’¨ƒýŽj“ÿñÿÛ(F;ÿÒÿáÿõÿèÿõ= 2a ¿WÜ#O.  =<ð9Î$É)».c2¥6Ï;E@EIžMÖQkUXu\?_>aÅcd‚ee†eÄfWgg¢heiMj„k×mnn¿oMo«p2pžqq q2q pàp´p¯p pvpo¥oNo oIoÍppõq4q„qqšq3p¯oÊnþmälÅkAiÈgÈe³c `z]NZ V1RDNI´EªAí>¨;¤8-4P/Y* ${úùD v²BÖã1ÿ¹ÿÇÿÿ9ÿÝÿÜÿ÷/Æá$>&x \¢ Š U õ»r<¡ Ô%‹*¤/Ì4˜8î=AOEïJ‡ORËVCY*\Q_,b7dZffµgng¡g³gâhmiAiæj§kultm’n¢ošp8pµqqmqËr(rRrdrUrMrWr‡r¢r—rOqòq©qyq¬rr”rèssFsVsssErórbqóqUp¿o¸n·lëjßh!ezb_±\¯Y·V‹SLOÝLuHøEžA÷>Z9Ü5"/U)*"ó-<\. ‡:ª‘A}yÿï+ÿëÿí#%%3„³Å±’C¨ u H ø{læ!!N&*ý0J5Å:è?C¶HLhPàTÕXŒ[^s`ÙcZeJg>h`iRiˆiÈi¬imiai¨jRjÏkl\mnËpq8qòrrÐsEs´t/tzt£tœt›t©tÞu utït¥tdt=tntÍuCuu£u°ušužumutt4sÃsNr‘qép¥o6mj·gûe;bŠ`]Ã[‚YVvSSPLGHšD!?¬9é3–,ˆ%eéT ÊÏ‘¤6eÿëÿ÷ÿÞÿô -ø3·LÓK(D<E}#X'³, 16N;»@ùEŒIÉMŸQðUÑYm\^¯`¨bçd›f+fúgºgèhgügÝggfìgg«hBiej¥lWn$oÚqhrksEs¿tStÏucuÂuþuûuöuóvv6vPv1uäu“u`u}uÄvvUvKv-uÛu§u8t›sÚsCr¨qùq9p•oÁnômŽkói±gCdébÞa\`^²]Q[X£UQšM>I!CÐ>7/£(ˆ"cW÷# ñ [XÖ_"<ÿáÿá"9Ô‹Ú)˜$õ8m ù$Ò)f-Œ26Á<A•FæKÀOÄSÄWU[V^}ab«dVefãg­h>h"hgžg5f§feŽdÝd¯d¯e¡f®hŒj€l¿nñp×r¡sÖtùu›v;v™wwUw~wvwpwqwwªw¾ww*v¼v|v‚v›vÈvèvßvÇvvQuÕu#t?s‰rÈqñqpo'n\mlldjõiEgŸf5eQd£dcb>`¯]ÏZØV²R·M„HEAˆ:2b+|%™ÜU. È!xËï+ÿöÿäÿÝÿú:^#û$B#Ù"ú"!!‰""Æ%'e+`raécŸfGhök¹nOphrysëu[vvÀvîw9wXwmwtw„w¢wÓwñx wÕwhvæv˜vsvHv&v uÙu£u>tèt6sOr,q1p-omýlÃk¯j¼jiŽi hSg™fîf‹fPf9f@e¹ec+a ]¥ZURPÄJÔDK<÷5à/N)F#„ýö= * 1Caó˜ÿïKx-ö.?-Ä,Ó+ê+H+Ù,v.Í15£9¹>QBšG2L-QUØYÁ]p`Mcqe¯gÍh¥i9híh÷hhg™fMe"cÖb—a;_³^T]\[[ž\\™^`àd g'j9m#o€qâs|uu¨vuûvv*vFv|v¾wwew¢wâwÑwwváv vJuáuŽutšsßs/r*pþo˜nCløk³j“ikhŒg¯gLgg0g:gbg€g¾hhohîhõhègËf£daM],Y@SìNIGp@p9Z2å,‰%¨×ÖJ ˜ s·Î×ÿÿÿðÿ»ÿÕÿò*_8u8Ì8X76ž5é6]6í9I<@4CóHLRPÃUkY«]›`¬cÑfhki›j jrj5i+hMfÏe caV_­]à\ZXrVõVaUÄVvWWY \ _Tb’eæi#kñnÇpÈrªs~tt tSt†tÇu'u”v v{vÒw¡7/0'™ o {”­+¯6¾^û_ü`_¸^Û]ë]¬]à_D`¬bÜeg”j lNn*oŠqjrNrÎq—p'm„k[hcõ_+Z´V­RÍO”L€I³FyC¶A8?µ><=¢<ì==4>?òBúFTJýO‡T©Yì_dh køn™qrmsÎtubuâvpvµwvåv¢u8s°pÌm­i¬eÈa¼]ÊYüV ROLAI‡GëF[FE‰F‡GòJzLíOrQ¾S¯UZW=YŸ\V^øa;c8dÖf´hAißj“kjSidgleöc_„Z8T÷N­H®A»:=2b*ß#ûõ„ w gÐD àeUffêfæf/e\døeeùfÍh[j1lHn1o­qqêsCs{s=q8o k©h£d‰_ÙZ­UæQ MVIÍF„CÆ@±>;¸:8u7”6¤6§6¯7ê9;Ê>ÎCoHM¾S{Y9^Èc‰hKkÄopðrÊsÊtáuŠvLv©w)vÙvˆt·r¨nêjöf aG\`W‚RûNfJ°G/DÍB\A?¦?r?*@?A®D%FƒIK›MÕO«QŸSôVÓYÉ\Ä_†bd½gik6lÎmm kÞk,i#fÑb]öXR¥LE=56-š%ÿRÈ  ÞB++hEi°j[jžji€iii jk8lÐn›pqrršsIržq•nÌkágÌcõ_QZKUPGKþGŠCû@Ï>n;È9–7u5Ü4+3%2&2233Ù5ú8Y©@¥BéEDGŽI€K‰M¾PˆSwVÚZ6]¬a0dlg¥jlžmØnÎnpnElÛkŽhrdÏ_ZãTöN¶GX?ç850 )Ž"„y~Ï  ìÖklŸmnmºm[lýlßm-mRn$o…qrrs[szsŒr pCl´húd%_ZfTòOJpF Ay>; 96±4Ê2ß1b/Ó.â. -ð-Ú.g./û1®5‚9¤?E¯L~S4Y‰_ÏdåiÎm1p{rttjutv’ww¸wZwt¢q¢lLf×`;YÊSDLÆFá@ÈäA.CEE€GÂJŠMZPöTÐY0]—aµe¤hÉlnp%p¸q%pFoÌm·kfÕbÞ]XDQ’JžBô;€4,™%«ÒE ÙlmÀnÑoho8onÛn´nÜnùo¼qrVssOsôsräphmÍiodÒ_@YÿTzN¬I8D?Ú;8¸6=4¹2é1w0.ì-Ñ-#,Œ,L+ó+â+s,'-0M3É9?mF›MÅT×[·agZk©oÝrptävw8w‹x)w¬w^tÆqŠk¿eÑ^™W†PhIgC<€7¦3S1B/>.Ö.T.ä/g0À2B4$5Ê7€9=;*=?JA“DUFãJZN6SWö\Üae]i3lopªqÙq’q«pYnÃk“hjcõ_¨ZSþLôF>ß7‚03(é"V³†sm—oNpoqqqpøpºp´pÉqrÎtt³t¦ut"r«o"kfZ`ÇZ`TRNJGøBh=,9^5‡3:1L0[/..-E,¥,++&*•)Ô)'(@(p(È+^.53¡9a@ÞHXPWž^oefjÓoýsuÍvØwûx xcw—wtAp¿j†d\UT¯M EŠ>ç7ÿ3.Û-+X+)*Å+?+­,Ë./¤0ú2F3~4÷6v8œ:û=è@kCÉG}L~QÐW]!aõfj møpr—ssÅsrpp@màj:fðbF].V»PsI\B/:“2ß+v#óßûn”p9qOqòqôr0r)qØq¾qórËsôtíu‘uPVÊ]bwhlJpr×t×u&uÂtðsÈq‡o½lèiÖeU`ËZþUGNcG%?X7a0‚)Ýp=q¼rÎsqs˜tt:sçs½t=uu¡u¥uÊt‰sAo‹k-d´^‚WGO°HJAE;5Ò2.à-¥,:,+ë,¢-K.}0141Ñ1E0–/R.J-+¯*](™(Z(ˆ+º/\5Æ<5DBLRTÃ]TdÀkÜp¬uBw}y²zzgy5xRuRqålf^ W%O=G`@8‡3., *D*D**d*ƒ*À++W+„+i+5*â*i*z*½,-f02Ç7+;´AëHƒOÁV½]chhxm£pãs°t’u´uLt›rÔqlo;miŸfaT\¬V­PFIA‘:å4`ptqÆrºsEspsõt5sësÑt‹uWu¸u9usEqlOfö_´X¶QI.Aõ;$60ò.+À+d*Ô+G+”,Ÿ-¾/z1º3I4 3c2«1ƒ0Ò/Ø.’,Ò*p)?(š+-×3•9U@òH™PúYua=hÚnusËv°ywz"zíyíy!v9rÿm–h'a$YÿR1JvC;€5§0@-–+J+*Û+g+·,,T,Y,P+Ü+S*})‡(È((J(³*Ê,ù15 :ðA/H¢PW_^ddGjUnxr!s²uru„uRtrÿqmp mÅkQg¡d_Y~RÆKåEs?oóqqËrBrqrçs(r÷rûsÙt„tšs‹sp€mbg˜a…YÜRRJ›BÌ<-5í1¯-U+F)³)ï)ô*½+G,{-ã/ò2„4N5,4¤4,3h3621{/ƒ,Þ+)å+Ž-¨2š7Œ>qEWMKUd]XePk¡q™uxdy{zµzy¡wtVo†jÌdl]ÈV;NÉG?ÿ9ì40å.-š-A..È/ˆ0/0A04/a.o-+Ÿ*5(Ž'¶'(#)w,Ï05Q:¹AÆIPÛXW^øe³joqwsçtvtÅsËrìq§pÈogmÔk:hÊdÞ`zZÁTÙOIPoˆpWpïqeq§r rBr%r;s+s¤sbq¿pÌm¤iœbî\=T>L-DU<ž6Š0Á-+)ƒ(*'G(({)‡*L+½-/ê2Â4Å5Þ5¤5‘535b4á3á1².à,Ÿ*Ú+¶-1+5^;³AþI®QYÄbi o•s—wWxÃzGyþyòwúu½qm`gzaDYêR«KTCÀ=g7F3º0 0/µ0Ì1å3+4W4“4…331«/‹-·+Ã)l'™%Þ%á&/(±+//Í4r;B6JQR@Y«afÌlo+rPset8sŠrÈq¾qSpÁoònZlùj9gbW]kXTSFn½ocoáphp¾qqq)qRr!r&quo4m¡iÈdõ]½V¹N¸Fo>¾7t2,æ)å&ç&%›&‚'("(õ*†,/ 24#55¿646?6¯61542ý0O.,,g--0³4M:?ÍG!N³Vô_kf¹m“qéuõw£yVy^yÁxfvÂs%o¥jHd™]”V›O`GïA¡;Ž7ø4Æ4(3Ÿ4Ï6,7á9‚9é9â85ó30°.D+})&—%©% &§(P,//ù6º?*?#<â:6W340%,×)é&Ø%8#æ$¿%(¼+½1I7Z?jGˆOòXK_IeîjcnÝpýrÝr¬r qpØqpõp pvotn3k·hßežbrlõm•nn¸oooo”oëpJo,m—jg a½[–S¬L%DE;á4Ô.œ*Ë&Ñ$ò#E#R#o$a%&&Û(z*¤-‰0z2Ö4¢5Ž6Â7Z87¨6³4—2L0J.h.\.µ1c48Ê=oCèJ¢R›[b½iònÌsQu}wœx$yxuw§u;soj¡d~^AW£QK„FBt>æ=¢<¬=º?@öB¤BâBÁ@Z=\9(5j1Æ.*ÿ'À%â$J$$Ø'/)j.\3ë;ÌC¹L@T²\c@hbmzp%r’r²rNqEqqDq^qOqMpªoïn7li¡g?k˜l(l¡mNm¾mÄmÏnoo&m|kg†c¦]‘VàNÆFý?(6Î01*Ž'‰$I# " "q"µ#‘$N%W&' )Â,š/k1¿3ž4Å637 87¾75*3$1V/´/¨/í2-4G8j<¹C IŒQ_Y™aTh—m­rutéwIwðxÑxCw‰utpÖm)g¡aÐ[UgPKK{HDoBžA.AÎBîD’EÝEÓE–C?@e<7ì3±/Ÿ,C(Î&±$×$§$:%¿' +x0š8g@2HËQ;Xó`f|l>o{rurìrÑqÞq²qïr@r‰rÂrrEq7oÃmçl/j j|jñkžl*lRl’m¯n+n&liãea`ºYøRøJÜB×;2Û,Ê'³%a"Ý"6!¶"E"—#V$%%É'(ü+s-Ó/ß1¡2ã4X5P6\6c64Â391ë0á121®3Í5¸9¥=ôDEJ¦R$Yïa5hlþq£tv“w?wüwBv\tƒs=p¾mÒid^7XSÍOL~HýFÄDÆD—EFFÁFeEèCÀAN=b9C4Ø0³-P)è'Ò%ý%Ž$Ë%¨&K)é.x5õ=tEîNUå]ÑdUj¾n¬rDs/srÑr¬rÒs:s sÒs›sŠrÈq”oün”h~hÍi=ièjjÐkAl°mTmHjÛhnci]úV‹O9G>Ò7/)}$ç#;!m![!S" "~#1#÷$å%Š&¤(1**+ð-š/A0±223B4M4Ž43÷32p22É3€5˜7;u?ËEøLS+Z€a?gšlpar»u$uâvuÜtßsqíoïm­içeÃ`­[sVàSP?M!JÏHaG`GGŸGåGWFƒDEAø>P:E5Ô1®.G*ä(Ë&ü&e%q%Â%ª(o,93?:kBÖJÇR£ZÃaãhüm±qôs]tDsÁs³sÆt=t«tÅtŽt¦t-s,qÊp¥g}g³h)hÐiŒiêj‰l7lólàj)gwb\ T=LÌD¿ÄC]IWOQUÌ\bcgãkŸo+q#sJttÎtrÿq(oãn+l^iof@aë]%X™TÄQþO2LèJ-HSGFÃFŽEáD»Bo@8<õ9P5O1‡.d+F)N'Ÿ&ú& &%‰'•*0ê7¤?îG¤O€Wž_f¼l-qs t†tCtHt/tžtîtÉt_tnt s q±pžfëgg¡hFi i~j=llØl–itfe`Z)RJ‘B’9ô2>*É&U"±"!O!â""#2#à$s$ý%w&&ç'á(°)·+,_-˜.„/e/û0‡0ø1;23#5)6æ9á=3AùFÄL€R[XZ^rcwh kmäo›qœrvs4rvqo;v8-4 1D.s+¨)È('D&/%æ%&”(Þ.—4Ü=DŒLwT•\_dqjŠpr‘tt|t„t;t¥tât†sóts½rÉqˆpfÀfòg‡h0ii•jolfml”ie´_žYPôIwA”8ï1U*'&#"ê""6"Ú"ï#B#Ö$„$ô%L%´&0&¦'I'ô(ß)ç*ü+õ,Æ-—.F.à/Ž0 1]35å8X< @AEJÉPgV7[¹a$eFi!kxm²n÷p•qUrq]p&nWm(kýjåifùcž_Ï[{WpSÿQNIKGÛD‘BC@½?Æ>UeCZI9NáT~Z<_'cÍg%j—l˜n6nÎo¼p,pÐpko`m§lMk0jwiahetbL^Y×U­QöN`JŠFB#>¤;ö:~8Õ7n6 4L22/Ø-›+½*(É'…&‘%w$Ü#Æ$ %ô*«0+7ü?MGKOHWP_ÕfÎmFp¤s‚s½sµssas~rÁqÈq‘qRpzo€n¸eÍeÙfyg5hJi:j]lylúllh¢dÐ^OW\O;GÏ@07¤0R)”&1#œ#Ã#Ø$“$™$»%N%û&W&Š&õ'(&ð&×'?'í(D(­)@**À+”,J-W.0<3!7;…@F/L{R«Xp^/b¢f©iel›njoooíppƒpGo~nl‹kfjêjeiÁg¤dþ`À\~W SNLI¥DÚ?}:ô74Ó2Í1Ô0é/ê.i,›*ß)w(P'}&ˆ%«$µ$"ï#ˆ$†(×-ü5œ<ÑDØLÊTä]‚dÁkŒoLr’rÿrúr$r|rŽqµpšp9o÷o>n}mÚeQe6eÈf‚g¸hÕj#lUl×lSh‚d™^WNçG~?ì7b0')‘&g$$T$%Z%u%˜&"&Â''U'Ñ'û'”'A'¤(6(5(8(“)=)¿*|+1,k-E/Â3"8@<ßB“H³OfV\aÛfiŸkÏnp pµp_p‘pp¿pUo§nflïkÐkskAkiZg bÊ^†Y(SÚN0H¹C<Õ7h2o/-7,Š+÷+£*½)Š(^'o&Í&F%z$™#½#!ô"J"ä&¼+v2à9ùBIüR/Zîb}i¨mØqr5r=qEq™qŸp®oxnùn¼n%mm dÀdŠeeØg0hwiçl-l¢lhd]pV|NmF÷?W6È/©)D&S$$v$¿%%Û&&¡'>'¯( (¡(Ù((,()(Ú(ˆ(¨));)´*4+†,/k3D8û>(DVJíQëXá^çdÒhÂlmÐp qq\qq`q‡qbpÂp6oWn3mClñl¨llj½h~dR`,Z³U,OIBÌ<6,0”-/*E)]((m'³&Ú&%t%4$æ$/#J"Œ"!!=!Ž$á)0$7?RG;OzX?`gylpBq-qSpCpp†oŠnSmÌm©mDml½dvd*d´ewfèhQiÙl-l„k´g~cG\’U M—F>M5µ.¾(›%÷#ë$g$Ë%Á&"&}''¿(K(¼)[))<(ã)R)¦)4(”(y(¢(r( (Î*%+H.Ë3R9Ñ?§FXM{TÄ[ñaægÓkznso„qqwq{q,q–qÒq|pÎpzponænµn?mÎkûiÈeÅaÁ\@VPI¶C;í5™/…+›($&Ô%´%r$º$(#•#_#‰#‰"ø"!u! 3 Z b#!&¯-W40<ˆDmLµU{]pe?jXop3ptoFo‚ohn]m$l•llZlbl\cwcLdef¤h?iÑl0lLkfmaê[ T#L Dv<µ4-Z'‡%7#`#é$S%F%®&&Ä'(M(ò)®*)ê)¿*=*~* )L)(Ù(Z(@()g*Æ.Ø3Õ:ÊAHO²W0^pd/iömAoÉpLq5qJq/qq_q¯qq&q'q4qpÖpÌp.o~m|kQg‰c®^dYR³LqEµ> 81Ë-[)J'?%e$”#Z"›!ì!Ú"'"U!ã! ™ J¶æÑ"$%%+`2:‡BeJ£SP[Kc:h m©o#o‚nBnrnLm=lk–k½kÈllcb[b`cWd—fmh3i¿lkîjUeE`yY”R‚J‡BÞ;02¨,&†$€"à#s#Ù$°%%a%ý&Ü'¾(˜)x)ô***©*ä*Š)Ê)`(û(B'ü'š(ù*“/40;YAæISQZY'`™f:kânÇpÈpËq\q\qCq!qAqqÅr rsr±r¼r€r–r q\o[mGi¡eÔ`¦[ƒUjOTH–A‚:¶4/*]'¼%O$"V!^ ‘ • è!- Ð ,Ф6b9!B#Þ)Ç0b8Þ@´HæQ{Yna\fël:mônkmmHmljþj–j÷kJkôl„_’`a~cQe gÎixkëk‡i‰d^éWìP¾HÍA29©18*Î%#È"S"Ý#*#Ö$$c$û& ':(ƒ)¼*›+?+¥,r,Â,›+Ù+@*‹)“)-(ª*$, 0¸5Ê<ÂCZJðSZíbbgÌm%oŸq?qqcq`qQq7qqkrrÐsƒsÝtsät!sÒsaq¥oÑldh¼cÑ_Y…SóMF©?¬8¯3 -Þ*—'…%‰#!q ;  2 i ˜_ZWF!8#)B/¸8$?ëHPtX;_ùe‡klúmlElrlLkAjJjjžk-llà\p]A_:a¡d~g2ikÊk7hÖbÒ]sVcO G9?¨88/Õ)’$œ#!¼"0"`"í##|$%g&ó(Ã*k+À,ö-Ö//y/{.—-¿,£+L*®)þ+œ-â2Þ7Ü>¥EWMUC\ùdQizn~p¡rqqq:q qq qsrrùsÈtzu)uŒvuãu±tFrÐo¹lJg›c<^ XæR©KýD¾=_71R-c)¦&é#€!An[–Kúã v!i#’(æ/.7?/G-OmW ^Ÿd5iäl#lÓkkÃk¨j¨iÊi¥jlk*l@m:W–Y[Ç_ bºf3hk­k hcaé\KU*M×E÷>`6ý.¬(›#î"¤!e!Í!ç"p"£#T$,%î(*,´.•0r1×3‚442Þ1›0.T-Ž,®.f16R;XAûH¾P[X7_mfkk2o¨qirÉr^rqkq qqqˆqûr¼stru‰v[wvüwvtòrIoJk&g\bÊ^OXŠRHKC’<É6—1ñ-~)ã%}"m /¹JfàÎ>à !ß#Ï(Ñ.à7>µF¦N¹V0]¦cTi=kÅlŸkek¥kƒjziœiˆjjk5l[mrRÎTöX‘\Áa;enh+k²kha [(SôL“D·=5·-}'®#Y"\!J!³!Á"M"™#™$À')¯,Ã/v1Ì4<6848Ó8Î7*5p3g1k0ƒ/\13í9š>ÈEdL7S¥[%aßh™mpÏr sLs rÇrq‘q\q=qr rÝs´t¶uÒv¤wEwTw£vûvsÐqPmìjêg/c^gX³Q‹J(Bð<<6Á1…- '¸#å! 2YQóÜÄl 0 x" #¥(K."6N=ñEçMØU5\¡b}h³klŸkrk¾k”j€i¤i¡j¢klÀmþLÒOãT‚YÇ_1d:gskyjÞgÓ`–Z†S6KÉCí<(4Ë,®' "ÿ"5!Y!è""¯#,$™&>) ,b/ý3,5ê8Ö:ý=V=×= ;Š9K6ä4Ë3÷2´4k7l=gBñI¿P¯WÊ^ÆdÊknørrßsâsµs„rÛrBqËqTqwqârÏs¦t…uauþv‹v¾w6vÏvtr#o™mej~g­c2^+WnPƒIJBlµEKcR½Z`f±k4prÒuucuºutNs\r¨rqp©pþqýrŸsHsút¸uv3vívÒvDtôsèr‹q\ojmiôeú`AZySÓMOF«@"9¼2¨-(±&^#•"/!% þ w _ n è Ï!ö#9',Ç4§0>=p?ÂCItOæW?^pd‰j%môqít uÚvvBu‰tµs§rçrCq=pÑqqÔrQrùsÌt«ujuývÏwvÑuÞusÞrÛq2o¢lžiCd%^èXˆRIKˆDÇ=æ6j0j+(º%M#g"!Ï ù ” c ¾ ‰!¸#'z,¬4p6G.Š))$"’!ø#Š$%¤'?*¡.3Ó91>ªCÓHFM6PCRèRQPÒMZIúG…EËF@FiI&LeR3X_WeÁj“nÜqVtuUvavGvAu´uAt†s´rÏqÌqWqDqÜrFstuuévŸw§xx w9v•u|tfrÓqio"lÍie_rYÅRëKãD¡=R7/1¦-™(ú&$#j!â ê E } !q#O(:- 5`=KEMT\ b+g€ifk i¾hte(a,]|ZûZX¶X÷YŸ'.ð8˜BöM9W!^ReÆhiZd»_TWOüH=?â7ç0$*š%#-"$J$ñ&­(w,0R5é;d@ÙF JŠO‹R¶UU S2O_KþIÕHSI IŠLgOU[;aÕgølPoÿqêt=uVv4v u×uWu2tÑts.r2q¶qrrƒsEttìuãv½w°wîw¿væv`uotWr¿qUoHmKj f¯a‡\UNFá@ :4H/‘*y':$ó$"d!U † © *!´#á)*.Î6¨>£FöN°UÓ]æcÂh‹i¿k"i]g-bº]äYNU¢S¥QFPúQ!˜)ï4>ÛIŸT1\0dBgiiífMaTXôRJ;A¸9‡1Ã,&#Æ#%%Ê'¼)¹-¥2C8=•BÞHL‡QwTžW®W#TðPËMgKŠJNKQLO R Wb]ccÔiámìqrVsþtÂuuunuutütžsøsFrÎr~r±rþs•ttŸunv v¯v¶všvuÔu särFqoVmÀkhQcŽ^WPI,BÖ=6è1y+è(X%Ã$Â# !ó è Ù >!ù$‚*908@"H‹P~WÂ_ïeiÃjLkmi%eù`GZ‹U P1MIÃHâHn9%±0:ËEÀP¾Yybfi÷g’cb[0TyLŸD ;­3ß-ÿ'•$Å#™%&Z(‰*™.–3l9Y>»CÈHàM?QéTËW½W!TÃPwLòKIàKKîNöRWS]:c‘im­pâqýsEs·txt³tœtXtzt¢tŸtYts›s2s!sUs¾sãtt‰téutðutåtÇtròqxpio m¿kHhÝd:^³W›PÚJKD@>s7õ2,c(Ñ&% #w"y!;! "³%¦+Ä1ý:B7J¤RÔZ+b@gTk jÚkwh]d]VYOìIØE’AB?¯>nï!‚,6½AÕM6V§_Àd«iãhÁea]aVçNüF[=×5þ/å)%¾$ %Á&¾)=+Q/K4J:`?ÇDÉIöNHR»UHWüW1T«P1LbJJH÷J+K,N`QºW \ïc#impœqöss3s¥s½s¥s‘sÚt+tHtsãsŽs#ssLs®s«s”s¿sðsísët 8À6p4Q£ù(|2Ø=ÛIZSS\Òb™ii.fî_…YgQvI@„8Ž2 +'N$Ò%í&Ï)y+n/44:?oD|I¨MÙRTaV´U¶SSNùJöHrF´G´H°L"OºU6[a4fæko2q.r±r´rórÄr”r’rðsXs|sQsrÝr’r—rüsasWsss+s/sGs¤s©sBreq¿pïp8on k¯i2dZ^–WQ[K+Dâ>r7s1u+÷(Â&$ë#ˆ"¼!J!@!$³(c/5à>BFiN²W4^{fjl©kjFeV^ËUŽM2E<Ì6[0B-W*d€%/:E²P0Z`¶hMiÀhša¾[íSñKÀCC;4B-(ë%¦&&Þ)°+Ž/"3´9Œ>øDI#M+Q`S†U‰TkRRNDJ6GSEEÙFïJ±NnSéY¾_»eJimáp7rr"r\rq¤q–r rµsssrÒr§r±ssDsr¹r•rŒrvrsrŸr’r3qq/p›o÷nÍnkÅhúcÊ^W1Q)JëD@=v6n0²+p(l%Â$ #6"z!!c"%à)ó0á83@ÎHèPõY`²gÜjûmj‹hÑbÇ[0QH$?e6. '¶$? Ù½S!–+N6$AªLsV­^fkhýi7cm^(VJNœFW>6Ü/¬+?'=&Ë&î)r+ .2’7ð=1B4FïJªN¿PæR·Q£OçLHH}EvBÚC+D.HKÍQ>Vø\ëb€fük„nBp—q)q»qfpòp²qq»r(rMrNr3r0rWr±rårÄrorKr-qýqÍq¶q‹qDpÜp”poŠnsmÕkih%b–\õV^PAI´B®;Á4Ô/u*}'´%3$"­"!!Ô#'R+ê3<:ôC¡K¤S_[íb¥ik l[ieù^ÂV`KôB¥9/¯'¦ T  ëüú'V2=H”S&[BdGgæi•dþ`JX‡Q_I`A 92n-») '¤&÷)*™-ë1€6R;Y@/DzGÒK¹MæO¡N MIÆF]Ci@†@dA1EHßN^SóYÏ_nd1Ù5û:-=Ó@ChDöFEäDwAZ>L;8Õ8I83;5>‘DIJP§Vê\’bGf‚j}l‹nonÇnýn›nƒntnnnpnLnkn¾oop7m0n+b'(%;#)"g!W!†!€#²& +±2T:üC KSZ@b:fòjzihb*[/PÎFØñ?úAM@Á?ƒ< 9“6Î4M3Ë3t5õ8Ø>VDJìQrW}]„b/f¯iSk¹lm[mxmÑmýn&n6n)nUnÀorp$pªqqqp»pUoæo‘oioRoKoNo nýmÍluie6_WYqR@JîCf< 5y.‘)Í%û$l"v!Ñ!!¸!ê$t't-À4ð=«E…M(UI\8cnfëi|gdî]úUáK@ù6Ã,{#m; ªEè·&P )4K?žJT[b§dðe`ß\ªUûO|H@19K33/*b(W'7(Ù*Q-/á2ø6+8:†;1<;—:Ò8{5Š2œ0/‰/C1Œ3é8½=åDŸK[RX°^c6·1ï,°)Ç'f'Ó(*æ,ë/[1ÿ45Ó6\6Ø6J5ú4i2/T,ï,T,=.h0k4o8›>‚D¬KsRWü]¼aÍe—g•iij*DGJ”PäW\`¯c§f{h?j>k˜lßm™n2n¹o‰pnqJqßrmrsrRqÃq8pŸpRŠX¤^ábdîcOa˜ZßRõH=å3¶)Æ Ú“ 9Â=ûAŸv4ˆˆ(3>:HkR-Y`uc*daM^_XµSKäDM=6¯1È,„)%¯$Ü$Û&2&Ð'e(((•(¾(t(?'Ü'‡'&?%¿%(&'*”-j0Ü3Þ7ÜY^˜cÓdEcÃ_u[ÉUòO¾HvA:¤50Á+z'·$­#å#a#Þ#ï$$6$W$‡$~$L#Û#m#"T"e"Õ$†&V(ï+'.71r6:ó@¦FCK…P^T½Yo]µaóe>hmjnl3m@n§oŒp]p]poomn kójFh(eâbæ_é\@X–TNPK4Eú@;a6±2.)Ê&ð$1#Ï#ö&/(+W.‡3“9L@+FªMS¾Y]á_éaË`†_çZÒTIš?‰5+W"‚Ò V²ô^ôߺ½‡iq 4 ¹ ï+6rAdJÜT Zua?c¹eb_OZU.NÂG@·:ù6]1,Ö(“&P$Ë$Å$Z$7#Û#Ì$"$o$d#Þ#6"–""%"\#\$J& 'Ã*“-k1¥6;¯AaGL[QAVz[F` c¾gPimk4lm]nnŠnm´lDjˆh)fBcÆ`÷]WY¿U±Q«MgI;DÆ@;Y6ó3/7,(v&‹%%é&ð)Å,:0Z4ç:Ý@ÕGM.RºXÎ\¿_Í_×`U]Ç[VT°L†AË7ü.o$é— ¤ÔÈÂëˤ‚GÇ Ù]$®/Ý;)E“O5V‹^¤cf¥eWcH^VZ~UNÆGÉAZ;Ç6b1ó-$)Ì&ÿ%Ö$·$:#E"Ë"Á##^#@"Ä"!~!`!u""r#w$ƒ&¶(ö,·0 5ý;ŸAËGŽM7S)X¡^b%f7hƒj_jñkül%lk j(hZfQc™a6^)ZÂV¾RïNáJ¶FxBZ>M:6,2Z/+ª)8&¸&%â'º)T,Ñ05ÿ;âB_HMMôTY6^Y`‰aÂ_þ_B[`VÃNBDÕ:0w'¡I† d ù¥ð ýÜ”–ÿè“ç Ëþ)4•?†IQ­ZD_úe®fšeõaÃ^¹Z,U\OIHÛB¦=8¤3ú0S,­*X(c'F%±$°#ù#ô$$"#Ï#@"­"‚"©#@#$D$é&™(m+È/94<9?¹E‘K…Q¸Wp]aJeŒgÛi©iêj¤jBi™gçffda­^“[ XT8P#LeH»DßA=t:6™3u0M-¹*ø)s((¨)a+à.2-7=hC±IÉOPT?Z#^Ea±a¶aR^$[êVtO·Eó<,2-(ó Ë L GÞhÎ(ÕÈâj„Û’‡åñ 2X„#X.9_D MUà\d g}hðeÔc^˜[VaPÎJiD6>é:&6Œ2ª/«,Ô*Ü(Í'}&G%®%$¾$_$%#Ð#Í#ú$y$È%g%ä'Q(ç+ý/&3ç8û>õDJyP˜VU[ý`PdžfÙhƒhŠi%h…gŽeOc*`-](Y”VR8NIÖEòBy>å;¿8¹63B0Þ.},ë+R*õ*©+ô->0^3Š8³>{E K PŒV&Zâ`GbïdZbM`½\vXlPùH,={3š*p!jÇÑ K¡f¿ ¸Öø$ÙZl¼›IïëgÊ'¡2•=~G>PW%_d­h„gweaq^Ù[eWgQïKÎEýA6=Ç:.7-3è1W/-‘,++')Ñ(ç(=(+((F(Š)!)©*Š+E,Å.b1B448‡=,BˆGƒL¦RWA\u`€dyfxgègÔhcgºf¶d9a±^;ZÎVýSVOiK5GC?Í<œ:/7×5ö3Ì210·07/É0^0Ê2q47‡;o@ïFŸLgQ’V-[t_ac4c¼cJ_Â]*WÆQ®H™>é4£+R#€• åÓMÆÄ±  Àl`–™ %µã!6+„6ŠA.JœRIZÈ`ñghµh²eMbÓ_…\ÎXÉS›MÍHœD@é>:Ï85u3Æ2r1†0.Ú-½-X--Š-ô.¾/p0s1e2ï479‡=GApFBJ¦O&SèX‘]OadºfˆgËg•gög#eüc\`¤]YƒU±R N(IøEÕAÀ>†;9š7œ6O4Ï4%3°4/4›5Ö6á9;Š?‚CÂHëMîRöX \raGc³eKcaß]Y±R¢J/?”5€,#3¢t gxëö£b™%+訔cgŽÖ »9 }ƒ$¯.Õ9ˆC…KêTZbaehgùfŽdÊa¤_Þ]BY¾UP-KÐH/E|B}?ú=R;’:[9ª8‰7_65Z4í5\5Ï6Á78À:;¼=g?¦AÒDêHwLƒP"SÉW«[†_|b²eÖgjh‹hWhœg¼f–dao]ûZ¢WS’OåKîH D%A0>“=;t:¯9à9ù:9;4;ú=k>ÊARDå=Ø=4<¶<ï=4>>î@]AñCùEèHJL OŠR¹UŠX\[g^ya da\ÔYWRàJý@‹6,[#ðøý•ª{Ø °B~ÕþË…“²u38tcÔå? ÿp¬Ä(Á2ã=F'M(SÂXò_^cjf8e»e caÅ_þ^[8WÛTKQ NµLhJÊIGöFñFlEÚE™EAEVEtF9GH•JILtN‰P­R­TÈWYn[w]t_§aêd8f1h,iRj;jGj¦iöif«d `µ]kYïV„S0O¸LÂIÎH F”F_F!F°GIH8HáIâJýLÌN¿QISÌVY4\_œbGd¼dLbÚ^ò[üWR-J#@˜5ê,W$cé§` ªãvKoÚíÉ—zœ‡J&<šU’€ ÿž` é)Ÿ3“=‰EÙL¨QëXx^c„f grf:eKcÆc a£_“\…YUVfSíRMPžONvM÷M’M¡M“MÖNNÅO¡Q7RíU WY[\í^Ü`‚aíc,d–fg›ijvkcl#l>l©l k%hÀfb“_@[êX§U³R¡PHMóLöLXLêMiN[O5PPÈQ½RäT VSX•[]®`XbtdÏeZedbä`6[ WÚQJ)@95Ñ,#¤ëø ¨Åd/¹:Q§üÜ‘{ˆ¤oŽw0 +“xD,l “{o¦!>)Â3u< D IšO{U[Õ`ÝdÅedeSd c÷c©ca[^õ\4Y÷X}W&V_U]TçT¥TóU6UÀV%VéWÍY2Z¦\`^_Âaxbòdgecf&f¬gTh$i j kkòlªlùm’m6ljegëd¦a–^°[ëYžW2UˆSâS{SzTbU'UúV”WWXTYOZ·[ô]¦_ÊaÞcèd“dÿcMaI]ˆZNUMPBHj?A5+‰#¼³ú= ò.ñI”`œÐç²yµ®@“OVy * ì ÍSÜÌ ¥)2T:¼A‘G”L÷S–Y¹_Òc2eSeeDdûe9dçdba_Œ^K]Ž\Ä\š\›]]‘^9^Ç_—`a¹bódNe­fòhAi#iëjji¿i”i³iêj…k3l l×mznQnLnlRjJgdÜby`F^«\û\[ [[l\_]%]Á^$^g^¨_B` aJb‹cëe°fofždõc7`]WY#UN}Fû=_3w*O"_-› :ЧmÅ}”àçѶߴ)l›€B &pþ “! &4*n´'»0-7ý>CÄIYNþU¬[_e`éaËa}bbŸcFcecbjaÔa~aKa‰aÕb`bÒceddÃeflgBhhéiŒj8jPjAih‡guff:eüfhfàgÕhÛiøk3kÄlk@jh8fddÂc`b…a a-`´`º`òa_a©aÅaÁa³aªaðb]c ddµeydŽbÈ_f\aXÏUöQuLJD=;1Y(˜!¯e'Ò ©úÑgh±7ÎÀÜüÎ—Š©âóµ-`¸”<€%𮑠ËB°9¦% -4:Ì@`E‚K”QiW[[*]ë^†_@_¶`»bcKdJee~eöf^fÚgWg¿h:h×i‚j&jœkk0kykqkxj¿iÊheùdb]a`ùaBabŠc¾ecghui™i¶ih­gÉfÿf‚f_f2feïeÅeªe}e?dãdyd(cìcïdd-dIcyb`].YxV}R¹O HùAÐ8Ÿ/3&À¬NwK s‡°0®ÇAáàè¢|™Øò³J^‹ÆÆzÿÛÿÿEÛíôŠ¡ À Â3ür"{)ô17;È@›EoK:P9T—V¯X XeYAZÒ\ò_Zaobæd:dòe°ff`fŸggmg¿g¾g¦g?fòfNeÂdobÒ`b]¨[9Y-XTWšWñX(YMZ¤\Ÿ^®`‡b.cc©c¨c—c…c¾d$dˆd¸dÖd‰d%crbÈba:`…_ï_e^ú^][)YVSMPMIDÆ=‡5s,×$ð¼\Ô o1ê-¼kæH ­u³íöÕ±__t¦¹ Nÿâÿ³ÿÛCCªÙO 1 ª&6,å2c7 ;,?ßD–I¤MuP…QêSTU÷XŸ[j^`aøc2cyc¸c–c¬c—c}c b‡a§`Õ_¬^¥\ëZäX#URvP>O_N¦OOkP¶R4TSVyXqZ/[Q\g\þ]t]Ú^y_H`.`ßaƒaza7`\_ ^™]\Q[-Y´X VTQÉO´MVK%GØDl>ñ8Æ17)¯"Ä{{ˆ0 PwÏj·R7jXë}d–Æå×·°ea^m}™|ÿ½ÿ¤ÿã~w*?®G Á ´Êig"ê(ð.1š4ô8O<žAEIH IÖJ³LN P¥S¥V‘XZ"ZzZÍZ‚ZdYõY‰X»WÞV¥UrSûR¬PÐN©KôIF‘D{C¸CC DEhFãHÜJÖL›N!Ob 4.‡^Òr˜<úï$uŠBʃwˆ£Œu~ŸÈOYVQKUQ? ÿ¾ÿÿ˜ÿÍÿåÿÐI&)E m ’}XÈ"Š% ')S,u0E47I9ç;=?>À@¢BGC´D‚EREEÞEuDîC”B@->h<‚:Ä8“630-É+Ì+ *T*¤*ê,-&.×0•2b3õ5w78º:2;Å=ƒ?xA£CeEErE]CõBµ@³>–<.9Õ7Ç5Ñ4l3ƒ2I0Í-©)Ü$ç ªÇqê m }Z£ˆÏâ‹?ÜÉhAáŒxŒ~YMp§ÌAJJSVVE8ÿÖÿ£ÿŽÿžÿ´ÿÁÿ‰ÿ–ÿÁÆ  Í : 7¤t2,v[!›$~'À+8.ˆ1.3¡5D77ý8Ì99N9P9y9%8µ76 4J2›0Õ/=-C*ö(K%|#B!^ œä  Q!E"D#Í%a'(©*D,-Í/y15357 8…9÷:9¦86ƒ4ˆ2‰0›.Ù-_+ø*‰)B'*$«!EDYK ƒ f®ül>" +÷ÏÔ QmIô¶“‰‰kO<N{¨À4>DX`Z?( ÿêÿËÿ¥ÿ›ÿ¦ÿÈÿÛÿóÿà1·õYƒ: þ } b}DÆ"ï&<)`+ˆ-r..k.-Â-\-,,Ç,Q+Q*!(”'&%«$W"À ïÉqˆòPµá¿Ðƒ× U!õ#±%R&ò(­*I+ø- .-ó-c+×*k(Ñ'O&$ð#Õ"¯ é÷=G.fú§ [ ÊC™ÑD-úÈž¹gt7÷»¾ q=*8dˆ˜›/IRSF@5.ÿóÿÈÿžÿ‘ÿ›ÿºÿÕÿÙÿ²ÿ¦ÿ²0Ó˦«ˆé‘ × 9’¦^ܧߡ "E#6#Þ#€#:""!: _ Ä<Ñs(Ã>’¹M/Ïj‚†úˆm>FB•É`öš$É å!ö!î!ƒ E7ðɵ? Jø¹ Ò 1 ®ãþoül#h€™”›¾úId>ñÉ¿ÆÀ‘T2axwt"GUE($).ÿöÿÆÿ¡ÿšÿŸÿ¸ÿÍÿÚÿ×ÿÒÿÎÿï ìŒ/¡¨; € x ÜÙñzt¡¾$‹³LÖ};÷ ¸ i - ÚöN*øú/~  d ü ˜ £ Ü_Ã1£ªÙñík€¤a8E _   mwÊÿmÐtØ}¦µº‚_uÄLX(íÂÌäß·I&(:U_YSÿÿ#?;#ÿãÿ¸ÿÿ˜ÿ±ÿÒÿâÿÑÿ³ÿ©ÿ¬ÿ¡ÿ³ÿ×fª­ölœÏ0+û Ë á ' ƒ…Kz®eåU R 7 î Ǩ€gG\tòƒjogu¾ÍqF8€·  S ž úà | ‚ } £(·Ä Å{$«ðHÿÜÿó\{tLF‚à)<.ýØÎéÿ춃Y;9<JVUGÿåÿü,) ÿÛÿ±ÿžÿ¯ÿÒÿëÿØÿ¾ÿÇÿãÿûÿìÿé[‹£†¸3?tžùc¯'“åZ‘Þñó€ê=c§ÇFúÝÁÄÇÒÕ×Äå#ÀcJ7==.<è q Q g¾¿ªJ‚òõ#I" †2<c™£‰kWKpºõåäñí¼—|eZMIRR=ÿçÿê(1"ÿñÿÿ ÿûÿÕÿ¬ÿ¡ÿ¼ÿäÿñÿæÿÑÿÅÿØÿèÿÙÿÀÿ²ÿ¹ÿÖÿçÿËÿ°ÿœÿåm°ô ýHk‹¬Íõ2)ÃsЦiLBÿçÿÄÿ½ÿÆÿÏÿÂÿ£ÿsÿkÿ‡ÿá* ,¿; `f@Ô^Â!–ÿàÿÖ HY)ÿØÿ—ÿ™ÿÍ#bwqWN[g‘× ïãÞæøüìȧ‘‰…rYK8ÿþÿòÿö99ÿûÿùÿôÿËÿ°ÿµÿ× ÿèÿÁÿÈÿê ÿôÿãÿû*\iG3o®ÈÒñ/<E:& 7LI'áËÖüöÀ™Š˜uJ6Dn€ŸÚ äÔ¸„\Nby’¬t.ÿâÿÆÿÕqŸ—d@9HrŒ¯å þðáÙÞãàϵŸ ž‡`;ÿýÿýÿùÿû )<;# ÿùÿùÿþÿøÿèÿÍÿÈÿé ÿìÿÛÿØÿãÿ÷ ÿèÿÅÿ³ÿ¹ÿÃÿ´ÿ¡ÿ“ÿžÿ¯ÿÞMn`;!990&-<f¨ÕÞÁ¬˜…~kF+/9&ÿñÿÀÿ¤ÿÿbÿHÿFÿXÿOÿaÿ•ÿÛ-B.ÿßÿÏÿé @rƒwWGHH`~°ïùîëïðèÛÔÏÆ¼»©‚N"ÿù ÿúÿý &B@ÿõÿèÿö ÿõÿÓÿÖÿôÿãÿÎÿàGO0 ÿû 1B?<)ÿúÿáÿèÿõ7™hzVÕ´ˆfHC?XªÁ¿¾¬”~ysXBGO@/34" ÿâÿÉÿÎÿèÿëÿü)NQ9* Kyˆyma]ahl[]y±ðøëéöüìÒÅ¿¾µª‰Z, ÿÿÿøÿýÿÿ )ÿÿÿìÿì ÿýÿêÿçÿúÿïÿÝÿü3^cH! $#ÿþ9ˆò9J  嵉g]Uf„¢°­®¡‹tneC''3+#+/'ÿüÿÊÿªÿ³ÿ×ÿÞÿî6/'$0Uw{q{‚~thhk…«Ôó÷ëÛÌø§sS, -ÿúÿûÿûÿôÿø ÿüÿîÿèÿö& ÿíÿãÿù$=!ÿýÿóR‚‰`20?M_cZH+;{Ö2I5æ½¥’–¦´¬™”Ž‚rkZ4+3>R^_OD(ÿøÿÚÿäÿþÿý'+KNGOZ[i‘­¥†kl†µÝô÷ù/'ع¯°¬—tL0  2ÿýÿúÿüÿõÿðÿóÿþ ÿôÿó1%ÿíÿñ2;1#%AbujK+%..-*1@Yw„si}¯á 48-Þ¼¢ ¬µ¥Š‰pfX=--?KWebQ4 ÿðÿæÿø .,KKJb€“œ­­—ƒ—®Ëåø04Û¨Š„†y[3  /ÿÿÿþÿü %* ÿþÿü7UZI;6CRPINMB.6p¨ÃÀº·Ãà# æÀ¥¡­·¨“Ž…ynf[WY`ijkX4ÿýÿúÿñÿö&7,-B@My©ÆÂ³™‚…¡ÂÅÃÏé 'Ó—m[QK9"    0)ÿþÿøÿÿ ÿù#&$""JddWC>A@?CD@;88/8U€£·½¾Èß)ó̲­³¹ª˜“”ˆ|yxupng^I(  %,EOaˆ¨³¨š’•©Æ×ɼÏòþ¾‡[<+ ..%ÿú!ÿþÿù%& "/3"(H`hWD2*-,28CU_WLFWsš¹Ñåö&öÕÀ½¾¿µ¦šš™”ŽŠ„~umcXJ8,-.% /H`vŽ–ƒ•­ÀÉÁ¬¦½Ýõã²pG4"ÿöÿæÿï #΂º ò î0îw£\'„ºžì8)õÍÏC].™÷-¨D¸†ïŠ˜ ò"„#—#t#{"†!NƒüIx›ñ1/) ¬ ™ S  õ õ î   V Ø  û Ò “ Y ` ™  U œ Ô`ØI Ö …ï1¼Â_ÌD rß^ÖØ—O,ð|×—y™õ?¡ ô   ÍÁ‰„HýµƒZT“kÚ¥*–<6¨,žVÀ/yž  ô · s…x”Š©S’´ ‡!;!4!- A UæUŸàV¾ð ¤ G ú     3 W † ½ Ö â ¯ Z  À Ê ÿ J f k t °  > ø Ñe;IX›£P”9qSþžYóQ¢º½ÐzìðÃåÜžž»ÎãØ n2 æOOä8C9 ؆ù™Ê¦2ÂÞ=DPÅ{µ ­!Å"i!ø!ž ±”˜ÛHy÷~×6[À&Kšg õ r ‘ ö ú í  - L d ‚ ° Ò ê Ø À } " Ö ¤ ¶ å  . # ! %  @ G  ø%¯S˜@B0>eé|_ÿø€åó"QhKk¦ö ΀g¤ä­b»Ñ …@‚±a©æ ˜†Ï¨ì)Ы›„׿ L vænvA;¬ã\ðÿ5%{µšbÈ B Í  H !  l £ Ü / N i ” ¥ ¢ x O  Ö ¯ š ´ Û     õ à ¸ • 5  ¤_X ñÍœÒrG^–.¨}y÷¾N—î €oü£‚ôðz!ÿ ¼åžõšjæ`?ì!Mœã È ÆŽ­½± íÄ8ÚHIP©â]šËVS8‡ßµ³Þ¿éŽo^X e e … ª e Üú l « ç " H d m … † z O # ì ­ ‡ u † š ¯ Á ¸ £ y E /þ h û ‹ F»€Ì養„[H : ¡  }E˹É~†-çY:XYM8n.ƒ0܈xÂæ`gP¼IJ&n¦±£·‹øîm{˜ZÃrfjWÚø»µŽ†Ñ¹•üsZV]] ê   m ý Š ; ç ¦ d /õÑ´¶ºØú ' V v ‡ ˆ “ • ˜ ˆ p J    % H h † € c 3 ÿÖ  1 # ? /x¡¤,%¯Wz f ì ò " o ; ± j1BÍà¡ôSïâ#HA~2Œœ_Oµøa•Kþ°f}-dôú;GV¡ ¨*S†úÿ«| î ± # w  Ä   ‚ t r 9 ¼ 1Ý¿¦“p7ú¹‚Sùå÷4Ri{Œ¥½ÕßàÜÏî/˜ J ˆ ~ V êУ›ˆô } ¿ N ù™7Yo¶ ‚  Ó   O è 6 ¯ - )Uá€ÚÝ…]°3äW©|. ]/·JÅEvqЉ5÷ø®›"9¬ úâdÓŽia üPCYP f É ÿ o Y פ‰lkƒvF%ò¦ ™®^úÀ °½ÓÙãóBp–°ÃÜí6¡?äaÈηpBëÚÁùBü à á è X _ ß œ 6 ¢ . ç  : ” Á  J Ü p j ßÜA܃1ò˜0€ÀÉwezÃC_ *i‡¦ p [ ÿ1&‚ÙXç1׎V]§ ³ ¶ ° ™ ¶û„™ómñ! H/Ö2–´‡K77ILF739Yƒ±Óéü'jÅ` ¯@w’`,ò¿¿Ç~³ D Û   » µ ° ‡ c K l ¬  6 k ° K Í wGäT¼IÇ™l"ÍAÀ…é‹{¬ÐµZÛ¨S º ø þ Ê 4 Šò°—¦+”’ „ y ™ å  x ßϽ˜~˜‘Òap„ª«‘wZ?4L7ã[ã‘UPLb{†{`KC?QmŒž¨¶ÈÑô—)‚ƳƒD9fë„<íiÙåÀuŠŽ¡³ë ?   â $ ‚ Û  F Ž ø v æ & ` ´8Áp!Ú™2©( c é ù Ð ¦ ‰ § ‚ ö - f 1 a % ï v ® ]  ‡ k ¹ bßHðËɶi[¶ JçÉhXÌt3Ë–sfSS_lnZ9   .FRb}µÐàhÞU­ùûØ¡…œ­ …@·<M*ùX½6˜â * ^ „ ¸  j • Š c h ¶ 8   ë  D s É $ ¾€@² × H   : , % F c † > š Î 5 ú A ” Ç Ô ÏoÓ•L î H}Üa/æëpÒ Â|¢N*Ttw_U<éÀ«£¬®¶ÀÎÕé 7c‚ŒœÂú1Y~iOObXx©5ó´OqN[ÅQ ¸4°Ëô M ¦ è é ¶ ™ ½ 8 Î E y f [ W Q ’ ¡ í . È   † œ © Ñ  4 5 Í 1Ž+ áÑǨ€•˜Mì´©£z ÍOªÀ¬  ‚bQOWSBÑŠ@&/dˆ®ä÷ì¹`0ÿüÿ÷ÿìÿåÿàÿßÿÜÿÞÿÖÿå?‡Ââê  '_›¼Á±¿ø\à %+3„òÆÅ¸sÆe»  Q Q )þ  ‘  _ b o ] 6 & < y ˜ [ #÷ÍØ H  f #“üyó¾šY*ÊNÅTþ”`lr7½?Ólf ÿ6&ù£U#ÿ %Ob}žà?•ÇÎäÔ²q0õ뢜aL?0$9m›³©¨†RϱÂþIŽš|9ö1I`gšÏzl‡v ~·WÇ0›µuF„ x    é « r X Z¨ˆaBQ‹¾ÖŽ&|ÚDÁcǦr“§‰ov—xÿeûåç#p‡]ëz.ÿù'i¯l™$‡ïöîÕ±t2ð´udG+ëÔǺŸ†sWì“#ŸÿÆÿ~ÿ„ÿ”ÿß3»»­u8ÿÖÿê ˆÉ-©X Ƀz u7¿µ‰ÃMé U † Y /ä•efíÓÆÍéçÏkþX­ûIË[=>OHè -KY'°dtéc¿øÍw½ÝòÕ-JZ -  ô      ø Õ ‘ F ï X 躖nQK(är „h¼S¾1ÓmI5f¬ð'¹<ÿ½ÿ˜ÿÀ4‡ÂÕûCÖˆCà@g´G•¬òe }ŸiK"õãù& ëÍ‘Rë„ì=„ÉZ"H`Eõ’cˆÂÀƒ/÷Î%Ëœ0z¨Êwí½ Ï F f V Dí©aïxÝLÍÒÝŸMÀ2Ÿ©8é£u` ˜ Å ÷   6XŒ·üT´ AWv’ ÿæ!v¶ÅeÿÎÿBþíÿ ÿ‰d~{–×yV^‰¶3…¼ŽcpzbF?bÈÊѺx0׎=ìyæSÉ’‡¾ôÑi„Ö ÚP¦@r¸ç½Züé  Š Ú(z¼Ø¡w\aoz†Z ü3åv¦Öôj¹MüØÆpéîñ½\/ ü  N ¹ Š3—ã~DÅ{˜«{=ÿdÿÿÿ½E™£x?~I<ºæ]Ñ;j‹Ï2£þ>MRZ‚*4DÌ‚1çŸZ¯`%PcMäý2H>ì ŠâV¸ C µ ; Û±¬\¤Êù#K‚Á !}"á$I%}&¨'t(6(–))) ('Ê&­%š$ƒ#q"ž!Ï!l!-!5!J! Ççû­kïpÒ”L9 Ía ‡ ˆ`1wà%©©¦Ibÿiþµþ»ÿÿÀX=ÿþO ´#AHOngwÃ;¦ð2[y€’i)辊Q"øðó (:95+T²Nоj×  FD_µDá?ˆ*‘ Œ!¥"Ì#÷%d&é(¥*d,-Ï/A0«1­2¦373Æ3ÿ4K4/43]2€1B0.ê-Ç,ö,/+é+É+þ,>,F,'+~*Ê)¢(ˆ' %†#¡!‚µ( ima× GsuÍ;ýÀÞŽ*ÿZþôÿr2̲FZêˆÌÕñeŠ^+/„önÀãýÖØêʪ­¿ÊºfQi›ÌÏÇÉû@¹-¿õPÅ d _ý¡NQ¤é"$c&”'ù)4*E+™-7.Ù0°2š4z6K7É9=:H;G;ö<µ=4=¯=Ý>=ì=×=C<„;T: 8ê7Á6ð6(5å5Ã5ü6D6\6D5±54&3F2 0Ö/-6*ý(î&Å$"=íXÒï¦ • ’’ FTU Öÿšÿ2ÿ_ af#ÿÿ>ÍY™}:OiLågÿy©©ÿñÿíÿ÷ÿýHv€b<.SÙæ ˆX/A#c–  fÌÿ4*K²#\'2*-|/q1D2p3„4Á6\8b:^<`>c@A¹BÞCóD¡ECEÌF„G(G¼GÿH2HH"GÁG8F2ECæBÎB AVAAA5AwAtA1@y?È>ß> =<:§9*775\30‹-ž*—'•$à"A‘”|\  sl<ÒÝD&I²”R(\ûqNÕ •ž¢aLˆƒ»­ÿqÿpÿ‡ÿ”ÿ¬ÿÎÿî ÿçÿÇÿÅÿòh•D>Æ#Ꭰë tÆ3îeü"²&¥*À.£2y5s83:;Ð=>I?¢A]C_E@GHÁJLKÝM$NZOJP,Q R(S(T T}TÝT×TñTTRúQ×P¦ON×N.N NNRN”NYMÍL«K›JVIGÔF’E7CÚBP@ñ>þ<ç9Å6D2H.’+#'Ñ$Ä!Ò´M¦Ù‘ — — ímS˃ÿóW‰›1ÿñQÐê3ÿæÿñÿêÿú<žÙÕÿ“ÿ”ÿ¯ÿÌÿð!)%(T·ï’GË‹ç ô Yè§¥T!ü%Ÿ)œ-õ2]6¤:9=¨@/B¥DnFDG­HóJ6KÇMjNßP;Q›S T™VWˆXÉZ[6\¦]à^ô_|_ù_÷` _–_]ü\æ[ÍZÃZ$Y›Y¥YçZKZ¢ZSY´XaW&UŸTRƒPêOhMòL¤K˜J(H§EÏBi=ö9 5h1_. +(S%•"Z²«”4|d  l0– %:¯$9„–7ÿÌÿÂÿò:q„þøþîÿÿ1ÿpÿ¯ÿÛÿçÿòXºhÛþjÏ = Kžù]#ž'{+l/·4]9)=˜A»EH†K7MÜOÄQ§RôT"U)VlW¾XëZ2[“]'^×`faÂbÜcøefhg…hwhÝi=i%ih˜h g&f5eDdPcÎckc¯d.dÑe[eFdócîbúaŸ`E^©] [QY”WõV–US­Q3N?J EÏA4<ª8›4Ï1°.Ã+Ç($¢ Iãã…\O °`&eZXæ†ÿøÿÃX9ÿìÿÅÿÉÿëÿíÿÕÿô&Fÿÿ‚ÿžÿÃfÇ nܨyÀÝÏ  ;:Ön¶ K% )o-Œ15»:„?_CýGØKqNrQÃTŠW1XúZ¡[•\y]6^_3`=aŽcd¥fUg²hÌi‚jCjýkîl´mRm}mžmhm=l×lrkÖk%jki¤iHii„j(jõk kÖkêkskj&iHgûf¨dõc-aG_‰]Â\#YíWzTPL]HC·?{;Ø85“2Ç/h+‹&×"Kõ# m P3™‹Á€—ÿüÿÚ;6ÿÕÿäÿøÿî-L@lÆ©="ýI’† € WVz  %*!.õ3i7­<@ËE×J„NÅR&U…Xb[‚]õ`5a€b­cCcÚdse5f=gIh‡iÐklomin+n’oorpp¥qqqpÎp«p‚pdpo¨o!n“nfndnño¥prqq`qžqqlpúpƒon°m^l jjhÙfídþbˆ`\ôYûV‚RàNíKG9C’@2= 9š61f,f&¾!çßM X:Ä0Ø×0ÿ®ÿ³ÿì, ÿ×ÿ×ÿñÿù"6÷ 7MŽÂzaÛ -  ¾— ’ˆ!h%ú*ô0*5 9=îBBFàKkOüSÎWIYý\ã_Da¸cadÙe{ffsØtMtÇtîtât®t˜t«tâuut¿tht8t3tŠuuuu¿u©u|utÓtgsìs2rgq„p¯oðoJnšnlÚkLi-g!e.cYaë`Ç_ˆ^([×Y6U®RbNaJ†Eb?Ù8ô1Ž*€$Šk¬RÑ ÒÁŠ%Ñ\!@ÿÛÿÞ7KþE†0"&B‹Ä#;'+™/Ž3¬7ß<²BGFL P.T[X9\‡_èb¬d>f g-hlhçihÃh„h0hg·gf¤f^fžfÒg¢h…j k­m˜o‡q'rŽswtmuu²vv^v^v;uÿuâuõv.vNv8uÝumu'uu^u«uêv uéu»ubu&t³t)sUrwq|p‹o§nÀnm|lÊkÌjni g¶fhe„döducåbs`·]á[/WySÉNÖIßC[<4€-Í'Õ!Áæx$ …¢±Ó¬™ÿÿÿÛÿÅÿÄÿîDf$$Þ$ #õ#…#}$ˆ%~'¹*-Î1Í6D:.>vƒvvxv u•uFu2uLuRu7ut·t^sÝslr¼qõpæoÑn¦m‡l{kZj†iêiih”hgfæfsfMf=f-e}d¥bÊa^ZÂV?R LeF>î81x+4%kG_ /œ‰—¯" ÿàÿôKt./.¼.-Ž-Ž.§/’1Þ4†8x9¹9x8Õ8^8M9I:"b—c@dee·f^g6gçhhªh¬hg¾fqdåb_;[VÊQ,KgDè>£81•*¸#3y£D † Ü*óx ^#@[DADÜDœDCwC;DD½FñI§MePÈTwXY\_ b©eÈh^klÈn8n‰nònynl±khœf5cÒa»_Í]²[£YWÏV*UgT¡UUËW¦Yk[ò^za…d³gÝjìmdoËqfss¾t@t?t[tŠtæu\uÖvv+uôuÖuuutJsprpßomj¬hIeÚcqaD_]h[Ð[KZý[¶\|]¶^À_õaBb càe!f—gËh×iEi i|i–höh4fBdK`ú]™XÜT N!H"AŽ;Z4|,É%@hÒ,  Ó˜á¯HÀARdN€OLO$NªNM’NN‹PyRÊV Xü\7_³bëeºh j¶lÒnãoÁpGo½o‚npmRkhte@bL_Ž\úZ–XUS,Q[O£NæN(NŽOPªRTnVþZy^aåe•hæl5nÔq‚stEt‰tæuumuËv9vgvqvuåuEts_rp.nKk¼ie×bº_¤\†YÜW4UwS¾S\S*TUU±WªYd[\´^?_¸aRc=dþf„ggh0hƒi iih(g#dÃb:^qZáVPÜJ±Dô>d7D/¼(o!Õmù2 äî™gBú¿XÄYÅYÄYpX¹XX-XZ[å^„`òc f€ik7lýoKpÿrirzrTqp2nKl,híekaš^&[WÒTáQÙO=LœJÉIHZGŒGÁH I\JxLÎOiSPW[[ò`nd¨hÓl?oÂqøsÀtVuuJu¹vvˆv²v³vNvuTtrìq/n‹kæh‹eaR]ªZVaS,O÷MëKúK§KrLÜN‰QSqUºWÕY™[)\æ_$awc“efegIhni@jj#jh¬gd3aß^(YáT&N¸HNA½:_2Ò+W$,²áq … TúþYÆ`/aZaam`º`_Ù_ûabId0f"hPjylWmñoNq7r^srIq’oÄnkUhFdO`H\=X‰U&QNXK7H¹F5DwBÎAñ@ô@ß@ëAÿBÙE GuK~OÆUZ-_?d)hTl¢o˜r!sJt|u uÁv6vÍvÿwv–vYuotwrNoïljhãd°`q\WìT PLµIIG$E.DåD¨F G«JILÓObQÈS¸UEVøY=[ä^s`®b£dNf>gïi¤jkskj3hHfòdOa7\_WrQfK¦Dú=ì6K.Ö'– ½Òz ýèÖHòfÓhh‡h–gòg=f×fÍg‚higjôl½nRo–pÁqªs s{s`qÛpn k…gîd1_Ï[hWSOoKH>E.BÞ@z>±<å;¼:n::;;É=Æ?çCçHUNSÄY_céilãpî>Æ@#A´D8F¡I:KÓNOÌQ˜SÖV¨Y\_2a¾dgikYm3m®m±l‡kíj0hKd`9Z‘U‚OdHÛA79Ž1™)‚"=^çW +òk(j kbkðl"kškjšjujÚklm_nûp=qrrs=rÁqÒo~mYjf¯bx^SYåUeQMIeE£B?ã=×;ž9È7ä6Œ54ª4“5z5ô7’9?<ñA/GL÷S1Y0^Òd¾ism³p7r sèuUv&wwcw¥w"vÙuLs‡oýl6gb\QVtPÂK#F®B†?Æ<Þ;U9ã9å9ñ;D<¾>ò@óC`¶\5VOPGL?`7^/‘(Q ñ–3™ 7n omp$popoÒo†o=o7oo·pírVsIs¥tQsêsIpînYjIfEa\\VW!R!MwH¬D”@µ=²:œ8?6 4?2#0[.²-©,«,G+é+ÿ+¬,n-Q0y49÷@GANmU¡\Ýc hþm6qKs´vw)xKx†xàxZxv3to jÖd?]®VwOLH~A¥<+6è3ª0‚/j./%/£12½4¾6p82: <>@7B‚E=G¿K NàS¥Xž]›bQf/jlÇoqr>r&rrq^oÛlöjRf§c>^$XmQIßB:†2ì+#ïÒrAompËq€qËq~qgq/pÐp§pŠq1rbs·t tÏu\tqso¥l#g-bA\VÂPþKbF„A«=æ:P7¹5 31I/ß.0,Ó+¡*à*!)š(î(†'à(K(Ì+.…49úAŠIPÞX©_¸fÄlq'tvÐwÜxÿy yBx‡x uòs¥níiÊb®[ŠSÅLE=æ8[3/Õ,Ò+æ+#+¿,-L.­0]1É3,4Š67Ÿ9»<#?A‡DÏHlMiRËX£^Hcgjòn£pþrüstnˆiYbZÊRÐJõCÃ<š71Ì.Ä+ü+=*–++'+ß,Ï./ /ò0Á1¨2l3ù68Î;>&A_F%KhQ²X]Ðcg>k¼nóqòsBtut:trÌqlo8m‹j|fàab[ÖUN´GS?f7=/(€"!q@rvssds8s[sCr½rur©sstPtýu¤u:túr‚oPiÜd‹^W°PÿJ@D->%9¾5»3k1!/É.7-B,e,+×+»+Œ+*w)('º&ô&Ù&z'ª(ý-1™8¬?»HPLX˜a hn¤rºv„xy•y›yÈxÅwõu˜s@nŽiVaøZ„RZJTBî;…5Ð0C-8*ž*%)³** *V*Ú+,,‡,Þ-2-F. /}1ß3á6ä9ô>­CÆJVQ.W÷^2cdhÊlápéstÕtýuct¯sÏr4q%nûlqhc‹]šXQIAT92$+]q¥rÁs_s©ss¾s¯s(ràsBsùtuttÉsÐrÃoNk2dü^ðXQ2JyCÄ>'8”4í1·0G.Î.$-4,½,[,,à-2-?,¼,+.*W)¥)(¬'æ(G(Ë+ì/œ5ÿ}8<1ñ.W+y+;++×,!,_,µ,É,½,N+ë+/*')N(Ž(î)i+Ž-Ç1Ò5Ç;ºB8IúQ¥Xñ_óe°k¥o™s tWu´uŸuzt’sðrÌqÊo¸m]i¯fYaL[{ThMlG@’qqÿrur¸rµrðrörrassxsq¾qnÄkÓf_`¦Y\RJ·Cr=L7R3.é,Ó+%+&++“+Ð,K,Û-².Ï/‹/Ù/p.þ.i.-Â-_,ž+L*)Õ+w-¥2”7Ÿ>‘EqMEU>]dñk-qtfwŸxËz)yÐyowYuzq‹mFfØ`,XgPÍIQAÀ;V4É0Ú-«-X-2.I//¾0v0š0Š/º.ê-‘,*Ž(è(,'š(Ñ*5-0½6;ÞCrK2SZ agÄl†pàrätÌtýu4t~sÚrÞr9pýo‡lþjÂfÒb\VPyJÅpZq-q§rrFr‹rrDrrßrñroÊn}kkg€a*ZÆS%K]Cì<Ï7D1Õ.S*É)[(X(Û)-)þ*œ+},-®//á0e0G00/ï/ñ/¯/H.D,Ç+“*h+J,©0Ï5); AöI“QeY~a·hŽnùrðv§x.yÚyÔyÝxFvàsho¢i˜cJ[©T)L‰DÎ>7D3/¾/q/O0¼1ú3P4 4ù4ù3¬2C0$.$+ý)”'Ø&<&e&Ê)V+¹05©= D¹MU\\cºi;naq s‚t t¢t s‚r®reqñqHoÔn°kîh\cY^|Y¯TËo&oýp“qNq¼rqöqãqÎrtqýptm_kBg`b˜[°TåM2E&=æ7K2˜-Õ*ì(' &r'#'(e)**+s,å.N/Q0 0s0Ö0ð150î0i/6-Â,~+!+†,X/Ø3Ÿ9“?VF›N+V]^¸eél¯qu vÜxÆyy¡x¥wÉtãq¾lFf‡_;WþPpHÌB";b7>3Ç3\34ª698 9Õ:]:n8©6š3¢0ÿ.K+_(þ&›%Ö%Q'(œ,·17ì?G|O°Wz_Kefk8n‘q¦ržs«sZrÂqëq¼q«qop³pAnukñhd=`Z\sn(ooÇp¿qTq‰qfqŒqŽrqnôkh)c}]æV}OYGœ?R8<2.+)ü'œ%J$Æ$‘%p&&æ'©(Ü*[,-§.ç00È1”1ï2b2 1a0. -V+Ì+Ä,)/2U7­<´CjJˆR¼[7bÔi÷n±su$wax!yxœx5uÙsYn…iXbw[˜TVMFµ@6<8~7å795:õ=? ??•=Q:’6¯3E/é,m)‚&~%#É$¿%™),¢2û9¸B"J{RÐ[aãhmlzp2qœsrûreq„qoqµqÖq±qÉpÉo6ldi‰fc‚lÕmÉn•o½pzp®p‹pùqq\oÈmFhÇe_ŠYUQ­JOB¥:V3™.*ß'R%w#¹#‡#|$K$ä%Ä&y'§)1+,©./r0z1Ž22¢2L1¡0Y/*.,Ã,´- /¥2{7@;´AìH›PœXê`‹g«lƒpøsRuÚváxw±wnu}s–o•k)dø^¶XQeK—E½A×>==;<=Ý?XA&BÞCBó@v=n951%-L*1&û%?#½$2$t')ù/¯5Õ>F2N·W)^fejEnªp§rºrâr€qšq}qÉr r&r_qÂpÊnÄl’j'gák7ll÷nJo@o’o‡pîGaOW^_Le{k3n{qÒrÙsCr˜rqr s"s³tsüsßr÷q©pnÉh h‹iajÜl?læm5nqn¯n‹kµhobe\1T[L¯D‡<@4”,ƒ'-#."% ¬ ˜ ’!#!l!ô"•#v$'%F&Ð(€)»*è,k-ï/g0Z131K1#0®0]0m0|1U2&4B6m:S>_D/JOQSXa^»d¹i m7oÎr§s×t¨sõsHqéq o;mike|`…[OV”R€OL†JqHLGzG8GšGÜG8F@CÃA>=K8Ý4#/Ò,)8'O%—%$$J%%°).-[4b;–CøLSê\bØi8mDqRrçsästsXsbsêt„tÏtµtÏt@s-qÏpÖgggh8i³k9ll‚mñnAnkgža>Z‰RMJ|B[9Ú2+*T%‚!ô!c q µ Ý!l!Ó"^"ð#¨$@%3&|'ä(â)î+^,Ü.;//æ00/Þ/Ú0~1L2ë4K6Õ9›=êBIGúMðTWZ·`2e[hùlwn«q0rLsr[qŠpom‚kÈhæeêa·\ôX>T-QCNvLcIóHQGF§FnE«DbAÜ?s;ê7å3œ/­,›)’'À&%™$Ç%6%f(+S1ž8Y@¥H„PwX£_ÏfÂkŸpirœt*FcN‹V“^ìeÚl—p^s~sÊsÃrþsKstrßrqüqÈpùpoudõdÇeœfôhÚjnk½m°mãmeiÅf_hXIOÚH@;7¹0•)Ô&q#ö$F$s%I%%½&N&Ý')'H'ˆ'·'±'Ü(`))r)ã*Š+O,,š,ð-¦.@0o3c7Ð;ª@}EÈKÀQ›W#\Ïad¾fúi´kSlvlÁm_m»nAn"mœlŠk‹jºj^iÕi\gPd™`#[­V©QòMDH®Cñ>9ð5÷3§1o0G/E.;,ž*¼(ø'&%Ä$é$.#]"Õ!Û"g#'%,@4;‰CÌKåT\„cÌjóo$r¦ss r"rmr‘qåpÿp½pŠoâo7nÂd†d,dëf$hiÏkUmhm¦m5i‘eÄ_WûO”GË?ÿ7z0l)Ù&³$c$Ô%*& &v&À'Y'á(((A(‰(­(((ü))–)ª*+*å+d+ë,N-A-ý03æ8÷=sBçHÇO;U­[zaHe6h_iòl(mSmömàn2nWnvn)m½lðlk?kj¿j¢hêfxaü]~WúR–LõG“B;Ê6R1W.p+ã+ *^)þ)'Î&ž%µ%$¢#û#N"¤"!!]!¦%/)Ö1n8ºAIQ7YÖavi m´q£r?r;q1qq¡pâoåo‡o_næn}n0d.cÀdueœg“iikmRmŸm2iue‚^·WO,GX?z6Û/Ê)K&P$ $°%"&4&±''À(M(¢(Ï)-)b)D)=)À*4* )Ù*/*¼*ê+9+†,¦-Ž0u4E9ã>êDêKVR9Y_ehÌkºlÑnuo!oooDo›o³oonÞn‡nmvlÝl£l3kój"gªc3^ÇY+SM{G¤A˜:÷5/“,3)<(5'Z'&I%j$Ž#÷#¤#`"Ï"+!§!H u ¦ »#Ð'ô/+6N>£F—NÇWa_)fÿlpSq&q4ppap€o·n¶nKn=mþmämËd,c¯dZemgeiQk&m€mÓm]ixe\^qWBNÝFõ>ÿ6E/1(À%é#Õ$% &<&Ú'c(%(Ë)=)‚)ü*:***v*Ä*k**&*u*J*U*f+¡,¶0&4:à@ˆGNUU\…b‡h‰ln»oPpTpxppp5p†p“poIoo nán‘nimºm-k"h£dM_úZTT˜N0GþAŒ:™4f.‡*¿'Y%÷$À$b#ž#"c"""!¥! œ R«Ô¹"Y%ï,Á3Á<3D(LeU \ýejso#p.pMooPo^n„m{mm mm4mUc_ccèe#g55.%'Ê%##Ê$R%{&&´'ˆ(T(ó)j* *g*s*j*Ù+*Á*G*F*T)ç)Ã)¢*ø,T0D5;ÐAàHÂP'W’^ÌdjmÍp>p}qpèpÃpšpÝp÷ppppPpŒpzpmoŽn¶loiîeÍaž\/VºPJ‡D=56à0Û,¥(»&­$Ë#ã"Ÿ!Õ! ð!! ¿ 4Ú«5pQ!§$Ë+:2:ŸB’JÐSi[]cwhúmêo.oennNnKmbl_kíl lPlÉm(bKb:cQdÁgi@kDmÝnm hpcÁ\‰U0LÐDÑ<Ì3û,ü&Æ$;"^##$œ%$%·&Š'l(%(À)~)ü*6*M*Å*û*½*H*1*))`)4*­,J0‹5†åý!#ì*0Ï9ZAAIsQýYçaîg}l›nn_mm§7ñ2’-›*m'u%"þ!f ? ü ¸gIXgZ!f#þ)Ø0o8á@®HÂQ&Xç`¸f:ktm#mlHllvk}jjEják‹l‡mW\9]_ad®gÀj'm6mk_eÄ`wYQ¥IpA‹9«0è*$["1  ù!!»""™#T$k%ˆ&¹'ç(â)¿*b+?+¥+³+L+ *½***@,j/3ô8ü?œF#M„UC\˜c«hÙmýp[q÷q†qZpÕp˜pŸp¡qqyr?s sÛt¶u1u°uNtäsq;mÄiýe;`Þ[òW&Q2J‰CI<&6+0ª,Þ)=&”#A!*ÔÔ°Ã~LN„yÞë!Ö$))«0 8_@GöP.WÊ_qdõjXlDlÊk‘kßkßjãi÷iÄj‡kYlzmkW[X½[^Öb®fbilŽldjldg^äW{PGç@ 8B/(å#]!\½  š ê!¥"q#Æ%H&÷(…)Ì*þ+Ý,ñ-e-ƒ,ö,s+Õ*æ*ø+5-Ø16’;ÔBmIP€X_!eõj¿oPq8r±r5q¶pÝplpvp”q qhrrÕsãu(vvÂv|vJt×sFp=léh³dî`“\[V´P?HØA•;.5=0Á,e(ë$³" R Gð‘Þ  ³"}$“)Á/ã8? G|OVõ^~di­kÚlŽkhkÈkÀj¬i­i„j]k0lRmPRŸT­XH\qaeGhEl kÙi¥c>]‡V NF^>‡6×.@'Ã"s ¢%ˆiâ >!%" #¬%¢'Û)Ù+l,é-ï/./¦/Ñ/ .(-++~+Ÿ.¡2z8œ>8DãK¹SZ«a€hDl½p¦qûsJrírhqzpãpÅpÅq6qŽrAstu`vNvövÄv¹ut.qˆn¶kChGd»aP\1V0N×G­@ì:ƒ580+Ã&²#`!2 ä 1 ¯ª¯  i!!U"î$¶)…/b7s>ÿFÙN´V]wc9ik˜lˆkukâkÈj•iƒiejXk,lTmjL¨OTY]^Õc×g6kkk_i>b»\õUbM¾E=©6 -›'N" Oúƒnû {!°"â$ü'‡*O,Å.’0B1F2„2Ô2ì1Ó0\.,·,},š/ý4O:üA GèNâV]’djŸn§qâr±sÊss+rPq­qRqq9q‘rSssÞtÚu–v,vv6uDs÷qªoglÎj gÝe4`±[PTWM”FÉ@1:N4•/Ž)Ï%Ý#"P!   $ þ F ©!k!š#$À)l/7>¾F±NoU]búh÷k¦lÍkËl)kÍjRi hßiÙjk¤lÂF‰JDOÄV\b\f'jÐjëhâbL\}TØM Dâ<ì5W- &ç!«ì¼pe  §"2#Ä&j),â/Ë1Í3¯4¨5Õ5ñ5ñ4†2r0-Ù-´-÷1Ë6ˆ=¤DK9RfY‰`×föm p‹s:s£tots¥rÄrq¢pøpåqBrr¬sPttÐu”uÖvuRtrpanŽmjæhÊd²_ÈYR¢K×E2>ì8Ë3%,¹(%$Ý#½"!^ Ä » v î!§!À#+$Ø)‚/6ü>ºFÄNfUs\êbçhëkªlùllRk¹iõh}hQi`jkl7?«DGJµRY‰`;d©iêjkhàb‹\ØU$MzE>=.5‹-b'U!õ ôÕÖ •!d#N%Q(z,/Ê2ù5 7 7ë8î8¼8€6È4;1«/g/­0m4·9­@àG NáV&]di˜nöqÏt tCtÑtesÔrór[qÖpùp³qqñrarâs–teuLuÅv1u‘t}rÄqioünÎlèk gEbÎ\’VyOÞIsC <×6È/ú*ó'@%¸#"‘!Ä!–! é ô!Š!~#$ñ)ß/s7P?0GVNëUß]jc`ik˜lúl l!khÎfífgigÃh§i¶8Î>OE§N Vd]÷chìi×hÊbµ]U]MÒE¤=y5Á-»'Ó"c gP K H! ""$l&Ñ*g.~2v5Ù7õ::ë;É;J:Æ8Í5î3T111î397ô=DMK8R‚YÁ`]gl pªrÒtŒtœut»t s6rrq>pòqErrorësºt¤upuÝvfvuatrìq®p©nýmcj f`YZ”TMÝGy@þ:€3O-Ù)¾'Î%;#Ñ"Ì"o!Ž! Ù!S!."Ñ%*,/Â7?‰GÂOCV]ºc©ikCl¿kíkÖjOgŽe4dxe4e?e÷fë1ü8N@uIšR´[agœi8ic•^3VcOG>Å6è.ø)#l!1 !!" #7%Å(l,50w4x7Ù9å<<Ó=ž<ê<9ß6ï4¨2ç4<64;X@™GœNˆU»\Úci[m«qšs5t…tztÝttsPr¿rGq’qaq«rkrÇs^tXuQuûvGvØvÃvKu!t rÖq½pn‰k‡hbê]œW^QjKD]=¡6v0è,x)ý&ì%#Æ#*!ì!" ! É"œ%"*£0X8%@;H‡PVå^¤dri^k lŠk¦kh¿eNb@`Ì`ç`J`©aS+2.;*ENñX1^ðfPh°i‹d®_{WˆPkH…@;8>0Y*h$l!ê Á!û"#$\' )ü-ì2O6W9¶;³=Ó>—?b>‡=O:Ø7Ñ5Ò4_6@8å>„CóJÜQßY`eðk¦oKr·sðtÓt€t”tKsøsjrÙrFqˆq[q©r~rûs´t¿uÉv“ww­wŸwuéusßrÌq"oŠlºi­e`oZ TùNtG„@ƒ9‡4/\,D(¦&V$¤#Ã"*! ` ¸ k"^%+*ù0Î8§@âIPPñWÍ_´ejiék l¡k›jsg3c _J]\h[ [ [t%-,Þ6y@ÓK:U&\ºdÓhj3f>afYURhJšBM:/2K,+%¿"Ô!‚"×"ò$%~(L+D/53{7P:’m??ô?=§;86`5J7¡:Å@¯F;MT[ bg«lÙoßrßsátŽtsós¥sˆsQrïrmqÅqqär¶sLttõuÛvµw4wÉw‘véuµtçsârÎq%o‘lþjOfHb3\ÁW;P“I~B€;ì6§1’-Ë)À'+%/$%"l!M h ­ X"|%–+½1Ê9½BJ–RgY`a_fÕjÝk}lÍkOi4dÂ_Ð[9WÖVSÀS0S£'æ2<ßGÃRPZ¦cagyjÓgÍcR[TNL…D';é4-Ó&÷#ž"##—#Ñ%!&”)p,˜0ž4È8h;œ=q?2?º@£?ß>:;w8~76c9!<¢B±HHNíUÈ\´cÍi5mãp1r„s0sÍssas"s's>s>sr¼r˜r¾sNsÑtuuu²vev¿wv›vutqs…rapÆopm`k;g¼d+^îYhR›KŠD²>9@3 /*§'ò%Â$¥"ò!Ñ · Í a"¹&0,À3 ;CqLT[c1hbkîkñmkgübZ\W5R¯OÑLyKOJœ$'.¦9D–O‰X‡aÀf k(i+eN]0V‹N·FV=ÿ6 /±(€$·"Ç$ $X%Û'C*-A1=5"8i;q=%>¢>ÿ?ß?6=—:ë8 6ë6•9§=JCFHÝOgV\Òcái8m½oÀq­rrºr´r¤r‡rŸrèsFs…sshstsÀt(tžtòu+uŠu¤u’u!t½tsr¥qŒp)o)mˆkÌh‡e_ÁZS#LQEÄ?·:74/*”(%æ$Ù#^"a!"! Î#€'Q.54È<ãE8M¸Uè]ei¸lÃll­iée¹^äX[R#LmH_DB:@¼« z+J6-AmLÏVƒ`FeðkŸj¤gh_lXýQ"Hº@>8J1¡*#%ê#g$\$Á&‡'â*ƒ-Ñ1Â5d8J;<™=Ñ=ÿ>Ä>!<9ë7636c9÷=ØCÒIOûVˆ] cßim¦o²qvq¡qûqÜqÓqårr…ss_s€s}sŒsÉt=t¢tÄt±tÃt¸tštWt9sÊs%r$q7p*ohmÿlŠifeþ`Z‚S‹MF¼@ž:¸4.Ã*U(%ö$ð#¢"½!Q!7!*$K(g/6P>ƒFÍO;W™^Íf¢jàmoll6h«cc[ZSùLëF@ç;®9,6Öà˜(p3>@IÔT^:dŽkkhÄaV[?SjK3B´:˜3¤,'“$L$$Ì&¯'ê*O-l14^6ä9U: ;·;ÙiÔbò]!UHMNDØ<…5B-Ã)% $œ$¬&­'Ó)û,Ï03567J8h9~9²: 9^8>6Š4R3æ4ˆ8B<(AÿG¨NT¬[a…f”kWmöp`päq)p¨pipwpÇqmrr•rás sNst t;t3sçs©susesMs4r¾qùqpÃp9oŽmàl\hèdÖ^ÌX®QðK®EU>81—,ç(ð'%($G#2"!c!Ñ"¹&Ì+_2«:BJšR†[aéhÌk‘m(jh×c%[¼QçI7@Ù80Û*&v"ßë "£,˜7ˆC5N1Xâ`Nhiái¶cê^¤VöO‹Gb?7y0'+P&¨%N$º&`'Q)A+”.Q0â2Þ4œ5™6Ç7(7`6µ5ä4¸32ß3U6‹:?³E8K²R@X±_ d>i könïpp°p7oçoºoápxq q¼rrIrªssys­sÃs”sbsrýrÁrtqäq.p}p;o°om%kXg{bñ\´VÃP>IÌC%< 5Ø/Í+´(&5$p#¶"·"b!’"#ò(e-M4Ê<€DùLßTl\Åc6iCklh°eÉ^×V•LUCF:†1)E",b }w)3ã?tJ¡U†]ye½hqi¥e `VXÒRJ=AÜ:2æ-Ü(Ž&>$Ø&&Å(›*p,¡.ß0­22î4+4¹4æ4D3š2Õ1Ü1ö2=4Ú7î=RBÜIyOïV=\aÆfºjmšo4pGoÙonøn°náoOoép1ppüqžrJrÈs/s-s r®r€r6qãqIpo¶oOn¼nPlzjReÙ`¿ZRTœNbG¿@Î9²3¥-÷*N&Ú%:#´#5"T"=!à#a% )ß/46ÿ>ðGVOVK^”diÓjkgbÒZ˜QƒFà=i4C*,!Ô407 uJ %>/Ü; F%Q"Y”be²hse…aÕZäTôM³E¬=Ñ6¬1I+˜(p%ç& &O'ñ)H+-.±/ñ0¸1ß2v2»2910Ü0=0}0™2œ59×?E£KáRXd]Øcgkm=nànÏnÔn@m³mpm•n n2nŠooépÓq£rcršr“r-qøq¦qYpÃoúonŠmØmŽk§icò^‰XRTLE=ý6ñ1<+×(ˆ%n$!"ß"¡""N"z$Œ&´+Ð1½9ÞAÖIìQ‘Xr`Keri–i.hêcþ^iUK“A 7Z.$ÛnŽ ¸ ™•´!{+î6¹A¸LÑUÁ^tbég4eûcj]WþQ7I–A¯:y4´.Ê*ö'J&O%ð'S(;)¶+i-.:.ø/â0V0Ä0v/¾.æ.J.†.«0V2 6:¼A#GWMÍT8Yð_cÒhRjúmm{nmÕm^lálÙm$m,m~nnèoÑp®qŒqçqýqœqap÷p‰oóoNn«nTm­mYk$h b¢]MVíP÷J@Bå;Œ4n.é)ž&›#ô#"!å!Š"I"ì%€(-¤4<<¸D©LjTZ¿bf1iCg½f¤`ÑYÎOtEŽ;11E'õ!÷ 3s Ew'ž1Õ<”GªQYò_Adãeodr_J[TÏMèF5>Ø82†.7)›'n& &×'`(À*+…,À-†.1.r.î.Æ.-$,L,B,c-Ô/266;ÉAHN…T’Zu_@d0ghjk8lŸlûlûlžl°lëlðm0m§noo2oùp×qFqjqpÙpqpo€on›n`m‚lÇjf™a[áU}NÿG¾@;92,É'¾%"×"M!W!j!w"É#Þ&ý*P0‚7¨@3GýOOW]#cefgïeMbó\SÐHù? 5'+9"6ÿ š7á‘ …Ã^#:,â7nBŠLpUš[Ëb²dìe‹a’^;XRR,J±C<5×1 +¤(o&&'&v'Ò(¼)½*æ+Ç,c,,ì,Ï,r+©*¯*<*+1,".È1¶6;„AÒHRNùUaZÛ`ndPg½ipk]kýl9kíllZl`llòm¨n\o.p2pÆpèppgp7poâo¼o4n¼mWlhôeA_”ZSML)D“=,6€/ª*¬&##÷"!“ ¤ é!h#V$Æ(j,¨3§;DC»KfR[Z _—d¤e¬f}bÑ_VðM˜Ba8v/%mý P`—4,Sm'i1«<–FßPrW’_Zbþeqc`Ò[nV5O+G¨@;9œ4I.z*‰&ö&%Ø''~(&) )Ù*}*®*Ì*•*~*)H(­(A(õ)Ä,.e2Q6A;ÅA­HTNÉTÃZË_dc›fh¤iÇj—jÇkokõl7lmlËmknnëoþp™p¤p6poüpoÖo¡n´m¸k¯iÙfVbk\—V»O˜H+@Á9Ë3Ô-y(û%*#!³!I œ!Z"L$Í&Å+0l8?ÌGÌOXUÞ]ae#d–d>_wZ PÕFæ;ë2)su @m¿» Æ­d!®+ª6`AKS-[Ã`Ãedc[^yZS‹LUD•=7z1\,È'ø%Õ$Ý%Ù&+&º'4'¯(Q(•(r(('ò'°'^&Ò''r)]+~.í26;EADG`M¿T#Y‹^—beœg©ijjGkˆlNlÎmm`mãnvo4p2p¸pªp'poÒo²o)nm.kÈidg¢×Ò ´%¨/Ó:—ENW/]=c?ddØ`ò]…WˆQ*I§BW;©5\0Q*°']%%<%/%·%Ç%í&s&Á&ˆ&%å%÷&/&N%ê%Ð%Û'K)D,f/2…6 :Ü@F3LfR@WÏ\5`˜cžf_hj0k‚lmm”nn³o]p9ppooÂofnÄnlÝk¨iÒhegbå^ÀZ SÎM¥Fò@29Ø3œ.’)n&:#˜"®!*!5!À#ê%Œ(ï,…2©9´AèIePGW¡]bcde:b4_]X!O»D¿:j0V&ø'Ò Db0ï—ô×àªÑ)^4/?%I2RÚYíavd™f‡cÀa#[œV2OGš@/9€3í-Í)u%™$V#£$@$7$Z$µ$ó$è$$O$9$t$Ä$¾$±$d%&ƒ)++”.ª1~5k9½?ME KPÕUÙZ¼^`aÀd5gi jÕkÊl¶mZn3nùoëpBp?ovn×m¨l^j igeaí^ÅZTíN·H¾B„<6,0h+ù'’$ò"Œ!Ý ä!²"ï%¸'¿+Ã0™7¹?FåN3T§[Â`kdXdfd¨`¯\^S»J>¿4w*ß ó¨ R«‡ <Ñ!A. 35¾#_-Ñ8ÚCžM·Uœ^bšf_eMcÍ^ñZšT8MDE¶>³8”2p-Ÿ(Ž%Ç#ê#ý#°#â#÷$$&$#Å#ˆ#ƒ#²#ã#÷#ƒ#«$\&`(y+^-ã1?4Ê9•>ªDtJAOœT²X¸\†_¡c*eõhziìk3kómmÑn¯nÆn¡m‹l~j¾hçfºdàb•`E\ÌY TNÇIC–>872â-Ò*#&~$v"g"+" #É%ž(ü+Ö0¼6§> E3LSXè_ b6d‘c"bK]JWRMCs8.{%bµ úâa† ÈÉ}Ö² çÎt'l2c=ÍHnQ6ZQ`5eífÄf}b@^ºX÷RåK‚Cö<ù6¼1¾,!(0$Î#©"Í#"ô"ý"ò"ñ##"ì"Å"º"™"!ÿ"#F$–&ß(û, /3~84> DIüOsSüXb\8`„côg h»j'jÚllºmWlõlajÚicgKe+bª`e]˜ZÂVÚR¡M~HYC>%9Z4,/¢+b(n%`#è"‡# #¾&&(G,*026H= D‰KOQ‰Xj]œb{cádÍb _òY QÓFê ù!D!u"y#Œ%Ð'þ+Ì/ë5£;BGÿM•SFXk]ÌaÍejg h¡hçi®iUh–f˜dœb _¹\öZ V£S3O–LE3KÓQÆVä\â`ãd=dcp_·\¸VMN¶DS9ð/¸&gj½ ;íÀ”¿èiyÔ›´9j Åú?$.×:DM5UÍ\Bc­fÜh!dôb ]ÉZZUÒPkJ@DK?<:«7B3}0Ü.§-q+õ+*,)Ò))l)_)5(Á(Y(,(O(U(¯(Ö)ô+2.01‚6p;oAFL#QùWr\ýad˜f-g«g«hfàe"aÑ^†Z¹WDS¢OÃKÔGáD~A„>ð<936…4-1É/È-§,Q+++j-,.«1®4É9Õ?yFLUR!Wç\ bdye·caa˜\çXGP/FÜ;Ü1§(r; Ì>1ÂéP§íØ_i½¦j%5È=œ”(53=œFýOV^®c•g-fd`]£ZnV´Q“KÈFJAÉ>¤;@8Ç6X4Ð3V2Š1Ä1H00'00*0/Ó/²/·/µ/ú00ú24Ž7c;¦?ùDðI¨N–S¾X¸]Ùa¤düfogÔgÎh6fñe)a™]æY™U­QØMâJ-FoCj@µ> hg eaY]^XÔT»PãLöIaE²BÖ@L>œ<×;x:8Ó7„6Å616Z6O7C8`:Ò=?AE;J9NúSÉXÅ]!aÞd.e»c×aÖ] YQõIV>œ4o+ "0Ññ 'ïIÎçŸ_– %ä¨\c ÛÐ_ R®©$.o8ÉB—JÛRËXá_ÎcŽfdÝc=`^^â\´YªUpQMI­G”EˆD*BsAp@å@Ò@j?ö?y?&>î>ö>ý?%?-?{?×@ÈA®CqEHH-KNOR VPZ]°aˆdxgh:iliVizgõf bj^€ZV.RšNôKªH9E CZB@Æ?í>Ý>=\=1=,=³=á>õ@UC EæI«MmQiU%Xò]y`õd)dQc­`]AW×R/I|?¢5+©#¦b ¸ 7`½Ø$_m»µž¯`2^¾và IðóÝ&U0N:¿D=LŒRÝY×^Ôcèe€e½c‰bI`t^Æ\*YU^QÛO5MKÝJSIZHHEGðGÀG}GCFÿFÝFÁFâFïGnHI<°AÕGHLæS¡Y%]¨_U`M`=a bMcÝee·e¸eÎeóf/fÖgÇh¼iii­içiójj(jmj©jÖj¶j…iÿiyhµgìgfeRdÉeeafbgyh¬iájsjïj.hàgeqd{c¾c½c±d%debfWggggf”e²dÐd,c±cÊdBd•dÞcœaž^;[.W¨TÅPcK}CÕ;1‰(Ø!ØKø Àí¦6H 3οßÓ–‚Öê°+X”·˜5ÿõ{‡ ~{4 6 †ÊW#Ã+Ú3#9>LC/I$O U Xñ[¶\z]_^\`(bId/e€f“gghhòiÉjTjjÖk kUk”kåkëkãkHjiRgúf.dObl`w_6^&^?^r_®a bÞd±f,g›gøgÍfýfgf7fNfÔg@gÇhUhÏi\isiXh¨gëföf eMdÅdFcçb¿aM^‘[…WäTýQ`MÀGÙA8:/5' £Õ§ ÌËÓ8­ÌFçæñ«‚˜Ðùï³CNx¾ÅoÿËÿ÷9ÅÚ×WK P 0k™!ž(ß/r4ç9B=ÓB§HsMƒQÖSöUYVW€Y¨\^m`fab„cdd¾ee ee(e^e”eÕe´e{d–c­b`D]ê[kXùVŽUSÏSåTUjVùY;[v]Œ_˜`Åa…aœaÑb/b×c©d`dèexe§eÉeadåcúcaû`ú_ð_]Ê\aZWTZQpNdKùHC‘>Ö?0@ÅBDÐFüI KL›N O=P>Q3RYSªUVHWˆXX?W›WUéT°RÒPóNŒKþITFÄDžBðA ?;q701.*Ö$Ž ˆç 5 /FAº‚÷:†}#³lu«±¤š´c[ILXse'ÿÕÿŒÿ…ÿ¹ÿúÿÑÿà6Ésí !*D6!2%%(f*ö-Ô1 4ð8¨<>q@XA­COE*GBIGK^LyM,L¨LJúJ IH%FûE©CéB6@%>;ž96·4R2é1º1ó2@3Ä5f7©9Ô;ÿ>?äA½CVDÉF=GâI³K¥MJNñO„O½NÍNLfJ¥Ha<„:ã9r6þ4/w*†$ær¦\µ­ ÿyQ¾a9üø0Fω~“«ŠkvŸÉOTLKKQH9 ÿ»ÿŠÿ˜ÿÏÿãÿôÿ¿+ïÛ¶ ß ‹„tê&Ã"&#þ%î(§,J0K3¾6r7á95:?;©=6>÷@&@ü@Ò@š?½>ó=Ð<Á;Y9á8684 1Ã/B,®*b(&»%Œ%¨%Ù'/(—*­,º.ê0þ2ù4ô6Î8‹:Xr@¤BXD D{D‰CPB=@T>D;Ì9_725,3§2‰1 /M, (/#dÒ¤Ö‹# Ó …o¶Åw8ÜÏ|”R픂›Œ\Hl©ÐBHFRWTA4ÿÐÿœÿŒÿ ÿ´ÿºÿƒÿÿ¯ªþârAó ru\fÿÜ ”#õ'¢*ü-e/x0ª1ø2å4 4£4ÿ4®4f3µ32 1$/Á.T,*Þ(Ö&²$M!ÍT×çO˜ˆ!m#%™'¯)Ë+Ú-Ï/Å1ê3ð5ú7Y8½8×8Œ75¿3Þ1ë/ð.',+/)¨(5%í#F¤Ù…†‘ ÙßL¹= ì ÞÃÐ [zWþ½™‘“wX;Es¦Á6@EX_W;$ÿáÿÁÿŸÿ™ÿ¤ÿÅÿÙÿóÿâ2Ãë&„†Ë- n 8+§sÝuvž"¦%i')(¶)O**)Ó)&(”'à'G&}%¢$q#4!µ K¦òÿãñòñþ#4Nïx@÷ö!ó#Õ%£'™)L*÷+ì,æ,½,9*Ï)ˆ( &%=$,#!è +&X æ Ç Sã\­f*æ°‰­fx<úÁ»Á¥vC-3Y}’š2KRN?91*ÿîÿÂÿ˜ÿŒÿ—ÿ¸ÿÒÿØÿºÿ²ÿÄ+°bèŽBÈæ  ü ¤ £†°)¯Éµ·µ¯}ޝ”—†s?¨V÷ž-  Æ  O X o 6  I^³Ë¡ŠGð½Zÿ  û å yRaG8—Þ˜; ý ' Ž v´ÐLìaOk‹„ˆ®òGgFùÎÀÊÇ™Z'2[rvv#HS=%+ÿöÿÆÿžÿ”ÿÿ¸ÿÉÿÒÿ×ÿ×ÿÐÿÞÿí6 -–|gŸa4 Û ) * )u÷âS¢éþ#FùÀyA à ¶ „ o oŠ„®íŒ*1<±8û”h N    º'Ž(FI\*YÉô܋Рì I  ~̾B¼nÒxšŸlRg´IZ.øÐØìèÁ‰S24>S^\X$?7 ÿæÿ·ÿšÿ›ÿ¸ÿÒÿÜÿÕÿ½ÿªÿžÿÿ›ÿ¯ÿÜ 74fµ”¯& ¶dE p Å ð ø P ‰  ˜ ­ Á ŸdSae£ø…«]>#PƒÑmêÛóJz´  M ¶ «xo; z ï  ¾Xõ›²ù­j¥íWÿîÿÿYod?<sÐ:.ÿàÚôò¼‰aFB=CQUJÿåÿý.*#ÿûÿÛÿ±ÿ¥ÿºÿÕÿçÿÞÿÌÿÉÿØÿõÿüÿú"Y~RVŒF2/ðdè6±ó2.1áÍ=xÎ ¥8Ò¾£–†…‹—•™–ÇPD)þý” ؘèNg\?"sù-I$©•DLnž¤ˆgQDg«ïóâçù ï½™n`H=HO;ÿäÿê&4)ÿðÿýÿÔÿ±ÿ«ÿ½ÿÞÿöÿòÿÒÿ»ÿÔÿøÿûÿîÿêÿìÿøÿöÿÛÿºÿÿ§ÿósè4V`Âäû2H:!Þ›EïžKÿëÿêÿûÿúÿèÿ»ÿ“ÿ’ÿšÿâ7º>À4ÿ6U&ø'šþyÿçÿî'_g6ÿêÿ¯ÿ³ÿä3m|rTDLY…ÉÿÿîááîðË«–ŠnPC6ÿùÿóÿû7> ÿýÿþÿðÿÌÿ´ÿ±ÿÏÿæÿ¶ÿÁÿð $al40už´ÒÛÔÌØíûûñæîóéÒ¼«˜¸ÓÚÈ®ª²™pNCB`²é   í͸žtWEVu™»®5ÿæÿÍÿâ/€¨g?27[v ÙýñæâçêçÖ»¤¦¢†[9ÿüÿý'><! ÿûÿ÷ÿùÿöÿéÿÈÿ¿ÿç ÿãÿØÿâÿð *-FM.ÿùÿÊÿÁÿÓÿØÿÓÿÅÿ²ÿÿ›ÿÖ.|–…[U][[_e^g†¯Ñ×ʱ®¦‹iM>42,&&ÿùÿÌÿ«ÿ‰ÿYÿ;ÿ1ÿBÿBÿ^ÿÿÓ8S?ÿíÿØÿòT„}YGE>Pn£å  ñêìöûòâÚÔËÀÀ«€Iÿ÷ ÿýÿü '>8ÿòÿãÿð ÿñÿËÿÓÿõ ÿïÿÛÿí*]W/>aaH7(ÿ÷ÿÙÿûQÔT‚lß·|olZXfеÎѸ§‘}kYOJKHC>4)ÿûÿÑÿ³ÿ­ÿÃÿÐÿî?OE<1"/X„—Ž€mcchjXXq¨æ  îåêþöÙÉ»®‹W' ÿÿÿ÷ÿúÿý"ÿþÿéÿéÿþ ÿöÿçÿæÿóÿüÿíLjgWBCH@1#"'"ÿçÿäjëFd8ìÀŸ‡~lip‰¥¹¿±¢Œ|iM8,04::53%ÿïÿ¼ÿŸÿ ÿÀÿÓÿî/2(.73<]~ˆ„‹Š‚sdac}ŸÇèûüñàÐÆ¼®–zW+( ÿõÿõÿùÿòÿõÿÿ ÿýÿîÿèÿõ! ÿíÿÝÿï@. -a‰™[3)?Se[9&yà(>K-äÁª”ŽšžŸ¢Ÿ›fC))>Vfgm^Cÿíÿ×ÿÛÿõÿÿ% ">YYOS_gyž²§…eby¨Íäìô/*ܼ²´°}W9% 0ÿøÿöÿÿÿùÿñÿìÿñÿû ÿöÿó/&ÿîÿï7GA77Ki„…rQ?8/02<ISVTFRzºô:7. êÆ¦˜•›–’•–p\E83B[ovh[A#ÿèÿàÿçÿü $;YXVj‰¢°»²›†€‘¥ÂÚíü (-ß®‘Œ€b; 1ÿÿÿÿÿþÿÿÿýÿûÿ÷ÿü $-#BbgTA<OjupiYH8(%#6Sv‘£²Á×ð +ýÕ¯›–™•—•~l`X[]fx~wY;ÿöÿèÿéÿîÿú&%'9OP^†´ØØÃŸˆŒ¤ÀÁ¿ÊâùÍšue]WC)  0' ÿùÿþÿô"'%" /[vsbNNX``VH@>>@88<Tw¶Æ×ê'ܺ§Ÿ£Ÿ›šš˜‘…zxytpvtgM0 !):P]o¬¾º¨˜™¬ÆÔõÅèø¹‡`B1    ,+$ÿû ÿûÿù)- >_swfVIHH902AT]YH/1N…´ÖñýúÝÅ·­­¬«¥¡¦¨Ÿ’‹†zpnkaRC7/(  !2@Sj‘•’Žš°Àƺ£›®Îëà²qL8$ÿøÿìÿõ!'& "ÙŒ þ û4êx¥W l¡ r`7ñÇÒ:>‰ú ßÞË:T›T¯\ü§ %!à#"#!#A"T!4aõË2áNh  : — Ì Ñ ÷  ö   X š Ñ þ õ Ð ” Y ] ’ ü P ž Ò$ˆ<ñ+‹ 3+fŒ‹àJxêkÛ Ñ“M'þæsÍ»–z’è9£ ó x Ï# LJ~J¸zLAoHÑÀÄ]®%ÿ\È5ósõTŸ  Ý VÍ9P‡×Çkåö Ú å ó é.èú˜yT  E “ ² ´ ç     7 Y ˆ ½ Ó Þ ¬ X ¿ È ù C a m p ž Á o EÎwpz|íQ«¹`] ®iüPš±µÉmßå¸ÝÜ¡›±ËéÛ p9 ìQSì"9C>Ï{êy¦“3½ñ¥}^„&„ º!Ý"a!“ ê¢,áû—äÝ@A5ÈÈœn2¸¶E[I ÷ # —  Q x Æ ý " < N f † ² Ñ è Õ » x  Ô ¤ µ ã  , %  )  œ »HÓ½oîl“Zf`tûmƒ÷~ äüíMjOhóÐ~iªåµ lÃצG|­YyÑ{å¿ì§»~žò—ò h mz·oëpD‹¢YWö£GéÃL÷¤û“ØÆ “ ] êÔ²ŒÚ  q · è  - O m – ¢ ž t I  Ó ° › ´ Û    ó ’ é ±  ®1º»†,Û&Æé†^q)2«~üÀN—ï qúöñy#Á í£ù oé_9ê3I>Ym+ý}»º‡L\-õ(O*ôˆZÍI®ÿ•ÒŠo\p n + ì ´ ŸÁÒ  F ‚ ¾ ó ' I f r ‡ † z P ! è ® ‹ u ‚ — ° ¿ ¶ ¨ ƒ  4 ³ ' š¬ì!Ir4¦Ç±p_ X º ) ‚DȸʀŒ&âT6X[N6m.ƒ2àŽ|È%êdjS¾KJ$i¥Ÿ‰µÂñÄŒ/Ûb´š ­ØþAû/£m "ù à c G µK\ Ü  . ~  Á u ö jÝ•y›ªÀÏç 5 a ~ Œ Œ • — › ‹ p H    B i y n Hõæ  Y › 1& wá&%á|ˆ y  2 t 7 § b+‹:¿Ô–íŒTîã'NH‰:’¤iV¸úb•Hñ¨d:´ep’g¥/Çk æ% ÇpT ð  6 ~ = ) \ w z z 6 Æ J÷ÜÞÓš5ÊzPF# þ %Idwƒ¥½ÔÞÛ×Ó÷-ÿ R ƒ o Y Ѥ”ÍÜ w h Ð 'YœR•Ó ‹  ë  ( X è 0 ¨ ) 'TÞyÒ×Y¬0áT«€/Ÿb:ÀSÓV%zsŽŒ4ûò»V!Zt¤ 'ø}XnœíZþž€ G {  š : ,Ó”~‰{u†Ž~\A->½iÕk6ëDzÃÕêíñýAlªºÔï> 5ålž°o*õ×êß0» I ù Í 5 S ó ® : © = ø  E ˜ À ý G Û s o¡ÚÙŽ=Õ|+í•2„¾Â¡}n‡ÏH] -kŠ¢ … # 2¸¬rr;Ù9ößÔãz ¦ w ) ù 7°r¥êQ ü%,1=HsNå(n߀hA=AQZWF<@^‚«Íæ÷*rÄU ²>n`Ú³ÄÊœ=¹ § ë ð À ½ ³ Œ l X x ²  1 e §  F Ê „ j=ÞP·FÅ—o'Ï?ă±Î°XÞªS ¼ õ  ¨ } ' 48°ý * D l ½  › ¹ ˆsz[•5`€©³œf^_zSèD­R 5DbzlUGEXn‡š©´ÅÒøwõ&ƒÊ¶{;$XŒ ¦OÞ=¨Å¯|wŒ“ªÂú A — Ø  v Ê  : } ã e Ý \ µ:Ãp$àž7²- p  ñ ÷ Ñ ª ¬ „ ø 1 … 7 b Ú j è ø Ó F Ë 0 ˜ûVÐWæÐ¿z_­÷'Ç»wª±n)Õ[BÒ}7.I[_N<(%2BN`w•®ËÛ^ÔR°úõÊ”†¯Ï.£Iø‹4òþUÀ@°û 3 U } ¸  ` Œ „ Y [ « 2 ™ ã  B r È ' Â>² ä Z +  < . , O l Œ B × V 'ô  - ` i k²_ɈS"ÿ¢Q€ÕS ÕáˆìÓ‚²mA8 2==<(ãÉ¿µ¸»ÂÆÍÏáÿ,Ww…—ºï,YyrV>Eht¡×Pï–+heLXÁQÔTœ¨Æù O £ æ ê ³ “ ¹ 6 È : n _ V U S – š æ 8 Ò § Š   ® Ö  7 6 Ï 3•B&îä…n™ýŒ@嶪©—KëU©¾¨œœxXQZbWBÐ’XJW}‹—²¿¾wIÿÿÿúÿðÿèÿåÿáÿßÿÓÿßÿþ;ºÛäö  %_£ØèÚÔí8–ë+5€îÉ×Îy»÷`°  K G ö  Œ  W ] k Z 8 * > w ˜ a &÷Óâ  I  g "‘þ+û³uEÿ¶?°?ê„Ymbñ[Í[Z›9"è‡;ëô/Hs¥ó[«ÕÒáÔÁRßŵªŽmQ>1' 7i’§š“qGήŸÌ Z­¾EóÎÔ 9blšÏ|x–výq°öE¸$‰žfA  t À   é ® w ^ bµ’hQe—ÁÞœ-}ÞOÑmø¨qZNŒû›z\b‰u uóÈÒ%—gçkÿâSë‰<Úf÷oò6VBF7$ó¸n*í´‡[:ýéØÁ©‘~weG Ö~ ÿ¿ÿzÿ‡ÿ›ÿìP¥ÙÄŸVÿçÿÄÿåˆÒ@Çr½x t·q+¬§„¾Dâ Q „ X /å™kkÿâÜåõêÝ„ W² ]ÕU! #øâ >T*»jdÎYÌ Ój ̄ÎìøôÁ ’ 1 Õ 5 € š Å Ø î Û Ç {  œ  › < –pR9¼Näeç^ÞNµ X¼-ÔtZVŽÌý!÷¥/ÿ¶ÿ–ÿ¾6šå%RÍ~Dß<h·z9ЧëZvjL!÷åù5+ûÒ\þ†Ý:ÒS )ÝIj¡šf)î?Ћ p˜§È(”^3W Ç Þ Ã   lB#õÑxrÕïÈ_—ÄóEËM÷­q< Ñ I v Ÿ ® Âçb°pÊ#YnŒ¯9ÿë@vŠ=ÿ²ÿ*þÐÿÿ€%ª‰„ÅtO T€ #~¶û… ar{aICcÒÑÑ¿€/ГIåcà_É~s©ÌÏ«|\wÌõʸ-Ýÿ*)ÔHÆ– ¤ ý 7 w¹öAZOÚ¹¨ÖzÛóés =~(¤—`a¥î{Ó•zyo8æÎß ó + z · ë ¿i˱lÜ|”¶.gÿÿÿ)ÿÏlî`'t<)§ÔC¾2fˆÊ,¢?LVa‡:?F'Ú†/ñ²]¹x÷ 2(ÙÔ÷;h‘‚í²+µ[Ñ # M ¦H­GŠÆ Hxµýp ì"…$-%²'3(?)&)”*#*C*j)Þ)'Â&j%#Õ"õ" !°!S!*! ¸ @SW Ã[÷ˆ ­uaXµ ã ëÑ¸ŠØrÿ ÿÿLÿ÷i~+ÿûJ¯79ŽúKlanÀ>¦î;c‘šx>íÏ¥_&  /;¦Ÿ×ažˆ ð #$ò«‚‹ÂÙÎ6_M p!Â#$˜&*'ï)¼+”-i/0Æ23k414Ö55r5u5~4Ù3õ2‚1/¦.\-€,³,],,,+ü+¹*þ*8)'î&‚%#c!„–Í;ÄOÔ ®8 ¶ 5¥²HLÄÿØÿ?ÿª@ħG\ñÍÎça‰X",ˆ÷mÃëãäò׺¶ÃÙÏ‘TFk—¼¹·²°“1ð‡ôâ © X yÕRôµY!ù$%Ô'()*q,6-í/Ô1Ê3¹5œ7;8Ë:;[=>Ì>û?H?P?s>ö>3<É;M9Ö8‹7¶6ò6ž6L6A6T6E65_4°3·2Î1¥0.þ-?+(û&È$ž" p_SÇ-: P 'eM+ÝUÿÆÿBÿGÿìBVÿô7ÆOŒp2MjIælÿ|°®ÿ÷ÿ÷ M„`-&d¶0Š?“#†  ³Üc_ Ÿn!£$ú(>*ê-l/0¡1­2¥3è57¨9ª;«=°?jABCC_D>E0F"G@H!HÉIIeI†IØIšIGÍFhDûCÈCBeB AØAÄAÏA¤A?@q?¦>°=Í<Ó;÷:¸9N7S5]2ö0{-È+(‹&#È!©8‰3— ± N l ?GùHÿÿ0žƒAEâ[=Ì ™žŸfX ‰Ã°ÿyÿ€ÿ›ÿ¤ÿ¶ÿØÿüÿóÿØÿâ8#{nÂÄ« Ç ‹ ì¼a-Úè!Í%(¢,0 3F5¤7ö9œ;<<ƒ=­?@êCDïF®HeIÝKSLŽM³NÐPQbRêT'UUˆV VGV¹V‰VTÁSXQëP¼PO}OQO,OO'NÁNLßK±J[IGÖF¸E|D!B{@ú>ô<Ê9â6Í3_/ö,å*7'¿%1""×úÚÎ g  ¢^÷©[‰œ)ÿà:¼Ù”3ÿêÿñÿù?§èßÿ ÿ¬ÿÌÿáÿû:?IT™ë”*@N:… ` Þ›VÀ˜µ"ˆ%ô),P0#4083;p>C@÷:ô73Ã1.U+¢(õ%ˆ!•!° € ì±ùU%W¼#ÿö,uŒ7ÿÒÿÀÿë D„”þÿÿÿ(ÿDÿuÿºÿöÿú$ƒEìÿÿȼ ¥ ÀCXÃ{º$(X,3/Ç3p7K;|?ƒC[FdI6K_M­O—Q†RûT;UMVWùY7Zv[¿]!^™_þa-b]cÃeEfæhhöiIiÀiójGji¡hžg‡fve‡e dÜeereÒf)eðe€dhcXaã`p^Î]D[Y¯WÕVHT³S!PÙNcJÝFóBÁ?;¤8852.Ñ+M'"r³%½Ä =ñ„~ULÇ\ÿÇÿ–ÿÚ<4ÿõÿÄÿ½ÿîÿùÿÖÿû5Rÿœÿÿ½ÿÓoé#» EÙ ”~3ìéŸ!™%é*^.¥2¤6y:F>^BkFfIâMAPRÎUWmY9Zû\]]Ì^¬_²`¸a÷cNdÀfä;]8 4Þ1---(;"јjÅD ¡ã¿Ø„’ÿöÿÈ 9BÿÅÿäÿï7RDFm‚Ð,ÛcŠúÔ UÓ…Ê"š'+¬0N4½8÷=A9EbI¡MxQT4WZF\ö^ô`èb;cdaeefHg(hi:jbk|l˜mXmÑn'nÁoxp?pºpôpÚpÌpÎqq0q:pëproêopoeoŠp!pÁqdqór*rIr qßqQp°ošnm keipg eªcau_ˆ]?Z¤W”TÏQŒMøIëEïB>[:•6á2),­&°!AXÝ ¤d¿ùw^ ÿéÿÄÿó; ÿÈÿÕ-?>Bebžâ¿£c L úf³cÍí#p(-26Ò;C?FCNGJKO†S=VGY6[Ï^Åa:cedºf fÍgšhhˆhöi}jDk&l!mmÕn™o oIo|oñpŒq0q’qÀqŸqsqkq®r rGr2qêqƒq*q2qmrr¤s4s±sÖsÝs¢s‘s;rÌqôqoìn»mJkõjAhOf$d5b9`]ç[ûYVßSBOwK;G#C(?®;“6Ð1*ó%C ],À> Ò˜’¡%Aÿò'ÿêÿÜÿéÿþ,8?   !ô  : C p ±÷0UnÕ#Á(;-2^7Ü=@AôF=IþNQûUøYG\C^`þcegghjiiùj‡k kQkkÂkþlqlÿm»nro$oÜp[p¢pæqkrr³ssZsKs"ssLs¥säsâs¹sps(s3sot t­uCuÉuäuÎutuXu t sÒrïqÐpºo¤n½m¥lZjºi*ghec±b`>^6[KX1TJPJL(H’Dœ@]:ú5.Ü)#é V˜\ ¦Ñ˜^EÐÿëÿíÿãÿíÿÛÿð+6<{zj <„yÏ$j).2¦7¥=8B¼GâLPS‰WvZÓ]ã_ýaócme6f£gôhži i7i·j0j‡j©j¿jÌjÓkk‹lUm'n"o$oýp–q!qðrÇs’ttqtstYt9t\t‰t›tvt ÿæÿå!;Kéüà]1JˆÐr!$%.)q.x3?8A=3BoHM`RUÖY®\ô`c"e#fg9hiiªjiåi¾i¨iÜj%jDj=j*j#j joklGmynÇp qqÕr†s‰t€uZuÄvuûuÂu|u{uƒumu#tÊtZsÙs¢s ttatÌu>uOut›tUsÚsKrNq%oÎnmŠlÊlglk–kj_i€hqgfwewdbÉ`Â^Œ[¨XîU‘R;MêICì>7£1£+°%ºÔA qÔºÿóÿÛÿËÿÊÿô Nn$=$h$E#¸#ƒ#§$í&(®+‚/¼49=·B„GˆLQÒVIZI]o`íc¸fhi i iviiÅiŠi$hhgÄg“g~gOg$fçfðfïg°hÆj†l6mïo›pèqörÕtuvvdv³v‡v@uìuáuÙu²uNtØtDs¤sFssIsesˆs¾s£sJr r$qqp¶o“nBlÄkIj3iRhõhŽhshhhhhUhgÏgGf¼eÝecÀb‡`¼_\VYzU•QÒMHB$;ö5n/a)&":²£ö l ZMÚ3ÿê#Y„.H.w.G-¸-‹-¾/0;2ß5ì:W>ÁCŸH2LåQçV©[A^òbreh jkûl“lÖlClkmj»iÒh÷hgAf}eºe#dd6cÀcÔc÷efƒhœjlˆn’p8q—r“sÉt³u„ußv4v&uøuÁuÓuáuÎuputgsÇsVss rórËr»rFq‹ppo}njmhlj„hÑgeüeAeCee`e«fDfòg›h7hhh~hg™fÌf&ed'bC`\×YŸUmQpLF"?V932¾+Î$²‡lÕ Ÿ ÚÄ“Pÿíÿö5g99C9 8Œ8h8’9Ï:ê=y@}D²H¹M!QUàZc^abe hj;lWm[nNn-mýml j§i0gÁfœe‰dAbéa‰`s_v^ÿ^l^ ^ò`GaÈcóeûhCj¼lïnÌp$qžr¼sØt‡u2ulu~uou§uÎuÖuŠu,t”súshrûr˜r2q˜qoûnl«jêi,g“eãcìb`_^Ž_#_y`5`ßaòc6d¥fggÚgìgßgig$fŸf:e!cåaˆ^ø[XŠTCO;HðC<­64/('¬ ›Ä[ E.·Š³»v)?[DCD~D5C½CC˜D©E±H"JûNÝR~VzZ¥^¦b~e h£jömŽo+prp•pÜp8om÷l#iÒgše¡db}` ^²\À[HYíYcXÚYAYº[\^¤`Óc‘f‰iRk¬m„o…q;stDuduÉuÿuåvv*v)uÖuxtÐt"sTr™qÏqpo)m~kthÎfCcÈaz_Y][XËWéW¶XáY×[>\r]ú_°a¨c¹emfñg¨h1h9hwhqhtgôg‰f"d`a²_\4X"RvLñF–@|91ç*"|ò¢¢ `Çš€ïV]oNÉO&NæN‡NDNNÓO¯QÉT"WWZ_]ÄaldÉg¿jlvnTp[qLqÔqEqoÞn•l8if~c¶aJ_]Z”XEVTqRèRVQâR`RÖTU"W&Yc\“_ýcxf}i*ln²q…s—ujvvœvƒv´v¯v v=uÖutSsEr;põoÆn0l¦jGgˆd)`ã]¾Z¿X$UiSMPõP.PQ›RýTïV¨X™Zœ\Ï_a9c>d¨eêf¨gŠh hwh‡hãhtgœeÉdeaÉ^ÕZ;U…O§JCu<€4¼,É%NUu5 p ˆñ®h×YKYØY¶Y|Y'XÌY*YÌ[]J_Èb0dëgßj~l¨nIpEqµssUsPr3q]ormAiùf‡bã_‘\ŸY»WTQ†OM‰KõK]JçKSK¢L°M•OQëU„Y`]¡a~ehÕlEoêr¡u vvßvÚwwvñvv u;tssGrptnÒljRg5cÄ_Ï\XeTÙQ¼N{LIH½HœJEKÇNPXRâUcWâZQ\¢_ a1c@d×fmg‡h‰i?jZjÄjÂi·höge,a¡]ÙXShMF¾?<7*.ô'^ ŠDJ Á lW?zÝ`ïaµaÆa¹a^`í`ûaZbc¾eˆghiŒkºm™o3pgqürÞsrrßrYp½o/lgiRe]ar]ŽYëV¡SAP5MJ—H=F·E DjCÑD D*EE×GÔJM¸Q½VŒ[_”d h:l£pswEwRvåvtu•tÍszr$oÿmÄj©g™c¶_‹[VÈRâOKÉHUEÎC6BnB3C·EGOI«L}ODQðT]V³Y4[Ç^g`Ñc&e f×hRj$kFlkÎk«juiIf¸d_Î[CUiOüIFAâ9º2 *…"¡°#I r>eþg¿h¶h÷ih»hEhh;hûišjÇl7måopp­qÑr–sªsÞs¦rEq%níl‰höe<`á\–XiThPÍMIíFÌDcB @a>=<´<Ï<å=Ó>@oBmFJ-O]TQYk^mcLh}lÏpÐs3u^v?wBw}wÂwfwvuFsžqéol(h=dn_ØZóUßPïLÀHÓEËB@<=»<æ<¤> ?7AYC†FSI6L$NÆQJSÔV¡Y¤\Ì_êb¶e[g j,l m²n:nÂn'mkÏjWg+c[^YXSHL’D<Ë4ž,$$B¸´Á vˆ2k2lBl£lÖl†l(kêkälMl”mmn¦pqGr sswsòsDr4o÷n kgÌcœ_[V´RNjJ×G=DIAr?4<å; 9 7Ø6Ù6å6ù7×8m: ;²?BæHM"R©X]¶c›hÈm©pótu©wIwÎxZxwævðvtrn‘jëf/a›\LV°PÿKXFÉB¦?Ý<õ;8Ý8'7þ9I:]<5=ú@jCFHÊKxMôPµSµW;Zâ^Žb e)hnjýmkn¾pp&oúnÉn4li7d´`Ì[ŒUõNÈG‰?M6à.—&¨Ór û Wèn—oµp)p`poÇo„o`oƒoƒpq%rgsNsÓt˜t™t€rõqmøk(gac@^‡Z U‹PïL­H‘EA¥>Ú<09ö7…5v3S2131H1L1ç2*3m4Ð8;±AF?LfR“Y _¨e‰k%o2s)usw¤xfy'xíxáwõw'tÿr±n¡jMd¤_"XîRŠL+E¿@;É8Å5Î492X1õ23c4“6`8:C<¶?©BœEH*JúMïQµUÖZ[^±b¨fžiÎlêoqArrlq³qÍp¡n±k(hc´_CXûRWJ)Aé9J0Ò)!:º-‡ oæpüqqq¡qUq&pîp°p®pªq:r1sNttlut¡sÞqcn¯j·føbj]˜X‚S¬O(J…F‚B²?¦<Ž:7ª5š3F1X/t.y-Ì-Ù-±-ä-Í.±/¿2¨5É:á@F³MmT›[Äb@äDHŒM±SX¶^icYgØkPoKqÔsªsýt½tst rrpÆnkïhc‹\ÔVNF+=ï5-…%|;?qÖrÝsWs™shs\srŒrCr\rús§t;tµtŽtÆsGql»hSbÊ]{W¸QÁKùFHA£=6:74ï2‹0².õ-¼,q+’*Å*J)Ð)f(È(c((c(´*w,'0D4ÿ< CKRûZ»b iAoÈsÚwoxy¬yWyCx>whuAsnçj\cÌ]UbMºFu?P9‘3ã0;,Î+p*7*X*]*ï+O, ,ú..þ00ÿ2µ4¾7œ:,=¡A1F KhQ¥X]ûcKgŒlIo¢rsžt¿t§t»s¼r‡pyo l-hÆc4]hV9OVG°?µ7§/v(Õ"‰r…s‰tt^t7t7sès:rÓss›t t=tŠtsëq¹n½idP^XQ³KDE`?ˆ;)7%4¹2f0ß/-¡,N+–*þ*Á*x* )§) (_'æ'†'§'Ž(‚)=,|0‰7b>FF‰N«Ví_Mf’mÑr‰v®xyoy yxw3usnúj›d]eU—MØFl?9+3G/‡,*×)Î)õ)Ø*)þ*?*Á+^+¹, ,&-.J0¶2í6B9>gC–J/QWû^?cƒimLqAs8tßuužu%t`ràrp m¯iCd‚^4XCQ8IÃA¾9€2ˆ+çrNsIsÔt-ttsÄsr©røs|ss1s,r9qPn9jpdŠ^»XQƒKD™?9¡5ë21/q.™-g,Œ+¸+y+‚+¿+É+}+*m)é)‘)O)4(Â(ô(Ø+#.L4‚:ÚBìJÞS2[Žc jÔp=uvúxËxÅy x'w^uOs]o—kep_ WjOÛHd@ñ:¼4”0¬-,,++O+=+R+>+9+a+u+\+ *z*k*,-‹0s3K7ÊŠ838.m+Y(8&è%ó&L&n''–(u)p*›+Ê,Â-“. .š.Ô/.Ì.I-++ä*·)?)*X-÷1Ê7ã=åEqM0U…^!eolpKtLv"wþxQxÑxwAt÷rÄn|iÍc\FT¦MF,?`:Î6—5;425J6‰8@9Ö:3:8D630k-¼*Ï(£&›&B& 'å)£-Å2,8ó@ HPPsX#_ºe¯k…núrstsÖsWr„rQrqlpSoœmÕkŒgàcÔ_Ò\9l‰mOno+oïp oâppp¤o¤mi˜fœb\ØUúOeH@92Ü.·*_'·%$'#„$$G%%¢&·'û)*ò,5-d.=/3/ž/ý/€.È-r,*ß)U)B)¦,Ž/¦4ÿ:=AQH²QYÄathŠmDqÐt0vŒwRx?wæwŸuðtqpãlãf³`?XèQ²K)D¥@;²:8ß9ÿ;_=L??h?@<ß:62•/7+³(õ&@%-$K%u&r)ä- 3ÿ:²BÿKMS…[”b2hÉlõp qôsrsWrÕqøqàqóq¹qJ^F A·?¼>2>ç?õA”CCB¦?þ<Í8X420>,V)[&\$ù#Î$ƒ$é'¢*ª0x6š>«FÔOAWt^ƒe¬j‹nÒp¦r®rárŒq¬q•q¼q°qƒqšqpHnakÿig~i`j&k l|mnnnÆnòomj0e+`•ZkSÌLFE$=ê5Ø/e*;'†$h"Ó!a! ¨ ù!S"3"é$2%É'¸)w+,½./040Æ0S/ž.`-9,`+x+¢+ù-î/Å3¨7Ã>'D÷MU \ic]hm²pät u>v9uØu±tÆtErQpkyf``!Z!T±O‡K™GlECCJCüEGF@EãEEB„?H:•5ì1]- )Ö&ž%#¤#é#¶%¦'é-2¹:•B‰KS:Z¥b\gùlÚo3qÏrerWq‡qrq¯qßrrvrYrpÆnûmk›hh°iŽklElÖmnn7n1kÁh¾cH]ðWOìH8@Ä9‡1+œ&÷$ú"š!© Î ¾ c • õ!â" #ï%'|)(*¶,a-Ë/9/û0¥0b/Ö.Û-î-…-I. .Á0¨2T5ò:@VGN¡Uþ\œbúgélæp%sSttu.t}ts!r¥q)o|kÒg„aã\UW@¤F¨LÜS>Y>^dcg‘k·nƒqPrIrÔqíq*oînúm­l’jHg’cO^‘Y³UeR>OgM@JH‹G)F¬FcED3Aƒ>ç;6¹23."+!((&€%$µ$$È%N(++i1š8l@ÉHŽPeX±_áfƒkoÛr6sÕs¥sµsŽsÛt"t0sösúsnrQpÿp%fKfbg7h°jKk.k¾m>m…mJjfz_îYP´HñA8Ñ1}* %Ÿ"l"%!“!ó" "D"^"›"æ#v#ñ$Ú&'m(›)â+w,Ü..“/0/2.Æ.€.~/½14 5á8c;$?cCòI¬O”U\Z»_%cƒfÿj m=oóqq¤pÆoðn¨mÀl¡k°i§g=c@^ÈYôUwROcMSJ…HE÷DÊD&CRAÛ?H<×9`5^1;-‹*Ò($&…$ð$X#š$$(&h(à.t4ê=LE M Ud\ðd irnóqÞttt sÏttHt#sÎsàs‹rqqp¬f=f?g"h£j`kyl8mÚnm¬j@f_ÿXüP§HçA8Ï1*}&„#¤#¡#f#÷$$>$p$±$â%3%ƒ&+&ñ( )*R+§,È-».A.Þ/.©.ž.ç0—2È5Ë8;>C2HMS&X=\å`dJgAjMl‡näoòpœo÷oDn!m_lgk›i¹g}c¬_ƒZ¨UÖQÑNLHâEøC@ú?˜><è:°8™5¾2[.Û+½)u'H%æ$j#ª"Û# "õ$À&˜+1µ: AÂIÞR)Yâaxgmm„pès…sªsÅsKss·sjrösrÈrqpLeåeÇf²h:j ktldn nBm¹j%fm_ÚX¸PNHŽ@ß8š1š*Ñ'?$§$Ù$é%§%Ö%÷&A&‹&¯&Û'''ú(½)®*Ð+Ü,¿-–./.Õ/ .ç/#/½1è4œ8.:ø>kBSGQL…QäW*[t_6be_h jl2män£oNonŽm—lÌkækcjhkeaz\ WšRÒNÂKQG—D@"=:›8þ7&5o3è1ã/<,[)Ç'é&D%>$ #L"ƒ"m"#A$x(ù.¶6ù>žFÌOVë^ßejloèrõs@sYr¸ss-rÂr,rqòqOp~oße„eGf-g®i¯k9lXn)n1m|iºeî_YX+O»Gö@W81U*í'¿%_%¨%ß&¹&ÿ'/'’'ê((2(y(Û) )Ž*m+v,.,Ë-–.J.ä/>/(/¿0·3h6Ÿ:Ë>;BJFÄL(QæWR\__çbÝdýgâjK‚Q‰Wü]‰boeAgŒhík4lún=nŸoo(o5nýnènvm¸l×l‡kÅjîh^e]`h[2U0O~J DÒ?Ô:[5¤1..m,+*R)¶(i&Õ%c$d#®#L"±"+!«!f ¹!3!‚%)á1¦8ûA"IQ YR`«h0lëpÄqaqp°qqcpãp"oâoÒo”oOoe d¡emfÂhÎjšl nmûlähdT]V)M©E´=ö5.ú)H'%&%´&?'a'ú(n))ˆ)¶)Ë*$*‚**Ù+®,,®,Ê-p.$.a.¢.µ01Å5Š9·?CÉILOYUþ\øb•gkiÕkÚl¾ncop0pBp˜p‰p1o¹oªo}on8mÎlÍkÎi,f$a5\UûPJDv? 904/8,)`(Q'z'%ú$Í#º#"’"O!Î!V ö Å / ‹  #¼()/ 6Ï>øFÐNÉW^ªf{k‰o©pbp‡o¦ppeoÞonÙnënênñnâe/d·euf¬h³jl6njn5lÒhc˜\¨UFL½D <¸4-Ÿ(7&R$¢%B%ë'1'ò(“)k**M*k*Ó+-+1+a,$,Ô,Õ,À-I-Ü-Ü-ô-ï/w1}5Æ:k@NE…K”RWY~`ÊfUkmAo&oµpËqDqtqEq{q\p¶ppp&po}om©lMipfaa›\¦VŒPlJ#D*>q8W3-Õ*j'V&% $¥#º"Ö"!Š!R!9 Ó d ërª"l&t-©4Ä=DÛLãUH]e!jqnÇoŽo¯n·o"omnÜnm×n n;n†n²dsd$efJhgj†lTn¿ntl¼g†b½[®T:KªCk;\2‹,&Ù%-#$#$Ä&&Î'Š()F)¼**Š*ø++I+þ,•,,n,Ö-C--3-7/1W6:óAF™LèT[Abkg®lPnipHp²qqq™q¤qq³qªqp¡p¾qq\qp¢omejRgAbÃ^XLRZLF%@a:O4â/‹+»('&T$Ù$0#"!, Ä ” ‡ +Æz`eI!é%Ä,Û3óm”nntcsc\dneÎhj]laonªl«gaõZÀS+JŠB7:1*™%€$"v"ü#‰$´%g&$'#((ž) )À*R*”*Ñ+{+ý+þ+ß,/,,_,¤,ð/1Ò6Â;ãB)GâNaU©\ácßh×mQo@pÙqq”q³qÊq·qÀqÁq˜q§rrrår™r`põoPl;i4dÙ`kZÌTóN§H®BÐ<¹71i- (ã&”$Â#ö"ž!› µ U  Àn3!Ë ÷!‚%I,U3j;ÉC«K¿T3[üd iEm†n.n.mmTm‚lÍl kÚlRlÓmŒn$`†`Ùbcd-fÂikÉn¹nRleþ`¥YKQšHù@§8‡/~(ù#ü"›!!|!Ö"É#X$%%ý&¼'l(T))¨**Ï+K+a+K+‚+Õ+±,F,þ/µ2è8 =`C¢IŠPWF^%d¿iRmŒoKp–pˆpíqqZqq…qªqôr†s@sÒt]ê_ëb'e(hZjìn&m¤k dx^ÍWZOG>Å6ª-‘'"I!›×÷ ¶!0!ð"×#ç$Ï%Â&Û'á(¾)m*O*Î*í*Î*î+6++Õ,å0#3à9{>êE>KtR'YQ_ßfjSnWoñqp¾p±pšpÒqŸ8–2¶.|*É(J%#!!X Ô   R 5 % E & › €"ú&½-¢4s<ŒDRLQT—\cèhålämrm|ltl´lºk½jÏj©kSkàl§m`SfUCX¶\}`Ïe&hLl1k¢hšaM[(S‹KÃCZ;3*+#ûšKnIÒW\ c!Ã#4$µ&'_(µ)Ä*â+Q+i+*²*˜*+,u0ž5‹qÅrŽs#s´thtïuŒu`tîsxqÄoÑnolîkdhÈfa›\½V{PLI»C)=7M2N,º(Ò%ç$Â#."_!¨!_ ã µ f ç Å#~'»/6>:F¥OW9^Xf3k,n»néo;n9mßl¦jXhzgúh«hÃiCiä8‹=ªDLoTm[Óa)g`h½gþb\¤TîMlE#<Ù4ã,–&k ×¶S ù¼·!]"Ú$Á&î) *Ï,1-æ.ø/§/˜/Ä/f.[-Ý-±/ä2‹7Ù=[DwK…RÐZ`cf®jânpq®rrŽrCq˜påp»püpüqMqÛr£s7sÙt½uhuñuµu]t.rÄq"pn½muk'h¿d§`EZRT?M‘G@Ò:²5+/*Ñ'†&#$[#m"Ÿ"+!\ Ù N à š#p'Ð/T6E>‹G+OÅWà^çfÔkÎo,o)o•nmîl"i;fÛffŠfafÇgP1]7D?GÈP§Xä_eñhhpcR^JVšO\G7>î6å.¹(‚" s-È Û"¡$&&(6*O,-_/040á0º0®08/9//<1Þ4ÿ:‡@ FóM÷U2\mbyh\kÿo!pCq„qÃr7qúqYp·p“pçqq†rrÔsztGujv2všv9uóusÏrSq7oín©l‰j_f±bË]9W[P±JWD=”7ž1`,â)8'{%~$u#‡"Ü!µ à ! ’ j#T'Á/P6D>–GSPX'_(g)l oRoo¨n€m^j¶gcþbkbea²aáb7*(0Ü9C+LòV\÷d§g’hïd‡_ÈX Q I@Ë8²0¨*g$!.“ i 5 õ"#ÿ%–'|)´+Â-_.0O1i2"1å1ˆ0Õ/Õ/ö0i3f6ì<°BCIP2Wt^³d†jm.pqrqýr-qàq\pÞp«pÜpôqjqÿrßs¨tšuÛv¶w.vÚv¯uÃt|rçqÅp–omm…k‘h:d¾_™ZS¬M”G$@H9Õ3‚.ö*ò(Å&€%F$&#D!Í ¹Ø J #'/6>rGKPXJ_SglldosooÇnzlËiCJcQqX©_óe°jæmÇpq~r]r4r+qÈqbqpïqqq|r rõsÔtÑuüvÀwHwvÖuÍtar®q}p[o8m{kºhºeš`Ú[ÌU–O¡IB;e5;0³,D)'%·$n#q!å ÆÎ 5 #'s/ 6 >qGBPXP_hg„lcoUnÆosm¾k;f”a‡\üYWØU¥U(TîÔ&Ò0Â;aFAPºY/b*fŸj3gscf[‘TÿMEE<À4à.c'@#p!w"d"6#$%ñ'½)Ê+ç-µ/;0S1¤2Š3ƒ32Õ1Ì0Ë1L2/5¦9—?|E K¤R~Y˜`üfÀk»n1pqGr#rrq®qKq q5qq³r rzs·G{P9X„_¥gÀloPn„o lói“cÓ^XÄT8?3i-ú*:'h&N$ð#ý"·!¿ Š ¬ —#É(@/Ñ6ñ?XGðPXÊ_ägÐlGnïmÓnk*fÆ_êYqS^M­I¶EªDB–8Þ*i5@8K‚UR_Ke=kj=go_øYðRRJ+A¶9Ç2Ø+ &;##[#3$U%&œ(y*¢,Š./·0Î1±273*3r3 2,11|2¼6¯:æ@ÆFVL¡SY¦`µfkk‰np pRpípñqpÜpŒpˆpóq¤r rhrÆsWt$têuŒu¼ußuƒu$tYsŒrpqFpomÍl¾j¢hgd/_YR†K›Dþ>õ9 3Ò-ó)ù';&h% $<#!"? ê ö!$z(Î075?˜HPqXÁ_Ýg¥kànpmmild \ TÆMáGAü= :Î8‡‘+'Ë27=GHÁS]^cíjŽjÇhçb\`TÔLæDt}8C2¾,ç):&»&#%$=#I"!U!”"&%Ì*1$8A@HÏPñY7`(gk,mk¿kfl`W*O8G¢?Ø9Ò4"1Y.j‹%?/q:pFPå[ubŒiòkj+cÞ^WOVFë>¬7+/d* %H#ù#T$Ÿ%&O'è)ç+°-1.«/¢0|0Ü1[1j1S0ã/Ì0 14Ý9>÷DJéQqX^¶d0iql‚o6oìp‘pApoÞo·oýpqLqÅr&r”ss¿tJt¶tÑtät¿tÃtdsØrÈqp^oÉnámÉk.hc¥^W1PžJCË=»7+1}+ë(²&e%Ý$Ô$&#H"º!³"D#H':+2v9½B$JQàZ`Þg¯jµl½jƒicT[ùR9I®As8©1ž+'Ö$g>"Ë,­7…C!NX¿`5gÿiûj.dã`X´Q‰IjA!9i1Û,f'$Ç#r$c$¬%Ö'0(ù*³,--x.M/;/©/ð/É/³/q.¢.ä/—2Ò6œ'%$ƒ#¿#z"Þ"è"Ó$v&E*Ã/¹7>±FÙNKU6]bçgôhéiÓf8bEZ&Q?FÊ=4*"Ló7m SV&¥1247W0±,'à%û$"#¤## "·#4#«%Ù( ,ß2j:A²I}PËWN^±cŽggEgObË]pTLJü@©7..$$ç< ‡ lõ#|-Ý8®C„NaVï_>c\gOfcŒ]ƒXQóJ›BÔ;¤5‡/,*±&r$è#ú$á%W&j'ª(Ø)¯**œ*Ð+ *Õ*>)Á)†***¡,‘.±2Û7T=hC‹J P”Vt\;`Ûeh–kŒl¾m¹milìl`lelÔm mumèn¸o³pÌqârˆsrÜrÀrqapKo4n#mžlgkgtbä\xVxPJ Cˆ<'57.¾*l&x$º#"Ç"D"|"~#y$i')¬.è5<ûD‰KóSEY`NdfùedÅ_QX‹NcD¸:’0Û'¶æ', ßè„=²)Æ4>—IrRpZè_ÉdðeEdC_[[PU?N±G8?ü9o3.&)&z$›$ä$ô%Ý&»'§(q(Ô) ))G)8(§( '¡((µ*Œ,;/“368£>RDÔK)Q1W&\0a:dÝh`jEllyl–l4a*©!ÔÄñ ¤Y ; Þ·œ%f/9{DaMçVµ\yb×d¾e?au^7XRÃK”D2=6„1@+Œ(%($Ë$ %{%ß&[''i'z'Q'w't'$&¶&5&g&Þ(y)ó,¼/ˆ4 8î?)EgKÛR-WÎ]naºeähZj¯krkòkÆkýl2lKl€lÃmZn núppÜqbqLq>p¿p:ojnÀm¯låjÂh>c¤^¥X_R¡L'E.=ô6Ã0º*Ù'+#é"Á!š!!6!Ø"´$Ú&*@.ƒ50]H]Q°Xu_¼býeB81ä-9(/%—$*$”$U$R$C$A$K$3#â#™#€#®#Ô$-$U%%î'Í)£,«/¾438Õ> D€JÓQ6W\ÒaegBi[jgk·lflìmm6mmðn§ošp3pboõoÈon-l¡k)ig+d)`ú\4WPêJïD=õ7«1x,‡'$®"v!ú ö!!S"ô$|'›*~/Ò6;>=E®LÛT?Z4`_cdîb`ÛZàSÕI?*4–*Ï"7 È(K’?ß w°˜6'¸1Ô‡H¥PõY·_‰e5f6fb^ÌYNSyLŒE½?V9Y41.‡*Q&›$û#¼#q"Š!ë!Š!|!H!?!P!€!¾!À!]! Þ!²"Õ% '<*`-p1ê6¸<ÒC6IŽOkTDY\ña3ddgJhÍj'j±k¢kÙkþjÒiVfµdHa]®YôVŽSO©K¹GqBã>v:k6§3 /,+š((%Ü#°"ò""ð$&±)-17=ÞESL R-Xò^ bÕd&dÿb_®YQ F;‹1'ZZžæòÖ¿·  5{S ²Âx"¥,Ò7ñB{KœT§[Eb\e:fÌdab\zWõRK´E*?D:.4æ0+ç)&â&$Ö$#-"Ô"œ"§"£"…"L!ê!s!% Å!*!´#x%S(h+R/ 41:#@kFÛLÖRW[s`c’fµh9iiÚjšjWiÞgée°bt_~[ùXITDP\LuH¥DÁ@<£8Ô5’2q/ª,•*'”&($«$Ž$•&5'ä*ý-È2Q7j>DÖK™QìWP]aadcxc^ùZêRÚIŠ>T4$* ï¶] Õ(7øE¯ÔÌêM³mìC+Ã&:1TkE:KªQ®Wô\ÚaåcÔdîb”`ø[ÁU¿LA¶6,Ä$›ø ·|ψð§—ïàŽƒõòÒf Ìþí [*×5·@3IÍQŒYê_ydÞe—dÆ`Ú^=ZV¾Q‘KªEÝA=F8ý5A1€.á,°+c)Î(—'=&‘&e&z&,%w$ˆ#Ë#G#“#Ö%&&Š)+–/q3„8ù>¯DÙJÄP5U’Z+^ôb|eÙgoh×h«hÔgOeYaÓ^[Z9VhRMhHˆC¬?©hHfsd`\W†S?N§I»DÝ@<98û6Á40200D.û-³,ù, ,+ý,å-Ä/•1<4?7t<^AÎGÚMJRgWæ\˜a·c÷e b­`æ\EW®O‘F ;0ø'ì ž» LÃÑŒÚT¨ïÖ[d¹a"CçhÚ¹(2<àF N‡UK]2açeLd_bØ_¹^([ÒX¥TO6JF«C§@k=«:Ç8±75ð4x3A2 1†1!0ñ0{0 //•/¶0¸1Æ3Â5Ÿ8;Í@/DÂIÍN«S@W¾[¾_þc’=^<;:988‡8"7°7t7767U889=; <¯?4AÖEŒI‡NRMVYZE]Ða§d£gjh©iÍi]i+gdc`[ëWKRÛN‚JFB?\)XðU`Q×NàL¦JQH}FžEPD'CoB«BA0@Œ@?Õ?–?Å?ç@ÈAåC¸EYG”IÓLèPMTWÁ[^Na(dOfÆijk j˜jHh*eˆav]‰YJU5QNMZIÝFLCÀA@d?>`=Š=><õ=d=ô?&@9AÔCLE´H~L"O½ShVÑZ]×`±c—c®bË_\V¶PþHR>’4)*ö#&"‹ ¼ 8nÍá#ar»þµ›¦Q"O°jþ¬ô /¬]©$k-Ð7òAZIyO¡VG[M`¡cd`cCb¥ai`¯_\åYØVÖT1QóPcNºMsLK.J€JIzHæHQGùG›G¿GÜH×JLMÙOúR T™WhZq]^_øbld†fÝh¬j[kkçkk(i%fªbä_D[bW¤TPŒM€JcHSFEáDþDœDD+DOEEÑGHLJK»N"PÂSäVéZ]K`c*dRdèbÁ`‡\X&QWIA>Ü4|*ô" Ø(–FñzH áüƆ–¨_&kZÄÔA ÈÎ $ù.r8F@ìGM°RÖY\^:bbÚcbb>a÷ae_š]6Z‘X‹W+U×T¹S?R/QŠQhQ/PíPvOÿOO„O•PšQåSéUÊWäYë\^f`­bêdÆf~gØiVjwkŒll²ltl;j•hƒeEb^µ[nX^U?R°PN˜MgML˜L~LQLŽLåMŸN9O:PRQçSxUuW€YÐ\^uaCcd{c~aí^E[_VaQ!HÆ?4s*ì#¡€v j`ˆ™]~áêÁx›Žn..†>quÊ Kõ†î$å.u7ã?ÖF:KrQýX"^wb%dldU¥V8V·W„XtY»ZÙ\`^.`Abvcúe}ed$a4^ŠZeVÝP•Hþ>È4E*€"+°˜Í¾0½PAÑ[l½ÞŠq€ž^t[ÿú}`"#ï üÙþÛ$÷.!6ð=þCxI7O#Vs\]`ùbpcQcddËeWdßcíbao`§_ß_g^ç^Ð^í_6___R_ ^ã^Õ_{`[aÙcKdífŒh i~j›k¹l`lámmYm˜mân'nˆn˜n·mÞl©jkheŒca^í]\[™[H[ [ò\c\µ\é] ]3]^]Å^L__z`Qa©cd‰dšd4a·^àZæWÝS{NåGA>3œ*"KJ¬ çbqü'±†½îú·s‚§£6p‚CFeëÍd † •ÖJ$7-'58;äA§G)NTÜ[o_abbc„d?eŠf‰g.g fÎf@eÎe„e:e]e¼fQfÌgfüfØfÃg g{hQi)jjôkŸl7l|lÈlÃlœl^l4lHlolßmqmìnpn+m•ljwh™f×evd%c‚bòccadd™dúe.edÓd†d>d'd,dodªeeÏeÌeYc/`Â]!Y×UµRLBEu<@2})0!7 &d«,{bЊ©òöÊr¤Ðª&a}E ^èïÔ+ J xÕĪ#i+3 9N>wD&J QVŸ[3]&^_`‡b@de|fof¡fÖfÜfïgDgÖh„ii^i‡ivilioiŒiÂjj$j;i÷i›hïhDgf¬fe¡e¿eîf·g¨h¿iÖjSjiði1h'g4f™ff1fTfèg˜hChÚhêhÄh(gœfòfIe·e:dßd¨d+cÝb4_Í\XœTÜQÑM¥IAë9¦0p'ñ ð§j& ‡x$6–,Ì¿ßБ}˜Ñç¯'O‰®‘4ÿòa}ó?Î÷o _†Ê!/(ñ/ë5Ð;<@kFxLUR1V0YMZ§\]{_ya·cðeŒfÚgVg²gãhliivi»i÷jjx6F-Õ&>Ó ê %O“#§¾<àâó©|“Ïöë³?Fm±ºhÿüÿºÿÛ,ª˜0/©P RùM%þ,‚2 6¹;a@$E¼JÈObRSÔT¿V:X[[ ]«_Ú`ýaÓbb¾c-ctcwcycwc˜c±cÁc•cvbãbS`ù_d]"ZÊX‰V`USïSúT UIV¸Xß[ ] ^á_ï`¶aamaþbÆc­dze(eñfTfœf5eŸd¢cÐbçb`ý_ê^[äXÒU¦RNÏK€H¼DÒ@=9—2I*¥#²vÕ êP í;Ìt ï$VÀ…ˆ¶ëðѳVJX’­2ÿÁÿÿÀÿû RË œ„äÙ"J(d-}1ó5à:P>ðDHKALÑN2O˜QÂTgWYZÙ[Ô]]p]©]7\¸\$[Í[”[UZóZ’YÔY'WÁVSÃQINâLŒK*IõJJFK¸MVO®RT7V8W€X‡Y$YâZÆ[×]^_`!`ÊaTa`£_—^±]`\#Z=X5UbR\OLIFiC?Œ:S4`-k&¥ ¥DØ8 àÙ4hÈtÊd :l]õ‰nšÄÞÌ®¯aSJ_wŽfÿþÿžÿˆÿºÿèÿÎ)çwÚ Ô¼ï< $ˆ)?,·/Ñ37L;£?­B?DEF}HsJ¿M#OWPòRšS>S¦SR>F>•@A¶CóF.H/IûK(L)LíMÖNöP2Q—RôTGUÂV½W“WlW UìTËRùQ/N²LHòEéC7A>Õ<•8Ð4X.V(")%+P ËËý Üü­~ï6†z°ms¥­£”“°]UEFRpbÿÂÿwÿnÿŸÿÕÿ ÿ•ÿŠ 6é^ o L'¥¦ˆ#l&x(í+í/V36|9Z;D=>™@BAöCÆEyGIHaI@IH‹GuF–E›D«C£B Al@Q>«<¹:J7Õ5—3]20ó1&1s2ñ4Š6Æ9;!<ý>Y?“@ºB C¨EZG5IJÍL§M½N¥NEMÀLJfHE¢Bø@F=½;x9Z7v4¶1Š,ß'Ê":ãy¥„ ó ÜB2«T‚6þó$vŽCʈ~¡‚fkÁLOGFEK?,ÿúÿ ÿpÿ†ÿÏÿùÿÍ#ê×ùˆ Š óš@†¨ a"W$T&ò*--—0–314À66ø89\:Ü<=!=N=D<€;Ø:Õ9Ó8š7r6 4»2Ú0©.+€)E'%Ñ$®$Ì%&_'Ï)è, .#01ˆ2ñ4f67ú9þ<>9@AßBÀCpB¼Aà?ç=æ;p9 6É4±2ë1t/‹-i)è%Ü! hU¯¿¾ ߈Ë_R«¿r2ÝÒoŠN듃›—RAa›ÇAD@OVO8. ÿÁÿŠÿÿ¬ÿÝÿôÿ·ÿ°ÿÖÐæWçH w D± Ãâ{-q!9$p'§*",)-5.B.ö/ð0£1A1K180ª03/d.‡-_,I*ñ)°'æ%Ò#Q Ï“bêø'qÈÀ ¸"¿$œ&G'Ø)+V-g/ˆ13“56š77w6‰5p3‚1Ÿ/ž-Ê,*˜(Ý'&$’!¥Ýõ#¥É ÿ ’é§\  üîæÇÔXtT½—‘•uR7Dnž½8;=WcV3"ÿÝÿµÿ–ÿ›ÿµÿÜÿéÿöÿä4ÄÙÿ0ù8 Y ùÕ^ W} €|‹";#Ù%/%¡&D&`&m& %¯% $«$#P"_!x _^óTL1?Z6*/Tl5Í$¹6Î!Š#l%]'(Ä)Ü*ú+3+K*i)`'Ù&s%#î"§!`g*,ãÓ ´ µh+ÕQ2 ñå¶’³fw>þǽ¿¥yE-4\’›6EELF8$"ÿåÿ´ÿÿ“ÿ«ÿÒÿíÿëÿÆÿ¹ÿÐ4°D¦ ‰•ú "  j k\ÏÆ?±¬`<)FA•í2Lbk}ƒ–s0¯ ¢ D { ¼ ¿ Ô ž y ¶ Ù gÉ›1ïº_.qš÷>äÀ3ˆ[¢ Z ~ ßzß<{ÈCAb…„³óFeEúÏ¿ÈÅš])1Zrvw*CE9$ÿæÿ³ÿ—ÿ ÿ²ÿÑÿéÿïÿèÿßÿâÿú=” \Çó+Ê[Ž S ê ° õ ‚MLŠêoĬ}l u ˆ ³ à  !10];ÚßèYß¡FÞ à Ú  WÓWØh“¥\¥Ã÷°N€ – ½ ÎÝ7€x œjÜ€””•dNgµ DW-÷ÍÑåäÁŠS119LYZW $54" ÿ÷ÿÕÿ´ÿ¨ÿ«ÿÆÿéÿõÿßÿ»ÿµÿºÿ­ÿ¬ÿºÿÝ&EF(ÇEª<$T d e Ï  ¹ g ¥ÒÐÚþ1è_ÐYß‹@!/a¬â<¢HæÔÖ` ­  ï 4 ~ 0 Ù ó  ±=ÊiˆÝŸaêp)9[f];=xÓ7.ßÕíòÀŠ^CA:?NSFÿñ+-! ÿøÿÛÿÀÿ±ÿ¿ÿâÿùÿàÿÃÿÍÿìÿýÿøS}{E'7²VÌhàdá1s{—`bÈ0¤5Èv ëĵ…†ˆŽ”§Ï.‚×ȲšHÎÞ¯GemL$cÞêF$§›Qa¼¯XI@h°õöææô  ô™|i_H<HM7ÿêÿèÿú+2" ÿ÷ÿúÿýÿéÿÄÿ¶ÿÏÿõÿÿÿòÿÞÿÔÿçÿþÿþÿóÿíÿðÿÙÿÿaÿhÿ¦ Ptƒ²â +G^‹’u1ËŽSÿ÷ÿÐÿÑÿì ÿìÿÂÿÿ{ÿ}ÿ«ÿÌ|øaÂ;‡®š¡n% …ÿ×ÿÕ]vIÿøÿ»ÿÂÿøNœQ>KU€ÇÿïâßêôÌ©‘‹†iJ@4ÿùÿêÿí75ÿóÿ÷ÿäÿÇÿÉÿè ÿùÿÓÿÕÿö#ÿÿ)S`G.Xxޤ­¬ª­ÀäùëÕâíß¾¢syœÁʸ§™ ¡’n@'-Pd€ªÊÒÍáå̧šrYJSeš–~Dÿ÷ÿÕÿè5‰¹¹„P49`s–ÔüñäàéðéÓ¸££œ}R4ÿøÿøÿôÿú '8=(ÿìÿôÿ÷ÿ×ÿÌÿë ÿøÿçÿæÿó (""-1%ÿûÿíÿëÿðÿïÿàÿÍÿµÿÄÿð>˜Á­{ys`VSEOt£ÄÊÄ®¥—‡i; 4944#ÿÜÿÊÿ²ÿyÿJÿ3ÿ@ÿDÿfÿ—ÿÔ '<-ÿùÿäÿõY‹œ˜wWC<Un èôíñöøòåÛÒ˾¦zG ÿ÷ ÿû #BBÿéÿàÿ÷ÿ÷ÿÍÿÎÿï  ÿóÿÞÿï)\Z2!K_U;ÿöÿâPÆJ‚kä—ygaML^…®ÆÍ¸¢ˆ{lI38LTSPD7)*ÿëÿ¿ÿ®ÿÂÿÔÿú&EO>-#5Z€–’‡y|tdRZt¬òòìôóÛËÃľ­ˆX-  ÿýÿ÷ÿüÿý(ÿ÷ÿçÿð ÿýÿçÿçÿû)!ÿûÿè HieO3/:GI3 *6.ÿùÿûq÷Xp=$úÈœ}oYXd ³½°„zjD**>JNMED;2ÿÙÿ¬ÿ ÿ¼ÿÓÿõ-,(0Da{ŠŒ’’–Œo]`¡Çï ýëàÖ̽°˜zU/ # ÿõÿöÿÿÿ÷ÿñÿôÿþÿýÿ÷ÿú &/ÿ÷ÿì.I+*]ƒtL+)702JdqcE+4’>FR7ݲ•yu|Ž—š •„zfA'%;N^hhogX3ÿþÿÙÿÕÿïÿý *IXZZ_k„¦··šp`z¯ÍÞëø'(Ú¶µ¿¸~Y8#  (ÿùÿõÿúÿ÷ÿòÿìÿîÿø "7+ ÿöÿûCH:4:Kc}~bCEN>07HSYaaMV‰Ò ?=0Ý´‚ƒŽŠ‘Šzl[@35Kdv{ncM8ÿöÿâÿæÿþ !&*JXao„¢¶Á·ª˜†‹¥ÉÛçý,+䮌›ˆa>$  (ÿûÿùÿûÿýÿùÿõÿü &-% $G`j[D9Lee]gfM0$*(9[€™²Îàñ$-ôÇŠ‰”‹‰yj]ONTf|…‚hI) ÿöÿîÿñ '0("-DQg‰­ÔÜȦ—œ§·¾ÅËÞ #$ýÓ¢vaabH(  '!ÿûÿ÷ÿþ ÿþÿõÿÿ!&-/)1VsuaIKWVT\\K<@I>;Fc{™¼×äî  ,ùͦ”’œ˜“–—“ˆ~uoopu~|qX;$ÿþ !!/H_y”ªÀ°Ÿ§½ÊÌ¿ºÄâû·ŠgD.   &'#ÿú ÿúÿ÷)*$(.53$4Wpr`RHACGLFG\kaM<DZ‹Âí"ð̬ Ÿ¨§¤£¢ œ–…€~}zrgXH=>:% ÿÿ $3No‰˜˜š™— ¼Ï˵¡ž¬Çèá®jJ=%ÿúÿôÿû!(   ÜŽà þ ú/ät©[j ™_J)îÄÎ C¢¿ÜßÒ4—ØúBø`¥@·!~"Ò"í#("J!.QÞª¬@ ú 3 ” Æ Î ù   ÷ þ  [ œ Ï þ ö Î \ e ’ õ L   Ø*>ôûX¥žx§µ>µ5áñxßQÏ ÂŒP&øãvл–|“é;§ ù    Ï"#ʆzH¿‚QCsMαª@žÞi»j¶ÖÑÈ9Q;þ붕Ζ{iz– Œ ± Þ äÐÙe<Û'  > ’ ¯ ´ é   % ' # 1 V ‰ º Ì Ø © V  É Ö þ > ] o u £ Ç t KÊt=íXóþáùÛóžFìSœª´ÎjÞè¹ÜÙŸš³Ëêáx? õORí 188Ñxå|­”)­ëaHÂHÁ…ìGsŒå Ä i óRhmáÖÆœtŽ}ZùŠˆ  Ò  •  Q x È ÿ % D U f  ° Õ è Ï ´ t  Ó ­ Ä ê  * '  + £ — Ë!6z—ÁRN£ìÔ¸sJù‚÷y â÷úéLgLh ò Ñ„mªé·k¼Ê˜ƒDv£P„Þƒšâ³£çwÿcL¤·LÌ—ûfïÍhòÇH¢Iô£)ØyÃ_¬’ ] 3 ÖѶ‘Ù  o ¶ è  / J e • © ¢ q E Ì © ž ¾ â    õ ™ ò º ¢Ê,tÓ`ҽDZE}áHš,©|yõ¶Dínû¡~ðîy ýÇó¤ôÿoé]5æ>^[obÿ4¨øk" o”Ï y›Ÿéоm@¤…Úu¹sS<W [ Æ ˜  ÄÔ  ? { ¹ ò ) J a j … ˆ { L  å ¥ ‚ t ‰ › ® ¿ ¹ « ‡  9 · ' ½ cŻƼ1bJW â ‘ v  ?ɺ͋}#àW;VSK9n,ƒ4áŽ}Ð-ðfjVÅQL$i¨©™ÍìäzäôÔïÄS!4`®êä¶Ì¶«àÆ ± i O ²IW Õ  * }  Ì  ñ VÍ‘zœ©»ÅÞ  6 e  ‰ … – ˜ † m F  # E e  } v Núç À y ˜ Ä8? â_ ‘ ý ; Ê / ˆ 2 © h2@ÀÒ™ô‹üO‚ò ç+RL=•¥hW¹÷[Hö¯—xêWUdDŠ'ضÄSæ à ¥ ! € L 8 ` { € ~ : Ë S íôç /Æ}SF! õ"LhwŠ¢¼ÒÚ×ÔÎó4š  L } p ` 'Ú¨“Ëú ƒ ( Ý Â óŸí< Y  ÿ ^ þ : q â + ¨ & "SávËÖ‡Z ¬6èY­1£i4¼SÒQpe€ƒ2ùï¶^R Wx_`.¡ª#ï%I4‡¾ à I ‹ 0 "Ó™|pq‡–ŠjR>P'Áf×m6êë¼Õïñï÷>m‘¨¶Ïê=«Fíg¾½¶z6ý×è÷F§ 0   * ö { ­ Y  — 9   3 Y ‘ ¶ ø ; Ì j lšÑÔ>Õ€3õ™3ƒ½Ä ”wq‡É>R$g}‡ ~ * ;wø±5ãoÄ·¾À ø “ H Æ Þ Á Ç ¬lœåNúüï6@DQ[†]è"fÝg?9:K[]I89W}ªÌãò #oÌd²9m’h(â±ÀÜ:£ã r Ç × ¦ — ‹ z w u ’ ¾ ý + d Ÿ ö ? Ê „ f;ÞM³EÊu-Ñ@Èx웆©Ä¨SܨQ ¹ ó  ° ¢ ] >:O{Ý Í ´ Ý / Ø @×’ŠŒ{biNŒ(Qu©¿±–xqtŽ`æ7žJ3@Zpy~oVC>Ph„–£­½Éò‚þ“&ƒÍ¼ƒA R™#®?Ã+¨ÕÁ„uˆœÀÚ G – Ø v Ç  = å g Ü  U ®8Ät-ê£7³+ t  ï ê È ¡ † ¢ | ô 1 „ = ' Š  z Û Ì ÿ Z ”ÙC¸i!êÓÈ~ QšäÀ±u´Å†Aë©{^-Ïo*(=KNA6)-?IWlŠ£ÅßgÖR²þÑ•~¦Õ=¤5Ùs C.ÿ_×aÎ  = X { ¶  ^ ‰ € V Y « 2 — ß  B s Ê + È„>± ë ` -  / ! ! A [ } 8 ™ Ø V *  K t – dÿfë„!Ø]4ú¥&\}Å>Îàë)ÞŽ&ʉX@ 0;5-óÕÿ¸·¶»ÃÍÍÚô!Ls¥Âî)[…_<<_x¨Î+±T÷LT<F³Z1ôiª®Âñ J ¢ â á « Ž ¸ 7 Ê < q b Y U R “  š æ > Õ ¤ … ™ § Î  , 0 Î 4•@$ôд’y*­—=൪¥ˆ3ÕF £ƒ~|aUXiiTå®qu‰‡‹ª¿À›o<ÿþÿýÿýÿíÿàÿÚÿÜÿàÿÒÿÙÿö3y·åõþû  T›ÚíÔº¿rÞ,.xùäñÛ‚Áõa¸  I E ù   Y ` p a ; * @ } œ b $óÐâ C x c %˜|&øµ|K!¼J¸6ÔpOfvKÓC¾MGzÛ í‰/ñÊÕß"TŠÙ@¶µËɽL ׺²“kJ820 3c±¬œm; ÛǰÍX´Ê¢;Û¶ÊLsq˜Ý™šyo¬øPÀ'¥kB‚ s ¿  ò ² } f j´fPcµÓ•+|ÜKÐpý®w_U™špV_{YèUäÈÑezSßk ÿ½ÿÌÿõy©AÑ\ÜsÕ  !ï°`ë½–hA þòÚ¹›„xhU â~š%ÿÔÿ‚ÿwÿÿÒBœÅ›eÿêÿÙÿÅÿêƒãbÞuÀrþkµþj&ª¢~½Há L … _ 4ç›oqþâÚßèÚÎyO¬_Û^*+‹æ"AI¿°+³Dý„ñy…ÌÐÌȱ{?ó à f è ) t ˜ à » ¦ Y ˜  ª K Ô±•z^ÇNÞcílêV¸qâPëƒkv°ÜðÔ‰!ÿ®ÿÿ²/¬ "+UÏu1Ï1[§m1~šè_q™kLôåü0(óÅOõÙ8ÏQ!1 áƒOp§ o(;Ô¡nû#=,2\Ü^5%3 )  É ‹ L Dk¦Ð°xég—Ë–O¢Ý XÛaÔ˜_ ä D _ ƒ œ »í#uÇ4¯&”ÕôBÇ_`‰´¸Zÿ»ÿ'þÂþýÿ’H«°‰¿gH Rz¢q°ý„^r{`GCgÏÎ˸y$ĈCåfæbÅwp­ÑÒ¬|]{Ïû·Â:¤ªNš ¦ Z 1 ø È —wjR Ù‡`A“ä¢ú·jµ×}…^]¢óŒ5ð°!eL6 ãÔÌí _ Ê 7 ¦ ¯ ‚ñMÙ€Ônqej‚ÿ‚ÿÿ<ÿð„˲e%o?6²Ù OÁ,a‡É*¡BOXdŽ@??#Ø~ ã«] €#ù9'úÎÍñ;aŸ²lŠni V ô " :L¤þ<+ú Z*ùæ.ª0 "$& 'Y(n(ç)Š)µ)ä)f(½'~&/$Ù#¥"Ô"!µ!i!B!% » $ÿ­iÇsĦÑ$A.z – i<~ô&z*Ú>&ÿ=ÿ,ÿln$ÿòI ³:@”ûLpfsÅC¬ó#>g™”•xB Ú¾Ÿ`+3B5¨ ¨Ö}]`Ö Ãb†Zûàì0ùb‚ßs N!"E#v%&­(*“,¨.×0³2v3w4E4~4ê4è4å453S1í0€/(-ô-7,‹,N,,,3,+¯*Ô)é(ª'‚&($Ö#;!k”؆}ŠwØ ¬2œ ý W¯€ì%ÿÿÿ\ÿ¸D›9WêˆÇÌég`*3ŽýsÈï êäìÙÁ¯¯ÎÓ˜XHj•»º·¨ýžˆ'í|7 |ÍßH¼I)!â$‘&E'‹'ñ(T(Ï)œ*Ø+ý-q.ù0³2a45Ó79j;<—=~>.>R>£>>ª>=J;é:s97ã756•6c636>6e6W65`4Ž3w2‚1j0e.ò-B+,)'%b#×": t±]¨É©g ¼ Œ¡#.nÿÓÿJÿGÿå4G ÿï7ÈM†n4OjKé p‚··ÿõÿó9}šk2*j½&O¹NvÌP\À H þD&ªÑ² …#­&÷*c-2/É1/2F2§33Ê4ä6p7Ù9^:ó±=Ã<Õ<:Û9}7Ž5‡3K1@/(,ê*±(¡&ž$½"Uµ$*F x " iSBèE ÿú(–{>QæU7Ëœ”›ŸfY”ʼÿuÿ|ÿ•ÿ¡ÿ²ÿÅÿá ÿõÿÚÿìS¹hí x~j ‚ G¤g— #^&Ù*t.;1·57¤: ;Ÿ<ì=–>0?@CAÏCD\EŸFÛH IPJŒLMáOÎQÂS T"TƒU URUÚUÀUIT R©QXP\OéOyO^OGOCOWONwMKLJ’I@H FõEÄDtBÐA(?@=Ž;Q8ª5—2¦/÷-¤+D(Æ%j!°;¦w² ã +ñyRôª]‚'ÿç:³Ô•4ÿéÿò ÿü H¬êçÿ ÿ«ÿÇÿÛÿñ ,EUªäëH~ ú âkÕ'áÕ#g&Æ*-©1­5»9 <É?¹AëDHEÿG–H‰IMJ K;L~M{NRO,P.Q@R¢S÷U¾WÊYý\1]¸^×_E_á`@`â`ß`w_J^\Ô[û[¬[_[d[u[„[ [6Z–Y4ÿôÿÉÿÆÿòÿÿÿâ5Wÿ¢ÿ¡ÿ¼ÿÓnê*ØÍdÌÚ ê ý]“³ Ž$q(™,¿0Á4r7è;}?‹C°G¯KNQQ S÷V…Y$Z÷\Š]C]Ü^J_ _ä`‡aIb/cZdšeÕfÒgÓij\k¬lulçlämm"m‚m–m[l§kßk4jºjºjÆk0k¦l+l°lÙlõlfk¯jii8g¹fNd„b…`X^'\j[6ZX«VeSÔP’M¡J FMB=í9æ6C27-Ä(k"ˆ%µYÔ_ :ÑÈà“šÿöÿÇ 4<ÿÌÿåÿù;\RMl€Ñ(Ûk¬0w z R`pšP ó%¢*D.´3$7>;6>ùBÒF°J»N€RUXJ[]ö`;bqcÙe!eÁfOf¼gehhºibj"jûkàl¤m0m¹noYp:p®pÔp™pmpipµpòpêpƒoýooLo~oÅp^pùq“r$rlr¸r~r"q;p_o#mõl_j«h¨f‘d«ca¸`E^q\{YþW¾T›Q L—HC˜?’;x7M2',5& –("o Éuºõ{^šÿæÿÄÿï4 ÿÒÿÙÿý 0Fy|œŸà"ÿä° œ g˜: Ë%¼*Ç/ß4ÿ9—=ÞA›EsI-MP·TVðY½\]_PaädAeÛgfhViLiäjrjêkll¶mEmÖnVnÜo5o\o”ppµqbq»qÎqˆq=q,q~qáqÿqÂq^qpÞq!q{rr³s>s¾sút8tsÔs*rqpo9mõlpjØi'gfdobàab_¿^T\YTU]Q2LH7Cø@;‰6]0*%G kƒ/ å¤(˜¡*Jÿô#ÿöÿãÿê /7C ¨ À £ Ê ø ø IuªÙ¤$Û)Æ/4Ã:f?åDH°L=P(SÂW\Z7\»^ÄacMe¬g‡i iÿkkþlåm‰nn}näo=ooüp_p¸qqQqCqHq™r*rÃs!s@srÑrÍs4s«sØs¨sVs rís,sytt›u(u­uçvuÝu¦u tkstrsqIp-o mìlÌk¾j•iIgåf›eId7bv`c]Y«UsQKLüI D¸@ :µ4þ/ )Ž$Ìñ° áý­gMÚÿêÿåÿà ÿìÿÕÿî,6BJwŒSY…˜Á3— %$Å)j.§3´95?0DçJ3NeR`U®Yt\{_!`Âb:cue*fÅh3ii«jjßk»lŽm1mÁnnZn™nëo^oÝpkq qnqqqzqÞrsGsÊtt sñsýtttátýt­tEsÝsœsªs¿tt€tóuhuŠuŠut»sÿs>r,qoËn¡mºlêlgl k‹jÌiµh¢gxf’eEcÃai_[ÓX„T²QMI'D„?§:4+.Z),#ú(G9 « ôd AÿÝÿâ $<UïTx+OwÇ"%©).~358=ÚC£IÊOWTKX\_)b dÜf~fÿg¤h-iiåj]jxjŠj¸k kÀlWlåmhmÈnnaníoÄp¥q†rorèrïrës^t$téupuÀu°u†u|uãv*N,•0I429=…B•GêM{S$W÷\D_‚ceËhƒiÂjtj'j4j'j;>òC–H LìRW2\+`8dfËiÔkÉm›nn(mumlokÁjþj;i i/hÎh4gµgFgKgggÿh„iˆj¯l:mÀoRqr4rÇrøs‘tRuu¹v>vivkvhvÌw vÿvnuÅtötAsÁsRsrèrºrŸr#qlpGo3mölÒkxiåhTfÇeãe=ede†f$fÊg˜h^hþi«iÛiæiPhªgªfÔe¶dºbó`î]ÒZÃV¯R¼MwGµA:ô4O- %Ç‚bÆr ›-/á¤`ÿøÿþ:u9ó:™:Ê:ª:Ì;_<®=¡? BE²I0MSQ‡UúZ{^›b‘e¾hùk:mqnuo]o%nÝmßlók³j]ihg8fte£dŠc‹bŸbabNccµdëf gŒijðmnÂoÖpkqLrFs\tTu:u»v v4v³vívävQu³tát#swrØrKqÈq)p¡on+l?jbhfÍe#cAa_Å^÷^ž_Z_üab cfd¾fghˆiUiWi2h•h"g…gfebÓ`f\øYñU¥PÍJ²Dä>T7 0[(Æ!µ+É ¾ví¸âÞ8MqE5EÚEúEéFFG¸HŸJ‚LÔPS*VÉZ¸^¯bde€hkm°oepÕqq[pŸoÑn.lujeh_f—ecÄb…aL_Õ^“]O\ì\Ø]º^ _ç`ÚbUÑUÎV½W¥XÊYlZ¦\^_aÿdÔfôhÒk mŽpRr°t½uÒvÀww­wÀwšvÝv0u0t4­ H¸Âb/c)cƒcËcÏcÒddoe;eõg%hvj/lm¸nñoÓq+rrr/qÑpKnÅkÕhjdE`q\äYƒVoSPDM»LJŒI‘HGG»GŠH%H¬I}IÖKLÝPS:VþZl^aëeõj4mÖq sHuwv£wÝx xwFvŸuŽtœs!q­oCl„høe¶aä]ÁYVUQ&M,J GE6CBˆBUCÍE^GÌJL…O Q¢TV¦YP\^Èamd)f‰hÂjul_m{nhn2möl®k¨i6fŽb]6WQoJ¤CI;#3G+ˆ#y|÷* Rúƒ©#h¸iÉjIjºjÎj×jëk(k›kßlmnàp qq¨qürÃrórÅqp‰n\lhRdJ_Æ[žWÉTP‡LÂI¿G#E‰CõBÍA8@K?Á@.@¤A‹AîC1DèH KJOeSQW´\+`ëeèj\n{qqtyv;wãx7xgw±w,vus1q^nSjãf”b«^8Y\TLO[K!GDA@?~=]<¢E<â;9Ð99Y9È:·;<==¿@­C´GåL PÿUþ[ta!fgkfoCs?u³wèxtxáxAwêvÎuºs…qGmiod__ÆZ§UOaI±E@È>;Œ:8,7w728i9²;¶=b?–BEGÏJžM>P/SIW[(_Tc5f|iÐl[nópZqŽqrqRp4o–mWjDeŽas\"V¡O‡H(?¸7'.Õ&Ø EÑ 4¦nØoÆpWpàq$qkqq®qÑqØrMsHtEtÔtÆtØtEsÆr,p>mI;Ý:<8w6ã4ã3œ2Õ3&3ƒ4A4f5M6™9p[96§4&31k0ÿ0ð2<3Ÿ5˜7%9,;>oA`DlG$J M(Q*U¿ZÆ_|c•g“j»np4rQrós;rr~q,okth3cÃ_sYNRžJLAô9R0ä)(!~õ2O ¶ppÏqRqÏrr|r±rÄrÜrÿsŠtƒuUu»uguUtOs$p’mÁiÝf8aÔ]5X'SNeIÕFBH?.;Ý9F6ù5_3©2?0‰/‹//J/}/â/Ç0h1o3ô6V:q>ÔDèK&R&Y_£fkaqtÇxyyÔy?y xw2tµrmHhaX[TTMhF“?š9í4€1Y.«-Ê,x,d,†-Ê/%0ì2Q45Ý8T:ì=Ù@…CFUJDNáTWYœ^ƒcªEGLáTL[‡b»io†síwÃxïyÙy4y wùwt§rmg¬`™YÍRuJÿCÇ5Ë-á%Ä_AqÙr™sssøtrt¤t}t]t›uu¾uîuátõt^rLo¾keföa\_VÌQKiE³@ê623ë1T/R-k,U+c*ý*t*-)õ)Ú)•)x)Q)¿*>+ª,¢/ž3P9œ@GøOœW^_.f2mmrivÉx82.€+D*(Õ(ª(W(x(’(Þ)*)w)£)â)æ*Æ,.¢0õ4ž8i=ÔCƒJLQ3Wê^Kc¥i8m,pØrms«sšts¡r“p×oòn'kügÁc\ÍW P{IeA¨9—2¹,'q¤r}s-sÄt*t¿tït¨t[t¹u ut8s’qÎplh{b½]V‘PIÝC¸>†9M5š270\.œ-,%+)ü)¡)¦**[*k*Z*,* ***+)ò)ã)Q*³,Ø2@8@GñP`X½`–hÁnÎtCvxtx#x.wv3t qÑmÙi¬cã^$W?PH©A8:ø4õ1*-Â,Z*ð*‘* )ð)Ò)Ò)Ï)­)s)(f(_(°*f,/D27h83Ï0»-ó,¸+˜+*B)¨)))p*,*œ*½*¼*§*À*é+%+*š*))ó+‰0v5ä=±EMM¯Uù^fqlûrìu¸xxxzw}v¥tirn>jae_ÉY4RKJëC=*73./®.8,Ê,d+Ó+“+M+*®*)t(‡'J&Ž&&ý(*®-S1´6'Š831.l+7'Þ&$¯$$N$©$Ú%}&A'_(})—*š+j,O,Û-s-I,Ï+«*Š)o'ò'æ($+j/S5ÿ<ŒDŽL‘Tü]µe0lVp®tru«w vûw;v/t÷rNoÆk½g¶aÜ[zTL‰EÂ?:°6¹5M44c4Ô5¬6q6`64P2'/,,G)Ó'‡&r%s%÷&r(¦*´/ 3Ð:ÛB)JVRTY¢`Èf^lolris3t s{rªq•qBpËoÔnTmGkdie˜aê^r[;ll®mAn6nüo[oho¸oÜp†o–mŽi¡f}aÇ\WUˆO6H4@]982ÿ.¯*>'X$a"ú!Ò!ß!É"S"»#´$â&m'Ü)@*¥+Ì--¦.7-À,î+y*5)'g'&Ô)q,©2¥8„@#G×PTY`÷h†mtqÉsunuÓvƒvuzsžqån kWf`"XìQÇKD\?¤;`9¯8089::ö:ê:˜8g5¢1Ñ.2+(?&¤%$ó$Û&l'´+_/™6f=gE¥MÑU£]9cviìnqšrªsÜslr—q|qCq%p‘oŸomÎl6i¹fódUb j×krlm.n nfnxooIo¿nJkågnc”^)X!Q JƒC;¨4À.ø+E'L$Í"T!9 1 9 : è!n"›$ %å'—)@*û,d-Õ.v.÷.Z-f+ò*Í)×((&'è* ,£1×7 >$E[MV]ÌeTj‡o3qusÉtˆudu"tósÁr·pMmèihdC]ŒVáPcIøEA@ð>é=<î==Ç>>f=ü;Œ8r4/à,>(ü'%/$½$Z%v&!),°39}A„I’QœY[`g!kþpq¡sWs4rqvq?q5p×p+o®n³mŠk²i„g€eßioiøj¥kÑlÑm:m]n/nqn±l¾je `oZ>S˜L7El>€6/ø*©'¬$V"m ™ÖåÙôÑ }!Þ#‘%®'‘)e+Z,÷.”/L/Ü/I.a-,+s*Š*r*S,.2–7O>DèL·T©\cIhŒmgp rÀsµt‡tL; 6S1”-d)Ã'¦%|$Å$'$Ñ$á')ö/¹5·=EnM’UZ\rdi·nopyrÊs r¯qqbqcq@pâpƒoÀnùm®lj€iqhahÂilj kÁlDl€m~m¾mÖk†h–c(]ÕVøOëHkAY:o2ž,ˆ'À%{"ã!¡ kîô"  Ý"N$&4()é+ë-—/4/õ0”0//n.w-ä-Ö-¯.3.‚09269:ÒALG·NÎUî\ch l²olr9s0sÐs9rårq“pVoalqh¢b¹\ŒVoPéL÷IEFùDbCB>BRB‡B*A’?<7s2’."*e(@&%O$›$ü$¾&c(–-ž2î:UAÚIëQŽXÙ`Ðglaor.ss?r^r'r r qÉqUpoÐn¿mCkñkg˜gÏhqiªjÞkak¤lÆmmj}gKa\[VSÚLzDæ=‰6”.Ý)C$ý#d!v Ä Ô([ o!I"È$˜&º(Ž*\,r.5/Ó0‹1#0È0/R/"/¿0_1z2&3Ö5²9¤>.DVJAP˜Vù\õbøgªlnÇq’r‡srIqºp·oãn©mèkƒhRbè\éVàQ NJñHêFIDŸCwCQCkCBf?ò=8•3¢/+-(õ&½%Û%%$$º%õ'+Ó0b7K>}F•N$U¦]éd¾j¦nqåsgt6sœsxsBs[s-ržq´qp4nßm·mgRgeh iNj™k+klÁmmjPfï`®Z8RfJêCZ;¾4½-6($E#.!Î!†! ú Š ä!à"µ$%¼'«)Z+-.È0B0Ý1e10J/Ñ0 1S2Ÿ4H5V7@9=ŸBJHM‡SX¶^ cxgÈkÒnUpÿq÷rq¹pÿo«n|mli¾fÈaž[¯UP,LŸI¯GãEUC†B!AÇAÕA’@Ý>Ž;þ7ð3W.ð+F)'&%% $¡%«&á*s.54;UCrJ÷R Zôb#hlÀqAsitèt¨t©t\tŽtbs±r qúq*oànÁn!gggÔi'j“kDkºm*mm€jfù`€Y¹Q¥J Bo:—3‹,,'†$#„"±"Ð"ž"”"_"}"Â#Š$B%&ã(œ*6+æ-Ó/\0ž11–1^0Š030·2s4(6+79œ<4@wE JO•T‡Y•^RcgjÅmVp qTrqKpƒomôl~kthýeï`±Z¸TuNËKHFMCÌAï@S?É?Ô?²?<Ù:6ä2¨.…+ (ñ&ÿ& $Ù$o#Û$«%”( +¯1i7å@ G”OqWÕ_Uf@k.p]s!u=uPuvuuuu\t”skrÏr pðoáoFfäfÞg¿i*jÆk·ldmýnXn*jøg^`ÜYÿQÚJ9B:ª3°,‘(S%6$ê$v$Ó$¹$±$°$â% %Ž&#'*(4)£+(,Î./Ë0ß1Q1Ô1À10ç1Ç3ú6 8k:#<§?¿DCIN0RÐW[o_…c¹gEj©mo½qqáqNp³opn€mlihf>`êZýTŠNmIñFNDAE?,=@A&D¢IKNOS W1Z{]ßa4dõhNkWmdoˆpqtq7pæoØnímˆl•jAgvbh\ºVOŸJbEõBñ?<Û:"87¿7\6„53£1W.…+…(Ö'%°$ó#Ó#!"r"½"ï$Ð&€+!0à8ô@~H•PÎX˜`Nf€lÊpysvsötLsûtªtÛtrìrqr q6ploêeüeÜfîhƒj‚lmnæon}jæg#`‹YrQ!IjAê9÷3Y,ç)t&Õ&ß&å'œ'¸'É((_(t(º)D**Ž+n,Ä.J/x0h1ƒ2J2Þ32¶3‡5€9=:æ7h513‚2¹1®0›/›.+è)‡'W%Û$Â$4#R"¸"%"5" #J$`(-Ó5½=.EJMaU9]*cÍjn‰qÓrorÈrqsp­p$oÍeÀe‘f¨h6jGkøm5oonMjsf~_ÇX‹P'H\@Ú8Ô2c,\)n'"']'ž(‚(Ë(ý)g)¿)Í)õ*n++q,--‚.ø/Û01®2Ÿ3*33`4¸7<;y?cC™GFK‰PhUÿ\`ÐdeŸghiDkìn]pFFAo<8¤4{1©/M.:-,b+º*¸):'x%Û$½#ï#z"¹")!·!¬!>!õ"w&*Þ2‹9ÖAöIçQÊYç`öhl•pEq qjqqàraq×pâpp•pMp oêe¼e‰f™h jkÛm4onímèi«ei^„W*N¸FÍ?16þ0£*÷(&w&Î'+(+(¢))•**#*F*¶+W+¤,Y-«//®001C2A2µ33%4á7¼Ÿ:5U1c-{*è(¡'„&%³$j#4"9!³!P! ±ª`âò"±&“-¤4Ç=/E0M3Un\Èd]iKmgn@nrmµnZnïnn!n4n·o'o¨p.d¿dËfgWi[kŒmNonïlég^b=ZìS?JœBR:T1”+4&$g"©"ò#@$@$Ø%’&‹'k'ó([))°*'*Ã+¾,¥- -f.3//a00ƒ2ö6b;È@ÜFœKýRY_äf¤k:nòp^qìr…scsÖt:tPttgt(sÅs¥sMrêqËp½n^k°gšc¨^Y/S"MG\Aú=78C3ì/|,>)N'º&\%y$"å!å!Z å š ¹hZ „…"2&- 4-<›D£L¯Tö\NcÕh©l´m|mŸlÏmUm×mzmmFmþn©obpaÌb(cÄe|gÝjslxnþnIkúeý`YQGHœ@F8B/o)$"‘ ã!!4""‚#8$"%%³&L''÷(®)h*Z+%+•+÷,©-}-Þ.Ú/Ò2Ð6²món®TØVZ]£a½eïhål~k«h‹a$ZºRÏJËB@9Ô1Ð(ó"ä’®gy7¦07- Y!ƒ"¿#í%&&‰'´(Å)?)z)q)€)í* +™-g1Ù75>D0JlPÅW1^ cÕi7l`opqmq¾qÂqvqwqÜrs snsys„s©t"tmt sçspûnÑk»h·eaÂ]yXíSLíF^@:y4ñ0˜,l)s&B$b"ü"! ! ¤ ~ 8 7  ² °#E' .4ê=E=M|U¾]digmhnnHmImcmLlck²kÐl›mm¸nfNfPöU@YÔ^Åc¡g kÎEGKÈRNX_Jd¹iÉl•nèo£pÍqqpÅp¬pòqsrrŒrÁrÖrÜs&sKsnrÔrpMnbkÔi{fÃdT`Ñ\öWnQyJÆDc>i8l3j.“*þ'>%#V"¸!§ ÿ  RöêÏ { „#,'$.;5=fEºN(Vw]½elj_n_ooCn:n(m¼l|k‹kŒlKlœmm­G³KP(U½[–a)eiñjg´`ZER5J6A®9;12(t"V“Z4¥~ Ê#g ï"ˆ$%x&¶(2)L*$*`*¥**)ó)õ+Ö-ð2Ç8f?¢FTM S»Yñ`leqjln˜oi&gÌaX[xSyK©C4:Ï2Ã*##àŸç›- ­‚ö S!ó#§%K&À()“*§+c+‚+Í+³+*ÿ+)-Y/Å4½:@AHGÿNÄU[…a¯f+j2l1nn·o”o©oqo nøo6oZoÐpqHq¥qËrrfrërÕrsqoJmNkîj‡iaf¸ck]æXQ;J½DV=Þ82@-¬(õ&.$0#•"a!¢! Ý U ª 2 "ö'E.È5Û>`G'OúXr_Ág´l·pvp¾q oÛo=mák©ji¯jWjFjwjÝ7ô<ÔCÃKyScZ£`fjh g¿aý\…T˜LýDŸÐGÎPÓYY`©hÀmÎqfq{qÜp–o¥m­jÑhªhh’hBhVh¨0>5Ö=›F5O W!]Mdvg gÙc^VROFâ>–6~.4'â!òa²=ø¤ !@" $7%÷'®)'*€,B-v.)..-â-K-¤.V154`9«?E¹LiS%Y×_edâhDklmóHQ)Y°`ùi%n4q©q‘rp’olHh®e×dŠdcÌc­cØ(¬.þ7˜AJÐSÆZÃb«fhd_ W÷QI@è8É0¤*E#ÿ!.µOî ó"«$%°'w)'*Œ+Ñ-Ž.Ç//b/.’-ñ.ˆ/n2—6;šAG¡NrUS\,ažfÉi¸lKmmãmên#n mÚm¯mŸmónRo&pq?rSsHtPtåuYu#u tr¾qoÏnm¾kŸid3^ÎXQ»K;DÕ>e7\1e+Ø(×&£& $Ì#é#<"‡!H Jvðá"è'H.ç6>ÝHQ@YÇa iIn_q¾qƒrponjjµfebâ`Ý`\^ó^—^š"¶)¦2Ù<ÐGP¼X}`ýe,h·GÜPíYg`žhÍmÈqp¬q>o4lig¬b­^o[eYëW©VëVž*$Â.8ÚCMÑVO_adVh‘f¤cX\ UæNXFU>6>/™(m$J!°!è!H!ã"º$k&'È)+,_-Š.ñ011<0¥/Ñ/.01G4Å8•>*CƒIôP°Wµ^üdœiykÅmínhonânmÿmžm’m˜nnjo4p q4r…s´t³u,uÃu˜u@t r¬qo­nOm-k2i.e`2YÒTMêG˜@ñ9Æ3º.X+C(€'?%Á$Í#Ú"ð!¡ ›’ÜÈ"Ñ' .†5Ã>G–P‚Xò`$hDm!pJo¹pCmÑj:dx^ÔYãUÑSSP7ONgz!x+y5Ï@K'T<]°cPh’g°e!^1XtQI5@ø902V*Å%û"¯"s!±"Z"ü$ƒ&"'ú)+,p-Ÿ.Ô/Å0ñ1N0ì0:/ž01Ö5m9@>»CýJDPÅW¢^âd›iŽkØmÔn,nénÙnmùm~momšnq8rts™t€têuuVtás¯rq#oÈnKmk/i_eš`òZ®TõN§HAh:‡4È/k,(ò'o%ë%$&#E" !5  D Z#‘'Ä/ 6Z? GÌPqXÌ_ãg¹l;o2n^n¢kŠg`>Y÷TLOKpGpEÍDžÃ(h2·=HjR[éb5h|h£fÐ`F[SØL,Cí<;53-S'í#Û#"6"ü#e$´&P(7)Å+,Œ-º.¾/‡0±181 0z/Ë0£2+69÷?mD°JÑQWµ^­dXi€l nn1nÂn˜nTmÓm\mFminn—oapq rLsstPt³uEu5täsïs&qåpqnÁmŒkÄjfYa×[–UºO,HXA¤;%5»0E,‰)#'†&%|$›#Â"¼!Û »!&$ª(Ó/ì7?™HPƒXÐ_Ñg^k‡nUmImTiœd.\OUMNØH{C½>ä<Ä:ý_³& 0:¿EÇO×Yã`­g©hÁgÜb ]YVtO!F÷??7ÿ0%*d%{#Ö"˜#M#r$ˆ%ø'Æ)9*|+Þ,û-í.œ/•00/É//Ô1[599/>¢CäI÷P/V ]CbÕh6k8m”mðnˆnOn mÁmlm`mtmönoPp pørs(sõt^tðutèt7sªr}pûo2nl[j„f¥b[®UpN—G°A5; 5Ï0%,#(À'Y&%¡$â$$#2"r!B!½"¿&µ*ó1Ó8ðAVIŽQšY¿`lgZjÔmJkØk=f`GWŠOäH¹AO;5ü3m1O#°-8CBMºWö_1fÖhÜhícÞ_¶YR IðB:2Õ,Þ'&$‘"Ú#m#X$G%‚',(Š)Ã+ ,--Â.~.Ý//.r/ 0_47ù=tB§H»OU \:aÆg2jrm0mën»n‡nSmõmÉmënn–o*oðp¡qbr:rúsžtt¬tÚtÔt2s¯rŽqojnjl¸jÐfÌb7[¬UMìG,A ;5Æ/Õ+¡(g'O&!%²%$\#k"Ë!Ñ"¹$P(²-3Æ;CeK_S[aPg‘jGlXjkicf\R•J\B…:35,Ô)×'jJ!|*þ5p@KCU”]egÖie a€[TL¾DÑ=5£/Ÿ)T%É#A#Q##ß$È&('g(Ž)™*y+,4,±,Ù-->,Ý-r.v1©5D:?°EÐLCRøYŸ_6dœh#kplçnXnxnhmýmæn!nanìo…p8pÖqnr r¥s?sÀtit”t{sºsqëp’númÿl1j'eða(ZoSLlF@L::4².¶*¸'Ù'%ì%j$Ê$H#e#"®$H&n+)/Î6©>F_NU3\Ìbhg¦iJj¸he{^³V¬LÄD,;â2­+-$R! Ž 2(t2Ê=íHºS#Zûc,f©if c\ÜVðO`Gs?Œ8F2$+Q&Þ#q"õ"#s$%#&F'U((´)°*f*²*©*Ç+*ÿ+À,…/42l7™<¬BåIIOãVj\ a}ejiGkxm n(nJm³mqmm¸nNnåopp°qcr)rös“t@tPtsEr”q`oûnKm.kÈDêKXQµWl]aaeÄh°k lÍm~ml×l»lìm{nnžooµp’q”r’s;sßsÅsorvq³pvo mBkýiÍg{bë]‰V€OšIC?=Í7Q1‹,4)-&Ô&+%$$ #õ#z$"%(+085È=D³LVSYm_ìc¾fÂf$faè\¾SÖJ¼@£7u.•$£˜w!ù ‚ò="õ-7§BPLëUe]›b(fÎfeA`[ˆTüMðF1>ÿ8a1d+æ&‰$"š#-# #$7$ú%W%„%æ&7&}&}&-&&='=(*8,X0F4Ž:u@|GMYS+Xâ]¢bmeîipk@l­lÉlìlÔmmlm×n\n¿oZp0q+r r¾s\s2r¿q§p¿oƒnAl«ki9fvat[ÙUNœH[Bp<ˆ5´/í*í(N%÷%6$9#î#v#š#€$Á&P)Õ->2Ò8þ@”H O;VO[Úa¨dVf5drc~^jWåN Dš:¥14(.Ir~ 1  ¨6€)h3†=ýHªQYã_d¬eàeÍaš]ïWöQÇJzCM<^5Š/Û)Ø&R#æ#Á#!#U#š$$R$h$p$y$¼$Û$‹$X$M%(&/(:)ó-0•5Ù;iAÔH NSéY ^;bHfJhÇk kñlÁlòmOmžmûnbn¸o8oãpªqsqórxr@q¸p“o¢njm>k¢jmg»d`^ÿYlSMFç@¥:_3ž.<)•'0$Û$#I#J"ó#d#Ï%¸'À+Ê/ð6'<àD‚KËRYŠ^‘cUd‹eEb_`YÜR!GÁ>:4¨+&"`-7 èâÿm Ä–%Q.ú9MDM~V[ób˜e*fqcM`YZÙUNÆGŸ@O9‡3ž-(¦%>$R#M#H"÷"ò##"ù"Õ"ê# "õ"ì"Å#Y$J&,'¼*[- 1f6&/HQ,Wó_`ceüdRbL]fY%SLZDô>(7ÿ1f,o( &$S#â"ì"i""!ß!°!~!|!–!Ö!È"6"ñ$~%ç(!*7-®1w6Ö"EŒLÐTZ`—cöf6dQbÔ]°XKOpE¹:ø1V(:w K–i=Ð r¶x#×-©8-BL.Sê\ `ðete`dS_ÿ\­WPQ(IÆBÌ<55š06*È'‚%$'"×"!@ Ü • q ÇÏ ; ‰!!!²"¼#¸%€'L*G-O1À6_<)AóHONÙUZù_™dfâi¶kRlûm»nfn‰nµnÑoo[oÌoâoËonl»k·iÙgŽd/a\ûXSXNEHŠBcûFóNT…[Æ`úeÃf]fNb^SVÒNYC9#/%6ëg` <,öž åûÐ!Ä+5›@QIþSY®`çd+fdbs^eZdTUM§Fz@&:q4I/)þ&Ð$;# !f h JÂköŽv 6 É â!x"$¿'*?-F1a5ž;5A)GÁNAT"YÌ^3b|eˆh³j¦lfmmÚn ninCnml-jJh=eeb«_d[ÿXKTýQ LƒGfB•=Ñ8è4]/ÿ,=(!%<"Ù!ö × ò! "’$9'R)ï.»4„<5CÉK?R5XG_RcÀg:fYep`h[UR„HØ=™3$)l‚t¢ ·RTü1ÆÇ p$Û.ù9ÁDM Tü\òaeUeda#^>Y!SGLgF1@N:b4ß.å*j&È$ü"ù!Ý ¬ €8¥~¨W ! ° ‹ š! "Ä$¿'È*‹.-1Ç6­;ýB@H‰N‹TKY]›a0døgœjk9l\llêlbk½j hfcF_¼\TXÂUDQ½N~JEüA<¬8¾4¹0ÿ-*)Ú&e$1"x"!=!·"‚$Ô&ÿ*—-ë3h9üAÊHîO‚V([£a²d®f¯dƒb¸\ÝVTLuBV7u-?$Uà L´4uýÆ,NK A{4ª(Y3>/HJP‹Y#^ýd¿fbgdXb>]ÝYR¹L^Eñ@:‚48.Ñ)ß&æ$N#!  Î °I::€ë #ј Ÿ!ò$t&Û*9-i1é6Ï<îC4I…O†T³YÉ]þbpe«h®jkhkfk”jicgdÒa•^Z VIRˆNÈKGnCq>Ò:Y6†3_0,÷)Ù'Q$À#C!ü!ñ!¬"Ó$N'/)¡-¬28j?‹G+MïSäZx_hd;efIc `Ì÷ñÚÀ¶ C“g ³4"2,M7rAüKSþZ¥aØeZg¾f)dÇ`ú]uX R7K´Eî@t:¦5?/¦+Ÿ(O&³$è#å"¸"!­!™!e!A!- û  /î œ!t#Š%³(ó+ô0@4à:Î@óGMMPR­X\–a[dÔhi‰jËjej+h|fŸc…`…\ªXšTGPJLbHRDT@<¼8ˆ4á1Ï/},Ù*¤(}&û%r$º#ó$Q$Ê&¡(ˆ+¬.q2ñ8">ìEËL’RâX.^aÁdÉdDcÔ_¥[gS+IÅ>4e*Ú!»T Ì-ôE±ÒÅÆ´\ÅpÝ »%k0|;‚E—N×V+^ic•gðgàgca#\õXQâKÒEí@€;‡5ÿ1f-:*¾('^%Ò$¾#½#;"Ó"˜"K!È ç Ià ‚!A#+%(*Ù.ô3`9&?!ElKePâVm[;`+cÁg;h²iði,hfco_[äW‡RýN8I©EE@²<œ8Ø5ž1ø/,¾+N)¥(''&j&y&ˆ'‘(¼*ð,à0,3¤8ú>áE©LQöX'\ûaæcÒe bÞa[\*V*LyB7-+$ZÎ ²tÀ꥘ðà‘ýÁ8 g])f41>¿HOP,X ^¼dÚfÊgUd bñ_±\RWFQ”K¥F§BG=~94™1_.Î-b+ *2(–'„&È&}&$%˜$ƒ#Å#i$:%-'(Û+z.1Õ5þ;lAFÞLmQ Vð[œ`\cÏg6h—iºh¬g©d²ap\øXÓT&OTJKEK@¢;æ8&4Û2s/’-†+Ò+$*e*I***r*+5+ü-/#1~3{6ë:ÿ@¥FaLUQëVð\œ`Ycnc3bÊ_[\‡VNkCî9ž/&:$D}ˆƒ’Ž—ÅìbrÈ|sÝä è"Q,›7ˆA°J]RàY¥aXe|hf†e,b(`\‚WòR]MHH¦D=@K;í8n5m3“1Á0S.„-+»+*Ÿ*G)U(²(\)"*$+û-ˆ/Â1ì5U9>C1H’M›RhWg[÷` dgrh¿iÈhˆg^d`^[RV Q}L>FüA²=8‘5_2–0Ü.­-a,f,o,l,ÿ-….f/00_13Y57¸:Z>eBùHgMvR~WÒ\daPcodjb"`ˆ\%WµO³Fd;m1g([|üö eÍÚŽÚSªó×Zk¾—9Û»!+õ9%//Œ9ØC4K¸RÈZü` eeeöe™caÏ_‚\—X;SŸNöJïG~C½@=};f9§8f6Â593Ÿ2¤21ñ1F0æ0§1Y2\45ƒ7m9@.:@7Ã5‹4Y2Ã21ˆ1ô2W3;4506L7®8ò:¾<…?_B‹FÀKOˆSšW˜\q`cQcDbS^‘[äVP²=c;ç:Ñ:9ª9 8Û8»9s:l;ÿ=U?@‡BÞEyI#M Q>U Xµ\`Jd9g?j,k,kæjhhüeta~\>WHR#LôH3Cp?Î<[:b87å6å6©6†757ö9A:„;ù=I>Ê@3BFD’GÁKNÊROUíY½]VaŽc›dœbV`[|W‹P›H8=Ä3Ì*ž"ì$ K TÑè›\–#+æ¢|ELuç»× Ð" )>3R<ÙEL®S Zœ_ËcÚd4cüb!aY`^u[ÂX“UQûOˆM-KkIŸHCFìEâDÇCèC BsAÆAœAƒB7CD‘EæGHìJêMPShVÿZ8]H`yc‹fÑiXkÑlœm-k²j0fÅc^6Y¡TüPTL)GÿDáAå@A>Í>]=½=Æ=Ä>„?s@õBrDELF½H4J_LëOòRÈU…X Z¶^`ÆcocXbB^m[\VP_Gä>S4*ý#;M½ ð bŠÞï/_i»#¹ž¡LL«qò—jç m; ”*4=pE^K×S:Y`_¸bÑdyccbØaÞa£`·_\lYœV÷TÐS\QìP´O4MøLüLaK³K&JgJ IÍJhKJ4&*Ï"˜Ø=<®°*SûG›âȃ•ª`&ha¶¹s œ Å”P!S*©4l<õCãJ™P“WÏ]a%aòb5ataòbCbIa _(\Ó[YÛXØWØVFTèTSµS_SRhQðQŽRR¾T3U‡W"X¦Zn\N^l`b°d’f9göi”kQl¢mínEnm†l`iÚg'c™`\}XïUÅR“P9MõLÛKöKôKÄL&LyM†NÝP¢R5SºU%V™X*YÓ[y]^œ`bc,dbÍ`ý]MZaUkPGÅ>.3Ç*ƒ"á‹py wrÙ&Ÿa€ãíŠn–j(;~$à0œ AoÑM!*‰3ß<BþHØOÞV2\`-b‚b˜c:c™d•d÷dÈcŽb>`Ã_´^´]L\)[g[1ZûZÕZpZYÅZZµ\]3^°`&aÙc¥ezgFhÉj/kHlkmen~o>oìoúpoUn‹l¤jŠgŠd{aA^,[wXµV®T³SÏSS]S‚T:TãVWyYZ [þ]J^q_`¼bccdÐevfecw`H]kYPUÏO–Gð=º3I)»!ªiq¯µ2ÃSDÒZj¾ á‹n|žXjPÿö%sAã ™N‰6!.*A3N:Ö@ÛFùLëT YÅ^m`-aMaib‡cÃeexe.dcOb‚a›`õ`~`k`Z`l`l`n`F`x`óaâb·cÂdÍfgSh–iÃj©k‚ll°m1mÚnXn´n¿nèn¢nimMkñi§g;d™b/` ^\€ZþZhZZyZâ[µ\u]l^p_Š`¤a—bxcc‘ddóeffeºd‰ar^YòVÈRwMïFY=2¤)&!‰Â\Õ ÄUnú$®‚ºíü¹t…¬©1jz;ÿû5DdäŸ; ™<V© v)2 91?SDÎKnQÒX]\‚_V_î`¿aªc’efígNgvfñfkf eùfJffògYgžg¬g¾h hzhÒi'ii×j:j‚j¶jÉjãjñjèkkKk²kòl3llåmfMc°`¹\«YTÄQKOD“;p1«(\ iWÿÆò<™&z^̇©õúË‹o¥Ô¬#_w9AZéQM “ دl :(¤0—7" ?ûÕº Ø\V0”(ɾãÔ‘y“Ïç¬ J†§…)ÿáÿò&ÿÆÓÅB  +Hs­&˜-Ï3¢8Ÿ=5BíH¡NYR T±UÅWOYR[÷^Þa›cvdÝevfBfÓghgåhxhãi1iRi˜iŸiœihug:eêd2bx`¶^ÿ]Ž[ý['Z‘Zì[6\E]v_ `Òb\cÆd•e*eieÐfJfÙgggÙhChÙi=i‡iRhÿhQg¢fúf‰fe¬d®cžau_[¬XATyQ"M=IqCÏ=X5?,ô%G“)fYÀu ¼9ØÚò§wÊôê¯5?i«±aÿôÿ±ÿÃYÿì#ò^ï ÂL$*q/™3–7ÎËB†E°G­IuK8M•PKSU;WFXfYcY¯ZZZY±YkYXæXZWªV1TRVP)MÒKuINGE¤D‹DáETFøH¥JúMPO±RSãU‡V«WÏXÚZ#[=\)\¯]F]|]®]j])\\[iZY W¹V«9D3&,%R|UŽ 68®žfÂbú-d[ó„i–ÁÜÌ®¬fXN_rgÿòÿŽÿŠÿÎÿúÿÈÎñh¸ zõΡß!Â%ó(ü+¬.|2(68:O=J?h@•B CåF;H¹KL§MõNiNþNïNÈN!MoL¨L-KƒJ¹IKG°E’C~AM?=:ü9¾8º9"9¸;q=&?aAšCÉEãG‘IJJKkLMóOFPqQ?RR…SRóRðRPýO@MÈKçIãGeDÂB$?û=¶;¦83„-X&ò!÷&^¯ :;x –ØŸs å*|v³ms¥­£•”¬_YHCJmdÿºÿƒÿ“ÿÑÿÏÿºÿ¦µ^@ à Y®™ZÉ"h$x&ã*-Ñ1†4ª6®8b9­;`=2?@¯BBüDDcD¤DCfBUA˜@›?=Ù;ö9‡74Ž20-î,»+±, ,›.L/ó204y6Ç8ñ:Á<|=ö?d@òBÑD¦FRG{HžI%I»IIeH#FwD B@> <:=876d3¬0·,4'!q  ÒÊ \ qÜÚf)k-÷ð qˆ?È„z‹¡ƒfl‘½IPIA;FA*ÿ÷ÿ¬ÿ‹ÿ¦ÿé ÿÏìÇÂÿ· ² Üô³ag[΀" %u) ,.’/õ1X2X3†4©5Ð6à88×9}9E8Ñ7Æ75Ø4¨2Ë0Å.)+w(Å&.$!ÿ ÕÆ  s!û#u%’'Å*,C.101Ê3z5[7’9³;§<ë>>‚>ô>|>¼*~$áZ Dg‘“—µîAdFüÑÁÈÅš_+ 3[prs*EG9! ÿòÿÃÿ­ÿ´ÿ½ÿÓÿíÿöÿèÿÑÿÄÿÑÿÛe¾Þ!ËÞMž~ð9®É R  ¥§†Ó4ôIl p À ) ‹ ´ °‡v{|¤Ä8¯¶âŒ.·Ÿ©ã  = @ fÕGª€-eLG·ø©[ Ô P Þ bK{èDLõ™s抗Œ‡[Nk¸ >R-ûÑÓâݺ†S33;NYXW)88& ÿÿÿàÿÄÿ¹ÿ¶ÿÉÿðÿÿÿâÿ³ÿ ÿÿÿ’ÿ­ÿÑÿæÿçÿÄÿ׿‡5™µ·¹ÆÂˆ(qÉÕè‰ò'œyÑ7º?å‡OeªH²:ë‹?äÉæ K  z ‚ À ¼ ¿ / dɘ”_9õƒÕ {(6Ech[;B|Ó/'þáØîü뺈`GC<@NSGÿú37% ÿÿÿèÿÐÿ¾ÿÇÿïÿéÿÀÿ½ÿÕÿèÿ÷ÿòÿùEig;"7“hŽ”µð9…¼ì)f¶Å 7àŠAý¯aר‘whSKHT]nv–ÇA˜©j: †Â°ØÆ¥ 831¥d¦÷&ž ’SmȽdRKs¶ó ýïâç÷  ðÁ›€maH;HN7ÿñÿíÿü24  ÿüÿÑÿ¼ÿÛÿêÿËÿ¼ÿÇÿäÿöÿÿ$ÿÓÿžÿ–ÿ»ÿõ ÿúÿìÿô -Cf¾Ã¦sW@-+73+ÿóÿÖÿ¶ÿ¦ÿ¤ÿ´ÿ¬ÿÆYžã>u‚n…{Rìvÿ™ÿƒÿ ÿ÷E\9ÿñÿµÿ»ÿùV›¤ŠY@KX‡ÌþïäåñóÏ«“†hH@6ÿüÿìÿì!64" ÿðÿÊÿÒÿô ÿãÿ¹ÿµÿÚ':iuS EV^lyƒŒ“ž´Â¾µº¾µ§¡œŒ¥Àȹ¦‘‹†xbE58IHUƒ£–y€‰|kqoL,%:Mc~yZÿÙÿÂÿØ(†½À‰U62Sm›Ø ÷íêíîê׺¢¢œ|P4ÿûÿúÿôÿû(7@0 ÿöÿ÷ÿßÿÚÿïÿÿÿçÿÏÿÎÿé%+*);GD. ÿóÿïÿë/jª¿®‚pk`^eogmŒ´ÒÕ̱‰zhG0-3(!76ÿËÿ¹ÿµÿšÿ‚ÿyÿzÿcÿnÿ¦ÿò&5; ÿýÿßÿÎÿéPŒ¤¢aM>Qq«îôíñüöäÜ×Ïÿ¨zD ÿø ÿÿ"BDÿìÿëÿÿÿÛÿÓÿçÿüÿàÿÕÿò)WY:!6T_SE0!ÿøcÉ9cNý˧ˆ~y{jhyœÁÒÓ¹šuoS?ALHDQR8"ÿëÿàÿçÿÞÿñ)\hK/$Nz‹…ˆ‰t\`€»ø íåî öÙËÈʱ‹Y,  ÿüÿû-ÿýÿôÿèÿÚÿê ÿòÿëGlpaF?CED:1386.7†ùI^- Û±–…€qq}—²ÀƳ˜|vpO41@DIW[N84&ÿÿÿßÿÛÿîÿï.QL.-Or€ƒ“›Ÿ‘vda~¥ÒòòàÐÊö›{V0%ÿñÿùÿûÿîÿõ  ,6ÿçÿÕÿê3"*e“¡X3&00:L_qo]I1Nœø177òÌ­œ‰‡›¢¤¨ xsjI/+=J[ovr_R:ÿøÿÿ2>,"59<CQ^w£½½œp]p£Êãëò+, á¾³·¶¤„Z7"+ ÿôÿ÷ÿùÿëÿèÿòÿÿ &>,ÿæÿè1@;02NsŒqPIMD>>HTcrvehŽÊú,&ûÛ»™—“—“kc\G;;M`qyeG4$ÿþ ""6>*$>DL`}™¬¿¾³Ÿ‹Œ¢Çáó &*æµ”•ˆjE%  *ÿýÿüÿùÿöÿ÷ÿù$ .2"ÿùÿúA_aNBF^vxlojYC1-+Agœ ­ÀÒè#úÓ¬—”™“”~k_\UVZfv„pJ$ 2B4$+@H]‚«ÏÖɯ£§¯¾ÃÌÙïö΢|hc`L1 'ÿúÿü  %,/' ÿý,YrocV]hg__]TKIKCFWt£¹ÊÕâû þسŸ¥Ÿ–”‘‡|tssvvv|{wb>!%" (6-"*@Qj‰¤¹º¯¥®ÀÊ˾»Êèõµ‹kJ3 $$!ÿÿ*.*&"! :]rxlcXOJFHIQajeYP\s›Äâñò òÕ¸ª©°­¥Ÿš”‘Ž‹‰…ƒ|vqdL:<A6'!!-)&+@Zt‡Ž•¤¾ÌÅ®š˜¨ÃâÛ¬lPD*ÿùÿóÿþ%(  ÖŠ¿ ø ó,åu°ej¢—úY>ü²¨Ö*ç~-9YýðÊI-ìŒUtE/æzô!®"í"ù#5"a!EgøÅ¾ @ ô / ‘ Æ Ï ú       ! ] Ÿ Ó ö Ð ” ^ e • ú M ž Ù/?äœOú´9™ÁøAa€´êG·6Áÿ»‹U(öãzÖ †˜ë?° ˆ   Ï$!ƃzJ ňP=oKË©¥2xØ™Âú”&î_'‰wÝrê…” !ºÈHµ¼ œ ¶ à î'áïWí-  > ” µ º ï  ! , , % 1 R „ · Ì Ù ª Y  Ð Ý L g t { ­ Ý ~ fziútvQ@k«&“0á­u(âQš¤±ÐkÞé»àᦛ¯Ëïæ~D öIN è/;>%Õzæ°•&¡Ï´Èíðx"κ wFiÿ • ØQù´u„pUø ”– . Ñ  – " Z Ï  0 O _ o † ² Õ é Ñ ¶ u  Ø ² É ó ! / )  2  ´ ß e´W¾ZÕ w T u™aDLM*óƒüy åûþì PmPfšîÓ†q¯èÿ°d¸Ì ŽO|ªZŽèŠªã«GïØ§)äÞƒXi}ó e¦Öä˜pußlû‘t Âk¾a² e 1 ËÇ´”ß  t ½ ó < Y r ¬ ¥ u E Ê © ¼ á     ÷ ¥   § ü¡ … Ó Í Ñ ` O Ó " ¶ _="ôœ,¯‚ùºH“ðƒoøšxîëv"Ìö¦ø¨{ôe<î Hil/’v ?Qùž'å7ǘt±–›p5_ܾ‘×4~»L‰H/$L Y  Ë •ö–¿Ñ ? | » õ , N f n ƒ ‚ v I  Ú œ { l ˜ ® ¹ ° ¥ Š # G  M K È & Î M u ™ " \ t ¸ F  š9ʾ҃Œ|!ßU:XUH1e#z,ÞŒvÞ9ùmq^ÎYS*p¯°ŸÖ:™»U’޶!‚c†ók[þÍgè»ó   „ ×#>9 ¯ ä þ V û À ~ ö Zˇo“ µÂÝ  4 b | ‡ … ‡  b 8 ÷ö  D i | t s Vÿñ N ó f ­ ü ÿ â ‹ . õ õ     B œ ' Ÿ , ¤ f3’?»Î”ðO{èÞ$NJ‰7ŒžfX»ù^”Ný³«™3<&sGøQþ'Ÿ ä Ì ‚ u · U ¼ n X { ‡ { n ' ± ;ôéúï§-»mB:ø&Pm}†Žž³ÌÚÔÎËó/“  V € k ` 1ã¸Ê  & C t Œ v o } Ÿ ¹ ¯ œ ° ç A ‹ á & ¤ & &WâwÌÔ†^®2ãX¯…7¨k¤<ÁGmd…5ýó¹ca¸yŒ9HÌ.G»»Íb! à _ ‡ • ª Ø r H Dó¨Œyq…•ˆj\Qf7È UÁX)æÈ´ÅÞùþÿ"Dl’­¹ÑïD¬Dòrž¹…D"-Jw¡®Àï - c … š ¨ ½ ã  E p ™ µ ô : Ò q r Ö×’DÜ‚0ôž=ÊÎ…jg‚Ç>Q$f|† { ) BˆÂgË•ÿO 4 x Ë x # È > ³ G À}:¼÷M÷ýìü3<@Uf’céYËm\:9=O_bPAB]§ÈàëmÈ_¹Bs™s8üÞô S®e¢ì  A R r ˆ “ – — ¬ Ó . ` œ ÷ @ Ë … g9ÜO¸FÆœv0×FÌuȫWÞ§M ¶ ò « ¦ j PH@NÛ ƒ ) ÷ ! Ì t Cö´nYvŒ‰~„[†Hi´¨ŒolrŽ]å3“9 &6Slw|nWD>Nc}Ž˜Ÿ­¹æ|ý–,‹ÔÅ‘XI}±’úHbil‘Áãú  # Y ¥ Þ ! u Æ þ 8 ~ ã b ×  W ®3¼l$ä 6° l  ë ü ç È ¦ Œ ¤ { ö 6 „ ; . ›  ‰ ç X I Y¦-÷¦cìÛÓÊe°ó·¦o²ÇPþ¿q;Ømûõ-@IB8)!-<DRfƒš¼ÚjÙW¸Ú¦ Îñ?’¼W× >¨(£þ * M e † À  c Š  X ^ ­ / • Þ  < l Ä ' ƃ<¬ Ó N  !  F b ƒ < ¡ â \ .  3 ] ˆ À =¨E÷¿iÙ°¦lýDÔNÌÛ~ì$2ì¤Cé¥tU ö óÛÈÂÃÉÇÆÈÎÍÝù%Mq«Èò,]ˆˆgJY„š´¿ÿp‹ÝýAÇ„^ƒ¹¸Í X ­ è å ± ˜ ¿ : Ê ; m ] U U V ™ › ã 6 Ï ž ~ ” ¥ Ð  1 4 Ò :žF)üßÅ©¢ZÑ#›Aë¿¡ƒT«0™·’™€dQRhoY$ðÁ•‰’¢”…ަ”o> ÿðÿßÿÙÿÜÿÎÿÙÿ÷5{¸èøü !3p·òôÈ—†½‚Ö:“! òÊþ#kÀ  K G !ü ’  W ] l ^ = . C | š f 'õÓæ  I } f (œ*þ¼†[9+ä`³·YAS[,·.¸X\–ò2&ôŠ&â¼Å¿ÓéT¨i’£¤¦„JÛÇ»²œ{T7-- 2d“´¬œm: ÝÏÂæ#qÂÈ”"²~xÆs º§­† u¯úQÁ'Š¡iE… s ¾   ï ³ ~ f j¦…aNc’ºÙ7ˆàJÒz ¼ˆvw<®‹\FRc3¸#±ž¶ e|WÞaÿþÿ®ÿ¾ÿé[½7´8¶5Ê:†¡ÏàïÏžX!õ˨„a5 óÑ«Œt`)술&ÿÖÿŠÿ‹ÿžÿðSš·ƒBÿìÿ—ÿÿ†ÿÜ3«ƒö„!Êvÿj¶m&§£½EÞ K ƒ ] 5ë sv÷èÖÑÖåÞׄ\°bèo;$3I›Øñ90íI_ÝnÝ"åsÝaTl¦z6ôµnÉŽ I ø w ø 8 o b U  Ñ m þ — A Ô¸«‰Câ]çnøzúeÅtãUú¢Ž±Ï×ߤ6ÿÁÿ_ÿmÿ¸MØ-;:`Ú|5Ð3`®r3ƒŸæXùl—kP&üë #êʼnZûƒÛ5ŒÓ]/C<ÿ—Sj Ÿm÷ œY¬á ö .ª? Ì„%Á e # Ò Å Þ7¢Ùï~ö&ðª RæzðѪ Z i ‚ ™ »ô+|Î<¼7¦è +OÄPGjŒu ÿ}ÿþÈÿÿ»oǾ—”ÉpL S|£"v±ø{úVmzbGAeÌÔÖ¹s(Ó”Dà`ábÌ‚x³ÜæÉšpÐ!¶½3”.yë „ 6 Ï ˜ m$Ã?´@×¹’çlVb—FÜáÅ^{|ktÖX. æ¼*kF#ñÐËÃä b Ü U É Ï ŸZÜyÅYR1Õ>uÿŠÿ/ÿ`¡Ü¿r2|H:±Ø QÅ1eˆÂ–ü>LS]…#-7É0ñ°aÉŠ1@5æÞò1Z¬Ù¦Æ¡š ‡ ) U fe¨ï$Øf –•37FÇE/ ="q$¼&s'ã(d(Ù(¨(™('I&$á#©"‚!Õ!U!I!C!C!> Ê (áŠIÿ±_÷Á±êMq] ® u>uá:à¡)*"ÿ^ÿNÿ‹1ÿýT¼$@HšTvdk¾A­ö&?fho€d0 êϪo?'*$,DR2+O¶žÙ¢©Å = ³ÛÉz[E^lÄ•ô »!«#*$ª&‘(x*,Û.ú1!2‰3®3æ4"3Ã3}2°1Á0s/-ã,º,+±+Æ+â,,<,+¡*µ)À(€'Z&$·#!YÖ‘¢ÇÁMÝZµ  îã¿‘{÷;ÿuÿÎZÕ¦?gú”ÓØño—a&2”|ÓùÒÚïÚ¿¸ÃßݧlTpŸÌËÇ¿³’"í—T¥ ù>h&ŸHúÕ"Y$Ë&Y'ª(*(ž(é)a**²+¾,ÿ.¤0.1Ý3…5U7I94;4<‡=Œ=®=Ó=r=7<};š:G8ß7”6h5Õ5j5…5¤5ã6(65á5$4W3H2Z1J0K.â-C+<)$'3%˜$,"£ Þç©àó¹J ‚ Rú•(=ÿèÿaÿeGMÿú@ÍSt8UpIçv ‰¿ºÿ÷(T¤v@.kÈApÛx¦ÿ„Œý £ |åÅ+'ç È$0'¯+-­0 1Y2‘3%3»4F55è6·7Æ9:g;ž<Î=ï?R@êB½D·F,GAG€GÃG–G G-F†EOCòB¦A‘A@°@Ç@ãAA^AMA@X?‚>v=‘<§;Û:¶9g7†5€3M1[/j-Q+6)C'D%]"Ý 1†`"< i VE:à@ 6˜}AMæY<Í¡–”“`[–̺ÿ:ÿMÿtÿƒÿœÿÌÿý(+ÿçÿô_Ö›)KÆÝÚ Ë1 ½”c ²#Ï'*ª.©2b5Á8':~;ÿ=>i?A?é@ÃA“B8BéCÂDÅE¨F¼GÈI[K1MpOØQ±SS“TT8TTOSÍR™Q8OêNäN|N&N?NbNN¶NmMÿLðK¾JJHýGÃF¢EfDBp@Ç>ô=[;W8ñ6*3‰1.¼,<)°&0"JžÔxƒ ž ã·;Ì—U€‘'ÿæ>»Ú˜9ÿíÿìK±ðêÿxÿÿ·ÿÌÿèENYc»&ÛF³ó ~ })üÇ â Û$‚'Ú+.\26: =l@\BwDÄF’HjI¦J³KSL"L°M MWMÅNzO#P:QNSU"WŸZ8\4]²^K__L_É_¤_8^\Ñ[¢ZÀZxZ>ZlZ­Zà[Z›ZXÜWpU SóROP¼O6M›LJ±IgHdFÅD£A¥>¥;Ž8Í63e0',Ï(z#Çœp7x Ï iPÙãP#N¸%ÿú.z”AÿÛÿÂÿé (R‰ÿCÿTÿsÿÿ›ÿÒ-‘~VÃ"g æ D´fÂK#&'W+M.Þ2=5Õ9Ÿ=‰AYE#HNK9MˆP RT UPV`VåWWúX=X‹YYÍZˆ[˜\^/`b,dffg/gšh2hthÙh¯hIgPf9eDd‘dqd\d³e'e‘eàeªerdsc8ao_Ê^\RZƒXV¯TçS’R¬QŠPM|JÄGD‹AG=å:6_2-½( #%°fKÖ µ—`cPÉ]ÿÉÿ›ÿß?5ÿôÿÀÿ·ÿæÿí4Wíùèáò8HèÕ~ï [ ¡'\q¢!­%Î*(.i2{6,9¶=?A&DüH”KÉOQüTÖW4æ9 =1@ùDæH³L˜P S1VYB\1^ìacd™fBgXh>h¡i iWi´j*j·kCk®llpm mânÙoÒp]p–ptp€pp¶p­p~oúoRnÊnsn™nÊo\pp®qCq–rqáqwpao\mölžjîi g#ecaaûa`^é]”[Y½V»SDN¦JE7@Æ<%7{1ü+Ç%—ó€uÚ’ ‚b¿î[BÿåÿÆÿî-ÿÈÿÍÿõ  +Dôáy –èr 5  ð‰+0 !¤&“+”0Æ6%;?šCG{K@OERÌV X™[ ]h`Obíe f—h i.j“k§lŠlümgm®nnrnÍnûo o o oPoÐpƒq6q›q¹q—q“qªqîrr q¡q p†p;pcp•qq“rr¢rþstsjs(rHqmp8om°lPjÏiÄú¸,‚EfrÀ!+%¨*./K4'9Š?lEHJÖOsSÐWh[e^xa4bÃd*e#fzg³hØi™jjžkyl¥mÞnïoÙpXpÆpøq>qoqžq»qàqéqÀqÅrr­sLsØt9tut»u u•uÑuÄu/t}sÔsfsVsIsls{s©sút=t~t?sÓr×qÙpoin>m l'kTjöjÀj³j‰j$i±hùh‚gZeçcha]YâU~QbMHÚD?.9¡3Ù.8)G$[Çe ·s˜}s‘8ÿöÿÖÿá "5K­ ÜSÀIÆo!y#„&ÿ*¸/n3ä8í>C©I´OnT¥Xä]I`Íd{fÂhˆiiÅjj¹kk'kjøk:k¶lœm„nsoQoôpupàqrrr—rþsgs‚sVsCsŠt-tÍu_uÍv vGv†wwIw5vŽuÌutlt-sÿsÿsÜsÜt t9tcts¥r£q“pFomÜl±kßkjÕjÇkkUknkbkjåj+i/geeÈcS` ],YáVR\NI­Dw>Ø8Ô3S-½'ö!Ç÷  §ý=1~ux ÿèÿ×ÿþ!Mr**Ž*h)ó)q)")§**,. 1‹5?9Ë=öB²G½M2RÁW¾\F_ödg'jk]lGl(l_l8l kˆjÞjx?>ß>‡>5>>·??AC3FIËMžQdUzY¼]Îa¦dçhCjÚm~nâoóo×oâo0nzm3kËjFigÏfsecb˜a¶a´aÈb¹c®eHf÷hãj¨len^oàpíq‚rFstu vv«ww>w¶wËw™vÐvutsKrÞrr qVpÈoÎn¤lák höfñeca„_¼^ë^…_G`aObcàeIÑIŽIPIHüIŠJK¿MÅPÂSˆVÓZQ]îamdgliâl¢n—pQpÏq2p”pnÌmJkBiEgbeËd@bh`’^¸]t\?\\&]7^I_òacleZg–jlEm×nèp/q˜s=tÆv8w wšwµx&x"wÛvûvusárâr/qzpˆoOnKlÉk h¢fcj`Ä^ˆ\oZôY)X‹XjY°[\Ý^w`.aâcÎfhiÂjšk4k&k?kk&j²j.h°fÿd_b^ ZÛUŽP I®CÔ=)5È.&ŽçSï} ˜ïײ¿àǧRÓSjS7S-SRþS`SÙUJóCj;x3r,%H,  Õ ®‹9çbcVc“ddUddd|d¿eaeùfÿh#ik.l“m±n~o”p5p×pRommk~he[a¬^+ZåW§TôRxP]MïKðJ#IGøG´G£HKHÅIÈJ«L†N QáUVY7\»`CcÞg£kÂoYrœt˜vgw,x(x>xw7vfu(trgp¼nk'g‹dQ`§\žXPTPRLŸIÒG!EqCB÷BÁD/E®HCJÕMÓP°S“V_Y7\+_(b:dógˆi|k]l¿nZoFpoÐodmðlÑjTgobö^šY S˜LÙE’=º6p/L'Ç Éêu< œï®oh^i@i±jRj§jÈjÉjðkAksllên oo½pTpœq$qpøoœmükhNd¤`Ë\·XßUUQªN KìIÂGDE9CZB"@Æ@4?Ð@I@±AÍBÅD´FÇJM—QÔUÖZ^?b¯gƒkåoúr·uJvŠwäxxw8v|u+troÕl~hâd¦`Ý\WâRëNIòF3C£A?b=X<ŸêAXCÅFÕIäMP%S/V.Yn\÷`‰dfìi§kÈnoÀqnqèrq pWn‡lªiGe§`¬\UþOmGÜ@»901E)h!“ó¬ 8ÿÉkllŽm/m€m°m·mÕn n!nžo…pq*qgq¾qqp£o°mqjïgHc®_ƒ[KWSObK€H[E§C—A+?=0;Í:@9x8ß9B9¬:Ú;Ù=°?”B«EþJRN‹SRX ]-b¬gÚlÏptsõuÝw¸xxEwjvÀu\t)qÎo$kfæb ]¨XÍSuMãHCG™MR‹XŠ^ÂdŸjOn°su†wÝxaxÁwéwQuät¹ro j?eK_‹Z6TNsHJAà<Ê8W5ã3‹2e0»0E0=1”2Ü4ö6õ9’<>?lB³F HùL(O—SÉXH\õaseTil o;q8rúsròqÊq>o¸mÅj|g]c^ÖY¬;å9‰7Ð5¤3»1î0°/c.Ý..ì/(/Î0C1‰2ð5­8o<¿A8GM&SçZ´a+g…l q¾tçwÉx„yx/w”vur_o/jd§^EX3QÄK-D•=£830S-Ó,å++u+¦-.O0@24a698<??BE06#.@'¸ûYoÒp‘q6qÇr$rr¹rÞs&sštEu&uu‘tÕt¡s)q#m]i¶d²__YpSËN\HÑCñ?6;‹7Ú5`3F1Ø/ô.`,ê,+W+6+0+q+r+¬+Û,Í-Ñ02961:ƒ@ÄG/N–Uì]dBj@p@tw€xkyx!wmuâtÜr;nýicü]*V’O‡HbAW9ú4 .Ø+ý)U(w'V'x'Å(ý*+®-U/:0ä2ç57Ô:ˆ=ØAE4I“NñTŽZE_ÆdmilWoÚq’r´rPrGqup¼om j^h^eYaû\•VÑOrH(@C8_0¸(×"~Up=pÿq°rLr²ssJscs¢t3tÓuquju%t smqOn‰iëe}_ÔYÚSƒMGóB?=~8ò5³2o0j.®-,+*)â)Î**Q*r*P*G*`+ +›-.`1•5L;gA¼IrQ XÇ`ŽgKn rtvuw¢x€w{v¶ut!q®niwd?]µWMP7HõA¸:>4L.î+ì)'ï&Ã&Õ&û'Õ(€)*Ë,!-".A/`1L3v6¢9®=²A²FìL•RçY(^ÀdhlWnßqq[q±q pÂoŸnkëj–h‡f7aï]$V¥PaI>Aò:u2³,J&$p‰q]r/ràsSsÅtttHtìutuÈuLtºs4ro«DZKQóXi^†cihqkÍnòppñp—pÉp.o mvlžkKiäf§bÊ])WÚQqJÃCˆ<5Ÿ/‹oúpÚqÃr„sssºsÇsãtˆtÜtÎsÃrÐpÅnèkIga@[›U NGdA$< 6Õ3/r-V+;*1)>(Æ'å'Œ'–(E(ý)¡)ü* **/*~*¼*™*Ÿ*G+Î-ì3,8ë@áH·Q Ya"hïnss|uTv¸uÝuFsÂrÄp–mëi½eº`†[OTåN)Fà?[9 3_/ã,{*×)5(¿(O(d(N(]((˜(W'ð']'‘(*, /‚2Ó7½=C¤JnQYX ]Ëc€g©kÎmîo‘o¾pmp(ovn+m\l3k8hÑeÆa'\àWuQ°K6Dv>¯93oVp;q"qßrWrÝssssºsås~qëp›n ksgb[\(VOWH;A­;¯72P/+ì*J(±('O&ÿ&V&H&¯'­(•)Q)Ä**i*Ë+J+_+*})œ*+ø0¹6=èE‹MøVZ^Kf€l”rtcv+u‘uAsÔrÅpŒmìj$f¸b?]¦W¥QKJ!B¹2Ž11)1Y1É1ø1a0­.í,Ù*R'Ü&$h$3$-%Ï'O*-à318Ë?ïG9NºUú\SbÃg…lnap“qqpépnÑnIm…lVj|hüf„ct_˜[µXoUolclÛm`n%nÉo5o?oEoo˜nßm>iïg2bú^6X!RfKåDÒ=ô7‡2-Ë*x&ø$à#"p!À!Ü!ó"#?$R%v&Ö(/){*Ý+Ì,µ,£,=+)è(Å'O';'O*~.x5]qnýmXjfg1aë\0UMãG@~;á7›5×4R4¦5*66ž605Œ3q0ë-¾*½(f&*%Z$¶%¯&Š)+”0-5*<BøJˆQóXÎ_ªejvm¤pkq-rq¦pÍo˜o#n m¸lXkMi}g&d(a(^¯\}kÃl/l±mŒnAnn˜nÇn©nþmÐkÀgÚd‰_®Z-S“M‘G?ª8È2 .&)§&Ÿ#„!Õ O÷‡æ @!B"R#Ï%@&Þ(‰*+Ø,×-¥-0,f*á)“(N&©&(%²(!+Y1‘7²?ˆG`OÍX‹`g:kŽoRp“qàqúrxr3qÃpŒoËm©k:f}a;Z^SLÂFA*<•:„8¾8ü9u:e;":·:7z4`0u,Ú)ö'+%Ê$$ñ%H';(í,Ë107Å>oFM«U\Sbqh¨l¢pqrsr*qYpoÂoƒnâmèm2kìj9heãd0bÄk3kžl3m-münUnQn¹n¨nÇmj§f6b2\ŸVvO‚IBBÂ;Q4§.å*þ&í$N!¸ hË‹$¬ í"J$'%ï'ð*,./70/.µ-=,*Ì)3(n'¡)O+£0ß6#=`D¬LÔUD\ÄcÞh{l£nupKpÐqŠqˆqpôpão•nje_0XÀR6KÌFïBj@(>=î=ö>‹? >„=»:ò7s2î.¶+I(&m$Ü$æ$÷&u'…*¤.Z4q:¥B+I®QEXº_Nf&jånípˆrhrmqÔp¥pZp,o¬nÒnlìk„iÖhfØeÞjaj¾k]ltmemÈmÇn[nCn%k÷i/d3_oYRIKDˆ>6§0O+'Ñ$\"M Zf0äϧ] Ý"‰$Ë&î)X+ö.b0Í2#3.2Ö2N1 /ÿ.Ô-i,+›,¡.2K6Å=uDž:Ï5´0Ã,­)',%W%$è%ï&_(º+­1<7>qEÝM›U\cimÐoørkrÊruqOq pÝp~oÊomûlÐk…j$i7h—i‰iÍjyk­lÈmDmVnmýmºk/h(b¶];V9OG¥@ä:~3,-T(•&#\!ñ –êÒ}„„ S!ù#Ò&Z(Ã+‘.¨1‰4G5ì7a7‚7s6‘5Ð4Û3Ë3212Ï3°7:þA G(NU[ja‰fjQlÂo%oìpp7p oöpIoòom iòdˆ^—XaR¿NÎKIIlGgFyE¹EqEEDfC|@”<Ö7‘22-¥)Ð'ç&%¯%Z& &('ô*9/4A;_BŠJJQµXæ`µfèl×D=I™OÀUá[¬aceÔjl¤ooàpeoèošonþnbmØk–hêcù^0XR¼OJLoKIbHcGŠGFâFEB:>˜9C3š.¬*¢(¤&²&=%½&)&'r)-A1¸8m?XG-NUü^dåjÔn`r;s¿t‡sÛs½shsAr¥q°pYo4nl­k»k'hEhOijykälŒlÍmìnm¿jÂgTaZvRJãCo<5†.h)y% $M"Ä"S!Å!‰ î Ú!".#!$ø')ß,“/î3Æ7r:µ<Ï>î?°@?›?W>Ú>\=Û<ï==‘@ACYH*LÚR;WŸ\åb5f€j”mo‹p^pùpcoänén:lþkÛiNf‘aÂ[ðUÅPALÓJ1I5G¼F×EúE…ElDÆCñAA>93µ.Ü*ç(ç'&{%Ì%ù%Ó&ÿ(G+Å/x5<=D&K‹S#[Vbuhàm$q°sÙuJtûutªt¬t%s q«p‡oamîlál8g“g•h€jk¬l‡mnwn¹n|kQgÄaHZ^R#JgBÔ;"4Y-C(³%1$T#M#E"ù"â""¥"ä#Þ$Ä&(+X.1¬5¼9¤= ?UAÆBÔC`BöBéB™B9A°@±@®A1C¸FJÇNøSÐX¬]~bPf\jDlîo¨pÐq©qp„oInrlïkchke^`]ZeT N/JGÇFéE•DÍCßCbCnC BX?ç=8œ3–.ê+)'+&}%€%H$ê%×&Ñ)Ó,Ý28Û@ÜHSP Xg_Öf½kµpês¬uºuÀuöu™uÊuct[rÖqÃp®o7nmeggh8iákºlØm ocoËo’lEhªb[$RØKCl;t4‚-{)1%ß%A$Š$À$Ž$…$p$§$Ö%™&f()­,M/2£6¡:ƒ=ò@hCDjE%DýEUEpE^EDTDEiHJØNÅR”VÛ[%_mcÀgwk m›pQq¤r§ryu‹u8u uptsrq&oÎnÀnf§f¶hiÐkÞm:nBpEpÇp”m.iˆbè[ÏSjK¤Cõ;Õ4Õ-è)Þ&¶&I%Õ&A&)&,&D&’&¸'T()’*ê-F/î3˜7z;U>ÖAŠDmFGGYH9HîIeI‹IIIÖJüM¯P”T2W€Zñ^aaÿeîixl²nîq>rhstsCrÿqÎpÐnóm&jfñaÙ[ÎTÓNHêDÐBÌ@§?5=5;á;N:ÿ:_8½6è3Õ09,ž)Œ'¿&I%™$u#Í#2#–#à%Ë'z,1ã:AI™Q½Ynag:mvqsétRt°tkuutFrÜrq>po!n‹ff¡hiÑkïmun¥pÂq?pùmqi°bý[ÓSjK¦Cÿ;Ñ4ß.(*d'c'&¿'F'@'P'„'Ü'÷(u)-*Œ+£-¾0R3è7~;">A‚DsFaGÄH¶JGKÏM MüNšOàQ®T²Wü[j^D`Íc_fCi½lïo¢qAråsœtYt5ts qèoänk>hˆc¸]ÛVªO–IÓDóB ?+=:B8E7 6ˆ5Ö4š3'0³-½*À(6&¹%Œ$ú$#_"Ò"û"æ$9%K)u.ù7>F¯N´Vm^Kd×kqoKrOr¹s rÆs“sßs.qêqBpµoÕo*nÁf„f–g÷i´kÎmhnµpåqXqmQijbš[\RòK.Cˆ;?4Z-á*|'½'š'~(+(H(m(Á))&)€*'+r,c.d14“7ê;Z>ÖAðDòG.IJ¯LîO3Q RÐTKVaXý\m`!cPe¨gEi k9npÆr×sãuu]u¨uQu8tDspÈnÌkÚi=d‰^¶WDOÚIuCã@C<Õ:=6Ô4c2Â2;1£0Ð/³-¾+X(ó&ÿ%â$û$t#Ž"æ"l"p""ß#_',K4];åDKæSŸ[§b’i’m¼pòqYq•qEr.r²r$q p˜pPoÄo]o$f f®gõi„k}mn|pªpóp[l\h.a7YçQI­Aú9’2¼,‡)€'&ÿ&ÿ'À'ü(@(µ) )/){*+U,>.)0±47:=h@wCFEŸGÉJLôOñRŽU WkZj^b f+i6k_lmëo‘qÍsÆu4uÊv’vŸviu¸u{tsnq1okÝids^ÍWƒP.IˆCˆ?R;r8}4µ1ø/ÿ/R.¥-ù,û+U)L'W%Ö%$O#Ì"ò"L!å!ç!x""H%·*°2­:7BgJ@QôZahZl´oüpIpaoöpÛqqp0oöoûoÇo©oªggh+iƒk[m np³pÈoÞk}g_çX‡PH5@g7Ú1 + (S%ü& & &ô'K'·(_(ò))f*+%+ú-²/ÿ2ü58G;E>"@ŸBëE-GÿKPORZU¬XÜ\®a5eÜj]m\oŽpqÅrøt’uÎv¡vÒwPw"v~uxu tBsEq%n×k`hLcž^IWtPsI°CP>}:56ô2ã/ã-,›+·+*F(ÿ'X%Å$–#ö#k"ô"$!z!! £!!!0$e)$1 8£@øHÛP™X¼_ógikêo>opobnÞoÂpp@ošošoçpp&paf°f¾gâi$jólÈn\p–pioj3e\^V™N%F>05€.¹(æ&d$%$0$8%%_%ã&§'`'³((Á)Ñ* ,.0t2›4ì7v9ð;û>&@nC¬GfK¸O¤SœWm[Ûaf2jßmàp[q…rîsìu#uævovvÖv—uãtÛtXs¢räqo kµh˜d_8YR¹L9EÐ@‹;ç8F3÷0¤-Ñ,O*Õ)î(ý'è&j$û#Ù#4"ª"7!p Ì ` ]  š ²#Û(ƒ0\7÷@eHaP3X^_–gkšnêo nãnHooßo›ooCoÇppvpäff7glh©jxlqnp]oòn=héc¾\IT¢LCó;ó3#,a&·$k"F"L"I##O#Ñ$•%_%Ì&F'((É)û+x-j/3173`57H9|;ý?ÈCÿHÛMGQÁV[`áfYk0n9p÷rGsªtpuyvvvsv‚v+u©tøt”sòsCq¿p,mhj¬fsaõ\(VROüI|C°>‡:Y5®1÷.‘,k*E) 'þ'$%Ó$†#i"®"!˜ Ù DÚÓz #?'á/·7N?ÁGÇO§WÝ_f˜kngn‚nUm¨n[onÎnin®oioúp‘q5cßdLeÕg[ijk³mˆoèoKm>guaóZKRuIÛAŸ9œ0½* $"w q o V í!+!¥"P##“$.%&&â'ô)'*«,%-×/‘1m2Ó57äID4ImN«T!Yî`heÇj(l›oBp¹r#rÍs‡sítnt´tötêtÊttt0sÓs‰rþrŸq\oÿlúiŒd¸`%Z¿UO3ID?>“9”4ß1R-¬+A)8'ê&,$Å#‹"Ë"!’ ø “ 9 ,× a i#w( /À7?kGuOuW»^õfcjÎn#nCnmJmºn'm›m'mrnao#oôpÆ]¤^ÏaAc¯f•i¾lnânkVd¡^nVfNME±=c5j,†& ! p¼»}è>Üs , Î!¦"˜#Ç%&7'T(D)')ü*Á+Ö,€.Ð1æ7F<þCfINžT‘Zža2f>j2lnZožpýq¡rr8r¢ssªsÞs¿sFrér¥r–rqrVqxp—n:klgQc€^àZT¹OeI­Cš=ô8¾4Ÿ0[-C*}(¢&u$õ#³# "N!Ð!D î ” … ; Ì Ð#Ê(G/æ7%?lG†O¢Wó_4f³k-nŒn«n‰m¦mîn"mblÍmmñn¢ogp-YF[^a)d¡hUjøn%mBjkcV\ÞTªLpCÉ;c3i*Œ$>q¢¾€ãO¸ƒ H!:"2#a$²%ó''Û())„*V*Î-*0J5õ<BûINêU([Eaàf±jakàm¢nŠo»pOp‹p†pÎqJqõrRrOqßq|q/qqqptoñn/kõh–e‹aÀ]õY'T3NGGöAÎ<67‘2ª.â+m)"&¦%#Ñ#*"O!º!* Ù s a ' Ë Ù#Í(?/Ò7?VGŽOÏX,_wgk¢oo5on(nHn@mKl“l·mn:nôo±RnTõXà\èa@e¶hílÆlOiÊb½\ITKÆC:¢2¢)Û#¥Ëom>­7"óå Ö!Þ"Ý$%R&Œ'ž(T(ÿ)r)«*X*Ò-B0V6<+CEI¦OÃV[ûb_fájYk•lûm‹n|nénõnÌnïoXoèpVppWpo¢onoHo6nÏnzm kJh“fEcX`}\LW»QºKaDï?9ý4‘05,-)„&Ç%7#á#5"?!Ž ö ¤ - Ö † ›#”( /¡6Ô?=G©PX_âg¥lcoëpponÿn™mVlglhm5m n2nØKN_S,X4]bÈf§kBkPi6bE[äSŽKZB±:.2))w#D9º‚ín! 6!T"x#‡$£%ò'((™)B)¨)£**˜-#045Ö;ëCIÓPBVµ\pbf´iæjølDl¼m‚m±mwmm mmánMnÄnÚnžn)mãmÐmömëmÓlÎkKi.g¯e¥c§_Ú[eUN™GÜA§< 61;,¾)Î&Ô%3#Ö#."%!e Ò ‰ í« S `#['×/|6«?&GÊP{Xú`[hIm5pÙqq9p+oÛom—llrm3mmmÔnbBJFiL2RRX´^ëc¤i6j-ib¯\®TiLjCÜ;d3X*È$#ÊhSè¥Õê!!"^#˜$¸%Ö'.(D) )|*"*Š*i*Í+U-î0ÿ6v<2C,IþP«W8\Ïb«fwicjXk§l'lÑlÍlakäkßlGl”mmËn8n(mËm¦m¹n n,n/mOkõj0i+g¥f!bˆ^ WªQ3JQCÐ=Ç7€2R-q*/&î%:#Û#L"L!”! Ë F £ 7 9#8'¶/^6?GÛPÂYN`´hÈmØq„q¶rpõpRo mk­kekýkìllŒ9“>†ENL…S÷[`g&ihòc@]¢UkM§E8<Ç4¶,M%þ 9écàƒa´ Ó" #Z$©%Ö'()¥*W*¡+9+Ÿ+w+×,a.ö27S<´ChJ=QWµ]4bãf^h÷i©jÉk9kÖkÌkGjÁjÀkPkËlˆmn&nHnnFn†nÑnÛnìnEm.k¼jýi¼hˆe,`ùZT7M.FV?Ò9A3À._*¦'%;#â#ƒ" !ý!–!H ¡ +® 9 ;#>'³/K6S>ÜGÙPñY†`ñi,n[rr,r´q•p§nËlQj€iïj]jjjg1T7 >·FÙO7W#]ŠdûgðidU_FW7OÕGŸ?I72.ñ("k™Â=ï ï"#C$”%ê'(Q)ë+$+Ü, ,o,°,Ž--„03$8_=xCáJ“Q|X>]Úc‰fÛiJiÇj±jûkwkfjàjhjek k»l»mÛn°oo5o²ppBppo€nyml8jêi½f›b»\¢V}OrHAÞ;F5‹/©+j'w%¦$J$ #A"°"T!í! hÉ O V#Y'¹/66,>¸GÅPíY~`ßi&nQqÖq×r}q;oÎm"iøgfmfue¯eŠe¶)W/Ë8NASJ›S_ZbçfÑi'eR`ÆXÜQÞIéA´9–1x*þ$}!7'© §"9#h$¢&'^(‚)°+S,“-R-X-e-U--¤.03È9> DLJòQþY^Òdg²j!j‹kPkYk‡kCj¸jLj(j³kTlwmÇnçošoñppïq)pùpüpQo(m¤l¾k’j—gÈd>^dX[QUJ˜Cþ=|7{1,*'þ&@$ã$©#ã#I"å"`!X €Í R T#O'˜/6>¢GÃPóY`Ðin4q‰qWrp¢n¦k%gRdYb©bJa`Â`Ê#*%3?<ÇFŸP X`þeºi2fZbjZÃT.-·-n-þ._0Ü4,9>‰D½KDRXY˜_¶e‹hÆkOkºlzlUl9k³kj¨jdjÊkHlem·nÿoêpoqqoqÊq«qžpÃopmÉlÁk’jšgÿdÄ_ G¯P¿Y<`xh¤m‘p¸pOpýo+ligçcb_Ã]=\Z1Y‚Y:$Ó.~8vBÊLÚU _5dÃi\g|d&\¼V›O"G4>ÿ70J(Ù$]!x!y ¥!$!ñ#‹$ò&k'Ø)*@+Y,º-ß.ê/(.ñ.z.+.Â/'1§4þ:`?VEsKÅRËZD`´f·ièlJl‡mKm%lálkIjÂj{jîkml~m³n÷ppÆqŽqürrcr(qoÆn-mkÆj£he_ëZCSŠMbG@ :M3•.‘*m(•&Ã& %$o#Æ"ý!Ø äî 8 (#'@.”5¡>IG;P*X_ÕgôlÍoèoepmãjWdÎ_Ÿ[ZWóUðS4RQd !6+/52? JSo]kc˜ih,e’^›XöQ¹IþAÆ9ú2î+%ÿ"h!í è!h!÷#g$Ø&m'Í(ÿ*2+M,-†.©/)/).Ò.‰//’25Q:Š?{EŒK©RYá`pf±j"l–lÒm±m¡mgl–k¨kjÑkWkÞlÚmÚnõppåqÄrLrïrÞrŽqvpZnëm¾l6jØhŸGSOÿX]_g[kïnønPnÒkûg`ü[!VQ¢N€JÉIGÐû'á1ìW‘!%„/X9¹DŸNãYf`“g†hegpaÄ]OV¶O¢Gˆ?Ò8d0^*Y%-#=!¯"$" #$I%Ö' ($)b*z+n,.--´..0-í.W.ÿ1„4]9=ëCîIèPfVý]Bcîhtkàl¼mÏm«m¡ml†lkÑl#lŸmŒncoZpWq?rr·sas‚srÚrFq o­mÎlbjg€bþ]ðWAP«I´B©h{d¾ax[RUMOEe=5ã/˜(ý%"E"!ˆ","Í#â$Ì%Å&¹'²(Ð)®*C*+:+­+¬+ô,E.'0w4®8Ô>|DdK QœWã^UcRgÚjRlÁm‚nmÅmÐmón"n•o)oÔp`pÖqEq»rKr×ss¬s£rÜr p´osmËlwjgib°]oV|OfH[Aè&F*ü/Ê6Õ>WF†NU\—b2gjijŒhe¡_$WqMâE}=‹5.'O#Ù Ô ´H7(T2|=pH/R®Z¤b¾f1h¦f cL]LW PH*@ 8™21+&M"™!Ö!!¶""Ç#ˆ$\%%»&É'ª((Q(Ã)D)•*!*j+ÿ.26;’A1G–MõT4Z_²d¤gìk@lÅmÖmÁmçmÿnCnÂoWoêpNp¨qqªr]rôssŠsOrUq]oînžlØkGh˜eÚa[TeMDF@‰;[5Ž0 +±(ò')&õ&*%™$þ$‚#¥#¦#Ï&(p-`2‘9ÖAŒIPµVù^bäg g¦heWa±ZQ¹Gß?6–-Y%ºç­ tnð%Å/Ò:…E/O²Wð`!d;gåfœd¦_Z'S%K†Cd;ý5d.+(Ü$8"!C!¯!™!ü"x##f#Ó$–%N%¶%â&&n&ò'Ð(I)Á+‹/2à8 =]C_IhO|U’Zë`dh'j…lhlÕmOmomÓnXnðouoÂpp—qLr!r¹s?rýr„qMp.n—mk ieébº]£WÙPÝJCÑ>-913v.É*…(d&Õ&‹%Â%;$§$j#Þ$y%\(>+0K6=‰E7)1‚-))o'µ&)%º%$½$4$2$%Q&Ó*F-”3'9wA,H¶O§VD[E`ºcSec}b§]ÙW•N"EA;Â2…)• kL © p Ÿ#¢)j3g=ãH®QÅZ._oe=f³fèc_µYÑStK·D;= 60))÷&#3"ƒ!v!H! !*!3!L!H!o!Þ"B"0"9"ƒ#u$~& ')W,0‘5V; @jEúKžQ/VØ[Ó`´dRgÎiçkálÚmßnoo$ooÙoÿp:p“qqxqÙqupÉoJmækújAg«e`é\`V|P~JPD‹?9s4R/+L(&}$í$s#ö#ý# $$|&|(‹,Œ0Ÿ6Ð=¤EPL—RñYY]¹bc=cãa'_Y$Q¸GÎ>ë5Ù,#ÄÂÉ 2 ÔáÚ mÿ§%9.µ9CòM˜VQ\Mceígxd¥b#\ËW_P,H½A6:F47-Œ(È$ä#d!í!ƒ ¶ V % +éÛ  € ¡ Ï ö!§"©$%&Å(°,F0G5š:¼@eFKÛQðW”] aDeTgùjˆkùmpn3o oboo¤oÁppypÓq%p·p n‹m dÇ—1ð)o×  €!F"r#Q$´&(³+Á0Z4û:ˆ?îEàLR?XH]3aÝehCjJlhmŸnÏo2opoSo\o~oÜp p%oxn›läkchåfNb\^@XïSsM–HB§=7®2B-ó)ø'n$Ç#x"_"R"""¹$%Á),81ƒ7Ÿ?PFÔNUZ`Ycdïca€\qW)NšE,:à1é)” ]\ç ç톊H× h˜5#Q-7¹BaLHT0\za†f,f[eÎaÖ^“YR»KAD:=™71o+£'Ì$Ê#|!À ªˆìg5ÎÀçkÖl  Æ!g"‚#œ%Ã( +²/~4‚9o?UEyL R©X‘^8bkfri kómšo,o oáoŸo–o”oÉo´o†n}mUk+i#eíb†]âY4S°N HMBÙ=¯8E3o.·+ '¢%d#"!E!Y! !ž"E$]&y*c.:4];oC–KQäY ^Hcvd÷e¾b¦`Y×RÛI>ë4º+ž#yg ‰¨šÆ^ Î Y–h½'1';ñF_O>X]çcìeÄfœc¾a\ÁW›PÄIáC<°7 0Ì+ò'Ë%‰#P" TC|)„4lü¿B¾  ô" $%Ü(¾+´/ä49ˆ?$EªLhR÷YM^Zcf€jlWn†oHoÂoeoLnûnØn;m“kíj$g=da`w\mWŽRÁMoGëBm="8d3’/—+É(ç%Ñ#È!ô!S ¿ ü Ô!É#%ã(o,Þ1¤8€?îGÒNÿUD\F`øe e*ea]NUëMžC8æ/%ÙàW |‘^)„ ÈÅU!(*¤5x@fJ;SoZ%andòg`eÁdg`^\rVrOØH¼B‹<É6p0Ç+?'•$—# !£j #=¤t%³Þ^ 4!é#“&(~+ø/|4X9]?œF!LáSuY^^brf¼i¸l¦mânÃnenBm”mkìjÍhŒfb^^ÂZoV-QkL°G}Aó<›7™3z/b,%(è&h#³" ¢ Pà " q"$'q*t/†5q=D¥LRùXÚ_cŽfbed#_`ZcQ·H>=B3)‘ Sp 1 „6»“ Ãý æ¦Ò$Q.ª9CÿM“U]aýf7f\f(bõ`J[ZU¥NÛHÍBç<â70®+¾'¶%„#!àÛúã¶Èd±²Þ` Ø"t$Þ'*-165¡;fAsGöNFSùYy^bìfj%kÔml¦l^k)jhFf‰cž`O\W×SkO9JÓFVAn<7)2º/q,>)Ä'$ö"Ë!Ÿ ¼ Î „!K"O$Â'$*ÿ.¬4Y:óB›I®P*VÁ\aÞdueðcva¨\U¦KîB7U-I$=î¦ ¿©èOwñ®(R> ‹'Å2=ŠG¨P X¼^ßeg%hAeÛd+`[ŽUPO(HÄBá=6e0‰+3'Ô$Ö#5!8öÉ@¬}¿f;6gy »"Ñ$Á'e)Û-1Œ7=CŠI¿O•U\Z‰_õd(hJj:k¯kj˜hßgHd¿bV^ÅZÊV Q‚L÷HœD-?•:Ñ5·1^-+(†&À$Á#T!æ!U á!b!»#9$ç'×*z.º3Y9Ì@¾HNT_ZÓ_ŸdCeVe´bK_“XåPÜF;·1o'qª‘ò Ú»¬ÿCƒ) Ji!O+364@µIôRíYÑaIe=hg f?bá_©ZwTÊN`HªC<æ71&,Ö)I'm%P#ø"x!§! é ¯ Š _ !§yk ?!:#$ó'z)±-0Ð6/;÷BaHTMÿS½Y^­cg\iGj­i½hêfšd^a]ýYáUlPmKªG BŠ>09¸5w0ú-z*p(µ&õ%ó$Å$!#v#‰#$­%Õ(*-20"4Å:#@ÃG2MbSJXb^%aÀdµdc_P[HS_J.?4ÿ+u!©Nü r•jU¸Úͺ·a¹1o \Ðë#Û.²9¤CØM$T£]b™g}h"he bû^ñZZT[NHŒBã=Ž7Ã3.è,u*2(Ñ' %¿$ž$#¡#L"Á"! u 1!!ù#×%¦( *-?0´5Ñ;fA¦G`LåR‰Wã]ƒaùffhOi£hSgda]YIT¨O»J]E@);i7]3\/ô,7)Œ'E&g%ª%§%^%j%Z&&Ú(¡*p,í.þ2A5è;RAGG²MhR™XE\æa¨c¢dàbËaH\=V”MEC)8.K%`¶Ë e "¨ï£“òàŒ˜öã Ó}Âk'o2#<ËF[NIV¹]c»fmg»e”d6a^Y?SèNHôDQ?c;!6è4 1´0G.m,Ø+>*.)q(î(+'.%Ñ% $µ%¥&³(›*_,ž.’1~4«9b>•DjI»NÕT Y^Bbuf°hnigïf\bß_TZ¹VaQfL1F¯A<(7ƒ40Þ.|+©)Ñ(I(#(>))d)ë*G+U,Ä/1$3¹5Ö9?=}C#HÒNKS$WZ\o_öbåbÊbz_>\‡V]OE:ù0å' ^ON 1Ù¶†‰·â]yÓ|S¬~ gçP l*œ5ž?ÂHiP¿W¤_Ád©gúg fca8]þYàTOtJ¬F8BŒ>­;Ç9<75¾4:2Ž1-/ô/.-)+Ò+*µ+”,Ÿ.n023¸6O9 =bB"GyLHPéU¥ZB_1c4g@hÙiÐgúf:bi^tYKT]NìITCÀ>9q532/ð.Z,V+K*+ +»,î-Æ.¸/•12º57Q:0<ù@üE£JñOØTTXá\š`Øb¯cza\_é[ÔWŸOõG<”2á)á!O 0_@ÁëJŸì ÔUnÇ+É‚« R«¢#-è8-AkIœPY_]dÒeôeàceb[`]]óZUPÓLÝIÇF—DA ?Ù>5<õ;•:C8Ð7–6Ž5Ã4 4 3¸4s5c6ý8]:;|=¹@*CéHLÒQUY%];aªeGhæjÙAîEEInM¹QýUâY\]x`CbÅb\a-]“[UÿOúG=3®*Ô#¾Î ávËOW¸~ñ ·]SЉèäŽß £&k%é0:B›IïRY `xd6fd–cÂb a^Þ[ÚWåT.P÷NLIÜH8FEFD#CAÃ@p?2>3= <‰‚@)AéDqG JƒMôQ˜UXz\(_GbÃcíd$at^øZ€V¹PGí=·4+#"ìé.$¦®þ¢^%áš{FOxà´¯$Ý ·¾ž'¦1l:fBCIÓP X´^jbÈcOc>a¾a—`ê_¸]@Z]WTTÏSQyPCNÂM‹L¢KãJøIÔHŠGJEÿEdEE˜F@GoHyI¿J×L†N]Q4TqX[]ûadgciÿlmBm¦k¿i¼eÙaÌ\×XSTNvJ'EÛBÞ@#>é=Ã=§=g=×>9?R@¢B]CöEFÅHVJL¯O‘RÁU«XRZÖ]X`bádÓcÜaþ]¼ZiU.O°Gu> 3ñ+#qÎkª ðç÷/Wc³üªŒšEKªwÞYÝû :ö¼"(;1Ÿ:ˆBJIPíWŸ^Sa©cvb´bËb}bŸaõ`²^‰\RZoYXSWFVWU|T³SøSQÔPwNûNMtMÐNBOKP0QeR~T#UîXl[&]÷`abœegkiÿkïmÍn2nolËkgŒcî_†[VWRÔOK)HyEÿDøDD@DFDôEŠFÛHyJvL9MØO=PãRÓUHWÖZi\¼^ãaQcXeÅf3eÍb¬_‘Z›VZO©GÉ=Ù3Þ*ª"Žô Í Fnoü|>—áÆ}ŽŸT$kl±—R° Î"¾(|1Æ:A$H$N•V1[¼_ç`ïa¶aˆbQbåcObªa^_Í^ì^€^]t\»[ñ[_Z¢Y·XyVþUàU U&U^V9VîX YZ¶\p^Œ`µb¼d{fgØi•kkl½mýn7nkmIliif˜c_’\ XwU1Q×OfM!L1KqK¹KÛL¤M^NÈP€RxT&UŸVýXzZ6\]é_˜aDfJ‘Q­Wf\;^V_²`=aðcãeµfÅgpg]gggKg\gHgfŸfeOd{c½c bÆb£bñc'cºd]eVfegyhpi(iÈjTkk±lhlðmfm’mØm§m‚lrkhâf¯dNb` ]Ý\4Z¢Z Y¡Z,ZÂ[à\ä^!_l`¶aûbðcÉdFd§eeÚf„g_fÆe”bk_ZÑWƒRãM÷F<‹2(ˆ!Fír ~A‚1 /±yªáö¯ew¡4gv=ÿÿ'=aÿôÅ‚ : †N-o'/5ÿg¦fÇd4a2]YƒUHQ€KD†;1!'ÆÈ½d6pÚdyY͉¢èòʆeЦ W„yBÿù:„#Xì>  „½ï%¶-R3Î9>IC”J O T?VXJYe[?]Þ`öcËf g;h\hÝitiÐjCj„j½j²j¤jUji€hÖgügCfaejd=bøaÍ`«`__¼_È`C`Åa¯b¾cÕdÞeceµe{e5dÕdžd~d:d3dVd×egff¢fëfýfÐfÃfµf¸f“fMe×e dödbbn_ä\ XLTSQ9MHcA8°/]&ļg?" Pæÿâ!ËÃåÒ’x‘Ñë­ D}¨*ÿØÿï-ÿÖϙՊ Gçnù#z*•0|5e9»? DqIöNQ0RÙTdVWY9\Ê`HceUfjg_g³h@h—hçii2i"ihœgöfÎeÉdDb˜`x^@\ZX›WoWVŸVìWJX€Yå[´]j^ï`Xa]bKccçd­eXeîf¥gBgÚhhThg“fåflf eÇeGd§cybh`w^W[+WËSùP¨LéIjD=’5L,ß%EÏ÷ åO¹$Ïx¥*Ë×î¡q‡Åóë«9=b«¸dÿòÿ²ÿÉZÿñÉ…÷ ²¥=z!Z'µ,Ç0t4*8 =AØFTI*JùLFNeQ’UNXë\]¹_ _`_ö`3`i`z`¥`µ`Ù`Œ`_^\LZdWÜU@R¢PN%L†KÙKK&KiLÎNgP¦RÇTêWXÌZ|[é]r^»_ô`ÛaÖbcbÙbÆb·b+ax`œ_ù_c^ë^][Y/V_SWOóLÛI¿GCD>í8|1:)—"ÉI8š î ºÍ¿»gúØO´tv¦áë˦RER­Ž/ÿ½ÿÿÏ!ÿéÿÃÿ˜¦[3† § Âh#o'€*Ø-¾1>5n:B>mACyEdGšJ‡MÖQS‚UxVTWLW™WÝW¾W°WwW\VòV{UoThR”PŠMÜK%HqE¾CÁAþA1@5@Z@±BQD"F¢HúKVM¥O¶Q³SrUEVÔXVY{Z´[g[ø[ø\ [ [Z1YuXtW‹UïT QcN³KÇIFGCÝ@¹=Z8N2±, %k‚b#‰ !ÿœhÀ_ÿó%a]ö„h”ÀÞϯ©`SK`wŽfÿöÿ—ÿ’ÿÕ!ÿÆ ÔàË »owæ"s$Û&û)¸-¥2!6=9:;‹=#?AVCñFWHoI»KK‹L KðKÓK_KJmIàHÕGÃEíCàAE>§ < :6k2,?&Z Öÿ(n» ;/f“’ß©{ä'yw$·pw«´ªœ™°\WJHOmaÿ¾ÿ†ÿ”ÿÕÿÊÿ¯ÿ½¾"7á ? n¸|‹’"D%Ú)¾-0Ú3;5f6ö8¾:N;Ú=)>‹?@Š@óAMA@Þ@&?€>8<ç:¾8`5m2n/£,ø+)b(—'¢'Ö(G)õ+¼.$0s2Ä4ò6ú8ÿ;=?1AOC.EF`GsG¶HG¤GE¢DAî?á=¥;O927l5Ë4Y1ê/*Ž%ž MioÚÓ v ,€ß×g-v<õj„AχwˆŸ‚ekºKQLHAF<&ÿ÷ÿªÿ†ÿ¡ÿâÿØ® p,œr q *HVÚË…¬[!×%›(ï+Å-X.µ/c031233f4–5m666Z6q5Î553Ñ2g0-›*Š'e$|!Àß>Ce»9È"$.&~(ª*Ë,è/1j3Ì6D8r:¡;ø==<=m< ;º9è7í5›3m1‰/Â.g-j,*i'O#—ʤ%d T 7)‡¥a+áÚiHé‘z‹‡uH7X‘¸BIHSUM7+ ÿÍÿ ÿšÿ¿ÿêÿúÿÍÿ°ÿ¯/â÷ìí[ € ÷E"Ìrȵ b"Ë$·%q&&f''à(·)t*1*…*Ï*r*(ì'«%#4 Yo°-ORBOŒæKXX“·ð"($„&ô)p, .20E1X2F21ú0æ/½-è+û*(G&Ù%„$,"í ò Q½$çl 3 Aߢd öëÉÚ[qQÀ™‹kK2?i—®9@D]fX7# ÿìÿÎÿ¬ÿªÿÂÿæÿûÿõÿÉÿËÿñŒ^AÇK¼÷È ' Z ˆîâÌDTfÀ dºX”lK{ŽØ ɈY; ã ç è à ý 1ä‚fDRb’Ì "U$)%Ø&'+&Ø&‡%…$x# !› 7è¹ 9É+zõ é  ÁöåeM&úÈ·jx<þËÃŨzD.6^‘2FJPI<*%ÿøÿÐÿ¥ÿœÿ³ÿÚÿòÿåÿ·ÿŠÿpÿ›ÿêP˜Ã®¾6눢Yõ  ÞCÍìUã(uŽ«“y)ôT“?Ò s â ZÙG.%Ø¡ç  ˆ  É‘z\>Hîp¯U®Î¢'£¤ ª Å :Ѫj;ùîÚWMq˜˜œ¼÷IiHýÑÂÊÈœ^)-Vlnk$AH=&!ÿùÿÐÿ¬ÿ¥ÿµÿÕÿäÿäÿáÿØÿÏÿÑÿËÿî=‹¢ zרö?"€ª8 ° } F ³ # 6 @ õ ž É F ¬ ¾¹“}Š¢í/´>#\͘K=<z»  o ÙmÓ#ÜnzšdF©ìš< ‰ Ä "ž¢Û\Êëà¬w“fUn¸ DX2ýÑÒâàÀ‹T.*1EPOK (<:% ÿòÿÈÿ­ÿ±ÿÎÿêÿóÿäÿÊÿÄÿÁÿ­ÿ©ÿ¼ÿÝÿÿÿýÿÃÿ¤ÿ±.íœòçÊÓ²MëpÐ:xº³’9ø›7±!Šù…Óv4ÿñÿÓÿäY¢LóÀ‰‰´×ç ƒ ò  9 1 : ²ê™>õÎ ”^"àpÿà(Ug^CIÕ5/äØêûïÄ’fHB=DQSEÿ÷"42$ÿðÿÉÿ¼ÿÍÿíÿìÿÏÿÌÿÛÿêÿôÿåÿìZ…w2|é'(ãžz€·×dÍE“¿¦X!ߢcäª{U@<.*'8Iu©ð#yß„E Ä*hf‚tèt.e¥¿‘–@Es™œ~_QPy¼ùùëëöôË¥†qfRHTV=ÿòÿñ18&ÿöÿôÿÏÿÁÿØÿû ÿÿÿßÿÇÿÑÿíÿóÿû $QW*ÿåÿ³ÿ¯ÿÒÿöÿùÿÆÿuÿ0ÿÿ2ÿ2ÿMÿwÿ¼CjpzreUQM:2FVG+ ÿüÿâÿÌÿÇÿÌÿØÿÎÿÙÿüB‰ÓG\YsmY‚ÿ”ÿŠÿ¸\]"ÿÒÿ£ÿ½UziM@M\ŠÎúíéðõÓ¯“‹„gJA5ÿþÿîÿò%?=!ÿíÿÎÿÌÿê#ÿøÿÅÿ¿ÿã$-PpmKÿ÷ÿõ (& 1HP[t’«´¯¨´Á¿·ººª¤ºÌÂ¥ƒ‚ucNGO]XYq…„wvwtrxsZ='+<`‘šy/ÿßÿÆÿã:–¾§c907Zq™Õ þðèíïêÕ·š’qF)ÿòÿúÿ÷ÿþ/?A.ÿþÿÛÿÐÿó ÿïÿÔÿÓÿç/@FBIIG2 ÿóÿõÿÿ  YœÓÕ³mpjp‘©ÅÔ̾¦•‡zkSCCF:+.#ÿÓÿ·ÿ«ÿ›ÿ•ÿ‘ÿ‘ÿƒÿÿ¸ÿô%@ZJÿñÿÖÿðaœ¨‘aIF@Us¨ëýööûýôæÝÕÌ¿»£uA ÿ÷ ÿþ(FH$ÿüÿó &ÿýÿÒÿÔÿôÿûÿÝÿÐÿò5ouQ0#=ZS6#ÿþÿûpÙ=W9黢Ї—Œš²ËÒͱ’xmiVIKSOILH6 ÿöÿòÿúÿü?enXF2<h‚ˆ‹ƒzqnlY_ºøõìðÿôÛÎÉʳ_3  ÿüÿû $0!ÿùÿþ%ÿÿÿéÿèÿú ÿîÿëYƒ‚jHDG=. (15")O¡ IS!þײŸ•–ŒŒ•§ºÂÁ®“zsnVDCLMLNLG;1ÿÿÿêÿéÿü;TN700&.Il~†˜œ‘{f`a}¥Ññ òãÖÏÅ·[6%ÿóÿúÿ÷ÿú '/ÿôÿæÿ÷5  7uŸ¦€X3 !)6JdnaQFh±142ôÓº¬›—œ¥¦¢¡šŠyslUDBNV]bcf_R9%'59(/HKGIXi„­¾®†a]t¤Êãêñ*+ 亾»§…[:% ,ÿõÿöÿûÿòÿëÿð"7, ÿñÿð 0><8A_–tO?:.+)6Jbt|u{›Ìö%"èͱ¤¢¦ž“‘Œ|j`ZKEGVhtyn`J5!-55@A-!3NOP]w–®Â¼¤‰}Œ£Åàó *.æµ—”™‹kF' .ÿúÿüÿûÿûÿ÷ÿ÷ÿû# '0' ÿûÿø=al`TRh}ndT?-#?g¤ª°¹ÆÝü#çÆ°«®¢”‡weYURW]h{ƒ„mL*  167EL>2<NNXt›ÀËé”’¢»ÂÈÖî!"ÿÔ¢{hc`K1  -$ÿüÿ÷ÿü  #&//#ÿý'Xz~o[amog^QC;9=7?Uw–­¾ÆÍÜø& éɵ±³¦˜‹€wopu|~~„u\;"!!#*/+)2:2.:PZj† µ¸®¡£°ÀÈ»´Æèö¸ŒjJ6! ))$ÿý.,$)..%7c~mbYUSLFAER\VONa§ÍåïñâÉ»¹º²¥œ•ŽŒŽ‘““‡yjXC7:@;1,'"+*-:Qg|˜š—™£µ¿½­—’¥ÄáÖ§iMB-ÿÿÿôÿü!%  Ó†» ó î(áo­fWš{T ´—ºØ;—'ÇÅ´[»¦¢Â—VÚ$› «!!î!ê!¨ÙË€y ç  ¸ n ¿ Ù ø       % Y œ Ù  à ž e l œ P œ Ì9ÚBñ©.’Àü'Pqˆ²æG¹8¿S(ùæ}ÜÈ –îB± ‹   Í!Á€v?ÿÂU9]:ÒÇÀ=|Ö”µïÜ\‹ÀnKý8ö-@L¦&TÙÍ &óšø¼¿vÀØÍ™Cù È  ¦ _ ¯ Ç ê  ( - 2 C [ ‚ ¶ Ô ç ½ n  ß ê  W l p k – É o P]Mã]mjMBp¶2˜,Ø¥o%ÞOž­»ØtèñÅé䥜³Íðé€C õGOè+76ß}Ûfš“6ŸÉ´¾Ô˜è K5_Q}™Is‚¦4ÔRµ:Â@½y$·´ËÇÄ Æ ß c 0 m ™ Î  + D T n ± Ê â Õ À ‚ , æ ¼ Ð ü , 4 $    § É E4›8¶ W 2 [ ’]@GL*òû| æüï"RkKb˜êσm©ãý³g´Æœ‰L'‡«J÷oÁYiœfâ¸+Ml®©íÏÀ†ýüäØ+ŒjScšê<DJ¥èR˜Sý Ó ¶ €˜Ÿ§  : t · ì  % L o ’ š › x M  Õ ³ ¡ ¼ ç   ú ç ˜ ø  ‹ Üå` ¯ ¤ ˜   °  ³ b?(ùœ'ªyñ³Cë€gï’påãoøüËú¦ó¥wðiDñ:A “ȨC¨ç’£‘xn!Ò$v1¼&â±R󡂆…4Ô(„ ' Á pí™Åç & I s ² ñ  ; ` s  t r T $ æ ¬ ‹ u ƒ Ÿ ¹ ¾ ¨ ” t 0 ù 2 . ¬ ¶ : _ p ë Ô : e ¶ H  ™5ÈÀÓ‚‹}!ßV;VQC-d$z*ÜŠrÛ8÷ilZËRK)t³©œ¬zQétçê«JŸ4â”?Ž/{×!=È)vç? Õ ’ Œ Œ o ) ´ @ Ø – N å S ¯ "¨o’§¼¾Îú 1 Y q ‹ ‘ ‰ ~ Ž ‘ w I !    O x ‚ i ] ;àÔ 4 Þ S ï ø æ % Þ Ý     = ˜ % › ) ¦ n<™GÁÓ›öÿM|î æ(RNŠ0‡›cR³ìR’R"ò±ñ•Ø 'c/Oô.¬2`ηŽY ‚ Õ + ¶ e ó   p [ 8   ~ B & âºwH9"þH^l…—š¤ËìçÜß <–  f † a N Ϧ¼ = n ‘  p u š º ² ® æ B Š Þ % ¥ ( (YãxÌÕ…[ ©.ä[¯‚7¬o9ÀD`Ss…=ýä´GîôšÔìÔCñ7è ± r Ç 6 â e î {  ¾ † p [ È¡cG4>Tn‚y~6Á ZÉU"ïàÅÅÖíééÿ#7VŒ½ÉÚÿX¶Eý…Ì´ªz:+Hr›­Äð + g ¢ ª ½ ä  I r — ± ï 5 Í l mÒÒŠ;Ôy)î™4…ÂÌik„Â4Fôk‡… ~ ) #µ–RÏÐAX: ± Ü  ª ' » 2âÈÙß±pÜlûáêí-W|„ ^ÝTÈcO?KFFTYB2?bu”Çôþ2‡×c"ÑKh…_'ïÑèM©i«ò ! H \ w ˆ ‘ • • ª Ò / a ø A Í Š n<ÙJ³@þÙr)Î>És󩎦¾¥PÛ¯Y µ è   ¥ Z _„Ž2 Ð 7 Á Ö Œ 5þœIûø3r—8¥¢}£'<Qˆ‚…Š–‘—NÊ€-ü7]hclhO<CZ`o‘°¶½Ó'ƒ®6}¸¦tA2gŸŠ¤Qclq’¾à÷ÿ  U ¦ ä ) } Í  ? ‰ ò m Ú  T «2½m&â™,¨ q  ç ï Ý Å   † ¨ … õ . Œ Q 6 œ / Ä D  œ Œ oñ¥^ Ö¿¼¼…5Ø 3˰ g¦¬tJä®8Îføì 0IE-#  .(+Gn…›¹Ýï$}ò`ªêçÁ—“Áæ6‡½`Þ @¥'¥ý % H d ‡ à  e ˆ } Z d ² 0 ‘ Ø  ; j À # À{4§ Ñ O     ? Y ƒ C   Ú ] 6   Q Š ¼ ‹ "nÇEô½[ý³‰|JèEžx-Ûç†ðÍ“JÁ…X"ü "÷ж°¬¶ÈÑÀ·Éô;f‰š®Õ0LijSCV€˜±¶ókŽÞ HÆ…c!„·´Éý V © à Û ª • ¾ 7 à 1 f [ Q N M  ˜ ä 3 Î œ w Š Í * 8 Þ <•E0üÖÀ«œWêRÂPöÂ]#ÐvsËÇÀ¶‘iRP\W2ü×À§ŸŸ£™”™šŒxT'ÿòÿóÿòÿõÿøÿïÿÒÿÃÿËÿù$c©à$#ýòû&f­îõÇ’†Âà*E“óÈý$m  I F !  $ Ž Q ^ p ` < + A } ž c 'ôÐà B u a 0ªt&Á†`E2îãHË_782û†õƒ-K§eK “)ß«¦•­Ñ\­Fnt„…‰sOïϺ¬•zaF& )W€—Žh,ç­žœÏ [·Éš'»†xÂ!‚œÂ³¡«… y·ZÊ0’¨tN†  o Á  õ ´ } f m¥…^I[‰°Ï—9Û<Ê{³ƒwu=Ä+´rC7=—ŠvŒµ’tÿ®ÿ¾ÿßC™“§‘ÞAy Ãºœf>÷Ñ¥vK' ç¶v0ýçÚ¹‡^Å]ÿôÿ®ÿwÿ„ÿ˜ÿäL›½ŠNÿøÿšÿ{ÿ†ÿä=²ƒó€È{rºr*«¨†¼>Ø H ‚ \ 3æ™nv÷èÓÉËÙÓÍ|\§öYæf*.@¬9 +/ °‰þn+«€wš;Û¡Q·c ›)° ? Ë f Õ 1 > > ã › H à u Ù³žhvÍ#œ*¤)¹Zü—"¬:ç‘y{¦É׿­;ÿÀÿ[ÿmÿ¼Uâ5?8YÕ>Ö2]­r3„ŸãQóhaFðá"ß¹Q÷‡â4„Ða0K?²~‘±b<_ž6ê›1grG 9wÒ©n« . ¸ M Ù ” Y n«ó.ùŸÃîã-˜Ðlýηk è ÷ õ Ü è Auøm3ÎS–Ãì!©GKxž‰ÿŠÿþËÿÿ¾tÎÖÌ{UU€ «)z°ô|XkybD<iÉÓѱhÊŽDírè^Ì‹‚¼ëúת˜Á ZQrÄ·ì[¯Š ! I j » E 9 > UZÄ0›~%ÀÃã…^+μ{¼u4{c“иh×áS"ûð š ê l =  ¯ 5 6 •œS¯KH0ØBrÿ€ÿ ÿS¨çÄq6‡SA¸à^Ó:f„Ç,¢ETW]Œ"+/ ¿s$è®n Åpø 3,ÖÖ w¸4½@V a * · ¼¶u;4L8¦'«E*[ŽÃ!³#Ë%’'-'é(~(P(5'˜&þ%û$Þ#Ÿ"Y!{ á ½ ³ rëÚ¿eÐ:èÔà;¢•³² & úØŽ±ò¥pÿÿFÿ@ÿŒ"†4\¿(EN¤ PkarÁ>¬÷$9dimuZ(ÿÜÄ©}N"%@M/*C¹? €«8Î ª™" ØVˆþ'L#ó†  Ž!!Å"®$%x'&(Ä*,m.P0F1¿33‰3á3y3 2G1j0;.ÿ-½,s+™*ú*Ú*Õ*¬*B)](p'D&!$ò#Ñ"§!m /õÒ¯ºô"‰¶>¾ y US@¥46Ê!ÿtÿÔ_Ö«Gfù”ÑÕõg…U$,‡ùrÈîÒ×èÔº­¶Øãº‚\m©êîèäBÕÈ}¤¦ï ûå­V‡l!í#Ú%}&s'v(1(ù)¬*W++Ê,Ó./„0ö2o3É586Ë8w:?;¥<ë=[=¡=3<â<;D: 8»7V5î4ô413ü3ë3Ñ3v2µ1ë0ò0/.K-},¨+ª*°)h'ú&a$ï#u" O9ò&3þ ™ ã¹u5ò'yÿðÿlÿq U\ÿ÷@ÔXz>N_?è m‚»¹ÿö G޳c^³7Ïi B“$A  þr©0óÛ!$+'f*-n/N0Á1o2R3'455ý6é7Ë8Ì9ò;'?@KAáC¡E2FG?G«GoGfFáFDECÕB`@ò?å?>´>>s>=_<—;¨:Â9ú9J8¸8)76ë5Ù4Š2³0é.é,õ*ë(ï&Î$Ï">„ÛÀ‘¤ Û £ 6>óQ#F«ƒ>Zò`DÓœ‹˜h^“ŒÎÀÿÿ7ÿ\ÿ`ÿmÿ”ÿÏ , HýżYmì ð Ê^sÄ|! $½'Ä+.S2!5j8D9å;B<=A>u?´@ÍAÓB‘C3CÉD€EVF%G GÇHõJjLsN©P¯R}SnT(T/TvTS™RgQO£N¨=>;,8ô6B3—0ß.l+Å)%!· Lò g Ò»N'Ò–aƒŠ%ÿìE¾Þš4ÿãÿã  A¦éçÿ{ÿ˜ÿ¼ÿÄÿÕ6Npyø¸ Iêh °eýZ7"¾'>+W.ã2 5Î9}=Q@DBµDEnF˜H#I°K,L;M1MŸMæN NTNåO€PqQ;R¦T]V´Y.[a]N^T_5_e_Ô_”_]è\²[_Z$YAXtXWêW®W8V;U+S¼RDPÊOjNAML2KrJÛJEIlH¨G E!B8?+;Ø8à5ò3 /º,e(!#`2ã%z á vNÉÚS#G²"ÿû0z‘;ÿÑÿ¶ÿÝ$C|‘ÿ„ÿ—ÿ¬ÿ°ÿÆÿÿ:4kÀØã R ׉7†ì i$j(«-,1•5¯9•=4ADŸH8JõMbNõP„QèS¥UBVÄW»X™XîY"YFY™Z>Zì[Þ\Ÿ]ß_ma}c«e†ggÙhŠh«ihÁh9gf dìcÝc"bzbDb@b@baq`Á_”^H\Ï[|Z?YWÖV¦UšT˜S¿S-R%PãNrK¦HDñAt=Õ9Ý61Ì-P()"ºi@?Ý ¤tDt^LÅZÿÎÿ¡ÿß6+ÿíÿ¸ÿ±ÿäÿâ2SÖáßÕÞù0"¡b, ¿ N›'?z#‡'+¦/Í3ô8%72-™( "¾BÚB × Ø¨ äï‹  ÿÕ+2ÿôÿ¼ÿÙ ÿø:YƒŒ{hT/KF+[Í E¹%Iq#º(”-206¢:Ç>øC.G°KÛOÃRéUîXŒ[†]ý`(a•bäd e¡g h1hÐici¬iöjKjÃkQkÓlKl¤m)mànÑoØp•qqqpöq päp‚oØo9n¤nm½mmmlmmÂnn!n*mÂm4l]k©jÛjigÙfoecèböb5a•`r^ÿ\³Z´W‹SêO%JcEn@Þ<=7 2A,(& dÞ½ µ ŸwÉãD3ŠÿÕÿ§ÿÉ ÿçÿµÿÈÿõÿÿ*> Œ © ” w A Ý å E ¸”‹˜¢:# (v-}2Ò8P=BA EmI‡MšQýU¬XÎ[]V_{bd3eÙfÅg¨h–iþkTlXlÞmam¢mén$ntn¼nõoo9o€oìp•qWqér?r8r*rrArJrq q,p·pOp oÇo²o¦oÇpp poÅo[n¼n,mŒlülAkcjbirh†g”f²eöedb¥a„_C\XXSõNéJE\A S#ž$/$5#ý#›#H#‰#Æ%<&À*.2ö76;Ô@£F1L5RWk[ _¯bÀf5hdj jjjÜjëkHkak&jÌjŠjÊk@l=mGnYoBoëp’qqjqÍr\rèsks¡s˜s†s¡ttÉu€uýv>vuv³w6wŽw©wUvývruëuputÀtwtWtetNsúsRrÃqøqp on)ml\kÕkìl&l˜lìm mlÙlîlWkei~g·e+b–_?[æWæSôOaJØE?Ð9Ä4.v(á#p¤Ê_ ¤»¤½KÙÿÛÿªÿÔ=l-õ.­.Â.–.D. .w.–/á1p4Á8‘=5AEbJ+O‡UZ^©bMfhÀknl˜mTlþlõlŽl-kzjiÀi/i&iijjÜk–lim1nopqLriszt tItOtˆu u¿vqvêww2wPwµxx/wõw¯w$vvuŸu\u t²tqtstrŸqØpÐo«nem*l jØj iViJi`iïjwkk’kòlŽl†ljÞi±h f“dzbK_ [ÅWžS¹OJ5D‚>¨8”2ö-&‹ 1J‰ì ; -B¾~%šO€88å8ú8ã8±8»9(97:k<?pCG8JÊNÏSoXf](a[eth²ln:pp„p¾po¦n¾m´lZjýiÌhÃhgWgfíg`gÅh²i©kl¦ncpq¤s7t'tÂtßuupuùv‡vöw/wNwkwÂx x7x wÔwRv·v)uÚu¦u^tëtus·rïqÚpÆornlk i³hXg“fñg g-gØhisjfk_lƒmm:l“kïjój>igñe¾cD_Á\kXCT/NùIGBð=.70‰)º"àÛWÙ ð l?4YuG;jB BÍBâBôBöCCC¥DÅF|I†L„PS;VÕZØ^çb¤eëiil"nÅpq*qpòpo/m»l+jwhög’fdÀcUb}aÐaøbcdeîgÒjln p%q¨rÔs\sïthuuµvQv¶vÿw+w‚w¸wÚw©wovævAušu-tÎtks»rïq¸p‡nûm^kŒi¿g÷fdšc)bb"bbûcñd×fgshîjŒk¦lrlilIkÌk”kjÀiŠhezbÙ_\\5WßRüMGdA?;4^-:&l 0äa² æuè[²è«ŒL1LøMMIMtM©NN6ODPãS†UíXÈ[±^àb'e;h j„m`o{qBqÁr2q•q ožnkàiÉgÅfdRbc`–^Ë]°\²\µ\Å]Ô^ï`×bÉe0gjl¨nÆp}qˆr§s™tµu¦vŠw wpw”wßwÿxwÙw’vív+uLt›sìsPrTq&osmÔkÈi—g0dÑb«`y^÷]‹].\í]·^š`atcdÓf¿hÖj‘ll¾m7m?mm©mßmelÃkiIfœdP`Ä\½WIQáKºEå?B7õ0w)t#;š¹ $ ²l>Ô-³T´U„U¶V!VoV¨VÿWAX3Y[ƒ]M_Šb d§g i k1lÿo&plq5pÉpŽo_nkêi‚fÎdRb(`.^U\%Z5XiWdVfVdV€WXlZ[Ê^0`©cŒf”iNk¢mtohq/st£vváw‘wÑx5xOxhxw¹vêvtçsÉrqeo×nkªigfÂcôa ^)[³Y3W¦VEVUèVîX7ZG\!^7`Fb|dÛgij…k¸llmQmín—n³nÆmþm!kWi¾fïcî_lZ¹UO°ImB¢;;4-8&½ µ|P Ý—Š1С\â]É^-^Ê_<_…_×`:aaòcFdxfh jkžlån^o˜q q|qipom jÓgÐd¶aŸ^Æ\nZ;X?UäSçRQ-P;P0PAQQªST¡W)YÇ] `mc¾f½i\lnq s)uv9wAw±x@xbx‡x)w¼vÒuùt¤s7q]oºmjõgØdÝa­^k[8X UJRaPOO NÇOâQUSÏV&XÄ[E]Ë`UbÐecgŸi³kFlânoRppÔp×pÏoÌnÊl¦jšgc?^YASPMEî>°7p0§*"½ÜD ð ô§ƒb3c.cÌdŒeeseÆf9f×gfh9ijWk¾m n nÅoÌpqq"p£o¹mk•h²eaî^c[ WýU{S'Q.NÛLôKBJ[IrILI6IÃJ KBLÃOcRUdXà\–`cfñj#mfpr´tvv výwåx"xbwûw…v‚u°t&r[oÒm…j‚g1cS_‘[ÏXTQVN—K€I‚GûGßG{HuIÆLJNÆQ­TuW/YÅ\[_aÚdžgi~krmrnçp\qqÜqq oenkch“dZ`Z¶UZOHzA{:Ü3ö,Š%U\«H0 ˳Ég+h3høiÍjaj×k(k“kül?l»m}nso^pp~p®q.q%qo©mâjÛgûd_`\¢XÄUBQ¾NöL~J‡H/F?DCnBLAÝAxAÕBCQDïG³JQMÂQYUlYc]iameKi?l°pr‰tæv0wow¿xw¦w.vu.sRq mÌjÚg1cF^ÏZdVQMÔJ…HE CA†AH@ÀA‹B§EGdJaMZPaS-UòXÀ[Ó_bue´hk^m“oÆqm–mîn<Û;”:û:m:¹:íb<­;G;:—;No@€C>F IKñNÈQxT~WÍ[“_fc'fÚiôlòo$qŸrÂsfrq×pIolÁiçeÒb]aXÅSM`F‚?s7Â0(Ÿ!KÏÒ kalVmEn&nÏoqoÙp1pyp¿qDr*rás.rórürsqæp8nyk3gŒbÜ^]Y²UP©L5HOD[A}?%=x;H9T76@4ô4a3ã404S5}6í9i;³>åB'FoJÒPUZZß`GeAjJnZrctÔwwŠxwyvöužt§r6ojxf2a[®UÓPJ{Do?—;z96P4õ3á43Ñ4¶5å8:<´?JB/EHJ¿M¾PèTâY(]Ôb|fjTm1pnrTsÑs•s,qÖqogm7iñfßc,_Å[1V9O¶I(AŠ9Å1Í*"Ød~Ùkþlám×n·okppŽpïqPqÎrvsZsÜs÷sus[rkqCn«lgâcP]æXÈS¾N¹JE[Ap=‘:þ8ë7‡5‘3Ò261>0T0/ï0@0D1245ÿ8Ñ;Œ?—CåIOvUÍ[àaŒgZl3qt"vÜw•x;wvêuxtq÷n±i´e _VYYRÓLƒFP?¦:?5†2Ë/á.¸-Ö.J.k/Š0ð357Z9m;Å>MAC¶F¢IuM@Q}V§[÷`ûe‘i2mo¹r'r¹râqÔqJo÷nakëiofdC`è\ûWHQ˜JˆCR;o3œ+û$¦‘m)nnûoØpŠq3q±rr˜sIttÜuut7sër|pŸmi|dd^èXÁRóMtGòC>:;6s4+2^1U/².R-,Œ,/,Z,‚,º,†,Ê-x/0t2½4Ñ8Š<¸BÎI'P8Vë]_diÏosAvwsx2wNvtôsôqamüh½cÚ]¾WSP3I6B_;)5l0a-*e)0(H(Ø)%*h+á-ê/Ú1½3M5 79•<,?=AùE¬IÀO+TûZó`€ei«låp!q{rZqÆq‰po•mæk÷i×h’ffcŒ^ºYæShLÌE=K5N-&%­mÊnšoŽpbq q«r'r“ssòt®uUu7tås¹spÞn8i¿ea_›YpRÚL¨G Aa<™7Ì4J0ã/-Ž,à+ž*¿**$*q+ +z+™+J+8+¥,»-….ÿ033<6Ö<ÐCJQ¯XÛ`BfÉmLq–uxv§w˜v¦uØt+s%p®mlhhcÉ]äW²P…IIB: 4Ã/¢, )O'Ì&”&Ý'()@*Õ,[-ª.”/Œ0¨2™4Ô7Õ:o=ùA±FõLÆSJY”_dYh9l0nbpApxp²po’ntlòkHj„igcQ_oYÔT)M-F >g6s/»)un[o%ppïq™r=r½s!s¥t“uFuÁuGt³sqÚnûkfGa+ZÆSíLëFb@È;'6­20/$,7*Ê)©)A(H'Ì'›(7))ö*‘*™*I* *O*ï+'+Ê, .]1,6Ó<êDÈLhT[\mcžjÒo°t"uœvÂuÍusPrEoçlÐhcÐ^@XoQhJ,B¶;4ý/µ,‰) '?%©%%I%ë&š'™(‘)G)Ÿ)ï*?+z-/Ó255¶9E>DaKRR8X›^¨cUhkno oÉojo}nämÖl–l)kJj g7dF_žZæT¬NgàmCr9t"u©tótmrãqào§lÞh¾e`+[T©MÞF>è8¯3L/ù,j*k('õ'a''œ'Ú('í'’'-&¯''Ö)ì+Ü/.2|7Š<þCÒJÇQ²XU]ÒcAgkmnŠn¦o-nØn&mlŒk·jÅh°fybÈ_YÖTkN-G£Añ<«mìno^p p¥qLqÀqør:ss}s\qïp¨nkUfòbG\&VO?GúA5; 6P1.* (˜&­%é%0% $ƒ$®%N&¤'þ)")ñ*B*Ÿ*Î+4+2*µ*)D*+d/ã5 <ÎDzLúU\]1e:k+p¥stýt™tls qÿoÆm&i~fKb]¼WÒQyJ;B¼rEÇM SÚZq_Ûeoi7lžnoromoVn{mÂlÔl(k iÁg•eqb?^ÏZŽVQ÷NMldl«mm´nOnØoo-o-oÝo®nÃlCj#fmbN\©W0PºIôBÿ<6N1 -T)k&Ó$\#!!â!’!D!!Ï"¨#¼%N&×(O)¶*´+È, ,+6*3)'®'Ç(!+œ/Å6×=ìFNNVº_"eëlUo×râsltsPrÝqbo±m(k gßd›_iY’RjKD­?;k7Ù6443Æ3½3÷3ö2Ç1.?+d(£&$ƒ# ##/$û&µ*I-ð3˜9›@êH/OhVp\bÎgck¸mÝoÊoòp$oVnzmklÏlkiogõe¼cH`%\¹Y°VýkÄkÞl2lÚmŒnn%nCn:nÂn:mjgwc'^SX%RbK×D½=¶6ú1·,Î){&#Ö!Ç áéÜÜ ”!:"n#¯%\'(æ*¹+ñ--,¬+b**(ë'^'!')ð-i3á:yB¨JºRø[dbmi+m/p¸q¾rÄr{r—qÑpØomˆjÞh%cH]¨V’OhI%C–@ oÇpApÖp"o6nmllÏkéjžirgÓfc×a[_8]hk‰k‹kÍl„mCm m©mÙmÑn/mUkëhe`“Z÷T2N"G…@8ì2A-R(¢%¬"§ ÿ[É&a¢Ÿ ž"(#ª%'Ÿ)­+Ë-.#-Ê-+*%(¾&ö&B%­'Ì*n05ú=ÌEMåVq]ãei”m§oApÌq q²q™q_pioÔnl(gîb×\U`OYIîF@B†@w>l> >P>ð?^>;Í7¸3~/C+…(ô&Z%5$&$¸%F'‚)Ž-½2q9?¨GNWUr\b€h€l=ofpAqJpÁoÌn{mðm‡lÌkÉjÛi·h‡gexd)c,kVkUk¡ltmMm¦m®nnnFmk˜hdf^®XcQ3JäDG<·5š/*~&#œ!(úœ.ÎG°Ú!"ô$À&û)r+Õ.5/Œ0ž0A/¦.=-+º)ÿ(ý( )_+/³4£;ÅBßJàS Za¢ffjÃl×nÕo†p}pÂpøp«pÍoßnêkˆg=a ZßU#PLkHÆF”DeC¥CoCˆC‚AØ?x;)6‹1½-c*M'T%ó$ž$ß%"&Þ(E+²/ª5Ê;ïC8J…QäY1_ŸfFjËn¢pq”qPp‚o)n§nJm¨lºkÂj«i«h¥g_f|eñjãj×k)lmm{mŠnnnl…jïgbÓ\VUfMÝGS@Å9+2?+ø'ß#ý" E†VìÀrü R!Õ$&( +t.30ã2|3É3¶3‚2~1ª0{.ú-Ò,¤-2-ð1w5ƒ;÷B`IÜQŽXª_jd6h»k2mŒn‡o¡p pyp«q\qCq8n»k=eŒ_ºZ8U€RENþLàJ°I’HíHtGãEÖCI>É9Ð4d/G+‰((&%%%&Y')È,þ2©8†?åG6€/ü*&–#X" Ñ ^PßÏ¥ B!»#u%ö(I+&.\1†46†8A8°9887065 3Ö3å46Í:0?ãEuL RÐY2_KcÖh3jÉm>nLo[oŸoáo÷pŽppÒnÐkàfœ`í[‚WTYQ¯PNL×KóK JG×EF@Ý;î6H0±,s(Ö'E%´%¢%„&m&Ó(ê+l0|5í=6D}L.S†Zb>h>mdoÖrir·rtq:p¹p=o·nÛm¶l…k¥jðiáiCiiii˜jÌllÃm"nCnncl5jDe•`XGPªHíAÎ; 3¨-Š(%$"!¾! ×ÿ¨Á À!}#,%.(*Ÿ-Ð1w58:Ç<×=Š>=É=œ<ï<*;49í9–9g;–>yCtH+MÕS²Yy_cgÂjflåmýooHobo$oPoomDj¿e÷`p[ VëT¯RºQ·P@ON2M+L&IØGABÕ=ó8/2G-¦)É(&n&@&&¦&Î(e*2.Š3`:rA£IPÜX`+fÍl oÁrís¨sÛrÕrfqÛqlp”oQmõmlKk)jjHhhh×j)k¤lom n”o#olªj}eh_cWRO¥Gã@f9x2,D'&$µ"“"4!º!³!$!!/"0"ü$Æ&á)î,Â0K4L8G;û>Š@úAôB§B]BQAÓAE@s?9>Ù>Ê@ãCŒGéKìPÀU×[ `$dMhCjÎmAnfo›o²o—nÒndmxlÆjšgücV]ÆXXSçQ¢OåORN7MIL”K¯JæHãF…Bc=ð8Œ2á.D*j(¡&î&¡&0&–&¤'ò)C,è17˜>F”MþUt]œdžknérÁt tØt#sÖsBrýrQaNÁLÜLsK’JéJFI{HìGKEFA‘= 8¤3I.¼*î) 'K&Å%ø%ò%Á&Ì'Ä*ç.T4o;#CFJÐR‰ZÈbi m®r8tu€utétQt=sŸrSpµo£n¼m`l~lfÉfågýi~kHltmŸoäpäpìn(k³f=_ÕW|OÀGÊ?™8!0–+V&¤$Ø#l#¡#t#¦#«#í$$$ã%˜'M)',D/†3º8#p;56ë2<.*ž(Ã'&r%a%$¡%w&.(à+¬1C7©?ÜGƒOoW¥_fik°pÓsAu(utòt`t‚trëqSpNoknm+lÂf‚fžgÖifkPl§n p”q¿qÝolzfß`TWèP5HC?å8M0Ê+»'.%‘$b$Å$ª$å%%u%£&@&ò(*,ÿ0C4›8ú=`A’EHÛK?LþM‹NNãONßNQNeNöPåSUÞXW[M^b~==:í8i4Ü0Ý-** (I&Í&$þ$j#é$l$²&Ê(ð.4A<…D:LITz\cÓi³oZr:t•t°t½t8t’tbsQq¿pÇoçn‹m m.f¯fÈhi€k\l¹n/pÉqïqÿnöl&fP_¡WBOªGÙ?t7ç0˜+Û'”&.%.%¢%Ž%Æ& &i&…''°)0*|-0E48¡<ëA7E2INLPNÀP.QüS>TZTëU5UÓVÔXÑ[]§_œa³d)gj:lðo/pŠrrÙsÜsýsärÅq´oÎn6kFh+bô\ðUüO4IìEmBò@ƒ>ò<ó;q:M9_8c6¸4É1é.+(â'i&0%–$–#ý#}#À#¥%4&Ñ+1‰9ÏA‚I¡QÈY†aug¶m·påsŒsÎsçsesásàròq„p¶oünÈmômŒfägh5iŒkAln p±qÍqÁnkk0e^+UáNkFÀ>I6Å/¶+o'›&’%Ù&e&d&œ&ñ'P'S'¬(H)»*ê-v0³4ÿ8Ô<øAYE¿J2MÇPâSU˜WYnZÊ[ð]:^Ñac‰eÌgCh~j)l[nïq.rás¸t¯uu–uouTtBrûp¼nÒk©h|c(\ðUzNHBÇ?©<£:ª8265?442ò1v/,d)Þ'Ó&´%½%-$=#™#%#B"à#õ%)w/%7k? GSOnW=_ZeólLoÌr¾ss;r®s7º;?ÉDIHÍL¸P?S UÿX[!]V_Zabc«f:i!kclÌm©nópr¨tbužvv»vÊvµv$uætès¢q=ok‰h%bÉ\¦U.MœGAQ=:7¿4ë31®1)0Á0.¾,³*q(f&Î%õ%.$ #¹#"©"¾"O#)#í'ü-e5™=ME˜M³U‹]·d~knàrrkrzq×r`r›qßpÏptpDožo&nùg¨gÌhÌi²jçk÷mDo½pOo~kf¨_·X~PcIA‚8ë1¡+5'ñ%$¯$^$ö%%X%á&g&z&Ã'S(§)¾,/$36$9©=£BFJºNsQšT×Wò[9^Hac»f£i•lÓo4pÑqœrÀsöu|v¥wgwˆwëw²wv$u³tËs²q[nåkgNañ\+U M†FŠ@.;Ç7¾51ö/ò.N-È-z-,#*…(½'%Ú%($‡#ø# "N!Ô!×!h""‘&>+S3m;)CžKÄS¯[òbóiçmúqRq»q»qq—qöqZppdp€p*oïoóg§gÒhÊi›j´kÃlùoMo}n.i1dC]U˜MxF>{5Û.¶(‘%¦#"Í"‹##1#…$$Â$ø%T%î'(((*7,ã0F3629¼=æB)FPJMQT¦Xx\ _tb’eði3l¤o8qDres±t½v vêwxwuw²w\v£u˜u t5s]q]okVg›bz]OVÛOÜHØB/=$8¤52$/É-«,¹, +š*¿)l'å&l%8$u#Ï#8"E!~ ò í ”!L!š%)Ø1Ð9‡BJOROZœa¼hìm;p¹q$qp\pãqKp¹pppzplpopªg¼gçhÚijŸk©l¿nän´lõgb%ZžR÷JÅC5;´3,&3#–!8! Û!^!k!´"G"ï#7#Ÿ$A%Z&6'æ*,ô/Y2B5k9]=uAÍEäIæMêRVKZ`^%a£edhél„oSÜX%\I`dg¦k$m¼p1q´s tulvfwvévÊvXvuu,tvsµr\q=nàl'gÐcƒ]ÛWõQ\JžD™?(:ý6§3V/ÿ-Ì+Õ*´)“(†''%¿$m#j"Œ!ã! cæÜˆ ) K#s(/×7[?ÞHPAX–_Òg9kÑo“p%p=oco¸oío9n¨nóo¾pp{q e2e©ghXiÖkcl”n«mækxe4_.W3OFª>ß7f.Ì(#"¿ ¤œ‚NºÔzü Q Ü!"“#w$¶&'Ú)s+—-Á0å4%8ˆ=BaG«LâQÛVq[$_fcºg/jal¢op¨r!s$tquOuûv v#uÍuntÙtZsÄs?rsqìpDn+jnf»a±\“VyP IÇCþ?(::6E2T/Ž,í+P)Ó(¦'%©$P#V"y!Õ! kôëž ; U#e'ç/6å?OGŒO¼X _Ff±kSo o¶oÐnåoo4nnmênLoBoÃpLpúa[bKdGf7hUjwkÿnim§k!dœ^eVBNE…=¥6,-˜'!Óæ  ×@xØ7®  ª!`"l#w$½&'n(¸*f, .¨1Z5~9ò?ˆE5JæP'UZ0^Ðcgf»i¦k{mop˜q£r²sVsöt9tštuts>r•rq¶qYq1pnškhŸd[`%ZÈU NéIC±>.9‡5 1Á.~,W*g)';%¾$j#‹"·"!J º C <ù ¼#¿(//¶6ä?4GqO¯Wù_+f›kBo o™oµn¾n×nÈmámMm§n£o$o´pk]^a3cÛfšiIk#mæm4j¤cé]ULLñDbêG,OyWÃ^úfk=o o’oµn¸n¿nm‡lØmnn‹ooÞUÁX"[³_ic#f¥il›lijEc®]tU/LÝDKa8ê4œ0&-*‹)' %¹$w#¡"º"!; ¸ 9 2  ¿ á#Î($/†6ˆ>ÉGO‚WÌ_ f´ko`oÝpoonšmXlqlˆmZm£nnÐN Q5U¶Z†_ScÀfîk9k’iáck]JTûL¯D<4z,%Á PYöˆ{ót:ô ¹!r"2"á#Ì$ð&6'R(T)e*W*Í+ù-‚0Ó4R9–?-E‡K”QZW2\2a7d¢gœi j…kQlemm\mbmm¹mîn nBn mkl§l!llcl†lak8iÞg›eËb©_YÆT5M£Fÿ@º:×61-«*Ê)!'%œ$^#"’!È ý „  Û ™ Á#´(/w6q>µG"O¢Wé_(fõköoÍpGp˜ooknÁmJl8l5lómmlnDêHáNbT\Z]_ÔcñiCj…iÂcÞ^$UìMØER=65“-E&Ü!ª$ʼEؾ ›!‡"f#;#÷$Ü&'2($(ý* *î+2,-i0Œ3Þ8ù>GDJËPèVù\ ad]g9hj jÎkÀll*küllSl{lºmFmolýlJkäkúlulÂl½k¹jth€g=d½a¾\‘VôPI]Bê<¿7“28.c+)#&Ü%m$?#"“!Ç! œ  Í Š ¹#º(/†6y>ÂGMOçX)_cgMlfp2pšq p ožn…l¯kMk k˜kok›l*<@ÆG@NSUx[ê`ógHi„iÉd”_RWØ7.â(h"<n£5­[ c!N"B#6$!$ë%Û'"(V)#)Æ*Ã++Ì,-0d38j=hC’IáPGV–[Ì`ìdfÊgãi6iájÃkjÚj‰j¦kkl lÝmBlþlulXl—m m=m@likLiªhÔfÅd(_!Y‘R—KèEO>Î93P/ +=(ú&|%$ #‘"·"!r! € Fú ² ë#ó(L/›6s>·GZPXQ_‡g“lÃp|pÌqapjoÉnAljAi¶jiŸi¢j3™9@tHqPWè]áe'hoiýeÏa=YlRIÑA»9Ý1Á+"$Š!ϱM !4"!#$% %Ù&Ö(<)}*A*¸+~,-,^- -Ü0b3L8 <¶B«HàOtV [“`íd-fãgãii¡jnj jTiôjj£kAlmm¥m¡m^m“mïnKnHn3m^l?j²iöh e•`®[6TKM¼G @ˆ:‹4x/Ê+e(Ç&8%$2#ã#7"£"4!Ï! ¹ R!!?$I(‘/Ë6–>ÜGPQX‡_­g¿lápcp}q&polÌiög©f’fƒe«eeÅ+I19ÎB¶KÈTZðcgYj(fÿc[ƒT”L‰DŽ<œ4•-Ç&¾"ºúü_ù É"#$%$&(&ó'é)]*¨+u+Á,+,z,‹-$-¸/û2À7[;¿A†G£NnU_[V`ïdUgRhri¥iúj–jšj7iÁižjj«k¬lÜmµmûmðnJn±ooon&e'[(,)*-+K,\,Õ,é,½,·-I-©/1í65:n@%EïLÀTZÌ`÷dáhriçk\kˆkÙknjÄji»j j}kzl“m–n>n«oLoÝp—p´p‡olnl†kËj%hc^RWmPÔJ@D>37¬1ð,>)'&Û&%›%$~#ä#,"m6m/–(¦$•!‹!: !!à##ñ$Å%¼&¤'v((·)D)ö*~*¨*ÿ+r,ë.:1€5d;CA(GÁN TS[`·f:iWk¿l l±ll­lÐm m™nDo o¿pA9å4.€+*(@'-%ÿ%Ÿ%9$Û$9#n"m"!‰"ñ$š) -Ê5<»EJMvTë\wbEh@jðläkiìdÊ^ U&MƒFS>¶8y2g/#,]b!¶+e5ä@òKUó]±eh‚jvg‡dÂ^ÉXÉPþI#A9O2i*ê%ì"!A ? ¸!!ý"µ#€$C%%ÿ&Ä'H'µ(h) )])¸* +0,A/028!=âD{J¬PÏW-\òbåfájk*l1lrmm£nHnüo¾pdqqOq[qaqÁr7r¯ržrGqOpro2n3lVj¡fÀaç[0UN F×?Ñ9)3Æ.#*ˆ'Š&œ%¹%%>$Í$,#„"œ"š"Æ$ì''+ì0þ8f@PH¾P’WH^5c'hiÃk h½f`XXòO°Gœ?Þ7ƒ0)ñ&W"á Ý|ž)3Ž>œILSÀ[¾cØg¥j¿hàf«`ç[oSëLC½<*5.-;'^"¥!-ð d k ø!"C"Ã#_$L% %%Ü&g''¦(<()^*:,ì0)5j:ÑAFÍL³RÏXÇ_cágèi¸kWk÷lømÔnºoxp3pµq8quqŠqŸrrar²rjqåpÆoÊnfm2k!i;eH`ƒYÑS\LDDï><8"34-’)Ú'&z%Ô%È%]$Ñ$$#š"Ê#2$&Ý)ƒ.…3ú;žCÄKþSoYf_¼cÛg²hdi6fFb÷[ÆSºJA–9O0=(œ!}‘¿ ‡Œ@&m0Ë;ŸFFPÌYaQe¶iâi=gÏb’]ÜVÚOGG?Š8|0•*J$§"1 s ® H v Ä!C!x!Ñ"~#4#¢#é$3$´%p&H&µ'†(?*©-¾2®7œ=:BsGÿMÑSØZ<_wdf°ijqlm4n]ooÚpHp¼pûq%qMq´qôr%q§pòo–n_l¬k!h¬fXb])VvOÓHàAÿ;÷6`1È,](Ö&&4%ž%t%$„#Ý#¡#C$a%õ)q,Š1Ô7Ò?¨GÃOpVd[Œad"fØff‹bØ^SV9MÔD<;l2Õ)€!¸€…¦ 1—×#·-ý8˜C?MïV”^ÐcªhÙizhõd^`mYéR¹JC ;ä46-£'#x! ñ ýþ K X „ Ó!M!Ì"2"L"•#<$9$û%ö&€(~+R0 4Ê:#>îDI—O•Uí[o`QcšfØikm!n™oVpp~pðqqqq0qEqfpÜp nnlæjÝifocÖ_IYêSLWEØ?±:^50ƒ+O(%ì%·$þ$°$M$#y#˜#Ö%Æ( ,/­5P;ÝCÔKµR³Y4]©bVd[fd°cü_‚YÃPÃH>5q,„"ò µ¦ » ¨/ª * 4.>´IŽR¬[`dfph^iežb“\³V`NŸGE?û8¶2++ &v#"1 Ø pøéÆÊ²ß S Ô ì!!"_#]$Œ%&š(÷-,1‹6›;?ñE2K Q,V¼[»_ŽcyfŽiÍlmínÛoçpcpðpüpÕp~pppZpfoÂnËlâjýhfSc9`[UMNzHBX<í8%3.‰)×&ø%$£#Â#l#$#>"ä#‘$¥'€*e.ò3M9ƒ@‹H_OáV\_Ðcpd@dób²`Û[PTpJîB39/Ä&ш% U·Þ lá%¨/L9µD¸NeW]dgQi]fúd½_uZRòK©D=6q/ )„%##c!ž ýõk üª¥êj´ý * ¾!±"ê#z$Â&x)Î-t2$6i;U@wFDLZR%W†[ë`QcßgjIl«mòoSoïp‹p†pVoúoøoäoÞomükÞiÏfçd1`V\QVÉPªJ)DF?9ö5N0L,&(&%Î#å#N"u"@""R"*#b%=(ô,\1t6É=ÉELLóT:YØ_xb^dÛd^d*`ü]ÜWOEg îu9 %( f)N3l>UH†Q¾X¯`bd®h+g:eüa€]^WPQHÇAß;I4.B(ý&#©"œ! -ØY3kÓLl w!{"#/$]&Ñ)”-™1u6C;&@ÒFºL¤ROW9\` d;gjjal4nooÖoÚoÅokoqo,nÕmli™g-c»`I[«VÞQKE??ï;:6C1È-8)µ&h$y"š!á!4!@! !!Ï#¸&9*œ.”4P:¤BBIæQX:]Zb]d=ešcíbØ^«ZQüI9?U6¤.$$ÎC<ž»GË V„,#R-!7èBžLxTS\›aÔfÃgSgcX`HZÞTÎM~F®@9534- (å%$"9 õбË`e­?–‚ ( ›!{"s$Y&P)b,g0«5":²@XF_LJQéW\fafe:hÌk mfnšo³oÐoáoooSnŸmÇkáiìf×cÈ_—[BVP¿K$E~@6;66Ñ24.M*Š'¿$è#!K ”  5é ”!a$',0¶7B>“F©NETü\`ÔeeÛf/cua\HV LÔC}9¾0ü(§]Jã Höî Ç Fr/k&¯0ß;¹FNäWƒ]rc e×g d„b€]øYR“LEp?,9I2Î-ª)L&Û$}"ô èxjýFëXÕsåI„ 1!$"Ó$^&¬(Þ,Y015W:t@:EòKÜQäWŠ]2a©eÐh—kŠm6nÅoo0nmmîlkhie³aÝ]ýY8T^OIìDË?¡:à6*21.@+9(c&8#±!ì gñŒåÄ Þ"S%¼)(.‰4 ;8BåJ¿RX$^õcfHeÁeJaÏ^ÎXkPßFö=~4 +>#: žÃà&³ýþt h¹ f)ã4Ì?¸ItRqY`„dug^f8e#aP]°XRKBEG?g8ê2ÿ-I)q&O$}" -Ž®ÃZ׿/Üxý'šc ß"K$H&(Ð, 05:I?|EHKRQfWv\ŠaDd´hgjµlßmJm{lPkhitgƒdG`Ó\Ä9Æ5Q0õ- *~(C&$-!ü wI®0…!W#h'd+G1:7·?…GBN›U¢[VaÍegeFd2` [ûTPKA7v._%B8ñÑ GF/$$ºÙ äÍ#7-Ÿ8‚BßL6Sœ[Âaeëf¡fºc¹aZ\×WµQ]K–E¤?Š9{3-ì)À'8$U"= ¶¡,g'¬].q÷ @!±#²%Z'Â*o.21ø6ž;6@•F-L!R!W‹\«`¼egèj€jäjði@g×eJbÛ_ZãU¶P—K‹FäB}=ß9M4~0n,±*;(&|$¯# !d ^«Ú½ ¥!­$9&»+/Ž5ý<üD¦KËR8Xà^c{ewf!cKaŠ\ÃWDN{E&:Ë1:(lYÍy ˆ×tdè%X ž*W¢&h1< EåN&VÛ]jd,fïhaf7dÚaI]jW¼QóKE§? 8ú3-„)½&5#ð!Xº^Ö ì zôEg ‹"_$&A(+«.è337’<ØB+GûMåS“Y]Ãb¨eÁhŠhÅh¨fŒd»aš^’Z#U=OšJ,E.@½4œ*ô"Uiƒ +YnÝ»ÿ<fÄ |ÒÕ)¢4~>¯G½PžWØ_Ýdwgªfäfoc¡a-\¨WtQKnE¥?9À3±.ð*Î(E%~#Ø"M!°! þ Ü õ!!0!'!*!!™"b#ÿ%™'Á)®,d/@3O7—<½A·G L°RGWè\ÈaØdègŽgmgdub(^iZ¯U©P?JlDá@;„7‡3/8+N(Â&­%ç%$®$ #ž#$#C#v$–%Æ'ò)ü-10852;B6HÍNÜT¼Y¾_bìeŒduc+^ÉZûSòK°AZ7¯.8$®n=r +<¥«×ʺÁ^¢Ô© 0kj"4,Ñ7dAXJzRC[.ahf¡gŽgÛed7`ÿ]W5QiK^EÞ@“:¸5‘0Ç-™*œ)'b&%¹%|%x%´%È%–%+$¼$K$Œ%&x'Ò)¤+%-h/Û3š7¡÷:5r1Ü-ÿ*ÿ'ì&J%%,%;%£%¼%æ%ø&ž'ƒ)7*Ú-+/*2{6&;¹AùH£NjS‚Y%]®bad,e#b¶`¹[£VGMÄD{:0¡'ÆU1 œV2µ×|éÛ‹¡ã7'³ )MÉ%„/È:ClK’Ty[|bjedge~dþbÇ`p\VÐPóL G‚B“=ê95‘2…0ù/k.š-t,û,õ-N-v-+,y+°+ +.+£,Ñ-Ô/20S2@4g7Ô;|?úD7HæM¹RÕX\äaçdÍg,ffeUa¹^7Y!TN(H Aþ;ü7.2Ä/Ò,Í*æ(Í'ÿ'‹(B)* *½+Z+Ï,É.*001ï43669¬=ÛCzI/NµS”WÃ\Ð`>cbËbF^Ü[ëUØNÝEb;ò2Y)c!>dx mŸü7˽èZƒÔiôàFöS‘]( 2›?ä?a>v=Ï=4=== <˜;õ;M;C;µ<¤=4=ã>l?ÅAtDAGJ”MÉQkUBYv]ÙaÆeÚgúi³h|gbñ^ÅYSUM0FþAv<8L4õ3c1Å1P0¨11»3/467T8…9ž:ð<`>P@B¹EÿJ=NqR„V0Y‚]”`_bÍbA`ð]5Z‡UpO€FÂ=z3Â+ #W,O { oÜÇ£ÿ¹TSo‘8…•- “A#,£6o?$FìOSV£^mbÂeQd£dÃcÐcQaa^°ZÌW S—PŽN;K¡IÛHkGÍGF¶F?EõEÉEŒED„CíCßD9DöEaEÝF)G4H™KM¼PäSÁVìZH]ôa×eÕ;¦8Í7¹6¦6´67N889Î;`=>¬@A7B…CüF#HMKUN´RlUÏXý\]_@b«cÚcüa,^ŒYùVO{GŒ=¡4+/"úô=<ÊÕ ¤WŒ!*äœs??_¢E<Ä …P¶7$­..7?GGN#V‘\ÙaÏcc÷c;c£c5b`_ú\ÿY³WU4SAQõP¯PO›O‰OtOKONmM¼MLnLKLoLñM>M¦MÖN¶OíR-T“WaYÜ\}_HbLeŽhOkllãk?iZeaaH\6WYRsMvI)DîB%?–>¤=Ì>>>ö?çA~C)DýFºH*I@JwKñN*PSnVJY[}]È`·b°dca§]DYÊT{NæFÍ=¸3ó+##…Þs® ôî õ"?K¨¬Ž–? :ŒK“ä6? DŸÕ %T.„7?_FvN”UÎ]a%cØcÙdxdkdødpc`±^h\yZçZ"YdY XÂX¯XÕXØX¢WÞVßUÑTíTšT€TÑTóUGUkVEW}Y[²]ü_ðaédfghûkmm•mìlVj—g'cŽ_(Z÷VÈRˆNÓK$HžF7EJD—EE5F/GGI JìLêN½P@Q€RÝT‡V£Xº[]S_šb cÚeÞeèecbB_YàUqN´FÏ=3‡*¯"¯ü¢Æ 9 YUØQsÎþÄv‹ŸQ cn¬zÌû! ç<%ª.ó7->~E¯L“T¨Zæ_éa¤bÙbÛd dÓe4d]cat`o`,``L`!``[`‰`Š_Í^®]R\2[¢[J[i[Y[”[´\…]µ_vab¯cüeAf´hWj1kªmmDmslUk0h½fb•_<[ÉXWU=R OÓMˆLŠKÚLRL’M¥NàP·R˜TyV)WŠXÐZ[‰]^s_èa–cDeVffhdEa¿]XY’SÿN0Eß^h^S^L]Û]p\G[XÕVS’PM¶J×H±F¦E¹D÷E0E F GnIÓLKOQÍT(V=X Z\^ _e`g`Ÿ`ù`Ö`±`_z^¡]Ù]\–[ÀZ¿XõWTuQªNKÁHÕFPBy>7x0L(Á!âD$˜ k[±ÄÃmÙB ªim¤ãëǧO?Jˆª’7ÿÀÿˆÿÃÿìÿÎÿž&Õÿ  ¨7&"n&N)j,0/À48Å<±?€A0C E_HbK¸NñQ1RøS¦TwTÁU UTþT˜TNS¼SGRPÀNlKõHíEéBù@=É;£:­9æ:9:J;€=?žBFEEH)J¿MO-Q„S»VW©XîYRYÇY¸YÀYRXÏWåWUâTøSyQªO"LŽIÔGXDéBÈ?Ï<‘7„1Ü+1$­Ü®W° Yh»„iÁbýï YRéwX‡»ßÏ­­_PEZt‘lÿûÿ—ÿˆÿÇ+ÿÖ Ç°³Q f ^öp¤ ê#'%L(,0W4.6ö9<:ó= ?XAîD-FG4HcHóI‹I|IHHžHGKF´ED A¶?E<^9|6¿41ø/ö/._.Ë/ 0b1ù479Ù<>âAC EfG¢IùK½M>MòN¨NØO+NòN¡M£L˜KI£G©EXB¸@6><…:Ç8ÿ5ˆ1D+}%£ 2„Ç? ¶·Tpϧy Ûon«_eœ¬©š·^WFEOocÿÀÿÿ‹ÿÖÿáÿÁÿÅ®þô}€ ¡ ®2çCÕÙé ‘$'°+H.›13\4ý6È899˜:º<=> >q>¤>$=®<Á< :™8ì6P3™0m-=*K'r%d#Y"o!¬" "M#¬%;'Ä*b-I02‹4ä739¶(ÿøÿ¦ÿÿ¥ÿï ÿ× œê;×+Þ ¹ E-|a–õ#±' )å+u,Ò-k..Æ/Á0æ22ç3„3]3+2P1£0 .f+¼(û%Ë"”ªäíô<| ÌfÓ!§$O&Ý)B+·.]1,4'6¨8ú:8;U;e;Ž:¿9Ù8 63Ñ1¢/Å. ,Ê+é*ª)1&7"˜³  ¸# k@Ž+$³j*ãâ"l†MèŠp„…xN<\“ºCGERXS>0 ÿÅÿ—ÿœÿÌÿûÿÔÿ±ÿ².ÒÊ¡›j¿g © 4øˆI!g– Ü"µ#W#É#î$p%4&&Ï'c'm'o&Ü&q%)#œ!&¦Ðxÿ*M\‘»Ê¿È¼ÖlÝ\·!@#þ&å)ø,n.¥/¤0ˆ0Q0./-ð,*D(b&©%D$"Ó!ÂóÉ‘ vD à Ê û°V  +óÇÛ^oQ¼Ž€cH1>i˜°7=@Yf^@+ ÿãÿÃÿ¬ÿ·ÿÕÿ÷ÿúÿÒÿÒÿðw0ývô`Dƒ ¢ : ,j¢Y\vö'hÏ+qrw#ñ ׿òÑÎû ¥ $ V ³ Ë Æ k  ˆ9CŒ¤ h"‚$N$ò%„%,$è#ó"Ü!i Ĩ’f(¸Ÿ ‘ Æ C–ØÅA6&þËœ´pw5úÈ»·™m7"-X|Ž“/BDHB9-,ÿ÷ÿÍÿ¨ÿ©ÿÅÿëÿþÿëÿÁÿ˜ÿ~ÿÿÛ2t£™ñê”*:ÕR C Å ÃÁ#4‘Ä/6öºJGI Ë F Á iFš9B)tÉ®§ ‰ A åÕæ$Šm ¯? uȾ̨(¯î N ” ¼‘]<ü×E Rz¡¤¨ÃúNpKûÓÅÈ¿“Y"*Vlnn#?C4%ÿÿÿÕÿ³ÿ±ÿÅÿãÿíÿéÿçÿâÿÝÿÛÿËÿä-¤¥m´…Ù#õ;:z:N„ p  ¢ ù [ i d  ¢  © D=*.Y¾”çÀ¦·ÑEŤ‡±Ì+ š C ¡¿Yt¶“c³Ó ‰ é :³Ge¿VÉýöø(ɃŒ“šra~ÊK_:ÖÙé㽇S.,5JSPN ):9&ÿõÿÍÿ·ÿÀÿßÿõÿùÿëÿÖÿÒÿÏÿµÿªÿ·ÿÚ ÿÆÿ—ÿ¨3ÿªðʼnw¯:¸5 ïG}¸°‘5åtþtàbù¸oAÿùÿôÿâÿÚÿÏÿënÔlö»¤Ý !Ä < [ ¬ ² « b4í°š÷n>äƒw!ÿö*NccJN‰ß"51 çÙìû뻈^B><DOOBÿÿ %:=2 ÿóÿÒÿËÿÝÿùÿôÿÙÿ×ÿãÿíÿñÿÚÿá_}c (Žö#Á|\\Š¥Ý!‚øMkM Øža&있mW>44;0-3Tw±Ý3—4ãœSà A9Õåîa&]”§ƒŒ.?nnUOPy½ùøîêðê¾–xe\KCNP8ÿûÿù $;F5ÿü ÿÿÿÜÿÎÿßÿþÿæÿËÿÐÿèÿëÿô ,QLÿäÿÁÿÈÿî ÿÉÿzÿ;ÿ&ÿ<ÿ?ÿZÿ}ÿ¾ R‚Œ’ˆ†ƒ~wkfqwoT.%4%ÿïÿâÿÙÿáÿâÿøIq¥î'CEe_@ãtÿžÿÿÁWP ÿÜÿ¤ÿ³ÿýWƒycF;NaÔ ôêëûóÐ©ŠƒfKB5ÿöÿù 'FI- &ÿúÿ×ÿÏÿê)ÿÿÿÇÿ¼ÿÛ #0IgjR( &!&9?Kbž®®©´ÀÆÅÅÄ¿ÃÕàܽpyŒ‚gPEAN]qŠŽx_bsy{†}Z5&2>\šr&ÿæÿÙÿí8šË¶m?27]z¦à #óçìóðÚ¸›˜“vM1ÿ÷ÿûÿúÿÿ3GH1"ÿàÿÓÿøÿ÷ÿÓÿÊÿÞ 1EF;CJO@ÿÿÿüKÌ×½Ž}‚ƒŽ›©­´ÆØëâÀš“—‰t^PHHKHG-ÿÿÿÐÿ¹ÿ¸ÿ°ÿ¬ÿªÿ¦ÿÿ•ÿÀ/FbRÿïÿßÿÿ"X˜®”^DB:Pt­îüøüýôåÜÒÆ¸´¡vD ÿù ÿþ,FD ÿüÿú.0ÿÙÿÛÿý!ÿþÿÕÿÆÿë4opG)&GgbA' ÿüÿùÿìZÄ-R<òȰœœ¡«©¨¬»×âÑ­˜Š{oaXTVXVO?, AnycR<@o}y‚rb_aNTy·óöêìýóÖÅ¿½µ©‰\1 ÿùÿù%0 +ÿëÿêÿåÿè]xcJMTJ6!!./)>Žù@Q$ྮ¦«ª¬®¶ÊÐ畆zlWIBGRYUID:-ÿûÿü @[X@73$+Lr~š£“ua_^z¦ÕñýôãÒÌó–yY6  )ÿñÿù ÿùÿþ  (/ÿòÿéÿü-@u–~^?,(#7P`_TH9W¢ö*02ùÛÆ¾·¸º»»²¢‡veN?6AWkoef]I/-/.:>.#0DCBK_n‡¸ÎºŠfdx§Óïñò74æÅ¹¼¾­ˆZ9( 0ÿöÿúÿÿÿòÿîÿö &;.ÿøÿù +679E\uŒyZK@+")=FPcoejÇó*+#ðÙż¸¶¯£•ˆwhZNJEPl€iZF- "4:9BC3*7LLO`|—«ÃÁ§‰}¡Ãäû*5嵘‘”‰k@  .ÿûÿøÿúÿû)/7.ÿý4Xg_MG_{ƒxp\;#'!.S~‘˜¦¸Èá"1"ðÓÁ¹·¯£–‰€we[]fej‚ŽƒaB& (268DLE>EQQ[y¼Â»¤‹š³¸ÀÕð Òœwg_XC)   *ÿýÿý   !%)0.#ÿý RxjRZnupk[?/7E83Ei„›²ÂÊÚý.%õÜÌÄÀµ¦–‹‡„umv‚~y†‰xW9%'4:71-2:99@NYk‡¡´¶®¤£­¼Ä¸´ÉìùÀfH7    %"  **#%&& 3d‚}c\\\[YQ?:NbXGDXq—¿ÜæêÿñáØÒ̳ž‘’—Œ‚ˆ‰†„sZH@8:@CA7+$%-06<Kbzš¤¯½Ã¿¯›™¬ÉãÙ±xT@-ÿÿÿòÿý""  Ï„» õ ñ-çp­jb˜š gAþ«ƒïÝI¯Cê1ЩD™x™s=É%¬ Ð!Q"M"`"2 hZ‚åd ( ¶ f ¿ á      " V ˜ ×   ç ¤ g j › þ I Å„—$°P ®7ŠáEe‚°äD¶7Ä Ä‘W+úæ|ÝË¥…šñEµ “   Ê Ä„yAÿÂW>jIØÂ¶7zçÂjiåü%Æš8%(Êõÿ `ã´´ÿ!þº4  +öD^L°G ð    U ° Ñ õ   # * = U } ± Ò ì Ç y â è  S c d g “ É H ä •-ž U•ËX°'•,Ù¥m#ÞR£²½ÙxêóÉï꩟µÐôï#‚B öCLí4>; â‚äy°¢=±ãT[Ä(ò%ý ÃÁˆt%1^í•ë0š#°<Ì-ÄŠ 86C>,   f &  n   Ô  " : M k Œ ° Ç Ý Ò À † 3 í Â Ô ÿ , 0   m + # õ e ² ’ c " ç  R þ^CFF#ì~ÿ‚äúî"!VnLb˜ìØt­æø±oÀÔ¦’R+‹°U Œê™ÁùèQ¨Ò0Ű^Vºa¼¹¢£ý]tY>H}×5W~öL·ùªV # í —–“  > w ² à  M s — › ™ s H  Ö · §  ì  ö Ú Ž ¼ f m Q Ç  ¾ P ±  ê    ³ c<!ï’!¬…}ï®=ˆç ÿdì‘péì{$ÿÉþ®ý ®ønHóBfb7¿è©AK(¢ šó¦¨!V ‘ÇžIìcbts7õ`Ñ×¶ R ô à ”øµØ " M x ° å  3 ] t ‚ w s T $ æ ¬ Œ v „ ž ¶ ¼ § ” m  ‹ e  É Ž 5 ¡  À É , a µ š E  ,ÄÁÖ‚ˆvÙR9RLA-a!z.ß‹uÛ9únr_ÏWQ,u±­˜Ñì?V?âøÈ!mÆ X^ºÛBDà !mß> Ö † r m V  ° R ÷ ´ ^ ë W ¿ :¹€c˜¶ÄØû & K g ƒ Œ ˆ € ‘ ” { N #    F m { j ` =ïØ  ‰ é 2 | ‡ z ; ô Ì × ý ý ÿ ; ˜ & — ž j;™E»Í–ó‹úK|ëà&OIˆ.…œgX¶ðT‘Oô¨–dõA…Äsü:KÀx Š ß ; ¾ f ÷ ¨ n N ' ö ´ w H 1 %  Ï„!¼s@2 =Qe’˜£Èèèáã ;•  Z | _ N "à¹ºæ  ' X w { n i w š ´ ­ ™ ˆ ¦ â @ ‡ Ù    # #TÞqÄ΀T£,âX°†6¦l—4ÀJeVq€7øåª\HºÈIpÔ‚gÂ5 L Œ ƒ þ ƒ - Ô Ÿ | Z Ð¥Š_B,7Tsnl$¶ ZÆR ïãÒÓ×àÝæü5U…³ÅßZ»Jú|ð§{H 7c”¯Íý 4 j ¥ ¶ Ú B n – ± î / Ä e i˜Ì͆4Êq&í›=ÈË|eg‡Ë=Iôg‚ o - B¥yMÉëda Z b s í X æ S êÿ ÉtÔq ùÜãàû)Y||‘PÚ\Ê^F7KPRRH4.9Zt˜Åìü8Šào'ÍFf„c4ßíNªu»  ) H X s … ’ ¢ Í 4 f › ð < Í Š k;ØG®=ýÁ—t/Ò?Êpñ©•±Ç©QÛ­V ² â  ¶ ´ ’ µäëñ¦A ‡ ç è œ B ¯b f¥¼EŸ”t¤'6Gsws‚‘œŽGÑ/“2ò&WqoiU>5:P_v“­·ÄØ1¯4~º¬P<i „¡Sdjl»âüÿ  O ¤ è 0  É  ? ‹ ó o Ü  U ­4ºg"â›/­ m  ì ø ç Î ¨ ‹ © ð & y < * ¡ A Ü _ 0 ¹ ¢ jqòÞ˜WÕÆÎÝ©L•Ó2ΰ`Ÿ¤nNêªr)Írøàù!FQ=# þ&'/Gj…¢¾ßö.‚ñ]ªìíÍ¢–¼á5†»_ã:ž$¦þ " B ^ † Å  ` v W e ´ 1 ×  = j ¿ $ Å8ª È J     + K _ < ™ Ó M ó  V › Ô ¢ 9ÌBñÀ_ÿ®vMø\¯y.ÝéìÍ™R¶m>  â·Ÿ²Åο¸Æî@j‰œ±Ôÿ(Ghn]MVvޝ¸øm ”é  B¾}]‚³®Äû T ¥ × Ð ¢ “ ¿ 7 À - d [ T S U š  œ å - Ê › { ‘ « Û  * 0 Ò 48åǽ²¤XçL¹Gè·‹g;ò 1¯Féͳƒ\FGQK&ôÖè—Œ‘›¤¦›|kR2ÿéÿÖÿØÿéÿóÿîÿÕÿÇÿÍÿù&i°ç'!úò<t¯ìõʘ‡¿€Ý&E–ó‘Éý%qÅ  C A !  ' ‘  S ^ o a @ 1 H ‚   ` #ôÕê  O y [ $žÿpó±‚iS>ð€à@½G!-<©#·oâ=h9ñן“€›ÅQšê-l‡—†|aBüÚ°ymZD( (XƒšŽˆ^Ü¥Ÿªä!eºÈ›,½ƒp¸yžÌ ²žªˆ¼ aÎ0’«xT t Á  ô ¶ ‚ l sŸ^Pg˜¼Ó’1†Ö4¸eø²Œ‚BÊ)›G4—ü‡‰ÊG¶Âˆòeÿÿÿ´ÿÂÿÚ1‚ùxýyàD–ï0l‡£’r[3üÁ–tM) è·u*õß׺‹f&ÑlÿÅÿ’ÿŸÿ¯ÿôSžÂ•ZÿÿvÿwÿÔ5´ƒð|É} r¹s-¯¬ŠÄHß K „ _ 5êŸvîáÓÑØêàÓ{ Y£íEÎW+6L'¾@êÝó"áJãào'¾ É\×v„´Oé¥NôŸ;ÎMÂDã Œ 4 ª  - F &  È h î *Þ­’Xþa²rûoð À^ðƒÃufnŸÍäù¾HÿÃÿRÿ\ÿªKà6=1RÐ|<Ð*Vªt8‡¡æWøl–iM#÷é íÌZö€Ú0ÇT3QN¾yr…~TÕ”ÈOÁCLuåg+öË—<Ì ? ¹ = ¼ f  J¦øä©ä÷âlÕ,ü¸”C ½ Ç ¾ “ ŠŽy‰¢§yK›úJ™îDS‡¨”#ÿ†ÿ þºÿ ÿ»xϿςYQ} ²1€µù~Zo}fICnÅÑÔºw3ß™Aàeã`Ë„y¸îëIJÜ5Š›”Œâr`Y%£óD  – ü =k=ÿsÝ9Ÿ9ÑÉËJÏ´¥Ñü¥eµæÈ˜£î¡w!ŠqJã‘3¿ o  I § y Y ' Ô 0ó fE­OD/Ù?lÿwÿÿS©äÁr=’^G·ÜdÜBmˆÇ*ŸEV[aŽ&1ÑŒ<ô¬dÁn åö',íû@ÕYôh(uß # $ Ø z M JÄp-»åÀmÿ›mN°-²!p#L%&º'¸(‡(t(O'œ'&%"#í"‘! ¼ { _ ’|^é~éJ± Æ¥qÀ&v # – ¥¸‚™ÚVåðÿöÿ;ÿ5ÿ~‹2Z¶=M¦ SmbrÁ=­û(=h\fyh=òÎ¥uI ü *F8Ifü»ÞÍ“ ¹ éòd`yò™oA¿ êÐ ‹!6" "ý$O%¬'L(è*Ÿ,\./³12w3/3Á3t321G07/..,¡+‹*À**d*5)Å(Û'ï&«%f#ò"‚!u¨nŸgÉŽæ¢ u EC3–(3Í#ÿkÿÉYÓ¥<[éƒÆÑóg†W&.‰þxÌñ ËÕîãÍÅÈÛÙ®zUfžàêõûn4Où– ý ÎëÇ%^ÄYó!Ä#u%(&'Ö(Ü)í*ð+å-.L/Â1+2•3ó5T6É8;9°:íL?M@pAÍC9DŸFGG±GGuFÅFDûCçB“A?Ã>ª>=¼=x<þ<<;v:|9w8s7…6¹5ö5>4¦3°2l0µ/-Z+´*(}&²$ö"{Ì%%- ^ ! ’ž—5B1bÇ™HRñjQÝ ‰Š’`Y–È¿þ÷ÿÿUÿjÿÿ³ÿê#ÿõÿø9Ûè—»Iw j ÏQýA"&$ô'5*,ê/Õ23485µ7B8Þ:Ã< >T?±ABBýCµDˆEdF7G(H IMJ¸LˆNeP@R-SvT|TšTÂT0SRkQWOôNgLøK¸JûJvJIaHgGiF*DÖC†BLAU@d?¼?F>°=â<–;U9“7²5t3L0ý.Ù,F)š&"Uá)Ðñ" | MÂ{±j|tÿÆ*·ã¡8ÿâÿã JªçèÿtÿœÿÎÿãÿú.^frlë°q.Á û œ­D7`] Æ%4)H,n/14Õ8;= >¡?ØAcCUE”G¿I JèL7LñM~MÈN*NÈOwPŽQS.TæWY[(]<^¢_Ó``U_Ì_/^][ËZRXêW©VàVSUÜU.T'S Q¼P4N—MK×JšIÃIH¡HG^FÀEtCæA{>þCWEúG±I2JšLbN‘PðSTåVWRXX{XÅY0YðZÌ\],^§`AbcÞe‡g:hZiZi†i¥i h]gPfpeWdbµa‰`Ø`c`_²_^[]C[ðZcXýWºV}UlT^SvR‚Q¿QLP‘O§M·KHoE˜B8>®:Ê763+.í)à$oÒÑ‚ 3Ìc^"õPÅ ÿÁÿìA*ÿçÿ³ÿ°ÿãÿè1UòÑ™eNHjE½~R. î š ¡ÃÜ $ (U-!26Õ:ë>ÇAýEJHp¸q+qTq}qXq.p»p6o™o(nŸmçmlSkÑkokck`knkk@jÃji‰ih…g¿fÍeŠd3cba{`þ`_][.X+TÅP`LG‡CI>À:%4¸.¨(«#NîËÑ( ¿ l •¦ÿÿ÷ÿ°ÿÁ ÿãÿ°ÿÁÿïÿÿ#> ¤ : w ¿ $ j g ~ ñ —¢¦½ó ¹%D*/409}>•CuGÛLYP^T‹WÂZŒ\p^–`@aîccÙdue@fTg§híiçj˜khllŠlõmvn n¡o;oÍpQp×qKqÇrrPrQrRr3r$qðq£q?püp¡p+o’nïngmïmÅm¼mÑm×m§mLlÞllil;kÌk:jSiehbgpf˜eÜedDc aú_Ü]kY¬UÙQGLÍH!CÌ>ô9š3Ã-ö(¢#ÅV¬ìž KÊÒÃZ‡~/ÿÿÿáÿÏÿßÿø(9½Rhx¥·ÆõÚFÝ ’%G*]/4/9¨?VDûIöN‚RpVÍZ”^I`¹b¥cÅegf´gßhphºhüi’j™kÅläm¹nIoo…oÕppQp»q3q¯rrwrÊss}sÍttt3t=t]tUt(sÚs¬shsr”rqvp÷pËpÕpõpép p;oÕo¢oo[nùnem­ml“l'k·k3jŽji2hŠge1b$_[VÃRM™HØCø>„8Ú3-X( # Hë ì †ŸÄ>’j;ÿóÿóÿÉÿÃÿÞ '8ÓìÝî=¹Á¸"G&3+&/Õ4Å9>¨DXIþOTS´WÇ[2_0bJdùf:g.gšh¦igiÄiœiQiWiËjÑkØlÙmn9oošoòp-p‘qq½rUrÐs$sns½t/t¤uuKuuÁvvvuÀuœuYut„súszsrÓrÝrßr£rqlpÄpRoîo|nØmúm:l®lœl»làl¿lWl k…k(j)hòfÎdÍaÁ^rZ;VQŽMBHˆC²>%892C,é'¶" qn€ ` Cà§•¶‚ ÿæÿÚ2M'Š'n&Š%\$M#m#Å$H&e(~,F0…5¤:9? CùIUOToYI]`õdgŽiÇkdk¦kükòlWlUkÓkjUj9jlk3kæl¶mdn!o oäpƒqqÜr·stLtÒuuLuu÷vivÅww6waw¨wÔwäwÈwÀw‰w7vÀvRuìu€uCuCu+tÚt&s]r€qÕq'pgoxnUmal•loll÷mmm/m(mAlÜlFjîi·gžefb'^ÌZºVÑRgN%HôC3<æ71B+¢%¸ìz X@÷ö\ÕÿÙÿ¬ÿ×ÿÿ8l1Ø1æ1/í.è.-.›/13D7;+?ïDHƒM^R}W¤\`0ckf÷i²lqm»n~n)n/mÓml½k‹jDi@hÚhhÙii¶jEk7lMm¢n×p#qrêt>u#ußv-vzv±wwew­wÑwâwñxxPxxx‚x–xox"w·wnw'vÌvsvDuèuft€srfqpŽoƒnNl÷kÏj¸jRj3j–jÆkkƒkøl„l²l·lkyj9igdåa³^gZoVÖR\MyG•Až;5ì0)ˆ"ãm  - çЮ=±" Uˆ<<-;S:;9N8´979¦;§>AÒE°IõM·QÀV\[_]bùfpiDlmnªp¬qFqŸqpÜpo)m§lj]hègòfûfªfkfÝg7¾07(Ý"LÈ  lSâ¹OŒOêOSN¼N:MÙNVNçPµRÛUÃXW[)^a-dQgiWk8m}oApÎqvr"qçq§p‚oAmZksiZgqejc `ï^ó]ù]5]‰]Á^ò`4bgd½gjblöo`q)råtu+uÕv{vÏw.wWwrwywwªwÑwíx wñw°wEwvŸv=u_t\rÁq!o"lÿkidhf eadcTb±bÚc>cûdHdæeÌgMhåj¦lmm°nªn÷o[oPoanßn\lïkbhÖf}bæ_ YÚTŸN¡IB…;3@,%±Y¨”¸ @Œ¯bÊWQWûWÉWšWWWW„X2YÈ[s]‘_qaŸd!f›hÕj‹l(mtop p´popuo´nÅlæjÜhnf4db _è]IZúXôXWXW©WßXæYà[Ä]Ô`«cŸf iek¼noúqús‚tùuàv¿w+w’w¿wüx#xUx^xix"wÆwveujt‰sqjolÄjgSdÐb›`ø_4]ø\¾\B[Ã\;]^__:`Qa’cfe_gŸiðkÍman9ooyoêoæoùoMnƒl»kh/ega?\¼W7R>LAE•>(6ý0))›#gµÒ= P «bÖQì^_—_é`2`<`.`•acb·cÞe*f\gÜiÁk‡lßm¾n¾o†p•pÝp¦oŠnÌmFkohÒf-cr`ì^¡\pZ)W`USR9Q’QÓQëR©SBTÚV¹Y¬\Ä`,cMf=i;k÷n¿pýs"tŽuív°wmwÍx>x~xÊx×xßx‰xk•i!f`c'`](ZCW´UPSP`N4LaK§KK+KKwK¹MNÎQÇTÖXa[¤_bfiŠl‡ojq’sµuvwKxx|xêxõxüx“xUwKvs¿qœn€kgc_[3X UeSnQO†N8MâMXMÜN²PpRTUûXiZê]äa d+g&iŠkÐmuo.pOqnqÜrdqòq6o›nol4i“e¡aÔ\òX RKÓDû>w7…0,(Æ!f4¹ ÒŠg¦ij5k k“kêl=lêm…m·mçnro*oÚp?pjpWpˆprp|ommåk%hŠe>aÒ^4ZÊW„T Q NiL8IœG‹E¿DçD,D C¨CØCöEWGJ3MEPÞT3WÜ[Ä_Ùcâgk+nqs2uHvƒw±x*x°x©x¦xwÅvbt™q‘n¸jÝfÅb]8X©TPÄNLVJ1H»GxG FlFÆGdHûJwLNºQyTOW¡Zó^iaëe$hDjÊmSopÔqÒssFrúq¹pío_m´jÏg½cŠ_‘Z{U'NÃHAw:2=*9"ÖÎX ÃißkNl|mwmýnwnÈoKo£o§o¿pKpãq7q-q%pÙp²poœmÝk—gýdy`|\—XµTèQe=›=c<â<û= >_@CEåIKLgPTX·]NaÊf-iÿmÕpÌs¿uˆw'w±xExxwKvÑurÌokŸgb\\ôW|RJLÿI@FBDÇBåAË@Ä@r?ö@F@ÇB!CaEWGHJLúPlS¢W Z™^Gbeshæk’no£q§r„rØqúqWpo m j±gOd.`[ùVšQ(JpC¡;Ù3Í+É$ Yžu Ek»m*nxoŒp5pàqEq»qèqÕqÕrVrÄrÇrfr;qÁqPp&o%lžitdê`Š[ãWoSN©JFBÀ@*>ˆ<]:—8á7ï7676¢6©67”8û;£>FA’DzHILˆQÓW=\»aýf—k5nÞr˜têvôwx/wåwÆvèvUtCq¡mNi8cê^SXQÞLEÿAª> í;ï9®8s6š53£2ö2—2·2”22E2Æ3«5Ä7â:É=6@ìE6KQ2W›]§chslÞqitHvÁwoxw©wuv{uÒsžpÝlDgßb[ÔTÜNGˆ@ã;ð7Œ5e3:2Ä2o3 3a4:536ž7ú9–:è<ø?˜BçEÞILO¼SÙX¼]ábŒf™i¢moeqyqírq/p¯o¢nyl±jñh¬fÊc©`Z«U`N^Fø>‡6#.%÷tm¢nßpqqØr s(sŸsèt5tytøutËts«rˆqnLk«gFb([ôV.P–KEù@”<7©5 32H0Ì/§.”.D.T.¶.È.œ...0 1‰3í5Ó9y=ãD^KR1Xô_1e•jïp`sÅv¨wUw÷wRvíuÂtúr«oÑjýfV`YHQ›IûBÈ;‡61%.+ô+]++é,’-È/0‰2 3ˆ4”628f;x>eAœDwHKþQ%VÖ\{aweeiŠlorp¶qqpâp oƒnpm0kžj©h¥fa›]7VÜP"Gñ?®7S.ð(!Cn_oqp…qkrrÇsJs¼tt®uu‹u`tûsås4qho=kƒgübË\ëV